[cvc4] 01/03: New upstream version 1.5~pre-20170316

Fabian Wolff fw-guest at moszumanska.debian.org
Mon Mar 27 16:28:30 UTC 2017


This is an automated email from the git hooks/post-receive script.

fw-guest pushed a commit to branch master
in repository cvc4.

commit 9f1db7ed1fe841247104559d672fabf6f92d3213
Author: Fabian Wolff <fabi.wolff at arcor.de>
Date:   Thu Mar 16 17:15:01 2017 +0100

    New upstream version 1.5~pre-20170316
---
 AUTHORS                                            |     49 +
 COPYING                                            |    311 +
 INSTALL                                            |    251 +
 Makefile                                           |    172 +
 Makefile.am                                        |    175 +
 Makefile.builds.in                                 |    143 +
 Makefile.in                                        |   1430 +
 Makefile.subdir                                    |     58 +
 NEWS                                               |    118 +
 README                                             |    103 +
 RELEASE-NOTES                                      |    161 +
 THANKS                                             |     18 +
 aclocal.m4                                         |   1441 +
 config/abc.m4                                      |    136 +
 config/antlr.m4                                    |    144 +
 config/ax_prog_doxygen.m4                          |    323 +
 config/ax_tls.m4                                   |     76 +
 config/bindings.m4                                 |    231 +
 config/boost.m4                                    |   1196 +
 config/build-type                                  |     68 +
 config/compile                                     |    347 +
 config/config.guess                                |   1441 +
 config/config.sub                                  |   1813 +
 config/cryptominisat.m4                            |     87 +
 config/cvc4.m4                                     |    180 +
 config/depcomp                                     |    791 +
 config/doxygen.am                                  |    188 +
 config/doxygen.cfg                                 |   1523 +
 config/gcc_version.m4                              |      7 +
 config/glpk.m4                                     |    157 +
 config/install-sh                                  |    508 +
 config/is_sorted.m4                                |     20 +
 config/libtool.m4                                  |   8388 +
 config/ltmain.sh                                   |  11156 ++
 config/ltoptions.m4                                |    437 +
 config/ltsugar.m4                                  |    124 +
 config/ltversion.m4                                |     23 +
 config/lt~obsolete.m4                              |     99 +
 config/missing                                     |    215 +
 config/mkbuilddir                                  |     45 +
 config/pkg.m4                                      |    157 +
 config/readline.m4                                 |    115 +
 config/test-driver                                 |    148 +
 configure                                          |  31893 ++++
 configure.ac                                       |   1515 +
 contrib/Makefile.am                                |     29 +
 contrib/Makefile.in                                |    613 +
 contrib/README                                     |      4 +
 contrib/addsourcedir                               |     94 +
 contrib/configure-in-place                         |     30 +
 contrib/cvc-devel.el                               |    218 +
 contrib/cvc-mode.el                                |    715 +
 contrib/depgraph                                   |    133 +
 contrib/dimacs_to_smt.pl                           |     37 +
 contrib/editing-with-emacs                         |     18 +
 contrib/get-antlr-3.4                              |    122 +
 contrib/luby.c                                     |     69 +
 contrib/mac-build                                  |     56 +
 contrib/new-theory                                 |    199 +
 contrib/run-script-cascj7-fnt                      |     36 +
 contrib/run-script-cascj7-fof                      |     38 +
 contrib/run-script-cascj7-tff                      |     38 +
 contrib/run-script-smtcomp2014                     |     96 +
 contrib/switch-config                              |     96 +
 contrib/theoryskel/README.WHATS-NEXT               |     45 +
 contrib/theoryskel/kinds                           |     21 +
 contrib/theoryskel/theory_DIR.cpp                  |     46 +
 contrib/theoryskel/theory_DIR.h                    |     34 +
 contrib/theoryskel/theory_DIR_rewriter.h           |     86 +
 contrib/theoryskel/theory_DIR_type_rules.h         |     35 +
 contrib/win-build                                  |    105 +
 cvc4autoconfig.h.in                                |    147 +
 doc/SmtEngine.3cvc                                 |   1295 +
 doc/SmtEngine.3cvc_template.in                     |     55 +
 doc/cvc4.1                                         |    996 +
 doc/cvc4.1_template.in                             |    132 +
 doc/cvc4.5.in                                      |     21 +
 doc/find_public_interface.sh                       |     20 +
 doc/libcvc4.3                                      |     65 +
 doc/libcvc4.3_template.in                          |     65 +
 doc/libcvc4compat.3.in                             |     15 +
 doc/libcvc4parser.3.in                             |     15 +
 doc/options.3cvc                                   |   2119 +
 doc/options.3cvc_template.in                       |     43 +
 examples/Makefile.am                               |     95 +
 examples/Makefile.in                               |   1063 +
 examples/README                                    |     34 +
 examples/SimpleVC.java                             |     70 +
 examples/SimpleVC.ml                               |     91 +
 examples/SimpleVC.php                              |     56 +
 examples/SimpleVC.pl                               |     56 +
 examples/SimpleVC.py                               |     64 +
 examples/SimpleVC.rb                               |     57 +
 examples/SimpleVC.tcl                              |     54 +
 examples/SimpleVCCompat.java                       |     68 +
 examples/api/Makefile.am                           |     70 +
 examples/api/Makefile.in                           |   1060 +
 examples/api/bitvectors.cpp                        |    111 +
 examples/api/bitvectors_and_arrays.cpp             |     95 +
 examples/api/combination.cpp                       |    104 +
 examples/api/datatypes.cpp                         |    103 +
 examples/api/extract.cpp                           |     56 +
 examples/api/helloworld.cpp                        |     32 +
 examples/api/java/BitVectors.java                  |    108 +
 examples/api/java/BitVectorsAndArrays.java         |     97 +
 examples/api/java/CVC4Streams.java                 |     58 +
 examples/api/java/Combination.java                 |     99 +
 examples/api/java/Datatypes.java                   |    103 +
 examples/api/java/HelloWorld.java                  |     29 +
 examples/api/java/LinearArith.java                 |     81 +
 examples/api/java/Makefile.am                      |     39 +
 examples/api/java/Makefile.in                      |    675 +
 examples/api/java/PipedInput.java                  |     68 +
 examples/api/java/Strings.java                     |     91 +
 examples/api/linear_arith.cpp                      |     84 +
 examples/api/sets.cpp                              |     96 +
 examples/api/strings.cpp                           |    102 +
 examples/hashsmt/Makefile.am                       |     36 +
 examples/hashsmt/Makefile.in                       |    848 +
 examples/hashsmt/sha1.hpp                          |    226 +
 examples/hashsmt/sha1_collision.cpp                |    107 +
 examples/hashsmt/sha1_inversion.cpp                |    106 +
 examples/hashsmt/word.cpp                          |    174 +
 examples/hashsmt/word.h                            |    127 +
 examples/nra-translate/Makefile.am                 |     61 +
 examples/nra-translate/Makefile.in                 |    914 +
 examples/nra-translate/normalize.cpp               |     89 +
 examples/nra-translate/smt2info.cpp                |    135 +
 examples/nra-translate/smt2todreal.cpp             |     83 +
 examples/nra-translate/smt2toisat.cpp              |    312 +
 examples/nra-translate/smt2tomathematica.cpp       |    326 +
 examples/nra-translate/smt2toqepcad.cpp            |    355 +
 examples/nra-translate/smt2toredlog.cpp            |    328 +
 examples/sets-translate/Makefile.am                |     29 +
 examples/sets-translate/Makefile.in                |    845 +
 examples/sets-translate/sets_translate.cpp         |    376 +
 examples/simple_vc_compat_c.c                      |     59 +
 examples/simple_vc_compat_cxx.cpp                  |     62 +
 examples/simple_vc_cxx.cpp                         |     59 +
 examples/translator.cpp                            |    291 +
 library_versions                                   |     61 +
 proofs/lfsc_checker/AUTHORS                        |      5 +
 proofs/lfsc_checker/COPYING                        |     17 +
 proofs/lfsc_checker/INSTALL                        |    370 +
 proofs/lfsc_checker/Makefile.am                    |     30 +
 proofs/lfsc_checker/Makefile.in                    |    910 +
 proofs/lfsc_checker/NEWS                           |      9 +
 proofs/lfsc_checker/README                         |     83 +
 proofs/lfsc_checker/aclocal.m4                     |   1193 +
 proofs/lfsc_checker/check.cpp                      |   1383 +
 proofs/lfsc_checker/check.h                        |    167 +
 proofs/lfsc_checker/chunking_memory_management.h   |    157 +
 proofs/lfsc_checker/code.cpp                       |   1385 +
 proofs/lfsc_checker/code.h                         |     15 +
 proofs/lfsc_checker/config.h.in                    |     83 +
 proofs/lfsc_checker/config/compile                 |    347 +
 proofs/lfsc_checker/config/config.guess            |   1441 +
 proofs/lfsc_checker/config/config.sub              |   1813 +
 proofs/lfsc_checker/config/depcomp                 |    791 +
 proofs/lfsc_checker/config/install-sh              |    508 +
 proofs/lfsc_checker/config/libtool.m4              |   8388 +
 proofs/lfsc_checker/config/ltmain.sh               |  11156 ++
 proofs/lfsc_checker/config/ltoptions.m4            |    437 +
 proofs/lfsc_checker/config/ltsugar.m4              |    124 +
 proofs/lfsc_checker/config/ltversion.m4            |     23 +
 proofs/lfsc_checker/config/lt~obsolete.m4          |     99 +
 proofs/lfsc_checker/config/missing                 |    215 +
 proofs/lfsc_checker/configure                      |  19697 +++
 proofs/lfsc_checker/configure.ac                   |     47 +
 proofs/lfsc_checker/expr.cpp                       |    986 +
 proofs/lfsc_checker/expr.h                         |    426 +
 proofs/lfsc_checker/libwriter.cpp                  |    238 +
 proofs/lfsc_checker/libwriter.h                    |     28 +
 proofs/lfsc_checker/main.cpp                       |    140 +
 proofs/lfsc_checker/position.h                     |     30 +
 proofs/lfsc_checker/print_smt2.cpp                 |    122 +
 proofs/lfsc_checker/print_smt2.h                   |     17 +
 proofs/lfsc_checker/scccode.cpp                    |     11 +
 proofs/lfsc_checker/scccode.h                      |     11 +
 proofs/lfsc_checker/sccwriter.cpp                  |    977 +
 proofs/lfsc_checker/sccwriter.h                    |     86 +
 proofs/lfsc_checker/trie.cpp                       |     24 +
 proofs/lfsc_checker/trie.h                         |    123 +
 proofs/signatures/Makefile.am                      |     38 +
 proofs/signatures/Makefile.in                      |    830 +
 proofs/signatures/ex-mem.plf                       |     62 +
 proofs/signatures/example-arrays.plf               |    139 +
 proofs/signatures/example-quant.plf                |     95 +
 proofs/signatures/example.plf                      |    116 +
 proofs/signatures/sat.plf                          |    127 +
 proofs/signatures/signatures.cpp                   |   1704 +
 proofs/signatures/smt.plf                          |    449 +
 proofs/signatures/th_arrays.plf                    |     65 +
 proofs/signatures/th_base.plf                      |     96 +
 proofs/signatures/th_bv.plf                        |    192 +
 proofs/signatures/th_bv_bitblast.plf               |    694 +
 proofs/signatures/th_bv_rewrites.plf               |     22 +
 proofs/signatures/th_int.plf                       |     25 +
 proofs/signatures/th_quant.plf                     |     79 +
 proofs/signatures/th_real.plf                      |     25 +
 src/Makefile.am                                    |    701 +
 src/Makefile.in                                    |   2584 +
 src/Makefile.theories                              |      3 +
 src/base/Makefile.am                               |     85 +
 src/base/Makefile.in                               |    841 +
 src/base/configuration.cpp                         |    297 +
 src/base/configuration.h                           |    137 +
 src/base/configuration.i                           |      7 +
 src/base/configuration_private.h                   |    170 +
 src/base/cvc4_assert.cpp                           |    171 +
 src/base/cvc4_assert.h                             |    321 +
 src/base/exception.cpp                             |    184 +
 src/base/exception.h                               |    168 +
 src/base/exception.i                               |     11 +
 src/base/listener.cpp                              |     99 +
 src/base/listener.h                                |    165 +
 src/base/mktagheaders                              |     24 +
 src/base/mktags                                    |     35 +
 src/base/modal_exception.h                         |     47 +
 src/base/modal_exception.i                         |      7 +
 src/base/output.cpp                                |    194 +
 src/base/output.h                                  |    600 +
 src/base/ptr_closer.h                              |     73 +
 src/base/tls.h.in                                  |    198 +
 src/bindings/Makefile.am                           |    235 +
 src/bindings/Makefile.in                           |   1825 +
 src/bindings/compat/Makefile.am                    |      9 +
 src/bindings/compat/Makefile.in                    |    769 +
 src/bindings/compat/c/Makefile.am                  |     36 +
 src/bindings/compat/c/Makefile.in                  |    846 +
 src/bindings/compat/c/c_interface.cpp              |   2881 +
 src/bindings/compat/c/c_interface.h                |    702 +
 src/bindings/compat/c/c_interface_defs.h           |     53 +
 src/bindings/compat/java/Cvc3_manifest             |      2 +
 src/bindings/compat/java/Makefile.am               |    154 +
 src/bindings/compat/java/Makefile.in               |   1019 +
 src/bindings/compat/java/create_impl.py            |    424 +
 src/bindings/compat/java/formula_value.h           |     39 +
 src/bindings/compat/java/include/cvc3/JniUtils.h   |    292 +
 src/bindings/compat/java/src/cvc3/CLException.java |     13 +
 src/bindings/compat/java/src/cvc3/Context.java     |     17 +
 src/bindings/compat/java/src/cvc3/ContextMut.java  |     18 +
 src/bindings/compat/java/src/cvc3/Cvc3.java        |    222 +
 .../compat/java/src/cvc3/Cvc3Exception.java        |     12 +
 .../compat/java/src/cvc3/DebugException.java       |     13 +
 src/bindings/compat/java/src/cvc3/Embedded.java    |    114 +
 .../compat/java/src/cvc3/EmbeddedManager.java      |     78 +
 .../compat/java/src/cvc3/EmbeddedManager_impl.cpp  |      3 +
 .../compat/java/src/cvc3/EvalException.java        |     13 +
 src/bindings/compat/java/src/cvc3/Expr.java        |    573 +
 src/bindings/compat/java/src/cvc3/ExprManager.java |     26 +
 .../compat/java/src/cvc3/ExprManagerMut.java       |     16 +
 .../compat/java/src/cvc3/ExprManager_impl.cpp      |      7 +
 src/bindings/compat/java/src/cvc3/ExprMut.java     |     18 +
 src/bindings/compat/java/src/cvc3/ExprMut_impl.cpp |      0
 src/bindings/compat/java/src/cvc3/Expr_impl.cpp    |    329 +
 src/bindings/compat/java/src/cvc3/Flag.java        |     63 +
 src/bindings/compat/java/src/cvc3/Flags.java       |     32 +
 src/bindings/compat/java/src/cvc3/FlagsMut.java    |     39 +
 .../compat/java/src/cvc3/FormulaValue.java         |     36 +
 .../compat/java/src/cvc3/InputLanguage.java        |     36 +
 src/bindings/compat/java/src/cvc3/JniUtils.cpp     |    194 +
 src/bindings/compat/java/src/cvc3/JniUtils.java    |    227 +
 src/bindings/compat/java/src/cvc3/Op.java          |     66 +
 src/bindings/compat/java/src/cvc3/OpMut.java       |     18 +
 .../compat/java/src/cvc3/ParserException.java      |     13 +
 src/bindings/compat/java/src/cvc3/Proof.java       |     17 +
 src/bindings/compat/java/src/cvc3/ProofMut.java    |     18 +
 src/bindings/compat/java/src/cvc3/QueryResult.java |     51 +
 src/bindings/compat/java/src/cvc3/Rational.java    |    218 +
 src/bindings/compat/java/src/cvc3/RationalMut.java |     18 +
 src/bindings/compat/java/src/cvc3/SatResult.java   |     46 +
 .../compat/java/src/cvc3/SmtlibException.java      |     13 +
 .../compat/java/src/cvc3/SoundException.java       |     13 +
 src/bindings/compat/java/src/cvc3/Statistics.java  |     17 +
 .../compat/java/src/cvc3/StatisticsMut.java        |     18 +
 src/bindings/compat/java/src/cvc3/Test.java        |   2082 +
 src/bindings/compat/java/src/cvc3/Theorem.java     |     17 +
 src/bindings/compat/java/src/cvc3/TheoremMut.java  |     18 +
 .../compat/java/src/cvc3/TimeoutHandler.java       |     11 +
 src/bindings/compat/java/src/cvc3/Type.java        |    135 +
 src/bindings/compat/java/src/cvc3/TypeMut.java     |     18 +
 .../compat/java/src/cvc3/TypecheckException.java   |     13 +
 .../compat/java/src/cvc3/ValidityChecker.java      |   1736 +
 .../compat/java/src/cvc3/ValidityChecker_impl.cpp  |    861 +
 src/bindings/java_iterator_adapter.h               |     59 +
 src/bindings/java_stream_adapters.h                |    108 +
 src/bindings/swig.h                                |     40 +
 src/compat/Makefile.am                             |     44 +
 src/compat/Makefile.in                             |    861 +
 src/compat/cvc3_compat.cpp                         |   2661 +
 src/compat/cvc3_compat.h                           |   1562 +
 src/context/backtrackable.h                        |    222 +
 src/context/cdchunk_list.h                         |    495 +
 src/context/cddense_set.h                          |    101 +
 src/context/cdhashmap.h                            |    579 +
 src/context/cdhashmap_forward.h                    |     44 +
 src/context/cdhashset.h                            |    161 +
 src/context/cdhashset_forward.h                    |     44 +
 src/context/cdinsert_hashmap.h                     |    404 +
 src/context/cdinsert_hashmap_forward.h             |     38 +
 src/context/cdlist.h                               |    440 +
 src/context/cdlist_forward.h                       |     60 +
 src/context/cdmaybe.h                              |     78 +
 src/context/cdo.h                                  |    181 +
 src/context/cdqueue.h                              |    167 +
 src/context/cdtrail_hashmap.h                      |    570 +
 src/context/cdtrail_hashmap_forward.h              |     38 +
 src/context/cdtrail_queue.h                        |     95 +
 src/context/cdvector.h                             |    162 +
 src/context/context.cpp                            |    359 +
 src/context/context.h                              |    751 +
 src/context/context_mm.cpp                         |    132 +
 src/context/context_mm.h                           |    201 +
 src/context/stacking_vector.h                      |    114 +
 src/cvc4.i                                         |    364 +
 src/decision/decision_attributes.h                 |     36 +
 src/decision/decision_engine.cpp                   |    128 +
 src/decision/decision_engine.h                     |    232 +
 src/decision/decision_strategy.h                   |     79 +
 src/decision/justification_heuristic.cpp           |    718 +
 src/decision/justification_heuristic.h             |    183 +
 src/expr/Makefile.am                               |    195 +
 src/expr/Makefile.in                               |    976 +
 src/expr/array.h                                   |     26 +
 src/expr/array.i                                   |      5 +
 src/expr/array_store_all.cpp                       |     99 +
 src/expr/array_store_all.h                         |     81 +
 src/expr/array_store_all.i                         |     17 +
 src/expr/ascription_type.h                         |     63 +
 src/expr/ascription_type.i                         |     12 +
 src/expr/attribute.cpp                             |    152 +
 src/expr/attribute.h                               |    796 +
 src/expr/attribute_internals.h                     |    910 +
 src/expr/attribute_unique_id.h                     |     69 +
 src/expr/chain.h                                   |     51 +
 src/expr/chain.i                                   |     12 +
 src/expr/convenience_node_builders.h               |    399 +
 src/expr/datatype.cpp                              |   1182 +
 src/expr/datatype.h                                |    990 +
 src/expr/datatype.i                                |    189 +
 src/expr/emptyset.cpp                              |     86 +
 src/expr/emptyset.h                                |     68 +
 src/expr/emptyset.i                                |     17 +
 src/expr/expr.i                                    |    171 +
 src/expr/expr_iomanip.cpp                          |    160 +
 src/expr/expr_iomanip.h                            |    239 +
 src/expr/expr_manager.i                            |     98 +
 src/expr/expr_manager_scope.h                      |     69 +
 src/expr/expr_manager_template.cpp                 |   1098 +
 src/expr/expr_manager_template.h                   |    577 +
 src/expr/expr_stream.h                             |     45 +
 src/expr/expr_stream.i                             |      5 +
 src/expr/expr_template.cpp                         |    595 +
 src/expr/expr_template.h                           |    564 +
 src/expr/kind.i                                    |     16 +
 src/expr/kind_map.h                                |    274 +
 src/expr/kind_template.h                           |    177 +
 src/expr/matcher.h                                 |    119 +
 src/expr/metakind_template.h                       |    359 +
 src/expr/mkexpr                                    |    313 +
 src/expr/mkkind                                    |    419 +
 src/expr/mkmetakind                                |    435 +
 src/expr/node.cpp                                  |    128 +
 src/expr/node.h                                    |   1552 +
 src/expr/node_builder.h                            |   1353 +
 src/expr/node_manager.cpp                          |    824 +
 src/expr/node_manager.h                            |   1571 +
 src/expr/node_manager_attributes.h                 |     42 +
 src/expr/node_manager_listeners.cpp                |     44 +
 src/expr/node_manager_listeners.h                  |     63 +
 src/expr/node_self_iterator.h                      |    128 +
 src/expr/node_value.cpp                            |     82 +
 src/expr/node_value.h                              |    556 +
 src/expr/pickle_data.cpp                           |     58 +
 src/expr/pickle_data.h                             |    120 +
 src/expr/pickler.cpp                               |    481 +
 src/expr/pickler.h                                 |    135 +
 src/expr/predicate.cpp                             |     99 +
 src/expr/predicate.h                               |     72 +
 src/expr/predicate.i                               |     12 +
 src/expr/record.cpp                                |    128 +
 src/expr/record.h                                  |    109 +
 src/expr/record.i                                  |     58 +
 src/expr/symbol_table.cpp                          |    215 +
 src/expr/symbol_table.h                            |    208 +
 src/expr/symbol_table.i                            |      5 +
 src/expr/type.cpp                                  |    677 +
 src/expr/type.h                                    |    766 +
 src/expr/type.i                                    |     70 +
 src/expr/type_checker.h                            |     45 +
 src/expr/type_checker_template.cpp                 |     96 +
 src/expr/type_node.cpp                             |    561 +
 src/expr/type_node.h                               |   1103 +
 src/expr/type_properties_template.h                |    141 +
 src/expr/uninterpreted_constant.cpp                |     49 +
 src/expr/uninterpreted_constant.h                  |     79 +
 src/expr/uninterpreted_constant.i                  |     17 +
 src/expr/variable_type_map.h                       |     62 +
 src/expr/variable_type_map.i                       |     12 +
 src/git_versioninfo.cpp                            |      5 +
 src/include/cvc4.h                                 |     34 +
 src/include/cvc4_private.h                         |     30 +
 src/include/cvc4_private_library.h                 |     29 +
 src/include/cvc4_public.h                          |     71 +
 src/include/cvc4parser_private.h                   |     32 +
 src/include/cvc4parser_public.h                    |     24 +
 src/lib/Makefile.am                                |     21 +
 src/lib/Makefile.in                                |    687 +
 src/lib/clock_gettime.c                            |     85 +
 src/lib/clock_gettime.h                            |     75 +
 src/lib/ffs.c                                      |     42 +
 src/lib/ffs.h                                      |     45 +
 src/lib/replacements.h                             |     34 +
 src/lib/strtok_r.c                                 |     44 +
 src/lib/strtok_r.h                                 |     42 +
 src/main/Makefile.am                               |     85 +
 src/main/Makefile.in                               |   1010 +
 src/main/command_executor.cpp                      |    291 +
 src/main/command_executor.h                        |     94 +
 src/main/command_executor_portfolio.cpp            |    442 +
 src/main/command_executor_portfolio.h              |     79 +
 src/main/driver_unified.cpp                        |    593 +
 src/main/interactive_shell.cpp                     |    410 +
 src/main/interactive_shell.h                       |     73 +
 src/main/main.cpp                                  |     79 +
 src/main/main.h                                    |     73 +
 src/main/portfolio.cpp                             |    149 +
 src/main/portfolio.h                               |     41 +
 src/main/portfolio_util.cpp                        |    161 +
 src/main/portfolio_util.h                          |    180 +
 src/main/util.cpp                                  |    305 +
 src/mksubdirs                                      |     16 +
 src/options/Makefile.am                            |    430 +
 src/options/Makefile.in                            |   1221 +
 src/options/argument_extender.h                    |     85 +
 src/options/argument_extender_implementation.cpp   |    114 +
 src/options/argument_extender_implementation.h     |    115 +
 src/options/arith_heuristic_pivot_rule.cpp         |     40 +
 src/options/arith_heuristic_pivot_rule.h           |     38 +
 src/options/arith_options                          |    168 +
 src/options/arith_options.cpp                      |    343 +
 src/options/arith_options.h                        |    818 +
 src/options/arith_propagation_mode.cpp             |     43 +
 src/options/arith_propagation_mode.h               |     38 +
 src/options/arith_unate_lemma_mode.cpp             |     43 +
 src/options/arith_unate_lemma_mode.h               |     38 +
 src/options/arrays_options                         |     35 +
 src/options/arrays_options.cpp                     |    105 +
 src/options/arrays_options.h                       |    225 +
 src/options/base_handlers.h                        |     87 +
 src/options/base_options                           |    213 +
 src/options/base_options.cpp                       |    135 +
 src/options/base_options.h                         |    310 +
 src/options/base_options_template.cpp              |     33 +
 src/options/base_options_template.h                |     55 +
 src/options/booleans_options                       |      9 +
 src/options/booleans_options.cpp                   |     33 +
 src/options/booleans_options.h                     |     55 +
 src/options/builtin_options                        |      8 +
 src/options/builtin_options.cpp                    |     33 +
 src/options/builtin_options.h                      |     55 +
 src/options/bv_bitblast_mode.cpp                   |     71 +
 src/options/bv_bitblast_mode.h                     |     79 +
 src/options/bv_options                             |     84 +
 src/options/bv_options.cpp                         |    211 +
 src/options/bv_options.h                           |    485 +
 src/options/datatypes_options                      |     33 +
 src/options/datatypes_options.cpp                  |     91 +
 src/options/datatypes_options.h                    |    197 +
 src/options/decision_mode.cpp                      |     39 +
 src/options/decision_mode.h                        |     64 +
 src/options/decision_options                       |     27 +
 src/options/decision_options.cpp                   |     73 +
 src/options/decision_options.h                     |    156 +
 src/options/decision_weight.h                      |     30 +
 src/options/didyoumean.cpp                         |    161 +
 src/options/didyoumean.h                           |     53 +
 src/options/expr_options                           |     30 +
 src/options/expr_options.cpp                       |     63 +
 src/options/expr_options.h                         |    129 +
 src/options/fp_options                             |      8 +
 src/options/fp_options.cpp                         |     33 +
 src/options/fp_options.h                           |     55 +
 src/options/idl_options                            |     12 +
 src/options/idl_options.cpp                        |     41 +
 src/options/idl_options.h                          |     73 +
 src/options/language.cpp                           |    135 +
 src/options/language.h                             |    202 +
 src/options/language.i                             |     44 +
 src/options/main_options                           |     63 +
 src/options/main_options.cpp                       |    137 +
 src/options/main_options.h                         |    314 +
 src/options/mkoptions                              |   1670 +
 src/options/open_ostream.cpp                       |    102 +
 src/options/open_ostream.h                         |     63 +
 src/options/option_exception.h                     |     56 +
 src/options/option_exception.i                     |      5 +
 src/options/options.h                              |    558 +
 src/options/options.i                              |     10 +
 src/options/options_get_option_template.cpp        |     53 +
 src/options/options_handler.cpp                    |   1591 +
 src/options/options_handler.h                      |    235 +
 src/options/options_holder_template.h              |     40 +
 src/options/options_public_functions.cpp           |    322 +
 src/options/options_set_option_template.cpp        |     52 +
 src/options/options_template.cpp                   |    832 +
 src/options/parser_options                         |     35 +
 src/options/parser_options.cpp                     |     63 +
 src/options/parser_options.h                       |    129 +
 src/options/printer_modes.cpp                      |     51 +
 src/options/printer_modes.h                        |     48 +
 src/options/printer_options                        |     14 +
 src/options/printer_options.cpp                    |     49 +
 src/options/printer_options.h                      |     96 +
 src/options/proof_options                          |     20 +
 src/options/proof_options.cpp                      |     59 +
 src/options/proof_options.h                        |    118 +
 src/options/prop_options                           |     31 +
 src/options/prop_options.cpp                       |     95 +
 src/options/prop_options.h                         |    205 +
 src/options/quantifiers_modes.cpp                  |     88 +
 src/options/quantifiers_modes.h                    |    230 +
 src/options/quantifiers_options                    |    350 +
 src/options/quantifiers_options.cpp                |    969 +
 src/options/quantifiers_options.h                  |   2370 +
 src/options/sep_options                            |     24 +
 src/options/sep_options.cpp                        |     69 +
 src/options/sep_options.h                          |    144 +
 src/options/set_language.cpp                       |     82 +
 src/options/set_language.h                         |     99 +
 src/options/sets_options                           |     17 +
 src/options/sets_options.cpp                       |     51 +
 src/options/sets_options.h                         |     99 +
 src/options/simplification_mode.cpp                |     39 +
 src/options/simplification_mode.h                  |     39 +
 src/options/smt_options                            |    165 +
 src/options/smt_options.cpp                        |    401 +
 src/options/smt_options.h                          |    963 +
 src/options/strings_options                        |     76 +
 src/options/strings_options.cpp                    |    187 +
 src/options/strings_options.h                      |    437 +
 src/options/theory_options                         |     14 +
 src/options/theory_options.cpp                     |     47 +
 src/options/theory_options.h                       |     90 +
 src/options/theoryof_mode.cpp                      |     38 +
 src/options/theoryof_mode.h                        |     38 +
 src/options/uf_options                             |     44 +
 src/options/uf_options.cpp                         |    133 +
 src/options/uf_options.h                           |    304 +
 src/options/ufss_mode.h                            |     39 +
 src/parser/Makefile.am                             |     63 +
 src/parser/Makefile.antlr_tracing                  |     22 +
 src/parser/Makefile.in                             |   1002 +
 src/parser/antlr_input.cpp                         |    577 +
 src/parser/antlr_input.h                           |    322 +
 src/parser/antlr_input_imports.cpp                 |    445 +
 src/parser/antlr_line_buffered_input.cpp           |    379 +
 src/parser/antlr_line_buffered_input.h             |     44 +
 src/parser/antlr_tracing.h                         |     86 +
 src/parser/antlr_undefines.h                       |     69 +
 src/parser/bounded_token_buffer.cpp                |    538 +
 src/parser/bounded_token_buffer.h                  |     64 +
 src/parser/bounded_token_factory.cpp               |    144 +
 src/parser/bounded_token_factory.h                 |     51 +
 src/parser/cvc/Cvc.g                               |   2400 +
 src/parser/cvc/Cvc.tokens                          |    361 +
 src/parser/cvc/CvcLexer.c                          |  29848 ++++
 src/parser/cvc/CvcLexer.h                          |   1523 +
 src/parser/cvc/CvcParser.c                         |  27589 ++++
 src/parser/cvc/CvcParser.h                         |    771 +
 src/parser/cvc/Makefile.am                         |     67 +
 src/parser/cvc/Makefile.in                         |    869 +
 src/parser/cvc/README                              |     98 +
 src/parser/cvc/cvc_input.cpp                       |     78 +
 src/parser/cvc/cvc_input.h                         |     86 +
 src/parser/cvc/stamp-generated                     |      0
 src/parser/cvc4parser.i                            |     15 +
 src/parser/input.cpp                               |     85 +
 src/parser/input.h                                 |    200 +
 src/parser/input.i                                 |      5 +
 src/parser/memory_mapped_input_buffer.cpp          |    134 +
 src/parser/memory_mapped_input_buffer.h            |     42 +
 src/parser/parser.cpp                              |    535 +
 src/parser/parser.h                                |    671 +
 src/parser/parser.i                                |     32 +
 src/parser/parser_builder.cpp                      |    214 +
 src/parser/parser_builder.h                        |    180 +
 src/parser/parser_builder.i                        |      5 +
 src/parser/parser_exception.h                      |    119 +
 src/parser/parser_exception.i                      |      8 +
 src/parser/smt1/Makefile.am                        |     68 +
 src/parser/smt1/Makefile.in                        |    870 +
 src/parser/smt1/Smt1.g                             |    900 +
 src/parser/smt1/Smt1.tokens                        |    108 +
 src/parser/smt1/Smt1Lexer.c                        |   9032 ++
 src/parser/smt1/Smt1Lexer.h                        |    919 +
 src/parser/smt1/Smt1Parser.c                       |   6631 +
 src/parser/smt1/Smt1Parser.h                       |    489 +
 src/parser/smt1/smt1.cpp                           |    338 +
 src/parser/smt1/smt1.h                             |    126 +
 src/parser/smt1/smt1_input.cpp                     |     73 +
 src/parser/smt1/smt1_input.h                       |     92 +
 src/parser/smt1/stamp-generated                    |      0
 src/parser/smt2/Makefile.am                        |     70 +
 src/parser/smt2/Makefile.in                        |    874 +
 src/parser/smt2/Smt2.g                             |   3091 +
 src/parser/smt2/Smt2.tokens                        |    155 +
 src/parser/smt2/Smt2Lexer.c                        |  41774 +++++
 src/parser/smt2/Smt2Lexer.h                        |   1242 +
 src/parser/smt2/Smt2Parser.c                       |  17502 +++
 src/parser/smt2/Smt2Parser.h                       |    588 +
 src/parser/smt2/smt2.cpp                           |   1538 +
 src/parser/smt2/smt2.h                             |    361 +
 src/parser/smt2/smt2_input.cpp                     |     83 +
 src/parser/smt2/smt2_input.h                       |    100 +
 src/parser/smt2/stamp-generated                    |      0
 src/parser/smt2/sygus_input.cpp                    |     75 +
 src/parser/smt2/sygus_input.h                      |     96 +
 src/parser/tptp/Makefile.am                        |     68 +
 src/parser/tptp/Makefile.in                        |    870 +
 src/parser/tptp/Tptp.g                             |   1037 +
 src/parser/tptp/Tptp.tokens                        |    116 +
 src/parser/tptp/TptpLexer.c                        |   8064 +
 src/parser/tptp/TptpLexer.h                        |    791 +
 src/parser/tptp/TptpParser.c                       |  10667 ++
 src/parser/tptp/TptpParser.h                       |    523 +
 src/parser/tptp/stamp-generated                    |      0
 src/parser/tptp/tptp.cpp                           |    227 +
 src/parser/tptp/tptp.h                             |    267 +
 src/parser/tptp/tptp_input.cpp                     |     74 +
 src/parser/tptp/tptp_input.h                       |     93 +
 src/printer/ast/ast_printer.cpp                    |    400 +
 src/printer/ast/ast_printer.h                      |     46 +
 src/printer/cvc/cvc_printer.cpp                    |   1371 +
 src/printer/cvc/cvc_printer.h                      |     48 +
 src/printer/dagification_visitor.cpp               |    167 +
 src/printer/dagification_visitor.h                 |    177 +
 src/printer/printer.cpp                            |    121 +
 src/printer/printer.h                              |     87 +
 src/printer/smt1/smt1_printer.cpp                  |     60 +
 src/printer/smt1/smt1_printer.h                    |     46 +
 src/printer/smt2/smt2_printer.cpp                  |   1587 +
 src/printer/smt2/smt2_printer.h                    |     58 +
 src/printer/tptp/tptp_printer.cpp                  |     65 +
 src/printer/tptp/tptp_printer.h                    |     44 +
 src/proof/arith_proof.cpp                          |    847 +
 src/proof/arith_proof.h                            |     83 +
 src/proof/array_proof.cpp                          |   1401 +
 src/proof/array_proof.h                            |    135 +
 src/proof/bitvector_proof.cpp                      |   1096 +
 src/proof/bitvector_proof.h                        |    166 +
 src/proof/clause_id.h                              |     33 +
 src/proof/cnf_proof.cpp                            |    846 +
 src/proof/cnf_proof.h                              |    192 +
 src/proof/lemma_proof.cpp                          |    205 +
 src/proof/lemma_proof.h                            |     86 +
 src/proof/proof.h                                  |     70 +
 src/proof/proof_manager.cpp                        |   1005 +
 src/proof/proof_manager.h                          |    316 +
 src/proof/proof_output_channel.cpp                 |     84 +
 src/proof/proof_output_channel.h                   |     50 +
 src/proof/proof_utils.cpp                          |    139 +
 src/proof/proof_utils.h                            |    235 +
 src/proof/sat_proof.h                              |    419 +
 src/proof/sat_proof_implementation.h               |   1197 +
 src/proof/skolemization_manager.cpp                |     68 +
 src/proof/skolemization_manager.h                  |     54 +
 src/proof/theory_proof.cpp                         |   1246 +
 src/proof/theory_proof.h                           |    339 +
 src/proof/uf_proof.cpp                             |    851 +
 src/proof/uf_proof.h                               |     81 +
 src/proof/unsat_core.cpp                           |     56 +
 src/proof/unsat_core.h                             |     73 +
 src/proof/unsat_core.i                             |     69 +
 src/prop/bvminisat/LICENSE                         |     21 +
 src/prop/bvminisat/Makefile                        |    848 +
 src/prop/bvminisat/Makefile.am                     |     44 +
 src/prop/bvminisat/Makefile.in                     |    848 +
 src/prop/bvminisat/README                          |     24 +
 src/prop/bvminisat/bvminisat.cpp                   |    311 +
 src/prop/bvminisat/bvminisat.h                     |    153 +
 src/prop/bvminisat/core/Dimacs.h                   |     91 +
 src/prop/bvminisat/core/Main.cc                    |    199 +
 src/prop/bvminisat/core/Makefile                   |      4 +
 src/prop/bvminisat/core/Solver.cc                  |   1470 +
 src/prop/bvminisat/core/Solver.h                   |    497 +
 src/prop/bvminisat/core/SolverTypes.h              |    421 +
 src/prop/bvminisat/doc/ReleaseNotes-2.2.0.txt      |     79 +
 src/prop/bvminisat/mtl/Alg.h                       |     86 +
 src/prop/bvminisat/mtl/Alloc.h                     |    133 +
 src/prop/bvminisat/mtl/Heap.h                      |    151 +
 src/prop/bvminisat/mtl/IntTypes.h                  |     42 +
 src/prop/bvminisat/mtl/Map.h                       |    196 +
 src/prop/bvminisat/mtl/Queue.h                     |     71 +
 src/prop/bvminisat/mtl/Sort.h                      |    100 +
 src/prop/bvminisat/mtl/Vec.h                       |    132 +
 src/prop/bvminisat/mtl/XAlloc.h                    |     48 +
 src/prop/bvminisat/mtl/config.mk                   |      6 +
 src/prop/bvminisat/mtl/template.mk                 |    107 +
 src/prop/bvminisat/simp/Main.cc                    |    218 +
 src/prop/bvminisat/simp/Makefile                   |      4 +
 src/prop/bvminisat/simp/SimpSolver.cc              |    762 +
 src/prop/bvminisat/simp/SimpSolver.h               |    227 +
 src/prop/bvminisat/utils/Options.cc                |     95 +
 src/prop/bvminisat/utils/Options.h                 |    388 +
 src/prop/bvminisat/utils/ParseUtils.h              |    125 +
 src/prop/bvminisat/utils/System.cc                 |    100 +
 src/prop/bvminisat/utils/System.h                  |     62 +
 src/prop/cnf_stream.cpp                            |    752 +
 src/prop/cnf_stream.h                              |    340 +
 src/prop/cryptominisat.cpp                         |    230 +
 src/prop/cryptominisat.h                           |    134 +
 src/prop/minisat/LICENSE                           |     21 +
 src/prop/minisat/Makefile                          |    848 +
 src/prop/minisat/Makefile.am                       |     44 +
 src/prop/minisat/Makefile.in                       |    848 +
 src/prop/minisat/README                            |     24 +
 src/prop/minisat/core/Dimacs.h                     |     91 +
 src/prop/minisat/core/Main.cc                      |    197 +
 src/prop/minisat/core/Makefile                     |      4 +
 src/prop/minisat/core/Solver.cc                    |   1846 +
 src/prop/minisat/core/Solver.h                     |    575 +
 src/prop/minisat/core/SolverTypes.h                |    490 +
 src/prop/minisat/doc/ReleaseNotes-2.2.0.txt        |     79 +
 src/prop/minisat/minisat.cpp                       |    302 +
 src/prop/minisat/minisat.h                         |    110 +
 src/prop/minisat/mtl/Alg.h                         |     86 +
 src/prop/minisat/mtl/Alloc.h                       |    133 +
 src/prop/minisat/mtl/Heap.h                        |    150 +
 src/prop/minisat/mtl/IntTypes.h                    |     42 +
 src/prop/minisat/mtl/Map.h                         |    196 +
 src/prop/minisat/mtl/Queue.h                       |     71 +
 src/prop/minisat/mtl/Sort.h                        |    100 +
 src/prop/minisat/mtl/Vec.h                         |    132 +
 src/prop/minisat/mtl/XAlloc.h                      |     47 +
 src/prop/minisat/mtl/config.mk                     |      6 +
 src/prop/minisat/mtl/template.mk                   |    107 +
 src/prop/minisat/simp/Main.cc                      |    218 +
 src/prop/minisat/simp/Makefile                     |      4 +
 src/prop/minisat/simp/SimpSolver.cc                |    758 +
 src/prop/minisat/simp/SimpSolver.h                 |    242 +
 src/prop/minisat/utils/Options.cc                  |     91 +
 src/prop/minisat/utils/Options.h                   |    388 +
 src/prop/minisat/utils/ParseUtils.h                |    125 +
 src/prop/minisat/utils/System.cc                   |     95 +
 src/prop/minisat/utils/System.h                    |     60 +
 src/prop/prop_engine.cpp                           |    351 +
 src/prop/prop_engine.h                             |    256 +
 src/prop/registrar.h                               |     45 +
 src/prop/sat_solver.h                              |    204 +
 src/prop/sat_solver_factory.cpp                    |     41 +
 src/prop/sat_solver_factory.h                      |     44 +
 src/prop/sat_solver_types.h                        |    208 +
 src/prop/theory_proxy.cpp                          |    264 +
 src/prop/theory_proxy.h                            |    154 +
 src/smt/command.cpp                                |   1962 +
 src/smt/command.h                                  |    942 +
 src/smt/command.i                                  |     77 +
 src/smt/command_list.cpp                           |     30 +
 src/smt/command_list.h                             |     39 +
 src/smt/dump.cpp                                   |    230 +
 src/smt/dump.h                                     |    123 +
 src/smt/logic_exception.h                          |     47 +
 src/smt/logic_exception.i                          |      7 +
 src/smt/logic_request.cpp                          |     34 +
 src/smt/logic_request.h                            |     49 +
 src/smt/managed_ostreams.cpp                       |    192 +
 src/smt/managed_ostreams.h                         |    181 +
 src/smt/model.cpp                                  |     55 +
 src/smt/model.h                                    |     83 +
 src/smt/smt_engine.cpp                             |   5520 +
 src/smt/smt_engine.h                               |    767 +
 src/smt/smt_engine.i                               |     51 +
 src/smt/smt_engine_check_proof.cpp                 |    120 +
 src/smt/smt_engine_scope.cpp                       |     27 +
 src/smt/smt_engine_scope.h                         |     92 +
 src/smt/smt_statistics_registry.cpp                |     29 +
 src/smt/smt_statistics_registry.h                  |     61 +
 src/smt/term_formula_removal.cpp                   |    235 +
 src/smt/term_formula_removal.h                     |     93 +
 src/smt/update_ostream.h                           |    124 +
 src/smt_util/Makefile.am                           |     20 +
 src/smt_util/Makefile.in                           |    772 +
 src/smt_util/boolean_simplification.cpp            |     65 +
 src/smt_util/boolean_simplification.h              |    234 +
 src/smt_util/lemma_channels.cpp                    |     54 +
 src/smt_util/lemma_channels.h                      |     77 +
 src/smt_util/lemma_input_channel.h                 |     38 +
 src/smt_util/lemma_output_channel.h                |     46 +
 src/smt_util/nary_builder.cpp                      |    200 +
 src/smt_util/nary_builder.h                        |     55 +
 src/smt_util/node_visitor.h                        |    120 +
 src/svn_versioninfo.cpp                            |      5 +
 src/theory/arith/approx_simplex.cpp                |   3214 +
 src/theory/arith/approx_simplex.h                  |    197 +
 src/theory/arith/arith_ite_utils.cpp               |    471 +
 src/theory/arith/arith_ite_utils.h                 |    117 +
 src/theory/arith/arith_rewriter.cpp                |    530 +
 src/theory/arith/arith_rewriter.h                  |     77 +
 src/theory/arith/arith_static_learner.cpp          |    279 +
 src/theory/arith/arith_static_learner.h            |     75 +
 src/theory/arith/arith_utilities.h                 |    278 +
 src/theory/arith/arithvar.cpp                      |     36 +
 src/theory/arith/arithvar.h                        |     45 +
 src/theory/arith/attempt_solution_simplex.cpp      |    153 +
 src/theory/arith/attempt_solution_simplex.h        |     96 +
 src/theory/arith/bound_counts.h                    |    236 +
 src/theory/arith/callbacks.cpp                     |    191 +
 src/theory/arith/callbacks.h                       |    195 +
 src/theory/arith/congruence_manager.cpp            |    520 +
 src/theory/arith/congruence_manager.h              |    199 +
 src/theory/arith/constraint.cpp                    |   1895 +
 src/theory/arith/constraint.h                      |   1186 +
 src/theory/arith/constraint_forward.h              |     49 +
 src/theory/arith/cut_log.cpp                       |    708 +
 src/theory/arith/cut_log.h                         |    299 +
 src/theory/arith/delta_rational.cpp                |    106 +
 src/theory/arith/delta_rational.h                  |    298 +
 src/theory/arith/dio_solver.cpp                    |    829 +
 src/theory/arith/dio_solver.h                      |    429 +
 src/theory/arith/dual_simplex.cpp                  |    264 +
 src/theory/arith/dual_simplex.h                    |    113 +
 src/theory/arith/error_set.cpp                     |    494 +
 src/theory/arith/error_set.h                       |    410 +
 src/theory/arith/fc_simplex.cpp                    |    844 +
 src/theory/arith/fc_simplex.h                      |    257 +
 src/theory/arith/infer_bounds.cpp                  |    319 +
 src/theory/arith/infer_bounds.h                    |    163 +
 src/theory/arith/kinds                             |    113 +
 src/theory/arith/linear_equality.cpp               |   1415 +
 src/theory/arith/linear_equality.h                 |    756 +
 src/theory/arith/matrix.cpp                        |     32 +
 src/theory/arith/matrix.h                          |   1006 +
 src/theory/arith/normal_form.cpp                   |   1349 +
 src/theory/arith/normal_form.h                     |   1437 +
 src/theory/arith/partial_model.cpp                 |    688 +
 src/theory/arith/partial_model.h                   |    411 +
 src/theory/arith/pseudoboolean_proc.cpp            |    326 +
 src/theory/arith/pseudoboolean_proc.h              |    108 +
 src/theory/arith/simplex.cpp                       |    283 +
 src/theory/arith/simplex.h                         |    218 +
 src/theory/arith/simplex_update.cpp                |    192 +
 src/theory/arith/simplex_update.h                  |    352 +
 src/theory/arith/soi_simplex.cpp                   |   1013 +
 src/theory/arith/soi_simplex.h                     |    243 +
 src/theory/arith/tableau.cpp                       |    195 +
 src/theory/arith/tableau.h                         |    164 +
 src/theory/arith/tableau_sizes.cpp                 |     36 +
 src/theory/arith/tableau_sizes.h                   |     45 +
 src/theory/arith/theory_arith.cpp                  |    153 +
 src/theory/arith/theory_arith.h                    |     89 +
 src/theory/arith/theory_arith_private.cpp          |   5771 +
 src/theory/arith/theory_arith_private.h            |    851 +
 src/theory/arith/theory_arith_private_forward.h    |     31 +
 src/theory/arith/theory_arith_type_rules.h         |    172 +
 src/theory/arith/type_enumerator.h                 |    164 +
 src/theory/arrays/array_info.cpp                   |    517 +
 src/theory/arrays/array_info.h                     |    217 +
 src/theory/arrays/array_proof_reconstruction.cpp   |    192 +
 src/theory/arrays/array_proof_reconstruction.h     |     58 +
 src/theory/arrays/kinds                            |     65 +
 src/theory/arrays/static_fact_manager.cpp          |    170 +
 src/theory/arrays/static_fact_manager.h            |    117 +
 src/theory/arrays/theory_arrays.cpp                |   2256 +
 src/theory/arrays/theory_arrays.h                  |    464 +
 src/theory/arrays/theory_arrays_rewriter.cpp       |     49 +
 src/theory/arrays/theory_arrays_rewriter.h         |    509 +
 src/theory/arrays/theory_arrays_type_rules.h       |    230 +
 src/theory/arrays/type_enumerator.h                |    158 +
 src/theory/arrays/union_find.cpp                   |     57 +
 src/theory/arrays/union_find.h                     |    144 +
 src/theory/atom_requests.cpp                       |     79 +
 src/theory/atom_requests.h                         |    126 +
 src/theory/booleans/circuit_propagator.cpp         |    393 +
 src/theory/booleans/circuit_propagator.h           |    289 +
 src/theory/booleans/kinds                          |     47 +
 src/theory/booleans/theory_bool.cpp                |     78 +
 src/theory/booleans/theory_bool.h                  |     47 +
 src/theory/booleans/theory_bool_rewriter.cpp       |    372 +
 src/theory/booleans/theory_bool_rewriter.h         |     45 +
 src/theory/booleans/theory_bool_type_rules.h       |     77 +
 src/theory/booleans/type_enumerator.h              |     73 +
 src/theory/builtin/kinds                           |    352 +
 src/theory/builtin/theory_builtin.cpp              |     30 +
 src/theory/builtin/theory_builtin.h                |     41 +
 src/theory/builtin/theory_builtin_rewriter.cpp     |     75 +
 src/theory/builtin/theory_builtin_rewriter.h       |     65 +
 src/theory/builtin/theory_builtin_type_rules.h     |    326 +
 src/theory/builtin/type_enumerator.h               |     82 +
 src/theory/bv/abstraction.cpp                      |   1060 +
 src/theory/bv/abstraction.h                        |    247 +
 src/theory/bv/aig_bitblaster.cpp                   |    671 +
 src/theory/bv/bitblast_strategies_template.h       |    870 +
 src/theory/bv/bitblast_utils.h                     |    283 +
 src/theory/bv/bitblaster_template.h                |    499 +
 src/theory/bv/bv_eager_solver.cpp                  |    125 +
 src/theory/bv/bv_eager_solver.h                    |     63 +
 src/theory/bv/bv_inequality_graph.cpp              |    473 +
 src/theory/bv/bv_inequality_graph.h                |    285 +
 src/theory/bv/bv_quick_check.cpp                   |    378 +
 src/theory/bv/bv_quick_check.h                     |    175 +
 src/theory/bv/bv_subtheory.h                       |    116 +
 src/theory/bv/bv_subtheory_algebraic.cpp           |    983 +
 src/theory/bv/bv_subtheory_algebraic.h             |    235 +
 src/theory/bv/bv_subtheory_bitblast.cpp            |    271 +
 src/theory/bv/bv_subtheory_bitblast.h              |     81 +
 src/theory/bv/bv_subtheory_core.cpp                |    459 +
 src/theory/bv/bv_subtheory_core.h                  |    129 +
 src/theory/bv/bv_subtheory_inequality.cpp          |    240 +
 src/theory/bv/bv_subtheory_inequality.h            |     81 +
 src/theory/bv/bv_to_bool.cpp                       |    373 +
 src/theory/bv/bv_to_bool.h                         |     84 +
 src/theory/bv/bvintropow2.cpp                      |     85 +
 src/theory/bv/bvintropow2.h                        |     51 +
 src/theory/bv/cd_set_collection.h                  |    439 +
 src/theory/bv/eager_bitblaster.cpp                 |    255 +
 src/theory/bv/kinds                                |    205 +
 src/theory/bv/lazy_bitblaster.cpp                  |    545 +
 src/theory/bv/slicer.cpp                           |    615 +
 src/theory/bv/slicer.h                             |    254 +
 src/theory/bv/theory_bv.cpp                        |   1034 +
 src/theory/bv/theory_bv.h                          |    248 +
 src/theory/bv/theory_bv_rewrite_rules.h            |    684 +
 .../theory_bv_rewrite_rules_constant_evaluation.h  |    498 +
 src/theory/bv/theory_bv_rewrite_rules_core.h       |    285 +
 .../bv/theory_bv_rewrite_rules_normalization.h     |   1297 +
 .../theory_bv_rewrite_rules_operator_elimination.h |    521 +
 .../bv/theory_bv_rewrite_rules_simplification.h    |   1243 +
 src/theory/bv/theory_bv_rewriter.cpp               |    722 +
 src/theory/bv/theory_bv_rewriter.h                 |    112 +
 src/theory/bv/theory_bv_type_rules.h               |    343 +
 src/theory/bv/theory_bv_utils.cpp                  |    119 +
 src/theory/bv/theory_bv_utils.h                    |    527 +
 src/theory/bv/type_enumerator.h                    |     66 +
 src/theory/datatypes/datatypes_rewriter.h          |    634 +
 src/theory/datatypes/datatypes_sygus.cpp           |   1373 +
 src/theory/datatypes/datatypes_sygus.h             |    145 +
 src/theory/datatypes/kinds                         |    111 +
 src/theory/datatypes/theory_datatypes.cpp          |   2216 +
 src/theory/datatypes/theory_datatypes.h            |    327 +
 src/theory/datatypes/theory_datatypes_type_rules.h |    326 +
 src/theory/datatypes/type_enumerator.cpp           |    224 +
 src/theory/datatypes/type_enumerator.h             |    184 +
 src/theory/example/ecdata.cpp                      |    103 +
 src/theory/example/ecdata.h                        |    259 +
 src/theory/example/theory_uf_tim.cpp               |    328 +
 src/theory/example/theory_uf_tim.h                 |    213 +
 src/theory/fp/kinds                                |    238 +
 src/theory/fp/theory_fp.cpp                        |    127 +
 src/theory/fp/theory_fp.h                          |     53 +
 src/theory/fp/theory_fp_rewriter.cpp               |    478 +
 src/theory/fp/theory_fp_rewriter.h                 |     65 +
 src/theory/fp/theory_fp_type_rules.h               |    471 +
 src/theory/idl/idl_assertion.cpp                   |    213 +
 src/theory/idl/idl_assertion.h                     |     91 +
 src/theory/idl/idl_assertion_db.cpp                |     59 +
 src/theory/idl/idl_assertion_db.h                  |     86 +
 src/theory/idl/idl_model.cpp                       |     64 +
 src/theory/idl/idl_model.h                         |     84 +
 src/theory/idl/kinds                               |      8 +
 src/theory/idl/theory_idl.cpp                      |    155 +
 src/theory/idl/theory_idl.h                        |     63 +
 src/theory/interrupted.h                           |     43 +
 src/theory/ite_utilities.cpp                       |   1641 +
 src/theory/ite_utilities.h                         |    385 +
 src/theory/logic_info.cpp                          |    580 +
 src/theory/logic_info.h                            |    252 +
 src/theory/logic_info.i                            |     17 +
 src/theory/mkrewriter                              |    277 +
 src/theory/mktheorytraits                          |    427 +
 src/theory/output_channel.h                        |    254 +
 src/theory/quantifiers/alpha_equivalence.cpp       |    122 +
 src/theory/quantifiers/alpha_equivalence.h         |     58 +
 src/theory/quantifiers/ambqi_builder.cpp           |    937 +
 src/theory/quantifiers/ambqi_builder.h             |    103 +
 src/theory/quantifiers/anti_skolem.cpp             |    285 +
 src/theory/quantifiers/anti_skolem.h               |     86 +
 src/theory/quantifiers/bounded_integers.cpp        |    888 +
 src/theory/quantifiers/bounded_integers.h          |    182 +
 src/theory/quantifiers/candidate_generator.cpp     |    307 +
 src/theory/quantifiers/candidate_generator.h       |    178 +
 src/theory/quantifiers/ce_guided_instantiation.cpp |    912 +
 src/theory/quantifiers/ce_guided_instantiation.h   |    192 +
 src/theory/quantifiers/ce_guided_single_inv.cpp    |   1296 +
 src/theory/quantifiers/ce_guided_single_inv.h      |    231 +
 src/theory/quantifiers/ce_guided_single_inv_ei.cpp |     47 +
 src/theory/quantifiers/ce_guided_single_inv_ei.h   |     43 +
 .../quantifiers/ce_guided_single_inv_sol.cpp       |   1197 +
 src/theory/quantifiers/ce_guided_single_inv_sol.h  |    101 +
 src/theory/quantifiers/ceg_instantiator.cpp        |   1011 +
 src/theory/quantifiers/ceg_instantiator.h          |    219 +
 src/theory/quantifiers/ceg_t_instantiator.cpp      |    868 +
 src/theory/quantifiers/ceg_t_instantiator.h        |     93 +
 src/theory/quantifiers/conjecture_generator.cpp    |   2169 +
 src/theory/quantifiers/conjecture_generator.h      |    432 +
 src/theory/quantifiers/equality_infer.cpp          |    432 +
 src/theory/quantifiers/equality_infer.h            |    105 +
 src/theory/quantifiers/first_order_model.cpp       |    956 +
 src/theory/quantifiers/first_order_model.h         |    237 +
 src/theory/quantifiers/full_model_check.cpp        |   1455 +
 src/theory/quantifiers/full_model_check.h          |    160 +
 src/theory/quantifiers/fun_def_engine.cpp          |     54 +
 src/theory/quantifiers/fun_def_engine.h            |     59 +
 src/theory/quantifiers/fun_def_process.cpp         |    218 +
 src/theory/quantifiers/fun_def_process.h           |     56 +
 src/theory/quantifiers/inst_match.cpp              |    481 +
 src/theory/quantifiers/inst_match.h                |    244 +
 src/theory/quantifiers/inst_match_generator.cpp    |    825 +
 src/theory/quantifiers/inst_match_generator.h      |    245 +
 src/theory/quantifiers/inst_propagator.cpp         |    852 +
 src/theory/quantifiers/inst_propagator.h           |    175 +
 src/theory/quantifiers/inst_strategy_cbqi.cpp      |    778 +
 src/theory/quantifiers/inst_strategy_cbqi.h        |    160 +
 .../quantifiers/inst_strategy_e_matching.cpp       |    776 +
 src/theory/quantifiers/inst_strategy_e_matching.h  |    136 +
 src/theory/quantifiers/instantiation_engine.cpp    |    207 +
 src/theory/quantifiers/instantiation_engine.h      |     97 +
 src/theory/quantifiers/kinds                       |     79 +
 src/theory/quantifiers/local_theory_ext.cpp        |    248 +
 src/theory/quantifiers/local_theory_ext.h          |     81 +
 src/theory/quantifiers/macros.cpp                  |    535 +
 src/theory/quantifiers/macros.h                    |     74 +
 src/theory/quantifiers/model_builder.cpp           |    785 +
 src/theory/quantifiers/model_builder.h             |    196 +
 src/theory/quantifiers/model_engine.cpp            |    317 +
 src/theory/quantifiers/model_engine.h              |     70 +
 src/theory/quantifiers/quant_conflict_find.cpp     |   2270 +
 src/theory/quantifiers/quant_conflict_find.h       |    276 +
 src/theory/quantifiers/quant_equality_engine.cpp   |    218 +
 src/theory/quantifiers/quant_equality_engine.h     |    101 +
 src/theory/quantifiers/quant_split.cpp             |    145 +
 src/theory/quantifiers/quant_split.h               |     55 +
 src/theory/quantifiers/quant_util.cpp              |    525 +
 src/theory/quantifiers/quant_util.h                |    212 +
 src/theory/quantifiers/quantifiers_attributes.cpp  |     70 +
 src/theory/quantifiers/quantifiers_attributes.h    |     47 +
 src/theory/quantifiers/quantifiers_rewriter.cpp    |   1838 +
 src/theory/quantifiers/quantifiers_rewriter.h      |    105 +
 src/theory/quantifiers/relevant_domain.cpp         |    309 +
 src/theory/quantifiers/relevant_domain.h           |     83 +
 src/theory/quantifiers/rewrite_engine.cpp          |    300 +
 src/theory/quantifiers/rewrite_engine.h            |     68 +
 src/theory/quantifiers/symmetry_breaking.cpp       |    316 +
 src/theory/quantifiers/symmetry_breaking.h         |    116 +
 src/theory/quantifiers/term_database.cpp           |   3322 +
 src/theory/quantifiers/term_database.h             |    682 +
 src/theory/quantifiers/theory_quantifiers.cpp      |    202 +
 src/theory/quantifiers/theory_quantifiers.h        |     83 +
 .../quantifiers/theory_quantifiers_type_rules.h    |    231 +
 src/theory/quantifiers/trigger.cpp                 |    786 +
 src/theory/quantifiers/trigger.h                   |    189 +
 src/theory/quantifiers_engine.cpp                  |   1991 +
 src/theory/quantifiers_engine.h                    |    478 +
 src/theory/rep_set.cpp                             |    380 +
 src/theory/rep_set.h                               |    149 +
 src/theory/rewriter.cpp                            |    268 +
 src/theory/rewriter.h                              |    119 +
 src/theory/rewriter_attributes.h                   |     98 +
 src/theory/rewriter_tables_template.h              |    107 +
 src/theory/sep/kinds                               |     29 +
 src/theory/sep/theory_sep.cpp                      |   1802 +
 src/theory/sep/theory_sep.h                        |    315 +
 src/theory/sep/theory_sep_rewriter.cpp             |    218 +
 src/theory/sep/theory_sep_rewriter.h               |     56 +
 src/theory/sep/theory_sep_type_rules.h             |    106 +
 src/theory/sets/kinds                              |     84 +
 src/theory/sets/normal_form.h                      |    139 +
 src/theory/sets/rels_utils.h                       |     96 +
 src/theory/sets/theory_sets.cpp                    |     91 +
 src/theory/sets/theory_sets.h                      |     81 +
 src/theory/sets/theory_sets_private.cpp            |   2078 +
 src/theory/sets/theory_sets_private.h              |    243 +
 src/theory/sets/theory_sets_rels.cpp               |   1675 +
 src/theory/sets/theory_sets_rels.h                 |    262 +
 src/theory/sets/theory_sets_rewriter.cpp           |    521 +
 src/theory/sets/theory_sets_rewriter.h             |     92 +
 src/theory/sets/theory_sets_type_enumerator.h      |    183 +
 src/theory/sets/theory_sets_type_rules.h           |    320 +
 src/theory/shared_terms_database.cpp               |    263 +
 src/theory/shared_terms_database.h                 |    251 +
 src/theory/sort_inference.cpp                      |    792 +
 src/theory/sort_inference.h                        |    124 +
 src/theory/strings/kinds                           |    127 +
 src/theory/strings/regexp_operation.cpp            |   2177 +
 src/theory/strings/regexp_operation.h              |    123 +
 src/theory/strings/theory_strings.cpp              |   4886 +
 src/theory/strings/theory_strings.h                |    526 +
 src/theory/strings/theory_strings_preprocess.cpp   |    506 +
 src/theory/strings/theory_strings_preprocess.h     |     59 +
 src/theory/strings/theory_strings_rewriter.cpp     |   1781 +
 src/theory/strings/theory_strings_rewriter.h       |     76 +
 src/theory/strings/theory_strings_type_rules.h     |    492 +
 src/theory/strings/type_enumerator.h               |    130 +
 src/theory/substitutions.cpp                       |    267 +
 src/theory/substitutions.h                         |    202 +
 src/theory/term_registration_visitor.cpp           |    333 +
 src/theory/term_registration_visitor.h             |    155 +
 src/theory/theory.cpp                              |    634 +
 src/theory/theory.h                                |   1070 +
 src/theory/theory_engine.cpp                       |   2265 +
 src/theory/theory_engine.h                         |    900 +
 src/theory/theory_model.cpp                        |   1105 +
 src/theory/theory_model.h                          |    296 +
 src/theory/theory_registrar.h                      |     49 +
 src/theory/theory_test_utils.h                     |    150 +
 src/theory/theory_traits_template.h                |     54 +
 src/theory/type_enumerator.h                       |    169 +
 src/theory/type_enumerator_template.cpp            |     58 +
 src/theory/uf/equality_engine.cpp                  |   2246 +
 src/theory/uf/equality_engine.h                    |    920 +
 src/theory/uf/equality_engine_types.h              |    364 +
 src/theory/uf/kinds                                |     32 +
 src/theory/uf/symmetry_breaker.cpp                 |    801 +
 src/theory/uf/symmetry_breaker.h                   |    179 +
 src/theory/uf/theory_uf.cpp                        |    574 +
 src/theory/uf/theory_uf.h                          |    220 +
 src/theory/uf/theory_uf_model.cpp                  |    463 +
 src/theory/uf/theory_uf_model.h                    |    197 +
 src/theory/uf/theory_uf_rewriter.h                 |    113 +
 src/theory/uf/theory_uf_strong_solver.cpp          |   2354 +
 src/theory/uf/theory_uf_strong_solver.h            |    518 +
 src/theory/uf/theory_uf_type_rules.h               |    145 +
 src/theory/unconstrained_simplifier.cpp            |    704 +
 src/theory/unconstrained_simplifier.h              |     65 +
 src/theory/valuation.cpp                           |    115 +
 src/theory/valuation.h                             |    152 +
 src/util/Makefile.am                               |    111 +
 src/util/Makefile.in                               |    869 +
 src/util/abstract_value.cpp                        |     38 +
 src/util/abstract_value.h                          |     73 +
 src/util/bin_heap.h                                |    368 +
 src/util/bitvector.h                               |    528 +
 src/util/bitvector.i                               |     43 +
 src/util/bool.h                                    |     32 +
 src/util/bool.i                                    |      7 +
 src/util/cache.h                                   |    127 +
 src/util/cardinality.cpp                           |    261 +
 src/util/cardinality.h                             |    229 +
 src/util/cardinality.i                             |     23 +
 src/util/channel.h                                 |    119 +
 src/util/debug.h                                   |     37 +
 src/util/dense_map.h                               |    338 +
 src/util/divisible.cpp                             |     31 +
 src/util/divisible.h                               |     63 +
 src/util/divisible.i                               |     10 +
 src/util/dynamic_array.h                           |    150 +
 src/util/floatingpoint.cpp                         |     39 +
 src/util/floatingpoint.h                           |    262 +
 src/util/floatingpoint.i                           |      5 +
 src/util/gmp_util.h                                |     40 +
 src/util/hash.h                                    |     64 +
 src/util/hash.i                                    |      7 +
 src/util/index.h                                   |     47 +
 src/util/integer.h.in                              |     42 +
 src/util/integer.i                                 |     33 +
 src/util/integer_cln_imp.cpp                       |    158 +
 src/util/integer_cln_imp.h                         |    524 +
 src/util/integer_gmp_imp.cpp                       |    103 +
 src/util/integer_gmp_imp.h                         |    510 +
 src/util/maybe.h                                   |     86 +
 src/util/ntuple.h                                  |     98 +
 src/util/proof.h                                   |     43 +
 src/util/proof.i                                   |      5 +
 src/util/rational.h.in                             |     42 +
 src/util/rational.i                                |     35 +
 src/util/rational_cln_imp.cpp                      |    112 +
 src/util/rational_cln_imp.h                        |    371 +
 src/util/rational_gmp_imp.cpp                      |    111 +
 src/util/rational_gmp_imp.h                        |    349 +
 src/util/regexp.cpp                                |    173 +
 src/util/regexp.h                                  |    394 +
 src/util/regexp.i                                  |     35 +
 src/util/resource_manager.cpp                      |    299 +
 src/util/resource_manager.h                        |    199 +
 src/util/resource_manager.i                        |      5 +
 src/util/result.cpp                                |    373 +
 src/util/result.h                                  |    154 +
 src/util/result.i                                  |     20 +
 src/util/sexpr.cpp                                 |    383 +
 src/util/sexpr.h                                   |    304 +
 src/util/sexpr.i                                   |     22 +
 src/util/smt2_quote_string.cpp                     |     41 +
 src/util/smt2_quote_string.h                       |     33 +
 src/util/statistics.cpp                            |    134 +
 src/util/statistics.h                              |    129 +
 src/util/statistics.i                              |     79 +
 src/util/statistics_registry.cpp                   |    245 +
 src/util/statistics_registry.h                     |    766 +
 src/util/subrange_bound.cpp                        |     61 +
 src/util/subrange_bound.h                          |    234 +
 src/util/subrange_bound.i                          |     24 +
 src/util/tuple.h                                   |     72 +
 src/util/tuple.i                                   |     17 +
 src/util/unsafe_interrupt_exception.h              |     43 +
 src/util/unsafe_interrupt_exception.i              |      7 +
 src/util/utility.h                                 |     72 +
 test/Makefile.am                                   |    147 +
 test/Makefile.in                                   |    906 +
 test/regress/Makefile.am                           |     29 +
 test/regress/Makefile.in                           |    790 +
 test/regress/Makefile.levels                       |     14 +
 test/regress/README                                |     63 +
 test/regress/regress0/Makefile.am                  |    218 +
 test/regress/regress0/Makefile.in                  |   2367 +
 test/regress/regress0/arith/Makefile.am            |     81 +
 test/regress/regress0/arith/Makefile.in            |   1425 +
 test/regress/regress0/arith/arith.01.cvc           |      5 +
 test/regress/regress0/arith/arith.02.cvc           |      6 +
 test/regress/regress0/arith/arith.03.cvc           |      5 +
 test/regress/regress0/arith/bug443.delta01.smt     |     37 +
 test/regress/regress0/arith/bug547.1.smt2          |      8 +
 test/regress/regress0/arith/bug547.2.smt2          |      9 +
 test/regress/regress0/arith/bug569.smt2            |     14 +
 test/regress/regress0/arith/bug716.0.smt2          |    662 +
 test/regress/regress0/arith/bug716.1.cvc           |      6 +
 .../arith/delta-minimized-row-vector-bug.smt       |     12 +
 test/regress/regress0/arith/div.01.smt2            |     12 +
 test/regress/regress0/arith/div.02.smt2            |      9 +
 test/regress/regress0/arith/div.03.smt2            |     12 +
 test/regress/regress0/arith/div.04.smt2            |     12 +
 test/regress/regress0/arith/div.05.smt2            |     12 +
 test/regress/regress0/arith/div.06.smt2            |     14 +
 test/regress/regress0/arith/div.07.smt2            |     14 +
 test/regress/regress0/arith/div.08.smt2            |     11 +
 test/regress/regress0/arith/div.09.smt2            |     15 +
 test/regress/regress0/arith/fuzz_3-eq.smt          |     46 +
 test/regress/regress0/arith/integers/Makefile.am   |    149 +
 test/regress/regress0/arith/integers/Makefile.in   |   1372 +
 .../regress0/arith/integers/arith-int-001.cvc      |     14 +
 .../regress0/arith/integers/arith-int-002.cvc      |     14 +
 .../regress0/arith/integers/arith-int-003.cvc      |     14 +
 .../regress0/arith/integers/arith-int-004.cvc      |     15 +
 .../regress0/arith/integers/arith-int-005.cvc      |     14 +
 .../regress0/arith/integers/arith-int-006.cvc      |     10 +
 .../regress0/arith/integers/arith-int-008.cvc      |     10 +
 .../regress0/arith/integers/arith-int-009.cvc      |     10 +
 .../regress0/arith/integers/arith-int-010.cvc      |     10 +
 .../regress0/arith/integers/arith-int-011.cvc      |      5 +
 .../regress0/arith/integers/arith-int-012.cvc      |      5 +
 .../regress0/arith/integers/arith-int-013.cvc      |      5 +
 .../regress0/arith/integers/arith-int-014.cvc      |      5 +
 .../regress0/arith/integers/arith-int-015.cvc      |      5 +
 .../regress0/arith/integers/arith-int-016.cvc      |     20 +
 .../regress0/arith/integers/arith-int-017.cvc      |     20 +
 .../regress0/arith/integers/arith-int-018.cvc      |     20 +
 .../regress0/arith/integers/arith-int-019.cvc      |     20 +
 .../regress0/arith/integers/arith-int-020.cvc      |     20 +
 .../regress0/arith/integers/arith-int-021.cvc      |      4 +
 .../regress0/arith/integers/arith-int-022.cvc      |      4 +
 .../regress0/arith/integers/arith-int-023.cvc      |      4 +
 .../regress0/arith/integers/arith-int-024.cvc      |      4 +
 .../regress0/arith/integers/arith-int-025.cvc      |      4 +
 .../regress0/arith/integers/arith-int-026.cvc      |     21 +
 .../regress0/arith/integers/arith-int-027.cvc      |     21 +
 .../regress0/arith/integers/arith-int-028.cvc      |     21 +
 .../regress0/arith/integers/arith-int-029.cvc      |     21 +
 .../regress0/arith/integers/arith-int-030.cvc      |     21 +
 .../regress0/arith/integers/arith-int-031.cvc      |     19 +
 .../regress0/arith/integers/arith-int-032.cvc      |     19 +
 .../regress0/arith/integers/arith-int-033.cvc      |     19 +
 .../regress0/arith/integers/arith-int-034.cvc      |     19 +
 .../regress0/arith/integers/arith-int-035.cvc      |     19 +
 .../regress0/arith/integers/arith-int-036.cvc      |     16 +
 .../regress0/arith/integers/arith-int-037.cvc      |     16 +
 .../regress0/arith/integers/arith-int-038.cvc      |     16 +
 .../regress0/arith/integers/arith-int-039.cvc      |     16 +
 .../regress0/arith/integers/arith-int-040.cvc      |     16 +
 .../regress0/arith/integers/arith-int-041.cvc      |      9 +
 .../regress0/arith/integers/arith-int-042.cvc      |      9 +
 .../regress0/arith/integers/arith-int-042.min.cvc  |      4 +
 .../regress0/arith/integers/arith-int-043.cvc      |      9 +
 .../regress0/arith/integers/arith-int-044.cvc      |     10 +
 .../regress0/arith/integers/arith-int-045.cvc      |      9 +
 .../regress0/arith/integers/arith-int-046.cvc      |      6 +
 .../regress0/arith/integers/arith-int-047.cvc      |      6 +
 .../regress0/arith/integers/arith-int-048.cvc      |      6 +
 .../regress0/arith/integers/arith-int-049.cvc      |      6 +
 .../regress0/arith/integers/arith-int-050.cvc      |      6 +
 .../regress0/arith/integers/arith-int-051.cvc      |     12 +
 .../regress0/arith/integers/arith-int-052.cvc      |     12 +
 .../regress0/arith/integers/arith-int-053.cvc      |     12 +
 .../regress0/arith/integers/arith-int-054.cvc      |     12 +
 .../regress0/arith/integers/arith-int-055.cvc      |     12 +
 .../regress0/arith/integers/arith-int-056.cvc      |     15 +
 .../regress0/arith/integers/arith-int-057.cvc      |     15 +
 .../regress0/arith/integers/arith-int-058.cvc      |     15 +
 .../regress0/arith/integers/arith-int-059.cvc      |     15 +
 .../regress0/arith/integers/arith-int-060.cvc      |     15 +
 .../regress0/arith/integers/arith-int-061.cvc      |     23 +
 .../regress0/arith/integers/arith-int-062.cvc      |     23 +
 .../regress0/arith/integers/arith-int-063.cvc      |     23 +
 .../regress0/arith/integers/arith-int-064.cvc      |     23 +
 .../regress0/arith/integers/arith-int-065.cvc      |     23 +
 .../regress0/arith/integers/arith-int-066.cvc      |     17 +
 .../regress0/arith/integers/arith-int-067.cvc      |     17 +
 .../regress0/arith/integers/arith-int-068.cvc      |     17 +
 .../regress0/arith/integers/arith-int-069.cvc      |     17 +
 .../regress0/arith/integers/arith-int-070.cvc      |     17 +
 .../regress0/arith/integers/arith-int-071.cvc      |     18 +
 .../regress0/arith/integers/arith-int-072.cvc      |     18 +
 .../regress0/arith/integers/arith-int-073.cvc      |     18 +
 .../regress0/arith/integers/arith-int-074.cvc      |     18 +
 .../regress0/arith/integers/arith-int-075.cvc      |     18 +
 .../regress0/arith/integers/arith-int-076.cvc      |     11 +
 .../regress0/arith/integers/arith-int-077.cvc      |     11 +
 .../regress0/arith/integers/arith-int-078.cvc      |     11 +
 .../regress0/arith/integers/arith-int-079.cvc      |     11 +
 .../regress0/arith/integers/arith-int-080.cvc      |     11 +
 .../regress0/arith/integers/arith-int-081.cvc      |      7 +
 .../regress0/arith/integers/arith-int-083.cvc      |      7 +
 .../regress0/arith/integers/arith-int-084.cvc      |      7 +
 .../regress0/arith/integers/arith-int-085.cvc      |      8 +
 .../regress0/arith/integers/arith-int-086.cvc      |     13 +
 .../regress0/arith/integers/arith-int-087.cvc      |     13 +
 .../regress0/arith/integers/arith-int-088.cvc      |     13 +
 .../regress0/arith/integers/arith-int-089.cvc      |     13 +
 .../regress0/arith/integers/arith-int-090.cvc      |     13 +
 .../regress0/arith/integers/arith-int-091.cvc      |     22 +
 .../regress0/arith/integers/arith-int-092.cvc      |     22 +
 .../regress0/arith/integers/arith-int-093.cvc      |     22 +
 .../regress0/arith/integers/arith-int-094.cvc      |     22 +
 .../regress0/arith/integers/arith-int-095.cvc      |     22 +
 .../regress0/arith/integers/arith-int-096.cvc      |      8 +
 .../regress0/arith/integers/arith-int-097.cvc      |      8 +
 .../regress0/arith/integers/arith-int-098.cvc      |      8 +
 .../regress0/arith/integers/arith-int-099.cvc      |      8 +
 .../regress0/arith/integers/arith-int-100.cvc      |      8 +
 test/regress/regress0/arith/leq.01.smt             |      6 +
 test/regress/regress0/arith/miplib-opt1217--27.smt |   4669 +
 .../regress0/arith/miplib-opt1217--27.smt.expect   |      2 +
 .../regress/regress0/arith/miplib-opt1217--27.smt2 |   1549 +
 test/regress/regress0/arith/miplib-pp08a-3000.smt  |   1427 +
 .../regress0/arith/miplib-pp08a-3000.smt.expect    |      2 +
 test/regress/regress0/arith/miplib-pp08a-3000.smt2 |    329 +
 test/regress/regress0/arith/miplib.cvc             |     28 +
 test/regress/regress0/arith/miplib2.cvc            |     32 +
 test/regress/regress0/arith/miplib3.cvc            |     33 +
 test/regress/regress0/arith/miplib4.cvc            |     15 +
 test/regress/regress0/arith/miplibtrick.smt        |     11 +
 test/regress/regress0/arith/mod.01.smt2            |     11 +
 test/regress/regress0/arith/mod.02.smt2            |     10 +
 test/regress/regress0/arith/mod.03.smt2            |     11 +
 test/regress/regress0/arith/mult.01.smt2           |     16 +
 test/regress/regress0/arith/mult.02.smt2           |     13 +
 test/regress/regress0/arrayinuf_declare.smt2       |      4 +
 test/regress/regress0/arrayinuf_error.smt2         |      8 +
 test/regress/regress0/arrays/Makefile.am           |     73 +
 test/regress/regress0/arrays/Makefile.in           |   1245 +
 test/regress/regress0/arrays/arrays0.smt2          |     22 +
 test/regress/regress0/arrays/arrays1.smt2          |     21 +
 test/regress/regress0/arrays/arrays2.smt2          |     21 +
 test/regress/regress0/arrays/arrays3.smt2          |     23 +
 test/regress/regress0/arrays/arrays4.smt2          |     23 +
 test/regress/regress0/arrays/bool-array.smt2       |     13 +
 test/regress/regress0/arrays/bug272.minimized.smt  |     32 +
 test/regress/regress0/arrays/bug272.smt            |    312 +
 test/regress/regress0/arrays/bug637.delta.smt2     |     14 +
 test/regress/regress0/arrays/constarr.cvc          |      7 +
 test/regress/regress0/arrays/constarr.smt2         |      9 +
 test/regress/regress0/arrays/constarr2.cvc         |      7 +
 test/regress/regress0/arrays/constarr2.smt2        |     10 +
 test/regress/regress0/arrays/constarr3.cvc         |     12 +
 test/regress/regress0/arrays/constarr3.smt2        |     16 +
 test/regress/regress0/arrays/incorrect1.smt        |    132 +
 test/regress/regress0/arrays/incorrect10.smt       |    275 +
 test/regress/regress0/arrays/incorrect11.smt       |     96 +
 .../regress0/arrays/incorrect2.minimized.smt       |     19 +
 test/regress/regress0/arrays/incorrect2.smt        |    350 +
 test/regress/regress0/arrays/incorrect3.smt        |    446 +
 test/regress/regress0/arrays/incorrect4.smt        |    170 +
 test/regress/regress0/arrays/incorrect5.smt        |    313 +
 test/regress/regress0/arrays/incorrect6.smt        |    265 +
 test/regress/regress0/arrays/incorrect7.smt        |     80 +
 .../regress0/arrays/incorrect8.minimized.smt       |     20 +
 test/regress/regress0/arrays/incorrect8.smt        |    491 +
 test/regress/regress0/arrays/incorrect9.smt        |    189 +
 test/regress/regress0/arrays/parsing_ringer.cvc    |     94 +
 .../arrays/swap_t1_np_nf_ai_00005_007.cvc.smt      |     23 +
 test/regress/regress0/arrays/x2.smt                |     17 +
 test/regress/regress0/arrays/x3.smt                |     46 +
 test/regress/regress0/aufbv/Makefile.am            |     79 +
 test/regress/regress0/aufbv/Makefile.in            |   1285 +
 test/regress/regress0/aufbv/array_rewrite_bug.smt  |     19 +
 test/regress/regress0/aufbv/bug00.smt              |     35 +
 test/regress/regress0/aufbv/bug338.smt2            |     14 +
 test/regress/regress0/aufbv/bug347.smt             |     11 +
 test/regress/regress0/aufbv/bug451.smt             |     67 +
 test/regress/regress0/aufbv/bug509.smt             |    117 +
 test/regress/regress0/aufbv/bug580.delta.smt2      |     10 +
 test/regress/regress0/aufbv/bug580.smt2            |    116 +
 test/regress/regress0/aufbv/diseqprop.01.smt       |     13 +
 .../regress0/aufbv/dubreva005ue.delta01.smt        |     33 +
 .../regress0/aufbv/fifo32bc06k08.delta01.smt       |     37 +
 test/regress/regress0/aufbv/fuzz00.smt             |    147 +
 test/regress/regress0/aufbv/fuzz01.delta01.smt     |     25 +
 test/regress/regress0/aufbv/fuzz01.smt             |    365 +
 test/regress/regress0/aufbv/fuzz02.delta01.smt     |     19 +
 test/regress/regress0/aufbv/fuzz02.smt             |    411 +
 test/regress/regress0/aufbv/fuzz03.delta01.smt     |     52 +
 test/regress/regress0/aufbv/fuzz03.smt             |    501 +
 test/regress/regress0/aufbv/fuzz04.delta01.smt     |     17 +
 test/regress/regress0/aufbv/fuzz04.smt             |    119 +
 test/regress/regress0/aufbv/fuzz05.delta01.smt     |     14 +
 test/regress/regress0/aufbv/fuzz05.smt             |     78 +
 test/regress/regress0/aufbv/fuzz06.delta01.smt     |     17 +
 test/regress/regress0/aufbv/fuzz06.smt             |    154 +
 test/regress/regress0/aufbv/fuzz07.smt             |    143 +
 test/regress/regress0/aufbv/fuzz08.smt             |    162 +
 test/regress/regress0/aufbv/fuzz09.smt             |    176 +
 test/regress/regress0/aufbv/fuzz11.smt             |    131 +
 test/regress/regress0/aufbv/fuzz12.smt             |    181 +
 test/regress/regress0/aufbv/fuzz13.smt             |     90 +
 test/regress/regress0/aufbv/fuzz14.smt             |     67 +
 test/regress/regress0/aufbv/fuzz15.smt             |    103 +
 test/regress/regress0/aufbv/rewrite_bug.smt        |     28 +
 ...ns_fse-bfs_tac.calc_next.il.fse-bfs.delta01.smt |     48 +
 ...ctions_wp_su.set_char_quoting.il.wp.delta01.smt |     28 +
 .../regress0/aufbv/wchains010ue.delta01.smt        |     36 +
 .../regress0/aufbv/wchains010ue.delta02.smt        |     35 +
 test/regress/regress0/auflia/Makefile.am           |     52 +
 test/regress/regress0/auflia/Makefile.in           |   1077 +
 test/regress/regress0/auflia/a17.smt               |     21 +
 test/regress/regress0/auflia/bug336.smt2           |     19 +
 test/regress/regress0/auflia/error72.delta2.smt    |     12 +
 test/regress/regress0/auflia/fuzz-error1099.smt    |   1126 +
 test/regress/regress0/auflia/fuzz-error232.smt     |    508 +
 test/regress/regress0/auflia/fuzz01.delta01.smt    |     45 +
 test/regress/regress0/auflia/fuzz02.smt            |    244 +
 test/regress/regress0/auflia/fuzz03.smt            |     15 +
 test/regress/regress0/auflia/fuzz04.smt            |     15 +
 test/regress/regress0/auflia/fuzz05.smt            |    183 +
 test/regress/regress0/auflia/x2.smt                |     28 +
 test/regress/regress0/boolean-prec.cvc             |      6 +
 test/regress/regress0/boolean-terms-bug-array.smt2 |      9 +
 test/regress/regress0/boolean-terms-kernel1.smt2   |     13 +
 test/regress/regress0/boolean-terms-kernel2.smt2   |     19 +
 test/regress/regress0/boolean-terms.cvc            |     15 +
 test/regress/regress0/boolean.cvc                  |    806 +
 test/regress/regress0/bt-test-00.smt2              |     21 +
 test/regress/regress0/bt-test-01.smt2              |     26 +
 test/regress/regress0/bug161.smt                   |     12 +
 test/regress/regress0/bug164.smt                   |     13 +
 test/regress/regress0/bug167.smt                   |     19 +
 test/regress/regress0/bug168.smt                   |      9 +
 test/regress/regress0/bug187.smt2                  |      8 +
 test/regress/regress0/bug216.smt2                  |      8 +
 test/regress/regress0/bug216.smt2.expect           |      3 +
 test/regress/regress0/bug217.smt2                  |     13 +
 test/regress/regress0/bug220.smt2                  |      2 +
 test/regress/regress0/bug239.smt                   |    185 +
 test/regress/regress0/bug274.cvc                   |     64 +
 test/regress/regress0/bug288.smt                   |      8 +
 test/regress/regress0/bug288b.smt                  |      8 +
 test/regress/regress0/bug288c.smt                  |      9 +
 test/regress/regress0/bug296.smt2                  |   1696 +
 test/regress/regress0/bug303.smt2                  |     23 +
 test/regress/regress0/bug310.cvc                   |      4 +
 test/regress/regress0/bug32.cvc                    |      6 +
 test/regress/regress0/bug322.cvc                   |     22 +
 test/regress/regress0/bug322b.cvc                  |     11 +
 test/regress/regress0/bug339.smt2                  |     15 +
 test/regress/regress0/bug365.smt2                  |      9 +
 test/regress/regress0/bug382.smt2                  |     14 +
 test/regress/regress0/bug383.smt2                  |      8 +
 test/regress/regress0/bug398.smt2                  |      3 +
 test/regress/regress0/bug421.smt2                  |     10 +
 test/regress/regress0/bug421b.smt2                 |     14 +
 test/regress/regress0/bug480.smt2                  |     10 +
 test/regress/regress0/bug484.smt2                  |    111 +
 test/regress/regress0/bug486.cvc                   |     28 +
 test/regress/regress0/bug49.smt                    |     67 +
 test/regress/regress0/bug507.smt2                  |     78 +
 test/regress/regress0/bug512.minimized.smt2        |      8 +
 test/regress/regress0/bug512.smt2                  |    146 +
 test/regress/regress0/bug516.smt2                  |     15 +
 test/regress/regress0/bug520.smt2                  |    173 +
 test/regress/regress0/bug521.minimized.smt2        |     15 +
 test/regress/regress0/bug522.smt2                  |     14 +
 test/regress/regress0/bug528a.smt2                 |      8 +
 test/regress/regress0/bug541.smt2                  |      6 +
 test/regress/regress0/bug543.smt2                  |     20 +
 test/regress/regress0/bug544.smt2                  |     10 +
 test/regress/regress0/bug548a.smt2                 |     17 +
 test/regress/regress0/bug567.smt2                  |     48 +
 test/regress/regress0/bug576.smt2                  |     27 +
 test/regress/regress0/bug576a.smt2                 |     48 +
 test/regress/regress0/bug578.smt2                  |      7 +
 test/regress/regress0/bug585.cvc                   |      9 +
 test/regress/regress0/bug586.cvc                   |     26 +
 test/regress/regress0/bug590.smt2.expect           |      2 +
 test/regress/regress0/bug593.smt2                  |     20 +
 test/regress/regress0/bug595.cvc                   |      7 +
 test/regress/regress0/bug596.cvc                   |      7 +
 test/regress/regress0/bug596b.cvc                  |      7 +
 test/regress/regress0/bug605.cvc                   |     30 +
 test/regress/regress0/buggy-ite.smt2               |     13 +
 test/regress/regress0/bv/Makefile.am               |    134 +
 test/regress/regress0/bv/Makefile.in               |   1842 +
 test/regress/regress0/bv/bug260a.smt               |     12 +
 test/regress/regress0/bv/bug260b.smt               |     12 +
 test/regress/regress0/bv/bug440.smt                |     97 +
 test/regress/regress0/bv/bug734.smt2               |      9 +
 .../regress0/bv/bug_extract_mult_leading_bit.smt2  |      7 +
 test/regress/regress0/bv/bv-int-collapse1.smt2     |      7 +
 test/regress/regress0/bv/bv-int-collapse2-sat.smt2 |      8 +
 test/regress/regress0/bv/bv-int-collapse2.smt2     |      7 +
 test/regress/regress0/bv/bv2nat-ground-c.smt2      |     17 +
 test/regress/regress0/bv/bv2nat-ground.smt2        |     18 +
 test/regress/regress0/bv/bv2nat-simp-range.smt2    |      7 +
 test/regress/regress0/bv/bvcomp.cvc                |      5 +
 test/regress/regress0/bv/bvsimple.cvc              |     46 +
 ...calc2_sec2_shifter_mult_bmc15.atlas.delta01.smt |     80 +
 test/regress/regress0/bv/cmu-rdk-3.smt2            |      9 +
 test/regress/regress0/bv/core/Makefile.am          |     96 +
 test/regress/regress0/bv/core/Makefile.in          |   1499 +
 test/regress/regress0/bv/core/a78test0002.smt      |     19 +
 test/regress/regress0/bv/core/a95test0002.smt      |     17 +
 test/regress/regress0/bv/core/bitvec0.smt          |     24 +
 test/regress/regress0/bv/core/bitvec2.smt          |     15 +
 test/regress/regress0/bv/core/bitvec5.smt          |     19 +
 test/regress/regress0/bv/core/bitvec7.smt          |     16 +
 test/regress/regress0/bv/core/bv_eq_diamond10.smt  |     33 +
 test/regress/regress0/bv/core/concat-merge-0.smt   |      7 +
 test/regress/regress0/bv/core/concat-merge-1.smt   |      7 +
 test/regress/regress0/bv/core/concat-merge-2.smt   |      7 +
 test/regress/regress0/bv/core/concat-merge-3.smt   |      7 +
 test/regress/regress0/bv/core/equality-00.smt      |     10 +
 test/regress/regress0/bv/core/equality-01.smt      |     12 +
 test/regress/regress0/bv/core/equality-02.smt      |     20 +
 test/regress/regress0/bv/core/equality-05.smt      |     11 +
 test/regress/regress0/bv/core/extract-concat-0.smt |      8 +
 test/regress/regress0/bv/core/extract-concat-1.smt |      8 +
 .../regress/regress0/bv/core/extract-concat-10.smt |      8 +
 .../regress/regress0/bv/core/extract-concat-11.smt |      8 +
 test/regress/regress0/bv/core/extract-concat-2.smt |      8 +
 test/regress/regress0/bv/core/extract-concat-3.smt |      8 +
 test/regress/regress0/bv/core/extract-concat-4.smt |      8 +
 test/regress/regress0/bv/core/extract-concat-5.smt |      8 +
 test/regress/regress0/bv/core/extract-concat-6.smt |      8 +
 test/regress/regress0/bv/core/extract-concat-7.smt |      8 +
 test/regress/regress0/bv/core/extract-concat-8.smt |      8 +
 test/regress/regress0/bv/core/extract-concat-9.smt |      8 +
 test/regress/regress0/bv/core/extract-constant.smt |      6 +
 .../regress/regress0/bv/core/extract-extract-0.smt |      7 +
 .../regress/regress0/bv/core/extract-extract-1.smt |      7 +
 .../regress0/bv/core/extract-extract-10.smt        |      7 +
 .../regress0/bv/core/extract-extract-11.smt        |      7 +
 .../regress/regress0/bv/core/extract-extract-2.smt |      7 +
 .../regress/regress0/bv/core/extract-extract-3.smt |      7 +
 .../regress/regress0/bv/core/extract-extract-4.smt |      7 +
 .../regress/regress0/bv/core/extract-extract-5.smt |      7 +
 .../regress/regress0/bv/core/extract-extract-6.smt |      7 +
 .../regress/regress0/bv/core/extract-extract-7.smt |      7 +
 .../regress/regress0/bv/core/extract-extract-8.smt |      7 +
 .../regress/regress0/bv/core/extract-extract-9.smt |      7 +
 test/regress/regress0/bv/core/extract-whole-0.smt  |      7 +
 test/regress/regress0/bv/core/extract-whole-1.smt  |      7 +
 test/regress/regress0/bv/core/extract-whole-2.smt  |      7 +
 test/regress/regress0/bv/core/extract-whole-3.smt  |      7 +
 test/regress/regress0/bv/core/extract-whole-4.smt  |      7 +
 test/regress/regress0/bv/core/slice-01.smt         |      9 +
 test/regress/regress0/bv/core/slice-02.smt         |      9 +
 test/regress/regress0/bv/core/slice-03.smt         |     12 +
 test/regress/regress0/bv/core/slice-04.smt         |     18 +
 test/regress/regress0/bv/core/slice-05.smt         |     18 +
 test/regress/regress0/bv/core/slice-06.smt         |     18 +
 test/regress/regress0/bv/core/slice-07.smt         |      7 +
 test/regress/regress0/bv/core/slice-08.smt         |      7 +
 test/regress/regress0/bv/core/slice-09.smt         |      7 +
 test/regress/regress0/bv/core/slice-10.smt         |      8 +
 test/regress/regress0/bv/core/slice-11.smt         |      7 +
 test/regress/regress0/bv/core/slice-12.smt         |     13 +
 test/regress/regress0/bv/core/slice-13.smt         |     13 +
 test/regress/regress0/bv/core/slice-14.smt         |      8 +
 test/regress/regress0/bv/core/slice-15.smt         |      8 +
 test/regress/regress0/bv/core/slice-16.smt         |      8 +
 test/regress/regress0/bv/core/slice-17.smt         |     11 +
 test/regress/regress0/bv/core/slice-18.smt         |     11 +
 test/regress/regress0/bv/core/slice-19.smt         |     11 +
 test/regress/regress0/bv/core/slice-20.smt         |     16 +
 test/regress/regress0/bv/divtest.smt2              |     53 +
 test/regress/regress0/bv/fuzz01.smt                |    183 +
 test/regress/regress0/bv/fuzz02.delta01.smt        |     18 +
 test/regress/regress0/bv/fuzz02.smt                |    122 +
 test/regress/regress0/bv/fuzz03.smt                |     81 +
 test/regress/regress0/bv/fuzz04.smt                |    249 +
 test/regress/regress0/bv/fuzz05.smt                |    282 +
 test/regress/regress0/bv/fuzz06.smt                |    218 +
 test/regress/regress0/bv/fuzz07.smt                |    395 +
 test/regress/regress0/bv/fuzz08.smt                |     19 +
 test/regress/regress0/bv/fuzz09.smt                |    370 +
 test/regress/regress0/bv/fuzz10.smt                |      7 +
 test/regress/regress0/bv/fuzz11.smt                |     15 +
 test/regress/regress0/bv/fuzz12.smt                |     57 +
 test/regress/regress0/bv/fuzz13.smt                |     23 +
 test/regress/regress0/bv/fuzz14.smt                |     43 +
 test/regress/regress0/bv/fuzz16.delta01.smt        |     69 +
 test/regress/regress0/bv/fuzz17.delta01.smt        |    105 +
 test/regress/regress0/bv/fuzz18.delta01.smt        |    117 +
 test/regress/regress0/bv/fuzz18.delta02.smt        |    115 +
 test/regress/regress0/bv/fuzz18.delta03.smt        |     35 +
 test/regress/regress0/bv/fuzz18.smt                |   1426 +
 test/regress/regress0/bv/fuzz19.delta01.smt        |    129 +
 test/regress/regress0/bv/fuzz19.smt                |   1641 +
 test/regress/regress0/bv/fuzz20.delta01.smt        |     18 +
 test/regress/regress0/bv/fuzz20.smt                |    191 +
 test/regress/regress0/bv/fuzz21.delta01.smt        |     11 +
 test/regress/regress0/bv/fuzz21.smt                |    438 +
 test/regress/regress0/bv/fuzz22.delta01.smt        |     58 +
 test/regress/regress0/bv/fuzz22.smt                |    158 +
 test/regress/regress0/bv/fuzz23.delta01.smt        |     13 +
 test/regress/regress0/bv/fuzz23.smt                |    215 +
 test/regress/regress0/bv/fuzz24.delta01.smt        |     15 +
 test/regress/regress0/bv/fuzz24.smt                |    203 +
 test/regress/regress0/bv/fuzz25.delta01.smt        |     17 +
 test/regress/regress0/bv/fuzz25.smt                |    356 +
 test/regress/regress0/bv/fuzz26.delta01.smt        |     24 +
 test/regress/regress0/bv/fuzz26.smt                |    729 +
 test/regress/regress0/bv/fuzz27.delta01.smt        |     15 +
 test/regress/regress0/bv/fuzz27.smt                |    143 +
 test/regress/regress0/bv/fuzz28.delta01.smt        |     13 +
 test/regress/regress0/bv/fuzz28.smt                |    363 +
 test/regress/regress0/bv/fuzz29.delta01.smt        |     54 +
 test/regress/regress0/bv/fuzz29.smt                |     98 +
 test/regress/regress0/bv/fuzz30.delta01.smt        |     11 +
 test/regress/regress0/bv/fuzz30.smt                |     72 +
 test/regress/regress0/bv/fuzz31.delta01.smt        |     19 +
 test/regress/regress0/bv/fuzz31.smt                |    418 +
 test/regress/regress0/bv/fuzz32.delta01.smt        |     23 +
 test/regress/regress0/bv/fuzz32.smt                |   1014 +
 test/regress/regress0/bv/fuzz33.delta01.smt        |     13 +
 test/regress/regress0/bv/fuzz33.smt                |    118 +
 test/regress/regress0/bv/fuzz34.delta01.smt        |     22 +
 test/regress/regress0/bv/fuzz35.delta01.smt        |     14 +
 test/regress/regress0/bv/fuzz35.smt                |    304 +
 test/regress/regress0/bv/fuzz36.delta01.smt        |     47 +
 test/regress/regress0/bv/fuzz36.smt                |    274 +
 test/regress/regress0/bv/fuzz37.delta01.smt        |     17 +
 test/regress/regress0/bv/fuzz37.smt                |    122 +
 test/regress/regress0/bv/fuzz38.delta01.smt        |     20 +
 test/regress/regress0/bv/fuzz39.delta01.smt        |     18 +
 test/regress/regress0/bv/fuzz39.smt                |    119 +
 test/regress/regress0/bv/fuzz40.delta01.smt        |     12 +
 test/regress/regress0/bv/fuzz40.smt                |     85 +
 test/regress/regress0/bv/fuzz41.smt                |    212 +
 test/regress/regress0/bv/sizecheck.cvc             |      6 +
 test/regress/regress0/bv/smtcompbug.smt            |     13 +
 test/regress/regress0/bv/test00.smt                |     49 +
 test/regress/regress0/bv/unsound1-reduced.smt2     |     11 +
 test/regress/regress0/bv/unsound1.smt2             |     23 +
 test/regress/regress0/chained-equality.smt2        |     10 +
 test/regress/regress0/constant-rewrite.smt         |     12 +
 test/regress/regress0/cvc3.userdoc.01.cvc          |     31 +
 test/regress/regress0/cvc3.userdoc.02.cvc          |      7 +
 test/regress/regress0/cvc3.userdoc.03.cvc          |      8 +
 test/regress/regress0/cvc3.userdoc.04.cvc          |      9 +
 test/regress/regress0/cvc3.userdoc.05.cvc          |     14 +
 test/regress/regress0/cvc3.userdoc.06.cvc          |     13 +
 test/regress/regress0/datatypes/Makefile.am        |    103 +
 test/regress/regress0/datatypes/Makefile.in        |   1572 +
 test/regress/regress0/datatypes/Test1-tup-mp.cvc   |     10 +
 .../regress0/datatypes/boolean-equality.cvc        |      7 +
 .../regress0/datatypes/boolean-terms-datatype.cvc  |     11 +
 .../boolean-terms-parametric-datatype-1.cvc        |     12 +
 .../boolean-terms-parametric-datatype-2.cvc        |     12 +
 .../regress0/datatypes/boolean-terms-record.cvc    |      7 +
 .../regress0/datatypes/boolean-terms-rewrite.cvc   |      7 +
 .../regress0/datatypes/boolean-terms-tuple.cvc     |      7 +
 test/regress/regress0/datatypes/bug286.cvc         |      5 +
 test/regress/regress0/datatypes/bug438.cvc         |      5 +
 test/regress/regress0/datatypes/bug438b.cvc        |      6 +
 test/regress/regress0/datatypes/bug597-rbt.smt2    |     12 +
 test/regress/regress0/datatypes/bug604.smt2        |      9 +
 test/regress/regress0/datatypes/bug625.smt2        |     13 +
 .../regress0/datatypes/cdt-model-cade15.smt2       |     17 +
 .../regress0/datatypes/cdt-non-canon-stream.smt2   |     11 +
 .../regress0/datatypes/coda_simp_model.smt2        |     12 +
 .../regress0/datatypes/conqueue-dt-enum-iloop.smt2 |     75 +
 test/regress/regress0/datatypes/datatype-dump.cvc  |     19 +
 test/regress/regress0/datatypes/datatype.cvc       |      7 +
 test/regress/regress0/datatypes/datatype0.cvc      |      7 +
 test/regress/regress0/datatypes/datatype1.cvc      |     10 +
 test/regress/regress0/datatypes/datatype13.cvc     |     43 +
 test/regress/regress0/datatypes/datatype2.cvc      |     16 +
 test/regress/regress0/datatypes/datatype4.cvc      |      9 +
 .../datatypes/dt-param-card4-bool-sat.smt2         |     11 +
 .../regress0/datatypes/dt-param-card4-unsat.smt2   |     14 +
 test/regress/regress0/datatypes/empty_tuprec.cvc   |     21 +
 test/regress/regress0/datatypes/error.cvc          |      7 +
 .../regress0/datatypes/example-dailler-min.smt2    |      7 +
 test/regress/regress0/datatypes/is_test.smt2       |      6 +
 .../regress0/datatypes/mutually-recursive.cvc      |     14 +
 test/regress/regress0/datatypes/pair-bool-bool.cvc |     10 +
 .../regress/regress0/datatypes/pair-real-bool.smt2 |     25 +
 test/regress/regress0/datatypes/rec1.cvc           |      7 +
 test/regress/regress0/datatypes/rec2.cvc           |     11 +
 test/regress/regress0/datatypes/rec4.cvc           |     10 +
 test/regress/regress0/datatypes/rec5.cvc           |    204 +
 test/regress/regress0/datatypes/rewriter.cvc       |     12 +
 test/regress/regress0/datatypes/sc-cdt1.smt2       |     19 +
 .../regress0/datatypes/some-boolean-tests.cvc      |     11 +
 .../regress0/datatypes/stream-singleton.smt2       |     11 +
 test/regress/regress0/datatypes/tenum-bug.smt2     |     11 +
 test/regress/regress0/datatypes/tuple-model.cvc    |      5 +
 .../regress0/datatypes/tuple-record-bug.cvc        |     20 +
 test/regress/regress0/datatypes/tuple.cvc          |     10 +
 .../regress/regress0/datatypes/typed_v10l30054.cvc |     43 +
 test/regress/regress0/datatypes/typed_v1l80005.cvc |     21 +
 test/regress/regress0/datatypes/typed_v2l30079.cvc |     19 +
 test/regress/regress0/datatypes/typed_v3l20092.cvc |     21 +
 test/regress/regress0/datatypes/typed_v5l30069.cvc |     28 +
 test/regress/regress0/datatypes/v10l40099.cvc      |     44 +
 test/regress/regress0/datatypes/v2l40025.cvc       |     20 +
 test/regress/regress0/datatypes/v3l60006.cvc       |     25 +
 test/regress/regress0/datatypes/v5l30058.cvc       |     28 +
 test/regress/regress0/datatypes/wrong-sel-simp.cvc |      6 +
 test/regress/regress0/decision/Makefile.am         |     77 +
 test/regress/regress0/decision/Makefile.in         |   1152 +
 test/regress/regress0/decision/aufbv-fuzz01.smt    |    365 +
 .../regress0/decision/aufbv-fuzz01.smt.expect      |      2 +
 test/regress/regress0/decision/bitvec0.delta01.smt |     20 +
 .../regress0/decision/bitvec0.delta01.smt.expect   |      2 +
 test/regress/regress0/decision/bitvec0.smt         |     24 +
 test/regress/regress0/decision/bitvec0.smt.expect  |      2 +
 test/regress/regress0/decision/bitvec5.smt         |     19 +
 test/regress/regress0/decision/bitvec5.smt.expect  |      2 +
 test/regress/regress0/decision/bug347.smt          |     11 +
 test/regress/regress0/decision/bug347.smt.expect   |      2 +
 test/regress/regress0/decision/bug374a.smt         |   1197 +
 test/regress/regress0/decision/bug374a.smt.expect  |      2 +
 test/regress/regress0/decision/bug374b.smt2        |     14 +
 test/regress/regress0/decision/bug374b.smt2.expect |      2 +
 .../regress/regress0/decision/error122.delta01.smt |     19 +
 test/regress/regress0/decision/error122.smt        |     53 +
 test/regress/regress0/decision/error20.delta01.smt |     19 +
 test/regress/regress0/decision/error20.smt         |     66 +
 test/regress/regress0/decision/error3.delta01.smt  |     32 +
 test/regress/regress0/decision/just_sat.expect     |      2 +
 test/regress/regress0/decision/just_unsat.expect   |      2 +
 .../regress0/decision/pp-regfile.delta01.smt       |     35 +
 .../decision/pp-regfile.delta01.smt.expect         |      2 +
 .../regress0/decision/pp-regfile.delta02.smt       |     34 +
 .../decision/pp-regfile.delta02.smt.expect         |      2 +
 .../regress0/decision/quant-Arrays_Q1-noinfer.smt2 |     73 +
 .../decision/quant-Arrays_Q1-noinfer.smt2.expect   |      2 +
 .../quant-ex1.disable_miniscope.smt2.expect        |      3 +
 test/regress/regress0/decision/quant-ex1.smt2      |     12 +
 .../regress0/decision/quant-ex1.smt2.expect        |      2 +
 .../decision/quant-symmetric_unsat_7.smt2.expect   |      2 +
 .../decision/uflia-xs-09-16-3-4-1-5.delta03.smt    |     45 +
 .../uflia-xs-09-16-3-4-1-5.delta03.smt.expect      |      2 +
 .../regress0/decision/wchains010ue.delta02.smt     |     35 +
 .../decision/wchains010ue.delta02.smt.expect       |      2 +
 .../regress0/decision/wchains010ue.smt.expect      |      2 +
 test/regress/regress0/declare-funs.smt2            |      5 +
 test/regress/regress0/distinct.smt                 |      5 +
 test/regress/regress0/error.cvc                    |      8 +
 test/regress/regress0/errorcrash.smt2              |      9 +
 test/regress/regress0/expect/Makefile.am           |     44 +
 test/regress/regress0/expect/Makefile.in           |   1227 +
 test/regress/regress0/expect/README                |      1 +
 test/regress/regress0/expect/scrub.01.smt          |      7 +
 test/regress/regress0/expect/scrub.01.smt.expect   |      6 +
 test/regress/regress0/expect/scrub.02.smt          |     13 +
 test/regress/regress0/expect/scrub.03.smt2         |      9 +
 test/regress/regress0/expect/scrub.03.smt2.expect  |      6 +
 test/regress/regress0/expect/scrub.04.smt2         |     15 +
 test/regress/regress0/expect/scrub.06.cvc          |      9 +
 test/regress/regress0/expect/scrub.07.sy           |      7 +
 test/regress/regress0/expect/scrub.07.sy.expect    |      6 +
 test/regress/regress0/expect/scrub.08.sy           |     13 +
 test/regress/regress0/expect/scrub.09.p            |     11 +
 test/regress/regress0/flet.smt                     |      5 +
 test/regress/regress0/flet2.smt                    |      5 +
 test/regress/regress0/fmf/ALG008-1.smt2            |     72 +
 .../regress0/fmf/Arrow_Order-smtlib.778341.smt     |    264 +
 test/regress/regress0/fmf/Hoare-z3.931718.smt      |     49 +
 .../regress0/fmf/LeftistHeap.scala-8-ncm.smt2      |     33 +
 test/regress/regress0/fmf/Makefile.am              |     93 +
 test/regress/regress0/fmf/Makefile.in              |   1389 +
 test/regress/regress0/fmf/PUZ001+1.smt2            |    118 +
 test/regress/regress0/fmf/QEpres-uf.855035.smt     |     84 +
 test/regress/regress0/fmf/agree466.smt2            |    474 +
 test/regress/regress0/fmf/agree467.smt2            |    341 +
 test/regress/regress0/fmf/am-bad-model.cvc         |     22 +
 test/regress/regress0/fmf/array_card.smt2          |     17 +
 test/regress/regress0/fmf/bound-int-alt.smt2       |     18 +
 test/regress/regress0/fmf/bounded_sets.smt2        |     18 +
 test/regress/regress0/fmf/bug0909.smt2             |     54 +
 test/regress/regress0/fmf/bug651.smt2              |     43 +
 test/regress/regress0/fmf/bug652.smt2              |     22 +
 .../regress0/fmf/bug723-irrelevant-funs.smt2       |     52 +
 test/regress/regress0/fmf/bug764.smt2              |     28 +
 test/regress/regress0/fmf/bug782.smt2              |     24 +
 test/regress/regress0/fmf/cons-sets-bounds.smt2    |     26 +
 .../regress0/fmf/datatypes-ufinite-nested.smt2     |     17 +
 test/regress/regress0/fmf/datatypes-ufinite.smt2   |     17 +
 test/regress/regress0/fmf/dt-proper-model.smt2     |     16 +
 test/regress/regress0/fmf/fc-pigeonhole19.smt2     |     20 +
 test/regress/regress0/fmf/fc-simple.smt2           |     12 +
 test/regress/regress0/fmf/fc-unsat-pent.smt2       |     20 +
 test/regress/regress0/fmf/fc-unsat-tot-2.smt2      |     14 +
 test/regress/regress0/fmf/fd-false.smt2            |      6 +
 test/regress/regress0/fmf/fib-core.smt2            |     19 +
 test/regress/regress0/fmf/fmc_unsound_model.smt2   |     27 +
 test/regress/regress0/fmf/fmf-bound-2dim.smt2      |     15 +
 test/regress/regress0/fmf/fmf-bound-int.smt2       |      7 +
 .../regress/regress0/fmf/fmf-strange-bounds-2.smt2 |     24 +
 test/regress/regress0/fmf/fmf-strange-bounds.smt2  |     35 +
 test/regress/regress0/fmf/forall_unit_data2.smt2   |      8 +
 test/regress/regress0/fmf/fore19-exp2-core.smt2    |     70 +
 test/regress/regress0/fmf/german169.smt2           |    103 +
 test/regress/regress0/fmf/german73.smt2            |    105 +
 test/regress/regress0/fmf/jasmin-cdt-crash.smt2    |    100 +
 test/regress/regress0/fmf/ko-bound-set.cvc         |     10 +
 test/regress/regress0/fmf/krs-sat.smt2             |     16 +
 test/regress/regress0/fmf/loopy_coda.smt2          |     38 +
 test/regress/regress0/fmf/lst-no-self-rev-exp.smt2 |     35 +
 .../regress/regress0/fmf/memory_model-R_cpp-dd.cvc |     52 +
 test/regress/regress0/fmf/nun-0208-to.smt2         |    180 +
 test/regress/regress0/fmf/refcount24.cvc.smt2      |     37 +
 test/regress/regress0/fmf/sc-crash-052316.smt2     |     35 +
 test/regress/regress0/fmf/sc_bad_model_1221.smt2   |     33 +
 test/regress/regress0/fmf/syn002-si-real-int.smt2  |     11 +
 test/regress/regress0/fmf/tail_rec.smt2            |     11 +
 test/regress/regress0/fmf/with-ind-104-core.smt2   |     33 +
 test/regress/regress0/fuzz_1.smt                   |     32 +
 test/regress/regress0/fuzz_3.smt                   |     46 +
 test/regress/regress0/get-value-incremental.smt2   |     13 +
 test/regress/regress0/get-value-ints.smt2          |     19 +
 test/regress/regress0/get-value-reals-ints.smt2    |     27 +
 test/regress/regress0/get-value-reals.smt2         |     22 +
 test/regress/regress0/hole6.cvc                    |    179 +
 test/regress/regress0/hung10_itesdk_output1.smt2   |     30 +
 test/regress/regress0/hung10_itesdk_output2.smt2   |     30 +
 test/regress/regress0/hung13sdk_output1.smt2       |     14 +
 test/regress/regress0/hung13sdk_output2.smt2       |     14 +
 test/regress/regress0/ineq_basic.smt               |      9 +
 test/regress/regress0/ineq_slack.smt               |     11 +
 test/regress/regress0/ite.cvc                      |      3 +
 test/regress/regress0/ite2.smt2                    |      6 +
 test/regress/regress0/ite3.smt2                    |      8 +
 test/regress/regress0/ite4.smt2                    |      8 +
 test/regress/regress0/ite5.smt2                    |      8 +
 test/regress/regress0/ite_real_int_type.smt        |      8 +
 test/regress/regress0/ite_real_valid.smt           |      8 +
 test/regress/regress0/lemmas/Makefile.am           |     41 +
 test/regress/regress0/lemmas/Makefile.in           |   1194 +
 .../clocksynchro_5clocks.main_invar.base.model.smt |    533 +
 .../regress0/lemmas/fs_not_sc_seen.induction.smt   |     72 +
 .../regress0/lemmas/mode_cntrl.induction.smt       |     72 +
 .../lemmas/sc_init_frame_gap.induction.smt         |     72 +
 test/regress/regress0/let.cvc                      |      7 +
 test/regress/regress0/let.smt                      |      6 +
 test/regress/regress0/let2.smt                     |      5 +
 test/regress/regress0/logops.01.cvc                |      3 +
 test/regress/regress0/logops.02.cvc                |      3 +
 test/regress/regress0/logops.03.cvc                |      3 +
 test/regress/regress0/logops.04.cvc                |      3 +
 test/regress/regress0/logops.05.cvc                |      4 +
 test/regress/regress0/parallel-let.smt2            |      9 +
 test/regress/regress0/parser/Makefile.am           |     45 +
 test/regress/regress0/parser/Makefile.in           |   1021 +
 test/regress/regress0/parser/constraint.smt2       |      5 +
 .../regress0/parser/declarefun-emptyset-uf.smt2    |      7 +
 test/regress/regress0/parser/strings20.smt2        |     15 +
 test/regress/regress0/parser/strings25.smt2        |     15 +
 test/regress/regress0/precedence/Makefile.am       |     59 +
 test/regress/regress0/precedence/Makefile.in       |   1133 +
 test/regress/regress0/precedence/and-not.cvc       |      6 +
 test/regress/regress0/precedence/and-xor.cvc       |      6 +
 test/regress/regress0/precedence/bool-cmp.cvc      |      6 +
 test/regress/regress0/precedence/cmp-plus.cvc      |      7 +
 test/regress/regress0/precedence/eq-fun.cvc        |      8 +
 test/regress/regress0/precedence/iff-assoc.cvc     |      6 +
 test/regress/regress0/precedence/iff-implies.cvc   |      6 +
 test/regress/regress0/precedence/implies-assoc.cvc |      6 +
 test/regress/regress0/precedence/implies-iff.cvc   |      6 +
 test/regress/regress0/precedence/implies-or.cvc    |      6 +
 test/regress/regress0/precedence/not-and.cvc       |      6 +
 test/regress/regress0/precedence/not-eq.cvc        |      6 +
 test/regress/regress0/precedence/or-implies.cvc    |      6 +
 test/regress/regress0/precedence/or-xor.cvc        |      7 +
 test/regress/regress0/precedence/plus-mult.cvc     |      7 +
 test/regress/regress0/precedence/xor-and.cvc       |      6 +
 test/regress/regress0/precedence/xor-assoc.cvc     |      6 +
 test/regress/regress0/precedence/xor-or.cvc        |      6 +
 test/regress/regress0/preprocess/Makefile.am       |     62 +
 test/regress/regress0/preprocess/Makefile.in       |   1300 +
 test/regress/regress0/preprocess/preprocess_00.cvc |      9 +
 test/regress/regress0/preprocess/preprocess_01.cvc |     11 +
 test/regress/regress0/preprocess/preprocess_02.cvc |      9 +
 test/regress/regress0/preprocess/preprocess_03.cvc |     10 +
 test/regress/regress0/preprocess/preprocess_04.cvc |     15 +
 test/regress/regress0/preprocess/preprocess_05.cvc |     15 +
 test/regress/regress0/preprocess/preprocess_06.cvc |     14 +
 test/regress/regress0/preprocess/preprocess_07.cvc |     10 +
 test/regress/regress0/preprocess/preprocess_08.cvc |     10 +
 test/regress/regress0/preprocess/preprocess_09.cvc |     14 +
 test/regress/regress0/preprocess/preprocess_10.cvc |     11 +
 test/regress/regress0/preprocess/preprocess_11.cvc |     10 +
 test/regress/regress0/preprocess/preprocess_12.cvc |     11 +
 test/regress/regress0/preprocess/preprocess_13.cvc |      9 +
 test/regress/regress0/preprocess/preprocess_14.cvc |     11 +
 test/regress/regress0/preprocess/preprocess_15.cvc |     11 +
 test/regress/regress0/print_lambda.cvc             |      9 +
 test/regress/regress0/push-pop/Makefile.am         |     65 +
 test/regress/regress0/push-pop/Makefile.in         |   1345 +
 test/regress/regress0/push-pop/arith/Makefile.am   |     62 +
 test/regress/regress0/push-pop/arith/Makefile.in   |   1333 +
 test/regress/regress0/push-pop/arith/fuzz_3_1.smt2 |     31 +
 .../regress/regress0/push-pop/arith/fuzz_3_10.smt2 |     22 +
 .../regress/regress0/push-pop/arith/fuzz_3_11.smt2 |     40 +
 .../regress/regress0/push-pop/arith/fuzz_3_12.smt2 |     49 +
 .../regress/regress0/push-pop/arith/fuzz_3_13.smt2 |     48 +
 .../regress/regress0/push-pop/arith/fuzz_3_14.smt2 |     34 +
 .../regress/regress0/push-pop/arith/fuzz_3_15.smt2 |     35 +
 test/regress/regress0/push-pop/arith/fuzz_3_2.smt2 |     34 +
 test/regress/regress0/push-pop/arith/fuzz_3_3.smt2 |     27 +
 test/regress/regress0/push-pop/arith/fuzz_3_4.smt2 |     35 +
 test/regress/regress0/push-pop/arith/fuzz_3_5.smt2 |     37 +
 test/regress/regress0/push-pop/arith/fuzz_3_6.smt2 |     36 +
 test/regress/regress0/push-pop/arith/fuzz_3_7.smt2 |     36 +
 test/regress/regress0/push-pop/arith/fuzz_3_8.smt2 |     47 +
 test/regress/regress0/push-pop/arith/fuzz_3_9.smt2 |     52 +
 test/regress/regress0/push-pop/arith/fuzz_5_1.smt2 |     83 +
 test/regress/regress0/push-pop/arith/fuzz_5_2.smt2 |     91 +
 test/regress/regress0/push-pop/arith/fuzz_5_3.smt2 |     66 +
 test/regress/regress0/push-pop/arith/fuzz_5_4.smt2 |     54 +
 test/regress/regress0/push-pop/arith/fuzz_5_5.smt2 |     78 +
 test/regress/regress0/push-pop/arith/fuzz_5_6.smt2 |     49 +
 test/regress/regress0/push-pop/arith_lra_01.smt2   |    105 +
 test/regress/regress0/push-pop/arith_lra_02.smt2   |     95 +
 test/regress/regress0/push-pop/boolean/Makefile.am |     96 +
 test/regress/regress0/push-pop/boolean/Makefile.in |   1577 +
 test/regress/regress0/push-pop/boolean/fuzz_1.smt2 |     62 +
 .../regress/regress0/push-pop/boolean/fuzz_10.smt2 |     62 +
 .../regress/regress0/push-pop/boolean/fuzz_11.smt2 |     77 +
 .../regress/regress0/push-pop/boolean/fuzz_12.smt2 |     38 +
 .../regress/regress0/push-pop/boolean/fuzz_13.smt2 |     24 +
 .../regress/regress0/push-pop/boolean/fuzz_14.smt2 |     35 +
 .../regress/regress0/push-pop/boolean/fuzz_15.smt2 |     30 +
 .../regress/regress0/push-pop/boolean/fuzz_16.smt2 |     47 +
 .../regress/regress0/push-pop/boolean/fuzz_18.smt2 |     38 +
 .../regress/regress0/push-pop/boolean/fuzz_19.smt2 |     44 +
 test/regress/regress0/push-pop/boolean/fuzz_2.smt2 |     16 +
 .../regress/regress0/push-pop/boolean/fuzz_20.smt2 |     52 +
 .../regress/regress0/push-pop/boolean/fuzz_21.smt2 |     29 +
 .../regress/regress0/push-pop/boolean/fuzz_22.smt2 |     40 +
 .../regress/regress0/push-pop/boolean/fuzz_23.smt2 |     41 +
 .../regress/regress0/push-pop/boolean/fuzz_24.smt2 |     42 +
 .../regress/regress0/push-pop/boolean/fuzz_25.smt2 |     79 +
 .../regress/regress0/push-pop/boolean/fuzz_26.smt2 |     49 +
 .../regress/regress0/push-pop/boolean/fuzz_27.smt2 |     45 +
 .../regress/regress0/push-pop/boolean/fuzz_28.smt2 |     45 +
 .../regress/regress0/push-pop/boolean/fuzz_29.smt2 |     46 +
 test/regress/regress0/push-pop/boolean/fuzz_3.smt2 |     29 +
 .../regress/regress0/push-pop/boolean/fuzz_30.smt2 |     69 +
 .../regress/regress0/push-pop/boolean/fuzz_31.smt2 |     34 +
 .../regress/regress0/push-pop/boolean/fuzz_32.smt2 |     68 +
 .../regress/regress0/push-pop/boolean/fuzz_33.smt2 |     39 +
 .../regress/regress0/push-pop/boolean/fuzz_34.smt2 |     47 +
 .../regress/regress0/push-pop/boolean/fuzz_35.smt2 |     43 +
 .../regress/regress0/push-pop/boolean/fuzz_36.smt2 |     34 +
 .../regress/regress0/push-pop/boolean/fuzz_37.smt2 |     54 +
 .../regress/regress0/push-pop/boolean/fuzz_38.smt2 |     37 +
 .../regress/regress0/push-pop/boolean/fuzz_39.smt2 |     82 +
 test/regress/regress0/push-pop/boolean/fuzz_4.smt2 |     58 +
 .../regress/regress0/push-pop/boolean/fuzz_40.smt2 |     41 +
 .../regress/regress0/push-pop/boolean/fuzz_41.smt2 |     25 +
 .../regress/regress0/push-pop/boolean/fuzz_42.smt2 |     48 +
 .../regress/regress0/push-pop/boolean/fuzz_43.smt2 |     53 +
 .../regress/regress0/push-pop/boolean/fuzz_44.smt2 |     30 +
 .../regress/regress0/push-pop/boolean/fuzz_45.smt2 |     51 +
 .../regress/regress0/push-pop/boolean/fuzz_46.smt2 |     49 +
 .../regress/regress0/push-pop/boolean/fuzz_47.smt2 |     22 +
 .../regress/regress0/push-pop/boolean/fuzz_48.smt2 |     24 +
 .../regress/regress0/push-pop/boolean/fuzz_49.smt2 |     14 +
 test/regress/regress0/push-pop/boolean/fuzz_5.smt2 |     65 +
 .../regress/regress0/push-pop/boolean/fuzz_50.smt2 |     12 +
 .../regress/regress0/push-pop/boolean/fuzz_51.smt2 |     36 +
 .../regress/regress0/push-pop/boolean/fuzz_52.smt2 |     47 +
 test/regress/regress0/push-pop/boolean/fuzz_6.smt2 |     35 +
 test/regress/regress0/push-pop/boolean/fuzz_7.smt2 |     42 +
 test/regress/regress0/push-pop/boolean/fuzz_8.smt2 |     45 +
 test/regress/regress0/push-pop/boolean/fuzz_9.smt2 |     55 +
 .../regress0/push-pop/bug-fmf-fun-skolem.smt2      |     25 +
 test/regress/regress0/push-pop/bug216.smt2         |      8 +
 test/regress/regress0/push-pop/bug216.smt2.expect  |      3 +
 test/regress/regress0/push-pop/bug233.cvc          |     11 +
 test/regress/regress0/push-pop/bug326.smt2         |     41 +
 test/regress/regress0/push-pop/bug396.smt2         |   3294 +
 test/regress/regress0/push-pop/bug654-dd.smt2      |     27 +
 test/regress/regress0/push-pop/bug674.smt2         |     28 +
 test/regress/regress0/push-pop/bug691.smt2         |     21 +
 .../regress0/push-pop/bug694-Unapply1.scala-0.smt2 |    147 +
 test/regress/regress0/push-pop/bug765.smt2         |     30 +
 test/regress/regress0/push-pop/fmf-fun-dbu.smt2    |     15 +
 test/regress/regress0/push-pop/inc-define.smt2     |      9 +
 test/regress/regress0/push-pop/inc-double-u.smt2   |     16 +
 .../regress0/push-pop/incremental-subst-bug.cvc    |     21 +
 .../regress0/push-pop/quant-fun-proc-unfd.smt2     |     34 +
 .../regress0/push-pop/quant-fun-proc-unmacro.smt2  |     34 +
 test/regress/regress0/push-pop/quant-fun-proc.smt2 |     30 +
 test/regress/regress0/push-pop/test.00.cvc         |     11 +
 test/regress/regress0/push-pop/test.01.cvc         |     19 +
 test/regress/regress0/push-pop/tiny_bug.smt2       |     27 +
 test/regress/regress0/push-pop/units.cvc           |     29 +
 .../regress/regress0/quantifiers/006-cbqi-ite.smt2 |    299 +
 test/regress/regress0/quantifiers/ARI176e1.smt2    |      5 +
 .../regress0/quantifiers/Arrays_Q1-noinfer.smt2    |     73 +
 test/regress/regress0/quantifiers/Makefile.am      |    127 +
 test/regress/regress0/quantifiers/Makefile.in      |   1557 +
 test/regress/regress0/quantifiers/RND-small.smt2   |      9 +
 .../regress0/quantifiers/RNDPRE_4_1-dd-nqe.smt2    |     18 +
 test/regress/regress0/quantifiers/RND_4_16.smt2    |     10 +
 .../regress0/quantifiers/agg-rew-test-cf.smt2      |      5 +
 .../regress/regress0/quantifiers/agg-rew-test.smt2 |      5 +
 .../regress/regress0/quantifiers/anti-sk-simp.smt2 |     10 +
 test/regress/regress0/quantifiers/ari056.smt2      |      4 +
 .../regress0/quantifiers/array-unsat-simp3.smt2    |     23 +
 test/regress/regress0/quantifiers/bi-artm-s.smt2   |     29 +
 .../regress/regress0/quantifiers/bignum_quant.smt2 |     12 +
 test/regress/regress0/quantifiers/bug269.smt2      |     24 +
 test/regress/regress0/quantifiers/bug290.smt2      |     20 +
 test/regress/regress0/quantifiers/bug291.smt2      |     14 +
 .../regress0/quantifiers/bug291.smt2.expect        |      2 +
 .../regress0/quantifiers/bug749-rounding.smt2      |     11 +
 test/regress/regress0/quantifiers/bug_743.smt2     |    774 +
 test/regress/regress0/quantifiers/burns13.smt2     |     20 +
 test/regress/regress0/quantifiers/burns4.smt2      |     20 +
 .../regress0/quantifiers/cbqi-lia-dt-simp.smt2     |      6 +
 test/regress/regress0/quantifiers/cdt-0208-to.smt2 |    767 +
 test/regress/regress0/quantifiers/clock-3.smt2     |      5 +
 test/regress/regress0/quantifiers/delta-simp.smt2  |      5 +
 .../regress0/quantifiers/double-pattern.smt2       |      6 +
 test/regress/regress0/quantifiers/ex3.smt2         |     10 +
 test/regress/regress0/quantifiers/ex6.smt2         |     11 +
 .../regress0/quantifiers/ext-ex-deq-trigger.smt2   |     26 +
 test/regress/regress0/quantifiers/floor.smt2       |      4 +
 .../regress0/quantifiers/florian-case-ax.smt2      |    168 +
 .../regress0/quantifiers/gauss_init_0030.fof.smt2  |     61 +
 .../regress0/quantifiers/inst-max-level-segf.smt2  |    326 +
 .../regress/regress0/quantifiers/is-even-pred.smt2 |      7 +
 test/regress/regress0/quantifiers/is-even.smt2     |      7 +
 test/regress/regress0/quantifiers/is-int.smt2      |      4 +
 .../quantifiers/javafe.ast.StmtVec.009.smt2        |    398 +
 .../regress0/quantifiers/macro-subtype-param.smt2  |     18 +
 .../regress0/quantifiers/macros-int-real.smt2      |      9 +
 .../regress0/quantifiers/macros-real-arg.smt2      |     11 +
 .../regress0/quantifiers/matching-lia-1arg.smt2    |      8 +
 test/regress/regress0/quantifiers/mix-coeff.smt2   |      4 +
 .../regress0/quantifiers/mix-complete-strat.smt2   |     18 +
 test/regress/regress0/quantifiers/mix-match.smt2   |     10 +
 test/regress/regress0/quantifiers/mix-simp.smt2    |      4 +
 .../regress/regress0/quantifiers/nested-delta.smt2 |      6 +
 test/regress/regress0/quantifiers/nested-inf.smt2  |      6 +
 .../regress0/quantifiers/opisavailable-12.smt2     |    276 +
 .../regress0/quantifiers/parametric-lists.smt2     |     42 +
 .../regress0/quantifiers/partial-trigger.smt2      |     10 +
 test/regress/regress0/quantifiers/psyco-196.smt2   |    420 +
 .../regress/regress0/quantifiers/pure_dt_cbqi.smt2 |      6 +
 .../regress0/quantifiers/qcf-rel-dom-opt.smt2      |     45 +
 .../qcft-javafe.filespace.TreeWalker.006.smt2      |    432 +
 .../regress0/quantifiers/qcft-smtlib3dbc51.smt2    |    233 +
 .../quantifiers/quaternion_ds1_symm_0428.fof.smt2  |     49 +
 .../regress0/quantifiers/rew-to-0211-dd.smt2       |    259 +
 .../regress/regress0/quantifiers/rew-to-scala.smt2 |     13 +
 .../regress0/quantifiers/ricart-agrawala6.smt2     |     26 +
 test/regress/regress0/quantifiers/set8.smt2        |     26 +
 test/regress/regress0/quantifiers/simp-len.smt2    |      9 +
 .../regress0/quantifiers/simp-typ-test.smt2        |      7 +
 .../quantifiers/small-bug1-fixpoint-3.smt2         |     16 +
 .../regress/regress0/quantifiers/smtlib384a03.smt2 |    205 +
 .../regress/regress0/quantifiers/smtlib46f14a.smt2 |    205 +
 .../regress/regress0/quantifiers/smtlibf957ea.smt2 |    212 +
 .../quantifiers/stream-x2014-09-18-unsat.smt2      |    183 +
 .../regress0/quantifiers/subtype-param-unk.smt2    |     19 +
 .../regress0/quantifiers/subtype-param.smt2        |     16 +
 .../quantifiers/z3.620661-no-fv-trigger.smt2       |     87 +
 test/regress/regress0/queries0.cvc                 |     11 +
 test/regress/regress0/rels/Makefile.am             |    115 +
 test/regress/regress0/rels/Makefile.in             |   1794 +
 test/regress/regress0/rels/addr_book_0.cvc         |     49 +
 test/regress/regress0/rels/addr_book_1.cvc         |     45 +
 test/regress/regress0/rels/addr_book_1_1.cvc       |     45 +
 test/regress/regress0/rels/bv1-unit.cvc            |     21 +
 test/regress/regress0/rels/bv1-unitb.cvc           |     22 +
 test/regress/regress0/rels/bv1.cvc                 |     20 +
 test/regress/regress0/rels/bv1p-sat.cvc            |     22 +
 test/regress/regress0/rels/bv1p.cvc                |     22 +
 test/regress/regress0/rels/bv2.cvc                 |     20 +
 .../regress0/rels/join-eq-structure-and.cvc        |     26 +
 test/regress/regress0/rels/join-eq-structure.cvc   |     26 +
 .../regress0/rels/join-eq-structure_0_1.cvc        |     26 +
 test/regress/regress0/rels/join-eq-u-sat.cvc       |     22 +
 test/regress/regress0/rels/join-eq-u.cvc           |     22 +
 .../regress0/rels/oneLoc_no_quant-int_0_1.cvc      |     19 +
 test/regress/regress0/rels/prod-mod-eq.cvc         |     26 +
 test/regress/regress0/rels/prod-mod-eq2.cvc        |     26 +
 test/regress/regress0/rels/rel_1tup_0.cvc          |     24 +
 test/regress/regress0/rels/rel_complex_0.cvc       |     31 +
 test/regress/regress0/rels/rel_complex_1.cvc       |     34 +
 test/regress/regress0/rels/rel_complex_3.cvc       |     49 +
 test/regress/regress0/rels/rel_complex_4.cvc       |     52 +
 test/regress/regress0/rels/rel_complex_5.cvc       |     55 +
 test/regress/regress0/rels/rel_conflict_0.cvc      |     10 +
 test/regress/regress0/rels/rel_join_0.cvc          |     24 +
 test/regress/regress0/rels/rel_join_0_1.cvc        |     27 +
 test/regress/regress0/rels/rel_join_1.cvc          |     31 +
 test/regress/regress0/rels/rel_join_1_1.cvc        |     31 +
 test/regress/regress0/rels/rel_join_2.cvc          |     20 +
 test/regress/regress0/rels/rel_join_2_1.cvc        |     20 +
 test/regress/regress0/rels/rel_join_3.cvc          |     29 +
 test/regress/regress0/rels/rel_join_3_1.cvc        |     29 +
 test/regress/regress0/rels/rel_join_4.cvc          |     32 +
 test/regress/regress0/rels/rel_join_5.cvc          |     19 +
 test/regress/regress0/rels/rel_join_6.cvc          |     13 +
 test/regress/regress0/rels/rel_join_7.cvc          |     26 +
 test/regress/regress0/rels/rel_mix_0_1.cvc         |     30 +
 test/regress/regress0/rels/rel_pressure_0.cvc      |    617 +
 test/regress/regress0/rels/rel_product_0.cvc       |     20 +
 test/regress/regress0/rels/rel_product_0_1.cvc     |     20 +
 test/regress/regress0/rels/rel_product_1.cvc       |     20 +
 test/regress/regress0/rels/rel_product_1_1.cvc     |     21 +
 test/regress/regress0/rels/rel_symbolic_1.cvc      |     21 +
 test/regress/regress0/rels/rel_symbolic_1_1.cvc    |     20 +
 test/regress/regress0/rels/rel_symbolic_2_1.cvc    |     21 +
 test/regress/regress0/rels/rel_symbolic_3_1.cvc    |     21 +
 test/regress/regress0/rels/rel_tc_10_1.cvc         |     18 +
 test/regress/regress0/rels/rel_tc_11.cvc           |     18 +
 test/regress/regress0/rels/rel_tc_2_1.cvc          |     28 +
 test/regress/regress0/rels/rel_tc_3.cvc            |     22 +
 test/regress/regress0/rels/rel_tc_3_1.cvc          |     18 +
 test/regress/regress0/rels/rel_tc_4.cvc            |     19 +
 test/regress/regress0/rels/rel_tc_4_1.cvc          |     10 +
 test/regress/regress0/rels/rel_tc_5_1.cvc          |      9 +
 test/regress/regress0/rels/rel_tc_6.cvc            |      9 +
 test/regress/regress0/rels/rel_tc_7.cvc            |     10 +
 test/regress/regress0/rels/rel_tc_9_1.cvc          |     23 +
 test/regress/regress0/rels/rel_tp_2.cvc            |     10 +
 test/regress/regress0/rels/rel_tp_3_1.cvc          |     14 +
 test/regress/regress0/rels/rel_tp_join_0.cvc       |     32 +
 test/regress/regress0/rels/rel_tp_join_1.cvc       |     32 +
 test/regress/regress0/rels/rel_tp_join_2.cvc       |     19 +
 test/regress/regress0/rels/rel_tp_join_2_1.cvc     |     19 +
 test/regress/regress0/rels/rel_tp_join_3.cvc       |     28 +
 test/regress/regress0/rels/rel_tp_join_eq_0.cvc    |     28 +
 test/regress/regress0/rels/rel_tp_join_int_0.cvc   |     26 +
 test/regress/regress0/rels/rel_tp_join_pro_0.cvc   |     21 +
 test/regress/regress0/rels/rel_tp_join_var_0.cvc   |     28 +
 test/regress/regress0/rels/rel_transpose_0.cvc     |     18 +
 test/regress/regress0/rels/rel_transpose_1.cvc     |     12 +
 test/regress/regress0/rels/rel_transpose_1_1.cvc   |     14 +
 test/regress/regress0/rels/rel_transpose_3.cvc     |     15 +
 test/regress/regress0/rels/rel_transpose_4.cvc     |     13 +
 test/regress/regress0/rels/rel_transpose_5.cvc     |     22 +
 test/regress/regress0/rels/rel_transpose_6.cvc     |     24 +
 test/regress/regress0/rels/rel_transpose_7.cvc     |     10 +
 test/regress/regress0/rels/set-strat.cvc           |     24 +
 test/regress/regress0/rels/strat.cvc               |     24 +
 test/regress/regress0/rels/strat_0_1.cvc           |     24 +
 test/regress/regress0/rewriterules/Makefile.am     |     53 +
 test/regress/regress0/rewriterules/Makefile.in     |   1050 +
 test/regress/regress0/rewriterules/datatypes.smt2  |    101 +
 .../regress0/rewriterules/datatypes_sat.smt2       |    101 +
 .../regress0/rewriterules/length_gen_020.smt2      |     34 +
 .../regress0/rewriterules/length_trick.smt2        |     32 +
 .../regress0/rewriterules/native_arrays.smt2       |     34 +
 test/regress/regress0/rewriterules/relation.smt2   |     27 +
 .../regress0/rewriterules/simulate_rewriting.smt2  |     24 +
 test/regress/regress0/sep/Makefile.am              |     79 +
 test/regress/regress0/sep/Makefile.in              |   1290 +
 test/regress/regress0/sep/chain-int.smt2           |     11 +
 test/regress/regress0/sep/crash1220.smt2           |     15 +
 test/regress/regress0/sep/dispose-1.smt2           |     17 +
 test/regress/regress0/sep/dispose-list-4-init.smt2 |     36 +
 test/regress/regress0/sep/dup-nemp.smt2            |      7 +
 test/regress/regress0/sep/emp2-quant-unsat.smt2    |     12 +
 test/regress/regress0/sep/finite-witness-sat.smt2  |     11 +
 test/regress/regress0/sep/fmf-nemp-2.smt2          |     10 +
 test/regress/regress0/sep/nemp.smt2                |      5 +
 test/regress/regress0/sep/nspatial-simp.smt2       |     11 +
 test/regress/regress0/sep/pto-01.smt2              |     13 +
 test/regress/regress0/sep/pto-02.smt2              |     25 +
 test/regress/regress0/sep/pto-04.smt2              |     36 +
 test/regress/regress0/sep/quant_wand.smt2          |     15 +
 test/regress/regress0/sep/sep-01.smt2              |     14 +
 test/regress/regress0/sep/sep-02.smt2              |     16 +
 test/regress/regress0/sep/sep-03.smt2              |     17 +
 test/regress/regress0/sep/sep-find2.smt2           |     22 +
 test/regress/regress0/sep/sep-fmf-priority.smt2    |     12 +
 test/regress/regress0/sep/sep-neg-1refine.smt2     |     17 +
 test/regress/regress0/sep/sep-neg-nstrict.smt2     |     15 +
 test/regress/regress0/sep/sep-neg-nstrict2.smt2    |     18 +
 test/regress/regress0/sep/sep-neg-simple.smt2      |     16 +
 test/regress/regress0/sep/sep-neg-swap.smt2        |     17 +
 test/regress/regress0/sep/sep-nterm-again.smt2     |     20 +
 test/regress/regress0/sep/sep-nterm-val-model.smt2 |     17 +
 test/regress/regress0/sep/sep-plus1.smt2           |     18 +
 test/regress/regress0/sep/sep-simp-unsat-emp.smt2  |     12 +
 test/regress/regress0/sep/simple-neg-sat.smt2      |     20 +
 test/regress/regress0/sep/trees-1.smt2             |     43 +
 test/regress/regress0/sep/wand-0526-sat.smt2       |     10 +
 test/regress/regress0/sep/wand-crash.smt2          |      5 +
 test/regress/regress0/sep/wand-false.smt2          |      7 +
 test/regress/regress0/sep/wand-nterm-simp.smt2     |      7 +
 test/regress/regress0/sep/wand-nterm-simp2.smt2    |      7 +
 test/regress/regress0/sep/wand-simp-sat.smt2       |      6 +
 test/regress/regress0/sep/wand-simp-sat2.smt2      |      7 +
 test/regress/regress0/sep/wand-simp-unsat.smt2     |      7 +
 test/regress/regress0/sets/Makefile.am             |    101 +
 test/regress/regress0/sets/Makefile.in             |   1460 +
 test/regress/regress0/sets/abt-min.smt2            |     22 +
 test/regress/regress0/sets/abt-te-exh.smt2         |     13 +
 test/regress/regress0/sets/abt-te-exh2.smt2        |     24 +
 test/regress/regress0/sets/card-2.smt2             |     11 +
 test/regress/regress0/sets/card-3.smt2             |     12 +
 test/regress/regress0/sets/card-3sets.cvc          |      9 +
 test/regress/regress0/sets/card-4.smt2             |     24 +
 test/regress/regress0/sets/card-5.smt2             |     25 +
 test/regress/regress0/sets/card-6.smt2             |     17 +
 test/regress/regress0/sets/card-7.smt2             |     47 +
 test/regress/regress0/sets/card.smt2               |      9 +
 test/regress/regress0/sets/card3-ground.smt2       |      6 +
 test/regress/regress0/sets/complement.cvc          |      9 +
 test/regress/regress0/sets/complement2.cvc         |     11 +
 .../regress0/sets/copy_check_heap_access_33_4.smt2 |    135 +
 test/regress/regress0/sets/cvc-sample.cvc          |     55 +
 test/regress/regress0/sets/dt-simp-mem.smt2        |      9 +
 test/regress/regress0/sets/emptyset.smt2           |      4 +
 test/regress/regress0/sets/eqtest.smt2             |     18 +
 test/regress/regress0/sets/error1.smt2             |     13 +
 test/regress/regress0/sets/error2.smt2             |      4 +
 .../sets/feb3/ListElts.hs.fqout.cvc4.317.smt2      |     98 +
 test/regress/regress0/sets/fuzz14418.smt2          |    171 +
 test/regress/regress0/sets/fuzz15201.smt2          |    269 +
 test/regress/regress0/sets/fuzz31811.smt2          |    187 +
 test/regress/regress0/sets/insert.smt2             |      7 +
 .../sets/jan24/deepmeas0.hs.fqout.cvc4.47.smt2     |     75 +
 .../sets/jan24/deepmeas0.hs.fqout.small.smt2       |     18 +
 .../regress0/sets/jan24/insert_invariant_37_2.smt2 |    812 +
 .../sets/jan24/remove_check_free_31_6.smt2         |    470 +
 .../jan27/ListConcat.hs.fqout.177minimized.smt2    |     18 +
 .../sets/jan27/ListConcat.hs.fqout.cvc4.177.smt2   |     49 +
 .../sets/jan27/ListElem.hs.fqout.cvc4.38.smt2      |     59 +
 .../sets/jan27/deepmeas0.hs.fqout.cvc4.41.smt2     |     58 +
 .../TalkingAboutSets.hs.fqout.3577minimized.smt2   |     33 +
 .../jan28/TalkingAboutSets.hs.fqout.cvc4.3577.smt2 |    286 +
 .../sets/jan30/UniqueZipper.hs.fqout.cvc4.10.smt2  |    106 +
 .../jan30/UniqueZipper.hs.fqout.cvc4.1832.smt2     |    227 +
 .../jan30/UniqueZipper.hs.fqout.minimized10.smt2   |     27 +
 .../jan30/UniqueZipper.hs.fqout.minimized1832.smt2 |     18 +
 .../UniqueZipper.hs.1030minimized.cvc4.smt2        |    209 +
 .../UniqueZipper.hs.1030minimized2.cvc4.smt2       |    202 +
 .../mar2014/lemmabug-ListElts317minimized.smt2     |     89 +
 .../regress0/sets/mar2014/sharing-preregister.smt2 |     12 +
 test/regress/regress0/sets/mar2014/small.smt2      |     18 +
 test/regress/regress0/sets/mar2014/smaller.smt2    |     15 +
 .../sets/rec_copy_loop_check_heap_access_43_4.smt2 |    149 +
 test/regress/regress0/sets/setofsets-disequal.smt2 |     64 +
 test/regress/regress0/sets/sets-equal.smt2         |     14 +
 test/regress/regress0/sets/sets-inter.smt2         |     11 +
 test/regress/regress0/sets/sets-sample.smt2        |     70 +
 test/regress/regress0/sets/sets-sharing.smt2       |     11 +
 test/regress/regress0/sets/sets-testlemma.smt2     |      7 +
 test/regress/regress0/sets/sets-union.smt2         |     15 +
 test/regress/regress0/sets/sharingbug.smt2         |    157 +
 test/regress/regress0/sets/union-1a-flip.smt2      |     16 +
 test/regress/regress0/sets/union-1a.smt2           |     16 +
 test/regress/regress0/sets/union-1b-flip.smt2      |     16 +
 test/regress/regress0/sets/union-1b.smt2           |     16 +
 test/regress/regress0/sets/union-2.smt2            |     12 +
 test/regress/regress0/sets/univset-simp.smt2       |     21 +
 test/regress/regress0/simple-lra.smt               |      6 +
 test/regress/regress0/simple-lra.smt2              |      6 +
 test/regress/regress0/simple-rdl.smt               |      6 +
 test/regress/regress0/simple-rdl.smt2              |      7 +
 test/regress/regress0/simple-uf.smt                |      8 +
 test/regress/regress0/simple-uf.smt2               |      9 +
 test/regress/regress0/simple.cvc                   |      7 +
 test/regress/regress0/simple.smt                   |     15 +
 test/regress/regress0/simple2.smt                  |     13 +
 test/regress/regress0/simplification_bug.smt       |      7 +
 test/regress/regress0/simplification_bug2.smt      |      7 +
 test/regress/regress0/simplification_bug4.smt2     |    295 +
 .../regress0/simplification_bug4.smt2.expect       |      2 +
 test/regress/regress0/smallcnf.cvc                 |      9 +
 test/regress/regress0/smt2output.smt2              |     14 +
 test/regress/regress0/strings/Makefile.am          |    107 +
 test/regress/regress0/strings/Makefile.in          |   1529 +
 .../regress0/strings/artemis-0512-nonterm.smt2     |     26 +
 test/regress/regress0/strings/at001.smt2           |     12 +
 test/regress/regress0/strings/bug001.smt2          |     15 +
 test/regress/regress0/strings/bug002.smt2          |     10 +
 test/regress/regress0/strings/bug612.smt2          |     10 +
 test/regress/regress0/strings/bug613.smt2          |      9 +
 test/regress/regress0/strings/bug615.smt2          |     26 +
 test/regress/regress0/strings/bug682.smt2          |     19 +
 test/regress/regress0/strings/bug686dd.smt2        |     13 +
 test/regress/regress0/strings/bug768.smt2          |     10 +
 test/regress/regress0/strings/chapman150408.smt2   |     10 +
 .../regress0/strings/cmu-2db2-extf-reg.smt2        |      9 +
 .../regress0/strings/cmu-disagree-0707-dd.smt2     |     22 +
 .../regress0/strings/cmu-inc-nlpp-071516.smt2      |      9 +
 test/regress/regress0/strings/cmu-substr-rw.smt2   |     12 +
 test/regress/regress0/strings/crash-1019.smt2      |     10 +
 .../regress0/strings/csp-prefix-exp-bug.smt2       |     10 +
 test/regress/regress0/strings/escchar.smt2         |     12 +
 test/regress/regress0/strings/escchar_25.smt2      |     12 +
 test/regress/regress0/strings/fmf001.smt2          |     20 +
 test/regress/regress0/strings/fmf002.smt2          |     17 +
 test/regress/regress0/strings/gm-inc-071516-2.smt2 |     10 +
 test/regress/regress0/strings/idof-handg.smt2      |      7 +
 .../regress0/strings/idof-nconst-index.smt2        |      9 +
 test/regress/regress0/strings/idof-neg-index.smt2  |      8 +
 test/regress/regress0/strings/idof-rewrites.smt2   |     13 +
 test/regress/regress0/strings/idof-triv.smt2       |      7 +
 test/regress/regress0/strings/ilc-l-nt.smt2        |     14 +
 test/regress/regress0/strings/ilc-like.smt2        |     14 +
 .../regress/regress0/strings/indexof-sym-simp.smt2 |     10 +
 test/regress/regress0/strings/kaluza-fl.smt2       |     97 +
 test/regress/regress0/strings/leadingzero001.smt2  |     11 +
 test/regress/regress0/strings/loop001.smt2         |     13 +
 test/regress/regress0/strings/loop002.smt2         |     10 +
 test/regress/regress0/strings/loop003.smt2         |     13 +
 test/regress/regress0/strings/loop004.smt2         |     13 +
 test/regress/regress0/strings/loop005.smt2         |     18 +
 test/regress/regress0/strings/loop006.smt2         |     15 +
 test/regress/regress0/strings/loop007.smt2         |     12 +
 test/regress/regress0/strings/loop008.smt2         |     10 +
 test/regress/regress0/strings/loop009.smt2         |     10 +
 test/regress/regress0/strings/model001.smt2        |     12 +
 .../regress0/strings/nf-ff-contains-abs.smt2       |     15 +
 test/regress/regress0/strings/norn-31.smt2         |     23 +
 test/regress/regress0/strings/norn-360.smt2        |     25 +
 .../regress0/strings/norn-nel-bug-052116.smt2      |     23 +
 .../regress0/strings/norn-simp-rew-sat.smt2        |     25 +
 test/regress/regress0/strings/norn-simp-rew.smt2   |     29 +
 test/regress/regress0/strings/pierre150331.smt2    |     13 +
 test/regress/regress0/strings/regexp001.smt2       |     13 +
 test/regress/regress0/strings/regexp002.smt2       |     24 +
 test/regress/regress0/strings/regexp003.smt2       |     13 +
 test/regress/regress0/strings/reloop.smt2          |     18 +
 test/regress/regress0/strings/str001.smt2          |     16 +
 test/regress/regress0/strings/str002.smt2          |     18 +
 test/regress/regress0/strings/str003.smt2          |     15 +
 test/regress/regress0/strings/str004.smt2          |     15 +
 test/regress/regress0/strings/str005.smt2          |     18 +
 test/regress/regress0/strings/str006.smt2          |     14 +
 test/regress/regress0/strings/str007.smt2          |     13 +
 .../regress0/strings/strings-index-empty.smt2      |     11 +
 .../regress0/strings/strings-native-simple.cvc     |     10 +
 test/regress/regress0/strings/substr001.smt2       |     16 +
 test/regress/regress0/strings/type001.smt2         |     21 +
 test/regress/regress0/strings/type002.smt2         |     18 +
 test/regress/regress0/strings/type003.smt2         |     12 +
 test/regress/regress0/strings/unsound-0908.smt2    |     12 +
 .../regress0/strings/username_checker_min.smt2     |     14 +
 test/regress/regress0/subranges.cvc                |     15 +
 test/regress/regress0/sygus/Makefile.am            |     78 +
 test/regress/regress0/sygus/Makefile.in            |   1259 +
 test/regress/regress0/sygus/array_search_2.sy      |     11 +
 test/regress/regress0/sygus/array_sum_2_5.sy       |      9 +
 test/regress/regress0/sygus/clock-inc-tuple.sy     |     14 +
 test/regress/regress0/sygus/commutative.sy         |     22 +
 test/regress/regress0/sygus/const-var-test.sy      |     26 +
 test/regress/regress0/sygus/constant.sy            |     23 +
 test/regress/regress0/sygus/dt-no-syntax.sy        |     12 +
 test/regress/regress0/sygus/dt-test-ns.sy          |     14 +
 test/regress/regress0/sygus/dup-op.sy              |     11 +
 test/regress/regress0/sygus/enum-test.sy           |      8 +
 test/regress/regress0/sygus/hd-01-d1-prog.sy       |     22 +
 test/regress/regress0/sygus/icfp_28_10.sy          |     40 +
 test/regress/regress0/sygus/inv-example.sy         |     12 +
 test/regress/regress0/sygus/let-ringer.sy          |     14 +
 test/regress/regress0/sygus/let-simp.sy            |     15 +
 test/regress/regress0/sygus/list-head-x.sy         |     13 +
 test/regress/regress0/sygus/max.smt2               |     52 +
 test/regress/regress0/sygus/max.sy                 |     33 +
 test/regress/regress0/sygus/max2-univ.sy           |     12 +
 .../regress0/sygus/multi-fun-polynomial2.sy        |     35 +
 test/regress/regress0/sygus/nflat-fwd-3.sy         |     11 +
 test/regress/regress0/sygus/nflat-fwd.sy           |     11 +
 test/regress/regress0/sygus/no-flat-simp.sy        |     20 +
 test/regress/regress0/sygus/no-mention.sy          |     15 +
 test/regress/regress0/sygus/no-syntax-test-bool.sy |     15 +
 test/regress/regress0/sygus/no-syntax-test.sy      |     15 +
 test/regress/regress0/sygus/parity-AIG-d0.sy       |     30 +
 test/regress/regress0/sygus/strings-small.sy       |     35 +
 .../regress0/sygus/strings-unconstrained.sy        |     15 +
 test/regress/regress0/sygus/sygus-dt.sy            |     16 +
 test/regress/regress0/sygus/sygus-uf.sl            |     20 +
 test/regress/regress0/sygus/tl-type.sy             |     11 +
 test/regress/regress0/sygus/twolets1.sy            |     40 +
 test/regress/regress0/sygus/twolets2-orig.sy       |     28 +
 test/regress/regress0/sygus/uminus_one.sy          |      7 +
 test/regress/regress0/sygus/unbdd_inv_gen_winf1.sy |     36 +
 test/regress/regress0/test11.cvc                   |      7 +
 test/regress/regress0/test9.cvc                    |      4 +
 test/regress/regress0/tptp/ARI086=1.p              |     32 +
 test/regress/regress0/tptp/Axioms/BOO004-0.ax      |     48 +
 test/regress/regress0/tptp/Axioms/SYN000+0.ax      |     37 +
 test/regress/regress0/tptp/Axioms/SYN000-0.ax      |     34 +
 test/regress/regress0/tptp/Axioms/SYN000_0.ax      |     47 +
 test/regress/regress0/tptp/BOO003-4.p              |     31 +
 test/regress/regress0/tptp/BOO027-1.p              |     48 +
 test/regress/regress0/tptp/DAT001=1.p              |     57 +
 test/regress/regress0/tptp/KRS018+1.p              |     55 +
 test/regress/regress0/tptp/KRS063+1.p              |    181 +
 test/regress/regress0/tptp/MGT019+2.p              |     84 +
 test/regress/regress0/tptp/MGT031-1.p              |     95 +
 test/regress/regress0/tptp/MGT041-2.p              |     61 +
 test/regress/regress0/tptp/Makefile.am             |     85 +
 test/regress/regress0/tptp/Makefile.in             |   1225 +
 test/regress/regress0/tptp/NLP114-1.p              |    202 +
 test/regress/regress0/tptp/PUZ131_1.p              |    100 +
 test/regress/regress0/tptp/SYN000+1.p              |     99 +
 test/regress/regress0/tptp/SYN000+2.p              |    127 +
 test/regress/regress0/tptp/SYN000-1.p              |     83 +
 test/regress/regress0/tptp/SYN000-2.p              |    117 +
 test/regress/regress0/tptp/SYN000=2.p              |    309 +
 test/regress/regress0/tptp/SYN000_1.p              |    170 +
 test/regress/regress0/tptp/SYN000_2.p              |    135 +
 test/regress/regress0/tptp/SYN075+1.p              |     46 +
 test/regress/regress0/tptp/SYN075-1.p              |     76 +
 test/regress/regress0/tptp/tff0-arith.p            |     27 +
 test/regress/regress0/tptp/tff0.p                  |     37 +
 test/regress/regress0/tptp/tptp_parser.p           |     16 +
 test/regress/regress0/tptp/tptp_parser10.p         |      9 +
 test/regress/regress0/tptp/tptp_parser2.p          |     13 +
 test/regress/regress0/tptp/tptp_parser3.p          |     13 +
 test/regress/regress0/tptp/tptp_parser4.p          |     13 +
 test/regress/regress0/tptp/tptp_parser5.p          |     15 +
 test/regress/regress0/tptp/tptp_parser6.p          |     15 +
 test/regress/regress0/tptp/tptp_parser7.p          |     15 +
 test/regress/regress0/tptp/tptp_parser8.p          |     10 +
 test/regress/regress0/tptp/tptp_parser9.p          |     13 +
 test/regress/regress0/trim.cvc                     |     36 +
 test/regress/regress0/uf/Makefile.am               |     75 +
 test/regress/regress0/uf/Makefile.in               |   1255 +
 .../regress/regress0/uf/NEQ016_size5_reduced2a.smt |     14 +
 .../regress/regress0/uf/NEQ016_size5_reduced2b.smt |     14 +
 test/regress/regress0/uf/bool-pred-nested.smt2     |      7 +
 test/regress/regress0/uf/ccredesign-fuzz.smt       |     32 +
 test/regress/regress0/uf/cnf-and-neg.smt2          |     11 +
 test/regress/regress0/uf/cnf-iff-base.smt2         |     16 +
 test/regress/regress0/uf/cnf-iff.smt2              |     38 +
 test/regress/regress0/uf/cnf-ite.smt2              |     35 +
 test/regress/regress0/uf/cnf_abc.smt2              |    168 +
 test/regress/regress0/uf/dead_dnd002.smt           |     37 +
 test/regress/regress0/uf/eq_diamond1.smt           |     15 +
 test/regress/regress0/uf/eq_diamond14.reduced.smt  |     87 +
 test/regress/regress0/uf/eq_diamond14.reduced2.smt |    102 +
 test/regress/regress0/uf/eq_diamond23.smt          |     59 +
 test/regress/regress0/uf/euf_simp01.smt            |     23 +
 test/regress/regress0/uf/euf_simp02.smt            |     29 +
 test/regress/regress0/uf/euf_simp03.smt            |     26 +
 test/regress/regress0/uf/euf_simp04.smt            |     25 +
 test/regress/regress0/uf/euf_simp05.smt            |     11 +
 test/regress/regress0/uf/euf_simp06.smt            |     11 +
 test/regress/regress0/uf/euf_simp08.smt            |     13 +
 test/regress/regress0/uf/euf_simp09.smt            |     11 +
 test/regress/regress0/uf/euf_simp10.smt            |     12 +
 test/regress/regress0/uf/euf_simp11.smt            |     17 +
 test/regress/regress0/uf/euf_simp12.smt            |     12 +
 test/regress/regress0/uf/euf_simp13.smt            |     12 +
 test/regress/regress0/uf/gensys_brn001.smt2        |    146 +
 test/regress/regress0/uf/iso_brn001.smt            |     34 +
 test/regress/regress0/uf/mkpidgeon                 |     44 +
 test/regress/regress0/uf/proof00.smt2              |     21 +
 test/regress/regress0/uf/simple.01.cvc             |      7 +
 test/regress/regress0/uf/simple.02.cvc             |      7 +
 test/regress/regress0/uf/simple.03.cvc             |     11 +
 test/regress/regress0/uf/simple.04.cvc             |     11 +
 test/regress/regress0/uf20-03.cvc                  |    115 +
 .../uflia/DRAGON_11_e1_2450.ec.minimized.smt2      |    104 +
 .../DRAGON_11_e1_2450.ec.minimized.smt2.expect     |      3 +
 .../uflia/FIREFLY_3_e2_2236_e7_3681.ec.core.smt2   |     29 +
 .../FIREFLY_3_e2_2236_e7_3681.ec.core.smt2.expect  |      2 +
 ...REFLY_luke_1b_e2_3049_e7_1173.ec.minimized.smt2 |     72 +
 test/regress/regress0/uflia/Makefile.am            |     78 +
 test/regress/regress0/uflia/Makefile.in            |   1169 +
 test/regress/regress0/uflia/check01.smt2           |     14 +
 test/regress/regress0/uflia/check02.smt2           |     33 +
 test/regress/regress0/uflia/check02.smt2.expect    |      3 +
 test/regress/regress0/uflia/check03.smt2           |     24 +
 test/regress/regress0/uflia/check03.smt2.expect    |      3 +
 test/regress/regress0/uflia/check04.smt2           |     18 +
 test/regress/regress0/uflia/check04.smt2.expect    |      3 +
 test/regress/regress0/uflia/error0.delta01.smt     |     78 +
 test/regress/regress0/uflia/error1.smt             |    701 +
 test/regress/regress0/uflia/error30.smt            |    145 +
 .../regress0/uflia/microwave21.ec.minimized.smt2   |    444 +
 test/regress/regress0/uflia/simple_cyclic2.smt2    |     44 +
 .../regress0/uflia/speed2_e8_449_e8_517.ec.smt2    |    747 +
 .../uflia/speed2_e8_449_e8_517.ec.smt2.expect      |      5 +
 .../uflia/stalmark_e7_27_e7_31.ec.minimized.smt2   |    161 +
 .../stalmark_e7_27_e7_31.ec.minimized.smt2.expect  |      3 +
 .../regress0/uflia/stalmark_e7_27_e7_31.ec.smt2    |    772 +
 .../uflia/stalmark_e7_27_e7_31.ec.smt2.expect      |      7 +
 test/regress/regress0/uflia/tiny.smt2              |     23 +
 test/regress/regress0/uflia/tiny.smt2.expect       |      3 +
 .../regress0/uflia/xs-09-16-3-4-1-5.delta01.smt    |     48 +
 .../regress0/uflia/xs-09-16-3-4-1-5.delta02.smt    |     40 +
 .../regress0/uflia/xs-09-16-3-4-1-5.delta03.smt    |     45 +
 .../regress0/uflia/xs-09-16-3-4-1-5.delta04.smt    |     67 +
 test/regress/regress0/uflra/Makefile.am            |     65 +
 test/regress/regress0/uflra/Makefile.in            |   1147 +
 test/regress/regress0/uflra/bug293.cvc             |      7 +
 test/regress/regress0/uflra/bug449.smt             |     11 +
 test/regress/regress0/uflra/constants0.smt         |     15 +
 test/regress/regress0/uflra/fuzz01.smt             |    257 +
 test/regress/regress0/uflra/incorrect1.delta01.smt |     31 +
 test/regress/regress0/uflra/incorrect1.delta02.smt |     14 +
 test/regress/regress0/uflra/neq-deltacomp.smt      |     14 +
 .../regress0/uflra/pb_real_10_0100_10_10.smt       |    126 +
 .../regress0/uflra/pb_real_10_0100_10_11.smt       |    126 +
 .../regress0/uflra/pb_real_10_0100_10_15.smt       |    126 +
 .../regress0/uflra/pb_real_10_0100_10_16.smt       |    126 +
 .../regress0/uflra/pb_real_10_0100_10_19.smt       |    126 +
 .../regress0/uflra/pb_real_10_0200_10_22.smt       |    126 +
 .../regress0/uflra/pb_real_10_0200_10_26.smt       |    126 +
 .../regress0/uflra/pb_real_10_0200_10_29.smt       |    126 +
 test/regress/regress0/uflra/simple.01.cvc          |      5 +
 test/regress/regress0/uflra/simple.02.cvc          |      9 +
 test/regress/regress0/uflra/simple.03.cvc          |     11 +
 test/regress/regress0/uflra/simple.04.cvc          |     14 +
 test/regress/regress0/unconstrained/Makefile.am    |     95 +
 test/regress/regress0/unconstrained/Makefile.in    |   1372 +
 test/regress/regress0/unconstrained/arith.smt2     |     14 +
 test/regress/regress0/unconstrained/arith3.smt2    |     13 +
 test/regress/regress0/unconstrained/arith4.smt2    |     14 +
 test/regress/regress0/unconstrained/arith5.smt2    |     12 +
 test/regress/regress0/unconstrained/arith6.smt2    |     12 +
 test/regress/regress0/unconstrained/array1.smt2    |     12 +
 test/regress/regress0/unconstrained/bvbool.smt2    |     31 +
 test/regress/regress0/unconstrained/bvbool2.smt2   |     23 +
 test/regress/regress0/unconstrained/bvbool3.smt2   |     32 +
 test/regress/regress0/unconstrained/bvcmp.smt2     |     13 +
 test/regress/regress0/unconstrained/bvconcat2.smt2 |     22 +
 test/regress/regress0/unconstrained/bvdiv2.smt2    |     26 +
 test/regress/regress0/unconstrained/bvext.smt2     |     13 +
 test/regress/regress0/unconstrained/bvite.smt2     |     32 +
 test/regress/regress0/unconstrained/bvmul.smt2     |     31 +
 test/regress/regress0/unconstrained/bvmul2.smt2    |     22 +
 test/regress/regress0/unconstrained/bvmul3.smt2    |     31 +
 test/regress/regress0/unconstrained/bvnot.smt2     |     13 +
 test/regress/regress0/unconstrained/bvsle.smt2     |     31 +
 test/regress/regress0/unconstrained/bvsle2.smt2    |     32 +
 test/regress/regress0/unconstrained/bvsle3.smt2    |     21 +
 test/regress/regress0/unconstrained/bvsle4.smt2    |     32 +
 test/regress/regress0/unconstrained/bvsle5.smt2    |     21 +
 test/regress/regress0/unconstrained/bvslt.smt2     |     31 +
 test/regress/regress0/unconstrained/bvslt2.smt2    |     32 +
 test/regress/regress0/unconstrained/bvslt3.smt2    |     21 +
 test/regress/regress0/unconstrained/bvslt4.smt2    |     32 +
 test/regress/regress0/unconstrained/bvslt5.smt2    |     21 +
 test/regress/regress0/unconstrained/bvule.smt2     |     31 +
 test/regress/regress0/unconstrained/bvule2.smt2    |     32 +
 test/regress/regress0/unconstrained/bvule3.smt2    |     21 +
 test/regress/regress0/unconstrained/bvule4.smt2    |     32 +
 test/regress/regress0/unconstrained/bvule5.smt2    |     21 +
 test/regress/regress0/unconstrained/bvult.smt2     |     31 +
 test/regress/regress0/unconstrained/bvult2.smt2    |     32 +
 test/regress/regress0/unconstrained/bvult3.smt2    |     21 +
 test/regress/regress0/unconstrained/bvult4.smt2    |     32 +
 test/regress/regress0/unconstrained/bvult5.smt2    |     21 +
 test/regress/regress0/unconstrained/geq.smt2       |     13 +
 test/regress/regress0/unconstrained/gt.smt2        |     13 +
 test/regress/regress0/unconstrained/ite.smt2       |      9 +
 test/regress/regress0/unconstrained/leq.smt2       |     13 +
 test/regress/regress0/unconstrained/lt.smt2        |     13 +
 test/regress/regress0/unconstrained/mult1.smt2     |      8 +
 test/regress/regress0/unconstrained/uf1.smt2       |     12 +
 test/regress/regress0/unconstrained/uf2.smt2       |     14 +
 test/regress/regress0/unconstrained/xor.smt2       |     33 +
 test/regress/regress0/wiki.01.cvc                  |      4 +
 test/regress/regress0/wiki.02.cvc                  |      4 +
 test/regress/regress0/wiki.03.cvc                  |      4 +
 test/regress/regress0/wiki.04.cvc                  |      4 +
 test/regress/regress0/wiki.05.cvc                  |      4 +
 test/regress/regress0/wiki.06.cvc                  |      4 +
 test/regress/regress0/wiki.07.cvc                  |      4 +
 test/regress/regress0/wiki.08.cvc                  |      4 +
 test/regress/regress0/wiki.09.cvc                  |      4 +
 test/regress/regress0/wiki.10.cvc                  |      4 +
 test/regress/regress0/wiki.11.cvc                  |      4 +
 test/regress/regress0/wiki.12.cvc                  |      4 +
 test/regress/regress0/wiki.13.cvc                  |      4 +
 test/regress/regress0/wiki.14.cvc                  |      4 +
 test/regress/regress0/wiki.15.cvc                  |      4 +
 test/regress/regress0/wiki.16.cvc                  |      4 +
 test/regress/regress0/wiki.17.cvc                  |      4 +
 test/regress/regress0/wiki.18.cvc                  |      4 +
 test/regress/regress0/wiki.19.cvc                  |      4 +
 test/regress/regress0/wiki.20.cvc                  |      4 +
 test/regress/regress0/wiki.21.cvc                  |      4 +
 test/regress/regress1/Makefile.am                  |     35 +
 test/regress/regress1/Makefile.in                  |   1182 +
 test/regress/regress1/aufbv/Makefile.am            |     30 +
 test/regress/regress1/aufbv/Makefile.in            |    986 +
 test/regress/regress1/aufbv/fuzz10.smt             |    168 +
 test/regress/regress1/auflia/Makefile.am           |     30 +
 test/regress/regress1/auflia/Makefile.in           |    986 +
 test/regress/regress1/auflia/bug330.smt2           |     44 +
 test/regress/regress1/bug425.cvc                   |      4 +
 test/regress/regress1/bug519.smt2                  |     75 +
 test/regress/regress1/bug521.smt2                  |    323 +
 test/regress/regress1/bv/Makefile.am               |     32 +
 test/regress/regress1/bv/Makefile.in               |   1002 +
 test/regress/regress1/bv/bv-proof00.smt            |   2176 +
 test/regress/regress1/bv/fuzz34.smt                |   4105 +
 test/regress/regress1/bv/fuzz38.smt                |    191 +
 test/regress/regress1/datatypes/Makefile.am        |     30 +
 test/regress/regress1/datatypes/Makefile.in        |    986 +
 test/regress/regress1/datatypes/manos-model.smt2   |     67 +
 test/regress/regress1/decision/Makefile.am         |     30 +
 test/regress/regress1/decision/Makefile.in         |    986 +
 test/regress/regress1/decision/error3.smt          |    138 +
 .../regress1/fmf/ForElimination-scala-9.smt2       |     31 +
 test/regress/regress1/fmf/Makefile.am              |     30 +
 test/regress/regress1/fmf/Makefile.in              |    986 +
 test/regress/regress1/lemmas/Makefile.am           |     32 +
 test/regress/regress1/lemmas/Makefile.in           |   1002 +
 .../clocksynchro_5clocks.main_invar.base.smt       |     97 +
 test/regress/regress1/lemmas/pursuit-safety-8.smt  |     93 +
 .../lemmas/simple_startup_9nodes.abstract.base.smt |    128 +
 test/regress/regress1/rewriterules/Makefile.am     |     36 +
 test/regress/regress1/rewriterules/Makefile.in     |    998 +
 .../reachability_back_to_the_future.smt2           |     54 +
 test/regress/regress1/rewriterules/read5.smt2      |     35 +
 test/regress/regress1/sep/Makefile.am              |     33 +
 test/regress/regress1/sep/Makefile.in              |   1010 +
 test/regress/regress1/sep/loop-1220.smt2           |     19 +
 test/regress/regress1/sep/sep-simp-unc.smt2        |     12 +
 .../regress1/sep/split-find-unsat-w-emp.smt2       |     18 +
 test/regress/regress1/sep/split-find-unsat.smt2    |     20 +
 test/regress/regress1/sets/Makefile.am             |     31 +
 test/regress/regress1/sets/Makefile.in             |    994 +
 test/regress/regress1/sets/card-vc6-minimized.smt2 |     15 +
 test/regress/regress1/sets/sets-disequal.smt2      |     20 +
 test/regress/regress1/strings/Makefile.am          |     31 +
 test/regress/regress1/strings/Makefile.in          |    994 +
 test/regress/regress1/strings/cmu-5042-0707-2.smt2 |     15 +
 test/regress/regress1/strings/cmu-dis-0707-3.smt2  |     24 +
 test/regress/regress1/sygus/Makefile.am            |     30 +
 test/regress/regress1/sygus/Makefile.in            |    986 +
 test/regress/regress1/sygus/hd-sdiv.sy             |     16 +
 test/regress/regress2/DTP_k2_n35_c175_s15.smt2     |     48 +
 .../FIREFLY_3_e2_2236_e7_3681.ec.minimized.smt2    |   1356 +
 ...EFLY_3_e2_2236_e7_3681.ec.minimized.smt2.expect |      3 +
 test/regress/regress2/GEO123+1.minimized.smt2      |    396 +
 test/regress/regress2/Makefile.am                  |     69 +
 test/regress/regress2/Makefile.in                  |   1364 +
 test/regress/regress2/arith/Makefile.am            |     37 +
 test/regress/regress2/arith/Makefile.in            |   1042 +
 test/regress/regress2/arith/abz5_1400.smt          |    119 +
 test/regress/regress2/arith/lpsat-goal-9.smt2      |    557 +
 test/regress/regress2/arith/prp-13-24.smt2         |     47 +
 test/regress/regress2/arith/pursuit-safety-11.smt  |    120 +
 test/regress/regress2/arith/pursuit-safety-12.smt  |    129 +
 .../regress2/arith/qlock-4-10-9.base.cvc.smt2      |    557 +
 test/regress/regress2/arith/sc-7.base.cvc.smt      |    164 +
 test/regress/regress2/arith/uart-8.base.cvc.smt    |    170 +
 test/regress/regress2/auflia-fuzz06.smt            |    349 +
 test/regress/regress2/bug136.smt                   |   1149 +
 test/regress/regress2/bug148.smt                   |    147 +
 test/regress/regress2/bug394.smt2                  |   1728 +
 test/regress/regress2/error1.smt                   |    867 +
 test/regress/regress2/friedman_n4_i5.smt           |  13457 ++
 test/regress/regress2/fuzz_2.smt                   |    699 +
 test/regress/regress2/hash_sat_06_19.smt2          |     33 +
 test/regress/regress2/hash_sat_07_17.smt2          |     32 +
 test/regress/regress2/hash_sat_09_09.smt2          |     26 +
 test/regress/regress2/hash_sat_10_09.smt2          |     27 +
 test/regress/regress2/hole7.cvc                    |    264 +
 test/regress/regress2/hole8.cvc                    |    373 +
 test/regress/regress2/instance_1444.smt            |   5797 +
 test/regress/regress2/ooo.rf6.smt2                 |     31 +
 test/regress/regress2/ooo.tag10.smt2               |     28 +
 test/regress/regress2/piVC_5581bd.smt2             |     23 +
 test/regress/regress2/typed_v1l50016-simp.cvc      |     43 +
 test/regress/regress2/uflia-error0.smt2            |   1281 +
 test/regress/regress2/uflia-error0.smt2.expect     |      2 +
 test/regress/regress2/xs-09-16-3-4-1-5.decn.smt    |     29 +
 .../regress2/xs-09-16-3-4-1-5.decn.smt.expect      |      2 +
 test/regress/regress2/xs-09-16-3-4-1-5.smt         |     29 +
 test/regress/regress3/Makefile.am                  |     55 +
 test/regress/regress3/Makefile.in                  |   1266 +
 test/regress/regress3/bmc-ibm-1.smt                |  65567 ++++++++
 test/regress/regress3/bmc-ibm-2.smt                |  14505 ++
 test/regress/regress3/bmc-ibm-5.smt                |  50615 ++++++
 test/regress/regress3/bmc-ibm-7.smt                |  48496 ++++++
 test/regress/regress3/bug497.cvc                   |    919 +
 test/regress/regress3/eq_diamond14.smt             |     41 +
 test/regress/regress3/friedman_n6_i4.smt           |  47402 ++++++
 test/regress/regress3/hole9.cvc                    |    509 +
 test/regress/regress3/incorrect1.smt               |   2852 +
 test/regress/regress3/incorrect2.smt               |   2852 +
 test/regress/regress3/pp-regfile.smt               |    145 +
 test/regress/regress3/pp-regfile.smt.expect        |      2 +
 .../regress3/qwh.35.405.shuffled-as.sat03-1651.smt |  12265 ++
 .../C880mul.miter.shuffled-as.sat03-348.smt        |  10995 ++
 test/regress/regress4/Makefile.am                  |     48 +
 test/regress/regress4/Makefile.in                  |   1216 +
 test/regress/regress4/NEQ016_size5.smt             |     27 +
 test/regress/regress4/bug143.smt                   |   1427 +
 .../regress4/comb2.shuffled-as.sat03-420.smt       | 144405 ++++++++++++++++++
 test/regress/regress4/hole10.cvc                   |    675 +
 test/regress/regress4/instance_1151.smt            |   6593 +
 test/regress/run_regression                        |    367 +
 test/system/CVC4JavaTest.java                      |     70 +
 test/system/Makefile.am                            |    119 +
 test/system/Makefile.in                            |   1235 +
 test/system/boilerplate.cpp                        |     36 +
 test/system/cvc3_george.h                          |     22 +
 test/system/cvc3_main.cpp                          |   2227 +
 test/system/ouroborous.cpp                         |    137 +
 test/system/run_java_test                          |     14 +
 test/system/smt2_compliance.cpp                    |     74 +
 test/system/statistics.cpp                         |     72 +
 test/system/two_smt_engines.cpp                    |     36 +
 test/unit/Makefile.am                              |    245 +
 test/unit/Makefile.in                              |   1723 +
 test/unit/Makefile.tests                           |     20 +
 test/unit/expr/expr_manager_public.cpp             |     62 +
 test/unit/expr/expr_manager_public.h               |    129 +
 test/unit/expr/expr_public.cpp                     |    122 +
 test/unit/expr/expr_public.h                       |    462 +
 test/unit/expr/type_cardinality_public.cpp         |     74 +
 test/unit/expr/type_cardinality_public.h           |    229 +
 test/unit/memory.h                                 |    110 +
 test/unit/no_cxxtest                               |     12 +
 test/unit/util/cardinality_public.cpp              |     38 +
 test/unit/util/cardinality_public.h                |    262 +
 2737 files changed, 1222587 insertions(+)

diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..d157ec9
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,49 @@
+The authors, designers, and main contributors to CVC4 are listed below.
+CVC4's copyright is held by these individuals and the affiliated
+institutions at the time of their contributions (note that some authors have
+had more than one affiliated institution).  See the file COPYING for details on
+the copyright and licensing of CVC4.
+
+The core designers and authors of CVC4 are:
+
+  Kshitij Bansal, New York University, Google, Inc.
+  Clark Barrett, New York University, Google, Inc.
+  Francois Bobot, The University of Iowa, Commissariat a l'Energie Atomique
+  Martin Brain, University of Oxford
+  Christopher Conway, New York University, Google, Inc.
+  Morgan Deters, New York University
+  Liana Hadarean, New York University, Mentor Graphics Corporation
+  Dejan Jovanovic, New York University, SRI International
+  Guy Katz, New York University
+  Tim King, New York University, Universite Joseph Fourier, Google, Inc.
+  Tianyi Liang, The University of Iowa
+  Andrew Reynolds, The University of Iowa, EPFL
+  Cesare Tinelli, The University of Iowa
+
+Contributors to the CVC4 codebase additionally include:
+
+  Peter Collingbourne, the Multicore Programming Group at Imperial College
+    London (headed by Alastair Donaldson)
+  Finn Haedicke, University of Bremen, Germany
+  Google, Inc.
+
+CVC4 is the fourth in the CVC series of tools (CVC, CVC Lite, CVC3) but does
+not directly incorporate code from any previous version.  Information about
+authors of previous CVC tools is included with their distributions.
+
+CVC4 contains MiniSAT code by Niklas Een and Niklas Sorensson.
+
+The CVC4 parser incorporates some code from ANTLR3, by Jim Idle, Temporal
+Wave LLC.
+
+CVC4 contains the doxygen.m4 autoconf module by Oren Ben-Kiki.
+
+CVC4 contains the pkg.m4 autoconf module by Scott James Remnant.
+
+CVC4 contains the ax_tls.m4 autoconf module by Alan Woodland and Diego Elio
+Petteno`.
+
+CVC4 contains the boost.m4 autoconf module by Benoit Sigoure.
+
+CVC4 maintainer versions contain the script autogen.sh by Christopher Sean
+Morrison, and copyright U.S. Army Research Laboratory.
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..4e3e64b
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,311 @@
+CVC4 is copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 by its
+authors and contributors (see the file AUTHORS) and their institutional
+affiliations.  All rights reserved.
+
+The source code of CVC4 is open and available to students, researchers,
+software companies, and everyone else to study, to modify, and to redistribute
+original or modified versions; distribution is under the terms of the modified
+BSD license (reproduced below).  Please note that CVC4 can be configured
+(however, by default it is not) to link against some GPLed libraries, and
+therefore the use of these builds may be restricted in non-GPL-compatible
+projects.  See below for a discussion of CLN, GLPK, and Readline (the three
+GPLed optional library dependences for CVC4), and how to ensure you have a
+build that doesn't link against GPLed libraries.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT OWNERS AND CONTRIBUTORS
+''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+----------------------------------------------------------------------
+
+CVC4 incorporates MiniSat code, excluded from the above copyright.
+See src/sat/minisat.  Its copyright:
+
+  MiniSat -- Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+             Copyright (c) 2007-2010  Niklas Sorensson
+
+  Permission is hereby granted, free of charge, to any person obtaining a
+  copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be included
+  in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+CVC4 incorporates the script "autogen.sh", excluded from the above copyright.
+See autogen.sh.  Its copyright:
+
+  Copyright (c) 2005-2009 United States Government as represented by
+  the U.S. Army Research Laboratory.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+  notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above
+  copyright notice, this list of conditions and the following
+  disclaimer in the documentation and/or other materials provided
+  with the distribution.
+
+  3. The name of the author may not be used to endorse or promote
+  products derived from this software without specific prior written
+  permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+CVC4 incorporates the script "doxygen.am", excluded from the above copyright.
+See config/doxygen.am.  Its copyright:
+
+  Copyright (C) 2004 Oren Ben-Kiki
+  This file is distributed under the same terms as the Automake macro files.
+
+CVC4 incorporates the m4 macro file "pkg.m4", excluded from the above
+copyright.  See config/pkg.m4.  Its copyright:
+
+  Copyright (c) 2004 Scott James Remnant <scott at netsplit.com>.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+  As a special exception to the GNU General Public License, if you
+  distribute this file as part of a program that contains a
+  configuration script generated by Autoconf, you may include it under
+  the same distribution terms that you use for the rest of that program.
+
+CVC4 incorporates the m4 macro file "ax_tls.m4", excluded from the above
+copyright and downloaded from
+http://www.gnu.org/software/autoconf-archive/ax_tls.html.
+See config/ax_tls.m4.  Its copyright:
+
+  Copyright (c) 2008 Alan Woodland <ajw05 at aber.ac.uk>
+  Copyright (c) 2010 Diego Elio Petteno` <flameeyes at gmail.com>
+
+  This program is free software: you can redistribute it and/or modify it
+  under the terms of the GNU General Public License as published by the
+  Free Software Foundation, either version 3 of the License, or (at your
+  option) any later version.
+
+  This program is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+  Public License for more details.
+
+  You should have received a copy of the GNU General Public License along
+  with this program. If not, see <http://www.gnu.org/licenses/>.
+
+  As a special exception, the respective Autoconf Macro's copyright owner
+  gives unlimited permission to copy, distribute and modify the configure
+  scripts that are the output of Autoconf when processing the Macro. You
+  need not follow the terms of the GNU General Public License when using
+  or distributing such scripts, even though portions of the text of the
+  Macro appear in them. The GNU General Public License (GPL) does govern
+  all other use of the material that constitutes the Autoconf Macro.
+
+  This special exception to the GPL applies to versions of the Autoconf
+  Macro released by the Autoconf Archive. When you make and distribute a
+  modified version of the Autoconf Macro, you may extend this special
+  exception to the GPL to apply to your modified version as well.
+
+CVC4 incorporates the m4 macro file "boost.m4", excluded from the above
+copyright and downloaded from http://github.com/tsuna/boost.m4 .
+See config/boost.m4.  Its copyright:
+
+  Copyright (C) 2007  Benoit Sigoure <tsuna at lrde.epita.fr>
+
+  This program is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+  Additional permission under section 7 of the GNU General Public
+  License, version 3 ("GPLv3"):
+
+  If you convey this file as part of a work that contains a
+  configuration script generated by Autoconf, you may do so under
+  terms of your choice.
+
+CVC4 incorporates some code from Boost (see src/util/channel.h).  This
+is covered by the Boost Software License, version 1.0, available at
+http://www.boost.org/LICENSE_1_0.txt and reprinted below:
+
+  Boost Software License - Version 1.0 - August 17th, 2003
+ 
+  Permission is hereby granted, free of charge, to any person or organization
+  obtaining a copy of the software and accompanying documentation covered by
+  this license (the "Software") to use, reproduce, display, distribute,
+  execute, and transmit the Software, and to prepare derivative works of the
+  Software, and to permit third-parties to whom the Software is furnished to
+  do so, all subject to the following:
+
+  The copyright notices in the Software and this entire statement, including
+  the above license grant, this restriction and the following disclaimer,
+  must be included in all copies of the Software, in whole or in part, and
+  all derivative works of the Software, unless such copies or derivative
+  works are solely in the form of machine-executable object code generated by
+  a source language processor.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+  SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+  FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+  ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+  DEALINGS IN THE SOFTWARE.
+
+CVC4 incorporates code from ANTLR3, excluded from the above copyright.
+See http://www.antlr3.org/, and the files src/parser/bounded_token_buffer.h,
+src/parser/bounded_token_buffer.cpp, and src/parser/antlr_input_imports.cpp.
+Their copyright:
+
+  [The "BSD licence"]
+  Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
+  http://www.temporal-wave.com
+  http://www.linkedin.com/in/jimidle
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+  3. The name of the author may not be used to endorse or promote products
+     derived from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+CVC4 can be optionally configured to link against CLN, the Class Library for
+Numbers, available here:
+
+  http://www.ginac.de/CLN/
+
+Please be advised that as this library is covered under the GPLv3, if you
+choose to use the combined work, "CVC4+CLN," by building CVC4 with CLN,
+then it is also covered under the GPLv3.  If you want to make sure you build
+a version of CVC4 that uses no GPLed libraries, configure CVC4 with the
+"--bsd" option before building (which is the default).  CVC4 can then be used
+in contexts where you want to license CVC4 under the (modified) BSD license.
+
+CVC4 can be optionally configured to link against GLPK, the GNU Linear
+Programming Kit, available here:
+
+  http://www.gnu.org/software/glpk/
+
+Please be advised that as this library is covered under the GPLv3, if
+you choose to use the combined work, "CVC4+GLPK," by building CVC4 with
+GLPK, then it is also covered under the GPLv3.  If you want to make sure you
+build a version of CVC4 that uses no GPLed libraries, configure CVC4 with the
+"--bsd" option before building (which is the default).  CVC4 can then be used
+in contexts where you want to license CVC4 under the (modified) BSD license.
+
+CVC4 can be optionally configured to link against GNU Readline for improved
+text-editing support in interactive mode.  GNU Readline is available here:
+
+  http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html
+
+Please be advised that as this library is covered under the GPLv3, if
+you choose to use the combined work, "CVC4+Readline," by building CVC4 with
+Readline, then it is also covered under the GPLv3.  If you want to make sure
+you build a version of CVC4 that uses no GPLed libraries, configure CVC4 with
+the "--bsd" option before building (which is the default).  CVC4 can then be
+used in contexts where you want to license CVC4 under the (modified) BSD
+license.
+
+CVC4 sources incorporate those of the LFSC proof checker, which is
+covered by the following license:
+
+  LFSC is copyright (C) 2012, 2013 The University of Iowa. All rights
+  reserved.
+
+  LFSC is open-source; distribution is under the terms of the modified
+  BSD license.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT OWNERS AND CONTRIBUTORS
+  AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..bec3936
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,251 @@
+CVC4 release version 1.4.
+
+*** Quick-start instructions
+
+*** Build dependences
+
+The following tools and libraries are required to build and run CVC4.
+Versions given are minimum versions; more recent versions should be
+compatible.
+
+  GNU C and C++ (gcc and g++), reasonably recent versions
+  GNU Make
+  GNU Bash
+  GMP v4.2 (GNU Multi-Precision arithmetic library)
+  MacPorts   [only if on a Mac; see below]
+  libantlr3c v3.2 or v3.4 (ANTLR parser generator C support library)
+  The Boost C++ base libraries
+
+The hardest to obtain and install is the libantlr3c requirement, so
+that one is explained next.
+
+On a Mac, you need to additionally install MacPorts (see
+http://www.macports.org/).  Doing so is easy.  Then, simply run the
+script contrib/mac-build, which installs a few ports from the MacPorts
+repository, then compiles and installs antlr3c using the get-antlr-3.4
+script (as described next).  The mac-build script should set you up
+with all requirements, and will tell you how to configure CVC4 when it
+completes successfully.
+
+If "make" is non-GNU on your system, make sure to invoke "gmake" (or
+whatever GNU Make is installed as).  If your usual shell is not Bash,
+the configure script should auto-correct this.  If it does not, you'll
+see strange shell syntax errors, and you may need to explicitly set
+SHELL or CONFIG_SHELL to the location of bash on your system.
+
+*** Installing libantlr3c: ANTLR parser generator C support library
+
+For libantlr3c, you can use the convenience script in
+contrib/get-antlr-3.4 --this will download, patch, and install
+libantlr3c.  On a 32-bit machine, or if you have difficulty building
+libantlr3c (or difficulty getting CVC4 to link against it later), you
+may need to remove the --enable-64bit part in the script.  (If you're
+curious, the manual instructions are at
+http://cvc4.cs.nyu.edu/wiki/Developer%27s_Guide#ANTLR3 .)
+
+*** Building CVC4
+
+The hardest build dependence to satisfy is libantlr3c; that's why it
+is explained above.  Problems in satisfying other build dependences are
+explained below.
+
+Once the build dependences are satisfied, you should be able to
+configure, make, make check, and make install without incident:
+
+    ./configure   [use --prefix to specify a prefix; default /usr/local]
+    make
+    make check    [optional but a good idea!]
+
+To build from a repository checkout (rather than a distributed CVC4
+tarball), there are additional dependences; see below.
+
+You can then "make install" to install in the prefix you gave to
+the configure script (/usr/local by default).  ** You should run
+"make check" ** before installation to ensure that CVC4 has been
+built correctly.  In particular, GCC version 4.5.1 seems to have a
+bug in the optimizer that results in incorrect behavior (and wrong
+results) in many builds.  This is a known problem for Minisat, and
+since Minisat is at the core of CVC4, a problem for CVC4.  "make check"
+easily detects this problem (by showing a number of FAILed test cases).
+It is ok if the unit tests aren't run as part of "make check", but all
+system tests and regression tests should pass without incident.
+
+To build API documentation, use "make doc".  Documentation is produced
+under doc/ but is not installed by "make install".
+
+Examples and tutorials are not installed with "make install."  You may
+want to "make install-examples".  See below.
+
+For more information about the build system itself (probably not
+necessary for casual users), see the Appendix at the bottom of this
+file.
+
+*** Installing the Boost C++ base libraries
+
+A Boost package is available on most Linux distributions; check yours
+for a package named something like libboost-dev or boost-devel.  There
+are a number of additional Boost packages in some distributions, but
+this "basic" one should be sufficient for building CVC4.
+
+Should you want to install Boost manually, or to learn more about the
+Boost project, please visit http://www.boost.org/.
+
+*** Optional requirements
+
+None of these is required, but can improve CVC4 as described below:
+
+  Optional: SWIG 2.0.x (Simplified Wrapper and Interface Generator)
+  Optional: CLN v1.3 or newer (Class Library for Numbers)
+  Optional: glpk-cut-log (A fork of the GNU Linear Programming Kit)
+  Optional: ABC library (for improved bitvector support)
+  Optional: GNU Readline library (for an improved interactive experience)
+  Optional: The Boost C++ threading library (libboost_thread)
+  Optional: CxxTest unit testing framework
+
+SWIG is necessary to build the Java API (and of course a JDK is
+necessary, too).  SWIG 1.x won't work; you'll need 2.0, and the more
+recent the better.  On Mac, we've seen SWIG segfault when generating
+CVC4 language bindings; version 2.0.8 or higher is recommended to
+avoid this.  See "Language bindings" below for build instructions.
+
+CLN is an alternative multiprecision arithmetic package that can offer
+better performance and memory footprint than GMP.  CLN is covered by
+the GNU General Public License, version 3; so if you choose to use
+CVC4 with CLN support, you are licensing CVC4 under that same license.
+(Usually CVC4's license is more permissive than GPL is; see the file
+COPYING in the CVC4 source distribution for details.)  Please visit
+http://www.ginac.de/CLN/ for more details about CLN.
+
+glpk-cut-log is a fork of GLPK (the GNU Linear Programming Kit).
+This can be used to speed up certain classes of problems for the arithmetic
+implementation in CVC4. (This is not recommended for most users.) The source
+code for glpk-cut-log is available at:
+https://github.com/timothy-king/glpk-cut-log/
+The only option for installation of glpk-cut-log is downloading the library,
+compiling and installing it manually.  CVC4 is no longer compatible with the
+main GLPK library. GLPK and glpk-cut-log are covered by the GNU General Public
+License, version 3; so if you choose to use CVC4 with GLPK support, you are
+licensing CVC4 under that same license.
+(Usually CVC4's license is more permissive; see above discussion.)
+Please visit http://www.gnu.org/software/glpk/ for more details about GLPK.
+
+ABC: A System for Sequential Synthesis and Verification is a library
+for synthesis and verification of logic circuits. This can be used to
+speed up the eager bit-vector solver by first encoding the bit-blasted
+formula into AIG format and then using ABC to simplify the AIG. To
+install abc run the contrib/get-abc script which will download and
+install a compatible version of ABC in the cvc4 directory. To configure
+CVC4 to use abc configure with --with-abc and --with-abc-dir=PATH, where
+PATH corresponds to the install path of ABC. To run CVC4 using ABC use
+the --bitblast-aig command line argument.
+Please visit http://www.eecs.berkeley.edu/~alanmi/abc/ for more details
+on ABC.
+
+The GNU Readline library is optionally used to provide command
+editing, tab completion, and history functionality at the CVC prompt
+(when running in interactive mode).  Check your distribution for a
+package named "libreadline-dev" or "readline-devel" or similar.  This
+library is covered by the GNU General Public License, version 3.  Like
+the above-mentioned libraries, if you choose to use CVC4 with readline
+support, you are licensing CVC4 under that same license.  (Please visit
+http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html for more
+details about readline.)
+
+The Boost C++ threading library (often packaged independently of the
+Boost base library) is needed to run CVC4 in "portfolio"
+(multithreaded) mode.  Check your distribution for a package named
+"libboost-thread-dev" or similar.
+
+CxxTest is necessary to run CVC4's unit tests (included with the
+distribution).  Running these is not really required for users of
+CVC4; "make check" will skip unit tests if CxxTest isn't available,
+and go on to run the extensive system- and regression-tests in the
+source tree.  However, if you're interested, you can download CxxTest
+at http://cxxtest.com/ .
+
+*** Language bindings
+
+There are several options available for using CVC4 from the API.
+
+First, CVC4 offers a complete and flexible API for manipulating
+expressions, maintaining a stack of assertions, and checking
+satisfiability, and related things.  The C++ libraries (libcvc4.so and
+libcvc4parser.so) and required headers are installed normally via a
+"make install".  This API is also available from Java (via CVC4.jar
+and libcvc4jni.so) by configuring with --enable-language-bindings=java.
+You'll also need SWIG 2.0 installed (and you might need to help
+configure find it if you installed it in a nonstandard place with
+--with-swig-dir=/path/to/swig/installation).  You may also need to
+give the configure script the path to your Java headers (in
+particular, jni.h).  You might do so with (for example):
+
+  ./configure --enable-language-bindings=java \
+      JAVA_CPPFLAGS=-I/usr/lib/jvm/java-6-openjdk-amd64/include
+
+There is also a "C++ compatibility API" (#include <cvc4/cvc3_compat.h>
+and link against libcvc4compat.so) that attempts to maintain
+source-level backwards-compatibility with the CVC3 C++ API.  The
+compatibility library is built by default, and
+--enable-language-bindings=java enables the Java compatibility library
+(CVC4compat.jar and libcvc4compatjni.so).
+--enable-language-bindings=c enables the C compatibility library
+(#include <cvc4/bindings/compat/c/c_interface.h> and link against
+libcvc4bindings_c_compat.so), and if you want both C and Java
+bindings, use --enable-language-bindings=c,java.  These compatibility
+language bindings do NOT require SWIG.
+
+The examples/ directory includes some basic examples (the "simple vc"
+and "simple vc compat" family of examples) of all these interfaces.
+
+In principle, since we use SWIG to generate the native Java API, we
+could support other languages as well.  However, using CVC4 from other
+languages is not supported, nor expected to work, at this time.  If
+you're interested in helping to develop, maintain, and test a language
+binding, please contact us via the users' mailing list at
+cvc-users at cs.nyu.edu.
+
+*** Building CVC4 from a repository checkout
+
+CVC4's main repository is kept on GitHub at:
+
+  https://github.com/CVC4/CVC4
+
+and there are numerous experimental forks housed on GitHub as well,
+by different developers, implementing various features.
+
+The following tools and libraries are additionally required to build
+CVC4 from from a repository checkout rather than from a prepared
+source tarball.
+
+  Automake v1.11
+  Autoconf v2.61
+  Libtool v2.2
+  ANTLR3 v3.2 or v3.4
+
+First, use "./autogen.sh" to create the configure script.  Then
+proceed as normal for any distribution tarball.  The parsers are
+pre-generated for the tarballs, but don't exist in the repository;
+hence the extra ANTLR3 requirement to generate the source code for the
+parsers, when building from the repository.
+
+*** Examples and tutorials are not built or installed
+
+Examples are not built by "make" or "make install".  See
+examples/README for information on what to find in the examples/
+directory, as well as information about building and installing them.
+
+*** Appendix: Build architecture
+
+The build system is generated by automake, libtool, and autoconf.  It
+is somewhat nonstandard, though, which (for one thing) requires that
+GNU Make be used.  If you ./configure in the top-level source
+directory, the objects will actually all appear in
+builds/${arch}/${build_id}.  This is to allow multiple, separate
+builds in the same place (e.g., an assertions-enabled debugging build
+alongside a production build), without changing directories at the
+shell.  The "current" build is maintained until you re-configure.
+
+You can also create your own build directory inside or outside of the
+source tree and configure from there.  All objects will then be built
+in that directory, and you'll ultimately find the "cvc4" binary in
+src/main/, and the libraries under src/ and src/parser/.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..b4c7589
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,172 @@
+#  -*-makefile-*-
+#
+# This makefile is the _source_ directory's makefile, and is static,
+# not generated.  Makefile.am is the automake makefile for the build
+# top-level (its corresponding Makefile.in is here, too, but the
+# corresponding Makefile is under builds/$arch/$buildid.
+#
+builddir = builds
+
+.PHONY: all install examples install-examples
+all install examples install-examples .DEFAULT:
+	@if test -d $(builddir); then \
+		echo cd $(builddir); \
+		cd $(builddir); \
+		echo $(MAKE) $@; \
+		$(MAKE) $@ || exit 1; \
+		$(MAKE) show-config; \
+	else \
+		echo; \
+		echo 'Run configure first, or type "make" in a configured build directory.'; \
+		echo; \
+	fi
+
+distclean maintainerclean:
+	@if test -d $(builddir); then \
+		echo cd $(builddir); \
+		cd $(builddir); \
+		echo $(MAKE) $@; \
+		$(MAKE) $@ || exit 1; \
+	fi
+	test -z "$(builddir)" || rm -fr "$(builddir)"
+	rm -f config.reconfig
+
+# synonyms for "check"
+.PHONY: test
+test: check
+
+.PHONY: doc doc-internals
+doc: doc-builds
+doc-internals: doc-internals-builds
+
+YEAR := $(shell date +%Y)
+.PHONY: submission submission-main submission-application submission-parallel
+submission:
+	@if [ -d builds-smtcomp ]; then \
+	  echo 'ERROR:' >&2; \
+	  echo 'ERROR: remove the builds-smtcomp directory' >&2; \
+	  echo 'ERROR:' >&2; \
+	  exit 1; \
+	fi
+	@if test -d cvc4-smtcomp-$(YEAR) || test -e cvc4-smtcomp-$(YEAR).zip || \
+	    test -d cvc4-smtcomp-main-$(YEAR) || test -e cvc4-smtcomp-main-$(YEAR).zip || \
+	    test -d cvc4-smtcomp-application-$(YEAR) || test -e cvc4-smtcomp-application-$(YEAR).zip || \
+	    test -d cvc4-smtcomp-parallel-$(YEAR) || test -e cvc4-smtcomp-parallel-$(YEAR).zip; then \
+	  echo 'ERROR:' >&2; \
+	  echo 'ERROR: Please remove cvc4-smtcomp*-$(YEAR) and corresponding zipfiles.' >&2; \
+	  echo 'ERROR:' >&2; \
+	  exit 1; \
+	fi
+	$(MAKE) submission-main
+	$(MAKE) submission-application
+	$(MAKE) submission-parallel
+	mkdir -p cvc4-smtcomp-$(YEAR)/bin
+	cp -p cvc4-smtcomp-main-$(YEAR)/bin/cvc4 cvc4-smtcomp-$(YEAR)/bin/cvc4-main
+	cp -p cvc4-smtcomp-main-$(YEAR)/bin/starexec_run_default cvc4-smtcomp-$(YEAR)/bin/starexec_run_default
+	cp -p cvc4-smtcomp-application-$(YEAR)/bin/cvc4 cvc4-smtcomp-$(YEAR)/bin/cvc4-application
+	cp -p cvc4-smtcomp-application-$(YEAR)/bin/starexec_run_default cvc4-smtcomp-$(YEAR)/bin/starexec_run_application
+	cp -p cvc4-smtcomp-parallel-$(YEAR)/bin/pcvc4 cvc4-smtcomp-$(YEAR)/bin/pcvc4
+	#cp -p cvc4-smtcomp-parallel-$(YEAR)/bin/starexec_run_default cvc4-smtcomp-$(YEAR)/bin/starexec_run_parallel
+	cat cvc4-smtcomp-main-$(YEAR)/starexec_description.txt \
+	    cvc4-smtcomp-application-$(YEAR)/starexec_description.txt \
+	    cvc4-smtcomp-parallel-$(YEAR)/starexec_description.txt \
+	    > cvc4-smtcomp-$(YEAR)/starexec_description.txt
+	perl -pi -e 's,/cvc4\b,/cvc4-main,g' cvc4-smtcomp-$(YEAR)/bin/starexec_run_default
+	perl -pi -e 's,/cvc4\b,/cvc4-application,g' cvc4-smtcomp-$(YEAR)/bin/starexec_run_application
+	cd cvc4-smtcomp-$(YEAR) && zip -r ../cvc4-smtcomp-$(YEAR).zip *
+submission-main:
+	@if [ -d builds-smtcomp/main ]; then \
+	  echo 'ERROR:' >&2; \
+	  echo 'ERROR: Please remove the builds-smtcomp/main directory' >&2; \
+	  echo 'ERROR:' >&2; \
+	  exit 1; \
+	fi
+	@if [ -e contrib/run-script-smtcomp$(YEAR) ]; then :; else \
+	  echo 'ERROR:' >&2; \
+	  echo 'ERROR: Expected contrib/run-script-smtcomp$(YEAR) to exist!' >&2; \
+	  echo 'ERROR:' >&2; \
+	  exit 1; \
+	fi
+	@if test -d cvc4-smtcomp-main-$(YEAR) || test -e cvc4-smtcomp-main-$(YEAR).zip; then \
+	  echo 'ERROR:' >&2; \
+	  echo 'ERROR: Please remove cvc4-smtcomp-main-$(YEAR) and cvc4-smtcomp-main-$(YEAR).zip first.' >&2; \
+	  echo 'ERROR:' >&2; \
+	  exit 1; \
+	fi
+	./autogen.sh
+	mkdir -p builds-smtcomp/main
+	( cd builds-smtcomp/main; \
+	  ../../configure competition --disable-thread-support --disable-shared --enable-static-binary --with-cln --with-glpk --with-abc --without-readline --enable-gpl; \
+	  $(MAKE) V=1; \
+	  strip src/main/cvc4; \
+	  $(MAKE) check )
+	# main track
+	mkdir -p cvc4-smtcomp-main-$(YEAR)/bin
+	cp -p builds-smtcomp/main/src/main/cvc4 cvc4-smtcomp-main-$(YEAR)/bin/cvc4
+	cp contrib/run-script-smtcomp$(YEAR) cvc4-smtcomp-main-$(YEAR)/bin/starexec_run_default
+	chmod 755 cvc4-smtcomp-main-$(YEAR)/bin/starexec_run_default
+	echo "CVC4 for SMT_COMP main track `builds-smtcomp/main/src/main/cvc4 --version | head -1 | sed 's,.*version ,,;s,-,_,g;s,[^a-zA-Z0-9. _],,g'`" > cvc4-smtcomp-main-$(YEAR)/starexec_description.txt
+	cd cvc4-smtcomp-main-$(YEAR) && zip -r ../cvc4-smtcomp-main-$(YEAR).zip *
+submission-application:
+	# application track is a separate build because it has different preprocessor #defines
+	@if [ -d builds-smtcomp/application ]; then \
+	  echo 'ERROR:' >&2; \
+	  echo 'ERROR: Please remove the builds-smtcomp/application directory' >&2; \
+	  echo 'ERROR:' >&2; \
+	  exit 1; \
+	fi
+	@if test -d cvc4-smtcomp-application-$(YEAR) || test -e cvc4-smtcomp-application-$(YEAR).zip; then \
+	  echo 'ERROR:' >&2; \
+	  echo 'ERROR: Please remove cvc4-smtcomp-application-$(YEAR) and cvc4-smtcomp-application-$(YEAR).zip first.' >&2; \
+	  echo 'ERROR:' >&2; \
+	  exit 1; \
+	fi
+	@if [ -e contrib/run-script-smtcomp$(YEAR)-application ]; then :; else \
+	  echo 'ERROR:' >&2; \
+	  echo 'ERROR: Expected contrib/run-script-smtcomp$(YEAR)-application to exist!' >&2; \
+	  echo 'ERROR:' >&2; \
+	  exit 1; \
+	fi
+	./autogen.sh
+	mkdir -p builds-smtcomp/application
+	( cd builds-smtcomp/application; \
+	  ../../configure competition --disable-thread-support --disable-shared --enable-static-binary --with-cln --without-glpk --with-abc --without-readline --enable-gpl CXXFLAGS=-DCVC4_SMTCOMP_APPLICATION_TRACK CFLAGS=-DCVC4_SMTCOMP_APPLICATION_TRACK; \
+	  $(MAKE) V=1; \
+	  strip src/main/cvc4; \
+	  $(MAKE) check )
+	# package the application track zipfile
+	mkdir -p cvc4-smtcomp-application-$(YEAR)/bin
+	cp -p builds-smtcomp/application/src/main/cvc4 cvc4-smtcomp-application-$(YEAR)/bin/cvc4
+	cp contrib/run-script-smtcomp$(YEAR)-application cvc4-smtcomp-application-$(YEAR)/bin/starexec_run_default
+	chmod 755 cvc4-smtcomp-application-$(YEAR)/bin/starexec_run_default
+	echo "CVC4 for SMT_COMP application track `builds-smtcomp/application/src/main/cvc4 --version | head -1 | sed 's,.*version ,,;s,-,_,g;s,[^a-zA-Z0-9. _],,g'`" > cvc4-smtcomp-application-$(YEAR)/starexec_description.txt
+	cd cvc4-smtcomp-application-$(YEAR) && zip -r ../cvc4-smtcomp-application-$(YEAR).zip *
+submission-parallel:
+	# parallel track can't be built with -cln, so it's a separate build
+	@if [ -d builds-smtcomp/parallel ]; then \
+	  echo 'ERROR:' >&2; \
+	  echo 'ERROR: Please remove the builds-smtcomp/parallel directory' >&2; \
+	  echo 'ERROR:' >&2; \
+	  exit 1; \
+	fi
+	@if test -d cvc4-smtcomp-parallel-$(YEAR) || test -e cvc4-smtcomp-parallel-$(YEAR).zip; then \
+	  echo 'ERROR:' >&2; \
+	  echo 'ERROR: Please remove cvc4-smtcomp-parallel-$(YEAR) and cvc4-smtcomp-parallel-$(YEAR).zip first.' >&2; \
+	  echo 'ERROR:' >&2; \
+	  exit 1; \
+	fi
+	./autogen.sh
+	mkdir -p builds-smtcomp/parallel
+	( cd builds-smtcomp/parallel; \
+	  ../../configure competition --disable-shared --enable-static-binary --with-gmp --with-portfolio --with-glpk --with-abc --without-readline --enable-gpl; \
+	  $(MAKE) V=1; \
+	  strip src/main/pcvc4; \
+	  $(MAKE) check BINARY=pcvc4 CVC4_REGRESSION_ARGS=--fallback-sequential || true )
+	# package the parallel track zipfile
+	mkdir -p cvc4-smtcomp-parallel-$(YEAR)/bin
+	cp -p builds-smtcomp/parallel/src/main/pcvc4 cvc4-smtcomp-parallel-$(YEAR)/bin/pcvc4
+	( echo '#!/bin/sh'; \
+	  echo 'exec ./pcvc4 --threads 2 -L smt2 --no-checking --no-interactive --no-wait-to-join "$@"' ) > cvc4-smtcomp-parallel-$(YEAR)/bin/starexec_run_default
+	chmod 755 cvc4-smtcomp-parallel-$(YEAR)/bin/starexec_run_default
+	echo "CVC4 for SMT_COMP parallel track `builds-smtcomp/parallel/src/main/pcvc4 --version | head -1 | sed 's,.*version ,,;s,-,_,g;s,[^a-zA-Z0-9. _],,g'`" > cvc4-smtcomp-parallel-$(YEAR)/starexec_description.txt
+	cd cvc4-smtcomp-parallel-$(YEAR) && zip -r ../cvc4-smtcomp-parallel-$(YEAR).zip *
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..55c357d
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,175 @@
+include $(top_srcdir)/config/doxygen.am
+
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas
+
+AUTOMAKE_OPTIONS = foreign
+ACLOCAL_AMFLAGS = -I config
+
+SUBDIRS_BASE = src test contrib
+if CVC4_PROOF
+  SUBDIRS = proofs/signatures proofs/lfsc_checker $(SUBDIRS_BASE)
+else
+  SUBDIRS = $(SUBDIRS_BASE)
+endif
+DIST_SUBDIRS = proofs/signatures proofs/lfsc_checker $(SUBDIRS_BASE) examples
+
+.PHONY: examples
+examples: all
+	(cd examples && $(MAKE) $(AM_MAKEFLAGS))
+
+.PHONY: install-examples
+install-examples:
+	(cd examples && $(MAKE) $(AM_MAKEFLAGS) install-data)
+
+.PHONY: units systemtests regress regress0 regress1 regress2 regress3
+systemtests regress regress0 regress1 regress2 regress3: all
+	+(cd test && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1
+# We descend into "src" with the "check" target here to ensure that
+# the test prerequisites are all built.
+units:
+	(cd src && $(MAKE) $(AM_MAKEFLAGS) check)
+	+(cd test && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1
+
+LCOV = lcov
+GENHTML = genhtml
+
+LCOV_EXCLUDES = \
+	"$(CXXTEST)/*" \
+	"/usr/include/*" \
+	"$(abs_top_builddir)/test/*"
+
+.PHONY: show-config
+show-config:
+	@echo
+	@echo '==============================================================================='
+	@echo 'This CVC4 build was configured with:'
+	@echo '  configure $(cvc4_config_cmdline)'
+	@echo '==============================================================================='
+	@echo
+
+.PHONY: lcov lcov-all lcov18
+if COVERAGE_ENABLED
+
+# lcov 1.7 has some bugs that we have to work around (can't do
+# baseline measurement, merge between different test-names doesn't
+# work...)
+lcov: all
+	$(LCOV) -z -d .
+	(cd src && $(MAKE) $(AM_MAKEFLAGS) check)
+	+(cd test/unit && $(MAKE) $(AM_MAKEFLAGS) check)
+	$(LCOV) -c -d . -t cvc4_units -o cvc4-coverage-full.info
+	$(LCOV) -o cvc4-coverage.info -r cvc4-coverage-full.info $(LCOV_EXCLUDES)
+	mkdir -p "@top_srcdir@/html"
+	$(GENHTML) -o "@top_srcdir@/html" cvc4-coverage.info
+	@echo "De-mangling C++ symbols..."
+	@find "@top_srcdir@/html" -name '*.func.html' | \
+		xargs perl -pi -e 's#(<td class="coverFn"><a href=".*">)(.*)(</a></td>)#$$_=`c++filt "$$2"`;chomp;print "$$1<xmp>$$_</xmp>$$3\n";#e'
+
+lcov-all: all
+	$(LCOV) -z -d .
+	(cd src && $(MAKE) $(AM_MAKEFLAGS) check)
+	+(cd test && $(MAKE) $(AM_MAKEFLAGS) check)
+	$(LCOV) -c -d . -t cvc4_units -o cvc4-coverage-full.info
+	$(LCOV) -o cvc4-coverage.info -r cvc4-coverage-full.info $(LCOV_EXCLUDES)
+	mkdir -p "@top_srcdir@/html"
+	$(GENHTML) -o "@top_srcdir@/html" cvc4-coverage.info
+	@echo "De-mangling C++ symbols..."
+	@find "@top_srcdir@/html" -name '*.func.html' | \
+		xargs perl -pi -e 's#(<td class="coverFn"><a href=".*">)(.*)(</a></td>)#$$_=`c++filt "$$2"`;chomp;print "$$1<xmp>$$_</xmp>$$3\n";#e'
+
+# when we get a working lcov, we can do better stats for
+# modules/test-types; unfortunately lcov 1.8 directory paths
+# are broken(?) or at least different than 1.7
+lcov18: all
+	+ at for testtype in public black white; do \
+		echo; echo "=== Collecting coverage data from $$testtype unit tests ==="; \
+		echo $(LCOV) -z -d .; \
+		$(LCOV) -z -d . || exit 1; \
+		echo "(cd src && $(MAKE) $(AM_MAKEFLAGS) check) || exit 1"; \
+		(cd src && $(MAKE) $(AM_MAKEFLAGS) check) || exit 1; \
+		echo "(cd test/unit && $(MAKE) $(AM_MAKEFLAGS) check TEST_SUFFIX=_$$testtype) || exit 1"; \
+		(cd test/unit && $(MAKE) $(AM_MAKEFLAGS) check TEST_SUFFIX=_$$testtype) || exit 1; \
+		echo $(LCOV) -c -d . -t $$testtype -o cvc4-coverage-$$testtype-full.info || exit 1; \
+		$(LCOV) -c -d . -t $$testtype -o cvc4-coverage-$$testtype-full.info || exit 1; \
+		echo $(LCOV) -o cvc4-coverage-$$testtype.info -r cvc4-coverage-$$testtype-full.info $(LCOV_EXCLUDES); \
+		$(LCOV) -o cvc4-coverage-$$testtype.info -r cvc4-coverage-$$testtype-full.info $(LCOV_EXCLUDES) || exit 1; \
+		echo; \
+	done
+	mkdir -p "@top_srcdir@/html"
+	$(GENHTML) -o "@top_srcdir@/html" cvc4-coverage-public.info cvc4-coverage-black.info cvc4-coverage-white.info
+	@echo "De-mangling C++ symbols..."
+	@find "@top_srcdir@/html" -name '*.func.html' | \
+		xargs perl -ni -e 's,(<td class="coverFn"><a href=".*">)(.*)(</a></td>.*),$$_=`c++filt "$$2"`;chomp;print "$$1<xmp>$$_</xmp>$$3\n";,e || print'
+
+else
+
+lcov lcov-all lcov18:
+	@echo
+	@echo "Coverage is not enabled in this build." >&2
+	@echo "Please run configure with --enable-coverage." >&2
+	@echo
+	@false
+
+endif
+
+# abs_srcdir is required here to get this Makefile instead of the
+# Makefile in the builddir (since $(srcdir) is stripped off of
+# EXTRA_DIST files)
+EXTRA_DIST = \
+	Makefile.builds.in \
+	Makefile.subdir \
+	library_versions \
+	RELEASE-NOTES \
+	config/build-type \
+	config/mkbuilddir \
+	config/doxygen.cfg \
+	doc/find_public_interface.sh \
+	doc/cvc4.1_template.in \
+	doc/cvc4.5.in \
+	doc/libcvc4.3_template.in \
+	doc/SmtEngine.3cvc_template.in \
+	doc/options.3cvc_template.in \
+	doc/libcvc4parser.3.in \
+	doc/libcvc4compat.3.in
+
+man_MANS = \
+	doc/cvc4.1 \
+	doc/pcvc4.1 \
+	doc/cvc4.5 \
+	doc/libcvc4.3 \
+	doc/SmtEngine.3cvc \
+	doc/options.3cvc \
+	doc/libcvc4parser.3 \
+	doc/libcvc4compat.3
+
+doc/pcvc4.1: doc/cvc4.1
+	rm -f doc/pcvc4.1
+	cp -p "$<" "$@"
+
+# Can't put the first several in EXTRA_DIST because those are processed
+# *before* recursive "make dist", and these files are generated in a
+# subdirectory invocation of "make dist".
+#
+# The Makefile also can't go in EXTRA_DIST, because then automake thinks
+# it's the one in the builddir and we want the one from the srcdir.
+dist-hook: doc/cvc4.1 doc/libcvc4.3 doc/SmtEngine.3cvc doc/options.3cvc
+	cp -p $^ "$(distdir)/doc"
+	cp -p "$(srcdir)/Makefile" "$(distdir)/Makefile"
+
+distclean-local:
+	test -z "$(DX_DOCDIR)" || rm -fr "$(DX_DOCDIR)"
+
+# these have .in versions
+DISTCLEANFILES = \
+	doc/cvc4.1 \
+	doc/cvc4.1_template \
+	doc/pcvc4.1 \
+	doc/cvc4.5 \
+	doc/libcvc4.3 \
+	doc/libcvc4.3_template \
+	doc/libcvc4compat.3 \
+	doc/libcvc4parser.3 \
+	doc/SmtEngine.3cvc \
+	doc/SmtEngine.3cvc_template \
+	doc/options.3cvc \
+	doc/options.3cvc_template
diff --git a/Makefile.builds.in b/Makefile.builds.in
new file mode 100644
index 0000000..265556f
--- /dev/null
+++ b/Makefile.builds.in
@@ -0,0 +1,143 @@
+# -*- makefile -*-
+#
+# This Makefile produces the Makefile in the top-level builds/
+# directory for standard-path builds (e.g., those configured from the
+# source tree).  It has some autoconf cruft in it, documented below.
+#
+# Its main purposes are to:
+# 1. build the current build profile
+# 2. set up builds/$(CURRENT_BUILD)/{bin,lib} symlinks
+# 3. set up builds/bin and builds/lib symlinks
+
+# Include the "current" build profile.
+include current
+
+# Set up $(MAKE)
+ at SET_MAKE@
+
+# Set up some basic autoconf make vars
+srcdir = @srcdir@
+builddir = @builddir@
+install_sh = @install_sh@
+mkinstalldirs = $(install_sh) -d
+exec_prefix = @exec_prefix@
+prefix = @prefix@
+bindir = @bindir@
+libdir = @libdir@
+abs_builddir = @abs_builddir@
+distdir = @PACKAGE at -@VERSION@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+EXEEXT = @EXEEXT@
+SHELL = @SHELL@
+LIBTOOL = $(CURRENT_BUILD)/libtool
+
+# Are we building the libcvc4compat library ?
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+
+# @
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 =
+# mkinstalldirs (never prefix with @; not a top-level instruction)
+AM_V_mkdir_noat = $(am__v_mkdir_noat_$(V))
+am__v_mkdir_noat_ = $(am__v_mkdir_noat_$(AM_DEFAULT_VERBOSITY))
+am__v_mkdir_noat_0 = $(SHELL) -c 'echo "   MKDIR $$@"; $(mkinstalldirs) "$$@"' bash
+am__v_mkdir_noat_1 = $(mkinstalldirs)
+# mkinstalldirs (can prefix with @)
+AM_V_mkdir = $(am__v_mkdir_$(V))
+am__v_mkdir_ = $(am__v_mkdir_$(AM_DEFAULT_VERBOSITY))
+am__v_mkdir_0 = @$(am__v_mkdir_noat_0)
+am__v_mkdir_1 = $(am__v_mkdir_noat_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$(EXEEXT) pcvc4$(EXEEXT)
+
+.PHONY: _default_build_ all examples
+_default_build_: all
+all:
+#	build the current build profile
+	$(AM_V_at)(cd $(CURRENT_BUILD) && $(MAKE) $@)
+#	set up builds/$(CURRENT_BUILD)/{bin,lib}
+	$(AM_V_mkdir) $(CURRENT_BUILD)/bin
+	$(AM_V_mkdir) $(CURRENT_BUILD)/lib
+#	symlink libcvc4, libcvc4parser
+	$(AM_V_at)cd $(CURRENT_BUILD)/lib && \
+	ln -sf ../src/libcvc4.* \
+		../src/parser/libcvc4parser.* \
+		.
+	-$(AM_V_at)cd $(CURRENT_BUILD)/lib && \
+	test -d ../src/.libs && \
+	ln -sf ../src/.libs/libcvc4.* \
+		.
+	-$(AM_V_at)cd $(CURRENT_BUILD)/lib && \
+	test -d ../src/parser/.libs && \
+	ln -sf ../src/parser/.libs/libcvc4parser.* \
+		.
+ifeq ($(CVC4_BUILD_LIBCOMPAT),yes)
+#	symlink libcvc4compat
+	$(AM_V_at)cd $(CURRENT_BUILD)/lib && \
+	ln -sf ../src/compat/libcvc4compat.* \
+		.
+	-$(AM_V_at)cd $(CURRENT_BUILD)/lib && \
+	test -d ../src/compat/.libs && \
+	ln -sf ../src/compat/.libs/libcvc4compat.* \
+		.
+endif
+#	symlink the binaries
+	$(AM_V_at)cd $(CURRENT_BUILD)/bin && \
+	for binary in $(CVC4_BINARIES); do \
+		if test -x ../src/main/$$binary; then \
+			ln -sf ../src/main/$$binary \
+				. ; \
+		else \
+			rm -f "$$binary"; \
+		fi; \
+	done
+#	set up builds/doc and builds/examples
+	$(AM_V_at)rm -f bin; ln -sf $(CURRENT_BUILD)/bin bin
+	$(AM_V_at)rm -f lib; ln -sf $(CURRENT_BUILD)/lib lib
+	$(AM_V_at)rm -f doc; ln -sf $(CURRENT_BUILD)/doc doc
+	$(AM_V_at)rm -f examples; ln -sf $(CURRENT_BUILD)/examples examples
+
+# The descent into "src" with target "check" is to build check
+# prerequisites (e.g. CHECK_PROGRAMS, CHECK_LTLIBRARIES, ...).
+check test units: all
+	(cd $(CURRENT_BUILD)/src && $(MAKE) check)
+	+(cd $(CURRENT_BUILD)/test && $(MAKE) $@)
+systemtests regress: all
+	+(cd $(CURRENT_BUILD)/test && $(MAKE) $@)
+units%: all
+	(cd $(CURRENT_BUILD)/src && $(MAKE) check)
+	+(cd $(CURRENT_BUILD)/test && $(MAKE) units TEST_PREFIX=$(subst units:,,$@))
+regress%: all
+	+(cd $(CURRENT_BUILD)/test && $(MAKE) $@)
+
+dist:
+	(cd $(CURRENT_BUILD) && $(MAKE) $@)
+	$(install_sh) \
+		$(CURRENT_BUILD)/$(distdir).tar.gz \
+		"`pwd`"
+
+TAGS tags:
+	+(cd $(CURRENT_BUILD) && $(MAKE) $@)
+	ln -sf $(CURRENT_BUILD)/TAGS .
+
+.PHONY: TAGS tags
+
+.PHONY: doc-builds doc-prereq
+doc-builds: doc-prereq
+	+(cd $(CURRENT_BUILD) && $(MAKE) doxygen-doc CVC4_DOXYGEN_INPUT="`builddir="$(builddir)" srcdir="$(srcdir)" "$(srcdir)/doc/find_public_interface.sh"`")
+doc-internals-builds: doc-prereq
+	+(cd $(CURRENT_BUILD) && $(MAKE) doxygen-doc CVC4_DOXYGEN_INPUT="$(srcdir)/src src")
+doc-prereq:
+	+(cd $(CURRENT_BUILD) && for dir in `find . -name Makefile | xargs grep -l BUILT_SOURCES`; do (cd `dirname "$$dir"`; (cat Makefile; echo 'doc-prereq: $$(BUILT_SOURCES)') | $(MAKE) -f- doc-prereq); done)
+
+# Any other target than the default doesn't do the extra stuff above.
+# Split out "examples" target, recent Makes don't want them combined.
+examples:
+	+(cd $(CURRENT_BUILD) && $(MAKE) $@)
+%:
+	+(cd $(CURRENT_BUILD) && $(MAKE) $@)
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000..c51db4c
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,1430 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Renamed doxygen.am from aminclude.am for inclusion in CVC4
+
+# Copyright (C) 2004 Oren Ben-Kiki
+# This file is distributed under the same terms as the Automake macro files.
+
+# Generate automatic documentation using Doxygen. Goals and variables values
+# are controlled by the various DX_COND_??? conditionals set by autoconf.
+#
+# The provided goals are:
+# doxygen-doc: Generate all doxygen documentation.
+# doxygen-run: Run doxygen, which will generate some of the documentation
+#              (HTML, CHM, CHI, MAN, RTF, XML) but will not do the post
+#              processing required for the rest of it (PS, PDF, and some MAN).
+# doxygen-man: Rename some doxygen generated man pages.
+# doxygen-ps: Generate doxygen PostScript documentation.
+# doxygen-pdf: Generate doxygen PDF documentation.
+#
+# Note that by default these are not integrated into the automake goals. If
+# doxygen is used to generate man pages, you can achieve this integration by
+# setting man3_MANS to the list of man pages generated and then adding the
+# dependency:
+#
+#   $(man3_MANS): doxygen-doc
+#
+# This will cause make to run doxygen and generate all the documentation.
+#
+# The following variable is intended for use in Makefile.am:
+#
+# DX_CLEANFILES = everything to clean.
+#
+# This is usually added to MOSTLYCLEANFILES.
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+	$(am__configure_deps) $(am__DIST_COMMON)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = cvc4autoconfig.h
+CONFIG_CLEAN_FILES = Makefile.builds doc/cvc4.1_template.tmp \
+	doc/cvc4.5.tmp doc/libcvc4.3_template.tmp \
+	doc/SmtEngine.3cvc_template.tmp doc/options.3cvc_template.tmp \
+	doc/libcvc4parser.3.tmp doc/libcvc4compat.3.tmp
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+man1dir = $(mandir)/man1
+am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" \
+	"$(DESTDIR)$(man5dir)"
+man3dir = $(mandir)/man3
+man5dir = $(mandir)/man5
+NROFF = nroff
+MANS = $(man_MANS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	cscope distdir dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+	$(LISP)cvc4autoconfig.h.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+CSCOPE = cscope
+am__DIST_COMMON = $(srcdir)/Makefile.builds.in $(srcdir)/Makefile.in \
+	$(srcdir)/cvc4autoconfig.h.in $(top_srcdir)/config/compile \
+	$(top_srcdir)/config/config.guess \
+	$(top_srcdir)/config/config.sub \
+	$(top_srcdir)/config/doxygen.am \
+	$(top_srcdir)/config/install-sh $(top_srcdir)/config/ltmain.sh \
+	$(top_srcdir)/config/missing \
+	$(top_srcdir)/doc/SmtEngine.3cvc_template.in \
+	$(top_srcdir)/doc/cvc4.1_template.in \
+	$(top_srcdir)/doc/cvc4.5.in \
+	$(top_srcdir)/doc/libcvc4.3_template.in \
+	$(top_srcdir)/doc/libcvc4compat.3.in \
+	$(top_srcdir)/doc/libcvc4parser.3.in \
+	$(top_srcdir)/doc/options.3cvc_template.in AUTHORS COPYING \
+	INSTALL NEWS README THANKS config/compile config/config.guess \
+	config/config.sub config/install-sh config/ltmain.sh \
+	config/missing
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at DX_COND_doc_TRUE@@DX_COND_html_TRUE at DX_CLEAN_HTML = @DX_DOCDIR@/html
+ at DX_COND_chm_TRUE@@DX_COND_doc_TRUE at DX_CLEAN_CHM = @DX_DOCDIR@/chm
+ at DX_COND_chi_TRUE@@DX_COND_chm_TRUE@@DX_COND_doc_TRUE at DX_CLEAN_CHI = @DX_DOCDIR@/@PACKAGE at .chi
+ at DX_COND_doc_TRUE@@DX_COND_man_TRUE at DX_CLEAN_MAN = @DX_DOCDIR@/man
+ at DX_COND_doc_TRUE@@DX_COND_rtf_TRUE at DX_CLEAN_RTF = @DX_DOCDIR@/rtf
+ at DX_COND_doc_TRUE@@DX_COND_xml_TRUE at DX_CLEAN_XML = @DX_DOCDIR@/xml
+ at DX_COND_doc_TRUE@@DX_COND_ps_TRUE at DX_CLEAN_PS = @DX_DOCDIR@/@PACKAGE at .ps
+ at DX_COND_doc_TRUE@@DX_COND_ps_TRUE at DX_PS_GOAL = doxygen-ps
+ at DX_COND_doc_TRUE@@DX_COND_pdf_TRUE at DX_CLEAN_PDF = @DX_DOCDIR@/@PACKAGE at .pdf
+ at DX_COND_doc_TRUE@@DX_COND_pdf_TRUE at DX_PDF_GOAL = doxygen-pdf
+ at DX_COND_doc_TRUE@@DX_COND_latex_TRUE at DX_CLEAN_LATEX = @DX_DOCDIR@/latex
+ at DX_COND_doc_TRUE@DX_CLEANFILES = \
+ at DX_COND_doc_TRUE@    @DX_DOCDIR@/@PACKAGE at .tag \
+ at DX_COND_doc_TRUE@    -r \
+ at DX_COND_doc_TRUE@    $(DX_CLEAN_HTML) \
+ at DX_COND_doc_TRUE@    $(DX_CLEAN_CHM) \
+ at DX_COND_doc_TRUE@    $(DX_CLEAN_CHI) \
+ at DX_COND_doc_TRUE@    $(DX_CLEAN_MAN) \
+ at DX_COND_doc_TRUE@    $(DX_CLEAN_RTF) \
+ at DX_COND_doc_TRUE@    $(DX_CLEAN_XML) \
+ at DX_COND_doc_TRUE@    $(DX_CLEAN_PS) \
+ at DX_COND_doc_TRUE@    $(DX_CLEAN_PDF) \
+ at DX_COND_doc_TRUE@    $(DX_CLEAN_LATEX)
+
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas
+AUTOMAKE_OPTIONS = foreign
+ACLOCAL_AMFLAGS = -I config
+SUBDIRS_BASE = src test contrib
+ at CVC4_PROOF_FALSE@SUBDIRS = $(SUBDIRS_BASE)
+ at CVC4_PROOF_TRUE@SUBDIRS = proofs/signatures proofs/lfsc_checker $(SUBDIRS_BASE)
+DIST_SUBDIRS = proofs/signatures proofs/lfsc_checker $(SUBDIRS_BASE) examples
+LCOV = lcov
+GENHTML = genhtml
+LCOV_EXCLUDES = \
+	"$(CXXTEST)/*" \
+	"/usr/include/*" \
+	"$(abs_top_builddir)/test/*"
+
+
+# abs_srcdir is required here to get this Makefile instead of the
+# Makefile in the builddir (since $(srcdir) is stripped off of
+# EXTRA_DIST files)
+EXTRA_DIST = \
+	Makefile.builds.in \
+	Makefile.subdir \
+	library_versions \
+	RELEASE-NOTES \
+	config/build-type \
+	config/mkbuilddir \
+	config/doxygen.cfg \
+	doc/find_public_interface.sh \
+	doc/cvc4.1_template.in \
+	doc/cvc4.5.in \
+	doc/libcvc4.3_template.in \
+	doc/SmtEngine.3cvc_template.in \
+	doc/options.3cvc_template.in \
+	doc/libcvc4parser.3.in \
+	doc/libcvc4compat.3.in
+
+man_MANS = \
+	doc/cvc4.1 \
+	doc/pcvc4.1 \
+	doc/cvc4.5 \
+	doc/libcvc4.3 \
+	doc/SmtEngine.3cvc \
+	doc/options.3cvc \
+	doc/libcvc4parser.3 \
+	doc/libcvc4compat.3
+
+
+# these have .in versions
+DISTCLEANFILES = \
+	doc/cvc4.1 \
+	doc/cvc4.1_template \
+	doc/pcvc4.1 \
+	doc/cvc4.5 \
+	doc/libcvc4.3 \
+	doc/libcvc4.3_template \
+	doc/libcvc4compat.3 \
+	doc/libcvc4parser.3 \
+	doc/SmtEngine.3cvc \
+	doc/SmtEngine.3cvc_template \
+	doc/options.3cvc \
+	doc/options.3cvc_template
+
+all: cvc4autoconfig.h
+	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh: Makefile
+	@:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/doxygen.am $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+	      $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    echo ' $(SHELL) ./config.status'; \
+	    $(SHELL) ./config.status;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
+$(top_srcdir)/config/doxygen.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	$(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+cvc4autoconfig.h: stamp-h1
+	@test -f $@ || rm -f stamp-h1
+	@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
+
+stamp-h1: $(srcdir)/cvc4autoconfig.h.in $(top_builddir)/config.status
+	@rm -f stamp-h1
+	cd $(top_builddir) && $(SHELL) ./config.status cvc4autoconfig.h
+$(srcdir)/cvc4autoconfig.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
+	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+	rm -f stamp-h1
+	touch $@
+
+distclean-hdr:
+	-rm -f cvc4autoconfig.h stamp-h1
+Makefile.builds: $(top_builddir)/config.status $(srcdir)/Makefile.builds.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+doc/cvc4.1_template.tmp: $(top_builddir)/config.status $(top_srcdir)/doc/cvc4.1_template.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+doc/cvc4.5.tmp: $(top_builddir)/config.status $(top_srcdir)/doc/cvc4.5.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+doc/libcvc4.3_template.tmp: $(top_builddir)/config.status $(top_srcdir)/doc/libcvc4.3_template.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+doc/SmtEngine.3cvc_template.tmp: $(top_builddir)/config.status $(top_srcdir)/doc/SmtEngine.3cvc_template.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+doc/options.3cvc_template.tmp: $(top_builddir)/config.status $(top_srcdir)/doc/options.3cvc_template.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+doc/libcvc4parser.3.tmp: $(top_builddir)/config.status $(top_srcdir)/doc/libcvc4parser.3.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+doc/libcvc4compat.3.tmp: $(top_builddir)/config.status $(top_srcdir)/doc/libcvc4compat.3.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool config.lt
+install-man1: $(man_MANS)
+	@$(NORMAL_INSTALL)
+	@list1=''; \
+	list2='$(man_MANS)'; \
+	test -n "$(man1dir)" \
+	  && test -n "`echo $$list1$$list2`" \
+	  || exit 0; \
+	echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+	$(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+	{ for i in $$list1; do echo "$$i"; done;  \
+	if test -n "$$list2"; then \
+	  for i in $$list2; do echo "$$i"; done \
+	    | sed -n '/\.1[a-z]*$$/p'; \
+	fi; \
+	} | while read p; do \
+	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; echo "$$p"; \
+	done | \
+	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+	sed 'N;N;s,\n, ,g' | { \
+	list=; while read file base inst; do \
+	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+	  fi; \
+	done; \
+	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+	while read files; do \
+	  test -z "$$files" || { \
+	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+	done; }
+
+uninstall-man1:
+	@$(NORMAL_UNINSTALL)
+	@list=''; test -n "$(man1dir)" || exit 0; \
+	files=`{ for i in $$list; do echo "$$i"; done; \
+	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+	  sed -n '/\.1[a-z]*$$/p'; \
+	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+	dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+install-man3: $(man_MANS)
+	@$(NORMAL_INSTALL)
+	@list1=''; \
+	list2='$(man_MANS)'; \
+	test -n "$(man3dir)" \
+	  && test -n "`echo $$list1$$list2`" \
+	  || exit 0; \
+	echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \
+	$(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \
+	{ for i in $$list1; do echo "$$i"; done;  \
+	if test -n "$$list2"; then \
+	  for i in $$list2; do echo "$$i"; done \
+	    | sed -n '/\.3[a-z]*$$/p'; \
+	fi; \
+	} | while read p; do \
+	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; echo "$$p"; \
+	done | \
+	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+	sed 'N;N;s,\n, ,g' | { \
+	list=; while read file base inst; do \
+	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \
+	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \
+	  fi; \
+	done; \
+	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+	while read files; do \
+	  test -z "$$files" || { \
+	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \
+	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \
+	done; }
+
+uninstall-man3:
+	@$(NORMAL_UNINSTALL)
+	@list=''; test -n "$(man3dir)" || exit 0; \
+	files=`{ for i in $$list; do echo "$$i"; done; \
+	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+	  sed -n '/\.3[a-z]*$$/p'; \
+	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+	dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir)
+install-man5: $(man_MANS)
+	@$(NORMAL_INSTALL)
+	@list1=''; \
+	list2='$(man_MANS)'; \
+	test -n "$(man5dir)" \
+	  && test -n "`echo $$list1$$list2`" \
+	  || exit 0; \
+	echo " $(MKDIR_P) '$(DESTDIR)$(man5dir)'"; \
+	$(MKDIR_P) "$(DESTDIR)$(man5dir)" || exit 1; \
+	{ for i in $$list1; do echo "$$i"; done;  \
+	if test -n "$$list2"; then \
+	  for i in $$list2; do echo "$$i"; done \
+	    | sed -n '/\.5[a-z]*$$/p'; \
+	fi; \
+	} | while read p; do \
+	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; echo "$$p"; \
+	done | \
+	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+	sed 'N;N;s,\n, ,g' | { \
+	list=; while read file base inst; do \
+	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \
+	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \
+	  fi; \
+	done; \
+	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+	while read files; do \
+	  test -z "$$files" || { \
+	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \
+	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \
+	done; }
+
+uninstall-man5:
+	@$(NORMAL_UNINSTALL)
+	@list=''; test -n "$(man5dir)" || exit 0; \
+	files=`{ for i in $$list; do echo "$$i"; done; \
+	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+	  sed -n '/\.5[a-z]*$$/p'; \
+	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+	dir='$(DESTDIR)$(man5dir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+	test ! -s cscope.files \
+	  || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+	-rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+
+distdir: $(DISTFILES)
+	$(am__remove_distdir)
+	test -d "$(distdir)" || mkdir "$(distdir)"
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+	$(MAKE) $(AM_MAKEFLAGS) \
+	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+	  dist-hook
+	-test -n "$(am__skip_mode_fix)" \
+	|| find "$(distdir)" -type d ! -perm -755 \
+		-exec chmod u+rwx,go+rx {} \; -o \
+	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+	|| chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__post_remove_distdir)
+
+dist-bzip2: distdir
+	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+	$(am__post_remove_distdir)
+
+dist-lzip: distdir
+	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+	$(am__post_remove_distdir)
+
+dist-xz: distdir
+	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+	$(am__post_remove_distdir)
+
+dist-tarZ: distdir
+	@echo WARNING: "Support for distribution archives compressed with" \
+		       "legacy program 'compress' is deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+	$(am__post_remove_distdir)
+
+dist-shar: distdir
+	@echo WARNING: "Support for shar distribution archives is" \
+	               "deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+	$(am__post_remove_distdir)
+
+dist-zip: distdir
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
+	$(am__post_remove_distdir)
+
+dist dist-all:
+	$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+	$(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	case '$(DIST_ARCHIVES)' in \
+	*.tar.gz*) \
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+	*.tar.bz2*) \
+	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+	*.tar.lz*) \
+	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+	*.tar.xz*) \
+	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+	*.tar.Z*) \
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+	*.shar.gz*) \
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+	*.zip*) \
+	  unzip $(distdir).zip ;;\
+	esac
+	chmod -R a-w $(distdir)
+	chmod u+w $(distdir)
+	mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
+	chmod a-w $(distdir)
+	test -d $(distdir)/_build || exit 0; \
+	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+	  && am__cwd=`pwd` \
+	  && $(am__cd) $(distdir)/_build/sub \
+	  && ../../configure \
+	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	    --srcdir=../.. --prefix="$$dc_install_base" \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+	        distuninstallcheck \
+	  && chmod -R a-w "$$dc_install_base" \
+	  && ({ \
+	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+	  && rm -rf "$$dc_destdir" \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+	  && rm -rf $(DIST_ARCHIVES) \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+	  && cd "$$am__cwd" \
+	  || exit 1
+	$(am__post_remove_distdir)
+	@(echo "$(distdir) archives ready for distribution: "; \
+	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+	@test -n '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: trying to run $@ with an empty' \
+	       '$$(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	$(am__cd) '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+	   || { echo "ERROR: files left after uninstall:" ; \
+	        if test -n "$(DESTDIR)"; then \
+	          echo "  (check DESTDIR support)"; \
+	        fi ; \
+	        $(distuninstallcheck_listfiles) ; \
+	        exit 1; } >&2
+distcleancheck: distclean
+	@if test '$(srcdir)' = . ; then \
+	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+	  exit 1 ; \
+	fi
+	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+	  || { echo "ERROR: files left in build directory after distclean:" ; \
+	       $(distcleancheck_listfiles) ; \
+	       exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(MANS) cvc4autoconfig.h
+installdirs: installdirs-recursive
+installdirs-am:
+	for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(man5dir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr \
+	distclean-libtool distclean-local distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-man
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man: install-man1 install-man3 install-man5
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-man
+
+uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5
+
+.MAKE: $(am__recursive_targets) all install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+	am--refresh check check-am clean clean-cscope clean-generic \
+	clean-libtool cscope cscopelist-am ctags ctags-am dist \
+	dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \
+	dist-tarZ dist-xz dist-zip distcheck distclean \
+	distclean-generic distclean-hdr distclean-libtool \
+	distclean-local distclean-tags distcleancheck distdir \
+	distuninstallcheck dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-man1 install-man3 install-man5 install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs installdirs-am \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-man \
+	uninstall-man1 uninstall-man3 uninstall-man5
+
+.PRECIOUS: Makefile
+
+
+ at DX_COND_doc_TRUE@@DX_COND_ps_TRUE at doxygen-ps: @DX_DOCDIR@/@PACKAGE at .ps
+
+ at DX_COND_doc_TRUE@@DX_COND_ps_TRUE@@DX_DOCDIR@/@PACKAGE at .ps: @DX_DOCDIR@/@PACKAGE at .tag
+ at DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	cd @DX_DOCDIR@/latex; \
+ at DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
+ at DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	$(DX_LATEX) refman.tex; \
+ at DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	$(MAKEINDEX_PATH) refman.idx; \
+ at DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	$(DX_LATEX) refman.tex; \
+ at DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	countdown=5; \
+ at DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
+ at DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	                  refman.log > /dev/null 2>&1 \
+ at DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	   && test $$countdown -gt 0; do \
+ at DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	    $(DX_LATEX) refman.tex; \
+ at DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	    countdown=`expr $$countdown - 1`; \
+ at DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	done; \
+ at DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	$(DX_DVIPS) -o ../@PACKAGE at .ps refman.dvi
+
+ at DX_COND_doc_TRUE@@DX_COND_pdf_TRUE at doxygen-pdf: @DX_DOCDIR@/@PACKAGE at .pdf
+
+ at DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@@DX_DOCDIR@/@PACKAGE at .pdf: @DX_DOCDIR@/@PACKAGE at .tag
+ at DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	cd @DX_DOCDIR@/latex; \
+ at DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
+ at DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	$(DX_PDFLATEX) refman.tex; \
+ at DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	$(DX_MAKEINDEX) refman.idx; \
+ at DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	$(DX_PDFLATEX) refman.tex; \
+ at DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	countdown=5; \
+ at DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
+ at DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	                  refman.log > /dev/null 2>&1 \
+ at DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	   && test $$countdown -gt 0; do \
+ at DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	    $(DX_PDFLATEX) refman.tex; \
+ at DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	    countdown=`expr $$countdown - 1`; \
+ at DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	done; \
+ at DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	mv refman.pdf ../@PACKAGE at .pdf
+
+ at DX_COND_doc_TRUE@.PHONY: doxygen-run doxygen-doc $(DX_PS_GOAL) $(DX_PDF_GOAL)
+
+ at DX_COND_doc_TRUE@.INTERMEDIATE: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
+
+ at DX_COND_doc_TRUE@doxygen-run: @DX_DOCDIR@/@PACKAGE at .tag
+
+ at DX_COND_doc_TRUE@doxygen-doc: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
+
+ at DX_COND_doc_TRUE@@DX_DOCDIR@/@PACKAGE at .tag: $(DX_CONFIG) $(pkginclude_HEADERS)
+ at DX_COND_doc_TRUE@	rm -rf @DX_DOCDIR@
+ at DX_COND_doc_TRUE@	$(DX_ENV) $(DX_DOXYGEN) $(srcdir)/$(DX_CONFIG)
+
+.PHONY: examples
+examples: all
+	(cd examples && $(MAKE) $(AM_MAKEFLAGS))
+
+.PHONY: install-examples
+install-examples:
+	(cd examples && $(MAKE) $(AM_MAKEFLAGS) install-data)
+
+.PHONY: units systemtests regress regress0 regress1 regress2 regress3
+systemtests regress regress0 regress1 regress2 regress3: all
+	+(cd test && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1
+# We descend into "src" with the "check" target here to ensure that
+# the test prerequisites are all built.
+units:
+	(cd src && $(MAKE) $(AM_MAKEFLAGS) check)
+	+(cd test && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1
+
+.PHONY: show-config
+show-config:
+	@echo
+	@echo '==============================================================================='
+	@echo 'This CVC4 build was configured with:'
+	@echo '  configure $(cvc4_config_cmdline)'
+	@echo '==============================================================================='
+	@echo
+
+.PHONY: lcov lcov-all lcov18
+
+# lcov 1.7 has some bugs that we have to work around (can't do
+# baseline measurement, merge between different test-names doesn't
+# work...)
+ at COVERAGE_ENABLED_TRUE@lcov: all
+ at COVERAGE_ENABLED_TRUE@	$(LCOV) -z -d .
+ at COVERAGE_ENABLED_TRUE@	(cd src && $(MAKE) $(AM_MAKEFLAGS) check)
+ at COVERAGE_ENABLED_TRUE@	+(cd test/unit && $(MAKE) $(AM_MAKEFLAGS) check)
+ at COVERAGE_ENABLED_TRUE@	$(LCOV) -c -d . -t cvc4_units -o cvc4-coverage-full.info
+ at COVERAGE_ENABLED_TRUE@	$(LCOV) -o cvc4-coverage.info -r cvc4-coverage-full.info $(LCOV_EXCLUDES)
+ at COVERAGE_ENABLED_TRUE@	mkdir -p "@top_srcdir@/html"
+ at COVERAGE_ENABLED_TRUE@	$(GENHTML) -o "@top_srcdir@/html" cvc4-coverage.info
+ at COVERAGE_ENABLED_TRUE@	@echo "De-mangling C++ symbols..."
+ at COVERAGE_ENABLED_TRUE@	@find "@top_srcdir@/html" -name '*.func.html' | \
+ at COVERAGE_ENABLED_TRUE@		xargs perl -pi -e 's#(<td class="coverFn"><a href=".*">)(.*)(</a></td>)#$$_=`c++filt "$$2"`;chomp;print "$$1<xmp>$$_</xmp>$$3\n";#e'
+
+ at COVERAGE_ENABLED_TRUE@lcov-all: all
+ at COVERAGE_ENABLED_TRUE@	$(LCOV) -z -d .
+ at COVERAGE_ENABLED_TRUE@	(cd src && $(MAKE) $(AM_MAKEFLAGS) check)
+ at COVERAGE_ENABLED_TRUE@	+(cd test && $(MAKE) $(AM_MAKEFLAGS) check)
+ at COVERAGE_ENABLED_TRUE@	$(LCOV) -c -d . -t cvc4_units -o cvc4-coverage-full.info
+ at COVERAGE_ENABLED_TRUE@	$(LCOV) -o cvc4-coverage.info -r cvc4-coverage-full.info $(LCOV_EXCLUDES)
+ at COVERAGE_ENABLED_TRUE@	mkdir -p "@top_srcdir@/html"
+ at COVERAGE_ENABLED_TRUE@	$(GENHTML) -o "@top_srcdir@/html" cvc4-coverage.info
+ at COVERAGE_ENABLED_TRUE@	@echo "De-mangling C++ symbols..."
+ at COVERAGE_ENABLED_TRUE@	@find "@top_srcdir@/html" -name '*.func.html' | \
+ at COVERAGE_ENABLED_TRUE@		xargs perl -pi -e 's#(<td class="coverFn"><a href=".*">)(.*)(</a></td>)#$$_=`c++filt "$$2"`;chomp;print "$$1<xmp>$$_</xmp>$$3\n";#e'
+
+# when we get a working lcov, we can do better stats for
+# modules/test-types; unfortunately lcov 1.8 directory paths
+# are broken(?) or at least different than 1.7
+ at COVERAGE_ENABLED_TRUE@lcov18: all
+ at COVERAGE_ENABLED_TRUE@	+ at for testtype in public black white; do \
+ at COVERAGE_ENABLED_TRUE@		echo; echo "=== Collecting coverage data from $$testtype unit tests ==="; \
+ at COVERAGE_ENABLED_TRUE@		echo $(LCOV) -z -d .; \
+ at COVERAGE_ENABLED_TRUE@		$(LCOV) -z -d . || exit 1; \
+ at COVERAGE_ENABLED_TRUE@		echo "(cd src && $(MAKE) $(AM_MAKEFLAGS) check) || exit 1"; \
+ at COVERAGE_ENABLED_TRUE@		(cd src && $(MAKE) $(AM_MAKEFLAGS) check) || exit 1; \
+ at COVERAGE_ENABLED_TRUE@		echo "(cd test/unit && $(MAKE) $(AM_MAKEFLAGS) check TEST_SUFFIX=_$$testtype) || exit 1"; \
+ at COVERAGE_ENABLED_TRUE@		(cd test/unit && $(MAKE) $(AM_MAKEFLAGS) check TEST_SUFFIX=_$$testtype) || exit 1; \
+ at COVERAGE_ENABLED_TRUE@		echo $(LCOV) -c -d . -t $$testtype -o cvc4-coverage-$$testtype-full.info || exit 1; \
+ at COVERAGE_ENABLED_TRUE@		$(LCOV) -c -d . -t $$testtype -o cvc4-coverage-$$testtype-full.info || exit 1; \
+ at COVERAGE_ENABLED_TRUE@		echo $(LCOV) -o cvc4-coverage-$$testtype.info -r cvc4-coverage-$$testtype-full.info $(LCOV_EXCLUDES); \
+ at COVERAGE_ENABLED_TRUE@		$(LCOV) -o cvc4-coverage-$$testtype.info -r cvc4-coverage-$$testtype-full.info $(LCOV_EXCLUDES) || exit 1; \
+ at COVERAGE_ENABLED_TRUE@		echo; \
+ at COVERAGE_ENABLED_TRUE@	done
+ at COVERAGE_ENABLED_TRUE@	mkdir -p "@top_srcdir@/html"
+ at COVERAGE_ENABLED_TRUE@	$(GENHTML) -o "@top_srcdir@/html" cvc4-coverage-public.info cvc4-coverage-black.info cvc4-coverage-white.info
+ at COVERAGE_ENABLED_TRUE@	@echo "De-mangling C++ symbols..."
+ at COVERAGE_ENABLED_TRUE@	@find "@top_srcdir@/html" -name '*.func.html' | \
+ at COVERAGE_ENABLED_TRUE@		xargs perl -ni -e 's,(<td class="coverFn"><a href=".*">)(.*)(</a></td>.*),$$_=`c++filt "$$2"`;chomp;print "$$1<xmp>$$_</xmp>$$3\n";,e || print'
+
+ at COVERAGE_ENABLED_FALSE@lcov lcov-all lcov18:
+ at COVERAGE_ENABLED_FALSE@	@echo
+ at COVERAGE_ENABLED_FALSE@	@echo "Coverage is not enabled in this build." >&2
+ at COVERAGE_ENABLED_FALSE@	@echo "Please run configure with --enable-coverage." >&2
+ at COVERAGE_ENABLED_FALSE@	@echo
+ at COVERAGE_ENABLED_FALSE@	@false
+
+doc/pcvc4.1: doc/cvc4.1
+	rm -f doc/pcvc4.1
+	cp -p "$<" "$@"
+
+# Can't put the first several in EXTRA_DIST because those are processed
+# *before* recursive "make dist", and these files are generated in a
+# subdirectory invocation of "make dist".
+#
+# The Makefile also can't go in EXTRA_DIST, because then automake thinks
+# it's the one in the builddir and we want the one from the srcdir.
+dist-hook: doc/cvc4.1 doc/libcvc4.3 doc/SmtEngine.3cvc doc/options.3cvc
+	cp -p $^ "$(distdir)/doc"
+	cp -p "$(srcdir)/Makefile" "$(distdir)/Makefile"
+
+distclean-local:
+	test -z "$(DX_DOCDIR)" || rm -fr "$(DX_DOCDIR)"
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Makefile.subdir b/Makefile.subdir
new file mode 100644
index 0000000..4bafe46
--- /dev/null
+++ b/Makefile.subdir
@@ -0,0 +1,58 @@
+# -*-makefile-*-
+#
+# This makefile is included from source directories in order to
+# trigger a build in the corresponding build directory.
+#
+# See src/Makefile for an example.
+#
+include $(topdir)/builds/current
+builddir = $(topdir)/builds/$(CURRENT_BUILD)/$(srcdir)
+unittestdir = $(topdir)/builds/$(CURRENT_BUILD)/test/unit
+unittestprefix = $(srcdir:src/%=%)
+
+.PHONY: all
+all .DEFAULT:
+	@if test -e $(builddir); then \
+		echo cd $(builddir); \
+		cd $(builddir); \
+		echo $(MAKE) $@; \
+		$(MAKE) $@; \
+	else \
+		echo; \
+		echo 'Run configure first, or type "make" in a configured build directory.'; \
+		echo; \
+	fi
+
+.PHONY: check units
+ifeq ($(srcdir:test/%=test),test)
+# under the test/ directory, additional subtargets
+.PHONY: systemtests regress regress0 regress1 regress2 regress3
+check units systemtests regress regress0 regress1 regress2 regress3:
+	@if test -e $(builddir); then \
+		echo cd $(builddir); \
+		cd $(builddir); \
+		echo $(MAKE) $@; \
+		$(MAKE) $@; \
+	else \
+		echo; \
+		echo "** ERROR: could not find testing dir \`$(builddir)'"; \
+		echo; \
+	fi
+else
+check units:
+	@if test -e $(unittestdir); then \
+		echo cd $(unittestdir); \
+		cd $(unittestdir); \
+		echo $(MAKE) TEST_PREFIX=$(unittestprefix)/ $@; \
+		$(MAKE) TEST_PREFIX=$(unittestprefix)/ $@; \
+	else \
+		echo; \
+		echo "** ERROR: could not find unit testing dir \`$(unittestdir)'"; \
+		echo; \
+		exit 1; \
+	fi
+endif
+
+# synonyms for "check"
+.PHONY: test
+test: check
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..91732d9
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,118 @@
+This file contains a summary of important user-visible changes. 
+
+Changes since 1.4
+=================
+
+* Support for unsat cores.
+* Simplification mode "incremental" no longer supported.
+* Support for array constants in constraints.
+* Syntax for array models have changed in some language front-ends.
+* New input/output languages supported: "smt2.0" and "smtlib2.0" to
+  force SMT-LIB v2.0; "smt2.5" and "smtlib2.5" to force SMT-LIB v2.5.
+  "smt", "smtlib", "smt2", and "smtlib2" all refer to the current standard
+  version 2.0.  If an :smt-lib-version is set in the input, that overrides
+  the command line.
+* Abstract values in SMT-LIB models are now ascribed types (with "as").
+* In SMT-LIB model output, real-sorted but integer-valued constants are
+  now printed in accordance with the standard (e.g. "1.0").
+
+Changes since 1.3
+=================
+
+* CVC4 now supports libc++ in addition to libstdc++ (this especially
+  helps on Mac OS Mavericks).
+* The LFSC proof checker has been incorporated into CVC4 sources.
+* Theory of finite sets, handling the MLSS fragment (singleton, union,
+  intersection, set subtraction, membership and subset).
+* By default, CVC4 builds in "production" mode (optimized, with fewer
+  internal checks on).  The common alternative is a "debug" build, which
+  is much slower.  By default, CVC4 builds with no GPL'ed dependences.
+  However, this is not the best-performing version; for that, you should
+  configure with "--enable-gpl --best", which links against GPL'ed
+  libraries that improve usability and performance.  For details on
+  licensing and dependences, see the README file.
+* Small API adjustments to Datatypes to even out the API and make it
+  function better in Java.
+* Timed statistics are now properly updated even on process abort.
+* Better automatic handling of output language setting when using CVC4
+  via API.  Previously, the "automatic" language setting was sometimes
+  (though not always) defaulting to the internal "AST" language; it
+  should now (correctly) default to the same as the input language
+  (if the input language is supported as an output language), or the
+  "CVC4" native output language if no input language setting is applied.
+* The SmtEngine cannot be safely copied with the copy constructor.
+  Previous versions inadvertently permitted clients to do this via the
+  API.  This has been corrected, copy and assignment of the SmtEngine
+  is no longer permitted.
+
+Changes since 1.2
+=================
+
+New features:
+* SMT-LIB-compliant support for abs, to_real, to_int, is_int, which were
+  previously missing
+* New bv2nat/int2bv operators for bitvector/integer inter-compatibility.
+* Support in linear logics for /, div, and mod by constants (with the
+  --rewrite-divk command line option).
+* Parsing support for TPTP's TFF and TFA formats.
+* A new theory of strings: word (dis-)equations, length constraints,
+  regular expressions.
+* Increased compliance to SMT-LIBv2, numerous bugs and usability issues
+  resolved.
+* New :command-verbosity SMT option to silence success and error messages
+  on a per-command basis, and API changes to Command infrastructure to
+  support this.
+
+Behavioral changes:
+* It is no longer permitted to request model or proof generation if there's
+  been an intervening push/pop.
+* User-defined symbols (define-funs) are no longer reported in the output
+  of get-model commands.
+* Exit codes are now more standard for UNIX command-line tools.  Exit code
+  zero means no error---but the result could be sat, unsat, or unknown---and
+  nonzero means error.
+
+API changes:
+* Expr::substitute() now capable of substituting operators (e.g.,
+  function symbols under an APPLY_UF)
+* Numerous improvements to the Java language bindings
+
+Changes since 1.1
+=================
+
+* Real arithmetic now has three simplex solvers for exact precision linear
+  arithmetic: the classical dual solver and two new solvers based on
+  techniques for minimizing the sum of infeasibilities. GLPK can now be used
+  as a heuristic backup to the exact precision solvers.  GLPK must be enabled
+  at configure time. See --help for more information on enabling these solvers.
+* added support for "bit0" and "bit1" bitvector constants in SMT-LIB v1.2
+* support for theory "alternates": new ability to prototype new decision
+  procedures that are selectable at runtime
+* various bugfixes
+
+Changes since 1.0
+=================
+
+* bit-vector solver now has a specialized decision procedure for unsigned bit-
+  vector inequalities
+* numerous important bug fixes, performance improvements, and usability
+  improvements
+* support for multiline input in interactive mode
+* Win32-building support via mingw
+* SMT-LIB get-model output now is easier to machine-parse: contains (model...)
+* user patterns for quantifier instantiation are now supported in the
+  SMT-LIBv1.2 parser
+* --finite-model-find was incomplete when using --incremental, now fixed
+* the E-matching procedure is slightly improved
+* Boolean terms are now supported in datatypes
+* tuple and record support have been added to the compatibility library
+* driver verbosity change: for printing all commands as they're executed, you
+  now need verbosity level >= 3 (e.g., -vvv) instead of level 1 (-v).  This
+  allows tracing the solver's activities (with -v and -vv) without having too
+  much output.
+* to make CVC4 quieter in abnormal (e.g., "warning" conditions), you can
+  use -q.  Previously, this would silence all output (including "sat" or
+  "unsat") as well.  Now, single -q silences messages and warnings, and
+  double -qq silences all output (except on exception or signal).
+
+-- Morgan Deters <mdeters at cs.nyu.edu>  Wed, 02 Jul 2014 14:45:05 -0400
diff --git a/README b/README
new file mode 100644
index 0000000..bd4f29b
--- /dev/null
+++ b/README
@@ -0,0 +1,103 @@
+This is CVC4 release version 1.4.  For build and installation notes,
+please see the INSTALL file included with this distribution.
+
+This first official release of CVC4 is the result of more than three
+years of efforts by researchers at New York University and The
+University of Iowa.  The project leaders are Clark Barrett (New York
+University) and Cesare Tinelli (The University of Iowa).  For a full
+list of authors, please refer to the AUTHORS file in the source
+distribution.
+
+CVC4 is a tool for determining the satisfiability of a first order
+formula modulo a first order theory (or a combination of such
+theories). It is the fourth in the Cooperating Validity Checker family
+of tools (CVC, CVC Lite, CVC3) but does not directly incorporate code
+from any previous version.
+
+CVC4 is intended to be an open and extensible SMT engine.  It can be
+used as a stand-alone tool or as a library.  It has been designed to
+increase the performance and reduce the memory overhead of its
+predecessors.  It is written entirely in C++ and is released under an
+open-source software license (see the file COPYING in the source
+distribution).
+
+*** Getting started with CVC4
+
+For help installing CVC4, see the INSTALL file that comes with this
+distribution.
+
+We recommend that you visit our CVC4 tutorials online at:
+
+  http://cvc4.cs.nyu.edu/wiki/Tutorials
+
+for help getting started using CVC4.
+
+*** Contributing to the CVC4 project
+
+We are always happy to hear feedback from our users:
+
+* if you need help with using CVC4, please write to the
+  cvc-users at cs.nyu.edu mailing list.
+
+* if you need to report a bug with CVC4, or make a feature request,
+  please visit our bugtracker at http://cvc4.cs.nyu.edu/bugs/ or write
+  to the cvc-bugs at cs.nyu.edu mailing list.  We are very grateful for
+  bug reports, as they help us improve CVC4, and patches are generally
+  reviewed and accepted quickly.
+
+* if you are using CVC4 in your work, or incorporating it into
+  software of your own, we'd like to invite you to leave a description
+  and link to your project/software on our "Third Party Applications"
+  page at http://cvc4.cs.nyu.edu/wiki/Public:Third_Party_Applications
+
+* if you are interested in contributing code (for example, a new
+  decision procedure implementation) to the CVC4 project, please
+  contact us at cvc4-devel at cs.nyu.edu.  We'd be happy to point you to
+  some internals documentation to help you out.
+
+Thank you for using CVC4!
+
+*** The History of CVC4
+
+The Cooperating Validity Checker series has a long history.  The
+Stanford Validity Checker (SVC) came first in 1996, incorporating
+theories and its own SAT solver.  Its successor, the Cooperating
+Validity Checker (CVC), had a more optimized internal design, produced
+proofs, used the Chaff SAT solver, and featured a number of usability
+enhancements.  Its name comes from the cooperative nature of decision
+procedures in Nelson-Oppen theory combination, which share amongst
+each other equalities between shared terms.  CVC Lite, first made
+available in 2003, was a rewrite of CVC that attempted to make CVC
+more flexible (hence the "lite") while extending the feature set: CVC
+Lite supported quantifiers where its predecessors did not.  CVC3 was a
+major overhaul of portions of CVC Lite: it added better decision
+procedure implementations, added support for using MiniSat in the
+core, and had generally better performance.
+
+CVC4 is the new version, the fifth generation of this validity checker
+line that is now celebrating sixteen years of heritage.  It represents
+a complete re-evaluation of the core architecture to be both
+performant and to serve as a cutting-edge research vehicle for the
+next several years.  Rather than taking CVC3 and redesigning problem
+parts, we've taken a clean-room approach, starting from scratch.
+Before using any designs from CVC3, we have thoroughly scrutinized,
+vetted, and updated them.  Many parts of CVC4 bear only a superficial
+resemblance, if any, to their correspondent in CVC3.
+
+However, CVC4 is fundamentally similar to CVC3 and many other modern
+SMT solvers: it is a DPLL(T) solver, with a SAT solver at its core and
+a delegation path to different decision procedure implementations,
+each in charge of solving formulas in some background theory.
+
+The re-evaluation and ground-up rewrite was necessitated, we felt, by
+the performance characteristics of CVC3.  CVC3 has many useful
+features, but some core aspects of the design led to high memory use,
+and the use of heavyweight computation (where more nimble engineering
+approaches could suffice) makes CVC3 a much slower prover than other
+tools.  As these designs are central to CVC3, a new version was
+preferable to a selective re-engineering, which would have ballooned
+in short order.
+
+*** For more information
+
+More information about CVC4 is available at: http://cvc4.cs.nyu.edu/
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
new file mode 100644
index 0000000..2d6eaea
--- /dev/null
+++ b/RELEASE-NOTES
@@ -0,0 +1,161 @@
+Release Notes for CVC4 1.4, July 2014
+
+** Getting started
+
+If you run CVC4 without arguments, you will find yourself in an interactive
+CVC4 session, which expects commands in CVC4's native language (the so-called
+"presentation" language).  To use SMT-LIB, use the "--lang smt" option on the
+command line.  For stricter adherence to the standard, use "--smtlib-strict"
+(see below regarding SMT-LIB compliance).
+
+When a filename is given on the command line, the file's extension determines
+the language parser that's used (e.g., file.smt is SMT-LIB 1.2, file.smt2
+is SMT-LIB 2.0, and file.cvc is the presentation language).  To override
+this, you can use the --lang option.
+
+** Type correctness
+
+The CVC family of systems relies on Type Correctness Conditions (TCCs) when
+mixing two types that have a compatible base type.  TCCs, and the checking of
+such, are not supported by CVC4 1.4.  This is an issue when mixing integers and
+reals.  A function defined only on integers can be applied to REAL (as INT is a
+subtype of REAL), and CVC4 will not complain.  It is up to the user to ensure 
+that the REAL expression must be an integer.  If the REAL expression is not
+an integer and is used where an INT is expected, CVC4 may produce strange
+results.
+
+For example: 
+
+  f : INT -> INT;
+  ASSERT f(1/3) = 0;
+  ASSERT f(2/3) = 1;
+  CHECKSAT;
+  % sat
+  COUNTEREXAMPLE;
+  % f : (INT) -> INT = LAMBDA(x1:INT) : 0;
+
+This kind of problem can be identified by checking TCCs.  Though CVC4 does not
+(yet) support TCCs, CVC3 can be used to produce TCCs for this input (with the
++dump-tcc option). The TCC can then be checked by CVC4 or another solver.
+(CVC3 can also check TCCs at the same time it creates them, with +tcc.)
+
+** Changes in CVC's Presentation Language
+
+The native language of all solvers in the CVC family, referred to as the
+"presentation language," has undergone some revisions for CVC4.  The
+most notable is that CVC4 does _not_ add counterexample assertions to
+the current assertion set after a SAT/INVALID result.  For example:
+
+  x, y : INT;
+  ASSERT x = 1 OR x = 2;
+  ASSERT y = 1 OR y = 2;
+  ASSERT x /= y;
+  CHECKSAT;
+  % sat
+  QUERY x = 1;
+  % invalid
+  QUERY x = 2;
+  % invalid
+
+Here, CVC4 responds "invalid" to the second and third queries, because
+each has a counterexample (x=2 is a counterexample to the first, and
+x=1 is a counterexample to the second).  However, CVC3 will respond
+with "valid" to one of these two, as the first query (the CHECKSAT)
+had the side-effect of locking CVC3 into one of the two cases; the
+later queries are effectively querying the counterexample that was
+found by the first.  CVC4 removes this side-effect of the CHECKSAT and
+QUERY commands.
+
+CVC4 supports rational literals (of type REAL) in decimal; CVC3 did not
+support decimals.
+
+CVC4 does not have support for predicate subtypes, although these are
+planned for future releases.
+
+** SMT-LIB compliance
+
+Every effort has been made to make CVC4 compliant with the SMT-LIB 2.0
+standard (http://smtlib.org/).  However, when parsing SMT-LIB input,
+certain default settings don't match what is stated in the official
+standard.  To make CVC4 adhere more strictly to the standard, use the
+"--smtlib-strict" command-line option.  Even with this setting, CVC4 is
+somewhat lenient; some non-conforming input may still be parsed and
+processed.
+
+For the latest news on SMT-LIB compliance, please check:
+
+  http://cvc4.cs.nyu.edu/wiki/SMT-LIB_Compliance
+
+** Getting statistics
+
+Statistics can be dumped on exit (both normal and abnormal exits) with
+the --stats command line option.
+
+** Time and resource limits
+
+CVC4 can be made to self-timeout after a given number of milliseconds.
+Use the --tlimit command line option to limit the entire run of
+CVC4, or use --tlimit-per to limit each individual query separately.
+Preprocessing time is not counted by the time limit, so for some large
+inputs which require aggressive preprocessing, you may notice that
+--tlimit does not work very well.  If you suspect this might be the
+case, you can use "-vv" (double verbosity) to see what CVC4 is doing.
+
+Time-limited runs are not deterministic; two consecutive runs with the
+same time limit might produce different results (i.e., one may time out
+and respond with "unknown", while the other completes and provides an
+answer).  To ensure that results are reproducible, use --rlimit or
+--rlimit-per.  These options take a "resource count" (presently, based on
+the number of SAT conflicts) that limits the search time.  A word of
+caution, though: there is no guarantee that runs of different versions of
+CVC4 or of different builds of CVC4 (e.g., two CVC4 binaries with different
+features enabled, or for different architectures) will interpret the resource
+count in the same manner.
+
+CVC4 does not presently have a way to limit its memory use; you may opt
+to run it from a shell after using "ulimit" to limit the size of the
+heap.
+
+** Proof support
+
+CVC4 1.4 has limited support for proofs, and they are disabled by default.
+(Run the configure script with --enable-proof to enable proofs).  Proofs
+are exported in LFSC format and are limited to the propositional backbone
+of the discovered proof (theory lemmas are stated without proof in this
+release).
+
+** Nonlinear arithmetic
+
+CVC4 1.4 has a state-of-the-art linear arithmetic solver.  However, there
+is extremely limited support for nonlinear arithmetic in this release.
+
+** Portfolio solving
+
+If enabled at configure-time (./configure --with-portfolio), a second
+CVC4 binary will be produced ("pcvc4").  This binary has support for
+running multiple instances of CVC4 in different threads.  Use --threads=N
+to specify the number of threads, and use --thread0="options for thread 0"
+--thread1="options for thread 1", etc., to specify a configuration for the
+threads.  Lemmas are *not* shared between the threads by default; to adjust
+this, use the --filter-lemma-length=N option to share lemmas of N literals
+(or smaller).  (Some lemmas are ineligible for sharing because they include
+literals that are "local" to one thread.)
+
+Currently, the portfolio **does not work** with the theory of inductive
+datatypes. This limitation will be addressed in a future release.
+
+** Questions ??
+
+CVC4 and its predecessors have an active user base.  You might want to
+subscribe to the mailing list (http://cs.nyu.edu/mailman/listinfo/cvc-users)
+and post a question there.
+
+** Reporting bugs and making feature requests
+
+CVC4 is under active development.  Should you find a bug in CVC4's
+documentation, behavior, API, or SMT-LIB compliance, or if you have
+a feature request, please let us know on our bugtracker at
+
+  http://cvc4.cs.nyu.edu/bugs/
+
+or send an email to cvc-bugs at cims.nyu.edu.
diff --git a/THANKS b/THANKS
new file mode 100644
index 0000000..d1ef51a
--- /dev/null
+++ b/THANKS
@@ -0,0 +1,18 @@
+Thanks to Peter Collingbourne (formerly of the Multicore Programming Group
+at Imperial College London, headed by Alastair Donaldson) for developing and
+submitting a number of patches in September 2012 related to SMT-LIBv2
+compliance.
+
+Thanks to Thomas Hunger for some important patches to CVC4's SWIG interfaces
+in March 2014.
+
+Thanks to David Cok of GrammaTech, Inc., for suggesting numerous improvements
+in CVC4's SMT-LIBv2 compliance in 2013 and 2014.
+
+Thanks to Adam Buchbinder at Google for submitting patches in November 2013 to
+fix a number of issues with CVC3 (which were also applicable to CVC4's
+compatibility interface).
+
+Thanks to Martin Brain of the Systems Verification Group at the University of
+Oxford for submitting patches to fix certain compilation problems in November
+2013.
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..1e5c63f
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,1441 @@
+# generated automatically by aclocal 1.15 -*- Autoconf -*-
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+
+# Copyright (C) 2002-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.15'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.15], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.15])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is '.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+  # Older Autoconf quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named 'Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running 'make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "$am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each '.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.65])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+             [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+		  [_AM_DEPENDENCIES([CC])],
+		  [m4_define([AC_PROG_CC],
+			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+		  [_AM_DEPENDENCIES([CXX])],
+		  [m4_define([AC_PROG_CXX],
+			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+		  [_AM_DEPENDENCIES([OBJC])],
+		  [m4_define([AC_PROG_OBJC],
+			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+		  [_AM_DEPENDENCIES([OBJCXX])],
+		  [m4_define([AC_PROG_OBJCXX],
+			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
+])
+
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST([install_sh])])
+
+# Copyright (C) 2003-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless 'enable' is passed literally.
+# For symmetry, 'disable' may be passed as well.  Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t at _MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+      am_maintainer_other[ make rules and dependencies not useful
+      (and sometimes confusing) to the casual installer])],
+    [USE_MAINTAINER_MODE=$enableval],
+    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+]
+)
+
+# Check to see how 'make' treats includes.	            -*- Autoconf -*-
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+# ---------------------------------------------------------------------------
+# Adds support for distributing Python modules and packages.  To
+# install modules, copy them to $(pythondir), using the python_PYTHON
+# automake variable.  To install a package with the same name as the
+# automake package, install to $(pkgpythondir), or use the
+# pkgpython_PYTHON automake variable.
+#
+# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as
+# locations to install python extension modules (shared libraries).
+# Another macro is required to find the appropriate flags to compile
+# extension modules.
+#
+# If your package is configured with a different prefix to python,
+# users will have to add the install directory to the PYTHONPATH
+# environment variable, or create a .pth file (see the python
+# documentation for details).
+#
+# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will
+# cause an error if the version of python installed on the system
+# doesn't meet the requirement.  MINIMUM-VERSION should consist of
+# numbers and dots only.
+AC_DEFUN([AM_PATH_PYTHON],
+ [
+  dnl Find a Python interpreter.  Python versions prior to 2.0 are not
+  dnl supported. (2.0 was released on October 16, 2000).
+  m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
+[python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 dnl
+ python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0])
+
+  AC_ARG_VAR([PYTHON], [the Python interpreter])
+
+  m4_if([$1],[],[
+    dnl No version check is needed.
+    # Find any Python interpreter.
+    if test -z "$PYTHON"; then
+      AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :)
+    fi
+    am_display_PYTHON=python
+  ], [
+    dnl A version check is needed.
+    if test -n "$PYTHON"; then
+      # If the user set $PYTHON, use it and don't search something else.
+      AC_MSG_CHECKING([whether $PYTHON version is >= $1])
+      AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
+			      [AC_MSG_RESULT([yes])],
+			      [AC_MSG_RESULT([no])
+			       AC_MSG_ERROR([Python interpreter is too old])])
+      am_display_PYTHON=$PYTHON
+    else
+      # Otherwise, try each interpreter until we find one that satisfies
+      # VERSION.
+      AC_CACHE_CHECK([for a Python interpreter with version >= $1],
+	[am_cv_pathless_PYTHON],[
+	for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do
+	  test "$am_cv_pathless_PYTHON" = none && break
+	  AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
+	done])
+      # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
+      if test "$am_cv_pathless_PYTHON" = none; then
+	PYTHON=:
+      else
+        AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON])
+      fi
+      am_display_PYTHON=$am_cv_pathless_PYTHON
+    fi
+  ])
+
+  if test "$PYTHON" = :; then
+  dnl Run any user-specified action, or abort.
+    m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])])
+  else
+
+  dnl Query Python for its version number.  Getting [:3] seems to be
+  dnl the best way to do this; it's what "site.py" does in the standard
+  dnl library.
+
+  AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
+    [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`])
+  AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
+
+  dnl Use the values of $prefix and $exec_prefix for the corresponding
+  dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX.  These are made
+  dnl distinct variables so they can be overridden if need be.  However,
+  dnl general consensus is that you shouldn't need this ability.
+
+  AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
+  AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
+
+  dnl At times (like when building shared libraries) you may want
+  dnl to know which OS platform Python thinks this is.
+
+  AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
+    [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
+  AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
+
+  # Just factor out some code duplication.
+  am_python_setup_sysconfig="\
+import sys
+# Prefer sysconfig over distutils.sysconfig, for better compatibility
+# with python 3.x.  See automake bug#10227.
+try:
+    import sysconfig
+except ImportError:
+    can_use_sysconfig = 0
+else:
+    can_use_sysconfig = 1
+# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
+# <https://github.com/pypa/virtualenv/issues/118>
+try:
+    from platform import python_implementation
+    if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7':
+        can_use_sysconfig = 0
+except ImportError:
+    pass"
+
+  dnl Set up 4 directories:
+
+  dnl pythondir -- where to install python scripts.  This is the
+  dnl   site-packages directory, not the python standard library
+  dnl   directory like in previous automake betas.  This behavior
+  dnl   is more consistent with lispdir.m4 for example.
+  dnl Query distutils for this directory.
+  AC_CACHE_CHECK([for $am_display_PYTHON script directory],
+    [am_cv_python_pythondir],
+    [if test "x$prefix" = xNONE
+     then
+       am_py_prefix=$ac_default_prefix
+     else
+       am_py_prefix=$prefix
+     fi
+     am_cv_python_pythondir=`$PYTHON -c "
+$am_python_setup_sysconfig
+if can_use_sysconfig:
+    sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+else:
+    from distutils import sysconfig
+    sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+sys.stdout.write(sitedir)"`
+     case $am_cv_python_pythondir in
+     $am_py_prefix*)
+       am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+       am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
+       ;;
+     *)
+       case $am_py_prefix in
+         /usr|/System*) ;;
+         *)
+	  am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
+	  ;;
+       esac
+       ;;
+     esac
+    ])
+  AC_SUBST([pythondir], [$am_cv_python_pythondir])
+
+  dnl pkgpythondir -- $PACKAGE directory under pythondir.  Was
+  dnl   PYTHON_SITE_PACKAGE in previous betas, but this naming is
+  dnl   more consistent with the rest of automake.
+
+  AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
+
+  dnl pyexecdir -- directory for installing python extension modules
+  dnl   (shared libraries)
+  dnl Query distutils for this directory.
+  AC_CACHE_CHECK([for $am_display_PYTHON extension module directory],
+    [am_cv_python_pyexecdir],
+    [if test "x$exec_prefix" = xNONE
+     then
+       am_py_exec_prefix=$am_py_prefix
+     else
+       am_py_exec_prefix=$exec_prefix
+     fi
+     am_cv_python_pyexecdir=`$PYTHON -c "
+$am_python_setup_sysconfig
+if can_use_sysconfig:
+    sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
+else:
+    from distutils import sysconfig
+    sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
+sys.stdout.write(sitedir)"`
+     case $am_cv_python_pyexecdir in
+     $am_py_exec_prefix*)
+       am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+       am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
+       ;;
+     *)
+       case $am_py_exec_prefix in
+         /usr|/System*) ;;
+         *)
+	   am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
+	   ;;
+       esac
+       ;;
+     esac
+    ])
+  AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
+
+  dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
+
+  AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
+
+  dnl Run any user-specified action.
+  $2
+  fi
+
+])
+
+
+# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
+# ---------------------------------------------------------------------------
+# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
+# Run ACTION-IF-FALSE otherwise.
+# This test uses sys.hexversion instead of the string equivalent (first
+# word of sys.version), in order to cope with versions such as 2.2c1.
+# This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
+AC_DEFUN([AM_PYTHON_CHECK_VERSION],
+ [prog="import sys
+# split strings by '.' and convert to numeric.  Append some zeros
+# because we need at least 4 digits for the hex conversion.
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
+minverhex = 0
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
+sys.exit(sys.hexversion < minverhex)"
+  AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+
+# Copyright (C) 2009-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# ("yes" being less verbose, "no" or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor 'install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in "make install-strip", and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+#
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+
+m4_if([$1], [v7],
+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+  [m4_case([$1],
+    [ustar],
+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+      if test $am_uid -le $am_max_uid; then
+         AC_MSG_RESULT([yes])
+      else
+         AC_MSG_RESULT([no])
+         _am_tools=none
+      fi
+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+      if test $am_gid -le $am_max_gid; then
+         AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+        _am_tools=none
+      fi],
+
+  [pax],
+    [],
+
+  [m4_fatal([Unknown tar format])])
+
+  AC_MSG_CHECKING([how to create a $1 tar archive])
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        AM_RUN_LOG([$_am_tar --version]) && break
+      done
+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x $1 -w "$$tardir"'
+      am__tar_='pax -L -x $1 -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+      am__untar='cpio -i -H $1 -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
+
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_$1}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      AM_RUN_LOG([$am__untar <conftest.tar])
+      AM_RUN_LOG([cat conftest.dir/file])
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
+  rm -rf conftest.dir
+
+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([config/abc.m4])
+m4_include([config/antlr.m4])
+m4_include([config/ax_prog_doxygen.m4])
+m4_include([config/ax_tls.m4])
+m4_include([config/bindings.m4])
+m4_include([config/boost.m4])
+m4_include([config/cryptominisat.m4])
+m4_include([config/cvc4.m4])
+m4_include([config/gcc_version.m4])
+m4_include([config/glpk.m4])
+m4_include([config/is_sorted.m4])
+m4_include([config/libtool.m4])
+m4_include([config/ltoptions.m4])
+m4_include([config/ltsugar.m4])
+m4_include([config/ltversion.m4])
+m4_include([config/lt~obsolete.m4])
+m4_include([config/pkg.m4])
+m4_include([config/readline.m4])
diff --git a/config/abc.m4 b/config/abc.m4
new file mode 100644
index 0000000..faeb68c
--- /dev/null
+++ b/config/abc.m4
@@ -0,0 +1,136 @@
+# CVC4_CHECK_FOR_ABC
+# ------------------
+# Look for abc and link it in, but only if user requested.
+AC_DEFUN([CVC4_CHECK_FOR_ABC], [
+AC_MSG_CHECKING([whether user requested abc support])
+LIBABC=
+have_libabc=0
+ABC_LIBS=
+ABC_LDFLAGS=
+if test "$with_abc" = no; then
+  AC_MSG_RESULT([no, abc disabled by user])
+elif test -n "$with_abc"; then
+  AC_MSG_RESULT([yes, abc requested by user])
+
+  # Get the location of all the ABC stuff
+  AC_ARG_VAR(ABC_HOME, [path to top level of abc source tree])
+  AC_ARG_WITH(
+    [abc-dir],
+    AS_HELP_STRING(
+      [--with-abc-dir=PATH],
+      [path to top level of abc source tree]
+    ),
+    [ABC_HOME="$withval"],
+    [ if test -z "$ABC_HOME"; then
+        AC_MSG_FAILURE([must give --with-abc-dir=PATH or define environment variable ABC_HOME!])
+      fi
+    ]
+  )
+  if ! test -d "$ABC_HOME" || ! test -x "$ABC_HOME/arch_flags"; then
+    AC_MSG_FAILURE([either $ABC_HOME is not an abc source tree or it's not yet built])
+  fi
+
+  AC_MSG_CHECKING([for arch_flags to use with libabc])
+  libabc_arch_flags="$("$ABC_HOME/arch_flags")"
+  AC_MSG_RESULT([$libabc_arch_flags])
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-I$ABC_HOME/src $libabc_arch_flags"
+  ABC_LDFLAGS="-L$ABC_HOME"
+
+  dnl Try a bunch of combinations until something works :-/
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  ABC_LIBS=
+  CPPFLAGS="$CPPFLAGS -I$ABC_HOME/src $libabc_arch_flags"
+  LDFLAGS="$LDFLAGS $ABC_LDFLAGS"
+  AC_CHECK_HEADER([base/abc/abc.h], [], [AC_MSG_FAILURE([cannot find abc.h, the ABC header!])])
+  AC_MSG_CHECKING([how to link abc])
+  CVC4_TRY_ABC_WITH([])
+  CVC4_TRY_ABC_WITH([-lm])
+  CVC4_TRY_ABC_WITH([-lm -lrt])
+  CVC4_TRY_ABC_WITH([-lm -lrt -ldl])
+  CVC4_TRY_ABC_WITH([-lm -lrt -lreadline -ldl])
+  CVC4_TRY_ABC_WITH([-lm -lpthread])
+  CVC4_TRY_ABC_WITH([-lm -lpthread -lrt])
+  CVC4_TRY_ABC_WITH([-lm -lpthread -lrt -ldl])
+  CVC4_TRY_ABC_WITH([-lm -lpthread -lrt -lreadline -ldl])
+  dnl CVC4_TRY_ABC_WITH([-lm -rdynamic -lreadline -lpthread -lrt -ldl])
+  if test -z "$ABC_LIBS"; then
+    AC_MSG_FAILURE([cannot link against libabc!])
+  else
+    AC_MSG_RESULT([$ABC_LIBS])
+    # make sure it works in static builds, too
+    if test "$enable_static_binary" = yes; then
+      ABC_LIBS=
+      AC_MSG_CHECKING([whether statically-linked abc is functional])
+      CVC4_TRY_STATIC_ABC_WITH([])
+      CVC4_TRY_STATIC_ABC_WITH([-lm])
+      CVC4_TRY_STATIC_ABC_WITH([-lm -lrt])
+      CVC4_TRY_STATIC_ABC_WITH([-lm -lrt -ldl])
+      CVC4_TRY_STATIC_ABC_WITH([-lm -lrt -lreadline -ldl])
+      CVC4_TRY_STATIC_ABC_WITH([-lm -lpthread])
+      CVC4_TRY_STATIC_ABC_WITH([-lm -lpthread -lrt])
+      CVC4_TRY_STATIC_ABC_WITH([-lm -lpthread -lrt -ldl])
+      CVC4_TRY_STATIC_ABC_WITH([-lm -lpthread -lrt -lreadline -ldl])
+      if test -n "$ABC_LIBS"; then
+        AC_MSG_RESULT([yes, it works])
+        with_abc=yes
+      else
+        AC_MSG_RESULT([no])
+        AC_MSG_FAILURE([abc installation appears incompatible with static-binary])
+      fi
+    else
+      with_abc=yes
+    fi
+  fi
+  if test "$with_abc" = yes; then
+    have_libabc=1
+  else
+    with_abc=no
+    have_libreadline=0
+    ABC_LIBS=
+  fi
+  LDFLAGS="$cvc4_save_LDFLAGS"
+else
+  AC_MSG_RESULT([no, user didn't request abc])
+  with_abc=no
+fi
+])# CVC4_CHECK_FOR_ABC
+
+# CVC4_TRY_ABC_WITH(LIBS)
+# -----------------------
+# Try AC_CHECK_LIB(abc) with the given linking libraries
+AC_DEFUN([CVC4_TRY_ABC_WITH], [
+if test -z "$ABC_LIBS"; then
+  AC_LANG_PUSH([C++])
+  cvc4_save_LIBS="$LIBS"
+  LIBS="-labc $1"
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([extern "C" { void Abc_Start(); }],
+                                  [Abc_Start()])],
+    [ABC_LIBS="-labc $1"],
+    [])
+  LIBS="$cvc4_save_LIBS"
+  AC_LANG_POP([C++])
+fi
+])# CVC4_TRY_ABC_WITH
+
+# CVC4_TRY_STATIC_ABC_WITH(LIBS)
+# ------------------------------
+# Try AC_CHECK_LIB(abc) with the given linking libraries
+AC_DEFUN([CVC4_TRY_STATIC_ABC_WITH], [
+if test -z "$ABC_LIBS"; then
+  AC_LANG_PUSH([C++])
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="-static $LDFLAGS"
+  LIBS="-labc-static $1"
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([extern "C" { void Abc_Start(); }],
+                                  [Abc_Start()])],
+    [ABC_LIBS="-labc-static $1"],
+    [ LIBS="-labc $1"
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([extern "C" { void Abc_Start(); }],
+                                      [Abc_Start()])],
+        [ABC_LIBS="-labc $1"]) ])
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  AC_LANG_POP([C++])
+fi
+])# CVC4_TRY_STATIC_ABC_WITH
diff --git a/config/antlr.m4 b/config/antlr.m4
new file mode 100644
index 0000000..955e1bb
--- /dev/null
+++ b/config/antlr.m4
@@ -0,0 +1,144 @@
+##
+# Check for ANTLR's antlr3 script.
+# Will set ANTLR to the location of the script.
+##
+AC_DEFUN([AC_PROG_ANTLR], [
+  AC_ARG_VAR([ANTLR],[location of the antlr3 script])
+
+  # Check the existence of the runantlr script
+  if test "x$ANTLR" = "x"; then
+    AC_PATH_PROG(ANTLR, [antlr3])
+  else
+    AC_MSG_CHECKING([antlr3 script ($ANTLR)])
+    if test ! -e "$ANTLR"; then
+      AC_MSG_RESULT([not found])
+      unset ANTLR
+    elif test ! -x "$ANTLR"; then
+      AC_MSG_RESULT([not executable])
+      unset ANTLR
+    else
+      AC_MSG_RESULT([OK])
+    fi
+  fi
+  if test "x$ANTLR" = "x"; then
+    AC_MSG_WARN(
+[No usable antlr3 script found. Make sure that the parser code has
+been generated already. To obtain ANTLR see <http://www.antlr3.org/>.]
+    )
+    ANTLR_VERSION=
+  else
+    ANTLR_VERSION="`$ANTLR -version 2>&1 | sed 's,.*Version  *\([[0-9.]]*\).*,\1,'`"
+    case "$ANTLR_VERSION" in
+      3.2|3.2.*) ANTLR_VERSION=3.2 ;;
+      3.4|3.4.*) ANTLR_VERSION=3.4 ;;
+      *) AC_MSG_WARN([unknown version of antlr: $ANTLR_VERSION]);;
+    esac
+  fi
+])
+
+##
+# Check the existence of the ANTLR3 C runtime library and headers
+# Will set ANTLR_INCLUDES and ANTLR_LIBS to the location of the ANTLR
+# headers and library respectively
+##
+AC_DEFUN([AC_LIB_ANTLR],[
+  AC_ARG_VAR(ANTLR_HOME, [path to libantlr3c installation])
+
+  # Get the location of the ANTLR3 C includes and libraries
+  AC_ARG_WITH(
+    [antlr-dir],
+    AS_HELP_STRING(
+      [--with-antlr-dir=PATH],
+      [path to ANTLR C headers and libraries]
+    ),
+    ANTLR_PREFIXES="$withval",
+    ANTLR_PREFIXES="$ANTLR_HOME /usr/local /usr /opt/local /opt"
+  )
+
+  AC_MSG_CHECKING(for ANTLR3 C runtime library)
+
+  # Use C and remember the variables we are changing
+  AC_LANG_PUSH(C)
+  OLD_CPPFLAGS="$CPPFLAGS"
+  OLD_LIBS="$LIBS"
+
+  # Try all the includes/libs set in ANTLR_PREFIXES
+  for antlr_prefix in $ANTLR_PREFIXES
+  do
+    CPPFLAGS="$OLD_CPPFLAGS -I$antlr_prefix/include"
+    LIBS="$OLD_LIBS -L$antlr_prefix/lib -lantlr3c"
+    AC_LINK_IFELSE([AC_LANG_SOURCE(
+      [
+        #include <antlr3.h>
+
+        int main() {
+          pANTLR3_TOKEN_FACTORY factory = antlr3TokenFactoryNew((pANTLR3_INPUT_STREAM) NULL);
+          return 0;
+        }
+      ])],
+      [
+        AC_MSG_RESULT(found in $antlr_prefix)
+        ANTLR_INCLUDES="-I$antlr_prefix/include"
+        ANTLR_LDFLAGS="-L$antlr_prefix/lib -lantlr3c"
+        break
+      ],
+          [
+            AC_MSG_RESULT(no)
+            AC_MSG_ERROR([ANTLR3 C runtime not found, see <http://www.antlr3.org/>])
+          ]
+    )
+  done
+
+  AC_MSG_CHECKING([for presence of older antlr3AsciiFileStreamNew()])
+  AC_LINK_IFELSE([AC_LANG_SOURCE(
+    [
+      #include <antlr3.h>
+
+      int main() {
+        pANTLR3_UINT8 fName = (pANTLR3_UINT8)"foo";
+        pANTLR3_INPUT_STREAM input = antlr3AsciiFileStreamNew(fName);
+        return 0;
+      }
+    ])],
+    [
+      AC_MSG_RESULT([found it (must be antlr3 3.2 or similar)])
+      if test -n "$ANTLR_VERSION" -a "$ANTLR_VERSION" != 3.2; then
+        AC_MSG_WARN([your antlr parser generator is version $ANTLR_VERSION, which doesn't match the library!])
+      fi
+      CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_ANTLR3_OLD_INPUT_STREAM"
+    ],
+        [
+          AC_MSG_RESULT(failed)
+          AC_MSG_CHECKING([for presence of newer antlr3FileStreamNew()])
+          AC_LINK_IFELSE([AC_LANG_SOURCE(
+            [
+              #include <antlr3.h>
+
+              int main() {
+                pANTLR3_UINT8 fName = (pANTLR3_UINT8)"foo";
+                pANTLR3_INPUT_STREAM input = antlr3FileStreamNew(fName, ANTLR3_ENC_8BIT);
+                return 0;
+              }
+            ])],
+            [
+              AC_MSG_RESULT([found it (must be antlr3 3.4 or similar)])
+              if test -n "$ANTLR_VERSION" -a "$ANTLR_VERSION" != 3.4; then
+                AC_MSG_WARN([your antlr parser generator is version $ANTLR_VERSION, which doesn't match the library!])
+              fi
+            ],
+                [
+                  AC_MSG_ERROR([cannot figure out how to create an antlr3 input stream, bailing..])
+                ]
+          )
+        ]
+  )
+
+  # Return the old compile variables and pop the language.
+  LIBS="$OLD_LIBS"
+  CPPFLAGS="$OLD_CPPFLAGS"
+  AC_LANG_POP()
+
+  # Define the ANTLR include/libs variables
+  AC_SUBST(ANTLR_INCLUDES)
+  AC_SUBST(ANTLR_LDFLAGS)
+])
diff --git a/config/ax_prog_doxygen.m4 b/config/ax_prog_doxygen.m4
new file mode 100644
index 0000000..3a9744a
--- /dev/null
+++ b/config/ax_prog_doxygen.m4
@@ -0,0 +1,323 @@
+# This file is part of Autoconf.                       -*- Autoconf -*-
+
+# Renamed doxygen.m4 from acinclude.m4 for inclusion in CVC4
+
+# Copyright (C) 2004 Oren Ben-Kiki
+# This file is distributed under the same terms as the Autoconf macro files.
+
+########## CHANGELOG ##################
+# 2009-01-14 Martin Mann
+# * DX_ARG_ABLE : new variable 'DX_FLAG_DX_CURRENT_FEATURE'
+# * DX_CLEAR_DEPEND : use of explicit variable 'DX_FLAG_DX_CURRENT_FEATURE'
+#   in AC_SUBST instead of 'DX_FLAG[]DX_CURRENT_FEATURE' which is rejected by
+#   newer autotools  
+
+# Generate automatic documentation using Doxygen. Works in concert with the
+# aminclude.m4 file and a compatible doxygen configuration file. Defines the
+# following public macros:
+#
+# DX_???_FEATURE(ON|OFF) - control the default setting fo a Doxygen feature.
+# Supported features are 'DOXYGEN' itself, 'DOT' for generating graphics,
+# 'HTML' for plain HTML, 'CHM' for compressed HTML help (for MS users), 'CHI'
+# for generating a seperate .chi file by the .chm file, and 'MAN', 'RTF',
+# 'XML', 'PDF' and 'PS' for the appropriate output formats. The environment
+# variable DOXYGEN_PAPER_SIZE may be specified to override the default 'a4wide'
+# paper size.
+#
+# By default, HTML, PDF and PS documentation is generated as this seems to be
+# the most popular and portable combination. MAN pages created by Doxygen are
+# usually problematic, though by picking an appropriate subset and doing some
+# massaging they might be better than nothing. CHM and RTF are specific for MS
+# (note that you can't generate both HTML and CHM at the same time). The XML is
+# rather useless unless you apply specialized post-processing to it.
+#
+# The macro mainly controls the default state of the feature. The use can
+# override the default by specifying --enable or --disable. The macros ensure
+# that contradictory flags are not given (e.g., --enable-doxygen-html and
+# --enable-doxygen-chm, --enable-doxygen-anything with --disable-doxygen, etc.)
+# Finally, each feature will be automatically disabled (with a warning) if the
+# required programs are missing.
+#
+# Once all the feature defaults have been specified, call DX_INIT_DOXYGEN with
+# the following parameters: a one-word name for the project for use as a
+# filename base etc., an optional configuration file name (the default is
+# 'Doxyfile', the same as Doxygen's default), and an optional output directory
+# name (the default is 'doxygen-doc').
+
+## ----------##
+## Defaults. ##
+## ----------##
+
+DX_ENV=""
+AC_DEFUN([DX_FEATURE_doc],  ON)
+AC_DEFUN([DX_FEATURE_dot],  ON)
+AC_DEFUN([DX_FEATURE_man],  OFF)
+AC_DEFUN([DX_FEATURE_html], ON)
+AC_DEFUN([DX_FEATURE_chm],  OFF)
+AC_DEFUN([DX_FEATURE_chi],  OFF)
+AC_DEFUN([DX_FEATURE_rtf],  OFF)
+AC_DEFUN([DX_FEATURE_xml],  OFF)
+AC_DEFUN([DX_FEATURE_pdf],  ON)
+AC_DEFUN([DX_FEATURE_ps],   ON)
+
+## --------------- ##
+## Private macros. ##
+## --------------- ##
+
+# DX_ENV_APPEND(VARIABLE, VALUE)
+# ------------------------------
+# Append VARIABLE="VALUE" to DX_ENV for invoking doxygen.
+AC_DEFUN([DX_ENV_APPEND], [AC_SUBST([DX_ENV], ["$DX_ENV $1='$2'"])])
+
+# DX_DIRNAME_EXPR
+# ---------------
+# Expand into a shell expression prints the directory part of a path.
+AC_DEFUN([DX_DIRNAME_EXPR],
+         [[expr ".$1" : '\(\.\)[^/]*$' \| "x$1" : 'x\(.*\)/[^/]*$']])
+
+# DX_IF_FEATURE(FEATURE, IF-ON, IF-OFF)
+# -------------------------------------
+# Expands according to the M4 (static) status of the feature.
+AC_DEFUN([DX_IF_FEATURE], [ifelse(DX_FEATURE_$1, ON, [$2], [$3])])
+
+# DX_REQUIRE_PROG(VARIABLE, PROGRAM)
+# ----------------------------------
+# Require the specified program to be found for the DX_CURRENT_FEATURE to work.
+AC_DEFUN([DX_REQUIRE_PROG], [
+AC_PATH_TOOL([$1], [$2])
+if test "$DX_FLAG_DX_CURRENT_FEATURE$$1" = 1; then
+    AC_MSG_WARN([$2 not found - will not DX_CURRENT_DESCRIPTION])
+    AC_SUBST([DX_FLAG_DX_CURRENT_FEATURE], 0)
+fi
+])
+
+# DX_TEST_FEATURE(FEATURE)
+# ------------------------
+# Expand to a shell expression testing whether the feature is active.
+AC_DEFUN([DX_TEST_FEATURE], [test "$DX_FLAG_$1" = 1])
+
+# DX_CHECK_DEPEND(REQUIRED_FEATURE, REQUIRED_STATE)
+# -------------------------------------------------
+# Verify that a required features has the right state before trying to turn on
+# the DX_CURRENT_FEATURE.
+AC_DEFUN([DX_CHECK_DEPEND], [
+test "$DX_FLAG_$1" = "$2" \
+|| AC_MSG_ERROR([doxygen-DX_CURRENT_FEATURE ifelse([$2], 1,
+                            requires, contradicts) doxygen-DX_CURRENT_FEATURE])
+])
+
+# DX_CLEAR_DEPEND(FEATURE, REQUIRED_FEATURE, REQUIRED_STATE)
+# ----------------------------------------------------------
+# Turn off the DX_CURRENT_FEATURE if the required feature is off.
+AC_DEFUN([DX_CLEAR_DEPEND], [
+test "$DX_FLAG_$1" = "$2" || AC_SUBST([DX_FLAG_DX_CURRENT_FEATURE], 0)
+])
+
+
+# DX_FEATURE_ARG(FEATURE, DESCRIPTION,
+#                CHECK_DEPEND, CLEAR_DEPEND,
+#                REQUIRE, DO-IF-ON, DO-IF-OFF)
+# --------------------------------------------
+# Parse the command-line option controlling a feature. CHECK_DEPEND is called
+# if the user explicitly turns the feature on (and invokes DX_CHECK_DEPEND),
+# otherwise CLEAR_DEPEND is called to turn off the default state if a required
+# feature is disabled (using DX_CLEAR_DEPEND). REQUIRE performs additional
+# requirement tests (DX_REQUIRE_PROG). Finally, an automake flag is set and
+# DO-IF-ON or DO-IF-OFF are called according to the final state of the feature.
+AC_DEFUN([DX_ARG_ABLE], [
+    AC_DEFUN([DX_CURRENT_FEATURE], [$1])
+    AC_DEFUN([DX_FLAG_DX_CURRENT_FEATURE], [DX_FLAG_$1])
+    AC_DEFUN([DX_CURRENT_DESCRIPTION], [$2])
+    AC_ARG_ENABLE(doxygen-$1,
+                  [AS_HELP_STRING(DX_IF_FEATURE([$1], [--disable-doxygen-$1],
+                                                      [--enable-doxygen-$1]),
+                                  DX_IF_FEATURE([$1], [don't $2], [$2]))],
+                  [
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    AC_SUBST([DX_FLAG_$1], 1)
+    $3
+;; #(
+n|N|no|No|NO)
+    AC_SUBST([DX_FLAG_$1], 0)
+;; #(
+*)
+    AC_MSG_ERROR([invalid value '$enableval' given to doxygen-$1])
+;;
+esac
+], [
+AC_SUBST([DX_FLAG_$1], [DX_IF_FEATURE([$1], 1, 0)])
+$4
+])
+if DX_TEST_FEATURE([$1]); then
+    $5
+    :
+fi
+if DX_TEST_FEATURE([$1]); then
+    AM_CONDITIONAL(DX_COND_$1, :)
+    $6
+    :
+else
+    AM_CONDITIONAL(DX_COND_$1, false)
+    $7
+    :
+fi
+])
+
+## -------------- ##
+## Public macros. ##
+## -------------- ##
+
+# DX_XXX_FEATURE(DEFAULT_STATE)
+# -----------------------------
+AC_DEFUN([DX_DOXYGEN_FEATURE], [AC_DEFUN([DX_FEATURE_doc],  [$1])])
+AC_DEFUN([DX_MAN_FEATURE],     [AC_DEFUN([DX_FEATURE_man],  [$1])])
+AC_DEFUN([DX_HTML_FEATURE],    [AC_DEFUN([DX_FEATURE_html], [$1])])
+AC_DEFUN([DX_CHM_FEATURE],     [AC_DEFUN([DX_FEATURE_chm],  [$1])])
+AC_DEFUN([DX_CHI_FEATURE],     [AC_DEFUN([DX_FEATURE_chi],  [$1])])
+AC_DEFUN([DX_RTF_FEATURE],     [AC_DEFUN([DX_FEATURE_rtf],  [$1])])
+AC_DEFUN([DX_XML_FEATURE],     [AC_DEFUN([DX_FEATURE_xml],  [$1])])
+AC_DEFUN([DX_DOT_FEATURE],     [AC_DEFUN([DX_FEATURE_dot],  [$1])])
+AC_DEFUN([DX_PDF_FEATURE],     [AC_DEFUN([DX_FEATURE_pdf],  [$1])])
+AC_DEFUN([DX_PS_FEATURE],      [AC_DEFUN([DX_FEATURE_ps],   [$1])])
+
+# DX_INIT_DOXYGEN(PROJECT, [CONFIG-FILE], [OUTPUT-DOC-DIR])
+# ---------------------------------------------------------
+# PROJECT also serves as the base name for the documentation files.
+# The default CONFIG-FILE is "Doxyfile" and OUTPUT-DOC-DIR is "doxygen-doc".
+AC_DEFUN([DX_INIT_DOXYGEN], [
+
+# Files:
+AC_SUBST([DX_PROJECT], [$1])
+AC_SUBST([DX_CONFIG], [ifelse([$2], [], Doxyfile, [$2])])
+AC_SUBST([DX_DOCDIR], [ifelse([$3], [], doxygen-doc, [$3])])
+
+# Environment variables used inside doxygen.cfg:
+DX_ENV_APPEND(SRCDIR, $srcdir)
+DX_ENV_APPEND(PROJECT, $DX_PROJECT)
+DX_ENV_APPEND(DOCDIR, $DX_DOCDIR)
+DX_ENV_APPEND(VERSION, $PACKAGE_VERSION)
+
+# Doxygen itself:
+DX_ARG_ABLE(doc, [generate any doxygen documentation],
+            [],
+            [],
+            [DX_REQUIRE_PROG([DX_DOXYGEN], doxygen)
+             DX_REQUIRE_PROG([DX_PERL], perl)],
+            [DX_ENV_APPEND(PERL_PATH, $DX_PERL)])
+
+# Dot for graphics:
+DX_ARG_ABLE(dot, [generate graphics for doxygen documentation],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [DX_REQUIRE_PROG([DX_DOT], dot)],
+            [DX_ENV_APPEND(HAVE_DOT, YES)
+             DX_ENV_APPEND(DOT_PATH, [`DX_DIRNAME_EXPR($DX_DOT)`])],
+            [DX_ENV_APPEND(HAVE_DOT, NO)])
+
+# Man pages generation:
+DX_ARG_ABLE(man, [generate doxygen manual pages],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [],
+            [DX_ENV_APPEND(GENERATE_MAN, YES)],
+            [DX_ENV_APPEND(GENERATE_MAN, NO)])
+
+# RTF file generation:
+DX_ARG_ABLE(rtf, [generate doxygen RTF documentation],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [],
+            [DX_ENV_APPEND(GENERATE_RTF, YES)],
+            [DX_ENV_APPEND(GENERATE_RTF, NO)])
+
+# XML file generation:
+DX_ARG_ABLE(xml, [generate doxygen XML documentation],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [],
+            [DX_ENV_APPEND(GENERATE_XML, YES)],
+            [DX_ENV_APPEND(GENERATE_XML, NO)])
+
+# (Compressed) HTML help generation:
+DX_ARG_ABLE(chm, [generate doxygen compressed HTML help documentation],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [DX_REQUIRE_PROG([DX_HHC], hhc)],
+            [DX_ENV_APPEND(HHC_PATH, $DX_HHC)
+             DX_ENV_APPEND(GENERATE_HTML, YES)
+             DX_ENV_APPEND(GENERATE_HTMLHELP, YES)],
+            [DX_ENV_APPEND(GENERATE_HTMLHELP, NO)])
+
+# Seperate CHI file generation.
+DX_ARG_ABLE(chi, [generate doxygen seperate compressed HTML help index file],
+            [DX_CHECK_DEPEND(chm, 1)],
+            [DX_CLEAR_DEPEND(chm, 1)],
+            [],
+            [DX_ENV_APPEND(GENERATE_CHI, YES)],
+            [DX_ENV_APPEND(GENERATE_CHI, NO)])
+
+# Plain HTML pages generation:
+DX_ARG_ABLE(html, [generate doxygen plain HTML documentation],
+            [DX_CHECK_DEPEND(doc, 1) DX_CHECK_DEPEND(chm, 0)],
+            [DX_CLEAR_DEPEND(doc, 1) DX_CLEAR_DEPEND(chm, 0)],
+            [],
+            [DX_ENV_APPEND(GENERATE_HTML, YES)],
+            [DX_TEST_FEATURE(chm) || DX_ENV_APPEND(GENERATE_HTML, NO)])
+
+# PostScript file generation:
+DX_ARG_ABLE(ps, [generate doxygen PostScript documentation],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [DX_REQUIRE_PROG([DX_LATEX], latex)
+             DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex)
+             DX_REQUIRE_PROG([DX_DVIPS], dvips)
+             DX_REQUIRE_PROG([DX_EGREP], egrep)])
+
+# PDF file generation:
+DX_ARG_ABLE(pdf, [generate doxygen PDF documentation],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [DX_REQUIRE_PROG([DX_PDFLATEX], pdflatex)
+             DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex)
+             DX_REQUIRE_PROG([DX_EGREP], egrep)])
+
+# LaTeX generation for PS and/or PDF:
+if DX_TEST_FEATURE(ps) || DX_TEST_FEATURE(pdf); then
+    AM_CONDITIONAL(DX_COND_latex, :)
+    DX_ENV_APPEND(GENERATE_LATEX, YES)
+else
+    AM_CONDITIONAL(DX_COND_latex, false)
+    DX_ENV_APPEND(GENERATE_LATEX, NO)
+fi
+
+# Paper size for PS and/or PDF:
+AC_ARG_VAR(DOXYGEN_PAPER_SIZE,
+           [a4wide (default), a4, letter, legal or executive])
+case "$DOXYGEN_PAPER_SIZE" in
+#(
+"")
+    AC_SUBST(DOXYGEN_PAPER_SIZE, "")
+;; #(
+a4wide|a4|letter|legal|executive)
+    DX_ENV_APPEND(PAPER_SIZE, $DOXYGEN_PAPER_SIZE)
+;; #(
+*)
+    AC_MSG_ERROR([unknown DOXYGEN_PAPER_SIZE='$DOXYGEN_PAPER_SIZE'])
+;;
+esac
+
+#For debugging:
+#echo DX_FLAG_doc=$DX_FLAG_doc
+#echo DX_FLAG_dot=$DX_FLAG_dot
+#echo DX_FLAG_man=$DX_FLAG_man
+#echo DX_FLAG_html=$DX_FLAG_html
+#echo DX_FLAG_chm=$DX_FLAG_chm
+#echo DX_FLAG_chi=$DX_FLAG_chi
+#echo DX_FLAG_rtf=$DX_FLAG_rtf
+#echo DX_FLAG_xml=$DX_FLAG_xml
+#echo DX_FLAG_pdf=$DX_FLAG_pdf
+#echo DX_FLAG_ps=$DX_FLAG_ps
+#echo DX_ENV=$DX_ENV
+])
diff --git a/config/ax_tls.m4 b/config/ax_tls.m4
new file mode 100644
index 0000000..033e3b1
--- /dev/null
+++ b/config/ax_tls.m4
@@ -0,0 +1,76 @@
+# ===========================================================================
+#          http://www.gnu.org/software/autoconf-archive/ax_tls.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_TLS([action-if-found], [action-if-not-found])
+#
+# DESCRIPTION
+#
+#   Provides a test for the compiler support of thread local storage (TLS)
+#   extensions. Defines TLS if it is found. Currently knows about GCC/ICC
+#   and MSVC. I think SunPro uses the same as GCC, and Borland apparently
+#   supports either.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Alan Woodland <ajw05 at aber.ac.uk>
+#   Copyright (c) 2010 Diego Elio Petteno` <flameeyes at gmail.com>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 10
+
+AC_DEFUN([AX_TLS], [
+  AC_MSG_CHECKING(for thread local storage (TLS) class)
+  AC_CACHE_VAL(ac_cv_tls, [
+    ax_tls_keywords="__thread __declspec(thread) none"
+    for ax_tls_keyword in $ax_tls_keywords; do
+       AS_CASE([$ax_tls_keyword],
+          [none], [ac_cv_tls=none ; break],
+          [AC_TRY_COMPILE(
+              [#include <stdlib.h>
+               static void
+               foo(void) {
+               static ] $ax_tls_keyword [ int bar;
+               exit(1);
+               }],
+               [],
+               [ac_cv_tls=$ax_tls_keyword ; break],
+               ac_cv_tls=none
+           )])
+    done
+  ])
+  AC_MSG_RESULT($ac_cv_tls)
+
+  AS_IF([test "$ac_cv_tls" != "none"],
+    AC_DEFINE_UNQUOTED([TLS], $ac_cv_tls, [If the compiler supports a TLS storage class define it to that here])
+      m4_ifnblank([$1], [$1]),
+    m4_ifnblank([$2], [$2])
+  )
+])
diff --git a/config/bindings.m4 b/config/bindings.m4
new file mode 100644
index 0000000..3f75479
--- /dev/null
+++ b/config/bindings.m4
@@ -0,0 +1,231 @@
+# CVC4_SUPPORTED_BINDINGS
+# -----------------------
+# Supported language bindings for CVC4.
+AC_DEFUN([CVC4_SUPPORTED_BINDINGS],
+[c,c++,java])
+
+# CVC4_ALL_BINDINGS
+# -----------------
+# All language bindings for CVC4 (may include unofficial bindings).
+AC_DEFUN([CVC4_ALL_BINDINGS],
+[c,java,csharp,perl,php,python,ruby,tcl,ocaml])
+
+# CVC4_NEED_SWIG_FOR_BINDING
+# --------------------------
+# Used by CVC4_CHECK_BINDINGS to ensure swig is available (and correct
+# version) when a binding needs it
+AC_DEFUN([CVC4_NEED_SWIG_FOR_BINDING], [
+  if test -z "$SWIG"; then
+    AC_MSG_WARN([swig not available or incompatible version; $binding bindings require swig 2.0.0 or later])
+    binding_error=yes
+  fi
+])
+
+# CVC4_CHECK_BINDINGS(DEFAULT_BINDINGS_LIST)
+# ------------------------------------------
+# Check for user language binding preferences, and what is possible
+# to build on the build host.
+AC_DEFUN([CVC4_CHECK_BINDINGS], [
+dnl Check for SWIG (for building language bindings)
+noswig=no
+
+m4_foreach(lang,[CVC4_ALL_BINDINGS],
+[[cvc4_build_]]lang[[_bindings=no
+]])
+
+AC_ARG_VAR(SWIG, [SWIG binary (used to generate language bindings)])
+AC_ARG_WITH([swig],
+  [AS_HELP_STRING([--with-swig=BINARY], [path to swig binary])],
+  [if test "$withval" = no; then noswig=yes; else SWIG="$withval"; fi])
+AC_ARG_ENABLE([language-bindings],
+  [AS_HELP_STRING([--enable-language-bindings=][CVC4_SUPPORTED_BINDINGS][ | all], [specify language bindings to build])],
+  [if test "$enableval" = yes; then cvc4_check_for_bindings=yes; try_bindings='$1'; else cvc4_check_for_bindings=no; if test "$enableval" = no; then try_bindings=; else try_bindings="$enableval"; fi; fi],
+  [cvc4_check_for_bindings=no; try_bindings=])
+CVC4_LANGUAGE_BINDINGS=
+if test "$noswig" = yes; then
+  AC_MSG_WARN([use of swig disabled by user, native API bindings disabled.])
+  SWIG=
+else
+  if test -z "$SWIG"; then
+    AC_CHECK_PROGS(SWIG, [swig swig2.0], [], [])
+  else
+    AC_CHECK_PROG(SWIG, "$SWIG", "$SWIG", [])
+  fi
+  if test -z "$SWIG"; then
+    AC_MSG_RESULT([not found])
+    AC_MSG_WARN([language bindings for native API disabled, swig not found.])
+  else
+    AC_MSG_CHECKING([compatibility with version of swig])
+    cat > conftest.c << _CVC4EOF
+%module conftest
+#if !defined(SWIG_VERSION) || SWIG_VERSION < 0x020000
+#error bad version
+#endif
+_CVC4EOF
+    if $SWIG conftest.c >&AS_MESSAGE_LOG_FD 2>&1; then
+      AC_MSG_RESULT([compatible version])
+    else
+      AC_MSG_RESULT([incompatible version])
+      AC_MSG_WARN([swig version 2.0.0 or later is required to build native API bindings])
+      SWIG=
+      echo '===Failed swig input was:' >&AS_MESSAGE_LOG_FD
+      cat conftest.c >&AS_MESSAGE_LOG_FD
+      echo '===End failed swig input' >&AS_MESSAGE_LOG_FD
+      rm -f conftest.c
+    fi
+  fi
+fi
+
+AC_MSG_CHECKING([for requested user language bindings])
+if test "$try_bindings" = all; then
+  try_bindings='CVC4_SUPPORTED_BINDINGS'
+fi
+try_bindings=$(echo "$try_bindings" | sed 's/,/ /g')
+if test -z "$try_bindings"; then
+  AC_MSG_RESULT([none])
+else
+  AC_MSG_RESULT([$try_bindings])
+fi
+CVC4_UNSUPPORTED_LANGUAGE_BINDINGS=
+cvc4_save_CPPFLAGS="$CPPFLAGS"
+cvc4_save_CXXFLAGS="$CXXFLAGS"
+AC_LANG_PUSH([C++])
+for binding in $try_bindings; do
+  __cvc4_lang_supported=no
+  m4_foreach([__cvc4_supported_binding], [CVC4_SUPPORTED_BINDINGS],
+    [if test "$binding" = "__cvc4_supported_binding"; then __cvc4_lang_supported=yes; fi
+  ])dnl
+  if test $__cvc4_lang_supported = no; then
+    CVC4_UNSUPPORTED_LANGUAGE_BINDINGS="${CVC4_UNSUPPORTED_LANGUAGE_BINDINGS:+$CVC4_UNSUPPORTED_LANGUAGE_BINDINGS }$binding"
+  fi
+
+  binding_error=no
+  AC_MSG_CHECKING([for availability of $binding binding])
+  case "$binding" in
+    c++)
+      AC_MSG_RESULT([C++ is built by default]);;
+    c)
+      cvc4_build_c_bindings=yes
+      AC_MSG_RESULT([C support will be built]);;
+    java)
+      AC_MSG_RESULT([Java support will be built])
+      CVC4_NEED_SWIG_FOR_BINDING
+      AC_ARG_VAR(JAVA_CPPFLAGS, [flags to pass to compiler when building Java bindings])
+      CPPFLAGS="$CPPFLAGS $JAVA_CPPFLAGS"
+      AC_CHECK_HEADER([jni.h], [cvc4_build_java_bindings=yes], [binding_error=yes])
+      ;;
+    csharp)
+      AC_MSG_RESULT([[C# support will be built]])
+      CVC4_NEED_SWIG_FOR_BINDING
+      AC_ARG_VAR(CSHARP_CPPFLAGS, [flags to pass to compiler when building C# bindings])
+      CPPFLAGS="$CPPFLAGS $CSHARP_CPPFLAGS"
+      cvc4_build_csharp_bindings=yes
+      ;;
+    perl)
+      AC_MSG_RESULT([perl support will be built])
+      CVC4_NEED_SWIG_FOR_BINDING
+      AC_ARG_VAR(PERL_CPPFLAGS, [flags to pass to compiler when building perl bindings])
+      CPPFLAGS="$CPPFLAGS $PERL_CPPFLAGS"
+      AC_CHECK_HEADER([EXTERN.h], [cvc4_build_perl_bindings=yes], [binding_error=yes])
+      ;;
+    php)
+      AC_MSG_RESULT([php support will be built])
+      CVC4_NEED_SWIG_FOR_BINDING
+      AC_ARG_VAR(PHP_CPPFLAGS, [flags to pass to compiler when building PHP bindings])
+      CPPFLAGS="$CPPFLAGS $PHP_CPPFLAGS"
+      AC_CHECK_HEADER([zend.h], [cvc4_build_php_bindings=yes], [binding_error=yes])
+      ;;
+    python)
+      AC_MSG_RESULT([python support will be built])
+      CVC4_NEED_SWIG_FOR_BINDING
+      AM_PATH_PYTHON([2.5], [cvc4_build_python_bindings=yes], [binding_error=yes])
+      AC_ARG_VAR([PYTHON_INCLUDE], [Include flags for python, bypassing python-config])
+      AC_ARG_VAR([PYTHON_CONFIG], [Path to python-config])
+      AS_IF([test -z "$PYTHON_INCLUDE"], [
+        AS_IF([test -z "$PYTHON_CONFIG"], [
+          AC_PATH_PROGS([PYTHON_CONFIG],
+            [python$PYTHON_VERSION-config python-config],
+            [no]
+          )
+          AS_IF([test "$PYTHON_CONFIG" = no], [AC_MSG_ERROR([cannot find python-config for $PYTHON.])])
+         ])
+        AC_MSG_CHECKING([python include flags])
+        AC_SUBST(PYTHON_CXXFLAGS, `$PYTHON_CONFIG --includes`)
+        AC_MSG_RESULT([$PYTHON_CXXFLAGS])
+      ])
+      CPPFLAGS="$CPPFLAGS $PYTHON_CXXFLAGS"
+      AC_CHECK_HEADER([Python.h], [cvc4_build_python_bindings=yes], [binding_error=yes])     
+      ;;
+    ruby)
+      AC_MSG_RESULT([ruby support will be built])
+      CVC4_NEED_SWIG_FOR_BINDING
+      AC_ARG_VAR(RUBY_CPPFLAGS, [flags to pass to compiler when building ruby bindings])
+      CPPFLAGS="$CPPFLAGS $RUBY_CPPFLAGS"
+      AC_CHECK_HEADER([ruby.h], [cvc4_build_ruby_bindings=yes], [binding_error=yes])
+      ;;
+    tcl)
+      AC_MSG_RESULT([tcl support will be built])
+      CVC4_NEED_SWIG_FOR_BINDING
+      AC_ARG_VAR(TCL_CPPFLAGS, [flags to pass to compiler when building tcl bindings])
+      CPPFLAGS="$CPPFLAGS $TCL_CPPFLAGS"
+      AC_CHECK_HEADER([tcl.h], [cvc4_build_tcl_bindings=yes], [binding_error=yes])
+      ;;
+    ocaml)
+      AC_MSG_RESULT([OCaml support will be built])
+      CVC4_NEED_SWIG_FOR_BINDING
+      AC_ARG_VAR(TCL_CPPFLAGS, [flags to pass to compiler when building OCaml bindings])
+      CPPFLAGS="$CPPFLAGS $OCAML_CPPFLAGS"
+      AC_CHECK_HEADER([caml/misc.h], [cvc4_build_ocaml_bindings=yes], [binding_error=yes])
+      if test "$binding_error" = no; then
+        AC_ARG_VAR(OCAMLC, [OCaml compiler])
+        if test -z "$OCAMLC"; then
+          AC_CHECK_PROGS(OCAMLC, ocamlc, ocamlc, [])
+        else
+          AC_CHECK_PROG(OCAMLC, "$OCAMLC", "$OCAMLC", [])
+        fi
+        AC_ARG_VAR(OCAMLMKTOP, [OCaml runtime-maker])
+        if test -z "$OCAMLMKTOP"; then
+          AC_CHECK_PROGS(OCAMLMKTOP, ocamlmktop, ocamlmktop, [])
+        else
+          AC_CHECK_PROG(OCAMLMKTOP, "$OCAMLMKTOP", "$OCAMLMKTOP", [])
+        fi
+        AC_ARG_VAR(OCAMLFIND, [OCaml-find binary])
+        if test -z "$OCAMLFIND"; then
+          AC_CHECK_PROGS(OCAMLFIND, ocamlfind, ocamlfind, [])
+        else
+          AC_CHECK_PROG(OCAMLFIND, "$OCAMLFIND", "$OCAMLFIND", [])
+        fi
+        AC_ARG_VAR(CAMLP4O, [camlp4o binary])
+        if test -z "$CAMLP4O"; then
+          AC_CHECK_PROGS(CAMLP4O, camlp4o, camlp4o, [])
+        else
+          AC_CHECK_PROG(CAMLP4O, "$CAMLP4O", "$CAMLP4O", [])
+        fi
+      fi
+      ;;
+    *) AC_MSG_RESULT([unknown binding]); binding_error=yes;;
+  esac
+  if test "$binding_error" = yes; then
+    if test "$cvc4_check_for_bindings" = no; then
+      AC_MSG_ERROR([Language binding \`$binding' requested by user, but it cannot be built (the preceding few lines should give an indication why this is).])
+    else
+      AC_MSG_WARN([Language binding \`$binding' cannot be built (the preceding few lines should give an indication why this is).])
+    fi
+  else
+    CVC4_LANGUAGE_BINDINGS="${CVC4_LANGUAGE_BINDINGS:+$CVC4_LANGUAGE_BINDINGS }$binding"
+  fi
+  AC_LANG_POP([C++])
+  CXXFLAGS="$cvc4_save_CXXFLAGS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+done
+
+AM_CONDITIONAL([CVC4_HAS_SWIG], [test "$SWIG"])
+
+m4_foreach([lang], [CVC4_ALL_BINDINGS],
+[AM_CONDITIONAL([CVC4_LANGUAGE_BINDING_]m4_toupper(lang), [test "$cvc4_build_]lang[_bindings" = yes])
+])dnl
+
+AC_SUBST(SWIG)
+AC_SUBST(CVC4_LANGUAGE_BINDINGS)
+
+])# CVC4_CHECK_BINDINGS
diff --git a/config/boost.m4 b/config/boost.m4
new file mode 100644
index 0000000..da49c5e
--- /dev/null
+++ b/config/boost.m4
@@ -0,0 +1,1196 @@
+# boost.m4: Locate Boost headers and libraries for autoconf-based projects.
+# Copyright (C) 2007, 2008, 2009, 2010, 2011  Benoit Sigoure <tsuna at lrde.epita.fr>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Additional permission under section 7 of the GNU General Public
+# License, version 3 ("GPLv3"):
+#
+# If you convey this file as part of a work that contains a
+# configuration script generated by Autoconf, you may do so under
+# terms of your choice.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+m4_define([_BOOST_SERIAL], [m4_translit([
+# serial 16
+], [#
+], [])])
+
+# Original sources can be found at http://github.com/tsuna/boost.m4
+# You can fetch the latest version of the script by doing:
+#   wget http://github.com/tsuna/boost.m4/raw/master/build-aux/boost.m4
+
+# ------ #
+# README #
+# ------ #
+
+# This file provides several macros to use the various Boost libraries.
+# The first macro is BOOST_REQUIRE.  It will simply check if it's possible to
+# find the Boost headers of a given (optional) minimum version and it will
+# define BOOST_CPPFLAGS accordingly.  It will add an option --with-boost to
+# your configure so that users can specify non standard locations.
+# If the user's environment contains BOOST_ROOT and --with-boost was not
+# specified, --with-boost=$BOOST_ROOT is implicitly used.
+# For more README and documentation, go to http://github.com/tsuna/boost.m4
+# Note: THESE MACROS ASSUME THAT YOU USE LIBTOOL.  If you don't, don't worry,
+# simply read the README, it will show you what to do step by step.
+
+m4_pattern_forbid([^_?(BOOST|Boost)_])
+
+
+# _BOOST_SED_CPP(SED-PROGRAM, PROGRAM,
+#                [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+# --------------------------------------------------------
+# Same as AC_EGREP_CPP, but leave the result in conftest.i.
+#
+# SED-PROGRAM is *not* overquoted, as in AC_EGREP_CPP.  It is expanded
+# in double-quotes, so escape your double quotes.
+#
+# It could be useful to turn this into a macro which extracts the
+# value of any macro.
+m4_define([_BOOST_SED_CPP],
+[AC_LANG_PREPROC_REQUIRE()dnl
+AC_REQUIRE([AC_PROG_SED])dnl
+AC_LANG_CONFTEST([AC_LANG_SOURCE([[$2]])])
+AS_IF([dnl eval is necessary to expand ac_cpp.
+dnl Ultrix and Pyramid sh refuse to redirect output of eval, so use subshell.
+dnl Beware of Windows end-of-lines, for instance if we are running
+dnl some Windows programs under Wine.  In that case, boost/version.hpp
+dnl is certainly using "\r\n", but the regular Unix shell will only
+dnl strip `\n' with backquotes, not the `\r'.  This results in
+dnl boost_cv_lib_version='1_37\r' for instance, which breaks
+dnl everything else.
+dnl Cannot use 'dnl' after [$4] because a trailing dnl may break AC_CACHE_CHECK
+(eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
+  grep -v "^#" |
+  tr -d '\r\n ' |
+  $SED -n -e "$1" >conftest.i 2>&1],
+  [$3],
+  [$4])
+rm -rf conftest*
+])# AC_EGREP_CPP
+
+
+
+# BOOST_REQUIRE([VERSION], [ACTION-IF-NOT-FOUND])
+# -----------------------------------------------
+# Look for Boost.  If version is given, it must either be a literal of the form
+# "X.Y.Z" where X, Y and Z are integers (the ".Z" part being optional) or a
+# variable "$var".
+# Defines the value BOOST_CPPFLAGS.  This macro only checks for headers with
+# the required version, it does not check for any of the Boost libraries.
+# On # success, defines HAVE_BOOST.  On failure, calls the optional
+# ACTION-IF-NOT-FOUND action if one was supplied.
+# Otherwise aborts with an error message.
+AC_DEFUN([BOOST_REQUIRE],
+[AC_REQUIRE([AC_PROG_CXX])dnl
+AC_REQUIRE([AC_PROG_GREP])dnl
+echo "$as_me: this is boost.m4[]_BOOST_SERIAL" >&AS_MESSAGE_LOG_FD
+boost_save_IFS=$IFS
+boost_version_req=$1
+IFS=.
+set x $boost_version_req 0 0 0
+IFS=$boost_save_IFS
+shift
+boost_version_req=`expr "$[1]" '*' 100000 + "$[2]" '*' 100 + "$[3]"`
+boost_version_req_string=$[1].$[2].$[3]
+AC_ARG_WITH([boost],
+   [AS_HELP_STRING([--with-boost=DIR],
+                   [prefix of Boost $1 @<:@guess@:>@])])dnl
+AC_ARG_VAR([BOOST_ROOT],[Location of Boost installation])dnl
+# If BOOST_ROOT is set and the user has not provided a value to
+# --with-boost, then treat BOOST_ROOT as if it the user supplied it.
+if test x"$BOOST_ROOT" != x; then
+  if test x"$with_boost" = x; then
+    AC_MSG_NOTICE([Detected BOOST_ROOT; continuing with --with-boost=$BOOST_ROOT])
+    with_boost=$BOOST_ROOT
+  else
+    AC_MSG_NOTICE([Detected BOOST_ROOT=$BOOST_ROOT, but overridden by --with-boost=$with_boost])
+  fi
+fi
+AC_SUBST([DISTCHECK_CONFIGURE_FLAGS],
+         ["$DISTCHECK_CONFIGURE_FLAGS '--with-boost=$with_boost'"])dnl
+boost_save_CPPFLAGS=$CPPFLAGS
+  AC_CACHE_CHECK([for Boost headers version >= $boost_version_req_string],
+    [boost_cv_inc_path],
+    [boost_cv_inc_path=no
+AC_LANG_PUSH([C++])dnl
+m4_pattern_allow([^BOOST_VERSION$])dnl
+    AC_LANG_CONFTEST([AC_LANG_PROGRAM([[#include <boost/version.hpp>
+#if !defined BOOST_VERSION
+# error BOOST_VERSION is not defined
+#elif BOOST_VERSION < $boost_version_req
+# error Boost headers version < $boost_version_req
+#endif
+]])])
+    # If the user provided a value to --with-boost, use it and only it.
+    case $with_boost in #(
+      ''|yes) set x '' /opt/local/include /usr/local/include /opt/include \
+                 /usr/include C:/Boost/include;; #(
+      *)      set x "$with_boost/include" "$with_boost";;
+    esac
+    shift
+    for boost_dir
+    do
+    # Without --layout=system, Boost (or at least some versions) installs
+    # itself in <prefix>/include/boost-<version>.  This inner loop helps to
+    # find headers in such directories.
+    #
+    # Any ${boost_dir}/boost-x_xx directories are searched in reverse version
+    # order followed by ${boost_dir}.  The final '.' is a sentinel for
+    # searching $boost_dir" itself.  Entries are whitespace separated.
+    #
+    # I didn't indent this loop on purpose (to avoid over-indented code)
+    boost_layout_system_search_list=`cd "$boost_dir" 2>/dev/null \
+        && ls -1 | "${GREP}" '^boost-' | sort -rn -t- -k2 \
+        && echo .`
+    for boost_inc in $boost_layout_system_search_list
+    do
+      if test x"$boost_inc" != x.; then
+        boost_inc="$boost_dir/$boost_inc"
+      else
+        boost_inc="$boost_dir" # Uses sentinel in boost_layout_system_search_list
+      fi
+      if test x"$boost_inc" != x; then
+        # We are going to check whether the version of Boost installed
+        # in $boost_inc is usable by running a compilation that
+        # #includes it.  But if we pass a -I/some/path in which Boost
+        # is not installed, the compiler will just skip this -I and
+        # use other locations (either from CPPFLAGS, or from its list
+        # of system include directories).  As a result we would use
+        # header installed on the machine instead of the /some/path
+        # specified by the user.  So in that precise case (trying
+        # $boost_inc), make sure the version.hpp exists.
+        #
+        # Use test -e as there can be symlinks.
+        test -e "$boost_inc/boost/version.hpp" || continue
+        CPPFLAGS="$CPPFLAGS -I$boost_inc"
+      fi
+      AC_COMPILE_IFELSE([], [boost_cv_inc_path=yes], [boost_cv_version=no])
+      if test x"$boost_cv_inc_path" = xyes; then
+        if test x"$boost_inc" != x; then
+          boost_cv_inc_path=$boost_inc
+        fi
+        break 2
+      fi
+    done
+    done
+AC_LANG_POP([C++])dnl
+    ])
+    case $boost_cv_inc_path in #(
+      no)
+        boost_errmsg="cannot find Boost headers version >= $boost_version_req_string"
+        m4_if([$2], [],  [AC_MSG_ERROR([$boost_errmsg])],
+                        [AC_MSG_NOTICE([$boost_errmsg])])
+        $2
+        ;;#(
+      yes)
+        BOOST_CPPFLAGS=
+        ;;#(
+      *)
+        AC_SUBST([BOOST_CPPFLAGS], ["-I$boost_cv_inc_path"])dnl
+        ;;
+    esac
+  if test x"$boost_cv_inc_path" != xno; then
+  AC_DEFINE([HAVE_BOOST], [1],
+            [Defined if the requested minimum BOOST version is satisfied])
+  AC_CACHE_CHECK([for Boost's header version],
+    [boost_cv_lib_version],
+    [m4_pattern_allow([^BOOST_LIB_VERSION$])dnl
+     _BOOST_SED_CPP([/^boost-lib-version=/{s///;s/\"//g;p;q;}],
+                    [#include <boost/version.hpp>
+boost-lib-version = BOOST_LIB_VERSION],
+    [boost_cv_lib_version=`cat conftest.i`])])
+    # e.g. "134" for 1_34_1 or "135" for 1_35
+    boost_major_version=`echo "$boost_cv_lib_version" | sed 's/_//;s/_.*//'`
+    case $boost_major_version in #(
+      '' | *[[!0-9]]*)
+        AC_MSG_ERROR([invalid value: boost_major_version=$boost_major_version])
+        ;;
+    esac
+fi
+CPPFLAGS=$boost_save_CPPFLAGS
+])# BOOST_REQUIRE
+
+# BOOST_STATIC()
+# --------------
+# Add the "--enable-static-boost" configure argument. If this argument is given
+# on the command line, static versions of the libraries will be looked up.
+AC_DEFUN([BOOST_STATIC],
+  [AC_ARG_ENABLE([static-boost],
+     [AC_HELP_STRING([--enable-static-boost],
+               [Prefer the static boost libraries over the shared ones [no]])],
+     [enable_static_boost=yes],
+     [enable_static_boost=no])])# BOOST_STATIC
+
+# BOOST_FIND_HEADER([HEADER-NAME], [ACTION-IF-NOT-FOUND], [ACTION-IF-FOUND])
+# --------------------------------------------------------------------------
+# Wrapper around AC_CHECK_HEADER for Boost headers.  Useful to check for
+# some parts of the Boost library which are only made of headers and don't
+# require linking (such as Boost.Foreach).
+#
+# Default ACTION-IF-NOT-FOUND: Fail with a fatal error unless Boost couldn't be
+# found in the first place, in which case by default a notice is issued to the
+# user.  Presumably if we haven't died already it's because it's OK to not have
+# Boost, which is why only a notice is issued instead of a hard error.
+#
+# Default ACTION-IF-FOUND: define the preprocessor symbol HAVE_<HEADER-NAME> in
+# case of success # (where HEADER-NAME is written LIKE_THIS, e.g.,
+# HAVE_BOOST_FOREACH_HPP).
+AC_DEFUN([BOOST_FIND_HEADER],
+[AC_REQUIRE([BOOST_REQUIRE])dnl
+if test x"$boost_cv_inc_path" = xno; then
+  m4_default([$2], [AC_MSG_NOTICE([Boost not available, not searching for $1])])
+else
+AC_LANG_PUSH([C++])dnl
+boost_save_CPPFLAGS=$CPPFLAGS
+CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+AC_CHECK_HEADER([$1],
+  [m4_default([$3], [AC_DEFINE(AS_TR_CPP([HAVE_$1]), [1],
+                               [Define to 1 if you have <$1>])])],
+  [m4_default([$2], [AC_MSG_ERROR([cannot find $1])])])
+CPPFLAGS=$boost_save_CPPFLAGS
+AC_LANG_POP([C++])dnl
+fi
+])# BOOST_FIND_HEADER
+
+
+# BOOST_FIND_LIB([LIB-NAME], [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST],
+#                [CXX-PROLOGUE], [ACTION-IF-NOT-FOUND])
+# -------------------------------------------------------------------------
+# Look for the Boost library LIB-NAME (e.g., LIB-NAME = `thread', for
+# libboost_thread).  Check that HEADER-NAME works and check that
+# libboost_LIB-NAME can link with the code CXX-TEST.  The optional argument
+# CXX-PROLOGUE can be used to include some C++ code before the `main'
+# function.  If ACTION-IF-NOT-FOUND is given, errors are nonfatal (otherwise
+# they are fatal).
+#
+# Invokes BOOST_FIND_HEADER([HEADER-NAME]) (see above).
+#
+# Boost libraries typically come compiled with several flavors (with different
+# runtime options) so PREFERRED-RT-OPT is the preferred suffix.  A suffix is one
+# or more of the following letters: sgdpn (in that order).  s = static
+# runtime, d = debug build, g = debug/diagnostic runtime, p = STLPort build,
+# n = (unsure) STLPort build without iostreams from STLPort (it looks like `n'
+# must always be used along with `p').  Additionally, PREFERRED-RT-OPT can
+# start with `mt-' to indicate that there is a preference for multi-thread
+# builds.  Some sample values for PREFERRED-RT-OPT: (nothing), mt, d, mt-d, gdp
+# ...  If you want to make sure you have a specific version of Boost
+# (eg, >= 1.33) you *must* invoke BOOST_REQUIRE before this macro.
+AC_DEFUN([BOOST_FIND_LIB],
+[AC_REQUIRE([BOOST_REQUIRE])dnl
+AC_REQUIRE([_BOOST_FIND_COMPILER_TAG])dnl
+AC_REQUIRE([BOOST_STATIC])dnl
+AC_REQUIRE([_BOOST_GUESS_WHETHER_TO_USE_MT])dnl
+if test x"$boost_cv_inc_path" = xno; then
+  AC_MSG_NOTICE([Boost not available, not searching for the Boost $1 library])
+else
+dnl The else branch is huge and wasn't intended on purpose.
+AC_LANG_PUSH([C++])dnl
+AS_VAR_PUSHDEF([Boost_lib], [boost_cv_lib_$1])dnl
+AS_VAR_PUSHDEF([Boost_lib_LDFLAGS], [boost_cv_lib_$1_LDFLAGS])dnl
+AS_VAR_PUSHDEF([Boost_lib_LDPATH], [boost_cv_lib_$1_LDPATH])dnl
+AS_VAR_PUSHDEF([Boost_lib_LIBS], [boost_cv_lib_$1_LIBS])dnl
+BOOST_FIND_HEADER([$3], [$6])
+boost_save_CPPFLAGS=$CPPFLAGS
+CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+# Now let's try to find the library.  The algorithm is as follows: first look
+# for a given library name according to the user's PREFERRED-RT-OPT.  For each
+# library name, we prefer to use the ones that carry the tag (toolset name).
+# Each library is searched through the various standard paths were Boost is
+# usually installed.  If we can't find the standard variants, we try to
+# enforce -mt (for instance on MacOSX, libboost_threads.dylib doesn't exist
+# but there's -obviously- libboost_threads-mt.dylib).
+AC_CACHE_CHECK([for the Boost $1 library], [Boost_lib],
+  [Boost_lib=no
+  case "$2" in #(
+    mt | mt-) boost_mt=-mt; boost_rtopt=;; #(
+    mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X$2" : 'Xmt-*\(.*\)'`;; #(
+    *) boost_mt=; boost_rtopt=$2;;
+  esac
+  if test $enable_static_boost = yes; then
+    boost_rtopt="s$boost_rtopt"
+  fi
+  # Find the proper debug variant depending on what we've been asked to find.
+  case $boost_rtopt in #(
+    *d*) boost_rt_d=$boost_rtopt;; #(
+    *[[sgpn]]*) # Insert the `d' at the right place (in between `sg' and `pn')
+      boost_rt_d=`echo "$boost_rtopt" | sed 's/\(s*g*\)\(p*n*\)/\1\2/'`;; #(
+    *) boost_rt_d='-d';;
+  esac
+  # If the PREFERRED-RT-OPT are not empty, prepend a `-'.
+  test -n "$boost_rtopt" && boost_rtopt="-$boost_rtopt"
+  $boost_guess_use_mt && boost_mt=-mt
+  # Look for the abs path the static archive.
+  # $libext is computed by Libtool but let's make sure it's non empty.
+  test -z "$libext" &&
+    AC_MSG_ERROR([the libext variable is empty, did you invoke Libtool?])
+  boost_save_ac_objext=$ac_objext
+  # Generate the test file.
+  AC_LANG_CONFTEST([AC_LANG_PROGRAM([#include <$3>
+$5], [$4])])
+dnl Optimization hacks: compiling C++ is slow, especially with Boost.  What
+dnl we're trying to do here is guess the right combination of link flags
+dnl (LIBS / LDFLAGS) to use a given library.  This can take several
+dnl iterations before it succeeds and is thus *very* slow.  So what we do
+dnl instead is that we compile the code first (and thus get an object file,
+dnl typically conftest.o).  Then we try various combinations of link flags
+dnl until we succeed to link conftest.o in an executable.  The problem is
+dnl that the various TRY_LINK / COMPILE_IFELSE macros of Autoconf always
+dnl remove all the temporary files including conftest.o.  So the trick here
+dnl is to temporarily change the value of ac_objext so that conftest.o is
+dnl preserved accross tests.  This is obviously fragile and I will burn in
+dnl hell for not respecting Autoconf's documented interfaces, but in the
+dnl mean time, it optimizes the macro by a factor of 5 to 30.
+dnl Another small optimization: the first argument of AC_COMPILE_IFELSE left
+dnl empty because the test file is generated only once above (before we
+dnl start the for loops).
+  AC_COMPILE_IFELSE([],
+    [ac_objext=do_not_rm_me_plz],
+    [m4_if([$6], [],  [AC_MSG_ERROR([cannot compile a test that uses Boost $1])],
+                      [AC_MSG_NOTICE([cannot compile a test that uses Boost $1])])
+     $6])
+  ac_objext=$boost_save_ac_objext
+  boost_failed_libs=
+# Don't bother to ident the 6 nested for loops, only the 2 innermost ones
+# matter.
+for boost_tag_ in -$boost_cv_lib_tag ''; do
+for boost_ver_ in -$boost_cv_lib_version ''; do
+for boost_mt_ in $boost_mt -mt ''; do
+for boost_rtopt_ in $boost_rtopt '' -d; do
+  for boost_lib in \
+    boost_$1$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \
+    boost_$1$boost_tag_$boost_rtopt_$boost_ver_ \
+    boost_$1$boost_tag_$boost_mt_$boost_ver_ \
+    boost_$1$boost_tag_$boost_ver_
+  do
+    # Avoid testing twice the same lib
+    case $boost_failed_libs in #(
+      *@$boost_lib@*) continue;;
+    esac
+    # If with_boost is empty, we'll search in /lib first, which is not quite
+    # right so instead we'll try to a location based on where the headers are.
+    boost_tmp_lib=$with_boost
+    test x"$with_boost" = x && boost_tmp_lib=${boost_cv_inc_path%/include}
+    for boost_ldpath in "$boost_tmp_lib/lib" '' \
+             /opt/local/lib* /usr/local/lib* /opt/lib* /usr/lib* \
+             "$with_boost" C:/Boost/lib /lib*
+    do
+      test -e "$boost_ldpath" || continue
+      boost_save_LDFLAGS=$LDFLAGS
+      # Are we looking for a static library?
+      case $boost_ldpath:$boost_rtopt_ in #(
+        *?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt)
+          Boost_lib_LIBS="$boost_ldpath/lib$boost_lib.$libext"
+          test -e "$Boost_lib_LIBS" || continue;; #(
+        *) # No: use -lboost_foo to find the shared library.
+          Boost_lib_LIBS="-l$boost_lib";;
+      esac
+      boost_save_LIBS=$LIBS
+      LIBS="$Boost_lib_LIBS $LIBS"
+      test x"$boost_ldpath" != x && LDFLAGS="$LDFLAGS -L$boost_ldpath"
+dnl First argument of AC_LINK_IFELSE left empty because the test file is
+dnl generated only once above (before we start the for loops).
+      _BOOST_AC_LINK_IFELSE([],
+                            [Boost_lib=yes], [Boost_lib=no])
+      ac_objext=$boost_save_ac_objext
+      LDFLAGS=$boost_save_LDFLAGS
+      LIBS=$boost_save_LIBS
+      if test x"$Boost_lib" = xyes; then
+        Boost_lib_LDFLAGS="-L$boost_ldpath -Wl,-rpath -Wl,$boost_ldpath"
+        Boost_lib_LDPATH="$boost_ldpath"
+        break 6
+      else
+        boost_failed_libs="$boost_failed_libs@$boost_lib@"
+      fi
+    done
+  done
+done
+done
+done
+done
+rm -f conftest.$ac_objext
+])
+case $Boost_lib in #((
+  no) _AC_MSG_LOG_CONFTEST
+    m4_if([$6], [], [AC_MSG_ERROR([cannot find the flags to link with Boost $1])],
+                    [AC_MSG_NOTICE([cannot find the flags to link with Boost $1])])
+    $6
+    ;;
+  *)
+    AC_SUBST(AS_TR_CPP([BOOST_$1_LDFLAGS]), [$Boost_lib_LDFLAGS])dnl
+    AC_SUBST(AS_TR_CPP([BOOST_$1_LDPATH]), [$Boost_lib_LDPATH])dnl
+    AC_SUBST([BOOST_LDPATH], [$Boost_lib_LDPATH])dnl
+    AC_SUBST(AS_TR_CPP([BOOST_$1_LIBS]), [$Boost_lib_LIBS])dnl
+    ;;
+esac
+CPPFLAGS=$boost_save_CPPFLAGS
+AS_VAR_POPDEF([Boost_lib])dnl
+AS_VAR_POPDEF([Boost_lib_LDFLAGS])dnl
+AS_VAR_POPDEF([Boost_lib_LDPATH])dnl
+AS_VAR_POPDEF([Boost_lib_LIBS])dnl
+AC_LANG_POP([C++])dnl
+fi
+])# BOOST_FIND_LIB
+
+
+# --------------------------------------- #
+# Checks for the various Boost libraries. #
+# --------------------------------------- #
+
+# List of boost libraries: http://www.boost.org/libs/libraries.htm
+# The page http://beta.boost.org/doc/libs is useful: it gives the first release
+# version of each library (among other things).
+
+# BOOST_DEFUN(LIBRARY, CODE)
+# --------------------------
+# Define BOOST_<LIBRARY-UPPERCASE> as a macro that runs CODE.
+#
+# Use indir to avoid the warning on underquoted macro name given to AC_DEFUN.
+m4_define([BOOST_DEFUN],
+[m4_indir([AC_DEFUN],
+          m4_toupper([BOOST_$1]),
+[m4_pushdef([BOOST_Library], [$1])dnl
+$2
+m4_popdef([BOOST_Library])dnl
+])
+])
+
+# BOOST_ARRAY()
+# -------------
+# Look for Boost.Array
+BOOST_DEFUN([Array],
+[BOOST_FIND_HEADER([boost/array.hpp])])
+
+
+# BOOST_ASIO()
+# ------------
+# Look for Boost.Asio (new in Boost 1.35).
+BOOST_DEFUN([Asio],
+[AC_REQUIRE([BOOST_SYSTEM])dnl
+BOOST_FIND_HEADER([boost/asio.hpp])])
+
+
+# BOOST_BIND()
+# ------------
+# Look for Boost.Bind
+BOOST_DEFUN([Bind],
+[BOOST_FIND_HEADER([boost/bind.hpp])])
+
+
+# BOOST_CHRONO()
+# ------------------
+# Look for Boost.Chrono
+BOOST_DEFUN([Chrono],
+[# Do we have to check for Boost.System?  This link-time dependency was
+# added as of 1.35.0.  If we have a version <1.35, we must not attempt to
+# find Boost.System as it didn't exist by then.
+if test $boost_major_version -ge 135; then
+BOOST_SYSTEM([$1])
+fi # end of the Boost.System check.
+boost_filesystem_save_LIBS=$LIBS
+boost_filesystem_save_LDFLAGS=$LDFLAGS
+m4_pattern_allow([^BOOST_SYSTEM_(LIBS|LDFLAGS)$])dnl
+LIBS="$LIBS $BOOST_SYSTEM_LIBS"
+LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS"
+BOOST_FIND_LIB([chrono], [$1],
+                [boost/chrono.hpp],
+                [boost::chrono::thread_clock d;])
+if test $enable_static_boost = yes && test $boost_major_version -ge 135; then
+    AC_SUBST([BOOST_FILESYSTEM_LIBS], ["$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS"])
+fi
+LIBS=$boost_filesystem_save_LIBS
+LDFLAGS=$boost_filesystem_save_LDFLAGS
+
+])# BOOST_CHRONO
+
+
+# BOOST_CONVERSION()
+# ------------------
+# Look for Boost.Conversion (cast / lexical_cast)
+BOOST_DEFUN([Conversion],
+[BOOST_FIND_HEADER([boost/cast.hpp])
+BOOST_FIND_HEADER([boost/lexical_cast.hpp])
+])# BOOST_CONVERSION
+
+
+# BOOST_DATE_TIME([PREFERRED-RT-OPT])
+# -----------------------------------
+# Look for Boost.Date_Time.  For the documentation of PREFERRED-RT-OPT, see the
+# documentation of BOOST_FIND_LIB above.
+BOOST_DEFUN([Date_Time],
+[BOOST_FIND_LIB([date_time], [$1],
+                [boost/date_time/posix_time/posix_time.hpp],
+                [boost::posix_time::ptime t;])
+])# BOOST_DATE_TIME
+
+
+# BOOST_FILESYSTEM([PREFERRED-RT-OPT])
+# ------------------------------------
+# Look for Boost.Filesystem.  For the documentation of PREFERRED-RT-OPT, see
+# the documentation of BOOST_FIND_LIB above.
+# Do not check for boost/filesystem.hpp because this file was introduced in
+# 1.34.
+BOOST_DEFUN([Filesystem],
+[# Do we have to check for Boost.System?  This link-time dependency was
+# added as of 1.35.0.  If we have a version <1.35, we must not attempt to
+# find Boost.System as it didn't exist by then.
+if test $boost_major_version -ge 135; then
+BOOST_SYSTEM([$1])
+fi # end of the Boost.System check.
+boost_filesystem_save_LIBS=$LIBS
+boost_filesystem_save_LDFLAGS=$LDFLAGS
+m4_pattern_allow([^BOOST_SYSTEM_(LIBS|LDFLAGS)$])dnl
+LIBS="$LIBS $BOOST_SYSTEM_LIBS"
+LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS"
+BOOST_FIND_LIB([filesystem], [$1],
+                [boost/filesystem/path.hpp], [boost::filesystem::path p;])
+if test $enable_static_boost = yes && test $boost_major_version -ge 135; then
+    AC_SUBST([BOOST_FILESYSTEM_LIBS], ["$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS"])
+fi
+LIBS=$boost_filesystem_save_LIBS
+LDFLAGS=$boost_filesystem_save_LDFLAGS
+])# BOOST_FILESYSTEM
+
+
+# BOOST_FOREACH()
+# ---------------
+# Look for Boost.Foreach
+BOOST_DEFUN([Foreach],
+[BOOST_FIND_HEADER([boost/foreach.hpp])])
+
+
+# BOOST_FORMAT()
+# --------------
+# Look for Boost.Format
+# Note: we can't check for boost/format/format_fwd.hpp because the header isn't
+# standalone.  It can't be compiled because it triggers the following error:
+# boost/format/detail/config_macros.hpp:88: error: 'locale' in namespace 'std'
+#                                                  does not name a type
+BOOST_DEFUN([Format],
+[BOOST_FIND_HEADER([boost/format.hpp])])
+
+
+# BOOST_FUNCTION()
+# ----------------
+# Look for Boost.Function
+BOOST_DEFUN([Function],
+[BOOST_FIND_HEADER([boost/function.hpp])])
+
+
+# BOOST_GRAPH([PREFERRED-RT-OPT])
+# -------------------------------
+# Look for Boost.Graphs.  For the documentation of PREFERRED-RT-OPT, see the
+# documentation of BOOST_FIND_LIB above.
+BOOST_DEFUN([Graph],
+[BOOST_FIND_LIB([graph], [$1],
+                [boost/graph/adjacency_list.hpp], [boost::adjacency_list<> g;])
+])# BOOST_GRAPH
+
+
+# BOOST_IOSTREAMS([PREFERRED-RT-OPT])
+# -----------------------------------
+# Look for Boost.IOStreams.  For the documentation of PREFERRED-RT-OPT, see the
+# documentation of BOOST_FIND_LIB above.
+BOOST_DEFUN([IOStreams],
+[BOOST_FIND_LIB([iostreams], [$1],
+                [boost/iostreams/device/file_descriptor.hpp],
+                [boost::iostreams::file_descriptor fd; fd.close();])
+])# BOOST_IOSTREAMS
+
+
+# BOOST_HASH()
+# ------------
+# Look for Boost.Functional/Hash
+BOOST_DEFUN([Hash],
+[BOOST_FIND_HEADER([boost/functional/hash.hpp])])
+
+
+# BOOST_LAMBDA()
+# --------------
+# Look for Boost.Lambda
+BOOST_DEFUN([Lambda],
+[BOOST_FIND_HEADER([boost/lambda/lambda.hpp])])
+
+
+# BOOST_LOG([PREFERRED-RT-OPT])
+# -----------------------------
+# Look for Boost.Log For the documentation of PREFERRED-RT-OPT, see the
+# documentation of BOOST_FIND_LIB above.
+BOOST_DEFUN([Log],
+[BOOST_FIND_LIB([log], [$1],
+    [boost/log/core/core.hpp],
+    [boost::log::attribute a; a.get_value();])
+])# BOOST_LOG
+
+
+# BOOST_LOG_SETUP([PREFERRED-RT-OPT])
+# -----------------------------------
+# Look for Boost.Log For the documentation of PREFERRED-RT-OPT, see the
+# documentation of BOOST_FIND_LIB above.
+BOOST_DEFUN([Log_Setup],
+[AC_REQUIRE([BOOST_LOG])dnl
+BOOST_FIND_LIB([log_setup], [$1],
+    [boost/log/utility/init/from_settings.hpp],
+    [boost::log::basic_settings<char> bs; bs.empty();])
+])# BOOST_LOG_SETUP
+
+
+# BOOST_MATH()
+# ------------
+# Look for Boost.Math
+# TODO: This library isn't header-only but it comes in multiple different
+# flavors that don't play well with BOOST_FIND_LIB (e.g, libboost_math_c99,
+# libboost_math_c99f, libboost_math_c99l, libboost_math_tr1,
+# libboost_math_tr1f, libboost_math_tr1l).  This macro must be fixed to do the
+# right thing anyway.
+BOOST_DEFUN([Math],
+[BOOST_FIND_HEADER([boost/math/special_functions.hpp])])
+
+
+# BOOST_MULTIARRAY()
+# ------------------
+# Look for Boost.MultiArray
+BOOST_DEFUN([MultiArray],
+[BOOST_FIND_HEADER([boost/multi_array.hpp])])
+
+
+# BOOST_NUMERIC_CONVERSION()
+# --------------------------
+# Look for Boost.NumericConversion (policy-based numeric conversion)
+BOOST_DEFUN([Numeric_Conversion],
+[BOOST_FIND_HEADER([boost/numeric/conversion/converter.hpp])
+])# BOOST_NUMERIC_CONVERSION
+
+
+# BOOST_OPTIONAL()
+# ----------------
+# Look for Boost.Optional
+BOOST_DEFUN([Optional],
+[BOOST_FIND_HEADER([boost/optional.hpp])])
+
+
+# BOOST_PREPROCESSOR()
+# --------------------
+# Look for Boost.Preprocessor
+BOOST_DEFUN([Preprocessor],
+[BOOST_FIND_HEADER([boost/preprocessor/repeat.hpp])])
+
+
+# BOOST_UNORDERED()
+# -----------------
+# Look for Boost.Unordered
+BOOST_DEFUN([Unordered],
+[BOOST_FIND_HEADER([boost/unordered_map.hpp])])
+
+
+# BOOST_UUID()
+# ------------
+# Look for Boost.Uuid
+BOOST_DEFUN([Uuid],
+[BOOST_FIND_HEADER([boost/uuid/uuid.hpp])])
+
+
+# BOOST_PROGRAM_OPTIONS([PREFERRED-RT-OPT])
+# -----------------------------------------
+# Look for Boost.Program_options.  For the documentation of PREFERRED-RT-OPT,
+# see the documentation of BOOST_FIND_LIB above.
+BOOST_DEFUN([Program_Options],
+[BOOST_FIND_LIB([program_options], [$1],
+                [boost/program_options.hpp],
+                [boost::program_options::options_description d("test");])
+])# BOOST_PROGRAM_OPTIONS
+
+
+
+# _BOOST_PYTHON_CONFIG(VARIABLE, FLAG)
+# ------------------------------------
+# Save VARIABLE, and define it via `python-config --FLAG`.
+# Substitute BOOST_PYTHON_VARIABLE.
+m4_define([_BOOST_PYTHON_CONFIG],
+[AC_SUBST([BOOST_PYTHON_$1],
+          [`python-config --$2 2>/dev/null`])dnl
+boost_python_save_$1=$$1
+$1="$$1 $BOOST_PYTHON_$1"])
+
+
+# BOOST_PYTHON([PREFERRED-RT-OPT])
+# --------------------------------
+# Look for Boost.Python.  For the documentation of PREFERRED-RT-OPT,
+# see the documentation of BOOST_FIND_LIB above.
+BOOST_DEFUN([Python],
+[_BOOST_PYTHON_CONFIG([CPPFLAGS], [includes])
+_BOOST_PYTHON_CONFIG([LDFLAGS],   [ldflags])
+_BOOST_PYTHON_CONFIG([LIBS],      [libs])
+m4_pattern_allow([^BOOST_PYTHON_MODULE$])dnl
+BOOST_FIND_LIB([python], [$1],
+               [boost/python.hpp],
+               [], [BOOST_PYTHON_MODULE(empty) {}])
+CPPFLAGS=$boost_python_save_CPPFLAGS
+LDFLAGS=$boost_python_save_LDFLAGS
+LIBS=$boost_python_save_LIBS
+])# BOOST_PYTHON
+
+
+# BOOST_REF()
+# -----------
+# Look for Boost.Ref
+BOOST_DEFUN([Ref],
+[BOOST_FIND_HEADER([boost/ref.hpp])])
+
+
+# BOOST_REGEX([PREFERRED-RT-OPT])
+# -------------------------------
+# Look for Boost.Regex.  For the documentation of PREFERRED-RT-OPT, see the
+# documentation of BOOST_FIND_LIB above.
+BOOST_DEFUN([Regex],
+[BOOST_FIND_LIB([regex], [$1],
+                [boost/regex.hpp],
+                [boost::regex exp("*"); boost::regex_match("foo", exp);])
+])# BOOST_REGEX
+
+
+# BOOST_SERIALIZATION([PREFERRED-RT-OPT])
+# ---------------------------------------
+# Look for Boost.Serialization.  For the documentation of PREFERRED-RT-OPT, see
+# the documentation of BOOST_FIND_LIB above.
+BOOST_DEFUN([Serialization],
+[BOOST_FIND_LIB([serialization], [$1],
+                [boost/archive/text_oarchive.hpp],
+                [std::ostream* o = 0; // Cheap way to get an ostream...
+                boost::archive::text_oarchive t(*o);])
+])# BOOST_SERIALIZATION
+
+
+# BOOST_SIGNALS([PREFERRED-RT-OPT])
+# ---------------------------------
+# Look for Boost.Signals.  For the documentation of PREFERRED-RT-OPT, see the
+# documentation of BOOST_FIND_LIB above.
+BOOST_DEFUN([Signals],
+[BOOST_FIND_LIB([signals], [$1],
+                [boost/signal.hpp],
+                [boost::signal<void ()> s;])
+])# BOOST_SIGNALS
+
+
+# BOOST_SMART_PTR()
+# -----------------
+# Look for Boost.SmartPtr
+BOOST_DEFUN([Smart_Ptr],
+[BOOST_FIND_HEADER([boost/scoped_ptr.hpp])
+BOOST_FIND_HEADER([boost/shared_ptr.hpp])
+])
+
+
+# BOOST_STATICASSERT()
+# --------------------
+# Look for Boost.StaticAssert
+BOOST_DEFUN([StaticAssert],
+[BOOST_FIND_HEADER([boost/static_assert.hpp])])
+
+
+# BOOST_STRING_ALGO()
+# -------------------
+# Look for Boost.StringAlgo
+BOOST_DEFUN([String_Algo],
+[BOOST_FIND_HEADER([boost/algorithm/string.hpp])
+])
+
+
+# BOOST_SYSTEM([PREFERRED-RT-OPT], [ACTION-IF-NOT-FOUND])
+# -------------------------------------------------------
+# Look for Boost.System.  For the documentation of PREFERRED-RT-OPT, see the
+# documentation of BOOST_FIND_LIB above.  This library was introduced in Boost
+# 1.35.0.
+BOOST_DEFUN([System],
+[BOOST_FIND_LIB([system], [$1],
+                [boost/system/error_code.hpp],
+                [boost::system::error_code e; e.clear();],
+                [], [$2])
+])# BOOST_SYSTEM
+
+
+# BOOST_TEST([PREFERRED-RT-OPT])
+# ------------------------------
+# Look for Boost.Test.  For the documentation of PREFERRED-RT-OPT, see the
+# documentation of BOOST_FIND_LIB above.
+BOOST_DEFUN([Test],
+[m4_pattern_allow([^BOOST_CHECK$])dnl
+BOOST_FIND_LIB([unit_test_framework], [$1],
+               [boost/test/unit_test.hpp], [BOOST_CHECK(2 == 2);],
+               [using boost::unit_test::test_suite;
+               test_suite* init_unit_test_suite(int argc, char ** argv)
+               { return NULL; }])
+])# BOOST_TEST
+
+
+# BOOST_THREADS([PREFERRED-RT-OPT], [ACTION-IF-NOT-FOUND])
+# --------------------------------------------------------
+# Look for Boost.Thread.  For the documentation of PREFERRED-RT-OPT, see the
+# documentation of BOOST_FIND_LIB above.  If ACTION-IF-NOT-FOUND is given,
+# errors are non-fatal; if it's absent, errors are fatal.
+# FIXME: Provide an alias "BOOST_THREAD".
+BOOST_DEFUN([Threads],
+[dnl Having the pthread flag is required at least on GCC3 where
+dnl boost/thread.hpp would complain if we try to compile without
+dnl -pthread on GNU/Linux.
+AC_REQUIRE([_BOOST_PTHREAD_FLAG])dnl
+boost_threads_save_LIBS=$LIBS
+boost_threads_save_LDFLAGS=$LDFLAGS
+boost_threads_save_CPPFLAGS=$CPPFLAGS
+# Link-time dependency from thread to system was added as of 1.49.0.
+if test $boost_major_version -ge 149; then
+BOOST_SYSTEM([$1], [AC_MSG_WARN([[Boost system library (libboost-system) not installed or unusable; this may lead to problems with using threads.  It is recommended that you install your distribution's libboost-system development package (probably named libboost-system###-dev, or boost-system-devel, or something like that).]])])
+fi # end of the Boost.System check.
+m4_pattern_allow([^BOOST_SYSTEM_(LIBS|LDFLAGS)$])dnl
+LIBS="$LIBS $BOOST_SYSTEM_LIBS $boost_cv_pthread_flag"
+LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS"
+# Yes, we *need* to put the -pthread thing in CPPFLAGS because with GCC3,
+# boost/thread.hpp will trigger a #error if -pthread isn't used:
+#   boost/config/requires_threads.hpp:47:5: #error "Compiler threading support
+#   is not turned on. Please set the correct command line options for
+#   threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)"
+CPPFLAGS="$CPPFLAGS $boost_cv_pthread_flag"
+
+# When compiling for the Windows platform, the threads library is named
+# differently.
+case $host_os in
+  (*mingw*)
+    BOOST_FIND_LIB([thread_win32], [$1],
+                   [boost/thread.hpp], [boost::thread t; boost::mutex m;], [], [$2])
+    BOOST_THREAD_LDFLAGS=$BOOST_THREAD_WIN32_LDFLAGS
+    BOOST_THREAD_LDPATH=$BOOST_THREAD_WIN32_LDPATH
+    BOOST_THREAD_LIBS=$BOOST_THREAD_WIN32_LIBS
+  ;;
+  (*)
+    BOOST_FIND_LIB([thread], [$1],
+                   [boost/thread.hpp], [boost::thread t; boost::mutex m;], [], [$2])
+  ;;
+esac
+
+BOOST_THREAD_LIBS="$BOOST_THREAD_LIBS $BOOST_SYSTEM_LIBS $boost_cv_pthread_flag"
+BOOST_THREAD_LDFLAGS="$BOOST_SYSTEM_LDFLAGS"
+BOOST_CPPFLAGS="$BOOST_CPPFLAGS $boost_cv_pthread_flag"
+LIBS=$boost_threads_save_LIBS
+LDFLAGS=$boost_threads_save_LDFLAGS
+CPPFLAGS=$boost_threads_save_CPPFLAGS
+])# BOOST_THREADS
+
+
+# BOOST_TOKENIZER()
+# -----------------
+# Look for Boost.Tokenizer
+BOOST_DEFUN([Tokenizer],
+[BOOST_FIND_HEADER([boost/tokenizer.hpp])])
+
+
+# BOOST_TRIBOOL()
+# ---------------
+# Look for Boost.Tribool
+BOOST_DEFUN([Tribool],
+[BOOST_FIND_HEADER([boost/logic/tribool_fwd.hpp])
+BOOST_FIND_HEADER([boost/logic/tribool.hpp])
+])
+
+
+# BOOST_TUPLE()
+# -------------
+# Look for Boost.Tuple
+BOOST_DEFUN([Tuple],
+[BOOST_FIND_HEADER([boost/tuple/tuple.hpp])])
+
+
+# BOOST_TYPETRAITS()
+# --------------------
+# Look for Boost.TypeTraits
+BOOST_DEFUN([TypeTraits],
+[BOOST_FIND_HEADER([boost/type_traits.hpp])])
+
+
+# BOOST_UTILITY()
+# ---------------
+# Look for Boost.Utility (noncopyable, result_of, base-from-member idiom,
+# etc.)
+BOOST_DEFUN([Utility],
+[BOOST_FIND_HEADER([boost/utility.hpp])])
+
+
+# BOOST_VARIANT()
+# ---------------
+# Look for Boost.Variant.
+BOOST_DEFUN([Variant],
+[BOOST_FIND_HEADER([boost/variant/variant_fwd.hpp])
+BOOST_FIND_HEADER([boost/variant.hpp])])
+
+
+# BOOST_WAVE([PREFERRED-RT-OPT])
+# ------------------------------
+# NOTE: If you intend to use Wave/Spirit with thread support, make sure you
+# call BOOST_THREADS first.
+# Look for Boost.Wave.  For the documentation of PREFERRED-RT-OPT, see the
+# documentation of BOOST_FIND_LIB above.
+BOOST_DEFUN([Wave],
+[AC_REQUIRE([BOOST_FILESYSTEM])dnl
+AC_REQUIRE([BOOST_DATE_TIME])dnl
+boost_wave_save_LIBS=$LIBS
+boost_wave_save_LDFLAGS=$LDFLAGS
+m4_pattern_allow([^BOOST_((FILE)?SYSTEM|DATE_TIME|THREAD)_(LIBS|LDFLAGS)$])dnl
+LIBS="$LIBS $BOOST_SYSTEM_LIBS $BOOST_FILESYSTEM_LIBS $BOOST_DATE_TIME_LIBS \
+$BOOST_THREAD_LIBS"
+LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS $BOOST_FILESYSTEM_LDFLAGS \
+$BOOST_DATE_TIME_LDFLAGS $BOOST_THREAD_LDFLAGS"
+BOOST_FIND_LIB([wave], [$1],
+                [boost/wave.hpp],
+                [boost::wave::token_id id; get_token_name(id);])
+LIBS=$boost_wave_save_LIBS
+LDFLAGS=$boost_wave_save_LDFLAGS
+])# BOOST_WAVE
+
+
+# BOOST_XPRESSIVE()
+# -----------------
+# Look for Boost.Xpressive (new since 1.36.0).
+BOOST_DEFUN([Xpressive],
+[BOOST_FIND_HEADER([boost/xpressive/xpressive.hpp])])
+
+
+# ----------------- #
+# Internal helpers. #
+# ----------------- #
+
+
+# _BOOST_PTHREAD_FLAG()
+# ---------------------
+# Internal helper for BOOST_THREADS.  Based on ACX_PTHREAD:
+# http://autoconf-archive.cryp.to/acx_pthread.html
+AC_DEFUN([_BOOST_PTHREAD_FLAG],
+[AC_REQUIRE([AC_PROG_CXX])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_LANG_PUSH([C++])dnl
+AC_CACHE_CHECK([for the flags needed to use pthreads], [boost_cv_pthread_flag],
+[ boost_cv_pthread_flag=
+  # The ordering *is* (sometimes) important.  Some notes on the
+  # individual items follow:
+  # (none): in case threads are in libc; should be tried before -Kthread and
+  #       other compiler flags to prevent continual compiler warnings
+  # -lpthreads: AIX (must check this before -lpthread)
+  # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
+  # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+  # -llthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+  # -pthread: GNU Linux/GCC (kernel threads), BSD/GCC (userland threads)
+  # -pthreads: Solaris/GCC
+  # -mthreads: MinGW32/GCC, Lynx/GCC
+  # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+  #      doesn't hurt to check since this sometimes defines pthreads too;
+  #      also defines -D_REENTRANT)
+  #      ... -mt is also the pthreads flag for HP/aCC
+  # -lpthread: GNU Linux, etc.
+  # --thread-safe: KAI C++
+  case $host_os in #(
+    *solaris*)
+      # On Solaris (at least, for some versions), libc contains stubbed
+      # (non-functional) versions of the pthreads routines, so link-based
+      # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
+      # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
+      # a function called by this macro, so we could check for that, but
+      # who knows whether they'll stub that too in a future libc.)  So,
+      # we'll just look for -pthreads and -lpthread first:
+      boost_pthread_flags="-pthreads -lpthread -mt -pthread";; #(
+    *)
+      boost_pthread_flags="-lpthreads -Kthread -kthread -llthread -pthread \
+                           -pthreads -mthreads -lpthread --thread-safe -mt";;
+  esac
+  # Generate the test file.
+  AC_LANG_CONFTEST([AC_LANG_PROGRAM([#include <pthread.h>],
+    [pthread_t th; pthread_join(th, 0);
+    pthread_attr_init(0); pthread_cleanup_push(0, 0);
+    pthread_create(0,0,0,0); pthread_cleanup_pop(0);])])
+  for boost_pthread_flag in '' $boost_pthread_flags; do
+    boost_pthread_ok=false
+dnl Re-use the test file already generated.
+    boost_pthreads__save_LIBS=$LIBS
+    LIBS="$LIBS $boost_pthread_flag"
+    AC_LINK_IFELSE([],
+      [if grep ".*$boost_pthread_flag" conftest.err; then
+         echo "This flag seems to have triggered warnings" >&AS_MESSAGE_LOG_FD
+       else
+         boost_pthread_ok=:; boost_cv_pthread_flag=$boost_pthread_flag
+       fi])
+    LIBS=$boost_pthreads__save_LIBS
+    $boost_pthread_ok && break
+  done
+])
+AC_LANG_POP([C++])dnl
+])# _BOOST_PTHREAD_FLAG
+
+
+# _BOOST_gcc_test(MAJOR, MINOR)
+# -----------------------------
+# Internal helper for _BOOST_FIND_COMPILER_TAG.
+m4_define([_BOOST_gcc_test],
+["defined __GNUC__ && __GNUC__ == $1 && __GNUC_MINOR__ == $2 && !defined __ICC @ gcc$1$2"])dnl
+
+
+# _BOOST_FIND_COMPILER_TAG()
+# --------------------------
+# Internal.  When Boost is installed without --layout=system, each library
+# filename will hold a suffix that encodes the compiler used during the
+# build.  The Boost build system seems to call this a `tag'.
+AC_DEFUN([_BOOST_FIND_COMPILER_TAG],
+[AC_REQUIRE([AC_PROG_CXX])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_CACHE_CHECK([for the toolset name used by Boost for $CXX], [boost_cv_lib_tag],
+[boost_cv_lib_tag=unknown
+if test x$boost_cv_inc_path != xno; then
+  AC_LANG_PUSH([C++])dnl
+  # The following tests are mostly inspired by boost/config/auto_link.hpp
+  # The list is sorted to most recent/common to oldest compiler (in order
+  # to increase the likelihood of finding the right compiler with the
+  # least number of compilation attempt).
+  # Beware that some tests are sensible to the order (for instance, we must
+  # look for MinGW before looking for GCC3).
+  # I used one compilation test per compiler with a #error to recognize
+  # each compiler so that it works even when cross-compiling (let me know
+  # if you know a better approach).
+  # Known missing tags (known from Boost's tools/build/v2/tools/common.jam):
+  #   como, edg, kcc, bck, mp, sw, tru, xlc
+  # I'm not sure about my test for `il' (be careful: Intel's ICC pre-defines
+  # the same defines as GCC's).
+  for i in \
+    _BOOST_gcc_test(4, 8) \
+    _BOOST_gcc_test(4, 7) \
+    _BOOST_gcc_test(4, 6) \
+    _BOOST_gcc_test(4, 5) \
+    _BOOST_gcc_test(4, 4) \
+    _BOOST_gcc_test(4, 3) \
+    _BOOST_gcc_test(4, 2) \
+    _BOOST_gcc_test(4, 1) \
+    _BOOST_gcc_test(4, 0) \
+    "defined __GNUC__ && __GNUC__ == 3 && !defined __ICC \
+     && (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \
+         || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw" \
+    _BOOST_gcc_test(3, 4) \
+    _BOOST_gcc_test(3, 3) \
+    "defined _MSC_VER && _MSC_VER >= 1500 @ vc90" \
+    "defined _MSC_VER && _MSC_VER == 1400 @ vc80" \
+    _BOOST_gcc_test(3, 2) \
+    "defined _MSC_VER && _MSC_VER == 1310 @ vc71" \
+    _BOOST_gcc_test(3, 1) \
+    _BOOST_gcc_test(3, 0) \
+    "defined __BORLANDC__ @ bcb" \
+    "defined __ICC && (defined __unix || defined __unix__) @ il" \
+    "defined __ICL @ iw" \
+    "defined _MSC_VER && _MSC_VER == 1300 @ vc7" \
+    _BOOST_gcc_test(2, 95) \
+    "defined __MWERKS__ && __MWERKS__ <= 0x32FF @ cw9" \
+    "defined _MSC_VER && _MSC_VER < 1300 && !defined UNDER_CE @ vc6" \
+    "defined _MSC_VER && _MSC_VER < 1300 && defined UNDER_CE @ evc4" \
+    "defined __MWERKS__ && __MWERKS__ <= 0x31FF @ cw8"
+  do
+    boost_tag_test=`expr "X$i" : 'X\([[^@]]*\) @ '`
+    boost_tag=`expr "X$i" : 'X[[^@]]* @ \(.*\)'`
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#if $boost_tag_test
+/* OK */
+#else
+# error $boost_tag_test
+#endif
+]])], [boost_cv_lib_tag=$boost_tag; break], [])
+  done
+AC_LANG_POP([C++])dnl
+  case $boost_cv_lib_tag in #(
+    # Some newer (>= 1.35?) versions of Boost seem to only use "gcc" as opposed
+    # to "gcc41" for instance.
+    *-gcc | *'-gcc ') :;; #(  Don't re-add -gcc: it's already in there.
+    gcc*)
+      boost_tag_x=
+      case $host_os in #(
+        darwin*)
+          if test $boost_major_version -ge 136; then
+            # The `x' added in r46793 of Boost.
+            boost_tag_x=x
+          fi;;
+      esac
+      # We can specify multiple tags in this variable because it's used by
+      # BOOST_FIND_LIB that does a `for tag in -$boost_cv_lib_tag' ...
+      boost_cv_lib_tag="$boost_tag_x$boost_cv_lib_tag -${boost_tag_x}gcc"
+      ;; #(
+    unknown)
+      AC_MSG_WARN([[could not figure out which toolset name to use for $CXX]])
+      boost_cv_lib_tag=
+      ;;
+  esac
+fi])dnl end of AC_CACHE_CHECK
+])# _BOOST_FIND_COMPILER_TAG
+
+
+# _BOOST_GUESS_WHETHER_TO_USE_MT()
+# --------------------------------
+# Compile a small test to try to guess whether we should favor MT (Multi
+# Thread) flavors of Boost.  Sets boost_guess_use_mt accordingly.
+AC_DEFUN([_BOOST_GUESS_WHETHER_TO_USE_MT],
+[# Check whether we do better use `mt' even though we weren't ask to.
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#if defined _REENTRANT || defined _MT || defined __MT__
+/* use -mt */
+#else
+# error MT not needed
+#endif
+]])], [boost_guess_use_mt=:], [boost_guess_use_mt=false])
+])
+
+# _BOOST_AC_LINK_IFELSE(PROGRAM, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
+# -------------------------------------------------------------------
+# Fork of _AC_LINK_IFELSE that preserves conftest.o across calls.  Fragile,
+# will break when Autoconf changes its internals.  Requires that you manually
+# rm -f conftest.$ac_objext in between to really different tests, otherwise
+# you will try to link a conftest.o left behind by a previous test.
+# Used to aggressively optimize BOOST_FIND_LIB (see the big comment in this
+# macro).
+#
+# Don't use "break" in the actions, as it would short-circuit some code
+# this macro runs after the actions.
+m4_define([_BOOST_AC_LINK_IFELSE],
+[m4_ifvaln([$1], [AC_LANG_CONFTEST([$1])])dnl
+rm -f conftest$ac_exeext
+boost_save_ac_ext=$ac_ext
+boost_use_source=:
+# If we already have a .o, re-use it.  We change $ac_ext so that $ac_link
+# tries to link the existing object file instead of compiling from source.
+test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false &&
+  _AS_ECHO_LOG([re-using the existing conftest.$ac_objext])
+AS_IF([_AC_DO_STDERR($ac_link) && {
+	 test -z "$ac_[]_AC_LANG_ABBREV[]_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_executable_p conftest$ac_exeext
+dnl FIXME: use AS_TEST_X instead when 2.61 is widespread enough.
+       }],
+      [$2],
+      [if $boost_use_source; then
+         _AC_MSG_LOG_CONFTEST
+       fi
+       $3])
+ac_objext=$boost_save_ac_objext
+ac_ext=$boost_save_ac_ext
+dnl Delete also the IPA/IPO (Inter Procedural Analysis/Optimization)
+dnl information created by the PGI compiler (conftest_ipa8_conftest.oo),
+dnl as it would interfere with the next link command.
+rm -f core conftest.err conftest_ipa8_conftest.oo \
+      conftest$ac_exeext m4_ifval([$1], [conftest.$ac_ext])[]dnl
+])# _BOOST_AC_LINK_IFELSE
+
+# Local Variables:
+# mode: autoconf
+# End:
diff --git a/config/build-type b/config/build-type
new file mode 100755
index 0000000..ae4e292
--- /dev/null
+++ b/config/build-type
@@ -0,0 +1,68 @@
+#!/bin/sh
+#
+# build-type
+# Morgan Deters <mdeters at cs.nyu.edu> for CVC4
+#
+# usage: build-type profile [ overrides... ]
+#
+# Returns a build string for the given profile and overrides.
+# For example, "build-type debug noassertions" returns the canonical
+# build string for a debug build with assertions turned off.
+#
+# The default build directory for CVC4 is then (assuming a standard
+# debug build):
+#
+#   builds/`config/config.guess`/`config/build-type debug`
+#
+# This script is used both in CVC4's configure script and in the
+# top-level Makefile when you build another profile than the
+# "current" build (to see if there already was a build of that type).
+#
+# The overrides are as follows:
+#
+#   staticbinary
+#   optimized
+#   proof
+#   debugsymbols
+#   assertions
+#   tracing
+#   muzzle
+#   coverage
+#   profiling
+#
+# Also you can specify "cln" or "gmp".  If "gmp", the build dir
+# contains the string "gmp".  (gmp is considered the default.)
+#
+# Also for glpk and abc.
+#
+
+if [ $# -eq 0 ]; then
+  echo "usage: build-type profile [ overrides... ]" >&2
+  exit
+fi
+
+build_type=$1
+shift
+
+while [ $# -gt 0 ]; do
+  case "$1" in
+    cln) cln=1 ;;
+    gmp) ;;
+    no*) eval `expr "$1" : 'no\(.*\)'`=0 ;;
+    *)   eval $1=1 ;;
+  esac
+  shift
+done
+
+build_type_suffix=
+for arg in cln glpk abc staticbinary optimized proof debugsymbols statistics replay assertions tracing muzzle coverage profiling; do
+  if eval [ -n '"${'$arg'+set}"' ]; then
+    if eval [ '"${'$arg'}"' -eq 0 ]; then
+      build_type_suffix=$build_type_suffix-no$arg
+    else
+      build_type_suffix=$build_type_suffix-$arg
+    fi
+  fi
+done
+
+echo $build_type$build_type_suffix
diff --git a/config/compile b/config/compile
new file mode 100755
index 0000000..a85b723
--- /dev/null
+++ b/config/compile
@@ -0,0 +1,347 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-10-14.11; # UTC
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Written by Tom Tromey <tromey at cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake at gnu.org> or send patches to
+# <automake-patches at gnu.org>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""	$nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+	# lazily determine how to convert abs files
+	case `uname -s` in
+	  MINGW*)
+	    file_conv=mingw
+	    ;;
+	  CYGWIN*)
+	    file_conv=cygwin
+	    ;;
+	  *)
+	    file_conv=wine
+	    ;;
+	esac
+      fi
+      case $file_conv/,$2, in
+	*,$file_conv,*)
+	  ;;
+	mingw/*)
+	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+	  ;;
+	cygwin/*)
+	  file=`cygpath -m "$file" || echo "$file"`
+	  ;;
+	wine/*)
+	  file=`winepath -w "$file" || echo "$file"`
+	  ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+  func_file_conv "$1"
+  if test -z "$lib_path"; then
+    lib_path=$file
+  else
+    lib_path="$lib_path;$file"
+  fi
+  linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+  lib=$1
+  found=no
+  save_IFS=$IFS
+  IFS=';'
+  for dir in $lib_path $LIB
+  do
+    IFS=$save_IFS
+    if $shared && test -f "$dir/$lib.dll.lib"; then
+      found=yes
+      lib=$dir/$lib.dll.lib
+      break
+    fi
+    if test -f "$dir/$lib.lib"; then
+      found=yes
+      lib=$dir/$lib.lib
+      break
+    fi
+    if test -f "$dir/lib$lib.a"; then
+      found=yes
+      lib=$dir/lib$lib.a
+      break
+    fi
+  done
+  IFS=$save_IFS
+
+  if test "$found" != yes; then
+    lib=$lib.lib
+  fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+	-o)
+	  # configure might choose to run compile as 'compile cc -o foo foo.c'.
+	  eat=1
+	  case $2 in
+	    *.o | *.[oO][bB][jJ])
+	      func_file_conv "$2"
+	      set x "$@" -Fo"$file"
+	      shift
+	      ;;
+	    *)
+	      func_file_conv "$2"
+	      set x "$@" -Fe"$file"
+	      shift
+	      ;;
+	  esac
+	  ;;
+	-I)
+	  eat=1
+	  func_file_conv "$2" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-I*)
+	  func_file_conv "${1#-I}" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-l)
+	  eat=1
+	  func_cl_dashl "$2"
+	  set x "$@" "$lib"
+	  shift
+	  ;;
+	-l*)
+	  func_cl_dashl "${1#-l}"
+	  set x "$@" "$lib"
+	  shift
+	  ;;
+	-L)
+	  eat=1
+	  func_cl_dashL "$2"
+	  ;;
+	-L*)
+	  func_cl_dashL "${1#-L}"
+	  ;;
+	-static)
+	  shared=false
+	  ;;
+	-Wl,*)
+	  arg=${1#-Wl,}
+	  save_ifs="$IFS"; IFS=','
+	  for flag in $arg; do
+	    IFS="$save_ifs"
+	    linker_opts="$linker_opts $flag"
+	  done
+	  IFS="$save_ifs"
+	  ;;
+	-Xlinker)
+	  eat=1
+	  linker_opts="$linker_opts $2"
+	  ;;
+	-*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+	  func_file_conv "$1"
+	  set x "$@" -Tp"$file"
+	  shift
+	  ;;
+	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+	  func_file_conv "$1" mingw
+	  set x "$@" "$file"
+	  shift
+	  ;;
+	*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
+case $1 in
+  '')
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <bug-automake at gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+	# configure might choose to run compile as 'compile cc -o foo foo.c'.
+	# So we strip '-o arg' only if arg is an object.
+	eat=1
+	case $2 in
+	  *.o | *.obj)
+	    ofile=$2
+	    ;;
+	  *)
+	    set x "$@" -o "$2"
+	    shift
+	    ;;
+	esac
+	;;
+      *.c)
+	cfile=$1
+	set x "$@" "$1"
+	shift
+	;;
+      *)
+	set x "$@" "$1"
+	shift
+	;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no '-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # '.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/config/config.guess b/config/config.guess
new file mode 100755
index 0000000..1659250
--- /dev/null
+++ b/config/config.guess
@@ -0,0 +1,1441 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright 1992-2015 Free Software Foundation, Inc.
+
+timestamp='2015-08-20'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+#
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
+#
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+#
+# Please send patches to <config-patches at gnu.org>.
+
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright 1992-2015 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+	for c in cc gcc c89 c99 ; do
+	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+	     CC_FOR_BUILD="$c"; break ;
+	  fi ;
+	done ;
+	if test x"$CC_FOR_BUILD" = x ; then
+	  CC_FOR_BUILD=no_compiler_found ;
+	fi
+	;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi at noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+	PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+	# If the system lacks a compiler, then just pick glibc.
+	# We could probably try harder.
+	LIBC=gnu
+
+	eval $set_cc_for_build
+	cat <<-EOF > $dummy.c
+	#include <features.h>
+	#if defined(__UCLIBC__)
+	LIBC=uclibc
+	#elif defined(__dietlibc__)
+	LIBC=dietlibc
+	#else
+	LIBC=gnu
+	#endif
+	EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+	;;
+esac
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+	# NetBSD (nbsd) targets should (where applicable) match one or
+	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+	# switched to ELF, *-*-netbsd* would select the old
+	# object file format.  This provides both forward
+	# compatibility and a consistent mechanism for selecting the
+	# object file format.
+	#
+	# Note: NetBSD doesn't particularly care about the vendor
+	# portion of the name.  We always set it to "unknown".
+	sysctl="sysctl -n hw.machine_arch"
+	UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+	    /sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || \
+	    echo unknown)`
+	case "${UNAME_MACHINE_ARCH}" in
+	    armeb) machine=armeb-unknown ;;
+	    arm*) machine=arm-unknown ;;
+	    sh3el) machine=shl-unknown ;;
+	    sh3eb) machine=sh-unknown ;;
+	    sh5el) machine=sh5le-unknown ;;
+	    earmv*)
+		arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+		endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
+		machine=${arch}${endian}-unknown
+		;;
+	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+	esac
+	# The Operating System including object format, if it has switched
+	# to ELF recently, or will in the future.
+	case "${UNAME_MACHINE_ARCH}" in
+	    arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax)
+		eval $set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep -q __ELF__
+		then
+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+		    # Return netbsd for either.  FIX?
+		    os=netbsd
+		else
+		    os=netbsdelf
+		fi
+		;;
+	    *)
+		os=netbsd
+		;;
+	esac
+	# Determine ABI tags.
+	case "${UNAME_MACHINE_ARCH}" in
+	    earm*)
+		expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+		abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
+		;;
+	esac
+	# The OS release
+	# Debian GNU/NetBSD machines have a different userland, and
+	# thus, need a distinct triplet. However, they do not need
+	# kernel version information, so it can be replaced with a
+	# suitable tag, in the style of linux-gnu.
+	case "${UNAME_VERSION}" in
+	    Debian*)
+		release='-gnu'
+		;;
+	    *)
+		release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
+		;;
+	esac
+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+	# contains redundant information, the shorter form:
+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+	echo "${machine}-${os}${release}${abi}"
+	exit ;;
+    *:Bitrig:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+	exit ;;
+    *:OpenBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    *:ekkoBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+	exit ;;
+    *:SolidBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+	exit ;;
+    macppc:MirBSD:*:*)
+	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    *:MirBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    *:Sortix:*:*)
+	echo ${UNAME_MACHINE}-unknown-sortix
+	exit ;;
+    alpha:OSF1:*:*)
+	case $UNAME_RELEASE in
+	*4.0)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+		;;
+	*5.*)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		;;
+	esac
+	# According to Compaq, /usr/sbin/psrinfo has been available on
+	# OSF/1 and Tru64 systems produced since 1995.  I hope that
+	# covers most systems running today.  This code pipes the CPU
+	# types through head -n 1, so we only detect the type of CPU 0.
+	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+	case "$ALPHA_CPU_TYPE" in
+	    "EV4 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV4.5 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "LCA4 (21066/21068)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV5 (21164)")
+		UNAME_MACHINE="alphaev5" ;;
+	    "EV5.6 (21164A)")
+		UNAME_MACHINE="alphaev56" ;;
+	    "EV5.6 (21164PC)")
+		UNAME_MACHINE="alphapca56" ;;
+	    "EV5.7 (21164PC)")
+		UNAME_MACHINE="alphapca57" ;;
+	    "EV6 (21264)")
+		UNAME_MACHINE="alphaev6" ;;
+	    "EV6.7 (21264A)")
+		UNAME_MACHINE="alphaev67" ;;
+	    "EV6.8CB (21264C)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8AL (21264B)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8CX (21264D)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.9A (21264/EV69A)")
+		UNAME_MACHINE="alphaev69" ;;
+	    "EV7 (21364)")
+		UNAME_MACHINE="alphaev7" ;;
+	    "EV7.9 (21364A)")
+		UNAME_MACHINE="alphaev79" ;;
+	esac
+	# A Pn.n version is a patched version.
+	# A Vn.n version is a released version.
+	# A Tn.n version is a released field test version.
+	# A Xn.n version is an unreleased experimental baselevel.
+	# 1.2 uses "1.2" for uname -r.
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+	exitcode=$?
+	trap '' 0
+	exit $exitcode ;;
+    Alpha\ *:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# Should we change UNAME_MACHINE based on the output of uname instead
+	# of the specific Alpha model?
+	echo alpha-pc-interix
+	exit ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
+	exit ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit ;;
+    *:z/VM:*:*)
+	echo s390-ibm-zvmoe
+	exit ;;
+    *:OS400:*:*)
+	echo powerpc-ibm-os400
+	exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit ;;
+    arm*:riscos:*:*|arm*:RISCOS:*:*)
+	echo arm-unknown-riscos
+	exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+	# akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit ;;
+    DRS?6000:unix:4.0:6*)
+	echo sparc-icl-nx6
+	exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7; exit ;;
+	esac ;;
+    s390x:SunOS:*:*)
+	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+	echo i386-pc-auroraux${UNAME_RELEASE}
+	exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+	eval $set_cc_for_build
+	SUN_ARCH="i386"
+	# If there is a compiler, see if it is configured for 64-bit objects.
+	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+	# This test works for both compilers.
+	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_64BIT_ARCH >/dev/null
+	    then
+		SUN_ARCH="x86_64"
+	    fi
+	fi
+	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+	echo m68k-milan-mint${UNAME_RELEASE}
+	exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+	echo m68k-hades-mint${UNAME_RELEASE}
+	exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+	echo m68k-unknown-mint${UNAME_RELEASE}
+	exit ;;
+    m68k:machten:*:*)
+	echo m68k-apple-machten${UNAME_RELEASE}
+	exit ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c &&
+	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=`$dummy $dummyarg` &&
+	    { echo "$SYSTEM_NAME"; exit; }
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit ;;
+    AViiON:dgux:*:*)
+	# DG/UX returns AViiON for all architectures
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	    else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
+	else
+	    echo i586-dg-dgux${UNAME_RELEASE}
+	fi
+	exit ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit ;;
+    ia64:AIX:*:*)
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		eval $set_cc_for_build
+		sed 's/^		//' << EOF >$dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+		then
+			echo "$SYSTEM_NAME"
+		else
+			echo rs6000-ibm-aix3.2.5
+		fi
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit ;;
+    *:AIX:*:[4567])
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+		IBM_ARCH=rs6000
+	else
+		IBM_ARCH=powerpc
+	fi
+	if [ -x /usr/bin/lslpp ] ; then
+		IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+			   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit ;;
+    9000/[34678]??:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	case "${UNAME_MACHINE}" in
+	    9000/31? )            HP_ARCH=m68000 ;;
+	    9000/[34]?? )         HP_ARCH=m68k ;;
+	    9000/[678][0-9][0-9])
+		if [ -x /usr/bin/getconf ]; then
+		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+		    case "${sc_cpu_version}" in
+		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+		      532)                      # CPU_PA_RISC2_0
+			case "${sc_kernel_bits}" in
+			  32) HP_ARCH="hppa2.0n" ;;
+			  64) HP_ARCH="hppa2.0w" ;;
+			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+			esac ;;
+		    esac
+		fi
+		if [ "${HP_ARCH}" = "" ]; then
+		    eval $set_cc_for_build
+		    sed 's/^		//' << EOF >$dummy.c
+
+		#define _HPUX_SOURCE
+		#include <stdlib.h>
+		#include <unistd.h>
+
+		int main ()
+		{
+		#if defined(_SC_KERNEL_BITS)
+		    long bits = sysconf(_SC_KERNEL_BITS);
+		#endif
+		    long cpu  = sysconf (_SC_CPU_VERSION);
+
+		    switch (cpu)
+			{
+			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+			case CPU_PA_RISC2_0:
+		#if defined(_SC_KERNEL_BITS)
+			    switch (bits)
+				{
+				case 64: puts ("hppa2.0w"); break;
+				case 32: puts ("hppa2.0n"); break;
+				default: puts ("hppa2.0"); break;
+				} break;
+		#else  /* !defined(_SC_KERNEL_BITS) */
+			    puts ("hppa2.0"); break;
+		#endif
+			default: puts ("hppa1.0"); break;
+			}
+		    exit (0);
+		}
+EOF
+		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+		    test -z "$HP_ARCH" && HP_ARCH=hppa
+		fi ;;
+	esac
+	if [ ${HP_ARCH} = "hppa2.0w" ]
+	then
+	    eval $set_cc_for_build
+
+	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+	    # generating 64-bit code.  GNU and HP use different nomenclature:
+	    #
+	    # $ CC_FOR_BUILD=cc ./config.guess
+	    # => hppa2.0w-hp-hpux11.23
+	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+	    # => hppa64-hp-hpux11.23
+
+	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+		grep -q __LP64__
+	    then
+		HP_ARCH="hppa2.0w"
+	    else
+		HP_ARCH="hppa64"
+	    fi
+	fi
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit ;;
+    3050*:HI-UX:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <unistd.h>
+	int
+	main ()
+	{
+	  long cpu = sysconf (_SC_CPU_VERSION);
+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+	     results, however.  */
+	  if (CPU_IS_PA_RISC (cpu))
+	    {
+	      switch (cpu)
+		{
+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+		  default: puts ("hppa-hitachi-hiuxwe2"); break;
+		}
+	    }
+	  else if (CPU_IS_HP_MC68K (cpu))
+	    puts ("m68k-hitachi-hiuxwe2");
+	  else puts ("unknown-hitachi-hiuxwe2");
+	  exit (0);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+		{ echo "$SYSTEM_NAME"; exit; }
+	echo unknown-hitachi-hiuxwe2
+	exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+	exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+	exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+	exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+	exit ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*[A-Z]90:*:*:*)
+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+	      -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    *:UNICOS/mp:*:*)
+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    5000:UNIX_System_V:4.*:*)
+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:FreeBSD:*:*)
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	case ${UNAME_PROCESSOR} in
+	    amd64)
+		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	    *)
+		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	esac
+	exit ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit ;;
+    *:MINGW64*:*)
+	echo ${UNAME_MACHINE}-pc-mingw64
+	exit ;;
+    *:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit ;;
+    *:MSYS*:*)
+	echo ${UNAME_MACHINE}-pc-msys
+	exit ;;
+    i*:windows32*:*)
+	# uname -m includes "-pc" on this system.
+	echo ${UNAME_MACHINE}-mingw32
+	exit ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit ;;
+    *:Interix*:*)
+	case ${UNAME_MACHINE} in
+	    x86)
+		echo i586-pc-interix${UNAME_RELEASE}
+		exit ;;
+	    authenticamd | genuineintel | EM64T)
+		echo x86_64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	    IA64)
+		echo ia64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	esac ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+	echo i${UNAME_MACHINE}-pc-mks
+	exit ;;
+    8664:Windows_NT:*)
+	echo x86_64-pc-mks
+	exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+	# UNAME_MACHINE based on the output of uname instead of i386?
+	echo i586-pc-interix
+	exit ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+	echo x86_64-unknown-cygwin
+	exit ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    *:GNU:*:*)
+	# the GNU system
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit ;;
+    *:GNU/*:*:*)
+	# other systems with GNU libc and userland
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+	exit ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit ;;
+    aarch64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    aarch64_be:Linux:*:*)
+	UNAME_MACHINE=aarch64_be
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+	esac
+	objdump --private-headers /bin/sh | grep -q ld.so.1
+	if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    arc:Linux:*:* | arceb:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    arm*:Linux:*:*)
+	eval $set_cc_for_build
+	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+	    | grep -q __ARM_EABI__
+	then
+	    echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	else
+	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+		| grep -q __ARM_PCS_VFP
+	    then
+		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+	    else
+		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+	    fi
+	fi
+	exit ;;
+    avr32*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    cris:Linux:*:*)
+	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+	exit ;;
+    crisv32:Linux:*:*)
+	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+	exit ;;
+    e2k:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    frv:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    hexagon:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    i*86:Linux:*:*)
+	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+	exit ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    m32r*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    mips:Linux:*:* | mips64:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef ${UNAME_MACHINE}
+	#undef ${UNAME_MACHINE}el
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=${UNAME_MACHINE}el
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=${UNAME_MACHINE}
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+	;;
+    openrisc*:Linux:*:*)
+	echo or1k-unknown-linux-${LIBC}
+	exit ;;
+    or32:Linux:*:* | or1k*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    padre:Linux:*:*)
+	echo sparc-unknown-linux-${LIBC}
+	exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-${LIBC}
+	exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+	  PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+	  *)    echo hppa-unknown-linux-${LIBC} ;;
+	esac
+	exit ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-${LIBC}
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-${LIBC}
+	exit ;;
+    ppc64le:Linux:*:*)
+	echo powerpc64le-unknown-linux-${LIBC}
+	exit ;;
+    ppcle:Linux:*:*)
+	echo powerpcle-unknown-linux-${LIBC}
+	exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+	exit ;;
+    sh64*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    tile*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    vax:Linux:*:*)
+	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+	exit ;;
+    x86_64:Linux:*:*)
+	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+	exit ;;
+    xtensa*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    i*86:DYNIX/ptx:4*:*)
+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+	# earlier versions are messed up and put the nodename in both
+	# sysname and nodename.
+	echo i386-sequent-sysv4
+	exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+	# Unixware is an offshoot of SVR4, but it has its own version
+	# number series starting with 2...
+	# I am not positive that other SVR4 systems won't match this,
+	# I just have to hope.  -- rms.
+	# Use sysv4.2uw... so that sysv4* matches it.
+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	exit ;;
+    i*86:OS/2:*:*)
+	# If we were able to find `uname', then EMX Unix compatibility
+	# is probably installed.
+	echo ${UNAME_MACHINE}-pc-os2-emx
+	exit ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit ;;
+    i*86:syllable:*:*)
+	echo ${UNAME_MACHINE}-pc-syllable
+	exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+	else
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+	fi
+	exit ;;
+    i*86:*:5:[678]*)
+	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	case `/bin/uname -X | grep "^Machine"` in
+	    *486*)	     UNAME_MACHINE=i486 ;;
+	    *Pentium)	     UNAME_MACHINE=i586 ;;
+	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+	esac
+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+	exit ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/dev/null >/dev/null ; then
+		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=i586
+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit ;;
+    pc:*:*:*)
+	# Left here for compatibility:
+	# uname -m prints for DJGPP always 'pc', but it prints nothing about
+	# the processor, so we play safe by assuming i586.
+	# Note: whatever this is, it MUST be the same as what config.sub
+	# prints for the "djgpp" host, or else GDB configury will decide that
+	# this is a cross-build.
+	echo i586-pc-msdosdjgpp
+	exit ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	fi
+	exit ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit ;;
+    M680?0:D-NIX:5.3:*)
+	echo m68k-diab-dnix
+	exit ;;
+    M68*:*:R3V[5678]*:*)
+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+	OS_REL=''
+	test -r /etc/.relid \
+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+	OS_REL='.3'
+	test -r /etc/.relid \
+	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		echo ${UNAME_MACHINE}-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit ;;
+    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+			# says <Richard.M.Bartel at ccMail.Census.GOV>
+	echo i586-unisys-sysv4
+	exit ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes at openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit ;;
+    *:*:*:FTX*)
+	# From seanf at swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit ;;
+    i*86:VOS:*:*)
+	# From Paul.Green at stratus.com.
+	echo ${UNAME_MACHINE}-stratus-vos
+	exit ;;
+    *:VOS:*:*)
+	# From Paul.Green at stratus.com.
+	echo hppa1.1-stratus-vos
+	exit ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+	if [ -d /usr/nec ]; then
+		echo mips-nec-sysv${UNAME_RELEASE}
+	else
+		echo mips-unknown-sysv${UNAME_RELEASE}
+	fi
+	exit ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit ;;
+    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
+	echo i586-pc-haiku
+	exit ;;
+    x86_64:Haiku:*:*)
+	echo x86_64-unknown-haiku
+	exit ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-7:SUPER-UX:*:*)
+	echo sx7-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8:SUPER-UX:*:*)
+	echo sx8-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8R:SUPER-UX:*:*)
+	echo sx8r-nec-superux${UNAME_RELEASE}
+	exit ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Darwin:*:*)
+	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+	eval $set_cc_for_build
+	if test "$UNAME_PROCESSOR" = unknown ; then
+	    UNAME_PROCESSOR=powerpc
+	fi
+	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+	    if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+		    (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		    grep IS_64BIT_ARCH >/dev/null
+		then
+		    case $UNAME_PROCESSOR in
+			i386) UNAME_PROCESSOR=x86_64 ;;
+			powerpc) UNAME_PROCESSOR=powerpc64 ;;
+		    esac
+		fi
+	    fi
+	elif test "$UNAME_PROCESSOR" = i386 ; then
+	    # Avoid executing cc on OS X 10.9, as it ships with a stub
+	    # that puts up a graphical alert prompting to install
+	    # developer tools.  Any system running Mac OS X 10.7 or
+	    # later (Darwin 11 and later) is required to have a 64-bit
+	    # processor. This is not true of the ARM version of Darwin
+	    # that Apple uses in portable devices.
+	    UNAME_PROCESSOR=x86_64
+	fi
+	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+	exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	UNAME_PROCESSOR=`uname -p`
+	if test "$UNAME_PROCESSOR" = "x86"; then
+		UNAME_PROCESSOR=i386
+		UNAME_MACHINE=pc
+	fi
+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+	exit ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit ;;
+    NEO-?:NONSTOP_KERNEL:*:*)
+	echo neo-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSE-*:NONSTOP_KERNEL:*:*)
+	echo nse-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit ;;
+    *:Plan9:*:*)
+	# "uname -m" is not consistent, so use $cputype instead. 386
+	# is converted to i386 for consistency with other x86
+	# operating systems.
+	if test "$cputype" = "386"; then
+	    UNAME_MACHINE=i386
+	else
+	    UNAME_MACHINE="$cputype"
+	fi
+	echo ${UNAME_MACHINE}-unknown-plan9
+	exit ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit ;;
+    SEI:*:*:SEIUX)
+	echo mips-sei-seiux${UNAME_RELEASE}
+	exit ;;
+    *:DragonFly:*:*)
+	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit ;;
+    *:*VMS:*:*)
+	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	case "${UNAME_MACHINE}" in
+	    A*) echo alpha-dec-vms ; exit ;;
+	    I*) echo ia64-dec-vms ; exit ;;
+	    V*) echo vax-dec-vms ; exit ;;
+	esac ;;
+    *:XENIX:*:SysV)
+	echo i386-pc-xenix
+	exit ;;
+    i*86:skyos:*:*)
+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+	exit ;;
+    i*86:rdos:*:*)
+	echo ${UNAME_MACHINE}-pc-rdos
+	exit ;;
+    i*86:AROS:*:*)
+	echo ${UNAME_MACHINE}-pc-aros
+	exit ;;
+    x86_64:VMkernel:*:*)
+	echo ${UNAME_MACHINE}-unknown-esx
+	exit ;;
+esac
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches at gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/config/config.sub b/config/config.sub
new file mode 100755
index 0000000..1acc966
--- /dev/null
+++ b/config/config.sub
@@ -0,0 +1,1813 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright 1992-2015 Free Software Foundation, Inc.
+
+timestamp='2015-08-20'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+
+
+# Please send patches to <config-patches at gnu.org>.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright 1992-2015 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
+  kopensolaris*-gnu* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  android-linux)
+    os=-linux-android
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+	-apple | -axis | -knuth | -cray | -microblaze*)
+		os=
+		basic_machine=$1
+		;;
+	-bluegene*)
+		os=-cnk
+		;;
+	-sim | -cisco | -oki | -wec | -winbond)
+		os=
+		basic_machine=$1
+		;;
+	-scout)
+		;;
+	-wrs)
+		os=-vxworks
+		basic_machine=$1
+		;;
+	-chorusos*)
+		os=-chorusos
+		basic_machine=$1
+		;;
+	-chorusrdb)
+		os=-chorusrdb
+		basic_machine=$1
+		;;
+	-hiux*)
+		os=-hiuxwe2
+		;;
+	-sco6)
+		os=-sco5v6
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5)
+		os=-sco3.2v5
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=-sco3.2v4
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5v6*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=-sco3.2v2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-udk*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=-isc2.2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=clipper-intergraph
+		;;
+	-isc*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*178)
+		os=-lynxos178
+		;;
+	-lynx*5)
+		os=-lynxos5
+		;;
+	-lynx*)
+		os=-lynxos
+		;;
+	-ptx*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=-psos
+		;;
+	-mint | -mint[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	1750a | 580 \
+	| a29k \
+	| aarch64 | aarch64_be \
+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+	| am33_2.0 \
+	| arc | arceb \
+	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+	| avr | avr32 \
+	| ba \
+	| be32 | be64 \
+	| bfin \
+	| c4x | c8051 | clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| e2k | epiphany \
+	| fido | fr30 | frv | ft32 \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| hexagon \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k | iq2000 \
+	| k1om \
+	| le32 | le64 \
+	| lm32 \
+	| m32c | m32r | m32rle | m68000 | m68k | m88k \
+	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64octeon | mips64octeonel \
+	| mips64orion | mips64orionel \
+	| mips64r5900 | mips64r5900el \
+	| mips64vr | mips64vrel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mips64vr5900 | mips64vr5900el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa32r2 | mipsisa32r2el \
+	| mipsisa32r6 | mipsisa32r6el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64r2 | mipsisa64r2el \
+	| mipsisa64r6 | mipsisa64r6el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipsr5900 | mipsr5900el \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| moxie \
+	| mt \
+	| msp430 \
+	| nds32 | nds32le | nds32be \
+	| nios | nios2 | nios2eb | nios2el \
+	| ns16k | ns32k \
+	| open8 | or1k | or1knd | or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle \
+	| pyramid \
+	| riscv32 | riscv64 \
+	| rl78 | rx \
+	| score \
+	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+	| spu \
+	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+	| ubicom32 \
+	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+	| visium \
+	| we32k \
+	| x86 | xc16x | xstormy16 | xtensa \
+	| z8k | z80)
+		basic_machine=$basic_machine-unknown
+		;;
+	c54x)
+		basic_machine=tic54x-unknown
+		;;
+	c55x)
+		basic_machine=tic55x-unknown
+		;;
+	c6x)
+		basic_machine=tic6x-unknown
+		;;
+	leon|leon[3-9])
+		basic_machine=sparc-$basic_machine
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+	ms1)
+		basic_machine=mt-unknown
+		;;
+
+	strongarm | thumb | xscale)
+		basic_machine=arm-unknown
+		;;
+	xgate)
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	xscaleeb)
+		basic_machine=armeb-unknown
+		;;
+
+	xscaleel)
+		basic_machine=armel-unknown
+		;;
+
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	580-* \
+	| a29k-* \
+	| aarch64-* | aarch64_be-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* | avr32-* \
+	| ba-* \
+	| be32-* | be64-* \
+	| bfin-* | bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* \
+	| c8051-* | clipper-* | craynv-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| e2k-* | elxsi-* \
+	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| hexagon-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* | iq2000-* \
+	| k1om-* \
+	| le32-* | le64-* \
+	| lm32-* \
+	| m32c-* | m32r-* | m32rle-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+	| microblaze-* | microblazeel-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64octeon-* | mips64octeonel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64r5900-* | mips64r5900el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mips64vr5900-* | mips64vr5900el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa32r2-* | mipsisa32r2el-* \
+	| mipsisa32r6-* | mipsisa32r6el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64r2-* | mipsisa64r2el-* \
+	| mipsisa64r6-* | mipsisa64r6el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipsr5900-* | mipsr5900el-* \
+	| mipstx39-* | mipstx39el-* \
+	| mmix-* \
+	| mt-* \
+	| msp430-* \
+	| nds32-* | nds32le-* | nds32be-* \
+	| nios-* | nios2-* | nios2eb-* | nios2el-* \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| open8-* \
+	| or1k*-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+	| pyramid-* \
+	| riscv32-* | riscv64-* \
+	| rl78-* | romp-* | rs6000-* | rx-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+	| sparclite-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
+	| tahoe-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tile*-* \
+	| tron-* \
+	| ubicom32-* \
+	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+	| vax-* \
+	| visium-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xc16x-* | xps100-* \
+	| xstormy16-* | xtensa*-* \
+	| ymp-* \
+	| z8k-* | z80-*)
+		;;
+	# Recognize the basic CPU types without company name, with glob match.
+	xtensa*)
+		basic_machine=$basic_machine-unknown
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=i386-unknown
+		os=-bsd
+		;;
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	a29khif)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	abacus)
+		basic_machine=abacus-unknown
+		;;
+	adobe68k)
+		basic_machine=m68010-adobe
+		os=-scout
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amd64)
+		basic_machine=x86_64-pc
+		;;
+	amd64-*)
+		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-unknown
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-unknown
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-unknown
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	apollo68bsd)
+		basic_machine=m68k-apollo
+		os=-bsd
+		;;
+	aros)
+		basic_machine=i386-pc
+		os=-aros
+		;;
+        asmjs)
+		basic_machine=asmjs-unknown
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	blackfin)
+		basic_machine=bfin-unknown
+		os=-linux
+		;;
+	blackfin-*)
+		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	bluegene*)
+		basic_machine=powerpc-ibm
+		os=-cnk
+		;;
+	c54x-*)
+		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c55x-*)
+		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c6x-*)
+		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c90)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+	cegcc)
+		basic_machine=arm-unknown
+		os=-cegcc
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | j90)
+		basic_machine=j90-cray
+		os=-unicos
+		;;
+	craynv)
+		basic_machine=craynv-cray
+		os=-unicosmp
+		;;
+	cr16 | cr16-*)
+		basic_machine=cr16-unknown
+		os=-elf
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	crisv32 | crisv32-* | etraxfs*)
+		basic_machine=crisv32-axis
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	crx)
+		basic_machine=crx-unknown
+		os=-elf
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	decsystem10* | dec10*)
+		basic_machine=pdp10-dec
+		os=-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=pdp10-dec
+		os=-tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	dicos)
+		basic_machine=i686-pc
+		os=-dicos
+		;;
+	djgpp)
+		basic_machine=i586-pc
+		os=-msdosdjgpp
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=m68k-ericsson
+		os=-ose
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	go32)
+		basic_machine=i386-pc
+		os=-go32
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	h8300xray)
+		basic_machine=h8300-hitachi
+		os=-xray
+		;;
+	h8500hms)
+		basic_machine=h8500-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	hppaosf)
+		basic_machine=hppa1.1-hp
+		os=-osf
+		;;
+	hppro)
+		basic_machine=hppa1.1-hp
+		os=-proelf
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		;;
+	i*86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i*86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i*86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i*86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	i386mach)
+		basic_machine=i386-mach
+		os=-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=i386-unknown
+		os=-vsta
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	leon-*|leon[3-9]-*)
+		basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
+		;;
+	m68knommu)
+		basic_machine=m68k-unknown
+		os=-linux
+		;;
+	m68knommu-*)
+		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	microblaze*)
+		basic_machine=microblaze-xilinx
+		;;
+	mingw64)
+		basic_machine=x86_64-pc
+		os=-mingw64
+		;;
+	mingw32)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	mingw32ce)
+		basic_machine=arm-unknown
+		os=-mingw32ce
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	morphos)
+		basic_machine=powerpc-unknown
+		os=-morphos
+		;;
+	moxiebox)
+		basic_machine=moxie-unknown
+		os=-moxiebox
+		;;
+	msdos)
+		basic_machine=i386-pc
+		os=-msdos
+		;;
+	ms1-*)
+		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+		;;
+	msys)
+		basic_machine=i686-pc
+		os=-msys
+		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+	nacl)
+		basic_machine=le32-unknown
+		os=-nacl
+		;;
+	ncr3000)
+		basic_machine=i486-ncr
+		os=-sysv4
+		;;
+	netbsd386)
+		basic_machine=i386-unknown
+		os=-netbsd
+		;;
+	netwinder)
+		basic_machine=armv4l-rebel
+		os=-linux
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=m68k-sony
+		os=-newsos
+		;;
+	news1000)
+		basic_machine=m68030-sony
+		os=-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=mips-sony
+		os=-newsos
+		;;
+	necv70)
+		basic_machine=v70-nec
+		os=-sysv
+		;;
+	next | m*-next )
+		basic_machine=m68k-next
+		case $os in
+		    -nextstep* )
+			;;
+		    -ns2*)
+		      os=-nextstep2
+			;;
+		    *)
+		      os=-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=m68k-harris
+		os=-cxux
+		;;
+	nh[45]000)
+		basic_machine=m88k-harris
+		os=-cxux
+		;;
+	nindy960)
+		basic_machine=i960-intel
+		os=-nindy
+		;;
+	mon960)
+		basic_machine=i960-intel
+		os=-mon960
+		;;
+	nonstopux)
+		basic_machine=mips-compaq
+		os=-nonstopux
+		;;
+	np1)
+		basic_machine=np1-gould
+		;;
+	neo-tandem)
+		basic_machine=neo-tandem
+		;;
+	nse-tandem)
+		basic_machine=nse-tandem
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	openrisc | openrisc-*)
+		basic_machine=or32-unknown
+		;;
+	os400)
+		basic_machine=powerpc-ibm
+		os=-os400
+		;;
+	OSE68000 | ose68000)
+		basic_machine=m68000-ericsson
+		os=-ose
+		;;
+	os68k)
+		basic_machine=m68k-none
+		os=-os68k
+		;;
+	pa-hitachi)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	paragon)
+		basic_machine=i860-intel
+		os=-osf
+		;;
+	parisc)
+		basic_machine=hppa-unknown
+		os=-linux
+		;;
+	parisc-*)
+		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+	pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pc98)
+		basic_machine=i386-pc
+		;;
+	pc98-*)
+		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium | p5 | k5 | k6 | nexgen | viac3)
+		basic_machine=i586-pc
+		;;
+	pentiumpro | p6 | 6x86 | athlon | athlon_*)
+		basic_machine=i686-pc
+		;;
+	pentiumii | pentium2 | pentiumiii | pentium3)
+		basic_machine=i686-pc
+		;;
+	pentium4)
+		basic_machine=i786-pc
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium4-*)
+		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=power-ibm
+		;;
+	ppc | ppcbe)	basic_machine=powerpc-unknown
+		;;
+	ppc-* | ppcbe-*)
+		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle | ppc-le | powerpc-little)
+		basic_machine=powerpcle-unknown
+		;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64)	basic_machine=powerpc64-unknown
+		;;
+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+		basic_machine=powerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
+	rdos | rdos64)
+		basic_machine=x86_64-pc
+		os=-rdos
+		;;
+	rdos32)
+		basic_machine=i386-pc
+		os=-rdos
+		;;
+	rom68k)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	s390 | s390-*)
+		basic_machine=s390-ibm
+		;;
+	s390x | s390x-*)
+		basic_machine=s390x-ibm
+		;;
+	sa29200)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	sb1)
+		basic_machine=mipsisa64sb1-unknown
+		;;
+	sb1el)
+		basic_machine=mipsisa64sb1el-unknown
+		;;
+	sde)
+		basic_machine=mipsisa32-sde
+		os=-elf
+		;;
+	sei)
+		basic_machine=mips-sei
+		os=-seiux
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sh5el)
+		basic_machine=sh5le-unknown
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparclite-wrs | simso-wrs)
+		basic_machine=sparclite-wrs
+		os=-vxworks
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	st2000)
+		basic_machine=m68k-tandem
+		;;
+	stratus)
+		basic_machine=i860-stratus
+		os=-sysv4
+		;;
+	strongarm-* | thumb-*)
+		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	sv1)
+		basic_machine=sv1-cray
+		os=-unicos
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	t3e)
+		basic_machine=alphaev5-cray
+		os=-unicos
+		;;
+	t90)
+		basic_machine=t90-cray
+		os=-unicos
+		;;
+	tile*)
+		basic_machine=$basic_machine-unknown
+		os=-linux-gnu
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	toad1)
+		basic_machine=pdp10-xkl
+		os=-tops20
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	tpf)
+		basic_machine=s390x-ibm
+		os=-tpf
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	v810 | necv810)
+		basic_machine=v810-nec
+		os=-none
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+		basic_machine=f301-fujitsu
+		;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	w65*)
+		basic_machine=w65-wdc
+		os=-none
+		;;
+	w89k-*)
+		basic_machine=hppa1.1-winbond
+		os=-proelf
+		;;
+	xbox)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	xscale-* | xscalee[bl]-*)
+		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+		;;
+	ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
+	z80-*-coff)
+		basic_machine=z80-unknown
+		os=-sim
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		basic_machine=hppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=hppa1.1-oki
+		;;
+	op60c)
+		basic_machine=hppa1.1-oki
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	mmix)
+		basic_machine=mmix-knuth
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=pdp10-unknown
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+		basic_machine=sh-unknown
+		;;
+	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+		basic_machine=sparc-sun
+		;;
+	cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	mac | mpw | mac-mpw)
+		basic_machine=m68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=powerpc-apple
+		;;
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+	# First match some system type aliases
+	# that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-auroraux)
+		os=-auroraux
+		;;
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+	      | -sym* | -kopensolaris* | -plan9* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* | -aros* | -cloudabi* | -sortix* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+	      | -bitrig* | -openbsd* | -solidbsd* \
+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* | -cegcc* \
+	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
+	      | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto-qnx*)
+		;;
+	-nto*)
+		os=`echo $os | sed -e 's|nto|nto-qnx|'`
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux-dietlibc)
+		os=-linux-dietlibc
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+	-os400*)
+		os=-os400
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-syllable*)
+		os=-syllable
+		;;
+	-386bsd)
+		os=-bsd
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-nova*)
+		os=-rtmk-nova
+		;;
+	-ns2 )
+		os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+	-tpf*)
+		os=-tpf
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-ose*)
+		os=-ose
+		;;
+	-es1800*)
+		os=-ose
+		;;
+	-xenix)
+		os=-xenix
+		;;
+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+		os=-mint
+		;;
+	-aros*)
+		os=-aros
+		;;
+	-zvmoe)
+		os=-zvmoe
+		;;
+	-dicos*)
+		os=-dicos
+		;;
+	-nacl*)
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+	score-*)
+		os=-elf
+		;;
+	spu-*)
+		os=-elf
+		;;
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-rebel)
+		os=-linux
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+	c4x-* | tic4x-*)
+		os=-coff
+		;;
+	c8051-*)
+		os=-elf
+		;;
+	hexagon-*)
+		os=-elf
+		;;
+	tic54x-*)
+		os=-coff
+		;;
+	tic55x-*)
+		os=-coff
+		;;
+	tic6x-*)
+		os=-coff
+		;;
+	# This must come before the *-dec entry.
+	pdp10-*)
+		os=-tops20
+		;;
+	pdp11-*)
+		os=-none
+		;;
+	*-dec | vax-*)
+		os=-ultrix4.2
+		;;
+	m68*-apollo)
+		os=-domain
+		;;
+	i386-sun)
+		os=-sunos4.0.2
+		;;
+	m68000-sun)
+		os=-sunos3
+		;;
+	m68*-cisco)
+		os=-aout
+		;;
+	mep-*)
+		os=-elf
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
+	or32-*)
+		os=-coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-haiku)
+		os=-haiku
+		;;
+	*-ibm)
+		os=-aix
+		;;
+	*-knuth)
+		os=-mmixware
+		;;
+	*-wec)
+		os=-proelf
+		;;
+	*-winbond)
+		os=-proelf
+		;;
+	*-oki)
+		os=-proelf
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+	*-gould)
+		os=-sysv
+		;;
+	*-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+	*-sgi)
+		os=-irix
+		;;
+	*-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=-uxpv
+		;;
+	*-rom68k)
+		os=-coff
+		;;
+	*-*bug)
+		os=-coff
+		;;
+	*-apple)
+		os=-macos
+		;;
+	*-atari*)
+		os=-mint
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-cnk*|-aix*)
+				vendor=ibm
+				;;
+			-beos*)
+				vendor=be
+				;;
+			-hpux*)
+				vendor=hp
+				;;
+			-mpeix*)
+				vendor=hp
+				;;
+			-hiux*)
+				vendor=hitachi
+				;;
+			-unos*)
+				vendor=crds
+				;;
+			-dgux*)
+				vendor=dg
+				;;
+			-luna*)
+				vendor=omron
+				;;
+			-genix*)
+				vendor=ns
+				;;
+			-mvs* | -opened*)
+				vendor=ibm
+				;;
+			-os400*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-tpf*)
+				vendor=ibm
+				;;
+			-vxsim* | -vxworks* | -windiss*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+			-hms*)
+				vendor=hitachi
+				;;
+			-mpw* | -macos*)
+				vendor=apple
+				;;
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+				vendor=atari
+				;;
+			-vos*)
+				vendor=stratus
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/config/cryptominisat.m4 b/config/cryptominisat.m4
new file mode 100644
index 0000000..f7d3a15
--- /dev/null
+++ b/config/cryptominisat.m4
@@ -0,0 +1,87 @@
+# CVC4_CHECK_FOR_CRYPTOMINISAT
+# ------------------
+# Look for cryptominisat and link it in, but only if user requested.
+AC_DEFUN([CVC4_CHECK_FOR_CRYPTOMINISAT], [
+AC_MSG_CHECKING([whether user requested cryptominisat support])
+
+have_libcryptominisat=0
+CRYPTOMINISAT_LIBS=
+CRYPTOMINISAT_LDFLAGS=
+     
+have_libcryptominisat=0
+if test "$with_cryptominisat" = no; then
+  AC_MSG_RESULT([no, cryptominisat disabled by user])
+elif test -n "$with_cryptominisat"; then
+  AC_MSG_RESULT([yes, cryptominisat requested by user])
+  AC_ARG_VAR(CRYPTOMINISAT_HOME, [path to top level of cryptominisat source tree])
+  AC_ARG_WITH(
+    [cryptominisat-dir],
+    AS_HELP_STRING(
+      [--with-cryptominisat-dir=PATH],
+      [path to top level of cryptominisat source tree]
+    ),
+    [CRYPTOMINISAT_HOME="$withval"],
+    [ if test -z "$CRYPTOMINISAT_HOME"; then
+        AC_MSG_FAILURE([must give --with-cryptominisat-dir=PATH or define environment variable CRYPTOMINISAT_HOME!])
+      fi
+    ]
+  )
+
+  if ! test -d "$CRYPTOMINISAT_HOME" || ! test -x "$CRYPTOMINISAT_HOME/install/bin/cryptominisat" ; then
+    AC_MSG_FAILURE([either $CRYPTOMINISAT_HOME is not an cryptominisat install tree or it's not yet built])
+  fi
+
+  CPPFLAGS="$CPPFLAGS -I$CRYPTOMINISAT_HOME/install/include"
+  
+  AC_MSG_CHECKING([how to link cryptominisat])
+
+  dnl TODO FIXME:
+  dnl For some reason the CVC4_TRY_CRYPTOMINISAT is not working correctly
+  CVC4_TRY_CRYPTOMINISAT_WITH([])
+  CVC4_TRY_CRYPTOMINISAT_WITH([-lm4ri])
+
+  if test -z "$CRYPTOMINISAT_LIBS"; then
+    AC_MSG_FAILURE([cannot link against libcryptominisat!])
+  else
+    AC_MSG_RESULT([$CRYPTOMINISAT_LIBS])
+    have_libcryptominisat=1
+  fi
+
+  CRYPTOMINISAT_LDFLAGS="-L$CRYPTOMINISAT_HOME/install/lib"
+  CRYPTOMINISAT_LIBS="-lcryptominisat4 -lm4ri"
+
+else
+  AC_MSG_RESULT([no, user didn't request cryptominisat])
+  with_cryptominisat=no
+fi
+
+])# CVC4_CHECK_FOR_CRYPTOMINISAT
+
+# CVC4_TRY_STATIC_CRYPTOMINISAT_WITH(LIBS)
+# ------------------------------
+# Try AC_CHECK_LIB(cryptominisat) with the given linking libraries
+AC_DEFUN([CVC4_TRY_CRYPTOMINISAT_WITH], [
+if test -z "$CRYPTOMINISAT_LIBS"; then
+  AC_LANG_PUSH([C++])
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+
+  LDFLAGS="-L$CRYPTOMINISAT_HOME/install/lib"
+  LIBS="-lcryptominisat4 $1"
+
+
+  AC_LINK_IFELSE(
+    [AC_LANG_PROGRAM([#include <cryptominisat4/cryptominisat.h>],
+      [CMSat::SATSolver test()])], [CRYPTOMINISAT_LIBS="-lcryptominisat4 $1"],
+    [CRYPTOMINISAT_LIBS=])
+
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LIBS="$cvc4_save_LIBS"
+
+  AC_LANG_POP([C++])
+fi
+])# CVC4_TRY_CRYPTOMINISAT_WITH
+
diff --git a/config/cvc4.m4 b/config/cvc4.m4
new file mode 100644
index 0000000..1b0e880
--- /dev/null
+++ b/config/cvc4.m4
@@ -0,0 +1,180 @@
+# CVC4_AC_INIT
+# ------------
+# Do early initialization/diversion of autoconf things for CVC4 build process.
+AC_DEFUN([CVC4_AC_INIT],
+dnl _AS_ME_PREPARE
+[CVC4_REWRITE_ARGS_FOR_BUILD_PROFILE
+])# CVC4_AC_INIT
+
+
+# CVC4_REWRITE_ARGS_FOR_BUILD_PROFILE
+# -----------------------------------
+# Rewrite (e.g.) "./configure debug" to "./configure --with-build=debug"
+AC_DEFUN([CVC4_REWRITE_ARGS_FOR_BUILD_PROFILE],
+[m4_divert_push([PARSE_ARGS])dnl
+
+CVC4_BSD_LICENSED_CODE_ONLY=1
+
+m4_divert_once([HELP_ENABLE], [[
+Licensing and performance options:
+  --bsd                   disable all GPL dependences (default)
+  --enable-gpl            permit GPL dependences, if available
+  --best                  turn on dependences known to give best performance]])dnl
+
+handle_option() {
+  ac_option="$[]1"
+  case $ac_option in
+    --bsd|--disable-gpl|CVC4_BSD_LICENSED_CODE_ONLY=1)
+      if test "$CVC4_LICENSE_OPTION" = gpl; then AC_ERROR([cannot give both --bsd and --enable-gpl]); fi
+      CVC4_LICENSE_OPTION=bsd
+      ac_option="CVC4_BSD_LICENSED_CODE_ONLY=1"
+      eval $ac_option
+      ;;
+    --enable-gpl|--gpl|CVC4_BSD_LICENSED_CODE_ONLY=0)
+      if test "$CVC4_LICENSE_OPTION" = bsd; then AC_ERROR([cannot give both --bsd and --enable-gpl]); fi
+      CVC4_LICENSE_OPTION=gpl
+      ac_option="CVC4_BSD_LICENSED_CODE_ONLY=0"
+      eval $ac_option
+      ;;
+    --best)
+      # set the best configuration
+      handle_option --with-readline
+      handle_option --with-cln
+      handle_option --with-glpk
+      handle_option --with-abc
+      return
+      ;;
+    -enable-proofs|--enable-proofs)
+      ac_option='--enable-proof'
+      ;;
+    -*|*=*)
+      ;;
+    production|production-*|debug|debug-*|competition|competition-*)
+      # regexp `\?' not supported on Mac OS X
+      ac_option_build=`expr "$ac_option" : '\([[^-]]*\)-\{0,1\}'`
+      ac_cvc4_build_profile_set=yes
+      as_me=configure
+      AC_MSG_NOTICE([CVC4: building profile $ac_option_build])
+      for x in optimized proof statistics replay assertions tracing dumping muzzle coverage profiling; do
+        if expr "$ac_option" : '.*-no'$x'$' >/dev/null || expr "$ac_option" : '.*-no'$x'-' >/dev/null; then
+          eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--disable-$x\""'
+        fi
+        if expr "$ac_option" : '.*-'$x'$' >/dev/null || expr "$ac_option" : '.*-'$x'-' >/dev/null; then
+          eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--enable-$x\""'
+        fi
+      done
+      if expr "$ac_option" : '.*-nostaticbinary$' >/dev/null || expr "$ac_option" : '.*-nostaticbinary-' >/dev/null; then
+        eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--disable-static-binary\""'
+      fi
+      if expr "$ac_option" : '.*-staticbinary$' >/dev/null || expr "$ac_option" : '.*-staticbinary-' >/dev/null; then
+        eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--enable-static-binary\""'
+      fi
+      if expr "$ac_option" : '.*-nodebugsymbols$' >/dev/null || expr "$ac_option" : '.*-nodebugsymbols-' >/dev/null; then
+        eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--disable-debug-symbols\""'
+      fi
+      if expr "$ac_option" : '.*-debugsymbols$' >/dev/null || expr "$ac_option" : '.*-debugsymbols-' >/dev/null; then
+        eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--enable-debug-symbols\""'
+      fi
+      if expr "$ac_option" : '.*-noglpk' >/dev/null || expr "$ac_option" : '.*-noglpk-' >/dev/null; then
+        eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--without-glpk\""'
+      fi
+      if expr "$ac_option" : '.*-glpk' >/dev/null || expr "$ac_option" : '.*-glpk-' >/dev/null; then
+        eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--with-glpk\""'
+      fi
+      if expr "$ac_option" : '.*-noabc' >/dev/null || expr "$ac_option" : '.*-noabc-' >/dev/null; then
+        eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--without-abc\""'
+      fi
+      if expr "$ac_option" : '.*-abc' >/dev/null || expr "$ac_option" : '.*-abc-' >/dev/null; then
+        eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--with-abc\""'
+      fi
+      for x in cln gmp; do
+        if expr "$ac_option" : '.*-no'$x'$' >/dev/null || expr "$ac_option" : '.*-no'$x'-' >/dev/null; then
+          eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--without-$x\""'
+        fi
+        if expr "$ac_option" : '.*-'$x'$' >/dev/null || expr "$ac_option" : '.*-'$x'-' >/dev/null; then
+          eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--with-$x\""'
+        fi
+      done
+      ac_option="--with-build=$ac_option_build"
+  esac
+  eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }'\'\$ac_option\'\"
+}
+
+unset ac_cvc4_rewritten_args
+for ac_option
+do
+  if test "$ac_option" = personal; then
+    if test -e personal.conf; then
+      handle_option --enable-personal-make-rules
+      while read arg; do
+        handle_option "$arg"
+      done < personal.conf
+    else
+      AC_MSG_ERROR([personal build profile selected, but cannot find personal.conf])
+    fi
+  else
+    handle_option "$ac_option"
+  fi
+done
+eval set x $ac_cvc4_rewritten_args
+shift
+dnl echo "args are now:" "${@}"
+m4_divert_pop([PARSE_ARGS])dnl
+])# CVC4_REWRITE_ARGS_FOR_BUILD_PROFILE
+
+
+# CVC4_COPY_IF_CHANGED(FROM, TO)
+# ------------------------------
+# Copy file FROM to TO, if they have textual differences.
+AC_DEFUN([CVC4_COPY_IF_CHANGED], [
+if diff -q "$1" "$2" >/dev/null 2>&1; then
+  dnl they are the same
+  :
+else
+  dnl they are different
+  cp "$1" "$2"
+fi
+])# CVC4_COPY_IF_CHANGED
+
+
+# CVC4_CONFIG_FILE_ONLY_IF_CHANGED(FILE)
+# --------------------------------------
+# Run AC_CONFIG_FILES to generate file named in the argument, but if it
+# exists already, only replace it if it would be changed (this preserves
+# the old timestamp if no textual changes are to be made to the file).
+AC_DEFUN([CVC4_CONFIG_FILE_ONLY_IF_CHANGED], [
+AC_CONFIG_FILES([$1.tmp:$1.in],
+                CVC4_COPY_IF_CHANGED([$1.tmp],[$1]))
+])# CVC4_CONFIG_FILE_ONLY_IF_CHANGED
+
+# CVC4_CXX_OPTION(OPTION, VAR)
+# ----------------------------
+# Run $(CXX) $(CPPFLAGS) $(CXXFLAGS) OPTION and see if the compiler
+# likes it.  If so, add OPTION to shellvar VAR.
+AC_DEFUN([CVC4_CXX_OPTION], [
+AC_MSG_CHECKING([whether $CXX supports $1])
+cvc4_save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS $WERROR $1"
+AC_LANG_PUSH([C++])
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main() { return 0; }])],
+                  [AC_MSG_RESULT([yes]); $2='$1'],
+                  [AC_MSG_RESULT([no])])
+AC_LANG_POP([C++])
+CXXFLAGS="$cvc4_save_CXXFLAGS"
+])# CVC4_CXX_OPTION
+
+# CVC4_C_OPTION(OPTION, VAR)
+# --------------------------
+# Run $(CC) $(CPPFLAGS) $(CFLAGS) OPTION and see if the compiler
+# likes it.  If so, add OPTION to shellvar VAR.
+AC_DEFUN([CVC4_C_OPTION], [
+AC_MSG_CHECKING([whether $CC supports $1])
+cvc4_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $C_WERROR $1"
+AC_LANG_PUSH([C])
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main() { return 0; }])],
+                  [AC_MSG_RESULT([yes]); $2='$1'],
+                  [AC_MSG_RESULT([no])])
+AC_LANG_POP([C])
+CFLAGS="$cvc4_save_CFLAGS"
+])# CVC4_C_OPTION
diff --git a/config/depcomp b/config/depcomp
new file mode 100755
index 0000000..fc98710
--- /dev/null
+++ b/config/depcomp
@@ -0,0 +1,791 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2013-05-30.07; # UTC
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva at dcc.unicamp.br>.
+
+case $1 in
+  '')
+    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+    exit 1;
+    ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by 'PROGRAMS ARGS'.
+  object      Object file output by 'PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputting dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake at gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'.  Note that this directory component will
+# be either empty or ending with a '/' character.  This is deliberate.
+set_dir_from ()
+{
+  case $1 in
+    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+      *) dir=;;
+  esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+  echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+  # If the compiler actually managed to produce a dependency file,
+  # post-process it.
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form 'foo.o: dependency.h'.
+    # Do two passes, one to just change these to
+    #   $object: dependency.h
+    # and one to simply output
+    #   dependency.h:
+    # which is needed to avoid the deleted-header problem.
+    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+    } > "$depfile"
+    rm -f "$tmpdepfile"
+  else
+    make_dummy_depfile
+  fi
+}
+
+# A tabulation character.
+tab='	'
+# A newline character.
+nl='
+'
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+  # This is just like dashmstdout with a different argument.
+  dashmflag=-xM
+  depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+  # This is just like msvisualcpp but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvisualcpp
+fi
+
+if test "$depmode" = msvc7msys; then
+  # This is just like msvc7 but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+  gccflag=-qmakedep=gcc,-MF
+  depmode=gcc
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).  Also, it might not be
+##   supported by the other compilers which use the 'gcc' depmode.
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The second -e expression handles DOS-style file names with drive
+  # letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the "deleted header file" problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+## Some versions of gcc put a space before the ':'.  On the theory
+## that the space means something, we add a space to the output as
+## well.  hp depmode also adds that space, but also prefixes the VPATH
+## to the object.  Take care to not repeat it in the output.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like '#:fec' to the end of the
+    # dependency line.
+    tr ' ' "$nl" < "$tmpdepfile" \
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
+      | tr "$nl" ' ' >> "$depfile"
+    echo >> "$depfile"
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' "$nl" < "$tmpdepfile" \
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+      >> "$depfile"
+  else
+    make_dummy_depfile
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+xlc)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts '$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  set_dir_from "$object"
+  set_base_from "$object"
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$base.u
+    tmpdepfile3=$dir.libs/$base.u
+    "$@" -Wc,-M
+  else
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$dir$base.u
+    tmpdepfile3=$dir$base.u
+    "$@" -M
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  aix_post_process_depfile
+  ;;
+
+tcc)
+  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+  # FIXME: That version still under development at the moment of writing.
+  #        Make that this statement remains true also for stable, released
+  #        versions.
+  # It will wrap lines (doesn't matter whether long or short) with a
+  # trailing '\', as in:
+  #
+  #   foo.o : \
+  #    foo.c \
+  #    foo.h \
+  #
+  # It will put a trailing '\' even on the last line, and will use leading
+  # spaces rather than leading tabs (at least since its commit 0394caf7
+  # "Emit spaces for -MD").
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+  # We have to change lines of the first kind to '$object: \'.
+  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+  # And for each line of the second kind, we have to emit a 'dep.h:'
+  # dummy dependency, to avoid the deleted-header problem.
+  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+## The order of this option in the case statement is important, since the
+## shell code in configure will try each of these formats in the order
+## listed in this file.  A plain '-MD' option would be understood by many
+## compilers, so we must ensure this comes after the gcc and icc options.
+pgcc)
+  # Portland's C compiler understands '-MD'.
+  # Will always output deps to 'file.d' where file is the root name of the
+  # source file under compilation, even if file resides in a subdirectory.
+  # The object file name does not affect the name of the '.d' file.
+  # pgcc 10.2 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using '\' :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+  set_dir_from "$object"
+  # Use the source, not the object, to determine the base name, since
+  # that's sadly what pgcc will do too.
+  set_base_from "$source"
+  tmpdepfile=$base.d
+
+  # For projects that build the same source file twice into different object
+  # files, the pgcc approach of using the *source* file root name can cause
+  # problems in parallel builds.  Use a locking strategy to avoid stomping on
+  # the same $tmpdepfile.
+  lockdir=$base.d-lock
+  trap "
+    echo '$0: caught signal, cleaning up...' >&2
+    rmdir '$lockdir'
+    exit 1
+  " 1 2 13 15
+  numtries=100
+  i=$numtries
+  while test $i -gt 0; do
+    # mkdir is a portable test-and-set.
+    if mkdir "$lockdir" 2>/dev/null; then
+      # This process acquired the lock.
+      "$@" -MD
+      stat=$?
+      # Release the lock.
+      rmdir "$lockdir"
+      break
+    else
+      # If the lock is being held by a different process, wait
+      # until the winning process is done or we timeout.
+      while test -d "$lockdir" && test $i -gt 0; do
+        sleep 1
+        i=`expr $i - 1`
+      done
+    fi
+    i=`expr $i - 1`
+  done
+  trap - 1 2 13 15
+  if test $i -le 0; then
+    echo "$0: failed to acquire lock after $numtries attempts" >&2
+    echo "$0: check lockdir '$lockdir'" >&2
+    exit 1
+  fi
+
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  set_dir_from  "$object"
+  set_base_from "$object"
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add 'dependent.h:' lines.
+    sed -ne '2,${
+               s/^ *//
+               s/ \\*$//
+               s/$/:/
+               p
+             }' "$tmpdepfile" >> "$depfile"
+  else
+    make_dummy_depfile
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
+tru64)
+  # The Tru64 compiler uses -MD to generate dependencies as a side
+  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+  # dependencies in 'foo.d' instead, so we check for that too.
+  # Subdirectories are respected.
+  set_dir_from  "$object"
+  set_base_from "$object"
+
+  if test "$libtool" = yes; then
+    # Libtool generates 2 separate objects for the 2 libraries.  These
+    # two compilations output dependencies in $dir.libs/$base.o.d and
+    # in $dir$base.o.d.  We have to check for both files, because
+    # one of the two compilations can be disabled.  We should prefer
+    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+    # automatically cleaned when .libs/ is deleted, while ignoring
+    # the former would cause a distcleancheck panic.
+    tmpdepfile1=$dir$base.o.d          # libtool 1.5
+    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
+    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
+    "$@" -Wc,-MD
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    tmpdepfile3=$dir$base.d
+    "$@" -MD
+  fi
+
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  # Same post-processing that is required for AIX mode.
+  aix_post_process_depfile
+  ;;
+
+msvc7)
+  if test "$libtool" = yes; then
+    showIncludes=-Wc,-showIncludes
+  else
+    showIncludes=-showIncludes
+  fi
+  "$@" $showIncludes > "$tmpdepfile"
+  stat=$?
+  grep -v '^Note: including file: ' "$tmpdepfile"
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The first sed program below extracts the file names and escapes
+  # backslashes for cygpath.  The second sed program outputs the file
+  # name when reading, but also accumulates all include files in the
+  # hold buffer in order to output them again at the end.  This only
+  # works with sed implementations that can handle large buffers.
+  sed < "$tmpdepfile" -n '
+/^Note: including file:  *\(.*\)/ {
+  s//\1/
+  s/\\/\\\\/g
+  p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+  s/.*/'"$tab"'/
+  G
+  p
+}' >> "$depfile"
+  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
+  rm -f "$tmpdepfile"
+  ;;
+
+msvc7msys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove '-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for ':'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
+  "$@" $dashmflag |
+    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this sed invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no eat=no
+  for arg
+  do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    if test $eat = yes; then
+      eat=no
+      continue
+    fi
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -arch)
+      eat=yes ;;
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix=`echo "$object" | sed 's/^.*\././'`
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  # makedepend may prepend the VPATH from the source file name to the object.
+  # No need to regex-escape $object, excess matching of '.' is harmless.
+  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process the last invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed '1,2d' "$tmpdepfile" \
+    | tr ' ' "$nl" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove '-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E \
+    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+    | sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+        set fnord "$@"
+        shift
+        shift
+        ;;
+    *)
+        set fnord "$@" "$arg"
+        shift
+        shift
+        ;;
+    esac
+  done
+  "$@" -E 2>/dev/null |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+  echo "$tab" >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvcmsys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/config/doxygen.am b/config/doxygen.am
new file mode 100644
index 0000000..c5cba66
--- /dev/null
+++ b/config/doxygen.am
@@ -0,0 +1,188 @@
+# Renamed doxygen.am from aminclude.am for inclusion in CVC4
+
+# Copyright (C) 2004 Oren Ben-Kiki
+# This file is distributed under the same terms as the Automake macro files.
+
+# Generate automatic documentation using Doxygen. Goals and variables values
+# are controlled by the various DX_COND_??? conditionals set by autoconf.
+#
+# The provided goals are:
+# doxygen-doc: Generate all doxygen documentation.
+# doxygen-run: Run doxygen, which will generate some of the documentation
+#              (HTML, CHM, CHI, MAN, RTF, XML) but will not do the post
+#              processing required for the rest of it (PS, PDF, and some MAN).
+# doxygen-man: Rename some doxygen generated man pages.
+# doxygen-ps: Generate doxygen PostScript documentation.
+# doxygen-pdf: Generate doxygen PDF documentation.
+#
+# Note that by default these are not integrated into the automake goals. If
+# doxygen is used to generate man pages, you can achieve this integration by
+# setting man3_MANS to the list of man pages generated and then adding the
+# dependency:
+#
+#   $(man3_MANS): doxygen-doc
+#
+# This will cause make to run doxygen and generate all the documentation.
+#
+# The following variable is intended for use in Makefile.am:
+#
+# DX_CLEANFILES = everything to clean.
+#
+# This is usually added to MOSTLYCLEANFILES.
+
+## --------------------------------- ##
+## Format-independent Doxygen rules. ##
+## --------------------------------- ##
+
+if DX_COND_doc
+
+## ------------------------------- ##
+## Rules specific for HTML output. ##
+## ------------------------------- ##
+
+if DX_COND_html
+
+DX_CLEAN_HTML = @DX_DOCDIR@/html
+
+endif DX_COND_html
+
+## ------------------------------ ##
+## Rules specific for CHM output. ##
+## ------------------------------ ##
+
+if DX_COND_chm
+
+DX_CLEAN_CHM = @DX_DOCDIR@/chm
+
+if DX_COND_chi
+
+DX_CLEAN_CHI = @DX_DOCDIR@/@PACKAGE at .chi
+
+endif DX_COND_chi
+
+endif DX_COND_chm
+
+## ------------------------------ ##
+## Rules specific for MAN output. ##
+## ------------------------------ ##
+
+if DX_COND_man
+
+DX_CLEAN_MAN = @DX_DOCDIR@/man
+
+endif DX_COND_man
+
+## ------------------------------ ##
+## Rules specific for RTF output. ##
+## ------------------------------ ##
+
+if DX_COND_rtf
+
+DX_CLEAN_RTF = @DX_DOCDIR@/rtf
+
+endif DX_COND_rtf
+
+## ------------------------------ ##
+## Rules specific for XML output. ##
+## ------------------------------ ##
+
+if DX_COND_xml
+
+DX_CLEAN_XML = @DX_DOCDIR@/xml
+
+endif DX_COND_xml
+
+## ----------------------------- ##
+## Rules specific for PS output. ##
+## ----------------------------- ##
+
+if DX_COND_ps
+
+DX_CLEAN_PS = @DX_DOCDIR@/@PACKAGE at .ps
+
+DX_PS_GOAL = doxygen-ps
+
+doxygen-ps: @DX_DOCDIR@/@PACKAGE at .ps
+
+ at DX_DOCDIR@/@PACKAGE at .ps: @DX_DOCDIR@/@PACKAGE at .tag
+	cd @DX_DOCDIR@/latex; \
+	rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
+	$(DX_LATEX) refman.tex; \
+	$(MAKEINDEX_PATH) refman.idx; \
+	$(DX_LATEX) refman.tex; \
+	countdown=5; \
+	while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
+	                  refman.log > /dev/null 2>&1 \
+	   && test $$countdown -gt 0; do \
+	    $(DX_LATEX) refman.tex; \
+	    countdown=`expr $$countdown - 1`; \
+	done; \
+	$(DX_DVIPS) -o ../@PACKAGE at .ps refman.dvi
+
+endif DX_COND_ps
+
+## ------------------------------ ##
+## Rules specific for PDF output. ##
+## ------------------------------ ##
+
+if DX_COND_pdf
+
+DX_CLEAN_PDF = @DX_DOCDIR@/@PACKAGE at .pdf
+
+DX_PDF_GOAL = doxygen-pdf
+
+doxygen-pdf: @DX_DOCDIR@/@PACKAGE at .pdf
+
+ at DX_DOCDIR@/@PACKAGE at .pdf: @DX_DOCDIR@/@PACKAGE at .tag
+	cd @DX_DOCDIR@/latex; \
+	rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
+	$(DX_PDFLATEX) refman.tex; \
+	$(DX_MAKEINDEX) refman.idx; \
+	$(DX_PDFLATEX) refman.tex; \
+	countdown=5; \
+	while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
+	                  refman.log > /dev/null 2>&1 \
+	   && test $$countdown -gt 0; do \
+	    $(DX_PDFLATEX) refman.tex; \
+	    countdown=`expr $$countdown - 1`; \
+	done; \
+	mv refman.pdf ../@PACKAGE at .pdf
+
+endif DX_COND_pdf
+
+## ------------------------------------------------- ##
+## Rules specific for LaTeX (shared for PS and PDF). ##
+## ------------------------------------------------- ##
+
+if DX_COND_latex
+
+DX_CLEAN_LATEX = @DX_DOCDIR@/latex
+
+endif DX_COND_latex
+
+.PHONY: doxygen-run doxygen-doc $(DX_PS_GOAL) $(DX_PDF_GOAL)
+
+.INTERMEDIATE: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
+
+doxygen-run: @DX_DOCDIR@/@PACKAGE at .tag
+
+doxygen-doc: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
+
+ at DX_DOCDIR@/@PACKAGE at .tag: $(DX_CONFIG) $(pkginclude_HEADERS)
+	rm -rf @DX_DOCDIR@
+	$(DX_ENV) $(DX_DOXYGEN) $(srcdir)/$(DX_CONFIG)
+
+DX_CLEANFILES = \
+    @DX_DOCDIR@/@PACKAGE at .tag \
+    -r \
+    $(DX_CLEAN_HTML) \
+    $(DX_CLEAN_CHM) \
+    $(DX_CLEAN_CHI) \
+    $(DX_CLEAN_MAN) \
+    $(DX_CLEAN_RTF) \
+    $(DX_CLEAN_XML) \
+    $(DX_CLEAN_PS) \
+    $(DX_CLEAN_PDF) \
+    $(DX_CLEAN_LATEX)
+
+endif DX_COND_doc
diff --git a/config/doxygen.cfg b/config/doxygen.cfg
new file mode 100644
index 0000000..b36196e
--- /dev/null
+++ b/config/doxygen.cfg
@@ -0,0 +1,1523 @@
+# Doxyfile 1.6.1
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the
+# iconv built into libc) for the transcoding. See
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING      = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = $(PROJECT)-$(VERSION)
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER         =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = $(DOCDIR)
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
+# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
+# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak,
+# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
+
+OUTPUT_LANGUAGE        = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH        = $(SRCDIR)
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF      = YES
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
+# interpret the first line (until the first dot) of a Qt-style
+# comment as the brief description. If set to NO, the comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF           = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 4
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for
+# Java. For instance, namespaces will be presented as packages, qualified
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources only. Doxygen will then generate output that is more tailored for
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN   = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL   = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it parses.
+# With this tag you can assign which parser to use for a given extension.
+# Doxygen has a built-in mapping, but you can override or extend it using this tag.
+# The format is ext=language, where ext is a file extension, and language is one of
+# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
+# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
+# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
+# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
+
+EXTENSION_MAPPING      =
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT    = YES
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT        = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
+# Doxygen will parse them like normal C++ but will assume all classes use public
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT            = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter
+# and setter methods for a property. Setting this option to YES (the default)
+# will make doxygen to replace the get and set methods by a property in the
+# documentation. This will only work if the methods are indeed getting or
+# setting a simple type. If this is not the case, or you want to show the
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT   = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
+# is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically
+# be useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT   = NO
+
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+# determine which symbols to keep in memory and which to flush to disk.
+# When the cache is full, less often used symbols will be written to disk.
+# For small to medium size projects (<1000 input files) the default value is
+# probably good enough. For larger projects a too small cache size can cause
+# doxygen to be busy swapping symbols to and from disk most of the time
+# causing a significant performance penality.
+# If the system has enough physical memory increasing the cache will improve the
+# performance by keeping more symbols in memory. Note that the value works on
+# a logarithmic scale so increasing the size by one will rougly double the
+# memory usage. The cache size is given by this formula:
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols
+
+SYMBOL_CACHE_SIZE      = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = $(DOXYGEN_EXTRACT_PRIVATE)
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC         = $(DOXYGEN_EXTRACT_STATIC)
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base
+# name of the file that contains the anonymous namespace. By default
+# anonymous namespace are hidden.
+
+EXTRACT_ANON_NSPACES   = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first. If set to NO (the default) the constructors will appear in the respective orders defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
+# hierarchy of group names into alphabetical order. If set to NO (the default)
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES       = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 0
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES       = NO
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES             = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
+# Namespaces page.
+# This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES        = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER    =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
+# doxygen. The layout file controls the global structure of the generated output files
+# in an output format independent way. The create the layout file that represents
+# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
+# file name after the option, if omitted DoxygenLayout.xml will be used as the name
+# of the layout file.
+
+LAYOUT_FILE            =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = YES
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE           =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT                  = $(SRCDIR)/doc/mainpage.md \
+                         $(CVC4_DOXYGEN_INPUT)
+
+# USE_MDFILE_AS_MAINPAGE = $(SRCDIR)/doc/mainpage.md
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
+# also the default input encoding. Doxygen uses libiconv (or the iconv built
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
+# the list of possible encodings.
+
+INPUT_ENCODING         = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
+
+FILE_PATTERNS          =
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE              = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       = */generated/* \
+			 *_template.cpp \
+			 *_template.h
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS        =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH           = $(SRCDIR)
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS       =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH             =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+# If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER           =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis.
+# Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.
+# The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
+# is applied to all files.
+
+FILTER_PATTERNS        =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.
+# Otherwise they will link to the documentation.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = YES
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML          = $(GENERATE_HTML)
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER            =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER            =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded. For this to work a browser that supports
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS  = NO
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files
+# will be generated that can be used as input for Apple's Xcode 3
+# integrated development environment, introduced with OSX 10.5 (Leopard).
+# To create a documentation set, doxygen will generate a Makefile in the
+# HTML output directory. Running make will produce the docset in that
+# directory and running "make install" will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
+# it at startup.
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
+
+GENERATE_DOCSET        = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
+# feed. A documentation feed provides an umbrella under which multiple
+# documentation sets from a single provider (such as a company or product suite)
+# can be grouped.
+
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
+# should uniquely identify the documentation set bundle. This should be a
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = $(GENERATE_HTMLHELP)
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE               = ../$(PROJECT).chm
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = $(HHC_PATH)
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = $(GENERATE_CHI)
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING     =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = YES
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
+# are set, an additional index file will be generated that can be used as input for
+# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
+# HTML documentation.
+
+GENERATE_QHP           = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
+# be used to specify the file name of the resulting .qch file.
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE               =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+QHP_NAMESPACE          =
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER     = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
+# For more information please see
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME   =
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS  =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
+# filter section matches.
+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS  =
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
+# be used to specify the location of Qt's qhelpgenerator.
+# If non-empty doxygen will try to run qhelpgenerator on the generated
+# .qhp file.
+
+QHG_LOCATION           =
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to YES, a side panel will be generated
+# containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
+# Windows users are probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = YES
+
+# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
+# and Class Hierarchy pages using a tree view instead of an ordered list.
+
+USE_INLINE_TREES       = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+# Use this tag to change the font size of Latex formulas included
+# as images in the HTML documentation. The default is 10. Note that
+# when you change the font size after a successful doxygen run you need
+# to manually remove any form_*.png images from the HTML output directory
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE       = 10
+
+# When the SEARCHENGINE tag is enable doxygen will generate a search box for the HTML output. The underlying search engine uses javascript
+# and DHTML and should work on any modern browser. Note that when using HTML help (GENERATE_HTMLHELP) or Qt help (GENERATE_QHP)
+# there is already a search function so this one should typically
+# be disabled.
+
+SEARCHENGINE           = YES
+SERVER_BASED_SEARCH    = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX         = $(GENERATE_LATEX)
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         =
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME     =
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX          = YES
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = $(PAPER_SIZE)
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = $(GENERATE_PDF)
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = YES
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+# If LATEX_SOURCE_CODE is set to YES then doxygen will include source code with syntax highlighting in the LaTeX output. Note that which sources are shown also depends on other settings such as SOURCE_BROWSER.
+
+LATEX_SOURCE_CODE      = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF           = $(GENERATE_RTF)
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF            = YES
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN           = $(GENERATE_MAN)
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML           = $(GENERATE_XML)
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA             =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD                =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader.
+# This is useful
+# if you want to understand what is going on.
+# On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = YES
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF     = YES
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH           = . $(SRCDIR)/src $(SRCDIR)/src/include
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS  =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED             = _DOXYGEN \
+			 "CVC4_THREADLOCAL(x)=x" \
+			 "CVC4_PUBLIC=" \
+			 "CVC4_THERADLOCAL_PUBLIC(x)=x"
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+#
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+#
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = $(DOCDIR)/$(PROJECT).tag
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/false
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
+# powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH            =
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = $(HAVE_DOT)
+
+# By default doxygen will write a font called FreeSans.ttf to the output
+# directory and reference it in all dot files that doxygen generates. This
+# font does not include all possible unicode characters however, so when you need
+# these (or just want a differently looking font) you can specify the font name
+# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
+# which can be done by putting it in a standard location or by setting the
+# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
+# containing the font.
+
+DOT_FONTNAME           = FreeSans
+
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
+# The default size is 10pt.
+
+DOT_FONTSIZE           = 10
+
+# By default doxygen will tell dot to use the output directory to look for the
+# FreeSans.ttf font (which doxygen will put there itself). If you specify a
+# different font using DOT_FONTNAME you can set the path where dot
+# can find it using this tag.
+
+DOT_FONTPATH           =
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then
+# doxygen will generate a call dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable call graphs
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
+# doxygen will generate a caller dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable caller
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH           = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               = $(DOT_PATH)
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS           =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
+# nodes that will be shown in the graph. If the number of nodes in a graph
+# becomes larger than this value, doxygen will truncate the graph, which is
+# visualized by representing a node as a red box. Note that doxygen if the
+# number of direct children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES    = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not
+# seem to support this out of the box. Warning: Depending on the platform used,
+# enabling this option may lead to badly anti-aliased labels on the edges of
+# a graph (i.e. they become hard to read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = YES
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP            = YES
diff --git a/config/gcc_version.m4 b/config/gcc_version.m4
new file mode 100644
index 0000000..acd0510
--- /dev/null
+++ b/config/gcc_version.m4
@@ -0,0 +1,7 @@
+# GCC version 4.5.1 builds Minisat incorrectly with -O2
+# and that gives incorrect answers!  Warn the user!
+AC_DEFUN([CVC4_GCC_VERSION], [
+  if expr "$($CC -dumpversion)" : '4\.5\.1' &>/dev/null; then
+    CVC4_INTEGRITY_WARNING="GCC 4.5.1's optimizer is known to make errors building Minisat (and by extension CVC4)"
+  fi
+])# CVC4_GCC_VERSION
diff --git a/config/glpk.m4 b/config/glpk.m4
new file mode 100644
index 0000000..8d16fce
--- /dev/null
+++ b/config/glpk.m4
@@ -0,0 +1,157 @@
+# CVC4_CHECK_FOR_GLPK
+# -------------------
+# Look for glpk and link it in, but only if user requested.
+AC_DEFUN([CVC4_CHECK_FOR_GLPK], [
+AC_MSG_CHECKING([whether user requested glpk support])
+LIBGLPK=
+have_libglpk=0
+GLPK_LIBS=
+GLPK_LDFLAGS=
+if test "$with_glpk" = no; then
+  AC_MSG_RESULT([no, glpk disabled by user])
+elif test -n "$with_glpk"; then
+  AC_MSG_RESULT([yes, glpk requested by user])
+
+  # Get the location of all the GLPK stuff
+  AC_ARG_VAR(GLPK_HOME, [path to top level of glpk installation])
+  AC_ARG_WITH(
+    [glpk-dir],
+    AS_HELP_STRING(
+      [--with-glpk-dir=PATH],
+      [path to top level of glpk installation]
+    ),
+    [GLPK_HOME="$withval"],
+    [ if test -z "$GLPK_HOME"; then
+        AC_MSG_FAILURE([must give --with-glpk-dir=PATH or define environment variable GLPK_HOME!])
+      fi
+    ]
+  )
+
+  if test -n "$GLPK_HOME"; then
+    CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-I$GLPK_HOME/include"
+    GLPK_LDFLAGS="-L$GLPK_HOME/lib"
+  fi
+
+  dnl Try a bunch of combinations until something works :-/
+  GLPK_LIBS=
+  AC_LANG_PUSH([C++])
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  AC_CHECK_HEADER([glpk.h], [], [AC_MSG_FAILURE([cannot find glpk.h, the GLPK header!])])
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  AC_LANG_POP([C++])
+
+  AC_MSG_CHECKING([how to link glpk])
+  CVC4_TRY_GLPK_WITH([])
+  CVC4_TRY_GLPK_WITH([-lgmp])
+  CVC4_TRY_GLPK_WITH([-lz])
+  CVC4_TRY_GLPK_WITH([-ldl])
+  CVC4_TRY_GLPK_WITH([-lltdl])
+  CVC4_TRY_GLPK_WITH([-lltdl -ldl])
+  CVC4_TRY_GLPK_WITH([-lz -ldl])
+  CVC4_TRY_GLPK_WITH([-lz -lltdl])
+  CVC4_TRY_GLPK_WITH([-lz -lltdl -ldl])
+  CVC4_TRY_GLPK_WITH([-lgmp -lz])
+  CVC4_TRY_GLPK_WITH([-lgmp -ldl])
+  CVC4_TRY_GLPK_WITH([-lgmp -lltdl])
+  CVC4_TRY_GLPK_WITH([-lgmp -lltdl -ldl])
+  CVC4_TRY_GLPK_WITH([-lgmp -lz -ldl])
+  CVC4_TRY_GLPK_WITH([-lgmp -lz -lltdl])
+  CVC4_TRY_GLPK_WITH([-lgmp -lz -lltdl -ldl])
+  if test -z "$GLPK_LIBS"; then
+    AC_MSG_FAILURE([cannot link against libglpk! (perhaps you have not switched to glpk-cut-log? see /INSTALL)])
+  else
+    AC_MSG_RESULT([$GLPK_LIBS])
+    # make sure it works in static builds, too
+    if test "$enable_static_binary" = yes; then
+      GLPK_LIBS=
+      AC_MSG_CHECKING([whether statically-linked glpk is functional])
+      CVC4_TRY_STATIC_GLPK_WITH([])
+      CVC4_TRY_STATIC_GLPK_WITH([-lgmp])
+      CVC4_TRY_STATIC_GLPK_WITH([-lz])
+      CVC4_TRY_STATIC_GLPK_WITH([-ldl])
+      CVC4_TRY_STATIC_GLPK_WITH([-lltdl])
+      CVC4_TRY_STATIC_GLPK_WITH([-lltdl -ldl])
+      CVC4_TRY_STATIC_GLPK_WITH([-lz -ldl])
+      CVC4_TRY_STATIC_GLPK_WITH([-lz -lltdl])
+      CVC4_TRY_STATIC_GLPK_WITH([-lz -lltdl -ldl])
+      CVC4_TRY_STATIC_GLPK_WITH([-lgmp -lz])
+      CVC4_TRY_STATIC_GLPK_WITH([-lgmp -ldl])
+      CVC4_TRY_STATIC_GLPK_WITH([-lgmp -lltdl])
+      CVC4_TRY_STATIC_GLPK_WITH([-lgmp -lltdl -ldl])
+      CVC4_TRY_STATIC_GLPK_WITH([-lgmp -lz -ldl])
+      CVC4_TRY_STATIC_GLPK_WITH([-lgmp -lz -lltdl])
+      CVC4_TRY_STATIC_GLPK_WITH([-lgmp -lz -lltdl -ldl])
+      if test -n "$GLPK_LIBS"; then
+        AC_MSG_RESULT([yes, it works])
+        with_glpk=yes
+      else
+        AC_MSG_RESULT([no])
+        AC_MSG_FAILURE([glpk installation appears incompatible with static-binary])
+      fi
+    else
+      with_glpk=yes
+    fi
+  fi
+  if test "$with_glpk" = yes; then
+    have_libglpk=1
+  else
+    with_glpk=no
+    have_libreadline=0
+    GLPK_LIBS=
+  fi
+else
+  AC_MSG_RESULT([no, user didn't request glpk])
+  with_glpk=no
+fi
+])# CVC4_CHECK_FOR_GLPK
+
+# CVC4_TRY_GLPK_WITH(LIBS)
+# ------------------------
+# Try AC_CHECK_LIB(glpk) with the given linking libraries
+AC_DEFUN([CVC4_TRY_GLPK_WITH], [
+if test -z "$GLPK_LIBS"; then
+  AC_LANG_PUSH([C++])
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="$GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk $1"
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <glpk.h>],
+                                  [int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)])],
+    [GLPK_LIBS="-lglpk $1"],
+    [])
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  AC_LANG_POP([C++])
+fi
+])# CVC4_TRY_GLPK_WITH
+
+# CVC4_TRY_STATIC_GLPK_WITH(LIBS)
+# -------------------------------
+# Try AC_CHECK_LIB(glpk) with the given linking libraries
+AC_DEFUN([CVC4_TRY_STATIC_GLPK_WITH], [
+if test -z "$GLPK_LIBS"; then
+  AC_LANG_PUSH([C++])
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="-static $GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk-static $1"
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <glpk.h>],
+                                  [int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)])],
+    [GLPK_LIBS="-lglpk-static $1"],
+    [ LIBS="-lglpk $1"
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <glpk.h>],
+                                      [int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)])],
+
+        [GLPK_LIBS="-lglpk $1"]) ])
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  AC_LANG_POP([C++])
+fi
+])# CVC4_TRY_STATIC_GLPK_WITH
diff --git a/config/install-sh b/config/install-sh
new file mode 100755
index 0000000..59990a1
--- /dev/null
+++ b/config/install-sh
@@ -0,0 +1,508 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2014-09-12.12; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# 'make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+tab='	'
+nl='
+'
+IFS=" $tab$nl"
+
+# Set DOITPROG to "echo" to test this script.
+
+doit=${DOITPROG-}
+doit_exec=${doit:-exec}
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+is_target_a_directory=possibly
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+     --help     display this help and exit.
+     --version  display version info and exit.
+
+  -c            (ignored)
+  -C            install only if different (preserve the last data modification time)
+  -d            create directories instead of installing files.
+  -g GROUP      $chgrpprog installed files to GROUP.
+  -m MODE       $chmodprog installed files to MODE.
+  -o USER       $chownprog installed files to USER.
+  -s            $stripprog installed files.
+  -t DIRECTORY  install into DIRECTORY.
+  -T            report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+  RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+  case $1 in
+    -c) ;;
+
+    -C) copy_on_change=true;;
+
+    -d) dir_arg=true;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+        shift;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) mode=$2
+        case $mode in
+          *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
+            echo "$0: invalid mode: $mode" >&2
+            exit 1;;
+        esac
+        shift;;
+
+    -o) chowncmd="$chownprog $2"
+        shift;;
+
+    -s) stripcmd=$stripprog;;
+
+    -t)
+        is_target_a_directory=always
+        dst_arg=$2
+        # Protect names problematic for 'test' and other utilities.
+        case $dst_arg in
+          -* | [=\(\)!]) dst_arg=./$dst_arg;;
+        esac
+        shift;;
+
+    -T) is_target_a_directory=never;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    --) shift
+        break;;
+
+    -*) echo "$0: invalid option: $1" >&2
+        exit 1;;
+
+    *)  break;;
+  esac
+  shift
+done
+
+# We allow the use of options -d and -T together, by making -d
+# take the precedence; this is for compatibility with GNU install.
+
+if test -n "$dir_arg"; then
+  if test -n "$dst_arg"; then
+    echo "$0: target directory not allowed when installing a directory." >&2
+    exit 1
+  fi
+fi
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+  # When -d is used, all remaining arguments are directories to create.
+  # When -t is used, the destination is already specified.
+  # Otherwise, the last argument is the destination.  Remove it from $@.
+  for arg
+  do
+    if test -n "$dst_arg"; then
+      # $@ is not empty: it contains at least $arg.
+      set fnord "$@" "$dst_arg"
+      shift # fnord
+    fi
+    shift # arg
+    dst_arg=$arg
+    # Protect names problematic for 'test' and other utilities.
+    case $dst_arg in
+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
+    esac
+  done
+fi
+
+if test $# -eq 0; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call 'install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
+
+if test -z "$dir_arg"; then
+  if test $# -gt 1 || test "$is_target_a_directory" = always; then
+    if test ! -d "$dst_arg"; then
+      echo "$0: $dst_arg: Is not a directory." >&2
+      exit 1
+    fi
+  fi
+fi
+
+if test -z "$dir_arg"; then
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
+
+  # Set umask so as not to create temps with too-generous modes.
+  # However, 'strip' requires both read and write access to temps.
+  case $mode in
+    # Optimize common cases.
+    *644) cp_umask=133;;
+    *755) cp_umask=22;;
+
+    *[0-7])
+      if test -z "$stripcmd"; then
+        u_plus_rw=
+      else
+        u_plus_rw='% 200'
+      fi
+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+    *)
+      if test -z "$stripcmd"; then
+        u_plus_rw=
+      else
+        u_plus_rw=,u+rw
+      fi
+      cp_umask=$mode$u_plus_rw;;
+  esac
+fi
+
+for src
+do
+  # Protect names problematic for 'test' and other utilities.
+  case $src in
+    -* | [=\(\)!]) src=./$src;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    dstdir=$dst
+    test -d "$dstdir"
+    dstdir_status=$?
+  else
+
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dst_arg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+    dst=$dst_arg
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test "$is_target_a_directory" = never; then
+        echo "$0: $dst_arg: Is a directory" >&2
+        exit 1
+      fi
+      dstdir=$dst
+      dst=$dstdir/`basename "$src"`
+      dstdir_status=0
+    else
+      dstdir=`dirname "$dst"`
+      test -d "$dstdir"
+      dstdir_status=$?
+    fi
+  fi
+
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+        # Create intermediate dirs using mode 755 as modified by the umask.
+        # This is like FreeBSD 'install' as of 1997-10-28.
+        umask=`umask`
+        case $stripcmd.$umask in
+          # Optimize common cases.
+          *[2367][2367]) mkdir_umask=$umask;;
+          .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+          *[0-7])
+            mkdir_umask=`expr $umask + 22 \
+              - $umask % 100 % 40 + $umask % 20 \
+              - $umask % 10 % 4 + $umask % 2
+            `;;
+          *) mkdir_umask=$umask,go-w;;
+        esac
+
+        # With -d, create the new directory with the user-specified mode.
+        # Otherwise, rely on $mkdir_umask.
+        if test -n "$dir_arg"; then
+          mkdir_mode=-m$mode
+        else
+          mkdir_mode=
+        fi
+
+        posix_mkdir=false
+        case $umask in
+          *[123567][0-7][0-7])
+            # POSIX mkdir -p sets u+wx bits regardless of umask, which
+            # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+            ;;
+          *)
+            # $RANDOM is not portable (e.g. dash);  use it when possible to
+            # lower collision chance
+            tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+            trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+            # As "mkdir -p" follows symlinks and we work in /tmp possibly;  so
+            # create the $tmpdir first (and fail if unsuccessful) to make sure
+            # that nobody tries to guess the $tmpdir name.
+            if (umask $mkdir_umask &&
+                $mkdirprog $mkdir_mode "$tmpdir" &&
+                exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
+            then
+              if test -z "$dir_arg" || {
+                   # Check for POSIX incompatibilities with -m.
+                   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+                   # other-writable bit of parent directory when it shouldn't.
+                   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+                   test_tmpdir="$tmpdir/a"
+                   ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
+                   case $ls_ld_tmpdir in
+                     d????-?r-*) different_mode=700;;
+                     d????-?--*) different_mode=755;;
+                     *) false;;
+                   esac &&
+                   $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
+                     ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
+                     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+                   }
+                 }
+              then posix_mkdir=:
+              fi
+              rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
+            else
+              # Remove any dirs left behind by ancient mkdir implementations.
+              rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
+            fi
+            trap '' 0;;
+        esac;;
+    esac
+
+    if
+      $posix_mkdir && (
+        umask $mkdir_umask &&
+        $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
+
+      # The umask is ridiculous, or mkdir does not conform to POSIX,
+      # or it failed possibly due to a race condition.  Create the
+      # directory the slow way, step by step, checking for races as we go.
+
+      case $dstdir in
+        /*) prefix='/';;
+        [-=\(\)!]*) prefix='./';;
+        *)  prefix='';;
+      esac
+
+      oIFS=$IFS
+      IFS=/
+      set -f
+      set fnord $dstdir
+      shift
+      set +f
+      IFS=$oIFS
+
+      prefixes=
+
+      for d
+      do
+        test X"$d" = X && continue
+
+        prefix=$prefix$d
+        if test -d "$prefix"; then
+          prefixes=
+        else
+          if $posix_mkdir; then
+            (umask=$mkdir_umask &&
+             $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+            # Don't fail if two instances are running concurrently.
+            test -d "$prefix" || exit 1
+          else
+            case $prefix in
+              *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+              *) qprefix=$prefix;;
+            esac
+            prefixes="$prefixes '$qprefix'"
+          fi
+        fi
+        prefix=$prefix/
+      done
+
+      if test -n "$prefixes"; then
+        # Don't fail if two instances are running concurrently.
+        (umask $mkdir_umask &&
+         eval "\$doit_exec \$mkdirprog $prefixes") ||
+          test -d "$dstdir" || exit 1
+        obsolete_mkdir_used=true
+      fi
+    fi
+  fi
+
+  if test -n "$dir_arg"; then
+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+  else
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+    # Copy the file name to the temp name.
+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+    # and set any options; do chmod last to preserve setuid bits.
+    #
+    # If any of these fail, we abort the whole thing.  If we want to
+    # ignore errors from any of these, just make sure not to ignore
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+    # If -C, don't bother to copy if it wouldn't change the file.
+    if $copy_on_change &&
+       old=`LC_ALL=C ls -dlL "$dst"     2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp"  2>/dev/null` &&
+       set -f &&
+       set X $old && old=:$2:$4:$5:$6 &&
+       set X $new && new=:$2:$4:$5:$6 &&
+       set +f &&
+       test "$old" = "$new" &&
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+    then
+      rm -f "$dsttmp"
+    else
+      # Rename the file to the real destination.
+      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+      # The rename failed, perhaps because mv can't rename something else
+      # to itself, or perhaps because mv is so ancient that it does not
+      # support -f.
+      {
+        # Now remove or move aside any old file at destination location.
+        # We try this two ways since rm can't unlink itself on some
+        # systems and the destination file might be busy for other
+        # reasons.  In this case, the final cleanup might fail but the new
+        # file should still install successfully.
+        {
+          test ! -f "$dst" ||
+          $doit $rmcmd -f "$dst" 2>/dev/null ||
+          { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+            { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+          } ||
+          { echo "$0: cannot unlink or rename $dst" >&2
+            (exit 1); exit 1
+          }
+        } &&
+
+        # Now rename the file to the real destination.
+        $doit $mvcmd "$dsttmp" "$dst"
+      }
+    fi || exit 1
+
+    trap '' 0
+  fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/config/is_sorted.m4 b/config/is_sorted.m4
new file mode 100644
index 0000000..52b062d
--- /dev/null
+++ b/config/is_sorted.m4
@@ -0,0 +1,20 @@
+# CHECK_FOR_IS_SORTED
+# -------------------
+# Look for is_sorted in std:: and __gnu_cxx:: and define
+# some things to make it easy to find later.
+AC_DEFUN([CHECK_FOR_IS_SORTED], [
+AC_MSG_CHECKING([where we can find is_sorted])
+AC_LANG_PUSH([C++])
+is_sorted_result=
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <algorithm>],
+                                   [std::is_sorted((int*)0L, (int*)0L);])],
+  [is_sorted_result=std],
+  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <ext/algorithm>],
+                                      [__gnu_cxx::is_sorted((int*)0L, (int*)0L);])],
+    [is_sorted_result=__gnu_cxx],
+    [AC_MSG_FAILURE([cannot find std::is_sorted() or __gnu_cxx::is_sorted()])])])
+AC_LANG_POP([C++])
+AC_MSG_RESULT($is_sorted_result)
+if test "$is_sorted_result" = __gnu_cxx; then is_sorted_result=1; else is_sorted_result=0; fi
+AC_DEFINE_UNQUOTED([IS_SORTED_IN_GNUCXX_NAMESPACE], $is_sorted_result, [Define to 1 if __gnu_cxx::is_sorted() exists])
+])# CHECK_FOR_IS_SORTED
diff --git a/config/libtool.m4 b/config/libtool.m4
new file mode 100644
index 0000000..10ab284
--- /dev/null
+++ b/config/libtool.m4
@@ -0,0 +1,8388 @@
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+#   Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+m4_define([_LT_COPYING], [dnl
+# Copyright (C) 2014 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of of the License, or
+# (at your option) any later version.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program or library that is built
+# using GNU Libtool, you may include this file under the  same
+# distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+])
+
+# serial 58 LT_INIT
+
+
+# LT_PREREQ(VERSION)
+# ------------------
+# Complain and exit if this libtool version is less that VERSION.
+m4_defun([LT_PREREQ],
+[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
+       [m4_default([$3],
+		   [m4_fatal([Libtool version $1 or higher is required],
+		             63)])],
+       [$2])])
+
+
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+m4_defun([_LT_CHECK_BUILDDIR],
+[case `pwd` in
+  *\ * | *\	*)
+    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
+esac
+])
+
+
+# LT_INIT([OPTIONS])
+# ------------------
+AC_DEFUN([LT_INIT],
+[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK
+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS=$ltmain
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])# LT_INIT
+
+# Old names:
+AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
+AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
+dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
+
+
+# _LT_PREPARE_CC_BASENAME
+# -----------------------
+m4_defun([_LT_PREPARE_CC_BASENAME], [
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+func_cc_basename ()
+{
+    for cc_temp in @S|@*""; do
+      case $cc_temp in
+        compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+        distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+        \-*) ;;
+        *) break;;
+      esac
+    done
+    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+}
+])# _LT_PREPARE_CC_BASENAME
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME,
+# but that macro is also expanded into generated libtool script, which
+# arranges for $SED and $ECHO to be set by different means.
+m4_defun([_LT_CC_BASENAME],
+[m4_require([_LT_PREPARE_CC_BASENAME])dnl
+AC_REQUIRE([_LT_DECL_SED])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+func_cc_basename $1
+cc_basename=$func_cc_basename_result
+])
+
+
+# _LT_FILEUTILS_DEFAULTS
+# ----------------------
+# It is okay to use these file commands and assume they have been set
+# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'.
+m4_defun([_LT_FILEUTILS_DEFAULTS],
+[: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+])# _LT_FILEUTILS_DEFAULTS
+
+
+# _LT_SETUP
+# ---------
+m4_defun([_LT_SETUP],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+
+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
+dnl
+_LT_DECL([], [host_alias], [0], [The host system])dnl
+_LT_DECL([], [host], [0])dnl
+_LT_DECL([], [host_os], [0])dnl
+dnl
+_LT_DECL([], [build_alias], [0], [The build system])dnl
+_LT_DECL([], [build], [0])dnl
+_LT_DECL([], [build_os], [0])dnl
+dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+test -z "$LN_S" && LN_S="ln -s"
+_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
+dnl
+AC_REQUIRE([LT_CMD_MAX_LEN])dnl
+_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
+_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
+m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
+m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_WITH_SYSROOT])dnl
+m4_require([_LT_CMD_TRUNCATE])dnl
+
+_LT_CONFIG_LIBTOOL_INIT([
+# See if we are running on zsh, and set the options that allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}"; then
+   setopt NO_GLOB_SUBST
+fi
+])
+if test -n "${ZSH_VERSION+set}"; then
+   setopt NO_GLOB_SUBST
+fi
+
+_LT_CHECK_OBJDIR
+
+m4_require([_LT_TAG_COMPILER])dnl
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test set != "${COLLECT_NAMES+set}"; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a '.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+old_CC=$CC
+old_CFLAGS=$CFLAGS
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    _LT_PATH_MAGIC
+  fi
+  ;;
+esac
+
+# Use C for the default configuration in the libtool script
+LT_SUPPORTED_TAG([CC])
+_LT_LANG_C_CONFIG
+_LT_LANG_DEFAULT_CONFIG
+_LT_CONFIG_COMMANDS
+])# _LT_SETUP
+
+
+# _LT_PREPARE_SED_QUOTE_VARS
+# --------------------------
+# Define a few sed substitution that help us do robust quoting.
+m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
+[# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+])
+
+# _LT_PROG_LTMAIN
+# ---------------
+# Note that this code is called both from 'configure', and 'config.status'
+# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
+# 'config.status' has no value for ac_aux_dir unless we are using Automake,
+# so we pass a copy along to make sure it has a sensible value anyway.
+m4_defun([_LT_PROG_LTMAIN],
+[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
+_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
+ltmain=$ac_aux_dir/ltmain.sh
+])# _LT_PROG_LTMAIN
+
+
+## ------------------------------------- ##
+## Accumulate code for creating libtool. ##
+## ------------------------------------- ##
+
+# So that we can recreate a full libtool script including additional
+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+# in macros and then make a single call at the end using the 'libtool'
+# label.
+
+
+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+# ----------------------------------------
+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL_INIT],
+[m4_ifval([$1],
+          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
+                     [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_INIT])
+
+
+# _LT_CONFIG_LIBTOOL([COMMANDS])
+# ------------------------------
+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL],
+[m4_ifval([$1],
+          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
+                     [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
+
+
+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+# -----------------------------------------------------
+m4_defun([_LT_CONFIG_SAVE_COMMANDS],
+[_LT_CONFIG_LIBTOOL([$1])
+_LT_CONFIG_LIBTOOL_INIT([$2])
+])
+
+
+# _LT_FORMAT_COMMENT([COMMENT])
+# -----------------------------
+# Add leading comment marks to the start of each line, and a trailing
+# full-stop to the whole comment if one is not present already.
+m4_define([_LT_FORMAT_COMMENT],
+[m4_ifval([$1], [
+m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
+              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
+)])
+
+
+
+## ------------------------ ##
+## FIXME: Eliminate VARNAME ##
+## ------------------------ ##
+
+
+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+# -------------------------------------------------------------------
+# CONFIGNAME is the name given to the value in the libtool script.
+# VARNAME is the (base) name used in the configure script.
+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+# VARNAME.  Any other value will be used directly.
+m4_define([_LT_DECL],
+[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
+    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
+	[m4_ifval([$1], [$1], [$2])])
+    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
+    m4_ifval([$4],
+	[lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
+    lt_dict_add_subkey([lt_decl_dict], [$2],
+	[tagged?], [m4_ifval([$5], [yes], [no])])])
+])
+
+
+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+# --------------------------------------------------------
+m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
+
+
+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_tag_varnames],
+[_lt_decl_filter([tagged?], [yes], $@)])
+
+
+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+# ---------------------------------------------------------
+m4_define([_lt_decl_filter],
+[m4_case([$#],
+  [0], [m4_fatal([$0: too few arguments: $#])],
+  [1], [m4_fatal([$0: too few arguments: $#: $1])],
+  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
+  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
+  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
+])
+
+
+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+# --------------------------------------------------
+m4_define([lt_decl_quote_varnames],
+[_lt_decl_filter([value], [1], $@)])
+
+
+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_dquote_varnames],
+[_lt_decl_filter([value], [2], $@)])
+
+
+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_varnames_tagged],
+[m4_assert([$# <= 2])dnl
+_$0(m4_quote(m4_default([$1], [[, ]])),
+    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
+    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
+m4_define([_lt_decl_varnames_tagged],
+[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
+
+
+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_all_varnames],
+[_$0(m4_quote(m4_default([$1], [[, ]])),
+     m4_if([$2], [],
+	   m4_quote(lt_decl_varnames),
+	m4_quote(m4_shift($@))))[]dnl
+])
+m4_define([_lt_decl_all_varnames],
+[lt_join($@, lt_decl_varnames_tagged([$1],
+			lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
+])
+
+
+# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+# ------------------------------------
+# Quote a variable value, and forward it to 'config.status' so that its
+# declaration there will have the same value as in 'configure'.  VARNAME
+# must have a single quote delimited value for this to work.
+m4_define([_LT_CONFIG_STATUS_DECLARE],
+[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
+
+
+# _LT_CONFIG_STATUS_DECLARATIONS
+# ------------------------------
+# We delimit libtool config variables with single quotes, so when
+# we write them to config.status, we have to be sure to quote all
+# embedded single quotes properly.  In configure, this macro expands
+# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+#
+#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
+m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
+    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAGS
+# ----------------
+# Output comment and list of tags supported by the script
+m4_defun([_LT_LIBTOOL_TAGS],
+[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
+available_tags='_LT_TAGS'dnl
+])
+
+
+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+# -----------------------------------
+# Extract the dictionary values for VARNAME (optionally with TAG) and
+# expand to a commented shell variable setting:
+#
+#    # Some comment about what VAR is for.
+#    visible_name=$lt_internal_name
+m4_define([_LT_LIBTOOL_DECLARE],
+[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
+					   [description])))[]dnl
+m4_pushdef([_libtool_name],
+    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
+m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
+    [0], [_libtool_name=[$]$1],
+    [1], [_libtool_name=$lt_[]$1],
+    [2], [_libtool_name=$lt_[]$1],
+    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
+m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
+])
+
+
+# _LT_LIBTOOL_CONFIG_VARS
+# -----------------------
+# Produce commented declarations of non-tagged libtool config variables
+# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool'
+# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
+# section) are produced by _LT_LIBTOOL_TAG_VARS.
+m4_defun([_LT_LIBTOOL_CONFIG_VARS],
+[m4_foreach([_lt_var],
+    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
+    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAG_VARS(TAG)
+# -------------------------
+m4_define([_LT_LIBTOOL_TAG_VARS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
+    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
+
+
+# _LT_TAGVAR(VARNAME, [TAGNAME])
+# ------------------------------
+m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
+
+
+# _LT_CONFIG_COMMANDS
+# -------------------
+# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
+# variables for single and double quote escaping we saved from calls
+# to _LT_DECL, we can put quote escaped variables declarations
+# into 'config.status', and then the shell code to quote escape them in
+# for loops in 'config.status'.  Finally, any additional code accumulated
+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+m4_defun([_LT_CONFIG_COMMANDS],
+[AC_PROVIDE_IFELSE([LT_OUTPUT],
+	dnl If the libtool generation code has been placed in $CONFIG_LT,
+	dnl instead of duplicating it all over again into config.status,
+	dnl then we will have config.status run $CONFIG_LT later, so it
+	dnl needs to know what name is stored there:
+        [AC_CONFIG_COMMANDS([libtool],
+            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
+    dnl If the libtool generation code is destined for config.status,
+    dnl expand the accumulated commands and init code now:
+    [AC_CONFIG_COMMANDS([libtool],
+        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
+])#_LT_CONFIG_COMMANDS
+
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
+[
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+_LT_CONFIG_STATUS_DECLARATIONS
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$[]1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_quote_varnames); do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_dquote_varnames); do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+_LT_OUTPUT_LIBTOOL_INIT
+])
+
+# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
+# ------------------------------------
+# Generate a child script FILE with all initialization necessary to
+# reuse the environment learned by the parent script, and make the
+# file executable.  If COMMENT is supplied, it is inserted after the
+# '#!' sequence but before initialization text begins.  After this
+# macro, additional text can be appended to FILE to form the body of
+# the child script.  The macro ends with non-zero status if the
+# file could not be fully written (such as if the disk is full).
+m4_ifdef([AS_INIT_GENERATED],
+[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
+[m4_defun([_LT_GENERATED_FILE_INIT],
+[m4_require([AS_PREPARE])]dnl
+[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
+[lt_write_fail=0
+cat >$1 <<_ASEOF || lt_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+$2
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$1 <<\_ASEOF || lt_write_fail=1
+AS_SHELL_SANITIZE
+_AS_PREPARE
+exec AS_MESSAGE_FD>&1
+_ASEOF
+test 0 = "$lt_write_fail" && chmod +x $1[]dnl
+m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
+
+# LT_OUTPUT
+# ---------
+# This macro allows early generation of the libtool script (before
+# AC_OUTPUT is called), incase it is used in configure for compilation
+# tests.
+AC_DEFUN([LT_OUTPUT],
+[: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
+[# Run this file to recreate a libtool stub with the current configuration.])
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+lt_cl_silent=false
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+  echo
+  AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+'$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+  -h, --help      print this help, then exit
+  -V, --version   print version number, then exit
+  -q, --quiet     do not print progress messages
+  -d, --debug     don't remove temporary files
+
+Report bugs to <bug-libtool at gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2011 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test 0 != $[#]
+do
+  case $[1] in
+    --version | --v* | -V )
+      echo "$lt_cl_version"; exit 0 ;;
+    --help | --h* | -h )
+      echo "$lt_cl_help"; exit 0 ;;
+    --debug | --d* | -d )
+      debug=: ;;
+    --quiet | --q* | --silent | --s* | -q )
+      lt_cl_silent=: ;;
+
+    -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try '$[0] --help' for more information.]) ;;
+
+    *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try '$[0] --help' for more information.]) ;;
+  esac
+  shift
+done
+
+if $lt_cl_silent; then
+  exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure.  Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+lt_cl_success=:
+test yes = "$silent" &&
+  lt_config_lt_args="$lt_config_lt_args --quiet"
+exec AS_MESSAGE_LOG_FD>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec AS_MESSAGE_LOG_FD>>config.log
+$lt_cl_success || AS_EXIT(1)
+])# LT_OUTPUT
+
+
+# _LT_CONFIG(TAG)
+# ---------------
+# If TAG is the built-in tag, create an initial libtool script with a
+# default configuration from the untagged config vars.  Otherwise add code
+# to config.status for appending the configuration named by TAG from the
+# matching tagged config vars.
+m4_defun([_LT_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_CONFIG_SAVE_COMMANDS([
+  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
+  m4_if(_LT_TAG, [C], [
+    # See if we are running on zsh, and set the options that allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}"; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile=${ofile}T
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+# Generated automatically by $as_me ($PACKAGE) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+
+# Provide generalized library-building support services.
+# Written by Gordon Matzigkeit, 1996
+
+_LT_COPYING
+_LT_LIBTOOL_TAGS
+
+# Configured defaults for sys_lib_dlsearch_path munging.
+: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"}
+
+# ### BEGIN LIBTOOL CONFIG
+_LT_LIBTOOL_CONFIG_VARS
+_LT_LIBTOOL_TAG_VARS
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+    cat <<'_LT_EOF' >> "$cfgfile"
+
+# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE
+
+_LT_PREPARE_MUNGE_PATH_LIST
+_LT_PREPARE_CC_BASENAME
+
+# ### END FUNCTIONS SHARED WITH CONFIGURE
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test set != "${COLLECT_NAMES+set}"; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+  _LT_PROG_LTMAIN
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" \
+     || (rm -f "$cfgfile"; exit 1)
+
+   mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+],
+[cat <<_LT_EOF >> "$ofile"
+
+dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
+dnl in a comment (ie after a #).
+# ### BEGIN LIBTOOL TAG CONFIG: $1
+_LT_LIBTOOL_TAG_VARS(_LT_TAG)
+# ### END LIBTOOL TAG CONFIG: $1
+_LT_EOF
+])dnl /m4_if
+],
+[m4_if([$1], [], [
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    RM='$RM'
+    ofile='$ofile'], [])
+])dnl /_LT_CONFIG_SAVE_COMMANDS
+])# _LT_CONFIG
+
+
+# LT_SUPPORTED_TAG(TAG)
+# ---------------------
+# Trace this macro to discover what tags are supported by the libtool
+# --tag option, using:
+#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
+AC_DEFUN([LT_SUPPORTED_TAG], [])
+
+
+# C support is built-in for now
+m4_define([_LT_LANG_C_enabled], [])
+m4_define([_LT_TAGS], [])
+
+
+# LT_LANG(LANG)
+# -------------
+# Enable libtool support for the given language if not already enabled.
+AC_DEFUN([LT_LANG],
+[AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+  [C],			[_LT_LANG(C)],
+  [C++],		[_LT_LANG(CXX)],
+  [Go],			[_LT_LANG(GO)],
+  [Java],		[_LT_LANG(GCJ)],
+  [Fortran 77],		[_LT_LANG(F77)],
+  [Fortran],		[_LT_LANG(FC)],
+  [Windows Resource],	[_LT_LANG(RC)],
+  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+    [_LT_LANG($1)],
+    [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])# LT_LANG
+
+
+# _LT_LANG(LANGNAME)
+# ------------------
+m4_defun([_LT_LANG],
+[m4_ifdef([_LT_LANG_]$1[_enabled], [],
+  [LT_SUPPORTED_TAG([$1])dnl
+  m4_append([_LT_TAGS], [$1 ])dnl
+  m4_define([_LT_LANG_]$1[_enabled], [])dnl
+  _LT_LANG_$1_CONFIG($1)])dnl
+])# _LT_LANG
+
+
+m4_ifndef([AC_PROG_GO], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_GO.  When it is available in    #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+############################################################
+m4_defun([AC_PROG_GO],
+[AC_LANG_PUSH(Go)dnl
+AC_ARG_VAR([GOC],     [Go compiler command])dnl
+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
+_AC_ARG_VAR_LDFLAGS()dnl
+AC_CHECK_TOOL(GOC, gccgo)
+if test -z "$GOC"; then
+  if test -n "$ac_tool_prefix"; then
+    AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
+  fi
+fi
+if test -z "$GOC"; then
+  AC_CHECK_PROG(GOC, gccgo, gccgo, false)
+fi
+])#m4_defun
+])#m4_ifndef
+
+
+# _LT_LANG_DEFAULT_CONFIG
+# -----------------------
+m4_defun([_LT_LANG_DEFAULT_CONFIG],
+[AC_PROVIDE_IFELSE([AC_PROG_CXX],
+  [LT_LANG(CXX)],
+  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_F77],
+  [LT_LANG(F77)],
+  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_FC],
+  [LT_LANG(FC)],
+  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
+
+dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
+dnl pulling things in needlessly.
+AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+  [LT_LANG(GCJ)],
+  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+    [LT_LANG(GCJ)],
+    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
+      [LT_LANG(GCJ)],
+      [m4_ifdef([AC_PROG_GCJ],
+	[m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
+       m4_ifdef([A][M_PROG_GCJ],
+	[m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
+       m4_ifdef([LT_PROG_GCJ],
+	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+
+AC_PROVIDE_IFELSE([AC_PROG_GO],
+  [LT_LANG(GO)],
+  [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
+
+AC_PROVIDE_IFELSE([LT_PROG_RC],
+  [LT_LANG(RC)],
+  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
+])# _LT_LANG_DEFAULT_CONFIG
+
+# Obsolete macros:
+AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
+dnl AC_DEFUN([AC_LIBTOOL_F77], [])
+dnl AC_DEFUN([AC_LIBTOOL_FC], [])
+dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+dnl AC_DEFUN([AC_LIBTOOL_RC], [])
+
+
+# _LT_TAG_COMPILER
+# ----------------
+m4_defun([_LT_TAG_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
+_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
+_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
+_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_TAG_COMPILER
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+m4_defun([_LT_COMPILER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+m4_defun([_LT_LINKER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+])# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
+  case $host_os in
+    rhapsody* | darwin*)
+    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+    AC_CHECK_TOOL([LIPO], [lipo], [:])
+    AC_CHECK_TOOL([OTOOL], [otool], [:])
+    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
+    _LT_DECL([], [DSYMUTIL], [1],
+      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
+    _LT_DECL([], [NMEDIT], [1],
+      [Tool to change global to local symbols on Mac OS X])
+    _LT_DECL([], [LIPO], [1],
+      [Tool to manipulate fat objects and archives on Mac OS X])
+    _LT_DECL([], [OTOOL], [1],
+      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
+    _LT_DECL([], [OTOOL64], [1],
+      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
+
+    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+      [lt_cv_apple_cc_single_mod=no
+      if test -z "$LT_MULTI_MODULE"; then
+	# By default we will add the -single_module flag. You can override
+	# by either setting the environment variable LT_MULTI_MODULE
+	# non-empty at configure time, or by adding -multi_module to the
+	# link flags.
+	rm -rf libconftest.dylib*
+	echo "int foo(void){return 1;}" > conftest.c
+	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
+	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+	# If there is a non-empty error log, and "single_module"
+	# appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+	  cat conftest.err >&AS_MESSAGE_LOG_FD
+	# Otherwise, if the output was created with a 0 exit code from
+	# the compiler, it worked.
+	elif test -f libconftest.dylib && test 0 = "$_lt_result"; then
+	  lt_cv_apple_cc_single_mod=yes
+	else
+	  cat conftest.err >&AS_MESSAGE_LOG_FD
+	fi
+	rm -rf libconftest.dylib*
+	rm -f conftest.*
+      fi])
+
+    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+      [lt_cv_ld_exported_symbols_list],
+      [lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+	[lt_cv_ld_exported_symbols_list=yes],
+	[lt_cv_ld_exported_symbols_list=no])
+	LDFLAGS=$save_LDFLAGS
+    ])
+
+    AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
+      [lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
+      echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+      $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
+      echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
+      $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -s conftest.err && $GREP force_load conftest.err; then
+	cat conftest.err >&AS_MESSAGE_LOG_FD
+      elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then
+	lt_cv_ld_force_load=yes
+      else
+	cat conftest.err >&AS_MESSAGE_LOG_FD
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+    ])
+    case $host_os in
+    rhapsody* | darwin1.[[012]])
+      _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+	  _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+	10.[[012]][[,.]]*)
+	  _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+	10.*)
+	  _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test yes = "$lt_cv_apple_cc_single_mod"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test yes = "$lt_cv_ld_exported_symbols_list"; then
+      _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib'
+    fi
+    if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+])
+
+
+# _LT_DARWIN_LINKER_FEATURES([TAG])
+# ---------------------------------
+# Checks for linker and compiler features on darwin
+m4_defun([_LT_DARWIN_LINKER_FEATURES],
+[
+  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
+  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+  _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_automatic, $1)=yes
+  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  if test yes = "$lt_cv_ld_force_load"; then
+    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+    m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
+                  [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=yes])
+  else
+    _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+  fi
+  _LT_TAGVAR(link_all_deplibs, $1)=yes
+  _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined
+  case $cc_basename in
+     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test yes = "$_lt_dar_can_shared"; then
+    output_verbose_link_cmd=func_echo_all
+    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
+    m4_if([$1], [CXX],
+[   if test yes != "$lt_cv_apple_cc_single_mod"; then
+      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
+      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
+    fi
+],[])
+  else
+  _LT_TAGVAR(ld_shlibs, $1)=no
+  fi
+])
+
+# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
+# ----------------------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+# Store the results from the different compilers for each TAGNAME.
+# Allow to override them for all tags through lt_cv_aix_libpath.
+m4_defun([_LT_SYS_MODULE_PATH_AIX],
+[m4_require([_LT_DECL_SED])dnl
+if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
+  [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
+  lt_aix_libpath_sed='[
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }]'
+  _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi],[])
+  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib
+  fi
+  ])
+  aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
+fi
+])# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+m4_define([_LT_SHELL_INIT],
+[m4_divert_text([M4SH-INIT], [$1
+])])# _LT_SHELL_INIT
+
+
+
+# _LT_PROG_ECHO_BACKSLASH
+# -----------------------
+# Find how we can fake an echo command that does not interpret backslash.
+# In particular, with Autoconf 2.60 or later we add some code to the start
+# of the generated configure script that will find a shell with a builtin
+# printf (that we can use as an echo command).
+m4_defun([_LT_PROG_ECHO_BACKSLASH],
+[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+AC_MSG_CHECKING([how to print strings])
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
+else
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$[]1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*"
+}
+
+case $ECHO in
+  printf*) AC_MSG_RESULT([printf]) ;;
+  print*) AC_MSG_RESULT([print -r]) ;;
+  *) AC_MSG_RESULT([cat]) ;;
+esac
+
+m4_ifdef([_AS_DETECT_SUGGESTED],
+[_AS_DETECT_SUGGESTED([
+  test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test "X`printf %s $ECHO`" = "X$ECHO" \
+      || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
+
+_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
+_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
+])# _LT_PROG_ECHO_BACKSLASH
+
+
+# _LT_WITH_SYSROOT
+# ----------------
+AC_DEFUN([_LT_WITH_SYSROOT],
+[AC_MSG_CHECKING([for sysroot])
+AC_ARG_WITH([sysroot],
+[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@],
+  [Search for dependent libraries within DIR (or the compiler's sysroot
+   if not specified).])],
+[], [with_sysroot=no])
+
+dnl lt_sysroot will always be passed unquoted.  We quote it here
+dnl in case the user passed a directory name.
+lt_sysroot=
+case $with_sysroot in #(
+ yes)
+   if test yes = "$GCC"; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   AC_MSG_RESULT([$with_sysroot])
+   AC_MSG_ERROR([The sysroot must be an absolute path.])
+   ;;
+esac
+
+ AC_MSG_RESULT([${lt_sysroot:-no}])
+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
+[dependent libraries, and where our libraries should be installed.])])
+
+# _LT_ENABLE_LOCK
+# ---------------
+m4_defun([_LT_ENABLE_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+  [AS_HELP_STRING([--disable-libtool-lock],
+    [avoid locking (might break parallel builds)])])
+test no = "$enable_libtool_lock" || enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out what ABI is being produced by ac_compile, and set mode
+  # options accordingly.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+	HPUX_IA64_MODE=32
+	;;
+      *ELF-64*)
+	HPUX_IA64_MODE=64
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
+  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    if test yes = "$lt_cv_prog_gnu_ld"; then
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -melf32bsmip"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -melf32bmipn32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -melf64bmip"
+	;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -32"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -n32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -64"
+	  ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
+
+mips64*-*linux*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
+  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    emul=elf
+    case `/usr/bin/file conftest.$ac_objext` in
+      *32-bit*)
+	emul="${emul}32"
+	;;
+      *64-bit*)
+	emul="${emul}64"
+	;;
+    esac
+    case `/usr/bin/file conftest.$ac_objext` in
+      *MSB*)
+	emul="${emul}btsmip"
+	;;
+      *LSB*)
+	emul="${emul}ltsmip"
+	;;
+    esac
+    case `/usr/bin/file conftest.$ac_objext` in
+      *N32*)
+	emul="${emul}n32"
+	;;
+    esac
+    LD="${LD-ld} -m $emul"
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.  Note that the listed cases only cover the
+  # situations where additional linker options are needed (such as when
+  # doing 32-bit compilation for a host where ld defaults to 64-bit, or
+  # vice versa); the common cases where no linker options are needed do
+  # not appear in the list.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_i386_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    case `/usr/bin/file conftest.o` in
+	      *x86-64*)
+		LD="${LD-ld} -m elf32_x86_64"
+		;;
+	      *)
+		LD="${LD-ld} -m elf_i386"
+		;;
+	    esac
+	    ;;
+	  powerpc64le-*linux*)
+	    LD="${LD-ld} -m elf32lppclinux"
+	    ;;
+	  powerpc64-*linux*)
+	    LD="${LD-ld} -m elf32ppclinux"
+	    ;;
+	  s390x-*linux*)
+	    LD="${LD-ld} -m elf_s390"
+	    ;;
+	  sparc64-*linux*)
+	    LD="${LD-ld} -m elf32_sparc"
+	    ;;
+	esac
+	;;
+      *64-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_x86_64_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_x86_64"
+	    ;;
+	  powerpcle-*linux*)
+	    LD="${LD-ld} -m elf64lppc"
+	    ;;
+	  powerpc-*linux*)
+	    LD="${LD-ld} -m elf64ppc"
+	    ;;
+	  s390*-*linux*|s390*-*tpf*)
+	    LD="${LD-ld} -m elf64_s390"
+	    ;;
+	  sparc*-*linux*)
+	    LD="${LD-ld} -m elf64_sparc"
+	    ;;
+	esac
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS=$CFLAGS
+  CFLAGS="$CFLAGS -belf"
+  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+    [AC_LANG_PUSH(C)
+     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+     AC_LANG_POP])
+  if test yes != "$lt_cv_cc_needs_belf"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS=$SAVE_CFLAGS
+  fi
+  ;;
+*-*solaris*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*)
+        case $host in
+        i?86-*-solaris*|x86_64-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD=${LD-ld}_sol2
+        fi
+        ;;
+      *)
+	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+	  LD="${LD-ld} -64"
+	fi
+	;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks=$enable_libtool_lock
+])# _LT_ENABLE_LOCK
+
+
+# _LT_PROG_AR
+# -----------
+m4_defun([_LT_PROG_AR],
+[AC_CHECK_TOOLS(AR, [ar], false)
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
+
+AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
+  [lt_cv_ar_at_file=no
+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
+     [echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
+      AC_TRY_EVAL([lt_ar_try])
+      if test 0 -eq "$ac_status"; then
+	# Ensure the archiver fails upon bogus file names.
+	rm -f conftest.$ac_objext libconftest.a
+	AC_TRY_EVAL([lt_ar_try])
+	if test 0 -ne "$ac_status"; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
+     ])
+  ])
+
+if test no = "$lt_cv_ar_at_file"; then
+  archiver_list_spec=
+else
+  archiver_list_spec=$lt_cv_ar_at_file
+fi
+_LT_DECL([], [archiver_list_spec], [1],
+  [How to feed a file listing to the archiver])
+])# _LT_PROG_AR
+
+
+# _LT_CMD_OLD_ARCHIVE
+# -------------------
+m4_defun([_LT_CMD_OLD_ARCHIVE],
+[_LT_PROG_AR
+
+AC_CHECK_TOOL(STRIP, strip, :)
+test -z "$STRIP" && STRIP=:
+_LT_DECL([], [STRIP], [1], [A symbol stripping program])
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+test -z "$RANLIB" && RANLIB=:
+_LT_DECL([], [RANLIB], [1],
+    [Commands used to install an old-style archive])
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  bitrig* | openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
+fi
+
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
+_LT_DECL([], [old_postinstall_cmds], [2])
+_LT_DECL([], [old_postuninstall_cmds], [2])
+_LT_TAGDECL([], [old_archive_cmds], [2],
+    [Commands used to build an old-style archive])
+_LT_DECL([], [lock_old_archive_extraction], [0],
+    [Whether to use a lock for old archive extraction])
+])# _LT_CMD_OLD_ARCHIVE
+
+
+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([_LT_COMPILER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$3"  ## exclude from sc_useless_quotes_in_assignment
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       $2=yes
+     fi
+   fi
+   $RM conftest*
+])
+
+if test yes = "[$]$2"; then
+    m4_if([$5], , :, [$5])
+else
+    m4_if([$6], , :, [$6])
+fi
+])# _LT_COMPILER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
+
+
+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#                  [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------
+# Check whether the given linker option works
+AC_DEFUN([_LT_LINKER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS=$LDFLAGS
+   LDFLAGS="$LDFLAGS $3"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&AS_MESSAGE_LOG_FD
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         $2=yes
+       fi
+     else
+       $2=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS=$save_LDFLAGS
+])
+
+if test yes = "[$]$2"; then
+    m4_if([$4], , :, [$4])
+else
+    m4_if([$5], , :, [$5])
+fi
+])# _LT_LINKER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
+
+
+# LT_CMD_MAX_LEN
+#---------------
+AC_DEFUN([LT_CMD_MAX_LEN],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+  i=0
+  teststring=ABCD
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+       test undefined != "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test X`env echo "$teststring$teststring" 2>/dev/null` \
+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+	      test 17 != "$i" # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+])
+if test -n "$lt_cv_sys_max_cmd_len"; then
+  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+  AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+    [What is the maximum length of a command?])
+])# LT_CMD_MAX_LEN
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
+
+
+# _LT_HEADER_DLFCN
+# ----------------
+m4_defun([_LT_HEADER_DLFCN],
+[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
+])# _LT_HEADER_DLFCN
+
+
+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ----------------------------------------------------------------
+m4_defun([_LT_TRY_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test yes = "$cross_compiling"; then :
+  [$4]
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+[#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisibility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}]
+_LT_EOF
+  if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then
+    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) $1 ;;
+      x$lt_dlneed_uscore) $2 ;;
+      x$lt_dlunknown|x*) $3 ;;
+    esac
+  else :
+    # compilation failed
+    $3
+  fi
+fi
+rm -fr conftest*
+])# _LT_TRY_DLOPEN_SELF
+
+
+# LT_SYS_DLOPEN_SELF
+# ------------------
+AC_DEFUN([LT_SYS_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test yes != "$enable_dlopen"; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen=load_add_on
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen=LoadLibrary
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen=dlopen
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+    # if libdl is installed we need to link against it
+    AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[
+    lt_cv_dlopen=dyld
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ])
+    ;;
+
+  tpf*)
+    # Don't try to run any link tests for TPF.  We know it's impossible
+    # because TPF is a cross-compiler, and we know how we open DSOs.
+    lt_cv_dlopen=dlopen
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=no
+    ;;
+
+  *)
+    AC_CHECK_FUNC([shl_load],
+	  [lt_cv_dlopen=shl_load],
+      [AC_CHECK_LIB([dld], [shl_load],
+	    [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld],
+	[AC_CHECK_FUNC([dlopen],
+	      [lt_cv_dlopen=dlopen],
+	  [AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],
+	    [AC_CHECK_LIB([svld], [dlopen],
+		  [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld],
+	      [AC_CHECK_LIB([dld], [dld_link],
+		    [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld])
+	      ])
+	    ])
+	  ])
+	])
+      ])
+    ;;
+  esac
+
+  if test no = "$lt_cv_dlopen"; then
+    enable_dlopen=no
+  else
+    enable_dlopen=yes
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS=$CPPFLAGS
+    test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS=$LDFLAGS
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS=$LIBS
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    AC_CACHE_CHECK([whether a program can dlopen itself],
+	  lt_cv_dlopen_self, [dnl
+	  _LT_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+    ])
+
+    if test yes = "$lt_cv_dlopen_self"; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+	  lt_cv_dlopen_self_static, [dnl
+	  _LT_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
+      ])
+    fi
+
+    CPPFLAGS=$save_CPPFLAGS
+    LDFLAGS=$save_LDFLAGS
+    LIBS=$save_LIBS
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+	 [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+	 [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+	 [Whether dlopen of statically linked programs is supported])
+])# LT_SYS_DLOPEN_SELF
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
+
+
+# _LT_COMPILER_C_O([TAGNAME])
+# ---------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler.
+# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+m4_defun([_LT_COMPILER_C_O],
+[m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+     fi
+   fi
+   chmod u+w . 2>&AS_MESSAGE_LOG_FD
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+])
+_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
+	[Does compiler simultaneously support -c and -o options?])
+])# _LT_COMPILER_C_O
+
+
+# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+# ----------------------------------
+# Check to see if we can do hard links to lock some files if needed
+m4_defun([_LT_COMPILER_FILE_LOCKS],
+[m4_require([_LT_ENABLE_LOCK])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_COMPILER_C_O([$1])
+
+hard_links=nottested
+if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then
+  # do not overwrite the value of need_locks provided by the user
+  AC_MSG_CHECKING([if we can lock with hard links])
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  AC_MSG_RESULT([$hard_links])
+  if test no = "$hard_links"; then
+    AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe])
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
+])# _LT_COMPILER_FILE_LOCKS
+
+
+# _LT_CHECK_OBJDIR
+# ----------------
+m4_defun([_LT_CHECK_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+_LT_DECL([], [objdir], [0],
+         [The name of the directory that contains temporary libtool files])dnl
+m4_pattern_allow([LT_OBJDIR])dnl
+AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/",
+  [Define to the sub-directory where libtool stores uninstalled libraries.])
+])# _LT_CHECK_OBJDIR
+
+
+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+# --------------------------------------
+# Check hardcoding attributes.
+m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
+   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
+   test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then
+
+  # We can hardcode non-existent directories.
+  if test no != "$_LT_TAGVAR(hardcode_direct, $1)" &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" &&
+     test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then
+    # Linking always hardcodes the temporary library directory.
+    _LT_TAGVAR(hardcode_action, $1)=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    _LT_TAGVAR(hardcode_action, $1)=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  _LT_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
+
+if test relink = "$_LT_TAGVAR(hardcode_action, $1)" ||
+   test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test yes = "$shlibpath_overrides_runpath" ||
+     test no = "$enable_shared"; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+_LT_TAGDECL([], [hardcode_action], [0],
+    [How to hardcode a shared library path into an executable])
+])# _LT_LINKER_HARDCODE_LIBPATH
+
+
+# _LT_CMD_STRIPLIB
+# ----------------
+m4_defun([_LT_CMD_STRIPLIB],
+[m4_require([_LT_DECL_EGREP])
+striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP"; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      AC_MSG_RESULT([yes])
+    else
+      AC_MSG_RESULT([no])
+    fi
+    ;;
+  *)
+    AC_MSG_RESULT([no])
+    ;;
+  esac
+fi
+_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
+_LT_DECL([], [striplib], [1])
+])# _LT_CMD_STRIPLIB
+
+
+# _LT_PREPARE_MUNGE_PATH_LIST
+# ---------------------------
+# Make sure func_munge_path_list() is defined correctly.
+m4_defun([_LT_PREPARE_MUNGE_PATH_LIST],
+[[# func_munge_path_list VARIABLE PATH
+# -----------------------------------
+# VARIABLE is name of variable containing _space_ separated list of
+# directories to be munged by the contents of PATH, which is string
+# having a format:
+# "DIR[:DIR]:"
+#       string "DIR[ DIR]" will be prepended to VARIABLE
+# ":DIR[:DIR]"
+#       string "DIR[ DIR]" will be appended to VARIABLE
+# "DIRP[:DIRP]::[DIRA:]DIRA"
+#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
+#       "DIRA[ DIRA]" will be appended to VARIABLE
+# "DIR[:DIR]"
+#       VARIABLE will be replaced by "DIR[ DIR]"
+func_munge_path_list ()
+{
+    case x at S|@2 in
+    x)
+        ;;
+    *:)
+        eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\"
+        ;;
+    x:*)
+        eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\"
+        ;;
+    *::*)
+        eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
+        eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\"
+        ;;
+    *)
+        eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\"
+        ;;
+    esac
+}
+]])# _LT_PREPARE_PATH_LIST
+
+
+# _LT_SYS_DYNAMIC_LINKER([TAG])
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+m4_defun([_LT_SYS_DYNAMIC_LINKER],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_OBJDUMP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
+m4_if([$1],
+	[], [
+if test yes = "$GCC"; then
+  case $host_os in
+    darwin*) lt_awk_arg='/^libraries:/,/LR/' ;;
+    *) lt_awk_arg='/^libraries:/' ;;
+  esac
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;;
+    *) lt_sed_strip_eq='s|=/|/|g' ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary...
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  # ...but if some path component already ends with the multilib dir we assume
+  # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer).
+  case "$lt_multi_os_dir; $lt_search_path_spec " in
+  "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*)
+    lt_multi_os_dir=
+    ;;
+  esac
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir"
+    elif test -n "$lt_multi_os_dir"; then
+      test -d "$lt_sys_path" && \
+	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS = " "; FS = "/|\n";} {
+  lt_foo = "";
+  lt_count = 0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo = "/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=.so
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+AC_ARG_VAR([LT_SYS_LIBRARY_PATH],
+[User-defined run-time library search path.])
+
+case $host_os in
+aix3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='$libname$release$shared_ext$major'
+  ;;
+
+aix[[4-9]]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test ia64 = "$host_cpu"; then
+    # AIX 5 supports IA64
+    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line '#! .'.  This would cause the generated library to
+    # depend on '.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[[01]] | aix4.[[01]].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # Using Import Files as archive members, it is possible to support
+    # filename-based versioning of shared library archives on AIX. While
+    # this would work for both with and without runtime linking, it will
+    # prevent static linking of such archives. So we do filename-based
+    # shared library versioning with .so extension only, which is used
+    # when both runtime linking and shared linking is enabled.
+    # Unfortunately, runtime linking may impact performance, so we do
+    # not want this to be the default eventually. Also, we use the
+    # versioned .so libs for executables only if there is the -brtl
+    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
+    # To allow for filename-based versioning support, we need to create
+    # libNAME.so.V as an archive file, containing:
+    # *) an Import File, referring to the versioned filename of the
+    #    archive as well as the shared archive member, telling the
+    #    bitwidth (32 or 64) of that shared object, and providing the
+    #    list of exported symbols of that shared object, eventually
+    #    decorated with the 'weak' keyword
+    # *) the shared object with the F_LOADONLY flag set, to really avoid
+    #    it being seen by the linker.
+    # At run time we better use the real file rather than another symlink,
+    # but for link time we create the symlink libNAME.so -> libNAME.so.V
+
+    case $with_aix_soname,$aix_use_runtimelinking in
+    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    aix,yes) # traditional libtool
+      dynamic_linker='AIX unversionable lib.so'
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      ;;
+    aix,no) # traditional AIX only
+      dynamic_linker='AIX lib.a[(]lib.so.V[)]'
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      ;;
+    svr4,*) # full svr4 only
+      dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,yes) # both, prefer svr4
+      dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # unpreferred sharedlib libNAME.a needs extra handling
+      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
+      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,no) # both, prefer aix
+      dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]"
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
+      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
+      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
+      ;;
+    esac
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='$libname$shared_ext'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[[45]]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=.dll
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+m4_if([$1], [],[
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+    library_names_spec='$libname.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec=$LIB
+      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
+    ;;
+
+  *)
+    # Assume MSVC wrapper
+    library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib'
+    dynamic_linker='Win32 ld.exe'
+    ;;
+  esac
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$major$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+m4_if([$1], [],[
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[[23]].*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      soname_spec='$libname$release$shared_ext$major'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2.*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+haiku*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    if test 32 = "$HPUX_IA64_MODE"; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
+    fi
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[[3-9]]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test yes = "$lt_cv_prog_gnu_ld"; then
+		version_type=linux # correct to gnu/linux during the next big refactor
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
+  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+linux*android*)
+  version_type=none # Android doesn't support versioned libraries.
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext'
+  soname_spec='$libname$release$shared_ext'
+  finish_cmds=
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  dynamic_linker='Android linker'
+  # Don't embed -rpath directories since the linker doesn't support them.
+  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
+    [lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+	 LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+      [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+	 [lt_cv_shlibpath_overrides_runpath=yes])])
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+    ])
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Ideally, we could use ldconfig to report *all* directores which are
+  # searched for libraries, however this is still not possible.  Aside from not
+  # being certain /sbin/ldconfig is available, command
+  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
+  # even though it is searched at run-time.  Try to do the best guess by
+  # appending ld.so.conf contents (and includes) to the search path.
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd* | bitrig*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec=/usr/lib
+  need_lib_prefix=no
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+    need_version=no
+  else
+    need_version=yes
+  fi
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+os2*)
+  libname_spec='$name'
+  version_type=windows
+  shrext_cmds=.dll
+  need_version=no
+  need_lib_prefix=no
+  # OS/2 can only load a DLL with a base name of 8 characters or less.
+  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
+    v=$($ECHO $release$versuffix | tr -d .-);
+    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
+    $ECHO $n$v`$shared_ext'
+  library_names_spec='${libname}_dll.$libext'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=BEGINLIBPATH
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  postinstall_cmds='base_file=`basename \$file`~
+    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
+    dldir=$destdir/`dirname \$dlpath`~
+    test -d \$dldir || mkdir -p \$dldir~
+    $install_prog $dir/$dlname \$dldir/$dlname~
+    chmod a+x \$dldir/$dlname~
+    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+    fi'
+  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
+    dlpath=$dir/\$dldll~
+    $RM \$dlpath'
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test yes = "$with_gnu_ld"; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec; then
+    version_type=linux # correct to gnu/linux during the next big refactor
+    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
+    soname_spec='$libname$shared_ext.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=sco
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test yes = "$with_gnu_ld"; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test no = "$dynamic_linker" && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test yes = "$GCC"; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
+  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
+fi
+
+if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
+  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
+fi
+
+# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
+configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
+
+# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
+func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
+
+# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
+configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
+
+_LT_DECL([], [variables_saved_for_relink], [1],
+    [Variables whose values should be saved in libtool wrapper scripts and
+    restored at link time])
+_LT_DECL([], [need_lib_prefix], [0],
+    [Do we need the "lib" prefix for modules?])
+_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
+_LT_DECL([], [version_type], [0], [Library versioning type])
+_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
+_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
+_LT_DECL([], [shlibpath_overrides_runpath], [0],
+    [Is shlibpath searched before the hard-coded library search path?])
+_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
+_LT_DECL([], [library_names_spec], [1],
+    [[List of archive names.  First name is the real one, the rest are links.
+    The last name is the one that the linker finds with -lNAME]])
+_LT_DECL([], [soname_spec], [1],
+    [[The coded name of the library, if different from the real name]])
+_LT_DECL([], [install_override_mode], [1],
+    [Permission mode override for installation of shared libraries])
+_LT_DECL([], [postinstall_cmds], [2],
+    [Command to use after installation of a shared archive])
+_LT_DECL([], [postuninstall_cmds], [2],
+    [Command to use after uninstallation of a shared archive])
+_LT_DECL([], [finish_cmds], [2],
+    [Commands used to finish a libtool library installation in a directory])
+_LT_DECL([], [finish_eval], [1],
+    [[As "finish_cmds", except a single script fragment to be evaled but
+    not shown]])
+_LT_DECL([], [hardcode_into_libs], [0],
+    [Whether we should hardcode library paths into libraries])
+_LT_DECL([], [sys_lib_search_path_spec], [2],
+    [Compile-time system search path for libraries])
+_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2],
+    [Detected run-time system search path for libraries])
+_LT_DECL([], [configure_time_lt_sys_library_path], [2],
+    [Explicit LT_SYS_LIBRARY_PATH set during ./configure time])
+])# _LT_SYS_DYNAMIC_LINKER
+
+
+# _LT_PATH_TOOL_PREFIX(TOOL)
+# --------------------------
+# find a file program that can recognize shared library
+AC_DEFUN([_LT_PATH_TOOL_PREFIX],
+[m4_require([_LT_DECL_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] |  ?:[\\/]*])
+  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD=$MAGIC_CMD
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word.  This closes a longstanding sh security hole.
+  ac_dummy="m4_if([$2], , $PATH, [$2])"
+  for ac_dir in $ac_dummy; do
+    IFS=$lt_save_ifs
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$1"; then
+      lt_cv_path_MAGIC_CMD=$ac_dir/"$1"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS=$lt_save_ifs
+  MAGIC_CMD=$lt_save_MAGIC_CMD
+  ;;
+esac])
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+if test -n "$MAGIC_CMD"; then
+  AC_MSG_RESULT($MAGIC_CMD)
+else
+  AC_MSG_RESULT(no)
+fi
+_LT_DECL([], [MAGIC_CMD], [0],
+	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])# _LT_PATH_TOOL_PREFIX
+
+# Old name:
+AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
+
+
+# _LT_PATH_MAGIC
+# --------------
+# find a file program that can recognize a shared library
+m4_defun([_LT_PATH_MAGIC],
+[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+  else
+    MAGIC_CMD=:
+  fi
+fi
+])# _LT_PATH_MAGIC
+
+
+# LT_PATH_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([LT_PATH_LD],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
+
+AC_ARG_WITH([gnu-ld],
+    [AS_HELP_STRING([--with-gnu-ld],
+	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
+    [test no = "$withval" || with_gnu_ld=yes],
+    [with_gnu_ld=no])dnl
+
+ac_prog=ld
+if test yes = "$GCC"; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by $CC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return, which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]]* | ?:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD=$ac_prog
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test yes = "$with_gnu_ld"; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS=$lt_save_ifs
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD=$ac_dir/$ac_prog
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test no != "$with_gnu_ld" && break
+	;;
+      *)
+	test yes != "$with_gnu_ld" && break
+	;;
+      esac
+    fi
+  done
+  IFS=$lt_save_ifs
+else
+  lt_cv_path_LD=$LD # Let the user override the test with a path.
+fi])
+LD=$lt_cv_path_LD
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])# LT_PATH_LD
+
+# Old names:
+AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
+AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_LD], [])
+dnl AC_DEFUN([AC_PROG_LD], [])
+
+
+# _LT_PATH_LD_GNU
+#- --------------
+m4_defun([_LT_PATH_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# _LT_PATH_LD_GNU
+
+
+# _LT_CMD_RELOAD
+# --------------
+# find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+m4_defun([_LT_CMD_RELOAD],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+  lt_cv_ld_reload_flag,
+  [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test yes != "$GCC"; then
+      reload_cmds=false
+    fi
+    ;;
+  darwin*)
+    if test yes = "$GCC"; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_TAGDECL([], [reload_cmds], [2])dnl
+])# _LT_CMD_RELOAD
+
+
+# _LT_PATH_DD
+# -----------
+# find a working dd
+m4_defun([_LT_PATH_DD],
+[AC_CACHE_CHECK([for a working dd], [ac_cv_path_lt_DD],
+[printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+: ${lt_DD:=$DD}
+AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd],
+[if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
+  cmp -s conftest.i conftest.out \
+  && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=:
+fi])
+rm -f conftest.i conftest2.i conftest.out])
+])# _LT_PATH_DD
+
+
+# _LT_CMD_TRUNCATE
+# ----------------
+# find command to truncate a binary pipe
+m4_defun([_LT_CMD_TRUNCATE],
+[m4_require([_LT_PATH_DD])
+AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin],
+[printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+lt_cv_truncate_bin=
+if "$ac_cv_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
+  cmp -s conftest.i conftest.out \
+  && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1"
+fi
+rm -f conftest.i conftest2.i conftest.out
+test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"])
+_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1],
+  [Command to truncate a binary pipe])
+])# _LT_CMD_TRUNCATE
+
+
+# _LT_CHECK_MAGIC_METHOD
+# ----------------------
+# how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_MAGIC_METHOD],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+AC_CACHE_CHECK([how to recognize dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# 'unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# that responds to the $file_magic_cmd with a given extended regex.
+# If you have 'file' or equivalent on your system and you're not sure
+# whether 'pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[[4-9]]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[[45]]*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  if ( file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    # Keep this pattern in sync with the one in func_win32_libid.
+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+cegcc*)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix[[3-9]]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd* | netbsdelf*-gnu)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+openbsd* | bitrig*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+os2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+])
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+  case $host_os in
+  mingw* | pw32*)
+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+      want_nocaseglob=yes
+    else
+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
+    fi
+    ;;
+  esac
+fi
+
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+_LT_DECL([], [deplibs_check_method], [1],
+    [Method to check whether dependent libraries are shared objects])
+_LT_DECL([], [file_magic_cmd], [1],
+    [Command to use when deplibs_check_method = "file_magic"])
+_LT_DECL([], [file_magic_glob], [1],
+    [How to find potential files when deplibs_check_method = "file_magic"])
+_LT_DECL([], [want_nocaseglob], [1],
+    [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
+])# _LT_CHECK_MAGIC_METHOD
+
+
+# LT_PATH_NM
+# ----------
+# find the pathname to a BSD- or MS-compatible name lister
+AC_DEFUN([LT_PATH_NM],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM=$NM
+else
+  lt_nm_to_check=${ac_tool_prefix}nm
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS=$lt_save_ifs
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm=$ac_dir/$lt_tmp_nm
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the 'sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	# MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
+	case $build_os in
+	mingw*) lt_bad_file=conftest.nm/nofile ;;
+	*) lt_bad_file=/dev/null ;;
+	esac
+	case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
+	*$lt_bad_file* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
+	  break 2
+	  ;;
+	*)
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break 2
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
+	  ;;
+	esac
+      fi
+    done
+    IFS=$lt_save_ifs
+  done
+  : ${lt_cv_path_NM=no}
+fi])
+if test no != "$lt_cv_path_NM"; then
+  NM=$lt_cv_path_NM
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
+    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols -headers"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+  AC_SUBST([DUMPBIN])
+  if test : != "$DUMPBIN"; then
+    NM=$DUMPBIN
+  fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+  [lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
+  cat conftest.out >&AS_MESSAGE_LOG_FD
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*])
+])# LT_PATH_NM
+
+# Old names:
+AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
+AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_NM], [])
+dnl AC_DEFUN([AC_PROG_NM], [])
+
+# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+# --------------------------------
+# how to determine the name of the shared library
+# associated with a specific link library.
+#  -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+m4_require([_LT_DECL_DLLTOOL])
+AC_CACHE_CHECK([how to associate runtime and link libraries],
+lt_cv_sharedlib_from_linklib_cmd,
+[lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+  # two different shell functions defined in ltmain.sh;
+  # decide which one to use based on capabilities of $DLLTOOL
+  case `$DLLTOOL --help 2>&1` in
+  *--identify-strict*)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+    ;;
+  *)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+    ;;
+  esac
+  ;;
+*)
+  # fallback: assume linklib IS sharedlib
+  lt_cv_sharedlib_from_linklib_cmd=$ECHO
+  ;;
+esac
+])
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
+    [Command to associate shared and link libraries])
+])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+
+
+# _LT_PATH_MANIFEST_TOOL
+# ----------------------
+# locate the manifest tool
+m4_defun([_LT_PATH_MANIFEST_TOOL],
+[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
+  [lt_cv_path_mainfest_tool=no
+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+    lt_cv_path_mainfest_tool=yes
+  fi
+  rm -f conftest*])
+if test yes != "$lt_cv_path_mainfest_tool"; then
+  MANIFEST_TOOL=:
+fi
+_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
+])# _LT_PATH_MANIFEST_TOOL
+
+
+# _LT_DLL_DEF_P([FILE])
+# ---------------------
+# True iff FILE is a Windows DLL '.def' file.
+# Keep in sync with func_dll_def_p in the libtool script
+AC_DEFUN([_LT_DLL_DEF_P],
+[dnl
+  test DEF = "`$SED -n dnl
+    -e '\''s/^[[	 ]]*//'\'' dnl Strip leading whitespace
+    -e '\''/^\(;.*\)*$/d'\'' dnl      Delete empty lines and comments
+    -e '\''s/^\(EXPORTS\|LIBRARY\)\([[	 ]].*\)*$/DEF/p'\'' dnl
+    -e q dnl                          Only consider the first "real" line
+    $1`" dnl
+])# _LT_DLL_DEF_P
+
+
+# LT_LIB_M
+# --------
+# check for math library
+AC_DEFUN([LT_LIB_M],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
+  # These system don't have libm, or don't need it
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw)
+  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, cos, LIBM=-lm)
+  ;;
+esac
+AC_SUBST([LIBM])
+])# LT_LIB_M
+
+# Old name:
+AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_CHECK_LIBM], [])
+
+
+# _LT_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------
+m4_defun([_LT_COMPILER_NO_RTTI],
+[m4_require([_LT_TAG_COMPILER])dnl
+
+_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test yes = "$GCC"; then
+  case $cc_basename in
+  nvcc*)
+    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
+  *)
+    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
+  esac
+
+  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+    lt_cv_prog_compiler_rtti_exceptions,
+    [-fno-rtti -fno-exceptions], [],
+    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
+	[Compiler flag to turn off builtin functions])
+])# _LT_COMPILER_NO_RTTI
+
+
+# _LT_CMD_GLOBAL_SYMBOLS
+# ----------------------
+m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[[BCDT]]'
+  ;;
+cygwin* | mingw* | pw32* | cegcc*)
+  symcode='[[ABCDGISTW]]'
+  ;;
+hpux*)
+  if test ia64 = "$host_cpu"; then
+    symcode='[[ABCDEGRST]]'
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[[BCDEGRST]]'
+  ;;
+osf*)
+  symcode='[[BCDEGQRST]]'
+  ;;
+solaris*)
+  symcode='[[BDRT]]'
+  ;;
+sco3.2v5*)
+  symcode='[[DT]]'
+  ;;
+sysv4.2uw2*)
+  symcode='[[DT]]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[[ABDT]]'
+  ;;
+sysv4)
+  symcode='[[DFNSTU]]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  # Gets list of data symbols to import.
+  lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
+  # Adjust the below global symbol transforms to fixup imported variables.
+  lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
+  lt_c_name_hook=" -e 's/^I .* \(.*\)$/  {\"\1\", (void *) 0},/p'"
+  lt_c_name_lib_hook="\
+  -e 's/^I .* \(lib.*\)$/  {\"\1\", (void *) 0},/p'\
+  -e 's/^I .* \(.*\)$/  {\"lib\1\", (void *) 0},/p'"
+else
+  # Disable hooks by default.
+  lt_cv_sys_global_symbol_to_import=
+  lt_cdecl_hook=
+  lt_c_name_hook=
+  lt_c_name_lib_hook=
+fi
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n"\
+$lt_cdecl_hook\
+" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
+$lt_c_name_hook\
+" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/p'"
+
+# Transform an extracted symbol line into symbol name with lib prefix and
+# symbol address.
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
+$lt_c_name_lib_hook\
+" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(lib.*\)$/  {\"\1\", (void *) \&\1},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"lib\1\", (void *) \&\1},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function,
+    # D for any global variable and I for any imported variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK ['"\
+"     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
+"     /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
+"     /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
+"     {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
+"     s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx]"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT@&t at _DLSYM_CONST
+#elif defined __osf__
+/* This system does not cope well with relocations in const data.  */
+# define LT@&t at _DLSYM_CONST
+#else
+# define LT@&t at _DLSYM_CONST const
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+	  cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols.  */
+LT@&t at _DLSYM_CONST struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[[]] =
+{
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+	  $SED "s/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+	  cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_globsym_save_LIBS=$LIBS
+	  lt_globsym_save_CFLAGS=$CFLAGS
+	  LIBS=conftstm.$ac_objext
+	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+	  if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then
+	    pipe_works=yes
+	  fi
+	  LIBS=$lt_globsym_save_LIBS
+	  CFLAGS=$lt_globsym_save_CFLAGS
+	else
+	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+    fi
+  else
+    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test yes = "$pipe_works"; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  AC_MSG_RESULT(failed)
+else
+  AC_MSG_RESULT(ok)
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
+  nm_file_list_spec='@'
+fi
+
+_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
+    [Take the output of nm and produce a listing of raw symbols and C names])
+_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
+    [Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1],
+    [Transform the output of nm into a list of symbols to manually relocate])
+_LT_DECL([global_symbol_to_c_name_address],
+    [lt_cv_sys_global_symbol_to_c_name_address], [1],
+    [Transform the output of nm in a C name address pair])
+_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
+    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
+    [Transform the output of nm in a C name address pair when lib prefix is needed])
+_LT_DECL([nm_interface], [lt_cv_nm_interface], [1],
+    [The name lister interface])
+_LT_DECL([], [nm_file_list_spec], [1],
+    [Specify filename containing input files for $NM])
+]) # _LT_CMD_GLOBAL_SYMBOLS
+
+
+# _LT_COMPILER_PIC([TAGNAME])
+# ---------------------------
+m4_defun([_LT_COMPILER_PIC],
+[m4_require([_LT_TAG_COMPILER])dnl
+_LT_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_TAGVAR(lt_prog_compiler_static, $1)=
+
+m4_if([$1], [CXX], [
+  # C++ specific cases for pic, static, wl, etc.
+  if test yes = "$GXX"; then
+    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test ia64 = "$host_cpu"; then
+	# AIX 5 now supports IA64 processor
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the '-m68020' flag to GCC prevents building anything better,
+            # like '-m68040'.
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | cygwin* | os2* | pw32* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      case $host_os in
+      os2*)
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
+	;;
+      esac
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+      ;;
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)=
+      ;;
+    interix[[3-9]]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	;;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+    *qnx* | *nto*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+    *)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix[[4-9]]*)
+	# All AIX code is PIC.
+	if test ia64 = "$host_cpu"; then
+	  # AIX 5 now supports IA64 processor
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	else
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+      mingw* | cygwin* | os2* | pw32* | cegcc*)
+	# This hack is so that the source file can tell whether it is being
+	# built for inclusion in a dll (and should export symbols for example).
+	m4_if([$1], [GCJ], [],
+	  [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+	;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  ghcx*)
+	    # Green Hills C++ Compiler
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
+	    if test ia64 != "$host_cpu"; then
+	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
+	    case $host_cpu in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      interix*)
+	# This is c89, which is MS Visual C++ (no shared libs)
+	# Anyone wants to do a port?
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+	case $cc_basename in
+	  KCC*)
+	    # KAI C++ Compiler
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	    ;;
+	  ecpc* )
+	    # old Intel C++ for x86_64, which still supported -KPIC.
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	    ;;
+	  icpc* )
+	    # Intel C++, used to be incompatible with GCC.
+	    # ICC 10 doesn't accept -KPIC any more.
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	    ;;
+	  pgCC* | pgcpp*)
+	    # Portland Group C++ compiler
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	  cxx*)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
+	    # IBM XL 8.0, 9.0 on PPC and BlueGene
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd* | netbsdelf*-gnu)
+	;;
+      *qnx* | *nto*)
+        # QNX uses GNU C++, but need to define -shared option too, otherwise
+        # it will coredump.
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+        ;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC* | sunCC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+	case $cc_basename in
+	  CC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      vxworks*)
+	;;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+	;;
+    esac
+  fi
+],
+[
+  if test yes = "$GCC"; then
+    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test ia64 = "$host_cpu"; then
+	# AIX 5 now supports IA64 processor
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the '-m68020' flag to GCC prevents building anything better,
+            # like '-m68040'.
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      case $host_os in
+      os2*)
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
+	;;
+      esac
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)=
+      ;;
+
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	# +Z the default
+	;;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+
+    interix[[3-9]]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
+      if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
+      fi
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      if test ia64 = "$host_cpu"; then
+	# AIX 5 now supports IA64 processor
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      else
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      case $cc_basename in
+      nagfor*)
+        # NAG Fortran compiler
+        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+        _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+        ;;
+      esac
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      m4_if([$1], [GCJ], [],
+	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      case $host_os in
+      os2*)
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
+	;;
+      esac
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC (with -KPIC) is the default.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+      case $cc_basename in
+      # old Intel for x86_64, which still supported -KPIC.
+      ecc*)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
+	;;
+      nagfor*)
+	# NAG Fortran compiler
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	;;
+      tcc*)
+	# Fabrice Bellard et al's Tiny C Compiler
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+        ;;
+      ccc*)
+        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+        # All Alpha code is PIC.
+        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+        ;;
+      xl* | bgxl* | bgf* | mpixl*)
+	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+	;;
+      *)
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	  ;;
+	*Sun\ C*)
+	  # Sun C 5.9
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	  ;;
+        *Intel*\ [[CF]]*Compiler*)
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	  ;;
+	*Portland\ Group*)
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  ;;
+	esac
+	;;
+      esac
+      ;;
+
+    newsos6)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # All OSF/1 code is PIC.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    rdos*)
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    solaris*)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    unicos*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+
+    uts4*)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *)
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+    esac
+  fi
+])
+case $host_os in
+  # For platforms that do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+    ;;
+  *)
+    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t at m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
+    ;;
+esac
+
+AC_CACHE_CHECK([for $compiler option to produce PIC],
+  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
+  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
+    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
+    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t at m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
+    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
+     "" | " "*) ;;
+     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+     esac],
+    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
+	[Additional compiler flags for building library objects])
+
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+	[How to pass a linker flag through the compiler])
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
+_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
+  $lt_tmp_static_flag,
+  [],
+  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
+_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
+	[Compiler flag to prevent dynamic linking])
+])# _LT_COMPILER_PIC
+
+
+# _LT_LINKER_SHLIBS([TAGNAME])
+# ----------------------------
+# See if the linker supports building shared libraries.
+m4_defun([_LT_LINKER_SHLIBS],
+[AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+m4_if([$1], [CXX], [
+  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+  case $host_os in
+  aix[[4-9]]*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to GNU nm, but means don't demangle to AIX nm.
+    # Without the "-l" option, or with the "-B" option, AIX nm treats
+    # weak defined symbols like other global defined symbols, whereas
+    # GNU nm marks them as "W".
+    # While the 'weak' keyword is ignored in the Export File, we need
+    # it in the Import File for the 'aix-soname' feature, so we have
+    # to replace the "-B" option with "-P" for AIX nm.
+    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
+    else
+      _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds
+    ;;
+  cygwin* | mingw* | cegcc*)
+    case $cc_basename in
+    cl*)
+      _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+      ;;
+    *)
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+      ;;
+    esac
+    ;;
+  linux* | k*bsd*-gnu | gnu*)
+    _LT_TAGVAR(link_all_deplibs, $1)=no
+    ;;
+  *)
+    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+    ;;
+  esac
+], [
+  runpath_var=
+  _LT_TAGVAR(allow_undefined_flag, $1)=
+  _LT_TAGVAR(always_export_symbols, $1)=no
+  _LT_TAGVAR(archive_cmds, $1)=
+  _LT_TAGVAR(archive_expsym_cmds, $1)=
+  _LT_TAGVAR(compiler_needs_object, $1)=no
+  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  _LT_TAGVAR(hardcode_automatic, $1)=no
+  _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+  _LT_TAGVAR(hardcode_libdir_separator, $1)=
+  _LT_TAGVAR(hardcode_minus_L, $1)=no
+  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  _LT_TAGVAR(inherit_rpath, $1)=no
+  _LT_TAGVAR(link_all_deplibs, $1)=unknown
+  _LT_TAGVAR(module_cmds, $1)=
+  _LT_TAGVAR(module_expsym_cmds, $1)=
+  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
+  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+  _LT_TAGVAR(thread_safe_flag_spec, $1)=
+  _LT_TAGVAR(whole_archive_flag_spec, $1)=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  _LT_TAGVAR(include_expsyms, $1)=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ' (' and ')$', so one must not match beginning or
+  # end of line.  Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
+  # as well as any symbol that contains 'd'.
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test yes != "$GCC"; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd* | bitrig*)
+    with_gnu_ld=no
+    ;;
+  linux* | k*bsd*-gnu | gnu*)
+    _LT_TAGVAR(link_all_deplibs, $1)=no
+    ;;
+  esac
+
+  _LT_TAGVAR(ld_shlibs, $1)=yes
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
+  if test yes = "$with_gnu_ld"; then
+    case $host_os in
+      aix*)
+	# The AIX port of GNU ld has always aspired to compatibility
+	# with the native linker.  However, as the warning in the GNU ld
+	# block says, versions before 2.19.5* couldn't really create working
+	# shared libraries, regardless of the interface used.
+	case `$LD -v 2>&1` in
+	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+	  *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
+	  *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
+	  *)
+	    lt_use_gnu_ld_interface=yes
+	    ;;
+	esac
+	;;
+      *)
+	lt_use_gnu_ld_interface=yes
+	;;
+    esac
+  fi
+
+  if test yes = "$lt_use_gnu_ld_interface"; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='$wl'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+    else
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
+      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[[3-9]]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test ia64 != "$host_cpu"; then
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_expsym_cmds, $1)=''
+        ;;
+      m68k)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+      # as there is no search path for DLLs.
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols'
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(always_export_symbols, $1)=no
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file, use it as
+	# is; otherwise, prepend EXPORTS...
+	_LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+          cp $export_symbols $output_objdir/$soname.def;
+        else
+          echo EXPORTS > $output_objdir/$soname.def;
+          cat $export_symbols >> $output_objdir/$soname.def;
+        fi~
+        $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    haiku*)
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    os2*)
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      shrext_cmds=.dll
+      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	prefix_cmds="$SED"~
+	if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	  prefix_cmds="$prefix_cmds -e 1d";
+	fi~
+	prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      ;;
+
+    interix[[3-9]]*)
+      _LT_TAGVAR(hardcode_direct, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      tmp_diet=no
+      if test linux-dietlibc = "$host_os"; then
+	case $cc_basename in
+	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
+	esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+	 && test no = "$tmp_diet"
+      then
+	tmp_addflag=' $pic_flag'
+	tmp_sharedflag='-shared'
+	case $cc_basename,$host_cpu in
+        pgcc*)				# Portland Group C compiler
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95* | pgfortran*)
+					# Portland Group f77 and f90 compilers
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	lf95*)				# Lahey Fortran 8.1
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
+	  tmp_sharedflag='--shared' ;;
+        nagfor*)                        # NAGFOR 5.3
+          tmp_sharedflag='-Wl,-shared' ;;
+	xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+	  tmp_sharedflag='-qmkshrobj'
+	  tmp_addflag= ;;
+	nvcc*)	# Cuda Compiler Driver 2.2
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	  _LT_TAGVAR(compiler_needs_object, $1)=yes
+	  ;;
+	esac
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)			# Sun C 5.9
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	  _LT_TAGVAR(compiler_needs_object, $1)=yes
+	  tmp_sharedflag='-G' ;;
+	*Sun\ F*)			# Sun Fortran 8.3
+	  tmp_sharedflag='-G' ;;
+	esac
+	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+
+        if test yes = "$supports_anon_versioning"; then
+          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+            cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+            echo "local: *; };" >> $output_objdir/$libname.ver~
+            $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
+        fi
+
+	case $cc_basename in
+	tcc*)
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic'
+	  ;;
+	xlf* | bgf* | bgxlf* | mpixlf*)
+	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+	  if test yes = "$supports_anon_versioning"; then
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+              cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+              echo "local: *; };" >> $output_objdir/$libname.ver~
+              $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+	  fi
+	  ;;
+	esac
+      else
+        _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  # For security reasons, it is highly recommended that you always
+	  # use absolute paths for naming shared libraries, and exclude the
+	  # DT_RUNPATH tag from executables and libraries.  But doing so
+	  # requires that you compile everything twice, which is a pain.
+	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+	  else
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+
+    if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then
+      runpath_var=
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(always_export_symbols, $1)=yes
+      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	_LT_TAGVAR(hardcode_direct, $1)=unsupported
+      fi
+      ;;
+
+    aix[[4-9]]*)
+      if test ia64 = "$host_cpu"; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to GNU nm, but means don't demangle to AIX nm.
+	# Without the "-l" option, or with the "-B" option, AIX nm treats
+	# weak defined symbols like other global defined symbols, whereas
+	# GNU nm marks them as "W".
+	# While the 'weak' keyword is ignored in the Export File, we need
+	# it in the Import File for the 'aix-soname' feature, so we have
+	# to replace the "-B" option with "-P" for AIX nm.
+	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
+	else
+	  _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# have runtime linking enabled, and use it for executables.
+	# For shared libraries, we enable/disable runtime linking
+	# depending on the kind of the shared library created -
+	# when "with_aix_soname,aix_use_runtimelinking" is:
+	# "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
+	# "aix,yes"  lib.so          shared, rtl:yes, for executables
+	#            lib.a           static archive
+	# "both,no"  lib.so.V(shr.o) shared, rtl:yes
+	#            lib.a(lib.so.V) shared, rtl:no,  for executables
+	# "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
+	#            lib.a(lib.so.V) shared, rtl:no
+	# "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
+	#            lib.a           static archive
+	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+	  for ld_flag in $LDFLAGS; do
+	  if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
+	    aix_use_runtimelinking=yes
+	    break
+	  fi
+	  done
+	  if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
+	    # With aix-soname=svr4, we create the lib.so.V shared archives only,
+	    # so we don't have lib.a shared libs to link our executables.
+	    # We have to force runtime linking in this case.
+	    aix_use_runtimelinking=yes
+	    LDFLAGS="$LDFLAGS -Wl,-brtl"
+	  fi
+	  ;;
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      _LT_TAGVAR(archive_cmds, $1)=''
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_TAGVAR(file_list_spec, $1)='$wl-f,'
+      case $with_aix_soname,$aix_use_runtimelinking in
+      aix,*) ;; # traditional, no import file
+      svr4,* | *,yes) # use import file
+	# The Import File defines what to hardcode.
+	_LT_TAGVAR(hardcode_direct, $1)=no
+	_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+	;;
+      esac
+
+      if test yes = "$GCC"; then
+	case $host_os in aix4.[[012]]|aix4.[[012]].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`$CC -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	  # We have reworked collect2
+	  :
+	  else
+	  # We have old collect2
+	  _LT_TAGVAR(hardcode_direct, $1)=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	  _LT_TAGVAR(hardcode_libdir_separator, $1)=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test yes = "$aix_use_runtimelinking"; then
+	  shared_flag="$shared_flag "'$wl-G'
+	fi
+	# Need to ensure runtime linking is disabled for the traditional
+	# shared library, or the linker may eventually find shared libraries
+	# /with/ Import File - we do not want to mix them.
+	shared_flag_aix='-shared'
+	shared_flag_svr4='-shared $wl-G'
+      else
+	# not using gcc
+	if test ia64 = "$host_cpu"; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test yes = "$aix_use_runtimelinking"; then
+	    shared_flag='$wl-G'
+	  else
+	    shared_flag='$wl-bM:SRE'
+	  fi
+	  shared_flag_aix='$wl-bM:SRE'
+	  shared_flag_svr4='$wl-G'
+	fi
+      fi
+
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      _LT_TAGVAR(always_export_symbols, $1)=yes
+      if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        _LT_SYS_MODULE_PATH_AIX([$1])
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
+      else
+	if test ia64 = "$host_cpu"; then
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib'
+	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an
+	 # empty executable.
+	 _LT_SYS_MODULE_PATH_AIX([$1])
+	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok'
+	  _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok'
+	  if test yes = "$with_gnu_ld"; then
+	    # We only use this code for GNU lds that support --whole-archive.
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
+	  else
+	    # Exported symbols can be pulled into shared objects from archives
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	  fi
+	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
+	  # -brtl affects multiple linker settings, -berok does not and is overridden later
+	  compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`'
+	  if test svr4 != "$with_aix_soname"; then
+	    # This is similar to how AIX traditionally builds its shared libraries.
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
+	  fi
+	  if test aix != "$with_aix_soname"; then
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 3 [...]
+	  else
+	    # used by -dlpreopen to get the symbols
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
+	  fi
+	  _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_expsym_cmds, $1)=''
+        ;;
+      m68k)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[[45]]*)
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      case $cc_basename in
+      cl*)
+	# Native MSVC
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	_LT_TAGVAR(always_export_symbols, $1)=yes
+	_LT_TAGVAR(file_list_spec, $1)='@'
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=.dll
+	# FIXME: Setting linknames here is a bad hack.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+	_LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+            cp "$export_symbols" "$output_objdir/$soname.def";
+            echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+          else
+            $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+          fi~
+          $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+          linknames='
+	# The linker will not automatically build a static lib if we build a DLL.
+	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+	_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+	# Don't use ranlib
+	_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+	_LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+          lt_tool_outputfile="@TOOL_OUTPUT@"~
+          case $lt_outputfile in
+            *.exe|*.EXE) ;;
+            *)
+              lt_outputfile=$lt_outputfile.exe
+              lt_tool_outputfile=$lt_tool_outputfile.exe
+              ;;
+          esac~
+          if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+            $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+            $RM "$lt_outputfile.manifest";
+          fi'
+	;;
+      *)
+	# Assume MSVC wrapper
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=.dll
+	# FIXME: Setting linknames here is a bad hack.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+	# The linker will automatically build a .lib file if we build a DLL.
+	_LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+	# FIXME: Should let the user specify the lib program.
+	_LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	;;
+      esac
+      ;;
+
+    darwin* | rhapsody*)
+      _LT_DARWIN_LINKER_FEATURES($1)
+      ;;
+
+    dgux*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2.*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    hpux9*)
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+      ;;
+
+    hpux10*)
+      if test yes,no = "$GCC,$with_gnu_ld"; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test no = "$with_gnu_ld"; then
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
+	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
+	_LT_TAGVAR(hardcode_direct, $1)=yes
+	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	_LT_TAGVAR(hardcode_minus_L, $1)=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test yes,no = "$GCC,$with_gnu_ld"; then
+	case $host_cpu in
+	hppa*64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case $host_cpu in
+	hppa*64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	m4_if($1, [], [
+	  # Older versions of the 11.00 compiler do not understand -b yet
+	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+	  _LT_LINKER_OPTION([if $CC understands -b],
+	    _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
+	    [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
+	    [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
+	  [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
+	  ;;
+	esac
+      fi
+      if test no = "$with_gnu_ld"; then
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
+	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  _LT_TAGVAR(hardcode_direct, $1)=no
+	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	  ;;
+	*)
+	  _LT_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+	# Try to use the -exported_symbol ld option, if it does not
+	# work, assume that -exports_file does not work either and
+	# implicitly export all symbols.
+	# This should be the same for all languages, so no per-tag cache variable.
+	AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
+	  [lt_cv_irix_exported_symbol],
+	  [save_LDFLAGS=$LDFLAGS
+	   LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
+	   AC_LINK_IFELSE(
+	     [AC_LANG_SOURCE(
+	        [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
+			      [C++], [[int foo (void) { return 0; }]],
+			      [Fortran 77], [[
+      subroutine foo
+      end]],
+			      [Fortran], [[
+      subroutine foo
+      end]])])],
+	      [lt_cv_irix_exported_symbol=yes],
+	      [lt_cv_irix_exported_symbol=no])
+           LDFLAGS=$save_LDFLAGS])
+	if test yes = "$lt_cv_irix_exported_symbol"; then
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
+	fi
+	_LT_TAGVAR(link_all_deplibs, $1)=no
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(inherit_rpath, $1)=yes
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    linux*)
+      case $cc_basename in
+      tcc*)
+	# Fabrice Bellard et al's Tiny C Compiler
+	_LT_TAGVAR(ld_shlibs, $1)=yes
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      esac
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    newsos6)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd* | bitrig*)
+      if test -f /usr/libexec/ld.so; then
+	_LT_TAGVAR(hardcode_direct, $1)=yes
+	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+	else
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	fi
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    os2*)
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      shrext_cmds=.dll
+      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	prefix_cmds="$SED"~
+	if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	  prefix_cmds="$prefix_cmds -e 1d";
+	fi~
+	prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      ;;
+
+    osf3*)
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+      else
+	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+      else
+	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+          $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    solaris*)
+      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
+      if test yes = "$GCC"; then
+	wlarc='$wl'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+          $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+	case `$CC -V 2>&1` in
+	*"Compilers 5.0"*)
+	  wlarc=''
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+            $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+	  ;;
+	*)
+	  wlarc='$wl'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+            $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+	  ;;
+	esac
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      case $host_os in
+      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+      *)
+	# The compiler driver will combine and reorder linker options,
+	# but understands '-z linker_flag'.  GCC discards it without '$wl',
+	# but is careful enough not to reorder.
+	# Supported since Solaris 2.6 (maybe 2.5.1?)
+	if test yes = "$GCC"; then
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
+	else
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+	fi
+	;;
+      esac
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    sunos4*)
+      if test sequent = "$host_vendor"; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+	  _LT_TAGVAR(hardcode_direct, $1)=no
+        ;;
+	motorola)
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4.3*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	_LT_TAGVAR(ld_shlibs, $1)=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+      _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We CANNOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+      _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      _LT_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    esac
+
+    if test sni = "$host_vendor"; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym'
+	;;
+      esac
+    fi
+  fi
+])
+AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no
+
+_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
+
+_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
+_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
+_LT_DECL([], [extract_expsyms_cmds], [2],
+    [The commands to extract the exported symbol list from a shared archive])
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+  # Assume -lc should be added
+  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+  if test yes,yes = "$GCC,$enable_shared"; then
+    case $_LT_TAGVAR(archive_cmds, $1) in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      AC_CACHE_CHECK([whether -lc should be explicitly linked in],
+	[lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
+	[$RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+	if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
+	  pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+	  _LT_TAGVAR(allow_undefined_flag, $1)=
+	  if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+	  then
+	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+	  else
+	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+	  fi
+	  _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+	])
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
+    [Whether or not to add -lc for building shared libraries])
+_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
+    [enable_shared_with_static_runtimes], [0],
+    [Whether or not to disallow shared libs when runtime libs are static])
+_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
+    [Compiler flag to allow reflexive dlopens])
+_LT_TAGDECL([], [whole_archive_flag_spec], [1],
+    [Compiler flag to generate shared objects directly from archives])
+_LT_TAGDECL([], [compiler_needs_object], [1],
+    [Whether the compiler copes with passing no objects directly])
+_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
+    [Create an old-style archive from a shared archive])
+_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
+    [Create a temporary old-style archive to link instead of a shared archive])
+_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
+_LT_TAGDECL([], [archive_expsym_cmds], [2])
+_LT_TAGDECL([], [module_cmds], [2],
+    [Commands used to build a loadable module if different from building
+    a shared archive.])
+_LT_TAGDECL([], [module_expsym_cmds], [2])
+_LT_TAGDECL([], [with_gnu_ld], [1],
+    [Whether we are building with GNU ld or not])
+_LT_TAGDECL([], [allow_undefined_flag], [1],
+    [Flag that allows shared libraries with undefined symbols to be built])
+_LT_TAGDECL([], [no_undefined_flag], [1],
+    [Flag that enforces no undefined symbols])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
+    [Flag to hardcode $libdir into a binary during linking.
+    This must work even if $libdir does not exist])
+_LT_TAGDECL([], [hardcode_libdir_separator], [1],
+    [Whether we need a single "-rpath" flag with a separated argument])
+_LT_TAGDECL([], [hardcode_direct], [0],
+    [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
+    DIR into the resulting binary])
+_LT_TAGDECL([], [hardcode_direct_absolute], [0],
+    [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
+    DIR into the resulting binary and the resulting library dependency is
+    "absolute", i.e impossible to change by setting $shlibpath_var if the
+    library is relocated])
+_LT_TAGDECL([], [hardcode_minus_L], [0],
+    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+    into the resulting binary])
+_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
+    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+    into the resulting binary])
+_LT_TAGDECL([], [hardcode_automatic], [0],
+    [Set to "yes" if building a shared library automatically hardcodes DIR
+    into the library and all subsequent libraries and executables linked
+    against it])
+_LT_TAGDECL([], [inherit_rpath], [0],
+    [Set to yes if linker adds runtime paths of dependent libraries
+    to runtime path list])
+_LT_TAGDECL([], [link_all_deplibs], [0],
+    [Whether libtool must link a program against all its dependency libraries])
+_LT_TAGDECL([], [always_export_symbols], [0],
+    [Set to "yes" if exported symbols are required])
+_LT_TAGDECL([], [export_symbols_cmds], [2],
+    [The commands to list exported symbols])
+_LT_TAGDECL([], [exclude_expsyms], [1],
+    [Symbols that should not be listed in the preloaded symbols])
+_LT_TAGDECL([], [include_expsyms], [1],
+    [Symbols that must always be exported])
+_LT_TAGDECL([], [prelink_cmds], [2],
+    [Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [postlink_cmds], [2],
+    [Commands necessary for finishing linking programs])
+_LT_TAGDECL([], [file_list_spec], [1],
+    [Specify filename containing input files])
+dnl FIXME: Not yet implemented
+dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
+dnl    [Compiler flag to generate thread safe objects])
+])# _LT_LINKER_SHLIBS
+
+
+# _LT_LANG_C_CONFIG([TAG])
+# ------------------------
+# Ensure that the configuration variables for a C compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_C_CONFIG],
+[m4_require([_LT_DECL_EGREP])dnl
+lt_save_CC=$CC
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+_LT_TAG_COMPILER
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_SYS_DYNAMIC_LINKER($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+  LT_SYS_DLOPEN_SELF
+  _LT_CMD_STRIPLIB
+
+  # Report what library types will actually be built
+  AC_MSG_CHECKING([if libtool supports shared libraries])
+  AC_MSG_RESULT([$can_build_shared])
+
+  AC_MSG_CHECKING([whether to build shared libraries])
+  test no = "$can_build_shared" && enable_shared=no
+
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
+  case $host_os in
+  aix3*)
+    test yes = "$enable_shared" && enable_static=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
+    fi
+    ;;
+
+  aix[[4-9]]*)
+    if test ia64 != "$host_cpu"; then
+      case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+      yes,aix,yes) ;;			# shared object as lib.so file only
+      yes,svr4,*) ;;			# shared object as lib.so archive member only
+      yes,*) enable_static=no ;;	# shared object in lib.a archive as well
+      esac
+    fi
+    ;;
+  esac
+  AC_MSG_RESULT([$enable_shared])
+
+  AC_MSG_CHECKING([whether to build static libraries])
+  # Make sure either enable_shared or enable_static is yes.
+  test yes = "$enable_shared" || enable_static=yes
+  AC_MSG_RESULT([$enable_static])
+
+  _LT_CONFIG($1)
+fi
+AC_LANG_POP
+CC=$lt_save_CC
+])# _LT_LANG_C_CONFIG
+
+
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_CXX_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+if test -n "$CXX" && ( test no != "$CXX" &&
+    ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) ||
+    (test g++ != "$CXX"))); then
+  AC_PROG_CXXCPP
+else
+  _lt_caught_CXX_error=yes
+fi
+
+AC_LANG_PUSH(C++)
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(compiler_needs_object, $1)=no
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test yes != "$_lt_caught_CXX_error"; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="int some_variable = 0;"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC=$CC
+  lt_save_CFLAGS=$CFLAGS
+  lt_save_LD=$LD
+  lt_save_GCC=$GCC
+  GCC=$GXX
+  lt_save_with_gnu_ld=$with_gnu_ld
+  lt_save_path_LD=$lt_cv_path_LD
+  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+  else
+    $as_unset lt_cv_prog_gnu_ld
+  fi
+  if test -n "${lt_cv_path_LDCXX+set}"; then
+    lt_cv_path_LD=$lt_cv_path_LDCXX
+  else
+    $as_unset lt_cv_path_LD
+  fi
+  test -z "${LDCXX+set}" || LD=$LDCXX
+  CC=${CXX-"c++"}
+  CFLAGS=$CXXFLAGS
+  compiler=$CC
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+
+  if test -n "$compiler"; then
+    # We don't want -fno-exception when compiling C++ code, so set the
+    # no_builtin_flag separately
+    if test yes = "$GXX"; then
+      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+    else
+      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+    fi
+
+    if test yes = "$GXX"; then
+      # Set up default GNU C++ configuration
+
+      LT_PATH_LD
+
+      # Check if GNU C++ uses GNU ld as the underlying linker, since the
+      # archiving commands below assume that GNU ld is being used.
+      if test yes = "$with_gnu_ld"; then
+        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+
+        # If archive_cmds runs LD, not CC, wlarc should be empty
+        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+        #     investigate it a little bit more. (MM)
+        wlarc='$wl'
+
+        # ancient GNU ld didn't support --whole-archive et. al.
+        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+	  $GREP 'no-whole-archive' > /dev/null; then
+          _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+        else
+          _LT_TAGVAR(whole_archive_flag_spec, $1)=
+        fi
+      else
+        with_gnu_ld=no
+        wlarc=
+
+        # A generic and very simple default shared library creation
+        # command for GNU C++ for the case where it uses the native
+        # linker, instead of GNU ld.  If possible, this setting should
+        # overridden to take advantage of the native linker features on
+        # the platform it is being used on.
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+      fi
+
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+    else
+      GXX=no
+      with_gnu_ld=no
+      wlarc=
+    fi
+
+    # PORTME: fill in a description of your system's C++ link characteristics
+    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+    _LT_TAGVAR(ld_shlibs, $1)=yes
+    case $host_os in
+      aix3*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+      aix[[4-9]]*)
+        if test ia64 = "$host_cpu"; then
+          # On IA64, the linker does run time linking by default, so we don't
+          # have to do anything special.
+          aix_use_runtimelinking=no
+          exp_sym_flag='-Bexport'
+          no_entry_flag=
+        else
+          aix_use_runtimelinking=no
+
+          # Test if we are trying to use run time linking or normal
+          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+          # have runtime linking enabled, and use it for executables.
+          # For shared libraries, we enable/disable runtime linking
+          # depending on the kind of the shared library created -
+          # when "with_aix_soname,aix_use_runtimelinking" is:
+          # "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
+          # "aix,yes"  lib.so          shared, rtl:yes, for executables
+          #            lib.a           static archive
+          # "both,no"  lib.so.V(shr.o) shared, rtl:yes
+          #            lib.a(lib.so.V) shared, rtl:no,  for executables
+          # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
+          #            lib.a(lib.so.V) shared, rtl:no
+          # "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
+          #            lib.a           static archive
+          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+	    for ld_flag in $LDFLAGS; do
+	      case $ld_flag in
+	      *-brtl*)
+	        aix_use_runtimelinking=yes
+	        break
+	        ;;
+	      esac
+	    done
+	    if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
+	      # With aix-soname=svr4, we create the lib.so.V shared archives only,
+	      # so we don't have lib.a shared libs to link our executables.
+	      # We have to force runtime linking in this case.
+	      aix_use_runtimelinking=yes
+	      LDFLAGS="$LDFLAGS -Wl,-brtl"
+	    fi
+	    ;;
+          esac
+
+          exp_sym_flag='-bexport'
+          no_entry_flag='-bnoentry'
+        fi
+
+        # When large executables or shared objects are built, AIX ld can
+        # have problems creating the table of contents.  If linking a library
+        # or program results in "error TOC overflow" add -mminimal-toc to
+        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+        _LT_TAGVAR(archive_cmds, $1)=''
+        _LT_TAGVAR(hardcode_direct, $1)=yes
+        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+        _LT_TAGVAR(link_all_deplibs, $1)=yes
+        _LT_TAGVAR(file_list_spec, $1)='$wl-f,'
+        case $with_aix_soname,$aix_use_runtimelinking in
+        aix,*) ;;	# no import file
+        svr4,* | *,yes) # use import file
+          # The Import File defines what to hardcode.
+          _LT_TAGVAR(hardcode_direct, $1)=no
+          _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+          ;;
+        esac
+
+        if test yes = "$GXX"; then
+          case $host_os in aix4.[[012]]|aix4.[[012]].*)
+          # We only want to do this on AIX 4.2 and lower, the check
+          # below for broken collect2 doesn't work under 4.3+
+	  collect2name=`$CC -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	    # We have reworked collect2
+	    :
+	  else
+	    # We have old collect2
+	    _LT_TAGVAR(hardcode_direct, $1)=unsupported
+	    # It fails to find uninstalled libraries when the uninstalled
+	    # path is not listed in the libpath.  Setting hardcode_minus_L
+	    # to unsupported forces relinking
+	    _LT_TAGVAR(hardcode_minus_L, $1)=yes
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	    _LT_TAGVAR(hardcode_libdir_separator, $1)=
+	  fi
+          esac
+          shared_flag='-shared'
+	  if test yes = "$aix_use_runtimelinking"; then
+	    shared_flag=$shared_flag' $wl-G'
+	  fi
+	  # Need to ensure runtime linking is disabled for the traditional
+	  # shared library, or the linker may eventually find shared libraries
+	  # /with/ Import File - we do not want to mix them.
+	  shared_flag_aix='-shared'
+	  shared_flag_svr4='-shared $wl-G'
+        else
+          # not using gcc
+          if test ia64 = "$host_cpu"; then
+	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	  # chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+          else
+	    if test yes = "$aix_use_runtimelinking"; then
+	      shared_flag='$wl-G'
+	    else
+	      shared_flag='$wl-bM:SRE'
+	    fi
+	    shared_flag_aix='$wl-bM:SRE'
+	    shared_flag_svr4='$wl-G'
+          fi
+        fi
+
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall'
+        # It seems that -bexpall does not export symbols beginning with
+        # underscore (_), so it is better to generate a list of symbols to
+	# export.
+        _LT_TAGVAR(always_export_symbols, $1)=yes
+	if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
+          # Warning - without using the other runtime loading flags (-brtl),
+          # -berok will link without error, but may produce a broken library.
+          # The "-G" linker flag allows undefined symbols.
+          _LT_TAGVAR(no_undefined_flag, $1)='-bernotok'
+          # Determine the default libpath from the value encoded in an empty
+          # executable.
+          _LT_SYS_MODULE_PATH_AIX([$1])
+          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
+
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
+        else
+          if test ia64 = "$host_cpu"; then
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib'
+	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
+          else
+	    # Determine the default libpath from the value encoded in an
+	    # empty executable.
+	    _LT_SYS_MODULE_PATH_AIX([$1])
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
+	    # Warning - without using the other run time loading flags,
+	    # -berok will link without error, but may produce a broken library.
+	    _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok'
+	    _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok'
+	    if test yes = "$with_gnu_ld"; then
+	      # We only use this code for GNU lds that support --whole-archive.
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
+	    else
+	      # Exported symbols can be pulled into shared objects from archives
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	    fi
+	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
+	    # -brtl affects multiple linker settings, -berok does not and is overridden later
+	    compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`'
+	    if test svr4 != "$with_aix_soname"; then
+	      # This is similar to how AIX traditionally builds its shared
+	      # libraries. Need -bnortl late, we may have -brtl in LDFLAGS.
+	      _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
+	    fi
+	    if test aix != "$with_aix_soname"; then
+	      _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# [...]
+	    else
+	      # used by -dlpreopen to get the symbols
+	      _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
+	    fi
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d'
+          fi
+        fi
+        ;;
+
+      beos*)
+	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	  # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	  # support --undefined.  This deserves some investigation.  FIXME
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	else
+	  _LT_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+
+      chorus*)
+        case $cc_basename in
+          *)
+	  # FIXME: insert proper C++ library support
+	  _LT_TAGVAR(ld_shlibs, $1)=no
+	  ;;
+        esac
+        ;;
+
+      cygwin* | mingw* | pw32* | cegcc*)
+	case $GXX,$cc_basename in
+	,cl* | no,cl*)
+	  # Native MSVC
+	  # hardcode_libdir_flag_spec is actually meaningless, as there is
+	  # no search path for DLLs.
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	  _LT_TAGVAR(always_export_symbols, $1)=yes
+	  _LT_TAGVAR(file_list_spec, $1)='@'
+	  # Tell ltmain to make .lib files, not .a files.
+	  libext=lib
+	  # Tell ltmain to make .dll files, not .so files.
+	  shrext_cmds=.dll
+	  # FIXME: Setting linknames here is a bad hack.
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+              cp "$export_symbols" "$output_objdir/$soname.def";
+              echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+            else
+              $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+            fi~
+            $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+            linknames='
+	  # The linker will not automatically build a static lib if we build a DLL.
+	  # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	  # Don't use ranlib
+	  _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+	  _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+            lt_tool_outputfile="@TOOL_OUTPUT@"~
+            case $lt_outputfile in
+              *.exe|*.EXE) ;;
+              *)
+                lt_outputfile=$lt_outputfile.exe
+                lt_tool_outputfile=$lt_tool_outputfile.exe
+                ;;
+            esac~
+            func_to_tool_file "$lt_outputfile"~
+            if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+              $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+              $RM "$lt_outputfile.manifest";
+            fi'
+	  ;;
+	*)
+	  # g++
+	  # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+	  # as there is no search path for DLLs.
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols'
+	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	  _LT_TAGVAR(always_export_symbols, $1)=no
+	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	    # If the export-symbols file already is a .def file, use it as
+	    # is; otherwise, prepend EXPORTS...
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+              cp $export_symbols $output_objdir/$soname.def;
+            else
+              echo EXPORTS > $output_objdir/$soname.def;
+              cat $export_symbols >> $output_objdir/$soname.def;
+            fi~
+            $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	  else
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	  fi
+	  ;;
+	esac
+	;;
+      darwin* | rhapsody*)
+        _LT_DARWIN_LINKER_FEATURES($1)
+	;;
+
+      os2*)
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	_LT_TAGVAR(hardcode_minus_L, $1)=yes
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	shrext_cmds=.dll
+	_LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	  $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	  $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	  $ECHO EXPORTS >> $output_objdir/$libname.def~
+	  emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	  $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	  emximp -o $lib $output_objdir/$libname.def'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	  $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	  $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	  $ECHO EXPORTS >> $output_objdir/$libname.def~
+	  prefix_cmds="$SED"~
+	  if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	    prefix_cmds="$prefix_cmds -e 1d";
+	  fi~
+	  prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	  cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	  $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	  emximp -o $lib $output_objdir/$libname.def'
+	_LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	;;
+
+      dgux*)
+        case $cc_basename in
+          ec++*)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          ghcx*)
+	    # Green Hills C++ Compiler
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+        esac
+        ;;
+
+      freebsd2.*)
+        # C++ shared libraries reported to be fairly broken before
+	# switch to ELF
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      freebsd-elf*)
+        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+        ;;
+
+      freebsd* | dragonfly*)
+        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+        # conventions
+        _LT_TAGVAR(ld_shlibs, $1)=yes
+        ;;
+
+      haiku*)
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+        _LT_TAGVAR(link_all_deplibs, $1)=yes
+        ;;
+
+      hpux9*)
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+        _LT_TAGVAR(hardcode_direct, $1)=yes
+        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+				             # but as the default
+				             # location of the library.
+
+        case $cc_basename in
+          CC*)
+            # FIXME: insert proper C++ library support
+            _LT_TAGVAR(ld_shlibs, $1)=no
+            ;;
+          aCC*)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+            # Commands to make compiler produce verbose output that lists
+            # what "hidden" libraries, object files and flags are used when
+            # linking a shared library.
+            #
+            # There doesn't appear to be a way to prevent this compiler from
+            # explicitly linking system object files so we need to strip them
+            # from the output so that they don't get included in the library
+            # dependencies.
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+            ;;
+          *)
+            if test yes = "$GXX"; then
+              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+            else
+              # FIXME: insert proper C++ library support
+              _LT_TAGVAR(ld_shlibs, $1)=no
+            fi
+            ;;
+        esac
+        ;;
+
+      hpux10*|hpux11*)
+        if test no = "$with_gnu_ld"; then
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
+	  _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+          case $host_cpu in
+            hppa*64*|ia64*)
+              ;;
+            *)
+	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+              ;;
+          esac
+        fi
+        case $host_cpu in
+          hppa*64*|ia64*)
+            _LT_TAGVAR(hardcode_direct, $1)=no
+            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+            ;;
+          *)
+            _LT_TAGVAR(hardcode_direct, $1)=yes
+            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+					         # but as the default
+					         # location of the library.
+            ;;
+        esac
+
+        case $cc_basename in
+          CC*)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          aCC*)
+	    case $host_cpu in
+	      hppa*64*)
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      ia64*)
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      *)
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	    esac
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    ;;
+          *)
+	    if test yes = "$GXX"; then
+	      if test no = "$with_gnu_ld"; then
+	        case $host_cpu in
+	          hppa*64*)
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          ia64*)
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          *)
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	        esac
+	      fi
+	    else
+	      # FIXME: insert proper C++ library support
+	      _LT_TAGVAR(ld_shlibs, $1)=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      interix[[3-9]]*)
+	_LT_TAGVAR(hardcode_direct, $1)=no
+	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+	# Instead, shared libraries are loaded at an image base (0x10000000 by
+	# default) and relocated if they conflict, which is a slow very memory
+	# consuming and fragmenting process.  To avoid this, we pick a random,
+	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	;;
+      irix5* | irix6*)
+        case $cc_basename in
+          CC*)
+	    # SGI C++
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    if test yes = "$GXX"; then
+	      if test no = "$with_gnu_ld"; then
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+	      else
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib'
+	      fi
+	    fi
+	    _LT_TAGVAR(link_all_deplibs, $1)=yes
+	    ;;
+        esac
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+        _LT_TAGVAR(inherit_rpath, $1)=yes
+        ;;
+
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+	    ;;
+	  icpc* | ecpc* )
+	    # Intel C++
+	    with_gnu_ld=yes
+	    # version 8.0 and above of icpc choke on multiply defined symbols
+	    # if we add $predep_objects and $postdep_objects, however 7.1 and
+	    # earlier do not add the objects themselves.
+	    case `$CC -V 2>&1` in
+	      *"Version 7."*)
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	      *)  # Version 8.0 or newer
+	        tmp_idyn=
+	        case $host_cpu in
+		  ia64*) tmp_idyn=' -i_dynamic';;
+		esac
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	    esac
+	    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
+	    ;;
+          pgCC* | pgcpp*)
+            # Portland Group C++ compiler
+	    case `$CC -V` in
+	    *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
+	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+                $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+                $RANLIB $oldlib'
+	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+	      ;;
+	    *) # Version 6 and above use weak symbols
+	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+	      ;;
+	    esac
+
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+            ;;
+	  cxx*)
+	    # Compaq C++
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname  -o $lib $wl-retain-symbols-file $wl$export_symbols'
+
+	    runpath_var=LD_RUN_PATH
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+	    ;;
+	  xl* | mpixl* | bgxl*)
+	    # IBM XL 8.0 on PPC, with GNU ld
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	    if test yes = "$supports_anon_versioning"; then
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+                cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+                echo "local: *; };" >> $output_objdir/$libname.ver~
+                $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
+	    fi
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+	      _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols'
+	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	      _LT_TAGVAR(compiler_needs_object, $1)=yes
+
+	      # Not sure whether something based on
+	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+	      # would be better.
+	      output_verbose_link_cmd='func_echo_all'
+
+	      # Archives containing C++ object files must be created using
+	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	      # necessary to make sure instantiated templates are included
+	      # in the archive.
+	      _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+
+      lynxos*)
+        # FIXME: insert proper C++ library support
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	;;
+
+      m88k*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+	;;
+
+      mvs*)
+        case $cc_basename in
+          cxx*)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+	  *)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+	esac
+	;;
+
+      netbsd*)
+        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+	  wlarc=
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	  _LT_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	fi
+	# Workaround some broken pre-1.5 toolchains
+	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+	;;
+
+      *nto* | *qnx*)
+        _LT_TAGVAR(ld_shlibs, $1)=yes
+	;;
+
+      openbsd* | bitrig*)
+	if test -f /usr/libexec/ld.so; then
+	  _LT_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+	  fi
+	  output_verbose_link_cmd=func_echo_all
+	else
+	  _LT_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+
+      osf3* | osf4* | osf5*)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	    # Archives containing C++ object files must be created using
+	    # the KAI C++ compiler.
+	    case $host in
+	      osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
+	      *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
+	    esac
+	    ;;
+          RCC*)
+	    # Rational C++ 2.4.1
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          cxx*)
+	    case $host in
+	      osf3*)
+	        _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+		;;
+	      *)
+	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+                  echo "-hidden">> $lib.exp~
+                  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~
+                  $RM $lib.exp'
+	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+		;;
+	    esac
+
+	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    ;;
+	  *)
+	    if test yes,no = "$GXX,$with_gnu_ld"; then
+	      _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+	      case $host in
+	        osf3*)
+	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+		  ;;
+	        *)
+	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+		  ;;
+	      esac
+
+	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+	      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	      # Commands to make compiler produce verbose output that lists
+	      # what "hidden" libraries, object files and flags are used when
+	      # linking a shared library.
+	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+	    else
+	      # FIXME: insert proper C++ library support
+	      _LT_TAGVAR(ld_shlibs, $1)=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      psos*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      sunos4*)
+        case $cc_basename in
+          CC*)
+	    # Sun C++ 4.x
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          lcc*)
+	    # Lucid
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+        esac
+        ;;
+
+      solaris*)
+        case $cc_basename in
+          CC* | sunCC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
+	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+              $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	    _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	    case $host_os in
+	      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+	      *)
+		# The compiler driver will combine and reorder linker options,
+		# but understands '-z linker_flag'.
+	        # Supported since Solaris 2.6 (maybe 2.5.1?)
+		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+	        ;;
+	    esac
+	    _LT_TAGVAR(link_all_deplibs, $1)=yes
+
+	    output_verbose_link_cmd='func_echo_all'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+	    ;;
+          gcx*)
+	    # Green Hills C++ Compiler
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
+
+	    # The C++ compiler must be used to create the archive.
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    # GNU C++ compiler with Solaris linker
+	    if test yes,no = "$GXX,$with_gnu_ld"; then
+	      _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs'
+	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
+	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+                  $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	      else
+	        # g++ 2.7 appears to require '-G' NOT '-shared' on this
+	        # platform.
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
+	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+                  $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	      fi
+
+	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir'
+	      case $host_os in
+		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+		*)
+		  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
+		  ;;
+	      esac
+	    fi
+	    ;;
+        esac
+        ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+      _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      case $cc_basename in
+        CC*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+      esac
+      ;;
+
+      sysv5* | sco3.2v5* | sco5v6*)
+	# Note: We CANNOT use -z defs as we might desire, because we do not
+	# link with -lc, and that would cause any symbols used from libc to
+	# always be unresolved, which means just about no library would
+	# ever link correctly.  If we're not using GNU ld we use -z text
+	# though, which does catch some bad symbols but isn't as heavy-handed
+	# as -z defs.
+	_LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+	_LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs'
+	_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir'
+	_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+	_LT_TAGVAR(link_all_deplibs, $1)=yes
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport'
+	runpath_var='LD_RUN_PATH'
+
+	case $cc_basename in
+          CC*)
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
+              '"$_LT_TAGVAR(old_archive_cmds, $1)"
+	    _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
+              '"$_LT_TAGVAR(reload_cmds, $1)"
+	    ;;
+	  *)
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    ;;
+	esac
+      ;;
+
+      tandem*)
+        case $cc_basename in
+          NCC*)
+	    # NonStop-UX NCC 3.20
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+        esac
+        ;;
+
+      vxworks*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      *)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+    esac
+
+    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+    test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no
+
+    _LT_TAGVAR(GCC, $1)=$GXX
+    _LT_TAGVAR(LD, $1)=$LD
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_SYS_HIDDEN_LIBDEPS($1)
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+  LDCXX=$LD
+  LD=$lt_save_LD
+  GCC=$lt_save_GCC
+  with_gnu_ld=$lt_save_with_gnu_ld
+  lt_cv_path_LDCXX=$lt_cv_path_LD
+  lt_cv_path_LD=$lt_save_path_LD
+  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test yes != "$_lt_caught_CXX_error"
+
+AC_LANG_POP
+])# _LT_LANG_CXX_CONFIG
+
+
+# _LT_FUNC_STRIPNAME_CNF
+# ----------------------
+# func_stripname_cnf prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+#
+# This function is identical to the (non-XSI) version of func_stripname,
+# except this one can be used by m4 code that may be executed by configure,
+# rather than the libtool script.
+m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
+AC_REQUIRE([_LT_DECL_SED])
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
+func_stripname_cnf ()
+{
+  case @S|@2 in
+  .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;;
+  *)  func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;;
+  esac
+} # func_stripname_cnf
+])# _LT_FUNC_STRIPNAME_CNF
+
+
+# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
+# ---------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
+# Dependencies to place before and after the object being linked:
+_LT_TAGVAR(predep_objects, $1)=
+_LT_TAGVAR(postdep_objects, $1)=
+_LT_TAGVAR(predeps, $1)=
+_LT_TAGVAR(postdeps, $1)=
+_LT_TAGVAR(compiler_lib_search_path, $1)=
+
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library.  It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
+int a;
+void foo (void) { a = 0; }
+_LT_EOF
+], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+_LT_EOF
+], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
+      subroutine foo
+      implicit none
+      integer*4 a
+      a=0
+      return
+      end
+_LT_EOF
+], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
+      subroutine foo
+      implicit none
+      integer a
+      a=0
+      return
+      end
+_LT_EOF
+], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
+public class foo {
+  private int a;
+  public void bar (void) {
+    a = 0;
+  }
+};
+_LT_EOF
+], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
+package foo
+func foo() {
+}
+_LT_EOF
+])
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
+esac
+
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  for p in `eval "$output_verbose_link_cmd"`; do
+    case $prev$p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test x-L = "$p" ||
+          test x-R = "$p"; then
+	 prev=$p
+	 continue
+       fi
+
+       # Expand the sysroot to ease extracting the directories later.
+       if test -z "$prev"; then
+         case $p in
+         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+         esac
+       fi
+       case $p in
+       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+       esac
+       if test no = "$pre_test_object_deps_done"; then
+	 case $prev in
+	 -L | -R)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
+	     _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p
+	   else
+	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
+	   _LT_TAGVAR(postdeps, $1)=$prev$p
+	 else
+	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p"
+	 fi
+       fi
+       prev=
+       ;;
+
+    *.lto.$objext) ;; # Ignore GCC LTO objects
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test no = "$pre_test_object_deps_done"; then
+	 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
+	   _LT_TAGVAR(predep_objects, $1)=$p
+	 else
+	   _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
+	 fi
+       else
+	 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
+	   _LT_TAGVAR(postdep_objects, $1)=$p
+	 else
+	   _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
+
+# PORTME: override above test on systems where it is broken
+m4_if([$1], [CXX],
+[case $host_os in
+interix[[3-9]]*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  _LT_TAGVAR(predep_objects,$1)=
+  _LT_TAGVAR(postdep_objects,$1)=
+  _LT_TAGVAR(postdeps,$1)=
+  ;;
+esac
+])
+
+case " $_LT_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'`
+fi
+_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
+    [The directories searched by this compiler when creating a shared library])
+_LT_TAGDECL([], [predep_objects], [1],
+    [Dependencies to place before and after the objects being linked to
+    create a shared library])
+_LT_TAGDECL([], [postdep_objects], [1])
+_LT_TAGDECL([], [predeps], [1])
+_LT_TAGDECL([], [postdeps], [1])
+_LT_TAGDECL([], [compiler_lib_search_path], [1],
+    [The library search path used internally by the compiler when linking
+    a shared library])
+])# _LT_SYS_HIDDEN_LIBDEPS
+
+
+# _LT_LANG_F77_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a Fortran 77 compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_F77_CONFIG],
+[AC_LANG_PUSH(Fortran 77)
+if test -z "$F77" || test no = "$F77"; then
+  _lt_disable_F77=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the F77 compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test yes != "$_lt_disable_F77"; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code="\
+      program t
+      end
+"
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC=$CC
+  lt_save_GCC=$GCC
+  lt_save_CFLAGS=$CFLAGS
+  CC=${F77-"f77"}
+  CFLAGS=$FFLAGS
+  compiler=$CC
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+  GCC=$G77
+  if test -n "$compiler"; then
+    AC_MSG_CHECKING([if libtool supports shared libraries])
+    AC_MSG_RESULT([$can_build_shared])
+
+    AC_MSG_CHECKING([whether to build shared libraries])
+    test no = "$can_build_shared" && enable_shared=no
+
+    # On AIX, shared libraries and static libraries use the same namespace, and
+    # are all built from PIC.
+    case $host_os in
+      aix3*)
+        test yes = "$enable_shared" && enable_static=no
+        if test -n "$RANLIB"; then
+          archive_cmds="$archive_cmds~\$RANLIB \$lib"
+          postinstall_cmds='$RANLIB $lib'
+        fi
+        ;;
+      aix[[4-9]]*)
+	if test ia64 != "$host_cpu"; then
+	  case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+	  yes,aix,yes) ;;		# shared object as lib.so file only
+	  yes,svr4,*) ;;		# shared object as lib.so archive member only
+	  yes,*) enable_static=no ;;	# shared object in lib.a archive as well
+	  esac
+	fi
+        ;;
+    esac
+    AC_MSG_RESULT([$enable_shared])
+
+    AC_MSG_CHECKING([whether to build static libraries])
+    # Make sure either enable_shared or enable_static is yes.
+    test yes = "$enable_shared" || enable_static=yes
+    AC_MSG_RESULT([$enable_static])
+
+    _LT_TAGVAR(GCC, $1)=$G77
+    _LT_TAGVAR(LD, $1)=$LD
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  GCC=$lt_save_GCC
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+fi # test yes != "$_lt_disable_F77"
+
+AC_LANG_POP
+])# _LT_LANG_F77_CONFIG
+
+
+# _LT_LANG_FC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for a Fortran compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_FC_CONFIG],
+[AC_LANG_PUSH(Fortran)
+
+if test -z "$FC" || test no = "$FC"; then
+  _lt_disable_FC=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for fc test sources.
+ac_ext=${ac_fc_srcext-f}
+
+# Object file extension for compiled fc test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the FC compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test yes != "$_lt_disable_FC"; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code="\
+      program t
+      end
+"
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC=$CC
+  lt_save_GCC=$GCC
+  lt_save_CFLAGS=$CFLAGS
+  CC=${FC-"f95"}
+  CFLAGS=$FCFLAGS
+  compiler=$CC
+  GCC=$ac_cv_fc_compiler_gnu
+
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+
+  if test -n "$compiler"; then
+    AC_MSG_CHECKING([if libtool supports shared libraries])
+    AC_MSG_RESULT([$can_build_shared])
+
+    AC_MSG_CHECKING([whether to build shared libraries])
+    test no = "$can_build_shared" && enable_shared=no
+
+    # On AIX, shared libraries and static libraries use the same namespace, and
+    # are all built from PIC.
+    case $host_os in
+      aix3*)
+        test yes = "$enable_shared" && enable_static=no
+        if test -n "$RANLIB"; then
+          archive_cmds="$archive_cmds~\$RANLIB \$lib"
+          postinstall_cmds='$RANLIB $lib'
+        fi
+        ;;
+      aix[[4-9]]*)
+	if test ia64 != "$host_cpu"; then
+	  case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+	  yes,aix,yes) ;;		# shared object as lib.so file only
+	  yes,svr4,*) ;;		# shared object as lib.so archive member only
+	  yes,*) enable_static=no ;;	# shared object in lib.a archive as well
+	  esac
+	fi
+        ;;
+    esac
+    AC_MSG_RESULT([$enable_shared])
+
+    AC_MSG_CHECKING([whether to build static libraries])
+    # Make sure either enable_shared or enable_static is yes.
+    test yes = "$enable_shared" || enable_static=yes
+    AC_MSG_RESULT([$enable_static])
+
+    _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu
+    _LT_TAGVAR(LD, $1)=$LD
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_SYS_HIDDEN_LIBDEPS($1)
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  GCC=$lt_save_GCC
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+fi # test yes != "$_lt_disable_FC"
+
+AC_LANG_POP
+])# _LT_LANG_FC_CONFIG
+
+
+# _LT_LANG_GCJ_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Java Compiler compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_GCJ_CONFIG],
+[AC_REQUIRE([LT_PROG_GCJ])dnl
+AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GCJ-"gcj"}
+CFLAGS=$GCJFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)=$LD
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+
+  _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GCJ_CONFIG
+
+
+# _LT_LANG_GO_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Go compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_GO_CONFIG],
+[AC_REQUIRE([LT_PROG_GO])dnl
+AC_LANG_SAVE
+
+# Source file extension for Go test sources.
+ac_ext=go
+
+# Object file extension for compiled Go test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="package main; func main() { }"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='package main; func main() { }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GOC-"gccgo"}
+CFLAGS=$GOFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)=$LD
+_LT_CC_BASENAME([$compiler])
+
+# Go did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+
+  _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GO_CONFIG
+
+
+# _LT_LANG_RC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for the Windows resource compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_RC_CONFIG],
+[AC_REQUIRE([LT_PROG_RC])dnl
+AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=$lt_simple_compile_test_code
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+CFLAGS=
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+if test -n "$compiler"; then
+  :
+  _LT_CONFIG($1)
+fi
+
+GCC=$lt_save_GCC
+AC_LANG_RESTORE
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_RC_CONFIG
+
+
+# LT_PROG_GCJ
+# -----------
+AC_DEFUN([LT_PROG_GCJ],
+[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+    [AC_CHECK_TOOL(GCJ, gcj,)
+      test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2"
+      AC_SUBST(GCJFLAGS)])])[]dnl
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+
+
+# LT_PROG_GO
+# ----------
+AC_DEFUN([LT_PROG_GO],
+[AC_CHECK_TOOL(GOC, gccgo,)
+])
+
+
+# LT_PROG_RC
+# ----------
+AC_DEFUN([LT_PROG_RC],
+[AC_CHECK_TOOL(RC, windres,)
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_RC], [])
+
+
+# _LT_DECL_EGREP
+# --------------
+# If we don't have a new enough Autoconf to choose the best grep
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_EGREP],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_REQUIRE([AC_PROG_FGREP])dnl
+test -z "$GREP" && GREP=grep
+_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
+_LT_DECL([], [EGREP], [1], [An ERE matcher])
+_LT_DECL([], [FGREP], [1], [A literal string matcher])
+dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
+AC_SUBST([GREP])
+])
+
+
+# _LT_DECL_OBJDUMP
+# --------------
+# If we don't have a new enough Autoconf to choose the best objdump
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_OBJDUMP],
+[AC_CHECK_TOOL(OBJDUMP, objdump, false)
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+AC_SUBST([OBJDUMP])
+])
+
+# _LT_DECL_DLLTOOL
+# ----------------
+# Ensure DLLTOOL variable is set.
+m4_defun([_LT_DECL_DLLTOOL],
+[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
+AC_SUBST([DLLTOOL])
+])
+
+# _LT_DECL_SED
+# ------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible.  Prefer GNU sed if found.
+m4_defun([_LT_DECL_SED],
+[AC_PROG_SED
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
+_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
+    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
+])# _LT_DECL_SED
+
+m4_ifndef([AC_PROG_SED], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+############################################################
+
+m4_defun([AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+IFS=$as_save_IFS
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f "$lt_ac_sed" && continue
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test 10 -lt "$lt_ac_count" && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test "$lt_ac_count" -gt "$lt_ac_max"; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+])
+SED=$lt_cv_path_SED
+AC_SUBST([SED])
+AC_MSG_RESULT([$SED])
+])#AC_PROG_SED
+])#m4_ifndef
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_SED], [])
+
+
+# _LT_CHECK_SHELL_FEATURES
+# ------------------------
+# Find out whether the shell is Bourne or XSI compatible,
+# or has some other useful features.
+m4_defun([_LT_CHECK_SHELL_FEATURES],
+[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
+_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+])# _LT_CHECK_SHELL_FEATURES
+
+
+# _LT_PATH_CONVERSION_FUNCTIONS
+# -----------------------------
+# Determine what file name conversion functions should be used by
+# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
+# for certain cross-compile configurations and native mingw.
+m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_MSG_CHECKING([how to convert $build file names to $host format])
+AC_CACHE_VAL(lt_cv_to_host_file_cmd,
+[case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+        ;;
+    esac
+    ;;
+  *-*-cygwin* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_noop
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+        ;;
+    esac
+    ;;
+  * ) # unhandled hosts (and "normal" native builds)
+    lt_cv_to_host_file_cmd=func_convert_file_noop
+    ;;
+esac
+])
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
+_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
+         [0], [convert $build file names to $host format])dnl
+
+AC_MSG_CHECKING([how to convert $build file names to toolchain format])
+AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
+[#assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+        ;;
+    esac
+    ;;
+esac
+])
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
+_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
+         [0], [convert $build files to toolchain format])dnl
+])# _LT_PATH_CONVERSION_FUNCTIONS
diff --git a/config/ltmain.sh b/config/ltmain.sh
new file mode 100644
index 0000000..147d758
--- /dev/null
+++ b/config/ltmain.sh
@@ -0,0 +1,11156 @@
+#! /bin/sh
+## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
+##               by inline-source v2014-01-03.01
+
+# libtool (GNU libtool) 2.4.6
+# Provide generalized library-building support services.
+# Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+
+# Copyright (C) 1996-2015 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+PROGRAM=libtool
+PACKAGE=libtool
+VERSION="2.4.6 Debian-2.4.6-0.1"
+package_revision=2.4.6
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Run './libtool --help' for help with using this script from the
+# command line.
+
+
+## ------------------------------- ##
+## User overridable command paths. ##
+## ------------------------------- ##
+
+# After configure completes, it has a better idea of some of the
+# shell tools we need than the defaults used by the functions shared
+# with bootstrap, so set those here where they can still be over-
+# ridden by the user, but otherwise take precedence.
+
+: ${AUTOCONF="autoconf"}
+: ${AUTOMAKE="automake"}
+
+
+## -------------------------- ##
+## Source external libraries. ##
+## -------------------------- ##
+
+# Much of our low-level functionality needs to be sourced from external
+# libraries, which are installed to $pkgauxdir.
+
+# Set a version string for this script.
+scriptversion=2015-01-20.17; # UTC
+
+# General shell script boiler plate, and helper functions.
+# Written by Gary V. Vaughan, 2004
+
+# Copyright (C) 2004-2015 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+
+# As a special exception to the GNU General Public License, if you distribute
+# this file as part of a program or library that is built using GNU Libtool,
+# you may include this file under the same distribution terms that you use
+# for the rest of that program.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Please report bugs or propose patches to gary at gnu.org.
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Evaluate this file near the top of your script to gain access to
+# the functions and variables defined here:
+#
+#   . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh
+#
+# If you need to override any of the default environment variable
+# settings, do that before evaluating this file.
+
+
+## -------------------- ##
+## Shell normalisation. ##
+## -------------------- ##
+
+# Some shells need a little help to be as Bourne compatible as possible.
+# Before doing anything else, make sure all that help has been provided!
+
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac
+fi
+
+# NLS nuisances: We save the old values in case they are required later.
+_G_user_locale=
+_G_safe_locale=
+for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+  eval "if test set = \"\${$_G_var+set}\"; then
+          save_$_G_var=\$$_G_var
+          $_G_var=C
+	  export $_G_var
+	  _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\"
+	  _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
+	fi"
+done
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Make sure IFS has a sensible default
+sp=' '
+nl='
+'
+IFS="$sp	$nl"
+
+# There are apparently some retarded systems that use ';' as a PATH separator!
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+
+## ------------------------- ##
+## Locate command utilities. ##
+## ------------------------- ##
+
+
+# func_executable_p FILE
+# ----------------------
+# Check that FILE is an executable regular file.
+func_executable_p ()
+{
+    test -f "$1" && test -x "$1"
+}
+
+
+# func_path_progs PROGS_LIST CHECK_FUNC [PATH]
+# --------------------------------------------
+# Search for either a program that responds to --version with output
+# containing "GNU", or else returned by CHECK_FUNC otherwise, by
+# trying all the directories in PATH with each of the elements of
+# PROGS_LIST.
+#
+# CHECK_FUNC should accept the path to a candidate program, and
+# set $func_check_prog_result if it truncates its output less than
+# $_G_path_prog_max characters.
+func_path_progs ()
+{
+    _G_progs_list=$1
+    _G_check_func=$2
+    _G_PATH=${3-"$PATH"}
+
+    _G_path_prog_max=0
+    _G_path_prog_found=false
+    _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:}
+    for _G_dir in $_G_PATH; do
+      IFS=$_G_save_IFS
+      test -z "$_G_dir" && _G_dir=.
+      for _G_prog_name in $_G_progs_list; do
+        for _exeext in '' .EXE; do
+          _G_path_prog=$_G_dir/$_G_prog_name$_exeext
+          func_executable_p "$_G_path_prog" || continue
+          case `"$_G_path_prog" --version 2>&1` in
+            *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;;
+            *)     $_G_check_func $_G_path_prog
+		   func_path_progs_result=$func_check_prog_result
+		   ;;
+          esac
+          $_G_path_prog_found && break 3
+        done
+      done
+    done
+    IFS=$_G_save_IFS
+    test -z "$func_path_progs_result" && {
+      echo "no acceptable sed could be found in \$PATH" >&2
+      exit 1
+    }
+}
+
+
+# We want to be able to use the functions in this file before configure
+# has figured out where the best binaries are kept, which means we have
+# to search for them ourselves - except when the results are already set
+# where we skip the searches.
+
+# Unless the user overrides by setting SED, search the path for either GNU
+# sed, or the sed that truncates its output the least.
+test -z "$SED" && {
+  _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+  for _G_i in 1 2 3 4 5 6 7; do
+    _G_sed_script=$_G_sed_script$nl$_G_sed_script
+  done
+  echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed
+  _G_sed_script=
+
+  func_check_prog_sed ()
+  {
+    _G_path_prog=$1
+
+    _G_count=0
+    printf 0123456789 >conftest.in
+    while :
+    do
+      cat conftest.in conftest.in >conftest.tmp
+      mv conftest.tmp conftest.in
+      cp conftest.in conftest.nl
+      echo '' >> conftest.nl
+      "$_G_path_prog" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break
+      diff conftest.out conftest.nl >/dev/null 2>&1 || break
+      _G_count=`expr $_G_count + 1`
+      if test "$_G_count" -gt "$_G_path_prog_max"; then
+        # Best one so far, save it but keep looking for a better one
+        func_check_prog_result=$_G_path_prog
+        _G_path_prog_max=$_G_count
+      fi
+      # 10*(2^10) chars as input seems more than enough
+      test 10 -lt "$_G_count" && break
+    done
+    rm -f conftest.in conftest.tmp conftest.nl conftest.out
+  }
+
+  func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin
+  rm -f conftest.sed
+  SED=$func_path_progs_result
+}
+
+
+# Unless the user overrides by setting GREP, search the path for either GNU
+# grep, or the grep that truncates its output the least.
+test -z "$GREP" && {
+  func_check_prog_grep ()
+  {
+    _G_path_prog=$1
+
+    _G_count=0
+    _G_path_prog_max=0
+    printf 0123456789 >conftest.in
+    while :
+    do
+      cat conftest.in conftest.in >conftest.tmp
+      mv conftest.tmp conftest.in
+      cp conftest.in conftest.nl
+      echo 'GREP' >> conftest.nl
+      "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' <conftest.nl >conftest.out 2>/dev/null || break
+      diff conftest.out conftest.nl >/dev/null 2>&1 || break
+      _G_count=`expr $_G_count + 1`
+      if test "$_G_count" -gt "$_G_path_prog_max"; then
+        # Best one so far, save it but keep looking for a better one
+        func_check_prog_result=$_G_path_prog
+        _G_path_prog_max=$_G_count
+      fi
+      # 10*(2^10) chars as input seems more than enough
+      test 10 -lt "$_G_count" && break
+    done
+    rm -f conftest.in conftest.tmp conftest.nl conftest.out
+  }
+
+  func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin
+  GREP=$func_path_progs_result
+}
+
+
+## ------------------------------- ##
+## User overridable command paths. ##
+## ------------------------------- ##
+
+# All uppercase variable names are used for environment variables.  These
+# variables can be overridden by the user before calling a script that
+# uses them if a suitable command of that name is not already available
+# in the command search PATH.
+
+: ${CP="cp -f"}
+: ${ECHO="printf %s\n"}
+: ${EGREP="$GREP -E"}
+: ${FGREP="$GREP -F"}
+: ${LN_S="ln -s"}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+
+
+## -------------------- ##
+## Useful sed snippets. ##
+## -------------------- ##
+
+sed_dirname='s|/[^/]*$||'
+sed_basename='s|^.*/||'
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Same as above, but do not quote variable references.
+sed_double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution that turns a string into a regex matching for the
+# string literally.
+sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g'
+
+# Sed substitution that converts a w32 file name or path
+# that contains forward slashes, into one that contains
+# (escaped) backslashes.  A very naive implementation.
+sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
+# Re-'\' parameter expansions in output of sed_double_quote_subst that
+# were '\'-ed in input to the same.  If an odd number of '\' preceded a
+# '$' in input to sed_double_quote_subst, that '$' was protected from
+# expansion.  Since each input '\' is now two '\'s, look for any number
+# of runs of four '\'s followed by two '\'s and then a '$'.  '\' that '$'.
+_G_bs='\\'
+_G_bs2='\\\\'
+_G_bs4='\\\\\\\\'
+_G_dollar='\$'
+sed_double_backslash="\
+  s/$_G_bs4/&\\
+/g
+  s/^$_G_bs2$_G_dollar/$_G_bs&/
+  s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
+  s/\n//g"
+
+
+## ----------------- ##
+## Global variables. ##
+## ----------------- ##
+
+# Except for the global variables explicitly listed below, the following
+# functions in the '^func_' namespace, and the '^require_' namespace
+# variables initialised in the 'Resource management' section, sourcing
+# this file will not pollute your global namespace with anything
+# else. There's no portable way to scope variables in Bourne shell
+# though, so actually running these functions will sometimes place
+# results into a variable named after the function, and often use
+# temporary variables in the '^_G_' namespace. If you are careful to
+# avoid using those namespaces casually in your sourcing script, things
+# should continue to work as you expect. And, of course, you can freely
+# overwrite any of the functions or variables defined here before
+# calling anything to customize them.
+
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
+
+# Allow overriding, eg assuming that you follow the convention of
+# putting '$debug_cmd' at the start of all your functions, you can get
+# bash to show function call trace with:
+#
+#    debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name
+debug_cmd=${debug_cmd-":"}
+exit_cmd=:
+
+# By convention, finish your script with:
+#
+#    exit $exit_status
+#
+# so that you can set exit_status to non-zero if you want to indicate
+# something went wrong during execution without actually bailing out at
+# the point of failure.
+exit_status=$EXIT_SUCCESS
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath=$0
+
+# The name of this program.
+progname=`$ECHO "$progpath" |$SED "$sed_basename"`
+
+# Make sure we have an absolute progpath for reexecution:
+case $progpath in
+  [\\/]*|[A-Za-z]:\\*) ;;
+  *[\\/]*)
+     progdir=`$ECHO "$progpath" |$SED "$sed_dirname"`
+     progdir=`cd "$progdir" && pwd`
+     progpath=$progdir/$progname
+     ;;
+  *)
+     _G_IFS=$IFS
+     IFS=${PATH_SEPARATOR-:}
+     for progdir in $PATH; do
+       IFS=$_G_IFS
+       test -x "$progdir/$progname" && break
+     done
+     IFS=$_G_IFS
+     test -n "$progdir" || progdir=`pwd`
+     progpath=$progdir/$progname
+     ;;
+esac
+
+
+## ----------------- ##
+## Standard options. ##
+## ----------------- ##
+
+# The following options affect the operation of the functions defined
+# below, and should be set appropriately depending on run-time para-
+# meters passed on the command line.
+
+opt_dry_run=false
+opt_quiet=false
+opt_verbose=false
+
+# Categories 'all' and 'none' are always available.  Append any others
+# you will pass as the first argument to func_warning from your own
+# code.
+warning_categories=
+
+# By default, display warnings according to 'opt_warning_types'.  Set
+# 'warning_func'  to ':' to elide all warnings, or func_fatal_error to
+# treat the next displayed warning as a fatal error.
+warning_func=func_warn_and_continue
+
+# Set to 'all' to display all warnings, 'none' to suppress all
+# warnings, or a space delimited list of some subset of
+# 'warning_categories' to display only the listed warnings.
+opt_warning_types=all
+
+
+## -------------------- ##
+## Resource management. ##
+## -------------------- ##
+
+# This section contains definitions for functions that each ensure a
+# particular resource (a file, or a non-empty configuration variable for
+# example) is available, and if appropriate to extract default values
+# from pertinent package files. Call them using their associated
+# 'require_*' variable to ensure that they are executed, at most, once.
+#
+# It's entirely deliberate that calling these functions can set
+# variables that don't obey the namespace limitations obeyed by the rest
+# of this file, in order that that they be as useful as possible to
+# callers.
+
+
+# require_term_colors
+# -------------------
+# Allow display of bold text on terminals that support it.
+require_term_colors=func_require_term_colors
+func_require_term_colors ()
+{
+    $debug_cmd
+
+    test -t 1 && {
+      # COLORTERM and USE_ANSI_COLORS environment variables take
+      # precedence, because most terminfo databases neglect to describe
+      # whether color sequences are supported.
+      test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"}
+
+      if test 1 = "$USE_ANSI_COLORS"; then
+        # Standard ANSI escape sequences
+        tc_reset=''
+        tc_bold='';   tc_standout=''
+        tc_red='';   tc_green=''
+        tc_blue='';  tc_cyan=''
+      else
+        # Otherwise trust the terminfo database after all.
+        test -n "`tput sgr0 2>/dev/null`" && {
+          tc_reset=`tput sgr0`
+          test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold`
+          tc_standout=$tc_bold
+          test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso`
+          test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1`
+          test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2`
+          test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4`
+          test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5`
+        }
+      fi
+    }
+
+    require_term_colors=:
+}
+
+
+## ----------------- ##
+## Function library. ##
+## ----------------- ##
+
+# This section contains a variety of useful functions to call in your
+# scripts. Take note of the portable wrappers for features provided by
+# some modern shells, which will fall back to slower equivalents on
+# less featureful shells.
+
+
+# func_append VAR VALUE
+# ---------------------
+# Append VALUE onto the existing contents of VAR.
+
+  # We should try to minimise forks, especially on Windows where they are
+  # unreasonably slow, so skip the feature probes when bash or zsh are
+  # being used:
+  if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
+    : ${_G_HAVE_ARITH_OP="yes"}
+    : ${_G_HAVE_XSI_OPS="yes"}
+    # The += operator was introduced in bash 3.1
+    case $BASH_VERSION in
+      [12].* | 3.0 | 3.0*) ;;
+      *)
+        : ${_G_HAVE_PLUSEQ_OP="yes"}
+        ;;
+    esac
+  fi
+
+  # _G_HAVE_PLUSEQ_OP
+  # Can be empty, in which case the shell is probed, "yes" if += is
+  # useable or anything else if it does not work.
+  test -z "$_G_HAVE_PLUSEQ_OP" \
+    && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
+    && _G_HAVE_PLUSEQ_OP=yes
+
+if test yes = "$_G_HAVE_PLUSEQ_OP"
+then
+  # This is an XSI compatible shell, allowing a faster implementation...
+  eval 'func_append ()
+  {
+    $debug_cmd
+
+    eval "$1+=\$2"
+  }'
+else
+  # ...otherwise fall back to using expr, which is often a shell builtin.
+  func_append ()
+  {
+    $debug_cmd
+
+    eval "$1=\$$1\$2"
+  }
+fi
+
+
+# func_append_quoted VAR VALUE
+# ----------------------------
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+if test yes = "$_G_HAVE_PLUSEQ_OP"; then
+  eval 'func_append_quoted ()
+  {
+    $debug_cmd
+
+    func_quote_for_eval "$2"
+    eval "$1+=\\ \$func_quote_for_eval_result"
+  }'
+else
+  func_append_quoted ()
+  {
+    $debug_cmd
+
+    func_quote_for_eval "$2"
+    eval "$1=\$$1\\ \$func_quote_for_eval_result"
+  }
+fi
+
+
+# func_append_uniq VAR VALUE
+# --------------------------
+# Append unique VALUE onto the existing contents of VAR, assuming
+# entries are delimited by the first character of VALUE.  For example:
+#
+#   func_append_uniq options " --another-option option-argument"
+#
+# will only append to $options if " --another-option option-argument "
+# is not already present somewhere in $options already (note spaces at
+# each end implied by leading space in second argument).
+func_append_uniq ()
+{
+    $debug_cmd
+
+    eval _G_current_value='`$ECHO $'$1'`'
+    _G_delim=`expr "$2" : '\(.\)'`
+
+    case $_G_delim$_G_current_value$_G_delim in
+      *"$2$_G_delim"*) ;;
+      *) func_append "$@" ;;
+    esac
+}
+
+
+# func_arith TERM...
+# ------------------
+# Set func_arith_result to the result of evaluating TERMs.
+  test -z "$_G_HAVE_ARITH_OP" \
+    && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \
+    && _G_HAVE_ARITH_OP=yes
+
+if test yes = "$_G_HAVE_ARITH_OP"; then
+  eval 'func_arith ()
+  {
+    $debug_cmd
+
+    func_arith_result=$(( $* ))
+  }'
+else
+  func_arith ()
+  {
+    $debug_cmd
+
+    func_arith_result=`expr "$@"`
+  }
+fi
+
+
+# func_basename FILE
+# ------------------
+# Set func_basename_result to FILE with everything up to and including
+# the last / stripped.
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  # If this shell supports suffix pattern removal, then use it to avoid
+  # forking. Hide the definitions single quotes in case the shell chokes
+  # on unsupported syntax...
+  _b='func_basename_result=${1##*/}'
+  _d='case $1 in
+        */*) func_dirname_result=${1%/*}$2 ;;
+        *  ) func_dirname_result=$3        ;;
+      esac'
+
+else
+  # ...otherwise fall back to using sed.
+  _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`'
+  _d='func_dirname_result=`$ECHO "$1"  |$SED "$sed_dirname"`
+      if test "X$func_dirname_result" = "X$1"; then
+        func_dirname_result=$3
+      else
+        func_append func_dirname_result "$2"
+      fi'
+fi
+
+eval 'func_basename ()
+{
+    $debug_cmd
+
+    '"$_b"'
+}'
+
+
+# func_dirname FILE APPEND NONDIR_REPLACEMENT
+# -------------------------------------------
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+eval 'func_dirname ()
+{
+    $debug_cmd
+
+    '"$_d"'
+}'
+
+
+# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT
+# --------------------------------------------------------
+# Perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# For efficiency, we do not delegate to the functions above but instead
+# duplicate the functionality here.
+eval 'func_dirname_and_basename ()
+{
+    $debug_cmd
+
+    '"$_b"'
+    '"$_d"'
+}'
+
+
+# func_echo ARG...
+# ----------------
+# Echo program name prefixed message.
+func_echo ()
+{
+    $debug_cmd
+
+    _G_message=$*
+
+    func_echo_IFS=$IFS
+    IFS=$nl
+    for _G_line in $_G_message; do
+      IFS=$func_echo_IFS
+      $ECHO "$progname: $_G_line"
+    done
+    IFS=$func_echo_IFS
+}
+
+
+# func_echo_all ARG...
+# --------------------
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*"
+}
+
+
+# func_echo_infix_1 INFIX ARG...
+# ------------------------------
+# Echo program name, followed by INFIX on the first line, with any
+# additional lines not showing INFIX.
+func_echo_infix_1 ()
+{
+    $debug_cmd
+
+    $require_term_colors
+
+    _G_infix=$1; shift
+    _G_indent=$_G_infix
+    _G_prefix="$progname: $_G_infix: "
+    _G_message=$*
+
+    # Strip color escape sequences before counting printable length
+    for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan"
+    do
+      test -n "$_G_tc" && {
+        _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"`
+        _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"`
+      }
+    done
+    _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`"  " ## exclude from sc_prohibit_nested_quotes
+
+    func_echo_infix_1_IFS=$IFS
+    IFS=$nl
+    for _G_line in $_G_message; do
+      IFS=$func_echo_infix_1_IFS
+      $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2
+      _G_prefix=$_G_indent
+    done
+    IFS=$func_echo_infix_1_IFS
+}
+
+
+# func_error ARG...
+# -----------------
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+    $debug_cmd
+
+    $require_term_colors
+
+    func_echo_infix_1 "  $tc_standout${tc_red}error$tc_reset" "$*" >&2
+}
+
+
+# func_fatal_error ARG...
+# -----------------------
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+    $debug_cmd
+
+    func_error "$*"
+    exit $EXIT_FAILURE
+}
+
+
+# func_grep EXPRESSION FILENAME
+# -----------------------------
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+    $debug_cmd
+
+    $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_len STRING
+# ---------------
+# Set func_len_result to the length of STRING. STRING may not
+# start with a hyphen.
+  test -z "$_G_HAVE_XSI_OPS" \
+    && (eval 'x=a/b/c;
+      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
+    && _G_HAVE_XSI_OPS=yes
+
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  eval 'func_len ()
+  {
+    $debug_cmd
+
+    func_len_result=${#1}
+  }'
+else
+  func_len ()
+  {
+    $debug_cmd
+
+    func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+  }
+fi
+
+
+# func_mkdir_p DIRECTORY-PATH
+# ---------------------------
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+    $debug_cmd
+
+    _G_directory_path=$1
+    _G_dir_list=
+
+    if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then
+
+      # Protect directory names starting with '-'
+      case $_G_directory_path in
+        -*) _G_directory_path=./$_G_directory_path ;;
+      esac
+
+      # While some portion of DIR does not yet exist...
+      while test ! -d "$_G_directory_path"; do
+        # ...make a list in topmost first order.  Use a colon delimited
+	# list incase some portion of path contains whitespace.
+        _G_dir_list=$_G_directory_path:$_G_dir_list
+
+        # If the last portion added has no slash in it, the list is done
+        case $_G_directory_path in */*) ;; *) break ;; esac
+
+        # ...otherwise throw away the child directory and loop
+        _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"`
+      done
+      _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'`
+
+      func_mkdir_p_IFS=$IFS; IFS=:
+      for _G_dir in $_G_dir_list; do
+	IFS=$func_mkdir_p_IFS
+        # mkdir can fail with a 'File exist' error if two processes
+        # try to create one of the directories concurrently.  Don't
+        # stop in that case!
+        $MKDIR "$_G_dir" 2>/dev/null || :
+      done
+      IFS=$func_mkdir_p_IFS
+
+      # Bail out if we (or some other process) failed to create a directory.
+      test -d "$_G_directory_path" || \
+        func_fatal_error "Failed to create '$1'"
+    fi
+}
+
+
+# func_mktempdir [BASENAME]
+# -------------------------
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible.  If
+# given, BASENAME is the basename for that directory.
+func_mktempdir ()
+{
+    $debug_cmd
+
+    _G_template=${TMPDIR-/tmp}/${1-$progname}
+
+    if test : = "$opt_dry_run"; then
+      # Return a directory name, but don't create it in dry-run mode
+      _G_tmpdir=$_G_template-$$
+    else
+
+      # If mktemp works, use that first and foremost
+      _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null`
+
+      if test ! -d "$_G_tmpdir"; then
+        # Failing that, at least try and use $RANDOM to avoid a race
+        _G_tmpdir=$_G_template-${RANDOM-0}$$
+
+        func_mktempdir_umask=`umask`
+        umask 0077
+        $MKDIR "$_G_tmpdir"
+        umask $func_mktempdir_umask
+      fi
+
+      # If we're not in dry-run mode, bomb out on failure
+      test -d "$_G_tmpdir" || \
+        func_fatal_error "cannot create temporary directory '$_G_tmpdir'"
+    fi
+
+    $ECHO "$_G_tmpdir"
+}
+
+
+# func_normal_abspath PATH
+# ------------------------
+# Remove doubled-up and trailing slashes, "." path components,
+# and cancel out any ".." path components in PATH after making
+# it an absolute path.
+func_normal_abspath ()
+{
+    $debug_cmd
+
+    # These SED scripts presuppose an absolute path with a trailing slash.
+    _G_pathcar='s|^/\([^/]*\).*$|\1|'
+    _G_pathcdr='s|^/[^/]*||'
+    _G_removedotparts=':dotsl
+		s|/\./|/|g
+		t dotsl
+		s|/\.$|/|'
+    _G_collapseslashes='s|/\{1,\}|/|g'
+    _G_finalslash='s|/*$|/|'
+
+    # Start from root dir and reassemble the path.
+    func_normal_abspath_result=
+    func_normal_abspath_tpath=$1
+    func_normal_abspath_altnamespace=
+    case $func_normal_abspath_tpath in
+      "")
+        # Empty path, that just means $cwd.
+        func_stripname '' '/' "`pwd`"
+        func_normal_abspath_result=$func_stripname_result
+        return
+        ;;
+      # The next three entries are used to spot a run of precisely
+      # two leading slashes without using negated character classes;
+      # we take advantage of case's first-match behaviour.
+      ///*)
+        # Unusual form of absolute path, do nothing.
+        ;;
+      //*)
+        # Not necessarily an ordinary path; POSIX reserves leading '//'
+        # and for example Cygwin uses it to access remote file shares
+        # over CIFS/SMB, so we conserve a leading double slash if found.
+        func_normal_abspath_altnamespace=/
+        ;;
+      /*)
+        # Absolute path, do nothing.
+        ;;
+      *)
+        # Relative path, prepend $cwd.
+        func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
+        ;;
+    esac
+
+    # Cancel out all the simple stuff to save iterations.  We also want
+    # the path to end with a slash for ease of parsing, so make sure
+    # there is one (and only one) here.
+    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+          -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"`
+    while :; do
+      # Processed it all yet?
+      if test / = "$func_normal_abspath_tpath"; then
+        # If we ascended to the root using ".." the result may be empty now.
+        if test -z "$func_normal_abspath_result"; then
+          func_normal_abspath_result=/
+        fi
+        break
+      fi
+      func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
+          -e "$_G_pathcar"`
+      func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+          -e "$_G_pathcdr"`
+      # Figure out what to do with it
+      case $func_normal_abspath_tcomponent in
+        "")
+          # Trailing empty path component, ignore it.
+          ;;
+        ..)
+          # Parent dir; strip last assembled component from result.
+          func_dirname "$func_normal_abspath_result"
+          func_normal_abspath_result=$func_dirname_result
+          ;;
+        *)
+          # Actual path component, append it.
+          func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent"
+          ;;
+      esac
+    done
+    # Restore leading double-slash if one was found on entry.
+    func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
+}
+
+
+# func_notquiet ARG...
+# --------------------
+# Echo program name prefixed message only when not in quiet mode.
+func_notquiet ()
+{
+    $debug_cmd
+
+    $opt_quiet || func_echo ${1+"$@"}
+
+    # A bug in bash halts the script if the last line of a function
+    # fails when set -e is in force, so we need another command to
+    # work around that:
+    :
+}
+
+
+# func_relative_path SRCDIR DSTDIR
+# --------------------------------
+# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR.
+func_relative_path ()
+{
+    $debug_cmd
+
+    func_relative_path_result=
+    func_normal_abspath "$1"
+    func_relative_path_tlibdir=$func_normal_abspath_result
+    func_normal_abspath "$2"
+    func_relative_path_tbindir=$func_normal_abspath_result
+
+    # Ascend the tree starting from libdir
+    while :; do
+      # check if we have found a prefix of bindir
+      case $func_relative_path_tbindir in
+        $func_relative_path_tlibdir)
+          # found an exact match
+          func_relative_path_tcancelled=
+          break
+          ;;
+        $func_relative_path_tlibdir*)
+          # found a matching prefix
+          func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
+          func_relative_path_tcancelled=$func_stripname_result
+          if test -z "$func_relative_path_result"; then
+            func_relative_path_result=.
+          fi
+          break
+          ;;
+        *)
+          func_dirname $func_relative_path_tlibdir
+          func_relative_path_tlibdir=$func_dirname_result
+          if test -z "$func_relative_path_tlibdir"; then
+            # Have to descend all the way to the root!
+            func_relative_path_result=../$func_relative_path_result
+            func_relative_path_tcancelled=$func_relative_path_tbindir
+            break
+          fi
+          func_relative_path_result=../$func_relative_path_result
+          ;;
+      esac
+    done
+
+    # Now calculate path; take care to avoid doubling-up slashes.
+    func_stripname '' '/' "$func_relative_path_result"
+    func_relative_path_result=$func_stripname_result
+    func_stripname '/' '/' "$func_relative_path_tcancelled"
+    if test -n "$func_stripname_result"; then
+      func_append func_relative_path_result "/$func_stripname_result"
+    fi
+
+    # Normalisation. If bindir is libdir, return '.' else relative path.
+    if test -n "$func_relative_path_result"; then
+      func_stripname './' '' "$func_relative_path_result"
+      func_relative_path_result=$func_stripname_result
+    fi
+
+    test -n "$func_relative_path_result" || func_relative_path_result=.
+
+    :
+}
+
+
+# func_quote_for_eval ARG...
+# --------------------------
+# Aesthetically quote ARGs to be evaled later.
+# This function returns two values:
+#   i) func_quote_for_eval_result
+#      double-quoted, suitable for a subsequent eval
+#  ii) func_quote_for_eval_unquoted_result
+#      has all characters that are still active within double
+#      quotes backslashified.
+func_quote_for_eval ()
+{
+    $debug_cmd
+
+    func_quote_for_eval_unquoted_result=
+    func_quote_for_eval_result=
+    while test 0 -lt $#; do
+      case $1 in
+        *[\\\`\"\$]*)
+	  _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;;
+        *)
+          _G_unquoted_arg=$1 ;;
+      esac
+      if test -n "$func_quote_for_eval_unquoted_result"; then
+	func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
+      else
+        func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg"
+      fi
+
+      case $_G_unquoted_arg in
+        # Double-quote args containing shell metacharacters to delay
+        # word splitting, command substitution and variable expansion
+        # for a subsequent eval.
+        # Many Bourne shells cannot handle close brackets correctly
+        # in scan sets, so we specify it separately.
+        *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+          _G_quoted_arg=\"$_G_unquoted_arg\"
+          ;;
+        *)
+          _G_quoted_arg=$_G_unquoted_arg
+	  ;;
+      esac
+
+      if test -n "$func_quote_for_eval_result"; then
+	func_append func_quote_for_eval_result " $_G_quoted_arg"
+      else
+        func_append func_quote_for_eval_result "$_G_quoted_arg"
+      fi
+      shift
+    done
+}
+
+
+# func_quote_for_expand ARG
+# -------------------------
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
+{
+    $debug_cmd
+
+    case $1 in
+      *[\\\`\"]*)
+	_G_arg=`$ECHO "$1" | $SED \
+	    -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;;
+      *)
+        _G_arg=$1 ;;
+    esac
+
+    case $_G_arg in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting and command substitution for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+        _G_arg=\"$_G_arg\"
+        ;;
+    esac
+
+    func_quote_for_expand_result=$_G_arg
+}
+
+
+# func_stripname PREFIX SUFFIX NAME
+# ---------------------------------
+# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  eval 'func_stripname ()
+  {
+    $debug_cmd
+
+    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+    # positional parameters, so assign one to ordinary variable first.
+    func_stripname_result=$3
+    func_stripname_result=${func_stripname_result#"$1"}
+    func_stripname_result=${func_stripname_result%"$2"}
+  }'
+else
+  func_stripname ()
+  {
+    $debug_cmd
+
+    case $2 in
+      .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;;
+      *)  func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;;
+    esac
+  }
+fi
+
+
+# func_show_eval CMD [FAIL_EXP]
+# -----------------------------
+# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.
+func_show_eval ()
+{
+    $debug_cmd
+
+    _G_cmd=$1
+    _G_fail_exp=${2-':'}
+
+    func_quote_for_expand "$_G_cmd"
+    eval "func_notquiet $func_quote_for_expand_result"
+
+    $opt_dry_run || {
+      eval "$_G_cmd"
+      _G_status=$?
+      if test 0 -ne "$_G_status"; then
+	eval "(exit $_G_status); $_G_fail_exp"
+      fi
+    }
+}
+
+
+# func_show_eval_locale CMD [FAIL_EXP]
+# ------------------------------------
+# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.  Use the saved locale for evaluation.
+func_show_eval_locale ()
+{
+    $debug_cmd
+
+    _G_cmd=$1
+    _G_fail_exp=${2-':'}
+
+    $opt_quiet || {
+      func_quote_for_expand "$_G_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    $opt_dry_run || {
+      eval "$_G_user_locale
+	    $_G_cmd"
+      _G_status=$?
+      eval "$_G_safe_locale"
+      if test 0 -ne "$_G_status"; then
+	eval "(exit $_G_status); $_G_fail_exp"
+      fi
+    }
+}
+
+
+# func_tr_sh
+# ----------
+# Turn $1 into a string suitable for a shell variable name.
+# Result is stored in $func_tr_sh_result.  All characters
+# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
+# if $1 begins with a digit, a '_' is prepended as well.
+func_tr_sh ()
+{
+    $debug_cmd
+
+    case $1 in
+    [0-9]* | *[!a-zA-Z0-9_]*)
+      func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'`
+      ;;
+    * )
+      func_tr_sh_result=$1
+      ;;
+    esac
+}
+
+
+# func_verbose ARG...
+# -------------------
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+    $debug_cmd
+
+    $opt_verbose && func_echo "$*"
+
+    :
+}
+
+
+# func_warn_and_continue ARG...
+# -----------------------------
+# Echo program name prefixed warning message to standard error.
+func_warn_and_continue ()
+{
+    $debug_cmd
+
+    $require_term_colors
+
+    func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2
+}
+
+
+# func_warning CATEGORY ARG...
+# ----------------------------
+# Echo program name prefixed warning message to standard error. Warning
+# messages can be filtered according to CATEGORY, where this function
+# elides messages where CATEGORY is not listed in the global variable
+# 'opt_warning_types'.
+func_warning ()
+{
+    $debug_cmd
+
+    # CATEGORY must be in the warning_categories list!
+    case " $warning_categories " in
+      *" $1 "*) ;;
+      *) func_internal_error "invalid warning category '$1'" ;;
+    esac
+
+    _G_category=$1
+    shift
+
+    case " $opt_warning_types " in
+      *" $_G_category "*) $warning_func ${1+"$@"} ;;
+    esac
+}
+
+
+# func_sort_ver VER1 VER2
+# -----------------------
+# 'sort -V' is not generally available.
+# Note this deviates from the version comparison in automake
+# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
+# but this should suffice as we won't be specifying old
+# version formats or redundant trailing .0 in bootstrap.conf.
+# If we did want full compatibility then we should probably
+# use m4_version_compare from autoconf.
+func_sort_ver ()
+{
+    $debug_cmd
+
+    printf '%s\n%s\n' "$1" "$2" \
+      | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n
+}
+
+# func_lt_ver PREV CURR
+# ---------------------
+# Return true if PREV and CURR are in the correct order according to
+# func_sort_ver, otherwise false.  Use it like this:
+#
+#  func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..."
+func_lt_ver ()
+{
+    $debug_cmd
+
+    test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q`
+}
+
+
+# Local variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-time-zone: "UTC"
+# End:
+#! /bin/sh
+
+# Set a version string for this script.
+scriptversion=2014-01-07.03; # UTC
+
+# A portable, pluggable option parser for Bourne shell.
+# Written by Gary V. Vaughan, 2010
+
+# Copyright (C) 2010-2015 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Please report bugs or propose patches to gary at gnu.org.
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# This file is a library for parsing options in your shell scripts along
+# with assorted other useful supporting features that you can make use
+# of too.
+#
+# For the simplest scripts you might need only:
+#
+#   #!/bin/sh
+#   . relative/path/to/funclib.sh
+#   . relative/path/to/options-parser
+#   scriptversion=1.0
+#   func_options ${1+"$@"}
+#   eval set dummy "$func_options_result"; shift
+#   ...rest of your script...
+#
+# In order for the '--version' option to work, you will need to have a
+# suitably formatted comment like the one at the top of this file
+# starting with '# Written by ' and ending with '# warranty; '.
+#
+# For '-h' and '--help' to work, you will also need a one line
+# description of your script's purpose in a comment directly above the
+# '# Written by ' line, like the one at the top of this file.
+#
+# The default options also support '--debug', which will turn on shell
+# execution tracing (see the comment above debug_cmd below for another
+# use), and '--verbose' and the func_verbose function to allow your script
+# to display verbose messages only when your user has specified
+# '--verbose'.
+#
+# After sourcing this file, you can plug processing for additional
+# options by amending the variables from the 'Configuration' section
+# below, and following the instructions in the 'Option parsing'
+# section further down.
+
+## -------------- ##
+## Configuration. ##
+## -------------- ##
+
+# You should override these variables in your script after sourcing this
+# file so that they reflect the customisations you have added to the
+# option parser.
+
+# The usage line for option parsing errors and the start of '-h' and
+# '--help' output messages. You can embed shell variables for delayed
+# expansion at the time the message is displayed, but you will need to
+# quote other shell meta-characters carefully to prevent them being
+# expanded when the contents are evaled.
+usage='$progpath [OPTION]...'
+
+# Short help message in response to '-h' and '--help'.  Add to this or
+# override it after sourcing this library to reflect the full set of
+# options your script accepts.
+usage_message="\
+       --debug        enable verbose shell tracing
+   -W, --warnings=CATEGORY
+                      report the warnings falling in CATEGORY [all]
+   -v, --verbose      verbosely report processing
+       --version      print version information and exit
+   -h, --help         print short or long help message and exit
+"
+
+# Additional text appended to 'usage_message' in response to '--help'.
+long_help_message="
+Warning categories include:
+       'all'          show all warnings
+       'none'         turn off all the warnings
+       'error'        warnings are treated as fatal errors"
+
+# Help message printed before fatal option parsing errors.
+fatal_help="Try '\$progname --help' for more information."
+
+
+
+## ------------------------- ##
+## Hook function management. ##
+## ------------------------- ##
+
+# This section contains functions for adding, removing, and running hooks
+# to the main code.  A hook is just a named list of of function, that can
+# be run in order later on.
+
+# func_hookable FUNC_NAME
+# -----------------------
+# Declare that FUNC_NAME will run hooks added with
+# 'func_add_hook FUNC_NAME ...'.
+func_hookable ()
+{
+    $debug_cmd
+
+    func_append hookable_fns " $1"
+}
+
+
+# func_add_hook FUNC_NAME HOOK_FUNC
+# ---------------------------------
+# Request that FUNC_NAME call HOOK_FUNC before it returns.  FUNC_NAME must
+# first have been declared "hookable" by a call to 'func_hookable'.
+func_add_hook ()
+{
+    $debug_cmd
+
+    case " $hookable_fns " in
+      *" $1 "*) ;;
+      *) func_fatal_error "'$1' does not accept hook functions." ;;
+    esac
+
+    eval func_append ${1}_hooks '" $2"'
+}
+
+
+# func_remove_hook FUNC_NAME HOOK_FUNC
+# ------------------------------------
+# Remove HOOK_FUNC from the list of functions called by FUNC_NAME.
+func_remove_hook ()
+{
+    $debug_cmd
+
+    eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`'
+}
+
+
+# func_run_hooks FUNC_NAME [ARG]...
+# ---------------------------------
+# Run all hook functions registered to FUNC_NAME.
+# It is assumed that the list of hook functions contains nothing more
+# than a whitespace-delimited list of legal shell function names, and
+# no effort is wasted trying to catch shell meta-characters or preserve
+# whitespace.
+func_run_hooks ()
+{
+    $debug_cmd
+
+    case " $hookable_fns " in
+      *" $1 "*) ;;
+      *) func_fatal_error "'$1' does not support hook funcions.n" ;;
+    esac
+
+    eval _G_hook_fns=\$$1_hooks; shift
+
+    for _G_hook in $_G_hook_fns; do
+      eval $_G_hook '"$@"'
+
+      # store returned options list back into positional
+      # parameters for next 'cmd' execution.
+      eval _G_hook_result=\$${_G_hook}_result
+      eval set dummy "$_G_hook_result"; shift
+    done
+
+    func_quote_for_eval ${1+"$@"}
+    func_run_hooks_result=$func_quote_for_eval_result
+}
+
+
+
+## --------------- ##
+## Option parsing. ##
+## --------------- ##
+
+# In order to add your own option parsing hooks, you must accept the
+# full positional parameter list in your hook function, remove any
+# options that you action, and then pass back the remaining unprocessed
+# options in '<hooked_function_name>_result', escaped suitably for
+# 'eval'.  Like this:
+#
+#    my_options_prep ()
+#    {
+#        $debug_cmd
+#
+#        # Extend the existing usage message.
+#        usage_message=$usage_message'
+#      -s, --silent       don'\''t print informational messages
+#    '
+#
+#        func_quote_for_eval ${1+"$@"}
+#        my_options_prep_result=$func_quote_for_eval_result
+#    }
+#    func_add_hook func_options_prep my_options_prep
+#
+#
+#    my_silent_option ()
+#    {
+#        $debug_cmd
+#
+#        # Note that for efficiency, we parse as many options as we can
+#        # recognise in a loop before passing the remainder back to the
+#        # caller on the first unrecognised argument we encounter.
+#        while test $# -gt 0; do
+#          opt=$1; shift
+#          case $opt in
+#            --silent|-s) opt_silent=: ;;
+#            # Separate non-argument short options:
+#            -s*)         func_split_short_opt "$_G_opt"
+#                         set dummy "$func_split_short_opt_name" \
+#                             "-$func_split_short_opt_arg" ${1+"$@"}
+#                         shift
+#                         ;;
+#            *)            set dummy "$_G_opt" "$*"; shift; break ;;
+#          esac
+#        done
+#
+#        func_quote_for_eval ${1+"$@"}
+#        my_silent_option_result=$func_quote_for_eval_result
+#    }
+#    func_add_hook func_parse_options my_silent_option
+#
+#
+#    my_option_validation ()
+#    {
+#        $debug_cmd
+#
+#        $opt_silent && $opt_verbose && func_fatal_help "\
+#    '--silent' and '--verbose' options are mutually exclusive."
+#
+#        func_quote_for_eval ${1+"$@"}
+#        my_option_validation_result=$func_quote_for_eval_result
+#    }
+#    func_add_hook func_validate_options my_option_validation
+#
+# You'll alse need to manually amend $usage_message to reflect the extra
+# options you parse.  It's preferable to append if you can, so that
+# multiple option parsing hooks can be added safely.
+
+
+# func_options [ARG]...
+# ---------------------
+# All the functions called inside func_options are hookable. See the
+# individual implementations for details.
+func_hookable func_options
+func_options ()
+{
+    $debug_cmd
+
+    func_options_prep ${1+"$@"}
+    eval func_parse_options \
+        ${func_options_prep_result+"$func_options_prep_result"}
+    eval func_validate_options \
+        ${func_parse_options_result+"$func_parse_options_result"}
+
+    eval func_run_hooks func_options \
+        ${func_validate_options_result+"$func_validate_options_result"}
+
+    # save modified positional parameters for caller
+    func_options_result=$func_run_hooks_result
+}
+
+
+# func_options_prep [ARG]...
+# --------------------------
+# All initialisations required before starting the option parse loop.
+# Note that when calling hook functions, we pass through the list of
+# positional parameters.  If a hook function modifies that list, and
+# needs to propogate that back to rest of this script, then the complete
+# modified list must be put in 'func_run_hooks_result' before
+# returning.
+func_hookable func_options_prep
+func_options_prep ()
+{
+    $debug_cmd
+
+    # Option defaults:
+    opt_verbose=false
+    opt_warning_types=
+
+    func_run_hooks func_options_prep ${1+"$@"}
+
+    # save modified positional parameters for caller
+    func_options_prep_result=$func_run_hooks_result
+}
+
+
+# func_parse_options [ARG]...
+# ---------------------------
+# The main option parsing loop.
+func_hookable func_parse_options
+func_parse_options ()
+{
+    $debug_cmd
+
+    func_parse_options_result=
+
+    # this just eases exit handling
+    while test $# -gt 0; do
+      # Defer to hook functions for initial option parsing, so they
+      # get priority in the event of reusing an option name.
+      func_run_hooks func_parse_options ${1+"$@"}
+
+      # Adjust func_parse_options positional parameters to match
+      eval set dummy "$func_run_hooks_result"; shift
+
+      # Break out of the loop if we already parsed every option.
+      test $# -gt 0 || break
+
+      _G_opt=$1
+      shift
+      case $_G_opt in
+        --debug|-x)   debug_cmd='set -x'
+                      func_echo "enabling shell trace mode"
+                      $debug_cmd
+                      ;;
+
+        --no-warnings|--no-warning|--no-warn)
+                      set dummy --warnings none ${1+"$@"}
+                      shift
+		      ;;
+
+        --warnings|--warning|-W)
+                      test $# = 0 && func_missing_arg $_G_opt && break
+                      case " $warning_categories $1" in
+                        *" $1 "*)
+                          # trailing space prevents matching last $1 above
+                          func_append_uniq opt_warning_types " $1"
+                          ;;
+                        *all)
+                          opt_warning_types=$warning_categories
+                          ;;
+                        *none)
+                          opt_warning_types=none
+                          warning_func=:
+                          ;;
+                        *error)
+                          opt_warning_types=$warning_categories
+                          warning_func=func_fatal_error
+                          ;;
+                        *)
+                          func_fatal_error \
+                             "unsupported warning category: '$1'"
+                          ;;
+                      esac
+                      shift
+                      ;;
+
+        --verbose|-v) opt_verbose=: ;;
+        --version)    func_version ;;
+        -\?|-h)       func_usage ;;
+        --help)       func_help ;;
+
+	# Separate optargs to long options (plugins may need this):
+	--*=*)        func_split_equals "$_G_opt"
+	              set dummy "$func_split_equals_lhs" \
+                          "$func_split_equals_rhs" ${1+"$@"}
+                      shift
+                      ;;
+
+       # Separate optargs to short options:
+        -W*)
+                      func_split_short_opt "$_G_opt"
+                      set dummy "$func_split_short_opt_name" \
+                          "$func_split_short_opt_arg" ${1+"$@"}
+                      shift
+                      ;;
+
+        # Separate non-argument short options:
+        -\?*|-h*|-v*|-x*)
+                      func_split_short_opt "$_G_opt"
+                      set dummy "$func_split_short_opt_name" \
+                          "-$func_split_short_opt_arg" ${1+"$@"}
+                      shift
+                      ;;
+
+        --)           break ;;
+        -*)           func_fatal_help "unrecognised option: '$_G_opt'" ;;
+        *)            set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
+      esac
+    done
+
+    # save modified positional parameters for caller
+    func_quote_for_eval ${1+"$@"}
+    func_parse_options_result=$func_quote_for_eval_result
+}
+
+
+# func_validate_options [ARG]...
+# ------------------------------
+# Perform any sanity checks on option settings and/or unconsumed
+# arguments.
+func_hookable func_validate_options
+func_validate_options ()
+{
+    $debug_cmd
+
+    # Display all warnings if -W was not given.
+    test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
+
+    func_run_hooks func_validate_options ${1+"$@"}
+
+    # Bail if the options were screwed!
+    $exit_cmd $EXIT_FAILURE
+
+    # save modified positional parameters for caller
+    func_validate_options_result=$func_run_hooks_result
+}
+
+
+
+## ----------------- ##
+## Helper functions. ##
+## ----------------- ##
+
+# This section contains the helper functions used by the rest of the
+# hookable option parser framework in ascii-betical order.
+
+
+# func_fatal_help ARG...
+# ----------------------
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+    $debug_cmd
+
+    eval \$ECHO \""Usage: $usage"\"
+    eval \$ECHO \""$fatal_help"\"
+    func_error ${1+"$@"}
+    exit $EXIT_FAILURE
+}
+
+
+# func_help
+# ---------
+# Echo long help message to standard output and exit.
+func_help ()
+{
+    $debug_cmd
+
+    func_usage_message
+    $ECHO "$long_help_message"
+    exit 0
+}
+
+
+# func_missing_arg ARGNAME
+# ------------------------
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+    $debug_cmd
+
+    func_error "Missing argument for '$1'."
+    exit_cmd=exit
+}
+
+
+# func_split_equals STRING
+# ------------------------
+# Set func_split_equals_lhs and func_split_equals_rhs shell variables after
+# splitting STRING at the '=' sign.
+test -z "$_G_HAVE_XSI_OPS" \
+    && (eval 'x=a/b/c;
+      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
+    && _G_HAVE_XSI_OPS=yes
+
+if test yes = "$_G_HAVE_XSI_OPS"
+then
+  # This is an XSI compatible shell, allowing a faster implementation...
+  eval 'func_split_equals ()
+  {
+      $debug_cmd
+
+      func_split_equals_lhs=${1%%=*}
+      func_split_equals_rhs=${1#*=}
+      test "x$func_split_equals_lhs" = "x$1" \
+        && func_split_equals_rhs=
+  }'
+else
+  # ...otherwise fall back to using expr, which is often a shell builtin.
+  func_split_equals ()
+  {
+      $debug_cmd
+
+      func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
+      func_split_equals_rhs=
+      test "x$func_split_equals_lhs" = "x$1" \
+        || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
+  }
+fi #func_split_equals
+
+
+# func_split_short_opt SHORTOPT
+# -----------------------------
+# Set func_split_short_opt_name and func_split_short_opt_arg shell
+# variables after splitting SHORTOPT after the 2nd character.
+if test yes = "$_G_HAVE_XSI_OPS"
+then
+  # This is an XSI compatible shell, allowing a faster implementation...
+  eval 'func_split_short_opt ()
+  {
+      $debug_cmd
+
+      func_split_short_opt_arg=${1#??}
+      func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
+  }'
+else
+  # ...otherwise fall back to using expr, which is often a shell builtin.
+  func_split_short_opt ()
+  {
+      $debug_cmd
+
+      func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'`
+      func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
+  }
+fi #func_split_short_opt
+
+
+# func_usage
+# ----------
+# Echo short help message to standard output and exit.
+func_usage ()
+{
+    $debug_cmd
+
+    func_usage_message
+    $ECHO "Run '$progname --help |${PAGER-more}' for full usage"
+    exit 0
+}
+
+
+# func_usage_message
+# ------------------
+# Echo short help message to standard output.
+func_usage_message ()
+{
+    $debug_cmd
+
+    eval \$ECHO \""Usage: $usage"\"
+    echo
+    $SED -n 's|^# ||
+        /^Written by/{
+          x;p;x
+        }
+	h
+	/^Written by/q' < "$progpath"
+    echo
+    eval \$ECHO \""$usage_message"\"
+}
+
+
+# func_version
+# ------------
+# Echo version message to standard output and exit.
+func_version ()
+{
+    $debug_cmd
+
+    printf '%s\n' "$progname $scriptversion"
+    $SED -n '
+        /(C)/!b go
+        :more
+        /\./!{
+          N
+          s|\n# | |
+          b more
+        }
+        :go
+        /^# Written by /,/# warranty; / {
+          s|^# ||
+          s|^# *$||
+          s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
+          p
+        }
+        /^# Written by / {
+          s|^# ||
+          p
+        }
+        /^warranty; /q' < "$progpath"
+
+    exit $?
+}
+
+
+# Local variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-time-zone: "UTC"
+# End:
+
+# Set a version string.
+scriptversion='(GNU libtool) 2.4.6'
+
+
+# func_echo ARG...
+# ----------------
+# Libtool also displays the current mode in messages, so override
+# funclib.sh func_echo with this custom definition.
+func_echo ()
+{
+    $debug_cmd
+
+    _G_message=$*
+
+    func_echo_IFS=$IFS
+    IFS=$nl
+    for _G_line in $_G_message; do
+      IFS=$func_echo_IFS
+      $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line"
+    done
+    IFS=$func_echo_IFS
+}
+
+
+# func_warning ARG...
+# -------------------
+# Libtool warnings are not categorized, so override funclib.sh
+# func_warning with this simpler definition.
+func_warning ()
+{
+    $debug_cmd
+
+    $warning_func ${1+"$@"}
+}
+
+
+## ---------------- ##
+## Options parsing. ##
+## ---------------- ##
+
+# Hook in the functions to make sure our own options are parsed during
+# the option parsing loop.
+
+usage='$progpath [OPTION]... [MODE-ARG]...'
+
+# Short help message in response to '-h'.
+usage_message="Options:
+       --config             show all configuration variables
+       --debug              enable verbose shell tracing
+   -n, --dry-run            display commands without modifying any files
+       --features           display basic configuration information and exit
+       --mode=MODE          use operation mode MODE
+       --no-warnings        equivalent to '-Wnone'
+       --preserve-dup-deps  don't remove duplicate dependency libraries
+       --quiet, --silent    don't print informational messages
+       --tag=TAG            use configuration variables from tag TAG
+   -v, --verbose            print more informational messages than default
+       --version            print version information
+   -W, --warnings=CATEGORY  report the warnings falling in CATEGORY [all]
+   -h, --help, --help-all   print short, long, or detailed help message
+"
+
+# Additional text appended to 'usage_message' in response to '--help'.
+func_help ()
+{
+    $debug_cmd
+
+    func_usage_message
+    $ECHO "$long_help_message
+
+MODE must be one of the following:
+
+       clean           remove files from the build directory
+       compile         compile a source file into a libtool object
+       execute         automatically set library path, then run a program
+       finish          complete the installation of libtool libraries
+       install         install libraries or executables
+       link            create a library or an executable
+       uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  When passed as first option,
+'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that.
+Try '$progname --help --mode=MODE' for a more detailed description of MODE.
+
+When reporting a bug, please describe a test case to reproduce it and
+include the following information:
+
+       host-triplet:   $host
+       shell:          $SHELL
+       compiler:       $LTCC
+       compiler flags: $LTCFLAGS
+       linker:         $LD (gnu? $with_gnu_ld)
+       version:        $progname (GNU libtool) 2.4.6
+       automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
+       autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
+
+Report bugs to <bug-libtool at gnu.org>.
+GNU libtool home page: <http://www.gnu.org/s/libtool/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>."
+    exit 0
+}
+
+
+# func_lo2o OBJECT-NAME
+# ---------------------
+# Transform OBJECT-NAME from a '.lo' suffix to the platform specific
+# object suffix.
+
+lo2o=s/\\.lo\$/.$objext/
+o2lo=s/\\.$objext\$/.lo/
+
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  eval 'func_lo2o ()
+  {
+    case $1 in
+      *.lo) func_lo2o_result=${1%.lo}.$objext ;;
+      *   ) func_lo2o_result=$1               ;;
+    esac
+  }'
+
+  # func_xform LIBOBJ-OR-SOURCE
+  # ---------------------------
+  # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise)
+  # suffix to a '.lo' libtool-object suffix.
+  eval 'func_xform ()
+  {
+    func_xform_result=${1%.*}.lo
+  }'
+else
+  # ...otherwise fall back to using sed.
+  func_lo2o ()
+  {
+    func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"`
+  }
+
+  func_xform ()
+  {
+    func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'`
+  }
+fi
+
+
+# func_fatal_configuration ARG...
+# -------------------------------
+# Echo program name prefixed message to standard error, followed by
+# a configuration failure hint, and exit.
+func_fatal_configuration ()
+{
+    func__fatal_error ${1+"$@"} \
+      "See the $PACKAGE documentation for more information." \
+      "Fatal configuration error."
+}
+
+
+# func_config
+# -----------
+# Display the configuration for all the tags in this script.
+func_config ()
+{
+    re_begincf='^# ### BEGIN LIBTOOL'
+    re_endcf='^# ### END LIBTOOL'
+
+    # Default configuration.
+    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
+
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
+    done
+
+    exit $?
+}
+
+
+# func_features
+# -------------
+# Display the features supported by this script.
+func_features ()
+{
+    echo "host: $host"
+    if test yes = "$build_libtool_libs"; then
+      echo "enable shared libraries"
+    else
+      echo "disable shared libraries"
+    fi
+    if test yes = "$build_old_libs"; then
+      echo "enable static libraries"
+    else
+      echo "disable static libraries"
+    fi
+
+    exit $?
+}
+
+
+# func_enable_tag TAGNAME
+# -----------------------
+# Verify that TAGNAME is valid, and either flag an error and exit, or
+# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
+# variable here.
+func_enable_tag ()
+{
+    # Global variable:
+    tagname=$1
+
+    re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+    re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+    sed_extractcf=/$re_begincf/,/$re_endcf/p
+
+    # Validate tagname.
+    case $tagname in
+      *[!-_A-Za-z0-9,/]*)
+        func_fatal_error "invalid tag name: $tagname"
+        ;;
+    esac
+
+    # Don't test for the "default" C tag, as we know it's
+    # there but not specially marked.
+    case $tagname in
+        CC) ;;
+    *)
+        if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+	  taglist="$taglist $tagname"
+
+	  # Evaluate the configuration.  Be careful to quote the path
+	  # and the sed script, to avoid splitting on whitespace, but
+	  # also don't use non-portable quotes within backquotes within
+	  # quotes we have to do it in 2 steps:
+	  extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+	  eval "$extractedcf"
+        else
+	  func_error "ignoring unknown tag $tagname"
+        fi
+        ;;
+    esac
+}
+
+
+# func_check_version_match
+# ------------------------
+# Ensure that we are using m4 macros, and libtool script from the same
+# release of libtool.
+func_check_version_match ()
+{
+    if test "$package_revision" != "$macro_revision"; then
+      if test "$VERSION" != "$macro_version"; then
+        if test -z "$macro_version"; then
+          cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from an older release.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+        else
+          cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+        fi
+      else
+        cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+$progname: of $PACKAGE $VERSION and run autoconf again.
+_LT_EOF
+      fi
+
+      exit $EXIT_MISMATCH
+    fi
+}
+
+
+# libtool_options_prep [ARG]...
+# -----------------------------
+# Preparation for options parsed by libtool.
+libtool_options_prep ()
+{
+    $debug_mode
+
+    # Option defaults:
+    opt_config=false
+    opt_dlopen=
+    opt_dry_run=false
+    opt_help=false
+    opt_mode=
+    opt_preserve_dup_deps=false
+    opt_quiet=false
+
+    nonopt=
+    preserve_args=
+
+    # Shorthand for --mode=foo, only valid as the first argument
+    case $1 in
+    clean|clea|cle|cl)
+      shift; set dummy --mode clean ${1+"$@"}; shift
+      ;;
+    compile|compil|compi|comp|com|co|c)
+      shift; set dummy --mode compile ${1+"$@"}; shift
+      ;;
+    execute|execut|execu|exec|exe|ex|e)
+      shift; set dummy --mode execute ${1+"$@"}; shift
+      ;;
+    finish|finis|fini|fin|fi|f)
+      shift; set dummy --mode finish ${1+"$@"}; shift
+      ;;
+    install|instal|insta|inst|ins|in|i)
+      shift; set dummy --mode install ${1+"$@"}; shift
+      ;;
+    link|lin|li|l)
+      shift; set dummy --mode link ${1+"$@"}; shift
+      ;;
+    uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+      shift; set dummy --mode uninstall ${1+"$@"}; shift
+      ;;
+    esac
+
+    # Pass back the list of options.
+    func_quote_for_eval ${1+"$@"}
+    libtool_options_prep_result=$func_quote_for_eval_result
+}
+func_add_hook func_options_prep libtool_options_prep
+
+
+# libtool_parse_options [ARG]...
+# ---------------------------------
+# Provide handling for libtool specific options.
+libtool_parse_options ()
+{
+    $debug_cmd
+
+    # Perform our own loop to consume as many options as possible in
+    # each iteration.
+    while test $# -gt 0; do
+      _G_opt=$1
+      shift
+      case $_G_opt in
+        --dry-run|--dryrun|-n)
+                        opt_dry_run=:
+                        ;;
+
+        --config)       func_config ;;
+
+        --dlopen|-dlopen)
+                        opt_dlopen="${opt_dlopen+$opt_dlopen
+}$1"
+                        shift
+                        ;;
+
+        --preserve-dup-deps)
+                        opt_preserve_dup_deps=: ;;
+
+        --features)     func_features ;;
+
+        --finish)       set dummy --mode finish ${1+"$@"}; shift ;;
+
+        --help)         opt_help=: ;;
+
+        --help-all)     opt_help=': help-all' ;;
+
+        --mode)         test $# = 0 && func_missing_arg $_G_opt && break
+                        opt_mode=$1
+                        case $1 in
+                          # Valid mode arguments:
+                          clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+                          # Catch anything else as an error
+                          *) func_error "invalid argument for $_G_opt"
+                             exit_cmd=exit
+                             break
+                             ;;
+                        esac
+                        shift
+                        ;;
+
+        --no-silent|--no-quiet)
+                        opt_quiet=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --no-warnings|--no-warning|--no-warn)
+                        opt_warning=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --no-verbose)
+                        opt_verbose=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --silent|--quiet)
+                        opt_quiet=:
+                        opt_verbose=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --tag)          test $# = 0 && func_missing_arg $_G_opt && break
+                        opt_tag=$1
+                        func_append preserve_args " $_G_opt $1"
+                        func_enable_tag "$1"
+                        shift
+                        ;;
+
+        --verbose|-v)   opt_quiet=false
+                        opt_verbose=:
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+	# An option not handled by this hook function:
+        *)		set dummy "$_G_opt" ${1+"$@"};	shift; break  ;;
+      esac
+    done
+
+
+    # save modified positional parameters for caller
+    func_quote_for_eval ${1+"$@"}
+    libtool_parse_options_result=$func_quote_for_eval_result
+}
+func_add_hook func_parse_options libtool_parse_options
+
+
+
+# libtool_validate_options [ARG]...
+# ---------------------------------
+# Perform any sanity checks on option settings and/or unconsumed
+# arguments.
+libtool_validate_options ()
+{
+    # save first non-option argument
+    if test 0 -lt $#; then
+      nonopt=$1
+      shift
+    fi
+
+    # preserve --debug
+    test : = "$debug_cmd" || func_append preserve_args " --debug"
+
+    case $host in
+      # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
+      # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
+      *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
+        # don't eliminate duplications in $postdeps and $predeps
+        opt_duplicate_compiler_generated_deps=:
+        ;;
+      *)
+        opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
+        ;;
+    esac
+
+    $opt_help || {
+      # Sanity checks first:
+      func_check_version_match
+
+      test yes != "$build_libtool_libs" \
+        && test yes != "$build_old_libs" \
+        && func_fatal_configuration "not configured to build any kind of library"
+
+      # Darwin sucks
+      eval std_shrext=\"$shrext_cmds\"
+
+      # Only execute mode is allowed to have -dlopen flags.
+      if test -n "$opt_dlopen" && test execute != "$opt_mode"; then
+        func_error "unrecognized option '-dlopen'"
+        $ECHO "$help" 1>&2
+        exit $EXIT_FAILURE
+      fi
+
+      # Change the help message to a mode-specific one.
+      generic_help=$help
+      help="Try '$progname --help --mode=$opt_mode' for more information."
+    }
+
+    # Pass back the unparsed argument list
+    func_quote_for_eval ${1+"$@"}
+    libtool_validate_options_result=$func_quote_for_eval_result
+}
+func_add_hook func_validate_options libtool_validate_options
+
+
+# Process options as early as possible so that --help and --version
+# can return quickly.
+func_options ${1+"$@"}
+eval set dummy "$func_options_result"; shift
+
+
+
+## ----------- ##
+##    Main.    ##
+## ----------- ##
+
+magic='%%%MAGIC variable%%%'
+magic_exe='%%%MAGIC EXE variable%%%'
+
+# Global variables.
+extracted_archives=
+extracted_serial=0
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+
+# func_generated_by_libtool
+# True iff stdin has been generated by Libtool. This function is only
+# a basic sanity check; it will hardly flush out determined imposters.
+func_generated_by_libtool_p ()
+{
+  $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
+# func_lalib_p file
+# True iff FILE is a libtool '.la' library or '.lo' object file.
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_lalib_p ()
+{
+    test -f "$1" &&
+      $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p
+}
+
+# func_lalib_unsafe_p file
+# True iff FILE is a libtool '.la' library or '.lo' object file.
+# This function implements the same check as func_lalib_p without
+# resorting to external programs.  To this end, it redirects stdin and
+# closes it afterwards, without saving the original file descriptor.
+# As a safety measure, use it only where a negative result would be
+# fatal anyway.  Works if 'file' does not exist.
+func_lalib_unsafe_p ()
+{
+    lalib_p=no
+    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
+	for lalib_p_l in 1 2 3 4
+	do
+	    read lalib_p_line
+	    case $lalib_p_line in
+		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
+	    esac
+	done
+	exec 0<&5 5<&-
+    fi
+    test yes = "$lalib_p"
+}
+
+# func_ltwrapper_script_p file
+# True iff FILE is a libtool wrapper script
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_script_p ()
+{
+    test -f "$1" &&
+      $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p
+}
+
+# func_ltwrapper_executable_p file
+# True iff FILE is a libtool wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_executable_p ()
+{
+    func_ltwrapper_exec_suffix=
+    case $1 in
+    *.exe) ;;
+    *) func_ltwrapper_exec_suffix=.exe ;;
+    esac
+    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
+}
+
+# func_ltwrapper_scriptname file
+# Assumes file is an ltwrapper_executable
+# uses $file to determine the appropriate filename for a
+# temporary ltwrapper_script.
+func_ltwrapper_scriptname ()
+{
+    func_dirname_and_basename "$1" "" "."
+    func_stripname '' '.exe' "$func_basename_result"
+    func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper
+}
+
+# func_ltwrapper_p file
+# True iff FILE is a libtool wrapper script or wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_p ()
+{
+    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
+}
+
+
+# func_execute_cmds commands fail_cmd
+# Execute tilde-delimited COMMANDS.
+# If FAIL_CMD is given, eval that upon failure.
+# FAIL_CMD may read-access the current command in variable CMD!
+func_execute_cmds ()
+{
+    $debug_cmd
+
+    save_ifs=$IFS; IFS='~'
+    for cmd in $1; do
+      IFS=$sp$nl
+      eval cmd=\"$cmd\"
+      IFS=$save_ifs
+      func_show_eval "$cmd" "${2-:}"
+    done
+    IFS=$save_ifs
+}
+
+
+# func_source file
+# Source FILE, adding directory component if necessary.
+# Note that it is not necessary on cygwin/mingw to append a dot to
+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
+# behavior happens only for exec(3), not for open(2)!  Also, sourcing
+# 'FILE.' does not work on cygwin managed mounts.
+func_source ()
+{
+    $debug_cmd
+
+    case $1 in
+    */* | *\\*)	. "$1" ;;
+    *)		. "./$1" ;;
+    esac
+}
+
+
+# func_resolve_sysroot PATH
+# Replace a leading = in PATH with a sysroot.  Store the result into
+# func_resolve_sysroot_result
+func_resolve_sysroot ()
+{
+  func_resolve_sysroot_result=$1
+  case $func_resolve_sysroot_result in
+  =*)
+    func_stripname '=' '' "$func_resolve_sysroot_result"
+    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
+    ;;
+  esac
+}
+
+# func_replace_sysroot PATH
+# If PATH begins with the sysroot, replace it with = and
+# store the result into func_replace_sysroot_result.
+func_replace_sysroot ()
+{
+  case $lt_sysroot:$1 in
+  ?*:"$lt_sysroot"*)
+    func_stripname "$lt_sysroot" '' "$1"
+    func_replace_sysroot_result='='$func_stripname_result
+    ;;
+  *)
+    # Including no sysroot.
+    func_replace_sysroot_result=$1
+    ;;
+  esac
+}
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+    $debug_cmd
+
+    if test -n "$available_tags" && test -z "$tagname"; then
+      CC_quoted=
+      for arg in $CC; do
+	func_append_quoted CC_quoted "$arg"
+      done
+      CC_expanded=`func_echo_all $CC`
+      CC_quoted_expanded=`func_echo_all $CC_quoted`
+      case $@ in
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when configure was run.
+      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
+      # Blanks at the start of $base_compile will cause this to fail
+      # if we don't check for them as well.
+      *)
+	for z in $available_tags; do
+	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+	    # Evaluate the configuration.
+	    eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+	    CC_quoted=
+	    for arg in $CC; do
+	      # Double-quote args containing other shell metacharacters.
+	      func_append_quoted CC_quoted "$arg"
+	    done
+	    CC_expanded=`func_echo_all $CC`
+	    CC_quoted_expanded=`func_echo_all $CC_quoted`
+	    case "$@ " in
+	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
+	      # The compiler in the base compile command matches
+	      # the one in the tagged configuration.
+	      # Assume this is the tagged configuration we want.
+	      tagname=$z
+	      break
+	      ;;
+	    esac
+	  fi
+	done
+	# If $tagname still isn't set, then no tagged configuration
+	# was found and let the user know that the "--tag" command
+	# line option must be used.
+	if test -z "$tagname"; then
+	  func_echo "unable to infer tagged configuration"
+	  func_fatal_error "specify a tag with '--tag'"
+#	else
+#	  func_verbose "using $tagname tagged configuration"
+	fi
+	;;
+      esac
+    fi
+}
+
+
+
+# func_write_libtool_object output_name pic_name nonpic_name
+# Create a libtool object file (analogous to a ".la" file),
+# but don't create it if we're doing a dry run.
+func_write_libtool_object ()
+{
+    write_libobj=$1
+    if test yes = "$build_libtool_libs"; then
+      write_lobj=\'$2\'
+    else
+      write_lobj=none
+    fi
+
+    if test yes = "$build_old_libs"; then
+      write_oldobj=\'$3\'
+    else
+      write_oldobj=none
+    fi
+
+    $opt_dry_run || {
+      cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object=$write_lobj
+
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
+
+EOF
+      $MV "${write_libobj}T" "$write_libobj"
+    }
+}
+
+
+##################################################
+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
+##################################################
+
+# func_convert_core_file_wine_to_w32 ARG
+# Helper function used by file name conversion functions when $build is *nix,
+# and $host is mingw, cygwin, or some other w32 environment. Relies on a
+# correctly configured wine environment available, with the winepath program
+# in $build's $PATH.
+#
+# ARG is the $build file name to be converted to w32 format.
+# Result is available in $func_convert_core_file_wine_to_w32_result, and will
+# be empty on error (or when ARG is empty)
+func_convert_core_file_wine_to_w32 ()
+{
+  $debug_cmd
+
+  func_convert_core_file_wine_to_w32_result=$1
+  if test -n "$1"; then
+    # Unfortunately, winepath does not exit with a non-zero error code, so we
+    # are forced to check the contents of stdout. On the other hand, if the
+    # command is not found, the shell will set an exit code of 127 and print
+    # *an error message* to stdout. So we must check for both error code of
+    # zero AND non-empty stdout, which explains the odd construction:
+    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
+    if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then
+      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
+        $SED -e "$sed_naive_backslashify"`
+    else
+      func_convert_core_file_wine_to_w32_result=
+    fi
+  fi
+}
+# end: func_convert_core_file_wine_to_w32
+
+
+# func_convert_core_path_wine_to_w32 ARG
+# Helper function used by path conversion functions when $build is *nix, and
+# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
+# configured wine environment available, with the winepath program in $build's
+# $PATH. Assumes ARG has no leading or trailing path separator characters.
+#
+# ARG is path to be converted from $build format to win32.
+# Result is available in $func_convert_core_path_wine_to_w32_result.
+# Unconvertible file (directory) names in ARG are skipped; if no directory names
+# are convertible, then the result may be empty.
+func_convert_core_path_wine_to_w32 ()
+{
+  $debug_cmd
+
+  # unfortunately, winepath doesn't convert paths, only file names
+  func_convert_core_path_wine_to_w32_result=
+  if test -n "$1"; then
+    oldIFS=$IFS
+    IFS=:
+    for func_convert_core_path_wine_to_w32_f in $1; do
+      IFS=$oldIFS
+      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
+      if test -n "$func_convert_core_file_wine_to_w32_result"; then
+        if test -z "$func_convert_core_path_wine_to_w32_result"; then
+          func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result
+        else
+          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
+        fi
+      fi
+    done
+    IFS=$oldIFS
+  fi
+}
+# end: func_convert_core_path_wine_to_w32
+
+
+# func_cygpath ARGS...
+# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
+# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
+# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
+# (2), returns the Cygwin file name or path in func_cygpath_result (input
+# file name or path is assumed to be in w32 format, as previously converted
+# from $build's *nix or MSYS format). In case (3), returns the w32 file name
+# or path in func_cygpath_result (input file name or path is assumed to be in
+# Cygwin format). Returns an empty string on error.
+#
+# ARGS are passed to cygpath, with the last one being the file name or path to
+# be converted.
+#
+# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
+# environment variable; do not put it in $PATH.
+func_cygpath ()
+{
+  $debug_cmd
+
+  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
+    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
+    if test "$?" -ne 0; then
+      # on failure, ensure result is empty
+      func_cygpath_result=
+    fi
+  else
+    func_cygpath_result=
+    func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'"
+  fi
+}
+#end: func_cygpath
+
+
+# func_convert_core_msys_to_w32 ARG
+# Convert file name or path ARG from MSYS format to w32 format.  Return
+# result in func_convert_core_msys_to_w32_result.
+func_convert_core_msys_to_w32 ()
+{
+  $debug_cmd
+
+  # awkward: cmd appends spaces to result
+  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
+    $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"`
+}
+#end: func_convert_core_msys_to_w32
+
+
+# func_convert_file_check ARG1 ARG2
+# Verify that ARG1 (a file name in $build format) was converted to $host
+# format in ARG2. Otherwise, emit an error message, but continue (resetting
+# func_to_host_file_result to ARG1).
+func_convert_file_check ()
+{
+  $debug_cmd
+
+  if test -z "$2" && test -n "$1"; then
+    func_error "Could not determine host file name corresponding to"
+    func_error "  '$1'"
+    func_error "Continuing, but uninstalled executables may not work."
+    # Fallback:
+    func_to_host_file_result=$1
+  fi
+}
+# end func_convert_file_check
+
+
+# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
+# Verify that FROM_PATH (a path in $build format) was converted to $host
+# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
+# func_to_host_file_result to a simplistic fallback value (see below).
+func_convert_path_check ()
+{
+  $debug_cmd
+
+  if test -z "$4" && test -n "$3"; then
+    func_error "Could not determine the host path corresponding to"
+    func_error "  '$3'"
+    func_error "Continuing, but uninstalled executables may not work."
+    # Fallback.  This is a deliberately simplistic "conversion" and
+    # should not be "improved".  See libtool.info.
+    if test "x$1" != "x$2"; then
+      lt_replace_pathsep_chars="s|$1|$2|g"
+      func_to_host_path_result=`echo "$3" |
+        $SED -e "$lt_replace_pathsep_chars"`
+    else
+      func_to_host_path_result=$3
+    fi
+  fi
+}
+# end func_convert_path_check
+
+
+# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
+# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
+# and appending REPL if ORIG matches BACKPAT.
+func_convert_path_front_back_pathsep ()
+{
+  $debug_cmd
+
+  case $4 in
+  $1 ) func_to_host_path_result=$3$func_to_host_path_result
+    ;;
+  esac
+  case $4 in
+  $2 ) func_append func_to_host_path_result "$3"
+    ;;
+  esac
+}
+# end func_convert_path_front_back_pathsep
+
+
+##################################################
+# $build to $host FILE NAME CONVERSION FUNCTIONS #
+##################################################
+# invoked via '$to_host_file_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# Result will be available in $func_to_host_file_result.
+
+
+# func_to_host_file ARG
+# Converts the file name ARG from $build format to $host format. Return result
+# in func_to_host_file_result.
+func_to_host_file ()
+{
+  $debug_cmd
+
+  $to_host_file_cmd "$1"
+}
+# end func_to_host_file
+
+
+# func_to_tool_file ARG LAZY
+# converts the file name ARG from $build format to toolchain format. Return
+# result in func_to_tool_file_result.  If the conversion in use is listed
+# in (the comma separated) LAZY, no conversion takes place.
+func_to_tool_file ()
+{
+  $debug_cmd
+
+  case ,$2, in
+    *,"$to_tool_file_cmd",*)
+      func_to_tool_file_result=$1
+      ;;
+    *)
+      $to_tool_file_cmd "$1"
+      func_to_tool_file_result=$func_to_host_file_result
+      ;;
+  esac
+}
+# end func_to_tool_file
+
+
+# func_convert_file_noop ARG
+# Copy ARG to func_to_host_file_result.
+func_convert_file_noop ()
+{
+  func_to_host_file_result=$1
+}
+# end func_convert_file_noop
+
+
+# func_convert_file_msys_to_w32 ARG
+# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper.  Returns result in
+# func_to_host_file_result.
+func_convert_file_msys_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_file_result=$1
+  if test -n "$1"; then
+    func_convert_core_msys_to_w32 "$1"
+    func_to_host_file_result=$func_convert_core_msys_to_w32_result
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_w32
+
+
+# func_convert_file_cygwin_to_w32 ARG
+# Convert file name ARG from Cygwin to w32 format.  Returns result in
+# func_to_host_file_result.
+func_convert_file_cygwin_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_file_result=$1
+  if test -n "$1"; then
+    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
+    # LT_CYGPATH in this case.
+    func_to_host_file_result=`cygpath -m "$1"`
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_cygwin_to_w32
+
+
+# func_convert_file_nix_to_w32 ARG
+# Convert file name ARG from *nix to w32 format.  Requires a wine environment
+# and a working winepath. Returns result in func_to_host_file_result.
+func_convert_file_nix_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_file_result=$1
+  if test -n "$1"; then
+    func_convert_core_file_wine_to_w32 "$1"
+    func_to_host_file_result=$func_convert_core_file_wine_to_w32_result
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_w32
+
+
+# func_convert_file_msys_to_cygwin ARG
+# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_file_msys_to_cygwin ()
+{
+  $debug_cmd
+
+  func_to_host_file_result=$1
+  if test -n "$1"; then
+    func_convert_core_msys_to_w32 "$1"
+    func_cygpath -u "$func_convert_core_msys_to_w32_result"
+    func_to_host_file_result=$func_cygpath_result
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_cygwin
+
+
+# func_convert_file_nix_to_cygwin ARG
+# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
+# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
+# in func_to_host_file_result.
+func_convert_file_nix_to_cygwin ()
+{
+  $debug_cmd
+
+  func_to_host_file_result=$1
+  if test -n "$1"; then
+    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
+    func_convert_core_file_wine_to_w32 "$1"
+    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
+    func_to_host_file_result=$func_cygpath_result
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_cygwin
+
+
+#############################################
+# $build to $host PATH CONVERSION FUNCTIONS #
+#############################################
+# invoked via '$to_host_path_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# The result will be available in $func_to_host_path_result.
+#
+# Path separators are also converted from $build format to $host format.  If
+# ARG begins or ends with a path separator character, it is preserved (but
+# converted to $host format) on output.
+#
+# All path conversion functions are named using the following convention:
+#   file name conversion function    : func_convert_file_X_to_Y ()
+#   path conversion function         : func_convert_path_X_to_Y ()
+# where, for any given $build/$host combination the 'X_to_Y' value is the
+# same.  If conversion functions are added for new $build/$host combinations,
+# the two new functions must follow this pattern, or func_init_to_host_path_cmd
+# will break.
+
+
+# func_init_to_host_path_cmd
+# Ensures that function "pointer" variable $to_host_path_cmd is set to the
+# appropriate value, based on the value of $to_host_file_cmd.
+to_host_path_cmd=
+func_init_to_host_path_cmd ()
+{
+  $debug_cmd
+
+  if test -z "$to_host_path_cmd"; then
+    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
+    to_host_path_cmd=func_convert_path_$func_stripname_result
+  fi
+}
+
+
+# func_to_host_path ARG
+# Converts the path ARG from $build format to $host format. Return result
+# in func_to_host_path_result.
+func_to_host_path ()
+{
+  $debug_cmd
+
+  func_init_to_host_path_cmd
+  $to_host_path_cmd "$1"
+}
+# end func_to_host_path
+
+
+# func_convert_path_noop ARG
+# Copy ARG to func_to_host_path_result.
+func_convert_path_noop ()
+{
+  func_to_host_path_result=$1
+}
+# end func_convert_path_noop
+
+
+# func_convert_path_msys_to_w32 ARG
+# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper.  Returns result in
+# func_to_host_path_result.
+func_convert_path_msys_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_path_result=$1
+  if test -n "$1"; then
+    # Remove leading and trailing path separator characters from ARG.  MSYS
+    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
+    # and winepath ignores them completely.
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+    func_to_host_path_result=$func_convert_core_msys_to_w32_result
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_msys_to_w32
+
+
+# func_convert_path_cygwin_to_w32 ARG
+# Convert path ARG from Cygwin to w32 format.  Returns result in
+# func_to_host_file_result.
+func_convert_path_cygwin_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_path_result=$1
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_cygwin_to_w32
+
+
+# func_convert_path_nix_to_w32 ARG
+# Convert path ARG from *nix to w32 format.  Requires a wine environment and
+# a working winepath.  Returns result in func_to_host_file_result.
+func_convert_path_nix_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_path_result=$1
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+    func_to_host_path_result=$func_convert_core_path_wine_to_w32_result
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_nix_to_w32
+
+
+# func_convert_path_msys_to_cygwin ARG
+# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_path_msys_to_cygwin ()
+{
+  $debug_cmd
+
+  func_to_host_path_result=$1
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
+    func_to_host_path_result=$func_cygpath_result
+    func_convert_path_check : : \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+  fi
+}
+# end func_convert_path_msys_to_cygwin
+
+
+# func_convert_path_nix_to_cygwin ARG
+# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
+# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
+# func_to_host_file_result.
+func_convert_path_nix_to_cygwin ()
+{
+  $debug_cmd
+
+  func_to_host_path_result=$1
+  if test -n "$1"; then
+    # Remove leading and trailing path separator characters from
+    # ARG. msys behavior is inconsistent here, cygpath turns them
+    # into '.;' and ';.', and winepath ignores them completely.
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
+    func_to_host_path_result=$func_cygpath_result
+    func_convert_path_check : : \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+  fi
+}
+# end func_convert_path_nix_to_cygwin
+
+
+# func_dll_def_p FILE
+# True iff FILE is a Windows DLL '.def' file.
+# Keep in sync with _LT_DLL_DEF_P in libtool.m4
+func_dll_def_p ()
+{
+  $debug_cmd
+
+  func_dll_def_p_tmp=`$SED -n \
+    -e 's/^[	 ]*//' \
+    -e '/^\(;.*\)*$/d' \
+    -e 's/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p' \
+    -e q \
+    "$1"`
+  test DEF = "$func_dll_def_p_tmp"
+}
+
+
+# func_mode_compile arg...
+func_mode_compile ()
+{
+    $debug_cmd
+
+    # Get the compilation command and the source file.
+    base_compile=
+    srcfile=$nonopt  #  always keep a non-empty value in "srcfile"
+    suppress_opt=yes
+    suppress_output=
+    arg_mode=normal
+    libobj=
+    later=
+    pie_flag=
+
+    for arg
+    do
+      case $arg_mode in
+      arg  )
+	# do not "continue".  Instead, add this to base_compile
+	lastarg=$arg
+	arg_mode=normal
+	;;
+
+      target )
+	libobj=$arg
+	arg_mode=normal
+	continue
+	;;
+
+      normal )
+	# Accept any command-line options.
+	case $arg in
+	-o)
+	  test -n "$libobj" && \
+	    func_fatal_error "you cannot specify '-o' more than once"
+	  arg_mode=target
+	  continue
+	  ;;
+
+	-pie | -fpie | -fPIE)
+          func_append pie_flag " $arg"
+	  continue
+	  ;;
+
+	-shared | -static | -prefer-pic | -prefer-non-pic)
+	  func_append later " $arg"
+	  continue
+	  ;;
+
+	-no-suppress)
+	  suppress_opt=no
+	  continue
+	  ;;
+
+	-Xcompiler)
+	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
+	  continue      #  The current "srcfile" will either be retained or
+	  ;;            #  replaced later.  I would guess that would be a bug.
+
+	-Wc,*)
+	  func_stripname '-Wc,' '' "$arg"
+	  args=$func_stripname_result
+	  lastarg=
+	  save_ifs=$IFS; IFS=,
+	  for arg in $args; do
+	    IFS=$save_ifs
+	    func_append_quoted lastarg "$arg"
+	  done
+	  IFS=$save_ifs
+	  func_stripname ' ' '' "$lastarg"
+	  lastarg=$func_stripname_result
+
+	  # Add the arguments to base_compile.
+	  func_append base_compile " $lastarg"
+	  continue
+	  ;;
+
+	*)
+	  # Accept the current argument as the source file.
+	  # The previous "srcfile" becomes the current argument.
+	  #
+	  lastarg=$srcfile
+	  srcfile=$arg
+	  ;;
+	esac  #  case $arg
+	;;
+      esac    #  case $arg_mode
+
+      # Aesthetically quote the previous argument.
+      func_append_quoted base_compile "$lastarg"
+    done # for arg
+
+    case $arg_mode in
+    arg)
+      func_fatal_error "you must specify an argument for -Xcompile"
+      ;;
+    target)
+      func_fatal_error "you must specify a target with '-o'"
+      ;;
+    *)
+      # Get the name of the library object.
+      test -z "$libobj" && {
+	func_basename "$srcfile"
+	libobj=$func_basename_result
+      }
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    case $libobj in
+    *.[cCFSifmso] | \
+    *.ada | *.adb | *.ads | *.asm | \
+    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
+    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
+      func_xform "$libobj"
+      libobj=$func_xform_result
+      ;;
+    esac
+
+    case $libobj in
+    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
+    *)
+      func_fatal_error "cannot determine name of library object from '$libobj'"
+      ;;
+    esac
+
+    func_infer_tag $base_compile
+
+    for arg in $later; do
+      case $arg in
+      -shared)
+	test yes = "$build_libtool_libs" \
+	  || func_fatal_configuration "cannot build a shared library"
+	build_old_libs=no
+	continue
+	;;
+
+      -static)
+	build_libtool_libs=no
+	build_old_libs=yes
+	continue
+	;;
+
+      -prefer-pic)
+	pic_mode=yes
+	continue
+	;;
+
+      -prefer-non-pic)
+	pic_mode=no
+	continue
+	;;
+      esac
+    done
+
+    func_quote_for_eval "$libobj"
+    test "X$libobj" != "X$func_quote_for_eval_result" \
+      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
+      && func_warning "libobj name '$libobj' may not contain shell special characters."
+    func_dirname_and_basename "$obj" "/" ""
+    objname=$func_basename_result
+    xdir=$func_dirname_result
+    lobj=$xdir$objdir/$objname
+
+    test -z "$base_compile" && \
+      func_fatal_help "you must specify a compilation command"
+
+    # Delete any leftover library objects.
+    if test yes = "$build_old_libs"; then
+      removelist="$obj $lobj $libobj ${libobj}T"
+    else
+      removelist="$lobj $libobj ${libobj}T"
+    fi
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2* | cegcc*)
+      pic_mode=default
+      ;;
+    esac
+    if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test no = "$compiler_c_o"; then
+      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext
+      lockfile=$output_obj.lock
+    else
+      output_obj=
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test yes = "$need_locks"; then
+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+	func_echo "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    elif test warn = "$need_locks"; then
+      if test -f "$lockfile"; then
+	$ECHO "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support '-c' and '-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$opt_dry_run || $RM $removelist
+	exit $EXIT_FAILURE
+      fi
+      func_append removelist " $output_obj"
+      $ECHO "$srcfile" > "$lockfile"
+    fi
+
+    $opt_dry_run || $RM $removelist
+    func_append removelist " $lockfile"
+    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
+
+    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
+    srcfile=$func_to_tool_file_result
+    func_quote_for_eval "$srcfile"
+    qsrcfile=$func_quote_for_eval_result
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test yes = "$build_libtool_libs"; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test no != "$pic_mode"; then
+	command="$base_compile $qsrcfile $pic_flag"
+      else
+	# Don't build PIC code
+	command="$base_compile $qsrcfile"
+      fi
+
+      func_mkdir_p "$xdir$objdir"
+
+      if test -z "$output_obj"; then
+	# Place PIC objects in $objdir
+	func_append command " -o $lobj"
+      fi
+
+      func_show_eval_locale "$command"	\
+          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
+
+      if test warn = "$need_locks" &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support '-c' and '-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$opt_dry_run || $RM $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+	func_show_eval '$MV "$output_obj" "$lobj"' \
+	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+      fi
+
+      # Allow error messages only from the first compilation.
+      if test yes = "$suppress_opt"; then
+	suppress_output=' >/dev/null 2>&1'
+      fi
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test yes = "$build_old_libs"; then
+      if test yes != "$pic_mode"; then
+	# Don't build PIC code
+	command="$base_compile $qsrcfile$pie_flag"
+      else
+	command="$base_compile $qsrcfile $pic_flag"
+      fi
+      if test yes = "$compiler_c_o"; then
+	func_append command " -o $obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      func_append command "$suppress_output"
+      func_show_eval_locale "$command" \
+        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
+
+      if test warn = "$need_locks" &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support '-c' and '-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$opt_dry_run || $RM $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed
+      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+	func_show_eval '$MV "$output_obj" "$obj"' \
+	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+      fi
+    fi
+
+    $opt_dry_run || {
+      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
+
+      # Unlock the critical section if it was locked
+      if test no != "$need_locks"; then
+	removelist=$lockfile
+        $RM "$lockfile"
+      fi
+    }
+
+    exit $EXIT_SUCCESS
+}
+
+$opt_help || {
+  test compile = "$opt_mode" && func_mode_compile ${1+"$@"}
+}
+
+func_mode_help ()
+{
+    # We need to display help for each of the modes.
+    case $opt_mode in
+      "")
+        # Generic help is extracted from the usage comments
+        # at the start of this file.
+        func_help
+        ;;
+
+      clean)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+        ;;
+
+      compile)
+      $ECHO \
+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -no-suppress      do not suppress compiler output for multiple passes
+  -prefer-pic       try to build PIC objects only
+  -prefer-non-pic   try to build non-PIC objects only
+  -shared           do not build a '.o' file suitable for static linking
+  -static           only build a '.o' file suitable for static linking
+  -Wc,FLAG          pass FLAG directly to the compiler
+
+COMPILE-COMMAND is a command to be used in creating a 'standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix '.c' with the
+library object suffix, '.lo'."
+        ;;
+
+      execute)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to '-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+        ;;
+
+      finish)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the '--dry-run' option if you just want to see what would be executed."
+        ;;
+
+      install)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the 'install' or 'cp' program.
+
+The following components of INSTALL-COMMAND are treated specially:
+
+  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+        ;;
+
+      link)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -bindir BINDIR    specify path to binaries directory (for systems where
+                    libraries must be found in the PATH setting at runtime)
+  -dlopen FILE      '-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+                    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+                    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  use a list of object files found in FILE to specify objects
+  -os2dllname NAME  force a short DLL name on OS/2 (no effect on other OSes)
+  -precious-files-regex REGEX
+                    don't remove output files matching REGEX
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -shared           only do dynamic linking of libtool libraries
+  -shrext SUFFIX    override the standard shared library file extension
+  -static           do not do any dynamic linking of uninstalled libtool libraries
+  -static-libtool-libs
+                    do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+                    specify library version info [each variable defaults to 0]
+  -weak LIBNAME     declare that the target provides the LIBNAME interface
+  -Wc,FLAG
+  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
+  -Wl,FLAG
+  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
+  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
+
+All other options (arguments beginning with '-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in '.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in '.la', then a libtool library is created,
+only library objects ('.lo' files) may be specified, and '-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created
+using 'ar' and 'ranlib', or on Windows using 'lib'.
+
+If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file
+is created, otherwise an executable program is created."
+        ;;
+
+      uninstall)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+        ;;
+
+      *)
+        func_fatal_help "invalid operation mode '$opt_mode'"
+        ;;
+    esac
+
+    echo
+    $ECHO "Try '$progname --help' for more information about other modes."
+}
+
+# Now that we've collected a possible --mode arg, show help if necessary
+if $opt_help; then
+  if test : = "$opt_help"; then
+    func_mode_help
+  else
+    {
+      func_help noexit
+      for opt_mode in compile link execute install finish uninstall clean; do
+	func_mode_help
+      done
+    } | $SED -n '1p; 2,$s/^Usage:/  or: /p'
+    {
+      func_help noexit
+      for opt_mode in compile link execute install finish uninstall clean; do
+	echo
+	func_mode_help
+      done
+    } |
+    $SED '1d
+      /^When reporting/,/^Report/{
+	H
+	d
+      }
+      $x
+      /information about other modes/d
+      /more detailed .*MODE/d
+      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
+  fi
+  exit $?
+fi
+
+
+# func_mode_execute arg...
+func_mode_execute ()
+{
+    $debug_cmd
+
+    # The first argument is the command name.
+    cmd=$nonopt
+    test -z "$cmd" && \
+      func_fatal_help "you must specify a COMMAND"
+
+    # Handle -dlopen flags immediately.
+    for file in $opt_dlopen; do
+      test -f "$file" \
+	|| func_fatal_help "'$file' is not a file"
+
+      dir=
+      case $file in
+      *.la)
+	func_resolve_sysroot "$file"
+	file=$func_resolve_sysroot_result
+
+	# Check to see that this really is a libtool archive.
+	func_lalib_unsafe_p "$file" \
+	  || func_fatal_help "'$lib' is not a valid libtool archive"
+
+	# Read the libtool library.
+	dlname=
+	library_names=
+	func_source "$file"
+
+	# Skip this library if it cannot be dlopened.
+	if test -z "$dlname"; then
+	  # Warn if it was a shared library.
+	  test -n "$library_names" && \
+	    func_warning "'$file' was not linked with '-export-dynamic'"
+	  continue
+	fi
+
+	func_dirname "$file" "" "."
+	dir=$func_dirname_result
+
+	if test -f "$dir/$objdir/$dlname"; then
+	  func_append dir "/$objdir"
+	else
+	  if test ! -f "$dir/$dlname"; then
+	    func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'"
+	  fi
+	fi
+	;;
+
+      *.lo)
+	# Just add the directory containing the .lo file.
+	func_dirname "$file" "" "."
+	dir=$func_dirname_result
+	;;
+
+      *)
+	func_warning "'-dlopen' is ignored for non-libtool libraries and objects"
+	continue
+	;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir=$absdir
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+	eval "$shlibpath_var=\"\$dir\""
+      else
+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic=$magic
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -* | *.la | *.lo ) ;;
+      *)
+	# Do a test to see if this is really a libtool program.
+	if func_ltwrapper_script_p "$file"; then
+	  func_source "$file"
+	  # Transform arg to wrapped name.
+	  file=$progdir/$program
+	elif func_ltwrapper_executable_p "$file"; then
+	  func_ltwrapper_scriptname "$file"
+	  func_source "$func_ltwrapper_scriptname_result"
+	  # Transform arg to wrapped name.
+	  file=$progdir/$program
+	fi
+	;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      func_append_quoted args "$file"
+    done
+
+    if $opt_dry_run; then
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+	echo "export $shlibpath_var"
+      fi
+      $ECHO "$cmd$args"
+      exit $EXIT_SUCCESS
+    else
+      if test -n "$shlibpath_var"; then
+	# Export the shlibpath_var.
+	eval "export $shlibpath_var"
+      fi
+
+      # Restore saved environment variables
+      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+      do
+	eval "if test \"\${save_$lt_var+set}\" = set; then
+                $lt_var=\$save_$lt_var; export $lt_var
+	      else
+		$lt_unset $lt_var
+	      fi"
+      done
+
+      # Now prepare to actually exec the command.
+      exec_cmd=\$cmd$args
+    fi
+}
+
+test execute = "$opt_mode" && func_mode_execute ${1+"$@"}
+
+
+# func_mode_finish arg...
+func_mode_finish ()
+{
+    $debug_cmd
+
+    libs=
+    libdirs=
+    admincmds=
+
+    for opt in "$nonopt" ${1+"$@"}
+    do
+      if test -d "$opt"; then
+	func_append libdirs " $opt"
+
+      elif test -f "$opt"; then
+	if func_lalib_unsafe_p "$opt"; then
+	  func_append libs " $opt"
+	else
+	  func_warning "'$opt' is not a valid libtool archive"
+	fi
+
+      else
+	func_fatal_error "invalid argument '$opt'"
+      fi
+    done
+
+    if test -n "$libs"; then
+      if test -n "$lt_sysroot"; then
+        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
+        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
+      else
+        sysroot_cmd=
+      fi
+
+      # Remove sysroot references
+      if $opt_dry_run; then
+        for lib in $libs; do
+          echo "removing references to $lt_sysroot and '=' prefixes from $lib"
+        done
+      else
+        tmpdir=`func_mktempdir`
+        for lib in $libs; do
+	  $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
+	    > $tmpdir/tmp-la
+	  mv -f $tmpdir/tmp-la $lib
+	done
+        ${RM}r "$tmpdir"
+      fi
+    fi
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for libdir in $libdirs; do
+	if test -n "$finish_cmds"; then
+	  # Do each command in the finish commands.
+	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
+'"$cmd"'"'
+	fi
+	if test -n "$finish_eval"; then
+	  # Do the single finish_eval.
+	  eval cmds=\"$finish_eval\"
+	  $opt_dry_run || eval "$cmds" || func_append admincmds "
+       $cmds"
+	fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    $opt_quiet && exit $EXIT_SUCCESS
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      echo "----------------------------------------------------------------------"
+      echo "Libraries have been installed in:"
+      for libdir in $libdirs; do
+	$ECHO "   $libdir"
+      done
+      echo
+      echo "If you ever happen to want to link against installed libraries"
+      echo "in a given directory, LIBDIR, you must either use libtool, and"
+      echo "specify the full pathname of the library, or use the '-LLIBDIR'"
+      echo "flag during linking and do at least one of the following:"
+      if test -n "$shlibpath_var"; then
+	echo "   - add LIBDIR to the '$shlibpath_var' environment variable"
+	echo "     during execution"
+      fi
+      if test -n "$runpath_var"; then
+	echo "   - add LIBDIR to the '$runpath_var' environment variable"
+	echo "     during linking"
+      fi
+      if test -n "$hardcode_libdir_flag_spec"; then
+	libdir=LIBDIR
+	eval flag=\"$hardcode_libdir_flag_spec\"
+
+	$ECHO "   - use the '$flag' linker flag"
+      fi
+      if test -n "$admincmds"; then
+	$ECHO "   - have your system administrator run these commands:$admincmds"
+      fi
+      if test -f /etc/ld.so.conf; then
+	echo "   - have your system administrator add LIBDIR to '/etc/ld.so.conf'"
+      fi
+      echo
+
+      echo "See any operating system documentation about shared libraries for"
+      case $host in
+	solaris2.[6789]|solaris2.1[0-9])
+	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+	  echo "pages."
+	  ;;
+	*)
+	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
+	  ;;
+      esac
+      echo "----------------------------------------------------------------------"
+    fi
+    exit $EXIT_SUCCESS
+}
+
+test finish = "$opt_mode" && func_mode_finish ${1+"$@"}
+
+
+# func_mode_install arg...
+func_mode_install ()
+{
+    $debug_cmd
+
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" ||
+       # Allow the use of GNU shtool's install command.
+       case $nonopt in *shtool*) :;; *) false;; esac
+    then
+      # Aesthetically quote it.
+      func_quote_for_eval "$nonopt"
+      install_prog="$func_quote_for_eval_result "
+      arg=$1
+      shift
+    else
+      install_prog=
+      arg=$nonopt
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    func_quote_for_eval "$arg"
+    func_append install_prog "$func_quote_for_eval_result"
+    install_shared_prog=$install_prog
+    case " $install_prog " in
+      *[\\\ /]cp\ *) install_cp=: ;;
+      *) install_cp=false ;;
+    esac
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=false
+    stripme=
+    no_mode=:
+    for arg
+    do
+      arg2=
+      if test -n "$dest"; then
+	func_append files " $dest"
+	dest=$arg
+	continue
+      fi
+
+      case $arg in
+      -d) isdir=: ;;
+      -f)
+	if $install_cp; then :; else
+	  prev=$arg
+	fi
+	;;
+      -g | -m | -o)
+	prev=$arg
+	;;
+      -s)
+	stripme=" -s"
+	continue
+	;;
+      -*)
+	;;
+      *)
+	# If the previous option needed an argument, then skip it.
+	if test -n "$prev"; then
+	  if test X-m = "X$prev" && test -n "$install_override_mode"; then
+	    arg2=$install_override_mode
+	    no_mode=false
+	  fi
+	  prev=
+	else
+	  dest=$arg
+	  continue
+	fi
+	;;
+      esac
+
+      # Aesthetically quote the argument.
+      func_quote_for_eval "$arg"
+      func_append install_prog " $func_quote_for_eval_result"
+      if test -n "$arg2"; then
+	func_quote_for_eval "$arg2"
+      fi
+      func_append install_shared_prog " $func_quote_for_eval_result"
+    done
+
+    test -z "$install_prog" && \
+      func_fatal_help "you must specify an install program"
+
+    test -n "$prev" && \
+      func_fatal_help "the '$prev' option requires an argument"
+
+    if test -n "$install_override_mode" && $no_mode; then
+      if $install_cp; then :; else
+	func_quote_for_eval "$install_override_mode"
+	func_append install_shared_prog " -m $func_quote_for_eval_result"
+      fi
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+	func_fatal_help "no file or destination specified"
+      else
+	func_fatal_help "you must specify a destination"
+      fi
+    fi
+
+    # Strip any trailing slash from the destination.
+    func_stripname '' '/' "$dest"
+    dest=$func_stripname_result
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=:
+    if $isdir; then
+      destdir=$dest
+      destname=
+    else
+      func_dirname_and_basename "$dest" "" "."
+      destdir=$func_dirname_result
+      destname=$func_basename_result
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files; shift
+      test "$#" -gt 1 && \
+	func_fatal_help "'$dest' is not a directory"
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+	case $file in
+	*.lo) ;;
+	*)
+	  func_fatal_help "'$destdir' must be an absolute directory name"
+	  ;;
+	esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic=$magic
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+	# Do the static libraries later.
+	func_append staticlibs " $file"
+	;;
+
+      *.la)
+	func_resolve_sysroot "$file"
+	file=$func_resolve_sysroot_result
+
+	# Check to see that this really is a libtool archive.
+	func_lalib_unsafe_p "$file" \
+	  || func_fatal_help "'$file' is not a valid libtool archive"
+
+	library_names=
+	old_library=
+	relink_command=
+	func_source "$file"
+
+	# Add the libdir to current_libdirs if it is the destination.
+	if test "X$destdir" = "X$libdir"; then
+	  case "$current_libdirs " in
+	  *" $libdir "*) ;;
+	  *) func_append current_libdirs " $libdir" ;;
+	  esac
+	else
+	  # Note the libdir as a future libdir.
+	  case "$future_libdirs " in
+	  *" $libdir "*) ;;
+	  *) func_append future_libdirs " $libdir" ;;
+	  esac
+	fi
+
+	func_dirname "$file" "/" ""
+	dir=$func_dirname_result
+	func_append dir "$objdir"
+
+	if test -n "$relink_command"; then
+	  # Determine the prefix the user has applied to our future dir.
+	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
+
+	  # Don't allow the user to place us outside of our expected
+	  # location b/c this prevents finding dependent libraries that
+	  # are installed to the same prefix.
+	  # At present, this check doesn't affect windows .dll's that
+	  # are installed into $libdir/../bin (currently, that works fine)
+	  # but it's something to keep an eye on.
+	  test "$inst_prefix_dir" = "$destdir" && \
+	    func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir"
+
+	  if test -n "$inst_prefix_dir"; then
+	    # Stick the inst_prefix_dir data into the link command.
+	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+	  else
+	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+	  fi
+
+	  func_warning "relinking '$file'"
+	  func_show_eval "$relink_command" \
+	    'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"'
+	fi
+
+	# See the names of the shared library.
+	set dummy $library_names; shift
+	if test -n "$1"; then
+	  realname=$1
+	  shift
+
+	  srcname=$realname
+	  test -n "$relink_command" && srcname=${realname}T
+
+	  # Install the shared library and build the symlinks.
+	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
+	      'exit $?'
+	  tstripme=$stripme
+	  case $host_os in
+	  cygwin* | mingw* | pw32* | cegcc*)
+	    case $realname in
+	    *.dll.a)
+	      tstripme=
+	      ;;
+	    esac
+	    ;;
+	  os2*)
+	    case $realname in
+	    *_dll.a)
+	      tstripme=
+	      ;;
+	    esac
+	    ;;
+	  esac
+	  if test -n "$tstripme" && test -n "$striplib"; then
+	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
+	  fi
+
+	  if test "$#" -gt 0; then
+	    # Delete the old symlinks, and create new ones.
+	    # Try 'ln -sf' first, because the 'ln' binary might depend on
+	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
+	    # so we also need to try rm && ln -s.
+	    for linkname
+	    do
+	      test "$linkname" != "$realname" \
+		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
+	    done
+	  fi
+
+	  # Do each command in the postinstall commands.
+	  lib=$destdir/$realname
+	  func_execute_cmds "$postinstall_cmds" 'exit $?'
+	fi
+
+	# Install the pseudo-library for information purposes.
+	func_basename "$file"
+	name=$func_basename_result
+	instname=$dir/${name}i
+	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
+
+	# Maybe install the static library, too.
+	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
+	;;
+
+      *.lo)
+	# Install (i.e. copy) a libtool object.
+
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile=$destdir/$destname
+	else
+	  func_basename "$file"
+	  destfile=$func_basename_result
+	  destfile=$destdir/$destfile
+	fi
+
+	# Deduce the name of the destination old-style object file.
+	case $destfile in
+	*.lo)
+	  func_lo2o "$destfile"
+	  staticdest=$func_lo2o_result
+	  ;;
+	*.$objext)
+	  staticdest=$destfile
+	  destfile=
+	  ;;
+	*)
+	  func_fatal_help "cannot copy a libtool object to '$destfile'"
+	  ;;
+	esac
+
+	# Install the libtool object if requested.
+	test -n "$destfile" && \
+	  func_show_eval "$install_prog $file $destfile" 'exit $?'
+
+	# Install the old object if enabled.
+	if test yes = "$build_old_libs"; then
+	  # Deduce the name of the old-style object file.
+	  func_lo2o "$file"
+	  staticobj=$func_lo2o_result
+	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
+	fi
+	exit $EXIT_SUCCESS
+	;;
+
+      *)
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile=$destdir/$destname
+	else
+	  func_basename "$file"
+	  destfile=$func_basename_result
+	  destfile=$destdir/$destfile
+	fi
+
+	# If the file is missing, and there is a .exe on the end, strip it
+	# because it is most likely a libtool script we actually want to
+	# install
+	stripped_ext=
+	case $file in
+	  *.exe)
+	    if test ! -f "$file"; then
+	      func_stripname '' '.exe' "$file"
+	      file=$func_stripname_result
+	      stripped_ext=.exe
+	    fi
+	    ;;
+	esac
+
+	# Do a test to see if this is really a libtool program.
+	case $host in
+	*cygwin* | *mingw*)
+	    if func_ltwrapper_executable_p "$file"; then
+	      func_ltwrapper_scriptname "$file"
+	      wrapper=$func_ltwrapper_scriptname_result
+	    else
+	      func_stripname '' '.exe' "$file"
+	      wrapper=$func_stripname_result
+	    fi
+	    ;;
+	*)
+	    wrapper=$file
+	    ;;
+	esac
+	if func_ltwrapper_script_p "$wrapper"; then
+	  notinst_deplibs=
+	  relink_command=
+
+	  func_source "$wrapper"
+
+	  # Check the variables that should have been set.
+	  test -z "$generated_by_libtool_version" && \
+	    func_fatal_error "invalid libtool wrapper script '$wrapper'"
+
+	  finalize=:
+	  for lib in $notinst_deplibs; do
+	    # Check to see that each library is installed.
+	    libdir=
+	    if test -f "$lib"; then
+	      func_source "$lib"
+	    fi
+	    libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'`
+	    if test -n "$libdir" && test ! -f "$libfile"; then
+	      func_warning "'$lib' has not been installed in '$libdir'"
+	      finalize=false
+	    fi
+	  done
+
+	  relink_command=
+	  func_source "$wrapper"
+
+	  outputname=
+	  if test no = "$fast_install" && test -n "$relink_command"; then
+	    $opt_dry_run || {
+	      if $finalize; then
+	        tmpdir=`func_mktempdir`
+		func_basename "$file$stripped_ext"
+		file=$func_basename_result
+	        outputname=$tmpdir/$file
+	        # Replace the output file specification.
+	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
+
+	        $opt_quiet || {
+	          func_quote_for_expand "$relink_command"
+		  eval "func_echo $func_quote_for_expand_result"
+	        }
+	        if eval "$relink_command"; then :
+	          else
+		  func_error "error: relink '$file' with the above command before installing it"
+		  $opt_dry_run || ${RM}r "$tmpdir"
+		  continue
+	        fi
+	        file=$outputname
+	      else
+	        func_warning "cannot relink '$file'"
+	      fi
+	    }
+	  else
+	    # Install the binary that we compiled earlier.
+	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
+	  fi
+	fi
+
+	# remove .exe since cygwin /usr/bin/install will append another
+	# one anyway
+	case $install_prog,$host in
+	*/usr/bin/install*,*cygwin*)
+	  case $file:$destfile in
+	  *.exe:*.exe)
+	    # this is ok
+	    ;;
+	  *.exe:*)
+	    destfile=$destfile.exe
+	    ;;
+	  *:*.exe)
+	    func_stripname '' '.exe' "$destfile"
+	    destfile=$func_stripname_result
+	    ;;
+	  esac
+	  ;;
+	esac
+	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
+	$opt_dry_run || if test -n "$outputname"; then
+	  ${RM}r "$tmpdir"
+	fi
+	;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      func_basename "$file"
+      name=$func_basename_result
+
+      # Set up the ranlib parameters.
+      oldlib=$destdir/$name
+      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+      tool_oldlib=$func_to_tool_file_result
+
+      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
+
+      if test -n "$stripme" && test -n "$old_striplib"; then
+	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
+      fi
+
+      # Do each command in the postinstall commands.
+      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
+    done
+
+    test -n "$future_libdirs" && \
+      func_warning "remember to run '$progname --finish$future_libdirs'"
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      $opt_dry_run && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs'
+    else
+      exit $EXIT_SUCCESS
+    fi
+}
+
+test install = "$opt_mode" && func_mode_install ${1+"$@"}
+
+
+# func_generate_dlsyms outputname originator pic_p
+# Extract symbols from dlprefiles and create ${outputname}S.o with
+# a dlpreopen symbol table.
+func_generate_dlsyms ()
+{
+    $debug_cmd
+
+    my_outputname=$1
+    my_originator=$2
+    my_pic_p=${3-false}
+    my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'`
+    my_dlsyms=
+
+    if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+      if test -n "$NM" && test -n "$global_symbol_pipe"; then
+	my_dlsyms=${my_outputname}S.c
+      else
+	func_error "not configured to extract global symbols from dlpreopened files"
+      fi
+    fi
+
+    if test -n "$my_dlsyms"; then
+      case $my_dlsyms in
+      "") ;;
+      *.c)
+	# Discover the nlist of each of the dlfiles.
+	nlist=$output_objdir/$my_outputname.nm
+
+	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
+
+	# Parse the name list into a source file.
+	func_verbose "creating $output_objdir/$my_dlsyms"
+
+	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
+/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
+#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
+#endif
+
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT_DLSYM_CONST
+#elif defined __osf__
+/* This system does not cope well with relocations in const data.  */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
+
+/* External symbol declarations for the compiler. */\
+"
+
+	if test yes = "$dlself"; then
+	  func_verbose "generating symbol list for '$output'"
+
+	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
+
+	  # Add our own program objects to the symbol list.
+	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+	  for progfile in $progfiles; do
+	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
+	    func_verbose "extracting global C symbols from '$func_to_tool_file_result'"
+	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
+	  done
+
+	  if test -n "$exclude_expsyms"; then
+	    $opt_dry_run || {
+	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+	      eval '$MV "$nlist"T "$nlist"'
+	    }
+	  fi
+
+	  if test -n "$export_symbols_regex"; then
+	    $opt_dry_run || {
+	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+	      eval '$MV "$nlist"T "$nlist"'
+	    }
+	  fi
+
+	  # Prepare the list of exported symbols
+	  if test -z "$export_symbols"; then
+	    export_symbols=$output_objdir/$outputname.exp
+	    $opt_dry_run || {
+	      $RM $export_symbols
+	      eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+	      case $host in
+	      *cygwin* | *mingw* | *cegcc* )
+                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+	        ;;
+	      esac
+	    }
+	  else
+	    $opt_dry_run || {
+	      eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+	      eval '$MV "$nlist"T "$nlist"'
+	      case $host in
+	        *cygwin* | *mingw* | *cegcc* )
+	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+	          ;;
+	      esac
+	    }
+	  fi
+	fi
+
+	for dlprefile in $dlprefiles; do
+	  func_verbose "extracting global C symbols from '$dlprefile'"
+	  func_basename "$dlprefile"
+	  name=$func_basename_result
+          case $host in
+	    *cygwin* | *mingw* | *cegcc* )
+	      # if an import library, we need to obtain dlname
+	      if func_win32_import_lib_p "$dlprefile"; then
+	        func_tr_sh "$dlprefile"
+	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
+	        dlprefile_dlbasename=
+	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
+	          # Use subshell, to avoid clobbering current variable values
+	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
+	          if test -n "$dlprefile_dlname"; then
+	            func_basename "$dlprefile_dlname"
+	            dlprefile_dlbasename=$func_basename_result
+	          else
+	            # no lafile. user explicitly requested -dlpreopen <import library>.
+	            $sharedlib_from_linklib_cmd "$dlprefile"
+	            dlprefile_dlbasename=$sharedlib_from_linklib_result
+	          fi
+	        fi
+	        $opt_dry_run || {
+	          if test -n "$dlprefile_dlbasename"; then
+	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
+	          else
+	            func_warning "Could not compute DLL name from $name"
+	            eval '$ECHO ": $name " >> "$nlist"'
+	          fi
+	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
+	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
+	        }
+	      else # not an import lib
+	        $opt_dry_run || {
+	          eval '$ECHO ": $name " >> "$nlist"'
+	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+	        }
+	      fi
+	    ;;
+	    *)
+	      $opt_dry_run || {
+	        eval '$ECHO ": $name " >> "$nlist"'
+	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+	      }
+	    ;;
+          esac
+	done
+
+	$opt_dry_run || {
+	  # Make sure we have at least an empty file.
+	  test -f "$nlist" || : > "$nlist"
+
+	  if test -n "$exclude_expsyms"; then
+	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+	    $MV "$nlist"T "$nlist"
+	  fi
+
+	  # Try sorting and uniquifying the output.
+	  if $GREP -v "^: " < "$nlist" |
+	      if sort -k 3 </dev/null >/dev/null 2>&1; then
+		sort -k 3
+	      else
+		sort +2
+	      fi |
+	      uniq > "$nlist"S; then
+	    :
+	  else
+	    $GREP -v "^: " < "$nlist" > "$nlist"S
+	  fi
+
+	  if test -f "$nlist"S; then
+	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
+	  else
+	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
+	  fi
+
+	  func_show_eval '$RM "${nlist}I"'
+	  if test -n "$global_symbol_to_import"; then
+	    eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I'
+	  fi
+
+	  echo >> "$output_objdir/$my_dlsyms" "\
+
+/* The mapping between symbol names and symbols.  */
+typedef struct {
+  const char *name;
+  void *address;
+} lt_dlsymlist;
+extern LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[];\
+"
+
+	  if test -s "$nlist"I; then
+	    echo >> "$output_objdir/$my_dlsyms" "\
+static void lt_syminit(void)
+{
+  LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols;
+  for (; symbol->name; ++symbol)
+    {"
+	    $SED 's/.*/      if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms"
+	    echo >> "$output_objdir/$my_dlsyms" "\
+    }
+}"
+	  fi
+	  echo >> "$output_objdir/$my_dlsyms" "\
+LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[] =
+{ {\"$my_originator\", (void *) 0},"
+
+	  if test -s "$nlist"I; then
+	    echo >> "$output_objdir/$my_dlsyms" "\
+  {\"@INIT@\", (void *) &lt_syminit},"
+	  fi
+
+	  case $need_lib_prefix in
+	  no)
+	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
+	    ;;
+	  *)
+	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
+	    ;;
+	  esac
+	  echo >> "$output_objdir/$my_dlsyms" "\
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_${my_prefix}_LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+	} # !$opt_dry_run
+
+	pic_flag_for_symtable=
+	case "$compile_command " in
+	*" -static "*) ;;
+	*)
+	  case $host in
+	  # compiling the symbol table file with pic_flag works around
+	  # a FreeBSD bug that causes programs to crash when -lm is
+	  # linked before any other PIC object.  But we must not use
+	  # pic_flag when linking with -static.  The problem exists in
+	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
+	  *-*-hpux*)
+	    pic_flag_for_symtable=" $pic_flag"  ;;
+	  *)
+	    $my_pic_p && pic_flag_for_symtable=" $pic_flag"
+	    ;;
+	  esac
+	  ;;
+	esac
+	symtab_cflags=
+	for arg in $LTCFLAGS; do
+	  case $arg in
+	  -pie | -fpie | -fPIE) ;;
+	  *) func_append symtab_cflags " $arg" ;;
+	  esac
+	done
+
+	# Now compile the dynamic symbol file.
+	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
+
+	# Clean up the generated files.
+	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"'
+
+	# Transform the symbol file into the correct name.
+	symfileobj=$output_objdir/${my_outputname}S.$objext
+	case $host in
+	*cygwin* | *mingw* | *cegcc* )
+	  if test -f "$output_objdir/$my_outputname.def"; then
+	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+	  else
+	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	  fi
+	  ;;
+	*)
+	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	  ;;
+	esac
+	;;
+      *)
+	func_fatal_error "unknown suffix for '$my_dlsyms'"
+	;;
+      esac
+    else
+      # We keep going just in case the user didn't refer to
+      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+      # really was required.
+
+      # Nullify the symbol file.
+      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
+      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
+    fi
+}
+
+# func_cygming_gnu_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is a GNU/binutils-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_gnu_implib_p ()
+{
+  $debug_cmd
+
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
+  test -n "$func_cygming_gnu_implib_tmp"
+}
+
+# func_cygming_ms_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is an MS-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_ms_implib_p ()
+{
+  $debug_cmd
+
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
+  test -n "$func_cygming_ms_implib_tmp"
+}
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+# Despite the name, also deal with 64 bit binaries.
+func_win32_libid ()
+{
+  $debug_cmd
+
+  win32_libid_type=unknown
+  win32_fileres=`file -L $1 2>/dev/null`
+  case $win32_fileres in
+  *ar\ archive\ import\ library*) # definitely import
+    win32_libid_type="x86 archive import"
+    ;;
+  *ar\ archive*) # could be an import, or static
+    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
+       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
+      case $nm_interface in
+      "MS dumpbin")
+	if func_cygming_ms_implib_p "$1" ||
+	   func_cygming_gnu_implib_p "$1"
+	then
+	  win32_nmres=import
+	else
+	  win32_nmres=
+	fi
+	;;
+      *)
+	func_to_tool_file "$1" func_convert_file_msys_to_w32
+	win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
+	  $SED -n -e '
+	    1,100{
+		/ I /{
+		    s|.*|import|
+		    p
+		    q
+		}
+	    }'`
+	;;
+      esac
+      case $win32_nmres in
+      import*)  win32_libid_type="x86 archive import";;
+      *)        win32_libid_type="x86 archive static";;
+      esac
+    fi
+    ;;
+  *DLL*)
+    win32_libid_type="x86 DLL"
+    ;;
+  *executable*) # but shell scripts are "executable" too...
+    case $win32_fileres in
+    *MS\ Windows\ PE\ Intel*)
+      win32_libid_type="x86 DLL"
+      ;;
+    esac
+    ;;
+  esac
+  $ECHO "$win32_libid_type"
+}
+
+# func_cygming_dll_for_implib ARG
+#
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+# Invoked by eval'ing the libtool variable
+#    $sharedlib_from_linklib_cmd
+# Result is available in the variable
+#    $sharedlib_from_linklib_result
+func_cygming_dll_for_implib ()
+{
+  $debug_cmd
+
+  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
+}
+
+# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
+#
+# The is the core of a fallback implementation of a
+# platform-specific function to extract the name of the
+# DLL associated with the specified import library LIBNAME.
+#
+# SECTION_NAME is either .idata$6 or .idata$7, depending
+# on the platform and compiler that created the implib.
+#
+# Echos the name of the DLL associated with the
+# specified import library.
+func_cygming_dll_for_implib_fallback_core ()
+{
+  $debug_cmd
+
+  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
+  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
+    $SED '/^Contents of section '"$match_literal"':/{
+      # Place marker at beginning of archive member dllname section
+      s/.*/====MARK====/
+      p
+      d
+    }
+    # These lines can sometimes be longer than 43 characters, but
+    # are always uninteresting
+    /:[	 ]*file format pe[i]\{,1\}-/d
+    /^In archive [^:]*:/d
+    # Ensure marker is printed
+    /^====MARK====/p
+    # Remove all lines with less than 43 characters
+    /^.\{43\}/!d
+    # From remaining lines, remove first 43 characters
+    s/^.\{43\}//' |
+    $SED -n '
+      # Join marker and all lines until next marker into a single line
+      /^====MARK====/ b para
+      H
+      $ b para
+      b
+      :para
+      x
+      s/\n//g
+      # Remove the marker
+      s/^====MARK====//
+      # Remove trailing dots and whitespace
+      s/[\. \t]*$//
+      # Print
+      /./p' |
+    # we now have a list, one entry per line, of the stringified
+    # contents of the appropriate section of all members of the
+    # archive that possess that section. Heuristic: eliminate
+    # all those that have a first or second character that is
+    # a '.' (that is, objdump's representation of an unprintable
+    # character.) This should work for all archives with less than
+    # 0x302f exports -- but will fail for DLLs whose name actually
+    # begins with a literal '.' or a single character followed by
+    # a '.'.
+    #
+    # Of those that remain, print the first one.
+    $SED -e '/^\./d;/^.\./d;q'
+}
+
+# func_cygming_dll_for_implib_fallback ARG
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+#
+# This fallback implementation is for use when $DLLTOOL
+# does not support the --identify-strict option.
+# Invoked by eval'ing the libtool variable
+#    $sharedlib_from_linklib_cmd
+# Result is available in the variable
+#    $sharedlib_from_linklib_result
+func_cygming_dll_for_implib_fallback ()
+{
+  $debug_cmd
+
+  if func_cygming_gnu_implib_p "$1"; then
+    # binutils import library
+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
+  elif func_cygming_ms_implib_p "$1"; then
+    # ms-generated import library
+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
+  else
+    # unknown
+    sharedlib_from_linklib_result=
+  fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+    $debug_cmd
+
+    f_ex_an_ar_dir=$1; shift
+    f_ex_an_ar_oldlib=$1
+    if test yes = "$lock_old_archive_extraction"; then
+      lockfile=$f_ex_an_ar_oldlib.lock
+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+	func_echo "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    fi
+    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
+		   'stat=$?; rm -f "$lockfile"; exit $stat'
+    if test yes = "$lock_old_archive_extraction"; then
+      $opt_dry_run || rm -f "$lockfile"
+    fi
+    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+     :
+    else
+      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
+    fi
+}
+
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+    $debug_cmd
+
+    my_gentop=$1; shift
+    my_oldlibs=${1+"$@"}
+    my_oldobjs=
+    my_xlib=
+    my_xabs=
+    my_xdir=
+
+    for my_xlib in $my_oldlibs; do
+      # Extract the objects.
+      case $my_xlib in
+	[\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;;
+	*) my_xabs=`pwd`"/$my_xlib" ;;
+      esac
+      func_basename "$my_xlib"
+      my_xlib=$func_basename_result
+      my_xlib_u=$my_xlib
+      while :; do
+        case " $extracted_archives " in
+	*" $my_xlib_u "*)
+	  func_arith $extracted_serial + 1
+	  extracted_serial=$func_arith_result
+	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
+	*) break ;;
+	esac
+      done
+      extracted_archives="$extracted_archives $my_xlib_u"
+      my_xdir=$my_gentop/$my_xlib_u
+
+      func_mkdir_p "$my_xdir"
+
+      case $host in
+      *-darwin*)
+	func_verbose "Extracting $my_xabs"
+	# Do not bother doing anything if just a dry run
+	$opt_dry_run || {
+	  darwin_orig_dir=`pwd`
+	  cd $my_xdir || exit $?
+	  darwin_archive=$my_xabs
+	  darwin_curdir=`pwd`
+	  func_basename "$darwin_archive"
+	  darwin_base_archive=$func_basename_result
+	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
+	  if test -n "$darwin_arches"; then
+	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
+	    darwin_arch=
+	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
+	    for darwin_arch in  $darwin_arches; do
+	      func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch"
+	      $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive"
+	      cd "unfat-$$/$darwin_base_archive-$darwin_arch"
+	      func_extract_an_archive "`pwd`" "$darwin_base_archive"
+	      cd "$darwin_curdir"
+	      $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive"
+	    done # $darwin_arches
+            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
+	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u`
+	    darwin_file=
+	    darwin_files=
+	    for darwin_file in $darwin_filelist; do
+	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
+	      $LIPO -create -output "$darwin_file" $darwin_files
+	    done # $darwin_filelist
+	    $RM -rf unfat-$$
+	    cd "$darwin_orig_dir"
+	  else
+	    cd $darwin_orig_dir
+	    func_extract_an_archive "$my_xdir" "$my_xabs"
+	  fi # $darwin_arches
+	} # !$opt_dry_run
+	;;
+      *)
+        func_extract_an_archive "$my_xdir" "$my_xabs"
+	;;
+      esac
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
+    done
+
+    func_extract_archives_result=$my_oldobjs
+}
+
+
+# func_emit_wrapper [arg=no]
+#
+# Emit a libtool wrapper script on stdout.
+# Don't directly open a file because we may want to
+# incorporate the script contents within a cygwin/mingw
+# wrapper executable.  Must ONLY be called from within
+# func_mode_link because it depends on a number of variables
+# set therein.
+#
+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
+# variable will take.  If 'yes', then the emitted script
+# will assume that the directory where it is stored is
+# the $objdir directory.  This is a cygwin/mingw-specific
+# behavior.
+func_emit_wrapper ()
+{
+	func_emit_wrapper_arg1=${1-no}
+
+	$ECHO "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='$sed_quote_subst'
+
+# Be Bourne compatible
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='$macro_version'
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$ECHO are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    file=\"\$0\""
+
+    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
+    $ECHO "\
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+    ECHO=\"$qECHO\"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string "--lt-"
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's $0 value, followed by "$@".
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=\$0
+  shift
+  for lt_opt
+  do
+    case \"\$lt_opt\" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
+        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
+        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
+        cat \"\$lt_dump_D/\$lt_dump_F\"
+        exit 0
+      ;;
+    --lt-*)
+        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n \"\$lt_option_debug\"; then
+    echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\"
+    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+"
+  case $host in
+  # Backslashes separate directories on plain windows
+  *-*-mingw | *-*-os2* | *-cegcc*)
+    $ECHO "\
+      if test -n \"\$lt_option_debug\"; then
+        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
+        func_lt_dump_args \${1+\"\$@\"} 1>&2
+      fi
+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+    ;;
+
+  *)
+    $ECHO "\
+      if test -n \"\$lt_option_debug\"; then
+        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2
+        func_lt_dump_args \${1+\"\$@\"} 1>&2
+      fi
+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+    ;;
+  esac
+  $ECHO "\
+      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from \$@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case \" \$* \" in
+  *\\ --lt-*)
+    for lt_wr_arg
+    do
+      case \$lt_wr_arg in
+      --lt-*) ;;
+      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core \${1+\"\$@\"}
+}
+
+  # Parse options
+  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
+  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
+    # special case for '.'
+    if test \"\$thisdir\" = \".\"; then
+      thisdir=\`pwd\`
+    fi
+    # remove .libs from thisdir
+    case \"\$thisdir\" in
+    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
+    $objdir )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+	if test yes = "$fast_install"; then
+	  $ECHO "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" ||
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $MKDIR \"\$progdir\"
+    else
+      $RM \"\$progdir/\$file\"
+    fi"
+
+	  $ECHO "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+	\$ECHO \"\$relink_command_output\" >&2
+	$RM \"\$progdir/\$file\"
+	exit 1
+      fi
+    fi
+
+    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $RM \"\$progdir/\$program\";
+      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $RM \"\$progdir/\$file\"
+  fi"
+	else
+	  $ECHO "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+	fi
+
+	$ECHO "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+	# fixup the dll searchpath if we need to.
+	#
+	# Fix the DLL searchpath if we need to.  Do this before prepending
+	# to shlibpath, because on Windows, both are PATH and uninstalled
+	# libraries must come first.
+	if test -n "$dllsearchpath"; then
+	  $ECHO "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
+	# Export our shlibpath_var if we have one.
+	if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	  $ECHO "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+	fi
+
+	$ECHO "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+      func_exec_program \${1+\"\$@\"}
+    fi
+  else
+    # The program doesn't exist.
+    \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2
+    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
+    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit 1
+  fi
+fi\
+"
+}
+
+
+# func_emit_cwrapperexe_src
+# emit the source code for a wrapper executable on stdout
+# Must ONLY be called from within func_mode_link because
+# it depends on a number of variable set therein.
+func_emit_cwrapperexe_src ()
+{
+	cat <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
+
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+*/
+EOF
+	    cat <<"EOF"
+#ifdef _MSC_VER
+# define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _MSC_VER
+# include <direct.h>
+# include <process.h>
+# include <io.h>
+#else
+# include <unistd.h>
+# include <stdint.h>
+# ifdef __CYGWIN__
+#  include <io.h>
+# endif
+#endif
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
+
+/* declarations of non-ANSI functions */
+#if defined __MINGW32__
+# ifdef __STRICT_ANSI__
+int _putenv (const char *);
+# endif
+#elif defined __CYGWIN__
+# ifdef __STRICT_ANSI__
+char *realpath (const char *, char *);
+int putenv (char *);
+int setenv (const char *, const char *, int);
+# endif
+/* #elif defined other_platform || defined ... */
+#endif
+
+/* portability defines, excluding path handling macros */
+#if defined _MSC_VER
+# define setmode _setmode
+# define stat    _stat
+# define chmod   _chmod
+# define getcwd  _getcwd
+# define putenv  _putenv
+# define S_IXUSR _S_IEXEC
+#elif defined __MINGW32__
+# define setmode _setmode
+# define stat    _stat
+# define chmod   _chmod
+# define getcwd  _getcwd
+# define putenv  _putenv
+#elif defined __CYGWIN__
+# define HAVE_SETENV
+# define FOPEN_WB "wb"
+/* #elif defined other platforms ... */
+#endif
+
+#if defined PATH_MAX
+# define LT_PATHMAX PATH_MAX
+#elif defined MAXPATHLEN
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef S_IXOTH
+# define S_IXOTH 0
+#endif
+#ifndef S_IXGRP
+# define S_IXGRP 0
+#endif
+
+/* path handling portability macros */
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \
+  defined __OS2__
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# define FOPEN_WB "wb"
+# ifndef DIR_SEPARATOR_2
+#  define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+#  define PATH_SEPARATOR_2 ';'
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#ifndef FOPEN_WB
+# define FOPEN_WB "w"
+#endif
+#ifndef _O_BINARY
+# define _O_BINARY 0
+#endif
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free (stale); stale = 0; } \
+} while (0)
+
+#if defined LT_DEBUGWRAPPER
+static int lt_debug = 1;
+#else
+static int lt_debug = 0;
+#endif
+
+const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
+
+void *xmalloc (size_t num);
+char *xstrdup (const char *string);
+const char *base_name (const char *name);
+char *find_executable (const char *wrapper);
+char *chase_symlinks (const char *pathspec);
+int make_executable (const char *path);
+int check_executable (const char *path);
+char *strendzap (char *str, const char *pat);
+void lt_debugprintf (const char *file, int line, const char *fmt, ...);
+void lt_fatal (const char *file, int line, const char *message, ...);
+static const char *nonnull (const char *s);
+static const char *nonempty (const char *s);
+void lt_setenv (const char *name, const char *value);
+char *lt_extend_str (const char *orig_value, const char *add, int to_end);
+void lt_update_exe_path (const char *name, const char *value);
+void lt_update_lib_path (const char *name, const char *value);
+char **prepare_spawn (char **argv);
+void lt_dump_script (FILE *f);
+EOF
+
+	    cat <<EOF
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
+# define externally_visible volatile
+#else
+# define externally_visible __attribute__((externally_visible)) volatile
+#endif
+externally_visible const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+	    if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+              func_to_host_path "$temp_rpath"
+	      cat <<EOF
+const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
+EOF
+	    else
+	      cat <<"EOF"
+const char * LIB_PATH_VALUE   = "";
+EOF
+	    fi
+
+	    if test -n "$dllsearchpath"; then
+              func_to_host_path "$dllsearchpath:"
+	      cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
+EOF
+	    else
+	      cat <<"EOF"
+const char * EXE_PATH_VARNAME = "";
+const char * EXE_PATH_VALUE   = "";
+EOF
+	    fi
+
+	    if test yes = "$fast_install"; then
+	      cat <<EOF
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
+EOF
+	    else
+	      cat <<EOF
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
+EOF
+	    fi
+
+
+	    cat <<"EOF"
+
+#define LTWRAPPER_OPTION_PREFIX         "--lt-"
+
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
+static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int  newargc;
+  char *tmp_pathspec;
+  char *actual_cwrapper_path;
+  char *actual_cwrapper_name;
+  char *target_name;
+  char *lt_argv_zero;
+  int rval = 127;
+
+  int i;
+
+  program_name = (char *) xstrdup (base_name (argv[0]));
+  newargz = XMALLOC (char *, (size_t) argc + 1);
+
+  /* very simple arg parsing; don't want to rely on getopt
+   * also, copy all non cwrapper options to newargz, except
+   * argz[0], which is handled differently
+   */
+  newargc=0;
+  for (i = 1; i < argc; i++)
+    {
+      if (STREQ (argv[i], dumpscript_opt))
+	{
+EOF
+	    case $host in
+	      *mingw* | *cygwin* )
+		# make stdout use "unix" line endings
+		echo "          setmode(1,_O_BINARY);"
+		;;
+	      esac
+
+	    cat <<"EOF"
+	  lt_dump_script (stdout);
+	  return 0;
+	}
+      if (STREQ (argv[i], debug_opt))
+	{
+          lt_debug = 1;
+          continue;
+	}
+      if (STREQ (argv[i], ltwrapper_option_prefix))
+        {
+          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+             namespace, but it is not one of the ones we know about and
+             have already dealt with, above (inluding dump-script), then
+             report an error. Otherwise, targets might begin to believe
+             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+             namespace. The first time any user complains about this, we'll
+             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+             or a configure.ac-settable value.
+           */
+          lt_fatal (__FILE__, __LINE__,
+		    "unrecognized %s option: '%s'",
+                    ltwrapper_option_prefix, argv[i]);
+        }
+      /* otherwise ... */
+      newargz[++newargc] = xstrdup (argv[i]);
+    }
+  newargz[++newargc] = NULL;
+
+EOF
+	    cat <<EOF
+  /* The GNU banner must be the first non-error debug message */
+  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n");
+EOF
+	    cat <<"EOF"
+  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
+
+  tmp_pathspec = find_executable (argv[0]);
+  if (tmp_pathspec == NULL)
+    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (before symlink chase) at: %s\n",
+		  tmp_pathspec);
+
+  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (after symlink chase) at: %s\n",
+		  actual_cwrapper_path);
+  XFREE (tmp_pathspec);
+
+  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
+  strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+  /* wrapper name transforms */
+  strendzap (actual_cwrapper_name, ".exe");
+  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
+  XFREE (actual_cwrapper_name);
+  actual_cwrapper_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  /* target_name transforms -- use actual target program name; might have lt- prefix */
+  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
+  strendzap (target_name, ".exe");
+  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
+  XFREE (target_name);
+  target_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(main) libtool target name: %s\n",
+		  target_name);
+EOF
+
+	    cat <<EOF
+  newargz[0] =
+    XMALLOC (char, (strlen (actual_cwrapper_path) +
+		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
+  strcpy (newargz[0], actual_cwrapper_path);
+  strcat (newargz[0], "$objdir");
+  strcat (newargz[0], "/");
+EOF
+
+	    cat <<"EOF"
+  /* stop here, and copy so we don't have to do this twice */
+  tmp_pathspec = xstrdup (newargz[0]);
+
+  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
+  strcat (newargz[0], actual_cwrapper_name);
+
+  /* DO want the lt- prefix here if it exists, so use target_name */
+  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
+  XFREE (tmp_pathspec);
+  tmp_pathspec = NULL;
+EOF
+
+	    case $host_os in
+	      mingw*)
+	    cat <<"EOF"
+  {
+    char* p;
+    while ((p = strchr (newargz[0], '\\')) != NULL)
+      {
+	*p = '/';
+      }
+    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
+      {
+	*p = '/';
+      }
+  }
+EOF
+	    ;;
+	    esac
+
+	    cat <<"EOF"
+  XFREE (target_name);
+  XFREE (actual_cwrapper_path);
+  XFREE (actual_cwrapper_name);
+
+  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
+  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
+     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
+     because on Windows, both *_VARNAMEs are PATH but uninstalled
+     libraries must come first. */
+  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+
+  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
+		  nonnull (lt_argv_zero));
+  for (i = 0; i < newargc; i++)
+    {
+      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
+		      i, nonnull (newargz[i]));
+    }
+
+EOF
+
+	    case $host_os in
+	      mingw*)
+		cat <<"EOF"
+  /* execv doesn't actually work on mingw as expected on unix */
+  newargz = prepare_spawn (newargz);
+  rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+  if (rval == -1)
+    {
+      /* failed to start process */
+      lt_debugprintf (__FILE__, __LINE__,
+		      "(main) failed to launch target \"%s\": %s\n",
+		      lt_argv_zero, nonnull (strerror (errno)));
+      return 127;
+    }
+  return rval;
+EOF
+		;;
+	      *)
+		cat <<"EOF"
+  execv (lt_argv_zero, newargz);
+  return rval; /* =127, but avoids unused variable warning */
+EOF
+		;;
+	    esac
+
+	    cat <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+  void *p = (void *) malloc (num);
+  if (!p)
+    lt_fatal (__FILE__, __LINE__, "memory exhausted");
+
+  return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
+			  string) : NULL;
+}
+
+const char *
+base_name (const char *name)
+{
+  const char *base;
+
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return base;
+}
+
+int
+check_executable (const char *path)
+{
+  struct stat st;
+
+  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
+                  nonempty (path));
+  if ((!path) || (!*path))
+    return 0;
+
+  if ((stat (path, &st) >= 0)
+      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
+    return 1;
+  else
+    return 0;
+}
+
+int
+make_executable (const char *path)
+{
+  int rval = 0;
+  struct stat st;
+
+  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
+                  nonempty (path));
+  if ((!path) || (!*path))
+    return 0;
+
+  if (stat (path, &st) >= 0)
+    {
+      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
+    }
+  return rval;
+}
+
+/* Searches for the full path of the wrapper.  Returns
+   newly allocated full path name if found, NULL otherwise
+   Does not chase symlinks, even on platforms that support them.
+*/
+char *
+find_executable (const char *wrapper)
+{
+  int has_slash = 0;
+  const char *p;
+  const char *p_next;
+  /* static buffer for getcwd */
+  char tmp[LT_PATHMAX + 1];
+  size_t tmp_len;
+  char *concat_name;
+
+  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
+                  nonempty (wrapper));
+
+  if ((wrapper == NULL) || (*wrapper == '\0'))
+    return NULL;
+
+  /* Absolute path? */
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
+  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
+    {
+      concat_name = xstrdup (wrapper);
+      if (check_executable (concat_name))
+	return concat_name;
+      XFREE (concat_name);
+    }
+  else
+    {
+#endif
+      if (IS_DIR_SEPARATOR (wrapper[0]))
+	{
+	  concat_name = xstrdup (wrapper);
+	  if (check_executable (concat_name))
+	    return concat_name;
+	  XFREE (concat_name);
+	}
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
+    }
+#endif
+
+  for (p = wrapper; *p; p++)
+    if (*p == '/')
+      {
+	has_slash = 1;
+	break;
+      }
+  if (!has_slash)
+    {
+      /* no slashes; search PATH */
+      const char *path = getenv ("PATH");
+      if (path != NULL)
+	{
+	  for (p = path; *p; p = p_next)
+	    {
+	      const char *q;
+	      size_t p_len;
+	      for (q = p; *q; q++)
+		if (IS_PATH_SEPARATOR (*q))
+		  break;
+	      p_len = (size_t) (q - p);
+	      p_next = (*q == '\0' ? q : q + 1);
+	      if (p_len == 0)
+		{
+		  /* empty path: current directory */
+		  if (getcwd (tmp, LT_PATHMAX) == NULL)
+		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+                              nonnull (strerror (errno)));
+		  tmp_len = strlen (tmp);
+		  concat_name =
+		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+		  memcpy (concat_name, tmp, tmp_len);
+		  concat_name[tmp_len] = '/';
+		  strcpy (concat_name + tmp_len + 1, wrapper);
+		}
+	      else
+		{
+		  concat_name =
+		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
+		  memcpy (concat_name, p, p_len);
+		  concat_name[p_len] = '/';
+		  strcpy (concat_name + p_len + 1, wrapper);
+		}
+	      if (check_executable (concat_name))
+		return concat_name;
+	      XFREE (concat_name);
+	    }
+	}
+      /* not found in PATH; assume curdir */
+    }
+  /* Relative path | not found in path: prepend cwd */
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
+    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+              nonnull (strerror (errno)));
+  tmp_len = strlen (tmp);
+  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+  memcpy (concat_name, tmp, tmp_len);
+  concat_name[tmp_len] = '/';
+  strcpy (concat_name + tmp_len + 1, wrapper);
+
+  if (check_executable (concat_name))
+    return concat_name;
+  XFREE (concat_name);
+  return NULL;
+}
+
+char *
+chase_symlinks (const char *pathspec)
+{
+#ifndef S_ISLNK
+  return xstrdup (pathspec);
+#else
+  char buf[LT_PATHMAX];
+  struct stat s;
+  char *tmp_pathspec = xstrdup (pathspec);
+  char *p;
+  int has_symlinks = 0;
+  while (strlen (tmp_pathspec) && !has_symlinks)
+    {
+      lt_debugprintf (__FILE__, __LINE__,
+		      "checking path component for symlinks: %s\n",
+		      tmp_pathspec);
+      if (lstat (tmp_pathspec, &s) == 0)
+	{
+	  if (S_ISLNK (s.st_mode) != 0)
+	    {
+	      has_symlinks = 1;
+	      break;
+	    }
+
+	  /* search backwards for last DIR_SEPARATOR */
+	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
+	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+	    p--;
+	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+	    {
+	      /* no more DIR_SEPARATORS left */
+	      break;
+	    }
+	  *p = '\0';
+	}
+      else
+	{
+	  lt_fatal (__FILE__, __LINE__,
+		    "error accessing file \"%s\": %s",
+		    tmp_pathspec, nonnull (strerror (errno)));
+	}
+    }
+  XFREE (tmp_pathspec);
+
+  if (!has_symlinks)
+    {
+      return xstrdup (pathspec);
+    }
+
+  tmp_pathspec = realpath (pathspec, buf);
+  if (tmp_pathspec == 0)
+    {
+      lt_fatal (__FILE__, __LINE__,
+		"could not follow symlinks for %s", pathspec);
+    }
+  return xstrdup (tmp_pathspec);
+#endif
+}
+
+char *
+strendzap (char *str, const char *pat)
+{
+  size_t len, patlen;
+
+  assert (str != NULL);
+  assert (pat != NULL);
+
+  len = strlen (str);
+  patlen = strlen (pat);
+
+  if (patlen <= len)
+    {
+      str += len - patlen;
+      if (STREQ (str, pat))
+	*str = '\0';
+    }
+  return str;
+}
+
+void
+lt_debugprintf (const char *file, int line, const char *fmt, ...)
+{
+  va_list args;
+  if (lt_debug)
+    {
+      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
+      va_start (args, fmt);
+      (void) vfprintf (stderr, fmt, args);
+      va_end (args);
+    }
+}
+
+static void
+lt_error_core (int exit_status, const char *file,
+	       int line, const char *mode,
+	       const char *message, va_list ap)
+{
+  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
+  vfprintf (stderr, message, ap);
+  fprintf (stderr, ".\n");
+
+  if (exit_status >= 0)
+    exit (exit_status);
+}
+
+void
+lt_fatal (const char *file, int line, const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
+  va_end (ap);
+}
+
+static const char *
+nonnull (const char *s)
+{
+  return s ? s : "(null)";
+}
+
+static const char *
+nonempty (const char *s)
+{
+  return (s && !*s) ? "(empty)" : nonnull (s);
+}
+
+void
+lt_setenv (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_setenv) setting '%s' to '%s'\n",
+                  nonnull (name), nonnull (value));
+  {
+#ifdef HAVE_SETENV
+    /* always make a copy, for consistency with !HAVE_SETENV */
+    char *str = xstrdup (value);
+    setenv (name, str, 1);
+#else
+    size_t len = strlen (name) + 1 + strlen (value) + 1;
+    char *str = XMALLOC (char, len);
+    sprintf (str, "%s=%s", name, value);
+    if (putenv (str) != EXIT_SUCCESS)
+      {
+        XFREE (str);
+      }
+#endif
+  }
+}
+
+char *
+lt_extend_str (const char *orig_value, const char *add, int to_end)
+{
+  char *new_value;
+  if (orig_value && *orig_value)
+    {
+      size_t orig_value_len = strlen (orig_value);
+      size_t add_len = strlen (add);
+      new_value = XMALLOC (char, add_len + orig_value_len + 1);
+      if (to_end)
+        {
+          strcpy (new_value, orig_value);
+          strcpy (new_value + orig_value_len, add);
+        }
+      else
+        {
+          strcpy (new_value, add);
+          strcpy (new_value + add_len, orig_value);
+        }
+    }
+  else
+    {
+      new_value = xstrdup (add);
+    }
+  return new_value;
+}
+
+void
+lt_update_exe_path (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+                  nonnull (name), nonnull (value));
+
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      /* some systems can't cope with a ':'-terminated path #' */
+      size_t len = strlen (new_value);
+      while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+        {
+          new_value[--len] = '\0';
+        }
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
+
+void
+lt_update_lib_path (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+                  nonnull (name), nonnull (value));
+
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
+
+EOF
+	    case $host_os in
+	      mingw*)
+		cat <<"EOF"
+
+/* Prepares an argument vector before calling spawn().
+   Note that spawn() does not by itself call the command interpreter
+     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
+      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+         GetVersionEx(&v);
+         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
+      }) ? "cmd.exe" : "command.com").
+   Instead it simply concatenates the arguments, separated by ' ', and calls
+   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
+   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
+   special way:
+   - Space and tab are interpreted as delimiters. They are not treated as
+     delimiters if they are surrounded by double quotes: "...".
+   - Unescaped double quotes are removed from the input. Their only effect is
+     that within double quotes, space and tab are treated like normal
+     characters.
+   - Backslashes not followed by double quotes are not special.
+   - But 2*n+1 backslashes followed by a double quote become
+     n backslashes followed by a double quote (n >= 0):
+       \" -> "
+       \\\" -> \"
+       \\\\\" -> \\"
+ */
+#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+char **
+prepare_spawn (char **argv)
+{
+  size_t argc;
+  char **new_argv;
+  size_t i;
+
+  /* Count number of arguments.  */
+  for (argc = 0; argv[argc] != NULL; argc++)
+    ;
+
+  /* Allocate new argument vector.  */
+  new_argv = XMALLOC (char *, argc + 1);
+
+  /* Put quoted arguments into the new argument vector.  */
+  for (i = 0; i < argc; i++)
+    {
+      const char *string = argv[i];
+
+      if (string[0] == '\0')
+	new_argv[i] = xstrdup ("\"\"");
+      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
+	{
+	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
+	  size_t length;
+	  unsigned int backslashes;
+	  const char *s;
+	  char *quoted_string;
+	  char *p;
+
+	  length = 0;
+	  backslashes = 0;
+	  if (quote_around)
+	    length++;
+	  for (s = string; *s != '\0'; s++)
+	    {
+	      char c = *s;
+	      if (c == '"')
+		length += backslashes + 1;
+	      length++;
+	      if (c == '\\')
+		backslashes++;
+	      else
+		backslashes = 0;
+	    }
+	  if (quote_around)
+	    length += backslashes + 1;
+
+	  quoted_string = XMALLOC (char, length + 1);
+
+	  p = quoted_string;
+	  backslashes = 0;
+	  if (quote_around)
+	    *p++ = '"';
+	  for (s = string; *s != '\0'; s++)
+	    {
+	      char c = *s;
+	      if (c == '"')
+		{
+		  unsigned int j;
+		  for (j = backslashes + 1; j > 0; j--)
+		    *p++ = '\\';
+		}
+	      *p++ = c;
+	      if (c == '\\')
+		backslashes++;
+	      else
+		backslashes = 0;
+	    }
+	  if (quote_around)
+	    {
+	      unsigned int j;
+	      for (j = backslashes; j > 0; j--)
+		*p++ = '\\';
+	      *p++ = '"';
+	    }
+	  *p = '\0';
+
+	  new_argv[i] = quoted_string;
+	}
+      else
+	new_argv[i] = (char *) string;
+    }
+  new_argv[argc] = NULL;
+
+  return new_argv;
+}
+EOF
+		;;
+	    esac
+
+            cat <<"EOF"
+void lt_dump_script (FILE* f)
+{
+EOF
+	    func_emit_wrapper yes |
+	      $SED -n -e '
+s/^\(.\{79\}\)\(..*\)/\1\
+\2/
+h
+s/\([\\"]\)/\\\1/g
+s/$/\\n/
+s/\([^\n]*\).*/  fputs ("\1", f);/p
+g
+D'
+            cat <<"EOF"
+}
+EOF
+}
+# end: func_emit_cwrapperexe_src
+
+# func_win32_import_lib_p ARG
+# True if ARG is an import lib, as indicated by $file_magic_cmd
+func_win32_import_lib_p ()
+{
+    $debug_cmd
+
+    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
+    *import*) : ;;
+    *) false ;;
+    esac
+}
+
+# func_suncc_cstd_abi
+# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!!
+# Several compiler flags select an ABI that is incompatible with the
+# Cstd library. Avoid specifying it if any are in CXXFLAGS.
+func_suncc_cstd_abi ()
+{
+    $debug_cmd
+
+    case " $compile_command " in
+    *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*)
+      suncc_use_cstd_abi=no
+      ;;
+    *)
+      suncc_use_cstd_abi=yes
+      ;;
+    esac
+}
+
+# func_mode_link arg...
+func_mode_link ()
+{
+    $debug_cmd
+
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # what system we are compiling for in order to pass an extra
+      # flag for every libtool invocation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll that has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args=$nonopt
+    base_compile="$nonopt $@"
+    compile_command=$nonopt
+    finalize_command=$nonopt
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+    inst_prefix_dir=
+    new_inherited_linker_flags=
+
+    avoid_version=no
+    bindir=
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    os2dllname=
+    non_pic_objects=
+    precious_files_regex=
+    prefer_static_libs=no
+    preload=false
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+    vinfo_number=no
+    weak_libs=
+    single_module=$wl-single_module
+    func_infer_tag $base_compile
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -shared)
+	test yes != "$build_libtool_libs" \
+	  && func_fatal_configuration "cannot build a shared library"
+	build_old_libs=no
+	break
+	;;
+      -all-static | -static | -static-libtool-libs)
+	case $arg in
+	-all-static)
+	  if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then
+	    func_warning "complete static linking is impossible in this configuration"
+	  fi
+	  if test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=yes
+	  ;;
+	-static)
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=built
+	  ;;
+	-static-libtool-libs)
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=yes
+	  ;;
+	esac
+	build_libtool_libs=no
+	build_old_libs=yes
+	break
+	;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test "$#" -gt 0; do
+      arg=$1
+      shift
+      func_quote_for_eval "$arg"
+      qarg=$func_quote_for_eval_unquoted_result
+      func_append libtool_args " $func_quote_for_eval_result"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+	case $prev in
+	output)
+	  func_append compile_command " @OUTPUT@"
+	  func_append finalize_command " @OUTPUT@"
+	  ;;
+	esac
+
+	case $prev in
+	bindir)
+	  bindir=$arg
+	  prev=
+	  continue
+	  ;;
+	dlfiles|dlprefiles)
+	  $preload || {
+	    # Add the symbol object into the linking commands.
+	    func_append compile_command " @SYMFILE@"
+	    func_append finalize_command " @SYMFILE@"
+	    preload=:
+	  }
+	  case $arg in
+	  *.la | *.lo) ;;  # We handle these cases below.
+	  force)
+	    if test no = "$dlself"; then
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  self)
+	    if test dlprefiles = "$prev"; then
+	      dlself=yes
+	    elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then
+	      dlself=yes
+	    else
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  *)
+	    if test dlfiles = "$prev"; then
+	      func_append dlfiles " $arg"
+	    else
+	      func_append dlprefiles " $arg"
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  esac
+	  ;;
+	expsyms)
+	  export_symbols=$arg
+	  test -f "$arg" \
+	    || func_fatal_error "symbol file '$arg' does not exist"
+	  prev=
+	  continue
+	  ;;
+	expsyms_regex)
+	  export_symbols_regex=$arg
+	  prev=
+	  continue
+	  ;;
+	framework)
+	  case $host in
+	    *-*-darwin*)
+	      case "$deplibs " in
+		*" $qarg.ltframework "*) ;;
+		*) func_append deplibs " $qarg.ltframework" # this is fixed later
+		   ;;
+	      esac
+	      ;;
+	  esac
+	  prev=
+	  continue
+	  ;;
+	inst_prefix)
+	  inst_prefix_dir=$arg
+	  prev=
+	  continue
+	  ;;
+	mllvm)
+	  # Clang does not use LLVM to link, so we can simply discard any
+	  # '-mllvm $arg' options when doing the link step.
+	  prev=
+	  continue
+	  ;;
+	objectlist)
+	  if test -f "$arg"; then
+	    save_arg=$arg
+	    moreargs=
+	    for fil in `cat "$save_arg"`
+	    do
+#	      func_append moreargs " $fil"
+	      arg=$fil
+	      # A libtool-controlled object.
+
+	      # Check to see that this really is a libtool object.
+	      if func_lalib_unsafe_p "$arg"; then
+		pic_object=
+		non_pic_object=
+
+		# Read the .lo file
+		func_source "$arg"
+
+		if test -z "$pic_object" ||
+		   test -z "$non_pic_object" ||
+		   test none = "$pic_object" &&
+		   test none = "$non_pic_object"; then
+		  func_fatal_error "cannot find name of object for '$arg'"
+		fi
+
+		# Extract subdirectory from the argument.
+		func_dirname "$arg" "/" ""
+		xdir=$func_dirname_result
+
+		if test none != "$pic_object"; then
+		  # Prepend the subdirectory the object is found in.
+		  pic_object=$xdir$pic_object
+
+		  if test dlfiles = "$prev"; then
+		    if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
+		      func_append dlfiles " $pic_object"
+		      prev=
+		      continue
+		    else
+		      # If libtool objects are unsupported, then we need to preload.
+		      prev=dlprefiles
+		    fi
+		  fi
+
+		  # CHECK ME:  I think I busted this.  -Ossama
+		  if test dlprefiles = "$prev"; then
+		    # Preload the old-style object.
+		    func_append dlprefiles " $pic_object"
+		    prev=
+		  fi
+
+		  # A PIC object.
+		  func_append libobjs " $pic_object"
+		  arg=$pic_object
+		fi
+
+		# Non-PIC object.
+		if test none != "$non_pic_object"; then
+		  # Prepend the subdirectory the object is found in.
+		  non_pic_object=$xdir$non_pic_object
+
+		  # A standard non-PIC object
+		  func_append non_pic_objects " $non_pic_object"
+		  if test -z "$pic_object" || test none = "$pic_object"; then
+		    arg=$non_pic_object
+		  fi
+		else
+		  # If the PIC object exists, use it instead.
+		  # $xdir was prepended to $pic_object above.
+		  non_pic_object=$pic_object
+		  func_append non_pic_objects " $non_pic_object"
+		fi
+	      else
+		# Only an error if not doing a dry-run.
+		if $opt_dry_run; then
+		  # Extract subdirectory from the argument.
+		  func_dirname "$arg" "/" ""
+		  xdir=$func_dirname_result
+
+		  func_lo2o "$arg"
+		  pic_object=$xdir$objdir/$func_lo2o_result
+		  non_pic_object=$xdir$func_lo2o_result
+		  func_append libobjs " $pic_object"
+		  func_append non_pic_objects " $non_pic_object"
+	        else
+		  func_fatal_error "'$arg' is not a valid libtool object"
+		fi
+	      fi
+	    done
+	  else
+	    func_fatal_error "link input file '$arg' does not exist"
+	  fi
+	  arg=$save_arg
+	  prev=
+	  continue
+	  ;;
+	os2dllname)
+	  os2dllname=$arg
+	  prev=
+	  continue
+	  ;;
+	precious_regex)
+	  precious_files_regex=$arg
+	  prev=
+	  continue
+	  ;;
+	release)
+	  release=-$arg
+	  prev=
+	  continue
+	  ;;
+	rpath | xrpath)
+	  # We need an absolute path.
+	  case $arg in
+	  [\\/]* | [A-Za-z]:[\\/]*) ;;
+	  *)
+	    func_fatal_error "only absolute run-paths are allowed"
+	    ;;
+	  esac
+	  if test rpath = "$prev"; then
+	    case "$rpath " in
+	    *" $arg "*) ;;
+	    *) func_append rpath " $arg" ;;
+	    esac
+	  else
+	    case "$xrpath " in
+	    *" $arg "*) ;;
+	    *) func_append xrpath " $arg" ;;
+	    esac
+	  fi
+	  prev=
+	  continue
+	  ;;
+	shrext)
+	  shrext_cmds=$arg
+	  prev=
+	  continue
+	  ;;
+	weak)
+	  func_append weak_libs " $arg"
+	  prev=
+	  continue
+	  ;;
+	xcclinker)
+	  func_append linker_flags " $qarg"
+	  func_append compiler_flags " $qarg"
+	  prev=
+	  func_append compile_command " $qarg"
+	  func_append finalize_command " $qarg"
+	  continue
+	  ;;
+	xcompiler)
+	  func_append compiler_flags " $qarg"
+	  prev=
+	  func_append compile_command " $qarg"
+	  func_append finalize_command " $qarg"
+	  continue
+	  ;;
+	xlinker)
+	  func_append linker_flags " $qarg"
+	  func_append compiler_flags " $wl$qarg"
+	  prev=
+	  func_append compile_command " $wl$qarg"
+	  func_append finalize_command " $wl$qarg"
+	  continue
+	  ;;
+	*)
+	  eval "$prev=\"\$arg\""
+	  prev=
+	  continue
+	  ;;
+	esac
+      fi # test -n "$prev"
+
+      prevarg=$arg
+
+      case $arg in
+      -all-static)
+	if test -n "$link_static_flag"; then
+	  # See comment for -static flag below, for more details.
+	  func_append compile_command " $link_static_flag"
+	  func_append finalize_command " $link_static_flag"
+	fi
+	continue
+	;;
+
+      -allow-undefined)
+	# FIXME: remove this flag sometime in the future.
+	func_fatal_error "'-allow-undefined' must not be used because it is the default"
+	;;
+
+      -avoid-version)
+	avoid_version=yes
+	continue
+	;;
+
+      -bindir)
+	prev=bindir
+	continue
+	;;
+
+      -dlopen)
+	prev=dlfiles
+	continue
+	;;
+
+      -dlpreopen)
+	prev=dlprefiles
+	continue
+	;;
+
+      -export-dynamic)
+	export_dynamic=yes
+	continue
+	;;
+
+      -export-symbols | -export-symbols-regex)
+	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	  func_fatal_error "more than one -exported-symbols argument is not allowed"
+	fi
+	if test X-export-symbols = "X$arg"; then
+	  prev=expsyms
+	else
+	  prev=expsyms_regex
+	fi
+	continue
+	;;
+
+      -framework)
+	prev=framework
+	continue
+	;;
+
+      -inst-prefix-dir)
+	prev=inst_prefix
+	continue
+	;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+	case $with_gcc/$host in
+	no/*-*-irix* | /*-*-irix*)
+	  func_append compile_command " $arg"
+	  func_append finalize_command " $arg"
+	  ;;
+	esac
+	continue
+	;;
+
+      -L*)
+	func_stripname "-L" '' "$arg"
+	if test -z "$func_stripname_result"; then
+	  if test "$#" -gt 0; then
+	    func_fatal_error "require no space between '-L' and '$1'"
+	  else
+	    func_fatal_error "need path for '-L' option"
+	  fi
+	fi
+	func_resolve_sysroot "$func_stripname_result"
+	dir=$func_resolve_sysroot_result
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  absdir=`cd "$dir" && pwd`
+	  test -z "$absdir" && \
+	    func_fatal_error "cannot determine absolute directory name of '$dir'"
+	  dir=$absdir
+	  ;;
+	esac
+	case "$deplibs " in
+	*" -L$dir "* | *" $arg "*)
+	  # Will only happen for absolute or sysroot arguments
+	  ;;
+	*)
+	  # Preserve sysroot, but never include relative directories
+	  case $dir in
+	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
+	    *) func_append deplibs " -L$dir" ;;
+	  esac
+	  func_append lib_search_path " $dir"
+	  ;;
+	esac
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
+	  case :$dllsearchpath: in
+	  *":$dir:"*) ;;
+	  ::) dllsearchpath=$dir;;
+	  *) func_append dllsearchpath ":$dir";;
+	  esac
+	  case :$dllsearchpath: in
+	  *":$testbindir:"*) ;;
+	  ::) dllsearchpath=$testbindir;;
+	  *) func_append dllsearchpath ":$testbindir";;
+	  esac
+	  ;;
+	esac
+	continue
+	;;
+
+      -l*)
+	if test X-lc = "X$arg" || test X-lm = "X$arg"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
+	    # These systems don't actually have a C or math library (as such)
+	    continue
+	    ;;
+	  *-*-os2*)
+	    # These systems don't actually have a C library (as such)
+	    test X-lc = "X$arg" && continue
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test X-lc = "X$arg" && continue
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C and math libraries are in the System framework
+	    func_append deplibs " System.ltframework"
+	    continue
+	    ;;
+	  *-*-sco3.2v5* | *-*-sco5v6*)
+	    # Causes problems with __ctype
+	    test X-lc = "X$arg" && continue
+	    ;;
+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+	    # Compiler inserts libc in the correct place for threads to work
+	    test X-lc = "X$arg" && continue
+	    ;;
+	  esac
+	elif test X-lc_r = "X$arg"; then
+	 case $host in
+	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
+	   # Do not include libc_r directly, use -pthread flag.
+	   continue
+	   ;;
+	 esac
+	fi
+	func_append deplibs " $arg"
+	continue
+	;;
+
+      -mllvm)
+	prev=mllvm
+	continue
+	;;
+
+      -module)
+	module=yes
+	continue
+	;;
+
+      # Tru64 UNIX uses -model [arg] to determine the layout of C++
+      # classes, name mangling, and exception handling.
+      # Darwin uses the -arch flag to determine output architecture.
+      -model|-arch|-isysroot|--sysroot)
+	func_append compiler_flags " $arg"
+	func_append compile_command " $arg"
+	func_append finalize_command " $arg"
+	prev=xcompiler
+	continue
+	;;
+
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+	func_append compiler_flags " $arg"
+	func_append compile_command " $arg"
+	func_append finalize_command " $arg"
+	case "$new_inherited_linker_flags " in
+	    *" $arg "*) ;;
+	    * ) func_append new_inherited_linker_flags " $arg" ;;
+	esac
+	continue
+	;;
+
+      -multi_module)
+	single_module=$wl-multi_module
+	continue
+	;;
+
+      -no-fast-install)
+	fast_install=no
+	continue
+	;;
+
+      -no-install)
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
+	  # The PATH hackery in wrapper scripts is required on Windows
+	  # and Darwin in order for the loader to find any dlls it needs.
+	  func_warning "'-no-install' is ignored for $host"
+	  func_warning "assuming '-no-fast-install' instead"
+	  fast_install=no
+	  ;;
+	*) no_install=yes ;;
+	esac
+	continue
+	;;
+
+      -no-undefined)
+	allow_undefined=no
+	continue
+	;;
+
+      -objectlist)
+	prev=objectlist
+	continue
+	;;
+
+      -os2dllname)
+	prev=os2dllname
+	continue
+	;;
+
+      -o) prev=output ;;
+
+      -precious-files-regex)
+	prev=precious_regex
+	continue
+	;;
+
+      -release)
+	prev=release
+	continue
+	;;
+
+      -rpath)
+	prev=rpath
+	continue
+	;;
+
+      -R)
+	prev=xrpath
+	continue
+	;;
+
+      -R*)
+	func_stripname '-R' '' "$arg"
+	dir=$func_stripname_result
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	=*)
+	  func_stripname '=' '' "$dir"
+	  dir=$lt_sysroot$func_stripname_result
+	  ;;
+	*)
+	  func_fatal_error "only absolute run-paths are allowed"
+	  ;;
+	esac
+	case "$xrpath " in
+	*" $dir "*) ;;
+	*) func_append xrpath " $dir" ;;
+	esac
+	continue
+	;;
+
+      -shared)
+	# The effects of -shared are defined in a previous loop.
+	continue
+	;;
+
+      -shrext)
+	prev=shrext
+	continue
+	;;
+
+      -static | -static-libtool-libs)
+	# The effects of -static are defined in a previous loop.
+	# We used to do the same as -all-static on platforms that
+	# didn't have a PIC flag, but the assumption that the effects
+	# would be equivalent was wrong.  It would break on at least
+	# Digital Unix and AIX.
+	continue
+	;;
+
+      -thread-safe)
+	thread_safe=yes
+	continue
+	;;
+
+      -version-info)
+	prev=vinfo
+	continue
+	;;
+
+      -version-number)
+	prev=vinfo
+	vinfo_number=yes
+	continue
+	;;
+
+      -weak)
+        prev=weak
+	continue
+	;;
+
+      -Wc,*)
+	func_stripname '-Wc,' '' "$arg"
+	args=$func_stripname_result
+	arg=
+	save_ifs=$IFS; IFS=,
+	for flag in $args; do
+	  IFS=$save_ifs
+          func_quote_for_eval "$flag"
+	  func_append arg " $func_quote_for_eval_result"
+	  func_append compiler_flags " $func_quote_for_eval_result"
+	done
+	IFS=$save_ifs
+	func_stripname ' ' '' "$arg"
+	arg=$func_stripname_result
+	;;
+
+      -Wl,*)
+	func_stripname '-Wl,' '' "$arg"
+	args=$func_stripname_result
+	arg=
+	save_ifs=$IFS; IFS=,
+	for flag in $args; do
+	  IFS=$save_ifs
+          func_quote_for_eval "$flag"
+	  func_append arg " $wl$func_quote_for_eval_result"
+	  func_append compiler_flags " $wl$func_quote_for_eval_result"
+	  func_append linker_flags " $func_quote_for_eval_result"
+	done
+	IFS=$save_ifs
+	func_stripname ' ' '' "$arg"
+	arg=$func_stripname_result
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Xlinker)
+	prev=xlinker
+	continue
+	;;
+
+      -XCClinker)
+	prev=xcclinker
+	continue
+	;;
+
+      # -msg_* for osf cc
+      -msg_*)
+	func_quote_for_eval "$arg"
+	arg=$func_quote_for_eval_result
+	;;
+
+      # Flags to be passed through unchanged, with rationale:
+      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
+      # -r[0-9][0-9]*        specify processor for the SGI compiler
+      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
+      # +DA*, +DD*           enable 64-bit mode for the HP compiler
+      # -q*                  compiler args for the IBM compiler
+      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
+      # -F/path              path to uninstalled frameworks, gcc on darwin
+      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
+      # -fstack-protector*   stack protector flags for GCC
+      # @file                GCC response files
+      # -tp=*                Portland pgcc target processor selection
+      # --sysroot=*          for sysroot support
+      # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+      # -specs=*             GCC specs files
+      # -stdlib=*            select c++ std lib with clang
+      # -fsanitize=*         Clang/GCC memory and address sanitizer
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
+      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
+      -specs=*|-fsanitize=*)
+        func_quote_for_eval "$arg"
+	arg=$func_quote_for_eval_result
+        func_append compile_command " $arg"
+        func_append finalize_command " $arg"
+        func_append compiler_flags " $arg"
+        continue
+        ;;
+
+      -Z*)
+        if test os2 = "`expr $host : '.*\(os2\)'`"; then
+          # OS/2 uses -Zxxx to specify OS/2-specific options
+	  compiler_flags="$compiler_flags $arg"
+	  func_append compile_command " $arg"
+	  func_append finalize_command " $arg"
+	  case $arg in
+	  -Zlinker | -Zstack)
+	    prev=xcompiler
+	    ;;
+	  esac
+	  continue
+        else
+	  # Otherwise treat like 'Some other compiler flag' below
+	  func_quote_for_eval "$arg"
+	  arg=$func_quote_for_eval_result
+        fi
+	;;
+
+      # Some other compiler flag.
+      -* | +*)
+        func_quote_for_eval "$arg"
+	arg=$func_quote_for_eval_result
+	;;
+
+      *.$objext)
+	# A standard object.
+	func_append objs " $arg"
+	;;
+
+      *.lo)
+	# A libtool-controlled object.
+
+	# Check to see that this really is a libtool object.
+	if func_lalib_unsafe_p "$arg"; then
+	  pic_object=
+	  non_pic_object=
+
+	  # Read the .lo file
+	  func_source "$arg"
+
+	  if test -z "$pic_object" ||
+	     test -z "$non_pic_object" ||
+	     test none = "$pic_object" &&
+	     test none = "$non_pic_object"; then
+	    func_fatal_error "cannot find name of object for '$arg'"
+	  fi
+
+	  # Extract subdirectory from the argument.
+	  func_dirname "$arg" "/" ""
+	  xdir=$func_dirname_result
+
+	  test none = "$pic_object" || {
+	    # Prepend the subdirectory the object is found in.
+	    pic_object=$xdir$pic_object
+
+	    if test dlfiles = "$prev"; then
+	      if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
+		func_append dlfiles " $pic_object"
+		prev=
+		continue
+	      else
+		# If libtool objects are unsupported, then we need to preload.
+		prev=dlprefiles
+	      fi
+	    fi
+
+	    # CHECK ME:  I think I busted this.  -Ossama
+	    if test dlprefiles = "$prev"; then
+	      # Preload the old-style object.
+	      func_append dlprefiles " $pic_object"
+	      prev=
+	    fi
+
+	    # A PIC object.
+	    func_append libobjs " $pic_object"
+	    arg=$pic_object
+	  }
+
+	  # Non-PIC object.
+	  if test none != "$non_pic_object"; then
+	    # Prepend the subdirectory the object is found in.
+	    non_pic_object=$xdir$non_pic_object
+
+	    # A standard non-PIC object
+	    func_append non_pic_objects " $non_pic_object"
+	    if test -z "$pic_object" || test none = "$pic_object"; then
+	      arg=$non_pic_object
+	    fi
+	  else
+	    # If the PIC object exists, use it instead.
+	    # $xdir was prepended to $pic_object above.
+	    non_pic_object=$pic_object
+	    func_append non_pic_objects " $non_pic_object"
+	  fi
+	else
+	  # Only an error if not doing a dry-run.
+	  if $opt_dry_run; then
+	    # Extract subdirectory from the argument.
+	    func_dirname "$arg" "/" ""
+	    xdir=$func_dirname_result
+
+	    func_lo2o "$arg"
+	    pic_object=$xdir$objdir/$func_lo2o_result
+	    non_pic_object=$xdir$func_lo2o_result
+	    func_append libobjs " $pic_object"
+	    func_append non_pic_objects " $non_pic_object"
+	  else
+	    func_fatal_error "'$arg' is not a valid libtool object"
+	  fi
+	fi
+	;;
+
+      *.$libext)
+	# An archive.
+	func_append deplibs " $arg"
+	func_append old_deplibs " $arg"
+	continue
+	;;
+
+      *.la)
+	# A libtool-controlled library.
+
+	func_resolve_sysroot "$arg"
+	if test dlfiles = "$prev"; then
+	  # This library was specified with -dlopen.
+	  func_append dlfiles " $func_resolve_sysroot_result"
+	  prev=
+	elif test dlprefiles = "$prev"; then
+	  # The library was specified with -dlpreopen.
+	  func_append dlprefiles " $func_resolve_sysroot_result"
+	  prev=
+	else
+	  func_append deplibs " $func_resolve_sysroot_result"
+	fi
+	continue
+	;;
+
+      # Some other compiler argument.
+      *)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	func_quote_for_eval "$arg"
+	arg=$func_quote_for_eval_result
+	;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+	func_append compile_command " $arg"
+	func_append finalize_command " $arg"
+      fi
+    done # argument parsing loop
+
+    test -n "$prev" && \
+      func_fatal_help "the '$prevarg' option requires an argument"
+
+    if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      func_append compile_command " $arg"
+      func_append finalize_command " $arg"
+    fi
+
+    oldlibs=
+    # calculate the name of the file, without its directory
+    func_basename "$output"
+    outputname=$func_basename_result
+    libobjs_save=$libobjs
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    # Definition is injected by LT_CONFIG during libtool generation.
+    func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH"
+
+    func_dirname "$output" "/" ""
+    output_objdir=$func_dirname_result$objdir
+    func_to_tool_file "$output_objdir/"
+    tool_output_objdir=$func_to_tool_file_result
+    # Create the object directory.
+    func_mkdir_p "$output_objdir"
+
+    # Determine the type of output
+    case $output in
+    "")
+      func_fatal_help "you must specify an output file"
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    specialdeplibs=
+
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if $opt_preserve_dup_deps; then
+	case "$libs " in
+	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
+	esac
+      fi
+      func_append libs " $deplib"
+    done
+
+    if test lib = "$linkmode"; then
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+      # Compute libraries that are listed more than once in $predeps
+      # $postdeps and mark them as special (i.e., whose duplicates are
+      # not to be eliminated).
+      pre_post_deps=
+      if $opt_duplicate_compiler_generated_deps; then
+	for pre_post_dep in $predeps $postdeps; do
+	  case "$pre_post_deps " in
+	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
+	  esac
+	  func_append pre_post_deps " $pre_post_dep"
+	done
+      fi
+      pre_post_deps=
+    fi
+
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+
+    case $linkmode in
+    lib)
+	passes="conv dlpreopen link"
+	for file in $dlfiles $dlprefiles; do
+	  case $file in
+	  *.la) ;;
+	  *)
+	    func_fatal_help "libraries can '-dlopen' only libtool libraries: $file"
+	    ;;
+	  esac
+	done
+	;;
+    prog)
+	compile_deplibs=
+	finalize_deplibs=
+	alldeplibs=false
+	newdlfiles=
+	newdlprefiles=
+	passes="conv scan dlopen dlpreopen link"
+	;;
+    *)  passes="conv"
+	;;
+    esac
+
+    for pass in $passes; do
+      # The preopen pass in lib mode reverses $deplibs; put it back here
+      # so that -L comes before libs that need it for instance...
+      if test lib,link = "$linkmode,$pass"; then
+	## FIXME: Find the place where the list is rebuilt in the wrong
+	##        order, and fix it there properly
+        tmp_deplibs=
+	for deplib in $deplibs; do
+	  tmp_deplibs="$deplib $tmp_deplibs"
+	done
+	deplibs=$tmp_deplibs
+      fi
+
+      if test lib,link = "$linkmode,$pass" ||
+	 test prog,scan = "$linkmode,$pass"; then
+	libs=$deplibs
+	deplibs=
+      fi
+      if test prog = "$linkmode"; then
+	case $pass in
+	dlopen) libs=$dlfiles ;;
+	dlpreopen) libs=$dlprefiles ;;
+	link)
+	  libs="$deplibs %DEPLIBS%"
+	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+	  ;;
+	esac
+      fi
+      if test lib,dlpreopen = "$linkmode,$pass"; then
+	# Collect and forward deplibs of preopened libtool libs
+	for lib in $dlprefiles; do
+	  # Ignore non-libtool-libs
+	  dependency_libs=
+	  func_resolve_sysroot "$lib"
+	  case $lib in
+	  *.la)	func_source "$func_resolve_sysroot_result" ;;
+	  esac
+
+	  # Collect preopened libtool deplibs, except any this library
+	  # has declared as weak libs
+	  for deplib in $dependency_libs; do
+	    func_basename "$deplib"
+            deplib_base=$func_basename_result
+	    case " $weak_libs " in
+	    *" $deplib_base "*) ;;
+	    *) func_append deplibs " $deplib" ;;
+	    esac
+	  done
+	done
+	libs=$dlprefiles
+      fi
+      if test dlopen = "$pass"; then
+	# Collect dlpreopened libraries
+	save_deplibs=$deplibs
+	deplibs=
+      fi
+
+      for deplib in $libs; do
+	lib=
+	found=false
+	case $deplib in
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+	  if test prog,link = "$linkmode,$pass"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    func_append compiler_flags " $deplib"
+	    if test lib = "$linkmode"; then
+		case "$new_inherited_linker_flags " in
+		    *" $deplib "*) ;;
+		    * ) func_append new_inherited_linker_flags " $deplib" ;;
+		esac
+	    fi
+	  fi
+	  continue
+	  ;;
+	-l*)
+	  if test lib != "$linkmode" && test prog != "$linkmode"; then
+	    func_warning "'-l' is ignored for archives/objects"
+	    continue
+	  fi
+	  func_stripname '-l' '' "$deplib"
+	  name=$func_stripname_result
+	  if test lib = "$linkmode"; then
+	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
+	  else
+	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
+	  fi
+	  for searchdir in $searchdirs; do
+	    for search_ext in .la $std_shrext .so .a; do
+	      # Search the libtool library
+	      lib=$searchdir/lib$name$search_ext
+	      if test -f "$lib"; then
+		if test .la = "$search_ext"; then
+		  found=:
+		else
+		  found=false
+		fi
+		break 2
+	      fi
+	    done
+	  done
+	  if $found; then
+	    # deplib is a libtool library
+	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+	    # We need to do some special things here, and not later.
+	    if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+	      case " $predeps $postdeps " in
+	      *" $deplib "*)
+		if func_lalib_p "$lib"; then
+		  library_names=
+		  old_library=
+		  func_source "$lib"
+		  for l in $old_library $library_names; do
+		    ll=$l
+		  done
+		  if test "X$ll" = "X$old_library"; then # only static version available
+		    found=false
+		    func_dirname "$lib" "" "."
+		    ladir=$func_dirname_result
+		    lib=$ladir/$old_library
+		    if test prog,link = "$linkmode,$pass"; then
+		      compile_deplibs="$deplib $compile_deplibs"
+		      finalize_deplibs="$deplib $finalize_deplibs"
+		    else
+		      deplibs="$deplib $deplibs"
+		      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
+		    fi
+		    continue
+		  fi
+		fi
+		;;
+	      *) ;;
+	      esac
+	    fi
+	  else
+	    # deplib doesn't seem to be a libtool library
+	    if test prog,link = "$linkmode,$pass"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
+	  fi
+	  ;; # -l
+	*.ltframework)
+	  if test prog,link = "$linkmode,$pass"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    deplibs="$deplib $deplibs"
+	    if test lib = "$linkmode"; then
+		case "$new_inherited_linker_flags " in
+		    *" $deplib "*) ;;
+		    * ) func_append new_inherited_linker_flags " $deplib" ;;
+		esac
+	    fi
+	  fi
+	  continue
+	  ;;
+	-L*)
+	  case $linkmode in
+	  lib)
+	    deplibs="$deplib $deplibs"
+	    test conv = "$pass" && continue
+	    newdependency_libs="$deplib $newdependency_libs"
+	    func_stripname '-L' '' "$deplib"
+	    func_resolve_sysroot "$func_stripname_result"
+	    func_append newlib_search_path " $func_resolve_sysroot_result"
+	    ;;
+	  prog)
+	    if test conv = "$pass"; then
+	      deplibs="$deplib $deplibs"
+	      continue
+	    fi
+	    if test scan = "$pass"; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    func_stripname '-L' '' "$deplib"
+	    func_resolve_sysroot "$func_stripname_result"
+	    func_append newlib_search_path " $func_resolve_sysroot_result"
+	    ;;
+	  *)
+	    func_warning "'-L' is ignored for archives/objects"
+	    ;;
+	  esac # linkmode
+	  continue
+	  ;; # -L
+	-R*)
+	  if test link = "$pass"; then
+	    func_stripname '-R' '' "$deplib"
+	    func_resolve_sysroot "$func_stripname_result"
+	    dir=$func_resolve_sysroot_result
+	    # Make sure the xrpath contains only unique directories.
+	    case "$xrpath " in
+	    *" $dir "*) ;;
+	    *) func_append xrpath " $dir" ;;
+	    esac
+	  fi
+	  deplibs="$deplib $deplibs"
+	  continue
+	  ;;
+	*.la)
+	  func_resolve_sysroot "$deplib"
+	  lib=$func_resolve_sysroot_result
+	  ;;
+	*.$libext)
+	  if test conv = "$pass"; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  case $linkmode in
+	  lib)
+	    # Linking convenience modules into shared libraries is allowed,
+	    # but linking other static libraries is non-portable.
+	    case " $dlpreconveniencelibs " in
+	    *" $deplib "*) ;;
+	    *)
+	      valid_a_lib=false
+	      case $deplibs_check_method in
+		match_pattern*)
+		  set dummy $deplibs_check_method; shift
+		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
+		    | $EGREP "$match_pattern_regex" > /dev/null; then
+		    valid_a_lib=:
+		  fi
+		;;
+		pass_all)
+		  valid_a_lib=:
+		;;
+	      esac
+	      if $valid_a_lib; then
+		echo
+		$ECHO "*** Warning: Linking the shared library $output against the"
+		$ECHO "*** static library $deplib is not portable!"
+		deplibs="$deplib $deplibs"
+	      else
+		echo
+		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because the file extensions .$libext of this argument makes me believe"
+		echo "*** that it is just a static archive that I should not use here."
+	      fi
+	      ;;
+	    esac
+	    continue
+	    ;;
+	  prog)
+	    if test link != "$pass"; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    continue
+	    ;;
+	  esac # linkmode
+	  ;; # *.$libext
+	*.lo | *.$objext)
+	  if test conv = "$pass"; then
+	    deplibs="$deplib $deplibs"
+	  elif test prog = "$linkmode"; then
+	    if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then
+	      # If there is no dlopen support or we're linking statically,
+	      # we need to preload.
+	      func_append newdlprefiles " $deplib"
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      func_append newdlfiles " $deplib"
+	    fi
+	  fi
+	  continue
+	  ;;
+	%DEPLIBS%)
+	  alldeplibs=:
+	  continue
+	  ;;
+	esac # case $deplib
+
+	$found || test -f "$lib" \
+	  || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'"
+
+	# Check to see that this really is a libtool archive.
+	func_lalib_unsafe_p "$lib" \
+	  || func_fatal_error "'$lib' is not a valid libtool archive"
+
+	func_dirname "$lib" "" "."
+	ladir=$func_dirname_result
+
+	dlname=
+	dlopen=
+	dlpreopen=
+	libdir=
+	library_names=
+	old_library=
+	inherited_linker_flags=
+	# If the library was installed with an old release of libtool,
+	# it will not redefine variables installed, or shouldnotlink
+	installed=yes
+	shouldnotlink=no
+	avoidtemprpath=
+
+
+	# Read the .la file
+	func_source "$lib"
+
+	# Convert "-framework foo" to "foo.ltframework"
+	if test -n "$inherited_linker_flags"; then
+	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
+	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+	    case " $new_inherited_linker_flags " in
+	      *" $tmp_inherited_linker_flag "*) ;;
+	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
+	    esac
+	  done
+	fi
+	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	if test lib,link = "$linkmode,$pass" ||
+	   test prog,scan = "$linkmode,$pass" ||
+	   { test prog != "$linkmode" && test lib != "$linkmode"; }; then
+	  test -n "$dlopen" && func_append dlfiles " $dlopen"
+	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
+	fi
+
+	if test conv = "$pass"; then
+	  # Only check for convenience libraries
+	  deplibs="$lib $deplibs"
+	  if test -z "$libdir"; then
+	    if test -z "$old_library"; then
+	      func_fatal_error "cannot find name of link library for '$lib'"
+	    fi
+	    # It is a libtool convenience library, so add in its objects.
+	    func_append convenience " $ladir/$objdir/$old_library"
+	    func_append old_convenience " $ladir/$objdir/$old_library"
+	    tmp_libs=
+	    for deplib in $dependency_libs; do
+	      deplibs="$deplib $deplibs"
+	      if $opt_preserve_dup_deps; then
+		case "$tmp_libs " in
+		*" $deplib "*) func_append specialdeplibs " $deplib" ;;
+		esac
+	      fi
+	      func_append tmp_libs " $deplib"
+	    done
+	  elif test prog != "$linkmode" && test lib != "$linkmode"; then
+	    func_fatal_error "'$lib' is not a convenience library"
+	  fi
+	  continue
+	fi # $pass = conv
+
+
+	# Get the name of the library we link against.
+	linklib=
+	if test -n "$old_library" &&
+	   { test yes = "$prefer_static_libs" ||
+	     test built,no = "$prefer_static_libs,$installed"; }; then
+	  linklib=$old_library
+	else
+	  for l in $old_library $library_names; do
+	    linklib=$l
+	  done
+	fi
+	if test -z "$linklib"; then
+	  func_fatal_error "cannot find name of link library for '$lib'"
+	fi
+
+	# This library was specified with -dlopen.
+	if test dlopen = "$pass"; then
+	  test -z "$libdir" \
+	    && func_fatal_error "cannot -dlopen a convenience library: '$lib'"
+	  if test -z "$dlname" ||
+	     test yes != "$dlopen_support" ||
+	     test no = "$build_libtool_libs"
+	  then
+	    # If there is no dlname, no dlopen support or we're linking
+	    # statically, we need to preload.  We also need to preload any
+	    # dependent libraries so libltdl's deplib preloader doesn't
+	    # bomb out in the load deplibs phase.
+	    func_append dlprefiles " $lib $dependency_libs"
+	  else
+	    func_append newdlfiles " $lib"
+	  fi
+	  continue
+	fi # $pass = dlopen
+
+	# We need an absolute path.
+	case $ladir in
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;;
+	*)
+	  abs_ladir=`cd "$ladir" && pwd`
+	  if test -z "$abs_ladir"; then
+	    func_warning "cannot determine absolute directory name of '$ladir'"
+	    func_warning "passing it literally to the linker, although it might fail"
+	    abs_ladir=$ladir
+	  fi
+	  ;;
+	esac
+	func_basename "$lib"
+	laname=$func_basename_result
+
+	# Find the relevant object directory and library name.
+	if test yes = "$installed"; then
+	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    func_warning "library '$lib' was moved."
+	    dir=$ladir
+	    absdir=$abs_ladir
+	    libdir=$abs_ladir
+	  else
+	    dir=$lt_sysroot$libdir
+	    absdir=$lt_sysroot$libdir
+	  fi
+	  test yes = "$hardcode_automatic" && avoidtemprpath=yes
+	else
+	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    dir=$ladir
+	    absdir=$abs_ladir
+	    # Remove this search path later
+	    func_append notinst_path " $abs_ladir"
+	  else
+	    dir=$ladir/$objdir
+	    absdir=$abs_ladir/$objdir
+	    # Remove this search path later
+	    func_append notinst_path " $abs_ladir"
+	  fi
+	fi # $installed = yes
+	func_stripname 'lib' '.la' "$laname"
+	name=$func_stripname_result
+
+	# This library was specified with -dlpreopen.
+	if test dlpreopen = "$pass"; then
+	  if test -z "$libdir" && test prog = "$linkmode"; then
+	    func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'"
+	  fi
+	  case $host in
+	    # special handling for platforms with PE-DLLs.
+	    *cygwin* | *mingw* | *cegcc* )
+	      # Linker will automatically link against shared library if both
+	      # static and shared are present.  Therefore, ensure we extract
+	      # symbols from the import library if a shared library is present
+	      # (otherwise, the dlopen module name will be incorrect).  We do
+	      # this by putting the import library name into $newdlprefiles.
+	      # We recover the dlopen module name by 'saving' the la file
+	      # name in a special purpose variable, and (later) extracting the
+	      # dlname from the la file.
+	      if test -n "$dlname"; then
+	        func_tr_sh "$dir/$linklib"
+	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
+	        func_append newdlprefiles " $dir/$linklib"
+	      else
+	        func_append newdlprefiles " $dir/$old_library"
+	        # Keep a list of preopened convenience libraries to check
+	        # that they are being used correctly in the link pass.
+	        test -z "$libdir" && \
+	          func_append dlpreconveniencelibs " $dir/$old_library"
+	      fi
+	    ;;
+	    * )
+	      # Prefer using a static library (so that no silly _DYNAMIC symbols
+	      # are required to link).
+	      if test -n "$old_library"; then
+	        func_append newdlprefiles " $dir/$old_library"
+	        # Keep a list of preopened convenience libraries to check
+	        # that they are being used correctly in the link pass.
+	        test -z "$libdir" && \
+	          func_append dlpreconveniencelibs " $dir/$old_library"
+	      # Otherwise, use the dlname, so that lt_dlopen finds it.
+	      elif test -n "$dlname"; then
+	        func_append newdlprefiles " $dir/$dlname"
+	      else
+	        func_append newdlprefiles " $dir/$linklib"
+	      fi
+	    ;;
+	  esac
+	fi # $pass = dlpreopen
+
+	if test -z "$libdir"; then
+	  # Link the convenience library
+	  if test lib = "$linkmode"; then
+	    deplibs="$dir/$old_library $deplibs"
+	  elif test prog,link = "$linkmode,$pass"; then
+	    compile_deplibs="$dir/$old_library $compile_deplibs"
+	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
+	  else
+	    deplibs="$lib $deplibs" # used for prog,scan pass
+	  fi
+	  continue
+	fi
+
+
+	if test prog = "$linkmode" && test link != "$pass"; then
+	  func_append newlib_search_path " $ladir"
+	  deplibs="$lib $deplibs"
+
+	  linkalldeplibs=false
+	  if test no != "$link_all_deplibs" || test -z "$library_names" ||
+	     test no = "$build_libtool_libs"; then
+	    linkalldeplibs=:
+	  fi
+
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    case $deplib in
+	    -L*) func_stripname '-L' '' "$deplib"
+	         func_resolve_sysroot "$func_stripname_result"
+	         func_append newlib_search_path " $func_resolve_sysroot_result"
+		 ;;
+	    esac
+	    # Need to link against all dependency_libs?
+	    if $linkalldeplibs; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      # Need to hardcode shared library paths
+	      # or/and link against static libraries
+	      newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    if $opt_preserve_dup_deps; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+	      esac
+	    fi
+	    func_append tmp_libs " $deplib"
+	  done # for deplib
+	  continue
+	fi # $linkmode = prog...
+
+	if test prog,link = "$linkmode,$pass"; then
+	  if test -n "$library_names" &&
+	     { { test no = "$prefer_static_libs" ||
+	         test built,yes = "$prefer_static_libs,$installed"; } ||
+	       test -z "$old_library"; }; then
+	    # We need to hardcode the library path
+	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then
+	      # Make sure the rpath contains only unique directories.
+	      case $temp_rpath: in
+	      *"$absdir:"*) ;;
+	      *) func_append temp_rpath "$absdir:" ;;
+	      esac
+	    fi
+
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) func_append compile_rpath " $absdir" ;;
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) func_append finalize_rpath " $libdir" ;;
+	      esac
+	      ;;
+	    esac
+	  fi # $linkmode,$pass = prog,link...
+
+	  if $alldeplibs &&
+	     { test pass_all = "$deplibs_check_method" ||
+	       { test yes = "$build_libtool_libs" &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+	fi
+
+	link_static=no # Whether the deplib will be linked statically
+	use_static_libs=$prefer_static_libs
+	if test built = "$use_static_libs" && test yes = "$installed"; then
+	  use_static_libs=no
+	fi
+	if test -n "$library_names" &&
+	   { test no = "$use_static_libs" || test -z "$old_library"; }; then
+	  case $host in
+	  *cygwin* | *mingw* | *cegcc* | *os2*)
+	      # No point in relinking DLLs because paths are not encoded
+	      func_append notinst_deplibs " $lib"
+	      need_relink=no
+	    ;;
+	  *)
+	    if test no = "$installed"; then
+	      func_append notinst_deplibs " $lib"
+	      need_relink=yes
+	    fi
+	    ;;
+	  esac
+	  # This is a shared library
+
+	  # Warn about portability, can't link against -module's on some
+	  # systems (darwin).  Don't bleat about dlopened modules though!
+	  dlopenmodule=
+	  for dlpremoduletest in $dlprefiles; do
+	    if test "X$dlpremoduletest" = "X$lib"; then
+	      dlopenmodule=$dlpremoduletest
+	      break
+	    fi
+	  done
+	  if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then
+	    echo
+	    if test prog = "$linkmode"; then
+	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
+	    else
+	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
+	    fi
+	    $ECHO "*** $linklib is not portable!"
+	  fi
+	  if test lib = "$linkmode" &&
+	     test yes = "$hardcode_into_libs"; then
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) func_append compile_rpath " $absdir" ;;
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) func_append finalize_rpath " $libdir" ;;
+	      esac
+	      ;;
+	    esac
+	  fi
+
+	  if test -n "$old_archive_from_expsyms_cmds"; then
+	    # figure out the soname
+	    set dummy $library_names
+	    shift
+	    realname=$1
+	    shift
+	    libname=`eval "\\$ECHO \"$libname_spec\""`
+	    # use dlname if we got it. it's perfectly good, no?
+	    if test -n "$dlname"; then
+	      soname=$dlname
+	    elif test -n "$soname_spec"; then
+	      # bleh windows
+	      case $host in
+	      *cygwin* | mingw* | *cegcc* | *os2*)
+	        func_arith $current - $age
+		major=$func_arith_result
+		versuffix=-$major
+		;;
+	      esac
+	      eval soname=\"$soname_spec\"
+	    else
+	      soname=$realname
+	    fi
+
+	    # Make a new name for the extract_expsyms_cmds to use
+	    soroot=$soname
+	    func_basename "$soroot"
+	    soname=$func_basename_result
+	    func_stripname 'lib' '.dll' "$soname"
+	    newlib=libimp-$func_stripname_result.a
+
+	    # If the library has no export list, then create one now
+	    if test -f "$output_objdir/$soname-def"; then :
+	    else
+	      func_verbose "extracting exported symbol list from '$soname'"
+	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
+	    fi
+
+	    # Create $newlib
+	    if test -f "$output_objdir/$newlib"; then :; else
+	      func_verbose "generating import library for '$soname'"
+	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
+	    fi
+	    # make sure the library variables are pointing to the new library
+	    dir=$output_objdir
+	    linklib=$newlib
+	  fi # test -n "$old_archive_from_expsyms_cmds"
+
+	  if test prog = "$linkmode" || test relink != "$opt_mode"; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    lib_linked=yes
+	    case $hardcode_action in
+	    immediate | unsupported)
+	      if test no = "$hardcode_direct"; then
+		add=$dir/$linklib
+		case $host in
+		  *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;;
+		  *-*-sysv4*uw2*) add_dir=-L$dir ;;
+		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+		    *-*-unixware7*) add_dir=-L$dir ;;
+		  *-*-darwin* )
+		    # if the lib is a (non-dlopened) module then we cannot
+		    # link against it, someone is ignoring the earlier warnings
+		    if /usr/bin/file -L $add 2> /dev/null |
+			 $GREP ": [^:]* bundle" >/dev/null; then
+		      if test "X$dlopenmodule" != "X$lib"; then
+			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
+			if test -z "$old_library"; then
+			  echo
+			  echo "*** And there doesn't seem to be a static archive available"
+			  echo "*** The link will probably fail, sorry"
+			else
+			  add=$dir/$old_library
+			fi
+		      elif test -n "$old_library"; then
+			add=$dir/$old_library
+		      fi
+		    fi
+		esac
+	      elif test no = "$hardcode_minus_L"; then
+		case $host in
+		*-*-sunos*) add_shlibpath=$dir ;;
+		esac
+		add_dir=-L$dir
+		add=-l$name
+	      elif test no = "$hardcode_shlibpath_var"; then
+		add_shlibpath=$dir
+		add=-l$name
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    relink)
+	      if test yes = "$hardcode_direct" &&
+	         test no = "$hardcode_direct_absolute"; then
+		add=$dir/$linklib
+	      elif test yes = "$hardcode_minus_L"; then
+		add_dir=-L$absdir
+		# Try looking first in the location we're being installed to.
+		if test -n "$inst_prefix_dir"; then
+		  case $libdir in
+		    [\\/]*)
+		      func_append add_dir " -L$inst_prefix_dir$libdir"
+		      ;;
+		  esac
+		fi
+		add=-l$name
+	      elif test yes = "$hardcode_shlibpath_var"; then
+		add_shlibpath=$dir
+		add=-l$name
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    *) lib_linked=no ;;
+	    esac
+
+	    if test yes != "$lib_linked"; then
+	      func_fatal_configuration "unsupported hardcode properties"
+	    fi
+
+	    if test -n "$add_shlibpath"; then
+	      case :$compile_shlibpath: in
+	      *":$add_shlibpath:"*) ;;
+	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
+	      esac
+	    fi
+	    if test prog = "$linkmode"; then
+	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	      if test yes != "$hardcode_direct" &&
+		 test yes != "$hardcode_minus_L" &&
+		 test yes = "$hardcode_shlibpath_var"; then
+		case :$finalize_shlibpath: in
+		*":$libdir:"*) ;;
+		*) func_append finalize_shlibpath "$libdir:" ;;
+		esac
+	      fi
+	    fi
+	  fi
+
+	  if test prog = "$linkmode" || test relink = "$opt_mode"; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    # Finalize command for both is simple: just hardcode it.
+	    if test yes = "$hardcode_direct" &&
+	       test no = "$hardcode_direct_absolute"; then
+	      add=$libdir/$linklib
+	    elif test yes = "$hardcode_minus_L"; then
+	      add_dir=-L$libdir
+	      add=-l$name
+	    elif test yes = "$hardcode_shlibpath_var"; then
+	      case :$finalize_shlibpath: in
+	      *":$libdir:"*) ;;
+	      *) func_append finalize_shlibpath "$libdir:" ;;
+	      esac
+	      add=-l$name
+	    elif test yes = "$hardcode_automatic"; then
+	      if test -n "$inst_prefix_dir" &&
+		 test -f "$inst_prefix_dir$libdir/$linklib"; then
+		add=$inst_prefix_dir$libdir/$linklib
+	      else
+		add=$libdir/$linklib
+	      fi
+	    else
+	      # We cannot seem to hardcode it, guess we'll fake it.
+	      add_dir=-L$libdir
+	      # Try looking first in the location we're being installed to.
+	      if test -n "$inst_prefix_dir"; then
+		case $libdir in
+		  [\\/]*)
+		    func_append add_dir " -L$inst_prefix_dir$libdir"
+		    ;;
+		esac
+	      fi
+	      add=-l$name
+	    fi
+
+	    if test prog = "$linkmode"; then
+	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	    fi
+	  fi
+	elif test prog = "$linkmode"; then
+	  # Here we assume that one of hardcode_direct or hardcode_minus_L
+	  # is not unsupported.  This is valid on all known static and
+	  # shared platforms.
+	  if test unsupported != "$hardcode_direct"; then
+	    test -n "$old_library" && linklib=$old_library
+	    compile_deplibs="$dir/$linklib $compile_deplibs"
+	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
+	  else
+	    compile_deplibs="-l$name -L$dir $compile_deplibs"
+	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+	  fi
+	elif test yes = "$build_libtool_libs"; then
+	  # Not a shared library
+	  if test pass_all != "$deplibs_check_method"; then
+	    # We're trying link a shared library against a static one
+	    # but the system doesn't support it.
+
+	    # Just print a warning and add the library to dependency_libs so
+	    # that the program can be linked against the static library.
+	    echo
+	    $ECHO "*** Warning: This system cannot link to static lib archive $lib."
+	    echo "*** I have the capability to make that library automatically link in when"
+	    echo "*** you link to this library.  But I can only do this if you have a"
+	    echo "*** shared version of the library, which you do not appear to have."
+	    if test yes = "$module"; then
+	      echo "*** But as you try to build a module library, libtool will still create "
+	      echo "*** a static module, that should work as long as the dlopening application"
+	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+	      if test -z "$global_symbol_pipe"; then
+		echo
+		echo "*** However, this would only work if libtool was able to extract symbol"
+		echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
+		echo "*** not find such a program.  So, this module is probably useless."
+		echo "*** 'nm' from GNU binutils and a full rebuild may help."
+	      fi
+	      if test no = "$build_old_libs"; then
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  else
+	    deplibs="$dir/$old_library $deplibs"
+	    link_static=yes
+	  fi
+	fi # link shared/static library?
+
+	if test lib = "$linkmode"; then
+	  if test -n "$dependency_libs" &&
+	     { test yes != "$hardcode_into_libs" ||
+	       test yes = "$build_old_libs" ||
+	       test yes = "$link_static"; }; then
+	    # Extract -R from dependency_libs
+	    temp_deplibs=
+	    for libdir in $dependency_libs; do
+	      case $libdir in
+	      -R*) func_stripname '-R' '' "$libdir"
+	           temp_xrpath=$func_stripname_result
+		   case " $xrpath " in
+		   *" $temp_xrpath "*) ;;
+		   *) func_append xrpath " $temp_xrpath";;
+		   esac;;
+	      *) func_append temp_deplibs " $libdir";;
+	      esac
+	    done
+	    dependency_libs=$temp_deplibs
+	  fi
+
+	  func_append newlib_search_path " $absdir"
+	  # Link against this library
+	  test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+	  # ... and its dependency_libs
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    newdependency_libs="$deplib $newdependency_libs"
+	    case $deplib in
+              -L*) func_stripname '-L' '' "$deplib"
+                   func_resolve_sysroot "$func_stripname_result";;
+              *) func_resolve_sysroot "$deplib" ;;
+            esac
+	    if $opt_preserve_dup_deps; then
+	      case "$tmp_libs " in
+	      *" $func_resolve_sysroot_result "*)
+                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
+	      esac
+	    fi
+	    func_append tmp_libs " $func_resolve_sysroot_result"
+	  done
+
+	  if test no != "$link_all_deplibs"; then
+	    # Add the search paths of all dependency libraries
+	    for deplib in $dependency_libs; do
+	      path=
+	      case $deplib in
+	      -L*) path=$deplib ;;
+	      *.la)
+	        func_resolve_sysroot "$deplib"
+	        deplib=$func_resolve_sysroot_result
+	        func_dirname "$deplib" "" "."
+		dir=$func_dirname_result
+		# We need an absolute path.
+		case $dir in
+		[\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;;
+		*)
+		  absdir=`cd "$dir" && pwd`
+		  if test -z "$absdir"; then
+		    func_warning "cannot determine absolute directory name of '$dir'"
+		    absdir=$dir
+		  fi
+		  ;;
+		esac
+		if $GREP "^installed=no" $deplib > /dev/null; then
+		case $host in
+		*-*-darwin*)
+		  depdepl=
+		  eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+		  if test -n "$deplibrary_names"; then
+		    for tmp in $deplibrary_names; do
+		      depdepl=$tmp
+		    done
+		    if test -f "$absdir/$objdir/$depdepl"; then
+		      depdepl=$absdir/$objdir/$depdepl
+		      darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+                      if test -z "$darwin_install_name"; then
+                          darwin_install_name=`$OTOOL64 -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
+                      fi
+		      func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl"
+		      func_append linker_flags " -dylib_file $darwin_install_name:$depdepl"
+		      path=
+		    fi
+		  fi
+		  ;;
+		*)
+		  path=-L$absdir/$objdir
+		  ;;
+		esac
+		else
+		  eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  test -z "$libdir" && \
+		    func_fatal_error "'$deplib' is not a valid libtool archive"
+		  test "$absdir" != "$libdir" && \
+		    func_warning "'$deplib' seems to be moved"
+
+		  path=-L$absdir
+		fi
+		;;
+	      esac
+	      case " $deplibs " in
+	      *" $path "*) ;;
+	      *) deplibs="$path $deplibs" ;;
+	      esac
+	    done
+	  fi # link_all_deplibs != no
+	fi # linkmode = lib
+      done # for deplib in $libs
+      if test link = "$pass"; then
+	if test prog = "$linkmode"; then
+	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
+	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
+	else
+	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	fi
+      fi
+      dependency_libs=$newdependency_libs
+      if test dlpreopen = "$pass"; then
+	# Link the dlpreopened libraries before other libraries
+	for deplib in $save_deplibs; do
+	  deplibs="$deplib $deplibs"
+	done
+      fi
+      if test dlopen != "$pass"; then
+	test conv = "$pass" || {
+	  # Make sure lib_search_path contains only unique directories.
+	  lib_search_path=
+	  for dir in $newlib_search_path; do
+	    case "$lib_search_path " in
+	    *" $dir "*) ;;
+	    *) func_append lib_search_path " $dir" ;;
+	    esac
+	  done
+	  newlib_search_path=
+	}
+
+	if test prog,link = "$linkmode,$pass"; then
+	  vars="compile_deplibs finalize_deplibs"
+	else
+	  vars=deplibs
+	fi
+	for var in $vars dependency_libs; do
+	  # Add libraries to $var in reverse order
+	  eval tmp_libs=\"\$$var\"
+	  new_libs=
+	  for deplib in $tmp_libs; do
+	    # FIXME: Pedantically, this is the right thing to do, so
+	    #        that some nasty dependency loop isn't accidentally
+	    #        broken:
+	    #new_libs="$deplib $new_libs"
+	    # Pragmatically, this seems to cause very few problems in
+	    # practice:
+	    case $deplib in
+	    -L*) new_libs="$deplib $new_libs" ;;
+	    -R*) ;;
+	    *)
+	      # And here is the reason: when a library appears more
+	      # than once as an explicit dependence of a library, or
+	      # is implicitly linked in more than once by the
+	      # compiler, it is considered special, and multiple
+	      # occurrences thereof are not removed.  Compare this
+	      # with having the same library being listed as a
+	      # dependency of multiple other libraries: in this case,
+	      # we know (pedantically, we assume) the library does not
+	      # need to be listed more than once, so we keep only the
+	      # last copy.  This is not always right, but it is rare
+	      # enough that we require users that really mean to play
+	      # such unportable linking tricks to link the library
+	      # using -Wl,-lname, so that libtool does not consider it
+	      # for duplicate removal.
+	      case " $specialdeplibs " in
+	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
+	      *)
+		case " $new_libs " in
+		*" $deplib "*) ;;
+		*) new_libs="$deplib $new_libs" ;;
+		esac
+		;;
+	      esac
+	      ;;
+	    esac
+	  done
+	  tmp_libs=
+	  for deplib in $new_libs; do
+	    case $deplib in
+	    -L*)
+	      case " $tmp_libs " in
+	      *" $deplib "*) ;;
+	      *) func_append tmp_libs " $deplib" ;;
+	      esac
+	      ;;
+	    *) func_append tmp_libs " $deplib" ;;
+	    esac
+	  done
+	  eval $var=\"$tmp_libs\"
+	done # for var
+      fi
+
+      # Add Sun CC postdeps if required:
+      test CXX = "$tagname" && {
+        case $host_os in
+        linux*)
+          case `$CC -V 2>&1 | sed 5q` in
+          *Sun\ C*) # Sun C++ 5.9
+            func_suncc_cstd_abi
+
+            if test no != "$suncc_use_cstd_abi"; then
+              func_append postdeps ' -library=Cstd -library=Crun'
+            fi
+            ;;
+          esac
+          ;;
+
+        solaris*)
+          func_cc_basename "$CC"
+          case $func_cc_basename_result in
+          CC* | sunCC*)
+            func_suncc_cstd_abi
+
+            if test no != "$suncc_use_cstd_abi"; then
+              func_append postdeps ' -library=Cstd -library=Crun'
+            fi
+            ;;
+          esac
+          ;;
+        esac
+      }
+
+      # Last step: remove runtime libs from dependency_libs
+      # (they stay in deplibs)
+      tmp_libs=
+      for i in $dependency_libs; do
+	case " $predeps $postdeps $compiler_lib_search_path " in
+	*" $i "*)
+	  i=
+	  ;;
+	esac
+	if test -n "$i"; then
+	  func_append tmp_libs " $i"
+	fi
+      done
+      dependency_libs=$tmp_libs
+    done # for pass
+    if test prog = "$linkmode"; then
+      dlfiles=$newdlfiles
+    fi
+    if test prog = "$linkmode" || test lib = "$linkmode"; then
+      dlprefiles=$newdlprefiles
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+	func_warning "'-dlopen' is ignored for archives"
+      fi
+
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+	func_warning "'-l' and '-L' are ignored for archives" ;;
+      esac
+
+      test -n "$rpath" && \
+	func_warning "'-rpath' is ignored for archives"
+
+      test -n "$xrpath" && \
+	func_warning "'-R' is ignored for archives"
+
+      test -n "$vinfo" && \
+	func_warning "'-version-info/-version-number' is ignored for archives"
+
+      test -n "$release" && \
+	func_warning "'-release' is ignored for archives"
+
+      test -n "$export_symbols$export_symbols_regex" && \
+	func_warning "'-export-symbols' is ignored for archives"
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs=$output
+      func_append objs "$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form 'libNAME.la'.
+      case $outputname in
+      lib*)
+	func_stripname 'lib' '.la' "$outputname"
+	name=$func_stripname_result
+	eval shared_ext=\"$shrext_cmds\"
+	eval libname=\"$libname_spec\"
+	;;
+      *)
+	test no = "$module" \
+	  && func_fatal_help "libtool library '$output' must begin with 'lib'"
+
+	if test no != "$need_lib_prefix"; then
+	  # Add the "lib" prefix for modules if required
+	  func_stripname '' '.la' "$outputname"
+	  name=$func_stripname_result
+	  eval shared_ext=\"$shrext_cmds\"
+	  eval libname=\"$libname_spec\"
+	else
+	  func_stripname '' '.la' "$outputname"
+	  libname=$func_stripname_result
+	fi
+	;;
+      esac
+
+      if test -n "$objs"; then
+	if test pass_all != "$deplibs_check_method"; then
+	  func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs"
+	else
+	  echo
+	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+	  $ECHO "*** objects $objs is not portable!"
+	  func_append libobjs " $objs"
+	fi
+      fi
+
+      test no = "$dlself" \
+	|| func_warning "'-dlopen self' is ignored for libtool libraries"
+
+      set dummy $rpath
+      shift
+      test 1 -lt "$#" \
+	&& func_warning "ignoring multiple '-rpath's for a libtool library"
+
+      install_libdir=$1
+
+      oldlibs=
+      if test -z "$rpath"; then
+	if test yes = "$build_libtool_libs"; then
+	  # Building a libtool convenience library.
+	  # Some compilers have problems with a '.al' extension so
+	  # convenience libraries should have the same extension an
+	  # archive normally would.
+	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
+	  build_libtool_libs=convenience
+	  build_old_libs=yes
+	fi
+
+	test -n "$vinfo" && \
+	  func_warning "'-version-info/-version-number' is ignored for convenience libraries"
+
+	test -n "$release" && \
+	  func_warning "'-release' is ignored for convenience libraries"
+      else
+
+	# Parse the version information argument.
+	save_ifs=$IFS; IFS=:
+	set dummy $vinfo 0 0 0
+	shift
+	IFS=$save_ifs
+
+	test -n "$7" && \
+	  func_fatal_help "too many parameters to '-version-info'"
+
+	# convert absolute version numbers to libtool ages
+	# this retains compatibility with .la files and attempts
+	# to make the code below a bit more comprehensible
+
+	case $vinfo_number in
+	yes)
+	  number_major=$1
+	  number_minor=$2
+	  number_revision=$3
+	  #
+	  # There are really only two kinds -- those that
+	  # use the current revision as the major version
+	  # and those that subtract age and use age as
+	  # a minor version.  But, then there is irix
+	  # that has an extra 1 added just for fun
+	  #
+	  case $version_type in
+	  # correct linux to gnu/linux during the next big refactor
+	  darwin|freebsd-elf|linux|osf|windows|none)
+	    func_arith $number_major + $number_minor
+	    current=$func_arith_result
+	    age=$number_minor
+	    revision=$number_revision
+	    ;;
+	  freebsd-aout|qnx|sunos)
+	    current=$number_major
+	    revision=$number_minor
+	    age=0
+	    ;;
+	  irix|nonstopux)
+	    func_arith $number_major + $number_minor
+	    current=$func_arith_result
+	    age=$number_minor
+	    revision=$number_minor
+	    lt_irix_increment=no
+	    ;;
+	  *)
+	    func_fatal_configuration "$modename: unknown library version type '$version_type'"
+	    ;;
+	  esac
+	  ;;
+	no)
+	  current=$1
+	  revision=$2
+	  age=$3
+	  ;;
+	esac
+
+	# Check that each of the things are valid numbers.
+	case $current in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  func_error "CURRENT '$current' must be a nonnegative integer"
+	  func_fatal_error "'$vinfo' is not valid version information"
+	  ;;
+	esac
+
+	case $revision in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  func_error "REVISION '$revision' must be a nonnegative integer"
+	  func_fatal_error "'$vinfo' is not valid version information"
+	  ;;
+	esac
+
+	case $age in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  func_error "AGE '$age' must be a nonnegative integer"
+	  func_fatal_error "'$vinfo' is not valid version information"
+	  ;;
+	esac
+
+	if test "$age" -gt "$current"; then
+	  func_error "AGE '$age' is greater than the current interface number '$current'"
+	  func_fatal_error "'$vinfo' is not valid version information"
+	fi
+
+	# Calculate the version variables.
+	major=
+	versuffix=
+	verstring=
+	case $version_type in
+	none) ;;
+
+	darwin)
+	  # Like Linux, but with the current version available in
+	  # verstring for coding it into the library header
+	  func_arith $current - $age
+	  major=.$func_arith_result
+	  versuffix=$major.$age.$revision
+	  # Darwin ld doesn't like 0 for these options...
+	  func_arith $current + 1
+	  minor_current=$func_arith_result
+	  xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+          # On Darwin other compilers
+          case $CC in
+              nagfor*)
+                  verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+                  ;;
+              *)
+                  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+                  ;;
+          esac
+	  ;;
+
+	freebsd-aout)
+	  major=.$current
+	  versuffix=.$current.$revision
+	  ;;
+
+	freebsd-elf)
+	  func_arith $current - $age
+	  major=.$func_arith_result
+	  versuffix=$major.$age.$revision
+	  ;;
+
+	irix | nonstopux)
+	  if test no = "$lt_irix_increment"; then
+	    func_arith $current - $age
+	  else
+	    func_arith $current - $age + 1
+	  fi
+	  major=$func_arith_result
+
+	  case $version_type in
+	    nonstopux) verstring_prefix=nonstopux ;;
+	    *)         verstring_prefix=sgi ;;
+	  esac
+	  verstring=$verstring_prefix$major.$revision
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$revision
+	  while test 0 -ne "$loop"; do
+	    func_arith $revision - $loop
+	    iface=$func_arith_result
+	    func_arith $loop - 1
+	    loop=$func_arith_result
+	    verstring=$verstring_prefix$major.$iface:$verstring
+	  done
+
+	  # Before this point, $major must not contain '.'.
+	  major=.$major
+	  versuffix=$major.$revision
+	  ;;
+
+	linux) # correct to gnu/linux during the next big refactor
+	  func_arith $current - $age
+	  major=.$func_arith_result
+	  versuffix=$major.$age.$revision
+	  ;;
+
+	osf)
+	  func_arith $current - $age
+	  major=.$func_arith_result
+	  versuffix=.$current.$age.$revision
+	  verstring=$current.$age.$revision
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$age
+	  while test 0 -ne "$loop"; do
+	    func_arith $current - $loop
+	    iface=$func_arith_result
+	    func_arith $loop - 1
+	    loop=$func_arith_result
+	    verstring=$verstring:$iface.0
+	  done
+
+	  # Make executables depend on our current version.
+	  func_append verstring ":$current.0"
+	  ;;
+
+	qnx)
+	  major=.$current
+	  versuffix=.$current
+	  ;;
+
+	sco)
+	  major=.$current
+	  versuffix=.$current
+	  ;;
+
+	sunos)
+	  major=.$current
+	  versuffix=.$current.$revision
+	  ;;
+
+	windows)
+	  # Use '-' rather than '.', since we only want one
+	  # extension on DOS 8.3 file systems.
+	  func_arith $current - $age
+	  major=$func_arith_result
+	  versuffix=-$major
+	  ;;
+
+	*)
+	  func_fatal_configuration "unknown library version type '$version_type'"
+	  ;;
+	esac
+
+	# Clear the version info if we defaulted, and they specified a release.
+	if test -z "$vinfo" && test -n "$release"; then
+	  major=
+	  case $version_type in
+	  darwin)
+	    # we can't check for "0.0" in archive_cmds due to quoting
+	    # problems, so we reset it completely
+	    verstring=
+	    ;;
+	  *)
+	    verstring=0.0
+	    ;;
+	  esac
+	  if test no = "$need_version"; then
+	    versuffix=
+	  else
+	    versuffix=.0.0
+	  fi
+	fi
+
+	# Remove version info from name if versioning should be avoided
+	if test yes,no = "$avoid_version,$need_version"; then
+	  major=
+	  versuffix=
+	  verstring=
+	fi
+
+	# Check to see if the archive will have undefined symbols.
+	if test yes = "$allow_undefined"; then
+	  if test unsupported = "$allow_undefined_flag"; then
+	    if test yes = "$build_old_libs"; then
+	      func_warning "undefined symbols not allowed in $host shared libraries; building static only"
+	      build_libtool_libs=no
+	    else
+	      func_fatal_error "can't build $host shared library unless -no-undefined is specified"
+	    fi
+	  fi
+	else
+	  # Don't allow undefined symbols.
+	  allow_undefined_flag=$no_undefined_flag
+	fi
+
+      fi
+
+      func_generate_dlsyms "$libname" "$libname" :
+      func_append libobjs " $symfileobj"
+      test " " = "$libobjs" && libobjs=
+
+      if test relink != "$opt_mode"; then
+	# Remove our outputs, but don't remove object files since they
+	# may have been created when compiling PIC objects.
+	removelist=
+	tempremovelist=`$ECHO "$output_objdir/*"`
+	for p in $tempremovelist; do
+	  case $p in
+	    *.$objext | *.gcno)
+	       ;;
+	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*)
+	       if test -n "$precious_files_regex"; then
+		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+		 then
+		   continue
+		 fi
+	       fi
+	       func_append removelist " $p"
+	       ;;
+	    *) ;;
+	  esac
+	done
+	test -n "$removelist" && \
+	  func_show_eval "${RM}r \$removelist"
+      fi
+
+      # Now set the variables for building old libraries.
+      if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then
+	func_append oldlibs " $output_objdir/$libname.$libext"
+
+	# Transform .lo files to .o files.
+	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      #for path in $notinst_path; do
+      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
+      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
+      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
+      #done
+
+      if test -n "$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	temp_xrpath=
+	for libdir in $xrpath; do
+	  func_replace_sysroot "$libdir"
+	  func_append temp_xrpath " -R$func_replace_sysroot_result"
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) func_append finalize_rpath " $libdir" ;;
+	  esac
+	done
+	if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then
+	  dependency_libs="$temp_xrpath $dependency_libs"
+	fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles=$dlfiles
+      dlfiles=
+      for lib in $old_dlfiles; do
+	case " $dlprefiles $dlfiles " in
+	*" $lib "*) ;;
+	*) func_append dlfiles " $lib" ;;
+	esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles=$dlprefiles
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+	case "$dlprefiles " in
+	*" $lib "*) ;;
+	*) func_append dlprefiles " $lib" ;;
+	esac
+      done
+
+      if test yes = "$build_libtool_libs"; then
+	if test -n "$rpath"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
+	    # these systems don't actually have a c library (as such)!
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C library is in the System framework
+	    func_append deplibs " System.ltframework"
+	    ;;
+	  *-*-netbsd*)
+	    # Don't link with libc until the a.out ld.so is fixed.
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    ;;
+	  *-*-sco3.2v5* | *-*-sco5v6*)
+	    # Causes problems with __ctype
+	    ;;
+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+	    # Compiler inserts libc in the correct place for threads to work
+	    ;;
+	  *)
+	    # Add libc to deplibs on all other systems if necessary.
+	    if test yes = "$build_libtool_need_lc"; then
+	      func_append deplibs " -lc"
+	    fi
+	    ;;
+	  esac
+	fi
+
+	# Transform deplibs into only deplibs that can be linked in shared.
+	name_save=$name
+	libname_save=$libname
+	release_save=$release
+	versuffix_save=$versuffix
+	major_save=$major
+	# I'm not sure if I'm treating the release correctly.  I think
+	# release should show up in the -l (ie -lgmp5) so we don't want to
+	# add it in twice.  Is that correct?
+	release=
+	versuffix=
+	major=
+	newdeplibs=
+	droppeddeps=no
+	case $deplibs_check_method in
+	pass_all)
+	  # Don't check for shared/static.  Everything works.
+	  # This might be a little naive.  We might want to check
+	  # whether the library exists or not.  But this is on
+	  # osf3 & osf4 and I'm not really sure... Just
+	  # implementing what was already the behavior.
+	  newdeplibs=$deplibs
+	  ;;
+	test_compile)
+	  # This code stresses the "libraries are programs" paradigm to its
+	  # limits. Maybe even breaks it.  We compile a program, linking it
+	  # against the deplibs as a proxy for the library.  Then we can check
+	  # whether they linked in statically or dynamically with ldd.
+	  $opt_dry_run || $RM conftest.c
+	  cat > conftest.c <<EOF
+	  int main() { return 0; }
+EOF
+	  $opt_dry_run || $RM conftest
+	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+	    ldd_output=`ldd conftest`
+	    for i in $deplibs; do
+	      case $i in
+	      -l*)
+		func_stripname -l '' "$i"
+		name=$func_stripname_result
+		if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+		  case " $predeps $postdeps " in
+		  *" $i "*)
+		    func_append newdeplibs " $i"
+		    i=
+		    ;;
+		  esac
+		fi
+		if test -n "$i"; then
+		  libname=`eval "\\$ECHO \"$libname_spec\""`
+		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+		  set dummy $deplib_matches; shift
+		  deplib_match=$1
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
+		    func_append newdeplibs " $i"
+		  else
+		    droppeddeps=yes
+		    echo
+		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+		    echo "*** I have the capability to make that library automatically link in when"
+		    echo "*** you link to this library.  But I can only do this if you have a"
+		    echo "*** shared version of the library, which I believe you do not have"
+		    echo "*** because a test_compile did reveal that the linker did not use it for"
+		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
+		  fi
+		fi
+		;;
+	      *)
+		func_append newdeplibs " $i"
+		;;
+	      esac
+	    done
+	  else
+	    # Error occurred in the first compile.  Let's try to salvage
+	    # the situation: Compile a separate program for each library.
+	    for i in $deplibs; do
+	      case $i in
+	      -l*)
+		func_stripname -l '' "$i"
+		name=$func_stripname_result
+		$opt_dry_run || $RM conftest
+		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+		  ldd_output=`ldd conftest`
+		  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+		    case " $predeps $postdeps " in
+		    *" $i "*)
+		      func_append newdeplibs " $i"
+		      i=
+		      ;;
+		    esac
+		  fi
+		  if test -n "$i"; then
+		    libname=`eval "\\$ECHO \"$libname_spec\""`
+		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+		    set dummy $deplib_matches; shift
+		    deplib_match=$1
+		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
+		      func_append newdeplibs " $i"
+		    else
+		      droppeddeps=yes
+		      echo
+		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+		      echo "*** I have the capability to make that library automatically link in when"
+		      echo "*** you link to this library.  But I can only do this if you have a"
+		      echo "*** shared version of the library, which you do not appear to have"
+		      echo "*** because a test_compile did reveal that the linker did not use this one"
+		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+		    fi
+		  fi
+		else
+		  droppeddeps=yes
+		  echo
+		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
+		  echo "*** make it link in!  You will probably need to install it or some"
+		  echo "*** library that it depends on before this library will be fully"
+		  echo "*** functional.  Installing it before continuing would be even better."
+		fi
+		;;
+	      *)
+		func_append newdeplibs " $i"
+		;;
+	      esac
+	    done
+	  fi
+	  ;;
+	file_magic*)
+	  set dummy $deplibs_check_method; shift
+	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    case $a_deplib in
+	    -l*)
+	      func_stripname -l '' "$a_deplib"
+	      name=$func_stripname_result
+	      if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  func_append newdeplibs " $a_deplib"
+		  a_deplib=
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib"; then
+		libname=`eval "\\$ECHO \"$libname_spec\""`
+		if test -n "$file_magic_glob"; then
+		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
+		else
+		  libnameglob=$libname
+		fi
+		test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  if test yes = "$want_nocaseglob"; then
+		    shopt -s nocaseglob
+		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+		    $nocaseglob
+		  else
+		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+		  fi
+		  for potent_lib in $potential_libs; do
+		      # Follow soft links.
+		      if ls -lLd "$potent_lib" 2>/dev/null |
+			 $GREP " -> " >/dev/null; then
+			continue
+		      fi
+		      # The statement above tries to avoid entering an
+		      # endless loop below, in case of cyclic links.
+		      # We might still enter an endless loop, since a link
+		      # loop can be closed while we follow links,
+		      # but so what?
+		      potlib=$potent_lib
+		      while test -h "$potlib" 2>/dev/null; do
+			potliblink=`ls -ld $potlib | $SED 's/.* -> //'`
+			case $potliblink in
+			[\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;;
+			*) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";;
+			esac
+		      done
+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+			 $SED -e 10q |
+			 $EGREP "$file_magic_regex" > /dev/null; then
+			func_append newdeplibs " $a_deplib"
+			a_deplib=
+			break 2
+		      fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib"; then
+		droppeddeps=yes
+		echo
+		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib"; then
+		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
+		else
+		  $ECHO "*** with $libname and none of the candidates passed a file format test"
+		  $ECHO "*** using a file magic. Last file checked: $potlib"
+		fi
+	      fi
+	      ;;
+	    *)
+	      # Add a -L argument.
+	      func_append newdeplibs " $a_deplib"
+	      ;;
+	    esac
+	  done # Gone through all deplibs.
+	  ;;
+	match_pattern*)
+	  set dummy $deplibs_check_method; shift
+	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    case $a_deplib in
+	    -l*)
+	      func_stripname -l '' "$a_deplib"
+	      name=$func_stripname_result
+	      if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  func_append newdeplibs " $a_deplib"
+		  a_deplib=
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib"; then
+		libname=`eval "\\$ECHO \"$libname_spec\""`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		    potlib=$potent_lib # see symlink-check above in file_magic test
+		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
+		       $EGREP "$match_pattern_regex" > /dev/null; then
+		      func_append newdeplibs " $a_deplib"
+		      a_deplib=
+		      break 2
+		    fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib"; then
+		droppeddeps=yes
+		echo
+		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib"; then
+		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
+		else
+		  $ECHO "*** with $libname and none of the candidates passed a file format test"
+		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
+		fi
+	      fi
+	      ;;
+	    *)
+	      # Add a -L argument.
+	      func_append newdeplibs " $a_deplib"
+	      ;;
+	    esac
+	  done # Gone through all deplibs.
+	  ;;
+	none | unknown | *)
+	  newdeplibs=
+	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
+	  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+	    for i in $predeps $postdeps; do
+	      # can't use Xsed below, because $i might contain '/'
+	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"`
+	    done
+	  fi
+	  case $tmp_deplibs in
+	  *[!\	\ ]*)
+	    echo
+	    if test none = "$deplibs_check_method"; then
+	      echo "*** Warning: inter-library dependencies are not supported in this platform."
+	    else
+	      echo "*** Warning: inter-library dependencies are not known to be supported."
+	    fi
+	    echo "*** All declared inter-library dependencies are being dropped."
+	    droppeddeps=yes
+	    ;;
+	  esac
+	  ;;
+	esac
+	versuffix=$versuffix_save
+	major=$major_save
+	release=$release_save
+	libname=$libname_save
+	name=$name_save
+
+	case $host in
+	*-*-rhapsody* | *-*-darwin1.[012])
+	  # On Rhapsody replace the C library with the System framework
+	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
+	  ;;
+	esac
+
+	if test yes = "$droppeddeps"; then
+	  if test yes = "$module"; then
+	    echo
+	    echo "*** Warning: libtool could not satisfy all declared inter-library"
+	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
+	    echo "*** a static module, that should work as long as the dlopening"
+	    echo "*** application is linked with the -dlopen flag."
+	    if test -z "$global_symbol_pipe"; then
+	      echo
+	      echo "*** However, this would only work if libtool was able to extract symbol"
+	      echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
+	      echo "*** not find such a program.  So, this module is probably useless."
+	      echo "*** 'nm' from GNU binutils and a full rebuild may help."
+	    fi
+	    if test no = "$build_old_libs"; then
+	      oldlibs=$output_objdir/$libname.$libext
+	      build_libtool_libs=module
+	      build_old_libs=yes
+	    else
+	      build_libtool_libs=no
+	    fi
+	  else
+	    echo "*** The inter-library dependencies that have been dropped here will be"
+	    echo "*** automatically added whenever a program is linked with this library"
+	    echo "*** or is declared to -dlopen it."
+
+	    if test no = "$allow_undefined"; then
+	      echo
+	      echo "*** Since this library must not contain undefined symbols,"
+	      echo "*** because either the platform does not support them or"
+	      echo "*** it was explicitly requested with -no-undefined,"
+	      echo "*** libtool will only create a static version of it."
+	      if test no = "$build_old_libs"; then
+		oldlibs=$output_objdir/$libname.$libext
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  fi
+	fi
+	# Done checking deplibs!
+	deplibs=$newdeplibs
+      fi
+      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+      case $host in
+	*-*-darwin*)
+	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  ;;
+      esac
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+	case " $new_libs " in
+	*" -L$path/$objdir "*) ;;
+	*)
+	  case " $deplibs " in
+	  *" -L$path/$objdir "*)
+	    func_append new_libs " -L$path/$objdir" ;;
+	  esac
+	  ;;
+	esac
+      done
+      for deplib in $deplibs; do
+	case $deplib in
+	-L*)
+	  case " $new_libs " in
+	  *" $deplib "*) ;;
+	  *) func_append new_libs " $deplib" ;;
+	  esac
+	  ;;
+	*) func_append new_libs " $deplib" ;;
+	esac
+      done
+      deplibs=$new_libs
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test yes = "$build_libtool_libs"; then
+	# Remove $wl instances when linking with ld.
+	# FIXME: should test the right _cmds variable.
+	case $archive_cmds in
+	  *\$LD\ *) wl= ;;
+        esac
+	if test yes = "$hardcode_into_libs"; then
+	  # Hardcode the library paths
+	  hardcode_libdirs=
+	  dep_rpath=
+	  rpath=$finalize_rpath
+	  test relink = "$opt_mode" || rpath=$compile_rpath$rpath
+	  for libdir in $rpath; do
+	    if test -n "$hardcode_libdir_flag_spec"; then
+	      if test -n "$hardcode_libdir_separator"; then
+		func_replace_sysroot "$libdir"
+		libdir=$func_replace_sysroot_result
+		if test -z "$hardcode_libdirs"; then
+		  hardcode_libdirs=$libdir
+		else
+		  # Just accumulate the unique libdirs.
+		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		    ;;
+		  *)
+		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+		    ;;
+		  esac
+		fi
+	      else
+		eval flag=\"$hardcode_libdir_flag_spec\"
+		func_append dep_rpath " $flag"
+	      fi
+	    elif test -n "$runpath_var"; then
+	      case "$perm_rpath " in
+	      *" $libdir "*) ;;
+	      *) func_append perm_rpath " $libdir" ;;
+	      esac
+	    fi
+	  done
+	  # Substitute the hardcoded libdirs into the rpath.
+	  if test -n "$hardcode_libdir_separator" &&
+	     test -n "$hardcode_libdirs"; then
+	    libdir=$hardcode_libdirs
+	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
+	  fi
+	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
+	    # We should set the runpath_var.
+	    rpath=
+	    for dir in $perm_rpath; do
+	      func_append rpath "$dir:"
+	    done
+	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+	  fi
+	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+	fi
+
+	shlibpath=$finalize_shlibpath
+	test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath
+	if test -n "$shlibpath"; then
+	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+	fi
+
+	# Get the real and link names of the library.
+	eval shared_ext=\"$shrext_cmds\"
+	eval library_names=\"$library_names_spec\"
+	set dummy $library_names
+	shift
+	realname=$1
+	shift
+
+	if test -n "$soname_spec"; then
+	  eval soname=\"$soname_spec\"
+	else
+	  soname=$realname
+	fi
+	if test -z "$dlname"; then
+	  dlname=$soname
+	fi
+
+	lib=$output_objdir/$realname
+	linknames=
+	for link
+	do
+	  func_append linknames " $link"
+	done
+
+	# Use standard objects if they are pic
+	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+	test "X$libobjs" = "X " && libobjs=
+
+	delfiles=
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+	  export_symbols=$output_objdir/$libname.uexp
+	  func_append delfiles " $export_symbols"
+	fi
+
+	orig_export_symbols=
+	case $host_os in
+	cygwin* | mingw* | cegcc*)
+	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
+	    # exporting using user supplied symfile
+	    func_dll_def_p "$export_symbols" || {
+	      # and it's NOT already a .def file. Must figure out
+	      # which of the given symbols are data symbols and tag
+	      # them as such. So, trigger use of export_symbols_cmds.
+	      # export_symbols gets reassigned inside the "prepare
+	      # the list of exported symbols" if statement, so the
+	      # include_expsyms logic still works.
+	      orig_export_symbols=$export_symbols
+	      export_symbols=
+	      always_export_symbols=yes
+	    }
+	  fi
+	  ;;
+	esac
+
+	# Prepare the list of exported symbols
+	if test -z "$export_symbols"; then
+	  if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then
+	    func_verbose "generating symbol list for '$libname.la'"
+	    export_symbols=$output_objdir/$libname.exp
+	    $opt_dry_run || $RM $export_symbols
+	    cmds=$export_symbols_cmds
+	    save_ifs=$IFS; IFS='~'
+	    for cmd1 in $cmds; do
+	      IFS=$save_ifs
+	      # Take the normal branch if the nm_file_list_spec branch
+	      # doesn't work or if tool conversion is not needed.
+	      case $nm_file_list_spec~$to_tool_file_cmd in
+		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
+		  try_normal_branch=yes
+		  eval cmd=\"$cmd1\"
+		  func_len " $cmd"
+		  len=$func_len_result
+		  ;;
+		*)
+		  try_normal_branch=no
+		  ;;
+	      esac
+	      if test yes = "$try_normal_branch" \
+		 && { test "$len" -lt "$max_cmd_len" \
+		      || test "$max_cmd_len" -le -1; }
+	      then
+		func_show_eval "$cmd" 'exit $?'
+		skipped_export=false
+	      elif test -n "$nm_file_list_spec"; then
+		func_basename "$output"
+		output_la=$func_basename_result
+		save_libobjs=$libobjs
+		save_output=$output
+		output=$output_objdir/$output_la.nm
+		func_to_tool_file "$output"
+		libobjs=$nm_file_list_spec$func_to_tool_file_result
+		func_append delfiles " $output"
+		func_verbose "creating $NM input file list: $output"
+		for obj in $save_libobjs; do
+		  func_to_tool_file "$obj"
+		  $ECHO "$func_to_tool_file_result"
+		done > "$output"
+		eval cmd=\"$cmd1\"
+		func_show_eval "$cmd" 'exit $?'
+		output=$save_output
+		libobjs=$save_libobjs
+		skipped_export=false
+	      else
+		# The command line is too long to execute in one step.
+		func_verbose "using reloadable object file for export list..."
+		skipped_export=:
+		# Break out early, otherwise skipped_export may be
+		# set to false by a later but shorter cmd.
+		break
+	      fi
+	    done
+	    IFS=$save_ifs
+	    if test -n "$export_symbols_regex" && test : != "$skipped_export"; then
+	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+	fi
+
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  tmp_export_symbols=$export_symbols
+	  test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
+	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+	fi
+
+	if test : != "$skipped_export" && test -n "$orig_export_symbols"; then
+	  # The given exports_symbols file has to be filtered, so filter it.
+	  func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
+	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
+	  # 's' commands, which not all seds can handle. GNU sed should be fine
+	  # though. Also, the filter scales superlinearly with the number of
+	  # global variables. join(1) would be nice here, but unfortunately
+	  # isn't a blessed tool.
+	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+	  export_symbols=$output_objdir/$libname.def
+	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+	fi
+
+	tmp_deplibs=
+	for test_deplib in $deplibs; do
+	  case " $convenience " in
+	  *" $test_deplib "*) ;;
+	  *)
+	    func_append tmp_deplibs " $test_deplib"
+	    ;;
+	  esac
+	done
+	deplibs=$tmp_deplibs
+
+	if test -n "$convenience"; then
+	  if test -n "$whole_archive_flag_spec" &&
+	    test yes = "$compiler_needs_object" &&
+	    test -z "$libobjs"; then
+	    # extract the archives, so we have objects to list.
+	    # TODO: could optimize this to just extract one archive.
+	    whole_archive_flag_spec=
+	  fi
+	  if test -n "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	    test "X$libobjs" = "X " && libobjs=
+	  else
+	    gentop=$output_objdir/${outputname}x
+	    func_append generated " $gentop"
+
+	    func_extract_archives $gentop $convenience
+	    func_append libobjs " $func_extract_archives_result"
+	    test "X$libobjs" = "X " && libobjs=
+	  fi
+	fi
+
+	if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then
+	  eval flag=\"$thread_safe_flag_spec\"
+	  func_append linker_flags " $flag"
+	fi
+
+	# Make a backup of the uninstalled library when relinking
+	if test relink = "$opt_mode"; then
+	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
+	fi
+
+	# Do each of the archive commands.
+	if test yes = "$module" && test -n "$module_cmds"; then
+	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	    eval test_cmds=\"$module_expsym_cmds\"
+	    cmds=$module_expsym_cmds
+	  else
+	    eval test_cmds=\"$module_cmds\"
+	    cmds=$module_cmds
+	  fi
+	else
+	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	    eval test_cmds=\"$archive_expsym_cmds\"
+	    cmds=$archive_expsym_cmds
+	  else
+	    eval test_cmds=\"$archive_cmds\"
+	    cmds=$archive_cmds
+	  fi
+	fi
+
+	if test : != "$skipped_export" &&
+	   func_len " $test_cmds" &&
+	   len=$func_len_result &&
+	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  :
+	else
+	  # The command line is too long to link in one step, link piecewise
+	  # or, if using GNU ld and skipped_export is not :, use a linker
+	  # script.
+
+	  # Save the value of $output and $libobjs because we want to
+	  # use them later.  If we have whole_archive_flag_spec, we
+	  # want to use save_libobjs as it was before
+	  # whole_archive_flag_spec was expanded, because we can't
+	  # assume the linker understands whole_archive_flag_spec.
+	  # This may have to be revisited, in case too many
+	  # convenience libraries get linked in and end up exceeding
+	  # the spec.
+	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	  fi
+	  save_output=$output
+	  func_basename "$output"
+	  output_la=$func_basename_result
+
+	  # Clear the reloadable object creation command queue and
+	  # initialize k to one.
+	  test_cmds=
+	  concat_cmds=
+	  objlist=
+	  last_robj=
+	  k=1
+
+	  if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
+	    output=$output_objdir/$output_la.lnkscript
+	    func_verbose "creating GNU ld script: $output"
+	    echo 'INPUT (' > $output
+	    for obj in $save_libobjs
+	    do
+	      func_to_tool_file "$obj"
+	      $ECHO "$func_to_tool_file_result" >> $output
+	    done
+	    echo ')' >> $output
+	    func_append delfiles " $output"
+	    func_to_tool_file "$output"
+	    output=$func_to_tool_file_result
+	  elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
+	    output=$output_objdir/$output_la.lnk
+	    func_verbose "creating linker input file list: $output"
+	    : > $output
+	    set x $save_libobjs
+	    shift
+	    firstobj=
+	    if test yes = "$compiler_needs_object"; then
+	      firstobj="$1 "
+	      shift
+	    fi
+	    for obj
+	    do
+	      func_to_tool_file "$obj"
+	      $ECHO "$func_to_tool_file_result" >> $output
+	    done
+	    func_append delfiles " $output"
+	    func_to_tool_file "$output"
+	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
+	  else
+	    if test -n "$save_libobjs"; then
+	      func_verbose "creating reloadable object files..."
+	      output=$output_objdir/$output_la-$k.$objext
+	      eval test_cmds=\"$reload_cmds\"
+	      func_len " $test_cmds"
+	      len0=$func_len_result
+	      len=$len0
+
+	      # Loop over the list of objects to be linked.
+	      for obj in $save_libobjs
+	      do
+		func_len " $obj"
+		func_arith $len + $func_len_result
+		len=$func_arith_result
+		if test -z "$objlist" ||
+		   test "$len" -lt "$max_cmd_len"; then
+		  func_append objlist " $obj"
+		else
+		  # The command $test_cmds is almost too long, add a
+		  # command to the queue.
+		  if test 1 -eq "$k"; then
+		    # The first file doesn't have a previous command to add.
+		    reload_objs=$objlist
+		    eval concat_cmds=\"$reload_cmds\"
+		  else
+		    # All subsequent reloadable object files will link in
+		    # the last one created.
+		    reload_objs="$objlist $last_robj"
+		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
+		  fi
+		  last_robj=$output_objdir/$output_la-$k.$objext
+		  func_arith $k + 1
+		  k=$func_arith_result
+		  output=$output_objdir/$output_la-$k.$objext
+		  objlist=" $obj"
+		  func_len " $last_robj"
+		  func_arith $len0 + $func_len_result
+		  len=$func_arith_result
+		fi
+	      done
+	      # Handle the remaining objects by creating one last
+	      # reloadable object file.  All subsequent reloadable object
+	      # files will link in the last one created.
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      reload_objs="$objlist $last_robj"
+	      eval concat_cmds=\"\$concat_cmds$reload_cmds\"
+	      if test -n "$last_robj"; then
+	        eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+	      fi
+	      func_append delfiles " $output"
+
+	    else
+	      output=
+	    fi
+
+	    ${skipped_export-false} && {
+	      func_verbose "generating symbol list for '$libname.la'"
+	      export_symbols=$output_objdir/$libname.exp
+	      $opt_dry_run || $RM $export_symbols
+	      libobjs=$output
+	      # Append the command to create the export file.
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
+	      if test -n "$last_robj"; then
+		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+	      fi
+	    }
+
+	    test -n "$save_libobjs" &&
+	      func_verbose "creating a temporary reloadable object file: $output"
+
+	    # Loop through the commands generated above and execute them.
+	    save_ifs=$IFS; IFS='~'
+	    for cmd in $concat_cmds; do
+	      IFS=$save_ifs
+	      $opt_quiet || {
+		  func_quote_for_expand "$cmd"
+		  eval "func_echo $func_quote_for_expand_result"
+	      }
+	      $opt_dry_run || eval "$cmd" || {
+		lt_exit=$?
+
+		# Restore the uninstalled library and exit
+		if test relink = "$opt_mode"; then
+		  ( cd "$output_objdir" && \
+		    $RM "${realname}T" && \
+		    $MV "${realname}U" "$realname" )
+		fi
+
+		exit $lt_exit
+	      }
+	    done
+	    IFS=$save_ifs
+
+	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
+	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+
+          ${skipped_export-false} && {
+	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	      tmp_export_symbols=$export_symbols
+	      test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
+	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+	    fi
+
+	    if test -n "$orig_export_symbols"; then
+	      # The given exports_symbols file has to be filtered, so filter it.
+	      func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
+	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
+	      # 's' commands, which not all seds can handle. GNU sed should be fine
+	      # though. Also, the filter scales superlinearly with the number of
+	      # global variables. join(1) would be nice here, but unfortunately
+	      # isn't a blessed tool.
+	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+	      export_symbols=$output_objdir/$libname.def
+	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+	    fi
+	  }
+
+	  libobjs=$output
+	  # Restore the value of output.
+	  output=$save_output
+
+	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	    test "X$libobjs" = "X " && libobjs=
+	  fi
+	  # Expand the library linking commands again to reset the
+	  # value of $libobjs for piecewise linking.
+
+	  # Do each of the archive commands.
+	  if test yes = "$module" && test -n "$module_cmds"; then
+	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	      cmds=$module_expsym_cmds
+	    else
+	      cmds=$module_cmds
+	    fi
+	  else
+	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	      cmds=$archive_expsym_cmds
+	    else
+	      cmds=$archive_cmds
+	    fi
+	  fi
+	fi
+
+	if test -n "$delfiles"; then
+	  # Append the command to remove temporary files to $cmds.
+	  eval cmds=\"\$cmds~\$RM $delfiles\"
+	fi
+
+	# Add any objects from preloaded convenience libraries
+	if test -n "$dlprefiles"; then
+	  gentop=$output_objdir/${outputname}x
+	  func_append generated " $gentop"
+
+	  func_extract_archives $gentop $dlprefiles
+	  func_append libobjs " $func_extract_archives_result"
+	  test "X$libobjs" = "X " && libobjs=
+	fi
+
+	save_ifs=$IFS; IFS='~'
+	for cmd in $cmds; do
+	  IFS=$sp$nl
+	  eval cmd=\"$cmd\"
+	  IFS=$save_ifs
+	  $opt_quiet || {
+	    func_quote_for_expand "$cmd"
+	    eval "func_echo $func_quote_for_expand_result"
+	  }
+	  $opt_dry_run || eval "$cmd" || {
+	    lt_exit=$?
+
+	    # Restore the uninstalled library and exit
+	    if test relink = "$opt_mode"; then
+	      ( cd "$output_objdir" && \
+	        $RM "${realname}T" && \
+		$MV "${realname}U" "$realname" )
+	    fi
+
+	    exit $lt_exit
+	  }
+	done
+	IFS=$save_ifs
+
+	# Restore the uninstalled library and exit
+	if test relink = "$opt_mode"; then
+	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
+
+	  if test -n "$convenience"; then
+	    if test -z "$whole_archive_flag_spec"; then
+	      func_show_eval '${RM}r "$gentop"'
+	    fi
+	  fi
+
+	  exit $EXIT_SUCCESS
+	fi
+
+	# Create links to the real library.
+	for linkname in $linknames; do
+	  if test "$realname" != "$linkname"; then
+	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
+	  fi
+	done
+
+	# If -module or -export-dynamic was specified, set the dlname.
+	if test yes = "$module" || test yes = "$export_dynamic"; then
+	  # On all known operating systems, these are identical.
+	  dlname=$soname
+	fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+	func_warning "'-dlopen' is ignored for objects"
+      fi
+
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+	func_warning "'-l' and '-L' are ignored for objects" ;;
+      esac
+
+      test -n "$rpath" && \
+	func_warning "'-rpath' is ignored for objects"
+
+      test -n "$xrpath" && \
+	func_warning "'-R' is ignored for objects"
+
+      test -n "$vinfo" && \
+	func_warning "'-version-info' is ignored for objects"
+
+      test -n "$release" && \
+	func_warning "'-release' is ignored for objects"
+
+      case $output in
+      *.lo)
+	test -n "$objs$old_deplibs" && \
+	  func_fatal_error "cannot build library object '$output' from non-libtool objects"
+
+	libobj=$output
+	func_lo2o "$libobj"
+	obj=$func_lo2o_result
+	;;
+      *)
+	libobj=
+	obj=$output
+	;;
+      esac
+
+      # Delete the old objects.
+      $opt_dry_run || $RM $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # if reload_cmds runs $LD directly, get rid of -Wl from
+      # whole_archive_flag_spec and hope we can get by with turning comma
+      # into space.
+      case $reload_cmds in
+        *\$LD[\ \$]*) wl= ;;
+      esac
+      if test -n "$convenience"; then
+	if test -n "$whole_archive_flag_spec"; then
+	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+	  test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
+	  reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags
+	else
+	  gentop=$output_objdir/${obj}x
+	  func_append generated " $gentop"
+
+	  func_extract_archives $gentop $convenience
+	  reload_conv_objs="$reload_objs $func_extract_archives_result"
+	fi
+      fi
+
+      # If we're not building shared, we need to use non_pic_objs
+      test yes = "$build_libtool_libs" || libobjs=$non_pic_objects
+
+      # Create the old-style object.
+      reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs
+
+      output=$obj
+      func_execute_cmds "$reload_cmds" 'exit $?'
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+	if test -n "$gentop"; then
+	  func_show_eval '${RM}r "$gentop"'
+	fi
+
+	exit $EXIT_SUCCESS
+      fi
+
+      test yes = "$build_libtool_libs" || {
+	if test -n "$gentop"; then
+	  func_show_eval '${RM}r "$gentop"'
+	fi
+
+	# Create an invalid libtool object if no PIC, so that we don't
+	# accidentally link it into a program.
+	# $show "echo timestamp > $libobj"
+	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
+	exit $EXIT_SUCCESS
+      }
+
+      if test -n "$pic_flag" || test default != "$pic_mode"; then
+	# Only do commands if we really have different PIC objects.
+	reload_objs="$libobjs $reload_conv_objs"
+	output=$libobj
+	func_execute_cmds "$reload_cmds" 'exit $?'
+      fi
+
+      if test -n "$gentop"; then
+	func_show_eval '${RM}r "$gentop"'
+      fi
+
+      exit $EXIT_SUCCESS
+      ;;
+
+    prog)
+      case $host in
+	*cygwin*) func_stripname '' '.exe' "$output"
+	          output=$func_stripname_result.exe;;
+      esac
+      test -n "$vinfo" && \
+	func_warning "'-version-info' is ignored for programs"
+
+      test -n "$release" && \
+	func_warning "'-release' is ignored for programs"
+
+      $preload \
+	&& test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \
+	&& func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support."
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+	# On Rhapsody replace the C library is the System framework
+	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
+	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
+	;;
+      esac
+
+      case $host in
+      *-*-darwin*)
+	# Don't allow lazy linking, it breaks C++ global constructors
+	# But is supposedly fixed on 10.4 or later (yay!).
+	if test CXX = "$tagname"; then
+	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
+	    10.[0123])
+	      func_append compile_command " $wl-bind_at_load"
+	      func_append finalize_command " $wl-bind_at_load"
+	    ;;
+	  esac
+	fi
+	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
+	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	;;
+      esac
+
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+	case " $new_libs " in
+	*" -L$path/$objdir "*) ;;
+	*)
+	  case " $compile_deplibs " in
+	  *" -L$path/$objdir "*)
+	    func_append new_libs " -L$path/$objdir" ;;
+	  esac
+	  ;;
+	esac
+      done
+      for deplib in $compile_deplibs; do
+	case $deplib in
+	-L*)
+	  case " $new_libs " in
+	  *" $deplib "*) ;;
+	  *) func_append new_libs " $deplib" ;;
+	  esac
+	  ;;
+	*) func_append new_libs " $deplib" ;;
+	esac
+      done
+      compile_deplibs=$new_libs
+
+
+      func_append compile_command " $compile_deplibs"
+      func_append finalize_command " $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	for libdir in $rpath $xrpath; do
+	  # This is the magic to use -rpath.
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) func_append finalize_rpath " $libdir" ;;
+	  esac
+	done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs=$libdir
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    func_append rpath " $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) func_append perm_rpath " $libdir" ;;
+	  esac
+	fi
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+	  testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
+	  case :$dllsearchpath: in
+	  *":$libdir:"*) ;;
+	  ::) dllsearchpath=$libdir;;
+	  *) func_append dllsearchpath ":$libdir";;
+	  esac
+	  case :$dllsearchpath: in
+	  *":$testbindir:"*) ;;
+	  ::) dllsearchpath=$testbindir;;
+	  *) func_append dllsearchpath ":$testbindir";;
+	  esac
+	  ;;
+	esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir=$hardcode_libdirs
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath=$rpath
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs=$libdir
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    func_append rpath " $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$finalize_perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) func_append finalize_perm_rpath " $libdir" ;;
+	  esac
+	fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir=$hardcode_libdirs
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath=$rpath
+
+      if test -n "$libobjs" && test yes = "$build_old_libs"; then
+	# Transform all the library objects into standard objects.
+	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+      fi
+
+      func_generate_dlsyms "$outputname" "@PROGRAM@" false
+
+      # template prelinking step
+      if test -n "$prelink_cmds"; then
+	func_execute_cmds "$prelink_cmds" 'exit $?'
+      fi
+
+      wrappers_required=:
+      case $host in
+      *cegcc* | *mingw32ce*)
+        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
+        wrappers_required=false
+        ;;
+      *cygwin* | *mingw* )
+        test yes = "$build_libtool_libs" || wrappers_required=false
+        ;;
+      *)
+        if test no = "$need_relink" || test yes != "$build_libtool_libs"; then
+          wrappers_required=false
+        fi
+        ;;
+      esac
+      $wrappers_required || {
+	# Replace the output file specification.
+	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+	link_command=$compile_command$compile_rpath
+
+	# We have no uninstalled library dependencies, so finalize right now.
+	exit_status=0
+	func_show_eval "$link_command" 'exit_status=$?'
+
+	if test -n "$postlink_cmds"; then
+	  func_to_tool_file "$output"
+	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	  func_execute_cmds "$postlink_cmds" 'exit $?'
+	fi
+
+	# Delete the generated files.
+	if test -f "$output_objdir/${outputname}S.$objext"; then
+	  func_show_eval '$RM "$output_objdir/${outputname}S.$objext"'
+	fi
+
+	exit $exit_status
+      }
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+	if test -n "$perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $perm_rpath; do
+	    func_append rpath "$dir:"
+	  done
+	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+	if test -n "$finalize_perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $finalize_perm_rpath; do
+	    func_append rpath "$dir:"
+	  done
+	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+      fi
+
+      if test yes = "$no_install"; then
+	# We don't need to create a wrapper script.
+	link_command=$compile_var$compile_command$compile_rpath
+	# Replace the output file specification.
+	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+	# Delete the old output file.
+	$opt_dry_run || $RM $output
+	# Link the executable and exit
+	func_show_eval "$link_command" 'exit $?'
+
+	if test -n "$postlink_cmds"; then
+	  func_to_tool_file "$output"
+	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	  func_execute_cmds "$postlink_cmds" 'exit $?'
+	fi
+
+	exit $EXIT_SUCCESS
+      fi
+
+      case $hardcode_action,$fast_install in
+        relink,*)
+	  # Fast installation is not supported
+	  link_command=$compile_var$compile_command$compile_rpath
+	  relink_command=$finalize_var$finalize_command$finalize_rpath
+
+	  func_warning "this platform does not like uninstalled shared libraries"
+	  func_warning "'$output' will be relinked during installation"
+	  ;;
+        *,yes)
+	  link_command=$finalize_var$compile_command$finalize_rpath
+	  relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
+          ;;
+	*,no)
+	  link_command=$compile_var$compile_command$compile_rpath
+	  relink_command=$finalize_var$finalize_command$finalize_rpath
+          ;;
+	*,needless)
+	  link_command=$finalize_var$compile_command$finalize_rpath
+	  relink_command=
+          ;;
+      esac
+
+      # Replace the output file specification.
+      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      func_show_eval "$link_command" 'exit $?'
+
+      if test -n "$postlink_cmds"; then
+	func_to_tool_file "$output_objdir/$outputname"
+	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	func_execute_cmds "$postlink_cmds" 'exit $?'
+      fi
+
+      # Now create the wrapper script.
+      func_verbose "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+	# Preserve any variables that may affect compiler behavior
+	for var in $variables_saved_for_relink; do
+	  if eval test -z \"\${$var+set}\"; then
+	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+	  elif eval var_value=\$$var; test -z "$var_value"; then
+	    relink_command="$var=; export $var; $relink_command"
+	  else
+	    func_quote_for_eval "$var_value"
+	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+	  fi
+	done
+	relink_command="(cd `pwd`; $relink_command)"
+	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if not in dry run mode.
+      $opt_dry_run || {
+	# win32 will think the script is a binary if it has
+	# a .exe suffix, so we strip it off here.
+	case $output in
+	  *.exe) func_stripname '' '.exe' "$output"
+	         output=$func_stripname_result ;;
+	esac
+	# test for cygwin because mv fails w/o .exe extensions
+	case $host in
+	  *cygwin*)
+	    exeext=.exe
+	    func_stripname '' '.exe' "$outputname"
+	    outputname=$func_stripname_result ;;
+	  *) exeext= ;;
+	esac
+	case $host in
+	  *cygwin* | *mingw* )
+	    func_dirname_and_basename "$output" "" "."
+	    output_name=$func_basename_result
+	    output_path=$func_dirname_result
+	    cwrappersource=$output_path/$objdir/lt-$output_name.c
+	    cwrapper=$output_path/$output_name.exe
+	    $RM $cwrappersource $cwrapper
+	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+	    func_emit_cwrapperexe_src > $cwrappersource
+
+	    # The wrapper executable is built using the $host compiler,
+	    # because it contains $host paths and files. If cross-
+	    # compiling, it, like the target executable, must be
+	    # executed on the $host or under an emulation environment.
+	    $opt_dry_run || {
+	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
+	      $STRIP $cwrapper
+	    }
+
+	    # Now, create the wrapper script for func_source use:
+	    func_ltwrapper_scriptname $cwrapper
+	    $RM $func_ltwrapper_scriptname_result
+	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
+	    $opt_dry_run || {
+	      # note: this script will not be executed, so do not chmod.
+	      if test "x$build" = "x$host"; then
+		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
+	      else
+		func_emit_wrapper no > $func_ltwrapper_scriptname_result
+	      fi
+	    }
+	  ;;
+	  * )
+	    $RM $output
+	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
+
+	    func_emit_wrapper no > $output
+	    chmod +x $output
+	  ;;
+	esac
+      }
+      exit $EXIT_SUCCESS
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      case $build_libtool_libs in
+        convenience)
+	  oldobjs="$libobjs_save $symfileobj"
+	  addlibs=$convenience
+	  build_libtool_libs=no
+	  ;;
+	module)
+	  oldobjs=$libobjs_save
+	  addlibs=$old_convenience
+	  build_libtool_libs=no
+          ;;
+	*)
+	  oldobjs="$old_deplibs $non_pic_objects"
+	  $preload && test -f "$symfileobj" \
+	    && func_append oldobjs " $symfileobj"
+	  addlibs=$old_convenience
+	  ;;
+      esac
+
+      if test -n "$addlibs"; then
+	gentop=$output_objdir/${outputname}x
+	func_append generated " $gentop"
+
+	func_extract_archives $gentop $addlibs
+	func_append oldobjs " $func_extract_archives_result"
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then
+	cmds=$old_archive_from_new_cmds
+      else
+
+	# Add any objects from preloaded convenience libraries
+	if test -n "$dlprefiles"; then
+	  gentop=$output_objdir/${outputname}x
+	  func_append generated " $gentop"
+
+	  func_extract_archives $gentop $dlprefiles
+	  func_append oldobjs " $func_extract_archives_result"
+	fi
+
+	# POSIX demands no paths to be encoded in archives.  We have
+	# to avoid creating archives with duplicate basenames if we
+	# might have to extract them afterwards, e.g., when creating a
+	# static archive out of a convenience library, or when linking
+	# the entirety of a libtool archive into another (currently
+	# not supported by libtool).
+	if (for obj in $oldobjs
+	    do
+	      func_basename "$obj"
+	      $ECHO "$func_basename_result"
+	    done | sort | sort -uc >/dev/null 2>&1); then
+	  :
+	else
+	  echo "copying selected object files to avoid basename conflicts..."
+	  gentop=$output_objdir/${outputname}x
+	  func_append generated " $gentop"
+	  func_mkdir_p "$gentop"
+	  save_oldobjs=$oldobjs
+	  oldobjs=
+	  counter=1
+	  for obj in $save_oldobjs
+	  do
+	    func_basename "$obj"
+	    objbase=$func_basename_result
+	    case " $oldobjs " in
+	    " ") oldobjs=$obj ;;
+	    *[\ /]"$objbase "*)
+	      while :; do
+		# Make sure we don't pick an alternate name that also
+		# overlaps.
+		newobj=lt$counter-$objbase
+		func_arith $counter + 1
+		counter=$func_arith_result
+		case " $oldobjs " in
+		*[\ /]"$newobj "*) ;;
+		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
+		esac
+	      done
+	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+	      func_append oldobjs " $gentop/$newobj"
+	      ;;
+	    *) func_append oldobjs " $obj" ;;
+	    esac
+	  done
+	fi
+	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+	tool_oldlib=$func_to_tool_file_result
+	eval cmds=\"$old_archive_cmds\"
+
+	func_len " $cmds"
+	len=$func_len_result
+	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  cmds=$old_archive_cmds
+	elif test -n "$archiver_list_spec"; then
+	  func_verbose "using command file archive linking..."
+	  for obj in $oldobjs
+	  do
+	    func_to_tool_file "$obj"
+	    $ECHO "$func_to_tool_file_result"
+	  done > $output_objdir/$libname.libcmd
+	  func_to_tool_file "$output_objdir/$libname.libcmd"
+	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
+	  cmds=$old_archive_cmds
+	else
+	  # the command line is too long to link in one step, link in parts
+	  func_verbose "using piecewise archive linking..."
+	  save_RANLIB=$RANLIB
+	  RANLIB=:
+	  objlist=
+	  concat_cmds=
+	  save_oldobjs=$oldobjs
+	  oldobjs=
+	  # Is there a better way of finding the last object in the list?
+	  for obj in $save_oldobjs
+	  do
+	    last_oldobj=$obj
+	  done
+	  eval test_cmds=\"$old_archive_cmds\"
+	  func_len " $test_cmds"
+	  len0=$func_len_result
+	  len=$len0
+	  for obj in $save_oldobjs
+	  do
+	    func_len " $obj"
+	    func_arith $len + $func_len_result
+	    len=$func_arith_result
+	    func_append objlist " $obj"
+	    if test "$len" -lt "$max_cmd_len"; then
+	      :
+	    else
+	      # the above command should be used before it gets too long
+	      oldobjs=$objlist
+	      if test "$obj" = "$last_oldobj"; then
+		RANLIB=$save_RANLIB
+	      fi
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      eval concat_cmds=\"\$concat_cmds$old_archive_cmds\"
+	      objlist=
+	      len=$len0
+	    fi
+	  done
+	  RANLIB=$save_RANLIB
+	  oldobjs=$objlist
+	  if test -z "$oldobjs"; then
+	    eval cmds=\"\$concat_cmds\"
+	  else
+	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+	  fi
+	fi
+      fi
+      func_execute_cmds "$cmds" 'exit $?'
+    done
+
+    test -n "$generated" && \
+      func_show_eval "${RM}r$generated"
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test yes = "$build_old_libs" && old_library=$libname.$libext
+      func_verbose "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+	if eval test -z \"\${$var+set}\"; then
+	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+	elif eval var_value=\$$var; test -z "$var_value"; then
+	  relink_command="$var=; export $var; $relink_command"
+	else
+	  func_quote_for_eval "$var_value"
+	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+	fi
+      done
+      # Quote the link command for shipping.
+      relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+      if test yes = "$hardcode_automatic"; then
+	relink_command=
+      fi
+
+      # Only create the output if not a dry run.
+      $opt_dry_run || {
+	for installed in no yes; do
+	  if test yes = "$installed"; then
+	    if test -z "$install_libdir"; then
+	      break
+	    fi
+	    output=$output_objdir/${outputname}i
+	    # Replace all uninstalled libtool libraries with the installed ones
+	    newdependency_libs=
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      *.la)
+		func_basename "$deplib"
+		name=$func_basename_result
+		func_resolve_sysroot "$deplib"
+		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
+		test -z "$libdir" && \
+		  func_fatal_error "'$deplib' is not a valid libtool archive"
+		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
+		;;
+	      -L*)
+		func_stripname -L '' "$deplib"
+		func_replace_sysroot "$func_stripname_result"
+		func_append newdependency_libs " -L$func_replace_sysroot_result"
+		;;
+	      -R*)
+		func_stripname -R '' "$deplib"
+		func_replace_sysroot "$func_stripname_result"
+		func_append newdependency_libs " -R$func_replace_sysroot_result"
+		;;
+	      *) func_append newdependency_libs " $deplib" ;;
+	      esac
+	    done
+	    dependency_libs=$newdependency_libs
+	    newdlfiles=
+
+	    for lib in $dlfiles; do
+	      case $lib in
+	      *.la)
+	        func_basename "$lib"
+		name=$func_basename_result
+		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+		test -z "$libdir" && \
+		  func_fatal_error "'$lib' is not a valid libtool archive"
+		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
+		;;
+	      *) func_append newdlfiles " $lib" ;;
+	      esac
+	    done
+	    dlfiles=$newdlfiles
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      case $lib in
+	      *.la)
+		# Only pass preopened files to the pseudo-archive (for
+		# eventual linking with the app. that links it) if we
+		# didn't already link the preopened objects directly into
+		# the library:
+		func_basename "$lib"
+		name=$func_basename_result
+		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+		test -z "$libdir" && \
+		  func_fatal_error "'$lib' is not a valid libtool archive"
+		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
+		;;
+	      esac
+	    done
+	    dlprefiles=$newdlprefiles
+	  else
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      func_append newdlfiles " $abs"
+	    done
+	    dlfiles=$newdlfiles
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      func_append newdlprefiles " $abs"
+	    done
+	    dlprefiles=$newdlprefiles
+	  fi
+	  $RM $output
+	  # place dlname in correct position for cygwin
+	  # In fact, it would be nice if we could use this code for all target
+	  # systems that can't hard-code library paths into their executables
+	  # and that have no shared library path variable independent of PATH,
+	  # but it turns out we can't easily determine that from inspecting
+	  # libtool variables, so we have to hard-code the OSs to which it
+	  # applies here; at the moment, that means platforms that use the PE
+	  # object format with DLL files.  See the long comment at the top of
+	  # tests/bindir.at for full details.
+	  tdlname=$dlname
+	  case $host,$output,$installed,$module,$dlname in
+	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
+	      # If a -bindir argument was supplied, place the dll there.
+	      if test -n "$bindir"; then
+		func_relative_path "$install_libdir" "$bindir"
+		tdlname=$func_relative_path_result/$dlname
+	      else
+		# Otherwise fall back on heuristic.
+		tdlname=../bin/$dlname
+	      fi
+	      ;;
+	  esac
+	  $ECHO > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Linker flags that cannot go in dependency_libs.
+inherited_linker_flags='$new_inherited_linker_flags'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Names of additional weak libraries provided by this library
+weak_library_names='$weak_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+	  if test no,yes = "$installed,$need_relink"; then
+	    $ECHO >> $output "\
+relink_command=\"$relink_command\""
+	  fi
+	done
+      }
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
+      ;;
+    esac
+    exit $EXIT_SUCCESS
+}
+
+if test link = "$opt_mode" || test relink = "$opt_mode"; then
+  func_mode_link ${1+"$@"}
+fi
+
+
+# func_mode_uninstall arg...
+func_mode_uninstall ()
+{
+    $debug_cmd
+
+    RM=$nonopt
+    files=
+    rmforce=false
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic=$magic
+
+    for arg
+    do
+      case $arg in
+      -f) func_append RM " $arg"; rmforce=: ;;
+      -*) func_append RM " $arg" ;;
+      *) func_append files " $arg" ;;
+      esac
+    done
+
+    test -z "$RM" && \
+      func_fatal_help "you must specify an RM program"
+
+    rmdirs=
+
+    for file in $files; do
+      func_dirname "$file" "" "."
+      dir=$func_dirname_result
+      if test . = "$dir"; then
+	odir=$objdir
+      else
+	odir=$dir/$objdir
+      fi
+      func_basename "$file"
+      name=$func_basename_result
+      test uninstall = "$opt_mode" && odir=$dir
+
+      # Remember odir for removal later, being careful to avoid duplicates
+      if test clean = "$opt_mode"; then
+	case " $rmdirs " in
+	  *" $odir "*) ;;
+	  *) func_append rmdirs " $odir" ;;
+	esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if { test -L "$file"; } >/dev/null 2>&1 ||
+	 { test -h "$file"; } >/dev/null 2>&1 ||
+	 test -f "$file"; then
+	:
+      elif test -d "$file"; then
+	exit_status=1
+	continue
+      elif $rmforce; then
+	continue
+      fi
+
+      rmfiles=$file
+
+      case $name in
+      *.la)
+	# Possibly a libtool archive, so verify it.
+	if func_lalib_p "$file"; then
+	  func_source $dir/$name
+
+	  # Delete the libtool libraries and symlinks.
+	  for n in $library_names; do
+	    func_append rmfiles " $odir/$n"
+	  done
+	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
+
+	  case $opt_mode in
+	  clean)
+	    case " $library_names " in
+	    *" $dlname "*) ;;
+	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
+	    esac
+	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
+	    ;;
+	  uninstall)
+	    if test -n "$library_names"; then
+	      # Do each command in the postuninstall commands.
+	      func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1'
+	    fi
+
+	    if test -n "$old_library"; then
+	      # Do each command in the old_postuninstall commands.
+	      func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1'
+	    fi
+	    # FIXME: should reinstall the best remaining shared library.
+	    ;;
+	  esac
+	fi
+	;;
+
+      *.lo)
+	# Possibly a libtool object, so verify it.
+	if func_lalib_p "$file"; then
+
+	  # Read the .lo file
+	  func_source $dir/$name
+
+	  # Add PIC object to the list of files to remove.
+	  if test -n "$pic_object" && test none != "$pic_object"; then
+	    func_append rmfiles " $dir/$pic_object"
+	  fi
+
+	  # Add non-PIC object to the list of files to remove.
+	  if test -n "$non_pic_object" && test none != "$non_pic_object"; then
+	    func_append rmfiles " $dir/$non_pic_object"
+	  fi
+	fi
+	;;
+
+      *)
+	if test clean = "$opt_mode"; then
+	  noexename=$name
+	  case $file in
+	  *.exe)
+	    func_stripname '' '.exe' "$file"
+	    file=$func_stripname_result
+	    func_stripname '' '.exe' "$name"
+	    noexename=$func_stripname_result
+	    # $file with .exe has already been added to rmfiles,
+	    # add $file without .exe
+	    func_append rmfiles " $file"
+	    ;;
+	  esac
+	  # Do a test to see if this is a libtool program.
+	  if func_ltwrapper_p "$file"; then
+	    if func_ltwrapper_executable_p "$file"; then
+	      func_ltwrapper_scriptname "$file"
+	      relink_command=
+	      func_source $func_ltwrapper_scriptname_result
+	      func_append rmfiles " $func_ltwrapper_scriptname_result"
+	    else
+	      relink_command=
+	      func_source $dir/$noexename
+	    fi
+
+	    # note $name still contains .exe if it was in $file originally
+	    # as does the version of $file that was added into $rmfiles
+	    func_append rmfiles " $odir/$name $odir/${name}S.$objext"
+	    if test yes = "$fast_install" && test -n "$relink_command"; then
+	      func_append rmfiles " $odir/lt-$name"
+	    fi
+	    if test "X$noexename" != "X$name"; then
+	      func_append rmfiles " $odir/lt-$noexename.c"
+	    fi
+	  fi
+	fi
+	;;
+      esac
+      func_show_eval "$RM $rmfiles" 'exit_status=1'
+    done
+
+    # Try to remove the $objdir's in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+	func_show_eval "rmdir $dir >/dev/null 2>&1"
+      fi
+    done
+
+    exit $exit_status
+}
+
+if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then
+  func_mode_uninstall ${1+"$@"}
+fi
+
+test -z "$opt_mode" && {
+  help=$generic_help
+  func_fatal_help "you must specify a MODE"
+}
+
+test -z "$exec_cmd" && \
+  func_fatal_help "invalid operation mode '$opt_mode'"
+
+if test -n "$exec_cmd"; then
+  eval exec "$exec_cmd"
+  exit $EXIT_FAILURE
+fi
+
+exit $exit_status
+
+
+# The TAGs below are defined such that we never get into a situation
+# where we disable both kinds of libraries.  Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them.  This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration.  But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
diff --git a/config/ltoptions.m4 b/config/ltoptions.m4
new file mode 100644
index 0000000..94b0829
--- /dev/null
+++ b/config/ltoptions.m4
@@ -0,0 +1,437 @@
+# Helper functions for option handling.                    -*- Autoconf -*-
+#
+#   Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software
+#   Foundation, Inc.
+#   Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 8 ltoptions.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+
+
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
+m4_define([_LT_MANGLE_OPTION],
+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
+
+
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
+# saved as a flag.
+m4_define([_LT_SET_OPTION],
+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
+        _LT_MANGLE_DEFUN([$1], [$2]),
+    [m4_warning([Unknown $1 option '$2'])])[]dnl
+])
+
+
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+m4_define([_LT_IF_OPTION],
+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
+
+
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
+m4_define([_LT_UNLESS_OPTIONS],
+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+	    [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
+		      [m4_define([$0_found])])])[]dnl
+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
+])[]dnl
+])
+
+
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME.  If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
+m4_defun([_LT_SET_OPTIONS],
+[# Set options
+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+    [_LT_SET_OPTION([$1], _LT_Option)])
+
+m4_if([$1],[LT_INIT],[
+  dnl
+  dnl Simply set some default values (i.e off) if boolean options were not
+  dnl specified:
+  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
+  ])
+  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
+  ])
+  dnl
+  dnl If no reference was made to various pairs of opposing options, then
+  dnl we run the default mode handler for the pair.  For example, if neither
+  dnl 'shared' nor 'disable-shared' was passed, we enable building of shared
+  dnl archives by default:
+  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
+  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
+  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
+  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
+		   [_LT_ENABLE_FAST_INSTALL])
+  _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4],
+		   [_LT_WITH_AIX_SONAME([aix])])
+  ])
+])# _LT_SET_OPTIONS
+
+
+## --------------------------------- ##
+## Macros to handle LT_INIT options. ##
+## --------------------------------- ##
+
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
+m4_define([_LT_MANGLE_DEFUN],
+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
+
+
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
+m4_define([LT_OPTION_DEFINE],
+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
+])# LT_OPTION_DEFINE
+
+
+# dlopen
+# ------
+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
+])
+
+AU_DEFUN([AC_LIBTOOL_DLOPEN],
+[_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the 'dlopen' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
+
+
+# win32-dll
+# ---------
+# Declare package support for building win32 dll's.
+LT_OPTION_DEFINE([LT_INIT], [win32-dll],
+[enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+  ;;
+esac
+
+test -z "$AS" && AS=as
+_LT_DECL([], [AS],      [1], [Assembler program])dnl
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
+])# win32-dll
+
+AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the 'win32-dll' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
+
+
+# _LT_ENABLE_SHARED([DEFAULT])
+# ----------------------------
+# implement the --enable-shared flag, and supports the 'shared' and
+# 'disable-shared' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'.  If omitted, it defaults to 'yes'.
+m4_define([_LT_ENABLE_SHARED],
+[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([shared],
+    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+	[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      for pkg in $enableval; do
+	IFS=$lt_save_ifs
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS=$lt_save_ifs
+      ;;
+    esac],
+    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
+
+    _LT_DECL([build_libtool_libs], [enable_shared], [0],
+	[Whether or not to build shared libraries])
+])# _LT_ENABLE_SHARED
+
+LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+
+AC_DEFUN([AC_DISABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+
+AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_SHARED], [])
+dnl AC_DEFUN([AM_DISABLE_SHARED], [])
+
+
+
+# _LT_ENABLE_STATIC([DEFAULT])
+# ----------------------------
+# implement the --enable-static flag, and support the 'static' and
+# 'disable-static' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'.  If omitted, it defaults to 'yes'.
+m4_define([_LT_ENABLE_STATIC],
+[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([static],
+    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+	[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      for pkg in $enableval; do
+	IFS=$lt_save_ifs
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS=$lt_save_ifs
+      ;;
+    esac],
+    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
+
+    _LT_DECL([build_old_libs], [enable_static], [0],
+	[Whether or not to build static libraries])
+])# _LT_ENABLE_STATIC
+
+LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+
+AC_DEFUN([AC_DISABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+
+AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_STATIC], [])
+dnl AC_DEFUN([AM_DISABLE_STATIC], [])
+
+
+
+# _LT_ENABLE_FAST_INSTALL([DEFAULT])
+# ----------------------------------
+# implement the --enable-fast-install flag, and support the 'fast-install'
+# and 'disable-fast-install' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'.  If omitted, it defaults to 'yes'.
+m4_define([_LT_ENABLE_FAST_INSTALL],
+[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([fast-install],
+    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      for pkg in $enableval; do
+	IFS=$lt_save_ifs
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS=$lt_save_ifs
+      ;;
+    esac],
+    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
+
+_LT_DECL([fast_install], [enable_fast_install], [0],
+	 [Whether or not to optimize for fast installation])dnl
+])# _LT_ENABLE_FAST_INSTALL
+
+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
+
+# Old names:
+AU_DEFUN([AC_ENABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the 'fast-install' option into LT_INIT's first parameter.])
+])
+
+AU_DEFUN([AC_DISABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the 'disable-fast-install' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
+dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
+
+
+# _LT_WITH_AIX_SONAME([DEFAULT])
+# ----------------------------------
+# implement the --with-aix-soname flag, and support the `aix-soname=aix'
+# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT
+# is either `aix', `both' or `svr4'.  If omitted, it defaults to `aix'.
+m4_define([_LT_WITH_AIX_SONAME],
+[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl
+shared_archive_member_spec=
+case $host,$enable_shared in
+power*-*-aix[[5-9]]*,yes)
+  AC_MSG_CHECKING([which variant of shared library versioning to provide])
+  AC_ARG_WITH([aix-soname],
+    [AS_HELP_STRING([--with-aix-soname=aix|svr4|both],
+      [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])],
+    [case $withval in
+    aix|svr4|both)
+      ;;
+    *)
+      AC_MSG_ERROR([Unknown argument to --with-aix-soname])
+      ;;
+    esac
+    lt_cv_with_aix_soname=$with_aix_soname],
+    [AC_CACHE_VAL([lt_cv_with_aix_soname],
+      [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT)
+    with_aix_soname=$lt_cv_with_aix_soname])
+  AC_MSG_RESULT([$with_aix_soname])
+  if test aix != "$with_aix_soname"; then
+    # For the AIX way of multilib, we name the shared archive member
+    # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
+    # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
+    # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
+    # the AIX toolchain works better with OBJECT_MODE set (default 32).
+    if test 64 = "${OBJECT_MODE-32}"; then
+      shared_archive_member_spec=shr_64
+    else
+      shared_archive_member_spec=shr
+    fi
+  fi
+  ;;
+*)
+  with_aix_soname=aix
+  ;;
+esac
+
+_LT_DECL([], [shared_archive_member_spec], [0],
+    [Shared archive member basename, for filename based shared library versioning on AIX])dnl
+])# _LT_WITH_AIX_SONAME
+
+LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])])
+LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])])
+LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])])
+
+
+# _LT_WITH_PIC([MODE])
+# --------------------
+# implement the --with-pic flag, and support the 'pic-only' and 'no-pic'
+# LT_INIT options.
+# MODE is either 'yes' or 'no'.  If omitted, it defaults to 'both'.
+m4_define([_LT_WITH_PIC],
+[AC_ARG_WITH([pic],
+    [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
+	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+    [lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      for lt_pkg in $withval; do
+	IFS=$lt_save_ifs
+	if test "X$lt_pkg" = "X$lt_p"; then
+	  pic_mode=yes
+	fi
+      done
+      IFS=$lt_save_ifs
+      ;;
+    esac],
+    [pic_mode=m4_default([$1], [default])])
+
+_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
+])# _LT_WITH_PIC
+
+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
+
+# Old name:
+AU_DEFUN([AC_LIBTOOL_PICMODE],
+[_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the 'pic-only' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
+
+## ----------------- ##
+## LTDL_INIT Options ##
+## ----------------- ##
+
+m4_define([_LTDL_MODE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
+		 [m4_define([_LTDL_MODE], [nonrecursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [recursive],
+		 [m4_define([_LTDL_MODE], [recursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [subproject],
+		 [m4_define([_LTDL_MODE], [subproject])])
+
+m4_define([_LTDL_TYPE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [installable],
+		 [m4_define([_LTDL_TYPE], [installable])])
+LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+		 [m4_define([_LTDL_TYPE], [convenience])])
diff --git a/config/ltsugar.m4 b/config/ltsugar.m4
new file mode 100644
index 0000000..48bc934
--- /dev/null
+++ b/config/ltsugar.m4
@@ -0,0 +1,124 @@
+# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
+#
+# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software
+# Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltsugar.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+
+
+# lt_join(SEP, ARG1, [ARG2...])
+# -----------------------------
+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+# associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
+m4_define([lt_join],
+[m4_if([$#], [1], [],
+       [$#], [2], [[$2]],
+       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
+m4_define([_lt_join],
+[m4_if([$#$2], [2], [],
+       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
+
+
+# lt_car(LIST)
+# lt_cdr(LIST)
+# ------------
+# Manipulate m4 lists.
+# These macros are necessary as long as will still need to support
+# Autoconf-2.59, which quotes differently.
+m4_define([lt_car], [[$1]])
+m4_define([lt_cdr],
+[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
+       [$#], 1, [],
+       [m4_dquote(m4_shift($@))])])
+m4_define([lt_unquote], $1)
+
+
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+m4_define([lt_append],
+[m4_define([$1],
+	   m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
+
+
+
+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+# ----------------------------------------------------------
+# Produce a SEP delimited list of all paired combinations of elements of
+# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
+# has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
+m4_define([lt_combine],
+[m4_if(m4_eval([$# > 3]), [1],
+       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
+[[m4_foreach([_Lt_prefix], [$2],
+	     [m4_foreach([_Lt_suffix],
+		]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
+	[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
+
+
+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+# -----------------------------------------------------------------------
+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+m4_define([lt_if_append_uniq],
+[m4_ifdef([$1],
+	  [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
+		 [lt_append([$1], [$2], [$3])$4],
+		 [$5])],
+	  [lt_append([$1], [$2], [$3])$4])])
+
+
+# lt_dict_add(DICT, KEY, VALUE)
+# -----------------------------
+m4_define([lt_dict_add],
+[m4_define([$1($2)], [$3])])
+
+
+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+# --------------------------------------------
+m4_define([lt_dict_add_subkey],
+[m4_define([$1($2:$3)], [$4])])
+
+
+# lt_dict_fetch(DICT, KEY, [SUBKEY])
+# ----------------------------------
+m4_define([lt_dict_fetch],
+[m4_ifval([$3],
+	m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
+    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
+
+
+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+# -----------------------------------------------------------------
+m4_define([lt_if_dict_fetch],
+[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
+	[$5],
+    [$6])])
+
+
+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+# --------------------------------------------------------------
+m4_define([lt_dict_filter],
+[m4_if([$5], [], [],
+  [lt_join(m4_quote(m4_default([$4], [[, ]])),
+           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
+		      [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
+])
diff --git a/config/ltversion.m4 b/config/ltversion.m4
new file mode 100644
index 0000000..fa04b52
--- /dev/null
+++ b/config/ltversion.m4
@@ -0,0 +1,23 @@
+# ltversion.m4 -- version numbers			-*- Autoconf -*-
+#
+#   Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# @configure_input@
+
+# serial 4179 ltversion.m4
+# This file is part of GNU Libtool
+
+m4_define([LT_PACKAGE_VERSION], [2.4.6])
+m4_define([LT_PACKAGE_REVISION], [2.4.6])
+
+AC_DEFUN([LTVERSION_VERSION],
+[macro_version='2.4.6'
+macro_revision='2.4.6'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
diff --git a/config/lt~obsolete.m4 b/config/lt~obsolete.m4
new file mode 100644
index 0000000..c6b26f8
--- /dev/null
+++ b/config/lt~obsolete.m4
@@ -0,0 +1,99 @@
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
+#
+#   Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software
+#   Foundation, Inc.
+#   Written by Scott James Remnant, 2004.
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 5 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN),
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else.  This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+
+m4_ifndef([AC_LIBTOOL_LINKER_OPTION],	[AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
+m4_ifndef([AC_PROG_EGREP],		[AC_DEFUN([AC_PROG_EGREP])])
+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_AC_SHELL_INIT],		[AC_DEFUN([_LT_AC_SHELL_INIT])])
+m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],	[AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
+m4_ifndef([_LT_PROG_LTMAIN],		[AC_DEFUN([_LT_PROG_LTMAIN])])
+m4_ifndef([_LT_AC_TAGVAR],		[AC_DEFUN([_LT_AC_TAGVAR])])
+m4_ifndef([AC_LTDL_ENABLE_INSTALL],	[AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
+m4_ifndef([AC_LTDL_PREOPEN],		[AC_DEFUN([AC_LTDL_PREOPEN])])
+m4_ifndef([_LT_AC_SYS_COMPILER],	[AC_DEFUN([_LT_AC_SYS_COMPILER])])
+m4_ifndef([_LT_AC_LOCK],		[AC_DEFUN([_LT_AC_LOCK])])
+m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],	[AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
+m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],	[AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
+m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],	[AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
+m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
+m4_ifndef([AC_LIBTOOL_OBJDIR],		[AC_DEFUN([AC_LIBTOOL_OBJDIR])])
+m4_ifndef([AC_LTDL_OBJDIR],		[AC_DEFUN([AC_LTDL_OBJDIR])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],	[AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
+m4_ifndef([AC_PATH_MAGIC],		[AC_DEFUN([AC_PATH_MAGIC])])
+m4_ifndef([AC_PROG_LD_GNU],		[AC_DEFUN([AC_PROG_LD_GNU])])
+m4_ifndef([AC_PROG_LD_RELOAD_FLAG],	[AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
+m4_ifndef([AC_DEPLIBS_CHECK_METHOD],	[AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS],	[AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP],	[AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
+m4_ifndef([LT_AC_PROG_EGREP],		[AC_DEFUN([LT_AC_PROG_EGREP])])
+m4_ifndef([LT_AC_PROG_SED],		[AC_DEFUN([LT_AC_PROG_SED])])
+m4_ifndef([_LT_CC_BASENAME],		[AC_DEFUN([_LT_CC_BASENAME])])
+m4_ifndef([_LT_COMPILER_BOILERPLATE],	[AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
+m4_ifndef([_LT_LINKER_BOILERPLATE],	[AC_DEFUN([_LT_LINKER_BOILERPLATE])])
+m4_ifndef([_AC_PROG_LIBTOOL],		[AC_DEFUN([_AC_PROG_LIBTOOL])])
+m4_ifndef([AC_LIBTOOL_SETUP],		[AC_DEFUN([AC_LIBTOOL_SETUP])])
+m4_ifndef([_LT_AC_CHECK_DLFCN],		[AC_DEFUN([_LT_AC_CHECK_DLFCN])])
+m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],	[AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
+m4_ifndef([_LT_AC_TAGCONFIG],		[AC_DEFUN([_LT_AC_TAGCONFIG])])
+m4_ifndef([AC_DISABLE_FAST_INSTALL],	[AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
+m4_ifndef([_LT_AC_LANG_CXX],		[AC_DEFUN([_LT_AC_LANG_CXX])])
+m4_ifndef([_LT_AC_LANG_F77],		[AC_DEFUN([_LT_AC_LANG_F77])])
+m4_ifndef([_LT_AC_LANG_GCJ],		[AC_DEFUN([_LT_AC_LANG_GCJ])])
+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+m4_ifndef([_LT_AC_LANG_CXX_CONFIG],	[AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
+m4_ifndef([_LT_AC_LANG_F77_CONFIG],	[AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],	[AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
+m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
+m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
+m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS],	[AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
+m4_ifndef([_LT_AC_PROG_CXXCPP],		[AC_DEFUN([_LT_AC_PROG_CXXCPP])])
+m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS],	[AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
+m4_ifndef([_LT_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_PROG_F77],		[AC_DEFUN([_LT_PROG_F77])])
+m4_ifndef([_LT_PROG_FC],		[AC_DEFUN([_LT_PROG_FC])])
+m4_ifndef([_LT_PROG_CXX],		[AC_DEFUN([_LT_PROG_CXX])])
diff --git a/config/missing b/config/missing
new file mode 100755
index 0000000..f62bbae
--- /dev/null
+++ b/config/missing
@@ -0,0 +1,215 @@
+#! /bin/sh
+# Common wrapper for a few potentially missing GNU programs.
+
+scriptversion=2013-10-28.13; # UTC
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try '$0 --help' for more information"
+  exit 1
+fi
+
+case $1 in
+
+  --is-lightweight)
+    # Used by our autoconf macros to check whether the available missing
+    # script is modern enough.
+    exit 0
+    ;;
+
+  --run)
+    # Back-compat with the calling convention used by older automake.
+    shift
+    ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+
+Supported PROGRAM values:
+  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
+  bison     yacc      flex         lex       help2man
+
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
+
+Send bug reports to <bug-automake at gnu.org>."
+    exit $?
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
+    ;;
+
+  -*)
+    echo 1>&2 "$0: unknown '$1' option"
+    echo 1>&2 "Try '$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch.  This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+  msg="probably too old"
+elif test $st -eq 127; then
+  # Program was missing.
+  msg="missing on your system"
+else
+  # Program was found and executed, but failed.  Give up.
+  exit $st
+fi
+
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+  case $1 in
+    aclocal|automake)
+      echo "The '$1' program is part of the GNU Automake package:"
+      echo "<$gnu_software_URL/automake>"
+      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/autoconf>"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+    autoconf|autom4te|autoheader)
+      echo "The '$1' program is part of the GNU Autoconf package:"
+      echo "<$gnu_software_URL/autoconf/>"
+      echo "It also requires GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+  esac
+}
+
+give_advice ()
+{
+  # Normalize program name to check for.
+  normalized_program=`echo "$1" | sed '
+    s/^gnu-//; t
+    s/^gnu//; t
+    s/^g//; t'`
+
+  printf '%s\n' "'$1' is $msg."
+
+  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+  case $normalized_program in
+    autoconf*)
+      echo "You should only need it if you modified 'configure.ac',"
+      echo "or m4 files included by it."
+      program_details 'autoconf'
+      ;;
+    autoheader*)
+      echo "You should only need it if you modified 'acconfig.h' or"
+      echo "$configure_deps."
+      program_details 'autoheader'
+      ;;
+    automake*)
+      echo "You should only need it if you modified 'Makefile.am' or"
+      echo "$configure_deps."
+      program_details 'automake'
+      ;;
+    aclocal*)
+      echo "You should only need it if you modified 'acinclude.m4' or"
+      echo "$configure_deps."
+      program_details 'aclocal'
+      ;;
+   autom4te*)
+      echo "You might have modified some maintainer files that require"
+      echo "the 'autom4te' program to be rebuilt."
+      program_details 'autom4te'
+      ;;
+    bison*|yacc*)
+      echo "You should only need it if you modified a '.y' file."
+      echo "You may want to install the GNU Bison package:"
+      echo "<$gnu_software_URL/bison/>"
+      ;;
+    lex*|flex*)
+      echo "You should only need it if you modified a '.l' file."
+      echo "You may want to install the Fast Lexical Analyzer package:"
+      echo "<$flex_URL>"
+      ;;
+    help2man*)
+      echo "You should only need it if you modified a dependency" \
+           "of a man page."
+      echo "You may want to install the GNU Help2man package:"
+      echo "<$gnu_software_URL/help2man/>"
+    ;;
+    makeinfo*)
+      echo "You should only need it if you modified a '.texi' file, or"
+      echo "any other file indirectly affecting the aspect of the manual."
+      echo "You might want to install the Texinfo package:"
+      echo "<$gnu_software_URL/texinfo/>"
+      echo "The spurious makeinfo call might also be the consequence of"
+      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+      echo "want to install GNU make:"
+      echo "<$gnu_software_URL/make/>"
+      ;;
+    *)
+      echo "You might have modified some files without having the proper"
+      echo "tools for further handling them.  Check the 'README' file, it"
+      echo "often tells you about the needed prerequisites for installing"
+      echo "this package.  You may also peek at any GNU archive site, in"
+      echo "case some other package contains this missing '$1' program."
+      ;;
+  esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+                       -e '2,$s/^/         /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/config/mkbuilddir b/config/mkbuilddir
new file mode 100755
index 0000000..87cd346
--- /dev/null
+++ b/config/mkbuilddir
@@ -0,0 +1,45 @@
+#!/bin/sh
+#
+# mkbuilddir
+# Morgan Deters <mdeters at cs.nyu.edu> for CVC4
+#
+# usage: mkbuilddir target build-type
+#
+# Sets up the builds/ directory for building build-type for target:
+# - removes configure detritus from top-level source directory
+# - makes builds/$target/$build_type directory if it's not already there
+# - links builds/Makefile to (possibly nonexistent) build Makefile
+# - creates the builds/current Makefile include snippet
+# - links builds/src and builds/test into build directory
+#
+
+if [ $# -ne 2 ]; then
+  echo 'usage: mkbuilddir target build_type' >&2
+  exit 1
+fi
+
+target=$1
+build_type=$2
+
+: ${as_me:=mkbuilddir}
+: ${as_echo:=echo}
+: ${RM:=rm -f}
+: ${MKDIR_P:=mkdir -p}
+: ${LN_S:=ln -s}
+
+$as_echo "$as_me: Setting up builds/$target/$build_type..."
+$RM config.log config.status confdefs.h builds/Makefile
+$MKDIR_P "builds/$target/$build_type"
+$LN_S "$target/$build_type/Makefile.builds" builds/Makefile
+
+$as_echo "$as_me: Creating builds/current..."
+(echo "# This is the most-recently-configured CVC4 build"; \
+ echo "# 'make' in the top-level source directory applies to this build"; \
+ echo "CURRENT_BUILD = $target/$build_type") > builds/current
+
+for dir in src test; do
+  $as_echo "$as_me: Linking builds/$dir..."
+  $RM "builds/$dir"
+  $LN_S "$target/$build_type/$dir" "builds/$dir"
+done
+
diff --git a/config/pkg.m4 b/config/pkg.m4
new file mode 100644
index 0000000..0048a3f
--- /dev/null
+++ b/config/pkg.m4
@@ -0,0 +1,157 @@
+# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
+# 
+# Copyright © 2004 Scott James Remnant <scott at netsplit.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+	_pkg_min_version=m4_default([$1], [0.9.0])
+	AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		AC_MSG_RESULT([yes])
+	else
+		AC_MSG_RESULT([no])
+		PKG_CONFIG=""
+	fi
+		
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists.  Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+#
+# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+# this or PKG_CHECK_MODULES is called, or make sure to call
+# PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+  m4_ifval([$2], [$2], [:])
+m4_ifvaln([$3], [else
+  $3])dnl
+fi])
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$PKG_CONFIG"; then
+    if test -n "$$1"; then
+        pkg_cv_[]$1="$$1"
+    else
+        PKG_CHECK_EXISTS([$3],
+                         [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+			 [pkg_failed=yes])
+    fi
+else
+	pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+        _PKG_SHORT_ERRORS_SUPPORTED
+        if test $_pkg_short_errors_supported = yes; then
+	        $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"`
+        else 
+	        $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+	ifelse([$4], , [AC_MSG_ERROR(dnl
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT
+])],
+		[AC_MSG_RESULT([no])
+                $4])
+elif test $pkg_failed = untried; then
+	ifelse([$4], , [AC_MSG_FAILURE(dnl
+[The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],
+		[$4])
+else
+	$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+	$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+        AC_MSG_RESULT([yes])
+	ifelse([$3], , :, [$3])
+fi[]dnl
+])# PKG_CHECK_MODULES
diff --git a/config/readline.m4 b/config/readline.m4
new file mode 100644
index 0000000..e9ce921
--- /dev/null
+++ b/config/readline.m4
@@ -0,0 +1,115 @@
+# CVC4_CHECK_FOR_READLINE
+# -----------------------
+# Look for readline and link it in, but allow user to disable.
+AC_DEFUN([CVC4_CHECK_FOR_READLINE], [
+AC_MSG_CHECKING([whether user requested readline support])
+LIBREADLINE=
+have_libreadline=0
+readline_compentry_func_returns_charp=0
+READLINE_LIBS=
+if test "$with_readline" = no; then
+  AC_MSG_RESULT([no, readline disabled by user])
+elif test "$with_readline" = check -a "$CVC4_BSD_LICENSED_CODE_ONLY" = 1; then
+  AC_MSG_RESULT([no, using BSD-compatible dependences only])
+  with_readline=no
+else
+  if test "$with_readline" = check; then
+    AC_MSG_RESULT([no preference by user, will auto-detect])
+  else
+    AC_MSG_RESULT([yes, readline enabled by user])
+  fi
+  dnl Try a bunch of combinations until something works :-/
+  READLINE_LIBS=
+  CVC4_TRY_READLINE_WITH([])
+  CVC4_TRY_READLINE_WITH([-ltinfo])
+  CVC4_TRY_READLINE_WITH([-ltermcap])
+  CVC4_TRY_READLINE_WITH([-ltermcap -ltinfo])
+  CVC4_TRY_READLINE_WITH([-lncurses -ltermcap])
+  CVC4_TRY_READLINE_WITH([-lncurses -ltermcap -ltinfo])
+  CVC4_TRY_READLINE_WITH([-lcurses -ltermcap])
+  CVC4_TRY_READLINE_WITH([-lcurses -ltermcap -ltinfo])
+  if test -z "$READLINE_LIBS"; then
+    if test "$with_readline" != check; then
+      AC_MSG_FAILURE([cannot find libreadline! (or can't get it to work)])
+    fi
+    with_readline=no
+  else
+    # make sure it works in static builds, too
+    if test "$enable_static_binary" = yes; then
+      READLINE_LIBS=
+      AC_MSG_CHECKING([whether statically-linked readline is functional])
+      CVC4_TRY_STATIC_READLINE_WITH([])
+      CVC4_TRY_STATIC_READLINE_WITH([-ltinfo])
+      CVC4_TRY_STATIC_READLINE_WITH([-ltermcap])
+      CVC4_TRY_STATIC_READLINE_WITH([-ltermcap -ltinfo])
+      CVC4_TRY_STATIC_READLINE_WITH([-lncurses -ltermcap])
+      CVC4_TRY_STATIC_READLINE_WITH([-lncurses -ltermcap -ltinfo])
+      CVC4_TRY_STATIC_READLINE_WITH([-lcurses -ltermcap])
+      CVC4_TRY_STATIC_READLINE_WITH([-lcurses -ltermcap -ltinfo])
+      if test -n "$READLINE_LIBS"; then
+        AC_MSG_RESULT([yes, it works])
+        with_readline=yes
+      else
+        AC_MSG_RESULT([no])
+        if test "$with_readline" != check; then
+          AC_MSG_FAILURE([readline installation appears incompatible with static-binary])
+        fi
+        with_readline=no
+      fi
+    else
+      with_readline=yes
+    fi
+  fi
+  if test "$with_readline" = yes; then
+    have_libreadline=1
+    AC_MSG_CHECKING([for type of rl_completion_entry_function])
+    AC_LANG_PUSH([C++])
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
+#include <stdio.h>
+#include <readline/readline.h>
+char* foo(const char*, int) { return (char*)0; }],[
+rl_completion_entry_function = foo;])],
+      [AC_MSG_RESULT([char* (*)(const char*, int)])
+       readline_compentry_func_returns_charp=1],
+      [AC_MSG_RESULT([Function])])
+    AC_LANG_POP([C++])
+  else
+    have_libreadline=0
+    READLINE_LIBS=
+  fi
+fi
+])# CVC4_CHECK_FOR_READLINE
+
+# CVC4_TRY_READLINE_WITH(LIBS)
+# ----------------------------
+# Try AC_CHECK_LIB(readline) with the given linking libraries
+AC_DEFUN([CVC4_TRY_READLINE_WITH], [
+if test -z "$READLINE_LIBS"; then
+  unset ac_cv_lib_readline_readline
+  AC_CHECK_LIB([readline], [readline],
+               [AC_CHECK_HEADER([readline/readline.h],
+                  [READLINE_LIBS="-lreadline $1"],
+                  [])],
+               [], [$1])
+fi
+])# CVC4_TRY_READLINE_WITH
+
+# CVC4_TRY_STATIC_READLINE_WITH(LIBS)
+# -----------------------------------
+# Try AC_CHECK_LIB(readline) with the given linking libraries
+AC_DEFUN([CVC4_TRY_STATIC_READLINE_WITH], [
+if test -z "$READLINE_LIBS"; then
+  AC_LANG_PUSH([C++])
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="-static $LDFLAGS"
+  LIBS="-lreadline $1"
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <readline/readline.h>],
+                                  [readline("")])],
+    [READLINE_LIBS="-lreadline $1"],
+    [])
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  AC_LANG_POP([C++])
+fi
+])# CVC4_TRY_STATIC_READLINE_WITH
diff --git a/config/test-driver b/config/test-driver
new file mode 100755
index 0000000..8e575b0
--- /dev/null
+++ b/config/test-driver
@@ -0,0 +1,148 @@
+#! /bin/sh
+# test-driver - basic testsuite driver script.
+
+scriptversion=2013-07-13.22; # UTC
+
+# Copyright (C) 2011-2014 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake at gnu.org> or send patches to
+# <automake-patches at gnu.org>.
+
+# Make unconditional expansion of undefined variables an error.  This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+usage_error ()
+{
+  echo "$0: $*" >&2
+  print_usage >&2
+  exit 2
+}
+
+print_usage ()
+{
+  cat <<END
+Usage:
+  test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
+              [--expect-failure={yes|no}] [--color-tests={yes|no}]
+              [--enable-hard-errors={yes|no}] [--]
+              TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
+The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+END
+}
+
+test_name= # Used for reporting.
+log_file=  # Where to save the output of the test script.
+trs_file=  # Where to save the metadata of the test run.
+expect_failure=no
+color_tests=no
+enable_hard_errors=yes
+while test $# -gt 0; do
+  case $1 in
+  --help) print_usage; exit $?;;
+  --version) echo "test-driver $scriptversion"; exit $?;;
+  --test-name) test_name=$2; shift;;
+  --log-file) log_file=$2; shift;;
+  --trs-file) trs_file=$2; shift;;
+  --color-tests) color_tests=$2; shift;;
+  --expect-failure) expect_failure=$2; shift;;
+  --enable-hard-errors) enable_hard_errors=$2; shift;;
+  --) shift; break;;
+  -*) usage_error "invalid option: '$1'";;
+   *) break;;
+  esac
+  shift
+done
+
+missing_opts=
+test x"$test_name" = x && missing_opts="$missing_opts --test-name"
+test x"$log_file"  = x && missing_opts="$missing_opts --log-file"
+test x"$trs_file"  = x && missing_opts="$missing_opts --trs-file"
+if test x"$missing_opts" != x; then
+  usage_error "the following mandatory options are missing:$missing_opts"
+fi
+
+if test $# -eq 0; then
+  usage_error "missing argument"
+fi
+
+if test $color_tests = yes; then
+  # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
+  red='' # Red.
+  grn='' # Green.
+  lgn='' # Light green.
+  blu='' # Blue.
+  mgn='' # Magenta.
+  std=''     # No color.
+else
+  red= grn= lgn= blu= mgn= std=
+fi
+
+do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
+trap "st=129; $do_exit" 1
+trap "st=130; $do_exit" 2
+trap "st=141; $do_exit" 13
+trap "st=143; $do_exit" 15
+
+# Test script is run here.
+"$@" >$log_file 2>&1
+estatus=$?
+
+if test $enable_hard_errors = no && test $estatus -eq 99; then
+  tweaked_estatus=1
+else
+  tweaked_estatus=$estatus
+fi
+
+case $tweaked_estatus:$expect_failure in
+  0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
+  0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
+  77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
+  99:*)  col=$mgn res=ERROR recheck=yes gcopy=yes;;
+  *:yes) col=$lgn res=XFAIL recheck=no  gcopy=yes;;
+  *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
+esac
+
+# Report the test outcome and exit status in the logs, so that one can
+# know whether the test passed or failed simply by looking at the '.log'
+# file, without the need of also peaking into the corresponding '.trs'
+# file (automake bug#11814).
+echo "$res $test_name (exit status: $estatus)" >>$log_file
+
+# Report outcome to console.
+echo "${col}${res}${std}: $test_name"
+
+# Register the test result, and other relevant metadata.
+echo ":test-result: $res" > $trs_file
+echo ":global-test-result: $res" >> $trs_file
+echo ":recheck: $recheck" >> $trs_file
+echo ":copy-in-global-log: $gcopy" >> $trs_file
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/configure b/configure
new file mode 100755
index 0000000..1c13c92
--- /dev/null
+++ b/configure
@@ -0,0 +1,31893 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for cvc4 1.5-prerelease.
+#
+# Report bugs to <cvc-bugs at cs.nyu.edu>.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+
+  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
+      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf at gnu.org and
+$0: cvc-bugs at cs.nyu.edu about your system, including any
+$0: error possibly output before this message. Then install
+$0: a modern shell, or manually run the script under such a
+$0: shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='cvc4'
+PACKAGE_TARNAME='cvc4'
+PACKAGE_VERSION='1.5-prerelease'
+PACKAGE_STRING='cvc4 1.5-prerelease'
+PACKAGE_BUGREPORT='cvc-bugs at cs.nyu.edu'
+PACKAGE_URL=''
+
+ac_unique_file="src/include/cvc4_public.h"
+ac_config_libobj_dir=src/lib
+enable_option_checking=no
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+CVC4_HAS_THREADS
+CVC4_HAS_THREADS_FALSE
+CVC4_HAS_THREADS_TRUE
+MAN_DATE
+CVC4_USE_GMP_IMP
+CVC4_USE_CLN_IMP
+CVC4_FALSE_FALSE
+CVC4_FALSE_TRUE
+mk_empty
+mk_if
+mk_include
+cvc4_config_cmdline
+WHITE_AND_BLACK_TESTS_FALSE
+WHITE_AND_BLACK_TESTS_TRUE
+pcvc4_LDFLAGS
+cvc4_LDFLAGS
+FLAG_VISIBILITY_HIDDEN
+CVC4_BINDINGS_LIBRARY_VERSION
+CVC4_COMPAT_LIBRARY_VERSION
+CVC4_PARSER_LIBRARY_VERSION
+CVC4_LIBRARY_VERSION
+CVC4_TRACING_FALSE
+CVC4_TRACING_TRUE
+CVC4_DEBUG_FALSE
+CVC4_DEBUG_TRUE
+COVERAGE_ENABLED_FALSE
+COVERAGE_ENABLED_TRUE
+STATIC_BINARY_FALSE
+STATIC_BINARY_TRUE
+STATIC_BINARY
+BUILDING_STATIC
+BUILDING_SHARED
+CVC4_JAVA_MODULE_EXT
+JAR
+JAVAH
+JAVAC
+JAVA
+CVC4_TLS_SUPPORTED
+CVC4_TLS
+CVC4_BUILD_LIBCOMPAT_FALSE
+CVC4_BUILD_LIBCOMPAT_TRUE
+CVC4_BUILD_LIBCOMPAT
+READLINE_LIBS
+CVC4_BUILD_PCVC4_FALSE
+CVC4_BUILD_PCVC4_TRUE
+BOOST_THREAD_LIBS
+BOOST_THREAD_LDPATH
+BOOST_THREAD_LDFLAGS
+BOOST_THREAD_WIN32_LIBS
+BOOST_THREAD_WIN32_LDPATH
+BOOST_THREAD_WIN32_LDFLAGS
+BOOST_SYSTEM_LIBS
+BOOST_LDPATH
+BOOST_SYSTEM_LDPATH
+BOOST_SYSTEM_LDFLAGS
+BOOST_CPPFLAGS
+DISTCHECK_CONFIGURE_FLAGS
+BOOST_ROOT
+CVC4_LANGUAGE_BINDINGS
+CVC4_LANGUAGE_BINDING_OCAML_FALSE
+CVC4_LANGUAGE_BINDING_OCAML_TRUE
+CVC4_LANGUAGE_BINDING_TCL_FALSE
+CVC4_LANGUAGE_BINDING_TCL_TRUE
+CVC4_LANGUAGE_BINDING_RUBY_FALSE
+CVC4_LANGUAGE_BINDING_RUBY_TRUE
+CVC4_LANGUAGE_BINDING_PYTHON_FALSE
+CVC4_LANGUAGE_BINDING_PYTHON_TRUE
+CVC4_LANGUAGE_BINDING_PHP_FALSE
+CVC4_LANGUAGE_BINDING_PHP_TRUE
+CVC4_LANGUAGE_BINDING_PERL_FALSE
+CVC4_LANGUAGE_BINDING_PERL_TRUE
+CVC4_LANGUAGE_BINDING_CSHARP_FALSE
+CVC4_LANGUAGE_BINDING_CSHARP_TRUE
+CVC4_LANGUAGE_BINDING_JAVA_FALSE
+CVC4_LANGUAGE_BINDING_JAVA_TRUE
+CVC4_LANGUAGE_BINDING_C_FALSE
+CVC4_LANGUAGE_BINDING_C_TRUE
+CVC4_HAS_SWIG_FALSE
+CVC4_HAS_SWIG_TRUE
+CAMLP4O
+OCAMLFIND
+OCAMLMKTOP
+OCAMLC
+TCL_CPPFLAGS
+RUBY_CPPFLAGS
+PYTHON_CXXFLAGS
+PYTHON_CONFIG
+PYTHON_INCLUDE
+pkgpyexecdir
+pyexecdir
+pkgpythondir
+pythondir
+PYTHON_PLATFORM
+PYTHON_EXEC_PREFIX
+PYTHON_PREFIX
+PYTHON_VERSION
+PHP_CPPFLAGS
+PERL_CPPFLAGS
+CSHARP_CPPFLAGS
+JAVA_CPPFLAGS
+SWIG
+ANTLR_LDFLAGS
+ANTLR_INCLUDES
+ANTLR_HOME
+LIBOBJS
+PYTHON
+PERL
+TEST_LDFLAGS
+TEST_CXXFLAGS
+TEST_CPPFLAGS
+HAVE_CXXTESTGEN_FALSE
+HAVE_CXXTESTGEN_TRUE
+CXXTESTGEN
+RUN_REGRESSION_ARGS
+TESTS_ENVIRONMENT
+CXXTEST
+DOXYGEN_PAPER_SIZE
+DX_COND_latex_FALSE
+DX_COND_latex_TRUE
+DX_COND_pdf_FALSE
+DX_COND_pdf_TRUE
+DX_PDFLATEX
+DX_FLAG_pdf
+DX_COND_ps_FALSE
+DX_COND_ps_TRUE
+DX_EGREP
+DX_DVIPS
+DX_MAKEINDEX
+DX_LATEX
+DX_FLAG_ps
+DX_COND_html_FALSE
+DX_COND_html_TRUE
+DX_FLAG_html
+DX_COND_chi_FALSE
+DX_COND_chi_TRUE
+DX_FLAG_chi
+DX_COND_chm_FALSE
+DX_COND_chm_TRUE
+DX_HHC
+DX_FLAG_chm
+DX_COND_xml_FALSE
+DX_COND_xml_TRUE
+DX_FLAG_xml
+DX_COND_rtf_FALSE
+DX_COND_rtf_TRUE
+DX_FLAG_rtf
+DX_COND_man_FALSE
+DX_COND_man_TRUE
+DX_FLAG_man
+DX_COND_dot_FALSE
+DX_COND_dot_TRUE
+DX_DOT
+DX_FLAG_dot
+DX_COND_doc_FALSE
+DX_COND_doc_TRUE
+DX_PERL
+DX_FLAG_DX_CURRENT_FEATURE
+DX_DOXYGEN
+DX_FLAG_doc
+DX_ENV
+DX_DOCDIR
+DX_CONFIG
+DX_PROJECT
+DOXYGEN_EXTRACT_STATIC
+DOXYGEN_EXTRACT_PRIVATE
+zz_cvc4_use_personal_make_rules
+FNO_STRICT_ALIASING
+WNO_UNUSED_VARIABLE
+WNO_UNINITIALIZED
+WNO_PARENTHESES
+WNO_TAUTOLOGICAL_COMPARE
+WNO_CONVERSION_NULL
+WERROR
+ANTLR
+CVC4_NEED_INT64_T_OVERLOADS
+CRYPTOMINISAT_LIBS
+CRYPTOMINISAT_LDFLAGS
+CVC4_USE_CRYPTOMINISAT_FALSE
+CVC4_USE_CRYPTOMINISAT_TRUE
+CRYPTOMINISAT_HOME
+ABC_LIBS
+ABC_LDFLAGS
+CVC4_USE_ABC_FALSE
+CVC4_USE_ABC_TRUE
+ABC_HOME
+GLPK_LIBS
+GLPK_LDFLAGS
+CVC4_USE_GLPK_FALSE
+CVC4_USE_GLPK_TRUE
+GLPK_HOME
+CVC4_PROOF_FALSE
+CVC4_PROOF_TRUE
+CVC4_BUILD_PROFILE_COMPETITION_FALSE
+CVC4_BUILD_PROFILE_COMPETITION_TRUE
+CVC4_BUILD_PROFILE_DEFAULT_FALSE
+CVC4_BUILD_PROFILE_DEFAULT_TRUE
+CVC4_BUILD_PROFILE_DEBUG_FALSE
+CVC4_BUILD_PROFILE_DEBUG_TRUE
+CVC4_BUILD_PROFILE_PRODUCTION_FALSE
+CVC4_BUILD_PROFILE_PRODUCTION_TRUE
+CVC4_GMP_IMP_FALSE
+CVC4_GMP_IMP_TRUE
+CVC4_CLN_IMP_FALSE
+CVC4_CLN_IMP_TRUE
+CLN_LIBS
+CLN_CFLAGS
+PKG_CONFIG
+CXXCPP
+am__fastdepCXX_FALSE
+am__fastdepCXX_TRUE
+CXXDEPMODE
+ac_ct_CXX
+CXXFLAGS
+CXX
+CPP
+LT_SYS_LIBRARY_PATH
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+MANIFEST_TOOL
+RANLIB
+ac_ct_AR
+AR
+DLLTOOL
+OBJDUMP
+LN_S
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+EGREP
+GREP
+SED
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+LIBTOOL
+AUTOMAKE_1_11_FALSE
+AUTOMAKE_1_11_TRUE
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_os
+target_vendor
+target_cpu
+target
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
+subdirs
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+runstatedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_silent_rules
+enable_maintainer_mode
+enable_shared
+enable_static
+with_build
+with_pic
+enable_fast_install
+with_aix_soname
+enable_dependency_tracking
+with_gnu_ld
+with_sysroot
+enable_libtool_lock
+with_cln
+with_gmp
+enable_static_binary
+enable_proof
+enable_optimized
+enable_debug_symbols
+enable_statistics
+enable_replay
+enable_assertions
+enable_tracing
+enable_dumping
+enable_muzzle
+enable_coverage
+enable_profiling
+with_glpk
+with_glpk_dir
+with_abc
+with_abc_dir
+with_cryptominisat
+with_cryptominisat_dir
+enable_personal_make_rules
+enable_internals_documentation
+enable_doxygen_doc
+enable_doxygen_dot
+enable_doxygen_man
+enable_doxygen_rtf
+enable_doxygen_xml
+enable_doxygen_chm
+enable_doxygen_chi
+enable_doxygen_html
+enable_doxygen_ps
+enable_doxygen_pdf
+enable_unit_testing
+with_cxxtest_dir
+with_antlr_dir
+with_swig
+enable_language_bindings
+with_boost
+with_portfolio
+enable_thread_support
+enable_static_boost
+with_readline
+with_compat
+enable_tls
+with_google_perftools
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+LT_SYS_LIBRARY_PATH
+CPP
+CXX
+CXXFLAGS
+CCC
+CXXCPP
+PKG_CONFIG
+CLN_CFLAGS
+CLN_LIBS
+GLPK_HOME
+ABC_HOME
+CRYPTOMINISAT_HOME
+ANTLR
+DOXYGEN_PAPER_SIZE
+CXXTEST
+TEST_CPPFLAGS
+TEST_CXXFLAGS
+TEST_LDFLAGS
+PERL
+PYTHON
+ANTLR_HOME
+SWIG
+JAVA_CPPFLAGS
+CSHARP_CPPFLAGS
+PERL_CPPFLAGS
+PHP_CPPFLAGS
+PYTHON_INCLUDE
+PYTHON_CONFIG
+RUBY_CPPFLAGS
+TCL_CPPFLAGS
+OCAMLC
+OCAMLMKTOP
+OCAMLFIND
+CAMLP4O
+BOOST_ROOT
+JAVA
+JAVAC
+JAVAH
+JAR'
+ac_subdirs_all='proofs/lfsc_checker'
+
+CVC4_BSD_LICENSED_CODE_ONLY=1
+
+
+handle_option() {
+  ac_option="$1"
+  case $ac_option in
+    --bsd|--disable-gpl|CVC4_BSD_LICENSED_CODE_ONLY=1)
+      if test "$CVC4_LICENSE_OPTION" = gpl; then as_fn_error $? "cannot give both --bsd and --enable-gpl"; fi
+      CVC4_LICENSE_OPTION=bsd
+      ac_option="CVC4_BSD_LICENSED_CODE_ONLY=1"
+      eval $ac_option
+      ;;
+    --enable-gpl|--gpl|CVC4_BSD_LICENSED_CODE_ONLY=0)
+      if test "$CVC4_LICENSE_OPTION" = bsd; then as_fn_error $? "cannot give both --bsd and --enable-gpl"; fi
+      CVC4_LICENSE_OPTION=gpl
+      ac_option="CVC4_BSD_LICENSED_CODE_ONLY=0"
+      eval $ac_option
+      ;;
+    --best)
+      # set the best configuration
+      handle_option --with-readline
+      handle_option --with-cln
+      handle_option --with-glpk
+      handle_option --with-abc
+      return
+      ;;
+    -enable-proofs|--enable-proofs)
+      ac_option='--enable-proof'
+      ;;
+    -*|*=*)
+      ;;
+    production|production-*|debug|debug-*|competition|competition-*)
+      # regexp `\?' not supported on Mac OS X
+      ac_option_build=`expr "$ac_option" : '\([^-]*\)-\{0,1\}'`
+      ac_cvc4_build_profile_set=yes
+      as_me=configure
+      $as_echo "$as_me: CVC4: building profile $ac_option_build" >&6
+      for x in optimized proof statistics replay assertions tracing dumping muzzle coverage profiling; do
+        if expr "$ac_option" : '.*-no'$x'$' >/dev/null || expr "$ac_option" : '.*-no'$x'-' >/dev/null; then
+          eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--disable-$x\""'
+        fi
+        if expr "$ac_option" : '.*-'$x'$' >/dev/null || expr "$ac_option" : '.*-'$x'-' >/dev/null; then
+          eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--enable-$x\""'
+        fi
+      done
+      if expr "$ac_option" : '.*-nostaticbinary$' >/dev/null || expr "$ac_option" : '.*-nostaticbinary-' >/dev/null; then
+        eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--disable-static-binary\""'
+      fi
+      if expr "$ac_option" : '.*-staticbinary$' >/dev/null || expr "$ac_option" : '.*-staticbinary-' >/dev/null; then
+        eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--enable-static-binary\""'
+      fi
+      if expr "$ac_option" : '.*-nodebugsymbols$' >/dev/null || expr "$ac_option" : '.*-nodebugsymbols-' >/dev/null; then
+        eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--disable-debug-symbols\""'
+      fi
+      if expr "$ac_option" : '.*-debugsymbols$' >/dev/null || expr "$ac_option" : '.*-debugsymbols-' >/dev/null; then
+        eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--enable-debug-symbols\""'
+      fi
+      if expr "$ac_option" : '.*-noglpk' >/dev/null || expr "$ac_option" : '.*-noglpk-' >/dev/null; then
+        eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--without-glpk\""'
+      fi
+      if expr "$ac_option" : '.*-glpk' >/dev/null || expr "$ac_option" : '.*-glpk-' >/dev/null; then
+        eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--with-glpk\""'
+      fi
+      if expr "$ac_option" : '.*-noabc' >/dev/null || expr "$ac_option" : '.*-noabc-' >/dev/null; then
+        eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--without-abc\""'
+      fi
+      if expr "$ac_option" : '.*-abc' >/dev/null || expr "$ac_option" : '.*-abc-' >/dev/null; then
+        eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--with-abc\""'
+      fi
+      for x in cln gmp; do
+        if expr "$ac_option" : '.*-no'$x'$' >/dev/null || expr "$ac_option" : '.*-no'$x'-' >/dev/null; then
+          eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--without-$x\""'
+        fi
+        if expr "$ac_option" : '.*-'$x'$' >/dev/null || expr "$ac_option" : '.*-'$x'-' >/dev/null; then
+          eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }\"--with-$x\""'
+        fi
+      done
+      ac_option="--with-build=$ac_option_build"
+  esac
+  eval 'ac_cvc4_rewritten_args="${ac_cvc4_rewritten_args+$ac_cvc4_rewritten_args }'\'\$ac_option\'\"
+}
+
+unset ac_cvc4_rewritten_args
+for ac_option
+do
+  if test "$ac_option" = personal; then
+    if test -e personal.conf; then
+      handle_option --enable-personal-make-rules
+      while read arg; do
+        handle_option "$arg"
+      done < personal.conf
+    else
+      as_fn_error $? "personal build profile selected, but cannot find personal.conf"
+    fi
+  else
+    handle_option "$ac_option"
+  fi
+done
+eval set x $ac_cvc4_rewritten_args
+shift
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir runstatedir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures cvc4 1.5-prerelease to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/cvc4]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+  --target=TARGET   configure for building compilers for TARGET [HOST]
+
+Licensing and performance options:
+  --bsd                   disable all GPL dependences (default)
+  --enable-gpl            permit GPL dependences, if available
+  --best                  turn on dependences known to give best performance
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of cvc4 1.5-prerelease:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-silent-rules   less verbose build output (undo: "make V=1")
+  --disable-silent-rules  verbose build output (undo: "make V=0")
+  --disable-maintainer-mode
+                          disable make rules and dependencies not useful (and
+                          sometimes confusing) to the casual installer
+  --enable-shared[=PKGS]  build shared libraries [default=yes]
+  --enable-static[=PKGS]  build static libraries [default=no]
+  --enable-fast-install[=PKGS]
+                          optimize for fast installation [default=yes]
+  --enable-dependency-tracking
+                          do not reject slow dependency extractors
+  --disable-dependency-tracking
+                          speeds up one-time build
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+  --enable-static-binary  build a fully statically-linked binary [default=no]
+  --disable-proof         do not support proof generation
+  --enable-optimized      optimize the build
+  --disable-debug-symbols do not include debug symbols in libcvc4
+  --disable-statistics    do not include statistics in libcvc4
+  --disable-replay        turn off the replay feature in libcvc4
+  --disable-assertions    turn off assertions in build
+  --disable-tracing       remove all tracing code from CVC4
+  --disable-dumping       remove all dumping code from CVC4
+  --enable-muzzle         completely silence CVC4; remove ALL non-result
+                          output from build
+  --enable-coverage       build with support for gcov coverage testing
+  --enable-profiling      build with support for gprof profiling
+  --enable-personal-make-rules
+                          include top-level personal.mk (if it exists)
+  --enable-internals-documentation
+                          build Doxygen documentation for static and private
+                          member functions
+  --disable-doxygen-doc   don't generate any doxygen documentation
+  --disable-doxygen-dot   don't generate graphics for doxygen documentation
+  --enable-doxygen-man    generate doxygen manual pages
+  --enable-doxygen-rtf    generate doxygen RTF documentation
+  --enable-doxygen-xml    generate doxygen XML documentation
+  --enable-doxygen-chm    generate doxygen compressed HTML help documentation
+  --enable-doxygen-chi    generate doxygen seperate compressed HTML help index
+                          file
+  --disable-doxygen-html  don't generate doxygen plain HTML documentation
+  --enable-doxygen-ps     generate doxygen PostScript documentation
+  --disable-doxygen-pdf   don't generate doxygen PDF documentation
+  --disable-unit-testing  don't build support for unit testing, even if
+                          available
+  --enable-language-bindings=c,c++,java | all
+                          specify language bindings to build
+  --disable-thread-support
+                          do not support multithreaded-capable library
+  --enable-static-boost   Prefer the static boost libraries over the shared
+                          ones [no]
+  --disable-tls           don't use compiler-native TLS
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-build=profile    for profile in
+                          {production,debug,competition,personal}
+  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
+                          both]
+  --with-aix-soname=aix|svr4|both
+                          shared library versioning (aka "SONAME") variant to
+                          provide on AIX, [default=aix].
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-sysroot[=DIR]    Search for dependent libraries within DIR (or the
+                          compiler's sysroot if not specified).
+  --with-cln              use CLN instead of GMP
+  --with-gmp              use GMP instead of CLN
+  --with-glpk             use GLPK simplex solver
+  --with-glpk-dir=PATH    path to top level of glpk installation
+  --with-abc              use the ABC AIG library
+  --with-abc-dir=PATH     path to top level of abc source tree
+  --with-cryptominisat    use the CRYPTOMINISAT sat solver
+  --with-cryptominisat-dir=PATH
+                          path to top level of cryptominisat source tree
+  --with-cxxtest-dir=DIR  path to CxxTest installation
+  --with-antlr-dir=PATH   path to ANTLR C headers and libraries
+  --with-swig=BINARY      path to swig binary
+  --with-boost=DIR        prefix of Boost [guess]
+  --with-portfolio        build the multithreaded portfolio version of CVC4
+                          (pcvc4)
+  --with-readline         support the readline library
+  --with-compat           build compatibility library (CVC3 API layer)
+  --with-google-perftools use Google Performance Tools
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  LT_SYS_LIBRARY_PATH
+              User-defined run-time library search path.
+  CPP         C preprocessor
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  CXXCPP      C++ preprocessor
+  PKG_CONFIG  path to pkg-config utility
+  CLN_CFLAGS  C compiler flags for CLN, overriding pkg-config
+  CLN_LIBS    linker flags for CLN, overriding pkg-config
+  GLPK_HOME   path to top level of glpk installation
+  ABC_HOME    path to top level of abc source tree
+  CRYPTOMINISAT_HOME
+              path to top level of cryptominisat source tree
+  ANTLR       location of the antlr3 script
+  DOXYGEN_PAPER_SIZE
+              a4wide (default), a4, letter, legal or executive
+  CXXTEST     path to CxxTest installation
+  TEST_CPPFLAGS
+              CPPFLAGS to use when testing (default=$CPPFLAGS)
+  TEST_CXXFLAGS
+              CXXFLAGS to use when testing (default=$CXXFLAGS)
+  TEST_LDFLAGS
+              LDFLAGS to use when testing (default=$LDFLAGS)
+  PERL        PERL interpreter (used when testing)
+  PYTHON      PYTHON interpreter (used for building legacy Java library
+              interface)
+  ANTLR_HOME  path to libantlr3c installation
+  SWIG        SWIG binary (used to generate language bindings)
+  JAVA_CPPFLAGS
+              flags to pass to compiler when building Java bindings
+  CSHARP_CPPFLAGS
+              flags to pass to compiler when building C# bindings
+  PERL_CPPFLAGS
+              flags to pass to compiler when building perl bindings
+  PHP_CPPFLAGS
+              flags to pass to compiler when building PHP bindings
+  PYTHON_INCLUDE
+              Include flags for python, bypassing python-config
+  PYTHON_CONFIG
+              Path to python-config
+  RUBY_CPPFLAGS
+              flags to pass to compiler when building ruby bindings
+  TCL_CPPFLAGS
+              flags to pass to compiler when building tcl bindings
+  OCAMLC      OCaml compiler
+  OCAMLMKTOP  OCaml runtime-maker
+  OCAMLFIND   OCaml-find binary
+  CAMLP4O     camlp4o binary
+  BOOST_ROOT  Location of Boost installation
+  JAVA        Java interpreter (used when testing Java interface)
+  JAVAC       Java compiler (used when building and testing Java interface)
+  JAVAH       Java compiler (used when building and testing Java interface)
+  JAR         Jar archiver (used when building Java interface)
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <cvc-bugs at cs.nyu.edu>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+cvc4 configure 1.5-prerelease
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_compile
+
+# ac_fn_cxx_try_cpp LINENO
+# ------------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_cpp
+
+# ac_fn_cxx_try_link LINENO
+# -------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_link
+
+# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES
+# ---------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_cxx_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ---------------------------------- ##
+## Report this to cvc-bugs at cs.nyu.edu ##
+## ---------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_cxx_check_header_mongrel
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ---------------------------------- ##
+## Report this to cvc-bugs at cs.nyu.edu ##
+## ---------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
+# ---------------------------------------------
+# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
+# accordingly.
+ac_fn_c_check_decl ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  as_decl_name=`echo $2|sed 's/ *(.*//'`
+  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+#ifndef $as_decl_name
+#ifdef __cplusplus
+  (void) $as_decl_use;
+#else
+  (void) $as_decl_name;
+#endif
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_decl
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by cvc4 $as_me 1.5-prerelease, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+ac_aux_dir=
+for ac_dir in config "$srcdir"/config; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+
+
+
+
+subdirs="$subdirs proofs/lfsc_checker"
+
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=0;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+
+CVC4_MAJOR=1
+CVC4_MINOR=5
+CVC4_RELEASE=0
+CVC4_EXTRAVERSION=-prerelease
+CVC4_RELEASE_STRING=1.5-prerelease
+
+# Libtool version numbers for libraries
+# Version numbers are in the form current:revision:age
+#
+# current -
+#   increment if interfaces have been added, removed or changed
+# revision -
+#   increment if source code has changed
+#   set to zero if current is incremented
+# age -
+#   increment if interfaces have been added
+#   set to zero if interfaces have been removed
+#   or changed
+#
+# For more information, see:
+# http://www.gnu.org/software/libtool/manual/libtool.html#Versioning
+# For guidance on when to change the version number, refer to the
+# developer's guide.
+
+
+
+
+
+
+CVC4_LIBRARY_VERSION=3:0:0
+
+CVC4_PARSER_LIBRARY_VERSION=3:0:0
+
+CVC4_COMPAT_LIBRARY_VERSION=3:0:0
+
+CVC4_BINDINGS_LIBRARY_VERSION=3:0:0
+
+
+# Using the AC_CANONICAL_* macros destroy the command line you get
+# from $@, which we want later for determining the build profile.  So
+# we save it.  (We can't do our build profile stuff here, or it's not
+# included in the output... autoconf overrides us on the orderings of
+# some things.)
+config_cmdline=("$@")
+cvc4_config_cmdline="${config_cmdline[@]}"
+
+# remember if the user set these explicitly (or whether autoconf does)
+user_specified_enable_or_disable_static=${enable_static+yes}
+user_specified_enable_or_disable_shared=${enable_shared+yes}
+
+if test -e src/include/cvc4_public.h; then
+  CVC4_CONFIGURE_AT_TOP_LEVEL=yes
+else
+  CVC4_CONFIGURE_AT_TOP_LEVEL=no
+fi
+
+# override autoconf: we don't want it giving us CFLAGS/CXXFLAGS, but we do
+# want to respect the user's flags
+if test -z "${CFLAGS+set}"; then CFLAGS=; fi
+if test -z "${CXXFLAGS+set}"; then CXXFLAGS=; fi
+
+# on by default
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+    # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+  USE_MAINTAINER_MODE=yes
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+   if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
+fi
+
+  MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+# turn off static lib building by default
+# Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+  enableval=$enable_shared; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      for pkg in $enableval; do
+	IFS=$lt_save_ifs
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS=$lt_save_ifs
+      ;;
+    esac
+else
+  enable_shared=yes
+fi
+
+
+
+
+
+
+
+
+
+# Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+  enableval=$enable_static; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      for pkg in $enableval; do
+	IFS=$lt_save_ifs
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS=$lt_save_ifs
+      ;;
+    esac
+else
+  enable_static=no
+fi
+
+
+
+
+
+
+
+
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
+$as_echo_n "checking target system type... " >&6; }
+if ${ac_cv_target+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$target_alias" = x; then
+  ac_cv_target=$ac_cv_host
+else
+  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
+$as_echo "$ac_cv_target" >&6; }
+case $ac_cv_target in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
+esac
+target=$ac_cv_target
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_target
+shift
+target_cpu=$1
+target_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+target_os=$*
+IFS=$ac_save_IFS
+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+  test "$program_prefix$program_suffix$program_transform_name" = \
+    NONENONEs,x,x, &&
+  program_prefix=${target_alias}-
+
+as_me=configure
+
+if test "$enable_shared" = no -a "$user_specified_enable_or_disable_shared" = yes; then
+  enable_static=yes
+fi
+
+# Features requested by the user
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for requested build profile" >&5
+$as_echo_n "checking for requested build profile... " >&6; }
+
+# Check whether --with-build was given.
+if test "${with_build+set}" = set; then :
+  withval=$with_build;
+fi
+
+
+if test -z "${with_build+set}"; then
+  with_build=production
+fi
+if test -z "${enable_optimized+set}" -a -z "${enable_debug_symbols+set}" -a -z "${enable_assertions+set}" -a -z "${enable_tracing+set}" -a -z "${enable_dumping+set}" -a -z "${enable_muzzle+set}" -a -z "${enable_coverage+set}" -a -z "${enable_profiling+set}" -a -z "${enable_statistics+set}" -a -z "${enable_replay+set}" -a -z "${with_gmp+set}" -a -z "${with_cln+set}" -a -z "${with_glpk+set}" -a -z "${with_abc+set}" -a -z "${with_cryptominisat+set}"; then
+  custom_build_profile=no
+else
+  custom_build_profile=yes
+fi
+btargs=
+if test -n "${enable_optimized+set}"; then
+  if test "$enable_optimized" = yes; then
+    btargs="$btargs optimized"
+  else
+    btargs="$btargs nooptimized"
+  fi
+fi
+# --enable-staticbinary is an alias for --enable-static-binary
+if test -n "${enable_staticbinary+set}"; then
+  enable_static_binary="$enable_staticbinary"
+fi
+if test -n "${enable_static_binary+set}"; then
+  if test "$enable_static_binary" = yes; then
+    btargs="$btargs staticbinary"
+  else
+    btargs="$btargs nostaticbinary"
+  fi
+fi
+if test -n "${enable_debug_symbols+set}"; then
+  if test "$enable_debug_symbols" = yes; then
+    btargs="$btargs debugsymbols"
+  else
+    btargs="$btargs nodebugsymbols"
+  fi
+fi
+if test -n "${enable_assertions+set}"; then
+  if test "$enable_assertions" = yes; then
+    btargs="$btargs assertions"
+  else
+    btargs="$btargs noassertions"
+  fi
+fi
+if test -n "${enable_proof+set}"; then
+  if test "$enable_proof" = yes; then
+    btargs="$btargs proof"
+  else
+    btargs="$btargs noproof"
+  fi
+fi
+if test -n "${enable_tracing+set}"; then
+  if test "$enable_tracing" = yes; then
+    btargs="$btargs tracing"
+  else
+    btargs="$btargs notracing"
+  fi
+fi
+if test -n "${enable_dumping+set}"; then
+  if test "$enable_dumping" = yes; then
+    btargs="$btargs dumping"
+  else
+    btargs="$btargs nodumping"
+  fi
+fi
+if test -n "${enable_muzzle+set}"; then
+  if test "$enable_muzzle" = yes; then
+    btargs="$btargs muzzle"
+  else
+    btargs="$btargs nomuzzle"
+  fi
+fi
+if test -n "${enable_coverage+set}"; then
+  if test "$enable_coverage" = yes; then
+    btargs="$btargs coverage"
+  else
+    btargs="$btargs nocoverage"
+  fi
+fi
+if test -n "${enable_profiling+set}"; then
+  if test "$enable_profiling" = yes; then
+    btargs="$btargs profiling"
+  else
+    btargs="$btargs noprofiling"
+  fi
+fi
+if test -n "${enable_statistics+set}"; then
+  if test "$enable_statistics" = yes; then
+    btargs="$btargs statistics"
+  else
+    btargs="$btargs nostatistics"
+  fi
+fi
+if test -n "${enable_replay+set}"; then
+  if test "$enable_replay" = yes; then
+    btargs="$btargs replay"
+  else
+    btargs="$btargs noreplay"
+  fi
+fi
+if test -n "${with_glpk+set}"; then
+  if test "$with_glpk" = yes; then
+    btargs="$btargs glpk"
+  fi
+fi
+if test -n "${with_abc+set}"; then
+  if test "$with_abc" = yes; then
+    btargs="$btargs abc"
+  fi
+fi
+if test -n "${with_cryptominisat+set}"; then
+  if test "$with_cryptominisat" = yes; then
+    btargs="$btargs cryptominisat"
+  fi
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_build" >&5
+$as_echo "$with_build" >&6; }
+
+am__api_version='1.15'
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
+    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$*" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$*" != "X $srcdir/configure conftest.file" \
+	&& test "$*" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment" "$LINENO" 5
+     fi
+     if test "$2" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if ${ac_cv_path_mkdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+	 for ac_exec_ext in '' $ac_executable_extensions; do
+	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+	     'mkdir (GNU coreutils) '* | \
+	     'mkdir (coreutils) '* | \
+	     'mkdir (fileutils) '4.1*)
+	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+	       break 3;;
+	   esac
+	 done
+       done
+  done
+IFS=$as_save_IFS
+
+fi
+
+  test -d ./--version && rmdir ./--version
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='cvc4'
+ VERSION='1.5-prerelease'
+
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar  pax cpio none'
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a pax tar archive" >&5
+$as_echo_n "checking how to create a pax tar archive... " >&6; }
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_pax-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        { echo "$as_me:$LINENO: $_am_tar --version" >&5
+   ($_am_tar --version) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } && break
+      done
+      am__tar="$_am_tar --format=posix -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=posix -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x pax -w "$$tardir"'
+      am__tar_='pax -L -x pax -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H pax -L'
+      am__tar_='find "$tardir" -print | cpio -o -H pax -L'
+      am__untar='cpio -i -H pax -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
+
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_pax}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5
+   (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      { echo "$as_me:$LINENO: $am__untar <conftest.tar" >&5
+   ($am__untar <conftest.tar) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }
+      { echo "$as_me:$LINENO: cat conftest.dir/file" >&5
+   (cat conftest.dir/file) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
+  rm -rf conftest.dir
+
+  if ${am_cv_prog_tar_pax+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  am_cv_prog_tar_pax=$_am_tool
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_pax" >&5
+$as_echo "$am_cv_prog_tar_pax" >&6; }
+
+
+
+
+
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+  fi
+fi
+
+ac_config_headers="$ac_config_headers cvc4autoconfig.h"
+
+
+# automake 1.12 changes the test driver mechanism in a way that is
+# completely incompatible with 1.11.  We figure out here which version
+# we're using in order to set up test makefiles correctly.
+# See http://lists.gnu.org/archive/html/automake/2012-04/msg00060.html
+if test -z "$am__api_version"; then
+  as_fn_error $? "Cannot determine automake API version ?!" "$LINENO" 5
+fi
+case "$am__api_version" in
+  1.11*) automake111=true ;;
+  *) automake111=false ;;
+esac
+ if $automake111; then
+  AUTOMAKE_1_11_TRUE=
+  AUTOMAKE_1_11_FALSE='#'
+else
+  AUTOMAKE_1_11_TRUE='#'
+  AUTOMAKE_1_11_FALSE=
+fi
+
+
+# Initialize libtool's configuration options.
+# we're not DLL-clean yet (i.e., don't properly use dllexport and dllimport)
+# _LT_SET_OPTION([LT_INIT],[win32-dll])
+case `pwd` in
+  *\ * | *\	*)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.4.6'
+macro_revision='2.4.6'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain=$ac_aux_dir/ltmain.sh
+
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
+else
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO ""
+}
+
+case $ECHO in
+  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+  enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+   then ac_cv_path_FGREP="$GREP -F"
+   else
+     if test -z "$FGREP"; then
+  ac_path_FGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in fgrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_FGREP" || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+  # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'FGREP' >> "conftest.nl"
+    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_FGREP="$ac_path_FGREP"
+      ac_path_FGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_FGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_FGREP"; then
+    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_FGREP=$FGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test yes = "$GCC"; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return, which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD=$ac_prog
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test yes = "$with_gnu_ld"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS=$lt_save_ifs
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD=$ac_dir/$ac_prog
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test no != "$with_gnu_ld" && break
+	;;
+      *)
+	test yes != "$with_gnu_ld" && break
+	;;
+      esac
+    fi
+  done
+  IFS=$lt_save_ifs
+else
+  lt_cv_path_LD=$LD # Let the user override the test with a path.
+fi
+fi
+
+LD=$lt_cv_path_LD
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if ${lt_cv_path_NM+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM=$NM
+else
+  lt_nm_to_check=${ac_tool_prefix}nm
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS=$lt_save_ifs
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm=$ac_dir/$lt_tmp_nm
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the 'sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	# MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
+	case $build_os in
+	mingw*) lt_bad_file=conftest.nm/nofile ;;
+	*) lt_bad_file=/dev/null ;;
+	esac
+	case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
+	*$lt_bad_file* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
+	  break 2
+	  ;;
+	*)
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break 2
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
+	  ;;
+	esac
+      fi
+    done
+    IFS=$lt_save_ifs
+  done
+  : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test no != "$lt_cv_path_NM"; then
+  NM=$lt_cv_path_NM
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in dumpbin "link -dump"
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DUMPBIN"; then
+  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$DUMPBIN" && break
+  done
+fi
+if test -z "$DUMPBIN"; then
+  ac_ct_DUMPBIN=$DUMPBIN
+  for ac_prog in dumpbin "link -dump"
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DUMPBIN"; then
+  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_DUMPBIN" && break
+done
+
+  if test "x$ac_ct_DUMPBIN" = x; then
+    DUMPBIN=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DUMPBIN=$ac_ct_DUMPBIN
+  fi
+fi
+
+    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols -headers"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+
+  if test : != "$DUMPBIN"; then
+    NM=$DUMPBIN
+  fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if ${lt_cv_nm_interface+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
+  cat conftest.out >&5
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if ${lt_cv_sys_max_cmd_len+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+    i=0
+  teststring=ABCD
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[	 ]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+       test undefined != "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test X`env echo "$teststring$teststring" 2>/dev/null` \
+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+	      test 17 != "$i" # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+
+fi
+
+if test -n "$lt_cv_sys_max_cmd_len"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+
+
+
+
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
+if ${lt_cv_to_host_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+        ;;
+    esac
+    ;;
+  *-*-cygwin* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_noop
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+        ;;
+    esac
+    ;;
+  * ) # unhandled hosts (and "normal" native builds)
+    lt_cv_to_host_file_cmd=func_convert_file_noop
+    ;;
+esac
+
+fi
+
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
+if ${lt_cv_to_tool_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  #assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+        ;;
+    esac
+    ;;
+esac
+
+fi
+
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if ${lt_cv_ld_reload_flag+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test yes != "$GCC"; then
+      reload_cmds=false
+    fi
+    ;;
+  darwin*)
+    if test yes = "$GCC"; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if ${lt_cv_deplibs_check_method+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# 'unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# that responds to the $file_magic_cmd with a given extended regex.
+# If you have 'file' or equivalent on your system and you're not sure
+# whether 'pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[45]*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  if ( file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    # Keep this pattern in sync with the one in func_win32_libid.
+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+cegcc*)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix[3-9]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd* | netbsdelf*-gnu)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+openbsd* | bitrig*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+os2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+  case $host_os in
+  mingw* | pw32*)
+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+      want_nocaseglob=yes
+    else
+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
+    fi
+    ;;
+  esac
+fi
+
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+  # two different shell functions defined in ltmain.sh;
+  # decide which one to use based on capabilities of $DLLTOOL
+  case `$DLLTOOL --help 2>&1` in
+  *--identify-strict*)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+    ;;
+  *)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+    ;;
+  esac
+  ;;
+*)
+  # fallback: assume linklib IS sharedlib
+  lt_cv_sharedlib_from_linklib_cmd=$ECHO
+  ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in ar
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$AR" && break
+  done
+fi
+if test -z "$AR"; then
+  ac_ct_AR=$AR
+  for ac_prog in ar
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AR="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_AR" && break
+done
+
+  if test "x$ac_ct_AR" = x; then
+    AR="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+fi
+
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ar_at_file=no
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
+      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+      if test 0 -eq "$ac_status"; then
+	# Ensure the archiver fails upon bogus file names.
+	rm -f conftest.$ac_objext libconftest.a
+	{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	if test 0 -ne "$ac_status"; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
+
+if test no = "$lt_cv_ar_at_file"; then
+  archiver_list_spec=
+else
+  archiver_list_spec=$lt_cv_ar_at_file
+fi
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  bitrig* | openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
+fi
+
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32* | cegcc*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*)
+  if test ia64 = "$host_cpu"; then
+    symcode='[ABCDEGRST]'
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[BCDEGRST]'
+  ;;
+osf*)
+  symcode='[BCDEGQRST]'
+  ;;
+solaris*)
+  symcode='[BDRT]'
+  ;;
+sco3.2v5*)
+  symcode='[DT]'
+  ;;
+sysv4.2uw2*)
+  symcode='[DT]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[ABDT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[ABCDGIRSTW]' ;;
+esac
+
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  # Gets list of data symbols to import.
+  lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
+  # Adjust the below global symbol transforms to fixup imported variables.
+  lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
+  lt_c_name_hook=" -e 's/^I .* \(.*\)$/  {\"\1\", (void *) 0},/p'"
+  lt_c_name_lib_hook="\
+  -e 's/^I .* \(lib.*\)$/  {\"\1\", (void *) 0},/p'\
+  -e 's/^I .* \(.*\)$/  {\"lib\1\", (void *) 0},/p'"
+else
+  # Disable hooks by default.
+  lt_cv_sys_global_symbol_to_import=
+  lt_cdecl_hook=
+  lt_c_name_hook=
+  lt_c_name_lib_hook=
+fi
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n"\
+$lt_cdecl_hook\
+" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
+$lt_c_name_hook\
+" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/p'"
+
+# Transform an extracted symbol line into symbol name with lib prefix and
+# symbol address.
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
+$lt_c_name_lib_hook\
+" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(lib.*\)$/  {\"\1\", (void *) \&\1},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"lib\1\", (void *) \&\1},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function,
+    # D for any global variable and I for any imported variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK '"\
+"     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
+"     /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
+"     /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
+"     {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
+"     s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
+  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT_DLSYM_CONST
+#elif defined __osf__
+/* This system does not cope well with relocations in const data.  */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+	  cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols.  */
+LT_DLSYM_CONST struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+	  $SED "s/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+	  cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_globsym_save_LIBS=$LIBS
+	  lt_globsym_save_CFLAGS=$CFLAGS
+	  LIBS=conftstm.$ac_objext
+	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+	    pipe_works=yes
+	  fi
+	  LIBS=$lt_globsym_save_LIBS
+	  CFLAGS=$lt_globsym_save_CFLAGS
+	else
+	  echo "cannot find nm_test_func in $nlist" >&5
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test yes = "$pipe_works"; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
+  nm_file_list_spec='@'
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
+# Check whether --with-sysroot was given.
+if test "${with_sysroot+set}" = set; then :
+  withval=$with_sysroot;
+else
+  with_sysroot=no
+fi
+
+
+lt_sysroot=
+case $with_sysroot in #(
+ yes)
+   if test yes = "$GCC"; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5
+$as_echo "$with_sysroot" >&6; }
+   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+   ;;
+esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5
+$as_echo_n "checking for a working dd... " >&6; }
+if ${ac_cv_path_lt_DD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+: ${lt_DD:=$DD}
+if test -z "$lt_DD"; then
+  ac_path_lt_DD_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in dd; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_lt_DD" || continue
+if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
+  cmp -s conftest.i conftest.out \
+  && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=:
+fi
+      $ac_path_lt_DD_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_lt_DD"; then
+    :
+  fi
+else
+  ac_cv_path_lt_DD=$lt_DD
+fi
+
+rm -f conftest.i conftest2.i conftest.out
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5
+$as_echo "$ac_cv_path_lt_DD" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5
+$as_echo_n "checking how to truncate binary pipes... " >&6; }
+if ${lt_cv_truncate_bin+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+lt_cv_truncate_bin=
+if "$ac_cv_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
+  cmp -s conftest.i conftest.out \
+  && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1"
+fi
+rm -f conftest.i conftest2.i conftest.out
+test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5
+$as_echo "$lt_cv_truncate_bin" >&6; }
+
+
+
+
+
+
+
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+func_cc_basename ()
+{
+    for cc_temp in $*""; do
+      case $cc_temp in
+        compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+        distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+        \-*) ;;
+        *) break;;
+      esac
+    done
+    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+}
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then :
+  enableval=$enable_libtool_lock;
+fi
+
+test no = "$enable_libtool_lock" || enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out what ABI is being produced by ac_compile, and set mode
+  # options accordingly.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+	HPUX_IA64_MODE=32
+	;;
+      *ELF-64*)
+	HPUX_IA64_MODE=64
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
+  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    if test yes = "$lt_cv_prog_gnu_ld"; then
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -melf32bsmip"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -melf32bmipn32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -melf64bmip"
+	;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -32"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -n32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -64"
+	  ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
+
+mips64*-*linux*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
+  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    emul=elf
+    case `/usr/bin/file conftest.$ac_objext` in
+      *32-bit*)
+	emul="${emul}32"
+	;;
+      *64-bit*)
+	emul="${emul}64"
+	;;
+    esac
+    case `/usr/bin/file conftest.$ac_objext` in
+      *MSB*)
+	emul="${emul}btsmip"
+	;;
+      *LSB*)
+	emul="${emul}ltsmip"
+	;;
+    esac
+    case `/usr/bin/file conftest.$ac_objext` in
+      *N32*)
+	emul="${emul}n32"
+	;;
+    esac
+    LD="${LD-ld} -m $emul"
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.  Note that the listed cases only cover the
+  # situations where additional linker options are needed (such as when
+  # doing 32-bit compilation for a host where ld defaults to 64-bit, or
+  # vice versa); the common cases where no linker options are needed do
+  # not appear in the list.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_i386_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    case `/usr/bin/file conftest.o` in
+	      *x86-64*)
+		LD="${LD-ld} -m elf32_x86_64"
+		;;
+	      *)
+		LD="${LD-ld} -m elf_i386"
+		;;
+	    esac
+	    ;;
+	  powerpc64le-*linux*)
+	    LD="${LD-ld} -m elf32lppclinux"
+	    ;;
+	  powerpc64-*linux*)
+	    LD="${LD-ld} -m elf32ppclinux"
+	    ;;
+	  s390x-*linux*)
+	    LD="${LD-ld} -m elf_s390"
+	    ;;
+	  sparc64-*linux*)
+	    LD="${LD-ld} -m elf32_sparc"
+	    ;;
+	esac
+	;;
+      *64-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_x86_64_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_x86_64"
+	    ;;
+	  powerpcle-*linux*)
+	    LD="${LD-ld} -m elf64lppc"
+	    ;;
+	  powerpc-*linux*)
+	    LD="${LD-ld} -m elf64ppc"
+	    ;;
+	  s390*-*linux*|s390*-*tpf*)
+	    LD="${LD-ld} -m elf64_s390"
+	    ;;
+	  sparc*-*linux*)
+	    LD="${LD-ld} -m elf64_sparc"
+	    ;;
+	esac
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS=$CFLAGS
+  CFLAGS="$CFLAGS -belf"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if ${lt_cv_cc_needs_belf+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_cc_needs_belf=yes
+else
+  lt_cv_cc_needs_belf=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+  if test yes != "$lt_cv_cc_needs_belf"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS=$SAVE_CFLAGS
+  fi
+  ;;
+*-*solaris*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*)
+        case $host in
+        i?86-*-solaris*|x86_64-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD=${LD-ld}_sol2
+        fi
+        ;;
+      *)
+	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+	  LD="${LD-ld} -64"
+	fi
+	;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks=$enable_libtool_lock
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
+set dummy ${ac_tool_prefix}mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$MANIFEST_TOOL"; then
+  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
+if test -n "$MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+$as_echo "$MANIFEST_TOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
+  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
+  # Extract the first word of "mt", so it can be a program name with args.
+set dummy mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_MANIFEST_TOOL"; then
+  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
+if test -n "$ac_ct_MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_MANIFEST_TOOL" = x; then
+    MANIFEST_TOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
+  fi
+else
+  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
+fi
+
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if ${lt_cv_path_mainfest_tool+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_path_mainfest_tool=no
+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+  cat conftest.err >&5
+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+    lt_cv_path_mainfest_tool=yes
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
+if test yes != "$lt_cv_path_mainfest_tool"; then
+  MANIFEST_TOOL=:
+fi
+
+
+
+
+
+
+  case $host_os in
+    rhapsody* | darwin*)
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+  ac_ct_DSYMUTIL=$DSYMUTIL
+  # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DSYMUTIL"; then
+  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DSYMUTIL" = x; then
+    DSYMUTIL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DSYMUTIL=$ac_ct_DSYMUTIL
+  fi
+else
+  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NMEDIT"; then
+  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+  ac_ct_NMEDIT=$NMEDIT
+  # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_NMEDIT"; then
+  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_NMEDIT="nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_NMEDIT" = x; then
+    NMEDIT=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    NMEDIT=$ac_ct_NMEDIT
+  fi
+else
+  NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LIPO"; then
+  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+  ac_ct_LIPO=$LIPO
+  # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_LIPO"; then
+  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_LIPO="lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_LIPO" = x; then
+    LIPO=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    LIPO=$ac_ct_LIPO
+  fi
+else
+  LIPO="$ac_cv_prog_LIPO"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL"; then
+  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+  ac_ct_OTOOL=$OTOOL
+  # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL"; then
+  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OTOOL="otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL" = x; then
+    OTOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL=$ac_ct_OTOOL
+  fi
+else
+  OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL64"; then
+  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+  ac_ct_OTOOL64=$OTOOL64
+  # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL64"; then
+  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OTOOL64="otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL64" = x; then
+    OTOOL64=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL64=$ac_ct_OTOOL64
+  fi
+else
+  OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if ${lt_cv_apple_cc_single_mod+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_apple_cc_single_mod=no
+      if test -z "$LT_MULTI_MODULE"; then
+	# By default we will add the -single_module flag. You can override
+	# by either setting the environment variable LT_MULTI_MODULE
+	# non-empty at configure time, or by adding -multi_module to the
+	# link flags.
+	rm -rf libconftest.dylib*
+	echo "int foo(void){return 1;}" > conftest.c
+	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+	# If there is a non-empty error log, and "single_module"
+	# appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+	  cat conftest.err >&5
+	# Otherwise, if the output was created with a 0 exit code from
+	# the compiler, it worked.
+	elif test -f libconftest.dylib && test 0 = "$_lt_result"; then
+	  lt_cv_apple_cc_single_mod=yes
+	else
+	  cat conftest.err >&5
+	fi
+	rm -rf libconftest.dylib*
+	rm -f conftest.*
+      fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if ${lt_cv_ld_exported_symbols_list+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_ld_exported_symbols_list=yes
+else
+  lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	LDFLAGS=$save_LDFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if ${lt_cv_ld_force_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+      echo "$AR cru libconftest.a conftest.o" >&5
+      $AR cru libconftest.a conftest.o 2>&5
+      echo "$RANLIB libconftest.a" >&5
+      $RANLIB libconftest.a 2>&5
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -s conftest.err && $GREP force_load conftest.err; then
+	cat conftest.err >&5
+      elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then
+	lt_cv_ld_force_load=yes
+      else
+	cat conftest.err >&5
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+    case $host_os in
+    rhapsody* | darwin1.[012])
+      _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+	  _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+	10.[012][,.]*)
+	  _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+	10.*)
+	  _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test yes = "$lt_cv_apple_cc_single_mod"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test yes = "$lt_cv_ld_exported_symbols_list"; then
+      _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib'
+    fi
+    if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+
+# func_munge_path_list VARIABLE PATH
+# -----------------------------------
+# VARIABLE is name of variable containing _space_ separated list of
+# directories to be munged by the contents of PATH, which is string
+# having a format:
+# "DIR[:DIR]:"
+#       string "DIR[ DIR]" will be prepended to VARIABLE
+# ":DIR[:DIR]"
+#       string "DIR[ DIR]" will be appended to VARIABLE
+# "DIRP[:DIRP]::[DIRA:]DIRA"
+#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
+#       "DIRA[ DIRA]" will be appended to VARIABLE
+# "DIR[:DIR]"
+#       VARIABLE will be replaced by "DIR[ DIR]"
+func_munge_path_list ()
+{
+    case x$2 in
+    x)
+        ;;
+    *:)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
+        ;;
+    x:*)
+        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    *::*)
+        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
+        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
+        ;;
+    *)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    esac
+}
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in dlfcn.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+# Set options
+
+
+
+        enable_dlopen=no
+
+
+  enable_win32_dll=no
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+  withval=$with_pic; lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      for lt_pkg in $withval; do
+	IFS=$lt_save_ifs
+	if test "X$lt_pkg" = "X$lt_p"; then
+	  pic_mode=yes
+	fi
+      done
+      IFS=$lt_save_ifs
+      ;;
+    esac
+else
+  pic_mode=default
+fi
+
+
+
+
+
+
+
+
+  # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+  enableval=$enable_fast_install; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      for pkg in $enableval; do
+	IFS=$lt_save_ifs
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS=$lt_save_ifs
+      ;;
+    esac
+else
+  enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+  shared_archive_member_spec=
+case $host,$enable_shared in
+power*-*-aix[5-9]*,yes)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5
+$as_echo_n "checking which variant of shared library versioning to provide... " >&6; }
+
+# Check whether --with-aix-soname was given.
+if test "${with_aix_soname+set}" = set; then :
+  withval=$with_aix_soname; case $withval in
+    aix|svr4|both)
+      ;;
+    *)
+      as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5
+      ;;
+    esac
+    lt_cv_with_aix_soname=$with_aix_soname
+else
+  if ${lt_cv_with_aix_soname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_with_aix_soname=aix
+fi
+
+    with_aix_soname=$lt_cv_with_aix_soname
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5
+$as_echo "$with_aix_soname" >&6; }
+  if test aix != "$with_aix_soname"; then
+    # For the AIX way of multilib, we name the shared archive member
+    # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
+    # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
+    # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
+    # the AIX toolchain works better with OBJECT_MODE set (default 32).
+    if test 64 = "${OBJECT_MODE-32}"; then
+      shared_archive_member_spec=shr_64
+    else
+      shared_archive_member_spec=shr
+    fi
+  fi
+  ;;
+*)
+  with_aix_soname=aix
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS=$ltmain
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}"; then
+   setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if ${lt_cv_objdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test set != "${COLLECT_NAMES+set}"; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a '.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+old_CC=$CC
+old_CFLAGS=$CFLAGS
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+func_cc_basename $compiler
+cc_basename=$func_cc_basename_result
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD=$MAGIC_CMD
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS=$lt_save_ifs
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/${ac_tool_prefix}file"; then
+      lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS=$lt_save_ifs
+  MAGIC_CMD=$lt_save_MAGIC_CMD
+  ;;
+esac
+fi
+
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD=$MAGIC_CMD
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS=$lt_save_ifs
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/file"; then
+      lt_cv_path_MAGIC_CMD=$ac_dir/"file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS=$lt_save_ifs
+  MAGIC_CMD=$lt_save_MAGIC_CMD
+  ;;
+esac
+fi
+
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+# Use C for the default configuration in the libtool script
+
+lt_save_CC=$CC
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag=
+
+if test yes = "$GCC"; then
+  case $cc_basename in
+  nvcc*)
+    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+  *)
+    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+  esac
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"  ## exclude from sc_useless_quotes_in_assignment
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+
+
+
+
+
+  lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+
+  if test yes = "$GCC"; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test ia64 = "$host_cpu"; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the '-m68020' flag to GCC prevents building anything better,
+            # like '-m68040'.
+            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      case $host_os in
+      os2*)
+	lt_prog_compiler_static='$wl-static'
+	;;
+      esac
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
+
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static=
+      ;;
+
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='-fPIC'
+	;;
+      esac
+      ;;
+
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      lt_prog_compiler_wl='-Xlinker '
+      if test -n "$lt_prog_compiler_pic"; then
+        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
+      fi
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test ia64 = "$host_cpu"; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      else
+	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      case $cc_basename in
+      nagfor*)
+        # NAG Fortran compiler
+        lt_prog_compiler_wl='-Wl,-Wl,,'
+        lt_prog_compiler_pic='-PIC'
+        lt_prog_compiler_static='-Bstatic'
+        ;;
+      esac
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      case $host_os in
+      os2*)
+	lt_prog_compiler_static='$wl-static'
+	;;
+      esac
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='$wl-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+      case $cc_basename in
+      # old Intel for x86_64, which still supported -KPIC.
+      ecc*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-KPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='--shared'
+	lt_prog_compiler_static='--static'
+	;;
+      nagfor*)
+	# NAG Fortran compiler
+	lt_prog_compiler_wl='-Wl,-Wl,,'
+	lt_prog_compiler_pic='-PIC'
+	lt_prog_compiler_static='-Bstatic'
+	;;
+      tcc*)
+	# Fabrice Bellard et al's Tiny C Compiler
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fPIC'
+	lt_prog_compiler_static='-static'
+	;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fpic'
+	lt_prog_compiler_static='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      xl* | bgxl* | bgf* | mpixl*)
+	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-qpic'
+	lt_prog_compiler_static='-qstaticlink'
+	;;
+      *)
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl=''
+	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl='-Qoption ld '
+	  ;;
+	*Sun\ C*)
+	  # Sun C 5.9
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl='-Wl,'
+	  ;;
+        *Intel*\ [CF]*Compiler*)
+	  lt_prog_compiler_wl='-Wl,'
+	  lt_prog_compiler_pic='-fPIC'
+	  lt_prog_compiler_static='-static'
+	  ;;
+	*Portland\ Group*)
+	  lt_prog_compiler_wl='-Wl,'
+	  lt_prog_compiler_pic='-fpic'
+	  lt_prog_compiler_static='-Bstatic'
+	  ;;
+	esac
+	;;
+      esac
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    rdos*)
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+	lt_prog_compiler_wl='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic='-Kconform_pic'
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_can_build_shared=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared=no
+      ;;
+    esac
+  fi
+
+case $host_os in
+  # For platforms that do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"  ## exclude from sc_useless_quotes_in_assignment
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test yes = "$lt_cv_prog_compiler_pic_works"; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works=no
+   save_LDFLAGS=$LDFLAGS
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS=$save_LDFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test yes = "$lt_cv_prog_compiler_static_works"; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+hard_links=nottested
+if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test no = "$hard_links"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  runpath_var=
+  allow_undefined_flag=
+  always_export_symbols=no
+  archive_cmds=
+  archive_expsym_cmds=
+  compiler_needs_object=no
+  enable_shared_with_static_runtimes=no
+  export_dynamic_flag_spec=
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  hardcode_automatic=no
+  hardcode_direct=no
+  hardcode_direct_absolute=no
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_separator=
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  inherit_rpath=no
+  link_all_deplibs=unknown
+  module_cmds=
+  module_expsym_cmds=
+  old_archive_from_new_cmds=
+  old_archive_from_expsyms_cmds=
+  thread_safe_flag_spec=
+  whole_archive_flag_spec=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ' (' and ')$', so one must not match beginning or
+  # end of line.  Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
+  # as well as any symbol that contains 'd'.
+  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test yes != "$GCC"; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd* | bitrig*)
+    with_gnu_ld=no
+    ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs=no
+    ;;
+  esac
+
+  ld_shlibs=yes
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
+  if test yes = "$with_gnu_ld"; then
+    case $host_os in
+      aix*)
+	# The AIX port of GNU ld has always aspired to compatibility
+	# with the native linker.  However, as the warning in the GNU ld
+	# block says, versions before 2.19.5* couldn't really create working
+	# shared libraries, regardless of the interface used.
+	case `$LD -v 2>&1` in
+	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+	  *)
+	    lt_use_gnu_ld_interface=yes
+	    ;;
+	esac
+	;;
+      *)
+	lt_use_gnu_ld_interface=yes
+	;;
+    esac
+  fi
+
+  if test yes = "$lt_use_gnu_ld_interface"; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='$wl'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+    export_dynamic_flag_spec='$wl--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+    else
+      whole_archive_flag_spec=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[3-9]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test ia64 != "$host_cpu"; then
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag=unsupported
+	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      export_dynamic_flag_spec='$wl--export-all-symbols'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file, use it as
+	# is; otherwise, prepend EXPORTS...
+	archive_expsym_cmds='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
+          cp $export_symbols $output_objdir/$soname.def;
+        else
+          echo EXPORTS > $output_objdir/$soname.def;
+          cat $export_symbols >> $output_objdir/$soname.def;
+        fi~
+        $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    haiku*)
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+      link_all_deplibs=yes
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      shrext_cmds=.dll
+      archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	prefix_cmds="$SED"~
+	if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	  prefix_cmds="$prefix_cmds -e 1d";
+	fi~
+	prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+      enable_shared_with_static_runtimes=yes
+      ;;
+
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+      export_dynamic_flag_spec='$wl-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      tmp_diet=no
+      if test linux-dietlibc = "$host_os"; then
+	case $cc_basename in
+	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
+	esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+	 && test no = "$tmp_diet"
+      then
+	tmp_addflag=' $pic_flag'
+	tmp_sharedflag='-shared'
+	case $cc_basename,$host_cpu in
+        pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95* | pgfortran*)
+					# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	lf95*)				# Lahey Fortran 8.1
+	  whole_archive_flag_spec=
+	  tmp_sharedflag='--shared' ;;
+        nagfor*)                        # NAGFOR 5.3
+          tmp_sharedflag='-Wl,-shared' ;;
+	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+	  tmp_sharedflag='-qmkshrobj'
+	  tmp_addflag= ;;
+	nvcc*)	# Cuda Compiler Driver 2.2
+	  whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	  compiler_needs_object=yes
+	  ;;
+	esac
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)			# Sun C 5.9
+	  whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	  compiler_needs_object=yes
+	  tmp_sharedflag='-G' ;;
+	*Sun\ F*)			# Sun Fortran 8.3
+	  tmp_sharedflag='-G' ;;
+	esac
+	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+
+        if test yes = "$supports_anon_versioning"; then
+          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+            cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+            echo "local: *; };" >> $output_objdir/$libname.ver~
+            $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
+        fi
+
+	case $cc_basename in
+	tcc*)
+	  export_dynamic_flag_spec='-rdynamic'
+	  ;;
+	xlf* | bgf* | bgxlf* | mpixlf*)
+	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+	  hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+	  if test yes = "$supports_anon_versioning"; then
+	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+              cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+              echo "local: *; };" >> $output_objdir/$libname.ver~
+              $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+	  fi
+	  ;;
+	esac
+      else
+        ld_shlibs=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  # For security reasons, it is highly recommended that you always
+	  # use absolute paths for naming shared libraries, and exclude the
+	  # DT_RUNPATH tag from executables and libraries.  But doing so
+	  # requires that you compile everything twice, which is a pain.
+	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	    hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+	  else
+	    ld_shlibs=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+    esac
+
+    if test no = "$ld_shlibs"; then
+      runpath_var=
+      hardcode_libdir_flag_spec=
+      export_dynamic_flag_spec=
+      whole_archive_flag_spec=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct=unsupported
+      fi
+      ;;
+
+    aix[4-9]*)
+      if test ia64 = "$host_cpu"; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to GNU nm, but means don't demangle to AIX nm.
+	# Without the "-l" option, or with the "-B" option, AIX nm treats
+	# weak defined symbols like other global defined symbols, whereas
+	# GNU nm marks them as "W".
+	# While the 'weak' keyword is ignored in the Export File, we need
+	# it in the Import File for the 'aix-soname' feature, so we have
+	# to replace the "-B" option with "-P" for AIX nm.
+	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# have runtime linking enabled, and use it for executables.
+	# For shared libraries, we enable/disable runtime linking
+	# depending on the kind of the shared library created -
+	# when "with_aix_soname,aix_use_runtimelinking" is:
+	# "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
+	# "aix,yes"  lib.so          shared, rtl:yes, for executables
+	#            lib.a           static archive
+	# "both,no"  lib.so.V(shr.o) shared, rtl:yes
+	#            lib.a(lib.so.V) shared, rtl:no,  for executables
+	# "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
+	#            lib.a(lib.so.V) shared, rtl:no
+	# "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
+	#            lib.a           static archive
+	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+	  for ld_flag in $LDFLAGS; do
+	  if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
+	    aix_use_runtimelinking=yes
+	    break
+	  fi
+	  done
+	  if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
+	    # With aix-soname=svr4, we create the lib.so.V shared archives only,
+	    # so we don't have lib.a shared libs to link our executables.
+	    # We have to force runtime linking in this case.
+	    aix_use_runtimelinking=yes
+	    LDFLAGS="$LDFLAGS -Wl,-brtl"
+	  fi
+	  ;;
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_direct_absolute=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      file_list_spec='$wl-f,'
+      case $with_aix_soname,$aix_use_runtimelinking in
+      aix,*) ;; # traditional, no import file
+      svr4,* | *,yes) # use import file
+	# The Import File defines what to hardcode.
+	hardcode_direct=no
+	hardcode_direct_absolute=no
+	;;
+      esac
+
+      if test yes = "$GCC"; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`$CC -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	  # We have reworked collect2
+	  :
+	  else
+	  # We have old collect2
+	  hardcode_direct=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  hardcode_minus_L=yes
+	  hardcode_libdir_flag_spec='-L$libdir'
+	  hardcode_libdir_separator=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test yes = "$aix_use_runtimelinking"; then
+	  shared_flag="$shared_flag "'$wl-G'
+	fi
+	# Need to ensure runtime linking is disabled for the traditional
+	# shared library, or the linker may eventually find shared libraries
+	# /with/ Import File - we do not want to mix them.
+	shared_flag_aix='-shared'
+	shared_flag_svr4='-shared $wl-G'
+      else
+	# not using gcc
+	if test ia64 = "$host_cpu"; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test yes = "$aix_use_runtimelinking"; then
+	    shared_flag='$wl-G'
+	  else
+	    shared_flag='$wl-bM:SRE'
+	  fi
+	  shared_flag_aix='$wl-bM:SRE'
+	  shared_flag_svr4='$wl-G'
+	fi
+      fi
+
+      export_dynamic_flag_spec='$wl-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols=yes
+      if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=/usr/lib:/lib
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath_
+fi
+
+        hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
+        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
+      else
+	if test ia64 = "$host_cpu"; then
+	  hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag="-z nodefs"
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an
+	 # empty executable.
+	 if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=/usr/lib:/lib
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath_
+fi
+
+	 hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag=' $wl-bernotok'
+	  allow_undefined_flag=' $wl-berok'
+	  if test yes = "$with_gnu_ld"; then
+	    # We only use this code for GNU lds that support --whole-archive.
+	    whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive'
+	  else
+	    # Exported symbols can be pulled into shared objects from archives
+	    whole_archive_flag_spec='$convenience'
+	  fi
+	  archive_cmds_need_lc=yes
+	  archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
+	  # -brtl affects multiple linker settings, -berok does not and is overridden later
+	  compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`'
+	  if test svr4 != "$with_aix_soname"; then
+	    # This is similar to how AIX traditionally builds its shared libraries.
+	    archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
+	  fi
+	  if test aix != "$with_aix_soname"; then
+	    archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) >  [...]
+	  else
+	    # used by -dlpreopen to get the symbols
+	    archive_expsym_cmds="$archive_expsym_cmds"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
+	  fi
+	  archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      case $cc_basename in
+      cl*)
+	# Native MSVC
+	hardcode_libdir_flag_spec=' '
+	allow_undefined_flag=unsupported
+	always_export_symbols=yes
+	file_list_spec='@'
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=.dll
+	# FIXME: Setting linknames here is a bad hack.
+	archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+	archive_expsym_cmds='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
+            cp "$export_symbols" "$output_objdir/$soname.def";
+            echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+          else
+            $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+          fi~
+          $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+          linknames='
+	# The linker will not automatically build a static lib if we build a DLL.
+	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
+	enable_shared_with_static_runtimes=yes
+	exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+	# Don't use ranlib
+	old_postinstall_cmds='chmod 644 $oldlib'
+	postlink_cmds='lt_outputfile="@OUTPUT@"~
+          lt_tool_outputfile="@TOOL_OUTPUT@"~
+          case $lt_outputfile in
+            *.exe|*.EXE) ;;
+            *)
+              lt_outputfile=$lt_outputfile.exe
+              lt_tool_outputfile=$lt_tool_outputfile.exe
+              ;;
+          esac~
+          if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+            $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+            $RM "$lt_outputfile.manifest";
+          fi'
+	;;
+      *)
+	# Assume MSVC wrapper
+	hardcode_libdir_flag_spec=' '
+	allow_undefined_flag=unsupported
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=.dll
+	# FIXME: Setting linknames here is a bad hack.
+	archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+	# The linker will automatically build a .lib file if we build a DLL.
+	old_archive_from_new_cmds='true'
+	# FIXME: Should let the user specify the lib program.
+	old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+	enable_shared_with_static_runtimes=yes
+	;;
+      esac
+      ;;
+
+    darwin* | rhapsody*)
+
+
+  archive_cmds_need_lc=no
+  hardcode_direct=no
+  hardcode_automatic=yes
+  hardcode_shlibpath_var=unsupported
+  if test yes = "$lt_cv_ld_force_load"; then
+    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
+  else
+    whole_archive_flag_spec=''
+  fi
+  link_all_deplibs=yes
+  allow_undefined_flag=$_lt_dar_allow_undefined
+  case $cc_basename in
+     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test yes = "$_lt_dar_can_shared"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+    archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+    module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
+
+  else
+  ld_shlibs=no
+  fi
+
+      ;;
+
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2.*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    hpux9*)
+      if test yes = "$GCC"; then
+	archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec='$wl+b $wl$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      export_dynamic_flag_spec='$wl-E'
+      ;;
+
+    hpux10*)
+      if test yes,no = "$GCC,$with_gnu_ld"; then
+	archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test no = "$with_gnu_ld"; then
+	hardcode_libdir_flag_spec='$wl+b $wl$libdir'
+	hardcode_libdir_separator=:
+	hardcode_direct=yes
+	hardcode_direct_absolute=yes
+	export_dynamic_flag_spec='$wl-E'
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	hardcode_minus_L=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test yes,no = "$GCC,$with_gnu_ld"; then
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+
+	  # Older versions of the 11.00 compiler do not understand -b yet
+	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if ${lt_cv_prog_compiler__b+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler__b=no
+   save_LDFLAGS=$LDFLAGS
+   LDFLAGS="$LDFLAGS -b"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler__b=yes
+       fi
+     else
+       lt_cv_prog_compiler__b=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS=$save_LDFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
+
+if test yes = "$lt_cv_prog_compiler__b"; then
+    archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+else
+    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+fi
+
+	  ;;
+	esac
+      fi
+      if test no = "$with_gnu_ld"; then
+	hardcode_libdir_flag_spec='$wl+b $wl$libdir'
+	hardcode_libdir_separator=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  hardcode_direct=no
+	  hardcode_shlibpath_var=no
+	  ;;
+	*)
+	  hardcode_direct=yes
+	  hardcode_direct_absolute=yes
+	  export_dynamic_flag_spec='$wl-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test yes = "$GCC"; then
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+	# Try to use the -exported_symbol ld option, if it does not
+	# work, assume that -exports_file does not work either and
+	# implicitly export all symbols.
+	# This should be the same for all languages, so no per-tag cache variable.
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if ${lt_cv_irix_exported_symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  save_LDFLAGS=$LDFLAGS
+	   LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
+	   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo (void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_irix_exported_symbol=yes
+else
+  lt_cv_irix_exported_symbol=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+           LDFLAGS=$save_LDFLAGS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+	if test yes = "$lt_cv_irix_exported_symbol"; then
+          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
+	fi
+	link_all_deplibs=no
+      else
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+      hardcode_libdir_separator=:
+      inherit_rpath=yes
+      link_all_deplibs=yes
+      ;;
+
+    linux*)
+      case $cc_basename in
+      tcc*)
+	# Fabrice Bellard et al's Tiny C Compiler
+	ld_shlibs=yes
+	archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      esac
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd* | bitrig*)
+      if test -f /usr/libexec/ld.so; then
+	hardcode_direct=yes
+	hardcode_shlibpath_var=no
+	hardcode_direct_absolute=yes
+	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
+	  hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+	  export_dynamic_flag_spec='$wl-E'
+	else
+	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+	fi
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      shrext_cmds=.dll
+      archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	prefix_cmds="$SED"~
+	if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	  prefix_cmds="$prefix_cmds -e 1d";
+	fi~
+	prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+      enable_shared_with_static_runtimes=yes
+      ;;
+
+    osf3*)
+      if test yes = "$GCC"; then
+	allow_undefined_flag=' $wl-expect_unresolved $wl\*'
+	archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+      hardcode_libdir_separator=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test yes = "$GCC"; then
+	allow_undefined_flag=' $wl-expect_unresolved $wl\*'
+	archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+	hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+          $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_separator=:
+      ;;
+
+    solaris*)
+      no_undefined_flag=' -z defs'
+      if test yes = "$GCC"; then
+	wlarc='$wl'
+	archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+          $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+	case `$CC -V 2>&1` in
+	*"Compilers 5.0"*)
+	  wlarc=''
+	  archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+            $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+	  ;;
+	*)
+	  wlarc='$wl'
+	  archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+            $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+	  ;;
+	esac
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+	# The compiler driver will combine and reorder linker options,
+	# but understands '-z linker_flag'.  GCC discards it without '$wl',
+	# but is careful enough not to reorder.
+	# Supported since Solaris 2.6 (maybe 2.5.1?)
+	if test yes = "$GCC"; then
+	  whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
+	else
+	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+	fi
+	;;
+      esac
+      link_all_deplibs=yes
+      ;;
+
+    sunos4*)
+      if test sequent = "$host_vendor"; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds='$CC -r -o $output$reload_objs'
+	  hardcode_direct=no
+        ;;
+	motorola)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag='$wl-z,text'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
+
+      if test yes = "$GCC"; then
+	archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We CANNOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag='$wl-z,text'
+      allow_undefined_flag='$wl-z,nodefs'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='$wl-R,$libdir'
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      export_dynamic_flag_spec='$wl-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test yes = "$GCC"; then
+	archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      ld_shlibs=no
+      ;;
+    esac
+
+    if test sni = "$host_vendor"; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+	export_dynamic_flag_spec='$wl-Blargedynsym'
+	;;
+      esac
+    fi
+  fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test no = "$ld_shlibs" && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
+
+  if test yes,yes = "$GCC,$enable_shared"; then
+    case $archive_cmds in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl
+	  pic_flag=$lt_prog_compiler_pic
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag
+	  allow_undefined_flag=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc=no
+	  else
+	    lt_cv_archive_cmds_need_lc=yes
+	  fi
+	  allow_undefined_flag=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+if test yes = "$GCC"; then
+  case $host_os in
+    darwin*) lt_awk_arg='/^libraries:/,/LR/' ;;
+    *) lt_awk_arg='/^libraries:/' ;;
+  esac
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;;
+    *) lt_sed_strip_eq='s|=/|/|g' ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary...
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  # ...but if some path component already ends with the multilib dir we assume
+  # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer).
+  case "$lt_multi_os_dir; $lt_search_path_spec " in
+  "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*)
+    lt_multi_os_dir=
+    ;;
+  esac
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir"
+    elif test -n "$lt_multi_os_dir"; then
+      test -d "$lt_sys_path" && \
+	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS = " "; FS = "/|\n";} {
+  lt_foo = "";
+  lt_count = 0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo = "/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[lt_foo]++; }
+  if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's|/\([A-Za-z]:\)|\1|g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=.so
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+
+
+case $host_os in
+aix3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='$libname$release$shared_ext$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test ia64 = "$host_cpu"; then
+    # AIX 5 supports IA64
+    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line '#! .'.  This would cause the generated library to
+    # depend on '.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # Using Import Files as archive members, it is possible to support
+    # filename-based versioning of shared library archives on AIX. While
+    # this would work for both with and without runtime linking, it will
+    # prevent static linking of such archives. So we do filename-based
+    # shared library versioning with .so extension only, which is used
+    # when both runtime linking and shared linking is enabled.
+    # Unfortunately, runtime linking may impact performance, so we do
+    # not want this to be the default eventually. Also, we use the
+    # versioned .so libs for executables only if there is the -brtl
+    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
+    # To allow for filename-based versioning support, we need to create
+    # libNAME.so.V as an archive file, containing:
+    # *) an Import File, referring to the versioned filename of the
+    #    archive as well as the shared archive member, telling the
+    #    bitwidth (32 or 64) of that shared object, and providing the
+    #    list of exported symbols of that shared object, eventually
+    #    decorated with the 'weak' keyword
+    # *) the shared object with the F_LOADONLY flag set, to really avoid
+    #    it being seen by the linker.
+    # At run time we better use the real file rather than another symlink,
+    # but for link time we create the symlink libNAME.so -> libNAME.so.V
+
+    case $with_aix_soname,$aix_use_runtimelinking in
+    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    aix,yes) # traditional libtool
+      dynamic_linker='AIX unversionable lib.so'
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      ;;
+    aix,no) # traditional AIX only
+      dynamic_linker='AIX lib.a(lib.so.V)'
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      ;;
+    svr4,*) # full svr4 only
+      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,yes) # both, prefer svr4
+      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # unpreferred sharedlib libNAME.a needs extra handling
+      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
+      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,no) # both, prefer aix
+      dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)"
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
+      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
+      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
+      ;;
+    esac
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='$libname$shared_ext'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=.dll
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+    library_names_spec='$libname.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec=$LIB
+      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
+    ;;
+
+  *)
+    # Assume MSVC wrapper
+    library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
+    dynamic_linker='Win32 ld.exe'
+    ;;
+  esac
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$major$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[23].*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      soname_spec='$libname$release$shared_ext$major'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2.*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+haiku*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    if test 32 = "$HPUX_IA64_MODE"; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
+    fi
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[3-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test yes = "$lt_cv_prog_gnu_ld"; then
+		version_type=linux # correct to gnu/linux during the next big refactor
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
+  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+linux*android*)
+  version_type=none # Android doesn't support versioned libraries.
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext'
+  soname_spec='$libname$release$shared_ext'
+  finish_cmds=
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  dynamic_linker='Android linker'
+  # Don't embed -rpath directories since the linker doesn't support them.
+  hardcode_libdir_flag_spec='-L$libdir'
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
+fi
+
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Ideally, we could use ldconfig to report *all* directores which are
+  # searched for libraries, however this is still not possible.  Aside from not
+  # being certain /sbin/ldconfig is available, command
+  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
+  # even though it is searched at run-time.  Try to do the best guess by
+  # appending ld.so.conf contents (and includes) to the search path.
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd* | bitrig*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec=/usr/lib
+  need_lib_prefix=no
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+    need_version=no
+  else
+    need_version=yes
+  fi
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+os2*)
+  libname_spec='$name'
+  version_type=windows
+  shrext_cmds=.dll
+  need_version=no
+  need_lib_prefix=no
+  # OS/2 can only load a DLL with a base name of 8 characters or less.
+  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
+    v=$($ECHO $release$versuffix | tr -d .-);
+    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
+    $ECHO $n$v`$shared_ext'
+  library_names_spec='${libname}_dll.$libext'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=BEGINLIBPATH
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  postinstall_cmds='base_file=`basename \$file`~
+    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
+    dldir=$destdir/`dirname \$dlpath`~
+    test -d \$dldir || mkdir -p \$dldir~
+    $install_prog $dir/$dlname \$dldir/$dlname~
+    chmod a+x \$dldir/$dlname~
+    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+    fi'
+  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
+    dlpath=$dir/\$dldll~
+    $RM \$dlpath'
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test yes = "$with_gnu_ld"; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec; then
+    version_type=linux # correct to gnu/linux during the next big refactor
+    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
+    soname_spec='$libname$shared_ext.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=sco
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test yes = "$with_gnu_ld"; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test no = "$dynamic_linker" && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test yes = "$GCC"; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
+  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
+fi
+
+if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
+  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
+fi
+
+# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
+configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
+
+# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
+func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
+
+# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
+configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+   test -n "$runpath_var" ||
+   test yes = "$hardcode_automatic"; then
+
+  # We can hardcode non-existent directories.
+  if test no != "$hardcode_direct" &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" &&
+     test no != "$hardcode_minus_L"; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test relink = "$hardcode_action" ||
+   test yes = "$inherit_rpath"; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test yes = "$shlibpath_overrides_runpath" ||
+     test no = "$enable_shared"; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+  if test yes != "$enable_dlopen"; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen=load_add_on
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen=LoadLibrary
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen=dlopen
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+    # if libdl is installed we need to link against it
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
+else
+
+    lt_cv_dlopen=dyld
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+    ;;
+
+  tpf*)
+    # Don't try to run any link tests for TPF.  We know it's impossible
+    # because TPF is a cross-compiler, and we know how we open DSOs.
+    lt_cv_dlopen=dlopen
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=no
+    ;;
+
+  *)
+    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
+  lt_cv_dlopen=shl_load
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_shl_load=yes
+else
+  ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+  lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld
+else
+  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
+  lt_cv_dlopen=dlopen
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if ${ac_cv_lib_svld_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_svld_dlopen=yes
+else
+  ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if ${ac_cv_lib_dld_dld_link+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_dld_link=yes
+else
+  ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+  lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test no = "$lt_cv_dlopen"; then
+    enable_dlopen=no
+  else
+    enable_dlopen=yes
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS=$CPPFLAGS
+    test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS=$LDFLAGS
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS=$LIBS
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  	  if test yes = "$cross_compiling"; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisibility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+    if test yes = "$lt_cv_dlopen_self"; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self_static+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  	  if test yes = "$cross_compiling"; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisibility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+    fi
+
+    CPPFLAGS=$save_CPPFLAGS
+    LDFLAGS=$save_LDFLAGS
+    LIBS=$save_LIBS
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP"; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+    ;;
+  *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+  # Report what library types will actually be built
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+  test no = "$can_build_shared" && enable_shared=no
+
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
+  case $host_os in
+  aix3*)
+    test yes = "$enable_shared" && enable_static=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
+    fi
+    ;;
+
+  aix[4-9]*)
+    if test ia64 != "$host_cpu"; then
+      case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+      yes,aix,yes) ;;			# shared object as lib.so file only
+      yes,svr4,*) ;;			# shared object as lib.so archive member only
+      yes,*) enable_static=no ;;	# shared object in lib.a archive as well
+      esac
+    fi
+    ;;
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+  # Make sure either enable_shared or enable_static is yes.
+  test yes = "$enable_shared" || enable_static=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC=$lt_save_CC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+        ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+
+# Checks for programs.
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+else
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+	 CXXFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CXX"  am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
+else
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
+fi
+
+
+
+
+func_stripname_cnf ()
+{
+  case $2 in
+  .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;;
+  *)  func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;;
+  esac
+} # func_stripname_cnf
+
+      if test -n "$CXX" && ( test no != "$CXX" &&
+    ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) ||
+    (test g++ != "$CXX"))); then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
+$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
+if test -z "$CXXCPP"; then
+  if ${ac_cv_prog_CXXCPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+  CXXCPP=$ac_cv_prog_CXXCPP
+else
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
+$as_echo "$CXXCPP" >&6; }
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+else
+  _lt_caught_CXX_error=yes
+fi
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+compiler_needs_object_CXX=no
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_direct_absolute_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_shlibpath_var_CXX=unsupported
+hardcode_automatic_CXX=no
+inherit_rpath_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+reload_flag_CXX=$reload_flag
+reload_cmds_CXX=$reload_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test yes != "$_lt_caught_CXX_error"; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="int some_variable = 0;"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+  # save warnings/boilerplate of simple test code
+  ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+  ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC=$CC
+  lt_save_CFLAGS=$CFLAGS
+  lt_save_LD=$LD
+  lt_save_GCC=$GCC
+  GCC=$GXX
+  lt_save_with_gnu_ld=$with_gnu_ld
+  lt_save_path_LD=$lt_cv_path_LD
+  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+  else
+    $as_unset lt_cv_prog_gnu_ld
+  fi
+  if test -n "${lt_cv_path_LDCXX+set}"; then
+    lt_cv_path_LD=$lt_cv_path_LDCXX
+  else
+    $as_unset lt_cv_path_LD
+  fi
+  test -z "${LDCXX+set}" || LD=$LDCXX
+  CC=${CXX-"c++"}
+  CFLAGS=$CXXFLAGS
+  compiler=$CC
+  compiler_CXX=$CC
+  func_cc_basename $compiler
+cc_basename=$func_cc_basename_result
+
+
+  if test -n "$compiler"; then
+    # We don't want -fno-exception when compiling C++ code, so set the
+    # no_builtin_flag separately
+    if test yes = "$GXX"; then
+      lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+    else
+      lt_prog_compiler_no_builtin_flag_CXX=
+    fi
+
+    if test yes = "$GXX"; then
+      # Set up default GNU C++ configuration
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test yes = "$GCC"; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return, which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD=$ac_prog
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test yes = "$with_gnu_ld"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS=$lt_save_ifs
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD=$ac_dir/$ac_prog
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test no != "$with_gnu_ld" && break
+	;;
+      *)
+	test yes != "$with_gnu_ld" && break
+	;;
+      esac
+    fi
+  done
+  IFS=$lt_save_ifs
+else
+  lt_cv_path_LD=$LD # Let the user override the test with a path.
+fi
+fi
+
+LD=$lt_cv_path_LD
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+      # Check if GNU C++ uses GNU ld as the underlying linker, since the
+      # archiving commands below assume that GNU ld is being used.
+      if test yes = "$with_gnu_ld"; then
+        archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+        archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+
+        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+        export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+
+        # If archive_cmds runs LD, not CC, wlarc should be empty
+        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+        #     investigate it a little bit more. (MM)
+        wlarc='$wl'
+
+        # ancient GNU ld didn't support --whole-archive et. al.
+        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+	  $GREP 'no-whole-archive' > /dev/null; then
+          whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+        else
+          whole_archive_flag_spec_CXX=
+        fi
+      else
+        with_gnu_ld=no
+        wlarc=
+
+        # A generic and very simple default shared library creation
+        # command for GNU C++ for the case where it uses the native
+        # linker, instead of GNU ld.  If possible, this setting should
+        # overridden to take advantage of the native linker features on
+        # the platform it is being used on.
+        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+      fi
+
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+    else
+      GXX=no
+      with_gnu_ld=no
+      wlarc=
+    fi
+
+    # PORTME: fill in a description of your system's C++ link characteristics
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+    ld_shlibs_CXX=yes
+    case $host_os in
+      aix3*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+      aix[4-9]*)
+        if test ia64 = "$host_cpu"; then
+          # On IA64, the linker does run time linking by default, so we don't
+          # have to do anything special.
+          aix_use_runtimelinking=no
+          exp_sym_flag='-Bexport'
+          no_entry_flag=
+        else
+          aix_use_runtimelinking=no
+
+          # Test if we are trying to use run time linking or normal
+          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+          # have runtime linking enabled, and use it for executables.
+          # For shared libraries, we enable/disable runtime linking
+          # depending on the kind of the shared library created -
+          # when "with_aix_soname,aix_use_runtimelinking" is:
+          # "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
+          # "aix,yes"  lib.so          shared, rtl:yes, for executables
+          #            lib.a           static archive
+          # "both,no"  lib.so.V(shr.o) shared, rtl:yes
+          #            lib.a(lib.so.V) shared, rtl:no,  for executables
+          # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
+          #            lib.a(lib.so.V) shared, rtl:no
+          # "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
+          #            lib.a           static archive
+          case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+	    for ld_flag in $LDFLAGS; do
+	      case $ld_flag in
+	      *-brtl*)
+	        aix_use_runtimelinking=yes
+	        break
+	        ;;
+	      esac
+	    done
+	    if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
+	      # With aix-soname=svr4, we create the lib.so.V shared archives only,
+	      # so we don't have lib.a shared libs to link our executables.
+	      # We have to force runtime linking in this case.
+	      aix_use_runtimelinking=yes
+	      LDFLAGS="$LDFLAGS -Wl,-brtl"
+	    fi
+	    ;;
+          esac
+
+          exp_sym_flag='-bexport'
+          no_entry_flag='-bnoentry'
+        fi
+
+        # When large executables or shared objects are built, AIX ld can
+        # have problems creating the table of contents.  If linking a library
+        # or program results in "error TOC overflow" add -mminimal-toc to
+        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+        archive_cmds_CXX=''
+        hardcode_direct_CXX=yes
+        hardcode_direct_absolute_CXX=yes
+        hardcode_libdir_separator_CXX=':'
+        link_all_deplibs_CXX=yes
+        file_list_spec_CXX='$wl-f,'
+        case $with_aix_soname,$aix_use_runtimelinking in
+        aix,*) ;;	# no import file
+        svr4,* | *,yes) # use import file
+          # The Import File defines what to hardcode.
+          hardcode_direct_CXX=no
+          hardcode_direct_absolute_CXX=no
+          ;;
+        esac
+
+        if test yes = "$GXX"; then
+          case $host_os in aix4.[012]|aix4.[012].*)
+          # We only want to do this on AIX 4.2 and lower, the check
+          # below for broken collect2 doesn't work under 4.3+
+	  collect2name=`$CC -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	    # We have reworked collect2
+	    :
+	  else
+	    # We have old collect2
+	    hardcode_direct_CXX=unsupported
+	    # It fails to find uninstalled libraries when the uninstalled
+	    # path is not listed in the libpath.  Setting hardcode_minus_L
+	    # to unsupported forces relinking
+	    hardcode_minus_L_CXX=yes
+	    hardcode_libdir_flag_spec_CXX='-L$libdir'
+	    hardcode_libdir_separator_CXX=
+	  fi
+          esac
+          shared_flag='-shared'
+	  if test yes = "$aix_use_runtimelinking"; then
+	    shared_flag=$shared_flag' $wl-G'
+	  fi
+	  # Need to ensure runtime linking is disabled for the traditional
+	  # shared library, or the linker may eventually find shared libraries
+	  # /with/ Import File - we do not want to mix them.
+	  shared_flag_aix='-shared'
+	  shared_flag_svr4='-shared $wl-G'
+        else
+          # not using gcc
+          if test ia64 = "$host_cpu"; then
+	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	  # chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+          else
+	    if test yes = "$aix_use_runtimelinking"; then
+	      shared_flag='$wl-G'
+	    else
+	      shared_flag='$wl-bM:SRE'
+	    fi
+	    shared_flag_aix='$wl-bM:SRE'
+	    shared_flag_svr4='$wl-G'
+          fi
+        fi
+
+        export_dynamic_flag_spec_CXX='$wl-bexpall'
+        # It seems that -bexpall does not export symbols beginning with
+        # underscore (_), so it is better to generate a list of symbols to
+	# export.
+        always_export_symbols_CXX=yes
+	if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
+          # Warning - without using the other runtime loading flags (-brtl),
+          # -berok will link without error, but may produce a broken library.
+          # The "-G" linker flag allows undefined symbols.
+          no_undefined_flag_CXX='-bernotok'
+          # Determine the default libpath from the value encoded in an empty
+          # executable.
+          if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath__CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=/usr/lib:/lib
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath__CXX
+fi
+
+          hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath"
+
+          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
+        else
+          if test ia64 = "$host_cpu"; then
+	    hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib'
+	    allow_undefined_flag_CXX="-z nodefs"
+	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
+          else
+	    # Determine the default libpath from the value encoded in an
+	    # empty executable.
+	    if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath__CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=/usr/lib:/lib
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath__CXX
+fi
+
+	    hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath"
+	    # Warning - without using the other run time loading flags,
+	    # -berok will link without error, but may produce a broken library.
+	    no_undefined_flag_CXX=' $wl-bernotok'
+	    allow_undefined_flag_CXX=' $wl-berok'
+	    if test yes = "$with_gnu_ld"; then
+	      # We only use this code for GNU lds that support --whole-archive.
+	      whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive'
+	    else
+	      # Exported symbols can be pulled into shared objects from archives
+	      whole_archive_flag_spec_CXX='$convenience'
+	    fi
+	    archive_cmds_need_lc_CXX=yes
+	    archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
+	    # -brtl affects multiple linker settings, -berok does not and is overridden later
+	    compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`'
+	    if test svr4 != "$with_aix_soname"; then
+	      # This is similar to how AIX traditionally builds its shared
+	      # libraries. Need -bnortl late, we may have -brtl in LDFLAGS.
+	      archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
+	    fi
+	    if test aix != "$with_aix_soname"; then
+	      archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_sy [...]
+	    else
+	      # used by -dlpreopen to get the symbols
+	      archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
+	    fi
+	    archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d'
+          fi
+        fi
+        ;;
+
+      beos*)
+	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	  allow_undefined_flag_CXX=unsupported
+	  # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	  # support --undefined.  This deserves some investigation.  FIXME
+	  archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	else
+	  ld_shlibs_CXX=no
+	fi
+	;;
+
+      chorus*)
+        case $cc_basename in
+          *)
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	  ;;
+        esac
+        ;;
+
+      cygwin* | mingw* | pw32* | cegcc*)
+	case $GXX,$cc_basename in
+	,cl* | no,cl*)
+	  # Native MSVC
+	  # hardcode_libdir_flag_spec is actually meaningless, as there is
+	  # no search path for DLLs.
+	  hardcode_libdir_flag_spec_CXX=' '
+	  allow_undefined_flag_CXX=unsupported
+	  always_export_symbols_CXX=yes
+	  file_list_spec_CXX='@'
+	  # Tell ltmain to make .lib files, not .a files.
+	  libext=lib
+	  # Tell ltmain to make .dll files, not .so files.
+	  shrext_cmds=.dll
+	  # FIXME: Setting linknames here is a bad hack.
+	  archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+	  archive_expsym_cmds_CXX='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
+              cp "$export_symbols" "$output_objdir/$soname.def";
+              echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+            else
+              $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+            fi~
+            $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+            linknames='
+	  # The linker will not automatically build a static lib if we build a DLL.
+	  # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true'
+	  enable_shared_with_static_runtimes_CXX=yes
+	  # Don't use ranlib
+	  old_postinstall_cmds_CXX='chmod 644 $oldlib'
+	  postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~
+            lt_tool_outputfile="@TOOL_OUTPUT@"~
+            case $lt_outputfile in
+              *.exe|*.EXE) ;;
+              *)
+                lt_outputfile=$lt_outputfile.exe
+                lt_tool_outputfile=$lt_tool_outputfile.exe
+                ;;
+            esac~
+            func_to_tool_file "$lt_outputfile"~
+            if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+              $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+              $RM "$lt_outputfile.manifest";
+            fi'
+	  ;;
+	*)
+	  # g++
+	  # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+	  # as there is no search path for DLLs.
+	  hardcode_libdir_flag_spec_CXX='-L$libdir'
+	  export_dynamic_flag_spec_CXX='$wl--export-all-symbols'
+	  allow_undefined_flag_CXX=unsupported
+	  always_export_symbols_CXX=no
+	  enable_shared_with_static_runtimes_CXX=yes
+
+	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	    # If the export-symbols file already is a .def file, use it as
+	    # is; otherwise, prepend EXPORTS...
+	    archive_expsym_cmds_CXX='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
+              cp $export_symbols $output_objdir/$soname.def;
+            else
+              echo EXPORTS > $output_objdir/$soname.def;
+              cat $export_symbols >> $output_objdir/$soname.def;
+            fi~
+            $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	  else
+	    ld_shlibs_CXX=no
+	  fi
+	  ;;
+	esac
+	;;
+      darwin* | rhapsody*)
+
+
+  archive_cmds_need_lc_CXX=no
+  hardcode_direct_CXX=no
+  hardcode_automatic_CXX=yes
+  hardcode_shlibpath_var_CXX=unsupported
+  if test yes = "$lt_cv_ld_force_load"; then
+    whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
+  else
+    whole_archive_flag_spec_CXX=''
+  fi
+  link_all_deplibs_CXX=yes
+  allow_undefined_flag_CXX=$_lt_dar_allow_undefined
+  case $cc_basename in
+     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test yes = "$_lt_dar_can_shared"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+    archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+    module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
+       if test yes != "$lt_cv_apple_cc_single_mod"; then
+      archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
+      archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
+    fi
+
+  else
+  ld_shlibs_CXX=no
+  fi
+
+	;;
+
+      os2*)
+	hardcode_libdir_flag_spec_CXX='-L$libdir'
+	hardcode_minus_L_CXX=yes
+	allow_undefined_flag_CXX=unsupported
+	shrext_cmds=.dll
+	archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	  $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	  $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	  $ECHO EXPORTS >> $output_objdir/$libname.def~
+	  emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	  $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	  emximp -o $lib $output_objdir/$libname.def'
+	archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	  $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	  $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	  $ECHO EXPORTS >> $output_objdir/$libname.def~
+	  prefix_cmds="$SED"~
+	  if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	    prefix_cmds="$prefix_cmds -e 1d";
+	  fi~
+	  prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	  cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	  $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	  emximp -o $lib $output_objdir/$libname.def'
+	old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+	enable_shared_with_static_runtimes_CXX=yes
+	;;
+
+      dgux*)
+        case $cc_basename in
+          ec++*)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          ghcx*)
+	    # Green Hills C++ Compiler
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
+
+      freebsd2.*)
+        # C++ shared libraries reported to be fairly broken before
+	# switch to ELF
+        ld_shlibs_CXX=no
+        ;;
+
+      freebsd-elf*)
+        archive_cmds_need_lc_CXX=no
+        ;;
+
+      freebsd* | dragonfly*)
+        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+        # conventions
+        ld_shlibs_CXX=yes
+        ;;
+
+      haiku*)
+        archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+        link_all_deplibs_CXX=yes
+        ;;
+
+      hpux9*)
+        hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir'
+        hardcode_libdir_separator_CXX=:
+        export_dynamic_flag_spec_CXX='$wl-E'
+        hardcode_direct_CXX=yes
+        hardcode_minus_L_CXX=yes # Not in the search PATH,
+				             # but as the default
+				             # location of the library.
+
+        case $cc_basename in
+          CC*)
+            # FIXME: insert proper C++ library support
+            ld_shlibs_CXX=no
+            ;;
+          aCC*)
+            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+            # Commands to make compiler produce verbose output that lists
+            # what "hidden" libraries, object files and flags are used when
+            # linking a shared library.
+            #
+            # There doesn't appear to be a way to prevent this compiler from
+            # explicitly linking system object files so we need to strip them
+            # from the output so that they don't get included in the library
+            # dependencies.
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+            ;;
+          *)
+            if test yes = "$GXX"; then
+              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+            else
+              # FIXME: insert proper C++ library support
+              ld_shlibs_CXX=no
+            fi
+            ;;
+        esac
+        ;;
+
+      hpux10*|hpux11*)
+        if test no = "$with_gnu_ld"; then
+	  hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir'
+	  hardcode_libdir_separator_CXX=:
+
+          case $host_cpu in
+            hppa*64*|ia64*)
+              ;;
+            *)
+	      export_dynamic_flag_spec_CXX='$wl-E'
+              ;;
+          esac
+        fi
+        case $host_cpu in
+          hppa*64*|ia64*)
+            hardcode_direct_CXX=no
+            hardcode_shlibpath_var_CXX=no
+            ;;
+          *)
+            hardcode_direct_CXX=yes
+            hardcode_direct_absolute_CXX=yes
+            hardcode_minus_L_CXX=yes # Not in the search PATH,
+					         # but as the default
+					         # location of the library.
+            ;;
+        esac
+
+        case $cc_basename in
+          CC*)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          aCC*)
+	    case $host_cpu in
+	      hppa*64*)
+	        archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      ia64*)
+	        archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      *)
+	        archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	    esac
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    ;;
+          *)
+	    if test yes = "$GXX"; then
+	      if test no = "$with_gnu_ld"; then
+	        case $host_cpu in
+	          hppa*64*)
+	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          ia64*)
+	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          *)
+	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	        esac
+	      fi
+	    else
+	      # FIXME: insert proper C++ library support
+	      ld_shlibs_CXX=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      interix[3-9]*)
+	hardcode_direct_CXX=no
+	hardcode_shlibpath_var_CXX=no
+	hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	export_dynamic_flag_spec_CXX='$wl-E'
+	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+	# Instead, shared libraries are loaded at an image base (0x10000000 by
+	# default) and relocated if they conflict, which is a slow very memory
+	# consuming and fragmenting process.  To avoid this, we pick a random,
+	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+	archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	;;
+      irix5* | irix6*)
+        case $cc_basename in
+          CC*)
+	    # SGI C++
+	    archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    if test yes = "$GXX"; then
+	      if test no = "$with_gnu_ld"; then
+	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+	      else
+	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib'
+	      fi
+	    fi
+	    link_all_deplibs_CXX=yes
+	    ;;
+        esac
+        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+        hardcode_libdir_separator_CXX=:
+        inherit_rpath_CXX=yes
+        ;;
+
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	    archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+
+	    hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	    export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	    old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+	    ;;
+	  icpc* | ecpc* )
+	    # Intel C++
+	    with_gnu_ld=yes
+	    # version 8.0 and above of icpc choke on multiply defined symbols
+	    # if we add $predep_objects and $postdep_objects, however 7.1 and
+	    # earlier do not add the objects themselves.
+	    case `$CC -V 2>&1` in
+	      *"Version 7."*)
+	        archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+		archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	      *)  # Version 8.0 or newer
+	        tmp_idyn=
+	        case $host_cpu in
+		  ia64*) tmp_idyn=' -i_dynamic';;
+		esac
+	        archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+		archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	    esac
+	    archive_cmds_need_lc_CXX=no
+	    hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	    export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+	    whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive'
+	    ;;
+          pgCC* | pgcpp*)
+            # Portland Group C++ compiler
+	    case `$CC -V` in
+	    *pgCC\ [1-5].* | *pgcpp\ [1-5].*)
+	      prelink_cmds_CXX='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+	      old_archive_cmds_CXX='tpldir=Template.dir~
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+                $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+                $RANLIB $oldlib'
+	      archive_cmds_CXX='tpldir=Template.dir~
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	      archive_expsym_cmds_CXX='tpldir=Template.dir~
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+	      ;;
+	    *) # Version 6 and above use weak symbols
+	      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+	      ;;
+	    esac
+
+	    hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir'
+	    export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+	    whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+            ;;
+	  cxx*)
+	    # Compaq C++
+	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname  -o $lib $wl-retain-symbols-file $wl$export_symbols'
+
+	    runpath_var=LD_RUN_PATH
+	    hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	    hardcode_libdir_separator_CXX=:
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+	    ;;
+	  xl* | mpixl* | bgxl*)
+	    # IBM XL 8.0 on PPC, with GNU ld
+	    hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+	    export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+	    archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	    if test yes = "$supports_anon_versioning"; then
+	      archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~
+                cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+                echo "local: *; };" >> $output_objdir/$libname.ver~
+                $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
+	    fi
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      no_undefined_flag_CXX=' -zdefs'
+	      archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols'
+	      hardcode_libdir_flag_spec_CXX='-R$libdir'
+	      whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	      compiler_needs_object_CXX=yes
+
+	      # Not sure whether something based on
+	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+	      # would be better.
+	      output_verbose_link_cmd='func_echo_all'
+
+	      # Archives containing C++ object files must be created using
+	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	      # necessary to make sure instantiated templates are included
+	      # in the archive.
+	      old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+
+      lynxos*)
+        # FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+
+      m88k*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+	;;
+
+      mvs*)
+        case $cc_basename in
+          cxx*)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+	  *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+	esac
+	;;
+
+      netbsd*)
+        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	  archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+	  wlarc=
+	  hardcode_libdir_flag_spec_CXX='-R$libdir'
+	  hardcode_direct_CXX=yes
+	  hardcode_shlibpath_var_CXX=no
+	fi
+	# Workaround some broken pre-1.5 toolchains
+	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+	;;
+
+      *nto* | *qnx*)
+        ld_shlibs_CXX=yes
+	;;
+
+      openbsd* | bitrig*)
+	if test -f /usr/libexec/ld.so; then
+	  hardcode_direct_CXX=yes
+	  hardcode_shlibpath_var_CXX=no
+	  hardcode_direct_absolute_CXX=yes
+	  archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+	  hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
+	    archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib'
+	    export_dynamic_flag_spec_CXX='$wl-E'
+	    whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+	  fi
+	  output_verbose_link_cmd=func_echo_all
+	else
+	  ld_shlibs_CXX=no
+	fi
+	;;
+
+      osf3* | osf4* | osf5*)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	    hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	    hardcode_libdir_separator_CXX=:
+
+	    # Archives containing C++ object files must be created using
+	    # the KAI C++ compiler.
+	    case $host in
+	      osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
+	      *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
+	    esac
+	    ;;
+          RCC*)
+	    # Rational C++ 2.4.1
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          cxx*)
+	    case $host in
+	      osf3*)
+	        allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*'
+	        archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+		;;
+	      *)
+	        allow_undefined_flag_CXX=' -expect_unresolved \*'
+	        archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	        archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+                  echo "-hidden">> $lib.exp~
+                  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~
+                  $RM $lib.exp'
+	        hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+		;;
+	    esac
+
+	    hardcode_libdir_separator_CXX=:
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    ;;
+	  *)
+	    if test yes,no = "$GXX,$with_gnu_ld"; then
+	      allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*'
+	      case $host in
+	        osf3*)
+	          archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+		  ;;
+	        *)
+	          archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+		  ;;
+	      esac
+
+	      hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+	      hardcode_libdir_separator_CXX=:
+
+	      # Commands to make compiler produce verbose output that lists
+	      # what "hidden" libraries, object files and flags are used when
+	      # linking a shared library.
+	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+	    else
+	      # FIXME: insert proper C++ library support
+	      ld_shlibs_CXX=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      psos*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+
+      sunos4*)
+        case $cc_basename in
+          CC*)
+	    # Sun C++ 4.x
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          lcc*)
+	    # Lucid
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
+
+      solaris*)
+        case $cc_basename in
+          CC* | sunCC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+            archive_cmds_need_lc_CXX=yes
+	    no_undefined_flag_CXX=' -zdefs'
+	    archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	    archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+              $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	    hardcode_libdir_flag_spec_CXX='-R$libdir'
+	    hardcode_shlibpath_var_CXX=no
+	    case $host_os in
+	      solaris2.[0-5] | solaris2.[0-5].*) ;;
+	      *)
+		# The compiler driver will combine and reorder linker options,
+		# but understands '-z linker_flag'.
+	        # Supported since Solaris 2.6 (maybe 2.5.1?)
+		whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
+	        ;;
+	    esac
+	    link_all_deplibs_CXX=yes
+
+	    output_verbose_link_cmd='func_echo_all'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	    ;;
+          gcx*)
+	    # Green Hills C++ Compiler
+	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
+
+	    # The C++ compiler must be used to create the archive.
+	    old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    # GNU C++ compiler with Solaris linker
+	    if test yes,no = "$GXX,$with_gnu_ld"; then
+	      no_undefined_flag_CXX=' $wl-z ${wl}defs'
+	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
+	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+                  $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	      else
+	        # g++ 2.7 appears to require '-G' NOT '-shared' on this
+	        # platform.
+	        archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
+	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+                  $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	      fi
+
+	      hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir'
+	      case $host_os in
+		solaris2.[0-5] | solaris2.[0-5].*) ;;
+		*)
+		  whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
+		  ;;
+	      esac
+	    fi
+	    ;;
+        esac
+        ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag_CXX='$wl-z,text'
+      archive_cmds_need_lc_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      runpath_var='LD_RUN_PATH'
+
+      case $cc_basename in
+        CC*)
+	  archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+      esac
+      ;;
+
+      sysv5* | sco3.2v5* | sco5v6*)
+	# Note: We CANNOT use -z defs as we might desire, because we do not
+	# link with -lc, and that would cause any symbols used from libc to
+	# always be unresolved, which means just about no library would
+	# ever link correctly.  If we're not using GNU ld we use -z text
+	# though, which does catch some bad symbols but isn't as heavy-handed
+	# as -z defs.
+	no_undefined_flag_CXX='$wl-z,text'
+	allow_undefined_flag_CXX='$wl-z,nodefs'
+	archive_cmds_need_lc_CXX=no
+	hardcode_shlibpath_var_CXX=no
+	hardcode_libdir_flag_spec_CXX='$wl-R,$libdir'
+	hardcode_libdir_separator_CXX=':'
+	link_all_deplibs_CXX=yes
+	export_dynamic_flag_spec_CXX='$wl-Bexport'
+	runpath_var='LD_RUN_PATH'
+
+	case $cc_basename in
+          CC*)
+	    archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~
+              '"$old_archive_cmds_CXX"
+	    reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~
+              '"$reload_cmds_CXX"
+	    ;;
+	  *)
+	    archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    ;;
+	esac
+      ;;
+
+      tandem*)
+        case $cc_basename in
+          NCC*)
+	    # NonStop-UX NCC 3.20
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
+
+      vxworks*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+
+      *)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+    esac
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+    test no = "$ld_shlibs_CXX" && can_build_shared=no
+
+    GCC_CXX=$GXX
+    LD_CXX=$LD
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    # Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+_LT_EOF
+
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
+esac
+
+if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  for p in `eval "$output_verbose_link_cmd"`; do
+    case $prev$p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test x-L = "$p" ||
+          test x-R = "$p"; then
+	 prev=$p
+	 continue
+       fi
+
+       # Expand the sysroot to ease extracting the directories later.
+       if test -z "$prev"; then
+         case $p in
+         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+         esac
+       fi
+       case $p in
+       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+       esac
+       if test no = "$pre_test_object_deps_done"; then
+	 case $prev in
+	 -L | -R)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$compiler_lib_search_path_CXX"; then
+	     compiler_lib_search_path_CXX=$prev$p
+	   else
+	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$postdeps_CXX"; then
+	   postdeps_CXX=$prev$p
+	 else
+	   postdeps_CXX="${postdeps_CXX} $prev$p"
+	 fi
+       fi
+       prev=
+       ;;
+
+    *.lto.$objext) ;; # Ignore GCC LTO objects
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test no = "$pre_test_object_deps_done"; then
+	 if test -z "$predep_objects_CXX"; then
+	   predep_objects_CXX=$p
+	 else
+	   predep_objects_CXX="$predep_objects_CXX $p"
+	 fi
+       else
+	 if test -z "$postdep_objects_CXX"; then
+	   postdep_objects_CXX=$p
+	 else
+	   postdep_objects_CXX="$postdep_objects_CXX $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
+
+# PORTME: override above test on systems where it is broken
+case $host_os in
+interix[3-9]*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  predep_objects_CXX=
+  postdep_objects_CXX=
+  postdeps_CXX=
+  ;;
+esac
+
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+ compiler_lib_search_dirs_CXX=
+if test -n "${compiler_lib_search_path_CXX}"; then
+ compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'`
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+
+  # C++ specific cases for pic, static, wl, etc.
+  if test yes = "$GXX"; then
+    lt_prog_compiler_wl_CXX='-Wl,'
+    lt_prog_compiler_static_CXX='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test ia64 = "$host_cpu"; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_CXX='-Bstatic'
+      fi
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic_CXX='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the '-m68020' flag to GCC prevents building anything better,
+            # like '-m68040'.
+            lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | cygwin* | os2* | pw32* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+      case $host_os in
+      os2*)
+	lt_prog_compiler_static_CXX='$wl-static'
+	;;
+      esac
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_CXX='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      lt_prog_compiler_pic_CXX=
+      ;;
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static_CXX=
+      ;;
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_CXX=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	;;
+      *)
+	lt_prog_compiler_pic_CXX='-fPIC'
+	;;
+      esac
+      ;;
+    *qnx* | *nto*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic_CXX='-fPIC -shared'
+      ;;
+    *)
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix[4-9]*)
+	# All AIX code is PIC.
+	if test ia64 = "$host_cpu"; then
+	  # AIX 5 now supports IA64 processor
+	  lt_prog_compiler_static_CXX='-Bstatic'
+	else
+	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+      mingw* | cygwin* | os2* | pw32* | cegcc*)
+	# This hack is so that the source file can tell whether it is being
+	# built for inclusion in a dll (and should export symbols for example).
+	lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+	;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  ghcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='$wl-a ${wl}archive'
+	    if test ia64 != "$host_cpu"; then
+	      lt_prog_compiler_pic_CXX='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='$wl-a ${wl}archive'
+	    case $host_cpu in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      lt_prog_compiler_pic_CXX='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      interix*)
+	# This is c89, which is MS Visual C++ (no shared libs)
+	# Anyone wants to do a port?
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+	case $cc_basename in
+	  KCC*)
+	    # KAI C++ Compiler
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    ;;
+	  ecpc* )
+	    # old Intel C++ for x86_64, which still supported -KPIC.
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  icpc* )
+	    # Intel C++, used to be incompatible with GCC.
+	    # ICC 10 doesn't accept -KPIC any more.
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  pgCC* | pgcpp*)
+	    # Portland Group C++ compiler
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-fpic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  cxx*)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  xlc* | xlC* | bgxl[cC]* | mpixl[cC]*)
+	    # IBM XL 8.0, 9.0 on PPC and BlueGene
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-qpic'
+	    lt_prog_compiler_static_CXX='-qstaticlink'
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      lt_prog_compiler_pic_CXX='-KPIC'
+	      lt_prog_compiler_static_CXX='-Bstatic'
+	      lt_prog_compiler_wl_CXX='-Qoption ld '
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    lt_prog_compiler_pic_CXX='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd* | netbsdelf*-gnu)
+	;;
+      *qnx* | *nto*)
+        # QNX uses GNU C++, but need to define -shared option too, otherwise
+        # it will coredump.
+        lt_prog_compiler_pic_CXX='-fPIC -shared'
+        ;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC* | sunCC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    lt_prog_compiler_wl_CXX='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    lt_prog_compiler_pic_CXX='-pic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      vxworks*)
+	;;
+      *)
+	lt_prog_compiler_can_build_shared_CXX=no
+	;;
+    esac
+  fi
+
+case $host_os in
+  # For platforms that do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_CXX=
+    ;;
+  *)
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; }
+lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works_CXX=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"  ## exclude from sc_useless_quotes_in_assignment
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works_CXX=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
+
+if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then
+    case $lt_prog_compiler_pic_CXX in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+     esac
+else
+    lt_prog_compiler_pic_CXX=
+     lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works_CXX=no
+   save_LDFLAGS=$LDFLAGS
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works_CXX=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works_CXX=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS=$save_LDFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
+
+if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then
+    :
+else
+    lt_prog_compiler_static_CXX=
+fi
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+
+
+hard_links=nottested
+if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test no = "$hard_links"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  case $host_os in
+  aix[4-9]*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to GNU nm, but means don't demangle to AIX nm.
+    # Without the "-l" option, or with the "-B" option, AIX nm treats
+    # weak defined symbols like other global defined symbols, whereas
+    # GNU nm marks them as "W".
+    # While the 'weak' keyword is ignored in the Export File, we need
+    # it in the Import File for the 'aix-soname' feature, so we have
+    # to replace the "-B" option with "-P" for AIX nm.
+    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
+    else
+      export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    export_symbols_cmds_CXX=$ltdll_cmds
+    ;;
+  cygwin* | mingw* | cegcc*)
+    case $cc_basename in
+    cl*)
+      exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+      ;;
+    *)
+      export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+      exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+      ;;
+    esac
+    ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs_CXX=no
+    ;;
+  *)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+    ;;
+  esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+test no = "$ld_shlibs_CXX" && can_build_shared=no
+
+with_gnu_ld_CXX=$with_gnu_ld
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_CXX=yes
+
+  if test yes,yes = "$GCC,$enable_shared"; then
+    case $archive_cmds_CXX in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl_CXX
+	  pic_flag=$lt_prog_compiler_pic_CXX
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+	  allow_undefined_flag_CXX=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc_CXX=no
+	  else
+	    lt_cv_archive_cmds_need_lc_CXX=yes
+	  fi
+	  allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
+      archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=.so
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+
+
+case $host_os in
+aix3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='$libname$release$shared_ext$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test ia64 = "$host_cpu"; then
+    # AIX 5 supports IA64
+    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line '#! .'.  This would cause the generated library to
+    # depend on '.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # Using Import Files as archive members, it is possible to support
+    # filename-based versioning of shared library archives on AIX. While
+    # this would work for both with and without runtime linking, it will
+    # prevent static linking of such archives. So we do filename-based
+    # shared library versioning with .so extension only, which is used
+    # when both runtime linking and shared linking is enabled.
+    # Unfortunately, runtime linking may impact performance, so we do
+    # not want this to be the default eventually. Also, we use the
+    # versioned .so libs for executables only if there is the -brtl
+    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
+    # To allow for filename-based versioning support, we need to create
+    # libNAME.so.V as an archive file, containing:
+    # *) an Import File, referring to the versioned filename of the
+    #    archive as well as the shared archive member, telling the
+    #    bitwidth (32 or 64) of that shared object, and providing the
+    #    list of exported symbols of that shared object, eventually
+    #    decorated with the 'weak' keyword
+    # *) the shared object with the F_LOADONLY flag set, to really avoid
+    #    it being seen by the linker.
+    # At run time we better use the real file rather than another symlink,
+    # but for link time we create the symlink libNAME.so -> libNAME.so.V
+
+    case $with_aix_soname,$aix_use_runtimelinking in
+    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    aix,yes) # traditional libtool
+      dynamic_linker='AIX unversionable lib.so'
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      ;;
+    aix,no) # traditional AIX only
+      dynamic_linker='AIX lib.a(lib.so.V)'
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      ;;
+    svr4,*) # full svr4 only
+      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,yes) # both, prefer svr4
+      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # unpreferred sharedlib libNAME.a needs extra handling
+      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
+      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,no) # both, prefer aix
+      dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)"
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
+      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
+      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
+      ;;
+    esac
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='$libname$shared_ext'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=.dll
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+    library_names_spec='$libname.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec=$LIB
+      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
+    ;;
+
+  *)
+    # Assume MSVC wrapper
+    library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
+    dynamic_linker='Win32 ld.exe'
+    ;;
+  esac
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$major$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[23].*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      soname_spec='$libname$release$shared_ext$major'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2.*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+haiku*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    if test 32 = "$HPUX_IA64_MODE"; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
+    fi
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[3-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test yes = "$lt_cv_prog_gnu_ld"; then
+		version_type=linux # correct to gnu/linux during the next big refactor
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
+  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+linux*android*)
+  version_type=none # Android doesn't support versioned libraries.
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext'
+  soname_spec='$libname$release$shared_ext'
+  finish_cmds=
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  dynamic_linker='Android linker'
+  # Don't embed -rpath directories since the linker doesn't support them.
+  hardcode_libdir_flag_spec_CXX='-L$libdir'
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \
+	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
+fi
+
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Ideally, we could use ldconfig to report *all* directores which are
+  # searched for libraries, however this is still not possible.  Aside from not
+  # being certain /sbin/ldconfig is available, command
+  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
+  # even though it is searched at run-time.  Try to do the best guess by
+  # appending ld.so.conf contents (and includes) to the search path.
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd* | bitrig*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec=/usr/lib
+  need_lib_prefix=no
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+    need_version=no
+  else
+    need_version=yes
+  fi
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+os2*)
+  libname_spec='$name'
+  version_type=windows
+  shrext_cmds=.dll
+  need_version=no
+  need_lib_prefix=no
+  # OS/2 can only load a DLL with a base name of 8 characters or less.
+  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
+    v=$($ECHO $release$versuffix | tr -d .-);
+    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
+    $ECHO $n$v`$shared_ext'
+  library_names_spec='${libname}_dll.$libext'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=BEGINLIBPATH
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  postinstall_cmds='base_file=`basename \$file`~
+    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
+    dldir=$destdir/`dirname \$dlpath`~
+    test -d \$dldir || mkdir -p \$dldir~
+    $install_prog $dir/$dlname \$dldir/$dlname~
+    chmod a+x \$dldir/$dlname~
+    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+    fi'
+  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
+    dlpath=$dir/\$dldll~
+    $RM \$dlpath'
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test yes = "$with_gnu_ld"; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec; then
+    version_type=linux # correct to gnu/linux during the next big refactor
+    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
+    soname_spec='$libname$shared_ext.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=sco
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test yes = "$with_gnu_ld"; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test no = "$dynamic_linker" && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test yes = "$GCC"; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
+  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
+fi
+
+if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
+  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
+fi
+
+# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
+configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
+
+# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
+func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
+
+# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
+configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" ||
+   test -n "$runpath_var_CXX" ||
+   test yes = "$hardcode_automatic_CXX"; then
+
+  # We can hardcode non-existent directories.
+  if test no != "$hardcode_direct_CXX" &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" &&
+     test no != "$hardcode_minus_L_CXX"; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_CXX=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_CXX=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_CXX=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
+$as_echo "$hardcode_action_CXX" >&6; }
+
+if test relink = "$hardcode_action_CXX" ||
+   test yes = "$inherit_rpath_CXX"; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test yes = "$shlibpath_overrides_runpath" ||
+     test no = "$enable_shared"; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+
+  fi # test -n "$compiler"
+
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+  LDCXX=$LD
+  LD=$lt_save_LD
+  GCC=$lt_save_GCC
+  with_gnu_ld=$lt_save_with_gnu_ld
+  lt_cv_path_LDCXX=$lt_cv_path_LD
+  lt_cv_path_LD=$lt_save_path_LD
+  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test yes != "$_lt_caught_CXX_error"
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+  if expr "$($CC -dumpversion)" : '4\.5\.1' &>/dev/null; then
+    CVC4_INTEGRITY_WARNING="GCC 4.5.1's optimizer is known to make errors building Minisat (and by extension CVC4)"
+  fi
+
+
+cvc4_use_gmp=2
+cvc4_use_cln=2
+
+
+# Check whether --with-cln was given.
+if test "${with_cln+set}" = set; then :
+  withval=$with_cln; case "$withval" in
+   y|ye|yes|Y|YE|YES) cvc4_use_cln=1 ;;
+   n|no|N|NO) cvc4_use_cln=0 ;;
+   esac
+
+
+fi
+
+
+
+# Check whether --with-gmp was given.
+if test "${with_gmp+set}" = set; then :
+  withval=$with_gmp; case "$withval" in
+   y|ye|yes|Y|YE|YES) cvc4_use_gmp=1 ;;
+   n|no|N|NO) cvc4_use_gmp=0 ;;
+   esac
+
+
+fi
+
+
+if test $cvc4_use_cln = 1 -a $cvc4_use_gmp = 1 || test $cvc4_use_cln = 0 -a $cvc4_use_gmp = 0; then
+  as_fn_error $? "You must use either CLN and GMP.  Please pick one." "$LINENO" 5
+fi
+if test $cvc4_use_gmp = 1; then
+  cvc4_use_cln=0
+elif test $cvc4_use_gmp = 0; then
+  cvc4_use_cln=1
+elif test $cvc4_use_cln = 1; then
+  cvc4_use_gmp=0
+elif test $cvc4_use_cln = 0; then
+  cvc4_use_gmp=1
+fi
+
+# try GMP, fail if not found; GMP is required for both CLN and for GMP
+# versions of CVC4
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __gmpz_init in -lgmp" >&5
+$as_echo_n "checking for __gmpz_init in -lgmp... " >&6; }
+if ${ac_cv_lib_gmp___gmpz_init+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgmp  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char __gmpz_init ();
+int
+main ()
+{
+return __gmpz_init ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_gmp___gmpz_init=yes
+else
+  ac_cv_lib_gmp___gmpz_init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gmp___gmpz_init" >&5
+$as_echo "$ac_cv_lib_gmp___gmpz_init" >&6; }
+if test "x$ac_cv_lib_gmp___gmpz_init" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBGMP 1
+_ACEOF
+
+  LIBS="-lgmp $LIBS"
+
+else
+  as_fn_error $? "GNU MP (libgmp) not found, see http://gmplib.org/" "$LINENO" 5
+fi
+
+
+if test $cvc4_use_cln = 2; then
+  if test "$CVC4_BSD_LICENSED_CODE_ONLY" = 1 -o "$with_portfolio" = yes; then
+    cvc4_use_cln=0
+    cvc4_use_gmp=1
+  fi
+fi
+
+if test $cvc4_use_cln != 0; then
+  # [mdeters] The PKG_CHECK_MODULES macro isn't customizable and doesn't fail
+  # gracefully.  You can only specify it once for a given library name.  That
+  # is, even on separate if/else branches, you can't put
+  # PKG_CHECK_MODULES([CLN], ...).  That's why things are so convoluted here,
+  # we have to have PKG_CHECK_MODULES _exactly_ once in configure.ac !
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKG_CONFIG=$ac_pt_PKG_CONFIG
+  fi
+else
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+	_pkg_min_version=0.9.0
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	else
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+		PKG_CONFIG=""
+	fi
+
+fi
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CLN" >&5
+$as_echo_n "checking for CLN... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$CLN_CFLAGS"; then
+        pkg_cv_CLN_CFLAGS="$CLN_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cln >= 1.2.2\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "cln >= 1.2.2") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_CLN_CFLAGS=`$PKG_CONFIG --cflags "cln >= 1.2.2" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$CLN_LIBS"; then
+        pkg_cv_CLN_LIBS="$CLN_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cln >= 1.2.2\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "cln >= 1.2.2") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_CLN_LIBS=`$PKG_CONFIG --libs "cln >= 1.2.2" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        CLN_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "cln >= 1.2.2"`
+        else
+	        CLN_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "cln >= 1.2.2"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$CLN_PKG_ERRORS" >&5
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+                if test $cvc4_use_cln = 1; then
+       # fail
+       as_fn_error $? "CLN not installed (or too old) or pkgconfig missing" "$LINENO" 5
+     else
+       # fall back to GMP
+       { $as_echo "$as_me:${as_lineno-$LINENO}: CLN not installed (or too old) or pkgconfig missing, will use gmp" >&5
+$as_echo "$as_me: CLN not installed (or too old) or pkgconfig missing, will use gmp" >&6;}
+       cvc4_use_cln=0
+       cvc4_use_gmp=1
+     fi
+
+
+elif test $pkg_failed = untried; then
+	if test $cvc4_use_cln = 1; then
+       # fail
+       as_fn_error $? "CLN not installed (or too old) or pkgconfig missing" "$LINENO" 5
+     else
+       # fall back to GMP
+       { $as_echo "$as_me:${as_lineno-$LINENO}: CLN not installed (or too old) or pkgconfig missing, will use gmp" >&5
+$as_echo "$as_me: CLN not installed (or too old) or pkgconfig missing, will use gmp" >&6;}
+       cvc4_use_cln=0
+       cvc4_use_gmp=1
+     fi
+
+
+else
+	CLN_CFLAGS=$pkg_cv_CLN_CFLAGS
+	CLN_LIBS=$pkg_cv_CLN_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+     save_LIBS="$LIBS"
+     save_CXXFLAGS="$CXXFLAGS"
+     LIBS="$CLN_LIBS $LIBS"
+     CXXFLAGS="$CLN_CFLAGS $CXXFLAGS"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <cln/cln.h>
+int
+main ()
+{
+cln::cl_F pi = "3.1415926";
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+       cvc4_use_cln=1
+
+else
+
+       if test $cvc4_use_cln = 1; then
+         # fail
+         as_fn_error $? "CLN installation missing, too old, or not functional for this architecture" "$LINENO" 5
+       else
+         # fall back to GMP
+         { $as_echo "$as_me:${as_lineno-$LINENO}: CLN installation missing, too old, or not functional for this architecture, will use gmp instead" >&5
+$as_echo "$as_me: CLN installation missing, too old, or not functional for this architecture, will use gmp instead" >&6;}
+         cvc4_use_cln=0
+         cvc4_use_gmp=1
+       fi
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     CXXFLAGS="$save_CXXFLAGS"
+     LIBS="$save_LIBS"
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+fi
+if test $cvc4_use_cln = 0; then
+  # try GMPXX, fail if not found; don't need to link against it, only need its header
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+ac_fn_cxx_check_header_mongrel "$LINENO" "gmpxx.h" "ac_cv_header_gmpxx_h" "$ac_includes_default"
+if test "x$ac_cv_header_gmpxx_h" = xyes; then :
+
+else
+  as_fn_error $? "GNU MP C++ library header (gmpxx.h) required but not found, see http://gmplib.org/" "$LINENO" 5
+fi
+
+
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+  cvc4_cln_or_gmp=gmp
+else
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }$CLN_CFLAGS"
+  CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }$CLN_CFLAGS"
+  CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }$CLN_CFLAGS"
+  LIBS="$CLN_LIBS${LIBS:+ $LIBS}"
+  cvc4_cln_or_gmp=cln
+fi
+
+if test $cvc4_cln_or_gmp = cln; then
+
+cat >>confdefs.h <<_ACEOF
+#define CVC4_CLN_IMP /**/
+_ACEOF
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define CVC4_GMP_IMP /**/
+_ACEOF
+
+fi
+ if test $cvc4_cln_or_gmp = cln; then
+  CVC4_CLN_IMP_TRUE=
+  CVC4_CLN_IMP_FALSE='#'
+else
+  CVC4_CLN_IMP_TRUE='#'
+  CVC4_CLN_IMP_FALSE=
+fi
+
+ if test $cvc4_cln_or_gmp = gmp; then
+  CVC4_GMP_IMP_TRUE=
+  CVC4_GMP_IMP_FALSE='#'
+else
+  CVC4_GMP_IMP_TRUE='#'
+  CVC4_GMP_IMP_FALSE=
+fi
+
+
+# construct the build string
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for appropriate build string" >&5
+$as_echo_n "checking for appropriate build string... " >&6; }
+if test -z "$ac_confdir"; then
+  ac_confdir="$srcdir"
+fi
+build_type=`$ac_confdir/config/build-type $with_build $btargs $cvc4_cln_or_gmp`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $build_type" >&5
+$as_echo "$build_type" >&6; }
+
+# Require building in target and build-specific build directory:
+#
+# If the configure script is invoked from the top-level source
+# directory, it creates a suitable build directory (based on the build
+# architecture and build profile from $build_type), changes into it,
+# and reinvokes itself.  CVC4_CONFIGURE_IN_BUILDS is an envariable
+# that breaks any possibility of infinite recursion in this process.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking what dir to configure" >&5
+$as_echo_n "checking what dir to configure... " >&6; }
+if test "$CVC4_CONFIGURE_IN_BUILDS" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: this one (in builds/)" >&5
+$as_echo "this one (in builds/)" >&6; }
+elif test "$CVC4_CONFIGURE_AT_TOP_LEVEL" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: builds/$target/$build_type" >&5
+$as_echo "builds/$target/$build_type" >&6; }
+  $as_echo
+  if test -z "$ac_srcdir"; then
+    mkbuilddir=./config/mkbuilddir
+  else
+    mkbuilddir=$ac_srcdir/config/mkbuilddir
+  fi
+  $as_echo "$mkbuilddir $target $build_type"
+  source $mkbuilddir "$target" "$build_type"
+  $as_echo "cd builds/$target/$build_type"
+  cd "builds/$target/$build_type"
+  CVC4_CONFIGURE_IN_BUILDS=yes; export CVC4_CONFIGURE_IN_BUILDS
+  # Runs the single recursive configure invocation using a relative path.
+  # See https://lists.gnu.org/archive/html/autoconf/2011-04/msg00060.html
+  echo "$SHELL ../../../configure ${config_cmdline[@]}"
+  "$SHELL" "../../../configure" "${config_cmdline[@]}"
+  exitval=$?
+  cd ../../..
+  if test $exitval -eq 0; then
+    cat >config.reconfig <<EOF
+#!/bin/bash
+# Generated by configure, `date`
+# This script is part of CVC4.
+
+cd "\`dirname \\"\$0\\"\`"
+
+if test -d builds; then :; else echo 'No builds/ directory!' >&2; exit; fi
+
+current=(\`grep '^CURRENT_BUILD' builds/current | sed 's,^CURRENT_BUILD *= *\([^/]*\\)/\\(.*\\),\\1 \\2,'\`)
+arch=\${current[0]}
+build=\${current[1]}
+
+echo "reconfiguring in builds/\$arch/\$build..."
+cd "builds/\$arch/\$build"
+echo ./config.status "\$@"
+./config.status "\$@"
+EOF
+    chmod +x config.reconfig
+  fi
+  ln -sf "$target/$build_type/config.log" "builds/config.log"
+  exit $exitval
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: this one (user-specified)" >&5
+$as_echo "this one (user-specified)" >&6; }
+fi
+
+as_me=configure
+
+# Unpack standard build types. Any particular options can be overriden with
+# --enable/disable-X options
+# Tim: This needs to keep CVC4CPPFLAGS, CVC4CXXFLAGS, etc. set by earlier checks
+case "$with_build" in
+  production) # highly optimized, no assertions, no tracing, dumping
+    CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }"
+    CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }"
+    CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }"
+    CVC4LDFLAGS="${CVC4LDFLAGS:+$CVC4LDFLAGS }"
+    FLAG_VISIBILITY_HIDDEN='-fvisibility=hidden'
+    if test -z "${OPTLEVEL+set}"            ; then OPTLEVEL=3                       ; fi
+    if test -z "${enable_optimized+set}"    ; then enable_optimized=yes             ; fi
+    if test -z "${enable_debug_symbols+set}"; then enable_debug_symbols=yes         ; fi
+    if test -z "${enable_statistics+set}"   ; then enable_statistics=yes            ; fi
+    if test -z "${enable_replay+set}"       ; then enable_replay=no                 ; fi
+    if test -z "${enable_assertions+set}"   ; then enable_assertions=no             ; fi
+    if test -z "${enable_proof+set}"        ; then enable_proof=yes                 ; fi
+    if test -z "${enable_tracing+set}"      ; then enable_tracing=no                ; fi
+    if test -z "${enable_dumping+set}"      ; then enable_dumping=yes               ; fi
+    if test -z "${enable_muzzle+set}"       ; then enable_muzzle=no                 ; fi
+    ;;
+  debug) # unoptimized, debug symbols, assertions, tracing, dumping
+    CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_DEBUG"
+    CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }-fno-inline"
+    CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }-fno-inline"
+    CVC4LDFLAGS="${CVC4LDFLAGS:+$CVC4LDFLAGS }"
+    FLAG_VISIBILITY_HIDDEN=
+    if test -z "${enable_optimized+set}"    ; then enable_optimized=no              ; fi
+    if test -z "${enable_debug_symbols+set}"; then enable_debug_symbols=yes         ; fi
+    if test -z "${enable_statistics+set}"   ; then enable_statistics=yes            ; fi
+    if test -z "${enable_replay+set}"       ; then enable_replay=yes                ; fi
+    if test -z "${enable_assertions+set}"   ; then enable_assertions=yes            ; fi
+    if test -z "${enable_proof+set}"        ; then enable_proof=yes                 ; fi
+    if test -z "${enable_tracing+set}"      ; then enable_tracing=yes               ; fi
+    if test -z "${enable_dumping+set}"      ; then enable_dumping=yes               ; fi
+    if test -z "${enable_muzzle+set}"       ; then enable_muzzle=no                 ; fi
+    ;;
+  default) # moderately optimized, assertions, tracing, dumping
+    CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }"
+    CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }"
+    CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }"
+    CVC4LDFLAGS="${CVC4LDFLAGS:+$CVC4LDFLAGS }"
+    FLAG_VISIBILITY_HIDDEN='-fvisibility=hidden'
+    if test -z "${OPTLEVEL+set}"            ; then OPTLEVEL=2                       ; fi
+    if test -z "${enable_optimized+set}"    ; then enable_optimized=yes             ; fi
+    if test -z "${enable_debug_symbols+set}"; then enable_debug_symbols=yes         ; fi
+    if test -z "${enable_statistics+set}"   ; then enable_statistics=yes            ; fi
+    if test -z "${enable_replay+set}"       ; then enable_replay=yes                ; fi
+    if test -z "${enable_assertions+set}"   ; then enable_assertions=yes            ; fi
+    if test -z "${enable_proof+set}"        ; then enable_proof=yes                 ; fi
+    if test -z "${enable_tracing+set}"      ; then enable_tracing=yes               ; fi
+    if test -z "${enable_dumping+set}"      ; then enable_dumping=yes               ; fi
+    if test -z "${enable_muzzle+set}"       ; then enable_muzzle=no                 ; fi
+    ;;
+  competition) # maximally optimized, no assertions, no tracing, no dumping, muzzled
+    CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_COMPETITION_MODE"
+    CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }-funroll-all-loops -fexpensive-optimizations -fno-enforce-eh-specs"
+    CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }-funroll-all-loops -fexpensive-optimizations -fno-enforce-eh-specs"
+    CVC4LDFLAGS="${CVC4LDFLAGS:+$CVC4LDFLAGS }"
+    FLAG_VISIBILITY_HIDDEN='-fvisibility=hidden'
+    if test -z "${OPTLEVEL+set}"            ; then OPTLEVEL=9                       ; fi
+    if test -z "${enable_optimized+set}"    ; then enable_optimized=yes             ; fi
+    if test -z "${enable_debug_symbols+set}"; then enable_debug_symbols=no          ; fi
+    if test -z "${enable_statistics+set}"   ; then enable_statistics=no             ; fi
+    if test -z "${enable_replay+set}"       ; then enable_replay=no                 ; fi
+    if test -z "${enable_assertions+set}"   ; then enable_assertions=no             ; fi
+    if test -z "${enable_proof+set}"        ; then enable_proof=no                  ; fi
+    if test -z "${enable_tracing+set}"      ; then enable_tracing=no                ; fi
+    if test -z "${enable_dumping+set}"      ; then enable_dumping=no                ; fi
+    if test -z "${enable_muzzle+set}"       ; then enable_muzzle=yes                ; fi
+    if test -z "${user_specified_enable_or_disable_shared}"; then enable_shared=no; fi
+    if test -z "${user_specified_enable_or_disable_static}"; then enable_static=yes; fi
+    if test -z "${enable_static_binary+set}"; then enable_static_binary=yes         ; fi
+    ;;
+  *)
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "unknown build profile: $with_build
+See \`config.log' for more details" "$LINENO" 5; }
+    ;;
+esac
+if test -z "${OPTLEVEL+set}"; then OPTLEVEL=3; fi
+
+ if test "$with_build" = production; then
+  CVC4_BUILD_PROFILE_PRODUCTION_TRUE=
+  CVC4_BUILD_PROFILE_PRODUCTION_FALSE='#'
+else
+  CVC4_BUILD_PROFILE_PRODUCTION_TRUE='#'
+  CVC4_BUILD_PROFILE_PRODUCTION_FALSE=
+fi
+
+ if test "$with_build" = debug; then
+  CVC4_BUILD_PROFILE_DEBUG_TRUE=
+  CVC4_BUILD_PROFILE_DEBUG_FALSE='#'
+else
+  CVC4_BUILD_PROFILE_DEBUG_TRUE='#'
+  CVC4_BUILD_PROFILE_DEBUG_FALSE=
+fi
+
+ if test "$with_build" = default; then
+  CVC4_BUILD_PROFILE_DEFAULT_TRUE=
+  CVC4_BUILD_PROFILE_DEFAULT_FALSE='#'
+else
+  CVC4_BUILD_PROFILE_DEFAULT_TRUE='#'
+  CVC4_BUILD_PROFILE_DEFAULT_FALSE=
+fi
+
+ if test "$with_build" = competition; then
+  CVC4_BUILD_PROFILE_COMPETITION_TRUE=
+  CVC4_BUILD_PROFILE_COMPETITION_FALSE='#'
+else
+  CVC4_BUILD_PROFILE_COMPETITION_TRUE='#'
+  CVC4_BUILD_PROFILE_COMPETITION_FALSE=
+fi
+
+
+# permit a static binary
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build a static binary" >&5
+$as_echo_n "checking whether to build a static binary... " >&6; }
+# Check whether --enable-static-binary was given.
+if test "${enable_static_binary+set}" = set; then :
+  enableval=$enable_static_binary;
+fi
+
+if test -z "${enable_static_binary+set}"; then
+  enable_static_binary=no
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static_binary" >&5
+$as_echo "$enable_static_binary" >&6; }
+if test "$enable_static_binary" = yes; then
+  if test "$target_vendor" = apple; then
+    if test -z "$MAC_STATIC_BINARY_MANUAL_OVERRIDE"; then
+      as_fn_error $? "Statically-linked binaries are not supported on Mac OS.  See https://developer.apple.com/library/mac/#qa/qa2001/qa1118.html .  (If you ABSOLUTELY insist on this going forward and you know what you are doing, set MAC_STATIC_BINARY_MANUAL_OVERRIDE=1)" "$LINENO" 5
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: MAC_STATIC_BINARY_MANUAL_OVERRIDE was set!" >&5
+$as_echo "$as_me: WARNING: MAC_STATIC_BINARY_MANUAL_OVERRIDE was set!" >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Will make a static binary during this build.  Note that it may fail!" >&5
+$as_echo "$as_me: WARNING: Will make a static binary during this build.  Note that it may fail!" >&2;}
+    fi
+  fi
+  if test "$enable_static" != yes; then
+    enable_static=yes
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: forcing static-library building, --enable-static-binary given" >&5
+$as_echo "$as_me: WARNING: forcing static-library building, --enable-static-binary given" >&2;}
+  fi
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to support proofs in libcvc4" >&5
+$as_echo_n "checking whether to support proofs in libcvc4... " >&6; }
+
+# Check whether --enable-proof was given.
+if test "${enable_proof+set}" = set; then :
+  enableval=$enable_proof;
+fi
+
+if test -z "${enable_proof+set}"; then
+  enable_proof=yes
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_proof" >&5
+$as_echo "$enable_proof" >&6; }
+
+if test "$enable_proof" = yes; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_PROOF"
+fi
+ if test "$enable_proof" = yes; then
+  CVC4_PROOF_TRUE=
+  CVC4_PROOF_FALSE='#'
+else
+  CVC4_PROOF_TRUE='#'
+  CVC4_PROOF_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to optimize libcvc4" >&5
+$as_echo_n "checking whether to optimize libcvc4... " >&6; }
+
+# Check whether --enable-optimized was given.
+if test "${enable_optimized+set}" = set; then :
+  enableval=$enable_optimized;
+fi
+
+
+if test -z "${enable_optimized+set}"; then
+  enable_optimized=no
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_optimized" >&5
+$as_echo "$enable_optimized" >&6; }
+
+if test "$enable_optimized" = yes; then
+  CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }-O$OPTLEVEL"
+  CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }-O$OPTLEVEL"
+else
+  CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }-O0"
+  CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }-O0"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to include debugging symbols in libcvc4" >&5
+$as_echo_n "checking whether to include debugging symbols in libcvc4... " >&6; }
+
+# Check whether --enable-debug-symbols was given.
+if test "${enable_debug_symbols+set}" = set; then :
+  enableval=$enable_debug_symbols;
+fi
+
+
+if test -z "${enable_debug_symbols+set}"; then
+  enable_debug_symbols=yes
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_debug_symbols" >&5
+$as_echo "$enable_debug_symbols" >&6; }
+
+if test "$enable_debug_symbols" = yes; then
+  CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }-ggdb3"
+  CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }-ggdb3"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to include statistics are turned on in libcvc4" >&5
+$as_echo_n "checking whether to include statistics are turned on in libcvc4... " >&6; }
+
+# Check whether --enable-statistics was given.
+if test "${enable_statistics+set}" = set; then :
+  enableval=$enable_statistics;
+fi
+
+
+if test -z "${enable_statistics+set}"; then
+  enable_statistics=yes
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_statistics" >&5
+$as_echo "$enable_statistics" >&6; }
+
+if test "$enable_statistics" = yes; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_STATISTICS_ON"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the replay feature should be turned on in libcvc4" >&5
+$as_echo_n "checking whether the replay feature should be turned on in libcvc4... " >&6; }
+
+# Check whether --enable-replay was given.
+if test "${enable_replay+set}" = set; then :
+  enableval=$enable_replay;
+fi
+
+
+if test -z "${enable_replay+set}"; then
+  enable_replay=yes
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_replay" >&5
+$as_echo "$enable_replay" >&6; }
+
+if test "$enable_replay" = yes; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_REPLAY"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to include assertions in build" >&5
+$as_echo_n "checking whether to include assertions in build... " >&6; }
+
+# Check whether --enable-assertions was given.
+if test "${enable_assertions+set}" = set; then :
+  enableval=$enable_assertions;
+fi
+
+
+if test -z "${enable_assertions+set}"; then
+  enable_assertions=yes
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_assertions" >&5
+$as_echo "$enable_assertions" >&6; }
+
+if test "$enable_assertions" = yes; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_ASSERTIONS"
+else
+  # turn off regular C assert() also
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DNDEBUG"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to do a traceable build of CVC4" >&5
+$as_echo_n "checking whether to do a traceable build of CVC4... " >&6; }
+# Check whether --enable-tracing was given.
+if test "${enable_tracing+set}" = set; then :
+  enableval=$enable_tracing;
+fi
+
+
+if test -z "${enable_tracing+set}"; then
+  enable_tracing=yes
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_tracing" >&5
+$as_echo "$enable_tracing" >&6; }
+
+if test "$enable_tracing" = yes; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_TRACING"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to do a dump-capable build of CVC4" >&5
+$as_echo_n "checking whether to do a dump-capable build of CVC4... " >&6; }
+# Check whether --enable-dumping was given.
+if test "${enable_dumping+set}" = set; then :
+  enableval=$enable_dumping;
+fi
+
+
+if test -z "${enable_dumping+set}"; then
+  enable_dumping=yes
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_dumping" >&5
+$as_echo "$enable_dumping" >&6; }
+
+if test "$enable_dumping" = yes; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_DUMPING"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to do a muzzled build of CVC4" >&5
+$as_echo_n "checking whether to do a muzzled build of CVC4... " >&6; }
+# Check whether --enable-muzzle was given.
+if test "${enable_muzzle+set}" = set; then :
+  enableval=$enable_muzzle;
+fi
+
+
+if test -z "${enable_muzzle+set}"; then
+  enable_muzzle=no
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_muzzle" >&5
+$as_echo "$enable_muzzle" >&6; }
+
+if test "$enable_muzzle" = yes; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_MUZZLE"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to do a gcov-enabled build of CVC4" >&5
+$as_echo_n "checking whether to do a gcov-enabled build of CVC4... " >&6; }
+# Check whether --enable-coverage was given.
+if test "${enable_coverage+set}" = set; then :
+  enableval=$enable_coverage;
+fi
+
+
+if test -z "${enable_coverage+set}"; then
+  enable_coverage=no
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_coverage" >&5
+$as_echo "$enable_coverage" >&6; }
+
+if test "$enable_coverage" = yes; then
+  # For coverage testing, we prefer:
+  #     --enable-static --disable-shared --disable-static-binary
+  # If the user didn't specify these, we force them here.  If the
+  # user specified them in opposite phase, give warnings that they
+  # shouldn't do that, or bomb out.
+  if test "$user_specified_enable_or_disable_shared" != yes; then
+    enable_shared=no
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: turning off shared library building due to --enable-coverage" >&5
+$as_echo "$as_me: WARNING: turning off shared library building due to --enable-coverage" >&2;}
+  elif test "$enable_shared" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: " >&5
+$as_echo "$as_me: WARNING: " >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: It is not recommended to configure with --enable-coverage --enable-shared" >&5
+$as_echo "$as_me: WARNING: It is not recommended to configure with --enable-coverage --enable-shared" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: gcov does not support shared libraries, so only your static libraries will be coverage-testable." >&5
+$as_echo "$as_me: WARNING: gcov does not support shared libraries, so only your static libraries will be coverage-testable." >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your cvc4 driver and testing binaries will not be coverage-testable." >&5
+$as_echo "$as_me: WARNING: Your cvc4 driver and testing binaries will not be coverage-testable." >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: " >&5
+$as_echo "$as_me: WARNING: " >&2;}
+  fi
+  if test "${enable_static_binary+set}" = set -a "$enable_static_binary" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: " >&5
+$as_echo "$as_me: WARNING: " >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: It is not recommended to configure with --enable-coverage --enable-static-binary" >&5
+$as_echo "$as_me: WARNING: It is not recommended to configure with --enable-coverage --enable-static-binary" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your cvc4 driver and testing binaries will be fully-statically linked and may not be coverage-testable." >&5
+$as_echo "$as_me: WARNING: Your cvc4 driver and testing binaries will be fully-statically linked and may not be coverage-testable." >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: " >&5
+$as_echo "$as_me: WARNING: " >&2;}
+  fi
+  if test "$user_specified_enable_or_disable_static" != yes; then
+    enable_static=yes
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: turning on static library building due to --enable-coverage" >&5
+$as_echo "$as_me: WARNING: turning on static library building due to --enable-coverage" >&2;}
+  elif test "$enable_static" != yes; then
+    as_fn_error $? "--enable-coverage and --disable-static are incompatible; gcov only supports static libraries." "$LINENO" 5
+  fi
+
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_COVERAGE"
+  CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }--coverage"
+  CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }--coverage"
+  CVC4LDFLAGS="${CVC4LDFLAGS:+$CVC4LDFLAGS }--coverage"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to do a profiling-enabled build of CVC4" >&5
+$as_echo_n "checking whether to do a profiling-enabled build of CVC4... " >&6; }
+
+# Check whether --enable-profiling was given.
+if test "${enable_profiling+set}" = set; then :
+  enableval=$enable_profiling;
+fi
+
+
+if test -z "${enable_profiling+set}"; then
+  enable_profiling=no
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_profiling" >&5
+$as_echo "$enable_profiling" >&6; }
+
+if test "$enable_profiling" = yes; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_PROFILING"
+  CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }-pg"
+  CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }-pg"
+  CVC4LDFLAGS="${CVC4LDFLAGS:+$CVC4LDFLAGS }-pg"
+fi
+
+# Check for libglpk (defined in config/glpk.m4)
+
+# Check whether --with-glpk was given.
+if test "${with_glpk+set}" = set; then :
+  withval=$with_glpk;
+else
+  with_glpk=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether user requested glpk support" >&5
+$as_echo_n "checking whether user requested glpk support... " >&6; }
+LIBGLPK=
+have_libglpk=0
+GLPK_LIBS=
+GLPK_LDFLAGS=
+if test "$with_glpk" = no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, glpk disabled by user" >&5
+$as_echo "no, glpk disabled by user" >&6; }
+elif test -n "$with_glpk"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, glpk requested by user" >&5
+$as_echo "yes, glpk requested by user" >&6; }
+
+  # Get the location of all the GLPK stuff
+
+
+# Check whether --with-glpk-dir was given.
+if test "${with_glpk_dir+set}" = set; then :
+  withval=$with_glpk_dir; GLPK_HOME="$withval"
+else
+   if test -z "$GLPK_HOME"; then
+        { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "must give --with-glpk-dir=PATH or define environment variable GLPK_HOME!
+See \`config.log' for more details" "$LINENO" 5; }
+      fi
+
+
+fi
+
+
+  if test -n "$GLPK_HOME"; then
+    CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-I$GLPK_HOME/include"
+    GLPK_LDFLAGS="-L$GLPK_HOME/lib"
+  fi
+
+    GLPK_LIBS=
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  ac_fn_cxx_check_header_mongrel "$LINENO" "glpk.h" "ac_cv_header_glpk_h" "$ac_includes_default"
+if test "x$ac_cv_header_glpk_h" = xyes; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot find glpk.h, the GLPK header!
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link glpk" >&5
+$as_echo_n "checking how to link glpk... " >&6; }
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="$GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk "
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk "
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="$GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk -lgmp"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lgmp"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="$GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk -lz"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lz"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="$GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="$GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk -lltdl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lltdl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="$GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk -lltdl -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lltdl -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="$GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk -lz -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lz -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="$GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk -lz -lltdl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lz -lltdl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="$GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk -lz -lltdl -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lz -lltdl -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="$GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk -lgmp -lz"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lgmp -lz"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="$GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk -lgmp -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lgmp -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="$GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk -lgmp -lltdl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lgmp -lltdl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="$GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk -lgmp -lltdl -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lgmp -lltdl -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="$GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk -lgmp -lz -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lgmp -lz -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="$GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk -lgmp -lz -lltdl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lgmp -lz -lltdl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="$GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk -lgmp -lz -lltdl -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lgmp -lz -lltdl -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+  if test -z "$GLPK_LIBS"; then
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot link against libglpk! (perhaps you have not switched to glpk-cut-log? see /INSTALL)
+See \`config.log' for more details" "$LINENO" 5; }
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GLPK_LIBS" >&5
+$as_echo "$GLPK_LIBS" >&6; }
+    # make sure it works in static builds, too
+    if test "$enable_static_binary" = yes; then
+      GLPK_LIBS=
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether statically-linked glpk is functional" >&5
+$as_echo_n "checking whether statically-linked glpk is functional... " >&6; }
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="-static $GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk-static "
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk-static "
+else
+   LIBS="-lglpk "
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk "
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="-static $GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk-static -lgmp"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk-static -lgmp"
+else
+   LIBS="-lglpk -lgmp"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lgmp"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="-static $GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk-static -lz"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk-static -lz"
+else
+   LIBS="-lglpk -lz"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lz"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="-static $GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk-static -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk-static -ldl"
+else
+   LIBS="-lglpk -ldl"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="-static $GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk-static -lltdl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk-static -lltdl"
+else
+   LIBS="-lglpk -lltdl"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lltdl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="-static $GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk-static -lltdl -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk-static -lltdl -ldl"
+else
+   LIBS="-lglpk -lltdl -ldl"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lltdl -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="-static $GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk-static -lz -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk-static -lz -ldl"
+else
+   LIBS="-lglpk -lz -ldl"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lz -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="-static $GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk-static -lz -lltdl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk-static -lz -lltdl"
+else
+   LIBS="-lglpk -lz -lltdl"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lz -lltdl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="-static $GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk-static -lz -lltdl -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk-static -lz -lltdl -ldl"
+else
+   LIBS="-lglpk -lz -lltdl -ldl"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lz -lltdl -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="-static $GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk-static -lgmp -lz"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk-static -lgmp -lz"
+else
+   LIBS="-lglpk -lgmp -lz"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lgmp -lz"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="-static $GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk-static -lgmp -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk-static -lgmp -ldl"
+else
+   LIBS="-lglpk -lgmp -ldl"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lgmp -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="-static $GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk-static -lgmp -lltdl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk-static -lgmp -lltdl"
+else
+   LIBS="-lglpk -lgmp -lltdl"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lgmp -lltdl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="-static $GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk-static -lgmp -lltdl -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk-static -lgmp -lltdl -ldl"
+else
+   LIBS="-lglpk -lgmp -lltdl -ldl"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lgmp -lltdl -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="-static $GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk-static -lgmp -lz -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk-static -lgmp -lz -ldl"
+else
+   LIBS="-lglpk -lgmp -lz -ldl"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lgmp -lz -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="-static $GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk-static -lgmp -lz -lltdl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk-static -lgmp -lz -lltdl"
+else
+   LIBS="-lglpk -lgmp -lz -lltdl"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lgmp -lz -lltdl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$GLPK_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CVC4CPPFLAGS $CPPFLAGS"
+  LDFLAGS="-static $GLPK_LDFLAGS $LDFLAGS"
+  LIBS="-lglpk-static -lgmp -lz -lltdl -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk-static -lgmp -lz -lltdl -ldl"
+else
+   LIBS="-lglpk -lgmp -lz -lltdl -ldl"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <glpk.h>
+int
+main ()
+{
+int i = glp_ios_get_cut(NULL, 0, NULL, NULL, NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  GLPK_LIBS="-lglpk -lgmp -lz -lltdl -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+      if test -n "$GLPK_LIBS"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, it works" >&5
+$as_echo "yes, it works" >&6; }
+        with_glpk=yes
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+        { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "glpk installation appears incompatible with static-binary
+See \`config.log' for more details" "$LINENO" 5; }
+      fi
+    else
+      with_glpk=yes
+    fi
+  fi
+  if test "$with_glpk" = yes; then
+    have_libglpk=1
+  else
+    with_glpk=no
+    have_libreadline=0
+    GLPK_LIBS=
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, user didn't request glpk" >&5
+$as_echo "no, user didn't request glpk" >&6; }
+  with_glpk=no
+fi
+
+if test $have_libglpk -eq 1; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_USE_GLPK"
+fi
+ if test $have_libglpk -eq 1; then
+  CVC4_USE_GLPK_TRUE=
+  CVC4_USE_GLPK_FALSE='#'
+else
+  CVC4_USE_GLPK_TRUE='#'
+  CVC4_USE_GLPK_FALSE=
+fi
+
+
+
+
+# Build with libabc (defined in config/abc.m4)
+
+# Check whether --with-abc was given.
+if test "${with_abc+set}" = set; then :
+  withval=$with_abc;
+else
+  with_abc=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether user requested abc support" >&5
+$as_echo_n "checking whether user requested abc support... " >&6; }
+LIBABC=
+have_libabc=0
+ABC_LIBS=
+ABC_LDFLAGS=
+if test "$with_abc" = no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, abc disabled by user" >&5
+$as_echo "no, abc disabled by user" >&6; }
+elif test -n "$with_abc"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, abc requested by user" >&5
+$as_echo "yes, abc requested by user" >&6; }
+
+  # Get the location of all the ABC stuff
+
+
+# Check whether --with-abc-dir was given.
+if test "${with_abc_dir+set}" = set; then :
+  withval=$with_abc_dir; ABC_HOME="$withval"
+else
+   if test -z "$ABC_HOME"; then
+        { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "must give --with-abc-dir=PATH or define environment variable ABC_HOME!
+See \`config.log' for more details" "$LINENO" 5; }
+      fi
+
+
+fi
+
+  if ! test -d "$ABC_HOME" || ! test -x "$ABC_HOME/arch_flags"; then
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "either $ABC_HOME is not an abc source tree or it's not yet built
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for arch_flags to use with libabc" >&5
+$as_echo_n "checking for arch_flags to use with libabc... " >&6; }
+  libabc_arch_flags="$("$ABC_HOME/arch_flags")"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libabc_arch_flags" >&5
+$as_echo "$libabc_arch_flags" >&6; }
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-I$ABC_HOME/src $libabc_arch_flags"
+  ABC_LDFLAGS="-L$ABC_HOME"
+
+    cvc4_save_LDFLAGS="$LDFLAGS"
+  ABC_LIBS=
+  CPPFLAGS="$CPPFLAGS -I$ABC_HOME/src $libabc_arch_flags"
+  LDFLAGS="$LDFLAGS $ABC_LDFLAGS"
+  ac_fn_c_check_header_mongrel "$LINENO" "base/abc/abc.h" "ac_cv_header_base_abc_abc_h" "$ac_includes_default"
+if test "x$ac_cv_header_base_abc_abc_h" = xyes; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot find abc.h, the ABC header!
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link abc" >&5
+$as_echo_n "checking how to link abc... " >&6; }
+
+if test -z "$ABC_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  LIBS="-labc "
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc "
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$ABC_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  LIBS="-labc -lm"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc -lm"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$ABC_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  LIBS="-labc -lm -lrt"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc -lm -lrt"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$ABC_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  LIBS="-labc -lm -lrt -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc -lm -lrt -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$ABC_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  LIBS="-labc -lm -lrt -lreadline -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc -lm -lrt -lreadline -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$ABC_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  LIBS="-labc -lm -lpthread"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc -lm -lpthread"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$ABC_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  LIBS="-labc -lm -lpthread -lrt"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc -lm -lpthread -lrt"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$ABC_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  LIBS="-labc -lm -lpthread -lrt -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc -lm -lpthread -lrt -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$ABC_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  LIBS="-labc -lm -lpthread -lrt -lreadline -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc -lm -lpthread -lrt -lreadline -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+    if test -z "$ABC_LIBS"; then
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot link against libabc!
+See \`config.log' for more details" "$LINENO" 5; }
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ABC_LIBS" >&5
+$as_echo "$ABC_LIBS" >&6; }
+    # make sure it works in static builds, too
+    if test "$enable_static_binary" = yes; then
+      ABC_LIBS=
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether statically-linked abc is functional" >&5
+$as_echo_n "checking whether statically-linked abc is functional... " >&6; }
+
+if test -z "$ABC_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="-static $LDFLAGS"
+  LIBS="-labc-static "
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc-static "
+else
+   LIBS="-labc "
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc "
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$ABC_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="-static $LDFLAGS"
+  LIBS="-labc-static -lm"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc-static -lm"
+else
+   LIBS="-labc -lm"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc -lm"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$ABC_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="-static $LDFLAGS"
+  LIBS="-labc-static -lm -lrt"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc-static -lm -lrt"
+else
+   LIBS="-labc -lm -lrt"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc -lm -lrt"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$ABC_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="-static $LDFLAGS"
+  LIBS="-labc-static -lm -lrt -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc-static -lm -lrt -ldl"
+else
+   LIBS="-labc -lm -lrt -ldl"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc -lm -lrt -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$ABC_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="-static $LDFLAGS"
+  LIBS="-labc-static -lm -lrt -lreadline -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc-static -lm -lrt -lreadline -ldl"
+else
+   LIBS="-labc -lm -lrt -lreadline -ldl"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc -lm -lrt -lreadline -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$ABC_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="-static $LDFLAGS"
+  LIBS="-labc-static -lm -lpthread"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc-static -lm -lpthread"
+else
+   LIBS="-labc -lm -lpthread"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc -lm -lpthread"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$ABC_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="-static $LDFLAGS"
+  LIBS="-labc-static -lm -lpthread -lrt"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc-static -lm -lpthread -lrt"
+else
+   LIBS="-labc -lm -lpthread -lrt"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc -lm -lpthread -lrt"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$ABC_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="-static $LDFLAGS"
+  LIBS="-labc-static -lm -lpthread -lrt -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc-static -lm -lpthread -lrt -ldl"
+else
+   LIBS="-labc -lm -lpthread -lrt -ldl"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc -lm -lpthread -lrt -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$ABC_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="-static $LDFLAGS"
+  LIBS="-labc-static -lm -lpthread -lrt -lreadline -ldl"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc-static -lm -lpthread -lrt -lreadline -ldl"
+else
+   LIBS="-labc -lm -lpthread -lrt -lreadline -ldl"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern "C" { void Abc_Start(); }
+int
+main ()
+{
+Abc_Start()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ABC_LIBS="-labc -lm -lpthread -lrt -lreadline -ldl"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+      if test -n "$ABC_LIBS"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, it works" >&5
+$as_echo "yes, it works" >&6; }
+        with_abc=yes
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+        { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "abc installation appears incompatible with static-binary
+See \`config.log' for more details" "$LINENO" 5; }
+      fi
+    else
+      with_abc=yes
+    fi
+  fi
+  if test "$with_abc" = yes; then
+    have_libabc=1
+  else
+    with_abc=no
+    have_libreadline=0
+    ABC_LIBS=
+  fi
+  LDFLAGS="$cvc4_save_LDFLAGS"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, user didn't request abc" >&5
+$as_echo "no, user didn't request abc" >&6; }
+  with_abc=no
+fi
+
+if test $have_libabc -eq 1; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_USE_ABC"
+fi
+ if test $have_libabc -eq 1; then
+  CVC4_USE_ABC_TRUE=
+  CVC4_USE_ABC_FALSE='#'
+else
+  CVC4_USE_ABC_TRUE='#'
+  CVC4_USE_ABC_FALSE=
+fi
+
+
+
+
+
+# Build with libcryptominisat
+
+# Check whether --with-cryptominisat was given.
+if test "${with_cryptominisat+set}" = set; then :
+  withval=$with_cryptominisat;
+else
+  with_cryptominisat=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether user requested cryptominisat support" >&5
+$as_echo_n "checking whether user requested cryptominisat support... " >&6; }
+
+have_libcryptominisat=0
+CRYPTOMINISAT_LIBS=
+CRYPTOMINISAT_LDFLAGS=
+
+have_libcryptominisat=0
+if test "$with_cryptominisat" = no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, cryptominisat disabled by user" >&5
+$as_echo "no, cryptominisat disabled by user" >&6; }
+elif test -n "$with_cryptominisat"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, cryptominisat requested by user" >&5
+$as_echo "yes, cryptominisat requested by user" >&6; }
+
+
+# Check whether --with-cryptominisat-dir was given.
+if test "${with_cryptominisat_dir+set}" = set; then :
+  withval=$with_cryptominisat_dir; CRYPTOMINISAT_HOME="$withval"
+else
+   if test -z "$CRYPTOMINISAT_HOME"; then
+        { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "must give --with-cryptominisat-dir=PATH or define environment variable CRYPTOMINISAT_HOME!
+See \`config.log' for more details" "$LINENO" 5; }
+      fi
+
+
+fi
+
+
+  if ! test -d "$CRYPTOMINISAT_HOME" || ! test -x "$CRYPTOMINISAT_HOME/install/bin/cryptominisat" ; then
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "either $CRYPTOMINISAT_HOME is not an cryptominisat install tree or it's not yet built
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+
+  CPPFLAGS="$CPPFLAGS -I$CRYPTOMINISAT_HOME/install/include"
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link cryptominisat" >&5
+$as_echo_n "checking how to link cryptominisat... " >&6; }
+
+
+if test -z "$CRYPTOMINISAT_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+
+  LDFLAGS="-L$CRYPTOMINISAT_HOME/install/lib"
+  LIBS="-lcryptominisat4 "
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <cryptominisat4/cryptominisat.h>
+int
+main ()
+{
+CMSat::SATSolver test()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  CRYPTOMINISAT_LIBS="-lcryptominisat4 "
+else
+  CRYPTOMINISAT_LIBS=
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LIBS="$cvc4_save_LIBS"
+
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$CRYPTOMINISAT_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+
+  LDFLAGS="-L$CRYPTOMINISAT_HOME/install/lib"
+  LIBS="-lcryptominisat4 -lm4ri"
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <cryptominisat4/cryptominisat.h>
+int
+main ()
+{
+CMSat::SATSolver test()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  CRYPTOMINISAT_LIBS="-lcryptominisat4 -lm4ri"
+else
+  CRYPTOMINISAT_LIBS=
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LIBS="$cvc4_save_LIBS"
+
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+  if test -z "$CRYPTOMINISAT_LIBS"; then
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot link against libcryptominisat!
+See \`config.log' for more details" "$LINENO" 5; }
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CRYPTOMINISAT_LIBS" >&5
+$as_echo "$CRYPTOMINISAT_LIBS" >&6; }
+    have_libcryptominisat=1
+  fi
+
+  CRYPTOMINISAT_LDFLAGS="-L$CRYPTOMINISAT_HOME/install/lib"
+  CRYPTOMINISAT_LIBS="-lcryptominisat4 -lm4ri"
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, user didn't request cryptominisat" >&5
+$as_echo "no, user didn't request cryptominisat" >&6; }
+  with_cryptominisat=no
+fi
+
+
+if test $have_libcryptominisat -eq 1; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_USE_CRYPTOMINISAT"
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-I$CRYPTOMINISAT_HOME/install/include"
+fi
+ if test $have_libcryptominisat -eq 1; then
+  CVC4_USE_CRYPTOMINISAT_TRUE=
+  CVC4_USE_CRYPTOMINISAT_FALSE='#'
+else
+  CVC4_USE_CRYPTOMINISAT_TRUE='#'
+  CVC4_USE_CRYPTOMINISAT_FALSE=
+fi
+
+
+
+
+
+# Check to see if this version/architecture of GNU C++ explicitly
+# instantiates __gnu_cxx::hash<uint64_t> or not.  Some do, some don't.
+# See src/util/hash.h.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __gnu_cxx::hash<uint64_t> is already specialized" >&5
+$as_echo_n "checking whether __gnu_cxx::hash<uint64_t> is already specialized... " >&6; }
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdint.h>
+#include <ext/hash_map>
+namespace __gnu_cxx { template<> struct hash<uint64_t> {}; }
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }; CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_NEED_HASH_UINT64_T"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Check whether "long" and "int64_t" are distinct types w.r.t. overloading.
+# Even if they have the same size, they can be distinct, and some platforms
+# can have problems with ambiguous function calls when auto-converting
+# int64_t to long, and others will complain if you overload a function
+# that takes an int64_t with one that takes a long (giving a redefinition
+# error).  So we have to keep both happy.  Probably the same underlying
+# issue as the hash specialization above, but let's check separately
+# for flexibility.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the relationship between long and int64_t" >&5
+$as_echo_n "checking for the relationship between long and int64_t... " >&6; }
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdint.h>
+void foo(long) {}
+void foo(int64_t) {}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no relationship detected" >&5
+$as_echo "no relationship detected" >&6; }; CVC4_NEED_INT64_T_OVERLOADS=1
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: typedef or similar" >&5
+$as_echo "typedef or similar" >&6; }; CVC4_NEED_INT64_T_OVERLOADS=0
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# Check for ANTLR runantlr script (defined in config/antlr.m4)
+
+
+
+  # Check the existence of the runantlr script
+  if test "x$ANTLR" = "x"; then
+    # Extract the first word of "antlr3", so it can be a program name with args.
+set dummy antlr3; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ANTLR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ANTLR in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ANTLR="$ANTLR" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ANTLR="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ANTLR=$ac_cv_path_ANTLR
+if test -n "$ANTLR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ANTLR" >&5
+$as_echo "$ANTLR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking antlr3 script ($ANTLR)" >&5
+$as_echo_n "checking antlr3 script ($ANTLR)... " >&6; }
+    if test ! -e "$ANTLR"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+      unset ANTLR
+    elif test ! -x "$ANTLR"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: not executable" >&5
+$as_echo "not executable" >&6; }
+      unset ANTLR
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: OK" >&5
+$as_echo "OK" >&6; }
+    fi
+  fi
+  if test "x$ANTLR" = "x"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: No usable antlr3 script found. Make sure that the parser code has
+been generated already. To obtain ANTLR see <http://www.antlr3.org/>.
+    " >&5
+$as_echo "$as_me: WARNING: No usable antlr3 script found. Make sure that the parser code has
+been generated already. To obtain ANTLR see <http://www.antlr3.org/>.
+    " >&2;}
+    ANTLR_VERSION=
+  else
+    ANTLR_VERSION="`$ANTLR -version 2>&1 | sed 's,.*Version  *\([0-9.]*\).*,\1,'`"
+    case "$ANTLR_VERSION" in
+      3.2|3.2.*) ANTLR_VERSION=3.2 ;;
+      3.4|3.4.*) ANTLR_VERSION=3.4 ;;
+      *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unknown version of antlr: $ANTLR_VERSION" >&5
+$as_echo "$as_me: WARNING: unknown version of antlr: $ANTLR_VERSION" >&2;};;
+    esac
+  fi
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports -Werror" >&5
+$as_echo_n "checking whether $CXX supports -Werror... " >&6; }
+cvc4_save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS $WERROR -Werror"
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main() { return 0; }
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }; WERROR='-Werror'
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CXXFLAGS="$cvc4_save_CXXFLAGS"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Werror" >&5
+$as_echo_n "checking whether $CC supports -Werror... " >&6; }
+cvc4_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $C_WERROR -Werror"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main() { return 0; }
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }; C_WERROR='-Werror'
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CFLAGS="$cvc4_save_CFLAGS"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports -Wno-deprecated" >&5
+$as_echo_n "checking whether $CXX supports -Wno-deprecated... " >&6; }
+cvc4_save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS $WERROR -Wno-deprecated"
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main() { return 0; }
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }; WNO_DEPRECATED='-Wno-deprecated'
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CXXFLAGS="$cvc4_save_CXXFLAGS"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wno-deprecated" >&5
+$as_echo_n "checking whether $CC supports -Wno-deprecated... " >&6; }
+cvc4_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $C_WERROR -Wno-deprecated"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main() { return 0; }
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }; C_WNO_DEPRECATED='-Wno-deprecated'
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CFLAGS="$cvc4_save_CFLAGS"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports -Wno-conversion-null" >&5
+$as_echo_n "checking whether $CXX supports -Wno-conversion-null... " >&6; }
+cvc4_save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS $WERROR -Wno-conversion-null"
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main() { return 0; }
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }; WNO_CONVERSION_NULL='-Wno-conversion-null'
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CXXFLAGS="$cvc4_save_CXXFLAGS"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports -Wno-tautological-compare" >&5
+$as_echo_n "checking whether $CXX supports -Wno-tautological-compare... " >&6; }
+cvc4_save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS $WERROR -Wno-tautological-compare"
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main() { return 0; }
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }; WNO_TAUTOLOGICAL_COMPARE='-Wno-tautological-compare'
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CXXFLAGS="$cvc4_save_CXXFLAGS"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports -Wno-parentheses" >&5
+$as_echo_n "checking whether $CXX supports -Wno-parentheses... " >&6; }
+cvc4_save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS $WERROR -Wno-parentheses"
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main() { return 0; }
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }; WNO_PARENTHESES='-Wno-parentheses'
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CXXFLAGS="$cvc4_save_CXXFLAGS"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports -Wno-uninitialized" >&5
+$as_echo_n "checking whether $CXX supports -Wno-uninitialized... " >&6; }
+cvc4_save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS $WERROR -Wno-uninitialized"
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main() { return 0; }
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }; WNO_UNINITIALIZED='-Wno-uninitialized'
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CXXFLAGS="$cvc4_save_CXXFLAGS"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports -Wno-unused-variable" >&5
+$as_echo_n "checking whether $CXX supports -Wno-unused-variable... " >&6; }
+cvc4_save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS $WERROR -Wno-unused-variable"
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main() { return 0; }
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }; WNO_UNUSED_VARIABLE='-Wno-unused-variable'
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CXXFLAGS="$cvc4_save_CXXFLAGS"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports -fno-strict-aliasing" >&5
+$as_echo_n "checking whether $CXX supports -fno-strict-aliasing... " >&6; }
+cvc4_save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS $WERROR -fno-strict-aliasing"
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main() { return 0; }
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }; FNO_STRICT_ALIASING='-fno-strict-aliasing'
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CXXFLAGS="$cvc4_save_CXXFLAGS"
+
+
+
+
+
+
+
+
+
+# On Mac, we have to fix the visibility of standard library symbols.
+# Otherwise, exported template instantiations---even though explicitly
+# CVC4_PUBLIC, can be generated as symbols with internal-only linkage.
+# Presumably, Apple is distributing a libstdc++ that is built *without*
+# --enable-libstdcxx-visibility (?)
+if test "$target_vendor" = apple; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-D_GLIBCXX_VISIBILITY_DEFAULT=\"__attribute__((__visibility__(\\\"default\\\")))\""
+fi
+
+# Tell top-level Makefile to include $(top_srcdir)/personal.mk
+# Check whether --enable-personal-make-rules was given.
+if test "${enable_personal_make_rules+set}" = set; then :
+  enableval=$enable_personal_make_rules;
+fi
+
+if test "$enable_personal_make_rules" = yes; then
+  # This allows us to include a personal.mk makefile from every
+  # generated makefile.  Named zz_* in order to make sure this
+  # comes last, so it gets other definitions (in particular top_srcdir).
+  zz_cvc4_use_personal_make_rules='yes
+
+all:;
+include $(top_srcdir)/personal.mk
+$(top_srcdir)/personal.mk:; @touch "$@"'
+
+fi
+
+# Doxygen configuration
+# Check whether --enable-internals-documentation was given.
+if test "${enable_internals_documentation+set}" = set; then :
+  enableval=$enable_internals_documentation;
+fi
+
+if test "$enable_internals_documentation" = yes; then
+  DOXYGEN_EXTRACT_PRIVATE=YES
+  DOXYGEN_EXTRACT_STATIC=YES
+else
+  DOXYGEN_EXTRACT_PRIVATE=NO
+  DOXYGEN_EXTRACT_STATIC=NO
+fi
+
+
+
+
+
+
+
+
+
+# Files:
+DX_PROJECT=$PACKAGE_NAME
+
+DX_CONFIG=config/doxygen.cfg
+
+DX_DOCDIR=$srcdir/doc/doxygen
+
+
+# Environment variables used inside doxygen.cfg:
+DX_ENV="$DX_ENV SRCDIR='$srcdir'"
+
+DX_ENV="$DX_ENV PROJECT='$DX_PROJECT'"
+
+DX_ENV="$DX_ENV DOCDIR='$DX_DOCDIR'"
+
+DX_ENV="$DX_ENV VERSION='$PACKAGE_VERSION'"
+
+
+# Doxygen itself:
+
+
+
+
+    # Check whether --enable-doxygen-doc was given.
+if test "${enable_doxygen_doc+set}" = set; then :
+  enableval=$enable_doxygen_doc;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_doc=1
+
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_doc=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-doc" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_doc=1
+
+
+
+fi
+
+if test "$DX_FLAG_doc" = 1; then
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}doxygen", so it can be a program name with args.
+set dummy ${ac_tool_prefix}doxygen; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_DOXYGEN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_DOXYGEN in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_DOXYGEN="$DX_DOXYGEN" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_DOXYGEN="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_DOXYGEN=$ac_cv_path_DX_DOXYGEN
+if test -n "$DX_DOXYGEN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_DOXYGEN" >&5
+$as_echo "$DX_DOXYGEN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_DOXYGEN"; then
+  ac_pt_DX_DOXYGEN=$DX_DOXYGEN
+  # Extract the first word of "doxygen", so it can be a program name with args.
+set dummy doxygen; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_DOXYGEN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_DOXYGEN in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_DOXYGEN="$ac_pt_DX_DOXYGEN" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_DOXYGEN="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_DOXYGEN=$ac_cv_path_ac_pt_DX_DOXYGEN
+if test -n "$ac_pt_DX_DOXYGEN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_DOXYGEN" >&5
+$as_echo "$ac_pt_DX_DOXYGEN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_DOXYGEN" = x; then
+    DX_DOXYGEN=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_DOXYGEN=$ac_pt_DX_DOXYGEN
+  fi
+else
+  DX_DOXYGEN="$ac_cv_path_DX_DOXYGEN"
+fi
+
+if test "$DX_FLAG_doc$DX_DOXYGEN" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: doxygen not found - will not generate any doxygen documentation" >&5
+$as_echo "$as_me: WARNING: doxygen not found - will not generate any doxygen documentation" >&2;}
+    DX_FLAG_doc=0
+
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}perl", so it can be a program name with args.
+set dummy ${ac_tool_prefix}perl; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_PERL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_PERL in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_PERL="$DX_PERL" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_PERL="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_PERL=$ac_cv_path_DX_PERL
+if test -n "$DX_PERL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_PERL" >&5
+$as_echo "$DX_PERL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_PERL"; then
+  ac_pt_DX_PERL=$DX_PERL
+  # Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_PERL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_PERL in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_PERL="$ac_pt_DX_PERL" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_PERL="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_PERL=$ac_cv_path_ac_pt_DX_PERL
+if test -n "$ac_pt_DX_PERL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_PERL" >&5
+$as_echo "$ac_pt_DX_PERL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_PERL" = x; then
+    DX_PERL=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_PERL=$ac_pt_DX_PERL
+  fi
+else
+  DX_PERL="$ac_cv_path_DX_PERL"
+fi
+
+if test "$DX_FLAG_doc$DX_PERL" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: perl not found - will not generate any doxygen documentation" >&5
+$as_echo "$as_me: WARNING: perl not found - will not generate any doxygen documentation" >&2;}
+    DX_FLAG_doc=0
+
+fi
+
+    :
+fi
+if test "$DX_FLAG_doc" = 1; then
+     if :; then
+  DX_COND_doc_TRUE=
+  DX_COND_doc_FALSE='#'
+else
+  DX_COND_doc_TRUE='#'
+  DX_COND_doc_FALSE=
+fi
+
+    DX_ENV="$DX_ENV PERL_PATH='$DX_PERL'"
+
+    :
+else
+     if false; then
+  DX_COND_doc_TRUE=
+  DX_COND_doc_FALSE='#'
+else
+  DX_COND_doc_TRUE='#'
+  DX_COND_doc_FALSE=
+fi
+
+
+    :
+fi
+
+
+# Dot for graphics:
+
+
+
+
+    # Check whether --enable-doxygen-dot was given.
+if test "${enable_doxygen_dot+set}" = set; then :
+  enableval=$enable_doxygen_dot;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_dot=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-dot requires doxygen-dot" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_dot=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-dot" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_dot=1
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_dot=0
+
+
+
+fi
+
+if test "$DX_FLAG_dot" = 1; then
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dot", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dot; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_DOT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_DOT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_DOT="$DX_DOT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_DOT="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_DOT=$ac_cv_path_DX_DOT
+if test -n "$DX_DOT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_DOT" >&5
+$as_echo "$DX_DOT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_DOT"; then
+  ac_pt_DX_DOT=$DX_DOT
+  # Extract the first word of "dot", so it can be a program name with args.
+set dummy dot; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_DOT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_DOT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_DOT="$ac_pt_DX_DOT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_DOT="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_DOT=$ac_cv_path_ac_pt_DX_DOT
+if test -n "$ac_pt_DX_DOT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_DOT" >&5
+$as_echo "$ac_pt_DX_DOT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_DOT" = x; then
+    DX_DOT=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_DOT=$ac_pt_DX_DOT
+  fi
+else
+  DX_DOT="$ac_cv_path_DX_DOT"
+fi
+
+if test "$DX_FLAG_dot$DX_DOT" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: dot not found - will not generate graphics for doxygen documentation" >&5
+$as_echo "$as_me: WARNING: dot not found - will not generate graphics for doxygen documentation" >&2;}
+    DX_FLAG_dot=0
+
+fi
+
+    :
+fi
+if test "$DX_FLAG_dot" = 1; then
+     if :; then
+  DX_COND_dot_TRUE=
+  DX_COND_dot_FALSE='#'
+else
+  DX_COND_dot_TRUE='#'
+  DX_COND_dot_FALSE=
+fi
+
+    DX_ENV="$DX_ENV HAVE_DOT='YES'"
+
+             DX_ENV="$DX_ENV DOT_PATH='`expr ".$DX_DOT" : '\(\.\)[^/]*$' \| "x$DX_DOT" : 'x\(.*\)/[^/]*$'`'"
+
+    :
+else
+     if false; then
+  DX_COND_dot_TRUE=
+  DX_COND_dot_FALSE='#'
+else
+  DX_COND_dot_TRUE='#'
+  DX_COND_dot_FALSE=
+fi
+
+    DX_ENV="$DX_ENV HAVE_DOT='NO'"
+
+    :
+fi
+
+
+# Man pages generation:
+
+
+
+
+    # Check whether --enable-doxygen-man was given.
+if test "${enable_doxygen_man+set}" = set; then :
+  enableval=$enable_doxygen_man;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_man=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-man requires doxygen-man" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_man=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-man" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_man=0
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_man=0
+
+
+
+fi
+
+if test "$DX_FLAG_man" = 1; then
+
+    :
+fi
+if test "$DX_FLAG_man" = 1; then
+     if :; then
+  DX_COND_man_TRUE=
+  DX_COND_man_FALSE='#'
+else
+  DX_COND_man_TRUE='#'
+  DX_COND_man_FALSE=
+fi
+
+    DX_ENV="$DX_ENV GENERATE_MAN='YES'"
+
+    :
+else
+     if false; then
+  DX_COND_man_TRUE=
+  DX_COND_man_FALSE='#'
+else
+  DX_COND_man_TRUE='#'
+  DX_COND_man_FALSE=
+fi
+
+    DX_ENV="$DX_ENV GENERATE_MAN='NO'"
+
+    :
+fi
+
+
+# RTF file generation:
+
+
+
+
+    # Check whether --enable-doxygen-rtf was given.
+if test "${enable_doxygen_rtf+set}" = set; then :
+  enableval=$enable_doxygen_rtf;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_rtf=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-rtf requires doxygen-rtf" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_rtf=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-rtf" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_rtf=0
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_rtf=0
+
+
+
+fi
+
+if test "$DX_FLAG_rtf" = 1; then
+
+    :
+fi
+if test "$DX_FLAG_rtf" = 1; then
+     if :; then
+  DX_COND_rtf_TRUE=
+  DX_COND_rtf_FALSE='#'
+else
+  DX_COND_rtf_TRUE='#'
+  DX_COND_rtf_FALSE=
+fi
+
+    DX_ENV="$DX_ENV GENERATE_RTF='YES'"
+
+    :
+else
+     if false; then
+  DX_COND_rtf_TRUE=
+  DX_COND_rtf_FALSE='#'
+else
+  DX_COND_rtf_TRUE='#'
+  DX_COND_rtf_FALSE=
+fi
+
+    DX_ENV="$DX_ENV GENERATE_RTF='NO'"
+
+    :
+fi
+
+
+# XML file generation:
+
+
+
+
+    # Check whether --enable-doxygen-xml was given.
+if test "${enable_doxygen_xml+set}" = set; then :
+  enableval=$enable_doxygen_xml;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_xml=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-xml requires doxygen-xml" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_xml=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-xml" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_xml=0
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_xml=0
+
+
+
+fi
+
+if test "$DX_FLAG_xml" = 1; then
+
+    :
+fi
+if test "$DX_FLAG_xml" = 1; then
+     if :; then
+  DX_COND_xml_TRUE=
+  DX_COND_xml_FALSE='#'
+else
+  DX_COND_xml_TRUE='#'
+  DX_COND_xml_FALSE=
+fi
+
+    DX_ENV="$DX_ENV GENERATE_XML='YES'"
+
+    :
+else
+     if false; then
+  DX_COND_xml_TRUE=
+  DX_COND_xml_FALSE='#'
+else
+  DX_COND_xml_TRUE='#'
+  DX_COND_xml_FALSE=
+fi
+
+    DX_ENV="$DX_ENV GENERATE_XML='NO'"
+
+    :
+fi
+
+
+# (Compressed) HTML help generation:
+
+
+
+
+    # Check whether --enable-doxygen-chm was given.
+if test "${enable_doxygen_chm+set}" = set; then :
+  enableval=$enable_doxygen_chm;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_chm=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-chm requires doxygen-chm" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_chm=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-chm" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_chm=0
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_chm=0
+
+
+
+fi
+
+if test "$DX_FLAG_chm" = 1; then
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}hhc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}hhc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_HHC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_HHC in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_HHC="$DX_HHC" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_HHC="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_HHC=$ac_cv_path_DX_HHC
+if test -n "$DX_HHC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_HHC" >&5
+$as_echo "$DX_HHC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_HHC"; then
+  ac_pt_DX_HHC=$DX_HHC
+  # Extract the first word of "hhc", so it can be a program name with args.
+set dummy hhc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_HHC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_HHC in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_HHC="$ac_pt_DX_HHC" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_HHC="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_HHC=$ac_cv_path_ac_pt_DX_HHC
+if test -n "$ac_pt_DX_HHC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_HHC" >&5
+$as_echo "$ac_pt_DX_HHC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_HHC" = x; then
+    DX_HHC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_HHC=$ac_pt_DX_HHC
+  fi
+else
+  DX_HHC="$ac_cv_path_DX_HHC"
+fi
+
+if test "$DX_FLAG_chm$DX_HHC" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: hhc not found - will not generate doxygen compressed HTML help documentation" >&5
+$as_echo "$as_me: WARNING: hhc not found - will not generate doxygen compressed HTML help documentation" >&2;}
+    DX_FLAG_chm=0
+
+fi
+
+    :
+fi
+if test "$DX_FLAG_chm" = 1; then
+     if :; then
+  DX_COND_chm_TRUE=
+  DX_COND_chm_FALSE='#'
+else
+  DX_COND_chm_TRUE='#'
+  DX_COND_chm_FALSE=
+fi
+
+    DX_ENV="$DX_ENV HHC_PATH='$DX_HHC'"
+
+             DX_ENV="$DX_ENV GENERATE_HTML='YES'"
+
+             DX_ENV="$DX_ENV GENERATE_HTMLHELP='YES'"
+
+    :
+else
+     if false; then
+  DX_COND_chm_TRUE=
+  DX_COND_chm_FALSE='#'
+else
+  DX_COND_chm_TRUE='#'
+  DX_COND_chm_FALSE=
+fi
+
+    DX_ENV="$DX_ENV GENERATE_HTMLHELP='NO'"
+
+    :
+fi
+
+
+# Seperate CHI file generation.
+
+
+
+
+    # Check whether --enable-doxygen-chi was given.
+if test "${enable_doxygen_chi+set}" = set; then :
+  enableval=$enable_doxygen_chi;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_chi=1
+
+
+test "$DX_FLAG_chm" = "1" \
+|| as_fn_error $? "doxygen-chi requires doxygen-chi" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_chi=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-chi" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_chi=0
+
+
+test "$DX_FLAG_chm" = "1" || DX_FLAG_chi=0
+
+
+
+fi
+
+if test "$DX_FLAG_chi" = 1; then
+
+    :
+fi
+if test "$DX_FLAG_chi" = 1; then
+     if :; then
+  DX_COND_chi_TRUE=
+  DX_COND_chi_FALSE='#'
+else
+  DX_COND_chi_TRUE='#'
+  DX_COND_chi_FALSE=
+fi
+
+    DX_ENV="$DX_ENV GENERATE_CHI='YES'"
+
+    :
+else
+     if false; then
+  DX_COND_chi_TRUE=
+  DX_COND_chi_FALSE='#'
+else
+  DX_COND_chi_TRUE='#'
+  DX_COND_chi_FALSE=
+fi
+
+    DX_ENV="$DX_ENV GENERATE_CHI='NO'"
+
+    :
+fi
+
+
+# Plain HTML pages generation:
+
+
+
+
+    # Check whether --enable-doxygen-html was given.
+if test "${enable_doxygen_html+set}" = set; then :
+  enableval=$enable_doxygen_html;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_html=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-html requires doxygen-html" "$LINENO" 5
+
+test "$DX_FLAG_chm" = "0" \
+|| as_fn_error $? "doxygen-html contradicts doxygen-html" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_html=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-html" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_html=1
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_html=0
+
+
+test "$DX_FLAG_chm" = "0" || DX_FLAG_html=0
+
+
+
+fi
+
+if test "$DX_FLAG_html" = 1; then
+
+    :
+fi
+if test "$DX_FLAG_html" = 1; then
+     if :; then
+  DX_COND_html_TRUE=
+  DX_COND_html_FALSE='#'
+else
+  DX_COND_html_TRUE='#'
+  DX_COND_html_FALSE=
+fi
+
+    DX_ENV="$DX_ENV GENERATE_HTML='YES'"
+
+    :
+else
+     if false; then
+  DX_COND_html_TRUE=
+  DX_COND_html_FALSE='#'
+else
+  DX_COND_html_TRUE='#'
+  DX_COND_html_FALSE=
+fi
+
+    test "$DX_FLAG_chm" = 1 || DX_ENV="$DX_ENV GENERATE_HTML='NO'"
+
+    :
+fi
+
+
+# PostScript file generation:
+
+
+
+
+    # Check whether --enable-doxygen-ps was given.
+if test "${enable_doxygen_ps+set}" = set; then :
+  enableval=$enable_doxygen_ps;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_ps=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-ps requires doxygen-ps" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_ps=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-ps" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_ps=0
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_ps=0
+
+
+
+fi
+
+if test "$DX_FLAG_ps" = 1; then
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}latex", so it can be a program name with args.
+set dummy ${ac_tool_prefix}latex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_LATEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_LATEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_LATEX="$DX_LATEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_LATEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_LATEX=$ac_cv_path_DX_LATEX
+if test -n "$DX_LATEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_LATEX" >&5
+$as_echo "$DX_LATEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_LATEX"; then
+  ac_pt_DX_LATEX=$DX_LATEX
+  # Extract the first word of "latex", so it can be a program name with args.
+set dummy latex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_LATEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_LATEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_LATEX="$ac_pt_DX_LATEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_LATEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_LATEX=$ac_cv_path_ac_pt_DX_LATEX
+if test -n "$ac_pt_DX_LATEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_LATEX" >&5
+$as_echo "$ac_pt_DX_LATEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_LATEX" = x; then
+    DX_LATEX=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_LATEX=$ac_pt_DX_LATEX
+  fi
+else
+  DX_LATEX="$ac_cv_path_DX_LATEX"
+fi
+
+if test "$DX_FLAG_ps$DX_LATEX" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: latex not found - will not generate doxygen PostScript documentation" >&5
+$as_echo "$as_me: WARNING: latex not found - will not generate doxygen PostScript documentation" >&2;}
+    DX_FLAG_ps=0
+
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}makeindex", so it can be a program name with args.
+set dummy ${ac_tool_prefix}makeindex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_MAKEINDEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_MAKEINDEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_MAKEINDEX="$DX_MAKEINDEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_MAKEINDEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_MAKEINDEX=$ac_cv_path_DX_MAKEINDEX
+if test -n "$DX_MAKEINDEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_MAKEINDEX" >&5
+$as_echo "$DX_MAKEINDEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_MAKEINDEX"; then
+  ac_pt_DX_MAKEINDEX=$DX_MAKEINDEX
+  # Extract the first word of "makeindex", so it can be a program name with args.
+set dummy makeindex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_MAKEINDEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_MAKEINDEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_MAKEINDEX="$ac_pt_DX_MAKEINDEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_MAKEINDEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_MAKEINDEX=$ac_cv_path_ac_pt_DX_MAKEINDEX
+if test -n "$ac_pt_DX_MAKEINDEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_MAKEINDEX" >&5
+$as_echo "$ac_pt_DX_MAKEINDEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_MAKEINDEX" = x; then
+    DX_MAKEINDEX=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_MAKEINDEX=$ac_pt_DX_MAKEINDEX
+  fi
+else
+  DX_MAKEINDEX="$ac_cv_path_DX_MAKEINDEX"
+fi
+
+if test "$DX_FLAG_ps$DX_MAKEINDEX" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: makeindex not found - will not generate doxygen PostScript documentation" >&5
+$as_echo "$as_me: WARNING: makeindex not found - will not generate doxygen PostScript documentation" >&2;}
+    DX_FLAG_ps=0
+
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dvips", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dvips; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_DVIPS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_DVIPS in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_DVIPS="$DX_DVIPS" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_DVIPS="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_DVIPS=$ac_cv_path_DX_DVIPS
+if test -n "$DX_DVIPS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_DVIPS" >&5
+$as_echo "$DX_DVIPS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_DVIPS"; then
+  ac_pt_DX_DVIPS=$DX_DVIPS
+  # Extract the first word of "dvips", so it can be a program name with args.
+set dummy dvips; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_DVIPS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_DVIPS in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_DVIPS="$ac_pt_DX_DVIPS" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_DVIPS="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_DVIPS=$ac_cv_path_ac_pt_DX_DVIPS
+if test -n "$ac_pt_DX_DVIPS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_DVIPS" >&5
+$as_echo "$ac_pt_DX_DVIPS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_DVIPS" = x; then
+    DX_DVIPS=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_DVIPS=$ac_pt_DX_DVIPS
+  fi
+else
+  DX_DVIPS="$ac_cv_path_DX_DVIPS"
+fi
+
+if test "$DX_FLAG_ps$DX_DVIPS" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: dvips not found - will not generate doxygen PostScript documentation" >&5
+$as_echo "$as_me: WARNING: dvips not found - will not generate doxygen PostScript documentation" >&2;}
+    DX_FLAG_ps=0
+
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}egrep", so it can be a program name with args.
+set dummy ${ac_tool_prefix}egrep; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_EGREP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_EGREP="$DX_EGREP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_EGREP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_EGREP=$ac_cv_path_DX_EGREP
+if test -n "$DX_EGREP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_EGREP" >&5
+$as_echo "$DX_EGREP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_EGREP"; then
+  ac_pt_DX_EGREP=$DX_EGREP
+  # Extract the first word of "egrep", so it can be a program name with args.
+set dummy egrep; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_EGREP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_EGREP="$ac_pt_DX_EGREP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_EGREP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_EGREP=$ac_cv_path_ac_pt_DX_EGREP
+if test -n "$ac_pt_DX_EGREP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_EGREP" >&5
+$as_echo "$ac_pt_DX_EGREP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_EGREP" = x; then
+    DX_EGREP=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_EGREP=$ac_pt_DX_EGREP
+  fi
+else
+  DX_EGREP="$ac_cv_path_DX_EGREP"
+fi
+
+if test "$DX_FLAG_ps$DX_EGREP" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: egrep not found - will not generate doxygen PostScript documentation" >&5
+$as_echo "$as_me: WARNING: egrep not found - will not generate doxygen PostScript documentation" >&2;}
+    DX_FLAG_ps=0
+
+fi
+
+    :
+fi
+if test "$DX_FLAG_ps" = 1; then
+     if :; then
+  DX_COND_ps_TRUE=
+  DX_COND_ps_FALSE='#'
+else
+  DX_COND_ps_TRUE='#'
+  DX_COND_ps_FALSE=
+fi
+
+
+    :
+else
+     if false; then
+  DX_COND_ps_TRUE=
+  DX_COND_ps_FALSE='#'
+else
+  DX_COND_ps_TRUE='#'
+  DX_COND_ps_FALSE=
+fi
+
+
+    :
+fi
+
+
+# PDF file generation:
+
+
+
+
+    # Check whether --enable-doxygen-pdf was given.
+if test "${enable_doxygen_pdf+set}" = set; then :
+  enableval=$enable_doxygen_pdf;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_pdf=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-pdf requires doxygen-pdf" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_pdf=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-pdf" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_pdf=1
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_pdf=0
+
+
+
+fi
+
+if test "$DX_FLAG_pdf" = 1; then
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pdflatex", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pdflatex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_PDFLATEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_PDFLATEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_PDFLATEX="$DX_PDFLATEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_PDFLATEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_PDFLATEX=$ac_cv_path_DX_PDFLATEX
+if test -n "$DX_PDFLATEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_PDFLATEX" >&5
+$as_echo "$DX_PDFLATEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_PDFLATEX"; then
+  ac_pt_DX_PDFLATEX=$DX_PDFLATEX
+  # Extract the first word of "pdflatex", so it can be a program name with args.
+set dummy pdflatex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_PDFLATEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_PDFLATEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_PDFLATEX="$ac_pt_DX_PDFLATEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_PDFLATEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_PDFLATEX=$ac_cv_path_ac_pt_DX_PDFLATEX
+if test -n "$ac_pt_DX_PDFLATEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_PDFLATEX" >&5
+$as_echo "$ac_pt_DX_PDFLATEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_PDFLATEX" = x; then
+    DX_PDFLATEX=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_PDFLATEX=$ac_pt_DX_PDFLATEX
+  fi
+else
+  DX_PDFLATEX="$ac_cv_path_DX_PDFLATEX"
+fi
+
+if test "$DX_FLAG_pdf$DX_PDFLATEX" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: pdflatex not found - will not generate doxygen PDF documentation" >&5
+$as_echo "$as_me: WARNING: pdflatex not found - will not generate doxygen PDF documentation" >&2;}
+    DX_FLAG_pdf=0
+
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}makeindex", so it can be a program name with args.
+set dummy ${ac_tool_prefix}makeindex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_MAKEINDEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_MAKEINDEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_MAKEINDEX="$DX_MAKEINDEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_MAKEINDEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_MAKEINDEX=$ac_cv_path_DX_MAKEINDEX
+if test -n "$DX_MAKEINDEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_MAKEINDEX" >&5
+$as_echo "$DX_MAKEINDEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_MAKEINDEX"; then
+  ac_pt_DX_MAKEINDEX=$DX_MAKEINDEX
+  # Extract the first word of "makeindex", so it can be a program name with args.
+set dummy makeindex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_MAKEINDEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_MAKEINDEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_MAKEINDEX="$ac_pt_DX_MAKEINDEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_MAKEINDEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_MAKEINDEX=$ac_cv_path_ac_pt_DX_MAKEINDEX
+if test -n "$ac_pt_DX_MAKEINDEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_MAKEINDEX" >&5
+$as_echo "$ac_pt_DX_MAKEINDEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_MAKEINDEX" = x; then
+    DX_MAKEINDEX=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_MAKEINDEX=$ac_pt_DX_MAKEINDEX
+  fi
+else
+  DX_MAKEINDEX="$ac_cv_path_DX_MAKEINDEX"
+fi
+
+if test "$DX_FLAG_pdf$DX_MAKEINDEX" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: makeindex not found - will not generate doxygen PDF documentation" >&5
+$as_echo "$as_me: WARNING: makeindex not found - will not generate doxygen PDF documentation" >&2;}
+    DX_FLAG_pdf=0
+
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}egrep", so it can be a program name with args.
+set dummy ${ac_tool_prefix}egrep; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_EGREP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_EGREP="$DX_EGREP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DX_EGREP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_EGREP=$ac_cv_path_DX_EGREP
+if test -n "$DX_EGREP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_EGREP" >&5
+$as_echo "$DX_EGREP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_EGREP"; then
+  ac_pt_DX_EGREP=$DX_EGREP
+  # Extract the first word of "egrep", so it can be a program name with args.
+set dummy egrep; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_EGREP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_EGREP="$ac_pt_DX_EGREP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_DX_EGREP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_EGREP=$ac_cv_path_ac_pt_DX_EGREP
+if test -n "$ac_pt_DX_EGREP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_EGREP" >&5
+$as_echo "$ac_pt_DX_EGREP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_EGREP" = x; then
+    DX_EGREP=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_EGREP=$ac_pt_DX_EGREP
+  fi
+else
+  DX_EGREP="$ac_cv_path_DX_EGREP"
+fi
+
+if test "$DX_FLAG_pdf$DX_EGREP" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: egrep not found - will not generate doxygen PDF documentation" >&5
+$as_echo "$as_me: WARNING: egrep not found - will not generate doxygen PDF documentation" >&2;}
+    DX_FLAG_pdf=0
+
+fi
+
+    :
+fi
+if test "$DX_FLAG_pdf" = 1; then
+     if :; then
+  DX_COND_pdf_TRUE=
+  DX_COND_pdf_FALSE='#'
+else
+  DX_COND_pdf_TRUE='#'
+  DX_COND_pdf_FALSE=
+fi
+
+
+    :
+else
+     if false; then
+  DX_COND_pdf_TRUE=
+  DX_COND_pdf_FALSE='#'
+else
+  DX_COND_pdf_TRUE='#'
+  DX_COND_pdf_FALSE=
+fi
+
+
+    :
+fi
+
+
+# LaTeX generation for PS and/or PDF:
+if test "$DX_FLAG_ps" = 1 || test "$DX_FLAG_pdf" = 1; then
+     if :; then
+  DX_COND_latex_TRUE=
+  DX_COND_latex_FALSE='#'
+else
+  DX_COND_latex_TRUE='#'
+  DX_COND_latex_FALSE=
+fi
+
+    DX_ENV="$DX_ENV GENERATE_LATEX='YES'"
+
+else
+     if false; then
+  DX_COND_latex_TRUE=
+  DX_COND_latex_FALSE='#'
+else
+  DX_COND_latex_TRUE='#'
+  DX_COND_latex_FALSE=
+fi
+
+    DX_ENV="$DX_ENV GENERATE_LATEX='NO'"
+
+fi
+
+# Paper size for PS and/or PDF:
+
+case "$DOXYGEN_PAPER_SIZE" in
+#(
+"")
+    DOXYGEN_PAPER_SIZE=""
+
+;; #(
+a4wide|a4|letter|legal|executive)
+    DX_ENV="$DX_ENV PAPER_SIZE='$DOXYGEN_PAPER_SIZE'"
+
+;; #(
+*)
+    as_fn_error $? "unknown DOXYGEN_PAPER_SIZE='$DOXYGEN_PAPER_SIZE'" "$LINENO" 5
+;;
+esac
+
+#For debugging:
+#echo DX_FLAG_doc=$DX_FLAG_doc
+#echo DX_FLAG_dot=$DX_FLAG_dot
+#echo DX_FLAG_man=$DX_FLAG_man
+#echo DX_FLAG_html=$DX_FLAG_html
+#echo DX_FLAG_chm=$DX_FLAG_chm
+#echo DX_FLAG_chi=$DX_FLAG_chi
+#echo DX_FLAG_rtf=$DX_FLAG_rtf
+#echo DX_FLAG_xml=$DX_FLAG_xml
+#echo DX_FLAG_pdf=$DX_FLAG_pdf
+#echo DX_FLAG_ps=$DX_FLAG_ps
+#echo DX_ENV=$DX_ENV
+
+
+# Check whether --enable-unit-testing was given.
+if test "${enable_unit_testing+set}" = set; then :
+  enableval=$enable_unit_testing;
+else
+  enable_unit_testing=check
+fi
+
+
+
+
+
+
+# Check whether --with-cxxtest-dir was given.
+if test "${with_cxxtest_dir+set}" = set; then :
+  withval=$with_cxxtest_dir; CXXTEST="$withval"
+fi
+
+
+# In the case of "./configure --with-cxxtest-dir=../cxxtest" (or other
+# relative path) and having switched the configure directory (see above),
+# search with respect to the top source dir, not the build dir
+if test "$CVC4_CONFIGURE_IN_BUILDS" = yes -a -n "$CXXTEST"; then
+  case "$CXXTEST" in
+    /*) ;;
+    *)  CXXTEST="$srcdir/$CXXTEST" ;;
+  esac
+fi
+
+TESTS_ENVIRONMENT=
+RUN_REGRESSION_ARGS=
+if test "$enable_proof" = yes; then
+  RUN_REGRESSION_ARGS="${RUN_REGRESSION_ARGS:+$RUN_REGRESSION_ARGS }--proof"
+fi
+
+
+
+CXXTESTGEN=
+# Extract the first word of "cxxtestgen.pl", so it can be a program name with args.
+set dummy cxxtestgen.pl; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CXXTESTGEN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $CXXTESTGEN in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_CXXTESTGEN="$CXXTESTGEN" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$CXXTEST:$PATH"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_CXXTESTGEN="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+CXXTESTGEN=$ac_cv_path_CXXTESTGEN
+if test -n "$CXXTESTGEN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXTESTGEN" >&5
+$as_echo "$CXXTESTGEN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test -z "$CXXTESTGEN"; then
+  # Extract the first word of "cxxtestgen.py", so it can be a program name with args.
+set dummy cxxtestgen.py; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CXXTESTGEN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $CXXTESTGEN in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_CXXTESTGEN="$CXXTESTGEN" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$CXXTEST:$PATH"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_CXXTESTGEN="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+CXXTESTGEN=$ac_cv_path_CXXTESTGEN
+if test -n "$CXXTESTGEN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXTESTGEN" >&5
+$as_echo "$CXXTESTGEN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CXXTESTGEN"; then
+  # Extract the first word of "cxxtestgen", so it can be a program name with args.
+set dummy cxxtestgen; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CXXTESTGEN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $CXXTESTGEN in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_CXXTESTGEN="$CXXTESTGEN" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$CXXTEST:$PATH"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_CXXTESTGEN="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+CXXTESTGEN=$ac_cv_path_CXXTESTGEN
+if test -n "$CXXTESTGEN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXTESTGEN" >&5
+$as_echo "$CXXTESTGEN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+# The latest version of cxxtest distributed from the git repository places
+# cxxtest under <cxxtest-root>/bin/cxxtest
+if test -z "$CXXTESTGEN"; then
+  # Extract the first word of "cxxtestgen", so it can be a program name with args.
+set dummy cxxtestgen; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CXXTESTGEN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $CXXTESTGEN in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_CXXTESTGEN="$CXXTESTGEN" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$CXXTEST/bin:$PATH"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_CXXTESTGEN="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+CXXTESTGEN=$ac_cv_path_CXXTESTGEN
+if test -n "$CXXTESTGEN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXTESTGEN" >&5
+$as_echo "$CXXTESTGEN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test "$enable_unit_testing" = "no"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: unit tests disabled by user request." >&5
+$as_echo "$as_me: unit tests disabled by user request." >&6;}
+  CXXTESTGEN=
+  CXXTEST=
+elif test -z "$CXXTESTGEN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: unit tests disabled, could not find cxxtestgen.pl or cxxtestgen.py or cxxtestgen" >&5
+$as_echo "$as_me: unit tests disabled, could not find cxxtestgen.pl or cxxtestgen.py or cxxtestgen" >&6;}
+elif test -z "$CXXTEST"; then
+  CXXTEST=`dirname "$CXXTESTGEN"`
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of CxxTest headers" >&5
+$as_echo_n "checking for location of CxxTest headers... " >&6; }
+  if test -e "$CXXTEST/cxxtest/TestRunner.h"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXTEST" >&5
+$as_echo "$CXXTEST" >&6; }
+  else
+    if test -e "/usr/include/cxxtest/TestRunner.h"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: /usr/include" >&5
+$as_echo "/usr/include" >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unit tests disabled, CxxTest headers not found." >&5
+$as_echo "$as_me: WARNING: unit tests disabled, CxxTest headers not found." >&2;}
+      CXXTESTGEN=
+      CXXTEST=
+    fi
+  fi
+fi
+
+if test "$enable_unit_testing" = yes -a -z "$CXXTESTGEN"; then
+  as_fn_error $? "--enable-unit-testing given but cxxtest not found." "$LINENO" 5
+fi
+
+ if test -n "$CXXTESTGEN"; then
+  HAVE_CXXTESTGEN_TRUE=
+  HAVE_CXXTESTGEN_FALSE='#'
+else
+  HAVE_CXXTESTGEN_TRUE='#'
+  HAVE_CXXTESTGEN_FALSE=
+fi
+
+
+
+
+
+
+
+
+if test -n "$CXXTEST"; then
+  if test -z "$PERL"; then
+    for ac_prog in perl
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_PERL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$PERL"; then
+  ac_cv_prog_PERL="$PERL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_PERL="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+PERL=$ac_cv_prog_PERL
+if test -n "$PERL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
+$as_echo "$PERL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$PERL" && break
+done
+test -n "$PERL" || PERL="perl"
+
+  else
+    # Extract the first word of ""$PERL"", so it can be a program name with args.
+set dummy "$PERL"; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_PERL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$PERL"; then
+  ac_cv_prog_PERL="$PERL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_PERL=""$PERL""
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+PERL=$ac_cv_prog_PERL
+if test -n "$PERL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
+$as_echo "$PERL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+
+  if test -z "$PERL"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unit tests disabled, perl not found." >&5
+$as_echo "$as_me: WARNING: unit tests disabled, perl not found." >&2;}
+    CXXTESTGEN=
+    CXXTEST=
+  fi
+fi
+
+
+
+if test -z "$PYTHON"; then
+  for ac_prog in python
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_PYTHON+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$PYTHON"; then
+  ac_cv_prog_PYTHON="$PYTHON" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_PYTHON="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+PYTHON=$ac_cv_prog_PYTHON
+if test -n "$PYTHON"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+$as_echo "$PYTHON" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$PYTHON" && break
+done
+test -n "$PYTHON" || PYTHON="python"
+
+else
+  # Extract the first word of ""$PYTHON"", so it can be a program name with args.
+set dummy "$PYTHON"; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_PYTHON+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$PYTHON"; then
+  ac_cv_prog_PYTHON="$PYTHON" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_PYTHON=""$PYTHON""
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+PYTHON=$ac_cv_prog_PYTHON
+if test -n "$PYTHON"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+$as_echo "$PYTHON" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+
+if test -z "$PYTHON"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: python not found, cannot build libcvc4compat_java (the legacy Java interface)." >&5
+$as_echo "$as_me: WARNING: python not found, cannot build libcvc4compat_java (the legacy Java interface)." >&2;}
+  CXXTESTGEN=
+  CXXTEST=
+fi
+
+# Checks for libraries.
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5
+$as_echo_n "checking for library containing clock_gettime... " >&6; }
+if ${ac_cv_search_clock_gettime+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char clock_gettime ();
+int
+main ()
+{
+return clock_gettime ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' rt pthread; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_clock_gettime=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_clock_gettime+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_clock_gettime+:} false; then :
+
+else
+  ac_cv_search_clock_gettime=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5
+$as_echo "$ac_cv_search_clock_gettime" >&6; }
+ac_res=$ac_cv_search_clock_gettime
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+$as_echo "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h
+
+else
+  case " $LIBOBJS " in
+  *" clock_gettime.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS clock_gettime.$ac_objext"
+ ;;
+esac
+
+fi
+
+ac_fn_c_check_func "$LINENO" "strtok_r" "ac_cv_func_strtok_r"
+if test "x$ac_cv_func_strtok_r" = xyes; then :
+
+$as_echo "#define HAVE_STRTOK_R 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "ffs" "ac_cv_func_ffs"
+if test "x$ac_cv_func_ffs" = xyes; then :
+
+$as_echo "#define HAVE_FFS 1" >>confdefs.h
+
+fi
+
+
+case " $LIBOBJS " in
+  *" strtok_r ffs.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS strtok_r ffs.$ac_objext"
+ ;;
+esac
+
+
+# Check for antlr C++ runtime (defined in config/antlr.m4)
+
+
+
+  # Get the location of the ANTLR3 C includes and libraries
+
+# Check whether --with-antlr-dir was given.
+if test "${with_antlr_dir+set}" = set; then :
+  withval=$with_antlr_dir; ANTLR_PREFIXES="$withval"
+else
+  ANTLR_PREFIXES="$ANTLR_HOME /usr/local /usr /opt/local /opt"
+
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANTLR3 C runtime library" >&5
+$as_echo_n "checking for ANTLR3 C runtime library... " >&6; }
+
+  # Use C and remember the variables we are changing
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+  OLD_CPPFLAGS="$CPPFLAGS"
+  OLD_LIBS="$LIBS"
+
+  # Try all the includes/libs set in ANTLR_PREFIXES
+  for antlr_prefix in $ANTLR_PREFIXES
+  do
+    CPPFLAGS="$OLD_CPPFLAGS -I$antlr_prefix/include"
+    LIBS="$OLD_LIBS -L$antlr_prefix/lib -lantlr3c"
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+        #include <antlr3.h>
+
+        int main() {
+          pANTLR3_TOKEN_FACTORY factory = antlr3TokenFactoryNew((pANTLR3_INPUT_STREAM) NULL);
+          return 0;
+        }
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: found in $antlr_prefix" >&5
+$as_echo "found in $antlr_prefix" >&6; }
+        ANTLR_INCLUDES="-I$antlr_prefix/include"
+        ANTLR_LDFLAGS="-L$antlr_prefix/lib -lantlr3c"
+        break
+
+else
+
+            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+            as_fn_error $? "ANTLR3 C runtime not found, see <http://www.antlr3.org/>" "$LINENO" 5
+
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  done
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for presence of older antlr3AsciiFileStreamNew()" >&5
+$as_echo_n "checking for presence of older antlr3AsciiFileStreamNew()... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+      #include <antlr3.h>
+
+      int main() {
+        pANTLR3_UINT8 fName = (pANTLR3_UINT8)"foo";
+        pANTLR3_INPUT_STREAM input = antlr3AsciiFileStreamNew(fName);
+        return 0;
+      }
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: found it (must be antlr3 3.2 or similar)" >&5
+$as_echo "found it (must be antlr3 3.2 or similar)" >&6; }
+      if test -n "$ANTLR_VERSION" -a "$ANTLR_VERSION" != 3.2; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: your antlr parser generator is version $ANTLR_VERSION, which doesn't match the library!" >&5
+$as_echo "$as_me: WARNING: your antlr parser generator is version $ANTLR_VERSION, which doesn't match the library!" >&2;}
+      fi
+      CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_ANTLR3_OLD_INPUT_STREAM"
+
+else
+
+          { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for presence of newer antlr3FileStreamNew()" >&5
+$as_echo_n "checking for presence of newer antlr3FileStreamNew()... " >&6; }
+          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+              #include <antlr3.h>
+
+              int main() {
+                pANTLR3_UINT8 fName = (pANTLR3_UINT8)"foo";
+                pANTLR3_INPUT_STREAM input = antlr3FileStreamNew(fName, ANTLR3_ENC_8BIT);
+                return 0;
+              }
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: found it (must be antlr3 3.4 or similar)" >&5
+$as_echo "found it (must be antlr3 3.4 or similar)" >&6; }
+              if test -n "$ANTLR_VERSION" -a "$ANTLR_VERSION" != 3.4; then
+                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: your antlr parser generator is version $ANTLR_VERSION, which doesn't match the library!" >&5
+$as_echo "$as_me: WARNING: your antlr parser generator is version $ANTLR_VERSION, which doesn't match the library!" >&2;}
+              fi
+
+else
+
+                  as_fn_error $? "cannot figure out how to create an antlr3 input stream, bailing.." "$LINENO" 5
+
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+  # Return the old compile variables and pop the language.
+  LIBS="$OLD_LIBS"
+  CPPFLAGS="$OLD_CPPFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+  # Define the ANTLR include/libs variables
+
+
+
+
+# Check for user preferences for language bindings to build, and for
+# build support.  The arg list is the default set if unspecified by
+# the user (the actual built set is the subset that appears to be
+# supported by the build host).
+
+noswig=no
+
+cvc4_build_c_bindings=no
+cvc4_build_java_bindings=no
+cvc4_build_csharp_bindings=no
+cvc4_build_perl_bindings=no
+cvc4_build_php_bindings=no
+cvc4_build_python_bindings=no
+cvc4_build_ruby_bindings=no
+cvc4_build_tcl_bindings=no
+cvc4_build_ocaml_bindings=no
+
+
+
+
+# Check whether --with-swig was given.
+if test "${with_swig+set}" = set; then :
+  withval=$with_swig; if test "$withval" = no; then noswig=yes; else SWIG="$withval"; fi
+fi
+
+# Check whether --enable-language-bindings was given.
+if test "${enable_language_bindings+set}" = set; then :
+  enableval=$enable_language_bindings; if test "$enableval" = yes; then cvc4_check_for_bindings=yes; try_bindings='c java'; else cvc4_check_for_bindings=no; if test "$enableval" = no; then try_bindings=; else try_bindings="$enableval"; fi; fi
+else
+  cvc4_check_for_bindings=no; try_bindings=
+fi
+
+CVC4_LANGUAGE_BINDINGS=
+if test "$noswig" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: use of swig disabled by user, native API bindings disabled." >&5
+$as_echo "$as_me: WARNING: use of swig disabled by user, native API bindings disabled." >&2;}
+  SWIG=
+else
+  if test -z "$SWIG"; then
+    for ac_prog in swig swig2.0
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_SWIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$SWIG"; then
+  ac_cv_prog_SWIG="$SWIG" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_SWIG="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+SWIG=$ac_cv_prog_SWIG
+if test -n "$SWIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5
+$as_echo "$SWIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$SWIG" && break
+done
+
+  else
+    # Extract the first word of ""$SWIG"", so it can be a program name with args.
+set dummy "$SWIG"; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_SWIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$SWIG"; then
+  ac_cv_prog_SWIG="$SWIG" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_SWIG=""$SWIG""
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+SWIG=$ac_cv_prog_SWIG
+if test -n "$SWIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5
+$as_echo "$SWIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+  if test -z "$SWIG"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: language bindings for native API disabled, swig not found." >&5
+$as_echo "$as_me: WARNING: language bindings for native API disabled, swig not found." >&2;}
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking compatibility with version of swig" >&5
+$as_echo_n "checking compatibility with version of swig... " >&6; }
+    cat > conftest.c << _CVC4EOF
+%module conftest
+#if !defined(SWIG_VERSION) || SWIG_VERSION < 0x020000
+#error bad version
+#endif
+_CVC4EOF
+    if $SWIG conftest.c >&5 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: compatible version" >&5
+$as_echo "compatible version" >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: incompatible version" >&5
+$as_echo "incompatible version" >&6; }
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: swig version 2.0.0 or later is required to build native API bindings" >&5
+$as_echo "$as_me: WARNING: swig version 2.0.0 or later is required to build native API bindings" >&2;}
+      SWIG=
+      echo '===Failed swig input was:' >&5
+      cat conftest.c >&5
+      echo '===End failed swig input' >&5
+      rm -f conftest.c
+    fi
+  fi
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for requested user language bindings" >&5
+$as_echo_n "checking for requested user language bindings... " >&6; }
+if test "$try_bindings" = all; then
+  try_bindings='c,c++,java'
+fi
+try_bindings=$(echo "$try_bindings" | sed 's/,/ /g')
+if test -z "$try_bindings"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $try_bindings" >&5
+$as_echo "$try_bindings" >&6; }
+fi
+CVC4_UNSUPPORTED_LANGUAGE_BINDINGS=
+cvc4_save_CPPFLAGS="$CPPFLAGS"
+cvc4_save_CXXFLAGS="$CXXFLAGS"
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+for binding in $try_bindings; do
+  __cvc4_lang_supported=no
+  if test "$binding" = "c"; then __cvc4_lang_supported=yes; fi
+  if test "$binding" = "c++"; then __cvc4_lang_supported=yes; fi
+  if test "$binding" = "java"; then __cvc4_lang_supported=yes; fi
+    if test $__cvc4_lang_supported = no; then
+    CVC4_UNSUPPORTED_LANGUAGE_BINDINGS="${CVC4_UNSUPPORTED_LANGUAGE_BINDINGS:+$CVC4_UNSUPPORTED_LANGUAGE_BINDINGS }$binding"
+  fi
+
+  binding_error=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for availability of $binding binding" >&5
+$as_echo_n "checking for availability of $binding binding... " >&6; }
+  case "$binding" in
+    c++)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: C++ is built by default" >&5
+$as_echo "C++ is built by default" >&6; };;
+    c)
+      cvc4_build_c_bindings=yes
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: C support will be built" >&5
+$as_echo "C support will be built" >&6; };;
+    java)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: Java support will be built" >&5
+$as_echo "Java support will be built" >&6; }
+
+  if test -z "$SWIG"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: swig not available or incompatible version; $binding bindings require swig 2.0.0 or later" >&5
+$as_echo "$as_me: WARNING: swig not available or incompatible version; $binding bindings require swig 2.0.0 or later" >&2;}
+    binding_error=yes
+  fi
+
+
+      CPPFLAGS="$CPPFLAGS $JAVA_CPPFLAGS"
+      ac_fn_cxx_check_header_mongrel "$LINENO" "jni.h" "ac_cv_header_jni_h" "$ac_includes_default"
+if test "x$ac_cv_header_jni_h" = xyes; then :
+  cvc4_build_java_bindings=yes
+else
+  binding_error=yes
+fi
+
+
+      ;;
+    csharp)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: C# support will be built" >&5
+$as_echo "C# support will be built" >&6; }
+
+  if test -z "$SWIG"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: swig not available or incompatible version; $binding bindings require swig 2.0.0 or later" >&5
+$as_echo "$as_me: WARNING: swig not available or incompatible version; $binding bindings require swig 2.0.0 or later" >&2;}
+    binding_error=yes
+  fi
+
+
+      CPPFLAGS="$CPPFLAGS $CSHARP_CPPFLAGS"
+      cvc4_build_csharp_bindings=yes
+      ;;
+    perl)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: perl support will be built" >&5
+$as_echo "perl support will be built" >&6; }
+
+  if test -z "$SWIG"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: swig not available or incompatible version; $binding bindings require swig 2.0.0 or later" >&5
+$as_echo "$as_me: WARNING: swig not available or incompatible version; $binding bindings require swig 2.0.0 or later" >&2;}
+    binding_error=yes
+  fi
+
+
+      CPPFLAGS="$CPPFLAGS $PERL_CPPFLAGS"
+      ac_fn_cxx_check_header_mongrel "$LINENO" "EXTERN.h" "ac_cv_header_EXTERN_h" "$ac_includes_default"
+if test "x$ac_cv_header_EXTERN_h" = xyes; then :
+  cvc4_build_perl_bindings=yes
+else
+  binding_error=yes
+fi
+
+
+      ;;
+    php)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: php support will be built" >&5
+$as_echo "php support will be built" >&6; }
+
+  if test -z "$SWIG"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: swig not available or incompatible version; $binding bindings require swig 2.0.0 or later" >&5
+$as_echo "$as_me: WARNING: swig not available or incompatible version; $binding bindings require swig 2.0.0 or later" >&2;}
+    binding_error=yes
+  fi
+
+
+      CPPFLAGS="$CPPFLAGS $PHP_CPPFLAGS"
+      ac_fn_cxx_check_header_mongrel "$LINENO" "zend.h" "ac_cv_header_zend_h" "$ac_includes_default"
+if test "x$ac_cv_header_zend_h" = xyes; then :
+  cvc4_build_php_bindings=yes
+else
+  binding_error=yes
+fi
+
+
+      ;;
+    python)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: python support will be built" >&5
+$as_echo "python support will be built" >&6; }
+
+  if test -z "$SWIG"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: swig not available or incompatible version; $binding bindings require swig 2.0.0 or later" >&5
+$as_echo "$as_me: WARNING: swig not available or incompatible version; $binding bindings require swig 2.0.0 or later" >&2;}
+    binding_error=yes
+  fi
+
+
+
+
+
+
+
+        if test -n "$PYTHON"; then
+      # If the user set $PYTHON, use it and don't search something else.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 2.5" >&5
+$as_echo_n "checking whether $PYTHON version is >= 2.5... " >&6; }
+      prog="import sys
+# split strings by '.' and convert to numeric.  Append some zeros
+# because we need at least 4 digits for the hex conversion.
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0]
+minverhex = 0
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
+sys.exit(sys.hexversion < minverhex)"
+  if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5
+   ($PYTHON -c "$prog") >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+			       as_fn_error $? "Python interpreter is too old" "$LINENO" 5
+fi
+      am_display_PYTHON=$PYTHON
+    else
+      # Otherwise, try each interpreter until we find one that satisfies
+      # VERSION.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.5" >&5
+$as_echo_n "checking for a Python interpreter with version >= 2.5... " >&6; }
+if ${am_cv_pathless_PYTHON+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+	for am_cv_pathless_PYTHON in python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7  python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do
+	  test "$am_cv_pathless_PYTHON" = none && break
+	  prog="import sys
+# split strings by '.' and convert to numeric.  Append some zeros
+# because we need at least 4 digits for the hex conversion.
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0]
+minverhex = 0
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
+sys.exit(sys.hexversion < minverhex)"
+  if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5
+   ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }; then :
+  break
+fi
+	done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
+$as_echo "$am_cv_pathless_PYTHON" >&6; }
+      # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
+      if test "$am_cv_pathless_PYTHON" = none; then
+	PYTHON=:
+      else
+        # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
+set dummy $am_cv_pathless_PYTHON; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PYTHON+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PYTHON in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PYTHON=$ac_cv_path_PYTHON
+if test -n "$PYTHON"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+$as_echo "$PYTHON" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+      fi
+      am_display_PYTHON=$am_cv_pathless_PYTHON
+    fi
+
+
+  if test "$PYTHON" = :; then
+      binding_error=yes
+  else
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
+$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
+if ${am_cv_python_version+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
+$as_echo "$am_cv_python_version" >&6; }
+  PYTHON_VERSION=$am_cv_python_version
+
+
+
+  PYTHON_PREFIX='${prefix}'
+
+  PYTHON_EXEC_PREFIX='${exec_prefix}'
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
+$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
+if ${am_cv_python_platform+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
+$as_echo "$am_cv_python_platform" >&6; }
+  PYTHON_PLATFORM=$am_cv_python_platform
+
+
+  # Just factor out some code duplication.
+  am_python_setup_sysconfig="\
+import sys
+# Prefer sysconfig over distutils.sysconfig, for better compatibility
+# with python 3.x.  See automake bug#10227.
+try:
+    import sysconfig
+except ImportError:
+    can_use_sysconfig = 0
+else:
+    can_use_sysconfig = 1
+# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
+# <https://github.com/pypa/virtualenv/issues/118>
+try:
+    from platform import python_implementation
+    if python_implementation() == 'CPython' and sys.version[:3] == '2.7':
+        can_use_sysconfig = 0
+except ImportError:
+    pass"
+
+
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
+$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
+if ${am_cv_python_pythondir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$prefix" = xNONE
+     then
+       am_py_prefix=$ac_default_prefix
+     else
+       am_py_prefix=$prefix
+     fi
+     am_cv_python_pythondir=`$PYTHON -c "
+$am_python_setup_sysconfig
+if can_use_sysconfig:
+    sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+else:
+    from distutils import sysconfig
+    sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+sys.stdout.write(sitedir)"`
+     case $am_cv_python_pythondir in
+     $am_py_prefix*)
+       am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+       am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
+       ;;
+     *)
+       case $am_py_prefix in
+         /usr|/System*) ;;
+         *)
+	  am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
+	  ;;
+       esac
+       ;;
+     esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
+$as_echo "$am_cv_python_pythondir" >&6; }
+  pythondir=$am_cv_python_pythondir
+
+
+
+  pkgpythondir=\${pythondir}/$PACKAGE
+
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
+$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
+if ${am_cv_python_pyexecdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$exec_prefix" = xNONE
+     then
+       am_py_exec_prefix=$am_py_prefix
+     else
+       am_py_exec_prefix=$exec_prefix
+     fi
+     am_cv_python_pyexecdir=`$PYTHON -c "
+$am_python_setup_sysconfig
+if can_use_sysconfig:
+    sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
+else:
+    from distutils import sysconfig
+    sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
+sys.stdout.write(sitedir)"`
+     case $am_cv_python_pyexecdir in
+     $am_py_exec_prefix*)
+       am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+       am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
+       ;;
+     *)
+       case $am_py_exec_prefix in
+         /usr|/System*) ;;
+         *)
+	   am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
+	   ;;
+       esac
+       ;;
+     esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
+$as_echo "$am_cv_python_pyexecdir" >&6; }
+  pyexecdir=$am_cv_python_pyexecdir
+
+
+
+  pkgpyexecdir=\${pyexecdir}/$PACKAGE
+
+
+    cvc4_build_python_bindings=yes
+  fi
+
+
+
+
+      if test -z "$PYTHON_INCLUDE"; then :
+
+        if test -z "$PYTHON_CONFIG"; then :
+
+          for ac_prog in python$PYTHON_VERSION-config python-config
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PYTHON_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PYTHON_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PYTHON_CONFIG="$PYTHON_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PYTHON_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PYTHON_CONFIG=$ac_cv_path_PYTHON_CONFIG
+if test -n "$PYTHON_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CONFIG" >&5
+$as_echo "$PYTHON_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$PYTHON_CONFIG" && break
+done
+test -n "$PYTHON_CONFIG" || PYTHON_CONFIG="no
+          "
+
+          if test "$PYTHON_CONFIG" = no; then :
+  as_fn_error $? "cannot find python-config for $PYTHON." "$LINENO" 5
+fi
+
+fi
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking python include flags" >&5
+$as_echo_n "checking python include flags... " >&6; }
+        PYTHON_CXXFLAGS=`$PYTHON_CONFIG --includes`
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CXXFLAGS" >&5
+$as_echo "$PYTHON_CXXFLAGS" >&6; }
+
+fi
+      CPPFLAGS="$CPPFLAGS $PYTHON_CXXFLAGS"
+      ac_fn_cxx_check_header_mongrel "$LINENO" "Python.h" "ac_cv_header_Python_h" "$ac_includes_default"
+if test "x$ac_cv_header_Python_h" = xyes; then :
+  cvc4_build_python_bindings=yes
+else
+  binding_error=yes
+fi
+
+
+      ;;
+    ruby)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: ruby support will be built" >&5
+$as_echo "ruby support will be built" >&6; }
+
+  if test -z "$SWIG"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: swig not available or incompatible version; $binding bindings require swig 2.0.0 or later" >&5
+$as_echo "$as_me: WARNING: swig not available or incompatible version; $binding bindings require swig 2.0.0 or later" >&2;}
+    binding_error=yes
+  fi
+
+
+      CPPFLAGS="$CPPFLAGS $RUBY_CPPFLAGS"
+      ac_fn_cxx_check_header_mongrel "$LINENO" "ruby.h" "ac_cv_header_ruby_h" "$ac_includes_default"
+if test "x$ac_cv_header_ruby_h" = xyes; then :
+  cvc4_build_ruby_bindings=yes
+else
+  binding_error=yes
+fi
+
+
+      ;;
+    tcl)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: tcl support will be built" >&5
+$as_echo "tcl support will be built" >&6; }
+
+  if test -z "$SWIG"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: swig not available or incompatible version; $binding bindings require swig 2.0.0 or later" >&5
+$as_echo "$as_me: WARNING: swig not available or incompatible version; $binding bindings require swig 2.0.0 or later" >&2;}
+    binding_error=yes
+  fi
+
+
+      CPPFLAGS="$CPPFLAGS $TCL_CPPFLAGS"
+      ac_fn_cxx_check_header_mongrel "$LINENO" "tcl.h" "ac_cv_header_tcl_h" "$ac_includes_default"
+if test "x$ac_cv_header_tcl_h" = xyes; then :
+  cvc4_build_tcl_bindings=yes
+else
+  binding_error=yes
+fi
+
+
+      ;;
+    ocaml)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: OCaml support will be built" >&5
+$as_echo "OCaml support will be built" >&6; }
+
+  if test -z "$SWIG"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: swig not available or incompatible version; $binding bindings require swig 2.0.0 or later" >&5
+$as_echo "$as_me: WARNING: swig not available or incompatible version; $binding bindings require swig 2.0.0 or later" >&2;}
+    binding_error=yes
+  fi
+
+
+      CPPFLAGS="$CPPFLAGS $OCAML_CPPFLAGS"
+      ac_fn_cxx_check_header_mongrel "$LINENO" "caml/misc.h" "ac_cv_header_caml_misc_h" "$ac_includes_default"
+if test "x$ac_cv_header_caml_misc_h" = xyes; then :
+  cvc4_build_ocaml_bindings=yes
+else
+  binding_error=yes
+fi
+
+
+      if test "$binding_error" = no; then
+
+        if test -z "$OCAMLC"; then
+          for ac_prog in ocamlc
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OCAMLC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OCAMLC"; then
+  ac_cv_prog_OCAMLC="$OCAMLC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OCAMLC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OCAMLC=$ac_cv_prog_OCAMLC
+if test -n "$OCAMLC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OCAMLC" >&5
+$as_echo "$OCAMLC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$OCAMLC" && break
+done
+test -n "$OCAMLC" || OCAMLC="ocamlc"
+
+        else
+          # Extract the first word of ""$OCAMLC"", so it can be a program name with args.
+set dummy "$OCAMLC"; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OCAMLC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OCAMLC"; then
+  ac_cv_prog_OCAMLC="$OCAMLC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OCAMLC=""$OCAMLC""
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OCAMLC=$ac_cv_prog_OCAMLC
+if test -n "$OCAMLC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OCAMLC" >&5
+$as_echo "$OCAMLC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+        fi
+
+        if test -z "$OCAMLMKTOP"; then
+          for ac_prog in ocamlmktop
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OCAMLMKTOP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OCAMLMKTOP"; then
+  ac_cv_prog_OCAMLMKTOP="$OCAMLMKTOP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OCAMLMKTOP="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OCAMLMKTOP=$ac_cv_prog_OCAMLMKTOP
+if test -n "$OCAMLMKTOP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OCAMLMKTOP" >&5
+$as_echo "$OCAMLMKTOP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$OCAMLMKTOP" && break
+done
+test -n "$OCAMLMKTOP" || OCAMLMKTOP="ocamlmktop"
+
+        else
+          # Extract the first word of ""$OCAMLMKTOP"", so it can be a program name with args.
+set dummy "$OCAMLMKTOP"; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OCAMLMKTOP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OCAMLMKTOP"; then
+  ac_cv_prog_OCAMLMKTOP="$OCAMLMKTOP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OCAMLMKTOP=""$OCAMLMKTOP""
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OCAMLMKTOP=$ac_cv_prog_OCAMLMKTOP
+if test -n "$OCAMLMKTOP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OCAMLMKTOP" >&5
+$as_echo "$OCAMLMKTOP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+        fi
+
+        if test -z "$OCAMLFIND"; then
+          for ac_prog in ocamlfind
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OCAMLFIND+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OCAMLFIND"; then
+  ac_cv_prog_OCAMLFIND="$OCAMLFIND" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OCAMLFIND="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OCAMLFIND=$ac_cv_prog_OCAMLFIND
+if test -n "$OCAMLFIND"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OCAMLFIND" >&5
+$as_echo "$OCAMLFIND" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$OCAMLFIND" && break
+done
+test -n "$OCAMLFIND" || OCAMLFIND="ocamlfind"
+
+        else
+          # Extract the first word of ""$OCAMLFIND"", so it can be a program name with args.
+set dummy "$OCAMLFIND"; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OCAMLFIND+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OCAMLFIND"; then
+  ac_cv_prog_OCAMLFIND="$OCAMLFIND" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OCAMLFIND=""$OCAMLFIND""
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OCAMLFIND=$ac_cv_prog_OCAMLFIND
+if test -n "$OCAMLFIND"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OCAMLFIND" >&5
+$as_echo "$OCAMLFIND" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+        fi
+
+        if test -z "$CAMLP4O"; then
+          for ac_prog in camlp4o
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CAMLP4O+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CAMLP4O"; then
+  ac_cv_prog_CAMLP4O="$CAMLP4O" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CAMLP4O="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CAMLP4O=$ac_cv_prog_CAMLP4O
+if test -n "$CAMLP4O"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CAMLP4O" >&5
+$as_echo "$CAMLP4O" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$CAMLP4O" && break
+done
+test -n "$CAMLP4O" || CAMLP4O="camlp4o"
+
+        else
+          # Extract the first word of ""$CAMLP4O"", so it can be a program name with args.
+set dummy "$CAMLP4O"; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CAMLP4O+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CAMLP4O"; then
+  ac_cv_prog_CAMLP4O="$CAMLP4O" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CAMLP4O=""$CAMLP4O""
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CAMLP4O=$ac_cv_prog_CAMLP4O
+if test -n "$CAMLP4O"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CAMLP4O" >&5
+$as_echo "$CAMLP4O" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+        fi
+      fi
+      ;;
+    *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unknown binding" >&5
+$as_echo "unknown binding" >&6; }; binding_error=yes;;
+  esac
+  if test "$binding_error" = yes; then
+    if test "$cvc4_check_for_bindings" = no; then
+      as_fn_error $? "Language binding \`$binding' requested by user, but it cannot be built (the preceding few lines should give an indication why this is)." "$LINENO" 5
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Language binding \`$binding' cannot be built (the preceding few lines should give an indication why this is)." >&5
+$as_echo "$as_me: WARNING: Language binding \`$binding' cannot be built (the preceding few lines should give an indication why this is)." >&2;}
+    fi
+  else
+    CVC4_LANGUAGE_BINDINGS="${CVC4_LANGUAGE_BINDINGS:+$CVC4_LANGUAGE_BINDINGS }$binding"
+  fi
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+  CXXFLAGS="$cvc4_save_CXXFLAGS"
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+done
+
+ if test "$SWIG"; then
+  CVC4_HAS_SWIG_TRUE=
+  CVC4_HAS_SWIG_FALSE='#'
+else
+  CVC4_HAS_SWIG_TRUE='#'
+  CVC4_HAS_SWIG_FALSE=
+fi
+
+
+ if test "$cvc4_build_c_bindings" = yes; then
+  CVC4_LANGUAGE_BINDING_C_TRUE=
+  CVC4_LANGUAGE_BINDING_C_FALSE='#'
+else
+  CVC4_LANGUAGE_BINDING_C_TRUE='#'
+  CVC4_LANGUAGE_BINDING_C_FALSE=
+fi
+
+ if test "$cvc4_build_java_bindings" = yes; then
+  CVC4_LANGUAGE_BINDING_JAVA_TRUE=
+  CVC4_LANGUAGE_BINDING_JAVA_FALSE='#'
+else
+  CVC4_LANGUAGE_BINDING_JAVA_TRUE='#'
+  CVC4_LANGUAGE_BINDING_JAVA_FALSE=
+fi
+
+ if test "$cvc4_build_csharp_bindings" = yes; then
+  CVC4_LANGUAGE_BINDING_CSHARP_TRUE=
+  CVC4_LANGUAGE_BINDING_CSHARP_FALSE='#'
+else
+  CVC4_LANGUAGE_BINDING_CSHARP_TRUE='#'
+  CVC4_LANGUAGE_BINDING_CSHARP_FALSE=
+fi
+
+ if test "$cvc4_build_perl_bindings" = yes; then
+  CVC4_LANGUAGE_BINDING_PERL_TRUE=
+  CVC4_LANGUAGE_BINDING_PERL_FALSE='#'
+else
+  CVC4_LANGUAGE_BINDING_PERL_TRUE='#'
+  CVC4_LANGUAGE_BINDING_PERL_FALSE=
+fi
+
+ if test "$cvc4_build_php_bindings" = yes; then
+  CVC4_LANGUAGE_BINDING_PHP_TRUE=
+  CVC4_LANGUAGE_BINDING_PHP_FALSE='#'
+else
+  CVC4_LANGUAGE_BINDING_PHP_TRUE='#'
+  CVC4_LANGUAGE_BINDING_PHP_FALSE=
+fi
+
+ if test "$cvc4_build_python_bindings" = yes; then
+  CVC4_LANGUAGE_BINDING_PYTHON_TRUE=
+  CVC4_LANGUAGE_BINDING_PYTHON_FALSE='#'
+else
+  CVC4_LANGUAGE_BINDING_PYTHON_TRUE='#'
+  CVC4_LANGUAGE_BINDING_PYTHON_FALSE=
+fi
+
+ if test "$cvc4_build_ruby_bindings" = yes; then
+  CVC4_LANGUAGE_BINDING_RUBY_TRUE=
+  CVC4_LANGUAGE_BINDING_RUBY_FALSE='#'
+else
+  CVC4_LANGUAGE_BINDING_RUBY_TRUE='#'
+  CVC4_LANGUAGE_BINDING_RUBY_FALSE=
+fi
+
+ if test "$cvc4_build_tcl_bindings" = yes; then
+  CVC4_LANGUAGE_BINDING_TCL_TRUE=
+  CVC4_LANGUAGE_BINDING_TCL_FALSE='#'
+else
+  CVC4_LANGUAGE_BINDING_TCL_TRUE='#'
+  CVC4_LANGUAGE_BINDING_TCL_FALSE=
+fi
+
+ if test "$cvc4_build_ocaml_bindings" = yes; then
+  CVC4_LANGUAGE_BINDING_OCAML_TRUE=
+  CVC4_LANGUAGE_BINDING_OCAML_FALSE='#'
+else
+  CVC4_LANGUAGE_BINDING_OCAML_TRUE='#'
+  CVC4_LANGUAGE_BINDING_OCAML_FALSE=
+fi
+
+
+
+
+
+
+# Checks for header files and their contents.
+for ac_header in getopt.h unistd.h ext/stdio_filebuf.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+# Checks for typedefs, structures, and compiler characteristics.
+#AC_HEADER_STDBOOL
+# these are bad macros, they clash with system header <stdint.h> !!
+#AC_TYPE_UINT16_T
+#AC_TYPE_UINT32_T
+#AC_TYPE_UINT64_T
+#AC_TYPE_SIZE_T
+
+# guard against double-inclusion of the autoheader
+
+
+
+ac_fn_c_check_decl "$LINENO" "optreset" "ac_cv_have_decl_optreset" "#include <getopt.h>
+"
+if test "x$ac_cv_have_decl_optreset" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_OPTRESET $ac_have_decl
+_ACEOF
+
+
+# check with which standard strerror_r() complies
+ac_fn_c_check_decl "$LINENO" "strerror_r" "ac_cv_have_decl_strerror_r" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strerror_r" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR_R $ac_have_decl
+_ACEOF
+
+for ac_func in strerror_r
+do :
+  ac_fn_c_check_func "$LINENO" "strerror_r" "ac_cv_func_strerror_r"
+if test "x$ac_cv_func_strerror_r" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRERROR_R 1
+_ACEOF
+
+fi
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strerror_r returns char *" >&5
+$as_echo_n "checking whether strerror_r returns char *... " >&6; }
+if ${ac_cv_func_strerror_r_char_p+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    ac_cv_func_strerror_r_char_p=no
+    if test $ac_cv_have_decl_strerror_r = yes; then
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+	  char buf[100];
+	  char x = *strerror_r (0, buf, sizeof buf);
+	  char *p = strerror_r (0, buf, sizeof buf);
+	  return !p || x;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_func_strerror_r_char_p=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    else
+      # strerror_r is not declared.  Choose between
+      # systems that have relatively inaccessible declarations for the
+      # function.  BeOS and DEC UNIX 4.0 fall in this category, but the
+      # former has a strerror_r that returns char*, while the latter
+      # has a strerror_r that returns `int'.
+      # This test should segfault on the DEC system.
+      if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+	extern char *strerror_r ();
+int
+main ()
+{
+char buf[100];
+	  char x = *strerror_r (0, buf, sizeof buf);
+	  return ! isalpha (x);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_strerror_r_char_p=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+    fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strerror_r_char_p" >&5
+$as_echo "$ac_cv_func_strerror_r_char_p" >&6; }
+if test $ac_cv_func_strerror_r_char_p = yes; then
+
+$as_echo "#define STRERROR_R_CHAR_P 1" >>confdefs.h
+
+fi
+
+
+# is is_sorted() in std or __gnu_cxx?
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking where we can find is_sorted" >&5
+$as_echo_n "checking where we can find is_sorted... " >&6; }
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+is_sorted_result=
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <algorithm>
+int
+main ()
+{
+std::is_sorted((int*)0L, (int*)0L);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  is_sorted_result=std
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ext/algorithm>
+int
+main ()
+{
+__gnu_cxx::is_sorted((int*)0L, (int*)0L);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  is_sorted_result=__gnu_cxx
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot find std::is_sorted() or __gnu_cxx::is_sorted()
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $is_sorted_result" >&5
+$as_echo "$is_sorted_result" >&6; }
+if test "$is_sorted_result" = __gnu_cxx; then is_sorted_result=1; else is_sorted_result=0; fi
+
+cat >>confdefs.h <<_ACEOF
+#define IS_SORTED_IN_GNUCXX_NAMESPACE $is_sorted_result
+_ACEOF
+
+
+
+# require boost library
+echo "$as_me: this is boost.m4 serial 16" >&5
+boost_save_IFS=$IFS
+boost_version_req=
+IFS=.
+set x $boost_version_req 0 0 0
+IFS=$boost_save_IFS
+shift
+boost_version_req=`expr "$1" '*' 100000 + "$2" '*' 100 + "$3"`
+boost_version_req_string=$1.$2.$3
+
+# Check whether --with-boost was given.
+if test "${with_boost+set}" = set; then :
+  withval=$with_boost;
+fi
+# If BOOST_ROOT is set and the user has not provided a value to
+# --with-boost, then treat BOOST_ROOT as if it the user supplied it.
+if test x"$BOOST_ROOT" != x; then
+  if test x"$with_boost" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Detected BOOST_ROOT; continuing with --with-boost=$BOOST_ROOT" >&5
+$as_echo "$as_me: Detected BOOST_ROOT; continuing with --with-boost=$BOOST_ROOT" >&6;}
+    with_boost=$BOOST_ROOT
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Detected BOOST_ROOT=$BOOST_ROOT, but overridden by --with-boost=$with_boost" >&5
+$as_echo "$as_me: Detected BOOST_ROOT=$BOOST_ROOT, but overridden by --with-boost=$with_boost" >&6;}
+  fi
+fi
+DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS '--with-boost=$with_boost'"
+boost_save_CPPFLAGS=$CPPFLAGS
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boost headers version >= $boost_version_req_string" >&5
+$as_echo_n "checking for Boost headers version >= $boost_version_req_string... " >&6; }
+if ${boost_cv_inc_path+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  boost_cv_inc_path=no
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <boost/version.hpp>
+#if !defined BOOST_VERSION
+# error BOOST_VERSION is not defined
+#elif BOOST_VERSION < $boost_version_req
+# error Boost headers version < $boost_version_req
+#endif
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+    # If the user provided a value to --with-boost, use it and only it.
+    case $with_boost in #(
+      ''|yes) set x '' /opt/local/include /usr/local/include /opt/include \
+                 /usr/include C:/Boost/include;; #(
+      *)      set x "$with_boost/include" "$with_boost";;
+    esac
+    shift
+    for boost_dir
+    do
+    # Without --layout=system, Boost (or at least some versions) installs
+    # itself in <prefix>/include/boost-<version>.  This inner loop helps to
+    # find headers in such directories.
+    #
+    # Any ${boost_dir}/boost-x_xx directories are searched in reverse version
+    # order followed by ${boost_dir}.  The final '.' is a sentinel for
+    # searching $boost_dir" itself.  Entries are whitespace separated.
+    #
+    # I didn't indent this loop on purpose (to avoid over-indented code)
+    boost_layout_system_search_list=`cd "$boost_dir" 2>/dev/null \
+        && ls -1 | "${GREP}" '^boost-' | sort -rn -t- -k2 \
+        && echo .`
+    for boost_inc in $boost_layout_system_search_list
+    do
+      if test x"$boost_inc" != x.; then
+        boost_inc="$boost_dir/$boost_inc"
+      else
+        boost_inc="$boost_dir" # Uses sentinel in boost_layout_system_search_list
+      fi
+      if test x"$boost_inc" != x; then
+        # We are going to check whether the version of Boost installed
+        # in $boost_inc is usable by running a compilation that
+        # #includes it.  But if we pass a -I/some/path in which Boost
+        # is not installed, the compiler will just skip this -I and
+        # use other locations (either from CPPFLAGS, or from its list
+        # of system include directories).  As a result we would use
+        # header installed on the machine instead of the /some/path
+        # specified by the user.  So in that precise case (trying
+        # $boost_inc), make sure the version.hpp exists.
+        #
+        # Use test -e as there can be symlinks.
+        test -e "$boost_inc/boost/version.hpp" || continue
+        CPPFLAGS="$CPPFLAGS -I$boost_inc"
+      fi
+      if ac_fn_cxx_try_compile "$LINENO"; then :
+  boost_cv_inc_path=yes
+else
+  boost_cv_version=no
+fi
+rm -f core conftest.err conftest.$ac_objext
+      if test x"$boost_cv_inc_path" = xyes; then
+        if test x"$boost_inc" != x; then
+          boost_cv_inc_path=$boost_inc
+        fi
+        break 2
+      fi
+    done
+    done
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $boost_cv_inc_path" >&5
+$as_echo "$boost_cv_inc_path" >&6; }
+    case $boost_cv_inc_path in #(
+      no)
+        boost_errmsg="cannot find Boost headers version >= $boost_version_req_string"
+        as_fn_error $? "$boost_errmsg" "$LINENO" 5
+
+        ;;#(
+      yes)
+        BOOST_CPPFLAGS=
+        ;;#(
+      *)
+        BOOST_CPPFLAGS="-I$boost_cv_inc_path"
+        ;;
+    esac
+  if test x"$boost_cv_inc_path" != xno; then
+
+$as_echo "#define HAVE_BOOST 1" >>confdefs.h
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boost's header version" >&5
+$as_echo_n "checking for Boost's header version... " >&6; }
+if ${boost_cv_lib_version+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <boost/version.hpp>
+boost-lib-version = BOOST_LIB_VERSION
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  grep -v "^#" |
+  tr -d '\r\n ' |
+  $SED -n -e "/^boost-lib-version=/{s///;s/\"//g;p;q;}" >conftest.i 2>&1; then :
+  boost_cv_lib_version=`cat conftest.i`
+fi
+rm -rf conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $boost_cv_lib_version" >&5
+$as_echo "$boost_cv_lib_version" >&6; }
+    # e.g. "134" for 1_34_1 or "135" for 1_35
+    boost_major_version=`echo "$boost_cv_lib_version" | sed 's/_//;s/_.*//'`
+    case $boost_major_version in #(
+      '' | *[!0-9]*)
+        as_fn_error $? "invalid value: boost_major_version=$boost_major_version" "$LINENO" 5
+        ;;
+    esac
+fi
+CPPFLAGS=$boost_save_CPPFLAGS
+
+
+# look for boost threading library
+
+# Check whether --with-portfolio was given.
+if test "${with_portfolio+set}" = set; then :
+  withval=$with_portfolio;
+fi
+
+cvc4_save_LDFLAGS="$LDFLAGS"
+if test "$enable_static_binary" = yes; then
+  LDFLAGS="-static $LDFLAGS"
+fi
+cvc4_has_threads=yes
+# Check whether --enable-thread-support was given.
+if test "${enable_thread_support+set}" = set; then :
+  enableval=$enable_thread_support;
+fi
+
+if test "$enable_thread_support" = no; then
+  cvc4_has_threads=no
+  if test "$with_portfolio" = yes; then
+    as_fn_error $? "user gave both --with-portfolio and --disable-thread-support, which are contradictory" "$LINENO" 5
+  fi
+else
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the flags needed to use pthreads" >&5
+$as_echo_n "checking for the flags needed to use pthreads... " >&6; }
+if ${boost_cv_pthread_flag+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+   boost_cv_pthread_flag=
+  # The ordering *is* (sometimes) important.  Some notes on the
+  # individual items follow:
+  # (none): in case threads are in libc; should be tried before -Kthread and
+  #       other compiler flags to prevent continual compiler warnings
+  # -lpthreads: AIX (must check this before -lpthread)
+  # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
+  # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+  # -llthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+  # -pthread: GNU Linux/GCC (kernel threads), BSD/GCC (userland threads)
+  # -pthreads: Solaris/GCC
+  # -mthreads: MinGW32/GCC, Lynx/GCC
+  # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+  #      doesn't hurt to check since this sometimes defines pthreads too;
+  #      also defines -D_REENTRANT)
+  #      ... -mt is also the pthreads flag for HP/aCC
+  # -lpthread: GNU Linux, etc.
+  # --thread-safe: KAI C++
+  case $host_os in #(
+    *solaris*)
+      # On Solaris (at least, for some versions), libc contains stubbed
+      # (non-functional) versions of the pthreads routines, so link-based
+      # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
+      # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
+      # a function called by this macro, so we could check for that, but
+      # who knows whether they'll stub that too in a future libc.)  So,
+      # we'll just look for -pthreads and -lpthread first:
+      boost_pthread_flags="-pthreads -lpthread -mt -pthread";; #(
+    *)
+      boost_pthread_flags="-lpthreads -Kthread -kthread -llthread -pthread \
+                           -pthreads -mthreads -lpthread --thread-safe -mt";;
+  esac
+  # Generate the test file.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+int
+main ()
+{
+pthread_t th; pthread_join(th, 0);
+    pthread_attr_init(0); pthread_cleanup_push(0, 0);
+    pthread_create(0,0,0,0); pthread_cleanup_pop(0);
+  ;
+  return 0;
+}
+_ACEOF
+  for boost_pthread_flag in '' $boost_pthread_flags; do
+    boost_pthread_ok=false
+    boost_pthreads__save_LIBS=$LIBS
+    LIBS="$LIBS $boost_pthread_flag"
+    if ac_fn_cxx_try_link "$LINENO"; then :
+  if grep ".*$boost_pthread_flag" conftest.err; then
+         echo "This flag seems to have triggered warnings" >&5
+       else
+         boost_pthread_ok=:; boost_cv_pthread_flag=$boost_pthread_flag
+       fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+    LIBS=$boost_pthreads__save_LIBS
+    $boost_pthread_ok && break
+  done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $boost_cv_pthread_flag" >&5
+$as_echo "$boost_cv_pthread_flag" >&6; }
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the toolset name used by Boost for $CXX" >&5
+$as_echo_n "checking for the toolset name used by Boost for $CXX... " >&6; }
+if ${boost_cv_lib_tag+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  boost_cv_lib_tag=unknown
+if test x$boost_cv_inc_path != xno; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+  # The following tests are mostly inspired by boost/config/auto_link.hpp
+  # The list is sorted to most recent/common to oldest compiler (in order
+  # to increase the likelihood of finding the right compiler with the
+  # least number of compilation attempt).
+  # Beware that some tests are sensible to the order (for instance, we must
+  # look for MinGW before looking for GCC3).
+  # I used one compilation test per compiler with a #error to recognize
+  # each compiler so that it works even when cross-compiling (let me know
+  # if you know a better approach).
+  # Known missing tags (known from Boost's tools/build/v2/tools/common.jam):
+  #   como, edg, kcc, bck, mp, sw, tru, xlc
+  # I'm not sure about my test for `il' (be careful: Intel's ICC pre-defines
+  # the same defines as GCC's).
+  for i in \
+    "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 8 && !defined __ICC @ gcc48" \
+    "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 7 && !defined __ICC @ gcc47" \
+    "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 6 && !defined __ICC @ gcc46" \
+    "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 5 && !defined __ICC @ gcc45" \
+    "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 4 && !defined __ICC @ gcc44" \
+    "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 3 && !defined __ICC @ gcc43" \
+    "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && !defined __ICC @ gcc42" \
+    "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 1 && !defined __ICC @ gcc41" \
+    "defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ == 0 && !defined __ICC @ gcc40" \
+    "defined __GNUC__ && __GNUC__ == 3 && !defined __ICC \
+     && (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \
+         || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw" \
+    "defined __GNUC__ && __GNUC__ == 3 && __GNUC_MINOR__ == 4 && !defined __ICC @ gcc34" \
+    "defined __GNUC__ && __GNUC__ == 3 && __GNUC_MINOR__ == 3 && !defined __ICC @ gcc33" \
+    "defined _MSC_VER && _MSC_VER >= 1500 @ vc90" \
+    "defined _MSC_VER && _MSC_VER == 1400 @ vc80" \
+    "defined __GNUC__ && __GNUC__ == 3 && __GNUC_MINOR__ == 2 && !defined __ICC @ gcc32" \
+    "defined _MSC_VER && _MSC_VER == 1310 @ vc71" \
+    "defined __GNUC__ && __GNUC__ == 3 && __GNUC_MINOR__ == 1 && !defined __ICC @ gcc31" \
+    "defined __GNUC__ && __GNUC__ == 3 && __GNUC_MINOR__ == 0 && !defined __ICC @ gcc30" \
+    "defined __BORLANDC__ @ bcb" \
+    "defined __ICC && (defined __unix || defined ) @ il" \
+    "defined __ICL @ iw" \
+    "defined _MSC_VER && _MSC_VER == 1300 @ vc7" \
+    "defined __GNUC__ && __GNUC__ == 2 && __GNUC_MINOR__ == 95 && !defined __ICC @ gcc295" \
+    "defined __MWERKS__ && __MWERKS__ <= 0x32FF @ cw9" \
+    "defined _MSC_VER && _MSC_VER < 1300 && !defined UNDER_CE @ vc6" \
+    "defined _MSC_VER && _MSC_VER < 1300 && defined UNDER_CE @ evc4" \
+    "defined __MWERKS__ && __MWERKS__ <= 0x31FF @ cw8"
+  do
+    boost_tag_test=`expr "X$i" : 'X\([^@]*\) @ '`
+    boost_tag=`expr "X$i" : 'X[^@]* @ \(.*\)'`
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#if $boost_tag_test
+/* OK */
+#else
+# error $boost_tag_test
+#endif
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  boost_cv_lib_tag=$boost_tag; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+  case $boost_cv_lib_tag in #(
+    # Some newer (>= 1.35?) versions of Boost seem to only use "gcc" as opposed
+    # to "gcc41" for instance.
+    *-gcc | *'-gcc ') :;; #(  Don't re-add -gcc: it's already in there.
+    gcc*)
+      boost_tag_x=
+      case $host_os in #(
+        darwin*)
+          if test $boost_major_version -ge 136; then
+            # The `x' added in r46793 of Boost.
+            boost_tag_x=x
+          fi;;
+      esac
+      # We can specify multiple tags in this variable because it's used by
+      # BOOST_FIND_LIB that does a `for tag in -$boost_cv_lib_tag' ...
+      boost_cv_lib_tag="$boost_tag_x$boost_cv_lib_tag -${boost_tag_x}gcc"
+      ;; #(
+    unknown)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not figure out which toolset name to use for $CXX" >&5
+$as_echo "$as_me: WARNING: could not figure out which toolset name to use for $CXX" >&2;}
+      boost_cv_lib_tag=
+      ;;
+  esac
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $boost_cv_lib_tag" >&5
+$as_echo "$boost_cv_lib_tag" >&6; }
+# Check whether --enable-static-boost was given.
+if test "${enable_static_boost+set}" = set; then :
+  enableval=$enable_static_boost; enable_static_boost=yes
+else
+  enable_static_boost=no
+fi
+
+# Check whether we do better use `mt' even though we weren't ask to.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#if defined _REENTRANT || defined _MT || defined __MT__
+/* use -mt */
+#else
+# error MT not needed
+#endif
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  boost_guess_use_mt=:
+else
+  boost_guess_use_mt=false
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+boost_threads_save_LIBS=$LIBS
+boost_threads_save_LDFLAGS=$LDFLAGS
+boost_threads_save_CPPFLAGS=$CPPFLAGS
+# Link-time dependency from thread to system was added as of 1.49.0.
+if test $boost_major_version -ge 149; then
+if test x"$boost_cv_inc_path" = xno; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: Boost not available, not searching for the Boost system library" >&5
+$as_echo "$as_me: Boost not available, not searching for the Boost system library" >&6;}
+else
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test x"$boost_cv_inc_path" = xno; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Boost system library (libboost-system) not installed or unusable; this may lead to problems with using threads.  It is recommended that you install your distribution's libboost-system development package (probably named libboost-system###-dev, or boost-system-devel, or something like that)." >&5
+$as_echo "$as_me: WARNING: Boost system library (libboost-system) not installed or unusable; this may lead to problems with using threads.  It is recommended that you install your distribution's libboost-system development package (probably named libboost-system###-dev, or boost-system-devel, or something like that)." >&2;}
+else
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+boost_save_CPPFLAGS=$CPPFLAGS
+CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+ac_fn_cxx_check_header_mongrel "$LINENO" "boost/system/error_code.hpp" "ac_cv_header_boost_system_error_code_hpp" "$ac_includes_default"
+if test "x$ac_cv_header_boost_system_error_code_hpp" = xyes; then :
+
+$as_echo "#define HAVE_BOOST_SYSTEM_ERROR_CODE_HPP 1" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Boost system library (libboost-system) not installed or unusable; this may lead to problems with using threads.  It is recommended that you install your distribution's libboost-system development package (probably named libboost-system###-dev, or boost-system-devel, or something like that)." >&5
+$as_echo "$as_me: WARNING: Boost system library (libboost-system) not installed or unusable; this may lead to problems with using threads.  It is recommended that you install your distribution's libboost-system development package (probably named libboost-system###-dev, or boost-system-devel, or something like that)." >&2;}
+fi
+
+
+CPPFLAGS=$boost_save_CPPFLAGS
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+fi
+
+boost_save_CPPFLAGS=$CPPFLAGS
+CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+# Now let's try to find the library.  The algorithm is as follows: first look
+# for a given library name according to the user's PREFERRED-RT-OPT.  For each
+# library name, we prefer to use the ones that carry the tag (toolset name).
+# Each library is searched through the various standard paths were Boost is
+# usually installed.  If we can't find the standard variants, we try to
+# enforce -mt (for instance on MacOSX, libboost_threads.dylib doesn't exist
+# but there's -obviously- libboost_threads-mt.dylib).
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the Boost system library" >&5
+$as_echo_n "checking for the Boost system library... " >&6; }
+if ${boost_cv_lib_system+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  boost_cv_lib_system=no
+  case "" in #(
+    mt | mt-) boost_mt=-mt; boost_rtopt=;; #(
+    mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X" : 'Xmt-*\(.*\)'`;; #(
+    *) boost_mt=; boost_rtopt=;;
+  esac
+  if test $enable_static_boost = yes; then
+    boost_rtopt="s$boost_rtopt"
+  fi
+  # Find the proper debug variant depending on what we've been asked to find.
+  case $boost_rtopt in #(
+    *d*) boost_rt_d=$boost_rtopt;; #(
+    *[sgpn]*) # Insert the `d' at the right place (in between `sg' and `pn')
+      boost_rt_d=`echo "$boost_rtopt" | sed 's/\(s*g*\)\(p*n*\)/\1\2/'`;; #(
+    *) boost_rt_d='-d';;
+  esac
+  # If the PREFERRED-RT-OPT are not empty, prepend a `-'.
+  test -n "$boost_rtopt" && boost_rtopt="-$boost_rtopt"
+  $boost_guess_use_mt && boost_mt=-mt
+  # Look for the abs path the static archive.
+  # $libext is computed by Libtool but let's make sure it's non empty.
+  test -z "$libext" &&
+    as_fn_error $? "the libext variable is empty, did you invoke Libtool?" "$LINENO" 5
+  boost_save_ac_objext=$ac_objext
+  # Generate the test file.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <boost/system/error_code.hpp>
+
+int
+main ()
+{
+boost::system::error_code e; e.clear();
+  ;
+  return 0;
+}
+_ACEOF
+  if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_objext=do_not_rm_me_plz
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: cannot compile a test that uses Boost system" >&5
+$as_echo "$as_me: cannot compile a test that uses Boost system" >&6;}
+     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Boost system library (libboost-system) not installed or unusable; this may lead to problems with using threads.  It is recommended that you install your distribution's libboost-system development package (probably named libboost-system###-dev, or boost-system-devel, or something like that)." >&5
+$as_echo "$as_me: WARNING: Boost system library (libboost-system) not installed or unusable; this may lead to problems with using threads.  It is recommended that you install your distribution's libboost-system development package (probably named libboost-system###-dev, or boost-system-devel, or something like that)." >&2;}
+fi
+rm -f core conftest.err conftest.$ac_objext
+  ac_objext=$boost_save_ac_objext
+  boost_failed_libs=
+# Don't bother to ident the 6 nested for loops, only the 2 innermost ones
+# matter.
+for boost_tag_ in -$boost_cv_lib_tag ''; do
+for boost_ver_ in -$boost_cv_lib_version ''; do
+for boost_mt_ in $boost_mt -mt ''; do
+for boost_rtopt_ in $boost_rtopt '' -d; do
+  for boost_lib in \
+    boost_system$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \
+    boost_system$boost_tag_$boost_rtopt_$boost_ver_ \
+    boost_system$boost_tag_$boost_mt_$boost_ver_ \
+    boost_system$boost_tag_$boost_ver_
+  do
+    # Avoid testing twice the same lib
+    case $boost_failed_libs in #(
+      *@$boost_lib@*) continue;;
+    esac
+    # If with_boost is empty, we'll search in /lib first, which is not quite
+    # right so instead we'll try to a location based on where the headers are.
+    boost_tmp_lib=$with_boost
+    test x"$with_boost" = x && boost_tmp_lib=${boost_cv_inc_path%/include}
+    for boost_ldpath in "$boost_tmp_lib/lib" '' \
+             /opt/local/lib* /usr/local/lib* /opt/lib* /usr/lib* \
+             "$with_boost" C:/Boost/lib /lib*
+    do
+      test -e "$boost_ldpath" || continue
+      boost_save_LDFLAGS=$LDFLAGS
+      # Are we looking for a static library?
+      case $boost_ldpath:$boost_rtopt_ in #(
+        *?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt)
+          boost_cv_lib_system_LIBS="$boost_ldpath/lib$boost_lib.$libext"
+          test -e "$boost_cv_lib_system_LIBS" || continue;; #(
+        *) # No: use -lboost_foo to find the shared library.
+          boost_cv_lib_system_LIBS="-l$boost_lib";;
+      esac
+      boost_save_LIBS=$LIBS
+      LIBS="$boost_cv_lib_system_LIBS $LIBS"
+      test x"$boost_ldpath" != x && LDFLAGS="$LDFLAGS -L$boost_ldpath"
+      rm -f conftest$ac_exeext
+boost_save_ac_ext=$ac_ext
+boost_use_source=:
+# If we already have a .o, re-use it.  We change $ac_ext so that $ac_link
+# tries to link the existing object file instead of compiling from source.
+test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false &&
+  $as_echo "$as_me:${as_lineno-$LINENO}: re-using the existing conftest.$ac_objext" >&5
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_executable_p conftest$ac_exeext
+       }; then :
+  boost_cv_lib_system=yes
+else
+  if $boost_use_source; then
+         $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       fi
+       boost_cv_lib_system=no
+fi
+ac_objext=$boost_save_ac_objext
+ac_ext=$boost_save_ac_ext
+rm -f core conftest.err conftest_ipa8_conftest.oo \
+      conftest$ac_exeext
+      ac_objext=$boost_save_ac_objext
+      LDFLAGS=$boost_save_LDFLAGS
+      LIBS=$boost_save_LIBS
+      if test x"$boost_cv_lib_system" = xyes; then
+        boost_cv_lib_system_LDFLAGS="-L$boost_ldpath -Wl,-rpath -Wl,$boost_ldpath"
+        boost_cv_lib_system_LDPATH="$boost_ldpath"
+        break 6
+      else
+        boost_failed_libs="$boost_failed_libs@$boost_lib@"
+      fi
+    done
+  done
+done
+done
+done
+done
+rm -f conftest.$ac_objext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $boost_cv_lib_system" >&5
+$as_echo "$boost_cv_lib_system" >&6; }
+case $boost_cv_lib_system in #((
+  no) $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: cannot find the flags to link with Boost system" >&5
+$as_echo "$as_me: cannot find the flags to link with Boost system" >&6;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Boost system library (libboost-system) not installed or unusable; this may lead to problems with using threads.  It is recommended that you install your distribution's libboost-system development package (probably named libboost-system###-dev, or boost-system-devel, or something like that)." >&5
+$as_echo "$as_me: WARNING: Boost system library (libboost-system) not installed or unusable; this may lead to problems with using threads.  It is recommended that you install your distribution's libboost-system development package (probably named libboost-system###-dev, or boost-system-devel, or something like that)." >&2;}
+    ;;
+  *)
+    BOOST_SYSTEM_LDFLAGS=$boost_cv_lib_system_LDFLAGS
+    BOOST_SYSTEM_LDPATH=$boost_cv_lib_system_LDPATH
+    BOOST_LDPATH=$boost_cv_lib_system_LDPATH
+    BOOST_SYSTEM_LIBS=$boost_cv_lib_system_LIBS
+    ;;
+esac
+CPPFLAGS=$boost_save_CPPFLAGS
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+fi
+
+
+
+fi # end of the Boost.System check.
+LIBS="$LIBS $BOOST_SYSTEM_LIBS $boost_cv_pthread_flag"
+LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS"
+# Yes, we *need* to put the -pthread thing in CPPFLAGS because with GCC3,
+# boost/thread.hpp will trigger a #error if -pthread isn't used:
+#   boost/config/requires_threads.hpp:47:5: #error "Compiler threading support
+#   is not turned on. Please set the correct command line options for
+#   threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)"
+CPPFLAGS="$CPPFLAGS $boost_cv_pthread_flag"
+
+# When compiling for the Windows platform, the threads library is named
+# differently.
+case $host_os in
+  (*mingw*)
+    if test x"$boost_cv_inc_path" = xno; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: Boost not available, not searching for the Boost thread_win32 library" >&5
+$as_echo "$as_me: Boost not available, not searching for the Boost thread_win32 library" >&6;}
+else
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test x"$boost_cv_inc_path" = xno; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: disabling multithreaded support" >&5
+$as_echo "$as_me: WARNING: disabling multithreaded support" >&2;}
+                     cvc4_has_threads=no
+else
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+boost_save_CPPFLAGS=$CPPFLAGS
+CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+ac_fn_cxx_check_header_mongrel "$LINENO" "boost/thread.hpp" "ac_cv_header_boost_thread_hpp" "$ac_includes_default"
+if test "x$ac_cv_header_boost_thread_hpp" = xyes; then :
+
+$as_echo "#define HAVE_BOOST_THREAD_HPP 1" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: disabling multithreaded support" >&5
+$as_echo "$as_me: WARNING: disabling multithreaded support" >&2;}
+                     cvc4_has_threads=no
+fi
+
+
+CPPFLAGS=$boost_save_CPPFLAGS
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+fi
+
+boost_save_CPPFLAGS=$CPPFLAGS
+CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+# Now let's try to find the library.  The algorithm is as follows: first look
+# for a given library name according to the user's PREFERRED-RT-OPT.  For each
+# library name, we prefer to use the ones that carry the tag (toolset name).
+# Each library is searched through the various standard paths were Boost is
+# usually installed.  If we can't find the standard variants, we try to
+# enforce -mt (for instance on MacOSX, libboost_threads.dylib doesn't exist
+# but there's -obviously- libboost_threads-mt.dylib).
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the Boost thread_win32 library" >&5
+$as_echo_n "checking for the Boost thread_win32 library... " >&6; }
+if ${boost_cv_lib_thread_win32+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  boost_cv_lib_thread_win32=no
+  case "" in #(
+    mt | mt-) boost_mt=-mt; boost_rtopt=;; #(
+    mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X" : 'Xmt-*\(.*\)'`;; #(
+    *) boost_mt=; boost_rtopt=;;
+  esac
+  if test $enable_static_boost = yes; then
+    boost_rtopt="s$boost_rtopt"
+  fi
+  # Find the proper debug variant depending on what we've been asked to find.
+  case $boost_rtopt in #(
+    *d*) boost_rt_d=$boost_rtopt;; #(
+    *[sgpn]*) # Insert the `d' at the right place (in between `sg' and `pn')
+      boost_rt_d=`echo "$boost_rtopt" | sed 's/\(s*g*\)\(p*n*\)/\1\2/'`;; #(
+    *) boost_rt_d='-d';;
+  esac
+  # If the PREFERRED-RT-OPT are not empty, prepend a `-'.
+  test -n "$boost_rtopt" && boost_rtopt="-$boost_rtopt"
+  $boost_guess_use_mt && boost_mt=-mt
+  # Look for the abs path the static archive.
+  # $libext is computed by Libtool but let's make sure it's non empty.
+  test -z "$libext" &&
+    as_fn_error $? "the libext variable is empty, did you invoke Libtool?" "$LINENO" 5
+  boost_save_ac_objext=$ac_objext
+  # Generate the test file.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <boost/thread.hpp>
+
+int
+main ()
+{
+boost::thread t; boost::mutex m;
+  ;
+  return 0;
+}
+_ACEOF
+  if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_objext=do_not_rm_me_plz
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: cannot compile a test that uses Boost thread_win32" >&5
+$as_echo "$as_me: cannot compile a test that uses Boost thread_win32" >&6;}
+     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: disabling multithreaded support" >&5
+$as_echo "$as_me: WARNING: disabling multithreaded support" >&2;}
+                     cvc4_has_threads=no
+fi
+rm -f core conftest.err conftest.$ac_objext
+  ac_objext=$boost_save_ac_objext
+  boost_failed_libs=
+# Don't bother to ident the 6 nested for loops, only the 2 innermost ones
+# matter.
+for boost_tag_ in -$boost_cv_lib_tag ''; do
+for boost_ver_ in -$boost_cv_lib_version ''; do
+for boost_mt_ in $boost_mt -mt ''; do
+for boost_rtopt_ in $boost_rtopt '' -d; do
+  for boost_lib in \
+    boost_thread_win32$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \
+    boost_thread_win32$boost_tag_$boost_rtopt_$boost_ver_ \
+    boost_thread_win32$boost_tag_$boost_mt_$boost_ver_ \
+    boost_thread_win32$boost_tag_$boost_ver_
+  do
+    # Avoid testing twice the same lib
+    case $boost_failed_libs in #(
+      *@$boost_lib@*) continue;;
+    esac
+    # If with_boost is empty, we'll search in /lib first, which is not quite
+    # right so instead we'll try to a location based on where the headers are.
+    boost_tmp_lib=$with_boost
+    test x"$with_boost" = x && boost_tmp_lib=${boost_cv_inc_path%/include}
+    for boost_ldpath in "$boost_tmp_lib/lib" '' \
+             /opt/local/lib* /usr/local/lib* /opt/lib* /usr/lib* \
+             "$with_boost" C:/Boost/lib /lib*
+    do
+      test -e "$boost_ldpath" || continue
+      boost_save_LDFLAGS=$LDFLAGS
+      # Are we looking for a static library?
+      case $boost_ldpath:$boost_rtopt_ in #(
+        *?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt)
+          boost_cv_lib_thread_win32_LIBS="$boost_ldpath/lib$boost_lib.$libext"
+          test -e "$boost_cv_lib_thread_win32_LIBS" || continue;; #(
+        *) # No: use -lboost_foo to find the shared library.
+          boost_cv_lib_thread_win32_LIBS="-l$boost_lib";;
+      esac
+      boost_save_LIBS=$LIBS
+      LIBS="$boost_cv_lib_thread_win32_LIBS $LIBS"
+      test x"$boost_ldpath" != x && LDFLAGS="$LDFLAGS -L$boost_ldpath"
+      rm -f conftest$ac_exeext
+boost_save_ac_ext=$ac_ext
+boost_use_source=:
+# If we already have a .o, re-use it.  We change $ac_ext so that $ac_link
+# tries to link the existing object file instead of compiling from source.
+test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false &&
+  $as_echo "$as_me:${as_lineno-$LINENO}: re-using the existing conftest.$ac_objext" >&5
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_executable_p conftest$ac_exeext
+       }; then :
+  boost_cv_lib_thread_win32=yes
+else
+  if $boost_use_source; then
+         $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       fi
+       boost_cv_lib_thread_win32=no
+fi
+ac_objext=$boost_save_ac_objext
+ac_ext=$boost_save_ac_ext
+rm -f core conftest.err conftest_ipa8_conftest.oo \
+      conftest$ac_exeext
+      ac_objext=$boost_save_ac_objext
+      LDFLAGS=$boost_save_LDFLAGS
+      LIBS=$boost_save_LIBS
+      if test x"$boost_cv_lib_thread_win32" = xyes; then
+        boost_cv_lib_thread_win32_LDFLAGS="-L$boost_ldpath -Wl,-rpath -Wl,$boost_ldpath"
+        boost_cv_lib_thread_win32_LDPATH="$boost_ldpath"
+        break 6
+      else
+        boost_failed_libs="$boost_failed_libs@$boost_lib@"
+      fi
+    done
+  done
+done
+done
+done
+done
+rm -f conftest.$ac_objext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $boost_cv_lib_thread_win32" >&5
+$as_echo "$boost_cv_lib_thread_win32" >&6; }
+case $boost_cv_lib_thread_win32 in #((
+  no) $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: cannot find the flags to link with Boost thread_win32" >&5
+$as_echo "$as_me: cannot find the flags to link with Boost thread_win32" >&6;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: disabling multithreaded support" >&5
+$as_echo "$as_me: WARNING: disabling multithreaded support" >&2;}
+                     cvc4_has_threads=no
+    ;;
+  *)
+    BOOST_THREAD_WIN32_LDFLAGS=$boost_cv_lib_thread_win32_LDFLAGS
+    BOOST_THREAD_WIN32_LDPATH=$boost_cv_lib_thread_win32_LDPATH
+    BOOST_LDPATH=$boost_cv_lib_thread_win32_LDPATH
+    BOOST_THREAD_WIN32_LIBS=$boost_cv_lib_thread_win32_LIBS
+    ;;
+esac
+CPPFLAGS=$boost_save_CPPFLAGS
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+fi
+
+    BOOST_THREAD_LDFLAGS=$BOOST_THREAD_WIN32_LDFLAGS
+    BOOST_THREAD_LDPATH=$BOOST_THREAD_WIN32_LDPATH
+    BOOST_THREAD_LIBS=$BOOST_THREAD_WIN32_LIBS
+  ;;
+  (*)
+    if test x"$boost_cv_inc_path" = xno; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: Boost not available, not searching for the Boost thread library" >&5
+$as_echo "$as_me: Boost not available, not searching for the Boost thread library" >&6;}
+else
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test x"$boost_cv_inc_path" = xno; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: disabling multithreaded support" >&5
+$as_echo "$as_me: WARNING: disabling multithreaded support" >&2;}
+                     cvc4_has_threads=no
+else
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+boost_save_CPPFLAGS=$CPPFLAGS
+CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+ac_fn_cxx_check_header_mongrel "$LINENO" "boost/thread.hpp" "ac_cv_header_boost_thread_hpp" "$ac_includes_default"
+if test "x$ac_cv_header_boost_thread_hpp" = xyes; then :
+
+$as_echo "#define HAVE_BOOST_THREAD_HPP 1" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: disabling multithreaded support" >&5
+$as_echo "$as_me: WARNING: disabling multithreaded support" >&2;}
+                     cvc4_has_threads=no
+fi
+
+
+CPPFLAGS=$boost_save_CPPFLAGS
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+fi
+
+boost_save_CPPFLAGS=$CPPFLAGS
+CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+# Now let's try to find the library.  The algorithm is as follows: first look
+# for a given library name according to the user's PREFERRED-RT-OPT.  For each
+# library name, we prefer to use the ones that carry the tag (toolset name).
+# Each library is searched through the various standard paths were Boost is
+# usually installed.  If we can't find the standard variants, we try to
+# enforce -mt (for instance on MacOSX, libboost_threads.dylib doesn't exist
+# but there's -obviously- libboost_threads-mt.dylib).
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the Boost thread library" >&5
+$as_echo_n "checking for the Boost thread library... " >&6; }
+if ${boost_cv_lib_thread+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  boost_cv_lib_thread=no
+  case "" in #(
+    mt | mt-) boost_mt=-mt; boost_rtopt=;; #(
+    mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X" : 'Xmt-*\(.*\)'`;; #(
+    *) boost_mt=; boost_rtopt=;;
+  esac
+  if test $enable_static_boost = yes; then
+    boost_rtopt="s$boost_rtopt"
+  fi
+  # Find the proper debug variant depending on what we've been asked to find.
+  case $boost_rtopt in #(
+    *d*) boost_rt_d=$boost_rtopt;; #(
+    *[sgpn]*) # Insert the `d' at the right place (in between `sg' and `pn')
+      boost_rt_d=`echo "$boost_rtopt" | sed 's/\(s*g*\)\(p*n*\)/\1\2/'`;; #(
+    *) boost_rt_d='-d';;
+  esac
+  # If the PREFERRED-RT-OPT are not empty, prepend a `-'.
+  test -n "$boost_rtopt" && boost_rtopt="-$boost_rtopt"
+  $boost_guess_use_mt && boost_mt=-mt
+  # Look for the abs path the static archive.
+  # $libext is computed by Libtool but let's make sure it's non empty.
+  test -z "$libext" &&
+    as_fn_error $? "the libext variable is empty, did you invoke Libtool?" "$LINENO" 5
+  boost_save_ac_objext=$ac_objext
+  # Generate the test file.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <boost/thread.hpp>
+
+int
+main ()
+{
+boost::thread t; boost::mutex m;
+  ;
+  return 0;
+}
+_ACEOF
+  if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_objext=do_not_rm_me_plz
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: cannot compile a test that uses Boost thread" >&5
+$as_echo "$as_me: cannot compile a test that uses Boost thread" >&6;}
+     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: disabling multithreaded support" >&5
+$as_echo "$as_me: WARNING: disabling multithreaded support" >&2;}
+                     cvc4_has_threads=no
+fi
+rm -f core conftest.err conftest.$ac_objext
+  ac_objext=$boost_save_ac_objext
+  boost_failed_libs=
+# Don't bother to ident the 6 nested for loops, only the 2 innermost ones
+# matter.
+for boost_tag_ in -$boost_cv_lib_tag ''; do
+for boost_ver_ in -$boost_cv_lib_version ''; do
+for boost_mt_ in $boost_mt -mt ''; do
+for boost_rtopt_ in $boost_rtopt '' -d; do
+  for boost_lib in \
+    boost_thread$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \
+    boost_thread$boost_tag_$boost_rtopt_$boost_ver_ \
+    boost_thread$boost_tag_$boost_mt_$boost_ver_ \
+    boost_thread$boost_tag_$boost_ver_
+  do
+    # Avoid testing twice the same lib
+    case $boost_failed_libs in #(
+      *@$boost_lib@*) continue;;
+    esac
+    # If with_boost is empty, we'll search in /lib first, which is not quite
+    # right so instead we'll try to a location based on where the headers are.
+    boost_tmp_lib=$with_boost
+    test x"$with_boost" = x && boost_tmp_lib=${boost_cv_inc_path%/include}
+    for boost_ldpath in "$boost_tmp_lib/lib" '' \
+             /opt/local/lib* /usr/local/lib* /opt/lib* /usr/lib* \
+             "$with_boost" C:/Boost/lib /lib*
+    do
+      test -e "$boost_ldpath" || continue
+      boost_save_LDFLAGS=$LDFLAGS
+      # Are we looking for a static library?
+      case $boost_ldpath:$boost_rtopt_ in #(
+        *?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt)
+          boost_cv_lib_thread_LIBS="$boost_ldpath/lib$boost_lib.$libext"
+          test -e "$boost_cv_lib_thread_LIBS" || continue;; #(
+        *) # No: use -lboost_foo to find the shared library.
+          boost_cv_lib_thread_LIBS="-l$boost_lib";;
+      esac
+      boost_save_LIBS=$LIBS
+      LIBS="$boost_cv_lib_thread_LIBS $LIBS"
+      test x"$boost_ldpath" != x && LDFLAGS="$LDFLAGS -L$boost_ldpath"
+      rm -f conftest$ac_exeext
+boost_save_ac_ext=$ac_ext
+boost_use_source=:
+# If we already have a .o, re-use it.  We change $ac_ext so that $ac_link
+# tries to link the existing object file instead of compiling from source.
+test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false &&
+  $as_echo "$as_me:${as_lineno-$LINENO}: re-using the existing conftest.$ac_objext" >&5
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_executable_p conftest$ac_exeext
+       }; then :
+  boost_cv_lib_thread=yes
+else
+  if $boost_use_source; then
+         $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       fi
+       boost_cv_lib_thread=no
+fi
+ac_objext=$boost_save_ac_objext
+ac_ext=$boost_save_ac_ext
+rm -f core conftest.err conftest_ipa8_conftest.oo \
+      conftest$ac_exeext
+      ac_objext=$boost_save_ac_objext
+      LDFLAGS=$boost_save_LDFLAGS
+      LIBS=$boost_save_LIBS
+      if test x"$boost_cv_lib_thread" = xyes; then
+        boost_cv_lib_thread_LDFLAGS="-L$boost_ldpath -Wl,-rpath -Wl,$boost_ldpath"
+        boost_cv_lib_thread_LDPATH="$boost_ldpath"
+        break 6
+      else
+        boost_failed_libs="$boost_failed_libs@$boost_lib@"
+      fi
+    done
+  done
+done
+done
+done
+done
+rm -f conftest.$ac_objext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $boost_cv_lib_thread" >&5
+$as_echo "$boost_cv_lib_thread" >&6; }
+case $boost_cv_lib_thread in #((
+  no) $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: cannot find the flags to link with Boost thread" >&5
+$as_echo "$as_me: cannot find the flags to link with Boost thread" >&6;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: disabling multithreaded support" >&5
+$as_echo "$as_me: WARNING: disabling multithreaded support" >&2;}
+                     cvc4_has_threads=no
+    ;;
+  *)
+    BOOST_THREAD_LDFLAGS=$boost_cv_lib_thread_LDFLAGS
+    BOOST_THREAD_LDPATH=$boost_cv_lib_thread_LDPATH
+    BOOST_LDPATH=$boost_cv_lib_thread_LDPATH
+    BOOST_THREAD_LIBS=$boost_cv_lib_thread_LIBS
+    ;;
+esac
+CPPFLAGS=$boost_save_CPPFLAGS
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+fi
+
+  ;;
+esac
+
+BOOST_THREAD_LIBS="$BOOST_THREAD_LIBS $BOOST_SYSTEM_LIBS $boost_cv_pthread_flag"
+BOOST_THREAD_LDFLAGS="$BOOST_SYSTEM_LDFLAGS"
+BOOST_CPPFLAGS="$BOOST_CPPFLAGS $boost_cv_pthread_flag"
+LIBS=$boost_threads_save_LIBS
+LDFLAGS=$boost_threads_save_LDFLAGS
+CPPFLAGS=$boost_threads_save_CPPFLAGS
+
+
+fi
+LDFLAGS="$cvc4_save_LDFLAGS"
+if test $cvc4_has_threads = no; then
+  if test "$enable_thread_support" = yes; then
+    as_fn_error $? "user gave --enable-thread-support but could not build with threads; maybe boost threading library is missing?" "$LINENO" 5
+  fi
+  if test "$with_portfolio" = yes; then
+    as_fn_error $? "user gave --with-portfolio but could not build with threads; maybe boost threading library is missing?" "$LINENO" 5
+  fi
+  with_portfolio=no
+fi
+if test "$with_portfolio" != yes; then
+  with_portfolio=no
+fi
+ if test "$with_portfolio" = yes; then
+  CVC4_BUILD_PCVC4_TRUE=
+  CVC4_BUILD_PCVC4_FALSE='#'
+else
+  CVC4_BUILD_PCVC4_TRUE='#'
+  CVC4_BUILD_PCVC4_FALSE=
+fi
+
+if test "$with_portfolio" = yes; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_PORTFOLIO"
+
+  # see if Boost has thread attributes (should be any version >= 1.50.0)
+  # non-fatal error if not, but we won't support --thread-stack option
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Boost threads support thread attrs" >&5
+$as_echo_n "checking whether Boost threads support thread attrs... " >&6; }
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+  LIBS="$LIBS $BOOST_THREAD_LIBS"
+  LDFLAGS="$LDFLAGS $BOOST_THREAD_LDFLAGS"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <boost/thread.hpp>
+int
+main ()
+{
+boost::thread::attributes attrs; attrs.set_stack_size(10 * 1024 * 1024);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  cvc4_boost_has_thread_attr=1;
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  cvc4_boost_has_thread_attr=0;
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+else
+  cvc4_boost_has_thread_attr=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define BOOST_HAS_THREAD_ATTR $cvc4_boost_has_thread_attr
+_ACEOF
+
+
+# Check for libreadline (defined in config/readline.m4)
+
+# Check whether --with-readline was given.
+if test "${with_readline+set}" = set; then :
+  withval=$with_readline;
+else
+  with_readline=check
+fi
+
+# make the flags as close as possible to the final flags, because the Boost
+# flags can bring in a different, incompatible readline library than we'd
+# get otherwise (e.g. on Mac, where there are commonly two different readlines,
+# one in /usr and one in /opt/local)
+cvc4_rlcheck_save_CPPFLAGS="$CPPFLAGS"
+cvc4_rlcheck_save_CXXFLAGS="$CXXFLAGS"
+cvc4_rlcheck_save_CFLAGS="$CFLAGS"
+cvc4_rlcheck_save_LDFLAGS="$LDFLAGS"
+CPPFLAGS="${CPPFLAGS:+$CPPFLAGS }${BOOST_CPPFLAGS:+$BOOST_CPPFLAGS }$CVC4CPPFLAGS"
+CXXFLAGS="${CXXFLAGS:+$CXXFLAGS }$CVC4CXXFLAGS $WNO_DEPRECATED"
+CFLAGS="${CFLAGS:+$CFLAGS }$CVC4CFLAGS $C_WNO_DEPRECATED -fexceptions"
+LDFLAGS="${LDFLAGS:+$LDFLAGS }$CVC4LDFLAGS"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether user requested readline support" >&5
+$as_echo_n "checking whether user requested readline support... " >&6; }
+LIBREADLINE=
+have_libreadline=0
+readline_compentry_func_returns_charp=0
+READLINE_LIBS=
+if test "$with_readline" = no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, readline disabled by user" >&5
+$as_echo "no, readline disabled by user" >&6; }
+elif test "$with_readline" = check -a "$CVC4_BSD_LICENSED_CODE_ONLY" = 1; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using BSD-compatible dependences only" >&5
+$as_echo "no, using BSD-compatible dependences only" >&6; }
+  with_readline=no
+else
+  if test "$with_readline" = check; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no preference by user, will auto-detect" >&5
+$as_echo "no preference by user, will auto-detect" >&6; }
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, readline enabled by user" >&5
+$as_echo "yes, readline enabled by user" >&6; }
+  fi
+    READLINE_LIBS=
+
+if test -z "$READLINE_LIBS"; then
+  unset ac_cv_lib_readline_readline
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for readline in -lreadline" >&5
+$as_echo_n "checking for readline in -lreadline... " >&6; }
+if ${ac_cv_lib_readline_readline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lreadline  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char readline ();
+int
+main ()
+{
+return readline ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_readline_readline=yes
+else
+  ac_cv_lib_readline_readline=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_readline" >&5
+$as_echo "$ac_cv_lib_readline_readline" >&6; }
+if test "x$ac_cv_lib_readline_readline" = xyes; then :
+  ac_fn_c_check_header_mongrel "$LINENO" "readline/readline.h" "ac_cv_header_readline_readline_h" "$ac_includes_default"
+if test "x$ac_cv_header_readline_readline_h" = xyes; then :
+  READLINE_LIBS="-lreadline "
+fi
+
+
+fi
+
+fi
+
+
+if test -z "$READLINE_LIBS"; then
+  unset ac_cv_lib_readline_readline
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for readline in -lreadline" >&5
+$as_echo_n "checking for readline in -lreadline... " >&6; }
+if ${ac_cv_lib_readline_readline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lreadline -ltinfo $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char readline ();
+int
+main ()
+{
+return readline ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_readline_readline=yes
+else
+  ac_cv_lib_readline_readline=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_readline" >&5
+$as_echo "$ac_cv_lib_readline_readline" >&6; }
+if test "x$ac_cv_lib_readline_readline" = xyes; then :
+  ac_fn_c_check_header_mongrel "$LINENO" "readline/readline.h" "ac_cv_header_readline_readline_h" "$ac_includes_default"
+if test "x$ac_cv_header_readline_readline_h" = xyes; then :
+  READLINE_LIBS="-lreadline -ltinfo"
+fi
+
+
+fi
+
+fi
+
+
+if test -z "$READLINE_LIBS"; then
+  unset ac_cv_lib_readline_readline
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for readline in -lreadline" >&5
+$as_echo_n "checking for readline in -lreadline... " >&6; }
+if ${ac_cv_lib_readline_readline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lreadline -ltermcap $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char readline ();
+int
+main ()
+{
+return readline ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_readline_readline=yes
+else
+  ac_cv_lib_readline_readline=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_readline" >&5
+$as_echo "$ac_cv_lib_readline_readline" >&6; }
+if test "x$ac_cv_lib_readline_readline" = xyes; then :
+  ac_fn_c_check_header_mongrel "$LINENO" "readline/readline.h" "ac_cv_header_readline_readline_h" "$ac_includes_default"
+if test "x$ac_cv_header_readline_readline_h" = xyes; then :
+  READLINE_LIBS="-lreadline -ltermcap"
+fi
+
+
+fi
+
+fi
+
+
+if test -z "$READLINE_LIBS"; then
+  unset ac_cv_lib_readline_readline
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for readline in -lreadline" >&5
+$as_echo_n "checking for readline in -lreadline... " >&6; }
+if ${ac_cv_lib_readline_readline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lreadline -ltermcap -ltinfo $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char readline ();
+int
+main ()
+{
+return readline ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_readline_readline=yes
+else
+  ac_cv_lib_readline_readline=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_readline" >&5
+$as_echo "$ac_cv_lib_readline_readline" >&6; }
+if test "x$ac_cv_lib_readline_readline" = xyes; then :
+  ac_fn_c_check_header_mongrel "$LINENO" "readline/readline.h" "ac_cv_header_readline_readline_h" "$ac_includes_default"
+if test "x$ac_cv_header_readline_readline_h" = xyes; then :
+  READLINE_LIBS="-lreadline -ltermcap -ltinfo"
+fi
+
+
+fi
+
+fi
+
+
+if test -z "$READLINE_LIBS"; then
+  unset ac_cv_lib_readline_readline
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for readline in -lreadline" >&5
+$as_echo_n "checking for readline in -lreadline... " >&6; }
+if ${ac_cv_lib_readline_readline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lreadline -lncurses -ltermcap $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char readline ();
+int
+main ()
+{
+return readline ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_readline_readline=yes
+else
+  ac_cv_lib_readline_readline=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_readline" >&5
+$as_echo "$ac_cv_lib_readline_readline" >&6; }
+if test "x$ac_cv_lib_readline_readline" = xyes; then :
+  ac_fn_c_check_header_mongrel "$LINENO" "readline/readline.h" "ac_cv_header_readline_readline_h" "$ac_includes_default"
+if test "x$ac_cv_header_readline_readline_h" = xyes; then :
+  READLINE_LIBS="-lreadline -lncurses -ltermcap"
+fi
+
+
+fi
+
+fi
+
+
+if test -z "$READLINE_LIBS"; then
+  unset ac_cv_lib_readline_readline
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for readline in -lreadline" >&5
+$as_echo_n "checking for readline in -lreadline... " >&6; }
+if ${ac_cv_lib_readline_readline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lreadline -lncurses -ltermcap -ltinfo $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char readline ();
+int
+main ()
+{
+return readline ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_readline_readline=yes
+else
+  ac_cv_lib_readline_readline=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_readline" >&5
+$as_echo "$ac_cv_lib_readline_readline" >&6; }
+if test "x$ac_cv_lib_readline_readline" = xyes; then :
+  ac_fn_c_check_header_mongrel "$LINENO" "readline/readline.h" "ac_cv_header_readline_readline_h" "$ac_includes_default"
+if test "x$ac_cv_header_readline_readline_h" = xyes; then :
+  READLINE_LIBS="-lreadline -lncurses -ltermcap -ltinfo"
+fi
+
+
+fi
+
+fi
+
+
+if test -z "$READLINE_LIBS"; then
+  unset ac_cv_lib_readline_readline
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for readline in -lreadline" >&5
+$as_echo_n "checking for readline in -lreadline... " >&6; }
+if ${ac_cv_lib_readline_readline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lreadline -lcurses -ltermcap $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char readline ();
+int
+main ()
+{
+return readline ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_readline_readline=yes
+else
+  ac_cv_lib_readline_readline=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_readline" >&5
+$as_echo "$ac_cv_lib_readline_readline" >&6; }
+if test "x$ac_cv_lib_readline_readline" = xyes; then :
+  ac_fn_c_check_header_mongrel "$LINENO" "readline/readline.h" "ac_cv_header_readline_readline_h" "$ac_includes_default"
+if test "x$ac_cv_header_readline_readline_h" = xyes; then :
+  READLINE_LIBS="-lreadline -lcurses -ltermcap"
+fi
+
+
+fi
+
+fi
+
+
+if test -z "$READLINE_LIBS"; then
+  unset ac_cv_lib_readline_readline
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for readline in -lreadline" >&5
+$as_echo_n "checking for readline in -lreadline... " >&6; }
+if ${ac_cv_lib_readline_readline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lreadline -lcurses -ltermcap -ltinfo $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char readline ();
+int
+main ()
+{
+return readline ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_readline_readline=yes
+else
+  ac_cv_lib_readline_readline=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_readline" >&5
+$as_echo "$ac_cv_lib_readline_readline" >&6; }
+if test "x$ac_cv_lib_readline_readline" = xyes; then :
+  ac_fn_c_check_header_mongrel "$LINENO" "readline/readline.h" "ac_cv_header_readline_readline_h" "$ac_includes_default"
+if test "x$ac_cv_header_readline_readline_h" = xyes; then :
+  READLINE_LIBS="-lreadline -lcurses -ltermcap -ltinfo"
+fi
+
+
+fi
+
+fi
+
+  if test -z "$READLINE_LIBS"; then
+    if test "$with_readline" != check; then
+      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot find libreadline! (or can't get it to work)
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+    with_readline=no
+  else
+    # make sure it works in static builds, too
+    if test "$enable_static_binary" = yes; then
+      READLINE_LIBS=
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether statically-linked readline is functional" >&5
+$as_echo_n "checking whether statically-linked readline is functional... " >&6; }
+
+if test -z "$READLINE_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="-static $LDFLAGS"
+  LIBS="-lreadline "
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <readline/readline.h>
+int
+main ()
+{
+readline("")
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  READLINE_LIBS="-lreadline "
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$READLINE_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="-static $LDFLAGS"
+  LIBS="-lreadline -ltinfo"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <readline/readline.h>
+int
+main ()
+{
+readline("")
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  READLINE_LIBS="-lreadline -ltinfo"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$READLINE_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="-static $LDFLAGS"
+  LIBS="-lreadline -ltermcap"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <readline/readline.h>
+int
+main ()
+{
+readline("")
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  READLINE_LIBS="-lreadline -ltermcap"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$READLINE_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="-static $LDFLAGS"
+  LIBS="-lreadline -ltermcap -ltinfo"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <readline/readline.h>
+int
+main ()
+{
+readline("")
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  READLINE_LIBS="-lreadline -ltermcap -ltinfo"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$READLINE_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="-static $LDFLAGS"
+  LIBS="-lreadline -lncurses -ltermcap"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <readline/readline.h>
+int
+main ()
+{
+readline("")
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  READLINE_LIBS="-lreadline -lncurses -ltermcap"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$READLINE_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="-static $LDFLAGS"
+  LIBS="-lreadline -lncurses -ltermcap -ltinfo"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <readline/readline.h>
+int
+main ()
+{
+readline("")
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  READLINE_LIBS="-lreadline -lncurses -ltermcap -ltinfo"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$READLINE_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="-static $LDFLAGS"
+  LIBS="-lreadline -lcurses -ltermcap"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <readline/readline.h>
+int
+main ()
+{
+readline("")
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  READLINE_LIBS="-lreadline -lcurses -ltermcap"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+
+if test -z "$READLINE_LIBS"; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="-static $LDFLAGS"
+  LIBS="-lreadline -lcurses -ltermcap -ltinfo"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <readline/readline.h>
+int
+main ()
+{
+readline("")
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  READLINE_LIBS="-lreadline -lcurses -ltermcap -ltinfo"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+      if test -n "$READLINE_LIBS"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, it works" >&5
+$as_echo "yes, it works" >&6; }
+        with_readline=yes
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+        if test "$with_readline" != check; then
+          { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "readline installation appears incompatible with static-binary
+See \`config.log' for more details" "$LINENO" 5; }
+        fi
+        with_readline=no
+      fi
+    else
+      with_readline=yes
+    fi
+  fi
+  if test "$with_readline" = yes; then
+    have_libreadline=1
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for type of rl_completion_entry_function" >&5
+$as_echo_n "checking for type of rl_completion_entry_function... " >&6; }
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <readline/readline.h>
+char* foo(const char*, int) { return (char*)0; }
+int
+main ()
+{
+
+rl_completion_entry_function = foo;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: char* (*)(const char*, int)" >&5
+$as_echo "char* (*)(const char*, int)" >&6; }
+       readline_compentry_func_returns_charp=1
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: Function" >&5
+$as_echo "Function" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+  else
+    have_libreadline=0
+    READLINE_LIBS=
+  fi
+fi
+
+CPPFLAGS="$cvc4_rlcheck_save_CPPFLAGS"
+CXXFLAGS="$cvc4_rlcheck_save_CXXFLAGS"
+CFLAGS="$cvc4_rlcheck_save_CFLAGS"
+LDFLAGS="$cvc4_rlcheck_save_LDFLAGS"
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBREADLINE $have_libreadline
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define READLINE_COMPENTRY_FUNC_RETURNS_CHARP $readline_compentry_func_returns_charp
+_ACEOF
+
+
+
+# Whether to build compatibility library
+CVC4_BUILD_LIBCOMPAT=yes
+
+# Check whether --with-compat was given.
+if test "${with_compat+set}" = set; then :
+  withval=$with_compat; if test "$withval" = no; then CVC4_BUILD_LIBCOMPAT=no; fi
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build compatibility library (CVC3 API layer)" >&5
+$as_echo_n "checking whether to build compatibility library (CVC3 API layer)... " >&6; }
+if test "$CVC4_BUILD_LIBCOMPAT" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, disabled by user" >&5
+$as_echo "no, disabled by user" >&6; }
+fi
+
+ if test "$CVC4_BUILD_LIBCOMPAT" = yes; then
+  CVC4_BUILD_LIBCOMPAT_TRUE=
+  CVC4_BUILD_LIBCOMPAT_FALSE='#'
+else
+  CVC4_BUILD_LIBCOMPAT_TRUE='#'
+  CVC4_BUILD_LIBCOMPAT_FALSE=
+fi
+
+
+# Check for availability of TLS support (e.g. __thread storage class)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use compiler-supported TLS if available" >&5
+$as_echo_n "checking whether to use compiler-supported TLS if available... " >&6; }
+# Check whether --enable-tls was given.
+if test "${enable_tls+set}" = set; then :
+  enableval=$enable_tls;
+fi
+
+if test $cvc4_has_threads = no; then
+  # We disable TLS entirely by simply telling the build system that
+  # the empty string is the __thread keyword.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: multithreading disabled" >&5
+$as_echo "multithreading disabled" >&6; }
+  CVC4_TLS_SUPPORTED=1
+  CVC4_TLS=
+  CVC4_TLS_explanation='disabled (no multithreading support)'
+else
+  if test -z "${enable_tls+set}" || test "$enable_tls" = "yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for thread local storage (TLS) class" >&5
+$as_echo_n "checking for thread local storage (TLS) class... " >&6; }
+  if ${ac_cv_tls+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    ax_tls_keywords="__thread __declspec(thread) none"
+    for ax_tls_keyword in $ax_tls_keywords; do
+       case $ax_tls_keyword in #(
+  none) :
+    ac_cv_tls=none ; break ;; #(
+  *) :
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+               static void
+               foo(void) {
+               static  $ax_tls_keyword  int bar;
+               exit(1);
+               }
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_tls=$ax_tls_keyword ; break
+else
+  ac_cv_tls=none
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ;;
+esac
+    done
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_tls" >&5
+$as_echo "$ac_cv_tls" >&6; }
+
+  if test "$ac_cv_tls" != "none"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define TLS $ac_cv_tls
+_ACEOF
+
+      CVC4_TLS=$ac_cv_tls
+else
+  CVC4_TLS=
+
+fi
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    CVC4_TLS=
+  fi
+  if test -n "$CVC4_TLS"; then
+    CVC4_TLS_SUPPORTED=1
+    CVC4_TLS_explanation="$CVC4_TLS"
+  else
+    CVC4_TLS_explanation='pthread_getspecific()'
+    CVC4_TLS_SUPPORTED=0
+  fi
+fi
+
+
+
+# Whether to compile with google profiling tools
+cvc4_use_google_perftools=0
+
+# Check whether --with-google_perftools was given.
+if test "${with_google_perftools+set}" = set; then :
+  withval=$with_google_perftools; if test "$withval" != no; then
+        cvc4_use_google_perftools=1
+     fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to link in google perftools libraries" >&5
+$as_echo_n "checking whether to link in google perftools libraries... " >&6; }
+if test $cvc4_use_google_perftools = 1; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MallocExtension_GetAllocatedSize in -ltcmalloc" >&5
+$as_echo_n "checking for MallocExtension_GetAllocatedSize in -ltcmalloc... " >&6; }
+if ${ac_cv_lib_tcmalloc_MallocExtension_GetAllocatedSize+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ltcmalloc -lpthread $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char MallocExtension_GetAllocatedSize ();
+int
+main ()
+{
+return MallocExtension_GetAllocatedSize ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_tcmalloc_MallocExtension_GetAllocatedSize=yes
+else
+  ac_cv_lib_tcmalloc_MallocExtension_GetAllocatedSize=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tcmalloc_MallocExtension_GetAllocatedSize" >&5
+$as_echo "$ac_cv_lib_tcmalloc_MallocExtension_GetAllocatedSize" >&6; }
+if test "x$ac_cv_lib_tcmalloc_MallocExtension_GetAllocatedSize" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBTCMALLOC 1
+_ACEOF
+
+  LIBS="-ltcmalloc $LIBS"
+
+else
+  as_fn_error $? "cannot link google-perftools test program with -ltcmalloc" "$LINENO" 5
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ProfilerStart in -lprofiler" >&5
+$as_echo_n "checking for ProfilerStart in -lprofiler... " >&6; }
+if ${ac_cv_lib_profiler_ProfilerStart+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lprofiler -lpthread $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ProfilerStart ();
+int
+main ()
+{
+return ProfilerStart ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_profiler_ProfilerStart=yes
+else
+  ac_cv_lib_profiler_ProfilerStart=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_profiler_ProfilerStart" >&5
+$as_echo "$ac_cv_lib_profiler_ProfilerStart" >&6; }
+if test "x$ac_cv_lib_profiler_ProfilerStart" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBPROFILER 1
+_ACEOF
+
+  LIBS="-lprofiler $LIBS"
+
+else
+  as_fn_error $? "cannot link google-perftools test program with -lprofiler" "$LINENO" 5
+fi
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (user didn't request it)" >&5
+$as_echo "no (user didn't request it)" >&6; }
+fi
+
+# Java
+
+
+
+
+if test "$cvc4_build_java_bindings"; then
+    if test -z "$JAVA"; then
+    for ac_prog in java
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_JAVA+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$JAVA"; then
+  ac_cv_prog_JAVA="$JAVA" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_JAVA="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+JAVA=$ac_cv_prog_JAVA
+if test -n "$JAVA"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVA" >&5
+$as_echo "$JAVA" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$JAVA" && break
+done
+test -n "$JAVA" || JAVA="java"
+
+  else
+    # Extract the first word of ""$JAVA"", so it can be a program name with args.
+set dummy "$JAVA"; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_JAVA+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$JAVA"; then
+  ac_cv_prog_JAVA="$JAVA" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_JAVA=""$JAVA""
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+JAVA=$ac_cv_prog_JAVA
+if test -n "$JAVA"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVA" >&5
+$as_echo "$JAVA" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+  if test -z "$JAVAC"; then
+    for ac_prog in javac gcj
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_JAVAC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$JAVAC"; then
+  ac_cv_prog_JAVAC="$JAVAC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_JAVAC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+JAVAC=$ac_cv_prog_JAVAC
+if test -n "$JAVAC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVAC" >&5
+$as_echo "$JAVAC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$JAVAC" && break
+done
+test -n "$JAVAC" || JAVAC="javac"
+
+    if test "$JAVAC" = gcj; then JAVAC='gcj -C'; fi
+  else
+    # Extract the first word of ""$JAVAC"", so it can be a program name with args.
+set dummy "$JAVAC"; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_JAVAC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$JAVAC"; then
+  ac_cv_prog_JAVAC="$JAVAC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_JAVAC=""$JAVAC""
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+JAVAC=$ac_cv_prog_JAVAC
+if test -n "$JAVAC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVAC" >&5
+$as_echo "$JAVAC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+  if test -z "$JAVAH"; then
+    for ac_prog in javah gcjh
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_JAVAH+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$JAVAH"; then
+  ac_cv_prog_JAVAH="$JAVAH" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_JAVAH="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+JAVAH=$ac_cv_prog_JAVAH
+if test -n "$JAVAH"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVAH" >&5
+$as_echo "$JAVAH" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$JAVAH" && break
+done
+test -n "$JAVAH" || JAVAH="javah"
+
+  else
+    # Extract the first word of ""$JAVAH"", so it can be a program name with args.
+set dummy "$JAVAH"; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_JAVAH+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$JAVAH"; then
+  ac_cv_prog_JAVAH="$JAVAH" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_JAVAH=""$JAVAH""
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+JAVAH=$ac_cv_prog_JAVAH
+if test -n "$JAVAH"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVAH" >&5
+$as_echo "$JAVAH" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+  if test -z "$JAR"; then
+    for ac_prog in jar
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_JAR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$JAR"; then
+  ac_cv_prog_JAR="$JAR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_JAR="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+JAR=$ac_cv_prog_JAR
+if test -n "$JAR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAR" >&5
+$as_echo "$JAR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$JAR" && break
+done
+test -n "$JAR" || JAR="jar"
+
+  else
+    # Extract the first word of ""$JAR"", so it can be a program name with args.
+set dummy "$JAR"; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_JAR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$JAR"; then
+  ac_cv_prog_JAR="$JAR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_JAR=""$JAR""
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+JAR=$ac_cv_prog_JAR
+if test -n "$JAR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAR" >&5
+$as_echo "$JAR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+
+# on Mac OS X, Java doesn't like the .so module extension; it wants .dylib
+module=no eval CVC4_JAVA_MODULE_EXT="$shrext_cmds"
+if test -z "$CVC4_JAVA_MODULE_EXT"; then
+  CVC4_JAVA_MODULE_EXT=.so
+fi
+
+
+# Prepare configure output
+
+if test "$enable_shared" = yes; then BUILDING_SHARED=1; else BUILDING_SHARED=0; fi
+if test "$enable_static" = yes; then BUILDING_STATIC=1; else BUILDING_STATIC=0; fi
+if test "$enable_static_binary" = yes; then STATIC_BINARY=1; else STATIC_BINARY=0; fi
+
+
+
+ if test "$enable_static_binary" = yes; then
+  STATIC_BINARY_TRUE=
+  STATIC_BINARY_FALSE='#'
+else
+  STATIC_BINARY_TRUE='#'
+  STATIC_BINARY_FALSE=
+fi
+
+ if test "$enable_coverage" = yes; then
+  COVERAGE_ENABLED_TRUE=
+  COVERAGE_ENABLED_FALSE='#'
+else
+  COVERAGE_ENABLED_TRUE='#'
+  COVERAGE_ENABLED_FALSE=
+fi
+
+
+ if test "$with_build" = debug; then
+  CVC4_DEBUG_TRUE=
+  CVC4_DEBUG_FALSE='#'
+else
+  CVC4_DEBUG_TRUE='#'
+  CVC4_DEBUG_FALSE=
+fi
+
+ if test "$enable_tracing" = yes; then
+  CVC4_TRACING_TRUE=
+  CVC4_TRACING_FALSE='#'
+else
+  CVC4_TRACING_TRUE='#'
+  CVC4_TRACING_FALSE=
+fi
+
+
+
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define CVC4_MAJOR ${CVC4_MAJOR}
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define CVC4_MINOR ${CVC4_MINOR}
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define CVC4_RELEASE ${CVC4_RELEASE}
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define CVC4_EXTRAVERSION "${CVC4_EXTRAVERSION}"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define CVC4_RELEASE_STRING "${CVC4_RELEASE_STRING}"
+_ACEOF
+
+
+CPPFLAGS="${CPPFLAGS:+$CPPFLAGS }${BOOST_CPPFLAGS:+$BOOST_CPPFLAGS }$CVC4CPPFLAGS"
+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
+
+
+
+
+
+ if test -z "$FLAG_VISIBILITY_HIDDEN"; then
+  WHITE_AND_BLACK_TESTS_TRUE=
+  WHITE_AND_BLACK_TESTS_FALSE='#'
+else
+  WHITE_AND_BLACK_TESTS_TRUE='#'
+  WHITE_AND_BLACK_TESTS_FALSE=
+fi
+
+
+# remember the command line used for configure
+
+
+# mk_include
+#
+# When automake scans Makefiles, it complains about non-standard make
+# features (including GNU extensions), and breaks GNU Make's
+# "if/endif" construct, replacing the "if" with AM_CONDITIONAL if
+# constructs.  automake even follows "include" and messes with
+# included Makefiles.
+#
+# CVC4 assumes GNU Make and we want to use GNU Make if/endifs, so we
+# have to hide some included Makefiles with GNU extensions.  We do
+# this by defining mk_include as an autoconf substitution and then
+# using "@mk_include@ other_makefile" in Makefile.am to include
+# makefiles with GNU extensions; this hides them from automake.
+mk_include=include
+
+# Similar trickery for "if"
+mk_if=if
+
+mk_empty=
+
+
+# CVC4_FALSE
+#
+# This is used to _always_ comment out rules in automake makefiles, but
+# still trigger certain automake behavior; see test/unit/Makefile.am.
+ if false; then
+  CVC4_FALSE_TRUE=
+  CVC4_FALSE_FALSE='#'
+else
+  CVC4_FALSE_TRUE='#'
+  CVC4_FALSE_FALSE=
+fi
+
+
+# set up substitutions for src/util/{rational,integer}.h.in
+if test $cvc4_cln_or_gmp = cln; then
+  CVC4_USE_CLN_IMP=1
+  CVC4_USE_GMP_IMP=0
+else
+  CVC4_USE_CLN_IMP=0
+  CVC4_USE_GMP_IMP=1
+fi
+
+
+
+# month/year for man pages
+MAN_DATE=`date '+%B %Y'`
+
+
+ac_config_files="$ac_config_files Makefile.builds Makefile proofs/signatures/Makefile contrib/Makefile examples/Makefile examples/api/Makefile examples/api/java/Makefile examples/hashsmt/Makefile examples/nra-translate/Makefile examples/sets-translate/Makefile src/Makefile src/base/Makefile src/bindings/Makefile src/bindings/compat/Makefile src/bindings/compat/c/Makefile src/bindings/compat/java/Makefile src/compat/Makefile src/expr/Makefile src/lib/Makefile src/main/Makefile src/options [...]
+
+
+if test $cvc4_has_threads = yes; then
+  support_multithreaded='with boost threading library'
+   if true; then
+  CVC4_HAS_THREADS_TRUE=
+  CVC4_HAS_THREADS_FALSE='#'
+else
+  CVC4_HAS_THREADS_TRUE='#'
+  CVC4_HAS_THREADS_FALSE=
+fi
+
+  CVC4_HAS_THREADS=1
+
+else
+  support_multithreaded='no'
+   if false; then
+  CVC4_HAS_THREADS_TRUE=
+  CVC4_HAS_THREADS_FALSE='#'
+else
+  CVC4_HAS_THREADS_TRUE='#'
+  CVC4_HAS_THREADS_FALSE=
+fi
+
+  CVC4_HAS_THREADS=0
+
+fi
+
+# Final information to the user
+gpl=no
+licensewarn=
+
+if test "$custom_build_profile" = yes; then
+  with_build="$with_build (customized)"
+fi
+
+support_unit_tests='cxxtest not found; unit tests not supported'
+if test -n "$CXXTEST"; then
+  support_unit_tests='unit testing infrastructure enabled in build directory'
+elif test "$enable_unit_testing" = no; then
+  support_unit_tests='unit testing disabled by user'
+fi
+
+if test "$enable_optimized" = yes; then
+  optimized="yes, at level $OPTLEVEL"
+else
+  optimized="no"
+fi
+
+if test $have_libglpk -eq 1; then
+  gpl=yes
+  gpllibs="${gpllibs} glpk"
+fi
+
+if test $have_libreadline -eq 1; then
+  gpl=yes
+  gpllibs="${gpllibs} readline"
+fi
+
+if test $cvc4_cln_or_gmp = cln; then
+  mplibrary='cln (GPL)'
+  gpl=yes
+  gpllibs="${gpllibs} cln"
+  if test $with_portfolio = yes; then
+    as_fn_error $? "Bad configuration detected: cannot build portfolio with CLN.
+Please specify only one of --with-portfolio and --with-cln." "$LINENO" 5
+  fi
+else
+  mplibrary='gmp'
+fi
+
+if test "$gpl" = yes; then
+  if test "$CVC4_BSD_LICENSED_CODE_ONLY" = 1; then
+    as_fn_error $? "Bad configuration detected: BSD-licensed code only, but also requested GPLed libraries:$gpllibs
+To permit GPL'ed dependences, use the configure flag --enable-gpl" "$LINENO" 5
+  fi
+
+  licensewarn="${licensewarn}"'****************************************************************************
+Please note that CVC4 will be built against the following GPLed libraries:
+ '"$gpllibs"'
+As these libraries are covered under the GPLv3, so is this build of CVC4.
+CVC4 is also available to you under the terms of the (modified) BSD license.
+If you prefer to license CVC4 under those terms, please configure with the
+option "--bsd", which will disable all optional GPLed library dependences.
+****************************************************************************
+
+'
+  license="GPLv3 (due to optional libraries; see below)"
+else
+  licensewarn="${licensewarn}Please note that this configuration is NOT built against any GPL'ed
+libraries, so it is covered by the (modified) BSD license.  This is,
+however, not the best-performing configuration of CVC4.  To build
+against GPL'ed libraries which improve CVC4's performance, re-configure
+with '--best --enable-gpl'.
+
+"
+  license="modified BSD"
+fi
+
+if test "$gpl" = yes; then isgpl=1; else isgpl=0; fi
+
+cat >>confdefs.h <<_ACEOF
+#define CVC4_GPL_DEPS $isgpl
+_ACEOF
+
+
+CVC4_COMPAT_LIBRARY_VERSION_or_nobuild="$CVC4_COMPAT_LIBRARY_VERSION"
+CVC4_BINDINGS_LIBRARY_VERSION_or_nobuild="$CVC4_BINDINGS_LIBRARY_VERSION"
+if test "$CVC4_BUILD_LIBCOMPAT" = no; then
+  CVC4_COMPAT_LIBRARY_VERSION_or_nobuild="N/A"
+fi
+if test -z "$CVC4_LANGUAGE_BINDINGS"; then
+  CVC4_BINDINGS_LIBRARY_VERSION_or_nobuild="N/A"
+fi
+
+bindings_to_be_built=none
+if test -n "$CVC4_LANGUAGE_BINDINGS"; then
+  bindings_to_be_built="$CVC4_LANGUAGE_BINDINGS"
+  if test -z "$SWIG"; then
+    bindings_to_be_built="$bindings_to_be_built (for CVC3 compatibility layer only; SWIG not found)"
+  fi
+fi
+
+
+ac_config_files="$ac_config_files src/base/tls.h.tmp:src/base/tls.h.in"
+
+
+
+ac_config_files="$ac_config_files src/util/integer.h.tmp:src/util/integer.h.in"
+
+
+
+ac_config_files="$ac_config_files src/util/rational.h.tmp:src/util/rational.h.in"
+
+
+
+
+ac_config_files="$ac_config_files doc/cvc4.1_template.tmp:doc/cvc4.1_template.in"
+
+
+
+ac_config_files="$ac_config_files doc/cvc4.5.tmp:doc/cvc4.5.in"
+
+
+
+ac_config_files="$ac_config_files doc/libcvc4.3_template.tmp:doc/libcvc4.3_template.in"
+
+
+
+ac_config_files="$ac_config_files doc/SmtEngine.3cvc_template.tmp:doc/SmtEngine.3cvc_template.in"
+
+
+
+ac_config_files="$ac_config_files doc/options.3cvc_template.tmp:doc/options.3cvc_template.in"
+
+
+
+ac_config_files="$ac_config_files doc/libcvc4parser.3.tmp:doc/libcvc4parser.3.in"
+
+
+
+ac_config_files="$ac_config_files doc/libcvc4compat.3.tmp:doc/libcvc4compat.3.in"
+
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
+if test -z "${AUTOMAKE_1_11_TRUE}" && test -z "${AUTOMAKE_1_11_FALSE}"; then
+  as_fn_error $? "conditional \"AUTOMAKE_1_11\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_CLN_IMP_TRUE}" && test -z "${CVC4_CLN_IMP_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_CLN_IMP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_GMP_IMP_TRUE}" && test -z "${CVC4_GMP_IMP_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_GMP_IMP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_BUILD_PROFILE_PRODUCTION_TRUE}" && test -z "${CVC4_BUILD_PROFILE_PRODUCTION_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_BUILD_PROFILE_PRODUCTION\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_BUILD_PROFILE_DEBUG_TRUE}" && test -z "${CVC4_BUILD_PROFILE_DEBUG_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_BUILD_PROFILE_DEBUG\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_BUILD_PROFILE_DEFAULT_TRUE}" && test -z "${CVC4_BUILD_PROFILE_DEFAULT_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_BUILD_PROFILE_DEFAULT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_BUILD_PROFILE_COMPETITION_TRUE}" && test -z "${CVC4_BUILD_PROFILE_COMPETITION_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_BUILD_PROFILE_COMPETITION\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_PROOF_TRUE}" && test -z "${CVC4_PROOF_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_PROOF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_USE_GLPK_TRUE}" && test -z "${CVC4_USE_GLPK_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_USE_GLPK\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_USE_ABC_TRUE}" && test -z "${CVC4_USE_ABC_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_USE_ABC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_USE_CRYPTOMINISAT_TRUE}" && test -z "${CVC4_USE_CRYPTOMINISAT_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_USE_CRYPTOMINISAT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_doc_TRUE}" && test -z "${DX_COND_doc_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_doc\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_doc_TRUE}" && test -z "${DX_COND_doc_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_doc\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_dot_TRUE}" && test -z "${DX_COND_dot_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_dot\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_dot_TRUE}" && test -z "${DX_COND_dot_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_dot\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_man_TRUE}" && test -z "${DX_COND_man_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_man\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_man_TRUE}" && test -z "${DX_COND_man_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_man\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_rtf_TRUE}" && test -z "${DX_COND_rtf_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_rtf\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_rtf_TRUE}" && test -z "${DX_COND_rtf_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_rtf\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_xml_TRUE}" && test -z "${DX_COND_xml_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_xml\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_xml_TRUE}" && test -z "${DX_COND_xml_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_xml\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_chm_TRUE}" && test -z "${DX_COND_chm_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_chm\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_chm_TRUE}" && test -z "${DX_COND_chm_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_chm\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_chi_TRUE}" && test -z "${DX_COND_chi_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_chi\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_chi_TRUE}" && test -z "${DX_COND_chi_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_chi\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_html_TRUE}" && test -z "${DX_COND_html_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_html\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_html_TRUE}" && test -z "${DX_COND_html_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_html\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_ps_TRUE}" && test -z "${DX_COND_ps_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_ps\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_ps_TRUE}" && test -z "${DX_COND_ps_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_ps\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_pdf_TRUE}" && test -z "${DX_COND_pdf_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_pdf\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_pdf_TRUE}" && test -z "${DX_COND_pdf_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_pdf\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_latex_TRUE}" && test -z "${DX_COND_latex_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_latex\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_latex_TRUE}" && test -z "${DX_COND_latex_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_latex\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_CXXTESTGEN_TRUE}" && test -z "${HAVE_CXXTESTGEN_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CXXTESTGEN\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_HAS_SWIG_TRUE}" && test -z "${CVC4_HAS_SWIG_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_HAS_SWIG\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_LANGUAGE_BINDING_C_TRUE}" && test -z "${CVC4_LANGUAGE_BINDING_C_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_LANGUAGE_BINDING_C\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_LANGUAGE_BINDING_JAVA_TRUE}" && test -z "${CVC4_LANGUAGE_BINDING_JAVA_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_LANGUAGE_BINDING_JAVA\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_LANGUAGE_BINDING_CSHARP_TRUE}" && test -z "${CVC4_LANGUAGE_BINDING_CSHARP_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_LANGUAGE_BINDING_CSHARP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_LANGUAGE_BINDING_PERL_TRUE}" && test -z "${CVC4_LANGUAGE_BINDING_PERL_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_LANGUAGE_BINDING_PERL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_LANGUAGE_BINDING_PHP_TRUE}" && test -z "${CVC4_LANGUAGE_BINDING_PHP_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_LANGUAGE_BINDING_PHP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_LANGUAGE_BINDING_PYTHON_TRUE}" && test -z "${CVC4_LANGUAGE_BINDING_PYTHON_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_LANGUAGE_BINDING_PYTHON\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_LANGUAGE_BINDING_RUBY_TRUE}" && test -z "${CVC4_LANGUAGE_BINDING_RUBY_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_LANGUAGE_BINDING_RUBY\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_LANGUAGE_BINDING_TCL_TRUE}" && test -z "${CVC4_LANGUAGE_BINDING_TCL_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_LANGUAGE_BINDING_TCL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_LANGUAGE_BINDING_OCAML_TRUE}" && test -z "${CVC4_LANGUAGE_BINDING_OCAML_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_LANGUAGE_BINDING_OCAML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_BUILD_PCVC4_TRUE}" && test -z "${CVC4_BUILD_PCVC4_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_BUILD_PCVC4\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_BUILD_LIBCOMPAT_TRUE}" && test -z "${CVC4_BUILD_LIBCOMPAT_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_BUILD_LIBCOMPAT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${STATIC_BINARY_TRUE}" && test -z "${STATIC_BINARY_FALSE}"; then
+  as_fn_error $? "conditional \"STATIC_BINARY\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${COVERAGE_ENABLED_TRUE}" && test -z "${COVERAGE_ENABLED_FALSE}"; then
+  as_fn_error $? "conditional \"COVERAGE_ENABLED\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_DEBUG_TRUE}" && test -z "${CVC4_DEBUG_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_DEBUG\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_TRACING_TRUE}" && test -z "${CVC4_TRACING_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_TRACING\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${WHITE_AND_BLACK_TESTS_TRUE}" && test -z "${WHITE_AND_BLACK_TESTS_FALSE}"; then
+  as_fn_error $? "conditional \"WHITE_AND_BLACK_TESTS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_FALSE_TRUE}" && test -z "${CVC4_FALSE_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_FALSE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_HAS_THREADS_TRUE}" && test -z "${CVC4_HAS_THREADS_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_HAS_THREADS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CVC4_HAS_THREADS_TRUE}" && test -z "${CVC4_HAS_THREADS_FALSE}"; then
+  as_fn_error $? "conditional \"CVC4_HAS_THREADS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by cvc4 $as_me 1.5-prerelease, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <cvc-bugs at cs.nyu.edu>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+cvc4 config.status 1.5-prerelease
+configured by $0, generated by GNU Autoconf 2.69,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`'
+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`'
+configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
+predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
+postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
+predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
+postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
+LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`'
+reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`'
+reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`'
+GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`'
+inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`'
+always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
+predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`'
+postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in SHELL \
+ECHO \
+PATH_SEPARATOR \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+OBJDUMP \
+deplibs_check_method \
+file_magic_cmd \
+file_magic_glob \
+want_nocaseglob \
+DLLTOOL \
+sharedlib_from_linklib_cmd \
+AR \
+AR_FLAGS \
+archiver_list_spec \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_import \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+lt_cv_nm_interface \
+nm_file_list_spec \
+lt_cv_truncate_bin \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_pic \
+lt_prog_compiler_wl \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+MANIFEST_TOOL \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_separator \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+install_override_mode \
+finish_eval \
+old_striplib \
+striplib \
+compiler_lib_search_dirs \
+predep_objects \
+postdep_objects \
+predeps \
+postdeps \
+compiler_lib_search_path \
+LD_CXX \
+reload_flag_CXX \
+compiler_CXX \
+lt_prog_compiler_no_builtin_flag_CXX \
+lt_prog_compiler_pic_CXX \
+lt_prog_compiler_wl_CXX \
+lt_prog_compiler_static_CXX \
+lt_cv_prog_compiler_c_o_CXX \
+export_dynamic_flag_spec_CXX \
+whole_archive_flag_spec_CXX \
+compiler_needs_object_CXX \
+with_gnu_ld_CXX \
+allow_undefined_flag_CXX \
+no_undefined_flag_CXX \
+hardcode_libdir_flag_spec_CXX \
+hardcode_libdir_separator_CXX \
+exclude_expsyms_CXX \
+include_expsyms_CXX \
+file_list_spec_CXX \
+compiler_lib_search_dirs_CXX \
+predep_objects_CXX \
+postdep_objects_CXX \
+predeps_CXX \
+postdeps_CXX \
+compiler_lib_search_path_CXX; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postlink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+configure_time_dlsearch_path \
+configure_time_lt_sys_library_path \
+reload_cmds_CXX \
+old_archive_cmds_CXX \
+old_archive_from_new_cmds_CXX \
+old_archive_from_expsyms_cmds_CXX \
+archive_cmds_CXX \
+archive_expsym_cmds_CXX \
+module_cmds_CXX \
+module_expsym_cmds_CXX \
+export_symbols_cmds_CXX \
+prelink_cmds_CXX \
+postlink_cmds_CXX; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+ac_aux_dir='$ac_aux_dir'
+
+# See if we are running on zsh, and set the options that allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}"; then
+   setopt NO_GLOB_SUBST
+fi
+
+
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    RM='$RM'
+    ofile='$ofile'
+
+
+
+
+
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "cvc4autoconfig.h") CONFIG_HEADERS="$CONFIG_HEADERS cvc4autoconfig.h" ;;
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+    "Makefile.builds") CONFIG_FILES="$CONFIG_FILES Makefile.builds" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "proofs/signatures/Makefile") CONFIG_FILES="$CONFIG_FILES proofs/signatures/Makefile" ;;
+    "contrib/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;;
+    "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
+    "examples/api/Makefile") CONFIG_FILES="$CONFIG_FILES examples/api/Makefile" ;;
+    "examples/api/java/Makefile") CONFIG_FILES="$CONFIG_FILES examples/api/java/Makefile" ;;
+    "examples/hashsmt/Makefile") CONFIG_FILES="$CONFIG_FILES examples/hashsmt/Makefile" ;;
+    "examples/nra-translate/Makefile") CONFIG_FILES="$CONFIG_FILES examples/nra-translate/Makefile" ;;
+    "examples/sets-translate/Makefile") CONFIG_FILES="$CONFIG_FILES examples/sets-translate/Makefile" ;;
+    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+    "src/base/Makefile") CONFIG_FILES="$CONFIG_FILES src/base/Makefile" ;;
+    "src/bindings/Makefile") CONFIG_FILES="$CONFIG_FILES src/bindings/Makefile" ;;
+    "src/bindings/compat/Makefile") CONFIG_FILES="$CONFIG_FILES src/bindings/compat/Makefile" ;;
+    "src/bindings/compat/c/Makefile") CONFIG_FILES="$CONFIG_FILES src/bindings/compat/c/Makefile" ;;
+    "src/bindings/compat/java/Makefile") CONFIG_FILES="$CONFIG_FILES src/bindings/compat/java/Makefile" ;;
+    "src/compat/Makefile") CONFIG_FILES="$CONFIG_FILES src/compat/Makefile" ;;
+    "src/expr/Makefile") CONFIG_FILES="$CONFIG_FILES src/expr/Makefile" ;;
+    "src/lib/Makefile") CONFIG_FILES="$CONFIG_FILES src/lib/Makefile" ;;
+    "src/main/Makefile") CONFIG_FILES="$CONFIG_FILES src/main/Makefile" ;;
+    "src/options/Makefile") CONFIG_FILES="$CONFIG_FILES src/options/Makefile" ;;
+    "src/parser/Makefile") CONFIG_FILES="$CONFIG_FILES src/parser/Makefile" ;;
+    "src/parser/cvc/Makefile") CONFIG_FILES="$CONFIG_FILES src/parser/cvc/Makefile" ;;
+    "src/parser/smt1/Makefile") CONFIG_FILES="$CONFIG_FILES src/parser/smt1/Makefile" ;;
+    "src/parser/smt2/Makefile") CONFIG_FILES="$CONFIG_FILES src/parser/smt2/Makefile" ;;
+    "src/parser/tptp/Makefile") CONFIG_FILES="$CONFIG_FILES src/parser/tptp/Makefile" ;;
+    "src/prop/bvminisat/Makefile") CONFIG_FILES="$CONFIG_FILES src/prop/bvminisat/Makefile" ;;
+    "src/prop/minisat/Makefile") CONFIG_FILES="$CONFIG_FILES src/prop/minisat/Makefile" ;;
+    "src/smt_util/Makefile") CONFIG_FILES="$CONFIG_FILES src/smt_util/Makefile" ;;
+    "src/util/Makefile") CONFIG_FILES="$CONFIG_FILES src/util/Makefile" ;;
+    "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
+    "test/regress/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/Makefile" ;;
+    "test/regress/regress0/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/Makefile" ;;
+    "test/regress/regress0/arith/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/arith/Makefile" ;;
+    "test/regress/regress0/arith/integers/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/arith/integers/Makefile" ;;
+    "test/regress/regress0/arrays/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/arrays/Makefile" ;;
+    "test/regress/regress0/aufbv/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/aufbv/Makefile" ;;
+    "test/regress/regress0/auflia/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/auflia/Makefile" ;;
+    "test/regress/regress0/bv/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/bv/Makefile" ;;
+    "test/regress/regress0/bv/core/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/bv/core/Makefile" ;;
+    "test/regress/regress0/datatypes/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/datatypes/Makefile" ;;
+    "test/regress/regress0/decision/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/decision/Makefile" ;;
+    "test/regress/regress0/expect/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/expect/Makefile" ;;
+    "test/regress/regress0/fmf/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/fmf/Makefile" ;;
+    "test/regress/regress0/lemmas/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/lemmas/Makefile" ;;
+    "test/regress/regress0/parser/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/parser/Makefile" ;;
+    "test/regress/regress0/precedence/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/precedence/Makefile" ;;
+    "test/regress/regress0/preprocess/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/preprocess/Makefile" ;;
+    "test/regress/regress0/push-pop/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/push-pop/Makefile" ;;
+    "test/regress/regress0/push-pop/arith/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/push-pop/arith/Makefile" ;;
+    "test/regress/regress0/push-pop/boolean/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/push-pop/boolean/Makefile" ;;
+    "test/regress/regress0/quantifiers/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/quantifiers/Makefile" ;;
+    "test/regress/regress0/rels/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/rels/Makefile" ;;
+    "test/regress/regress0/rewriterules/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/rewriterules/Makefile" ;;
+    "test/regress/regress0/sep/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/sep/Makefile" ;;
+    "test/regress/regress0/sets/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/sets/Makefile" ;;
+    "test/regress/regress0/strings/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/strings/Makefile" ;;
+    "test/regress/regress0/sygus/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/sygus/Makefile" ;;
+    "test/regress/regress0/tptp/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/tptp/Makefile" ;;
+    "test/regress/regress0/uf/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/uf/Makefile" ;;
+    "test/regress/regress0/uflia/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/uflia/Makefile" ;;
+    "test/regress/regress0/uflra/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/uflra/Makefile" ;;
+    "test/regress/regress0/unconstrained/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/unconstrained/Makefile" ;;
+    "test/regress/regress1/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress1/Makefile" ;;
+    "test/regress/regress1/aufbv/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress1/aufbv/Makefile" ;;
+    "test/regress/regress1/auflia/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress1/auflia/Makefile" ;;
+    "test/regress/regress1/bv/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress1/bv/Makefile" ;;
+    "test/regress/regress1/datatypes/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress1/datatypes/Makefile" ;;
+    "test/regress/regress1/decision/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress1/decision/Makefile" ;;
+    "test/regress/regress1/fmf/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress1/fmf/Makefile" ;;
+    "test/regress/regress1/lemmas/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress1/lemmas/Makefile" ;;
+    "test/regress/regress1/rewriterules/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress1/rewriterules/Makefile" ;;
+    "test/regress/regress1/sep/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress1/sep/Makefile" ;;
+    "test/regress/regress1/sets/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress1/sets/Makefile" ;;
+    "test/regress/regress1/strings/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress1/strings/Makefile" ;;
+    "test/regress/regress1/sygus/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress1/sygus/Makefile" ;;
+    "test/regress/regress2/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress2/Makefile" ;;
+    "test/regress/regress2/arith/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress2/arith/Makefile" ;;
+    "test/regress/regress3/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress3/Makefile" ;;
+    "test/regress/regress4/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress4/Makefile" ;;
+    "test/system/Makefile") CONFIG_FILES="$CONFIG_FILES test/system/Makefile" ;;
+    "test/unit/Makefile") CONFIG_FILES="$CONFIG_FILES test/unit/Makefile" ;;
+    "src/base/tls.h.tmp") CONFIG_FILES="$CONFIG_FILES src/base/tls.h.tmp:src/base/tls.h.in" ;;
+    "src/util/integer.h.tmp") CONFIG_FILES="$CONFIG_FILES src/util/integer.h.tmp:src/util/integer.h.in" ;;
+    "src/util/rational.h.tmp") CONFIG_FILES="$CONFIG_FILES src/util/rational.h.tmp:src/util/rational.h.in" ;;
+    "doc/cvc4.1_template.tmp") CONFIG_FILES="$CONFIG_FILES doc/cvc4.1_template.tmp:doc/cvc4.1_template.in" ;;
+    "doc/cvc4.5.tmp") CONFIG_FILES="$CONFIG_FILES doc/cvc4.5.tmp:doc/cvc4.5.in" ;;
+    "doc/libcvc4.3_template.tmp") CONFIG_FILES="$CONFIG_FILES doc/libcvc4.3_template.tmp:doc/libcvc4.3_template.in" ;;
+    "doc/SmtEngine.3cvc_template.tmp") CONFIG_FILES="$CONFIG_FILES doc/SmtEngine.3cvc_template.tmp:doc/SmtEngine.3cvc_template.in" ;;
+    "doc/options.3cvc_template.tmp") CONFIG_FILES="$CONFIG_FILES doc/options.3cvc_template.tmp:doc/options.3cvc_template.in" ;;
+    "doc/libcvc4parser.3.tmp") CONFIG_FILES="$CONFIG_FILES doc/libcvc4parser.3.tmp:doc/libcvc4parser.3.in" ;;
+    "doc/libcvc4compat.3.tmp") CONFIG_FILES="$CONFIG_FILES doc/libcvc4compat.3.tmp:doc/libcvc4compat.3.in" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_tt"; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+  if test x"$ac_file" != x-; then
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+    } >"$ac_tmp/config.h" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f "$ac_file"
+      mv "$ac_tmp/config.h" "$ac_file" \
+	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    fi
+  else
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error $? "could not create -" "$LINENO" 5
+  fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$_am_arg" : 'X\(//\)[^/]' \| \
+	 X"$_am_arg" : 'X\(//\)$' \| \
+	 X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # Older Autoconf quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named 'Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$mf" : 'X\(//\)[^/]' \| \
+	 X"$mf" : 'X\(//\)$' \| \
+	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running 'make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "$am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$file" : 'X\(//\)[^/]' \| \
+	 X"$file" : 'X\(//\)$' \| \
+	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      as_dir=$dirpart/$fdir; as_fn_mkdir_p
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+ ;;
+    "libtool":C)
+
+    # See if we are running on zsh, and set the options that allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}"; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile=${ofile}T
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+# Generated automatically by $as_me ($PACKAGE) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+
+# Provide generalized library-building support services.
+# Written by Gordon Matzigkeit, 1996
+
+# Copyright (C) 2014 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of of the License, or
+# (at your option) any later version.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program or library that is built
+# using GNU Libtool, you may include this file under the  same
+# distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags='CXX '
+
+# Configured defaults for sys_lib_dlsearch_path munging.
+: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"}
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# Shared archive member basename,for filename based shared library versioning on AIX.
+shared_archive_member_spec=$shared_archive_member_spec
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# convert \$build file names to \$host format.
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+
+# convert \$build files to toolchain format.
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+
+# An object symbol dumper.
+OBJDUMP=$lt_OBJDUMP
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method = "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# How to find potential files when deplibs_check_method = "file_magic".
+file_magic_glob=$lt_file_magic_glob
+
+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
+want_nocaseglob=$lt_want_nocaseglob
+
+# DLL creation program.
+DLLTOOL=$lt_DLLTOOL
+
+# Command to associate shared and link libraries.
+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
+
+# The archiver.
+AR=$lt_AR
+
+# Flags to create an archive.
+AR_FLAGS=$lt_AR_FLAGS
+
+# How to feed a file listing to the archiver.
+archiver_list_spec=$lt_archiver_list_spec
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm into a list of symbols to manually relocate.
+global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# The name lister interface.
+nm_interface=$lt_lt_cv_nm_interface
+
+# Specify filename containing input files for \$NM.
+nm_file_list_spec=$lt_nm_file_list_spec
+
+# The root where to search for dependent libraries,and where our libraries should be installed.
+lt_sysroot=$lt_sysroot
+
+# Command to truncate a binary pipe.
+lt_truncate_bin=$lt_lt_cv_truncate_bin
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Manifest tool.
+MANIFEST_TOOL=$lt_MANIFEST_TOOL
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Detected run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path
+
+# Explicit LT_SYS_LIBRARY_PATH set during ./configure time.
+configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \$shlibpath_var if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects
+postdep_objects=$lt_postdep_objects
+predeps=$lt_predeps
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+    cat <<'_LT_EOF' >> "$cfgfile"
+
+# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE
+
+# func_munge_path_list VARIABLE PATH
+# -----------------------------------
+# VARIABLE is name of variable containing _space_ separated list of
+# directories to be munged by the contents of PATH, which is string
+# having a format:
+# "DIR[:DIR]:"
+#       string "DIR[ DIR]" will be prepended to VARIABLE
+# ":DIR[:DIR]"
+#       string "DIR[ DIR]" will be appended to VARIABLE
+# "DIRP[:DIRP]::[DIRA:]DIRA"
+#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
+#       "DIRA[ DIRA]" will be appended to VARIABLE
+# "DIR[:DIR]"
+#       VARIABLE will be replaced by "DIR[ DIR]"
+func_munge_path_list ()
+{
+    case x$2 in
+    x)
+        ;;
+    *:)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
+        ;;
+    x:*)
+        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    *::*)
+        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
+        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
+        ;;
+    *)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    esac
+}
+
+
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+func_cc_basename ()
+{
+    for cc_temp in $*""; do
+      case $cc_temp in
+        compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+        distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+        \-*) ;;
+        *) break;;
+      esac
+    done
+    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+}
+
+
+# ### END FUNCTIONS SHARED WITH CONFIGURE
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test set != "${COLLECT_NAMES+set}"; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+
+ltmain=$ac_aux_dir/ltmain.sh
+
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" \
+     || (rm -f "$cfgfile"; exit 1)
+
+   mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+
+    cat <<_LT_EOF >> "$ofile"
+
+# ### BEGIN LIBTOOL TAG CONFIG: CXX
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag_CXX
+reload_cmds=$lt_reload_cmds_CXX
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds_CXX
+
+# A language specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object_CXX
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld_CXX
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \$shlibpath_var if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute_CXX
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath_CXX
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds_CXX
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds_CXX
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec_CXX
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects_CXX
+postdep_objects=$lt_postdep_objects_CXX
+predeps=$lt_predeps_CXX
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# ### END LIBTOOL TAG CONFIG: CXX
+_LT_EOF
+
+ ;;
+    "src/base/tls.h.tmp":F)
+if diff -q "src/base/tls.h.tmp" "src/base/tls.h" >/dev/null 2>&1; then
+    :
+else
+    cp "src/base/tls.h.tmp" "src/base/tls.h"
+fi
+ ;;
+    "src/util/integer.h.tmp":F)
+if diff -q "src/util/integer.h.tmp" "src/util/integer.h" >/dev/null 2>&1; then
+    :
+else
+    cp "src/util/integer.h.tmp" "src/util/integer.h"
+fi
+ ;;
+    "src/util/rational.h.tmp":F)
+if diff -q "src/util/rational.h.tmp" "src/util/rational.h" >/dev/null 2>&1; then
+    :
+else
+    cp "src/util/rational.h.tmp" "src/util/rational.h"
+fi
+ ;;
+    "doc/cvc4.1_template.tmp":F)
+if diff -q "doc/cvc4.1_template.tmp" "doc/cvc4.1_template" >/dev/null 2>&1; then
+    :
+else
+    cp "doc/cvc4.1_template.tmp" "doc/cvc4.1_template"
+fi
+ ;;
+    "doc/cvc4.5.tmp":F)
+if diff -q "doc/cvc4.5.tmp" "doc/cvc4.5" >/dev/null 2>&1; then
+    :
+else
+    cp "doc/cvc4.5.tmp" "doc/cvc4.5"
+fi
+ ;;
+    "doc/libcvc4.3_template.tmp":F)
+if diff -q "doc/libcvc4.3_template.tmp" "doc/libcvc4.3_template" >/dev/null 2>&1; then
+    :
+else
+    cp "doc/libcvc4.3_template.tmp" "doc/libcvc4.3_template"
+fi
+ ;;
+    "doc/SmtEngine.3cvc_template.tmp":F)
+if diff -q "doc/SmtEngine.3cvc_template.tmp" "doc/SmtEngine.3cvc_template" >/dev/null 2>&1; then
+    :
+else
+    cp "doc/SmtEngine.3cvc_template.tmp" "doc/SmtEngine.3cvc_template"
+fi
+ ;;
+    "doc/options.3cvc_template.tmp":F)
+if diff -q "doc/options.3cvc_template.tmp" "doc/options.3cvc_template" >/dev/null 2>&1; then
+    :
+else
+    cp "doc/options.3cvc_template.tmp" "doc/options.3cvc_template"
+fi
+ ;;
+    "doc/libcvc4parser.3.tmp":F)
+if diff -q "doc/libcvc4parser.3.tmp" "doc/libcvc4parser.3" >/dev/null 2>&1; then
+    :
+else
+    cp "doc/libcvc4parser.3.tmp" "doc/libcvc4parser.3"
+fi
+ ;;
+    "doc/libcvc4compat.3.tmp":F)
+if diff -q "doc/libcvc4compat.3.tmp" "doc/libcvc4compat.3" >/dev/null 2>&1; then
+    :
+else
+    cp "doc/libcvc4compat.3.tmp" "doc/libcvc4compat.3"
+fi
+ ;;
+
+  esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+
+#
+# CONFIG_SUBDIRS section.
+#
+if test "$no_recursion" != yes; then
+
+  # Remove --cache-file, --srcdir, and --disable-option-checking arguments
+  # so they do not pile up.
+  ac_sub_configure_args=
+  ac_prev=
+  eval "set x $ac_configure_args"
+  shift
+  for ac_arg
+  do
+    if test -n "$ac_prev"; then
+      ac_prev=
+      continue
+    fi
+    case $ac_arg in
+    -cache-file | --cache-file | --cache-fil | --cache-fi \
+    | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+      ac_prev=cache_file ;;
+    -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+    | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \
+    | --c=*)
+      ;;
+    --config-cache | -C)
+      ;;
+    -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+      ac_prev=srcdir ;;
+    -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+      ;;
+    -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+      ac_prev=prefix ;;
+    -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+      ;;
+    --disable-option-checking)
+      ;;
+    *)
+      case $ac_arg in
+      *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+      esac
+      as_fn_append ac_sub_configure_args " '$ac_arg'" ;;
+    esac
+  done
+
+  # Always prepend --prefix to ensure using the same prefix
+  # in subdir configurations.
+  ac_arg="--prefix=$prefix"
+  case $ac_arg in
+  *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+  esac
+  ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args"
+
+  # Pass --silent
+  if test "$silent" = yes; then
+    ac_sub_configure_args="--silent $ac_sub_configure_args"
+  fi
+
+  # Always prepend --disable-option-checking to silence warnings, since
+  # different subdirs can have different --enable and --with options.
+  ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args"
+
+  ac_popdir=`pwd`
+  for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue
+
+    # Do not complain, so a configure script can configure whichever
+    # parts of a large source tree are present.
+    test -d "$srcdir/$ac_dir" || continue
+
+    ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)"
+    $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5
+    $as_echo "$ac_msg" >&6
+    as_dir="$ac_dir"; as_fn_mkdir_p
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+    cd "$ac_dir"
+
+    # Check for guested configure; otherwise get Cygnus style configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      ac_sub_configure=$ac_srcdir/configure.gnu
+    elif test -f "$ac_srcdir/configure"; then
+      ac_sub_configure=$ac_srcdir/configure
+    elif test -f "$ac_srcdir/configure.in"; then
+      # This should be Cygnus configure.
+      ac_sub_configure=$ac_aux_dir/configure
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5
+$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;}
+      ac_sub_configure=
+    fi
+
+    # The recursion is here.
+    if test -n "$ac_sub_configure"; then
+      # Make the cache file name correct relative to the subdirectory.
+      case $cache_file in
+      [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;;
+      *) # Relative name.
+	ac_sub_cache_file=$ac_top_build_prefix$cache_file ;;
+      esac
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5
+$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;}
+      # The eval makes quoting arguments work.
+      eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \
+	   --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" ||
+	as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5
+    fi
+
+    cd "$ac_popdir"
+  done
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
+cat <<EOF
+
+CVC4 $VERSION
+
+Build profile: $with_build
+Build ID     : $build_type
+Optimized    : $optimized
+Debug symbols: $enable_debug_symbols
+Proofs       : $enable_proof
+Statistics   : $enable_statistics
+Replay       : $enable_replay
+Assertions   : $enable_assertions
+Tracing      : $enable_tracing
+Dumping      : $enable_dumping
+Muzzle       : $enable_muzzle
+
+Unit tests   : $support_unit_tests
+gcov support : $enable_coverage
+gprof support: $enable_profiling
+
+Static libs  : $enable_static
+Shared libs  : $enable_shared
+Static binary: $enable_static_binary
+Compat lib   : $CVC4_BUILD_LIBCOMPAT
+Bindings     : $bindings_to_be_built
+
+Multithreaded: $support_multithreaded
+TLS support  : $CVC4_TLS_explanation
+Portfolio    : $with_portfolio
+
+MP library   : $mplibrary
+GLPK         : $with_glpk
+ABC          : $with_abc
+Readline     : $with_readline
+
+CPPFLAGS     : $CPPFLAGS
+CXXFLAGS     : $CXXFLAGS
+CFLAGS       : $CFLAGS
+LIBS         : $LIBS
+LDFLAGS      : $LDFLAGS
+
+libcvc4 version        : $CVC4_LIBRARY_VERSION
+libcvc4parser version  : $CVC4_PARSER_LIBRARY_VERSION
+libcvc4compat version  : $CVC4_COMPAT_LIBRARY_VERSION_or_nobuild
+libcvc4bindings version: $CVC4_BINDINGS_LIBRARY_VERSION_or_nobuild
+
+Install into : $prefix
+
+CVC4 license : $license
+
+${licensewarn}Now just type make, followed by make check or make install, as you like.
+
+EOF
+
+if test -n "$CVC4_UNSUPPORTED_LANGUAGE_BINDINGS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: " >&5
+$as_echo "$as_me: WARNING: " >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You are electing to build unsupported language binding(s):" >&5
+$as_echo "$as_me: WARNING: You are electing to build unsupported language binding(s):" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:     $CVC4_UNSUPPORTED_LANGUAGE_BINDINGS" >&5
+$as_echo "$as_me: WARNING:     $CVC4_UNSUPPORTED_LANGUAGE_BINDINGS" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Please be aware that these bindings may not compile, or" >&5
+$as_echo "$as_me: WARNING: Please be aware that these bindings may not compile, or" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: work, and the interface to CVC4 via these bindings may" >&5
+$as_echo "$as_me: WARNING: work, and the interface to CVC4 via these bindings may" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: change drastically in upcoming releases of CVC4." >&5
+$as_echo "$as_me: WARNING: change drastically in upcoming releases of CVC4." >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: " >&5
+$as_echo "$as_me: WARNING: " >&2;}
+fi
+
+if test -n "$CVC4_INTEGRITY_WARNING"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: " >&5
+$as_echo "$as_me: WARNING: " >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $CVC4_INTEGRITY_WARNING" >&5
+$as_echo "$as_me: WARNING: $CVC4_INTEGRITY_WARNING" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Please run \"make check\" after building to ensure integrity of the binary and library" >&5
+$as_echo "$as_me: WARNING: Please run \"make check\" after building to ensure integrity of the binary and library" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: " >&5
+$as_echo "$as_me: WARNING: " >&2;}
+fi
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..0335f6e
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,1515 @@
+#                                               -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+m4_define(_CVC4_MAJOR,          1)       dnl version (major)
+m4_define(_CVC4_MINOR,          5)       dnl version (minor)
+m4_define(_CVC4_RELEASE,        0)       dnl version (alpha)
+m4_define(_CVC4_EXTRAVERSION,   [-prerelease])      dnl version (extra)
+m4_define(_CVC4_RELEASE_STRING, _CVC4_MAJOR[.]_CVC4_MINOR[]m4_if(_CVC4_RELEASE,[0],,[.]_CVC4_RELEASE)_CVC4_EXTRAVERSION) dnl version string
+
+dnl Preprocess CL args. Defined in config/cvc4.m4
+CVC4_AC_INIT
+
+AC_PREREQ([2.61])
+AC_INIT([cvc4], _CVC4_RELEASE_STRING, [cvc-bugs at cs.nyu.edu])
+AC_CONFIG_SRCDIR([src/include/cvc4_public.h])
+AC_CONFIG_AUX_DIR([config])
+AC_CONFIG_MACRO_DIR([config])
+AC_CONFIG_LIBOBJ_DIR([src/lib])
+AC_CONFIG_SUBDIRS([proofs/lfsc_checker])
+
+m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
+
+CVC4_MAJOR=_CVC4_MAJOR
+CVC4_MINOR=_CVC4_MINOR
+CVC4_RELEASE=_CVC4_RELEASE
+CVC4_EXTRAVERSION=_CVC4_EXTRAVERSION
+CVC4_RELEASE_STRING=_CVC4_RELEASE_STRING
+
+# Libtool version numbers for libraries
+# Version numbers are in the form current:revision:age
+#
+# current -
+#   increment if interfaces have been added, removed or changed
+# revision -
+#   increment if source code has changed
+#   set to zero if current is incremented
+# age -
+#   increment if interfaces have been added
+#   set to zero if interfaces have been removed
+#   or changed
+#
+# For more information, see:
+# http://www.gnu.org/software/libtool/manual/libtool.html#Versioning
+# For guidance on when to change the version number, refer to the
+# developer's guide.
+
+m4_define([library_version], [m4_esyscmd([grep -F "$(grep -v '^#' library_versions | awk '{print$][1}' | sed 's,\\,\\\\\\,g' | (while read r; do if echo "]_CVC4_RELEASE_STRING[" | grep -q "^$r\$"; then echo "$r"; exit; fi; done; echo NO_MATCH_FOUND)) " library_versions | awk 'BEGIN {FS=":";OFS=":";RS=" "} /^$1:/ {print$][2,$][3,$][4}' | head -1])])
+
+m4_define(_CVC4_LIBRARY_VERSION, library_version([libcvc4]))dnl
+m4_define(_CVC4_PARSER_LIBRARY_VERSION, library_version([libcvc4parser]))dnl
+m4_define(_CVC4_COMPAT_LIBRARY_VERSION, library_version([libcvc4compat]))dnl
+m4_define(_CVC4_BINDINGS_LIBRARY_VERSION, library_version([libcvc4bindings]))dnl
+
+m4_define([fatal_error], [m4_errprint(__program__:__file__:__line__[: fatal error: $*
+])m4_exit(1)])dnl
+
+m4_ifblank(_CVC4_LIBRARY_VERSION,[fatal_error([no CVC4_LIBRARY_VERSION defined for release version "]_CVC4_RELEASE_STRING[" in library_versions file])])dnl
+m4_ifblank(_CVC4_PARSER_LIBRARY_VERSION,[fatal_error([no CVC4_PARSER_LIBRARY_VERSION defined for release version "]_CVC4_RELEASE_STRING[" in library_versions file])])dnl
+m4_ifblank(_CVC4_COMPAT_LIBRARY_VERSION,[fatal_error([no CVC4_COMPAT_LIBRARY_VERSION defined for release version "]_CVC4_RELEASE_STRING[" in library_versions file])])dnl
+m4_ifblank(_CVC4_BINDINGS_LIBRARY_VERSION,[fatal_error([no CVC4_BINDINGS_LIBRARY_VERSION defined for release version "]_CVC4_RELEASE_STRING[" in library_versions file])])dnl
+
+CVC4_LIBRARY_VERSION=_CVC4_LIBRARY_VERSION
+CVC4_PARSER_LIBRARY_VERSION=_CVC4_PARSER_LIBRARY_VERSION
+CVC4_COMPAT_LIBRARY_VERSION=_CVC4_COMPAT_LIBRARY_VERSION
+CVC4_BINDINGS_LIBRARY_VERSION=_CVC4_BINDINGS_LIBRARY_VERSION
+
+# Using the AC_CANONICAL_* macros destroy the command line you get
+# from $@, which we want later for determining the build profile.  So
+# we save it.  (We can't do our build profile stuff here, or it's not
+# included in the output... autoconf overrides us on the orderings of
+# some things.)
+config_cmdline=("$@")
+cvc4_config_cmdline="${config_cmdline[[@]]}"
+
+# remember if the user set these explicitly (or whether autoconf does)
+user_specified_enable_or_disable_static=${enable_static+yes}
+user_specified_enable_or_disable_shared=${enable_shared+yes}
+
+if test -e src/include/cvc4_public.h; then
+  CVC4_CONFIGURE_AT_TOP_LEVEL=yes
+else
+  CVC4_CONFIGURE_AT_TOP_LEVEL=no
+fi
+
+# override autoconf: we don't want it giving us CFLAGS/CXXFLAGS, but we do
+# want to respect the user's flags
+if test -z "${CFLAGS+set}"; then CFLAGS=; fi
+if test -z "${CXXFLAGS+set}"; then CXXFLAGS=; fi
+
+# on by default
+AM_MAINTAINER_MODE([enable])
+
+# turn off static lib building by default
+AC_ENABLE_SHARED
+AC_DISABLE_STATIC
+
+AC_CANONICAL_BUILD
+AC_CANONICAL_HOST
+AC_CANONICAL_TARGET
+
+as_me=configure
+
+if test "$enable_shared" = no -a "$user_specified_enable_or_disable_shared" = yes; then
+  enable_static=yes
+fi
+
+# Features requested by the user
+AC_MSG_CHECKING([for requested build profile])
+AC_ARG_WITH([build],
+  [AS_HELP_STRING([--with-build=profile],
+     [for profile in {production,debug,competition,personal}])])
+
+if test -z "${with_build+set}"; then
+  with_build=production
+fi
+if test -z "${enable_optimized+set}" -a -z "${enable_debug_symbols+set}" -a -z "${enable_assertions+set}" -a -z "${enable_tracing+set}" -a -z "${enable_dumping+set}" -a -z "${enable_muzzle+set}" -a -z "${enable_coverage+set}" -a -z "${enable_profiling+set}" -a -z "${enable_statistics+set}" -a -z "${enable_replay+set}" -a -z "${with_gmp+set}" -a -z "${with_cln+set}" -a -z "${with_glpk+set}" -a -z "${with_abc+set}" -a -z "${with_cryptominisat+set}"; then
+  custom_build_profile=no
+else
+  custom_build_profile=yes
+fi
+btargs=
+if test -n "${enable_optimized+set}"; then
+  if test "$enable_optimized" = yes; then
+    btargs="$btargs optimized"
+  else
+    btargs="$btargs nooptimized"
+  fi
+fi
+# --enable-staticbinary is an alias for --enable-static-binary
+if test -n "${enable_staticbinary+set}"; then
+  enable_static_binary="$enable_staticbinary"
+fi
+if test -n "${enable_static_binary+set}"; then
+  if test "$enable_static_binary" = yes; then
+    btargs="$btargs staticbinary"
+  else
+    btargs="$btargs nostaticbinary"
+  fi
+fi
+if test -n "${enable_debug_symbols+set}"; then
+  if test "$enable_debug_symbols" = yes; then
+    btargs="$btargs debugsymbols"
+  else
+    btargs="$btargs nodebugsymbols"
+  fi
+fi
+if test -n "${enable_assertions+set}"; then
+  if test "$enable_assertions" = yes; then
+    btargs="$btargs assertions"
+  else
+    btargs="$btargs noassertions"
+  fi
+fi
+if test -n "${enable_proof+set}"; then
+  if test "$enable_proof" = yes; then
+    btargs="$btargs proof"
+  else
+    btargs="$btargs noproof"
+  fi
+fi
+if test -n "${enable_tracing+set}"; then
+  if test "$enable_tracing" = yes; then
+    btargs="$btargs tracing"
+  else
+    btargs="$btargs notracing"
+  fi
+fi
+if test -n "${enable_dumping+set}"; then
+  if test "$enable_dumping" = yes; then
+    btargs="$btargs dumping"
+  else
+    btargs="$btargs nodumping"
+  fi
+fi
+if test -n "${enable_muzzle+set}"; then
+  if test "$enable_muzzle" = yes; then
+    btargs="$btargs muzzle"
+  else
+    btargs="$btargs nomuzzle"
+  fi
+fi
+if test -n "${enable_coverage+set}"; then
+  if test "$enable_coverage" = yes; then
+    btargs="$btargs coverage"
+  else
+    btargs="$btargs nocoverage"
+  fi
+fi
+if test -n "${enable_profiling+set}"; then
+  if test "$enable_profiling" = yes; then
+    btargs="$btargs profiling"
+  else
+    btargs="$btargs noprofiling"
+  fi
+fi
+if test -n "${enable_statistics+set}"; then
+  if test "$enable_statistics" = yes; then
+    btargs="$btargs statistics"
+  else
+    btargs="$btargs nostatistics"
+  fi
+fi
+if test -n "${enable_replay+set}"; then
+  if test "$enable_replay" = yes; then
+    btargs="$btargs replay"
+  else
+    btargs="$btargs noreplay"
+  fi
+fi
+if test -n "${with_glpk+set}"; then
+  if test "$with_glpk" = yes; then
+    btargs="$btargs glpk"
+  fi
+fi
+if test -n "${with_abc+set}"; then
+  if test "$with_abc" = yes; then
+    btargs="$btargs abc"
+  fi
+fi
+if test -n "${with_cryptominisat+set}"; then
+  if test "$with_cryptominisat" = yes; then
+    btargs="$btargs cryptominisat"
+  fi
+fi
+
+AC_MSG_RESULT([$with_build])
+
+AM_INIT_AUTOMAKE([1.11 no-define tar-pax parallel-tests color-tests subdir-objects])
+AC_CONFIG_HEADERS([cvc4autoconfig.h])
+
+# automake 1.12 changes the test driver mechanism in a way that is
+# completely incompatible with 1.11.  We figure out here which version
+# we're using in order to set up test makefiles correctly.
+# See http://lists.gnu.org/archive/html/automake/2012-04/msg00060.html
+if test -z "$am__api_version"; then
+  AC_MSG_ERROR([Cannot determine automake API version ?!])
+fi
+case "$am__api_version" in
+  1.11*) automake111=true ;;
+  *) automake111=false ;;
+esac
+AM_CONDITIONAL([AUTOMAKE_1_11], [$automake111])
+
+# Initialize libtool's configuration options.
+# 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.
+AC_PROG_CC
+AC_PROG_CXX
+AC_PROG_INSTALL
+
+CVC4_GCC_VERSION
+
+cvc4_use_gmp=2
+cvc4_use_cln=2
+
+AC_ARG_WITH(
+  [cln],
+  AS_HELP_STRING(
+    [--with-cln],
+    [use CLN instead of GMP]
+  ),
+  [case "$withval" in
+   y|ye|yes|Y|YE|YES) cvc4_use_cln=1 ;;
+   n|no|N|NO) cvc4_use_cln=0 ;;
+   esac
+  ]
+)
+
+AC_ARG_WITH(
+  [gmp],
+  AS_HELP_STRING(
+    [--with-gmp],
+    [use GMP instead of CLN]
+  ),
+  [case "$withval" in
+   y|ye|yes|Y|YE|YES) cvc4_use_gmp=1 ;;
+   n|no|N|NO) cvc4_use_gmp=0 ;;
+   esac
+  ]
+)
+
+if test $cvc4_use_cln = 1 -a $cvc4_use_gmp = 1 || test $cvc4_use_cln = 0 -a $cvc4_use_gmp = 0; then
+  AC_MSG_ERROR([You must use either CLN and GMP.  Please pick one.])
+fi
+if test $cvc4_use_gmp = 1; then
+  cvc4_use_cln=0
+elif test $cvc4_use_gmp = 0; then
+  cvc4_use_cln=1
+elif test $cvc4_use_cln = 1; then
+  cvc4_use_gmp=0
+elif test $cvc4_use_cln = 0; then
+  cvc4_use_gmp=1
+fi
+
+# try GMP, fail if not found; GMP is required for both CLN and for GMP
+# versions of CVC4
+AC_CHECK_LIB(gmp, __gmpz_init, , [AC_MSG_ERROR([GNU MP (libgmp) not found, see http://gmplib.org/])])
+
+if test $cvc4_use_cln = 2; then
+  if test "$CVC4_BSD_LICENSED_CODE_ONLY" = 1 -o "$with_portfolio" = yes; then
+    cvc4_use_cln=0
+    cvc4_use_gmp=1
+  fi
+fi
+
+if test $cvc4_use_cln != 0; then
+  # [mdeters] The PKG_CHECK_MODULES macro isn't customizable and doesn't fail
+  # gracefully.  You can only specify it once for a given library name.  That
+  # is, even on separate if/else branches, you can't put
+  # PKG_CHECK_MODULES([CLN], ...).  That's why things are so convoluted here,
+  # we have to have PKG_CHECK_MODULES _exactly_ once in configure.ac !
+  PKG_CHECK_MODULES([CLN], [cln >= 1.2.2],
+    [AC_LANG_PUSH([C++])
+     save_LIBS="$LIBS"
+     save_CXXFLAGS="$CXXFLAGS"
+     LIBS="$CLN_LIBS $LIBS"
+     CXXFLAGS="$CLN_CFLAGS $CXXFLAGS"
+     AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <cln/cln.h>]], [[cln::cl_F pi = "3.1415926";]])], [
+       cvc4_use_cln=1
+     ], [
+       if test $cvc4_use_cln = 1; then
+         # fail
+         AC_MSG_ERROR([CLN installation missing, too old, or not functional for this architecture])
+       else
+         # fall back to GMP
+         AC_MSG_NOTICE([CLN installation missing, too old, or not functional for this architecture, will use gmp instead])
+         cvc4_use_cln=0
+         cvc4_use_gmp=1
+       fi
+     ])
+     CXXFLAGS="$save_CXXFLAGS"
+     LIBS="$save_LIBS"
+     AC_LANG_POP([C++])
+    ],
+    [if test $cvc4_use_cln = 1; then
+       # fail
+       AC_MSG_ERROR([CLN not installed (or too old) or pkgconfig missing])
+     else
+       # fall back to GMP
+       AC_MSG_NOTICE([CLN not installed (or too old) or pkgconfig missing, will use gmp])
+       cvc4_use_cln=0
+       cvc4_use_gmp=1
+     fi
+    ]
+  )
+fi
+if test $cvc4_use_cln = 0; then
+  # try GMPXX, fail if not found; don't need to link against it, only need its header
+  AC_LANG_PUSH([C++])
+  AC_CHECK_HEADER([gmpxx.h], , [AC_MSG_ERROR([GNU MP C++ library header (gmpxx.h) required but not found, see http://gmplib.org/])])
+  AC_LANG_POP([C++])
+  cvc4_cln_or_gmp=gmp
+else
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }$CLN_CFLAGS"
+  CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }$CLN_CFLAGS"
+  CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }$CLN_CFLAGS"
+  LIBS="$CLN_LIBS${LIBS:+ $LIBS}"
+  cvc4_cln_or_gmp=cln
+fi
+
+if test $cvc4_cln_or_gmp = cln; then
+  AC_DEFINE_UNQUOTED(CVC4_CLN_IMP, [], [Defined if using the CLN multi-precision arithmetic library.])
+else
+  AC_DEFINE_UNQUOTED(CVC4_GMP_IMP, [], [Defined if using the GMP multi-precision arithmetic library.])
+fi
+AM_CONDITIONAL([CVC4_CLN_IMP], [test $cvc4_cln_or_gmp = cln])
+AM_CONDITIONAL([CVC4_GMP_IMP], [test $cvc4_cln_or_gmp = gmp])
+
+# construct the build string
+AC_MSG_CHECKING([for appropriate build string])
+if test -z "$ac_confdir"; then
+  ac_confdir="$srcdir"
+fi
+build_type=`$ac_confdir/config/build-type $with_build $btargs $cvc4_cln_or_gmp`
+AC_MSG_RESULT($build_type)
+
+# Require building in target and build-specific build directory:
+#
+# If the configure script is invoked from the top-level source
+# directory, it creates a suitable build directory (based on the build
+# architecture and build profile from $build_type), changes into it,
+# and reinvokes itself.  CVC4_CONFIGURE_IN_BUILDS is an envariable
+# that breaks any possibility of infinite recursion in this process.
+AC_MSG_CHECKING([what dir to configure])
+if test "$CVC4_CONFIGURE_IN_BUILDS" = yes; then
+  AC_MSG_RESULT([this one (in builds/)])
+elif test "$CVC4_CONFIGURE_AT_TOP_LEVEL" = yes; then
+  AC_MSG_RESULT([builds/$target/$build_type])
+  $as_echo
+  if test -z "$ac_srcdir"; then
+    mkbuilddir=./config/mkbuilddir
+  else
+    mkbuilddir=$ac_srcdir/config/mkbuilddir
+  fi
+  $as_echo "$mkbuilddir $target $build_type"
+  source $mkbuilddir "$target" "$build_type"
+  $as_echo "cd builds/$target/$build_type"
+  cd "builds/$target/$build_type"
+  CVC4_CONFIGURE_IN_BUILDS=yes; export CVC4_CONFIGURE_IN_BUILDS
+  # Runs the single recursive configure invocation using a relative path.
+  # See https://lists.gnu.org/archive/html/autoconf/2011-04/msg00060.html
+  echo "$SHELL ../../../configure ${config_cmdline[[@]]}"
+  "$SHELL" "../../../configure" "${config_cmdline[[@]]}"
+  exitval=$?
+  cd ../../..
+  if test $exitval -eq 0; then
+    cat >config.reconfig <<EOF
+[#!/bin/bash
+# Generated by configure, `date`
+# This script is part of CVC4.
+
+cd "\`dirname \\"\$0\\"\`"
+
+if test -d builds; then :; else echo 'No builds/ directory!' >&2; exit; fi
+
+current=(\`grep '^CURRENT_BUILD' builds/current | sed 's,^CURRENT_BUILD *= *\([^/]*\\)/\\(.*\\),\\1 \\2,'\`)
+arch=\${current[0]}
+build=\${current[1]}
+
+echo "reconfiguring in builds/\$arch/\$build..."
+cd "builds/\$arch/\$build"
+echo ./config.status "\$@"
+./config.status "\$@"]
+EOF
+    chmod +x config.reconfig
+  fi
+  ln -sf "$target/$build_type/config.log" "builds/config.log"
+  exit $exitval
+else
+  AC_MSG_RESULT([this one (user-specified)])
+fi
+
+as_me=configure
+
+# Unpack standard build types. Any particular options can be overriden with
+# --enable/disable-X options
+# Tim: This needs to keep CVC4CPPFLAGS, CVC4CXXFLAGS, etc. set by earlier checks
+case "$with_build" in
+  production) # highly optimized, no assertions, no tracing, dumping
+    CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }"
+    CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }"
+    CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }"
+    CVC4LDFLAGS="${CVC4LDFLAGS:+$CVC4LDFLAGS }"
+    FLAG_VISIBILITY_HIDDEN='-fvisibility=hidden'
+    if test -z "${OPTLEVEL+set}"            ; then OPTLEVEL=3                       ; fi
+    if test -z "${enable_optimized+set}"    ; then enable_optimized=yes             ; fi
+    if test -z "${enable_debug_symbols+set}"; then enable_debug_symbols=yes         ; fi
+    if test -z "${enable_statistics+set}"   ; then enable_statistics=yes            ; fi
+    if test -z "${enable_replay+set}"       ; then enable_replay=no                 ; fi
+    if test -z "${enable_assertions+set}"   ; then enable_assertions=no             ; fi
+    if test -z "${enable_proof+set}"        ; then enable_proof=yes                 ; fi
+    if test -z "${enable_tracing+set}"      ; then enable_tracing=no                ; fi
+    if test -z "${enable_dumping+set}"      ; then enable_dumping=yes               ; fi
+    if test -z "${enable_muzzle+set}"       ; then enable_muzzle=no                 ; fi
+    ;;
+  debug) # unoptimized, debug symbols, assertions, tracing, dumping
+    CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_DEBUG"
+    CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }-fno-inline"
+    CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }-fno-inline"
+    CVC4LDFLAGS="${CVC4LDFLAGS:+$CVC4LDFLAGS }"
+    FLAG_VISIBILITY_HIDDEN=
+    if test -z "${enable_optimized+set}"    ; then enable_optimized=no              ; fi
+    if test -z "${enable_debug_symbols+set}"; then enable_debug_symbols=yes         ; fi
+    if test -z "${enable_statistics+set}"   ; then enable_statistics=yes            ; fi
+    if test -z "${enable_replay+set}"       ; then enable_replay=yes                ; fi
+    if test -z "${enable_assertions+set}"   ; then enable_assertions=yes            ; fi
+    if test -z "${enable_proof+set}"        ; then enable_proof=yes                 ; fi
+    if test -z "${enable_tracing+set}"      ; then enable_tracing=yes               ; fi
+    if test -z "${enable_dumping+set}"      ; then enable_dumping=yes               ; fi
+    if test -z "${enable_muzzle+set}"       ; then enable_muzzle=no                 ; fi
+    ;;
+  default) # moderately optimized, assertions, tracing, dumping
+    CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }"
+    CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }"
+    CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }"
+    CVC4LDFLAGS="${CVC4LDFLAGS:+$CVC4LDFLAGS }"
+    FLAG_VISIBILITY_HIDDEN='-fvisibility=hidden'
+    if test -z "${OPTLEVEL+set}"            ; then OPTLEVEL=2                       ; fi
+    if test -z "${enable_optimized+set}"    ; then enable_optimized=yes             ; fi
+    if test -z "${enable_debug_symbols+set}"; then enable_debug_symbols=yes         ; fi
+    if test -z "${enable_statistics+set}"   ; then enable_statistics=yes            ; fi
+    if test -z "${enable_replay+set}"       ; then enable_replay=yes                ; fi
+    if test -z "${enable_assertions+set}"   ; then enable_assertions=yes            ; fi
+    if test -z "${enable_proof+set}"        ; then enable_proof=yes                 ; fi
+    if test -z "${enable_tracing+set}"      ; then enable_tracing=yes               ; fi
+    if test -z "${enable_dumping+set}"      ; then enable_dumping=yes               ; fi
+    if test -z "${enable_muzzle+set}"       ; then enable_muzzle=no                 ; fi
+    ;;
+  competition) # maximally optimized, no assertions, no tracing, no dumping, muzzled
+    CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_COMPETITION_MODE"
+    CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }-funroll-all-loops -fexpensive-optimizations -fno-enforce-eh-specs"
+    CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }-funroll-all-loops -fexpensive-optimizations -fno-enforce-eh-specs"
+    CVC4LDFLAGS="${CVC4LDFLAGS:+$CVC4LDFLAGS }"
+    FLAG_VISIBILITY_HIDDEN='-fvisibility=hidden'
+    if test -z "${OPTLEVEL+set}"            ; then OPTLEVEL=9                       ; fi
+    if test -z "${enable_optimized+set}"    ; then enable_optimized=yes             ; fi
+    if test -z "${enable_debug_symbols+set}"; then enable_debug_symbols=no          ; fi
+    if test -z "${enable_statistics+set}"   ; then enable_statistics=no             ; fi
+    if test -z "${enable_replay+set}"       ; then enable_replay=no                 ; fi
+    if test -z "${enable_assertions+set}"   ; then enable_assertions=no             ; fi
+    if test -z "${enable_proof+set}"        ; then enable_proof=no                  ; fi
+    if test -z "${enable_tracing+set}"      ; then enable_tracing=no                ; fi
+    if test -z "${enable_dumping+set}"      ; then enable_dumping=no                ; fi
+    if test -z "${enable_muzzle+set}"       ; then enable_muzzle=yes                ; fi
+    if test -z "${user_specified_enable_or_disable_shared}"; then enable_shared=no; fi
+    if test -z "${user_specified_enable_or_disable_static}"; then enable_static=yes; fi
+    if test -z "${enable_static_binary+set}"; then enable_static_binary=yes         ; fi
+    ;;
+  *)
+    AC_MSG_FAILURE([unknown build profile: $with_build])
+    ;;
+esac
+if test -z "${OPTLEVEL+set}"; then OPTLEVEL=3; fi
+
+AM_CONDITIONAL([CVC4_BUILD_PROFILE_PRODUCTION],  [test "$with_build" = production])
+AM_CONDITIONAL([CVC4_BUILD_PROFILE_DEBUG],       [test "$with_build" = debug])
+AM_CONDITIONAL([CVC4_BUILD_PROFILE_DEFAULT],     [test "$with_build" = default])
+AM_CONDITIONAL([CVC4_BUILD_PROFILE_COMPETITION], [test "$with_build" = competition])
+
+# permit a static binary
+AC_MSG_CHECKING([whether to build a static binary])
+AC_ARG_ENABLE([static-binary],
+     [AS_HELP_STRING([--enable-static-binary],
+                     [build a fully statically-linked binary [default=no]])])
+if test -z "${enable_static_binary+set}"; then
+  enable_static_binary=no
+fi
+AC_MSG_RESULT([$enable_static_binary])
+if test "$enable_static_binary" = yes; then
+  if test "$target_vendor" = apple; then
+    if test -z "$MAC_STATIC_BINARY_MANUAL_OVERRIDE"; then
+      AC_MSG_ERROR([[Statically-linked binaries are not supported on Mac OS.  See https://developer.apple.com/library/mac/#qa/qa2001/qa1118.html .  (If you ABSOLUTELY insist on this going forward and you know what you are doing, set MAC_STATIC_BINARY_MANUAL_OVERRIDE=1)]])
+    else
+      AC_MSG_WARN([MAC_STATIC_BINARY_MANUAL_OVERRIDE was set!])
+      AC_MSG_WARN([Will make a static binary during this build.  Note that it may fail!])
+    fi
+  fi
+  if test "$enable_static" != yes; then
+    enable_static=yes
+    AC_MSG_WARN([forcing static-library building, --enable-static-binary given])
+  fi
+fi
+
+AC_MSG_CHECKING([whether to support proofs in libcvc4])
+
+AC_ARG_ENABLE([proof],
+  [AS_HELP_STRING([--disable-proof],
+     [do not support proof generation])])
+if test -z "${enable_proof+set}"; then
+  enable_proof=yes
+fi
+AC_MSG_RESULT([$enable_proof])
+
+if test "$enable_proof" = yes; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_PROOF"
+fi
+AM_CONDITIONAL([CVC4_PROOF], [test "$enable_proof" = yes])
+
+AC_MSG_CHECKING([whether to optimize libcvc4])
+
+AC_ARG_ENABLE([optimized],
+  [AS_HELP_STRING([--enable-optimized],
+     [optimize the build])])
+
+if test -z "${enable_optimized+set}"; then
+  enable_optimized=no
+fi
+
+AC_MSG_RESULT([$enable_optimized])
+
+if test "$enable_optimized" = yes; then
+  CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }-O$OPTLEVEL"
+  CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }-O$OPTLEVEL"
+else
+  CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }-O0"
+  CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }-O0"
+fi
+
+AC_MSG_CHECKING([whether to include debugging symbols in libcvc4])
+
+AC_ARG_ENABLE([debug-symbols],
+  [AS_HELP_STRING([--disable-debug-symbols],
+     [do not include debug symbols in libcvc4])])
+
+if test -z "${enable_debug_symbols+set}"; then
+  enable_debug_symbols=yes
+fi
+
+AC_MSG_RESULT([$enable_debug_symbols])
+
+if test "$enable_debug_symbols" = yes; then
+  CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }-ggdb3"
+  CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }-ggdb3"
+fi
+
+AC_MSG_CHECKING([whether to include statistics are turned on in libcvc4])
+
+AC_ARG_ENABLE([statistics],
+  [AS_HELP_STRING([--disable-statistics],
+     [do not include statistics in libcvc4])])
+
+if test -z "${enable_statistics+set}"; then
+  enable_statistics=yes
+fi
+
+AC_MSG_RESULT([$enable_statistics])
+
+if test "$enable_statistics" = yes; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_STATISTICS_ON"
+fi
+
+AC_MSG_CHECKING([whether the replay feature should be turned on in libcvc4])
+
+AC_ARG_ENABLE([replay],
+  [AS_HELP_STRING([--disable-replay],
+     [turn off the replay feature in libcvc4])])
+
+if test -z "${enable_replay+set}"; then
+  enable_replay=yes
+fi
+
+AC_MSG_RESULT([$enable_replay])
+
+if test "$enable_replay" = yes; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_REPLAY"
+fi
+
+AC_MSG_CHECKING([whether to include assertions in build])
+
+AC_ARG_ENABLE([assertions],
+  [AS_HELP_STRING([--disable-assertions],
+     [turn off assertions in build])])
+
+if test -z "${enable_assertions+set}"; then
+  enable_assertions=yes
+fi
+
+AC_MSG_RESULT([$enable_assertions])
+
+if test "$enable_assertions" = yes; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_ASSERTIONS"
+else
+  # turn off regular C assert() also
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DNDEBUG"
+fi
+
+AC_MSG_CHECKING([whether to do a traceable build of CVC4])
+AC_ARG_ENABLE([tracing],
+  [AS_HELP_STRING([--disable-tracing],
+     [remove all tracing code from CVC4])])
+
+if test -z "${enable_tracing+set}"; then
+  enable_tracing=yes
+fi
+
+AC_MSG_RESULT([$enable_tracing])
+
+if test "$enable_tracing" = yes; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_TRACING"
+fi
+
+AC_MSG_CHECKING([whether to do a dump-capable build of CVC4])
+AC_ARG_ENABLE([dumping],
+  [AS_HELP_STRING([--disable-dumping],
+     [remove all dumping code from CVC4])])
+
+if test -z "${enable_dumping+set}"; then
+  enable_dumping=yes
+fi
+
+AC_MSG_RESULT([$enable_dumping])
+
+if test "$enable_dumping" = yes; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_DUMPING"
+fi
+
+AC_MSG_CHECKING([whether to do a muzzled build of CVC4])
+AC_ARG_ENABLE([muzzle],
+  [AS_HELP_STRING([--enable-muzzle],
+     [completely silence CVC4; remove ALL non-result output from build])])
+
+if test -z "${enable_muzzle+set}"; then
+  enable_muzzle=no
+fi
+
+AC_MSG_RESULT([$enable_muzzle])
+
+if test "$enable_muzzle" = yes; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_MUZZLE"
+fi
+
+AC_MSG_CHECKING([whether to do a gcov-enabled build of CVC4])
+AC_ARG_ENABLE([coverage],
+  [AS_HELP_STRING([--enable-coverage],
+     [build with support for gcov coverage testing])])
+
+if test -z "${enable_coverage+set}"; then
+  enable_coverage=no
+fi
+
+AC_MSG_RESULT([$enable_coverage])
+
+if test "$enable_coverage" = yes; then
+  # For coverage testing, we prefer:
+  #     --enable-static --disable-shared --disable-static-binary
+  # If the user didn't specify these, we force them here.  If the
+  # user specified them in opposite phase, give warnings that they
+  # shouldn't do that, or bomb out.
+  if test "$user_specified_enable_or_disable_shared" != yes; then
+    enable_shared=no
+    AC_MSG_WARN([turning off shared library building due to --enable-coverage])
+  elif test "$enable_shared" = yes; then
+    AC_MSG_WARN([])
+    AC_MSG_WARN([It is not recommended to configure with --enable-coverage --enable-shared])
+    AC_MSG_WARN([gcov does not support shared libraries, so only your static libraries will be coverage-testable.])
+    AC_MSG_WARN([Your cvc4 driver and testing binaries will not be coverage-testable.])
+    AC_MSG_WARN([])
+  fi
+  if test "${enable_static_binary+set}" = set -a "$enable_static_binary" = yes; then
+    AC_MSG_WARN([])
+    AC_MSG_WARN([It is not recommended to configure with --enable-coverage --enable-static-binary])
+    AC_MSG_WARN([Your cvc4 driver and testing binaries will be fully-statically linked and may not be coverage-testable.])
+    AC_MSG_WARN([])
+  fi
+  if test "$user_specified_enable_or_disable_static" != yes; then
+    enable_static=yes
+    AC_MSG_WARN([turning on static library building due to --enable-coverage])
+  elif test "$enable_static" != yes; then
+    AC_MSG_ERROR([--enable-coverage and --disable-static are incompatible; gcov only supports static libraries.])
+  fi
+
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_COVERAGE"
+  CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }--coverage"
+  CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }--coverage"
+  CVC4LDFLAGS="${CVC4LDFLAGS:+$CVC4LDFLAGS }--coverage"
+fi
+
+AC_MSG_CHECKING([whether to do a profiling-enabled build of CVC4])
+
+AC_ARG_ENABLE([profiling],
+  [AS_HELP_STRING([--enable-profiling],
+     [build with support for gprof profiling])])
+
+if test -z "${enable_profiling+set}"; then
+  enable_profiling=no
+fi
+
+AC_MSG_RESULT([$enable_profiling])
+
+if test "$enable_profiling" = yes; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_PROFILING"
+  CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }-pg"
+  CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }-pg"
+  CVC4LDFLAGS="${CVC4LDFLAGS:+$CVC4LDFLAGS }-pg"
+fi
+
+# Check for libglpk (defined in config/glpk.m4)
+AC_ARG_WITH([glpk],
+  [AS_HELP_STRING([--with-glpk],
+     [use GLPK simplex solver])], [], [with_glpk=])
+CVC4_CHECK_FOR_GLPK
+if test $have_libglpk -eq 1; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_USE_GLPK"
+fi
+AM_CONDITIONAL([CVC4_USE_GLPK], [test $have_libglpk -eq 1])
+AC_SUBST([GLPK_LDFLAGS])
+AC_SUBST([GLPK_LIBS])
+
+# Build with libabc (defined in config/abc.m4)
+AC_ARG_WITH([abc],
+  [AS_HELP_STRING([--with-abc],
+     [use the ABC AIG library])], [], [with_abc=])
+CVC4_CHECK_FOR_ABC
+if test $have_libabc -eq 1; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_USE_ABC"
+fi
+AM_CONDITIONAL([CVC4_USE_ABC], [test $have_libabc -eq 1])
+AC_SUBST([ABC_LDFLAGS])
+AC_SUBST([ABC_LIBS])
+
+
+# Build with libcryptominisat
+AC_ARG_WITH([cryptominisat],
+  [AS_HELP_STRING([--with-cryptominisat],
+     [use the CRYPTOMINISAT sat solver])], [], [with_cryptominisat=])
+CVC4_CHECK_FOR_CRYPTOMINISAT
+if test $have_libcryptominisat -eq 1; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_USE_CRYPTOMINISAT"
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-I$CRYPTOMINISAT_HOME/install/include"
+fi
+AM_CONDITIONAL([CVC4_USE_CRYPTOMINISAT], [test $have_libcryptominisat -eq 1])
+AC_SUBST([CRYPTOMINISAT_LDFLAGS])
+AC_SUBST([CRYPTOMINISAT_LIBS])
+
+
+# Check to see if this version/architecture of GNU C++ explicitly
+# instantiates __gnu_cxx::hash<uint64_t> or not.  Some do, some don't.
+# See src/util/hash.h.
+AC_MSG_CHECKING([whether __gnu_cxx::hash<uint64_t> is already specialized])
+AC_LANG_PUSH([C++])
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+#include <stdint.h>
+#include <ext/hash_map>
+namespace __gnu_cxx { template<> struct hash<uint64_t> {}; }])],
+                  [AC_MSG_RESULT([no]); CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_NEED_HASH_UINT64_T"],
+                  [AC_MSG_RESULT([yes])])
+AC_LANG_POP([C++])
+
+# Check whether "long" and "int64_t" are distinct types w.r.t. overloading.
+# Even if they have the same size, they can be distinct, and some platforms
+# can have problems with ambiguous function calls when auto-converting
+# int64_t to long, and others will complain if you overload a function
+# that takes an int64_t with one that takes a long (giving a redefinition
+# error).  So we have to keep both happy.  Probably the same underlying
+# issue as the hash specialization above, but let's check separately
+# for flexibility.
+AC_MSG_CHECKING([for the relationship between long and int64_t])
+AC_LANG_PUSH([C++])
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+#include <stdint.h>
+void foo(long) {}
+void foo(int64_t) {}])],
+                  [AC_MSG_RESULT([no relationship detected]); CVC4_NEED_INT64_T_OVERLOADS=1],
+                  [AC_MSG_RESULT([typedef or similar]); CVC4_NEED_INT64_T_OVERLOADS=0])
+AC_LANG_POP([C++])
+AC_SUBST([CVC4_NEED_INT64_T_OVERLOADS])
+
+# Check for ANTLR runantlr script (defined in config/antlr.m4)
+AC_PROG_ANTLR
+
+CVC4_CXX_OPTION([-Werror], [WERROR])
+CVC4_C_OPTION([-Werror], [C_WERROR])
+CVC4_CXX_OPTION([-Wno-deprecated], [WNO_DEPRECATED])
+CVC4_C_OPTION([-Wno-deprecated], [C_WNO_DEPRECATED])
+CVC4_CXX_OPTION([-Wno-conversion-null], [WNO_CONVERSION_NULL])
+CVC4_CXX_OPTION([-Wno-tautological-compare], [WNO_TAUTOLOGICAL_COMPARE])
+CVC4_CXX_OPTION([-Wno-parentheses], [WNO_PARENTHESES])
+CVC4_CXX_OPTION([-Wno-uninitialized], [WNO_UNINITIALIZED])
+CVC4_CXX_OPTION([-Wno-unused-variable], [WNO_UNUSED_VARIABLE])
+CVC4_CXX_OPTION([-fno-strict-aliasing], [FNO_STRICT_ALIASING])
+AC_SUBST([WERROR])
+AC_SUBST([WNO_CONVERSION_NULL])
+AC_SUBST([WNO_TAUTOLOGICAL_COMPARE])
+AC_SUBST([WNO_PARENTHESES])
+AC_SUBST([WNO_UNINITIALIZED])
+AC_SUBST([WNO_UNUSED_VARIABLE])
+AC_SUBST([FNO_STRICT_ALIASING])
+
+# On Mac, we have to fix the visibility of standard library symbols.
+# Otherwise, exported template instantiations---even though explicitly
+# CVC4_PUBLIC, can be generated as symbols with internal-only linkage.
+# Presumably, Apple is distributing a libstdc++ that is built *without*
+# --enable-libstdcxx-visibility (?)
+if test "$target_vendor" = apple; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-D_GLIBCXX_VISIBILITY_DEFAULT=\"__attribute__((__visibility__(\\\"default\\\")))\""
+fi
+
+# Tell top-level Makefile to include $(top_srcdir)/personal.mk
+AC_ARG_ENABLE([personal-make-rules],
+  [AS_HELP_STRING([--enable-personal-make-rules],
+     [include top-level personal.mk (if it exists)])])
+if test "$enable_personal_make_rules" = yes; then
+  # This allows us to include a personal.mk makefile from every
+  # generated makefile.  Named zz_* in order to make sure this
+  # comes last, so it gets other definitions (in particular top_srcdir).
+  zz_cvc4_use_personal_make_rules='yes
+
+all:;
+include $(top_srcdir)/personal.mk
+$(top_srcdir)/personal.mk:; @touch "$@"'
+  AC_SUBST([zz_cvc4_use_personal_make_rules])
+fi
+
+# Doxygen configuration
+AC_ARG_ENABLE([internals-documentation],
+  [AS_HELP_STRING([--enable-internals-documentation],
+     [build Doxygen documentation for static and private member functions])])
+if test "$enable_internals_documentation" = yes; then
+  DOXYGEN_EXTRACT_PRIVATE=YES
+  DOXYGEN_EXTRACT_STATIC=YES
+else
+  DOXYGEN_EXTRACT_PRIVATE=NO
+  DOXYGEN_EXTRACT_STATIC=NO
+fi
+AC_SUBST([DOXYGEN_EXTRACT_PRIVATE])
+AC_SUBST([DOXYGEN_EXTRACT_STATIC])
+
+DX_MAN_FEATURE(OFF)
+DX_PDF_FEATURE(ON)
+DX_PS_FEATURE(OFF)
+DX_DOT_FEATURE(ON)
+DX_INIT_DOXYGEN($PACKAGE_NAME, config/doxygen.cfg, $srcdir/doc/doxygen)
+
+AC_ARG_ENABLE([unit-testing], AS_HELP_STRING([--disable-unit-testing], [don't build support for unit testing, even if available]), , [enable_unit_testing=check])
+AC_ARG_VAR(CXXTEST, [path to CxxTest installation])
+
+AC_SUBST([CXXTEST])
+
+AC_ARG_WITH([cxxtest-dir],
+  [AS_HELP_STRING([--with-cxxtest-dir=DIR], [path to CxxTest installation])],
+  [CXXTEST="$withval"])
+
+# In the case of "./configure --with-cxxtest-dir=../cxxtest" (or other
+# relative path) and having switched the configure directory (see above),
+# search with respect to the top source dir, not the build dir
+if test "$CVC4_CONFIGURE_IN_BUILDS" = yes -a -n "$CXXTEST"; then
+  case "$CXXTEST" in
+    /*) ;;
+    *)  CXXTEST="$srcdir/$CXXTEST" ;;
+  esac
+fi
+
+TESTS_ENVIRONMENT=
+RUN_REGRESSION_ARGS=
+if test "$enable_proof" = yes; then
+  RUN_REGRESSION_ARGS="${RUN_REGRESSION_ARGS:+$RUN_REGRESSION_ARGS }--proof"
+fi
+AC_SUBST([TESTS_ENVIRONMENT])
+AC_SUBST([RUN_REGRESSION_ARGS])
+
+CXXTESTGEN=
+AC_PATH_PROG(CXXTESTGEN, cxxtestgen.pl, [], [$CXXTEST:$PATH])
+if test -z "$CXXTESTGEN"; then
+  AC_PATH_PROG(CXXTESTGEN, cxxtestgen.py, [], [$CXXTEST:$PATH])
+fi
+if test -z "$CXXTESTGEN"; then
+  AC_PATH_PROG(CXXTESTGEN, cxxtestgen, [], [$CXXTEST:$PATH])
+fi
+# The latest version of cxxtest distributed from the git repository places
+# cxxtest under <cxxtest-root>/bin/cxxtest
+if test -z "$CXXTESTGEN"; then
+  AC_PATH_PROG(CXXTESTGEN, cxxtestgen, [], [$CXXTEST/bin:$PATH])
+fi
+if test "$enable_unit_testing" = "no"; then
+  AC_MSG_NOTICE([unit tests disabled by user request.])
+  CXXTESTGEN=
+  CXXTEST=
+elif test -z "$CXXTESTGEN"; then
+  AC_MSG_NOTICE([unit tests disabled, could not find cxxtestgen.pl or cxxtestgen.py or cxxtestgen])
+elif test -z "$CXXTEST"; then
+  CXXTEST=`dirname "$CXXTESTGEN"`
+  AC_MSG_CHECKING([for location of CxxTest headers])
+  if test -e "$CXXTEST/cxxtest/TestRunner.h"; then
+    AC_MSG_RESULT([$CXXTEST])
+  else
+    if test -e "/usr/include/cxxtest/TestRunner.h"; then
+      AC_MSG_RESULT([/usr/include])
+    else
+      AC_MSG_RESULT([not found])
+      AC_MSG_WARN([unit tests disabled, CxxTest headers not found.])
+      CXXTESTGEN=
+      CXXTEST=
+    fi
+  fi
+fi
+
+if test "$enable_unit_testing" = yes -a -z "$CXXTESTGEN"; then
+  AC_MSG_ERROR([--enable-unit-testing given but cxxtest not found.])
+fi
+
+AM_CONDITIONAL([HAVE_CXXTESTGEN], [test -n "$CXXTESTGEN"])
+
+AC_ARG_VAR(TEST_CPPFLAGS, [CPPFLAGS to use when testing (default=$CPPFLAGS)])
+AC_ARG_VAR(TEST_CXXFLAGS, [CXXFLAGS to use when testing (default=$CXXFLAGS)])
+AC_ARG_VAR(TEST_LDFLAGS,  [LDFLAGS to use when testing (default=$LDFLAGS)])
+
+AC_ARG_VAR(PERL, [PERL interpreter (used when testing)])
+
+if test -n "$CXXTEST"; then
+  if test -z "$PERL"; then
+    AC_CHECK_PROGS(PERL, perl, perl, [])
+  else
+    AC_CHECK_PROG(PERL, "$PERL", "$PERL", [])
+  fi
+
+  if test -z "$PERL"; then
+    AC_MSG_WARN([unit tests disabled, perl not found.])
+    CXXTESTGEN=
+    CXXTEST=
+  fi
+fi
+
+AC_ARG_VAR(PYTHON, [PYTHON interpreter (used for building legacy Java library interface)])
+
+if test -z "$PYTHON"; then
+  AC_CHECK_PROGS(PYTHON, python, python, [])
+else
+  AC_CHECK_PROG(PYTHON, "$PYTHON", "$PYTHON", [])
+fi
+
+if test -z "$PYTHON"; then
+  AC_MSG_WARN([python not found, cannot build libcvc4compat_java (the legacy Java interface).])
+  CXXTESTGEN=
+  CXXTEST=
+fi
+
+# Checks for libraries.
+
+AC_SEARCH_LIBS([clock_gettime], [rt pthread],
+               [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_CHECK_FUNC([ffs], [AC_DEFINE([HAVE_FFS], [1],
+                                [Defined to 1 if ffs() is supported by the platform.])])
+
+AC_LIBOBJ([strtok_r ffs])
+
+# Check for antlr C++ runtime (defined in config/antlr.m4)
+AC_LIB_ANTLR
+
+# Check for user preferences for language bindings to build, and for
+# build support.  The arg list is the default set if unspecified by
+# the user (the actual built set is the subset that appears to be
+# supported by the build host).
+CVC4_CHECK_BINDINGS([c java])dnl csharp perl php python ruby tcl ocaml])
+
+# Checks for header files and their contents.
+AC_CHECK_HEADERS([getopt.h unistd.h ext/stdio_filebuf.h])
+
+# Checks for typedefs, structures, and compiler characteristics.
+#AC_HEADER_STDBOOL
+# these are bad macros, they clash with system header <stdint.h> !!
+#AC_TYPE_UINT16_T
+#AC_TYPE_UINT32_T
+#AC_TYPE_UINT64_T
+#AC_TYPE_SIZE_T
+
+# guard against double-inclusion of the autoheader
+AH_TOP([#ifndef __CVC4__CVC4AUTOCONFIG_H
+#define __CVC4__CVC4AUTOCONFIG_H])
+AH_BOTTOM([#endif /* __CVC4__CVC4AUTOCONFIG_H */])
+
+AC_CHECK_DECLS([optreset], [], [], [#include <getopt.h>])
+
+# check with which standard strerror_r() complies
+AC_FUNC_STRERROR_R
+
+# is is_sorted() in std or __gnu_cxx?
+CHECK_FOR_IS_SORTED
+
+# require boost library
+BOOST_REQUIRE()
+
+# look for boost threading library
+AC_ARG_WITH([portfolio],
+    AS_HELP_STRING([--with-portfolio], [build the multithreaded portfolio version of CVC4 (pcvc4)]))
+cvc4_save_LDFLAGS="$LDFLAGS"
+if test "$enable_static_binary" = yes; then
+  LDFLAGS="-static $LDFLAGS"
+fi
+cvc4_has_threads=yes
+AC_ARG_ENABLE([thread-support],
+    AS_HELP_STRING([--disable-thread-support], [do not support multithreaded-capable library]))
+if test "$enable_thread_support" = no; then
+  cvc4_has_threads=no
+  if test "$with_portfolio" = yes; then
+    AC_MSG_ERROR([user gave both --with-portfolio and --disable-thread-support, which are contradictory])
+  fi
+else
+  BOOST_THREADS([], [AC_MSG_WARN([disabling multithreaded support])
+                     cvc4_has_threads=no])
+fi
+LDFLAGS="$cvc4_save_LDFLAGS"
+if test $cvc4_has_threads = no; then
+  if test "$enable_thread_support" = yes; then
+    AC_MSG_ERROR([user gave --enable-thread-support but could not build with threads; maybe boost threading library is missing?])
+  fi
+  if test "$with_portfolio" = yes; then
+    AC_MSG_ERROR([user gave --with-portfolio but could not build with threads; maybe boost threading library is missing?])
+  fi
+  with_portfolio=no
+fi
+if test "$with_portfolio" != yes; then
+  with_portfolio=no
+fi
+AM_CONDITIONAL([CVC4_BUILD_PCVC4], [test "$with_portfolio" = yes])
+if test "$with_portfolio" = yes; then
+  CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_PORTFOLIO"
+
+  # see if Boost has thread attributes (should be any version >= 1.50.0)
+  # non-fatal error if not, but we won't support --thread-stack option
+  AC_MSG_CHECKING([whether Boost threads support thread attrs])
+  AC_LANG_PUSH([C++])
+  cvc4_save_CPPFLAGS="$CPPFLAGS"
+  cvc4_save_LIBS="$LIBS"
+  cvc4_save_LDFLAGS="$LDFLAGS"
+  CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+  LIBS="$LIBS $BOOST_THREAD_LIBS"
+  LDFLAGS="$LDFLAGS $BOOST_THREAD_LDFLAGS"
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <boost/thread.hpp>],
+         [boost::thread::attributes attrs; attrs.set_stack_size(10 * 1024 * 1024);])],
+    [cvc4_boost_has_thread_attr=1;
+     AC_MSG_RESULT([yes])],
+    [cvc4_boost_has_thread_attr=0;
+     AC_MSG_RESULT([no])])
+  CPPFLAGS="$cvc4_save_CPPFLAGS"
+  LIBS="$cvc4_save_LIBS"
+  LDFLAGS="$cvc4_save_LDFLAGS"
+  AC_LANG_POP([C++])
+else
+  cvc4_boost_has_thread_attr=0
+fi
+AC_DEFINE_UNQUOTED([BOOST_HAS_THREAD_ATTR], $cvc4_boost_has_thread_attr, [Define to 1 if Boost threading library has support for thread attributes])
+
+# Check for libreadline (defined in config/readline.m4)
+AC_ARG_WITH([readline], [AS_HELP_STRING([--with-readline], [support the readline library])], [], [with_readline=check])
+# make the flags as close as possible to the final flags, because the Boost
+# flags can bring in a different, incompatible readline library than we'd
+# get otherwise (e.g. on Mac, where there are commonly two different readlines,
+# one in /usr and one in /opt/local)
+cvc4_rlcheck_save_CPPFLAGS="$CPPFLAGS"
+cvc4_rlcheck_save_CXXFLAGS="$CXXFLAGS"
+cvc4_rlcheck_save_CFLAGS="$CFLAGS"
+cvc4_rlcheck_save_LDFLAGS="$LDFLAGS"
+CPPFLAGS="${CPPFLAGS:+$CPPFLAGS }${BOOST_CPPFLAGS:+$BOOST_CPPFLAGS }$CVC4CPPFLAGS"
+CXXFLAGS="${CXXFLAGS:+$CXXFLAGS }$CVC4CXXFLAGS $WNO_DEPRECATED"
+CFLAGS="${CFLAGS:+$CFLAGS }$CVC4CFLAGS $C_WNO_DEPRECATED -fexceptions"
+LDFLAGS="${LDFLAGS:+$LDFLAGS }$CVC4LDFLAGS"
+CVC4_CHECK_FOR_READLINE
+CPPFLAGS="$cvc4_rlcheck_save_CPPFLAGS"
+CXXFLAGS="$cvc4_rlcheck_save_CXXFLAGS"
+CFLAGS="$cvc4_rlcheck_save_CFLAGS"
+LDFLAGS="$cvc4_rlcheck_save_LDFLAGS"
+AC_DEFINE_UNQUOTED([HAVE_LIBREADLINE], $have_libreadline, [Define to 1 to use libreadline])
+AC_DEFINE_UNQUOTED([READLINE_COMPENTRY_FUNC_RETURNS_CHARP], $readline_compentry_func_returns_charp, [Define to 1 if rl_completion_entry_function is declared to return pointer to char])
+AC_SUBST([READLINE_LIBS])
+
+# Whether to build compatibility library
+CVC4_BUILD_LIBCOMPAT=yes
+AC_ARG_WITH([compat],
+    AS_HELP_STRING([--with-compat], [build compatibility library (CVC3 API layer)]),
+    [if test "$withval" = no; then CVC4_BUILD_LIBCOMPAT=no; fi])
+AC_MSG_CHECKING([whether to build compatibility library (CVC3 API layer)])
+if test "$CVC4_BUILD_LIBCOMPAT" = yes; then
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no, disabled by user])
+fi
+AC_SUBST(CVC4_BUILD_LIBCOMPAT)
+AM_CONDITIONAL([CVC4_BUILD_LIBCOMPAT], [test "$CVC4_BUILD_LIBCOMPAT" = yes])
+
+# Check for availability of TLS support (e.g. __thread storage class)
+AC_MSG_CHECKING([whether to use compiler-supported TLS if available])
+AC_ARG_ENABLE([tls], AS_HELP_STRING([--disable-tls], [don't use compiler-native TLS]))
+if test $cvc4_has_threads = no; then
+  # We disable TLS entirely by simply telling the build system that
+  # the empty string is the __thread keyword.
+  AC_MSG_RESULT([multithreading disabled])
+  CVC4_TLS_SUPPORTED=1
+  CVC4_TLS=
+  CVC4_TLS_explanation='disabled (no multithreading support)'
+else
+  if test -z "${enable_tls+set}" || test "$enable_tls" = "yes"; then
+    AC_MSG_RESULT([yes])
+    AX_TLS([CVC4_TLS=$ac_cv_tls], [CVC4_TLS=])
+  else
+    AC_MSG_RESULT([no])
+    CVC4_TLS=
+  fi
+  if test -n "$CVC4_TLS"; then
+    CVC4_TLS_SUPPORTED=1
+    CVC4_TLS_explanation="$CVC4_TLS"
+  else
+    CVC4_TLS_explanation='pthread_getspecific()'
+    CVC4_TLS_SUPPORTED=0
+  fi
+fi
+AC_SUBST([CVC4_TLS])
+AC_SUBST([CVC4_TLS_SUPPORTED])
+
+# Whether to compile with google profiling tools
+cvc4_use_google_perftools=0
+AC_ARG_WITH(
+    [google_perftools],
+    AS_HELP_STRING(
+        [--with-google-perftools],
+        [use Google Performance Tools]
+    ),
+    [if test "$withval" != no; then
+        cvc4_use_google_perftools=1
+     fi
+    ]
+)
+AC_MSG_CHECKING([whether to link in google perftools libraries])
+if test $cvc4_use_google_perftools = 1; then
+  AC_MSG_RESULT([yes])
+  AC_CHECK_LIB([tcmalloc], [MallocExtension_GetAllocatedSize], , [AC_MSG_ERROR([cannot link google-perftools test program with -ltcmalloc])], [-lpthread])
+  AC_CHECK_LIB([profiler], [ProfilerStart], , [AC_MSG_ERROR([cannot link google-perftools test program with -lprofiler])], [-lpthread])
+else
+  AC_MSG_RESULT([no (user didn't request it)])
+fi
+
+# Java
+AC_ARG_VAR(JAVA, [Java interpreter (used when testing Java interface)])
+AC_ARG_VAR(JAVAC, [Java compiler (used when building and testing Java interface)])
+AC_ARG_VAR(JAVAH, [Java compiler (used when building and testing Java interface)])
+AC_ARG_VAR(JAR, [Jar archiver (used when building Java interface)])
+if test "$cvc4_build_java_bindings"; then
+  dnl AM_PROG_GCJ
+  if test -z "$JAVA"; then
+    AC_CHECK_PROGS(JAVA, java, java, [])
+  else
+    AC_CHECK_PROG(JAVA, "$JAVA", "$JAVA", [])
+  fi
+  if test -z "$JAVAC"; then
+    AC_CHECK_PROGS(JAVAC, javac gcj, javac, [])
+    if test "$JAVAC" = gcj; then JAVAC='gcj -C'; fi
+  else
+    AC_CHECK_PROG(JAVAC, "$JAVAC", "$JAVAC", [])
+  fi
+  if test -z "$JAVAH"; then
+    AC_CHECK_PROGS(JAVAH, javah gcjh, javah, [])
+  else
+    AC_CHECK_PROG(JAVAH, "$JAVAH", "$JAVAH", [])
+  fi
+  if test -z "$JAR"; then
+    AC_CHECK_PROGS(JAR, jar, jar, [])
+  else
+    AC_CHECK_PROG(JAR, "$JAR", "$JAR", [])
+  fi
+fi
+
+# on Mac OS X, Java doesn't like the .so module extension; it wants .dylib
+module=no eval CVC4_JAVA_MODULE_EXT="$shrext_cmds"
+if test -z "$CVC4_JAVA_MODULE_EXT"; then
+  CVC4_JAVA_MODULE_EXT=.so
+fi
+AC_SUBST([CVC4_JAVA_MODULE_EXT])
+
+# Prepare configure output
+
+if test "$enable_shared" = yes; then BUILDING_SHARED=1; else BUILDING_SHARED=0; fi
+if test "$enable_static" = yes; then BUILDING_STATIC=1; else BUILDING_STATIC=0; fi
+if test "$enable_static_binary" = yes; then STATIC_BINARY=1; else STATIC_BINARY=0; fi
+AC_SUBST(BUILDING_SHARED)
+AC_SUBST(BUILDING_STATIC)
+AC_SUBST(STATIC_BINARY)
+AM_CONDITIONAL([STATIC_BINARY], [test "$enable_static_binary" = yes])
+AM_CONDITIONAL([COVERAGE_ENABLED], [test "$enable_coverage" = yes])
+
+AM_CONDITIONAL([CVC4_DEBUG], [test "$with_build" = debug])
+AM_CONDITIONAL([CVC4_TRACING], [test "$enable_tracing" = yes])
+
+AC_SUBST(CVC4_LIBRARY_VERSION)
+AC_SUBST(CVC4_PARSER_LIBRARY_VERSION)
+AC_SUBST(CVC4_COMPAT_LIBRARY_VERSION)
+AC_SUBST(CVC4_BINDINGS_LIBRARY_VERSION)
+
+AC_DEFINE_UNQUOTED(CVC4_MAJOR, ${CVC4_MAJOR}, [Major component of the version of CVC4.])
+AC_DEFINE_UNQUOTED(CVC4_MINOR, ${CVC4_MINOR}, [Minor component of the version of CVC4.])
+AC_DEFINE_UNQUOTED(CVC4_RELEASE, ${CVC4_RELEASE}, [Release component of the version of CVC4.])
+AC_DEFINE_UNQUOTED(CVC4_EXTRAVERSION, ["${CVC4_EXTRAVERSION}"], [Extraversion component of the version of CVC4.])
+AC_DEFINE_UNQUOTED(CVC4_RELEASE_STRING, ["${CVC4_RELEASE_STRING}"], [Full release string for CVC4.])
+
+CPPFLAGS="${CPPFLAGS:+$CPPFLAGS }${BOOST_CPPFLAGS:+$BOOST_CPPFLAGS }$CVC4CPPFLAGS"
+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)
+
+AM_CONDITIONAL(WHITE_AND_BLACK_TESTS, [test -z "$FLAG_VISIBILITY_HIDDEN"])
+
+# remember the command line used for configure
+AC_SUBST(cvc4_config_cmdline)
+
+# mk_include
+#
+# When automake scans Makefiles, it complains about non-standard make
+# features (including GNU extensions), and breaks GNU Make's
+# "if/endif" construct, replacing the "if" with AM_CONDITIONAL if
+# constructs.  automake even follows "include" and messes with
+# included Makefiles.
+#
+# CVC4 assumes GNU Make and we want to use GNU Make if/endifs, so we
+# have to hide some included Makefiles with GNU extensions.  We do
+# this by defining mk_include as an autoconf substitution and then
+# using "@mk_include@ other_makefile" in Makefile.am to include
+# makefiles with GNU extensions; this hides them from automake.
+mk_include=include
+AC_SUBST(mk_include)
+# Similar trickery for "if"
+mk_if=if
+AC_SUBST(mk_if)
+mk_empty=
+AC_SUBST(mk_empty)
+
+# CVC4_FALSE
+#
+# This is used to _always_ comment out rules in automake makefiles, but
+# still trigger certain automake behavior; see test/unit/Makefile.am.
+AM_CONDITIONAL([CVC4_FALSE], [false])
+
+# set up substitutions for src/util/{rational,integer}.h.in
+if test $cvc4_cln_or_gmp = cln; then
+  CVC4_USE_CLN_IMP=1
+  CVC4_USE_GMP_IMP=0
+else
+  CVC4_USE_CLN_IMP=0
+  CVC4_USE_GMP_IMP=1
+fi
+AC_SUBST(CVC4_USE_CLN_IMP)
+AC_SUBST(CVC4_USE_GMP_IMP)
+
+# month/year for man pages
+MAN_DATE=`date '+%B %Y'`
+AC_SUBST(MAN_DATE)
+
+AC_CONFIG_FILES([
+  Makefile.builds
+  Makefile
+  proofs/signatures/Makefile]
+  m4_esyscmd([find contrib src test examples -name Makefile.am | grep -v '^contrib/theoryskel/' | grep -v '^contrib/alttheoryskel/' | sort | sed 's,\.am$,,'])
+)
+
+if test $cvc4_has_threads = yes; then
+  support_multithreaded='with boost threading library'
+  AM_CONDITIONAL([CVC4_HAS_THREADS], [true])
+  AC_SUBST([CVC4_HAS_THREADS], 1)
+else
+  support_multithreaded='no'
+  AM_CONDITIONAL([CVC4_HAS_THREADS], [false])
+  AC_SUBST([CVC4_HAS_THREADS], 0)
+fi
+
+# Final information to the user
+gpl=no
+licensewarn=
+
+if test "$custom_build_profile" = yes; then
+  with_build="$with_build (customized)"
+fi
+
+support_unit_tests='cxxtest not found; unit tests not supported'
+if test -n "$CXXTEST"; then
+  support_unit_tests='unit testing infrastructure enabled in build directory'
+elif test "$enable_unit_testing" = no; then
+  support_unit_tests='unit testing disabled by user'
+fi
+
+if test "$enable_optimized" = yes; then
+  optimized="yes, at level $OPTLEVEL"
+else
+  optimized="no"
+fi
+
+if test $have_libglpk -eq 1; then
+  gpl=yes
+  gpllibs="${gpllibs} glpk"
+fi
+
+if test $have_libreadline -eq 1; then
+  gpl=yes
+  gpllibs="${gpllibs} readline"
+fi
+
+if test $cvc4_cln_or_gmp = cln; then
+  mplibrary='cln (GPL)'
+  gpl=yes
+  gpllibs="${gpllibs} cln"
+  if test $with_portfolio = yes; then
+    AC_ERROR([Bad configuration detected: cannot build portfolio with CLN.
+Please specify only one of --with-portfolio and --with-cln.])
+  fi
+else
+  mplibrary='gmp'
+fi
+
+if test "$gpl" = yes; then
+  if test "$CVC4_BSD_LICENSED_CODE_ONLY" = 1; then
+    AC_ERROR([Bad configuration detected: BSD-licensed code only, but also requested GPLed libraries:$gpllibs
+To permit GPL'ed dependences, use the configure flag --enable-gpl])
+  fi
+
+  licensewarn="${licensewarn}"'****************************************************************************
+Please note that CVC4 will be built against the following GPLed libraries:
+ '"$gpllibs"'
+As these libraries are covered under the GPLv3, so is this build of CVC4.
+CVC4 is also available to you under the terms of the (modified) BSD license.
+If you prefer to license CVC4 under those terms, please configure with the
+option "--bsd", which will disable all optional GPLed library dependences.
+****************************************************************************
+
+'
+  license="GPLv3 (due to optional libraries; see below)"
+else
+  licensewarn="${licensewarn}Please note that this configuration is NOT built against any GPL'ed
+libraries, so it is covered by the (modified) BSD license.  This is,
+however, not the best-performing configuration of CVC4.  To build
+against GPL'ed libraries which improve CVC4's performance, re-configure
+with '--best --enable-gpl'.
+
+"
+  license="modified BSD"
+fi
+
+if test "$gpl" = yes; then isgpl=1; else isgpl=0; fi
+AC_DEFINE_UNQUOTED(CVC4_GPL_DEPS, $isgpl, [Whether CVC4 is built with the (optional) GPLed library dependences.])
+
+CVC4_COMPAT_LIBRARY_VERSION_or_nobuild="$CVC4_COMPAT_LIBRARY_VERSION"
+CVC4_BINDINGS_LIBRARY_VERSION_or_nobuild="$CVC4_BINDINGS_LIBRARY_VERSION"
+if test "$CVC4_BUILD_LIBCOMPAT" = no; then
+  CVC4_COMPAT_LIBRARY_VERSION_or_nobuild="N/A"
+fi
+if test -z "$CVC4_LANGUAGE_BINDINGS"; then
+  CVC4_BINDINGS_LIBRARY_VERSION_or_nobuild="N/A"
+fi
+
+bindings_to_be_built=none
+if test -n "$CVC4_LANGUAGE_BINDINGS"; then
+  bindings_to_be_built="$CVC4_LANGUAGE_BINDINGS"
+  if test -z "$SWIG"; then
+    bindings_to_be_built="$bindings_to_be_built (for CVC3 compatibility layer only; SWIG not found)"
+  fi
+fi
+
+CVC4_CONFIG_FILE_ONLY_IF_CHANGED([src/base/tls.h])
+CVC4_CONFIG_FILE_ONLY_IF_CHANGED([src/util/integer.h])
+CVC4_CONFIG_FILE_ONLY_IF_CHANGED([src/util/rational.h])
+
+CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/cvc4.1_template])
+CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/cvc4.5])
+CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/libcvc4.3_template])
+CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/SmtEngine.3cvc_template])
+CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/options.3cvc_template])
+CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/libcvc4parser.3])
+CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/libcvc4compat.3])
+
+AC_OUTPUT
+
+cat <<EOF
+
+CVC4 $VERSION
+
+Build profile: $with_build
+Build ID     : $build_type
+Optimized    : $optimized
+Debug symbols: $enable_debug_symbols
+Proofs       : $enable_proof
+Statistics   : $enable_statistics
+Replay       : $enable_replay
+Assertions   : $enable_assertions
+Tracing      : $enable_tracing
+Dumping      : $enable_dumping
+Muzzle       : $enable_muzzle
+
+Unit tests   : $support_unit_tests
+gcov support : $enable_coverage
+gprof support: $enable_profiling
+
+Static libs  : $enable_static
+Shared libs  : $enable_shared
+Static binary: $enable_static_binary
+Compat lib   : $CVC4_BUILD_LIBCOMPAT
+Bindings     : $bindings_to_be_built
+
+Multithreaded: $support_multithreaded
+TLS support  : $CVC4_TLS_explanation
+Portfolio    : $with_portfolio
+
+MP library   : $mplibrary
+GLPK         : $with_glpk
+ABC          : $with_abc
+Readline     : $with_readline
+
+CPPFLAGS     : $CPPFLAGS
+CXXFLAGS     : $CXXFLAGS
+CFLAGS       : $CFLAGS
+LIBS         : $LIBS
+LDFLAGS      : $LDFLAGS
+
+libcvc4 version        : $CVC4_LIBRARY_VERSION
+libcvc4parser version  : $CVC4_PARSER_LIBRARY_VERSION
+libcvc4compat version  : $CVC4_COMPAT_LIBRARY_VERSION_or_nobuild
+libcvc4bindings version: $CVC4_BINDINGS_LIBRARY_VERSION_or_nobuild
+
+Install into : $prefix
+
+CVC4 license : $license
+
+${licensewarn}Now just type make, followed by make check or make install, as you like.
+
+EOF
+
+if test -n "$CVC4_UNSUPPORTED_LANGUAGE_BINDINGS"; then
+  AC_MSG_WARN([])
+  AC_MSG_WARN([You are electing to build unsupported language binding(s):])
+  AC_MSG_WARN([    $CVC4_UNSUPPORTED_LANGUAGE_BINDINGS])
+  AC_MSG_WARN([Please be aware that these bindings may not compile, or])
+  AC_MSG_WARN([work, and the interface to CVC4 via these bindings may])
+  AC_MSG_WARN([change drastically in upcoming releases of CVC4.])
+  AC_MSG_WARN([])
+fi
+
+if test -n "$CVC4_INTEGRITY_WARNING"; then
+  AC_MSG_WARN([])
+  AC_MSG_WARN($CVC4_INTEGRITY_WARNING)
+  AC_MSG_WARN([Please run "make check" after building to ensure integrity of the binary and library])
+  AC_MSG_WARN([])
+fi
diff --git a/contrib/Makefile.am b/contrib/Makefile.am
new file mode 100644
index 0000000..ff12eb7
--- /dev/null
+++ b/contrib/Makefile.am
@@ -0,0 +1,29 @@
+EXTRA_DIST = \
+	README \
+	cvc-devel.el \
+	dimacs_to_smt.pl \
+	switch-config \
+	cvc-mode.el \
+	editing-with-emacs \
+	luby.c \
+	addsourcedir \
+	new-theory \
+	configure-in-place \
+	depgraph \
+	get-antlr-3.4 \
+	mac-build \
+	win-build \
+	run-script-smtcomp2014 \
+	run-script-cascj7-fnt \
+	run-script-cascj7-fof \
+	run-script-cascj7-tff \
+	theoryskel/kinds \
+	theoryskel/README.WHATS-NEXT \
+	theoryskel/theory_DIR.cpp \
+	theoryskel/theory_DIR.h \
+	theoryskel/theory_DIR_rewriter.h \
+	theoryskel/theory_DIR_type_rules.h
+	alttheoryskel/kinds \
+	alttheoryskel/README.WHATS-NEXT \
+	alttheoryskel/theory_DIR.cpp \
+	alttheoryskel/theory_DIR.h
diff --git a/contrib/Makefile.in b/contrib/Makefile.in
new file mode 100644
index 0000000..a41372d
--- /dev/null
+++ b/contrib/Makefile.in
@@ -0,0 +1,613 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = contrib
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in README
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+EXTRA_DIST = \
+	README \
+	cvc-devel.el \
+	dimacs_to_smt.pl \
+	switch-config \
+	cvc-mode.el \
+	editing-with-emacs \
+	luby.c \
+	addsourcedir \
+	new-theory \
+	configure-in-place \
+	depgraph \
+	get-antlr-3.4 \
+	mac-build \
+	win-build \
+	run-script-smtcomp2014 \
+	run-script-cascj7-fnt \
+	run-script-cascj7-fof \
+	run-script-cascj7-tff \
+	theoryskel/kinds \
+	theoryskel/README.WHATS-NEXT \
+	theoryskel/theory_DIR.cpp \
+	theoryskel/theory_DIR.h \
+	theoryskel/theory_DIR_rewriter.h \
+	theoryskel/theory_DIR_type_rules.h
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu contrib/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags-am distclean distclean-generic \
+	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+	alttheoryskel/kinds \
+	alttheoryskel/README.WHATS-NEXT \
+	alttheoryskel/theory_DIR.cpp \
+	alttheoryskel/theory_DIR.h
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/contrib/README b/contrib/README
new file mode 100644
index 0000000..47d4941
--- /dev/null
+++ b/contrib/README
@@ -0,0 +1,4 @@
+This directory is for contributions to CVC4 that aren't directly
+part of the main project.
+
+-- Morgan Deters <mdeters at cs.nyu.edu>  Mon, 09 Nov 2009 15:14:41 -0500
diff --git a/contrib/addsourcedir b/contrib/addsourcedir
new file mode 100755
index 0000000..431ec1d
--- /dev/null
+++ b/contrib/addsourcedir
@@ -0,0 +1,94 @@
+#!/bin/sh
+#
+# addsourcedir
+# Morgan Deters <mdeters at cs.nyu.edu> for the CVC4 project
+# Copyright (c) 2010, 2011  The CVC4 Project
+#
+# usage: addsourcedir paths...
+#
+
+progname=`basename "$0"`
+cd `dirname "$0"`/..
+
+if [ $# -lt 1 ]; then
+  echo >&2
+  echo "usage: $progname paths..." >&2
+  echo >&2
+  echo "Each path should be relative to the top-level source directory, e.g.:" >&2
+  echo >&2
+  echo "  $progname src/expr" >&2
+  echo >&2
+  exit 1
+fi
+
+while [ $# -gt 0 ]; do
+  srcdir="$1"; shift
+
+  # remove trailing slashes, if any
+  srcdir=`expr "$srcdir" : '\(.*[^/]\)/*$'`
+  # remove redundant slashes, if any
+  srcdir=`echo "$srcdir" | sed 's,//*,/,g'`
+
+  if expr "$srcdir" : src/ >/dev/null; then :; else
+    echo "$progname: error: Directories must be under src/" >&2
+    echo "$progname: error: and \`$srcdir' isn't!" >&2
+    echo "$progname: error: Make sure you provide source paths" >&2
+    echo "$progname: error: relative to the top level, e.g. \`src/expr'." >&2
+    exit 1
+  fi
+
+  if [ -d "$srcdir" ]; then :; else
+    echo "creating directory \`$srcdir'..."
+    mkdir -p "$srcdir"
+  fi
+
+  # enough dotdots to get us back to the top-level directory
+  # (e.g. "src/foo" yields "../.." here), used for $(topdir) in Makefile
+  topdir=`echo "$srcdir" | sed 's,[^/][^/]*,..,g'`
+  # one less, used for the include path in Makefile.am
+  topsrcdir=`echo "$topdir" | sed 's,\.\./,,'`
+
+  if [ -e "$srcdir/Makefile" ]; then
+    echo "$progname: warning: not replacing extant \`$srcdir/Makefile'." >&2
+  else
+    echo "generating \`$srcdir/Makefile'..."
+    cat >"$srcdir/Makefile" <<EOF
+topdir = $topdir
+srcdir = $srcdir
+
+include \$(topdir)/Makefile.subdir
+EOF
+  fi
+
+  if [ -e "$srcdir/Makefile.am" ]; then
+    echo "$progname: warning: not replacing extant \`$srcdir/Makefile.am'." >&2
+  else
+    echo "generating \`$srcdir/Makefile.am'..."
+    clibbase=`expr "$srcdir" : '.*/\([^/][^/]*\)$'`
+    if expr "$srcdir" : src/parser >/dev/null; then
+      definitions="	-D__BUILDING_CVC4PARSERLIB \\
+"
+      visibility=' $(FLAG_VISIBILITY_HIDDEN)'
+    elif expr "$srcdir" : src/main >/dev/null; then
+      definitions=
+      visibility=
+    else
+      definitions="	-D__BUILDING_CVC4LIB \\
+"
+      visibility=' $(FLAG_VISIBILITY_HIDDEN)'
+    fi
+    clibname="lib${clibbase}.la"
+    clibtarget="lib${clibbase}_la"
+    cat >"$srcdir/Makefile.am" <<EOF
+AM_CPPFLAGS = \\
+$definitions	-I at srcdir@/$topsrcdir/include -I at srcdir@/$topsrcdir -I at builddir@/$topsrcdir
+AM_CXXFLAGS = -Wall$visibility
+
+noinst_LTLIBRARIES = $clibname
+
+${clibtarget}_SOURCES = \\
+	SOURCEFILE.cpp
+EOF
+  fi
+done
+
diff --git a/contrib/configure-in-place b/contrib/configure-in-place
new file mode 100755
index 0000000..cc0e9e3
--- /dev/null
+++ b/contrib/configure-in-place
@@ -0,0 +1,30 @@
+#!/bin/bash -ex
+#
+# configure-in-place
+# Morgan Deters <mdeters at cs.nyu.edu> for CVC4
+# Copyright (c) 2010-2014  The CVC4 Project
+#
+# usage: configure-in-place [ arguments... ]
+#
+# This script configures CVC4 in the source directory (from where it
+# should be invoked).
+#
+
+if [ -e .git ] && ! [ x"$1" = x-f ]; then
+  echo
+  echo "DO NOT USE THIS IN GIT WORKING DIRECTORIES!"
+  echo
+  echo "You might accidentally commit Makefiles in the source directories"
+  echo "improperly, since they exist in the source directory for"
+  echo "another purpose."
+  echo
+  exit 1
+fi
+
+if [ x"$1" = x-f ]; then
+  shift
+fi
+
+./configure "$@"
+CURRENT_BUILD="$(grep '^CURRENT_BUILD *= *' builds/current | awk 'BEGIN {FS=" *= *"} {print$2}')"
+builds/$CURRENT_BUILD/config.status
diff --git a/contrib/cvc-devel.el b/contrib/cvc-devel.el
new file mode 100644
index 0000000..3e1d750
--- /dev/null
+++ b/contrib/cvc-devel.el
@@ -0,0 +1,218 @@
+;;;; Add to your ~/.emacs the following lines:
+;;;;
+;;;;   (load-path "/full/path/to/this/file")
+;;;;   (require 'cvc-devel)
+;;;;   
+;;;; If you want to modify the key binding for inserting the comment,
+;;;; add also something like this:
+;;;;
+;;;;   (setq cvc-devel-comment-key "\M-/")
+;;;;
+
+(defvar cvc-devel-comment-key "\C-c\C-h"
+  "The hot key binding to insert an appropriate comment in C++ header
+in CVC code")
+
+(require 'cc-mode)
+(add-to-list 'c++-mode-hook
+	     '(lambda ()
+		(local-set-key cvc-devel-comment-key
+			       'insert-comment-template)))
+
+(defun insert-comment-template ()
+  "Insert a comment template into C++ file in the CVC style.  The
+comment is different depending on where it is inserted.  For example,
+inserting it in the empty file will produce a file comment, a class
+comment will be inserted before a class definition, and so on."
+  (interactive)
+  ; Check for macro
+  (cond
+   ((catch 'not-macro
+      (progn
+	(set-mark (point))
+	(cond ((not (search-forward "#define" nil t))
+	       (throw 'not-macro t)))
+	(beginning-of-line)
+	(cond ((not (= (mark) (point)))
+	       (progn
+		 (goto-char (mark))
+		 (throw 'not-macro t))))
+	; It's a macro: insert the comment template
+	(forward-char 7)
+	(re-search-forward "[^ ]")
+	(backward-char)
+	(set-mark (point))
+	(re-search-forward " \\|(\\|^")
+	(backward-char)
+	(copy-region-as-kill (mark) (point))
+	(beginning-of-line)
+	(insert-string
+"/*****************************************************************************/
+/*!
+ *\\def ")
+	(yank)
+	(insert-string "
+ *
+ * Author: ")
+        (insert-string (user-full-name))
+        (insert-string "
+ *
+ * Created: ")
+	(insert-string (current-time-string))
+	(insert-string "
+ *
+ * 
+ */
+/*****************************************************************************/
+")
+	(forward-line -3)
+	(search-forward "* ")
+	()
+      )
+    )
+    (cond
+     ((catch 'not-function
+	(progn
+	  (set-mark (point))
+	  (cond ((not (search-forward "(" nil t))
+		 (throw 'not-function t)))
+	  (beginning-of-line)
+	  (cond ((not (= (mark) (point)))
+		 (progn
+		   (goto-char (mark))
+		   (throw 'not-function t))))
+       	  ; It's a function: insert the comment template
+	  (search-forward "(")
+	  (re-search-backward "[^ ] *(")
+	  (forward-char)
+	  (set-mark (point))
+	  (re-search-backward " \\|^.")
+	  (re-search-forward "[^ ]")
+	  (backward-char)
+	  (copy-region-as-kill (mark) (point))
+	  (beginning-of-line)
+	  (insert-string
+"/*****************************************************************************/
+/*!
+ * Function: ")
+	  (yank)
+	  (insert-string "
+ *
+ * Author: ")
+          (insert-string (user-full-name))
+          (insert-string "
+ *
+ * Created: ")
+	  (insert-string (current-time-string))
+	  (insert-string "
+ *
+ * 
+ */
+/*****************************************************************************/
+")
+	  (forward-line -3)
+	  (search-forward "* ")
+	  ()
+	  )
+	)
+      (cond
+       ((catch 'not-class
+	  (progn
+	    (set-mark (point))
+	    (cond ((not (search-forward "class" nil t))
+		   (throw 'not-class t)))
+	    (beginning-of-line)
+	    (cond ((not (= (mark) (point)))
+		 (progn
+		   (goto-char (mark))
+		   (throw 'not-class t))))
+       	    ; It's a class definition: insert the comment template
+	    (forward-char 5)
+	    (re-search-forward "[^ ]")
+	    (backward-char)
+	    (set-mark (point))
+	    (re-search-forward "^\\| \\|{")
+	    (backward-char)
+	    (copy-region-as-kill (mark) (point))
+	    (beginning-of-line)
+	    (insert-string
+"/*****************************************************************************/
+/*!
+ *\\class ")
+	  (yank)
+	  (insert-string "
+ *\\brief ")
+          (yank)
+          (insert-string "
+ *
+ * Author: ")
+          (insert-string (user-full-name))
+          (insert-string "
+ *
+ * Created: ")
+	  (insert-string (current-time-string))
+	  (insert-string "
+ *
+ * 
+ */
+/*****************************************************************************/
+")
+	    (forward-line -4)
+	    (search-forward "* ")
+	    ()
+	    )
+	  )
+	(cond
+	 ((catch 'not-bof
+	    (progn
+	      (set-mark (point))
+	      (beginning-of-buffer)
+	      (cond ((not (= (mark) (point)))
+		     (progn
+		       (goto-char (mark))
+		       (throw 'not-bof t))))
+              ; At beginning of file: insert beginning of file comment
+	      (insert-string
+"/*****************************************************************************/
+/*!
+ *\\file ")
+              (insert-string (file-name-nondirectory (buffer-file-name)))
+	      (insert-string "
+ *\\brief 
+ *
+ * Author: ")
+          (insert-string (user-full-name))
+          (insert-string "
+ *
+ * Created: ")
+	      (insert-string (current-time-string))
+	      (insert-string "
+ */
+/*****************************************************************************/
+")
+	      (forward-line -7)
+	      (search-forward "brief ")
+	      ()
+	    )
+	  )
+          ; Insert default comment template
+	  (insert-string
+"/*****************************************************************************/
+/*
+ * 
+ */
+/*****************************************************************************/
+")
+	  (forward-line -3)
+	  (search-forward "* ")
+         )
+	)
+       )
+      )
+     )
+    )
+   )
+  )
+)
+
+(provide 'cvc-devel)
diff --git a/contrib/cvc-mode.el b/contrib/cvc-mode.el
new file mode 100644
index 0000000..f159944
--- /dev/null
+++ b/contrib/cvc-mode.el
@@ -0,0 +1,715 @@
+;;;; /*!
+;;;;  * \file cvc-mode.el
+;;;;  * \brief Emacs mode for CVC programs in presentation language
+;;;;  * 
+;;;;  * Author: Sergey Berezin
+;;;;  * 
+;;;;  * Created: Mon Aug 11 12:29:32 2003
+;;;;  *
+;;;;  * <hr>
+;;;;  *
+;;;;  * License to use, copy, modify, sell and/or distribute this software
+;;;;  * and its documentation for any purpose is hereby granted without
+;;;;  * royalty, subject to the terms and conditions defined in the \ref
+;;;;  * LICENSE file provided with this distribution.
+;;;;  *
+;;;;  * <hr>
+;;;;  * 
+;;;;  */
+
+;;;; To use this library, place the following lines into your ~/.emacs file:
+;;;;
+;;;; ;;; CVC mode
+;;;; (autoload 'cvc-mode "cvc-mode" "CVC specifications editing mode." t)
+;;;; (setq auto-mode-alist 
+;;;;       (append  (list '("\\.cvc$" . cvc-mode)) auto-mode-alist))
+;;;;
+;;;; Of course, the file cvc-mode.el must be in one of the directories in your
+;;;; `load-path'. C-h v load-path to see the list, or `cons' your own path:
+;;;; (setq load-path (cons "/the/full/path/to-your/dir" load-path))
+;;;;
+;;;; To turn the font-lock on by default, put in .emacs
+;;;; (global-font-lock-mode t) ;; if you use gnu-emacs, or
+;;;; (setq-default font-lock-auto-fontify t) ;; if you use xemacs.
+;;;;
+;;;; In GNU emacs faces `font-lock-preprocessor-face' and 
+;;;; `font-lock-variable-name-face' may not be predefined.
+;;;; In this case they are defined automatically when smv-mode.el
+;;;; is loaded the first time. You can also define them yourself in .emacs:
+;;;;
+;;;; ;;; Make faces that are not in gnu-emacs font-lock by default
+;;;; (defvar font-lock-preprocessor-face 'font-lock-preprocessor-face)
+;;;; (defvar font-lock-variable-name-face 'font-lock-variable-name-face)
+;;;; (make-face 'font-lock-preprocessor-face)
+;;;; (make-face 'font-lock-variable-name-face)
+
+(require 'font-lock)
+(require 'compile)
+
+(defvar cvc-font-lock-mode-on t
+  "If not nil, turn the fontification on.")
+
+;;;; Syntax definitions
+
+(defvar cvc-mode-syntax-table nil  "Syntax table used while in CVC mode.")
+
+(if cvc-mode-syntax-table ()
+    (let ((st (syntax-table)))
+      (unwind-protect
+	   (progn
+	     (setq cvc-mode-syntax-table (make-syntax-table))
+	     (set-syntax-table cvc-mode-syntax-table)
+	     (modify-syntax-entry ?_ "w")
+	     (modify-syntax-entry ?- "w")
+	     (modify-syntax-entry ?\? "w")
+	     (modify-syntax-entry ?: "." )
+	     (modify-syntax-entry ?% "<")
+	     (modify-syntax-entry ?\f ">")
+	     (modify-syntax-entry ?\n ">"))
+	(set-syntax-table st))))
+
+;;;; Fontification stuff
+
+(defun cvc-keyword-match (keyword)
+;  "Convert a string into a regexp matching any capitalization of that string."
+  "Convert a string into a regexp matching that string as a separate word."
+;  (let ((regexp "")
+;	(index 0)
+;	(len (length keyword)))
+;    (while (< index len)
+;      (let ((c (aref keyword index)))
+;	(setq regexp
+;	      (concat regexp (format "[%c%c]" (downcase c) (upcase c))))
+;	(setq index (+ index 1))))
+    (format "\\b%s\\b" keyword))
+;)
+
+(defvar cvc-font-lock-separator-face 'cvc-font-lock-separator-face)
+(defvar font-lock-preprocessor-face 'font-lock-preprocessor-face)
+(defvar font-lock-variable-name-face 'font-lock-variable-name-face)
+
+(if (facep 'font-lock-preprocessor-face) ()
+    (progn
+      (make-face 'font-lock-preprocessor-face)
+      (set-face-foreground 'font-lock-preprocessor-face "green4")))
+
+(if (facep 'font-lock-variable-name-face) ()
+    (progn
+      (make-face 'font-lock-variable-name-face)
+      (set-face-foreground 'font-lock-variable-name-face "deeppink")))
+
+(if (facep 'cvc-font-lock-separator-face) ()
+    (progn
+      (make-face 'cvc-font-lock-separator-face)
+      (set-face-foreground 'cvc-font-lock-separator-face "indianred")))
+
+(defvar cvc-mode-hook nil
+  "Functions to run when loading an CVC file.")
+
+(defconst cvc-keywords
+  '("ASSERT" "QUERY" "TRACE" "UNTRACE" "OPTION" "HELP" "TRANSFORM"
+    "PRINT" "ECHO" "INCLUDE" "DUMP_ASSUMPTIONS" "DUMP_PROOF" "DUMP_SIG"
+    "WHERE" "COUNTEREXAMPLE" "PUSH" "POP" "POP_SCOPE" "POPTO" "RESET"
+    "CONTEXT"
+    "TYPE" "DATATYPE" "SUBTYPE"
+    "REAL" "INT" "BOOLEAN" "ARRAY" "OF"
+    "TRUE" "FALSE" "FLOOR"
+    "IF" "THEN" "ELSIF" "ELSE" "ENDIF" "LET" "IN" "END" "LAMBDA" "WITH"
+    "FORALL" "EXISTS" 
+    "AND" "OR" "XOR" "NOT" )
+  "The list of CVC keywords.")
+
+(defconst cvc-declaration-keywords
+  '("ASSERT" "QUERY" "TRACE" "UNTRACE" "OPTION" "HELP" "TRANSFORM"
+    "PRINT" "ECHO" "INCLUDE" "DUMP_ASSUMPTIONS" "DUMP_PROOF" "DUMP_SIG"
+    "WHERE" "COUNTEREXAMPLE" "PUSH" "POP" "POP_SCOPE" "POPTO" "RESET"
+    "CONTEXT")
+  "The list of keywords that open a declaration. Used for indentation.")
+
+(defconst cvc-declaration-keywords-regexp
+  (mapconcat 'cvc-keyword-match cvc-declaration-keywords "\\|"))
+
+(defconst cvc-openning-keywords
+  '("case" "for" "next" "init")
+  "The list of keywords that open a subexpression. Used for indentation.")
+
+(defconst cvc-openning-keywords-regexp
+  (mapconcat 'cvc-keyword-match cvc-openning-keywords "\\|"))
+
+(defconst cvc-closing-keywords
+  '("esac")
+  "The list of keywords that close a subexpression. Used for indentation.")
+
+(defconst cvc-closing-keywords-regexp
+  (mapconcat 'cvc-keyword-match cvc-closing-keywords "\\|"))
+
+(defconst cvc-infix-operators
+  '("<->" "<-" "->" ":=" "<=w\\>" ">=w\\>" "<w\\>" ">w\\>" "=w\\>"
+    "+w\\>" "-w\\>" "*w\\>" "<=" ">=" "!=" "=" "\\[" "\\]"
+    "\\b-\\b" "+" "|" "&" "<" ">")
+  "The list of regexps that match CVC infix operators. The distinction
+is made primarily for indentation purposes.")
+
+(defconst cvc-infix-operators-regexp
+  (mapconcat 'identity cvc-infix-operators "\\|"))
+
+(defconst cvc-other-operators
+  '("!" "(#" "#)")
+  "Non-infix CVC operators that are not listed in `cvc-infix-operators'.")
+
+(defconst cvc-other-operators-regexp
+  (mapconcat 'identity cvc-other-operators "\\|"))
+
+(defconst cvc-operators (append cvc-infix-operators cvc-other-operators)
+  "The list of regexps that match CVC operators. It is set to the
+concatenation of `cvc-infix-operators' and `cvc-other-operators'.")
+
+(defconst cvc-separator-regexp "[,.;():]"
+  "A regexp that matches any separator in CVC mode.")
+
+(defconst cvc-font-lock-keywords-1
+  (purecopy
+   (list
+    (list (concat (cvc-keyword-match "MODULE") " *\\([-_?A-Za-z0-9]+\\)")
+	  1 'font-lock-preprocessor-face)
+    (list (concat "\\(" (cvc-keyword-match "init") "\\|"
+		  (cvc-keyword-match "next")
+		  "\\)(\\s-*\\([][_?.A-Za-z0-9-]+\\)\\s-*)\\s-*:=")
+	  2 'font-lock-variable-name-face)
+    ;;; For DEFINE and invar assignments
+    (list "\\([][_?.A-Za-z0-9-]+\\)\\s-*:="
+	  1 'font-lock-variable-name-face)
+    (list "\\<\\([Aa]\\|[Ee]\\)\\[" 1 'font-lock-keyword-face)
+    (list (concat "\\("
+		  (mapconcat 'identity cvc-operators "\\|")
+		  "\\)")
+	  1 'font-lock-function-name-face 'prepend)
+    (mapconcat 'cvc-keyword-match cvc-keywords "\\|")
+;; Fix the `%' comments
+    (list "\\(%.*$\\)" 1 'font-lock-comment-face t) ))
+  "Additional expressions to highlight in CVC mode.")
+
+(defconst cvc-font-lock-keywords-2
+  (purecopy 
+   (append cvc-font-lock-keywords-1
+	   (list
+	    (list "\\([{}]\\)" 1 'font-lock-type-face)
+	    (list (concat "\\(" cvc-separator-regexp "\\)")
+		  1 'cvc-font-lock-separator-face 'prepend))))
+  "Additional expressions to highlight in CVC mode.")
+  
+(defconst cvc-font-lock-keywords
+  (if font-lock-maximum-decoration
+      cvc-font-lock-keywords-2
+      cvc-font-lock-keywords-1))
+
+(defun cvc-minimal-decoration ()
+  (interactive)
+  (setq font-lock-keywords cvc-font-lock-keywords-1))
+
+(defun cvc-maximal-decoration ()
+  (interactive)
+  (setq font-lock-keywords cvc-font-lock-keywords-2))
+
+;;;; Running CVC 
+
+(defvar cvc-command "cvc3" 
+  "The command name to run CVC. The default is usually \"cvc3\"")
+
+(defvar cvc-sat-option nil
+  "Search Engine choice in CVC.  Valid values are nil,
+\"default\", \"simple\", and \"fast\", or any other values reported by
+cvc3 -h.")
+
+(defvar cvc-trace-flags nil
+  "List of trace flags given on the command line as +trace options")
+
+(defvar cvc-verbose-level nil
+"The verbose mode of CVC. Valid values are nil and \"quiet\".  This
+value is passed to the CVC process as +/-quiet opton.")
+
+(defvar cvc-command-line-args nil
+  "Miscellaneous CVC command line args.
+Must be a single string or nil.")
+
+(defvar cvc-compile-buffer nil
+  "The buffer associated with inferior CVC process.
+This variable is updated automatically each time CVC process takes off.")
+
+(defvar cvc-options-changed nil)
+
+(defvar cvc-current-buffer nil
+  "The current CVC editing buffer.
+This variable is buffer-local.")
+(make-local-variable 'cvc-current-buffer)
+
+(defun cvc-args (file &optional args)
+  "Compiles the string of CVC command line args from various variables."
+  (mapconcat 'identity
+	     (append
+	      (if cvc-sat-option (list "-sat" cvc-sat-option) nil)
+	      (if (eq cvc-verbose-level "quiet") (list "+quiet") nil)
+	      (mapcar '(lambda (str) (format "+trace \"%s\"" str)) cvc-trace-flags)
+	      (if cvc-command-line-args (list cvc-command-line-args))
+	      (if args (list args) nil)
+	      (list "<" file))
+	     " "))
+
+(defun cvc-run ()
+  "Runs CVC on the current buffer."
+  (interactive)
+  (let ((buffer (current-buffer)))
+    (if (buffer-file-name)
+	(progn
+	  (if (buffer-modified-p) (cvc-save-buffer))
+	  (setq cvc-compile-buffer 
+		(compile-internal
+		 (concat "time " cvc-command " " (cvc-args (buffer-file-name)))
+				  "No more errors"
+				  "CVC"))
+	  (set-buffer cvc-compile-buffer) ;;; Doesn't work???
+	  (end-of-buffer)
+	  (set-buffer buffer)
+	  )
+    (error "Buffer does not seem to be associated with any file"))) )
+
+
+(defun cvc-save-options ()
+  "Saves current options in *.opt file."
+  (interactive)
+  (let* ((buffer (current-buffer))
+	 (opt-file-name 
+	  (let ((match (string-match "\\.cvc$"
+				     (buffer-file-name))))
+	    (if match
+		(concat (substring (buffer-file-name)
+				   0 match)
+			".opt")
+	      (concat (buffer-file-name) ".opt"))))
+	 (opt-buffer-name 
+	  (let ((match (string-match "\\.cvc$"
+				     (buffer-name))))
+	    (if match
+		(concat (substring (buffer-name)
+				   0 match)
+			".opt")
+	      (concat (buffer-name) ".opt"))))
+	 (opt-buffer-exists (get-buffer opt-buffer-name))
+	 (opt-buffer (get-buffer-create opt-buffer-name))
+	 (save-options-from-buffer 
+	  (and opt-buffer-exists 
+	       (buffer-modified-p opt-buffer)
+	       (y-or-n-p (format "buffer %s is modified. Save options from that buffer?" 
+				 (buffer-name opt-buffer)))))
+	 (options (format ";;;; This file is generated automatically.\n(setq cvc-sat-option %S)\n(setq cvc-verbose-level %S)\n(setq cvc-trace-flags '%S)\n(setq cvc-command-line-args %S)\n"
+			  cvc-sat-option
+			  cvc-verbose-level
+			  cvc-trace-flags
+			  cvc-command-line-args)))
+    (set-buffer opt-buffer)
+    (if save-options-from-buffer (cvc-save-and-load-options)
+      (progn
+	(erase-buffer)
+	(insert options)
+	(write-file opt-file-name)
+	(kill-buffer opt-buffer)))
+    (set-buffer buffer)
+    (setq cvc-options-changed nil)
+    (message "Options are saved.")))
+
+(defun cvc-save-and-load-options ()
+  "Saves the current buffer and updates CVC options in the associated
+buffer.  This buffer is either the value of `cvc-current-buffer', or
+it tries to make a few reasonable guesses. If no CVC buffer is found,
+only saves the current buffer.
+
+Normally is called from the *.opt file while editing options for CVC
+specification." 
+  (interactive)
+  (let* ((buffer (current-buffer))
+	 (buffer-file (buffer-file-name))
+	 (cvc-buffer-name
+	  (let* ((match (string-match "\\.[^.]*$" (buffer-name))))
+	    (if match
+		(concat (substring (buffer-name) 0 match) ".cvc")
+	      (concat (buffer-name) ".cvc"))))
+	 (cvc-buffer (get-buffer cvc-buffer-name))
+	 (cvc-buffer
+	  (cond (cvc-buffer cvc-buffer)
+		((and (boundp 'cvc-current-buffer)
+		      (buffer-live-p cvc-current-buffer))
+		 cvc-current-buffer)
+		(t nil))))
+    (save-buffer)
+    (if cvc-buffer
+	(let ((cvc-window (get-buffer-window cvc-buffer))
+	      (window (get-buffer-window buffer)))
+	  (set-buffer cvc-buffer)
+	  (load buffer-file)
+	  (setq cvc-current-buffer cvc-buffer)
+	  (if cvc-window 
+	      (select-window cvc-window)
+	    (switch-to-buffer cvc-buffer))
+	  (if window
+	      (delete-window window))
+	  (setq cvc-options-changed nil)))) )
+
+(defun cvc-save-and-return ()
+  "Saves the current buffer and returns back to the associated CVC
+buffer.  The CVC buffer is either the value of `cvc-current-buffer', or
+it tries to make a few reasonable guesses. If no CVC buffer is found,
+only saves the current buffer.
+
+Normally is called from the *.ord buffer while editing variable ordering
+for CVC specification. Bound to \\[cvc-save-and-return]"
+  (interactive)
+  (let* ((buffer (current-buffer))
+	 (cvc-buffer-name
+	  (let* ((match (string-match "\\.[^.]*$" (buffer-name))))
+	    (if match
+		(concat (substring (buffer-name) 0 match) ".cvc")
+	      (concat (buffer-name) ".cvc"))))
+	 (cvc-buffer (get-buffer cvc-buffer-name))
+	 (cvc-buffer
+	  (cond (cvc-buffer cvc-buffer)
+		((and (boundp 'cvc-current-buffer)
+		      (buffer-live-p cvc-current-buffer))
+		 cvc-current-buffer)
+		(t nil))))
+    (save-buffer)
+    (if cvc-buffer
+	(let ((cvc-window (get-buffer-window cvc-buffer)))
+	  (setq cvc-current-buffer cvc-buffer)
+	  (if cvc-window 
+	      (select-window cvc-window)
+	    (switch-to-buffer cvc-buffer))
+	  (if (get-buffer-window buffer) 
+	      (delete-window (get-buffer-window buffer)))))) )
+
+(defun cvc-edit-options ()
+  "Loads current options in a new buffer and lets the user edit it.
+Run \\[eval-buffer] when done."
+  (interactive)
+  (let* ((buffer (current-buffer))
+	 (opt-buffer-name 
+	  (let ((match (string-match "\\.cvc$"
+				     (buffer-name))))
+	    (if match
+		(concat (substring (buffer-name)
+				   0 match)
+			".opt")
+	      (concat (buffer-name) ".opt"))))
+	 (opt-buffer (get-buffer-create opt-buffer-name))
+	 	 (options (format ";;;; This file is generated automatically.\n(setq cvc-sat-option %S)\n(setq cvc-verbose-level %S)\n(setq cvc-trace-flags '%S)\n(setq cvc-command-line-args %S)\n"
+			  cvc-sat-option
+			  cvc-verbose-level
+			  cvc-trace-flags
+			  cvc-command-line-args)))
+    (setq cvc-options-changed t)
+    (switch-to-buffer-other-window opt-buffer)
+    (set-visited-file-name opt-buffer-name)
+    (erase-buffer)
+    (insert options)
+    (make-local-variable 'cvc-currect-buffer)
+    (setq cvc-current-buffer buffer)
+    (cvc-options-edit-mode)))
+
+(defun cvc-interrupt ()
+  "Kills current CVC process."
+  (interactive)
+  (quit-process (get-buffer-process cvc-compile-buffer) t))
+
+(defun cvc-send-signal (sig)
+  "Sends signal SIG to the CVC process. SIG must be an integer."
+  (if (get-buffer-process cvc-compile-buffer)
+      (if (file-exists-p ".cvc-pid")
+	(save-excursion
+	  (let ((buf (get-buffer-create ".cvc-pid")))
+	    (set-buffer buf)
+	    (erase-buffer)
+	    (insert-file-contents ".cvc-pid")
+	    (let ((pid (read buf)))
+	      (if (integerp pid)
+		  (signal-process pid sig)
+		(error "The file .cvc-pid is screwed up: %s" pid)))
+	    (kill-buffer buf)))
+	(error "Your CVC version does not support signal handling"))
+    (error "CVC is not running")))
+
+(defun cvc-send-usr1 () 
+  "Sends SIGUSR1 to the current CVC process. I have a version of CVC
+that uses it to toggle dynamic variable ordering."
+  (interactive)
+  (cvc-send-signal 10))
+
+(defun cvc-send-usr2 () 
+  "Sends SIGUSR2 to the current CVC process. I have a version of CVC
+that uses it to force garbage collection."
+  (interactive)
+  (cvc-send-signal 12))
+
+(defun cvc-set-verbose-level (arg)
+  "Sets CVC verbose level to use in command line option +/-quiet.
+If empty line is given, use the default."
+  (interactive (list (read-from-minibuffer "Set verbose level to: "
+			       cvc-verbose-level)))
+  (if (stringp arg)
+      (progn
+	(if (string= arg "") (setq cvc-verbose-level nil)
+	  (setq cvc-verbose-level arg))
+	(setq cvc-options-changed t))
+    (error "Not a string. The value is not set.")))
+
+(defun cvc-set-command (arg)
+  "Sets the name of the CVC executable to run."
+  (interactive (list (read-file-name "CVC binary: "
+				     "" cvc-command nil cvc-command)))
+  (if (stringp arg)
+      (progn
+	(if (string= arg "") nil
+	  (setq cvc-command arg))
+	(setq cvc-options-changed t))
+    (error "Not a string. The value is not set.")))
+
+(defun cvc-trace (arg)
+  "Adds a CVC tracing flag to be given in the +trace command line option."
+  (interactive (list (read-from-minibuffer "Add trace flag: "
+			       cvc-verbose-level)))
+  (if (stringp arg)
+      (progn
+	(if (string= arg "") (error "Empty flag is not allowed")
+	  (setq cvc-trace-flags (add-to-list 'cvc-trace-flags arg)))
+	(setq cvc-options-changed t)
+	(message "%S" cvc-trace-flags))
+    (error "Not a string. The value is not set.")))
+
+(defun cvc-untrace (arg)
+  "Removes a CVC tracing flag given in the +trace command line option."
+  (interactive (list (completing-read "Remove trace flag: "
+				      (mapcar '(lambda (x) (cons x t)) cvc-trace-flags)
+				      nil t)))
+  (if (stringp arg)
+      (progn
+	(if (string= arg "") nil ; don't do anything on empty input
+	  (setq cvc-trace-flags (delete arg cvc-trace-flags)))
+	(setq cvc-options-changed t)
+	(message "%S" cvc-trace-flags))
+    (error "Not a string. The value is not set.")))
+
+(defun cvc-set-command-line-args (arg)
+  "Sets CVC command line options. Don't set -sat and +quiet
+options here, use corresponding special variables for that."
+  (interactive (list (read-from-minibuffer "Other arguments: "
+			       cvc-command-line-args)))
+  (if (stringp arg)
+      (progn 
+	(if (string= arg "") (setq cvc-command-line-args nil)
+	  (setq cvc-command-line-args arg))
+	(setq cvc-options-changed t))
+    (error "Not a string. The value is not set.")))
+
+;;;; Saving file
+(defun cvc-save-buffer ()
+  "Saves CVC file together with options. Prompts the user whether to
+override the *.opt file if the options have changed."
+  (interactive)
+  (let ((opt-file-name 
+	 (let ((match (string-match "\\.cvc$"
+				    (buffer-file-name))))
+	   (if match
+	       (concat (substring (buffer-file-name)
+				  0 match)
+		       ".opt")
+	     (concat (buffer-file-name) ".opt")))))
+    (cond ((and (file-exists-p opt-file-name)
+		cvc-options-changed)
+	     (if (y-or-n-p "Options have changed. Save them?")
+		 (progn
+		   (cvc-save-options)
+		   (setq cvc-options-changed nil))))
+	  (cvc-options-changed 
+	     (cvc-save-options)
+	     (setq cvc-options-changed nil))))
+    (save-buffer))
+
+;;;; Indentation
+
+(defun cvc-previous-line ()
+  "Moves the point to the fisrt non-comment non-blank string before
+the current one and positions the cursor on the first non-blank character."
+  (interactive)
+  (forward-line -1)
+  (beginning-of-line)
+  (skip-chars-forward " \t")
+  (while (and (not (bobp)) (looking-at "$\\|%"))
+    (forward-line -1)
+    (beginning-of-line)
+    (skip-chars-forward " \t")))
+
+(defun cvc-previous-indentation () 
+  "Returns a pair (INDENT . TYPE). INDENT is the indentation of the
+previous string, if there is one, and TYPE is 'openning, 'declaration
+or 'plain, depending on whether previous string starts with an
+openning, declarative keyword or neither. \"Previous string\" means
+the last string before the current that is not an empty string or a
+comment."
+  (if (bobp) '(0 . 'plain)
+    (save-excursion
+      (cvc-previous-line)
+      (let ((type (cond ((looking-at cvc-openning-keywords-regexp) 'openning)
+			((looking-at cvc-declaration-keywords-regexp)
+			 'declaration)
+			(t 'plain)))
+	    (indent (current-indentation)))
+	(cons indent type)))))
+
+(defun cvc-compute-indentation ()
+  "Computes the indentation for the current string based on the
+previous string. Current algorithm is too simple and needs
+improvement."
+  (save-excursion
+   (beginning-of-line)
+   (skip-chars-forward " \t")
+   (cond ((looking-at cvc-declaration-keywords-regexp) 0)
+	 (t (let* ((indent-data (cvc-previous-indentation))
+		   (indent (car indent-data))
+		   (type (cdr indent-data)))
+	      (setq indent
+		    (cond ((looking-at cvc-closing-keywords-regexp) 
+			   (if (< indent 2) 0 (- indent 2)))
+			  ((or (eq type 'openning) (eq type 'declaration))
+			   (+ indent 2))
+			  (t indent)))
+	      indent)))))
+
+(defun cvc-indent-line ()
+  "Indent the current line relative to the previous meaningful line."
+  (interactive)
+  (let* ((initial (point))
+	 (final (let ((case-fold-search nil))(cvc-compute-indentation)))
+	 (offset0 (save-excursion
+		    (beginning-of-line)
+		    (skip-chars-forward " \t")
+		    (- initial (point))))
+	 (offset (if (< offset0 0) 0 offset0)))
+    (indent-line-to final)
+    (goto-char (+ (point) offset))))
+
+;;;; Now define the keymap
+
+(defconst cvc-mode-map nil  "CVC keymap")
+
+(if cvc-mode-map ()
+  (progn
+    (setq cvc-mode-map (make-sparse-keymap))
+    (define-key cvc-mode-map [delete] 'backward-delete-char-untabify)
+    (define-key cvc-mode-map [backspace] 'backward-delete-char-untabify)
+    (define-key cvc-mode-map "\C-x\C-s"  'cvc-save-buffer)
+    (define-key cvc-mode-map "\C-c\C-e"  'cvc-edit-options)
+    (define-key cvc-mode-map "\C-c\C-f"  'cvc-run)
+    (define-key cvc-mode-map "\C-c\C-t"  'cvc-trace)
+    (define-key cvc-mode-map "\C-c\C-u"  'cvc-untrace)
+    (define-key cvc-mode-map "\C-c\C-r"  'cvc-set-command)
+    (define-key cvc-mode-map "\C-c\C-c"  'cvc-interrupt)
+    ;; (define-key cvc-mode-map "\C-c\C-r"  'cvc-send-usr1)
+    ;; (define-key cvc-mode-map "\C-c\C-s"  'cvc-send-usr2)
+    (define-key cvc-mode-map "\C-c;"  'comment-region)
+    (define-key cvc-mode-map "\t"  'cvc-indent-line)))
+
+(defun cvc-make-local-vars ()
+  "Create buffer-local variables for CVC modes"
+  (make-local-variable 'cvc-command)
+  (make-local-variable 'cvc-sat-option)
+  (make-local-variable 'cvc-verbose-level)
+  (make-local-variable 'cvc-trace-flags)
+  (make-local-variable 'cvc-command-line-args)
+  (make-local-variable 'cvc-options-changed)
+  (make-local-variable 'cvc-options-changed))
+
+(defun cvc-mode ()
+  "Major mode for CVC specification files. 
+
+\\{cvc-mode-map}
+
+\\[cvc-run] runs CVC on buffer, \\[cvc-interrupt] interrupts already
+running CVC process.
+
+\\[cvc-send-usr1] and \\[cvc-send-usr2] are used to send UNIX signals
+to CVC process to toggle dynamic variable ordering and force garbage
+collection respectively. Available only for a new (experimental) CVC
+version.
+
+Running CVC (\\[cvc-run]) creates a separate buffer where inferior CVC
+process will leave its output. Currently, each run of CVC clears the
+compilation buffer. If you need to save multiple runs, save them one
+at a time.
+
+Please report bugs to barrett at cs.nyu.edu."
+  (interactive)
+  (use-local-map cvc-mode-map)
+;;; Disable asking for the compile command
+  (make-local-variable 'compilation-read-command)
+  (setq compilation-read-command nil)
+;;; Make all the variables with CVC options local to the current buffer
+  (cvc-make-local-vars)
+  (setq cvc-options-changed nil)
+;;; Change the regexp search to be case sensitive
+;;  (setq case-fold-search nil)
+;;; Set syntax table
+  (set-syntax-table cvc-mode-syntax-table)
+  (make-local-variable 'comment-start)
+;; fix up comment handling
+  (setq comment-start "%")
+  (make-local-variable 'comment-end)
+  (setq comment-end "")
+  (make-local-variable 'comment-start-skip)
+  (setq comment-start-skip "%+\\s-*")
+  (setq require-final-newline t)
+;;; Define the major mode
+  (setq major-mode 'cvc-mode)
+  (setq mode-name "CVC")
+;;; Load command line options for CVC process
+  (let ((opt-file-name 
+	 (let ((match (string-match "\\.cvc$"
+				    (buffer-file-name))))
+	   (if match
+	       (concat (substring (buffer-file-name)
+				  0 match)
+		       ".opt")
+	     (concat (buffer-file-name) ".opt")))))
+    (if (file-exists-p opt-file-name)
+	(load opt-file-name)))
+;;; Do fontification, if necessary
+  (setq font-lock-keywords 
+	(if font-lock-maximum-decoration
+	    cvc-font-lock-keywords-2
+	  cvc-font-lock-keywords-1))
+  (if running-xemacs
+      (put 'cvc-mode 'font-lock-defaults
+	   '(cvc-font-lock-keywords nil nil nil nil))
+    (setq font-lock-defaults '(cvc-font-lock-keywords nil nil nil nil)))
+    (if (and cvc-font-lock-mode-on (or running-xemacs font-lock-global-modes)
+	     window-system)
+	(font-lock-mode 1))
+  (setq mode-line-process nil) ; put 'cvc-status when hooked up to inferior CVC
+  (run-hooks 'cvc-mode-hook))
+
+(defun cvc-options-edit-mode ()
+  "Major mode for editing CVC options. Actually, this is Emacs Lisp
+mode with a few changes. In particular, \\[cvc-save-and-load-options] will save the file, 
+find the associated CVC file and updates its options accordingly.  See
+`\\[describe-bindings]' for key bindings.  "
+  (interactive)
+  (emacs-lisp-mode)
+;;; Make all the variables with CVC options local to the current buffer
+;;; to avoid accidental override of the global values
+  (cvc-make-local-vars)
+  (setq major-mode 'cvc-options-edit-mode)
+  (setq mode-name "CVC Options")
+  (if (and cvc-font-lock-mode-on (or running-xemacs font-lock-global-modes)
+	   window-system)
+      (font-lock-mode t))
+  (use-local-map (copy-keymap (current-local-map)))
+  (local-set-key "\C-c\C-c" 'cvc-save-and-load-options))
+
+(provide 'cvc-mode)
diff --git a/contrib/depgraph b/contrib/depgraph
new file mode 100755
index 0000000..2c4eba5
--- /dev/null
+++ b/contrib/depgraph
@@ -0,0 +1,133 @@
+#!/bin/sh
+#
+# depgraph
+# Morgan Deters, 27 October 2010
+#
+# Builds a graphviz graph of dependences between source and header files in CVC4.
+#
+
+progname=`basename "$0"`
+
+postproc='sort -u'
+mode=packages
+target=
+
+if [ $# -gt 0 ]; then
+  if [ "$1" = "-a" ]; then
+    postproc=cat
+    mode=headers
+    shift
+  fi
+  if [ $# -gt 0 -a "$1" != "-h" ]; then
+    target="$1"
+    shift
+  fi
+  if [ $# -gt 0 ]; then
+    echo "usage: $progname [-a] [target]"
+    echo "  -a ("all") produces _all_ headers in the source, with clusters for packages."
+    echo "    the default behavior produces just package dependence information."
+    echo "  with target, focus on dependences of that particular package (e.g. \"expr\")"
+    exit 1
+  fi
+fi
+
+cd "`dirname \"$0\"`/.."
+
+if ! [ -d src -a -d test/unit ]; then
+  echo "$progname: source directory malformed; is this CVC4 ?!" >&2
+  exit 1
+fi
+
+echo "digraph G {"
+
+paths=`find src -name '*.c' \
+             -o -name '*.cc' \
+             -o -name '*.cpp' \
+             -o -name '*.C' \
+             -o -name '*.h' \
+             -o -name '*.hh' \
+             -o -name '*.hpp' \
+             -o -name '*.H' \
+             -o -name '*.y' \
+             -o -name '*.yy' \
+             -o -name '*.ypp' \
+             -o -name '*.Y' \
+             -o -name '*.l' \
+             -o -name '*.ll' \
+             -o -name '*.lpp' \
+             -o -name '*.L' \
+             -o -name '*.g'`
+if [ "$mode" = headers ]; then
+  oldpackage=
+  for path in $paths; do
+    dir=`echo "$path" | sed 's,^\([^/]*\).*,\1,'`
+    file=`echo "$path" | sed 's,^[^/]*/,,'`
+    package=`echo "$file" | sed 's,^\(.*\)/.*,\1,'`
+    file=`echo "$file" | sed 's,^.*/,,'`
+    if [ -n "$target" -a "$target" != "$package" ]; then continue; fi
+    if [ -n "$oldpackage" -a "$package" != "$oldpackage" ]; then
+      echo '  }'
+    fi
+    if [ "$package" != "$oldpackage" ]; then
+      echo "  subgraph \"cluster$package\" {"
+      echo "    label=\"$package\";"
+      oldpackage="$package"
+    fi
+    echo "    \"$package/$file\"[label=\"$file\"];"
+  done
+  if [ -n "$oldpackage" ]; then
+    echo '  }'
+  fi
+fi
+for path in $paths; do
+    dir=`echo "$path" | sed 's,^\([^/]*\).*,\1,'`
+    file=`echo "$path" | sed 's,^[^/]*/,,'`
+    package=`echo "$file" | sed 's,^\(.*\)/.*,\1,'`
+    file=`echo "$file" | sed 's,^.*/,,'`
+    incs=`grep '^# *include *".*"' "$path" | sed 's,^# *include *"\(.*\)".*,\1,'`
+    if [ -n "$target" -a "$target" != "$package" ]; then continue; fi
+    for inc in $incs; do
+      case "$inc" in
+        base/tls.h) inc=base/tls.h.in ;;
+        expr/expr.h) inc=expr/expr_template.h ;;
+        expr/expr_manager.h) inc=expr/expr_manager_template.h ;;
+        expr/kind.h) inc=expr/kind_template.h ;;
+        expr/metakind.h) inc=expr/metakind_template.h ;;
+        theory/theoryof_table.h) inc=theory/theoryof_table_template.h ;;
+        util/integer.h) inc=util/integer.h.in ;;
+        util/rational.h) inc=util/rational.h.in ;;
+        cvc4autoconfig.h) inc=cvc4autoconfig.h.in ;;
+      esac
+      incpath=
+      dirpackageparent="$dir/`dirname "$package"`"
+      for incdir in "$dir" "$dir/include" "$dir/$package" . "$dirpackageparent"; do
+        if [ -e "$incdir/$inc" ]; then incpath="$incdir/$inc"; break; fi
+      done
+      if [ -z "$incpath" ]; then
+        echo "$progname: error: can't find include file '$inc' from source '$path'" >&2
+        exit 1
+      fi
+      incpath=`echo "$incpath" | sed 's,^\./,,'`
+      incpath=`echo "$incpath" | sed "s,^$dir/,,"`
+      incdir=`echo "$incpath" | sed 's,^\([^/]*\).*,\1,'`
+      incpackage=`echo "$incpath" | sed 's,^\(.*\)/.*,\1,'`
+      incfile=`echo "$incpath" | sed 's,^.*/,,'`
+      if [ "$mode" = packages ]; then
+        if [ "$package" != "$incpackage" ]; then
+          if [ -n "$target" ]; then
+            echo "  \"$package\" -> \"$incpackage\"[label=\"$incfile\"];"
+          else
+            echo "  \"$package\" -> \"$incpackage\";"
+          fi
+        fi
+      else
+        if [ -n "$target" ]; then
+          [ "$package" != "$incpackage" ] && echo "  \"$package/$file\" -> \"$incpackage\"[label=\"$incfile\"];"
+        else
+          echo "  \"$package/$file\" -> \"$incpath\";"
+        fi
+      fi
+    done
+  done | $postproc
+
+echo "}"
diff --git a/contrib/dimacs_to_smt.pl b/contrib/dimacs_to_smt.pl
new file mode 100755
index 0000000..7017681
--- /dev/null
+++ b/contrib/dimacs_to_smt.pl
@@ -0,0 +1,37 @@
+#!/usr/bin/perl -w
+# DIMACS to SMT
+# Morgan Deters
+# Copyright (c) 2009, 2010, 2011  The CVC4 Project
+
+use strict;
+
+my ($nvars, $nclauses);
+while(<>) {
+    next if /^c/;
+
+    if(/^p cnf (\d+) (\d+)/) {
+        ($nvars, $nclauses) = ($1, $2);
+        print "(benchmark b\n";
+        print ":status unknown\n";
+        print ":logic QF_UF\n";
+        for(my $i = 1; $i <= $nvars; ++$i) {
+            print ":extrapreds ((x$i))\n";
+        }
+        print ":formula (and\n";
+        next;
+    }
+
+    print "(or";
+    chomp;
+    @_ = split(/ /);
+    for(my $i = 0; $i < $#_; ++$i) {
+        if($_[$i] < 0) {
+            print " (not x" . -$_[$i] . ")";
+        } else {
+            print " x" . $_[$i];
+        }
+    }
+    print ")\n";
+}
+
+print "))\n";
diff --git a/contrib/editing-with-emacs b/contrib/editing-with-emacs
new file mode 100644
index 0000000..529e4fa
--- /dev/null
+++ b/contrib/editing-with-emacs
@@ -0,0 +1,18 @@
+To match the CVC4 coding style, drop the following in your ~/.emacs,
+replacing "/home/mdeters/cvc4.*" in the last line with a regexp
+describing your usual cvc4 editing location(s):
+
+
+; CVC4 mode
+(defun cvc4-c++-editing-mode ()
+  "C++ mode with adjusted defaults for use with editing CVC4 code."
+  (interactive)
+  (message "CVC4 variant of C++ mode activated.")
+  (c++-mode)
+  (setq c-basic-offset 2)
+  (c-set-offset 'innamespace 0)
+  (setq indent-tabs-mode nil))
+(setq auto-mode-alist (cons '("/home/mdeters/cvc4.*/.*\\.\\(cc\\|cpp\\|h\\|hh\\|hpp\\|y\\|yy\\|ypp\\|lex\\|l\\|ll\\|lpp\\)\\(\\.in\\)?$" . cvc4-c++-editing-mode) auto-mode-alist))
+
+
+-- Morgan Deters <mdeters at cs.nyu.edu>  Mon, 27 Sep 2010 17:35:38 -0400
diff --git a/contrib/get-antlr-3.4 b/contrib/get-antlr-3.4
new file mode 100755
index 0000000..6a36681
--- /dev/null
+++ b/contrib/get-antlr-3.4
@@ -0,0 +1,122 @@
+#!/bin/bash
+#
+set -e
+
+cd "$(dirname "$0")/.."
+
+if ! [ -e src/parser/cvc/Cvc.g ]; then
+  echo "$(basename $0): I expect to be in the contrib/ of a CVC4 source tree," >&2
+  echo "but apparently:" >&2
+  echo >&2
+  echo "  $(pwd)" >&2
+  echo >&2
+  echo "is not a CVC4 source tree ?!" >&2
+  exit 1
+fi
+
+function webget {
+  if which curl &>/dev/null; then
+    curl "$1" >"$2"
+  elif which wget &>/dev/null; then
+    wget -c -O "$2" "$1"
+  else
+    echo "Can't figure out how to download from web.  Please install wget or curl." >&2
+    exit 1
+  fi
+}
+
+if [ -z "${MACHINE_TYPE}" ]; then
+  if ! [ -e config/config.guess ]; then
+    # Attempt to download once
+    webget 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' config/config.guess
+   if [ -e config/config.guess ]; then
+     chmod +x config/config.guess
+        else
+     echo "$(basename $0): I need the file config/config.guess to tell MACHINE_TYPE" >&2
+     echo "Try running ./autogen.sh, or set the MACHINE_TYPE environment variable" >&2
+     echo "(e.g., \"export MACHINE_TYPE=x86_64\")." >&2
+     exit 1
+    fi
+  fi
+  # get first nibble from config.guess (x86_64, i686, ...)
+  MACHINE_TYPE=`config/config.guess | sed 's,-.*,,'`
+fi
+
+set -x
+mkdir -p antlr-3.4/share/java
+mkdir -p antlr-3.4/bin
+mkdir -p antlr-3.4/src
+cd antlr-3.4
+webget http://www.antlr3.org/download/antlr-3.4-complete.jar share/java/antlr-3.4-complete.jar 
+webget http://www.antlr3.org/download/C/libantlr3c-3.4.tar.gz src/libantlr3c-3.4.tar.gz
+tee bin/antlr3 <<EOF
+#!/bin/bash
+export CLASSPATH=`pwd`/share/java/antlr-3.4-complete.jar:\$CLASSPATH
+exec java org.antlr.Tool "\$@"
+EOF
+chmod a+x bin/antlr3
+cd src
+gunzip -f libantlr3c-3.4.tar.gz
+tar xfv libantlr3c-3.4.tar
+cd libantlr3c-3.4
+
+if [ ${MACHINE_TYPE} == 'x86_64' ]; then
+  # 64-bit stuff here
+  ./configure --enable-64bit --disable-shared --disable-antlrdebug --prefix=`pwd`/../.. $ANTLR_CONFIGURE_ARGS
+else
+  # 32-bit stuff here
+  ./configure --disable-shared --disable-antlrdebug --prefix=`pwd`/../.. $ANTLR_CONFIGURE_ARGS
+fi
+
+cp Makefile Makefile.orig
+sed 's,^\(CFLAGS = .*\),\1 -fexceptions,' Makefile.orig > Makefile
+make
+make install
+cd ../..
+mv lib/libantlr3c.a lib/libantlr3c-static.a
+
+cd src/libantlr3c-3.4
+make clean
+
+if [ ${MACHINE_TYPE} == 'x86_64' ]; then
+  # 64-bit stuff here
+  ./configure --enable-64bit --with-pic --disable-shared --disable-antlrdebug --prefix=`pwd`/../.. $ANTLR_CONFIGURE_ARGS
+else
+  # 32-bit stuff here
+  ./configure --with-pic --disable-shared --disable-antlrdebug --prefix=`pwd`/../.. $ANTLR_CONFIGURE_ARGS
+fi
+
+cp Makefile Makefile.orig
+sed 's,^\(CFLAGS = .*\),\1 -fexceptions,' Makefile.orig > Makefile
+make
+make install
+cd ../..
+mv lib/libantlr3c.la lib/libantlr3c.la.orig
+awk '/^old_library=/ {print "old_library='\''libantlr3c-static.a'\''"} /^library_names=/ {print "library_names='\''libantlr3c.a'\''"} !/^old_library=/ && !/^library_names=/ {print}' < lib/libantlr3c.la.orig > lib/libantlr3c.la
+set +x
+cd ..
+
+# echo
+# echo Invalidating generated parsers..
+# touch src/parser/*/*.g
+
+if [ ${MACHINE_TYPE} == 'x86_64' ]; then
+  # 64-bit stuff here
+  echo ============== WARNING ====================
+  echo The script guessed that this machine is 64 bit.
+  echo If antlr should be built as 32 bit \(i.e. -m32\),
+  echo please rerun the script as
+  echo     MACHINE_TYPE=\"x86\" ./get-antlr3.4
+
+else
+  # 32-bit stuff here
+  echo ============== WARNING ==================== 
+  echo The script guessed that this machine is 32 bit.
+  echo If antlr should be built as 64 bit \(i.e. -m64\),
+  echo please rerun the script as
+  echo     MACHINE_TYPE=\"x86_64\" ./get-antlr3.4
+fi
+
+echo
+echo ===================== Now configure CVC4 with =====================
+echo ./configure --with-antlr-dir=`pwd`/antlr-3.4 ANTLR=`pwd`/antlr-3.4/bin/antlr3
diff --git a/contrib/luby.c b/contrib/luby.c
new file mode 100644
index 0000000..71b07b6
--- /dev/null
+++ b/contrib/luby.c
@@ -0,0 +1,69 @@
+// luby.c - Luby sequence generator
+// Morgan Deters <mdeters at cs.nyu.edu> for the CVC4 project, 5 May 2011
+//
+// This program enumerates the Luby-based MiniSat 2 restart sequence.
+// MiniSat restarts after a number of conflicts determined by:
+//
+//    restart_base * luby(restart_inc, curr_restarts)
+//
+// By default, MiniSat has restart_base = 25, restart_inc = 3.0, and
+// curr_restarts is the number of restarts that have been done (so it
+// starts at 0).
+//
+// For the Luby paper, see:
+//   http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.47.5558
+//
+// Compile luby.c with gcc -o luby luby.c -lm
+//
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <math.h>
+
+// luby() function copied from MiniSat 2
+// Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+// Copyright (c) 2007-2010, Niklas Sorensson
+double luby(double y, int x){
+
+    // Find the finite subsequence that contains index 'x', and the
+    // size of that subsequence:
+    int size, seq;
+    for (size = 1, seq = 0; size < x+1; seq++, size = 2*size+1);
+
+    while (size-1 != x){
+        size = (size-1)>>1;
+        seq--;
+        x = x % size;
+    }
+
+    return pow(y, seq);
+}
+
+int main(int argc, char *argv[]) {
+  int N;
+  int base;
+  double inc;
+  int i;
+
+  if(argc != 4) {
+    fprintf(stderr, "usage: %s base inc N\n"
+            "In MiniSat 2, base==25 and inc==3 by default.\n"
+            "base is simply a multiplier after the sequence is computed.\n"
+            "N is the number to produce (-1 means run until CTRL-C)\n",
+            argv[0]);
+    exit(1);
+  }
+
+  base = atoi(argv[1]);
+  inc = strtod(argv[2], NULL);
+  N = atoi(argv[3]);
+
+  assert(base >= 1);
+  assert(inc >= 1.0);
+
+  for(i = 0; N < 0 || i < N; ++i) {
+    printf("%d %f\n", i, luby(inc, i) * base);
+  }
+}
diff --git a/contrib/mac-build b/contrib/mac-build
new file mode 100755
index 0000000..e45cd0f
--- /dev/null
+++ b/contrib/mac-build
@@ -0,0 +1,56 @@
+#!/bin/bash
+#
+# mac-build script
+# Morgan Deters <mdeters at cs.nyu.edu>
+# Tue, 25 Sep 2012 15:44:27 -0400
+#
+
+macports_prereq="autoconf automake boost gmp gtime libtool readline"
+
+export PATH="/opt/local/bin:$PATH"
+
+if [ $# -ne 0 ]; then
+  echo "usage: `basename $0`" >&2
+  echo >&2
+  echo "This script attempts to set up the build requirements for CVC4 for Mac OS X." >&2
+  echo "MacPorts must be installed (but this script installs prerequisite port" >&2
+  echo "packages for CVC4).  If this script is successful, it prints a configure" >&2
+  echo "line that you can use to configure CVC4." >&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
+}
+
+echo =============================================================================
+echo
+echo "running: sudo port install $macports_prereq"
+if which port &>/dev/null; then
+  echo "You may be asked for your password to install these packages."
+  echo
+  sudo port install $macports_prereq || reporterror
+else
+  echo
+  echo "ERROR: You must have MacPorts installed for Mac builds of CVC4."
+  echo "ERROR: See http://www.macports.org/"
+  reporterror
+fi
+echo
+echo =============================================================================
+echo
+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 'Now just run:'
+echo '  ./configure LDFLAGS=-L/opt/local/lib CPPFLAGS=-I/opt/local/include --with-antlr-dir=`pwd`/antlr-3.4 ANTLR=`pwd`/antlr-3.4/bin/antlr3'
+echo '  make'
+echo
+echo =============================================================================
diff --git a/contrib/new-theory b/contrib/new-theory
new file mode 100755
index 0000000..0d9e456
--- /dev/null
+++ b/contrib/new-theory
@@ -0,0 +1,199 @@
+#!/bin/bash
+#
+# usage: new-theory [--alternate existing-theory] new-theory-dir-name
+#
+
+cd "`dirname "$0"`/.."
+
+if ! perl -v &>/dev/null; then
+  echo "ERROR: perl is required to run this script." >&2
+  exit 1
+fi
+
+if [ ! -e src/theory/theory_engine.h ]; then
+  echo "ERROR: This script doesn't appear to be the contrib/ subdirectory" >&2
+  echo "ERROR: of the CVC4 source tree." >&2
+  exit 1
+fi
+
+if [ $# -ge 1 -a "$1" = --alternate ]; then
+  shift
+  alternate=true
+  alttheory="$1"
+  shift
+else
+  alternate=false
+fi
+
+if [ $# -ne 1 ]; then
+  echo "usage: new-theory [--alternate existing-theory] new-theory-dir-name" >&2
+  echo "e.g.:  new-theory arrays" >&2
+  echo "e.g.:  new-theory sets" >&2
+  echo "e.g.:  new-theory rewrite_rules" >&2
+  echo "e.g.:  new-theory --alternate arith difference-logic" >&2
+  echo >&2
+  echo "This tool will create a new src/theory/<new-theory-dir-name>" >&2
+  echo "directory and fill in some infrastructural files in that directory." >&2
+  echo "It also will incorporate that directory into the build process." >&2
+  echo "Please refer to the file README.WHATS-NEXT file created in that" >&2
+  echo "directory for tips on what to do next." >&2
+  echo >&2
+  echo "Theories with multiple words (e.g. \"rewrite_rules\") should have" >&2
+  echo "directories and namespaces separated by an underscore (_).  The" >&2
+  echo "resulting class names created by this script will be in CamelCase" >&2
+  echo "(e.g. RewriteRules) if that convention is followed." >&2
+  echo >&2
+  echo "With --alternate, create a new theory directory that is declared as" >&2
+  echo "an alternate implementation of an existing host theory.  Such" >&2
+  echo "\"alternates\" share preprocessing, typechecking, rewriting (i.e.," >&2
+  echo "normal form), and expression kinds with their host theories, but" >&2
+  echo "differ in decision procedure implementation.  They are selectable" >&2
+  echo "at runtime with --use-theory." >&2
+  exit 1
+fi
+
+dir="$1"
+
+if [ -e "src/theory/$dir" ]; then
+  echo "ERROR: Theory \"$dir\" already exists." >&2
+  echo "ERROR: Please choose a new directory name (or move that one aside)." >&2
+  echo "ERROR: Or, if you'd like to create an alternate implementation of" >&2
+  echo "ERROR: $dir, use this program this way:" >&2
+  echo "ERROR:     new-theory --alternate $dir new-implementation-name" >&2
+  exit 1
+fi
+
+if ! expr "$dir" : '[a-zA-Z][a-zA-Z0-9_]*$' &>/dev/null ||
+   expr "$dir" : '_$' &>/dev/null; then
+  echo "ERROR: \"$dir\" is not a valid theory name." >&2
+  echo "ERROR:" >&2
+  echo "ERROR: Theory names must start with a letter and be composed of" >&2
+  echo "ERROR: letters, numbers, and the underscore (_) character; an" >&2
+  echo "ERROR: underscore cannot be the final character." >&2
+  exit 1
+fi
+
+if $alternate; then
+  if ! [ -d "src/theory/$alttheory" -a -f "src/theory/$alttheory/kinds" ]; then
+    echo "ERROR: Theory \"$alttheory\" doesn't exist, or cannot read its kinds file." >&2
+    exit 1
+  fi
+  alt_id="$(
+    function theory() { echo $1 | sed 's,^THEORY_,,'; exit; }
+    source "src/theory/$alttheory/kinds"
+  )"
+fi
+
+id="`echo "$dir" | tr a-z A-Z`"
+# convoluted, but should be relatively portable and give a CamelCase
+# representation for a string.  (e.g. "foo_bar" becomes "FooBar")
+camel="`echo "$dir" | awk 'BEGIN { RS="_";ORS="";OFS="" } // {print toupper(substr($1,1,1)),substr($1,2,length($1))} END {print "\n"}'`"
+
+if ! mkdir "src/theory/$dir"; then
+  echo "ERROR: encountered an error creating directory src/theory/$dir" >&2
+  exit 1
+fi
+
+echo "Theory of $dir"
+echo "Theory directory: src/theory/$dir"
+echo "Theory id: THEORY_$id"
+$alternate && echo "Alternate for theory id: THEORY_$alt_id"
+echo "Theory class: CVC4::theory::$dir::Theory$camel"
+echo
+
+function copyskel {
+  src="$1"
+  dest="`echo "$src" | sed "s/DIR/$dir/g"`"
+  echo "Creating src/theory/$dir/$dest..."
+  sed "s/\$dir/$dir/g;s/\$camel/$camel/g;s/\$id/$id/g" \
+    contrib/theoryskel/$src \
+    > "src/theory/$dir/$dest"
+}
+
+function copyaltskel {
+  src="$1"
+  dest="`echo "$src" | sed "s/DIR/$dir/g"`"
+  echo "Creating src/theory/$dir/$dest..."
+  sed "s/\$dir/$dir/g;s/\$camel/$camel/g;s/\$id/$id/g;s/\$alt_id/$alt_id/g" \
+    contrib/alttheoryskel/$src \
+    > "src/theory/$dir/$dest"
+}
+
+function copyoptions {
+  src="$1"
+  dest="`echo "$src" | sed "s/DIR/$dir/g"`"
+  echo "Creating src/options/$dest..."
+  sed "s/\$dir/$dir/g;s/\$camel/$camel/g;s/\$id/$id/g;s/\$alt_id/$alt_id/g" \
+    contrib/optionsskel/$src \
+    > "src/options/$dest"
+}
+
+# copy files from the skeleton, with proper replacements
+if $alternate; then
+  alternate01=1
+  for file in `ls contrib/alttheoryskel`; do
+    copyaltskel "$file"
+  done
+else
+  alternate01=0
+  for file in `ls contrib/theoryskel`; do
+    copyskel "$file"
+  done
+fi
+# Copy the options file independently
+for file in `ls contrib/optionsskel`; do
+  copyoptions "$file"
+done
+
+
+echo
+echo "Adding $dir to THEORIES to src/Makefile.theories..."
+if grep -q '^THEORIES = .*[^a-zA-Z0-9_]'"$dir"'\([^a-zA-Z0-9_]\|$\)' src/Makefile.theories &>/dev/null; then
+  echo "NOTE: src/Makefile.theories already lists theory $dir"
+else
+  awk '/^THEORIES = / {print $0,"'"$dir"'"} !/^THEORIES = / {print$0}' src/Makefile.theories > src/Makefile.theories.new-theory
+  if ! cp -f src/Makefile.theories src/Makefile.theories~; then
+    echo "ERROR: cannot copy src/Makefile.theories !" >&2
+    exit 1
+  fi
+  if ! mv -f src/Makefile.theories.new-theory src/Makefile.theories; then
+    echo "ERROR: cannot replace src/Makefile.theories !" >&2
+    exit 1
+  fi
+fi
+
+echo "Adding sources to src/Makefile.am..."
+
+perl -e '
+  while(<>) { print; last if /^libcvc4_la_SOURCES = /; }
+  if('$alternate01') {
+    while(<>) { if(!/\\$/) { chomp; print "$_ \\\n\ttheory/'"$dir"'/theory_'"$dir"'.h \\\n\ttheory/'"$dir"'/theory_'"$dir"'.cpp\n"; last; } else { print; } }
+  } else {
+    while(<>) { if(!/\\$/) { chomp; print "$_ \\\n\ttheory/'"$dir"'/theory_'"$dir"'.h \\\n\ttheory/'"$dir"'/theory_'"$dir"'.cpp \\\n\ttheory/'"$dir"'/theory_'"$dir"'_rewriter.h \\\n\ttheory/'"$dir"'/theory_'"$dir"'_type_rules.h\n"; last; } else { print; } }
+  }
+  while(<>) { print; last if /^EXTRA_DIST = /; }
+  while(<>) { if(!/\\$/) { chomp; print "$_ \\\n\ttheory/'"$dir"'/kinds\n"; last; } else { print; } }
+  while(<>) { print; }' src/Makefile.am > src/Makefile.am.new-theory
+if ! mv -f src/Makefile.am.new-theory src/Makefile.am; then
+  echo "ERROR: cannot replace src/Makefile.am !" >&2
+  exit 1
+fi
+
+echo "Adding ${dir}_options to src/options/Makefile.am..."
+if grep -q '^	${dir}_options' src/options/Makefile.am &>/dev/null; then
+  echo "NOTE: src/options/Makefile.am already seems to link to $dir option files"
+else
+  awk -v name="$dir" -f contrib/new-theory.awk src/options/Makefile.am > src/options/Makefile.am.new-theory
+  if ! cp -f src/options/Makefile.am src/options/Makefile.am~; then
+    echo "ERROR: cannot copy src/options/Makefile.am !" >&2
+    exit 1
+  fi
+  if ! mv -f src/options/Makefile.am.new-theory src/options/Makefile.am; then
+    echo "ERROR: cannot replace src/options/Makefile.am !" >&2
+    exit 1
+  fi
+fi
+
+echo
+echo "Rerunning autogen.sh..."
+./autogen.sh
diff --git a/contrib/run-script-cascj7-fnt b/contrib/run-script-cascj7-fnt
new file mode 100755
index 0000000..e3ad1a2
--- /dev/null
+++ b/contrib/run-script-cascj7-fnt
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+cvc4=./cvc4
+bench="$1"
+
+file=${bench##*/}
+filename=${file%.*}
+
+echo "------- cvc4-fnt casc j7 : $bench at $2..."
+
+# use: trywith [params..]
+# to attempt a run.  If an SZS ontology result is printed, then
+# the run script terminates immediately.  Otherwise, this
+# function returns normally.
+function trywith {
+  limit=$1; shift;
+  echo "--- Run $@ at $limit...";
+  (ulimit -S -t "$limit";$cvc4 --lang=tptp --no-checking --no-interactive --dump-models --produce-models --force-no-limit-cpu-while-dump "$@" $bench) 2>/dev/null |
+  (read w1 w2 w3 result w4 w5;
+  case "$result" in
+  Satisfiable) echo "$w1 $w2 $w3 $result $w4 $w5";cat;exit 0;;
+  CounterSatisfiable) echo "$w1 $w2 $w3 $result $w4 $w5";cat;exit 0;;
+  esac; exit 1)
+  if [ ${PIPESTATUS[1]} -eq 0 ]; then exit 0; fi
+}
+function finishwith {
+  echo "--- Run $@...";
+  $cvc4 --lang=tptp --no-checking --no-interactive --dump-models --produce-models --force-no-limit-cpu-while-dump "$@" $bench
+}
+
+trywith 30 --finite-model-find --sort-inference --uf-ss-fair
+trywith 30 --finite-model-find --mbqi=gen-ev --uf-ss-totality --decision=internal --sort-inference --uf-ss-fair
+trywith 15 --finite-model-find --disable-uf-ss-min-model --sort-inference --uf-ss-fair
+trywith 60 --finite-model-find --mbqi=abs --pre-skolem-quant --sort-inference --uf-ss-fair
+finishwith --finite-model-find --mbqi=abs --pre-skolem-quant --sort-inference --uf-ss-fair --mbqi-one-inst-per-round
+# echo "% SZS status" "GaveUp for $filename"
diff --git a/contrib/run-script-cascj7-fof b/contrib/run-script-cascj7-fof
new file mode 100755
index 0000000..fb2ca33
--- /dev/null
+++ b/contrib/run-script-cascj7-fof
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+cvc4=./cvc4
+bench="$1"
+
+file=${bench##*/}
+filename=${file%.*}
+
+echo "------- cvc4-fof casc j7 : $bench at $2..."
+
+# use: trywith [params..]
+# to attempt a run.  If an SZS ontology result is printed, then
+# the run script terminates immediately.  Otherwise, this
+# function returns normally.
+function trywith {
+  limit=$1; shift;
+  echo "--- Run $@ at $limit...";
+  (ulimit -S -t "$limit";$cvc4 --lang=tptp --no-checking --no-interactive --dump-instantiations --inst-format=szs --force-no-limit-cpu-while-dump "$@" $bench) 2>/dev/null |
+  (read w1 w2 w3 result w4 w5;
+  case "$result" in
+  Unsatisfiable) echo "$w1 $w2 $w3 $result $w4 $w5";cat;exit 0;;
+  Theorem) echo "$w1 $w2 $w3 $result $w4 $w5";cat;exit 0;;
+  esac; exit 1)
+  if [ ${PIPESTATUS[1]} -eq 0 ]; then exit 0; fi
+}
+function finishwith {
+  echo "--- Run $@...";
+  $cvc4 --lang=tptp --no-checking --no-interactive --dump-instantiations --inst-format=szs --force-no-limit-cpu-while-dump "$@" $bench
+}
+
+trywith 15 --quant-cf --pre-skolem-quant --full-saturate-quant
+trywith 30 --full-saturate-quant
+trywith 30 --finite-model-find --fmf-inst-engine --mbqi=gen-ev
+trywith 30 --relevant-triggers --full-saturate-quant
+trywith 15 --finite-model-find --decision=justification-stoponly
+trywith 30 --pre-skolem-quant --full-saturate-quant
+finishwith --quant-cf --full-saturate-quant
+# echo "% SZS status" "GaveUp for $filename"
diff --git a/contrib/run-script-cascj7-tff b/contrib/run-script-cascj7-tff
new file mode 100755
index 0000000..11350cd
--- /dev/null
+++ b/contrib/run-script-cascj7-tff
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+cvc4=./cvc4
+bench="$1"
+
+file=${bench##*/}
+filename=${file%.*}
+
+echo "------- cvc4-tff casc j7 : $bench at $2..."
+
+# use: trywith [params..]
+# to attempt a run.  If an SZS ontology result is printed, then
+# the run script terminates immediately.  Otherwise, this
+# function returns normally.
+function trywith {
+  limit=$1; shift;
+  echo "--- Run $@ at $limit...";
+  (ulimit -t "$limit";$cvc4 --lang=tptp --no-checking --no-interactive "$@" $bench) 2>/dev/null |
+  (read w1 w2 w3 result w4 w5;
+  case "$result" in
+  Unsatisfiable) echo "$w1 $w2 $w3 $result $w4 $w5";cat;exit 0;;
+  Theorem) echo "$w1 $w2 $w3 $result $w4 $w5";cat;exit 0;;
+  esac; exit 1)
+  if [ ${PIPESTATUS[1]} -eq 0 ]; then exit 0; fi
+}
+function finishwith {
+  echo "--- Run $@...";
+  $cvc4 --lang=tptp --no-checking --no-interactive "$@" $bench
+}
+
+trywith 15 --cbqi-recurse --full-saturate-quant
+trywith 15 --decision=internal --full-saturate-quant
+trywith 30 --quant-cf --qcf-tconstraint --full-saturate-quant
+trywith 20 --finite-model-find
+trywith 30 --fmf-bound-int
+trywith 60 --quant-cf --full-saturate-quant
+finishwith --cbqi-recurse --full-saturate-quant --pre-skolem-quant
+# echo "% SZS status" "GaveUp for $filename"
diff --git a/contrib/run-script-smtcomp2014 b/contrib/run-script-smtcomp2014
new file mode 100755
index 0000000..31ee4cf
--- /dev/null
+++ b/contrib/run-script-smtcomp2014
@@ -0,0 +1,96 @@
+#!/bin/bash
+
+cvc4=./cvc4
+bench="$1"
+
+logic=$(expr "$(grep -m1 '^[^;]*set-logic' "$bench")" : ' *(set-logic  *\([A-Z_]*\) *) *$')
+
+# use: trywith [params..]
+# to attempt a run.  Only thing printed on stdout is "sat" or "unsat", in
+# which case this run script terminates immediately.  Otherwise, this
+# function returns normally.
+function trywith {
+  limit=$1; shift;
+  result="$(ulimit -S -t "$limit";$cvc4 -L smt2 --no-incremental --no-checking --no-interactive "$@" $bench)"
+  case "$result" in
+    sat|unsat) echo "$result"; exit 0;;
+  esac
+}
+
+# use: finishwith [params..]
+# to run cvc4 and let it output whatever it will to stdout.
+function finishwith {
+  $cvc4 -L smt2 --no-incremental --no-checking --no-interactive "$@" $bench
+}
+
+case "$logic" in
+
+QF_LRA)
+  trywith 200 --enable-miplib-trick --miplib-trick-subs=4 --use-approx --lemmas-on-replay-failure --replay-early-close-depth=4 --replay-lemma-reject-cut=128 --replay-reject-cut=512 --unconstrained-simp --use-soi
+  finishwith --no-restrict-pivots --use-soi --new-prop --unconstrained-simp
+  ;;
+QF_LIA)
+  # same as QF_LRA but add --pb-rewrites
+  finishwith --enable-miplib-trick --miplib-trick-subs=4 --use-approx --lemmas-on-replay-failure --replay-early-close-depth=4 --replay-lemma-reject-cut=128 --replay-reject-cut=512 --unconstrained-simp --use-soi --pb-rewrites
+  ;;
+ALIA|AUFLIA|AUFLIRA|AUFNIRA|BV|UF|UFBV|UFIDL|UFLIA|UFLRA|UFNIA)
+  # the following is designed for a run time of 1500s.
+  # initial runs
+  trywith 20 --simplification=none --decision=internal --full-saturate-quant
+  trywith 20 --quant-cf --pre-skolem-quant --full-saturate-quant
+  trywith 20 --finite-model-find --mbqi=none
+  # more runs...
+  trywith 30 --relevant-triggers --full-saturate-quant
+  trywith 30 --quant-cf --qcf-tconstraint --inst-when=last-call --full-saturate-quant
+  trywith 30 --finite-model-find --mbqi=gen-ev --uf-ss-totality
+  trywith 30 --disable-prenex-quant --full-saturate-quant
+  trywith 20 --simplification=none --decision=internal --pre-skolem-quant --full-saturate-quant
+  trywith 20 --quant-cf --quant-cf-mode=conflict --full-saturate-quant
+  trywith 20 --fmf-bound-int --macros-quant
+  # medium runs (2 min per)
+  trywith 120 --decision=justification-stoponly --full-saturate-quant
+  trywith 120 --quant-cf --qcf-tconstraint --full-saturate-quant
+  trywith 120 --finite-model-find --fmf-inst-engine --sort-inference --uf-ss-fair --mbqi=gen-ev
+  # last call runs (5 min per)
+  trywith 300 --full-saturate-quant
+  trywith 300 --finite-model-find --sort-inference --uf-ss-fair 
+  finishwith --quant-cf --full-saturate-quant
+  ;;
+LIA|LRA|NIA|NRA)
+  trywith 20 --enable-cbqi --full-saturate-quant
+  trywith 20 --full-saturate-quant
+  trywith 20 --cbqi-recurse --full-saturate-quant
+  trywith 30 --quant-cf --full-saturate-quant
+  trywith 60 --quant-cf --qcf-tconstraint --full-saturate-quant
+  trywith 120 --cbqi-recurse --disable-prenex-quant --full-saturate-quant
+  finishwith --cbqi-recurse --pre-skolem-quant --full-saturate-quant
+  ;;
+QF_AUFBV)
+  trywith 600
+  finishwith --decision=justification-stoponly
+  ;;
+QF_ABV)
+  finishwith --ite-simp --simp-with-care --repeat-simp
+  ;;
+QF_BV)
+  exec ./pcvc4 -L smt2 --no-incremental --no-checking --no-interactive \
+         --threads 2 \
+         --thread0 '--unconstrained-simp --bv-div-zero-const --bv-intro-pow2 --bitblast=eager --no-bv-abstraction' \
+         --thread1 '--unconstrained-simp --bv-div-zero-const --bv-intro-pow2 --bv-eq-slicer=auto ' \
+         --no-wait-to-join \
+         "$bench"
+  #trywith 10 --bv-eq-slicer=auto --decision=justification
+  #trywith 60 --decision=justification
+  #trywith 600 --decision=internal --bitblast-eager
+  #finishwith --decision=justification --decision-use-weight --decision-weight-internal=usr1
+  ;;
+QF_AUFLIA|QF_AX)
+  finishwith --no-arrays-eager-index --arrays-eager-lemmas
+  ;;
+*)
+  # just run the default
+  finishwith
+  ;;
+
+esac
+
diff --git a/contrib/switch-config b/contrib/switch-config
new file mode 100755
index 0000000..98ed103
--- /dev/null
+++ b/contrib/switch-config
@@ -0,0 +1,96 @@
+#!/bin/bash
+#
+# usage: switch-config [configuration]
+#        switch-config -l
+#
+# Script to switch the "current" configuration of the CVC4 builds directory
+# to another one.  Without an argument, it switches to the next alphabetically.
+# With an argument, it switches to that configuration.  With -l, it lists the
+# available configurations.
+#
+# Only configurations in the "current" architecture (that for which the build directory is currently
+# configured) are considered.
+#
+# This script is useful because it's faster that re-configuring.
+#
+# Script assumes it lives under contrib/ in the root of the CVC4 source
+# tree.
+
+function usage {
+  echo "usage: `basename \"$0\"` [configuration]"
+  echo "       `basename \"$0\"` -l"
+}
+
+if [ $# -gt 1 ]; then
+  usage
+  exit 1
+fi
+
+cd `dirname "$0"`/..
+
+if ! [ -d builds ]; then
+  echo "No configurations are available (no builds/ directory)."
+  exit
+fi
+
+if ! [ -e builds/current ]; then
+  echo "Cannot get current configuration."
+  exit 1
+fi
+
+current=(`grep '^CURRENT_BUILD' builds/current | sed 's,^CURRENT_BUILD *= *\([^/]*\)/\(.*\),\1 \2,'`)
+arch=${current[0]}
+build=${current[1]}
+
+builds=(`ls "builds/$arch/"`)
+
+if ! [ -d "builds/$arch" ] || ! [ -d "builds/$arch/$build" ] || [ ${#builds[@]} -eq 0 ]; then
+  echo "builds/ directory in malformed state."
+  echo "You might want to blow it away and start from scratch."
+  exit 1
+fi
+
+function switchto {
+  config/mkbuilddir "$arch" "$1" >/dev/null
+  #perl -pi -e 's,^CURRENT_BUILD *= *.*,CURRENT_BUILD = '$arch/$1',' builds/current
+  echo "Current build switched to \`$1'."
+}
+
+if [ $# -eq 0 ]; then
+  first=
+  last=
+  setbuild=
+  for d in `ls "builds/$arch/"`; do
+    if [ -z "$first" ]; then first=$d; fi
+    if [ "$last" = "$build" ]; then setbuild=$d; break; fi
+    last=$d
+  done
+  if [ -z "$setbuild" ]; then setbuild=$first; fi
+  if [ "$setbuild" = "$build" ]; then
+    echo "There is only one build profile (\`$build'), and it is current."
+  else
+    switchto "$setbuild"
+  fi
+else
+  case $1 in
+    -l) for config in `ls -1 "builds/$arch/"`; do
+          if [ "$config" = "$build" ]; then
+            echo "$config" '*'
+          else
+            echo "$config"
+          fi
+        done ;;
+    -*) usage; exit 1 ;;
+    *)  if ! [ -d "builds/$arch/$1" ]; then
+          echo "Build \`$1' does not exist."
+          exit 1
+        else
+          if [ "$1" = "$build" ]; then
+            echo "Build \`$1' is already the current build profile."
+          else
+            switchto "$1"
+          fi
+        fi ;;
+  esac
+fi
+
diff --git a/contrib/theoryskel/README.WHATS-NEXT b/contrib/theoryskel/README.WHATS-NEXT
new file mode 100644
index 0000000..17affad
--- /dev/null
+++ b/contrib/theoryskel/README.WHATS-NEXT
@@ -0,0 +1,45 @@
+Congratulations, you now have a new theory of $dir !
+
+Your next steps will likely be:
+
+* to specify theory constants, types, and operators in your \`kinds' file
+* to add typing rules to theory_$dir_type_rules.h for your operators
+  and constants
+* to write code in theory_$dir_rewriter.h to implement a normal form
+  for your theory's terms; in particular, you should ensure that you
+  rewrite (= X X) to "true" for terms X of your theory's sorts, and
+  evaluate any constant terms
+* for any new types that you have introduced, add "mk*Type()" functions to
+  the NodeManager and ExprManager in src/expr/node_manager.{h,cpp} and
+  src/expr/expr_manager_template.{h,cpp}.  You may also want "is*()" testers
+  in src/expr/type_node.h and a corresponding Type derived class in
+  src/expr/type.h.
+* to write parser rules in src/parser/cvc/Cvc.g to support the CVC input
+  language, src/parser/smt/Smt.g to support the (deprecated) SMT-LIBv1
+  language, and src/parser/smt2/Smt2.g to support SMT-LIBv2
+* to write printer code in src/printer/*/*_printer* to support printing
+  your theory terms and types in various output languages
+
+and finally:
+
+* to implement a decision procedure for your theory by implementing
+  Theory$camel::check() in theory_$dir.cpp. Before writing the actual
+  code, you will need :
+
+  * to determine which data structures are context dependent and use for
+    them context-dependent data structures (context/cd*.h)
+  * to choose which work will be done at QUICK_CHECK, STANDARD or at
+    FULL_EFFORT.
+
+You'll probably find the Developer's wiki useful:
+
+  http://cvc4.cs.nyu.edu/wiki/
+
+...and in particular the Developer's Guide:
+
+  http://cvc4.cs.nyu.edu/wiki/Developer%27s_Guide
+
+which contains coding guidelines for the CVC4 project.
+
+Good luck, and please contact cvc4-devel at cs.nyu.edu for assistance
+should you need it!
diff --git a/contrib/theoryskel/kinds b/contrib/theoryskel/kinds
new file mode 100644
index 0000000..23e90c1
--- /dev/null
+++ b/contrib/theoryskel/kinds
@@ -0,0 +1,21 @@
+# kinds                                                               -*- sh -*-
+#
+# For documentation on this file format, please refer to
+# src/theory/builtin/kinds.
+#
+
+theory THEORY_$id ::CVC4::theory::$dir::Theory$camel "theory/$dir/theory_$dir.h"
+typechecker "theory/$dir/theory_$dir_type_rules.h"
+rewriter ::CVC4::theory::$dir::Theory$camelRewriter "theory/$dir/theory_$dir_rewriter.h"
+
+properties check
+
+# Theory content goes here.
+
+# constants...
+
+# types...
+
+# operators...
+
+endtheory
diff --git a/contrib/theoryskel/theory_DIR.cpp b/contrib/theoryskel/theory_DIR.cpp
new file mode 100644
index 0000000..06307f4
--- /dev/null
+++ b/contrib/theoryskel/theory_DIR.cpp
@@ -0,0 +1,46 @@
+#include "theory/$dir/theory_$dir.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace $dir {
+
+/** Constructs a new instance of Theory$camel w.r.t. the provided contexts. */
+Theory$camel::Theory$camel(context::Context* c,
+                           context::UserContext* u,
+                           OutputChannel& out,
+                           Valuation valuation,
+                           const LogicInfo& logicInfo) :
+    Theory(THEORY_$id, c, u, out, valuation, logicInfo) {
+}/* Theory$camel::Theory$camel() */
+
+void Theory$camel::check(Effort level) {
+  if (done() && !fullEffort(level)) {
+    return;
+  }
+
+  TimerStat::CodeTimer checkTimer(d_checkTime);
+
+  while(!done()) {
+    // Get all the assertions
+    Assertion assertion = get();
+    TNode fact = assertion.assertion;
+
+    Debug("$dir") << "Theory$camel::check(): processing " << fact << std::endl;
+
+    // Do the work
+    switch(fact.getKind()) {
+
+    /* cases for all the theory's kinds go here... */
+
+    default:
+      Unhandled(fact.getKind());
+    }
+  }
+
+}/* Theory$camel::check() */
+
+}/* CVC4::theory::$dir namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/contrib/theoryskel/theory_DIR.h b/contrib/theoryskel/theory_DIR.h
new file mode 100644
index 0000000..d8e652b
--- /dev/null
+++ b/contrib/theoryskel/theory_DIR.h
@@ -0,0 +1,34 @@
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__$id__THEORY_$id_H
+#define __CVC4__THEORY__$id__THEORY_$id_H
+
+#include "theory/theory.h"
+
+namespace CVC4 {
+namespace theory {
+namespace $dir {
+
+class Theory$camel : public Theory {
+public:
+
+  /** Constructs a new instance of Theory$camel w.r.t. the provided contexts. */
+  Theory$camel(context::Context* c,
+               context::UserContext* u,
+               OutputChannel& out,
+               Valuation valuation,
+               const LogicInfo& logicInfo);
+
+  void check(Effort);
+
+  std::string identify() const {
+    return "THEORY_$id";
+  }
+
+};/* class Theory$camel */
+
+}/* CVC4::theory::$dir namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__$id__THEORY_$id_H */
diff --git a/contrib/theoryskel/theory_DIR_rewriter.h b/contrib/theoryskel/theory_DIR_rewriter.h
new file mode 100644
index 0000000..16859bc
--- /dev/null
+++ b/contrib/theoryskel/theory_DIR_rewriter.h
@@ -0,0 +1,86 @@
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__$id__THEORY_$id_REWRITER_H
+#define __CVC4__THEORY__$id__THEORY_$id_REWRITER_H
+
+#include "theory/rewriter.h"
+
+namespace CVC4 {
+namespace theory {
+namespace $dir {
+
+class Theory$camelRewriter {
+public:
+
+  /**
+   * Rewrite a node into the normal form for the theory of $dir.
+   * Called in post-order (really reverse-topological order) when
+   * traversing the expression DAG during rewriting.  This is the
+   * main function of the rewriter, and because of the ordering,
+   * it can assume its children are all rewritten already.
+   *
+   * This function can return one of three rewrite response codes
+   * along with the rewritten node:
+   *
+   *   REWRITE_DONE indicates that no more rewriting is needed.
+   *   REWRITE_AGAIN means that the top-level expression should be
+   *     rewritten again, but that its children are in final form.
+   *   REWRITE_AGAIN_FULL means that the entire returned expression
+   *     should be rewritten again (top-down with preRewrite(), then
+   *     bottom-up with postRewrite()).
+   *
+   * Even if this function returns REWRITE_DONE, if the returned
+   * expression belongs to a different theory, it will be fully
+   * rewritten by that theory's rewriter.
+   */
+  static RewriteResponse postRewrite(TNode node) {
+
+    // Implement me!
+
+    // This default implementation
+    return RewriteResponse(REWRITE_DONE, node);
+  }
+
+  /**
+   * Rewrite a node into the normal form for the theory of $dir
+   * in pre-order (really topological order)---meaning that the
+   * children may not be in the normal form.  This is an optimization
+   * for theories with cancelling terms (e.g., 0 * (big-nasty-expression)
+   * in arithmetic rewrites to 0 without the need to look at the big
+   * nasty expression).  Since it's only an optimization, the
+   * implementation here can do nothing.
+   */
+  static RewriteResponse preRewrite(TNode node) {
+    // do nothing
+    return RewriteResponse(REWRITE_DONE, node);
+  }
+
+  /**
+   * Rewrite an equality, in case special handling is required.
+   */
+  static Node rewriteEquality(TNode equality) {
+    // often this will suffice
+    return postRewrite(equality).node;
+  }
+
+  /**
+   * Initialize the rewriter.
+   */
+  static inline void init() {
+    // nothing to do
+  }
+
+  /**
+   * Shut down the rewriter.
+   */
+  static inline void shutdown() {
+    // nothing to do
+  }
+
+};/* class Theory$camelRewriter */
+
+}/* CVC4::theory::$dir namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__$id__THEORY_$id_REWRITER_H */
diff --git a/contrib/theoryskel/theory_DIR_type_rules.h b/contrib/theoryskel/theory_DIR_type_rules.h
new file mode 100644
index 0000000..29be556
--- /dev/null
+++ b/contrib/theoryskel/theory_DIR_type_rules.h
@@ -0,0 +1,35 @@
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__$id__THEORY_$id_TYPE_RULES_H
+#define __CVC4__THEORY__$id__THEORY_$id_TYPE_RULES_H
+
+namespace CVC4 {
+namespace theory {
+namespace $dir {
+
+class $camelTypeRule {
+public:
+
+  /**
+   * Compute the type for (and optionally typecheck) a term belonging
+   * to the theory of $dir.
+   *
+   * @param check if true, the node's type should be checked as well
+   * as computed.
+   */
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check)
+    throw (TypeCheckingExceptionPrivate) {
+
+    // TODO: implement me!
+    Unimplemented();
+
+  }
+
+};/* class $camelTypeRule */
+
+}/* CVC4::theory::$dir namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__$id__THEORY_$id_TYPE_RULES_H */
diff --git a/contrib/win-build b/contrib/win-build
new file mode 100755
index 0000000..9a1a257
--- /dev/null
+++ b/contrib/win-build
@@ -0,0 +1,105 @@
+#!/bin/bash
+#
+# win32-build script
+# Morgan Deters <mdeters at cs.nyu.edu>
+# Tue, 15 Jan 2013 11:11:24 -0500
+#
+
+if [ $# -ne 0 ]; then
+  echo "usage: `basename $0`" >&2
+  echo >&2
+  echo "This script attempts to build CVC4 for Win32/64 using mingw-w64." >&2
+  exit 1
+fi
+
+if [ -z "$HOST" ]; then
+  HOST=i686-w64-mingw32
+  echo "WARNING:"
+  echo "WARNING: Using default HOST value: $HOST"
+  echo "WARNING: You should probably run this script like this:"
+  echo "WARNING:"
+  echo "WARNING:   HOST=i686-w64-mingw32 win-build"
+  echo "WARNING:"
+  echo "WARNING: (replacing the i686-w64-mingw32 with your build host)"
+  echo "WARNING: to ensure the script builds correctly."
+  echo "WARNING:"
+fi
+
+GMPVERSION=5.1.0
+BOOSTVERSION=1.55.0
+BOOSTBASE=boost_1_55_0
+
+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 curl &>/dev/null; then
+    curl -L "$1" >"$2"
+  elif which wget &>/dev/null; then
+    wget -c -O "$2" "$1"
+  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-$BOOSTVERSION; 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..."
+echo
+( mkdir boost-$BOOSTVERSION &&
+  cd boost-$BOOSTVERSION &&
+  webget http://downloads.sourceforge.net/project/boost/boost/$BOOSTVERSION/$BOOSTBASE.tar.gz $BOOSTBASE.tar.gz &&
+  tar xfz $BOOSTBASE.tar.gz &&
+  cd $BOOSTBASE &&
+  ./bootstrap.sh --with-toolset=gcc --prefix=`pwd`/.. --with-libraries=thread &&
+  echo "using gcc : mingw32 : $HOST-gcc ;" >> project-config.jam &&
+  cp tools/build/v2/tools/gcc.jam tools/build/v2/tools/gcc.jam.orig &&
+  sed 's,option = -pthread ; libs = rt ;,,' tools/build/v2/tools/gcc.jam.orig > tools/build/v2/tools/gcc.jam &&
+  ./b2 gcc-mingw32 threadapi=win32 link=static install ) || exit 1
+echo
+echo =============================================================================
+echo
+echo 'Now just run:'
+echo "  ./configure --enable-static-binary --disable-shared --host=$HOST LDFLAGS=\"-L`pwd`/gmp-$GMPVERSION/lib -L`pwd`/antlr-3.4/lib -L`pwd`/boost-$BOOSTVERSION/lib\" CPPFLAGS=\"-I`pwd`/gmp-$GMPVERSION/include -I`pwd`/antlr-3.4/include -I`pwd`/boost-$BOOSTVERSION/include\" --with-antlr-dir=\"`pwd`/antlr-3.4\" ANTLR=\"`pwd`/antlr-3.4/bin/antlr3\""
+echo '  make'
+echo
+echo =============================================================================
diff --git a/cvc4autoconfig.h.in b/cvc4autoconfig.h.in
new file mode 100644
index 0000000..cc52b8a
--- /dev/null
+++ b/cvc4autoconfig.h.in
@@ -0,0 +1,147 @@
+/* cvc4autoconfig.h.in.  Generated from configure.ac by autoheader.  */
+
+#ifndef __CVC4__CVC4AUTOCONFIG_H
+#define __CVC4__CVC4AUTOCONFIG_H
+
+/* Define to 1 if Boost threading library has support for thread attributes */
+#undef BOOST_HAS_THREAD_ATTR
+
+/* Defined if using the CLN multi-precision arithmetic library. */
+#undef CVC4_CLN_IMP
+
+/* Extraversion component of the version of CVC4. */
+#undef CVC4_EXTRAVERSION
+
+/* Defined if using the GMP multi-precision arithmetic library. */
+#undef CVC4_GMP_IMP
+
+/* Whether CVC4 is built with the (optional) GPLed library dependences. */
+#undef CVC4_GPL_DEPS
+
+/* Major component of the version of CVC4. */
+#undef CVC4_MAJOR
+
+/* Minor component of the version of CVC4. */
+#undef CVC4_MINOR
+
+/* Release component of the version of CVC4. */
+#undef CVC4_RELEASE
+
+/* Full release string for CVC4. */
+#undef CVC4_RELEASE_STRING
+
+/* Defined if the requested minimum BOOST version is satisfied */
+#undef HAVE_BOOST
+
+/* Define to 1 if you have <boost/system/error_code.hpp> */
+#undef HAVE_BOOST_SYSTEM_ERROR_CODE_HPP
+
+/* Define to 1 if you have <boost/thread.hpp> */
+#undef HAVE_BOOST_THREAD_HPP
+
+/* Defined to 1 if clock_gettime() is supported by the platform. */
+#undef HAVE_CLOCK_GETTIME
+
+/* Define to 1 if you have the declaration of `optreset', and to 0 if you
+   don't. */
+#undef HAVE_DECL_OPTRESET
+
+/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRERROR_R
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <ext/stdio_filebuf.h> header file. */
+#undef HAVE_EXT_STDIO_FILEBUF_H
+
+/* Defined to 1 if ffs() is supported by the platform. */
+#undef HAVE_FFS
+
+/* Define to 1 if you have the <getopt.h> header file. */
+#undef HAVE_GETOPT_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `gmp' library (-lgmp). */
+#undef HAVE_LIBGMP
+
+/* Define to 1 if you have the `profiler' library (-lprofiler). */
+#undef HAVE_LIBPROFILER
+
+/* Define to 1 to use libreadline */
+#undef HAVE_LIBREADLINE
+
+/* Define to 1 if you have the `tcmalloc' library (-ltcmalloc). */
+#undef HAVE_LIBTCMALLOC
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strerror_r' function. */
+#undef HAVE_STRERROR_R
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Defined to 1 if strtok_r() is supported by the platform. */
+#undef HAVE_STRTOK_R
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if __gnu_cxx::is_sorted() exists */
+#undef IS_SORTED_IN_GNUCXX_NAMESPACE
+
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
+#undef LT_OBJDIR
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if rl_completion_entry_function is declared to return pointer
+   to char */
+#undef READLINE_COMPENTRY_FUNC_RETURNS_CHARP
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if strerror_r returns char *. */
+#undef STRERROR_R_CHAR_P
+
+/* If the compiler supports a TLS storage class define it to that here */
+#undef TLS
+
+#endif /* __CVC4__CVC4AUTOCONFIG_H */
diff --git a/doc/SmtEngine.3cvc b/doc/SmtEngine.3cvc
new file mode 100644
index 0000000..34c37b2
--- /dev/null
+++ b/doc/SmtEngine.3cvc
@@ -0,0 +1,1295 @@
+.\" Process this file with
+.\" groff -man -Tascii SmtEngine.3cvc
+.\"
+.TH SMTENGINE 3cvc "March 2017" "CVC4 release 1.5-prerelease" "CVC4 Library Interfaces"
+.SH NAME
+SmtEngine \- the primary interface to CVC4's theorem-proving capabilities
+.SH DESCRIPTION
+.B SmtEngine
+is the main entry point into the CVC4 theorem prover API.
+
+.SH SMTENGINE OPTIONS
+
+The SmtEngine is in charge of setting and getting information and options.
+Numerous options are available via the
+.I SmtEngine::setOption()
+call.
+.I SmtEngine::setOption()
+and
+.I SmtEngine::getOption()
+use the following option keys.
+
+.ad l
+
+.RS
+.TP 10
+.I "COMMON OPTIONS"
+
+.TP
+.B "input-language"
+(InputLanguage) force input language (default is "auto"; see \-\-lang help)
+.TP
+.B "output-language"
+(OutputLanguage) force output language (default is "auto"; see \-\-output\-lang help)
+.TP
+.B "statistics"
+(bool) give statistics on exit
+.TP
+.B "version"
+(bool) identify this CVC4 binary
+.TP
+.B "help"
+(bool) full command line reference
+.TP
+.B "strict-parsing"
+(bool) be less tolerant of non\-conforming inputs
+.TP
+.B "dump"
+(std::string) dump preprocessed assertions, etc., see \-\-dump=help
+.TP
+.B "dump-to"
+(std::string) all dumping goes to FILE (instead of stdout)
+.TP
+.B "produce-models"
+(bool) support the get\-value and get\-model commands
+.TP
+.B "produce-assertions"
+(bool) keep an assertions list (enables get\-assertions command)
+.TP
+.B "incremental"
+(bool) enable incremental solving
+.TP
+.B "tlimit"
+(unsigned long) enable time limiting (give milliseconds)
+.TP
+.B "tlimit-per"
+(unsigned long) enable time limiting per query (give milliseconds)
+.TP
+.B "rlimit"
+(unsigned long) enable resource limiting (currently, roughly the number of SAT conflicts)
+.TP
+.B "reproducible-resource-limit"
+(unsigned long) enable resource limiting per query
+.TP
+.B "hard-limit"
+(bool) the resource limit is hard potentially leaving the smtEngine in an unsafe state (should be destroyed and rebuild after resourcing out)
+.TP
+.B "cpu-time"
+(bool) measures CPU time if set to true and wall time if false (default false)
+
+
+.TP
+.I "ARITHMETIC THEORY OPTIONS"
+
+.TP
+.B "unate-lemmas=MODE"
+(ArithUnateLemmaMode) determines which lemmas to add before solving (default is 'all', see \-\-unate\-lemmas=help)
+.TP
+.B "arith-prop=MODE"
+(ArithPropagationMode) turns on arithmetic propagation (default is 'old', see \-\-arith\-prop=help)
+.TP
+.B "heuristic-pivots=N"
+(int16_t) the number of times to apply the heuristic pivot rule; if N < 0, this defaults to the number of variables; if this is unset, this is tuned by the logic selection
+.TP
+.B "standard-effort-variable-order-pivots=N"
+(int16_t) limits the number of pivots in a single invocation of check() at a non\-full effort level using Bland's pivot rule (EXPERTS only)
+.TP
+.B "error-selection-rule=RULE"
+(ErrorSelectionRule) change the pivot rule for the basic variable (default is 'min', see \-\-pivot\-rule help)
+.TP
+.B "simplex-check-period=N"
+(uint16_t) the number of pivots to do in simplex before rechecking for a conflict on all variables
+.TP
+.B "pivot-threshold=N"
+(uint16_t) sets the number of pivots using \-\-pivot\-rule per basic variable per simplex instance before using variable order
+.TP
+.B "prop-row-length=N"
+(uint16_t) sets the maximum row length to be used in propagation
+.TP
+.B "enable-dio-solver"
+(bool) turns on Linear Diophantine Equation solver (Griggio, JSAT 2012)
+.TP
+.B "enable-arith-rewrite-equalities"
+(bool) turns on the preprocessing rewrite turning equalities into a conjunction of inequalities
+.TP
+.B "miplib-trick"
+(bool) turns on the preprocessing step of attempting to infer bounds on miplib problems
+.TP
+.B "miplib-trick-subs"
+(unsigned) do substitution for miplib 'tmp' vars if defined in <= N eliminated vars
+.TP
+.B "cut-all-bounded"
+(bool) turns on the integer solving step of periodically cutting all integer variables that have both upper and lower bounds
+.TP
+.B "maxCutsInContext"
+(unsigned) maximum cuts in a given context before signalling a restart
+.TP
+.B "revert-arith-models-on-unsat"
+(bool) revert the arithmetic model to a known safe model on unsat if one is cached
+.TP
+.B "fc-penalties"
+(bool) turns on degenerate pivot penalties
+.TP
+.B "use-fcsimplex"
+(bool) use focusing and converging simplex (FMCAD 2013 submission)
+.TP
+.B "use-soi"
+(bool) use sum of infeasibility simplex (FMCAD 2013 submission)
+.TP
+.B "restrict-pivots"
+(bool) have a pivot cap for simplex at effort levels below fullEffort
+.TP
+.B "collect-pivot-stats"
+(bool) collect the pivot history
+.TP
+.B "use-approx"
+(bool) attempt to use an approximate solver
+.TP
+.B "approx-branch-depth"
+(int16_t) maximum branch depth the approximate solver is allowed to take
+.TP
+.B "dio-decomps"
+(bool) let skolem variables for integer divisibility constraints leak from the dio solver
+.TP
+.B "new-prop"
+(bool) use the new row propagation system
+.TP
+.B "arith-prop-clauses"
+(uint16_t) rows shorter than this are propagated as clauses
+.TP
+.B "soi-qe"
+(bool) use quick explain to minimize the sum of infeasibility conflicts
+.TP
+.B "rewrite-divk"
+(bool) rewrite division and mod when by a constant into linear terms
+.TP
+.B "se-solve-int"
+(bool) attempt to use the approximate solve integer method on standard effort
+.TP
+.B "lemmas-on-replay-failure"
+(bool) attempt to use external lemmas if approximate solve integer failed
+.TP
+.B "dio-turns"
+(int) turns in a row dio solver cutting gets
+.TP
+.B "rr-turns"
+(int) round robin turn
+.TP
+.B "dio-repeat"
+(bool) handle dio solver constraints in mass or one at a time
+.TP
+.B "replay-early-close-depth"
+(int) multiples of the depths to try to close the approx log eagerly
+.TP
+.B "replay-failure-penalty"
+(int) number of solve integer attempts to skips after a numeric failure
+.TP
+.B "replay-num-err-penalty"
+(int) number of solve integer attempts to skips after a numeric failure
+.TP
+.B "replay-reject-cut"
+(unsigned) maximum complexity of any coefficient while replaying cuts
+.TP
+.B "replay-lemma-reject-cut"
+(unsigned) maximum complexity of any coefficient while outputing replaying cut lemmas
+.TP
+.B "replay-soi-major-threshold"
+(double) threshold for a major tolerance failure by the approximate solver
+.TP
+.B "replay-soi-major-threshold-pen"
+(int) threshold for a major tolerance failure by the approximate solver
+.TP
+.B "replay-soi-minor-threshold"
+(double) threshold for a minor tolerance failure by the approximate solver
+.TP
+.B "replay-soi-minor-threshold-pen"
+(int) threshold for a minor tolerance failure by the approximate solver
+.TP
+.B "pp-assert-max-sub-size"
+(unsigned) threshold for substituting an equality in ppAssert
+.TP
+.B "max-replay-tree"
+(int) threshold for attempting to replay a tree
+.TP
+.B "pb-rewrites"
+(bool) apply pseudo boolean rewrites
+.TP
+.B "pb-rewrite-threshold"
+(int) threshold of number of pseudoboolean variables to have before doing rewrites
+.TP
+.B "snorm-infer-eq"
+(bool) infer equalities based on Shostak normalization
+.TP
+.I "ARRAYS THEORY OPTIONS"
+
+.TP
+.B "arrays-optimize-linear"
+(bool) turn on optimization for linear array terms (see de Moura FMCAD 09 arrays paper)
+.TP
+.B "arrays-lazy-rintro1"
+(bool) turn on optimization to only perform RIntro1 rule lazily (see Jovanovic/Barrett 2012: Being Careful with Theory Combination)
+.TP
+.B "arrays-weak-equiv"
+(bool) use algorithm from Christ/Hoenicke (SMT 2014)
+.TP
+.B "arrays-model-based"
+(bool) turn on model\-based array solver
+.TP
+.B "arrays-eager-index"
+(bool) turn on eager index splitting for generated array lemmas
+.TP
+.B "arrays-eager-lemmas"
+(bool) turn on eager lemma generation for arrays
+.TP
+.B "arrays-config"
+(int) set different array option configurations \- for developers only
+.TP
+.B "arrays-reduce-sharing"
+(bool) use model information to reduce size of care graph for arrays
+.TP
+.B "arrays-prop"
+(int) propagation effort for arrays: 0 is none, 1 is some, 2 is full
+.TP
+.I "BASE OPTIONS"
+
+.TP
+.B "verbosity"
+(int) the verbosity level of CVC4
+.TP
+.B "stats-every-query"
+(bool) in incremental mode, print stats after every satisfiability or validity query
+.TP
+.B "stats-hide-zeros"
+(bool) hide statistics which are zero
+.TP
+.B "parse-only"
+(bool) exit after parsing input
+.TP
+.B "preprocess-only"
+(bool) exit after preprocessing input
+.TP
+.B "trace"
+(void) trace something (e.g. \-t pushpop), can repeat
+.TP
+.B "debug"
+(void) debug something (e.g. \-d arith), can repeat
+.TP
+.B "print-success"
+(bool) print the "success" output required of SMT\-LIBv2
+.TP
+.I "BITVECTOR THEORY OPTIONS"
+
+.TP
+.B "bv-sat-solver"
+(CVC4::theory::bv::SatSolverMode) choose which sat solver to use, see \-\-bv\-sat\-solver=help (EXPERTS only)
+.TP
+.B "bitblast"
+(CVC4::theory::bv::BitblastMode) choose bitblasting mode, see \-\-bitblast=help
+.TP
+.B "bitblast-aig"
+(bool) bitblast by first converting to AIG (implies \-\-bitblast=eager)
+.TP
+.B "bv-aig-simp=COMMAND"
+(std::string) abc command to run AIG simplifications (implies \-\-bitblast\-aig, default is "balance;drw") (EXPERTS only)
+.TP
+.B "bv-propagate"
+(bool) use bit\-vector propagation in the bit\-blaster
+.TP
+.B "bv-eq-solver"
+(bool) use the equality engine for the bit\-vector theory (only if \-\-bitblast=lazy)
+.TP
+.B "bv-eq-slicer=MODE"
+(CVC4::theory::bv::BvSlicerMode) turn on the slicing equality solver for the bit\-vector theory (only if \-\-bitblast=lazy)
+.TP
+.B "bv-inequality-solver"
+(bool) turn on the inequality solver for the bit\-vector theory (only if \-\-bitblast=lazy)
+.TP
+.B "bv-algebraic-solver"
+(bool) turn on the algebraic solver for the bit\-vector theory (only if \-\-bitblast=lazy)
+.TP
+.B "bv-algebraic-budget"
+(unsigned) the budget allowed for the algebraic solver in number of SAT conflicts (EXPERTS only)
+.TP
+.B "bv-to-bool"
+(bool) lift bit\-vectors of size 1 to booleans when possible
+.TP
+.B "bool-to-bv"
+(bool) convert booleans to bit\-vectors of size 1 when possible
+.TP
+.B "bv-div-zero-const"
+(bool) always return \-1 on division by zero
+.TP
+.B "bv-extract-arith"
+(bool) enable rewrite pushing extract [i:0] over arithmetic operations (can blow up) (EXPERTS only)
+.TP
+.B "bv-abstraction"
+(bool) mcm benchmark abstraction (EXPERTS only)
+.TP
+.B "bv-skolemize"
+(bool) skolemize arguments for bv abstraction (only does something if \-\-bv\-abstraction is on) (EXPERTS only)
+.TP
+.B "bv-num-func=NUM"
+(unsigned) number of function symbols in conflicts that are generalized (EXPERTS only)
+.TP
+.B "bv-eager-explanations"
+(bool) compute bit\-blasting propagation explanations eagerly (EXPERTS only)
+.TP
+.B "bv-quick-xplain"
+(bool) minimize bv conflicts using the QuickXplain algorithm (EXPERTS only)
+.TP
+.B "bv-intro-pow2"
+(bool) introduce bitvector powers of two as a preprocessing pass (EXPERTS only)
+.TP
+.B "bv-lazy-rewrite-extf"
+(bool) lazily rewrite extended functions like bv2nat and int2bv
+
+.TP
+.B "bv-lazy-reduce-extf"
+(bool) reduce extended functions like bv2nat and int2bv at last call instead of full effort
+
+.TP
+.B "bv-alg-extf"
+(bool) algebraic inferences for extended functions
+
+.TP
+.I "DATATYPES THEORY OPTIONS"
+
+.TP
+.B "dt-rewrite-error-sel"
+(bool) rewrite incorrectly applied selectors to arbitrary ground term (EXPERTS only)
+.TP
+.B "dt-force-assignment"
+(bool) force the datatypes solver to give specific values to all datatypes terms before answering sat
+.TP
+.B "dt-binary-split"
+(bool) do binary splits for datatype constructor types
+.TP
+.B "dt-ref-sk-intro"
+(bool) introduce reference skolems for shorter explanations
+.TP
+.B "dt-use-testers"
+(bool) do not preprocess away tester predicates
+.TP
+.B "cdt-bisimilar"
+(bool) do bisimilarity check for co\-datatypes
+.TP
+.B "dt-cyclic"
+(bool) do cyclicity check for datatypes
+.TP
+.B "dt-infer-as-lemmas"
+(bool) always send lemmas out instead of making internal inferences
+.TP
+.B "dt-blast-splits"
+(bool) when applicable, blast splitting lemmas for all variables at once
+
+.TP
+.I "DECISION HEURISTICS OPTIONS"
+
+.TP
+.B "decision-mode"
+(decision::DecisionMode) choose decision mode, see \-\-decision=help
+.TP
+.B "decision-threshold=N"
+(decision::DecisionWeight) ignore all nodes greater than threshold in first attempt to pick decision (EXPERTS only)
+.TP
+.B "decision-use-weight"
+(bool) use the weight nodes (locally, by looking at children) to direct recursive search (EXPERTS only)
+.TP
+.B "decision-random-weight=N"
+(int) assign random weights to nodes between 0 and N\-1 (0: disable) (EXPERTS only)
+.TP
+.B "decision-weight-internal=HOW"
+(decision::DecisionWeightInternal) computer weights of internal nodes using children: off, max, sum, usr1 (meaning evolving) (EXPERTS only)
+.TP
+.I "EXPRESSION PACKAGE OPTIONS"
+
+.TP
+.B "default-expr-depth=N"
+(int) print exprs to depth N (0 == default, \-1 == no limit)
+.TP
+.B "default-dag-thresh"
+(int) dagify common subexprs appearing > N times (1 == default, 0 == don't dagify)
+.TP
+.B "print-expr-types"
+(bool) print types with variables when printing exprs
+.TP
+.B "eager-type-checking"
+(bool) type check expressions immediately on creation (debug builds only)
+.TP
+.B "type-checking"
+(bool) never type check expressions
+.TP
+.I "IDL OPTIONS"
+
+.TP
+.B "enable-idl-rewrite-equalities"
+(bool) enable rewriting equalities into two inequalities in IDL solver (default is disabled)
+.TP
+.I "DRIVER OPTIONS"
+
+.TP
+.B "early-exit"
+(bool) do not run destructors at exit; default on except in debug builds (EXPERTS only)
+.TP
+.B "threads=N"
+(unsigned) Total number of threads for portfolio
+.TP
+.B "thread-stack=N"
+(unsigned) stack size for worker threads in MB (0 means use Boost/thread lib default)
+.TP
+.B "filter-lemma-length=N"
+(int) don't share (among portfolio threads) lemmas strictly longer than N
+.TP
+.B "fallback-sequential"
+(bool) Switch to sequential mode (instead of printing an error) if it can't be solved in portfolio mode
+.TP
+.B "incremental-parallel"
+(bool) Use parallel solver even in incremental mode (may print 'unknown's at times)
+.TP
+.B "continued-execution"
+(bool) continue executing commands, even on error
+.TP
+.B "segv-spin"
+(bool) spin on segfault/other crash waiting for gdb
+.TP
+.B "wait-to-join"
+(bool) wait for other threads to join before quitting (EXPERTS only)
+.TP
+.I "PARSER OPTIONS"
+
+.TP
+.B "mmap"
+(bool) memory map file input
+.TP
+.B "semantic-checks"
+(bool) disable ALL semantic checks, including type checks
+.TP
+.B "global-declarations"
+(bool) force all declarations and definitions to be global
+.TP
+.I "PRINTING OPTIONS"
+
+.TP
+.B "model-format=MODE"
+(ModelFormatMode) print format mode for models, see \-\-model\-format=help
+.TP
+.B "inst-format=MODE"
+(InstFormatMode) print format mode for instantiations, see \-\-inst\-format=help
+.TP
+.I "PROOF OPTIONS"
+
+.TP
+.B "lfsc-letification"
+(bool) turns on global letification in LFSC proofs
+.TP
+.B "aggressive-core-min"
+(bool) turns on aggressive unsat core minimization (experimental)
+.TP
+.B "fewer-preprocessing-holes"
+(bool) try to eliminate preprocessing holes in proofs
+.TP
+.B "allow-empty-dependencies"
+(bool) if unable to track the dependencies of a rewritten/preprocessed assertion, fail silently
+.TP
+.I "SAT LAYER OPTIONS"
+
+.TP
+.B "random-frequency"
+(double) sets the frequency of random decisions in the sat solver (P=0.0 by default)
+.TP
+.B "random-seed"
+(uint32_t) sets the random seed for the sat solver
+.TP
+.B "restart-int-base=N"
+(unsigned) sets the base restart interval for the sat solver (N=25 by default)
+.TP
+.B "restart-int-inc=F"
+(double) sets the restart interval increase factor for the sat solver (F=3.0 by default)
+.TP
+.B "refine-conflicts"
+(bool) refine theory conflict clauses (default false)
+.TP
+.B "minisat-elimination"
+(bool) use Minisat elimination
+.TP
+.B "minisat-dump-dimacs"
+(bool) instead of solving minisat dumps the asserted clauses in Dimacs format
+
+.TP
+.I "QUANTIFIERS OPTIONS"
+
+.TP
+.B "miniscope-quant"
+(bool) miniscope quantifiers
+.TP
+.B "miniscope-quant-fv"
+(bool) miniscope quantifiers for ground subformulas
+.TP
+.B "quant-split"
+(bool) apply splitting to quantified formulas based on variable disjoint disjuncts
+.TP
+.B "prenex-quant=MODE"
+(CVC4::theory::quantifiers::PrenexQuantMode) prenex mode for quantified formulas
+.TP
+.B "prenex-quant-user"
+(bool) prenex quantified formulas with user patterns
+.TP
+.B "var-elim-quant"
+(bool) enable simple variable elimination for quantified formulas
+.TP
+.B "var-ineq-elim-quant"
+(bool) enable variable elimination based on infinite projection of unbound arithmetic variables
+.TP
+.B "dt-var-exp-quant"
+(bool) expand datatype variables bound to one constructor in quantifiers
+.TP
+.B "ite-lift-quant=MODE"
+(CVC4::theory::quantifiers::IteLiftQuantMode) ite lifting mode for quantified formulas
+.TP
+.B "cond-var-split-quant"
+(bool) split quantified formulas that lead to variable eliminations
+.TP
+.B "cond-var-split-agg-quant"
+(bool) aggressive split quantified formulas that lead to variable eliminations
+.TP
+.B "ite-dtt-split-quant"
+(bool) split ites with dt testers as conditions
+.TP
+.B "pre-skolem-quant"
+(bool) apply skolemization eagerly to bodies of quantified formulas
+.TP
+.B "pre-skolem-quant-nested"
+(bool) apply skolemization to nested quantified formulas
+.TP
+.B "pre-skolem-quant-agg"
+(bool) apply skolemization to quantified formulas aggressively
+.TP
+.B "ag-miniscope-quant"
+(bool) perform aggressive miniscoping for quantifiers
+.TP
+.B "elim-taut-quant"
+(bool) eliminate tautological disjuncts of quantified formulas
+.TP
+.B "elim-ext-arith-quant"
+(bool) eliminate extended arithmetic symbols in quantified formulas
+.TP
+.B "cond-rewrite-quant"
+(bool) conditional rewriting of quantified formulas
+
+
+.TP
+.B "e-matching"
+(bool) whether to do heuristic E\-matching
+.TP
+.B "term-db-mode"
+(CVC4::theory::quantifiers::TermDbMode) which ground terms to consider for instantiation
+.TP
+.B "register-quant-body-terms"
+(bool) consider ground terms within bodies of quantified formulas for matching
+.TP
+.B "infer-arith-trigger-eq"
+(bool) infer equalities for trigger terms based on solving arithmetic equalities
+.TP
+.B "infer-arith-trigger-eq-exp"
+(bool) record explanations for inferArithTriggerEq
+
+.TP
+.B "strict-triggers"
+(bool) only instantiate quantifiers with user patterns based on triggers
+.TP
+.B "relevant-triggers"
+(bool) prefer triggers that are more relevant based on SInE style analysis
+.TP
+.B "relational-triggers"
+(bool) choose relational triggers such as x = f(y), x >= f(y)
+.TP
+.B "purify-triggers"
+(bool) purify triggers, e.g. f( x+1 ) becomes f( y ), x mapsto y\-1
+.TP
+.B "purify-dt-triggers"
+(bool) purify dt triggers, match all constructors of correct form instead of selectors
+.TP
+.B "pure-th-triggers"
+(bool) use pure theory terms as single triggers
+.TP
+.B "partial-triggers"
+(bool) use triggers that do not contain all free variables
+.TP
+.B "multi-trigger-when-single"
+(bool) select multi triggers when single triggers exist
+.TP
+.B "multi-trigger-priority"
+(bool) only try multi triggers if single triggers give no instantiations
+.TP
+.B "trigger-sel"
+(CVC4::theory::quantifiers::TriggerSelMode) selection mode for triggers
+.TP
+.B "trigger-active-sel"
+(CVC4::theory::quantifiers::TriggerActiveSelMode) selection mode to activate triggers
+.TP
+.B "user-pat=MODE"
+(CVC4::theory::quantifiers::UserPatMode) policy for handling user\-provided patterns for quantifier instantiation
+.TP
+.B "increment-triggers"
+(bool) generate additional triggers as needed during search
+
+.TP
+.B "inst-when=MODE"
+(CVC4::theory::quantifiers::InstWhenMode) when to apply instantiation
+.TP
+.B "inst-when-strict-interleave"
+(bool) ensure theory combination and standard quantifier effort strategies take turns 
+.TP
+.B "inst-when-phase=N"
+(int) instantiation rounds quantifiers takes (>=1) before allowing theory combination to happen
+.TP
+.B "inst-when-tc-first"
+(bool) allow theory combination to happen once initially, before quantifier strategies are run
+
+.TP
+.B "inst-max-level=N"
+(int) maximum inst level of terms used to instantiate quantified formulas with (\-1 == no limit, default)
+.TP
+.B "inst-level-input-only"
+(bool) only input terms are assigned instantiation level zero
+.TP
+.B "quant-rep-mode=MODE"
+(CVC4::theory::quantifiers::QuantRepMode) selection mode for representatives in quantifiers engine
+.TP
+.B "inst-rlv-cond"
+(bool) add relevancy conditions for instantiations
+.TP
+.B "full-saturate-quant"
+(bool) when all other quantifier instantiation strategies fail, instantiate with ground terms from relevant domain, then arbitrary ground terms before answering unknown
+.TP
+.B "full-saturate-quant-rd"
+(bool) whether to use relevant domain first for full saturation instantiation strategy
+.TP
+.B "fs-inst"
+(bool) interleave full saturate instantiation with other techniques
+.TP
+.B "literal-matching=MODE"
+(CVC4::theory::quantifiers::LiteralMatchMode) choose literal matching mode
+
+.TP
+.B "finite-model-find"
+(bool) use finite model finding heuristic for quantifier instantiation
+.TP
+.B "quant-fun-wd"
+(bool) assume that function defined by quantifiers are well defined
+.TP
+.B "fmf-fun"
+(bool) find models for recursively defined functions, assumes functions are admissible
+.TP
+.B "fmf-fun-rlv"
+(bool) find models for recursively defined functions, assumes functions are admissible, allows empty type when function is irrelevant
+.TP
+.B "fmf-empty-sorts"
+(bool) allow finite model finding to assume sorts that do not occur in ground assertions are empty
+
+.TP
+.B "mbqi=MODE"
+(CVC4::theory::quantifiers::MbqiMode) choose mode for model\-based quantifier instantiation
+.TP
+.B "mbqi-one-inst-per-round"
+(bool) only add one instantiation per quantifier per round for mbqi
+.TP
+.B "mbqi-one-quant-per-round"
+(bool) only add instantiations for one quantifier per round for mbqi
+.TP
+.B "fmf-inst-engine"
+(bool) use instantiation engine in conjunction with finite model finding
+.TP
+.B "fmf-inst-gen"
+(bool) enable Inst\-Gen instantiation techniques for finite model finding 
+.TP
+.B "fmf-inst-gen-one-quant-per-round"
+(bool) only perform Inst\-Gen instantiation techniques on one quantifier per round
+.TP
+.B "fmf-fresh-dc"
+(bool) use fresh distinguished representative when applying Inst\-Gen techniques
+.TP
+.B "fmf-fmc-simple"
+(bool) simple models in full model check for finite model finding
+.TP
+.B "fmf-bound-int"
+(bool) finite model finding on bounded integer quantification
+.TP
+.B "fmf-bound"
+(bool) finite model finding on bounded quantification
+.TP
+.B "fmf-bound-lazy"
+(bool) enforce bounds for bounded quantification lazily via use of proxy variables
+.TP
+.B "fmf-bound-min-mode=MODE"
+(CVC4::theory::quantifiers::FmfBoundMinMode) mode for which types of bounds to minimize via first decision heuristics
+
+
+.TP
+.B "quant-cf"
+(bool) enable conflict find mechanism for quantifiers
+.TP
+.B "quant-cf-mode=MODE"
+(CVC4::theory::quantifiers::QcfMode) what effort to apply conflict find mechanism
+.TP
+.B "quant-cf-when=MODE"
+(CVC4::theory::quantifiers::QcfWhenMode) when to invoke conflict find mechanism for quantifiers
+.TP
+.B "qcf-tconstraint"
+(bool) enable entailment checks for t\-constraints in qcf algorithm
+.TP
+.B "qcf-all-conflict"
+(bool) add all available conflicting instances during conflict\-based instantiation
+.TP
+.B "qcf-nested-conflict"
+(bool) consider conflicts for nested quantifiers
+.TP
+.B "qcf-vo-exp"
+(bool) qcf experimental variable ordering
+.TP
+.B "inst-no-entail"
+(bool) do not consider instances of quantified formulas that are currently entailed
+.TP
+.B "inst-prop"
+(bool) internal propagation for instantiations for selecting relevant instances
+
+.TP
+.B "qcf-eager-test"
+(bool) optimization, test qcf instances eagerly
+.TP
+.B "qcf-eager-check-rd"
+(bool) optimization, eagerly check relevant domain of matched position
+.TP
+.B "qcf-skip-rd"
+(bool) optimization, skip instances based on possibly irrelevant portions of quantified formulas
+
+
+.TP
+.B "rewrite-rules"
+(bool) use rewrite rules module
+.TP
+.B "rr-one-inst-per-round"
+(bool) add one instance of rewrite rule per round
+
+
+.TP
+.B "quant-ind"
+(bool) use all available techniques for inductive reasoning
+.TP
+.B "dt-stc-ind"
+(bool) apply strengthening for existential quantification over datatypes based on structural induction
+.TP
+.B "int-wf-ind"
+(bool) apply strengthening for integers based on well\-founded induction
+.TP
+.B "conjecture-gen"
+(bool) generate candidate conjectures for inductive proofs
+
+.TP
+.B "conjecture-gen-per-round=N"
+(int) number of conjectures to generate per instantiation round 
+.TP
+.B "conjecture-no-filter"
+(bool) do not filter conjectures
+.TP
+.B "conjecture-filter-active-terms"
+(bool) filter based on active terms
+.TP
+.B "conjecture-filter-canonical"
+(bool) filter based on canonicity
+.TP
+.B "conjecture-filter-model"
+(bool) filter based on model
+.TP
+.B "conjecture-gen-gt-enum=N"
+(int) number of ground terms to generate for model filtering
+.TP
+.B "conjecture-gen-uee-intro"
+(bool) more aggressive merging for universal equality engine, introduces terms
+.TP
+.B "conjecture-gen-max-depth=N"
+(int) maximum depth of terms to consider for conjectures
+ 
+.TP
+.B "cegqi"
+(bool)  counterexample\-guided quantifier instantiation
+.TP
+.B "cegqi-fair=MODE"
+(CVC4::theory::quantifiers::CegqiFairMode)  if and how to apply fairness for cegqi
+.TP
+.B "cegqi-si=MODE"
+(CVC4::theory::quantifiers::CegqiSingleInvMode)  mode for processing single invocation synthesis conjectures
+.TP
+.B "cegqi-si-partial"
+(bool)  combined techniques for synthesis conjectures that are partially single invocation 
+.TP
+.B "cegqi-si-reconstruct"
+(bool)  reconstruct solutions for single invocation conjectures in original grammar
+.TP
+.B "cegqi-si-sol-min-core"
+(bool)  minimize solutions for single invocation conjectures based on unsat core
+.TP
+.B "cegqi-si-sol-min-inst"
+(bool)  minimize individual instantiations for single invocation conjectures based on unsat core
+.TP
+.B "cegqi-si-reconstruct-const"
+(bool)  include constants when reconstruct solutions for single invocation conjectures in original grammar
+.TP
+.B "cegqi-si-abort"
+(bool)  abort if synthesis conjecture is not single invocation
+ 
+.TP
+.B "sygus-nf"
+(bool)  only search for sygus builtin terms that are in normal form
+.TP
+.B "sygus-nf-arg"
+(bool)  account for relationship between arguments of operations in sygus normal form
+.TP
+.B "sygus-nf-sym"
+(bool)  narrow sygus search space based on global state of current candidate program
+.TP
+.B "sygus-nf-sym-gen"
+(bool)  generalize lemmas for global search space narrowing
+.TP
+.B "sygus-nf-sym-arg"
+(bool)  generalize based on arguments in global search space narrowing
+.TP
+.B "sygus-nf-sym-content"
+(bool)  generalize based on content in global search space narrowing
+ 
+.TP
+.B "sygus-inv-templ=MODE"
+(CVC4::theory::quantifiers::SygusInvTemplMode)  template mode for sygus invariant synthesis
+.TP
+.B "sygus-direct-eval"
+(bool)  direct unfolding of evaluation functions
+ 
+.TP
+.B "cbqi"
+(bool) turns on counterexample\-based quantifier instantiation
+.TP
+.B "cbqi-recurse"
+(bool) turns on recursive counterexample\-based quantifier instantiation
+.TP
+.B "cbqi-sat"
+(bool) answer sat when quantifiers are asserted with counterexample\-based quantifier instantiation
+.TP
+.B "cbqi-model"
+(bool) guide instantiations by model values for counterexample\-based quantifier instantiation
+.TP
+.B "cbqi-all"
+(bool) apply counterexample\-based instantiation to all quantified formulas
+.TP
+.B "cbqi-use-inf-int"
+(bool) use integer infinity for vts in counterexample\-based quantifier instantiation
+.TP
+.B "cbqi-use-inf-real"
+(bool) use real infinity for vts in counterexample\-based quantifier instantiation
+.TP
+.B "cbqi-prereg-inst"
+(bool)  preregister ground instantiations in counterexample\-based quantifier instantiation
+.TP
+.B "cbqi-min-bounds"
+(bool)  use minimally constrained lower/upper bound for counterexample\-based quantifier instantiation
+.TP
+.B "cbqi-round-up-lia"
+(bool)  round up integer lower bounds in substitutions for counterexample\-based quantifier instantiation
+.TP
+.B "cbqi-midpoint"
+(bool)  choose substitutions based on midpoints of lower and upper bounds for counterexample\-based quantifier instantiation
+.TP
+.B "cbqi-nopt"
+(bool)  non\-optimal bounds for counterexample\-based quantifier instantiation
+.TP
+.B "cbqi-lit-dep"
+(bool)  dependency lemmas for quantifier alternation in counterexample\-based quantifier instantiation
+.TP
+.B "cbqi-innermost"
+(bool) only process innermost quantified formulas in counterexample\-based quantifier instantiation
+.TP
+.B "cbqi-nested-qe"
+(bool) process nested quantified formulas with quantifier elimination in counterexample\-based quantifier instantiation
+
+.TP
+.B "quant-epr"
+(bool) infer whether in effectively propositional fragment, use for cbqi
+.TP
+.B "quant-epr-match"
+(bool) use matching heuristics for EPR instantiation
+
+.TP
+.B "local-t-ext"
+(bool)  do instantiation based on local theory extensions
+.TP
+.B "lte-partial-inst"
+(bool)  partially instantiate local theory quantifiers
+.TP
+.B "lte-restrict-inst-closure"
+(bool)  treat arguments of inst closure as restricted terms for instantiation
+
+.TP
+.B "quant-alpha-equiv"
+(bool)  infer alpha equivalence between quantified formulas
+.TP
+.B "macros-quant"
+(bool) perform quantifiers macro expansion
+.TP
+.B "macros-quant-mode=MODE"
+(CVC4::theory::quantifiers::MacrosQuantMode) mode for quantifiers macro expansion
+.TP
+.B "quant-dsplit-mode=MODE"
+(CVC4::theory::quantifiers::QuantDSplitMode) mode for dynamic quantifiers splitting
+.TP
+.B "quant-anti-skolem"
+(bool) perform anti\-skolemization for quantified formulas
+
+.TP
+.B "quant-ee"
+(bool)  maintain congrunce closure over universal equalities
+
+.TP
+.B "track-inst-lemmas"
+(bool)  track instantiation lemmas (for proofs, unsat cores, qe and synthesis minimization)
+
+.TP
+.I "SEP OPTIONS"
+
+.TP
+.B "sep-check-neg"
+(bool) check negated spatial assertions
+.TP
+.B "sep-exp"
+(bool) experimental flag for sep
+.TP
+.B "sep-min-refine"
+(bool) only add refinement lemmas for minimal (innermost) assertions
+.TP
+.B "sep-deq-c"
+(bool) assume cardinality elements are distinct
+.TP
+.B "sep-pre-skolem-emp"
+(bool) eliminate emp constraint at preprocess time
+
+.TP
+.B "sep-child-refine"
+(bool) child\-specific refinements of negated star, positive wand
+
+.TP
+.I "SETS OPTIONS"
+
+.TP
+.B "sets-proxy-lemmas"
+(bool) introduce proxy variables eagerly to shorten lemmas
+.TP
+.B "sets-infer-as-lemmas"
+(bool) send inferences as lemmas
+
+.TP
+.B "sets-rel-eager"
+(bool) standard effort checks for relations
+
+.TP
+.I "SMT LAYER OPTIONS"
+
+.TP
+.B "force-logic"
+(std::string) set the logic, and override all further user attempts to change it (EXPERTS only)
+.TP
+.B "simplification-mode"
+(SimplificationMode) choose simplification mode, see \-\-simplification=help
+.TP
+.B "static-learning"
+(bool) use static learning (on by default)
+.TP
+.B "expand-definitions"
+(bool) always expand symbol definitions in output
+.TP
+.B "check-models"
+(bool) after SAT/INVALID/UNKNOWN, check that the generated model satisfies user assertions
+.TP
+.B "dump-models"
+(bool) output models after every SAT/INVALID/UNKNOWN response
+.TP
+.B "omit-dont-cares"
+(bool) When producing a model, omit variables whose value does not matter
+.TP
+.B "produce-proofs"
+(bool) turn on proof generation
+.TP
+.B "check-proofs"
+(bool) after UNSAT/VALID, machine\-check the generated proof
+.TP
+.B "dump-proofs"
+(bool) output proofs after every UNSAT/VALID response
+.TP
+.B "dump-instantiations"
+(bool) output instantiations of quantified formulas after every UNSAT/VALID response
+.TP
+.B "dump-synth"
+(bool) output solution for synthesis conjectures after every UNSAT/VALID response
+.TP
+.B "produce-unsat-cores"
+(bool) turn on unsat core generation
+.TP
+.B "check-unsat-cores"
+(bool) after UNSAT/VALID, produce and check an unsat core (expensive)
+.TP
+.B "dump-unsat-cores"
+(bool) output unsat cores after every UNSAT/VALID response
+.TP
+.B "produce-assignments"
+(bool) support the get\-assignment command
+.TP
+.B "ite-simp"
+(bool) turn on ite simplification (Kim (and Somenzi) et al., SAT 2009)
+.TP
+.B "on-repeat-ite-simp"
+(bool) do the ite simplification pass again if repeating simplification
+.TP
+.B "simp-with-care"
+(bool) enables simplifyWithCare in ite simplificiation
+.TP
+.B "simp-ite-compress"
+(bool) enables compressing ites after ite simplification
+.TP
+.B "unconstrained-simp"
+(bool) turn on unconstrained simplification (see Bruttomesso/Brummayer PhD thesis)
+.TP
+.B "repeat-simp"
+(bool) make multiple passes with nonclausal simplifier
+.TP
+.B "simp-ite-hunt-zombies"
+(uint32_t) post ite compression enables zombie removal while the number of nodes is above this threshold
+.TP
+.B "sort-inference"
+(bool) calculate sort inference of input problem, convert the input based on monotonic sorts
+.TP
+.B "abstract-values"
+(bool) in models, output arrays (and in future, maybe others) using abstract values, as required by the SMT\-LIB standard
+.TP
+.B "model-u-dt-enum"
+(bool) in models, output uninterpreted sorts as datatype enumerations
+.TP
+.B "regular-output-channel"
+(std::string) set the regular output channel of the solver
+.TP
+.B "diagnostic-output-channel"
+(std::string) set the diagnostic output channel of the solver
+.TP
+.B "rewrite-step"
+(unsigned) ammount of resources spent for each rewrite step (EXPERTS only)
+.TP
+.B "theory-check-step"
+(unsigned) ammount of resources spent for each theory check call (EXPERTS only)
+.TP
+.B "decision-step"
+(unsigned) ammount of getNext decision calls in the decision engine (EXPERTS only)
+
+.TP
+.B "bitblast-step"
+(unsigned) ammount of resources spent for each bitblast step (EXPERTS only)
+
+.TP
+.B "parse-step"
+(unsigned) ammount of resources spent for each command/expression parsing (EXPERTS only)
+
+.TP
+.B "lemma-step"
+(unsigned) ammount of resources spent when adding lemmas (EXPERTS only)
+
+.TP
+.B "restart-step"
+(unsigned) ammount of resources spent for each theory restart (EXPERTS only)
+
+.TP
+.B "cnf-step"
+(unsigned) ammount of resources spent for each call to cnf conversion (EXPERTS only)
+
+.TP
+.B "preprocess-step"
+(unsigned) ammount of resources spent for each preprocessing step in SmtEngine (EXPERTS only)
+
+.TP
+.B "quantifier-step"
+(unsigned) ammount of resources spent for quantifier instantiations (EXPERTS only)
+
+.TP
+.B "sat-conflict-step"
+(unsigned) ammount of resources spent for each sat conflict (main sat solver) (EXPERTS only)
+
+.TP
+.B "bv-sat-conflict-step"
+(unsigned) ammount of resources spent for each sat conflict (bitvectors) (EXPERTS only)
+
+
+.TP
+.B "rewrite-apply-to-const"
+(bool) eliminate function applications, rewriting e.g. f(5) to a new symbol f_5 (EXPERTS only)
+.TP
+.B "force-no-limit-cpu-while-dump"
+(bool) Force no CPU limit when dumping models and proofs
+.TP
+.I "STRINGS THEORY OPTIONS"
+
+.TP
+.B "strings-exp"
+(bool) experimental features in the theory of strings
+.TP
+.B "strings-lb"
+(unsigned) the strategy of LB rule application: 0\-lazy, 1\-eager, 2\-no
+.TP
+.B "strings-std-ascii"
+(bool) the alphabet contains only characters from the standard ASCII or the extended one
+.TP
+.B "strings-fmf"
+(bool) the finite model finding used by the theory of strings
+
+.TP
+.B "strings-eager"
+(bool) strings eager check
+.TP
+.B "strings-eit"
+(bool) the eager intersection used by the theory of strings
+.TP
+.B "strings-opt1"
+(bool) internal option1 for strings: normal form
+.TP
+.B "strings-opt2"
+(bool) internal option2 for strings: constant regexp splitting
+.TP
+.B "strings-inm"
+(bool) internal for strings: ignore negative membership constraints (fragment checking is needed, left to users for now)
+.TP
+.B "strings-lazy-pp"
+(bool) perform string preprocessing lazily
+.TP
+.B "strings-len-geqz"
+(bool) strings length greater than zero lemmas
+.TP
+.B "strings-len-norm"
+(bool) strings length normalization lemma
+.TP
+.B "strings-sp-emp"
+(bool) strings split on empty string
+.TP
+.B "strings-infer-sym"
+(bool) strings split on empty string
+.TP
+.B "strings-eager-len"
+(bool) strings eager length lemmas
+.TP
+.B "strings-check-entail-len"
+(bool) check entailment between length terms to reduce splitting
+.TP
+.B "strings-process-loop"
+(bool) reduce looping word equations to regular expressions
+.TP
+.B "strings-abort-loop"
+(bool) abort when a looping word equation is encountered
+.TP
+.B "strings-infer-as-lemmas"
+(bool) always send lemmas out instead of making internal inferences
+.TP
+.B "strings-rexplain-lemmas"
+(bool) regression explanations for string lemmas
+.TP
+.B "strings-min-prefix-explain"
+(bool) minimize explanations for prefix of normal forms in strings
+.TP
+.B "strings-guess-model"
+(bool) use model guessing to avoid string extended function reductions
+.TP
+.B "strings-uf-reduct"
+(bool) use uninterpreted functions when applying extended function reductions
+.TP
+.B "strings-binary-csp"
+(bool) use binary search when splitting strings
+.TP
+.B "strings-lprop-csp"
+(bool) do length propagation based on constant splits
+.TP
+.I "THEORY LAYER OPTIONS"
+
+.TP
+.B "theoryof-mode"
+(CVC4::theory::TheoryOfMode) mode for Theory::theoryof() (EXPERTS only)
+.TP
+.B "use-theory"
+(std::string) use alternate theory implementation NAME (\-\-use\-theory=help for a list). This option may be repeated or a comma separated list.
+.TP
+.I "UNINTERPRETED FUNCTIONS THEORY OPTIONS"
+
+.TP
+.B "uf-symmetry-breaker"
+(bool) use UF symmetry breaker (Deharbe et al., CADE 2011)
+.TP
+.B "condense-function-values"
+(bool) condense models for functions rather than explicitly representing them
+.TP
+.B "uf-ss-regions"
+(bool) disable region\-based method for discovering cliques and splits in uf strong solver
+.TP
+.B "uf-ss-eager-split"
+(bool) add splits eagerly for uf strong solver
+.TP
+.B "uf-ss-totality"
+(bool) always use totality axioms for enforcing cardinality constraints
+.TP
+.B "uf-ss-totality-limited=N"
+(int) apply totality axioms, but only up to cardinality N (\-1 == do not apply totality axioms, default)
+.TP
+.B "uf-ss-totality-sym-break"
+(bool) apply symmetry breaking for totality axioms
+.TP
+.B "uf-ss-abort-card=N"
+(int) tells the uf strong solver a cardinality to abort at (\-1 == no limit, default)
+.TP
+.B "uf-ss-explained-cliques"
+(bool) use explained clique lemmas for uf strong solver
+.TP
+.B "uf-ss-simple-cliques"
+(bool) always use simple clique lemmas for uf strong solver
+.TP
+.B "uf-ss-deq-prop"
+(bool) eagerly propagate disequalities for uf strong solver
+.TP
+.B "uf-ss=MODE"
+(CVC4::theory::uf::UfssMode) mode of operation for uf strong solver.
+.TP
+.B "uf-ss-clique-splits"
+(bool) use cliques instead of splitting on demand to shrink model
+.TP
+.B "uf-ss-sym-break"
+(bool) finite model finding symmetry breaking techniques
+.TP
+.B "uf-ss-fair"
+(bool) use fair strategy for finite model finding multiple sorts
+.TP
+.B "uf-ss-fair-monotone"
+(bool) group monotone sorts when enforcing fairness for finite model finding
+.PD
+.RE
+
+.ad b
+
+.SH VERSION
+This manual page refers to
+.B CVC4
+version 1.5-prerelease.
+.SH BUGS
+A Bugzilla for the CVC4 project is maintained at
+.BR http://cvc4.cs.nyu.edu/bugzilla3/ .
+.SH AUTHORS
+.B CVC4
+is developed by a team of researchers at New York University
+and the University of Iowa.
+See the AUTHORS file in the distribution for a full list of
+contributors.
+.SH "SEE ALSO"
+.BR libcvc4 (3),
+.BR libcvc4parser (3),
+.BR libcvc4compat (3)
+
+Additionally, the CVC4 wiki contains useful information about the
+design and internals of CVC4.  It is maintained at
+.BR http://cvc4.cs.nyu.edu/wiki/ .
diff --git a/doc/SmtEngine.3cvc_template.in b/doc/SmtEngine.3cvc_template.in
new file mode 100644
index 0000000..d741fd3
--- /dev/null
+++ b/doc/SmtEngine.3cvc_template.in
@@ -0,0 +1,55 @@
+.\" Process this file with
+.\" groff -man -Tascii SmtEngine.3cvc
+.\"
+.TH SMTENGINE 3cvc "@MAN_DATE@" "CVC4 release @VERSION@" "CVC4 Library Interfaces"
+.SH NAME
+SmtEngine \- the primary interface to CVC4's theorem-proving capabilities
+.SH DESCRIPTION
+.B SmtEngine
+is the main entry point into the CVC4 theorem prover API.
+
+.SH SMTENGINE OPTIONS
+
+The SmtEngine is in charge of setting and getting information and options.
+Numerous options are available via the
+.I SmtEngine::setOption()
+call.
+.I SmtEngine::setOption()
+and
+.I SmtEngine::getOption()
+use the following option keys.
+
+.ad l
+
+.RS
+.TP 10
+.I "COMMON OPTIONS"
+${common_manpage_smt_documentation}
+
+${remaining_manpage_smt_documentation}
+.PD
+.RE
+
+.ad b
+
+.SH VERSION
+This manual page refers to
+.B CVC4
+version @VERSION at .
+.SH BUGS
+A Bugzilla for the CVC4 project is maintained at
+.BR http://cvc4.cs.nyu.edu/bugzilla3/ .
+.SH AUTHORS
+.B CVC4
+is developed by a team of researchers at New York University
+and the University of Iowa.
+See the AUTHORS file in the distribution for a full list of
+contributors.
+.SH "SEE ALSO"
+.BR libcvc4 (3),
+.BR libcvc4parser (3),
+.BR libcvc4compat (3)
+
+Additionally, the CVC4 wiki contains useful information about the
+design and internals of CVC4.  It is maintained at
+.BR http://cvc4.cs.nyu.edu/wiki/ .
diff --git a/doc/cvc4.1 b/doc/cvc4.1
new file mode 100644
index 0000000..01ad569
--- /dev/null
+++ b/doc/cvc4.1
@@ -0,0 +1,996 @@
+.\" Process this file with
+.\" groff -man -Tascii cvc4.1
+.\"
+.TH CVC4 1 "March 2017" "CVC4 release 1.5-prerelease" "User Manuals"
+.SH NAME
+cvc4, pcvc4 \- an automated theorem prover
+.SH SYNOPSIS
+.B cvc4 [
+.I options
+.B ] [
+.I file
+.B ]
+.P
+.B pcvc4 [
+.I options
+.B ] [
+.I file
+.B ]
+.SH DESCRIPTION
+.B cvc4
+is an automated theorem prover for first-order formulas with respect
+to background theories of interest.
+.B pcvc4
+is CVC4's "portfolio" variant, which is capable of running multiple
+CVC4 instances in parallel, configured differently.
+
+With
+.I file
+, commands are read from
+.I file
+and executed.  CVC4 supports the SMT-LIB (versions 1.2 and 2.0) input
+format, as well as its own native \(lqpresentation language\(rq (see
+.BR cvc4 (5)
+), which is similar in many respects to CVC3's presentation language,
+but not identical.
+
+If
+.I file
+is unspecified, standard input is read (and the
+.B CVC4
+presentation language is assumed).  If
+.I file
+is unspecified and
+.B CVC4
+is connected to a terminal, interactive mode is assumed.
+
+.SH COMMON OPTIONS
+
+.IP "Each option marked with [*] has a \-\-no\-OPTIONNAME variant, which reverses the sense of the option."
+
+
+.IP "\-\-lang=LANG | \-L LANG"
+force input language (default is "auto"; see \-\-lang help)
+.IP "\-\-output\-lang=LANG"
+force output language (default is "auto"; see \-\-output\-lang help)
+.IP "\-\-verbose | \-v"
+increase verbosity (may be repeated)
+.IP "\-\-quiet | \-q"
+decrease verbosity (may be repeated)
+.IP "\-\-stats"
+give statistics on exit [*]
+.IP "\-\-version | \-V"
+identify this CVC4 binary
+.IP "\-\-help | \-h"
+full command line reference
+.IP "\-\-show\-config"
+show CVC4 static configuration
+.IP "\-\-strict\-parsing"
+be less tolerant of non\-conforming inputs [*]
+.IP "\-\-dump=MODE"
+dump preprocessed assertions, etc., see \-\-dump=help
+.IP "\-\-dump\-to=FILE"
+all dumping goes to FILE (instead of stdout)
+.IP "\-\-produce\-models | \-m"
+support the get\-value and get\-model commands [*]
+.IP "\-\-produce\-assertions"
+keep an assertions list (enables get\-assertions command) [*]
+.IP "\-\-incremental | \-i"
+enable incremental solving [*]
+.IP "\-\-tlimit=MS"
+enable time limiting (give milliseconds)
+.IP "\-\-tlimit\-per=MS"
+enable time limiting per query (give milliseconds)
+.IP "\-\-rlimit=N"
+enable resource limiting (currently, roughly the number of SAT conflicts)
+.IP "\-\-rlimit\-per=N"
+enable resource limiting per query
+.IP "\-\-hard\-limit"
+the resource limit is hard potentially leaving the smtEngine in an unsafe state (should be destroyed and rebuild after resourcing out) [*]
+.IP "\-\-cpu\-time"
+measures CPU time if set to true and wall time if false (default false) [*]
+
+
+.SH ARITHMETIC THEORY OPTIONS
+
+.IP "\-\-unate\-lemmas=MODE"
+determines which lemmas to add before solving (default is 'all', see \-\-unate\-lemmas=help)
+.IP "\-\-arith\-prop=MODE"
+turns on arithmetic propagation (default is 'old', see \-\-arith\-prop=help)
+.IP "\-\-heuristic\-pivots=N"
+the number of times to apply the heuristic pivot rule; if N < 0, this defaults to the number of variables; if this is unset, this is tuned by the logic selection
+.IP "\-\-standard\-effort\-variable\-order\-pivots=N"
+limits the number of pivots in a single invocation of check() at a non\-full effort level using Bland's pivot rule (EXPERTS only)
+.IP "\-\-error\-selection\-rule=RULE"
+change the pivot rule for the basic variable (default is 'min', see \-\-pivot\-rule help)
+.IP "\-\-simplex\-check\-period=N"
+the number of pivots to do in simplex before rechecking for a conflict on all variables
+.IP "\-\-pivot\-threshold=N"
+sets the number of pivots using \-\-pivot\-rule per basic variable per simplex instance before using variable order
+.IP "\-\-prop\-row\-length=N"
+sets the maximum row length to be used in propagation
+.IP "\-\-enable\-dio\-solver"
+turns on Linear Diophantine Equation solver (Griggio, JSAT 2012)
+.IP "\-\-disable\-dio\-solver"
+turns off Linear Diophantine Equation solver (Griggio, JSAT 2012)
+.IP "\-\-enable\-arith\-rewrite\-equalities"
+turns on the preprocessing rewrite turning equalities into a conjunction of inequalities
+.IP "\-\-disable\-arith\-rewrite\-equalities"
+turns off the preprocessing rewrite turning equalities into a conjunction of inequalities
+.IP "\-\-enable\-miplib\-trick"
+turns on the preprocessing step of attempting to infer bounds on miplib problems
+.IP "\-\-disable\-miplib\-trick"
+turns off the preprocessing step of attempting to infer bounds on miplib problems
+.IP "\-\-miplib\-trick\-subs=N"
+do substitution for miplib 'tmp' vars if defined in <= N eliminated vars
+.IP "\-\-cut\-all\-bounded"
+turns on the integer solving step of periodically cutting all integer variables that have both upper and lower bounds [*]
+.IP "\-\-no\-cut\-all\-bounded"
+turns off the integer solving step of periodically cutting all integer variables that have both upper and lower bounds
+.IP "\-\-maxCutsInContext"
+maximum cuts in a given context before signalling a restart
+.IP "\-\-revert\-arith\-models\-on\-unsat"
+revert the arithmetic model to a known safe model on unsat if one is cached [*]
+.IP "\-\-fc\-penalties"
+turns on degenerate pivot penalties [*]
+.IP "\-\-no\-fc\-penalties"
+turns off degenerate pivot penalties
+.IP "\-\-use\-fcsimplex"
+use focusing and converging simplex (FMCAD 2013 submission) [*]
+.IP "\-\-use\-soi"
+use sum of infeasibility simplex (FMCAD 2013 submission) [*]
+.IP "\-\-restrict\-pivots"
+have a pivot cap for simplex at effort levels below fullEffort [*]
+.IP "\-\-collect\-pivot\-stats"
+collect the pivot history [*]
+.IP "\-\-use\-approx"
+attempt to use an approximate solver [*]
+.IP "\-\-approx\-branch\-depth"
+maximum branch depth the approximate solver is allowed to take
+.IP "\-\-dio\-decomps"
+let skolem variables for integer divisibility constraints leak from the dio solver [*]
+.IP "\-\-new\-prop"
+use the new row propagation system [*]
+.IP "\-\-arith\-prop\-clauses"
+rows shorter than this are propagated as clauses
+.IP "\-\-soi\-qe"
+use quick explain to minimize the sum of infeasibility conflicts [*]
+.IP "\-\-rewrite\-divk"
+rewrite division and mod when by a constant into linear terms [*]
+.IP "\-\-se\-solve\-int"
+attempt to use the approximate solve integer method on standard effort [*]
+.IP "\-\-lemmas\-on\-replay\-failure"
+attempt to use external lemmas if approximate solve integer failed [*]
+.IP "\-\-dio\-turns"
+turns in a row dio solver cutting gets
+.IP "\-\-rr\-turns"
+round robin turn
+.IP "\-\-dio\-repeat"
+handle dio solver constraints in mass or one at a time [*]
+.IP "\-\-replay\-early\-close\-depth"
+multiples of the depths to try to close the approx log eagerly
+.IP "\-\-replay\-failure\-penalty"
+number of solve integer attempts to skips after a numeric failure
+.IP "\-\-replay\-num\-err\-penalty"
+number of solve integer attempts to skips after a numeric failure
+.IP "\-\-replay\-reject\-cut"
+maximum complexity of any coefficient while replaying cuts
+.IP "\-\-replay\-lemma\-reject\-cut"
+maximum complexity of any coefficient while outputing replaying cut lemmas
+.IP "\-\-replay\-soi\-major\-threshold"
+threshold for a major tolerance failure by the approximate solver
+.IP "\-\-replay\-soi\-major\-threshold\-pen"
+threshold for a major tolerance failure by the approximate solver
+.IP "\-\-replay\-soi\-minor\-threshold"
+threshold for a minor tolerance failure by the approximate solver
+.IP "\-\-replay\-soi\-minor\-threshold\-pen"
+threshold for a minor tolerance failure by the approximate solver
+.IP "\-\-pp\-assert\-max\-sub\-size"
+threshold for substituting an equality in ppAssert
+.IP "\-\-max\-replay\-tree"
+threshold for attempting to replay a tree
+.IP "\-\-pb\-rewrites"
+apply pseudo boolean rewrites [*]
+.IP "\-\-pb\-rewrite\-threshold"
+threshold of number of pseudoboolean variables to have before doing rewrites
+.IP "\-\-snorm\-infer\-eq"
+infer equalities based on Shostak normalization [*]
+.SH ARRAYS THEORY OPTIONS
+
+.IP "\-\-arrays\-optimize\-linear"
+turn on optimization for linear array terms (see de Moura FMCAD 09 arrays paper) [*]
+.IP "\-\-arrays\-lazy\-rintro1"
+turn on optimization to only perform RIntro1 rule lazily (see Jovanovic/Barrett 2012: Being Careful with Theory Combination) [*]
+.IP "\-\-arrays\-weak\-equiv"
+use algorithm from Christ/Hoenicke (SMT 2014) [*]
+.IP "\-\-arrays\-model\-based"
+turn on model\-based array solver [*]
+.IP "\-\-arrays\-eager\-index"
+turn on eager index splitting for generated array lemmas [*]
+.IP "\-\-arrays\-eager\-lemmas"
+turn on eager lemma generation for arrays [*]
+.IP "\-\-arrays\-config"
+set different array option configurations \- for developers only
+.IP "\-\-arrays\-reduce\-sharing"
+use model information to reduce size of care graph for arrays [*]
+.IP "\-\-arrays\-prop"
+propagation effort for arrays: 0 is none, 1 is some, 2 is full
+.SH BASE OPTIONS
+
+.IP "\-\-stats\-every\-query"
+in incremental mode, print stats after every satisfiability or validity query [*]
+.IP "\-\-stats\-hide\-zeros"
+hide statistics which are zero
+.IP "\-\-stats\-show\-zeros"
+show statistics even when they are zero (default)
+.IP "\-\-parse\-only"
+exit after parsing input [*]
+.IP "\-\-preprocess\-only"
+exit after preprocessing input [*]
+.IP "\-\-trace=TAG | \-t TAG"
+trace something (e.g. \-t pushpop), can repeat
+.IP "\-\-debug=TAG | \-d TAG"
+debug something (e.g. \-d arith), can repeat
+.IP "\-\-print\-success"
+print the "success" output required of SMT\-LIBv2 [*]
+.IP "\-\-smtlib\-strict"
+SMT\-LIBv2 compliance mode (implies other options)
+.SH BITVECTOR THEORY OPTIONS
+
+.IP "\-\-bv\-sat\-solver=MODE"
+choose which sat solver to use, see \-\-bv\-sat\-solver=help (EXPERTS only)
+.IP "\-\-bitblast=MODE"
+choose bitblasting mode, see \-\-bitblast=help
+.IP "\-\-bitblast\-aig"
+bitblast by first converting to AIG (implies \-\-bitblast=eager) [*]
+.IP "\-\-bv\-aig\-simp=COMMAND"
+abc command to run AIG simplifications (implies \-\-bitblast\-aig, default is "balance;drw") (EXPERTS only)
+.IP "\-\-bv\-propagate"
+use bit\-vector propagation in the bit\-blaster [*]
+.IP "\-\-bv\-eq\-solver"
+use the equality engine for the bit\-vector theory (only if \-\-bitblast=lazy) [*]
+.IP "\-\-bv\-eq\-slicer=MODE"
+turn on the slicing equality solver for the bit\-vector theory (only if \-\-bitblast=lazy)
+.IP "\-\-bv\-inequality\-solver"
+turn on the inequality solver for the bit\-vector theory (only if \-\-bitblast=lazy) [*]
+.IP "\-\-bv\-algebraic\-solver"
+turn on the algebraic solver for the bit\-vector theory (only if \-\-bitblast=lazy) [*]
+.IP "\-\-bv\-algebraic\-budget"
+the budget allowed for the algebraic solver in number of SAT conflicts (EXPERTS only)
+.IP "\-\-bv\-to\-bool"
+lift bit\-vectors of size 1 to booleans when possible [*]
+.IP "\-\-bool\-to\-bv"
+convert booleans to bit\-vectors of size 1 when possible [*]
+.IP "\-\-bv\-div\-zero\-const"
+always return \-1 on division by zero [*]
+.IP "\-\-bv\-extract\-arith"
+enable rewrite pushing extract [i:0] over arithmetic operations (can blow up) (EXPERTS only) [*]
+.IP "\-\-bv\-abstraction"
+mcm benchmark abstraction (EXPERTS only) [*]
+.IP "\-\-bv\-skolemize"
+skolemize arguments for bv abstraction (only does something if \-\-bv\-abstraction is on) (EXPERTS only) [*]
+.IP "\-\-bv\-num\-func=NUM"
+number of function symbols in conflicts that are generalized (EXPERTS only)
+.IP "\-\-bv\-eager\-explanations"
+compute bit\-blasting propagation explanations eagerly (EXPERTS only) [*]
+.IP "\-\-bv\-quick\-xplain"
+minimize bv conflicts using the QuickXplain algorithm (EXPERTS only) [*]
+.IP "\-\-bv\-intro\-pow2"
+introduce bitvector powers of two as a preprocessing pass (EXPERTS only) [*]
+.IP "\-\-bv\-lazy\-rewrite\-extf"
+lazily rewrite extended functions like bv2nat and int2bv [*]
+
+.IP "\-\-bv\-lazy\-reduce\-extf"
+reduce extended functions like bv2nat and int2bv at last call instead of full effort [*]
+
+.IP "\-\-bv\-alg\-extf"
+algebraic inferences for extended functions [*]
+
+.SH DATATYPES THEORY OPTIONS
+
+.IP "\-\-dt\-rewrite\-error\-sel"
+rewrite incorrectly applied selectors to arbitrary ground term (EXPERTS only) [*]
+.IP "\-\-dt\-force\-assignment"
+force the datatypes solver to give specific values to all datatypes terms before answering sat [*]
+.IP "\-\-dt\-binary\-split"
+do binary splits for datatype constructor types [*]
+.IP "\-\-dt\-ref\-sk\-intro"
+introduce reference skolems for shorter explanations [*]
+.IP "\-\-dt\-use\-testers"
+do not preprocess away tester predicates [*]
+.IP "\-\-cdt\-bisimilar"
+do bisimilarity check for co\-datatypes [*]
+.IP "\-\-dt\-cyclic"
+do cyclicity check for datatypes [*]
+.IP "\-\-dt\-infer\-as\-lemmas"
+always send lemmas out instead of making internal inferences [*]
+.IP "\-\-dt\-blast\-splits"
+when applicable, blast splitting lemmas for all variables at once [*]
+
+.SH DECISION HEURISTICS OPTIONS
+
+.IP "\-\-decision=MODE"
+choose decision mode, see \-\-decision=help
+.IP "\-\-decision\-threshold=N"
+ignore all nodes greater than threshold in first attempt to pick decision (EXPERTS only)
+.IP "\-\-decision\-use\-weight"
+use the weight nodes (locally, by looking at children) to direct recursive search (EXPERTS only) [*]
+.IP "\-\-decision\-random\-weight=N"
+assign random weights to nodes between 0 and N\-1 (0: disable) (EXPERTS only)
+.IP "\-\-decision\-weight\-internal=HOW"
+computer weights of internal nodes using children: off, max, sum, usr1 (meaning evolving) (EXPERTS only)
+.SH EXPRESSION PACKAGE OPTIONS
+
+.IP "\-\-default\-expr\-depth=N"
+print exprs to depth N (0 == default, \-1 == no limit)
+.IP "\-\-default\-dag\-thresh=N"
+dagify common subexprs appearing > N times (1 == default, 0 == don't dagify)
+.IP "\-\-print\-expr\-types"
+print types with variables when printing exprs [*]
+.IP "\-\-eager\-type\-checking"
+type check expressions immediately on creation (debug builds only)
+.IP "\-\-lazy\-type\-checking"
+type check expressions only when necessary (default)
+.SH IDL OPTIONS
+
+.IP "\-\-enable\-idl\-rewrite\-equalities"
+enable rewriting equalities into two inequalities in IDL solver (default is disabled)
+.IP "\-\-disable\-idl\-rewrite\-equalities"
+disable rewriting equalities into two inequalities in IDL solver (default is disabled)
+.SH DRIVER OPTIONS
+
+.IP "\-\-show\-debug\-tags"
+show all available tags for debugging
+.IP "\-\-show\-trace\-tags"
+show all available tags for tracing
+.IP "\-\-early\-exit"
+do not run destructors at exit; default on except in debug builds (EXPERTS only) [*]
+.IP "\-\-threads=N"
+Total number of threads for portfolio
+.IP "\-\-threadN=string"
+configures portfolio thread N (0..#threads\-1)
+.IP "\-\-thread\-stack=N"
+stack size for worker threads in MB (0 means use Boost/thread lib default)
+.IP "\-\-filter\-lemma\-length=N"
+don't share (among portfolio threads) lemmas strictly longer than N
+.IP "\-\-fallback\-sequential"
+Switch to sequential mode (instead of printing an error) if it can't be solved in portfolio mode [*]
+.IP "\-\-incremental\-parallel"
+Use parallel solver even in incremental mode (may print 'unknown's at times) [*]
+.IP "\-\-interactive"
+force interactive/non\-interactive mode [*]
+.IP "\-\-continued\-execution"
+continue executing commands, even on error
+.IP "\-\-segv\-spin"
+spin on segfault/other crash waiting for gdb [*]
+.IP "\-\-tear\-down\-incremental=N"
+implement PUSH/POP/multi\-query by destroying and recreating SmtEngine every N queries (EXPERTS only)
+.IP "\-\-wait\-to\-join"
+wait for other threads to join before quitting (EXPERTS only) [*]
+.SH PARSER OPTIONS
+
+.IP "\-\-mmap"
+memory map file input [*]
+.SH PRINTING OPTIONS
+
+.IP "\-\-model\-format=MODE"
+print format mode for models, see \-\-model\-format=help
+.IP "\-\-inst\-format=MODE"
+print format mode for instantiations, see \-\-inst\-format=help
+.SH PROOF OPTIONS
+
+.IP "\-\-lfsc\-letification"
+turns on global letification in LFSC proofs [*]
+.IP "\-\-aggressive\-core\-min"
+turns on aggressive unsat core minimization (experimental) [*]
+.IP "\-\-fewer\-preprocessing\-holes"
+try to eliminate preprocessing holes in proofs [*]
+.IP "\-\-allow\-empty\-dependencies"
+if unable to track the dependencies of a rewritten/preprocessed assertion, fail silently [*]
+.SH SAT LAYER OPTIONS
+
+.IP "\-\-random\-freq=P"
+sets the frequency of random decisions in the sat solver (P=0.0 by default)
+.IP "\-\-random\-seed=S"
+sets the random seed for the sat solver
+.IP "\-\-restart\-int\-base=N"
+sets the base restart interval for the sat solver (N=25 by default)
+.IP "\-\-restart\-int\-inc=F"
+sets the restart interval increase factor for the sat solver (F=3.0 by default)
+.IP "\-\-refine\-conflicts"
+refine theory conflict clauses (default false) [*]
+.IP "\-\-minisat\-elimination"
+use Minisat elimination [*]
+.IP "\-\-minisat\-dump\-dimacs"
+instead of solving minisat dumps the asserted clauses in Dimacs format [*]
+
+.SH QUANTIFIERS OPTIONS
+
+.IP "\-\-miniscope\-quant"
+miniscope quantifiers [*]
+.IP "\-\-miniscope\-quant\-fv"
+miniscope quantifiers for ground subformulas [*]
+.IP "\-\-quant\-split"
+apply splitting to quantified formulas based on variable disjoint disjuncts [*]
+.IP "\-\-prenex\-quant=MODE"
+prenex mode for quantified formulas
+.IP "\-\-prenex\-quant\-user"
+prenex quantified formulas with user patterns [*]
+.IP "\-\-var\-elim\-quant"
+enable simple variable elimination for quantified formulas [*]
+.IP "\-\-var\-ineq\-elim\-quant"
+enable variable elimination based on infinite projection of unbound arithmetic variables [*]
+.IP "\-\-dt\-var\-exp\-quant"
+expand datatype variables bound to one constructor in quantifiers [*]
+.IP "\-\-ite\-lift\-quant=MODE"
+ite lifting mode for quantified formulas
+.IP "\-\-cond\-var\-split\-quant"
+split quantified formulas that lead to variable eliminations [*]
+.IP "\-\-cond\-var\-split\-agg\-quant"
+aggressive split quantified formulas that lead to variable eliminations [*]
+.IP "\-\-ite\-dtt\-split\-quant"
+split ites with dt testers as conditions [*]
+.IP "\-\-pre\-skolem\-quant"
+apply skolemization eagerly to bodies of quantified formulas [*]
+.IP "\-\-pre\-skolem\-quant\-nested"
+apply skolemization to nested quantified formulas [*]
+.IP "\-\-pre\-skolem\-quant\-agg"
+apply skolemization to quantified formulas aggressively [*]
+.IP "\-\-ag\-miniscope\-quant"
+perform aggressive miniscoping for quantifiers [*]
+.IP "\-\-elim\-taut\-quant"
+eliminate tautological disjuncts of quantified formulas [*]
+.IP "\-\-elim\-ext\-arith\-quant"
+eliminate extended arithmetic symbols in quantified formulas [*]
+.IP "\-\-cond\-rewrite\-quant"
+conditional rewriting of quantified formulas [*]
+
+
+.IP "\-\-e\-matching"
+whether to do heuristic E\-matching [*]
+.IP "\-\-term\-db\-mode"
+which ground terms to consider for instantiation
+.IP "\-\-register\-quant\-body\-terms"
+consider ground terms within bodies of quantified formulas for matching [*]
+.IP "\-\-infer\-arith\-trigger\-eq"
+infer equalities for trigger terms based on solving arithmetic equalities [*]
+.IP "\-\-infer\-arith\-trigger\-eq\-exp"
+record explanations for inferArithTriggerEq [*]
+
+.IP "\-\-strict\-triggers"
+only instantiate quantifiers with user patterns based on triggers [*]
+.IP "\-\-relevant\-triggers"
+prefer triggers that are more relevant based on SInE style analysis [*]
+.IP "\-\-relational\-triggers"
+choose relational triggers such as x = f(y), x >= f(y) [*]
+.IP "\-\-purify\-triggers"
+purify triggers, e.g. f( x+1 ) becomes f( y ), x mapsto y\-1 [*]
+.IP "\-\-purify\-dt\-triggers"
+purify dt triggers, match all constructors of correct form instead of selectors [*]
+.IP "\-\-pure\-th\-triggers"
+use pure theory terms as single triggers [*]
+.IP "\-\-partial\-triggers"
+use triggers that do not contain all free variables [*]
+.IP "\-\-multi\-trigger\-when\-single"
+select multi triggers when single triggers exist [*]
+.IP "\-\-multi\-trigger\-priority"
+only try multi triggers if single triggers give no instantiations [*]
+.IP "\-\-trigger\-sel"
+selection mode for triggers
+.IP "\-\-trigger\-active\-sel"
+selection mode to activate triggers
+.IP "\-\-user\-pat=MODE"
+policy for handling user\-provided patterns for quantifier instantiation
+.IP "\-\-increment\-triggers"
+generate additional triggers as needed during search [*]
+
+.IP "\-\-inst\-when=MODE"
+when to apply instantiation
+.IP "\-\-inst\-when\-strict\-interleave"
+ensure theory combination and standard quantifier effort strategies take turns  [*]
+.IP "\-\-inst\-when\-phase=N"
+instantiation rounds quantifiers takes (>=1) before allowing theory combination to happen
+.IP "\-\-inst\-when\-tc\-first"
+allow theory combination to happen once initially, before quantifier strategies are run [*]
+
+.IP "\-\-inst\-max\-level=N"
+maximum inst level of terms used to instantiate quantified formulas with (\-1 == no limit, default)
+.IP "\-\-inst\-level\-input\-only"
+only input terms are assigned instantiation level zero [*]
+.IP "\-\-quant\-rep\-mode=MODE"
+selection mode for representatives in quantifiers engine
+.IP "\-\-inst\-rlv\-cond"
+add relevancy conditions for instantiations [*]
+.IP "\-\-full\-saturate\-quant"
+when all other quantifier instantiation strategies fail, instantiate with ground terms from relevant domain, then arbitrary ground terms before answering unknown [*]
+.IP "\-\-full\-saturate\-quant\-rd"
+whether to use relevant domain first for full saturation instantiation strategy [*]
+.IP "\-\-fs\-inst"
+interleave full saturate instantiation with other techniques [*]
+.IP "\-\-literal\-matching=MODE"
+choose literal matching mode
+
+.IP "\-\-finite\-model\-find"
+use finite model finding heuristic for quantifier instantiation [*]
+.IP "\-\-quant\-fun\-wd"
+assume that function defined by quantifiers are well defined [*]
+.IP "\-\-fmf\-fun"
+find models for recursively defined functions, assumes functions are admissible [*]
+.IP "\-\-fmf\-fun\-rlv"
+find models for recursively defined functions, assumes functions are admissible, allows empty type when function is irrelevant [*]
+.IP "\-\-fmf\-empty\-sorts"
+allow finite model finding to assume sorts that do not occur in ground assertions are empty [*]
+
+.IP "\-\-mbqi=MODE"
+choose mode for model\-based quantifier instantiation
+.IP "\-\-mbqi\-one\-inst\-per\-round"
+only add one instantiation per quantifier per round for mbqi [*]
+.IP "\-\-mbqi\-one\-quant\-per\-round"
+only add instantiations for one quantifier per round for mbqi [*]
+.IP "\-\-fmf\-inst\-engine"
+use instantiation engine in conjunction with finite model finding [*]
+.IP "\-\-fmf\-inst\-gen"
+enable Inst\-Gen instantiation techniques for finite model finding  [*]
+.IP "\-\-fmf\-inst\-gen\-one\-quant\-per\-round"
+only perform Inst\-Gen instantiation techniques on one quantifier per round [*]
+.IP "\-\-fmf\-fresh\-dc"
+use fresh distinguished representative when applying Inst\-Gen techniques [*]
+.IP "\-\-fmf\-fmc\-simple"
+simple models in full model check for finite model finding [*]
+.IP "\-\-fmf\-bound\-int"
+finite model finding on bounded integer quantification [*]
+.IP "\-\-fmf\-bound"
+finite model finding on bounded quantification [*]
+.IP "\-\-fmf\-bound\-lazy"
+enforce bounds for bounded quantification lazily via use of proxy variables [*]
+.IP "\-\-fmf\-bound\-min\-mode=MODE"
+mode for which types of bounds to minimize via first decision heuristics
+
+
+.IP "\-\-quant\-cf"
+enable conflict find mechanism for quantifiers [*]
+.IP "\-\-quant\-cf\-mode=MODE"
+what effort to apply conflict find mechanism
+.IP "\-\-quant\-cf\-when=MODE"
+when to invoke conflict find mechanism for quantifiers
+.IP "\-\-qcf\-tconstraint"
+enable entailment checks for t\-constraints in qcf algorithm [*]
+.IP "\-\-qcf\-all\-conflict"
+add all available conflicting instances during conflict\-based instantiation [*]
+.IP "\-\-qcf\-nested\-conflict"
+consider conflicts for nested quantifiers [*]
+.IP "\-\-qcf\-vo\-exp"
+qcf experimental variable ordering [*]
+.IP "\-\-inst\-no\-entail"
+do not consider instances of quantified formulas that are currently entailed [*]
+.IP "\-\-inst\-prop"
+internal propagation for instantiations for selecting relevant instances [*]
+
+.IP "\-\-qcf\-eager\-test"
+optimization, test qcf instances eagerly [*]
+.IP "\-\-qcf\-eager\-check\-rd"
+optimization, eagerly check relevant domain of matched position [*]
+.IP "\-\-qcf\-skip\-rd"
+optimization, skip instances based on possibly irrelevant portions of quantified formulas [*]
+
+
+.IP "\-\-rewrite\-rules"
+use rewrite rules module [*]
+.IP "\-\-rr\-one\-inst\-per\-round"
+add one instance of rewrite rule per round [*]
+
+
+.IP "\-\-quant\-ind"
+use all available techniques for inductive reasoning [*]
+.IP "\-\-dt\-stc\-ind"
+apply strengthening for existential quantification over datatypes based on structural induction [*]
+.IP "\-\-int\-wf\-ind"
+apply strengthening for integers based on well\-founded induction [*]
+.IP "\-\-conjecture\-gen"
+generate candidate conjectures for inductive proofs [*]
+
+.IP "\-\-conjecture\-gen\-per\-round=N"
+number of conjectures to generate per instantiation round 
+.IP "\-\-conjecture\-no\-filter"
+do not filter conjectures [*]
+.IP "\-\-conjecture\-filter\-active\-terms"
+filter based on active terms [*]
+.IP "\-\-conjecture\-filter\-canonical"
+filter based on canonicity [*]
+.IP "\-\-conjecture\-filter\-model"
+filter based on model [*]
+.IP "\-\-conjecture\-gen\-gt\-enum=N"
+number of ground terms to generate for model filtering
+.IP "\-\-conjecture\-gen\-uee\-intro"
+more aggressive merging for universal equality engine, introduces terms [*]
+.IP "\-\-conjecture\-gen\-max\-depth=N"
+maximum depth of terms to consider for conjectures
+ 
+.IP "\-\-cegqi"
+ counterexample\-guided quantifier instantiation [*]
+.IP "\-\-cegqi\-fair=MODE"
+ if and how to apply fairness for cegqi
+.IP "\-\-cegqi\-si=MODE"
+ mode for processing single invocation synthesis conjectures
+.IP "\-\-cegqi\-si\-partial"
+ combined techniques for synthesis conjectures that are partially single invocation  [*]
+.IP "\-\-cegqi\-si\-reconstruct"
+ reconstruct solutions for single invocation conjectures in original grammar [*]
+.IP "\-\-cegqi\-si\-sol\-min\-core"
+ minimize solutions for single invocation conjectures based on unsat core [*]
+.IP "\-\-cegqi\-si\-sol\-min\-inst"
+ minimize individual instantiations for single invocation conjectures based on unsat core [*]
+.IP "\-\-cegqi\-si\-reconstruct\-const"
+ include constants when reconstruct solutions for single invocation conjectures in original grammar [*]
+.IP "\-\-cegqi\-si\-abort"
+ abort if synthesis conjecture is not single invocation [*]
+ 
+.IP "\-\-sygus\-nf"
+ only search for sygus builtin terms that are in normal form [*]
+.IP "\-\-sygus\-nf\-arg"
+ account for relationship between arguments of operations in sygus normal form [*]
+.IP "\-\-sygus\-nf\-sym"
+ narrow sygus search space based on global state of current candidate program [*]
+.IP "\-\-sygus\-nf\-sym\-gen"
+ generalize lemmas for global search space narrowing [*]
+.IP "\-\-sygus\-nf\-sym\-arg"
+ generalize based on arguments in global search space narrowing [*]
+.IP "\-\-sygus\-nf\-sym\-content"
+ generalize based on content in global search space narrowing [*]
+ 
+.IP "\-\-sygus\-inv\-templ=MODE"
+ template mode for sygus invariant synthesis
+.IP "\-\-sygus\-direct\-eval"
+ direct unfolding of evaluation functions [*]
+ 
+.IP "\-\-cbqi"
+turns on counterexample\-based quantifier instantiation [*]
+.IP "\-\-cbqi\-recurse"
+turns on recursive counterexample\-based quantifier instantiation [*]
+.IP "\-\-cbqi\-sat"
+answer sat when quantifiers are asserted with counterexample\-based quantifier instantiation [*]
+.IP "\-\-cbqi\-model"
+guide instantiations by model values for counterexample\-based quantifier instantiation [*]
+.IP "\-\-cbqi\-all"
+apply counterexample\-based instantiation to all quantified formulas [*]
+.IP "\-\-cbqi\-use\-inf\-int"
+use integer infinity for vts in counterexample\-based quantifier instantiation [*]
+.IP "\-\-cbqi\-use\-inf\-real"
+use real infinity for vts in counterexample\-based quantifier instantiation [*]
+.IP "\-\-cbqi\-prereg\-inst"
+ preregister ground instantiations in counterexample\-based quantifier instantiation [*]
+.IP "\-\-cbqi\-min\-bounds"
+ use minimally constrained lower/upper bound for counterexample\-based quantifier instantiation [*]
+.IP "\-\-cbqi\-round\-up\-lia"
+ round up integer lower bounds in substitutions for counterexample\-based quantifier instantiation [*]
+.IP "\-\-cbqi\-midpoint"
+ choose substitutions based on midpoints of lower and upper bounds for counterexample\-based quantifier instantiation [*]
+.IP "\-\-cbqi\-nopt"
+ non\-optimal bounds for counterexample\-based quantifier instantiation [*]
+.IP "\-\-cbqi\-lit\-dep"
+ dependency lemmas for quantifier alternation in counterexample\-based quantifier instantiation [*]
+.IP "\-\-cbqi\-innermost"
+only process innermost quantified formulas in counterexample\-based quantifier instantiation [*]
+.IP "\-\-cbqi\-nested\-qe"
+process nested quantified formulas with quantifier elimination in counterexample\-based quantifier instantiation [*]
+
+.IP "\-\-quant\-epr"
+infer whether in effectively propositional fragment, use for cbqi [*]
+.IP "\-\-quant\-epr\-match"
+use matching heuristics for EPR instantiation [*]
+
+.IP "\-\-local\-t\-ext"
+ do instantiation based on local theory extensions [*]
+.IP "\-\-lte\-partial\-inst"
+ partially instantiate local theory quantifiers [*]
+.IP "\-\-lte\-restrict\-inst\-closure"
+ treat arguments of inst closure as restricted terms for instantiation [*]
+
+.IP "\-\-quant\-alpha\-equiv"
+ infer alpha equivalence between quantified formulas [*]
+.IP "\-\-macros\-quant"
+perform quantifiers macro expansion [*]
+.IP "\-\-macros\-quant\-mode=MODE"
+mode for quantifiers macro expansion
+.IP "\-\-quant\-dsplit\-mode=MODE"
+mode for dynamic quantifiers splitting
+.IP "\-\-quant\-anti\-skolem"
+perform anti\-skolemization for quantified formulas [*]
+
+.IP "\-\-quant\-ee"
+ maintain congrunce closure over universal equalities [*]
+
+.IP "\-\-track\-inst\-lemmas"
+ track instantiation lemmas (for proofs, unsat cores, qe and synthesis minimization) [*]
+
+.SH SEP OPTIONS
+
+.IP "\-\-sep\-check\-neg"
+check negated spatial assertions [*]
+.IP "\-\-sep\-exp"
+experimental flag for sep [*]
+.IP "\-\-sep\-min\-refine"
+only add refinement lemmas for minimal (innermost) assertions [*]
+.IP "\-\-sep\-deq\-c"
+assume cardinality elements are distinct [*]
+.IP "\-\-sep\-pre\-skolem\-emp"
+eliminate emp constraint at preprocess time [*]
+
+.IP "\-\-sep\-child\-refine"
+child\-specific refinements of negated star, positive wand [*]
+
+.SH SETS OPTIONS
+
+.IP "\-\-sets\-proxy\-lemmas"
+introduce proxy variables eagerly to shorten lemmas [*]
+.IP "\-\-sets\-infer\-as\-lemmas"
+send inferences as lemmas [*]
+
+.IP "\-\-sets\-rel\-eager"
+standard effort checks for relations [*]
+
+.SH SMT LAYER OPTIONS
+
+.IP "\-\-force\-logic=LOGIC"
+set the logic, and override all further user attempts to change it (EXPERTS only)
+.IP "\-\-simplification=MODE"
+choose simplification mode, see \-\-simplification=help
+.IP "\-\-no\-simplification"
+turn off all simplification (same as \-\-simplification=none)
+.IP "\-\-static\-learning"
+use static learning (on by default) [*]
+.IP "\-\-check\-models"
+after SAT/INVALID/UNKNOWN, check that the generated model satisfies user assertions [*]
+.IP "\-\-dump\-models"
+output models after every SAT/INVALID/UNKNOWN response [*]
+.IP "\-\-omit\-dont\-cares"
+When producing a model, omit variables whose value does not matter [*]
+.IP "\-\-proof"
+turn on proof generation [*]
+.IP "\-\-check\-proofs"
+after UNSAT/VALID, machine\-check the generated proof [*]
+.IP "\-\-dump\-proofs"
+output proofs after every UNSAT/VALID response [*]
+.IP "\-\-dump\-instantiations"
+output instantiations of quantified formulas after every UNSAT/VALID response [*]
+.IP "\-\-dump\-synth"
+output solution for synthesis conjectures after every UNSAT/VALID response [*]
+.IP "\-\-produce\-unsat\-cores"
+turn on unsat core generation [*]
+.IP "\-\-check\-unsat\-cores"
+after UNSAT/VALID, produce and check an unsat core (expensive) [*]
+.IP "\-\-dump\-unsat\-cores"
+output unsat cores after every UNSAT/VALID response [*]
+.IP "\-\-produce\-assignments"
+support the get\-assignment command [*]
+.IP "\-\-ite\-simp"
+turn on ite simplification (Kim (and Somenzi) et al., SAT 2009) [*]
+.IP "\-\-on\-repeat\-ite\-simp"
+do the ite simplification pass again if repeating simplification [*]
+.IP "\-\-simp\-with\-care"
+enables simplifyWithCare in ite simplificiation [*]
+.IP "\-\-simp\-ite\-compress"
+enables compressing ites after ite simplification [*]
+.IP "\-\-unconstrained\-simp"
+turn on unconstrained simplification (see Bruttomesso/Brummayer PhD thesis) [*]
+.IP "\-\-repeat\-simp"
+make multiple passes with nonclausal simplifier [*]
+.IP "\-\-simp\-ite\-hunt\-zombies"
+post ite compression enables zombie removal while the number of nodes is above this threshold
+.IP "\-\-sort\-inference"
+calculate sort inference of input problem, convert the input based on monotonic sorts [*]
+.IP "\-\-abstract\-values"
+in models, output arrays (and in future, maybe others) using abstract values, as required by the SMT\-LIB standard [*]
+.IP "\-\-model\-u\-dt\-enum"
+in models, output uninterpreted sorts as datatype enumerations [*]
+.IP "\-\-rewrite\-step"
+ammount of resources spent for each rewrite step (EXPERTS only)
+.IP "\-\-theory\-check\-step"
+ammount of resources spent for each theory check call (EXPERTS only)
+.IP "\-\-decision\-step"
+ammount of getNext decision calls in the decision engine (EXPERTS only)
+
+.IP "\-\-bitblast\-step"
+ammount of resources spent for each bitblast step (EXPERTS only)
+
+.IP "\-\-parse\-step"
+ammount of resources spent for each command/expression parsing (EXPERTS only)
+
+.IP "\-\-lemma\-step"
+ammount of resources spent when adding lemmas (EXPERTS only)
+
+.IP "\-\-restart\-step"
+ammount of resources spent for each theory restart (EXPERTS only)
+
+.IP "\-\-cnf\-step"
+ammount of resources spent for each call to cnf conversion (EXPERTS only)
+
+.IP "\-\-preprocess\-step"
+ammount of resources spent for each preprocessing step in SmtEngine (EXPERTS only)
+
+.IP "\-\-quantifier\-step"
+ammount of resources spent for quantifier instantiations (EXPERTS only)
+
+.IP "\-\-sat\-conflict\-step"
+ammount of resources spent for each sat conflict (main sat solver) (EXPERTS only)
+
+.IP "\-\-bv\-sat\-conflict\-step"
+ammount of resources spent for each sat conflict (bitvectors) (EXPERTS only)
+
+
+.IP "\-\-rewrite\-apply\-to\-const"
+eliminate function applications, rewriting e.g. f(5) to a new symbol f_5 (EXPERTS only) [*]
+.IP "\-\-force\-no\-limit\-cpu\-while\-dump"
+Force no CPU limit when dumping models and proofs [*]
+.SH STRINGS THEORY OPTIONS
+
+.IP "\-\-strings\-exp"
+experimental features in the theory of strings [*]
+.IP "\-\-strings\-lb=N"
+the strategy of LB rule application: 0\-lazy, 1\-eager, 2\-no
+.IP "\-\-strings\-std\-ascii"
+the alphabet contains only characters from the standard ASCII or the extended one [*]
+.IP "\-\-strings\-fmf"
+the finite model finding used by the theory of strings [*]
+
+.IP "\-\-strings\-eager"
+strings eager check [*]
+.IP "\-\-strings\-eit"
+the eager intersection used by the theory of strings [*]
+.IP "\-\-strings\-opt1"
+internal option1 for strings: normal form [*]
+.IP "\-\-strings\-opt2"
+internal option2 for strings: constant regexp splitting [*]
+.IP "\-\-strings\-inm"
+internal for strings: ignore negative membership constraints (fragment checking is needed, left to users for now) [*]
+.IP "\-\-strings\-lazy\-pp"
+perform string preprocessing lazily [*]
+.IP "\-\-strings\-len\-geqz"
+strings length greater than zero lemmas [*]
+.IP "\-\-strings\-len\-norm"
+strings length normalization lemma [*]
+.IP "\-\-strings\-sp\-emp"
+strings split on empty string [*]
+.IP "\-\-strings\-infer\-sym"
+strings split on empty string [*]
+.IP "\-\-strings\-eager\-len"
+strings eager length lemmas [*]
+.IP "\-\-strings\-check\-entail\-len"
+check entailment between length terms to reduce splitting [*]
+.IP "\-\-strings\-process\-loop"
+reduce looping word equations to regular expressions [*]
+.IP "\-\-strings\-abort\-loop"
+abort when a looping word equation is encountered [*]
+.IP "\-\-strings\-infer\-as\-lemmas"
+always send lemmas out instead of making internal inferences [*]
+.IP "\-\-strings\-rexplain\-lemmas"
+regression explanations for string lemmas [*]
+.IP "\-\-strings\-min\-prefix\-explain"
+minimize explanations for prefix of normal forms in strings [*]
+.IP "\-\-strings\-guess\-model"
+use model guessing to avoid string extended function reductions [*]
+.IP "\-\-strings\-uf\-reduct"
+use uninterpreted functions when applying extended function reductions [*]
+.IP "\-\-strings\-binary\-csp"
+use binary search when splitting strings [*]
+.IP "\-\-strings\-lprop\-csp"
+do length propagation based on constant splits [*]
+.SH THEORY LAYER OPTIONS
+
+.IP "\-\-theoryof\-mode=MODE"
+mode for Theory::theoryof() (EXPERTS only)
+.IP "\-\-use\-theory=NAME"
+use alternate theory implementation NAME (\-\-use\-theory=help for a list). This option may be repeated or a comma separated list.
+.SH UNINTERPRETED FUNCTIONS THEORY OPTIONS
+
+.IP "\-\-symmetry\-breaker"
+use UF symmetry breaker (Deharbe et al., CADE 2011) [*]
+.IP "\-\-condense\-function\-values"
+condense models for functions rather than explicitly representing them [*]
+.IP "\-\-uf\-ss\-regions"
+disable region\-based method for discovering cliques and splits in uf strong solver [*]
+.IP "\-\-uf\-ss\-eager\-split"
+add splits eagerly for uf strong solver [*]
+.IP "\-\-uf\-ss\-totality"
+always use totality axioms for enforcing cardinality constraints [*]
+.IP "\-\-uf\-ss\-totality\-limited=N"
+apply totality axioms, but only up to cardinality N (\-1 == do not apply totality axioms, default)
+.IP "\-\-uf\-ss\-totality\-sym\-break"
+apply symmetry breaking for totality axioms [*]
+.IP "\-\-uf\-ss\-abort\-card=N"
+tells the uf strong solver a cardinality to abort at (\-1 == no limit, default)
+.IP "\-\-uf\-ss\-explained\-cliques"
+use explained clique lemmas for uf strong solver [*]
+.IP "\-\-uf\-ss\-simple\-cliques"
+always use simple clique lemmas for uf strong solver [*]
+.IP "\-\-uf\-ss\-deq\-prop"
+eagerly propagate disequalities for uf strong solver [*]
+.IP "\-\-uf\-ss=MODE"
+mode of operation for uf strong solver.
+.IP "\-\-uf\-ss\-clique\-splits"
+use cliques instead of splitting on demand to shrink model [*]
+.IP "\-\-uf\-ss\-sym\-break"
+finite model finding symmetry breaking techniques [*]
+.IP "\-\-uf\-ss\-fair"
+use fair strategy for finite model finding multiple sorts [*]
+.IP "\-\-uf\-ss\-fair\-monotone"
+group monotone sorts when enforcing fairness for finite model finding [*]
+
+.IP "Each option marked with [*] has a \-\-no\-OPTIONNAME variant, which reverses the sense of the option."
+
+.\".SH FILES
+.\".SH ENVIRONMENT
+.SH DIAGNOSTICS
+.B CVC4
+reports all syntactic and semantic errors on standard error.
+.SH HISTORY
+The
+.B CVC4
+effort is the culmination of fifteen years of theorem proving
+research, starting with the
+.I Stanford Validity Checker (SVC)
+in 1996.
+
+SVC's successor, the
+.I Cooperating Validity Checker (CVC),
+had a more optimized internal design, produced proofs, used the
+.I Chaff
+SAT solver, and featured a number of usability
+enhancements.  Its name comes from the cooperative nature of
+decision procedures in Nelson-Oppen theory combination,
+which share amongst each other equalities between shared terms.
+
+CVC Lite, first made available in 2003, was a rewrite of CVC
+that attempted to make CVC
+more flexible (hence the \(lqlite\(rq) while extending the feature set:
+CVCLite supported quantifiers where its predecessors did not.
+CVC3 was a major overhaul of portions of CVC Lite: it added
+better decision procedure implementations, added support for using
+MiniSat in the core, and had generally better performance.
+
+CVC4 is the new version, the fifth generation of this validity
+checker line that is now celebrating fifteen years of heritage.
+It represents a complete re-evaluation of
+the core architecture to be both performant and to serve as a cutting-edge research vehicle
+for the next several years.  Rather than taking CVC3
+and redesigning problem parts, we've taken a clean-room approach,
+starting from scratch.  Before using any designs from CVC3, we have
+thoroughly scrutinized, vetted, and updated them.  Many parts of CVC4
+bear only a superficial resemblance, if any, to their correspondent in CVC3.
+
+However, CVC4 is fundamentally similar to CVC3 and many other
+modern SMT solvers: it is a DPLL(
+.I T
+) solver,
+with a SAT solver at its core and a delegation path to different decision
+procedure implementations, each in charge of solving formulas in some
+background theory.
+
+The re-evaluation and ground-up rewrite was necessitated, we felt, by
+the performance characteristics of CVC3.  CVC3 has many useful
+features, but some core aspects of the design led to high memory use, and
+the use of heavyweight computation (where more nimble engineering
+approaches could suffice) makes CVC3 a much slower prover than other tools.
+As these designs are central to CVC3, a new version was preferable to a
+selective re-engineering, which would have ballooned in short order.
+.SH VERSION
+This manual page refers to
+.B CVC4
+version 1.5-prerelease.
+.SH BUGS
+A Bugzilla for the CVC4 project is maintained at
+.BR http://cvc4.cs.nyu.edu/bugzilla3/ .
+.SH AUTHORS
+.B CVC4
+is developed by a team of researchers at New York University
+and the University of Iowa.
+See the AUTHORS file in the distribution for a full list of
+contributors.
+.SH "SEE ALSO"
+.BR libcvc4 (3),
+.BR libcvc4parser (3),
+.BR libcvc4compat (3)
+
+Additionally, the CVC4 wiki contains useful information about the
+design and internals of CVC4.  It is maintained at
+.BR http://cvc4.cs.nyu.edu/wiki/ .
diff --git a/doc/cvc4.1_template.in b/doc/cvc4.1_template.in
new file mode 100644
index 0000000..e08a96b
--- /dev/null
+++ b/doc/cvc4.1_template.in
@@ -0,0 +1,132 @@
+.\" Process this file with
+.\" groff -man -Tascii cvc4.1
+.\"
+.TH CVC4 1 "@MAN_DATE@" "CVC4 release @VERSION@" "User Manuals"
+.SH NAME
+cvc4, pcvc4 \- an automated theorem prover
+.SH SYNOPSIS
+.B cvc4 [
+.I options
+.B ] [
+.I file
+.B ]
+.P
+.B pcvc4 [
+.I options
+.B ] [
+.I file
+.B ]
+.SH DESCRIPTION
+.B cvc4
+is an automated theorem prover for first-order formulas with respect
+to background theories of interest.
+.B pcvc4
+is CVC4's "portfolio" variant, which is capable of running multiple
+CVC4 instances in parallel, configured differently.
+
+With
+.I file
+, commands are read from
+.I file
+and executed.  CVC4 supports the SMT-LIB (versions 1.2 and 2.0) input
+format, as well as its own native \(lqpresentation language\(rq (see
+.BR cvc4 (5)
+), which is similar in many respects to CVC3's presentation language,
+but not identical.
+
+If
+.I file
+is unspecified, standard input is read (and the
+.B CVC4
+presentation language is assumed).  If
+.I file
+is unspecified and
+.B CVC4
+is connected to a terminal, interactive mode is assumed.
+
+.SH COMMON OPTIONS
+
+.IP "Each option marked with [*] has a \-\-no\-OPTIONNAME variant, which reverses the sense of the option."
+
+${common_manpage_documentation}
+
+${remaining_manpage_documentation}
+
+.IP "Each option marked with [*] has a \-\-no\-OPTIONNAME variant, which reverses the sense of the option."
+
+.\".SH FILES
+.\".SH ENVIRONMENT
+.SH DIAGNOSTICS
+.B CVC4
+reports all syntactic and semantic errors on standard error.
+.SH HISTORY
+The
+.B CVC4
+effort is the culmination of fifteen years of theorem proving
+research, starting with the
+.I Stanford Validity Checker (SVC)
+in 1996.
+
+SVC's successor, the
+.I Cooperating Validity Checker (CVC),
+had a more optimized internal design, produced proofs, used the
+.I Chaff
+SAT solver, and featured a number of usability
+enhancements.  Its name comes from the cooperative nature of
+decision procedures in Nelson-Oppen theory combination,
+which share amongst each other equalities between shared terms.
+
+CVC Lite, first made available in 2003, was a rewrite of CVC
+that attempted to make CVC
+more flexible (hence the \(lqlite\(rq) while extending the feature set:
+CVCLite supported quantifiers where its predecessors did not.
+CVC3 was a major overhaul of portions of CVC Lite: it added
+better decision procedure implementations, added support for using
+MiniSat in the core, and had generally better performance.
+
+CVC4 is the new version, the fifth generation of this validity
+checker line that is now celebrating fifteen years of heritage.
+It represents a complete re-evaluation of
+the core architecture to be both performant and to serve as a cutting-edge research vehicle
+for the next several years.  Rather than taking CVC3
+and redesigning problem parts, we've taken a clean-room approach,
+starting from scratch.  Before using any designs from CVC3, we have
+thoroughly scrutinized, vetted, and updated them.  Many parts of CVC4
+bear only a superficial resemblance, if any, to their correspondent in CVC3.
+
+However, CVC4 is fundamentally similar to CVC3 and many other
+modern SMT solvers: it is a DPLL(
+.I T
+) solver,
+with a SAT solver at its core and a delegation path to different decision
+procedure implementations, each in charge of solving formulas in some
+background theory.
+
+The re-evaluation and ground-up rewrite was necessitated, we felt, by
+the performance characteristics of CVC3.  CVC3 has many useful
+features, but some core aspects of the design led to high memory use, and
+the use of heavyweight computation (where more nimble engineering
+approaches could suffice) makes CVC3 a much slower prover than other tools.
+As these designs are central to CVC3, a new version was preferable to a
+selective re-engineering, which would have ballooned in short order.
+.SH VERSION
+This manual page refers to
+.B CVC4
+version @VERSION at .
+.SH BUGS
+A Bugzilla for the CVC4 project is maintained at
+.BR http://cvc4.cs.nyu.edu/bugzilla3/ .
+.SH AUTHORS
+.B CVC4
+is developed by a team of researchers at New York University
+and the University of Iowa.
+See the AUTHORS file in the distribution for a full list of
+contributors.
+.SH "SEE ALSO"
+.BR libcvc4 (3),
+.BR libcvc4parser (3),
+.BR libcvc4compat (3)
+
+Additionally, the CVC4 wiki contains useful information about the
+design and internals of CVC4.  It is maintained at
+.BR http://cvc4.cs.nyu.edu/wiki/ .
diff --git a/doc/cvc4.5.in b/doc/cvc4.5.in
new file mode 100644
index 0000000..b54f235
--- /dev/null
+++ b/doc/cvc4.5.in
@@ -0,0 +1,21 @@
+.\" Process this file with
+.\" groff -man -Tascii cvc4.5
+.\"
+.TH CVC4 5 "@MAN_DATE@" "CVC4 release @VERSION@" "Languages documentation"
+.SH NAME
+cvc4 \- the native input language for CVC4
+.SH DESCRIPTION
+.B cvc4
+is an automated theorem prover for first-order formulas with respect
+to background theories of interest.
+
+.SH HISTORY
+.SH "SEE ALSO"
+.BR cvc4 (1),
+.BR libcvc4 (3),
+.BR libcvc4parser (3),
+.BR libcvc4compat (3)
+
+Additionally, the CVC4 wiki contains useful information about the
+design and internals of CVC4.  It is maintained at
+.BR http://cvc4.cs.nyu.edu/wiki/ .
diff --git a/doc/find_public_interface.sh b/doc/find_public_interface.sh
new file mode 100755
index 0000000..4609846
--- /dev/null
+++ b/doc/find_public_interface.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+#
+# Enumerates public interface headers, so that public-only documentation
+# can be produced.
+#
+
+cd "$(dirname "$0")"
+
+echo -n "\"$srcdir/src/include/cvc4.h\" "
+echo -n "\"$srcdir/src/include/cvc4_public.h\" "
+( (find "$builddir" -name '*.h' | xargs grep -l '^# *include  *"cvc4.*_public\.h"'); \
+  (find "$srcdir" -name '*.h' | xargs grep -l '^# *include  *"cvc4.*_public\.h"'); \
+) | \
+while read f; do
+  if expr "$f" : ".*_\(template\|private\|test_utils\)\.h$" &>/dev/null; then
+    continue
+  fi
+  echo -n "\"$f\" "
+done
+
diff --git a/doc/libcvc4.3 b/doc/libcvc4.3
new file mode 100644
index 0000000..0d1b8ce
--- /dev/null
+++ b/doc/libcvc4.3
@@ -0,0 +1,65 @@
+.\" Process this file with
+.\" groff -man -Tascii libcvc4.3
+.\"
+.TH LIBCVC4 3 "March 2017" "CVC4 release 1.5-prerelease" "CVC4 Library Interfaces"
+.SH NAME
+libcvc4 \- a library interface for the CVC4 theorem prover
+.SH SYNOPSIS
+
+A small program like:
+
+.RS
+.nf
+#include <iostream>
+#include "expr/expr_manager.h"
+#include "smt/smt_engine.h"
+
+using namespace CVC4;
+
+int main() {
+  ExprManager em;
+  SmtEngine smt(&em);
+  Expr onePlusTwo = em.mkExpr(kind::PLUS,
+                              em.mkConst(Rational(1)),
+                              em.mkConst(Rational(2)));
+  std::cout << language::SetLanguage(language::output::LANG_CVC4)
+            << smt.getInfo("name")
+            << " says that 1 + 2 = "
+            << smt.simplify(onePlusTwo)
+            << std::endl;
+
+  return 0;
+}
+.fi
+.RE
+
+gives the output:
+
+.RS
+"cvc4" says that 1 + 2 = 3
+.RE
+
+.SH DESCRIPTION
+
+The main classes of interest in CVC4's API are
+.I ExprManager,
+.I SmtEngine,
+and a few related ones like
+.I Expr
+and
+.I Type.
+
+The
+.I ExprManager
+is used to build up expressions and types, and the
+.I SmtEngine
+is used primarily to make assertions, check satisfiability/validity, and extract models and proofs.
+
+.SH "SEE ALSO"
+.BR cvc4 (1),
+.BR libcvc4parser (3),
+.BR libcvc4compat (3)
+
+Additionally, the CVC4 wiki contains useful information about the
+design and internals of CVC4.  It is maintained at
+.BR http://goedel.cs.nyu.edu/wiki/ .
diff --git a/doc/libcvc4.3_template.in b/doc/libcvc4.3_template.in
new file mode 100644
index 0000000..f85a909
--- /dev/null
+++ b/doc/libcvc4.3_template.in
@@ -0,0 +1,65 @@
+.\" Process this file with
+.\" groff -man -Tascii libcvc4.3
+.\"
+.TH LIBCVC4 3 "@MAN_DATE@" "CVC4 release @VERSION@" "CVC4 Library Interfaces"
+.SH NAME
+libcvc4 \- a library interface for the CVC4 theorem prover
+.SH SYNOPSIS
+
+A small program like:
+
+.RS
+.nf
+#include <iostream>
+#include "expr/expr_manager.h"
+#include "smt/smt_engine.h"
+
+using namespace CVC4;
+
+int main() {
+  ExprManager em;
+  SmtEngine smt(&em);
+  Expr onePlusTwo = em.mkExpr(kind::PLUS,
+                              em.mkConst(Rational(1)),
+                              em.mkConst(Rational(2)));
+  std::cout << language::SetLanguage(language::output::LANG_CVC4)
+            << smt.getInfo("name")
+            << " says that 1 + 2 = "
+            << smt.simplify(onePlusTwo)
+            << std::endl;
+
+  return 0;
+}
+.fi
+.RE
+
+gives the output:
+
+.RS
+"cvc4" says that 1 + 2 = 3
+.RE
+
+.SH DESCRIPTION
+
+The main classes of interest in CVC4's API are
+.I ExprManager,
+.I SmtEngine,
+and a few related ones like
+.I Expr
+and
+.I Type.
+
+The
+.I ExprManager
+is used to build up expressions and types, and the
+.I SmtEngine
+is used primarily to make assertions, check satisfiability/validity, and extract models and proofs.
+
+.SH "SEE ALSO"
+.BR cvc4 (1),
+.BR libcvc4parser (3),
+.BR libcvc4compat (3)
+
+Additionally, the CVC4 wiki contains useful information about the
+design and internals of CVC4.  It is maintained at
+.BR http://goedel.cs.nyu.edu/wiki/ .
diff --git a/doc/libcvc4compat.3.in b/doc/libcvc4compat.3.in
new file mode 100644
index 0000000..3aa58b7
--- /dev/null
+++ b/doc/libcvc4compat.3.in
@@ -0,0 +1,15 @@
+.\" Process this file with
+.\" groff -man -Tascii libcvc4compat.3
+.\"
+.TH LIBCVC4COMPAT 3 "@MAN_DATE@" "CVC4 release @VERSION@" "CVC4 Library Interfaces"
+.SH NAME
+libcvc4compat \- a CVC3 compatibility library interface for the CVC4 theorem prover
+.SH DESCRIPTION
+.SH "SEE ALSO"
+.BR cvc4 (1),
+.BR libcvc4 (3),
+.BR libcvc4parser (3)
+
+Additionally, the CVC4 wiki contains useful information about the
+design and internals of CVC4.  It is maintained at
+.BR http://cvc4.cs.nyu.edu/wiki/ .
diff --git a/doc/libcvc4parser.3.in b/doc/libcvc4parser.3.in
new file mode 100644
index 0000000..09fea23
--- /dev/null
+++ b/doc/libcvc4parser.3.in
@@ -0,0 +1,15 @@
+.\" Process this file with
+.\" groff -man -Tascii libcvc4parser.3
+.\"
+.TH LIBCVC4PARSER 3 "@MAN_DATE@" "CVC4 release @VERSION@" "CVC4 Library Interfaces"
+.SH NAME
+libcvc4parser \- a parser library interface for the CVC4 theorem prover
+.SH DESCRIPTION
+.SH "SEE ALSO"
+.BR cvc4 (1),
+.BR libcvc4 (3),
+.BR libcvc4compat (3)
+
+Additionally, the CVC4 wiki contains useful information about the
+design and internals of CVC4.  It is maintained at
+.BR http://cvc4.cs.nyu.edu/wiki/ .
diff --git a/doc/options.3cvc b/doc/options.3cvc
new file mode 100644
index 0000000..2c4bde5
--- /dev/null
+++ b/doc/options.3cvc
@@ -0,0 +1,2119 @@
+.\" Process this file with
+.\" groff -man -Tascii options.3cvc
+.\"
+.TH OPTIONS 3cvc "March 2017" "CVC4 release 1.5-prerelease" "CVC4 Internals Documentation"
+.SH NAME
+options \- the options infrastructure
+
+.SH AVAILABLE INTERNAL OPTIONS
+
+.ad l
+
+.RS
+.TP 10
+.I "COMMON OPTIONS"
+
+.TP
+.B "inputLanguage"
+(InputLanguage, default = language::input::LANG_AUTO)
+.br
+force input language (default is "auto"; see \-\-lang help)
+.TP
+.B "outputLanguage"
+(OutputLanguage, default = language::output::LANG_AUTO)
+.br
+force output language (default is "auto"; see \-\-output\-lang help)
+.TP
+.B "statistics"
+(bool)
+.br
+give statistics on exit
+.TP
+.B "version"
+(bool)
+.br
+identify this CVC4 binary
+.TP
+.B "help"
+(bool)
+.br
+full command line reference
+.TP
+.B "strictParsing"
+(bool)
+.br
+be less tolerant of non\-conforming inputs
+.TP
+.B "dumpModeString"
+(std::string)
+.br
+dump preprocessed assertions, etc., see \-\-dump=help
+.TP
+.B "dumpToFileName"
+(std::string)
+.br
+all dumping goes to FILE (instead of stdout)
+.TP
+.B "produceModels"
+(bool, default = false)
+.br
+support the get\-value and get\-model commands
+.TP
+.B "produceAssertions"
+(bool)
+.br
+keep an assertions list (enables get\-assertions command)
+.TP
+.B "incrementalSolving"
+(bool, default = true)
+.br
+enable incremental solving
+.TP
+.B "cumulativeMillisecondLimit"
+(unsigned long)
+.br
+enable time limiting (give milliseconds)
+.TP
+.B "perCallMillisecondLimit"
+(unsigned long)
+.br
+enable time limiting per query (give milliseconds)
+.TP
+.B "cumulativeResourceLimit"
+(unsigned long)
+.br
+enable resource limiting (currently, roughly the number of SAT conflicts)
+.TP
+.B "perCallResourceLimit"
+(unsigned long)
+.br
+enable resource limiting per query
+.TP
+.B "hardLimit"
+(bool, default = false)
+.br
+the resource limit is hard potentially leaving the smtEngine in an unsafe state (should be destroyed and rebuild after resourcing out)
+.TP
+.B "cpuTime"
+(bool, default = false)
+.br
+measures CPU time if set to true and wall time if false (default false)
+
+
+.TP
+.I "ARITHMETIC THEORY OPTIONS"
+
+.TP
+.B "arithUnateLemmaMode"
+(ArithUnateLemmaMode, default = ALL_PRESOLVE_LEMMAS)
+.br
+determines which lemmas to add before solving (default is 'all', see \-\-unate\-lemmas=help)
+.TP
+.B "arithPropagationMode"
+(ArithPropagationMode, default = BOTH_PROP)
+.br
+turns on arithmetic propagation (default is 'old', see \-\-arith\-prop=help)
+.TP
+.B "arithHeuristicPivots"
+(int16_t, default = 0)
+.br
+the number of times to apply the heuristic pivot rule; if N < 0, this defaults to the number of variables; if this is unset, this is tuned by the logic selection
+.TP
+.B "arithStandardCheckVarOrderPivots"
+(int16_t, default = \-1)
+.br
+limits the number of pivots in a single invocation of check() at a non\-full effort level using Bland's pivot rule (EXPERTS only)
+.TP
+.B "arithErrorSelectionRule"
+(ErrorSelectionRule, default = MINIMUM_AMOUNT)
+.br
+change the pivot rule for the basic variable (default is 'min', see \-\-pivot\-rule help)
+.TP
+.B "arithSimplexCheckPeriod"
+(uint16_t, default = 200)
+.br
+the number of pivots to do in simplex before rechecking for a conflict on all variables
+.TP
+.B "arithPivotThreshold"
+(uint16_t, default = 2)
+.br
+sets the number of pivots using \-\-pivot\-rule per basic variable per simplex instance before using variable order
+.TP
+.B "arithPropagateMaxLength"
+(uint16_t, default = 16)
+.br
+sets the maximum row length to be used in propagation
+.TP
+.B "arithDioSolver"
+(bool, default = true)
+.br
+turns on Linear Diophantine Equation solver (Griggio, JSAT 2012)
+.TP
+.B "arithRewriteEq"
+(bool, default = false)
+.br
+turns on the preprocessing rewrite turning equalities into a conjunction of inequalities
+.TP
+.B "arithMLTrick"
+(bool, default = false)
+.br
+turns on the preprocessing step of attempting to infer bounds on miplib problems
+.TP
+.B "arithMLTrickSubstitutions"
+(unsigned, default = 1)
+.br
+do substitution for miplib 'tmp' vars if defined in <= N eliminated vars
+.TP
+.B "doCutAllBounded"
+(bool, default = false)
+.br
+turns on the integer solving step of periodically cutting all integer variables that have both upper and lower bounds
+.TP
+.B "maxCutsInContext"
+(unsigned, default = 65535)
+.br
+maximum cuts in a given context before signalling a restart
+.TP
+.B "revertArithModels"
+(bool, default = false)
+.br
+revert the arithmetic model to a known safe model on unsat if one is cached
+.TP
+.B "havePenalties"
+(bool, default = false)
+.br
+turns on degenerate pivot penalties
+.TP
+.B "useFC"
+(bool, default = false)
+.br
+use focusing and converging simplex (FMCAD 2013 submission)
+.TP
+.B "useSOI"
+(bool, default = false)
+.br
+use sum of infeasibility simplex (FMCAD 2013 submission)
+.TP
+.B "restrictedPivots"
+(bool, default = true)
+.br
+have a pivot cap for simplex at effort levels below fullEffort
+.TP
+.B "collectPivots"
+(bool, default = false)
+.br
+collect the pivot history
+.TP
+.B "useApprox"
+(bool, default = false)
+.br
+attempt to use an approximate solver
+.TP
+.B "maxApproxDepth"
+(int16_t, default = 200)
+.br
+maximum branch depth the approximate solver is allowed to take
+.TP
+.B "exportDioDecompositions"
+(bool, default = false)
+.br
+let skolem variables for integer divisibility constraints leak from the dio solver
+.TP
+.B "newProp"
+(bool, default = false)
+.br
+use the new row propagation system
+.TP
+.B "arithPropAsLemmaLength"
+(uint16_t, default = 8)
+.br
+rows shorter than this are propagated as clauses
+.TP
+.B "soiQuickExplain"
+(bool, default = false)
+.br
+use quick explain to minimize the sum of infeasibility conflicts
+.TP
+.B "rewriteDivk"
+(bool, default = false)
+.br
+rewrite division and mod when by a constant into linear terms
+.TP
+.B "trySolveIntStandardEffort"
+(bool, default = false)
+.br
+attempt to use the approximate solve integer method on standard effort
+.TP
+.B "replayFailureLemma"
+(bool, default = false)
+.br
+attempt to use external lemmas if approximate solve integer failed
+.TP
+.B "dioSolverTurns"
+(int, default = 10)
+.br
+turns in a row dio solver cutting gets
+.TP
+.B "rrTurns"
+(int, default = 3)
+.br
+round robin turn
+.TP
+.B "dioRepeat"
+(bool, default = false)
+.br
+handle dio solver constraints in mass or one at a time
+.TP
+.B "replayEarlyCloseDepths"
+(int, default = 1)
+.br
+multiples of the depths to try to close the approx log eagerly
+.TP
+.B "replayFailurePenalty"
+(int, default = 100)
+.br
+number of solve integer attempts to skips after a numeric failure
+.TP
+.B "replayNumericFailurePenalty"
+(int, default = 4194304)
+.br
+number of solve integer attempts to skips after a numeric failure
+.TP
+.B "replayRejectCutSize"
+(unsigned, default = 25500)
+.br
+maximum complexity of any coefficient while replaying cuts
+.TP
+.B "lemmaRejectCutSize"
+(unsigned, default = 25500)
+.br
+maximum complexity of any coefficient while outputing replaying cut lemmas
+.TP
+.B "soiApproxMajorFailure"
+(double, default = .01)
+.br
+threshold for a major tolerance failure by the approximate solver
+.TP
+.B "soiApproxMajorFailurePen"
+(int, default = 50)
+.br
+threshold for a major tolerance failure by the approximate solver
+.TP
+.B "soiApproxMinorFailure"
+(double, default = .0001)
+.br
+threshold for a minor tolerance failure by the approximate solver
+.TP
+.B "soiApproxMinorFailurePen"
+(int, default = 10)
+.br
+threshold for a minor tolerance failure by the approximate solver
+.TP
+.B "ppAssertMaxSubSize"
+(unsigned, default = 2)
+.br
+threshold for substituting an equality in ppAssert
+.TP
+.B "maxReplayTree"
+(int, default = 512)
+.br
+threshold for attempting to replay a tree
+.TP
+.B "pbRewrites"
+(bool, default = false)
+.br
+apply pseudo boolean rewrites
+.TP
+.B "pbRewriteThreshold"
+(int, default = 256)
+.br
+threshold of number of pseudoboolean variables to have before doing rewrites
+.TP
+.B "sNormInferEq"
+(bool, default = false)
+.br
+infer equalities based on Shostak normalization
+.TP
+.I "ARRAYS THEORY OPTIONS"
+
+.TP
+.B "arraysOptimizeLinear"
+(bool, default = true)
+.br
+turn on optimization for linear array terms (see de Moura FMCAD 09 arrays paper)
+.TP
+.B "arraysLazyRIntro1"
+(bool, default = true)
+.br
+turn on optimization to only perform RIntro1 rule lazily (see Jovanovic/Barrett 2012: Being Careful with Theory Combination)
+.TP
+.B "arraysWeakEquivalence"
+(bool, default = false)
+.br
+use algorithm from Christ/Hoenicke (SMT 2014)
+.TP
+.B "arraysModelBased"
+(bool, default = false)
+.br
+turn on model\-based array solver
+.TP
+.B "arraysEagerIndexSplitting"
+(bool, default = true)
+.br
+turn on eager index splitting for generated array lemmas
+.TP
+.B "arraysEagerLemmas"
+(bool, default = false)
+.br
+turn on eager lemma generation for arrays
+.TP
+.B "arraysConfig"
+(int, default = 0)
+.br
+set different array option configurations \- for developers only
+.TP
+.B "arraysReduceSharing"
+(bool, default = false)
+.br
+use model information to reduce size of care graph for arrays
+.TP
+.B "arraysPropagate"
+(int, default = 2)
+.br
+propagation effort for arrays: 0 is none, 1 is some, 2 is full
+.TP
+.I "BASE OPTIONS"
+
+.TP
+.B "binary_name"
+(std::string)
+.br
+[undocumented]
+.TP
+.B "in"
+(std::istream*, default = &std::cin)
+.br
+[undocumented]
+.TP
+.B "out"
+(std::ostream*, default = &std::cout)
+.br
+[undocumented]
+.TP
+.B "err"
+(std::ostream*, default = &std::cerr)
+.br
+[undocumented]
+.TP
+.B "languageHelp"
+(bool)
+.br
+[undocumented]
+.TP
+.B "verbosity"
+(int, default = 0)
+.br
+the verbosity level of CVC4
+.TP
+.B "statsEveryQuery"
+(bool, default = false)
+.br
+in incremental mode, print stats after every satisfiability or validity query
+.TP
+.B "statsHideZeros"
+(bool, default = false)
+.br
+hide statistics which are zero
+.TP
+.B "parseOnly"
+(bool)
+.br
+exit after parsing input
+.TP
+.B "preprocessOnly"
+(bool)
+.br
+exit after preprocessing input
+.TP
+.B "printSuccess"
+(bool)
+.br
+print the "success" output required of SMT\-LIBv2
+.TP
+.I "BITVECTOR THEORY OPTIONS"
+
+.TP
+.B "bvSatSolver"
+(CVC4::theory::bv::SatSolverMode, default = CVC4::theory::bv::SAT_SOLVER_MINISAT)
+.br
+choose which sat solver to use, see \-\-bv\-sat\-solver=help (EXPERTS only)
+.TP
+.B "bitblastMode"
+(CVC4::theory::bv::BitblastMode, default = CVC4::theory::bv::BITBLAST_MODE_LAZY)
+.br
+choose bitblasting mode, see \-\-bitblast=help
+.TP
+.B "bitvectorAig"
+(bool, default = false)
+.br
+bitblast by first converting to AIG (implies \-\-bitblast=eager)
+.TP
+.B "bitvectorAigSimplifications"
+(std::string)
+.br
+abc command to run AIG simplifications (implies \-\-bitblast\-aig, default is "balance;drw") (EXPERTS only)
+.TP
+.B "bitvectorPropagate"
+(bool, default = true)
+.br
+use bit\-vector propagation in the bit\-blaster
+.TP
+.B "bitvectorEqualitySolver"
+(bool, default = true)
+.br
+use the equality engine for the bit\-vector theory (only if \-\-bitblast=lazy)
+.TP
+.B "bitvectorEqualitySlicer"
+(CVC4::theory::bv::BvSlicerMode, default = CVC4::theory::bv::BITVECTOR_SLICER_OFF)
+.br
+turn on the slicing equality solver for the bit\-vector theory (only if \-\-bitblast=lazy)
+.TP
+.B "bitvectorInequalitySolver"
+(bool, default = true)
+.br
+turn on the inequality solver for the bit\-vector theory (only if \-\-bitblast=lazy)
+.TP
+.B "bitvectorAlgebraicSolver"
+(bool, default = true)
+.br
+turn on the algebraic solver for the bit\-vector theory (only if \-\-bitblast=lazy)
+.TP
+.B "bitvectorAlgebraicBudget"
+(unsigned, default = 1500)
+.br
+the budget allowed for the algebraic solver in number of SAT conflicts (EXPERTS only)
+.TP
+.B "bitvectorToBool"
+(bool, default = false)
+.br
+lift bit\-vectors of size 1 to booleans when possible
+.TP
+.B "boolToBitvector"
+(bool, default = false)
+.br
+convert booleans to bit\-vectors of size 1 when possible
+.TP
+.B "bitvectorDivByZeroConst"
+(bool, default = false)
+.br
+always return \-1 on division by zero
+.TP
+.B "bvExtractArithRewrite"
+(bool, default = false)
+.br
+enable rewrite pushing extract [i:0] over arithmetic operations (can blow up) (EXPERTS only)
+.TP
+.B "bvAbstraction"
+(bool, default = false)
+.br
+mcm benchmark abstraction (EXPERTS only)
+.TP
+.B "skolemizeArguments"
+(bool, default = false)
+.br
+skolemize arguments for bv abstraction (only does something if \-\-bv\-abstraction is on) (EXPERTS only)
+.TP
+.B "bvNumFunc"
+(unsigned, default = 1)
+.br
+number of function symbols in conflicts that are generalized (EXPERTS only)
+.TP
+.B "bvEagerExplanations"
+(bool, default = false)
+.br
+compute bit\-blasting propagation explanations eagerly (EXPERTS only)
+.TP
+.B "bitvectorQuickXplain"
+(bool, default = false)
+.br
+minimize bv conflicts using the QuickXplain algorithm (EXPERTS only)
+.TP
+.B "bvIntroducePow2"
+(bool, default = false)
+.br
+introduce bitvector powers of two as a preprocessing pass (EXPERTS only)
+.TP
+.B "bvLazyRewriteExtf"
+(bool, default = true)
+.br
+lazily rewrite extended functions like bv2nat and int2bv
+
+.TP
+.B "bvLazyReduceExtf"
+(bool, default = false)
+.br
+reduce extended functions like bv2nat and int2bv at last call instead of full effort
+
+.TP
+.B "bvAlgExtf"
+(bool, default = true)
+.br
+algebraic inferences for extended functions
+
+.TP
+.I "DATATYPES THEORY OPTIONS"
+
+.TP
+.B "dtRewriteErrorSel"
+(bool, default = false)
+.br
+rewrite incorrectly applied selectors to arbitrary ground term (EXPERTS only)
+.TP
+.B "dtForceAssignment"
+(bool, default = false)
+.br
+force the datatypes solver to give specific values to all datatypes terms before answering sat
+.TP
+.B "dtBinarySplit"
+(bool, default = false)
+.br
+do binary splits for datatype constructor types
+.TP
+.B "dtRefIntro"
+(bool, default = false)
+.br
+introduce reference skolems for shorter explanations
+.TP
+.B "dtUseTesters"
+(bool, default = true)
+.br
+do not preprocess away tester predicates
+.TP
+.B "cdtBisimilar"
+(bool, default = true)
+.br
+do bisimilarity check for co\-datatypes
+.TP
+.B "dtCyclic"
+(bool, default = true)
+.br
+do cyclicity check for datatypes
+.TP
+.B "dtInferAsLemmas"
+(bool, default = false)
+.br
+always send lemmas out instead of making internal inferences
+.TP
+.B "dtBlastSplits"
+(bool, default = false)
+.br
+when applicable, blast splitting lemmas for all variables at once
+
+.TP
+.I "DECISION HEURISTICS OPTIONS"
+
+.TP
+.B "decisionMode"
+(decision::DecisionMode, default = decision::DECISION_STRATEGY_INTERNAL)
+.br
+choose decision mode, see \-\-decision=help
+.TP
+.B "decisionStopOnly"
+(bool)
+.br
+[undocumented]
+.TP
+.B "decisionThreshold"
+(decision::DecisionWeight, default = 0)
+.br
+ignore all nodes greater than threshold in first attempt to pick decision (EXPERTS only)
+.TP
+.B "decisionUseWeight"
+(bool, default = false)
+.br
+use the weight nodes (locally, by looking at children) to direct recursive search (EXPERTS only)
+.TP
+.B "decisionRandomWeight"
+(int, default = 0)
+.br
+assign random weights to nodes between 0 and N\-1 (0: disable) (EXPERTS only)
+.TP
+.B "decisionWeightInternal"
+(decision::DecisionWeightInternal, default = decision::DECISION_WEIGHT_INTERNAL_OFF)
+.br
+computer weights of internal nodes using children: off, max, sum, usr1 (meaning evolving) (EXPERTS only)
+.TP
+.I "EXPRESSION PACKAGE OPTIONS"
+
+.TP
+.B "defaultExprDepth"
+(int, default = 0)
+.br
+print exprs to depth N (0 == default, \-1 == no limit)
+.TP
+.B "defaultDagThresh"
+(int, default = 1)
+.br
+dagify common subexprs appearing > N times (1 == default, 0 == don't dagify)
+.TP
+.B "printExprTypes"
+(bool, default = false)
+.br
+print types with variables when printing exprs
+.TP
+.B "earlyTypeChecking"
+(bool, default = USE_EARLY_TYPE_CHECKING_BY_DEFAULT)
+.br
+type check expressions immediately on creation (debug builds only)
+.TP
+.B "typeChecking"
+(bool, default = DO_SEMANTIC_CHECKS_BY_DEFAULT)
+.br
+never type check expressions
+.TP
+.I "IDL OPTIONS"
+
+.TP
+.B "idlRewriteEq"
+(bool, default = false)
+.br
+enable rewriting equalities into two inequalities in IDL solver (default is disabled)
+.TP
+.I "DRIVER OPTIONS"
+
+.TP
+.B "earlyExit"
+(bool, default = true)
+.br
+do not run destructors at exit; default on except in debug builds (EXPERTS only)
+.TP
+.B "threads"
+(unsigned, default = 2)
+.br
+Total number of threads for portfolio
+.TP
+.B "threadStackSize"
+(unsigned, default = 0)
+.br
+stack size for worker threads in MB (0 means use Boost/thread lib default)
+.TP
+.B "threadArgv"
+(std::vector<std::string>)
+.br
+Thread configuration (a string to be passed to parseOptions)
+.TP
+.B "thread_id"
+(int, default = \-1)
+.br
+Thread ID, for internal use in case of multi\-threaded run
+.TP
+.B "sharingFilterByLength"
+(int, default = \-1)
+.br
+don't share (among portfolio threads) lemmas strictly longer than N
+.TP
+.B "fallbackSequential"
+(bool, default = false)
+.br
+Switch to sequential mode (instead of printing an error) if it can't be solved in portfolio mode
+.TP
+.B "incrementalParallel"
+(bool, default = false)
+.br
+Use parallel solver even in incremental mode (may print 'unknown's at times)
+.TP
+.B "interactive"
+(bool)
+.br
+force interactive/non\-interactive mode
+.TP
+.B "interactivePrompt"
+(bool, default = true)
+.br
+interactive prompting while in interactive mode
+.TP
+.B "continuedExecution"
+(bool, default = false)
+.br
+continue executing commands, even on error
+.TP
+.B "segvSpin"
+(bool, default = false)
+.br
+spin on segfault/other crash waiting for gdb
+.TP
+.B "tearDownIncremental"
+(int, default = 0)
+.br
+implement PUSH/POP/multi\-query by destroying and recreating SmtEngine every N queries (EXPERTS only)
+.TP
+.B "waitToJoin"
+(bool, default = true)
+.br
+wait for other threads to join before quitting (EXPERTS only)
+.TP
+.I "PARSER OPTIONS"
+
+.TP
+.B "memoryMap"
+(bool)
+.br
+memory map file input
+.TP
+.B "semanticChecks"
+(bool, default = DO_SEMANTIC_CHECKS_BY_DEFAULT)
+.br
+disable ALL semantic checks, including type checks
+.TP
+.B "globalDeclarations"
+(bool, default = false)
+.br
+force all declarations and definitions to be global
+.TP
+.B "filesystemAccess"
+(bool, default = true)
+.br
+[undocumented]
+.TP
+.I "PRINTING OPTIONS"
+
+.TP
+.B "modelFormatMode"
+(ModelFormatMode, default = MODEL_FORMAT_MODE_DEFAULT)
+.br
+print format mode for models, see \-\-model\-format=help
+.TP
+.B "instFormatMode"
+(InstFormatMode, default = INST_FORMAT_MODE_DEFAULT)
+.br
+print format mode for instantiations, see \-\-inst\-format=help
+.TP
+.I "PROOF OPTIONS"
+
+.TP
+.B "lfscLetification"
+(bool, default = true)
+.br
+turns on global letification in LFSC proofs
+.TP
+.B "aggressiveCoreMin"
+(bool, default = false)
+.br
+turns on aggressive unsat core minimization (experimental)
+.TP
+.B "fewerPreprocessingHoles"
+(bool, default = false)
+.br
+try to eliminate preprocessing holes in proofs
+.TP
+.B "allowEmptyDependencies"
+(bool, default = false)
+.br
+if unable to track the dependencies of a rewritten/preprocessed assertion, fail silently
+.TP
+.I "SAT LAYER OPTIONS"
+
+.TP
+.B "satRandomFreq"
+(double, default = 0.0)
+.br
+sets the frequency of random decisions in the sat solver (P=0.0 by default)
+.TP
+.B "satRandomSeed"
+(uint32_t, default = 0)
+.br
+sets the random seed for the sat solver
+.TP
+.B "satVarDecay"
+(double, default = 0.95)
+.br
+variable activity decay factor for Minisat
+.TP
+.B "satClauseDecay"
+(double, default = 0.999)
+.br
+clause activity decay factor for Minisat
+.TP
+.B "satRestartFirst"
+(unsigned, default = 25)
+.br
+sets the base restart interval for the sat solver (N=25 by default)
+.TP
+.B "satRestartInc"
+(double, default = 3.0)
+.br
+sets the restart interval increase factor for the sat solver (F=3.0 by default)
+.TP
+.B "sat_refine_conflicts"
+(bool, default = false)
+.br
+refine theory conflict clauses (default false)
+.TP
+.B "minisatUseElim"
+(bool, default = true)
+.br
+use Minisat elimination
+.TP
+.B "minisatDumpDimacs"
+(bool, default = false)
+.br
+instead of solving minisat dumps the asserted clauses in Dimacs format
+
+.TP
+.I "QUANTIFIERS OPTIONS"
+
+.TP
+.B "miniscopeQuant"
+(bool, default = true)
+.br
+miniscope quantifiers
+.TP
+.B "miniscopeQuantFreeVar"
+(bool, default = true)
+.br
+miniscope quantifiers for ground subformulas
+.TP
+.B "quantSplit"
+(bool, default = true)
+.br
+apply splitting to quantified formulas based on variable disjoint disjuncts
+.TP
+.B "prenexQuant"
+(CVC4::theory::quantifiers::PrenexQuantMode, default = CVC4::theory::quantifiers::PRENEX_QUANT_SIMPLE)
+.br
+prenex mode for quantified formulas
+.TP
+.B "prenexQuantUser"
+(bool, default = false)
+.br
+prenex quantified formulas with user patterns
+.TP
+.B "varElimQuant"
+(bool, default = true)
+.br
+enable simple variable elimination for quantified formulas
+.TP
+.B "varIneqElimQuant"
+(bool, default = true)
+.br
+enable variable elimination based on infinite projection of unbound arithmetic variables
+.TP
+.B "dtVarExpandQuant"
+(bool, default = true)
+.br
+expand datatype variables bound to one constructor in quantifiers
+.TP
+.B "iteLiftQuant"
+(CVC4::theory::quantifiers::IteLiftQuantMode, default = CVC4::theory::quantifiers::ITE_LIFT_QUANT_MODE_SIMPLE)
+.br
+ite lifting mode for quantified formulas
+.TP
+.B "condVarSplitQuant"
+(bool, default = true)
+.br
+split quantified formulas that lead to variable eliminations
+.TP
+.B "condVarSplitQuantAgg"
+(bool, default = false)
+.br
+aggressive split quantified formulas that lead to variable eliminations
+.TP
+.B "iteDtTesterSplitQuant"
+(bool, default = false)
+.br
+split ites with dt testers as conditions
+.TP
+.B "preSkolemQuant"
+(bool, default = false)
+.br
+apply skolemization eagerly to bodies of quantified formulas
+.TP
+.B "preSkolemQuantNested"
+(bool, default = true)
+.br
+apply skolemization to nested quantified formulas
+.TP
+.B "preSkolemQuantAgg"
+(bool, default = true)
+.br
+apply skolemization to quantified formulas aggressively
+.TP
+.B "aggressiveMiniscopeQuant"
+(bool, default = false)
+.br
+perform aggressive miniscoping for quantifiers
+.TP
+.B "elimTautQuant"
+(bool, default = true)
+.br
+eliminate tautological disjuncts of quantified formulas
+.TP
+.B "elimExtArithQuant"
+(bool, default = true)
+.br
+eliminate extended arithmetic symbols in quantified formulas
+.TP
+.B "condRewriteQuant"
+(bool, default = true)
+.br
+conditional rewriting of quantified formulas
+
+
+.TP
+.B "eMatching"
+(bool, default = true)
+.br
+whether to do heuristic E\-matching
+.TP
+.B "termDbMode"
+(CVC4::theory::quantifiers::TermDbMode, default = CVC4::theory::quantifiers::TERM_DB_ALL)
+.br
+which ground terms to consider for instantiation
+.TP
+.B "registerQuantBodyTerms"
+(bool, default = false)
+.br
+consider ground terms within bodies of quantified formulas for matching
+.TP
+.B "inferArithTriggerEq"
+(bool, default = false)
+.br
+infer equalities for trigger terms based on solving arithmetic equalities
+.TP
+.B "inferArithTriggerEqExp"
+(bool, default = false)
+.br
+record explanations for inferArithTriggerEq
+
+.TP
+.B "strictTriggers"
+(bool, default = false)
+.br
+only instantiate quantifiers with user patterns based on triggers
+.TP
+.B "relevantTriggers"
+(bool, default = false)
+.br
+prefer triggers that are more relevant based on SInE style analysis
+.TP
+.B "relationalTriggers"
+(bool, default = false)
+.br
+choose relational triggers such as x = f(y), x >= f(y)
+.TP
+.B "purifyTriggers"
+(bool, default = false)
+.br
+purify triggers, e.g. f( x+1 ) becomes f( y ), x mapsto y\-1
+.TP
+.B "purifyDtTriggers"
+(bool, default = false)
+.br
+purify dt triggers, match all constructors of correct form instead of selectors
+.TP
+.B "pureThTriggers"
+(bool, default = false)
+.br
+use pure theory terms as single triggers
+.TP
+.B "partialTriggers"
+(bool, default = false)
+.br
+use triggers that do not contain all free variables
+.TP
+.B "multiTriggerWhenSingle"
+(bool, default = false)
+.br
+select multi triggers when single triggers exist
+.TP
+.B "multiTriggerPriority"
+(bool, default = false)
+.br
+only try multi triggers if single triggers give no instantiations
+.TP
+.B "triggerSelMode"
+(CVC4::theory::quantifiers::TriggerSelMode, default = CVC4::theory::quantifiers::TRIGGER_SEL_MIN)
+.br
+selection mode for triggers
+.TP
+.B "triggerActiveSelMode"
+(CVC4::theory::quantifiers::TriggerActiveSelMode, default = CVC4::theory::quantifiers::TRIGGER_ACTIVE_SEL_ALL)
+.br
+selection mode to activate triggers
+.TP
+.B "userPatternsQuant"
+(CVC4::theory::quantifiers::UserPatMode, default = CVC4::theory::quantifiers::USER_PAT_MODE_TRUST)
+.br
+policy for handling user\-provided patterns for quantifier instantiation
+.TP
+.B "incrementTriggers"
+(bool, default = true)
+.br
+generate additional triggers as needed during search
+
+.TP
+.B "instWhenMode"
+(CVC4::theory::quantifiers::InstWhenMode, default = CVC4::theory::quantifiers::INST_WHEN_FULL_LAST_CALL)
+.br
+when to apply instantiation
+.TP
+.B "instWhenStrictInterleave"
+(bool, default = true)
+.br
+ensure theory combination and standard quantifier effort strategies take turns 
+.TP
+.B "instWhenPhase"
+(int, default = 2)
+.br
+instantiation rounds quantifiers takes (>=1) before allowing theory combination to happen
+.TP
+.B "instWhenTcFirst"
+(bool, default = true)
+.br
+allow theory combination to happen once initially, before quantifier strategies are run
+
+.TP
+.B "instMaxLevel"
+(int, default = \-1)
+.br
+maximum inst level of terms used to instantiate quantified formulas with (\-1 == no limit, default)
+.TP
+.B "instLevelInputOnly"
+(bool, default = true)
+.br
+only input terms are assigned instantiation level zero
+.TP
+.B "quantRepMode"
+(CVC4::theory::quantifiers::QuantRepMode, default = CVC4::theory::quantifiers::QUANT_REP_MODE_FIRST)
+.br
+selection mode for representatives in quantifiers engine
+.TP
+.B "instRelevantCond"
+(bool, default = false)
+.br
+add relevancy conditions for instantiations
+.TP
+.B "fullSaturateQuant"
+(bool, default = false)
+.br
+when all other quantifier instantiation strategies fail, instantiate with ground terms from relevant domain, then arbitrary ground terms before answering unknown
+.TP
+.B "fullSaturateQuantRd"
+(bool, default = true)
+.br
+whether to use relevant domain first for full saturation instantiation strategy
+.TP
+.B "fullSaturateInst"
+(bool, default = false)
+.br
+interleave full saturate instantiation with other techniques
+.TP
+.B "literalMatchMode"
+(CVC4::theory::quantifiers::LiteralMatchMode, default = CVC4::theory::quantifiers::LITERAL_MATCH_USE)
+.br
+choose literal matching mode
+
+.TP
+.B "finiteModelFind"
+(bool, default = false)
+.br
+use finite model finding heuristic for quantifier instantiation
+.TP
+.B "quantFunWellDefined"
+(bool, default = false)
+.br
+assume that function defined by quantifiers are well defined
+.TP
+.B "fmfFunWellDefined"
+(bool, default = false)
+.br
+find models for recursively defined functions, assumes functions are admissible
+.TP
+.B "fmfFunWellDefinedRelevant"
+(bool, default = false)
+.br
+find models for recursively defined functions, assumes functions are admissible, allows empty type when function is irrelevant
+.TP
+.B "fmfEmptySorts"
+(bool, default = false)
+.br
+allow finite model finding to assume sorts that do not occur in ground assertions are empty
+
+.TP
+.B "mbqiMode"
+(CVC4::theory::quantifiers::MbqiMode, default = CVC4::theory::quantifiers::MBQI_FMC)
+.br
+choose mode for model\-based quantifier instantiation
+.TP
+.B "fmfOneInstPerRound"
+(bool, default = false)
+.br
+only add one instantiation per quantifier per round for mbqi
+.TP
+.B "fmfOneQuantPerRound"
+(bool, default = false)
+.br
+only add instantiations for one quantifier per round for mbqi
+.TP
+.B "fmfInstEngine"
+(bool, default = false)
+.br
+use instantiation engine in conjunction with finite model finding
+.TP
+.B "fmfInstGen"
+(bool, default = true)
+.br
+enable Inst\-Gen instantiation techniques for finite model finding 
+.TP
+.B "fmfInstGenOneQuantPerRound"
+(bool, default = false)
+.br
+only perform Inst\-Gen instantiation techniques on one quantifier per round
+.TP
+.B "fmfFreshDistConst"
+(bool, default = false)
+.br
+use fresh distinguished representative when applying Inst\-Gen techniques
+.TP
+.B "fmfFmcSimple"
+(bool, default = true)
+.br
+simple models in full model check for finite model finding
+.TP
+.B "fmfBoundInt"
+(bool, default = false)
+.br
+finite model finding on bounded integer quantification
+.TP
+.B "fmfBound"
+(bool, default = false)
+.br
+finite model finding on bounded quantification
+.TP
+.B "fmfBoundLazy"
+(bool, default = false)
+.br
+enforce bounds for bounded quantification lazily via use of proxy variables
+.TP
+.B "fmfBoundMinMode"
+(CVC4::theory::quantifiers::FmfBoundMinMode, default = CVC4::theory::quantifiers::FMF_BOUND_MIN_INT_RANGE)
+.br
+mode for which types of bounds to minimize via first decision heuristics
+
+
+.TP
+.B "quantConflictFind"
+(bool, default = true)
+.br
+enable conflict find mechanism for quantifiers
+.TP
+.B "qcfMode"
+(CVC4::theory::quantifiers::QcfMode, default = CVC4::theory::quantifiers::QCF_PROP_EQ)
+.br
+what effort to apply conflict find mechanism
+.TP
+.B "qcfWhenMode"
+(CVC4::theory::quantifiers::QcfWhenMode, default = CVC4::theory::quantifiers::QCF_WHEN_MODE_DEFAULT)
+.br
+when to invoke conflict find mechanism for quantifiers
+.TP
+.B "qcfTConstraint"
+(bool, default = false)
+.br
+enable entailment checks for t\-constraints in qcf algorithm
+.TP
+.B "qcfAllConflict"
+(bool, default = false)
+.br
+add all available conflicting instances during conflict\-based instantiation
+.TP
+.B "qcfNestedConflict"
+(bool, default = false)
+.br
+consider conflicts for nested quantifiers
+.TP
+.B "qcfVoExp"
+(bool, default = false)
+.br
+qcf experimental variable ordering
+.TP
+.B "instNoEntail"
+(bool, default = true)
+.br
+do not consider instances of quantified formulas that are currently entailed
+.TP
+.B "instPropagate"
+(bool, default = false)
+.br
+internal propagation for instantiations for selecting relevant instances
+
+.TP
+.B "qcfEagerTest"
+(bool, default = true)
+.br
+optimization, test qcf instances eagerly
+.TP
+.B "qcfEagerCheckRd"
+(bool, default = true)
+.br
+optimization, eagerly check relevant domain of matched position
+.TP
+.B "qcfSkipRd"
+(bool, default = false)
+.br
+optimization, skip instances based on possibly irrelevant portions of quantified formulas
+
+
+.TP
+.B "quantRewriteRules"
+(bool, default = false)
+.br
+use rewrite rules module
+.TP
+.B "rrOneInstPerRound"
+(bool, default = false)
+.br
+add one instance of rewrite rule per round
+
+
+.TP
+.B "quantInduction"
+(bool, default = false)
+.br
+use all available techniques for inductive reasoning
+.TP
+.B "dtStcInduction"
+(bool, default = false)
+.br
+apply strengthening for existential quantification over datatypes based on structural induction
+.TP
+.B "intWfInduction"
+(bool, default = false)
+.br
+apply strengthening for integers based on well\-founded induction
+.TP
+.B "conjectureGen"
+(bool, default = false)
+.br
+generate candidate conjectures for inductive proofs
+
+.TP
+.B "conjectureGenPerRound"
+(int, default = 1)
+.br
+number of conjectures to generate per instantiation round 
+.TP
+.B "conjectureNoFilter"
+(bool, default = false)
+.br
+do not filter conjectures
+.TP
+.B "conjectureFilterActiveTerms"
+(bool, default = true)
+.br
+filter based on active terms
+.TP
+.B "conjectureFilterCanonical"
+(bool, default = true)
+.br
+filter based on canonicity
+.TP
+.B "conjectureFilterModel"
+(bool, default = true)
+.br
+filter based on model
+.TP
+.B "conjectureGenGtEnum"
+(int, default = 50)
+.br
+number of ground terms to generate for model filtering
+.TP
+.B "conjectureUeeIntro"
+(bool, default = false)
+.br
+more aggressive merging for universal equality engine, introduces terms
+.TP
+.B "conjectureGenMaxDepth"
+(int, default = 3)
+.br
+maximum depth of terms to consider for conjectures
+ 
+.TP
+.B "ceGuidedInst"
+(bool, default = false)
+.br
+ counterexample\-guided quantifier instantiation
+.TP
+.B "ceGuidedInstFair"
+(CVC4::theory::quantifiers::CegqiFairMode, default = CVC4::theory::quantifiers::CEGQI_FAIR_DT_SIZE)
+.br
+ if and how to apply fairness for cegqi
+.TP
+.B "cegqiSingleInvMode"
+(CVC4::theory::quantifiers::CegqiSingleInvMode, default = CVC4::theory::quantifiers::CEGQI_SI_MODE_NONE)
+.br
+ mode for processing single invocation synthesis conjectures
+.TP
+.B "cegqiSingleInvPartial"
+(bool, default = false)
+.br
+ combined techniques for synthesis conjectures that are partially single invocation 
+.TP
+.B "cegqiSingleInvReconstruct"
+(bool, default = true)
+.br
+ reconstruct solutions for single invocation conjectures in original grammar
+.TP
+.B "cegqiSolMinCore"
+(bool, default = false)
+.br
+ minimize solutions for single invocation conjectures based on unsat core
+.TP
+.B "cegqiSolMinInst"
+(bool, default = true)
+.br
+ minimize individual instantiations for single invocation conjectures based on unsat core
+.TP
+.B "cegqiSingleInvReconstructConst"
+(bool, default = true)
+.br
+ include constants when reconstruct solutions for single invocation conjectures in original grammar
+.TP
+.B "cegqiSingleInvAbort"
+(bool, default = false)
+.br
+ abort if synthesis conjecture is not single invocation
+ 
+.TP
+.B "sygusNormalForm"
+(bool, default = true)
+.br
+ only search for sygus builtin terms that are in normal form
+.TP
+.B "sygusNormalFormArg"
+(bool, default = true)
+.br
+ account for relationship between arguments of operations in sygus normal form
+.TP
+.B "sygusNormalFormGlobal"
+(bool, default = true)
+.br
+ narrow sygus search space based on global state of current candidate program
+.TP
+.B "sygusNormalFormGlobalGen"
+(bool, default = true)
+.br
+ generalize lemmas for global search space narrowing
+.TP
+.B "sygusNormalFormGlobalArg"
+(bool, default = true)
+.br
+ generalize based on arguments in global search space narrowing
+.TP
+.B "sygusNormalFormGlobalContent"
+(bool, default = true)
+.br
+ generalize based on content in global search space narrowing
+ 
+.TP
+.B "sygusInvTemplMode"
+(CVC4::theory::quantifiers::SygusInvTemplMode, default = CVC4::theory::quantifiers::SYGUS_INV_TEMPL_MODE_NONE)
+.br
+ template mode for sygus invariant synthesis
+.TP
+.B "sygusDirectEval"
+(bool, default = true)
+.br
+ direct unfolding of evaluation functions
+ 
+.TP
+.B "cbqi"
+(bool, default = false)
+.br
+turns on counterexample\-based quantifier instantiation
+.TP
+.B "recurseCbqi"
+(bool, default = true)
+.br
+turns on recursive counterexample\-based quantifier instantiation
+.TP
+.B "cbqiSat"
+(bool, default = true)
+.br
+answer sat when quantifiers are asserted with counterexample\-based quantifier instantiation
+.TP
+.B "cbqiModel"
+(bool, default = true)
+.br
+guide instantiations by model values for counterexample\-based quantifier instantiation
+.TP
+.B "cbqiAll"
+(bool, default = false)
+.br
+apply counterexample\-based instantiation to all quantified formulas
+.TP
+.B "cbqiUseInfInt"
+(bool, default = false)
+.br
+use integer infinity for vts in counterexample\-based quantifier instantiation
+.TP
+.B "cbqiUseInfReal"
+(bool, default = false)
+.br
+use real infinity for vts in counterexample\-based quantifier instantiation
+.TP
+.B "cbqiPreRegInst"
+(bool, default = false)
+.br
+ preregister ground instantiations in counterexample\-based quantifier instantiation
+.TP
+.B "cbqiMinBounds"
+(bool, default = false)
+.br
+ use minimally constrained lower/upper bound for counterexample\-based quantifier instantiation
+.TP
+.B "cbqiRoundUpLowerLia"
+(bool, default = false)
+.br
+ round up integer lower bounds in substitutions for counterexample\-based quantifier instantiation
+.TP
+.B "cbqiMidpoint"
+(bool, default = false)
+.br
+ choose substitutions based on midpoints of lower and upper bounds for counterexample\-based quantifier instantiation
+.TP
+.B "cbqiNopt"
+(bool, default = true)
+.br
+ non\-optimal bounds for counterexample\-based quantifier instantiation
+.TP
+.B "cbqiLitDepend"
+(bool, default = true)
+.br
+ dependency lemmas for quantifier alternation in counterexample\-based quantifier instantiation
+.TP
+.B "cbqiInnermost"
+(bool, default = true)
+.br
+only process innermost quantified formulas in counterexample\-based quantifier instantiation
+.TP
+.B "cbqiNestedQE"
+(bool, default = false)
+.br
+process nested quantified formulas with quantifier elimination in counterexample\-based quantifier instantiation
+
+.TP
+.B "quantEpr"
+(bool, default = false)
+.br
+infer whether in effectively propositional fragment, use for cbqi
+.TP
+.B "quantEprMatching"
+(bool, default = true)
+.br
+use matching heuristics for EPR instantiation
+
+.TP
+.B "localTheoryExt"
+(bool, default = false)
+.br
+ do instantiation based on local theory extensions
+.TP
+.B "ltePartialInst"
+(bool, default = false)
+.br
+ partially instantiate local theory quantifiers
+.TP
+.B "lteRestrictInstClosure"
+(bool, default = false)
+.br
+ treat arguments of inst closure as restricted terms for instantiation
+
+.TP
+.B "quantAlphaEquiv"
+(bool, default = true)
+.br
+ infer alpha equivalence between quantified formulas
+.TP
+.B "macrosQuant"
+(bool, default = false)
+.br
+perform quantifiers macro expansion
+.TP
+.B "macrosQuantMode"
+(CVC4::theory::quantifiers::MacrosQuantMode, default = CVC4::theory::quantifiers::MACROS_QUANT_MODE_GROUND_UF)
+.br
+mode for quantifiers macro expansion
+.TP
+.B "quantDynamicSplit"
+(CVC4::theory::quantifiers::QuantDSplitMode, default = CVC4::theory::quantifiers::QUANT_DSPLIT_MODE_NONE)
+.br
+mode for dynamic quantifiers splitting
+.TP
+.B "quantAntiSkolem"
+(bool, default = false)
+.br
+perform anti\-skolemization for quantified formulas
+
+.TP
+.B "quantEqualityEngine"
+(bool, default = false)
+.br
+ maintain congrunce closure over universal equalities
+
+.TP
+.B "trackInstLemmas"
+(bool, default = false)
+.br
+ track instantiation lemmas (for proofs, unsat cores, qe and synthesis minimization)
+
+.TP
+.I "SEP OPTIONS"
+
+.TP
+.B "sepCheckNeg"
+(bool, default = true)
+.br
+check negated spatial assertions
+.TP
+.B "sepExp"
+(bool, default = false)
+.br
+experimental flag for sep
+.TP
+.B "sepMinimalRefine"
+(bool, default = false)
+.br
+only add refinement lemmas for minimal (innermost) assertions
+.TP
+.B "sepDisequalC"
+(bool, default = true)
+.br
+assume cardinality elements are distinct
+.TP
+.B "sepPreSkolemEmp"
+(bool, default = false)
+.br
+eliminate emp constraint at preprocess time
+
+.TP
+.B "sepChildRefine"
+(bool, default = false)
+.br
+child\-specific refinements of negated star, positive wand
+
+.TP
+.I "SETS OPTIONS"
+
+.TP
+.B "setsProxyLemmas"
+(bool, default = false)
+.br
+introduce proxy variables eagerly to shorten lemmas
+.TP
+.B "setsInferAsLemmas"
+(bool, default = true)
+.br
+send inferences as lemmas
+
+.TP
+.B "setsRelEager"
+(bool, default = true)
+.br
+standard effort checks for relations
+
+.TP
+.I "SMT LAYER OPTIONS"
+
+.TP
+.B "forceLogicString"
+(std::string)
+.br
+set the logic, and override all further user attempts to change it (EXPERTS only)
+.TP
+.B "simplificationMode"
+(SimplificationMode, default = SIMPLIFICATION_MODE_BATCH)
+.br
+choose simplification mode, see \-\-simplification=help
+.TP
+.B "doStaticLearning"
+(bool, default = true)
+.br
+use static learning (on by default)
+.TP
+.B "expandDefinitions"
+(bool, default = false)
+.br
+always expand symbol definitions in output
+.TP
+.B "checkModels"
+(bool)
+.br
+after SAT/INVALID/UNKNOWN, check that the generated model satisfies user assertions
+.TP
+.B "dumpModels"
+(bool, default = false)
+.br
+output models after every SAT/INVALID/UNKNOWN response
+.TP
+.B "omitDontCares"
+(bool, default = false)
+.br
+When producing a model, omit variables whose value does not matter
+.TP
+.B "proof"
+(bool, default = false)
+.br
+turn on proof generation
+.TP
+.B "checkProofs"
+(bool)
+.br
+after UNSAT/VALID, machine\-check the generated proof
+.TP
+.B "dumpProofs"
+(bool, default = false)
+.br
+output proofs after every UNSAT/VALID response
+.TP
+.B "dumpInstantiations"
+(bool, default = false)
+.br
+output instantiations of quantified formulas after every UNSAT/VALID response
+.TP
+.B "dumpSynth"
+(bool, default = false)
+.br
+output solution for synthesis conjectures after every UNSAT/VALID response
+.TP
+.B "unsatCores"
+(bool)
+.br
+turn on unsat core generation
+.TP
+.B "checkUnsatCores"
+(bool)
+.br
+after UNSAT/VALID, produce and check an unsat core (expensive)
+.TP
+.B "dumpUnsatCores"
+(bool, default = false)
+.br
+output unsat cores after every UNSAT/VALID response
+.TP
+.B "produceAssignments"
+(bool, default = false)
+.br
+support the get\-assignment command
+.TP
+.B "interactiveMode"
+(bool)
+.br
+deprecated name for produce\-assertions
+.TP
+.B "doITESimp"
+(bool)
+.br
+turn on ite simplification (Kim (and Somenzi) et al., SAT 2009)
+.TP
+.B "doITESimpOnRepeat"
+(bool, default = false)
+.br
+do the ite simplification pass again if repeating simplification
+.TP
+.B "simplifyWithCareEnabled"
+(bool, default = false)
+.br
+enables simplifyWithCare in ite simplificiation
+.TP
+.B "compressItes"
+(bool, default = false)
+.br
+enables compressing ites after ite simplification
+.TP
+.B "unconstrainedSimp"
+(bool, default = false)
+.br
+turn on unconstrained simplification (see Bruttomesso/Brummayer PhD thesis)
+.TP
+.B "repeatSimp"
+(bool)
+.br
+make multiple passes with nonclausal simplifier
+.TP
+.B "zombieHuntThreshold"
+(uint32_t, default = 524288)
+.br
+post ite compression enables zombie removal while the number of nodes is above this threshold
+.TP
+.B "sortInference"
+(bool, default = false)
+.br
+calculate sort inference of input problem, convert the input based on monotonic sorts
+.TP
+.B "abstractValues"
+(bool, default = false)
+.br
+in models, output arrays (and in future, maybe others) using abstract values, as required by the SMT\-LIB standard
+.TP
+.B "modelUninterpDtEnum"
+(bool, default = false)
+.br
+in models, output uninterpreted sorts as datatype enumerations
+.TP
+.B "regularChannelName"
+(std::string)
+.br
+set the regular output channel of the solver
+.TP
+.B "diagnosticChannelName"
+(std::string)
+.br
+set the diagnostic output channel of the solver
+.TP
+.B "rewriteStep"
+(unsigned, default = 1)
+.br
+ammount of resources spent for each rewrite step (EXPERTS only)
+.TP
+.B "theoryCheckStep"
+(unsigned, default = 1)
+.br
+ammount of resources spent for each theory check call (EXPERTS only)
+.TP
+.B "decisionStep"
+(unsigned, default = 1)
+.br
+ammount of getNext decision calls in the decision engine (EXPERTS only)
+
+.TP
+.B "bitblastStep"
+(unsigned, default = 1)
+.br
+ammount of resources spent for each bitblast step (EXPERTS only)
+
+.TP
+.B "parseStep"
+(unsigned, default = 1)
+.br
+ammount of resources spent for each command/expression parsing (EXPERTS only)
+
+.TP
+.B "lemmaStep"
+(unsigned, default = 1)
+.br
+ammount of resources spent when adding lemmas (EXPERTS only)
+
+.TP
+.B "restartStep"
+(unsigned, default = 1)
+.br
+ammount of resources spent for each theory restart (EXPERTS only)
+
+.TP
+.B "cnfStep"
+(unsigned, default = 1)
+.br
+ammount of resources spent for each call to cnf conversion (EXPERTS only)
+
+.TP
+.B "preprocessStep"
+(unsigned, default = 1)
+.br
+ammount of resources spent for each preprocessing step in SmtEngine (EXPERTS only)
+
+.TP
+.B "quantifierStep"
+(unsigned, default = 1)
+.br
+ammount of resources spent for quantifier instantiations (EXPERTS only)
+
+.TP
+.B "satConflictStep"
+(unsigned, default = 1)
+.br
+ammount of resources spent for each sat conflict (main sat solver) (EXPERTS only)
+
+.TP
+.B "bvSatConflictStep"
+(unsigned, default = 1)
+.br
+ammount of resources spent for each sat conflict (bitvectors) (EXPERTS only)
+
+
+.TP
+.B "rewriteApplyToConst"
+(bool, default = false)
+.br
+eliminate function applications, rewriting e.g. f(5) to a new symbol f_5 (EXPERTS only)
+.TP
+.B "replayInputFilename"
+(std::string)
+.br
+replay decisions from file
+.TP
+.B "replayLogFilename"
+(std::string)
+.br
+replay decisions from file
+.TP
+.B "forceNoLimitCpuWhileDump"
+(bool, default = false)
+.br
+Force no CPU limit when dumping models and proofs
+.TP
+.B "solveIntAsBV"
+(uint32_t, default = 0)
+.br
+attempt to solve a pure integer satisfiable problem by bitblasting in sufficient bitwidth (experimental)
+.TP
+.I "STRINGS THEORY OPTIONS"
+
+.TP
+.B "stringExp"
+(bool, default = false)
+.br
+experimental features in the theory of strings
+.TP
+.B "stringLB"
+(unsigned, default = 0)
+.br
+the strategy of LB rule application: 0\-lazy, 1\-eager, 2\-no
+.TP
+.B "stdASCII"
+(bool, default = true)
+.br
+the alphabet contains only characters from the standard ASCII or the extended one
+.TP
+.B "stringFMF"
+(bool, default = false)
+.br
+the finite model finding used by the theory of strings
+
+.TP
+.B "stringEager"
+(bool, default = false)
+.br
+strings eager check
+.TP
+.B "stringEIT"
+(bool, default = false)
+.br
+the eager intersection used by the theory of strings
+.TP
+.B "stringOpt1"
+(bool, default = true)
+.br
+internal option1 for strings: normal form
+.TP
+.B "stringOpt2"
+(bool, default = false)
+.br
+internal option2 for strings: constant regexp splitting
+.TP
+.B "stringIgnNegMembership"
+(bool, default = false)
+.br
+internal for strings: ignore negative membership constraints (fragment checking is needed, left to users for now)
+.TP
+.B "stringLazyPreproc"
+(bool, default = true)
+.br
+perform string preprocessing lazily
+.TP
+.B "stringLenGeqZ"
+(bool, default = false)
+.br
+strings length greater than zero lemmas
+.TP
+.B "stringLenNorm"
+(bool, default = true)
+.br
+strings length normalization lemma
+.TP
+.B "stringSplitEmp"
+(bool, default = true)
+.br
+strings split on empty string
+.TP
+.B "stringInferSym"
+(bool, default = true)
+.br
+strings split on empty string
+.TP
+.B "stringEagerLen"
+(bool, default = true)
+.br
+strings eager length lemmas
+.TP
+.B "stringCheckEntailLen"
+(bool, default = true)
+.br
+check entailment between length terms to reduce splitting
+.TP
+.B "stringProcessLoop"
+(bool, default = true)
+.br
+reduce looping word equations to regular expressions
+.TP
+.B "stringAbortLoop"
+(bool, default = false)
+.br
+abort when a looping word equation is encountered
+.TP
+.B "stringInferAsLemmas"
+(bool, default = false)
+.br
+always send lemmas out instead of making internal inferences
+.TP
+.B "stringRExplainLemmas"
+(bool, default = true)
+.br
+regression explanations for string lemmas
+.TP
+.B "stringMinPrefixExplain"
+(bool, default = true)
+.br
+minimize explanations for prefix of normal forms in strings
+.TP
+.B "stringGuessModel"
+(bool, default = false)
+.br
+use model guessing to avoid string extended function reductions
+.TP
+.B "stringUfReduct"
+(bool, default = false)
+.br
+use uninterpreted functions when applying extended function reductions
+.TP
+.B "stringBinaryCsp"
+(bool, default = false)
+.br
+use binary search when splitting strings
+.TP
+.B "stringLenPropCsp"
+(bool, default = false)
+.br
+do length propagation based on constant splits
+.TP
+.I "THEORY LAYER OPTIONS"
+
+.TP
+.B "theoryOfMode"
+(CVC4::theory::TheoryOfMode, default = CVC4::theory::THEORY_OF_TYPE_BASED)
+.br
+mode for Theory::theoryof() (EXPERTS only)
+.TP
+.B "useTheoryList"
+(std::string)
+.br
+use alternate theory implementation NAME (\-\-use\-theory=help for a list). This option may be repeated or a comma separated list.
+.TP
+.I "UNINTERPRETED FUNCTIONS THEORY OPTIONS"
+
+.TP
+.B "ufSymmetryBreaker"
+(bool, default = true)
+.br
+use UF symmetry breaker (Deharbe et al., CADE 2011)
+.TP
+.B "condenseFunctionValues"
+(bool, default = true)
+.br
+condense models for functions rather than explicitly representing them
+.TP
+.B "ufssRegions"
+(bool, default = true)
+.br
+disable region\-based method for discovering cliques and splits in uf strong solver
+.TP
+.B "ufssEagerSplits"
+(bool, default = false)
+.br
+add splits eagerly for uf strong solver
+.TP
+.B "ufssTotality"
+(bool, default = false)
+.br
+always use totality axioms for enforcing cardinality constraints
+.TP
+.B "ufssTotalityLimited"
+(int, default = \-1)
+.br
+apply totality axioms, but only up to cardinality N (\-1 == do not apply totality axioms, default)
+.TP
+.B "ufssTotalitySymBreak"
+(bool, default = false)
+.br
+apply symmetry breaking for totality axioms
+.TP
+.B "ufssAbortCardinality"
+(int, default = \-1)
+.br
+tells the uf strong solver a cardinality to abort at (\-1 == no limit, default)
+.TP
+.B "ufssExplainedCliques"
+(bool, default = false)
+.br
+use explained clique lemmas for uf strong solver
+.TP
+.B "ufssSimpleCliques"
+(bool, default = true)
+.br
+always use simple clique lemmas for uf strong solver
+.TP
+.B "ufssDiseqPropagation"
+(bool, default = false)
+.br
+eagerly propagate disequalities for uf strong solver
+.TP
+.B "ufssMode"
+(CVC4::theory::uf::UfssMode, default = CVC4::theory::uf::UF_SS_FULL)
+.br
+mode of operation for uf strong solver.
+.TP
+.B "ufssCliqueSplits"
+(bool, default = false)
+.br
+use cliques instead of splitting on demand to shrink model
+.TP
+.B "ufssSymBreak"
+(bool, default = false)
+.br
+finite model finding symmetry breaking techniques
+.TP
+.B "ufssFairness"
+(bool, default = true)
+.br
+use fair strategy for finite model finding multiple sorts
+.TP
+.B "ufssFairnessMonotone"
+(bool, default = false)
+.br
+group monotone sorts when enforcing fairness for finite model finding
+.PD
+.RE
+
+.ad b
+
+.SH VERSION
+This manual page refers to
+.B CVC4
+version 1.5-prerelease.
+.SH BUGS
+A Bugzilla for the CVC4 project is maintained at
+.BR http://cvc4.cs.nyu.edu/bugzilla3/ .
+.SH AUTHORS
+.B CVC4
+is developed by a team of researchers at New York University
+and the University of Iowa.
+See the AUTHORS file in the distribution for a full list of
+contributors.
+.SH "SEE ALSO"
+.BR libcvc4 (3),
+.BR libcvc4parser (3),
+.BR libcvc4compat (3)
+
+Additionally, the CVC4 wiki contains useful information about the
+design and internals of CVC4.  It is maintained at
+.BR http://cvc4.cs.nyu.edu/wiki/ .
diff --git a/doc/options.3cvc_template.in b/doc/options.3cvc_template.in
new file mode 100644
index 0000000..f92faf4
--- /dev/null
+++ b/doc/options.3cvc_template.in
@@ -0,0 +1,43 @@
+.\" Process this file with
+.\" groff -man -Tascii options.3cvc
+.\"
+.TH OPTIONS 3cvc "@MAN_DATE@" "CVC4 release @VERSION@" "CVC4 Internals Documentation"
+.SH NAME
+options \- the options infrastructure
+
+.SH AVAILABLE INTERNAL OPTIONS
+
+.ad l
+
+.RS
+.TP 10
+.I "COMMON OPTIONS"
+${common_manpage_internals_documentation}
+
+${remaining_manpage_internals_documentation}
+.PD
+.RE
+
+.ad b
+
+.SH VERSION
+This manual page refers to
+.B CVC4
+version @VERSION at .
+.SH BUGS
+A Bugzilla for the CVC4 project is maintained at
+.BR http://cvc4.cs.nyu.edu/bugzilla3/ .
+.SH AUTHORS
+.B CVC4
+is developed by a team of researchers at New York University
+and the University of Iowa.
+See the AUTHORS file in the distribution for a full list of
+contributors.
+.SH "SEE ALSO"
+.BR libcvc4 (3),
+.BR libcvc4parser (3),
+.BR libcvc4compat (3)
+
+Additionally, the CVC4 wiki contains useful information about the
+design and internals of CVC4.  It is maintained at
+.BR http://cvc4.cs.nyu.edu/wiki/ .
diff --git a/examples/Makefile.am b/examples/Makefile.am
new file mode 100644
index 0000000..0f5c7db
--- /dev/null
+++ b/examples/Makefile.am
@@ -0,0 +1,95 @@
+SUBDIRS = nra-translate sets-translate hashsmt api .
+
+AM_CPPFLAGS = \
+	-I at srcdir@/../src/include -I at srcdir@/../src -I at builddir@/../src $(ANTLR_INCLUDES)
+AM_CXXFLAGS = -Wall
+AM_CFLAGS = -Wall
+
+
+noinst_PROGRAMS = \
+	simple_vc_cxx \
+	translator
+
+
+if CVC4_BUILD_LIBCOMPAT
+noinst_PROGRAMS += \
+	simple_vc_compat_cxx
+if CVC4_LANGUAGE_BINDING_C
+noinst_PROGRAMS += \
+	simple_vc_compat_c
+endif
+endif
+
+noinst_DATA =
+
+if CVC4_LANGUAGE_BINDING_JAVA
+noinst_DATA += \
+	SimpleVC.class
+if CVC4_BUILD_LIBCOMPAT
+noinst_DATA += \
+	SimpleVCCompat.class
+endif
+endif
+
+
+simple_vc_cxx_SOURCES = \
+	simple_vc_cxx.cpp
+simple_vc_cxx_LDADD = \
+	@builddir@/../src/parser/libcvc4parser.la \
+	@builddir@/../src/libcvc4.la
+
+simple_vc_compat_cxx_SOURCES = \
+	simple_vc_compat_cxx.cpp
+simple_vc_compat_cxx_LDADD = \
+	@builddir@/../src/compat/libcvc4compat.la \
+	@builddir@/../src/parser/libcvc4parser.la \
+	@builddir@/../src/libcvc4.la
+
+simple_vc_compat_c_SOURCES = \
+	simple_vc_compat_c.c
+simple_vc_compat_c_LDADD = \
+	@builddir@/../src/bindings/compat/c/libcvc4bindings_c_compat.la
+
+translator_SOURCES = \
+	translator.cpp
+translator_LDADD = \
+	@builddir@/../src/parser/libcvc4parser.la \
+	@builddir@/../src/libcvc4.la
+
+SimpleVC.class: SimpleVC.java
+	$(AM_V_JAVAC)$(JAVAC) -classpath "@builddir@/../src/bindings/CVC4.jar" -d "@builddir@" $<
+SimpleVCCompat.class: SimpleVCCompat.java
+	$(AM_V_JAVAC)$(JAVAC) -classpath "@builddir@/../src/bindings/compat/java/CVC4compat.jar" -d "@builddir@" $<
+
+EXTRA_DIST = \
+	SimpleVC.java \
+	SimpleVCCompat.java \
+	SimpleVC.ml \
+	SimpleVC.php \
+	SimpleVC.pl \
+	SimpleVC.py \
+	SimpleVC.rb \
+	SimpleVC.tcl \
+	README
+
+if STATIC_BINARY
+simple_vc_cxx_LINK = $(CXXLINK) -all-static
+simple_vc_compat_cxx_LINK = $(CXXLINK) -all-static
+simple_vc_compat_c_LINK = $(LINK) -all-static
+else
+simple_vc_cxx_LINK = $(CXXLINK)
+simple_vc_compat_cxx_LINK = $(CXXLINK)
+simple_vc_compat_c_LINK = $(LINK)
+endif
+
+# for installation
+examplesdir = $(docdir)/$(subdir)
+examples_DATA = $(DIST_SOURCES) $(EXTRA_DIST)
+
+MOSTLYCLEANFILES = $(noinst_DATA)
+
+# for silent automake rules
+AM_V_JAVAC = $(am__v_JAVAC_$(V))
+am__v_JAVAC_ = $(am__v_JAVAC_$(AM_DEFAULT_VERBOSITY))
+am__v_JAVAC_0 = @echo "  JAVAC " $@;
+
diff --git a/examples/Makefile.in b/examples/Makefile.in
new file mode 100644
index 0000000..44cb629
--- /dev/null
+++ b/examples/Makefile.in
@@ -0,0 +1,1063 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+noinst_PROGRAMS = simple_vc_cxx$(EXEEXT) translator$(EXEEXT) \
+	$(am__EXEEXT_1) $(am__EXEEXT_2)
+ at CVC4_BUILD_LIBCOMPAT_TRUE@am__append_1 = \
+ at CVC4_BUILD_LIBCOMPAT_TRUE@	simple_vc_compat_cxx
+
+ at CVC4_BUILD_LIBCOMPAT_TRUE@@CVC4_LANGUAGE_BINDING_C_TRUE at am__append_2 = \
+ at CVC4_BUILD_LIBCOMPAT_TRUE@@CVC4_LANGUAGE_BINDING_C_TRUE@	simple_vc_compat_c
+
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@am__append_3 = \
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@	SimpleVC.class
+
+ at CVC4_BUILD_LIBCOMPAT_TRUE@@CVC4_LANGUAGE_BINDING_JAVA_TRUE at am__append_4 = \
+ at CVC4_BUILD_LIBCOMPAT_TRUE@@CVC4_LANGUAGE_BINDING_JAVA_TRUE@	SimpleVCCompat.class
+
+subdir = examples
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+ at CVC4_BUILD_LIBCOMPAT_TRUE@am__EXEEXT_1 =  \
+ at CVC4_BUILD_LIBCOMPAT_TRUE@	simple_vc_compat_cxx$(EXEEXT)
+ at CVC4_BUILD_LIBCOMPAT_TRUE@@CVC4_LANGUAGE_BINDING_C_TRUE at am__EXEEXT_2 = simple_vc_compat_c$(EXEEXT)
+PROGRAMS = $(noinst_PROGRAMS)
+am_simple_vc_compat_c_OBJECTS = simple_vc_compat_c.$(OBJEXT)
+simple_vc_compat_c_OBJECTS = $(am_simple_vc_compat_c_OBJECTS)
+simple_vc_compat_c_DEPENDENCIES = @builddir@/../src/bindings/compat/c/libcvc4bindings_c_compat.la
+am_simple_vc_compat_cxx_OBJECTS = simple_vc_compat_cxx.$(OBJEXT)
+simple_vc_compat_cxx_OBJECTS = $(am_simple_vc_compat_cxx_OBJECTS)
+simple_vc_compat_cxx_DEPENDENCIES =  \
+	@builddir@/../src/compat/libcvc4compat.la \
+	@builddir@/../src/parser/libcvc4parser.la \
+	@builddir@/../src/libcvc4.la
+am_simple_vc_cxx_OBJECTS = simple_vc_cxx.$(OBJEXT)
+simple_vc_cxx_OBJECTS = $(am_simple_vc_cxx_OBJECTS)
+simple_vc_cxx_DEPENDENCIES =  \
+	@builddir@/../src/parser/libcvc4parser.la \
+	@builddir@/../src/libcvc4.la
+am_translator_OBJECTS = translator.$(OBJEXT)
+translator_OBJECTS = $(am_translator_OBJECTS)
+translator_DEPENDENCIES = @builddir@/../src/parser/libcvc4parser.la \
+	@builddir@/../src/libcvc4.la
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+SOURCES = $(simple_vc_compat_c_SOURCES) \
+	$(simple_vc_compat_cxx_SOURCES) $(simple_vc_cxx_SOURCES) \
+	$(translator_SOURCES)
+DIST_SOURCES = $(simple_vc_compat_c_SOURCES) \
+	$(simple_vc_compat_cxx_SOURCES) $(simple_vc_cxx_SOURCES) \
+	$(translator_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(examplesdir)"
+DATA = $(examples_DATA) $(noinst_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp \
+	README
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+SUBDIRS = nra-translate sets-translate hashsmt api .
+AM_CPPFLAGS = \
+	-I at srcdir@/../src/include -I at srcdir@/../src -I at builddir@/../src $(ANTLR_INCLUDES)
+
+AM_CXXFLAGS = -Wall
+AM_CFLAGS = -Wall
+noinst_DATA = $(am__append_3) $(am__append_4)
+simple_vc_cxx_SOURCES = \
+	simple_vc_cxx.cpp
+
+simple_vc_cxx_LDADD = \
+	@builddir@/../src/parser/libcvc4parser.la \
+	@builddir@/../src/libcvc4.la
+
+simple_vc_compat_cxx_SOURCES = \
+	simple_vc_compat_cxx.cpp
+
+simple_vc_compat_cxx_LDADD = \
+	@builddir@/../src/compat/libcvc4compat.la \
+	@builddir@/../src/parser/libcvc4parser.la \
+	@builddir@/../src/libcvc4.la
+
+simple_vc_compat_c_SOURCES = \
+	simple_vc_compat_c.c
+
+simple_vc_compat_c_LDADD = \
+	@builddir@/../src/bindings/compat/c/libcvc4bindings_c_compat.la
+
+translator_SOURCES = \
+	translator.cpp
+
+translator_LDADD = \
+	@builddir@/../src/parser/libcvc4parser.la \
+	@builddir@/../src/libcvc4.la
+
+EXTRA_DIST = \
+	SimpleVC.java \
+	SimpleVCCompat.java \
+	SimpleVC.ml \
+	SimpleVC.php \
+	SimpleVC.pl \
+	SimpleVC.py \
+	SimpleVC.rb \
+	SimpleVC.tcl \
+	README
+
+ at STATIC_BINARY_FALSE@simple_vc_cxx_LINK = $(CXXLINK)
+ at STATIC_BINARY_TRUE@simple_vc_cxx_LINK = $(CXXLINK) -all-static
+ at STATIC_BINARY_FALSE@simple_vc_compat_cxx_LINK = $(CXXLINK)
+ at STATIC_BINARY_TRUE@simple_vc_compat_cxx_LINK = $(CXXLINK) -all-static
+ at STATIC_BINARY_FALSE@simple_vc_compat_c_LINK = $(LINK)
+ at STATIC_BINARY_TRUE@simple_vc_compat_c_LINK = $(LINK) -all-static
+
+# for installation
+examplesdir = $(docdir)/$(subdir)
+examples_DATA = $(DIST_SOURCES) $(EXTRA_DIST)
+MOSTLYCLEANFILES = $(noinst_DATA)
+
+# for silent automake rules
+AM_V_JAVAC = $(am__v_JAVAC_$(V))
+am__v_JAVAC_ = $(am__v_JAVAC_$(AM_DEFAULT_VERBOSITY))
+am__v_JAVAC_0 = @echo "  JAVAC " $@;
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu examples/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstPROGRAMS:
+	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+	echo " rm -f" $$list; \
+	rm -f $$list || exit $$?; \
+	test -n "$(EXEEXT)" || exit 0; \
+	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+	echo " rm -f" $$list; \
+	rm -f $$list
+
+simple_vc_compat_c$(EXEEXT): $(simple_vc_compat_c_OBJECTS) $(simple_vc_compat_c_DEPENDENCIES) $(EXTRA_simple_vc_compat_c_DEPENDENCIES) 
+	@rm -f simple_vc_compat_c$(EXEEXT)
+	$(AM_V_GEN)$(simple_vc_compat_c_LINK) $(simple_vc_compat_c_OBJECTS) $(simple_vc_compat_c_LDADD) $(LIBS)
+
+simple_vc_compat_cxx$(EXEEXT): $(simple_vc_compat_cxx_OBJECTS) $(simple_vc_compat_cxx_DEPENDENCIES) $(EXTRA_simple_vc_compat_cxx_DEPENDENCIES) 
+	@rm -f simple_vc_compat_cxx$(EXEEXT)
+	$(AM_V_GEN)$(simple_vc_compat_cxx_LINK) $(simple_vc_compat_cxx_OBJECTS) $(simple_vc_compat_cxx_LDADD) $(LIBS)
+
+simple_vc_cxx$(EXEEXT): $(simple_vc_cxx_OBJECTS) $(simple_vc_cxx_DEPENDENCIES) $(EXTRA_simple_vc_cxx_DEPENDENCIES) 
+	@rm -f simple_vc_cxx$(EXEEXT)
+	$(AM_V_GEN)$(simple_vc_cxx_LINK) $(simple_vc_cxx_OBJECTS) $(simple_vc_cxx_LDADD) $(LIBS)
+
+translator$(EXEEXT): $(translator_OBJECTS) $(translator_DEPENDENCIES) $(EXTRA_translator_DEPENDENCIES) 
+	@rm -f translator$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(translator_OBJECTS) $(translator_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/simple_vc_compat_c.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/simple_vc_compat_cxx.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/simple_vc_cxx.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/translator.Po at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-examplesDATA: $(examples_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(examples_DATA)'; test -n "$(examplesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(examplesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(examplesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(examplesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(examplesdir)" || exit $$?; \
+	done
+
+uninstall-examplesDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(examples_DATA)'; test -n "$(examplesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(examplesdir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(PROGRAMS) $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+	for dir in "$(DESTDIR)$(examplesdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+	mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-examplesDATA
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-examplesDATA
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am clean clean-generic clean-libtool \
+	clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-examplesDATA install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-examplesDATA
+
+.PRECIOUS: Makefile
+
+
+SimpleVC.class: SimpleVC.java
+	$(AM_V_JAVAC)$(JAVAC) -classpath "@builddir@/../src/bindings/CVC4.jar" -d "@builddir@" $<
+SimpleVCCompat.class: SimpleVCCompat.java
+	$(AM_V_JAVAC)$(JAVAC) -classpath "@builddir@/../src/bindings/compat/java/CVC4compat.jar" -d "@builddir@" $<
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/examples/README b/examples/README
new file mode 100644
index 0000000..5f5bb09
--- /dev/null
+++ b/examples/README
@@ -0,0 +1,34 @@
+This directory contains usage examples of CVC4's different language
+bindings, library APIs, and also tutorial examples from the tutorials
+available at http://cvc4.cs.nyu.edu/wiki/Tutorials
+
+*** Files named SimpleVC*, simple_vc*
+
+These are examples of how to use CVC4 with each of its library
+interfaces (APIs) and language bindings.  They are essentially "hello
+world" examples, and do not fully demonstrate the interfaces, but
+function as a starting point to using simple expressions and solving
+functionality through each library.
+
+*** Targeted examples
+
+The "api" directory contains some more specifically-targeted
+examples (for bitvectors, for arithmetic, etc.).  The "api/java"
+directory contains the same examples in Java.
+
+*** Installing example source code
+
+Examples are not automatically installed by "make install".  If you
+wish to install them, use "make install-examples" after you configure
+your CVC4 source tree.  They'll appear in your documentation
+directory, under the "examples" subdirectory (so, by default,
+in /usr/local/share/doc/cvc4/examples).
+
+*** Building examples
+
+Examples can be built as a separate step, after building CVC4 from
+source.  After building CVC4, you can run "make examples".  You'll
+find the built binaries in builds/examples (or just in "examples" if
+you configured a build directory outside of the source tree).
+
+-- Morgan Deters <mdeters at cs.nyu.edu>  Tue, 24 Dec 2013 09:12:59 -0500
diff --git a/examples/SimpleVC.java b/examples/SimpleVC.java
new file mode 100644
index 0000000..a72eba9
--- /dev/null
+++ b/examples/SimpleVC.java
@@ -0,0 +1,70 @@
+/*********************                                                        */
+/*! \file SimpleVC.java
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A simple demonstration of the Java interface
+ **
+ ** A simple demonstration of the Java interface.
+ **
+ ** To run the resulting class file, you need to do something like the
+ ** following:
+ **
+ **   java \
+ **     -classpath path/to/CVC4.jar \
+ **     -Djava.library.path=/dir/containing/java/CVC4.so \
+ **     SimpleVC
+ **
+ ** For example, if you are building CVC4 without specifying your own
+ ** build directory, the build process puts everything in builds/, and
+ ** you can run this example (after building it with "make") like this:
+ **
+ **   java \
+ **     -classpath builds/examples:builds/src/bindings/CVC4.jar \
+ **     -Djava.library.path=builds/src/bindings/java/.libs \
+ **     SimpleVC
+ **/
+
+import edu.nyu.acsys.CVC4.*;
+
+public class SimpleVC {
+  public static void main(String[] args) {
+    System.loadLibrary("cvc4jni");
+
+    ExprManager em = new ExprManager();
+    SmtEngine smt = new SmtEngine(em);
+
+    // Prove that for integers x and y:
+    //   x > 0 AND y > 0  =>  2x + y >= 3
+
+    Type integer = em.integerType();
+
+    Expr x = em.mkVar("x", integer);
+    Expr y = em.mkVar("y", integer);
+    Expr zero = em.mkConst(new Rational(0));
+
+    Expr x_positive = em.mkExpr(Kind.GT, x, zero);
+    Expr y_positive = em.mkExpr(Kind.GT, y, zero);
+
+    Expr two = em.mkConst(new Rational(2));
+    Expr twox = em.mkExpr(Kind.MULT, two, x);
+    Expr twox_plus_y = em.mkExpr(Kind.PLUS, twox, y);
+
+    Expr three = em.mkConst(new Rational(3));
+    Expr twox_plus_y_geq_3 = em.mkExpr(Kind.GEQ, twox_plus_y, three);
+
+    Expr formula =
+      new Expr(em.mkExpr(Kind.AND, x_positive, y_positive)).
+      impExpr(new Expr(twox_plus_y_geq_3));
+
+    System.out.println("Checking validity of formula " + formula + " with CVC4.");
+    System.out.println("CVC4 should report VALID.");
+    System.out.println("Result from CVC4 is: " + smt.query(formula));
+  }
+}
diff --git a/examples/SimpleVC.ml b/examples/SimpleVC.ml
new file mode 100644
index 0000000..c89341d
--- /dev/null
+++ b/examples/SimpleVC.ml
@@ -0,0 +1,91 @@
+(*********************                                                        **
+**! \file SimpleVC.ml
+*** \verbatim
+*** Original author: mdeters
+*** Major contributors: none
+*** 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
+*** See the file COPYING in the top-level source directory for licensing
+*** information.\endverbatim
+***
+*** \brief A simple demonstration of the OCaml interface
+***
+*** A simple demonstration of the OCaml interface.  Compare to the
+*** C++ interface in simple_vc_cxx.cpp; they are quite similar.
+***
+*** To run, use something like:
+***
+***   LD_LIBRARY_PATH=../builds/src/bindings/ocaml/.libs \
+***     ../builds/src/bindings/cvc4_ocaml_top -I ../builds/src/bindings/ocaml \
+***     SimpleVC.ml
+***
+*** After you "make install" CVC4, it's much easier; the cvc4_ocaml_top goes in
+*** $prefix/bin, and it's automatically set up the load the .cmo and .cmi files
+*** from $prefix/lib/ocaml/cvc4, in which they get installed.  Then you just
+*** have to: cvc4_ocaml_top -I $prefix/lib/ocaml/cvc4
+***)
+
+open Swig
+open CVC4
+
+let em = new_ExprManager '()
+let smt = new_SmtEngine(em)
+
+(* Prove that for integers x and y:
+ *   x > 0 AND y > 0  =>  2x + y >= 3 *)
+
+let integer = em->integerType()
+
+let x = em->mkVar(integer) (* em->mkVar("x", integer) *)
+let y = em->mkVar(integer) (* em->mkVar("y", integer) *)
+let integerZero = new_Integer '("0", 10)
+let zero = em->mkConst(integerZero)
+
+(* OK, this is really strange.  We can call mkExpr(36, ...) for
+ * example, with the int value of the operator Kind we want,
+ * or we can compute it.  But if we compute it, we have to rip
+ * it out of its C_int, then wrap it again a C_int, in order
+ * for the parser to make it go through. *)
+let geq = C_int (get_int (enum_to_int `Kind_t (``GEQ)))
+let gt = C_int (get_int (enum_to_int `Kind_t (``GT)))
+let mult = C_int (get_int (enum_to_int `Kind_t (``MULT)))
+let plus = C_int (get_int (enum_to_int `Kind_t (``PLUS)))
+let and_kind = C_int (get_int (enum_to_int `Kind_t (``AND)))
+let implies = C_int (get_int (enum_to_int `Kind_t (``IMPLIES)))
+
+(* gt = 35, but the parser screws up if we put "geq" what follows *)
+let x_positive = em->mkExpr(gt, x, zero)
+let y_positive = em->mkExpr(gt, y, zero)
+
+let integerTwo = new_Integer '("2", 10)
+let two = em->mkConst(integerTwo)
+let twox = em->mkExpr(mult, two, x)
+let twox_plus_y = em->mkExpr(plus, twox, y)
+
+let integerThree = new_Integer '("3", 10)
+let three = em->mkConst(integerThree)
+let twox_plus_y_geq_3 = em->mkExpr(geq, twox_plus_y, three)
+
+let lhs = em->mkExpr(and_kind, x_positive, y_positive)
+
+(* This fails for some reason. *)
+(* let rhs = new_Expr(twox_plus_y_geq_3)
+   let formula = new_Expr(lhs)->impExpr(rhs) *)
+
+let formula = em->mkExpr(implies, lhs, twox_plus_y_geq_3)
+
+let bformula = new_Expr(formula) in
+
+print_string "Checking validity of formula " ;
+print_string (get_string (formula->toString ())) ;
+print_string " with CVC4." ;
+print_newline () ;
+print_string "CVC4 should report VALID." ;
+print_newline () ;
+print_string "Result from CVC4 is: " ;
+print_string (get_string (smt->query(bformula)->toString ())) ;
+print_newline ()
+;;
diff --git a/examples/SimpleVC.php b/examples/SimpleVC.php
new file mode 100755
index 0000000..3294467
--- /dev/null
+++ b/examples/SimpleVC.php
@@ -0,0 +1,56 @@
+#! /usr/bin/php
+##! \file SimpleVC.php
+### \verbatim
+### Original author: mdeters
+### Major contributors: none
+### 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
+### See the file COPYING in the top-level source directory for licensing
+### information.\endverbatim
+###
+### \brief A simple demonstration of the PHP interface
+###
+### A simple demonstration of the PHP interface.  Compare to the
+### C++ interface in simple_vc_cxx.cpp; they are quite similar.
+###
+### To run, use something like:
+###
+###   ln -s ../builds/src/bindings/php/.libs/CVC4.so CVC4.so
+###   ln -s ../builds/src/bindings/php/CVC4.php CVC4.php
+###   ./SimpleVC.php
+####
+
+use strict;
+use CVC4;
+
+my $em = new CVC4::ExprManager();
+my $smt = new CVC4::SmtEngine($em);
+
+# Prove that for integers x and y:
+#   x > 0 AND y > 0  =>  2x + y >= 3
+
+my $integer = $em->integerType();
+
+my $x = $em->mkVar("x", $integer);
+my $y = $em->mkVar("y", $integer);
+my $zero = $em->mkConst(new CVC4::Integer(0));
+
+my $x_positive = $em->mkExpr($CVC4::GT, $x, $zero);
+my $y_positive = $em->mkExpr($CVC4::GT, $y, $zero);
+
+my $two = $em->mkConst(new CVC4::Integer(2));
+my $twox = $em->mkExpr($CVC4::MULT, $two, $x);
+my $twox_plus_y = $em->mkExpr($CVC4::PLUS, $twox, $y);
+
+my $three = $em->mkConst(new CVC4::Integer(3));
+my $twox_plus_y_geq_3 = $em->mkExpr($CVC4::GEQ, $twox_plus_y, $three);
+
+my $formula = new CVC4::Expr($em->mkExpr($CVC4::AND, $x_positive, $y_positive))->impExpr(new CVC4::Expr($twox_plus_y_geq_3));
+
+print "Checking validity of formula " . $formula->toString() . " with CVC4.\n";
+print "CVC4 should report VALID.\n";
+print "Result from CVC4 is: " . $smt->query($formula)->toString() . "\n";
+
diff --git a/examples/SimpleVC.pl b/examples/SimpleVC.pl
new file mode 100755
index 0000000..998c28b
--- /dev/null
+++ b/examples/SimpleVC.pl
@@ -0,0 +1,56 @@
+#! /usr/bin/perl -w
+##! \file SimpleVC.pl
+### \verbatim
+### Original author: mdeters
+### Major contributors: none
+### 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
+### See the file COPYING in the top-level source directory for licensing
+### information.\endverbatim
+###
+### \brief A simple demonstration of the Perl interface
+###
+### A simple demonstration of the Perl interface.  Compare to the
+### C++ interface in simple_vc_cxx.cpp; they are quite similar.
+###
+### To run, use something like:
+###
+###   ln -s ../builds/src/bindings/perl/.libs/CVC4.so CVC4.so
+###   ln -s ../builds/src/bindings/perl/CVC4.pm CVC4.pm
+###   ./SimpleVC.pl
+####
+
+use strict;
+use CVC4;
+
+my $em = new CVC4::ExprManager();
+my $smt = new CVC4::SmtEngine($em);
+
+# Prove that for integers x and y:
+#   x > 0 AND y > 0  =>  2x + y >= 3
+
+my $integer = $em->integerType();
+
+my $x = $em->mkVar("x", $integer);
+my $y = $em->mkVar("y", $integer);
+my $zero = $em->mkConst(new CVC4::Integer(0));
+
+my $x_positive = $em->mkExpr($CVC4::GT, $x, $zero);
+my $y_positive = $em->mkExpr($CVC4::GT, $y, $zero);
+
+my $two = $em->mkConst(new CVC4::Integer(2));
+my $twox = $em->mkExpr($CVC4::MULT, $two, $x);
+my $twox_plus_y = $em->mkExpr($CVC4::PLUS, $twox, $y);
+
+my $three = $em->mkConst(new CVC4::Integer(3));
+my $twox_plus_y_geq_3 = $em->mkExpr($CVC4::GEQ, $twox_plus_y, $three);
+
+my $formula = new CVC4::Expr($em->mkExpr($CVC4::AND, $x_positive, $y_positive))->impExpr(new CVC4::Expr($twox_plus_y_geq_3));
+
+print "Checking validity of formula " . $formula->toString() . " with CVC4.\n";
+print "CVC4 should report VALID.\n";
+print "Result from CVC4 is: " . $smt->query($formula)->toString() . "\n";
+
diff --git a/examples/SimpleVC.py b/examples/SimpleVC.py
new file mode 100755
index 0000000..18be0fd
--- /dev/null
+++ b/examples/SimpleVC.py
@@ -0,0 +1,64 @@
+#! /usr/bin/python
+##! \file SimpleVC.py
+### \verbatim
+### Original author: mdeters
+### Major contributors: none
+### 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
+### See the file COPYING in the top-level source directory for licensing
+### information.\endverbatim
+###
+### \brief A simple demonstration of the Python interface
+###
+### A simple demonstration of the Python interface.  Compare to the
+### C++ interface in simple_vc_cxx.cpp; they are quite similar.
+###
+### To run, use something like:
+###
+###   ln -s ../builds/src/bindings/python/CVC4.py CVC4.py
+###   ln -s ../builds/src/bindings/python/.libs/CVC4.so _CVC4.so
+###   ./SimpleVC.py
+####
+
+import CVC4
+from CVC4 import ExprManager, SmtEngine, Rational, Expr
+
+import sys
+
+def main():
+  em = ExprManager()
+  smt = SmtEngine(em)
+
+  # Prove that for integers x and y:
+  #   x > 0 AND y > 0  =>  2x + y >= 3
+
+  integer = em.integerType()
+
+  x = em.mkVar("x", integer)
+  y = em.mkVar("y", integer)
+  zero = em.mkConst(Rational(0))
+
+  x_positive = em.mkExpr(CVC4.GT, x, zero)
+  y_positive = em.mkExpr(CVC4.GT, y, zero)
+
+  two = em.mkConst(Rational(2))
+  twox = em.mkExpr(CVC4.MULT, two, x)
+  twox_plus_y = em.mkExpr(CVC4.PLUS, twox, y)
+
+  three = em.mkConst(Rational(3))
+  twox_plus_y_geq_3 = em.mkExpr(CVC4.GEQ, twox_plus_y, three)
+
+  formula = Expr(em.mkExpr(CVC4.AND, x_positive, y_positive)).impExpr(Expr(twox_plus_y_geq_3))
+
+  print "Checking validity of formula " + formula.toString() + " with CVC4."
+  print "CVC4 should report VALID."
+  print "Result from CVC4 is: " + smt.query(formula).toString()
+
+  return 0
+
+if __name__ == '__main__':
+  sys.exit(main())
+
diff --git a/examples/SimpleVC.rb b/examples/SimpleVC.rb
new file mode 100755
index 0000000..0d19ef4
--- /dev/null
+++ b/examples/SimpleVC.rb
@@ -0,0 +1,57 @@
+#! /usr/bin/ruby
+##! \file SimpleVC.rb
+### \verbatim
+### Original author: mdeters
+### Major contributors: none
+### 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
+### See the file COPYING in the top-level source directory for licensing
+### information.\endverbatim
+###
+### \brief A simple demonstration of the Ruby interface
+###
+### A simple demonstration of the Ruby interface.  Compare to the
+### C++ interface in simple_vc_cxx.cpp; they are quite similar.
+###
+### To run, use something like:
+###
+###   ln -s ../builds/src/bindings/ruby/.libs/CVC4.so CVC4.so
+###   ./SimpleVC.rb
+####
+
+require 'CVC4'
+include CVC4 # CVC4::Integer still has to be qualified
+
+em = ExprManager.new
+smt = SmtEngine.new(em)
+
+# Prove that for integers x and y:
+#   x > 0 AND y > 0  =>  2x + y >= 3
+
+integer = em.integerType
+
+x = em.mkVar("x", integer)
+y = em.mkVar("y", integer)
+zero = em.mkConst(CVC4::Integer.new(0))
+
+x_positive = em.mkExpr(GT, x, zero)
+y_positive = em.mkExpr(GT, y, zero)
+
+two = em.mkConst(CVC4::Integer.new(2))
+twox = em.mkExpr(MULT, two, x)
+twox_plus_y = em.mkExpr(PLUS, twox, y)
+
+three = em.mkConst(CVC4::Integer.new(3))
+twox_plus_y_geq_3 = em.mkExpr(GEQ, twox_plus_y, three)
+
+formula = Expr.new(em.mkExpr(AND, x_positive, y_positive)).impExpr(Expr.new(twox_plus_y_geq_3))
+
+puts "Checking validity of formula " + formula.toString + " with CVC4."
+puts "CVC4 should report VALID."
+puts "Result from CVC4 is: " + smt.query(formula).toString
+
+exit
+
diff --git a/examples/SimpleVC.tcl b/examples/SimpleVC.tcl
new file mode 100755
index 0000000..ed0decb
--- /dev/null
+++ b/examples/SimpleVC.tcl
@@ -0,0 +1,54 @@
+#! /usr/bin/tclsh
+##! \file SimpleVC.tcl
+### \verbatim
+### Original author: mdeters
+### Major contributors: none
+### 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
+### See the file COPYING in the top-level source directory for licensing
+### information.\endverbatim
+###
+### \brief A simple demonstration of the Tcl interface
+###
+### A simple demonstration of the Tcl interface.  Compare to the
+### C++ interface in simple_vc_cxx.cpp; they are quite similar.
+###
+### To run, use something like:
+###
+###   ln -s ../builds/src/bindings/tcl/.libs/CVC4.so CVC4.so
+###   ./SimpleVC.tcl
+####
+
+load CVC4.so CVC4
+
+ExprManager em
+SmtEngine smt em
+
+# Prove that for integers x and y:
+#   x > 0 AND y > 0  =>  2x + y >= 3
+
+set integer [ExprManager_integerType em]
+
+set x [ExprManager_mkVar em "x" $integer]
+set y [ExprManager_mkVar em "y" $integer]
+set zero [ExprManager_mkConst em [Integer _ 0]]
+
+set x_positive [ExprManager_mkExpr em $GT $x $zero]
+set y_positive [ExprManager_mkExpr em $GT $y $zero]
+
+set two [ExprManager_mkConst em [Integer _ 2]]
+set twox [ExprManager_mkExpr em $MULT $two $x]
+set twox_plus_y [ExprManager_mkExpr em $PLUS $twox $y]
+
+set three [ExprManager_mkConst em [Integer _ 3]]
+set twox_plus_y_geq_3 [ExprManager_mkExpr em $GEQ $twox_plus_y $three]
+
+set formula [Expr_impExpr [Expr _1 [ExprManager_mkExpr em $AND $x_positive $y_positive]] [Expr _2 $twox_plus_y_geq_3]]
+
+puts "Checking validity of formula [Expr_toString $formula] with CVC4."
+puts "CVC4 should report VALID."
+puts "Result from CVC4 is: [Result_toString [SmtEngine_query smt $formula]]"
+
diff --git a/examples/SimpleVCCompat.java b/examples/SimpleVCCompat.java
new file mode 100644
index 0000000..b366bd3
--- /dev/null
+++ b/examples/SimpleVCCompat.java
@@ -0,0 +1,68 @@
+/*********************                                                        */
+/*! \file SimpleVCCompat.java
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A simple demonstration of the Java compatibility interface
+ ** (quite similar to the old CVC3 Java interface)
+ **
+ ** A simple demonstration of the Java compatibility interface
+ ** (quite similar to the old CVC3 Java interface).
+ **
+ ** To run the resulting class file, you need to do something like the
+ ** following:
+ **
+ **   java \
+ **     -classpath path/to/CVC4compat.jar \
+ **     -Djava.library.path=/dir/containing/libcvc4bindings_java_compat.so \
+ **     SimpleVCCompat
+ **
+ ** For example, if you are building CVC4 without specifying your own
+ ** build directory, the build process puts everything in builds/, and
+ ** you can run this example (after building it with "make") like this:
+ **
+ **   java \
+ **     -classpath builds/examples:builds/src/bindings/compat/java/CVC4compat.jar \
+ **     -Djava.library.path=builds/src/bindings/compat/java/.libs \
+ **     SimpleVCCompat
+ **/
+
+import cvc3.*;
+
+public class SimpleVCCompat {
+  public static void main(String[] args) {
+    ValidityChecker vc = ValidityChecker.create();
+
+    // Prove that for integers x and y:
+    //   x > 0 AND y > 0  =>  2x + y >= 3
+
+    Type integer = vc.intType();
+
+    Expr x = vc.varExpr("x", integer);
+    Expr y = vc.varExpr("y", integer);
+    Expr zero = vc.ratExpr(0);
+
+    Expr x_positive = vc.gtExpr(x, zero);
+    Expr y_positive = vc.gtExpr(y, zero);
+
+    Expr two = vc.ratExpr(2);
+    Expr twox = vc.multExpr(two, x);
+    Expr twox_plus_y = vc.plusExpr(twox, y);
+
+    Expr three = vc.ratExpr(3);
+    Expr twox_plus_y_geq_3 = vc.geExpr(twox_plus_y, three);
+
+    Expr formula = vc.impliesExpr(vc.andExpr(x_positive, y_positive),
+                                  twox_plus_y_geq_3);
+
+    System.out.println("Checking validity of formula " + formula + " with CVC4.");
+    System.out.println("CVC4 should report VALID.");
+    System.out.println("Result from CVC4 is: " + vc.query(formula));
+  }
+}
diff --git a/examples/api/Makefile.am b/examples/api/Makefile.am
new file mode 100644
index 0000000..c76bf9d
--- /dev/null
+++ b/examples/api/Makefile.am
@@ -0,0 +1,70 @@
+SUBDIRS = . java
+
+AM_CPPFLAGS = \
+	-I at srcdir@/../../src/include -I at srcdir@/../../src -I at builddir@/../../src $(ANTLR_INCLUDES)
+AM_CXXFLAGS = -Wall
+AM_CFLAGS = -Wall
+
+noinst_PROGRAMS = \
+	bitvectors \
+	bitvectors_and_arrays \
+	combination \
+	datatypes \
+        extract \
+	helloworld \
+	linear_arith \
+	sets \
+	strings
+
+noinst_DATA =
+
+bitvectors_SOURCES = \
+	bitvectors.cpp
+bitvectors_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+bitvectors_and_arrays_SOURCES = \
+	bitvectors_and_arrays.cpp
+bitvectors_and_arrays_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+combination_SOURCES = \
+	combination.cpp
+combination_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+datatypes_SOURCES = \
+	datatypes.cpp
+datatypes_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+extract_SOURCES = \
+	extract.cpp
+extract_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+helloworld_SOURCES = \
+	helloworld.cpp
+helloworld_CXXFLAGS = \
+	-DCVC4_MAKE_EXAMPLES
+helloworld_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+linear_arith_SOURCES = \
+	linear_arith.cpp
+linear_arith_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+sets_SOURCES = \
+	sets.cpp
+sets_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+strings_SOURCES = \
+	strings.cpp
+strings_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+# for installation
+examplesdir = $(docdir)/$(subdir)
+examples_DATA = $(DIST_SOURCES) $(EXTRA_DIST)
diff --git a/examples/api/Makefile.in b/examples/api/Makefile.in
new file mode 100644
index 0000000..02cfec6
--- /dev/null
+++ b/examples/api/Makefile.in
@@ -0,0 +1,1060 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+noinst_PROGRAMS = bitvectors$(EXEEXT) bitvectors_and_arrays$(EXEEXT) \
+	combination$(EXEEXT) datatypes$(EXEEXT) extract$(EXEEXT) \
+	helloworld$(EXEEXT) linear_arith$(EXEEXT) sets$(EXEEXT) \
+	strings$(EXEEXT)
+subdir = examples/api
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+PROGRAMS = $(noinst_PROGRAMS)
+am_bitvectors_OBJECTS = bitvectors.$(OBJEXT)
+bitvectors_OBJECTS = $(am_bitvectors_OBJECTS)
+bitvectors_DEPENDENCIES = @builddir@/../../src/libcvc4.la
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+am_bitvectors_and_arrays_OBJECTS = bitvectors_and_arrays.$(OBJEXT)
+bitvectors_and_arrays_OBJECTS = $(am_bitvectors_and_arrays_OBJECTS)
+bitvectors_and_arrays_DEPENDENCIES = @builddir@/../../src/libcvc4.la
+am_combination_OBJECTS = combination.$(OBJEXT)
+combination_OBJECTS = $(am_combination_OBJECTS)
+combination_DEPENDENCIES = @builddir@/../../src/libcvc4.la
+am_datatypes_OBJECTS = datatypes.$(OBJEXT)
+datatypes_OBJECTS = $(am_datatypes_OBJECTS)
+datatypes_DEPENDENCIES = @builddir@/../../src/libcvc4.la
+am_extract_OBJECTS = extract.$(OBJEXT)
+extract_OBJECTS = $(am_extract_OBJECTS)
+extract_DEPENDENCIES = @builddir@/../../src/libcvc4.la
+am_helloworld_OBJECTS = helloworld-helloworld.$(OBJEXT)
+helloworld_OBJECTS = $(am_helloworld_OBJECTS)
+helloworld_DEPENDENCIES = @builddir@/../../src/libcvc4.la
+helloworld_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(helloworld_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_linear_arith_OBJECTS = linear_arith.$(OBJEXT)
+linear_arith_OBJECTS = $(am_linear_arith_OBJECTS)
+linear_arith_DEPENDENCIES = @builddir@/../../src/libcvc4.la
+am_sets_OBJECTS = sets.$(OBJEXT)
+sets_OBJECTS = $(am_sets_OBJECTS)
+sets_DEPENDENCIES = @builddir@/../../src/libcvc4.la
+am_strings_OBJECTS = strings.$(OBJEXT)
+strings_OBJECTS = $(am_strings_OBJECTS)
+strings_DEPENDENCIES = @builddir@/../../src/libcvc4.la
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+SOURCES = $(bitvectors_SOURCES) $(bitvectors_and_arrays_SOURCES) \
+	$(combination_SOURCES) $(datatypes_SOURCES) $(extract_SOURCES) \
+	$(helloworld_SOURCES) $(linear_arith_SOURCES) $(sets_SOURCES) \
+	$(strings_SOURCES)
+DIST_SOURCES = $(bitvectors_SOURCES) $(bitvectors_and_arrays_SOURCES) \
+	$(combination_SOURCES) $(datatypes_SOURCES) $(extract_SOURCES) \
+	$(helloworld_SOURCES) $(linear_arith_SOURCES) $(sets_SOURCES) \
+	$(strings_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(examplesdir)"
+DATA = $(examples_DATA) $(noinst_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+SUBDIRS = . java
+AM_CPPFLAGS = \
+	-I at srcdir@/../../src/include -I at srcdir@/../../src -I at builddir@/../../src $(ANTLR_INCLUDES)
+
+AM_CXXFLAGS = -Wall
+AM_CFLAGS = -Wall
+noinst_DATA = 
+bitvectors_SOURCES = \
+	bitvectors.cpp
+
+bitvectors_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+bitvectors_and_arrays_SOURCES = \
+	bitvectors_and_arrays.cpp
+
+bitvectors_and_arrays_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+combination_SOURCES = \
+	combination.cpp
+
+combination_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+datatypes_SOURCES = \
+	datatypes.cpp
+
+datatypes_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+extract_SOURCES = \
+	extract.cpp
+
+extract_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+helloworld_SOURCES = \
+	helloworld.cpp
+
+helloworld_CXXFLAGS = \
+	-DCVC4_MAKE_EXAMPLES
+
+helloworld_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+linear_arith_SOURCES = \
+	linear_arith.cpp
+
+linear_arith_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+sets_SOURCES = \
+	sets.cpp
+
+sets_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+strings_SOURCES = \
+	strings.cpp
+
+strings_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+
+# for installation
+examplesdir = $(docdir)/$(subdir)
+examples_DATA = $(DIST_SOURCES) $(EXTRA_DIST)
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/api/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu examples/api/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstPROGRAMS:
+	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+	echo " rm -f" $$list; \
+	rm -f $$list || exit $$?; \
+	test -n "$(EXEEXT)" || exit 0; \
+	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+	echo " rm -f" $$list; \
+	rm -f $$list
+
+bitvectors$(EXEEXT): $(bitvectors_OBJECTS) $(bitvectors_DEPENDENCIES) $(EXTRA_bitvectors_DEPENDENCIES) 
+	@rm -f bitvectors$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(bitvectors_OBJECTS) $(bitvectors_LDADD) $(LIBS)
+
+bitvectors_and_arrays$(EXEEXT): $(bitvectors_and_arrays_OBJECTS) $(bitvectors_and_arrays_DEPENDENCIES) $(EXTRA_bitvectors_and_arrays_DEPENDENCIES) 
+	@rm -f bitvectors_and_arrays$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(bitvectors_and_arrays_OBJECTS) $(bitvectors_and_arrays_LDADD) $(LIBS)
+
+combination$(EXEEXT): $(combination_OBJECTS) $(combination_DEPENDENCIES) $(EXTRA_combination_DEPENDENCIES) 
+	@rm -f combination$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(combination_OBJECTS) $(combination_LDADD) $(LIBS)
+
+datatypes$(EXEEXT): $(datatypes_OBJECTS) $(datatypes_DEPENDENCIES) $(EXTRA_datatypes_DEPENDENCIES) 
+	@rm -f datatypes$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(datatypes_OBJECTS) $(datatypes_LDADD) $(LIBS)
+
+extract$(EXEEXT): $(extract_OBJECTS) $(extract_DEPENDENCIES) $(EXTRA_extract_DEPENDENCIES) 
+	@rm -f extract$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(extract_OBJECTS) $(extract_LDADD) $(LIBS)
+
+helloworld$(EXEEXT): $(helloworld_OBJECTS) $(helloworld_DEPENDENCIES) $(EXTRA_helloworld_DEPENDENCIES) 
+	@rm -f helloworld$(EXEEXT)
+	$(AM_V_CXXLD)$(helloworld_LINK) $(helloworld_OBJECTS) $(helloworld_LDADD) $(LIBS)
+
+linear_arith$(EXEEXT): $(linear_arith_OBJECTS) $(linear_arith_DEPENDENCIES) $(EXTRA_linear_arith_DEPENDENCIES) 
+	@rm -f linear_arith$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(linear_arith_OBJECTS) $(linear_arith_LDADD) $(LIBS)
+
+sets$(EXEEXT): $(sets_OBJECTS) $(sets_DEPENDENCIES) $(EXTRA_sets_DEPENDENCIES) 
+	@rm -f sets$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(sets_OBJECTS) $(sets_LDADD) $(LIBS)
+
+strings$(EXEEXT): $(strings_OBJECTS) $(strings_DEPENDENCIES) $(EXTRA_strings_DEPENDENCIES) 
+	@rm -f strings$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(strings_OBJECTS) $(strings_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bitvectors.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bitvectors_and_arrays.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/combination.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/datatypes.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/extract.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/helloworld-helloworld.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/linear_arith.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sets.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/strings.Po at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+helloworld-helloworld.o: helloworld.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(helloworld_CXXFLAGS) $(CXXFLAGS) -MT helloworld-helloworld.o -MD -MP -MF $(DEPDIR)/helloworld-helloworld.Tpo -c -o helloworld-helloworld.o `test -f 'helloworld.cpp' || echo '$(srcdir)/'`helloworld.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/helloworld-helloworld.Tpo $(DEPDIR)/helloworld-helloworld.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='helloworld.cpp' object='helloworld-helloworld.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(helloworld_CXXFLAGS) $(CXXFLAGS) -c -o helloworld-helloworld.o `test -f 'helloworld.cpp' || echo '$(srcdir)/'`helloworld.cpp
+
+helloworld-helloworld.obj: helloworld.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(helloworld_CXXFLAGS) $(CXXFLAGS) -MT helloworld-helloworld.obj -MD -MP -MF $(DEPDIR)/helloworld-helloworld.Tpo -c -o helloworld-helloworld.obj `if test -f 'helloworld.cpp'; then $(CYGPATH_W) 'helloworld.cpp'; else $(CYGPATH_W) '$(srcdir)/helloworld.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/helloworld-helloworld.Tpo $(DEPDIR)/helloworld-helloworld.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='helloworld.cpp' object='helloworld-helloworld.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(helloworld_CXXFLAGS) $(CXXFLAGS) -c -o helloworld-helloworld.obj `if test -f 'helloworld.cpp'; then $(CYGPATH_W) 'helloworld.cpp'; else $(CYGPATH_W) '$(srcdir)/helloworld.cpp'; fi`
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-examplesDATA: $(examples_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(examples_DATA)'; test -n "$(examplesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(examplesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(examplesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(examplesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(examplesdir)" || exit $$?; \
+	done
+
+uninstall-examplesDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(examples_DATA)'; test -n "$(examplesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(examplesdir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(PROGRAMS) $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+	for dir in "$(DESTDIR)$(examplesdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+	mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-examplesDATA
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-examplesDATA
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am clean clean-generic clean-libtool \
+	clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-examplesDATA install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-examplesDATA
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/examples/api/bitvectors.cpp b/examples/api/bitvectors.cpp
new file mode 100644
index 0000000..247131c
--- /dev/null
+++ b/examples/api/bitvectors.cpp
@@ -0,0 +1,111 @@
+/*********************                                                        */
+/*! \file bitvectors.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A simple demonstration of the solving capabilities of the CVC4
+ ** bit-vector solver.
+ **
+ **/
+
+#include <iostream>
+
+//#include <cvc4/cvc4.h> // use this after CVC4 is properly installed
+#include "smt/smt_engine.h"
+
+using namespace std;
+using namespace CVC4;
+
+int main() {
+  ExprManager em;
+  SmtEngine smt(&em);
+  smt.setLogic("QF_BV"); // Set the logic
+
+  // The following example has been adapted from the book A Hacker's Delight by
+  // Henry S. Warren.
+  //
+  // Given a variable x that can only have two values, a or b. We want to
+  // assign to x a value other than the current one. The straightforward code
+  // to do that is:
+  //
+  //(0) if (x == a ) x = b;
+  //    else x = a;
+  //
+  // Two more efficient yet equivalent methods are:
+  //
+  //(1) x = a ⊕ b ⊕ x;
+  //
+  //(2) x = a + b - x;
+  //
+  // We will use CVC4 to prove that the three pieces of code above are all
+  // equivalent by encoding the problem in the bit-vector theory.
+
+  // Creating a bit-vector type of width 32
+  Type bitvector32 = em.mkBitVectorType(32);
+
+  // Variables
+  Expr x = em.mkVar("x", bitvector32);
+  Expr a = em.mkVar("a", bitvector32);
+  Expr b = em.mkVar("b", bitvector32);
+
+  // First encode the assumption that x must be equal to a or b
+  Expr x_eq_a = em.mkExpr(kind::EQUAL, x, a);
+  Expr x_eq_b = em.mkExpr(kind::EQUAL, x, b);
+  Expr assumption = em.mkExpr(kind::OR, x_eq_a, x_eq_b);
+
+  // Assert the assumption
+  smt.assertFormula(assumption);
+
+  // Introduce a new variable for the new value of x after assignment.
+  Expr new_x = em.mkVar("new_x", bitvector32); // x after executing code (0)
+  Expr new_x_ = em.mkVar("new_x_", bitvector32); // x after executing code (1) or (2)
+
+  // Encoding code (0)
+  // new_x = x == a ? b : a;
+  Expr ite = em.mkExpr(kind::ITE, x_eq_a, b, a);
+  Expr assignment0 = em.mkExpr(kind::EQUAL, new_x, ite);
+
+  // Assert the encoding of code (0)
+  cout << "Asserting " << assignment0 << " to CVC4 " << endl;
+  smt.assertFormula(assignment0);
+  cout << "Pushing a new context." << endl;
+  smt.push();
+
+  // Encoding code (1)
+  // new_x_ = a xor b xor x
+  Expr a_xor_b_xor_x = em.mkExpr(kind::BITVECTOR_XOR, a, b, x);
+  Expr assignment1 = em.mkExpr(kind::EQUAL, new_x_, a_xor_b_xor_x);
+
+  // Assert encoding to CVC4 in current context;
+  cout << "Asserting " << assignment1 << " to CVC4 " << endl;
+  smt.assertFormula(assignment1);
+  Expr new_x_eq_new_x_ = em.mkExpr(kind::EQUAL, new_x, new_x_);
+
+  cout << " Querying: " << new_x_eq_new_x_ << endl;
+  cout << " Expect valid. " << endl;
+  cout << " CVC4: " << smt.query(new_x_eq_new_x_) << endl;
+  cout << " Popping context. " << endl;
+  smt.pop();
+
+  // Encoding code (2)
+  // new_x_ = a + b - x
+  Expr a_plus_b = em.mkExpr(kind::BITVECTOR_PLUS, a, b);
+  Expr a_plus_b_minus_x = em.mkExpr(kind::BITVECTOR_SUB, a_plus_b, x);
+  Expr assignment2 = em.mkExpr(kind::EQUAL, new_x_, a_plus_b_minus_x);
+
+  // Assert encoding to CVC4 in current context;
+  cout << "Asserting " << assignment2 << " to CVC4 " << endl;
+  smt.assertFormula(assignment2);
+
+  cout << " Querying: " << new_x_eq_new_x_ << endl;
+  cout << " Expect valid. " << endl;
+  cout << " CVC4: " << smt.query(new_x_eq_new_x_) << endl;
+
+  return 0;
+}
diff --git a/examples/api/bitvectors_and_arrays.cpp b/examples/api/bitvectors_and_arrays.cpp
new file mode 100644
index 0000000..83100a8
--- /dev/null
+++ b/examples/api/bitvectors_and_arrays.cpp
@@ -0,0 +1,95 @@
+/*********************                                                        */
+/*! \file bitvectors_and_arrays.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A simple demonstration of the solving capabilities of the CVC4
+ ** bit-vector and array solvers.
+ **
+ **/
+
+#include <iostream>
+#include <cmath>
+// #include <cvc4/cvc4.h> // use this after CVC4 is properly installed
+#include "smt/smt_engine.h"
+
+using namespace std;
+using namespace CVC4;
+
+int main() {
+  ExprManager em;
+  SmtEngine smt(&em);
+  smt.setOption("produce-models", true);      // Produce Models
+  smt.setOption("output-language", "smtlib"); // output-language
+  smt.setLogic("QF_AUFBV");                   // Set the logic
+
+  // Consider the following code (where size is some previously defined constant):
+  //
+  //
+  //   Assert (current_array[0] > 0);
+  //   for (unsigned i = 1; i < k; ++i) {
+  //     current_array[i] = 2 * current_array[i - 1];
+  //     Assert (current_array[i-1] < current_array[i]);
+  //     }
+  //
+  // We want to check whether the assertion in the body of the for loop holds
+  // throughout the loop.
+
+  // Setting up the problem parameters
+  unsigned k = 4;                // number of unrollings (should be a power of 2)
+  unsigned index_size = log2(k); // size of the index
+
+
+  // Types
+  Type elementType = em.mkBitVectorType(32);
+  Type indexType = em.mkBitVectorType(index_size);
+  Type arrayType = em.mkArrayType(indexType, elementType);
+
+  // Variables
+  Expr current_array = em.mkVar("current_array", arrayType);
+
+  // Making a bit-vector constant
+  Expr zero = em.mkConst(BitVector(index_size, 0u));
+
+  // Asserting that current_array[0] > 0
+  Expr current_array0 = em.mkExpr(kind::SELECT, current_array, zero);
+  Expr current_array0_gt_0 = em.mkExpr(kind::BITVECTOR_SGT, current_array0, em.mkConst(BitVector(32, 0u)));
+  smt.assertFormula(current_array0_gt_0);
+
+  // Building the assertions in the loop unrolling
+  Expr index = em.mkConst(BitVector(index_size, 0u));
+  Expr old_current = em.mkExpr(kind::SELECT, current_array, index);
+  Expr two = em.mkConst(BitVector(32, 2u));
+
+  std::vector<Expr> assertions;
+  for (unsigned i = 1; i < k; ++i) {
+    index = em.mkConst(BitVector(index_size, Integer(i)));
+    Expr new_current = em.mkExpr(kind::BITVECTOR_MULT, two, old_current);
+    // current[i] = 2 * current[i-1]
+    current_array = em.mkExpr(kind::STORE, current_array, index, new_current);
+    // current[i-1] < current [i]
+    Expr current_slt_new_current = em.mkExpr(kind::BITVECTOR_SLT, old_current, new_current);
+    assertions.push_back(current_slt_new_current);
+
+    old_current = em.mkExpr(kind::SELECT, current_array, index);
+  }
+
+  Expr query = em.mkExpr(kind::NOT, em.mkExpr(kind::AND, assertions));
+
+  cout << "Asserting " << query << " to CVC4 " << endl;
+  smt.assertFormula(query);
+  cout << "Expect sat. " << endl;
+  cout << "CVC4: " << smt.checkSat(em.mkConst(true)) << endl;
+
+  // Getting the model
+  cout << "The satisfying model is: " << endl;
+  cout << "  current_array = " << smt.getValue(current_array) << endl;
+  cout << "  current_array[0] = " << smt.getValue(current_array0) << endl;
+  return 0;
+}
diff --git a/examples/api/combination.cpp b/examples/api/combination.cpp
new file mode 100644
index 0000000..a874c44
--- /dev/null
+++ b/examples/api/combination.cpp
@@ -0,0 +1,104 @@
+/*********************                                                        */
+/*! \file combination.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A simple demonstration of the capabilities of CVC4
+ **
+ ** A simple demonstration of how to use uninterpreted functions, combining this
+ ** with arithmetic, and extracting a model at the end of a satisfiable query.
+ ** The model is displayed using getValue().
+ **/
+
+#include <iostream>
+
+//#include <cvc4/cvc4.h> // use this after CVC4 is properly installed
+#include "smt/smt_engine.h"
+
+using namespace std;
+using namespace CVC4;
+
+void prefixPrintGetValue(SmtEngine& smt, Expr e, int level = 0){
+  for(int i = 0; i < level; ++i){ cout << '-'; }
+  cout << "smt.getValue(" << e << ") -> " << smt.getValue(e) << endl;
+
+  if(e.hasOperator() && e.getOperator().getKind() != kind::BUILTIN){
+    prefixPrintGetValue(smt, e.getOperator(), level + 1);
+  }
+
+  for(Expr::const_iterator term_i = e.begin(), term_end = e.end();
+      term_i != term_end; ++term_i)
+  {
+    Expr curr = *term_i;
+    prefixPrintGetValue(smt, curr, level + 1);
+  }
+}
+
+
+int main() {
+  ExprManager em;
+  SmtEngine smt(&em);
+  smt.setOption("produce-models", true); // Produce Models
+  smt.setOption("output-language", "cvc4"); // Set the output-language to CVC's
+  smt.setOption("default-dag-thresh", 0); //Disable dagifying the output
+  smt.setLogic(string("QF_UFLIRA"));
+
+  // Sorts
+  SortType u = em.mkSort("u");
+  Type integer = em.integerType();
+  Type boolean = em.booleanType();
+  Type uToInt = em.mkFunctionType(u, integer);
+  Type intPred = em.mkFunctionType(integer, boolean);
+
+  // Variables
+  Expr x = em.mkVar("x", u);
+  Expr y = em.mkVar("y", u);
+
+  // Functions
+  Expr f = em.mkVar("f", uToInt);
+  Expr p = em.mkVar("p", intPred);
+
+  // Constants
+  Expr zero = em.mkConst(Rational(0));
+  Expr one = em.mkConst(Rational(1));
+
+  // Terms
+  Expr f_x = em.mkExpr(kind::APPLY_UF, f, x);
+  Expr f_y = em.mkExpr(kind::APPLY_UF, f, y);
+  Expr sum = em.mkExpr(kind::PLUS, f_x, f_y);
+  Expr p_0 = em.mkExpr(kind::APPLY_UF, p, zero);
+  Expr p_f_y = em.mkExpr(kind::APPLY_UF, p, f_y);
+
+  // Construct the assumptions
+  Expr assumptions =
+    em.mkExpr(kind::AND,
+              em.mkExpr(kind::LEQ, zero, f_x), // 0 <= f(x)
+              em.mkExpr(kind::LEQ, zero, f_y), // 0 <= f(y)
+              em.mkExpr(kind::LEQ, sum, one),  // f(x) + f(y) <= 1
+              p_0.notExpr(),                   // not p(0)
+              p_f_y);                          // p(f(y))
+  smt.assertFormula(assumptions);
+
+  cout << "Given the following assumptions:" << endl
+       << assumptions << endl
+       << "Prove x /= y is valid. "
+       << "CVC4 says: " << smt.query(em.mkExpr(kind::DISTINCT, x, y))
+       << "." << endl;
+
+  cout << "Now we call checksat on a trivial query to show that" << endl
+       << "the assumptions are satisfiable: "
+       << smt.checkSat(em.mkConst(true)) << "."<< endl;
+
+  cout << "Finally, after a SAT call, we recursively call smt.getValue(...) on "
+       << "all of the assumptions to see what the satisfying model looks like."
+       << endl;
+  prefixPrintGetValue(smt, assumptions);
+
+  return 0;
+}
diff --git a/examples/api/datatypes.cpp b/examples/api/datatypes.cpp
new file mode 100644
index 0000000..14aab16
--- /dev/null
+++ b/examples/api/datatypes.cpp
@@ -0,0 +1,103 @@
+/*********************                                                        */
+/*! \file datatypes.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An example of using inductive datatypes in CVC4
+ **
+ ** An example of using inductive datatypes in CVC4.
+ **/
+
+#include <iostream>
+#include "options/language.h" // for use with make examples
+#include "smt/smt_engine.h" // for use with make examples
+//#include <cvc4/cvc4.h> // To follow the wiki
+
+using namespace CVC4;
+
+int main() {
+  ExprManager em;
+  SmtEngine smt(&em);
+
+  // This example builds a simple "cons list" of integers, with
+  // two constructors, "cons" and "nil."
+
+  // Building a datatype consists of two steps.  First, the datatype
+  // is specified.  Second, it is "resolved"---at which point function
+  // symbols are assigned to its constructors, selectors, and testers.
+
+  Datatype consListSpec("list"); // give the datatype a name
+  DatatypeConstructor cons("cons");
+  cons.addArg("head", em.integerType());
+  cons.addArg("tail", DatatypeSelfType()); // a list
+  consListSpec.addConstructor(cons);
+  DatatypeConstructor nil("nil");
+  consListSpec.addConstructor(nil);
+
+  std::cout << "spec is:" << std::endl
+            << consListSpec << std::endl;
+
+  // Keep in mind that "Datatype" is the specification class for
+  // datatypes---"Datatype" is not itself a CVC4 Type.  Now that
+  // our Datatype is fully specified, we can get a Type for it.
+  // This step resolves the "SelfType" reference and creates
+  // symbols for all the constructors, etc.
+
+  DatatypeType consListType = em.mkDatatypeType(consListSpec);
+
+  // Now our old "consListSpec" is useless--the relevant information
+  // has been copied out, so we can throw that spec away.  We can get
+  // the complete spec for the datatype from the DatatypeType, and
+  // this Datatype object has constructor symbols (and others) filled in.
+
+  const Datatype& consList = consListType.getDatatype();
+
+  // e = cons 0 nil
+  //
+  // Here, consList["cons"] gives you the DatatypeConstructor.  To get
+  // the constructor symbol for application, use .getConstructor("cons"),
+  // which is equivalent to consList["cons"].getConstructor().  Note that
+  // "nil" is a constructor too, so it needs to be applied with
+  // APPLY_CONSTRUCTOR, even though it has no arguments.
+  Expr e = em.mkExpr(kind::APPLY_CONSTRUCTOR,
+                     consList.getConstructor("cons"),
+                     em.mkConst(Rational(0)),
+                     em.mkExpr(kind::APPLY_CONSTRUCTOR,
+                               consList.getConstructor("nil")));
+
+  std::cout << "e is " << e << std::endl
+            << "type of cons is " << consList.getConstructor("cons").getType()
+            << std::endl
+            << "type of nil is " << consList.getConstructor("nil").getType()
+            << std::endl;
+
+  // e2 = head(cons 0 nil), and of course this can be evaluated
+  //
+  // Here we first get the DatatypeConstructor for cons (with
+  // consList["cons"]) in order to get the "head" selector symbol
+  // to apply.
+  Expr e2 = em.mkExpr(kind::APPLY_SELECTOR,
+                      consList["cons"].getSelector("head"),
+                      e);
+
+  std::cout << "e2 is " << e2 << std::endl
+            << "simplify(e2) is " << smt.simplify(e2)
+            << std::endl << std::endl;
+
+  // You can also iterate over a Datatype to get all its constructors,
+  // and over a DatatypeConstructor to get all its "args" (selectors)
+  for(Datatype::iterator i = consList.begin(); i != consList.end(); ++i) {
+    std::cout << "ctor: " << *i << std::endl;
+    for(DatatypeConstructor::iterator j = (*i).begin(); j != (*i).end(); ++j) {
+      std::cout << " + arg: " << *j << std::endl;
+    }
+  }
+
+  return 0;
+}
diff --git a/examples/api/extract.cpp b/examples/api/extract.cpp
new file mode 100644
index 0000000..98a75c8
--- /dev/null
+++ b/examples/api/extract.cpp
@@ -0,0 +1,56 @@
+/*********************                                                        */
+/*! \file extract.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Clark Barrett, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A simple demonstration of the solving capabilities of the CVC4
+ ** bit-vector solver.
+ **
+ **/
+
+#include <iostream>
+
+//#include <cvc4/cvc4.h> // use this after CVC4 is properly installed
+#include "smt/smt_engine.h"
+
+using namespace std;
+using namespace CVC4;
+
+int main() {
+  ExprManager em;
+  SmtEngine smt(&em);
+  smt.setLogic("QF_BV"); // Set the logic
+
+  Type bitvector32 = em.mkBitVectorType(32);
+
+  Expr x = em.mkVar("a", bitvector32);
+
+  Expr ext_31_1 = em.mkConst(CVC4::BitVectorExtract(31,1));
+  Expr x_31_1 = em.mkExpr(ext_31_1, x);
+
+  Expr ext_30_0 = em.mkConst(CVC4::BitVectorExtract(30,0));
+  Expr x_30_0 = em.mkExpr(ext_30_0, x);
+
+  Expr ext_31_31 = em.mkConst(CVC4::BitVectorExtract(31,31));
+  Expr x_31_31 = em.mkExpr(ext_31_31, x);
+
+  Expr ext_0_0 = em.mkConst(CVC4::BitVectorExtract(0,0));
+  Expr x_0_0 = em.mkExpr(ext_0_0, x);
+
+  Expr eq = em.mkExpr(kind::EQUAL, x_31_1, x_30_0);
+  cout << " Asserting: " << eq << endl;
+  smt.assertFormula(eq);
+
+  Expr eq2 = em.mkExpr(kind::EQUAL, x_31_31, x_0_0);
+  cout << " Querying: " << eq2 << endl;
+  cout << " Expect valid. " << endl;
+  cout << " CVC4: " << smt.query(eq2) << endl;
+
+  return 0;
+}
diff --git a/examples/api/helloworld.cpp b/examples/api/helloworld.cpp
new file mode 100644
index 0000000..b4ce345
--- /dev/null
+++ b/examples/api/helloworld.cpp
@@ -0,0 +1,32 @@
+/*********************                                                        */
+/*! \file helloworld.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Kshitij Bansal
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A very simple CVC4 example
+ **
+ ** A very simple CVC4 tutorial example.
+ **/
+
+#include <iostream>
+
+#ifdef CVC4_MAKE_EXAMPLES
+#include "smt/smt_engine.h" // for use with make examples
+#else
+#include <cvc4/cvc4.h>      // To follow the wiki
+#endif /* CVC4_MAKE_EXAMPLES */
+
+using namespace CVC4;
+int main() {
+  ExprManager em;
+  Expr helloworld = em.mkVar("Hello World!", em.booleanType());
+  SmtEngine smt(&em);
+  std::cout << helloworld << " is " << smt.query(helloworld) << std::endl;
+  return 0;
+}
diff --git a/examples/api/java/BitVectors.java b/examples/api/java/BitVectors.java
new file mode 100644
index 0000000..5def97e
--- /dev/null
+++ b/examples/api/java/BitVectors.java
@@ -0,0 +1,108 @@
+/*********************                                                        */
+/*! \file BitVectors.java
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A simple demonstration of the solving capabilities of the CVC4
+ ** bit-vector solver.
+ **
+ **/
+
+import edu.nyu.acsys.CVC4.*;
+
+public class BitVectors {
+  public static void main(String[] args) {
+    System.loadLibrary("cvc4jni");
+
+    ExprManager em = new ExprManager();
+    SmtEngine smt = new SmtEngine(em);
+
+    smt.setLogic("QF_BV"); // Set the logic
+
+    // The following example has been adapted from the book A Hacker's Delight by
+    // Henry S. Warren.
+    //
+    // Given a variable x that can only have two values, a or b. We want to
+    // assign to x a value other than the current one. The straightforward code
+    // to do that is:
+    //
+    //(0) if (x == a ) x = b;
+    //    else x = a;
+    //
+    // Two more efficient yet equivalent methods are:
+    //
+    //(1) x = a ⊕ b ⊕ x;
+    //
+    //(2) x = a + b - x;
+    //
+    // We will use CVC4 to prove that the three pieces of code above are all
+    // equivalent by encoding the problem in the bit-vector theory.
+
+    // Creating a bit-vector type of width 32
+    Type bitvector32 = em.mkBitVectorType(32);
+
+    // Variables
+    Expr x = em.mkVar("x", bitvector32);
+    Expr a = em.mkVar("a", bitvector32);
+    Expr b = em.mkVar("b", bitvector32);
+
+    // First encode the assumption that x must be equal to a or b
+    Expr x_eq_a = em.mkExpr(Kind.EQUAL, x, a);
+    Expr x_eq_b = em.mkExpr(Kind.EQUAL, x, b);
+    Expr assumption = em.mkExpr(Kind.OR, x_eq_a, x_eq_b);
+
+    // Assert the assumption
+    smt.assertFormula(assumption);
+
+    // Introduce a new variable for the new value of x after assignment.
+    Expr new_x = em.mkVar("new_x", bitvector32); // x after executing code (0)
+    Expr new_x_ = em.mkVar("new_x_", bitvector32); // x after executing code (1) or (2)
+
+    // Encoding code (0)
+    // new_x = x == a ? b : a;
+    Expr ite = em.mkExpr(Kind.ITE, x_eq_a, b, a);
+    Expr assignment0 = em.mkExpr(Kind.EQUAL, new_x, ite);
+
+    // Assert the encoding of code (0)
+    System.out.println("Asserting " + assignment0 + " to CVC4 ");
+    smt.assertFormula(assignment0);
+    System.out.println("Pushing a new context.");
+    smt.push();
+
+    // Encoding code (1)
+    // new_x_ = a xor b xor x
+    Expr a_xor_b_xor_x = em.mkExpr(Kind.BITVECTOR_XOR, a, b, x);
+    Expr assignment1 = em.mkExpr(Kind.EQUAL, new_x_, a_xor_b_xor_x);
+
+    // Assert encoding to CVC4 in current context;
+    System.out.println("Asserting " + assignment1 + " to CVC4 ");
+    smt.assertFormula(assignment1);
+    Expr new_x_eq_new_x_ = em.mkExpr(Kind.EQUAL, new_x, new_x_);
+
+    System.out.println(" Querying: " + new_x_eq_new_x_);
+    System.out.println(" Expect valid. ");
+    System.out.println(" CVC4: " + smt.query(new_x_eq_new_x_));
+    System.out.println(" Popping context. ");
+    smt.pop();
+
+    // Encoding code (2)
+    // new_x_ = a + b - x
+    Expr a_plus_b = em.mkExpr(Kind.BITVECTOR_PLUS, a, b);
+    Expr a_plus_b_minus_x = em.mkExpr(Kind.BITVECTOR_SUB, a_plus_b, x);
+    Expr assignment2 = em.mkExpr(Kind.EQUAL, new_x_, a_plus_b_minus_x);
+
+    // Assert encoding to CVC4 in current context;
+    System.out.println("Asserting " + assignment2 + " to CVC4 ");
+    smt.assertFormula(assignment2);
+
+    System.out.println(" Querying: " + new_x_eq_new_x_);
+    System.out.println(" Expect valid. ");
+    System.out.println(" CVC4: " + smt.query(new_x_eq_new_x_));
+  }
+}
diff --git a/examples/api/java/BitVectorsAndArrays.java b/examples/api/java/BitVectorsAndArrays.java
new file mode 100644
index 0000000..97cf7e8
--- /dev/null
+++ b/examples/api/java/BitVectorsAndArrays.java
@@ -0,0 +1,97 @@
+/*********************                                                        */
+/*! \file BitVectorsAndArrays.java
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A simple demonstration of the solving capabilities of the CVC4
+ ** bit-vector and array solvers.
+ **
+ **/
+
+import edu.nyu.acsys.CVC4.*;
+import java.util.*;
+
+public class BitVectorsAndArrays {
+  private static int log2(int n) {
+    return (int) Math.round(Math.log(n) / Math.log(2));
+  }
+
+  public static void main(String[] args) {
+    System.loadLibrary("cvc4jni");
+
+    ExprManager em = new ExprManager();
+    SmtEngine smt = new SmtEngine(em);
+    smt.setOption("produce-models", new SExpr(true));      // Produce Models
+    smt.setOption("output-language", new SExpr("smtlib")); // output-language
+    smt.setLogic("QF_AUFBV");                              // Set the logic
+
+    // Consider the following code (where size is some previously defined constant):
+    //
+    //
+    //   Assert (current_array[0] > 0);
+    //   for (unsigned i = 1; i < k; ++i) {
+    //     current_array[i] = 2 * current_array[i - 1];
+    //     Assert (current_array[i-1] < current_array[i]);
+    //     }
+    //
+    // We want to check whether the assertion in the body of the for loop holds
+    // throughout the loop.
+
+    // Setting up the problem parameters
+    int k = 4;                // number of unrollings (should be a power of 2)
+    int index_size = log2(k); // size of the index
+
+
+    // Types
+    Type elementType = em.mkBitVectorType(32);
+    Type indexType = em.mkBitVectorType(index_size);
+    Type arrayType = em.mkArrayType(indexType, elementType);
+
+    // Variables
+    Expr current_array = em.mkVar("current_array", arrayType);
+
+    // Making a bit-vector constant
+    Expr zero = em.mkConst(new BitVector(index_size, 0));
+
+    // Asserting that current_array[0] > 0
+    Expr current_array0 = em.mkExpr(Kind.SELECT, current_array, zero);
+    Expr current_array0_gt_0 = em.mkExpr(Kind.BITVECTOR_SGT, current_array0, em.mkConst(new BitVector(32, 0)));
+    smt.assertFormula(current_array0_gt_0);
+
+    // Building the assertions in the loop unrolling
+    Expr index = em.mkConst(new BitVector(index_size, 0));
+    Expr old_current = em.mkExpr(Kind.SELECT, current_array, index);
+    Expr two = em.mkConst(new BitVector(32, 2));
+
+    vectorExpr assertions = new vectorExpr();
+    for (int i = 1; i < k; ++i) {
+      index = em.mkConst(new BitVector(index_size, new edu.nyu.acsys.CVC4.Integer(i)));
+      Expr new_current = em.mkExpr(Kind.BITVECTOR_MULT, two, old_current);
+      // current[i] = 2 * current[i-1]
+      current_array = em.mkExpr(Kind.STORE, current_array, index, new_current);
+      // current[i-1] < current [i]
+      Expr current_slt_new_current = em.mkExpr(Kind.BITVECTOR_SLT, old_current, new_current);
+      assertions.add(current_slt_new_current);
+
+      old_current = em.mkExpr(Kind.SELECT, current_array, index);
+    }
+
+    Expr query = em.mkExpr(Kind.NOT, em.mkExpr(Kind.AND, assertions));
+
+    System.out.println("Asserting " + query + " to CVC4 ");
+    smt.assertFormula(query);
+    System.out.println("Expect sat. ");
+    System.out.println("CVC4: " + smt.checkSat(em.mkConst(true)));
+
+    // Getting the model
+    System.out.println("The satisfying model is: ");
+    System.out.println("  current_array = " + smt.getValue(current_array));
+    System.out.println("  current_array[0] = " + smt.getValue(current_array0));
+  }
+}
diff --git a/examples/api/java/CVC4Streams.java b/examples/api/java/CVC4Streams.java
new file mode 100644
index 0000000..343a576
--- /dev/null
+++ b/examples/api/java/CVC4Streams.java
@@ -0,0 +1,58 @@
+/*********************                                                        */
+/*! \file CVC4Streams.java
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Example of driving CVC4 parsing from Java streams
+ **
+ ** This example shows how CVC4 can be driven from Java streams.
+ **/
+
+import java.io.*;
+import edu.nyu.acsys.CVC4.*;
+
+public class CVC4Streams {
+  public static void main(String[] args) throws IOException {
+    System.loadLibrary("cvc4jni");
+    ExprManager exprMgr = new ExprManager();
+    SmtEngine smt = new SmtEngine(exprMgr);
+    smt.setOption("output-language", new SExpr("smt2"));
+
+    PipedOutputStream solverPipe = new PipedOutputStream();
+    PrintWriter toSolver = new PrintWriter(solverPipe);
+    PipedInputStream stream = new PipedInputStream(solverPipe);
+
+    toSolver.println("(set-logic QF_LIA)");
+    toSolver.println("(declare-fun x () Int)");
+    toSolver.println("(assert (= x 5))");
+    toSolver.println("(check-sat)");
+    toSolver.flush();
+
+    ParserBuilder pbuilder =
+      new ParserBuilder(exprMgr, "<string 1>")
+      .withInputLanguage(InputLanguage.INPUT_LANG_SMTLIB_V2)
+      .withLineBufferedStreamInput((java.io.InputStream)stream);
+    Parser parser = pbuilder.build();
+
+    Command cmd;
+    while((cmd = parser.nextCommand()) != null) {
+      System.out.println(cmd);
+      cmd.invoke(smt, System.out);
+    }
+
+    toSolver.println("(assert (= x 10))");
+    toSolver.println("(check-sat)");
+    toSolver.flush();
+
+    while((cmd = parser.nextCommand()) != null) {
+      System.out.println(cmd);
+      cmd.invoke(smt, System.out);
+    }
+  }
+}
diff --git a/examples/api/java/Combination.java b/examples/api/java/Combination.java
new file mode 100644
index 0000000..199e857
--- /dev/null
+++ b/examples/api/java/Combination.java
@@ -0,0 +1,99 @@
+/*********************                                                        */
+/*! \file Combination.java
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A simple demonstration of the capabilities of CVC4
+ **
+ ** A simple demonstration of how to use uninterpreted functions, combining this
+ ** with arithmetic, and extracting a model at the end of a satisfiable query.
+ ** The model is displayed using getValue().
+ **/
+
+import edu.nyu.acsys.CVC4.*;
+
+public class Combination {
+  private static void prefixPrintGetValue(SmtEngine smt, Expr e, int level) {
+    for(int i = 0; i < level; ++i) { System.out.print('-'); }
+    System.out.println("smt.getValue(" + e + ") -> " + smt.getValue(e));
+
+    if(e.hasOperator()) {
+      prefixPrintGetValue(smt, e.getOperator(), level + 1);
+    }
+
+    for(int i = 0; i < e.getNumChildren(); ++i) {
+      Expr curr = e.getChild(i);
+      prefixPrintGetValue(smt, curr, level + 1);
+    }
+  }
+
+  public static void main(String[] args) {
+    System.loadLibrary("cvc4jni");
+
+    ExprManager em = new ExprManager();
+    SmtEngine smt = new SmtEngine(em);
+
+    smt.setOption("tlimit", new SExpr(100));
+    smt.setOption("produce-models", new SExpr(true)); // Produce Models
+    smt.setOption("output-language", new SExpr("cvc4")); // output-language
+    smt.setOption("default-dag-thresh", new SExpr(0)); //Disable dagifying the output
+    smt.setLogic("QF_UFLIRA");
+
+    // Sorts
+    SortType u = em.mkSort("u");
+    Type integer = em.integerType();
+    Type booleanType = em.booleanType();
+    Type uToInt = em.mkFunctionType(u, integer);
+    Type intPred = em.mkFunctionType(integer, booleanType);
+
+    // Variables
+    Expr x = em.mkVar("x", u);
+    Expr y = em.mkVar("y", u);
+
+    // Functions
+    Expr f = em.mkVar("f", uToInt);
+    Expr p = em.mkVar("p", intPred);
+
+    // Constants
+    Expr zero = em.mkConst(new Rational(0));
+    Expr one = em.mkConst(new Rational(1));
+
+    // Terms
+    Expr f_x = em.mkExpr(Kind.APPLY_UF, f, x);
+    Expr f_y = em.mkExpr(Kind.APPLY_UF, f, y);
+    Expr sum = em.mkExpr(Kind.PLUS, f_x, f_y);
+    Expr p_0 = em.mkExpr(Kind.APPLY_UF, p, zero);
+    Expr p_f_y = em.mkExpr(Kind.APPLY_UF, p, f_y);
+
+    // Construct the assumptions
+    Expr assumptions =
+      em.mkExpr(Kind.AND,
+                em.mkExpr(Kind.LEQ, zero, f_x), // 0 <= f(x)
+                em.mkExpr(Kind.LEQ, zero, f_y), // 0 <= f(y)
+                em.mkExpr(Kind.LEQ, sum, one),  // f(x) + f(y) <= 1
+                p_0.notExpr(),                  // not p(0)
+                p_f_y);                         // p(f(y))
+    smt.assertFormula(assumptions);
+
+    System.out.println("Given the following assumptions:");
+    System.out.println(assumptions);
+    System.out.println("Prove x /= y is valid. " +
+                       "CVC4 says: " + smt.query(em.mkExpr(Kind.DISTINCT, x, y)) +
+                       ".");
+
+
+    System.out.println("Now we call checksat on a trivial query to show that");
+    System.out.println("the assumptions are satisfiable: " +
+                       smt.checkSat(em.mkConst(true)) + ".");
+
+    System.out.println("Finally, after a SAT call, we recursively call smt.getValue(...) on " +
+                       "all of the assumptions to see what the satisfying model looks like.");
+    prefixPrintGetValue(smt, assumptions, 0);
+  }
+}
diff --git a/examples/api/java/Datatypes.java b/examples/api/java/Datatypes.java
new file mode 100644
index 0000000..c1ae770
--- /dev/null
+++ b/examples/api/java/Datatypes.java
@@ -0,0 +1,103 @@
+/*********************                                                        */
+/*! \file Datatypes.java
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An example of using inductive datatypes in CVC4 (Java version)
+ **
+ ** An example of using inductive datatypes in CVC4 (Java version).
+ **/
+
+import edu.nyu.acsys.CVC4.*;
+import java.util.Iterator;
+
+public class Datatypes {
+  public static void main(String[] args) {
+    System.loadLibrary("cvc4jni");
+
+    ExprManager em = new ExprManager();
+    SmtEngine smt = new SmtEngine(em);
+
+    // This example builds a simple "cons list" of integers, with
+    // two constructors, "cons" and "nil."
+
+    // Building a datatype consists of two steps.  First, the datatype
+    // is specified.  Second, it is "resolved"---at which point function
+    // symbols are assigned to its constructors, selectors, and testers.
+
+    Datatype consListSpec = new Datatype("list"); // give the datatype a name
+    DatatypeConstructor cons = new DatatypeConstructor("cons");
+    cons.addArg("head", em.integerType());
+    cons.addArg("tail", new DatatypeSelfType()); // a list
+    consListSpec.addConstructor(cons);
+    DatatypeConstructor nil = new DatatypeConstructor("nil");
+    consListSpec.addConstructor(nil);
+
+    System.out.println("spec is:");
+    System.out.println(consListSpec);
+
+    // Keep in mind that "Datatype" is the specification class for
+    // datatypes---"Datatype" is not itself a CVC4 Type.  Now that
+    // our Datatype is fully specified, we can get a Type for it.
+    // This step resolves the "SelfType" reference and creates
+    // symbols for all the constructors, etc.
+
+    DatatypeType consListType = em.mkDatatypeType(consListSpec);
+
+    // Now our old "consListSpec" is useless--the relevant information
+    // has been copied out, so we can throw that spec away.  We can get
+    // the complete spec for the datatype from the DatatypeType, and
+    // this Datatype object has constructor symbols (and others) filled in.
+
+    Datatype consList = consListType.getDatatype();
+
+    // e = cons 0 nil
+    //
+    // Here, consList.get("cons") gives you the DatatypeConstructor
+    // (just as consList["cons"] does in C++).  To get the constructor
+    // symbol for application, use .getConstructor("cons"), which is
+    // equivalent to consList.get("cons").getConstructor().  Note that
+    // "nil" is a constructor too, so it needs to be applied with
+    // APPLY_CONSTRUCTOR, even though it has no arguments.
+    Expr e = em.mkExpr(Kind.APPLY_CONSTRUCTOR,
+                       consList.getConstructor("cons"),
+                       em.mkConst(new Rational(0)),
+                       em.mkExpr(Kind.APPLY_CONSTRUCTOR,
+                                 consList.getConstructor("nil")));
+
+    System.out.println("e is " + e);
+    System.out.println("type of cons is " +
+                       consList.getConstructor("cons").getType());
+    System.out.println("type of nil is " +
+                       consList.getConstructor("nil").getType());
+
+    // e2 = head(cons 0 nil), and of course this can be evaluated
+    //
+    // Here we first get the DatatypeConstructor for cons (with
+    // consList.get("cons") in order to get the "head" selector
+    // symbol to apply.
+    Expr e2 = em.mkExpr(Kind.APPLY_SELECTOR,
+                        consList.get("cons").getSelector("head"),
+                        e);
+
+    System.out.println("e2 is " + e2);
+    System.out.println("simplify(e2) is " + smt.simplify(e2));
+    System.out.println();
+
+    // You can also iterate over a Datatype to get all its constructors,
+    // and over a DatatypeConstructor to get all its "args" (selectors)
+    for(Iterator<DatatypeConstructor> i = consList.iterator(); i.hasNext();) {
+      DatatypeConstructor ctor = i.next();
+      System.out.println("ctor: " + ctor);
+      for(Iterator j = ctor.iterator(); j.hasNext();) {
+        System.out.println(" + arg: " + j.next());
+      }
+    }
+  }
+}
diff --git a/examples/api/java/HelloWorld.java b/examples/api/java/HelloWorld.java
new file mode 100644
index 0000000..5cedc63
--- /dev/null
+++ b/examples/api/java/HelloWorld.java
@@ -0,0 +1,29 @@
+/*********************                                                        */
+/*! \file HelloWorld.java
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A very simple CVC4 example
+ **
+ ** A very simple CVC4 tutorial example.
+ **/
+
+import edu.nyu.acsys.CVC4.*;
+
+public class HelloWorld {
+  public static void main(String[] args) {
+    System.loadLibrary("cvc4jni");
+
+    ExprManager em = new ExprManager();
+    Expr helloworld = em.mkVar("Hello World!", em.booleanType());
+    SmtEngine smt = new SmtEngine(em);
+
+    System.out.println(helloworld + " is " + smt.query(helloworld));
+  }
+}
diff --git a/examples/api/java/LinearArith.java b/examples/api/java/LinearArith.java
new file mode 100644
index 0000000..3cb9f79
--- /dev/null
+++ b/examples/api/java/LinearArith.java
@@ -0,0 +1,81 @@
+/*********************                                                        */
+/*! \file LinearArith.java
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A simple demonstration of the linear arithmetic capabilities of CVC4
+ **
+ ** A simple demonstration of the linear arithmetic solving capabilities and
+ ** the push pop of CVC4. This also gives an example option.
+ **/
+
+import edu.nyu.acsys.CVC4.*;
+
+public class LinearArith {
+  public static void main(String[] args) {
+    System.loadLibrary("cvc4jni");
+
+    ExprManager em = new ExprManager();
+    SmtEngine smt = new SmtEngine(em);
+
+    smt.setLogic("QF_LIRA"); // Set the logic
+
+    // Prove that if given x (Integer) and y (Real) then
+    // the maximum value of y - x is 2/3
+
+    // Types
+    Type real = em.realType();
+    Type integer = em.integerType();
+
+    // Variables
+    Expr x = em.mkVar("x", integer);
+    Expr y = em.mkVar("y", real);
+
+    // Constants
+    Expr three = em.mkConst(new Rational(3));
+    Expr neg2 = em.mkConst(new Rational(-2));
+    Expr two_thirds = em.mkConst(new Rational(2,3));
+
+    // Terms
+    Expr three_y = em.mkExpr(Kind.MULT, three, y);
+    Expr diff = em.mkExpr(Kind.MINUS, y, x);
+
+    // Formulas
+    Expr x_geq_3y = em.mkExpr(Kind.GEQ, x, three_y);
+    Expr x_leq_y = em.mkExpr(Kind.LEQ, x, y);
+    Expr neg2_lt_x = em.mkExpr(Kind.LT, neg2, x);
+
+    Expr assumptions =
+      em.mkExpr(Kind.AND, x_geq_3y, x_leq_y, neg2_lt_x);
+
+    System.out.println("Given the assumptions " + assumptions);
+    smt.assertFormula(assumptions);
+
+
+    smt.push();
+    Expr diff_leq_two_thirds = em.mkExpr(Kind.LEQ, diff, two_thirds);
+    System.out.println("Prove that " + diff_leq_two_thirds + " with CVC4.");
+    System.out.println("CVC4 should report VALID.");
+    System.out.println("Result from CVC4 is: " + smt.query(diff_leq_two_thirds));
+    smt.pop();
+
+    System.out.println();
+
+    smt.push();
+    Expr diff_is_two_thirds = em.mkExpr(Kind.EQUAL, diff, two_thirds);
+    smt.assertFormula(diff_is_two_thirds);
+    System.out.println("Show that the asserts are consistent with ");
+    System.out.println(diff_is_two_thirds + " with CVC4.");
+    System.out.println("CVC4 should report SAT.");
+    System.out.println("Result from CVC4 is: " + smt.checkSat(em.mkConst(true)));
+    smt.pop();
+
+    System.out.println("Thus the maximum value of (y - x) is 2/3.");
+  }
+}
diff --git a/examples/api/java/Makefile.am b/examples/api/java/Makefile.am
new file mode 100644
index 0000000..d12f287
--- /dev/null
+++ b/examples/api/java/Makefile.am
@@ -0,0 +1,39 @@
+noinst_DATA =
+
+if CVC4_LANGUAGE_BINDING_JAVA
+noinst_DATA += \
+	CVC4Streams.class \
+	BitVectors.class \
+	BitVectorsAndArrays.class \
+	Combination.class \
+	HelloWorld.class \
+	LinearArith.class \
+	Datatypes.class \
+	PipedInput.class \
+	Strings.class
+endif
+
+%.class: %.java
+	$(AM_V_JAVAC)$(JAVAC) -classpath "@builddir@/../../../src/bindings/CVC4.jar" -d "@builddir@" $<
+
+EXTRA_DIST = \
+	CVC4Streams.java \
+	BitVectors.java \
+	BitVectorsAndArrays.java \
+	Combination.java \
+	HelloWorld.java \
+	LinearArith.java \
+	Datatypes.java \
+	PipedInput.java \
+	Strings.java
+
+# for installation
+examplesdir = $(docdir)/$(subdir)
+examples_DATA = $(DIST_SOURCES) $(EXTRA_DIST)
+
+MOSTLYCLEANFILES = $(noinst_DATA)
+
+# for silent automake rules
+AM_V_JAVAC = $(am__v_JAVAC_$(V))
+am__v_JAVAC_ = $(am__v_JAVAC_$(AM_DEFAULT_VERBOSITY))
+am__v_JAVAC_0 = @echo "  JAVAC " $@;
diff --git a/examples/api/java/Makefile.in b/examples/api/java/Makefile.in
new file mode 100644
index 0000000..fcb97f0
--- /dev/null
+++ b/examples/api/java/Makefile.in
@@ -0,0 +1,675 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@am__append_1 = \
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@	CVC4Streams.class \
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@	BitVectors.class \
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@	BitVectorsAndArrays.class \
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@	Combination.class \
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@	HelloWorld.class \
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@	LinearArith.class \
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@	Datatypes.class \
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@	PipedInput.class \
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@	Strings.class
+
+subdir = examples/api/java
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(examplesdir)"
+DATA = $(examples_DATA) $(noinst_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+noinst_DATA = $(am__append_1)
+EXTRA_DIST = \
+	CVC4Streams.java \
+	BitVectors.java \
+	BitVectorsAndArrays.java \
+	Combination.java \
+	HelloWorld.java \
+	LinearArith.java \
+	Datatypes.java \
+	PipedInput.java \
+	Strings.java
+
+
+# for installation
+examplesdir = $(docdir)/$(subdir)
+examples_DATA = $(DIST_SOURCES) $(EXTRA_DIST)
+MOSTLYCLEANFILES = $(noinst_DATA)
+
+# for silent automake rules
+AM_V_JAVAC = $(am__v_JAVAC_$(V))
+am__v_JAVAC_ = $(am__v_JAVAC_$(AM_DEFAULT_VERBOSITY))
+am__v_JAVAC_0 = @echo "  JAVAC " $@;
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/api/java/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu examples/api/java/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-examplesDATA: $(examples_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(examples_DATA)'; test -n "$(examplesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(examplesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(examplesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(examplesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(examplesdir)" || exit $$?; \
+	done
+
+uninstall-examplesDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(examples_DATA)'; test -n "$(examplesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(examplesdir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(examplesdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-examplesDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-examplesDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags-am distclean distclean-generic \
+	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-examplesDATA install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
+	uninstall-am uninstall-examplesDATA
+
+.PRECIOUS: Makefile
+
+
+%.class: %.java
+	$(AM_V_JAVAC)$(JAVAC) -classpath "@builddir@/../../../src/bindings/CVC4.jar" -d "@builddir@" $<
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/examples/api/java/PipedInput.java b/examples/api/java/PipedInput.java
new file mode 100644
index 0000000..88622aa
--- /dev/null
+++ b/examples/api/java/PipedInput.java
@@ -0,0 +1,68 @@
+/*********************                                                        */
+/*! \file PipedInput.java
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A simple demonstration of the input parsing capabilities of CVC4
+ ** when used from Java
+ **
+ ** A simple demonstration of the input parsing capabilities of CVC4 when
+ ** used from Java.
+ **/
+
+import edu.nyu.acsys.CVC4.*;
+import java.io.*;
+
+public class PipedInput {
+  public static void main(String[] args) throws IOException {
+    System.loadLibrary("cvc4jni");
+
+    // Boilerplate setup for CVC4
+    ExprManager exprMgr = new ExprManager();
+    SmtEngine smt = new SmtEngine(exprMgr);
+    smt.setOption("output-language", new SExpr("smt2"));
+
+    // Set up a pair of connected Java streams
+    PipedOutputStream solverPipe = new PipedOutputStream();
+    PrintWriter toSolver = new PrintWriter(solverPipe);
+    PipedInputStream stream = new PipedInputStream(solverPipe);
+
+    // Write some things to CVC4's input stream, making sure to flush()
+    toSolver.println("(set-logic QF_LIA)");
+    toSolver.println("(declare-fun x () Int)");
+    toSolver.println("(assert (= x 5))");
+    toSolver.println("(check-sat)");
+    toSolver.flush();
+
+    // Set up the CVC4 parser
+    ParserBuilder pbuilder =
+      new ParserBuilder(exprMgr, "<string 1>")
+      .withInputLanguage(InputLanguage.INPUT_LANG_SMTLIB_V2)
+      .withLineBufferedStreamInput((java.io.InputStream)stream);
+    Parser parser = pbuilder.build();
+
+    // Read all the commands thus far
+    Command cmd;
+    while((cmd = parser.nextCommand()) != null) {
+      System.out.println(cmd);
+      cmd.invoke(smt, System.out);
+    }
+
+    // Write some more things to CVC4's input stream, making sure to flush()
+    toSolver.println("(assert (= x 10))");
+    toSolver.println("(check-sat)");
+    toSolver.flush();
+
+    // Read all the commands thus far
+    while((cmd = parser.nextCommand()) != null) {
+      System.out.println(cmd);
+      cmd.invoke(smt, System.out);
+    }
+  }
+}
diff --git a/examples/api/java/Strings.java b/examples/api/java/Strings.java
new file mode 100644
index 0000000..4f09ca8
--- /dev/null
+++ b/examples/api/java/Strings.java
@@ -0,0 +1,91 @@
+/*********************                                                        */
+/*! \file Strings.java
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Clark Barrett, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Reasoning about strings with CVC4 via Java API.
+ **
+ ** A simple demonstration of reasoning about strings with CVC4 via Jave API.
+ **/
+
+import edu.nyu.acsys.CVC4.*;
+
+public class Strings {
+  public static void main(String[] args) {
+    System.loadLibrary("cvc4jni");
+
+    ExprManager em = new ExprManager();
+    SmtEngine smt = new SmtEngine(em);
+
+    // Set the logic
+    smt.setLogic("S");
+
+    // Produce models
+    smt.setOption("produce-models", new SExpr(true));
+    // The option strings-exp is needed
+    smt.setOption("strings-exp", new SExpr(true));
+	// output-language
+    smt.setOption("output-language", new SExpr("smt2"));
+
+    // String type
+    Type string = em.stringType();
+
+    // String constants
+    Expr ab  = em.mkConst(new CVC4String("ab"));
+    Expr abc = em.mkConst(new CVC4String("abc"));
+    // Variables
+    Expr x = em.mkVar("x", string);
+    Expr y = em.mkVar("y", string);
+    Expr z = em.mkVar("z", string);
+
+    // String concatenation: x.ab.y
+    Expr lhs = em.mkExpr(Kind.STRING_CONCAT, x, ab, y);
+    // String concatenation: abc.z
+    Expr rhs = em.mkExpr(Kind.STRING_CONCAT, abc, z);;
+    // x.ab.y = abc.z
+    Expr formula1 = em.mkExpr(Kind.EQUAL, lhs, rhs);
+
+    // Length of y: |y|
+    Expr leny = em.mkExpr(Kind.STRING_LENGTH, y);
+    // |y| >= 0
+    Expr formula2 = em.mkExpr(Kind.GEQ, leny, em.mkConst(new Rational(0)));
+
+    // Regular expression: (ab[c-e]*f)|g|h
+    Expr r = em.mkExpr(Kind.REGEXP_UNION,
+      em.mkExpr(Kind.REGEXP_CONCAT,
+        em.mkExpr(Kind.STRING_TO_REGEXP, em.mkConst(new CVC4String("ab"))),
+        em.mkExpr(Kind.REGEXP_STAR,
+          em.mkExpr(Kind.REGEXP_RANGE, em.mkConst(new CVC4String("c")), em.mkConst(new CVC4String("e")))),
+        em.mkExpr(Kind.STRING_TO_REGEXP, em.mkConst(new CVC4String("f")))),
+      em.mkExpr(Kind.STRING_TO_REGEXP, em.mkConst(new CVC4String("g"))),
+      em.mkExpr(Kind.STRING_TO_REGEXP, em.mkConst(new CVC4String("h"))));
+
+    // String variables
+    Expr s1 = em.mkVar("s1", string);
+    Expr s2 = em.mkVar("s2", string);
+    // String concatenation: s1.s2
+    Expr s = em.mkExpr(Kind.STRING_CONCAT, s1, s2);
+
+    // s1.s2 in (ab[c-e]*f)|g|h
+    Expr formula3 = em.mkExpr(Kind.STRING_IN_REGEXP, s, r);
+
+	// Make a query
+    Expr q = em.mkExpr(Kind.AND,
+      formula1,
+      formula2,
+      formula3);
+
+     // check sat
+     Result result = smt.checkSat(q);
+     System.out.println("CVC4 reports: " + q + " is " + result + ".");
+
+     System.out.println("  x  = " + smt.getValue(x));
+     System.out.println("  s1.s2 = " + smt.getValue(s));
+  }
+}
diff --git a/examples/api/linear_arith.cpp b/examples/api/linear_arith.cpp
new file mode 100644
index 0000000..cd180f2
--- /dev/null
+++ b/examples/api/linear_arith.cpp
@@ -0,0 +1,84 @@
+/*********************                                                        */
+/*! \file linear_arith.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A simple demonstration of the linear arithmetic capabilities of CVC4
+ **
+ ** A simple demonstration of the linear arithmetic solving capabilities and
+ ** the push pop of CVC4. This also gives an example option.
+ **/
+
+#include <iostream>
+
+//#include <cvc4/cvc4.h> // use this after CVC4 is properly installed
+#include "smt/smt_engine.h"
+
+using namespace std;
+using namespace CVC4;
+
+int main() {
+  ExprManager em;
+  SmtEngine smt(&em);
+  smt.setLogic("QF_LIRA"); // Set the logic
+
+  // Prove that if given x (Integer) and y (Real) then
+  // the maximum value of y - x is 2/3
+
+  // Types
+  Type real = em.realType();
+  Type integer = em.integerType();
+
+  // Variables
+  Expr x = em.mkVar("x", integer);
+  Expr y = em.mkVar("y", real);
+
+  // Constants
+  Expr three = em.mkConst(Rational(3));
+  Expr neg2 = em.mkConst(Rational(-2));
+  Expr two_thirds = em.mkConst(Rational(2,3));
+
+  // Terms
+  Expr three_y = em.mkExpr(kind::MULT, three, y);
+  Expr diff = em.mkExpr(kind::MINUS, y, x);
+
+  // Formulas
+  Expr x_geq_3y = em.mkExpr(kind::GEQ, x, three_y);
+  Expr x_leq_y = em.mkExpr(kind::LEQ, x, y);
+  Expr neg2_lt_x = em.mkExpr(kind::LT, neg2, x);
+
+  Expr assumptions =
+    em.mkExpr(kind::AND, x_geq_3y, x_leq_y, neg2_lt_x);
+
+  cout << "Given the assumptions " << assumptions << endl;
+  smt.assertFormula(assumptions);
+
+
+  smt.push();
+  Expr diff_leq_two_thirds = em.mkExpr(kind::LEQ, diff, two_thirds);
+  cout << "Prove that " << diff_leq_two_thirds << " with CVC4." << endl;
+  cout << "CVC4 should report VALID." << endl;
+  cout << "Result from CVC4 is: " << smt.query(diff_leq_two_thirds) << endl;
+  smt.pop();
+
+  cout << endl;
+
+  smt.push();
+  Expr diff_is_two_thirds = em.mkExpr(kind::EQUAL, diff, two_thirds);
+  smt.assertFormula(diff_is_two_thirds);
+  cout << "Show that the asserts are consistent with " << endl;
+  cout << diff_is_two_thirds << " with CVC4." << endl;
+  cout << "CVC4 should report SAT." << endl;
+  cout << "Result from CVC4 is: " << smt.checkSat(em.mkConst(true)) << endl;
+  smt.pop();
+
+  cout << "Thus the maximum value of (y - x) is 2/3."<< endl;
+
+  return 0;
+}
diff --git a/examples/api/sets.cpp b/examples/api/sets.cpp
new file mode 100644
index 0000000..bb7deea
--- /dev/null
+++ b/examples/api/sets.cpp
@@ -0,0 +1,96 @@
+/*********************                                                        */
+/*! \file sets.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Reasoning about sets with CVC4.
+ **
+ ** A simple demonstration of reasoning about sets with CVC4.
+ **/
+
+#include <iostream>
+
+//#include <cvc4/cvc4.h> // use this after CVC4 is properly installed
+#include "smt/smt_engine.h"
+#include "options/set_language.h"
+
+using namespace std;
+using namespace CVC4;
+
+int main() {
+  ExprManager em;
+  SmtEngine smt(&em);
+
+  // Optionally, set the logic. We need at least UF for equality predicate,
+  // integers (LIA) and sets (FS).
+  smt.setLogic("QF_UFLIAFS");
+
+  // Produce models
+  smt.setOption("produce-models", true);
+
+  // Set output language to SMTLIB2
+  cout << language::SetLanguage(language::output::LANG_SMTLIB_V2);
+
+  Type integer = em.integerType();
+  Type set = em.mkSetType(integer);
+
+  // Verify union distributions over intersection
+  // (A union B) intersection C = (A intersection C) union (B intersection C)
+  {
+    Expr A = em.mkVar("A", set);
+    Expr B = em.mkVar("B", set);
+    Expr C = em.mkVar("C", set);
+
+    Expr unionAB = em.mkExpr(kind::UNION, A, B);
+    Expr lhs = em.mkExpr(kind::INTERSECTION, unionAB, C);
+
+    Expr intersectionAC = em.mkExpr(kind::INTERSECTION, A, C);
+    Expr intersectionBC = em.mkExpr(kind::INTERSECTION, B, C);
+    Expr rhs = em.mkExpr(kind::UNION, intersectionAC, intersectionBC);
+
+    Expr theorem = em.mkExpr(kind::EQUAL, lhs, rhs);
+
+    cout << "CVC4 reports: " << theorem << " is " << smt.query(theorem) << "." << endl;
+  }
+
+  // Verify emptset is a subset of any set
+  {
+    Expr A = em.mkVar("A", set);
+    Expr emptyset = em.mkConst(EmptySet(set));
+
+    Expr theorem = em.mkExpr(kind::SUBSET, emptyset, A);
+
+    cout << "CVC4 reports: " << theorem << " is " << smt.query(theorem) << "." << endl;
+  }
+
+  // Find me an element in {1, 2} intersection {2, 3}, if there is one.
+  {
+    Expr one = em.mkConst(Rational(1));
+    Expr two = em.mkConst(Rational(2));
+    Expr three = em.mkConst(Rational(3));
+
+    Expr singleton_one = em.mkExpr(kind::SINGLETON, one);
+    Expr singleton_two = em.mkExpr(kind::SINGLETON, two);
+    Expr singleton_three = em.mkExpr(kind::SINGLETON, three);
+    Expr one_two = em.mkExpr(kind::UNION, singleton_one, singleton_two);
+    Expr two_three = em.mkExpr(kind::UNION, singleton_two, singleton_three);
+    Expr intersection = em.mkExpr(kind::INTERSECTION, one_two, two_three);
+
+    Expr x = em.mkVar("x", integer);
+
+    Expr e = em.mkExpr(kind::MEMBER, x, intersection);
+
+    Result result = smt.checkSat(e);
+    cout << "CVC4 reports: " << e << " is " << result << "." << endl;
+
+    if(result == Result::SAT) {
+      cout << "For instance, " << smt.getValue(x) << " is a member." << endl;
+    }
+  }
+}
diff --git a/examples/api/strings.cpp b/examples/api/strings.cpp
new file mode 100644
index 0000000..d8350d0
--- /dev/null
+++ b/examples/api/strings.cpp
@@ -0,0 +1,102 @@
+/*********************                                                        */
+/*! \file strings.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Clark Barrett, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Reasoning about strings with CVC4 via C++ API.
+ **
+ ** A simple demonstration of reasoning about strings with CVC4 via C++ API.
+ **/
+
+#include <iostream>
+
+//#include <cvc4/cvc4.h> // use this after CVC4 is properly installed
+#include "smt/smt_engine.h"
+#include "options/set_language.h"
+
+using namespace CVC4;
+
+int main() {
+  ExprManager em;
+  SmtEngine smt(&em);
+
+  // Set the logic
+  smt.setLogic("S");
+
+  // Produce models
+  smt.setOption("produce-models", true);
+
+  // The option strings-exp is needed
+  smt.setOption("strings-exp", true);
+
+  // Set output language to SMTLIB2
+  std::cout << language::SetLanguage(language::output::LANG_SMTLIB_V2);
+
+  // String type
+  Type string = em.stringType();
+
+  // std::string
+  std::string std_str_ab("ab");
+  // CVC4::String
+  CVC4::String cvc4_str_ab(std_str_ab);
+  CVC4::String cvc4_str_abc("abc");
+  // String constants
+  Expr ab  = em.mkConst(cvc4_str_ab);
+  Expr abc = em.mkConst(CVC4::String("abc"));
+  // String variables
+  Expr x = em.mkVar("x", string);
+  Expr y = em.mkVar("y", string);
+  Expr z = em.mkVar("z", string);
+
+  // String concatenation: x.ab.y
+  Expr lhs = em.mkExpr(kind::STRING_CONCAT, x, ab, y);
+  // String concatenation: abc.z
+  Expr rhs = em.mkExpr(kind::STRING_CONCAT, abc, z);
+  // x.ab.y = abc.z
+  Expr formula1 = em.mkExpr(kind::EQUAL, lhs, rhs);
+
+  // Length of y: |y|
+  Expr leny = em.mkExpr(kind::STRING_LENGTH, y);
+  // |y| >= 0
+  Expr formula2 = em.mkExpr(kind::GEQ, leny, em.mkConst(Rational(0)));
+
+  // Regular expression: (ab[c-e]*f)|g|h
+  Expr r = em.mkExpr(kind::REGEXP_UNION,
+    em.mkExpr(kind::REGEXP_CONCAT,
+      em.mkExpr(kind::STRING_TO_REGEXP, em.mkConst(String("ab"))),
+      em.mkExpr(kind::REGEXP_STAR,
+        em.mkExpr(kind::REGEXP_RANGE, em.mkConst(String("c")), em.mkConst(String("e")))),
+      em.mkExpr(kind::STRING_TO_REGEXP, em.mkConst(String("f")))),
+    em.mkExpr(kind::STRING_TO_REGEXP, em.mkConst(String("g"))),
+    em.mkExpr(kind::STRING_TO_REGEXP, em.mkConst(String("h"))));
+
+  // String variables
+  Expr s1 = em.mkVar("s1", string);
+  Expr s2 = em.mkVar("s2", string);
+  // String concatenation: s1.s2
+  Expr s = em.mkExpr(kind::STRING_CONCAT, s1, s2);
+
+  // s1.s2 in (ab[c-e]*f)|g|h
+  Expr formula3 = em.mkExpr(kind::STRING_IN_REGEXP, s, r);
+
+  // Make a query
+  Expr q = em.mkExpr(kind::AND,
+    formula1,
+    formula2,
+    formula3);
+
+  // check sat
+  Result result = smt.checkSat(q);
+  std::cout << "CVC4 reports: " << q << " is " << result << "." << std::endl;
+
+  if(result == Result::SAT) {
+    std::cout << "  x  = " << smt.getValue(x) << std::endl;
+    std::cout << "  s1.s2 = " << smt.getValue(s) << std::endl;
+  }
+}
diff --git a/examples/hashsmt/Makefile.am b/examples/hashsmt/Makefile.am
new file mode 100644
index 0000000..950a06a
--- /dev/null
+++ b/examples/hashsmt/Makefile.am
@@ -0,0 +1,36 @@
+AM_CPPFLAGS = \
+	-I at srcdir@/../../src/include -I at srcdir@/../../src -I at builddir@/../../src $(ANTLR_INCLUDES)
+AM_CXXFLAGS = -Wall
+AM_CFLAGS = -Wall
+
+noinst_PROGRAMS = \
+	sha1_inversion \
+	sha1_collision
+
+noinst_DATA =
+
+sha1_inversion_SOURCES = \
+	sha1_inversion.cpp \
+	word.h \
+	word.cpp \
+	sha1.hpp
+sha1_inversion_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+sha1_collision_SOURCES = \
+	sha1_collision.cpp \
+	word.h \
+	word.cpp \
+	sha1.hpp
+sha1_collision_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+
+# for installation
+examplesdir = $(docdir)/$(subdir)
+examples_DATA = \
+	sha1_inversion.cpp \
+	sha1_collision.cpp \
+	word.h \
+	word.cpp \
+	sha1.hpp
diff --git a/examples/hashsmt/Makefile.in b/examples/hashsmt/Makefile.in
new file mode 100644
index 0000000..be2a41a
--- /dev/null
+++ b/examples/hashsmt/Makefile.in
@@ -0,0 +1,848 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+noinst_PROGRAMS = sha1_inversion$(EXEEXT) sha1_collision$(EXEEXT)
+subdir = examples/hashsmt
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+PROGRAMS = $(noinst_PROGRAMS)
+am_sha1_collision_OBJECTS = sha1_collision.$(OBJEXT) word.$(OBJEXT)
+sha1_collision_OBJECTS = $(am_sha1_collision_OBJECTS)
+sha1_collision_DEPENDENCIES = @builddir@/../../src/libcvc4.la
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+am_sha1_inversion_OBJECTS = sha1_inversion.$(OBJEXT) word.$(OBJEXT)
+sha1_inversion_OBJECTS = $(am_sha1_inversion_OBJECTS)
+sha1_inversion_DEPENDENCIES = @builddir@/../../src/libcvc4.la
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(sha1_collision_SOURCES) $(sha1_inversion_SOURCES)
+DIST_SOURCES = $(sha1_collision_SOURCES) $(sha1_inversion_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(examplesdir)"
+DATA = $(examples_DATA) $(noinst_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+AM_CPPFLAGS = \
+	-I at srcdir@/../../src/include -I at srcdir@/../../src -I at builddir@/../../src $(ANTLR_INCLUDES)
+
+AM_CXXFLAGS = -Wall
+AM_CFLAGS = -Wall
+noinst_DATA = 
+sha1_inversion_SOURCES = \
+	sha1_inversion.cpp \
+	word.h \
+	word.cpp \
+	sha1.hpp
+
+sha1_inversion_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+sha1_collision_SOURCES = \
+	sha1_collision.cpp \
+	word.h \
+	word.cpp \
+	sha1.hpp
+
+sha1_collision_LDADD = \
+	@builddir@/../../src/libcvc4.la
+
+
+# for installation
+examplesdir = $(docdir)/$(subdir)
+examples_DATA = \
+	sha1_inversion.cpp \
+	sha1_collision.cpp \
+	word.h \
+	word.cpp \
+	sha1.hpp
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/hashsmt/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu examples/hashsmt/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstPROGRAMS:
+	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+	echo " rm -f" $$list; \
+	rm -f $$list || exit $$?; \
+	test -n "$(EXEEXT)" || exit 0; \
+	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+	echo " rm -f" $$list; \
+	rm -f $$list
+
+sha1_collision$(EXEEXT): $(sha1_collision_OBJECTS) $(sha1_collision_DEPENDENCIES) $(EXTRA_sha1_collision_DEPENDENCIES) 
+	@rm -f sha1_collision$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(sha1_collision_OBJECTS) $(sha1_collision_LDADD) $(LIBS)
+
+sha1_inversion$(EXEEXT): $(sha1_inversion_OBJECTS) $(sha1_inversion_DEPENDENCIES) $(EXTRA_sha1_inversion_DEPENDENCIES) 
+	@rm -f sha1_inversion$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(sha1_inversion_OBJECTS) $(sha1_inversion_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sha1_collision.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sha1_inversion.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/word.Po at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-examplesDATA: $(examples_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(examples_DATA)'; test -n "$(examplesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(examplesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(examplesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(examplesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(examplesdir)" || exit $$?; \
+	done
+
+uninstall-examplesDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(examples_DATA)'; test -n "$(examplesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(examplesdir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS) $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(examplesdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-examplesDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-examplesDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am \
+	install-examplesDATA install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+	uninstall-examplesDATA
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/examples/hashsmt/sha1.hpp b/examples/hashsmt/sha1.hpp
new file mode 100644
index 0000000..0d529b9
--- /dev/null
+++ b/examples/hashsmt/sha1.hpp
@@ -0,0 +1,226 @@
+/*********************                                                        */
+/*! \file sha1.hpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+// boost/uuid/sha1.hpp header file  ----------------------------------------------//
+
+// Copyright 2007 Andy Tompkins.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Revision History
+//  29 May 2007 - Initial Revision
+//  25 Feb 2008 - moved to namespace boost::uuids::detail
+
+// This is a byte oriented implementation
+// Note: this implementation does not handle message longer than
+//       2^32 bytes.
+
+#pragma once 
+
+#include <boost/static_assert.hpp>
+#include <cstddef>
+
+#include "word.h"
+
+#ifdef BOOST_NO_STDC_NAMESPACE
+namespace std {
+    using ::size_t;
+} // namespace std
+#endif
+
+namespace hashsmt {
+
+BOOST_STATIC_ASSERT(sizeof(unsigned char)*8 == 8);
+BOOST_STATIC_ASSERT(sizeof(unsigned int)*8 == 32);
+
+inline cvc4_uint32 left_rotate(cvc4_uint32 x, std::size_t n)
+{
+    return (x<<n) ^ (x>> (32-n));
+}
+
+class sha1
+{
+public:
+    typedef cvc4_uint32(&digest_type)[5];
+public:
+    sha1(unsigned rounds = 80);
+
+    void reset();
+
+    void process_byte(cvc4_uchar8 byte);
+    void process_block(void const* bytes_begin, void const* bytes_end);
+    void process_bytes(void const* buffer, std::size_t byte_count);
+
+    void get_digest(digest_type digest);
+
+private:
+    void process_block();
+
+private:
+    cvc4_uint32 h_[5];
+
+    cvc4_uchar8 block_[64];
+
+    std::size_t block_byte_index_;
+    std::size_t byte_count_;
+
+    unsigned rounds_;
+};
+
+inline sha1::sha1(unsigned rounds)
+: rounds_(rounds)
+{
+    reset();
+}
+
+inline void sha1::reset()
+{
+    h_[0] = 0x67452301;
+    h_[1] = 0xEFCDAB89;
+    h_[2] = 0x98BADCFE;
+    h_[3] = 0x10325476;
+    h_[4] = 0xC3D2E1F0;
+
+    block_byte_index_ = 0;
+    byte_count_ = 0;
+}
+
+inline void sha1::process_byte(cvc4_uchar8 byte)
+{
+    block_[block_byte_index_++] = byte;
+    ++byte_count_;
+    if (block_byte_index_ == 64) {
+        block_byte_index_ = 0;
+        process_block();
+    }
+}
+
+inline void sha1::process_block(void const* bytes_begin, void const* bytes_end)
+{
+    cvc4_uchar8 const* begin = static_cast<cvc4_uchar8 const*>(bytes_begin);
+    cvc4_uchar8 const* end = static_cast<cvc4_uchar8 const*>(bytes_end);
+    for(; begin != end; ++begin) {
+        process_byte(*begin);
+    }
+}
+
+inline void sha1::process_bytes(void const* buffer, std::size_t byte_count)
+{
+    cvc4_uchar8 const* b = static_cast<cvc4_uchar8 const*>(buffer);
+    process_block(b, b+byte_count);
+}
+
+inline void sha1::process_block()
+{
+    cvc4_uint32 w[80];
+    for (std::size_t i=0; i<16; ++i) {
+        w[i]  = (block_[i*4 + 0] << 24);
+        w[i] |= (block_[i*4 + 1] << 16);
+        w[i] |= (block_[i*4 + 2] << 8);
+        w[i] |= (block_[i*4 + 3]);
+    }
+    for (std::size_t i=16; i<80; ++i) {
+        w[i] = left_rotate((w[i-3] ^ w[i-8] ^ w[i-14] ^ w[i-16]), 1);
+    }
+
+    cvc4_uint32 a = h_[0];
+    cvc4_uint32 b = h_[1];
+    cvc4_uint32 c = h_[2];
+    cvc4_uint32 d = h_[3];
+    cvc4_uint32 e = h_[4];
+
+    for (std::size_t i=0; i<rounds_; ++i) {
+        cvc4_uint32 f;
+        cvc4_uint32 k;
+
+        if (i<20) {
+            f = (b & c) | (~b & d);
+            k = 0x5A827999;
+        } else if (i<40) {
+            f = b ^ c ^ d;
+            k = 0x6ED9EBA1;
+        } else if (i<60) {
+            f = (b & c) | (b & d) | (c & d);
+            k = 0x8F1BBCDC;
+        } else {
+            f = b ^ c ^ d;
+            k = 0xCA62C1D6;
+        }
+
+        cvc4_uint32 temp = left_rotate(a, 5) + f + e + k + w[i];
+        e = d;
+        d = c;
+        c = left_rotate(b, 30);
+        b = a;
+        a = temp;
+    }
+
+    h_[0] += a;
+    h_[1] += b;
+    h_[2] += c;
+    h_[3] += d;
+    h_[4] += e;
+}
+
+inline void sha1::get_digest(digest_type digest)
+{
+    std::size_t bit_count = byte_count_*8;
+
+    // append the bit '1' to the message
+    process_byte(0x80);
+
+    // append k bits '0', where k is the minimum number >= 0
+    // such that the resulting message length is congruent to 56 (mod 64)
+    // check if there is enough space for padding and bit_count
+    if (block_byte_index_ > 56) {
+        // finish this block
+        while (block_byte_index_ != 0) {
+            process_byte(0);
+        }
+
+        // one more block
+        while (block_byte_index_ < 56) {
+            process_byte(0);
+        }
+    } else {
+        while (block_byte_index_ < 56) {
+            process_byte(0);
+        }
+    }
+
+    // append length of message (before pre-processing) 
+    // as a 64-bit big-endian integer
+    process_byte(0);
+    process_byte(0);
+    process_byte(0);
+    process_byte(0);
+    process_byte( static_cast<unsigned char>((bit_count>>24) & 0xFF));
+    process_byte( static_cast<unsigned char>((bit_count>>16) & 0xFF));
+    process_byte( static_cast<unsigned char>((bit_count>>8 ) & 0xFF));
+    process_byte( static_cast<unsigned char>((bit_count)     & 0xFF));
+
+    // get final digest
+    digest[0] = h_[0];
+    digest[1] = h_[1];
+    digest[2] = h_[2];
+    digest[3] = h_[3];
+    digest[4] = h_[4];
+}
+
+} // namespace hashsmt
+
diff --git a/examples/hashsmt/sha1_collision.cpp b/examples/hashsmt/sha1_collision.cpp
new file mode 100644
index 0000000..042b626
--- /dev/null
+++ b/examples/hashsmt/sha1_collision.cpp
@@ -0,0 +1,107 @@
+/*********************                                                        */
+/*! \file sha1_collision.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+/*
+ * sha1smt.cpp
+ *
+ *  Created on: Jul 13, 2012
+ *      Author: dejan
+ */
+
+#include <boost/uuid/sha1.hpp>
+#include <fstream>
+#include <iostream>
+#include <sstream>
+#include <string>
+
+#include "expr/expr_iomanip.h"
+#include "options/language.h"
+#include "options/set_language.h"
+#include "sha1.hpp"
+#include "smt/command.h"
+#include "word.h"
+
+using namespace std;
+using namespace CVC4;
+
+hashsmt::cvc4_uchar8 *createInput(unsigned size, std::string prefix, std::ostream& output) {
+  hashsmt::cvc4_uchar8 *input = new hashsmt::cvc4_uchar8[size];
+  for(unsigned i = 0; i < size; ++i) {
+    stringstream ss;
+    ss << prefix << i;
+    input[i] = hashsmt::cvc4_uchar8(ss.str());
+    output << DeclareFunctionCommand(ss.str(), input[i].getExpr(), input[i].getExpr().getType()) << endl;
+  }
+  return input;
+}
+
+int main(int argc, char* argv[]) {
+
+  try {
+
+    // Check the arguments
+    if (argc != 4) {
+      cerr << "usage: sha1smt size rounds (1..80) output-file" << std::endl;
+      return 1;
+    }
+
+    // Get the input size to encode
+    unsigned msgSize;
+    istringstream msgSize_is(argv[1]);
+    msgSize_is >> msgSize;
+
+    // Get the number of rounds to use
+    unsigned rounds;
+    istringstream rounds_is(argv[2]);
+    rounds_is >> rounds;
+
+    // The output
+    ofstream output(argv[3]);
+    output << expr::ExprSetDepth(-1) << language::SetLanguage(language::output::LANG_SMTLIB_V2);
+    output << SetBenchmarkLogicCommand("QF_BV") << endl;
+    output << SetBenchmarkStatusCommand(SMT_UNSATISFIABLE) << endl;
+
+    // Make the variables the size of the string
+    hashsmt::cvc4_uchar8 *cvc4input1 = createInput(msgSize, "x", output);
+    hashsmt::cvc4_uchar8 *cvc4input2 = createInput(msgSize, "y", output);
+
+    // Do the cvc4 encoding for first message
+    hashsmt::sha1 cvc4encoder1(rounds);
+    cvc4encoder1.process_bytes(cvc4input1, msgSize);
+    hashsmt::cvc4_uint32 cvc4digest1[5];
+    cvc4encoder1.get_digest(cvc4digest1);
+
+    // Do the cvc4 encoding for second message
+    hashsmt::sha1 cvc4encoder2(rounds);
+    cvc4encoder2.process_bytes(cvc4input2, msgSize);
+    hashsmt::cvc4_uint32 cvc4digest2[5];
+    cvc4encoder2.get_digest(cvc4digest2);
+
+    // Create the assertion
+    Expr inputEqual = (hashsmt::Word::concat(cvc4input1, msgSize) == hashsmt::Word::concat(cvc4input2, msgSize));
+    Expr digestEqual = (hashsmt::Word::concat(cvc4digest1, 5) == hashsmt::Word::concat(cvc4digest2, 5));
+    Expr assertion = inputEqual.notExpr().andExpr(digestEqual);
+
+    output << AssertCommand(assertion) << endl;
+
+    // Checksat command
+    output << CheckSatCommand() << endl;
+
+  } catch (CVC4::Exception& e) {
+    cerr << e << endl;
+  }
+}
diff --git a/examples/hashsmt/sha1_inversion.cpp b/examples/hashsmt/sha1_inversion.cpp
new file mode 100644
index 0000000..3793f5b
--- /dev/null
+++ b/examples/hashsmt/sha1_inversion.cpp
@@ -0,0 +1,106 @@
+/*********************                                                        */
+/*! \file sha1_inversion.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+/*
+ * sha1smt.cpp
+ *
+ *  Created on: Jul 13, 2012
+ *      Author: dejan
+ */
+
+#include <boost/uuid/sha1.hpp>
+#include <fstream>
+#include <iostream>
+#include <sstream>
+#include <string>
+
+#include "expr/expr_iomanip.h"
+#include "options/language.h"
+#include "options/set_language.h"
+#include "sha1.hpp"
+#include "smt/command.h"
+#include "word.h"
+
+using namespace std;
+using namespace CVC4;
+
+int main(int argc, char* argv[]) {
+
+  try {
+
+    // Check the arguments
+    if (argc != 3) {
+      cerr << "usage: sha1smt message output-file" << std::endl;
+      return 1;
+    }
+
+    // Get the message to encode and the output file
+    string msg = argv[1];
+    unsigned msgSize = msg.size();
+    ofstream output(argv[2]);
+    output << expr::ExprSetDepth(-1) << language::SetLanguage(language::output::LANG_SMTLIB_V2);
+    output << SetBenchmarkLogicCommand("QF_BV") << endl;
+    output << SetBenchmarkStatusCommand(SMT_SATISFIABLE) << endl;
+
+    // Make the variables the size of the string
+    hashsmt::cvc4_uchar8 *cvc4input = new hashsmt::cvc4_uchar8[msgSize];
+    for (unsigned i = 0; i < msgSize; ++ i) {
+      stringstream ss;
+      ss << "x" << i;
+      cvc4input[i] = hashsmt::cvc4_uchar8(ss.str());
+      output << DeclareFunctionCommand(ss.str(), cvc4input[i].getExpr(), cvc4input[i].getExpr().getType()) << endl;
+
+      // Ouput the solution also
+      Expr solution = (cvc4input[i] == hashsmt::cvc4_uchar8(msg.c_str()[i]));
+      output << "; " << AssertCommand(solution) << endl;
+    }
+
+    // Do the cvc4 encoding
+    hashsmt::sha1 cvc4encoder;
+    cvc4encoder.process_bytes(cvc4input, msgSize);
+
+    // Get the digest as bitvectors
+    hashsmt::cvc4_uint32 cvc4digest[5];
+    cvc4encoder.get_digest(cvc4digest);
+
+    // Do the actual sha1 encoding
+    boost::uuids::detail::sha1 sha1encoder;
+    sha1encoder.process_bytes(msg.c_str(), msgSize);
+    unsigned sha1digest[5];
+    sha1encoder.get_digest(sha1digest);
+
+    // Create the assertion
+    Expr assertion;
+    for (unsigned i = 0; i < 5; ++ i) {
+      Expr conjunct = (cvc4digest[i] == hashsmt::cvc4_uint32(sha1digest[i]));
+      if (i > 0) {
+        assertion = assertion.andExpr(conjunct);
+      } else {
+        assertion = conjunct;
+      }
+    }
+    output << AssertCommand(assertion) << endl;
+
+    // Checksat command
+    output << CheckSatCommand() << endl;
+
+    delete cvc4input;
+
+  } catch (CVC4::Exception& e) {
+    cerr << e << endl;
+  }
+}
diff --git a/examples/hashsmt/word.cpp b/examples/hashsmt/word.cpp
new file mode 100644
index 0000000..f470318
--- /dev/null
+++ b/examples/hashsmt/word.cpp
@@ -0,0 +1,174 @@
+/*********************                                                        */
+/*! \file word.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+/*
+ * word.cpp
+ *
+ *  Created on: Jul 13, 2012
+ *      Author: dejan
+ */
+
+#include "word.h"
+
+#include <vector>
+
+#include "expr/expr.h"
+#include "expr/expr_iomanip.h"
+#include "options/language.h"
+#include "options/options.h"
+
+using namespace std;
+using namespace hashsmt;
+using namespace CVC4;
+using namespace CVC4::options;
+
+Expr Word::extendToSize(unsigned newSize) const {
+  if (newSize <= size()) {
+    return d_expr;
+  } else {
+    // 0-extend to size
+    Expr extendOp = em()->mkConst(BitVectorZeroExtend(newSize - size()));
+    return em()->mkExpr(extendOp, d_expr);
+  }
+}
+
+ExprManager* Word::s_manager = 0;
+
+ExprManager* Word::em() {
+  if (s_manager == 0) {
+    CVC4::Options options;
+    options.setInputLanguage(language::input::LANG_SMTLIB_V2);
+    options.setOutputLanguage(language::output::LANG_SMTLIB_V2);
+    s_manager = new CVC4::ExprManager(options);
+  }
+  return s_manager;
+}
+
+Expr Word::operator == (const Word& b) const {
+  return em()->mkExpr(kind::EQUAL, d_expr, b.getExpr());
+}
+
+Word Word::concat(const Word words[], unsigned size) {
+  Expr concat = words[0].d_expr;
+  for(unsigned i = 1; i < size; ++i) {
+      concat = em()->mkExpr(kind::BITVECTOR_CONCAT, concat, words[i].d_expr);
+  }
+  return Word(concat);
+}
+
+void Word::print(ostream& out) const {
+  out << CVC4::expr::ExprSetDepth(-1) << d_expr;
+}
+
+Word::Word(unsigned newSize, unsigned value) {
+  d_expr = em()->mkConst(BitVector(newSize, value));
+};
+
+Word::Word(unsigned newSize, string name) {
+  d_expr = em()->mkVar(name, em()->mkBitVectorType(newSize));
+};
+
+Word& Word::operator = (const Word& b) {
+  d_expr = b.d_expr;
+  return *this;
+}
+
+Word Word::operator + (const Word& b) const {
+  unsigned newSize = std::max(size(), b.size());
+  Expr lhs = extendToSize(newSize);
+  Expr rhs = b.extendToSize(newSize);
+  return em()->mkExpr(kind::BITVECTOR_PLUS, lhs, rhs);
+}
+
+Word& Word::operator += (const Word& b) {
+  (*this) = (*this) + b;
+  return (*this);
+}
+
+Word Word::operator ~ () const {
+  return em()->mkExpr(kind::BITVECTOR_NOT, d_expr);
+}
+
+Word Word::operator & (const Word& b) const {
+  unsigned newSize = std::max(size(), b.size());
+  Expr lhs = extendToSize(newSize);
+  Expr rhs = b.extendToSize(newSize);
+  return em()->mkExpr(kind::BITVECTOR_AND, lhs, rhs);
+}
+
+Word Word::operator | (const Word& b) const {
+  unsigned newSize = std::max(size(), b.size());
+  Expr lhs = extendToSize(newSize);
+  Expr rhs = b.extendToSize(newSize);
+  return em()->mkExpr(kind::BITVECTOR_OR, lhs, rhs);
+}
+
+Word& Word::operator |= (const Word& b) {
+  (*this) = (*this) | b;
+  return (*this);
+}
+
+Word Word::operator ^ (const Word& b) const {
+  unsigned newSize = std::max(size(), b.size());
+  Expr lhs = extendToSize(newSize);
+  Expr rhs = b.extendToSize(newSize);
+  return em()->mkExpr(kind::BITVECTOR_XOR, lhs, rhs);
+}
+
+Word Word::operator << (unsigned amount) const {
+  // Instead of shifting we just add zeroes, to ensure that ((char)x << 24) return 32 bits
+  Word padding(amount, 0);
+  return em()->mkExpr(kind::BITVECTOR_CONCAT, d_expr, padding.d_expr);
+}
+
+Word Word::operator >> (unsigned amount) const {
+  Word shiftAmount(size(), amount);
+  return em()->mkExpr(kind::BITVECTOR_LSHR, d_expr, shiftAmount.d_expr);
+}
+
+unsigned Word::size() const {
+  BitVectorType type = d_expr.getType();
+  return type.getSize();
+}
+
+cvc4_uint32::cvc4_uint32(const Word& b) {
+  if (b.size() > 32) {
+    // Extract the first 32 bits
+    Expr extractOp = em()->mkConst(BitVectorExtract(31, 0));
+    d_expr = em()->mkExpr(extractOp, b.getExpr());
+  } else if (b.size() < 32) {
+    // 0-extend to 32 bits
+    Expr extendOp = em()->mkConst(BitVectorZeroExtend(32 - b.size()));
+    d_expr = em()->mkExpr(extendOp, b.getExpr());    
+  } else {
+    d_expr = b.getExpr();
+  }
+}
+
+cvc4_uchar8::cvc4_uchar8(const Word& b) {
+  if (b.size() > 8) {
+    // Extract the first 8 bits
+    Expr extractOp = em()->mkConst(BitVectorExtract(7, 0));
+    d_expr = em()->mkExpr(extractOp, b.getExpr());
+  } else if (b.size() < 8) {
+    // 0-extend to 8 bits
+    Expr extendOp = em()->mkConst(BitVectorZeroExtend(8 - b.size()));
+    d_expr = em()->mkExpr(extendOp, b.getExpr());    
+  } else {
+    d_expr = b.getExpr();
+  }
+}
diff --git a/examples/hashsmt/word.h b/examples/hashsmt/word.h
new file mode 100644
index 0000000..de6abb1
--- /dev/null
+++ b/examples/hashsmt/word.h
@@ -0,0 +1,127 @@
+/*********************                                                        */
+/*! \file word.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+/*
+ * word.h
+ *
+ *  Created on: Jul 13, 2012
+ *      Author: dejan
+ */
+
+#ifndef WORD_H_
+#define WORD_H_
+
+#include <string>
+#include <iostream>
+
+#include "expr/expr.h"
+#include "expr/expr_manager.h"
+#include "options/options.h"
+
+namespace hashsmt {
+
+class Word {
+
+  /** Expression managaer we're using for all word expressions */
+  static CVC4::ExprManager* s_manager;
+
+protected:
+
+  /** The expression of this word */
+  CVC4::Expr d_expr;
+
+  /** Get the expression manager words are using */
+  static CVC4::ExprManager* em();
+
+  Word(CVC4::Expr expr = CVC4::Expr())
+  : d_expr(expr) {}
+
+  /** Extend the representing expression to the given size >= size() */
+  CVC4::Expr extendToSize(unsigned size) const;
+
+public:
+
+  Word(unsigned size, unsigned value = 0);
+  Word(unsigned size, std::string name);
+
+  Word& operator =  (const Word& b);
+  Word  operator +  (const Word& b) const;
+  Word& operator += (const Word& b);
+  Word  operator ~  () const;
+  Word  operator &  (const Word& b) const;
+  Word  operator |  (const Word& b) const;
+  Word& operator |= (const Word& b);
+  Word  operator ^  (const Word& b) const;
+  Word  operator << (unsigned amount) const;
+  Word  operator >> (unsigned amount) const;
+
+  unsigned size() const;
+
+  void print(std::ostream& out) const;
+
+  CVC4::Expr getExpr() const {
+    return d_expr;
+  }
+
+  /** Returns the comparison expression */  
+  CVC4::Expr operator == (const Word& b) const;
+
+  /** Concatenate the given words */
+  static Word concat(const Word words[], unsigned size);
+};
+
+inline std::ostream& operator << (std::ostream& out, const Word& word) {
+  word.print(out);
+  return out;
+}
+
+/** Symbolic 32-bit unsigned integer as a CVC4 bitvector expression */
+class cvc4_uint32 : public Word {
+public:
+
+  /** Construction from constants of the right size */
+  cvc4_uint32(unsigned value = 0)
+  : Word(32, value) {}
+
+  /** Construction of variables of the right size */
+  cvc4_uint32(std::string name)
+  : Word(32, name) {}
+
+  /** Automatic extend/cut to uint32 */
+  cvc4_uint32(const Word& word);
+};
+
+/** Symbolic 8-bit unsigned char as a CVC4 bitvector expression */
+class cvc4_uchar8 : public Word {
+public:
+
+  /** Construction from constants of the right size */
+  cvc4_uchar8(unsigned value = 0)
+  : Word(8, value) {}
+
+  /** Construction of variables of the right size */
+  cvc4_uchar8(std::string name)
+  : Word(8, name) {}
+
+  /** Automatic extend/cut to uchar8 */
+  cvc4_uchar8(const Word& word);
+};
+
+
+}
+
+#endif /* WORD_H_ */
diff --git a/examples/nra-translate/Makefile.am b/examples/nra-translate/Makefile.am
new file mode 100644
index 0000000..081ada4
--- /dev/null
+++ b/examples/nra-translate/Makefile.am
@@ -0,0 +1,61 @@
+AM_CPPFLAGS = \
+	-I at srcdir@/../../src/include -I at srcdir@/../../src -I at builddir@/../../src $(ANTLR_INCLUDES)
+AM_CXXFLAGS = -Wall
+AM_CFLAGS = -Wall
+
+noinst_PROGRAMS = \
+	smt2toqepcad \
+	smt2tomathematica \
+	smt2toisat \
+	smt2toredlog \
+	smt2todreal \
+	normalize \
+	smt2info	
+
+noinst_DATA =
+
+smt2toqepcad_SOURCES = \
+	smt2toqepcad.cpp
+smt2toqepcad_LDADD = \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+
+smt2tomathematica_SOURCES = \
+	smt2tomathematica.cpp
+smt2tomathematica_LDADD = \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+
+smt2toisat_SOURCES = \
+	smt2toisat.cpp
+smt2toisat_LDADD = \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+
+smt2toredlog_SOURCES = \
+	smt2toredlog.cpp
+smt2toredlog_LDADD = \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+
+smt2todreal_SOURCES = \
+	smt2todreal.cpp
+smt2todreal_LDADD = \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+
+smt2info_SOURCES = \
+	smt2info.cpp
+smt2info_LDADD = \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+
+normalize_SOURCES = \
+	normalize.cpp
+normalize_LDADD = \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+
+# for installation
+examplesdir = $(docdir)/$(subdir)
+examples_DATA = $(DIST_SOURCES) $(EXTRA_DIST)
diff --git a/examples/nra-translate/Makefile.in b/examples/nra-translate/Makefile.in
new file mode 100644
index 0000000..ba7a863
--- /dev/null
+++ b/examples/nra-translate/Makefile.in
@@ -0,0 +1,914 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+noinst_PROGRAMS = smt2toqepcad$(EXEEXT) smt2tomathematica$(EXEEXT) \
+	smt2toisat$(EXEEXT) smt2toredlog$(EXEEXT) smt2todreal$(EXEEXT) \
+	normalize$(EXEEXT) smt2info$(EXEEXT)
+subdir = examples/nra-translate
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+PROGRAMS = $(noinst_PROGRAMS)
+am_normalize_OBJECTS = normalize.$(OBJEXT)
+normalize_OBJECTS = $(am_normalize_OBJECTS)
+normalize_DEPENDENCIES = @builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+am_smt2info_OBJECTS = smt2info.$(OBJEXT)
+smt2info_OBJECTS = $(am_smt2info_OBJECTS)
+smt2info_DEPENDENCIES = @builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+am_smt2todreal_OBJECTS = smt2todreal.$(OBJEXT)
+smt2todreal_OBJECTS = $(am_smt2todreal_OBJECTS)
+smt2todreal_DEPENDENCIES =  \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+am_smt2toisat_OBJECTS = smt2toisat.$(OBJEXT)
+smt2toisat_OBJECTS = $(am_smt2toisat_OBJECTS)
+smt2toisat_DEPENDENCIES =  \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+am_smt2tomathematica_OBJECTS = smt2tomathematica.$(OBJEXT)
+smt2tomathematica_OBJECTS = $(am_smt2tomathematica_OBJECTS)
+smt2tomathematica_DEPENDENCIES =  \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+am_smt2toqepcad_OBJECTS = smt2toqepcad.$(OBJEXT)
+smt2toqepcad_OBJECTS = $(am_smt2toqepcad_OBJECTS)
+smt2toqepcad_DEPENDENCIES =  \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+am_smt2toredlog_OBJECTS = smt2toredlog.$(OBJEXT)
+smt2toredlog_OBJECTS = $(am_smt2toredlog_OBJECTS)
+smt2toredlog_DEPENDENCIES =  \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+SOURCES = $(normalize_SOURCES) $(smt2info_SOURCES) \
+	$(smt2todreal_SOURCES) $(smt2toisat_SOURCES) \
+	$(smt2tomathematica_SOURCES) $(smt2toqepcad_SOURCES) \
+	$(smt2toredlog_SOURCES)
+DIST_SOURCES = $(normalize_SOURCES) $(smt2info_SOURCES) \
+	$(smt2todreal_SOURCES) $(smt2toisat_SOURCES) \
+	$(smt2tomathematica_SOURCES) $(smt2toqepcad_SOURCES) \
+	$(smt2toredlog_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(examplesdir)"
+DATA = $(examples_DATA) $(noinst_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+AM_CPPFLAGS = \
+	-I at srcdir@/../../src/include -I at srcdir@/../../src -I at builddir@/../../src $(ANTLR_INCLUDES)
+
+AM_CXXFLAGS = -Wall
+AM_CFLAGS = -Wall
+noinst_DATA = 
+smt2toqepcad_SOURCES = \
+	smt2toqepcad.cpp
+
+smt2toqepcad_LDADD = \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+
+smt2tomathematica_SOURCES = \
+	smt2tomathematica.cpp
+
+smt2tomathematica_LDADD = \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+
+smt2toisat_SOURCES = \
+	smt2toisat.cpp
+
+smt2toisat_LDADD = \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+
+smt2toredlog_SOURCES = \
+	smt2toredlog.cpp
+
+smt2toredlog_LDADD = \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+
+smt2todreal_SOURCES = \
+	smt2todreal.cpp
+
+smt2todreal_LDADD = \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+
+smt2info_SOURCES = \
+	smt2info.cpp
+
+smt2info_LDADD = \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+
+normalize_SOURCES = \
+	normalize.cpp
+
+normalize_LDADD = \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+
+
+# for installation
+examplesdir = $(docdir)/$(subdir)
+examples_DATA = $(DIST_SOURCES) $(EXTRA_DIST)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/nra-translate/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu examples/nra-translate/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstPROGRAMS:
+	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+	echo " rm -f" $$list; \
+	rm -f $$list || exit $$?; \
+	test -n "$(EXEEXT)" || exit 0; \
+	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+	echo " rm -f" $$list; \
+	rm -f $$list
+
+normalize$(EXEEXT): $(normalize_OBJECTS) $(normalize_DEPENDENCIES) $(EXTRA_normalize_DEPENDENCIES) 
+	@rm -f normalize$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(normalize_OBJECTS) $(normalize_LDADD) $(LIBS)
+
+smt2info$(EXEEXT): $(smt2info_OBJECTS) $(smt2info_DEPENDENCIES) $(EXTRA_smt2info_DEPENDENCIES) 
+	@rm -f smt2info$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(smt2info_OBJECTS) $(smt2info_LDADD) $(LIBS)
+
+smt2todreal$(EXEEXT): $(smt2todreal_OBJECTS) $(smt2todreal_DEPENDENCIES) $(EXTRA_smt2todreal_DEPENDENCIES) 
+	@rm -f smt2todreal$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(smt2todreal_OBJECTS) $(smt2todreal_LDADD) $(LIBS)
+
+smt2toisat$(EXEEXT): $(smt2toisat_OBJECTS) $(smt2toisat_DEPENDENCIES) $(EXTRA_smt2toisat_DEPENDENCIES) 
+	@rm -f smt2toisat$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(smt2toisat_OBJECTS) $(smt2toisat_LDADD) $(LIBS)
+
+smt2tomathematica$(EXEEXT): $(smt2tomathematica_OBJECTS) $(smt2tomathematica_DEPENDENCIES) $(EXTRA_smt2tomathematica_DEPENDENCIES) 
+	@rm -f smt2tomathematica$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(smt2tomathematica_OBJECTS) $(smt2tomathematica_LDADD) $(LIBS)
+
+smt2toqepcad$(EXEEXT): $(smt2toqepcad_OBJECTS) $(smt2toqepcad_DEPENDENCIES) $(EXTRA_smt2toqepcad_DEPENDENCIES) 
+	@rm -f smt2toqepcad$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(smt2toqepcad_OBJECTS) $(smt2toqepcad_LDADD) $(LIBS)
+
+smt2toredlog$(EXEEXT): $(smt2toredlog_OBJECTS) $(smt2toredlog_DEPENDENCIES) $(EXTRA_smt2toredlog_DEPENDENCIES) 
+	@rm -f smt2toredlog$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(smt2toredlog_OBJECTS) $(smt2toredlog_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/normalize.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/smt2info.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/smt2todreal.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/smt2toisat.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/smt2tomathematica.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/smt2toqepcad.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/smt2toredlog.Po at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-examplesDATA: $(examples_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(examples_DATA)'; test -n "$(examplesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(examplesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(examplesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(examplesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(examplesdir)" || exit $$?; \
+	done
+
+uninstall-examplesDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(examples_DATA)'; test -n "$(examplesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(examplesdir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS) $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(examplesdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-examplesDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-examplesDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am \
+	install-examplesDATA install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+	uninstall-examplesDATA
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/examples/nra-translate/normalize.cpp b/examples/nra-translate/normalize.cpp
new file mode 100644
index 0000000..c3a7184
--- /dev/null
+++ b/examples/nra-translate/normalize.cpp
@@ -0,0 +1,89 @@
+/*********************                                                        */
+/*! \file normalize.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include <cassert>
+#include <iostream>
+#include <map>
+#include <string>
+#include <typeinfo>
+#include <vector>
+
+#include "expr/expr.h"
+#include "expr/expr_iomanip.h"
+#include "options/language.h"
+#include "options/options.h"
+#include "options/set_language.h"
+#include "parser/parser.h"
+#include "parser/parser_builder.h"
+#include "smt/smt_engine.h"
+#include "smt/command.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::parser;
+using namespace CVC4::theory;
+
+int main(int argc, char* argv[])
+{
+
+  // Get the filename
+  string input(argv[1]);
+
+  // Create the expression manager
+  Options options;
+  options.setInputLanguage(language::input::LANG_SMTLIB_V2);
+  ExprManager exprManager(options);
+
+  cout << language::SetLanguage(language::output::LANG_SMTLIB_V2)
+       << expr::ExprSetDepth(-1);
+
+  // Create the parser
+  ParserBuilder parserBuilder(&exprManager, input, options);
+  Parser* parser = parserBuilder.build();
+
+  // Smt manager for simplifications
+  SmtEngine engine(&exprManager);
+
+  // Variables and assertions
+  vector<Expr> assertions;
+
+  Command* cmd;
+  while ((cmd = parser->nextCommand())) {
+
+    AssertCommand* assert = dynamic_cast<AssertCommand*>(cmd);
+    if (assert) {
+      Expr normalized = engine.simplify(assert->getExpr());
+      cout << "(assert " << normalized << ")" << endl;
+      delete cmd;
+      continue;
+    }
+
+    CheckSatCommand* checksat = dynamic_cast<CheckSatCommand*>(cmd);
+    if (checksat) {
+      delete cmd;
+      continue;
+    }
+
+    cout << *cmd << endl;
+    delete cmd;
+  }
+
+  cout << "(check-sat)" << endl;
+
+  // Get rid of the parser
+  delete parser;
+}
diff --git a/examples/nra-translate/smt2info.cpp b/examples/nra-translate/smt2info.cpp
new file mode 100644
index 0000000..fe37b67
--- /dev/null
+++ b/examples/nra-translate/smt2info.cpp
@@ -0,0 +1,135 @@
+/*********************                                                        */
+/*! \file smt2info.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include <cassert>
+#include <iostream>
+#include <string>
+#include <typeinfo>
+#include <vector>
+
+#include "expr/expr.h"
+#include "options/options.h"
+#include "parser/parser.h"
+#include "parser/parser_builder.h"
+#include "smt/command.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::parser;
+using namespace CVC4::options;
+
+unsigned compute_degree(ExprManager& exprManager, const Expr& term) {
+  unsigned n = term.getNumChildren();    
+  unsigned degree = 0;
+
+  // boolean stuff
+  if (term.getType() == exprManager.booleanType()) {
+    for (unsigned i = 0; i < n; ++ i) {
+      degree = std::max(degree, compute_degree(exprManager, term[i]));
+    }
+    return degree;
+  }
+
+  // terms
+  if (n == 0) {
+    if (term.getKind() == kind::CONST_RATIONAL) {
+      return 0;
+    } else {
+      return 1;
+    }
+  } else {
+    unsigned degree = 0;  
+    if (term.getKind() == kind::MULT) {
+      for (unsigned i = 0; i < n; ++ i) {
+        degree += std::max(degree, compute_degree(exprManager, term[i]));
+      }
+    } else {
+      for (unsigned i = 0; i < n; ++ i) {
+        degree = std::max(degree, compute_degree(exprManager, term[i]));
+      }
+    }    
+    return degree;    
+  }
+}
+
+
+int main(int argc, char* argv[]) 
+{
+
+  try {
+
+    // Get the filename 
+    string input(argv[1]);
+
+    // Create the expression manager
+    Options options;
+    options.setInputLanguage(language::input::LANG_SMTLIB_V2);
+    ExprManager exprManager(options);
+
+    // Create the parser
+    ParserBuilder parserBuilder(&exprManager, input, options);
+    Parser* parser = parserBuilder.build();
+
+    // Variables and assertions
+    vector<string> variables;
+    vector<string> info_tags;
+    vector<string> info_data;
+    vector<Expr> assertions;
+  
+    Command* cmd;
+    while ((cmd = parser->nextCommand())) {
+    
+      SetInfoCommand* setinfo = dynamic_cast<SetInfoCommand*>(cmd);
+      if (setinfo) {
+        info_tags.push_back(setinfo->getFlag());
+        info_data.push_back(setinfo->getSExpr().getValue());
+        delete cmd;
+        continue;
+      }
+  
+      DeclareFunctionCommand* declare = dynamic_cast<DeclareFunctionCommand*>(cmd);
+      if (declare) {
+        variables.push_back(declare->getSymbol());
+        delete cmd;
+        continue;
+      }
+      
+      AssertCommand* assert = dynamic_cast<AssertCommand*>(cmd);
+      if (assert) {
+        assertions.push_back(assert->getExpr());
+        delete cmd;
+        continue;
+      }
+  
+      delete cmd;  
+    }
+    
+    cout << "variables: " << variables.size() << endl;
+  
+    unsigned total_degree = 0;
+    for (unsigned i = 0; i < assertions.size(); ++ i) {
+      total_degree = std::max(total_degree, compute_degree(exprManager, assertions[i]));
+    }
+  
+    cout << "degree: " << total_degree << endl;
+  
+    // Get rid of the parser
+    delete parser;
+  } catch (Exception& e) {
+    cerr << e << endl;
+  }
+}
diff --git a/examples/nra-translate/smt2todreal.cpp b/examples/nra-translate/smt2todreal.cpp
new file mode 100644
index 0000000..fd42486
--- /dev/null
+++ b/examples/nra-translate/smt2todreal.cpp
@@ -0,0 +1,83 @@
+/*********************                                                        */
+/*! \file smt2todreal.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include <cassert>
+#include <iostream>
+#include <map>
+#include <string>
+#include <typeinfo>
+#include <vector>
+
+#include "expr/expr.h"
+#include "expr/expr_iomanip.h"
+#include "options/options.h"
+#include "parser/parser.h"
+#include "parser/parser_builder.h"
+#include "smt/smt_engine.h"
+#include "smt/command.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::parser;
+using namespace CVC4::options;
+
+int main(int argc, char* argv[])
+{
+
+  // Get the filename
+  string input(argv[1]);
+
+  // Create the expression manager
+  Options options;
+  options.setInputLanguage(language::input::LANG_SMTLIB_V2);
+  options.setOutputLanguage(language::output::LANG_SMTLIB_V2);
+  ExprManager exprManager(options);
+
+  cout << expr::ExprDag(0) << expr::ExprSetDepth(-1);
+
+  // Create the parser
+  ParserBuilder parserBuilder(&exprManager, input, options);
+  Parser* parser = parserBuilder.build();
+
+  // Smt manager for simplifications
+  SmtEngine engine(&exprManager);
+
+  // Variables and assertions
+  std::map<Expr, unsigned> variables;
+  vector<string> info_tags;
+  vector<string> info_data;
+  vector<Expr> assertions;
+
+  Command* cmd;
+  while ((cmd = parser->nextCommand())) {
+
+    DeclareFunctionCommand* declare = dynamic_cast<DeclareFunctionCommand*>(cmd);
+    if (declare) {
+      cout << "[-10000, 10000] " << declare->getSymbol() << ";" << endl;
+    }
+    
+    AssertCommand* assert = dynamic_cast<AssertCommand*>(cmd);
+    if (assert) {
+      cout << assert->getExpr() << ";" << endl;
+    }
+
+    delete cmd;  
+  }
+	
+  // Get rid of the parser
+  delete parser;
+}
diff --git a/examples/nra-translate/smt2toisat.cpp b/examples/nra-translate/smt2toisat.cpp
new file mode 100644
index 0000000..b41cd97
--- /dev/null
+++ b/examples/nra-translate/smt2toisat.cpp
@@ -0,0 +1,312 @@
+/*********************                                                        */
+/*! \file smt2toisat.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include <cassert>
+#include <iostream>
+#include <map>
+#include <string>
+#include <typeinfo>
+#include <vector>
+
+#include "expr/expr.h"
+#include "options/options.h"
+#include "parser/parser.h"
+#include "parser/parser_builder.h"
+#include "smt/command.h"
+#include "smt/smt_engine.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::parser;
+using namespace CVC4::options;
+
+void translate_to_isat(
+        string input,
+        const vector<string>& info_tags,
+        const vector<string>& info_data,
+	const map<Expr, unsigned>& variables,
+	const vector<Expr>& assertions);
+
+int main(int argc, char* argv[])
+{
+
+  // Get the filename
+  string input(argv[1]);
+
+  // Create the expression manager
+  Options options;
+  options.setInputLanguage(language::input::LANG_SMTLIB_V2);
+  ExprManager exprManager(options);
+
+  // Create the parser
+  ParserBuilder parserBuilder(&exprManager, input, options);
+  Parser* parser = parserBuilder.build();
+
+  // Smt manager for simplifications
+  SmtEngine engine(&exprManager);
+
+  // Variables and assertions
+  std::map<Expr, unsigned> variables;
+  vector<string> info_tags;
+  vector<string> info_data;
+  vector<Expr> assertions;
+
+  Command* cmd;
+  while ((cmd = parser->nextCommand())) {
+
+    SetInfoCommand* setinfo = dynamic_cast<SetInfoCommand*>(cmd);
+    if (setinfo) {
+      info_tags.push_back(setinfo->getFlag());
+      info_data.push_back(setinfo->getSExpr().getValue());
+      delete cmd;
+      continue;
+    }
+
+    DeclareFunctionCommand* declare = dynamic_cast<DeclareFunctionCommand*>(cmd);
+    if (declare) {
+      string name = declare->getSymbol();
+      Expr var = parser->getVariable(name);
+      unsigned n = variables.size();
+      variables[var] = n;
+      delete cmd;
+      continue;
+    }
+    
+    AssertCommand* assert = dynamic_cast<AssertCommand*>(cmd);
+    if (assert) {
+      assertions.push_back(engine.simplify(assert->getExpr()));
+      delete cmd;
+      continue;
+    }
+
+    delete cmd;  
+  }
+
+  // Do the translation
+  translate_to_isat(input, info_tags, info_data, variables, assertions);
+	
+  // Get rid of the parser
+  delete parser;
+}
+
+void translate_to_isat_term(const map<Expr, unsigned>& variables, const Expr& term) {
+  bool first;
+
+  unsigned n = term.getNumChildren();
+  
+  if (n == 0) {
+    if (term.getKind() == kind::CONST_RATIONAL) {
+      cout << term.getConst<Rational>();
+    } else {
+      assert(variables.find(term) != variables.end());
+      cout << "x" << variables.find(term)->second;
+    }
+  } else {
+        
+    switch (term.getKind()) {
+      case kind::PLUS:
+        cout << "(";
+        first = true;
+        for (unsigned i = 0; i < n; ++ i) {
+          if (!first) {
+            cout << " + ";
+          }
+          first = false;
+          translate_to_isat_term(variables, term[i]);
+        }
+        cout << ")";
+        break;
+      case kind::MULT:
+        cout << "(";
+        first = true;
+        for (unsigned i = 0; i < n; ++ i) {
+          if (!first) {
+            cout << " * ";
+          }
+          first = false;
+          translate_to_isat_term(variables, term[i]);
+        }
+        cout << ")";
+        break;      
+      case kind::MINUS:
+        cout << "(";
+        translate_to_isat_term(variables, term[0]);
+        cout << " - ";
+        translate_to_isat_term(variables, term[1]);
+        cout << ")";
+        break;
+      case kind::DIVISION:
+        assert(false);
+        break;
+      case kind::UMINUS:
+        cout << "(-(";
+        translate_to_isat_term(variables, term[0]);
+        cout << "))";
+        break;
+      default:
+        assert(false);
+        break;
+    }
+  }  
+}
+
+void translate_to_isat(const map<Expr, unsigned>& variables, const Expr& assertion) {
+  bool first;
+  
+  unsigned n = assertion.getNumChildren();
+  
+  if (n == 0) {
+    if (assertion.isConst()) {
+      if (assertion.getConst<bool>()) {
+        cout << "(1 > 0)";
+      } else {
+        cout << "(1 < 0)";
+      }
+    } else {
+      assert(false);
+    }
+  } else {
+    
+    std::string op;
+    bool binary = false;
+    bool theory = false;
+    
+    switch (assertion.getKind()) {
+      case kind::NOT: 
+        cout << "!";  
+        translate_to_isat(variables, assertion[0]);
+        break;
+      case kind::OR:
+        first = true;
+        cout << "(";
+        for (unsigned i = 0; i < n; ++ i) {
+          if (!first) {
+            cout << " or ";
+          }
+          first = false;
+          translate_to_isat(variables, assertion[i]);
+        }
+        cout << ")";
+        break;
+      case kind::AND:
+        first = true;
+        cout << "(";
+        for (unsigned i = 0; i < n; ++ i) {
+          if (!first) {
+            cout << " and ";
+          }
+          first = false;
+          translate_to_isat(variables, assertion[i]);
+        }
+        cout << ")";
+        break;      
+      case kind::IMPLIES:
+        cout << "(";
+        translate_to_isat(variables, assertion[0]);
+        cout << " -> ";
+        translate_to_isat(variables, assertion[1]);
+        cout << ")";
+        break;          
+      case kind::EQUAL:
+        if( assertion[0].getType().isBoolean() ){
+          cout << "(";
+          translate_to_isat(variables, assertion[0]);
+          cout << " <-> ";
+          translate_to_isat(variables, assertion[1]);
+          cout << ")";
+        }else{
+          op = "=";
+          theory = true;
+        }
+	      break;
+      case kind::LT:
+        op = "<";
+        theory = true;
+        break;
+      case kind::LEQ:
+        op = "<=";
+        theory = true;
+        break;
+      case kind::GT:
+        op = ">";
+        theory = true;
+        break;
+      case kind::GEQ:
+        op = ">=";
+        theory = true;
+        break;
+      default:
+        assert(false);
+        break;
+    }
+
+    if (binary) {
+      cout << "(";
+      translate_to_isat(variables, assertion[0]);
+      cout << " " << op << " ";
+      translate_to_isat(variables, assertion[1]);
+      cout << ")";
+    }      
+
+    if (theory) {
+      cout << "(";
+      translate_to_isat_term(variables, assertion[0]);
+      cout << " " << op << " ";
+      translate_to_isat_term(variables, assertion[1]);
+      cout << ")";
+    }      
+  }  
+}
+
+void translate_to_isat(
+        string input,
+        const vector<string>& info_tags,
+        const vector<string>& info_data,
+        const std::map<Expr, unsigned>& variables,
+	const vector<Expr>& assertions)
+{
+  bool first;
+
+  // Dump out the information
+  cout << "-- translated from " << input << endl;
+
+  // Dump the variables
+  cout << "DECL" << endl;
+  cout << "    -- the variables" << endl;
+  cout << "    float [-1000, 1000]";
+  first = true;
+  for (unsigned i = 0; i < variables.size(); ++ i) {
+    if (!first) {
+      cout << ",";
+    }
+    cout << " x" << i;
+    if (first) {
+      first = false;
+    }
+  }
+  cout << ";" << endl;
+  
+  // The assertions
+  cout << "EXPR" << endl;
+  cout << "    -- the constraints to be solved" << endl;
+  for (unsigned i = 0; i < assertions.size(); ++ i) {
+    cout << "    ";
+    translate_to_isat(variables, assertions[i]);
+    cout << ";" << endl;
+  }
+
+}
diff --git a/examples/nra-translate/smt2tomathematica.cpp b/examples/nra-translate/smt2tomathematica.cpp
new file mode 100644
index 0000000..c593cf7
--- /dev/null
+++ b/examples/nra-translate/smt2tomathematica.cpp
@@ -0,0 +1,326 @@
+/*********************                                                        */
+/*! \file smt2tomathematica.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include <cassert>
+#include <iostream>
+#include <map>
+#include <string>
+#include <typeinfo>
+#include <vector>
+
+#include "expr/expr.h"
+#include "options/options.h"
+#include "parser/parser.h"
+#include "parser/parser_builder.h"
+#include "smt/command.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::parser;
+
+void translate_to_mathematica(
+        string input,
+        const vector<string>& info_tags,
+        const vector<string>& info_data,
+	const map<Expr, unsigned>& variables,
+	const vector<Expr>& assertions);
+
+int main(int argc, char* argv[])
+{
+
+  // Get the filename
+  string input(argv[1]);
+
+  // Create the expression manager
+  Options options;
+  options.setInputLanguage(language::input::LANG_SMTLIB_V2);
+  ExprManager exprManager(options);
+
+  // Create the parser
+  ParserBuilder parserBuilder(&exprManager, input, options);
+  Parser* parser = parserBuilder.build();
+
+  // Variables and assertions
+  std::map<Expr, unsigned> variables;
+  vector<string> info_tags;
+  vector<string> info_data;
+  vector<Expr> assertions;
+
+  Command* cmd;
+  while ((cmd = parser->nextCommand())) {
+
+    SetInfoCommand* setinfo = dynamic_cast<SetInfoCommand*>(cmd);
+    if (setinfo) {
+      info_tags.push_back(setinfo->getFlag());
+      info_data.push_back(setinfo->getSExpr().getValue());
+      delete cmd;
+      continue;
+    }
+
+    DeclareFunctionCommand* declare = dynamic_cast<DeclareFunctionCommand*>(cmd);
+    if (declare) {
+      string name = declare->getSymbol();
+      Expr var = parser->getVariable(name);
+      unsigned n = variables.size();
+      variables[var] = n;
+      delete cmd;
+      continue;
+    }
+    
+    AssertCommand* assert = dynamic_cast<AssertCommand*>(cmd);
+    if (assert) {
+      assertions.push_back(assert->getExpr());
+      delete cmd;
+      continue;
+    }
+
+    delete cmd;  
+  }
+
+  // Do the translation
+  translate_to_mathematica(input, info_tags, info_data, variables, assertions);
+	
+  // Get rid of the parser
+  delete parser;
+}
+
+void translate_to_mathematica_term(const map<Expr, unsigned>& variables, const Expr& term) {
+  bool first;
+
+  unsigned n = term.getNumChildren();
+  
+  if (n == 0) {
+    if (term.getKind() == kind::CONST_RATIONAL) {
+      cout << term.getConst<Rational>();
+    } else {
+      assert(variables.find(term) != variables.end());
+      cout << "x" << variables.find(term)->second;
+    }
+  } else {
+        
+    switch (term.getKind()) {
+      case kind::PLUS:
+        cout << "(";
+        first = true;
+        for (unsigned i = 0; i < n; ++ i) {
+          if (!first) {
+            cout << " + ";
+          }
+          first = false;
+          translate_to_mathematica_term(variables, term[i]);
+        }
+        cout << ")";
+        break;
+      case kind::MULT:
+        cout << "(";
+        first = true;
+        for (unsigned i = 0; i < n; ++ i) {
+          if (!first) {
+            cout << " * ";
+          }
+          first = false;
+          translate_to_mathematica_term(variables, term[i]);
+        }
+        cout << ")";
+        break;      
+      case kind::MINUS:
+        cout << "(";
+        translate_to_mathematica_term(variables, term[0]);
+        cout << " - ";
+        translate_to_mathematica_term(variables, term[1]);        
+        cout << ")";
+        break;
+      case kind::DIVISION:
+        // we only allow division by constant
+        assert(term[1].getKind() == kind::CONST_RATIONAL);
+        cout << "(";
+        translate_to_mathematica_term(variables, term[0]);
+        cout << " / ";
+        translate_to_mathematica_term(variables, term[1]);        
+        cout << ")";
+        break;
+      case kind::UMINUS:
+        cout << "(-(";
+        translate_to_mathematica_term(variables, term[0]);
+        cout << "))";
+        break;
+      default:
+        assert(false);
+        break;
+    }
+  }  
+}
+
+void translate_to_mathematica(const map<Expr, unsigned>& variables, const Expr& assertion) {
+  bool first;
+  
+  unsigned n = assertion.getNumChildren();
+  
+  if (n == 0) {
+    assert(false);
+  } else {
+    
+    std::string op;
+    bool binary = false;
+    bool theory = false;
+    
+    
+    switch (assertion.getKind()) {
+      case kind::NOT: 
+        cout << "!";  
+        translate_to_mathematica(variables, assertion[0]);
+        break;
+      case kind::OR:
+        first = true;
+        cout << "(";
+        for (unsigned i = 0; i < n; ++ i) {
+          if (!first) {
+            cout << " || ";
+          }
+          first = false;
+          translate_to_mathematica(variables, assertion[i]);
+        }
+        cout << ")";
+        break;
+      case kind::AND:
+        first = true;
+        cout << "(";
+        for (unsigned i = 0; i < n; ++ i) {
+          if (!first) {
+            cout << " && ";
+          }
+          first = false;
+          translate_to_mathematica(variables, assertion[i]);
+        }
+        cout << ")";
+        break;      
+      case kind::IMPLIES:
+        cout << "Implies[";
+        translate_to_mathematica(variables, assertion[0]);
+        cout << ",";
+        translate_to_mathematica(variables, assertion[1]);
+        cout << "]";
+        break;         
+      case kind::EQUAL:
+      if( assertion[0].getType().isBoolean() ){
+        cout << "Equivalent[";
+        translate_to_mathematica(variables, assertion[0]);
+        cout << ",";
+        translate_to_mathematica(variables, assertion[1]);
+        cout << "]";
+      }else{
+        op = "==";
+        theory = true;
+      }
+	      break;
+      case kind::LT:
+        op = "<";
+        theory = true;
+        break;
+      case kind::LEQ:
+        op = "<=";
+        theory = true;
+        break;
+      case kind::GT:
+        op = ">";
+        theory = true;
+        break;
+      case kind::GEQ:
+        op = ">=";
+        theory = true;
+        break;
+      default:
+        assert(false);
+        break;
+    }
+
+    if (binary) {
+      cout << "(";
+      translate_to_mathematica(variables, assertion[0]);
+      cout << " " << op << " ";
+      translate_to_mathematica(variables, assertion[1]);
+      cout << ")";
+    }      
+
+    if (theory) {
+      cout << "(";
+      translate_to_mathematica_term(variables, assertion[0]);
+      cout << " " << op << " ";
+      translate_to_mathematica_term(variables, assertion[1]);
+      cout << ")";
+    }      
+  }  
+}
+
+void translate_to_mathematica(
+        string input,
+        const vector<string>& info_tags,
+        const vector<string>& info_data,
+        const std::map<Expr, unsigned>& variables,
+	const vector<Expr>& assertions)
+{
+  bool first;
+
+  // Dump out the information
+  cout << "(* translated from " << input << " ";
+
+  bool dump_tags = false;
+  if (dump_tags) {  
+    first = true;  
+    for (unsigned i = 0; i < info_tags.size(); ++ i) {
+      if (!first) {
+        cout << ", "; 
+      }
+      first = false;
+      cout << info_tags[i] << " = " << info_data[i];
+    }
+  }
+  
+  cout << "*)" << endl;   
+
+  cout << "Resolve[";
+
+  // Formula 
+  cout << "Exists[{";
+  first = true;
+  for (unsigned i = 0; i < variables.size(); ++ i) {
+    if (!first) {
+      cout << ",";
+    }
+    first = false;
+    cout << "x" << i;
+  }
+  cout << "}, ";
+  
+  if (assertions.size() > 1) {
+    first = true;
+    for (unsigned i = 0; i < assertions.size(); ++ i) {
+      if (!first) {
+        cout << " && ";
+      } 
+      first = false;
+      translate_to_mathematica(variables, assertions[i]);
+    }
+  } else {
+    translate_to_mathematica(variables, assertions[0]);
+  }
+  cout << "]";
+
+
+  // End resolve
+  cout << ", Reals]" << endl;
+}
diff --git a/examples/nra-translate/smt2toqepcad.cpp b/examples/nra-translate/smt2toqepcad.cpp
new file mode 100644
index 0000000..30b0afb
--- /dev/null
+++ b/examples/nra-translate/smt2toqepcad.cpp
@@ -0,0 +1,355 @@
+/*********************                                                        */
+/*! \file smt2toqepcad.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include <cassert>
+#include <iostream>
+#include <map>
+#include <string>
+#include <typeinfo>
+#include <vector>
+
+#include "expr/expr.h"
+#include "options/options.h"
+#include "parser/parser.h"
+#include "parser/parser_builder.h"
+#include "smt/command.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::parser;
+
+void translate_to_qepcad(
+        string input,
+        const vector<string>& info_tags,
+        const vector<string>& info_data,
+	const map<Expr, unsigned>& variables,
+	const vector<Expr>& assertions);
+
+int main(int argc, char* argv[])
+{
+  std::map<Expr, unsigned> vars2id;
+
+  // Get the filename
+  string input(argv[1]);
+
+  // Create the expression manager
+  Options options;
+  options.setInputLanguage(language::input::LANG_SMTLIB_V2);
+  ExprManager exprManager(options);
+
+  // Create the parser
+  ParserBuilder parserBuilder(&exprManager, input, options);
+  Parser* parser = parserBuilder.build();
+
+  // Variables and assertions
+  std::map<Expr, unsigned> variables;
+  vector<string> info_tags;
+  vector<string> info_data;
+  vector<Expr> assertions;
+
+  Command* cmd;
+  while ((cmd = parser->nextCommand())) {
+
+    SetInfoCommand* setinfo = dynamic_cast<SetInfoCommand*>(cmd);
+    if (setinfo) {
+      info_tags.push_back(setinfo->getFlag());
+      info_data.push_back(setinfo->getSExpr().getValue());
+      delete cmd;
+      continue;
+    }
+
+    DeclareFunctionCommand* declare =
+        dynamic_cast<DeclareFunctionCommand*>(cmd);
+    if (declare) {
+      string name = declare->getSymbol();
+      Expr var = parser->getVariable(name);
+      unsigned n = variables.size();
+      variables[var] = n;
+      delete cmd;
+      continue;
+    }
+
+    AssertCommand* assert = dynamic_cast<AssertCommand*>(cmd);
+    if (assert) {
+      assertions.push_back(assert->getExpr());
+      delete cmd;
+      continue;
+    }
+
+    delete cmd;
+  }
+
+  // Do the translation
+  translate_to_qepcad(input, info_tags, info_data, variables, assertions);
+
+  // Get rid of the parser
+  delete parser;
+}
+
+void translate_to_qepcad_term(const std::map<Expr, unsigned>& variables,
+                              const Expr& term)
+{
+  bool first;
+
+  unsigned n = term.getNumChildren();
+
+  if (n == 0) {
+    if (term.getKind() == kind::CONST_RATIONAL) {
+      cout << term.getConst<Rational>();
+    } else {
+      assert(variables.find(term) != variables.end());
+      cout << "x" << variables.find(term)->second;
+    }
+  } else {
+
+    switch (term.getKind()) {
+      case kind::PLUS:
+        cout << "(";
+        first = true;
+        for (unsigned i = 0; i < n; ++ i) {
+          if (!first) {
+            cout << " + ";
+          }
+          first = false;
+          translate_to_qepcad_term(variables, term[i]);
+        }
+        cout << ")";
+        break;
+      case kind::MULT:
+        cout << "(";
+        first = true;
+        for (unsigned i = 0; i < n; ++ i) {
+          if (!first) {
+            cout << " ";
+          }
+          first = false;
+          translate_to_qepcad_term(variables, term[i]);
+        }
+        cout << ")";
+        break;
+      case kind::MINUS:
+        cout << "(";
+        translate_to_qepcad_term(variables, term[0]);
+        cout << " - ";
+        translate_to_qepcad_term(variables, term[1]);
+        cout << ")";
+        break;
+      case kind::UMINUS:
+        cout << "(-(";
+        translate_to_qepcad_term(variables, term[0]);
+        cout << "))";
+        break;
+      case kind::DIVISION:
+        // we only allow division by constant
+        assert(term[1].getKind() == kind::CONST_RATIONAL);
+        cout << "(";
+        cout << "(1/";
+        translate_to_qepcad_term(variables, term[1]);
+        cout << ") ";
+        translate_to_qepcad_term(variables, term[0]);
+        cout << ")";
+        break;
+      default:
+        assert(false);
+        break;
+    }
+  }
+}
+
+void translate_to_qepcad(const std::map<Expr, unsigned>& variables,
+                         const Expr& assertion)
+{
+  bool first;
+
+  unsigned n = assertion.getNumChildren();
+
+  if (n == 0) {
+    assert(false);
+  } else {
+
+    std::string op;
+    bool theory = false;
+    bool binary = false;
+
+    switch (assertion.getKind()) {
+      case kind::NOT:
+        cout << "[~";
+        translate_to_qepcad(variables, assertion[0]);
+        cout << "]";
+        break;
+      case kind::OR:
+        first = true;
+        cout << "[";
+        for (unsigned i = 0; i < n; ++ i) {
+          if (!first) {
+            cout << " \\/ ";
+          }
+          first = false;
+          translate_to_qepcad(variables, assertion[i]);
+        }
+        cout << "]";
+        break;
+      case kind::AND:
+        first = true;
+        cout << "[";
+        for (unsigned i = 0; i < n; ++ i) {
+          if (!first) {
+            cout << " /\\ ";
+          }
+          first = false;
+          translate_to_qepcad(variables, assertion[i]);
+        }
+        cout << "]";
+        break;
+      case kind::IMPLIES:
+        op = "==>";
+        binary =  true;
+        break;
+      case kind::EQUAL:
+        if( assertion[0].getType().isBoolean() ){
+          op = "<==>";
+          binary =  true;
+        }else{
+          op = "=";
+          theory =  true;
+        }
+	      break;
+      case kind::LT:
+        op = "<";
+        theory =  true;
+        break;
+      case kind::LEQ:
+        op = "<=";
+        theory =  true;
+        break;
+      case kind::GT:
+        op = ">";
+        theory =  true;
+        break;
+      case kind::GEQ:
+        op = ">=";
+        theory =  true;
+        break;
+      default:
+        assert(false);
+        break;
+    }
+
+    if (theory) {
+      cout << "[";
+      translate_to_qepcad_term(variables, assertion[0]);
+      cout << " " << op << " ";
+      translate_to_qepcad_term(variables, assertion[1]);
+      cout << "]";
+    }
+
+    if (binary) {
+      cout << "[";
+      translate_to_qepcad(variables, assertion[0]);
+      cout << " " << op << " ";
+      translate_to_qepcad(variables, assertion[1]);
+      cout << "]";
+    }
+  }
+}
+
+void translate_to_qepcad(
+        string input,
+        const vector<string>& info_tags,
+        const vector<string>& info_data,
+	const std::map<Expr, unsigned>& variables,
+	const vector<Expr>& assertions)
+{
+  bool first;
+
+  // Dump out the information
+  cout << "[ translated from " << input << " ";
+
+  bool dump_tags = false;
+  if (dump_tags) {
+    first = true;
+    for (unsigned i = 0; i < info_tags.size(); ++ i) {
+      if (!first) {
+        cout << ", ";
+      }
+      first = false;
+      cout << info_tags[i] << " = " << info_data[i];
+    }
+  }
+
+  cout << "]" << endl;
+
+  // Declare the variables
+  cout << "(";
+
+  first = true;
+  for (unsigned i = 0; i < variables.size(); ++ i) {
+    if (!first) {
+      cout << ",";
+    }
+    first = false;
+    cout << "x" << i;;
+  }
+
+  cout << ")" << endl;
+
+  // Number of free variables
+  cout << "0" << endl;
+
+  // The quantifiers first
+  for (unsigned i = 0; i < variables.size(); ++ i) {
+    cout << "(Ex" << i << ")";
+  }
+
+  // Now the formula
+  cout << "[";
+  if (assertions.size() > 1) {
+    first = true;
+    for (unsigned i = 0; i < assertions.size(); ++ i) {
+      if (!first) {
+        cout << " /\\ ";
+      }
+      first = false;
+      translate_to_qepcad(variables, assertions[i]);
+    }
+  } else {
+    translate_to_qepcad(variables, assertions[0]);
+  }
+  cout << "]." << endl;
+
+  // Before normalization
+  cout << "go" << endl;
+
+  // Before projection
+  if (variables.size() > 3) {
+    cout << "proj-op (m,m";
+    for (unsigned i = 3; i < variables.size(); ++ i) {
+      cout << ",h";
+    }
+    cout << ")" << endl;
+  }
+  cout << "go" << endl;
+
+  // Before choice
+  cout << "d-stat" << endl;
+
+  // Before solution
+  cout << "go" << endl;
+
+  // Finish up
+  cout << "finish" << endl;
+}
diff --git a/examples/nra-translate/smt2toredlog.cpp b/examples/nra-translate/smt2toredlog.cpp
new file mode 100644
index 0000000..5324141
--- /dev/null
+++ b/examples/nra-translate/smt2toredlog.cpp
@@ -0,0 +1,328 @@
+/*********************                                                        */
+/*! \file smt2toredlog.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include <cassert>
+#include <iostream>
+#include <map>
+#include <string>
+#include <typeinfo>
+#include <vector>
+
+#include "expr/expr.h"
+#include "options/options.h"
+#include "parser/parser.h"
+#include "parser/parser_builder.h"
+#include "smt/command.h"
+#include "smt/smt_engine.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::parser;
+using namespace CVC4::options;
+
+void translate_to_redlog(
+        string input,
+        string command,
+        const vector<string>& info_tags,
+        const vector<string>& info_data,
+	const map<Expr, unsigned>& variables,
+	const vector<Expr>& assertions);
+
+int main(int argc, char* argv[])
+{
+
+  // Get the filename
+  string input(argv[1]);
+  // Get the redlog command
+  string command(argv[2]);
+
+  // Create the expression manager
+  Options options;
+  options.setInputLanguage(language::input::LANG_SMTLIB_V2);
+  ExprManager exprManager(options);
+
+  // Create the parser
+  ParserBuilder parserBuilder(&exprManager, input, options);
+  Parser* parser = parserBuilder.build();
+
+  // Smt manager for simplifications
+  SmtEngine engine(&exprManager);
+
+  // Variables and assertions
+  std::map<Expr, unsigned> variables;
+  vector<string> info_tags;
+  vector<string> info_data;
+  vector<Expr> assertions;
+
+  Command* cmd;
+  while ((cmd = parser->nextCommand())) {
+
+    SetInfoCommand* setinfo = dynamic_cast<SetInfoCommand*>(cmd);
+    if (setinfo) {
+      info_tags.push_back(setinfo->getFlag());
+      info_data.push_back(setinfo->getSExpr().getValue());
+      delete cmd;
+      continue;
+    }
+
+    DeclareFunctionCommand* declare = dynamic_cast<DeclareFunctionCommand*>(cmd);
+    if (declare) {
+      string name = declare->getSymbol();
+      Expr var = parser->getVariable(name);
+      unsigned n = variables.size();
+      variables[var] = n;
+      delete cmd;
+      continue;
+    }
+    
+    AssertCommand* assert = dynamic_cast<AssertCommand*>(cmd);
+    if (assert) {
+      assertions.push_back(engine.simplify(assert->getExpr()));
+      delete cmd;
+      continue;
+    }
+
+    delete cmd;  
+  }
+
+  // Do the translation
+  translate_to_redlog(input, command, info_tags, info_data, variables, assertions);
+	
+  // Get rid of the parser
+  delete parser;
+}
+
+void translate_to_redlog_term(const map<Expr, unsigned>& variables, const Expr& term) {
+  bool first;
+
+  unsigned n = term.getNumChildren();
+  
+  if (n == 0) {
+    if (term.getKind() == kind::CONST_RATIONAL) {
+      cout << term.getConst<Rational>();
+    } else {
+      assert(variables.find(term) != variables.end());
+      cout << "x" << variables.find(term)->second;
+    }
+  } else {
+        
+    switch (term.getKind()) {
+      case kind::PLUS:
+        cout << "(";
+        first = true;
+        for (unsigned i = 0; i < n; ++ i) {
+          if (!first) {
+            cout << " + ";
+          }
+          first = false;
+          translate_to_redlog_term(variables, term[i]);
+        }
+        cout << ")";
+        break;
+      case kind::MULT:
+        cout << "(";
+        first = true;
+        for (unsigned i = 0; i < n; ++ i) {
+          if (!first) {
+            cout << " * ";
+          }
+          first = false;
+          translate_to_redlog_term(variables, term[i]);
+        }
+        cout << ")";
+        break;      
+      case kind::MINUS:
+        cout << "(";
+        translate_to_redlog_term(variables, term[0]);
+        cout << " - ";
+        translate_to_redlog_term(variables, term[1]);
+        cout << ")";
+        break;
+      case kind::DIVISION:
+        cout << "(";
+        translate_to_redlog_term(variables, term[0]);
+        cout << " / ";
+        translate_to_redlog_term(variables, term[1]);
+        cout << ")";
+        break;
+      case kind::UMINUS:
+        cout << "(-(";
+        translate_to_redlog_term(variables, term[0]);
+        cout << "))";
+        break;
+      default:
+        assert(false);
+        break;
+    }
+  }
+}
+
+void translate_to_redlog(const map<Expr, unsigned>& variables, const Expr& assertion) {
+  bool first;
+
+  unsigned n = assertion.getNumChildren();
+
+  if (n == 0) {
+    if (assertion.isConst()) {
+      if (assertion.getConst<bool>()) {
+        cout << "(1 > 0)";
+      } else {
+        cout << "(1 < 0)";
+      }
+    } else {
+      assert(false);
+    }
+  } else {
+
+    std::string op;
+    bool binary = false;
+    bool theory = false;
+
+    switch (assertion.getKind()) {
+      case kind::NOT:
+        cout << "(not ";
+        translate_to_redlog(variables, assertion[0]);
+        cout << ")";
+        break;
+      case kind::OR:
+        first = true;
+        cout << "(";
+        for (unsigned i = 0; i < n; ++ i) {
+          if (!first) {
+            cout << " or ";
+          }
+          first = false;
+          translate_to_redlog(variables, assertion[i]);
+        }
+        cout << ")";
+        break;
+      case kind::AND:
+        first = true;
+        cout << "(";
+        for (unsigned i = 0; i < n; ++ i) {
+          if (!first) {
+            cout << " and ";
+          }
+          first = false;
+          translate_to_redlog(variables, assertion[i]);
+        }
+        cout << ")";
+        break;      
+      case kind::IMPLIES:
+        cout << "(";
+        translate_to_redlog(variables, assertion[0]);
+        cout << " impl ";
+        translate_to_redlog(variables, assertion[1]);
+        cout << ")";
+        break;          
+      case kind::EQUAL:
+        if( assertion[0].getType().isBoolean() ){
+          cout << "(";
+          translate_to_redlog(variables, assertion[0]);
+          cout << " equiv ";
+          translate_to_redlog(variables, assertion[1]);
+          cout << ")";
+        }else{
+          op = "=";
+          theory = true;
+        }
+	      break;
+      case kind::LT:
+        op = "<";
+        theory = true;
+        break;
+      case kind::LEQ:
+        op = "<=";
+        theory = true;
+        break;
+      case kind::GT:
+        op = ">";
+        theory = true;
+        break;
+      case kind::GEQ:
+        op = ">=";
+        theory = true;
+        break;
+      default:
+        assert(false);
+        break;
+    }
+
+    if (binary) {
+      cout << "(";
+      translate_to_redlog(variables, assertion[0]);
+      cout << " " << op << " ";
+      translate_to_redlog(variables, assertion[1]);
+      cout << ")";
+    }      
+
+    if (theory) {
+      cout << "(";
+      translate_to_redlog_term(variables, assertion[0]);
+      cout << " " << op << " ";
+      translate_to_redlog_term(variables, assertion[1]);
+      cout << ")";
+    }      
+  }  
+}
+
+void translate_to_redlog(
+        string input,
+        string command,
+        const vector<string>& info_tags,
+        const vector<string>& info_data,
+        const std::map<Expr, unsigned>& variables,
+	const vector<Expr>& assertions)
+{
+  bool first;
+
+  // Dump out the information
+  cout << "load redlog;" << endl;
+  cout << "rlset ofsf;" << endl;
+
+  // Dump the variables
+
+  cout << "phi := ex({";
+  first = true;
+  for (unsigned i = 0; i < variables.size(); ++ i) {
+    if (!first) {
+      cout << ",";
+    }
+    cout << " x" << i;
+    if (first) {
+      first = false;
+    }
+  }
+  cout << "},";
+  
+  // The assertions
+  first = true;
+  for (unsigned i = 0; i < assertions.size(); ++ i) {
+    if (first == false) {
+      cout << " and ";
+    }
+    first = false;
+    translate_to_redlog(variables, assertions[i]);
+
+  }
+  cout << ");" << endl;
+
+  cout << "result := " << command << " phi;" << endl;
+  cout << "result;" << endl;
+  cout << "quit;" << endl;
+
+}
diff --git a/examples/sets-translate/Makefile.am b/examples/sets-translate/Makefile.am
new file mode 100644
index 0000000..1c5dc39
--- /dev/null
+++ b/examples/sets-translate/Makefile.am
@@ -0,0 +1,29 @@
+AM_CPPFLAGS = \
+	-I at srcdir@/../../src/include -I at srcdir@/../../src -I at builddir@/../../src $(ANTLR_INCLUDES)
+AM_CXXFLAGS = -Wall
+AM_CFLAGS = -Wall
+
+noinst_PROGRAMS = \
+	sets2arrays \
+	sets2axioms
+
+noinst_DATA =
+
+sets2arrays_SOURCES = \
+	sets_translate.cpp
+sets2arrays_LDADD = \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+
+# give nodist_: only distribute/install once
+nodist_sets2axioms_SOURCES = \
+	sets_translate.cpp
+sets2axioms_LDADD = \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+sets2axioms_CXXFLAGS = \
+	-DENABLE_AXIOMS
+
+# for installation
+examplesdir = $(docdir)/$(subdir)
+examples_DATA = $(DIST_SOURCES) $(EXTRA_DIST)
diff --git a/examples/sets-translate/Makefile.in b/examples/sets-translate/Makefile.in
new file mode 100644
index 0000000..318cc45
--- /dev/null
+++ b/examples/sets-translate/Makefile.in
@@ -0,0 +1,845 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+noinst_PROGRAMS = sets2arrays$(EXEEXT) sets2axioms$(EXEEXT)
+subdir = examples/sets-translate
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+PROGRAMS = $(noinst_PROGRAMS)
+am_sets2arrays_OBJECTS = sets_translate.$(OBJEXT)
+sets2arrays_OBJECTS = $(am_sets2arrays_OBJECTS)
+sets2arrays_DEPENDENCIES =  \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+nodist_sets2axioms_OBJECTS = sets2axioms-sets_translate.$(OBJEXT)
+sets2axioms_OBJECTS = $(nodist_sets2axioms_OBJECTS)
+sets2axioms_DEPENDENCIES =  \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+sets2axioms_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(sets2axioms_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+SOURCES = $(sets2arrays_SOURCES) $(nodist_sets2axioms_SOURCES)
+DIST_SOURCES = $(sets2arrays_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(examplesdir)"
+DATA = $(examples_DATA) $(noinst_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+AM_CPPFLAGS = \
+	-I at srcdir@/../../src/include -I at srcdir@/../../src -I at builddir@/../../src $(ANTLR_INCLUDES)
+
+AM_CXXFLAGS = -Wall
+AM_CFLAGS = -Wall
+noinst_DATA = 
+sets2arrays_SOURCES = \
+	sets_translate.cpp
+
+sets2arrays_LDADD = \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+
+
+# give nodist_: only distribute/install once
+nodist_sets2axioms_SOURCES = \
+	sets_translate.cpp
+
+sets2axioms_LDADD = \
+	@builddir@/../../src/parser/libcvc4parser.la \
+	@builddir@/../../src/libcvc4.la
+
+sets2axioms_CXXFLAGS = \
+	-DENABLE_AXIOMS
+
+
+# for installation
+examplesdir = $(docdir)/$(subdir)
+examples_DATA = $(DIST_SOURCES) $(EXTRA_DIST)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/sets-translate/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu examples/sets-translate/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstPROGRAMS:
+	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+	echo " rm -f" $$list; \
+	rm -f $$list || exit $$?; \
+	test -n "$(EXEEXT)" || exit 0; \
+	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+	echo " rm -f" $$list; \
+	rm -f $$list
+
+sets2arrays$(EXEEXT): $(sets2arrays_OBJECTS) $(sets2arrays_DEPENDENCIES) $(EXTRA_sets2arrays_DEPENDENCIES) 
+	@rm -f sets2arrays$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(sets2arrays_OBJECTS) $(sets2arrays_LDADD) $(LIBS)
+
+sets2axioms$(EXEEXT): $(sets2axioms_OBJECTS) $(sets2axioms_DEPENDENCIES) $(EXTRA_sets2axioms_DEPENDENCIES) 
+	@rm -f sets2axioms$(EXEEXT)
+	$(AM_V_CXXLD)$(sets2axioms_LINK) $(sets2axioms_OBJECTS) $(sets2axioms_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sets2axioms-sets_translate.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sets_translate.Po at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+sets2axioms-sets_translate.o: sets_translate.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sets2axioms_CXXFLAGS) $(CXXFLAGS) -MT sets2axioms-sets_translate.o -MD -MP -MF $(DEPDIR)/sets2axioms-sets_translate.Tpo -c -o sets2axioms-sets_translate.o `test -f 'sets_translate.cpp' || echo '$(srcdir)/'`sets_translate.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/sets2axioms-sets_translate.Tpo $(DEPDIR)/sets2axioms-sets_translate.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='sets_translate.cpp' object='sets2axioms-sets_translate.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sets2axioms_CXXFLAGS) $(CXXFLAGS) -c -o sets2axioms-sets_translate.o `test -f 'sets_translate.cpp' || echo '$(srcdir)/'`sets_translate.cpp
+
+sets2axioms-sets_translate.obj: sets_translate.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sets2axioms_CXXFLAGS) $(CXXFLAGS) -MT sets2axioms-sets_translate.obj -MD -MP -MF $(DEPDIR)/sets2axioms-sets_translate.Tpo -c -o sets2axioms-sets_translate.obj `if test -f 'sets_translate.cpp'; then $(CYGPATH_W) 'sets_translate.cpp'; else $(CYGPATH_W) '$(srcdir)/sets_translate.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/sets2axioms-sets_translate.Tpo $(DEPDIR)/sets2axioms-sets_translate.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='sets_translate.cpp' object='sets2axioms-sets_translate.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sets2axioms_CXXFLAGS) $(CXXFLAGS) -c -o sets2axioms-sets_translate.obj `if test -f 'sets_translate.cpp'; then $(CYGPATH_W) 'sets_translate.cpp'; else $(CYGPATH_W) '$(srcdir)/sets_translate.cpp'; fi`
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-examplesDATA: $(examples_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(examples_DATA)'; test -n "$(examplesdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(examplesdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(examplesdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(examplesdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(examplesdir)" || exit $$?; \
+	done
+
+uninstall-examplesDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(examples_DATA)'; test -n "$(examplesdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(examplesdir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS) $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(examplesdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-examplesDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-examplesDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am \
+	install-examplesDATA install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+	uninstall-examplesDATA
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/examples/sets-translate/sets_translate.cpp b/examples/sets-translate/sets_translate.cpp
new file mode 100644
index 0000000..1556e98
--- /dev/null
+++ b/examples/sets-translate/sets_translate.cpp
@@ -0,0 +1,376 @@
+/*********************                                                        */
+/*! \file sets_translate.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include <boost/algorithm/string.hpp> // include Boost, a C++ library
+#include <cassert>
+#include <iostream>
+#include <string>
+#include <typeinfo>
+#include <vector>
+
+#include "expr/expr.h"
+#include "options/language.h"
+#include "options/options.h"
+#include "options/set_language.h"
+#include "parser/parser.h"
+#include "parser/parser_builder.h"
+#include "smt/command.h"
+#include "theory/logic_info.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::parser;
+using namespace CVC4::options;
+
+bool nonsense(char c) { return !isalnum(c); }
+
+#ifdef ENABLE_AXIOMS
+const bool enableAxioms = true;
+#else
+const bool enableAxioms = false;
+#endif
+
+string setaxioms[] = {
+  "(declare-fun memberHOLDA (HOLDB (Set HOLDB)) Bool)",
+  "",
+  "(declare-fun unionHOLDA ((Set HOLDB) (Set HOLDB)) (Set HOLDB))",
+  "(assert (forall ((?X (Set HOLDB)) (?Y (Set HOLDB)) (?x HOLDB))",
+  "                (= (memberHOLDA ?x (unionHOLDA ?X ?Y))",
+  "                     (or (memberHOLDA ?x ?X) (memberHOLDA ?x ?Y))",
+  "                ) ) )",
+  "",
+  "",
+  "(declare-fun intersectionHOLDA ((Set HOLDB) (Set HOLDB)) (Set HOLDB))",
+  "(assert (forall ((?X (Set HOLDB)) (?Y (Set HOLDB)) (?x HOLDB))",
+  "                (= (memberHOLDA ?x (intersectionHOLDA ?X ?Y))",
+  "                     (and (memberHOLDA ?x ?X) (memberHOLDA ?x ?Y))",
+  "                ) ) )",
+  "",
+  "(declare-fun setminusHOLDA ((Set HOLDB) (Set HOLDB)) (Set HOLDB))",
+  "(assert (forall ((?X (Set HOLDB)) (?Y (Set HOLDB)) (?x HOLDB))",
+  "                (= (memberHOLDA ?x (setminusHOLDA ?X ?Y))",
+  "                     (and (memberHOLDA ?x ?X) (not (memberHOLDA ?x ?Y)))",
+  "                ) ) )",
+  "",
+  "(declare-fun singletonHOLDA (HOLDB) (Set HOLDB))",
+  "(assert (forall ((?x HOLDB) (?y HOLDB))",
+  "                (= (memberHOLDA ?x (singletonHOLDA ?y))",
+  "                     (= ?x ?y)",
+  "                ) ) )",
+  "",
+  "(declare-fun emptysetHOLDA () (Set HOLDB))",
+  "(assert (forall ((?x HOLDB)) (not (memberHOLDA ?x emptysetHOLDA)) ) )",
+  "",
+  "(define-fun subsetHOLDA ((X (Set HOLDB)) (Y (Set HOLDB))) Bool (= (unionHOLDA X Y) Y))",
+  ""
+};
+
+class Mapper {
+  set< Type > setTypes;
+  map< Type, Type > mapTypes;
+  map< pair<Type, Kind>, Expr > setoperators;
+  hash_map< Expr, Expr, ExprHashFunction > substitutions;
+  ostringstream sout;
+  ExprManager* em;
+  int depth;
+
+  Expr add(SetType t, Expr e) {
+
+    if(setTypes.find(t) == setTypes.end() ) {
+      // mark as processed
+      setTypes.insert(t);
+
+      Type elementType = t.getElementType();
+      ostringstream oss_type;
+      oss_type << language::SetLanguage(language::output::LANG_SMTLIB_V2)
+               << elementType;
+      string elementTypeAsString = oss_type.str();
+      elementTypeAsString.erase(
+        remove_if(elementTypeAsString.begin(), elementTypeAsString.end(), nonsense),
+        elementTypeAsString.end());
+
+      // define-sort
+      ostringstream oss_name;
+      oss_name << language::SetLanguage(language::output::LANG_SMTLIB_V2)
+               << "(Set " << elementType << ")";
+      string name = oss_name.str();
+      Type newt = em->mkArrayType(t.getElementType(), em->booleanType());
+      mapTypes[t] = newt;
+
+      // diffent types
+      vector<Type> t_t;
+      t_t.push_back(t);
+      t_t.push_back(t);
+      vector<Type> elet_t;
+      elet_t.push_back(elementType);
+      elet_t.push_back(t);
+
+      if(!enableAxioms)
+        sout << "(define-fun emptyset" << elementTypeAsString << "    "
+             << " ()"
+             << " " << name
+             << " ( (as const " << name << ") false ) )" << endl;
+      setoperators[ make_pair(t, kind::EMPTYSET) ] =
+        em->mkVar( std::string("emptyset") + elementTypeAsString,
+                   t);
+
+      if(!enableAxioms)
+        sout << "(define-fun singleton" << elementTypeAsString << "     "
+             << " ( (x " << elementType << ") )"
+             << " " << name << ""
+             << " (store emptyset" << elementTypeAsString << " x true) )" << endl;
+      setoperators[ make_pair(t, kind::SINGLETON) ] =
+        em->mkVar( std::string("singleton") + elementTypeAsString,
+                   em->mkFunctionType( elementType, t ) );
+
+      if(!enableAxioms)
+        sout << "(define-fun union" << elementTypeAsString << "       "
+             << " ( (s1 " << name << ") (s2 " << name << ") )"
+             << " " << name << ""
+             << " ((_ map or) s1 s2))" << endl;
+      setoperators[ make_pair(t, kind::UNION) ] =
+        em->mkVar( std::string("union") + elementTypeAsString,
+                   em->mkFunctionType( t_t, t ) );
+
+      if(!enableAxioms)
+        sout << "(define-fun intersection" << elementTypeAsString << ""
+             << " ( (s1 " << name << ") (s2 " << name << ") )"
+             << " " << name << ""
+             << " ((_ map and) s1 s2))" << endl;
+      setoperators[ make_pair(t, kind::INTERSECTION) ] =
+        em->mkVar( std::string("intersection") + elementTypeAsString,
+                   em->mkFunctionType( t_t, t ) );
+
+      if(!enableAxioms)
+        sout << "(define-fun setminus" << elementTypeAsString << "    "
+             << " ( (s1 " << name << ") (s2 " << name << ") )"
+             << " " << name << ""
+             << " (intersection" << elementTypeAsString << " s1 ((_ map not) s2)))" << endl;
+      setoperators[ make_pair(t, kind::SETMINUS) ] =
+        em->mkVar( std::string("setminus") + elementTypeAsString,
+                   em->mkFunctionType( t_t, t ) );
+
+      if(!enableAxioms)
+        sout << "(define-fun member" << elementTypeAsString << "          "
+             << " ( (x " << elementType << ")" << " (s " << name << "))"
+             << " Bool"
+             << " (select s x) )" << endl;
+      setoperators[ make_pair(t, kind::MEMBER) ] =
+        em->mkVar( std::string("member") + elementTypeAsString,
+                   em->mkPredicateType( elet_t ) );
+
+      if(!enableAxioms)
+        sout << "(define-fun subset" << elementTypeAsString << "    "
+             << " ( (s1 " << name << ") (s2 " << name << ") )"
+             << " Bool"
+             <<" (= emptyset" << elementTypeAsString << " (setminus" << elementTypeAsString << " s1 s2)) )" << endl;
+      setoperators[ make_pair(t, kind::SUBSET) ] =
+        em->mkVar( std::string("subset") + elementTypeAsString,
+                   em->mkPredicateType( t_t ) );
+
+      if(enableAxioms) {
+        int N = sizeof(setaxioms) / sizeof(setaxioms[0]);
+        for(int i = 0; i < N; ++i) {
+          string s = setaxioms[i];
+          ostringstream oss;
+          oss << language::SetLanguage(language::output::LANG_SMTLIB_V2) << elementType;
+          boost::replace_all(s, "HOLDA", elementTypeAsString);
+          boost::replace_all(s, "HOLDB", oss.str());
+          if( s == "" ) continue;
+          sout << s << endl;
+        }
+      }
+
+    }
+    Expr ret;
+    if(e.getKind() == kind::EMPTYSET) {
+      ret = setoperators[ make_pair(t, e.getKind()) ];
+    } else {
+      vector<Expr> children = e.getChildren();
+      children.insert(children.begin(), setoperators[ make_pair(t, e.getKind()) ]);
+      ret = em->mkExpr(kind::APPLY, children);
+    }
+    // cout << "returning " << ret  << endl;
+    return ret;
+  }
+
+public:
+  Mapper(ExprManager* e) : em(e),depth(0) {
+    sout << language::SetLanguage(language::output::LANG_SMTLIB_V2);
+  }
+
+  void defineSetSort() {
+    if(setTypes.empty()) {
+      cout << "(define-sort Set (X) (Array X Bool) )" << endl;
+    }
+  }
+
+
+  Expr collectSortsExpr(Expr e)
+  {
+    if(substitutions.find(e) != substitutions.end()) {
+      return substitutions[e];
+    }
+    ++depth;
+    Expr old_e = e;
+    for(unsigned i = 0; i < e.getNumChildren(); ++i) {
+      collectSortsExpr(e[i]);
+    }
+    e = e.substitute(substitutions);
+    // cout << "[debug] " << e << " " << e.getKind() << " " << theory::kindToTheoryId(e.getKind()) << endl;
+    if(theory::kindToTheoryId(e.getKind()) == theory::THEORY_SETS) {
+      SetType t = SetType(e.getType().isBoolean() ? e[1].getType() : e.getType());
+      substitutions[e] = add(t, e);
+      e = e.substitute(substitutions);
+    }
+    substitutions[old_e] = e;
+    // cout << ";"; for(int i = 0; i < depth; ++i) cout << " "; cout << old_e << " => " << e << endl;
+    --depth;
+    return e;
+  }
+
+  void dump() {
+    cout << sout.str();
+  }
+};
+
+
+int main(int argc, char* argv[])
+{
+
+  try {
+
+    // Get the filename
+    string input;
+    if(argc > 1){
+      input = string(argv[1]);
+    } else {
+      input = "<stdin>";
+    }
+
+    // Create the expression manager
+    Options options;
+    options.setInputLanguage(language::input::LANG_SMTLIB_V2);
+    cout << language::SetLanguage(language::output::LANG_SMTLIB_V2);
+    // cout << Expr::dag(0);
+    ExprManager exprManager(options);
+
+    Mapper m(&exprManager);
+
+    // Create the parser
+    ParserBuilder parserBuilder(&exprManager, input, options);
+    if(input == "<stdin>") parserBuilder.withStreamInput(cin);
+    Parser* parser = parserBuilder.build();
+
+    // Variables and assertions
+    vector<string> variables;
+    vector<string> info_tags;
+    vector<string> info_data;
+    vector<Expr> assertions;
+
+    Command* cmd = NULL;
+    CommandSequence commandsSequence;
+    bool logicisset = false;
+
+    while ((cmd = parser->nextCommand())) {
+
+      // till logic is set, don't do any modifications
+      if(!parser->logicIsSet()) {
+        cout << (*cmd) << endl;
+        delete cmd;
+        continue;
+      }
+
+      // transform set-logic command, if there is one
+      SetBenchmarkLogicCommand* setlogic = dynamic_cast<SetBenchmarkLogicCommand*>(cmd);
+      if(setlogic) {
+	LogicInfo logicinfo(setlogic->getLogic());
+	if(!logicinfo.isTheoryEnabled(theory::THEORY_SETS)) {
+	  cerr << "Sets theory not enabled. Stopping translation." << endl;
+	  return 0;
+	}
+        logicinfo = logicinfo.getUnlockedCopy();
+        if(enableAxioms) {
+          logicinfo.enableQuantifiers();
+          logicinfo.lock();
+          if(!logicinfo.hasEverything()) {
+            (logicinfo = logicinfo.getUnlockedCopy()).disableTheory(theory::THEORY_SETS);
+            logicinfo.lock();
+            cout << SetBenchmarkLogicCommand(logicinfo.getLogicString()) << endl;
+          }
+        } else {
+          logicinfo.enableTheory(theory::THEORY_ARRAY);
+          // we print logic string only for Quantifiers, for Z3 stuff
+          // we don't set the logic
+        }
+
+        delete cmd;
+        continue;
+      }
+
+      // if we reach here, logic is set by now, so can define our sort
+      if( !logicisset ) {
+        logicisset = true;
+        m.defineSetSort();
+      }
+
+      // declare/define-sort commands are printed immediately
+      DeclareTypeCommand* declaresort = dynamic_cast<DeclareTypeCommand*>(cmd);
+      DefineTypeCommand* definesort = dynamic_cast<DefineTypeCommand*>(cmd);
+      if(declaresort || definesort) {
+        cout << *cmd << endl;
+        delete cmd;
+        continue;
+      }
+
+      // other commands are queued up, while replacing with new function symbols
+      AssertCommand* assert = dynamic_cast<AssertCommand*>(cmd);
+      DeclareFunctionCommand* declarefun = dynamic_cast<DeclareFunctionCommand*>(cmd);
+      DefineFunctionCommand* definefun = dynamic_cast<DefineFunctionCommand*>(cmd);
+
+      Command* new_cmd = NULL;
+      if(assert) {
+        Expr newexpr = m.collectSortsExpr(assert->getExpr());
+        new_cmd = new AssertCommand(newexpr);
+      } else if(declarefun) {
+        Expr newfunc = m.collectSortsExpr(declarefun->getFunction());
+        new_cmd = new DeclareFunctionCommand(declarefun->getSymbol(), newfunc, declarefun->getType());
+      } else if(definefun) {
+        Expr newfunc = m.collectSortsExpr(definefun->getFunction());
+        Expr newformula = m.collectSortsExpr(definefun->getFormula());
+        new_cmd = new DefineFunctionCommand(definefun->getSymbol(), newfunc, definefun->getFormals(), newformula);
+      }
+
+      if(new_cmd == NULL) {
+        commandsSequence.addCommand(cmd);
+      } else {
+        commandsSequence.addCommand(new_cmd);
+        delete cmd;
+      }
+
+    }
+
+    m.dump();
+    cout << commandsSequence;
+    
+  
+    // Get rid of the parser
+    //delete parser;
+  } catch (Exception& e) {
+    cerr << e << endl;
+  }
+}
diff --git a/examples/simple_vc_compat_c.c b/examples/simple_vc_compat_c.c
new file mode 100644
index 0000000..3d04132
--- /dev/null
+++ b/examples/simple_vc_compat_c.c
@@ -0,0 +1,59 @@
+/*********************                                                        */
+/*! \file simple_vc_compat_c.c
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A simple demonstration of the C compatibility interface
+ ** (quite similar to the old CVC3 C interface)
+ **
+ ** A simple demonstration of the C compatibility interface
+ ** (quite similar to the old CVC3 C interface).
+ **/
+
+#include <stdio.h>
+#include <stdlib.h>
+
+/* #include <cvc4/bindings/compat/c/c_interface.h> /* use this after CVC4 is properly installed */
+#include "bindings/compat/c/c_interface.h"
+
+int main() {
+  VC vc = vc_createValidityChecker(NULL);
+
+  /* Prove that for integers x and y:
+   *   x > 0 AND y > 0  =>  2x + y >= 3 */
+
+  Type integer = vc_intType(vc);
+
+  Expr x = vc_varExpr(vc, "x", integer);
+  Expr y = vc_varExpr(vc, "y", integer);
+  Expr zero = vc_ratExpr(vc, 0, 1);
+
+  Expr x_positive = vc_gtExpr(vc, x, zero);
+  Expr y_positive = vc_gtExpr(vc, y, zero);
+
+  Expr two = vc_ratExpr(vc, 2, 1);
+  Expr twox = vc_multExpr(vc, two, x);
+  Expr twox_plus_y = vc_plusExpr(vc, twox, y);
+
+  Expr three = vc_ratExpr(vc, 3, 1);
+  Expr twox_plus_y_geq_3 = vc_geExpr(vc, twox_plus_y, three);
+
+  Expr formula = vc_impliesExpr(vc, vc_andExpr(vc, x_positive, y_positive),
+                                twox_plus_y_geq_3);
+
+  char* formulaString = vc_printExprString(vc, formula);
+
+  printf("Checking validity of formula %s with CVC4.\n", formulaString);
+  printf("CVC4 should return 1 (meaning VALID).\n");
+  printf("Result from CVC4 is: %d\n", vc_query(vc, formula));
+
+  free(formulaString);
+
+  return 0;
+}
diff --git a/examples/simple_vc_compat_cxx.cpp b/examples/simple_vc_compat_cxx.cpp
new file mode 100644
index 0000000..304f02d
--- /dev/null
+++ b/examples/simple_vc_compat_cxx.cpp
@@ -0,0 +1,62 @@
+/*********************                                                        */
+/*! \file simple_vc_compat_cxx.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A simple demonstration of the C++ compatibility interface
+ ** (quite similar to the old CVC3 C++ interface)
+ **
+ ** A simple demonstration of the C++ compatibility interface (quite
+ ** similar to the old CVC3 C++ interface).  Note that the library is
+ ** named "libcvc4compat," to mark it as being part of CVC4, but the
+ ** header file is "cvc3_compat.h" to indicate the similarity to the
+ ** CVC3 interface, and the namespace is "CVC3".  CVC3::Expr and
+ ** CVC4::Expr are incompatible; to avoid confusion, it is best to not
+ ** include both the CVC3 and CVC4 interface headers.
+ **/
+
+#include <iostream>
+
+// #include <cvc4/compat/cvc3_compat.h> // use this after CVC4 is properly installed
+#include "compat/cvc3_compat.h"
+
+using namespace std;
+using namespace CVC3;
+
+int main() {
+  ValidityChecker* vc = ValidityChecker::create();
+
+  // Prove that for integers x and y:
+  //   x > 0 AND y > 0  =>  2x + y >= 3
+
+  Type integer = vc->intType();
+
+  Expr x = vc->varExpr("x", integer);
+  Expr y = vc->varExpr("y", integer);
+  Expr zero = vc->ratExpr(0);
+
+  Expr x_positive = vc->gtExpr(x, zero);
+  Expr y_positive = vc->gtExpr(y, zero);
+
+  Expr two = vc->ratExpr(2);
+  Expr twox = vc->multExpr(two, x);
+  Expr twox_plus_y = vc->plusExpr(twox, y);
+
+  Expr three = vc->ratExpr(3);
+  Expr twox_plus_y_geq_3 = vc->geExpr(twox_plus_y, three);
+
+  Expr formula = vc->impliesExpr(vc->andExpr(x_positive, y_positive),
+                                twox_plus_y_geq_3);
+
+  cout << "Checking validity of formula " << formula << " with CVC4." << endl;
+  cout << "CVC4 should report VALID." << endl;
+  cout << "Result from CVC4 is: " << vc->query(formula) << endl;
+
+  return 0;
+}
diff --git a/examples/simple_vc_cxx.cpp b/examples/simple_vc_cxx.cpp
new file mode 100644
index 0000000..fbb6a7a
--- /dev/null
+++ b/examples/simple_vc_cxx.cpp
@@ -0,0 +1,59 @@
+/*********************                                                        */
+/*! \file simple_vc_cxx.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A simple demonstration of the C++ interface
+ **
+ ** A simple demonstration of the C++ interface.  Compare to the Java
+ ** interface in SimpleVC.java; they are virtually line-by-line
+ ** identical.
+ **/
+
+#include <iostream>
+
+//#include <cvc4/cvc4.h> // use this after CVC4 is properly installed
+#include "smt/smt_engine.h"
+
+using namespace std;
+using namespace CVC4;
+
+int main() {
+  ExprManager em;
+  SmtEngine smt(&em);
+
+  // Prove that for integers x and y:
+  //   x > 0 AND y > 0  =>  2x + y >= 3
+
+  Type integer = em.integerType();
+
+  Expr x = em.mkVar("x", integer);
+  Expr y = em.mkVar("y", integer);
+  Expr zero = em.mkConst(Rational(0));
+
+  Expr x_positive = em.mkExpr(kind::GT, x, zero);
+  Expr y_positive = em.mkExpr(kind::GT, y, zero);
+
+  Expr two = em.mkConst(Rational(2));
+  Expr twox = em.mkExpr(kind::MULT, two, x);
+  Expr twox_plus_y = em.mkExpr(kind::PLUS, twox, y);
+
+  Expr three = em.mkConst(Rational(3));
+  Expr twox_plus_y_geq_3 = em.mkExpr(kind::GEQ, twox_plus_y, three);
+
+  Expr formula =
+    em.mkExpr(kind::AND, x_positive, y_positive).
+    impExpr(twox_plus_y_geq_3);
+
+  cout << "Checking validity of formula " << formula << " with CVC4." << endl;
+  cout << "CVC4 should report VALID." << endl;
+  cout << "Result from CVC4 is: " << smt.query(formula) << endl;
+
+  return 0;
+}
diff --git a/examples/translator.cpp b/examples/translator.cpp
new file mode 100644
index 0000000..6a4a2c2
--- /dev/null
+++ b/examples/translator.cpp
@@ -0,0 +1,291 @@
+/*********************                                                        */
+/*! \file translator.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief CVC4 translator
+ **
+ ** The CVC4 translator executable.  This program translates from one of
+ ** CVC4's input languages to one of its output languages.
+ **/
+
+#include <cerrno>
+#include <cstdlib>
+#include <cstring>
+#include <fstream>
+#include <getopt.h>
+#include <iostream>
+
+#include "expr/expr.h"
+#include "expr/expr_iomanip.h"
+#include "options/language.h"
+#include "options/options.h"
+#include "options/set_language.h"
+#include "parser/parser.h"
+#include "parser/parser_builder.h"
+#include "smt/command.h"
+#include "smt/smt_engine.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::language;
+using namespace CVC4::parser;
+
+enum {
+  INPUT_LANG = 'L',
+  OUTPUT_LANG = 'O',
+  OUTPUT_FILE = 'o',
+  HELP = 'h',
+  DEFAULT_DAG_THRESH,
+  EXPAND_DEFINITIONS,
+  COMBINE_ASSERTIONS,
+};/* enum */
+
+const struct option longopts[] = {
+  { "output-lang", required_argument, NULL, OUTPUT_LANG },
+  { "output-language", required_argument, NULL, OUTPUT_LANG },
+  { "expand-definitions", no_argument, NULL, EXPAND_DEFINITIONS },
+  { "combine-assertions", no_argument, NULL, COMBINE_ASSERTIONS },
+  { "default-dag-thresh", required_argument, NULL, DEFAULT_DAG_THRESH },
+  { "lang", required_argument, NULL, INPUT_LANG },
+  { "language", required_argument, NULL, INPUT_LANG },
+  { "out", required_argument, NULL, OUTPUT_FILE },
+  { "help", no_argument, NULL, HELP },
+  { NULL, no_argument, NULL, 0 },
+};/* longopts */
+
+static void showHelp() {
+  cerr << "cvc4-translator translation tool" << endl
+       << "  --output-language | -O  set output language (default smt2)" << endl
+       << "  --input-language | -L   set input language (default auto)" << endl
+       << "  --out | -o              set output file (- for stdout)" << endl
+       << "  --default-dag-thresh=N  set DAG threshold" << endl
+       << "  --expand-definitions    expand define-funs" << endl
+       << "  --combine-assertions    combine all assertions into one" << endl
+       << "  --help | -h             this help" << endl
+       << "Options and input filenames can be intermixed, and order is important." << endl
+       << "For instance, \"-O smt2 x -O cvc4 y\" reads file x in smt2 format and"
+       << "file y in cvc4 format and writes all output to stdout." << endl
+       << "Some canonicalization may occur." << endl
+       << "Comments and formatting are not preserved." << endl;
+}
+
+static void readFile(const char* filename, InputLanguage fromLang, OutputLanguage toLang, bool expand_definitions, bool combine_assertions, ostream* out) {
+  if(fromLang == input::LANG_AUTO) {
+    unsigned len = strlen(filename);
+    if(len >= 5 && !strcmp(".smt2", filename + len - 5)) {
+      fromLang = language::input::LANG_SMTLIB_V2;
+    } else if(len >= 4 && !strcmp(".smt", filename + len - 4)) {
+      fromLang = language::input::LANG_SMTLIB_V1;
+    } else if(len >= 5 && !strcmp(".smt1", filename + len - 5)) {
+      fromLang = language::input::LANG_SMTLIB_V1;
+    } else if((len >= 2 && !strcmp(".p", filename + len - 2)) ||
+              (len >= 5 && !strcmp(".tptp", filename + len - 5))) {
+      fromLang = language::input::LANG_TPTP;
+    } else if(( len >= 4 && !strcmp(".cvc", filename + len - 4) ) ||
+              ( len >= 5 && !strcmp(".cvc4", filename + len - 5) )) {
+      fromLang = language::input::LANG_CVC4;
+    } else {
+      throw Exception("cannot determine input language to use for `" + string(filename) + "'");
+    }
+  }
+
+  if(toLang == output::LANG_AUTO) {
+    toLang = toOutputLanguage(fromLang);
+  }
+
+  *out << language::SetLanguage(toLang);
+
+  Options opts;
+  opts.setInputLanguage(fromLang);
+  ExprManager exprMgr(opts);
+  ParserBuilder parserBuilder(&exprMgr, filename, opts);
+  if(!strcmp(filename, "-")) {
+    parserBuilder.withFilename("<stdin>");
+    parserBuilder.withLineBufferedStreamInput(cin);
+  }
+  Parser *parser = parserBuilder.build();
+  // we only use the SmtEngine to do definition expansion for us
+  SmtEngine *smt = expand_definitions ? new SmtEngine(&exprMgr) : NULL;
+  // store up the assertions into one big conjunction
+  std::vector<Expr> assertions;
+  while(Command* cmd = parser->nextCommand()) {
+    if(expand_definitions && dynamic_cast<DefineFunctionCommand*>(cmd) != NULL) {
+      // tell the SmtEngine about the definition, but don't print it
+      cmd->invoke(smt);
+    } else {
+      // have to switch on the command and expand definitions inside it
+      if(expand_definitions && dynamic_cast<AssertCommand*>(cmd) != NULL) {
+        Expr e = static_cast<AssertCommand*>(cmd)->getExpr();
+        delete cmd;
+        cmd = new AssertCommand(smt->expandDefinitions(e));
+      } else if(expand_definitions && dynamic_cast<QueryCommand*>(cmd) != NULL) {
+        Expr e = static_cast<QueryCommand*>(cmd)->getExpr();
+        delete cmd;
+        cmd = new QueryCommand(smt->expandDefinitions(e));
+      } else if(expand_definitions && dynamic_cast<CheckSatCommand*>(cmd) != NULL) {
+        Expr e = static_cast<CheckSatCommand*>(cmd)->getExpr();
+        delete cmd;
+        cmd = new CheckSatCommand(smt->expandDefinitions(e));
+      } else if(expand_definitions && dynamic_cast<SimplifyCommand*>(cmd) != NULL) {
+        Expr e = static_cast<SimplifyCommand*>(cmd)->getTerm();
+        delete cmd;
+        cmd = new SimplifyCommand(smt->expandDefinitions(e));
+      } else if(expand_definitions && dynamic_cast<ExpandDefinitionsCommand*>(cmd) != NULL) {
+        Expr e = static_cast<ExpandDefinitionsCommand*>(cmd)->getTerm();
+        delete cmd;
+        cmd = new ExpandDefinitionsCommand(smt->expandDefinitions(e));
+      } else if(expand_definitions && dynamic_cast<GetValueCommand*>(cmd) != NULL) {
+        vector<Expr> terms = static_cast<GetValueCommand*>(cmd)->getTerms();
+        delete cmd;
+        for(size_t i = 0; i < terms.size(); ++i) {
+          terms[i] = smt->expandDefinitions(terms[i]);
+        }
+        cmd = new GetValueCommand(terms);
+      }
+
+      if(combine_assertions && dynamic_cast<AssertCommand*>(cmd) != NULL) {
+        // store up the assertion, don't print it yet
+        assertions.push_back(static_cast<AssertCommand*>(cmd)->getExpr());
+      } else {
+        if(combine_assertions &&
+           ( dynamic_cast<CheckSatCommand*>(cmd) != NULL ||
+             dynamic_cast<QueryCommand*>(cmd) != NULL ||
+             dynamic_cast<PushCommand*>(cmd) != NULL ||
+             dynamic_cast<PopCommand*>(cmd) != NULL ||
+             dynamic_cast<SimplifyCommand*>(cmd) != NULL ||
+             dynamic_cast<QuitCommand*>(cmd) != NULL )) {
+          // combine all the stored assertions and print them at this point
+          if(!assertions.empty()) {
+            if(assertions.size() > 1) {
+              *out << AssertCommand(exprMgr.mkExpr(kind::AND, assertions)) << endl;
+            } else {
+              *out << AssertCommand(assertions[0]) << endl;
+            }
+            assertions.clear();
+          }
+        }
+
+        // now print the cmd we just parsed
+        *out << cmd << endl;
+      }
+    }
+    if(dynamic_cast<QuitCommand*>(cmd) != NULL) {
+      delete cmd;
+      break;
+    }
+    delete cmd;
+  }
+  if(!assertions.empty()) {
+    if(assertions.size() > 1) {
+      *out << AssertCommand(exprMgr.mkExpr(kind::AND, assertions)) << endl;
+    } else {
+      *out << AssertCommand(assertions[0]) << endl;
+    }
+    assertions.clear();
+  }
+  *out << flush;
+  delete smt;
+  delete parser;
+}
+
+/**
+ * Translate from an input language to an output language.
+ */
+int main(int argc, char* argv[]) {
+  ostream* out = &cout;
+  InputLanguage fromLang = input::LANG_AUTO;
+  OutputLanguage toLang = output::LANG_SMTLIB_V2;
+  size_t files = 0;
+  int dag_thresh = 1;
+  bool expand_definitions = false;
+  bool combine_assertions = false;
+
+  try {
+    int c;
+    while((c = getopt_long(argc, argv, "-L:O:o:h", longopts, NULL)) != -1) {
+      switch(c) {
+      case 1:
+        ++files;
+        *out << expr::ExprDag(dag_thresh);
+        readFile(optarg, (!strcmp(optarg, "-") && fromLang == input::LANG_AUTO) ? input::LANG_CVC4 : fromLang, toLang, expand_definitions, combine_assertions, out);
+        break;
+      case INPUT_LANG:
+        if(!strcmp(optarg, "help")) {
+          Options::printLanguageHelp(cerr);
+          exit(1);
+        }
+        fromLang = toInputLanguage(optarg);
+        break;
+      case OUTPUT_LANG:
+        if(!strcmp(optarg, "help")) {
+          Options::printLanguageHelp(cerr);
+          exit(1);
+        }
+        toLang = toOutputLanguage(optarg);
+        break;
+      case OUTPUT_FILE:
+        out->flush();
+        if(out != &cout) {
+          ((ofstream*)out)->close();
+          delete out;
+        }
+        if(strcmp(optarg, "-")) {
+          out = new ofstream(optarg);
+        } else {
+          out = &cout;
+        }
+        break;
+      case DEFAULT_DAG_THRESH: {
+          if(!isdigit(*optarg)) {
+            cerr << "error: --default-dag-thresh requires non-negative argument: `"
+                 << optarg << "' invalid." << endl;
+            exit(1);
+          }
+          char* end;
+          unsigned long ul = strtoul(optarg, &end, 10);
+          if(errno != 0 || *end != '\0') {
+            cerr << "error: --default-dag-thresh argument malformed: `"
+                 << optarg << "'." << endl;
+            exit(1);
+          }
+          dag_thresh = ul > INT_MAX ? INT_MAX : int(ul);
+        }
+        break;
+      case EXPAND_DEFINITIONS:
+        expand_definitions = true;
+        break;
+      case COMBINE_ASSERTIONS:
+        combine_assertions = true;
+        break;
+      case 'h':
+        showHelp();
+        exit(0);
+      case '?':
+        showHelp();
+        exit(1);
+      default:
+        cerr << "internal error.  translator failed ("
+             << char(c) << "," << c << ")." << endl;
+        exit(1);
+      }
+    }
+
+    if(files == 0) {
+      *out << expr::ExprDag(dag_thresh);
+      readFile("-", fromLang == input::LANG_AUTO ? input::LANG_CVC4 : fromLang, toLang, expand_definitions, combine_assertions, out);
+      exit(0);
+    }
+  } catch(Exception& e) {
+    cerr << e << endl;
+    exit(1);
+  }
+
+  return 0;
+}
diff --git a/library_versions b/library_versions
new file mode 100644
index 0000000..a487695
--- /dev/null
+++ b/library_versions
@@ -0,0 +1,61 @@
+# library_versions
+#
+# Format is:
+#   CVC4-RELEASE-VERSION-REGEXP (LIBRARY:VERSION)*
+#
+# This file contains library version release information.
+# Lines are matched while processing configure.ac (and generating
+# the configure script) using the CVC4_RELEASE_STRING.  Lines are
+# matched on the regexp in the first column, with only the first
+# matching line counting.  The library versions following, one per
+# column, are then used.  If there are no matching lines, an error
+# is raised and the configure script is not generated.
+#
+# The library version numbers are in the form current:revision:age
+# and are passed to libtool with -version-info
+#
+#   current -
+#     increment if interfaces have been added, removed or changed
+#   revision -
+#     increment if source code has changed
+#     set to zero if current is incremented
+#   age -
+#     increment if interfaces have been added
+#     set to zero if interfaces have been removed
+#     or changed
+#
+# A good description of what all this means is here:
+# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
+#
+# When a new CVC4 release is cut, this library_versions file should
+# be extended to provide library version information for that
+# release.  PLEASE DON'T REMOVE LINES (or edit historical lines)
+# from this file unless they are truly in error and the release
+# wasn't made with that erroneous information; this file should
+# ultimately provide a nice historical log of the mapping between
+# CVC4 release numbers and the corresponding interface version
+# information of libraries.
+#
+# For now, libcvc4bindings' version info is used for all language
+# bindings libraries, and _also_ for all "compatibility" bindings
+# libraries (i.e., the old CVC3-esque C and Java bindings).  This
+# may need to be split out in future, if some bindings (particularly
+# the compatibility ones) change more(/less) frequently than the
+# others.
+#
+0\..* libcvc4:0:0:0 libcvc4parser:0:0:0 libcvc4compat:0:0:0 libcvc4bindings:0:0:0
+1\.0 libcvc4:0:0:0 libcvc4parser:0:0:0 libcvc4compat:0:0:0 libcvc4bindings:0:0:0
+1\.0\.1-prerelease libcvc4:0:0:0 libcvc4parser:0:0:0 libcvc4compat:0:0:0 libcvc4bindings:0:0:0
+1\.1-prerelease libcvc4:0:0:0 libcvc4parser:0:0:0 libcvc4compat:0:0:0 libcvc4bindings:0:0:0
+1\.1 libcvc4:1:0:0 libcvc4parser:1:0:0 libcvc4compat:1:0:0 libcvc4bindings:1:0:0
+1\.1\.1-prerelease libcvc4:1:0:0 libcvc4parser:1:0:0 libcvc4compat:1:0:0 libcvc4bindings:1:0:0
+1\.2-prerelease libcvc4:1:0:0 libcvc4parser:1:0:0 libcvc4compat:1:0:0 libcvc4bindings:1:0:0
+1\.2 libcvc4:1:1:1 libcvc4parser:1:1:0 libcvc4compat:1:0:0 libcvc4bindings:1:0:0
+1\.2\.1-prerelease libcvc4:1:1:1 libcvc4parser:1:1:0 libcvc4compat:1:0:0 libcvc4bindings:1:0:0
+1\.3-prerelease libcvc4:2:0:0 libcvc4parser:2:0:0 libcvc4compat:2:0:0 libcvc4bindings:2:0:0
+1\.3 libcvc4:2:0:0 libcvc4parser:2:0:0 libcvc4compat:2:0:0 libcvc4bindings:2:0:0
+1\.3\.1-prerelease libcvc4:2:0:0 libcvc4parser:2:0:0 libcvc4compat:2:0:0 libcvc4bindings:2:0:0
+1\.4-prerelease libcvc4:2:0:0 libcvc4parser:2:0:0 libcvc4compat:2:0:0 libcvc4bindings:2:0:0
+1\.4 libcvc4:3:0:0 libcvc4parser:3:0:0 libcvc4compat:3:0:0 libcvc4bindings:3:0:0
+1\.4\.1-prerelease libcvc4:3:0:0 libcvc4parser:3:0:0 libcvc4compat:3:0:0 libcvc4bindings:3:0:0
+1\.5-prerelease libcvc4:3:0:0 libcvc4parser:3:0:0 libcvc4compat:3:0:0 libcvc4bindings:3:0:0
diff --git a/proofs/lfsc_checker/AUTHORS b/proofs/lfsc_checker/AUTHORS
new file mode 100644
index 0000000..0bd0a37
--- /dev/null
+++ b/proofs/lfsc_checker/AUTHORS
@@ -0,0 +1,5 @@
+The core authors and designers of the LFSC proof checker are:
+
+  Andy Reynolds
+  Aaron Stump
+
diff --git a/proofs/lfsc_checker/COPYING b/proofs/lfsc_checker/COPYING
new file mode 100644
index 0000000..b220a31
--- /dev/null
+++ b/proofs/lfsc_checker/COPYING
@@ -0,0 +1,17 @@
+LFSC is copyright (C) 2012, 2013 The University of Iowa.
+All rights reserved.
+
+LFSC is open-source; distribution is under the terms of the modified
+BSD license.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT OWNERS AND CONTRIBUTORS
+AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/proofs/lfsc_checker/INSTALL b/proofs/lfsc_checker/INSTALL
new file mode 100644
index 0000000..a1e89e1
--- /dev/null
+++ b/proofs/lfsc_checker/INSTALL
@@ -0,0 +1,370 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation,
+Inc.
+
+   Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.  This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+   Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package.  The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.  Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below.  The lack of an optional feature in a given package is not
+necessarily a bug.  More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+   The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.
+
+     Running `configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package, generally using the just-built uninstalled binaries.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.  When installing into a prefix owned by root, it is
+     recommended that the package be configured and built as a regular
+     user, and only the `make install' phase executed with root
+     privileges.
+
+  5. Optionally, type `make installcheck' to repeat any self-tests, but
+     this time using the binaries in their final installed location.
+     This target does not install anything.  Running this target as a
+     regular user, particularly if the prior `make install' required
+     root privileges, verifies that the installation completed
+     correctly.
+
+  6. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+  7. Often, you can also type `make uninstall' to remove the installed
+     files again.  In practice, not all packages have tested that
+     uninstallation works correctly, even though it is required by the
+     GNU Coding Standards.
+
+  8. Some packages, particularly those that use Automake, provide `make
+     distcheck', which can by used by developers to test that all other
+     targets like `make install' and `make uninstall' work correctly.
+     This target is generally not run by end users.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you can use GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.  This
+is known as a "VPATH" build.
+
+   With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+   By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc.  You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.  In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+   The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+   The first method involves providing an override variable for each
+affected directory.  For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'.  Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated.  The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+   The second method involves providing the `DESTDIR' variable.  For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names.  The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters.  On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+   Some packages offer the ability to configure how verbose the
+execution of `make' will be.  For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+   HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved.  Use GNU `make'
+instead.
+
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
+a workaround.  If GNU CC is not installed, it is therefore recommended
+to try
+
+     ./configure CC="cc"
+
+and if that doesn't work, try
+
+     ./configure CC="cc -nodtk"
+
+   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+   On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'.  It is recommended to use the following options:
+
+     ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS
+     KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug.  Until the bug is fixed you can use this workaround:
+
+     CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+     Print a summary of the options unique to this package's
+     `configure', and exit.  The `short' variant lists options used
+     only in the top level, while the `recursive' variant lists options
+     also present in any nested packages.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+     Use DIR as the installation prefix.  *note Installation Names::
+     for more details, including other options available for fine-tuning
+     the installation locations.
+
+`--no-create'
+`-n'
+     Run the configure checks, but stop before creating any output
+     files.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
+
diff --git a/proofs/lfsc_checker/Makefile.am b/proofs/lfsc_checker/Makefile.am
new file mode 100644
index 0000000..ff483f5
--- /dev/null
+++ b/proofs/lfsc_checker/Makefile.am
@@ -0,0 +1,30 @@
+AM_CXXFLAGS = -Wall -Wno-deprecated
+
+bin_PROGRAMS = lfsc-checker
+
+lfsc_checker_SOURCES = \
+	main.cpp
+lfsc_checker_LDADD = \
+	@builddir@/liblfsc_checker.la
+
+noinst_LTLIBRARIES = liblfsc_checker.la
+
+liblfsc_checker_la_SOURCES = \
+	check.cpp \
+	check.h \
+	chunking_memory_management.h \
+	code.cpp \
+	code.h \
+	expr.cpp \
+	expr.h \
+	libwriter.cpp \
+	libwriter.h \
+	position.h \
+	print_smt2.cpp \
+	print_smt2.h \
+	scccode.cpp \
+	scccode.h \
+	sccwriter.cpp \
+	sccwriter.h \
+	trie.cpp \
+	trie.h
diff --git a/proofs/lfsc_checker/Makefile.in b/proofs/lfsc_checker/Makefile.in
new file mode 100644
index 0000000..cbc47a7
--- /dev/null
+++ b/proofs/lfsc_checker/Makefile.in
@@ -0,0 +1,910 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+bin_PROGRAMS = lfsc-checker$(EXEEXT)
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+	$(am__configure_deps) $(am__DIST_COMMON)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+liblfsc_checker_la_LIBADD =
+am_liblfsc_checker_la_OBJECTS = check.lo code.lo expr.lo libwriter.lo \
+	print_smt2.lo scccode.lo sccwriter.lo trie.lo
+liblfsc_checker_la_OBJECTS = $(am_liblfsc_checker_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+am__installdirs = "$(DESTDIR)$(bindir)"
+PROGRAMS = $(bin_PROGRAMS)
+am_lfsc_checker_OBJECTS = main.$(OBJEXT)
+lfsc_checker_OBJECTS = $(am_lfsc_checker_OBJECTS)
+lfsc_checker_DEPENDENCIES = @builddir@/liblfsc_checker.la
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(liblfsc_checker_la_SOURCES) $(lfsc_checker_SOURCES)
+DIST_SOURCES = $(liblfsc_checker_la_SOURCES) $(lfsc_checker_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+	$(LISP)config.h.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+CSCOPE = cscope
+AM_RECURSIVE_TARGETS = cscope
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+	$(top_srcdir)/config/compile $(top_srcdir)/config/config.guess \
+	$(top_srcdir)/config/config.sub $(top_srcdir)/config/depcomp \
+	$(top_srcdir)/config/install-sh $(top_srcdir)/config/ltmain.sh \
+	$(top_srcdir)/config/missing AUTHORS COPYING INSTALL NEWS \
+	README config/compile config/config.guess config/config.sub \
+	config/depcomp config/install-sh config/ltmain.sh \
+	config/missing
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AM_CXXFLAGS = -Wall -Wno-deprecated
+lfsc_checker_SOURCES = \
+	main.cpp
+
+lfsc_checker_LDADD = \
+	@builddir@/liblfsc_checker.la
+
+noinst_LTLIBRARIES = liblfsc_checker.la
+liblfsc_checker_la_SOURCES = \
+	check.cpp \
+	check.h \
+	chunking_memory_management.h \
+	code.cpp \
+	code.h \
+	expr.cpp \
+	expr.h \
+	libwriter.cpp \
+	libwriter.h \
+	position.h \
+	print_smt2.cpp \
+	print_smt2.h \
+	scccode.cpp \
+	scccode.h \
+	sccwriter.cpp \
+	sccwriter.h \
+	trie.cpp \
+	trie.h
+
+all: config.h
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+am--refresh: Makefile
+	@:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+	      $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    echo ' $(SHELL) ./config.status'; \
+	    $(SHELL) ./config.status;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	$(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+	@test -f $@ || rm -f stamp-h1
+	@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+	@rm -f stamp-h1
+	cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
+	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+	rm -f stamp-h1
+	touch $@
+
+distclean-hdr:
+	-rm -f config.h stamp-h1
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+liblfsc_checker.la: $(liblfsc_checker_la_OBJECTS) $(liblfsc_checker_la_DEPENDENCIES) $(EXTRA_liblfsc_checker_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK)  $(liblfsc_checker_la_OBJECTS) $(liblfsc_checker_la_LIBADD) $(LIBS)
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
+	for p in $$list; do echo "$$p $$p"; done | \
+	sed 's/$(EXEEXT)$$//' | \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
+	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+	sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+	    else { print "f", $$3 "/" $$4, $$1; } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	    test -z "$$files" || { \
+	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	    } \
+	; done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+	@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+	echo " rm -f" $$list; \
+	rm -f $$list || exit $$?; \
+	test -n "$(EXEEXT)" || exit 0; \
+	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+	echo " rm -f" $$list; \
+	rm -f $$list
+
+lfsc-checker$(EXEEXT): $(lfsc_checker_OBJECTS) $(lfsc_checker_DEPENDENCIES) $(EXTRA_lfsc_checker_DEPENDENCIES) 
+	@rm -f lfsc-checker$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(lfsc_checker_OBJECTS) $(lfsc_checker_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/check.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/code.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/expr.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libwriter.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/main.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/print_smt2.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/scccode.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sccwriter.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/trie.Plo at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool config.lt
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+	test ! -s cscope.files \
+	  || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+	-rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+
+distdir: $(DISTFILES)
+	$(am__remove_distdir)
+	test -d "$(distdir)" || mkdir "$(distdir)"
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	-test -n "$(am__skip_mode_fix)" \
+	|| find "$(distdir)" -type d ! -perm -755 \
+		-exec chmod u+rwx,go+rx {} \; -o \
+	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+	|| chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__post_remove_distdir)
+
+dist-bzip2: distdir
+	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+	$(am__post_remove_distdir)
+
+dist-lzip: distdir
+	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+	$(am__post_remove_distdir)
+
+dist-xz: distdir
+	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+	$(am__post_remove_distdir)
+
+dist-tarZ: distdir
+	@echo WARNING: "Support for distribution archives compressed with" \
+		       "legacy program 'compress' is deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+	$(am__post_remove_distdir)
+
+dist-shar: distdir
+	@echo WARNING: "Support for shar distribution archives is" \
+	               "deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+	$(am__post_remove_distdir)
+
+dist-zip: distdir
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
+	$(am__post_remove_distdir)
+
+dist dist-all:
+	$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+	$(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	case '$(DIST_ARCHIVES)' in \
+	*.tar.gz*) \
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+	*.tar.bz2*) \
+	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+	*.tar.lz*) \
+	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+	*.tar.xz*) \
+	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+	*.tar.Z*) \
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+	*.shar.gz*) \
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+	*.zip*) \
+	  unzip $(distdir).zip ;;\
+	esac
+	chmod -R a-w $(distdir)
+	chmod u+w $(distdir)
+	mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
+	chmod a-w $(distdir)
+	test -d $(distdir)/_build || exit 0; \
+	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+	  && am__cwd=`pwd` \
+	  && $(am__cd) $(distdir)/_build/sub \
+	  && ../../configure \
+	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	    --srcdir=../.. --prefix="$$dc_install_base" \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+	        distuninstallcheck \
+	  && chmod -R a-w "$$dc_install_base" \
+	  && ({ \
+	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+	  && rm -rf "$$dc_destdir" \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+	  && rm -rf $(DIST_ARCHIVES) \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+	  && cd "$$am__cwd" \
+	  || exit 1
+	$(am__post_remove_distdir)
+	@(echo "$(distdir) archives ready for distribution: "; \
+	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+	@test -n '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: trying to run $@ with an empty' \
+	       '$$(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	$(am__cd) '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+	   || { echo "ERROR: files left after uninstall:" ; \
+	        if test -n "$(DESTDIR)"; then \
+	          echo "  (check DESTDIR support)"; \
+	        fi ; \
+	        $(distuninstallcheck_listfiles) ; \
+	        exit 1; } >&2
+distcleancheck: distclean
+	@if test '$(srcdir)' = . ; then \
+	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+	  exit 1 ; \
+	fi
+	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+	  || { echo "ERROR: files left in build directory after distclean:" ; \
+	       $(distcleancheck_listfiles) ; \
+	       exit 1; } >&2
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) config.h
+installdirs:
+	for dir in "$(DESTDIR)$(bindir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool \
+	clean-noinstLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-hdr distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS
+
+.MAKE: all install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-am clean \
+	clean-binPROGRAMS clean-cscope clean-generic clean-libtool \
+	clean-noinstLTLIBRARIES cscope cscopelist-am ctags ctags-am \
+	dist dist-all dist-bzip2 dist-gzip dist-lzip dist-shar \
+	dist-tarZ dist-xz dist-zip distcheck distclean \
+	distclean-compile distclean-generic distclean-hdr \
+	distclean-libtool distclean-tags distcleancheck distdir \
+	distuninstallcheck dvi dvi-am html html-am info info-am \
+	install install-am install-binPROGRAMS install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/proofs/lfsc_checker/NEWS b/proofs/lfsc_checker/NEWS
new file mode 100644
index 0000000..1a357ab
--- /dev/null
+++ b/proofs/lfsc_checker/NEWS
@@ -0,0 +1,9 @@
+This file contains a summary of important user-visible changes to the
+LFSC proof checker.
+
+Changes since pre-1.0 (unversioned) releases
+============================================
+
+* Incorporated the LFSC checker into the CVC4 project.
+
+-- Morgan Deters <mdeters at cs.nyu.edu>  Thu, 12 Dec 2013 18:16:08 -0500
diff --git a/proofs/lfsc_checker/README b/proofs/lfsc_checker/README
new file mode 100644
index 0000000..5073569
--- /dev/null
+++ b/proofs/lfsc_checker/README
@@ -0,0 +1,83 @@
+lfsc: a high-performance LFSC proof checker.
+
+Andy Reynolds and Aaron Stump
+
+----------------------------------------------------------------------
+Command line parameters for LFSC:
+
+lfsc [sig_1 .... sig_n] [opts_1...opts_n]
+
+[sig_1 .... sig_n] are signature files, and options [opts_1...opts_n]
+are any of the following:
+
+--compile-scc : Write out all side conditions contained in signatures
+  specified on the command line to files scccode.h, scccode.cpp (see
+  below for example)
+
+--run-scc : Run proof checking with compiled side condition code (see
+  below).
+
+--compile-scc-debug : Write side condition code to scccode.h,
+  scccode.cpp that contains print statements (for debugging running of
+  side condition code).
+
+
+
+
+Typical usage:
+
+./src/opt/lfsc [sig_1 .... sig_n] [proof] [opts_1...opts_n]
+
+A proof is typically specified at the end of the list of input files
+in file [proof].  This will tell LFSC to type check the proof term in
+the file [proof].  The extension (*.plf) is commonly used for both
+user signature files and proof files.
+
+
+
+
+Side condition code compilation:
+
+LFSC may be used with side condition code compilation.  This will take
+all side conditions ("program" constructs) in the user signature and
+produce equivalent C++ code in the output files scccode.h,
+scccode.cpp.
+
+An example for QF_IDL running with side condition code compilation:
+
+(1) In the src/ directory, run LFSC with the command line parameters:
+
+./opt/lfsc ../sat-tests/sat.plf ../sat-tests/smt.plf \
+           ../sat-tests/cnf_conv.plf ../sat-tests/th_base.plf \
+           ../sat-tests/th_idl.plf --compile-scc
+
+This will produce scccode.h and scccode.cpp in the working directory
+where lfsc was run (here, src/).
+
+(2) Recompile the code base for lfsc.  This will produce a copy of the
+LFSC executable that is capable of calling side conditions directly as
+compiled C++.
+
+(3) To check a proof.plf* with side condition code compilation, run
+LFSC with the command line parameters:
+
+./opt/lfsc ../sat-tests/sat.plf ../sat-tests/smt.plf \
+           ../sat-tests/cnf_conv.plf ../sat-tests/th_base.plf \
+           ../sat-tests/th_idl.plf --run-scc   proof.plf
+
+
+
+*Note that this proof must be compatible with the proof checking
+ signature.  The proof generator is responsible for producing a proof
+ in the proper format that can be checked by the proof signature
+ specified when running LFSC.
+
+For example, in the case of CLSAT in the QF_IDL logic, older proofs
+(proofs produced before Feb 2009) may be incompatible with the newest
+version of the resolution checking signature (sat.plf).  The newest
+version of CLSAT -- which can be checked out from the Iowa repository
+with
+
+svn co https://svn.divms.uiowa.edu/repos/clc/clsat/trunk clsat
+
+should produce proofs compatible with the current version of sat.plf.
diff --git a/proofs/lfsc_checker/aclocal.m4 b/proofs/lfsc_checker/aclocal.m4
new file mode 100644
index 0000000..d9ac44b
--- /dev/null
+++ b/proofs/lfsc_checker/aclocal.m4
@@ -0,0 +1,1193 @@
+# generated automatically by aclocal 1.15 -*- Autoconf -*-
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+
+# Copyright (C) 2002-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.15'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.15], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.15])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is '.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+  # Older Autoconf quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named 'Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running 'make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "$am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each '.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.65])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+             [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+		  [_AM_DEPENDENCIES([CC])],
+		  [m4_define([AC_PROG_CC],
+			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+		  [_AM_DEPENDENCIES([CXX])],
+		  [m4_define([AC_PROG_CXX],
+			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+		  [_AM_DEPENDENCIES([OBJC])],
+		  [m4_define([AC_PROG_OBJC],
+			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+		  [_AM_DEPENDENCIES([OBJCXX])],
+		  [m4_define([AC_PROG_OBJCXX],
+			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
+])
+
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST([install_sh])])
+
+# Copyright (C) 2003-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless 'enable' is passed literally.
+# For symmetry, 'disable' may be passed as well.  Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t at _MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+      am_maintainer_other[ make rules and dependencies not useful
+      (and sometimes confusing) to the casual installer])],
+    [USE_MAINTAINER_MODE=$enableval],
+    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+]
+)
+
+# Check to see how 'make' treats includes.	            -*- Autoconf -*-
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+
+# Copyright (C) 2009-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# ("yes" being less verbose, "no" or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor 'install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in "make install-strip", and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+#
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+
+m4_if([$1], [v7],
+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+  [m4_case([$1],
+    [ustar],
+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+      if test $am_uid -le $am_max_uid; then
+         AC_MSG_RESULT([yes])
+      else
+         AC_MSG_RESULT([no])
+         _am_tools=none
+      fi
+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+      if test $am_gid -le $am_max_gid; then
+         AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+        _am_tools=none
+      fi],
+
+  [pax],
+    [],
+
+  [m4_fatal([Unknown tar format])])
+
+  AC_MSG_CHECKING([how to create a $1 tar archive])
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        AM_RUN_LOG([$_am_tar --version]) && break
+      done
+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x $1 -w "$$tardir"'
+      am__tar_='pax -L -x $1 -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+      am__untar='cpio -i -H $1 -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
+
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_$1}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      AM_RUN_LOG([$am__untar <conftest.tar])
+      AM_RUN_LOG([cat conftest.dir/file])
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
+  rm -rf conftest.dir
+
+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([config/libtool.m4])
+m4_include([config/ltoptions.m4])
+m4_include([config/ltsugar.m4])
+m4_include([config/ltversion.m4])
+m4_include([config/lt~obsolete.m4])
diff --git a/proofs/lfsc_checker/check.cpp b/proofs/lfsc_checker/check.cpp
new file mode 100644
index 0000000..e100efa
--- /dev/null
+++ b/proofs/lfsc_checker/check.cpp
@@ -0,0 +1,1383 @@
+#include "position.h"
+#include "check.h"
+#include "code.h"
+#include "expr.h"
+#include "trie.h"
+#include "sccwriter.h"
+#include "libwriter.h"
+#ifndef _MSC_VER
+#include <libgen.h>
+#endif
+#include <stack>
+#include <string.h>
+#include <time.h>
+#include "scccode.h"
+#include "print_smt2.h"
+
+using namespace std;
+#ifndef _MSC_VER
+using namespace __gnu_cxx;
+#endif
+
+int linenum = 1;
+int colnum = 1;
+const char *filename = 0;
+FILE *curfile = 0;
+
+//#define USE_HASH_MAPS  //AJR: deprecated
+
+symmap2 progs;
+std::vector< Expr* > ascHoles;
+
+#ifdef USE_HASH_MAPS
+hash_map<string, Expr *> symbols;
+hash_map<string, Expr *> symbol_types;
+#else
+Trie<pair<Expr *, Expr *> > *symbols = new Trie<pair<Expr *, Expr *> >;
+#endif
+
+hash_map<string, bool > imports;
+std::map<SymExpr*, int > mark_map;
+std::vector< std::pair< std::string, std::pair<Expr *, Expr *> > > local_sym_names;
+
+Expr *not_defeq1 = 0;
+Expr *not_defeq2 = 0;
+
+bool tail_calls = true;
+bool big_check = true;
+
+void report_error(const string &msg) {
+  if (filename) {
+    Position p(filename,linenum,colnum);
+    p.print(cout);
+  }
+  cout << "\n";
+  cout << msg;
+  cout << "\n";
+  if (not_defeq1 && not_defeq2) {
+    cout << "The following terms are not definitionally equal:\n1. ";
+    not_defeq1->print(cout);
+    cout << "\n2. ";
+    not_defeq2->print(cout);
+  }
+  cout.flush();
+  exit(1);
+}
+
+Expr *call_run_code(Expr *code) {
+  if (dbg_prog) {
+    cout << "[Running ";
+    code->print(cout);
+    cout << "\n";
+  }
+  Expr *computed_result = run_code(code);
+  if (dbg_prog) {
+    cout << "] returning ";
+    if (computed_result)
+      computed_result->print(cout);
+    else
+      cout << "fail";
+    cout << "\n";
+  }
+  return computed_result;
+}
+
+char our_getc_c = 0;
+
+int IDBUF_LEN = 2048;
+char idbuf[2048];
+
+Expr *statType = new CExpr(TYPE);
+Expr *statKind = new CExpr(KIND);
+Expr *statMpz = new CExpr(MPZ);
+Expr *statMpq = new CExpr(MPQ);
+
+int open_parens = 0;
+
+// only call in check()
+void eat_rparen() {
+  eat_char(')');
+  open_parens--;
+}
+
+void eat_excess(int prev) {
+  while(open_parens > prev)
+    eat_rparen();
+}
+
+/* There are four cases for check():
+
+1. expected=0, create is false: check() sets computed to be the classifier of
+   the checked term.
+
+2. expected=0, create is true: check() returns
+   the checked expression and sets computed to be its classifier.
+
+3. expected is non-null, create is false: check returns NULL.
+
+4. expected is non-null, create is true: check returns the term that
+   was checked.
+
+We consume the reference for expected, to enable tail calls in the
+application case.
+
+If is_hole is NULL, then the expression parsed may not be a hole.
+Otherwise, it may be, and we will set *is_hole to true if it is
+(but leave *is_hole alone if it is not).
+
+*/
+
+bool allow_run = false;
+int app_rec_level = 0;
+
+Expr *check(bool create, Expr *expected, Expr **computed = NULL,
+	    bool *is_hole = 0, bool return_pos = false, bool inAsc = false ) {
+ start_check:
+        //std::cout << "check code ";
+        //if( expected )
+        //  expected->print( std::cout );
+        //std::cout << std::endl;
+  char d = non_ws();
+  switch(d) {
+  case '(': {
+
+    open_parens++;
+
+    char c = non_ws();
+    switch (c) {
+    case EOF:
+      report_error("Unexpected end of file.");
+      break;
+    case '!': { // the pi case
+      string id(prefix_id());
+#ifdef DEBUG_SYM_NAMES
+      Expr *sym = new SymSExpr(id,SYMS_EXPR);
+#else
+      Expr *sym = new SymExpr(id);
+      //std::cout << "name " << id << " " << sym << std::endl;
+#endif
+      allow_run = true;
+      int prevo = open_parens;
+      Expr *domain = check(true, statType);
+      eat_excess(prevo);
+      allow_run = false;
+#ifdef USE_HASH_MAPS
+      Expr *prev = symbols[id];
+      Expr *prevtp = symbol_types[id];
+      symbols[id] = sym;
+      symbol_types[id] = domain;
+#else
+      pair<Expr *,Expr *>prev =
+	symbols->insert(id.c_str(),pair<Expr *,Expr *>(sym,domain));
+#endif
+      if (expected)
+	      expected->inc();
+      Expr *range = check(create, expected, computed, NULL, return_pos);
+      eat_excess(prevo);
+      eat_rparen();
+
+#ifdef USE_HASH_MAPS
+      symbols[id] = prev;
+      symbol_types[id] = prevtp;
+#else
+      symbols->insert(id.c_str(),prev);
+#endif
+      if (expected) {
+	int o = expected->followDefs()->getop();
+	expected->dec();
+	if (o != TYPE && o != KIND)
+	  report_error(string("The expected classifier for a pi abstraction")
+		       +string("is neither \"type\" nor \"kind\".\n")
+		       +string("1. the expected classifier: ")
+		       +expected->toString());
+   if (create){
+	  CExpr* ret = new CExpr(PI, sym, domain, range);
+      ret->calc_free_in();
+      return ret;
+   }
+	return 0;
+      }
+      else {
+         if (create){
+	         CExpr* ret = new CExpr(PI, sym, domain, range);
+            ret->calc_free_in();
+            return ret;
+         }
+	int o = (*computed)->followDefs()->getop();
+	if (o != TYPE && o != KIND)
+	  report_error(string("The classifier for the range of a pi")
+		       +string("abstraction is neither \"type\" nor ")
+		       +string("\"kind\".\n1. the computed classifier: ")
+		       +range->toString());
+	return 0;
+      }
+    }
+    case '%': { // the case for big lambda
+      if (expected || create || !return_pos || !big_check)
+	report_error(string("Big lambda abstractions can only be used")
+		     +string("in the return position of a \"bigcheck\"\n")
+		     +string("command."));
+      string id(prefix_id());
+#ifdef DEBUG_SYM_NAMES
+      SymExpr *sym = new SymSExpr(id, SYMS_EXPR);
+#else
+      SymExpr *sym = new SymExpr(id);
+      //std::cout << "name " << id << " " << sym << std::endl;
+#endif
+
+      int prevo = open_parens;
+      Expr *expected_domain = check(true, statType);
+      eat_excess(prevo);
+
+#ifdef USE_HASH_MAPS
+      Expr *prev = symbols[id];
+      Expr *prevtp = symbol_types[id];
+      symbols[id] = sym;
+      symbol_types[id] = expected_domain;
+#else
+      pair<Expr *, Expr *> prevpr =
+	      symbols->insert(id.c_str(), pair<Expr *, Expr *>(sym,expected_domain));
+      Expr *prev = prevpr.first;
+      Expr *prevtp = prevpr.second;
+#endif
+      expected_domain->inc(); // because we have stored it in the symbol table
+
+      //will clean up local sym name eventually
+      local_sym_names.push_back( std::pair< std::string, std::pair<Expr *, Expr *> >( id, prevpr ) );
+      if (prev)
+	      prev->dec();
+      if (prevtp)
+	      prevtp->dec();
+      create = false;
+      expected = NULL;
+      // computed unchanged
+      is_hole = NULL;
+      // return_pos unchanged
+
+      // note we will not store the proper return type in computed.
+
+      goto start_check;
+    }
+
+    case '\\': { // the lambda case
+      if (!expected)
+	report_error(string("We are computing a type for a lambda ")
+		     +string("abstraction, but we can only check\n")
+		     +string("such against a type.  Try inserting an ")
+		     +string("ascription (using ':').\n"));
+      Expr *orig_expected = expected;
+      expected = expected->followDefs();
+      if (expected->getop() != PI)
+	report_error(string("We are type-checking a lambda abstraction, but\n")
+		     +string("the expected type is not a pi abstraction.\n")
+		     +string("1. The expected type: ") + expected->toString());
+      string id(prefix_id());
+#ifdef DEBUG_SYM_NAMES
+      SymExpr *sym = new SymSExpr(id, SYMS_EXPR);
+#else
+      SymExpr *sym = new SymExpr(id);
+      //std::cout << "name " << id << " " << sym << std::endl;
+#endif
+
+      CExpr *pitp = (CExpr *)expected;
+      Expr *expected_domain = pitp->kids[1];
+      Expr *expected_range = pitp->kids[2];
+      SymExpr *pivar = (SymExpr *)pitp->kids[0];
+      if (expected_range->followDefs()->getop() == TYPE)
+	report_error(string("The expected classifier for a lambda abstraction")
+		     +string(" a kind, not a type.\n")
+		     +string("1. The expected classifier: ")
+		     +expected->toString());
+
+      /* we need to map the pivar to the new sym, because in our
+	 higher-order matching we may have (_ x) to unify with t.
+	 The x must be something from an expected type, since only these
+	 can have holes.  We want to map expected vars x to computed vars y,
+	 so that we can set the hole to be \ y t, where t contains ys but
+         not xs. */
+
+#ifdef USE_HASH_MAPS
+      Expr *prev = symbols[id];
+      Expr *prevtp = symbol_types[id];
+      symbols[id] = sym;
+      symbol_types[id] = expected_domain;
+#else
+      pair<Expr *, Expr *> prevpr =
+	      symbols->insert(id.c_str(), pair<Expr *, Expr *>(sym,expected_domain));
+      Expr *prev = prevpr.first;
+      Expr *prevtp = prevpr.second;
+#endif
+      Expr *prev_pivar_val = pivar->val;
+      sym->inc();
+      pivar->val = sym;
+
+      expected_domain->inc(); // because we have stored it in the symbol table
+      expected_range->inc(); // because we will pass it to a recursive call
+
+      if (tail_calls && big_check && return_pos && !create) {
+        //will clean up local sym name eventually
+        local_sym_names.push_back( std::pair< std::string, std::pair<Expr *, Expr *> >( id, prevpr ) );
+	      if (prev_pivar_val)
+	        prev_pivar_val->dec();
+	      if (prev)
+	        prev->dec();
+	      if (prevtp)
+	        prevtp->dec();
+	      orig_expected->dec();
+	      create = false;
+	      expected = expected_range;
+	      computed = NULL;
+	      is_hole = NULL;
+	      // return_pos unchanged
+	      goto start_check;
+      }
+      else {
+
+	      int prev = open_parens;
+	      Expr *range = check(create, expected_range, NULL, NULL, return_pos);
+	      eat_excess(prev);
+	      eat_rparen();
+
+#ifdef USE_HASH_MAPS
+	      symbols[id] = prev;
+	      symbol_types[id] = prevtp;
+#else
+	      symbols->insert(id.c_str(), prevpr);
+#endif
+	      expected_domain->dec(); // because removed from the symbol table now
+
+	      pivar->val = prev_pivar_val;
+
+	      orig_expected->dec();
+
+	      sym->dec(); // the pivar->val reference
+	      if (create)
+	        return new CExpr(LAM, sym, range);
+	      sym->dec(); // the symbol table reference, otherwise in the new LAM
+	      return 0;
+      }
+    }
+    case '^': { // the run case
+      if (!allow_run || !create || !expected)
+	      report_error(string("A run expression (operator \"^\") appears in")
+		          +string(" a disallowed position."));
+
+      Expr *code = read_code();
+      //string errstr = (string("The first argument in a run expression must be")
+		    //   +string(" a call to a program.\n1. the argument: ")
+		    //   +code->toString());
+
+      /* determine expected type of the result term, and make sure
+	 the code term is an allowed one. */
+#if 0
+      Expr *progret;
+      if (code->isArithTerm())
+	      progret = statMpz;
+      else {
+	      if (code->getop() != APP)
+	        report_error(errstr);
+
+	      CExpr *call = (CExpr *)code;
+
+	      // prog is not known to be a SymExpr yet
+	      CExpr *prog = (CExpr *)call->get_head();
+
+	      if (prog->getop() != PROG)
+	        report_error(errstr);
+
+	      progret = prog->kids[0]->get_body();
+      }
+#else
+      Expr *progret = NULL;
+      if (code->isArithTerm())
+	      progret = statMpz;
+      else {
+	      if (code->getop() == APP)
+        {
+	        CExpr *call = (CExpr *)code;
+
+	        // prog is not known to be a SymExpr yet
+	        CExpr *prog = (CExpr *)call->get_head();
+
+	        if (prog->getop() == PROG)
+	          progret = prog->kids[0]->get_body();
+        }
+      }
+#endif
+      /* determine expected type of the result term, and make sure
+	      the code term is an allowed one. */
+      //Expr* progret = check_code( code );
+
+      /* the next term cannot be a hole where run expressions are introduced.
+	      When they are checked in applications, it can be. */
+      int prev = open_parens;
+      if( progret )
+        progret->inc();
+      Expr *trm = check(true, progret);
+      eat_excess(prev);
+      eat_rparen();
+
+      if (expected->getop() != TYPE)
+	      report_error(string("The expected type for a run expression is not ")
+		          +string("\"type\".\n")
+		          +string("1. The expected type: ")+expected->toString());
+      expected->dec();
+      return new CExpr(RUN, code, trm);
+    }
+
+    case ':': { // the ascription case
+      statType->inc();
+      int prev = open_parens;
+      Expr *tp = check(true, statType, NULL, NULL, false, true );
+      eat_excess(prev);
+
+      if (!expected)
+	      tp->inc();
+
+      Expr *trm = check(create, tp, NULL, NULL, return_pos);
+      eat_excess(prev);
+      eat_rparen();
+      if (expected) {
+	      if (!expected->defeq(tp))
+	        report_error(string("The expected type does not match the ")
+		            +string("ascribed type in an ascription.\n")
+		            +string("1. The expected type: ")+expected->toString()
+		            +string("\n2. The ascribed type: ")+tp->toString());
+
+	      // no need to dec tp, since it was consumed by the call to check
+	      expected->dec();
+	      if (create)
+	        return trm;
+	      trm->dec();
+	      return 0;
+      }
+      else {
+	      *computed = tp;
+	      if (create)
+	        return trm;
+	      return 0;
+      }
+    }
+    case '@': { // the local definition case
+      string id(prefix_id());
+#ifdef DEBUG_SYM_NAMES
+      SymExpr *sym = new SymSExpr(id, SYMS_EXPR);
+#else
+      SymExpr *sym = new SymExpr(id);
+#endif
+      int prev_open = open_parens;
+      Expr *tp_of_trm = NULL;
+      Expr *trm = check(true, NULL, &tp_of_trm);
+      eat_excess(prev_open);
+
+      sym->val = trm;
+
+#ifdef USE_HASH_MAPS
+      Expr *prev = symbols[id];
+      Expr *prevtp = symbol_types[id];
+      symbols[id] = sym;
+      symbol_types[id] = tp_of_trm;
+#else
+      pair<Expr *, Expr *> prevpr =
+	symbols->insert(id.c_str(), pair<Expr *, Expr *>(sym,tp_of_trm));
+      Expr *prev = prevpr.first;
+      Expr *prevtp = prevpr.second;
+#endif
+
+      if (tail_calls && big_check && return_pos && !create) {
+	      if (prev)
+	        prev->dec();
+	      if (prevtp)
+	        prevtp->dec();
+	      // all parameters to check() unchanged here
+	      goto start_check;
+      }
+      else {
+	      int prev_open = open_parens;
+	      Expr *body = check(create, expected, computed, is_hole, return_pos);
+	      eat_excess(prev_open);
+	      eat_rparen();
+
+#ifdef USE_HASH_MAPS
+	      symbols[id] = prev;
+	      symbol_types[id] = prevtp;
+#else
+	      symbols->insert(id.c_str(), prevpr);
+#endif
+	      tp_of_trm->dec(); // because removed from the symbol table now
+
+	      sym->dec();
+	      return body;
+      }
+    }
+    case '~': {
+      int prev = open_parens;
+      Expr *e = check(create, expected, computed, is_hole, return_pos);
+      eat_excess(prev);
+      eat_rparen();
+
+      // this has been only very lightly tested -- ads.
+
+      if (expected) {
+	      if (expected != statMpz && expected != statMpq)
+	        report_error("Negative sign where an numeric expression is expected.");
+      }
+      else {
+	      if ((*computed) != statMpz && (*computed) != statMpq)
+	        report_error("Negative sign where an numeric expression is expected.");
+      }
+
+      if (create) {
+	      if (e->getclass() == INT_EXPR)
+        {
+	        IntExpr *ee = (IntExpr *)e;
+	        mpz_neg(ee->n, ee->n);
+	        return ee;
+        }
+        else if( e->getclass() == RAT_EXPR )
+        {
+	        RatExpr *ee = (RatExpr *)e;
+	        mpq_neg(ee->n, ee->n);
+	        return ee;
+        }
+        else
+        {
+          report_error("Negative sign with expr that is not an int. literal.");
+        }
+      }
+      else
+	      return 0;
+    }
+    default: { // the application case
+      our_ungetc(c);
+      Expr *head_computed;
+      int prev = open_parens;
+      Expr *headtrm = check(create,0,&head_computed);
+      eat_excess(prev);
+
+      CExpr *headtp = (CExpr *)head_computed->followDefs();
+      headtp->inc();
+      head_computed->dec();
+      if ( headtp->cloned()) {
+	      // we must clone
+	      Expr *orig_headtp = headtp;
+	      headtp = (CExpr *)headtp->clone();
+	      orig_headtp->dec();
+      }
+      else
+	      headtp->setcloned();
+#ifdef DEBUG_APPS
+      char tmp[100];
+      sprintf(tmp,"(%d) ", app_rec_level++);
+      cout << tmp << "{ headtp = ";
+      headtp->debug();
+#endif
+      char c;
+      vector<HoleExpr *> holes;
+      vector<bool> free_holes;
+      while ((c = non_ws()) != ')') {
+	our_ungetc(c);
+	if (headtp->getop() != PI)
+	  report_error(string("The type of an applied term is not ")
+		       + string("a pi-type.\n")
+		       + string("\n1. the type of the term: ")
+		       + headtp->toString()
+		       + (headtrm ? (string("\n2. the term: ")
+				     + headtrm->toString())
+			  : string("")));
+	SymExpr *headtp_var = (SymExpr *)headtp->kids[0];
+	Expr *headtp_domain = headtp->kids[1];
+	Expr *headtp_range = headtp->kids[2];
+	if (headtp_domain->getop() == RUN) {
+	  CExpr *run = (CExpr *)headtp_domain;
+	  Expr *code = run->kids[0];
+	  Expr *expected_result = run->kids[1];
+	  Expr *computed_result = call_run_code(code);
+	  if (!computed_result)
+	    report_error(string("A side condition failed.\n")
+			 +string("1. the side condition: ")
+			 +code->toString());
+	  if (!expected_result->defeq(computed_result))
+	    report_error(string("The expected result of a side condition ")
+			 +string("does not match the computed result.\n")
+			 +string("1. expected result: ")
+			 +expected_result->toString()
+			 +string("\n2. computed result: ")
+			   +computed_result->toString());
+	  computed_result->dec();
+	}
+	else {
+	  // check an argument
+      bool var_in_range = headtp->get_free_in();//headtp_range->free_in(headtp_var);
+	  bool arg_is_hole = false;
+	  bool consumed_arg = false;
+
+	  bool create_arg = (create || var_in_range);
+
+	  headtp_domain->inc();
+
+	  if (tail_calls && !create_arg && headtp_range->getop() != PI) {
+	    // we can make a tail call to check() here.
+
+	    if (expected) {
+	      if (!expected->defeq(headtp_range))
+		      report_error(string("The type expected for an application ")
+			          + string("does not match the computed type.\n")
+			          + string("1. The expected type: ")
+			          + expected->toString()
+			          + string("\n2. The computed type: ")
+			          + headtp_range->toString()
+			          + (headtrm ? (string("\n3. the application: ")
+					        + headtrm->toString())
+				    : string("")));
+	      expected->dec();
+	    }
+	    else {
+	      headtp_range->inc();
+	      *computed = headtp_range;
+	    }
+
+	    headtp->dec();
+
+	    // same as below
+	    for (int i = 0, iend = holes.size(); i < iend; i++) {
+	      if (!holes[i]->val)
+		/* if the hole is free in the domain, we will be filling
+		   it in when we make our tail call, since the domain
+		   is the expected type for the argument */
+		if (!headtp_domain->free_in(holes[i]))
+		  report_error(string("A hole was left unfilled after ")
+			       +string("checking an application.\n"));
+	      holes[i]->dec();
+	    }
+
+	    create = false;
+	    expected = headtp_domain;
+	    computed = NULL;
+	    is_hole = NULL; // the argument cannot be a hole
+	    // return_pos is unchanged
+
+#ifdef DEBUG_APPS
+	    cout << "Making tail call.\n";
+#endif
+
+	    goto start_check;
+	  }
+
+	    Expr *arg = check(create_arg, headtp_domain, NULL, &arg_is_hole);
+	    eat_excess(prev);
+	    if (create) {
+#ifndef USE_FLAT_APP
+	      headtrm = new CExpr(APP, headtrm, arg);
+#else
+        Expr* orig_headtrm = headtrm;
+        headtrm = Expr::make_app( headtrm, arg );
+        if( orig_headtrm->getclass()==CEXPR ){
+          orig_headtrm->dec();
+        }
+#endif
+	      consumed_arg = true;
+	    }
+	    if (var_in_range) {
+	      Expr *tmp = arg->followDefs();
+	      tmp->inc();
+	      headtp_var->val = tmp;
+	    }
+	    if (arg_is_hole) {
+	      if (consumed_arg)
+	        arg->inc();
+	      else
+	        consumed_arg = true; // not used currently
+#ifdef DEBUG_HOLES
+	        cout << "An argument is a hole: ";
+	        arg->debug();
+#endif
+	          holes.push_back((HoleExpr *)arg);
+	        }
+	      }
+	      headtp_range->inc();
+	      headtp->dec();
+	      headtp = (CExpr *)headtp_range;
+      }
+      open_parens--;
+
+      // check for remaining RUN in the head's type after all the arguments
+
+      if (headtp->getop() == PI && headtp->kids[1]->getop() == RUN) {
+	      CExpr *run = (CExpr *)headtp->kids[1];
+	      Expr *code = run->kids[0]->followDefs();
+	      Expr *expected_result = run->kids[1];
+	      Expr *computed_result = call_run_code(code);
+	      if (!computed_result)
+	        report_error(string("A side condition failed.\n")
+		            +string("1. the side condition: ")+code->toString());
+	      if (!expected_result->defeq(computed_result))
+	        report_error(string("The expected result of a side condition ")
+		            +string("does not match the computed result.\n")
+		            +string("1. expected result: ")
+		            +expected_result->toString()
+		            +string("\n2. computed result: ")
+		            +computed_result->toString());
+	      Expr *tmp = headtp->kids[2];
+	      tmp->inc();
+	      headtp->dec();
+	      headtp = (CExpr *)tmp;
+	      computed_result->dec();
+      }
+
+#ifdef DEBUG_APPS
+      for (int i = 0, iend = holes.size(); i < iend; i++) {
+	      cout << tmp << "hole ";
+	      holes[i]->debug();
+      }
+      cout << "}";
+      app_rec_level--;
+#endif
+
+      Expr *ret = 0;
+      if (expected) {
+        if (!expected->defeq(headtp)){
+	        report_error(string("The type expected for an application does not")
+		            + string(" match the computed type.(2) \n")
+		            + string("1. The expected type: ")
+		            + expected->toString()
+		            + string("\n2. The computed type: ")
+		            + headtp->toString()
+		            + (headtrm ? (string("\n3. the application: ")
+				          + headtrm->toString())
+			        : string("")));
+
+        }
+	      expected->dec();
+	      headtp->dec();
+	      if (create)
+	        ret = headtrm;
+      }
+      else {
+	      *computed = headtp;
+	      if (create)
+	        ret = headtrm;
+      }
+
+      /* do this check here to give the defeq() call above a
+	 chance to fill in some holes */
+      for (int i = 0, iend = holes.size(); i < iend; i++) {
+        if (!holes[i]->val){
+          if( inAsc ){
+#ifdef DEBUG_HOLES
+            std::cout << "Ascription Hole: ";
+            holes[i]->print( std::cout );
+            std::cout << std::endl;
+#endif
+            ascHoles.push_back( holes[i] );
+          }else{
+	          report_error(string("A hole was left unfilled after checking")
+		              +string(" an application (2).\n"));
+          }
+        }
+	      holes[i]->dec();
+      }
+
+      return ret;
+
+    } // end application case
+  }
+  }
+  case EOF:
+    report_error("Unexpected end of file.");
+    break;
+
+  case '_':
+    if (!is_hole)
+      report_error("A hole is being used in a disallowed position.");
+    *is_hole = true;
+    if (expected)
+      expected->dec();
+    return new HoleExpr();
+  case '0':
+  case '1':
+  case '2':
+  case '3':
+  case '4':
+  case '5':
+  case '6':
+  case '7':
+  case '8':
+  case '9': {
+    our_ungetc(d);
+    string v;
+    char c;
+    while (isdigit(c = our_getc()))
+      v.push_back(c);
+    bool parseMpq = false;
+    string v2;
+    if( c=='/' )
+    {
+      parseMpq = true;
+      v.push_back( c );
+      while(isdigit(c = our_getc()))
+        v.push_back(c);
+    }
+    our_ungetc(c);
+
+
+    Expr *i = 0;
+    if (create) {
+      if( parseMpq )
+      {
+        mpq_t num;
+        mpq_init(num);
+        if (mpq_set_str(num,v.c_str(),10) == -1)
+	        report_error("Error reading a numeral.");
+        i = new RatExpr(num);
+      }
+      else
+      {
+        mpz_t num;
+        if (mpz_init_set_str(num,v.c_str(),10) == -1)
+	        report_error("Error reading a numeral.");
+        i = new IntExpr(num);
+      }
+    }
+
+    if (expected) {
+      if( ( !parseMpq && expected != statMpz ) || ( parseMpq && expected != statMpq ) )
+	      report_error(string("We parsed a numeric literal, but were ")
+		          +string("expecting a term of a different type.\n")
+		          +string("1. the expected type: ")+expected->toString());
+      expected->dec();
+      if (create)
+	      return i;
+      return 0;
+    }
+    else {
+      if( parseMpq )
+      {
+        statMpq->inc();
+        *computed = statMpq;
+        if (create)
+	        return i;
+        return statMpq;
+      }
+      else
+      {
+        statMpz->inc();
+        *computed = statMpz;
+        if (create)
+	        return i;
+        return statMpz;
+      }
+    }
+  }
+  default: {
+    our_ungetc(d);
+    string id(prefix_id());
+#ifdef USE_HASH_MAPS
+    Expr *ret = symbols[id];
+    Expr *rettp = symbol_types[id];
+#else
+    pair<Expr *, Expr *> p = symbols->get(id.c_str());
+    Expr *ret = p.first;
+    Expr *rettp = p.second;
+#endif
+    if (!ret)
+      report_error(string("Undeclared identifier: ")+id);
+    if (expected) {
+      if (!expected->defeq(rettp))
+	report_error(string("The type expected for a symbol does not")
+		     + string(" match the symbol's type.\n")
+		     + string("1. The symbol: ")
+		     + id
+		     + string("\n2. The expected type: ")
+		     + expected->toString()
+		     + string("\n3. The symbol's type: ")
+		     + rettp->toString());
+      expected->dec();
+      if (create) {
+	      ret->inc();
+	      return ret;
+      }
+      return 0;
+    }
+    else {
+      if( computed ){
+        *computed = rettp;
+        (*computed)->inc();
+      }
+      if (create) {
+	      ret->inc();
+	      return ret;
+      }
+      return 0;
+    }
+  }
+  }
+
+  report_error("Unexpected operator at the start of a term.");
+  return 0;
+}
+
+#ifdef USE_HASH_MAPS
+void discard_old_symbol(const string &id) {
+  Expr *tmp = symbols[id];
+  if (tmp)
+    tmp->dec();
+  tmp = symbol_types[id];
+  if (tmp)
+    tmp->dec();
+}
+#endif
+
+int check_time;
+
+void check_file(const char *_filename, args a, sccwriter* scw, libwriter* lw) {
+  int prev_linenum = linenum;
+  int prev_colnum = colnum;
+  const char *prev_filename = filename;
+  FILE * prev_curfile = curfile;
+
+  // from code.h
+  dbg_prog = a.show_runs;
+  run_scc = a.run_scc;
+  tail_calls = !a.no_tail_calls;
+
+  std::string f;
+  if (strcmp(_filename,"stdin") == 0) {
+    curfile = stdin;
+    f = std::string(_filename);
+  }
+  else {
+    if (prev_curfile) {
+      f = std::string(prev_filename);
+#ifdef _MSC_VER
+	    std::string str( f );
+	    for( int n=str.length(); n>=0; n-- ){
+		    if( str[n]=='\\' || str[n]=='/' ){
+          str = str.erase( n, str.length()-n );
+          break;
+		    }
+	    }
+	    char *tmp = (char*)str.c_str();
+#else
+      // Note: dirname may modify its argument, so we create a non-const copy.
+      char *f_copy = strdup(f.c_str());
+      std::string str = std::string(dirname(f_copy));
+      free(f_copy);
+#endif
+            f = str + std::string("/") + std::string(_filename);
+    } else {
+      f = std::string(_filename);
+    }
+    curfile = fopen(f.c_str(), "r");
+    if (!curfile)
+      report_error(string("Could not open file \"") + f +
+                   string("\" for reading.\n"));
+  }
+
+  linenum = 1;
+  colnum = 1;
+  filename = f.c_str();
+
+  char c;
+  while ((c = non_ws()) && c!=EOF ) {
+    if( c == '(' )
+    {
+      char d;
+      switch ((d = non_ws())) {
+      case 'd':
+        char b;
+        if ((b = our_getc()) != 'e')
+	        report_error(string("Unexpected start of command."));
+
+        switch ((b = our_getc())) {
+          case 'f': {// expecting "define"
+
+	          if (our_getc() != 'i' || our_getc() != 'n' || our_getc() != 'e')
+	            report_error(string("Unexpected start of command."));
+
+	          string id(prefix_id());
+	          Expr *ttp;
+	          int prevo = open_parens;
+	          Expr *t = check(true, 0, &ttp, NULL, true);
+	          eat_excess(prevo);
+
+	          int o = ttp->followDefs()->getop();
+	          if (o == KIND)
+	            report_error(string("Kind-level definitions are not supported.\n"));
+	          SymSExpr *s = new SymSExpr(id);
+	          s->val = t;
+#ifdef USE_HASH_MAPS
+	          discard_old_symbol(id);
+	          symbols[id] = s;
+	          symbol_types[id] = ttp;
+#else
+	          pair<Expr *, Expr *> prev =
+	            symbols->insert(id.c_str(), pair<Expr *, Expr *>(s,ttp));
+	          if (prev.first)
+	            prev.first->dec();
+	          if (prev.second)
+	            prev.second->dec();
+#endif
+	        break;
+          }
+          case 'c': {// expecting "declare"
+	          if (our_getc() != 'l' || our_getc() != 'a' || our_getc() != 'r'
+	              || our_getc() != 'e')
+	            report_error(string("Unexpected start of command."));
+
+	          string id(prefix_id());
+	          Expr *ttp;
+	          int prevo = open_parens;
+	          Expr *t = check(true, 0, &ttp, NULL, true);
+	          eat_excess(prevo);
+
+	          ttp = ttp->followDefs();
+	          if (ttp->getop() != TYPE && ttp->getop() != KIND)
+	            report_error(string("The expression declared for \"")
+		                +id+string("\" is neither\na type nor a kind.\n")
+		                +string("1. The expression: ")
+		                +t->toString()
+		                +string("\n2. Its classifier (should be \"type\" ")
+		                +string("or \"kind\"): ")+ttp->toString());
+	          ttp->dec();
+	          SymSExpr *s = new SymSExpr(id);
+#ifdef USE_HASH_MAPS
+	          discard_old_symbol(id);
+	          symbols[id] = s;
+	          symbol_types[id] = t;
+#else
+	          pair<Expr *, Expr *> prev =
+	            symbols->insert(id.c_str(), pair<Expr *, Expr *>(s,t));
+            if( lw )
+              lw->add_symbol( s, t );
+	          if (prev.first)
+	            prev.first->dec();
+	          if (prev.second)
+	            prev.second->dec();
+#endif
+	          break;
+            }
+            default:
+	            report_error(string("Unexpected start of command."));
+            } // switch((b = our_getc())) following "de"
+         break;
+    case 'c': {
+      if (our_getc() != 'h' || our_getc() != 'e' || our_getc() != 'c' || our_getc() != 'k')
+	      report_error(string("Unexpected start of command."));
+      if( run_scc ){
+        init_compiled_scc();
+      }
+      Expr *computed;
+      big_check = true;
+      int prev = open_parens;
+      (void)check(false, 0, &computed, NULL, true);
+
+      //print out ascription holes
+      for( int a=0; a<(int)ascHoles.size(); a++ ){
+#ifdef PRINT_SMT2
+        print_smt2( ascHoles[a], std::cout );
+#else
+        ascHoles[a]->print( std::cout );
+#endif
+        std::cout << std::endl;
+      }
+      if( !ascHoles.empty() )
+        std::cout << std::endl;
+      ascHoles.clear();
+
+      //clean up local symbols
+      for( int a=0; a<(int)local_sym_names.size(); a++ ){
+#ifdef USE_HASH_MAPS
+#else
+        symbols->insert( local_sym_names[a].first.c_str(), local_sym_names[a].second );
+#endif
+      }
+      local_sym_names.clear();
+      mark_map.clear();
+
+      eat_excess(prev);
+
+      computed->dec();
+      //cleanup();
+      //exit(0);
+      break;
+    }
+    case 'o': { // opaque case
+      if (our_getc() != 'p' || our_getc() != 'a' || our_getc() != 'q'
+	        || our_getc() != 'u' || our_getc() != 'e')
+	      report_error(string("Unexpected start of command."));
+
+      string id(prefix_id());
+      Expr *ttp;
+      int prevo = open_parens;
+      (void)check(false, 0, &ttp, NULL, true);
+      eat_excess(prevo);
+
+      int o = ttp->followDefs()->getop();
+      if (o == KIND)
+	      report_error(string("Kind-level definitions are not supported.\n"));
+      SymSExpr *s = new SymSExpr(id);
+#ifdef USE_HASH_MAPS
+	    discard_old_symbol(id);
+	    symbols[id] = s;
+	    symbol_types[id] = ttp;
+#else
+	    pair<Expr *, Expr *> prev =
+	      symbols->insert(id.c_str(), pair<Expr *, Expr *>(s,ttp));
+	    if (prev.first)
+	      prev.first->dec();
+	    if (prev.second)
+	      prev.second->dec();
+#endif
+        break;
+      }
+      case 'r': { // run case
+        if (our_getc() != 'u' || our_getc() != 'n')
+	        report_error(string("Unexpected start of command."));
+        Expr *code = read_code();
+        check_code(code);
+        cout << "[Running-sc ";
+        code->print(cout);
+        Expr *tmp = run_code(code);
+        cout << "] = \n";
+        if (tmp) {
+	        tmp->print(cout);
+	        tmp->dec();
+        }
+        else
+	        cout << "fail";
+        cout << "\n";
+        code->dec();
+        break;
+      }
+      case 'p': { // program case
+        if (our_getc() != 'r' || our_getc() != 'o' || our_getc() != 'g'
+	         || our_getc() != 'r' || our_getc() != 'a' || our_getc() != 'm')
+	        report_error(string("Unexpected start of command."));
+
+        string progstr(prefix_id());
+        SymSExpr *prog = new SymSExpr(progstr);
+        if (progs.find(progstr) != progs.end())
+	        report_error(string("Redeclaring program ")+progstr+string("."));
+        progs[progstr] = prog;
+        eat_char('(');
+        char d;
+        vector<Expr *> vars;
+        vector<Expr *> tps;
+        Expr *tmp;
+        while ((d = non_ws()) != ')') {
+	        our_ungetc(d);
+	        eat_char('(');
+	        string varstr = prefix_id();
+#ifdef USE_HASH_MAPS
+	        if (symbols.find(varstr) != symbols.end())
+#else
+          if (symbols->get(varstr.c_str()).first != NULL)
+#endif
+	          report_error(string("A program variable is already declared")
+		              +string(" (as a constant).\n1. The variable: ")
+		              +varstr);
+	        Expr *var = new SymSExpr(varstr);
+	        vars.push_back(var);
+	        statType->inc();
+	        int prev = open_parens;
+	        Expr *tp = check(true, NULL, &tmp, 0, true);
+          if( tp->getclass()==SYMS_EXPR ){
+#ifdef USE_HASH_MAPS
+            Expr *tptp = symbol_types[((SymSExpr*)tp)->s];
+#else
+            pair<Expr *, Expr *> p = symbols->get(((SymSExpr*)tp)->s.c_str());
+            Expr *tptp = p.second;
+#endif
+            if( !tptp->isType( statType ) ){
+              report_error(string("Bad argument for side condition"));
+            }
+          }else{
+            if (!tp->isDatatype()){
+	            report_error(string("Type for a program variable is not a ")
+		                +string("datatype.\n1. the type: ")+tp->toString());
+            }
+          }
+	        eat_excess(prev);
+
+	        tps.push_back(tp);
+	        eat_char(')');
+
+#ifdef USE_HASH_MAPS
+	        symbols[varstr] = var;
+	        symbol_types[varstr] = tp;
+#else
+	        symbols->insert(varstr.c_str(), pair<Expr *, Expr *>(var,tp));
+#endif
+        }
+
+        if (!vars.size())
+	        report_error("A program lacks input variables.");
+
+        statType->inc();
+        int prev = open_parens;
+        Expr *progtp = check(true,statType,&tmp,0, true);
+        eat_excess(prev);
+
+        if (!progtp->isDatatype())
+	        report_error(string("Return type for a program is not a")
+		            +string(" datatype.\n1. the type: ")+progtp->toString());
+
+        Expr *progcode = read_code();
+
+        for (int i = vars.size() - 1, iend = 0; i >= iend; i--) {
+	        vars[i]->inc(); // used below for the program code (progcode)
+	        progtp = new CExpr(PI, vars[i], tps[i], progtp);
+          progtp->calc_free_in();
+        }
+
+        // just put the type here for type checking.  Make sure progtp is kid 0.
+        prog->val = new CExpr(PROG, progtp);
+
+        check_code(progcode);
+
+        progcode = new CExpr(PROG, progtp, new CExpr(PROGVARS, vars), progcode);
+        //if compiling side condition code, give this code to the side condition code writer
+        if( a.compile_scc ){
+          if( scw ){
+            scw->add_scc( progstr, (CExpr*)progcode );
+          }
+        }
+
+	// remove the variables from the symbol table.
+        for (int i = 0, iend = vars.size(); i < iend; i++) {
+	        string &s = ((SymSExpr *)vars[i])->s;
+
+#ifdef USE_HASH_MAPS
+	        symbols[s] = NULL;
+	        symbol_types[s] = NULL;
+#else
+	        symbols->insert(s.c_str(), pair<Expr*,Expr*>(NULL,NULL));
+#endif
+        }
+
+        progtp->inc();
+        prog->val->dec();
+
+        prog->val = progcode;
+
+        break;
+      }
+
+      default:
+	      report_error(string("Unexpected start of command."));
+      } // switch((d = non_ws())
+
+      eat_char(')');
+    } // while
+    else
+    {
+      if( c != ')' )
+      {
+        char c2[2];
+        c2[1] = 0;
+        c2[0] = c;
+        string syn = string("Bad syntax (mismatched parentheses?): ");
+        syn.append(string(c2));
+        report_error(syn);
+      }
+    }
+  }
+  if (curfile != stdin)
+    fclose(curfile);
+  linenum = prev_linenum;
+  colnum = prev_colnum;
+  filename = prev_filename;
+  curfile = prev_curfile;
+
+}
+
+class Deref : public Trie<pair<Expr *, Expr *> >::Cleaner {
+public:
+  ~Deref() {}
+  void clean(pair<Expr *, Expr *> p) {
+    Expr *tmp = p.first;
+    if (tmp) {
+#ifdef DEBUG
+      cout << "Cleaning up ";
+      tmp->debug();
+#endif
+      tmp->dec();
+    }
+    tmp = p.second;
+    if (tmp) {
+#ifdef DEBUG
+      cout << " : ";
+      tmp->debug();
+#endif
+      tmp->dec();
+    }
+#ifdef DEBUG
+      cout << "\n";
+#endif
+  }
+};
+
+template <>
+Trie<pair<Expr *, Expr *> >::Cleaner *
+Trie<pair<Expr *, Expr *> >::cleaner = new Deref;
+
+void cleanup() {
+  symmap::iterator i, iend;
+#ifdef USE_HASH_MAPS
+  Expr *tmp;
+  for (i = symbols.begin(), iend = symbols.end(); i != iend; i++) {
+    tmp = i->second;
+    if (tmp) {
+#ifdef DEBUG
+      cout << "Cleaning up " << i->first << " : ";
+      tmp->debug();
+#endif
+      tmp->dec();
+    }
+  }
+  for (i = symbol_types.begin(), iend = symbol_types.end(); i != iend; i++) {
+    tmp = i->second;
+    if (tmp) {
+#ifdef DEBUG
+      cout << "Cleaning up " << i->first << " : ";
+      tmp->debug();
+#endif
+      tmp->dec();
+    }
+  }
+#else
+  delete symbols;
+#endif
+
+  // clean up programs
+
+  symmap2::iterator j, jend;
+  for (j = progs.begin(), jend = progs.end(); j != jend; j++) {
+    SymExpr *p = j->second;
+    if (p) {
+      Expr *progcode = p->val;
+      p->val = NULL;
+      progcode->dec();
+      p->dec();
+    }
+  }
+}
+
+void init() {
+#ifdef USE_HASH_MAPS
+  string tp("type");
+  symbols[tp] = statType;
+  symbol_types[tp] = statKind;
+  string mpz("mpz");
+  symbols[mpz] = statMpz;
+  symbol_types[mpz] = statType;
+  statType->inc();
+  sym
+#else
+  symbols->insert("type", pair<Expr *, Expr *>(statType, statKind));
+  statType->inc();
+  symbols->insert("mpz", pair<Expr *, Expr *>(statMpz, statType));
+  symbols->insert("mpq", pair<Expr *, Expr *>(statMpq, statType));
+#endif
+}
diff --git a/proofs/lfsc_checker/check.h b/proofs/lfsc_checker/check.h
new file mode 100644
index 0000000..756bb4d
--- /dev/null
+++ b/proofs/lfsc_checker/check.h
@@ -0,0 +1,167 @@
+#ifndef SC2_CHECK_H
+#define SC2_CHECK_H
+
+#include "expr.h"
+#include "trie.h"
+
+#ifdef _MSC_VER
+#include <hash_map>
+#include <stdio.h>
+#else
+#include <ext/hash_map>
+#endif
+
+#include <stack>
+#include <string>
+#include <map>
+
+// see the help message in main.cpp for explanation
+typedef struct args {
+  std::vector<std::string> files;
+  bool show_runs; 
+  bool no_tail_calls; 
+  bool compile_scc;
+  bool compile_scc_debug;
+  bool run_scc;
+  bool use_nested_app;
+  bool compile_lib;
+} args;
+
+extern int check_time;
+
+class sccwriter;
+class libwriter;
+
+void init();
+
+void check_file(const char *_filename, args a, sccwriter* scw = NULL, libwriter* lw = NULL);
+
+void cleanup();
+
+extern char our_getc_c;
+
+void report_error(const std::string &);
+
+extern int linenum;
+extern int colnum;
+extern const char *filename;
+extern FILE *curfile;
+
+inline void our_ungetc(char c) {
+  if (our_getc_c != 0)
+    report_error("Internal error: our_ungetc buffer full");
+  our_getc_c = c;
+  if (c == '\n') {
+    linenum--;
+    colnum=-1;
+  }
+  else
+    colnum--;
+}
+
+inline char our_getc() {
+  char c;
+  if (our_getc_c > 0) {
+    c = our_getc_c;
+    our_getc_c = 0;
+  }
+  else{
+#ifndef __linux__
+	c = fgetc(curfile);
+#else
+    c = fgetc_unlocked(curfile);
+#endif
+  }
+  switch(c) {
+  case '\n':
+    linenum++;
+#ifdef DEBUG_LINES
+    std::cout << "line " << linenum << "." << std::endl;
+#endif
+    colnum = 1;
+    break;
+  case char(EOF):
+    break;
+  default:
+    colnum++;
+  }
+
+  return c;
+}
+
+// return the next character that is not whitespace
+inline char non_ws() {
+  char c;
+  while(isspace(c = our_getc()));
+  if (c == ';') {
+    // comment to end of line
+    while((c = our_getc()) != '\n' && c != char(EOF));
+    return non_ws();
+  }
+  return c;
+}
+  
+inline void eat_char(char expected) {
+  if (non_ws() != expected) {
+    char tmp[80];
+    sprintf(tmp,"Expecting a \'%c\'",expected);
+    report_error(tmp);
+  }
+}
+
+extern int IDBUF_LEN;
+extern char idbuf[];
+
+inline const char *prefix_id() {
+  int i = 0;
+  char c = idbuf[i++] = non_ws();
+  while (!isspace(c) && c != '(' && c != ')' && c != char(EOF)) {
+    if (i == IDBUF_LEN)
+      report_error("Identifier is too long");
+    
+    idbuf[i++] = c = our_getc();
+  }
+  our_ungetc(c);
+  idbuf[i-1] = 0;
+  return idbuf;
+}
+
+#ifdef _MSC_VER
+typedef std::hash_map<std::string, Expr *> symmap;
+typedef std::hash_map<std::string, SymExpr *> symmap2;
+#else
+typedef __gnu_cxx::hash_map<std::string, Expr *> symmap;
+typedef __gnu_cxx::hash_map<std::string, SymExpr *> symmap2;
+#endif
+extern symmap2 progs;
+extern std::vector< Expr* > ascHoles;
+
+#ifdef USE_HASH_MAPS
+extern symmap symbols;
+extern symmap symbol_types;
+#else
+extern Trie<std::pair<Expr *, Expr *> > *symbols;
+#endif
+
+extern std::map<SymExpr*, int > mark_map;
+
+extern std::vector< std::pair< std::string, std::pair<Expr *, Expr *> > > local_sym_names;
+
+#ifndef _MSC_VER
+namespace __gnu_cxx
+{
+  template<> struct hash< std::string >
+  {
+    size_t operator()( const std::string& x ) const
+    {
+      return hash< const char* >()( x.c_str() );
+    }
+  };
+}
+#endif
+
+extern Expr *statMpz;
+extern Expr *statMpq;
+extern Expr *statType;
+
+#endif
diff --git a/proofs/lfsc_checker/chunking_memory_management.h b/proofs/lfsc_checker/chunking_memory_management.h
new file mode 100644
index 0000000..bdf938d
--- /dev/null
+++ b/proofs/lfsc_checker/chunking_memory_management.h
@@ -0,0 +1,157 @@
+///////////////////////////////////////////////////////////////////////////////
+//                                                                           //
+//  Copyright (C) 2002 by the Board of Trustees of Leland Stanford           //
+//  Junior University.  See LICENSE for details.                             //
+//                                                                           //
+///////////////////////////////////////////////////////////////////////////////
+/* chunking_memory_management.h 
+   Aaron Stump, 6/11/99
+
+   This file contains macros that allow you easily to add chunking
+   memory management for classes.
+
+   RCS Version: $Id: chunking_memory_management.h,v 1.1 2004/11/12 16:26:19 stump Exp $
+
+*/
+#ifndef _chunking_memory_management_h_
+#define _chunking_memory_management_h_
+
+#include <assert.h>
+
+/************************************************************************
+ * MACRO: ADD_CHUNKING_MEMORY_MANAGEMENT_H()
+ * Aaron Stump, 6/11/99
+ *
+ * ABSTRACT: This macro should be called exactly once inside the body
+ * of the declaration of the class THE_CLASS to add chunking memory
+ * management for the class.  That class should not itself declare the
+ * operators new and delete.  The macro
+ * C_MACROS__ADD_CHUNKING_MEMORY_MANAGEMENT_CC should be called with
+ * the same value for THE_CLASS in a .cc file for that class.
+ *
+ * NOTE that the access specifier will be public after calling this 
+ * macro.
+ *
+ * THE_FIELD is a field of the class to use for the next pointer in the
+ * free list data structure.  It can be of any type, but must have enough
+ * space to hold a pointer.
+ ************************************************************************/
+#define C_MACROS__ADD_CHUNKING_MEMORY_MANAGEMENT_H(THE_CLASS,THE_FIELD)	\
+private:\
+  static unsigned C_MACROS__CHUNK_SIZE;\
+  static unsigned C_MACROS__BLOCK_SIZE;\
+  static void *C_MACROS__freelist;\
+  static bool C_MACROS__initialized;\
+  static char *C_MACROS__next_free_block;\
+  static char *C_MACROS__end_of_current_chunk;\
+  \
+  static void C_MACROS__allocate_new_chunk();\
+\
+public:\
+  static void C_MACROS__init_chunks() {\
+    if (!C_MACROS__initialized) {\
+      C_MACROS__allocate_new_chunk();\
+      C_MACROS__initialized = true;\
+    }\
+  }\
+\
+  static void *operator new(size_t size, void *h = NULL);\
+  static void operator delete(void *ptr)\
+
+
+/************************************************************************
+ * MACRO: ADD_CHUNKING_MEMORY_MANAGEMENT_CC()
+ * Aaron Stump, 6/11/99
+ *
+ * ABSTRACT: This macro should be called exactly once in a .cc file
+ * for the class THE_CLASS to add chunking memory management for the
+ * class.  This macro should be called with the same value for
+ * THE_CLASS as was used in calling
+ * C_MACROS__ADD_CHUNKING_MEMORY_MANAGEMENT_H in the body of the
+ * declaration of THE_CLASS.  THE_CHUNK_SIZE is the number of blocks
+ * of memory to get at once using malloc().  A block is the portion
+ * of memory needed for one instance of THE_CLASS.
+ *
+ *
+ * IMPLEMENTATION:
+ ************************************************************************
+ * FUNCTION: allocate_new_chunk()
+ * Aaron Stump, 6/8/99
+ *
+ * ABSTRACT: This method allocates a new chunk of memory to use for
+ * allocating instances of THE_CLASS.
+ ************************************************************************
+ * FUNCTION: new()
+ * Aaron Stump, 6/8/99
+ *
+ * ABSTRACT: This allocator uses chunks for more efficient allocation.
+ ************************************************************************
+ * FUNCTION: delete()
+ * Aaron Stump, 6/8/99
+ *
+ * ABSTRACT: This delete() puts the chunk pointed to by ptr on the 
+ * freelist.
+ ************************************************************************
+ * Chunking_Memory_Management_Initializer and its static instance are used
+ * to call the static init_chunks() method for THE_CLASS. 
+ ************************************************************************/
+#define C_MACROS__ADD_CHUNKING_MEMORY_MANAGEMENT_CC(THE_CLASS,THE_FIELD,THE_CHUNK_SIZE) \
+unsigned THE_CLASS::C_MACROS__CHUNK_SIZE = THE_CHUNK_SIZE;\
+\
+unsigned THE_CLASS::C_MACROS__BLOCK_SIZE = sizeof(THE_CLASS);\
+\
+void * THE_CLASS::C_MACROS__freelist = NULL;\
+char * THE_CLASS::C_MACROS__next_free_block = NULL;\
+char * THE_CLASS::C_MACROS__end_of_current_chunk = NULL;\
+bool THE_CLASS::C_MACROS__initialized = false;\
+\
+void \
+THE_CLASS::C_MACROS__allocate_new_chunk() {\
+\
+  unsigned tmp = C_MACROS__CHUNK_SIZE * C_MACROS__BLOCK_SIZE;\
+  char *chunk = (char *)malloc(tmp);\
+  \
+  assert (chunk != NULL);			\
+\
+  C_MACROS__next_free_block = chunk;\
+  C_MACROS__end_of_current_chunk = chunk + tmp;\
+}\
+\
+void * \
+THE_CLASS::operator new(size_t size, void *h) {\
+  (void)size; /* size should always be _BLOCK_SIZE */\
+\
+  if (h != NULL)\
+    /* we're being told what memory we should use */\
+    return h;\
+\
+  char *new_block;\
+\
+  if (C_MACROS__freelist) {\
+    /* we have a block on the freelist that we can use */\
+    new_block = (char *)C_MACROS__freelist;			\
+    C_MACROS__freelist = (void *)((THE_CLASS *)new_block)->THE_FIELD;	\
+  }\
+  else {\
+    /* we have to get a new block from a chunk (which we may */\
+    /* have to allocate*/\
+    \
+    if (C_MACROS__next_free_block == C_MACROS__end_of_current_chunk)\
+      C_MACROS__allocate_new_chunk();\
+    \
+    new_block = C_MACROS__next_free_block;\
+    C_MACROS__next_free_block += C_MACROS__BLOCK_SIZE;\
+  }\
+  \
+  return new_block;\
+}\
+\
+void \
+THE_CLASS::operator delete(void *ptr) {\
+  void **f = (void **)&((THE_CLASS *)ptr)->THE_FIELD;	\
+  *f = C_MACROS__freelist;	\
+  C_MACROS__freelist = ptr;				      \
+}
+
+#endif
+
diff --git a/proofs/lfsc_checker/code.cpp b/proofs/lfsc_checker/code.cpp
new file mode 100644
index 0000000..ee143a7
--- /dev/null
+++ b/proofs/lfsc_checker/code.cpp
@@ -0,0 +1,1385 @@
+#include "check.h"
+#include "code.h"
+#include <string>
+
+#include "scccode.h"
+
+using namespace std;
+
+string *eat_str(const char *str, bool check_end = true) {
+  string *s = new string();
+  char c, d;
+  while ((c = *str++)) {
+    d = our_getc();
+    if (c != d) {
+      our_ungetc(d);
+      return s;
+    }
+    s->push_back(d);
+  }
+
+  if (check_end &&
+      (d = our_getc()) != ' ' && d != '(' && d != '\n' && d != '\t') {
+    our_ungetc(d);
+    return s;
+  }
+
+  delete s;
+  return 0;
+}
+
+SymSExpr *read_ctor() {
+  string id(prefix_id());
+#ifdef USE_HASH_TABLES
+  Expr *s = symbols[id];
+  Expr *stp = symbol_types[id];
+#else
+  pair<Expr *, Expr *> p = symbols->get(id.c_str());
+  Expr *s = p.first;
+  Expr *stp = p.second;
+#endif
+
+  if (!stp)
+    report_error("Undeclared identifier parsing a pattern.");
+
+  if (s->getclass() != SYMS_EXPR || ((SymExpr *)s)->val)
+    report_error("The head of a pattern is not a constructor.");
+
+  s->inc();
+
+  return (SymSExpr *)s;
+}
+
+Expr *read_case() {
+  eat_char('(');
+  Expr *pat = NULL;
+  vector<SymSExpr *> vars;
+
+#ifdef USE_HASH_MAPS
+  vector<Expr *>prevs;
+#else
+  vector<pair<Expr *,Expr *> >prevs;
+#endif
+  char d = non_ws();
+  switch(d) {
+  case '(': {
+    // parse application
+    SymSExpr *s = read_ctor();
+    pat = s;
+    char c;
+    while ((c = non_ws()) != ')') {
+	    our_ungetc(c);
+	    string varstr(prefix_id());
+	    SymSExpr *var = new SymSExpr(varstr);
+	    vars.push_back(var);
+#ifdef USE_HASH_MAPS
+	    prevs.push_back(symbols[varstr]);
+	    symbols[varstr] = var;
+#else
+	    prevs.push_back(symbols->insert(varstr.c_str(),
+					    pair<Expr *, Expr *>(var,NULL)));
+#endif
+#ifndef USE_FLAT_APP
+	    pat = new CExpr(APP,pat,var);
+#else
+      Expr* orig_pat = pat;
+      pat = Expr::make_app(pat,var);
+      if( orig_pat->getclass()==CEXPR ){
+        orig_pat->dec();
+      }
+#endif
+    }
+    break;
+  }
+  // default case
+  case 'd': {
+    delete eat_str("efault");
+  }
+    break;
+  case EOF:
+    report_error("Unexpected end of file parsing a pattern.");
+    break;
+  default:
+    // could be an identifier
+    our_ungetc(d);
+    pat = read_ctor();
+    break;
+  }
+
+  Expr *ret = read_code();
+  if( pat )
+    ret = new CExpr(CASE, pat, ret);
+
+  for (int i = 0, iend = prevs.size(); i < iend; i++) {
+    string &s = vars[i]->s;
+#ifdef USE_HASH_MAPS
+    symbols[s] = prevs[i];
+#else
+    symbols->insert(s.c_str(), prevs[i]);
+#endif
+  }
+
+  eat_char(')');
+
+  return ret;
+}
+
+Expr *read_code() {
+  string *pref = NULL;
+  char d = non_ws();
+  switch(d) {
+    case '(':
+    {
+      char c = non_ws();
+      switch (c)
+      {
+        case 'd':
+        {
+          our_ungetc('d');
+          pref = eat_str("do");
+          if (pref)
+	          break;
+          Expr *ret = read_code();
+          while ((c = non_ws()) != ')') {
+	          our_ungetc(c);
+	          ret = new CExpr(DO,ret,read_code());
+          }
+          return ret;
+        }
+        case 'f':
+        {
+          our_ungetc('f');
+          pref = eat_str("fail");
+          if (pref)
+	          break;
+
+          Expr *c = read_code();
+          eat_char(')');
+
+          //do we need to check this???
+          //if (c->getclass() != SYMS_EXPR || ((SymExpr *)c)->val)
+	         // report_error(string("\"fail\" must be used with a (undefined) base ")
+		        //  +string("type.\n1. the expression used: "+c->toString()));
+
+          return new CExpr(FAIL, c);
+        }
+        case 'l':
+        {
+          our_ungetc('l');
+          pref = eat_str("let");
+          if (pref)
+	          break;
+
+          string id(prefix_id());
+          SymSExpr *var = new SymSExpr(id);
+
+          Expr *t1 = read_code();
+
+#ifdef USE_HASH_MAPS
+          Expr *prev = symbols[id];
+          symbols[id] = var;
+#else
+          pair<Expr *, Expr *> prev =
+	          symbols->insert(id.c_str(), pair<Expr *, Expr *>(var,NULL));
+#endif
+
+          Expr *t2 = read_code();
+
+#ifdef USE_HASH_MAPS
+          symbols[id] = prev;
+#else
+          symbols->insert(id.c_str(), prev);
+#endif
+          eat_char(')');
+          return new CExpr(LET, var, t1, t2);
+        }
+        case 'i':
+        {
+          our_ungetc('i');
+          pref = eat_str("ifmarked",false);
+          if (pref)
+	          break;
+#ifndef MARKVAR_32
+          Expr *e1 = read_code();
+          Expr *e2 = read_code();
+          Expr *e3 = read_code();
+          Expr *ret = new CExpr(IFMARKED, e1, e2, e3);
+#else
+          int index = read_index();
+          Expr *e1 = read_code();
+          Expr *e2 = read_code();
+          Expr *e3 = read_code();
+          Expr *ret = NULL;
+          if( index>=1 && index<=32 )
+          {
+            ret = new CExpr( IFMARKED, new IntExpr( index-1 ), e1, e2, e3 );
+          }
+          else
+          {
+            std::cout << "Can't make IFMARKED with index = " << index << std::endl;
+          }
+          Expr::markedCount++;
+          //Expr *ret = new CExpr(IFMARKED, e1, e2, e3);
+#endif
+          eat_char(')');
+          return ret;
+        }
+        case 'm':
+        {
+          char c;
+          switch ((c = our_getc()))
+          {
+            case 'a':
+            {
+	            char cc;
+	            switch ((cc = our_getc())) {
+	              case 't':
+                {
+	                our_ungetc('t');
+	                pref = eat_str("tch");
+	                if (pref) {
+	                  pref->insert(0,"ma");
+	                  break;
+	                }
+	                vector<Expr *> cases;
+	                cases.push_back(read_code()); // the scrutinee
+	                while ((c = non_ws()) != ')' && c != 'd') {
+	                  our_ungetc(c);
+	                  cases.push_back(read_case());
+	                }
+	                if (cases.size() == 1) // counting scrutinee
+	                  report_error("A match has no cases.");
+                  if (c == 'd') {
+                    // we have a default case
+                    //delete eat_str("efault");
+                    our_ungetc(c);
+                    cases.push_back(read_case());
+                  }
+	                return new CExpr(MATCH,cases);
+                }
+	              case 'r':
+                {
+	                our_ungetc('r');
+	                pref = eat_str("rkvar", false);
+	                if (pref) {
+	                  pref->insert(0,"ma");
+	                  break;
+	                }
+    #ifndef MARKVAR_32
+	                Expr *ret = new CExpr(MARKVAR,read_code());
+    #else
+                  int index = read_index();
+                  CExpr* ret = NULL;
+                  if( index>=1 && index<=32 )
+                  {
+                    ret = new CExpr( MARKVAR, new IntExpr( index-1 ), read_code() );
+                  }
+                  else
+                  {
+                    std::cout << "Can't make MARKVAR with index = " << index << std::endl;
+                  }
+          Expr::markedCount++;
+	                //Expr *ret = new CExpr(MARKVAR,read_code());
+              #endif
+
+	                eat_char(')');
+	                return ret;
+                }
+	              default:
+                  our_ungetc(c);
+	                pref = new string("ma");
+	                break;
+              }
+            }
+            case 'p':
+            {
+	            our_ungetc('p');
+	            pref = eat_str("p_",false);
+	            if (pref) {
+	              pref->insert(0,"m");
+	              break;
+              }
+	            char c = our_getc();
+	            switch(c) {
+	            case 'a':
+              {
+	              our_ungetc('a');
+	              pref = eat_str("add");
+	              if (pref) {
+	                pref->insert(0,"mp_");
+	                break;
+	              }
+                Expr* e1 = read_code();
+                Expr* e2 = read_code();
+	              Expr *ret = new CExpr(ADD, e1, e2);
+	              eat_char(')');
+	              return ret;
+	            }
+	            case 'n':
+              {
+	              our_ungetc('n');
+	              pref = eat_str("neg");
+	              if (pref) {
+	                pref->insert(0,"mp_");
+	                break;
+	              }
+
+	              Expr *ret = new CExpr(NEG, read_code());
+	              eat_char(')');
+	              return ret;
+	            }
+	            case 'i':
+              {	// mpz_if_neg
+                char c = our_getc();
+                if( c=='f' )
+                {
+                  c = our_getc();
+                  switch( c )
+                  {
+                  case 'n': {
+                    our_ungetc('n');
+		                pref = eat_str("neg");
+		                if( pref ) {
+			                pref->insert(0,"mp_if");
+			                break;
+		                }
+		                Expr* e1 = read_code();
+                    Expr* e2 = read_code();
+                    Expr* e3 = read_code();
+		                Expr*	ret = new CExpr(IFNEG, e1, e2, e3 );
+		                eat_char(')');
+                    return ret;
+                  }
+                  case 'z': {
+                    our_ungetc('z');
+		                pref = eat_str("zero");
+		                if( pref ) {
+			                pref->insert(0,"mp_if");
+			                break;
+		                }
+		                Expr* e1 = read_code();
+                    Expr* e2 = read_code();
+                    Expr* e3 = read_code();
+		                Expr*	ret = new CExpr(IFZERO, e1, e2, e3 );
+		                eat_char(')');
+                    return ret;
+                  }
+                  default:
+                    our_ungetc(c);
+                    pref = new string("mp_if");
+                    break;
+                  }
+                }
+                else
+                {
+                  our_ungetc(c);
+                  pref = new string("mp_i");
+                  break;
+                }
+              }
+              case 'm':
+              {
+                our_ungetc('m');
+                pref = eat_str("mul");
+                if( pref ){
+                  pref->insert(0,"mp_");
+                  break;
+                }
+		            Expr* e1 = read_code();
+                Expr* e2 = read_code();
+		            Expr*	ret = new CExpr(MUL, e1, e2 );
+		            eat_char(')');
+		            return ret;
+              }
+              case 'd':
+              {
+                our_ungetc('d');
+                pref = eat_str("div");
+                if( pref ){
+                  pref->insert(0,"mp_");
+                  break;
+                }
+		            Expr* e1 = read_code();
+                Expr* e2 = read_code();
+		            Expr*	ret = new CExpr(DIV, e1, e2 );
+		            eat_char(')');
+		            return ret;
+              }
+	            default:
+                our_ungetc(c);
+	              pref = new string("mp_");
+	              break;
+	            }
+            }
+            default:
+              our_ungetc(c);
+	            pref = new string("m");
+	            break;
+            }
+            break;
+        }
+        case '~': {
+          Expr *e = read_code();
+          if( e->getclass()==INT_EXPR )
+          {
+            IntExpr *ee = (IntExpr *)e;
+            mpz_neg(ee->n, ee->n);
+            eat_char(')');
+            return ee;
+          }
+          else if( e->getclass() == RAT_EXPR )
+          {
+            RatExpr *ee = (RatExpr *)e;
+            mpq_neg(ee->n, ee->n);
+            eat_char(')');
+            return ee;
+          }
+          else
+          {
+            report_error("Negative sign with expr that is not an int. literal.");
+          }
+        }
+        case 'c':
+        {
+          our_ungetc('c');
+          pref = eat_str("compare");
+          if (pref)
+	          break;
+          Expr *e1 = read_code();
+          Expr *e2 = read_code();
+          Expr *e3 = read_code();
+          Expr *e4 = read_code();
+          eat_char(')');
+          return new CExpr(COMPARE, e1, e2, e3, e4);
+        }
+          break;
+        case EOF:
+          report_error("Unexpected end of file.");
+          break;
+        default:
+        { // the application case
+          our_ungetc(c);
+          break;
+        }
+      }
+      // parse application
+      if (pref)
+        // we have eaten part of the name of an applied identifier
+        pref->append(prefix_id());
+      else
+        pref = new string(prefix_id());
+
+      Expr *ret = progs[*pref];
+      if (!ret)
+#ifdef USE_HASH_TABLES
+        ret = symbols[*pref];
+#else
+        ret = symbols->get(pref->c_str()).first;
+#endif
+
+      if (!ret)
+        report_error(string("Undeclared identifier at head of an application: ")
+		    +*pref);
+
+      ret->inc();
+      delete pref;
+
+      while ((c = non_ws()) != ')') {
+        our_ungetc(c);
+#ifndef USE_FLAT_APP
+        ret = new CExpr(APP,ret,read_code());
+#else
+        Expr* ke = read_code();
+        Expr* orig_ret = ret;
+        ret = Expr::make_app(ret,ke);
+        if( orig_ret->getclass()==CEXPR ){
+          orig_ret->dec();
+        }
+#endif
+        }
+      return ret;
+    } // end case '('
+    case EOF:
+      report_error("Unexpected end of file.");
+      break;
+    case '_':
+      report_error("Holes may not be used in code.");
+      return NULL;
+    case '0':
+    case '1':
+    case '2':
+    case '3':
+    case '4':
+    case '5':
+    case '6':
+    case '7':
+    case '8':
+    case '9':
+    {
+      our_ungetc(d);
+      string v;
+      char c;
+      while (isdigit(c = our_getc()))
+        v.push_back(c);
+      bool parseMpq = false;
+      if( c=='/' )
+      {
+        parseMpq = true;
+        v.push_back(c);
+        while(isdigit(c = our_getc()))
+          v.push_back(c);
+      }
+      our_ungetc(c);
+      if( parseMpq )
+      {
+        mpq_t num;
+        mpq_init(num);
+        if (mpq_set_str(num,v.c_str(),10) == -1  )
+	        report_error("Error reading a mpq numeral.");
+
+        Expr* e = new RatExpr( num );
+        return e;
+      }
+      else
+      {
+        mpz_t num;
+        if (mpz_init_set_str(num,v.c_str(),10) == -1)
+          report_error("Error reading a numeral.");
+        return new IntExpr(num);
+      }
+    }
+    default:
+    {
+      our_ungetc(d);
+      string id(prefix_id());
+#ifdef USE_HASH_MAPS
+      Expr *ret = symbols[id];
+#else
+      pair<Expr *, Expr *> p = symbols->get(id.c_str());
+      Expr *ret = p.first;
+#endif
+      if (!ret)
+        ret = progs[id];
+      if (!ret)
+        report_error(string("Undeclared identifier: ")+id);
+      ret->inc();
+      return ret;
+    }
+  }
+  report_error("Unexpected operator in a piece of code.");
+  return 0;
+}
+
+// the input is owned by the caller, the output by us (so do not dec it).
+Expr *check_code(Expr *_e) {
+  CExpr *e = (CExpr *)_e;
+  switch (e->getop()) {
+  case NOT_CEXPR:
+    switch (e->getclass()) {
+    case INT_EXPR:
+      return statMpz;
+    case RAT_EXPR:
+      return statMpq;
+    case SYM_EXPR: {
+      report_error("Internal error: an LF variable is encountered in code");
+      break;
+    }
+    case SYMS_EXPR: {
+#ifdef USE_HASH_MAPS
+      Expr *tp = symbol_types[((SymSExpr *)e)->s];
+#else
+      Expr *tp = symbols->get(((SymSExpr *)e)->s.c_str()).second;
+#endif
+      if (!tp)
+	report_error(string("A symbol is missing a type in a piece of code.")
+		     +string("\n1. the symbol: ")+((SymSExpr *)e)->s);
+      return tp;
+    }
+    case HOLE_EXPR:
+      report_error("Encountered a hole unexpectedly in code.");
+    default:
+      report_error("Unrecognized form of expr in code.");
+    }
+  case APP: {
+#ifdef USE_FLAT_APP
+    Expr* h = e->kids[0]->followDefs();
+    vector<Expr *> argtps;
+    int counter = 1;
+    while( e->kids[counter] )
+    {
+       argtps.push_back( check_code( e->kids[counter] ) );
+       counter++;
+    }
+    int iend = counter-1;
+#else
+    vector<Expr *> args;
+    Expr *h = (Expr *)e->collect_args(args);
+
+    int iend = args.size();
+    vector<Expr *> argtps(iend);
+    for (int i = 0; i < iend; i++)
+      argtps[i] = check_code(args[i]);
+#endif
+
+    Expr *tp = NULL;
+    if (h->getop() == PROG){
+      tp = ((CExpr *)h)->kids[0];
+    }else {
+#ifdef USE_HASH_MAPS
+      tp = symbol_types[((SymSExpr *)h)->s];
+#else
+      tp = symbols->get(((SymSExpr *)h)->s.c_str()).second;
+#endif
+    }
+
+    if (!tp)
+      report_error(string("The head of an application is missing a type in ")
+		   +string("code.\n1. the application: ")+e->toString());
+
+    tp = tp->followDefs();
+
+    if (tp->getop() != PI)
+      report_error(string("The head of an application does not have ")
+		   +string("functional type in code.")
+		   +string("\n1. the application: ")+e->toString());
+
+    CExpr *cur = (CExpr *)tp;
+    int i = 0;
+    while (cur->getop() == PI) {
+      if (i >= iend)
+	      report_error(string("A function is not being fully applied in code.\n")
+		          +string("1. the application: ")+e->toString()
+		          +string("\n2. its (functional) type: ")+cur->toString());
+      if( argtps[i]->getop()==APP )
+        argtps[i] = ((CExpr*)argtps[i])->kids[0];
+      if (argtps[i] != cur->kids[1]) {
+	      char buf[1024];
+	      sprintf(buf,"%d",i);
+	      report_error(string("Type mismatch for argument ")
+		          + string(buf)
+		          + string(" in application in code.\n")
+		          + string("1. the application: ")+e->toString()
+		          + string("\n2. the head's type: ")+tp->toString()
+#ifdef USE_FLAT_APP
+                + string("\n3. the argument: ")+e->kids[i+1]->toString()
+#else
+		          + string("\n3. the argument: ")+args[i]->toString()
+#endif
+		          + string("\n4. computed type: ")+argtps[i]->toString()
+		          + string("\n5. expected type: ")
+		          +cur->kids[1]->toString());
+      }
+
+      //if (cur->kids[2]->free_in((SymExpr *)cur->kids[0]))
+      if( cur->get_free_in() ){
+        cur->calc_free_in();
+        //are you sure?
+        if( cur->get_free_in() )
+	        report_error(string("A dependently typed function is being applied in")
+		            +string(" code.\n1. the application: ")+e->toString()
+		            +string("\n2. the head's type: ")+tp->toString());
+        //ok, reset the mark
+        cur->setexmark();
+      }
+
+      i++;
+      cur = (CExpr *)cur->kids[2];
+    }
+    if (i < iend)
+      report_error(string("A function is being fully applied to too many ")
+		   +string("arguments in code.\n")
+		   +string("1. the application: ")+e->toString()
+		   +string("\n2. the head's type: ")+tp->toString());
+
+
+    return cur;
+  }
+  //is this right?
+  case MPZ:
+    return statType;
+    break;
+  case MPQ:
+    return statType;
+    break;
+  case DO:
+    check_code(e->kids[0]);
+    return check_code(e->kids[1]);
+
+  case LET: {
+    SymSExpr * var = (SymSExpr *)e->kids[0];
+
+    Expr *tp1 = check_code(e->kids[1]);
+
+#ifdef USE_HASH_MAPS
+    Expr *prevtp = symbol_types[var->s];
+    symbol_types[var->s] = tp1;
+#else
+    pair<Expr *, Expr *> prev =
+      symbols->insert(var->s.c_str(), pair<Expr *, Expr *>(NULL,tp1));
+#endif
+
+    Expr *tp2 = check_code(e->kids[2]);
+
+#ifdef USE_HASH_MAPS
+    symbol_types[var->s] = prevtp;
+#else
+    symbols->insert(var->s.c_str(), prev);
+#endif
+
+    return tp2;
+  }
+
+  case ADD:
+  case MUL:
+  case DIV:
+  {
+    Expr *tp0 = check_code(e->kids[0]);
+    Expr *tp1 = check_code(e->kids[1]);
+
+    if (tp0 != statMpz && tp0 != statMpq )
+      report_error(string("Argument to mp_[arith] does not have type \"mpz\" or \"mpq\".\n")
+		   +string("1. the argument: ")+e->kids[0]->toString()
+		   +string("\n1. its type: ")+tp0->toString());
+
+    if (tp0 != tp1)
+      report_error(string("Arguments to mp_[arith] have differing types.\n")
+		   +string("1. argument 1: ")+e->kids[0]->toString()
+		   +string("\n1. its type: ")+tp0->toString()
+		   +string("2. argument 2: ")+e->kids[1]->toString()
+		   +string("\n2. its type: ")+tp1->toString());
+
+    return tp0;
+  }
+
+  case NEG: {
+    Expr *tp0 = check_code(e->kids[0]);
+    if (tp0 != statMpz && tp0 != statMpq )
+      report_error(string("Argument to mp_neg does not have type \"mpz\" or \"mpq\".\n")
+		   +string("1. the argument: ")+e->kids[0]->toString()
+		   +string("\n1. its type: ")+tp0->toString());
+
+    return tp0;
+  }
+
+  case IFNEG:
+  case IFZERO: {
+    Expr *tp0 = check_code(e->kids[0]);
+    if (tp0 != statMpz && tp0 != statMpq)
+      report_error(string("Argument to mp_if does not have type \"mpz\" or \"mpq\".\n")
+		   +string("1. the argument: ")+e->kids[0]->toString()
+		   +string("\n1. its type: ")+tp0->toString());
+
+    SymSExpr *tp1 = (SymSExpr *)check_code(e->kids[1]);
+    SymSExpr *tp2 = (SymSExpr *)check_code(e->kids[2]);
+    if (tp1->getclass() != SYMS_EXPR || tp1->val || tp1 != tp2)
+      report_error(string("\"mp_if\" used with expressions that do not ")
+       +string("have equal simple datatypes\nfor their types.\n")
+       +string("0. 0'th expression: ")+e->kids[0]->toString()
+		   +string("\n1. first expression: ")+e->kids[1]->toString()
+		   +string("\n2. second expression: ")+e->kids[2]->toString()
+		   +string("\n3. first expression's type: ")+tp1->toString()
+		   +string("\n4. second expression's type: ")+tp2->toString());
+    return tp1;
+  }
+
+  case FAIL: {
+    Expr *tp = check_code(e->kids[0]);
+    if (tp != statType)
+      report_error(string("\"fail\" is used with an expression which is ")
+		   +string("not a type.\n1. the expression :")
+		   +e->kids[0]->toString()
+		   +string("\n2. its type: ")+tp->toString());
+    return e->kids[0];
+  }
+  case MARKVAR: {
+    SymSExpr *tp = (SymSExpr *)check_code(e->kids[1]);
+
+    Expr* tptp = NULL;
+
+    if (tp->getclass() == SYMS_EXPR && !tp->val){
+#ifdef USE_HASH_MAPS
+      tptp = symbol_types[tp->s];
+#else
+      tptp = symbols->get(tp->s.c_str()).second;
+#endif
+    }
+
+    if (!tptp->isType( statType )){
+      string errstr = (string("\"markvar\" is used with an expression which ")
+		      +string("cannot be a lambda-bound variable.\n")
+		      +string("1. the expression :")
+		      +e->kids[1]->toString()
+		      +string("\n2. its type: ")+tp->toString());
+      report_error(errstr);
+    }
+
+    return tp;
+  }
+
+  case IFMARKED:
+  {
+    SymSExpr *tp = (SymSExpr *)check_code(e->kids[1]);
+
+    Expr* tptp = NULL;
+
+    if (tp->getclass() == SYMS_EXPR && !tp->val){
+#ifdef USE_HASH_MAPS
+      tptp = symbol_types[tp->s];
+#else
+      tptp = symbols->get(tp->s.c_str()).second;
+#endif
+    }
+
+    if (!tptp->isType( statType ) ){
+      string errstr = (string("\"ifmarked\" is used with an expression which ")
+		      +string("cannot be a lambda-bound variable.\n")
+		      +string("1. the expression :")
+		      +e->kids[1]->toString()
+		      +string("\n2. its type: ")+tp->toString());
+      report_error(errstr);
+    }
+
+    SymSExpr *tp1 = (SymSExpr *)check_code(e->kids[2]);
+    SymSExpr *tp2 = (SymSExpr *)check_code(e->kids[3]);
+    if (tp1->getclass() != SYMS_EXPR || tp1->val || tp1 != tp2)
+      report_error(string("\"ifmarked\" used with expressions that do not ")
+       +string("have equal simple datatypes\nfor their types.\n")
+       +string("0. 0'th expression: ")+e->kids[1]->toString()
+		   +string("\n1. first expression: ")+e->kids[2]->toString()
+		   +string("\n2. second expression: ")+e->kids[3]->toString()
+		   +string("\n3. first expression's type: ")+tp1->toString()
+		   +string("\n4. second expression's type: ")+tp2->toString());
+    return tp1;
+  }
+  case COMPARE:
+  {
+    SymSExpr *tp0 = (SymSExpr *)check_code(e->kids[0]);
+    if (tp0->getclass() != SYMS_EXPR || tp0->val){
+      string errstr0 = (string("\"compare\" is used with a first expression which ")
+		      +string("cannot be a lambda-bound variable.\n")
+		      +string("1. the expression :")
+		      +e->kids[0]->toString()
+		      +string("\n2. its type: ")+tp0->toString());
+      report_error(errstr0);
+    }
+
+    SymSExpr *tp1 = (SymSExpr *)check_code(e->kids[1]);
+
+    if (tp1->getclass() != SYMS_EXPR || tp1->val){
+      string errstr1 = (string("\"compare\" is used with a second expression which ")
+		      +string("cannot be a lambda-bound variable.\n")
+		      +string("1. the expression :")
+		      +e->kids[1]->toString()
+		      +string("\n2. its type: ")+tp1->toString());
+      report_error(errstr1);
+    }
+
+    SymSExpr *tp2 = (SymSExpr *)check_code(e->kids[2]);
+    SymSExpr *tp3 = (SymSExpr *)check_code(e->kids[3]);
+    if (tp2->getclass() != SYMS_EXPR || tp2->val || tp2 != tp3)
+      report_error(string("\"compare\" used with expressions that do not ")
+       +string("have equal simple datatypes\nfor their types.\n")
+		   +string("\n1. first expression: ")+e->kids[2]->toString()
+		   +string("\n2. second expression: ")+e->kids[3]->toString()
+		   +string("\n3. first expression's type: ")+tp2->toString()
+		   +string("\n4. second expression's type: ")+tp3->toString());
+    return tp2;
+  }
+  case MATCH:
+  {
+    SymSExpr *scruttp = (SymSExpr *)check_code(e->kids[0]);
+    Expr *tptp = NULL;
+    if (scruttp->getclass() == SYMS_EXPR && !scruttp->val){
+#ifdef USE_HASH_MAPS
+      tptp = symbol_types[scruttp->s];
+#else
+      tptp = symbols->get(scruttp->s.c_str()).second;
+#endif
+    }
+    if (!tptp->isType( statType )){
+      string errstr = (string("The scrutinee of a match is not ")
+		      +string("a plain piece of data.\n")
+		      +string("1. the scrutinee: ")
+		      +e->kids[0]->toString()
+		      +string("\n2. its type: ")+scruttp->toString());
+      report_error(errstr);
+    }
+
+    int i = 1;
+    Expr **cur = &e->kids[i];
+    Expr *mtp = NULL;
+    Expr *c_or_default;
+    CExpr *c;
+    while ((c_or_default = *cur++)) {
+      Expr *tp = NULL;
+      CExpr *pat = NULL;
+      if (c_or_default->getop() != CASE)
+        // this is the default of the MATCH
+        tp = check_code(c_or_default);
+      else {
+        // this is a CASE of the MATCH
+        c = (CExpr *)c_or_default;
+        pat = (CExpr *)c->kids[0]; // might be just a SYMS_EXPR
+        if (pat->getclass() == SYMS_EXPR)
+          tp = check_code(c->kids[1]);
+        else {
+          // extend type context and then check the body of the case
+#ifdef USE_HASH_MAPS
+          vector<Expr *>prevs;
+#else
+          vector<pair<Expr *,Expr *> >prevs;
+#endif
+          vector<Expr *> vars;
+          SymSExpr *ctor = (SymSExpr *)pat->collect_args(vars);
+#ifdef USE_HASH_MAPS
+          CExpr *ctortp = (CExpr *)symbol_types[ctor->s];
+#else
+          CExpr *ctortp = (CExpr *)symbols->get(ctor->s.c_str()).second;
+#endif
+          CExpr *curtp = ctortp;
+          for (int i = 0, iend = vars.size(); i < iend; i++) {
+            if ( curtp->followDefs()->getop() != PI)
+              report_error(string("Too many arguments to a constructor in")
+                           +string(" a pattern.\n1. the pattern: ")
+                           +pat->toString()
+                           +string("\n2. the head's type: "
+                                   +ctortp->toString()));
+#ifdef USE_HASH_MAPS
+            prevs.push_back(symbol_types[((SymSExpr *)vars[i])->s]);
+            symbol_types[((SymSExpr *)vars[i])] = curtp->followDefs()->kids[1];
+#else
+            prevs.push_back
+              (symbols->insert(((SymSExpr *)vars[i])->s.c_str(),
+                               pair<Expr *, Expr *>(NULL,
+                                                    ((CExpr *)(curtp->followDefs()))->kids[1])));
+#endif
+            curtp = (CExpr *)((CExpr *)(curtp->followDefs()))->kids[2];
+          }
+
+          tp = check_code(c->kids[1]);
+
+          for (int i = 0, iend = prevs.size(); i < iend; i++) {
+#ifdef USE_HASH_MAPS
+            symbol_types[((SymSExpr *)vars[i])->s] = prevs[i];
+#else
+            symbols->insert(((SymSExpr *)vars[i])->s.c_str(), prevs[i]);
+#endif
+          }
+        }
+      }
+
+      // check that the type for the body of this case -- or the default value --
+      // matches the type for the previous case if we had one.
+
+      if (!mtp)
+        mtp = tp;
+      else
+        if (mtp != tp)
+          report_error(string("Types for bodies of match cases or the default differ.")
+                       +string("\n1. type for first case's body: ")
+                       +mtp->toString()
+                       +(pat == NULL ? string("\n2. type for the default")
+                         : (string("\n2. type for the body of case for ")
+                            +pat->toString()))
+                       +string(": ")+tp->toString());
+
+    }
+
+    return mtp;
+              }
+  } // end switch
+
+  report_error("Type checking an unrecognized form of code (internal error).");
+  return NULL;
+}
+
+bool dbg_prog;
+bool run_scc;
+int dbg_prog_indent_lvl = 0;
+
+void dbg_prog_indent(std::ostream &os) {
+  for (int i = 0; i < dbg_prog_indent_lvl; i++)
+    os << " ";
+}
+
+Expr *run_code(Expr *_e) {
+ start_run_code:
+  CExpr *e = (CExpr *)_e;
+  if( e )
+  {
+    //std::cout << ". ";
+    //e->print( std::cout );
+    //std::cout << std::endl;
+    //std::cout << e->getop() << " " << e->getclass() << std::endl;
+  }
+  switch (e->getop()) {
+  case NOT_CEXPR:
+    switch(e->getclass()) {
+    case INT_EXPR:
+    case RAT_EXPR:
+      e->inc();
+      return e;
+    case HOLE_EXPR: {
+      Expr *tmp = e->followDefs();
+      if (tmp == e)
+	      report_error("Encountered an unfilled hole running code.");
+      tmp->inc();
+      return tmp;
+    }
+    case SYMS_EXPR:
+    case SYM_EXPR: {
+      Expr *tmp = e->followDefs();
+      //std::cout << "follow def = ";
+      //tmp->print( std::cout );
+      //std::cout << std::endl;
+      if (tmp == e) {
+	      e->inc();
+	      return e;
+      }
+      tmp->inc();
+      return tmp;
+    }
+    }
+  case FAIL:
+    return NULL;
+  case DO: {
+    Expr *tmp = run_code(e->kids[0]);
+    if (!tmp)
+      return NULL;
+    tmp->dec();
+    _e = e->kids[1];
+    goto start_run_code;
+  }
+  case LET: {
+    Expr *r0 = run_code(e->kids[1]);
+    if (!r0)
+      return NULL;
+    SymExpr *var = (SymExpr *)e->kids[0];
+    Expr *prev = var->val;
+    var->val = r0;
+    Expr *r1 = run_code(e->kids[2]);
+    var->val = prev;
+    r0->dec();
+    return r1;
+  }
+  case ADD:
+  case MUL:
+  case DIV:
+  {
+    Expr *r1 = run_code(e->kids[0]);
+    if (!r1)
+      return NULL;
+    Expr *r2 = run_code(e->kids[1]);
+    if (!r2)
+      return NULL;
+    if( r1->getclass()==INT_EXPR && r2->getclass()==INT_EXPR )
+    {
+      mpz_t r;
+      mpz_init(r);
+      if( e->getop()==ADD )
+        mpz_add(r, ((IntExpr *)r1)->n, ((IntExpr *)r2)->n);
+      else if( e->getop()==MUL )
+        mpz_mul(r, ((IntExpr *)r1)->n, ((IntExpr *)r2)->n);
+      else if( e->getop()==DIV )
+        mpz_cdiv_q(r, ((IntExpr *)r1)->n, ((IntExpr *)r2)->n);
+      r1->dec();
+      r2->dec();
+      return new IntExpr(r);
+    }
+    else if( r1->getclass()==RAT_EXPR && r2->getclass()==RAT_EXPR )
+    {
+      mpq_t q;
+      mpq_init(q);
+      if( e->getop()==ADD )
+        mpq_add(q, ((RatExpr *)r1)->n, ((RatExpr *)r2)->n);
+      else if( e->getop()==MUL )
+        mpq_mul(q, ((RatExpr *)r1)->n, ((RatExpr *)r2)->n);
+      else if( e->getop()==DIV )
+        mpq_div(q, ((RatExpr *)r1)->n, ((RatExpr *)r2)->n);
+      r1->dec();
+      r2->dec();
+      return new RatExpr(q);
+    }
+    else
+    {
+      //std::cout << "An arithmetic operation failed. " << r1->getclass() << " " << r2->getclass() << std::endl;
+      r1->dec();
+      r2->dec();
+      return NULL;
+    }
+  }
+  case NEG: {
+    Expr *r1 = run_code(e->kids[0]);
+    if (!r1)
+      return NULL;
+    if (r1->getclass() == INT_EXPR) {
+      mpz_t r;
+      mpz_init(r);
+      mpz_neg(r, ((IntExpr *)r1)->n);
+      r1->dec();
+      return new IntExpr(r);
+    }
+    else if( r1->getclass() == RAT_EXPR ) {
+      mpq_t q;
+      mpq_init(q);
+      mpq_neg(q, ((RatExpr *)r1)->n);
+      r1->dec();
+      return new RatExpr(q);
+    }
+    else
+    {
+      std::cout << "An arithmetic negation failed. " << r1->getclass() << std::endl;
+      //((SymSExpr*)r1)->val->print( std::cout );
+      std::cout << ((SymSExpr*)r1)->val << std::endl;
+      r1->dec();
+      return NULL;
+    }
+  }
+  case IFNEG:
+  case IFZERO:{
+    Expr *r1 = run_code(e->kids[0]);
+    if (!r1)
+      return NULL;
+
+    bool cond = true;
+    if( r1->getclass() == INT_EXPR ){
+      if( e->getop() == IFNEG )
+        cond = mpz_sgn( ((IntExpr *)r1)->n )<0;
+      else if( e->getop() == IFZERO )
+        cond = mpz_sgn( ((IntExpr *)r1)->n )==0;
+    }else if( r1->getclass() == RAT_EXPR ){
+      if( e->getop() == IFNEG )
+        cond = mpq_sgn( ((RatExpr *)r1)->n )<0;
+      else if( e->getop() == IFZERO )
+        cond = mpq_sgn( ((RatExpr *)r1)->n )==0;
+    }
+    else
+    {
+      std::cout << "An arithmetic if-expression failed. " << r1->getclass() << std::endl;
+      r1->dec();
+      return NULL;
+    }
+    r1->dec();
+
+
+    if( cond )
+      _e = e->kids[1];
+    else
+      _e = e->kids[2];
+    goto start_run_code;
+  }
+  case IFMARKED: {
+    Expr *r1 = run_code(e->kids[1]);
+    if (!r1)
+      return NULL;
+    if(r1->getclass() != SYM_EXPR && r1->getclass() != SYMS_EXPR ){
+      r1->dec();
+      return NULL;
+    }
+#ifndef MARKVAR_32
+    if (r1->getexmark()) {
+#else
+    if(((SymExpr*)r1)->getmark( ((IntExpr*)e->kids[0])->get_num() ) ){
+#endif
+      r1->dec();
+      _e = e->kids[2];
+      goto start_run_code;
+    }
+    // else
+    r1->dec();
+    _e = e->kids[3];
+    goto start_run_code;
+  }
+  case COMPARE:
+  {
+    Expr *r1 = run_code(e->kids[0]);
+    if (!r1)
+      return NULL;
+    if (r1->getclass() != SYM_EXPR && r1->getclass() != SYMS_EXPR) {
+      r1->dec();
+      return NULL;
+    }
+    Expr *r2 = run_code(e->kids[1]);
+    if (!r2)
+      return NULL;
+    if (r2->getclass() != SYM_EXPR && r2->getclass() != SYMS_EXPR) {
+      r2->dec();
+      return NULL;
+    }
+    if( r1<r2 ){
+      r1->dec();
+      _e = e->kids[2];
+      goto start_run_code;
+    }
+    //else
+    r2->dec();
+    _e = e->kids[3];
+    goto start_run_code;
+  }
+  case MARKVAR: {
+    Expr *r1 = run_code(e->kids[1]);
+    if (!r1)
+      return NULL;
+    if (r1->getclass() != SYM_EXPR && r1->getclass() != SYMS_EXPR) {
+      r1->dec();
+      return NULL;
+    }
+#ifndef MARKVAR_32
+    if (r1->getexmark())
+      r1->clearexmark();
+    else
+      r1->setexmark();
+#else
+    if(((SymExpr*)r1)->getmark( ((IntExpr*)e->kids[0])->get_num() ) )
+      ((SymExpr*)r1)->clearmark( ((IntExpr*)e->kids[0])->get_num() );
+    else
+      ((SymExpr*)r1)->setmark( ((IntExpr*)e->kids[0])->get_num() );
+#endif
+    return r1;
+  }
+  case MATCH: {
+    Expr *scrut = run_code(e->kids[0]);
+    if (!scrut)
+      return 0;
+    vector<Expr *> args;
+    Expr *hd = scrut->collect_args(args);
+    Expr **cases = &e->kids[1];
+    // CExpr *c;
+    Expr *c_or_default;
+    while ((c_or_default = *cases++)) {
+
+      if (c_or_default->getop() != CASE){
+        //std::cout << "run the default " << std::endl;
+        //c_or_default->print( std::cout );
+        // this is the default of the MATCH
+        return run_code(c_or_default);
+      }
+
+      // this is a CASE of the MATCH
+      CExpr *c = (CExpr *)c_or_default;
+      Expr *p = c->kids[0];
+      if (hd == p->get_head()) {
+	      vector<Expr *> vars;
+	      p->collect_args(vars);
+	      int jend = args.size();
+	      vector<Expr *> old_vals(jend);
+	      for (int j = 0; j < jend; j++) {
+	        SymExpr *var = (SymExpr *)vars[j];
+	        old_vals[j] = var->val;
+	        var->val = args[j];
+	        args[j]->inc();
+	      }
+	      scrut->dec();
+	      Expr *ret = run_code(c->kids[1] /* the body of the case */);
+	      for (int j = 0; j < jend; j++) {
+	        ((SymExpr *)vars[j])->val = old_vals[j];
+	        args[j]->dec();
+	      }
+	      return ret;
+      }
+    }
+    break;
+  }
+  case APP: {
+    Expr *tmp = e->whr();
+    if (e != tmp) {
+      _e = tmp;
+      goto start_run_code;
+    }
+
+    // e is in weak head normal form
+
+    vector<Expr *> args;
+    Expr *hd = e->collect_args(args);
+    for (int i = 0, iend = args.size(); i < iend; i++)
+      if (!(args[i] = run_code(args[i]))) {
+	      for (int j = 0; j < i; j++)
+	         args[j]->dec();
+	      return NULL;
+      }
+    if (hd->getop() != PROG) {
+      hd->inc();
+      Expr *tmp = Expr::build_app(hd,args);
+      return tmp;
+    }
+
+    CExpr *prog = (CExpr *)hd;
+    Expr **cur = ((CExpr *)prog->kids[1])->kids;
+    vector<Expr *> old_vals;
+    SymExpr *var;
+    int i = 0;
+
+    if( run_scc && e->get_head( false )->getclass()==SYMS_EXPR )
+    {
+      //std::cout << "running " << ((SymSExpr*)e->get_head( false ))->s.c_str() << " with " << (int)args.size() << " arguments" << std::endl;
+//#ifndef USE_FLAT_APP
+//      for( int a=0; a<(int)args.size(); a++ )
+//      {
+//        args[a] = CExpr::convert_to_flat_app( args[a] );
+//      }
+//#endif
+      Expr *ret = run_compiled_scc( e->get_head( false ), args );
+      for (int i = 0, iend = args.size(); i < iend; i++) {
+        args[i]->dec();
+      }
+//#ifndef USE_FLAT_APP
+//      ret = CExpr::convert_to_tree_app( ret );
+//#endif
+      //ret->inc();
+      return ret;
+    }
+    else
+    {
+      while((var = (SymExpr *)*cur++)) {
+        old_vals.push_back(var->val);
+        var->val = args[i++];
+      }
+
+      if (dbg_prog) {
+        dbg_prog_indent(cout);
+        cout << "[";
+        e->print(cout);
+        cout << "\n";
+      }
+      dbg_prog_indent_lvl++;
+
+      Expr *ret = run_code(prog->kids[2]);
+
+      dbg_prog_indent_lvl--;
+      if (dbg_prog) {
+        dbg_prog_indent(cout);
+        cout << "= ";
+        if (ret)
+	        ret->print(cout);
+        else
+	        cout << "fail";
+        cout << "]\n";
+      }
+
+      cur = ((CExpr *)prog->kids[1])->kids;
+      i = 0;
+      while((var = (SymExpr *)*cur++)) {
+        args[i]->dec();
+        var->val = old_vals[i++];
+      }
+      return ret;
+    }
+  }
+  } // end switch
+  return NULL;
+}
+
+int read_index()
+{
+  int index = 1;
+  string v;
+  char c;
+  while (isdigit(c = our_getc()))
+    v.push_back(c);
+  our_ungetc(c);
+  if( v.length()>0 )
+  {
+    index = atoi( v.c_str() );
+  }
+  return index;
+}
diff --git a/proofs/lfsc_checker/code.h b/proofs/lfsc_checker/code.h
new file mode 100644
index 0000000..9d00a63
--- /dev/null
+++ b/proofs/lfsc_checker/code.h
@@ -0,0 +1,15 @@
+#ifndef SC2_CODE_H
+#define SC2_CODE_H
+
+#include "expr.h"
+
+Expr *read_code();
+Expr *check_code(Expr *); // compute the type for the given code
+Expr *run_code(Expr *); 
+
+int read_index();
+
+extern bool dbg_prog;
+extern bool run_scc;
+
+#endif 
diff --git a/proofs/lfsc_checker/config.h.in b/proofs/lfsc_checker/config.h.in
new file mode 100644
index 0000000..e0a1fc5
--- /dev/null
+++ b/proofs/lfsc_checker/config.h.in
@@ -0,0 +1,83 @@
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `gmp' library (-lgmp). */
+#undef HAVE_LIBGMP
+
+/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
+   to 0 otherwise. */
+#undef HAVE_MALLOC
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if stdbool.h conforms to C99. */
+#undef HAVE_STDBOOL_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strdup' function. */
+#undef HAVE_STRDUP
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
+#undef LT_OBJDIR
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+#ifndef __cplusplus
+#undef inline
+#endif
+
+/* Define to rpl_malloc if the replacement function should be used. */
+#undef malloc
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
diff --git a/proofs/lfsc_checker/config/compile b/proofs/lfsc_checker/config/compile
new file mode 100755
index 0000000..a85b723
--- /dev/null
+++ b/proofs/lfsc_checker/config/compile
@@ -0,0 +1,347 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-10-14.11; # UTC
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Written by Tom Tromey <tromey at cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake at gnu.org> or send patches to
+# <automake-patches at gnu.org>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""	$nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+	# lazily determine how to convert abs files
+	case `uname -s` in
+	  MINGW*)
+	    file_conv=mingw
+	    ;;
+	  CYGWIN*)
+	    file_conv=cygwin
+	    ;;
+	  *)
+	    file_conv=wine
+	    ;;
+	esac
+      fi
+      case $file_conv/,$2, in
+	*,$file_conv,*)
+	  ;;
+	mingw/*)
+	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+	  ;;
+	cygwin/*)
+	  file=`cygpath -m "$file" || echo "$file"`
+	  ;;
+	wine/*)
+	  file=`winepath -w "$file" || echo "$file"`
+	  ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+  func_file_conv "$1"
+  if test -z "$lib_path"; then
+    lib_path=$file
+  else
+    lib_path="$lib_path;$file"
+  fi
+  linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+  lib=$1
+  found=no
+  save_IFS=$IFS
+  IFS=';'
+  for dir in $lib_path $LIB
+  do
+    IFS=$save_IFS
+    if $shared && test -f "$dir/$lib.dll.lib"; then
+      found=yes
+      lib=$dir/$lib.dll.lib
+      break
+    fi
+    if test -f "$dir/$lib.lib"; then
+      found=yes
+      lib=$dir/$lib.lib
+      break
+    fi
+    if test -f "$dir/lib$lib.a"; then
+      found=yes
+      lib=$dir/lib$lib.a
+      break
+    fi
+  done
+  IFS=$save_IFS
+
+  if test "$found" != yes; then
+    lib=$lib.lib
+  fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+	-o)
+	  # configure might choose to run compile as 'compile cc -o foo foo.c'.
+	  eat=1
+	  case $2 in
+	    *.o | *.[oO][bB][jJ])
+	      func_file_conv "$2"
+	      set x "$@" -Fo"$file"
+	      shift
+	      ;;
+	    *)
+	      func_file_conv "$2"
+	      set x "$@" -Fe"$file"
+	      shift
+	      ;;
+	  esac
+	  ;;
+	-I)
+	  eat=1
+	  func_file_conv "$2" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-I*)
+	  func_file_conv "${1#-I}" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-l)
+	  eat=1
+	  func_cl_dashl "$2"
+	  set x "$@" "$lib"
+	  shift
+	  ;;
+	-l*)
+	  func_cl_dashl "${1#-l}"
+	  set x "$@" "$lib"
+	  shift
+	  ;;
+	-L)
+	  eat=1
+	  func_cl_dashL "$2"
+	  ;;
+	-L*)
+	  func_cl_dashL "${1#-L}"
+	  ;;
+	-static)
+	  shared=false
+	  ;;
+	-Wl,*)
+	  arg=${1#-Wl,}
+	  save_ifs="$IFS"; IFS=','
+	  for flag in $arg; do
+	    IFS="$save_ifs"
+	    linker_opts="$linker_opts $flag"
+	  done
+	  IFS="$save_ifs"
+	  ;;
+	-Xlinker)
+	  eat=1
+	  linker_opts="$linker_opts $2"
+	  ;;
+	-*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+	  func_file_conv "$1"
+	  set x "$@" -Tp"$file"
+	  shift
+	  ;;
+	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+	  func_file_conv "$1" mingw
+	  set x "$@" "$file"
+	  shift
+	  ;;
+	*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
+case $1 in
+  '')
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <bug-automake at gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+	# configure might choose to run compile as 'compile cc -o foo foo.c'.
+	# So we strip '-o arg' only if arg is an object.
+	eat=1
+	case $2 in
+	  *.o | *.obj)
+	    ofile=$2
+	    ;;
+	  *)
+	    set x "$@" -o "$2"
+	    shift
+	    ;;
+	esac
+	;;
+      *.c)
+	cfile=$1
+	set x "$@" "$1"
+	shift
+	;;
+      *)
+	set x "$@" "$1"
+	shift
+	;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no '-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # '.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/proofs/lfsc_checker/config/config.guess b/proofs/lfsc_checker/config/config.guess
new file mode 100755
index 0000000..1659250
--- /dev/null
+++ b/proofs/lfsc_checker/config/config.guess
@@ -0,0 +1,1441 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright 1992-2015 Free Software Foundation, Inc.
+
+timestamp='2015-08-20'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+#
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
+#
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+#
+# Please send patches to <config-patches at gnu.org>.
+
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright 1992-2015 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+	for c in cc gcc c89 c99 ; do
+	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+	     CC_FOR_BUILD="$c"; break ;
+	  fi ;
+	done ;
+	if test x"$CC_FOR_BUILD" = x ; then
+	  CC_FOR_BUILD=no_compiler_found ;
+	fi
+	;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi at noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+	PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+	# If the system lacks a compiler, then just pick glibc.
+	# We could probably try harder.
+	LIBC=gnu
+
+	eval $set_cc_for_build
+	cat <<-EOF > $dummy.c
+	#include <features.h>
+	#if defined(__UCLIBC__)
+	LIBC=uclibc
+	#elif defined(__dietlibc__)
+	LIBC=dietlibc
+	#else
+	LIBC=gnu
+	#endif
+	EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+	;;
+esac
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+	# NetBSD (nbsd) targets should (where applicable) match one or
+	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+	# switched to ELF, *-*-netbsd* would select the old
+	# object file format.  This provides both forward
+	# compatibility and a consistent mechanism for selecting the
+	# object file format.
+	#
+	# Note: NetBSD doesn't particularly care about the vendor
+	# portion of the name.  We always set it to "unknown".
+	sysctl="sysctl -n hw.machine_arch"
+	UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+	    /sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || \
+	    echo unknown)`
+	case "${UNAME_MACHINE_ARCH}" in
+	    armeb) machine=armeb-unknown ;;
+	    arm*) machine=arm-unknown ;;
+	    sh3el) machine=shl-unknown ;;
+	    sh3eb) machine=sh-unknown ;;
+	    sh5el) machine=sh5le-unknown ;;
+	    earmv*)
+		arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+		endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
+		machine=${arch}${endian}-unknown
+		;;
+	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+	esac
+	# The Operating System including object format, if it has switched
+	# to ELF recently, or will in the future.
+	case "${UNAME_MACHINE_ARCH}" in
+	    arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax)
+		eval $set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep -q __ELF__
+		then
+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+		    # Return netbsd for either.  FIX?
+		    os=netbsd
+		else
+		    os=netbsdelf
+		fi
+		;;
+	    *)
+		os=netbsd
+		;;
+	esac
+	# Determine ABI tags.
+	case "${UNAME_MACHINE_ARCH}" in
+	    earm*)
+		expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+		abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
+		;;
+	esac
+	# The OS release
+	# Debian GNU/NetBSD machines have a different userland, and
+	# thus, need a distinct triplet. However, they do not need
+	# kernel version information, so it can be replaced with a
+	# suitable tag, in the style of linux-gnu.
+	case "${UNAME_VERSION}" in
+	    Debian*)
+		release='-gnu'
+		;;
+	    *)
+		release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
+		;;
+	esac
+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+	# contains redundant information, the shorter form:
+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+	echo "${machine}-${os}${release}${abi}"
+	exit ;;
+    *:Bitrig:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+	exit ;;
+    *:OpenBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    *:ekkoBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+	exit ;;
+    *:SolidBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+	exit ;;
+    macppc:MirBSD:*:*)
+	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    *:MirBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    *:Sortix:*:*)
+	echo ${UNAME_MACHINE}-unknown-sortix
+	exit ;;
+    alpha:OSF1:*:*)
+	case $UNAME_RELEASE in
+	*4.0)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+		;;
+	*5.*)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		;;
+	esac
+	# According to Compaq, /usr/sbin/psrinfo has been available on
+	# OSF/1 and Tru64 systems produced since 1995.  I hope that
+	# covers most systems running today.  This code pipes the CPU
+	# types through head -n 1, so we only detect the type of CPU 0.
+	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+	case "$ALPHA_CPU_TYPE" in
+	    "EV4 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV4.5 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "LCA4 (21066/21068)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV5 (21164)")
+		UNAME_MACHINE="alphaev5" ;;
+	    "EV5.6 (21164A)")
+		UNAME_MACHINE="alphaev56" ;;
+	    "EV5.6 (21164PC)")
+		UNAME_MACHINE="alphapca56" ;;
+	    "EV5.7 (21164PC)")
+		UNAME_MACHINE="alphapca57" ;;
+	    "EV6 (21264)")
+		UNAME_MACHINE="alphaev6" ;;
+	    "EV6.7 (21264A)")
+		UNAME_MACHINE="alphaev67" ;;
+	    "EV6.8CB (21264C)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8AL (21264B)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8CX (21264D)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.9A (21264/EV69A)")
+		UNAME_MACHINE="alphaev69" ;;
+	    "EV7 (21364)")
+		UNAME_MACHINE="alphaev7" ;;
+	    "EV7.9 (21364A)")
+		UNAME_MACHINE="alphaev79" ;;
+	esac
+	# A Pn.n version is a patched version.
+	# A Vn.n version is a released version.
+	# A Tn.n version is a released field test version.
+	# A Xn.n version is an unreleased experimental baselevel.
+	# 1.2 uses "1.2" for uname -r.
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+	exitcode=$?
+	trap '' 0
+	exit $exitcode ;;
+    Alpha\ *:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# Should we change UNAME_MACHINE based on the output of uname instead
+	# of the specific Alpha model?
+	echo alpha-pc-interix
+	exit ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
+	exit ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit ;;
+    *:z/VM:*:*)
+	echo s390-ibm-zvmoe
+	exit ;;
+    *:OS400:*:*)
+	echo powerpc-ibm-os400
+	exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit ;;
+    arm*:riscos:*:*|arm*:RISCOS:*:*)
+	echo arm-unknown-riscos
+	exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+	# akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit ;;
+    DRS?6000:unix:4.0:6*)
+	echo sparc-icl-nx6
+	exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7; exit ;;
+	esac ;;
+    s390x:SunOS:*:*)
+	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+	echo i386-pc-auroraux${UNAME_RELEASE}
+	exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+	eval $set_cc_for_build
+	SUN_ARCH="i386"
+	# If there is a compiler, see if it is configured for 64-bit objects.
+	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+	# This test works for both compilers.
+	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_64BIT_ARCH >/dev/null
+	    then
+		SUN_ARCH="x86_64"
+	    fi
+	fi
+	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+	echo m68k-milan-mint${UNAME_RELEASE}
+	exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+	echo m68k-hades-mint${UNAME_RELEASE}
+	exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+	echo m68k-unknown-mint${UNAME_RELEASE}
+	exit ;;
+    m68k:machten:*:*)
+	echo m68k-apple-machten${UNAME_RELEASE}
+	exit ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c &&
+	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=`$dummy $dummyarg` &&
+	    { echo "$SYSTEM_NAME"; exit; }
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit ;;
+    AViiON:dgux:*:*)
+	# DG/UX returns AViiON for all architectures
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	    else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
+	else
+	    echo i586-dg-dgux${UNAME_RELEASE}
+	fi
+	exit ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit ;;
+    ia64:AIX:*:*)
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		eval $set_cc_for_build
+		sed 's/^		//' << EOF >$dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+		then
+			echo "$SYSTEM_NAME"
+		else
+			echo rs6000-ibm-aix3.2.5
+		fi
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit ;;
+    *:AIX:*:[4567])
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+		IBM_ARCH=rs6000
+	else
+		IBM_ARCH=powerpc
+	fi
+	if [ -x /usr/bin/lslpp ] ; then
+		IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+			   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit ;;
+    9000/[34678]??:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	case "${UNAME_MACHINE}" in
+	    9000/31? )            HP_ARCH=m68000 ;;
+	    9000/[34]?? )         HP_ARCH=m68k ;;
+	    9000/[678][0-9][0-9])
+		if [ -x /usr/bin/getconf ]; then
+		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+		    case "${sc_cpu_version}" in
+		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+		      532)                      # CPU_PA_RISC2_0
+			case "${sc_kernel_bits}" in
+			  32) HP_ARCH="hppa2.0n" ;;
+			  64) HP_ARCH="hppa2.0w" ;;
+			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+			esac ;;
+		    esac
+		fi
+		if [ "${HP_ARCH}" = "" ]; then
+		    eval $set_cc_for_build
+		    sed 's/^		//' << EOF >$dummy.c
+
+		#define _HPUX_SOURCE
+		#include <stdlib.h>
+		#include <unistd.h>
+
+		int main ()
+		{
+		#if defined(_SC_KERNEL_BITS)
+		    long bits = sysconf(_SC_KERNEL_BITS);
+		#endif
+		    long cpu  = sysconf (_SC_CPU_VERSION);
+
+		    switch (cpu)
+			{
+			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+			case CPU_PA_RISC2_0:
+		#if defined(_SC_KERNEL_BITS)
+			    switch (bits)
+				{
+				case 64: puts ("hppa2.0w"); break;
+				case 32: puts ("hppa2.0n"); break;
+				default: puts ("hppa2.0"); break;
+				} break;
+		#else  /* !defined(_SC_KERNEL_BITS) */
+			    puts ("hppa2.0"); break;
+		#endif
+			default: puts ("hppa1.0"); break;
+			}
+		    exit (0);
+		}
+EOF
+		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+		    test -z "$HP_ARCH" && HP_ARCH=hppa
+		fi ;;
+	esac
+	if [ ${HP_ARCH} = "hppa2.0w" ]
+	then
+	    eval $set_cc_for_build
+
+	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+	    # generating 64-bit code.  GNU and HP use different nomenclature:
+	    #
+	    # $ CC_FOR_BUILD=cc ./config.guess
+	    # => hppa2.0w-hp-hpux11.23
+	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+	    # => hppa64-hp-hpux11.23
+
+	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+		grep -q __LP64__
+	    then
+		HP_ARCH="hppa2.0w"
+	    else
+		HP_ARCH="hppa64"
+	    fi
+	fi
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit ;;
+    3050*:HI-UX:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <unistd.h>
+	int
+	main ()
+	{
+	  long cpu = sysconf (_SC_CPU_VERSION);
+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+	     results, however.  */
+	  if (CPU_IS_PA_RISC (cpu))
+	    {
+	      switch (cpu)
+		{
+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+		  default: puts ("hppa-hitachi-hiuxwe2"); break;
+		}
+	    }
+	  else if (CPU_IS_HP_MC68K (cpu))
+	    puts ("m68k-hitachi-hiuxwe2");
+	  else puts ("unknown-hitachi-hiuxwe2");
+	  exit (0);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+		{ echo "$SYSTEM_NAME"; exit; }
+	echo unknown-hitachi-hiuxwe2
+	exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+	exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+	exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+	exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+	exit ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*[A-Z]90:*:*:*)
+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+	      -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    *:UNICOS/mp:*:*)
+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    5000:UNIX_System_V:4.*:*)
+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:FreeBSD:*:*)
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	case ${UNAME_PROCESSOR} in
+	    amd64)
+		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	    *)
+		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	esac
+	exit ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit ;;
+    *:MINGW64*:*)
+	echo ${UNAME_MACHINE}-pc-mingw64
+	exit ;;
+    *:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit ;;
+    *:MSYS*:*)
+	echo ${UNAME_MACHINE}-pc-msys
+	exit ;;
+    i*:windows32*:*)
+	# uname -m includes "-pc" on this system.
+	echo ${UNAME_MACHINE}-mingw32
+	exit ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit ;;
+    *:Interix*:*)
+	case ${UNAME_MACHINE} in
+	    x86)
+		echo i586-pc-interix${UNAME_RELEASE}
+		exit ;;
+	    authenticamd | genuineintel | EM64T)
+		echo x86_64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	    IA64)
+		echo ia64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	esac ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+	echo i${UNAME_MACHINE}-pc-mks
+	exit ;;
+    8664:Windows_NT:*)
+	echo x86_64-pc-mks
+	exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+	# UNAME_MACHINE based on the output of uname instead of i386?
+	echo i586-pc-interix
+	exit ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+	echo x86_64-unknown-cygwin
+	exit ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    *:GNU:*:*)
+	# the GNU system
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit ;;
+    *:GNU/*:*:*)
+	# other systems with GNU libc and userland
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+	exit ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit ;;
+    aarch64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    aarch64_be:Linux:*:*)
+	UNAME_MACHINE=aarch64_be
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+	esac
+	objdump --private-headers /bin/sh | grep -q ld.so.1
+	if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    arc:Linux:*:* | arceb:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    arm*:Linux:*:*)
+	eval $set_cc_for_build
+	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+	    | grep -q __ARM_EABI__
+	then
+	    echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	else
+	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+		| grep -q __ARM_PCS_VFP
+	    then
+		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+	    else
+		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+	    fi
+	fi
+	exit ;;
+    avr32*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    cris:Linux:*:*)
+	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+	exit ;;
+    crisv32:Linux:*:*)
+	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+	exit ;;
+    e2k:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    frv:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    hexagon:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    i*86:Linux:*:*)
+	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+	exit ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    m32r*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    mips:Linux:*:* | mips64:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef ${UNAME_MACHINE}
+	#undef ${UNAME_MACHINE}el
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=${UNAME_MACHINE}el
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=${UNAME_MACHINE}
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+	;;
+    openrisc*:Linux:*:*)
+	echo or1k-unknown-linux-${LIBC}
+	exit ;;
+    or32:Linux:*:* | or1k*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    padre:Linux:*:*)
+	echo sparc-unknown-linux-${LIBC}
+	exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-${LIBC}
+	exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+	  PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+	  *)    echo hppa-unknown-linux-${LIBC} ;;
+	esac
+	exit ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-${LIBC}
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-${LIBC}
+	exit ;;
+    ppc64le:Linux:*:*)
+	echo powerpc64le-unknown-linux-${LIBC}
+	exit ;;
+    ppcle:Linux:*:*)
+	echo powerpcle-unknown-linux-${LIBC}
+	exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+	exit ;;
+    sh64*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    tile*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    vax:Linux:*:*)
+	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+	exit ;;
+    x86_64:Linux:*:*)
+	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+	exit ;;
+    xtensa*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    i*86:DYNIX/ptx:4*:*)
+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+	# earlier versions are messed up and put the nodename in both
+	# sysname and nodename.
+	echo i386-sequent-sysv4
+	exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+	# Unixware is an offshoot of SVR4, but it has its own version
+	# number series starting with 2...
+	# I am not positive that other SVR4 systems won't match this,
+	# I just have to hope.  -- rms.
+	# Use sysv4.2uw... so that sysv4* matches it.
+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	exit ;;
+    i*86:OS/2:*:*)
+	# If we were able to find `uname', then EMX Unix compatibility
+	# is probably installed.
+	echo ${UNAME_MACHINE}-pc-os2-emx
+	exit ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit ;;
+    i*86:syllable:*:*)
+	echo ${UNAME_MACHINE}-pc-syllable
+	exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+	else
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+	fi
+	exit ;;
+    i*86:*:5:[678]*)
+	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	case `/bin/uname -X | grep "^Machine"` in
+	    *486*)	     UNAME_MACHINE=i486 ;;
+	    *Pentium)	     UNAME_MACHINE=i586 ;;
+	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+	esac
+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+	exit ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/dev/null >/dev/null ; then
+		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=i586
+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit ;;
+    pc:*:*:*)
+	# Left here for compatibility:
+	# uname -m prints for DJGPP always 'pc', but it prints nothing about
+	# the processor, so we play safe by assuming i586.
+	# Note: whatever this is, it MUST be the same as what config.sub
+	# prints for the "djgpp" host, or else GDB configury will decide that
+	# this is a cross-build.
+	echo i586-pc-msdosdjgpp
+	exit ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	fi
+	exit ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit ;;
+    M680?0:D-NIX:5.3:*)
+	echo m68k-diab-dnix
+	exit ;;
+    M68*:*:R3V[5678]*:*)
+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+	OS_REL=''
+	test -r /etc/.relid \
+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+	OS_REL='.3'
+	test -r /etc/.relid \
+	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		echo ${UNAME_MACHINE}-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit ;;
+    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+			# says <Richard.M.Bartel at ccMail.Census.GOV>
+	echo i586-unisys-sysv4
+	exit ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes at openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit ;;
+    *:*:*:FTX*)
+	# From seanf at swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit ;;
+    i*86:VOS:*:*)
+	# From Paul.Green at stratus.com.
+	echo ${UNAME_MACHINE}-stratus-vos
+	exit ;;
+    *:VOS:*:*)
+	# From Paul.Green at stratus.com.
+	echo hppa1.1-stratus-vos
+	exit ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+	if [ -d /usr/nec ]; then
+		echo mips-nec-sysv${UNAME_RELEASE}
+	else
+		echo mips-unknown-sysv${UNAME_RELEASE}
+	fi
+	exit ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit ;;
+    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
+	echo i586-pc-haiku
+	exit ;;
+    x86_64:Haiku:*:*)
+	echo x86_64-unknown-haiku
+	exit ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-7:SUPER-UX:*:*)
+	echo sx7-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8:SUPER-UX:*:*)
+	echo sx8-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8R:SUPER-UX:*:*)
+	echo sx8r-nec-superux${UNAME_RELEASE}
+	exit ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Darwin:*:*)
+	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+	eval $set_cc_for_build
+	if test "$UNAME_PROCESSOR" = unknown ; then
+	    UNAME_PROCESSOR=powerpc
+	fi
+	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+	    if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+		    (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		    grep IS_64BIT_ARCH >/dev/null
+		then
+		    case $UNAME_PROCESSOR in
+			i386) UNAME_PROCESSOR=x86_64 ;;
+			powerpc) UNAME_PROCESSOR=powerpc64 ;;
+		    esac
+		fi
+	    fi
+	elif test "$UNAME_PROCESSOR" = i386 ; then
+	    # Avoid executing cc on OS X 10.9, as it ships with a stub
+	    # that puts up a graphical alert prompting to install
+	    # developer tools.  Any system running Mac OS X 10.7 or
+	    # later (Darwin 11 and later) is required to have a 64-bit
+	    # processor. This is not true of the ARM version of Darwin
+	    # that Apple uses in portable devices.
+	    UNAME_PROCESSOR=x86_64
+	fi
+	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+	exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	UNAME_PROCESSOR=`uname -p`
+	if test "$UNAME_PROCESSOR" = "x86"; then
+		UNAME_PROCESSOR=i386
+		UNAME_MACHINE=pc
+	fi
+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+	exit ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit ;;
+    NEO-?:NONSTOP_KERNEL:*:*)
+	echo neo-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSE-*:NONSTOP_KERNEL:*:*)
+	echo nse-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit ;;
+    *:Plan9:*:*)
+	# "uname -m" is not consistent, so use $cputype instead. 386
+	# is converted to i386 for consistency with other x86
+	# operating systems.
+	if test "$cputype" = "386"; then
+	    UNAME_MACHINE=i386
+	else
+	    UNAME_MACHINE="$cputype"
+	fi
+	echo ${UNAME_MACHINE}-unknown-plan9
+	exit ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit ;;
+    SEI:*:*:SEIUX)
+	echo mips-sei-seiux${UNAME_RELEASE}
+	exit ;;
+    *:DragonFly:*:*)
+	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit ;;
+    *:*VMS:*:*)
+	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	case "${UNAME_MACHINE}" in
+	    A*) echo alpha-dec-vms ; exit ;;
+	    I*) echo ia64-dec-vms ; exit ;;
+	    V*) echo vax-dec-vms ; exit ;;
+	esac ;;
+    *:XENIX:*:SysV)
+	echo i386-pc-xenix
+	exit ;;
+    i*86:skyos:*:*)
+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+	exit ;;
+    i*86:rdos:*:*)
+	echo ${UNAME_MACHINE}-pc-rdos
+	exit ;;
+    i*86:AROS:*:*)
+	echo ${UNAME_MACHINE}-pc-aros
+	exit ;;
+    x86_64:VMkernel:*:*)
+	echo ${UNAME_MACHINE}-unknown-esx
+	exit ;;
+esac
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches at gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/proofs/lfsc_checker/config/config.sub b/proofs/lfsc_checker/config/config.sub
new file mode 100755
index 0000000..1acc966
--- /dev/null
+++ b/proofs/lfsc_checker/config/config.sub
@@ -0,0 +1,1813 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright 1992-2015 Free Software Foundation, Inc.
+
+timestamp='2015-08-20'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+
+
+# Please send patches to <config-patches at gnu.org>.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright 1992-2015 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
+  kopensolaris*-gnu* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  android-linux)
+    os=-linux-android
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+	-apple | -axis | -knuth | -cray | -microblaze*)
+		os=
+		basic_machine=$1
+		;;
+	-bluegene*)
+		os=-cnk
+		;;
+	-sim | -cisco | -oki | -wec | -winbond)
+		os=
+		basic_machine=$1
+		;;
+	-scout)
+		;;
+	-wrs)
+		os=-vxworks
+		basic_machine=$1
+		;;
+	-chorusos*)
+		os=-chorusos
+		basic_machine=$1
+		;;
+	-chorusrdb)
+		os=-chorusrdb
+		basic_machine=$1
+		;;
+	-hiux*)
+		os=-hiuxwe2
+		;;
+	-sco6)
+		os=-sco5v6
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5)
+		os=-sco3.2v5
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=-sco3.2v4
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5v6*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=-sco3.2v2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-udk*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=-isc2.2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=clipper-intergraph
+		;;
+	-isc*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*178)
+		os=-lynxos178
+		;;
+	-lynx*5)
+		os=-lynxos5
+		;;
+	-lynx*)
+		os=-lynxos
+		;;
+	-ptx*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=-psos
+		;;
+	-mint | -mint[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	1750a | 580 \
+	| a29k \
+	| aarch64 | aarch64_be \
+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+	| am33_2.0 \
+	| arc | arceb \
+	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+	| avr | avr32 \
+	| ba \
+	| be32 | be64 \
+	| bfin \
+	| c4x | c8051 | clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| e2k | epiphany \
+	| fido | fr30 | frv | ft32 \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| hexagon \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k | iq2000 \
+	| k1om \
+	| le32 | le64 \
+	| lm32 \
+	| m32c | m32r | m32rle | m68000 | m68k | m88k \
+	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64octeon | mips64octeonel \
+	| mips64orion | mips64orionel \
+	| mips64r5900 | mips64r5900el \
+	| mips64vr | mips64vrel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mips64vr5900 | mips64vr5900el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa32r2 | mipsisa32r2el \
+	| mipsisa32r6 | mipsisa32r6el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64r2 | mipsisa64r2el \
+	| mipsisa64r6 | mipsisa64r6el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipsr5900 | mipsr5900el \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| moxie \
+	| mt \
+	| msp430 \
+	| nds32 | nds32le | nds32be \
+	| nios | nios2 | nios2eb | nios2el \
+	| ns16k | ns32k \
+	| open8 | or1k | or1knd | or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle \
+	| pyramid \
+	| riscv32 | riscv64 \
+	| rl78 | rx \
+	| score \
+	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+	| spu \
+	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+	| ubicom32 \
+	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+	| visium \
+	| we32k \
+	| x86 | xc16x | xstormy16 | xtensa \
+	| z8k | z80)
+		basic_machine=$basic_machine-unknown
+		;;
+	c54x)
+		basic_machine=tic54x-unknown
+		;;
+	c55x)
+		basic_machine=tic55x-unknown
+		;;
+	c6x)
+		basic_machine=tic6x-unknown
+		;;
+	leon|leon[3-9])
+		basic_machine=sparc-$basic_machine
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+	ms1)
+		basic_machine=mt-unknown
+		;;
+
+	strongarm | thumb | xscale)
+		basic_machine=arm-unknown
+		;;
+	xgate)
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	xscaleeb)
+		basic_machine=armeb-unknown
+		;;
+
+	xscaleel)
+		basic_machine=armel-unknown
+		;;
+
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	580-* \
+	| a29k-* \
+	| aarch64-* | aarch64_be-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* | avr32-* \
+	| ba-* \
+	| be32-* | be64-* \
+	| bfin-* | bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* \
+	| c8051-* | clipper-* | craynv-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| e2k-* | elxsi-* \
+	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| hexagon-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* | iq2000-* \
+	| k1om-* \
+	| le32-* | le64-* \
+	| lm32-* \
+	| m32c-* | m32r-* | m32rle-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+	| microblaze-* | microblazeel-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64octeon-* | mips64octeonel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64r5900-* | mips64r5900el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mips64vr5900-* | mips64vr5900el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa32r2-* | mipsisa32r2el-* \
+	| mipsisa32r6-* | mipsisa32r6el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64r2-* | mipsisa64r2el-* \
+	| mipsisa64r6-* | mipsisa64r6el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipsr5900-* | mipsr5900el-* \
+	| mipstx39-* | mipstx39el-* \
+	| mmix-* \
+	| mt-* \
+	| msp430-* \
+	| nds32-* | nds32le-* | nds32be-* \
+	| nios-* | nios2-* | nios2eb-* | nios2el-* \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| open8-* \
+	| or1k*-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+	| pyramid-* \
+	| riscv32-* | riscv64-* \
+	| rl78-* | romp-* | rs6000-* | rx-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+	| sparclite-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
+	| tahoe-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tile*-* \
+	| tron-* \
+	| ubicom32-* \
+	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+	| vax-* \
+	| visium-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xc16x-* | xps100-* \
+	| xstormy16-* | xtensa*-* \
+	| ymp-* \
+	| z8k-* | z80-*)
+		;;
+	# Recognize the basic CPU types without company name, with glob match.
+	xtensa*)
+		basic_machine=$basic_machine-unknown
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=i386-unknown
+		os=-bsd
+		;;
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	a29khif)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	abacus)
+		basic_machine=abacus-unknown
+		;;
+	adobe68k)
+		basic_machine=m68010-adobe
+		os=-scout
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amd64)
+		basic_machine=x86_64-pc
+		;;
+	amd64-*)
+		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-unknown
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-unknown
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-unknown
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	apollo68bsd)
+		basic_machine=m68k-apollo
+		os=-bsd
+		;;
+	aros)
+		basic_machine=i386-pc
+		os=-aros
+		;;
+        asmjs)
+		basic_machine=asmjs-unknown
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	blackfin)
+		basic_machine=bfin-unknown
+		os=-linux
+		;;
+	blackfin-*)
+		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	bluegene*)
+		basic_machine=powerpc-ibm
+		os=-cnk
+		;;
+	c54x-*)
+		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c55x-*)
+		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c6x-*)
+		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c90)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+	cegcc)
+		basic_machine=arm-unknown
+		os=-cegcc
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | j90)
+		basic_machine=j90-cray
+		os=-unicos
+		;;
+	craynv)
+		basic_machine=craynv-cray
+		os=-unicosmp
+		;;
+	cr16 | cr16-*)
+		basic_machine=cr16-unknown
+		os=-elf
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	crisv32 | crisv32-* | etraxfs*)
+		basic_machine=crisv32-axis
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	crx)
+		basic_machine=crx-unknown
+		os=-elf
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	decsystem10* | dec10*)
+		basic_machine=pdp10-dec
+		os=-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=pdp10-dec
+		os=-tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	dicos)
+		basic_machine=i686-pc
+		os=-dicos
+		;;
+	djgpp)
+		basic_machine=i586-pc
+		os=-msdosdjgpp
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=m68k-ericsson
+		os=-ose
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	go32)
+		basic_machine=i386-pc
+		os=-go32
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	h8300xray)
+		basic_machine=h8300-hitachi
+		os=-xray
+		;;
+	h8500hms)
+		basic_machine=h8500-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	hppaosf)
+		basic_machine=hppa1.1-hp
+		os=-osf
+		;;
+	hppro)
+		basic_machine=hppa1.1-hp
+		os=-proelf
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		;;
+	i*86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i*86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i*86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i*86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	i386mach)
+		basic_machine=i386-mach
+		os=-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=i386-unknown
+		os=-vsta
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	leon-*|leon[3-9]-*)
+		basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
+		;;
+	m68knommu)
+		basic_machine=m68k-unknown
+		os=-linux
+		;;
+	m68knommu-*)
+		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	microblaze*)
+		basic_machine=microblaze-xilinx
+		;;
+	mingw64)
+		basic_machine=x86_64-pc
+		os=-mingw64
+		;;
+	mingw32)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	mingw32ce)
+		basic_machine=arm-unknown
+		os=-mingw32ce
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	morphos)
+		basic_machine=powerpc-unknown
+		os=-morphos
+		;;
+	moxiebox)
+		basic_machine=moxie-unknown
+		os=-moxiebox
+		;;
+	msdos)
+		basic_machine=i386-pc
+		os=-msdos
+		;;
+	ms1-*)
+		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+		;;
+	msys)
+		basic_machine=i686-pc
+		os=-msys
+		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+	nacl)
+		basic_machine=le32-unknown
+		os=-nacl
+		;;
+	ncr3000)
+		basic_machine=i486-ncr
+		os=-sysv4
+		;;
+	netbsd386)
+		basic_machine=i386-unknown
+		os=-netbsd
+		;;
+	netwinder)
+		basic_machine=armv4l-rebel
+		os=-linux
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=m68k-sony
+		os=-newsos
+		;;
+	news1000)
+		basic_machine=m68030-sony
+		os=-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=mips-sony
+		os=-newsos
+		;;
+	necv70)
+		basic_machine=v70-nec
+		os=-sysv
+		;;
+	next | m*-next )
+		basic_machine=m68k-next
+		case $os in
+		    -nextstep* )
+			;;
+		    -ns2*)
+		      os=-nextstep2
+			;;
+		    *)
+		      os=-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=m68k-harris
+		os=-cxux
+		;;
+	nh[45]000)
+		basic_machine=m88k-harris
+		os=-cxux
+		;;
+	nindy960)
+		basic_machine=i960-intel
+		os=-nindy
+		;;
+	mon960)
+		basic_machine=i960-intel
+		os=-mon960
+		;;
+	nonstopux)
+		basic_machine=mips-compaq
+		os=-nonstopux
+		;;
+	np1)
+		basic_machine=np1-gould
+		;;
+	neo-tandem)
+		basic_machine=neo-tandem
+		;;
+	nse-tandem)
+		basic_machine=nse-tandem
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	openrisc | openrisc-*)
+		basic_machine=or32-unknown
+		;;
+	os400)
+		basic_machine=powerpc-ibm
+		os=-os400
+		;;
+	OSE68000 | ose68000)
+		basic_machine=m68000-ericsson
+		os=-ose
+		;;
+	os68k)
+		basic_machine=m68k-none
+		os=-os68k
+		;;
+	pa-hitachi)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	paragon)
+		basic_machine=i860-intel
+		os=-osf
+		;;
+	parisc)
+		basic_machine=hppa-unknown
+		os=-linux
+		;;
+	parisc-*)
+		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+	pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pc98)
+		basic_machine=i386-pc
+		;;
+	pc98-*)
+		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium | p5 | k5 | k6 | nexgen | viac3)
+		basic_machine=i586-pc
+		;;
+	pentiumpro | p6 | 6x86 | athlon | athlon_*)
+		basic_machine=i686-pc
+		;;
+	pentiumii | pentium2 | pentiumiii | pentium3)
+		basic_machine=i686-pc
+		;;
+	pentium4)
+		basic_machine=i786-pc
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium4-*)
+		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=power-ibm
+		;;
+	ppc | ppcbe)	basic_machine=powerpc-unknown
+		;;
+	ppc-* | ppcbe-*)
+		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle | ppc-le | powerpc-little)
+		basic_machine=powerpcle-unknown
+		;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64)	basic_machine=powerpc64-unknown
+		;;
+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+		basic_machine=powerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
+	rdos | rdos64)
+		basic_machine=x86_64-pc
+		os=-rdos
+		;;
+	rdos32)
+		basic_machine=i386-pc
+		os=-rdos
+		;;
+	rom68k)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	s390 | s390-*)
+		basic_machine=s390-ibm
+		;;
+	s390x | s390x-*)
+		basic_machine=s390x-ibm
+		;;
+	sa29200)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	sb1)
+		basic_machine=mipsisa64sb1-unknown
+		;;
+	sb1el)
+		basic_machine=mipsisa64sb1el-unknown
+		;;
+	sde)
+		basic_machine=mipsisa32-sde
+		os=-elf
+		;;
+	sei)
+		basic_machine=mips-sei
+		os=-seiux
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sh5el)
+		basic_machine=sh5le-unknown
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparclite-wrs | simso-wrs)
+		basic_machine=sparclite-wrs
+		os=-vxworks
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	st2000)
+		basic_machine=m68k-tandem
+		;;
+	stratus)
+		basic_machine=i860-stratus
+		os=-sysv4
+		;;
+	strongarm-* | thumb-*)
+		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	sv1)
+		basic_machine=sv1-cray
+		os=-unicos
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	t3e)
+		basic_machine=alphaev5-cray
+		os=-unicos
+		;;
+	t90)
+		basic_machine=t90-cray
+		os=-unicos
+		;;
+	tile*)
+		basic_machine=$basic_machine-unknown
+		os=-linux-gnu
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	toad1)
+		basic_machine=pdp10-xkl
+		os=-tops20
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	tpf)
+		basic_machine=s390x-ibm
+		os=-tpf
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	v810 | necv810)
+		basic_machine=v810-nec
+		os=-none
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+		basic_machine=f301-fujitsu
+		;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	w65*)
+		basic_machine=w65-wdc
+		os=-none
+		;;
+	w89k-*)
+		basic_machine=hppa1.1-winbond
+		os=-proelf
+		;;
+	xbox)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	xscale-* | xscalee[bl]-*)
+		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+		;;
+	ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
+	z80-*-coff)
+		basic_machine=z80-unknown
+		os=-sim
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		basic_machine=hppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=hppa1.1-oki
+		;;
+	op60c)
+		basic_machine=hppa1.1-oki
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	mmix)
+		basic_machine=mmix-knuth
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=pdp10-unknown
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+		basic_machine=sh-unknown
+		;;
+	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+		basic_machine=sparc-sun
+		;;
+	cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	mac | mpw | mac-mpw)
+		basic_machine=m68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=powerpc-apple
+		;;
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+	# First match some system type aliases
+	# that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-auroraux)
+		os=-auroraux
+		;;
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+	      | -sym* | -kopensolaris* | -plan9* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* | -aros* | -cloudabi* | -sortix* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+	      | -bitrig* | -openbsd* | -solidbsd* \
+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* | -cegcc* \
+	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
+	      | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto-qnx*)
+		;;
+	-nto*)
+		os=`echo $os | sed -e 's|nto|nto-qnx|'`
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux-dietlibc)
+		os=-linux-dietlibc
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+	-os400*)
+		os=-os400
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-syllable*)
+		os=-syllable
+		;;
+	-386bsd)
+		os=-bsd
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-nova*)
+		os=-rtmk-nova
+		;;
+	-ns2 )
+		os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+	-tpf*)
+		os=-tpf
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-ose*)
+		os=-ose
+		;;
+	-es1800*)
+		os=-ose
+		;;
+	-xenix)
+		os=-xenix
+		;;
+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+		os=-mint
+		;;
+	-aros*)
+		os=-aros
+		;;
+	-zvmoe)
+		os=-zvmoe
+		;;
+	-dicos*)
+		os=-dicos
+		;;
+	-nacl*)
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+	score-*)
+		os=-elf
+		;;
+	spu-*)
+		os=-elf
+		;;
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-rebel)
+		os=-linux
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+	c4x-* | tic4x-*)
+		os=-coff
+		;;
+	c8051-*)
+		os=-elf
+		;;
+	hexagon-*)
+		os=-elf
+		;;
+	tic54x-*)
+		os=-coff
+		;;
+	tic55x-*)
+		os=-coff
+		;;
+	tic6x-*)
+		os=-coff
+		;;
+	# This must come before the *-dec entry.
+	pdp10-*)
+		os=-tops20
+		;;
+	pdp11-*)
+		os=-none
+		;;
+	*-dec | vax-*)
+		os=-ultrix4.2
+		;;
+	m68*-apollo)
+		os=-domain
+		;;
+	i386-sun)
+		os=-sunos4.0.2
+		;;
+	m68000-sun)
+		os=-sunos3
+		;;
+	m68*-cisco)
+		os=-aout
+		;;
+	mep-*)
+		os=-elf
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
+	or32-*)
+		os=-coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-haiku)
+		os=-haiku
+		;;
+	*-ibm)
+		os=-aix
+		;;
+	*-knuth)
+		os=-mmixware
+		;;
+	*-wec)
+		os=-proelf
+		;;
+	*-winbond)
+		os=-proelf
+		;;
+	*-oki)
+		os=-proelf
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+	*-gould)
+		os=-sysv
+		;;
+	*-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+	*-sgi)
+		os=-irix
+		;;
+	*-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=-uxpv
+		;;
+	*-rom68k)
+		os=-coff
+		;;
+	*-*bug)
+		os=-coff
+		;;
+	*-apple)
+		os=-macos
+		;;
+	*-atari*)
+		os=-mint
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-cnk*|-aix*)
+				vendor=ibm
+				;;
+			-beos*)
+				vendor=be
+				;;
+			-hpux*)
+				vendor=hp
+				;;
+			-mpeix*)
+				vendor=hp
+				;;
+			-hiux*)
+				vendor=hitachi
+				;;
+			-unos*)
+				vendor=crds
+				;;
+			-dgux*)
+				vendor=dg
+				;;
+			-luna*)
+				vendor=omron
+				;;
+			-genix*)
+				vendor=ns
+				;;
+			-mvs* | -opened*)
+				vendor=ibm
+				;;
+			-os400*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-tpf*)
+				vendor=ibm
+				;;
+			-vxsim* | -vxworks* | -windiss*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+			-hms*)
+				vendor=hitachi
+				;;
+			-mpw* | -macos*)
+				vendor=apple
+				;;
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+				vendor=atari
+				;;
+			-vos*)
+				vendor=stratus
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/proofs/lfsc_checker/config/depcomp b/proofs/lfsc_checker/config/depcomp
new file mode 100755
index 0000000..fc98710
--- /dev/null
+++ b/proofs/lfsc_checker/config/depcomp
@@ -0,0 +1,791 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2013-05-30.07; # UTC
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva at dcc.unicamp.br>.
+
+case $1 in
+  '')
+    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+    exit 1;
+    ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by 'PROGRAMS ARGS'.
+  object      Object file output by 'PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputting dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake at gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'.  Note that this directory component will
+# be either empty or ending with a '/' character.  This is deliberate.
+set_dir_from ()
+{
+  case $1 in
+    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+      *) dir=;;
+  esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+  echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+  # If the compiler actually managed to produce a dependency file,
+  # post-process it.
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form 'foo.o: dependency.h'.
+    # Do two passes, one to just change these to
+    #   $object: dependency.h
+    # and one to simply output
+    #   dependency.h:
+    # which is needed to avoid the deleted-header problem.
+    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+    } > "$depfile"
+    rm -f "$tmpdepfile"
+  else
+    make_dummy_depfile
+  fi
+}
+
+# A tabulation character.
+tab='	'
+# A newline character.
+nl='
+'
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+  # This is just like dashmstdout with a different argument.
+  dashmflag=-xM
+  depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+  # This is just like msvisualcpp but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvisualcpp
+fi
+
+if test "$depmode" = msvc7msys; then
+  # This is just like msvc7 but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+  gccflag=-qmakedep=gcc,-MF
+  depmode=gcc
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).  Also, it might not be
+##   supported by the other compilers which use the 'gcc' depmode.
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The second -e expression handles DOS-style file names with drive
+  # letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the "deleted header file" problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+## Some versions of gcc put a space before the ':'.  On the theory
+## that the space means something, we add a space to the output as
+## well.  hp depmode also adds that space, but also prefixes the VPATH
+## to the object.  Take care to not repeat it in the output.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like '#:fec' to the end of the
+    # dependency line.
+    tr ' ' "$nl" < "$tmpdepfile" \
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
+      | tr "$nl" ' ' >> "$depfile"
+    echo >> "$depfile"
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' "$nl" < "$tmpdepfile" \
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+      >> "$depfile"
+  else
+    make_dummy_depfile
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+xlc)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts '$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  set_dir_from "$object"
+  set_base_from "$object"
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$base.u
+    tmpdepfile3=$dir.libs/$base.u
+    "$@" -Wc,-M
+  else
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$dir$base.u
+    tmpdepfile3=$dir$base.u
+    "$@" -M
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  aix_post_process_depfile
+  ;;
+
+tcc)
+  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+  # FIXME: That version still under development at the moment of writing.
+  #        Make that this statement remains true also for stable, released
+  #        versions.
+  # It will wrap lines (doesn't matter whether long or short) with a
+  # trailing '\', as in:
+  #
+  #   foo.o : \
+  #    foo.c \
+  #    foo.h \
+  #
+  # It will put a trailing '\' even on the last line, and will use leading
+  # spaces rather than leading tabs (at least since its commit 0394caf7
+  # "Emit spaces for -MD").
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+  # We have to change lines of the first kind to '$object: \'.
+  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+  # And for each line of the second kind, we have to emit a 'dep.h:'
+  # dummy dependency, to avoid the deleted-header problem.
+  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+## The order of this option in the case statement is important, since the
+## shell code in configure will try each of these formats in the order
+## listed in this file.  A plain '-MD' option would be understood by many
+## compilers, so we must ensure this comes after the gcc and icc options.
+pgcc)
+  # Portland's C compiler understands '-MD'.
+  # Will always output deps to 'file.d' where file is the root name of the
+  # source file under compilation, even if file resides in a subdirectory.
+  # The object file name does not affect the name of the '.d' file.
+  # pgcc 10.2 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using '\' :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+  set_dir_from "$object"
+  # Use the source, not the object, to determine the base name, since
+  # that's sadly what pgcc will do too.
+  set_base_from "$source"
+  tmpdepfile=$base.d
+
+  # For projects that build the same source file twice into different object
+  # files, the pgcc approach of using the *source* file root name can cause
+  # problems in parallel builds.  Use a locking strategy to avoid stomping on
+  # the same $tmpdepfile.
+  lockdir=$base.d-lock
+  trap "
+    echo '$0: caught signal, cleaning up...' >&2
+    rmdir '$lockdir'
+    exit 1
+  " 1 2 13 15
+  numtries=100
+  i=$numtries
+  while test $i -gt 0; do
+    # mkdir is a portable test-and-set.
+    if mkdir "$lockdir" 2>/dev/null; then
+      # This process acquired the lock.
+      "$@" -MD
+      stat=$?
+      # Release the lock.
+      rmdir "$lockdir"
+      break
+    else
+      # If the lock is being held by a different process, wait
+      # until the winning process is done or we timeout.
+      while test -d "$lockdir" && test $i -gt 0; do
+        sleep 1
+        i=`expr $i - 1`
+      done
+    fi
+    i=`expr $i - 1`
+  done
+  trap - 1 2 13 15
+  if test $i -le 0; then
+    echo "$0: failed to acquire lock after $numtries attempts" >&2
+    echo "$0: check lockdir '$lockdir'" >&2
+    exit 1
+  fi
+
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  set_dir_from  "$object"
+  set_base_from "$object"
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add 'dependent.h:' lines.
+    sed -ne '2,${
+               s/^ *//
+               s/ \\*$//
+               s/$/:/
+               p
+             }' "$tmpdepfile" >> "$depfile"
+  else
+    make_dummy_depfile
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
+tru64)
+  # The Tru64 compiler uses -MD to generate dependencies as a side
+  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+  # dependencies in 'foo.d' instead, so we check for that too.
+  # Subdirectories are respected.
+  set_dir_from  "$object"
+  set_base_from "$object"
+
+  if test "$libtool" = yes; then
+    # Libtool generates 2 separate objects for the 2 libraries.  These
+    # two compilations output dependencies in $dir.libs/$base.o.d and
+    # in $dir$base.o.d.  We have to check for both files, because
+    # one of the two compilations can be disabled.  We should prefer
+    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+    # automatically cleaned when .libs/ is deleted, while ignoring
+    # the former would cause a distcleancheck panic.
+    tmpdepfile1=$dir$base.o.d          # libtool 1.5
+    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
+    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
+    "$@" -Wc,-MD
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    tmpdepfile3=$dir$base.d
+    "$@" -MD
+  fi
+
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  # Same post-processing that is required for AIX mode.
+  aix_post_process_depfile
+  ;;
+
+msvc7)
+  if test "$libtool" = yes; then
+    showIncludes=-Wc,-showIncludes
+  else
+    showIncludes=-showIncludes
+  fi
+  "$@" $showIncludes > "$tmpdepfile"
+  stat=$?
+  grep -v '^Note: including file: ' "$tmpdepfile"
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The first sed program below extracts the file names and escapes
+  # backslashes for cygpath.  The second sed program outputs the file
+  # name when reading, but also accumulates all include files in the
+  # hold buffer in order to output them again at the end.  This only
+  # works with sed implementations that can handle large buffers.
+  sed < "$tmpdepfile" -n '
+/^Note: including file:  *\(.*\)/ {
+  s//\1/
+  s/\\/\\\\/g
+  p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+  s/.*/'"$tab"'/
+  G
+  p
+}' >> "$depfile"
+  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
+  rm -f "$tmpdepfile"
+  ;;
+
+msvc7msys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove '-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for ':'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
+  "$@" $dashmflag |
+    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this sed invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no eat=no
+  for arg
+  do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    if test $eat = yes; then
+      eat=no
+      continue
+    fi
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -arch)
+      eat=yes ;;
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix=`echo "$object" | sed 's/^.*\././'`
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  # makedepend may prepend the VPATH from the source file name to the object.
+  # No need to regex-escape $object, excess matching of '.' is harmless.
+  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process the last invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed '1,2d' "$tmpdepfile" \
+    | tr ' ' "$nl" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove '-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E \
+    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+    | sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+        set fnord "$@"
+        shift
+        shift
+        ;;
+    *)
+        set fnord "$@" "$arg"
+        shift
+        shift
+        ;;
+    esac
+  done
+  "$@" -E 2>/dev/null |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+  echo "$tab" >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvcmsys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/proofs/lfsc_checker/config/install-sh b/proofs/lfsc_checker/config/install-sh
new file mode 100755
index 0000000..59990a1
--- /dev/null
+++ b/proofs/lfsc_checker/config/install-sh
@@ -0,0 +1,508 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2014-09-12.12; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# 'make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+tab='	'
+nl='
+'
+IFS=" $tab$nl"
+
+# Set DOITPROG to "echo" to test this script.
+
+doit=${DOITPROG-}
+doit_exec=${doit:-exec}
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+is_target_a_directory=possibly
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+     --help     display this help and exit.
+     --version  display version info and exit.
+
+  -c            (ignored)
+  -C            install only if different (preserve the last data modification time)
+  -d            create directories instead of installing files.
+  -g GROUP      $chgrpprog installed files to GROUP.
+  -m MODE       $chmodprog installed files to MODE.
+  -o USER       $chownprog installed files to USER.
+  -s            $stripprog installed files.
+  -t DIRECTORY  install into DIRECTORY.
+  -T            report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+  RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+  case $1 in
+    -c) ;;
+
+    -C) copy_on_change=true;;
+
+    -d) dir_arg=true;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+        shift;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) mode=$2
+        case $mode in
+          *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
+            echo "$0: invalid mode: $mode" >&2
+            exit 1;;
+        esac
+        shift;;
+
+    -o) chowncmd="$chownprog $2"
+        shift;;
+
+    -s) stripcmd=$stripprog;;
+
+    -t)
+        is_target_a_directory=always
+        dst_arg=$2
+        # Protect names problematic for 'test' and other utilities.
+        case $dst_arg in
+          -* | [=\(\)!]) dst_arg=./$dst_arg;;
+        esac
+        shift;;
+
+    -T) is_target_a_directory=never;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    --) shift
+        break;;
+
+    -*) echo "$0: invalid option: $1" >&2
+        exit 1;;
+
+    *)  break;;
+  esac
+  shift
+done
+
+# We allow the use of options -d and -T together, by making -d
+# take the precedence; this is for compatibility with GNU install.
+
+if test -n "$dir_arg"; then
+  if test -n "$dst_arg"; then
+    echo "$0: target directory not allowed when installing a directory." >&2
+    exit 1
+  fi
+fi
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+  # When -d is used, all remaining arguments are directories to create.
+  # When -t is used, the destination is already specified.
+  # Otherwise, the last argument is the destination.  Remove it from $@.
+  for arg
+  do
+    if test -n "$dst_arg"; then
+      # $@ is not empty: it contains at least $arg.
+      set fnord "$@" "$dst_arg"
+      shift # fnord
+    fi
+    shift # arg
+    dst_arg=$arg
+    # Protect names problematic for 'test' and other utilities.
+    case $dst_arg in
+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
+    esac
+  done
+fi
+
+if test $# -eq 0; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call 'install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
+
+if test -z "$dir_arg"; then
+  if test $# -gt 1 || test "$is_target_a_directory" = always; then
+    if test ! -d "$dst_arg"; then
+      echo "$0: $dst_arg: Is not a directory." >&2
+      exit 1
+    fi
+  fi
+fi
+
+if test -z "$dir_arg"; then
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
+
+  # Set umask so as not to create temps with too-generous modes.
+  # However, 'strip' requires both read and write access to temps.
+  case $mode in
+    # Optimize common cases.
+    *644) cp_umask=133;;
+    *755) cp_umask=22;;
+
+    *[0-7])
+      if test -z "$stripcmd"; then
+        u_plus_rw=
+      else
+        u_plus_rw='% 200'
+      fi
+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+    *)
+      if test -z "$stripcmd"; then
+        u_plus_rw=
+      else
+        u_plus_rw=,u+rw
+      fi
+      cp_umask=$mode$u_plus_rw;;
+  esac
+fi
+
+for src
+do
+  # Protect names problematic for 'test' and other utilities.
+  case $src in
+    -* | [=\(\)!]) src=./$src;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    dstdir=$dst
+    test -d "$dstdir"
+    dstdir_status=$?
+  else
+
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dst_arg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+    dst=$dst_arg
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test "$is_target_a_directory" = never; then
+        echo "$0: $dst_arg: Is a directory" >&2
+        exit 1
+      fi
+      dstdir=$dst
+      dst=$dstdir/`basename "$src"`
+      dstdir_status=0
+    else
+      dstdir=`dirname "$dst"`
+      test -d "$dstdir"
+      dstdir_status=$?
+    fi
+  fi
+
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+        # Create intermediate dirs using mode 755 as modified by the umask.
+        # This is like FreeBSD 'install' as of 1997-10-28.
+        umask=`umask`
+        case $stripcmd.$umask in
+          # Optimize common cases.
+          *[2367][2367]) mkdir_umask=$umask;;
+          .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+          *[0-7])
+            mkdir_umask=`expr $umask + 22 \
+              - $umask % 100 % 40 + $umask % 20 \
+              - $umask % 10 % 4 + $umask % 2
+            `;;
+          *) mkdir_umask=$umask,go-w;;
+        esac
+
+        # With -d, create the new directory with the user-specified mode.
+        # Otherwise, rely on $mkdir_umask.
+        if test -n "$dir_arg"; then
+          mkdir_mode=-m$mode
+        else
+          mkdir_mode=
+        fi
+
+        posix_mkdir=false
+        case $umask in
+          *[123567][0-7][0-7])
+            # POSIX mkdir -p sets u+wx bits regardless of umask, which
+            # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+            ;;
+          *)
+            # $RANDOM is not portable (e.g. dash);  use it when possible to
+            # lower collision chance
+            tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+            trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+            # As "mkdir -p" follows symlinks and we work in /tmp possibly;  so
+            # create the $tmpdir first (and fail if unsuccessful) to make sure
+            # that nobody tries to guess the $tmpdir name.
+            if (umask $mkdir_umask &&
+                $mkdirprog $mkdir_mode "$tmpdir" &&
+                exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
+            then
+              if test -z "$dir_arg" || {
+                   # Check for POSIX incompatibilities with -m.
+                   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+                   # other-writable bit of parent directory when it shouldn't.
+                   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+                   test_tmpdir="$tmpdir/a"
+                   ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
+                   case $ls_ld_tmpdir in
+                     d????-?r-*) different_mode=700;;
+                     d????-?--*) different_mode=755;;
+                     *) false;;
+                   esac &&
+                   $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
+                     ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
+                     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+                   }
+                 }
+              then posix_mkdir=:
+              fi
+              rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
+            else
+              # Remove any dirs left behind by ancient mkdir implementations.
+              rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
+            fi
+            trap '' 0;;
+        esac;;
+    esac
+
+    if
+      $posix_mkdir && (
+        umask $mkdir_umask &&
+        $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
+
+      # The umask is ridiculous, or mkdir does not conform to POSIX,
+      # or it failed possibly due to a race condition.  Create the
+      # directory the slow way, step by step, checking for races as we go.
+
+      case $dstdir in
+        /*) prefix='/';;
+        [-=\(\)!]*) prefix='./';;
+        *)  prefix='';;
+      esac
+
+      oIFS=$IFS
+      IFS=/
+      set -f
+      set fnord $dstdir
+      shift
+      set +f
+      IFS=$oIFS
+
+      prefixes=
+
+      for d
+      do
+        test X"$d" = X && continue
+
+        prefix=$prefix$d
+        if test -d "$prefix"; then
+          prefixes=
+        else
+          if $posix_mkdir; then
+            (umask=$mkdir_umask &&
+             $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+            # Don't fail if two instances are running concurrently.
+            test -d "$prefix" || exit 1
+          else
+            case $prefix in
+              *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+              *) qprefix=$prefix;;
+            esac
+            prefixes="$prefixes '$qprefix'"
+          fi
+        fi
+        prefix=$prefix/
+      done
+
+      if test -n "$prefixes"; then
+        # Don't fail if two instances are running concurrently.
+        (umask $mkdir_umask &&
+         eval "\$doit_exec \$mkdirprog $prefixes") ||
+          test -d "$dstdir" || exit 1
+        obsolete_mkdir_used=true
+      fi
+    fi
+  fi
+
+  if test -n "$dir_arg"; then
+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+  else
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+    # Copy the file name to the temp name.
+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+    # and set any options; do chmod last to preserve setuid bits.
+    #
+    # If any of these fail, we abort the whole thing.  If we want to
+    # ignore errors from any of these, just make sure not to ignore
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+    # If -C, don't bother to copy if it wouldn't change the file.
+    if $copy_on_change &&
+       old=`LC_ALL=C ls -dlL "$dst"     2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp"  2>/dev/null` &&
+       set -f &&
+       set X $old && old=:$2:$4:$5:$6 &&
+       set X $new && new=:$2:$4:$5:$6 &&
+       set +f &&
+       test "$old" = "$new" &&
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+    then
+      rm -f "$dsttmp"
+    else
+      # Rename the file to the real destination.
+      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+      # The rename failed, perhaps because mv can't rename something else
+      # to itself, or perhaps because mv is so ancient that it does not
+      # support -f.
+      {
+        # Now remove or move aside any old file at destination location.
+        # We try this two ways since rm can't unlink itself on some
+        # systems and the destination file might be busy for other
+        # reasons.  In this case, the final cleanup might fail but the new
+        # file should still install successfully.
+        {
+          test ! -f "$dst" ||
+          $doit $rmcmd -f "$dst" 2>/dev/null ||
+          { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+            { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+          } ||
+          { echo "$0: cannot unlink or rename $dst" >&2
+            (exit 1); exit 1
+          }
+        } &&
+
+        # Now rename the file to the real destination.
+        $doit $mvcmd "$dsttmp" "$dst"
+      }
+    fi || exit 1
+
+    trap '' 0
+  fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/proofs/lfsc_checker/config/libtool.m4 b/proofs/lfsc_checker/config/libtool.m4
new file mode 100644
index 0000000..10ab284
--- /dev/null
+++ b/proofs/lfsc_checker/config/libtool.m4
@@ -0,0 +1,8388 @@
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+#   Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+m4_define([_LT_COPYING], [dnl
+# Copyright (C) 2014 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of of the License, or
+# (at your option) any later version.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program or library that is built
+# using GNU Libtool, you may include this file under the  same
+# distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+])
+
+# serial 58 LT_INIT
+
+
+# LT_PREREQ(VERSION)
+# ------------------
+# Complain and exit if this libtool version is less that VERSION.
+m4_defun([LT_PREREQ],
+[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
+       [m4_default([$3],
+		   [m4_fatal([Libtool version $1 or higher is required],
+		             63)])],
+       [$2])])
+
+
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+m4_defun([_LT_CHECK_BUILDDIR],
+[case `pwd` in
+  *\ * | *\	*)
+    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
+esac
+])
+
+
+# LT_INIT([OPTIONS])
+# ------------------
+AC_DEFUN([LT_INIT],
+[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK
+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS=$ltmain
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])# LT_INIT
+
+# Old names:
+AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
+AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
+dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
+
+
+# _LT_PREPARE_CC_BASENAME
+# -----------------------
+m4_defun([_LT_PREPARE_CC_BASENAME], [
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+func_cc_basename ()
+{
+    for cc_temp in @S|@*""; do
+      case $cc_temp in
+        compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+        distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+        \-*) ;;
+        *) break;;
+      esac
+    done
+    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+}
+])# _LT_PREPARE_CC_BASENAME
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME,
+# but that macro is also expanded into generated libtool script, which
+# arranges for $SED and $ECHO to be set by different means.
+m4_defun([_LT_CC_BASENAME],
+[m4_require([_LT_PREPARE_CC_BASENAME])dnl
+AC_REQUIRE([_LT_DECL_SED])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+func_cc_basename $1
+cc_basename=$func_cc_basename_result
+])
+
+
+# _LT_FILEUTILS_DEFAULTS
+# ----------------------
+# It is okay to use these file commands and assume they have been set
+# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'.
+m4_defun([_LT_FILEUTILS_DEFAULTS],
+[: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+])# _LT_FILEUTILS_DEFAULTS
+
+
+# _LT_SETUP
+# ---------
+m4_defun([_LT_SETUP],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+
+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
+dnl
+_LT_DECL([], [host_alias], [0], [The host system])dnl
+_LT_DECL([], [host], [0])dnl
+_LT_DECL([], [host_os], [0])dnl
+dnl
+_LT_DECL([], [build_alias], [0], [The build system])dnl
+_LT_DECL([], [build], [0])dnl
+_LT_DECL([], [build_os], [0])dnl
+dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+test -z "$LN_S" && LN_S="ln -s"
+_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
+dnl
+AC_REQUIRE([LT_CMD_MAX_LEN])dnl
+_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
+_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
+m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
+m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_WITH_SYSROOT])dnl
+m4_require([_LT_CMD_TRUNCATE])dnl
+
+_LT_CONFIG_LIBTOOL_INIT([
+# See if we are running on zsh, and set the options that allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}"; then
+   setopt NO_GLOB_SUBST
+fi
+])
+if test -n "${ZSH_VERSION+set}"; then
+   setopt NO_GLOB_SUBST
+fi
+
+_LT_CHECK_OBJDIR
+
+m4_require([_LT_TAG_COMPILER])dnl
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test set != "${COLLECT_NAMES+set}"; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a '.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+old_CC=$CC
+old_CFLAGS=$CFLAGS
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    _LT_PATH_MAGIC
+  fi
+  ;;
+esac
+
+# Use C for the default configuration in the libtool script
+LT_SUPPORTED_TAG([CC])
+_LT_LANG_C_CONFIG
+_LT_LANG_DEFAULT_CONFIG
+_LT_CONFIG_COMMANDS
+])# _LT_SETUP
+
+
+# _LT_PREPARE_SED_QUOTE_VARS
+# --------------------------
+# Define a few sed substitution that help us do robust quoting.
+m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
+[# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+])
+
+# _LT_PROG_LTMAIN
+# ---------------
+# Note that this code is called both from 'configure', and 'config.status'
+# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
+# 'config.status' has no value for ac_aux_dir unless we are using Automake,
+# so we pass a copy along to make sure it has a sensible value anyway.
+m4_defun([_LT_PROG_LTMAIN],
+[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
+_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
+ltmain=$ac_aux_dir/ltmain.sh
+])# _LT_PROG_LTMAIN
+
+
+## ------------------------------------- ##
+## Accumulate code for creating libtool. ##
+## ------------------------------------- ##
+
+# So that we can recreate a full libtool script including additional
+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+# in macros and then make a single call at the end using the 'libtool'
+# label.
+
+
+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+# ----------------------------------------
+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL_INIT],
+[m4_ifval([$1],
+          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
+                     [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_INIT])
+
+
+# _LT_CONFIG_LIBTOOL([COMMANDS])
+# ------------------------------
+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL],
+[m4_ifval([$1],
+          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
+                     [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
+
+
+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+# -----------------------------------------------------
+m4_defun([_LT_CONFIG_SAVE_COMMANDS],
+[_LT_CONFIG_LIBTOOL([$1])
+_LT_CONFIG_LIBTOOL_INIT([$2])
+])
+
+
+# _LT_FORMAT_COMMENT([COMMENT])
+# -----------------------------
+# Add leading comment marks to the start of each line, and a trailing
+# full-stop to the whole comment if one is not present already.
+m4_define([_LT_FORMAT_COMMENT],
+[m4_ifval([$1], [
+m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
+              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
+)])
+
+
+
+## ------------------------ ##
+## FIXME: Eliminate VARNAME ##
+## ------------------------ ##
+
+
+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+# -------------------------------------------------------------------
+# CONFIGNAME is the name given to the value in the libtool script.
+# VARNAME is the (base) name used in the configure script.
+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+# VARNAME.  Any other value will be used directly.
+m4_define([_LT_DECL],
+[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
+    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
+	[m4_ifval([$1], [$1], [$2])])
+    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
+    m4_ifval([$4],
+	[lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
+    lt_dict_add_subkey([lt_decl_dict], [$2],
+	[tagged?], [m4_ifval([$5], [yes], [no])])])
+])
+
+
+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+# --------------------------------------------------------
+m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
+
+
+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_tag_varnames],
+[_lt_decl_filter([tagged?], [yes], $@)])
+
+
+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+# ---------------------------------------------------------
+m4_define([_lt_decl_filter],
+[m4_case([$#],
+  [0], [m4_fatal([$0: too few arguments: $#])],
+  [1], [m4_fatal([$0: too few arguments: $#: $1])],
+  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
+  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
+  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
+])
+
+
+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+# --------------------------------------------------
+m4_define([lt_decl_quote_varnames],
+[_lt_decl_filter([value], [1], $@)])
+
+
+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_dquote_varnames],
+[_lt_decl_filter([value], [2], $@)])
+
+
+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_varnames_tagged],
+[m4_assert([$# <= 2])dnl
+_$0(m4_quote(m4_default([$1], [[, ]])),
+    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
+    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
+m4_define([_lt_decl_varnames_tagged],
+[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
+
+
+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_all_varnames],
+[_$0(m4_quote(m4_default([$1], [[, ]])),
+     m4_if([$2], [],
+	   m4_quote(lt_decl_varnames),
+	m4_quote(m4_shift($@))))[]dnl
+])
+m4_define([_lt_decl_all_varnames],
+[lt_join($@, lt_decl_varnames_tagged([$1],
+			lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
+])
+
+
+# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+# ------------------------------------
+# Quote a variable value, and forward it to 'config.status' so that its
+# declaration there will have the same value as in 'configure'.  VARNAME
+# must have a single quote delimited value for this to work.
+m4_define([_LT_CONFIG_STATUS_DECLARE],
+[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
+
+
+# _LT_CONFIG_STATUS_DECLARATIONS
+# ------------------------------
+# We delimit libtool config variables with single quotes, so when
+# we write them to config.status, we have to be sure to quote all
+# embedded single quotes properly.  In configure, this macro expands
+# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+#
+#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
+m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
+    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAGS
+# ----------------
+# Output comment and list of tags supported by the script
+m4_defun([_LT_LIBTOOL_TAGS],
+[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
+available_tags='_LT_TAGS'dnl
+])
+
+
+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+# -----------------------------------
+# Extract the dictionary values for VARNAME (optionally with TAG) and
+# expand to a commented shell variable setting:
+#
+#    # Some comment about what VAR is for.
+#    visible_name=$lt_internal_name
+m4_define([_LT_LIBTOOL_DECLARE],
+[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
+					   [description])))[]dnl
+m4_pushdef([_libtool_name],
+    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
+m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
+    [0], [_libtool_name=[$]$1],
+    [1], [_libtool_name=$lt_[]$1],
+    [2], [_libtool_name=$lt_[]$1],
+    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
+m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
+])
+
+
+# _LT_LIBTOOL_CONFIG_VARS
+# -----------------------
+# Produce commented declarations of non-tagged libtool config variables
+# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool'
+# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
+# section) are produced by _LT_LIBTOOL_TAG_VARS.
+m4_defun([_LT_LIBTOOL_CONFIG_VARS],
+[m4_foreach([_lt_var],
+    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
+    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAG_VARS(TAG)
+# -------------------------
+m4_define([_LT_LIBTOOL_TAG_VARS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
+    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
+
+
+# _LT_TAGVAR(VARNAME, [TAGNAME])
+# ------------------------------
+m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
+
+
+# _LT_CONFIG_COMMANDS
+# -------------------
+# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
+# variables for single and double quote escaping we saved from calls
+# to _LT_DECL, we can put quote escaped variables declarations
+# into 'config.status', and then the shell code to quote escape them in
+# for loops in 'config.status'.  Finally, any additional code accumulated
+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+m4_defun([_LT_CONFIG_COMMANDS],
+[AC_PROVIDE_IFELSE([LT_OUTPUT],
+	dnl If the libtool generation code has been placed in $CONFIG_LT,
+	dnl instead of duplicating it all over again into config.status,
+	dnl then we will have config.status run $CONFIG_LT later, so it
+	dnl needs to know what name is stored there:
+        [AC_CONFIG_COMMANDS([libtool],
+            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
+    dnl If the libtool generation code is destined for config.status,
+    dnl expand the accumulated commands and init code now:
+    [AC_CONFIG_COMMANDS([libtool],
+        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
+])#_LT_CONFIG_COMMANDS
+
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
+[
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+_LT_CONFIG_STATUS_DECLARATIONS
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$[]1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_quote_varnames); do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_dquote_varnames); do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+_LT_OUTPUT_LIBTOOL_INIT
+])
+
+# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
+# ------------------------------------
+# Generate a child script FILE with all initialization necessary to
+# reuse the environment learned by the parent script, and make the
+# file executable.  If COMMENT is supplied, it is inserted after the
+# '#!' sequence but before initialization text begins.  After this
+# macro, additional text can be appended to FILE to form the body of
+# the child script.  The macro ends with non-zero status if the
+# file could not be fully written (such as if the disk is full).
+m4_ifdef([AS_INIT_GENERATED],
+[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
+[m4_defun([_LT_GENERATED_FILE_INIT],
+[m4_require([AS_PREPARE])]dnl
+[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
+[lt_write_fail=0
+cat >$1 <<_ASEOF || lt_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+$2
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$1 <<\_ASEOF || lt_write_fail=1
+AS_SHELL_SANITIZE
+_AS_PREPARE
+exec AS_MESSAGE_FD>&1
+_ASEOF
+test 0 = "$lt_write_fail" && chmod +x $1[]dnl
+m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
+
+# LT_OUTPUT
+# ---------
+# This macro allows early generation of the libtool script (before
+# AC_OUTPUT is called), incase it is used in configure for compilation
+# tests.
+AC_DEFUN([LT_OUTPUT],
+[: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
+[# Run this file to recreate a libtool stub with the current configuration.])
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+lt_cl_silent=false
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+  echo
+  AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+'$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+  -h, --help      print this help, then exit
+  -V, --version   print version number, then exit
+  -q, --quiet     do not print progress messages
+  -d, --debug     don't remove temporary files
+
+Report bugs to <bug-libtool at gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2011 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test 0 != $[#]
+do
+  case $[1] in
+    --version | --v* | -V )
+      echo "$lt_cl_version"; exit 0 ;;
+    --help | --h* | -h )
+      echo "$lt_cl_help"; exit 0 ;;
+    --debug | --d* | -d )
+      debug=: ;;
+    --quiet | --q* | --silent | --s* | -q )
+      lt_cl_silent=: ;;
+
+    -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try '$[0] --help' for more information.]) ;;
+
+    *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try '$[0] --help' for more information.]) ;;
+  esac
+  shift
+done
+
+if $lt_cl_silent; then
+  exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure.  Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+lt_cl_success=:
+test yes = "$silent" &&
+  lt_config_lt_args="$lt_config_lt_args --quiet"
+exec AS_MESSAGE_LOG_FD>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec AS_MESSAGE_LOG_FD>>config.log
+$lt_cl_success || AS_EXIT(1)
+])# LT_OUTPUT
+
+
+# _LT_CONFIG(TAG)
+# ---------------
+# If TAG is the built-in tag, create an initial libtool script with a
+# default configuration from the untagged config vars.  Otherwise add code
+# to config.status for appending the configuration named by TAG from the
+# matching tagged config vars.
+m4_defun([_LT_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_CONFIG_SAVE_COMMANDS([
+  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
+  m4_if(_LT_TAG, [C], [
+    # See if we are running on zsh, and set the options that allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}"; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile=${ofile}T
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+# Generated automatically by $as_me ($PACKAGE) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+
+# Provide generalized library-building support services.
+# Written by Gordon Matzigkeit, 1996
+
+_LT_COPYING
+_LT_LIBTOOL_TAGS
+
+# Configured defaults for sys_lib_dlsearch_path munging.
+: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"}
+
+# ### BEGIN LIBTOOL CONFIG
+_LT_LIBTOOL_CONFIG_VARS
+_LT_LIBTOOL_TAG_VARS
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+    cat <<'_LT_EOF' >> "$cfgfile"
+
+# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE
+
+_LT_PREPARE_MUNGE_PATH_LIST
+_LT_PREPARE_CC_BASENAME
+
+# ### END FUNCTIONS SHARED WITH CONFIGURE
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test set != "${COLLECT_NAMES+set}"; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+  _LT_PROG_LTMAIN
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" \
+     || (rm -f "$cfgfile"; exit 1)
+
+   mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+],
+[cat <<_LT_EOF >> "$ofile"
+
+dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
+dnl in a comment (ie after a #).
+# ### BEGIN LIBTOOL TAG CONFIG: $1
+_LT_LIBTOOL_TAG_VARS(_LT_TAG)
+# ### END LIBTOOL TAG CONFIG: $1
+_LT_EOF
+])dnl /m4_if
+],
+[m4_if([$1], [], [
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    RM='$RM'
+    ofile='$ofile'], [])
+])dnl /_LT_CONFIG_SAVE_COMMANDS
+])# _LT_CONFIG
+
+
+# LT_SUPPORTED_TAG(TAG)
+# ---------------------
+# Trace this macro to discover what tags are supported by the libtool
+# --tag option, using:
+#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
+AC_DEFUN([LT_SUPPORTED_TAG], [])
+
+
+# C support is built-in for now
+m4_define([_LT_LANG_C_enabled], [])
+m4_define([_LT_TAGS], [])
+
+
+# LT_LANG(LANG)
+# -------------
+# Enable libtool support for the given language if not already enabled.
+AC_DEFUN([LT_LANG],
+[AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+  [C],			[_LT_LANG(C)],
+  [C++],		[_LT_LANG(CXX)],
+  [Go],			[_LT_LANG(GO)],
+  [Java],		[_LT_LANG(GCJ)],
+  [Fortran 77],		[_LT_LANG(F77)],
+  [Fortran],		[_LT_LANG(FC)],
+  [Windows Resource],	[_LT_LANG(RC)],
+  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+    [_LT_LANG($1)],
+    [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])# LT_LANG
+
+
+# _LT_LANG(LANGNAME)
+# ------------------
+m4_defun([_LT_LANG],
+[m4_ifdef([_LT_LANG_]$1[_enabled], [],
+  [LT_SUPPORTED_TAG([$1])dnl
+  m4_append([_LT_TAGS], [$1 ])dnl
+  m4_define([_LT_LANG_]$1[_enabled], [])dnl
+  _LT_LANG_$1_CONFIG($1)])dnl
+])# _LT_LANG
+
+
+m4_ifndef([AC_PROG_GO], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_GO.  When it is available in    #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+############################################################
+m4_defun([AC_PROG_GO],
+[AC_LANG_PUSH(Go)dnl
+AC_ARG_VAR([GOC],     [Go compiler command])dnl
+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
+_AC_ARG_VAR_LDFLAGS()dnl
+AC_CHECK_TOOL(GOC, gccgo)
+if test -z "$GOC"; then
+  if test -n "$ac_tool_prefix"; then
+    AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
+  fi
+fi
+if test -z "$GOC"; then
+  AC_CHECK_PROG(GOC, gccgo, gccgo, false)
+fi
+])#m4_defun
+])#m4_ifndef
+
+
+# _LT_LANG_DEFAULT_CONFIG
+# -----------------------
+m4_defun([_LT_LANG_DEFAULT_CONFIG],
+[AC_PROVIDE_IFELSE([AC_PROG_CXX],
+  [LT_LANG(CXX)],
+  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_F77],
+  [LT_LANG(F77)],
+  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_FC],
+  [LT_LANG(FC)],
+  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
+
+dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
+dnl pulling things in needlessly.
+AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+  [LT_LANG(GCJ)],
+  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+    [LT_LANG(GCJ)],
+    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
+      [LT_LANG(GCJ)],
+      [m4_ifdef([AC_PROG_GCJ],
+	[m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
+       m4_ifdef([A][M_PROG_GCJ],
+	[m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
+       m4_ifdef([LT_PROG_GCJ],
+	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+
+AC_PROVIDE_IFELSE([AC_PROG_GO],
+  [LT_LANG(GO)],
+  [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
+
+AC_PROVIDE_IFELSE([LT_PROG_RC],
+  [LT_LANG(RC)],
+  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
+])# _LT_LANG_DEFAULT_CONFIG
+
+# Obsolete macros:
+AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
+dnl AC_DEFUN([AC_LIBTOOL_F77], [])
+dnl AC_DEFUN([AC_LIBTOOL_FC], [])
+dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+dnl AC_DEFUN([AC_LIBTOOL_RC], [])
+
+
+# _LT_TAG_COMPILER
+# ----------------
+m4_defun([_LT_TAG_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
+_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
+_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
+_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_TAG_COMPILER
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+m4_defun([_LT_COMPILER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+m4_defun([_LT_LINKER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+])# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
+  case $host_os in
+    rhapsody* | darwin*)
+    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+    AC_CHECK_TOOL([LIPO], [lipo], [:])
+    AC_CHECK_TOOL([OTOOL], [otool], [:])
+    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
+    _LT_DECL([], [DSYMUTIL], [1],
+      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
+    _LT_DECL([], [NMEDIT], [1],
+      [Tool to change global to local symbols on Mac OS X])
+    _LT_DECL([], [LIPO], [1],
+      [Tool to manipulate fat objects and archives on Mac OS X])
+    _LT_DECL([], [OTOOL], [1],
+      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
+    _LT_DECL([], [OTOOL64], [1],
+      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
+
+    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+      [lt_cv_apple_cc_single_mod=no
+      if test -z "$LT_MULTI_MODULE"; then
+	# By default we will add the -single_module flag. You can override
+	# by either setting the environment variable LT_MULTI_MODULE
+	# non-empty at configure time, or by adding -multi_module to the
+	# link flags.
+	rm -rf libconftest.dylib*
+	echo "int foo(void){return 1;}" > conftest.c
+	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
+	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+	# If there is a non-empty error log, and "single_module"
+	# appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+	  cat conftest.err >&AS_MESSAGE_LOG_FD
+	# Otherwise, if the output was created with a 0 exit code from
+	# the compiler, it worked.
+	elif test -f libconftest.dylib && test 0 = "$_lt_result"; then
+	  lt_cv_apple_cc_single_mod=yes
+	else
+	  cat conftest.err >&AS_MESSAGE_LOG_FD
+	fi
+	rm -rf libconftest.dylib*
+	rm -f conftest.*
+      fi])
+
+    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+      [lt_cv_ld_exported_symbols_list],
+      [lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+	[lt_cv_ld_exported_symbols_list=yes],
+	[lt_cv_ld_exported_symbols_list=no])
+	LDFLAGS=$save_LDFLAGS
+    ])
+
+    AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
+      [lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
+      echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+      $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
+      echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
+      $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -s conftest.err && $GREP force_load conftest.err; then
+	cat conftest.err >&AS_MESSAGE_LOG_FD
+      elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then
+	lt_cv_ld_force_load=yes
+      else
+	cat conftest.err >&AS_MESSAGE_LOG_FD
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+    ])
+    case $host_os in
+    rhapsody* | darwin1.[[012]])
+      _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+	  _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+	10.[[012]][[,.]]*)
+	  _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+	10.*)
+	  _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test yes = "$lt_cv_apple_cc_single_mod"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test yes = "$lt_cv_ld_exported_symbols_list"; then
+      _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib'
+    fi
+    if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+])
+
+
+# _LT_DARWIN_LINKER_FEATURES([TAG])
+# ---------------------------------
+# Checks for linker and compiler features on darwin
+m4_defun([_LT_DARWIN_LINKER_FEATURES],
+[
+  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
+  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+  _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_automatic, $1)=yes
+  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  if test yes = "$lt_cv_ld_force_load"; then
+    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+    m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
+                  [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=yes])
+  else
+    _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+  fi
+  _LT_TAGVAR(link_all_deplibs, $1)=yes
+  _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined
+  case $cc_basename in
+     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test yes = "$_lt_dar_can_shared"; then
+    output_verbose_link_cmd=func_echo_all
+    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
+    m4_if([$1], [CXX],
+[   if test yes != "$lt_cv_apple_cc_single_mod"; then
+      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
+      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
+    fi
+],[])
+  else
+  _LT_TAGVAR(ld_shlibs, $1)=no
+  fi
+])
+
+# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
+# ----------------------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+# Store the results from the different compilers for each TAGNAME.
+# Allow to override them for all tags through lt_cv_aix_libpath.
+m4_defun([_LT_SYS_MODULE_PATH_AIX],
+[m4_require([_LT_DECL_SED])dnl
+if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
+  [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
+  lt_aix_libpath_sed='[
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }]'
+  _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi],[])
+  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib
+  fi
+  ])
+  aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
+fi
+])# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+m4_define([_LT_SHELL_INIT],
+[m4_divert_text([M4SH-INIT], [$1
+])])# _LT_SHELL_INIT
+
+
+
+# _LT_PROG_ECHO_BACKSLASH
+# -----------------------
+# Find how we can fake an echo command that does not interpret backslash.
+# In particular, with Autoconf 2.60 or later we add some code to the start
+# of the generated configure script that will find a shell with a builtin
+# printf (that we can use as an echo command).
+m4_defun([_LT_PROG_ECHO_BACKSLASH],
+[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+AC_MSG_CHECKING([how to print strings])
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
+else
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$[]1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*"
+}
+
+case $ECHO in
+  printf*) AC_MSG_RESULT([printf]) ;;
+  print*) AC_MSG_RESULT([print -r]) ;;
+  *) AC_MSG_RESULT([cat]) ;;
+esac
+
+m4_ifdef([_AS_DETECT_SUGGESTED],
+[_AS_DETECT_SUGGESTED([
+  test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test "X`printf %s $ECHO`" = "X$ECHO" \
+      || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
+
+_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
+_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
+])# _LT_PROG_ECHO_BACKSLASH
+
+
+# _LT_WITH_SYSROOT
+# ----------------
+AC_DEFUN([_LT_WITH_SYSROOT],
+[AC_MSG_CHECKING([for sysroot])
+AC_ARG_WITH([sysroot],
+[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@],
+  [Search for dependent libraries within DIR (or the compiler's sysroot
+   if not specified).])],
+[], [with_sysroot=no])
+
+dnl lt_sysroot will always be passed unquoted.  We quote it here
+dnl in case the user passed a directory name.
+lt_sysroot=
+case $with_sysroot in #(
+ yes)
+   if test yes = "$GCC"; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   AC_MSG_RESULT([$with_sysroot])
+   AC_MSG_ERROR([The sysroot must be an absolute path.])
+   ;;
+esac
+
+ AC_MSG_RESULT([${lt_sysroot:-no}])
+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
+[dependent libraries, and where our libraries should be installed.])])
+
+# _LT_ENABLE_LOCK
+# ---------------
+m4_defun([_LT_ENABLE_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+  [AS_HELP_STRING([--disable-libtool-lock],
+    [avoid locking (might break parallel builds)])])
+test no = "$enable_libtool_lock" || enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out what ABI is being produced by ac_compile, and set mode
+  # options accordingly.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+	HPUX_IA64_MODE=32
+	;;
+      *ELF-64*)
+	HPUX_IA64_MODE=64
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
+  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    if test yes = "$lt_cv_prog_gnu_ld"; then
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -melf32bsmip"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -melf32bmipn32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -melf64bmip"
+	;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -32"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -n32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -64"
+	  ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
+
+mips64*-*linux*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
+  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    emul=elf
+    case `/usr/bin/file conftest.$ac_objext` in
+      *32-bit*)
+	emul="${emul}32"
+	;;
+      *64-bit*)
+	emul="${emul}64"
+	;;
+    esac
+    case `/usr/bin/file conftest.$ac_objext` in
+      *MSB*)
+	emul="${emul}btsmip"
+	;;
+      *LSB*)
+	emul="${emul}ltsmip"
+	;;
+    esac
+    case `/usr/bin/file conftest.$ac_objext` in
+      *N32*)
+	emul="${emul}n32"
+	;;
+    esac
+    LD="${LD-ld} -m $emul"
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.  Note that the listed cases only cover the
+  # situations where additional linker options are needed (such as when
+  # doing 32-bit compilation for a host where ld defaults to 64-bit, or
+  # vice versa); the common cases where no linker options are needed do
+  # not appear in the list.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_i386_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    case `/usr/bin/file conftest.o` in
+	      *x86-64*)
+		LD="${LD-ld} -m elf32_x86_64"
+		;;
+	      *)
+		LD="${LD-ld} -m elf_i386"
+		;;
+	    esac
+	    ;;
+	  powerpc64le-*linux*)
+	    LD="${LD-ld} -m elf32lppclinux"
+	    ;;
+	  powerpc64-*linux*)
+	    LD="${LD-ld} -m elf32ppclinux"
+	    ;;
+	  s390x-*linux*)
+	    LD="${LD-ld} -m elf_s390"
+	    ;;
+	  sparc64-*linux*)
+	    LD="${LD-ld} -m elf32_sparc"
+	    ;;
+	esac
+	;;
+      *64-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_x86_64_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_x86_64"
+	    ;;
+	  powerpcle-*linux*)
+	    LD="${LD-ld} -m elf64lppc"
+	    ;;
+	  powerpc-*linux*)
+	    LD="${LD-ld} -m elf64ppc"
+	    ;;
+	  s390*-*linux*|s390*-*tpf*)
+	    LD="${LD-ld} -m elf64_s390"
+	    ;;
+	  sparc*-*linux*)
+	    LD="${LD-ld} -m elf64_sparc"
+	    ;;
+	esac
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS=$CFLAGS
+  CFLAGS="$CFLAGS -belf"
+  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+    [AC_LANG_PUSH(C)
+     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+     AC_LANG_POP])
+  if test yes != "$lt_cv_cc_needs_belf"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS=$SAVE_CFLAGS
+  fi
+  ;;
+*-*solaris*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*)
+        case $host in
+        i?86-*-solaris*|x86_64-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD=${LD-ld}_sol2
+        fi
+        ;;
+      *)
+	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+	  LD="${LD-ld} -64"
+	fi
+	;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks=$enable_libtool_lock
+])# _LT_ENABLE_LOCK
+
+
+# _LT_PROG_AR
+# -----------
+m4_defun([_LT_PROG_AR],
+[AC_CHECK_TOOLS(AR, [ar], false)
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
+
+AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
+  [lt_cv_ar_at_file=no
+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
+     [echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
+      AC_TRY_EVAL([lt_ar_try])
+      if test 0 -eq "$ac_status"; then
+	# Ensure the archiver fails upon bogus file names.
+	rm -f conftest.$ac_objext libconftest.a
+	AC_TRY_EVAL([lt_ar_try])
+	if test 0 -ne "$ac_status"; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
+     ])
+  ])
+
+if test no = "$lt_cv_ar_at_file"; then
+  archiver_list_spec=
+else
+  archiver_list_spec=$lt_cv_ar_at_file
+fi
+_LT_DECL([], [archiver_list_spec], [1],
+  [How to feed a file listing to the archiver])
+])# _LT_PROG_AR
+
+
+# _LT_CMD_OLD_ARCHIVE
+# -------------------
+m4_defun([_LT_CMD_OLD_ARCHIVE],
+[_LT_PROG_AR
+
+AC_CHECK_TOOL(STRIP, strip, :)
+test -z "$STRIP" && STRIP=:
+_LT_DECL([], [STRIP], [1], [A symbol stripping program])
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+test -z "$RANLIB" && RANLIB=:
+_LT_DECL([], [RANLIB], [1],
+    [Commands used to install an old-style archive])
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  bitrig* | openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
+fi
+
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
+_LT_DECL([], [old_postinstall_cmds], [2])
+_LT_DECL([], [old_postuninstall_cmds], [2])
+_LT_TAGDECL([], [old_archive_cmds], [2],
+    [Commands used to build an old-style archive])
+_LT_DECL([], [lock_old_archive_extraction], [0],
+    [Whether to use a lock for old archive extraction])
+])# _LT_CMD_OLD_ARCHIVE
+
+
+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([_LT_COMPILER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$3"  ## exclude from sc_useless_quotes_in_assignment
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       $2=yes
+     fi
+   fi
+   $RM conftest*
+])
+
+if test yes = "[$]$2"; then
+    m4_if([$5], , :, [$5])
+else
+    m4_if([$6], , :, [$6])
+fi
+])# _LT_COMPILER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
+
+
+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#                  [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------
+# Check whether the given linker option works
+AC_DEFUN([_LT_LINKER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS=$LDFLAGS
+   LDFLAGS="$LDFLAGS $3"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&AS_MESSAGE_LOG_FD
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         $2=yes
+       fi
+     else
+       $2=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS=$save_LDFLAGS
+])
+
+if test yes = "[$]$2"; then
+    m4_if([$4], , :, [$4])
+else
+    m4_if([$5], , :, [$5])
+fi
+])# _LT_LINKER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
+
+
+# LT_CMD_MAX_LEN
+#---------------
+AC_DEFUN([LT_CMD_MAX_LEN],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+  i=0
+  teststring=ABCD
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+       test undefined != "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test X`env echo "$teststring$teststring" 2>/dev/null` \
+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+	      test 17 != "$i" # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+])
+if test -n "$lt_cv_sys_max_cmd_len"; then
+  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+  AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+    [What is the maximum length of a command?])
+])# LT_CMD_MAX_LEN
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
+
+
+# _LT_HEADER_DLFCN
+# ----------------
+m4_defun([_LT_HEADER_DLFCN],
+[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
+])# _LT_HEADER_DLFCN
+
+
+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ----------------------------------------------------------------
+m4_defun([_LT_TRY_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test yes = "$cross_compiling"; then :
+  [$4]
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+[#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisibility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}]
+_LT_EOF
+  if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then
+    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) $1 ;;
+      x$lt_dlneed_uscore) $2 ;;
+      x$lt_dlunknown|x*) $3 ;;
+    esac
+  else :
+    # compilation failed
+    $3
+  fi
+fi
+rm -fr conftest*
+])# _LT_TRY_DLOPEN_SELF
+
+
+# LT_SYS_DLOPEN_SELF
+# ------------------
+AC_DEFUN([LT_SYS_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test yes != "$enable_dlopen"; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen=load_add_on
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen=LoadLibrary
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen=dlopen
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+    # if libdl is installed we need to link against it
+    AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[
+    lt_cv_dlopen=dyld
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ])
+    ;;
+
+  tpf*)
+    # Don't try to run any link tests for TPF.  We know it's impossible
+    # because TPF is a cross-compiler, and we know how we open DSOs.
+    lt_cv_dlopen=dlopen
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=no
+    ;;
+
+  *)
+    AC_CHECK_FUNC([shl_load],
+	  [lt_cv_dlopen=shl_load],
+      [AC_CHECK_LIB([dld], [shl_load],
+	    [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld],
+	[AC_CHECK_FUNC([dlopen],
+	      [lt_cv_dlopen=dlopen],
+	  [AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],
+	    [AC_CHECK_LIB([svld], [dlopen],
+		  [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld],
+	      [AC_CHECK_LIB([dld], [dld_link],
+		    [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld])
+	      ])
+	    ])
+	  ])
+	])
+      ])
+    ;;
+  esac
+
+  if test no = "$lt_cv_dlopen"; then
+    enable_dlopen=no
+  else
+    enable_dlopen=yes
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS=$CPPFLAGS
+    test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS=$LDFLAGS
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS=$LIBS
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    AC_CACHE_CHECK([whether a program can dlopen itself],
+	  lt_cv_dlopen_self, [dnl
+	  _LT_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+    ])
+
+    if test yes = "$lt_cv_dlopen_self"; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+	  lt_cv_dlopen_self_static, [dnl
+	  _LT_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
+      ])
+    fi
+
+    CPPFLAGS=$save_CPPFLAGS
+    LDFLAGS=$save_LDFLAGS
+    LIBS=$save_LIBS
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+	 [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+	 [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+	 [Whether dlopen of statically linked programs is supported])
+])# LT_SYS_DLOPEN_SELF
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
+
+
+# _LT_COMPILER_C_O([TAGNAME])
+# ---------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler.
+# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+m4_defun([_LT_COMPILER_C_O],
+[m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+     fi
+   fi
+   chmod u+w . 2>&AS_MESSAGE_LOG_FD
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+])
+_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
+	[Does compiler simultaneously support -c and -o options?])
+])# _LT_COMPILER_C_O
+
+
+# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+# ----------------------------------
+# Check to see if we can do hard links to lock some files if needed
+m4_defun([_LT_COMPILER_FILE_LOCKS],
+[m4_require([_LT_ENABLE_LOCK])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_COMPILER_C_O([$1])
+
+hard_links=nottested
+if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then
+  # do not overwrite the value of need_locks provided by the user
+  AC_MSG_CHECKING([if we can lock with hard links])
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  AC_MSG_RESULT([$hard_links])
+  if test no = "$hard_links"; then
+    AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe])
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
+])# _LT_COMPILER_FILE_LOCKS
+
+
+# _LT_CHECK_OBJDIR
+# ----------------
+m4_defun([_LT_CHECK_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+_LT_DECL([], [objdir], [0],
+         [The name of the directory that contains temporary libtool files])dnl
+m4_pattern_allow([LT_OBJDIR])dnl
+AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/",
+  [Define to the sub-directory where libtool stores uninstalled libraries.])
+])# _LT_CHECK_OBJDIR
+
+
+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+# --------------------------------------
+# Check hardcoding attributes.
+m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
+   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
+   test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then
+
+  # We can hardcode non-existent directories.
+  if test no != "$_LT_TAGVAR(hardcode_direct, $1)" &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" &&
+     test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then
+    # Linking always hardcodes the temporary library directory.
+    _LT_TAGVAR(hardcode_action, $1)=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    _LT_TAGVAR(hardcode_action, $1)=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  _LT_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
+
+if test relink = "$_LT_TAGVAR(hardcode_action, $1)" ||
+   test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test yes = "$shlibpath_overrides_runpath" ||
+     test no = "$enable_shared"; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+_LT_TAGDECL([], [hardcode_action], [0],
+    [How to hardcode a shared library path into an executable])
+])# _LT_LINKER_HARDCODE_LIBPATH
+
+
+# _LT_CMD_STRIPLIB
+# ----------------
+m4_defun([_LT_CMD_STRIPLIB],
+[m4_require([_LT_DECL_EGREP])
+striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP"; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      AC_MSG_RESULT([yes])
+    else
+      AC_MSG_RESULT([no])
+    fi
+    ;;
+  *)
+    AC_MSG_RESULT([no])
+    ;;
+  esac
+fi
+_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
+_LT_DECL([], [striplib], [1])
+])# _LT_CMD_STRIPLIB
+
+
+# _LT_PREPARE_MUNGE_PATH_LIST
+# ---------------------------
+# Make sure func_munge_path_list() is defined correctly.
+m4_defun([_LT_PREPARE_MUNGE_PATH_LIST],
+[[# func_munge_path_list VARIABLE PATH
+# -----------------------------------
+# VARIABLE is name of variable containing _space_ separated list of
+# directories to be munged by the contents of PATH, which is string
+# having a format:
+# "DIR[:DIR]:"
+#       string "DIR[ DIR]" will be prepended to VARIABLE
+# ":DIR[:DIR]"
+#       string "DIR[ DIR]" will be appended to VARIABLE
+# "DIRP[:DIRP]::[DIRA:]DIRA"
+#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
+#       "DIRA[ DIRA]" will be appended to VARIABLE
+# "DIR[:DIR]"
+#       VARIABLE will be replaced by "DIR[ DIR]"
+func_munge_path_list ()
+{
+    case x at S|@2 in
+    x)
+        ;;
+    *:)
+        eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\"
+        ;;
+    x:*)
+        eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\"
+        ;;
+    *::*)
+        eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
+        eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\"
+        ;;
+    *)
+        eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\"
+        ;;
+    esac
+}
+]])# _LT_PREPARE_PATH_LIST
+
+
+# _LT_SYS_DYNAMIC_LINKER([TAG])
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+m4_defun([_LT_SYS_DYNAMIC_LINKER],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_OBJDUMP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
+m4_if([$1],
+	[], [
+if test yes = "$GCC"; then
+  case $host_os in
+    darwin*) lt_awk_arg='/^libraries:/,/LR/' ;;
+    *) lt_awk_arg='/^libraries:/' ;;
+  esac
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;;
+    *) lt_sed_strip_eq='s|=/|/|g' ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary...
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  # ...but if some path component already ends with the multilib dir we assume
+  # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer).
+  case "$lt_multi_os_dir; $lt_search_path_spec " in
+  "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*)
+    lt_multi_os_dir=
+    ;;
+  esac
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir"
+    elif test -n "$lt_multi_os_dir"; then
+      test -d "$lt_sys_path" && \
+	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS = " "; FS = "/|\n";} {
+  lt_foo = "";
+  lt_count = 0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo = "/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=.so
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+AC_ARG_VAR([LT_SYS_LIBRARY_PATH],
+[User-defined run-time library search path.])
+
+case $host_os in
+aix3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='$libname$release$shared_ext$major'
+  ;;
+
+aix[[4-9]]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test ia64 = "$host_cpu"; then
+    # AIX 5 supports IA64
+    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line '#! .'.  This would cause the generated library to
+    # depend on '.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[[01]] | aix4.[[01]].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # Using Import Files as archive members, it is possible to support
+    # filename-based versioning of shared library archives on AIX. While
+    # this would work for both with and without runtime linking, it will
+    # prevent static linking of such archives. So we do filename-based
+    # shared library versioning with .so extension only, which is used
+    # when both runtime linking and shared linking is enabled.
+    # Unfortunately, runtime linking may impact performance, so we do
+    # not want this to be the default eventually. Also, we use the
+    # versioned .so libs for executables only if there is the -brtl
+    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
+    # To allow for filename-based versioning support, we need to create
+    # libNAME.so.V as an archive file, containing:
+    # *) an Import File, referring to the versioned filename of the
+    #    archive as well as the shared archive member, telling the
+    #    bitwidth (32 or 64) of that shared object, and providing the
+    #    list of exported symbols of that shared object, eventually
+    #    decorated with the 'weak' keyword
+    # *) the shared object with the F_LOADONLY flag set, to really avoid
+    #    it being seen by the linker.
+    # At run time we better use the real file rather than another symlink,
+    # but for link time we create the symlink libNAME.so -> libNAME.so.V
+
+    case $with_aix_soname,$aix_use_runtimelinking in
+    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    aix,yes) # traditional libtool
+      dynamic_linker='AIX unversionable lib.so'
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      ;;
+    aix,no) # traditional AIX only
+      dynamic_linker='AIX lib.a[(]lib.so.V[)]'
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      ;;
+    svr4,*) # full svr4 only
+      dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,yes) # both, prefer svr4
+      dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # unpreferred sharedlib libNAME.a needs extra handling
+      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
+      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,no) # both, prefer aix
+      dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]"
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
+      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
+      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
+      ;;
+    esac
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='$libname$shared_ext'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[[45]]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=.dll
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+m4_if([$1], [],[
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+    library_names_spec='$libname.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec=$LIB
+      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
+    ;;
+
+  *)
+    # Assume MSVC wrapper
+    library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib'
+    dynamic_linker='Win32 ld.exe'
+    ;;
+  esac
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$major$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+m4_if([$1], [],[
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[[23]].*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      soname_spec='$libname$release$shared_ext$major'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2.*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+haiku*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    if test 32 = "$HPUX_IA64_MODE"; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
+    fi
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[[3-9]]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test yes = "$lt_cv_prog_gnu_ld"; then
+		version_type=linux # correct to gnu/linux during the next big refactor
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
+  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+linux*android*)
+  version_type=none # Android doesn't support versioned libraries.
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext'
+  soname_spec='$libname$release$shared_ext'
+  finish_cmds=
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  dynamic_linker='Android linker'
+  # Don't embed -rpath directories since the linker doesn't support them.
+  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
+    [lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+	 LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+      [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+	 [lt_cv_shlibpath_overrides_runpath=yes])])
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+    ])
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Ideally, we could use ldconfig to report *all* directores which are
+  # searched for libraries, however this is still not possible.  Aside from not
+  # being certain /sbin/ldconfig is available, command
+  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
+  # even though it is searched at run-time.  Try to do the best guess by
+  # appending ld.so.conf contents (and includes) to the search path.
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd* | bitrig*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec=/usr/lib
+  need_lib_prefix=no
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+    need_version=no
+  else
+    need_version=yes
+  fi
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+os2*)
+  libname_spec='$name'
+  version_type=windows
+  shrext_cmds=.dll
+  need_version=no
+  need_lib_prefix=no
+  # OS/2 can only load a DLL with a base name of 8 characters or less.
+  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
+    v=$($ECHO $release$versuffix | tr -d .-);
+    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
+    $ECHO $n$v`$shared_ext'
+  library_names_spec='${libname}_dll.$libext'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=BEGINLIBPATH
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  postinstall_cmds='base_file=`basename \$file`~
+    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
+    dldir=$destdir/`dirname \$dlpath`~
+    test -d \$dldir || mkdir -p \$dldir~
+    $install_prog $dir/$dlname \$dldir/$dlname~
+    chmod a+x \$dldir/$dlname~
+    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+    fi'
+  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
+    dlpath=$dir/\$dldll~
+    $RM \$dlpath'
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test yes = "$with_gnu_ld"; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec; then
+    version_type=linux # correct to gnu/linux during the next big refactor
+    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
+    soname_spec='$libname$shared_ext.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=sco
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test yes = "$with_gnu_ld"; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test no = "$dynamic_linker" && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test yes = "$GCC"; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
+  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
+fi
+
+if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
+  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
+fi
+
+# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
+configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
+
+# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
+func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
+
+# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
+configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
+
+_LT_DECL([], [variables_saved_for_relink], [1],
+    [Variables whose values should be saved in libtool wrapper scripts and
+    restored at link time])
+_LT_DECL([], [need_lib_prefix], [0],
+    [Do we need the "lib" prefix for modules?])
+_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
+_LT_DECL([], [version_type], [0], [Library versioning type])
+_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
+_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
+_LT_DECL([], [shlibpath_overrides_runpath], [0],
+    [Is shlibpath searched before the hard-coded library search path?])
+_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
+_LT_DECL([], [library_names_spec], [1],
+    [[List of archive names.  First name is the real one, the rest are links.
+    The last name is the one that the linker finds with -lNAME]])
+_LT_DECL([], [soname_spec], [1],
+    [[The coded name of the library, if different from the real name]])
+_LT_DECL([], [install_override_mode], [1],
+    [Permission mode override for installation of shared libraries])
+_LT_DECL([], [postinstall_cmds], [2],
+    [Command to use after installation of a shared archive])
+_LT_DECL([], [postuninstall_cmds], [2],
+    [Command to use after uninstallation of a shared archive])
+_LT_DECL([], [finish_cmds], [2],
+    [Commands used to finish a libtool library installation in a directory])
+_LT_DECL([], [finish_eval], [1],
+    [[As "finish_cmds", except a single script fragment to be evaled but
+    not shown]])
+_LT_DECL([], [hardcode_into_libs], [0],
+    [Whether we should hardcode library paths into libraries])
+_LT_DECL([], [sys_lib_search_path_spec], [2],
+    [Compile-time system search path for libraries])
+_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2],
+    [Detected run-time system search path for libraries])
+_LT_DECL([], [configure_time_lt_sys_library_path], [2],
+    [Explicit LT_SYS_LIBRARY_PATH set during ./configure time])
+])# _LT_SYS_DYNAMIC_LINKER
+
+
+# _LT_PATH_TOOL_PREFIX(TOOL)
+# --------------------------
+# find a file program that can recognize shared library
+AC_DEFUN([_LT_PATH_TOOL_PREFIX],
+[m4_require([_LT_DECL_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] |  ?:[\\/]*])
+  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD=$MAGIC_CMD
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word.  This closes a longstanding sh security hole.
+  ac_dummy="m4_if([$2], , $PATH, [$2])"
+  for ac_dir in $ac_dummy; do
+    IFS=$lt_save_ifs
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$1"; then
+      lt_cv_path_MAGIC_CMD=$ac_dir/"$1"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS=$lt_save_ifs
+  MAGIC_CMD=$lt_save_MAGIC_CMD
+  ;;
+esac])
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+if test -n "$MAGIC_CMD"; then
+  AC_MSG_RESULT($MAGIC_CMD)
+else
+  AC_MSG_RESULT(no)
+fi
+_LT_DECL([], [MAGIC_CMD], [0],
+	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])# _LT_PATH_TOOL_PREFIX
+
+# Old name:
+AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
+
+
+# _LT_PATH_MAGIC
+# --------------
+# find a file program that can recognize a shared library
+m4_defun([_LT_PATH_MAGIC],
+[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+  else
+    MAGIC_CMD=:
+  fi
+fi
+])# _LT_PATH_MAGIC
+
+
+# LT_PATH_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([LT_PATH_LD],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
+
+AC_ARG_WITH([gnu-ld],
+    [AS_HELP_STRING([--with-gnu-ld],
+	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
+    [test no = "$withval" || with_gnu_ld=yes],
+    [with_gnu_ld=no])dnl
+
+ac_prog=ld
+if test yes = "$GCC"; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by $CC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return, which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]]* | ?:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD=$ac_prog
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test yes = "$with_gnu_ld"; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS=$lt_save_ifs
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD=$ac_dir/$ac_prog
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test no != "$with_gnu_ld" && break
+	;;
+      *)
+	test yes != "$with_gnu_ld" && break
+	;;
+      esac
+    fi
+  done
+  IFS=$lt_save_ifs
+else
+  lt_cv_path_LD=$LD # Let the user override the test with a path.
+fi])
+LD=$lt_cv_path_LD
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])# LT_PATH_LD
+
+# Old names:
+AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
+AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_LD], [])
+dnl AC_DEFUN([AC_PROG_LD], [])
+
+
+# _LT_PATH_LD_GNU
+#- --------------
+m4_defun([_LT_PATH_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# _LT_PATH_LD_GNU
+
+
+# _LT_CMD_RELOAD
+# --------------
+# find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+m4_defun([_LT_CMD_RELOAD],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+  lt_cv_ld_reload_flag,
+  [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test yes != "$GCC"; then
+      reload_cmds=false
+    fi
+    ;;
+  darwin*)
+    if test yes = "$GCC"; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_TAGDECL([], [reload_cmds], [2])dnl
+])# _LT_CMD_RELOAD
+
+
+# _LT_PATH_DD
+# -----------
+# find a working dd
+m4_defun([_LT_PATH_DD],
+[AC_CACHE_CHECK([for a working dd], [ac_cv_path_lt_DD],
+[printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+: ${lt_DD:=$DD}
+AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd],
+[if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
+  cmp -s conftest.i conftest.out \
+  && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=:
+fi])
+rm -f conftest.i conftest2.i conftest.out])
+])# _LT_PATH_DD
+
+
+# _LT_CMD_TRUNCATE
+# ----------------
+# find command to truncate a binary pipe
+m4_defun([_LT_CMD_TRUNCATE],
+[m4_require([_LT_PATH_DD])
+AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin],
+[printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+lt_cv_truncate_bin=
+if "$ac_cv_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
+  cmp -s conftest.i conftest.out \
+  && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1"
+fi
+rm -f conftest.i conftest2.i conftest.out
+test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"])
+_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1],
+  [Command to truncate a binary pipe])
+])# _LT_CMD_TRUNCATE
+
+
+# _LT_CHECK_MAGIC_METHOD
+# ----------------------
+# how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_MAGIC_METHOD],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+AC_CACHE_CHECK([how to recognize dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# 'unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# that responds to the $file_magic_cmd with a given extended regex.
+# If you have 'file' or equivalent on your system and you're not sure
+# whether 'pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[[4-9]]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[[45]]*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  if ( file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    # Keep this pattern in sync with the one in func_win32_libid.
+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+cegcc*)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix[[3-9]]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd* | netbsdelf*-gnu)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+openbsd* | bitrig*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+os2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+])
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+  case $host_os in
+  mingw* | pw32*)
+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+      want_nocaseglob=yes
+    else
+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
+    fi
+    ;;
+  esac
+fi
+
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+_LT_DECL([], [deplibs_check_method], [1],
+    [Method to check whether dependent libraries are shared objects])
+_LT_DECL([], [file_magic_cmd], [1],
+    [Command to use when deplibs_check_method = "file_magic"])
+_LT_DECL([], [file_magic_glob], [1],
+    [How to find potential files when deplibs_check_method = "file_magic"])
+_LT_DECL([], [want_nocaseglob], [1],
+    [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
+])# _LT_CHECK_MAGIC_METHOD
+
+
+# LT_PATH_NM
+# ----------
+# find the pathname to a BSD- or MS-compatible name lister
+AC_DEFUN([LT_PATH_NM],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM=$NM
+else
+  lt_nm_to_check=${ac_tool_prefix}nm
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS=$lt_save_ifs
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm=$ac_dir/$lt_tmp_nm
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the 'sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	# MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
+	case $build_os in
+	mingw*) lt_bad_file=conftest.nm/nofile ;;
+	*) lt_bad_file=/dev/null ;;
+	esac
+	case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
+	*$lt_bad_file* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
+	  break 2
+	  ;;
+	*)
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break 2
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
+	  ;;
+	esac
+      fi
+    done
+    IFS=$lt_save_ifs
+  done
+  : ${lt_cv_path_NM=no}
+fi])
+if test no != "$lt_cv_path_NM"; then
+  NM=$lt_cv_path_NM
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
+    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols -headers"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+  AC_SUBST([DUMPBIN])
+  if test : != "$DUMPBIN"; then
+    NM=$DUMPBIN
+  fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+  [lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
+  cat conftest.out >&AS_MESSAGE_LOG_FD
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*])
+])# LT_PATH_NM
+
+# Old names:
+AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
+AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_NM], [])
+dnl AC_DEFUN([AC_PROG_NM], [])
+
+# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+# --------------------------------
+# how to determine the name of the shared library
+# associated with a specific link library.
+#  -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+m4_require([_LT_DECL_DLLTOOL])
+AC_CACHE_CHECK([how to associate runtime and link libraries],
+lt_cv_sharedlib_from_linklib_cmd,
+[lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+  # two different shell functions defined in ltmain.sh;
+  # decide which one to use based on capabilities of $DLLTOOL
+  case `$DLLTOOL --help 2>&1` in
+  *--identify-strict*)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+    ;;
+  *)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+    ;;
+  esac
+  ;;
+*)
+  # fallback: assume linklib IS sharedlib
+  lt_cv_sharedlib_from_linklib_cmd=$ECHO
+  ;;
+esac
+])
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
+    [Command to associate shared and link libraries])
+])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+
+
+# _LT_PATH_MANIFEST_TOOL
+# ----------------------
+# locate the manifest tool
+m4_defun([_LT_PATH_MANIFEST_TOOL],
+[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
+  [lt_cv_path_mainfest_tool=no
+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+    lt_cv_path_mainfest_tool=yes
+  fi
+  rm -f conftest*])
+if test yes != "$lt_cv_path_mainfest_tool"; then
+  MANIFEST_TOOL=:
+fi
+_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
+])# _LT_PATH_MANIFEST_TOOL
+
+
+# _LT_DLL_DEF_P([FILE])
+# ---------------------
+# True iff FILE is a Windows DLL '.def' file.
+# Keep in sync with func_dll_def_p in the libtool script
+AC_DEFUN([_LT_DLL_DEF_P],
+[dnl
+  test DEF = "`$SED -n dnl
+    -e '\''s/^[[	 ]]*//'\'' dnl Strip leading whitespace
+    -e '\''/^\(;.*\)*$/d'\'' dnl      Delete empty lines and comments
+    -e '\''s/^\(EXPORTS\|LIBRARY\)\([[	 ]].*\)*$/DEF/p'\'' dnl
+    -e q dnl                          Only consider the first "real" line
+    $1`" dnl
+])# _LT_DLL_DEF_P
+
+
+# LT_LIB_M
+# --------
+# check for math library
+AC_DEFUN([LT_LIB_M],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
+  # These system don't have libm, or don't need it
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw)
+  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, cos, LIBM=-lm)
+  ;;
+esac
+AC_SUBST([LIBM])
+])# LT_LIB_M
+
+# Old name:
+AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_CHECK_LIBM], [])
+
+
+# _LT_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------
+m4_defun([_LT_COMPILER_NO_RTTI],
+[m4_require([_LT_TAG_COMPILER])dnl
+
+_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test yes = "$GCC"; then
+  case $cc_basename in
+  nvcc*)
+    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
+  *)
+    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
+  esac
+
+  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+    lt_cv_prog_compiler_rtti_exceptions,
+    [-fno-rtti -fno-exceptions], [],
+    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
+	[Compiler flag to turn off builtin functions])
+])# _LT_COMPILER_NO_RTTI
+
+
+# _LT_CMD_GLOBAL_SYMBOLS
+# ----------------------
+m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[[BCDT]]'
+  ;;
+cygwin* | mingw* | pw32* | cegcc*)
+  symcode='[[ABCDGISTW]]'
+  ;;
+hpux*)
+  if test ia64 = "$host_cpu"; then
+    symcode='[[ABCDEGRST]]'
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[[BCDEGRST]]'
+  ;;
+osf*)
+  symcode='[[BCDEGQRST]]'
+  ;;
+solaris*)
+  symcode='[[BDRT]]'
+  ;;
+sco3.2v5*)
+  symcode='[[DT]]'
+  ;;
+sysv4.2uw2*)
+  symcode='[[DT]]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[[ABDT]]'
+  ;;
+sysv4)
+  symcode='[[DFNSTU]]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  # Gets list of data symbols to import.
+  lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
+  # Adjust the below global symbol transforms to fixup imported variables.
+  lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
+  lt_c_name_hook=" -e 's/^I .* \(.*\)$/  {\"\1\", (void *) 0},/p'"
+  lt_c_name_lib_hook="\
+  -e 's/^I .* \(lib.*\)$/  {\"\1\", (void *) 0},/p'\
+  -e 's/^I .* \(.*\)$/  {\"lib\1\", (void *) 0},/p'"
+else
+  # Disable hooks by default.
+  lt_cv_sys_global_symbol_to_import=
+  lt_cdecl_hook=
+  lt_c_name_hook=
+  lt_c_name_lib_hook=
+fi
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n"\
+$lt_cdecl_hook\
+" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
+$lt_c_name_hook\
+" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/p'"
+
+# Transform an extracted symbol line into symbol name with lib prefix and
+# symbol address.
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
+$lt_c_name_lib_hook\
+" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(lib.*\)$/  {\"\1\", (void *) \&\1},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"lib\1\", (void *) \&\1},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function,
+    # D for any global variable and I for any imported variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK ['"\
+"     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
+"     /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
+"     /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
+"     {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
+"     s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx]"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT@&t at _DLSYM_CONST
+#elif defined __osf__
+/* This system does not cope well with relocations in const data.  */
+# define LT@&t at _DLSYM_CONST
+#else
+# define LT@&t at _DLSYM_CONST const
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+	  cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols.  */
+LT@&t at _DLSYM_CONST struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[[]] =
+{
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+	  $SED "s/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+	  cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_globsym_save_LIBS=$LIBS
+	  lt_globsym_save_CFLAGS=$CFLAGS
+	  LIBS=conftstm.$ac_objext
+	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+	  if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then
+	    pipe_works=yes
+	  fi
+	  LIBS=$lt_globsym_save_LIBS
+	  CFLAGS=$lt_globsym_save_CFLAGS
+	else
+	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+    fi
+  else
+    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test yes = "$pipe_works"; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  AC_MSG_RESULT(failed)
+else
+  AC_MSG_RESULT(ok)
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
+  nm_file_list_spec='@'
+fi
+
+_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
+    [Take the output of nm and produce a listing of raw symbols and C names])
+_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
+    [Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1],
+    [Transform the output of nm into a list of symbols to manually relocate])
+_LT_DECL([global_symbol_to_c_name_address],
+    [lt_cv_sys_global_symbol_to_c_name_address], [1],
+    [Transform the output of nm in a C name address pair])
+_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
+    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
+    [Transform the output of nm in a C name address pair when lib prefix is needed])
+_LT_DECL([nm_interface], [lt_cv_nm_interface], [1],
+    [The name lister interface])
+_LT_DECL([], [nm_file_list_spec], [1],
+    [Specify filename containing input files for $NM])
+]) # _LT_CMD_GLOBAL_SYMBOLS
+
+
+# _LT_COMPILER_PIC([TAGNAME])
+# ---------------------------
+m4_defun([_LT_COMPILER_PIC],
+[m4_require([_LT_TAG_COMPILER])dnl
+_LT_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_TAGVAR(lt_prog_compiler_static, $1)=
+
+m4_if([$1], [CXX], [
+  # C++ specific cases for pic, static, wl, etc.
+  if test yes = "$GXX"; then
+    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test ia64 = "$host_cpu"; then
+	# AIX 5 now supports IA64 processor
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the '-m68020' flag to GCC prevents building anything better,
+            # like '-m68040'.
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | cygwin* | os2* | pw32* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      case $host_os in
+      os2*)
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
+	;;
+      esac
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+      ;;
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)=
+      ;;
+    interix[[3-9]]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	;;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+    *qnx* | *nto*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+    *)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix[[4-9]]*)
+	# All AIX code is PIC.
+	if test ia64 = "$host_cpu"; then
+	  # AIX 5 now supports IA64 processor
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	else
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+      mingw* | cygwin* | os2* | pw32* | cegcc*)
+	# This hack is so that the source file can tell whether it is being
+	# built for inclusion in a dll (and should export symbols for example).
+	m4_if([$1], [GCJ], [],
+	  [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+	;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  ghcx*)
+	    # Green Hills C++ Compiler
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
+	    if test ia64 != "$host_cpu"; then
+	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
+	    case $host_cpu in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      interix*)
+	# This is c89, which is MS Visual C++ (no shared libs)
+	# Anyone wants to do a port?
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+	case $cc_basename in
+	  KCC*)
+	    # KAI C++ Compiler
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	    ;;
+	  ecpc* )
+	    # old Intel C++ for x86_64, which still supported -KPIC.
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	    ;;
+	  icpc* )
+	    # Intel C++, used to be incompatible with GCC.
+	    # ICC 10 doesn't accept -KPIC any more.
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	    ;;
+	  pgCC* | pgcpp*)
+	    # Portland Group C++ compiler
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	  cxx*)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
+	    # IBM XL 8.0, 9.0 on PPC and BlueGene
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd* | netbsdelf*-gnu)
+	;;
+      *qnx* | *nto*)
+        # QNX uses GNU C++, but need to define -shared option too, otherwise
+        # it will coredump.
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+        ;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC* | sunCC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+	case $cc_basename in
+	  CC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      vxworks*)
+	;;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+	;;
+    esac
+  fi
+],
+[
+  if test yes = "$GCC"; then
+    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test ia64 = "$host_cpu"; then
+	# AIX 5 now supports IA64 processor
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the '-m68020' flag to GCC prevents building anything better,
+            # like '-m68040'.
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      case $host_os in
+      os2*)
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
+	;;
+      esac
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)=
+      ;;
+
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	# +Z the default
+	;;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+
+    interix[[3-9]]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
+      if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
+      fi
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      if test ia64 = "$host_cpu"; then
+	# AIX 5 now supports IA64 processor
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      else
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      case $cc_basename in
+      nagfor*)
+        # NAG Fortran compiler
+        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+        _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+        ;;
+      esac
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      m4_if([$1], [GCJ], [],
+	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      case $host_os in
+      os2*)
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
+	;;
+      esac
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC (with -KPIC) is the default.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+      case $cc_basename in
+      # old Intel for x86_64, which still supported -KPIC.
+      ecc*)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
+	;;
+      nagfor*)
+	# NAG Fortran compiler
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	;;
+      tcc*)
+	# Fabrice Bellard et al's Tiny C Compiler
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+        ;;
+      ccc*)
+        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+        # All Alpha code is PIC.
+        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+        ;;
+      xl* | bgxl* | bgf* | mpixl*)
+	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+	;;
+      *)
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	  ;;
+	*Sun\ C*)
+	  # Sun C 5.9
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	  ;;
+        *Intel*\ [[CF]]*Compiler*)
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	  ;;
+	*Portland\ Group*)
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  ;;
+	esac
+	;;
+      esac
+      ;;
+
+    newsos6)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # All OSF/1 code is PIC.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    rdos*)
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    solaris*)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    unicos*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+
+    uts4*)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *)
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+    esac
+  fi
+])
+case $host_os in
+  # For platforms that do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+    ;;
+  *)
+    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t at m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
+    ;;
+esac
+
+AC_CACHE_CHECK([for $compiler option to produce PIC],
+  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
+  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
+    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
+    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t at m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
+    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
+     "" | " "*) ;;
+     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+     esac],
+    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
+	[Additional compiler flags for building library objects])
+
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+	[How to pass a linker flag through the compiler])
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
+_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
+  $lt_tmp_static_flag,
+  [],
+  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
+_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
+	[Compiler flag to prevent dynamic linking])
+])# _LT_COMPILER_PIC
+
+
+# _LT_LINKER_SHLIBS([TAGNAME])
+# ----------------------------
+# See if the linker supports building shared libraries.
+m4_defun([_LT_LINKER_SHLIBS],
+[AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+m4_if([$1], [CXX], [
+  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+  case $host_os in
+  aix[[4-9]]*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to GNU nm, but means don't demangle to AIX nm.
+    # Without the "-l" option, or with the "-B" option, AIX nm treats
+    # weak defined symbols like other global defined symbols, whereas
+    # GNU nm marks them as "W".
+    # While the 'weak' keyword is ignored in the Export File, we need
+    # it in the Import File for the 'aix-soname' feature, so we have
+    # to replace the "-B" option with "-P" for AIX nm.
+    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
+    else
+      _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds
+    ;;
+  cygwin* | mingw* | cegcc*)
+    case $cc_basename in
+    cl*)
+      _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+      ;;
+    *)
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+      ;;
+    esac
+    ;;
+  linux* | k*bsd*-gnu | gnu*)
+    _LT_TAGVAR(link_all_deplibs, $1)=no
+    ;;
+  *)
+    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+    ;;
+  esac
+], [
+  runpath_var=
+  _LT_TAGVAR(allow_undefined_flag, $1)=
+  _LT_TAGVAR(always_export_symbols, $1)=no
+  _LT_TAGVAR(archive_cmds, $1)=
+  _LT_TAGVAR(archive_expsym_cmds, $1)=
+  _LT_TAGVAR(compiler_needs_object, $1)=no
+  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  _LT_TAGVAR(hardcode_automatic, $1)=no
+  _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+  _LT_TAGVAR(hardcode_libdir_separator, $1)=
+  _LT_TAGVAR(hardcode_minus_L, $1)=no
+  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  _LT_TAGVAR(inherit_rpath, $1)=no
+  _LT_TAGVAR(link_all_deplibs, $1)=unknown
+  _LT_TAGVAR(module_cmds, $1)=
+  _LT_TAGVAR(module_expsym_cmds, $1)=
+  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
+  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+  _LT_TAGVAR(thread_safe_flag_spec, $1)=
+  _LT_TAGVAR(whole_archive_flag_spec, $1)=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  _LT_TAGVAR(include_expsyms, $1)=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ' (' and ')$', so one must not match beginning or
+  # end of line.  Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
+  # as well as any symbol that contains 'd'.
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test yes != "$GCC"; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd* | bitrig*)
+    with_gnu_ld=no
+    ;;
+  linux* | k*bsd*-gnu | gnu*)
+    _LT_TAGVAR(link_all_deplibs, $1)=no
+    ;;
+  esac
+
+  _LT_TAGVAR(ld_shlibs, $1)=yes
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
+  if test yes = "$with_gnu_ld"; then
+    case $host_os in
+      aix*)
+	# The AIX port of GNU ld has always aspired to compatibility
+	# with the native linker.  However, as the warning in the GNU ld
+	# block says, versions before 2.19.5* couldn't really create working
+	# shared libraries, regardless of the interface used.
+	case `$LD -v 2>&1` in
+	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+	  *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
+	  *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
+	  *)
+	    lt_use_gnu_ld_interface=yes
+	    ;;
+	esac
+	;;
+      *)
+	lt_use_gnu_ld_interface=yes
+	;;
+    esac
+  fi
+
+  if test yes = "$lt_use_gnu_ld_interface"; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='$wl'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+    else
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
+      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[[3-9]]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test ia64 != "$host_cpu"; then
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_expsym_cmds, $1)=''
+        ;;
+      m68k)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+      # as there is no search path for DLLs.
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols'
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(always_export_symbols, $1)=no
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file, use it as
+	# is; otherwise, prepend EXPORTS...
+	_LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+          cp $export_symbols $output_objdir/$soname.def;
+        else
+          echo EXPORTS > $output_objdir/$soname.def;
+          cat $export_symbols >> $output_objdir/$soname.def;
+        fi~
+        $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    haiku*)
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    os2*)
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      shrext_cmds=.dll
+      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	prefix_cmds="$SED"~
+	if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	  prefix_cmds="$prefix_cmds -e 1d";
+	fi~
+	prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      ;;
+
+    interix[[3-9]]*)
+      _LT_TAGVAR(hardcode_direct, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      tmp_diet=no
+      if test linux-dietlibc = "$host_os"; then
+	case $cc_basename in
+	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
+	esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+	 && test no = "$tmp_diet"
+      then
+	tmp_addflag=' $pic_flag'
+	tmp_sharedflag='-shared'
+	case $cc_basename,$host_cpu in
+        pgcc*)				# Portland Group C compiler
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95* | pgfortran*)
+					# Portland Group f77 and f90 compilers
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	lf95*)				# Lahey Fortran 8.1
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
+	  tmp_sharedflag='--shared' ;;
+        nagfor*)                        # NAGFOR 5.3
+          tmp_sharedflag='-Wl,-shared' ;;
+	xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+	  tmp_sharedflag='-qmkshrobj'
+	  tmp_addflag= ;;
+	nvcc*)	# Cuda Compiler Driver 2.2
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	  _LT_TAGVAR(compiler_needs_object, $1)=yes
+	  ;;
+	esac
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)			# Sun C 5.9
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	  _LT_TAGVAR(compiler_needs_object, $1)=yes
+	  tmp_sharedflag='-G' ;;
+	*Sun\ F*)			# Sun Fortran 8.3
+	  tmp_sharedflag='-G' ;;
+	esac
+	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+
+        if test yes = "$supports_anon_versioning"; then
+          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+            cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+            echo "local: *; };" >> $output_objdir/$libname.ver~
+            $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
+        fi
+
+	case $cc_basename in
+	tcc*)
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic'
+	  ;;
+	xlf* | bgf* | bgxlf* | mpixlf*)
+	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+	  if test yes = "$supports_anon_versioning"; then
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+              cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+              echo "local: *; };" >> $output_objdir/$libname.ver~
+              $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+	  fi
+	  ;;
+	esac
+      else
+        _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  # For security reasons, it is highly recommended that you always
+	  # use absolute paths for naming shared libraries, and exclude the
+	  # DT_RUNPATH tag from executables and libraries.  But doing so
+	  # requires that you compile everything twice, which is a pain.
+	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+	  else
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+
+    if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then
+      runpath_var=
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(always_export_symbols, $1)=yes
+      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	_LT_TAGVAR(hardcode_direct, $1)=unsupported
+      fi
+      ;;
+
+    aix[[4-9]]*)
+      if test ia64 = "$host_cpu"; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to GNU nm, but means don't demangle to AIX nm.
+	# Without the "-l" option, or with the "-B" option, AIX nm treats
+	# weak defined symbols like other global defined symbols, whereas
+	# GNU nm marks them as "W".
+	# While the 'weak' keyword is ignored in the Export File, we need
+	# it in the Import File for the 'aix-soname' feature, so we have
+	# to replace the "-B" option with "-P" for AIX nm.
+	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
+	else
+	  _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# have runtime linking enabled, and use it for executables.
+	# For shared libraries, we enable/disable runtime linking
+	# depending on the kind of the shared library created -
+	# when "with_aix_soname,aix_use_runtimelinking" is:
+	# "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
+	# "aix,yes"  lib.so          shared, rtl:yes, for executables
+	#            lib.a           static archive
+	# "both,no"  lib.so.V(shr.o) shared, rtl:yes
+	#            lib.a(lib.so.V) shared, rtl:no,  for executables
+	# "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
+	#            lib.a(lib.so.V) shared, rtl:no
+	# "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
+	#            lib.a           static archive
+	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+	  for ld_flag in $LDFLAGS; do
+	  if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
+	    aix_use_runtimelinking=yes
+	    break
+	  fi
+	  done
+	  if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
+	    # With aix-soname=svr4, we create the lib.so.V shared archives only,
+	    # so we don't have lib.a shared libs to link our executables.
+	    # We have to force runtime linking in this case.
+	    aix_use_runtimelinking=yes
+	    LDFLAGS="$LDFLAGS -Wl,-brtl"
+	  fi
+	  ;;
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      _LT_TAGVAR(archive_cmds, $1)=''
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_TAGVAR(file_list_spec, $1)='$wl-f,'
+      case $with_aix_soname,$aix_use_runtimelinking in
+      aix,*) ;; # traditional, no import file
+      svr4,* | *,yes) # use import file
+	# The Import File defines what to hardcode.
+	_LT_TAGVAR(hardcode_direct, $1)=no
+	_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+	;;
+      esac
+
+      if test yes = "$GCC"; then
+	case $host_os in aix4.[[012]]|aix4.[[012]].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`$CC -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	  # We have reworked collect2
+	  :
+	  else
+	  # We have old collect2
+	  _LT_TAGVAR(hardcode_direct, $1)=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	  _LT_TAGVAR(hardcode_libdir_separator, $1)=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test yes = "$aix_use_runtimelinking"; then
+	  shared_flag="$shared_flag "'$wl-G'
+	fi
+	# Need to ensure runtime linking is disabled for the traditional
+	# shared library, or the linker may eventually find shared libraries
+	# /with/ Import File - we do not want to mix them.
+	shared_flag_aix='-shared'
+	shared_flag_svr4='-shared $wl-G'
+      else
+	# not using gcc
+	if test ia64 = "$host_cpu"; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test yes = "$aix_use_runtimelinking"; then
+	    shared_flag='$wl-G'
+	  else
+	    shared_flag='$wl-bM:SRE'
+	  fi
+	  shared_flag_aix='$wl-bM:SRE'
+	  shared_flag_svr4='$wl-G'
+	fi
+      fi
+
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      _LT_TAGVAR(always_export_symbols, $1)=yes
+      if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        _LT_SYS_MODULE_PATH_AIX([$1])
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
+      else
+	if test ia64 = "$host_cpu"; then
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib'
+	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an
+	 # empty executable.
+	 _LT_SYS_MODULE_PATH_AIX([$1])
+	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok'
+	  _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok'
+	  if test yes = "$with_gnu_ld"; then
+	    # We only use this code for GNU lds that support --whole-archive.
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
+	  else
+	    # Exported symbols can be pulled into shared objects from archives
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	  fi
+	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
+	  # -brtl affects multiple linker settings, -berok does not and is overridden later
+	  compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`'
+	  if test svr4 != "$with_aix_soname"; then
+	    # This is similar to how AIX traditionally builds its shared libraries.
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
+	  fi
+	  if test aix != "$with_aix_soname"; then
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 3 [...]
+	  else
+	    # used by -dlpreopen to get the symbols
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
+	  fi
+	  _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_expsym_cmds, $1)=''
+        ;;
+      m68k)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[[45]]*)
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      case $cc_basename in
+      cl*)
+	# Native MSVC
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	_LT_TAGVAR(always_export_symbols, $1)=yes
+	_LT_TAGVAR(file_list_spec, $1)='@'
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=.dll
+	# FIXME: Setting linknames here is a bad hack.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+	_LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+            cp "$export_symbols" "$output_objdir/$soname.def";
+            echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+          else
+            $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+          fi~
+          $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+          linknames='
+	# The linker will not automatically build a static lib if we build a DLL.
+	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+	_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+	# Don't use ranlib
+	_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+	_LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+          lt_tool_outputfile="@TOOL_OUTPUT@"~
+          case $lt_outputfile in
+            *.exe|*.EXE) ;;
+            *)
+              lt_outputfile=$lt_outputfile.exe
+              lt_tool_outputfile=$lt_tool_outputfile.exe
+              ;;
+          esac~
+          if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+            $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+            $RM "$lt_outputfile.manifest";
+          fi'
+	;;
+      *)
+	# Assume MSVC wrapper
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=.dll
+	# FIXME: Setting linknames here is a bad hack.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+	# The linker will automatically build a .lib file if we build a DLL.
+	_LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+	# FIXME: Should let the user specify the lib program.
+	_LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	;;
+      esac
+      ;;
+
+    darwin* | rhapsody*)
+      _LT_DARWIN_LINKER_FEATURES($1)
+      ;;
+
+    dgux*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2.*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    hpux9*)
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+      ;;
+
+    hpux10*)
+      if test yes,no = "$GCC,$with_gnu_ld"; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test no = "$with_gnu_ld"; then
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
+	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
+	_LT_TAGVAR(hardcode_direct, $1)=yes
+	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	_LT_TAGVAR(hardcode_minus_L, $1)=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test yes,no = "$GCC,$with_gnu_ld"; then
+	case $host_cpu in
+	hppa*64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case $host_cpu in
+	hppa*64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	m4_if($1, [], [
+	  # Older versions of the 11.00 compiler do not understand -b yet
+	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+	  _LT_LINKER_OPTION([if $CC understands -b],
+	    _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
+	    [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
+	    [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
+	  [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
+	  ;;
+	esac
+      fi
+      if test no = "$with_gnu_ld"; then
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
+	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  _LT_TAGVAR(hardcode_direct, $1)=no
+	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	  ;;
+	*)
+	  _LT_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+	# Try to use the -exported_symbol ld option, if it does not
+	# work, assume that -exports_file does not work either and
+	# implicitly export all symbols.
+	# This should be the same for all languages, so no per-tag cache variable.
+	AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
+	  [lt_cv_irix_exported_symbol],
+	  [save_LDFLAGS=$LDFLAGS
+	   LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
+	   AC_LINK_IFELSE(
+	     [AC_LANG_SOURCE(
+	        [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
+			      [C++], [[int foo (void) { return 0; }]],
+			      [Fortran 77], [[
+      subroutine foo
+      end]],
+			      [Fortran], [[
+      subroutine foo
+      end]])])],
+	      [lt_cv_irix_exported_symbol=yes],
+	      [lt_cv_irix_exported_symbol=no])
+           LDFLAGS=$save_LDFLAGS])
+	if test yes = "$lt_cv_irix_exported_symbol"; then
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
+	fi
+	_LT_TAGVAR(link_all_deplibs, $1)=no
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(inherit_rpath, $1)=yes
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    linux*)
+      case $cc_basename in
+      tcc*)
+	# Fabrice Bellard et al's Tiny C Compiler
+	_LT_TAGVAR(ld_shlibs, $1)=yes
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      esac
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    newsos6)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd* | bitrig*)
+      if test -f /usr/libexec/ld.so; then
+	_LT_TAGVAR(hardcode_direct, $1)=yes
+	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+	else
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	fi
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    os2*)
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      shrext_cmds=.dll
+      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	prefix_cmds="$SED"~
+	if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	  prefix_cmds="$prefix_cmds -e 1d";
+	fi~
+	prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      ;;
+
+    osf3*)
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+      else
+	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+      else
+	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+          $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    solaris*)
+      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
+      if test yes = "$GCC"; then
+	wlarc='$wl'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+          $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+	case `$CC -V 2>&1` in
+	*"Compilers 5.0"*)
+	  wlarc=''
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+            $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+	  ;;
+	*)
+	  wlarc='$wl'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+            $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+	  ;;
+	esac
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      case $host_os in
+      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+      *)
+	# The compiler driver will combine and reorder linker options,
+	# but understands '-z linker_flag'.  GCC discards it without '$wl',
+	# but is careful enough not to reorder.
+	# Supported since Solaris 2.6 (maybe 2.5.1?)
+	if test yes = "$GCC"; then
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
+	else
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+	fi
+	;;
+      esac
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    sunos4*)
+      if test sequent = "$host_vendor"; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+	  _LT_TAGVAR(hardcode_direct, $1)=no
+        ;;
+	motorola)
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4.3*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	_LT_TAGVAR(ld_shlibs, $1)=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+      _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We CANNOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+      _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      _LT_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    esac
+
+    if test sni = "$host_vendor"; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym'
+	;;
+      esac
+    fi
+  fi
+])
+AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no
+
+_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
+
+_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
+_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
+_LT_DECL([], [extract_expsyms_cmds], [2],
+    [The commands to extract the exported symbol list from a shared archive])
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+  # Assume -lc should be added
+  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+  if test yes,yes = "$GCC,$enable_shared"; then
+    case $_LT_TAGVAR(archive_cmds, $1) in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      AC_CACHE_CHECK([whether -lc should be explicitly linked in],
+	[lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
+	[$RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+	if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
+	  pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+	  _LT_TAGVAR(allow_undefined_flag, $1)=
+	  if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+	  then
+	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+	  else
+	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+	  fi
+	  _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+	])
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
+    [Whether or not to add -lc for building shared libraries])
+_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
+    [enable_shared_with_static_runtimes], [0],
+    [Whether or not to disallow shared libs when runtime libs are static])
+_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
+    [Compiler flag to allow reflexive dlopens])
+_LT_TAGDECL([], [whole_archive_flag_spec], [1],
+    [Compiler flag to generate shared objects directly from archives])
+_LT_TAGDECL([], [compiler_needs_object], [1],
+    [Whether the compiler copes with passing no objects directly])
+_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
+    [Create an old-style archive from a shared archive])
+_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
+    [Create a temporary old-style archive to link instead of a shared archive])
+_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
+_LT_TAGDECL([], [archive_expsym_cmds], [2])
+_LT_TAGDECL([], [module_cmds], [2],
+    [Commands used to build a loadable module if different from building
+    a shared archive.])
+_LT_TAGDECL([], [module_expsym_cmds], [2])
+_LT_TAGDECL([], [with_gnu_ld], [1],
+    [Whether we are building with GNU ld or not])
+_LT_TAGDECL([], [allow_undefined_flag], [1],
+    [Flag that allows shared libraries with undefined symbols to be built])
+_LT_TAGDECL([], [no_undefined_flag], [1],
+    [Flag that enforces no undefined symbols])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
+    [Flag to hardcode $libdir into a binary during linking.
+    This must work even if $libdir does not exist])
+_LT_TAGDECL([], [hardcode_libdir_separator], [1],
+    [Whether we need a single "-rpath" flag with a separated argument])
+_LT_TAGDECL([], [hardcode_direct], [0],
+    [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
+    DIR into the resulting binary])
+_LT_TAGDECL([], [hardcode_direct_absolute], [0],
+    [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
+    DIR into the resulting binary and the resulting library dependency is
+    "absolute", i.e impossible to change by setting $shlibpath_var if the
+    library is relocated])
+_LT_TAGDECL([], [hardcode_minus_L], [0],
+    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+    into the resulting binary])
+_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
+    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+    into the resulting binary])
+_LT_TAGDECL([], [hardcode_automatic], [0],
+    [Set to "yes" if building a shared library automatically hardcodes DIR
+    into the library and all subsequent libraries and executables linked
+    against it])
+_LT_TAGDECL([], [inherit_rpath], [0],
+    [Set to yes if linker adds runtime paths of dependent libraries
+    to runtime path list])
+_LT_TAGDECL([], [link_all_deplibs], [0],
+    [Whether libtool must link a program against all its dependency libraries])
+_LT_TAGDECL([], [always_export_symbols], [0],
+    [Set to "yes" if exported symbols are required])
+_LT_TAGDECL([], [export_symbols_cmds], [2],
+    [The commands to list exported symbols])
+_LT_TAGDECL([], [exclude_expsyms], [1],
+    [Symbols that should not be listed in the preloaded symbols])
+_LT_TAGDECL([], [include_expsyms], [1],
+    [Symbols that must always be exported])
+_LT_TAGDECL([], [prelink_cmds], [2],
+    [Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [postlink_cmds], [2],
+    [Commands necessary for finishing linking programs])
+_LT_TAGDECL([], [file_list_spec], [1],
+    [Specify filename containing input files])
+dnl FIXME: Not yet implemented
+dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
+dnl    [Compiler flag to generate thread safe objects])
+])# _LT_LINKER_SHLIBS
+
+
+# _LT_LANG_C_CONFIG([TAG])
+# ------------------------
+# Ensure that the configuration variables for a C compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_C_CONFIG],
+[m4_require([_LT_DECL_EGREP])dnl
+lt_save_CC=$CC
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+_LT_TAG_COMPILER
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_SYS_DYNAMIC_LINKER($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+  LT_SYS_DLOPEN_SELF
+  _LT_CMD_STRIPLIB
+
+  # Report what library types will actually be built
+  AC_MSG_CHECKING([if libtool supports shared libraries])
+  AC_MSG_RESULT([$can_build_shared])
+
+  AC_MSG_CHECKING([whether to build shared libraries])
+  test no = "$can_build_shared" && enable_shared=no
+
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
+  case $host_os in
+  aix3*)
+    test yes = "$enable_shared" && enable_static=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
+    fi
+    ;;
+
+  aix[[4-9]]*)
+    if test ia64 != "$host_cpu"; then
+      case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+      yes,aix,yes) ;;			# shared object as lib.so file only
+      yes,svr4,*) ;;			# shared object as lib.so archive member only
+      yes,*) enable_static=no ;;	# shared object in lib.a archive as well
+      esac
+    fi
+    ;;
+  esac
+  AC_MSG_RESULT([$enable_shared])
+
+  AC_MSG_CHECKING([whether to build static libraries])
+  # Make sure either enable_shared or enable_static is yes.
+  test yes = "$enable_shared" || enable_static=yes
+  AC_MSG_RESULT([$enable_static])
+
+  _LT_CONFIG($1)
+fi
+AC_LANG_POP
+CC=$lt_save_CC
+])# _LT_LANG_C_CONFIG
+
+
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_CXX_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+if test -n "$CXX" && ( test no != "$CXX" &&
+    ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) ||
+    (test g++ != "$CXX"))); then
+  AC_PROG_CXXCPP
+else
+  _lt_caught_CXX_error=yes
+fi
+
+AC_LANG_PUSH(C++)
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(compiler_needs_object, $1)=no
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test yes != "$_lt_caught_CXX_error"; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="int some_variable = 0;"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC=$CC
+  lt_save_CFLAGS=$CFLAGS
+  lt_save_LD=$LD
+  lt_save_GCC=$GCC
+  GCC=$GXX
+  lt_save_with_gnu_ld=$with_gnu_ld
+  lt_save_path_LD=$lt_cv_path_LD
+  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+  else
+    $as_unset lt_cv_prog_gnu_ld
+  fi
+  if test -n "${lt_cv_path_LDCXX+set}"; then
+    lt_cv_path_LD=$lt_cv_path_LDCXX
+  else
+    $as_unset lt_cv_path_LD
+  fi
+  test -z "${LDCXX+set}" || LD=$LDCXX
+  CC=${CXX-"c++"}
+  CFLAGS=$CXXFLAGS
+  compiler=$CC
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+
+  if test -n "$compiler"; then
+    # We don't want -fno-exception when compiling C++ code, so set the
+    # no_builtin_flag separately
+    if test yes = "$GXX"; then
+      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+    else
+      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+    fi
+
+    if test yes = "$GXX"; then
+      # Set up default GNU C++ configuration
+
+      LT_PATH_LD
+
+      # Check if GNU C++ uses GNU ld as the underlying linker, since the
+      # archiving commands below assume that GNU ld is being used.
+      if test yes = "$with_gnu_ld"; then
+        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+
+        # If archive_cmds runs LD, not CC, wlarc should be empty
+        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+        #     investigate it a little bit more. (MM)
+        wlarc='$wl'
+
+        # ancient GNU ld didn't support --whole-archive et. al.
+        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+	  $GREP 'no-whole-archive' > /dev/null; then
+          _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+        else
+          _LT_TAGVAR(whole_archive_flag_spec, $1)=
+        fi
+      else
+        with_gnu_ld=no
+        wlarc=
+
+        # A generic and very simple default shared library creation
+        # command for GNU C++ for the case where it uses the native
+        # linker, instead of GNU ld.  If possible, this setting should
+        # overridden to take advantage of the native linker features on
+        # the platform it is being used on.
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+      fi
+
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+    else
+      GXX=no
+      with_gnu_ld=no
+      wlarc=
+    fi
+
+    # PORTME: fill in a description of your system's C++ link characteristics
+    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+    _LT_TAGVAR(ld_shlibs, $1)=yes
+    case $host_os in
+      aix3*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+      aix[[4-9]]*)
+        if test ia64 = "$host_cpu"; then
+          # On IA64, the linker does run time linking by default, so we don't
+          # have to do anything special.
+          aix_use_runtimelinking=no
+          exp_sym_flag='-Bexport'
+          no_entry_flag=
+        else
+          aix_use_runtimelinking=no
+
+          # Test if we are trying to use run time linking or normal
+          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+          # have runtime linking enabled, and use it for executables.
+          # For shared libraries, we enable/disable runtime linking
+          # depending on the kind of the shared library created -
+          # when "with_aix_soname,aix_use_runtimelinking" is:
+          # "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
+          # "aix,yes"  lib.so          shared, rtl:yes, for executables
+          #            lib.a           static archive
+          # "both,no"  lib.so.V(shr.o) shared, rtl:yes
+          #            lib.a(lib.so.V) shared, rtl:no,  for executables
+          # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
+          #            lib.a(lib.so.V) shared, rtl:no
+          # "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
+          #            lib.a           static archive
+          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+	    for ld_flag in $LDFLAGS; do
+	      case $ld_flag in
+	      *-brtl*)
+	        aix_use_runtimelinking=yes
+	        break
+	        ;;
+	      esac
+	    done
+	    if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
+	      # With aix-soname=svr4, we create the lib.so.V shared archives only,
+	      # so we don't have lib.a shared libs to link our executables.
+	      # We have to force runtime linking in this case.
+	      aix_use_runtimelinking=yes
+	      LDFLAGS="$LDFLAGS -Wl,-brtl"
+	    fi
+	    ;;
+          esac
+
+          exp_sym_flag='-bexport'
+          no_entry_flag='-bnoentry'
+        fi
+
+        # When large executables or shared objects are built, AIX ld can
+        # have problems creating the table of contents.  If linking a library
+        # or program results in "error TOC overflow" add -mminimal-toc to
+        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+        _LT_TAGVAR(archive_cmds, $1)=''
+        _LT_TAGVAR(hardcode_direct, $1)=yes
+        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+        _LT_TAGVAR(link_all_deplibs, $1)=yes
+        _LT_TAGVAR(file_list_spec, $1)='$wl-f,'
+        case $with_aix_soname,$aix_use_runtimelinking in
+        aix,*) ;;	# no import file
+        svr4,* | *,yes) # use import file
+          # The Import File defines what to hardcode.
+          _LT_TAGVAR(hardcode_direct, $1)=no
+          _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+          ;;
+        esac
+
+        if test yes = "$GXX"; then
+          case $host_os in aix4.[[012]]|aix4.[[012]].*)
+          # We only want to do this on AIX 4.2 and lower, the check
+          # below for broken collect2 doesn't work under 4.3+
+	  collect2name=`$CC -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	    # We have reworked collect2
+	    :
+	  else
+	    # We have old collect2
+	    _LT_TAGVAR(hardcode_direct, $1)=unsupported
+	    # It fails to find uninstalled libraries when the uninstalled
+	    # path is not listed in the libpath.  Setting hardcode_minus_L
+	    # to unsupported forces relinking
+	    _LT_TAGVAR(hardcode_minus_L, $1)=yes
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	    _LT_TAGVAR(hardcode_libdir_separator, $1)=
+	  fi
+          esac
+          shared_flag='-shared'
+	  if test yes = "$aix_use_runtimelinking"; then
+	    shared_flag=$shared_flag' $wl-G'
+	  fi
+	  # Need to ensure runtime linking is disabled for the traditional
+	  # shared library, or the linker may eventually find shared libraries
+	  # /with/ Import File - we do not want to mix them.
+	  shared_flag_aix='-shared'
+	  shared_flag_svr4='-shared $wl-G'
+        else
+          # not using gcc
+          if test ia64 = "$host_cpu"; then
+	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	  # chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+          else
+	    if test yes = "$aix_use_runtimelinking"; then
+	      shared_flag='$wl-G'
+	    else
+	      shared_flag='$wl-bM:SRE'
+	    fi
+	    shared_flag_aix='$wl-bM:SRE'
+	    shared_flag_svr4='$wl-G'
+          fi
+        fi
+
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall'
+        # It seems that -bexpall does not export symbols beginning with
+        # underscore (_), so it is better to generate a list of symbols to
+	# export.
+        _LT_TAGVAR(always_export_symbols, $1)=yes
+	if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
+          # Warning - without using the other runtime loading flags (-brtl),
+          # -berok will link without error, but may produce a broken library.
+          # The "-G" linker flag allows undefined symbols.
+          _LT_TAGVAR(no_undefined_flag, $1)='-bernotok'
+          # Determine the default libpath from the value encoded in an empty
+          # executable.
+          _LT_SYS_MODULE_PATH_AIX([$1])
+          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
+
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
+        else
+          if test ia64 = "$host_cpu"; then
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib'
+	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
+          else
+	    # Determine the default libpath from the value encoded in an
+	    # empty executable.
+	    _LT_SYS_MODULE_PATH_AIX([$1])
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
+	    # Warning - without using the other run time loading flags,
+	    # -berok will link without error, but may produce a broken library.
+	    _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok'
+	    _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok'
+	    if test yes = "$with_gnu_ld"; then
+	      # We only use this code for GNU lds that support --whole-archive.
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
+	    else
+	      # Exported symbols can be pulled into shared objects from archives
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	    fi
+	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
+	    # -brtl affects multiple linker settings, -berok does not and is overridden later
+	    compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`'
+	    if test svr4 != "$with_aix_soname"; then
+	      # This is similar to how AIX traditionally builds its shared
+	      # libraries. Need -bnortl late, we may have -brtl in LDFLAGS.
+	      _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
+	    fi
+	    if test aix != "$with_aix_soname"; then
+	      _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# [...]
+	    else
+	      # used by -dlpreopen to get the symbols
+	      _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
+	    fi
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d'
+          fi
+        fi
+        ;;
+
+      beos*)
+	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	  # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	  # support --undefined.  This deserves some investigation.  FIXME
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	else
+	  _LT_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+
+      chorus*)
+        case $cc_basename in
+          *)
+	  # FIXME: insert proper C++ library support
+	  _LT_TAGVAR(ld_shlibs, $1)=no
+	  ;;
+        esac
+        ;;
+
+      cygwin* | mingw* | pw32* | cegcc*)
+	case $GXX,$cc_basename in
+	,cl* | no,cl*)
+	  # Native MSVC
+	  # hardcode_libdir_flag_spec is actually meaningless, as there is
+	  # no search path for DLLs.
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	  _LT_TAGVAR(always_export_symbols, $1)=yes
+	  _LT_TAGVAR(file_list_spec, $1)='@'
+	  # Tell ltmain to make .lib files, not .a files.
+	  libext=lib
+	  # Tell ltmain to make .dll files, not .so files.
+	  shrext_cmds=.dll
+	  # FIXME: Setting linknames here is a bad hack.
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+              cp "$export_symbols" "$output_objdir/$soname.def";
+              echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+            else
+              $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+            fi~
+            $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+            linknames='
+	  # The linker will not automatically build a static lib if we build a DLL.
+	  # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	  # Don't use ranlib
+	  _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+	  _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+            lt_tool_outputfile="@TOOL_OUTPUT@"~
+            case $lt_outputfile in
+              *.exe|*.EXE) ;;
+              *)
+                lt_outputfile=$lt_outputfile.exe
+                lt_tool_outputfile=$lt_tool_outputfile.exe
+                ;;
+            esac~
+            func_to_tool_file "$lt_outputfile"~
+            if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+              $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+              $RM "$lt_outputfile.manifest";
+            fi'
+	  ;;
+	*)
+	  # g++
+	  # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+	  # as there is no search path for DLLs.
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols'
+	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	  _LT_TAGVAR(always_export_symbols, $1)=no
+	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	    # If the export-symbols file already is a .def file, use it as
+	    # is; otherwise, prepend EXPORTS...
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+              cp $export_symbols $output_objdir/$soname.def;
+            else
+              echo EXPORTS > $output_objdir/$soname.def;
+              cat $export_symbols >> $output_objdir/$soname.def;
+            fi~
+            $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	  else
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	  fi
+	  ;;
+	esac
+	;;
+      darwin* | rhapsody*)
+        _LT_DARWIN_LINKER_FEATURES($1)
+	;;
+
+      os2*)
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	_LT_TAGVAR(hardcode_minus_L, $1)=yes
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	shrext_cmds=.dll
+	_LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	  $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	  $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	  $ECHO EXPORTS >> $output_objdir/$libname.def~
+	  emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	  $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	  emximp -o $lib $output_objdir/$libname.def'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	  $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	  $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	  $ECHO EXPORTS >> $output_objdir/$libname.def~
+	  prefix_cmds="$SED"~
+	  if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	    prefix_cmds="$prefix_cmds -e 1d";
+	  fi~
+	  prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	  cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	  $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	  emximp -o $lib $output_objdir/$libname.def'
+	_LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	;;
+
+      dgux*)
+        case $cc_basename in
+          ec++*)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          ghcx*)
+	    # Green Hills C++ Compiler
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+        esac
+        ;;
+
+      freebsd2.*)
+        # C++ shared libraries reported to be fairly broken before
+	# switch to ELF
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      freebsd-elf*)
+        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+        ;;
+
+      freebsd* | dragonfly*)
+        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+        # conventions
+        _LT_TAGVAR(ld_shlibs, $1)=yes
+        ;;
+
+      haiku*)
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+        _LT_TAGVAR(link_all_deplibs, $1)=yes
+        ;;
+
+      hpux9*)
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+        _LT_TAGVAR(hardcode_direct, $1)=yes
+        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+				             # but as the default
+				             # location of the library.
+
+        case $cc_basename in
+          CC*)
+            # FIXME: insert proper C++ library support
+            _LT_TAGVAR(ld_shlibs, $1)=no
+            ;;
+          aCC*)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+            # Commands to make compiler produce verbose output that lists
+            # what "hidden" libraries, object files and flags are used when
+            # linking a shared library.
+            #
+            # There doesn't appear to be a way to prevent this compiler from
+            # explicitly linking system object files so we need to strip them
+            # from the output so that they don't get included in the library
+            # dependencies.
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+            ;;
+          *)
+            if test yes = "$GXX"; then
+              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+            else
+              # FIXME: insert proper C++ library support
+              _LT_TAGVAR(ld_shlibs, $1)=no
+            fi
+            ;;
+        esac
+        ;;
+
+      hpux10*|hpux11*)
+        if test no = "$with_gnu_ld"; then
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
+	  _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+          case $host_cpu in
+            hppa*64*|ia64*)
+              ;;
+            *)
+	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+              ;;
+          esac
+        fi
+        case $host_cpu in
+          hppa*64*|ia64*)
+            _LT_TAGVAR(hardcode_direct, $1)=no
+            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+            ;;
+          *)
+            _LT_TAGVAR(hardcode_direct, $1)=yes
+            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+					         # but as the default
+					         # location of the library.
+            ;;
+        esac
+
+        case $cc_basename in
+          CC*)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          aCC*)
+	    case $host_cpu in
+	      hppa*64*)
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      ia64*)
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      *)
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	    esac
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    ;;
+          *)
+	    if test yes = "$GXX"; then
+	      if test no = "$with_gnu_ld"; then
+	        case $host_cpu in
+	          hppa*64*)
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          ia64*)
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          *)
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	        esac
+	      fi
+	    else
+	      # FIXME: insert proper C++ library support
+	      _LT_TAGVAR(ld_shlibs, $1)=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      interix[[3-9]]*)
+	_LT_TAGVAR(hardcode_direct, $1)=no
+	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+	# Instead, shared libraries are loaded at an image base (0x10000000 by
+	# default) and relocated if they conflict, which is a slow very memory
+	# consuming and fragmenting process.  To avoid this, we pick a random,
+	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	;;
+      irix5* | irix6*)
+        case $cc_basename in
+          CC*)
+	    # SGI C++
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    if test yes = "$GXX"; then
+	      if test no = "$with_gnu_ld"; then
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+	      else
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib'
+	      fi
+	    fi
+	    _LT_TAGVAR(link_all_deplibs, $1)=yes
+	    ;;
+        esac
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+        _LT_TAGVAR(inherit_rpath, $1)=yes
+        ;;
+
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+	    ;;
+	  icpc* | ecpc* )
+	    # Intel C++
+	    with_gnu_ld=yes
+	    # version 8.0 and above of icpc choke on multiply defined symbols
+	    # if we add $predep_objects and $postdep_objects, however 7.1 and
+	    # earlier do not add the objects themselves.
+	    case `$CC -V 2>&1` in
+	      *"Version 7."*)
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	      *)  # Version 8.0 or newer
+	        tmp_idyn=
+	        case $host_cpu in
+		  ia64*) tmp_idyn=' -i_dynamic';;
+		esac
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	    esac
+	    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
+	    ;;
+          pgCC* | pgcpp*)
+            # Portland Group C++ compiler
+	    case `$CC -V` in
+	    *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
+	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+                $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+                $RANLIB $oldlib'
+	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+	      ;;
+	    *) # Version 6 and above use weak symbols
+	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+	      ;;
+	    esac
+
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+            ;;
+	  cxx*)
+	    # Compaq C++
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname  -o $lib $wl-retain-symbols-file $wl$export_symbols'
+
+	    runpath_var=LD_RUN_PATH
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+	    ;;
+	  xl* | mpixl* | bgxl*)
+	    # IBM XL 8.0 on PPC, with GNU ld
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	    if test yes = "$supports_anon_versioning"; then
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+                cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+                echo "local: *; };" >> $output_objdir/$libname.ver~
+                $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
+	    fi
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+	      _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols'
+	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	      _LT_TAGVAR(compiler_needs_object, $1)=yes
+
+	      # Not sure whether something based on
+	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+	      # would be better.
+	      output_verbose_link_cmd='func_echo_all'
+
+	      # Archives containing C++ object files must be created using
+	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	      # necessary to make sure instantiated templates are included
+	      # in the archive.
+	      _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+
+      lynxos*)
+        # FIXME: insert proper C++ library support
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	;;
+
+      m88k*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+	;;
+
+      mvs*)
+        case $cc_basename in
+          cxx*)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+	  *)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+	esac
+	;;
+
+      netbsd*)
+        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+	  wlarc=
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	  _LT_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	fi
+	# Workaround some broken pre-1.5 toolchains
+	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+	;;
+
+      *nto* | *qnx*)
+        _LT_TAGVAR(ld_shlibs, $1)=yes
+	;;
+
+      openbsd* | bitrig*)
+	if test -f /usr/libexec/ld.so; then
+	  _LT_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+	  fi
+	  output_verbose_link_cmd=func_echo_all
+	else
+	  _LT_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+
+      osf3* | osf4* | osf5*)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	    # Archives containing C++ object files must be created using
+	    # the KAI C++ compiler.
+	    case $host in
+	      osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
+	      *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
+	    esac
+	    ;;
+          RCC*)
+	    # Rational C++ 2.4.1
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          cxx*)
+	    case $host in
+	      osf3*)
+	        _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+		;;
+	      *)
+	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+                  echo "-hidden">> $lib.exp~
+                  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~
+                  $RM $lib.exp'
+	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+		;;
+	    esac
+
+	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    ;;
+	  *)
+	    if test yes,no = "$GXX,$with_gnu_ld"; then
+	      _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+	      case $host in
+	        osf3*)
+	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+		  ;;
+	        *)
+	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+		  ;;
+	      esac
+
+	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+	      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	      # Commands to make compiler produce verbose output that lists
+	      # what "hidden" libraries, object files and flags are used when
+	      # linking a shared library.
+	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+	    else
+	      # FIXME: insert proper C++ library support
+	      _LT_TAGVAR(ld_shlibs, $1)=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      psos*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      sunos4*)
+        case $cc_basename in
+          CC*)
+	    # Sun C++ 4.x
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          lcc*)
+	    # Lucid
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+        esac
+        ;;
+
+      solaris*)
+        case $cc_basename in
+          CC* | sunCC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
+	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+              $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	    _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	    case $host_os in
+	      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+	      *)
+		# The compiler driver will combine and reorder linker options,
+		# but understands '-z linker_flag'.
+	        # Supported since Solaris 2.6 (maybe 2.5.1?)
+		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+	        ;;
+	    esac
+	    _LT_TAGVAR(link_all_deplibs, $1)=yes
+
+	    output_verbose_link_cmd='func_echo_all'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+	    ;;
+          gcx*)
+	    # Green Hills C++ Compiler
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
+
+	    # The C++ compiler must be used to create the archive.
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    # GNU C++ compiler with Solaris linker
+	    if test yes,no = "$GXX,$with_gnu_ld"; then
+	      _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs'
+	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
+	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+                  $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	      else
+	        # g++ 2.7 appears to require '-G' NOT '-shared' on this
+	        # platform.
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
+	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+                  $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	      fi
+
+	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir'
+	      case $host_os in
+		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+		*)
+		  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
+		  ;;
+	      esac
+	    fi
+	    ;;
+        esac
+        ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+      _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      case $cc_basename in
+        CC*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+      esac
+      ;;
+
+      sysv5* | sco3.2v5* | sco5v6*)
+	# Note: We CANNOT use -z defs as we might desire, because we do not
+	# link with -lc, and that would cause any symbols used from libc to
+	# always be unresolved, which means just about no library would
+	# ever link correctly.  If we're not using GNU ld we use -z text
+	# though, which does catch some bad symbols but isn't as heavy-handed
+	# as -z defs.
+	_LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+	_LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs'
+	_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir'
+	_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+	_LT_TAGVAR(link_all_deplibs, $1)=yes
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport'
+	runpath_var='LD_RUN_PATH'
+
+	case $cc_basename in
+          CC*)
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
+              '"$_LT_TAGVAR(old_archive_cmds, $1)"
+	    _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
+              '"$_LT_TAGVAR(reload_cmds, $1)"
+	    ;;
+	  *)
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    ;;
+	esac
+      ;;
+
+      tandem*)
+        case $cc_basename in
+          NCC*)
+	    # NonStop-UX NCC 3.20
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+        esac
+        ;;
+
+      vxworks*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      *)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+    esac
+
+    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+    test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no
+
+    _LT_TAGVAR(GCC, $1)=$GXX
+    _LT_TAGVAR(LD, $1)=$LD
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_SYS_HIDDEN_LIBDEPS($1)
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+  LDCXX=$LD
+  LD=$lt_save_LD
+  GCC=$lt_save_GCC
+  with_gnu_ld=$lt_save_with_gnu_ld
+  lt_cv_path_LDCXX=$lt_cv_path_LD
+  lt_cv_path_LD=$lt_save_path_LD
+  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test yes != "$_lt_caught_CXX_error"
+
+AC_LANG_POP
+])# _LT_LANG_CXX_CONFIG
+
+
+# _LT_FUNC_STRIPNAME_CNF
+# ----------------------
+# func_stripname_cnf prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+#
+# This function is identical to the (non-XSI) version of func_stripname,
+# except this one can be used by m4 code that may be executed by configure,
+# rather than the libtool script.
+m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
+AC_REQUIRE([_LT_DECL_SED])
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
+func_stripname_cnf ()
+{
+  case @S|@2 in
+  .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;;
+  *)  func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;;
+  esac
+} # func_stripname_cnf
+])# _LT_FUNC_STRIPNAME_CNF
+
+
+# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
+# ---------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
+# Dependencies to place before and after the object being linked:
+_LT_TAGVAR(predep_objects, $1)=
+_LT_TAGVAR(postdep_objects, $1)=
+_LT_TAGVAR(predeps, $1)=
+_LT_TAGVAR(postdeps, $1)=
+_LT_TAGVAR(compiler_lib_search_path, $1)=
+
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library.  It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
+int a;
+void foo (void) { a = 0; }
+_LT_EOF
+], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+_LT_EOF
+], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
+      subroutine foo
+      implicit none
+      integer*4 a
+      a=0
+      return
+      end
+_LT_EOF
+], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
+      subroutine foo
+      implicit none
+      integer a
+      a=0
+      return
+      end
+_LT_EOF
+], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
+public class foo {
+  private int a;
+  public void bar (void) {
+    a = 0;
+  }
+};
+_LT_EOF
+], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
+package foo
+func foo() {
+}
+_LT_EOF
+])
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
+esac
+
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  for p in `eval "$output_verbose_link_cmd"`; do
+    case $prev$p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test x-L = "$p" ||
+          test x-R = "$p"; then
+	 prev=$p
+	 continue
+       fi
+
+       # Expand the sysroot to ease extracting the directories later.
+       if test -z "$prev"; then
+         case $p in
+         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+         esac
+       fi
+       case $p in
+       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+       esac
+       if test no = "$pre_test_object_deps_done"; then
+	 case $prev in
+	 -L | -R)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
+	     _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p
+	   else
+	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
+	   _LT_TAGVAR(postdeps, $1)=$prev$p
+	 else
+	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p"
+	 fi
+       fi
+       prev=
+       ;;
+
+    *.lto.$objext) ;; # Ignore GCC LTO objects
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test no = "$pre_test_object_deps_done"; then
+	 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
+	   _LT_TAGVAR(predep_objects, $1)=$p
+	 else
+	   _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
+	 fi
+       else
+	 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
+	   _LT_TAGVAR(postdep_objects, $1)=$p
+	 else
+	   _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
+
+# PORTME: override above test on systems where it is broken
+m4_if([$1], [CXX],
+[case $host_os in
+interix[[3-9]]*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  _LT_TAGVAR(predep_objects,$1)=
+  _LT_TAGVAR(postdep_objects,$1)=
+  _LT_TAGVAR(postdeps,$1)=
+  ;;
+esac
+])
+
+case " $_LT_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'`
+fi
+_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
+    [The directories searched by this compiler when creating a shared library])
+_LT_TAGDECL([], [predep_objects], [1],
+    [Dependencies to place before and after the objects being linked to
+    create a shared library])
+_LT_TAGDECL([], [postdep_objects], [1])
+_LT_TAGDECL([], [predeps], [1])
+_LT_TAGDECL([], [postdeps], [1])
+_LT_TAGDECL([], [compiler_lib_search_path], [1],
+    [The library search path used internally by the compiler when linking
+    a shared library])
+])# _LT_SYS_HIDDEN_LIBDEPS
+
+
+# _LT_LANG_F77_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a Fortran 77 compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_F77_CONFIG],
+[AC_LANG_PUSH(Fortran 77)
+if test -z "$F77" || test no = "$F77"; then
+  _lt_disable_F77=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the F77 compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test yes != "$_lt_disable_F77"; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code="\
+      program t
+      end
+"
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC=$CC
+  lt_save_GCC=$GCC
+  lt_save_CFLAGS=$CFLAGS
+  CC=${F77-"f77"}
+  CFLAGS=$FFLAGS
+  compiler=$CC
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+  GCC=$G77
+  if test -n "$compiler"; then
+    AC_MSG_CHECKING([if libtool supports shared libraries])
+    AC_MSG_RESULT([$can_build_shared])
+
+    AC_MSG_CHECKING([whether to build shared libraries])
+    test no = "$can_build_shared" && enable_shared=no
+
+    # On AIX, shared libraries and static libraries use the same namespace, and
+    # are all built from PIC.
+    case $host_os in
+      aix3*)
+        test yes = "$enable_shared" && enable_static=no
+        if test -n "$RANLIB"; then
+          archive_cmds="$archive_cmds~\$RANLIB \$lib"
+          postinstall_cmds='$RANLIB $lib'
+        fi
+        ;;
+      aix[[4-9]]*)
+	if test ia64 != "$host_cpu"; then
+	  case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+	  yes,aix,yes) ;;		# shared object as lib.so file only
+	  yes,svr4,*) ;;		# shared object as lib.so archive member only
+	  yes,*) enable_static=no ;;	# shared object in lib.a archive as well
+	  esac
+	fi
+        ;;
+    esac
+    AC_MSG_RESULT([$enable_shared])
+
+    AC_MSG_CHECKING([whether to build static libraries])
+    # Make sure either enable_shared or enable_static is yes.
+    test yes = "$enable_shared" || enable_static=yes
+    AC_MSG_RESULT([$enable_static])
+
+    _LT_TAGVAR(GCC, $1)=$G77
+    _LT_TAGVAR(LD, $1)=$LD
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  GCC=$lt_save_GCC
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+fi # test yes != "$_lt_disable_F77"
+
+AC_LANG_POP
+])# _LT_LANG_F77_CONFIG
+
+
+# _LT_LANG_FC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for a Fortran compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_FC_CONFIG],
+[AC_LANG_PUSH(Fortran)
+
+if test -z "$FC" || test no = "$FC"; then
+  _lt_disable_FC=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for fc test sources.
+ac_ext=${ac_fc_srcext-f}
+
+# Object file extension for compiled fc test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the FC compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test yes != "$_lt_disable_FC"; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code="\
+      program t
+      end
+"
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC=$CC
+  lt_save_GCC=$GCC
+  lt_save_CFLAGS=$CFLAGS
+  CC=${FC-"f95"}
+  CFLAGS=$FCFLAGS
+  compiler=$CC
+  GCC=$ac_cv_fc_compiler_gnu
+
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+
+  if test -n "$compiler"; then
+    AC_MSG_CHECKING([if libtool supports shared libraries])
+    AC_MSG_RESULT([$can_build_shared])
+
+    AC_MSG_CHECKING([whether to build shared libraries])
+    test no = "$can_build_shared" && enable_shared=no
+
+    # On AIX, shared libraries and static libraries use the same namespace, and
+    # are all built from PIC.
+    case $host_os in
+      aix3*)
+        test yes = "$enable_shared" && enable_static=no
+        if test -n "$RANLIB"; then
+          archive_cmds="$archive_cmds~\$RANLIB \$lib"
+          postinstall_cmds='$RANLIB $lib'
+        fi
+        ;;
+      aix[[4-9]]*)
+	if test ia64 != "$host_cpu"; then
+	  case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+	  yes,aix,yes) ;;		# shared object as lib.so file only
+	  yes,svr4,*) ;;		# shared object as lib.so archive member only
+	  yes,*) enable_static=no ;;	# shared object in lib.a archive as well
+	  esac
+	fi
+        ;;
+    esac
+    AC_MSG_RESULT([$enable_shared])
+
+    AC_MSG_CHECKING([whether to build static libraries])
+    # Make sure either enable_shared or enable_static is yes.
+    test yes = "$enable_shared" || enable_static=yes
+    AC_MSG_RESULT([$enable_static])
+
+    _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu
+    _LT_TAGVAR(LD, $1)=$LD
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_SYS_HIDDEN_LIBDEPS($1)
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  GCC=$lt_save_GCC
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+fi # test yes != "$_lt_disable_FC"
+
+AC_LANG_POP
+])# _LT_LANG_FC_CONFIG
+
+
+# _LT_LANG_GCJ_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Java Compiler compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_GCJ_CONFIG],
+[AC_REQUIRE([LT_PROG_GCJ])dnl
+AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GCJ-"gcj"}
+CFLAGS=$GCJFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)=$LD
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+
+  _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GCJ_CONFIG
+
+
+# _LT_LANG_GO_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Go compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_GO_CONFIG],
+[AC_REQUIRE([LT_PROG_GO])dnl
+AC_LANG_SAVE
+
+# Source file extension for Go test sources.
+ac_ext=go
+
+# Object file extension for compiled Go test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="package main; func main() { }"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='package main; func main() { }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GOC-"gccgo"}
+CFLAGS=$GOFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)=$LD
+_LT_CC_BASENAME([$compiler])
+
+# Go did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+
+  _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GO_CONFIG
+
+
+# _LT_LANG_RC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for the Windows resource compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_RC_CONFIG],
+[AC_REQUIRE([LT_PROG_RC])dnl
+AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=$lt_simple_compile_test_code
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+CFLAGS=
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+if test -n "$compiler"; then
+  :
+  _LT_CONFIG($1)
+fi
+
+GCC=$lt_save_GCC
+AC_LANG_RESTORE
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_RC_CONFIG
+
+
+# LT_PROG_GCJ
+# -----------
+AC_DEFUN([LT_PROG_GCJ],
+[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+    [AC_CHECK_TOOL(GCJ, gcj,)
+      test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2"
+      AC_SUBST(GCJFLAGS)])])[]dnl
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+
+
+# LT_PROG_GO
+# ----------
+AC_DEFUN([LT_PROG_GO],
+[AC_CHECK_TOOL(GOC, gccgo,)
+])
+
+
+# LT_PROG_RC
+# ----------
+AC_DEFUN([LT_PROG_RC],
+[AC_CHECK_TOOL(RC, windres,)
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_RC], [])
+
+
+# _LT_DECL_EGREP
+# --------------
+# If we don't have a new enough Autoconf to choose the best grep
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_EGREP],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_REQUIRE([AC_PROG_FGREP])dnl
+test -z "$GREP" && GREP=grep
+_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
+_LT_DECL([], [EGREP], [1], [An ERE matcher])
+_LT_DECL([], [FGREP], [1], [A literal string matcher])
+dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
+AC_SUBST([GREP])
+])
+
+
+# _LT_DECL_OBJDUMP
+# --------------
+# If we don't have a new enough Autoconf to choose the best objdump
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_OBJDUMP],
+[AC_CHECK_TOOL(OBJDUMP, objdump, false)
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+AC_SUBST([OBJDUMP])
+])
+
+# _LT_DECL_DLLTOOL
+# ----------------
+# Ensure DLLTOOL variable is set.
+m4_defun([_LT_DECL_DLLTOOL],
+[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
+AC_SUBST([DLLTOOL])
+])
+
+# _LT_DECL_SED
+# ------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible.  Prefer GNU sed if found.
+m4_defun([_LT_DECL_SED],
+[AC_PROG_SED
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
+_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
+    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
+])# _LT_DECL_SED
+
+m4_ifndef([AC_PROG_SED], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+############################################################
+
+m4_defun([AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+IFS=$as_save_IFS
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f "$lt_ac_sed" && continue
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test 10 -lt "$lt_ac_count" && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test "$lt_ac_count" -gt "$lt_ac_max"; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+])
+SED=$lt_cv_path_SED
+AC_SUBST([SED])
+AC_MSG_RESULT([$SED])
+])#AC_PROG_SED
+])#m4_ifndef
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_SED], [])
+
+
+# _LT_CHECK_SHELL_FEATURES
+# ------------------------
+# Find out whether the shell is Bourne or XSI compatible,
+# or has some other useful features.
+m4_defun([_LT_CHECK_SHELL_FEATURES],
+[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
+_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+])# _LT_CHECK_SHELL_FEATURES
+
+
+# _LT_PATH_CONVERSION_FUNCTIONS
+# -----------------------------
+# Determine what file name conversion functions should be used by
+# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
+# for certain cross-compile configurations and native mingw.
+m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_MSG_CHECKING([how to convert $build file names to $host format])
+AC_CACHE_VAL(lt_cv_to_host_file_cmd,
+[case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+        ;;
+    esac
+    ;;
+  *-*-cygwin* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_noop
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+        ;;
+    esac
+    ;;
+  * ) # unhandled hosts (and "normal" native builds)
+    lt_cv_to_host_file_cmd=func_convert_file_noop
+    ;;
+esac
+])
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
+_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
+         [0], [convert $build file names to $host format])dnl
+
+AC_MSG_CHECKING([how to convert $build file names to toolchain format])
+AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
+[#assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+        ;;
+    esac
+    ;;
+esac
+])
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
+_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
+         [0], [convert $build files to toolchain format])dnl
+])# _LT_PATH_CONVERSION_FUNCTIONS
diff --git a/proofs/lfsc_checker/config/ltmain.sh b/proofs/lfsc_checker/config/ltmain.sh
new file mode 100644
index 0000000..147d758
--- /dev/null
+++ b/proofs/lfsc_checker/config/ltmain.sh
@@ -0,0 +1,11156 @@
+#! /bin/sh
+## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
+##               by inline-source v2014-01-03.01
+
+# libtool (GNU libtool) 2.4.6
+# Provide generalized library-building support services.
+# Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+
+# Copyright (C) 1996-2015 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+PROGRAM=libtool
+PACKAGE=libtool
+VERSION="2.4.6 Debian-2.4.6-0.1"
+package_revision=2.4.6
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Run './libtool --help' for help with using this script from the
+# command line.
+
+
+## ------------------------------- ##
+## User overridable command paths. ##
+## ------------------------------- ##
+
+# After configure completes, it has a better idea of some of the
+# shell tools we need than the defaults used by the functions shared
+# with bootstrap, so set those here where they can still be over-
+# ridden by the user, but otherwise take precedence.
+
+: ${AUTOCONF="autoconf"}
+: ${AUTOMAKE="automake"}
+
+
+## -------------------------- ##
+## Source external libraries. ##
+## -------------------------- ##
+
+# Much of our low-level functionality needs to be sourced from external
+# libraries, which are installed to $pkgauxdir.
+
+# Set a version string for this script.
+scriptversion=2015-01-20.17; # UTC
+
+# General shell script boiler plate, and helper functions.
+# Written by Gary V. Vaughan, 2004
+
+# Copyright (C) 2004-2015 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+
+# As a special exception to the GNU General Public License, if you distribute
+# this file as part of a program or library that is built using GNU Libtool,
+# you may include this file under the same distribution terms that you use
+# for the rest of that program.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Please report bugs or propose patches to gary at gnu.org.
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Evaluate this file near the top of your script to gain access to
+# the functions and variables defined here:
+#
+#   . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh
+#
+# If you need to override any of the default environment variable
+# settings, do that before evaluating this file.
+
+
+## -------------------- ##
+## Shell normalisation. ##
+## -------------------- ##
+
+# Some shells need a little help to be as Bourne compatible as possible.
+# Before doing anything else, make sure all that help has been provided!
+
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac
+fi
+
+# NLS nuisances: We save the old values in case they are required later.
+_G_user_locale=
+_G_safe_locale=
+for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+  eval "if test set = \"\${$_G_var+set}\"; then
+          save_$_G_var=\$$_G_var
+          $_G_var=C
+	  export $_G_var
+	  _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\"
+	  _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
+	fi"
+done
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Make sure IFS has a sensible default
+sp=' '
+nl='
+'
+IFS="$sp	$nl"
+
+# There are apparently some retarded systems that use ';' as a PATH separator!
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+
+## ------------------------- ##
+## Locate command utilities. ##
+## ------------------------- ##
+
+
+# func_executable_p FILE
+# ----------------------
+# Check that FILE is an executable regular file.
+func_executable_p ()
+{
+    test -f "$1" && test -x "$1"
+}
+
+
+# func_path_progs PROGS_LIST CHECK_FUNC [PATH]
+# --------------------------------------------
+# Search for either a program that responds to --version with output
+# containing "GNU", or else returned by CHECK_FUNC otherwise, by
+# trying all the directories in PATH with each of the elements of
+# PROGS_LIST.
+#
+# CHECK_FUNC should accept the path to a candidate program, and
+# set $func_check_prog_result if it truncates its output less than
+# $_G_path_prog_max characters.
+func_path_progs ()
+{
+    _G_progs_list=$1
+    _G_check_func=$2
+    _G_PATH=${3-"$PATH"}
+
+    _G_path_prog_max=0
+    _G_path_prog_found=false
+    _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:}
+    for _G_dir in $_G_PATH; do
+      IFS=$_G_save_IFS
+      test -z "$_G_dir" && _G_dir=.
+      for _G_prog_name in $_G_progs_list; do
+        for _exeext in '' .EXE; do
+          _G_path_prog=$_G_dir/$_G_prog_name$_exeext
+          func_executable_p "$_G_path_prog" || continue
+          case `"$_G_path_prog" --version 2>&1` in
+            *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;;
+            *)     $_G_check_func $_G_path_prog
+		   func_path_progs_result=$func_check_prog_result
+		   ;;
+          esac
+          $_G_path_prog_found && break 3
+        done
+      done
+    done
+    IFS=$_G_save_IFS
+    test -z "$func_path_progs_result" && {
+      echo "no acceptable sed could be found in \$PATH" >&2
+      exit 1
+    }
+}
+
+
+# We want to be able to use the functions in this file before configure
+# has figured out where the best binaries are kept, which means we have
+# to search for them ourselves - except when the results are already set
+# where we skip the searches.
+
+# Unless the user overrides by setting SED, search the path for either GNU
+# sed, or the sed that truncates its output the least.
+test -z "$SED" && {
+  _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+  for _G_i in 1 2 3 4 5 6 7; do
+    _G_sed_script=$_G_sed_script$nl$_G_sed_script
+  done
+  echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed
+  _G_sed_script=
+
+  func_check_prog_sed ()
+  {
+    _G_path_prog=$1
+
+    _G_count=0
+    printf 0123456789 >conftest.in
+    while :
+    do
+      cat conftest.in conftest.in >conftest.tmp
+      mv conftest.tmp conftest.in
+      cp conftest.in conftest.nl
+      echo '' >> conftest.nl
+      "$_G_path_prog" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break
+      diff conftest.out conftest.nl >/dev/null 2>&1 || break
+      _G_count=`expr $_G_count + 1`
+      if test "$_G_count" -gt "$_G_path_prog_max"; then
+        # Best one so far, save it but keep looking for a better one
+        func_check_prog_result=$_G_path_prog
+        _G_path_prog_max=$_G_count
+      fi
+      # 10*(2^10) chars as input seems more than enough
+      test 10 -lt "$_G_count" && break
+    done
+    rm -f conftest.in conftest.tmp conftest.nl conftest.out
+  }
+
+  func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin
+  rm -f conftest.sed
+  SED=$func_path_progs_result
+}
+
+
+# Unless the user overrides by setting GREP, search the path for either GNU
+# grep, or the grep that truncates its output the least.
+test -z "$GREP" && {
+  func_check_prog_grep ()
+  {
+    _G_path_prog=$1
+
+    _G_count=0
+    _G_path_prog_max=0
+    printf 0123456789 >conftest.in
+    while :
+    do
+      cat conftest.in conftest.in >conftest.tmp
+      mv conftest.tmp conftest.in
+      cp conftest.in conftest.nl
+      echo 'GREP' >> conftest.nl
+      "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' <conftest.nl >conftest.out 2>/dev/null || break
+      diff conftest.out conftest.nl >/dev/null 2>&1 || break
+      _G_count=`expr $_G_count + 1`
+      if test "$_G_count" -gt "$_G_path_prog_max"; then
+        # Best one so far, save it but keep looking for a better one
+        func_check_prog_result=$_G_path_prog
+        _G_path_prog_max=$_G_count
+      fi
+      # 10*(2^10) chars as input seems more than enough
+      test 10 -lt "$_G_count" && break
+    done
+    rm -f conftest.in conftest.tmp conftest.nl conftest.out
+  }
+
+  func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin
+  GREP=$func_path_progs_result
+}
+
+
+## ------------------------------- ##
+## User overridable command paths. ##
+## ------------------------------- ##
+
+# All uppercase variable names are used for environment variables.  These
+# variables can be overridden by the user before calling a script that
+# uses them if a suitable command of that name is not already available
+# in the command search PATH.
+
+: ${CP="cp -f"}
+: ${ECHO="printf %s\n"}
+: ${EGREP="$GREP -E"}
+: ${FGREP="$GREP -F"}
+: ${LN_S="ln -s"}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+
+
+## -------------------- ##
+## Useful sed snippets. ##
+## -------------------- ##
+
+sed_dirname='s|/[^/]*$||'
+sed_basename='s|^.*/||'
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Same as above, but do not quote variable references.
+sed_double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution that turns a string into a regex matching for the
+# string literally.
+sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g'
+
+# Sed substitution that converts a w32 file name or path
+# that contains forward slashes, into one that contains
+# (escaped) backslashes.  A very naive implementation.
+sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
+# Re-'\' parameter expansions in output of sed_double_quote_subst that
+# were '\'-ed in input to the same.  If an odd number of '\' preceded a
+# '$' in input to sed_double_quote_subst, that '$' was protected from
+# expansion.  Since each input '\' is now two '\'s, look for any number
+# of runs of four '\'s followed by two '\'s and then a '$'.  '\' that '$'.
+_G_bs='\\'
+_G_bs2='\\\\'
+_G_bs4='\\\\\\\\'
+_G_dollar='\$'
+sed_double_backslash="\
+  s/$_G_bs4/&\\
+/g
+  s/^$_G_bs2$_G_dollar/$_G_bs&/
+  s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
+  s/\n//g"
+
+
+## ----------------- ##
+## Global variables. ##
+## ----------------- ##
+
+# Except for the global variables explicitly listed below, the following
+# functions in the '^func_' namespace, and the '^require_' namespace
+# variables initialised in the 'Resource management' section, sourcing
+# this file will not pollute your global namespace with anything
+# else. There's no portable way to scope variables in Bourne shell
+# though, so actually running these functions will sometimes place
+# results into a variable named after the function, and often use
+# temporary variables in the '^_G_' namespace. If you are careful to
+# avoid using those namespaces casually in your sourcing script, things
+# should continue to work as you expect. And, of course, you can freely
+# overwrite any of the functions or variables defined here before
+# calling anything to customize them.
+
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
+
+# Allow overriding, eg assuming that you follow the convention of
+# putting '$debug_cmd' at the start of all your functions, you can get
+# bash to show function call trace with:
+#
+#    debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name
+debug_cmd=${debug_cmd-":"}
+exit_cmd=:
+
+# By convention, finish your script with:
+#
+#    exit $exit_status
+#
+# so that you can set exit_status to non-zero if you want to indicate
+# something went wrong during execution without actually bailing out at
+# the point of failure.
+exit_status=$EXIT_SUCCESS
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath=$0
+
+# The name of this program.
+progname=`$ECHO "$progpath" |$SED "$sed_basename"`
+
+# Make sure we have an absolute progpath for reexecution:
+case $progpath in
+  [\\/]*|[A-Za-z]:\\*) ;;
+  *[\\/]*)
+     progdir=`$ECHO "$progpath" |$SED "$sed_dirname"`
+     progdir=`cd "$progdir" && pwd`
+     progpath=$progdir/$progname
+     ;;
+  *)
+     _G_IFS=$IFS
+     IFS=${PATH_SEPARATOR-:}
+     for progdir in $PATH; do
+       IFS=$_G_IFS
+       test -x "$progdir/$progname" && break
+     done
+     IFS=$_G_IFS
+     test -n "$progdir" || progdir=`pwd`
+     progpath=$progdir/$progname
+     ;;
+esac
+
+
+## ----------------- ##
+## Standard options. ##
+## ----------------- ##
+
+# The following options affect the operation of the functions defined
+# below, and should be set appropriately depending on run-time para-
+# meters passed on the command line.
+
+opt_dry_run=false
+opt_quiet=false
+opt_verbose=false
+
+# Categories 'all' and 'none' are always available.  Append any others
+# you will pass as the first argument to func_warning from your own
+# code.
+warning_categories=
+
+# By default, display warnings according to 'opt_warning_types'.  Set
+# 'warning_func'  to ':' to elide all warnings, or func_fatal_error to
+# treat the next displayed warning as a fatal error.
+warning_func=func_warn_and_continue
+
+# Set to 'all' to display all warnings, 'none' to suppress all
+# warnings, or a space delimited list of some subset of
+# 'warning_categories' to display only the listed warnings.
+opt_warning_types=all
+
+
+## -------------------- ##
+## Resource management. ##
+## -------------------- ##
+
+# This section contains definitions for functions that each ensure a
+# particular resource (a file, or a non-empty configuration variable for
+# example) is available, and if appropriate to extract default values
+# from pertinent package files. Call them using their associated
+# 'require_*' variable to ensure that they are executed, at most, once.
+#
+# It's entirely deliberate that calling these functions can set
+# variables that don't obey the namespace limitations obeyed by the rest
+# of this file, in order that that they be as useful as possible to
+# callers.
+
+
+# require_term_colors
+# -------------------
+# Allow display of bold text on terminals that support it.
+require_term_colors=func_require_term_colors
+func_require_term_colors ()
+{
+    $debug_cmd
+
+    test -t 1 && {
+      # COLORTERM and USE_ANSI_COLORS environment variables take
+      # precedence, because most terminfo databases neglect to describe
+      # whether color sequences are supported.
+      test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"}
+
+      if test 1 = "$USE_ANSI_COLORS"; then
+        # Standard ANSI escape sequences
+        tc_reset=''
+        tc_bold='';   tc_standout=''
+        tc_red='';   tc_green=''
+        tc_blue='';  tc_cyan=''
+      else
+        # Otherwise trust the terminfo database after all.
+        test -n "`tput sgr0 2>/dev/null`" && {
+          tc_reset=`tput sgr0`
+          test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold`
+          tc_standout=$tc_bold
+          test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso`
+          test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1`
+          test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2`
+          test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4`
+          test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5`
+        }
+      fi
+    }
+
+    require_term_colors=:
+}
+
+
+## ----------------- ##
+## Function library. ##
+## ----------------- ##
+
+# This section contains a variety of useful functions to call in your
+# scripts. Take note of the portable wrappers for features provided by
+# some modern shells, which will fall back to slower equivalents on
+# less featureful shells.
+
+
+# func_append VAR VALUE
+# ---------------------
+# Append VALUE onto the existing contents of VAR.
+
+  # We should try to minimise forks, especially on Windows where they are
+  # unreasonably slow, so skip the feature probes when bash or zsh are
+  # being used:
+  if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
+    : ${_G_HAVE_ARITH_OP="yes"}
+    : ${_G_HAVE_XSI_OPS="yes"}
+    # The += operator was introduced in bash 3.1
+    case $BASH_VERSION in
+      [12].* | 3.0 | 3.0*) ;;
+      *)
+        : ${_G_HAVE_PLUSEQ_OP="yes"}
+        ;;
+    esac
+  fi
+
+  # _G_HAVE_PLUSEQ_OP
+  # Can be empty, in which case the shell is probed, "yes" if += is
+  # useable or anything else if it does not work.
+  test -z "$_G_HAVE_PLUSEQ_OP" \
+    && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
+    && _G_HAVE_PLUSEQ_OP=yes
+
+if test yes = "$_G_HAVE_PLUSEQ_OP"
+then
+  # This is an XSI compatible shell, allowing a faster implementation...
+  eval 'func_append ()
+  {
+    $debug_cmd
+
+    eval "$1+=\$2"
+  }'
+else
+  # ...otherwise fall back to using expr, which is often a shell builtin.
+  func_append ()
+  {
+    $debug_cmd
+
+    eval "$1=\$$1\$2"
+  }
+fi
+
+
+# func_append_quoted VAR VALUE
+# ----------------------------
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+if test yes = "$_G_HAVE_PLUSEQ_OP"; then
+  eval 'func_append_quoted ()
+  {
+    $debug_cmd
+
+    func_quote_for_eval "$2"
+    eval "$1+=\\ \$func_quote_for_eval_result"
+  }'
+else
+  func_append_quoted ()
+  {
+    $debug_cmd
+
+    func_quote_for_eval "$2"
+    eval "$1=\$$1\\ \$func_quote_for_eval_result"
+  }
+fi
+
+
+# func_append_uniq VAR VALUE
+# --------------------------
+# Append unique VALUE onto the existing contents of VAR, assuming
+# entries are delimited by the first character of VALUE.  For example:
+#
+#   func_append_uniq options " --another-option option-argument"
+#
+# will only append to $options if " --another-option option-argument "
+# is not already present somewhere in $options already (note spaces at
+# each end implied by leading space in second argument).
+func_append_uniq ()
+{
+    $debug_cmd
+
+    eval _G_current_value='`$ECHO $'$1'`'
+    _G_delim=`expr "$2" : '\(.\)'`
+
+    case $_G_delim$_G_current_value$_G_delim in
+      *"$2$_G_delim"*) ;;
+      *) func_append "$@" ;;
+    esac
+}
+
+
+# func_arith TERM...
+# ------------------
+# Set func_arith_result to the result of evaluating TERMs.
+  test -z "$_G_HAVE_ARITH_OP" \
+    && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \
+    && _G_HAVE_ARITH_OP=yes
+
+if test yes = "$_G_HAVE_ARITH_OP"; then
+  eval 'func_arith ()
+  {
+    $debug_cmd
+
+    func_arith_result=$(( $* ))
+  }'
+else
+  func_arith ()
+  {
+    $debug_cmd
+
+    func_arith_result=`expr "$@"`
+  }
+fi
+
+
+# func_basename FILE
+# ------------------
+# Set func_basename_result to FILE with everything up to and including
+# the last / stripped.
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  # If this shell supports suffix pattern removal, then use it to avoid
+  # forking. Hide the definitions single quotes in case the shell chokes
+  # on unsupported syntax...
+  _b='func_basename_result=${1##*/}'
+  _d='case $1 in
+        */*) func_dirname_result=${1%/*}$2 ;;
+        *  ) func_dirname_result=$3        ;;
+      esac'
+
+else
+  # ...otherwise fall back to using sed.
+  _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`'
+  _d='func_dirname_result=`$ECHO "$1"  |$SED "$sed_dirname"`
+      if test "X$func_dirname_result" = "X$1"; then
+        func_dirname_result=$3
+      else
+        func_append func_dirname_result "$2"
+      fi'
+fi
+
+eval 'func_basename ()
+{
+    $debug_cmd
+
+    '"$_b"'
+}'
+
+
+# func_dirname FILE APPEND NONDIR_REPLACEMENT
+# -------------------------------------------
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+eval 'func_dirname ()
+{
+    $debug_cmd
+
+    '"$_d"'
+}'
+
+
+# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT
+# --------------------------------------------------------
+# Perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# For efficiency, we do not delegate to the functions above but instead
+# duplicate the functionality here.
+eval 'func_dirname_and_basename ()
+{
+    $debug_cmd
+
+    '"$_b"'
+    '"$_d"'
+}'
+
+
+# func_echo ARG...
+# ----------------
+# Echo program name prefixed message.
+func_echo ()
+{
+    $debug_cmd
+
+    _G_message=$*
+
+    func_echo_IFS=$IFS
+    IFS=$nl
+    for _G_line in $_G_message; do
+      IFS=$func_echo_IFS
+      $ECHO "$progname: $_G_line"
+    done
+    IFS=$func_echo_IFS
+}
+
+
+# func_echo_all ARG...
+# --------------------
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*"
+}
+
+
+# func_echo_infix_1 INFIX ARG...
+# ------------------------------
+# Echo program name, followed by INFIX on the first line, with any
+# additional lines not showing INFIX.
+func_echo_infix_1 ()
+{
+    $debug_cmd
+
+    $require_term_colors
+
+    _G_infix=$1; shift
+    _G_indent=$_G_infix
+    _G_prefix="$progname: $_G_infix: "
+    _G_message=$*
+
+    # Strip color escape sequences before counting printable length
+    for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan"
+    do
+      test -n "$_G_tc" && {
+        _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"`
+        _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"`
+      }
+    done
+    _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`"  " ## exclude from sc_prohibit_nested_quotes
+
+    func_echo_infix_1_IFS=$IFS
+    IFS=$nl
+    for _G_line in $_G_message; do
+      IFS=$func_echo_infix_1_IFS
+      $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2
+      _G_prefix=$_G_indent
+    done
+    IFS=$func_echo_infix_1_IFS
+}
+
+
+# func_error ARG...
+# -----------------
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+    $debug_cmd
+
+    $require_term_colors
+
+    func_echo_infix_1 "  $tc_standout${tc_red}error$tc_reset" "$*" >&2
+}
+
+
+# func_fatal_error ARG...
+# -----------------------
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+    $debug_cmd
+
+    func_error "$*"
+    exit $EXIT_FAILURE
+}
+
+
+# func_grep EXPRESSION FILENAME
+# -----------------------------
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+    $debug_cmd
+
+    $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_len STRING
+# ---------------
+# Set func_len_result to the length of STRING. STRING may not
+# start with a hyphen.
+  test -z "$_G_HAVE_XSI_OPS" \
+    && (eval 'x=a/b/c;
+      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
+    && _G_HAVE_XSI_OPS=yes
+
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  eval 'func_len ()
+  {
+    $debug_cmd
+
+    func_len_result=${#1}
+  }'
+else
+  func_len ()
+  {
+    $debug_cmd
+
+    func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+  }
+fi
+
+
+# func_mkdir_p DIRECTORY-PATH
+# ---------------------------
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+    $debug_cmd
+
+    _G_directory_path=$1
+    _G_dir_list=
+
+    if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then
+
+      # Protect directory names starting with '-'
+      case $_G_directory_path in
+        -*) _G_directory_path=./$_G_directory_path ;;
+      esac
+
+      # While some portion of DIR does not yet exist...
+      while test ! -d "$_G_directory_path"; do
+        # ...make a list in topmost first order.  Use a colon delimited
+	# list incase some portion of path contains whitespace.
+        _G_dir_list=$_G_directory_path:$_G_dir_list
+
+        # If the last portion added has no slash in it, the list is done
+        case $_G_directory_path in */*) ;; *) break ;; esac
+
+        # ...otherwise throw away the child directory and loop
+        _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"`
+      done
+      _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'`
+
+      func_mkdir_p_IFS=$IFS; IFS=:
+      for _G_dir in $_G_dir_list; do
+	IFS=$func_mkdir_p_IFS
+        # mkdir can fail with a 'File exist' error if two processes
+        # try to create one of the directories concurrently.  Don't
+        # stop in that case!
+        $MKDIR "$_G_dir" 2>/dev/null || :
+      done
+      IFS=$func_mkdir_p_IFS
+
+      # Bail out if we (or some other process) failed to create a directory.
+      test -d "$_G_directory_path" || \
+        func_fatal_error "Failed to create '$1'"
+    fi
+}
+
+
+# func_mktempdir [BASENAME]
+# -------------------------
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible.  If
+# given, BASENAME is the basename for that directory.
+func_mktempdir ()
+{
+    $debug_cmd
+
+    _G_template=${TMPDIR-/tmp}/${1-$progname}
+
+    if test : = "$opt_dry_run"; then
+      # Return a directory name, but don't create it in dry-run mode
+      _G_tmpdir=$_G_template-$$
+    else
+
+      # If mktemp works, use that first and foremost
+      _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null`
+
+      if test ! -d "$_G_tmpdir"; then
+        # Failing that, at least try and use $RANDOM to avoid a race
+        _G_tmpdir=$_G_template-${RANDOM-0}$$
+
+        func_mktempdir_umask=`umask`
+        umask 0077
+        $MKDIR "$_G_tmpdir"
+        umask $func_mktempdir_umask
+      fi
+
+      # If we're not in dry-run mode, bomb out on failure
+      test -d "$_G_tmpdir" || \
+        func_fatal_error "cannot create temporary directory '$_G_tmpdir'"
+    fi
+
+    $ECHO "$_G_tmpdir"
+}
+
+
+# func_normal_abspath PATH
+# ------------------------
+# Remove doubled-up and trailing slashes, "." path components,
+# and cancel out any ".." path components in PATH after making
+# it an absolute path.
+func_normal_abspath ()
+{
+    $debug_cmd
+
+    # These SED scripts presuppose an absolute path with a trailing slash.
+    _G_pathcar='s|^/\([^/]*\).*$|\1|'
+    _G_pathcdr='s|^/[^/]*||'
+    _G_removedotparts=':dotsl
+		s|/\./|/|g
+		t dotsl
+		s|/\.$|/|'
+    _G_collapseslashes='s|/\{1,\}|/|g'
+    _G_finalslash='s|/*$|/|'
+
+    # Start from root dir and reassemble the path.
+    func_normal_abspath_result=
+    func_normal_abspath_tpath=$1
+    func_normal_abspath_altnamespace=
+    case $func_normal_abspath_tpath in
+      "")
+        # Empty path, that just means $cwd.
+        func_stripname '' '/' "`pwd`"
+        func_normal_abspath_result=$func_stripname_result
+        return
+        ;;
+      # The next three entries are used to spot a run of precisely
+      # two leading slashes without using negated character classes;
+      # we take advantage of case's first-match behaviour.
+      ///*)
+        # Unusual form of absolute path, do nothing.
+        ;;
+      //*)
+        # Not necessarily an ordinary path; POSIX reserves leading '//'
+        # and for example Cygwin uses it to access remote file shares
+        # over CIFS/SMB, so we conserve a leading double slash if found.
+        func_normal_abspath_altnamespace=/
+        ;;
+      /*)
+        # Absolute path, do nothing.
+        ;;
+      *)
+        # Relative path, prepend $cwd.
+        func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
+        ;;
+    esac
+
+    # Cancel out all the simple stuff to save iterations.  We also want
+    # the path to end with a slash for ease of parsing, so make sure
+    # there is one (and only one) here.
+    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+          -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"`
+    while :; do
+      # Processed it all yet?
+      if test / = "$func_normal_abspath_tpath"; then
+        # If we ascended to the root using ".." the result may be empty now.
+        if test -z "$func_normal_abspath_result"; then
+          func_normal_abspath_result=/
+        fi
+        break
+      fi
+      func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
+          -e "$_G_pathcar"`
+      func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+          -e "$_G_pathcdr"`
+      # Figure out what to do with it
+      case $func_normal_abspath_tcomponent in
+        "")
+          # Trailing empty path component, ignore it.
+          ;;
+        ..)
+          # Parent dir; strip last assembled component from result.
+          func_dirname "$func_normal_abspath_result"
+          func_normal_abspath_result=$func_dirname_result
+          ;;
+        *)
+          # Actual path component, append it.
+          func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent"
+          ;;
+      esac
+    done
+    # Restore leading double-slash if one was found on entry.
+    func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
+}
+
+
+# func_notquiet ARG...
+# --------------------
+# Echo program name prefixed message only when not in quiet mode.
+func_notquiet ()
+{
+    $debug_cmd
+
+    $opt_quiet || func_echo ${1+"$@"}
+
+    # A bug in bash halts the script if the last line of a function
+    # fails when set -e is in force, so we need another command to
+    # work around that:
+    :
+}
+
+
+# func_relative_path SRCDIR DSTDIR
+# --------------------------------
+# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR.
+func_relative_path ()
+{
+    $debug_cmd
+
+    func_relative_path_result=
+    func_normal_abspath "$1"
+    func_relative_path_tlibdir=$func_normal_abspath_result
+    func_normal_abspath "$2"
+    func_relative_path_tbindir=$func_normal_abspath_result
+
+    # Ascend the tree starting from libdir
+    while :; do
+      # check if we have found a prefix of bindir
+      case $func_relative_path_tbindir in
+        $func_relative_path_tlibdir)
+          # found an exact match
+          func_relative_path_tcancelled=
+          break
+          ;;
+        $func_relative_path_tlibdir*)
+          # found a matching prefix
+          func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
+          func_relative_path_tcancelled=$func_stripname_result
+          if test -z "$func_relative_path_result"; then
+            func_relative_path_result=.
+          fi
+          break
+          ;;
+        *)
+          func_dirname $func_relative_path_tlibdir
+          func_relative_path_tlibdir=$func_dirname_result
+          if test -z "$func_relative_path_tlibdir"; then
+            # Have to descend all the way to the root!
+            func_relative_path_result=../$func_relative_path_result
+            func_relative_path_tcancelled=$func_relative_path_tbindir
+            break
+          fi
+          func_relative_path_result=../$func_relative_path_result
+          ;;
+      esac
+    done
+
+    # Now calculate path; take care to avoid doubling-up slashes.
+    func_stripname '' '/' "$func_relative_path_result"
+    func_relative_path_result=$func_stripname_result
+    func_stripname '/' '/' "$func_relative_path_tcancelled"
+    if test -n "$func_stripname_result"; then
+      func_append func_relative_path_result "/$func_stripname_result"
+    fi
+
+    # Normalisation. If bindir is libdir, return '.' else relative path.
+    if test -n "$func_relative_path_result"; then
+      func_stripname './' '' "$func_relative_path_result"
+      func_relative_path_result=$func_stripname_result
+    fi
+
+    test -n "$func_relative_path_result" || func_relative_path_result=.
+
+    :
+}
+
+
+# func_quote_for_eval ARG...
+# --------------------------
+# Aesthetically quote ARGs to be evaled later.
+# This function returns two values:
+#   i) func_quote_for_eval_result
+#      double-quoted, suitable for a subsequent eval
+#  ii) func_quote_for_eval_unquoted_result
+#      has all characters that are still active within double
+#      quotes backslashified.
+func_quote_for_eval ()
+{
+    $debug_cmd
+
+    func_quote_for_eval_unquoted_result=
+    func_quote_for_eval_result=
+    while test 0 -lt $#; do
+      case $1 in
+        *[\\\`\"\$]*)
+	  _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;;
+        *)
+          _G_unquoted_arg=$1 ;;
+      esac
+      if test -n "$func_quote_for_eval_unquoted_result"; then
+	func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
+      else
+        func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg"
+      fi
+
+      case $_G_unquoted_arg in
+        # Double-quote args containing shell metacharacters to delay
+        # word splitting, command substitution and variable expansion
+        # for a subsequent eval.
+        # Many Bourne shells cannot handle close brackets correctly
+        # in scan sets, so we specify it separately.
+        *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+          _G_quoted_arg=\"$_G_unquoted_arg\"
+          ;;
+        *)
+          _G_quoted_arg=$_G_unquoted_arg
+	  ;;
+      esac
+
+      if test -n "$func_quote_for_eval_result"; then
+	func_append func_quote_for_eval_result " $_G_quoted_arg"
+      else
+        func_append func_quote_for_eval_result "$_G_quoted_arg"
+      fi
+      shift
+    done
+}
+
+
+# func_quote_for_expand ARG
+# -------------------------
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
+{
+    $debug_cmd
+
+    case $1 in
+      *[\\\`\"]*)
+	_G_arg=`$ECHO "$1" | $SED \
+	    -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;;
+      *)
+        _G_arg=$1 ;;
+    esac
+
+    case $_G_arg in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting and command substitution for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+        _G_arg=\"$_G_arg\"
+        ;;
+    esac
+
+    func_quote_for_expand_result=$_G_arg
+}
+
+
+# func_stripname PREFIX SUFFIX NAME
+# ---------------------------------
+# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  eval 'func_stripname ()
+  {
+    $debug_cmd
+
+    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+    # positional parameters, so assign one to ordinary variable first.
+    func_stripname_result=$3
+    func_stripname_result=${func_stripname_result#"$1"}
+    func_stripname_result=${func_stripname_result%"$2"}
+  }'
+else
+  func_stripname ()
+  {
+    $debug_cmd
+
+    case $2 in
+      .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;;
+      *)  func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;;
+    esac
+  }
+fi
+
+
+# func_show_eval CMD [FAIL_EXP]
+# -----------------------------
+# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.
+func_show_eval ()
+{
+    $debug_cmd
+
+    _G_cmd=$1
+    _G_fail_exp=${2-':'}
+
+    func_quote_for_expand "$_G_cmd"
+    eval "func_notquiet $func_quote_for_expand_result"
+
+    $opt_dry_run || {
+      eval "$_G_cmd"
+      _G_status=$?
+      if test 0 -ne "$_G_status"; then
+	eval "(exit $_G_status); $_G_fail_exp"
+      fi
+    }
+}
+
+
+# func_show_eval_locale CMD [FAIL_EXP]
+# ------------------------------------
+# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.  Use the saved locale for evaluation.
+func_show_eval_locale ()
+{
+    $debug_cmd
+
+    _G_cmd=$1
+    _G_fail_exp=${2-':'}
+
+    $opt_quiet || {
+      func_quote_for_expand "$_G_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    $opt_dry_run || {
+      eval "$_G_user_locale
+	    $_G_cmd"
+      _G_status=$?
+      eval "$_G_safe_locale"
+      if test 0 -ne "$_G_status"; then
+	eval "(exit $_G_status); $_G_fail_exp"
+      fi
+    }
+}
+
+
+# func_tr_sh
+# ----------
+# Turn $1 into a string suitable for a shell variable name.
+# Result is stored in $func_tr_sh_result.  All characters
+# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
+# if $1 begins with a digit, a '_' is prepended as well.
+func_tr_sh ()
+{
+    $debug_cmd
+
+    case $1 in
+    [0-9]* | *[!a-zA-Z0-9_]*)
+      func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'`
+      ;;
+    * )
+      func_tr_sh_result=$1
+      ;;
+    esac
+}
+
+
+# func_verbose ARG...
+# -------------------
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+    $debug_cmd
+
+    $opt_verbose && func_echo "$*"
+
+    :
+}
+
+
+# func_warn_and_continue ARG...
+# -----------------------------
+# Echo program name prefixed warning message to standard error.
+func_warn_and_continue ()
+{
+    $debug_cmd
+
+    $require_term_colors
+
+    func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2
+}
+
+
+# func_warning CATEGORY ARG...
+# ----------------------------
+# Echo program name prefixed warning message to standard error. Warning
+# messages can be filtered according to CATEGORY, where this function
+# elides messages where CATEGORY is not listed in the global variable
+# 'opt_warning_types'.
+func_warning ()
+{
+    $debug_cmd
+
+    # CATEGORY must be in the warning_categories list!
+    case " $warning_categories " in
+      *" $1 "*) ;;
+      *) func_internal_error "invalid warning category '$1'" ;;
+    esac
+
+    _G_category=$1
+    shift
+
+    case " $opt_warning_types " in
+      *" $_G_category "*) $warning_func ${1+"$@"} ;;
+    esac
+}
+
+
+# func_sort_ver VER1 VER2
+# -----------------------
+# 'sort -V' is not generally available.
+# Note this deviates from the version comparison in automake
+# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
+# but this should suffice as we won't be specifying old
+# version formats or redundant trailing .0 in bootstrap.conf.
+# If we did want full compatibility then we should probably
+# use m4_version_compare from autoconf.
+func_sort_ver ()
+{
+    $debug_cmd
+
+    printf '%s\n%s\n' "$1" "$2" \
+      | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n
+}
+
+# func_lt_ver PREV CURR
+# ---------------------
+# Return true if PREV and CURR are in the correct order according to
+# func_sort_ver, otherwise false.  Use it like this:
+#
+#  func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..."
+func_lt_ver ()
+{
+    $debug_cmd
+
+    test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q`
+}
+
+
+# Local variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-time-zone: "UTC"
+# End:
+#! /bin/sh
+
+# Set a version string for this script.
+scriptversion=2014-01-07.03; # UTC
+
+# A portable, pluggable option parser for Bourne shell.
+# Written by Gary V. Vaughan, 2010
+
+# Copyright (C) 2010-2015 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Please report bugs or propose patches to gary at gnu.org.
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# This file is a library for parsing options in your shell scripts along
+# with assorted other useful supporting features that you can make use
+# of too.
+#
+# For the simplest scripts you might need only:
+#
+#   #!/bin/sh
+#   . relative/path/to/funclib.sh
+#   . relative/path/to/options-parser
+#   scriptversion=1.0
+#   func_options ${1+"$@"}
+#   eval set dummy "$func_options_result"; shift
+#   ...rest of your script...
+#
+# In order for the '--version' option to work, you will need to have a
+# suitably formatted comment like the one at the top of this file
+# starting with '# Written by ' and ending with '# warranty; '.
+#
+# For '-h' and '--help' to work, you will also need a one line
+# description of your script's purpose in a comment directly above the
+# '# Written by ' line, like the one at the top of this file.
+#
+# The default options also support '--debug', which will turn on shell
+# execution tracing (see the comment above debug_cmd below for another
+# use), and '--verbose' and the func_verbose function to allow your script
+# to display verbose messages only when your user has specified
+# '--verbose'.
+#
+# After sourcing this file, you can plug processing for additional
+# options by amending the variables from the 'Configuration' section
+# below, and following the instructions in the 'Option parsing'
+# section further down.
+
+## -------------- ##
+## Configuration. ##
+## -------------- ##
+
+# You should override these variables in your script after sourcing this
+# file so that they reflect the customisations you have added to the
+# option parser.
+
+# The usage line for option parsing errors and the start of '-h' and
+# '--help' output messages. You can embed shell variables for delayed
+# expansion at the time the message is displayed, but you will need to
+# quote other shell meta-characters carefully to prevent them being
+# expanded when the contents are evaled.
+usage='$progpath [OPTION]...'
+
+# Short help message in response to '-h' and '--help'.  Add to this or
+# override it after sourcing this library to reflect the full set of
+# options your script accepts.
+usage_message="\
+       --debug        enable verbose shell tracing
+   -W, --warnings=CATEGORY
+                      report the warnings falling in CATEGORY [all]
+   -v, --verbose      verbosely report processing
+       --version      print version information and exit
+   -h, --help         print short or long help message and exit
+"
+
+# Additional text appended to 'usage_message' in response to '--help'.
+long_help_message="
+Warning categories include:
+       'all'          show all warnings
+       'none'         turn off all the warnings
+       'error'        warnings are treated as fatal errors"
+
+# Help message printed before fatal option parsing errors.
+fatal_help="Try '\$progname --help' for more information."
+
+
+
+## ------------------------- ##
+## Hook function management. ##
+## ------------------------- ##
+
+# This section contains functions for adding, removing, and running hooks
+# to the main code.  A hook is just a named list of of function, that can
+# be run in order later on.
+
+# func_hookable FUNC_NAME
+# -----------------------
+# Declare that FUNC_NAME will run hooks added with
+# 'func_add_hook FUNC_NAME ...'.
+func_hookable ()
+{
+    $debug_cmd
+
+    func_append hookable_fns " $1"
+}
+
+
+# func_add_hook FUNC_NAME HOOK_FUNC
+# ---------------------------------
+# Request that FUNC_NAME call HOOK_FUNC before it returns.  FUNC_NAME must
+# first have been declared "hookable" by a call to 'func_hookable'.
+func_add_hook ()
+{
+    $debug_cmd
+
+    case " $hookable_fns " in
+      *" $1 "*) ;;
+      *) func_fatal_error "'$1' does not accept hook functions." ;;
+    esac
+
+    eval func_append ${1}_hooks '" $2"'
+}
+
+
+# func_remove_hook FUNC_NAME HOOK_FUNC
+# ------------------------------------
+# Remove HOOK_FUNC from the list of functions called by FUNC_NAME.
+func_remove_hook ()
+{
+    $debug_cmd
+
+    eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`'
+}
+
+
+# func_run_hooks FUNC_NAME [ARG]...
+# ---------------------------------
+# Run all hook functions registered to FUNC_NAME.
+# It is assumed that the list of hook functions contains nothing more
+# than a whitespace-delimited list of legal shell function names, and
+# no effort is wasted trying to catch shell meta-characters or preserve
+# whitespace.
+func_run_hooks ()
+{
+    $debug_cmd
+
+    case " $hookable_fns " in
+      *" $1 "*) ;;
+      *) func_fatal_error "'$1' does not support hook funcions.n" ;;
+    esac
+
+    eval _G_hook_fns=\$$1_hooks; shift
+
+    for _G_hook in $_G_hook_fns; do
+      eval $_G_hook '"$@"'
+
+      # store returned options list back into positional
+      # parameters for next 'cmd' execution.
+      eval _G_hook_result=\$${_G_hook}_result
+      eval set dummy "$_G_hook_result"; shift
+    done
+
+    func_quote_for_eval ${1+"$@"}
+    func_run_hooks_result=$func_quote_for_eval_result
+}
+
+
+
+## --------------- ##
+## Option parsing. ##
+## --------------- ##
+
+# In order to add your own option parsing hooks, you must accept the
+# full positional parameter list in your hook function, remove any
+# options that you action, and then pass back the remaining unprocessed
+# options in '<hooked_function_name>_result', escaped suitably for
+# 'eval'.  Like this:
+#
+#    my_options_prep ()
+#    {
+#        $debug_cmd
+#
+#        # Extend the existing usage message.
+#        usage_message=$usage_message'
+#      -s, --silent       don'\''t print informational messages
+#    '
+#
+#        func_quote_for_eval ${1+"$@"}
+#        my_options_prep_result=$func_quote_for_eval_result
+#    }
+#    func_add_hook func_options_prep my_options_prep
+#
+#
+#    my_silent_option ()
+#    {
+#        $debug_cmd
+#
+#        # Note that for efficiency, we parse as many options as we can
+#        # recognise in a loop before passing the remainder back to the
+#        # caller on the first unrecognised argument we encounter.
+#        while test $# -gt 0; do
+#          opt=$1; shift
+#          case $opt in
+#            --silent|-s) opt_silent=: ;;
+#            # Separate non-argument short options:
+#            -s*)         func_split_short_opt "$_G_opt"
+#                         set dummy "$func_split_short_opt_name" \
+#                             "-$func_split_short_opt_arg" ${1+"$@"}
+#                         shift
+#                         ;;
+#            *)            set dummy "$_G_opt" "$*"; shift; break ;;
+#          esac
+#        done
+#
+#        func_quote_for_eval ${1+"$@"}
+#        my_silent_option_result=$func_quote_for_eval_result
+#    }
+#    func_add_hook func_parse_options my_silent_option
+#
+#
+#    my_option_validation ()
+#    {
+#        $debug_cmd
+#
+#        $opt_silent && $opt_verbose && func_fatal_help "\
+#    '--silent' and '--verbose' options are mutually exclusive."
+#
+#        func_quote_for_eval ${1+"$@"}
+#        my_option_validation_result=$func_quote_for_eval_result
+#    }
+#    func_add_hook func_validate_options my_option_validation
+#
+# You'll alse need to manually amend $usage_message to reflect the extra
+# options you parse.  It's preferable to append if you can, so that
+# multiple option parsing hooks can be added safely.
+
+
+# func_options [ARG]...
+# ---------------------
+# All the functions called inside func_options are hookable. See the
+# individual implementations for details.
+func_hookable func_options
+func_options ()
+{
+    $debug_cmd
+
+    func_options_prep ${1+"$@"}
+    eval func_parse_options \
+        ${func_options_prep_result+"$func_options_prep_result"}
+    eval func_validate_options \
+        ${func_parse_options_result+"$func_parse_options_result"}
+
+    eval func_run_hooks func_options \
+        ${func_validate_options_result+"$func_validate_options_result"}
+
+    # save modified positional parameters for caller
+    func_options_result=$func_run_hooks_result
+}
+
+
+# func_options_prep [ARG]...
+# --------------------------
+# All initialisations required before starting the option parse loop.
+# Note that when calling hook functions, we pass through the list of
+# positional parameters.  If a hook function modifies that list, and
+# needs to propogate that back to rest of this script, then the complete
+# modified list must be put in 'func_run_hooks_result' before
+# returning.
+func_hookable func_options_prep
+func_options_prep ()
+{
+    $debug_cmd
+
+    # Option defaults:
+    opt_verbose=false
+    opt_warning_types=
+
+    func_run_hooks func_options_prep ${1+"$@"}
+
+    # save modified positional parameters for caller
+    func_options_prep_result=$func_run_hooks_result
+}
+
+
+# func_parse_options [ARG]...
+# ---------------------------
+# The main option parsing loop.
+func_hookable func_parse_options
+func_parse_options ()
+{
+    $debug_cmd
+
+    func_parse_options_result=
+
+    # this just eases exit handling
+    while test $# -gt 0; do
+      # Defer to hook functions for initial option parsing, so they
+      # get priority in the event of reusing an option name.
+      func_run_hooks func_parse_options ${1+"$@"}
+
+      # Adjust func_parse_options positional parameters to match
+      eval set dummy "$func_run_hooks_result"; shift
+
+      # Break out of the loop if we already parsed every option.
+      test $# -gt 0 || break
+
+      _G_opt=$1
+      shift
+      case $_G_opt in
+        --debug|-x)   debug_cmd='set -x'
+                      func_echo "enabling shell trace mode"
+                      $debug_cmd
+                      ;;
+
+        --no-warnings|--no-warning|--no-warn)
+                      set dummy --warnings none ${1+"$@"}
+                      shift
+		      ;;
+
+        --warnings|--warning|-W)
+                      test $# = 0 && func_missing_arg $_G_opt && break
+                      case " $warning_categories $1" in
+                        *" $1 "*)
+                          # trailing space prevents matching last $1 above
+                          func_append_uniq opt_warning_types " $1"
+                          ;;
+                        *all)
+                          opt_warning_types=$warning_categories
+                          ;;
+                        *none)
+                          opt_warning_types=none
+                          warning_func=:
+                          ;;
+                        *error)
+                          opt_warning_types=$warning_categories
+                          warning_func=func_fatal_error
+                          ;;
+                        *)
+                          func_fatal_error \
+                             "unsupported warning category: '$1'"
+                          ;;
+                      esac
+                      shift
+                      ;;
+
+        --verbose|-v) opt_verbose=: ;;
+        --version)    func_version ;;
+        -\?|-h)       func_usage ;;
+        --help)       func_help ;;
+
+	# Separate optargs to long options (plugins may need this):
+	--*=*)        func_split_equals "$_G_opt"
+	              set dummy "$func_split_equals_lhs" \
+                          "$func_split_equals_rhs" ${1+"$@"}
+                      shift
+                      ;;
+
+       # Separate optargs to short options:
+        -W*)
+                      func_split_short_opt "$_G_opt"
+                      set dummy "$func_split_short_opt_name" \
+                          "$func_split_short_opt_arg" ${1+"$@"}
+                      shift
+                      ;;
+
+        # Separate non-argument short options:
+        -\?*|-h*|-v*|-x*)
+                      func_split_short_opt "$_G_opt"
+                      set dummy "$func_split_short_opt_name" \
+                          "-$func_split_short_opt_arg" ${1+"$@"}
+                      shift
+                      ;;
+
+        --)           break ;;
+        -*)           func_fatal_help "unrecognised option: '$_G_opt'" ;;
+        *)            set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
+      esac
+    done
+
+    # save modified positional parameters for caller
+    func_quote_for_eval ${1+"$@"}
+    func_parse_options_result=$func_quote_for_eval_result
+}
+
+
+# func_validate_options [ARG]...
+# ------------------------------
+# Perform any sanity checks on option settings and/or unconsumed
+# arguments.
+func_hookable func_validate_options
+func_validate_options ()
+{
+    $debug_cmd
+
+    # Display all warnings if -W was not given.
+    test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
+
+    func_run_hooks func_validate_options ${1+"$@"}
+
+    # Bail if the options were screwed!
+    $exit_cmd $EXIT_FAILURE
+
+    # save modified positional parameters for caller
+    func_validate_options_result=$func_run_hooks_result
+}
+
+
+
+## ----------------- ##
+## Helper functions. ##
+## ----------------- ##
+
+# This section contains the helper functions used by the rest of the
+# hookable option parser framework in ascii-betical order.
+
+
+# func_fatal_help ARG...
+# ----------------------
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+    $debug_cmd
+
+    eval \$ECHO \""Usage: $usage"\"
+    eval \$ECHO \""$fatal_help"\"
+    func_error ${1+"$@"}
+    exit $EXIT_FAILURE
+}
+
+
+# func_help
+# ---------
+# Echo long help message to standard output and exit.
+func_help ()
+{
+    $debug_cmd
+
+    func_usage_message
+    $ECHO "$long_help_message"
+    exit 0
+}
+
+
+# func_missing_arg ARGNAME
+# ------------------------
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+    $debug_cmd
+
+    func_error "Missing argument for '$1'."
+    exit_cmd=exit
+}
+
+
+# func_split_equals STRING
+# ------------------------
+# Set func_split_equals_lhs and func_split_equals_rhs shell variables after
+# splitting STRING at the '=' sign.
+test -z "$_G_HAVE_XSI_OPS" \
+    && (eval 'x=a/b/c;
+      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
+    && _G_HAVE_XSI_OPS=yes
+
+if test yes = "$_G_HAVE_XSI_OPS"
+then
+  # This is an XSI compatible shell, allowing a faster implementation...
+  eval 'func_split_equals ()
+  {
+      $debug_cmd
+
+      func_split_equals_lhs=${1%%=*}
+      func_split_equals_rhs=${1#*=}
+      test "x$func_split_equals_lhs" = "x$1" \
+        && func_split_equals_rhs=
+  }'
+else
+  # ...otherwise fall back to using expr, which is often a shell builtin.
+  func_split_equals ()
+  {
+      $debug_cmd
+
+      func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
+      func_split_equals_rhs=
+      test "x$func_split_equals_lhs" = "x$1" \
+        || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
+  }
+fi #func_split_equals
+
+
+# func_split_short_opt SHORTOPT
+# -----------------------------
+# Set func_split_short_opt_name and func_split_short_opt_arg shell
+# variables after splitting SHORTOPT after the 2nd character.
+if test yes = "$_G_HAVE_XSI_OPS"
+then
+  # This is an XSI compatible shell, allowing a faster implementation...
+  eval 'func_split_short_opt ()
+  {
+      $debug_cmd
+
+      func_split_short_opt_arg=${1#??}
+      func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
+  }'
+else
+  # ...otherwise fall back to using expr, which is often a shell builtin.
+  func_split_short_opt ()
+  {
+      $debug_cmd
+
+      func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'`
+      func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
+  }
+fi #func_split_short_opt
+
+
+# func_usage
+# ----------
+# Echo short help message to standard output and exit.
+func_usage ()
+{
+    $debug_cmd
+
+    func_usage_message
+    $ECHO "Run '$progname --help |${PAGER-more}' for full usage"
+    exit 0
+}
+
+
+# func_usage_message
+# ------------------
+# Echo short help message to standard output.
+func_usage_message ()
+{
+    $debug_cmd
+
+    eval \$ECHO \""Usage: $usage"\"
+    echo
+    $SED -n 's|^# ||
+        /^Written by/{
+          x;p;x
+        }
+	h
+	/^Written by/q' < "$progpath"
+    echo
+    eval \$ECHO \""$usage_message"\"
+}
+
+
+# func_version
+# ------------
+# Echo version message to standard output and exit.
+func_version ()
+{
+    $debug_cmd
+
+    printf '%s\n' "$progname $scriptversion"
+    $SED -n '
+        /(C)/!b go
+        :more
+        /\./!{
+          N
+          s|\n# | |
+          b more
+        }
+        :go
+        /^# Written by /,/# warranty; / {
+          s|^# ||
+          s|^# *$||
+          s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
+          p
+        }
+        /^# Written by / {
+          s|^# ||
+          p
+        }
+        /^warranty; /q' < "$progpath"
+
+    exit $?
+}
+
+
+# Local variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-time-zone: "UTC"
+# End:
+
+# Set a version string.
+scriptversion='(GNU libtool) 2.4.6'
+
+
+# func_echo ARG...
+# ----------------
+# Libtool also displays the current mode in messages, so override
+# funclib.sh func_echo with this custom definition.
+func_echo ()
+{
+    $debug_cmd
+
+    _G_message=$*
+
+    func_echo_IFS=$IFS
+    IFS=$nl
+    for _G_line in $_G_message; do
+      IFS=$func_echo_IFS
+      $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line"
+    done
+    IFS=$func_echo_IFS
+}
+
+
+# func_warning ARG...
+# -------------------
+# Libtool warnings are not categorized, so override funclib.sh
+# func_warning with this simpler definition.
+func_warning ()
+{
+    $debug_cmd
+
+    $warning_func ${1+"$@"}
+}
+
+
+## ---------------- ##
+## Options parsing. ##
+## ---------------- ##
+
+# Hook in the functions to make sure our own options are parsed during
+# the option parsing loop.
+
+usage='$progpath [OPTION]... [MODE-ARG]...'
+
+# Short help message in response to '-h'.
+usage_message="Options:
+       --config             show all configuration variables
+       --debug              enable verbose shell tracing
+   -n, --dry-run            display commands without modifying any files
+       --features           display basic configuration information and exit
+       --mode=MODE          use operation mode MODE
+       --no-warnings        equivalent to '-Wnone'
+       --preserve-dup-deps  don't remove duplicate dependency libraries
+       --quiet, --silent    don't print informational messages
+       --tag=TAG            use configuration variables from tag TAG
+   -v, --verbose            print more informational messages than default
+       --version            print version information
+   -W, --warnings=CATEGORY  report the warnings falling in CATEGORY [all]
+   -h, --help, --help-all   print short, long, or detailed help message
+"
+
+# Additional text appended to 'usage_message' in response to '--help'.
+func_help ()
+{
+    $debug_cmd
+
+    func_usage_message
+    $ECHO "$long_help_message
+
+MODE must be one of the following:
+
+       clean           remove files from the build directory
+       compile         compile a source file into a libtool object
+       execute         automatically set library path, then run a program
+       finish          complete the installation of libtool libraries
+       install         install libraries or executables
+       link            create a library or an executable
+       uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  When passed as first option,
+'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that.
+Try '$progname --help --mode=MODE' for a more detailed description of MODE.
+
+When reporting a bug, please describe a test case to reproduce it and
+include the following information:
+
+       host-triplet:   $host
+       shell:          $SHELL
+       compiler:       $LTCC
+       compiler flags: $LTCFLAGS
+       linker:         $LD (gnu? $with_gnu_ld)
+       version:        $progname (GNU libtool) 2.4.6
+       automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
+       autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
+
+Report bugs to <bug-libtool at gnu.org>.
+GNU libtool home page: <http://www.gnu.org/s/libtool/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>."
+    exit 0
+}
+
+
+# func_lo2o OBJECT-NAME
+# ---------------------
+# Transform OBJECT-NAME from a '.lo' suffix to the platform specific
+# object suffix.
+
+lo2o=s/\\.lo\$/.$objext/
+o2lo=s/\\.$objext\$/.lo/
+
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  eval 'func_lo2o ()
+  {
+    case $1 in
+      *.lo) func_lo2o_result=${1%.lo}.$objext ;;
+      *   ) func_lo2o_result=$1               ;;
+    esac
+  }'
+
+  # func_xform LIBOBJ-OR-SOURCE
+  # ---------------------------
+  # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise)
+  # suffix to a '.lo' libtool-object suffix.
+  eval 'func_xform ()
+  {
+    func_xform_result=${1%.*}.lo
+  }'
+else
+  # ...otherwise fall back to using sed.
+  func_lo2o ()
+  {
+    func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"`
+  }
+
+  func_xform ()
+  {
+    func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'`
+  }
+fi
+
+
+# func_fatal_configuration ARG...
+# -------------------------------
+# Echo program name prefixed message to standard error, followed by
+# a configuration failure hint, and exit.
+func_fatal_configuration ()
+{
+    func__fatal_error ${1+"$@"} \
+      "See the $PACKAGE documentation for more information." \
+      "Fatal configuration error."
+}
+
+
+# func_config
+# -----------
+# Display the configuration for all the tags in this script.
+func_config ()
+{
+    re_begincf='^# ### BEGIN LIBTOOL'
+    re_endcf='^# ### END LIBTOOL'
+
+    # Default configuration.
+    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
+
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
+    done
+
+    exit $?
+}
+
+
+# func_features
+# -------------
+# Display the features supported by this script.
+func_features ()
+{
+    echo "host: $host"
+    if test yes = "$build_libtool_libs"; then
+      echo "enable shared libraries"
+    else
+      echo "disable shared libraries"
+    fi
+    if test yes = "$build_old_libs"; then
+      echo "enable static libraries"
+    else
+      echo "disable static libraries"
+    fi
+
+    exit $?
+}
+
+
+# func_enable_tag TAGNAME
+# -----------------------
+# Verify that TAGNAME is valid, and either flag an error and exit, or
+# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
+# variable here.
+func_enable_tag ()
+{
+    # Global variable:
+    tagname=$1
+
+    re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+    re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+    sed_extractcf=/$re_begincf/,/$re_endcf/p
+
+    # Validate tagname.
+    case $tagname in
+      *[!-_A-Za-z0-9,/]*)
+        func_fatal_error "invalid tag name: $tagname"
+        ;;
+    esac
+
+    # Don't test for the "default" C tag, as we know it's
+    # there but not specially marked.
+    case $tagname in
+        CC) ;;
+    *)
+        if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+	  taglist="$taglist $tagname"
+
+	  # Evaluate the configuration.  Be careful to quote the path
+	  # and the sed script, to avoid splitting on whitespace, but
+	  # also don't use non-portable quotes within backquotes within
+	  # quotes we have to do it in 2 steps:
+	  extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+	  eval "$extractedcf"
+        else
+	  func_error "ignoring unknown tag $tagname"
+        fi
+        ;;
+    esac
+}
+
+
+# func_check_version_match
+# ------------------------
+# Ensure that we are using m4 macros, and libtool script from the same
+# release of libtool.
+func_check_version_match ()
+{
+    if test "$package_revision" != "$macro_revision"; then
+      if test "$VERSION" != "$macro_version"; then
+        if test -z "$macro_version"; then
+          cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from an older release.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+        else
+          cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+        fi
+      else
+        cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+$progname: of $PACKAGE $VERSION and run autoconf again.
+_LT_EOF
+      fi
+
+      exit $EXIT_MISMATCH
+    fi
+}
+
+
+# libtool_options_prep [ARG]...
+# -----------------------------
+# Preparation for options parsed by libtool.
+libtool_options_prep ()
+{
+    $debug_mode
+
+    # Option defaults:
+    opt_config=false
+    opt_dlopen=
+    opt_dry_run=false
+    opt_help=false
+    opt_mode=
+    opt_preserve_dup_deps=false
+    opt_quiet=false
+
+    nonopt=
+    preserve_args=
+
+    # Shorthand for --mode=foo, only valid as the first argument
+    case $1 in
+    clean|clea|cle|cl)
+      shift; set dummy --mode clean ${1+"$@"}; shift
+      ;;
+    compile|compil|compi|comp|com|co|c)
+      shift; set dummy --mode compile ${1+"$@"}; shift
+      ;;
+    execute|execut|execu|exec|exe|ex|e)
+      shift; set dummy --mode execute ${1+"$@"}; shift
+      ;;
+    finish|finis|fini|fin|fi|f)
+      shift; set dummy --mode finish ${1+"$@"}; shift
+      ;;
+    install|instal|insta|inst|ins|in|i)
+      shift; set dummy --mode install ${1+"$@"}; shift
+      ;;
+    link|lin|li|l)
+      shift; set dummy --mode link ${1+"$@"}; shift
+      ;;
+    uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+      shift; set dummy --mode uninstall ${1+"$@"}; shift
+      ;;
+    esac
+
+    # Pass back the list of options.
+    func_quote_for_eval ${1+"$@"}
+    libtool_options_prep_result=$func_quote_for_eval_result
+}
+func_add_hook func_options_prep libtool_options_prep
+
+
+# libtool_parse_options [ARG]...
+# ---------------------------------
+# Provide handling for libtool specific options.
+libtool_parse_options ()
+{
+    $debug_cmd
+
+    # Perform our own loop to consume as many options as possible in
+    # each iteration.
+    while test $# -gt 0; do
+      _G_opt=$1
+      shift
+      case $_G_opt in
+        --dry-run|--dryrun|-n)
+                        opt_dry_run=:
+                        ;;
+
+        --config)       func_config ;;
+
+        --dlopen|-dlopen)
+                        opt_dlopen="${opt_dlopen+$opt_dlopen
+}$1"
+                        shift
+                        ;;
+
+        --preserve-dup-deps)
+                        opt_preserve_dup_deps=: ;;
+
+        --features)     func_features ;;
+
+        --finish)       set dummy --mode finish ${1+"$@"}; shift ;;
+
+        --help)         opt_help=: ;;
+
+        --help-all)     opt_help=': help-all' ;;
+
+        --mode)         test $# = 0 && func_missing_arg $_G_opt && break
+                        opt_mode=$1
+                        case $1 in
+                          # Valid mode arguments:
+                          clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+                          # Catch anything else as an error
+                          *) func_error "invalid argument for $_G_opt"
+                             exit_cmd=exit
+                             break
+                             ;;
+                        esac
+                        shift
+                        ;;
+
+        --no-silent|--no-quiet)
+                        opt_quiet=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --no-warnings|--no-warning|--no-warn)
+                        opt_warning=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --no-verbose)
+                        opt_verbose=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --silent|--quiet)
+                        opt_quiet=:
+                        opt_verbose=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --tag)          test $# = 0 && func_missing_arg $_G_opt && break
+                        opt_tag=$1
+                        func_append preserve_args " $_G_opt $1"
+                        func_enable_tag "$1"
+                        shift
+                        ;;
+
+        --verbose|-v)   opt_quiet=false
+                        opt_verbose=:
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+	# An option not handled by this hook function:
+        *)		set dummy "$_G_opt" ${1+"$@"};	shift; break  ;;
+      esac
+    done
+
+
+    # save modified positional parameters for caller
+    func_quote_for_eval ${1+"$@"}
+    libtool_parse_options_result=$func_quote_for_eval_result
+}
+func_add_hook func_parse_options libtool_parse_options
+
+
+
+# libtool_validate_options [ARG]...
+# ---------------------------------
+# Perform any sanity checks on option settings and/or unconsumed
+# arguments.
+libtool_validate_options ()
+{
+    # save first non-option argument
+    if test 0 -lt $#; then
+      nonopt=$1
+      shift
+    fi
+
+    # preserve --debug
+    test : = "$debug_cmd" || func_append preserve_args " --debug"
+
+    case $host in
+      # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
+      # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
+      *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
+        # don't eliminate duplications in $postdeps and $predeps
+        opt_duplicate_compiler_generated_deps=:
+        ;;
+      *)
+        opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
+        ;;
+    esac
+
+    $opt_help || {
+      # Sanity checks first:
+      func_check_version_match
+
+      test yes != "$build_libtool_libs" \
+        && test yes != "$build_old_libs" \
+        && func_fatal_configuration "not configured to build any kind of library"
+
+      # Darwin sucks
+      eval std_shrext=\"$shrext_cmds\"
+
+      # Only execute mode is allowed to have -dlopen flags.
+      if test -n "$opt_dlopen" && test execute != "$opt_mode"; then
+        func_error "unrecognized option '-dlopen'"
+        $ECHO "$help" 1>&2
+        exit $EXIT_FAILURE
+      fi
+
+      # Change the help message to a mode-specific one.
+      generic_help=$help
+      help="Try '$progname --help --mode=$opt_mode' for more information."
+    }
+
+    # Pass back the unparsed argument list
+    func_quote_for_eval ${1+"$@"}
+    libtool_validate_options_result=$func_quote_for_eval_result
+}
+func_add_hook func_validate_options libtool_validate_options
+
+
+# Process options as early as possible so that --help and --version
+# can return quickly.
+func_options ${1+"$@"}
+eval set dummy "$func_options_result"; shift
+
+
+
+## ----------- ##
+##    Main.    ##
+## ----------- ##
+
+magic='%%%MAGIC variable%%%'
+magic_exe='%%%MAGIC EXE variable%%%'
+
+# Global variables.
+extracted_archives=
+extracted_serial=0
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+
+# func_generated_by_libtool
+# True iff stdin has been generated by Libtool. This function is only
+# a basic sanity check; it will hardly flush out determined imposters.
+func_generated_by_libtool_p ()
+{
+  $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
+# func_lalib_p file
+# True iff FILE is a libtool '.la' library or '.lo' object file.
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_lalib_p ()
+{
+    test -f "$1" &&
+      $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p
+}
+
+# func_lalib_unsafe_p file
+# True iff FILE is a libtool '.la' library or '.lo' object file.
+# This function implements the same check as func_lalib_p without
+# resorting to external programs.  To this end, it redirects stdin and
+# closes it afterwards, without saving the original file descriptor.
+# As a safety measure, use it only where a negative result would be
+# fatal anyway.  Works if 'file' does not exist.
+func_lalib_unsafe_p ()
+{
+    lalib_p=no
+    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
+	for lalib_p_l in 1 2 3 4
+	do
+	    read lalib_p_line
+	    case $lalib_p_line in
+		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
+	    esac
+	done
+	exec 0<&5 5<&-
+    fi
+    test yes = "$lalib_p"
+}
+
+# func_ltwrapper_script_p file
+# True iff FILE is a libtool wrapper script
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_script_p ()
+{
+    test -f "$1" &&
+      $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p
+}
+
+# func_ltwrapper_executable_p file
+# True iff FILE is a libtool wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_executable_p ()
+{
+    func_ltwrapper_exec_suffix=
+    case $1 in
+    *.exe) ;;
+    *) func_ltwrapper_exec_suffix=.exe ;;
+    esac
+    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
+}
+
+# func_ltwrapper_scriptname file
+# Assumes file is an ltwrapper_executable
+# uses $file to determine the appropriate filename for a
+# temporary ltwrapper_script.
+func_ltwrapper_scriptname ()
+{
+    func_dirname_and_basename "$1" "" "."
+    func_stripname '' '.exe' "$func_basename_result"
+    func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper
+}
+
+# func_ltwrapper_p file
+# True iff FILE is a libtool wrapper script or wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_p ()
+{
+    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
+}
+
+
+# func_execute_cmds commands fail_cmd
+# Execute tilde-delimited COMMANDS.
+# If FAIL_CMD is given, eval that upon failure.
+# FAIL_CMD may read-access the current command in variable CMD!
+func_execute_cmds ()
+{
+    $debug_cmd
+
+    save_ifs=$IFS; IFS='~'
+    for cmd in $1; do
+      IFS=$sp$nl
+      eval cmd=\"$cmd\"
+      IFS=$save_ifs
+      func_show_eval "$cmd" "${2-:}"
+    done
+    IFS=$save_ifs
+}
+
+
+# func_source file
+# Source FILE, adding directory component if necessary.
+# Note that it is not necessary on cygwin/mingw to append a dot to
+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
+# behavior happens only for exec(3), not for open(2)!  Also, sourcing
+# 'FILE.' does not work on cygwin managed mounts.
+func_source ()
+{
+    $debug_cmd
+
+    case $1 in
+    */* | *\\*)	. "$1" ;;
+    *)		. "./$1" ;;
+    esac
+}
+
+
+# func_resolve_sysroot PATH
+# Replace a leading = in PATH with a sysroot.  Store the result into
+# func_resolve_sysroot_result
+func_resolve_sysroot ()
+{
+  func_resolve_sysroot_result=$1
+  case $func_resolve_sysroot_result in
+  =*)
+    func_stripname '=' '' "$func_resolve_sysroot_result"
+    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
+    ;;
+  esac
+}
+
+# func_replace_sysroot PATH
+# If PATH begins with the sysroot, replace it with = and
+# store the result into func_replace_sysroot_result.
+func_replace_sysroot ()
+{
+  case $lt_sysroot:$1 in
+  ?*:"$lt_sysroot"*)
+    func_stripname "$lt_sysroot" '' "$1"
+    func_replace_sysroot_result='='$func_stripname_result
+    ;;
+  *)
+    # Including no sysroot.
+    func_replace_sysroot_result=$1
+    ;;
+  esac
+}
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+    $debug_cmd
+
+    if test -n "$available_tags" && test -z "$tagname"; then
+      CC_quoted=
+      for arg in $CC; do
+	func_append_quoted CC_quoted "$arg"
+      done
+      CC_expanded=`func_echo_all $CC`
+      CC_quoted_expanded=`func_echo_all $CC_quoted`
+      case $@ in
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when configure was run.
+      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
+      # Blanks at the start of $base_compile will cause this to fail
+      # if we don't check for them as well.
+      *)
+	for z in $available_tags; do
+	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+	    # Evaluate the configuration.
+	    eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+	    CC_quoted=
+	    for arg in $CC; do
+	      # Double-quote args containing other shell metacharacters.
+	      func_append_quoted CC_quoted "$arg"
+	    done
+	    CC_expanded=`func_echo_all $CC`
+	    CC_quoted_expanded=`func_echo_all $CC_quoted`
+	    case "$@ " in
+	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
+	      # The compiler in the base compile command matches
+	      # the one in the tagged configuration.
+	      # Assume this is the tagged configuration we want.
+	      tagname=$z
+	      break
+	      ;;
+	    esac
+	  fi
+	done
+	# If $tagname still isn't set, then no tagged configuration
+	# was found and let the user know that the "--tag" command
+	# line option must be used.
+	if test -z "$tagname"; then
+	  func_echo "unable to infer tagged configuration"
+	  func_fatal_error "specify a tag with '--tag'"
+#	else
+#	  func_verbose "using $tagname tagged configuration"
+	fi
+	;;
+      esac
+    fi
+}
+
+
+
+# func_write_libtool_object output_name pic_name nonpic_name
+# Create a libtool object file (analogous to a ".la" file),
+# but don't create it if we're doing a dry run.
+func_write_libtool_object ()
+{
+    write_libobj=$1
+    if test yes = "$build_libtool_libs"; then
+      write_lobj=\'$2\'
+    else
+      write_lobj=none
+    fi
+
+    if test yes = "$build_old_libs"; then
+      write_oldobj=\'$3\'
+    else
+      write_oldobj=none
+    fi
+
+    $opt_dry_run || {
+      cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object=$write_lobj
+
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
+
+EOF
+      $MV "${write_libobj}T" "$write_libobj"
+    }
+}
+
+
+##################################################
+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
+##################################################
+
+# func_convert_core_file_wine_to_w32 ARG
+# Helper function used by file name conversion functions when $build is *nix,
+# and $host is mingw, cygwin, or some other w32 environment. Relies on a
+# correctly configured wine environment available, with the winepath program
+# in $build's $PATH.
+#
+# ARG is the $build file name to be converted to w32 format.
+# Result is available in $func_convert_core_file_wine_to_w32_result, and will
+# be empty on error (or when ARG is empty)
+func_convert_core_file_wine_to_w32 ()
+{
+  $debug_cmd
+
+  func_convert_core_file_wine_to_w32_result=$1
+  if test -n "$1"; then
+    # Unfortunately, winepath does not exit with a non-zero error code, so we
+    # are forced to check the contents of stdout. On the other hand, if the
+    # command is not found, the shell will set an exit code of 127 and print
+    # *an error message* to stdout. So we must check for both error code of
+    # zero AND non-empty stdout, which explains the odd construction:
+    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
+    if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then
+      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
+        $SED -e "$sed_naive_backslashify"`
+    else
+      func_convert_core_file_wine_to_w32_result=
+    fi
+  fi
+}
+# end: func_convert_core_file_wine_to_w32
+
+
+# func_convert_core_path_wine_to_w32 ARG
+# Helper function used by path conversion functions when $build is *nix, and
+# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
+# configured wine environment available, with the winepath program in $build's
+# $PATH. Assumes ARG has no leading or trailing path separator characters.
+#
+# ARG is path to be converted from $build format to win32.
+# Result is available in $func_convert_core_path_wine_to_w32_result.
+# Unconvertible file (directory) names in ARG are skipped; if no directory names
+# are convertible, then the result may be empty.
+func_convert_core_path_wine_to_w32 ()
+{
+  $debug_cmd
+
+  # unfortunately, winepath doesn't convert paths, only file names
+  func_convert_core_path_wine_to_w32_result=
+  if test -n "$1"; then
+    oldIFS=$IFS
+    IFS=:
+    for func_convert_core_path_wine_to_w32_f in $1; do
+      IFS=$oldIFS
+      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
+      if test -n "$func_convert_core_file_wine_to_w32_result"; then
+        if test -z "$func_convert_core_path_wine_to_w32_result"; then
+          func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result
+        else
+          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
+        fi
+      fi
+    done
+    IFS=$oldIFS
+  fi
+}
+# end: func_convert_core_path_wine_to_w32
+
+
+# func_cygpath ARGS...
+# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
+# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
+# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
+# (2), returns the Cygwin file name or path in func_cygpath_result (input
+# file name or path is assumed to be in w32 format, as previously converted
+# from $build's *nix or MSYS format). In case (3), returns the w32 file name
+# or path in func_cygpath_result (input file name or path is assumed to be in
+# Cygwin format). Returns an empty string on error.
+#
+# ARGS are passed to cygpath, with the last one being the file name or path to
+# be converted.
+#
+# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
+# environment variable; do not put it in $PATH.
+func_cygpath ()
+{
+  $debug_cmd
+
+  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
+    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
+    if test "$?" -ne 0; then
+      # on failure, ensure result is empty
+      func_cygpath_result=
+    fi
+  else
+    func_cygpath_result=
+    func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'"
+  fi
+}
+#end: func_cygpath
+
+
+# func_convert_core_msys_to_w32 ARG
+# Convert file name or path ARG from MSYS format to w32 format.  Return
+# result in func_convert_core_msys_to_w32_result.
+func_convert_core_msys_to_w32 ()
+{
+  $debug_cmd
+
+  # awkward: cmd appends spaces to result
+  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
+    $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"`
+}
+#end: func_convert_core_msys_to_w32
+
+
+# func_convert_file_check ARG1 ARG2
+# Verify that ARG1 (a file name in $build format) was converted to $host
+# format in ARG2. Otherwise, emit an error message, but continue (resetting
+# func_to_host_file_result to ARG1).
+func_convert_file_check ()
+{
+  $debug_cmd
+
+  if test -z "$2" && test -n "$1"; then
+    func_error "Could not determine host file name corresponding to"
+    func_error "  '$1'"
+    func_error "Continuing, but uninstalled executables may not work."
+    # Fallback:
+    func_to_host_file_result=$1
+  fi
+}
+# end func_convert_file_check
+
+
+# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
+# Verify that FROM_PATH (a path in $build format) was converted to $host
+# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
+# func_to_host_file_result to a simplistic fallback value (see below).
+func_convert_path_check ()
+{
+  $debug_cmd
+
+  if test -z "$4" && test -n "$3"; then
+    func_error "Could not determine the host path corresponding to"
+    func_error "  '$3'"
+    func_error "Continuing, but uninstalled executables may not work."
+    # Fallback.  This is a deliberately simplistic "conversion" and
+    # should not be "improved".  See libtool.info.
+    if test "x$1" != "x$2"; then
+      lt_replace_pathsep_chars="s|$1|$2|g"
+      func_to_host_path_result=`echo "$3" |
+        $SED -e "$lt_replace_pathsep_chars"`
+    else
+      func_to_host_path_result=$3
+    fi
+  fi
+}
+# end func_convert_path_check
+
+
+# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
+# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
+# and appending REPL if ORIG matches BACKPAT.
+func_convert_path_front_back_pathsep ()
+{
+  $debug_cmd
+
+  case $4 in
+  $1 ) func_to_host_path_result=$3$func_to_host_path_result
+    ;;
+  esac
+  case $4 in
+  $2 ) func_append func_to_host_path_result "$3"
+    ;;
+  esac
+}
+# end func_convert_path_front_back_pathsep
+
+
+##################################################
+# $build to $host FILE NAME CONVERSION FUNCTIONS #
+##################################################
+# invoked via '$to_host_file_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# Result will be available in $func_to_host_file_result.
+
+
+# func_to_host_file ARG
+# Converts the file name ARG from $build format to $host format. Return result
+# in func_to_host_file_result.
+func_to_host_file ()
+{
+  $debug_cmd
+
+  $to_host_file_cmd "$1"
+}
+# end func_to_host_file
+
+
+# func_to_tool_file ARG LAZY
+# converts the file name ARG from $build format to toolchain format. Return
+# result in func_to_tool_file_result.  If the conversion in use is listed
+# in (the comma separated) LAZY, no conversion takes place.
+func_to_tool_file ()
+{
+  $debug_cmd
+
+  case ,$2, in
+    *,"$to_tool_file_cmd",*)
+      func_to_tool_file_result=$1
+      ;;
+    *)
+      $to_tool_file_cmd "$1"
+      func_to_tool_file_result=$func_to_host_file_result
+      ;;
+  esac
+}
+# end func_to_tool_file
+
+
+# func_convert_file_noop ARG
+# Copy ARG to func_to_host_file_result.
+func_convert_file_noop ()
+{
+  func_to_host_file_result=$1
+}
+# end func_convert_file_noop
+
+
+# func_convert_file_msys_to_w32 ARG
+# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper.  Returns result in
+# func_to_host_file_result.
+func_convert_file_msys_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_file_result=$1
+  if test -n "$1"; then
+    func_convert_core_msys_to_w32 "$1"
+    func_to_host_file_result=$func_convert_core_msys_to_w32_result
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_w32
+
+
+# func_convert_file_cygwin_to_w32 ARG
+# Convert file name ARG from Cygwin to w32 format.  Returns result in
+# func_to_host_file_result.
+func_convert_file_cygwin_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_file_result=$1
+  if test -n "$1"; then
+    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
+    # LT_CYGPATH in this case.
+    func_to_host_file_result=`cygpath -m "$1"`
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_cygwin_to_w32
+
+
+# func_convert_file_nix_to_w32 ARG
+# Convert file name ARG from *nix to w32 format.  Requires a wine environment
+# and a working winepath. Returns result in func_to_host_file_result.
+func_convert_file_nix_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_file_result=$1
+  if test -n "$1"; then
+    func_convert_core_file_wine_to_w32 "$1"
+    func_to_host_file_result=$func_convert_core_file_wine_to_w32_result
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_w32
+
+
+# func_convert_file_msys_to_cygwin ARG
+# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_file_msys_to_cygwin ()
+{
+  $debug_cmd
+
+  func_to_host_file_result=$1
+  if test -n "$1"; then
+    func_convert_core_msys_to_w32 "$1"
+    func_cygpath -u "$func_convert_core_msys_to_w32_result"
+    func_to_host_file_result=$func_cygpath_result
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_cygwin
+
+
+# func_convert_file_nix_to_cygwin ARG
+# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
+# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
+# in func_to_host_file_result.
+func_convert_file_nix_to_cygwin ()
+{
+  $debug_cmd
+
+  func_to_host_file_result=$1
+  if test -n "$1"; then
+    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
+    func_convert_core_file_wine_to_w32 "$1"
+    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
+    func_to_host_file_result=$func_cygpath_result
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_cygwin
+
+
+#############################################
+# $build to $host PATH CONVERSION FUNCTIONS #
+#############################################
+# invoked via '$to_host_path_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# The result will be available in $func_to_host_path_result.
+#
+# Path separators are also converted from $build format to $host format.  If
+# ARG begins or ends with a path separator character, it is preserved (but
+# converted to $host format) on output.
+#
+# All path conversion functions are named using the following convention:
+#   file name conversion function    : func_convert_file_X_to_Y ()
+#   path conversion function         : func_convert_path_X_to_Y ()
+# where, for any given $build/$host combination the 'X_to_Y' value is the
+# same.  If conversion functions are added for new $build/$host combinations,
+# the two new functions must follow this pattern, or func_init_to_host_path_cmd
+# will break.
+
+
+# func_init_to_host_path_cmd
+# Ensures that function "pointer" variable $to_host_path_cmd is set to the
+# appropriate value, based on the value of $to_host_file_cmd.
+to_host_path_cmd=
+func_init_to_host_path_cmd ()
+{
+  $debug_cmd
+
+  if test -z "$to_host_path_cmd"; then
+    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
+    to_host_path_cmd=func_convert_path_$func_stripname_result
+  fi
+}
+
+
+# func_to_host_path ARG
+# Converts the path ARG from $build format to $host format. Return result
+# in func_to_host_path_result.
+func_to_host_path ()
+{
+  $debug_cmd
+
+  func_init_to_host_path_cmd
+  $to_host_path_cmd "$1"
+}
+# end func_to_host_path
+
+
+# func_convert_path_noop ARG
+# Copy ARG to func_to_host_path_result.
+func_convert_path_noop ()
+{
+  func_to_host_path_result=$1
+}
+# end func_convert_path_noop
+
+
+# func_convert_path_msys_to_w32 ARG
+# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper.  Returns result in
+# func_to_host_path_result.
+func_convert_path_msys_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_path_result=$1
+  if test -n "$1"; then
+    # Remove leading and trailing path separator characters from ARG.  MSYS
+    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
+    # and winepath ignores them completely.
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+    func_to_host_path_result=$func_convert_core_msys_to_w32_result
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_msys_to_w32
+
+
+# func_convert_path_cygwin_to_w32 ARG
+# Convert path ARG from Cygwin to w32 format.  Returns result in
+# func_to_host_file_result.
+func_convert_path_cygwin_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_path_result=$1
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_cygwin_to_w32
+
+
+# func_convert_path_nix_to_w32 ARG
+# Convert path ARG from *nix to w32 format.  Requires a wine environment and
+# a working winepath.  Returns result in func_to_host_file_result.
+func_convert_path_nix_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_path_result=$1
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+    func_to_host_path_result=$func_convert_core_path_wine_to_w32_result
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_nix_to_w32
+
+
+# func_convert_path_msys_to_cygwin ARG
+# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_path_msys_to_cygwin ()
+{
+  $debug_cmd
+
+  func_to_host_path_result=$1
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
+    func_to_host_path_result=$func_cygpath_result
+    func_convert_path_check : : \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+  fi
+}
+# end func_convert_path_msys_to_cygwin
+
+
+# func_convert_path_nix_to_cygwin ARG
+# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
+# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
+# func_to_host_file_result.
+func_convert_path_nix_to_cygwin ()
+{
+  $debug_cmd
+
+  func_to_host_path_result=$1
+  if test -n "$1"; then
+    # Remove leading and trailing path separator characters from
+    # ARG. msys behavior is inconsistent here, cygpath turns them
+    # into '.;' and ';.', and winepath ignores them completely.
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
+    func_to_host_path_result=$func_cygpath_result
+    func_convert_path_check : : \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+  fi
+}
+# end func_convert_path_nix_to_cygwin
+
+
+# func_dll_def_p FILE
+# True iff FILE is a Windows DLL '.def' file.
+# Keep in sync with _LT_DLL_DEF_P in libtool.m4
+func_dll_def_p ()
+{
+  $debug_cmd
+
+  func_dll_def_p_tmp=`$SED -n \
+    -e 's/^[	 ]*//' \
+    -e '/^\(;.*\)*$/d' \
+    -e 's/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p' \
+    -e q \
+    "$1"`
+  test DEF = "$func_dll_def_p_tmp"
+}
+
+
+# func_mode_compile arg...
+func_mode_compile ()
+{
+    $debug_cmd
+
+    # Get the compilation command and the source file.
+    base_compile=
+    srcfile=$nonopt  #  always keep a non-empty value in "srcfile"
+    suppress_opt=yes
+    suppress_output=
+    arg_mode=normal
+    libobj=
+    later=
+    pie_flag=
+
+    for arg
+    do
+      case $arg_mode in
+      arg  )
+	# do not "continue".  Instead, add this to base_compile
+	lastarg=$arg
+	arg_mode=normal
+	;;
+
+      target )
+	libobj=$arg
+	arg_mode=normal
+	continue
+	;;
+
+      normal )
+	# Accept any command-line options.
+	case $arg in
+	-o)
+	  test -n "$libobj" && \
+	    func_fatal_error "you cannot specify '-o' more than once"
+	  arg_mode=target
+	  continue
+	  ;;
+
+	-pie | -fpie | -fPIE)
+          func_append pie_flag " $arg"
+	  continue
+	  ;;
+
+	-shared | -static | -prefer-pic | -prefer-non-pic)
+	  func_append later " $arg"
+	  continue
+	  ;;
+
+	-no-suppress)
+	  suppress_opt=no
+	  continue
+	  ;;
+
+	-Xcompiler)
+	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
+	  continue      #  The current "srcfile" will either be retained or
+	  ;;            #  replaced later.  I would guess that would be a bug.
+
+	-Wc,*)
+	  func_stripname '-Wc,' '' "$arg"
+	  args=$func_stripname_result
+	  lastarg=
+	  save_ifs=$IFS; IFS=,
+	  for arg in $args; do
+	    IFS=$save_ifs
+	    func_append_quoted lastarg "$arg"
+	  done
+	  IFS=$save_ifs
+	  func_stripname ' ' '' "$lastarg"
+	  lastarg=$func_stripname_result
+
+	  # Add the arguments to base_compile.
+	  func_append base_compile " $lastarg"
+	  continue
+	  ;;
+
+	*)
+	  # Accept the current argument as the source file.
+	  # The previous "srcfile" becomes the current argument.
+	  #
+	  lastarg=$srcfile
+	  srcfile=$arg
+	  ;;
+	esac  #  case $arg
+	;;
+      esac    #  case $arg_mode
+
+      # Aesthetically quote the previous argument.
+      func_append_quoted base_compile "$lastarg"
+    done # for arg
+
+    case $arg_mode in
+    arg)
+      func_fatal_error "you must specify an argument for -Xcompile"
+      ;;
+    target)
+      func_fatal_error "you must specify a target with '-o'"
+      ;;
+    *)
+      # Get the name of the library object.
+      test -z "$libobj" && {
+	func_basename "$srcfile"
+	libobj=$func_basename_result
+      }
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    case $libobj in
+    *.[cCFSifmso] | \
+    *.ada | *.adb | *.ads | *.asm | \
+    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
+    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
+      func_xform "$libobj"
+      libobj=$func_xform_result
+      ;;
+    esac
+
+    case $libobj in
+    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
+    *)
+      func_fatal_error "cannot determine name of library object from '$libobj'"
+      ;;
+    esac
+
+    func_infer_tag $base_compile
+
+    for arg in $later; do
+      case $arg in
+      -shared)
+	test yes = "$build_libtool_libs" \
+	  || func_fatal_configuration "cannot build a shared library"
+	build_old_libs=no
+	continue
+	;;
+
+      -static)
+	build_libtool_libs=no
+	build_old_libs=yes
+	continue
+	;;
+
+      -prefer-pic)
+	pic_mode=yes
+	continue
+	;;
+
+      -prefer-non-pic)
+	pic_mode=no
+	continue
+	;;
+      esac
+    done
+
+    func_quote_for_eval "$libobj"
+    test "X$libobj" != "X$func_quote_for_eval_result" \
+      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
+      && func_warning "libobj name '$libobj' may not contain shell special characters."
+    func_dirname_and_basename "$obj" "/" ""
+    objname=$func_basename_result
+    xdir=$func_dirname_result
+    lobj=$xdir$objdir/$objname
+
+    test -z "$base_compile" && \
+      func_fatal_help "you must specify a compilation command"
+
+    # Delete any leftover library objects.
+    if test yes = "$build_old_libs"; then
+      removelist="$obj $lobj $libobj ${libobj}T"
+    else
+      removelist="$lobj $libobj ${libobj}T"
+    fi
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2* | cegcc*)
+      pic_mode=default
+      ;;
+    esac
+    if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test no = "$compiler_c_o"; then
+      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext
+      lockfile=$output_obj.lock
+    else
+      output_obj=
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test yes = "$need_locks"; then
+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+	func_echo "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    elif test warn = "$need_locks"; then
+      if test -f "$lockfile"; then
+	$ECHO "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support '-c' and '-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$opt_dry_run || $RM $removelist
+	exit $EXIT_FAILURE
+      fi
+      func_append removelist " $output_obj"
+      $ECHO "$srcfile" > "$lockfile"
+    fi
+
+    $opt_dry_run || $RM $removelist
+    func_append removelist " $lockfile"
+    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
+
+    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
+    srcfile=$func_to_tool_file_result
+    func_quote_for_eval "$srcfile"
+    qsrcfile=$func_quote_for_eval_result
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test yes = "$build_libtool_libs"; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test no != "$pic_mode"; then
+	command="$base_compile $qsrcfile $pic_flag"
+      else
+	# Don't build PIC code
+	command="$base_compile $qsrcfile"
+      fi
+
+      func_mkdir_p "$xdir$objdir"
+
+      if test -z "$output_obj"; then
+	# Place PIC objects in $objdir
+	func_append command " -o $lobj"
+      fi
+
+      func_show_eval_locale "$command"	\
+          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
+
+      if test warn = "$need_locks" &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support '-c' and '-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$opt_dry_run || $RM $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+	func_show_eval '$MV "$output_obj" "$lobj"' \
+	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+      fi
+
+      # Allow error messages only from the first compilation.
+      if test yes = "$suppress_opt"; then
+	suppress_output=' >/dev/null 2>&1'
+      fi
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test yes = "$build_old_libs"; then
+      if test yes != "$pic_mode"; then
+	# Don't build PIC code
+	command="$base_compile $qsrcfile$pie_flag"
+      else
+	command="$base_compile $qsrcfile $pic_flag"
+      fi
+      if test yes = "$compiler_c_o"; then
+	func_append command " -o $obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      func_append command "$suppress_output"
+      func_show_eval_locale "$command" \
+        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
+
+      if test warn = "$need_locks" &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support '-c' and '-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$opt_dry_run || $RM $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed
+      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+	func_show_eval '$MV "$output_obj" "$obj"' \
+	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+      fi
+    fi
+
+    $opt_dry_run || {
+      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
+
+      # Unlock the critical section if it was locked
+      if test no != "$need_locks"; then
+	removelist=$lockfile
+        $RM "$lockfile"
+      fi
+    }
+
+    exit $EXIT_SUCCESS
+}
+
+$opt_help || {
+  test compile = "$opt_mode" && func_mode_compile ${1+"$@"}
+}
+
+func_mode_help ()
+{
+    # We need to display help for each of the modes.
+    case $opt_mode in
+      "")
+        # Generic help is extracted from the usage comments
+        # at the start of this file.
+        func_help
+        ;;
+
+      clean)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+        ;;
+
+      compile)
+      $ECHO \
+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -no-suppress      do not suppress compiler output for multiple passes
+  -prefer-pic       try to build PIC objects only
+  -prefer-non-pic   try to build non-PIC objects only
+  -shared           do not build a '.o' file suitable for static linking
+  -static           only build a '.o' file suitable for static linking
+  -Wc,FLAG          pass FLAG directly to the compiler
+
+COMPILE-COMMAND is a command to be used in creating a 'standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix '.c' with the
+library object suffix, '.lo'."
+        ;;
+
+      execute)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to '-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+        ;;
+
+      finish)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the '--dry-run' option if you just want to see what would be executed."
+        ;;
+
+      install)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the 'install' or 'cp' program.
+
+The following components of INSTALL-COMMAND are treated specially:
+
+  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+        ;;
+
+      link)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -bindir BINDIR    specify path to binaries directory (for systems where
+                    libraries must be found in the PATH setting at runtime)
+  -dlopen FILE      '-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+                    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+                    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  use a list of object files found in FILE to specify objects
+  -os2dllname NAME  force a short DLL name on OS/2 (no effect on other OSes)
+  -precious-files-regex REGEX
+                    don't remove output files matching REGEX
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -shared           only do dynamic linking of libtool libraries
+  -shrext SUFFIX    override the standard shared library file extension
+  -static           do not do any dynamic linking of uninstalled libtool libraries
+  -static-libtool-libs
+                    do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+                    specify library version info [each variable defaults to 0]
+  -weak LIBNAME     declare that the target provides the LIBNAME interface
+  -Wc,FLAG
+  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
+  -Wl,FLAG
+  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
+  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
+
+All other options (arguments beginning with '-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in '.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in '.la', then a libtool library is created,
+only library objects ('.lo' files) may be specified, and '-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created
+using 'ar' and 'ranlib', or on Windows using 'lib'.
+
+If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file
+is created, otherwise an executable program is created."
+        ;;
+
+      uninstall)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+        ;;
+
+      *)
+        func_fatal_help "invalid operation mode '$opt_mode'"
+        ;;
+    esac
+
+    echo
+    $ECHO "Try '$progname --help' for more information about other modes."
+}
+
+# Now that we've collected a possible --mode arg, show help if necessary
+if $opt_help; then
+  if test : = "$opt_help"; then
+    func_mode_help
+  else
+    {
+      func_help noexit
+      for opt_mode in compile link execute install finish uninstall clean; do
+	func_mode_help
+      done
+    } | $SED -n '1p; 2,$s/^Usage:/  or: /p'
+    {
+      func_help noexit
+      for opt_mode in compile link execute install finish uninstall clean; do
+	echo
+	func_mode_help
+      done
+    } |
+    $SED '1d
+      /^When reporting/,/^Report/{
+	H
+	d
+      }
+      $x
+      /information about other modes/d
+      /more detailed .*MODE/d
+      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
+  fi
+  exit $?
+fi
+
+
+# func_mode_execute arg...
+func_mode_execute ()
+{
+    $debug_cmd
+
+    # The first argument is the command name.
+    cmd=$nonopt
+    test -z "$cmd" && \
+      func_fatal_help "you must specify a COMMAND"
+
+    # Handle -dlopen flags immediately.
+    for file in $opt_dlopen; do
+      test -f "$file" \
+	|| func_fatal_help "'$file' is not a file"
+
+      dir=
+      case $file in
+      *.la)
+	func_resolve_sysroot "$file"
+	file=$func_resolve_sysroot_result
+
+	# Check to see that this really is a libtool archive.
+	func_lalib_unsafe_p "$file" \
+	  || func_fatal_help "'$lib' is not a valid libtool archive"
+
+	# Read the libtool library.
+	dlname=
+	library_names=
+	func_source "$file"
+
+	# Skip this library if it cannot be dlopened.
+	if test -z "$dlname"; then
+	  # Warn if it was a shared library.
+	  test -n "$library_names" && \
+	    func_warning "'$file' was not linked with '-export-dynamic'"
+	  continue
+	fi
+
+	func_dirname "$file" "" "."
+	dir=$func_dirname_result
+
+	if test -f "$dir/$objdir/$dlname"; then
+	  func_append dir "/$objdir"
+	else
+	  if test ! -f "$dir/$dlname"; then
+	    func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'"
+	  fi
+	fi
+	;;
+
+      *.lo)
+	# Just add the directory containing the .lo file.
+	func_dirname "$file" "" "."
+	dir=$func_dirname_result
+	;;
+
+      *)
+	func_warning "'-dlopen' is ignored for non-libtool libraries and objects"
+	continue
+	;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir=$absdir
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+	eval "$shlibpath_var=\"\$dir\""
+      else
+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic=$magic
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -* | *.la | *.lo ) ;;
+      *)
+	# Do a test to see if this is really a libtool program.
+	if func_ltwrapper_script_p "$file"; then
+	  func_source "$file"
+	  # Transform arg to wrapped name.
+	  file=$progdir/$program
+	elif func_ltwrapper_executable_p "$file"; then
+	  func_ltwrapper_scriptname "$file"
+	  func_source "$func_ltwrapper_scriptname_result"
+	  # Transform arg to wrapped name.
+	  file=$progdir/$program
+	fi
+	;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      func_append_quoted args "$file"
+    done
+
+    if $opt_dry_run; then
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+	echo "export $shlibpath_var"
+      fi
+      $ECHO "$cmd$args"
+      exit $EXIT_SUCCESS
+    else
+      if test -n "$shlibpath_var"; then
+	# Export the shlibpath_var.
+	eval "export $shlibpath_var"
+      fi
+
+      # Restore saved environment variables
+      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+      do
+	eval "if test \"\${save_$lt_var+set}\" = set; then
+                $lt_var=\$save_$lt_var; export $lt_var
+	      else
+		$lt_unset $lt_var
+	      fi"
+      done
+
+      # Now prepare to actually exec the command.
+      exec_cmd=\$cmd$args
+    fi
+}
+
+test execute = "$opt_mode" && func_mode_execute ${1+"$@"}
+
+
+# func_mode_finish arg...
+func_mode_finish ()
+{
+    $debug_cmd
+
+    libs=
+    libdirs=
+    admincmds=
+
+    for opt in "$nonopt" ${1+"$@"}
+    do
+      if test -d "$opt"; then
+	func_append libdirs " $opt"
+
+      elif test -f "$opt"; then
+	if func_lalib_unsafe_p "$opt"; then
+	  func_append libs " $opt"
+	else
+	  func_warning "'$opt' is not a valid libtool archive"
+	fi
+
+      else
+	func_fatal_error "invalid argument '$opt'"
+      fi
+    done
+
+    if test -n "$libs"; then
+      if test -n "$lt_sysroot"; then
+        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
+        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
+      else
+        sysroot_cmd=
+      fi
+
+      # Remove sysroot references
+      if $opt_dry_run; then
+        for lib in $libs; do
+          echo "removing references to $lt_sysroot and '=' prefixes from $lib"
+        done
+      else
+        tmpdir=`func_mktempdir`
+        for lib in $libs; do
+	  $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
+	    > $tmpdir/tmp-la
+	  mv -f $tmpdir/tmp-la $lib
+	done
+        ${RM}r "$tmpdir"
+      fi
+    fi
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for libdir in $libdirs; do
+	if test -n "$finish_cmds"; then
+	  # Do each command in the finish commands.
+	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
+'"$cmd"'"'
+	fi
+	if test -n "$finish_eval"; then
+	  # Do the single finish_eval.
+	  eval cmds=\"$finish_eval\"
+	  $opt_dry_run || eval "$cmds" || func_append admincmds "
+       $cmds"
+	fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    $opt_quiet && exit $EXIT_SUCCESS
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      echo "----------------------------------------------------------------------"
+      echo "Libraries have been installed in:"
+      for libdir in $libdirs; do
+	$ECHO "   $libdir"
+      done
+      echo
+      echo "If you ever happen to want to link against installed libraries"
+      echo "in a given directory, LIBDIR, you must either use libtool, and"
+      echo "specify the full pathname of the library, or use the '-LLIBDIR'"
+      echo "flag during linking and do at least one of the following:"
+      if test -n "$shlibpath_var"; then
+	echo "   - add LIBDIR to the '$shlibpath_var' environment variable"
+	echo "     during execution"
+      fi
+      if test -n "$runpath_var"; then
+	echo "   - add LIBDIR to the '$runpath_var' environment variable"
+	echo "     during linking"
+      fi
+      if test -n "$hardcode_libdir_flag_spec"; then
+	libdir=LIBDIR
+	eval flag=\"$hardcode_libdir_flag_spec\"
+
+	$ECHO "   - use the '$flag' linker flag"
+      fi
+      if test -n "$admincmds"; then
+	$ECHO "   - have your system administrator run these commands:$admincmds"
+      fi
+      if test -f /etc/ld.so.conf; then
+	echo "   - have your system administrator add LIBDIR to '/etc/ld.so.conf'"
+      fi
+      echo
+
+      echo "See any operating system documentation about shared libraries for"
+      case $host in
+	solaris2.[6789]|solaris2.1[0-9])
+	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+	  echo "pages."
+	  ;;
+	*)
+	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
+	  ;;
+      esac
+      echo "----------------------------------------------------------------------"
+    fi
+    exit $EXIT_SUCCESS
+}
+
+test finish = "$opt_mode" && func_mode_finish ${1+"$@"}
+
+
+# func_mode_install arg...
+func_mode_install ()
+{
+    $debug_cmd
+
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" ||
+       # Allow the use of GNU shtool's install command.
+       case $nonopt in *shtool*) :;; *) false;; esac
+    then
+      # Aesthetically quote it.
+      func_quote_for_eval "$nonopt"
+      install_prog="$func_quote_for_eval_result "
+      arg=$1
+      shift
+    else
+      install_prog=
+      arg=$nonopt
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    func_quote_for_eval "$arg"
+    func_append install_prog "$func_quote_for_eval_result"
+    install_shared_prog=$install_prog
+    case " $install_prog " in
+      *[\\\ /]cp\ *) install_cp=: ;;
+      *) install_cp=false ;;
+    esac
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=false
+    stripme=
+    no_mode=:
+    for arg
+    do
+      arg2=
+      if test -n "$dest"; then
+	func_append files " $dest"
+	dest=$arg
+	continue
+      fi
+
+      case $arg in
+      -d) isdir=: ;;
+      -f)
+	if $install_cp; then :; else
+	  prev=$arg
+	fi
+	;;
+      -g | -m | -o)
+	prev=$arg
+	;;
+      -s)
+	stripme=" -s"
+	continue
+	;;
+      -*)
+	;;
+      *)
+	# If the previous option needed an argument, then skip it.
+	if test -n "$prev"; then
+	  if test X-m = "X$prev" && test -n "$install_override_mode"; then
+	    arg2=$install_override_mode
+	    no_mode=false
+	  fi
+	  prev=
+	else
+	  dest=$arg
+	  continue
+	fi
+	;;
+      esac
+
+      # Aesthetically quote the argument.
+      func_quote_for_eval "$arg"
+      func_append install_prog " $func_quote_for_eval_result"
+      if test -n "$arg2"; then
+	func_quote_for_eval "$arg2"
+      fi
+      func_append install_shared_prog " $func_quote_for_eval_result"
+    done
+
+    test -z "$install_prog" && \
+      func_fatal_help "you must specify an install program"
+
+    test -n "$prev" && \
+      func_fatal_help "the '$prev' option requires an argument"
+
+    if test -n "$install_override_mode" && $no_mode; then
+      if $install_cp; then :; else
+	func_quote_for_eval "$install_override_mode"
+	func_append install_shared_prog " -m $func_quote_for_eval_result"
+      fi
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+	func_fatal_help "no file or destination specified"
+      else
+	func_fatal_help "you must specify a destination"
+      fi
+    fi
+
+    # Strip any trailing slash from the destination.
+    func_stripname '' '/' "$dest"
+    dest=$func_stripname_result
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=:
+    if $isdir; then
+      destdir=$dest
+      destname=
+    else
+      func_dirname_and_basename "$dest" "" "."
+      destdir=$func_dirname_result
+      destname=$func_basename_result
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files; shift
+      test "$#" -gt 1 && \
+	func_fatal_help "'$dest' is not a directory"
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+	case $file in
+	*.lo) ;;
+	*)
+	  func_fatal_help "'$destdir' must be an absolute directory name"
+	  ;;
+	esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic=$magic
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+	# Do the static libraries later.
+	func_append staticlibs " $file"
+	;;
+
+      *.la)
+	func_resolve_sysroot "$file"
+	file=$func_resolve_sysroot_result
+
+	# Check to see that this really is a libtool archive.
+	func_lalib_unsafe_p "$file" \
+	  || func_fatal_help "'$file' is not a valid libtool archive"
+
+	library_names=
+	old_library=
+	relink_command=
+	func_source "$file"
+
+	# Add the libdir to current_libdirs if it is the destination.
+	if test "X$destdir" = "X$libdir"; then
+	  case "$current_libdirs " in
+	  *" $libdir "*) ;;
+	  *) func_append current_libdirs " $libdir" ;;
+	  esac
+	else
+	  # Note the libdir as a future libdir.
+	  case "$future_libdirs " in
+	  *" $libdir "*) ;;
+	  *) func_append future_libdirs " $libdir" ;;
+	  esac
+	fi
+
+	func_dirname "$file" "/" ""
+	dir=$func_dirname_result
+	func_append dir "$objdir"
+
+	if test -n "$relink_command"; then
+	  # Determine the prefix the user has applied to our future dir.
+	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
+
+	  # Don't allow the user to place us outside of our expected
+	  # location b/c this prevents finding dependent libraries that
+	  # are installed to the same prefix.
+	  # At present, this check doesn't affect windows .dll's that
+	  # are installed into $libdir/../bin (currently, that works fine)
+	  # but it's something to keep an eye on.
+	  test "$inst_prefix_dir" = "$destdir" && \
+	    func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir"
+
+	  if test -n "$inst_prefix_dir"; then
+	    # Stick the inst_prefix_dir data into the link command.
+	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+	  else
+	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+	  fi
+
+	  func_warning "relinking '$file'"
+	  func_show_eval "$relink_command" \
+	    'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"'
+	fi
+
+	# See the names of the shared library.
+	set dummy $library_names; shift
+	if test -n "$1"; then
+	  realname=$1
+	  shift
+
+	  srcname=$realname
+	  test -n "$relink_command" && srcname=${realname}T
+
+	  # Install the shared library and build the symlinks.
+	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
+	      'exit $?'
+	  tstripme=$stripme
+	  case $host_os in
+	  cygwin* | mingw* | pw32* | cegcc*)
+	    case $realname in
+	    *.dll.a)
+	      tstripme=
+	      ;;
+	    esac
+	    ;;
+	  os2*)
+	    case $realname in
+	    *_dll.a)
+	      tstripme=
+	      ;;
+	    esac
+	    ;;
+	  esac
+	  if test -n "$tstripme" && test -n "$striplib"; then
+	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
+	  fi
+
+	  if test "$#" -gt 0; then
+	    # Delete the old symlinks, and create new ones.
+	    # Try 'ln -sf' first, because the 'ln' binary might depend on
+	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
+	    # so we also need to try rm && ln -s.
+	    for linkname
+	    do
+	      test "$linkname" != "$realname" \
+		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
+	    done
+	  fi
+
+	  # Do each command in the postinstall commands.
+	  lib=$destdir/$realname
+	  func_execute_cmds "$postinstall_cmds" 'exit $?'
+	fi
+
+	# Install the pseudo-library for information purposes.
+	func_basename "$file"
+	name=$func_basename_result
+	instname=$dir/${name}i
+	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
+
+	# Maybe install the static library, too.
+	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
+	;;
+
+      *.lo)
+	# Install (i.e. copy) a libtool object.
+
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile=$destdir/$destname
+	else
+	  func_basename "$file"
+	  destfile=$func_basename_result
+	  destfile=$destdir/$destfile
+	fi
+
+	# Deduce the name of the destination old-style object file.
+	case $destfile in
+	*.lo)
+	  func_lo2o "$destfile"
+	  staticdest=$func_lo2o_result
+	  ;;
+	*.$objext)
+	  staticdest=$destfile
+	  destfile=
+	  ;;
+	*)
+	  func_fatal_help "cannot copy a libtool object to '$destfile'"
+	  ;;
+	esac
+
+	# Install the libtool object if requested.
+	test -n "$destfile" && \
+	  func_show_eval "$install_prog $file $destfile" 'exit $?'
+
+	# Install the old object if enabled.
+	if test yes = "$build_old_libs"; then
+	  # Deduce the name of the old-style object file.
+	  func_lo2o "$file"
+	  staticobj=$func_lo2o_result
+	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
+	fi
+	exit $EXIT_SUCCESS
+	;;
+
+      *)
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile=$destdir/$destname
+	else
+	  func_basename "$file"
+	  destfile=$func_basename_result
+	  destfile=$destdir/$destfile
+	fi
+
+	# If the file is missing, and there is a .exe on the end, strip it
+	# because it is most likely a libtool script we actually want to
+	# install
+	stripped_ext=
+	case $file in
+	  *.exe)
+	    if test ! -f "$file"; then
+	      func_stripname '' '.exe' "$file"
+	      file=$func_stripname_result
+	      stripped_ext=.exe
+	    fi
+	    ;;
+	esac
+
+	# Do a test to see if this is really a libtool program.
+	case $host in
+	*cygwin* | *mingw*)
+	    if func_ltwrapper_executable_p "$file"; then
+	      func_ltwrapper_scriptname "$file"
+	      wrapper=$func_ltwrapper_scriptname_result
+	    else
+	      func_stripname '' '.exe' "$file"
+	      wrapper=$func_stripname_result
+	    fi
+	    ;;
+	*)
+	    wrapper=$file
+	    ;;
+	esac
+	if func_ltwrapper_script_p "$wrapper"; then
+	  notinst_deplibs=
+	  relink_command=
+
+	  func_source "$wrapper"
+
+	  # Check the variables that should have been set.
+	  test -z "$generated_by_libtool_version" && \
+	    func_fatal_error "invalid libtool wrapper script '$wrapper'"
+
+	  finalize=:
+	  for lib in $notinst_deplibs; do
+	    # Check to see that each library is installed.
+	    libdir=
+	    if test -f "$lib"; then
+	      func_source "$lib"
+	    fi
+	    libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'`
+	    if test -n "$libdir" && test ! -f "$libfile"; then
+	      func_warning "'$lib' has not been installed in '$libdir'"
+	      finalize=false
+	    fi
+	  done
+
+	  relink_command=
+	  func_source "$wrapper"
+
+	  outputname=
+	  if test no = "$fast_install" && test -n "$relink_command"; then
+	    $opt_dry_run || {
+	      if $finalize; then
+	        tmpdir=`func_mktempdir`
+		func_basename "$file$stripped_ext"
+		file=$func_basename_result
+	        outputname=$tmpdir/$file
+	        # Replace the output file specification.
+	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
+
+	        $opt_quiet || {
+	          func_quote_for_expand "$relink_command"
+		  eval "func_echo $func_quote_for_expand_result"
+	        }
+	        if eval "$relink_command"; then :
+	          else
+		  func_error "error: relink '$file' with the above command before installing it"
+		  $opt_dry_run || ${RM}r "$tmpdir"
+		  continue
+	        fi
+	        file=$outputname
+	      else
+	        func_warning "cannot relink '$file'"
+	      fi
+	    }
+	  else
+	    # Install the binary that we compiled earlier.
+	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
+	  fi
+	fi
+
+	# remove .exe since cygwin /usr/bin/install will append another
+	# one anyway
+	case $install_prog,$host in
+	*/usr/bin/install*,*cygwin*)
+	  case $file:$destfile in
+	  *.exe:*.exe)
+	    # this is ok
+	    ;;
+	  *.exe:*)
+	    destfile=$destfile.exe
+	    ;;
+	  *:*.exe)
+	    func_stripname '' '.exe' "$destfile"
+	    destfile=$func_stripname_result
+	    ;;
+	  esac
+	  ;;
+	esac
+	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
+	$opt_dry_run || if test -n "$outputname"; then
+	  ${RM}r "$tmpdir"
+	fi
+	;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      func_basename "$file"
+      name=$func_basename_result
+
+      # Set up the ranlib parameters.
+      oldlib=$destdir/$name
+      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+      tool_oldlib=$func_to_tool_file_result
+
+      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
+
+      if test -n "$stripme" && test -n "$old_striplib"; then
+	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
+      fi
+
+      # Do each command in the postinstall commands.
+      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
+    done
+
+    test -n "$future_libdirs" && \
+      func_warning "remember to run '$progname --finish$future_libdirs'"
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      $opt_dry_run && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs'
+    else
+      exit $EXIT_SUCCESS
+    fi
+}
+
+test install = "$opt_mode" && func_mode_install ${1+"$@"}
+
+
+# func_generate_dlsyms outputname originator pic_p
+# Extract symbols from dlprefiles and create ${outputname}S.o with
+# a dlpreopen symbol table.
+func_generate_dlsyms ()
+{
+    $debug_cmd
+
+    my_outputname=$1
+    my_originator=$2
+    my_pic_p=${3-false}
+    my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'`
+    my_dlsyms=
+
+    if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+      if test -n "$NM" && test -n "$global_symbol_pipe"; then
+	my_dlsyms=${my_outputname}S.c
+      else
+	func_error "not configured to extract global symbols from dlpreopened files"
+      fi
+    fi
+
+    if test -n "$my_dlsyms"; then
+      case $my_dlsyms in
+      "") ;;
+      *.c)
+	# Discover the nlist of each of the dlfiles.
+	nlist=$output_objdir/$my_outputname.nm
+
+	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
+
+	# Parse the name list into a source file.
+	func_verbose "creating $output_objdir/$my_dlsyms"
+
+	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
+/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
+#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
+#endif
+
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT_DLSYM_CONST
+#elif defined __osf__
+/* This system does not cope well with relocations in const data.  */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
+
+/* External symbol declarations for the compiler. */\
+"
+
+	if test yes = "$dlself"; then
+	  func_verbose "generating symbol list for '$output'"
+
+	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
+
+	  # Add our own program objects to the symbol list.
+	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+	  for progfile in $progfiles; do
+	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
+	    func_verbose "extracting global C symbols from '$func_to_tool_file_result'"
+	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
+	  done
+
+	  if test -n "$exclude_expsyms"; then
+	    $opt_dry_run || {
+	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+	      eval '$MV "$nlist"T "$nlist"'
+	    }
+	  fi
+
+	  if test -n "$export_symbols_regex"; then
+	    $opt_dry_run || {
+	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+	      eval '$MV "$nlist"T "$nlist"'
+	    }
+	  fi
+
+	  # Prepare the list of exported symbols
+	  if test -z "$export_symbols"; then
+	    export_symbols=$output_objdir/$outputname.exp
+	    $opt_dry_run || {
+	      $RM $export_symbols
+	      eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+	      case $host in
+	      *cygwin* | *mingw* | *cegcc* )
+                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+	        ;;
+	      esac
+	    }
+	  else
+	    $opt_dry_run || {
+	      eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+	      eval '$MV "$nlist"T "$nlist"'
+	      case $host in
+	        *cygwin* | *mingw* | *cegcc* )
+	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+	          ;;
+	      esac
+	    }
+	  fi
+	fi
+
+	for dlprefile in $dlprefiles; do
+	  func_verbose "extracting global C symbols from '$dlprefile'"
+	  func_basename "$dlprefile"
+	  name=$func_basename_result
+          case $host in
+	    *cygwin* | *mingw* | *cegcc* )
+	      # if an import library, we need to obtain dlname
+	      if func_win32_import_lib_p "$dlprefile"; then
+	        func_tr_sh "$dlprefile"
+	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
+	        dlprefile_dlbasename=
+	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
+	          # Use subshell, to avoid clobbering current variable values
+	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
+	          if test -n "$dlprefile_dlname"; then
+	            func_basename "$dlprefile_dlname"
+	            dlprefile_dlbasename=$func_basename_result
+	          else
+	            # no lafile. user explicitly requested -dlpreopen <import library>.
+	            $sharedlib_from_linklib_cmd "$dlprefile"
+	            dlprefile_dlbasename=$sharedlib_from_linklib_result
+	          fi
+	        fi
+	        $opt_dry_run || {
+	          if test -n "$dlprefile_dlbasename"; then
+	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
+	          else
+	            func_warning "Could not compute DLL name from $name"
+	            eval '$ECHO ": $name " >> "$nlist"'
+	          fi
+	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
+	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
+	        }
+	      else # not an import lib
+	        $opt_dry_run || {
+	          eval '$ECHO ": $name " >> "$nlist"'
+	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+	        }
+	      fi
+	    ;;
+	    *)
+	      $opt_dry_run || {
+	        eval '$ECHO ": $name " >> "$nlist"'
+	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+	      }
+	    ;;
+          esac
+	done
+
+	$opt_dry_run || {
+	  # Make sure we have at least an empty file.
+	  test -f "$nlist" || : > "$nlist"
+
+	  if test -n "$exclude_expsyms"; then
+	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+	    $MV "$nlist"T "$nlist"
+	  fi
+
+	  # Try sorting and uniquifying the output.
+	  if $GREP -v "^: " < "$nlist" |
+	      if sort -k 3 </dev/null >/dev/null 2>&1; then
+		sort -k 3
+	      else
+		sort +2
+	      fi |
+	      uniq > "$nlist"S; then
+	    :
+	  else
+	    $GREP -v "^: " < "$nlist" > "$nlist"S
+	  fi
+
+	  if test -f "$nlist"S; then
+	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
+	  else
+	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
+	  fi
+
+	  func_show_eval '$RM "${nlist}I"'
+	  if test -n "$global_symbol_to_import"; then
+	    eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I'
+	  fi
+
+	  echo >> "$output_objdir/$my_dlsyms" "\
+
+/* The mapping between symbol names and symbols.  */
+typedef struct {
+  const char *name;
+  void *address;
+} lt_dlsymlist;
+extern LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[];\
+"
+
+	  if test -s "$nlist"I; then
+	    echo >> "$output_objdir/$my_dlsyms" "\
+static void lt_syminit(void)
+{
+  LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols;
+  for (; symbol->name; ++symbol)
+    {"
+	    $SED 's/.*/      if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms"
+	    echo >> "$output_objdir/$my_dlsyms" "\
+    }
+}"
+	  fi
+	  echo >> "$output_objdir/$my_dlsyms" "\
+LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[] =
+{ {\"$my_originator\", (void *) 0},"
+
+	  if test -s "$nlist"I; then
+	    echo >> "$output_objdir/$my_dlsyms" "\
+  {\"@INIT@\", (void *) &lt_syminit},"
+	  fi
+
+	  case $need_lib_prefix in
+	  no)
+	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
+	    ;;
+	  *)
+	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
+	    ;;
+	  esac
+	  echo >> "$output_objdir/$my_dlsyms" "\
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_${my_prefix}_LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+	} # !$opt_dry_run
+
+	pic_flag_for_symtable=
+	case "$compile_command " in
+	*" -static "*) ;;
+	*)
+	  case $host in
+	  # compiling the symbol table file with pic_flag works around
+	  # a FreeBSD bug that causes programs to crash when -lm is
+	  # linked before any other PIC object.  But we must not use
+	  # pic_flag when linking with -static.  The problem exists in
+	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
+	  *-*-hpux*)
+	    pic_flag_for_symtable=" $pic_flag"  ;;
+	  *)
+	    $my_pic_p && pic_flag_for_symtable=" $pic_flag"
+	    ;;
+	  esac
+	  ;;
+	esac
+	symtab_cflags=
+	for arg in $LTCFLAGS; do
+	  case $arg in
+	  -pie | -fpie | -fPIE) ;;
+	  *) func_append symtab_cflags " $arg" ;;
+	  esac
+	done
+
+	# Now compile the dynamic symbol file.
+	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
+
+	# Clean up the generated files.
+	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"'
+
+	# Transform the symbol file into the correct name.
+	symfileobj=$output_objdir/${my_outputname}S.$objext
+	case $host in
+	*cygwin* | *mingw* | *cegcc* )
+	  if test -f "$output_objdir/$my_outputname.def"; then
+	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+	  else
+	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	  fi
+	  ;;
+	*)
+	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	  ;;
+	esac
+	;;
+      *)
+	func_fatal_error "unknown suffix for '$my_dlsyms'"
+	;;
+      esac
+    else
+      # We keep going just in case the user didn't refer to
+      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+      # really was required.
+
+      # Nullify the symbol file.
+      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
+      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
+    fi
+}
+
+# func_cygming_gnu_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is a GNU/binutils-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_gnu_implib_p ()
+{
+  $debug_cmd
+
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
+  test -n "$func_cygming_gnu_implib_tmp"
+}
+
+# func_cygming_ms_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is an MS-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_ms_implib_p ()
+{
+  $debug_cmd
+
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
+  test -n "$func_cygming_ms_implib_tmp"
+}
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+# Despite the name, also deal with 64 bit binaries.
+func_win32_libid ()
+{
+  $debug_cmd
+
+  win32_libid_type=unknown
+  win32_fileres=`file -L $1 2>/dev/null`
+  case $win32_fileres in
+  *ar\ archive\ import\ library*) # definitely import
+    win32_libid_type="x86 archive import"
+    ;;
+  *ar\ archive*) # could be an import, or static
+    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
+       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
+      case $nm_interface in
+      "MS dumpbin")
+	if func_cygming_ms_implib_p "$1" ||
+	   func_cygming_gnu_implib_p "$1"
+	then
+	  win32_nmres=import
+	else
+	  win32_nmres=
+	fi
+	;;
+      *)
+	func_to_tool_file "$1" func_convert_file_msys_to_w32
+	win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
+	  $SED -n -e '
+	    1,100{
+		/ I /{
+		    s|.*|import|
+		    p
+		    q
+		}
+	    }'`
+	;;
+      esac
+      case $win32_nmres in
+      import*)  win32_libid_type="x86 archive import";;
+      *)        win32_libid_type="x86 archive static";;
+      esac
+    fi
+    ;;
+  *DLL*)
+    win32_libid_type="x86 DLL"
+    ;;
+  *executable*) # but shell scripts are "executable" too...
+    case $win32_fileres in
+    *MS\ Windows\ PE\ Intel*)
+      win32_libid_type="x86 DLL"
+      ;;
+    esac
+    ;;
+  esac
+  $ECHO "$win32_libid_type"
+}
+
+# func_cygming_dll_for_implib ARG
+#
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+# Invoked by eval'ing the libtool variable
+#    $sharedlib_from_linklib_cmd
+# Result is available in the variable
+#    $sharedlib_from_linklib_result
+func_cygming_dll_for_implib ()
+{
+  $debug_cmd
+
+  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
+}
+
+# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
+#
+# The is the core of a fallback implementation of a
+# platform-specific function to extract the name of the
+# DLL associated with the specified import library LIBNAME.
+#
+# SECTION_NAME is either .idata$6 or .idata$7, depending
+# on the platform and compiler that created the implib.
+#
+# Echos the name of the DLL associated with the
+# specified import library.
+func_cygming_dll_for_implib_fallback_core ()
+{
+  $debug_cmd
+
+  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
+  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
+    $SED '/^Contents of section '"$match_literal"':/{
+      # Place marker at beginning of archive member dllname section
+      s/.*/====MARK====/
+      p
+      d
+    }
+    # These lines can sometimes be longer than 43 characters, but
+    # are always uninteresting
+    /:[	 ]*file format pe[i]\{,1\}-/d
+    /^In archive [^:]*:/d
+    # Ensure marker is printed
+    /^====MARK====/p
+    # Remove all lines with less than 43 characters
+    /^.\{43\}/!d
+    # From remaining lines, remove first 43 characters
+    s/^.\{43\}//' |
+    $SED -n '
+      # Join marker and all lines until next marker into a single line
+      /^====MARK====/ b para
+      H
+      $ b para
+      b
+      :para
+      x
+      s/\n//g
+      # Remove the marker
+      s/^====MARK====//
+      # Remove trailing dots and whitespace
+      s/[\. \t]*$//
+      # Print
+      /./p' |
+    # we now have a list, one entry per line, of the stringified
+    # contents of the appropriate section of all members of the
+    # archive that possess that section. Heuristic: eliminate
+    # all those that have a first or second character that is
+    # a '.' (that is, objdump's representation of an unprintable
+    # character.) This should work for all archives with less than
+    # 0x302f exports -- but will fail for DLLs whose name actually
+    # begins with a literal '.' or a single character followed by
+    # a '.'.
+    #
+    # Of those that remain, print the first one.
+    $SED -e '/^\./d;/^.\./d;q'
+}
+
+# func_cygming_dll_for_implib_fallback ARG
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+#
+# This fallback implementation is for use when $DLLTOOL
+# does not support the --identify-strict option.
+# Invoked by eval'ing the libtool variable
+#    $sharedlib_from_linklib_cmd
+# Result is available in the variable
+#    $sharedlib_from_linklib_result
+func_cygming_dll_for_implib_fallback ()
+{
+  $debug_cmd
+
+  if func_cygming_gnu_implib_p "$1"; then
+    # binutils import library
+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
+  elif func_cygming_ms_implib_p "$1"; then
+    # ms-generated import library
+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
+  else
+    # unknown
+    sharedlib_from_linklib_result=
+  fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+    $debug_cmd
+
+    f_ex_an_ar_dir=$1; shift
+    f_ex_an_ar_oldlib=$1
+    if test yes = "$lock_old_archive_extraction"; then
+      lockfile=$f_ex_an_ar_oldlib.lock
+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+	func_echo "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    fi
+    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
+		   'stat=$?; rm -f "$lockfile"; exit $stat'
+    if test yes = "$lock_old_archive_extraction"; then
+      $opt_dry_run || rm -f "$lockfile"
+    fi
+    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+     :
+    else
+      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
+    fi
+}
+
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+    $debug_cmd
+
+    my_gentop=$1; shift
+    my_oldlibs=${1+"$@"}
+    my_oldobjs=
+    my_xlib=
+    my_xabs=
+    my_xdir=
+
+    for my_xlib in $my_oldlibs; do
+      # Extract the objects.
+      case $my_xlib in
+	[\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;;
+	*) my_xabs=`pwd`"/$my_xlib" ;;
+      esac
+      func_basename "$my_xlib"
+      my_xlib=$func_basename_result
+      my_xlib_u=$my_xlib
+      while :; do
+        case " $extracted_archives " in
+	*" $my_xlib_u "*)
+	  func_arith $extracted_serial + 1
+	  extracted_serial=$func_arith_result
+	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
+	*) break ;;
+	esac
+      done
+      extracted_archives="$extracted_archives $my_xlib_u"
+      my_xdir=$my_gentop/$my_xlib_u
+
+      func_mkdir_p "$my_xdir"
+
+      case $host in
+      *-darwin*)
+	func_verbose "Extracting $my_xabs"
+	# Do not bother doing anything if just a dry run
+	$opt_dry_run || {
+	  darwin_orig_dir=`pwd`
+	  cd $my_xdir || exit $?
+	  darwin_archive=$my_xabs
+	  darwin_curdir=`pwd`
+	  func_basename "$darwin_archive"
+	  darwin_base_archive=$func_basename_result
+	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
+	  if test -n "$darwin_arches"; then
+	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
+	    darwin_arch=
+	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
+	    for darwin_arch in  $darwin_arches; do
+	      func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch"
+	      $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive"
+	      cd "unfat-$$/$darwin_base_archive-$darwin_arch"
+	      func_extract_an_archive "`pwd`" "$darwin_base_archive"
+	      cd "$darwin_curdir"
+	      $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive"
+	    done # $darwin_arches
+            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
+	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u`
+	    darwin_file=
+	    darwin_files=
+	    for darwin_file in $darwin_filelist; do
+	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
+	      $LIPO -create -output "$darwin_file" $darwin_files
+	    done # $darwin_filelist
+	    $RM -rf unfat-$$
+	    cd "$darwin_orig_dir"
+	  else
+	    cd $darwin_orig_dir
+	    func_extract_an_archive "$my_xdir" "$my_xabs"
+	  fi # $darwin_arches
+	} # !$opt_dry_run
+	;;
+      *)
+        func_extract_an_archive "$my_xdir" "$my_xabs"
+	;;
+      esac
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
+    done
+
+    func_extract_archives_result=$my_oldobjs
+}
+
+
+# func_emit_wrapper [arg=no]
+#
+# Emit a libtool wrapper script on stdout.
+# Don't directly open a file because we may want to
+# incorporate the script contents within a cygwin/mingw
+# wrapper executable.  Must ONLY be called from within
+# func_mode_link because it depends on a number of variables
+# set therein.
+#
+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
+# variable will take.  If 'yes', then the emitted script
+# will assume that the directory where it is stored is
+# the $objdir directory.  This is a cygwin/mingw-specific
+# behavior.
+func_emit_wrapper ()
+{
+	func_emit_wrapper_arg1=${1-no}
+
+	$ECHO "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='$sed_quote_subst'
+
+# Be Bourne compatible
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='$macro_version'
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$ECHO are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    file=\"\$0\""
+
+    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
+    $ECHO "\
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+    ECHO=\"$qECHO\"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string "--lt-"
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's $0 value, followed by "$@".
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=\$0
+  shift
+  for lt_opt
+  do
+    case \"\$lt_opt\" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
+        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
+        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
+        cat \"\$lt_dump_D/\$lt_dump_F\"
+        exit 0
+      ;;
+    --lt-*)
+        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n \"\$lt_option_debug\"; then
+    echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\"
+    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+"
+  case $host in
+  # Backslashes separate directories on plain windows
+  *-*-mingw | *-*-os2* | *-cegcc*)
+    $ECHO "\
+      if test -n \"\$lt_option_debug\"; then
+        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
+        func_lt_dump_args \${1+\"\$@\"} 1>&2
+      fi
+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+    ;;
+
+  *)
+    $ECHO "\
+      if test -n \"\$lt_option_debug\"; then
+        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2
+        func_lt_dump_args \${1+\"\$@\"} 1>&2
+      fi
+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+    ;;
+  esac
+  $ECHO "\
+      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from \$@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case \" \$* \" in
+  *\\ --lt-*)
+    for lt_wr_arg
+    do
+      case \$lt_wr_arg in
+      --lt-*) ;;
+      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core \${1+\"\$@\"}
+}
+
+  # Parse options
+  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
+  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
+    # special case for '.'
+    if test \"\$thisdir\" = \".\"; then
+      thisdir=\`pwd\`
+    fi
+    # remove .libs from thisdir
+    case \"\$thisdir\" in
+    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
+    $objdir )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+	if test yes = "$fast_install"; then
+	  $ECHO "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" ||
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $MKDIR \"\$progdir\"
+    else
+      $RM \"\$progdir/\$file\"
+    fi"
+
+	  $ECHO "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+	\$ECHO \"\$relink_command_output\" >&2
+	$RM \"\$progdir/\$file\"
+	exit 1
+      fi
+    fi
+
+    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $RM \"\$progdir/\$program\";
+      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $RM \"\$progdir/\$file\"
+  fi"
+	else
+	  $ECHO "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+	fi
+
+	$ECHO "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+	# fixup the dll searchpath if we need to.
+	#
+	# Fix the DLL searchpath if we need to.  Do this before prepending
+	# to shlibpath, because on Windows, both are PATH and uninstalled
+	# libraries must come first.
+	if test -n "$dllsearchpath"; then
+	  $ECHO "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
+	# Export our shlibpath_var if we have one.
+	if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	  $ECHO "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+	fi
+
+	$ECHO "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+      func_exec_program \${1+\"\$@\"}
+    fi
+  else
+    # The program doesn't exist.
+    \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2
+    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
+    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit 1
+  fi
+fi\
+"
+}
+
+
+# func_emit_cwrapperexe_src
+# emit the source code for a wrapper executable on stdout
+# Must ONLY be called from within func_mode_link because
+# it depends on a number of variable set therein.
+func_emit_cwrapperexe_src ()
+{
+	cat <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
+
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+*/
+EOF
+	    cat <<"EOF"
+#ifdef _MSC_VER
+# define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _MSC_VER
+# include <direct.h>
+# include <process.h>
+# include <io.h>
+#else
+# include <unistd.h>
+# include <stdint.h>
+# ifdef __CYGWIN__
+#  include <io.h>
+# endif
+#endif
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
+
+/* declarations of non-ANSI functions */
+#if defined __MINGW32__
+# ifdef __STRICT_ANSI__
+int _putenv (const char *);
+# endif
+#elif defined __CYGWIN__
+# ifdef __STRICT_ANSI__
+char *realpath (const char *, char *);
+int putenv (char *);
+int setenv (const char *, const char *, int);
+# endif
+/* #elif defined other_platform || defined ... */
+#endif
+
+/* portability defines, excluding path handling macros */
+#if defined _MSC_VER
+# define setmode _setmode
+# define stat    _stat
+# define chmod   _chmod
+# define getcwd  _getcwd
+# define putenv  _putenv
+# define S_IXUSR _S_IEXEC
+#elif defined __MINGW32__
+# define setmode _setmode
+# define stat    _stat
+# define chmod   _chmod
+# define getcwd  _getcwd
+# define putenv  _putenv
+#elif defined __CYGWIN__
+# define HAVE_SETENV
+# define FOPEN_WB "wb"
+/* #elif defined other platforms ... */
+#endif
+
+#if defined PATH_MAX
+# define LT_PATHMAX PATH_MAX
+#elif defined MAXPATHLEN
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef S_IXOTH
+# define S_IXOTH 0
+#endif
+#ifndef S_IXGRP
+# define S_IXGRP 0
+#endif
+
+/* path handling portability macros */
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \
+  defined __OS2__
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# define FOPEN_WB "wb"
+# ifndef DIR_SEPARATOR_2
+#  define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+#  define PATH_SEPARATOR_2 ';'
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#ifndef FOPEN_WB
+# define FOPEN_WB "w"
+#endif
+#ifndef _O_BINARY
+# define _O_BINARY 0
+#endif
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free (stale); stale = 0; } \
+} while (0)
+
+#if defined LT_DEBUGWRAPPER
+static int lt_debug = 1;
+#else
+static int lt_debug = 0;
+#endif
+
+const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
+
+void *xmalloc (size_t num);
+char *xstrdup (const char *string);
+const char *base_name (const char *name);
+char *find_executable (const char *wrapper);
+char *chase_symlinks (const char *pathspec);
+int make_executable (const char *path);
+int check_executable (const char *path);
+char *strendzap (char *str, const char *pat);
+void lt_debugprintf (const char *file, int line, const char *fmt, ...);
+void lt_fatal (const char *file, int line, const char *message, ...);
+static const char *nonnull (const char *s);
+static const char *nonempty (const char *s);
+void lt_setenv (const char *name, const char *value);
+char *lt_extend_str (const char *orig_value, const char *add, int to_end);
+void lt_update_exe_path (const char *name, const char *value);
+void lt_update_lib_path (const char *name, const char *value);
+char **prepare_spawn (char **argv);
+void lt_dump_script (FILE *f);
+EOF
+
+	    cat <<EOF
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
+# define externally_visible volatile
+#else
+# define externally_visible __attribute__((externally_visible)) volatile
+#endif
+externally_visible const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+	    if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+              func_to_host_path "$temp_rpath"
+	      cat <<EOF
+const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
+EOF
+	    else
+	      cat <<"EOF"
+const char * LIB_PATH_VALUE   = "";
+EOF
+	    fi
+
+	    if test -n "$dllsearchpath"; then
+              func_to_host_path "$dllsearchpath:"
+	      cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
+EOF
+	    else
+	      cat <<"EOF"
+const char * EXE_PATH_VARNAME = "";
+const char * EXE_PATH_VALUE   = "";
+EOF
+	    fi
+
+	    if test yes = "$fast_install"; then
+	      cat <<EOF
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
+EOF
+	    else
+	      cat <<EOF
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
+EOF
+	    fi
+
+
+	    cat <<"EOF"
+
+#define LTWRAPPER_OPTION_PREFIX         "--lt-"
+
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
+static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int  newargc;
+  char *tmp_pathspec;
+  char *actual_cwrapper_path;
+  char *actual_cwrapper_name;
+  char *target_name;
+  char *lt_argv_zero;
+  int rval = 127;
+
+  int i;
+
+  program_name = (char *) xstrdup (base_name (argv[0]));
+  newargz = XMALLOC (char *, (size_t) argc + 1);
+
+  /* very simple arg parsing; don't want to rely on getopt
+   * also, copy all non cwrapper options to newargz, except
+   * argz[0], which is handled differently
+   */
+  newargc=0;
+  for (i = 1; i < argc; i++)
+    {
+      if (STREQ (argv[i], dumpscript_opt))
+	{
+EOF
+	    case $host in
+	      *mingw* | *cygwin* )
+		# make stdout use "unix" line endings
+		echo "          setmode(1,_O_BINARY);"
+		;;
+	      esac
+
+	    cat <<"EOF"
+	  lt_dump_script (stdout);
+	  return 0;
+	}
+      if (STREQ (argv[i], debug_opt))
+	{
+          lt_debug = 1;
+          continue;
+	}
+      if (STREQ (argv[i], ltwrapper_option_prefix))
+        {
+          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+             namespace, but it is not one of the ones we know about and
+             have already dealt with, above (inluding dump-script), then
+             report an error. Otherwise, targets might begin to believe
+             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+             namespace. The first time any user complains about this, we'll
+             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+             or a configure.ac-settable value.
+           */
+          lt_fatal (__FILE__, __LINE__,
+		    "unrecognized %s option: '%s'",
+                    ltwrapper_option_prefix, argv[i]);
+        }
+      /* otherwise ... */
+      newargz[++newargc] = xstrdup (argv[i]);
+    }
+  newargz[++newargc] = NULL;
+
+EOF
+	    cat <<EOF
+  /* The GNU banner must be the first non-error debug message */
+  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n");
+EOF
+	    cat <<"EOF"
+  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
+
+  tmp_pathspec = find_executable (argv[0]);
+  if (tmp_pathspec == NULL)
+    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (before symlink chase) at: %s\n",
+		  tmp_pathspec);
+
+  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (after symlink chase) at: %s\n",
+		  actual_cwrapper_path);
+  XFREE (tmp_pathspec);
+
+  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
+  strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+  /* wrapper name transforms */
+  strendzap (actual_cwrapper_name, ".exe");
+  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
+  XFREE (actual_cwrapper_name);
+  actual_cwrapper_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  /* target_name transforms -- use actual target program name; might have lt- prefix */
+  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
+  strendzap (target_name, ".exe");
+  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
+  XFREE (target_name);
+  target_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(main) libtool target name: %s\n",
+		  target_name);
+EOF
+
+	    cat <<EOF
+  newargz[0] =
+    XMALLOC (char, (strlen (actual_cwrapper_path) +
+		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
+  strcpy (newargz[0], actual_cwrapper_path);
+  strcat (newargz[0], "$objdir");
+  strcat (newargz[0], "/");
+EOF
+
+	    cat <<"EOF"
+  /* stop here, and copy so we don't have to do this twice */
+  tmp_pathspec = xstrdup (newargz[0]);
+
+  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
+  strcat (newargz[0], actual_cwrapper_name);
+
+  /* DO want the lt- prefix here if it exists, so use target_name */
+  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
+  XFREE (tmp_pathspec);
+  tmp_pathspec = NULL;
+EOF
+
+	    case $host_os in
+	      mingw*)
+	    cat <<"EOF"
+  {
+    char* p;
+    while ((p = strchr (newargz[0], '\\')) != NULL)
+      {
+	*p = '/';
+      }
+    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
+      {
+	*p = '/';
+      }
+  }
+EOF
+	    ;;
+	    esac
+
+	    cat <<"EOF"
+  XFREE (target_name);
+  XFREE (actual_cwrapper_path);
+  XFREE (actual_cwrapper_name);
+
+  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
+  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
+     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
+     because on Windows, both *_VARNAMEs are PATH but uninstalled
+     libraries must come first. */
+  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+
+  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
+		  nonnull (lt_argv_zero));
+  for (i = 0; i < newargc; i++)
+    {
+      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
+		      i, nonnull (newargz[i]));
+    }
+
+EOF
+
+	    case $host_os in
+	      mingw*)
+		cat <<"EOF"
+  /* execv doesn't actually work on mingw as expected on unix */
+  newargz = prepare_spawn (newargz);
+  rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+  if (rval == -1)
+    {
+      /* failed to start process */
+      lt_debugprintf (__FILE__, __LINE__,
+		      "(main) failed to launch target \"%s\": %s\n",
+		      lt_argv_zero, nonnull (strerror (errno)));
+      return 127;
+    }
+  return rval;
+EOF
+		;;
+	      *)
+		cat <<"EOF"
+  execv (lt_argv_zero, newargz);
+  return rval; /* =127, but avoids unused variable warning */
+EOF
+		;;
+	    esac
+
+	    cat <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+  void *p = (void *) malloc (num);
+  if (!p)
+    lt_fatal (__FILE__, __LINE__, "memory exhausted");
+
+  return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
+			  string) : NULL;
+}
+
+const char *
+base_name (const char *name)
+{
+  const char *base;
+
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return base;
+}
+
+int
+check_executable (const char *path)
+{
+  struct stat st;
+
+  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
+                  nonempty (path));
+  if ((!path) || (!*path))
+    return 0;
+
+  if ((stat (path, &st) >= 0)
+      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
+    return 1;
+  else
+    return 0;
+}
+
+int
+make_executable (const char *path)
+{
+  int rval = 0;
+  struct stat st;
+
+  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
+                  nonempty (path));
+  if ((!path) || (!*path))
+    return 0;
+
+  if (stat (path, &st) >= 0)
+    {
+      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
+    }
+  return rval;
+}
+
+/* Searches for the full path of the wrapper.  Returns
+   newly allocated full path name if found, NULL otherwise
+   Does not chase symlinks, even on platforms that support them.
+*/
+char *
+find_executable (const char *wrapper)
+{
+  int has_slash = 0;
+  const char *p;
+  const char *p_next;
+  /* static buffer for getcwd */
+  char tmp[LT_PATHMAX + 1];
+  size_t tmp_len;
+  char *concat_name;
+
+  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
+                  nonempty (wrapper));
+
+  if ((wrapper == NULL) || (*wrapper == '\0'))
+    return NULL;
+
+  /* Absolute path? */
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
+  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
+    {
+      concat_name = xstrdup (wrapper);
+      if (check_executable (concat_name))
+	return concat_name;
+      XFREE (concat_name);
+    }
+  else
+    {
+#endif
+      if (IS_DIR_SEPARATOR (wrapper[0]))
+	{
+	  concat_name = xstrdup (wrapper);
+	  if (check_executable (concat_name))
+	    return concat_name;
+	  XFREE (concat_name);
+	}
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
+    }
+#endif
+
+  for (p = wrapper; *p; p++)
+    if (*p == '/')
+      {
+	has_slash = 1;
+	break;
+      }
+  if (!has_slash)
+    {
+      /* no slashes; search PATH */
+      const char *path = getenv ("PATH");
+      if (path != NULL)
+	{
+	  for (p = path; *p; p = p_next)
+	    {
+	      const char *q;
+	      size_t p_len;
+	      for (q = p; *q; q++)
+		if (IS_PATH_SEPARATOR (*q))
+		  break;
+	      p_len = (size_t) (q - p);
+	      p_next = (*q == '\0' ? q : q + 1);
+	      if (p_len == 0)
+		{
+		  /* empty path: current directory */
+		  if (getcwd (tmp, LT_PATHMAX) == NULL)
+		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+                              nonnull (strerror (errno)));
+		  tmp_len = strlen (tmp);
+		  concat_name =
+		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+		  memcpy (concat_name, tmp, tmp_len);
+		  concat_name[tmp_len] = '/';
+		  strcpy (concat_name + tmp_len + 1, wrapper);
+		}
+	      else
+		{
+		  concat_name =
+		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
+		  memcpy (concat_name, p, p_len);
+		  concat_name[p_len] = '/';
+		  strcpy (concat_name + p_len + 1, wrapper);
+		}
+	      if (check_executable (concat_name))
+		return concat_name;
+	      XFREE (concat_name);
+	    }
+	}
+      /* not found in PATH; assume curdir */
+    }
+  /* Relative path | not found in path: prepend cwd */
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
+    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+              nonnull (strerror (errno)));
+  tmp_len = strlen (tmp);
+  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+  memcpy (concat_name, tmp, tmp_len);
+  concat_name[tmp_len] = '/';
+  strcpy (concat_name + tmp_len + 1, wrapper);
+
+  if (check_executable (concat_name))
+    return concat_name;
+  XFREE (concat_name);
+  return NULL;
+}
+
+char *
+chase_symlinks (const char *pathspec)
+{
+#ifndef S_ISLNK
+  return xstrdup (pathspec);
+#else
+  char buf[LT_PATHMAX];
+  struct stat s;
+  char *tmp_pathspec = xstrdup (pathspec);
+  char *p;
+  int has_symlinks = 0;
+  while (strlen (tmp_pathspec) && !has_symlinks)
+    {
+      lt_debugprintf (__FILE__, __LINE__,
+		      "checking path component for symlinks: %s\n",
+		      tmp_pathspec);
+      if (lstat (tmp_pathspec, &s) == 0)
+	{
+	  if (S_ISLNK (s.st_mode) != 0)
+	    {
+	      has_symlinks = 1;
+	      break;
+	    }
+
+	  /* search backwards for last DIR_SEPARATOR */
+	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
+	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+	    p--;
+	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+	    {
+	      /* no more DIR_SEPARATORS left */
+	      break;
+	    }
+	  *p = '\0';
+	}
+      else
+	{
+	  lt_fatal (__FILE__, __LINE__,
+		    "error accessing file \"%s\": %s",
+		    tmp_pathspec, nonnull (strerror (errno)));
+	}
+    }
+  XFREE (tmp_pathspec);
+
+  if (!has_symlinks)
+    {
+      return xstrdup (pathspec);
+    }
+
+  tmp_pathspec = realpath (pathspec, buf);
+  if (tmp_pathspec == 0)
+    {
+      lt_fatal (__FILE__, __LINE__,
+		"could not follow symlinks for %s", pathspec);
+    }
+  return xstrdup (tmp_pathspec);
+#endif
+}
+
+char *
+strendzap (char *str, const char *pat)
+{
+  size_t len, patlen;
+
+  assert (str != NULL);
+  assert (pat != NULL);
+
+  len = strlen (str);
+  patlen = strlen (pat);
+
+  if (patlen <= len)
+    {
+      str += len - patlen;
+      if (STREQ (str, pat))
+	*str = '\0';
+    }
+  return str;
+}
+
+void
+lt_debugprintf (const char *file, int line, const char *fmt, ...)
+{
+  va_list args;
+  if (lt_debug)
+    {
+      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
+      va_start (args, fmt);
+      (void) vfprintf (stderr, fmt, args);
+      va_end (args);
+    }
+}
+
+static void
+lt_error_core (int exit_status, const char *file,
+	       int line, const char *mode,
+	       const char *message, va_list ap)
+{
+  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
+  vfprintf (stderr, message, ap);
+  fprintf (stderr, ".\n");
+
+  if (exit_status >= 0)
+    exit (exit_status);
+}
+
+void
+lt_fatal (const char *file, int line, const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
+  va_end (ap);
+}
+
+static const char *
+nonnull (const char *s)
+{
+  return s ? s : "(null)";
+}
+
+static const char *
+nonempty (const char *s)
+{
+  return (s && !*s) ? "(empty)" : nonnull (s);
+}
+
+void
+lt_setenv (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_setenv) setting '%s' to '%s'\n",
+                  nonnull (name), nonnull (value));
+  {
+#ifdef HAVE_SETENV
+    /* always make a copy, for consistency with !HAVE_SETENV */
+    char *str = xstrdup (value);
+    setenv (name, str, 1);
+#else
+    size_t len = strlen (name) + 1 + strlen (value) + 1;
+    char *str = XMALLOC (char, len);
+    sprintf (str, "%s=%s", name, value);
+    if (putenv (str) != EXIT_SUCCESS)
+      {
+        XFREE (str);
+      }
+#endif
+  }
+}
+
+char *
+lt_extend_str (const char *orig_value, const char *add, int to_end)
+{
+  char *new_value;
+  if (orig_value && *orig_value)
+    {
+      size_t orig_value_len = strlen (orig_value);
+      size_t add_len = strlen (add);
+      new_value = XMALLOC (char, add_len + orig_value_len + 1);
+      if (to_end)
+        {
+          strcpy (new_value, orig_value);
+          strcpy (new_value + orig_value_len, add);
+        }
+      else
+        {
+          strcpy (new_value, add);
+          strcpy (new_value + add_len, orig_value);
+        }
+    }
+  else
+    {
+      new_value = xstrdup (add);
+    }
+  return new_value;
+}
+
+void
+lt_update_exe_path (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+                  nonnull (name), nonnull (value));
+
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      /* some systems can't cope with a ':'-terminated path #' */
+      size_t len = strlen (new_value);
+      while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+        {
+          new_value[--len] = '\0';
+        }
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
+
+void
+lt_update_lib_path (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+                  nonnull (name), nonnull (value));
+
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
+
+EOF
+	    case $host_os in
+	      mingw*)
+		cat <<"EOF"
+
+/* Prepares an argument vector before calling spawn().
+   Note that spawn() does not by itself call the command interpreter
+     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
+      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+         GetVersionEx(&v);
+         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
+      }) ? "cmd.exe" : "command.com").
+   Instead it simply concatenates the arguments, separated by ' ', and calls
+   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
+   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
+   special way:
+   - Space and tab are interpreted as delimiters. They are not treated as
+     delimiters if they are surrounded by double quotes: "...".
+   - Unescaped double quotes are removed from the input. Their only effect is
+     that within double quotes, space and tab are treated like normal
+     characters.
+   - Backslashes not followed by double quotes are not special.
+   - But 2*n+1 backslashes followed by a double quote become
+     n backslashes followed by a double quote (n >= 0):
+       \" -> "
+       \\\" -> \"
+       \\\\\" -> \\"
+ */
+#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+char **
+prepare_spawn (char **argv)
+{
+  size_t argc;
+  char **new_argv;
+  size_t i;
+
+  /* Count number of arguments.  */
+  for (argc = 0; argv[argc] != NULL; argc++)
+    ;
+
+  /* Allocate new argument vector.  */
+  new_argv = XMALLOC (char *, argc + 1);
+
+  /* Put quoted arguments into the new argument vector.  */
+  for (i = 0; i < argc; i++)
+    {
+      const char *string = argv[i];
+
+      if (string[0] == '\0')
+	new_argv[i] = xstrdup ("\"\"");
+      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
+	{
+	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
+	  size_t length;
+	  unsigned int backslashes;
+	  const char *s;
+	  char *quoted_string;
+	  char *p;
+
+	  length = 0;
+	  backslashes = 0;
+	  if (quote_around)
+	    length++;
+	  for (s = string; *s != '\0'; s++)
+	    {
+	      char c = *s;
+	      if (c == '"')
+		length += backslashes + 1;
+	      length++;
+	      if (c == '\\')
+		backslashes++;
+	      else
+		backslashes = 0;
+	    }
+	  if (quote_around)
+	    length += backslashes + 1;
+
+	  quoted_string = XMALLOC (char, length + 1);
+
+	  p = quoted_string;
+	  backslashes = 0;
+	  if (quote_around)
+	    *p++ = '"';
+	  for (s = string; *s != '\0'; s++)
+	    {
+	      char c = *s;
+	      if (c == '"')
+		{
+		  unsigned int j;
+		  for (j = backslashes + 1; j > 0; j--)
+		    *p++ = '\\';
+		}
+	      *p++ = c;
+	      if (c == '\\')
+		backslashes++;
+	      else
+		backslashes = 0;
+	    }
+	  if (quote_around)
+	    {
+	      unsigned int j;
+	      for (j = backslashes; j > 0; j--)
+		*p++ = '\\';
+	      *p++ = '"';
+	    }
+	  *p = '\0';
+
+	  new_argv[i] = quoted_string;
+	}
+      else
+	new_argv[i] = (char *) string;
+    }
+  new_argv[argc] = NULL;
+
+  return new_argv;
+}
+EOF
+		;;
+	    esac
+
+            cat <<"EOF"
+void lt_dump_script (FILE* f)
+{
+EOF
+	    func_emit_wrapper yes |
+	      $SED -n -e '
+s/^\(.\{79\}\)\(..*\)/\1\
+\2/
+h
+s/\([\\"]\)/\\\1/g
+s/$/\\n/
+s/\([^\n]*\).*/  fputs ("\1", f);/p
+g
+D'
+            cat <<"EOF"
+}
+EOF
+}
+# end: func_emit_cwrapperexe_src
+
+# func_win32_import_lib_p ARG
+# True if ARG is an import lib, as indicated by $file_magic_cmd
+func_win32_import_lib_p ()
+{
+    $debug_cmd
+
+    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
+    *import*) : ;;
+    *) false ;;
+    esac
+}
+
+# func_suncc_cstd_abi
+# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!!
+# Several compiler flags select an ABI that is incompatible with the
+# Cstd library. Avoid specifying it if any are in CXXFLAGS.
+func_suncc_cstd_abi ()
+{
+    $debug_cmd
+
+    case " $compile_command " in
+    *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*)
+      suncc_use_cstd_abi=no
+      ;;
+    *)
+      suncc_use_cstd_abi=yes
+      ;;
+    esac
+}
+
+# func_mode_link arg...
+func_mode_link ()
+{
+    $debug_cmd
+
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # what system we are compiling for in order to pass an extra
+      # flag for every libtool invocation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll that has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args=$nonopt
+    base_compile="$nonopt $@"
+    compile_command=$nonopt
+    finalize_command=$nonopt
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+    inst_prefix_dir=
+    new_inherited_linker_flags=
+
+    avoid_version=no
+    bindir=
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    os2dllname=
+    non_pic_objects=
+    precious_files_regex=
+    prefer_static_libs=no
+    preload=false
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+    vinfo_number=no
+    weak_libs=
+    single_module=$wl-single_module
+    func_infer_tag $base_compile
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -shared)
+	test yes != "$build_libtool_libs" \
+	  && func_fatal_configuration "cannot build a shared library"
+	build_old_libs=no
+	break
+	;;
+      -all-static | -static | -static-libtool-libs)
+	case $arg in
+	-all-static)
+	  if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then
+	    func_warning "complete static linking is impossible in this configuration"
+	  fi
+	  if test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=yes
+	  ;;
+	-static)
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=built
+	  ;;
+	-static-libtool-libs)
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=yes
+	  ;;
+	esac
+	build_libtool_libs=no
+	build_old_libs=yes
+	break
+	;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test "$#" -gt 0; do
+      arg=$1
+      shift
+      func_quote_for_eval "$arg"
+      qarg=$func_quote_for_eval_unquoted_result
+      func_append libtool_args " $func_quote_for_eval_result"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+	case $prev in
+	output)
+	  func_append compile_command " @OUTPUT@"
+	  func_append finalize_command " @OUTPUT@"
+	  ;;
+	esac
+
+	case $prev in
+	bindir)
+	  bindir=$arg
+	  prev=
+	  continue
+	  ;;
+	dlfiles|dlprefiles)
+	  $preload || {
+	    # Add the symbol object into the linking commands.
+	    func_append compile_command " @SYMFILE@"
+	    func_append finalize_command " @SYMFILE@"
+	    preload=:
+	  }
+	  case $arg in
+	  *.la | *.lo) ;;  # We handle these cases below.
+	  force)
+	    if test no = "$dlself"; then
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  self)
+	    if test dlprefiles = "$prev"; then
+	      dlself=yes
+	    elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then
+	      dlself=yes
+	    else
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  *)
+	    if test dlfiles = "$prev"; then
+	      func_append dlfiles " $arg"
+	    else
+	      func_append dlprefiles " $arg"
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  esac
+	  ;;
+	expsyms)
+	  export_symbols=$arg
+	  test -f "$arg" \
+	    || func_fatal_error "symbol file '$arg' does not exist"
+	  prev=
+	  continue
+	  ;;
+	expsyms_regex)
+	  export_symbols_regex=$arg
+	  prev=
+	  continue
+	  ;;
+	framework)
+	  case $host in
+	    *-*-darwin*)
+	      case "$deplibs " in
+		*" $qarg.ltframework "*) ;;
+		*) func_append deplibs " $qarg.ltframework" # this is fixed later
+		   ;;
+	      esac
+	      ;;
+	  esac
+	  prev=
+	  continue
+	  ;;
+	inst_prefix)
+	  inst_prefix_dir=$arg
+	  prev=
+	  continue
+	  ;;
+	mllvm)
+	  # Clang does not use LLVM to link, so we can simply discard any
+	  # '-mllvm $arg' options when doing the link step.
+	  prev=
+	  continue
+	  ;;
+	objectlist)
+	  if test -f "$arg"; then
+	    save_arg=$arg
+	    moreargs=
+	    for fil in `cat "$save_arg"`
+	    do
+#	      func_append moreargs " $fil"
+	      arg=$fil
+	      # A libtool-controlled object.
+
+	      # Check to see that this really is a libtool object.
+	      if func_lalib_unsafe_p "$arg"; then
+		pic_object=
+		non_pic_object=
+
+		# Read the .lo file
+		func_source "$arg"
+
+		if test -z "$pic_object" ||
+		   test -z "$non_pic_object" ||
+		   test none = "$pic_object" &&
+		   test none = "$non_pic_object"; then
+		  func_fatal_error "cannot find name of object for '$arg'"
+		fi
+
+		# Extract subdirectory from the argument.
+		func_dirname "$arg" "/" ""
+		xdir=$func_dirname_result
+
+		if test none != "$pic_object"; then
+		  # Prepend the subdirectory the object is found in.
+		  pic_object=$xdir$pic_object
+
+		  if test dlfiles = "$prev"; then
+		    if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
+		      func_append dlfiles " $pic_object"
+		      prev=
+		      continue
+		    else
+		      # If libtool objects are unsupported, then we need to preload.
+		      prev=dlprefiles
+		    fi
+		  fi
+
+		  # CHECK ME:  I think I busted this.  -Ossama
+		  if test dlprefiles = "$prev"; then
+		    # Preload the old-style object.
+		    func_append dlprefiles " $pic_object"
+		    prev=
+		  fi
+
+		  # A PIC object.
+		  func_append libobjs " $pic_object"
+		  arg=$pic_object
+		fi
+
+		# Non-PIC object.
+		if test none != "$non_pic_object"; then
+		  # Prepend the subdirectory the object is found in.
+		  non_pic_object=$xdir$non_pic_object
+
+		  # A standard non-PIC object
+		  func_append non_pic_objects " $non_pic_object"
+		  if test -z "$pic_object" || test none = "$pic_object"; then
+		    arg=$non_pic_object
+		  fi
+		else
+		  # If the PIC object exists, use it instead.
+		  # $xdir was prepended to $pic_object above.
+		  non_pic_object=$pic_object
+		  func_append non_pic_objects " $non_pic_object"
+		fi
+	      else
+		# Only an error if not doing a dry-run.
+		if $opt_dry_run; then
+		  # Extract subdirectory from the argument.
+		  func_dirname "$arg" "/" ""
+		  xdir=$func_dirname_result
+
+		  func_lo2o "$arg"
+		  pic_object=$xdir$objdir/$func_lo2o_result
+		  non_pic_object=$xdir$func_lo2o_result
+		  func_append libobjs " $pic_object"
+		  func_append non_pic_objects " $non_pic_object"
+	        else
+		  func_fatal_error "'$arg' is not a valid libtool object"
+		fi
+	      fi
+	    done
+	  else
+	    func_fatal_error "link input file '$arg' does not exist"
+	  fi
+	  arg=$save_arg
+	  prev=
+	  continue
+	  ;;
+	os2dllname)
+	  os2dllname=$arg
+	  prev=
+	  continue
+	  ;;
+	precious_regex)
+	  precious_files_regex=$arg
+	  prev=
+	  continue
+	  ;;
+	release)
+	  release=-$arg
+	  prev=
+	  continue
+	  ;;
+	rpath | xrpath)
+	  # We need an absolute path.
+	  case $arg in
+	  [\\/]* | [A-Za-z]:[\\/]*) ;;
+	  *)
+	    func_fatal_error "only absolute run-paths are allowed"
+	    ;;
+	  esac
+	  if test rpath = "$prev"; then
+	    case "$rpath " in
+	    *" $arg "*) ;;
+	    *) func_append rpath " $arg" ;;
+	    esac
+	  else
+	    case "$xrpath " in
+	    *" $arg "*) ;;
+	    *) func_append xrpath " $arg" ;;
+	    esac
+	  fi
+	  prev=
+	  continue
+	  ;;
+	shrext)
+	  shrext_cmds=$arg
+	  prev=
+	  continue
+	  ;;
+	weak)
+	  func_append weak_libs " $arg"
+	  prev=
+	  continue
+	  ;;
+	xcclinker)
+	  func_append linker_flags " $qarg"
+	  func_append compiler_flags " $qarg"
+	  prev=
+	  func_append compile_command " $qarg"
+	  func_append finalize_command " $qarg"
+	  continue
+	  ;;
+	xcompiler)
+	  func_append compiler_flags " $qarg"
+	  prev=
+	  func_append compile_command " $qarg"
+	  func_append finalize_command " $qarg"
+	  continue
+	  ;;
+	xlinker)
+	  func_append linker_flags " $qarg"
+	  func_append compiler_flags " $wl$qarg"
+	  prev=
+	  func_append compile_command " $wl$qarg"
+	  func_append finalize_command " $wl$qarg"
+	  continue
+	  ;;
+	*)
+	  eval "$prev=\"\$arg\""
+	  prev=
+	  continue
+	  ;;
+	esac
+      fi # test -n "$prev"
+
+      prevarg=$arg
+
+      case $arg in
+      -all-static)
+	if test -n "$link_static_flag"; then
+	  # See comment for -static flag below, for more details.
+	  func_append compile_command " $link_static_flag"
+	  func_append finalize_command " $link_static_flag"
+	fi
+	continue
+	;;
+
+      -allow-undefined)
+	# FIXME: remove this flag sometime in the future.
+	func_fatal_error "'-allow-undefined' must not be used because it is the default"
+	;;
+
+      -avoid-version)
+	avoid_version=yes
+	continue
+	;;
+
+      -bindir)
+	prev=bindir
+	continue
+	;;
+
+      -dlopen)
+	prev=dlfiles
+	continue
+	;;
+
+      -dlpreopen)
+	prev=dlprefiles
+	continue
+	;;
+
+      -export-dynamic)
+	export_dynamic=yes
+	continue
+	;;
+
+      -export-symbols | -export-symbols-regex)
+	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	  func_fatal_error "more than one -exported-symbols argument is not allowed"
+	fi
+	if test X-export-symbols = "X$arg"; then
+	  prev=expsyms
+	else
+	  prev=expsyms_regex
+	fi
+	continue
+	;;
+
+      -framework)
+	prev=framework
+	continue
+	;;
+
+      -inst-prefix-dir)
+	prev=inst_prefix
+	continue
+	;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+	case $with_gcc/$host in
+	no/*-*-irix* | /*-*-irix*)
+	  func_append compile_command " $arg"
+	  func_append finalize_command " $arg"
+	  ;;
+	esac
+	continue
+	;;
+
+      -L*)
+	func_stripname "-L" '' "$arg"
+	if test -z "$func_stripname_result"; then
+	  if test "$#" -gt 0; then
+	    func_fatal_error "require no space between '-L' and '$1'"
+	  else
+	    func_fatal_error "need path for '-L' option"
+	  fi
+	fi
+	func_resolve_sysroot "$func_stripname_result"
+	dir=$func_resolve_sysroot_result
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  absdir=`cd "$dir" && pwd`
+	  test -z "$absdir" && \
+	    func_fatal_error "cannot determine absolute directory name of '$dir'"
+	  dir=$absdir
+	  ;;
+	esac
+	case "$deplibs " in
+	*" -L$dir "* | *" $arg "*)
+	  # Will only happen for absolute or sysroot arguments
+	  ;;
+	*)
+	  # Preserve sysroot, but never include relative directories
+	  case $dir in
+	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
+	    *) func_append deplibs " -L$dir" ;;
+	  esac
+	  func_append lib_search_path " $dir"
+	  ;;
+	esac
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
+	  case :$dllsearchpath: in
+	  *":$dir:"*) ;;
+	  ::) dllsearchpath=$dir;;
+	  *) func_append dllsearchpath ":$dir";;
+	  esac
+	  case :$dllsearchpath: in
+	  *":$testbindir:"*) ;;
+	  ::) dllsearchpath=$testbindir;;
+	  *) func_append dllsearchpath ":$testbindir";;
+	  esac
+	  ;;
+	esac
+	continue
+	;;
+
+      -l*)
+	if test X-lc = "X$arg" || test X-lm = "X$arg"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
+	    # These systems don't actually have a C or math library (as such)
+	    continue
+	    ;;
+	  *-*-os2*)
+	    # These systems don't actually have a C library (as such)
+	    test X-lc = "X$arg" && continue
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test X-lc = "X$arg" && continue
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C and math libraries are in the System framework
+	    func_append deplibs " System.ltframework"
+	    continue
+	    ;;
+	  *-*-sco3.2v5* | *-*-sco5v6*)
+	    # Causes problems with __ctype
+	    test X-lc = "X$arg" && continue
+	    ;;
+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+	    # Compiler inserts libc in the correct place for threads to work
+	    test X-lc = "X$arg" && continue
+	    ;;
+	  esac
+	elif test X-lc_r = "X$arg"; then
+	 case $host in
+	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
+	   # Do not include libc_r directly, use -pthread flag.
+	   continue
+	   ;;
+	 esac
+	fi
+	func_append deplibs " $arg"
+	continue
+	;;
+
+      -mllvm)
+	prev=mllvm
+	continue
+	;;
+
+      -module)
+	module=yes
+	continue
+	;;
+
+      # Tru64 UNIX uses -model [arg] to determine the layout of C++
+      # classes, name mangling, and exception handling.
+      # Darwin uses the -arch flag to determine output architecture.
+      -model|-arch|-isysroot|--sysroot)
+	func_append compiler_flags " $arg"
+	func_append compile_command " $arg"
+	func_append finalize_command " $arg"
+	prev=xcompiler
+	continue
+	;;
+
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+	func_append compiler_flags " $arg"
+	func_append compile_command " $arg"
+	func_append finalize_command " $arg"
+	case "$new_inherited_linker_flags " in
+	    *" $arg "*) ;;
+	    * ) func_append new_inherited_linker_flags " $arg" ;;
+	esac
+	continue
+	;;
+
+      -multi_module)
+	single_module=$wl-multi_module
+	continue
+	;;
+
+      -no-fast-install)
+	fast_install=no
+	continue
+	;;
+
+      -no-install)
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
+	  # The PATH hackery in wrapper scripts is required on Windows
+	  # and Darwin in order for the loader to find any dlls it needs.
+	  func_warning "'-no-install' is ignored for $host"
+	  func_warning "assuming '-no-fast-install' instead"
+	  fast_install=no
+	  ;;
+	*) no_install=yes ;;
+	esac
+	continue
+	;;
+
+      -no-undefined)
+	allow_undefined=no
+	continue
+	;;
+
+      -objectlist)
+	prev=objectlist
+	continue
+	;;
+
+      -os2dllname)
+	prev=os2dllname
+	continue
+	;;
+
+      -o) prev=output ;;
+
+      -precious-files-regex)
+	prev=precious_regex
+	continue
+	;;
+
+      -release)
+	prev=release
+	continue
+	;;
+
+      -rpath)
+	prev=rpath
+	continue
+	;;
+
+      -R)
+	prev=xrpath
+	continue
+	;;
+
+      -R*)
+	func_stripname '-R' '' "$arg"
+	dir=$func_stripname_result
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	=*)
+	  func_stripname '=' '' "$dir"
+	  dir=$lt_sysroot$func_stripname_result
+	  ;;
+	*)
+	  func_fatal_error "only absolute run-paths are allowed"
+	  ;;
+	esac
+	case "$xrpath " in
+	*" $dir "*) ;;
+	*) func_append xrpath " $dir" ;;
+	esac
+	continue
+	;;
+
+      -shared)
+	# The effects of -shared are defined in a previous loop.
+	continue
+	;;
+
+      -shrext)
+	prev=shrext
+	continue
+	;;
+
+      -static | -static-libtool-libs)
+	# The effects of -static are defined in a previous loop.
+	# We used to do the same as -all-static on platforms that
+	# didn't have a PIC flag, but the assumption that the effects
+	# would be equivalent was wrong.  It would break on at least
+	# Digital Unix and AIX.
+	continue
+	;;
+
+      -thread-safe)
+	thread_safe=yes
+	continue
+	;;
+
+      -version-info)
+	prev=vinfo
+	continue
+	;;
+
+      -version-number)
+	prev=vinfo
+	vinfo_number=yes
+	continue
+	;;
+
+      -weak)
+        prev=weak
+	continue
+	;;
+
+      -Wc,*)
+	func_stripname '-Wc,' '' "$arg"
+	args=$func_stripname_result
+	arg=
+	save_ifs=$IFS; IFS=,
+	for flag in $args; do
+	  IFS=$save_ifs
+          func_quote_for_eval "$flag"
+	  func_append arg " $func_quote_for_eval_result"
+	  func_append compiler_flags " $func_quote_for_eval_result"
+	done
+	IFS=$save_ifs
+	func_stripname ' ' '' "$arg"
+	arg=$func_stripname_result
+	;;
+
+      -Wl,*)
+	func_stripname '-Wl,' '' "$arg"
+	args=$func_stripname_result
+	arg=
+	save_ifs=$IFS; IFS=,
+	for flag in $args; do
+	  IFS=$save_ifs
+          func_quote_for_eval "$flag"
+	  func_append arg " $wl$func_quote_for_eval_result"
+	  func_append compiler_flags " $wl$func_quote_for_eval_result"
+	  func_append linker_flags " $func_quote_for_eval_result"
+	done
+	IFS=$save_ifs
+	func_stripname ' ' '' "$arg"
+	arg=$func_stripname_result
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Xlinker)
+	prev=xlinker
+	continue
+	;;
+
+      -XCClinker)
+	prev=xcclinker
+	continue
+	;;
+
+      # -msg_* for osf cc
+      -msg_*)
+	func_quote_for_eval "$arg"
+	arg=$func_quote_for_eval_result
+	;;
+
+      # Flags to be passed through unchanged, with rationale:
+      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
+      # -r[0-9][0-9]*        specify processor for the SGI compiler
+      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
+      # +DA*, +DD*           enable 64-bit mode for the HP compiler
+      # -q*                  compiler args for the IBM compiler
+      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
+      # -F/path              path to uninstalled frameworks, gcc on darwin
+      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
+      # -fstack-protector*   stack protector flags for GCC
+      # @file                GCC response files
+      # -tp=*                Portland pgcc target processor selection
+      # --sysroot=*          for sysroot support
+      # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+      # -specs=*             GCC specs files
+      # -stdlib=*            select c++ std lib with clang
+      # -fsanitize=*         Clang/GCC memory and address sanitizer
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
+      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
+      -specs=*|-fsanitize=*)
+        func_quote_for_eval "$arg"
+	arg=$func_quote_for_eval_result
+        func_append compile_command " $arg"
+        func_append finalize_command " $arg"
+        func_append compiler_flags " $arg"
+        continue
+        ;;
+
+      -Z*)
+        if test os2 = "`expr $host : '.*\(os2\)'`"; then
+          # OS/2 uses -Zxxx to specify OS/2-specific options
+	  compiler_flags="$compiler_flags $arg"
+	  func_append compile_command " $arg"
+	  func_append finalize_command " $arg"
+	  case $arg in
+	  -Zlinker | -Zstack)
+	    prev=xcompiler
+	    ;;
+	  esac
+	  continue
+        else
+	  # Otherwise treat like 'Some other compiler flag' below
+	  func_quote_for_eval "$arg"
+	  arg=$func_quote_for_eval_result
+        fi
+	;;
+
+      # Some other compiler flag.
+      -* | +*)
+        func_quote_for_eval "$arg"
+	arg=$func_quote_for_eval_result
+	;;
+
+      *.$objext)
+	# A standard object.
+	func_append objs " $arg"
+	;;
+
+      *.lo)
+	# A libtool-controlled object.
+
+	# Check to see that this really is a libtool object.
+	if func_lalib_unsafe_p "$arg"; then
+	  pic_object=
+	  non_pic_object=
+
+	  # Read the .lo file
+	  func_source "$arg"
+
+	  if test -z "$pic_object" ||
+	     test -z "$non_pic_object" ||
+	     test none = "$pic_object" &&
+	     test none = "$non_pic_object"; then
+	    func_fatal_error "cannot find name of object for '$arg'"
+	  fi
+
+	  # Extract subdirectory from the argument.
+	  func_dirname "$arg" "/" ""
+	  xdir=$func_dirname_result
+
+	  test none = "$pic_object" || {
+	    # Prepend the subdirectory the object is found in.
+	    pic_object=$xdir$pic_object
+
+	    if test dlfiles = "$prev"; then
+	      if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
+		func_append dlfiles " $pic_object"
+		prev=
+		continue
+	      else
+		# If libtool objects are unsupported, then we need to preload.
+		prev=dlprefiles
+	      fi
+	    fi
+
+	    # CHECK ME:  I think I busted this.  -Ossama
+	    if test dlprefiles = "$prev"; then
+	      # Preload the old-style object.
+	      func_append dlprefiles " $pic_object"
+	      prev=
+	    fi
+
+	    # A PIC object.
+	    func_append libobjs " $pic_object"
+	    arg=$pic_object
+	  }
+
+	  # Non-PIC object.
+	  if test none != "$non_pic_object"; then
+	    # Prepend the subdirectory the object is found in.
+	    non_pic_object=$xdir$non_pic_object
+
+	    # A standard non-PIC object
+	    func_append non_pic_objects " $non_pic_object"
+	    if test -z "$pic_object" || test none = "$pic_object"; then
+	      arg=$non_pic_object
+	    fi
+	  else
+	    # If the PIC object exists, use it instead.
+	    # $xdir was prepended to $pic_object above.
+	    non_pic_object=$pic_object
+	    func_append non_pic_objects " $non_pic_object"
+	  fi
+	else
+	  # Only an error if not doing a dry-run.
+	  if $opt_dry_run; then
+	    # Extract subdirectory from the argument.
+	    func_dirname "$arg" "/" ""
+	    xdir=$func_dirname_result
+
+	    func_lo2o "$arg"
+	    pic_object=$xdir$objdir/$func_lo2o_result
+	    non_pic_object=$xdir$func_lo2o_result
+	    func_append libobjs " $pic_object"
+	    func_append non_pic_objects " $non_pic_object"
+	  else
+	    func_fatal_error "'$arg' is not a valid libtool object"
+	  fi
+	fi
+	;;
+
+      *.$libext)
+	# An archive.
+	func_append deplibs " $arg"
+	func_append old_deplibs " $arg"
+	continue
+	;;
+
+      *.la)
+	# A libtool-controlled library.
+
+	func_resolve_sysroot "$arg"
+	if test dlfiles = "$prev"; then
+	  # This library was specified with -dlopen.
+	  func_append dlfiles " $func_resolve_sysroot_result"
+	  prev=
+	elif test dlprefiles = "$prev"; then
+	  # The library was specified with -dlpreopen.
+	  func_append dlprefiles " $func_resolve_sysroot_result"
+	  prev=
+	else
+	  func_append deplibs " $func_resolve_sysroot_result"
+	fi
+	continue
+	;;
+
+      # Some other compiler argument.
+      *)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	func_quote_for_eval "$arg"
+	arg=$func_quote_for_eval_result
+	;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+	func_append compile_command " $arg"
+	func_append finalize_command " $arg"
+      fi
+    done # argument parsing loop
+
+    test -n "$prev" && \
+      func_fatal_help "the '$prevarg' option requires an argument"
+
+    if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      func_append compile_command " $arg"
+      func_append finalize_command " $arg"
+    fi
+
+    oldlibs=
+    # calculate the name of the file, without its directory
+    func_basename "$output"
+    outputname=$func_basename_result
+    libobjs_save=$libobjs
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    # Definition is injected by LT_CONFIG during libtool generation.
+    func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH"
+
+    func_dirname "$output" "/" ""
+    output_objdir=$func_dirname_result$objdir
+    func_to_tool_file "$output_objdir/"
+    tool_output_objdir=$func_to_tool_file_result
+    # Create the object directory.
+    func_mkdir_p "$output_objdir"
+
+    # Determine the type of output
+    case $output in
+    "")
+      func_fatal_help "you must specify an output file"
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    specialdeplibs=
+
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if $opt_preserve_dup_deps; then
+	case "$libs " in
+	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
+	esac
+      fi
+      func_append libs " $deplib"
+    done
+
+    if test lib = "$linkmode"; then
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+      # Compute libraries that are listed more than once in $predeps
+      # $postdeps and mark them as special (i.e., whose duplicates are
+      # not to be eliminated).
+      pre_post_deps=
+      if $opt_duplicate_compiler_generated_deps; then
+	for pre_post_dep in $predeps $postdeps; do
+	  case "$pre_post_deps " in
+	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
+	  esac
+	  func_append pre_post_deps " $pre_post_dep"
+	done
+      fi
+      pre_post_deps=
+    fi
+
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+
+    case $linkmode in
+    lib)
+	passes="conv dlpreopen link"
+	for file in $dlfiles $dlprefiles; do
+	  case $file in
+	  *.la) ;;
+	  *)
+	    func_fatal_help "libraries can '-dlopen' only libtool libraries: $file"
+	    ;;
+	  esac
+	done
+	;;
+    prog)
+	compile_deplibs=
+	finalize_deplibs=
+	alldeplibs=false
+	newdlfiles=
+	newdlprefiles=
+	passes="conv scan dlopen dlpreopen link"
+	;;
+    *)  passes="conv"
+	;;
+    esac
+
+    for pass in $passes; do
+      # The preopen pass in lib mode reverses $deplibs; put it back here
+      # so that -L comes before libs that need it for instance...
+      if test lib,link = "$linkmode,$pass"; then
+	## FIXME: Find the place where the list is rebuilt in the wrong
+	##        order, and fix it there properly
+        tmp_deplibs=
+	for deplib in $deplibs; do
+	  tmp_deplibs="$deplib $tmp_deplibs"
+	done
+	deplibs=$tmp_deplibs
+      fi
+
+      if test lib,link = "$linkmode,$pass" ||
+	 test prog,scan = "$linkmode,$pass"; then
+	libs=$deplibs
+	deplibs=
+      fi
+      if test prog = "$linkmode"; then
+	case $pass in
+	dlopen) libs=$dlfiles ;;
+	dlpreopen) libs=$dlprefiles ;;
+	link)
+	  libs="$deplibs %DEPLIBS%"
+	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+	  ;;
+	esac
+      fi
+      if test lib,dlpreopen = "$linkmode,$pass"; then
+	# Collect and forward deplibs of preopened libtool libs
+	for lib in $dlprefiles; do
+	  # Ignore non-libtool-libs
+	  dependency_libs=
+	  func_resolve_sysroot "$lib"
+	  case $lib in
+	  *.la)	func_source "$func_resolve_sysroot_result" ;;
+	  esac
+
+	  # Collect preopened libtool deplibs, except any this library
+	  # has declared as weak libs
+	  for deplib in $dependency_libs; do
+	    func_basename "$deplib"
+            deplib_base=$func_basename_result
+	    case " $weak_libs " in
+	    *" $deplib_base "*) ;;
+	    *) func_append deplibs " $deplib" ;;
+	    esac
+	  done
+	done
+	libs=$dlprefiles
+      fi
+      if test dlopen = "$pass"; then
+	# Collect dlpreopened libraries
+	save_deplibs=$deplibs
+	deplibs=
+      fi
+
+      for deplib in $libs; do
+	lib=
+	found=false
+	case $deplib in
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+	  if test prog,link = "$linkmode,$pass"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    func_append compiler_flags " $deplib"
+	    if test lib = "$linkmode"; then
+		case "$new_inherited_linker_flags " in
+		    *" $deplib "*) ;;
+		    * ) func_append new_inherited_linker_flags " $deplib" ;;
+		esac
+	    fi
+	  fi
+	  continue
+	  ;;
+	-l*)
+	  if test lib != "$linkmode" && test prog != "$linkmode"; then
+	    func_warning "'-l' is ignored for archives/objects"
+	    continue
+	  fi
+	  func_stripname '-l' '' "$deplib"
+	  name=$func_stripname_result
+	  if test lib = "$linkmode"; then
+	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
+	  else
+	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
+	  fi
+	  for searchdir in $searchdirs; do
+	    for search_ext in .la $std_shrext .so .a; do
+	      # Search the libtool library
+	      lib=$searchdir/lib$name$search_ext
+	      if test -f "$lib"; then
+		if test .la = "$search_ext"; then
+		  found=:
+		else
+		  found=false
+		fi
+		break 2
+	      fi
+	    done
+	  done
+	  if $found; then
+	    # deplib is a libtool library
+	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+	    # We need to do some special things here, and not later.
+	    if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+	      case " $predeps $postdeps " in
+	      *" $deplib "*)
+		if func_lalib_p "$lib"; then
+		  library_names=
+		  old_library=
+		  func_source "$lib"
+		  for l in $old_library $library_names; do
+		    ll=$l
+		  done
+		  if test "X$ll" = "X$old_library"; then # only static version available
+		    found=false
+		    func_dirname "$lib" "" "."
+		    ladir=$func_dirname_result
+		    lib=$ladir/$old_library
+		    if test prog,link = "$linkmode,$pass"; then
+		      compile_deplibs="$deplib $compile_deplibs"
+		      finalize_deplibs="$deplib $finalize_deplibs"
+		    else
+		      deplibs="$deplib $deplibs"
+		      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
+		    fi
+		    continue
+		  fi
+		fi
+		;;
+	      *) ;;
+	      esac
+	    fi
+	  else
+	    # deplib doesn't seem to be a libtool library
+	    if test prog,link = "$linkmode,$pass"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
+	  fi
+	  ;; # -l
+	*.ltframework)
+	  if test prog,link = "$linkmode,$pass"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    deplibs="$deplib $deplibs"
+	    if test lib = "$linkmode"; then
+		case "$new_inherited_linker_flags " in
+		    *" $deplib "*) ;;
+		    * ) func_append new_inherited_linker_flags " $deplib" ;;
+		esac
+	    fi
+	  fi
+	  continue
+	  ;;
+	-L*)
+	  case $linkmode in
+	  lib)
+	    deplibs="$deplib $deplibs"
+	    test conv = "$pass" && continue
+	    newdependency_libs="$deplib $newdependency_libs"
+	    func_stripname '-L' '' "$deplib"
+	    func_resolve_sysroot "$func_stripname_result"
+	    func_append newlib_search_path " $func_resolve_sysroot_result"
+	    ;;
+	  prog)
+	    if test conv = "$pass"; then
+	      deplibs="$deplib $deplibs"
+	      continue
+	    fi
+	    if test scan = "$pass"; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    func_stripname '-L' '' "$deplib"
+	    func_resolve_sysroot "$func_stripname_result"
+	    func_append newlib_search_path " $func_resolve_sysroot_result"
+	    ;;
+	  *)
+	    func_warning "'-L' is ignored for archives/objects"
+	    ;;
+	  esac # linkmode
+	  continue
+	  ;; # -L
+	-R*)
+	  if test link = "$pass"; then
+	    func_stripname '-R' '' "$deplib"
+	    func_resolve_sysroot "$func_stripname_result"
+	    dir=$func_resolve_sysroot_result
+	    # Make sure the xrpath contains only unique directories.
+	    case "$xrpath " in
+	    *" $dir "*) ;;
+	    *) func_append xrpath " $dir" ;;
+	    esac
+	  fi
+	  deplibs="$deplib $deplibs"
+	  continue
+	  ;;
+	*.la)
+	  func_resolve_sysroot "$deplib"
+	  lib=$func_resolve_sysroot_result
+	  ;;
+	*.$libext)
+	  if test conv = "$pass"; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  case $linkmode in
+	  lib)
+	    # Linking convenience modules into shared libraries is allowed,
+	    # but linking other static libraries is non-portable.
+	    case " $dlpreconveniencelibs " in
+	    *" $deplib "*) ;;
+	    *)
+	      valid_a_lib=false
+	      case $deplibs_check_method in
+		match_pattern*)
+		  set dummy $deplibs_check_method; shift
+		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
+		    | $EGREP "$match_pattern_regex" > /dev/null; then
+		    valid_a_lib=:
+		  fi
+		;;
+		pass_all)
+		  valid_a_lib=:
+		;;
+	      esac
+	      if $valid_a_lib; then
+		echo
+		$ECHO "*** Warning: Linking the shared library $output against the"
+		$ECHO "*** static library $deplib is not portable!"
+		deplibs="$deplib $deplibs"
+	      else
+		echo
+		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because the file extensions .$libext of this argument makes me believe"
+		echo "*** that it is just a static archive that I should not use here."
+	      fi
+	      ;;
+	    esac
+	    continue
+	    ;;
+	  prog)
+	    if test link != "$pass"; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    continue
+	    ;;
+	  esac # linkmode
+	  ;; # *.$libext
+	*.lo | *.$objext)
+	  if test conv = "$pass"; then
+	    deplibs="$deplib $deplibs"
+	  elif test prog = "$linkmode"; then
+	    if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then
+	      # If there is no dlopen support or we're linking statically,
+	      # we need to preload.
+	      func_append newdlprefiles " $deplib"
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      func_append newdlfiles " $deplib"
+	    fi
+	  fi
+	  continue
+	  ;;
+	%DEPLIBS%)
+	  alldeplibs=:
+	  continue
+	  ;;
+	esac # case $deplib
+
+	$found || test -f "$lib" \
+	  || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'"
+
+	# Check to see that this really is a libtool archive.
+	func_lalib_unsafe_p "$lib" \
+	  || func_fatal_error "'$lib' is not a valid libtool archive"
+
+	func_dirname "$lib" "" "."
+	ladir=$func_dirname_result
+
+	dlname=
+	dlopen=
+	dlpreopen=
+	libdir=
+	library_names=
+	old_library=
+	inherited_linker_flags=
+	# If the library was installed with an old release of libtool,
+	# it will not redefine variables installed, or shouldnotlink
+	installed=yes
+	shouldnotlink=no
+	avoidtemprpath=
+
+
+	# Read the .la file
+	func_source "$lib"
+
+	# Convert "-framework foo" to "foo.ltframework"
+	if test -n "$inherited_linker_flags"; then
+	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
+	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+	    case " $new_inherited_linker_flags " in
+	      *" $tmp_inherited_linker_flag "*) ;;
+	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
+	    esac
+	  done
+	fi
+	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	if test lib,link = "$linkmode,$pass" ||
+	   test prog,scan = "$linkmode,$pass" ||
+	   { test prog != "$linkmode" && test lib != "$linkmode"; }; then
+	  test -n "$dlopen" && func_append dlfiles " $dlopen"
+	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
+	fi
+
+	if test conv = "$pass"; then
+	  # Only check for convenience libraries
+	  deplibs="$lib $deplibs"
+	  if test -z "$libdir"; then
+	    if test -z "$old_library"; then
+	      func_fatal_error "cannot find name of link library for '$lib'"
+	    fi
+	    # It is a libtool convenience library, so add in its objects.
+	    func_append convenience " $ladir/$objdir/$old_library"
+	    func_append old_convenience " $ladir/$objdir/$old_library"
+	    tmp_libs=
+	    for deplib in $dependency_libs; do
+	      deplibs="$deplib $deplibs"
+	      if $opt_preserve_dup_deps; then
+		case "$tmp_libs " in
+		*" $deplib "*) func_append specialdeplibs " $deplib" ;;
+		esac
+	      fi
+	      func_append tmp_libs " $deplib"
+	    done
+	  elif test prog != "$linkmode" && test lib != "$linkmode"; then
+	    func_fatal_error "'$lib' is not a convenience library"
+	  fi
+	  continue
+	fi # $pass = conv
+
+
+	# Get the name of the library we link against.
+	linklib=
+	if test -n "$old_library" &&
+	   { test yes = "$prefer_static_libs" ||
+	     test built,no = "$prefer_static_libs,$installed"; }; then
+	  linklib=$old_library
+	else
+	  for l in $old_library $library_names; do
+	    linklib=$l
+	  done
+	fi
+	if test -z "$linklib"; then
+	  func_fatal_error "cannot find name of link library for '$lib'"
+	fi
+
+	# This library was specified with -dlopen.
+	if test dlopen = "$pass"; then
+	  test -z "$libdir" \
+	    && func_fatal_error "cannot -dlopen a convenience library: '$lib'"
+	  if test -z "$dlname" ||
+	     test yes != "$dlopen_support" ||
+	     test no = "$build_libtool_libs"
+	  then
+	    # If there is no dlname, no dlopen support or we're linking
+	    # statically, we need to preload.  We also need to preload any
+	    # dependent libraries so libltdl's deplib preloader doesn't
+	    # bomb out in the load deplibs phase.
+	    func_append dlprefiles " $lib $dependency_libs"
+	  else
+	    func_append newdlfiles " $lib"
+	  fi
+	  continue
+	fi # $pass = dlopen
+
+	# We need an absolute path.
+	case $ladir in
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;;
+	*)
+	  abs_ladir=`cd "$ladir" && pwd`
+	  if test -z "$abs_ladir"; then
+	    func_warning "cannot determine absolute directory name of '$ladir'"
+	    func_warning "passing it literally to the linker, although it might fail"
+	    abs_ladir=$ladir
+	  fi
+	  ;;
+	esac
+	func_basename "$lib"
+	laname=$func_basename_result
+
+	# Find the relevant object directory and library name.
+	if test yes = "$installed"; then
+	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    func_warning "library '$lib' was moved."
+	    dir=$ladir
+	    absdir=$abs_ladir
+	    libdir=$abs_ladir
+	  else
+	    dir=$lt_sysroot$libdir
+	    absdir=$lt_sysroot$libdir
+	  fi
+	  test yes = "$hardcode_automatic" && avoidtemprpath=yes
+	else
+	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    dir=$ladir
+	    absdir=$abs_ladir
+	    # Remove this search path later
+	    func_append notinst_path " $abs_ladir"
+	  else
+	    dir=$ladir/$objdir
+	    absdir=$abs_ladir/$objdir
+	    # Remove this search path later
+	    func_append notinst_path " $abs_ladir"
+	  fi
+	fi # $installed = yes
+	func_stripname 'lib' '.la' "$laname"
+	name=$func_stripname_result
+
+	# This library was specified with -dlpreopen.
+	if test dlpreopen = "$pass"; then
+	  if test -z "$libdir" && test prog = "$linkmode"; then
+	    func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'"
+	  fi
+	  case $host in
+	    # special handling for platforms with PE-DLLs.
+	    *cygwin* | *mingw* | *cegcc* )
+	      # Linker will automatically link against shared library if both
+	      # static and shared are present.  Therefore, ensure we extract
+	      # symbols from the import library if a shared library is present
+	      # (otherwise, the dlopen module name will be incorrect).  We do
+	      # this by putting the import library name into $newdlprefiles.
+	      # We recover the dlopen module name by 'saving' the la file
+	      # name in a special purpose variable, and (later) extracting the
+	      # dlname from the la file.
+	      if test -n "$dlname"; then
+	        func_tr_sh "$dir/$linklib"
+	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
+	        func_append newdlprefiles " $dir/$linklib"
+	      else
+	        func_append newdlprefiles " $dir/$old_library"
+	        # Keep a list of preopened convenience libraries to check
+	        # that they are being used correctly in the link pass.
+	        test -z "$libdir" && \
+	          func_append dlpreconveniencelibs " $dir/$old_library"
+	      fi
+	    ;;
+	    * )
+	      # Prefer using a static library (so that no silly _DYNAMIC symbols
+	      # are required to link).
+	      if test -n "$old_library"; then
+	        func_append newdlprefiles " $dir/$old_library"
+	        # Keep a list of preopened convenience libraries to check
+	        # that they are being used correctly in the link pass.
+	        test -z "$libdir" && \
+	          func_append dlpreconveniencelibs " $dir/$old_library"
+	      # Otherwise, use the dlname, so that lt_dlopen finds it.
+	      elif test -n "$dlname"; then
+	        func_append newdlprefiles " $dir/$dlname"
+	      else
+	        func_append newdlprefiles " $dir/$linklib"
+	      fi
+	    ;;
+	  esac
+	fi # $pass = dlpreopen
+
+	if test -z "$libdir"; then
+	  # Link the convenience library
+	  if test lib = "$linkmode"; then
+	    deplibs="$dir/$old_library $deplibs"
+	  elif test prog,link = "$linkmode,$pass"; then
+	    compile_deplibs="$dir/$old_library $compile_deplibs"
+	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
+	  else
+	    deplibs="$lib $deplibs" # used for prog,scan pass
+	  fi
+	  continue
+	fi
+
+
+	if test prog = "$linkmode" && test link != "$pass"; then
+	  func_append newlib_search_path " $ladir"
+	  deplibs="$lib $deplibs"
+
+	  linkalldeplibs=false
+	  if test no != "$link_all_deplibs" || test -z "$library_names" ||
+	     test no = "$build_libtool_libs"; then
+	    linkalldeplibs=:
+	  fi
+
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    case $deplib in
+	    -L*) func_stripname '-L' '' "$deplib"
+	         func_resolve_sysroot "$func_stripname_result"
+	         func_append newlib_search_path " $func_resolve_sysroot_result"
+		 ;;
+	    esac
+	    # Need to link against all dependency_libs?
+	    if $linkalldeplibs; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      # Need to hardcode shared library paths
+	      # or/and link against static libraries
+	      newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    if $opt_preserve_dup_deps; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+	      esac
+	    fi
+	    func_append tmp_libs " $deplib"
+	  done # for deplib
+	  continue
+	fi # $linkmode = prog...
+
+	if test prog,link = "$linkmode,$pass"; then
+	  if test -n "$library_names" &&
+	     { { test no = "$prefer_static_libs" ||
+	         test built,yes = "$prefer_static_libs,$installed"; } ||
+	       test -z "$old_library"; }; then
+	    # We need to hardcode the library path
+	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then
+	      # Make sure the rpath contains only unique directories.
+	      case $temp_rpath: in
+	      *"$absdir:"*) ;;
+	      *) func_append temp_rpath "$absdir:" ;;
+	      esac
+	    fi
+
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) func_append compile_rpath " $absdir" ;;
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) func_append finalize_rpath " $libdir" ;;
+	      esac
+	      ;;
+	    esac
+	  fi # $linkmode,$pass = prog,link...
+
+	  if $alldeplibs &&
+	     { test pass_all = "$deplibs_check_method" ||
+	       { test yes = "$build_libtool_libs" &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+	fi
+
+	link_static=no # Whether the deplib will be linked statically
+	use_static_libs=$prefer_static_libs
+	if test built = "$use_static_libs" && test yes = "$installed"; then
+	  use_static_libs=no
+	fi
+	if test -n "$library_names" &&
+	   { test no = "$use_static_libs" || test -z "$old_library"; }; then
+	  case $host in
+	  *cygwin* | *mingw* | *cegcc* | *os2*)
+	      # No point in relinking DLLs because paths are not encoded
+	      func_append notinst_deplibs " $lib"
+	      need_relink=no
+	    ;;
+	  *)
+	    if test no = "$installed"; then
+	      func_append notinst_deplibs " $lib"
+	      need_relink=yes
+	    fi
+	    ;;
+	  esac
+	  # This is a shared library
+
+	  # Warn about portability, can't link against -module's on some
+	  # systems (darwin).  Don't bleat about dlopened modules though!
+	  dlopenmodule=
+	  for dlpremoduletest in $dlprefiles; do
+	    if test "X$dlpremoduletest" = "X$lib"; then
+	      dlopenmodule=$dlpremoduletest
+	      break
+	    fi
+	  done
+	  if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then
+	    echo
+	    if test prog = "$linkmode"; then
+	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
+	    else
+	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
+	    fi
+	    $ECHO "*** $linklib is not portable!"
+	  fi
+	  if test lib = "$linkmode" &&
+	     test yes = "$hardcode_into_libs"; then
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) func_append compile_rpath " $absdir" ;;
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) func_append finalize_rpath " $libdir" ;;
+	      esac
+	      ;;
+	    esac
+	  fi
+
+	  if test -n "$old_archive_from_expsyms_cmds"; then
+	    # figure out the soname
+	    set dummy $library_names
+	    shift
+	    realname=$1
+	    shift
+	    libname=`eval "\\$ECHO \"$libname_spec\""`
+	    # use dlname if we got it. it's perfectly good, no?
+	    if test -n "$dlname"; then
+	      soname=$dlname
+	    elif test -n "$soname_spec"; then
+	      # bleh windows
+	      case $host in
+	      *cygwin* | mingw* | *cegcc* | *os2*)
+	        func_arith $current - $age
+		major=$func_arith_result
+		versuffix=-$major
+		;;
+	      esac
+	      eval soname=\"$soname_spec\"
+	    else
+	      soname=$realname
+	    fi
+
+	    # Make a new name for the extract_expsyms_cmds to use
+	    soroot=$soname
+	    func_basename "$soroot"
+	    soname=$func_basename_result
+	    func_stripname 'lib' '.dll' "$soname"
+	    newlib=libimp-$func_stripname_result.a
+
+	    # If the library has no export list, then create one now
+	    if test -f "$output_objdir/$soname-def"; then :
+	    else
+	      func_verbose "extracting exported symbol list from '$soname'"
+	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
+	    fi
+
+	    # Create $newlib
+	    if test -f "$output_objdir/$newlib"; then :; else
+	      func_verbose "generating import library for '$soname'"
+	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
+	    fi
+	    # make sure the library variables are pointing to the new library
+	    dir=$output_objdir
+	    linklib=$newlib
+	  fi # test -n "$old_archive_from_expsyms_cmds"
+
+	  if test prog = "$linkmode" || test relink != "$opt_mode"; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    lib_linked=yes
+	    case $hardcode_action in
+	    immediate | unsupported)
+	      if test no = "$hardcode_direct"; then
+		add=$dir/$linklib
+		case $host in
+		  *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;;
+		  *-*-sysv4*uw2*) add_dir=-L$dir ;;
+		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+		    *-*-unixware7*) add_dir=-L$dir ;;
+		  *-*-darwin* )
+		    # if the lib is a (non-dlopened) module then we cannot
+		    # link against it, someone is ignoring the earlier warnings
+		    if /usr/bin/file -L $add 2> /dev/null |
+			 $GREP ": [^:]* bundle" >/dev/null; then
+		      if test "X$dlopenmodule" != "X$lib"; then
+			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
+			if test -z "$old_library"; then
+			  echo
+			  echo "*** And there doesn't seem to be a static archive available"
+			  echo "*** The link will probably fail, sorry"
+			else
+			  add=$dir/$old_library
+			fi
+		      elif test -n "$old_library"; then
+			add=$dir/$old_library
+		      fi
+		    fi
+		esac
+	      elif test no = "$hardcode_minus_L"; then
+		case $host in
+		*-*-sunos*) add_shlibpath=$dir ;;
+		esac
+		add_dir=-L$dir
+		add=-l$name
+	      elif test no = "$hardcode_shlibpath_var"; then
+		add_shlibpath=$dir
+		add=-l$name
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    relink)
+	      if test yes = "$hardcode_direct" &&
+	         test no = "$hardcode_direct_absolute"; then
+		add=$dir/$linklib
+	      elif test yes = "$hardcode_minus_L"; then
+		add_dir=-L$absdir
+		# Try looking first in the location we're being installed to.
+		if test -n "$inst_prefix_dir"; then
+		  case $libdir in
+		    [\\/]*)
+		      func_append add_dir " -L$inst_prefix_dir$libdir"
+		      ;;
+		  esac
+		fi
+		add=-l$name
+	      elif test yes = "$hardcode_shlibpath_var"; then
+		add_shlibpath=$dir
+		add=-l$name
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    *) lib_linked=no ;;
+	    esac
+
+	    if test yes != "$lib_linked"; then
+	      func_fatal_configuration "unsupported hardcode properties"
+	    fi
+
+	    if test -n "$add_shlibpath"; then
+	      case :$compile_shlibpath: in
+	      *":$add_shlibpath:"*) ;;
+	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
+	      esac
+	    fi
+	    if test prog = "$linkmode"; then
+	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	      if test yes != "$hardcode_direct" &&
+		 test yes != "$hardcode_minus_L" &&
+		 test yes = "$hardcode_shlibpath_var"; then
+		case :$finalize_shlibpath: in
+		*":$libdir:"*) ;;
+		*) func_append finalize_shlibpath "$libdir:" ;;
+		esac
+	      fi
+	    fi
+	  fi
+
+	  if test prog = "$linkmode" || test relink = "$opt_mode"; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    # Finalize command for both is simple: just hardcode it.
+	    if test yes = "$hardcode_direct" &&
+	       test no = "$hardcode_direct_absolute"; then
+	      add=$libdir/$linklib
+	    elif test yes = "$hardcode_minus_L"; then
+	      add_dir=-L$libdir
+	      add=-l$name
+	    elif test yes = "$hardcode_shlibpath_var"; then
+	      case :$finalize_shlibpath: in
+	      *":$libdir:"*) ;;
+	      *) func_append finalize_shlibpath "$libdir:" ;;
+	      esac
+	      add=-l$name
+	    elif test yes = "$hardcode_automatic"; then
+	      if test -n "$inst_prefix_dir" &&
+		 test -f "$inst_prefix_dir$libdir/$linklib"; then
+		add=$inst_prefix_dir$libdir/$linklib
+	      else
+		add=$libdir/$linklib
+	      fi
+	    else
+	      # We cannot seem to hardcode it, guess we'll fake it.
+	      add_dir=-L$libdir
+	      # Try looking first in the location we're being installed to.
+	      if test -n "$inst_prefix_dir"; then
+		case $libdir in
+		  [\\/]*)
+		    func_append add_dir " -L$inst_prefix_dir$libdir"
+		    ;;
+		esac
+	      fi
+	      add=-l$name
+	    fi
+
+	    if test prog = "$linkmode"; then
+	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	    fi
+	  fi
+	elif test prog = "$linkmode"; then
+	  # Here we assume that one of hardcode_direct or hardcode_minus_L
+	  # is not unsupported.  This is valid on all known static and
+	  # shared platforms.
+	  if test unsupported != "$hardcode_direct"; then
+	    test -n "$old_library" && linklib=$old_library
+	    compile_deplibs="$dir/$linklib $compile_deplibs"
+	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
+	  else
+	    compile_deplibs="-l$name -L$dir $compile_deplibs"
+	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+	  fi
+	elif test yes = "$build_libtool_libs"; then
+	  # Not a shared library
+	  if test pass_all != "$deplibs_check_method"; then
+	    # We're trying link a shared library against a static one
+	    # but the system doesn't support it.
+
+	    # Just print a warning and add the library to dependency_libs so
+	    # that the program can be linked against the static library.
+	    echo
+	    $ECHO "*** Warning: This system cannot link to static lib archive $lib."
+	    echo "*** I have the capability to make that library automatically link in when"
+	    echo "*** you link to this library.  But I can only do this if you have a"
+	    echo "*** shared version of the library, which you do not appear to have."
+	    if test yes = "$module"; then
+	      echo "*** But as you try to build a module library, libtool will still create "
+	      echo "*** a static module, that should work as long as the dlopening application"
+	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+	      if test -z "$global_symbol_pipe"; then
+		echo
+		echo "*** However, this would only work if libtool was able to extract symbol"
+		echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
+		echo "*** not find such a program.  So, this module is probably useless."
+		echo "*** 'nm' from GNU binutils and a full rebuild may help."
+	      fi
+	      if test no = "$build_old_libs"; then
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  else
+	    deplibs="$dir/$old_library $deplibs"
+	    link_static=yes
+	  fi
+	fi # link shared/static library?
+
+	if test lib = "$linkmode"; then
+	  if test -n "$dependency_libs" &&
+	     { test yes != "$hardcode_into_libs" ||
+	       test yes = "$build_old_libs" ||
+	       test yes = "$link_static"; }; then
+	    # Extract -R from dependency_libs
+	    temp_deplibs=
+	    for libdir in $dependency_libs; do
+	      case $libdir in
+	      -R*) func_stripname '-R' '' "$libdir"
+	           temp_xrpath=$func_stripname_result
+		   case " $xrpath " in
+		   *" $temp_xrpath "*) ;;
+		   *) func_append xrpath " $temp_xrpath";;
+		   esac;;
+	      *) func_append temp_deplibs " $libdir";;
+	      esac
+	    done
+	    dependency_libs=$temp_deplibs
+	  fi
+
+	  func_append newlib_search_path " $absdir"
+	  # Link against this library
+	  test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+	  # ... and its dependency_libs
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    newdependency_libs="$deplib $newdependency_libs"
+	    case $deplib in
+              -L*) func_stripname '-L' '' "$deplib"
+                   func_resolve_sysroot "$func_stripname_result";;
+              *) func_resolve_sysroot "$deplib" ;;
+            esac
+	    if $opt_preserve_dup_deps; then
+	      case "$tmp_libs " in
+	      *" $func_resolve_sysroot_result "*)
+                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
+	      esac
+	    fi
+	    func_append tmp_libs " $func_resolve_sysroot_result"
+	  done
+
+	  if test no != "$link_all_deplibs"; then
+	    # Add the search paths of all dependency libraries
+	    for deplib in $dependency_libs; do
+	      path=
+	      case $deplib in
+	      -L*) path=$deplib ;;
+	      *.la)
+	        func_resolve_sysroot "$deplib"
+	        deplib=$func_resolve_sysroot_result
+	        func_dirname "$deplib" "" "."
+		dir=$func_dirname_result
+		# We need an absolute path.
+		case $dir in
+		[\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;;
+		*)
+		  absdir=`cd "$dir" && pwd`
+		  if test -z "$absdir"; then
+		    func_warning "cannot determine absolute directory name of '$dir'"
+		    absdir=$dir
+		  fi
+		  ;;
+		esac
+		if $GREP "^installed=no" $deplib > /dev/null; then
+		case $host in
+		*-*-darwin*)
+		  depdepl=
+		  eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+		  if test -n "$deplibrary_names"; then
+		    for tmp in $deplibrary_names; do
+		      depdepl=$tmp
+		    done
+		    if test -f "$absdir/$objdir/$depdepl"; then
+		      depdepl=$absdir/$objdir/$depdepl
+		      darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+                      if test -z "$darwin_install_name"; then
+                          darwin_install_name=`$OTOOL64 -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
+                      fi
+		      func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl"
+		      func_append linker_flags " -dylib_file $darwin_install_name:$depdepl"
+		      path=
+		    fi
+		  fi
+		  ;;
+		*)
+		  path=-L$absdir/$objdir
+		  ;;
+		esac
+		else
+		  eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  test -z "$libdir" && \
+		    func_fatal_error "'$deplib' is not a valid libtool archive"
+		  test "$absdir" != "$libdir" && \
+		    func_warning "'$deplib' seems to be moved"
+
+		  path=-L$absdir
+		fi
+		;;
+	      esac
+	      case " $deplibs " in
+	      *" $path "*) ;;
+	      *) deplibs="$path $deplibs" ;;
+	      esac
+	    done
+	  fi # link_all_deplibs != no
+	fi # linkmode = lib
+      done # for deplib in $libs
+      if test link = "$pass"; then
+	if test prog = "$linkmode"; then
+	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
+	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
+	else
+	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	fi
+      fi
+      dependency_libs=$newdependency_libs
+      if test dlpreopen = "$pass"; then
+	# Link the dlpreopened libraries before other libraries
+	for deplib in $save_deplibs; do
+	  deplibs="$deplib $deplibs"
+	done
+      fi
+      if test dlopen != "$pass"; then
+	test conv = "$pass" || {
+	  # Make sure lib_search_path contains only unique directories.
+	  lib_search_path=
+	  for dir in $newlib_search_path; do
+	    case "$lib_search_path " in
+	    *" $dir "*) ;;
+	    *) func_append lib_search_path " $dir" ;;
+	    esac
+	  done
+	  newlib_search_path=
+	}
+
+	if test prog,link = "$linkmode,$pass"; then
+	  vars="compile_deplibs finalize_deplibs"
+	else
+	  vars=deplibs
+	fi
+	for var in $vars dependency_libs; do
+	  # Add libraries to $var in reverse order
+	  eval tmp_libs=\"\$$var\"
+	  new_libs=
+	  for deplib in $tmp_libs; do
+	    # FIXME: Pedantically, this is the right thing to do, so
+	    #        that some nasty dependency loop isn't accidentally
+	    #        broken:
+	    #new_libs="$deplib $new_libs"
+	    # Pragmatically, this seems to cause very few problems in
+	    # practice:
+	    case $deplib in
+	    -L*) new_libs="$deplib $new_libs" ;;
+	    -R*) ;;
+	    *)
+	      # And here is the reason: when a library appears more
+	      # than once as an explicit dependence of a library, or
+	      # is implicitly linked in more than once by the
+	      # compiler, it is considered special, and multiple
+	      # occurrences thereof are not removed.  Compare this
+	      # with having the same library being listed as a
+	      # dependency of multiple other libraries: in this case,
+	      # we know (pedantically, we assume) the library does not
+	      # need to be listed more than once, so we keep only the
+	      # last copy.  This is not always right, but it is rare
+	      # enough that we require users that really mean to play
+	      # such unportable linking tricks to link the library
+	      # using -Wl,-lname, so that libtool does not consider it
+	      # for duplicate removal.
+	      case " $specialdeplibs " in
+	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
+	      *)
+		case " $new_libs " in
+		*" $deplib "*) ;;
+		*) new_libs="$deplib $new_libs" ;;
+		esac
+		;;
+	      esac
+	      ;;
+	    esac
+	  done
+	  tmp_libs=
+	  for deplib in $new_libs; do
+	    case $deplib in
+	    -L*)
+	      case " $tmp_libs " in
+	      *" $deplib "*) ;;
+	      *) func_append tmp_libs " $deplib" ;;
+	      esac
+	      ;;
+	    *) func_append tmp_libs " $deplib" ;;
+	    esac
+	  done
+	  eval $var=\"$tmp_libs\"
+	done # for var
+      fi
+
+      # Add Sun CC postdeps if required:
+      test CXX = "$tagname" && {
+        case $host_os in
+        linux*)
+          case `$CC -V 2>&1 | sed 5q` in
+          *Sun\ C*) # Sun C++ 5.9
+            func_suncc_cstd_abi
+
+            if test no != "$suncc_use_cstd_abi"; then
+              func_append postdeps ' -library=Cstd -library=Crun'
+            fi
+            ;;
+          esac
+          ;;
+
+        solaris*)
+          func_cc_basename "$CC"
+          case $func_cc_basename_result in
+          CC* | sunCC*)
+            func_suncc_cstd_abi
+
+            if test no != "$suncc_use_cstd_abi"; then
+              func_append postdeps ' -library=Cstd -library=Crun'
+            fi
+            ;;
+          esac
+          ;;
+        esac
+      }
+
+      # Last step: remove runtime libs from dependency_libs
+      # (they stay in deplibs)
+      tmp_libs=
+      for i in $dependency_libs; do
+	case " $predeps $postdeps $compiler_lib_search_path " in
+	*" $i "*)
+	  i=
+	  ;;
+	esac
+	if test -n "$i"; then
+	  func_append tmp_libs " $i"
+	fi
+      done
+      dependency_libs=$tmp_libs
+    done # for pass
+    if test prog = "$linkmode"; then
+      dlfiles=$newdlfiles
+    fi
+    if test prog = "$linkmode" || test lib = "$linkmode"; then
+      dlprefiles=$newdlprefiles
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+	func_warning "'-dlopen' is ignored for archives"
+      fi
+
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+	func_warning "'-l' and '-L' are ignored for archives" ;;
+      esac
+
+      test -n "$rpath" && \
+	func_warning "'-rpath' is ignored for archives"
+
+      test -n "$xrpath" && \
+	func_warning "'-R' is ignored for archives"
+
+      test -n "$vinfo" && \
+	func_warning "'-version-info/-version-number' is ignored for archives"
+
+      test -n "$release" && \
+	func_warning "'-release' is ignored for archives"
+
+      test -n "$export_symbols$export_symbols_regex" && \
+	func_warning "'-export-symbols' is ignored for archives"
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs=$output
+      func_append objs "$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form 'libNAME.la'.
+      case $outputname in
+      lib*)
+	func_stripname 'lib' '.la' "$outputname"
+	name=$func_stripname_result
+	eval shared_ext=\"$shrext_cmds\"
+	eval libname=\"$libname_spec\"
+	;;
+      *)
+	test no = "$module" \
+	  && func_fatal_help "libtool library '$output' must begin with 'lib'"
+
+	if test no != "$need_lib_prefix"; then
+	  # Add the "lib" prefix for modules if required
+	  func_stripname '' '.la' "$outputname"
+	  name=$func_stripname_result
+	  eval shared_ext=\"$shrext_cmds\"
+	  eval libname=\"$libname_spec\"
+	else
+	  func_stripname '' '.la' "$outputname"
+	  libname=$func_stripname_result
+	fi
+	;;
+      esac
+
+      if test -n "$objs"; then
+	if test pass_all != "$deplibs_check_method"; then
+	  func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs"
+	else
+	  echo
+	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+	  $ECHO "*** objects $objs is not portable!"
+	  func_append libobjs " $objs"
+	fi
+      fi
+
+      test no = "$dlself" \
+	|| func_warning "'-dlopen self' is ignored for libtool libraries"
+
+      set dummy $rpath
+      shift
+      test 1 -lt "$#" \
+	&& func_warning "ignoring multiple '-rpath's for a libtool library"
+
+      install_libdir=$1
+
+      oldlibs=
+      if test -z "$rpath"; then
+	if test yes = "$build_libtool_libs"; then
+	  # Building a libtool convenience library.
+	  # Some compilers have problems with a '.al' extension so
+	  # convenience libraries should have the same extension an
+	  # archive normally would.
+	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
+	  build_libtool_libs=convenience
+	  build_old_libs=yes
+	fi
+
+	test -n "$vinfo" && \
+	  func_warning "'-version-info/-version-number' is ignored for convenience libraries"
+
+	test -n "$release" && \
+	  func_warning "'-release' is ignored for convenience libraries"
+      else
+
+	# Parse the version information argument.
+	save_ifs=$IFS; IFS=:
+	set dummy $vinfo 0 0 0
+	shift
+	IFS=$save_ifs
+
+	test -n "$7" && \
+	  func_fatal_help "too many parameters to '-version-info'"
+
+	# convert absolute version numbers to libtool ages
+	# this retains compatibility with .la files and attempts
+	# to make the code below a bit more comprehensible
+
+	case $vinfo_number in
+	yes)
+	  number_major=$1
+	  number_minor=$2
+	  number_revision=$3
+	  #
+	  # There are really only two kinds -- those that
+	  # use the current revision as the major version
+	  # and those that subtract age and use age as
+	  # a minor version.  But, then there is irix
+	  # that has an extra 1 added just for fun
+	  #
+	  case $version_type in
+	  # correct linux to gnu/linux during the next big refactor
+	  darwin|freebsd-elf|linux|osf|windows|none)
+	    func_arith $number_major + $number_minor
+	    current=$func_arith_result
+	    age=$number_minor
+	    revision=$number_revision
+	    ;;
+	  freebsd-aout|qnx|sunos)
+	    current=$number_major
+	    revision=$number_minor
+	    age=0
+	    ;;
+	  irix|nonstopux)
+	    func_arith $number_major + $number_minor
+	    current=$func_arith_result
+	    age=$number_minor
+	    revision=$number_minor
+	    lt_irix_increment=no
+	    ;;
+	  *)
+	    func_fatal_configuration "$modename: unknown library version type '$version_type'"
+	    ;;
+	  esac
+	  ;;
+	no)
+	  current=$1
+	  revision=$2
+	  age=$3
+	  ;;
+	esac
+
+	# Check that each of the things are valid numbers.
+	case $current in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  func_error "CURRENT '$current' must be a nonnegative integer"
+	  func_fatal_error "'$vinfo' is not valid version information"
+	  ;;
+	esac
+
+	case $revision in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  func_error "REVISION '$revision' must be a nonnegative integer"
+	  func_fatal_error "'$vinfo' is not valid version information"
+	  ;;
+	esac
+
+	case $age in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  func_error "AGE '$age' must be a nonnegative integer"
+	  func_fatal_error "'$vinfo' is not valid version information"
+	  ;;
+	esac
+
+	if test "$age" -gt "$current"; then
+	  func_error "AGE '$age' is greater than the current interface number '$current'"
+	  func_fatal_error "'$vinfo' is not valid version information"
+	fi
+
+	# Calculate the version variables.
+	major=
+	versuffix=
+	verstring=
+	case $version_type in
+	none) ;;
+
+	darwin)
+	  # Like Linux, but with the current version available in
+	  # verstring for coding it into the library header
+	  func_arith $current - $age
+	  major=.$func_arith_result
+	  versuffix=$major.$age.$revision
+	  # Darwin ld doesn't like 0 for these options...
+	  func_arith $current + 1
+	  minor_current=$func_arith_result
+	  xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+          # On Darwin other compilers
+          case $CC in
+              nagfor*)
+                  verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+                  ;;
+              *)
+                  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+                  ;;
+          esac
+	  ;;
+
+	freebsd-aout)
+	  major=.$current
+	  versuffix=.$current.$revision
+	  ;;
+
+	freebsd-elf)
+	  func_arith $current - $age
+	  major=.$func_arith_result
+	  versuffix=$major.$age.$revision
+	  ;;
+
+	irix | nonstopux)
+	  if test no = "$lt_irix_increment"; then
+	    func_arith $current - $age
+	  else
+	    func_arith $current - $age + 1
+	  fi
+	  major=$func_arith_result
+
+	  case $version_type in
+	    nonstopux) verstring_prefix=nonstopux ;;
+	    *)         verstring_prefix=sgi ;;
+	  esac
+	  verstring=$verstring_prefix$major.$revision
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$revision
+	  while test 0 -ne "$loop"; do
+	    func_arith $revision - $loop
+	    iface=$func_arith_result
+	    func_arith $loop - 1
+	    loop=$func_arith_result
+	    verstring=$verstring_prefix$major.$iface:$verstring
+	  done
+
+	  # Before this point, $major must not contain '.'.
+	  major=.$major
+	  versuffix=$major.$revision
+	  ;;
+
+	linux) # correct to gnu/linux during the next big refactor
+	  func_arith $current - $age
+	  major=.$func_arith_result
+	  versuffix=$major.$age.$revision
+	  ;;
+
+	osf)
+	  func_arith $current - $age
+	  major=.$func_arith_result
+	  versuffix=.$current.$age.$revision
+	  verstring=$current.$age.$revision
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$age
+	  while test 0 -ne "$loop"; do
+	    func_arith $current - $loop
+	    iface=$func_arith_result
+	    func_arith $loop - 1
+	    loop=$func_arith_result
+	    verstring=$verstring:$iface.0
+	  done
+
+	  # Make executables depend on our current version.
+	  func_append verstring ":$current.0"
+	  ;;
+
+	qnx)
+	  major=.$current
+	  versuffix=.$current
+	  ;;
+
+	sco)
+	  major=.$current
+	  versuffix=.$current
+	  ;;
+
+	sunos)
+	  major=.$current
+	  versuffix=.$current.$revision
+	  ;;
+
+	windows)
+	  # Use '-' rather than '.', since we only want one
+	  # extension on DOS 8.3 file systems.
+	  func_arith $current - $age
+	  major=$func_arith_result
+	  versuffix=-$major
+	  ;;
+
+	*)
+	  func_fatal_configuration "unknown library version type '$version_type'"
+	  ;;
+	esac
+
+	# Clear the version info if we defaulted, and they specified a release.
+	if test -z "$vinfo" && test -n "$release"; then
+	  major=
+	  case $version_type in
+	  darwin)
+	    # we can't check for "0.0" in archive_cmds due to quoting
+	    # problems, so we reset it completely
+	    verstring=
+	    ;;
+	  *)
+	    verstring=0.0
+	    ;;
+	  esac
+	  if test no = "$need_version"; then
+	    versuffix=
+	  else
+	    versuffix=.0.0
+	  fi
+	fi
+
+	# Remove version info from name if versioning should be avoided
+	if test yes,no = "$avoid_version,$need_version"; then
+	  major=
+	  versuffix=
+	  verstring=
+	fi
+
+	# Check to see if the archive will have undefined symbols.
+	if test yes = "$allow_undefined"; then
+	  if test unsupported = "$allow_undefined_flag"; then
+	    if test yes = "$build_old_libs"; then
+	      func_warning "undefined symbols not allowed in $host shared libraries; building static only"
+	      build_libtool_libs=no
+	    else
+	      func_fatal_error "can't build $host shared library unless -no-undefined is specified"
+	    fi
+	  fi
+	else
+	  # Don't allow undefined symbols.
+	  allow_undefined_flag=$no_undefined_flag
+	fi
+
+      fi
+
+      func_generate_dlsyms "$libname" "$libname" :
+      func_append libobjs " $symfileobj"
+      test " " = "$libobjs" && libobjs=
+
+      if test relink != "$opt_mode"; then
+	# Remove our outputs, but don't remove object files since they
+	# may have been created when compiling PIC objects.
+	removelist=
+	tempremovelist=`$ECHO "$output_objdir/*"`
+	for p in $tempremovelist; do
+	  case $p in
+	    *.$objext | *.gcno)
+	       ;;
+	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*)
+	       if test -n "$precious_files_regex"; then
+		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+		 then
+		   continue
+		 fi
+	       fi
+	       func_append removelist " $p"
+	       ;;
+	    *) ;;
+	  esac
+	done
+	test -n "$removelist" && \
+	  func_show_eval "${RM}r \$removelist"
+      fi
+
+      # Now set the variables for building old libraries.
+      if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then
+	func_append oldlibs " $output_objdir/$libname.$libext"
+
+	# Transform .lo files to .o files.
+	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      #for path in $notinst_path; do
+      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
+      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
+      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
+      #done
+
+      if test -n "$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	temp_xrpath=
+	for libdir in $xrpath; do
+	  func_replace_sysroot "$libdir"
+	  func_append temp_xrpath " -R$func_replace_sysroot_result"
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) func_append finalize_rpath " $libdir" ;;
+	  esac
+	done
+	if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then
+	  dependency_libs="$temp_xrpath $dependency_libs"
+	fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles=$dlfiles
+      dlfiles=
+      for lib in $old_dlfiles; do
+	case " $dlprefiles $dlfiles " in
+	*" $lib "*) ;;
+	*) func_append dlfiles " $lib" ;;
+	esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles=$dlprefiles
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+	case "$dlprefiles " in
+	*" $lib "*) ;;
+	*) func_append dlprefiles " $lib" ;;
+	esac
+      done
+
+      if test yes = "$build_libtool_libs"; then
+	if test -n "$rpath"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
+	    # these systems don't actually have a c library (as such)!
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C library is in the System framework
+	    func_append deplibs " System.ltframework"
+	    ;;
+	  *-*-netbsd*)
+	    # Don't link with libc until the a.out ld.so is fixed.
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    ;;
+	  *-*-sco3.2v5* | *-*-sco5v6*)
+	    # Causes problems with __ctype
+	    ;;
+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+	    # Compiler inserts libc in the correct place for threads to work
+	    ;;
+	  *)
+	    # Add libc to deplibs on all other systems if necessary.
+	    if test yes = "$build_libtool_need_lc"; then
+	      func_append deplibs " -lc"
+	    fi
+	    ;;
+	  esac
+	fi
+
+	# Transform deplibs into only deplibs that can be linked in shared.
+	name_save=$name
+	libname_save=$libname
+	release_save=$release
+	versuffix_save=$versuffix
+	major_save=$major
+	# I'm not sure if I'm treating the release correctly.  I think
+	# release should show up in the -l (ie -lgmp5) so we don't want to
+	# add it in twice.  Is that correct?
+	release=
+	versuffix=
+	major=
+	newdeplibs=
+	droppeddeps=no
+	case $deplibs_check_method in
+	pass_all)
+	  # Don't check for shared/static.  Everything works.
+	  # This might be a little naive.  We might want to check
+	  # whether the library exists or not.  But this is on
+	  # osf3 & osf4 and I'm not really sure... Just
+	  # implementing what was already the behavior.
+	  newdeplibs=$deplibs
+	  ;;
+	test_compile)
+	  # This code stresses the "libraries are programs" paradigm to its
+	  # limits. Maybe even breaks it.  We compile a program, linking it
+	  # against the deplibs as a proxy for the library.  Then we can check
+	  # whether they linked in statically or dynamically with ldd.
+	  $opt_dry_run || $RM conftest.c
+	  cat > conftest.c <<EOF
+	  int main() { return 0; }
+EOF
+	  $opt_dry_run || $RM conftest
+	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+	    ldd_output=`ldd conftest`
+	    for i in $deplibs; do
+	      case $i in
+	      -l*)
+		func_stripname -l '' "$i"
+		name=$func_stripname_result
+		if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+		  case " $predeps $postdeps " in
+		  *" $i "*)
+		    func_append newdeplibs " $i"
+		    i=
+		    ;;
+		  esac
+		fi
+		if test -n "$i"; then
+		  libname=`eval "\\$ECHO \"$libname_spec\""`
+		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+		  set dummy $deplib_matches; shift
+		  deplib_match=$1
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
+		    func_append newdeplibs " $i"
+		  else
+		    droppeddeps=yes
+		    echo
+		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+		    echo "*** I have the capability to make that library automatically link in when"
+		    echo "*** you link to this library.  But I can only do this if you have a"
+		    echo "*** shared version of the library, which I believe you do not have"
+		    echo "*** because a test_compile did reveal that the linker did not use it for"
+		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
+		  fi
+		fi
+		;;
+	      *)
+		func_append newdeplibs " $i"
+		;;
+	      esac
+	    done
+	  else
+	    # Error occurred in the first compile.  Let's try to salvage
+	    # the situation: Compile a separate program for each library.
+	    for i in $deplibs; do
+	      case $i in
+	      -l*)
+		func_stripname -l '' "$i"
+		name=$func_stripname_result
+		$opt_dry_run || $RM conftest
+		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+		  ldd_output=`ldd conftest`
+		  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+		    case " $predeps $postdeps " in
+		    *" $i "*)
+		      func_append newdeplibs " $i"
+		      i=
+		      ;;
+		    esac
+		  fi
+		  if test -n "$i"; then
+		    libname=`eval "\\$ECHO \"$libname_spec\""`
+		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+		    set dummy $deplib_matches; shift
+		    deplib_match=$1
+		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
+		      func_append newdeplibs " $i"
+		    else
+		      droppeddeps=yes
+		      echo
+		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+		      echo "*** I have the capability to make that library automatically link in when"
+		      echo "*** you link to this library.  But I can only do this if you have a"
+		      echo "*** shared version of the library, which you do not appear to have"
+		      echo "*** because a test_compile did reveal that the linker did not use this one"
+		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+		    fi
+		  fi
+		else
+		  droppeddeps=yes
+		  echo
+		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
+		  echo "*** make it link in!  You will probably need to install it or some"
+		  echo "*** library that it depends on before this library will be fully"
+		  echo "*** functional.  Installing it before continuing would be even better."
+		fi
+		;;
+	      *)
+		func_append newdeplibs " $i"
+		;;
+	      esac
+	    done
+	  fi
+	  ;;
+	file_magic*)
+	  set dummy $deplibs_check_method; shift
+	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    case $a_deplib in
+	    -l*)
+	      func_stripname -l '' "$a_deplib"
+	      name=$func_stripname_result
+	      if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  func_append newdeplibs " $a_deplib"
+		  a_deplib=
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib"; then
+		libname=`eval "\\$ECHO \"$libname_spec\""`
+		if test -n "$file_magic_glob"; then
+		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
+		else
+		  libnameglob=$libname
+		fi
+		test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  if test yes = "$want_nocaseglob"; then
+		    shopt -s nocaseglob
+		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+		    $nocaseglob
+		  else
+		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+		  fi
+		  for potent_lib in $potential_libs; do
+		      # Follow soft links.
+		      if ls -lLd "$potent_lib" 2>/dev/null |
+			 $GREP " -> " >/dev/null; then
+			continue
+		      fi
+		      # The statement above tries to avoid entering an
+		      # endless loop below, in case of cyclic links.
+		      # We might still enter an endless loop, since a link
+		      # loop can be closed while we follow links,
+		      # but so what?
+		      potlib=$potent_lib
+		      while test -h "$potlib" 2>/dev/null; do
+			potliblink=`ls -ld $potlib | $SED 's/.* -> //'`
+			case $potliblink in
+			[\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;;
+			*) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";;
+			esac
+		      done
+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+			 $SED -e 10q |
+			 $EGREP "$file_magic_regex" > /dev/null; then
+			func_append newdeplibs " $a_deplib"
+			a_deplib=
+			break 2
+		      fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib"; then
+		droppeddeps=yes
+		echo
+		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib"; then
+		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
+		else
+		  $ECHO "*** with $libname and none of the candidates passed a file format test"
+		  $ECHO "*** using a file magic. Last file checked: $potlib"
+		fi
+	      fi
+	      ;;
+	    *)
+	      # Add a -L argument.
+	      func_append newdeplibs " $a_deplib"
+	      ;;
+	    esac
+	  done # Gone through all deplibs.
+	  ;;
+	match_pattern*)
+	  set dummy $deplibs_check_method; shift
+	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    case $a_deplib in
+	    -l*)
+	      func_stripname -l '' "$a_deplib"
+	      name=$func_stripname_result
+	      if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  func_append newdeplibs " $a_deplib"
+		  a_deplib=
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib"; then
+		libname=`eval "\\$ECHO \"$libname_spec\""`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		    potlib=$potent_lib # see symlink-check above in file_magic test
+		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
+		       $EGREP "$match_pattern_regex" > /dev/null; then
+		      func_append newdeplibs " $a_deplib"
+		      a_deplib=
+		      break 2
+		    fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib"; then
+		droppeddeps=yes
+		echo
+		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib"; then
+		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
+		else
+		  $ECHO "*** with $libname and none of the candidates passed a file format test"
+		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
+		fi
+	      fi
+	      ;;
+	    *)
+	      # Add a -L argument.
+	      func_append newdeplibs " $a_deplib"
+	      ;;
+	    esac
+	  done # Gone through all deplibs.
+	  ;;
+	none | unknown | *)
+	  newdeplibs=
+	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
+	  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+	    for i in $predeps $postdeps; do
+	      # can't use Xsed below, because $i might contain '/'
+	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"`
+	    done
+	  fi
+	  case $tmp_deplibs in
+	  *[!\	\ ]*)
+	    echo
+	    if test none = "$deplibs_check_method"; then
+	      echo "*** Warning: inter-library dependencies are not supported in this platform."
+	    else
+	      echo "*** Warning: inter-library dependencies are not known to be supported."
+	    fi
+	    echo "*** All declared inter-library dependencies are being dropped."
+	    droppeddeps=yes
+	    ;;
+	  esac
+	  ;;
+	esac
+	versuffix=$versuffix_save
+	major=$major_save
+	release=$release_save
+	libname=$libname_save
+	name=$name_save
+
+	case $host in
+	*-*-rhapsody* | *-*-darwin1.[012])
+	  # On Rhapsody replace the C library with the System framework
+	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
+	  ;;
+	esac
+
+	if test yes = "$droppeddeps"; then
+	  if test yes = "$module"; then
+	    echo
+	    echo "*** Warning: libtool could not satisfy all declared inter-library"
+	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
+	    echo "*** a static module, that should work as long as the dlopening"
+	    echo "*** application is linked with the -dlopen flag."
+	    if test -z "$global_symbol_pipe"; then
+	      echo
+	      echo "*** However, this would only work if libtool was able to extract symbol"
+	      echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
+	      echo "*** not find such a program.  So, this module is probably useless."
+	      echo "*** 'nm' from GNU binutils and a full rebuild may help."
+	    fi
+	    if test no = "$build_old_libs"; then
+	      oldlibs=$output_objdir/$libname.$libext
+	      build_libtool_libs=module
+	      build_old_libs=yes
+	    else
+	      build_libtool_libs=no
+	    fi
+	  else
+	    echo "*** The inter-library dependencies that have been dropped here will be"
+	    echo "*** automatically added whenever a program is linked with this library"
+	    echo "*** or is declared to -dlopen it."
+
+	    if test no = "$allow_undefined"; then
+	      echo
+	      echo "*** Since this library must not contain undefined symbols,"
+	      echo "*** because either the platform does not support them or"
+	      echo "*** it was explicitly requested with -no-undefined,"
+	      echo "*** libtool will only create a static version of it."
+	      if test no = "$build_old_libs"; then
+		oldlibs=$output_objdir/$libname.$libext
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  fi
+	fi
+	# Done checking deplibs!
+	deplibs=$newdeplibs
+      fi
+      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+      case $host in
+	*-*-darwin*)
+	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  ;;
+      esac
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+	case " $new_libs " in
+	*" -L$path/$objdir "*) ;;
+	*)
+	  case " $deplibs " in
+	  *" -L$path/$objdir "*)
+	    func_append new_libs " -L$path/$objdir" ;;
+	  esac
+	  ;;
+	esac
+      done
+      for deplib in $deplibs; do
+	case $deplib in
+	-L*)
+	  case " $new_libs " in
+	  *" $deplib "*) ;;
+	  *) func_append new_libs " $deplib" ;;
+	  esac
+	  ;;
+	*) func_append new_libs " $deplib" ;;
+	esac
+      done
+      deplibs=$new_libs
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test yes = "$build_libtool_libs"; then
+	# Remove $wl instances when linking with ld.
+	# FIXME: should test the right _cmds variable.
+	case $archive_cmds in
+	  *\$LD\ *) wl= ;;
+        esac
+	if test yes = "$hardcode_into_libs"; then
+	  # Hardcode the library paths
+	  hardcode_libdirs=
+	  dep_rpath=
+	  rpath=$finalize_rpath
+	  test relink = "$opt_mode" || rpath=$compile_rpath$rpath
+	  for libdir in $rpath; do
+	    if test -n "$hardcode_libdir_flag_spec"; then
+	      if test -n "$hardcode_libdir_separator"; then
+		func_replace_sysroot "$libdir"
+		libdir=$func_replace_sysroot_result
+		if test -z "$hardcode_libdirs"; then
+		  hardcode_libdirs=$libdir
+		else
+		  # Just accumulate the unique libdirs.
+		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		    ;;
+		  *)
+		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+		    ;;
+		  esac
+		fi
+	      else
+		eval flag=\"$hardcode_libdir_flag_spec\"
+		func_append dep_rpath " $flag"
+	      fi
+	    elif test -n "$runpath_var"; then
+	      case "$perm_rpath " in
+	      *" $libdir "*) ;;
+	      *) func_append perm_rpath " $libdir" ;;
+	      esac
+	    fi
+	  done
+	  # Substitute the hardcoded libdirs into the rpath.
+	  if test -n "$hardcode_libdir_separator" &&
+	     test -n "$hardcode_libdirs"; then
+	    libdir=$hardcode_libdirs
+	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
+	  fi
+	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
+	    # We should set the runpath_var.
+	    rpath=
+	    for dir in $perm_rpath; do
+	      func_append rpath "$dir:"
+	    done
+	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+	  fi
+	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+	fi
+
+	shlibpath=$finalize_shlibpath
+	test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath
+	if test -n "$shlibpath"; then
+	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+	fi
+
+	# Get the real and link names of the library.
+	eval shared_ext=\"$shrext_cmds\"
+	eval library_names=\"$library_names_spec\"
+	set dummy $library_names
+	shift
+	realname=$1
+	shift
+
+	if test -n "$soname_spec"; then
+	  eval soname=\"$soname_spec\"
+	else
+	  soname=$realname
+	fi
+	if test -z "$dlname"; then
+	  dlname=$soname
+	fi
+
+	lib=$output_objdir/$realname
+	linknames=
+	for link
+	do
+	  func_append linknames " $link"
+	done
+
+	# Use standard objects if they are pic
+	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+	test "X$libobjs" = "X " && libobjs=
+
+	delfiles=
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+	  export_symbols=$output_objdir/$libname.uexp
+	  func_append delfiles " $export_symbols"
+	fi
+
+	orig_export_symbols=
+	case $host_os in
+	cygwin* | mingw* | cegcc*)
+	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
+	    # exporting using user supplied symfile
+	    func_dll_def_p "$export_symbols" || {
+	      # and it's NOT already a .def file. Must figure out
+	      # which of the given symbols are data symbols and tag
+	      # them as such. So, trigger use of export_symbols_cmds.
+	      # export_symbols gets reassigned inside the "prepare
+	      # the list of exported symbols" if statement, so the
+	      # include_expsyms logic still works.
+	      orig_export_symbols=$export_symbols
+	      export_symbols=
+	      always_export_symbols=yes
+	    }
+	  fi
+	  ;;
+	esac
+
+	# Prepare the list of exported symbols
+	if test -z "$export_symbols"; then
+	  if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then
+	    func_verbose "generating symbol list for '$libname.la'"
+	    export_symbols=$output_objdir/$libname.exp
+	    $opt_dry_run || $RM $export_symbols
+	    cmds=$export_symbols_cmds
+	    save_ifs=$IFS; IFS='~'
+	    for cmd1 in $cmds; do
+	      IFS=$save_ifs
+	      # Take the normal branch if the nm_file_list_spec branch
+	      # doesn't work or if tool conversion is not needed.
+	      case $nm_file_list_spec~$to_tool_file_cmd in
+		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
+		  try_normal_branch=yes
+		  eval cmd=\"$cmd1\"
+		  func_len " $cmd"
+		  len=$func_len_result
+		  ;;
+		*)
+		  try_normal_branch=no
+		  ;;
+	      esac
+	      if test yes = "$try_normal_branch" \
+		 && { test "$len" -lt "$max_cmd_len" \
+		      || test "$max_cmd_len" -le -1; }
+	      then
+		func_show_eval "$cmd" 'exit $?'
+		skipped_export=false
+	      elif test -n "$nm_file_list_spec"; then
+		func_basename "$output"
+		output_la=$func_basename_result
+		save_libobjs=$libobjs
+		save_output=$output
+		output=$output_objdir/$output_la.nm
+		func_to_tool_file "$output"
+		libobjs=$nm_file_list_spec$func_to_tool_file_result
+		func_append delfiles " $output"
+		func_verbose "creating $NM input file list: $output"
+		for obj in $save_libobjs; do
+		  func_to_tool_file "$obj"
+		  $ECHO "$func_to_tool_file_result"
+		done > "$output"
+		eval cmd=\"$cmd1\"
+		func_show_eval "$cmd" 'exit $?'
+		output=$save_output
+		libobjs=$save_libobjs
+		skipped_export=false
+	      else
+		# The command line is too long to execute in one step.
+		func_verbose "using reloadable object file for export list..."
+		skipped_export=:
+		# Break out early, otherwise skipped_export may be
+		# set to false by a later but shorter cmd.
+		break
+	      fi
+	    done
+	    IFS=$save_ifs
+	    if test -n "$export_symbols_regex" && test : != "$skipped_export"; then
+	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+	fi
+
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  tmp_export_symbols=$export_symbols
+	  test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
+	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+	fi
+
+	if test : != "$skipped_export" && test -n "$orig_export_symbols"; then
+	  # The given exports_symbols file has to be filtered, so filter it.
+	  func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
+	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
+	  # 's' commands, which not all seds can handle. GNU sed should be fine
+	  # though. Also, the filter scales superlinearly with the number of
+	  # global variables. join(1) would be nice here, but unfortunately
+	  # isn't a blessed tool.
+	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+	  export_symbols=$output_objdir/$libname.def
+	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+	fi
+
+	tmp_deplibs=
+	for test_deplib in $deplibs; do
+	  case " $convenience " in
+	  *" $test_deplib "*) ;;
+	  *)
+	    func_append tmp_deplibs " $test_deplib"
+	    ;;
+	  esac
+	done
+	deplibs=$tmp_deplibs
+
+	if test -n "$convenience"; then
+	  if test -n "$whole_archive_flag_spec" &&
+	    test yes = "$compiler_needs_object" &&
+	    test -z "$libobjs"; then
+	    # extract the archives, so we have objects to list.
+	    # TODO: could optimize this to just extract one archive.
+	    whole_archive_flag_spec=
+	  fi
+	  if test -n "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	    test "X$libobjs" = "X " && libobjs=
+	  else
+	    gentop=$output_objdir/${outputname}x
+	    func_append generated " $gentop"
+
+	    func_extract_archives $gentop $convenience
+	    func_append libobjs " $func_extract_archives_result"
+	    test "X$libobjs" = "X " && libobjs=
+	  fi
+	fi
+
+	if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then
+	  eval flag=\"$thread_safe_flag_spec\"
+	  func_append linker_flags " $flag"
+	fi
+
+	# Make a backup of the uninstalled library when relinking
+	if test relink = "$opt_mode"; then
+	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
+	fi
+
+	# Do each of the archive commands.
+	if test yes = "$module" && test -n "$module_cmds"; then
+	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	    eval test_cmds=\"$module_expsym_cmds\"
+	    cmds=$module_expsym_cmds
+	  else
+	    eval test_cmds=\"$module_cmds\"
+	    cmds=$module_cmds
+	  fi
+	else
+	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	    eval test_cmds=\"$archive_expsym_cmds\"
+	    cmds=$archive_expsym_cmds
+	  else
+	    eval test_cmds=\"$archive_cmds\"
+	    cmds=$archive_cmds
+	  fi
+	fi
+
+	if test : != "$skipped_export" &&
+	   func_len " $test_cmds" &&
+	   len=$func_len_result &&
+	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  :
+	else
+	  # The command line is too long to link in one step, link piecewise
+	  # or, if using GNU ld and skipped_export is not :, use a linker
+	  # script.
+
+	  # Save the value of $output and $libobjs because we want to
+	  # use them later.  If we have whole_archive_flag_spec, we
+	  # want to use save_libobjs as it was before
+	  # whole_archive_flag_spec was expanded, because we can't
+	  # assume the linker understands whole_archive_flag_spec.
+	  # This may have to be revisited, in case too many
+	  # convenience libraries get linked in and end up exceeding
+	  # the spec.
+	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	  fi
+	  save_output=$output
+	  func_basename "$output"
+	  output_la=$func_basename_result
+
+	  # Clear the reloadable object creation command queue and
+	  # initialize k to one.
+	  test_cmds=
+	  concat_cmds=
+	  objlist=
+	  last_robj=
+	  k=1
+
+	  if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
+	    output=$output_objdir/$output_la.lnkscript
+	    func_verbose "creating GNU ld script: $output"
+	    echo 'INPUT (' > $output
+	    for obj in $save_libobjs
+	    do
+	      func_to_tool_file "$obj"
+	      $ECHO "$func_to_tool_file_result" >> $output
+	    done
+	    echo ')' >> $output
+	    func_append delfiles " $output"
+	    func_to_tool_file "$output"
+	    output=$func_to_tool_file_result
+	  elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
+	    output=$output_objdir/$output_la.lnk
+	    func_verbose "creating linker input file list: $output"
+	    : > $output
+	    set x $save_libobjs
+	    shift
+	    firstobj=
+	    if test yes = "$compiler_needs_object"; then
+	      firstobj="$1 "
+	      shift
+	    fi
+	    for obj
+	    do
+	      func_to_tool_file "$obj"
+	      $ECHO "$func_to_tool_file_result" >> $output
+	    done
+	    func_append delfiles " $output"
+	    func_to_tool_file "$output"
+	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
+	  else
+	    if test -n "$save_libobjs"; then
+	      func_verbose "creating reloadable object files..."
+	      output=$output_objdir/$output_la-$k.$objext
+	      eval test_cmds=\"$reload_cmds\"
+	      func_len " $test_cmds"
+	      len0=$func_len_result
+	      len=$len0
+
+	      # Loop over the list of objects to be linked.
+	      for obj in $save_libobjs
+	      do
+		func_len " $obj"
+		func_arith $len + $func_len_result
+		len=$func_arith_result
+		if test -z "$objlist" ||
+		   test "$len" -lt "$max_cmd_len"; then
+		  func_append objlist " $obj"
+		else
+		  # The command $test_cmds is almost too long, add a
+		  # command to the queue.
+		  if test 1 -eq "$k"; then
+		    # The first file doesn't have a previous command to add.
+		    reload_objs=$objlist
+		    eval concat_cmds=\"$reload_cmds\"
+		  else
+		    # All subsequent reloadable object files will link in
+		    # the last one created.
+		    reload_objs="$objlist $last_robj"
+		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
+		  fi
+		  last_robj=$output_objdir/$output_la-$k.$objext
+		  func_arith $k + 1
+		  k=$func_arith_result
+		  output=$output_objdir/$output_la-$k.$objext
+		  objlist=" $obj"
+		  func_len " $last_robj"
+		  func_arith $len0 + $func_len_result
+		  len=$func_arith_result
+		fi
+	      done
+	      # Handle the remaining objects by creating one last
+	      # reloadable object file.  All subsequent reloadable object
+	      # files will link in the last one created.
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      reload_objs="$objlist $last_robj"
+	      eval concat_cmds=\"\$concat_cmds$reload_cmds\"
+	      if test -n "$last_robj"; then
+	        eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+	      fi
+	      func_append delfiles " $output"
+
+	    else
+	      output=
+	    fi
+
+	    ${skipped_export-false} && {
+	      func_verbose "generating symbol list for '$libname.la'"
+	      export_symbols=$output_objdir/$libname.exp
+	      $opt_dry_run || $RM $export_symbols
+	      libobjs=$output
+	      # Append the command to create the export file.
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
+	      if test -n "$last_robj"; then
+		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+	      fi
+	    }
+
+	    test -n "$save_libobjs" &&
+	      func_verbose "creating a temporary reloadable object file: $output"
+
+	    # Loop through the commands generated above and execute them.
+	    save_ifs=$IFS; IFS='~'
+	    for cmd in $concat_cmds; do
+	      IFS=$save_ifs
+	      $opt_quiet || {
+		  func_quote_for_expand "$cmd"
+		  eval "func_echo $func_quote_for_expand_result"
+	      }
+	      $opt_dry_run || eval "$cmd" || {
+		lt_exit=$?
+
+		# Restore the uninstalled library and exit
+		if test relink = "$opt_mode"; then
+		  ( cd "$output_objdir" && \
+		    $RM "${realname}T" && \
+		    $MV "${realname}U" "$realname" )
+		fi
+
+		exit $lt_exit
+	      }
+	    done
+	    IFS=$save_ifs
+
+	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
+	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+
+          ${skipped_export-false} && {
+	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	      tmp_export_symbols=$export_symbols
+	      test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
+	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+	    fi
+
+	    if test -n "$orig_export_symbols"; then
+	      # The given exports_symbols file has to be filtered, so filter it.
+	      func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
+	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
+	      # 's' commands, which not all seds can handle. GNU sed should be fine
+	      # though. Also, the filter scales superlinearly with the number of
+	      # global variables. join(1) would be nice here, but unfortunately
+	      # isn't a blessed tool.
+	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+	      export_symbols=$output_objdir/$libname.def
+	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+	    fi
+	  }
+
+	  libobjs=$output
+	  # Restore the value of output.
+	  output=$save_output
+
+	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	    test "X$libobjs" = "X " && libobjs=
+	  fi
+	  # Expand the library linking commands again to reset the
+	  # value of $libobjs for piecewise linking.
+
+	  # Do each of the archive commands.
+	  if test yes = "$module" && test -n "$module_cmds"; then
+	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	      cmds=$module_expsym_cmds
+	    else
+	      cmds=$module_cmds
+	    fi
+	  else
+	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	      cmds=$archive_expsym_cmds
+	    else
+	      cmds=$archive_cmds
+	    fi
+	  fi
+	fi
+
+	if test -n "$delfiles"; then
+	  # Append the command to remove temporary files to $cmds.
+	  eval cmds=\"\$cmds~\$RM $delfiles\"
+	fi
+
+	# Add any objects from preloaded convenience libraries
+	if test -n "$dlprefiles"; then
+	  gentop=$output_objdir/${outputname}x
+	  func_append generated " $gentop"
+
+	  func_extract_archives $gentop $dlprefiles
+	  func_append libobjs " $func_extract_archives_result"
+	  test "X$libobjs" = "X " && libobjs=
+	fi
+
+	save_ifs=$IFS; IFS='~'
+	for cmd in $cmds; do
+	  IFS=$sp$nl
+	  eval cmd=\"$cmd\"
+	  IFS=$save_ifs
+	  $opt_quiet || {
+	    func_quote_for_expand "$cmd"
+	    eval "func_echo $func_quote_for_expand_result"
+	  }
+	  $opt_dry_run || eval "$cmd" || {
+	    lt_exit=$?
+
+	    # Restore the uninstalled library and exit
+	    if test relink = "$opt_mode"; then
+	      ( cd "$output_objdir" && \
+	        $RM "${realname}T" && \
+		$MV "${realname}U" "$realname" )
+	    fi
+
+	    exit $lt_exit
+	  }
+	done
+	IFS=$save_ifs
+
+	# Restore the uninstalled library and exit
+	if test relink = "$opt_mode"; then
+	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
+
+	  if test -n "$convenience"; then
+	    if test -z "$whole_archive_flag_spec"; then
+	      func_show_eval '${RM}r "$gentop"'
+	    fi
+	  fi
+
+	  exit $EXIT_SUCCESS
+	fi
+
+	# Create links to the real library.
+	for linkname in $linknames; do
+	  if test "$realname" != "$linkname"; then
+	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
+	  fi
+	done
+
+	# If -module or -export-dynamic was specified, set the dlname.
+	if test yes = "$module" || test yes = "$export_dynamic"; then
+	  # On all known operating systems, these are identical.
+	  dlname=$soname
+	fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+	func_warning "'-dlopen' is ignored for objects"
+      fi
+
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+	func_warning "'-l' and '-L' are ignored for objects" ;;
+      esac
+
+      test -n "$rpath" && \
+	func_warning "'-rpath' is ignored for objects"
+
+      test -n "$xrpath" && \
+	func_warning "'-R' is ignored for objects"
+
+      test -n "$vinfo" && \
+	func_warning "'-version-info' is ignored for objects"
+
+      test -n "$release" && \
+	func_warning "'-release' is ignored for objects"
+
+      case $output in
+      *.lo)
+	test -n "$objs$old_deplibs" && \
+	  func_fatal_error "cannot build library object '$output' from non-libtool objects"
+
+	libobj=$output
+	func_lo2o "$libobj"
+	obj=$func_lo2o_result
+	;;
+      *)
+	libobj=
+	obj=$output
+	;;
+      esac
+
+      # Delete the old objects.
+      $opt_dry_run || $RM $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # if reload_cmds runs $LD directly, get rid of -Wl from
+      # whole_archive_flag_spec and hope we can get by with turning comma
+      # into space.
+      case $reload_cmds in
+        *\$LD[\ \$]*) wl= ;;
+      esac
+      if test -n "$convenience"; then
+	if test -n "$whole_archive_flag_spec"; then
+	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+	  test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
+	  reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags
+	else
+	  gentop=$output_objdir/${obj}x
+	  func_append generated " $gentop"
+
+	  func_extract_archives $gentop $convenience
+	  reload_conv_objs="$reload_objs $func_extract_archives_result"
+	fi
+      fi
+
+      # If we're not building shared, we need to use non_pic_objs
+      test yes = "$build_libtool_libs" || libobjs=$non_pic_objects
+
+      # Create the old-style object.
+      reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs
+
+      output=$obj
+      func_execute_cmds "$reload_cmds" 'exit $?'
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+	if test -n "$gentop"; then
+	  func_show_eval '${RM}r "$gentop"'
+	fi
+
+	exit $EXIT_SUCCESS
+      fi
+
+      test yes = "$build_libtool_libs" || {
+	if test -n "$gentop"; then
+	  func_show_eval '${RM}r "$gentop"'
+	fi
+
+	# Create an invalid libtool object if no PIC, so that we don't
+	# accidentally link it into a program.
+	# $show "echo timestamp > $libobj"
+	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
+	exit $EXIT_SUCCESS
+      }
+
+      if test -n "$pic_flag" || test default != "$pic_mode"; then
+	# Only do commands if we really have different PIC objects.
+	reload_objs="$libobjs $reload_conv_objs"
+	output=$libobj
+	func_execute_cmds "$reload_cmds" 'exit $?'
+      fi
+
+      if test -n "$gentop"; then
+	func_show_eval '${RM}r "$gentop"'
+      fi
+
+      exit $EXIT_SUCCESS
+      ;;
+
+    prog)
+      case $host in
+	*cygwin*) func_stripname '' '.exe' "$output"
+	          output=$func_stripname_result.exe;;
+      esac
+      test -n "$vinfo" && \
+	func_warning "'-version-info' is ignored for programs"
+
+      test -n "$release" && \
+	func_warning "'-release' is ignored for programs"
+
+      $preload \
+	&& test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \
+	&& func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support."
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+	# On Rhapsody replace the C library is the System framework
+	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
+	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
+	;;
+      esac
+
+      case $host in
+      *-*-darwin*)
+	# Don't allow lazy linking, it breaks C++ global constructors
+	# But is supposedly fixed on 10.4 or later (yay!).
+	if test CXX = "$tagname"; then
+	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
+	    10.[0123])
+	      func_append compile_command " $wl-bind_at_load"
+	      func_append finalize_command " $wl-bind_at_load"
+	    ;;
+	  esac
+	fi
+	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
+	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	;;
+      esac
+
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+	case " $new_libs " in
+	*" -L$path/$objdir "*) ;;
+	*)
+	  case " $compile_deplibs " in
+	  *" -L$path/$objdir "*)
+	    func_append new_libs " -L$path/$objdir" ;;
+	  esac
+	  ;;
+	esac
+      done
+      for deplib in $compile_deplibs; do
+	case $deplib in
+	-L*)
+	  case " $new_libs " in
+	  *" $deplib "*) ;;
+	  *) func_append new_libs " $deplib" ;;
+	  esac
+	  ;;
+	*) func_append new_libs " $deplib" ;;
+	esac
+      done
+      compile_deplibs=$new_libs
+
+
+      func_append compile_command " $compile_deplibs"
+      func_append finalize_command " $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	for libdir in $rpath $xrpath; do
+	  # This is the magic to use -rpath.
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) func_append finalize_rpath " $libdir" ;;
+	  esac
+	done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs=$libdir
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    func_append rpath " $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) func_append perm_rpath " $libdir" ;;
+	  esac
+	fi
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+	  testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
+	  case :$dllsearchpath: in
+	  *":$libdir:"*) ;;
+	  ::) dllsearchpath=$libdir;;
+	  *) func_append dllsearchpath ":$libdir";;
+	  esac
+	  case :$dllsearchpath: in
+	  *":$testbindir:"*) ;;
+	  ::) dllsearchpath=$testbindir;;
+	  *) func_append dllsearchpath ":$testbindir";;
+	  esac
+	  ;;
+	esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir=$hardcode_libdirs
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath=$rpath
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs=$libdir
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    func_append rpath " $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$finalize_perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) func_append finalize_perm_rpath " $libdir" ;;
+	  esac
+	fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir=$hardcode_libdirs
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath=$rpath
+
+      if test -n "$libobjs" && test yes = "$build_old_libs"; then
+	# Transform all the library objects into standard objects.
+	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+      fi
+
+      func_generate_dlsyms "$outputname" "@PROGRAM@" false
+
+      # template prelinking step
+      if test -n "$prelink_cmds"; then
+	func_execute_cmds "$prelink_cmds" 'exit $?'
+      fi
+
+      wrappers_required=:
+      case $host in
+      *cegcc* | *mingw32ce*)
+        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
+        wrappers_required=false
+        ;;
+      *cygwin* | *mingw* )
+        test yes = "$build_libtool_libs" || wrappers_required=false
+        ;;
+      *)
+        if test no = "$need_relink" || test yes != "$build_libtool_libs"; then
+          wrappers_required=false
+        fi
+        ;;
+      esac
+      $wrappers_required || {
+	# Replace the output file specification.
+	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+	link_command=$compile_command$compile_rpath
+
+	# We have no uninstalled library dependencies, so finalize right now.
+	exit_status=0
+	func_show_eval "$link_command" 'exit_status=$?'
+
+	if test -n "$postlink_cmds"; then
+	  func_to_tool_file "$output"
+	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	  func_execute_cmds "$postlink_cmds" 'exit $?'
+	fi
+
+	# Delete the generated files.
+	if test -f "$output_objdir/${outputname}S.$objext"; then
+	  func_show_eval '$RM "$output_objdir/${outputname}S.$objext"'
+	fi
+
+	exit $exit_status
+      }
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+	if test -n "$perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $perm_rpath; do
+	    func_append rpath "$dir:"
+	  done
+	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+	if test -n "$finalize_perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $finalize_perm_rpath; do
+	    func_append rpath "$dir:"
+	  done
+	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+      fi
+
+      if test yes = "$no_install"; then
+	# We don't need to create a wrapper script.
+	link_command=$compile_var$compile_command$compile_rpath
+	# Replace the output file specification.
+	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+	# Delete the old output file.
+	$opt_dry_run || $RM $output
+	# Link the executable and exit
+	func_show_eval "$link_command" 'exit $?'
+
+	if test -n "$postlink_cmds"; then
+	  func_to_tool_file "$output"
+	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	  func_execute_cmds "$postlink_cmds" 'exit $?'
+	fi
+
+	exit $EXIT_SUCCESS
+      fi
+
+      case $hardcode_action,$fast_install in
+        relink,*)
+	  # Fast installation is not supported
+	  link_command=$compile_var$compile_command$compile_rpath
+	  relink_command=$finalize_var$finalize_command$finalize_rpath
+
+	  func_warning "this platform does not like uninstalled shared libraries"
+	  func_warning "'$output' will be relinked during installation"
+	  ;;
+        *,yes)
+	  link_command=$finalize_var$compile_command$finalize_rpath
+	  relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
+          ;;
+	*,no)
+	  link_command=$compile_var$compile_command$compile_rpath
+	  relink_command=$finalize_var$finalize_command$finalize_rpath
+          ;;
+	*,needless)
+	  link_command=$finalize_var$compile_command$finalize_rpath
+	  relink_command=
+          ;;
+      esac
+
+      # Replace the output file specification.
+      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      func_show_eval "$link_command" 'exit $?'
+
+      if test -n "$postlink_cmds"; then
+	func_to_tool_file "$output_objdir/$outputname"
+	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	func_execute_cmds "$postlink_cmds" 'exit $?'
+      fi
+
+      # Now create the wrapper script.
+      func_verbose "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+	# Preserve any variables that may affect compiler behavior
+	for var in $variables_saved_for_relink; do
+	  if eval test -z \"\${$var+set}\"; then
+	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+	  elif eval var_value=\$$var; test -z "$var_value"; then
+	    relink_command="$var=; export $var; $relink_command"
+	  else
+	    func_quote_for_eval "$var_value"
+	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+	  fi
+	done
+	relink_command="(cd `pwd`; $relink_command)"
+	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if not in dry run mode.
+      $opt_dry_run || {
+	# win32 will think the script is a binary if it has
+	# a .exe suffix, so we strip it off here.
+	case $output in
+	  *.exe) func_stripname '' '.exe' "$output"
+	         output=$func_stripname_result ;;
+	esac
+	# test for cygwin because mv fails w/o .exe extensions
+	case $host in
+	  *cygwin*)
+	    exeext=.exe
+	    func_stripname '' '.exe' "$outputname"
+	    outputname=$func_stripname_result ;;
+	  *) exeext= ;;
+	esac
+	case $host in
+	  *cygwin* | *mingw* )
+	    func_dirname_and_basename "$output" "" "."
+	    output_name=$func_basename_result
+	    output_path=$func_dirname_result
+	    cwrappersource=$output_path/$objdir/lt-$output_name.c
+	    cwrapper=$output_path/$output_name.exe
+	    $RM $cwrappersource $cwrapper
+	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+	    func_emit_cwrapperexe_src > $cwrappersource
+
+	    # The wrapper executable is built using the $host compiler,
+	    # because it contains $host paths and files. If cross-
+	    # compiling, it, like the target executable, must be
+	    # executed on the $host or under an emulation environment.
+	    $opt_dry_run || {
+	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
+	      $STRIP $cwrapper
+	    }
+
+	    # Now, create the wrapper script for func_source use:
+	    func_ltwrapper_scriptname $cwrapper
+	    $RM $func_ltwrapper_scriptname_result
+	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
+	    $opt_dry_run || {
+	      # note: this script will not be executed, so do not chmod.
+	      if test "x$build" = "x$host"; then
+		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
+	      else
+		func_emit_wrapper no > $func_ltwrapper_scriptname_result
+	      fi
+	    }
+	  ;;
+	  * )
+	    $RM $output
+	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
+
+	    func_emit_wrapper no > $output
+	    chmod +x $output
+	  ;;
+	esac
+      }
+      exit $EXIT_SUCCESS
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      case $build_libtool_libs in
+        convenience)
+	  oldobjs="$libobjs_save $symfileobj"
+	  addlibs=$convenience
+	  build_libtool_libs=no
+	  ;;
+	module)
+	  oldobjs=$libobjs_save
+	  addlibs=$old_convenience
+	  build_libtool_libs=no
+          ;;
+	*)
+	  oldobjs="$old_deplibs $non_pic_objects"
+	  $preload && test -f "$symfileobj" \
+	    && func_append oldobjs " $symfileobj"
+	  addlibs=$old_convenience
+	  ;;
+      esac
+
+      if test -n "$addlibs"; then
+	gentop=$output_objdir/${outputname}x
+	func_append generated " $gentop"
+
+	func_extract_archives $gentop $addlibs
+	func_append oldobjs " $func_extract_archives_result"
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then
+	cmds=$old_archive_from_new_cmds
+      else
+
+	# Add any objects from preloaded convenience libraries
+	if test -n "$dlprefiles"; then
+	  gentop=$output_objdir/${outputname}x
+	  func_append generated " $gentop"
+
+	  func_extract_archives $gentop $dlprefiles
+	  func_append oldobjs " $func_extract_archives_result"
+	fi
+
+	# POSIX demands no paths to be encoded in archives.  We have
+	# to avoid creating archives with duplicate basenames if we
+	# might have to extract them afterwards, e.g., when creating a
+	# static archive out of a convenience library, or when linking
+	# the entirety of a libtool archive into another (currently
+	# not supported by libtool).
+	if (for obj in $oldobjs
+	    do
+	      func_basename "$obj"
+	      $ECHO "$func_basename_result"
+	    done | sort | sort -uc >/dev/null 2>&1); then
+	  :
+	else
+	  echo "copying selected object files to avoid basename conflicts..."
+	  gentop=$output_objdir/${outputname}x
+	  func_append generated " $gentop"
+	  func_mkdir_p "$gentop"
+	  save_oldobjs=$oldobjs
+	  oldobjs=
+	  counter=1
+	  for obj in $save_oldobjs
+	  do
+	    func_basename "$obj"
+	    objbase=$func_basename_result
+	    case " $oldobjs " in
+	    " ") oldobjs=$obj ;;
+	    *[\ /]"$objbase "*)
+	      while :; do
+		# Make sure we don't pick an alternate name that also
+		# overlaps.
+		newobj=lt$counter-$objbase
+		func_arith $counter + 1
+		counter=$func_arith_result
+		case " $oldobjs " in
+		*[\ /]"$newobj "*) ;;
+		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
+		esac
+	      done
+	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+	      func_append oldobjs " $gentop/$newobj"
+	      ;;
+	    *) func_append oldobjs " $obj" ;;
+	    esac
+	  done
+	fi
+	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+	tool_oldlib=$func_to_tool_file_result
+	eval cmds=\"$old_archive_cmds\"
+
+	func_len " $cmds"
+	len=$func_len_result
+	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  cmds=$old_archive_cmds
+	elif test -n "$archiver_list_spec"; then
+	  func_verbose "using command file archive linking..."
+	  for obj in $oldobjs
+	  do
+	    func_to_tool_file "$obj"
+	    $ECHO "$func_to_tool_file_result"
+	  done > $output_objdir/$libname.libcmd
+	  func_to_tool_file "$output_objdir/$libname.libcmd"
+	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
+	  cmds=$old_archive_cmds
+	else
+	  # the command line is too long to link in one step, link in parts
+	  func_verbose "using piecewise archive linking..."
+	  save_RANLIB=$RANLIB
+	  RANLIB=:
+	  objlist=
+	  concat_cmds=
+	  save_oldobjs=$oldobjs
+	  oldobjs=
+	  # Is there a better way of finding the last object in the list?
+	  for obj in $save_oldobjs
+	  do
+	    last_oldobj=$obj
+	  done
+	  eval test_cmds=\"$old_archive_cmds\"
+	  func_len " $test_cmds"
+	  len0=$func_len_result
+	  len=$len0
+	  for obj in $save_oldobjs
+	  do
+	    func_len " $obj"
+	    func_arith $len + $func_len_result
+	    len=$func_arith_result
+	    func_append objlist " $obj"
+	    if test "$len" -lt "$max_cmd_len"; then
+	      :
+	    else
+	      # the above command should be used before it gets too long
+	      oldobjs=$objlist
+	      if test "$obj" = "$last_oldobj"; then
+		RANLIB=$save_RANLIB
+	      fi
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      eval concat_cmds=\"\$concat_cmds$old_archive_cmds\"
+	      objlist=
+	      len=$len0
+	    fi
+	  done
+	  RANLIB=$save_RANLIB
+	  oldobjs=$objlist
+	  if test -z "$oldobjs"; then
+	    eval cmds=\"\$concat_cmds\"
+	  else
+	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+	  fi
+	fi
+      fi
+      func_execute_cmds "$cmds" 'exit $?'
+    done
+
+    test -n "$generated" && \
+      func_show_eval "${RM}r$generated"
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test yes = "$build_old_libs" && old_library=$libname.$libext
+      func_verbose "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+	if eval test -z \"\${$var+set}\"; then
+	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+	elif eval var_value=\$$var; test -z "$var_value"; then
+	  relink_command="$var=; export $var; $relink_command"
+	else
+	  func_quote_for_eval "$var_value"
+	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+	fi
+      done
+      # Quote the link command for shipping.
+      relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+      if test yes = "$hardcode_automatic"; then
+	relink_command=
+      fi
+
+      # Only create the output if not a dry run.
+      $opt_dry_run || {
+	for installed in no yes; do
+	  if test yes = "$installed"; then
+	    if test -z "$install_libdir"; then
+	      break
+	    fi
+	    output=$output_objdir/${outputname}i
+	    # Replace all uninstalled libtool libraries with the installed ones
+	    newdependency_libs=
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      *.la)
+		func_basename "$deplib"
+		name=$func_basename_result
+		func_resolve_sysroot "$deplib"
+		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
+		test -z "$libdir" && \
+		  func_fatal_error "'$deplib' is not a valid libtool archive"
+		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
+		;;
+	      -L*)
+		func_stripname -L '' "$deplib"
+		func_replace_sysroot "$func_stripname_result"
+		func_append newdependency_libs " -L$func_replace_sysroot_result"
+		;;
+	      -R*)
+		func_stripname -R '' "$deplib"
+		func_replace_sysroot "$func_stripname_result"
+		func_append newdependency_libs " -R$func_replace_sysroot_result"
+		;;
+	      *) func_append newdependency_libs " $deplib" ;;
+	      esac
+	    done
+	    dependency_libs=$newdependency_libs
+	    newdlfiles=
+
+	    for lib in $dlfiles; do
+	      case $lib in
+	      *.la)
+	        func_basename "$lib"
+		name=$func_basename_result
+		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+		test -z "$libdir" && \
+		  func_fatal_error "'$lib' is not a valid libtool archive"
+		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
+		;;
+	      *) func_append newdlfiles " $lib" ;;
+	      esac
+	    done
+	    dlfiles=$newdlfiles
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      case $lib in
+	      *.la)
+		# Only pass preopened files to the pseudo-archive (for
+		# eventual linking with the app. that links it) if we
+		# didn't already link the preopened objects directly into
+		# the library:
+		func_basename "$lib"
+		name=$func_basename_result
+		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+		test -z "$libdir" && \
+		  func_fatal_error "'$lib' is not a valid libtool archive"
+		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
+		;;
+	      esac
+	    done
+	    dlprefiles=$newdlprefiles
+	  else
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      func_append newdlfiles " $abs"
+	    done
+	    dlfiles=$newdlfiles
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      func_append newdlprefiles " $abs"
+	    done
+	    dlprefiles=$newdlprefiles
+	  fi
+	  $RM $output
+	  # place dlname in correct position for cygwin
+	  # In fact, it would be nice if we could use this code for all target
+	  # systems that can't hard-code library paths into their executables
+	  # and that have no shared library path variable independent of PATH,
+	  # but it turns out we can't easily determine that from inspecting
+	  # libtool variables, so we have to hard-code the OSs to which it
+	  # applies here; at the moment, that means platforms that use the PE
+	  # object format with DLL files.  See the long comment at the top of
+	  # tests/bindir.at for full details.
+	  tdlname=$dlname
+	  case $host,$output,$installed,$module,$dlname in
+	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
+	      # If a -bindir argument was supplied, place the dll there.
+	      if test -n "$bindir"; then
+		func_relative_path "$install_libdir" "$bindir"
+		tdlname=$func_relative_path_result/$dlname
+	      else
+		# Otherwise fall back on heuristic.
+		tdlname=../bin/$dlname
+	      fi
+	      ;;
+	  esac
+	  $ECHO > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Linker flags that cannot go in dependency_libs.
+inherited_linker_flags='$new_inherited_linker_flags'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Names of additional weak libraries provided by this library
+weak_library_names='$weak_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+	  if test no,yes = "$installed,$need_relink"; then
+	    $ECHO >> $output "\
+relink_command=\"$relink_command\""
+	  fi
+	done
+      }
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
+      ;;
+    esac
+    exit $EXIT_SUCCESS
+}
+
+if test link = "$opt_mode" || test relink = "$opt_mode"; then
+  func_mode_link ${1+"$@"}
+fi
+
+
+# func_mode_uninstall arg...
+func_mode_uninstall ()
+{
+    $debug_cmd
+
+    RM=$nonopt
+    files=
+    rmforce=false
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic=$magic
+
+    for arg
+    do
+      case $arg in
+      -f) func_append RM " $arg"; rmforce=: ;;
+      -*) func_append RM " $arg" ;;
+      *) func_append files " $arg" ;;
+      esac
+    done
+
+    test -z "$RM" && \
+      func_fatal_help "you must specify an RM program"
+
+    rmdirs=
+
+    for file in $files; do
+      func_dirname "$file" "" "."
+      dir=$func_dirname_result
+      if test . = "$dir"; then
+	odir=$objdir
+      else
+	odir=$dir/$objdir
+      fi
+      func_basename "$file"
+      name=$func_basename_result
+      test uninstall = "$opt_mode" && odir=$dir
+
+      # Remember odir for removal later, being careful to avoid duplicates
+      if test clean = "$opt_mode"; then
+	case " $rmdirs " in
+	  *" $odir "*) ;;
+	  *) func_append rmdirs " $odir" ;;
+	esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if { test -L "$file"; } >/dev/null 2>&1 ||
+	 { test -h "$file"; } >/dev/null 2>&1 ||
+	 test -f "$file"; then
+	:
+      elif test -d "$file"; then
+	exit_status=1
+	continue
+      elif $rmforce; then
+	continue
+      fi
+
+      rmfiles=$file
+
+      case $name in
+      *.la)
+	# Possibly a libtool archive, so verify it.
+	if func_lalib_p "$file"; then
+	  func_source $dir/$name
+
+	  # Delete the libtool libraries and symlinks.
+	  for n in $library_names; do
+	    func_append rmfiles " $odir/$n"
+	  done
+	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
+
+	  case $opt_mode in
+	  clean)
+	    case " $library_names " in
+	    *" $dlname "*) ;;
+	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
+	    esac
+	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
+	    ;;
+	  uninstall)
+	    if test -n "$library_names"; then
+	      # Do each command in the postuninstall commands.
+	      func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1'
+	    fi
+
+	    if test -n "$old_library"; then
+	      # Do each command in the old_postuninstall commands.
+	      func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1'
+	    fi
+	    # FIXME: should reinstall the best remaining shared library.
+	    ;;
+	  esac
+	fi
+	;;
+
+      *.lo)
+	# Possibly a libtool object, so verify it.
+	if func_lalib_p "$file"; then
+
+	  # Read the .lo file
+	  func_source $dir/$name
+
+	  # Add PIC object to the list of files to remove.
+	  if test -n "$pic_object" && test none != "$pic_object"; then
+	    func_append rmfiles " $dir/$pic_object"
+	  fi
+
+	  # Add non-PIC object to the list of files to remove.
+	  if test -n "$non_pic_object" && test none != "$non_pic_object"; then
+	    func_append rmfiles " $dir/$non_pic_object"
+	  fi
+	fi
+	;;
+
+      *)
+	if test clean = "$opt_mode"; then
+	  noexename=$name
+	  case $file in
+	  *.exe)
+	    func_stripname '' '.exe' "$file"
+	    file=$func_stripname_result
+	    func_stripname '' '.exe' "$name"
+	    noexename=$func_stripname_result
+	    # $file with .exe has already been added to rmfiles,
+	    # add $file without .exe
+	    func_append rmfiles " $file"
+	    ;;
+	  esac
+	  # Do a test to see if this is a libtool program.
+	  if func_ltwrapper_p "$file"; then
+	    if func_ltwrapper_executable_p "$file"; then
+	      func_ltwrapper_scriptname "$file"
+	      relink_command=
+	      func_source $func_ltwrapper_scriptname_result
+	      func_append rmfiles " $func_ltwrapper_scriptname_result"
+	    else
+	      relink_command=
+	      func_source $dir/$noexename
+	    fi
+
+	    # note $name still contains .exe if it was in $file originally
+	    # as does the version of $file that was added into $rmfiles
+	    func_append rmfiles " $odir/$name $odir/${name}S.$objext"
+	    if test yes = "$fast_install" && test -n "$relink_command"; then
+	      func_append rmfiles " $odir/lt-$name"
+	    fi
+	    if test "X$noexename" != "X$name"; then
+	      func_append rmfiles " $odir/lt-$noexename.c"
+	    fi
+	  fi
+	fi
+	;;
+      esac
+      func_show_eval "$RM $rmfiles" 'exit_status=1'
+    done
+
+    # Try to remove the $objdir's in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+	func_show_eval "rmdir $dir >/dev/null 2>&1"
+      fi
+    done
+
+    exit $exit_status
+}
+
+if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then
+  func_mode_uninstall ${1+"$@"}
+fi
+
+test -z "$opt_mode" && {
+  help=$generic_help
+  func_fatal_help "you must specify a MODE"
+}
+
+test -z "$exec_cmd" && \
+  func_fatal_help "invalid operation mode '$opt_mode'"
+
+if test -n "$exec_cmd"; then
+  eval exec "$exec_cmd"
+  exit $EXIT_FAILURE
+fi
+
+exit $exit_status
+
+
+# The TAGs below are defined such that we never get into a situation
+# where we disable both kinds of libraries.  Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them.  This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration.  But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
diff --git a/proofs/lfsc_checker/config/ltoptions.m4 b/proofs/lfsc_checker/config/ltoptions.m4
new file mode 100644
index 0000000..94b0829
--- /dev/null
+++ b/proofs/lfsc_checker/config/ltoptions.m4
@@ -0,0 +1,437 @@
+# Helper functions for option handling.                    -*- Autoconf -*-
+#
+#   Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software
+#   Foundation, Inc.
+#   Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 8 ltoptions.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+
+
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
+m4_define([_LT_MANGLE_OPTION],
+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
+
+
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
+# saved as a flag.
+m4_define([_LT_SET_OPTION],
+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
+        _LT_MANGLE_DEFUN([$1], [$2]),
+    [m4_warning([Unknown $1 option '$2'])])[]dnl
+])
+
+
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+m4_define([_LT_IF_OPTION],
+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
+
+
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
+m4_define([_LT_UNLESS_OPTIONS],
+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+	    [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
+		      [m4_define([$0_found])])])[]dnl
+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
+])[]dnl
+])
+
+
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME.  If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
+m4_defun([_LT_SET_OPTIONS],
+[# Set options
+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+    [_LT_SET_OPTION([$1], _LT_Option)])
+
+m4_if([$1],[LT_INIT],[
+  dnl
+  dnl Simply set some default values (i.e off) if boolean options were not
+  dnl specified:
+  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
+  ])
+  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
+  ])
+  dnl
+  dnl If no reference was made to various pairs of opposing options, then
+  dnl we run the default mode handler for the pair.  For example, if neither
+  dnl 'shared' nor 'disable-shared' was passed, we enable building of shared
+  dnl archives by default:
+  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
+  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
+  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
+  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
+		   [_LT_ENABLE_FAST_INSTALL])
+  _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4],
+		   [_LT_WITH_AIX_SONAME([aix])])
+  ])
+])# _LT_SET_OPTIONS
+
+
+## --------------------------------- ##
+## Macros to handle LT_INIT options. ##
+## --------------------------------- ##
+
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
+m4_define([_LT_MANGLE_DEFUN],
+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
+
+
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
+m4_define([LT_OPTION_DEFINE],
+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
+])# LT_OPTION_DEFINE
+
+
+# dlopen
+# ------
+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
+])
+
+AU_DEFUN([AC_LIBTOOL_DLOPEN],
+[_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the 'dlopen' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
+
+
+# win32-dll
+# ---------
+# Declare package support for building win32 dll's.
+LT_OPTION_DEFINE([LT_INIT], [win32-dll],
+[enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+  ;;
+esac
+
+test -z "$AS" && AS=as
+_LT_DECL([], [AS],      [1], [Assembler program])dnl
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
+])# win32-dll
+
+AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the 'win32-dll' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
+
+
+# _LT_ENABLE_SHARED([DEFAULT])
+# ----------------------------
+# implement the --enable-shared flag, and supports the 'shared' and
+# 'disable-shared' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'.  If omitted, it defaults to 'yes'.
+m4_define([_LT_ENABLE_SHARED],
+[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([shared],
+    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+	[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      for pkg in $enableval; do
+	IFS=$lt_save_ifs
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS=$lt_save_ifs
+      ;;
+    esac],
+    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
+
+    _LT_DECL([build_libtool_libs], [enable_shared], [0],
+	[Whether or not to build shared libraries])
+])# _LT_ENABLE_SHARED
+
+LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+
+AC_DEFUN([AC_DISABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+
+AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_SHARED], [])
+dnl AC_DEFUN([AM_DISABLE_SHARED], [])
+
+
+
+# _LT_ENABLE_STATIC([DEFAULT])
+# ----------------------------
+# implement the --enable-static flag, and support the 'static' and
+# 'disable-static' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'.  If omitted, it defaults to 'yes'.
+m4_define([_LT_ENABLE_STATIC],
+[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([static],
+    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+	[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      for pkg in $enableval; do
+	IFS=$lt_save_ifs
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS=$lt_save_ifs
+      ;;
+    esac],
+    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
+
+    _LT_DECL([build_old_libs], [enable_static], [0],
+	[Whether or not to build static libraries])
+])# _LT_ENABLE_STATIC
+
+LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+
+AC_DEFUN([AC_DISABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+
+AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_STATIC], [])
+dnl AC_DEFUN([AM_DISABLE_STATIC], [])
+
+
+
+# _LT_ENABLE_FAST_INSTALL([DEFAULT])
+# ----------------------------------
+# implement the --enable-fast-install flag, and support the 'fast-install'
+# and 'disable-fast-install' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'.  If omitted, it defaults to 'yes'.
+m4_define([_LT_ENABLE_FAST_INSTALL],
+[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([fast-install],
+    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      for pkg in $enableval; do
+	IFS=$lt_save_ifs
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS=$lt_save_ifs
+      ;;
+    esac],
+    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
+
+_LT_DECL([fast_install], [enable_fast_install], [0],
+	 [Whether or not to optimize for fast installation])dnl
+])# _LT_ENABLE_FAST_INSTALL
+
+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
+
+# Old names:
+AU_DEFUN([AC_ENABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the 'fast-install' option into LT_INIT's first parameter.])
+])
+
+AU_DEFUN([AC_DISABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the 'disable-fast-install' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
+dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
+
+
+# _LT_WITH_AIX_SONAME([DEFAULT])
+# ----------------------------------
+# implement the --with-aix-soname flag, and support the `aix-soname=aix'
+# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT
+# is either `aix', `both' or `svr4'.  If omitted, it defaults to `aix'.
+m4_define([_LT_WITH_AIX_SONAME],
+[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl
+shared_archive_member_spec=
+case $host,$enable_shared in
+power*-*-aix[[5-9]]*,yes)
+  AC_MSG_CHECKING([which variant of shared library versioning to provide])
+  AC_ARG_WITH([aix-soname],
+    [AS_HELP_STRING([--with-aix-soname=aix|svr4|both],
+      [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])],
+    [case $withval in
+    aix|svr4|both)
+      ;;
+    *)
+      AC_MSG_ERROR([Unknown argument to --with-aix-soname])
+      ;;
+    esac
+    lt_cv_with_aix_soname=$with_aix_soname],
+    [AC_CACHE_VAL([lt_cv_with_aix_soname],
+      [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT)
+    with_aix_soname=$lt_cv_with_aix_soname])
+  AC_MSG_RESULT([$with_aix_soname])
+  if test aix != "$with_aix_soname"; then
+    # For the AIX way of multilib, we name the shared archive member
+    # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
+    # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
+    # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
+    # the AIX toolchain works better with OBJECT_MODE set (default 32).
+    if test 64 = "${OBJECT_MODE-32}"; then
+      shared_archive_member_spec=shr_64
+    else
+      shared_archive_member_spec=shr
+    fi
+  fi
+  ;;
+*)
+  with_aix_soname=aix
+  ;;
+esac
+
+_LT_DECL([], [shared_archive_member_spec], [0],
+    [Shared archive member basename, for filename based shared library versioning on AIX])dnl
+])# _LT_WITH_AIX_SONAME
+
+LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])])
+LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])])
+LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])])
+
+
+# _LT_WITH_PIC([MODE])
+# --------------------
+# implement the --with-pic flag, and support the 'pic-only' and 'no-pic'
+# LT_INIT options.
+# MODE is either 'yes' or 'no'.  If omitted, it defaults to 'both'.
+m4_define([_LT_WITH_PIC],
+[AC_ARG_WITH([pic],
+    [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
+	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+    [lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      for lt_pkg in $withval; do
+	IFS=$lt_save_ifs
+	if test "X$lt_pkg" = "X$lt_p"; then
+	  pic_mode=yes
+	fi
+      done
+      IFS=$lt_save_ifs
+      ;;
+    esac],
+    [pic_mode=m4_default([$1], [default])])
+
+_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
+])# _LT_WITH_PIC
+
+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
+
+# Old name:
+AU_DEFUN([AC_LIBTOOL_PICMODE],
+[_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the 'pic-only' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
+
+## ----------------- ##
+## LTDL_INIT Options ##
+## ----------------- ##
+
+m4_define([_LTDL_MODE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
+		 [m4_define([_LTDL_MODE], [nonrecursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [recursive],
+		 [m4_define([_LTDL_MODE], [recursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [subproject],
+		 [m4_define([_LTDL_MODE], [subproject])])
+
+m4_define([_LTDL_TYPE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [installable],
+		 [m4_define([_LTDL_TYPE], [installable])])
+LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+		 [m4_define([_LTDL_TYPE], [convenience])])
diff --git a/proofs/lfsc_checker/config/ltsugar.m4 b/proofs/lfsc_checker/config/ltsugar.m4
new file mode 100644
index 0000000..48bc934
--- /dev/null
+++ b/proofs/lfsc_checker/config/ltsugar.m4
@@ -0,0 +1,124 @@
+# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
+#
+# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software
+# Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltsugar.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+
+
+# lt_join(SEP, ARG1, [ARG2...])
+# -----------------------------
+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+# associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
+m4_define([lt_join],
+[m4_if([$#], [1], [],
+       [$#], [2], [[$2]],
+       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
+m4_define([_lt_join],
+[m4_if([$#$2], [2], [],
+       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
+
+
+# lt_car(LIST)
+# lt_cdr(LIST)
+# ------------
+# Manipulate m4 lists.
+# These macros are necessary as long as will still need to support
+# Autoconf-2.59, which quotes differently.
+m4_define([lt_car], [[$1]])
+m4_define([lt_cdr],
+[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
+       [$#], 1, [],
+       [m4_dquote(m4_shift($@))])])
+m4_define([lt_unquote], $1)
+
+
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+m4_define([lt_append],
+[m4_define([$1],
+	   m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
+
+
+
+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+# ----------------------------------------------------------
+# Produce a SEP delimited list of all paired combinations of elements of
+# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
+# has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
+m4_define([lt_combine],
+[m4_if(m4_eval([$# > 3]), [1],
+       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
+[[m4_foreach([_Lt_prefix], [$2],
+	     [m4_foreach([_Lt_suffix],
+		]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
+	[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
+
+
+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+# -----------------------------------------------------------------------
+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+m4_define([lt_if_append_uniq],
+[m4_ifdef([$1],
+	  [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
+		 [lt_append([$1], [$2], [$3])$4],
+		 [$5])],
+	  [lt_append([$1], [$2], [$3])$4])])
+
+
+# lt_dict_add(DICT, KEY, VALUE)
+# -----------------------------
+m4_define([lt_dict_add],
+[m4_define([$1($2)], [$3])])
+
+
+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+# --------------------------------------------
+m4_define([lt_dict_add_subkey],
+[m4_define([$1($2:$3)], [$4])])
+
+
+# lt_dict_fetch(DICT, KEY, [SUBKEY])
+# ----------------------------------
+m4_define([lt_dict_fetch],
+[m4_ifval([$3],
+	m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
+    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
+
+
+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+# -----------------------------------------------------------------
+m4_define([lt_if_dict_fetch],
+[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
+	[$5],
+    [$6])])
+
+
+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+# --------------------------------------------------------------
+m4_define([lt_dict_filter],
+[m4_if([$5], [], [],
+  [lt_join(m4_quote(m4_default([$4], [[, ]])),
+           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
+		      [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
+])
diff --git a/proofs/lfsc_checker/config/ltversion.m4 b/proofs/lfsc_checker/config/ltversion.m4
new file mode 100644
index 0000000..fa04b52
--- /dev/null
+++ b/proofs/lfsc_checker/config/ltversion.m4
@@ -0,0 +1,23 @@
+# ltversion.m4 -- version numbers			-*- Autoconf -*-
+#
+#   Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# @configure_input@
+
+# serial 4179 ltversion.m4
+# This file is part of GNU Libtool
+
+m4_define([LT_PACKAGE_VERSION], [2.4.6])
+m4_define([LT_PACKAGE_REVISION], [2.4.6])
+
+AC_DEFUN([LTVERSION_VERSION],
+[macro_version='2.4.6'
+macro_revision='2.4.6'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
diff --git a/proofs/lfsc_checker/config/lt~obsolete.m4 b/proofs/lfsc_checker/config/lt~obsolete.m4
new file mode 100644
index 0000000..c6b26f8
--- /dev/null
+++ b/proofs/lfsc_checker/config/lt~obsolete.m4
@@ -0,0 +1,99 @@
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
+#
+#   Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software
+#   Foundation, Inc.
+#   Written by Scott James Remnant, 2004.
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 5 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN),
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else.  This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+
+m4_ifndef([AC_LIBTOOL_LINKER_OPTION],	[AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
+m4_ifndef([AC_PROG_EGREP],		[AC_DEFUN([AC_PROG_EGREP])])
+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_AC_SHELL_INIT],		[AC_DEFUN([_LT_AC_SHELL_INIT])])
+m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],	[AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
+m4_ifndef([_LT_PROG_LTMAIN],		[AC_DEFUN([_LT_PROG_LTMAIN])])
+m4_ifndef([_LT_AC_TAGVAR],		[AC_DEFUN([_LT_AC_TAGVAR])])
+m4_ifndef([AC_LTDL_ENABLE_INSTALL],	[AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
+m4_ifndef([AC_LTDL_PREOPEN],		[AC_DEFUN([AC_LTDL_PREOPEN])])
+m4_ifndef([_LT_AC_SYS_COMPILER],	[AC_DEFUN([_LT_AC_SYS_COMPILER])])
+m4_ifndef([_LT_AC_LOCK],		[AC_DEFUN([_LT_AC_LOCK])])
+m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],	[AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
+m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],	[AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
+m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],	[AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
+m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
+m4_ifndef([AC_LIBTOOL_OBJDIR],		[AC_DEFUN([AC_LIBTOOL_OBJDIR])])
+m4_ifndef([AC_LTDL_OBJDIR],		[AC_DEFUN([AC_LTDL_OBJDIR])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],	[AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
+m4_ifndef([AC_PATH_MAGIC],		[AC_DEFUN([AC_PATH_MAGIC])])
+m4_ifndef([AC_PROG_LD_GNU],		[AC_DEFUN([AC_PROG_LD_GNU])])
+m4_ifndef([AC_PROG_LD_RELOAD_FLAG],	[AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
+m4_ifndef([AC_DEPLIBS_CHECK_METHOD],	[AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS],	[AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP],	[AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
+m4_ifndef([LT_AC_PROG_EGREP],		[AC_DEFUN([LT_AC_PROG_EGREP])])
+m4_ifndef([LT_AC_PROG_SED],		[AC_DEFUN([LT_AC_PROG_SED])])
+m4_ifndef([_LT_CC_BASENAME],		[AC_DEFUN([_LT_CC_BASENAME])])
+m4_ifndef([_LT_COMPILER_BOILERPLATE],	[AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
+m4_ifndef([_LT_LINKER_BOILERPLATE],	[AC_DEFUN([_LT_LINKER_BOILERPLATE])])
+m4_ifndef([_AC_PROG_LIBTOOL],		[AC_DEFUN([_AC_PROG_LIBTOOL])])
+m4_ifndef([AC_LIBTOOL_SETUP],		[AC_DEFUN([AC_LIBTOOL_SETUP])])
+m4_ifndef([_LT_AC_CHECK_DLFCN],		[AC_DEFUN([_LT_AC_CHECK_DLFCN])])
+m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],	[AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
+m4_ifndef([_LT_AC_TAGCONFIG],		[AC_DEFUN([_LT_AC_TAGCONFIG])])
+m4_ifndef([AC_DISABLE_FAST_INSTALL],	[AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
+m4_ifndef([_LT_AC_LANG_CXX],		[AC_DEFUN([_LT_AC_LANG_CXX])])
+m4_ifndef([_LT_AC_LANG_F77],		[AC_DEFUN([_LT_AC_LANG_F77])])
+m4_ifndef([_LT_AC_LANG_GCJ],		[AC_DEFUN([_LT_AC_LANG_GCJ])])
+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+m4_ifndef([_LT_AC_LANG_CXX_CONFIG],	[AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
+m4_ifndef([_LT_AC_LANG_F77_CONFIG],	[AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],	[AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
+m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
+m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
+m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS],	[AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
+m4_ifndef([_LT_AC_PROG_CXXCPP],		[AC_DEFUN([_LT_AC_PROG_CXXCPP])])
+m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS],	[AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
+m4_ifndef([_LT_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_PROG_F77],		[AC_DEFUN([_LT_PROG_F77])])
+m4_ifndef([_LT_PROG_FC],		[AC_DEFUN([_LT_PROG_FC])])
+m4_ifndef([_LT_PROG_CXX],		[AC_DEFUN([_LT_PROG_CXX])])
diff --git a/proofs/lfsc_checker/config/missing b/proofs/lfsc_checker/config/missing
new file mode 100755
index 0000000..f62bbae
--- /dev/null
+++ b/proofs/lfsc_checker/config/missing
@@ -0,0 +1,215 @@
+#! /bin/sh
+# Common wrapper for a few potentially missing GNU programs.
+
+scriptversion=2013-10-28.13; # UTC
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try '$0 --help' for more information"
+  exit 1
+fi
+
+case $1 in
+
+  --is-lightweight)
+    # Used by our autoconf macros to check whether the available missing
+    # script is modern enough.
+    exit 0
+    ;;
+
+  --run)
+    # Back-compat with the calling convention used by older automake.
+    shift
+    ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+
+Supported PROGRAM values:
+  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
+  bison     yacc      flex         lex       help2man
+
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
+
+Send bug reports to <bug-automake at gnu.org>."
+    exit $?
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
+    ;;
+
+  -*)
+    echo 1>&2 "$0: unknown '$1' option"
+    echo 1>&2 "Try '$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch.  This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+  msg="probably too old"
+elif test $st -eq 127; then
+  # Program was missing.
+  msg="missing on your system"
+else
+  # Program was found and executed, but failed.  Give up.
+  exit $st
+fi
+
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+  case $1 in
+    aclocal|automake)
+      echo "The '$1' program is part of the GNU Automake package:"
+      echo "<$gnu_software_URL/automake>"
+      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/autoconf>"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+    autoconf|autom4te|autoheader)
+      echo "The '$1' program is part of the GNU Autoconf package:"
+      echo "<$gnu_software_URL/autoconf/>"
+      echo "It also requires GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+  esac
+}
+
+give_advice ()
+{
+  # Normalize program name to check for.
+  normalized_program=`echo "$1" | sed '
+    s/^gnu-//; t
+    s/^gnu//; t
+    s/^g//; t'`
+
+  printf '%s\n' "'$1' is $msg."
+
+  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+  case $normalized_program in
+    autoconf*)
+      echo "You should only need it if you modified 'configure.ac',"
+      echo "or m4 files included by it."
+      program_details 'autoconf'
+      ;;
+    autoheader*)
+      echo "You should only need it if you modified 'acconfig.h' or"
+      echo "$configure_deps."
+      program_details 'autoheader'
+      ;;
+    automake*)
+      echo "You should only need it if you modified 'Makefile.am' or"
+      echo "$configure_deps."
+      program_details 'automake'
+      ;;
+    aclocal*)
+      echo "You should only need it if you modified 'acinclude.m4' or"
+      echo "$configure_deps."
+      program_details 'aclocal'
+      ;;
+   autom4te*)
+      echo "You might have modified some maintainer files that require"
+      echo "the 'autom4te' program to be rebuilt."
+      program_details 'autom4te'
+      ;;
+    bison*|yacc*)
+      echo "You should only need it if you modified a '.y' file."
+      echo "You may want to install the GNU Bison package:"
+      echo "<$gnu_software_URL/bison/>"
+      ;;
+    lex*|flex*)
+      echo "You should only need it if you modified a '.l' file."
+      echo "You may want to install the Fast Lexical Analyzer package:"
+      echo "<$flex_URL>"
+      ;;
+    help2man*)
+      echo "You should only need it if you modified a dependency" \
+           "of a man page."
+      echo "You may want to install the GNU Help2man package:"
+      echo "<$gnu_software_URL/help2man/>"
+    ;;
+    makeinfo*)
+      echo "You should only need it if you modified a '.texi' file, or"
+      echo "any other file indirectly affecting the aspect of the manual."
+      echo "You might want to install the Texinfo package:"
+      echo "<$gnu_software_URL/texinfo/>"
+      echo "The spurious makeinfo call might also be the consequence of"
+      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+      echo "want to install GNU make:"
+      echo "<$gnu_software_URL/make/>"
+      ;;
+    *)
+      echo "You might have modified some files without having the proper"
+      echo "tools for further handling them.  Check the 'README' file, it"
+      echo "often tells you about the needed prerequisites for installing"
+      echo "this package.  You may also peek at any GNU archive site, in"
+      echo "case some other package contains this missing '$1' program."
+      ;;
+  esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+                       -e '2,$s/^/         /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/proofs/lfsc_checker/configure b/proofs/lfsc_checker/configure
new file mode 100755
index 0000000..01ee76f
--- /dev/null
+++ b/proofs/lfsc_checker/configure
@@ -0,0 +1,19697 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for lfsc-checker 1.0.
+#
+# Report bugs to <cvc-bugs at cs.nyu.edu>.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+
+  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
+      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf at gnu.org and
+$0: cvc-bugs at cs.nyu.edu about your system, including any
+$0: error possibly output before this message. Then install
+$0: a modern shell, or manually run the script under such a
+$0: shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='lfsc-checker'
+PACKAGE_TARNAME='lfsc-checker'
+PACKAGE_VERSION='1.0'
+PACKAGE_STRING='lfsc-checker 1.0'
+PACKAGE_BUGREPORT='cvc-bugs at cs.nyu.edu'
+PACKAGE_URL=''
+
+ac_unique_file="libwriter.h"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+CXXCPP
+am__fastdepCXX_FALSE
+am__fastdepCXX_TRUE
+CXXDEPMODE
+ac_ct_CXX
+CXXFLAGS
+CXX
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+target_os
+target_vendor
+target_cpu
+target
+CPP
+LT_SYS_LIBRARY_PATH
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+MANIFEST_TOOL
+RANLIB
+ac_ct_AR
+AR
+DLLTOOL
+OBJDUMP
+LN_S
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+EGREP
+GREP
+SED
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+LIBTOOL
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+runstatedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_silent_rules
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+with_aix_soname
+enable_dependency_tracking
+with_gnu_ld
+with_sysroot
+enable_libtool_lock
+enable_maintainer_mode
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+LT_SYS_LIBRARY_PATH
+CPP
+CXX
+CXXFLAGS
+CCC
+CXXCPP'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir runstatedir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures lfsc-checker 1.0 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/lfsc-checker]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+  --target=TARGET   configure for building compilers for TARGET [HOST]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of lfsc-checker 1.0:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-silent-rules   less verbose build output (undo: "make V=1")
+  --disable-silent-rules  verbose build output (undo: "make V=0")
+  --enable-shared[=PKGS]  build shared libraries [default=yes]
+  --enable-static[=PKGS]  build static libraries [default=yes]
+  --enable-fast-install[=PKGS]
+                          optimize for fast installation [default=yes]
+  --enable-dependency-tracking
+                          do not reject slow dependency extractors
+  --disable-dependency-tracking
+                          speeds up one-time build
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+  --disable-maintainer-mode
+                          disable make rules and dependencies not useful (and
+                          sometimes confusing) to the casual installer
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
+                          both]
+  --with-aix-soname=aix|svr4|both
+                          shared library versioning (aka "SONAME") variant to
+                          provide on AIX, [default=aix].
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-sysroot[=DIR]    Search for dependent libraries within DIR (or the
+                          compiler's sysroot if not specified).
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  LT_SYS_LIBRARY_PATH
+              User-defined run-time library search path.
+  CPP         C preprocessor
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  CXXCPP      C++ preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <cvc-bugs at cs.nyu.edu>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+lfsc-checker configure 1.0
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_compile
+
+# ac_fn_cxx_try_cpp LINENO
+# ------------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_cpp
+
+# ac_fn_cxx_try_link LINENO
+# -------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_link
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ---------------------------------- ##
+## Report this to cvc-bugs at cs.nyu.edu ##
+## ---------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+	 return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+	    return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_type
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by lfsc-checker $as_me 1.0, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+ac_aux_dir=
+for ac_dir in config "$srcdir"/config; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+
+ac_config_headers="$ac_config_headers config.h"
+
+am__api_version='1.15'
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
+    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$*" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$*" != "X $srcdir/configure conftest.file" \
+	&& test "$*" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment" "$LINENO" 5
+     fi
+     if test "$2" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if ${ac_cv_path_mkdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+	 for ac_exec_ext in '' $ac_executable_extensions; do
+	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+	     'mkdir (GNU coreutils) '* | \
+	     'mkdir (coreutils) '* | \
+	     'mkdir (fileutils) '4.1*)
+	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+	       break 3;;
+	   esac
+	 done
+       done
+  done
+IFS=$as_save_IFS
+
+fi
+
+  test -d ./--version && rmdir ./--version
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='lfsc-checker'
+ VERSION='1.0'
+
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar  pax cpio none'
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a pax tar archive" >&5
+$as_echo_n "checking how to create a pax tar archive... " >&6; }
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_pax-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        { echo "$as_me:$LINENO: $_am_tar --version" >&5
+   ($_am_tar --version) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } && break
+      done
+      am__tar="$_am_tar --format=posix -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=posix -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x pax -w "$$tardir"'
+      am__tar_='pax -L -x pax -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H pax -L'
+      am__tar_='find "$tardir" -print | cpio -o -H pax -L'
+      am__untar='cpio -i -H pax -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
+
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_pax}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5
+   (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      { echo "$as_me:$LINENO: $am__untar <conftest.tar" >&5
+   ($am__untar <conftest.tar) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }
+      { echo "$as_me:$LINENO: cat conftest.dir/file" >&5
+   (cat conftest.dir/file) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
+  rm -rf conftest.dir
+
+  if ${am_cv_prog_tar_pax+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  am_cv_prog_tar_pax=$_am_tool
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_pax" >&5
+$as_echo "$am_cv_prog_tar_pax" >&6; }
+
+
+
+
+
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+  fi
+fi
+
+case `pwd` in
+  *\ * | *\	*)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.4.6'
+macro_revision='2.4.6'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain=$ac_aux_dir/ltmain.sh
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
+else
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO ""
+}
+
+case $ECHO in
+  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+  enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+   then ac_cv_path_FGREP="$GREP -F"
+   else
+     if test -z "$FGREP"; then
+  ac_path_FGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in fgrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_FGREP" || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+  # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'FGREP' >> "conftest.nl"
+    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_FGREP="$ac_path_FGREP"
+      ac_path_FGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_FGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_FGREP"; then
+    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_FGREP=$FGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test yes = "$GCC"; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return, which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD=$ac_prog
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test yes = "$with_gnu_ld"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS=$lt_save_ifs
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD=$ac_dir/$ac_prog
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test no != "$with_gnu_ld" && break
+	;;
+      *)
+	test yes != "$with_gnu_ld" && break
+	;;
+      esac
+    fi
+  done
+  IFS=$lt_save_ifs
+else
+  lt_cv_path_LD=$LD # Let the user override the test with a path.
+fi
+fi
+
+LD=$lt_cv_path_LD
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if ${lt_cv_path_NM+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM=$NM
+else
+  lt_nm_to_check=${ac_tool_prefix}nm
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS=$lt_save_ifs
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm=$ac_dir/$lt_tmp_nm
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the 'sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	# MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
+	case $build_os in
+	mingw*) lt_bad_file=conftest.nm/nofile ;;
+	*) lt_bad_file=/dev/null ;;
+	esac
+	case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
+	*$lt_bad_file* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
+	  break 2
+	  ;;
+	*)
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break 2
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
+	  ;;
+	esac
+      fi
+    done
+    IFS=$lt_save_ifs
+  done
+  : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test no != "$lt_cv_path_NM"; then
+  NM=$lt_cv_path_NM
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in dumpbin "link -dump"
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DUMPBIN"; then
+  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$DUMPBIN" && break
+  done
+fi
+if test -z "$DUMPBIN"; then
+  ac_ct_DUMPBIN=$DUMPBIN
+  for ac_prog in dumpbin "link -dump"
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DUMPBIN"; then
+  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_DUMPBIN" && break
+done
+
+  if test "x$ac_ct_DUMPBIN" = x; then
+    DUMPBIN=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DUMPBIN=$ac_ct_DUMPBIN
+  fi
+fi
+
+    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols -headers"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+
+  if test : != "$DUMPBIN"; then
+    NM=$DUMPBIN
+  fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if ${lt_cv_nm_interface+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
+  cat conftest.out >&5
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if ${lt_cv_sys_max_cmd_len+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+    i=0
+  teststring=ABCD
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[	 ]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+       test undefined != "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test X`env echo "$teststring$teststring" 2>/dev/null` \
+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+	      test 17 != "$i" # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+
+fi
+
+if test -n "$lt_cv_sys_max_cmd_len"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+
+
+
+
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
+if ${lt_cv_to_host_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+        ;;
+    esac
+    ;;
+  *-*-cygwin* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_noop
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+        ;;
+    esac
+    ;;
+  * ) # unhandled hosts (and "normal" native builds)
+    lt_cv_to_host_file_cmd=func_convert_file_noop
+    ;;
+esac
+
+fi
+
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
+if ${lt_cv_to_tool_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  #assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+        ;;
+    esac
+    ;;
+esac
+
+fi
+
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if ${lt_cv_ld_reload_flag+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test yes != "$GCC"; then
+      reload_cmds=false
+    fi
+    ;;
+  darwin*)
+    if test yes = "$GCC"; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if ${lt_cv_deplibs_check_method+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# 'unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# that responds to the $file_magic_cmd with a given extended regex.
+# If you have 'file' or equivalent on your system and you're not sure
+# whether 'pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[45]*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  if ( file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    # Keep this pattern in sync with the one in func_win32_libid.
+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+cegcc*)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix[3-9]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd* | netbsdelf*-gnu)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+openbsd* | bitrig*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+os2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+  case $host_os in
+  mingw* | pw32*)
+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+      want_nocaseglob=yes
+    else
+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
+    fi
+    ;;
+  esac
+fi
+
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+  # two different shell functions defined in ltmain.sh;
+  # decide which one to use based on capabilities of $DLLTOOL
+  case `$DLLTOOL --help 2>&1` in
+  *--identify-strict*)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+    ;;
+  *)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+    ;;
+  esac
+  ;;
+*)
+  # fallback: assume linklib IS sharedlib
+  lt_cv_sharedlib_from_linklib_cmd=$ECHO
+  ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in ar
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$AR" && break
+  done
+fi
+if test -z "$AR"; then
+  ac_ct_AR=$AR
+  for ac_prog in ar
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AR="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_AR" && break
+done
+
+  if test "x$ac_ct_AR" = x; then
+    AR="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+fi
+
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ar_at_file=no
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
+      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+      if test 0 -eq "$ac_status"; then
+	# Ensure the archiver fails upon bogus file names.
+	rm -f conftest.$ac_objext libconftest.a
+	{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	if test 0 -ne "$ac_status"; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
+
+if test no = "$lt_cv_ar_at_file"; then
+  archiver_list_spec=
+else
+  archiver_list_spec=$lt_cv_ar_at_file
+fi
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  bitrig* | openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
+fi
+
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32* | cegcc*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*)
+  if test ia64 = "$host_cpu"; then
+    symcode='[ABCDEGRST]'
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[BCDEGRST]'
+  ;;
+osf*)
+  symcode='[BCDEGQRST]'
+  ;;
+solaris*)
+  symcode='[BDRT]'
+  ;;
+sco3.2v5*)
+  symcode='[DT]'
+  ;;
+sysv4.2uw2*)
+  symcode='[DT]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[ABDT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[ABCDGIRSTW]' ;;
+esac
+
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  # Gets list of data symbols to import.
+  lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
+  # Adjust the below global symbol transforms to fixup imported variables.
+  lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
+  lt_c_name_hook=" -e 's/^I .* \(.*\)$/  {\"\1\", (void *) 0},/p'"
+  lt_c_name_lib_hook="\
+  -e 's/^I .* \(lib.*\)$/  {\"\1\", (void *) 0},/p'\
+  -e 's/^I .* \(.*\)$/  {\"lib\1\", (void *) 0},/p'"
+else
+  # Disable hooks by default.
+  lt_cv_sys_global_symbol_to_import=
+  lt_cdecl_hook=
+  lt_c_name_hook=
+  lt_c_name_lib_hook=
+fi
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n"\
+$lt_cdecl_hook\
+" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
+$lt_c_name_hook\
+" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/p'"
+
+# Transform an extracted symbol line into symbol name with lib prefix and
+# symbol address.
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
+$lt_c_name_lib_hook\
+" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(lib.*\)$/  {\"\1\", (void *) \&\1},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"lib\1\", (void *) \&\1},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function,
+    # D for any global variable and I for any imported variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK '"\
+"     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
+"     /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
+"     /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
+"     {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
+"     s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
+  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT_DLSYM_CONST
+#elif defined __osf__
+/* This system does not cope well with relocations in const data.  */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+	  cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols.  */
+LT_DLSYM_CONST struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+	  $SED "s/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+	  cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_globsym_save_LIBS=$LIBS
+	  lt_globsym_save_CFLAGS=$CFLAGS
+	  LIBS=conftstm.$ac_objext
+	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+	    pipe_works=yes
+	  fi
+	  LIBS=$lt_globsym_save_LIBS
+	  CFLAGS=$lt_globsym_save_CFLAGS
+	else
+	  echo "cannot find nm_test_func in $nlist" >&5
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test yes = "$pipe_works"; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
+  nm_file_list_spec='@'
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
+# Check whether --with-sysroot was given.
+if test "${with_sysroot+set}" = set; then :
+  withval=$with_sysroot;
+else
+  with_sysroot=no
+fi
+
+
+lt_sysroot=
+case $with_sysroot in #(
+ yes)
+   if test yes = "$GCC"; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5
+$as_echo "$with_sysroot" >&6; }
+   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+   ;;
+esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5
+$as_echo_n "checking for a working dd... " >&6; }
+if ${ac_cv_path_lt_DD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+: ${lt_DD:=$DD}
+if test -z "$lt_DD"; then
+  ac_path_lt_DD_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in dd; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_lt_DD" || continue
+if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
+  cmp -s conftest.i conftest.out \
+  && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=:
+fi
+      $ac_path_lt_DD_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_lt_DD"; then
+    :
+  fi
+else
+  ac_cv_path_lt_DD=$lt_DD
+fi
+
+rm -f conftest.i conftest2.i conftest.out
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5
+$as_echo "$ac_cv_path_lt_DD" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5
+$as_echo_n "checking how to truncate binary pipes... " >&6; }
+if ${lt_cv_truncate_bin+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+lt_cv_truncate_bin=
+if "$ac_cv_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
+  cmp -s conftest.i conftest.out \
+  && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1"
+fi
+rm -f conftest.i conftest2.i conftest.out
+test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5
+$as_echo "$lt_cv_truncate_bin" >&6; }
+
+
+
+
+
+
+
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+func_cc_basename ()
+{
+    for cc_temp in $*""; do
+      case $cc_temp in
+        compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+        distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+        \-*) ;;
+        *) break;;
+      esac
+    done
+    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+}
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then :
+  enableval=$enable_libtool_lock;
+fi
+
+test no = "$enable_libtool_lock" || enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out what ABI is being produced by ac_compile, and set mode
+  # options accordingly.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+	HPUX_IA64_MODE=32
+	;;
+      *ELF-64*)
+	HPUX_IA64_MODE=64
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
+  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    if test yes = "$lt_cv_prog_gnu_ld"; then
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -melf32bsmip"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -melf32bmipn32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -melf64bmip"
+	;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -32"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -n32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -64"
+	  ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
+
+mips64*-*linux*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
+  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    emul=elf
+    case `/usr/bin/file conftest.$ac_objext` in
+      *32-bit*)
+	emul="${emul}32"
+	;;
+      *64-bit*)
+	emul="${emul}64"
+	;;
+    esac
+    case `/usr/bin/file conftest.$ac_objext` in
+      *MSB*)
+	emul="${emul}btsmip"
+	;;
+      *LSB*)
+	emul="${emul}ltsmip"
+	;;
+    esac
+    case `/usr/bin/file conftest.$ac_objext` in
+      *N32*)
+	emul="${emul}n32"
+	;;
+    esac
+    LD="${LD-ld} -m $emul"
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.  Note that the listed cases only cover the
+  # situations where additional linker options are needed (such as when
+  # doing 32-bit compilation for a host where ld defaults to 64-bit, or
+  # vice versa); the common cases where no linker options are needed do
+  # not appear in the list.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_i386_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    case `/usr/bin/file conftest.o` in
+	      *x86-64*)
+		LD="${LD-ld} -m elf32_x86_64"
+		;;
+	      *)
+		LD="${LD-ld} -m elf_i386"
+		;;
+	    esac
+	    ;;
+	  powerpc64le-*linux*)
+	    LD="${LD-ld} -m elf32lppclinux"
+	    ;;
+	  powerpc64-*linux*)
+	    LD="${LD-ld} -m elf32ppclinux"
+	    ;;
+	  s390x-*linux*)
+	    LD="${LD-ld} -m elf_s390"
+	    ;;
+	  sparc64-*linux*)
+	    LD="${LD-ld} -m elf32_sparc"
+	    ;;
+	esac
+	;;
+      *64-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_x86_64_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_x86_64"
+	    ;;
+	  powerpcle-*linux*)
+	    LD="${LD-ld} -m elf64lppc"
+	    ;;
+	  powerpc-*linux*)
+	    LD="${LD-ld} -m elf64ppc"
+	    ;;
+	  s390*-*linux*|s390*-*tpf*)
+	    LD="${LD-ld} -m elf64_s390"
+	    ;;
+	  sparc*-*linux*)
+	    LD="${LD-ld} -m elf64_sparc"
+	    ;;
+	esac
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS=$CFLAGS
+  CFLAGS="$CFLAGS -belf"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if ${lt_cv_cc_needs_belf+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_cc_needs_belf=yes
+else
+  lt_cv_cc_needs_belf=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+  if test yes != "$lt_cv_cc_needs_belf"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS=$SAVE_CFLAGS
+  fi
+  ;;
+*-*solaris*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*)
+        case $host in
+        i?86-*-solaris*|x86_64-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD=${LD-ld}_sol2
+        fi
+        ;;
+      *)
+	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+	  LD="${LD-ld} -64"
+	fi
+	;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks=$enable_libtool_lock
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
+set dummy ${ac_tool_prefix}mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$MANIFEST_TOOL"; then
+  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
+if test -n "$MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+$as_echo "$MANIFEST_TOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
+  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
+  # Extract the first word of "mt", so it can be a program name with args.
+set dummy mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_MANIFEST_TOOL"; then
+  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
+if test -n "$ac_ct_MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_MANIFEST_TOOL" = x; then
+    MANIFEST_TOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
+  fi
+else
+  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
+fi
+
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if ${lt_cv_path_mainfest_tool+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_path_mainfest_tool=no
+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+  cat conftest.err >&5
+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+    lt_cv_path_mainfest_tool=yes
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
+if test yes != "$lt_cv_path_mainfest_tool"; then
+  MANIFEST_TOOL=:
+fi
+
+
+
+
+
+
+  case $host_os in
+    rhapsody* | darwin*)
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+  ac_ct_DSYMUTIL=$DSYMUTIL
+  # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DSYMUTIL"; then
+  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DSYMUTIL" = x; then
+    DSYMUTIL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DSYMUTIL=$ac_ct_DSYMUTIL
+  fi
+else
+  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NMEDIT"; then
+  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+  ac_ct_NMEDIT=$NMEDIT
+  # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_NMEDIT"; then
+  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_NMEDIT="nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_NMEDIT" = x; then
+    NMEDIT=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    NMEDIT=$ac_ct_NMEDIT
+  fi
+else
+  NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LIPO"; then
+  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+  ac_ct_LIPO=$LIPO
+  # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_LIPO"; then
+  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_LIPO="lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_LIPO" = x; then
+    LIPO=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    LIPO=$ac_ct_LIPO
+  fi
+else
+  LIPO="$ac_cv_prog_LIPO"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL"; then
+  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+  ac_ct_OTOOL=$OTOOL
+  # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL"; then
+  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OTOOL="otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL" = x; then
+    OTOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL=$ac_ct_OTOOL
+  fi
+else
+  OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL64"; then
+  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+  ac_ct_OTOOL64=$OTOOL64
+  # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL64"; then
+  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OTOOL64="otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL64" = x; then
+    OTOOL64=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL64=$ac_ct_OTOOL64
+  fi
+else
+  OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if ${lt_cv_apple_cc_single_mod+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_apple_cc_single_mod=no
+      if test -z "$LT_MULTI_MODULE"; then
+	# By default we will add the -single_module flag. You can override
+	# by either setting the environment variable LT_MULTI_MODULE
+	# non-empty at configure time, or by adding -multi_module to the
+	# link flags.
+	rm -rf libconftest.dylib*
+	echo "int foo(void){return 1;}" > conftest.c
+	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+	# If there is a non-empty error log, and "single_module"
+	# appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+	  cat conftest.err >&5
+	# Otherwise, if the output was created with a 0 exit code from
+	# the compiler, it worked.
+	elif test -f libconftest.dylib && test 0 = "$_lt_result"; then
+	  lt_cv_apple_cc_single_mod=yes
+	else
+	  cat conftest.err >&5
+	fi
+	rm -rf libconftest.dylib*
+	rm -f conftest.*
+      fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if ${lt_cv_ld_exported_symbols_list+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_ld_exported_symbols_list=yes
+else
+  lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	LDFLAGS=$save_LDFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if ${lt_cv_ld_force_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+      echo "$AR cru libconftest.a conftest.o" >&5
+      $AR cru libconftest.a conftest.o 2>&5
+      echo "$RANLIB libconftest.a" >&5
+      $RANLIB libconftest.a 2>&5
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -s conftest.err && $GREP force_load conftest.err; then
+	cat conftest.err >&5
+      elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then
+	lt_cv_ld_force_load=yes
+      else
+	cat conftest.err >&5
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+    case $host_os in
+    rhapsody* | darwin1.[012])
+      _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+	  _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+	10.[012][,.]*)
+	  _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+	10.*)
+	  _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test yes = "$lt_cv_apple_cc_single_mod"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test yes = "$lt_cv_ld_exported_symbols_list"; then
+      _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib'
+    fi
+    if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+
+# func_munge_path_list VARIABLE PATH
+# -----------------------------------
+# VARIABLE is name of variable containing _space_ separated list of
+# directories to be munged by the contents of PATH, which is string
+# having a format:
+# "DIR[:DIR]:"
+#       string "DIR[ DIR]" will be prepended to VARIABLE
+# ":DIR[:DIR]"
+#       string "DIR[ DIR]" will be appended to VARIABLE
+# "DIRP[:DIRP]::[DIRA:]DIRA"
+#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
+#       "DIRA[ DIRA]" will be appended to VARIABLE
+# "DIR[:DIR]"
+#       VARIABLE will be replaced by "DIR[ DIR]"
+func_munge_path_list ()
+{
+    case x$2 in
+    x)
+        ;;
+    *:)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
+        ;;
+    x:*)
+        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    *::*)
+        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
+        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
+        ;;
+    *)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    esac
+}
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in dlfcn.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+# Set options
+
+
+
+        enable_dlopen=no
+
+
+  enable_win32_dll=no
+
+
+            # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+  enableval=$enable_shared; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      for pkg in $enableval; do
+	IFS=$lt_save_ifs
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS=$lt_save_ifs
+      ;;
+    esac
+else
+  enable_shared=yes
+fi
+
+
+
+
+
+
+
+
+
+  # Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+  enableval=$enable_static; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      for pkg in $enableval; do
+	IFS=$lt_save_ifs
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS=$lt_save_ifs
+      ;;
+    esac
+else
+  enable_static=yes
+fi
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+  withval=$with_pic; lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      for lt_pkg in $withval; do
+	IFS=$lt_save_ifs
+	if test "X$lt_pkg" = "X$lt_p"; then
+	  pic_mode=yes
+	fi
+      done
+      IFS=$lt_save_ifs
+      ;;
+    esac
+else
+  pic_mode=default
+fi
+
+
+
+
+
+
+
+
+  # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+  enableval=$enable_fast_install; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      for pkg in $enableval; do
+	IFS=$lt_save_ifs
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS=$lt_save_ifs
+      ;;
+    esac
+else
+  enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+  shared_archive_member_spec=
+case $host,$enable_shared in
+power*-*-aix[5-9]*,yes)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5
+$as_echo_n "checking which variant of shared library versioning to provide... " >&6; }
+
+# Check whether --with-aix-soname was given.
+if test "${with_aix_soname+set}" = set; then :
+  withval=$with_aix_soname; case $withval in
+    aix|svr4|both)
+      ;;
+    *)
+      as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5
+      ;;
+    esac
+    lt_cv_with_aix_soname=$with_aix_soname
+else
+  if ${lt_cv_with_aix_soname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_with_aix_soname=aix
+fi
+
+    with_aix_soname=$lt_cv_with_aix_soname
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5
+$as_echo "$with_aix_soname" >&6; }
+  if test aix != "$with_aix_soname"; then
+    # For the AIX way of multilib, we name the shared archive member
+    # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
+    # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
+    # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
+    # the AIX toolchain works better with OBJECT_MODE set (default 32).
+    if test 64 = "${OBJECT_MODE-32}"; then
+      shared_archive_member_spec=shr_64
+    else
+      shared_archive_member_spec=shr
+    fi
+  fi
+  ;;
+*)
+  with_aix_soname=aix
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS=$ltmain
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}"; then
+   setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if ${lt_cv_objdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test set != "${COLLECT_NAMES+set}"; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a '.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+old_CC=$CC
+old_CFLAGS=$CFLAGS
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+func_cc_basename $compiler
+cc_basename=$func_cc_basename_result
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD=$MAGIC_CMD
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS=$lt_save_ifs
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/${ac_tool_prefix}file"; then
+      lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS=$lt_save_ifs
+  MAGIC_CMD=$lt_save_MAGIC_CMD
+  ;;
+esac
+fi
+
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD=$MAGIC_CMD
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS=$lt_save_ifs
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/file"; then
+      lt_cv_path_MAGIC_CMD=$ac_dir/"file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS=$lt_save_ifs
+  MAGIC_CMD=$lt_save_MAGIC_CMD
+  ;;
+esac
+fi
+
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+# Use C for the default configuration in the libtool script
+
+lt_save_CC=$CC
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag=
+
+if test yes = "$GCC"; then
+  case $cc_basename in
+  nvcc*)
+    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+  *)
+    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+  esac
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"  ## exclude from sc_useless_quotes_in_assignment
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+
+
+
+
+
+  lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+
+  if test yes = "$GCC"; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test ia64 = "$host_cpu"; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the '-m68020' flag to GCC prevents building anything better,
+            # like '-m68040'.
+            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      case $host_os in
+      os2*)
+	lt_prog_compiler_static='$wl-static'
+	;;
+      esac
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
+
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static=
+      ;;
+
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='-fPIC'
+	;;
+      esac
+      ;;
+
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      lt_prog_compiler_wl='-Xlinker '
+      if test -n "$lt_prog_compiler_pic"; then
+        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
+      fi
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test ia64 = "$host_cpu"; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      else
+	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      case $cc_basename in
+      nagfor*)
+        # NAG Fortran compiler
+        lt_prog_compiler_wl='-Wl,-Wl,,'
+        lt_prog_compiler_pic='-PIC'
+        lt_prog_compiler_static='-Bstatic'
+        ;;
+      esac
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      case $host_os in
+      os2*)
+	lt_prog_compiler_static='$wl-static'
+	;;
+      esac
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='$wl-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+      case $cc_basename in
+      # old Intel for x86_64, which still supported -KPIC.
+      ecc*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-KPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='--shared'
+	lt_prog_compiler_static='--static'
+	;;
+      nagfor*)
+	# NAG Fortran compiler
+	lt_prog_compiler_wl='-Wl,-Wl,,'
+	lt_prog_compiler_pic='-PIC'
+	lt_prog_compiler_static='-Bstatic'
+	;;
+      tcc*)
+	# Fabrice Bellard et al's Tiny C Compiler
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fPIC'
+	lt_prog_compiler_static='-static'
+	;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fpic'
+	lt_prog_compiler_static='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      xl* | bgxl* | bgf* | mpixl*)
+	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-qpic'
+	lt_prog_compiler_static='-qstaticlink'
+	;;
+      *)
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl=''
+	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl='-Qoption ld '
+	  ;;
+	*Sun\ C*)
+	  # Sun C 5.9
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl='-Wl,'
+	  ;;
+        *Intel*\ [CF]*Compiler*)
+	  lt_prog_compiler_wl='-Wl,'
+	  lt_prog_compiler_pic='-fPIC'
+	  lt_prog_compiler_static='-static'
+	  ;;
+	*Portland\ Group*)
+	  lt_prog_compiler_wl='-Wl,'
+	  lt_prog_compiler_pic='-fpic'
+	  lt_prog_compiler_static='-Bstatic'
+	  ;;
+	esac
+	;;
+      esac
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    rdos*)
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+	lt_prog_compiler_wl='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic='-Kconform_pic'
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_can_build_shared=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared=no
+      ;;
+    esac
+  fi
+
+case $host_os in
+  # For platforms that do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"  ## exclude from sc_useless_quotes_in_assignment
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test yes = "$lt_cv_prog_compiler_pic_works"; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works=no
+   save_LDFLAGS=$LDFLAGS
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS=$save_LDFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test yes = "$lt_cv_prog_compiler_static_works"; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+hard_links=nottested
+if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test no = "$hard_links"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  runpath_var=
+  allow_undefined_flag=
+  always_export_symbols=no
+  archive_cmds=
+  archive_expsym_cmds=
+  compiler_needs_object=no
+  enable_shared_with_static_runtimes=no
+  export_dynamic_flag_spec=
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  hardcode_automatic=no
+  hardcode_direct=no
+  hardcode_direct_absolute=no
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_separator=
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  inherit_rpath=no
+  link_all_deplibs=unknown
+  module_cmds=
+  module_expsym_cmds=
+  old_archive_from_new_cmds=
+  old_archive_from_expsyms_cmds=
+  thread_safe_flag_spec=
+  whole_archive_flag_spec=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ' (' and ')$', so one must not match beginning or
+  # end of line.  Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
+  # as well as any symbol that contains 'd'.
+  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test yes != "$GCC"; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd* | bitrig*)
+    with_gnu_ld=no
+    ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs=no
+    ;;
+  esac
+
+  ld_shlibs=yes
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
+  if test yes = "$with_gnu_ld"; then
+    case $host_os in
+      aix*)
+	# The AIX port of GNU ld has always aspired to compatibility
+	# with the native linker.  However, as the warning in the GNU ld
+	# block says, versions before 2.19.5* couldn't really create working
+	# shared libraries, regardless of the interface used.
+	case `$LD -v 2>&1` in
+	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+	  *)
+	    lt_use_gnu_ld_interface=yes
+	    ;;
+	esac
+	;;
+      *)
+	lt_use_gnu_ld_interface=yes
+	;;
+    esac
+  fi
+
+  if test yes = "$lt_use_gnu_ld_interface"; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='$wl'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+    export_dynamic_flag_spec='$wl--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+    else
+      whole_archive_flag_spec=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[3-9]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test ia64 != "$host_cpu"; then
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag=unsupported
+	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      export_dynamic_flag_spec='$wl--export-all-symbols'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file, use it as
+	# is; otherwise, prepend EXPORTS...
+	archive_expsym_cmds='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
+          cp $export_symbols $output_objdir/$soname.def;
+        else
+          echo EXPORTS > $output_objdir/$soname.def;
+          cat $export_symbols >> $output_objdir/$soname.def;
+        fi~
+        $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    haiku*)
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+      link_all_deplibs=yes
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      shrext_cmds=.dll
+      archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	prefix_cmds="$SED"~
+	if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	  prefix_cmds="$prefix_cmds -e 1d";
+	fi~
+	prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+      enable_shared_with_static_runtimes=yes
+      ;;
+
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+      export_dynamic_flag_spec='$wl-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      tmp_diet=no
+      if test linux-dietlibc = "$host_os"; then
+	case $cc_basename in
+	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
+	esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+	 && test no = "$tmp_diet"
+      then
+	tmp_addflag=' $pic_flag'
+	tmp_sharedflag='-shared'
+	case $cc_basename,$host_cpu in
+        pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95* | pgfortran*)
+					# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	lf95*)				# Lahey Fortran 8.1
+	  whole_archive_flag_spec=
+	  tmp_sharedflag='--shared' ;;
+        nagfor*)                        # NAGFOR 5.3
+          tmp_sharedflag='-Wl,-shared' ;;
+	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+	  tmp_sharedflag='-qmkshrobj'
+	  tmp_addflag= ;;
+	nvcc*)	# Cuda Compiler Driver 2.2
+	  whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	  compiler_needs_object=yes
+	  ;;
+	esac
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)			# Sun C 5.9
+	  whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	  compiler_needs_object=yes
+	  tmp_sharedflag='-G' ;;
+	*Sun\ F*)			# Sun Fortran 8.3
+	  tmp_sharedflag='-G' ;;
+	esac
+	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+
+        if test yes = "$supports_anon_versioning"; then
+          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+            cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+            echo "local: *; };" >> $output_objdir/$libname.ver~
+            $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
+        fi
+
+	case $cc_basename in
+	tcc*)
+	  export_dynamic_flag_spec='-rdynamic'
+	  ;;
+	xlf* | bgf* | bgxlf* | mpixlf*)
+	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+	  hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+	  if test yes = "$supports_anon_versioning"; then
+	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+              cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+              echo "local: *; };" >> $output_objdir/$libname.ver~
+              $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+	  fi
+	  ;;
+	esac
+      else
+        ld_shlibs=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  # For security reasons, it is highly recommended that you always
+	  # use absolute paths for naming shared libraries, and exclude the
+	  # DT_RUNPATH tag from executables and libraries.  But doing so
+	  # requires that you compile everything twice, which is a pain.
+	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	    hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+	  else
+	    ld_shlibs=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+    esac
+
+    if test no = "$ld_shlibs"; then
+      runpath_var=
+      hardcode_libdir_flag_spec=
+      export_dynamic_flag_spec=
+      whole_archive_flag_spec=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct=unsupported
+      fi
+      ;;
+
+    aix[4-9]*)
+      if test ia64 = "$host_cpu"; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to GNU nm, but means don't demangle to AIX nm.
+	# Without the "-l" option, or with the "-B" option, AIX nm treats
+	# weak defined symbols like other global defined symbols, whereas
+	# GNU nm marks them as "W".
+	# While the 'weak' keyword is ignored in the Export File, we need
+	# it in the Import File for the 'aix-soname' feature, so we have
+	# to replace the "-B" option with "-P" for AIX nm.
+	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# have runtime linking enabled, and use it for executables.
+	# For shared libraries, we enable/disable runtime linking
+	# depending on the kind of the shared library created -
+	# when "with_aix_soname,aix_use_runtimelinking" is:
+	# "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
+	# "aix,yes"  lib.so          shared, rtl:yes, for executables
+	#            lib.a           static archive
+	# "both,no"  lib.so.V(shr.o) shared, rtl:yes
+	#            lib.a(lib.so.V) shared, rtl:no,  for executables
+	# "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
+	#            lib.a(lib.so.V) shared, rtl:no
+	# "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
+	#            lib.a           static archive
+	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+	  for ld_flag in $LDFLAGS; do
+	  if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
+	    aix_use_runtimelinking=yes
+	    break
+	  fi
+	  done
+	  if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
+	    # With aix-soname=svr4, we create the lib.so.V shared archives only,
+	    # so we don't have lib.a shared libs to link our executables.
+	    # We have to force runtime linking in this case.
+	    aix_use_runtimelinking=yes
+	    LDFLAGS="$LDFLAGS -Wl,-brtl"
+	  fi
+	  ;;
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_direct_absolute=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      file_list_spec='$wl-f,'
+      case $with_aix_soname,$aix_use_runtimelinking in
+      aix,*) ;; # traditional, no import file
+      svr4,* | *,yes) # use import file
+	# The Import File defines what to hardcode.
+	hardcode_direct=no
+	hardcode_direct_absolute=no
+	;;
+      esac
+
+      if test yes = "$GCC"; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`$CC -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	  # We have reworked collect2
+	  :
+	  else
+	  # We have old collect2
+	  hardcode_direct=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  hardcode_minus_L=yes
+	  hardcode_libdir_flag_spec='-L$libdir'
+	  hardcode_libdir_separator=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test yes = "$aix_use_runtimelinking"; then
+	  shared_flag="$shared_flag "'$wl-G'
+	fi
+	# Need to ensure runtime linking is disabled for the traditional
+	# shared library, or the linker may eventually find shared libraries
+	# /with/ Import File - we do not want to mix them.
+	shared_flag_aix='-shared'
+	shared_flag_svr4='-shared $wl-G'
+      else
+	# not using gcc
+	if test ia64 = "$host_cpu"; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test yes = "$aix_use_runtimelinking"; then
+	    shared_flag='$wl-G'
+	  else
+	    shared_flag='$wl-bM:SRE'
+	  fi
+	  shared_flag_aix='$wl-bM:SRE'
+	  shared_flag_svr4='$wl-G'
+	fi
+      fi
+
+      export_dynamic_flag_spec='$wl-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols=yes
+      if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=/usr/lib:/lib
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath_
+fi
+
+        hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
+        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
+      else
+	if test ia64 = "$host_cpu"; then
+	  hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag="-z nodefs"
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an
+	 # empty executable.
+	 if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=/usr/lib:/lib
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath_
+fi
+
+	 hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag=' $wl-bernotok'
+	  allow_undefined_flag=' $wl-berok'
+	  if test yes = "$with_gnu_ld"; then
+	    # We only use this code for GNU lds that support --whole-archive.
+	    whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive'
+	  else
+	    # Exported symbols can be pulled into shared objects from archives
+	    whole_archive_flag_spec='$convenience'
+	  fi
+	  archive_cmds_need_lc=yes
+	  archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
+	  # -brtl affects multiple linker settings, -berok does not and is overridden later
+	  compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`'
+	  if test svr4 != "$with_aix_soname"; then
+	    # This is similar to how AIX traditionally builds its shared libraries.
+	    archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
+	  fi
+	  if test aix != "$with_aix_soname"; then
+	    archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) >  [...]
+	  else
+	    # used by -dlpreopen to get the symbols
+	    archive_expsym_cmds="$archive_expsym_cmds"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
+	  fi
+	  archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      case $cc_basename in
+      cl*)
+	# Native MSVC
+	hardcode_libdir_flag_spec=' '
+	allow_undefined_flag=unsupported
+	always_export_symbols=yes
+	file_list_spec='@'
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=.dll
+	# FIXME: Setting linknames here is a bad hack.
+	archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+	archive_expsym_cmds='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
+            cp "$export_symbols" "$output_objdir/$soname.def";
+            echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+          else
+            $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+          fi~
+          $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+          linknames='
+	# The linker will not automatically build a static lib if we build a DLL.
+	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
+	enable_shared_with_static_runtimes=yes
+	exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+	# Don't use ranlib
+	old_postinstall_cmds='chmod 644 $oldlib'
+	postlink_cmds='lt_outputfile="@OUTPUT@"~
+          lt_tool_outputfile="@TOOL_OUTPUT@"~
+          case $lt_outputfile in
+            *.exe|*.EXE) ;;
+            *)
+              lt_outputfile=$lt_outputfile.exe
+              lt_tool_outputfile=$lt_tool_outputfile.exe
+              ;;
+          esac~
+          if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+            $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+            $RM "$lt_outputfile.manifest";
+          fi'
+	;;
+      *)
+	# Assume MSVC wrapper
+	hardcode_libdir_flag_spec=' '
+	allow_undefined_flag=unsupported
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=.dll
+	# FIXME: Setting linknames here is a bad hack.
+	archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+	# The linker will automatically build a .lib file if we build a DLL.
+	old_archive_from_new_cmds='true'
+	# FIXME: Should let the user specify the lib program.
+	old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+	enable_shared_with_static_runtimes=yes
+	;;
+      esac
+      ;;
+
+    darwin* | rhapsody*)
+
+
+  archive_cmds_need_lc=no
+  hardcode_direct=no
+  hardcode_automatic=yes
+  hardcode_shlibpath_var=unsupported
+  if test yes = "$lt_cv_ld_force_load"; then
+    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
+  else
+    whole_archive_flag_spec=''
+  fi
+  link_all_deplibs=yes
+  allow_undefined_flag=$_lt_dar_allow_undefined
+  case $cc_basename in
+     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test yes = "$_lt_dar_can_shared"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+    archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+    module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
+
+  else
+  ld_shlibs=no
+  fi
+
+      ;;
+
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2.*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    hpux9*)
+      if test yes = "$GCC"; then
+	archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec='$wl+b $wl$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      export_dynamic_flag_spec='$wl-E'
+      ;;
+
+    hpux10*)
+      if test yes,no = "$GCC,$with_gnu_ld"; then
+	archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test no = "$with_gnu_ld"; then
+	hardcode_libdir_flag_spec='$wl+b $wl$libdir'
+	hardcode_libdir_separator=:
+	hardcode_direct=yes
+	hardcode_direct_absolute=yes
+	export_dynamic_flag_spec='$wl-E'
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	hardcode_minus_L=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test yes,no = "$GCC,$with_gnu_ld"; then
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+
+	  # Older versions of the 11.00 compiler do not understand -b yet
+	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if ${lt_cv_prog_compiler__b+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler__b=no
+   save_LDFLAGS=$LDFLAGS
+   LDFLAGS="$LDFLAGS -b"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler__b=yes
+       fi
+     else
+       lt_cv_prog_compiler__b=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS=$save_LDFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
+
+if test yes = "$lt_cv_prog_compiler__b"; then
+    archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+else
+    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+fi
+
+	  ;;
+	esac
+      fi
+      if test no = "$with_gnu_ld"; then
+	hardcode_libdir_flag_spec='$wl+b $wl$libdir'
+	hardcode_libdir_separator=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  hardcode_direct=no
+	  hardcode_shlibpath_var=no
+	  ;;
+	*)
+	  hardcode_direct=yes
+	  hardcode_direct_absolute=yes
+	  export_dynamic_flag_spec='$wl-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test yes = "$GCC"; then
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+	# Try to use the -exported_symbol ld option, if it does not
+	# work, assume that -exports_file does not work either and
+	# implicitly export all symbols.
+	# This should be the same for all languages, so no per-tag cache variable.
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if ${lt_cv_irix_exported_symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  save_LDFLAGS=$LDFLAGS
+	   LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
+	   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo (void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_irix_exported_symbol=yes
+else
+  lt_cv_irix_exported_symbol=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+           LDFLAGS=$save_LDFLAGS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+	if test yes = "$lt_cv_irix_exported_symbol"; then
+          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
+	fi
+	link_all_deplibs=no
+      else
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+      hardcode_libdir_separator=:
+      inherit_rpath=yes
+      link_all_deplibs=yes
+      ;;
+
+    linux*)
+      case $cc_basename in
+      tcc*)
+	# Fabrice Bellard et al's Tiny C Compiler
+	ld_shlibs=yes
+	archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      esac
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd* | bitrig*)
+      if test -f /usr/libexec/ld.so; then
+	hardcode_direct=yes
+	hardcode_shlibpath_var=no
+	hardcode_direct_absolute=yes
+	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
+	  hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+	  export_dynamic_flag_spec='$wl-E'
+	else
+	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+	fi
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      shrext_cmds=.dll
+      archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	prefix_cmds="$SED"~
+	if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	  prefix_cmds="$prefix_cmds -e 1d";
+	fi~
+	prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+      enable_shared_with_static_runtimes=yes
+      ;;
+
+    osf3*)
+      if test yes = "$GCC"; then
+	allow_undefined_flag=' $wl-expect_unresolved $wl\*'
+	archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+      hardcode_libdir_separator=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test yes = "$GCC"; then
+	allow_undefined_flag=' $wl-expect_unresolved $wl\*'
+	archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+	hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+          $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_separator=:
+      ;;
+
+    solaris*)
+      no_undefined_flag=' -z defs'
+      if test yes = "$GCC"; then
+	wlarc='$wl'
+	archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+          $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+	case `$CC -V 2>&1` in
+	*"Compilers 5.0"*)
+	  wlarc=''
+	  archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+            $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+	  ;;
+	*)
+	  wlarc='$wl'
+	  archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+            $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+	  ;;
+	esac
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+	# The compiler driver will combine and reorder linker options,
+	# but understands '-z linker_flag'.  GCC discards it without '$wl',
+	# but is careful enough not to reorder.
+	# Supported since Solaris 2.6 (maybe 2.5.1?)
+	if test yes = "$GCC"; then
+	  whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
+	else
+	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+	fi
+	;;
+      esac
+      link_all_deplibs=yes
+      ;;
+
+    sunos4*)
+      if test sequent = "$host_vendor"; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds='$CC -r -o $output$reload_objs'
+	  hardcode_direct=no
+        ;;
+	motorola)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag='$wl-z,text'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
+
+      if test yes = "$GCC"; then
+	archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We CANNOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag='$wl-z,text'
+      allow_undefined_flag='$wl-z,nodefs'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='$wl-R,$libdir'
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      export_dynamic_flag_spec='$wl-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test yes = "$GCC"; then
+	archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      ld_shlibs=no
+      ;;
+    esac
+
+    if test sni = "$host_vendor"; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+	export_dynamic_flag_spec='$wl-Blargedynsym'
+	;;
+      esac
+    fi
+  fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test no = "$ld_shlibs" && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
+
+  if test yes,yes = "$GCC,$enable_shared"; then
+    case $archive_cmds in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl
+	  pic_flag=$lt_prog_compiler_pic
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag
+	  allow_undefined_flag=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc=no
+	  else
+	    lt_cv_archive_cmds_need_lc=yes
+	  fi
+	  allow_undefined_flag=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+if test yes = "$GCC"; then
+  case $host_os in
+    darwin*) lt_awk_arg='/^libraries:/,/LR/' ;;
+    *) lt_awk_arg='/^libraries:/' ;;
+  esac
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;;
+    *) lt_sed_strip_eq='s|=/|/|g' ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary...
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  # ...but if some path component already ends with the multilib dir we assume
+  # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer).
+  case "$lt_multi_os_dir; $lt_search_path_spec " in
+  "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*)
+    lt_multi_os_dir=
+    ;;
+  esac
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir"
+    elif test -n "$lt_multi_os_dir"; then
+      test -d "$lt_sys_path" && \
+	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS = " "; FS = "/|\n";} {
+  lt_foo = "";
+  lt_count = 0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo = "/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[lt_foo]++; }
+  if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's|/\([A-Za-z]:\)|\1|g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=.so
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+
+
+case $host_os in
+aix3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='$libname$release$shared_ext$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test ia64 = "$host_cpu"; then
+    # AIX 5 supports IA64
+    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line '#! .'.  This would cause the generated library to
+    # depend on '.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # Using Import Files as archive members, it is possible to support
+    # filename-based versioning of shared library archives on AIX. While
+    # this would work for both with and without runtime linking, it will
+    # prevent static linking of such archives. So we do filename-based
+    # shared library versioning with .so extension only, which is used
+    # when both runtime linking and shared linking is enabled.
+    # Unfortunately, runtime linking may impact performance, so we do
+    # not want this to be the default eventually. Also, we use the
+    # versioned .so libs for executables only if there is the -brtl
+    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
+    # To allow for filename-based versioning support, we need to create
+    # libNAME.so.V as an archive file, containing:
+    # *) an Import File, referring to the versioned filename of the
+    #    archive as well as the shared archive member, telling the
+    #    bitwidth (32 or 64) of that shared object, and providing the
+    #    list of exported symbols of that shared object, eventually
+    #    decorated with the 'weak' keyword
+    # *) the shared object with the F_LOADONLY flag set, to really avoid
+    #    it being seen by the linker.
+    # At run time we better use the real file rather than another symlink,
+    # but for link time we create the symlink libNAME.so -> libNAME.so.V
+
+    case $with_aix_soname,$aix_use_runtimelinking in
+    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    aix,yes) # traditional libtool
+      dynamic_linker='AIX unversionable lib.so'
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      ;;
+    aix,no) # traditional AIX only
+      dynamic_linker='AIX lib.a(lib.so.V)'
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      ;;
+    svr4,*) # full svr4 only
+      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,yes) # both, prefer svr4
+      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # unpreferred sharedlib libNAME.a needs extra handling
+      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
+      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,no) # both, prefer aix
+      dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)"
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
+      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
+      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
+      ;;
+    esac
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='$libname$shared_ext'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=.dll
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+    library_names_spec='$libname.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec=$LIB
+      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
+    ;;
+
+  *)
+    # Assume MSVC wrapper
+    library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
+    dynamic_linker='Win32 ld.exe'
+    ;;
+  esac
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$major$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[23].*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      soname_spec='$libname$release$shared_ext$major'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2.*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+haiku*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    if test 32 = "$HPUX_IA64_MODE"; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
+    fi
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[3-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test yes = "$lt_cv_prog_gnu_ld"; then
+		version_type=linux # correct to gnu/linux during the next big refactor
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
+  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+linux*android*)
+  version_type=none # Android doesn't support versioned libraries.
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext'
+  soname_spec='$libname$release$shared_ext'
+  finish_cmds=
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  dynamic_linker='Android linker'
+  # Don't embed -rpath directories since the linker doesn't support them.
+  hardcode_libdir_flag_spec='-L$libdir'
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
+fi
+
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Ideally, we could use ldconfig to report *all* directores which are
+  # searched for libraries, however this is still not possible.  Aside from not
+  # being certain /sbin/ldconfig is available, command
+  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
+  # even though it is searched at run-time.  Try to do the best guess by
+  # appending ld.so.conf contents (and includes) to the search path.
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd* | bitrig*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec=/usr/lib
+  need_lib_prefix=no
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+    need_version=no
+  else
+    need_version=yes
+  fi
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+os2*)
+  libname_spec='$name'
+  version_type=windows
+  shrext_cmds=.dll
+  need_version=no
+  need_lib_prefix=no
+  # OS/2 can only load a DLL with a base name of 8 characters or less.
+  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
+    v=$($ECHO $release$versuffix | tr -d .-);
+    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
+    $ECHO $n$v`$shared_ext'
+  library_names_spec='${libname}_dll.$libext'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=BEGINLIBPATH
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  postinstall_cmds='base_file=`basename \$file`~
+    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
+    dldir=$destdir/`dirname \$dlpath`~
+    test -d \$dldir || mkdir -p \$dldir~
+    $install_prog $dir/$dlname \$dldir/$dlname~
+    chmod a+x \$dldir/$dlname~
+    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+    fi'
+  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
+    dlpath=$dir/\$dldll~
+    $RM \$dlpath'
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test yes = "$with_gnu_ld"; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec; then
+    version_type=linux # correct to gnu/linux during the next big refactor
+    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
+    soname_spec='$libname$shared_ext.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=sco
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test yes = "$with_gnu_ld"; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test no = "$dynamic_linker" && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test yes = "$GCC"; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
+  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
+fi
+
+if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
+  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
+fi
+
+# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
+configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
+
+# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
+func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
+
+# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
+configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+   test -n "$runpath_var" ||
+   test yes = "$hardcode_automatic"; then
+
+  # We can hardcode non-existent directories.
+  if test no != "$hardcode_direct" &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" &&
+     test no != "$hardcode_minus_L"; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test relink = "$hardcode_action" ||
+   test yes = "$inherit_rpath"; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test yes = "$shlibpath_overrides_runpath" ||
+     test no = "$enable_shared"; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+  if test yes != "$enable_dlopen"; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen=load_add_on
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen=LoadLibrary
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen=dlopen
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+    # if libdl is installed we need to link against it
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
+else
+
+    lt_cv_dlopen=dyld
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+    ;;
+
+  tpf*)
+    # Don't try to run any link tests for TPF.  We know it's impossible
+    # because TPF is a cross-compiler, and we know how we open DSOs.
+    lt_cv_dlopen=dlopen
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=no
+    ;;
+
+  *)
+    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
+  lt_cv_dlopen=shl_load
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_shl_load=yes
+else
+  ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+  lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld
+else
+  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
+  lt_cv_dlopen=dlopen
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if ${ac_cv_lib_svld_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_svld_dlopen=yes
+else
+  ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if ${ac_cv_lib_dld_dld_link+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_dld_link=yes
+else
+  ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+  lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test no = "$lt_cv_dlopen"; then
+    enable_dlopen=no
+  else
+    enable_dlopen=yes
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS=$CPPFLAGS
+    test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS=$LDFLAGS
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS=$LIBS
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  	  if test yes = "$cross_compiling"; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisibility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+    if test yes = "$lt_cv_dlopen_self"; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self_static+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  	  if test yes = "$cross_compiling"; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisibility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+    fi
+
+    CPPFLAGS=$save_CPPFLAGS
+    LDFLAGS=$save_LDFLAGS
+    LIBS=$save_LIBS
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP"; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+    ;;
+  *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+  # Report what library types will actually be built
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+  test no = "$can_build_shared" && enable_shared=no
+
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
+  case $host_os in
+  aix3*)
+    test yes = "$enable_shared" && enable_static=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
+    fi
+    ;;
+
+  aix[4-9]*)
+    if test ia64 != "$host_cpu"; then
+      case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+      yes,aix,yes) ;;			# shared object as lib.so file only
+      yes,svr4,*) ;;			# shared object as lib.so archive member only
+      yes,*) enable_static=no ;;	# shared object in lib.a archive as well
+      esac
+    fi
+    ;;
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+  # Make sure either enable_shared or enable_static is yes.
+  test yes = "$enable_shared" || enable_static=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC=$lt_save_CC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+        ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
+$as_echo_n "checking target system type... " >&6; }
+if ${ac_cv_target+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$target_alias" = x; then
+  ac_cv_target=$ac_cv_host
+else
+  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
+$as_echo "$ac_cv_target" >&6; }
+case $ac_cv_target in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
+esac
+target=$ac_cv_target
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_target
+shift
+target_cpu=$1
+target_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+target_os=$*
+IFS=$ac_save_IFS
+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+  test "$program_prefix$program_suffix$program_transform_name" = \
+    NONENONEs,x,x, &&
+  program_prefix=${target_alias}-
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=0;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+
+# on by default
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+    # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+  USE_MAINTAINER_MODE=yes
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+   if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
+fi
+
+  MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+# turn off static lib building by default
+# Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+  enableval=$enable_shared; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      for pkg in $enableval; do
+	IFS=$lt_save_ifs
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS=$lt_save_ifs
+      ;;
+    esac
+else
+  enable_shared=yes
+fi
+
+
+
+
+
+
+# Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+  enableval=$enable_static; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      for pkg in $enableval; do
+	IFS=$lt_save_ifs
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS=$lt_save_ifs
+      ;;
+    esac
+else
+  enable_static=no
+fi
+
+
+
+
+
+
+
+# Checks for programs.
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+else
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+	 CXXFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CXX"  am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
+else
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
+fi
+
+
+
+
+func_stripname_cnf ()
+{
+  case $2 in
+  .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;;
+  *)  func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;;
+  esac
+} # func_stripname_cnf
+
+      if test -n "$CXX" && ( test no != "$CXX" &&
+    ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) ||
+    (test g++ != "$CXX"))); then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
+$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
+if test -z "$CXXCPP"; then
+  if ${ac_cv_prog_CXXCPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+  CXXCPP=$ac_cv_prog_CXXCPP
+else
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
+$as_echo "$CXXCPP" >&6; }
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+else
+  _lt_caught_CXX_error=yes
+fi
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+compiler_needs_object_CXX=no
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_direct_absolute_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_shlibpath_var_CXX=unsupported
+hardcode_automatic_CXX=no
+inherit_rpath_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+reload_flag_CXX=$reload_flag
+reload_cmds_CXX=$reload_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test yes != "$_lt_caught_CXX_error"; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="int some_variable = 0;"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+  # save warnings/boilerplate of simple test code
+  ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+  ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC=$CC
+  lt_save_CFLAGS=$CFLAGS
+  lt_save_LD=$LD
+  lt_save_GCC=$GCC
+  GCC=$GXX
+  lt_save_with_gnu_ld=$with_gnu_ld
+  lt_save_path_LD=$lt_cv_path_LD
+  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+  else
+    $as_unset lt_cv_prog_gnu_ld
+  fi
+  if test -n "${lt_cv_path_LDCXX+set}"; then
+    lt_cv_path_LD=$lt_cv_path_LDCXX
+  else
+    $as_unset lt_cv_path_LD
+  fi
+  test -z "${LDCXX+set}" || LD=$LDCXX
+  CC=${CXX-"c++"}
+  CFLAGS=$CXXFLAGS
+  compiler=$CC
+  compiler_CXX=$CC
+  func_cc_basename $compiler
+cc_basename=$func_cc_basename_result
+
+
+  if test -n "$compiler"; then
+    # We don't want -fno-exception when compiling C++ code, so set the
+    # no_builtin_flag separately
+    if test yes = "$GXX"; then
+      lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+    else
+      lt_prog_compiler_no_builtin_flag_CXX=
+    fi
+
+    if test yes = "$GXX"; then
+      # Set up default GNU C++ configuration
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test yes = "$GCC"; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return, which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD=$ac_prog
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test yes = "$with_gnu_ld"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS=$lt_save_ifs
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD=$ac_dir/$ac_prog
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test no != "$with_gnu_ld" && break
+	;;
+      *)
+	test yes != "$with_gnu_ld" && break
+	;;
+      esac
+    fi
+  done
+  IFS=$lt_save_ifs
+else
+  lt_cv_path_LD=$LD # Let the user override the test with a path.
+fi
+fi
+
+LD=$lt_cv_path_LD
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+      # Check if GNU C++ uses GNU ld as the underlying linker, since the
+      # archiving commands below assume that GNU ld is being used.
+      if test yes = "$with_gnu_ld"; then
+        archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+        archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+
+        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+        export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+
+        # If archive_cmds runs LD, not CC, wlarc should be empty
+        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+        #     investigate it a little bit more. (MM)
+        wlarc='$wl'
+
+        # ancient GNU ld didn't support --whole-archive et. al.
+        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+	  $GREP 'no-whole-archive' > /dev/null; then
+          whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+        else
+          whole_archive_flag_spec_CXX=
+        fi
+      else
+        with_gnu_ld=no
+        wlarc=
+
+        # A generic and very simple default shared library creation
+        # command for GNU C++ for the case where it uses the native
+        # linker, instead of GNU ld.  If possible, this setting should
+        # overridden to take advantage of the native linker features on
+        # the platform it is being used on.
+        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+      fi
+
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+    else
+      GXX=no
+      with_gnu_ld=no
+      wlarc=
+    fi
+
+    # PORTME: fill in a description of your system's C++ link characteristics
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+    ld_shlibs_CXX=yes
+    case $host_os in
+      aix3*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+      aix[4-9]*)
+        if test ia64 = "$host_cpu"; then
+          # On IA64, the linker does run time linking by default, so we don't
+          # have to do anything special.
+          aix_use_runtimelinking=no
+          exp_sym_flag='-Bexport'
+          no_entry_flag=
+        else
+          aix_use_runtimelinking=no
+
+          # Test if we are trying to use run time linking or normal
+          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+          # have runtime linking enabled, and use it for executables.
+          # For shared libraries, we enable/disable runtime linking
+          # depending on the kind of the shared library created -
+          # when "with_aix_soname,aix_use_runtimelinking" is:
+          # "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
+          # "aix,yes"  lib.so          shared, rtl:yes, for executables
+          #            lib.a           static archive
+          # "both,no"  lib.so.V(shr.o) shared, rtl:yes
+          #            lib.a(lib.so.V) shared, rtl:no,  for executables
+          # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
+          #            lib.a(lib.so.V) shared, rtl:no
+          # "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
+          #            lib.a           static archive
+          case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+	    for ld_flag in $LDFLAGS; do
+	      case $ld_flag in
+	      *-brtl*)
+	        aix_use_runtimelinking=yes
+	        break
+	        ;;
+	      esac
+	    done
+	    if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
+	      # With aix-soname=svr4, we create the lib.so.V shared archives only,
+	      # so we don't have lib.a shared libs to link our executables.
+	      # We have to force runtime linking in this case.
+	      aix_use_runtimelinking=yes
+	      LDFLAGS="$LDFLAGS -Wl,-brtl"
+	    fi
+	    ;;
+          esac
+
+          exp_sym_flag='-bexport'
+          no_entry_flag='-bnoentry'
+        fi
+
+        # When large executables or shared objects are built, AIX ld can
+        # have problems creating the table of contents.  If linking a library
+        # or program results in "error TOC overflow" add -mminimal-toc to
+        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+        archive_cmds_CXX=''
+        hardcode_direct_CXX=yes
+        hardcode_direct_absolute_CXX=yes
+        hardcode_libdir_separator_CXX=':'
+        link_all_deplibs_CXX=yes
+        file_list_spec_CXX='$wl-f,'
+        case $with_aix_soname,$aix_use_runtimelinking in
+        aix,*) ;;	# no import file
+        svr4,* | *,yes) # use import file
+          # The Import File defines what to hardcode.
+          hardcode_direct_CXX=no
+          hardcode_direct_absolute_CXX=no
+          ;;
+        esac
+
+        if test yes = "$GXX"; then
+          case $host_os in aix4.[012]|aix4.[012].*)
+          # We only want to do this on AIX 4.2 and lower, the check
+          # below for broken collect2 doesn't work under 4.3+
+	  collect2name=`$CC -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	    # We have reworked collect2
+	    :
+	  else
+	    # We have old collect2
+	    hardcode_direct_CXX=unsupported
+	    # It fails to find uninstalled libraries when the uninstalled
+	    # path is not listed in the libpath.  Setting hardcode_minus_L
+	    # to unsupported forces relinking
+	    hardcode_minus_L_CXX=yes
+	    hardcode_libdir_flag_spec_CXX='-L$libdir'
+	    hardcode_libdir_separator_CXX=
+	  fi
+          esac
+          shared_flag='-shared'
+	  if test yes = "$aix_use_runtimelinking"; then
+	    shared_flag=$shared_flag' $wl-G'
+	  fi
+	  # Need to ensure runtime linking is disabled for the traditional
+	  # shared library, or the linker may eventually find shared libraries
+	  # /with/ Import File - we do not want to mix them.
+	  shared_flag_aix='-shared'
+	  shared_flag_svr4='-shared $wl-G'
+        else
+          # not using gcc
+          if test ia64 = "$host_cpu"; then
+	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	  # chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+          else
+	    if test yes = "$aix_use_runtimelinking"; then
+	      shared_flag='$wl-G'
+	    else
+	      shared_flag='$wl-bM:SRE'
+	    fi
+	    shared_flag_aix='$wl-bM:SRE'
+	    shared_flag_svr4='$wl-G'
+          fi
+        fi
+
+        export_dynamic_flag_spec_CXX='$wl-bexpall'
+        # It seems that -bexpall does not export symbols beginning with
+        # underscore (_), so it is better to generate a list of symbols to
+	# export.
+        always_export_symbols_CXX=yes
+	if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
+          # Warning - without using the other runtime loading flags (-brtl),
+          # -berok will link without error, but may produce a broken library.
+          # The "-G" linker flag allows undefined symbols.
+          no_undefined_flag_CXX='-bernotok'
+          # Determine the default libpath from the value encoded in an empty
+          # executable.
+          if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath__CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=/usr/lib:/lib
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath__CXX
+fi
+
+          hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath"
+
+          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
+        else
+          if test ia64 = "$host_cpu"; then
+	    hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib'
+	    allow_undefined_flag_CXX="-z nodefs"
+	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
+          else
+	    # Determine the default libpath from the value encoded in an
+	    # empty executable.
+	    if test set = "${lt_cv_aix_libpath+set}"; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath__CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=/usr/lib:/lib
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath__CXX
+fi
+
+	    hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath"
+	    # Warning - without using the other run time loading flags,
+	    # -berok will link without error, but may produce a broken library.
+	    no_undefined_flag_CXX=' $wl-bernotok'
+	    allow_undefined_flag_CXX=' $wl-berok'
+	    if test yes = "$with_gnu_ld"; then
+	      # We only use this code for GNU lds that support --whole-archive.
+	      whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive'
+	    else
+	      # Exported symbols can be pulled into shared objects from archives
+	      whole_archive_flag_spec_CXX='$convenience'
+	    fi
+	    archive_cmds_need_lc_CXX=yes
+	    archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
+	    # -brtl affects multiple linker settings, -berok does not and is overridden later
+	    compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`'
+	    if test svr4 != "$with_aix_soname"; then
+	      # This is similar to how AIX traditionally builds its shared
+	      # libraries. Need -bnortl late, we may have -brtl in LDFLAGS.
+	      archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
+	    fi
+	    if test aix != "$with_aix_soname"; then
+	      archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_sy [...]
+	    else
+	      # used by -dlpreopen to get the symbols
+	      archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
+	    fi
+	    archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d'
+          fi
+        fi
+        ;;
+
+      beos*)
+	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	  allow_undefined_flag_CXX=unsupported
+	  # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	  # support --undefined.  This deserves some investigation.  FIXME
+	  archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	else
+	  ld_shlibs_CXX=no
+	fi
+	;;
+
+      chorus*)
+        case $cc_basename in
+          *)
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	  ;;
+        esac
+        ;;
+
+      cygwin* | mingw* | pw32* | cegcc*)
+	case $GXX,$cc_basename in
+	,cl* | no,cl*)
+	  # Native MSVC
+	  # hardcode_libdir_flag_spec is actually meaningless, as there is
+	  # no search path for DLLs.
+	  hardcode_libdir_flag_spec_CXX=' '
+	  allow_undefined_flag_CXX=unsupported
+	  always_export_symbols_CXX=yes
+	  file_list_spec_CXX='@'
+	  # Tell ltmain to make .lib files, not .a files.
+	  libext=lib
+	  # Tell ltmain to make .dll files, not .so files.
+	  shrext_cmds=.dll
+	  # FIXME: Setting linknames here is a bad hack.
+	  archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+	  archive_expsym_cmds_CXX='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
+              cp "$export_symbols" "$output_objdir/$soname.def";
+              echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+            else
+              $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+            fi~
+            $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+            linknames='
+	  # The linker will not automatically build a static lib if we build a DLL.
+	  # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true'
+	  enable_shared_with_static_runtimes_CXX=yes
+	  # Don't use ranlib
+	  old_postinstall_cmds_CXX='chmod 644 $oldlib'
+	  postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~
+            lt_tool_outputfile="@TOOL_OUTPUT@"~
+            case $lt_outputfile in
+              *.exe|*.EXE) ;;
+              *)
+                lt_outputfile=$lt_outputfile.exe
+                lt_tool_outputfile=$lt_tool_outputfile.exe
+                ;;
+            esac~
+            func_to_tool_file "$lt_outputfile"~
+            if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+              $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+              $RM "$lt_outputfile.manifest";
+            fi'
+	  ;;
+	*)
+	  # g++
+	  # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+	  # as there is no search path for DLLs.
+	  hardcode_libdir_flag_spec_CXX='-L$libdir'
+	  export_dynamic_flag_spec_CXX='$wl--export-all-symbols'
+	  allow_undefined_flag_CXX=unsupported
+	  always_export_symbols_CXX=no
+	  enable_shared_with_static_runtimes_CXX=yes
+
+	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	    # If the export-symbols file already is a .def file, use it as
+	    # is; otherwise, prepend EXPORTS...
+	    archive_expsym_cmds_CXX='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
+              cp $export_symbols $output_objdir/$soname.def;
+            else
+              echo EXPORTS > $output_objdir/$soname.def;
+              cat $export_symbols >> $output_objdir/$soname.def;
+            fi~
+            $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	  else
+	    ld_shlibs_CXX=no
+	  fi
+	  ;;
+	esac
+	;;
+      darwin* | rhapsody*)
+
+
+  archive_cmds_need_lc_CXX=no
+  hardcode_direct_CXX=no
+  hardcode_automatic_CXX=yes
+  hardcode_shlibpath_var_CXX=unsupported
+  if test yes = "$lt_cv_ld_force_load"; then
+    whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
+  else
+    whole_archive_flag_spec_CXX=''
+  fi
+  link_all_deplibs_CXX=yes
+  allow_undefined_flag_CXX=$_lt_dar_allow_undefined
+  case $cc_basename in
+     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test yes = "$_lt_dar_can_shared"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+    archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+    module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
+       if test yes != "$lt_cv_apple_cc_single_mod"; then
+      archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
+      archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
+    fi
+
+  else
+  ld_shlibs_CXX=no
+  fi
+
+	;;
+
+      os2*)
+	hardcode_libdir_flag_spec_CXX='-L$libdir'
+	hardcode_minus_L_CXX=yes
+	allow_undefined_flag_CXX=unsupported
+	shrext_cmds=.dll
+	archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	  $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	  $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	  $ECHO EXPORTS >> $output_objdir/$libname.def~
+	  emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	  $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	  emximp -o $lib $output_objdir/$libname.def'
+	archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	  $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	  $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	  $ECHO EXPORTS >> $output_objdir/$libname.def~
+	  prefix_cmds="$SED"~
+	  if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	    prefix_cmds="$prefix_cmds -e 1d";
+	  fi~
+	  prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	  cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	  $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	  emximp -o $lib $output_objdir/$libname.def'
+	old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+	enable_shared_with_static_runtimes_CXX=yes
+	;;
+
+      dgux*)
+        case $cc_basename in
+          ec++*)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          ghcx*)
+	    # Green Hills C++ Compiler
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
+
+      freebsd2.*)
+        # C++ shared libraries reported to be fairly broken before
+	# switch to ELF
+        ld_shlibs_CXX=no
+        ;;
+
+      freebsd-elf*)
+        archive_cmds_need_lc_CXX=no
+        ;;
+
+      freebsd* | dragonfly*)
+        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+        # conventions
+        ld_shlibs_CXX=yes
+        ;;
+
+      haiku*)
+        archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+        link_all_deplibs_CXX=yes
+        ;;
+
+      hpux9*)
+        hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir'
+        hardcode_libdir_separator_CXX=:
+        export_dynamic_flag_spec_CXX='$wl-E'
+        hardcode_direct_CXX=yes
+        hardcode_minus_L_CXX=yes # Not in the search PATH,
+				             # but as the default
+				             # location of the library.
+
+        case $cc_basename in
+          CC*)
+            # FIXME: insert proper C++ library support
+            ld_shlibs_CXX=no
+            ;;
+          aCC*)
+            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+            # Commands to make compiler produce verbose output that lists
+            # what "hidden" libraries, object files and flags are used when
+            # linking a shared library.
+            #
+            # There doesn't appear to be a way to prevent this compiler from
+            # explicitly linking system object files so we need to strip them
+            # from the output so that they don't get included in the library
+            # dependencies.
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+            ;;
+          *)
+            if test yes = "$GXX"; then
+              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+            else
+              # FIXME: insert proper C++ library support
+              ld_shlibs_CXX=no
+            fi
+            ;;
+        esac
+        ;;
+
+      hpux10*|hpux11*)
+        if test no = "$with_gnu_ld"; then
+	  hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir'
+	  hardcode_libdir_separator_CXX=:
+
+          case $host_cpu in
+            hppa*64*|ia64*)
+              ;;
+            *)
+	      export_dynamic_flag_spec_CXX='$wl-E'
+              ;;
+          esac
+        fi
+        case $host_cpu in
+          hppa*64*|ia64*)
+            hardcode_direct_CXX=no
+            hardcode_shlibpath_var_CXX=no
+            ;;
+          *)
+            hardcode_direct_CXX=yes
+            hardcode_direct_absolute_CXX=yes
+            hardcode_minus_L_CXX=yes # Not in the search PATH,
+					         # but as the default
+					         # location of the library.
+            ;;
+        esac
+
+        case $cc_basename in
+          CC*)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          aCC*)
+	    case $host_cpu in
+	      hppa*64*)
+	        archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      ia64*)
+	        archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      *)
+	        archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	    esac
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    ;;
+          *)
+	    if test yes = "$GXX"; then
+	      if test no = "$with_gnu_ld"; then
+	        case $host_cpu in
+	          hppa*64*)
+	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          ia64*)
+	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          *)
+	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	        esac
+	      fi
+	    else
+	      # FIXME: insert proper C++ library support
+	      ld_shlibs_CXX=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      interix[3-9]*)
+	hardcode_direct_CXX=no
+	hardcode_shlibpath_var_CXX=no
+	hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	export_dynamic_flag_spec_CXX='$wl-E'
+	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+	# Instead, shared libraries are loaded at an image base (0x10000000 by
+	# default) and relocated if they conflict, which is a slow very memory
+	# consuming and fragmenting process.  To avoid this, we pick a random,
+	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+	archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	;;
+      irix5* | irix6*)
+        case $cc_basename in
+          CC*)
+	    # SGI C++
+	    archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    if test yes = "$GXX"; then
+	      if test no = "$with_gnu_ld"; then
+	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+	      else
+	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib'
+	      fi
+	    fi
+	    link_all_deplibs_CXX=yes
+	    ;;
+        esac
+        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+        hardcode_libdir_separator_CXX=:
+        inherit_rpath_CXX=yes
+        ;;
+
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	    archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+
+	    hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	    export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	    old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+	    ;;
+	  icpc* | ecpc* )
+	    # Intel C++
+	    with_gnu_ld=yes
+	    # version 8.0 and above of icpc choke on multiply defined symbols
+	    # if we add $predep_objects and $postdep_objects, however 7.1 and
+	    # earlier do not add the objects themselves.
+	    case `$CC -V 2>&1` in
+	      *"Version 7."*)
+	        archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+		archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	      *)  # Version 8.0 or newer
+	        tmp_idyn=
+	        case $host_cpu in
+		  ia64*) tmp_idyn=' -i_dynamic';;
+		esac
+	        archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+		archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	    esac
+	    archive_cmds_need_lc_CXX=no
+	    hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	    export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+	    whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive'
+	    ;;
+          pgCC* | pgcpp*)
+            # Portland Group C++ compiler
+	    case `$CC -V` in
+	    *pgCC\ [1-5].* | *pgcpp\ [1-5].*)
+	      prelink_cmds_CXX='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+	      old_archive_cmds_CXX='tpldir=Template.dir~
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+                $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+                $RANLIB $oldlib'
+	      archive_cmds_CXX='tpldir=Template.dir~
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	      archive_expsym_cmds_CXX='tpldir=Template.dir~
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+	      ;;
+	    *) # Version 6 and above use weak symbols
+	      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+	      ;;
+	    esac
+
+	    hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir'
+	    export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+	    whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+            ;;
+	  cxx*)
+	    # Compaq C++
+	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname  -o $lib $wl-retain-symbols-file $wl$export_symbols'
+
+	    runpath_var=LD_RUN_PATH
+	    hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	    hardcode_libdir_separator_CXX=:
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+	    ;;
+	  xl* | mpixl* | bgxl*)
+	    # IBM XL 8.0 on PPC, with GNU ld
+	    hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+	    export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+	    archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	    if test yes = "$supports_anon_versioning"; then
+	      archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~
+                cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+                echo "local: *; };" >> $output_objdir/$libname.ver~
+                $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
+	    fi
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      no_undefined_flag_CXX=' -zdefs'
+	      archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols'
+	      hardcode_libdir_flag_spec_CXX='-R$libdir'
+	      whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+	      compiler_needs_object_CXX=yes
+
+	      # Not sure whether something based on
+	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+	      # would be better.
+	      output_verbose_link_cmd='func_echo_all'
+
+	      # Archives containing C++ object files must be created using
+	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	      # necessary to make sure instantiated templates are included
+	      # in the archive.
+	      old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+
+      lynxos*)
+        # FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+
+      m88k*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+	;;
+
+      mvs*)
+        case $cc_basename in
+          cxx*)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+	  *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+	esac
+	;;
+
+      netbsd*)
+        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	  archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+	  wlarc=
+	  hardcode_libdir_flag_spec_CXX='-R$libdir'
+	  hardcode_direct_CXX=yes
+	  hardcode_shlibpath_var_CXX=no
+	fi
+	# Workaround some broken pre-1.5 toolchains
+	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+	;;
+
+      *nto* | *qnx*)
+        ld_shlibs_CXX=yes
+	;;
+
+      openbsd* | bitrig*)
+	if test -f /usr/libexec/ld.so; then
+	  hardcode_direct_CXX=yes
+	  hardcode_shlibpath_var_CXX=no
+	  hardcode_direct_absolute_CXX=yes
+	  archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+	  hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
+	    archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib'
+	    export_dynamic_flag_spec_CXX='$wl-E'
+	    whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+	  fi
+	  output_verbose_link_cmd=func_echo_all
+	else
+	  ld_shlibs_CXX=no
+	fi
+	;;
+
+      osf3* | osf4* | osf5*)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	    hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	    hardcode_libdir_separator_CXX=:
+
+	    # Archives containing C++ object files must be created using
+	    # the KAI C++ compiler.
+	    case $host in
+	      osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
+	      *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
+	    esac
+	    ;;
+          RCC*)
+	    # Rational C++ 2.4.1
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          cxx*)
+	    case $host in
+	      osf3*)
+	        allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*'
+	        archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+		;;
+	      *)
+	        allow_undefined_flag_CXX=' -expect_unresolved \*'
+	        archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	        archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+                  echo "-hidden">> $lib.exp~
+                  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~
+                  $RM $lib.exp'
+	        hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+		;;
+	    esac
+
+	    hardcode_libdir_separator_CXX=:
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    ;;
+	  *)
+	    if test yes,no = "$GXX,$with_gnu_ld"; then
+	      allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*'
+	      case $host in
+	        osf3*)
+	          archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+		  ;;
+	        *)
+	          archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+		  ;;
+	      esac
+
+	      hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+	      hardcode_libdir_separator_CXX=:
+
+	      # Commands to make compiler produce verbose output that lists
+	      # what "hidden" libraries, object files and flags are used when
+	      # linking a shared library.
+	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+	    else
+	      # FIXME: insert proper C++ library support
+	      ld_shlibs_CXX=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      psos*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+
+      sunos4*)
+        case $cc_basename in
+          CC*)
+	    # Sun C++ 4.x
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          lcc*)
+	    # Lucid
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
+
+      solaris*)
+        case $cc_basename in
+          CC* | sunCC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+            archive_cmds_need_lc_CXX=yes
+	    no_undefined_flag_CXX=' -zdefs'
+	    archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	    archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+              $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	    hardcode_libdir_flag_spec_CXX='-R$libdir'
+	    hardcode_shlibpath_var_CXX=no
+	    case $host_os in
+	      solaris2.[0-5] | solaris2.[0-5].*) ;;
+	      *)
+		# The compiler driver will combine and reorder linker options,
+		# but understands '-z linker_flag'.
+	        # Supported since Solaris 2.6 (maybe 2.5.1?)
+		whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
+	        ;;
+	    esac
+	    link_all_deplibs_CXX=yes
+
+	    output_verbose_link_cmd='func_echo_all'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	    ;;
+          gcx*)
+	    # Green Hills C++ Compiler
+	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
+
+	    # The C++ compiler must be used to create the archive.
+	    old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    # GNU C++ compiler with Solaris linker
+	    if test yes,no = "$GXX,$with_gnu_ld"; then
+	      no_undefined_flag_CXX=' $wl-z ${wl}defs'
+	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
+	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+                  $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	      else
+	        # g++ 2.7 appears to require '-G' NOT '-shared' on this
+	        # platform.
+	        archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
+	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+                  $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	      fi
+
+	      hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir'
+	      case $host_os in
+		solaris2.[0-5] | solaris2.[0-5].*) ;;
+		*)
+		  whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
+		  ;;
+	      esac
+	    fi
+	    ;;
+        esac
+        ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag_CXX='$wl-z,text'
+      archive_cmds_need_lc_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      runpath_var='LD_RUN_PATH'
+
+      case $cc_basename in
+        CC*)
+	  archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+      esac
+      ;;
+
+      sysv5* | sco3.2v5* | sco5v6*)
+	# Note: We CANNOT use -z defs as we might desire, because we do not
+	# link with -lc, and that would cause any symbols used from libc to
+	# always be unresolved, which means just about no library would
+	# ever link correctly.  If we're not using GNU ld we use -z text
+	# though, which does catch some bad symbols but isn't as heavy-handed
+	# as -z defs.
+	no_undefined_flag_CXX='$wl-z,text'
+	allow_undefined_flag_CXX='$wl-z,nodefs'
+	archive_cmds_need_lc_CXX=no
+	hardcode_shlibpath_var_CXX=no
+	hardcode_libdir_flag_spec_CXX='$wl-R,$libdir'
+	hardcode_libdir_separator_CXX=':'
+	link_all_deplibs_CXX=yes
+	export_dynamic_flag_spec_CXX='$wl-Bexport'
+	runpath_var='LD_RUN_PATH'
+
+	case $cc_basename in
+          CC*)
+	    archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~
+              '"$old_archive_cmds_CXX"
+	    reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~
+              '"$reload_cmds_CXX"
+	    ;;
+	  *)
+	    archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    ;;
+	esac
+      ;;
+
+      tandem*)
+        case $cc_basename in
+          NCC*)
+	    # NonStop-UX NCC 3.20
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
+
+      vxworks*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+
+      *)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+    esac
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+    test no = "$ld_shlibs_CXX" && can_build_shared=no
+
+    GCC_CXX=$GXX
+    LD_CXX=$LD
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    # Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+_LT_EOF
+
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
+esac
+
+if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  for p in `eval "$output_verbose_link_cmd"`; do
+    case $prev$p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test x-L = "$p" ||
+          test x-R = "$p"; then
+	 prev=$p
+	 continue
+       fi
+
+       # Expand the sysroot to ease extracting the directories later.
+       if test -z "$prev"; then
+         case $p in
+         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+         esac
+       fi
+       case $p in
+       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+       esac
+       if test no = "$pre_test_object_deps_done"; then
+	 case $prev in
+	 -L | -R)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$compiler_lib_search_path_CXX"; then
+	     compiler_lib_search_path_CXX=$prev$p
+	   else
+	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$postdeps_CXX"; then
+	   postdeps_CXX=$prev$p
+	 else
+	   postdeps_CXX="${postdeps_CXX} $prev$p"
+	 fi
+       fi
+       prev=
+       ;;
+
+    *.lto.$objext) ;; # Ignore GCC LTO objects
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test no = "$pre_test_object_deps_done"; then
+	 if test -z "$predep_objects_CXX"; then
+	   predep_objects_CXX=$p
+	 else
+	   predep_objects_CXX="$predep_objects_CXX $p"
+	 fi
+       else
+	 if test -z "$postdep_objects_CXX"; then
+	   postdep_objects_CXX=$p
+	 else
+	   postdep_objects_CXX="$postdep_objects_CXX $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
+
+# PORTME: override above test on systems where it is broken
+case $host_os in
+interix[3-9]*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  predep_objects_CXX=
+  postdep_objects_CXX=
+  postdeps_CXX=
+  ;;
+esac
+
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+ compiler_lib_search_dirs_CXX=
+if test -n "${compiler_lib_search_path_CXX}"; then
+ compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'`
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+
+  # C++ specific cases for pic, static, wl, etc.
+  if test yes = "$GXX"; then
+    lt_prog_compiler_wl_CXX='-Wl,'
+    lt_prog_compiler_static_CXX='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test ia64 = "$host_cpu"; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_CXX='-Bstatic'
+      fi
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic_CXX='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the '-m68020' flag to GCC prevents building anything better,
+            # like '-m68040'.
+            lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | cygwin* | os2* | pw32* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+      case $host_os in
+      os2*)
+	lt_prog_compiler_static_CXX='$wl-static'
+	;;
+      esac
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_CXX='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      lt_prog_compiler_pic_CXX=
+      ;;
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static_CXX=
+      ;;
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_CXX=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	;;
+      *)
+	lt_prog_compiler_pic_CXX='-fPIC'
+	;;
+      esac
+      ;;
+    *qnx* | *nto*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic_CXX='-fPIC -shared'
+      ;;
+    *)
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix[4-9]*)
+	# All AIX code is PIC.
+	if test ia64 = "$host_cpu"; then
+	  # AIX 5 now supports IA64 processor
+	  lt_prog_compiler_static_CXX='-Bstatic'
+	else
+	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+      mingw* | cygwin* | os2* | pw32* | cegcc*)
+	# This hack is so that the source file can tell whether it is being
+	# built for inclusion in a dll (and should export symbols for example).
+	lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+	;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  ghcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='$wl-a ${wl}archive'
+	    if test ia64 != "$host_cpu"; then
+	      lt_prog_compiler_pic_CXX='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='$wl-a ${wl}archive'
+	    case $host_cpu in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      lt_prog_compiler_pic_CXX='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      interix*)
+	# This is c89, which is MS Visual C++ (no shared libs)
+	# Anyone wants to do a port?
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+	case $cc_basename in
+	  KCC*)
+	    # KAI C++ Compiler
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    ;;
+	  ecpc* )
+	    # old Intel C++ for x86_64, which still supported -KPIC.
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  icpc* )
+	    # Intel C++, used to be incompatible with GCC.
+	    # ICC 10 doesn't accept -KPIC any more.
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  pgCC* | pgcpp*)
+	    # Portland Group C++ compiler
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-fpic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  cxx*)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  xlc* | xlC* | bgxl[cC]* | mpixl[cC]*)
+	    # IBM XL 8.0, 9.0 on PPC and BlueGene
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-qpic'
+	    lt_prog_compiler_static_CXX='-qstaticlink'
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      lt_prog_compiler_pic_CXX='-KPIC'
+	      lt_prog_compiler_static_CXX='-Bstatic'
+	      lt_prog_compiler_wl_CXX='-Qoption ld '
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    lt_prog_compiler_pic_CXX='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd* | netbsdelf*-gnu)
+	;;
+      *qnx* | *nto*)
+        # QNX uses GNU C++, but need to define -shared option too, otherwise
+        # it will coredump.
+        lt_prog_compiler_pic_CXX='-fPIC -shared'
+        ;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC* | sunCC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    lt_prog_compiler_wl_CXX='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    lt_prog_compiler_pic_CXX='-pic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      vxworks*)
+	;;
+      *)
+	lt_prog_compiler_can_build_shared_CXX=no
+	;;
+    esac
+  fi
+
+case $host_os in
+  # For platforms that do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_CXX=
+    ;;
+  *)
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; }
+lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works_CXX=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"  ## exclude from sc_useless_quotes_in_assignment
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works_CXX=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
+
+if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then
+    case $lt_prog_compiler_pic_CXX in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+     esac
+else
+    lt_prog_compiler_pic_CXX=
+     lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works_CXX=no
+   save_LDFLAGS=$LDFLAGS
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works_CXX=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works_CXX=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS=$save_LDFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
+
+if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then
+    :
+else
+    lt_prog_compiler_static_CXX=
+fi
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+
+
+hard_links=nottested
+if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test no = "$hard_links"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  case $host_os in
+  aix[4-9]*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to GNU nm, but means don't demangle to AIX nm.
+    # Without the "-l" option, or with the "-B" option, AIX nm treats
+    # weak defined symbols like other global defined symbols, whereas
+    # GNU nm marks them as "W".
+    # While the 'weak' keyword is ignored in the Export File, we need
+    # it in the Import File for the 'aix-soname' feature, so we have
+    # to replace the "-B" option with "-P" for AIX nm.
+    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
+    else
+      export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    export_symbols_cmds_CXX=$ltdll_cmds
+    ;;
+  cygwin* | mingw* | cegcc*)
+    case $cc_basename in
+    cl*)
+      exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+      ;;
+    *)
+      export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+      exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+      ;;
+    esac
+    ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs_CXX=no
+    ;;
+  *)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+    ;;
+  esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+test no = "$ld_shlibs_CXX" && can_build_shared=no
+
+with_gnu_ld_CXX=$with_gnu_ld
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_CXX=yes
+
+  if test yes,yes = "$GCC,$enable_shared"; then
+    case $archive_cmds_CXX in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl_CXX
+	  pic_flag=$lt_prog_compiler_pic_CXX
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+	  allow_undefined_flag_CXX=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc_CXX=no
+	  else
+	    lt_cv_archive_cmds_need_lc_CXX=yes
+	  fi
+	  allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
+      archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=.so
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+
+
+case $host_os in
+aix3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='$libname$release$shared_ext$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test ia64 = "$host_cpu"; then
+    # AIX 5 supports IA64
+    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line '#! .'.  This would cause the generated library to
+    # depend on '.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # Using Import Files as archive members, it is possible to support
+    # filename-based versioning of shared library archives on AIX. While
+    # this would work for both with and without runtime linking, it will
+    # prevent static linking of such archives. So we do filename-based
+    # shared library versioning with .so extension only, which is used
+    # when both runtime linking and shared linking is enabled.
+    # Unfortunately, runtime linking may impact performance, so we do
+    # not want this to be the default eventually. Also, we use the
+    # versioned .so libs for executables only if there is the -brtl
+    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
+    # To allow for filename-based versioning support, we need to create
+    # libNAME.so.V as an archive file, containing:
+    # *) an Import File, referring to the versioned filename of the
+    #    archive as well as the shared archive member, telling the
+    #    bitwidth (32 or 64) of that shared object, and providing the
+    #    list of exported symbols of that shared object, eventually
+    #    decorated with the 'weak' keyword
+    # *) the shared object with the F_LOADONLY flag set, to really avoid
+    #    it being seen by the linker.
+    # At run time we better use the real file rather than another symlink,
+    # but for link time we create the symlink libNAME.so -> libNAME.so.V
+
+    case $with_aix_soname,$aix_use_runtimelinking in
+    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    aix,yes) # traditional libtool
+      dynamic_linker='AIX unversionable lib.so'
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      ;;
+    aix,no) # traditional AIX only
+      dynamic_linker='AIX lib.a(lib.so.V)'
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      ;;
+    svr4,*) # full svr4 only
+      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,yes) # both, prefer svr4
+      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # unpreferred sharedlib libNAME.a needs extra handling
+      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
+      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,no) # both, prefer aix
+      dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)"
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
+      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
+      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
+      ;;
+    esac
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='$libname$shared_ext'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=.dll
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+    library_names_spec='$libname.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec=$LIB
+      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
+    ;;
+
+  *)
+    # Assume MSVC wrapper
+    library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
+    dynamic_linker='Win32 ld.exe'
+    ;;
+  esac
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$major$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[23].*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      soname_spec='$libname$release$shared_ext$major'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2.*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+haiku*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    if test 32 = "$HPUX_IA64_MODE"; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
+    fi
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[3-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test yes = "$lt_cv_prog_gnu_ld"; then
+		version_type=linux # correct to gnu/linux during the next big refactor
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
+  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+linux*android*)
+  version_type=none # Android doesn't support versioned libraries.
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext'
+  soname_spec='$libname$release$shared_ext'
+  finish_cmds=
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  dynamic_linker='Android linker'
+  # Don't embed -rpath directories since the linker doesn't support them.
+  hardcode_libdir_flag_spec_CXX='-L$libdir'
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \
+	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
+fi
+
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Ideally, we could use ldconfig to report *all* directores which are
+  # searched for libraries, however this is still not possible.  Aside from not
+  # being certain /sbin/ldconfig is available, command
+  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
+  # even though it is searched at run-time.  Try to do the best guess by
+  # appending ld.so.conf contents (and includes) to the search path.
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd* | bitrig*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec=/usr/lib
+  need_lib_prefix=no
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+    need_version=no
+  else
+    need_version=yes
+  fi
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+os2*)
+  libname_spec='$name'
+  version_type=windows
+  shrext_cmds=.dll
+  need_version=no
+  need_lib_prefix=no
+  # OS/2 can only load a DLL with a base name of 8 characters or less.
+  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
+    v=$($ECHO $release$versuffix | tr -d .-);
+    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
+    $ECHO $n$v`$shared_ext'
+  library_names_spec='${libname}_dll.$libext'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=BEGINLIBPATH
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  postinstall_cmds='base_file=`basename \$file`~
+    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
+    dldir=$destdir/`dirname \$dlpath`~
+    test -d \$dldir || mkdir -p \$dldir~
+    $install_prog $dir/$dlname \$dldir/$dlname~
+    chmod a+x \$dldir/$dlname~
+    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+    fi'
+  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
+    dlpath=$dir/\$dldll~
+    $RM \$dlpath'
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test yes = "$with_gnu_ld"; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec; then
+    version_type=linux # correct to gnu/linux during the next big refactor
+    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
+    soname_spec='$libname$shared_ext.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=sco
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test yes = "$with_gnu_ld"; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test no = "$dynamic_linker" && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test yes = "$GCC"; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
+  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
+fi
+
+if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
+  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
+fi
+
+# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
+configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
+
+# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
+func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
+
+# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
+configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" ||
+   test -n "$runpath_var_CXX" ||
+   test yes = "$hardcode_automatic_CXX"; then
+
+  # We can hardcode non-existent directories.
+  if test no != "$hardcode_direct_CXX" &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" &&
+     test no != "$hardcode_minus_L_CXX"; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_CXX=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_CXX=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_CXX=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
+$as_echo "$hardcode_action_CXX" >&6; }
+
+if test relink = "$hardcode_action_CXX" ||
+   test yes = "$inherit_rpath_CXX"; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test yes = "$shlibpath_overrides_runpath" ||
+     test no = "$enable_shared"; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+
+  fi # test -n "$compiler"
+
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+  LDCXX=$LD
+  LD=$lt_save_LD
+  GCC=$lt_save_GCC
+  with_gnu_ld=$lt_save_with_gnu_ld
+  lt_cv_path_LDCXX=$lt_cv_path_LD
+  lt_cv_path_LD=$lt_save_path_LD
+  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test yes != "$_lt_caught_CXX_error"
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+
+# Checks for libraries.
+# FIXME: Replace `main' with a function in `-lgmp':
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __gmpz_init in -lgmp" >&5
+$as_echo_n "checking for __gmpz_init in -lgmp... " >&6; }
+if ${ac_cv_lib_gmp___gmpz_init+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgmp  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char __gmpz_init ();
+int
+main ()
+{
+return __gmpz_init ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_gmp___gmpz_init=yes
+else
+  ac_cv_lib_gmp___gmpz_init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gmp___gmpz_init" >&5
+$as_echo "$ac_cv_lib_gmp___gmpz_init" >&6; }
+if test "x$ac_cv_lib_gmp___gmpz_init" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBGMP 1
+_ACEOF
+
+  LIBS="-lgmp $LIBS"
+
+fi
+
+
+# Checks for header files.
+for ac_header in stdlib.h string.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+# Checks for typedefs, structures, and compiler characteristics.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if ${ac_cv_header_stdbool_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+             #include <stdbool.h>
+             #ifndef bool
+              "error: bool is not defined"
+             #endif
+             #ifndef false
+              "error: false is not defined"
+             #endif
+             #if false
+              "error: false is not 0"
+             #endif
+             #ifndef true
+              "error: true is not defined"
+             #endif
+             #if true != 1
+              "error: true is not 1"
+             #endif
+             #ifndef __bool_true_false_are_defined
+              "error: __bool_true_false_are_defined is not defined"
+             #endif
+
+             struct s { _Bool s: 1; _Bool t; } s;
+
+             char a[true == 1 ? 1 : -1];
+             char b[false == 0 ? 1 : -1];
+             char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+             char d[(bool) 0.5 == true ? 1 : -1];
+             /* See body of main program for 'e'.  */
+             char f[(_Bool) 0.0 == false ? 1 : -1];
+             char g[true];
+             char h[sizeof (_Bool)];
+             char i[sizeof s.t];
+             enum { j = false, k = true, l = false * true, m = true * 256 };
+             /* The following fails for
+                HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+             _Bool n[m];
+             char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+             char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+             /* Catch a bug in an HP-UX C compiler.  See
+                http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+                http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+              */
+             _Bool q = true;
+             _Bool *pq = &q;
+
+int
+main ()
+{
+
+             bool e = &s;
+             *pq |= q;
+             *pq |= ! q;
+             /* Refer to every declared value, to avoid compiler optimizations.  */
+             return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+                     + !m + !n + !o + !p + !q + !pq);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdbool_h=yes
+else
+  ac_cv_header_stdbool_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+   ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+if test "x$ac_cv_type__Bool" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+
+if test $ac_cv_header_stdbool_h = yes; then
+
+$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if ${ac_cv_c_inline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_inline=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+case $ac_cv_c_inline in
+  inline | yes) ;;
+  *)
+    case $ac_cv_c_inline in
+      no) ac_val=;;
+      *) ac_val=$ac_cv_c_inline;;
+    esac
+    cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+    ;;
+esac
+
+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
+if test "x$ac_cv_type_size_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
+fi
+
+
+# Checks for library functions.
+for ac_header in stdlib.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdlib_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STDLIB_H 1
+_ACEOF
+
+fi
+
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5
+$as_echo_n "checking for GNU libc compatible malloc... " >&6; }
+if ${ac_cv_func_malloc_0_nonnull+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_func_malloc_0_nonnull=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined STDC_HEADERS || defined HAVE_STDLIB_H
+# include <stdlib.h>
+#else
+char *malloc ();
+#endif
+
+int
+main ()
+{
+return ! malloc (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_malloc_0_nonnull=yes
+else
+  ac_cv_func_malloc_0_nonnull=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5
+$as_echo "$ac_cv_func_malloc_0_nonnull" >&6; }
+if test $ac_cv_func_malloc_0_nonnull = yes; then :
+
+$as_echo "#define HAVE_MALLOC 1" >>confdefs.h
+
+else
+  $as_echo "#define HAVE_MALLOC 0" >>confdefs.h
+
+   case " $LIBOBJS " in
+  *" malloc.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS malloc.$ac_objext"
+ ;;
+esac
+
+
+$as_echo "#define malloc rpl_malloc" >>confdefs.h
+
+fi
+
+
+for ac_func in strdup
+do :
+  ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup"
+if test "x$ac_cv_func_strdup" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRDUP 1
+_ACEOF
+
+fi
+done
+
+
+ac_config_files="$ac_config_files Makefile"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by lfsc-checker $as_me 1.0, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <cvc-bugs at cs.nyu.edu>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+lfsc-checker config.status 1.0
+configured by $0, generated by GNU Autoconf 2.69,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`'
+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`'
+configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
+predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
+postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
+predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
+postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
+LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`'
+reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`'
+reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`'
+GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`'
+inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`'
+always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
+predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`'
+postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in SHELL \
+ECHO \
+PATH_SEPARATOR \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+OBJDUMP \
+deplibs_check_method \
+file_magic_cmd \
+file_magic_glob \
+want_nocaseglob \
+DLLTOOL \
+sharedlib_from_linklib_cmd \
+AR \
+AR_FLAGS \
+archiver_list_spec \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_import \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+lt_cv_nm_interface \
+nm_file_list_spec \
+lt_cv_truncate_bin \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_pic \
+lt_prog_compiler_wl \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+MANIFEST_TOOL \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_separator \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+install_override_mode \
+finish_eval \
+old_striplib \
+striplib \
+compiler_lib_search_dirs \
+predep_objects \
+postdep_objects \
+predeps \
+postdeps \
+compiler_lib_search_path \
+LD_CXX \
+reload_flag_CXX \
+compiler_CXX \
+lt_prog_compiler_no_builtin_flag_CXX \
+lt_prog_compiler_pic_CXX \
+lt_prog_compiler_wl_CXX \
+lt_prog_compiler_static_CXX \
+lt_cv_prog_compiler_c_o_CXX \
+export_dynamic_flag_spec_CXX \
+whole_archive_flag_spec_CXX \
+compiler_needs_object_CXX \
+with_gnu_ld_CXX \
+allow_undefined_flag_CXX \
+no_undefined_flag_CXX \
+hardcode_libdir_flag_spec_CXX \
+hardcode_libdir_separator_CXX \
+exclude_expsyms_CXX \
+include_expsyms_CXX \
+file_list_spec_CXX \
+compiler_lib_search_dirs_CXX \
+predep_objects_CXX \
+postdep_objects_CXX \
+predeps_CXX \
+postdeps_CXX \
+compiler_lib_search_path_CXX; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postlink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+configure_time_dlsearch_path \
+configure_time_lt_sys_library_path \
+reload_cmds_CXX \
+old_archive_cmds_CXX \
+old_archive_from_new_cmds_CXX \
+old_archive_from_expsyms_cmds_CXX \
+archive_cmds_CXX \
+archive_expsym_cmds_CXX \
+module_cmds_CXX \
+module_expsym_cmds_CXX \
+export_symbols_cmds_CXX \
+prelink_cmds_CXX \
+postlink_cmds_CXX; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+ac_aux_dir='$ac_aux_dir'
+
+# See if we are running on zsh, and set the options that allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}"; then
+   setopt NO_GLOB_SUBST
+fi
+
+
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    RM='$RM'
+    ofile='$ofile'
+
+
+
+
+
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_tt"; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+  if test x"$ac_file" != x-; then
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+    } >"$ac_tmp/config.h" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f "$ac_file"
+      mv "$ac_tmp/config.h" "$ac_file" \
+	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    fi
+  else
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error $? "could not create -" "$LINENO" 5
+  fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$_am_arg" : 'X\(//\)[^/]' \| \
+	 X"$_am_arg" : 'X\(//\)$' \| \
+	 X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # Older Autoconf quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named 'Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$mf" : 'X\(//\)[^/]' \| \
+	 X"$mf" : 'X\(//\)$' \| \
+	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running 'make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "$am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$file" : 'X\(//\)[^/]' \| \
+	 X"$file" : 'X\(//\)$' \| \
+	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      as_dir=$dirpart/$fdir; as_fn_mkdir_p
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+ ;;
+    "libtool":C)
+
+    # See if we are running on zsh, and set the options that allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}"; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile=${ofile}T
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+# Generated automatically by $as_me ($PACKAGE) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+
+# Provide generalized library-building support services.
+# Written by Gordon Matzigkeit, 1996
+
+# Copyright (C) 2014 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of of the License, or
+# (at your option) any later version.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program or library that is built
+# using GNU Libtool, you may include this file under the  same
+# distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags='CXX '
+
+# Configured defaults for sys_lib_dlsearch_path munging.
+: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"}
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# Shared archive member basename,for filename based shared library versioning on AIX.
+shared_archive_member_spec=$shared_archive_member_spec
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# convert \$build file names to \$host format.
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+
+# convert \$build files to toolchain format.
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+
+# An object symbol dumper.
+OBJDUMP=$lt_OBJDUMP
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method = "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# How to find potential files when deplibs_check_method = "file_magic".
+file_magic_glob=$lt_file_magic_glob
+
+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
+want_nocaseglob=$lt_want_nocaseglob
+
+# DLL creation program.
+DLLTOOL=$lt_DLLTOOL
+
+# Command to associate shared and link libraries.
+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
+
+# The archiver.
+AR=$lt_AR
+
+# Flags to create an archive.
+AR_FLAGS=$lt_AR_FLAGS
+
+# How to feed a file listing to the archiver.
+archiver_list_spec=$lt_archiver_list_spec
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm into a list of symbols to manually relocate.
+global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# The name lister interface.
+nm_interface=$lt_lt_cv_nm_interface
+
+# Specify filename containing input files for \$NM.
+nm_file_list_spec=$lt_nm_file_list_spec
+
+# The root where to search for dependent libraries,and where our libraries should be installed.
+lt_sysroot=$lt_sysroot
+
+# Command to truncate a binary pipe.
+lt_truncate_bin=$lt_lt_cv_truncate_bin
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Manifest tool.
+MANIFEST_TOOL=$lt_MANIFEST_TOOL
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Detected run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path
+
+# Explicit LT_SYS_LIBRARY_PATH set during ./configure time.
+configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \$shlibpath_var if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects
+postdep_objects=$lt_postdep_objects
+predeps=$lt_predeps
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+    cat <<'_LT_EOF' >> "$cfgfile"
+
+# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE
+
+# func_munge_path_list VARIABLE PATH
+# -----------------------------------
+# VARIABLE is name of variable containing _space_ separated list of
+# directories to be munged by the contents of PATH, which is string
+# having a format:
+# "DIR[:DIR]:"
+#       string "DIR[ DIR]" will be prepended to VARIABLE
+# ":DIR[:DIR]"
+#       string "DIR[ DIR]" will be appended to VARIABLE
+# "DIRP[:DIRP]::[DIRA:]DIRA"
+#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
+#       "DIRA[ DIRA]" will be appended to VARIABLE
+# "DIR[:DIR]"
+#       VARIABLE will be replaced by "DIR[ DIR]"
+func_munge_path_list ()
+{
+    case x$2 in
+    x)
+        ;;
+    *:)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
+        ;;
+    x:*)
+        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    *::*)
+        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
+        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
+        ;;
+    *)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    esac
+}
+
+
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+func_cc_basename ()
+{
+    for cc_temp in $*""; do
+      case $cc_temp in
+        compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+        distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+        \-*) ;;
+        *) break;;
+      esac
+    done
+    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+}
+
+
+# ### END FUNCTIONS SHARED WITH CONFIGURE
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test set != "${COLLECT_NAMES+set}"; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+
+ltmain=$ac_aux_dir/ltmain.sh
+
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" \
+     || (rm -f "$cfgfile"; exit 1)
+
+   mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+
+    cat <<_LT_EOF >> "$ofile"
+
+# ### BEGIN LIBTOOL TAG CONFIG: CXX
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag_CXX
+reload_cmds=$lt_reload_cmds_CXX
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds_CXX
+
+# A language specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object_CXX
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld_CXX
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \$shlibpath_var if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute_CXX
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath_CXX
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds_CXX
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds_CXX
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec_CXX
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects_CXX
+postdep_objects=$lt_postdep_objects_CXX
+predeps=$lt_predeps_CXX
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# ### END LIBTOOL TAG CONFIG: CXX
+_LT_EOF
+
+ ;;
+
+  esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/proofs/lfsc_checker/configure.ac b/proofs/lfsc_checker/configure.ac
new file mode 100644
index 0000000..5f43536
--- /dev/null
+++ b/proofs/lfsc_checker/configure.ac
@@ -0,0 +1,47 @@
+#                                               -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+AC_PREREQ([2.61])
+AC_INIT([lfsc-checker], [1.0], [cvc-bugs at cs.nyu.edu])
+AC_CONFIG_SRCDIR([libwriter.h])
+AC_CONFIG_AUX_DIR([config])
+AC_CONFIG_MACRO_DIR([config])
+AC_CONFIG_HEADERS([config.h])
+AM_INIT_AUTOMAKE([1.11 foreign no-define tar-pax])
+LT_INIT
+
+AC_CANONICAL_BUILD
+AC_CANONICAL_HOST
+AC_CANONICAL_TARGET
+
+m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
+
+# on by default
+AM_MAINTAINER_MODE([enable])
+
+# turn off static lib building by default
+AC_ENABLE_SHARED
+AC_DISABLE_STATIC
+
+# Checks for programs.
+AC_PROG_CXX
+AC_PROG_CC
+
+# Checks for libraries.
+# FIXME: Replace `main' with a function in `-lgmp':
+AC_CHECK_LIB([gmp], [__gmpz_init])
+
+# Checks for header files.
+AC_CHECK_HEADERS([stdlib.h string.h])
+
+# Checks for typedefs, structures, and compiler characteristics.
+AC_HEADER_STDBOOL
+AC_C_INLINE
+AC_TYPE_SIZE_T
+
+# Checks for library functions.
+AC_FUNC_MALLOC
+AC_CHECK_FUNCS([strdup])
+
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
diff --git a/proofs/lfsc_checker/expr.cpp b/proofs/lfsc_checker/expr.cpp
new file mode 100644
index 0000000..8c8120e
--- /dev/null
+++ b/proofs/lfsc_checker/expr.cpp
@@ -0,0 +1,986 @@
+#include "expr.h"
+#include <stdlib.h>
+#include <sstream>
+#ifdef _MSC_VER
+#include <algorithm>
+#endif
+#include "check.h"
+
+using namespace std;
+
+int HoleExpr::next_id = 0;
+int Expr::markedCount = 0;
+
+C_MACROS__ADD_CHUNKING_MEMORY_MANAGEMENT_CC(CExpr,kids,32768);
+
+//C_MACROS__ADD_CHUNKING_MEMORY_MANAGEMENT_CC(IntCExpr,_n,32768);
+
+#define USE_HOLE_PATH_COMPRESSION
+
+void Expr::debug() {
+  print(cout);
+  /*
+  cout << "\nAt " << this << "\n";
+  cout << "marked = " << getmark() << "\n";
+  */
+  cout << "\n";
+  cout.flush();
+}
+
+bool destroy_progs = false;
+
+#define destroydec(rr) \
+  do { \
+    Expr *r = rr;	    \
+    int ref = r->data >> 9; \
+    ref = ref - 1; \
+    if (ref == 0) {  \
+      _e = r;		  \
+      goto start_destroy; \
+    } \
+    else \
+      r->data = (ref << 9) | (r->data & 511); \
+  } while(0)
+
+//removed from below "ref = ref -1;":   r->debugrefcnt(ref,DEC);
+
+void Expr::destroy(Expr *_e, bool dec_kids) {
+ start_destroy:
+  switch (_e->getclass()) {
+  case INT_EXPR:
+    delete (IntExpr *)_e;
+    break;
+  case SYMS_EXPR:  {
+    SymSExpr *e = (SymSExpr *)_e;
+    if (e->val && e->val->getop() != PROG) {
+      Expr *tmp = e->val;
+      delete e;
+      destroydec(tmp);
+    }
+    else
+      delete e;
+    break;
+  }
+  case SYM_EXPR: {
+    SymExpr *e = (SymExpr *)_e;
+    if (e->val && e->val->getop() != PROG) {
+      Expr *tmp = e->val;
+      delete e;
+      destroydec(tmp);
+    }
+    else
+      delete e;
+    break;
+  }
+  case HOLE_EXPR: {
+    HoleExpr *e = (HoleExpr *)_e;
+    if (e->val) {
+      Expr *tmp = e->val;
+      delete e;
+      destroydec(tmp);
+    }
+    else
+      delete e;
+    break;
+  }
+  case CEXPR: {
+    CExpr *e = (CExpr *)_e;
+    if (dec_kids) {
+      Expr **cur = e->kids;
+      Expr *tmp;
+      while((tmp = *cur++)) {
+	if (*cur)
+	  tmp->dec();
+	else {
+	  delete e;
+	  destroydec(tmp);
+	  break;
+	}
+      }
+    }
+    else
+      delete e;
+    break;
+  }
+  }
+}
+
+Expr *Expr::clone() {
+  switch (getclass()) {
+  case INT_EXPR:
+  case RAT_EXPR:
+    inc();
+    return this;
+  case SYMS_EXPR: 
+  case SYM_EXPR: {
+    SymExpr *e = (SymExpr *)this;
+    if (e->val)
+      if (e->val->getop() != PROG)
+	return e->val->clone();
+    e->inc();
+    return e;
+  }
+  case HOLE_EXPR: {
+    HoleExpr *e = (HoleExpr *)this;
+    if (e->val)
+      return e->val->clone();
+    e->inc();
+    return e;
+  }
+  case CEXPR: {
+    CExpr *e = (CExpr *)this;
+    int op = e->getop();
+    switch(op) {
+    case LAM: {
+#ifdef DEBUG_SYM_NAMES
+      SymSExpr *var = (SymSExpr *)e->kids[0];
+      SymSExpr *newvar = new SymSExpr(*var,SYMS_EXPR);
+#else
+      SymExpr *var = (SymExpr *)e->kids[0];
+      SymExpr *newvar = new SymExpr(*var);
+#endif
+      Expr *prev = var->val;
+      var->val = newvar;
+      Expr *bod = e->kids[1]->clone();
+      var->val = prev;
+      return new CExpr(LAM,newvar,bod);
+    }
+    case PI: {
+#ifdef DEBUG_SYM_NAMES
+      SymSExpr *var = (SymSExpr *)e->kids[0];
+      SymSExpr *newvar = new SymSExpr(*var,SYMS_EXPR);
+#else
+      SymExpr *var = (SymExpr *)e->kids[0];
+      SymExpr *newvar = new SymExpr(*var);
+#endif
+      Expr *tp = e->kids[1]->clone();
+      Expr *prev = var->val;
+      var->val = newvar;
+      Expr *bod = e->kids[2]->clone();
+      var->val = prev;
+      Expr* ret = new CExpr(PI,newvar,tp,bod);
+      if( data&256 )
+         ret->data |=256;
+      return ret;
+    }
+    default: {
+      Expr **cur = e->kids;
+      Expr *tmp;
+      int size = 0;
+      while((*cur++))
+	      size++;
+      Expr **kids = new Expr*[size+1];
+      kids[size]=0;
+      cur = e->kids;
+      bool diff_kid = false;
+      int i = 0;
+      while((tmp = *cur++)) {
+	      Expr *c = tmp->clone();
+	      diff_kid |= (c != tmp);
+	      kids[i++] = c;
+      }
+      if (diff_kid)
+	      return new CExpr(op, true /* dummy */, kids);
+      for (int i = 0, iend = size; i != iend; i++)
+	kids[i]->dec();
+      delete[] kids;
+      e->inc();
+      return e;
+    }
+    }
+  }
+  }
+  std::abort();  // should never be reached
+}
+
+
+Expr* Expr::build_app(Expr *hd, const std::vector<Expr *> &args, int start) {
+#ifndef USE_FLAT_APP
+  Expr *ret = hd;
+  for (int i = start, iend = args.size(); i < iend; i++)
+    ret = new CExpr(APP,ret,args[i]);
+  return ret;
+#else
+  if( start>=(int)args.size() )
+    return hd;
+  else
+  {
+    Expr **kids = new Expr *[args.size() - start + 2];
+    kids[0] = hd;
+    for (int i = start, iend = args.size(); i < iend; i++)
+      kids[i - start + 1] = args[i];
+    kids[args.size() - start + 1] = NULL;
+    return new CExpr(APP, true /* dummy */, kids);
+  }
+#endif
+}
+
+Expr* Expr::make_app(Expr* e1, Expr* e2 )
+{
+   //std::cout << "make app from ";
+   //e1->print( std::cout );
+   //std::cout << " ";
+   //e2->print( std::cout );
+   //std::cout << std::endl;
+   CExpr *ret;
+   if( e1->getclass()==CEXPR ){
+      int counter = 0;
+      while( ((CExpr*)e1)->kids[counter] ){
+         counter++;
+      }
+      Expr **kids = new Expr *[counter + 2];
+      counter = 0;
+      while( ((CExpr*)e1)->kids[counter] ){
+        kids[counter] = ((CExpr *)e1)->kids[counter];
+        kids[counter]->inc();
+        counter++;
+      }
+      kids[counter] = e2;
+      kids[counter + 1] = NULL;
+      ret = new CExpr(APP, true /* dummy */, kids);
+   }else{
+      ret = new CExpr( APP, e1, e2 );
+   }
+   //ret->print( std::cout );
+   //std::cout << std::endl;
+   return ret;
+}
+
+int Expr::cargCount = 0;
+
+Expr *Expr::collect_args(std::vector<Expr *> &args, bool follow_defs) {
+   //cargCount++;
+   //if( cargCount%1000==0)
+   //std::cout << cargCount << std::endl;
+#ifndef USE_FLAT_APP
+  CExpr *e = (CExpr *)this;
+  args.reserve(16);
+  while( e->getop() == APP ) {
+    args.push_back(e->kids[1]);
+    e = (CExpr *)e->kids[0];
+    if (follow_defs)
+      e = (CExpr *)e->followDefs();
+  }
+  std::reverse(args.begin(),args.end());
+  return e;
+#else
+  CExpr *e = (CExpr *)this;
+  args.reserve(16);
+  if( e->getop()==APP ){
+      int counter = 1;
+      while( e->kids[counter] ) {
+         args.push_back(e->kids[counter]);
+         counter++;
+      }
+      e = (CExpr*)e->kids[0];
+  }
+  if (follow_defs)
+      return e->followDefs();
+  else
+      return e;
+#endif
+}
+
+Expr *Expr::get_head(bool follow_defs) const {
+  CExpr *e = (CExpr *)this;
+  while( e->getop() == APP ) {
+    e = (CExpr *)e->kids[0];
+    if (follow_defs)
+      e = (CExpr *)e->followDefs();
+  }
+  return e;
+}
+
+Expr *Expr::get_body(int op, bool follow_defs) const {
+  CExpr *e = (CExpr *)this;
+  while( e->getop() == op ) {
+    e = (CExpr *)e->kids[2];
+    if (follow_defs)
+      e = (CExpr *)e->followDefs();
+  }
+  return e;
+}
+
+// if the return value is different from this, then it is a new reference
+Expr *CExpr::whr() {
+  vector<Expr *> args;
+  if (get_head()->getop() == LAM) {
+    CExpr *head = (CExpr *)collect_args(args, true);
+    Expr *cloned_head;
+    if (head->cloned()) {
+      // we must clone
+      head = (CExpr *)head->clone();
+      cloned_head = head;
+    }
+    else {
+      head->setcloned();
+      cloned_head = 0;
+    }
+    int i = 0;
+    int iend = args.size();
+
+    /* we will end up incrementing the ref count for all the args,
+       since each is either pointed to by a var (following a
+       beta-reduction), or else just an argument in the new
+       application we build below. */
+
+    do {
+      Expr *tmp = args[i++]->followDefs();
+      ((SymExpr *)head->kids[0])->val = tmp;
+      tmp->inc();
+      head = (CExpr *)head->kids[1];
+    } while(head->getop() == LAM && i < iend);
+    for (; i < iend; i++)
+      args[i]->inc();
+    head->inc();
+    if (cloned_head)
+      cloned_head->dec();
+    return build_app(head,args,i);
+  }
+  else 
+    return this;
+}
+
+Expr* CExpr::convert_to_tree_app( Expr* e )
+{
+  if( e->getop()==APP )
+  {
+    std::vector< Expr* > kds;
+    int counter = 1;
+    while( ((CExpr*)e)->kids[counter] )
+    {
+      kds.push_back( convert_to_tree_app( ((CExpr*)e)->kids[counter] ) );
+      counter++;
+    }
+    Expr* app = Expr::build_app( e->get_head(), kds );
+    //app->inc();
+    return app;
+  }
+  else
+  {
+    return e;
+  }
+}
+
+Expr* CExpr::convert_to_flat_app( Expr* e )
+{
+  if( e->getop()==APP )
+  {
+    std::vector< Expr* > args;
+    Expr* hd = ((CExpr*)e)->collect_args( args );
+    Expr **kids = new Expr *[args.size() + 2];
+    kids[0] = hd;
+    for (size_t a = 0; a < args.size(); a++) {
+      kids[a + 1] = convert_to_flat_app(args[a]);
+    }
+    kids[args.size() + 1] = 0;
+    CExpr *nce = new CExpr(APP, true /* dummy */, kids);
+    nce->inc();
+    return nce;
+  }
+  else
+  {
+    return e;
+  }
+}
+
+bool Expr::defeq(Expr *e) {
+  /* we handle a few special cases up front, where this Expr might
+     equal e, even though they have different opclass (i.e., different
+     structure). */
+
+  if (this == e)
+    return true;
+  int op1 = getop();
+  int op2 = e->getop();
+  switch (op1) {
+  case ASCRIBE:
+    return ((CExpr *)this)->kids[0]->defeq(e);
+  case APP: {
+    Expr *tmp = ((CExpr *)this)->whr();
+    if (tmp != this) {
+      bool b = tmp->defeq(e);
+      tmp->dec();
+      return b;
+    }
+    if (get_head()->getclass() == HOLE_EXPR) {
+      vector<Expr *> args;
+      Expr *head = collect_args(args, true);
+      Expr *t = e;
+      t->inc();
+      for (int i = 0, iend = args.size(); i < iend; i++) {
+	      // don't worry about SYMS_EXPR's, since we should not be in code here.
+	      if (args[i]->getclass() != SYM_EXPR || args[i]->getexmark())
+	        /* we cannot fill the hole in this case.  Either this is not
+	          a variable or we are using a variable again. */
+	        return false;
+	      SymExpr *v = (SymExpr *)args[i];
+
+	      // we may have been mapping from expected var v to a computed var
+	      Expr *tmp = (v->val ? v->val : v);
+
+	      tmp->inc();
+	      t = new CExpr(LAM, tmp, t);
+	      args[i]->setexmark();
+      }
+      for (int i = 0, iend = args.size(); i < iend; i++) 
+	      args[i]->clearexmark();
+#ifdef DEBUG_HOLES
+      cout << "Filling hole ";
+      head->debug();
+      cout << "with ";
+      t->debug();
+#endif
+      ((HoleExpr *)head)->val = t;
+      return true;
+    }
+    break;
+  }
+  case NOT_CEXPR:
+    switch (getclass()) {
+    case HOLE_EXPR: {
+      HoleExpr *h = (HoleExpr *)this;
+      if (h->val)
+	      return h->val->defeq(e);
+#ifdef DEBUG_HOLES
+      cout << "Filling hole ";
+      h->debug();
+      cout << "with ";
+      e->debug();
+#endif
+#ifdef USE_HOLE_PATH_COMPRESSION
+      Expr *tmp = e->followDefs();
+#else
+      Expr *tmp = e;
+#endif
+      h->val = tmp;
+      tmp->inc();
+      return true;
+    }
+    case SYMS_EXPR: 
+    case SYM_EXPR: {
+      SymExpr *s = (SymExpr *)this;
+      if (s->val)
+	return s->val->defeq(e);
+      break;
+    }
+    }
+    break;
+  }
+  
+  switch (op2) {
+  case ASCRIBE:
+    return defeq(((CExpr *)e)->kids[0]);
+  case APP: {
+    Expr *tmp = ((CExpr *)e)->whr();
+    if (tmp != e) {
+      bool b = defeq(tmp);
+      tmp->dec();
+      return b;
+    }
+    break;
+  }
+  case NOT_CEXPR:
+    switch (e->getclass()) {
+    case HOLE_EXPR: {
+      HoleExpr *h = (HoleExpr *)e;
+      if (h->val)
+	return defeq(h->val);
+
+#ifdef DEBUG_HOLES
+      cout << "Filling hole ";
+      h->debug();
+      cout << "with ";
+      debug();
+#endif
+#ifdef USE_HOLE_PATH_COMPRESSION
+      Expr *tmp = followDefs();
+#else
+      Expr *tmp = this;
+#endif
+      h->val = tmp;
+      tmp->inc();
+      return true;
+    }
+    case SYMS_EXPR: 
+    case SYM_EXPR: {
+      SymExpr *s = (SymExpr *)e;
+      if (s->val)
+	return defeq(s->val);
+      break;
+    }
+    }
+    break;
+  }
+
+  /* at this point, e1 and e2 must have the same opclass if they are 
+     to be equal. */
+
+  if (op1 != op2)
+    return false;
+  
+  if (op1 == NOT_CEXPR) {
+    switch(getclass()) {
+    case INT_EXPR: {
+      IntExpr *i1 = (IntExpr *)this;
+      IntExpr *i2 = (IntExpr *)e;
+      return (mpz_cmp(i1->n,i2->n) == 0);
+    }
+    case RAT_EXPR: {
+      RatExpr *r1 = (RatExpr *)this;
+      RatExpr *r2 = (RatExpr *)e;
+      return (mpq_cmp(r1->n,r2->n) == 0);
+    }
+    case SYMS_EXPR: 
+    case SYM_EXPR: 
+      return (this == e);
+    }
+  }
+
+  /* Now op1 and op2 must both be CExprs, and must have the same op to be
+     equal. */
+
+  CExpr *e1 = (CExpr *)this;
+  CExpr *e2 = (CExpr *)e;
+
+  int last = 1;
+  switch (op1) {
+  case PI:
+    if (!e1->kids[1]->defeq(e2->kids[1]))
+      return false;
+    last++;
+    // fall through to LAM case
+  case LAM: {
+
+    /* It is critical that we point e1's var. (v1) back to e2's (call
+       it v2).  The reason this is critical is that we assume any
+       holes are in e1.  So we could end up with (_ v1) = t. We wish
+       to fill _ in this case with (\ v2 t).  If v2 pointed to v1, we
+       could not return (\ v1 t), because the fact that v2 points to
+       v1 would then be lost.
+    */
+    SymExpr *v1 = (SymExpr *)e1->kids[0];
+    Expr *prev_v1_val = v1->val;
+    v1->val = e2->kids[0]->followDefs();
+    bool bodies_equal = e1->kids[last]->defeq(e2->kids[last]);
+    v1->val = prev_v1_val;
+    return bodies_equal;
+  }
+  case APP: 
+#ifndef USE_FLAT_APP
+    return (e1->kids[0]->defeq(e2->kids[0]) &&
+	    e1->kids[1]->defeq(e2->kids[1]));
+#else
+    {
+      int counter = 0;
+      while( e1->kids[counter] ){
+         if( e1->kids[counter]!=e2->kids[counter] ){
+           if( !e2->kids[counter] || !e1->kids[counter]->defeq( e2->kids[counter] ) )
+              return false;
+           //--- optimization : replace child with equivalent pointer if was defeq
+           // Heuristic: prefer symbolic kids because they may be cheaper to
+           // deal with (e.g. in free_in()).
+           if (e2->kids[counter]->isSymbolic() ||
+               (!e1->kids[counter]->isSymbolic() &&
+                e1->kids[counter]->getrefcnt() <
+                    e2->kids[counter]->getrefcnt())) {
+             e1->kids[counter]->dec();
+             e2->kids[counter]->inc();
+             e1->kids[counter] = e2->kids[counter];
+           }else{
+             e2->kids[counter]->dec();
+             e1->kids[counter]->inc();
+             e2->kids[counter] = e1->kids[counter];
+           }
+         }
+         //---
+         counter++;
+      }
+      return e2->kids[counter]==NULL;
+    }
+#endif
+  case TYPE:
+  case KIND:
+  case MPZ:
+    // already checked that both exprs have the same opclass.
+    return true;
+  } // switch(op1)
+
+  std::abort();  // never reached.
+}
+
+int Expr::fiCounter = 0;
+
+bool Expr::_free_in(Expr *x, expr_ptr_set_t *visited) {
+  // fiCounter++;
+  // if( fiCounter%1==0 )
+  //   std::cout << fiCounter << std::endl;
+  if (visited->find(this) != visited->end()) {
+    return false;
+  }
+
+  switch (getop()) {
+    case NOT_CEXPR:
+      switch (getclass()) {
+      case HOLE_EXPR: {
+         HoleExpr *h = (HoleExpr *)this;
+         if (h->val) return h->val->_free_in(x, visited);
+         return (h == x);
+      }
+      case SYMS_EXPR: 
+      case SYM_EXPR: {
+         SymExpr *s = (SymExpr *)this;
+         if (s->val && s->val->getclass() == HOLE_EXPR)
+           /* we do not need to follow the "val" pointer except in this
+             one case, when x is a hole (which we do not bother to check
+             here) */
+           return s->val->_free_in(x, visited);
+         return (s == x);
+      }
+      case INT_EXPR:
+         return false;
+      }
+      break;
+   case LAM:
+   case PI:
+      if (x == ((CExpr *)this)->kids[0])
+         return false;
+      // fall through
+   default: {
+      // must be a CExpr
+      assert(this->getclass() == CEXPR);
+      CExpr *e = (CExpr *)this;
+      Expr *tmp;
+      Expr **cur = e->kids;
+      visited->insert(this);
+      while ((tmp = *cur++))
+        if (tmp->_free_in(x, visited)) return true;
+      return false;
+   }
+   }
+   std::abort();  // should not be reached
+}
+
+void Expr::calc_free_in(){
+   data &= ~256;
+   data |= 256*((CExpr *)this)->kids[2]->free_in( ((CExpr *)this)->kids[0] );
+}
+
+string Expr::toString() {
+  ostringstream oss;
+  print(oss);
+  return oss.str();
+}
+
+static void print_kids(ostream &os, Expr **kids) {
+  Expr *tmp;
+  while ((tmp = *kids++)) {
+    os << " ";
+    tmp->print(os);
+  }
+}
+
+static void print_vector(ostream &os, const vector<Expr *> &v) {
+  for(int i = 0, iend = v.size(); i < iend; i++) {
+    os << " ";
+    v[i]->print(os);
+  }
+}
+
+void Expr::print(ostream &os) {
+  CExpr *e = (CExpr *)this; // for CEXPR cases
+
+  //std::cout << e->getop() << " ";
+  /*
+#ifdef DEBUG_REFCNT
+  os << "<";
+  char tmp[10];
+  sprintf(tmp,"%d",getrefcnt());
+  os << tmp << "> ";
+#endif
+*/
+
+  switch(getop()) {
+  case NOT_CEXPR: {
+    switch(getclass()) {
+    case INT_EXPR: 
+    {
+      IntExpr *e = (IntExpr *)this;
+      if (mpz_sgn(e->n) < 0) {
+	      os << "(~ ";
+	      mpz_t tmp;
+	      mpz_init(tmp);
+	      mpz_neg(tmp,e->n);
+	      char *s = mpz_get_str(0,10,tmp);
+	      os << s;
+	      free(s);
+	      mpz_clear(tmp);
+	      os << ")";
+        //os << "mpz";
+      }
+      else {
+	      char *s = mpz_get_str(0,10,e->n);
+	      os << s;
+	      free(s);
+        //os << "mpz";
+      }
+      break;
+    }
+    case RAT_EXPR: 
+    {
+      RatExpr *e = (RatExpr *)this;
+      char *s = mpq_get_str(0,10,e->n);
+      os << s;
+      if (mpq_sgn(e->n) < 0) {
+	      os << "(~ ";
+	      mpq_t tmp;
+	      mpq_init(tmp);
+	      mpq_neg(tmp,e->n);
+	      char *s = mpq_get_str(0,10,tmp);
+	      os << s;
+	      free(s);
+	      mpq_clear(tmp);
+	      os << ")";
+      }
+      else {
+	      char *s = mpq_get_str(0,10,e->n);
+	      os << s;
+	      free(s);
+      }
+      break;
+    }
+#ifndef DEBUG_SYM_NAMES
+    case SYM_EXPR: 
+    {
+      SymExpr *e = (SymExpr *)this;
+      if (e->val) {
+	      if (e->val->getop() == PROG) {
+	        os << e;
+#ifdef DEBUG_SYMS
+	        os << "[PROG]";
+#endif
+	      }else{
+#ifdef DEBUG_SYMS
+	        os << e;
+	        os << "[SYM ";
+#endif
+	        e->val->print(os);
+#ifdef DEBUG_SYMS
+	        os << "]";
+#endif
+        }
+      }
+      else
+	      os << e;
+      break;
+    }
+#else
+    case SYM_EXPR: /* if we are debugging sym names, then
+		      SYM_EXPRs are really SymSExprs. */
+#endif
+    case SYMS_EXPR: {
+      SymSExpr *e = (SymSExpr *)this;
+      if (e->val) {
+	      if (e->val->getop() == PROG) {
+	        os << e->s;
+#ifdef DEBUG_SYMS
+	        os << "[PROG]";
+#endif
+	      }else{
+#ifdef DEBUG_SYMS
+	        os << e->s;
+	        os << "[SYM ";
+#endif
+	        e->val->print(os);
+#ifdef DEBUG_SYMS
+	        os << "]";
+#endif
+	      }
+      }
+      else
+	      os << e->s;
+      break;
+    }
+    case HOLE_EXPR: 
+    {
+      HoleExpr *e = (HoleExpr *)this;
+      if (e->val) {
+#ifdef DEBUG_SYMS
+	      os << "_" << "[HOLE ";
+#endif
+	      e->val->print(os);
+#ifdef DEBUG_SYMS
+	      os << "]";
+#endif
+      }else {
+	      os << "_";
+#ifdef DEBUG_HOLE_NAMES
+	      char tmp[100];
+	      sprintf(tmp,"%d",e->id);
+	      os << "[ " << tmp << "]";
+#else
+	      os << "[ " << e << "]";
+#endif
+      }
+      break;
+    }
+    default:
+      os << "; unrecognized form of expr";
+      break;
+    }
+    break;
+  } // case NOT_CEXPR
+  case APP: {
+    os << "(";
+    vector<Expr *> args;
+    Expr *head = collect_args(args, false /* follow_defs */);
+    head->print(os);
+    print_vector(os, args);
+    os << ")";
+    break;
+  }
+  case LAM: 
+    os << "(\\";
+    print_kids(os, e->kids);
+    os << ")";
+    break;
+  case PI: 
+    os << "(!";
+    print_kids(os, e->kids);
+    os << ")";
+    break;
+  case TYPE: 
+    os << "type";
+    break;
+  case KIND: 
+    os << "kind";
+    break;
+  case MPZ: 
+    os << "mpz";
+    break;
+  case MPQ:
+    os << "mpq";
+    break;
+  case ADD: 
+    os << "(mp_add";  
+    print_kids(os,e->kids);
+    os << ")";
+    break;
+  case MUL:
+    os << "(mp_mul";  
+    print_kids(os,e->kids);
+    os << ")";
+    break;
+  case DIV:
+    os << "(mp_div";  
+    print_kids(os,e->kids);
+    os << ")";
+    break;
+  case NEG: 
+    os << "(mp_neg";
+    print_kids(os,e->kids);
+    os << ")";
+    break;
+  case IFNEG:
+    os << "(ifneg";
+    print_kids(os,e->kids);
+    os << ")";
+    break;
+  case IFZERO:
+    os << "(ifzero";
+    print_kids(os,e->kids);
+    os << ")";
+    break;
+  case RUN: 
+    os << "(run";
+    print_kids(os,e->kids);
+    os << ")";
+    break;
+  case PROG: 
+    os << "(prog";
+    print_kids(os,e->kids);
+    os << ")";
+    break;
+  case PROGVARS: 
+    os << "(";
+    print_kids(os,e->kids);
+    os << ")";
+    break;
+  case MATCH: 
+    os << "(match";
+    print_kids(os,e->kids);
+    os << ")";
+    break;
+  case CASE: 
+    os << "(";
+    print_kids(os,e->kids);
+    os << ")";
+    break;
+  case LET: 
+    os << "(let";
+    print_kids(os,e->kids);
+    os << ")";
+    break;
+  case DO: 
+    os << "(do";
+    print_kids(os,e->kids);
+    os << ")";
+    break;
+  case IFMARKED: 
+    os << "(ifmarked";
+    print_kids(os,e->kids);
+    os << ")";
+    break;
+  case COMPARE:
+    os << "(compare";
+    print_kids(os,e->kids);
+    os << ")";
+    break;
+  case MARKVAR: 
+    os << "(markvar";
+    print_kids(os,e->kids);
+    os << ")";
+    break;
+  case FAIL: 
+    os << "(fail ";
+    print_kids(os, e->kids);
+    os << ")";
+    break;
+  case ASCRIBE: 
+    os << "(:";
+    print_kids(os, e->kids);
+    os << ")";
+    break;
+  default:
+    os << "; unrecognized form of expr(2) " << getop() << " " << getclass();
+  } // switch(getop())
+}
+
+bool Expr::isType( Expr* statType ){
+  Expr* typ = this;
+  while( typ!=statType ){
+    if( typ->getop()==PI ){
+      typ = ((CExpr*)typ)->kids[2];
+    }else{
+      return false;
+    }
+  }
+  return true;
+}
+
+int SymExpr::symmCount = 0;
+#ifdef MARKVAR_32
+int SymExpr::mark()
+{
+  if( mark_map.find( this )== mark_map.end() )
+  {
+    symmCount++;
+    mark_map[this] = 0;
+  }
+  return mark_map[this];
+}
+void SymExpr::smark( int m )
+{
+  mark_map[this] = m;
+}
+#endif
diff --git a/proofs/lfsc_checker/expr.h b/proofs/lfsc_checker/expr.h
new file mode 100644
index 0000000..632aaa1
--- /dev/null
+++ b/proofs/lfsc_checker/expr.h
@@ -0,0 +1,426 @@
+#ifndef sc2__expr_h
+#define sc2__expr_h
+
+#include <stdint.h>
+#include <ext/hash_set>
+#include <iostream>
+#include <map>
+#include <string>
+#include <vector>
+#include "chunking_memory_management.h"
+#include "gmp.h"
+
+#define USE_FLAT_APP  //AJR: off deprecated
+#define MARKVAR_32
+//#define DEBUG_SYM_NAMES
+//#define DEBUG_SYMS
+
+// Expr class
+enum { CEXPR = 0,
+       INT_EXPR,
+       RAT_EXPR,
+       HOLE_EXPR,
+       SYM_EXPR,
+       SYMS_EXPR };
+
+// operators for CExprs
+enum { NOT_CEXPR = 0, // for INT_EXPR, HOLE_EXPR, SYM_EXPR, SYMS_EXPR
+       APP,
+       PI,
+       LAM,
+       TYPE,
+       KIND,
+       ASCRIBE,
+       MPZ,
+       MPQ,
+
+       PROG,
+       PROGVARS,
+       MATCH,
+       CASE,
+       PAT,
+       DO,
+       ADD,
+       MUL,
+       DIV,
+       NEG,
+       IFNEG,
+       IFZERO,
+       LET,
+       RUN,
+       FAIL,
+       MARKVAR,
+       IFMARKED,
+       COMPARE
+};
+
+class Expr;
+class SymExpr;
+
+namespace __gnu_cxx {
+template <>
+struct hash<Expr *> {
+  size_t operator()(const Expr *x) const {
+    return reinterpret_cast<uintptr_t>(x);
+  }
+};
+}
+
+struct eqExprPtr {
+  bool operator()(const Expr *e1, const Expr *e2) const { return e1 == e2; }
+};
+
+typedef __gnu_cxx::hash_set<Expr *, __gnu_cxx::hash<Expr *>, eqExprPtr>
+    expr_ptr_set_t;
+
+class Expr {
+protected:
+  /* bits 0-2: Expr class
+     bits 3-7: operator 
+     bit 8: a flag for already cloned, free_in calculation
+     bits 9-31: ref count*/
+  int data;
+
+  enum { INC, DEC, CREATE };
+  void debugrefcnt(int ref, int what) {
+    std::cout << "[";
+    debug();
+    switch(what) {
+    case INC:
+      std::cout << " inc to ";
+      break;
+    case DEC:
+      std::cout << " dec to ";
+      break;
+    case CREATE:
+      std::cout << " creating]\n";
+      return;
+    }
+    char tmp[10];
+    sprintf(tmp,"%d",ref);
+    std::cout << tmp << "]\n";
+  }
+
+  Expr(int _class, int _op)
+    : data(1 << 9 /* refcount 1, not cloned */| (_op << 3) | _class)
+  { }
+
+  bool _free_in(Expr *x, expr_ptr_set_t *visited);
+
+ public:
+  virtual ~Expr() {}
+
+  static int markedCount;
+  inline Expr* followDefs();
+  inline int getclass() const { return data & 7; }
+  int getexmark() const { return data & 256; }
+  void setexmark() { data |= 256; }
+  void clearexmark() { data &= ~256; }
+  inline int getop() const { return (data >> 3) & 31; }
+  int cloned() const { return data & 256; }
+  void setcloned() { data |= 256; }
+
+  inline int getrefcnt() { return data >> 9; }
+  inline void inc() {
+    int ref = getrefcnt();
+    //static int iCounter = 0;
+    //iCounter++;
+    //if( iCounter%10000==0 ){
+    //   //print( std::cout );
+    //   std::cout << " " << ref << std::endl;
+    //}
+    ref = ref<4194303 ? ref + 1 : ref;
+#ifdef DEBUG_REFCNT    
+    debugrefcnt(ref,INC);
+#endif
+    data = (ref << 9) | (data & 511);
+  }
+  static void destroy(Expr *, bool);
+  inline void dec(bool dec_kids = true) {
+    int ref = getrefcnt();
+    ref = ref - 1;
+#ifdef DEBUG_REFCNT    
+    debugrefcnt(ref,DEC);
+#endif
+    if (ref == 0)
+      destroy(this,dec_kids);
+    else
+      data = (ref << 9) | (data & 511);
+  }
+
+  //must pass statType (the expr representing "type") to this function
+  bool isType( Expr* statType );
+
+  inline bool isDatatype() const {
+    return getclass() == SYMS_EXPR || getop() == MPZ || getop() == MPQ;
+  }
+  inline bool isArithTerm() const {
+    return getop() == ADD || getop() == NEG;
+  }
+  inline bool isSymbolic() const {
+    return getclass() == SYM_EXPR || getclass() == SYMS_EXPR;
+  }
+
+  static Expr *build_app(Expr *hd, const std::vector<Expr *> &args, 
+			 int start = 0);
+
+  static Expr *make_app(Expr* e1, Expr* e2 );
+
+  /* if this is an APP, return the head, and store the args in args.
+     If follow_defs is true, we proceed through defined heads;
+     otherwise not. */
+  Expr *collect_args(std::vector<Expr *> &args, bool follow_defs = true);
+
+  Expr *get_head(bool follow_defs = true) const;
+
+  Expr *get_body(int op = PI, bool follow_defs = true) const;
+
+  std::string toString();
+
+  void print(std::ostream &);
+  void debug();
+
+  /* check whether or not this expr is alpha equivalent to e.  If this
+     expr contains unfilled holes, fill them as we go. We do not fill
+     holes in e.  We do not take responsibility for the reference to
+     this nor the reference to e. */
+  bool defeq(Expr *e);
+
+  /* return a clone of this expr.  All abstractions are really duplicated
+     in memory.  Other expressions may not actually be duplicated in
+     memory, but their refcounts will be incremented. */
+  Expr *clone();
+
+  // x can be a SymExpr or a HoleExpr.
+  bool free_in(Expr *x) {
+    expr_ptr_set_t visited;
+    return _free_in(x, &visited);
+  }
+  bool get_free_in() const { return data & 256; }
+  void calc_free_in();
+
+  static int cargCount;
+  static int fiCounter;
+};
+
+class CExpr : public Expr {
+public:
+  C_MACROS__ADD_CHUNKING_MEMORY_MANAGEMENT_H(CExpr,kids);
+
+  Expr **kids;
+  virtual ~CExpr() {
+    delete[] kids;
+  }
+  CExpr(int _op) : Expr(CEXPR, _op), kids() {
+    kids = new Expr *[1];
+    kids[0] = 0;
+#ifdef DEBUG_REFCNT    
+    debugrefcnt(1,CREATE);
+#endif
+  }
+  CExpr(int _op, Expr *e1) : Expr(CEXPR, _op), kids() {
+    kids = new Expr *[2];
+    kids[0] = e1;
+    kids[1] = 0;
+#ifdef DEBUG_REFCNT    
+    debugrefcnt(1,CREATE);
+#endif
+  }
+  CExpr(int _op, Expr *e1, Expr *e2)
+    : Expr(CEXPR, _op), kids() {
+    kids = new Expr *[3];
+    kids[0] = e1;
+    kids[1] = e2;
+    kids[2] = 0;
+#ifdef DEBUG_REFCNT    
+    debugrefcnt(1,CREATE);
+#endif
+  }
+  CExpr(int _op, Expr *e1, Expr *e2, Expr *e3)
+    : Expr(CEXPR, _op), kids() {
+    kids = new Expr *[4];
+    kids[0] = e1;
+    kids[1] = e2;
+    kids[2] = e3;
+    kids[3] = 0;
+#ifdef DEBUG_REFCNT    
+    debugrefcnt(1,CREATE);
+#endif
+  }
+  CExpr(int _op, Expr *e1, Expr *e2, Expr *e3, Expr *e4)
+    : Expr(CEXPR, _op), kids() {
+    kids = new Expr *[5];
+    kids[0] = e1;
+    kids[1] = e2;
+    kids[2] = e3;
+    kids[3] = e4;
+    kids[4] = 0;
+#ifdef DEBUG_REFCNT    
+    debugrefcnt(1,CREATE);
+#endif
+  }
+  CExpr(int _op, const std::vector<Expr *> &_kids) 
+    : Expr(CEXPR, _op), kids() {
+    int i, iend = _kids.size();
+    kids = new Expr *[iend + 1];
+    for (i = 0; i < iend; i++)
+      kids[i] = _kids[i];
+    kids[i] = 0;
+#ifdef DEBUG_REFCNT    
+    debugrefcnt(1,CREATE);
+#endif
+  }
+
+  // _kids must be null-terminated.
+  CExpr(int _op, bool dummy, Expr **_kids) : Expr(CEXPR, _op), kids(_kids) {
+    (void)dummy;
+#ifdef DEBUG_REFCNT    
+    debugrefcnt(1,CREATE);
+#endif
+  }
+
+  Expr *whr();
+
+  static Expr* convert_to_tree_app( Expr* ce );
+  static Expr* convert_to_flat_app( Expr* ce );
+};
+
+class IntExpr : public Expr {
+ public:
+  mpz_t n;
+  virtual ~IntExpr() {
+    mpz_clear(n);
+  }
+  IntExpr(mpz_t _n) : Expr(INT_EXPR, 0), n() {
+    mpz_init_set(n,_n);
+#ifdef DEBUG_REFCNT    
+    debugrefcnt(1,CREATE);
+#endif
+  }
+  IntExpr(signed long int _n ) : Expr(INT_EXPR, 0), n() {
+    mpz_init_set_si( n, _n );
+  }
+
+  unsigned long int get_num() { return mpz_get_ui( n ); }
+};
+
+class RatExpr : public Expr {
+ public:
+  mpq_t n;
+  virtual ~RatExpr() {
+    mpq_clear(n);
+  }
+  RatExpr(mpq_t _n) : Expr(RAT_EXPR, 0), n() {
+    mpq_init( n );
+    mpq_set(n,_n);
+#ifdef DEBUG_REFCNT   
+    debugrefcnt(1,CREATE);
+#endif
+    mpq_canonicalize( n );
+  }
+  RatExpr(signed long int _n1, unsigned long int _n2 ) : Expr(RAT_EXPR, 0), n() {
+    mpq_init( n );
+    mpq_set_si( n, _n1, _n2 );
+    mpq_canonicalize( n );
+  }
+};
+
+class SymExpr : public Expr {
+ public:
+  Expr *val; // may be set by beta-reduction and clone().
+  static int symmCount;
+
+  SymExpr(std::string _s, int theclass = SYM_EXPR) 
+    : Expr(theclass, 0), val(0)
+  {   
+    (void)_s;
+#ifdef DEBUG_REFCNT   
+    if (theclass == SYM_EXPR)
+      debugrefcnt(1,CREATE);
+#endif
+  }
+  SymExpr(const SymExpr &e, int theclass = SYM_EXPR) 
+    : Expr(theclass, 0), val(0)
+  {
+    (void)e;
+#ifdef DEBUG_REFCNT   
+    if (theclass == SYM_EXPR)
+      debugrefcnt(1,CREATE);
+#endif
+  }
+
+  virtual ~SymExpr() {}
+
+#ifdef MARKVAR_32
+private:
+  int mark();
+  void smark( int m );
+public:
+  int getmark( int i = 0 ) { return (mark() >> i)&1; }
+  void setmark( int i = 0 ) { smark( mark() | (1 << i) ); }
+  void clearmark( int i = 0 ) { smark( mark() & ~(1 << i) ); }
+#endif
+};
+
+class SymSExpr : public SymExpr {
+ public:
+  std::string s;
+  SymSExpr(std::string _s, int theclass = SYMS_EXPR) 
+    : SymExpr(_s, theclass), s(_s)
+  {
+#ifdef DEBUG_REFCNT   
+    debugrefcnt(1,CREATE);
+#endif
+  }
+  SymSExpr(const SymSExpr &e, int theclass = SYMS_EXPR) 
+    : SymExpr(e, theclass), s(e.s)
+  { 
+#ifdef DEBUG_REFCNT   
+    debugrefcnt(1,CREATE);
+#endif
+  }
+
+  virtual ~SymSExpr() {}
+};
+
+class HoleExpr : public Expr {
+  static int next_id;
+public:
+#ifdef DEBUG_HOLE_NAMES
+  int id;
+#endif
+  HoleExpr() 
+    : Expr(HOLE_EXPR, 0), val(0) 
+  {
+#ifdef DEBUG_HOLE_NAMES
+    id = next_id++;
+#endif
+#ifdef DEBUG_REFCNT   
+    debugrefcnt(1,CREATE);
+#endif
+  }
+  Expr *val; // may be set during subst(), defeq(), and clone().
+};
+
+inline Expr * Expr::followDefs() {
+  switch(getclass()) {
+  case HOLE_EXPR: {
+    HoleExpr *h = (HoleExpr *)this;
+    if (h->val)
+      return h->val->followDefs();
+    break;
+  }
+  case SYMS_EXPR: 
+  case SYM_EXPR: {
+    SymExpr *h = (SymExpr *)this;
+    if (h->val)
+      return h->val->followDefs();
+    break;
+  }
+  }
+
+  return this;
+}
+
+#endif
+
diff --git a/proofs/lfsc_checker/libwriter.cpp b/proofs/lfsc_checker/libwriter.cpp
new file mode 100644
index 0000000..016016c
--- /dev/null
+++ b/proofs/lfsc_checker/libwriter.cpp
@@ -0,0 +1,238 @@
+#include "libwriter.h"
+#include <sstream>
+#include <algorithm>
+#include <fstream>
+
+void libwriter::get_var_name( const std::string& n, std::string& nn ) {
+  nn = std::string( n.c_str() );
+  for( int i = 0; i <(int)n.length(); i++ ){
+    char c = n[i];
+    if (c <= 47)
+        c += 65;
+    else if (c >= 58 && c <= 64)
+        c += 97-58;
+    if ((c >= 91 && c <= 94) || c == 96)
+        c += 104-91;
+    else if (c >= 123)
+        c -= 4;
+    nn[i] = c;
+  }  
+}
+
+void libwriter::write_file()
+{
+  //std::cout << "write lib" << std::endl;
+  std::ostringstream os_enum;
+  std::ostringstream os_print;
+  std::ostringstream os_constructor_h;
+  std::ostringstream os_constructor_c;
+
+  for ( int a=0; a<(int)syms.size(); a++ ) {
+    //std::cout << "sym #" << (a+1) << ": ";
+    //std::cout << ((SymSExpr*)syms[a])->s.c_str() << std::endl;
+    //defs[a]->print( std::cout );
+    //std::cout << std::endl;
+    
+    if( defs[a]->getclass()==CEXPR ){
+      //calculate which arguments are required for input
+      std::vector< Expr* > args;
+      std::vector< bool > argsNeed;
+      std::vector< Expr* > argTypes;
+      CExpr* c = ((CExpr*)defs[a]);
+      while( c->getop()==PI ){
+        //std::cout << c->kids[0] << std::endl;
+        if( ((CExpr*)c->kids[1])->getop()!=RUN ){
+          args.push_back( c->kids[0] );
+          argsNeed.push_back( true );
+          argTypes.push_back( c->kids[1] );
+        }
+        for( int b=0; b<(int)args.size(); b++ ){
+          if( argsNeed[b] ){
+            if( ((CExpr*)c->kids[1])->getop()==RUN ){
+              if( ((CExpr*)c->kids[1])->kids[1]->free_in( args[b] ) ){
+                argsNeed[b] = false;
+              }
+            }else{
+              if( c->kids[1]->free_in( args[b] ) ){
+                argsNeed[b] = false;
+              }
+            }
+          }
+        }
+        c = (CExpr*)(c->kids[2]);
+      }
+
+      //record if this declares a judgement
+      if( ((CExpr*)defs[a])->getop()==PI && c->getop()==TYPE ){
+        //std::cout << "This is a judgement" << std::endl;
+        judgements.push_back( syms[a] );
+      //record if this declares a proof rule
+      }else if( c->getclass()==CEXPR && std::find( judgements.begin(), judgements.end(), c->kids[0] )!=judgements.end() ){
+        std::cout << "Handle rule: " << ((SymSExpr*)syms[a])->s.c_str() << std::endl;
+        //std::cout << "These are required to input:" << std::endl;
+        //for( int b=0; b<(int)args.size(); b++ ){
+        //  if( argsNeed[b] ){
+        //    std::cout << ((SymSExpr*)args[b])->s.c_str() << std::endl;
+        //  }
+        //}
+        os_enum << "    rule_" << ((SymSExpr*)syms[a])->s.c_str() << "," << std::endl;
+
+        os_print << "  case rule_" << ((SymSExpr*)syms[a])->s.c_str() << ": os << \"";
+        os_print << ((SymSExpr*)syms[a])->s.c_str() << "\";break;" << std::endl;
+
+        std::ostringstream os_args;
+        os_args << "(";
+        bool firstTime = true;
+        for( int b=0; b<(int)args.size(); b++ ){
+          if( argsNeed[b] ){
+            if( !firstTime )
+              os_args << ",";
+            std::string str;
+            get_var_name( ((SymSExpr*)args[b])->s, str );
+            os_args << " LFSCProof* " << str.c_str();
+            firstTime = false;
+          }
+        }
+        if( !firstTime ){
+          os_args << " ";
+        }
+        os_args << ")";
+
+        os_constructor_h << "  static LFSCProof* make_" << ((SymSExpr*)syms[a])->s.c_str();
+        os_constructor_h << os_args.str().c_str() << ";" << std::endl;
+
+        os_constructor_c << "LFSCProof* LFSCProof::make_" << ((SymSExpr*)syms[a])->s.c_str();
+        os_constructor_c << os_args.str().c_str() << "{" << std::endl;
+        os_constructor_c << "  LFSCProof **kids = new LFSCProof *[" << (int)args.size()+1 << "];" << std::endl;
+        for( int b=0; b<(int)args.size(); b++ ){
+          os_constructor_c << "  kids[" << b << "] = ";
+          if( argsNeed[b] ){
+            std::string str;
+            get_var_name( ((SymSExpr*)args[b])->s, str );
+            os_constructor_c << str.c_str();
+          }else{
+            os_constructor_c << "hole";
+          }
+          os_constructor_c << ";" << std::endl;
+        }
+        os_constructor_c << "  kids[" << (int)args.size() << "] = 0;" << std::endl;
+        os_constructor_c << "  return new LFSCProofC( rule_" << ((SymSExpr*)syms[a])->s.c_str() << ", kids );" << std::endl;
+        os_constructor_c << "}" << std::endl << std::endl;
+      }
+    }
+
+    //write the header
+    static std::string filename( "lfsc_proof" );
+    std::fstream fsh;
+    std::string fnameh( filename );
+    fnameh.append(".h");
+    fsh.open( fnameh.c_str(), std::ios::out );
+
+    fsh << "#ifndef LFSC_PROOF_LIB_H" << std::endl;
+    fsh << "#define LFSC_PROOF_LIB_H" << std::endl;
+    fsh << std::endl;
+    fsh << "#include <string>" << std::endl;
+    fsh << std::endl;
+    fsh << "class LFSCProof{" << std::endl;
+    fsh << "protected:" << std::endl;
+    fsh << "  enum{" << std::endl;
+    fsh << os_enum.str().c_str();
+    fsh << "  };" << std::endl;
+    fsh << "  static LFSCProof* hole;" << std::endl;
+    fsh << "  LFSCProof(){}" << std::endl;
+    fsh << "public:" << std::endl;
+    fsh << "  virtual ~LFSCProof(){}" << std::endl;
+    fsh << "  static void init();" << std::endl;
+    fsh << std::endl;
+    fsh << "  //functions to build LFSC proofs" << std::endl;
+    fsh << os_constructor_h.str().c_str();
+    fsh << std::endl;
+    fsh << "  virtual void set_child( int i, LFSCProof* e ) {}" << std::endl;
+    fsh << "  virtual void print( std::ostream& os ){}" << std::endl;
+    fsh << "};" << std::endl;
+    fsh << std::endl;
+    fsh << "class LFSCProofC : public LFSCProof{" << std::endl;
+    fsh << "  short id;" << std::endl;
+    fsh << "  LFSCProof **kids;" << std::endl;
+    fsh << "public:" << std::endl;
+    fsh << "  LFSCProofC( short d_id, LFSCProof **d_kids ) : id( d_id ), kids( d_kids ){}" << std::endl;
+    fsh << "  void set_child( int i, LFSCProof* e ) { kids[i] = e; }" << std::endl;
+    fsh << "  void print( std::ostream& os );" << std::endl;
+    fsh << "};" << std::endl;
+    fsh << std::endl;
+    fsh << "class LFSCProofSym : public LFSCProof{" << std::endl;
+    fsh << "private:" << std::endl;
+    fsh << "  std::string s;" << std::endl;
+    fsh << "  LFSCProofSym( std::string ss ) : s( ss ){}" << std::endl;
+    fsh << "public:" << std::endl;
+    fsh << "  static LFSCProofSym* make( std::string ss ) { return new LFSCProofSym( ss ); }" << std::endl;
+    fsh << "  static LFSCProofSym* make( const char* ss ) { return new LFSCProofSym( std::string( ss ) ); }" << std::endl;
+    fsh << "  ~LFSCProofSym(){}" << std::endl;
+    fsh << "  void print( std::ostream& os ) { os << s.c_str(); }" << std::endl;
+    fsh << "};" << std::endl;
+    fsh << std::endl;
+    fsh << "class LFSCProofLam : public LFSCProof{" << std::endl;
+    fsh << "  LFSCProofSym* var;" << std::endl;
+    fsh << "  LFSCProof* body;" << std::endl;
+    fsh << "  LFSCProof* typ;" << std::endl;
+    fsh << "  LFSCProofLam( LFSCProofSym* d_var, LFSCProof* d_body, LFSCProof* d_typ ) : var( d_var ), body( d_body ), typ( d_typ ){}" << std::endl;
+    fsh << "public:" << std::endl;
+    fsh << "  static LFSCProof* make( LFSCProofSym* d_var, LFSCProof* d_body, LFSCProof* d_typ = NULL ) {" << std::endl;
+    fsh << "    return new LFSCProofLam( d_var, d_body, d_typ );" << std::endl;
+    fsh << "  }" << std::endl;
+    fsh << "  ~LFSCProofLam(){}" << std::endl;
+    fsh << std::endl;
+    fsh << "  void print( std::ostream& os );" << std::endl;
+    fsh << "};" << std::endl;
+    fsh << std::endl;
+    fsh << "#endif" << std::endl;
+
+    //write the cpp
+    std::fstream fsc;
+    std::string fnamec( filename );
+    fnamec.append(".cpp");
+    fsc.open( fnamec.c_str(), std::ios::out );
+
+    fsc << "#include \"lfsc_proof.h\"" << std::endl;
+    fsc << std::endl;
+    fsc << "LFSCProof* LFSCProof::hole = NULL;" << std::endl;
+    fsc << std::endl;
+    fsc << "void LFSCProof::init(){" << std::endl;
+    fsc << "  hole = LFSCProofSym::make( \"_\" );" << std::endl;
+    fsc << "}" << std::endl;
+    fsc << std::endl;
+    fsc << "void LFSCProofC::print( std::ostream& os ){" << std::endl;
+    fsc << "  os << \"(\";" << std::endl;
+    fsc << "  switch( id ){" << std::endl;
+    fsc << os_print.str().c_str();
+    fsc << "  }" << std::endl;
+    fsc << "  int counter = 0;" << std::endl;
+    fsc << "  while( kids[counter] ){" << std::endl;
+    fsc << "    os << \" \";" << std::endl;
+    fsc << "    kids[counter]->print( os );" << std::endl;
+    fsc << "    counter++;" << std::endl;
+    fsc << "  }" << std::endl;
+    fsc << "  os << \")\";" << std::endl;
+    fsc << "}" << std::endl;
+    fsc << std::endl;
+    fsc << "void LFSCProofLam::print( std::ostream& os ){" << std::endl;
+    fsc << "  os << \"(\";" << std::endl;
+    fsc << "  if( typ ){" << std::endl;
+    fsc << "    os << \"% \";" << std::endl;
+    fsc << "  }else{" << std::endl;
+    fsc << "    os << \"\\\\ \";" << std::endl;
+    fsc << "  }" << std::endl;
+    fsc << "  var->print( os );" << std::endl;
+    fsc << "  if( typ ){" << std::endl;
+    fsc << "    os << \" \";" << std::endl;
+    fsc << "    typ->print( os );" << std::endl;
+    fsc << "  }" << std::endl;
+    fsc << "  os << std::endl;" << std::endl;
+    fsc << "  body->print( os );" << std::endl;
+    fsc << "  os << \")\";" << std::endl;
+    fsc << "}" << std::endl;
+    fsc << std::endl;
+    fsc << os_constructor_c.str().c_str();
+    fsc << std::endl;
+  }
+}
diff --git a/proofs/lfsc_checker/libwriter.h b/proofs/lfsc_checker/libwriter.h
new file mode 100644
index 0000000..91db5e9
--- /dev/null
+++ b/proofs/lfsc_checker/libwriter.h
@@ -0,0 +1,28 @@
+#ifndef LIB_WRITER_H
+#define LIB_WRITER_H
+
+#include "expr.h"
+#include <map>
+
+class libwriter
+{
+private:
+  std::vector< Expr* > syms;
+  std::vector< Expr* > defs;
+
+  std::vector< Expr* > judgements;
+  //get the variable name
+  void get_var_name( const std::string& n, std::string& nn );
+public:
+  libwriter(){}
+  virtual ~libwriter(){}
+
+  void add_symbol( Expr* s, Expr* t ) { 
+    syms.push_back( s );
+    defs.push_back( t ); 
+  }
+
+  void write_file();
+};
+
+#endif
diff --git a/proofs/lfsc_checker/main.cpp b/proofs/lfsc_checker/main.cpp
new file mode 100644
index 0000000..1d8ba58
--- /dev/null
+++ b/proofs/lfsc_checker/main.cpp
@@ -0,0 +1,140 @@
+#include "expr.h"
+#include "check.h"
+#include <signal.h>
+#include "sccwriter.h"
+#include "libwriter.h"
+#include <time.h>
+
+using namespace std;
+
+args a;
+
+static void parse_args(int argc, char **argv, args &a)
+{
+  char *arg0 = *argv;
+
+  /* skip 0'th argument */
+  argv++;
+  argc--;
+
+  while (argc) {
+
+    if ((strncmp("-h", *argv, 2) == 0) || 
+	(strncmp("--h", *argv, 3) == 0)) {
+      cout << "Usage: " << arg0 << " [options] infile1 ...infile_n\n";
+      cout << "If no infiles are named on the command line, input is read\n"
+	   << "from stdin.  Specifying the infile \"stdin\" will also read\n"
+	   << "from stdin.  Options are:\n\n";
+      cout << "--show-runs: print debugging information for runs of side condition code\n"; 
+      cout << "--compile-scc: compile side condition code\n"; 
+      cout << "--compile-scc-debug: compile debug versions of side condition code\n"; 
+      cout << "--run-scc: use compiled side condition code\n"; 
+      exit(0);
+    }	  
+    else if(strcmp("--show-runs", *argv) == 0) {
+      argc--; argv++;
+      a.show_runs = true;
+    }
+    else if(strcmp("--no-tail-calls", *argv) == 0) {
+      // this is just for debugging.
+      argc--; argv++;
+      a.no_tail_calls = true;
+    }
+    else if( strcmp("--compile-scc", *argv) == 0 ){
+      argc--; argv++;
+      a.compile_scc = true;
+      a.compile_scc_debug = false;
+    }
+    else if( strcmp("--compile-scc-debug", *argv) == 0 )
+    {
+       argc--; argv++;
+       a.compile_scc = true;
+       a.compile_scc_debug = true;
+    }
+    else if( strcmp("--compile-lib", *argv) == 0 )
+    {
+       argc--; argv++;
+       a.compile_lib = true;
+    }
+    else if( strcmp("--run-scc", *argv) == 0 ){
+      argc--; argv++;
+      a.run_scc = true;
+    }
+    else if( strcmp("--use-nested-app", *argv) == 0 ){
+      argc--; argv++;
+      a.use_nested_app = true;    //not implemented yet
+    }else {
+      a.files.push_back(*argv);
+      argc--; argv++;
+    }
+  }
+}
+
+void sighandler(int /* signum */) {
+  cerr << "\nInterrupted.  sc is aborting.\n";
+  exit(1);
+}
+
+int main(int argc, char **argv) {
+
+  a.show_runs = false;
+  a.no_tail_calls = false;
+  a.compile_scc = false;
+  a.run_scc = false;
+  a.use_nested_app = false;
+
+  signal(SIGINT, sighandler);
+
+  parse_args(argc, argv, a);
+
+  init();
+
+  check_time = (int)clock();
+
+  if (a.files.size()) {
+    sccwriter* scw = NULL;
+    libwriter* lw = NULL;
+    if( a.compile_scc ){
+       scw = new sccwriter( a.compile_scc_debug ? opt_write_call_debug : 0 );
+    }
+    if( a.compile_lib ){
+       lw = new libwriter;
+    }
+    /* process the files named */
+    int i = 0, iend = a.files.size();
+    for (; i < iend; i++) {
+      const char *filename = a.files[i].c_str();
+      check_file(filename, a, scw, lw);
+    }
+    if( scw ){
+      scw->write_file();
+      delete scw;
+    }
+    if( lw ){
+#ifdef DEBUG_SYM_NAMES
+      lw->write_file();
+      delete lw;
+#else
+      std::cout << "ERROR libwriter: Must compile LFSC with DEBUG_SYM_NAMES flag (see Expr.h)" << std::endl;
+#endif
+    }
+  }
+  else 
+    check_file("stdin", a);
+
+  //std::cout << "time = " << (int)clock() - t << std::endl;
+  //while(1){}
+
+#ifdef DEBUG
+  cout << "Clearing globals.\n";
+  cout.flush(); 
+
+  cleanup();
+  a.files.clear();
+#endif
+
+  std::cout << "Proof checked successfully!" << std::endl << std::endl;
+  std::cout << "time = " << (int)clock() - check_time << std::endl;
+  std::cout << "sym count = " << SymExpr::symmCount << std::endl;
+  std::cout << "marked count = " << Expr::markedCount << std::endl;
+}
diff --git a/proofs/lfsc_checker/position.h b/proofs/lfsc_checker/position.h
new file mode 100644
index 0000000..a5c51ff
--- /dev/null
+++ b/proofs/lfsc_checker/position.h
@@ -0,0 +1,30 @@
+#ifndef sc2__position_h
+#define sc2__position_h
+
+#include <iostream>
+#include <stdio.h>
+
+class Position {
+public:
+  const char *filename;
+  int linenum; 
+  int colnum;
+
+  Position(const char *_f, int l, int c) : filename(_f), linenum(l), colnum(c)
+  {}
+  void print(std::ostream &os) {
+    os << filename;
+    if (colnum == -1) {
+      char tmp[1024];
+      sprintf(tmp, ", line %d, end of column: ", linenum);
+      os << tmp;
+    }
+    else {
+      char tmp[1024];
+      sprintf(tmp, ", line %d, column %d: ", linenum, colnum);
+      os << tmp;
+    }
+  }
+};
+
+#endif
diff --git a/proofs/lfsc_checker/print_smt2.cpp b/proofs/lfsc_checker/print_smt2.cpp
new file mode 100644
index 0000000..40d9d12
--- /dev/null
+++ b/proofs/lfsc_checker/print_smt2.cpp
@@ -0,0 +1,122 @@
+#include "print_smt2.h"
+
+#ifdef PRINT_SMT2
+
+void print_smt2( Expr* p, std::ostream& s, short mode )
+{
+  switch( p->getclass() )
+  {
+  case CEXPR:
+    {
+      switch( p->getop() )
+      {
+      case APP:
+        {
+          std::vector<Expr *> args;
+          Expr *head = p->collect_args(args, false);
+          short newMode = get_mode( head );
+          if( is_smt2_poly_formula( head ) )
+          {
+            s << "(";
+            head->print( s );
+            s << " ";
+            print_smt2( args[1], s, newMode );
+            s << " ";
+            print_smt2( args[2], s, newMode );
+            s << ")";
+          }
+          else if( ( mode==2 || mode==3 ) && mode==newMode )
+          {
+            print_smt2( args[0], s, newMode );
+            s << " ";
+            print_smt2( args[1], s, newMode );
+          }
+          else if( newMode==1 )
+          {
+            if( mode!=1 || newMode!=mode ){
+              s << "(";
+            }
+            print_smt2( args[2], s, newMode );
+            s << " ";
+            print_smt2( args[3], s, 0 );
+            if( mode!=1 || newMode!=mode ){
+              s << ")";
+            }
+          }
+          else
+          {
+            s << "(";
+            switch( newMode )
+            {
+            case 4: s << "=>";break;
+            default: head->print( s );break;
+            }
+            s << " ";
+            for( int a=0; a<(int)args.size(); a++ ){
+              print_smt2( args[a], s, newMode );
+              if( a!=(int)args.size()-1 )
+                s << " ";
+            }
+            s << ")";
+          }
+        }
+        break;
+      default:
+        std::cout << "Unhandled op " << p->getop() << std::endl;
+        break;
+      }
+    }
+    break;
+  case HOLE_EXPR:
+    {
+      HoleExpr *e = (HoleExpr *)p;
+      if( e->val ){
+        print_smt2( e->val, s, mode );
+      }else{
+        s << "_";
+      }
+    }
+    break;
+  case SYMS_EXPR:
+  case SYM_EXPR:
+    if( ((SymExpr*)p)->val )
+      print_smt2( ((SymExpr*)p)->val, s, mode );
+    else
+      p->print( s );
+    break;
+  default:
+    std::cout << "Unhandled class " << p->getclass() << std::endl;
+    break;
+  }
+}
+
+bool is_smt2_poly_formula( Expr* e )
+{
+  if( e->getclass()==SYMS_EXPR )
+  {
+    SymSExpr* s = (SymSExpr*)e;
+    static std::string eq("=");
+    static std::string distinct("distinct");
+    return s->s==eq || s->s==distinct;
+  }else{
+    return false;
+  }
+}
+
+short get_mode( Expr* e )
+{
+  if( e->getclass()==SYMS_EXPR ){
+    SymSExpr* s = (SymSExpr*)e;
+    static std::string applys("apply");
+    if ( s->s==applys ) return 1;
+    static std::string ands("and");
+    if ( s->s==ands ) return 2;
+    static std::string ors("or");
+    if ( s->s==ors ) return 3;
+    static std::string impls("impl");
+    if ( s->s==impls ) return 4;
+  }
+  return 0;
+}
+
+#endif
diff --git a/proofs/lfsc_checker/print_smt2.h b/proofs/lfsc_checker/print_smt2.h
new file mode 100644
index 0000000..9bee0e8
--- /dev/null
+++ b/proofs/lfsc_checker/print_smt2.h
@@ -0,0 +1,17 @@
+#ifndef PRINT_SMT2_H
+#define PRINT_SMT2_H
+
+#define PRINT_SMT2
+
+#include "expr.h"
+
+#ifdef PRINT_SMT2
+void print_smt2( Expr* p, std::ostream& s, short mode = 0 );
+
+bool is_smt2_poly_formula( Expr* p );
+short get_mode( Expr* p );
+
+#endif
+
+
+#endif
diff --git a/proofs/lfsc_checker/scccode.cpp b/proofs/lfsc_checker/scccode.cpp
new file mode 100644
index 0000000..1971257
--- /dev/null
+++ b/proofs/lfsc_checker/scccode.cpp
@@ -0,0 +1,11 @@
+#include "scccode.h"
+
+void init_compiled_scc(){
+
+}
+
+Expr* run_compiled_scc( Expr* p, std::vector< Expr* >& args ){
+  return NULL;
+}
+
+
diff --git a/proofs/lfsc_checker/scccode.h b/proofs/lfsc_checker/scccode.h
new file mode 100644
index 0000000..2ab549c
--- /dev/null
+++ b/proofs/lfsc_checker/scccode.h
@@ -0,0 +1,11 @@
+#ifndef SCC_CODE_H
+#define SCC_CODE_H
+
+#include "check.h"
+
+void init_compiled_scc();
+
+Expr* run_compiled_scc( Expr* p, std::vector< Expr* >& args );
+
+#endif
+
diff --git a/proofs/lfsc_checker/sccwriter.cpp b/proofs/lfsc_checker/sccwriter.cpp
new file mode 100644
index 0000000..d93341a
--- /dev/null
+++ b/proofs/lfsc_checker/sccwriter.cpp
@@ -0,0 +1,977 @@
+#include "sccwriter.h"
+
+#include <fstream>
+#include <sstream>
+
+int sccwriter::exprCount = 0;
+int sccwriter::strCount = 0;
+int sccwriter::argsCount = 0;
+int sccwriter::rnumCount = 0;
+
+int sccwriter::get_prog_index( const std::string& str )
+{
+  for( int a=0; a<(int)progNames.size(); a++ ){
+    if( progNames[a]==str ){
+      return a;
+    }
+  }
+  return -1;
+}
+
+int sccwriter::get_prog_index_by_expr( Expr* e )
+{
+  for( int a=0; a<(int)progPtrs.size(); a++ ){
+    if( progPtrs[a]==e ){
+      return a;
+    }
+  }
+  return -1;
+}
+
+bool sccwriter::is_var( const std::string& str )
+{
+  for( int a=0; a<(int)vars.size(); a++ ){
+    if( vars[a]==str ){
+      return true;
+    }
+  }
+  return false;
+}
+
+void sccwriter::add_global_sym( const std::string& str )
+{
+  for( int a=0; a<(int)globalSyms.size(); a++ ){
+    if( globalSyms[a]==str ){
+      return;
+    }
+  }
+  globalSyms.push_back( str );
+}
+
+void sccwriter::indent( std::ostream& os, int ind )
+{
+   for( int a=0; a<ind; a++ )
+   {
+      os << "   ";
+   }
+}
+
+void sccwriter::write_function_header( std::ostream& os, int index, int opts )
+{
+  //write the function header
+  std::string fname;
+  get_function_name( progNames[index], fname );
+  os << "Expr* " << fname.c_str() << "( ";
+  CExpr* progvars = (CExpr*)get_prog( index )->kids[1];
+  int counter = 0;
+  //write each argument
+  while( progvars->kids[counter] )
+  {
+    if( counter!=0 )
+    {
+      os << ", ";
+    }
+    os << "Expr* ";
+    write_variable( ((SymSExpr*)progvars->kids[counter])->s, os );
+    //add to vars if options are set to do so
+    if( opts&opt_write_add_args )
+    {
+      vars.push_back( ((SymSExpr*)progvars->kids[counter])->s );
+    }
+    counter++;
+  }
+  os << " )";
+  if( opts&opt_write_call_debug )
+  {
+     os << "{" << std::endl;
+     indent( os, 1 );
+     os << "std::cout << \"Call function " << fname.c_str() << " with arguments \";" << std::endl;
+     counter = 0; 
+     while( progvars->kids[counter] )
+     {
+        if( counter!=0 )
+        {
+           indent( os, 1 );
+           os << "std::cout << \", \";" << std::endl;
+        }
+        indent( os, 1 );
+        write_variable( ((SymSExpr*)progvars->kids[counter])->s, os );
+        os << "->print( std::cout );" << std::endl;
+        counter++;
+     }
+     indent( os, 1 );
+     os << "std::cout << std::endl;" << std::endl;
+  }
+}
+
+void sccwriter::get_function_name( const std::string& pname, std::string& fname )
+{
+  fname = std::string( "f_" );
+  fname.append( pname );
+}
+
+void sccwriter::write_variable( const std::string& n, std::ostream& os )
+{
+  std::string nn;
+  get_var_name( n, nn );
+  os << nn.c_str();
+}
+
+void sccwriter::get_var_name( const std::string& n, std::string& nn ) {
+  nn = std::string( n.c_str() );
+  for( int i = 0; i <(int)n.length(); i++ ){
+    char c = n[i];
+    if (c <= 47)
+        c += 65;
+    else if (c >= 58 && c <= 64)
+        c += 97-58;
+    if ((c >= 91 && c <= 94) || c == 96)
+        c += 104-91;
+    else if (c >= 123)
+        c -= 4;
+    nn[i] = c;
+  }  
+}
+
+void sccwriter::write_file()
+{
+  static std::string filename( "scccode" );
+
+  //writer the h file
+  std::fstream fsh;
+  std::string fnameh( filename );
+  fnameh.append(".h");
+  fsh.open( fnameh.c_str(), std::ios::out );
+  //write the header in h
+  fsh << "#ifndef SCC_CODE_H" << std::endl;
+  fsh << "#define SCC_CODE_H" << std::endl << std::endl;
+  //include necessary files in h file
+  fsh << "#include \"check.h\"" << std::endl << std::endl;
+  //write the init function
+  fsh << "void init_compiled_scc();" << std::endl << std::endl;
+  //write the entry function
+  fsh << "Expr* run_compiled_scc( Expr* p, std::vector< Expr* >& args );" << std::endl << std::endl;
+  //write the side condition code functions
+  for( int n=0; n<(int)progs.size(); n++ )
+  {
+    //write the header in the h file
+    fsh << "inline ";
+    write_function_header( fsh, n );
+    fsh << ";" << std::endl << std::endl;
+  }
+  fsh << "#endif" << std::endl << std::endl;
+  fsh.close();
+
+
+  //writer the cpp code
+  std::fstream fsc;
+  std::string fnamec( filename );
+  fnamec.append(".cpp");
+  fsc.open( fnamec.c_str(), std::ios::out );
+  //include the h file in the cpp
+  fsc << "#include \"scccode.h\"" << std::endl << std::endl;
+  std::ostringstream fsc_funcs;
+  //write the side condition code functions
+  for( currProgram=0; currProgram<(int)progs.size(); currProgram++ )
+  {
+    //reset naming counters
+    vars.clear();
+    exprCount = 0;
+    strCount = 0;
+    argsCount = 0;
+    rnumCount = 0;
+
+    //for debugging
+    std::cout << "program #" << currProgram << " " << progNames[currProgram].c_str() << std::endl;
+
+    //write the function header
+    write_function_header( fsc_funcs, currProgram, opt_write_add_args|options );
+    if( (options&opt_write_call_debug)==0 )
+    {
+       fsc_funcs << "{" << std::endl;
+    }
+    //write the code
+    //std::vector< std::string > cleanVec;
+    //write_code( get_prog( n )->kids[2], fsc, 1, "return ", cleanVec );
+    //debug_write_code( progs[n].second->kids[2], fsc, 1 );
+    std::string expr;
+    write_expr( get_prog( currProgram )->kids[2], fsc_funcs, 1, expr );
+    indent( fsc_funcs, 1 );
+    fsc_funcs << "return " << expr.c_str() << ";" << std::endl;
+    fsc_funcs << "}" << std::endl << std::endl;
+  }
+  //write the predefined symbols necessary - symbols and progs
+  for( int a=0; a<(int)globalSyms.size(); a++ )
+  {
+    fsc << "Expr* e_" << globalSyms[a].c_str() << ";" << std::endl;
+  }
+  for( int a=0; a<(int)progs.size(); a++ )
+  {
+    fsc << "Expr* e_" << progNames[a].c_str() << ";" << std::endl;
+  }
+  fsc << std::endl;
+  //write the init function - initialize symbols and progs
+  fsc << "void init_compiled_scc(){" << std::endl;
+  for( int a=0; a<(int)globalSyms.size(); a++ )
+  {
+    indent( fsc, 1 );
+    fsc << "e_" << globalSyms[a].c_str() << " = symbols->get(\"" << globalSyms[a].c_str() << "\").first;" << std::endl;
+  }
+  for( int a=0; a<(int)progs.size(); a++ )
+  {
+    indent( fsc, 1 );
+    fsc << "e_" << progNames[a].c_str() << " = progs[\"" << progNames[a].c_str() << "\"];" << std::endl;
+  }
+  fsc << "}" << std::endl << std::endl;
+  fsc << "Expr* run_compiled_scc( Expr* p, std::vector< Expr* >& args ){" << std::endl;
+  //for( int n=0; n<(int)progs.size(); n++ ){
+  //  indent( fsc, 1 );
+  //  fsc << "static std::string s_" << progNames[n].c_str() << " = std::string( \"" << progNames[n].c_str() << "\" );" << std::endl;
+  //}
+  for( int n=0; n<(int)progs.size(); n++ ){
+    indent( fsc, 1 );
+    if( n!=0 ){
+      fsc << "}else ";
+    }
+    //for each function, test to see if the string matches the name of the function
+    fsc << "if( p==e_" << progNames[n].c_str() << " ){" << std::endl;
+    indent( fsc, 2 );
+    std::string fname;
+    get_function_name( progNames[n], fname );
+    //map the function to the proper function
+    fsc << "return " << fname.c_str() << "( ";
+    //write the arguments to the function from args
+    CExpr* progvars = (CExpr*)get_prog( n )->kids[1];
+    int counter = 0;
+    bool firstTime = true;
+    while( progvars->kids[counter] )
+    {
+      if( !firstTime )
+      {
+        fsc << ", ";
+      }
+      fsc << "args[" << counter << "]";
+      firstTime = false;
+      counter++;
+    }
+    fsc << " );" << std::endl;
+  }
+  indent( fsc, 1 );
+  fsc << "}else{" << std::endl;
+  indent( fsc, 2 );
+  //return null in the case the function could not be found
+  fsc << "return NULL;" << std::endl;
+  indent( fsc, 1 );
+  fsc << "}" << std::endl;
+  fsc << "}" << std::endl << std::endl;
+  fsc << fsc_funcs.str().c_str();
+
+  fsc.close();
+}
+
+void sccwriter::write_code( Expr* code, std::ostream& os, int ind, const char* retModStr, int opts )
+{
+  std::string retModString;
+  std::string incString;
+  if ( retModStr )
+  {
+    retModString = std::string( retModStr );
+    retModString.append( " = " );
+    incString = std::string( retModStr );
+    incString.append( "->inc();" );
+  }
+  switch( code->getclass() )
+  {
+  case INT_EXPR:
+    {
+      indent( os, ind );
+      os << retModString.c_str();
+      os << "new IntExpr( (signed long int)" << mpz_get_si( ((IntExpr*)code)->n ) << " );" << std::endl;
+      indent( os, ind );
+      os << incString.c_str() << std::endl;
+    }
+    break;
+  case RAT_EXPR:
+    {
+      mpz_t num, den;
+      mpz_init(num);
+      mpz_init(den);
+      mpq_get_num( num, ((RatExpr*)code)->n );
+      mpq_get_den( den, ((RatExpr*)code)->n );
+      indent( os, ind );
+      os << retModString.c_str();
+      os << "new RatExpr( " << mpz_get_si( num ) << ", " << mpz_get_si( den ) << " );" << std::endl;
+      indent( os, ind );
+      os << incString.c_str() << std::endl;
+    }
+    break;
+  case SYMS_EXPR:
+    {
+      //if it is a variable, simply write it to buffer
+      if( is_var( ((SymSExpr*)code)->s ) )
+      {
+        indent( os, ind );
+        os << retModString.c_str();
+        write_variable( ((SymSExpr*)code)->s.c_str(), os );
+        os << ";" << std::endl;  
+      }
+      else  //else must look at symbol lookup table
+      {
+        std::string var;
+        get_var_name( ((SymSExpr*)code)->s, var );
+        indent( os, ind );
+        os << retModString.c_str() << "e_" << var.c_str() << ";" << std::endl;
+        add_global_sym( var ); 
+      }
+      indent( os, ind );
+      os << incString.c_str() << std::endl;
+    }
+    break;
+  default:
+    switch( code->getop() )
+    {
+    case APP:
+      {
+        //collect the arguments
+        std::vector< Expr* > argVector;
+        code->collect_args( argVector );
+        //write the arguments
+        std::vector< std::string > args;
+        for( int a=0; a<(int)argVector.size(); a++ )
+        {
+          std::string expr;
+          write_expr( argVector[a], os, ind, expr );
+          args.push_back( expr );
+        }
+        //write_args( (CExpr*)code, os, ind, 1, args );
+        Expr* hd = code->get_head();
+        //map to a program in the case that it is a program
+        if( hd->getop()==PROG && get_prog_index_by_expr( hd )!=-1 )
+        {
+          indent( os, ind );
+          os << retModString << "f_" << progNames[ get_prog_index_by_expr( hd ) ].c_str() << "( ";
+          for( int a=0; a<(int)args.size(); a++ )
+          {
+            os << args[a].c_str();
+            if( a!=(int)( args.size()-1 ) ){
+              os << ", ";
+            }
+          }
+          os << " );" << std::endl;
+          for( int a=0; a<(int)args.size(); a++ )
+          {
+            write_dec( args[a], os, ind );
+          }
+        }
+        else
+        {
+#ifdef USE_FLAT_APP
+          std::string expr;
+          write_expr( hd, os, ind, expr );
+          indent( os, ind );
+          os << retModString << "new CExpr( APP, ";
+          os << expr.c_str() << ", ";
+          for( int a=0; a<(int)args.size(); a++ )
+          {
+            os << args[a].c_str();
+            if( a!=(int)( args.size()-1 ) ){
+              os << ", ";
+            }
+          }
+          os << " );" << std::endl;
+#else
+          std::string expr;
+          write_expr( hd, os, ind, expr );
+          indent( os, ind );
+          os << retModString;
+          for( int a=0; a<(int)args.size(); a++ )
+          {
+            os << "new CExpr( APP, ";
+          }
+          os << expr.c_str() << ", ";
+          for( int a=0; a<(int)args.size(); a++ )
+          {
+            os << args[a].c_str();
+            os << " )";
+            if( a!=(int)( args.size()-1 ) ){
+              os << ", ";
+            }
+          }
+          os << ";" << std::endl;
+#endif
+          //indent( os, ind );
+          //os << expr.c_str() << "->dec();" << std::endl;
+        }
+      }
+      break;
+    case MATCH:
+      {
+        //calculate the value for the expression
+        std::string expr;
+        write_expr( ((CExpr*)code)->kids[0], os, ind, expr );
+        //get the head
+        std::ostringstream sshd;
+        sshd << "e" << exprCount;
+        exprCount++;
+        indent( os, ind );
+        os << "Expr* " << sshd.str().c_str() << " = " << expr.c_str() << "->followDefs()->get_head();" << std::endl;
+        //write the arguments
+        std::vector< std::string > args;
+        write_args( (CExpr*)code, os, ind, 1, args );
+        bool encounterDefault = false;
+        //now make an if statement corresponding to the match 
+        int a = 0;
+        while( ((CExpr*)code)->kids[a+1] )
+        {
+          indent( os, ind );
+          if( a!=0 ){
+            os << "}else";
+          }
+          if( ((CExpr*)code)->kids[a+1]->getop()!=CASE ){
+            encounterDefault = true;
+            os << "{" << std::endl;
+            //write the body of the case
+            write_code( ((CExpr*)code)->kids[a+1], os, ind+1, retModStr ); 
+            indent( os, ind );
+            os << "}" << std::endl;
+          }else{
+            if( a!=0 )
+              os << " ";
+            os << "if( " << sshd.str().c_str() << "==" << args[a].c_str() << " ){" << std::endl;
+            //collect args from the variable in the code
+            std::ostringstream ssargs;
+            ssargs << "args" << argsCount;
+            argsCount++;
+#ifndef USE_FLAT_APP
+            indent( os, ind+1 );
+            os << "std::vector< Expr* > " << ssargs.str().c_str() << ";" << std::endl;
+            indent( os, ind+1 );
+            os << expr.c_str() << "->followDefs()->collect_args( " << ssargs.str().c_str() << " );" << std::endl;
+#endif
+            //set the variables defined in the pattern equal to the arguments
+            std::vector< Expr* > caseArgs;
+            ((CExpr*)((CExpr*)code)->kids[a+1])->kids[0]->collect_args( caseArgs );
+            for( int b=0; b<(int)caseArgs.size(); b++ )
+            {
+              indent( os, ind+1 );
+              os << "Expr* ";
+              write_variable( ((SymSExpr*)caseArgs[b])->s.c_str(), os );
+#ifdef USE_FLAT_APP
+              os << " = ((CExpr*)" << expr.c_str() << "->followDefs())->kids[" << b+1 << "];" << std::endl;
+#else
+              os << " = " << ssargs.str().c_str() << "[" << b << "];" << std::endl;
+#endif
+              vars.push_back( ((SymSExpr*)caseArgs[b])->s );
+            }
+            //write the body of the case
+            write_code( ((CExpr*)code)->kids[a+1], os, ind+1, retModStr, opt_write_case_body ); 
+          }
+          a++;
+        }
+        if( !encounterDefault )
+        {
+          indent( os, ind );
+          os << "}else{" << std::endl;
+          indent( os, ind + 1 );
+          os << "std::cout << \"Could not find match for expression in function f_";
+          os << progNames[currProgram].c_str() << " \";" << std::endl;
+          indent( os, ind + 1 );
+          os << sshd.str().c_str() << "->print( std::cout );" << std::endl;
+          indent( os, ind + 1 );
+          os << "std::cout << std::endl;" << std::endl;
+          indent( os, ind + 1 );
+          os << "exit( 1 );" << std::endl;
+          indent( os, ind );
+          os << "}" << std::endl;
+        }
+        write_dec( expr, os, ind );
+        for( int a=0; a<(int)args.size(); a++ )
+        {
+          write_dec( args[a], os, ind );
+        }
+      }
+      break;
+    case CASE:
+      if( opts&opt_write_case_body )
+      {
+        write_code( ((CExpr*)code)->kids[1], os, ind, retModStr );
+      }
+      else
+      {
+        write_code( ((CExpr*)code)->kids[0]->get_head(), os, ind, retModStr );
+      }
+      break;
+    case DO:
+      {
+        //write each of the children in sequence
+        int counter = 0;
+        while( ((CExpr*)code)->kids[counter] )
+        {
+          if( ((CExpr*)code)->kids[counter+1]==NULL )
+          {
+            write_code( ((CExpr*)code)->kids[counter], os, ind, retModStr );
+          }
+          else
+          {
+            std::string expr;
+            write_expr( ((CExpr*)code)->kids[counter], os, ind, expr );
+            //clean up memory
+            write_dec( expr, os, ind );
+          }
+          counter++;
+        }
+      }
+      break;
+    case LET:
+      {
+        indent( os, ind );
+        os << "Expr* ";
+        write_variable( ((SymSExpr*)((CExpr*)code)->kids[0])->s, os );
+        os << " = NULL;" << std::endl;
+        std::ostringstream ss;
+        write_variable( ((SymSExpr*)((CExpr*)code)->kids[0])->s, ss );
+        write_code( ((CExpr*)code)->kids[1], os, ind, ss.str().c_str() );
+        //add it to the variables
+        vars.push_back( ((SymSExpr*)((CExpr*)code)->kids[0])->s );
+        write_code( ((CExpr*)code)->kids[2], os, ind, retModStr );
+        //clean up memory
+        indent( os, ind );
+        write_variable( ((SymSExpr*)((CExpr*)code)->kids[0])->s, os );
+        os << "->dec();" << std::endl;
+      }
+      break;
+    case FAIL:
+      {
+        indent( os, ind );
+        os << retModString.c_str() << "NULL;" << std::endl;
+      }
+      break;
+#ifndef MARKVAR_32
+    case MARKVAR:
+      {
+        //calculate the value for the expression
+        std::string expr;
+        write_expr( ((CExpr*)code)->kids[0], os, ind, expr, opt_write_check_sym_expr );
+        //set the mark on the expression
+        indent( os, ind );
+        os << "if (" << expr.c_str() << "->followDefs()->getmark())" << std::endl;
+        indent( os, ind+1 );
+        os << expr.c_str() << "->followDefs()->clearmark();" << std::endl;
+        indent( os, ind );
+        os << "else" << std::endl;
+        indent( os, ind+1 );
+        os << expr.c_str() << "->followDefs()->setmark();" << std::endl;
+        //write the return if necessary
+        if( retModStr!=NULL ){
+          indent( os, ind );
+          os << retModString.c_str() << expr.c_str() << ";" << std::endl;
+          indent( os, ind );
+          os << incString.c_str() << std::endl;
+        }
+        write_dec( expr, os, ind );
+      }
+      break;
+    case IFMARKED:
+      {
+        //calculate the value for the expression
+        std::string expr;
+        write_expr( ((CExpr*)code)->kids[0], os, ind, expr, opt_write_check_sym_expr );
+        //if mark is set, write code for kids[1]
+        indent( os, ind );
+        os << "if (" << expr.c_str() << "->followDefs()->getmark()){" << std::endl;
+        write_code( ((CExpr*)code)->kids[1], os, ind+1, retModStr );
+        //else write code for kids[2]
+        indent( os, ind );
+        os << "}else{" << std::endl;
+        write_code( ((CExpr*)code)->kids[2], os, ind+1, retModStr );
+        indent( os, ind );
+        os << "}" << std::endl;
+        //clean up memory
+        write_dec( expr, os, ind );
+      }
+      break;
+#else
+    case MARKVAR:
+      {
+        //calculate the value for the expression
+        std::string expr;
+        write_expr( ((CExpr*)code)->kids[1], os, ind, expr, opt_write_check_sym_expr );
+        //set the mark on the expression
+        indent( os, ind );
+        os << "if ( ((SymExpr*)" << expr.c_str() << "->followDefs())->getmark(";
+        os << ((IntExpr*)((CExpr*)code)->kids[0])->get_num() << "))" << std::endl;
+        indent( os, ind+1 );
+        os << "((SymExpr*)" << expr.c_str() << "->followDefs())->clearmark(";
+        os << ((IntExpr*)((CExpr*)code)->kids[0])->get_num() << ");" << std::endl;
+        indent( os, ind );
+        os << "else" << std::endl;
+        indent( os, ind+1 );
+        os << "((SymExpr*)" << expr.c_str() << "->followDefs())->setmark(";
+        os << ((IntExpr*)((CExpr*)code)->kids[0])->get_num() << ");" << std::endl;
+        //write the return if necessary
+        if( retModStr!=NULL ){
+          indent( os, ind );
+          os << retModString.c_str() << expr.c_str() << ";" << std::endl;
+          indent( os, ind );
+          os << incString.c_str() << std::endl;
+        }
+        write_dec( expr, os, ind );
+      }
+      break;
+    case COMPARE:
+      {
+        std::string expr1, expr2;
+        write_expr( ((CExpr*)code)->kids[0], os, ind, expr1, opt_write_check_sym_expr );
+        write_expr( ((CExpr*)code)->kids[1], os, ind, expr2, opt_write_check_sym_expr );
+        indent( os, ind );
+        os << "if( ((SymExpr*)" << expr1.c_str() << ")->followDefs() < ((SymExpr*)" << expr2.c_str() << ")->followDefs() ){" << std::endl;
+        write_code( ((CExpr*)code)->kids[2], os, ind+1, retModStr );
+        indent( os, ind );
+        os << "}else{" << std::endl;
+        write_code( ((CExpr*)code)->kids[3], os, ind+1, retModStr );
+        indent( os, ind );
+        os << "}" << std::endl;
+        //clean up memory
+        write_dec( expr1, os, ind );
+        write_dec( expr2, os, ind );
+      }
+      break;
+    case IFMARKED:
+      {
+        //calculate the value for the expression
+        std::string expr;
+        write_expr( ((CExpr*)code)->kids[1], os, ind, expr, opt_write_check_sym_expr );
+        //if mark is set, write code for kids[1]
+        indent( os, ind );
+        os << "if ( ((SymExpr*)" << expr.c_str() << "->followDefs())->getmark(";
+        os << ((IntExpr*)((CExpr*)code)->kids[0])->get_num() << ")){" << std::endl;
+        write_code( ((CExpr*)code)->kids[2], os, ind+1, retModStr );
+        //else write code for kids[2]
+        indent( os, ind );
+        os << "}else{" << std::endl;
+        write_code( ((CExpr*)code)->kids[3], os, ind+1, retModStr );
+        indent( os, ind );
+        os << "}" << std::endl;
+        //clean up memory
+        write_dec( expr, os, ind );
+      }
+      break;
+#endif
+    case ADD:
+    case MUL:
+    case DIV:
+      {
+        //calculate the value for the first expression
+        std::string expr1;
+        write_expr( ((CExpr*)code)->kids[0], os, ind, expr1 );
+        //calculate the value for the second expression
+        std::string expr2;
+        write_expr( ((CExpr*)code)->kids[1], os, ind, expr2 );
+        std::ostringstream ss;
+        ss << "rnum" << rnumCount;
+        rnumCount++;
+        indent( os, ind );
+        os << "if( " << expr1.c_str() << "->followDefs()->getclass()==INT_EXPR ){" << std::endl;
+        indent( os, ind+1 );
+        os << "mpz_t " << ss.str().c_str() << ";" << std::endl;
+        indent( os, ind+1 );
+        os << "mpz_init(" << ss.str().c_str() << ");" << std::endl;
+        indent( os, ind+1 );
+        os << "mpz_";
+        if( code->getop()==ADD )
+          os << "add";
+        else
+          os << "mul";
+        os << "( " << ss.str().c_str() << ", ((IntExpr*)" << expr1.c_str() << "->followDefs())->n, ((IntExpr*)" << expr2.c_str() << "->followDefs())->n);" << std::endl;
+        indent( os, ind+1 );
+        os << retModString.c_str() << "new IntExpr(" << ss.str().c_str() << ");" << std::endl;
+        indent( os, ind );
+        os << "}else if( " << expr1.c_str() << "->followDefs()->getclass()==RAT_EXPR ){" << std::endl;
+        indent( os, ind+1 );
+        os << "mpq_t " << ss.str().c_str() << ";" << std::endl;
+        indent( os, ind+1 );
+        os << "mpq_init(" << ss.str().c_str() << ");" << std::endl;
+        indent( os, ind+1 );
+        os << "mpq_";
+        if( code->getop()==ADD )
+          os << "add";
+        else if( code->getop()==MUL )
+          os << "mul";
+        else
+          os << "div";
+        os << "( " << ss.str().c_str() << ", ((RatExpr*)" << expr1.c_str() << "->followDefs())->n, ((RatExpr*)" << expr2.c_str() << "->followDefs())->n);" << std::endl;
+        indent( os, ind+1 );
+        os << retModString.c_str() << "new RatExpr(" << ss.str().c_str() << ");" << std::endl;
+        indent( os, ind );
+        os << "}" << std::endl;
+        //clean up memory
+        write_dec( expr1, os, ind );
+        write_dec( expr2, os, ind );
+      }
+      break;
+    case NEG:
+      {
+        //calculate the value for the first expression
+        std::string expr1;
+        write_expr( ((CExpr*)code)->kids[0], os, ind, expr1 );
+        std::ostringstream ss;
+        ss << "rnum" << rnumCount;
+        rnumCount++;
+        indent( os, ind );
+        os << "if( " << expr1.c_str() << "->followDefs()->getclass()==INT_EXPR ){" << std::endl;
+        indent( os, ind+1 );
+        os << "mpz_t " << ss.str().c_str() << ";" << std::endl;
+        indent( os, ind+1 );
+        os << "mpz_init(" << ss.str().c_str() << ");" << std::endl;
+        indent( os, ind+1 );
+        os << "mpz_neg( " << ss.str().c_str() << ", ((IntExpr*)" << expr1.c_str() << "->followDefs())->n );" << std::endl;
+        indent( os, ind+1 );
+        os << retModString.c_str() << "new IntExpr(" << ss.str().c_str() << ");" << std::endl;
+        indent( os, ind );
+        os << "}else if( " << expr1.c_str() << "->followDefs()->getclass()==RAT_EXPR ){" << std::endl;
+        indent( os, ind+1 );
+        os << "mpq_t " << ss.str().c_str() << ";" << std::endl;
+        indent( os, ind+1 );
+        os << "mpq_init(" << ss.str().c_str() << ");" << std::endl;
+        indent( os, ind+1 );
+        os << "mpq_neg( " << ss.str().c_str() << ", ((RatExpr*)" << expr1.c_str() << "->followDefs())->n );" << std::endl;
+        indent( os, ind+1 );
+        os << retModString.c_str() << "new RatExpr(" << ss.str().c_str() << ");" << std::endl;
+        indent( os, ind );
+        os << "}" << std::endl;
+        //clean up memory
+        write_dec( expr1, os, ind );
+      }
+      break;
+    case IFNEG:
+    case IFZERO:
+      {
+        std::string expr1;
+        write_expr( ((CExpr*)code)->kids[0], os, ind, expr1 );
+        indent( os, ind );
+        os << "if( " << expr1.c_str() << "->followDefs()->getclass()==INT_EXPR ){" << std::endl;
+        indent( os, ind+1 );
+        os << "if( mpz_sgn( ((IntExpr *)" << expr1.c_str() << "->followDefs())->n ) ";
+        if( code->getop()==IFNEG )
+          os << "<";
+        else
+          os << "==";
+        os << " 0 ){" << std::endl;
+        write_code( ((CExpr*)code)->kids[1], os, ind+2, retModStr );
+        indent( os, ind+1 );
+        os << "}else{" << std::endl;
+        write_code( ((CExpr*)code)->kids[2], os, ind+2, retModStr );
+        indent( os, ind+1 );
+        os << "}" << std::endl;
+        indent( os, ind );
+        os << "}else if( " << expr1.c_str() << "->followDefs()->getclass()==RAT_EXPR ){" << std::endl;
+        indent( os, ind+1 );
+        os << "if( mpq_sgn( ((RatExpr *)" << expr1.c_str() << "->followDefs())->n ) ";
+        if( code->getop()==IFNEG )
+          os << "<";
+        else
+          os << "==";
+        os << " 0 ){" << std::endl;
+        write_code( ((CExpr*)code)->kids[1], os, ind+2, retModStr );
+        indent( os, ind+1 );
+        os << "}else{" << std::endl;
+        write_code( ((CExpr*)code)->kids[2], os, ind+2, retModStr );
+        indent( os, ind+1 );
+        os << "}" << std::endl;
+        indent( os, ind );
+        os << "}" << std::endl;
+        //clean up memory
+        write_dec( expr1, os, ind );
+      }
+      break;
+    case RUN:/*?*/break;
+    case PI:/*?*/break;
+    case LAM:/*?*/break;
+    case TYPE:/*?*/break;
+    case KIND:/*?*/break;
+    case ASCRIBE:/*?*/break;
+    case MPZ:/*?*/break;
+    case PROG:/*?*/break;
+    case PROGVARS:/*?*/break;
+    case PAT:/*?*/break;
+    }
+    break;
+  }
+}
+
+void sccwriter::write_args( CExpr* code, std::ostream& os, int ind, int childCounter, 
+                            std::vector< std::string >& args, int opts )
+{
+  bool encounterCase = false;
+  while( code->kids[childCounter] &&
+         (!encounterCase || code->kids[childCounter]->getop()==CASE ) )
+  {
+    encounterCase = encounterCase || code->kids[childCounter]->getop()==CASE;
+    if( code->kids[childCounter]->getclass()==SYMS_EXPR )
+    {
+      args.push_back( ((SymSExpr*)code->kids[childCounter])->s );
+    }
+    else
+    {
+      //calculate the value for the argument
+      std::string expr;
+      write_expr( code->kids[childCounter], os, ind, expr, opts );
+      args.push_back( expr );
+    }
+    childCounter++;
+  }
+}
+
+void sccwriter::write_expr( Expr* code, std::ostream& os, int ind, std::string& expr, int opts )
+{
+  if( code->getclass()==SYMS_EXPR && is_var( ((SymSExpr*)code)->s ) )
+  {
+    get_var_name( ((SymSExpr*)code)->s, expr );
+    indent( os, ind );
+    os << expr.c_str() << "->inc();" << std::endl;
+  }
+  else
+  {
+    std::ostringstream ss;
+    ss << "e" << exprCount;
+    exprCount++;
+    //declare the expression
+    indent( os, ind );
+    if( code->getclass()==SYMS_EXPR && !is_var( ((SymSExpr*)code)->s ) )
+    {
+      os << "static ";
+    }
+    os << "Expr* " << ss.str().c_str() << " = NULL;" << std::endl;
+    //write the expression
+    std::ostringstream ss2;
+    ss2 << ss.str().c_str();
+    write_code( code, os, ind, ss2.str().c_str(), opts );
+
+    //if is not a sym expression, then decrement the expression and return null
+    if( opts&opt_write_check_sym_expr )
+    {
+      indent( os, ind );
+      os << "if (" << expr.c_str() << "->getclass() != SYM_EXPR) {" << std::endl;
+      indent( os, ind+1 );
+      os << "exit( 1 );" << std::endl;
+      indent( os, ind );
+      os << "}" << std::endl;
+    }
+
+    expr = std::string( ss.str().c_str() );
+    vars.push_back( expr );
+  }
+  //increment the counter for memory management
+  //indent( os, ind );
+  //os << expr.c_str() << "->inc();" << std::endl;
+}
+
+void sccwriter::write_dec( const std::string& expr, std::ostream& os, int ind )
+{
+  bool wd = true;
+  if( wd )
+  {
+    indent( os, ind );
+    os << expr.c_str() << "->dec();" << std::endl;
+  }
+}
+
+void sccwriter::debug_write_code( Expr* code, std::ostream& os, int ind )
+{
+  indent( os, ind );
+  switch( code->getclass() )
+  {
+  case INT_EXPR:
+    os << "int_expr";
+    break;
+  case HOLE_EXPR:
+    os << "hole_expr";
+    break;
+  case SYM_EXPR:
+    os << "sym_expr";
+    break;
+  case SYMS_EXPR:
+    os << "syms_expr: " << ((SymSExpr*)code)->s.c_str();
+    break;
+  default:
+    switch( code->getop() )
+    {
+    case APP:
+      os << "app";
+      break;
+    case PI:
+      os << "pi";
+      break;
+    case LAM:
+      os << "lam";
+      break;
+    case TYPE:
+      os << "type";
+      break;
+    case KIND:
+      os << "kind";
+      break;
+    case ASCRIBE:
+      os << "ascribe";
+      break;
+    case MPZ:
+      os << "mpz";
+      break;
+    case PROG:
+      os << "prog";
+      break;
+    case PROGVARS:
+      os << "progvars";
+      break;
+    case MATCH:
+      os << "match";
+      break;
+    case CASE:
+      os << "case";
+      break;
+    case PAT:
+      os << "pat";
+      break;
+    case DO:
+      os << "do";
+      break;
+    case ADD:
+      os << "add";
+      break;
+    case NEG:
+      os << "neg";
+      break;
+    case LET:
+      os << "let";
+      break;
+    case RUN:
+      os << "run";
+      break;
+    case FAIL:
+      os << "fail";
+      break;
+    case MARKVAR:
+      os << "markvar";
+      break;
+    case IFMARKED:
+      os << "ifmarked";
+      break;
+    case COMPARE:
+      os << "compare";
+      break;
+    default:
+      os << "???";
+      break;
+    }
+  }
+  os << std::endl;
+  if( code->getop()!=0 )
+  {
+    CExpr* ce = (CExpr*)code;
+    int counter = 0;
+    while( ce->kids[counter] ){
+      debug_write_code( ce->kids[counter], os, ind+1 );
+      counter++;
+    }
+  }
+}
diff --git a/proofs/lfsc_checker/sccwriter.h b/proofs/lfsc_checker/sccwriter.h
new file mode 100644
index 0000000..bd97325
--- /dev/null
+++ b/proofs/lfsc_checker/sccwriter.h
@@ -0,0 +1,86 @@
+#ifndef SCC_WRITER_H
+#define SCC_WRITER_H
+
+#include "expr.h"
+#include <vector>
+#include "check.h"
+
+enum
+{
+  opt_write_case_body = 0x00000001,
+  opt_write_check_sym_expr = 0x00000002,
+  opt_write_add_args = 0x000000004,
+  opt_write_no_inc = 0x00000008,
+
+  opt_write_call_debug = 0x00000010,
+  opt_write_nested_app = 0x00000020,
+};
+
+class sccwriter
+{
+private:
+  //options
+   int options;
+  //programs to write to file
+  symmap progs;
+  //list of indicies in progs
+  std::vector< Expr* > progPtrs;
+  std::vector< std::string > progNames;
+  int currProgram;
+  //current variables in the scope
+  std::vector< std::string > vars;
+  //global variables stored for lookups
+  std::vector< std::string > globalSyms;
+  //symbols that must be dec'ed
+  std::vector< std::string > decSyms;
+  //get program
+  CExpr* get_prog( int n ) { return (CExpr*)progs[ progNames[n] ]; }
+  //get index for string
+  int get_prog_index_by_expr( Expr* e );
+  int get_prog_index( const std::string& str );
+  //is variable in current scope
+  bool is_var( const std::string& str );
+  //add global sym
+  void add_global_sym( const std::string& str );
+  //expression count
+  static int exprCount;
+  //string count
+  static int strCount;
+  //args count
+  static int argsCount;
+  //num count
+  static int rnumCount;
+  //indent
+  static void indent( std::ostream& os, int ind );
+  //write function header
+  void write_function_header( std::ostream& os, int index, int opts = 0 );
+  void write_code( Expr* code, std::ostream& os, int ind, const char* retModStr, int opts = 0 );
+  //write all children starting at child counter to stream, store in Expr* e_...e_;
+  void write_args( CExpr* code, std::ostream& os, int ind, int childCounter, std::vector< std::string >& args, int opts = 0 );
+  //write expression - store result of code into e_ for some Expr* e_;
+  void write_expr( Expr* code, std::ostream& os, int ind, std::string& expr, int opts = 0 );
+  //write variable
+  void write_variable( const std::string& n, std::ostream& os );
+  //get function name
+  void get_function_name( const std::string& pname, std::string& fname );
+  //get the variable name
+  void get_var_name( const std::string& n, std::string& nn );
+  //write dec
+  void write_dec( const std::string& expr, std::ostream& os, int ind );
+public:
+  sccwriter( int opts = 0 ) : options( opts ){}
+  virtual ~sccwriter(){}
+
+  void add_scc( const std::string& pname, Expr* exp ) { 
+    //progs.push_back( std::pair< std::string, CExpr* >( pname, exp ) ); 
+    progs[pname] = exp;
+    progPtrs.push_back( exp );
+    progNames.push_back( pname );
+  }
+
+  void write_file();
+  //write code
+  static void debug_write_code( Expr* code, std::ostream& os, int ind );
+};
+
+#endif
diff --git a/proofs/lfsc_checker/trie.cpp b/proofs/lfsc_checker/trie.cpp
new file mode 100644
index 0000000..fedb508
--- /dev/null
+++ b/proofs/lfsc_checker/trie.cpp
@@ -0,0 +1,24 @@
+#include "trie.h"
+#include <iostream>
+
+class Simple : public Trie<int>::Cleaner {
+public:
+  ~Simple() {}
+  void clean(int p) {
+    (void)p;
+  }
+};
+
+template <>
+Trie<int>::Cleaner *Trie<int>::cleaner = new Simple;
+
+void unit_test_trie() {
+  Trie<int> t;
+  t.insert("a", 1);
+  t.insert("b", 2);
+  t.insert("abc", 3);
+  t.insert("b", 0);
+  std::cout << "a: " << t.get("a") << "\n";
+  std::cout << "b: " << t.get("b") << "\n";
+  std::cout << "abc: " << t.get("abc") << "\n";
+}
diff --git a/proofs/lfsc_checker/trie.h b/proofs/lfsc_checker/trie.h
new file mode 100644
index 0000000..401fdb4
--- /dev/null
+++ b/proofs/lfsc_checker/trie.h
@@ -0,0 +1,123 @@
+#ifndef sc2__trie_h
+#define sc2__trie_h
+
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+#include <vector>
+
+template<class Data>
+class Trie {
+protected:
+  char *str;
+  Data d;
+  bool using_next;
+  std::vector<Trie<Data> *> next;
+
+  // s is assumed to be non-empty (and non-null)
+  Data insert_next(const char *s, const Data &x) {
+    assert(s != NULL && s[0] != '\0');
+    unsigned c = s[0];
+    if (c >= next.size()) {
+      using_next = true;
+      next.resize(c+1);
+      next[c] = new Trie<Data>;
+    }
+    else if (!next[c]) 
+      next[c] = new Trie<Data>;
+
+    return next[c]->insert(&s[1], x);
+  }
+
+  // s is assumed to be non-empty (and non-null)
+  Data get_next(const char *s) {
+    assert(s != NULL && s[0] != '\0');
+    unsigned c = s[0];
+    if (c >= next.size())
+      return Data();
+    Trie<Data> *n = next[c];
+    if (!n)
+      return Data();
+    return n->get(&s[1]);
+  }
+
+public:
+  Trie() : str(), d(), using_next(false), next() { }
+
+  ~Trie();
+
+  class Cleaner {
+  public:
+    virtual ~Cleaner() {}
+    virtual void clean(Data d) = 0;
+  };
+
+  static Cleaner *cleaner;
+
+  Data get(const char *s) {
+    if (!s[0] && (!str || !str[0]))
+      return d;
+    if (str && strcmp(str, s) == 0) return d;
+    if (using_next)
+      return get_next(s);
+    return Data();
+  }
+
+  Data insert(const char *s, const Data &x) {
+    if (s[0] == 0) {
+      // we need to insert x right here.
+      if (str) {
+	if (str[0] == 0) {
+	  // we need to replace d with x
+	  Data old = d;
+	  d = x;
+	  return old;
+	}
+	// we need to push str into next.
+	(void)insert_next(str,d);
+	free(str);
+      }
+      str = strdup(s);
+      d = x;
+      return Data();
+    }
+    
+    if (str) {
+      // cannot store x here 
+      if (str[0] != 0) {
+	insert_next(str,d);
+	free(str);
+	str = 0;
+	d = Data();
+      }
+      return insert_next(s,x);
+    }
+
+    if (using_next)
+      // also cannot store x here 
+      return insert_next(s,x);
+
+    // we can insert x here as an optimization
+    str = strdup(s);
+    d = x;
+    return Data();
+  }
+
+};
+
+template<class Data> 
+Trie<Data>::~Trie() 
+{
+  cleaner->clean(d);
+  for (int i = 0, iend = next.size(); i < iend; i++) {
+    Trie *t = next[i];
+    if (t)
+      delete t;
+  }
+  if (str)
+    free(str);
+}
+
+extern void unit_test_trie();
+
+#endif
diff --git a/proofs/signatures/Makefile.am b/proofs/signatures/Makefile.am
new file mode 100644
index 0000000..75d9f3c
--- /dev/null
+++ b/proofs/signatures/Makefile.am
@@ -0,0 +1,38 @@
+# These CORE_PLFs are combined to give a "master signature" against
+# which proofs are checked internally when using --check-proofs.  To
+# add support for more theories, just list them here in the same order
+# you would to the LFSC proof-checker binary.
+#
+CORE_PLFS = sat.plf smt.plf th_base.plf th_arrays.plf th_bv.plf th_bv_bitblast.plf th_bv_rewrites.plf th_real.plf th_int.plf
+
+noinst_LTLIBRARIES = libsignatures.la
+
+dist_pkgdata_DATA = \
+	$(CORE_PLFS)
+
+libsignatures_la_SOURCES = \
+	signatures.cpp
+
+BUILT_SOURCES = \
+	signatures.cpp
+
+signatures.cpp: $(CORE_PLFS)
+	$(AM_V_GEN)( \
+	  echo "namespace CVC4 {"; \
+	  echo "namespace proof {"; \
+	  echo; \
+	  echo "extern const char *const plf_signatures;"; \
+	  echo "const char *const plf_signatures = \"\\"; \
+	  cat $+ | sed 's,\\,\\\\,g;s,",\\",g;s,$$,\\n\\,g'; \
+	  echo "\";"; \
+	  echo; \
+	  echo "} /* CVC4::proof namespace */"; \
+	  echo "} /* CVC4 namespace */"; \
+	) > $@
+
+EXTRA_DIST = \
+	example.plf \
+	example-arrays.plf \
+	example-quant.plf \
+	ex-mem.plf \
+	th_quant.plf
diff --git a/proofs/signatures/Makefile.in b/proofs/signatures/Makefile.in
new file mode 100644
index 0000000..227bb46
--- /dev/null
+++ b/proofs/signatures/Makefile.in
@@ -0,0 +1,830 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = proofs/signatures
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(dist_pkgdata_DATA) \
+	$(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libsignatures_la_LIBADD =
+am_libsignatures_la_OBJECTS = signatures.lo
+libsignatures_la_OBJECTS = $(am_libsignatures_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+SOURCES = $(libsignatures_la_SOURCES)
+DIST_SOURCES = $(libsignatures_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(pkgdatadir)"
+DATA = $(dist_pkgdata_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+
+# These CORE_PLFs are combined to give a "master signature" against
+# which proofs are checked internally when using --check-proofs.  To
+# add support for more theories, just list them here in the same order
+# you would to the LFSC proof-checker binary.
+#
+CORE_PLFS = sat.plf smt.plf th_base.plf th_arrays.plf th_bv.plf th_bv_bitblast.plf th_bv_rewrites.plf th_real.plf th_int.plf
+noinst_LTLIBRARIES = libsignatures.la
+dist_pkgdata_DATA = \
+	$(CORE_PLFS)
+
+libsignatures_la_SOURCES = \
+	signatures.cpp
+
+BUILT_SOURCES = \
+	signatures.cpp
+
+EXTRA_DIST = \
+	example.plf \
+	example-arrays.plf \
+	example-quant.plf \
+	ex-mem.plf \
+	th_quant.plf
+
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu proofs/signatures/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu proofs/signatures/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+libsignatures.la: $(libsignatures_la_OBJECTS) $(libsignatures_la_DEPENDENCIES) $(EXTRA_libsignatures_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK)  $(libsignatures_la_OBJECTS) $(libsignatures_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/signatures.Plo at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-dist_pkgdataDATA: $(dist_pkgdata_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \
+	done
+
+uninstall-dist_pkgdataDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(pkgdatadir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-dist_pkgdataDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-dist_pkgdataDATA
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dist_pkgdataDATA install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+	uninstall-dist_pkgdataDATA
+
+.PRECIOUS: Makefile
+
+
+signatures.cpp: $(CORE_PLFS)
+	$(AM_V_GEN)( \
+	  echo "namespace CVC4 {"; \
+	  echo "namespace proof {"; \
+	  echo; \
+	  echo "extern const char *const plf_signatures;"; \
+	  echo "const char *const plf_signatures = \"\\"; \
+	  cat $+ | sed 's,\\,\\\\,g;s,",\\",g;s,$$,\\n\\,g'; \
+	  echo "\";"; \
+	  echo; \
+	  echo "} /* CVC4::proof namespace */"; \
+	  echo "} /* CVC4 namespace */"; \
+	) > $@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/proofs/signatures/ex-mem.plf b/proofs/signatures/ex-mem.plf
new file mode 100644
index 0000000..7e143c5
--- /dev/null
+++ b/proofs/signatures/ex-mem.plf
@@ -0,0 +1,62 @@
+(check
+(% s sort
+(% a (term s)
+(% b (term s)
+(% c (term s)
+(% f (term (arrow s s))
+
+; -------------------- declaration of input formula -----------------------------------
+
+(% A1 (th_holds (= s a b))
+(% A2 (th_holds (= s b c))
+(% A3 (th_holds (not (= s a c)))
+
+; ------------------- specify that the following is a proof of the empty clause -----------------
+
+(: (holds cln)
+
+; ---------- use atoms (a1, a2, a3) to map theory literals to boolean literals (v1, v2, v3) ------
+
+(decl_atom (= s a b) (\ v1 (\ a1
+(decl_atom (= s b c) (\ v2 (\ a2
+(decl_atom (= s a c) (\ v3 (\ a3
+
+; --------------------------- proof of theory lemma ---------------------------------------------
+
+(satlem _ _ (ast _ _ _ a1 (\ l1 (ast _ _ _ a2 (\ l2 (asf _ _ _ a3 (\ l3  (clausify_false (contra _ (trans _ _ _ _ l1 l2) l3)))))))) (\ CT1
+
+; -------------------- clausification of input formulas -----------------------------------------
+
+(satlem _ _
+(asf _ _ _ a1 (\ l1
+(clausify_false
+  (contra _ A1 l1)
+))) (\ C1
+; C1 is the clause ( v1 )
+
+(satlem _ _
+(asf _ _ _ a2 (\ l2
+(clausify_false
+   (contra _ A2 l2)
+))) (\ C2
+; C2 is the clause ( v2 )
+
+(satlem _ _
+(ast _ _ _ a3 (\ l3
+(clausify_false
+  (contra _ l3 A3)
+))) (\ C3
+; C3 is the clause ( ~v3 )
+
+
+; -------------------- resolution proof ------------------------------------------------------------
+
+(satlem_simplify _ _ _
+
+(R _ _
+(R _ _ C2
+(R _ _ C1 CT1 v1) v2) C3 v3)
+
+(\ x x))
+
+)))))))))))))))))))))))))))
diff --git a/proofs/signatures/example-arrays.plf b/proofs/signatures/example-arrays.plf
new file mode 100644
index 0000000..c454a6d
--- /dev/null
+++ b/proofs/signatures/example-arrays.plf
@@ -0,0 +1,139 @@
+; to check, run : lfsc sat.plf smt.plf th_base.plf example.plf
+
+; --------------------------------------------------------------------------------
+; literals :
+; L1 : a = write( a, i, read( a, i )
+; L2 : read( a, k ) = read( write( a, i, read( a, i ) ), k )
+; L3 : i = k
+
+; input :
+; ~L1
+
+; (extenstionality) lemma :
+; L1 or ~L2
+
+; theory conflicts :
+; L2 or ~L3
+; L2 or L3
+
+
+;  With the theory lemma, the input is unsatisfiable.
+; --------------------------------------------------------------------------------
+
+
+; (0) -------------------- term declarations -----------------------------------
+
+(check
+(% I sort
+(% E sort
+(% a (term (Array I E))
+(% i (term I)
+
+
+; (1) -------------------- input formula -----------------------------------
+
+(% A1 (th_holds (not (= (Array I E) a (apply _ _ (apply _ _ (apply _ _ (write I E) a) i) (apply _ _ (apply _ _ (read I E) a) i)))))
+
+
+
+
+; (2) ------------------- specify that the following is a proof of the empty clause -----------------
+
+(: (holds cln)
+
+
+
+
+; (3) -------------------- theory lemmas prior to rewriting/preprocess/CNF -----------------
+;     ---  these should introduce (th_holds ...)
+
+
+; extensionality lemma : notice this also introduces skolem k
+(ext _ _ a (apply _ _ (apply _ _ (apply _ _ (write I E) a) i) (apply _ _ (apply _ _ (read I E) a) i)) (\ k (\ A2
+
+
+
+
+; (4) -------------------- map theory literals to boolean variables
+;     --- maps all theory literals involved in proof to boolean literals
+
+(decl_atom (= (Array I E) a (apply _ _ (apply _ _ (apply _ _ (write I E) a) i) (apply _ _ (apply _ _ (read I E) a) i))) (\ v1 (\ a1
+(decl_atom (= E (apply _ _ (apply _ _ (read I E) a) k) (apply _ _ (apply _ _ (read I E) (apply _ _ (apply _ _ (apply _ _ (write I E) a) i) (apply _ _ (apply _ _ (read I E) a) i))) k)) (\ v2 (\ a2
+(decl_atom (= I i k) (\ v3 (\ a3
+
+
+
+; (5) -------------------- theory conflicts ---------------------------------------------
+;     ---  these should introduce (holds ...)
+
+(satlem _ _
+(asf _ _ _ a3 (\ l3
+(asf _ _ _ a2 (\ l2
+(clausify_false
+
+   ; use read over write rule "row"
+   (contra _ (symm _ _ _ (row _ _ _ _ a (apply _ _ (apply _ _ (read I E) a) i) l3)) l2)
+
+))))) (\ CT1
+; CT1 is the clause ( v2 V v3 )
+
+(satlem _ _
+(ast _ _ _ a3 (\ l3
+(asf _ _ _ a2 (\ l2
+(clausify_false
+
+   ; use read over write rule "row1"
+   (contra _ (symm _ _ _
+   	     (trans _ _ _ _
+               (symm _ _ _ (cong _ _ _ _ _ _
+               	 (refl _ (apply _ _ (read I E) (apply _ _ (apply _ _ (apply _ _ (write I E) a) i) (apply _ _ (apply _ _ (read I E) a) i))))
+               	 l3))
+               (trans _ _ _ _
+                 (row1 _ _ a i (apply _ _ (apply _ _ (read I E) a) i))
+                 (cong _ _ _ _ _ _ (refl _ (apply _ _ (read I E) a)) l3)
+                 )))
+            l2)
+
+))))) (\ CT2
+; CT2 is the clause ( v2 V ~v3 )
+
+
+; (6) -------------------- clausification -----------------------------------------
+;     ---  these should introduce (holds ...)
+
+(satlem _ _
+(ast _ _ _ a1 (\ l1
+(clausify_false
+
+; input formula A1 is ( ~a1 )
+; the following is a proof of a1 ^ ( ~a1 ) => false
+
+  (contra _ l1 A1)
+
+))) (\ C1
+; C1 is the clause ( ~v1 )
+
+
+(satlem _ _
+(asf _ _ _ a1 (\ l1
+(ast _ _ _ a2 (\ l2
+(clausify_false
+
+; lemma A2 is ( a1 V ~a2 )
+; the following is a proof of ~a1 ^ a2 ^ ( a1 V ~a2 ) => false
+
+  (contra _ l2 (or_elim_1 _ _ l1 A2))
+
+))))) (\ C2
+; C2 is the clause ( v1 V ~v2 )
+
+
+; (7) -------------------- resolution proof ------------------------------------------------------------
+
+(satlem_simplify _ _ _
+
+(R _ _ (R _ _ CT1 CT2 v3) (R _ _ C2 C1 v1) v2)
+
+(\ x x))
+
+)))))))))))))))))))))))))))
diff --git a/proofs/signatures/example-quant.plf b/proofs/signatures/example-quant.plf
new file mode 100644
index 0000000..086633b
--- /dev/null
+++ b/proofs/signatures/example-quant.plf
@@ -0,0 +1,95 @@
+; to check, run : lfsc sat.plf smt.plf th_base.plf example.plf
+
+; --------------------------------------------------------------------------------
+; literals :
+; L1 : forall x. x != x
+; L2 : t = t
+
+; input :
+; L1
+
+; (instantiation) lemma : 
+; L1 => L2
+
+; theory conflicts :
+; ~L2
+
+
+;  With the theory lemma, the input is unsatisfiable.
+; --------------------------------------------------------------------------------
+
+
+; (0) -------------------- term declarations -----------------------------------
+
+(check
+(% s sort
+(% t (term s)
+
+
+; (1) -------------------- input formula -----------------------------------
+
+(% x (term s)
+(% A1 (th_holds (forall _ x (not (= _ x x))))
+
+
+
+; (2) ------------------- specify that the following is a proof of the empty clause -----------------
+
+(: (holds cln)
+
+
+
+; (3) -------------------- theory lemmas prior to rewriting/preprocess/CNF -----------------
+;     ---  these should introduce (th_holds ...)
+
+
+; instantiation lemma
+(inst _ _ _ t (not (= _ t t)) A1 (\ A2
+
+
+
+
+; (4) -------------------- map theory literals to boolean variables
+;     --- maps all theory literals involved in proof to boolean literals
+
+(decl_atom (forall _ x (not (= _ x x))) (\ v1 (\ a1
+(decl_atom (= _ t t) (\ v2 (\ a2
+
+
+
+
+; (5) -------------------- theory conflicts ---------------------------------------------
+;     ---  these should introduce (holds ...)
+
+(satlem _ _
+(asf _ _ _ a2 (\ l2
+(clausify_false
+
+   (contra _ (refl _ t) l2)
+   
+))) (\ CT1
+; CT1 is the clause ( v2 )
+
+
+; (6) -------------------- clausification -----------------------------------------
+;     ---  these should introduce (holds ...)
+
+(satlem _ _
+(ast _ _ _ a2 (\ l2
+(clausify_false
+
+  (contra _ l2 A2)
+
+))) (\ C1
+; C1 is the clause ( ~v2 )
+
+
+; (7) -------------------- resolution proof ------------------------------------------------------------
+
+(satlem_simplify _ _ _
+
+(R _ _ CT1 C1 v2)
+
+(\ x x))
+
+))))))))))))))))))
diff --git a/proofs/signatures/example.plf b/proofs/signatures/example.plf
new file mode 100644
index 0000000..ab690eb
--- /dev/null
+++ b/proofs/signatures/example.plf
@@ -0,0 +1,116 @@
+; to check, run : lfsc sat.plf smt.plf th_base.plf example.plf
+
+; --------------------------------------------------------------------------------
+; input :
+; ( a = b )
+; ( b = f(c) )
+; ( a != f(c) V a != b )
+
+; theory lemma (by transitivity) :
+; ( a != b V b != f(c) V a = f(c) )
+
+
+;  With the theory lemma, the input is unsatisfiable.
+; --------------------------------------------------------------------------------
+
+
+
+(check
+(% s sort
+(% a (term s)
+(% b (term s)
+(% c (term s)
+(% f (term (arrow s s))
+
+; -------------------- declaration of input formula -----------------------------------
+
+(% A1 (th_holds (= s a b))
+(% A2 (th_holds (= s b (apply _ _ f c)))
+(% A3 (th_holds (or (not (= s a (apply _ _ f c))) (not (= s a b))))
+
+
+; ------------------- specify that the following is a proof of the empty clause -----------------
+
+(: (holds cln)
+
+; ---------- use atoms (a1, a2, a3) to map theory literals to boolean literals (v1, v2, v3) ------
+
+(decl_atom (= s a b) (\ v1 (\ a1
+(decl_atom (= s b (apply _ _ f c)) (\ v2 (\ a2
+(decl_atom (= s a (apply _ _ f c)) (\ v3 (\ a3
+
+
+; --------------------------- proof of theory lemma ---------------------------------------------
+
+(satlem _ _
+(ast _ _ _ a1 (\ l1
+(ast _ _ _ a2 (\ l2
+(asf _ _ _ a3 (\ l3
+(clausify_false
+
+; this should be a proof of l1 ^ l2 ^ ~l3 => false
+; this is done by theory proof rules (currently just use "trust")
+
+  trust
+
+))))))) (\ CT
+; CT is the clause ( ~v1 V ~v2 V v3 )
+
+; -------------------- clausification of input formulas -----------------------------------------
+
+(satlem _ _
+(asf _ _ _ a1 (\ l1
+(clausify_false
+
+; input formula A1 is ( ~l1 )
+; the following should be a proof of l1 ^ ( ~l1 ) => false
+; this is done by natural deduction rules
+
+  (contra _ A1 l1)
+
+))) (\ C1
+; C1 is the clause ( v1 )
+
+
+(satlem _ _
+(asf _ _ _ a2 (\ l2
+(clausify_false
+
+; input formula A2 is ( ~l2 )
+; the following should be a proof of l2 ^ ( ~l2 ) => false
+; this is done by natural deduction rules
+
+   (contra _ A2 l2)
+
+))) (\ C2
+; C2 is the clause ( v2 )
+
+
+(satlem _ _
+(ast _ _ _ a3 (\ l3
+(ast _ _ _ a1 (\ l1
+(clausify_false
+
+; input formula A3 is ( ~a3 V ~a1 )
+; the following should be a proof of a3 ^ a1 ^ ( ~a3 V ~a1 ) => false
+; this is done by natural deduction rules
+
+  (contra _ l1 (or_elim_1 _ _ (not_not_intro _ l3) A3))
+
+))))) (\ C3
+; C3 is the clause ( ~v3 V ~v1 )
+
+
+
+; -------------------- resolution proof ------------------------------------------------------------
+
+(satlem_simplify _ _ _
+
+(R _ _ C1
+(R _ _ C2
+(R _ _ CT C3 v3) v2) v1)
+
+(\ x x))
+
+))))))))))))))))))))))))))
+)
diff --git a/proofs/signatures/sat.plf b/proofs/signatures/sat.plf
new file mode 100644
index 0000000..b95caa8
--- /dev/null
+++ b/proofs/signatures/sat.plf
@@ -0,0 +1,127 @@
+(declare bool type)
+(declare tt bool)
+(declare ff bool)
+
+(declare var type)
+
+(declare lit type)
+(declare pos (! x var lit))
+(declare neg (! x var lit))
+
+(declare clause type)
+(declare cln clause)
+(declare clc (! x lit (! c clause clause)))
+
+; constructs for general clauses for R, Q, satlem
+
+(declare concat_cl (! c1 clause (! c2 clause clause)))
+(declare clr (! l lit (! c clause clause)))
+
+; code to check resolutions
+
+(program append ((c1 clause) (c2 clause)) clause
+  (match c1 (cln c2) ((clc l c1') (clc l (append c1' c2)))))
+
+; we use marks as follows:
+; -- mark 1 to record if we are supposed to remove a positive occurrence of the variable.
+; -- mark 2 to record if we are supposed to remove a negative occurrence of the variable.
+; -- mark 3 if we did indeed remove the variable positively
+; -- mark 4 if we did indeed remove the variable negatively
+(program simplify_clause ((c clause)) clause
+  (match c
+    (cln cln)
+    ((clc l c1)
+      (match l
+        ; Set mark 1 on v if it is not set, to indicate we should remove it.
+        ; After processing the rest of the clause, set mark 3 if we were already
+        ; supposed to remove v (so if mark 1 was set when we began).  Clear mark3
+        ; if we were not supposed to be removing v when we began this call.
+        ((pos v)
+          (let m (ifmarked v tt (do (markvar v) ff))
+          (let c' (simplify_clause c1)
+            (match m
+              (tt (do (ifmarked3 v v (markvar3 v)) c'))
+              (ff (do (ifmarked3 v (markvar3 v) v) (markvar v) (clc l c')))))))
+        ; the same as the code for tt, but using different marks.
+        ((neg v)
+          (let m (ifmarked2 v tt (do (markvar2 v) ff))
+          (let c' (simplify_clause c1)
+            (match m
+              (tt (do (ifmarked4 v v (markvar4 v)) c'))
+              (ff (do (ifmarked4 v (markvar4 v) v) (markvar2 v) (clc l c')))))))))
+    ((concat_cl c1 c2) (append (simplify_clause c1) (simplify_clause c2)))
+    ((clr l c1)
+      (match l
+        ; set mark 1 to indicate we should remove v, and fail if
+        ; mark 3 is not set after processing the rest of the clause
+        ; (we will set mark 3 if we remove a positive occurrence of v).
+        ((pos v)
+            (let m (ifmarked v tt (do (markvar v) ff))
+            (let m3 (ifmarked3 v (do (markvar3 v) tt) ff)
+            (let c' (simplify_clause c1)
+              (ifmarked3 v (do (match m3 (tt v) (ff (markvar3 v)))
+                                (match m (tt v) (ff (markvar v))) c')
+                          (fail clause))))))
+        ; same as the tt case, but with different marks.
+        ((neg v)
+            (let m2 (ifmarked2 v tt (do (markvar2 v) ff))
+            (let m4 (ifmarked4 v (do (markvar4 v) tt) ff)
+            (let c' (simplify_clause c1)
+              (ifmarked4 v (do (match m4 (tt v) (ff (markvar4 v)))
+                                (match m2 (tt v) (ff (markvar2 v))) c')
+                          (fail clause))))))
+   ))))
+
+
+; resolution proofs
+
+(declare holds (! c clause type))
+
+(declare R (! c1 clause (! c2 clause
+           (! u1 (holds c1)
+           (! u2 (holds c2)
+           (! n var
+            (holds (concat_cl (clr (pos n) c1)
+                     (clr (neg n) c2)))))))))
+
+(declare Q (! c1 clause (! c2 clause
+           (! u1 (holds c1)
+           (! u2 (holds c2)
+           (! n var
+            (holds (concat_cl (clr (neg n) c1)
+                     (clr (pos n) c2)))))))))
+
+(declare satlem_simplify
+                (! c1 clause
+                (! c2 clause
+                (! c3 clause
+                (! u1 (holds c1)
+                (! r (^ (simplify_clause c1) c2)
+                (! u2 (! x (holds c2) (holds c3))
+                   (holds c3))))))))
+
+(declare satlem
+  (! c clause
+  (! c2 clause
+  (! u (holds c)
+  (! u2 (! v (holds c) (holds c2))
+    (holds c2))))))
+
+; A little example to demonstrate simplify_clause.
+; It can handle nested clr's of both polarities,
+; and correctly cleans up marks when it leaves a
+; clr or clc scope.  Uncomment and run with
+; --show-runs to see it in action.
+;
+; (check
+;   (% v1 var
+;   (% u1 (holds (concat_cl (clr (neg v1) (clr (pos v1) (clc (pos v1) (clr (pos v1) (clc (pos v1) (clc (neg v1) cln))))))
+;                    (clc (pos v1) (clc (pos v1) cln))))
+;    (satlem _ _ _ u1 (\ x x))))))
+
+
+;(check
+;   (% v1 var
+;   (% u1 (holds (clr (neg v1) (concat_cl (clc (neg v1) cln)
+;                                      (clr (neg v1) (clc (neg v1) cln)))))
+;    (satlem _ _ _ u1 (\ x x))))))
diff --git a/proofs/signatures/signatures.cpp b/proofs/signatures/signatures.cpp
new file mode 100644
index 0000000..a9b3a32
--- /dev/null
+++ b/proofs/signatures/signatures.cpp
@@ -0,0 +1,1704 @@
+namespace CVC4 {
+namespace proof {
+
+extern const char *const plf_signatures;
+const char *const plf_signatures = "\
+(declare bool type)\n\
+(declare tt bool)\n\
+(declare ff bool)\n\
+\n\
+(declare var type)\n\
+\n\
+(declare lit type)\n\
+(declare pos (! x var lit))\n\
+(declare neg (! x var lit))\n\
+\n\
+(declare clause type)\n\
+(declare cln clause)\n\
+(declare clc (! x lit (! c clause clause)))\n\
+\n\
+; constructs for general clauses for R, Q, satlem\n\
+\n\
+(declare concat_cl (! c1 clause (! c2 clause clause)))\n\
+(declare clr (! l lit (! c clause clause)))\n\
+\n\
+; code to check resolutions\n\
+\n\
+(program append ((c1 clause) (c2 clause)) clause\n\
+  (match c1 (cln c2) ((clc l c1') (clc l (append c1' c2)))))\n\
+\n\
+; we use marks as follows:\n\
+; -- mark 1 to record if we are supposed to remove a positive occurrence of the variable.\n\
+; -- mark 2 to record if we are supposed to remove a negative occurrence of the variable.\n\
+; -- mark 3 if we did indeed remove the variable positively\n\
+; -- mark 4 if we did indeed remove the variable negatively\n\
+(program simplify_clause ((c clause)) clause\n\
+  (match c\n\
+    (cln cln)\n\
+    ((clc l c1)\n\
+      (match l\n\
+        ; Set mark 1 on v if it is not set, to indicate we should remove it.\n\
+        ; After processing the rest of the clause, set mark 3 if we were already\n\
+        ; supposed to remove v (so if mark 1 was set when we began).  Clear mark3\n\
+        ; if we were not supposed to be removing v when we began this call.\n\
+        ((pos v)\n\
+          (let m (ifmarked v tt (do (markvar v) ff))\n\
+          (let c' (simplify_clause c1)\n\
+            (match m\n\
+              (tt (do (ifmarked3 v v (markvar3 v)) c'))\n\
+              (ff (do (ifmarked3 v (markvar3 v) v) (markvar v) (clc l c')))))))\n\
+        ; the same as the code for tt, but using different marks.\n\
+        ((neg v)\n\
+          (let m (ifmarked2 v tt (do (markvar2 v) ff))\n\
+          (let c' (simplify_clause c1)\n\
+            (match m\n\
+              (tt (do (ifmarked4 v v (markvar4 v)) c'))\n\
+              (ff (do (ifmarked4 v (markvar4 v) v) (markvar2 v) (clc l c')))))))))\n\
+    ((concat_cl c1 c2) (append (simplify_clause c1) (simplify_clause c2)))\n\
+    ((clr l c1)\n\
+      (match l\n\
+        ; set mark 1 to indicate we should remove v, and fail if\n\
+        ; mark 3 is not set after processing the rest of the clause\n\
+        ; (we will set mark 3 if we remove a positive occurrence of v).\n\
+        ((pos v)\n\
+            (let m (ifmarked v tt (do (markvar v) ff))\n\
+            (let m3 (ifmarked3 v (do (markvar3 v) tt) ff)\n\
+            (let c' (simplify_clause c1)\n\
+              (ifmarked3 v (do (match m3 (tt v) (ff (markvar3 v)))\n\
+                                (match m (tt v) (ff (markvar v))) c')\n\
+                          (fail clause))))))\n\
+        ; same as the tt case, but with different marks.\n\
+        ((neg v)\n\
+            (let m2 (ifmarked2 v tt (do (markvar2 v) ff))\n\
+            (let m4 (ifmarked4 v (do (markvar4 v) tt) ff)\n\
+            (let c' (simplify_clause c1)\n\
+              (ifmarked4 v (do (match m4 (tt v) (ff (markvar4 v)))\n\
+                                (match m2 (tt v) (ff (markvar2 v))) c')\n\
+                          (fail clause))))))\n\
+   ))))\n\
+\n\
+\n\
+; resolution proofs\n\
+\n\
+(declare holds (! c clause type))\n\
+\n\
+(declare R (! c1 clause (! c2 clause\n\
+           (! u1 (holds c1)\n\
+           (! u2 (holds c2)\n\
+           (! n var\n\
+            (holds (concat_cl (clr (pos n) c1)\n\
+                     (clr (neg n) c2)))))))))\n\
+\n\
+(declare Q (! c1 clause (! c2 clause\n\
+           (! u1 (holds c1)\n\
+           (! u2 (holds c2)\n\
+           (! n var\n\
+            (holds (concat_cl (clr (neg n) c1)\n\
+                     (clr (pos n) c2)))))))))\n\
+\n\
+(declare satlem_simplify\n\
+                (! c1 clause\n\
+                (! c2 clause\n\
+                (! c3 clause\n\
+                (! u1 (holds c1)\n\
+                (! r (^ (simplify_clause c1) c2)\n\
+                (! u2 (! x (holds c2) (holds c3))\n\
+                   (holds c3))))))))\n\
+\n\
+(declare satlem\n\
+  (! c clause\n\
+  (! c2 clause\n\
+  (! u (holds c)\n\
+  (! u2 (! v (holds c) (holds c2))\n\
+    (holds c2))))))\n\
+\n\
+; A little example to demonstrate simplify_clause.\n\
+; It can handle nested clr's of both polarities,\n\
+; and correctly cleans up marks when it leaves a\n\
+; clr or clc scope.  Uncomment and run with\n\
+; --show-runs to see it in action.\n\
+;\n\
+; (check\n\
+;   (% v1 var\n\
+;   (% u1 (holds (concat_cl (clr (neg v1) (clr (pos v1) (clc (pos v1) (clr (pos v1) (clc (pos v1) (clc (neg v1) cln))))))\n\
+;                    (clc (pos v1) (clc (pos v1) cln))))\n\
+;    (satlem _ _ _ u1 (\\ x x))))))\n\
+\n\
+\n\
+;(check\n\
+;   (% v1 var\n\
+;   (% u1 (holds (clr (neg v1) (concat_cl (clc (neg v1) cln)\n\
+;                                      (clr (neg v1) (clc (neg v1) cln)))))\n\
+;    (satlem _ _ _ u1 (\\ x x))))))\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;\n\
+; SMT syntax and semantics (not theory-specific)\n\
+;\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+; depends on sat.plf\n\
+\n\
+(declare formula type)\n\
+(declare th_holds (! f formula type))\n\
+\n\
+; standard logic definitions\n\
+(declare true formula)\n\
+(declare false formula)\n\
+\n\
+(define formula_op1\n\
+	(! f formula\n\
+	formula))\n\
+\n\
+(define formula_op2\n\
+	(! f1 formula\n\
+	(! f2 formula\n\
+	   formula)))\n\
+\n\
+(define formula_op3\n\
+	(! f1 formula\n\
+	(! f2 formula\n\
+	(! f3 formula\n\
+	   formula))))\n\
+\n\
+(declare not formula_op1)\n\
+(declare and formula_op2)\n\
+(declare or formula_op2)\n\
+(declare impl formula_op2)\n\
+(declare iff formula_op2)\n\
+(declare xor formula_op2)\n\
+(declare ifte formula_op3)\n\
+\n\
+; terms\n\
+(declare sort type)\n\
+(declare term (! t sort type))	; declared terms in formula\n\
+\n\
+; standard definitions for =, ite, let and flet\n\
+(declare = (! s sort\n\
+           (! x (term s)\n\
+           (! y (term s)\n\
+             formula))))\n\
+(declare ite (! s sort\n\
+             (! f formula\n\
+             (! t1 (term s)\n\
+             (! t2 (term s)\n\
+               (term s))))))\n\
+(declare let (! s sort\n\
+             (! t (term s)\n\
+             (! f (! v (term s) formula)\n\
+               formula))))\n\
+(declare flet (! f1 formula\n\
+              (! f2 (! v formula formula)\n\
+                formula)))\n\
+\n\
+; We view applications of predicates as terms of sort \"Bool\".\n\
+; Such terms can be injected as atomic formulas using \"p_app\".\n\
+(declare Bool sort)				; the special sort for predicates\n\
+(declare p_app (! x (term Bool) formula))	; propositional application of term\n\
+\n\
+; boolean terms\n\
+(declare t_true (term Bool))\n\
+(declare t_false (term Bool))\n\
+(declare t_t_neq_f\n\
+ (th_holds (not (= Bool t_true t_false))))\n\
+(declare pred_eq_t\n\
+ (! x (term Bool)\n\
+ (! u (th_holds (p_app x))\n\
+   (th_holds (= Bool x t_true)))))\n\
+(declare pred_eq_f\n\
+ (! x (term Bool)\n\
+ (! u (th_holds (not (p_app x)))\n\
+   (th_holds (= Bool x t_false)))))\n\
+\n\
+(declare f_to_b\n\
+  (! f formula\n\
+    (term Bool)))\n\
+\n\
+(declare true_preds_equal\n\
+  (! x1 (term Bool)\n\
+  (! x2 (term Bool)\n\
+  (! u1 (th_holds (p_app x1))\n\
+  (! u2 (th_holds (p_app x2))\n\
+    (th_holds (= Bool x1 x2)))))))\n\
+\n\
+(declare false_preds_equal\n\
+  (! x1 (term Bool)\n\
+  (! x2 (term Bool)\n\
+  (! u1 (th_holds (not (p_app x1)))\n\
+  (! u2 (th_holds (not (p_app x2)))\n\
+    (th_holds (= Bool x1 x2)))))))\n\
+\n\
+(declare pred_refl_pos\n\
+  (! x1 (term Bool)\n\
+  (! u1 (th_holds (p_app x1))\n\
+    (th_holds (= Bool x1 x1)))))\n\
+\n\
+(declare pred_refl_neg\n\
+  (! x1 (term Bool)\n\
+  (! u1 (th_holds (not (p_app x1)))\n\
+    (th_holds (= Bool x1 x1)))))\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;\n\
+; CNF Clausification\n\
+;\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+; binding between an LF var and an (atomic) formula\n\
+\n\
+(declare atom (! v var (! p formula type)))\n\
+\n\
+; binding between two LF vars\n\
+(declare bvatom (! sat_v var (! bv_v var type)))\n\
+\n\
+(declare decl_atom\n\
+  (! f formula\n\
+  (! u (! v var\n\
+       (! a (atom v f)\n\
+         (holds cln)))\n\
+    (holds cln))))\n\
+\n\
+;; declare atom enhanced with mapping\n\
+;; between SAT prop variable and BVSAT prop variable\n\
+(declare decl_bvatom\n\
+  (! f formula\n\
+  (! u (! v var\n\
+       (! bv_v var\n\
+       (! a (atom v f)\n\
+       (! bva (atom bv_v f)\n\
+       (! vbv (bvatom v bv_v)\n\
+         (holds cln))))))\n\
+    (holds cln))))\n\
+\n\
+\n\
+; clausify a formula directly\n\
+(declare clausify_form\n\
+  (! f formula\n\
+  (! v var\n\
+  (! a (atom v f)\n\
+  (! u (th_holds f)\n\
+    (holds (clc (pos v) cln)))))))\n\
+\n\
+(declare clausify_form_not\n\
+  (! f formula\n\
+  (! v var\n\
+  (! a (atom v f)\n\
+  (! u (th_holds (not f))\n\
+    (holds (clc (neg v) cln)))))))\n\
+\n\
+(declare clausify_false\n\
+  (! u (th_holds false)\n\
+    (holds cln)))\n\
+\n\
+(declare th_let_pf\n\
+  (! f formula\n\
+  (! u (th_holds f)\n\
+  (! u2 (! v (th_holds f) (holds cln))\n\
+    (holds cln)))))\n\
+\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;\n\
+; Natural deduction rules : used for CNF\n\
+;\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+;; for eager bit-blasting\n\
+(declare iff_symm\n\
+	(! f formula\n\
+	   (th_holds (iff f f))))\n\
+\n\
+\n\
+;; contradiction\n\
+\n\
+(declare contra\n\
+  (! f formula\n\
+  (! r1 (th_holds f)\n\
+  (! r2 (th_holds (not f))\n\
+    (th_holds false)))))\n\
+\n\
+; truth\n\
+(declare truth (th_holds true))\n\
+\n\
+;; not not\n\
+\n\
+(declare not_not_intro\n\
+  (! f formula\n\
+  (! u (th_holds f)\n\
+    (th_holds (not (not f))))))\n\
+\n\
+(declare not_not_elim\n\
+  (! f formula\n\
+  (! u (th_holds (not (not f)))\n\
+    (th_holds f))))\n\
+\n\
+;; or elimination\n\
+\n\
+(declare or_elim_1\n\
+  (! f1 formula\n\
+  (! f2 formula\n\
+  (! u1 (th_holds (not f1))\n\
+  (! u2 (th_holds (or f1 f2))\n\
+    (th_holds f2))))))\n\
+\n\
+(declare or_elim_2\n\
+  (! f1 formula\n\
+  (! f2 formula\n\
+  (! u1 (th_holds (not f2))\n\
+  (! u2 (th_holds (or f1 f2))\n\
+    (th_holds f1))))))\n\
+\n\
+(declare not_or_elim\n\
+  (! f1 formula\n\
+  (! f2 formula\n\
+  (! u2 (th_holds (not (or f1 f2)))\n\
+    (th_holds (and (not f1) (not f2)))))))\n\
+\n\
+;; and elimination\n\
+\n\
+(declare and_elim_1\n\
+  (! f1 formula\n\
+  (! f2 formula\n\
+  (! u (th_holds (and f1 f2))\n\
+    (th_holds f1)))))\n\
+\n\
+(declare and_elim_2\n\
+  (! f1 formula\n\
+  (! f2 formula\n\
+  (! u (th_holds (and f1 f2))\n\
+    (th_holds f2)))))\n\
+\n\
+(declare not_and_elim\n\
+  (! f1 formula\n\
+  (! f2 formula\n\
+  (! u2 (th_holds (not (and f1 f2)))\n\
+    (th_holds (or (not f1) (not f2)))))))\n\
+\n\
+;; impl elimination\n\
+\n\
+(declare impl_intro (! f1 formula\n\
+                    (! f2 formula\n\
+                    (! i1 (! u (th_holds f1)\n\
+                              (th_holds f2))\n\
+                      (th_holds (impl f1 f2))))))\n\
+\n\
+(declare impl_elim\n\
+  (! f1 formula\n\
+  (! f2 formula\n\
+  (! u2 (th_holds (impl f1 f2))\n\
+    (th_holds (or (not f1) f2))))))\n\
+\n\
+(declare not_impl_elim\n\
+  (! f1 formula\n\
+  (! f2 formula\n\
+  (! u (th_holds (not (impl f1 f2)))\n\
+    (th_holds (and f1 (not f2)))))))\n\
+\n\
+;; iff elimination\n\
+\n\
+(declare iff_elim_1\n\
+  (! f1 formula\n\
+  (! f2 formula\n\
+  (! u1 (th_holds (iff f1 f2))\n\
+    (th_holds (or (not f1) f2))))))\n\
+\n\
+(declare iff_elim_2\n\
+  (! f1 formula\n\
+  (! f2 formula\n\
+  (! u1 (th_holds (iff f1 f2))\n\
+    (th_holds (or f1 (not f2)))))))\n\
+\n\
+(declare not_iff_elim\n\
+  (! f1 formula\n\
+  (! f2 formula\n\
+  (! u2 (th_holds (not (iff f1 f2)))\n\
+    (th_holds (iff f1 (not f2)))))))\n\
+\n\
+; xor elimination\n\
+\n\
+(declare xor_elim_1\n\
+  (! f1 formula\n\
+  (! f2 formula\n\
+  (! u1 (th_holds (xor f1 f2))\n\
+    (th_holds (or (not f1) (not f2)))))))\n\
+\n\
+(declare xor_elim_2\n\
+  (! f1 formula\n\
+  (! f2 formula\n\
+  (! u1 (th_holds (xor f1 f2))\n\
+    (th_holds (or f1 f2))))))\n\
+\n\
+(declare not_xor_elim\n\
+  (! f1 formula\n\
+  (! f2 formula\n\
+  (! u2 (th_holds (not (xor f1 f2)))\n\
+    (th_holds (iff f1 f2))))))\n\
+\n\
+;; ite elimination\n\
+\n\
+(declare ite_elim_1\n\
+  (! a formula\n\
+  (! b formula\n\
+  (! c formula\n\
+  (! u2 (th_holds (ifte a b c))\n\
+    (th_holds (or (not a) b)))))))\n\
+\n\
+(declare ite_elim_2\n\
+  (! a formula\n\
+  (! b formula\n\
+  (! c formula\n\
+  (! u2 (th_holds (ifte a b c))\n\
+    (th_holds (or a c)))))))\n\
+\n\
+(declare ite_elim_3\n\
+  (! a formula\n\
+  (! b formula\n\
+  (! c formula\n\
+  (! u2 (th_holds (ifte a b c))\n\
+    (th_holds (or b c)))))))\n\
+\n\
+(declare not_ite_elim_1\n\
+  (! a formula\n\
+  (! b formula\n\
+  (! c formula\n\
+  (! u2 (th_holds (not (ifte a b c)))\n\
+    (th_holds (or (not a) (not b))))))))\n\
+\n\
+(declare not_ite_elim_2\n\
+  (! a formula\n\
+  (! b formula\n\
+  (! c formula\n\
+  (! u2 (th_holds (not (ifte a b c)))\n\
+    (th_holds (or a (not c))))))))\n\
+\n\
+(declare not_ite_elim_3\n\
+  (! a formula\n\
+  (! b formula\n\
+  (! c formula\n\
+  (! u2 (th_holds (not (ifte a b c)))\n\
+    (th_holds (or (not b) (not c))))))))\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;\n\
+; For theory lemmas\n\
+; - make a series of assumptions and then derive a contradiction (or false)\n\
+; - then the assumptions yield a formula like \"v1 -> v2 -> ... -> vn -> false\"\n\
+; - In CNF, it becomes a clause: \"~v1, ~v2, ..., ~vn\"\n\
+;\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+(declare ast\n\
+  (! v var\n\
+  (! f formula\n\
+  (! C clause\n\
+  (! r (atom v f)       ;this is specified\n\
+  (! u (! o (th_holds f)\n\
+         (holds C))\n\
+    (holds (clc (neg v) C))))))))\n\
+\n\
+(declare asf\n\
+  (! v var\n\
+  (! f formula\n\
+  (! C clause\n\
+  (! r (atom v f)\n\
+  (! u (! o (th_holds (not f))\n\
+         (holds C))\n\
+    (holds (clc (pos v) C))))))))\n\
+\n\
+;; Bitvector lemma constructors to assume\n\
+;; the unit clause containing the assumptions\n\
+;; it also requires the mapping between bv_v and v\n\
+;; The resolution proof proving false will use bv_v as the definition clauses use bv_v\n\
+;; but the Problem clauses in the main SAT solver will use v so the learned clause is in terms of v\n\
+(declare bv_asf\n\
+  (! v var\n\
+  (! bv_v var\n\
+  (! f formula\n\
+  (! C clause\n\
+  (! r (atom v f) ;; passed in\n\
+  (! x (bvatom v bv_v) ; establishes the equivalence of v to bv_\n\
+  (! u (! o (holds (clc (neg bv_v) cln)) ;; l binding to be used in proof\n\
+         (holds C))\n\
+    (holds (clc (pos v) C))))))))))\n\
+\n\
+(declare bv_ast\n\
+  (! v var\n\
+  (! bv_v var\n\
+  (! f formula\n\
+  (! C clause\n\
+  (! r (atom v f)       ; this is specified\n\
+  (! x (bvatom v bv_v) ; establishes the equivalence of v to bv_v\n\
+  (! u (! o (holds (clc (pos bv_v) cln))\n\
+         (holds C))\n\
+    (holds (clc (neg v) C))))))))))\n\
+\n\
+\n\
+;; Example:\n\
+;;\n\
+;; Given theory literals (F1....Fn), and an input formula A of the form (th_holds (or F1 (or F2 .... (or F{n-1} Fn))))).\n\
+;;\n\
+;; We introduce atoms (a1,...,an) to map boolean literals (v1,...,vn) top literals (F1,...,Fn).\n\
+;; Do this at the beginning of the proof:\n\
+;;\n\
+;; (decl_atom F1 (\\ v1 (\\ a1\n\
+;; (decl_atom F2 (\\ v2 (\\ a2\n\
+;; ....\n\
+;; (decl_atom Fn (\\ vn (\\ an\n\
+;;\n\
+;;  A is then clausified by the following proof:\n\
+;;\n\
+;;(satlem _ _\n\
+;;(asf _ _ _ a1 (\\ l1\n\
+;;(asf _ _ _ a2 (\\ l2\n\
+;;...\n\
+;;(asf _ _ _ an (\\ ln\n\
+;;(clausify_false\n\
+;;\n\
+;;   (contra _\n\
+;;      (or_elim_1 _ _ l{n-1}\n\
+;;	...\n\
+;;      (or_elim_1 _ _ l2\n\
+;; 	(or_elim_1 _ _ l1 A))))) ln)\n\
+;;\n\
+;;))))))) (\\ C\n\
+;;\n\
+;; We now have the free variable C, which should be the clause (v1 V ... V vn).\n\
+;;\n\
+;; Polarity of literals should be considered, say we have A of the form (th_holds (or (not F1) (or F2 (not F3)))).\n\
+;; Where necessary, we use \"ast\" instead of \"asf\", introduce negations by \"not_not_intro\" for pattern matching, and flip\n\
+;; the arguments of contra:\n\
+;;\n\
+;;(satlem _ _\n\
+;;(ast _ _ _ a1 (\\ l1\n\
+;;(asf _ _ _ a2 (\\ l2\n\
+;;(ast _ _ _ a3 (\\ l3\n\
+;;(clausify_false\n\
+;;\n\
+;;   (contra _ l3\n\
+;;      (or_elim_1 _ _ l2\n\
+;; 	(or_elim_1 _ _ (not_not_intro l1) A))))\n\
+;;\n\
+;;))))))) (\\ C\n\
+;;\n\
+;; C should be the clause (~v1 V v2 V ~v3 )\n\
+\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;\n\
+; Theory of Equality and Congruence Closure\n\
+;\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+; depends on : smt.plf\n\
+\n\
+; sorts :\n\
+\n\
+(declare arrow (! s1 sort (! s2 sort sort)))	; function constructor\n\
+\n\
+; functions :\n\
+\n\
+(declare apply (! s1 sort\n\
+               (! s2 sort\n\
+               (! t1 (term (arrow s1 s2))\n\
+               (! t2 (term s1)\n\
+                (term s2))))))\n\
+\n\
+\n\
+; inference rules :\n\
+\n\
+(declare trust (th_holds false))	; temporary\n\
+(declare trust_f (! f formula (th_holds f)))  ; temporary\n\
+\n\
+(declare refl\n\
+  (! s sort\n\
+  (! t (term s)\n\
+    (th_holds (= s t t)))))\n\
+\n\
+(declare symm (! s sort\n\
+              (! x (term s)\n\
+              (! y (term s)\n\
+              (! u (th_holds (= _ x y))\n\
+                (th_holds (= _ y x)))))))\n\
+\n\
+(declare trans (! s sort\n\
+               (! x (term s)\n\
+               (! y (term s)\n\
+               (! z (term s)\n\
+               (! u (th_holds (= _ x y))\n\
+               (! u (th_holds (= _ y z))\n\
+                 (th_holds (= _ x z)))))))))\n\
+\n\
+(declare negsymm (! s sort\n\
+              	 (! x (term s)\n\
+              	 (! y (term s)\n\
+              	 (! u (th_holds (not (= _ x y)))\n\
+                   (th_holds (not (= _ y x))))))))\n\
+\n\
+(declare negtrans1 (! s sort\n\
+                   (! x (term s)\n\
+              	   (! y (term s)\n\
+               	   (! z (term s)\n\
+               	   (! u (th_holds (not (= _ x y)))\n\
+               	   (! u (th_holds (= _ y z))\n\
+                     (th_holds (not (= _ x z))))))))))\n\
+\n\
+(declare negtrans2 (! s sort\n\
+                   (! x (term s)\n\
+              	   (! y (term s)\n\
+               	   (! z (term s)\n\
+               	   (! u (th_holds (= _ x y))\n\
+               	   (! u (th_holds (not (= _ y z)))\n\
+                     (th_holds (not (= _ x z))))))))))\n\
+\n\
+(declare cong (! s1 sort\n\
+              (! s2 sort\n\
+              (! a1 (term (arrow s1 s2))\n\
+              (! b1 (term (arrow s1 s2))\n\
+              (! a2 (term s1)\n\
+              (! b2 (term s1)\n\
+              (! u1 (th_holds (= _ a1 b1))\n\
+              (! u2 (th_holds (= _ a2 b2))\n\
+                (th_holds (= _ (apply _ _ a1 a2) (apply _ _ b1 b2))))))))))))\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+; Examples\n\
+\n\
+; an example of \"(p1 or p2(0)) and t1=t2(1)\"\n\
+;(! p1 (term Bool)\n\
+;(! p2 (term (arrow Int Bool))\n\
+;(! t1 (term Int)\n\
+;(! t2 (term (arrow Int Int))\n\
+;(! F (th_holds (and (or (p_app p1) (p_app (apply _ _ p2 0)))\n\
+;                    (= _ t1 (apply _ _ t2 1))))\n\
+;  ...\n\
+\n\
+; another example of \"p3(a,b)\"\n\
+;(! a (term Int)\n\
+;(! b (term Int)\n\
+;(! p3 (term (arrow Int (arrow Int Bool)))	; arrow is right assoc.\n\
+;(! F (th_holds (p_app (apply _ _ (apply _ _ p3 a) b))) ; apply is left assoc.\n\
+;  ...\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;\n\
+; Theory of Arrays\n\
+;\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+; depends on : th_base.plf\n\
+\n\
+; sorts\n\
+\n\
+(declare Array (! s1 sort (! s2 sort sort)))	; s1 is index, s2 is element\n\
+\n\
+; functions\n\
+(declare write (! s1 sort\n\
+               (! s2 sort\n\
+                 (term (arrow (Array s1 s2)\n\
+                       (arrow s1\n\
+                       (arrow s2 (Array s1 s2))))))))\n\
+\n\
+(declare read (! s1 sort\n\
+              (! s2 sort\n\
+              	(term (arrow (Array s1 s2)\n\
+               	      (arrow s1 s2))))))\n\
+\n\
+; inference rules\n\
+\n\
+; read( a[i] = b, i ) == b\n\
+(declare row1 (! s1 sort\n\
+              (! s2 sort\n\
+              (! t1 (term (Array s1 s2))\n\
+              (! t2 (term s1)\n\
+              (! t3 (term s2)\n\
+              	(th_holds (= _\n\
+		(apply _ _ (apply _ _ (read s1 s2) (apply _ _ (apply _ _ (apply _ _ (write s1 s2) t1) t2) t3)) t2) t3))))))))\n\
+\n\
+; read( a[i] = b, j ) == read( a, j ) if i != j\n\
+(declare row (! s1 sort\n\
+             (! s2 sort\n\
+             (! t2 (term s1)\n\
+             (! t3 (term s1)\n\
+             (! t1 (term (Array s1 s2))\n\
+             (! t4 (term s2)\n\
+             (! u (th_holds (not (= _ t2 t3)))\n\
+               (th_holds (= _ (apply _ _ (apply _ _ (read s1 s2) (apply _ _ (apply _ _ (apply _ _ (write s1 s2) t1) t2) t4)) t3)\n\
+               		      (apply _ _ (apply _ _ (read s1 s2) t1) t3)))))))))))\n\
+\n\
+; i == j if read( a, j ) != read( a[i] = b, j )\n\
+(declare negativerow (! s1 sort\n\
+                     (! s2 sort\n\
+                     (! t2 (term s1)\n\
+                     (! t3 (term s1)\n\
+                     (! t1 (term (Array s1 s2))\n\
+                     (! t4 (term s2)\n\
+		     (! u (th_holds (not (= _\n\
+                        (apply _ _ (apply _ _ (read s1 s2) (apply _ _ (apply _ _ (apply _ _ (write s1 s2) t1) t2) t4)) t3)\n\
+                        (apply _ _ (apply _ _ (read s1 s2) t1) t3))))\n\
+                     (th_holds (= _ t2 t3))))))))))\n\
+\n\
+(declare ext (! s1 sort\n\
+             (! s2 sort\n\
+             (! t1 (term (Array s1 s2))\n\
+             (! t2 (term (Array s1 s2))\n\
+             (! u1 (! k (term s1)\n\
+                   (! u2 (th_holds (or (= _ t1 t2) (not (= _ (apply _ _ (apply _ _ (read s1 s2) t1) k) (apply _ _ (apply _ _ (read s1 s2) t2) k)))))\n\
+                     (holds cln)))\n\
+               (holds cln)))))))\n\
+;;;; TEMPORARY:\n\
+\n\
+(declare trust-bad (th_holds false))\n\
+\n\
+; helper stuff\n\
+(program mpz_sub ((x mpz) (y mpz)) mpz\n\
+	 (mp_add x (mp_mul (~1) y)))\n\
+\n\
+(program mp_ispos ((x mpz)) formula\n\
+	 (mp_ifneg x false true))\n\
+\n\
+(program mpz_eq ((x mpz) (y mpz)) formula\n\
+    (mp_ifzero (mpz_sub x y) true false))\n\
+\n\
+(program mpz_lt ((x mpz) (y mpz)) formula\n\
+    (mp_ifneg (mpz_sub x y) true false))\n\
+\n\
+(program mpz_lte ((x mpz) (y mpz)) formula\n\
+    (mp_ifneg (mpz_sub x y) true (mpz_eq x y)))\n\
+\n\
+(program mpz_ ((x mpz) (y mpz)) formula\n\
+    (mp_ifzero (mpz_sub x y) true false))\n\
+\n\
+\n\
+; \"bitvec\" is a term of type \"sort\"\n\
+; (declare BitVec sort)\n\
+(declare BitVec (!n mpz sort))\n\
+\n\
+; bit type\n\
+(declare bit type)\n\
+(declare b0 bit)\n\
+(declare b1 bit)\n\
+\n\
+; bit vector type used for constants\n\
+(declare bv type)\n\
+(declare bvn bv)\n\
+(declare bvc (! b bit (! v bv bv)))\n\
+\n\
+; calculate the length of a bitvector\n\
+;; (program bv_len ((v bv)) mpz\n\
+;;   (match v\n\
+;;     (bvn 0)\n\
+;;     ((bvc b v') (mp_add (bv_len v') 1))))\n\
+\n\
+\n\
+; a bv constant term\n\
+(declare a_bv\n\
+	 (! n mpz\n\
+	 (! v bv\n\
+	    (term (BitVec n)))))\n\
+\n\
+(program bv_constants_are_disequal ((x bv) (y bv)) formula\n\
+  (match x\n\
+      (bvn (fail formula))\n\
+      ((bvc bx x')\n\
+        (match y\n\
+          (bvn (fail formula))\n\
+          ((bvc by y') (match bx\n\
+                             (b0 (match by (b0 (bv_constants_are_disequal x' y')) (b1 (true))))\n\
+                             (b1 (match by (b0 (true)) (b1 (bv_constants_are_disequal x' y'))))\n\
+          ))\n\
+      ))\n\
+))\n\
+\n\
+(declare bv_disequal_constants\n\
+	 (! n mpz\n\
+	 (! x bv\n\
+	 (! y bv\n\
+	 (! c (^ (bv_constants_are_disequal x y) true)\n\
+  	   (th_holds (not (= (BitVec n) (a_bv n x) (a_bv n y)))))))))\n\
+\n\
+; a bv variable\n\
+(declare var_bv type)\n\
+; a bv variable term\n\
+(declare a_var_bv\n\
+	 (! n mpz\n\
+	 (! v var_bv\n\
+	    (term (BitVec n)))))\n\
+\n\
+; bit vector binary operators\n\
+(define bvop2\n\
+	(! n mpz\n\
+	(! x (term (BitVec n))\n\
+        (! y (term (BitVec n))\n\
+             	   (term (BitVec n))))))\n\
+\n\
+(declare bvand bvop2)\n\
+(declare bvor bvop2)\n\
+(declare bvor bvop2)\n\
+(declare bvxor bvop2)\n\
+(declare bvnand bvop2)\n\
+(declare bvnor bvop2)\n\
+(declare bvxnor bvop2)\n\
+(declare bvmul bvop2)\n\
+(declare bvadd bvop2)\n\
+(declare bvsub bvop2)\n\
+(declare bvudiv bvop2)\n\
+(declare bvurem bvop2)\n\
+(declare bvsdiv bvop2)\n\
+(declare bvsrem bvop2)\n\
+(declare bvsmod bvop2)\n\
+(declare bvshl bvop2)\n\
+(declare bvlshr bvop2)\n\
+(declare bvashr bvop2)\n\
+(declare concat bvop2)\n\
+\n\
+; bit vector unary operators\n\
+(define bvop1\n\
+	(! n mpz\n\
+	(! x (term (BitVec n))\n\
+             	   (term (BitVec n)))))\n\
+\n\
+\n\
+(declare bvneg bvop1)\n\
+(declare bvnot bvop1)\n\
+(declare rotate_left  bvop1)\n\
+(declare rotate_right bvop1)\n\
+\n\
+(declare bvcomp\n\
+	 (! n mpz\n\
+ 	 (! t1 (term (BitVec n))\n\
+	 (! t2 (term (BitVec n))\n\
+	    (term (BitVec 1))))))\n\
+\n\
+\n\
+(declare concat\n\
+	 (! n mpz\n\
+	 (! m mpz\n\
+	 (! m' mpz\n\
+	 (! t1 (term (BitVec m))\n\
+	 (! t2 (term (BitVec m'))\n\
+	    (term (BitVec n))))))))\n\
+\n\
+;; side-condition fails in signature only??\n\
+;;	 (! s (^ (mp_add m m') n)\n\
+\n\
+;; (declare repeat bvopp)\n\
+\n\
+(declare extract\n\
+	 (! n mpz\n\
+	 (! i mpz\n\
+	 (! j mpz\n\
+	 (! m mpz\n\
+	 (! t2 (term (BitVec m))\n\
+	    (term (BitVec n))))))))\n\
+\n\
+(declare zero_extend\n\
+	 (! n mpz\n\
+	 (! i mpz\n\
+	 (! m mpz\n\
+	 (! t2 (term (BitVec m))\n\
+	    (term (BitVec n)))))))\n\
+\n\
+(declare sign_extend\n\
+	 (! n mpz\n\
+	 (! i mpz\n\
+	 (! m mpz\n\
+	 (! t2 (term (BitVec m))\n\
+	    (term (BitVec n)))))))\n\
+\n\
+(declare repeat\n\
+	 (! n mpz\n\
+	 (! i mpz\n\
+	 (! m mpz\n\
+	 (! t2 (term (BitVec m))\n\
+	    (term (BitVec n)))))))\n\
+\n\
+\n\
+\n\
+;; TODO: add checks for valid typing for these operators\n\
+;; (! c1 (^ (mpz_lte i j)\n\
+;; (! c2 (^ (mpz_lt i n) true)\n\
+;; (! c3 (^ (mp_ifneg i false true) true)\n\
+;; (! c4 (^ (mp_ifneg j false true) true)\n\
+;; (! s (^ (mp_add (mpz_sub i j) 1) m)\n\
+\n\
+\n\
+; bit vector predicates\n\
+(define bvpred\n\
+	(! n mpz\n\
+	(! x (term (BitVec n))\n\
+	(! y (term (BitVec n))\n\
+	           formula))))\n\
+\n\
+(declare bvult bvpred)\n\
+(declare bvule bvpred)\n\
+(declare bvugt bvpred)\n\
+(declare bvuge bvpred)\n\
+(declare bvslt bvpred)\n\
+(declare bvsle bvpred)\n\
+(declare bvsgt bvpred)\n\
+(declare bvsge bvpred)\n\
+; bit blasted terms as list of formulas\n\
+(declare bblt type)\n\
+(declare bbltn bblt)\n\
+(declare bbltc (! f formula (! v bblt bblt)))\n\
+\n\
+; calculate the length of a bit-blasted term\n\
+(program bblt_len ((v bblt)) mpz\n\
+  (match v\n\
+    (bbltn 0)\n\
+    ((bbltc b v') (mp_add (bblt_len v') 1))))\n\
+\n\
+\n\
+; (bblast_term x y) means term y corresponds to bit level interpretation x\n\
+(declare bblast_term\n\
+	 (! n mpz\n\
+	 (! x (term (BitVec n))\n\
+	 (! y bblt\n\
+	    type))))\n\
+\n\
+; FIXME: for unsupported bit-blast terms\n\
+(declare trust_bblast_term\n\
+	 (! n mpz\n\
+	 (! x (term (BitVec n))\n\
+	 (! y bblt\n\
+	    (bblast_term n x y)))))\n\
+\n\
+\n\
+; Binds a symbol to the bblast_term to be used later on.\n\
+(declare decl_bblast\n\
+	 (! n mpz\n\
+	 (! b bblt\n\
+	 (! t (term (BitVec n))\n\
+	 (! bb (bblast_term n t b)\n\
+	 (! s (^ (bblt_len b) n)\n\
+	 (! u (! v (bblast_term n t b) (holds cln))\n\
+		   (holds cln))))))))\n\
+\n\
+(declare decl_bblast_with_alias\n\
+	 (! n mpz\n\
+	 (! b bblt\n\
+	 (! t (term (BitVec n))\n\
+	 (! a (term (BitVec n))\n\
+	 (! bb (bblast_term n t b)\n\
+	 (! e (th_holds (= _ t a))\n\
+	 (! s (^ (bblt_len b) n)\n\
+	 (! u (! v (bblast_term n a b) (holds cln))\n\
+		   (holds cln))))))))))\n\
+\n\
+; a predicate to represent the n^th bit of a bitvector term\n\
+(declare bitof\n\
+	 (! x var_bv\n\
+	 (! n mpz formula)))\n\
+\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;;\n\
+;;           BITBLASTING RULES\n\
+;;\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;; BITBLAST CONSTANT\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+(program bblast_const ((v bv) (n mpz)) bblt\n\
+  (mp_ifneg n (match v (bvn bbltn)\n\
+                       (default (fail bblt)))\n\
+              (match v ((bvc b v') (bbltc (match b (b0 false) (b1 true)) (bblast_const v' (mp_add n (~ 1)))))\n\
+                       (default (fail bblt)))))\n\
+\n\
+(declare bv_bbl_const (! n mpz\n\
+                      (! f bblt\n\
+                      (! v bv\n\
+                      (! c (^ (bblast_const v (mp_add n (~ 1))) f)\n\
+                           (bblast_term n (a_bv n v) f))))))\n\
+\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;; BITBLAST VARIABLE\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+(program bblast_var ((x var_bv) (n mpz)) bblt\n\
+  (mp_ifneg n bbltn\n\
+              (bbltc (bitof x n) (bblast_var x (mp_add n (~ 1))))))\n\
+\n\
+(declare bv_bbl_var (! n mpz\n\
+                    (! x var_bv\n\
+                    (! f bblt\n\
+                    (! c (^ (bblast_var x (mp_add n (~ 1))) f)\n\
+                         (bblast_term n (a_var_bv n x) f))))))\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;; BITBLAST CONCAT\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+(program bblast_concat ((x bblt) (y bblt)) bblt\n\
+  (match x\n\
+    (bbltn (match y ((bbltc by y') (bbltc by (bblast_concat x y')))\n\
+    	   	    (bbltn bbltn)))\n\
+    ((bbltc bx x') (bbltc bx (bblast_concat x' y)))))\n\
+\n\
+(declare bv_bbl_concat (! n mpz\n\
+	 	       (! m mpz\n\
+		       (! m1 mpz\n\
+                       (! x (term (BitVec m))\n\
+		       (! y (term (BitVec m1))\n\
+		       (! xb bblt\n\
+		       (! yb bblt\n\
+		       (! rb bblt\n\
+		       (! xbb (bblast_term m x xb)\n\
+		       (! ybb (bblast_term m1 y yb)\n\
+                       (! c (^ (bblast_concat xb yb ) rb)\n\
+                           (bblast_term n (concat n m m1 x y) rb)))))))))))))\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;; BITBLAST EXTRACT\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+(program bblast_extract_rec ((x bblt) (i mpz) (j mpz) (n mpz)) bblt\n\
+  (match x\n\
+    ((bbltc bx x') (mp_ifneg (mpz_sub (mpz_sub j n) 1)\n\
+    	       	   	     (mp_ifneg (mpz_sub (mpz_sub n i) 1)\n\
+			    	  	  (bbltc bx (bblast_extract_rec x' i j (mpz_sub n 1)))\n\
+					  (bblast_extract_rec x' i j (mpz_sub n 1)))\n\
+\n\
+			     bbltn))\n\
+   (bbltn bbltn)))\n\
+\n\
+(program bblast_extract ((x bblt) (i mpz) (j mpz) (n mpz)) bblt\n\
+ (bblast_extract_rec x i j (mpz_sub n 1)))\n\
+\n\
+(declare bv_bbl_extract (! n mpz\n\
+			(! i mpz\n\
+			(! j mpz\n\
+			(! m mpz\n\
+                       	(! x (term (BitVec m))\n\
+		       	(! xb bblt\n\
+		       	(! rb bblt\n\
+		       	(! xbb (bblast_term m x xb)\n\
+			(! c ( ^ (bblast_extract xb i j m) rb)\n\
+                           (bblast_term n (extract n i j m x) rb)))))))))))\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;; BITBLAST ZERO/SIGN EXTEND\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+(program extend_rec ((x bblt) (i mpz) (b formula)) bblt\n\
+  (mp_ifneg i x\n\
+  	    (bbltc b (extend_rec x (mpz_sub i 1) b)))))\n\
+\n\
+(program bblast_zextend ((x bblt) (i mpz)) bblt\n\
+ (extend_rec x (mpz_sub i 1) false))\n\
+\n\
+(declare bv_bbl_zero_extend (! n mpz\n\
+			(! k mpz\n\
+			(! m mpz\n\
+                       	(! x (term (BitVec m))\n\
+		       	(! xb bblt\n\
+		       	(! rb bblt\n\
+		       	(! xbb (bblast_term m x xb)\n\
+			(! c ( ^ (bblast_zextend xb k m) rb)\n\
+                           (bblast_term n (zero_extend n k m x) rb))))))))))\n\
+\n\
+(program bblast_sextend ((x bblt) (i mpz)) bblt\n\
+ (match x (bbltn (fail bblt))\n\
+ 	  ((bbltc xb x') (extend_rec x (mpz_sub i 1) xb))))\n\
+\n\
+(declare bv_bbl_sign_extend (! n mpz\n\
+			(! k mpz\n\
+			(! m mpz\n\
+                       	(! x (term (BitVec m))\n\
+		       	(! xb bblt\n\
+		       	(! rb bblt\n\
+		       	(! xbb (bblast_term m x xb)\n\
+			(! c ( ^ (bblast_sextend xb k m) rb)\n\
+                           (bblast_term n (sign_extend n k m x) rb))))))))))\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;; BITBLAST BVAND\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+(program bblast_bvand ((x bblt) (y bblt)) bblt\n\
+  (match x\n\
+    (bbltn (match y (bbltn bbltn) (default (fail bblt))))\n\
+    ((bbltc bx x') (match y\n\
+                      (bbltn (fail bblt))\n\
+                      ((bbltc by y') (bbltc (and bx by) (bblast_bvand x' y')))))))\n\
+\n\
+(declare bv_bbl_bvand (! n mpz\n\
+                      (! x (term (BitVec n))\n\
+		      (! y (term (BitVec n))\n\
+		      (! xb bblt\n\
+		      (! yb bblt\n\
+		      (! rb bblt\n\
+		      (! xbb (bblast_term n x xb)\n\
+		      (! ybb (bblast_term n y yb)\n\
+                      (! c (^ (bblast_bvand xb yb ) rb)\n\
+                           (bblast_term n (bvand n x y) rb)))))))))))\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;; BITBLAST BVNOT\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+(program bblast_bvnot ((x bblt)) bblt\n\
+  (match x\n\
+    (bbltn bbltn)\n\
+    ((bbltc bx x') (bbltc (not bx) (bblast_bvnot x')))))\n\
+\n\
+(declare bv_bbl_bvnot (! n mpz\n\
+                      (! x (term (BitVec n))\n\
+		      (! xb bblt\n\
+		      (! rb bblt\n\
+		      (! xbb (bblast_term n x xb)\n\
+                      (! c (^ (bblast_bvnot xb ) rb)\n\
+                           (bblast_term n (bvnot n x) rb))))))))\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;; BITBLAST BVOR\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+(program bblast_bvor ((x bblt) (y bblt)) bblt\n\
+  (match x\n\
+    (bbltn (match y (bbltn bbltn) (default (fail bblt))))\n\
+    ((bbltc bx x') (match y\n\
+                      (bbltn (fail bblt))\n\
+                      ((bbltc by y') (bbltc (or bx by) (bblast_bvor x' y')))))))\n\
+\n\
+(declare bv_bbl_bvor (! n mpz\n\
+                      (! x (term (BitVec n))\n\
+		      (! y (term (BitVec n))\n\
+		      (! xb bblt\n\
+		      (! yb bblt\n\
+		      (! rb bblt\n\
+		      (! xbb (bblast_term n x xb)\n\
+		      (! ybb (bblast_term n y yb)\n\
+                      (! c (^ (bblast_bvor xb yb ) rb)\n\
+                           (bblast_term n (bvor n x y) rb)))))))))))\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;; BITBLAST BVXOR\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+(program bblast_bvxor ((x bblt) (y bblt)) bblt\n\
+  (match x\n\
+    (bbltn (match y (bbltn bbltn) (default (fail bblt))))\n\
+    ((bbltc bx x') (match y\n\
+                      (bbltn (fail bblt))\n\
+                      ((bbltc by y') (bbltc (xor bx by) (bblast_bvxor x' y')))))))\n\
+\n\
+(declare bv_bbl_bvxor (! n mpz\n\
+                      (! x (term (BitVec n))\n\
+		      (! y (term (BitVec n))\n\
+		      (! xb bblt\n\
+		      (! yb bblt\n\
+		      (! rb bblt\n\
+		      (! xbb (bblast_term n x xb)\n\
+		      (! ybb (bblast_term n y yb)\n\
+                      (! c (^ (bblast_bvxor xb yb ) rb)\n\
+                           (bblast_term n (bvxor n x y) rb)))))))))))\n\
+\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;; BITBLAST BVADD\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+;; return the carry bit after adding x y\n\
+;; FIXME: not the most efficient thing in the world\n\
+(program bblast_bvadd_carry ((a bblt) (b bblt) (carry formula)) formula\n\
+(match a\n\
+  ( bbltn (match b (bbltn carry) (default (fail formula))))\n\
+  ((bbltc ai a') (match b\n\
+  	     	   (bbltn (fail formula))\n\
+	 	   ((bbltc bi b') (or (and ai bi) (and (xor ai bi) (bblast_bvadd_carry a' b' carry))))))))\n\
+\n\
+;; ripple carry adder where carry is the initial carry bit\n\
+(program bblast_bvadd ((a bblt) (b bblt) (carry formula)) bblt\n\
+(match a\n\
+  ( bbltn (match b (bbltn bbltn) (default (fail bblt))))\n\
+  ((bbltc ai a') (match b\n\
+  	     	   (bbltn (fail bblt))\n\
+	 	   ((bbltc bi b') (bbltc (xor (xor ai bi) (bblast_bvadd_carry a' b' carry))\n\
+				  	 (bblast_bvadd a' b' carry)))))))\n\
+\n\
+\n\
+(program reverse_help ((x bblt) (acc bblt)) bblt\n\
+(match x\n\
+       (bbltn acc)\n\
+       ((bbltc xi x') (reverse_help x' (bbltc xi acc)))))\n\
+\n\
+\n\
+(program reverseb ((x bblt)) bblt\n\
+	 (reverse_help x bbltn))\n\
+\n\
+\n\
+; AJR: use this version?\n\
+;(program bblast_bvadd_2h ((a bblt) (b bblt) (carry formula)) bblt\n\
+;(match a\n\
+;  ( bbltn (match b (bbltn bbltn) (default (fail bblt))))\n\
+;  ((bbltc ai a') (match b\n\
+;       (bbltn (fail bblt))\n\
+;	 	   ((bbltc bi b')\n\
+;	 	     (let carry' (or (and ai bi) (and (xor ai bi) carry))\n\
+;	 	     (bbltc (xor (xor ai bi) carry)\n\
+;				  	    (bblast_bvadd_2h a' b' carry'))))))))\n\
+\n\
+;(program bblast_bvadd_2 ((a bblt) (b bblt) (carry formula)) bblt\n\
+;(let ar (reverseb a) ;; reverse a and b so that we can build the circuit\n\
+;(let br (reverseb b) ;; from the least significant bit up\n\
+;(let ret (bblast_bvadd_2h ar br carry)\n\
+;  (reverseb ret)))))\n\
+\n\
+(declare bv_bbl_bvadd (! n mpz\n\
+                      (! x (term (BitVec n))\n\
+		      (! y (term (BitVec n))\n\
+		      (! xb bblt\n\
+		      (! yb bblt\n\
+		      (! rb bblt\n\
+		      (! xbb (bblast_term n x xb)\n\
+		      (! ybb (bblast_term n y yb)\n\
+                      (! c (^ (bblast_bvadd xb yb false) rb)\n\
+                           (bblast_term n (bvadd n x y) rb)))))))))))\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;; BITBLAST BVNEG\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+(program bblast_zero ((n mpz)) bblt\n\
+(mp_ifzero n bbltn\n\
+	     (bbltc false (bblast_zero (mp_add n (~1))))))\n\
+\n\
+(program bblast_bvneg ((x bblt) (n mpz)) bblt\n\
+  (bblast_bvadd (bblast_bvnot x) (bblast_zero n) true))\n\
+\n\
+\n\
+(declare bv_bbl_bvneg (! n mpz\n\
+                      (! x (term (BitVec n))\n\
+		      (! xb bblt\n\
+		      (! rb bblt\n\
+		      (! xbb (bblast_term n x xb)\n\
+                      (! c (^ (bblast_bvneg xb n) rb)\n\
+                           (bblast_term n (bvneg n x) rb))))))))\n\
+\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;; BITBLAST BVMUL\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+\n\
+;; shift add multiplier\n\
+\n\
+;; (program concat ((a bblt) (b bblt)) bblt\n\
+;;   (match a (bbltn b)\n\
+;;   	   ((bbltc ai a') (bbltc ai (concat a' b)))))\n\
+\n\
+\n\
+(program top_k_bits ((a bblt) (k mpz)) bblt\n\
+  (mp_ifzero k bbltn\n\
+  	     (match a (bbltn (fail bblt))\n\
+	     	      ((bbltc ai a') (bbltc ai (top_k_bits a' (mpz_sub k 1)))))))\n\
+\n\
+(program bottom_k_bits ((a bblt) (k mpz)) bblt\n\
+ (reverseb (top_k_bits (reverseb a) k)))\n\
+\n\
+;; assumes the least signigicant bit is at the beginning of the list\n\
+(program k_bit ((a bblt) (k mpz)) formula\n\
+(mp_ifneg k (fail formula)\n\
+(match a (bbltn (fail formula))\n\
+         ((bbltc ai a') (mp_ifzero k ai (k_bit a' (mpz_sub k 1)))))))\n\
+\n\
+(program and_with_bit ((a bblt) (bt formula)) bblt\n\
+(match a (bbltn bbltn)\n\
+         ((bbltc ai a') (bbltc (and bt ai) (and_with_bit a' bt)))))\n\
+\n\
+;; a is going to be the current result\n\
+;; carry is going to be false initially\n\
+;; b is the and of a and b[k]\n\
+;; res is going to be bbltn initially\n\
+(program mult_step_k_h ((a bblt) (b bblt) (res bblt) (carry formula) (k mpz)) bblt\n\
+(match a\n\
+  (bbltn (match b (bbltn res) (default (fail bblt))))\n\
+  ((bbltc ai a')\n\
+    (match b (bbltn (fail bblt))\n\
+             ((bbltc bi b')\n\
+	     (mp_ifneg (mpz_sub k 1)\n\
+	     	         (let carry_out (or (and ai bi) (and (xor ai bi) carry))\n\
+			 (let curr (xor (xor ai bi) carry)\n\
+			    (mult_step_k_h a' b' (bbltc curr res) carry_out (mpz_sub k 1))))\n\
+			 (mult_step_k_h a' b (bbltc ai res) carry (mpz_sub k 1))\n\
+))))))\n\
+\n\
+;; assumes that a, b and res have already been reversed\n\
+(program mult_step ((a bblt) (b bblt) (res bblt) (n mpz) (k mpz)) bblt\n\
+(let k' (mpz_sub n k )\n\
+(let ak (top_k_bits a k')\n\
+(let b' (and_with_bit ak (k_bit b k))\n\
+ (mp_ifzero (mpz_sub k' 1)\n\
+   (mult_step_k_h res b' bbltn false k)\n\
+   (let res' (mult_step_k_h res b' bbltn false k)\n\
+   (mult_step a b (reverseb res') n (mp_add k 1))))))))\n\
+\n\
+\n\
+(program bblast_bvmul ((a bblt) (b bblt) (n mpz)) bblt\n\
+(let ar (reverseb a) ;; reverse a and b so that we can build the circuit\n\
+(let br (reverseb b) ;; from the least significant bit up\n\
+(let res (and_with_bit ar (k_bit br 0))\n\
+     (mp_ifzero (mpz_sub n 1)     ;; if multiplying 1 bit numbers no need to call mult_step\n\
+     		res\n\
+		(mult_step ar br res n 1))))))\n\
+\n\
+(declare bv_bbl_bvmul (! n mpz\n\
+                      (! x (term (BitVec n))\n\
+		      (! y (term (BitVec n))\n\
+		      (! xb bblt\n\
+		      (! yb bblt\n\
+		      (! rb bblt\n\
+		      (! xbb (bblast_term n x xb)\n\
+		      (! ybb (bblast_term n y yb)\n\
+                      (! c (^ (bblast_bvmul xb yb n) rb)\n\
+                           (bblast_term n (bvmul n x y) rb)))))))))))\n\
+\n\
+\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;; BITBLAST EQUALS\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+; bit blast  x = y\n\
+; for x,y of size n, it will return a conjuction (x.0 = y.0 ^ ( ... ^ (x.{n-1} = y.{n-1})))\n\
+; f is the accumulator formula that builds the equality in the right order\n\
+(program bblast_eq_rec ((x bblt) (y bblt) (f formula)) formula\n\
+  (match x\n\
+    (bbltn (match y (bbltn f) (default (fail formula))))\n\
+    ((bbltc fx x') (match y\n\
+                      (bbltn (fail formula))\n\
+                      ((bbltc fy y') (bblast_eq_rec x' y' (and (iff fx fy) f)))))\n\
+    (default (fail formula))))\n\
+\n\
+(program bblast_eq ((x bblt) (y bblt)) formula\n\
+	 (match x\n\
+	 	((bbltc bx x') (match y ((bbltc by y') (bblast_eq_rec x' y' (iff bx by)))\n\
+			       	      	(default (fail formula))))\n\
+		(default (fail formula))))\n\
+\n\
+\n\
+;; TODO: a temporary bypass for rewrites that we don't support yet. As soon\n\
+;; as we do, remove this rule.\n\
+\n\
+(declare bv_bbl_=_false\n\
+	 (! n mpz\n\
+	 (! x (term (BitVec n))\n\
+         (! y (term (BitVec n))\n\
+         (! bx bblt\n\
+         (! by bblt\n\
+         (! f formula\n\
+         (! bbx (bblast_term n x bx)\n\
+         (! bby (bblast_term n y by)\n\
+         (! c (^ (bblast_eq bx by) f)\n\
+            (th_holds (iff (= (BitVec n) x y) false))))))))))))\n\
+\n\
+(declare bv_bbl_=\n\
+	 (! n mpz\n\
+	 (! x (term (BitVec n))\n\
+         (! y (term (BitVec n))\n\
+         (! bx bblt\n\
+         (! by bblt\n\
+         (! f formula\n\
+         (! bbx (bblast_term n x bx)\n\
+         (! bby (bblast_term n y by)\n\
+         (! c (^ (bblast_eq bx by) f)\n\
+            (th_holds (iff (= (BitVec n) x y) f))))))))))))\n\
+\n\
+(declare bv_bbl_=_swap\n\
+	 (! n mpz\n\
+	 (! x (term (BitVec n))\n\
+         (! y (term (BitVec n))\n\
+         (! bx bblt\n\
+         (! by bblt\n\
+         (! f formula\n\
+         (! bbx (bblast_term n x bx)\n\
+         (! bby (bblast_term n y by)\n\
+         (! c (^ (bblast_eq by bx) f)\n\
+            (th_holds (iff (= (BitVec n) x y) f))))))))))))\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;; BITBLAST BVULT\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+(program bblast_bvult ((x bblt) (y bblt) (n mpz)) formula\n\
+(match x\n\
+  ( bbltn (fail formula))\n\
+  ((bbltc xi x') (match y\n\
+  	     	   (bbltn (fail formula))\n\
+	 	   ((bbltc yi y') (mp_ifzero n\n\
+		                    (and (not xi) yi)\n\
+				    (or (and (iff xi yi) (bblast_bvult x' y' (mp_add n (~1)))) (and (not xi) yi))))))))\n\
+\n\
+(declare bv_bbl_bvult\n\
+	 (! n mpz\n\
+	 (! x (term (BitVec n))\n\
+         (! y (term (BitVec n))\n\
+         (! bx bblt\n\
+         (! by bblt\n\
+         (! f formula\n\
+         (! bbx (bblast_term n x bx)\n\
+         (! bby (bblast_term n y by)\n\
+         (! c (^ (bblast_bvult bx by (mp_add n (~1))) f)\n\
+            (th_holds (iff (bvult n x y) f))))))))))))\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;; BITBLAST BVSLT\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+(program bblast_bvslt ((x bblt) (y bblt) (n mpz)) formula\n\
+(match x\n\
+  ( bbltn (fail formula))\n\
+  ((bbltc xi x') (match y\n\
+  	     	   (bbltn (fail formula))\n\
+	 	   ((bbltc yi y') (mp_ifzero (mpz_sub n 1)\n\
+		   	      	  	     (and xi (not yi))\n\
+		   	      		     (or (and (iff xi yi)\n\
+					     	      (bblast_bvult x' y' (mpz_sub n 2)))\n\
+					     	 (and xi (not yi)))))))))\n\
+\n\
+(declare bv_bbl_bvslt\n\
+	 (! n mpz\n\
+	 (! x (term (BitVec n))\n\
+         (! y (term (BitVec n))\n\
+         (! bx bblt\n\
+         (! by bblt\n\
+         (! f formula\n\
+         (! bbx (bblast_term n x bx)\n\
+         (! bby (bblast_term n y by)\n\
+         (! c (^ (bblast_bvslt bx by n) f)\n\
+            (th_holds (iff (bvslt n x y) f))))))))))))\n\
+\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;; BITBLAST BVCOMP\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+(program bblast_bvcomp ((x bblt) (y bblt) (n mpz)) bblt\n\
+  (match x ((bbltc bx x') (match y ((bbltc by y')\n\
+  	   	                      (bbltc (bblast_eq_rec x' y' (iff bx by)) bbltn))\n\
+                                   (default (fail bblt))))\n\
+           (default (fail bblt))\n\
+	   ))\n\
+\n\
+(declare bv_bbl_bvcomp (! n mpz\n\
+                       (! x (term (BitVec n))\n\
+		       (! y (term (BitVec n))\n\
+		       (! xb bblt\n\
+		       (! yb bblt\n\
+		       (! rb bblt\n\
+		       (! xbb (bblast_term n x xb)\n\
+		       (! ybb (bblast_term n y yb)\n\
+                       (! c (^ (bblast_bvcomp xb yb n) rb)\n\
+                              (bblast_term 1 (bvcomp n x y) rb)))))))))))\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;;\n\
+;;           BITBLASTING CONNECTORS\n\
+;;\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+\n\
+; bit-blasting connections\n\
+\n\
+(declare intro_assump_t\n\
+	 (! f formula\n\
+	 (! v var\n\
+	 (! C clause\n\
+	 (! h (th_holds f)\n\
+	 (! a (atom v f)\n\
+	 (! u (! unit (holds (clc (pos v) cln))\n\
+	      	 (holds C))\n\
+	 (holds C))))))))\n\
+\n\
+(declare intro_assump_f\n\
+	 (! f formula\n\
+	 (! v var\n\
+	 (! C clause\n\
+	 (! h (th_holds (not f))\n\
+	 (! a (atom v f)\n\
+	 (! u (! unit (holds (clc (neg v) cln))\n\
+	      	 (holds C))\n\
+	 (holds C))))))))\n\
+\n\
+\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+;;\n\
+;;           REWRITE RULES\n\
+;;\n\
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
+\n\
+\n\
+; rewrite rule :\n\
+; x + y = y + x\n\
+(declare bvadd_symm\n\
+	 (! n mpz\n\
+	 (! x (term (BitVec n))\n\
+	 (! y (term (BitVec n))\n\
+	    (th_holds (= (BitVec n) (bvadd _ x y) (bvadd _ y x)))))))\n\
+\n\
+;; (declare bvcrazy_rewrite\n\
+;; 	 (! n mpz\n\
+;; 	 (! x (term (BitVec n))\n\
+;; 	 (! y (term (BitVec n))\n\
+;; 	 (! xn bv_poly\n\
+;; 	 (! yn bv_poly\n\
+;; 	 (! hxn (bv_normalizes x xn)\n\
+;; 	 (! hyn (bv_normalizes y yn)\n\
+;; 	 (! s (^ (rewrite_scc xn yn) true)\n\
+;; 	 (! u (! x (term (BitVec n)) (holds cln))\n\
+;; 	     (holds cln)))))))))))\n\
+\n\
+;; 	    (th_holds (= (BitVec n) (bvadd x y) (bvadd y x)))))))\n\
+\n\
+\n\
+\n\
+; necessary?\n\
+;; (program calc_bvand ((a bv) (b bv)) bv\n\
+;;   (match a\n\
+;;     (bvn (match b (bvn bvn) (default (fail bv))))\n\
+;;     ((bvc ba a') (match b\n\
+;;                       ((bvc bb b') (bvc (match ba (b0 b0) (b1 bb)) (calc_bvand a' b')))\n\
+;;                       (default (fail bv))))))\n\
+\n\
+;; ; rewrite rule (w constants) :\n\
+;; ; a & b = c\n\
+;; (declare bvand_const (! c bv\n\
+;; 		     (! a bv\n\
+;;                      (! b bv\n\
+;;                      (! u (^ (calc_bvand a b) c)\n\
+;;                         (th_holds (= BitVec (bvand (a_bv a) (a_bv b)) (a_bv c))))))))\n\
+\n\
+\n\
+;; making constant bit-vectors\n\
+(program mk_ones ((n mpz)) bv\n\
+	(mp_ifzero n bvn (bvc b1 (mk_ones (mpz_sub n 1)))))\n\
+\n\
+(program mk_zero ((n mpz)) bv\n\
+	(mp_ifzero n bvn (bvc b0 (mk_ones (mpz_sub n 1)))))\n\
+\n\
+\n\
+\n\
+;; (bvxnor a b) => (bvnot (bvxor a b))\n\
+;; (declare bvxnor_elim\n\
+;; 	 (! n mpz\n\
+;; 	 (! a (term (BitVec n))\n\
+;; 	 (! b (term (BitVec n))\n\
+;; 	 (! a' (term (BitVec n))\n\
+;; 	 (! b' (term (BitVec n))\n\
+;; 	 (! rwa (rw_term _ a a')\n\
+;; 	 (! rwb (rw_term _ b b')\n\
+;; 	 (rw_term n (bvxnor _ a b)\n\
+;; 	 	  (bvnot _ (bvxor _ a' b')))))))))))\n\
+\n\
+\n\
+\n\
+;; ;; (bvxor a 0) => a\n\
+;; (declare bvxor_zero\n\
+;; 	 (! n mpz\n\
+;; 	 (! zero_bits bv\n\
+;; 	 (! sc (^ (mk_zero n)  zero_bits)\n\
+;; 	 (! a (term (BitVec n))\n\
+;; 	 (! b (term (BitVec n))\n\
+;; 	 (! a' (term (BitVec n))\n\
+;; 	 (! rwa (rw_term _  a a')\n\
+;; 	 (! rwb (rw_term _ b (a_bv _ zero_bits))\n\
+;; 	 (rw_term _  (bvxor _ a b)\n\
+;; 	 	  a'))))))))))\n\
+\n\
+;; ;; (bvxor a 11) => (bvnot a)\n\
+;; (declare bvxor_one\n\
+;; 	 (! n mpz\n\
+;; 	 (! one_bits bv\n\
+;; 	 (! sc (^ (mk_ones n)  one_bits)\n\
+;; 	 (! a (term (BitVec n))\n\
+;; 	 (! b (term (BitVec n))\n\
+;; 	 (! a' (term (BitVec n))\n\
+;; 	 (! rwa (rw_term _  a a')\n\
+;; 	 (! rwb (rw_term _  b (a_bv _ one_bits))\n\
+;; 	 (rw_term _ (bvxor _ a b)\n\
+;; 	 	  (bvnot _ a')))))))))))\n\
+\n\
+\n\
+;; ;; (bvnot (bvnot a)) => a\n\
+;; (declare bvnot_idemp\n\
+;; 	 (! n mpz\n\
+;; 	 (! a (term (BitVec n))\n\
+;; 	 (! a' (term (BitVec n))\n\
+;; 	 (! rwa (rw_term _  a a')\n\
+;; 	 (rw_term _ (bvnot _ (bvnot _ a))\n\
+;; 	 	  a'))))))\n\
+;\n\
+; Equality swap\n\
+;\n\
+\n\
+(declare rr_bv_eq\n\
+	 (! n mpz\n\
+	 (! t1 (term (BitVec n))\n\
+ 	 (! t2 (term (BitVec n))\n\
+	     (th_holds (iff (= (BitVec n) t2 t1) (= (BitVec n) t1 t2)))))))\n\
+\n\
+;\n\
+; Additional rules...\n\
+;\n\
+\n\
+;\n\
+; Default, if nothing else applied\n\
+;\n\
+\n\
+(declare rr_bv_default\n\
+	 (! t1 formula\n\
+ 	 (! t2 formula\n\
+	     (th_holds (iff t1 t2))))))\n\
+(declare Real sort)\n\
+\n\
+(define arithpred_Real (! x (term Real)\n\
+                       (! y (term Real)\n\
+                         formula)))\n\
+\n\
+(declare >_Real arithpred_Real)\n\
+(declare >=_Real arithpred_Real)\n\
+(declare <_Real  arithpred_Real)\n\
+(declare <=_Real arithpred_Real)\n\
+\n\
+(define arithterm_Real (! x (term Real)\n\
+                       (! y (term Real)\n\
+                         (term Real))))\n\
+\n\
+(declare +_Real arithterm_Real)\n\
+(declare -_Real arithterm_Real)\n\
+(declare *_Real arithterm_Real)  ; is * ok to use?\n\
+(declare /_Real arithterm_Real)  ; is / ok to use?\n\
+\n\
+; a constant term\n\
+(declare a_real (! x mpq (term Real)))\n\
+\n\
+; unary negation\n\
+(declare u-_Real (! t (term Real) (term Real)))\n\
+(declare Int sort)\n\
+\n\
+(define arithpred_Int (! x (term Int)\n\
+                      (! y (term Int)\n\
+                        formula)))\n\
+\n\
+(declare >_Int arithpred_Int)\n\
+(declare >=_Int arithpred_Int)\n\
+(declare <_Int  arithpred_Int)\n\
+(declare <=_Int arithpred_Int)\n\
+\n\
+(define arithterm_Int (! x (term Int)\n\
+		      (! y (term Int)\n\
+		        (term Int))))\n\
+\n\
+(declare +_Int arithterm_Int)\n\
+(declare -_Int arithterm_Int)\n\
+(declare *_Int arithterm_Int)  ; is * ok to use?\n\
+(declare /_Int arithterm_Int)  ; is / ok to use?\n\
+\n\
+; a constant term\n\
+(declare a_int (! x mpz (term Int)))\n\
+\n\
+; unary negation\n\
+(declare u-_Int (! t (term Int) (term Int)))\n\
+";
+
+} /* CVC4::proof namespace */
+} /* CVC4 namespace */
diff --git a/proofs/signatures/smt.plf b/proofs/signatures/smt.plf
new file mode 100644
index 0000000..38428dd
--- /dev/null
+++ b/proofs/signatures/smt.plf
@@ -0,0 +1,449 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;
+; SMT syntax and semantics (not theory-specific)
+;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; depends on sat.plf
+
+(declare formula type)
+(declare th_holds (! f formula type))
+
+; standard logic definitions
+(declare true formula)
+(declare false formula)
+
+(define formula_op1
+	(! f formula
+	formula))
+
+(define formula_op2
+	(! f1 formula
+	(! f2 formula
+	   formula)))
+
+(define formula_op3
+	(! f1 formula
+	(! f2 formula
+	(! f3 formula
+	   formula))))
+
+(declare not formula_op1)
+(declare and formula_op2)
+(declare or formula_op2)
+(declare impl formula_op2)
+(declare iff formula_op2)
+(declare xor formula_op2)
+(declare ifte formula_op3)
+
+; terms
+(declare sort type)
+(declare term (! t sort type))	; declared terms in formula
+
+; standard definitions for =, ite, let and flet
+(declare = (! s sort
+           (! x (term s)
+           (! y (term s)
+             formula))))
+(declare ite (! s sort
+             (! f formula
+             (! t1 (term s)
+             (! t2 (term s)
+               (term s))))))
+(declare let (! s sort
+             (! t (term s)
+             (! f (! v (term s) formula)
+               formula))))
+(declare flet (! f1 formula
+              (! f2 (! v formula formula)
+                formula)))
+
+; We view applications of predicates as terms of sort "Bool".
+; Such terms can be injected as atomic formulas using "p_app".
+(declare Bool sort)				; the special sort for predicates
+(declare p_app (! x (term Bool) formula))	; propositional application of term
+
+; boolean terms
+(declare t_true (term Bool))
+(declare t_false (term Bool))
+(declare t_t_neq_f
+ (th_holds (not (= Bool t_true t_false))))
+(declare pred_eq_t
+ (! x (term Bool)
+ (! u (th_holds (p_app x))
+   (th_holds (= Bool x t_true)))))
+(declare pred_eq_f
+ (! x (term Bool)
+ (! u (th_holds (not (p_app x)))
+   (th_holds (= Bool x t_false)))))
+
+(declare f_to_b
+  (! f formula
+    (term Bool)))
+
+(declare true_preds_equal
+  (! x1 (term Bool)
+  (! x2 (term Bool)
+  (! u1 (th_holds (p_app x1))
+  (! u2 (th_holds (p_app x2))
+    (th_holds (= Bool x1 x2)))))))
+
+(declare false_preds_equal
+  (! x1 (term Bool)
+  (! x2 (term Bool)
+  (! u1 (th_holds (not (p_app x1)))
+  (! u2 (th_holds (not (p_app x2)))
+    (th_holds (= Bool x1 x2)))))))
+
+(declare pred_refl_pos
+  (! x1 (term Bool)
+  (! u1 (th_holds (p_app x1))
+    (th_holds (= Bool x1 x1)))))
+
+(declare pred_refl_neg
+  (! x1 (term Bool)
+  (! u1 (th_holds (not (p_app x1)))
+    (th_holds (= Bool x1 x1)))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;
+; CNF Clausification
+;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; binding between an LF var and an (atomic) formula
+
+(declare atom (! v var (! p formula type)))
+
+; binding between two LF vars
+(declare bvatom (! sat_v var (! bv_v var type)))
+
+(declare decl_atom
+  (! f formula
+  (! u (! v var
+       (! a (atom v f)
+         (holds cln)))
+    (holds cln))))
+
+;; declare atom enhanced with mapping
+;; between SAT prop variable and BVSAT prop variable
+(declare decl_bvatom
+  (! f formula
+  (! u (! v var
+       (! bv_v var
+       (! a (atom v f)
+       (! bva (atom bv_v f)
+       (! vbv (bvatom v bv_v)
+         (holds cln))))))
+    (holds cln))))
+
+
+; clausify a formula directly
+(declare clausify_form
+  (! f formula
+  (! v var
+  (! a (atom v f)
+  (! u (th_holds f)
+    (holds (clc (pos v) cln)))))))
+
+(declare clausify_form_not
+  (! f formula
+  (! v var
+  (! a (atom v f)
+  (! u (th_holds (not f))
+    (holds (clc (neg v) cln)))))))
+
+(declare clausify_false
+  (! u (th_holds false)
+    (holds cln)))
+
+(declare th_let_pf
+  (! f formula
+  (! u (th_holds f)
+  (! u2 (! v (th_holds f) (holds cln))
+    (holds cln)))))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;
+; Natural deduction rules : used for CNF
+;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; for eager bit-blasting
+(declare iff_symm
+	(! f formula
+	   (th_holds (iff f f))))
+
+
+;; contradiction
+
+(declare contra
+  (! f formula
+  (! r1 (th_holds f)
+  (! r2 (th_holds (not f))
+    (th_holds false)))))
+
+; truth
+(declare truth (th_holds true))
+
+;; not not
+
+(declare not_not_intro
+  (! f formula
+  (! u (th_holds f)
+    (th_holds (not (not f))))))
+
+(declare not_not_elim
+  (! f formula
+  (! u (th_holds (not (not f)))
+    (th_holds f))))
+
+;; or elimination
+
+(declare or_elim_1
+  (! f1 formula
+  (! f2 formula
+  (! u1 (th_holds (not f1))
+  (! u2 (th_holds (or f1 f2))
+    (th_holds f2))))))
+
+(declare or_elim_2
+  (! f1 formula
+  (! f2 formula
+  (! u1 (th_holds (not f2))
+  (! u2 (th_holds (or f1 f2))
+    (th_holds f1))))))
+
+(declare not_or_elim
+  (! f1 formula
+  (! f2 formula
+  (! u2 (th_holds (not (or f1 f2)))
+    (th_holds (and (not f1) (not f2)))))))
+
+;; and elimination
+
+(declare and_elim_1
+  (! f1 formula
+  (! f2 formula
+  (! u (th_holds (and f1 f2))
+    (th_holds f1)))))
+
+(declare and_elim_2
+  (! f1 formula
+  (! f2 formula
+  (! u (th_holds (and f1 f2))
+    (th_holds f2)))))
+
+(declare not_and_elim
+  (! f1 formula
+  (! f2 formula
+  (! u2 (th_holds (not (and f1 f2)))
+    (th_holds (or (not f1) (not f2)))))))
+
+;; impl elimination
+
+(declare impl_intro (! f1 formula
+                    (! f2 formula
+                    (! i1 (! u (th_holds f1)
+                              (th_holds f2))
+                      (th_holds (impl f1 f2))))))
+
+(declare impl_elim
+  (! f1 formula
+  (! f2 formula
+  (! u2 (th_holds (impl f1 f2))
+    (th_holds (or (not f1) f2))))))
+
+(declare not_impl_elim
+  (! f1 formula
+  (! f2 formula
+  (! u (th_holds (not (impl f1 f2)))
+    (th_holds (and f1 (not f2)))))))
+
+;; iff elimination
+
+(declare iff_elim_1
+  (! f1 formula
+  (! f2 formula
+  (! u1 (th_holds (iff f1 f2))
+    (th_holds (or (not f1) f2))))))
+
+(declare iff_elim_2
+  (! f1 formula
+  (! f2 formula
+  (! u1 (th_holds (iff f1 f2))
+    (th_holds (or f1 (not f2)))))))
+
+(declare not_iff_elim
+  (! f1 formula
+  (! f2 formula
+  (! u2 (th_holds (not (iff f1 f2)))
+    (th_holds (iff f1 (not f2)))))))
+
+; xor elimination
+
+(declare xor_elim_1
+  (! f1 formula
+  (! f2 formula
+  (! u1 (th_holds (xor f1 f2))
+    (th_holds (or (not f1) (not f2)))))))
+
+(declare xor_elim_2
+  (! f1 formula
+  (! f2 formula
+  (! u1 (th_holds (xor f1 f2))
+    (th_holds (or f1 f2))))))
+
+(declare not_xor_elim
+  (! f1 formula
+  (! f2 formula
+  (! u2 (th_holds (not (xor f1 f2)))
+    (th_holds (iff f1 f2))))))
+
+;; ite elimination
+
+(declare ite_elim_1
+  (! a formula
+  (! b formula
+  (! c formula
+  (! u2 (th_holds (ifte a b c))
+    (th_holds (or (not a) b)))))))
+
+(declare ite_elim_2
+  (! a formula
+  (! b formula
+  (! c formula
+  (! u2 (th_holds (ifte a b c))
+    (th_holds (or a c)))))))
+
+(declare ite_elim_3
+  (! a formula
+  (! b formula
+  (! c formula
+  (! u2 (th_holds (ifte a b c))
+    (th_holds (or b c)))))))
+
+(declare not_ite_elim_1
+  (! a formula
+  (! b formula
+  (! c formula
+  (! u2 (th_holds (not (ifte a b c)))
+    (th_holds (or (not a) (not b))))))))
+
+(declare not_ite_elim_2
+  (! a formula
+  (! b formula
+  (! c formula
+  (! u2 (th_holds (not (ifte a b c)))
+    (th_holds (or a (not c))))))))
+
+(declare not_ite_elim_3
+  (! a formula
+  (! b formula
+  (! c formula
+  (! u2 (th_holds (not (ifte a b c)))
+    (th_holds (or (not b) (not c))))))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;
+; For theory lemmas
+; - make a series of assumptions and then derive a contradiction (or false)
+; - then the assumptions yield a formula like "v1 -> v2 -> ... -> vn -> false"
+; - In CNF, it becomes a clause: "~v1, ~v2, ..., ~vn"
+;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(declare ast
+  (! v var
+  (! f formula
+  (! C clause
+  (! r (atom v f)       ;this is specified
+  (! u (! o (th_holds f)
+         (holds C))
+    (holds (clc (neg v) C))))))))
+
+(declare asf
+  (! v var
+  (! f formula
+  (! C clause
+  (! r (atom v f)
+  (! u (! o (th_holds (not f))
+         (holds C))
+    (holds (clc (pos v) C))))))))
+
+;; Bitvector lemma constructors to assume
+;; the unit clause containing the assumptions
+;; it also requires the mapping between bv_v and v
+;; The resolution proof proving false will use bv_v as the definition clauses use bv_v
+;; but the Problem clauses in the main SAT solver will use v so the learned clause is in terms of v
+(declare bv_asf
+  (! v var
+  (! bv_v var
+  (! f formula
+  (! C clause
+  (! r (atom v f) ;; passed in
+  (! x (bvatom v bv_v) ; establishes the equivalence of v to bv_
+  (! u (! o (holds (clc (neg bv_v) cln)) ;; l binding to be used in proof
+         (holds C))
+    (holds (clc (pos v) C))))))))))
+
+(declare bv_ast
+  (! v var
+  (! bv_v var
+  (! f formula
+  (! C clause
+  (! r (atom v f)       ; this is specified
+  (! x (bvatom v bv_v) ; establishes the equivalence of v to bv_v
+  (! u (! o (holds (clc (pos bv_v) cln))
+         (holds C))
+    (holds (clc (neg v) C))))))))))
+
+
+;; Example:
+;;
+;; Given theory literals (F1....Fn), and an input formula A of the form (th_holds (or F1 (or F2 .... (or F{n-1} Fn))))).
+;;
+;; We introduce atoms (a1,...,an) to map boolean literals (v1,...,vn) top literals (F1,...,Fn).
+;; Do this at the beginning of the proof:
+;;
+;; (decl_atom F1 (\ v1 (\ a1
+;; (decl_atom F2 (\ v2 (\ a2
+;; ....
+;; (decl_atom Fn (\ vn (\ an
+;;
+;;  A is then clausified by the following proof:
+;;
+;;(satlem _ _
+;;(asf _ _ _ a1 (\ l1
+;;(asf _ _ _ a2 (\ l2
+;;...
+;;(asf _ _ _ an (\ ln
+;;(clausify_false
+;;
+;;   (contra _
+;;      (or_elim_1 _ _ l{n-1}
+;;	...
+;;      (or_elim_1 _ _ l2
+;; 	(or_elim_1 _ _ l1 A))))) ln)
+;;
+;;))))))) (\ C
+;;
+;; We now have the free variable C, which should be the clause (v1 V ... V vn).
+;;
+;; Polarity of literals should be considered, say we have A of the form (th_holds (or (not F1) (or F2 (not F3)))).
+;; Where necessary, we use "ast" instead of "asf", introduce negations by "not_not_intro" for pattern matching, and flip
+;; the arguments of contra:
+;;
+;;(satlem _ _
+;;(ast _ _ _ a1 (\ l1
+;;(asf _ _ _ a2 (\ l2
+;;(ast _ _ _ a3 (\ l3
+;;(clausify_false
+;;
+;;   (contra _ l3
+;;      (or_elim_1 _ _ l2
+;; 	(or_elim_1 _ _ (not_not_intro l1) A))))
+;;
+;;))))))) (\ C
+;;
+;; C should be the clause (~v1 V v2 V ~v3 )
diff --git a/proofs/signatures/th_arrays.plf b/proofs/signatures/th_arrays.plf
new file mode 100644
index 0000000..acfbd2f
--- /dev/null
+++ b/proofs/signatures/th_arrays.plf
@@ -0,0 +1,65 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;
+; Theory of Arrays
+;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; depends on : th_base.plf
+
+; sorts
+
+(declare Array (! s1 sort (! s2 sort sort)))	; s1 is index, s2 is element
+
+; functions
+(declare write (! s1 sort
+               (! s2 sort
+                 (term (arrow (Array s1 s2)
+                       (arrow s1
+                       (arrow s2 (Array s1 s2))))))))
+
+(declare read (! s1 sort
+              (! s2 sort
+              	(term (arrow (Array s1 s2)
+               	      (arrow s1 s2))))))
+
+; inference rules
+
+; read( a[i] = b, i ) == b
+(declare row1 (! s1 sort
+              (! s2 sort
+              (! t1 (term (Array s1 s2))
+              (! t2 (term s1)
+              (! t3 (term s2)
+              	(th_holds (= _
+		(apply _ _ (apply _ _ (read s1 s2) (apply _ _ (apply _ _ (apply _ _ (write s1 s2) t1) t2) t3)) t2) t3))))))))
+
+; read( a[i] = b, j ) == read( a, j ) if i != j
+(declare row (! s1 sort
+             (! s2 sort
+             (! t2 (term s1)
+             (! t3 (term s1)
+             (! t1 (term (Array s1 s2))
+             (! t4 (term s2)
+             (! u (th_holds (not (= _ t2 t3)))
+               (th_holds (= _ (apply _ _ (apply _ _ (read s1 s2) (apply _ _ (apply _ _ (apply _ _ (write s1 s2) t1) t2) t4)) t3)
+               		      (apply _ _ (apply _ _ (read s1 s2) t1) t3)))))))))))
+
+; i == j if read( a, j ) != read( a[i] = b, j )
+(declare negativerow (! s1 sort
+                     (! s2 sort
+                     (! t2 (term s1)
+                     (! t3 (term s1)
+                     (! t1 (term (Array s1 s2))
+                     (! t4 (term s2)
+		     (! u (th_holds (not (= _
+                        (apply _ _ (apply _ _ (read s1 s2) (apply _ _ (apply _ _ (apply _ _ (write s1 s2) t1) t2) t4)) t3)
+                        (apply _ _ (apply _ _ (read s1 s2) t1) t3))))
+                     (th_holds (= _ t2 t3))))))))))
+
+(declare ext (! s1 sort
+             (! s2 sort
+             (! t1 (term (Array s1 s2))
+             (! t2 (term (Array s1 s2))
+             (! u1 (! k (term s1)
+                   (! u2 (th_holds (or (= _ t1 t2) (not (= _ (apply _ _ (apply _ _ (read s1 s2) t1) k) (apply _ _ (apply _ _ (read s1 s2) t2) k)))))
+                     (holds cln)))
+               (holds cln)))))))
diff --git a/proofs/signatures/th_base.plf b/proofs/signatures/th_base.plf
new file mode 100644
index 0000000..d6b2837
--- /dev/null
+++ b/proofs/signatures/th_base.plf
@@ -0,0 +1,96 @@
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;
+; Theory of Equality and Congruence Closure
+;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; depends on : smt.plf
+
+; sorts :
+
+(declare arrow (! s1 sort (! s2 sort sort)))	; function constructor
+
+; functions :
+
+(declare apply (! s1 sort
+               (! s2 sort
+               (! t1 (term (arrow s1 s2))
+               (! t2 (term s1)
+                (term s2))))))
+
+
+; inference rules :
+
+(declare trust (th_holds false))	; temporary
+(declare trust_f (! f formula (th_holds f)))  ; temporary
+
+(declare refl
+  (! s sort
+  (! t (term s)
+    (th_holds (= s t t)))))
+
+(declare symm (! s sort
+              (! x (term s)
+              (! y (term s)
+              (! u (th_holds (= _ x y))
+                (th_holds (= _ y x)))))))
+
+(declare trans (! s sort
+               (! x (term s)
+               (! y (term s)
+               (! z (term s)
+               (! u (th_holds (= _ x y))
+               (! u (th_holds (= _ y z))
+                 (th_holds (= _ x z)))))))))
+
+(declare negsymm (! s sort
+              	 (! x (term s)
+              	 (! y (term s)
+              	 (! u (th_holds (not (= _ x y)))
+                   (th_holds (not (= _ y x))))))))
+
+(declare negtrans1 (! s sort
+                   (! x (term s)
+              	   (! y (term s)
+               	   (! z (term s)
+               	   (! u (th_holds (not (= _ x y)))
+               	   (! u (th_holds (= _ y z))
+                     (th_holds (not (= _ x z))))))))))
+
+(declare negtrans2 (! s sort
+                   (! x (term s)
+              	   (! y (term s)
+               	   (! z (term s)
+               	   (! u (th_holds (= _ x y))
+               	   (! u (th_holds (not (= _ y z)))
+                     (th_holds (not (= _ x z))))))))))
+
+(declare cong (! s1 sort
+              (! s2 sort
+              (! a1 (term (arrow s1 s2))
+              (! b1 (term (arrow s1 s2))
+              (! a2 (term s1)
+              (! b2 (term s1)
+              (! u1 (th_holds (= _ a1 b1))
+              (! u2 (th_holds (= _ a2 b2))
+                (th_holds (= _ (apply _ _ a1 a2) (apply _ _ b1 b2))))))))))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Examples
+
+; an example of "(p1 or p2(0)) and t1=t2(1)"
+;(! p1 (term Bool)
+;(! p2 (term (arrow Int Bool))
+;(! t1 (term Int)
+;(! t2 (term (arrow Int Int))
+;(! F (th_holds (and (or (p_app p1) (p_app (apply _ _ p2 0)))
+;                    (= _ t1 (apply _ _ t2 1))))
+;  ...
+
+; another example of "p3(a,b)"
+;(! a (term Int)
+;(! b (term Int)
+;(! p3 (term (arrow Int (arrow Int Bool)))	; arrow is right assoc.
+;(! F (th_holds (p_app (apply _ _ (apply _ _ p3 a) b))) ; apply is left assoc.
+;  ...
diff --git a/proofs/signatures/th_bv.plf b/proofs/signatures/th_bv.plf
new file mode 100644
index 0000000..6012e05
--- /dev/null
+++ b/proofs/signatures/th_bv.plf
@@ -0,0 +1,192 @@
+;;;; TEMPORARY:
+
+(declare trust-bad (th_holds false))
+
+; helper stuff
+(program mpz_sub ((x mpz) (y mpz)) mpz
+	 (mp_add x (mp_mul (~1) y)))
+
+(program mp_ispos ((x mpz)) formula
+	 (mp_ifneg x false true))
+
+(program mpz_eq ((x mpz) (y mpz)) formula
+    (mp_ifzero (mpz_sub x y) true false))
+
+(program mpz_lt ((x mpz) (y mpz)) formula
+    (mp_ifneg (mpz_sub x y) true false))
+
+(program mpz_lte ((x mpz) (y mpz)) formula
+    (mp_ifneg (mpz_sub x y) true (mpz_eq x y)))
+
+(program mpz_ ((x mpz) (y mpz)) formula
+    (mp_ifzero (mpz_sub x y) true false))
+
+
+; "bitvec" is a term of type "sort"
+; (declare BitVec sort)
+(declare BitVec (!n mpz sort))
+
+; bit type
+(declare bit type)
+(declare b0 bit)
+(declare b1 bit)
+
+; bit vector type used for constants
+(declare bv type)
+(declare bvn bv)
+(declare bvc (! b bit (! v bv bv)))
+
+; calculate the length of a bitvector
+;; (program bv_len ((v bv)) mpz
+;;   (match v
+;;     (bvn 0)
+;;     ((bvc b v') (mp_add (bv_len v') 1))))
+
+
+; a bv constant term
+(declare a_bv
+	 (! n mpz
+	 (! v bv
+	    (term (BitVec n)))))
+
+(program bv_constants_are_disequal ((x bv) (y bv)) formula
+  (match x
+      (bvn (fail formula))
+      ((bvc bx x')
+        (match y
+          (bvn (fail formula))
+          ((bvc by y') (match bx
+                             (b0 (match by (b0 (bv_constants_are_disequal x' y')) (b1 (true))))
+                             (b1 (match by (b0 (true)) (b1 (bv_constants_are_disequal x' y'))))
+          ))
+      ))
+))
+
+(declare bv_disequal_constants
+	 (! n mpz
+	 (! x bv
+	 (! y bv
+	 (! c (^ (bv_constants_are_disequal x y) true)
+  	   (th_holds (not (= (BitVec n) (a_bv n x) (a_bv n y)))))))))
+
+; a bv variable
+(declare var_bv type)
+; a bv variable term
+(declare a_var_bv
+	 (! n mpz
+	 (! v var_bv
+	    (term (BitVec n)))))
+
+; bit vector binary operators
+(define bvop2
+	(! n mpz
+	(! x (term (BitVec n))
+        (! y (term (BitVec n))
+             	   (term (BitVec n))))))
+
+(declare bvand bvop2)
+(declare bvor bvop2)
+(declare bvor bvop2)
+(declare bvxor bvop2)
+(declare bvnand bvop2)
+(declare bvnor bvop2)
+(declare bvxnor bvop2)
+(declare bvmul bvop2)
+(declare bvadd bvop2)
+(declare bvsub bvop2)
+(declare bvudiv bvop2)
+(declare bvurem bvop2)
+(declare bvsdiv bvop2)
+(declare bvsrem bvop2)
+(declare bvsmod bvop2)
+(declare bvshl bvop2)
+(declare bvlshr bvop2)
+(declare bvashr bvop2)
+(declare concat bvop2)
+
+; bit vector unary operators
+(define bvop1
+	(! n mpz
+	(! x (term (BitVec n))
+             	   (term (BitVec n)))))
+
+
+(declare bvneg bvop1)
+(declare bvnot bvop1)
+(declare rotate_left  bvop1)
+(declare rotate_right bvop1)
+
+(declare bvcomp
+	 (! n mpz
+ 	 (! t1 (term (BitVec n))
+	 (! t2 (term (BitVec n))
+	    (term (BitVec 1))))))
+
+
+(declare concat
+	 (! n mpz
+	 (! m mpz
+	 (! m' mpz
+	 (! t1 (term (BitVec m))
+	 (! t2 (term (BitVec m'))
+	    (term (BitVec n))))))))
+
+;; side-condition fails in signature only??
+;;	 (! s (^ (mp_add m m') n)
+
+;; (declare repeat bvopp)
+
+(declare extract
+	 (! n mpz
+	 (! i mpz
+	 (! j mpz
+	 (! m mpz
+	 (! t2 (term (BitVec m))
+	    (term (BitVec n))))))))
+
+(declare zero_extend
+	 (! n mpz
+	 (! i mpz
+	 (! m mpz
+	 (! t2 (term (BitVec m))
+	    (term (BitVec n)))))))
+
+(declare sign_extend
+	 (! n mpz
+	 (! i mpz
+	 (! m mpz
+	 (! t2 (term (BitVec m))
+	    (term (BitVec n)))))))
+
+(declare repeat
+	 (! n mpz
+	 (! i mpz
+	 (! m mpz
+	 (! t2 (term (BitVec m))
+	    (term (BitVec n)))))))
+
+
+
+;; TODO: add checks for valid typing for these operators
+;; (! c1 (^ (mpz_lte i j)
+;; (! c2 (^ (mpz_lt i n) true)
+;; (! c3 (^ (mp_ifneg i false true) true)
+;; (! c4 (^ (mp_ifneg j false true) true)
+;; (! s (^ (mp_add (mpz_sub i j) 1) m)
+
+
+; bit vector predicates
+(define bvpred
+	(! n mpz
+	(! x (term (BitVec n))
+	(! y (term (BitVec n))
+	           formula))))
+
+(declare bvult bvpred)
+(declare bvule bvpred)
+(declare bvugt bvpred)
+(declare bvuge bvpred)
+(declare bvslt bvpred)
+(declare bvsle bvpred)
+(declare bvsgt bvpred)
+(declare bvsge bvpred)
diff --git a/proofs/signatures/th_bv_bitblast.plf b/proofs/signatures/th_bv_bitblast.plf
new file mode 100644
index 0000000..2b2fe08
--- /dev/null
+++ b/proofs/signatures/th_bv_bitblast.plf
@@ -0,0 +1,694 @@
+; bit blasted terms as list of formulas
+(declare bblt type)
+(declare bbltn bblt)
+(declare bbltc (! f formula (! v bblt bblt)))
+
+; calculate the length of a bit-blasted term
+(program bblt_len ((v bblt)) mpz
+  (match v
+    (bbltn 0)
+    ((bbltc b v') (mp_add (bblt_len v') 1))))
+
+
+; (bblast_term x y) means term y corresponds to bit level interpretation x
+(declare bblast_term
+	 (! n mpz
+	 (! x (term (BitVec n))
+	 (! y bblt
+	    type))))
+
+; FIXME: for unsupported bit-blast terms
+(declare trust_bblast_term
+	 (! n mpz
+	 (! x (term (BitVec n))
+	 (! y bblt
+	    (bblast_term n x y)))))
+
+
+; Binds a symbol to the bblast_term to be used later on.
+(declare decl_bblast
+	 (! n mpz
+	 (! b bblt
+	 (! t (term (BitVec n))
+	 (! bb (bblast_term n t b)
+	 (! s (^ (bblt_len b) n)
+	 (! u (! v (bblast_term n t b) (holds cln))
+		   (holds cln))))))))
+
+(declare decl_bblast_with_alias
+	 (! n mpz
+	 (! b bblt
+	 (! t (term (BitVec n))
+	 (! a (term (BitVec n))
+	 (! bb (bblast_term n t b)
+	 (! e (th_holds (= _ t a))
+	 (! s (^ (bblt_len b) n)
+	 (! u (! v (bblast_term n a b) (holds cln))
+		   (holds cln))))))))))
+
+; a predicate to represent the n^th bit of a bitvector term
+(declare bitof
+	 (! x var_bv
+	 (! n mpz formula)))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;           BITBLASTING RULES
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; BITBLAST CONSTANT
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(program bblast_const ((v bv) (n mpz)) bblt
+  (mp_ifneg n (match v (bvn bbltn)
+                       (default (fail bblt)))
+              (match v ((bvc b v') (bbltc (match b (b0 false) (b1 true)) (bblast_const v' (mp_add n (~ 1)))))
+                       (default (fail bblt)))))
+
+(declare bv_bbl_const (! n mpz
+                      (! f bblt
+                      (! v bv
+                      (! c (^ (bblast_const v (mp_add n (~ 1))) f)
+                           (bblast_term n (a_bv n v) f))))))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; BITBLAST VARIABLE
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(program bblast_var ((x var_bv) (n mpz)) bblt
+  (mp_ifneg n bbltn
+              (bbltc (bitof x n) (bblast_var x (mp_add n (~ 1))))))
+
+(declare bv_bbl_var (! n mpz
+                    (! x var_bv
+                    (! f bblt
+                    (! c (^ (bblast_var x (mp_add n (~ 1))) f)
+                         (bblast_term n (a_var_bv n x) f))))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; BITBLAST CONCAT
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(program bblast_concat ((x bblt) (y bblt)) bblt
+  (match x
+    (bbltn (match y ((bbltc by y') (bbltc by (bblast_concat x y')))
+    	   	    (bbltn bbltn)))
+    ((bbltc bx x') (bbltc bx (bblast_concat x' y)))))
+
+(declare bv_bbl_concat (! n mpz
+	 	       (! m mpz
+		       (! m1 mpz
+                       (! x (term (BitVec m))
+		       (! y (term (BitVec m1))
+		       (! xb bblt
+		       (! yb bblt
+		       (! rb bblt
+		       (! xbb (bblast_term m x xb)
+		       (! ybb (bblast_term m1 y yb)
+                       (! c (^ (bblast_concat xb yb ) rb)
+                           (bblast_term n (concat n m m1 x y) rb)))))))))))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; BITBLAST EXTRACT
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(program bblast_extract_rec ((x bblt) (i mpz) (j mpz) (n mpz)) bblt
+  (match x
+    ((bbltc bx x') (mp_ifneg (mpz_sub (mpz_sub j n) 1)
+    	       	   	     (mp_ifneg (mpz_sub (mpz_sub n i) 1)
+			    	  	  (bbltc bx (bblast_extract_rec x' i j (mpz_sub n 1)))
+					  (bblast_extract_rec x' i j (mpz_sub n 1)))
+
+			     bbltn))
+   (bbltn bbltn)))
+
+(program bblast_extract ((x bblt) (i mpz) (j mpz) (n mpz)) bblt
+ (bblast_extract_rec x i j (mpz_sub n 1)))
+
+(declare bv_bbl_extract (! n mpz
+			(! i mpz
+			(! j mpz
+			(! m mpz
+                       	(! x (term (BitVec m))
+		       	(! xb bblt
+		       	(! rb bblt
+		       	(! xbb (bblast_term m x xb)
+			(! c ( ^ (bblast_extract xb i j m) rb)
+                           (bblast_term n (extract n i j m x) rb)))))))))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; BITBLAST ZERO/SIGN EXTEND
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(program extend_rec ((x bblt) (i mpz) (b formula)) bblt
+  (mp_ifneg i x
+  	    (bbltc b (extend_rec x (mpz_sub i 1) b)))))
+
+(program bblast_zextend ((x bblt) (i mpz)) bblt
+ (extend_rec x (mpz_sub i 1) false))
+
+(declare bv_bbl_zero_extend (! n mpz
+			(! k mpz
+			(! m mpz
+                       	(! x (term (BitVec m))
+		       	(! xb bblt
+		       	(! rb bblt
+		       	(! xbb (bblast_term m x xb)
+			(! c ( ^ (bblast_zextend xb k m) rb)
+                           (bblast_term n (zero_extend n k m x) rb))))))))))
+
+(program bblast_sextend ((x bblt) (i mpz)) bblt
+ (match x (bbltn (fail bblt))
+ 	  ((bbltc xb x') (extend_rec x (mpz_sub i 1) xb))))
+
+(declare bv_bbl_sign_extend (! n mpz
+			(! k mpz
+			(! m mpz
+                       	(! x (term (BitVec m))
+		       	(! xb bblt
+		       	(! rb bblt
+		       	(! xbb (bblast_term m x xb)
+			(! c ( ^ (bblast_sextend xb k m) rb)
+                           (bblast_term n (sign_extend n k m x) rb))))))))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; BITBLAST BVAND
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(program bblast_bvand ((x bblt) (y bblt)) bblt
+  (match x
+    (bbltn (match y (bbltn bbltn) (default (fail bblt))))
+    ((bbltc bx x') (match y
+                      (bbltn (fail bblt))
+                      ((bbltc by y') (bbltc (and bx by) (bblast_bvand x' y')))))))
+
+(declare bv_bbl_bvand (! n mpz
+                      (! x (term (BitVec n))
+		      (! y (term (BitVec n))
+		      (! xb bblt
+		      (! yb bblt
+		      (! rb bblt
+		      (! xbb (bblast_term n x xb)
+		      (! ybb (bblast_term n y yb)
+                      (! c (^ (bblast_bvand xb yb ) rb)
+                           (bblast_term n (bvand n x y) rb)))))))))))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; BITBLAST BVNOT
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(program bblast_bvnot ((x bblt)) bblt
+  (match x
+    (bbltn bbltn)
+    ((bbltc bx x') (bbltc (not bx) (bblast_bvnot x')))))
+
+(declare bv_bbl_bvnot (! n mpz
+                      (! x (term (BitVec n))
+		      (! xb bblt
+		      (! rb bblt
+		      (! xbb (bblast_term n x xb)
+                      (! c (^ (bblast_bvnot xb ) rb)
+                           (bblast_term n (bvnot n x) rb))))))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; BITBLAST BVOR
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(program bblast_bvor ((x bblt) (y bblt)) bblt
+  (match x
+    (bbltn (match y (bbltn bbltn) (default (fail bblt))))
+    ((bbltc bx x') (match y
+                      (bbltn (fail bblt))
+                      ((bbltc by y') (bbltc (or bx by) (bblast_bvor x' y')))))))
+
+(declare bv_bbl_bvor (! n mpz
+                      (! x (term (BitVec n))
+		      (! y (term (BitVec n))
+		      (! xb bblt
+		      (! yb bblt
+		      (! rb bblt
+		      (! xbb (bblast_term n x xb)
+		      (! ybb (bblast_term n y yb)
+                      (! c (^ (bblast_bvor xb yb ) rb)
+                           (bblast_term n (bvor n x y) rb)))))))))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; BITBLAST BVXOR
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(program bblast_bvxor ((x bblt) (y bblt)) bblt
+  (match x
+    (bbltn (match y (bbltn bbltn) (default (fail bblt))))
+    ((bbltc bx x') (match y
+                      (bbltn (fail bblt))
+                      ((bbltc by y') (bbltc (xor bx by) (bblast_bvxor x' y')))))))
+
+(declare bv_bbl_bvxor (! n mpz
+                      (! x (term (BitVec n))
+		      (! y (term (BitVec n))
+		      (! xb bblt
+		      (! yb bblt
+		      (! rb bblt
+		      (! xbb (bblast_term n x xb)
+		      (! ybb (bblast_term n y yb)
+                      (! c (^ (bblast_bvxor xb yb ) rb)
+                           (bblast_term n (bvxor n x y) rb)))))))))))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; BITBLAST BVADD
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; return the carry bit after adding x y
+;; FIXME: not the most efficient thing in the world
+(program bblast_bvadd_carry ((a bblt) (b bblt) (carry formula)) formula
+(match a
+  ( bbltn (match b (bbltn carry) (default (fail formula))))
+  ((bbltc ai a') (match b
+  	     	   (bbltn (fail formula))
+	 	   ((bbltc bi b') (or (and ai bi) (and (xor ai bi) (bblast_bvadd_carry a' b' carry))))))))
+
+;; ripple carry adder where carry is the initial carry bit
+(program bblast_bvadd ((a bblt) (b bblt) (carry formula)) bblt
+(match a
+  ( bbltn (match b (bbltn bbltn) (default (fail bblt))))
+  ((bbltc ai a') (match b
+  	     	   (bbltn (fail bblt))
+	 	   ((bbltc bi b') (bbltc (xor (xor ai bi) (bblast_bvadd_carry a' b' carry))
+				  	 (bblast_bvadd a' b' carry)))))))
+
+
+(program reverse_help ((x bblt) (acc bblt)) bblt
+(match x
+       (bbltn acc)
+       ((bbltc xi x') (reverse_help x' (bbltc xi acc)))))
+
+
+(program reverseb ((x bblt)) bblt
+	 (reverse_help x bbltn))
+
+
+; AJR: use this version?
+;(program bblast_bvadd_2h ((a bblt) (b bblt) (carry formula)) bblt
+;(match a
+;  ( bbltn (match b (bbltn bbltn) (default (fail bblt))))
+;  ((bbltc ai a') (match b
+;       (bbltn (fail bblt))
+;	 	   ((bbltc bi b')
+;	 	     (let carry' (or (and ai bi) (and (xor ai bi) carry))
+;	 	     (bbltc (xor (xor ai bi) carry)
+;				  	    (bblast_bvadd_2h a' b' carry'))))))))
+
+;(program bblast_bvadd_2 ((a bblt) (b bblt) (carry formula)) bblt
+;(let ar (reverseb a) ;; reverse a and b so that we can build the circuit
+;(let br (reverseb b) ;; from the least significant bit up
+;(let ret (bblast_bvadd_2h ar br carry)
+;  (reverseb ret)))))
+
+(declare bv_bbl_bvadd (! n mpz
+                      (! x (term (BitVec n))
+		      (! y (term (BitVec n))
+		      (! xb bblt
+		      (! yb bblt
+		      (! rb bblt
+		      (! xbb (bblast_term n x xb)
+		      (! ybb (bblast_term n y yb)
+                      (! c (^ (bblast_bvadd xb yb false) rb)
+                           (bblast_term n (bvadd n x y) rb)))))))))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; BITBLAST BVNEG
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(program bblast_zero ((n mpz)) bblt
+(mp_ifzero n bbltn
+	     (bbltc false (bblast_zero (mp_add n (~1))))))
+
+(program bblast_bvneg ((x bblt) (n mpz)) bblt
+  (bblast_bvadd (bblast_bvnot x) (bblast_zero n) true))
+
+
+(declare bv_bbl_bvneg (! n mpz
+                      (! x (term (BitVec n))
+		      (! xb bblt
+		      (! rb bblt
+		      (! xbb (bblast_term n x xb)
+                      (! c (^ (bblast_bvneg xb n) rb)
+                           (bblast_term n (bvneg n x) rb))))))))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; BITBLAST BVMUL
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+;; shift add multiplier
+
+;; (program concat ((a bblt) (b bblt)) bblt
+;;   (match a (bbltn b)
+;;   	   ((bbltc ai a') (bbltc ai (concat a' b)))))
+
+
+(program top_k_bits ((a bblt) (k mpz)) bblt
+  (mp_ifzero k bbltn
+  	     (match a (bbltn (fail bblt))
+	     	      ((bbltc ai a') (bbltc ai (top_k_bits a' (mpz_sub k 1)))))))
+
+(program bottom_k_bits ((a bblt) (k mpz)) bblt
+ (reverseb (top_k_bits (reverseb a) k)))
+
+;; assumes the least signigicant bit is at the beginning of the list
+(program k_bit ((a bblt) (k mpz)) formula
+(mp_ifneg k (fail formula)
+(match a (bbltn (fail formula))
+         ((bbltc ai a') (mp_ifzero k ai (k_bit a' (mpz_sub k 1)))))))
+
+(program and_with_bit ((a bblt) (bt formula)) bblt
+(match a (bbltn bbltn)
+         ((bbltc ai a') (bbltc (and bt ai) (and_with_bit a' bt)))))
+
+;; a is going to be the current result
+;; carry is going to be false initially
+;; b is the and of a and b[k]
+;; res is going to be bbltn initially
+(program mult_step_k_h ((a bblt) (b bblt) (res bblt) (carry formula) (k mpz)) bblt
+(match a
+  (bbltn (match b (bbltn res) (default (fail bblt))))
+  ((bbltc ai a')
+    (match b (bbltn (fail bblt))
+             ((bbltc bi b')
+	     (mp_ifneg (mpz_sub k 1)
+	     	         (let carry_out (or (and ai bi) (and (xor ai bi) carry))
+			 (let curr (xor (xor ai bi) carry)
+			    (mult_step_k_h a' b' (bbltc curr res) carry_out (mpz_sub k 1))))
+			 (mult_step_k_h a' b (bbltc ai res) carry (mpz_sub k 1))
+))))))
+
+;; assumes that a, b and res have already been reversed
+(program mult_step ((a bblt) (b bblt) (res bblt) (n mpz) (k mpz)) bblt
+(let k' (mpz_sub n k )
+(let ak (top_k_bits a k')
+(let b' (and_with_bit ak (k_bit b k))
+ (mp_ifzero (mpz_sub k' 1)
+   (mult_step_k_h res b' bbltn false k)
+   (let res' (mult_step_k_h res b' bbltn false k)
+   (mult_step a b (reverseb res') n (mp_add k 1))))))))
+
+
+(program bblast_bvmul ((a bblt) (b bblt) (n mpz)) bblt
+(let ar (reverseb a) ;; reverse a and b so that we can build the circuit
+(let br (reverseb b) ;; from the least significant bit up
+(let res (and_with_bit ar (k_bit br 0))
+     (mp_ifzero (mpz_sub n 1)     ;; if multiplying 1 bit numbers no need to call mult_step
+     		res
+		(mult_step ar br res n 1))))))
+
+(declare bv_bbl_bvmul (! n mpz
+                      (! x (term (BitVec n))
+		      (! y (term (BitVec n))
+		      (! xb bblt
+		      (! yb bblt
+		      (! rb bblt
+		      (! xbb (bblast_term n x xb)
+		      (! ybb (bblast_term n y yb)
+                      (! c (^ (bblast_bvmul xb yb n) rb)
+                           (bblast_term n (bvmul n x y) rb)))))))))))
+
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; BITBLAST EQUALS
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; bit blast  x = y
+; for x,y of size n, it will return a conjuction (x.0 = y.0 ^ ( ... ^ (x.{n-1} = y.{n-1})))
+; f is the accumulator formula that builds the equality in the right order
+(program bblast_eq_rec ((x bblt) (y bblt) (f formula)) formula
+  (match x
+    (bbltn (match y (bbltn f) (default (fail formula))))
+    ((bbltc fx x') (match y
+                      (bbltn (fail formula))
+                      ((bbltc fy y') (bblast_eq_rec x' y' (and (iff fx fy) f)))))
+    (default (fail formula))))
+
+(program bblast_eq ((x bblt) (y bblt)) formula
+	 (match x
+	 	((bbltc bx x') (match y ((bbltc by y') (bblast_eq_rec x' y' (iff bx by)))
+			       	      	(default (fail formula))))
+		(default (fail formula))))
+
+
+;; TODO: a temporary bypass for rewrites that we don't support yet. As soon
+;; as we do, remove this rule.
+
+(declare bv_bbl_=_false
+	 (! n mpz
+	 (! x (term (BitVec n))
+         (! y (term (BitVec n))
+         (! bx bblt
+         (! by bblt
+         (! f formula
+         (! bbx (bblast_term n x bx)
+         (! bby (bblast_term n y by)
+         (! c (^ (bblast_eq bx by) f)
+            (th_holds (iff (= (BitVec n) x y) false))))))))))))
+
+(declare bv_bbl_=
+	 (! n mpz
+	 (! x (term (BitVec n))
+         (! y (term (BitVec n))
+         (! bx bblt
+         (! by bblt
+         (! f formula
+         (! bbx (bblast_term n x bx)
+         (! bby (bblast_term n y by)
+         (! c (^ (bblast_eq bx by) f)
+            (th_holds (iff (= (BitVec n) x y) f))))))))))))
+
+(declare bv_bbl_=_swap
+	 (! n mpz
+	 (! x (term (BitVec n))
+         (! y (term (BitVec n))
+         (! bx bblt
+         (! by bblt
+         (! f formula
+         (! bbx (bblast_term n x bx)
+         (! bby (bblast_term n y by)
+         (! c (^ (bblast_eq by bx) f)
+            (th_holds (iff (= (BitVec n) x y) f))))))))))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; BITBLAST BVULT
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(program bblast_bvult ((x bblt) (y bblt) (n mpz)) formula
+(match x
+  ( bbltn (fail formula))
+  ((bbltc xi x') (match y
+  	     	   (bbltn (fail formula))
+	 	   ((bbltc yi y') (mp_ifzero n
+		                    (and (not xi) yi)
+				    (or (and (iff xi yi) (bblast_bvult x' y' (mp_add n (~1)))) (and (not xi) yi))))))))
+
+(declare bv_bbl_bvult
+	 (! n mpz
+	 (! x (term (BitVec n))
+         (! y (term (BitVec n))
+         (! bx bblt
+         (! by bblt
+         (! f formula
+         (! bbx (bblast_term n x bx)
+         (! bby (bblast_term n y by)
+         (! c (^ (bblast_bvult bx by (mp_add n (~1))) f)
+            (th_holds (iff (bvult n x y) f))))))))))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; BITBLAST BVSLT
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(program bblast_bvslt ((x bblt) (y bblt) (n mpz)) formula
+(match x
+  ( bbltn (fail formula))
+  ((bbltc xi x') (match y
+  	     	   (bbltn (fail formula))
+	 	   ((bbltc yi y') (mp_ifzero (mpz_sub n 1)
+		   	      	  	     (and xi (not yi))
+		   	      		     (or (and (iff xi yi)
+					     	      (bblast_bvult x' y' (mpz_sub n 2)))
+					     	 (and xi (not yi)))))))))
+
+(declare bv_bbl_bvslt
+	 (! n mpz
+	 (! x (term (BitVec n))
+         (! y (term (BitVec n))
+         (! bx bblt
+         (! by bblt
+         (! f formula
+         (! bbx (bblast_term n x bx)
+         (! bby (bblast_term n y by)
+         (! c (^ (bblast_bvslt bx by n) f)
+            (th_holds (iff (bvslt n x y) f))))))))))))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; BITBLAST BVCOMP
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(program bblast_bvcomp ((x bblt) (y bblt) (n mpz)) bblt
+  (match x ((bbltc bx x') (match y ((bbltc by y')
+  	   	                      (bbltc (bblast_eq_rec x' y' (iff bx by)) bbltn))
+                                   (default (fail bblt))))
+           (default (fail bblt))
+	   ))
+
+(declare bv_bbl_bvcomp (! n mpz
+                       (! x (term (BitVec n))
+		       (! y (term (BitVec n))
+		       (! xb bblt
+		       (! yb bblt
+		       (! rb bblt
+		       (! xbb (bblast_term n x xb)
+		       (! ybb (bblast_term n y yb)
+                       (! c (^ (bblast_bvcomp xb yb n) rb)
+                              (bblast_term 1 (bvcomp n x y) rb)))))))))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;           BITBLASTING CONNECTORS
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+; bit-blasting connections
+
+(declare intro_assump_t
+	 (! f formula
+	 (! v var
+	 (! C clause
+	 (! h (th_holds f)
+	 (! a (atom v f)
+	 (! u (! unit (holds (clc (pos v) cln))
+	      	 (holds C))
+	 (holds C))))))))
+
+(declare intro_assump_f
+	 (! f formula
+	 (! v var
+	 (! C clause
+	 (! h (th_holds (not f))
+	 (! a (atom v f)
+	 (! u (! unit (holds (clc (neg v) cln))
+	      	 (holds C))
+	 (holds C))))))))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;           REWRITE RULES
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+; rewrite rule :
+; x + y = y + x
+(declare bvadd_symm
+	 (! n mpz
+	 (! x (term (BitVec n))
+	 (! y (term (BitVec n))
+	    (th_holds (= (BitVec n) (bvadd _ x y) (bvadd _ y x)))))))
+
+;; (declare bvcrazy_rewrite
+;; 	 (! n mpz
+;; 	 (! x (term (BitVec n))
+;; 	 (! y (term (BitVec n))
+;; 	 (! xn bv_poly
+;; 	 (! yn bv_poly
+;; 	 (! hxn (bv_normalizes x xn)
+;; 	 (! hyn (bv_normalizes y yn)
+;; 	 (! s (^ (rewrite_scc xn yn) true)
+;; 	 (! u (! x (term (BitVec n)) (holds cln))
+;; 	     (holds cln)))))))))))
+
+;; 	    (th_holds (= (BitVec n) (bvadd x y) (bvadd y x)))))))
+
+
+
+; necessary?
+;; (program calc_bvand ((a bv) (b bv)) bv
+;;   (match a
+;;     (bvn (match b (bvn bvn) (default (fail bv))))
+;;     ((bvc ba a') (match b
+;;                       ((bvc bb b') (bvc (match ba (b0 b0) (b1 bb)) (calc_bvand a' b')))
+;;                       (default (fail bv))))))
+
+;; ; rewrite rule (w constants) :
+;; ; a & b = c
+;; (declare bvand_const (! c bv
+;; 		     (! a bv
+;;                      (! b bv
+;;                      (! u (^ (calc_bvand a b) c)
+;;                         (th_holds (= BitVec (bvand (a_bv a) (a_bv b)) (a_bv c))))))))
+
+
+;; making constant bit-vectors
+(program mk_ones ((n mpz)) bv
+	(mp_ifzero n bvn (bvc b1 (mk_ones (mpz_sub n 1)))))
+
+(program mk_zero ((n mpz)) bv
+	(mp_ifzero n bvn (bvc b0 (mk_ones (mpz_sub n 1)))))
+
+
+
+;; (bvxnor a b) => (bvnot (bvxor a b))
+;; (declare bvxnor_elim
+;; 	 (! n mpz
+;; 	 (! a (term (BitVec n))
+;; 	 (! b (term (BitVec n))
+;; 	 (! a' (term (BitVec n))
+;; 	 (! b' (term (BitVec n))
+;; 	 (! rwa (rw_term _ a a')
+;; 	 (! rwb (rw_term _ b b')
+;; 	 (rw_term n (bvxnor _ a b)
+;; 	 	  (bvnot _ (bvxor _ a' b')))))))))))
+
+
+
+;; ;; (bvxor a 0) => a
+;; (declare bvxor_zero
+;; 	 (! n mpz
+;; 	 (! zero_bits bv
+;; 	 (! sc (^ (mk_zero n)  zero_bits)
+;; 	 (! a (term (BitVec n))
+;; 	 (! b (term (BitVec n))
+;; 	 (! a' (term (BitVec n))
+;; 	 (! rwa (rw_term _  a a')
+;; 	 (! rwb (rw_term _ b (a_bv _ zero_bits))
+;; 	 (rw_term _  (bvxor _ a b)
+;; 	 	  a'))))))))))
+
+;; ;; (bvxor a 11) => (bvnot a)
+;; (declare bvxor_one
+;; 	 (! n mpz
+;; 	 (! one_bits bv
+;; 	 (! sc (^ (mk_ones n)  one_bits)
+;; 	 (! a (term (BitVec n))
+;; 	 (! b (term (BitVec n))
+;; 	 (! a' (term (BitVec n))
+;; 	 (! rwa (rw_term _  a a')
+;; 	 (! rwb (rw_term _  b (a_bv _ one_bits))
+;; 	 (rw_term _ (bvxor _ a b)
+;; 	 	  (bvnot _ a')))))))))))
+
+
+;; ;; (bvnot (bvnot a)) => a
+;; (declare bvnot_idemp
+;; 	 (! n mpz
+;; 	 (! a (term (BitVec n))
+;; 	 (! a' (term (BitVec n))
+;; 	 (! rwa (rw_term _  a a')
+;; 	 (rw_term _ (bvnot _ (bvnot _ a))
+;; 	 	  a'))))))
diff --git a/proofs/signatures/th_bv_rewrites.plf b/proofs/signatures/th_bv_rewrites.plf
new file mode 100644
index 0000000..bf5dea9
--- /dev/null
+++ b/proofs/signatures/th_bv_rewrites.plf
@@ -0,0 +1,22 @@
+;
+; Equality swap
+;
+
+(declare rr_bv_eq
+	 (! n mpz
+	 (! t1 (term (BitVec n))
+ 	 (! t2 (term (BitVec n))
+	     (th_holds (iff (= (BitVec n) t2 t1) (= (BitVec n) t1 t2)))))))
+
+;
+; Additional rules...
+;
+
+;
+; Default, if nothing else applied
+;
+
+(declare rr_bv_default
+	 (! t1 formula
+ 	 (! t2 formula
+	     (th_holds (iff t1 t2))))))
diff --git a/proofs/signatures/th_int.plf b/proofs/signatures/th_int.plf
new file mode 100644
index 0000000..9a0a2d6
--- /dev/null
+++ b/proofs/signatures/th_int.plf
@@ -0,0 +1,25 @@
+(declare Int sort)
+
+(define arithpred_Int (! x (term Int)
+                      (! y (term Int)
+                        formula)))
+
+(declare >_Int arithpred_Int)
+(declare >=_Int arithpred_Int)
+(declare <_Int  arithpred_Int)
+(declare <=_Int arithpred_Int)
+
+(define arithterm_Int (! x (term Int)
+		      (! y (term Int)
+		        (term Int))))
+
+(declare +_Int arithterm_Int)
+(declare -_Int arithterm_Int)
+(declare *_Int arithterm_Int)  ; is * ok to use?
+(declare /_Int arithterm_Int)  ; is / ok to use?
+
+; a constant term
+(declare a_int (! x mpz (term Int)))
+
+; unary negation
+(declare u-_Int (! t (term Int) (term Int)))
diff --git a/proofs/signatures/th_quant.plf b/proofs/signatures/th_quant.plf
new file mode 100644
index 0000000..e212f83
--- /dev/null
+++ b/proofs/signatures/th_quant.plf
@@ -0,0 +1,79 @@
+(declare forall (! s sort
+                (! t (term s)
+                (! f formula
+                  formula))))
+
+(program eqterm ((n1 term) (n2 term)) bool
+    (do (markvar n1)
+        (let s (ifmarked n2 tt ff)
+           (do (markvar n1) s))))
+
+(program is_inst_t ((ti term) (t term) (k term)) bool
+  (match t
+    ((apply s1 s2 t1 t2)
+      (match ti
+        ((apply si1 si2 ti1 ti2) (match (is_inst_t ti1 t1 k) (tt (is_inst_t ti2 t2 k)) (ff ff)))
+        (default ff)))
+    (default (eqterm ti (ifmarked t k t)))))
+
+(program is_inst_f ((fi formula) (f formula) (k term)) bool
+  (match f
+    ((and f1 f2) (match fi
+    		   ((and fi1 fi2) (match (is_inst_f fi1 f1 k) (tt (is_inst_f fi2 f2 k)) (ff ff)))
+    		   (default ff)))
+    ((or f1 f2) (match fi
+    		   ((or fi1 fi2) (match (is_inst_f fi1 f1 k) (tt (is_inst_f fi2 f2 k)) (ff ff)))
+    		   (default ff)))
+    ((impl f1 f2) (match fi
+    		   ((impl fi1 fi2) (match (is_inst_f fi1 f1 k) (tt (is_inst_f fi2 f2 k)) (ff ff)))
+    		   (default ff)))
+    ((not f1) (match fi
+    		   ((not fi1) (is_inst_f fi1 f1 k))
+    		   (default ff)))
+    ((iff f1 f2) (match fi
+    		   ((iff fi1 fi2) (match (is_inst_f fi1 f1 k) (tt (is_inst_f fi2 f2 k)) (ff ff)))
+    		   (default ff)))
+    ((xor f1 f2) (match fi
+    		   ((xor fi1 fi2) (match (is_inst_f fi1 f1 k) (tt (is_inst_f fi2 f2 k)) (ff ff)))
+    		   (default ff)))
+    ((ifte f1 f2 f3) (match fi
+    		       ((ifte fi1 fi2 fi3) (match (is_inst_f fi1 f1 k)
+    		       			     (tt (match (is_inst_f fi2 f2 k) (tt (is_inst_f fi3 f3 k)) (ff ff)))
+    		       			     (ff ff)))
+    		       (default ff)))
+    ((= s t1 t2) (match fi
+    		   ((= s ti1 ti2) (match (is_inst_t ti1 t1 k) (tt (is_inst_t ti2 t2 k)) (ff ff)))
+    		   (default ff)))
+    ((forall s t1 f1) (match fi
+    		      ((forall s ti1 fi1) (is_inst_f fi1 f1 k))
+    		      (default ff)))
+    (default ff)))
+
+(program is_inst ((fi formula) (f formula) (t term) (k term)) bool
+  (do (markvar t)
+     (let f1 (is_inst_f fi f k)
+        (do (markvar t) f1))))
+
+(declare skolem
+  (! s sort
+  (! t (term s)
+  (! f formula
+  (! p (th_holds (not (forall s t f)))
+  (! u (! k (term s)
+       (! fi formula
+       (! p1 (th_holds (not fi))
+       (! r (^ (is_inst fi f t k) tt)
+         (holds cln)))))
+    (holds cln)))))))
+
+(declare inst
+  (! s sort
+  (! t (term s)
+  (! f formula
+  (! k (term s)
+  (! fi formula
+  (! p (th_holds (forall s t f))
+  (! r (^ (is_inst fi f t k) tt)
+  (! u (! p1 (th_holds fi)
+            (holds cln))
+    (holds cln))))))))))
diff --git a/proofs/signatures/th_real.plf b/proofs/signatures/th_real.plf
new file mode 100644
index 0000000..3478e23
--- /dev/null
+++ b/proofs/signatures/th_real.plf
@@ -0,0 +1,25 @@
+(declare Real sort)
+
+(define arithpred_Real (! x (term Real)
+                       (! y (term Real)
+                         formula)))
+
+(declare >_Real arithpred_Real)
+(declare >=_Real arithpred_Real)
+(declare <_Real  arithpred_Real)
+(declare <=_Real arithpred_Real)
+
+(define arithterm_Real (! x (term Real)
+                       (! y (term Real)
+                         (term Real))))
+
+(declare +_Real arithterm_Real)
+(declare -_Real arithterm_Real)
+(declare *_Real arithterm_Real)  ; is * ok to use?
+(declare /_Real arithterm_Real)  ; is / ok to use?
+
+; a constant term
+(declare a_real (! x mpq (term Real)))
+
+; unary negation
+(declare u-_Real (! t (term Real) (term Real)))
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..c05065c
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,701 @@
+# LIBCVC4_VERSION (-version-info) is in the form current:revision:age
+#
+# current -
+#   increment if interfaces have been added, removed or changed
+# revision -
+#   increment if source code has changed
+#   set to zero if current is incremented
+# age -
+#   increment if interfaces have been added
+#   set to zero if interfaces have been removed
+#   or changed
+#
+LIBCVC4_VERSION = @CVC4_LIBRARY_VERSION@
+
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4LIB \
+	-D __STDC_LIMIT_MACROS \
+	-D __STDC_FORMAT_MACROS \
+	-I at builddir@ -I at srcdir@/include -I at srcdir@ -I at top_srcdir@/proofs/lfsc_checker
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas -Wno-parentheses $(FLAG_VISIBILITY_HIDDEN)
+
+SUBDIRS = lib base options util expr smt_util prop/minisat prop/bvminisat . parser compat bindings main
+# The THEORIES list has been moved to Makefile.theories
+include @top_srcdir@/src/Makefile.theories
+
+lib_LTLIBRARIES = libcvc4.la
+
+libcvc4_la_LDFLAGS = -version-info $(LIBCVC4_VERSION)
+
+# This "tricks" automake into linking us as a C++ library (rather than
+# as a C library, which messes up exception handling support)
+nodist_EXTRA_libcvc4_la_SOURCES = dummy.cpp
+libcvc4_la_SOURCES = \
+	git_versioninfo.cpp \
+	svn_versioninfo.cpp \
+	context/backtrackable.h \
+	context/context.cpp \
+	context/context.h \
+	context/context_mm.cpp \
+	context/context_mm.h \
+	context/cdo.h \
+	context/cdlist.h \
+	context/cdchunk_list.h \
+	context/cdlist_forward.h \
+	context/cdqueue.h \
+	context/cdtrail_queue.h \
+	context/cdtrail_hashmap.h \
+	context/cdtrail_hashmap_forward.h \
+	context/cdinsert_hashmap.h \
+	context/cdinsert_hashmap_forward.h \
+	context/cdhashmap.h \
+	context/cdhashmap_forward.h \
+	context/cdhashset.h \
+	context/cdhashset_forward.h \
+	context/cdvector.h \
+	context/cdmaybe.h \
+	context/stacking_vector.h \
+	context/cddense_set.h \
+	decision/decision_attributes.h \
+	decision/decision_engine.h \
+	decision/decision_engine.cpp \
+	decision/decision_strategy.h \
+	decision/justification_heuristic.h \
+	decision/justification_heuristic.cpp \
+	printer/printer.h \
+	printer/printer.cpp \
+	printer/dagification_visitor.h \
+	printer/dagification_visitor.cpp \
+	printer/ast/ast_printer.h \
+	printer/ast/ast_printer.cpp \
+	printer/smt1/smt1_printer.h \
+	printer/smt1/smt1_printer.cpp \
+	printer/smt2/smt2_printer.h \
+	printer/smt2/smt2_printer.cpp \
+	printer/cvc/cvc_printer.h \
+	printer/cvc/cvc_printer.cpp \
+	printer/tptp/tptp_printer.h \
+	printer/tptp/tptp_printer.cpp \
+	proof/arith_proof.cpp \
+	proof/arith_proof.h \
+	proof/array_proof.cpp \
+	proof/array_proof.h \
+	proof/bitvector_proof.cpp \
+	proof/bitvector_proof.h \
+	proof/clause_id.h \
+	proof/cnf_proof.cpp \
+	proof/cnf_proof.h \
+	proof/proof.h \
+	proof/proof_manager.cpp \
+	proof/proof_manager.h \
+	proof/proof_utils.cpp \
+	proof/proof_utils.h \
+	proof/sat_proof.h \
+	proof/sat_proof_implementation.h \
+	proof/skolemization_manager.cpp \
+	proof/skolemization_manager.h \
+	proof/theory_proof.cpp \
+	proof/theory_proof.h \
+	proof/lemma_proof.cpp \
+	proof/lemma_proof.h \
+	proof/uf_proof.cpp \
+	proof/uf_proof.h \
+	proof/unsat_core.cpp \
+	proof/unsat_core.h \
+	proof/proof_output_channel.cpp \
+	proof/proof_output_channel.h \
+	prop/cnf_stream.cpp \
+	prop/cnf_stream.h \
+	prop/prop_engine.cpp \
+	prop/prop_engine.h \
+	prop/registrar.h \
+	prop/sat_solver.h \
+	prop/sat_solver_factory.cpp \
+	prop/sat_solver_factory.h \
+	prop/sat_solver_types.h \
+	prop/cryptominisat.h \
+	prop/cryptominisat.cpp \
+	prop/theory_proxy.cpp \
+	prop/theory_proxy.h \
+	smt/command.cpp \
+	smt/command.h \
+	smt/command_list.cpp \
+	smt/command_list.h \
+	smt/dump.cpp \
+	smt/dump.h \
+	smt/term_formula_removal.cpp \
+	smt/term_formula_removal.h \
+	smt/logic_exception.h \
+	smt/logic_request.cpp \
+	smt/logic_request.h \
+	smt/managed_ostreams.cpp \
+	smt/managed_ostreams.h \
+	smt/model.cpp \
+	smt/model.h \
+	smt/smt_engine.cpp \
+	smt/smt_engine.h \
+	smt/smt_engine_check_proof.cpp \
+	smt/smt_engine_scope.cpp \
+	smt/smt_engine_scope.h \
+	smt/smt_statistics_registry.cpp \
+	smt/smt_statistics_registry.h \
+	smt/update_ostream.h \
+	theory/logic_info.h \
+	theory/logic_info.cpp \
+	theory/output_channel.h \
+	theory/interrupted.h \
+	theory/sort_inference.cpp \
+	theory/sort_inference.h \
+	theory/type_enumerator.h \
+	theory/theory_engine.h \
+	theory/theory_engine.cpp \
+	theory/theory_test_utils.h \
+	theory/theory.h \
+	theory/theory.cpp \
+	theory/theory_registrar.h \
+	theory/rewriter.h \
+	theory/rewriter_attributes.h \
+	theory/rewriter.cpp \
+	theory/substitutions.h \
+	theory/substitutions.cpp \
+	theory/valuation.h \
+	theory/valuation.cpp \
+	theory/shared_terms_database.h \
+	theory/shared_terms_database.cpp \
+	theory/term_registration_visitor.h \
+	theory/term_registration_visitor.cpp \
+	theory/ite_utilities.h \
+	theory/ite_utilities.cpp \
+	theory/unconstrained_simplifier.h \
+	theory/unconstrained_simplifier.cpp \
+	theory/quantifiers_engine.h \
+	theory/quantifiers_engine.cpp \
+	theory/theory_model.h \
+	theory/theory_model.cpp \
+	theory/rep_set.h \
+	theory/rep_set.cpp \
+	theory/atom_requests.h \
+	theory/atom_requests.cpp \
+	theory/uf/theory_uf.h \
+	theory/uf/theory_uf.cpp \
+	theory/uf/theory_uf_type_rules.h \
+	theory/uf/theory_uf_rewriter.h \
+	theory/uf/equality_engine.h \
+	theory/uf/equality_engine_types.h \
+	theory/uf/equality_engine.cpp \
+	theory/uf/symmetry_breaker.h \
+	theory/uf/symmetry_breaker.cpp \
+	theory/uf/theory_uf_strong_solver.h \
+	theory/uf/theory_uf_strong_solver.cpp \
+	theory/uf/theory_uf_model.h \
+	theory/uf/theory_uf_model.cpp \
+	theory/bv/theory_bv_utils.h \
+	theory/bv/theory_bv_utils.cpp \
+	theory/bv/type_enumerator.h \
+	theory/bv/bv_to_bool.h \
+	theory/bv/bv_to_bool.cpp \
+	theory/bv/bv_subtheory.h \
+	theory/bv/bv_subtheory_core.h \
+	theory/bv/bv_subtheory_core.cpp \
+	theory/bv/bv_subtheory_bitblast.h \
+	theory/bv/bv_subtheory_bitblast.cpp \
+	theory/bv/bv_subtheory_inequality.h \
+	theory/bv/bv_subtheory_inequality.cpp \
+	theory/bv/bv_inequality_graph.h \
+	theory/bv/bv_inequality_graph.cpp \
+	theory/bv/bitblast_strategies_template.h \
+	theory/bv/bitblaster_template.h \
+	theory/bv/lazy_bitblaster.cpp \
+	theory/bv/eager_bitblaster.cpp \
+	theory/bv/aig_bitblaster.cpp \
+	theory/bv/bv_eager_solver.h \
+	theory/bv/bv_eager_solver.cpp \
+	theory/bv/slicer.h \
+	theory/bv/slicer.cpp \
+	theory/bv/theory_bv.h \
+	theory/bv/theory_bv.cpp \
+	theory/bv/theory_bv_rewrite_rules.h \
+	theory/bv/theory_bv_rewrite_rules_core.h \
+	theory/bv/theory_bv_rewrite_rules_operator_elimination.h \
+	theory/bv/theory_bv_rewrite_rules_constant_evaluation.h \
+	theory/bv/theory_bv_rewrite_rules_normalization.h \
+	theory/bv/theory_bv_rewrite_rules_simplification.h \
+	theory/bv/theory_bv_type_rules.h \
+	theory/bv/theory_bv_rewriter.h \
+	theory/bv/theory_bv_rewriter.cpp \
+	theory/bv/cd_set_collection.h \
+	theory/bv/abstraction.h \
+	theory/bv/abstraction.cpp \
+	theory/bv/bv_quick_check.h \
+	theory/bv/bv_quick_check.cpp \
+	theory/bv/bv_subtheory_algebraic.h \
+	theory/bv/bv_subtheory_algebraic.cpp \
+	theory/bv/bitblast_utils.h \
+	theory/bv/bvintropow2.h \
+	theory/bv/bvintropow2.cpp \
+	theory/idl/idl_model.h \
+	theory/idl/idl_model.cpp \
+	theory/idl/idl_assertion.h \
+	theory/idl/idl_assertion.cpp \
+	theory/idl/idl_assertion_db.h \
+	theory/idl/idl_assertion_db.cpp \
+	theory/idl/theory_idl.h \
+	theory/idl/theory_idl.cpp \
+	theory/builtin/theory_builtin_type_rules.h \
+	theory/builtin/type_enumerator.h \
+	theory/builtin/theory_builtin_rewriter.h \
+	theory/builtin/theory_builtin_rewriter.cpp \
+	theory/builtin/theory_builtin.h \
+	theory/builtin/theory_builtin.cpp \
+	theory/datatypes/theory_datatypes_type_rules.h \
+	theory/datatypes/type_enumerator.h \
+	theory/datatypes/type_enumerator.cpp \
+	theory/datatypes/theory_datatypes.h \
+	theory/datatypes/datatypes_rewriter.h \
+	theory/datatypes/theory_datatypes.cpp \
+	theory/datatypes/datatypes_sygus.h \
+	theory/datatypes/datatypes_sygus.cpp \
+	theory/sets/normal_form.h \
+	theory/sets/theory_sets.cpp \
+	theory/sets/theory_sets.h \
+	theory/sets/theory_sets_private.cpp \
+	theory/sets/theory_sets_private.h \
+	theory/sets/theory_sets_rewriter.cpp \
+	theory/sets/theory_sets_rewriter.h \
+	theory/sets/theory_sets_type_enumerator.h \
+	theory/sets/theory_sets_type_rules.h \
+	theory/sets/theory_sets_rels.cpp \
+	theory/sets/theory_sets_rels.h \
+	theory/sets/rels_utils.h \
+	theory/strings/theory_strings.h \
+	theory/strings/theory_strings.cpp \
+	theory/strings/theory_strings_rewriter.h \
+	theory/strings/theory_strings_rewriter.cpp \
+	theory/strings/theory_strings_type_rules.h \
+	theory/strings/type_enumerator.h \
+	theory/strings/theory_strings_preprocess.h \
+	theory/strings/theory_strings_preprocess.cpp \
+	theory/strings/regexp_operation.cpp \
+	theory/strings/regexp_operation.h \
+	theory/arrays/theory_arrays_type_rules.h \
+	theory/arrays/type_enumerator.h \
+	theory/arrays/theory_arrays_rewriter.h \
+	theory/arrays/theory_arrays_rewriter.cpp \
+	theory/arrays/theory_arrays.h \
+	theory/arrays/theory_arrays.cpp \
+	theory/arrays/union_find.h \
+	theory/arrays/union_find.cpp \
+	theory/arrays/array_info.h \
+	theory/arrays/array_info.cpp \
+	theory/arrays/static_fact_manager.h \
+	theory/arrays/static_fact_manager.cpp \
+	theory/arrays/array_proof_reconstruction.cpp \
+	theory/arrays/array_proof_reconstruction.h \
+	theory/quantifiers/theory_quantifiers_type_rules.h \
+	theory/quantifiers/theory_quantifiers.h \
+	theory/quantifiers/quantifiers_rewriter.h \
+	theory/quantifiers/quantifiers_rewriter.cpp \
+	theory/quantifiers/theory_quantifiers.cpp \
+	theory/quantifiers/instantiation_engine.h \
+	theory/quantifiers/instantiation_engine.cpp \
+	theory/quantifiers/trigger.h \
+	theory/quantifiers/trigger.cpp \
+	theory/quantifiers/candidate_generator.h \
+	theory/quantifiers/candidate_generator.cpp \
+	theory/quantifiers/inst_match.h \
+	theory/quantifiers/inst_match.cpp \
+	theory/quantifiers/model_engine.h \
+	theory/quantifiers/model_engine.cpp \
+	theory/quantifiers/term_database.h \
+	theory/quantifiers/term_database.cpp \
+	theory/quantifiers/first_order_model.h \
+	theory/quantifiers/first_order_model.cpp \
+	theory/quantifiers/model_builder.h \
+	theory/quantifiers/model_builder.cpp \
+	theory/quantifiers/quantifiers_attributes.h \
+	theory/quantifiers/quantifiers_attributes.cpp \
+	theory/quantifiers/quant_util.h \
+	theory/quantifiers/quant_util.cpp \
+	theory/quantifiers/inst_match_generator.h \
+	theory/quantifiers/inst_match_generator.cpp \
+	theory/quantifiers/macros.h \
+	theory/quantifiers/macros.cpp \
+	theory/quantifiers/inst_strategy_e_matching.h \
+	theory/quantifiers/inst_strategy_e_matching.cpp \
+	theory/quantifiers/inst_strategy_cbqi.h \
+	theory/quantifiers/inst_strategy_cbqi.cpp \
+	theory/quantifiers/full_model_check.h \
+	theory/quantifiers/full_model_check.cpp \
+	theory/quantifiers/bounded_integers.h \
+	theory/quantifiers/bounded_integers.cpp \
+	theory/quantifiers/alpha_equivalence.h \
+	theory/quantifiers/alpha_equivalence.cpp \
+	theory/quantifiers/rewrite_engine.h \
+	theory/quantifiers/rewrite_engine.cpp \
+	theory/quantifiers/relevant_domain.h \
+	theory/quantifiers/relevant_domain.cpp \
+	theory/quantifiers/symmetry_breaking.h \
+	theory/quantifiers/symmetry_breaking.cpp \
+	theory/quantifiers/ambqi_builder.h \
+	theory/quantifiers/ambqi_builder.cpp \
+	theory/quantifiers/quant_conflict_find.h \
+	theory/quantifiers/quant_conflict_find.cpp \
+	theory/quantifiers/conjecture_generator.h \
+	theory/quantifiers/conjecture_generator.cpp \
+	theory/quantifiers/ce_guided_instantiation.h \
+	theory/quantifiers/ce_guided_instantiation.cpp \
+	theory/quantifiers/ce_guided_single_inv.h \
+	theory/quantifiers/ce_guided_single_inv.cpp \
+	theory/quantifiers/ce_guided_single_inv_sol.h \
+	theory/quantifiers/ce_guided_single_inv_sol.cpp \
+	theory/quantifiers/ce_guided_single_inv_ei.h \
+	theory/quantifiers/ce_guided_single_inv_ei.cpp \
+	theory/quantifiers/local_theory_ext.h \
+	theory/quantifiers/local_theory_ext.cpp \
+	theory/quantifiers/fun_def_process.h \
+	theory/quantifiers/fun_def_process.cpp \
+	theory/quantifiers/fun_def_engine.h \
+	theory/quantifiers/fun_def_engine.cpp \
+	theory/quantifiers/quant_equality_engine.h \
+	theory/quantifiers/quant_equality_engine.cpp \
+	theory/quantifiers/ceg_instantiator.h \
+	theory/quantifiers/ceg_instantiator.cpp \
+	theory/quantifiers/ceg_t_instantiator.h \
+	theory/quantifiers/ceg_t_instantiator.cpp \
+	theory/quantifiers/quant_split.h \
+	theory/quantifiers/quant_split.cpp \
+	theory/quantifiers/anti_skolem.h \
+	theory/quantifiers/anti_skolem.cpp \
+	theory/quantifiers/equality_infer.h \
+	theory/quantifiers/equality_infer.cpp \
+	theory/quantifiers/inst_propagator.h \
+	theory/quantifiers/inst_propagator.cpp \
+	theory/arith/theory_arith_type_rules.h \
+	theory/arith/type_enumerator.h \
+	theory/arith/arithvar.h \
+	theory/arith/arithvar.cpp \
+	theory/arith/bound_counts.h \
+	theory/arith/arith_ite_utils.h \
+	theory/arith/arith_ite_utils.cpp \
+	theory/arith/arith_rewriter.h \
+	theory/arith/arith_rewriter.cpp \
+	theory/arith/arith_static_learner.h \
+	theory/arith/arith_static_learner.cpp \
+	theory/arith/constraint_forward.h \
+	theory/arith/constraint.h \
+	theory/arith/constraint.cpp \
+	theory/arith/congruence_manager.h \
+	theory/arith/congruence_manager.cpp \
+	theory/arith/normal_form.h\
+	theory/arith/normal_form.cpp \
+	theory/arith/arith_utilities.h \
+	theory/arith/delta_rational.h \
+	theory/arith/delta_rational.cpp \
+	theory/arith/partial_model.h \
+	theory/arith/partial_model.cpp \
+	theory/arith/linear_equality.h \
+	theory/arith/linear_equality.cpp \
+	theory/arith/simplex_update.h \
+	theory/arith/simplex_update.cpp \
+	theory/arith/callbacks.h \
+	theory/arith/callbacks.cpp \
+	theory/arith/matrix.h \
+	theory/arith/matrix.cpp \
+	theory/arith/tableau.h \
+	theory/arith/tableau.cpp \
+	theory/arith/tableau_sizes.h \
+	theory/arith/tableau_sizes.cpp \
+	theory/arith/error_set.h \
+	theory/arith/error_set.cpp \
+	theory/arith/simplex.h \
+	theory/arith/simplex.cpp \
+	theory/arith/dual_simplex.h \
+	theory/arith/dual_simplex.cpp \
+	theory/arith/fc_simplex.h \
+	theory/arith/fc_simplex.cpp \
+	theory/arith/soi_simplex.h \
+	theory/arith/soi_simplex.cpp \
+	theory/arith/infer_bounds.h \
+	theory/arith/infer_bounds.cpp \
+	theory/arith/approx_simplex.h \
+	theory/arith/approx_simplex.cpp \
+	theory/arith/attempt_solution_simplex.h \
+	theory/arith/attempt_solution_simplex.cpp \
+	theory/arith/theory_arith.h \
+	theory/arith/theory_arith.cpp \
+	theory/arith/theory_arith_private_forward.h \
+	theory/arith/theory_arith_private.h \
+	theory/arith/theory_arith_private.cpp \
+	theory/arith/dio_solver.h \
+	theory/arith/dio_solver.cpp \
+	theory/arith/pseudoboolean_proc.h \
+	theory/arith/pseudoboolean_proc.cpp \
+	theory/arith/cut_log.h \
+	theory/arith/cut_log.cpp \
+	theory/booleans/type_enumerator.h \
+	theory/booleans/theory_bool.h \
+	theory/booleans/theory_bool.cpp \
+	theory/booleans/theory_bool_type_rules.h \
+	theory/booleans/theory_bool_rewriter.h \
+	theory/booleans/theory_bool_rewriter.cpp \
+	theory/booleans/circuit_propagator.h \
+	theory/booleans/circuit_propagator.cpp \
+	theory/fp/theory_fp.h \
+	theory/fp/theory_fp.cpp \
+	theory/fp/theory_fp_rewriter.h \
+	theory/fp/theory_fp_rewriter.cpp \
+	theory/fp/theory_fp_type_rules.h \
+	theory/sep/theory_sep.h \
+	theory/sep/theory_sep.cpp \
+	theory/sep/theory_sep_rewriter.h \
+	theory/sep/theory_sep_rewriter.cpp \
+	theory/sep/theory_sep_type_rules.h
+
+nodist_libcvc4_la_SOURCES = \
+	theory/rewriter_tables.h \
+	theory/theory_traits.h \
+	theory/type_enumerator.cpp
+
+libcvc4_la_LIBADD = \
+	@builddir@/base/libbase.la \
+	@builddir@/options/liboptions.la \
+	@builddir@/util/libutil.la \
+	@builddir@/expr/libexpr.la \
+	@builddir@/smt_util/libsmtutil.la \
+	@builddir@/prop/minisat/libminisat.la \
+	@builddir@/prop/bvminisat/libbvminisat.la
+if CVC4_PROOF
+libcvc4_la_LIBADD += \
+	@top_builddir@/proofs/lfsc_checker/liblfsc_checker.la \
+	@top_builddir@/proofs/signatures/libsignatures.la
+endif
+
+libcvc4_la_LIBADD += \
+	@builddir@/lib/libreplacements.la
+
+if CVC4_USE_GLPK
+libcvc4_la_LIBADD += $(GLPK_LIBS)
+libcvc4_la_LDFLAGS += $(GLPK_LDFLAGS)
+endif
+
+if CVC4_USE_ABC
+libcvc4_la_LIBADD += $(ABC_LIBS)
+libcvc4_la_LDFLAGS += $(ABC_LDFLAGS)
+endif
+
+if CVC4_USE_CRYPTOMINISAT
+libcvc4_la_LIBADD += $(CRYPTOMINISAT_LIBS)
+libcvc4_la_LDFLAGS += $(CRYPTOMINISAT_LDFLAGS)
+endif
+
+
+BUILT_SOURCES = \
+	theory/rewriter_tables.h \
+	theory/theory_traits.h \
+	theory/type_enumerator.cpp \
+	$(top_builddir)/src/.subdirs
+
+CLEANFILES = \
+	svn_versioninfo.cpp \
+	svninfo.tmp \
+	svninfo \
+	git_versioninfo.cpp \
+	gitinfo.tmp \
+	gitinfo \
+	theory/rewriter_tables.h \
+	theory/theory_traits.h \
+	theory/type_enumerator.cpp \
+	$(top_builddir)/src/.subdirs
+
+EXTRA_DIST = \
+	Makefile.theories \
+	cvc4.i \
+	include/cvc4.h \
+	include/cvc4_private.h \
+	include/cvc4_private_library.h \
+	include/cvc4_public.h \
+	include/cvc4parser_private.h \
+	include/cvc4parser_public.h \
+	mksubdirs \
+	smt/command.i \
+	smt/logic_exception.i \
+	smt/smt_engine.i \
+	proof/unsat_core.i \
+	theory/arith/kinds \
+	theory/arrays/kinds \
+	theory/booleans/kinds \
+	theory/builtin/kinds \
+	theory/bv/kinds \
+	theory/datatypes/kinds \
+	theory/example/ecdata.cpp \
+	theory/example/ecdata.h \
+	theory/example/theory_uf_tim.cpp \
+	theory/example/theory_uf_tim.h \
+	theory/fp/kinds \
+	theory/idl/kinds \
+	theory/logic_info.i \
+	theory/mkrewriter \
+	theory/mktheorytraits \
+	theory/quantifiers/kinds \
+	theory/rewriter_tables_template.h \
+	theory/sep/kinds \
+	theory/sets/kinds \
+	theory/strings/kinds \
+	theory/theory_traits_template.h \
+	theory/type_enumerator_template.cpp \
+	theory/uf/kinds
+
+svn_versioninfo.cpp: svninfo
+	$(AM_V_GEN)( \
+	  if test -s svninfo; then \
+	    issvn=true; \
+	    branch=`grep '^URL: ' svninfo | sed 's,.*/cvc4/,,'`; \
+	    rev=`grep '^Revision: ' svninfo | awk '{print$$2}'`; \
+	    mods=`grep '^Modifications: ' svninfo | awk '{print$$2} END { if(!NR) print "false" }'`; \
+	  else \
+	    issvn=false; \
+	    branch=unknown; \
+	    rev=0; \
+	    mods=false; \
+	  fi; \
+	  echo "#include \"base/configuration.h\""; \
+	  echo "const bool ::CVC4::Configuration::IS_SUBVERSION_BUILD = $$issvn;"; \
+	  echo "const char* const ::CVC4::Configuration::SUBVERSION_BRANCH_NAME = \"$$branch\";"; \
+	  echo "const unsigned ::CVC4::Configuration::SUBVERSION_REVISION = $$rev;"; \
+	  echo "const bool ::CVC4::Configuration::SUBVERSION_HAS_MODIFICATIONS = $$mods;"; \
+	) >"$@"
+# This .tmp business is to keep from having to re-compile options.cpp
+# (and then re-link the libraries) if nothing has changed.
+svninfo: svninfo.tmp
+	$(AM_V_GEN)if diff -q svninfo.tmp svninfo &>/dev/null; then rm -f svninfo.tmp; else mv svninfo.tmp svninfo; fi
+# .PHONY ensures the .tmp version is always rebuilt (to check for any changes)
+.PHONY: svninfo.tmp
+svninfo.tmp:
+	$(AM_V_GEN)(cd "$(top_srcdir)" && svn info && echo "Modifications: `test -z \"\`svn status -q\`\" && echo false || echo true`") >"$@" 2>/dev/null || true
+
+git_versioninfo.cpp: gitinfo
+	$(AM_V_GEN)( \
+	  if test -s gitinfo; then \
+	    isgit=true; \
+	    branch=`head -1 gitinfo`; \
+	    rev=`head -2 gitinfo | tail -1 | awk '{print$$1}'`; \
+	    mods=`grep '^Modifications: ' gitinfo | awk '{print$$2} END { if(!NR) print "false" }'`; \
+	  else \
+	    isgit=false; \
+	    branch=unknown; \
+	    rev=unknown; \
+	    mods=false; \
+	  fi; \
+	  echo "#include \"base/configuration.h\""; \
+	  echo "const bool ::CVC4::Configuration::IS_GIT_BUILD = $$isgit;"; \
+	  echo "const char* const ::CVC4::Configuration::GIT_BRANCH_NAME = \"$$branch\";"; \
+	  echo "const char* const ::CVC4::Configuration::GIT_COMMIT = \"$$rev\";"; \
+	  echo "const bool ::CVC4::Configuration::GIT_HAS_MODIFICATIONS = $$mods;"; \
+	) >"$@"
+# This .tmp business is to keep from having to re-compile options.cpp
+# (and then re-link the libraries) if nothing has changed.
+gitinfo: gitinfo.tmp
+	$(AM_V_GEN)if diff -q gitinfo.tmp gitinfo &>/dev/null; then rm -f gitinfo.tmp; else mv gitinfo.tmp gitinfo; fi || true
+# .PHONY ensures the .tmp version is always rebuilt (to check for any changes)
+.PHONY: gitinfo.tmp
+gitinfo.tmp:
+	$(AM_V_GEN)(cd "$(top_srcdir)"; if test -e .git/HEAD; then if ! grep -q '^ref: refs/heads/' .git/HEAD; then echo; fi; sed 's,^ref: refs/heads/,,' .git/HEAD; git show-ref refs/heads/`sed 's,^ref: refs/heads/,,' .git/HEAD`; echo "Modifications: `test -z \"\`git status -s -uno\`\" && echo false || echo true`"; fi) >"$@" 2>/dev/null || true
+
+install-data-local:
+	(echo include/cvc4.h; \
+	 echo include/cvc4_public.h; \
+	 echo include/cvc4parser_public.h; \
+	 echo base/tls.h; \
+	 echo util/integer.h; \
+	 echo util/rational.h; \
+	 find * -name '*.h' | \
+		xargs grep -l '^# *include  *"cvc4.*_public\.h"'; \
+	(cd "$(srcdir)" && find * -name '*.h' | \
+		xargs grep -l '^# *include  *"cvc4.*_public\.h"')) | \
+	while read f; do \
+		if expr "$$f" : ".*_\(template\|private\|private_library\|test_utils\)\.h$$" &>/dev/null; then \
+			continue; \
+		fi; \
+		d="$$(echo "$$f" | sed 's,^include/,,')"; \
+		$(mkinstalldirs) "$$(dirname "$(DESTDIR)$(includedir)/cvc4/$$d")"; \
+		if [ -e "$$f" ]; then \
+			path="$$f"; \
+		else \
+			path="$(srcdir)/$$f"; \
+		fi; \
+		fixpath="$(top_builddir)/header_install.fix"; \
+		sed 's,^\([ \t]*#[ \t]*include[ \t*]\)"\(.*\)"\([ \t]*\)$$,\1<cvc4/\2>\3,' "$$path" > "$$fixpath" || exit 1; \
+		echo $(INSTALL_DATA) "$$fixpath" "$(DESTDIR)$(includedir)/cvc4/$$d"; \
+		if $(INSTALL_DATA) "$$fixpath" "$(DESTDIR)$(includedir)/cvc4/$$d"; then \
+			rm -f "$$fixpath"; \
+		else \
+			rm -f "$$fixpath"; \
+			exit 1; \
+		fi; \
+	done
+
+uninstall-local:
+	-(echo include/cvc4.h; \
+	  echo include/cvc4_public.h; \
+	  echo include/cvc4parser_public.h; \
+	  echo base/tls.h; \
+	  echo util/integer.h; \
+	  echo util/rational.h; \
+	  find * -name '*.h' | \
+		xargs grep -l '^# *include  *"cvc4.*_public\.h"'; \
+	(cd "$(srcdir)" && find * -name '*.h' | \
+		xargs grep -l '^# *include  *"cvc4.*_public\.h"')) | \
+	while read f; do \
+		if expr "$$f" : ".*_\(template\|private\|private_library\|test_utils\)\.h$$" &>/dev/null; then \
+			continue; \
+		fi; \
+		d="$$(echo "$$f" | sed 's,^include/,,')"; \
+		rm -f "$(DESTDIR)$(includedir)/cvc4/$$d"; \
+	done
+	-rmdir "$(DESTDIR)$(includedir)/cvc4/bindings/compat"
+	-rmdir "$(DESTDIR)$(includedir)/cvc4/bindings"
+	-rmdir "$(DESTDIR)$(includedir)/cvc4"
+	-rmdir "$(DESTDIR)$(libdir)/ocaml/cvc4"
+
+# This rule is ugly.  It's needed to ensure that automake's dependence
+# includes are available during distclean, even though they come from
+# directories that are cleaned first.  Without this rule, "distclean"
+# fails.
+%.Plo:; $(MKDIR_P) "$(dir $@)" && : > "$@"
+
+#include @top_srcdir@/src/theory/Makefile.subdirs
+$(top_builddir)/src/.subdirs: $(top_srcdir)/src/Makefile.theories  @top_srcdir@/src/mksubdirs
+	$(AM_V_at)test -d $(top_builddir)/src || mkdir $(top_builddir)/src
+	$(AM_V_at)chmod +x @top_srcdir@/src/mksubdirs
+	$(AM_V_at)( @top_srcdir@/src/mksubdirs "$(top_srcdir)" ) > $(top_builddir)/src/.subdirs.tmp
+	@if ! diff -q $(top_builddir)/src/.subdirs $(top_builddir)/src/.subdirs.tmp &>/dev/null; then \
+		echo "  GEN   " $@; \
+		$(am__mv) $(top_builddir)/src/.subdirs.tmp $(top_builddir)/src/.subdirs; \
+	fi
+
+theory/rewriter_tables.h: theory/rewriter_tables_template.h theory/mkrewriter @top_builddir@/src/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)test -d $(top_builddir)/src/theory || mkdir -p @top_builddir@/src/theory
+	$(AM_V_at)chmod +x @srcdir@/theory/mkrewriter
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/theory/mkrewriter \
+		$< \
+		`cat @top_builddir@/src/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+theory/theory_traits.h: theory/theory_traits_template.h theory/mktheorytraits @top_builddir@/src/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)test -d $(top_builddir)/src/theory || mkdir -p @top_builddir@/src/theory
+	$(AM_V_at)chmod +x @srcdir@/theory/mktheorytraits
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/theory/mktheorytraits \
+		$< \
+		`cat @top_builddir@/src/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+theory/type_enumerator.cpp: theory/type_enumerator_template.cpp theory/mktheorytraits @top_builddir@/src/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)test -d $(top_builddir)/src/theory || mkdir -p @top_builddir@/src/theory
+	$(AM_V_at)chmod +x @srcdir@/theory/mktheorytraits
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/theory/mktheorytraits \
+		$< \
+		`cat @top_builddir@/src/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
diff --git a/src/Makefile.in b/src/Makefile.in
new file mode 100644
index 0000000..2cedc22
--- /dev/null
+++ b/src/Makefile.in
@@ -0,0 +1,2584 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at CVC4_PROOF_TRUE@am__append_1 = \
+ at CVC4_PROOF_TRUE@	@top_builddir@/proofs/lfsc_checker/liblfsc_checker.la \
+ at CVC4_PROOF_TRUE@	@top_builddir@/proofs/signatures/libsignatures.la
+
+ at CVC4_USE_GLPK_TRUE@am__append_2 = $(GLPK_LIBS)
+ at CVC4_USE_GLPK_TRUE@am__append_3 = $(GLPK_LDFLAGS)
+ at CVC4_USE_ABC_TRUE@am__append_4 = $(ABC_LIBS)
+ at CVC4_USE_ABC_TRUE@am__append_5 = $(ABC_LDFLAGS)
+ at CVC4_USE_CRYPTOMINISAT_TRUE@am__append_6 = $(CRYPTOMINISAT_LIBS)
+ at CVC4_USE_CRYPTOMINISAT_TRUE@am__append_7 = $(CRYPTOMINISAT_LDFLAGS)
+subdir = src
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(libdir)"
+LTLIBRARIES = $(lib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+ at CVC4_USE_GLPK_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
+ at CVC4_USE_ABC_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1)
+ at CVC4_USE_CRYPTOMINISAT_TRUE@am__DEPENDENCIES_4 =  \
+ at CVC4_USE_CRYPTOMINISAT_TRUE@	$(am__DEPENDENCIES_1)
+libcvc4_la_DEPENDENCIES = @builddir@/base/libbase.la \
+	@builddir@/options/liboptions.la @builddir@/util/libutil.la \
+	@builddir@/expr/libexpr.la @builddir@/smt_util/libsmtutil.la \
+	@builddir@/prop/minisat/libminisat.la \
+	@builddir@/prop/bvminisat/libbvminisat.la $(am__append_1) \
+	@builddir@/lib/libreplacements.la $(am__DEPENDENCIES_2) \
+	$(am__DEPENDENCIES_3) $(am__DEPENDENCIES_4)
+am__dirstamp = $(am__leading_dot)dirstamp
+am_libcvc4_la_OBJECTS = git_versioninfo.lo svn_versioninfo.lo \
+	context/context.lo context/context_mm.lo \
+	decision/decision_engine.lo \
+	decision/justification_heuristic.lo printer/printer.lo \
+	printer/dagification_visitor.lo printer/ast/ast_printer.lo \
+	printer/smt1/smt1_printer.lo printer/smt2/smt2_printer.lo \
+	printer/cvc/cvc_printer.lo printer/tptp/tptp_printer.lo \
+	proof/arith_proof.lo proof/array_proof.lo \
+	proof/bitvector_proof.lo proof/cnf_proof.lo \
+	proof/proof_manager.lo proof/proof_utils.lo \
+	proof/skolemization_manager.lo proof/theory_proof.lo \
+	proof/lemma_proof.lo proof/uf_proof.lo proof/unsat_core.lo \
+	proof/proof_output_channel.lo prop/cnf_stream.lo \
+	prop/prop_engine.lo prop/sat_solver_factory.lo \
+	prop/cryptominisat.lo prop/theory_proxy.lo smt/command.lo \
+	smt/command_list.lo smt/dump.lo smt/term_formula_removal.lo \
+	smt/logic_request.lo smt/managed_ostreams.lo smt/model.lo \
+	smt/smt_engine.lo smt/smt_engine_check_proof.lo \
+	smt/smt_engine_scope.lo smt/smt_statistics_registry.lo \
+	theory/logic_info.lo theory/sort_inference.lo \
+	theory/theory_engine.lo theory/theory.lo theory/rewriter.lo \
+	theory/substitutions.lo theory/valuation.lo \
+	theory/shared_terms_database.lo \
+	theory/term_registration_visitor.lo theory/ite_utilities.lo \
+	theory/unconstrained_simplifier.lo \
+	theory/quantifiers_engine.lo theory/theory_model.lo \
+	theory/rep_set.lo theory/atom_requests.lo \
+	theory/uf/theory_uf.lo theory/uf/equality_engine.lo \
+	theory/uf/symmetry_breaker.lo \
+	theory/uf/theory_uf_strong_solver.lo \
+	theory/uf/theory_uf_model.lo theory/bv/theory_bv_utils.lo \
+	theory/bv/bv_to_bool.lo theory/bv/bv_subtheory_core.lo \
+	theory/bv/bv_subtheory_bitblast.lo \
+	theory/bv/bv_subtheory_inequality.lo \
+	theory/bv/bv_inequality_graph.lo theory/bv/lazy_bitblaster.lo \
+	theory/bv/eager_bitblaster.lo theory/bv/aig_bitblaster.lo \
+	theory/bv/bv_eager_solver.lo theory/bv/slicer.lo \
+	theory/bv/theory_bv.lo theory/bv/theory_bv_rewriter.lo \
+	theory/bv/abstraction.lo theory/bv/bv_quick_check.lo \
+	theory/bv/bv_subtheory_algebraic.lo theory/bv/bvintropow2.lo \
+	theory/idl/idl_model.lo theory/idl/idl_assertion.lo \
+	theory/idl/idl_assertion_db.lo theory/idl/theory_idl.lo \
+	theory/builtin/theory_builtin_rewriter.lo \
+	theory/builtin/theory_builtin.lo \
+	theory/datatypes/type_enumerator.lo \
+	theory/datatypes/theory_datatypes.lo \
+	theory/datatypes/datatypes_sygus.lo theory/sets/theory_sets.lo \
+	theory/sets/theory_sets_private.lo \
+	theory/sets/theory_sets_rewriter.lo \
+	theory/sets/theory_sets_rels.lo \
+	theory/strings/theory_strings.lo \
+	theory/strings/theory_strings_rewriter.lo \
+	theory/strings/theory_strings_preprocess.lo \
+	theory/strings/regexp_operation.lo \
+	theory/arrays/theory_arrays_rewriter.lo \
+	theory/arrays/theory_arrays.lo theory/arrays/union_find.lo \
+	theory/arrays/array_info.lo \
+	theory/arrays/static_fact_manager.lo \
+	theory/arrays/array_proof_reconstruction.lo \
+	theory/quantifiers/quantifiers_rewriter.lo \
+	theory/quantifiers/theory_quantifiers.lo \
+	theory/quantifiers/instantiation_engine.lo \
+	theory/quantifiers/trigger.lo \
+	theory/quantifiers/candidate_generator.lo \
+	theory/quantifiers/inst_match.lo \
+	theory/quantifiers/model_engine.lo \
+	theory/quantifiers/term_database.lo \
+	theory/quantifiers/first_order_model.lo \
+	theory/quantifiers/model_builder.lo \
+	theory/quantifiers/quantifiers_attributes.lo \
+	theory/quantifiers/quant_util.lo \
+	theory/quantifiers/inst_match_generator.lo \
+	theory/quantifiers/macros.lo \
+	theory/quantifiers/inst_strategy_e_matching.lo \
+	theory/quantifiers/inst_strategy_cbqi.lo \
+	theory/quantifiers/full_model_check.lo \
+	theory/quantifiers/bounded_integers.lo \
+	theory/quantifiers/alpha_equivalence.lo \
+	theory/quantifiers/rewrite_engine.lo \
+	theory/quantifiers/relevant_domain.lo \
+	theory/quantifiers/symmetry_breaking.lo \
+	theory/quantifiers/ambqi_builder.lo \
+	theory/quantifiers/quant_conflict_find.lo \
+	theory/quantifiers/conjecture_generator.lo \
+	theory/quantifiers/ce_guided_instantiation.lo \
+	theory/quantifiers/ce_guided_single_inv.lo \
+	theory/quantifiers/ce_guided_single_inv_sol.lo \
+	theory/quantifiers/ce_guided_single_inv_ei.lo \
+	theory/quantifiers/local_theory_ext.lo \
+	theory/quantifiers/fun_def_process.lo \
+	theory/quantifiers/fun_def_engine.lo \
+	theory/quantifiers/quant_equality_engine.lo \
+	theory/quantifiers/ceg_instantiator.lo \
+	theory/quantifiers/ceg_t_instantiator.lo \
+	theory/quantifiers/quant_split.lo \
+	theory/quantifiers/anti_skolem.lo \
+	theory/quantifiers/equality_infer.lo \
+	theory/quantifiers/inst_propagator.lo theory/arith/arithvar.lo \
+	theory/arith/arith_ite_utils.lo theory/arith/arith_rewriter.lo \
+	theory/arith/arith_static_learner.lo \
+	theory/arith/constraint.lo theory/arith/congruence_manager.lo \
+	theory/arith/normal_form.lo theory/arith/delta_rational.lo \
+	theory/arith/partial_model.lo theory/arith/linear_equality.lo \
+	theory/arith/simplex_update.lo theory/arith/callbacks.lo \
+	theory/arith/matrix.lo theory/arith/tableau.lo \
+	theory/arith/tableau_sizes.lo theory/arith/error_set.lo \
+	theory/arith/simplex.lo theory/arith/dual_simplex.lo \
+	theory/arith/fc_simplex.lo theory/arith/soi_simplex.lo \
+	theory/arith/infer_bounds.lo theory/arith/approx_simplex.lo \
+	theory/arith/attempt_solution_simplex.lo \
+	theory/arith/theory_arith.lo \
+	theory/arith/theory_arith_private.lo \
+	theory/arith/dio_solver.lo theory/arith/pseudoboolean_proc.lo \
+	theory/arith/cut_log.lo theory/booleans/theory_bool.lo \
+	theory/booleans/theory_bool_rewriter.lo \
+	theory/booleans/circuit_propagator.lo theory/fp/theory_fp.lo \
+	theory/fp/theory_fp_rewriter.lo theory/sep/theory_sep.lo \
+	theory/sep/theory_sep_rewriter.lo
+nodist_libcvc4_la_OBJECTS = theory/type_enumerator.lo
+libcvc4_la_OBJECTS = $(am_libcvc4_la_OBJECTS) \
+	$(nodist_libcvc4_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+libcvc4_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(libcvc4_la_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(libcvc4_la_SOURCES) $(nodist_libcvc4_la_SOURCES) \
+	$(nodist_EXTRA_libcvc4_la_SOURCES)
+DIST_SOURCES = $(libcvc4_la_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+
+# LIBCVC4_VERSION (-version-info) is in the form current:revision:age
+#
+# current -
+#   increment if interfaces have been added, removed or changed
+# revision -
+#   increment if source code has changed
+#   set to zero if current is incremented
+# age -
+#   increment if interfaces have been added
+#   set to zero if interfaces have been removed
+#   or changed
+#
+LIBCVC4_VERSION = @CVC4_LIBRARY_VERSION@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4LIB \
+	-D __STDC_LIMIT_MACROS \
+	-D __STDC_FORMAT_MACROS \
+	-I at builddir@ -I at srcdir@/include -I at srcdir@ -I at top_srcdir@/proofs/lfsc_checker
+
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas -Wno-parentheses $(FLAG_VISIBILITY_HIDDEN)
+SUBDIRS = lib base options util expr smt_util prop/minisat prop/bvminisat . parser compat bindings main
+lib_LTLIBRARIES = libcvc4.la
+libcvc4_la_LDFLAGS = -version-info $(LIBCVC4_VERSION) $(am__append_3) \
+	$(am__append_5) $(am__append_7)
+
+# This "tricks" automake into linking us as a C++ library (rather than
+# as a C library, which messes up exception handling support)
+nodist_EXTRA_libcvc4_la_SOURCES = dummy.cpp
+libcvc4_la_SOURCES = \
+	git_versioninfo.cpp \
+	svn_versioninfo.cpp \
+	context/backtrackable.h \
+	context/context.cpp \
+	context/context.h \
+	context/context_mm.cpp \
+	context/context_mm.h \
+	context/cdo.h \
+	context/cdlist.h \
+	context/cdchunk_list.h \
+	context/cdlist_forward.h \
+	context/cdqueue.h \
+	context/cdtrail_queue.h \
+	context/cdtrail_hashmap.h \
+	context/cdtrail_hashmap_forward.h \
+	context/cdinsert_hashmap.h \
+	context/cdinsert_hashmap_forward.h \
+	context/cdhashmap.h \
+	context/cdhashmap_forward.h \
+	context/cdhashset.h \
+	context/cdhashset_forward.h \
+	context/cdvector.h \
+	context/cdmaybe.h \
+	context/stacking_vector.h \
+	context/cddense_set.h \
+	decision/decision_attributes.h \
+	decision/decision_engine.h \
+	decision/decision_engine.cpp \
+	decision/decision_strategy.h \
+	decision/justification_heuristic.h \
+	decision/justification_heuristic.cpp \
+	printer/printer.h \
+	printer/printer.cpp \
+	printer/dagification_visitor.h \
+	printer/dagification_visitor.cpp \
+	printer/ast/ast_printer.h \
+	printer/ast/ast_printer.cpp \
+	printer/smt1/smt1_printer.h \
+	printer/smt1/smt1_printer.cpp \
+	printer/smt2/smt2_printer.h \
+	printer/smt2/smt2_printer.cpp \
+	printer/cvc/cvc_printer.h \
+	printer/cvc/cvc_printer.cpp \
+	printer/tptp/tptp_printer.h \
+	printer/tptp/tptp_printer.cpp \
+	proof/arith_proof.cpp \
+	proof/arith_proof.h \
+	proof/array_proof.cpp \
+	proof/array_proof.h \
+	proof/bitvector_proof.cpp \
+	proof/bitvector_proof.h \
+	proof/clause_id.h \
+	proof/cnf_proof.cpp \
+	proof/cnf_proof.h \
+	proof/proof.h \
+	proof/proof_manager.cpp \
+	proof/proof_manager.h \
+	proof/proof_utils.cpp \
+	proof/proof_utils.h \
+	proof/sat_proof.h \
+	proof/sat_proof_implementation.h \
+	proof/skolemization_manager.cpp \
+	proof/skolemization_manager.h \
+	proof/theory_proof.cpp \
+	proof/theory_proof.h \
+	proof/lemma_proof.cpp \
+	proof/lemma_proof.h \
+	proof/uf_proof.cpp \
+	proof/uf_proof.h \
+	proof/unsat_core.cpp \
+	proof/unsat_core.h \
+	proof/proof_output_channel.cpp \
+	proof/proof_output_channel.h \
+	prop/cnf_stream.cpp \
+	prop/cnf_stream.h \
+	prop/prop_engine.cpp \
+	prop/prop_engine.h \
+	prop/registrar.h \
+	prop/sat_solver.h \
+	prop/sat_solver_factory.cpp \
+	prop/sat_solver_factory.h \
+	prop/sat_solver_types.h \
+	prop/cryptominisat.h \
+	prop/cryptominisat.cpp \
+	prop/theory_proxy.cpp \
+	prop/theory_proxy.h \
+	smt/command.cpp \
+	smt/command.h \
+	smt/command_list.cpp \
+	smt/command_list.h \
+	smt/dump.cpp \
+	smt/dump.h \
+	smt/term_formula_removal.cpp \
+	smt/term_formula_removal.h \
+	smt/logic_exception.h \
+	smt/logic_request.cpp \
+	smt/logic_request.h \
+	smt/managed_ostreams.cpp \
+	smt/managed_ostreams.h \
+	smt/model.cpp \
+	smt/model.h \
+	smt/smt_engine.cpp \
+	smt/smt_engine.h \
+	smt/smt_engine_check_proof.cpp \
+	smt/smt_engine_scope.cpp \
+	smt/smt_engine_scope.h \
+	smt/smt_statistics_registry.cpp \
+	smt/smt_statistics_registry.h \
+	smt/update_ostream.h \
+	theory/logic_info.h \
+	theory/logic_info.cpp \
+	theory/output_channel.h \
+	theory/interrupted.h \
+	theory/sort_inference.cpp \
+	theory/sort_inference.h \
+	theory/type_enumerator.h \
+	theory/theory_engine.h \
+	theory/theory_engine.cpp \
+	theory/theory_test_utils.h \
+	theory/theory.h \
+	theory/theory.cpp \
+	theory/theory_registrar.h \
+	theory/rewriter.h \
+	theory/rewriter_attributes.h \
+	theory/rewriter.cpp \
+	theory/substitutions.h \
+	theory/substitutions.cpp \
+	theory/valuation.h \
+	theory/valuation.cpp \
+	theory/shared_terms_database.h \
+	theory/shared_terms_database.cpp \
+	theory/term_registration_visitor.h \
+	theory/term_registration_visitor.cpp \
+	theory/ite_utilities.h \
+	theory/ite_utilities.cpp \
+	theory/unconstrained_simplifier.h \
+	theory/unconstrained_simplifier.cpp \
+	theory/quantifiers_engine.h \
+	theory/quantifiers_engine.cpp \
+	theory/theory_model.h \
+	theory/theory_model.cpp \
+	theory/rep_set.h \
+	theory/rep_set.cpp \
+	theory/atom_requests.h \
+	theory/atom_requests.cpp \
+	theory/uf/theory_uf.h \
+	theory/uf/theory_uf.cpp \
+	theory/uf/theory_uf_type_rules.h \
+	theory/uf/theory_uf_rewriter.h \
+	theory/uf/equality_engine.h \
+	theory/uf/equality_engine_types.h \
+	theory/uf/equality_engine.cpp \
+	theory/uf/symmetry_breaker.h \
+	theory/uf/symmetry_breaker.cpp \
+	theory/uf/theory_uf_strong_solver.h \
+	theory/uf/theory_uf_strong_solver.cpp \
+	theory/uf/theory_uf_model.h \
+	theory/uf/theory_uf_model.cpp \
+	theory/bv/theory_bv_utils.h \
+	theory/bv/theory_bv_utils.cpp \
+	theory/bv/type_enumerator.h \
+	theory/bv/bv_to_bool.h \
+	theory/bv/bv_to_bool.cpp \
+	theory/bv/bv_subtheory.h \
+	theory/bv/bv_subtheory_core.h \
+	theory/bv/bv_subtheory_core.cpp \
+	theory/bv/bv_subtheory_bitblast.h \
+	theory/bv/bv_subtheory_bitblast.cpp \
+	theory/bv/bv_subtheory_inequality.h \
+	theory/bv/bv_subtheory_inequality.cpp \
+	theory/bv/bv_inequality_graph.h \
+	theory/bv/bv_inequality_graph.cpp \
+	theory/bv/bitblast_strategies_template.h \
+	theory/bv/bitblaster_template.h \
+	theory/bv/lazy_bitblaster.cpp \
+	theory/bv/eager_bitblaster.cpp \
+	theory/bv/aig_bitblaster.cpp \
+	theory/bv/bv_eager_solver.h \
+	theory/bv/bv_eager_solver.cpp \
+	theory/bv/slicer.h \
+	theory/bv/slicer.cpp \
+	theory/bv/theory_bv.h \
+	theory/bv/theory_bv.cpp \
+	theory/bv/theory_bv_rewrite_rules.h \
+	theory/bv/theory_bv_rewrite_rules_core.h \
+	theory/bv/theory_bv_rewrite_rules_operator_elimination.h \
+	theory/bv/theory_bv_rewrite_rules_constant_evaluation.h \
+	theory/bv/theory_bv_rewrite_rules_normalization.h \
+	theory/bv/theory_bv_rewrite_rules_simplification.h \
+	theory/bv/theory_bv_type_rules.h \
+	theory/bv/theory_bv_rewriter.h \
+	theory/bv/theory_bv_rewriter.cpp \
+	theory/bv/cd_set_collection.h \
+	theory/bv/abstraction.h \
+	theory/bv/abstraction.cpp \
+	theory/bv/bv_quick_check.h \
+	theory/bv/bv_quick_check.cpp \
+	theory/bv/bv_subtheory_algebraic.h \
+	theory/bv/bv_subtheory_algebraic.cpp \
+	theory/bv/bitblast_utils.h \
+	theory/bv/bvintropow2.h \
+	theory/bv/bvintropow2.cpp \
+	theory/idl/idl_model.h \
+	theory/idl/idl_model.cpp \
+	theory/idl/idl_assertion.h \
+	theory/idl/idl_assertion.cpp \
+	theory/idl/idl_assertion_db.h \
+	theory/idl/idl_assertion_db.cpp \
+	theory/idl/theory_idl.h \
+	theory/idl/theory_idl.cpp \
+	theory/builtin/theory_builtin_type_rules.h \
+	theory/builtin/type_enumerator.h \
+	theory/builtin/theory_builtin_rewriter.h \
+	theory/builtin/theory_builtin_rewriter.cpp \
+	theory/builtin/theory_builtin.h \
+	theory/builtin/theory_builtin.cpp \
+	theory/datatypes/theory_datatypes_type_rules.h \
+	theory/datatypes/type_enumerator.h \
+	theory/datatypes/type_enumerator.cpp \
+	theory/datatypes/theory_datatypes.h \
+	theory/datatypes/datatypes_rewriter.h \
+	theory/datatypes/theory_datatypes.cpp \
+	theory/datatypes/datatypes_sygus.h \
+	theory/datatypes/datatypes_sygus.cpp \
+	theory/sets/normal_form.h \
+	theory/sets/theory_sets.cpp \
+	theory/sets/theory_sets.h \
+	theory/sets/theory_sets_private.cpp \
+	theory/sets/theory_sets_private.h \
+	theory/sets/theory_sets_rewriter.cpp \
+	theory/sets/theory_sets_rewriter.h \
+	theory/sets/theory_sets_type_enumerator.h \
+	theory/sets/theory_sets_type_rules.h \
+	theory/sets/theory_sets_rels.cpp \
+	theory/sets/theory_sets_rels.h \
+	theory/sets/rels_utils.h \
+	theory/strings/theory_strings.h \
+	theory/strings/theory_strings.cpp \
+	theory/strings/theory_strings_rewriter.h \
+	theory/strings/theory_strings_rewriter.cpp \
+	theory/strings/theory_strings_type_rules.h \
+	theory/strings/type_enumerator.h \
+	theory/strings/theory_strings_preprocess.h \
+	theory/strings/theory_strings_preprocess.cpp \
+	theory/strings/regexp_operation.cpp \
+	theory/strings/regexp_operation.h \
+	theory/arrays/theory_arrays_type_rules.h \
+	theory/arrays/type_enumerator.h \
+	theory/arrays/theory_arrays_rewriter.h \
+	theory/arrays/theory_arrays_rewriter.cpp \
+	theory/arrays/theory_arrays.h \
+	theory/arrays/theory_arrays.cpp \
+	theory/arrays/union_find.h \
+	theory/arrays/union_find.cpp \
+	theory/arrays/array_info.h \
+	theory/arrays/array_info.cpp \
+	theory/arrays/static_fact_manager.h \
+	theory/arrays/static_fact_manager.cpp \
+	theory/arrays/array_proof_reconstruction.cpp \
+	theory/arrays/array_proof_reconstruction.h \
+	theory/quantifiers/theory_quantifiers_type_rules.h \
+	theory/quantifiers/theory_quantifiers.h \
+	theory/quantifiers/quantifiers_rewriter.h \
+	theory/quantifiers/quantifiers_rewriter.cpp \
+	theory/quantifiers/theory_quantifiers.cpp \
+	theory/quantifiers/instantiation_engine.h \
+	theory/quantifiers/instantiation_engine.cpp \
+	theory/quantifiers/trigger.h \
+	theory/quantifiers/trigger.cpp \
+	theory/quantifiers/candidate_generator.h \
+	theory/quantifiers/candidate_generator.cpp \
+	theory/quantifiers/inst_match.h \
+	theory/quantifiers/inst_match.cpp \
+	theory/quantifiers/model_engine.h \
+	theory/quantifiers/model_engine.cpp \
+	theory/quantifiers/term_database.h \
+	theory/quantifiers/term_database.cpp \
+	theory/quantifiers/first_order_model.h \
+	theory/quantifiers/first_order_model.cpp \
+	theory/quantifiers/model_builder.h \
+	theory/quantifiers/model_builder.cpp \
+	theory/quantifiers/quantifiers_attributes.h \
+	theory/quantifiers/quantifiers_attributes.cpp \
+	theory/quantifiers/quant_util.h \
+	theory/quantifiers/quant_util.cpp \
+	theory/quantifiers/inst_match_generator.h \
+	theory/quantifiers/inst_match_generator.cpp \
+	theory/quantifiers/macros.h \
+	theory/quantifiers/macros.cpp \
+	theory/quantifiers/inst_strategy_e_matching.h \
+	theory/quantifiers/inst_strategy_e_matching.cpp \
+	theory/quantifiers/inst_strategy_cbqi.h \
+	theory/quantifiers/inst_strategy_cbqi.cpp \
+	theory/quantifiers/full_model_check.h \
+	theory/quantifiers/full_model_check.cpp \
+	theory/quantifiers/bounded_integers.h \
+	theory/quantifiers/bounded_integers.cpp \
+	theory/quantifiers/alpha_equivalence.h \
+	theory/quantifiers/alpha_equivalence.cpp \
+	theory/quantifiers/rewrite_engine.h \
+	theory/quantifiers/rewrite_engine.cpp \
+	theory/quantifiers/relevant_domain.h \
+	theory/quantifiers/relevant_domain.cpp \
+	theory/quantifiers/symmetry_breaking.h \
+	theory/quantifiers/symmetry_breaking.cpp \
+	theory/quantifiers/ambqi_builder.h \
+	theory/quantifiers/ambqi_builder.cpp \
+	theory/quantifiers/quant_conflict_find.h \
+	theory/quantifiers/quant_conflict_find.cpp \
+	theory/quantifiers/conjecture_generator.h \
+	theory/quantifiers/conjecture_generator.cpp \
+	theory/quantifiers/ce_guided_instantiation.h \
+	theory/quantifiers/ce_guided_instantiation.cpp \
+	theory/quantifiers/ce_guided_single_inv.h \
+	theory/quantifiers/ce_guided_single_inv.cpp \
+	theory/quantifiers/ce_guided_single_inv_sol.h \
+	theory/quantifiers/ce_guided_single_inv_sol.cpp \
+	theory/quantifiers/ce_guided_single_inv_ei.h \
+	theory/quantifiers/ce_guided_single_inv_ei.cpp \
+	theory/quantifiers/local_theory_ext.h \
+	theory/quantifiers/local_theory_ext.cpp \
+	theory/quantifiers/fun_def_process.h \
+	theory/quantifiers/fun_def_process.cpp \
+	theory/quantifiers/fun_def_engine.h \
+	theory/quantifiers/fun_def_engine.cpp \
+	theory/quantifiers/quant_equality_engine.h \
+	theory/quantifiers/quant_equality_engine.cpp \
+	theory/quantifiers/ceg_instantiator.h \
+	theory/quantifiers/ceg_instantiator.cpp \
+	theory/quantifiers/ceg_t_instantiator.h \
+	theory/quantifiers/ceg_t_instantiator.cpp \
+	theory/quantifiers/quant_split.h \
+	theory/quantifiers/quant_split.cpp \
+	theory/quantifiers/anti_skolem.h \
+	theory/quantifiers/anti_skolem.cpp \
+	theory/quantifiers/equality_infer.h \
+	theory/quantifiers/equality_infer.cpp \
+	theory/quantifiers/inst_propagator.h \
+	theory/quantifiers/inst_propagator.cpp \
+	theory/arith/theory_arith_type_rules.h \
+	theory/arith/type_enumerator.h \
+	theory/arith/arithvar.h \
+	theory/arith/arithvar.cpp \
+	theory/arith/bound_counts.h \
+	theory/arith/arith_ite_utils.h \
+	theory/arith/arith_ite_utils.cpp \
+	theory/arith/arith_rewriter.h \
+	theory/arith/arith_rewriter.cpp \
+	theory/arith/arith_static_learner.h \
+	theory/arith/arith_static_learner.cpp \
+	theory/arith/constraint_forward.h \
+	theory/arith/constraint.h \
+	theory/arith/constraint.cpp \
+	theory/arith/congruence_manager.h \
+	theory/arith/congruence_manager.cpp \
+	theory/arith/normal_form.h\
+	theory/arith/normal_form.cpp \
+	theory/arith/arith_utilities.h \
+	theory/arith/delta_rational.h \
+	theory/arith/delta_rational.cpp \
+	theory/arith/partial_model.h \
+	theory/arith/partial_model.cpp \
+	theory/arith/linear_equality.h \
+	theory/arith/linear_equality.cpp \
+	theory/arith/simplex_update.h \
+	theory/arith/simplex_update.cpp \
+	theory/arith/callbacks.h \
+	theory/arith/callbacks.cpp \
+	theory/arith/matrix.h \
+	theory/arith/matrix.cpp \
+	theory/arith/tableau.h \
+	theory/arith/tableau.cpp \
+	theory/arith/tableau_sizes.h \
+	theory/arith/tableau_sizes.cpp \
+	theory/arith/error_set.h \
+	theory/arith/error_set.cpp \
+	theory/arith/simplex.h \
+	theory/arith/simplex.cpp \
+	theory/arith/dual_simplex.h \
+	theory/arith/dual_simplex.cpp \
+	theory/arith/fc_simplex.h \
+	theory/arith/fc_simplex.cpp \
+	theory/arith/soi_simplex.h \
+	theory/arith/soi_simplex.cpp \
+	theory/arith/infer_bounds.h \
+	theory/arith/infer_bounds.cpp \
+	theory/arith/approx_simplex.h \
+	theory/arith/approx_simplex.cpp \
+	theory/arith/attempt_solution_simplex.h \
+	theory/arith/attempt_solution_simplex.cpp \
+	theory/arith/theory_arith.h \
+	theory/arith/theory_arith.cpp \
+	theory/arith/theory_arith_private_forward.h \
+	theory/arith/theory_arith_private.h \
+	theory/arith/theory_arith_private.cpp \
+	theory/arith/dio_solver.h \
+	theory/arith/dio_solver.cpp \
+	theory/arith/pseudoboolean_proc.h \
+	theory/arith/pseudoboolean_proc.cpp \
+	theory/arith/cut_log.h \
+	theory/arith/cut_log.cpp \
+	theory/booleans/type_enumerator.h \
+	theory/booleans/theory_bool.h \
+	theory/booleans/theory_bool.cpp \
+	theory/booleans/theory_bool_type_rules.h \
+	theory/booleans/theory_bool_rewriter.h \
+	theory/booleans/theory_bool_rewriter.cpp \
+	theory/booleans/circuit_propagator.h \
+	theory/booleans/circuit_propagator.cpp \
+	theory/fp/theory_fp.h \
+	theory/fp/theory_fp.cpp \
+	theory/fp/theory_fp_rewriter.h \
+	theory/fp/theory_fp_rewriter.cpp \
+	theory/fp/theory_fp_type_rules.h \
+	theory/sep/theory_sep.h \
+	theory/sep/theory_sep.cpp \
+	theory/sep/theory_sep_rewriter.h \
+	theory/sep/theory_sep_rewriter.cpp \
+	theory/sep/theory_sep_type_rules.h
+
+nodist_libcvc4_la_SOURCES = \
+	theory/rewriter_tables.h \
+	theory/theory_traits.h \
+	theory/type_enumerator.cpp
+
+libcvc4_la_LIBADD = @builddir@/base/libbase.la \
+	@builddir@/options/liboptions.la @builddir@/util/libutil.la \
+	@builddir@/expr/libexpr.la @builddir@/smt_util/libsmtutil.la \
+	@builddir@/prop/minisat/libminisat.la \
+	@builddir@/prop/bvminisat/libbvminisat.la $(am__append_1) \
+	@builddir@/lib/libreplacements.la $(am__append_2) \
+	$(am__append_4) $(am__append_6)
+BUILT_SOURCES = \
+	theory/rewriter_tables.h \
+	theory/theory_traits.h \
+	theory/type_enumerator.cpp \
+	$(top_builddir)/src/.subdirs
+
+CLEANFILES = \
+	svn_versioninfo.cpp \
+	svninfo.tmp \
+	svninfo \
+	git_versioninfo.cpp \
+	gitinfo.tmp \
+	gitinfo \
+	theory/rewriter_tables.h \
+	theory/theory_traits.h \
+	theory/type_enumerator.cpp \
+	$(top_builddir)/src/.subdirs
+
+EXTRA_DIST = \
+	Makefile.theories \
+	cvc4.i \
+	include/cvc4.h \
+	include/cvc4_private.h \
+	include/cvc4_private_library.h \
+	include/cvc4_public.h \
+	include/cvc4parser_private.h \
+	include/cvc4parser_public.h \
+	mksubdirs \
+	smt/command.i \
+	smt/logic_exception.i \
+	smt/smt_engine.i \
+	proof/unsat_core.i \
+	theory/arith/kinds \
+	theory/arrays/kinds \
+	theory/booleans/kinds \
+	theory/builtin/kinds \
+	theory/bv/kinds \
+	theory/datatypes/kinds \
+	theory/example/ecdata.cpp \
+	theory/example/ecdata.h \
+	theory/example/theory_uf_tim.cpp \
+	theory/example/theory_uf_tim.h \
+	theory/fp/kinds \
+	theory/idl/kinds \
+	theory/logic_info.i \
+	theory/mkrewriter \
+	theory/mktheorytraits \
+	theory/quantifiers/kinds \
+	theory/rewriter_tables_template.h \
+	theory/sep/kinds \
+	theory/sets/kinds \
+	theory/strings/kinds \
+	theory/theory_traits_template.h \
+	theory/type_enumerator_template.cpp \
+	theory/uf/kinds
+
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+	}
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+	done
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+	@list='$(lib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+context/$(am__dirstamp):
+	@$(MKDIR_P) context
+	@: > context/$(am__dirstamp)
+context/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) context/$(DEPDIR)
+	@: > context/$(DEPDIR)/$(am__dirstamp)
+context/context.lo: context/$(am__dirstamp) \
+	context/$(DEPDIR)/$(am__dirstamp)
+context/context_mm.lo: context/$(am__dirstamp) \
+	context/$(DEPDIR)/$(am__dirstamp)
+decision/$(am__dirstamp):
+	@$(MKDIR_P) decision
+	@: > decision/$(am__dirstamp)
+decision/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) decision/$(DEPDIR)
+	@: > decision/$(DEPDIR)/$(am__dirstamp)
+decision/decision_engine.lo: decision/$(am__dirstamp) \
+	decision/$(DEPDIR)/$(am__dirstamp)
+decision/justification_heuristic.lo: decision/$(am__dirstamp) \
+	decision/$(DEPDIR)/$(am__dirstamp)
+printer/$(am__dirstamp):
+	@$(MKDIR_P) printer
+	@: > printer/$(am__dirstamp)
+printer/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) printer/$(DEPDIR)
+	@: > printer/$(DEPDIR)/$(am__dirstamp)
+printer/printer.lo: printer/$(am__dirstamp) \
+	printer/$(DEPDIR)/$(am__dirstamp)
+printer/dagification_visitor.lo: printer/$(am__dirstamp) \
+	printer/$(DEPDIR)/$(am__dirstamp)
+printer/ast/$(am__dirstamp):
+	@$(MKDIR_P) printer/ast
+	@: > printer/ast/$(am__dirstamp)
+printer/ast/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) printer/ast/$(DEPDIR)
+	@: > printer/ast/$(DEPDIR)/$(am__dirstamp)
+printer/ast/ast_printer.lo: printer/ast/$(am__dirstamp) \
+	printer/ast/$(DEPDIR)/$(am__dirstamp)
+printer/smt1/$(am__dirstamp):
+	@$(MKDIR_P) printer/smt1
+	@: > printer/smt1/$(am__dirstamp)
+printer/smt1/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) printer/smt1/$(DEPDIR)
+	@: > printer/smt1/$(DEPDIR)/$(am__dirstamp)
+printer/smt1/smt1_printer.lo: printer/smt1/$(am__dirstamp) \
+	printer/smt1/$(DEPDIR)/$(am__dirstamp)
+printer/smt2/$(am__dirstamp):
+	@$(MKDIR_P) printer/smt2
+	@: > printer/smt2/$(am__dirstamp)
+printer/smt2/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) printer/smt2/$(DEPDIR)
+	@: > printer/smt2/$(DEPDIR)/$(am__dirstamp)
+printer/smt2/smt2_printer.lo: printer/smt2/$(am__dirstamp) \
+	printer/smt2/$(DEPDIR)/$(am__dirstamp)
+printer/cvc/$(am__dirstamp):
+	@$(MKDIR_P) printer/cvc
+	@: > printer/cvc/$(am__dirstamp)
+printer/cvc/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) printer/cvc/$(DEPDIR)
+	@: > printer/cvc/$(DEPDIR)/$(am__dirstamp)
+printer/cvc/cvc_printer.lo: printer/cvc/$(am__dirstamp) \
+	printer/cvc/$(DEPDIR)/$(am__dirstamp)
+printer/tptp/$(am__dirstamp):
+	@$(MKDIR_P) printer/tptp
+	@: > printer/tptp/$(am__dirstamp)
+printer/tptp/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) printer/tptp/$(DEPDIR)
+	@: > printer/tptp/$(DEPDIR)/$(am__dirstamp)
+printer/tptp/tptp_printer.lo: printer/tptp/$(am__dirstamp) \
+	printer/tptp/$(DEPDIR)/$(am__dirstamp)
+proof/$(am__dirstamp):
+	@$(MKDIR_P) proof
+	@: > proof/$(am__dirstamp)
+proof/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) proof/$(DEPDIR)
+	@: > proof/$(DEPDIR)/$(am__dirstamp)
+proof/arith_proof.lo: proof/$(am__dirstamp) \
+	proof/$(DEPDIR)/$(am__dirstamp)
+proof/array_proof.lo: proof/$(am__dirstamp) \
+	proof/$(DEPDIR)/$(am__dirstamp)
+proof/bitvector_proof.lo: proof/$(am__dirstamp) \
+	proof/$(DEPDIR)/$(am__dirstamp)
+proof/cnf_proof.lo: proof/$(am__dirstamp) \
+	proof/$(DEPDIR)/$(am__dirstamp)
+proof/proof_manager.lo: proof/$(am__dirstamp) \
+	proof/$(DEPDIR)/$(am__dirstamp)
+proof/proof_utils.lo: proof/$(am__dirstamp) \
+	proof/$(DEPDIR)/$(am__dirstamp)
+proof/skolemization_manager.lo: proof/$(am__dirstamp) \
+	proof/$(DEPDIR)/$(am__dirstamp)
+proof/theory_proof.lo: proof/$(am__dirstamp) \
+	proof/$(DEPDIR)/$(am__dirstamp)
+proof/lemma_proof.lo: proof/$(am__dirstamp) \
+	proof/$(DEPDIR)/$(am__dirstamp)
+proof/uf_proof.lo: proof/$(am__dirstamp) \
+	proof/$(DEPDIR)/$(am__dirstamp)
+proof/unsat_core.lo: proof/$(am__dirstamp) \
+	proof/$(DEPDIR)/$(am__dirstamp)
+proof/proof_output_channel.lo: proof/$(am__dirstamp) \
+	proof/$(DEPDIR)/$(am__dirstamp)
+prop/$(am__dirstamp):
+	@$(MKDIR_P) prop
+	@: > prop/$(am__dirstamp)
+prop/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) prop/$(DEPDIR)
+	@: > prop/$(DEPDIR)/$(am__dirstamp)
+prop/cnf_stream.lo: prop/$(am__dirstamp) \
+	prop/$(DEPDIR)/$(am__dirstamp)
+prop/prop_engine.lo: prop/$(am__dirstamp) \
+	prop/$(DEPDIR)/$(am__dirstamp)
+prop/sat_solver_factory.lo: prop/$(am__dirstamp) \
+	prop/$(DEPDIR)/$(am__dirstamp)
+prop/cryptominisat.lo: prop/$(am__dirstamp) \
+	prop/$(DEPDIR)/$(am__dirstamp)
+prop/theory_proxy.lo: prop/$(am__dirstamp) \
+	prop/$(DEPDIR)/$(am__dirstamp)
+smt/$(am__dirstamp):
+	@$(MKDIR_P) smt
+	@: > smt/$(am__dirstamp)
+smt/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) smt/$(DEPDIR)
+	@: > smt/$(DEPDIR)/$(am__dirstamp)
+smt/command.lo: smt/$(am__dirstamp) smt/$(DEPDIR)/$(am__dirstamp)
+smt/command_list.lo: smt/$(am__dirstamp) smt/$(DEPDIR)/$(am__dirstamp)
+smt/dump.lo: smt/$(am__dirstamp) smt/$(DEPDIR)/$(am__dirstamp)
+smt/term_formula_removal.lo: smt/$(am__dirstamp) \
+	smt/$(DEPDIR)/$(am__dirstamp)
+smt/logic_request.lo: smt/$(am__dirstamp) \
+	smt/$(DEPDIR)/$(am__dirstamp)
+smt/managed_ostreams.lo: smt/$(am__dirstamp) \
+	smt/$(DEPDIR)/$(am__dirstamp)
+smt/model.lo: smt/$(am__dirstamp) smt/$(DEPDIR)/$(am__dirstamp)
+smt/smt_engine.lo: smt/$(am__dirstamp) smt/$(DEPDIR)/$(am__dirstamp)
+smt/smt_engine_check_proof.lo: smt/$(am__dirstamp) \
+	smt/$(DEPDIR)/$(am__dirstamp)
+smt/smt_engine_scope.lo: smt/$(am__dirstamp) \
+	smt/$(DEPDIR)/$(am__dirstamp)
+smt/smt_statistics_registry.lo: smt/$(am__dirstamp) \
+	smt/$(DEPDIR)/$(am__dirstamp)
+theory/$(am__dirstamp):
+	@$(MKDIR_P) theory
+	@: > theory/$(am__dirstamp)
+theory/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/$(DEPDIR)
+	@: > theory/$(DEPDIR)/$(am__dirstamp)
+theory/logic_info.lo: theory/$(am__dirstamp) \
+	theory/$(DEPDIR)/$(am__dirstamp)
+theory/sort_inference.lo: theory/$(am__dirstamp) \
+	theory/$(DEPDIR)/$(am__dirstamp)
+theory/theory_engine.lo: theory/$(am__dirstamp) \
+	theory/$(DEPDIR)/$(am__dirstamp)
+theory/theory.lo: theory/$(am__dirstamp) \
+	theory/$(DEPDIR)/$(am__dirstamp)
+theory/rewriter.lo: theory/$(am__dirstamp) \
+	theory/$(DEPDIR)/$(am__dirstamp)
+theory/substitutions.lo: theory/$(am__dirstamp) \
+	theory/$(DEPDIR)/$(am__dirstamp)
+theory/valuation.lo: theory/$(am__dirstamp) \
+	theory/$(DEPDIR)/$(am__dirstamp)
+theory/shared_terms_database.lo: theory/$(am__dirstamp) \
+	theory/$(DEPDIR)/$(am__dirstamp)
+theory/term_registration_visitor.lo: theory/$(am__dirstamp) \
+	theory/$(DEPDIR)/$(am__dirstamp)
+theory/ite_utilities.lo: theory/$(am__dirstamp) \
+	theory/$(DEPDIR)/$(am__dirstamp)
+theory/unconstrained_simplifier.lo: theory/$(am__dirstamp) \
+	theory/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers_engine.lo: theory/$(am__dirstamp) \
+	theory/$(DEPDIR)/$(am__dirstamp)
+theory/theory_model.lo: theory/$(am__dirstamp) \
+	theory/$(DEPDIR)/$(am__dirstamp)
+theory/rep_set.lo: theory/$(am__dirstamp) \
+	theory/$(DEPDIR)/$(am__dirstamp)
+theory/atom_requests.lo: theory/$(am__dirstamp) \
+	theory/$(DEPDIR)/$(am__dirstamp)
+theory/uf/$(am__dirstamp):
+	@$(MKDIR_P) theory/uf
+	@: > theory/uf/$(am__dirstamp)
+theory/uf/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/uf/$(DEPDIR)
+	@: > theory/uf/$(DEPDIR)/$(am__dirstamp)
+theory/uf/theory_uf.lo: theory/uf/$(am__dirstamp) \
+	theory/uf/$(DEPDIR)/$(am__dirstamp)
+theory/uf/equality_engine.lo: theory/uf/$(am__dirstamp) \
+	theory/uf/$(DEPDIR)/$(am__dirstamp)
+theory/uf/symmetry_breaker.lo: theory/uf/$(am__dirstamp) \
+	theory/uf/$(DEPDIR)/$(am__dirstamp)
+theory/uf/theory_uf_strong_solver.lo: theory/uf/$(am__dirstamp) \
+	theory/uf/$(DEPDIR)/$(am__dirstamp)
+theory/uf/theory_uf_model.lo: theory/uf/$(am__dirstamp) \
+	theory/uf/$(DEPDIR)/$(am__dirstamp)
+theory/bv/$(am__dirstamp):
+	@$(MKDIR_P) theory/bv
+	@: > theory/bv/$(am__dirstamp)
+theory/bv/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/bv/$(DEPDIR)
+	@: > theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/theory_bv_utils.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/bv_to_bool.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/bv_subtheory_core.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/bv_subtheory_bitblast.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/bv_subtheory_inequality.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/bv_inequality_graph.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/lazy_bitblaster.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/eager_bitblaster.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/aig_bitblaster.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/bv_eager_solver.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/slicer.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/theory_bv.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/theory_bv_rewriter.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/abstraction.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/bv_quick_check.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/bv_subtheory_algebraic.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/bvintropow2.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/idl/$(am__dirstamp):
+	@$(MKDIR_P) theory/idl
+	@: > theory/idl/$(am__dirstamp)
+theory/idl/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/idl/$(DEPDIR)
+	@: > theory/idl/$(DEPDIR)/$(am__dirstamp)
+theory/idl/idl_model.lo: theory/idl/$(am__dirstamp) \
+	theory/idl/$(DEPDIR)/$(am__dirstamp)
+theory/idl/idl_assertion.lo: theory/idl/$(am__dirstamp) \
+	theory/idl/$(DEPDIR)/$(am__dirstamp)
+theory/idl/idl_assertion_db.lo: theory/idl/$(am__dirstamp) \
+	theory/idl/$(DEPDIR)/$(am__dirstamp)
+theory/idl/theory_idl.lo: theory/idl/$(am__dirstamp) \
+	theory/idl/$(DEPDIR)/$(am__dirstamp)
+theory/builtin/$(am__dirstamp):
+	@$(MKDIR_P) theory/builtin
+	@: > theory/builtin/$(am__dirstamp)
+theory/builtin/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/builtin/$(DEPDIR)
+	@: > theory/builtin/$(DEPDIR)/$(am__dirstamp)
+theory/builtin/theory_builtin_rewriter.lo:  \
+	theory/builtin/$(am__dirstamp) \
+	theory/builtin/$(DEPDIR)/$(am__dirstamp)
+theory/builtin/theory_builtin.lo: theory/builtin/$(am__dirstamp) \
+	theory/builtin/$(DEPDIR)/$(am__dirstamp)
+theory/datatypes/$(am__dirstamp):
+	@$(MKDIR_P) theory/datatypes
+	@: > theory/datatypes/$(am__dirstamp)
+theory/datatypes/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/datatypes/$(DEPDIR)
+	@: > theory/datatypes/$(DEPDIR)/$(am__dirstamp)
+theory/datatypes/type_enumerator.lo: theory/datatypes/$(am__dirstamp) \
+	theory/datatypes/$(DEPDIR)/$(am__dirstamp)
+theory/datatypes/theory_datatypes.lo:  \
+	theory/datatypes/$(am__dirstamp) \
+	theory/datatypes/$(DEPDIR)/$(am__dirstamp)
+theory/datatypes/datatypes_sygus.lo: theory/datatypes/$(am__dirstamp) \
+	theory/datatypes/$(DEPDIR)/$(am__dirstamp)
+theory/sets/$(am__dirstamp):
+	@$(MKDIR_P) theory/sets
+	@: > theory/sets/$(am__dirstamp)
+theory/sets/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/sets/$(DEPDIR)
+	@: > theory/sets/$(DEPDIR)/$(am__dirstamp)
+theory/sets/theory_sets.lo: theory/sets/$(am__dirstamp) \
+	theory/sets/$(DEPDIR)/$(am__dirstamp)
+theory/sets/theory_sets_private.lo: theory/sets/$(am__dirstamp) \
+	theory/sets/$(DEPDIR)/$(am__dirstamp)
+theory/sets/theory_sets_rewriter.lo: theory/sets/$(am__dirstamp) \
+	theory/sets/$(DEPDIR)/$(am__dirstamp)
+theory/sets/theory_sets_rels.lo: theory/sets/$(am__dirstamp) \
+	theory/sets/$(DEPDIR)/$(am__dirstamp)
+theory/strings/$(am__dirstamp):
+	@$(MKDIR_P) theory/strings
+	@: > theory/strings/$(am__dirstamp)
+theory/strings/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/strings/$(DEPDIR)
+	@: > theory/strings/$(DEPDIR)/$(am__dirstamp)
+theory/strings/theory_strings.lo: theory/strings/$(am__dirstamp) \
+	theory/strings/$(DEPDIR)/$(am__dirstamp)
+theory/strings/theory_strings_rewriter.lo:  \
+	theory/strings/$(am__dirstamp) \
+	theory/strings/$(DEPDIR)/$(am__dirstamp)
+theory/strings/theory_strings_preprocess.lo:  \
+	theory/strings/$(am__dirstamp) \
+	theory/strings/$(DEPDIR)/$(am__dirstamp)
+theory/strings/regexp_operation.lo: theory/strings/$(am__dirstamp) \
+	theory/strings/$(DEPDIR)/$(am__dirstamp)
+theory/arrays/$(am__dirstamp):
+	@$(MKDIR_P) theory/arrays
+	@: > theory/arrays/$(am__dirstamp)
+theory/arrays/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/arrays/$(DEPDIR)
+	@: > theory/arrays/$(DEPDIR)/$(am__dirstamp)
+theory/arrays/theory_arrays_rewriter.lo:  \
+	theory/arrays/$(am__dirstamp) \
+	theory/arrays/$(DEPDIR)/$(am__dirstamp)
+theory/arrays/theory_arrays.lo: theory/arrays/$(am__dirstamp) \
+	theory/arrays/$(DEPDIR)/$(am__dirstamp)
+theory/arrays/union_find.lo: theory/arrays/$(am__dirstamp) \
+	theory/arrays/$(DEPDIR)/$(am__dirstamp)
+theory/arrays/array_info.lo: theory/arrays/$(am__dirstamp) \
+	theory/arrays/$(DEPDIR)/$(am__dirstamp)
+theory/arrays/static_fact_manager.lo: theory/arrays/$(am__dirstamp) \
+	theory/arrays/$(DEPDIR)/$(am__dirstamp)
+theory/arrays/array_proof_reconstruction.lo:  \
+	theory/arrays/$(am__dirstamp) \
+	theory/arrays/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/$(am__dirstamp):
+	@$(MKDIR_P) theory/quantifiers
+	@: > theory/quantifiers/$(am__dirstamp)
+theory/quantifiers/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/quantifiers/$(DEPDIR)
+	@: > theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/quantifiers_rewriter.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/theory_quantifiers.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/instantiation_engine.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/trigger.lo: theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/candidate_generator.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/inst_match.lo: theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/model_engine.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/term_database.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/first_order_model.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/model_builder.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/quantifiers_attributes.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/quant_util.lo: theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/inst_match_generator.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/macros.lo: theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/inst_strategy_e_matching.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/inst_strategy_cbqi.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/full_model_check.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/bounded_integers.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/alpha_equivalence.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/rewrite_engine.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/relevant_domain.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/symmetry_breaking.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/ambqi_builder.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/quant_conflict_find.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/conjecture_generator.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/ce_guided_instantiation.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/ce_guided_single_inv.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/ce_guided_single_inv_sol.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/ce_guided_single_inv_ei.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/local_theory_ext.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/fun_def_process.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/fun_def_engine.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/quant_equality_engine.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/ceg_instantiator.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/ceg_t_instantiator.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/quant_split.lo: theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/anti_skolem.lo: theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/equality_infer.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/inst_propagator.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/arith/$(am__dirstamp):
+	@$(MKDIR_P) theory/arith
+	@: > theory/arith/$(am__dirstamp)
+theory/arith/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/arith/$(DEPDIR)
+	@: > theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/arithvar.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/arith_ite_utils.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/arith_rewriter.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/arith_static_learner.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/constraint.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/congruence_manager.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/normal_form.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/delta_rational.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/partial_model.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/linear_equality.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/simplex_update.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/callbacks.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/matrix.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/tableau.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/tableau_sizes.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/error_set.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/simplex.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/dual_simplex.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/fc_simplex.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/soi_simplex.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/infer_bounds.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/approx_simplex.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/attempt_solution_simplex.lo:  \
+	theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/theory_arith.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/theory_arith_private.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/dio_solver.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/pseudoboolean_proc.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/cut_log.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/booleans/$(am__dirstamp):
+	@$(MKDIR_P) theory/booleans
+	@: > theory/booleans/$(am__dirstamp)
+theory/booleans/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/booleans/$(DEPDIR)
+	@: > theory/booleans/$(DEPDIR)/$(am__dirstamp)
+theory/booleans/theory_bool.lo: theory/booleans/$(am__dirstamp) \
+	theory/booleans/$(DEPDIR)/$(am__dirstamp)
+theory/booleans/theory_bool_rewriter.lo:  \
+	theory/booleans/$(am__dirstamp) \
+	theory/booleans/$(DEPDIR)/$(am__dirstamp)
+theory/booleans/circuit_propagator.lo:  \
+	theory/booleans/$(am__dirstamp) \
+	theory/booleans/$(DEPDIR)/$(am__dirstamp)
+theory/fp/$(am__dirstamp):
+	@$(MKDIR_P) theory/fp
+	@: > theory/fp/$(am__dirstamp)
+theory/fp/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/fp/$(DEPDIR)
+	@: > theory/fp/$(DEPDIR)/$(am__dirstamp)
+theory/fp/theory_fp.lo: theory/fp/$(am__dirstamp) \
+	theory/fp/$(DEPDIR)/$(am__dirstamp)
+theory/fp/theory_fp_rewriter.lo: theory/fp/$(am__dirstamp) \
+	theory/fp/$(DEPDIR)/$(am__dirstamp)
+theory/sep/$(am__dirstamp):
+	@$(MKDIR_P) theory/sep
+	@: > theory/sep/$(am__dirstamp)
+theory/sep/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/sep/$(DEPDIR)
+	@: > theory/sep/$(DEPDIR)/$(am__dirstamp)
+theory/sep/theory_sep.lo: theory/sep/$(am__dirstamp) \
+	theory/sep/$(DEPDIR)/$(am__dirstamp)
+theory/sep/theory_sep_rewriter.lo: theory/sep/$(am__dirstamp) \
+	theory/sep/$(DEPDIR)/$(am__dirstamp)
+theory/type_enumerator.lo: theory/$(am__dirstamp) \
+	theory/$(DEPDIR)/$(am__dirstamp)
+
+libcvc4.la: $(libcvc4_la_OBJECTS) $(libcvc4_la_DEPENDENCIES) $(EXTRA_libcvc4_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(libcvc4_la_LINK) -rpath $(libdir) $(libcvc4_la_OBJECTS) $(libcvc4_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+	-rm -f context/*.$(OBJEXT)
+	-rm -f context/*.lo
+	-rm -f decision/*.$(OBJEXT)
+	-rm -f decision/*.lo
+	-rm -f printer/*.$(OBJEXT)
+	-rm -f printer/*.lo
+	-rm -f printer/ast/*.$(OBJEXT)
+	-rm -f printer/ast/*.lo
+	-rm -f printer/cvc/*.$(OBJEXT)
+	-rm -f printer/cvc/*.lo
+	-rm -f printer/smt1/*.$(OBJEXT)
+	-rm -f printer/smt1/*.lo
+	-rm -f printer/smt2/*.$(OBJEXT)
+	-rm -f printer/smt2/*.lo
+	-rm -f printer/tptp/*.$(OBJEXT)
+	-rm -f printer/tptp/*.lo
+	-rm -f proof/*.$(OBJEXT)
+	-rm -f proof/*.lo
+	-rm -f prop/*.$(OBJEXT)
+	-rm -f prop/*.lo
+	-rm -f smt/*.$(OBJEXT)
+	-rm -f smt/*.lo
+	-rm -f theory/*.$(OBJEXT)
+	-rm -f theory/*.lo
+	-rm -f theory/arith/*.$(OBJEXT)
+	-rm -f theory/arith/*.lo
+	-rm -f theory/arrays/*.$(OBJEXT)
+	-rm -f theory/arrays/*.lo
+	-rm -f theory/booleans/*.$(OBJEXT)
+	-rm -f theory/booleans/*.lo
+	-rm -f theory/builtin/*.$(OBJEXT)
+	-rm -f theory/builtin/*.lo
+	-rm -f theory/bv/*.$(OBJEXT)
+	-rm -f theory/bv/*.lo
+	-rm -f theory/datatypes/*.$(OBJEXT)
+	-rm -f theory/datatypes/*.lo
+	-rm -f theory/fp/*.$(OBJEXT)
+	-rm -f theory/fp/*.lo
+	-rm -f theory/idl/*.$(OBJEXT)
+	-rm -f theory/idl/*.lo
+	-rm -f theory/quantifiers/*.$(OBJEXT)
+	-rm -f theory/quantifiers/*.lo
+	-rm -f theory/sep/*.$(OBJEXT)
+	-rm -f theory/sep/*.lo
+	-rm -f theory/sets/*.$(OBJEXT)
+	-rm -f theory/sets/*.lo
+	-rm -f theory/strings/*.$(OBJEXT)
+	-rm -f theory/strings/*.lo
+	-rm -f theory/uf/*.$(OBJEXT)
+	-rm -f theory/uf/*.lo
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dummy.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/git_versioninfo.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/svn_versioninfo.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at context/$(DEPDIR)/context.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at context/$(DEPDIR)/context_mm.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at decision/$(DEPDIR)/decision_engine.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at decision/$(DEPDIR)/justification_heuristic.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at printer/$(DEPDIR)/dagification_visitor.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at printer/$(DEPDIR)/printer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at printer/ast/$(DEPDIR)/ast_printer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at printer/cvc/$(DEPDIR)/cvc_printer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at printer/smt1/$(DEPDIR)/smt1_printer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at printer/smt2/$(DEPDIR)/smt2_printer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at printer/tptp/$(DEPDIR)/tptp_printer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at proof/$(DEPDIR)/arith_proof.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at proof/$(DEPDIR)/array_proof.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at proof/$(DEPDIR)/bitvector_proof.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at proof/$(DEPDIR)/cnf_proof.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at proof/$(DEPDIR)/lemma_proof.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at proof/$(DEPDIR)/proof_manager.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at proof/$(DEPDIR)/proof_output_channel.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at proof/$(DEPDIR)/proof_utils.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at proof/$(DEPDIR)/skolemization_manager.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at proof/$(DEPDIR)/theory_proof.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at proof/$(DEPDIR)/uf_proof.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at proof/$(DEPDIR)/unsat_core.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at prop/$(DEPDIR)/cnf_stream.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at prop/$(DEPDIR)/cryptominisat.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at prop/$(DEPDIR)/prop_engine.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at prop/$(DEPDIR)/sat_solver_factory.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at prop/$(DEPDIR)/theory_proxy.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at smt/$(DEPDIR)/command.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at smt/$(DEPDIR)/command_list.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at smt/$(DEPDIR)/dump.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at smt/$(DEPDIR)/logic_request.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at smt/$(DEPDIR)/managed_ostreams.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at smt/$(DEPDIR)/model.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at smt/$(DEPDIR)/smt_engine.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at smt/$(DEPDIR)/smt_engine_check_proof.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at smt/$(DEPDIR)/smt_engine_scope.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at smt/$(DEPDIR)/smt_statistics_registry.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at smt/$(DEPDIR)/term_formula_removal.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/$(DEPDIR)/atom_requests.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/$(DEPDIR)/ite_utilities.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/$(DEPDIR)/logic_info.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/$(DEPDIR)/quantifiers_engine.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/$(DEPDIR)/rep_set.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/$(DEPDIR)/rewriter.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/$(DEPDIR)/shared_terms_database.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/$(DEPDIR)/sort_inference.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/$(DEPDIR)/substitutions.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/$(DEPDIR)/term_registration_visitor.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/$(DEPDIR)/theory.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/$(DEPDIR)/theory_engine.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/$(DEPDIR)/theory_model.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/$(DEPDIR)/type_enumerator.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/$(DEPDIR)/unconstrained_simplifier.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/$(DEPDIR)/valuation.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/approx_simplex.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/arith_ite_utils.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/arith_rewriter.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/arith_static_learner.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/arithvar.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/attempt_solution_simplex.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/callbacks.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/congruence_manager.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/constraint.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/cut_log.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/delta_rational.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/dio_solver.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/dual_simplex.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/error_set.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/fc_simplex.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/infer_bounds.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/linear_equality.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/matrix.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/normal_form.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/partial_model.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/pseudoboolean_proc.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/simplex.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/simplex_update.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/soi_simplex.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/tableau.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/tableau_sizes.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/theory_arith.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/theory_arith_private.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arrays/$(DEPDIR)/array_info.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arrays/$(DEPDIR)/array_proof_reconstruction.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arrays/$(DEPDIR)/static_fact_manager.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arrays/$(DEPDIR)/theory_arrays.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arrays/$(DEPDIR)/theory_arrays_rewriter.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arrays/$(DEPDIR)/union_find.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/booleans/$(DEPDIR)/circuit_propagator.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/booleans/$(DEPDIR)/theory_bool.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/booleans/$(DEPDIR)/theory_bool_rewriter.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/builtin/$(DEPDIR)/theory_builtin.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/builtin/$(DEPDIR)/theory_builtin_rewriter.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/bv/$(DEPDIR)/abstraction.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/bv/$(DEPDIR)/aig_bitblaster.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/bv/$(DEPDIR)/bv_eager_solver.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/bv/$(DEPDIR)/bv_inequality_graph.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/bv/$(DEPDIR)/bv_quick_check.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/bv/$(DEPDIR)/bv_subtheory_algebraic.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/bv/$(DEPDIR)/bv_subtheory_bitblast.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/bv/$(DEPDIR)/bv_subtheory_core.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/bv/$(DEPDIR)/bv_subtheory_inequality.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/bv/$(DEPDIR)/bv_to_bool.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/bv/$(DEPDIR)/bvintropow2.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/bv/$(DEPDIR)/eager_bitblaster.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/bv/$(DEPDIR)/lazy_bitblaster.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/bv/$(DEPDIR)/slicer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/bv/$(DEPDIR)/theory_bv.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/bv/$(DEPDIR)/theory_bv_rewriter.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/bv/$(DEPDIR)/theory_bv_utils.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/datatypes/$(DEPDIR)/datatypes_sygus.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/datatypes/$(DEPDIR)/theory_datatypes.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/datatypes/$(DEPDIR)/type_enumerator.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/fp/$(DEPDIR)/theory_fp.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/fp/$(DEPDIR)/theory_fp_rewriter.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/idl/$(DEPDIR)/idl_assertion.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/idl/$(DEPDIR)/idl_assertion_db.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/idl/$(DEPDIR)/idl_model.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/idl/$(DEPDIR)/theory_idl.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/alpha_equivalence.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/ambqi_builder.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/anti_skolem.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/bounded_integers.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/candidate_generator.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/ce_guided_instantiation.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/ce_guided_single_inv.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/ce_guided_single_inv_ei.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/ce_guided_single_inv_sol.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/ceg_instantiator.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/ceg_t_instantiator.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/conjecture_generator.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/equality_infer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/first_order_model.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/full_model_check.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/fun_def_engine.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/fun_def_process.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/inst_match.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/inst_match_generator.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/inst_propagator.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/inst_strategy_cbqi.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/inst_strategy_e_matching.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/instantiation_engine.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/local_theory_ext.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/macros.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/model_builder.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/model_engine.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/quant_conflict_find.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/quant_equality_engine.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/quant_split.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/quant_util.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/quantifiers_attributes.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/quantifiers_rewriter.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/relevant_domain.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/rewrite_engine.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/symmetry_breaking.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/term_database.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/theory_quantifiers.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/quantifiers/$(DEPDIR)/trigger.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/sep/$(DEPDIR)/theory_sep.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/sep/$(DEPDIR)/theory_sep_rewriter.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/sets/$(DEPDIR)/theory_sets.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/sets/$(DEPDIR)/theory_sets_private.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/sets/$(DEPDIR)/theory_sets_rels.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/sets/$(DEPDIR)/theory_sets_rewriter.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/strings/$(DEPDIR)/regexp_operation.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/strings/$(DEPDIR)/theory_strings.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/strings/$(DEPDIR)/theory_strings_preprocess.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/strings/$(DEPDIR)/theory_strings_rewriter.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/uf/$(DEPDIR)/equality_engine.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/uf/$(DEPDIR)/symmetry_breaker.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/uf/$(DEPDIR)/theory_uf.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/uf/$(DEPDIR)/theory_uf_model.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/uf/$(DEPDIR)/theory_uf_strong_solver.Plo at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+	-rm -rf context/.libs context/_libs
+	-rm -rf decision/.libs decision/_libs
+	-rm -rf printer/.libs printer/_libs
+	-rm -rf printer/ast/.libs printer/ast/_libs
+	-rm -rf printer/cvc/.libs printer/cvc/_libs
+	-rm -rf printer/smt1/.libs printer/smt1/_libs
+	-rm -rf printer/smt2/.libs printer/smt2/_libs
+	-rm -rf printer/tptp/.libs printer/tptp/_libs
+	-rm -rf proof/.libs proof/_libs
+	-rm -rf prop/.libs prop/_libs
+	-rm -rf smt/.libs smt/_libs
+	-rm -rf theory/.libs theory/_libs
+	-rm -rf theory/arith/.libs theory/arith/_libs
+	-rm -rf theory/arrays/.libs theory/arrays/_libs
+	-rm -rf theory/booleans/.libs theory/booleans/_libs
+	-rm -rf theory/builtin/.libs theory/builtin/_libs
+	-rm -rf theory/bv/.libs theory/bv/_libs
+	-rm -rf theory/datatypes/.libs theory/datatypes/_libs
+	-rm -rf theory/fp/.libs theory/fp/_libs
+	-rm -rf theory/idl/.libs theory/idl/_libs
+	-rm -rf theory/quantifiers/.libs theory/quantifiers/_libs
+	-rm -rf theory/sep/.libs theory/sep/_libs
+	-rm -rf theory/sets/.libs theory/sets/_libs
+	-rm -rf theory/strings/.libs theory/strings/_libs
+	-rm -rf theory/uf/.libs theory/uf/_libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(LTLIBRARIES)
+installdirs: installdirs-recursive
+installdirs-am:
+	for dir in "$(DESTDIR)$(libdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f context/$(DEPDIR)/$(am__dirstamp)
+	-rm -f context/$(am__dirstamp)
+	-rm -f decision/$(DEPDIR)/$(am__dirstamp)
+	-rm -f decision/$(am__dirstamp)
+	-rm -f printer/$(DEPDIR)/$(am__dirstamp)
+	-rm -f printer/$(am__dirstamp)
+	-rm -f printer/ast/$(DEPDIR)/$(am__dirstamp)
+	-rm -f printer/ast/$(am__dirstamp)
+	-rm -f printer/cvc/$(DEPDIR)/$(am__dirstamp)
+	-rm -f printer/cvc/$(am__dirstamp)
+	-rm -f printer/smt1/$(DEPDIR)/$(am__dirstamp)
+	-rm -f printer/smt1/$(am__dirstamp)
+	-rm -f printer/smt2/$(DEPDIR)/$(am__dirstamp)
+	-rm -f printer/smt2/$(am__dirstamp)
+	-rm -f printer/tptp/$(DEPDIR)/$(am__dirstamp)
+	-rm -f printer/tptp/$(am__dirstamp)
+	-rm -f proof/$(DEPDIR)/$(am__dirstamp)
+	-rm -f proof/$(am__dirstamp)
+	-rm -f prop/$(DEPDIR)/$(am__dirstamp)
+	-rm -f prop/$(am__dirstamp)
+	-rm -f smt/$(DEPDIR)/$(am__dirstamp)
+	-rm -f smt/$(am__dirstamp)
+	-rm -f theory/$(DEPDIR)/$(am__dirstamp)
+	-rm -f theory/$(am__dirstamp)
+	-rm -f theory/arith/$(DEPDIR)/$(am__dirstamp)
+	-rm -f theory/arith/$(am__dirstamp)
+	-rm -f theory/arrays/$(DEPDIR)/$(am__dirstamp)
+	-rm -f theory/arrays/$(am__dirstamp)
+	-rm -f theory/booleans/$(DEPDIR)/$(am__dirstamp)
+	-rm -f theory/booleans/$(am__dirstamp)
+	-rm -f theory/builtin/$(DEPDIR)/$(am__dirstamp)
+	-rm -f theory/builtin/$(am__dirstamp)
+	-rm -f theory/bv/$(DEPDIR)/$(am__dirstamp)
+	-rm -f theory/bv/$(am__dirstamp)
+	-rm -f theory/datatypes/$(DEPDIR)/$(am__dirstamp)
+	-rm -f theory/datatypes/$(am__dirstamp)
+	-rm -f theory/fp/$(DEPDIR)/$(am__dirstamp)
+	-rm -f theory/fp/$(am__dirstamp)
+	-rm -f theory/idl/$(DEPDIR)/$(am__dirstamp)
+	-rm -f theory/idl/$(am__dirstamp)
+	-rm -f theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+	-rm -f theory/quantifiers/$(am__dirstamp)
+	-rm -f theory/sep/$(DEPDIR)/$(am__dirstamp)
+	-rm -f theory/sep/$(am__dirstamp)
+	-rm -f theory/sets/$(DEPDIR)/$(am__dirstamp)
+	-rm -f theory/sets/$(am__dirstamp)
+	-rm -f theory/strings/$(DEPDIR)/$(am__dirstamp)
+	-rm -f theory/strings/$(am__dirstamp)
+	-rm -f theory/uf/$(DEPDIR)/$(am__dirstamp)
+	-rm -f theory/uf/$(am__dirstamp)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-recursive
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+	mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -rf ./$(DEPDIR) context/$(DEPDIR) decision/$(DEPDIR) printer/$(DEPDIR) printer/ast/$(DEPDIR) printer/cvc/$(DEPDIR) printer/smt1/$(DEPDIR) printer/smt2/$(DEPDIR) printer/tptp/$(DEPDIR) proof/$(DEPDIR) prop/$(DEPDIR) smt/$(DEPDIR) theory/$(DEPDIR) theory/arith/$(DEPDIR) theory/arrays/$(DEPDIR) theory/booleans/$(DEPDIR) theory/builtin/$(DEPDIR) theory/bv/$(DEPDIR) theory/datatypes/$(DEPDIR) theory/fp/$(DEPDIR) theory/idl/$(DEPDIR) theory/quantifiers/$(DEPDIR) theory/sep/$(DEPDIR) theor [...]
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-data-local
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am: install-libLTLIBRARIES
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -rf ./$(DEPDIR) context/$(DEPDIR) decision/$(DEPDIR) printer/$(DEPDIR) printer/ast/$(DEPDIR) printer/cvc/$(DEPDIR) printer/smt1/$(DEPDIR) printer/smt2/$(DEPDIR) printer/tptp/$(DEPDIR) proof/$(DEPDIR) prop/$(DEPDIR) smt/$(DEPDIR) theory/$(DEPDIR) theory/arith/$(DEPDIR) theory/arrays/$(DEPDIR) theory/booleans/$(DEPDIR) theory/builtin/$(DEPDIR) theory/bv/$(DEPDIR) theory/datatypes/$(DEPDIR) theory/fp/$(DEPDIR) theory/idl/$(DEPDIR) theory/quantifiers/$(DEPDIR) theory/sep/$(DEPDIR) theor [...]
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-libLTLIBRARIES uninstall-local
+
+.MAKE: $(am__recursive_targets) all check install install-am \
+	install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am clean clean-generic clean-libLTLIBRARIES \
+	clean-libtool cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am \
+	install-data-local install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-libLTLIBRARIES install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs installdirs-am \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+	uninstall-libLTLIBRARIES uninstall-local
+
+.PRECIOUS: Makefile
+
+# The THEORIES list has been moved to Makefile.theories
+include @top_srcdir@/src/Makefile.theories
+
+svn_versioninfo.cpp: svninfo
+	$(AM_V_GEN)( \
+	  if test -s svninfo; then \
+	    issvn=true; \
+	    branch=`grep '^URL: ' svninfo | sed 's,.*/cvc4/,,'`; \
+	    rev=`grep '^Revision: ' svninfo | awk '{print$$2}'`; \
+	    mods=`grep '^Modifications: ' svninfo | awk '{print$$2} END { if(!NR) print "false" }'`; \
+	  else \
+	    issvn=false; \
+	    branch=unknown; \
+	    rev=0; \
+	    mods=false; \
+	  fi; \
+	  echo "#include \"base/configuration.h\""; \
+	  echo "const bool ::CVC4::Configuration::IS_SUBVERSION_BUILD = $$issvn;"; \
+	  echo "const char* const ::CVC4::Configuration::SUBVERSION_BRANCH_NAME = \"$$branch\";"; \
+	  echo "const unsigned ::CVC4::Configuration::SUBVERSION_REVISION = $$rev;"; \
+	  echo "const bool ::CVC4::Configuration::SUBVERSION_HAS_MODIFICATIONS = $$mods;"; \
+	) >"$@"
+# This .tmp business is to keep from having to re-compile options.cpp
+# (and then re-link the libraries) if nothing has changed.
+svninfo: svninfo.tmp
+	$(AM_V_GEN)if diff -q svninfo.tmp svninfo &>/dev/null; then rm -f svninfo.tmp; else mv svninfo.tmp svninfo; fi
+# .PHONY ensures the .tmp version is always rebuilt (to check for any changes)
+.PHONY: svninfo.tmp
+svninfo.tmp:
+	$(AM_V_GEN)(cd "$(top_srcdir)" && svn info && echo "Modifications: `test -z \"\`svn status -q\`\" && echo false || echo true`") >"$@" 2>/dev/null || true
+
+git_versioninfo.cpp: gitinfo
+	$(AM_V_GEN)( \
+	  if test -s gitinfo; then \
+	    isgit=true; \
+	    branch=`head -1 gitinfo`; \
+	    rev=`head -2 gitinfo | tail -1 | awk '{print$$1}'`; \
+	    mods=`grep '^Modifications: ' gitinfo | awk '{print$$2} END { if(!NR) print "false" }'`; \
+	  else \
+	    isgit=false; \
+	    branch=unknown; \
+	    rev=unknown; \
+	    mods=false; \
+	  fi; \
+	  echo "#include \"base/configuration.h\""; \
+	  echo "const bool ::CVC4::Configuration::IS_GIT_BUILD = $$isgit;"; \
+	  echo "const char* const ::CVC4::Configuration::GIT_BRANCH_NAME = \"$$branch\";"; \
+	  echo "const char* const ::CVC4::Configuration::GIT_COMMIT = \"$$rev\";"; \
+	  echo "const bool ::CVC4::Configuration::GIT_HAS_MODIFICATIONS = $$mods;"; \
+	) >"$@"
+# This .tmp business is to keep from having to re-compile options.cpp
+# (and then re-link the libraries) if nothing has changed.
+gitinfo: gitinfo.tmp
+	$(AM_V_GEN)if diff -q gitinfo.tmp gitinfo &>/dev/null; then rm -f gitinfo.tmp; else mv gitinfo.tmp gitinfo; fi || true
+# .PHONY ensures the .tmp version is always rebuilt (to check for any changes)
+.PHONY: gitinfo.tmp
+gitinfo.tmp:
+	$(AM_V_GEN)(cd "$(top_srcdir)"; if test -e .git/HEAD; then if ! grep -q '^ref: refs/heads/' .git/HEAD; then echo; fi; sed 's,^ref: refs/heads/,,' .git/HEAD; git show-ref refs/heads/`sed 's,^ref: refs/heads/,,' .git/HEAD`; echo "Modifications: `test -z \"\`git status -s -uno\`\" && echo false || echo true`"; fi) >"$@" 2>/dev/null || true
+
+install-data-local:
+	(echo include/cvc4.h; \
+	 echo include/cvc4_public.h; \
+	 echo include/cvc4parser_public.h; \
+	 echo base/tls.h; \
+	 echo util/integer.h; \
+	 echo util/rational.h; \
+	 find * -name '*.h' | \
+		xargs grep -l '^# *include  *"cvc4.*_public\.h"'; \
+	(cd "$(srcdir)" && find * -name '*.h' | \
+		xargs grep -l '^# *include  *"cvc4.*_public\.h"')) | \
+	while read f; do \
+		if expr "$$f" : ".*_\(template\|private\|private_library\|test_utils\)\.h$$" &>/dev/null; then \
+			continue; \
+		fi; \
+		d="$$(echo "$$f" | sed 's,^include/,,')"; \
+		$(mkinstalldirs) "$$(dirname "$(DESTDIR)$(includedir)/cvc4/$$d")"; \
+		if [ -e "$$f" ]; then \
+			path="$$f"; \
+		else \
+			path="$(srcdir)/$$f"; \
+		fi; \
+		fixpath="$(top_builddir)/header_install.fix"; \
+		sed 's,^\([ \t]*#[ \t]*include[ \t*]\)"\(.*\)"\([ \t]*\)$$,\1<cvc4/\2>\3,' "$$path" > "$$fixpath" || exit 1; \
+		echo $(INSTALL_DATA) "$$fixpath" "$(DESTDIR)$(includedir)/cvc4/$$d"; \
+		if $(INSTALL_DATA) "$$fixpath" "$(DESTDIR)$(includedir)/cvc4/$$d"; then \
+			rm -f "$$fixpath"; \
+		else \
+			rm -f "$$fixpath"; \
+			exit 1; \
+		fi; \
+	done
+
+uninstall-local:
+	-(echo include/cvc4.h; \
+	  echo include/cvc4_public.h; \
+	  echo include/cvc4parser_public.h; \
+	  echo base/tls.h; \
+	  echo util/integer.h; \
+	  echo util/rational.h; \
+	  find * -name '*.h' | \
+		xargs grep -l '^# *include  *"cvc4.*_public\.h"'; \
+	(cd "$(srcdir)" && find * -name '*.h' | \
+		xargs grep -l '^# *include  *"cvc4.*_public\.h"')) | \
+	while read f; do \
+		if expr "$$f" : ".*_\(template\|private\|private_library\|test_utils\)\.h$$" &>/dev/null; then \
+			continue; \
+		fi; \
+		d="$$(echo "$$f" | sed 's,^include/,,')"; \
+		rm -f "$(DESTDIR)$(includedir)/cvc4/$$d"; \
+	done
+	-rmdir "$(DESTDIR)$(includedir)/cvc4/bindings/compat"
+	-rmdir "$(DESTDIR)$(includedir)/cvc4/bindings"
+	-rmdir "$(DESTDIR)$(includedir)/cvc4"
+	-rmdir "$(DESTDIR)$(libdir)/ocaml/cvc4"
+
+# This rule is ugly.  It's needed to ensure that automake's dependence
+# includes are available during distclean, even though they come from
+# directories that are cleaned first.  Without this rule, "distclean"
+# fails.
+%.Plo:; $(MKDIR_P) "$(dir $@)" && : > "$@"
+
+#include @top_srcdir@/src/theory/Makefile.subdirs
+$(top_builddir)/src/.subdirs: $(top_srcdir)/src/Makefile.theories  @top_srcdir@/src/mksubdirs
+	$(AM_V_at)test -d $(top_builddir)/src || mkdir $(top_builddir)/src
+	$(AM_V_at)chmod +x @top_srcdir@/src/mksubdirs
+	$(AM_V_at)( @top_srcdir@/src/mksubdirs "$(top_srcdir)" ) > $(top_builddir)/src/.subdirs.tmp
+	@if ! diff -q $(top_builddir)/src/.subdirs $(top_builddir)/src/.subdirs.tmp &>/dev/null; then \
+		echo "  GEN   " $@; \
+		$(am__mv) $(top_builddir)/src/.subdirs.tmp $(top_builddir)/src/.subdirs; \
+	fi
+
+theory/rewriter_tables.h: theory/rewriter_tables_template.h theory/mkrewriter @top_builddir@/src/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)test -d $(top_builddir)/src/theory || mkdir -p @top_builddir@/src/theory
+	$(AM_V_at)chmod +x @srcdir@/theory/mkrewriter
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/theory/mkrewriter \
+		$< \
+		`cat @top_builddir@/src/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+theory/theory_traits.h: theory/theory_traits_template.h theory/mktheorytraits @top_builddir@/src/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)test -d $(top_builddir)/src/theory || mkdir -p @top_builddir@/src/theory
+	$(AM_V_at)chmod +x @srcdir@/theory/mktheorytraits
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/theory/mktheorytraits \
+		$< \
+		`cat @top_builddir@/src/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+theory/type_enumerator.cpp: theory/type_enumerator_template.cpp theory/mktheorytraits @top_builddir@/src/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)test -d $(top_builddir)/src/theory || mkdir -p @top_builddir@/src/theory
+	$(AM_V_at)chmod +x @srcdir@/theory/mktheorytraits
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/theory/mktheorytraits \
+		$< \
+		`cat @top_builddir@/src/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/Makefile.theories b/src/Makefile.theories
new file mode 100644
index 0000000..276663c
--- /dev/null
+++ b/src/Makefile.theories
@@ -0,0 +1,3 @@
+
+
+THEORIES = builtin booleans uf arith bv fp arrays datatypes sep sets strings quantifiers idl
diff --git a/src/base/Makefile.am b/src/base/Makefile.am
new file mode 100644
index 0000000..bf919cd
--- /dev/null
+++ b/src/base/Makefile.am
@@ -0,0 +1,85 @@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4LIB \
+	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
+
+noinst_LTLIBRARIES = libbase.la
+
+# Do not list built sources (like tls.h) here!
+# Rather, list them under BUILT_SOURCES, and their .in versions under
+# EXTRA_DIST.  Otherwise, they're packaged up in the tarball, which is
+# no good---they belong in the configured builds/ directory.  If they
+# end up in the source directory, they build the cvc4 that was
+# configured at the time of the "make dist", which (1) may not be the
+# configuration that the user wants, and (2) might cause link errors.
+libbase_la_SOURCES = \
+	Makefile.am \
+	Makefile.in \
+	configuration.cpp \
+	configuration.h \
+	configuration_private.h \
+	cvc4_assert.cpp \
+	cvc4_assert.h \
+	exception.cpp \
+	exception.h \
+	listener.cpp \
+	listener.h \
+	modal_exception.h \
+	output.cpp \
+	output.h \
+	ptr_closer.h
+
+
+
+BUILT_SOURCES = \
+	tls.h
+
+# listing {Debug,Trace}_tags too ensures that make doesn't auto-remove it
+# after building (if it does, we don't get the "cached" effect with
+# the .tmp files below, and we have to re-compile and re-link each
+# time, even when there are no changes).
+BUILT_SOURCES += \
+	Debug_tags.h \
+	Debug_tags \
+	Trace_tags.h \
+	Trace_tags
+
+MOSTLYCLEANFILES = \
+	Debug_tags \
+	Trace_tags \
+	Debug_tags.tmp \
+	Trace_tags.tmp \
+	Debug_tags.h \
+	Trace_tags.h
+
+EXTRA_DIST = \
+	configuration.i \
+	exception.i \
+	mktagheaders \
+	mktags \
+	modal_exception.i \
+	tls.h.in
+
+DISTCLEANFILES = \
+	tls.h.tmp \
+	tls.h
+
+%_tags.h: %_tags mktagheaders
+	$(AM_V_at)chmod +x @srcdir@/mktagheaders
+	$(AM_V_GEN)( @srcdir@/mktagheaders "$<" "$<" ) >"$@"
+
+# This .tmp business is to keep from having to re-compile options.cpp
+# (and then re-link the libraries) if nothing has changed.
+%_tags: %_tags.tmp
+	$(AM_V_GEN)\
+	diff -q "$^" "$@" &>/dev/null || mv "$^" "$@" || true
+# .PHONY ensures the .tmp version is always rebuilt (to check for any changes)
+.PHONY: Debug_tags.tmp Trace_tags.tmp
+# The "sed" invocation below is particularly obnoxious, but it works around
+# inconsistencies in REs on different platforms, using only a basic regular
+# expression (no |, no \<, ...).
+Debug_tags.tmp Trace_tags.tmp: mktags
+	$(AM_V_at)chmod +x @srcdir@/mktags
+	$(AM_V_GEN)(@srcdir@/mktags \
+    '$(@:_tags.tmp=)' \
+    "$$(find @srcdir@/../ -name '*.cpp' -o -name '*.h' -o -name '*.cc' -o -name '*.g')") >"$@"
diff --git a/src/base/Makefile.in b/src/base/Makefile.in
new file mode 100644
index 0000000..3f7dfa7
--- /dev/null
+++ b/src/base/Makefile.in
@@ -0,0 +1,841 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = src/base
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES = tls.h.tmp
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libbase_la_LIBADD =
+am_libbase_la_OBJECTS = configuration.lo cvc4_assert.lo exception.lo \
+	listener.lo output.lo
+libbase_la_OBJECTS = $(am_libbase_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(libbase_la_SOURCES)
+DIST_SOURCES = $(libbase_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/tls.h.in \
+	$(top_srcdir)/config/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4LIB \
+	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..
+
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
+noinst_LTLIBRARIES = libbase.la
+
+# Do not list built sources (like tls.h) here!
+# Rather, list them under BUILT_SOURCES, and their .in versions under
+# EXTRA_DIST.  Otherwise, they're packaged up in the tarball, which is
+# no good---they belong in the configured builds/ directory.  If they
+# end up in the source directory, they build the cvc4 that was
+# configured at the time of the "make dist", which (1) may not be the
+# configuration that the user wants, and (2) might cause link errors.
+libbase_la_SOURCES = \
+	Makefile.am \
+	Makefile.in \
+	configuration.cpp \
+	configuration.h \
+	configuration_private.h \
+	cvc4_assert.cpp \
+	cvc4_assert.h \
+	exception.cpp \
+	exception.h \
+	listener.cpp \
+	listener.h \
+	modal_exception.h \
+	output.cpp \
+	output.h \
+	ptr_closer.h
+
+
+# listing {Debug,Trace}_tags too ensures that make doesn't auto-remove it
+# after building (if it does, we don't get the "cached" effect with
+# the .tmp files below, and we have to re-compile and re-link each
+# time, even when there are no changes).
+BUILT_SOURCES = tls.h Debug_tags.h Debug_tags Trace_tags.h Trace_tags
+MOSTLYCLEANFILES = \
+	Debug_tags \
+	Trace_tags \
+	Debug_tags.tmp \
+	Trace_tags.tmp \
+	Debug_tags.h \
+	Trace_tags.h
+
+EXTRA_DIST = \
+	configuration.i \
+	exception.i \
+	mktagheaders \
+	mktags \
+	modal_exception.i \
+	tls.h.in
+
+DISTCLEANFILES = \
+	tls.h.tmp \
+	tls.h
+
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/base/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/base/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+tls.h.tmp: $(top_builddir)/config.status $(srcdir)/tls.h.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+libbase.la: $(libbase_la_OBJECTS) $(libbase_la_DEPENDENCIES) $(EXTRA_libbase_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK)  $(libbase_la_OBJECTS) $(libbase_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/configuration.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cvc4_assert.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/exception.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/listener.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/output.Plo at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+%_tags.h: %_tags mktagheaders
+	$(AM_V_at)chmod +x @srcdir@/mktagheaders
+	$(AM_V_GEN)( @srcdir@/mktagheaders "$<" "$<" ) >"$@"
+
+# This .tmp business is to keep from having to re-compile options.cpp
+# (and then re-link the libraries) if nothing has changed.
+%_tags: %_tags.tmp
+	$(AM_V_GEN)\
+	diff -q "$^" "$@" &>/dev/null || mv "$^" "$@" || true
+# .PHONY ensures the .tmp version is always rebuilt (to check for any changes)
+.PHONY: Debug_tags.tmp Trace_tags.tmp
+# The "sed" invocation below is particularly obnoxious, but it works around
+# inconsistencies in REs on different platforms, using only a basic regular
+# expression (no |, no \<, ...).
+Debug_tags.tmp Trace_tags.tmp: mktags
+	$(AM_V_at)chmod +x @srcdir@/mktags
+	$(AM_V_GEN)(@srcdir@/mktags \
+    '$(@:_tags.tmp=)' \
+    "$$(find @srcdir@/../ -name '*.cpp' -o -name '*.h' -o -name '*.cc' -o -name '*.g')") >"$@"
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/base/configuration.cpp b/src/base/configuration.cpp
new file mode 100644
index 0000000..db19469
--- /dev/null
+++ b/src/base/configuration.cpp
@@ -0,0 +1,297 @@
+/*********************                                                        */
+/*! \file configuration.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Francois Bobot, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of Configuration class, which provides compile-time
+ ** configuration information about the CVC4 library
+ **
+ ** Implementation of Configuration class, which provides compile-time
+ ** configuration information about the CVC4 library.
+ **/
+#include "base/configuration.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#include <sstream>
+#include <string>
+
+#include "cvc4autoconfig.h"
+#include "base/configuration_private.h"
+
+#if defined(CVC4_DEBUG) && defined(CVC4_TRACING)
+#  include "base/Debug_tags.h"
+#endif /* CVC4_DEBUG && CVC4_TRACING */
+
+#ifdef CVC4_TRACING
+#  include "base/Trace_tags.h"
+#endif /* CVC4_TRACING */
+
+using namespace std;
+
+namespace CVC4 {
+
+string Configuration::getName() {
+  return PACKAGE_NAME;
+}
+
+bool Configuration::isDebugBuild() {
+  return IS_DEBUG_BUILD;
+}
+
+bool Configuration::isStatisticsBuild() {
+  return IS_STATISTICS_BUILD;
+}
+
+bool Configuration::isReplayBuild() {
+  return IS_REPLAY_BUILD;
+}
+
+bool Configuration::isTracingBuild() {
+  return IS_TRACING_BUILD;
+}
+
+bool Configuration::isDumpingBuild() {
+  return IS_DUMPING_BUILD;
+}
+
+bool Configuration::isMuzzledBuild() {
+  return IS_MUZZLED_BUILD;
+}
+
+bool Configuration::isAssertionBuild() {
+  return IS_ASSERTIONS_BUILD;
+}
+
+bool Configuration::isProofBuild() {
+  return IS_PROOFS_BUILD;
+}
+
+bool Configuration::isCoverageBuild() {
+  return IS_COVERAGE_BUILD;
+}
+
+bool Configuration::isProfilingBuild() {
+  return IS_PROFILING_BUILD;
+}
+
+bool Configuration::isCompetitionBuild() {
+  return IS_COMPETITION_BUILD;
+}
+
+string Configuration::getPackageName() {
+  return PACKAGE_NAME;
+}
+
+string Configuration::getVersionString() {
+  return CVC4_RELEASE_STRING;
+}
+
+unsigned Configuration::getVersionMajor() {
+  return CVC4_MAJOR;
+}
+
+unsigned Configuration::getVersionMinor() {
+  return CVC4_MINOR;
+}
+
+unsigned Configuration::getVersionRelease() {
+  return CVC4_RELEASE;
+}
+
+std::string Configuration::getVersionExtra() {
+  return CVC4_EXTRAVERSION;
+}
+
+std::string Configuration::about() {
+  return CVC4_ABOUT_STRING;
+}
+
+bool Configuration::licenseIsGpl() {
+  return IS_GPL_BUILD;
+}
+
+bool Configuration::isBuiltWithGmp() {
+  return IS_GMP_BUILD;
+}
+
+bool Configuration::isBuiltWithCln() {
+  return IS_CLN_BUILD;
+}
+
+bool Configuration::isBuiltWithGlpk() {
+  return IS_GLPK_BUILD;
+}
+
+bool Configuration::isBuiltWithAbc() {
+  return IS_ABC_BUILD;
+}
+
+bool Configuration::isBuiltWithCryptominisat() {
+  return IS_CRYPTOMINISAT_BUILD;
+}
+
+bool Configuration::isBuiltWithReadline() {
+  return IS_READLINE_BUILD;
+}
+
+bool Configuration::isBuiltWithCudd() {
+  return false;
+}
+
+bool Configuration::isBuiltWithTlsSupport() {
+  return USING_TLS;
+}
+
+unsigned Configuration::getNumDebugTags() {
+#if defined(CVC4_DEBUG) && defined(CVC4_TRACING)
+  /* -1 because a NULL pointer is inserted as the last value */
+  return (sizeof(Debug_tags) / sizeof(Debug_tags[0])) - 1;
+#else /* CVC4_DEBUG && CVC4_TRACING */
+  return 0;
+#endif /* CVC4_DEBUG && CVC4_TRACING */
+}
+
+char const* const* Configuration::getDebugTags() {
+#if defined(CVC4_DEBUG) && defined(CVC4_TRACING)
+  return Debug_tags;
+#else /* CVC4_DEBUG && CVC4_TRACING */
+  static char const* no_tags[] = { NULL };
+  return no_tags;
+#endif /* CVC4_DEBUG && CVC4_TRACING */
+}
+
+int strcmpptr(const char **s1, const char **s2){
+  return strcmp(*s1,*s2);
+}
+
+bool Configuration::isDebugTag(char const *tag){
+#if defined(CVC4_DEBUG) && defined(CVC4_TRACING)
+  unsigned ntags = getNumDebugTags();
+  char const* const* tags = getDebugTags();
+  for (unsigned i = 0; i < ntags; ++ i) {
+    if (strcmp(tag, tags[i]) == 0) {
+      return true;
+    }
+  }
+#endif /* CVC4_DEBUG && CVC4_TRACING */
+  return false;
+}
+
+unsigned Configuration::getNumTraceTags() {
+#if CVC4_TRACING
+  /* -1 because a NULL pointer is inserted as the last value */
+  return sizeof(Trace_tags) / sizeof(Trace_tags[0]) - 1;
+#else /* CVC4_TRACING */
+  return 0;
+#endif /* CVC4_TRACING */
+}
+
+char const* const* Configuration::getTraceTags() {
+#if CVC4_TRACING
+  return Trace_tags;
+#else /* CVC4_TRACING */
+  static char const* no_tags[] = { NULL };
+  return no_tags;
+#endif /* CVC4_TRACING */
+}
+
+bool Configuration::isTraceTag(char const * tag){
+#if CVC4_TRACING
+  unsigned ntags = getNumTraceTags();
+  char const* const* tags = getTraceTags();
+  for (unsigned i = 0; i < ntags; ++ i) {
+    if (strcmp(tag, tags[i]) == 0) {
+      return true;
+    }
+  }
+#endif /* CVC4_TRACING */
+  return false;
+}
+
+bool Configuration::isGitBuild() {
+  return IS_GIT_BUILD;
+}
+
+const char* Configuration::getGitBranchName() {
+  return GIT_BRANCH_NAME;
+}
+
+const char* Configuration::getGitCommit() {
+  return GIT_COMMIT;
+}
+
+bool Configuration::hasGitModifications() {
+  return GIT_HAS_MODIFICATIONS;
+}
+
+std::string Configuration::getGitId() {
+  if(! isGitBuild()) {
+    return "";
+  }
+
+  const char* branchName = getGitBranchName();
+  if(*branchName == '\0') {
+    branchName = "-";
+  }
+
+  stringstream ss;
+  ss << "git " << branchName << " " << string(getGitCommit()).substr(0, 8)
+     << ( ::CVC4::Configuration::hasGitModifications() ? " (with modifications)" : "" );
+  return ss.str();
+}
+
+bool Configuration::isSubversionBuild() {
+  return IS_SUBVERSION_BUILD;
+}
+
+const char* Configuration::getSubversionBranchName() {
+  return SUBVERSION_BRANCH_NAME;
+}
+
+unsigned Configuration::getSubversionRevision() {
+  return SUBVERSION_REVISION;
+}
+
+bool Configuration::hasSubversionModifications() {
+  return SUBVERSION_HAS_MODIFICATIONS;
+}
+
+std::string Configuration::getSubversionId() {
+  if(! isSubversionBuild()) {
+    return "";
+  }
+
+  stringstream ss;
+  ss << "subversion " << getSubversionBranchName() << " r" << getSubversionRevision()
+     << ( ::CVC4::Configuration::hasSubversionModifications() ? " (with modifications)" : "" );
+  return ss.str();
+}
+
+std::string Configuration::getCompiler() {
+  stringstream ss;
+#ifdef __GNUC__
+  ss << "GCC";
+#else /* __GNUC__ */
+  ss << "unknown compiler";
+#endif /* __GNUC__ */
+#ifdef __VERSION__
+  ss << " version " << __VERSION__;
+#else /* __VERSION__ */
+  ss << ", unknown version";
+#endif /* __VERSION__ */
+  return ss.str();
+}
+
+std::string Configuration::getCompiledDateTime() {
+  return __DATE__ " " __TIME__;
+}
+
+}/* CVC4 namespace */
diff --git a/src/base/configuration.h b/src/base/configuration.h
new file mode 100644
index 0000000..5d49917
--- /dev/null
+++ b/src/base/configuration.h
@@ -0,0 +1,137 @@
+/*********************                                                        */
+/*! \file configuration.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Francois Bobot
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Interface to a public class that provides compile-time information
+ ** about the CVC4 library.
+ **
+ ** Interface to a public class that provides compile-time information
+ ** about the CVC4 library.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__CONFIGURATION_H
+#define __CVC4__CONFIGURATION_H
+
+#include <string>
+
+namespace CVC4 {
+
+/**
+ * Represents the (static) configuration of CVC4.
+ */
+class CVC4_PUBLIC Configuration {
+private:
+  /** Private default ctor: Disallow construction of this class */
+  Configuration();
+
+  // these constants are filled in by the build system
+  static const bool IS_SUBVERSION_BUILD;
+  static const char* const SUBVERSION_BRANCH_NAME;
+  static const unsigned SUBVERSION_REVISION;
+  static const bool SUBVERSION_HAS_MODIFICATIONS;
+  static const bool IS_GIT_BUILD;
+  static const char* const GIT_BRANCH_NAME;
+  static const char* const GIT_COMMIT;
+  static const bool GIT_HAS_MODIFICATIONS;
+
+public:
+
+  static std::string getName();
+
+  static bool isDebugBuild();
+
+  static bool isStatisticsBuild();
+
+  static bool isReplayBuild();
+
+  static bool isTracingBuild();
+
+  static bool isDumpingBuild();
+
+  static bool isMuzzledBuild();
+
+  static bool isAssertionBuild();
+
+  static bool isProofBuild();
+
+  static bool isCoverageBuild();
+
+  static bool isProfilingBuild();
+
+  static bool isCompetitionBuild();
+
+  static std::string getPackageName();
+
+  static std::string getVersionString();
+
+  static unsigned getVersionMajor();
+
+  static unsigned getVersionMinor();
+
+  static unsigned getVersionRelease();
+
+  static std::string getVersionExtra();
+
+  static std::string about();
+
+  static bool licenseIsGpl();
+
+  static bool isBuiltWithGmp();
+
+  static bool isBuiltWithCln();
+
+  static bool isBuiltWithGlpk();
+
+  static bool isBuiltWithAbc();
+
+  static bool isBuiltWithCryptominisat();
+
+  static bool isBuiltWithReadline();
+
+  static bool isBuiltWithCudd();
+
+  static bool isBuiltWithTlsSupport();
+
+  /* Return the number of debug tags */
+  static unsigned getNumDebugTags();
+  /* Return a sorted array of the debug tags name */
+  static char const* const* getDebugTags();
+  /* Test if the given argument is a known debug tag name */
+  static bool isDebugTag(char const *);
+
+  /* Return the number of trace tags */
+  static unsigned getNumTraceTags();
+  /* Return a sorted array of the trace tags name */
+  static char const* const* getTraceTags();
+  /* Test if the given argument is a known trace tag name */
+  static bool isTraceTag(char const *);
+
+  static bool isGitBuild();
+  static const char* getGitBranchName();
+  static const char* getGitCommit();
+  static bool hasGitModifications();
+  static std::string getGitId();
+
+  static bool isSubversionBuild();
+  static const char* getSubversionBranchName();
+  static unsigned getSubversionRevision();
+  static bool hasSubversionModifications();
+  static std::string getSubversionId();
+
+  static std::string getCompiler();
+  static std::string getCompiledDateTime();
+
+};/* class Configuration */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__CONFIGURATION_H */
diff --git a/src/base/configuration.i b/src/base/configuration.i
new file mode 100644
index 0000000..3b92e24
--- /dev/null
+++ b/src/base/configuration.i
@@ -0,0 +1,7 @@
+%{
+#include "base/configuration.h"
+%}
+
+%apply char **STRING_ARRAY { char const* const* }
+%include "base/configuration.h"
+%clear char const* const*;
diff --git a/src/base/configuration_private.h b/src/base/configuration_private.h
new file mode 100644
index 0000000..f0ef1a7
--- /dev/null
+++ b/src/base/configuration_private.h
@@ -0,0 +1,170 @@
+/*********************                                                        */
+/*! \file configuration_private.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Christopher L. Conway, ACSYS
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Provides compile-time configuration information about the
+ ** CVC4 library.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__CONFIGURATION_PRIVATE_H
+#define __CVC4__CONFIGURATION_PRIVATE_H
+
+#include <string>
+
+#include "base/configuration.h"
+
+namespace CVC4 {
+
+#ifdef CVC4_DEBUG
+#  define IS_DEBUG_BUILD true
+#else /* CVC4_DEBUG */
+#  define IS_DEBUG_BUILD false
+#endif /* CVC4_DEBUG */
+
+#ifdef CVC4_STATISTICS_ON
+#  define IS_STATISTICS_BUILD true
+#else /* CVC4_STATISTICS_ON */
+#  define IS_STATISTICS_BUILD false
+#endif /* CVC4_STATISTICS_ON */
+
+#ifdef CVC4_REPLAY
+#  define IS_REPLAY_BUILD true
+#else /* CVC4_REPLAY */
+#  define IS_REPLAY_BUILD false
+#endif /* CVC4_REPLAY */
+
+#ifdef CVC4_TRACING
+#  define IS_TRACING_BUILD true
+#else /* CVC4_TRACING */
+#  define IS_TRACING_BUILD false
+#endif /* CVC4_TRACING */
+
+#ifdef CVC4_DUMPING
+#  define IS_DUMPING_BUILD true
+#else /* CVC4_DUMPING */
+#  define IS_DUMPING_BUILD false
+#endif /* CVC4_DUMPING */
+
+#ifdef CVC4_MUZZLE
+#  define IS_MUZZLED_BUILD true
+#else /* CVC4_MUZZLE */
+#  define IS_MUZZLED_BUILD false
+#endif /* CVC4_MUZZLE */
+
+#ifdef CVC4_ASSERTIONS
+#  define IS_ASSERTIONS_BUILD true
+#else /* CVC4_ASSERTIONS */
+#  define IS_ASSERTIONS_BUILD false
+#endif /* CVC4_ASSERTIONS */
+
+#ifdef CVC4_PROOF
+#  define IS_PROOFS_BUILD true
+#else  /* CVC4_PROOF */
+#  define IS_PROOFS_BUILD false
+#endif /* CVC4_PROOF */
+
+#ifdef CVC4_COVERAGE
+#  define IS_COVERAGE_BUILD true
+#else /* CVC4_COVERAGE */
+#  define IS_COVERAGE_BUILD false
+#endif /* CVC4_COVERAGE */
+
+#ifdef CVC4_PROFILING
+#  define IS_PROFILING_BUILD true
+#else /* CVC4_PROFILING */
+#  define IS_PROFILING_BUILD false
+#endif /* CVC4_PROFILING */
+
+#ifdef CVC4_COMPETITION_MODE
+#  define IS_COMPETITION_BUILD true
+#else /* CVC4_COMPETITION_MODE */
+#  define IS_COMPETITION_BUILD false
+#endif /* CVC4_COMPETITION_MODE */
+
+#ifdef CVC4_GMP_IMP
+#  define IS_GMP_BUILD true
+#else /* CVC4_GMP_IMP */
+#  define IS_GMP_BUILD false
+#endif /* CVC4_GMP_IMP */
+
+#ifdef CVC4_CLN_IMP
+#  define IS_CLN_BUILD true
+#else /* CVC4_CLN_IMP */
+#  define IS_CLN_BUILD false
+#endif /* CVC4_CLN_IMP */
+
+#if CVC4_USE_GLPK
+#  define IS_GLPK_BUILD true
+#else /* CVC4_USE_GLPK */
+#  define IS_GLPK_BUILD false
+#endif /* CVC4_USE_GLPK */
+
+#if CVC4_USE_ABC
+#  define IS_ABC_BUILD true
+#else /* CVC4_USE_ABC */
+#  define IS_ABC_BUILD false
+#endif /* CVC4_USE_ABC */
+
+#if CVC4_USE_CRYPTOMINISAT
+#  define IS_CRYPTOMINISAT_BUILD true
+#else /* CVC4_USE_CRYPTOMINISAT */
+#  define IS_CRYPTOMINISAT_BUILD false
+#endif /* CVC4_USE_CRYPTOMINISAT */
+
+#ifdef HAVE_LIBREADLINE
+#  define IS_READLINE_BUILD true
+#else /* HAVE_LIBREADLINE */
+#  define IS_READLINE_BUILD false
+#endif /* HAVE_LIBREADLINE */
+
+#if CVC4_GPL_DEPS
+#  define IS_GPL_BUILD true
+#else /* CVC4_GPL_DEPS */
+#  define IS_GPL_BUILD false
+#endif /* CVC4_GPL_DEPS */
+
+#ifdef TLS
+#  define USING_TLS true
+#else /* TLS */
+#  define USING_TLS false
+#endif /* TLS */
+
+#define CVC4_ABOUT_STRING ( ::std::string("\
+This is CVC4 version " CVC4_RELEASE_STRING ) + \
+    ( ::CVC4::Configuration::isGitBuild() \
+        ? ( ::std::string(" [") + ::CVC4::Configuration::getGitId() + "]" ) \
+        : \
+    ( ::CVC4::Configuration::isSubversionBuild() \
+        ? ( ::std::string(" [") + ::CVC4::Configuration::getSubversionId() + "]" ) \
+        : ::std::string("") \
+    )) + "\n\
+compiled with " + ::CVC4::Configuration::getCompiler() + "\n\
+on " + ::CVC4::Configuration::getCompiledDateTime() + "\n\n\
+Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014\n\
+  New York University and The University of Iowa\n\n" + \
+    ( IS_GPL_BUILD ? "\
+This build of CVC4 uses GPLed libraries, and is thus covered by the GNU\n\
+General Public License (GPL) version 3.  Versions of CVC4 are available\n\
+that are covered by the (modified) BSD license.  If you want to license\n\
+CVC4 under this license, please configure CVC4 with the \"--bsd\" option\n\
+before building from sources.\n\
+" : \
+"This CVC4 library uses GMP as its multi-precision arithmetic library.\n\n\
+CVC4 is open-source and is covered by the BSD license (modified).\n\n\
+" ) + "\
+THIS SOFTWARE PROVIDED AS-IS, WITHOUT ANY WARRANTIES. USE AT YOUR OWN RISK.\n\n\
+See the file COPYING (distributed with the source code, and with all binaries)\n\
+for the full CVC4 copyright, licensing, and (lack of) warranty information.\n" )
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__CONFIGURATION_PRIVATE_H */
diff --git a/src/base/cvc4_assert.cpp b/src/base/cvc4_assert.cpp
new file mode 100644
index 0000000..9d578dc
--- /dev/null
+++ b/src/base/cvc4_assert.cpp
@@ -0,0 +1,171 @@
+/*********************                                                        */
+/*! \file cvc4_assert.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Assertion utility classes, functions, and exceptions.
+ **
+ ** Assertion utility classes, functions, and exceptions.  Implementation.
+ **/
+
+#include <new>
+#include <cstdarg>
+#include <cstdio>
+
+#include "base/cvc4_assert.h"
+#include "base/output.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+#ifdef CVC4_DEBUG
+//CVC4_THREADLOCAL(const char*) s_debugLastException = NULL;
+#endif /* CVC4_DEBUG */
+
+
+void AssertionException::construct(const char* header, const char* extra,
+                                   const char* function, const char* file,
+                                   unsigned line, const char* fmt,
+                                   va_list args) {
+  // try building the exception msg with a smallish buffer first,
+  // then with a larger one if sprintf tells us to.
+  int n = 512;
+  char* buf;
+  buf = new char[n];
+
+  for(;;) {
+ 
+    int size;
+    if(extra == NULL) {
+      size = snprintf(buf, n, "%s\n%s\n%s:%d\n",
+                      header, function, file, line);
+    } else {
+      size = snprintf(buf, n, "%s\n%s\n%s:%d:\n\n  %s\n",
+                      header, function, file, line, extra);
+    }
+
+    if(size < n) {
+      va_list args_copy;
+      va_copy(args_copy, args);
+      size += vsnprintf(buf + size, n - size, fmt, args_copy);
+      va_end(args_copy);
+
+      if(size < n) {
+        break;
+      }
+    }
+
+    if(size >= n) {
+      // try again with a buffer that's large enough
+      n = size + 1;
+      delete [] buf;
+      buf = new char[n];
+    }
+  }
+
+  setMessage(string(buf));
+
+#ifdef CVC4_DEBUG
+  LastExceptionBuffer* buffer = LastExceptionBuffer::getCurrent();
+  if(buffer != NULL){
+    if(buffer->getContents() == NULL) {
+      buffer->setContents(buf);
+    }
+  }
+#endif /* CVC4_DEBUG */
+  delete [] buf;
+}
+
+void AssertionException::construct(const char* header, const char* extra,
+                                   const char* function, const char* file,
+                                   unsigned line) {
+  // try building the exception msg with a smallish buffer first,
+  // then with a larger one if sprintf tells us to.
+  int n = 256;
+  char* buf;
+
+  for(;;) {
+    buf = new char[n];
+
+    int size;
+    if(extra == NULL) {
+      size = snprintf(buf, n, "%s.\n%s\n%s:%d\n",
+                      header, function, file, line);
+    } else {
+      size = snprintf(buf, n, "%s.\n%s\n%s:%d:\n\n  %s\n",
+                      header, function, file, line, extra);
+    }
+
+    if(size < n) {
+      break;
+    } else {
+      // try again with a buffer that's large enough
+      n = size + 1;
+      delete [] buf;
+    }
+  }
+
+  setMessage(string(buf));
+
+
+#ifdef CVC4_DEBUG
+  LastExceptionBuffer* buffer = LastExceptionBuffer::getCurrent();
+  if(buffer != NULL){
+    if(buffer->getContents() == NULL) {
+      buffer->setContents(buf);
+    }
+  }
+#endif /* CVC4_DEBUG */
+  delete [] buf;
+}
+
+#ifdef CVC4_DEBUG
+
+/**
+ * Special assertion failure handling in debug mode; in non-debug
+ * builds, the exception is thrown from the macro.  We factor out this
+ * additional logic so as not to bloat the code at every Assert()
+ * expansion.
+ *
+ * Note this name is prefixed with "debug" because it is included in
+ * debug builds only; in debug builds, it handles all assertion
+ * failures (even those that exist in non-debug builds).
+ */
+void debugAssertionFailed(const AssertionException& thisException,
+                          const char* propagatingException) {
+  static CVC4_THREADLOCAL(bool) alreadyFired = false;
+
+  if(__builtin_expect( ( !std::uncaught_exception() ), true ) || alreadyFired) {
+    throw thisException;
+  }
+
+  alreadyFired = true;
+
+  // propagatingException is the propagating exception, but can be
+  // NULL if the propagating exception is not a CVC4::Exception.
+  Warning() << "===========================================" << std::endl
+            << "An assertion failed during stack unwinding:" << std::endl;
+  if(propagatingException != NULL) {
+    Warning() << "The propagating exception is:" << std::endl
+              << propagatingException << std::endl
+              << "===========================================" << std::endl;
+    Warning() << "The newly-thrown exception is:" << std::endl;
+  } else {
+    Warning() << "The propagating exception is unknown." << std::endl;
+  }
+  Warning() << thisException << std::endl
+            << "===========================================" << std::endl;
+
+  terminate();
+}
+
+#endif /* CVC4_DEBUG */
+
+}/* CVC4 namespace */
diff --git a/src/base/cvc4_assert.h b/src/base/cvc4_assert.h
new file mode 100644
index 0000000..de55733
--- /dev/null
+++ b/src/base/cvc4_assert.h
@@ -0,0 +1,321 @@
+/*********************                                                        */
+/*! \file cvc4_assert.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Assertion utility classes, functions, exceptions, and macros.
+ **
+ ** Assertion utility classes, functions, exceptions, and macros.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__ASSERT_H
+#define __CVC4__ASSERT_H
+
+#include <cstdarg>
+#include <cstdio>
+#include <cstdlib>
+#include <sstream>
+#include <string>
+
+#include "base/exception.h"
+#include "base/tls.h"
+
+// output.h not strictly needed for this header, but it _is_ needed to
+// actually _use_ anything in this header, so let's include it.
+// Tim : Disabling this and moving it into cvc4_assert.cpp
+//#include "util/output.h"
+
+namespace CVC4 {
+
+class AssertionException : public Exception {
+ protected:
+  void construct(const char* header, const char* extra, const char* function,
+                 const char* file, unsigned line, const char* fmt, ...) {
+    va_list args;
+    va_start(args, fmt);
+    construct(header, extra, function, file, line, fmt, args);
+    va_end(args);
+  }
+
+  void construct(const char* header, const char* extra, const char* function,
+                 const char* file, unsigned line, const char* fmt,
+                 va_list args);
+
+  void construct(const char* header, const char* extra, const char* function,
+                 const char* file, unsigned line);
+
+  AssertionException() : Exception() {}
+
+ public:
+  AssertionException(const char* extra, const char* function, const char* file,
+                     unsigned line, const char* fmt, ...)
+      : Exception() {
+    va_list args;
+    va_start(args, fmt);
+    construct("Assertion failure", extra, function, file, line, fmt, args);
+    va_end(args);
+  }
+
+  AssertionException(const char* extra, const char* function, const char* file,
+                     unsigned line)
+      : Exception() {
+    construct("Assertion failure", extra, function, file, line);
+  }
+}; /* class AssertionException */
+
+class UnreachableCodeException : public AssertionException {
+ protected:
+  UnreachableCodeException() : AssertionException() {}
+
+ public:
+  UnreachableCodeException(const char* function, const char* file,
+                           unsigned line, const char* fmt, ...)
+      : AssertionException() {
+    va_list args;
+    va_start(args, fmt);
+    construct("Unreachable code reached", NULL, function, file, line, fmt,
+              args);
+    va_end(args);
+  }
+
+  UnreachableCodeException(const char* function, const char* file,
+                           unsigned line)
+      : AssertionException() {
+    construct("Unreachable code reached", NULL, function, file, line);
+  }
+}; /* class UnreachableCodeException */
+
+class UnhandledCaseException : public UnreachableCodeException {
+ protected:
+  UnhandledCaseException() : UnreachableCodeException() {}
+
+ public:
+  UnhandledCaseException(const char* function, const char* file, unsigned line,
+                         const char* fmt, ...)
+      : UnreachableCodeException() {
+    va_list args;
+    va_start(args, fmt);
+    construct("Unhandled case encountered", NULL, function, file, line, fmt,
+              args);
+    va_end(args);
+  }
+
+  template <class T>
+  UnhandledCaseException(const char* function, const char* file, unsigned line,
+                         T theCase)
+      : UnreachableCodeException() {
+    std::stringstream sb;
+    sb << theCase;
+    construct("Unhandled case encountered", NULL, function, file, line,
+              "The case was: %s", sb.str().c_str());
+  }
+
+  UnhandledCaseException(const char* function, const char* file, unsigned line)
+      : UnreachableCodeException() {
+    construct("Unhandled case encountered", NULL, function, file, line);
+  }
+}; /* class UnhandledCaseException */
+
+class UnimplementedOperationException : public AssertionException {
+ protected:
+  UnimplementedOperationException() : AssertionException() {}
+
+ public:
+  UnimplementedOperationException(const char* function, const char* file,
+                                  unsigned line, const char* fmt, ...)
+      : AssertionException() {
+    va_list args;
+    va_start(args, fmt);
+    construct("Unimplemented code encountered", NULL, function, file, line, fmt,
+              args);
+    va_end(args);
+  }
+
+  UnimplementedOperationException(const char* function, const char* file,
+                                  unsigned line)
+      : AssertionException() {
+    construct("Unimplemented code encountered", NULL, function, file, line);
+  }
+}; /* class UnimplementedOperationException */
+
+class AssertArgumentException : public AssertionException {
+ protected:
+  AssertArgumentException() : AssertionException() {}
+
+ public:
+  AssertArgumentException(const char* argDesc, const char* function,
+                          const char* file, unsigned line, const char* fmt, ...)
+      : AssertionException() {
+    va_list args;
+    va_start(args, fmt);
+    construct("Illegal argument detected",
+              (std::string("`") + argDesc + "' is a bad argument").c_str(),
+              function, file, line, fmt, args);
+    va_end(args);
+  }
+
+  AssertArgumentException(const char* argDesc, const char* function,
+                          const char* file, unsigned line)
+      : AssertionException() {
+    construct("Illegal argument detected",
+              (std::string("`") + argDesc + "' is a bad argument").c_str(),
+              function, file, line);
+  }
+
+  AssertArgumentException(const char* condStr, const char* argDesc,
+                          const char* function, const char* file, unsigned line,
+                          const char* fmt, ...)
+      : AssertionException() {
+    va_list args;
+    va_start(args, fmt);
+    construct("Illegal argument detected",
+              (std::string("`") + argDesc + "' is a bad argument; expected " +
+               condStr + " to hold")
+                  .c_str(),
+              function, file, line, fmt, args);
+    va_end(args);
+  }
+
+  AssertArgumentException(const char* condStr, const char* argDesc,
+                          const char* function, const char* file, unsigned line)
+      : AssertionException() {
+    construct("Illegal argument detected",
+              (std::string("`") + argDesc + "' is a bad argument; expected " +
+               condStr + " to hold")
+                  .c_str(),
+              function, file, line);
+  }
+}; /* class AssertArgumentException */
+
+class InternalErrorException : public AssertionException {
+ protected:
+  InternalErrorException() : AssertionException() {}
+
+ public:
+  InternalErrorException(const char* function, const char* file, unsigned line)
+      : AssertionException() {
+    construct("Internal error detected", "", function, file, line);
+  }
+
+  InternalErrorException(const char* function, const char* file, unsigned line,
+                         const char* fmt, ...)
+      : AssertionException() {
+    va_list args;
+    va_start(args, fmt);
+    construct("Internal error detected", "", function, file, line, fmt, args);
+    va_end(args);
+  }
+
+  InternalErrorException(const char* function, const char* file, unsigned line,
+                         std::string fmt, ...)
+      : AssertionException() {
+    va_list args;
+    va_start(args, fmt);
+    construct("Internal error detected", "", function, file, line, fmt.c_str(),
+              args);
+    va_end(args);
+  }
+
+}; /* class InternalErrorException */
+
+#ifdef CVC4_DEBUG
+
+/**
+ * Special assertion failure handling in debug mode; in non-debug
+ * builds, the exception is thrown from the macro.  We factor out this
+ * additional logic so as not to bloat the code at every Assert()
+ * expansion.
+ *
+ * Note this name is prefixed with "debug" because it is included in
+ * debug builds only; in debug builds, it handles all assertion
+ * failures (even those that exist in non-debug builds).
+ */
+void debugAssertionFailed(const AssertionException& thisException,
+                          const char* lastException);
+
+// If we're currently handling an exception, print a warning instead;
+// otherwise std::terminate() is called by the runtime and we lose
+// details of the exception
+#define AlwaysAssert(cond, msg...)                                     \
+  do {                                                                 \
+    if (__builtin_expect((!(cond)), false)) {                          \
+      /* save the last assertion failure */                            \
+      ::CVC4::LastExceptionBuffer* buffer =                            \
+          ::CVC4::LastExceptionBuffer::getCurrent();                   \
+      const char* lastException =                                      \
+          (buffer == NULL) ? NULL : buffer->getContents();             \
+      ::CVC4::AssertionException exception(#cond, __PRETTY_FUNCTION__, \
+                                           __FILE__, __LINE__, ##msg); \
+      ::CVC4::debugAssertionFailed(exception, lastException);          \
+    }                                                                  \
+  } while (0)
+
+#else /* CVC4_DEBUG */
+// These simpler (but less useful) versions for non-debug builds fails
+// will terminate() if thrown during stack unwinding.
+#define AlwaysAssert(cond, msg...)                                           \
+  do {                                                                       \
+    if (__builtin_expect((!(cond)), false)) {                                \
+      throw ::CVC4::AssertionException(#cond, __PRETTY_FUNCTION__, __FILE__, \
+                                       __LINE__, ##msg);                     \
+    }                                                                        \
+  } while (0)
+#endif /* CVC4_DEBUG */
+
+#define Unreachable(msg...)                                             \
+  throw ::CVC4::UnreachableCodeException(__PRETTY_FUNCTION__, __FILE__, \
+                                         __LINE__, ##msg)
+#define Unhandled(msg...)                                             \
+  throw ::CVC4::UnhandledCaseException(__PRETTY_FUNCTION__, __FILE__, \
+                                       __LINE__, ##msg)
+#define Unimplemented(msg...)                                                  \
+  throw ::CVC4::UnimplementedOperationException(__PRETTY_FUNCTION__, __FILE__, \
+                                                __LINE__, ##msg)
+#define InternalError(msg...)                                         \
+  throw ::CVC4::InternalErrorException(__PRETTY_FUNCTION__, __FILE__, \
+                                       __LINE__, ##msg)
+#define IllegalArgument(arg, msg...)      \
+  throw ::CVC4::IllegalArgumentException( \
+      "", #arg, __PRETTY_FUNCTION__,      \
+      ::CVC4::IllegalArgumentException::formatVariadic(msg).c_str());
+// This cannot use check argument directly as this forces
+// CheckArgument to use a va_list. This is unsupported in Swig.
+#define PrettyCheckArgument(cond, arg, msg...)                            \
+  do {                                                                    \
+    if (__builtin_expect((!(cond)), false)) {                             \
+      throw ::CVC4::IllegalArgumentException(                             \
+          #cond, #arg, __PRETTY_FUNCTION__,                               \
+          ::CVC4::IllegalArgumentException::formatVariadic(msg).c_str()); \
+    }                                                                     \
+  } while (0)
+#define AlwaysAssertArgument(cond, arg, msg...)                               \
+  do {                                                                        \
+    if (__builtin_expect((!(cond)), false)) {                                 \
+      throw ::CVC4::AssertArgumentException(#cond, #arg, __PRETTY_FUNCTION__, \
+                                            __FILE__, __LINE__, ##msg);       \
+    }                                                                         \
+  } while (0)
+
+#ifdef CVC4_ASSERTIONS
+#define Assert(cond, msg...) AlwaysAssert(cond, ##msg)
+#define AssertArgument(cond, arg, msg...) AlwaysAssertArgument(cond, arg, ##msg)
+#define DebugCheckArgument(cond, arg, msg...) CheckArgument(cond, arg, ##msg)
+#else                                     /* ! CVC4_ASSERTIONS */
+#define Assert(cond, msg...)              /*__builtin_expect( ( cond ), true )*/
+#define AssertArgument(cond, arg, msg...) /*__builtin_expect( ( cond ), true \
+                                             )*/
+#define DebugCheckArgument(cond, arg, \
+                           msg...) /*__builtin_expect( ( cond ), true )*/
+#endif                             /* CVC4_ASSERTIONS */
+
+} /* CVC4 namespace */
+
+#endif /* __CVC4__ASSERT_H */
diff --git a/src/base/exception.cpp b/src/base/exception.cpp
new file mode 100644
index 0000000..4f62f68
--- /dev/null
+++ b/src/base/exception.cpp
@@ -0,0 +1,184 @@
+/*********************                                                        */
+/*! \file exception.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief CVC4's exception base class and some associated utilities
+ **
+ ** CVC4's exception base class and some associated utilities.
+ **/
+
+#include "base/exception.h"
+
+#include <cstdarg>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <string>
+
+#include "base/cvc4_assert.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+CVC4_THREADLOCAL(LastExceptionBuffer*) LastExceptionBuffer::s_currentBuffer = NULL;
+
+LastExceptionBuffer::LastExceptionBuffer() : d_contents(NULL) {}
+
+LastExceptionBuffer::~LastExceptionBuffer() {
+  if(d_contents != NULL){
+    free(d_contents);
+    d_contents = NULL;
+  }
+}
+
+void LastExceptionBuffer::setContents(const char* string) {
+  if(d_contents != NULL){
+    free(d_contents);
+    d_contents = NULL;
+  }
+
+  if(string != NULL){
+    d_contents = strdup(string);
+  }
+}
+
+const char* IllegalArgumentException::s_header = "Illegal argument detected";
+
+std::string IllegalArgumentException::formatVariadic() {
+  return std::string();
+}
+
+std::string IllegalArgumentException::formatVariadic(const char* format, ...) {
+  va_list args;
+  va_start(args, format);
+
+  int n = 512;
+  char* buf = NULL;
+
+  for (int i = 0; i < 2; ++i){
+    Assert(n > 0);
+    if(buf != NULL){
+      delete [] buf;
+    }
+    buf = new char[n];
+
+    va_list args_copy;
+    va_copy(args_copy, args);
+    int size = vsnprintf(buf, n, format, args);
+    va_end(args_copy);
+
+    if(size >= n){
+      buf[n-1] = '\0';
+      n = size + 1;
+    } else {
+      break;
+    }
+  }
+  // buf is not NULL is an invariant.
+  // buf is also 0 terminated.
+  Assert(buf != NULL);
+  std::string result(buf);
+  delete [] buf;
+  va_end(args);
+  return result;
+}
+
+std::string IllegalArgumentException::format_extra(const char* condStr, const char* argDesc){
+  return ( std::string("`") + argDesc + "' is a bad argument"
+           + (*condStr == '\0' ? std::string() :
+              ( std::string("; expected ") +
+                condStr + " to hold" )) );
+}
+
+void IllegalArgumentException::construct(const char* header, const char* extra,
+                                         const char* function, const char* tail) {
+  // try building the exception msg with a smallish buffer first,
+  // then with a larger one if sprintf tells us to.
+  int n = 512;
+  char* buf;
+
+  for(;;) {
+    buf = new char[n];
+
+    int size;
+    if(extra == NULL) {
+      size = snprintf(buf, n, "%s\n%s\n%s",
+                      header, function, tail);
+    } else {
+      size = snprintf(buf, n, "%s\n%s\n\n  %s\n%s",
+                      header, function, extra, tail);
+    }
+
+    if(size < n) {
+      break;
+    } else {
+      // size >= n
+      // try again with a buffer that's large enough
+      n = size + 1;
+      delete [] buf;
+    }
+  }
+
+  setMessage(string(buf));
+
+#ifdef CVC4_DEBUG
+  LastExceptionBuffer* buffer = LastExceptionBuffer::getCurrent();
+  if(buffer != NULL){
+    if(buffer->getContents() == NULL) {
+      buffer->setContents(buf);
+    }
+  }
+#endif /* CVC4_DEBUG */
+  delete [] buf;
+}
+
+void IllegalArgumentException::construct(const char* header, const char* extra,
+                                         const char* function) {
+  // try building the exception msg with a smallish buffer first,
+  // then with a larger one if sprintf tells us to.
+  int n = 256;
+  char* buf;
+
+  for(;;) {
+    buf = new char[n];
+
+    int size;
+    if(extra == NULL) {
+      size = snprintf(buf, n, "%s.\n%s\n",
+                      header, function);
+    } else {
+      size = snprintf(buf, n, "%s.\n%s\n\n  %s\n",
+                      header, function, extra);
+    }
+
+    if(size < n) {
+      break;
+    } else {
+      // try again with a buffer that's large enough
+      n = size + 1;
+      delete [] buf;
+    }
+  }
+
+  setMessage(string(buf));
+
+#ifdef CVC4_DEBUG
+  LastExceptionBuffer* buffer = LastExceptionBuffer::getCurrent();
+  if(buffer != NULL){
+    if(buffer->getContents() == NULL) {
+      buffer->setContents(buf);
+    }
+  }
+#endif /* CVC4_DEBUG */
+  delete [] buf;
+}
+
+} /* namespace CVC4 */
diff --git a/src/base/exception.h b/src/base/exception.h
new file mode 100644
index 0000000..8f3016e
--- /dev/null
+++ b/src/base/exception.h
@@ -0,0 +1,168 @@
+/*********************                                                        */
+/*! \file exception.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief CVC4's exception base class and some associated utilities
+ **
+ ** CVC4's exception base class and some associated utilities.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__EXCEPTION_H
+#define __CVC4__EXCEPTION_H
+
+#include <cstdarg>
+#include <cstdlib>
+#include <exception>
+#include <iosfwd>
+#include <sstream>
+#include <stdexcept>
+#include <string>
+
+#include "base/tls.h"
+
+namespace CVC4 {
+
+class CVC4_PUBLIC Exception : public std::exception {
+protected:
+  std::string d_msg;
+
+public:
+  // Constructors
+  Exception() throw() : d_msg("Unknown exception") {}
+  Exception(const std::string& msg) throw() : d_msg(msg) {}
+  Exception(const char* msg) throw() : d_msg(msg) {}
+
+  // Destructor
+  virtual ~Exception() throw() {}
+
+  // NON-VIRTUAL METHOD for setting and printing the error message
+  void setMessage(const std::string& msg) throw() { d_msg = msg; }
+  std::string getMessage() const throw() { return d_msg; }
+
+  // overridden from base class std::exception
+  virtual const char* what() const throw() { return d_msg.c_str(); }
+
+  /**
+   * Get this exception as a string.  Note that
+   *   cout << ex.toString();
+   * is subtly different from
+   *   cout << ex;
+   * which is equivalent to
+   *   ex.toStream(cout);
+   * That is because with the latter two, the output language (and
+   * other preferences) for exprs on the stream is respected.  In
+   * toString(), there is no stream, so the parameters are default
+   * and you'll get exprs and types printed using the AST language.
+   */
+  std::string toString() const throw() {
+    std::stringstream ss;
+    toStream(ss);
+    return ss.str();
+  }
+
+  /**
+   * Printing: feel free to redefine toStream().  When overridden in
+   * a derived class, it's recommended that this method print the
+   * type of exception before the actual message.
+   */
+  virtual void toStream(std::ostream& os) const throw() { os << d_msg; }
+
+};/* class Exception */
+
+class CVC4_PUBLIC IllegalArgumentException : public Exception {
+protected:
+  IllegalArgumentException() : Exception() {}
+
+  void construct(const char* header, const char* extra,
+                 const char* function, const char* tail);
+
+  void construct(const char* header, const char* extra,
+                 const char* function);
+
+  static std::string format_extra(const char* condStr, const char* argDesc);
+
+  static const char* s_header;
+
+public:
+
+  IllegalArgumentException(const char* condStr, const char* argDesc,
+                           const char* function, const char* tail) :
+    Exception() {
+    construct(s_header, format_extra(condStr, argDesc).c_str(), function, tail);
+  }
+
+  IllegalArgumentException(const char* condStr, const char* argDesc,
+                           const char* function) :
+    Exception() {
+    construct(s_header, format_extra(condStr, argDesc).c_str(), function);
+  }
+
+  /**
+   * This is a convenience function for building usages that are variadic.
+   *
+   * Having IllegalArgumentException itself be variadic is problematic for
+   * making sure calls to IllegalArgumentException clean up memory.
+   */
+  static std::string formatVariadic();
+  static std::string formatVariadic(const char* format, ...);
+};/* class IllegalArgumentException */
+
+inline std::ostream& operator<<(std::ostream& os, const Exception& e) throw() CVC4_PUBLIC;
+inline std::ostream& operator<<(std::ostream& os, const Exception& e) throw() {
+  e.toStream(os);
+  return os;
+}
+
+template <class T> inline void CheckArgument(bool cond, const T& arg,
+                                             const char* tail) CVC4_PUBLIC;
+template <class T> inline void CheckArgument(bool cond, const T& arg,
+                                             const char* tail) {
+  if(__builtin_expect( ( !cond ), false )) { \
+    throw ::CVC4::IllegalArgumentException("", "", ""); \
+  } \
+}
+template <class T> inline void CheckArgument(bool cond, const T& arg)
+  CVC4_PUBLIC;
+template <class T> inline void CheckArgument(bool cond, const T& arg) {
+  if(__builtin_expect( ( !cond ), false )) { \
+    throw ::CVC4::IllegalArgumentException("", "", ""); \
+  } \
+}
+
+class CVC4_PUBLIC LastExceptionBuffer {
+public:
+  LastExceptionBuffer();
+  ~LastExceptionBuffer();
+
+  void setContents(const char* string);
+  const char* getContents() const { return d_contents; }
+
+  static LastExceptionBuffer* getCurrent() { return s_currentBuffer; }
+  static void setCurrent(LastExceptionBuffer* buffer) { s_currentBuffer = buffer; }
+
+  static const char* currentContents() {
+    return (getCurrent() == NULL) ? NULL : getCurrent()->getContents();
+  }
+
+private:
+  /* Disallow copies */
+  LastExceptionBuffer(const LastExceptionBuffer&) CVC4_UNDEFINED;
+  LastExceptionBuffer& operator=(const LastExceptionBuffer&) CVC4_UNDEFINED;
+
+  char* d_contents;
+
+  static CVC4_THREADLOCAL(LastExceptionBuffer*) s_currentBuffer;
+}; /* class LastExceptionBuffer */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__EXCEPTION_H */
diff --git a/src/base/exception.i b/src/base/exception.i
new file mode 100644
index 0000000..0836705
--- /dev/null
+++ b/src/base/exception.i
@@ -0,0 +1,11 @@
+%{
+#include "base/exception.h"
+%}
+
+%ignore CVC4::operator<<(std::ostream&, const Exception&) throw();
+%ignore CVC4::Exception::Exception(const char*) throw();
+%typemap(javabase) CVC4::Exception "java.lang.RuntimeException";
+
+%rename(CVC4IllegalArgumentException) CVC4::IllegalArgumentException;
+
+%include "base/exception.h"
diff --git a/src/base/listener.cpp b/src/base/listener.cpp
new file mode 100644
index 0000000..1f7c615
--- /dev/null
+++ b/src/base/listener.cpp
@@ -0,0 +1,99 @@
+/*********************                                                        */
+/*! \file listener.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Output utility classes and functions
+ **
+ ** Output utility classes and functions.
+ **/
+
+#include "base/listener.h"
+
+#include <list>
+
+#include "base/cvc4_assert.h"
+
+namespace CVC4 {
+
+Listener::Listener(){}
+Listener::~Listener(){}
+
+ListenerCollection::ListenerCollection() : d_listeners() {}
+ListenerCollection::~ListenerCollection() { Assert(empty()); }
+
+ListenerCollection::iterator ListenerCollection::addListener(Listener* listener)
+{
+  return d_listeners.insert(d_listeners.end(), listener);
+}
+
+void ListenerCollection::removeListener(iterator position) {
+  d_listeners.erase(position);
+}
+
+void ListenerCollection::notify() {
+  for(iterator i = d_listeners.begin(), iend = d_listeners.end(); i != iend;
+      ++i)
+  {
+    Listener* listener = *i;
+    listener->notify();
+  }
+}
+
+bool ListenerCollection::empty() const { return d_listeners.empty(); }
+
+
+ListenerCollection::Registration::Registration(
+    ListenerCollection* collection, Listener* listener)
+    : d_listener(listener)
+    , d_position()
+    , d_collection(collection)
+{
+  d_position = d_collection->addListener(d_listener);
+}
+
+ListenerCollection::Registration::~Registration() {
+  d_collection->removeListener(d_position);
+  delete d_listener;
+}
+
+ ListenerCollection::Registration* ListenerCollection::registerListener(
+     Listener* listener)
+{
+  return new Registration(this, listener);
+}
+
+
+ListenerRegistrationList::ListenerRegistrationList()
+    : d_registrations()
+{}
+
+ListenerRegistrationList::~ListenerRegistrationList() {
+  clear();
+}
+
+void ListenerRegistrationList::add(
+    ListenerCollection::Registration* registration)
+{
+  d_registrations.push_back(registration);
+}
+
+void ListenerRegistrationList::clear(){
+  typedef std::list<ListenerCollection::Registration*>::iterator iterator;
+  for(iterator i = d_registrations.begin(), iend = d_registrations.end();
+      i != iend; ++i)
+  {
+    ListenerCollection::Registration* current = *i;
+    delete current;
+  }
+  d_registrations.clear();
+}
+
+
+}/* CVC4 namespace */
diff --git a/src/base/listener.h b/src/base/listener.h
new file mode 100644
index 0000000..724935a
--- /dev/null
+++ b/src/base/listener.h
@@ -0,0 +1,165 @@
+/*********************                                                        */
+/*! \file listener.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Utility classes for listeners and collections of listeners.
+ **
+ ** Utilities for the development of a Listener interface class. This class
+ ** provides a single notification that must be overwritten. This file also
+ ** provides a utility class for a collection of listeners and an RAII style
+ ** Registration class for managing the relationship between Listeners
+ ** and the collection.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__LISTENER_H
+#define __CVC4__LISTENER_H
+
+#include <list>
+
+namespace CVC4 {
+
+/**
+ * Listener interface class.
+ *
+ * The interface provides a notify() function.
+ */
+class CVC4_PUBLIC Listener {
+public:
+  Listener();
+  virtual ~Listener();
+
+  /** Note that notify may throw arbitrary exceptions. */
+  virtual void notify() = 0;
+};
+
+/**
+ * ListenerCollection is a list of Listener instances.
+ * One can add and remove Listeners.
+ *
+ * ListenerCollection does not own the memory of the Listeners.
+ * As a sanity check, it asserted that all of its listeners
+ * have been removed.
+ */
+class CVC4_PUBLIC ListenerCollection {
+public:
+  typedef std::list<Listener*> ListenerList;
+  typedef ListenerList::iterator iterator;
+
+  /** Creates an empty listener collection. */
+  ListenerCollection();
+
+  /**
+   * Destroys an iterator collection.
+   * If assertions are on, this throws an AssertionException if the collection
+   * is not empty().
+   */
+  ~ListenerCollection();
+
+  /**
+   * This adds a listener to the current collection and returns
+   * an iterator to the listener in the collection.
+   * The user of the collection must call removeListener() using
+   * this iterator.
+   * The collection does not take over the memory for the listener.
+   */
+  iterator addListener(Listener* listener);
+
+  /**
+   * Remove an listener using the iterator distributed when adding the
+   * listener.
+   */
+  void removeListener(iterator position);
+
+  /** Calls notify() on all listeners in the collection. */
+  void notify();
+
+  /** Returns true if the collection contains no listeners. */
+  bool empty() const;
+
+  /**
+   * Registration is an RAII utility function for using Listener
+   * with ListenerCollection.
+   *
+   * On construction, the Registration takes a ListenerCollection,
+   * collection,
+   * and a Listener*, listener. It takes over the memory for listener. It then
+   * adds listener to collection. On destruction it removes listener and calls
+   * delete on listener.
+   *
+   * Because of this usage, a Registration must be destroyed before the
+   * ListenerCollection it is attached to.
+   */
+  class CVC4_PUBLIC Registration {
+  public:
+    Registration(ListenerCollection* collection, Listener* listener);
+    ~Registration();
+
+  private:
+    Listener* d_listener;
+    ListenerCollection::iterator d_position;
+    ListenerCollection* d_collection;
+  };/* class CVC4::ListenerCollection::Registration */
+
+
+  /**
+   * Returns a new Registration given a Listener that is attached to this
+   * ListenerCollection. Management of the memory is handed to the user of
+   * this function. To remove the listener, call the destructor for the
+   * Registration.
+   */
+  Registration* registerListener(Listener* listener);
+
+private:
+
+  /**
+   * Disabling the copy-constructor.
+   * The user of the class must be know to remove listeners on the collection.
+   * Allowing copies will only cause confusion.
+   */
+  ListenerCollection(const ListenerCollection& copy) CVC4_UNDEFINED;
+
+  /**
+   * Disabling the assignment operator.
+   * The user of the class must be know to remove listeners on the collection.
+   * Allowing copies will only cause confusion.
+   */
+  ListenerCollection& operator=(const ListenerCollection& copy) CVC4_UNDEFINED;
+
+  /** A list of the listeners in the collection.*/
+  ListenerList d_listeners;
+};/* class CVC4::ListenerCollection */
+
+/**
+ * A list of ListenerCollection::Registration* pointers.
+ *
+ * This list assumes it has control over all of the memory of the registrations.
+ */
+class ListenerRegistrationList {
+ public:
+  ListenerRegistrationList();
+  ~ListenerRegistrationList();
+
+  void add(ListenerCollection::Registration* registration);
+  void clear();
+
+ private:
+  /** Disallow copying.*/
+  ListenerRegistrationList(const ListenerRegistrationList&) CVC4_UNDEFINED;
+  /** Disallow assignment.*/
+  ListenerRegistrationList operator=(const ListenerRegistrationList&)
+      CVC4_UNDEFINED;
+  std::list<ListenerCollection::Registration*> d_registrations;
+};/* class CVC4::ListenerRegistrationList */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__LISTENER_H */
diff --git a/src/base/mktagheaders b/src/base/mktagheaders
new file mode 100755
index 0000000..af44cee
--- /dev/null
+++ b/src/base/mktagheaders
@@ -0,0 +1,24 @@
+#!/bin/bash
+#
+# mktagheaders
+#
+# The purpose of this script is to generate the *_tag.h header file from the
+# *_tags file.
+#
+# Invocation:
+#
+#    mktagheaders <tag-name> <tag-file>
+#
+# <tag-name> will be the name of the generated array.
+# <tag-file> each line of this file is turned into a string in the generated
+#   array.
+
+TAG_NAME=$1
+TAG_FILE=$2
+
+echo 'static char const* const '$TAG_NAME'[] = {';
+for tag in `cat $TAG_FILE`; do
+  echo "\"$tag\",";
+done;
+echo 'NULL';
+echo '};'
diff --git a/src/base/mktags b/src/base/mktags
new file mode 100755
index 0000000..090e570
--- /dev/null
+++ b/src/base/mktags
@@ -0,0 +1,35 @@
+#!/bin/bash
+#
+# mktags
+#
+# The purpose of this script is to create Debug_tags and Trace_tags files.
+# Note that in the Makefile workflow these are first stored in a *_tags.tmp
+# file. This file contains a list of all of the strings that occur in things
+# like Debug("foo") or Debug.isOn("bar") in a given directory. The list is
+# seperated by newlines.  The expected Debug_tags file for the previous two
+# tags would be:
+# bar
+# foo
+#
+# Invocation:
+#
+#    mktags {Debug,Trace} <input-files>
+#
+# <input-files> is expected to be passed a single space separated list of files.
+#  One can use quotes to achieve this. This is one reason to use "$(...)"
+#  instead of back ticks `...`.
+
+DebugOrTrace=$1
+InputFiles=$2
+
+grep -h '\<'$DebugOrTrace'\(\.isOn\)* *( *\".*\" *)' \
+  $InputFiles | \
+  sed 's/\/\/.*//;s/^'$DebugOrTrace'\(\.isOn\)* *( *\"\([^"]*\)\".*/\2/;s/.*[^a-zA-Z0-9_]'$DebugOrTrace'\(\.isOn\)* *( *\"\([^"]*\)\".*/\2/' | \
+  LC_ALL=C sort | \
+  uniq
+
+
+# Reference copy of what this is replacing.
+# 	grep -h '\<$(@:_tags.tmp=)\(\.isOn\)* *( *\".*\" *)' \
+#		`find @srcdir@/../ -name "*.cpp" -o -name "*.h" -o -name "*.cc" -o -name "*.g"` | \
+#	sed 's/\/\/.*//;s/^$(@:_tags.tmp=)\(\.isOn\)* *( *\"\([^"]*\)\".*/\2/;s/.*[^a-zA-Z0-9_]$(@:_tags.tmp=)\(\.isOn\)* *( *\"\([^"]*\)\".*/\2/' | LC_ALL=C sort | uniq 
diff --git a/src/base/modal_exception.h b/src/base/modal_exception.h
new file mode 100644
index 0000000..c662da2
--- /dev/null
+++ b/src/base/modal_exception.h
@@ -0,0 +1,47 @@
+/*********************                                                        */
+/*! \file modal_exception.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An exception that is thrown when an interactive-only
+ ** feature while CVC4 is being used in a non-interactive setting
+ **
+ ** An exception that is thrown when an interactive-only feature while
+ ** CVC4 is being used in a non-interactive setting (for example, the
+ ** "(get-assertions)" command in an SMT-LIBv2 script).
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__SMT__MODAL_EXCEPTION_H
+#define __CVC4__SMT__MODAL_EXCEPTION_H
+
+#include "base/exception.h"
+
+namespace CVC4 {
+
+class CVC4_PUBLIC ModalException : public CVC4::Exception {
+public:
+  ModalException() :
+    Exception("Feature used while operating in "
+              "incorrect state") {
+  }
+
+  ModalException(const std::string& msg) :
+    Exception(msg) {
+  }
+
+  ModalException(const char* msg) :
+    Exception(msg) {
+  }
+};/* class ModalException */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__SMT__MODAL_EXCEPTION_H */
diff --git a/src/base/modal_exception.i b/src/base/modal_exception.i
new file mode 100644
index 0000000..7df4c8f
--- /dev/null
+++ b/src/base/modal_exception.i
@@ -0,0 +1,7 @@
+%{
+#include "base/modal_exception.h"
+%}
+
+%ignore CVC4::ModalException::ModalException(const char*);
+
+%include "base/modal_exception.h"
diff --git a/src/base/output.cpp b/src/base/output.cpp
new file mode 100644
index 0000000..1d45257
--- /dev/null
+++ b/src/base/output.cpp
@@ -0,0 +1,194 @@
+/*********************                                                        */
+/*! \file output.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Output utility classes and functions
+ **
+ ** Output utility classes and functions.
+ **/
+
+#include "base/output.h"
+
+#include <iostream>
+
+using namespace std;
+
+namespace CVC4 {
+
+/* Definitions of the declared globals from output.h... */
+
+null_streambuf null_sb;
+ostream null_os(&null_sb);
+
+NullC nullCvc4Stream CVC4_PUBLIC;
+
+const std::string CVC4ostream::s_tab = "  ";
+const int CVC4ostream::s_indentIosIndex = ios_base::xalloc();
+
+DebugC DebugChannel CVC4_PUBLIC (&cout);
+WarningC WarningChannel CVC4_PUBLIC (&cerr);
+MessageC MessageChannel CVC4_PUBLIC (&cout);
+NoticeC NoticeChannel CVC4_PUBLIC (&null_os);
+ChatC ChatChannel CVC4_PUBLIC (&null_os);
+TraceC TraceChannel CVC4_PUBLIC (&cout);
+std::ostream DumpOutC::dump_cout(cout.rdbuf());// copy cout stream buffer
+DumpOutC DumpOutChannel CVC4_PUBLIC (&DumpOutC::dump_cout);
+
+#ifndef CVC4_MUZZLE
+
+#  if defined(CVC4_DEBUG) && defined(CVC4_TRACING)
+
+int DebugC::printf(const char* tag, const char* fmt, ...) {
+  if(d_tags.find(string(tag)) == d_tags.end()) {
+    return 0;
+  }
+
+  // chop off output after 1024 bytes
+  char buf[1024];
+  va_list vl;
+  va_start(vl, fmt);
+  int retval = vsnprintf(buf, sizeof(buf), fmt, vl);
+  va_end(vl);
+  *d_os << buf;
+  return retval;
+}
+
+int DebugC::printf(std::string tag, const char* fmt, ...) {
+  if(d_tags.find(tag) == d_tags.end()) {
+    return 0;
+  }
+
+  // chop off output after 1024 bytes
+  char buf[1024];
+  va_list vl;
+  va_start(vl, fmt);
+  int retval = vsnprintf(buf, sizeof(buf), fmt, vl);
+  va_end(vl);
+  *d_os << buf;
+  return retval;
+}
+
+#  endif /* CVC4_DEBUG && CVC4_TRACING */
+
+int WarningC::printf(const char* fmt, ...) {
+  // chop off output after 1024 bytes
+  char buf[1024];
+  va_list vl;
+  va_start(vl, fmt);
+  int retval = vsnprintf(buf, sizeof(buf), fmt, vl);
+  va_end(vl);
+  *d_os << buf;
+  return retval;
+}
+
+int MessageC::printf(const char* fmt, ...) {
+  // chop off output after 1024 bytes
+  char buf[1024];
+  va_list vl;
+  va_start(vl, fmt);
+  int retval = vsnprintf(buf, sizeof(buf), fmt, vl);
+  va_end(vl);
+  *d_os << buf;
+  return retval;
+}
+
+int NoticeC::printf(const char* fmt, ...) {
+  // chop off output after 1024 bytes
+  char buf[1024];
+  va_list vl;
+  va_start(vl, fmt);
+  int retval = vsnprintf(buf, sizeof(buf), fmt, vl);
+  va_end(vl);
+  *d_os << buf;
+  return retval;
+}
+
+int ChatC::printf(const char* fmt, ...) {
+  // chop off output after 1024 bytes
+  char buf[1024];
+  va_list vl;
+  va_start(vl, fmt);
+  int retval = vsnprintf(buf, sizeof(buf), fmt, vl);
+  va_end(vl);
+  *d_os << buf;
+  return retval;
+}
+
+#  ifdef CVC4_TRACING
+
+int TraceC::printf(const char* tag, const char* fmt, ...) {
+  if(d_tags.find(string(tag)) == d_tags.end()) {
+    return 0;
+  }
+
+  // chop off output after 1024 bytes
+  char buf[1024];
+  va_list vl;
+  va_start(vl, fmt);
+  int retval = vsnprintf(buf, sizeof(buf), fmt, vl);
+  va_end(vl);
+  *d_os << buf;
+  return retval;
+}
+
+int TraceC::printf(std::string tag, const char* fmt, ...) {
+  if(d_tags.find(tag) == d_tags.end()) {
+    return 0;
+  }
+
+  // chop off output after 1024 bytes
+  char buf[1024];
+  va_list vl;
+  va_start(vl, fmt);
+  int retval = vsnprintf(buf, sizeof(buf), fmt, vl);
+  va_end(vl);
+  *d_os << buf;
+  return retval;
+}
+
+#  endif /* CVC4_TRACING */
+
+#  ifdef CVC4_DUMPING
+
+int DumpOutC::printf(const char* tag, const char* fmt, ...) {
+  if(d_tags.find(string(tag)) == d_tags.end()) {
+    return 0;
+  }
+
+  // chop off output after 1024 bytes
+  char buf[1024];
+  va_list vl;
+  va_start(vl, fmt);
+  int retval = vsnprintf(buf, sizeof(buf), fmt, vl);
+  va_end(vl);
+  *d_os << buf;
+  return retval;
+}
+
+int DumpOutC::printf(std::string tag, const char* fmt, ...) {
+  if(d_tags.find(tag) == d_tags.end()) {
+    return 0;
+  }
+
+  // chop off output after 1024 bytes
+  char buf[1024];
+  va_list vl;
+  va_start(vl, fmt);
+  int retval = vsnprintf(buf, sizeof(buf), fmt, vl);
+  va_end(vl);
+  *d_os << buf;
+  return retval;
+}
+
+#  endif /* CVC4_DUMPING */
+
+#endif /* ! CVC4_MUZZLE */
+
+}/* CVC4 namespace */
diff --git a/src/base/output.h b/src/base/output.h
new file mode 100644
index 0000000..30b5c8e
--- /dev/null
+++ b/src/base/output.h
@@ -0,0 +1,600 @@
+/*********************                                                        */
+/*! \file output.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Output utility classes and functions
+ **
+ ** Output utility classes and functions.
+ **/
+
+#include "cvc4_private_library.h"
+
+#ifndef __CVC4__OUTPUT_H
+#define __CVC4__OUTPUT_H
+
+#include <ios>
+#include <iostream>
+#include <streambuf>
+#include <string>
+#include <cstdio>
+#include <cstdarg>
+#include <set>
+#include <utility>
+
+namespace CVC4 {
+
+template <class T, class U>
+std::ostream& operator<<(std::ostream& out, const std::pair<T, U>& p) CVC4_PUBLIC;
+
+template <class T, class U>
+std::ostream& operator<<(std::ostream& out, const std::pair<T, U>& p) {
+  return out << "[" << p.first << "," << p.second << "]";
+}
+
+/**
+ * A utility class to provide (essentially) a "/dev/null" streambuf.
+ * If debugging support is compiled in, but debugging for
+ * e.g. "parser" is off, then Debug("parser") returns a stream
+ * attached to a null_streambuf instance so that output is directed to
+ * the bit bucket.
+ */
+class CVC4_PUBLIC null_streambuf : public std::streambuf {
+public:
+  /* Overriding overflow() just ensures that EOF isn't returned on the
+   * stream.  Perhaps this is not so critical, but recommended; this
+   * way the output stream looks like it's functioning, in a non-error
+   * state. */
+  int overflow(int c) { return c; }
+};/* class null_streambuf */
+
+/** A null stream-buffer singleton */
+extern null_streambuf null_sb;
+/** A null output stream singleton */
+extern std::ostream null_os CVC4_PUBLIC;
+
+class CVC4_PUBLIC CVC4ostream {
+  static const std::string s_tab;
+  static const int s_indentIosIndex;
+
+  /** The underlying ostream */
+  std::ostream* d_os;
+  /** Are we in the first column? */
+  bool d_firstColumn;
+
+  /** The endl manipulator (why do we need to keep this?) */
+  std::ostream& (*const d_endl)(std::ostream&);
+
+  // do not allow use
+  CVC4ostream& operator=(const CVC4ostream&);
+
+public:
+  CVC4ostream() :
+    d_os(NULL),
+    d_firstColumn(false),
+    d_endl(&std::endl) {
+  }
+  explicit CVC4ostream(std::ostream* os) :
+    d_os(os),
+    d_firstColumn(true),
+    d_endl(&std::endl) {
+  }
+
+  void pushIndent() {
+    if(d_os != NULL) {
+      ++d_os->iword(s_indentIosIndex);
+    }
+  }
+  void popIndent() {
+    if(d_os != NULL) {
+      long& indent = d_os->iword(s_indentIosIndex);
+      if(indent > 0) {
+        --indent;
+      }
+    }
+  }
+
+  CVC4ostream& flush() {
+    if(d_os != NULL) {
+      d_os->flush();
+    }
+    return *this;
+  }
+
+  bool isConnected() { return d_os != NULL; }
+  operator std::ostream&() { return isConnected() ? *d_os : null_os; }
+
+  std::ostream* getStreamPointer() { return d_os; }
+
+  template <class T>
+  CVC4ostream& operator<<(T const& t) CVC4_PUBLIC;
+
+  // support manipulators, endl, etc..
+  CVC4ostream& operator<<(std::ostream& (*pf)(std::ostream&)) {
+    if(d_os != NULL) {
+      d_os = &(*d_os << pf);
+
+      if(pf == d_endl) {
+        d_firstColumn = true;
+      }
+    }
+    return *this;
+  }
+  CVC4ostream& operator<<(std::ios& (*pf)(std::ios&)) {
+    if(d_os != NULL) {
+      d_os = &(*d_os << pf);
+    }
+    return *this;
+  }
+  CVC4ostream& operator<<(std::ios_base& (*pf)(std::ios_base&)) {
+    if(d_os != NULL) {
+      d_os = &(*d_os << pf);
+    }
+    return *this;
+  }
+  CVC4ostream& operator<<(CVC4ostream& (*pf)(CVC4ostream&)) {
+    return pf(*this);
+  }
+};/* class CVC4ostream */
+
+inline CVC4ostream& push(CVC4ostream& stream) {
+  stream.pushIndent();
+  return stream;
+}
+
+inline CVC4ostream& pop(CVC4ostream& stream) {
+  stream.popIndent();
+  return stream;
+}
+
+template <class T>
+CVC4ostream& CVC4ostream::operator<<(T const& t) {
+  if(d_os != NULL) {
+    if(d_firstColumn) {
+      d_firstColumn = false;
+      long indent = d_os->iword(s_indentIosIndex);
+      for(long i = 0; i < indent; ++i) {
+        d_os = &(*d_os << s_tab);
+      }
+    }
+    d_os = &(*d_os << t);
+  }
+  return *this;
+}
+
+/**
+ * Does nothing; designed for compilation of non-debug/non-trace
+ * builds.  None of these should ever be called in such builds, but we
+ * offer this to the compiler so it doesn't complain.
+ */
+class CVC4_PUBLIC NullC {
+public:
+  operator bool() { return false; }
+  operator CVC4ostream() { return CVC4ostream(); }
+  operator std::ostream&() { return null_os; }
+};/* class NullC */
+
+extern NullC nullCvc4Stream CVC4_PUBLIC;
+
+/** The debug output class */
+class CVC4_PUBLIC DebugC {
+  std::set<std::string> d_tags;
+  std::ostream* d_os;
+
+public:
+  explicit DebugC(std::ostream* os) : d_os(os) {}
+
+  int printf(const char* tag, const char* fmt, ...) __attribute__ ((format(printf, 3, 4)));
+  int printf(std::string tag, const char* fmt, ...) __attribute__ ((format(printf, 3, 4)));
+
+  CVC4ostream operator()(const char* tag) {
+    if(!d_tags.empty() && d_tags.find(std::string(tag)) != d_tags.end()) {
+      return CVC4ostream(d_os);
+    } else {
+      return CVC4ostream();
+    }
+  }
+  CVC4ostream operator()(std::string tag) {
+    if(!d_tags.empty() && d_tags.find(tag) != d_tags.end()) {
+      return CVC4ostream(d_os);
+    } else {
+      return CVC4ostream();
+    }
+  }
+
+  bool on (const char* tag) { d_tags.insert(std::string(tag)); return true; }
+  bool on (std::string tag) { d_tags.insert(tag); return true; }
+  bool off(const char* tag) { d_tags.erase (std::string(tag)); return false; }
+  bool off(std::string tag) { d_tags.erase (tag); return false; }
+  bool off()                { d_tags.clear(); return false; }
+
+ bool isOn(const char* tag) { return d_tags.find(std::string(tag)) != d_tags.end(); }
+  bool isOn(std::string tag) { return d_tags.find(tag) != d_tags.end(); }
+
+  std::ostream& setStream(std::ostream* os) { d_os = os; return *os; }
+  std::ostream& getStream() { return *d_os; }
+  std::ostream* getStreamPointer() { return d_os; }
+};/* class DebugC */
+
+/** The warning output class */
+class CVC4_PUBLIC WarningC {
+  std::set< std::pair<const char*, size_t> > d_alreadyWarned;
+  std::ostream* d_os;
+
+public:
+  explicit WarningC(std::ostream* os) : d_os(os) {}
+
+  int printf(const char* fmt, ...) __attribute__ ((format(printf, 2, 3)));
+
+  CVC4ostream operator()() { return CVC4ostream(d_os); }
+
+  std::ostream& setStream(std::ostream* os) { d_os = os; return *d_os; }
+  std::ostream& getStream() { return *d_os; }
+  std::ostream* getStreamPointer() { return d_os; }
+
+  bool isOn() const { return d_os != &null_os; }
+
+  // This function supports the WarningOnce() macro, which allows you
+  // to easily indicate that a warning should be emitted, but only
+  // once for a given run of CVC4.
+  bool warnOnce(const char* file, size_t line) {
+    std::pair<const char*, size_t> pr = std::make_pair(file, line);
+    if(d_alreadyWarned.find(pr) != d_alreadyWarned.end()) {
+      // signal caller not to warn again
+      return false;
+    }
+
+    // okay warn this time, but don't do it again
+    d_alreadyWarned.insert(pr);
+    return true;
+  }
+
+};/* class WarningC */
+
+/** The message output class */
+class CVC4_PUBLIC MessageC {
+  std::ostream* d_os;
+
+public:
+  explicit MessageC(std::ostream* os) : d_os(os) {}
+
+  int printf(const char* fmt, ...) __attribute__ ((format(printf, 2, 3)));
+
+  CVC4ostream operator()() { return CVC4ostream(d_os); }
+
+  std::ostream& setStream(std::ostream* os) { d_os = os; return *d_os; }
+  std::ostream& getStream() { return *d_os; }
+  std::ostream* getStreamPointer() { return d_os; }
+
+  bool isOn() const { return d_os != &null_os; }
+};/* class MessageC */
+
+/** The notice output class */
+class CVC4_PUBLIC NoticeC {
+  std::ostream* d_os;
+
+public:
+  explicit NoticeC(std::ostream* os) : d_os(os) {}
+
+  int printf(const char* fmt, ...) __attribute__ ((format(printf, 2, 3)));
+
+  CVC4ostream operator()() { return CVC4ostream(d_os); }
+
+  std::ostream& setStream(std::ostream* os) { d_os = os; return *d_os; }
+  std::ostream& getStream() { return *d_os; }
+  std::ostream* getStreamPointer() { return d_os; }
+
+  bool isOn() const { return d_os != &null_os; }
+};/* class NoticeC */
+
+/** The chat output class */
+class CVC4_PUBLIC ChatC {
+  std::ostream* d_os;
+
+public:
+  explicit ChatC(std::ostream* os) : d_os(os) {}
+
+  int printf(const char* fmt, ...) __attribute__ ((format(printf, 2, 3)));
+
+  CVC4ostream operator()() { return CVC4ostream(d_os); }
+
+  std::ostream& setStream(std::ostream* os) { d_os = os; return *d_os; }
+  std::ostream& getStream() { return *d_os; }
+  std::ostream* getStreamPointer() { return d_os; }
+
+  bool isOn() const { return d_os != &null_os; }
+};/* class ChatC */
+
+/** The trace output class */
+class CVC4_PUBLIC TraceC {
+  std::ostream* d_os;
+  std::set<std::string> d_tags;
+
+public:
+  explicit TraceC(std::ostream* os) : d_os(os) {}
+
+  int printf(const char* tag, const char* fmt, ...) __attribute__ ((format(printf, 3, 4)));
+  int printf(std::string tag, const char* fmt, ...) __attribute__ ((format(printf, 3, 4)));
+
+  CVC4ostream operator()(const char* tag) {
+    if(!d_tags.empty() && d_tags.find(tag) != d_tags.end()) {
+      return CVC4ostream(d_os);
+    } else {
+      return CVC4ostream();
+    }
+  }
+
+  CVC4ostream operator()(std::string tag) {
+    if(!d_tags.empty() && d_tags.find(tag) != d_tags.end()) {
+      return CVC4ostream(d_os);
+    } else {
+      return CVC4ostream();
+    }
+  }
+
+  bool on (const char* tag) { d_tags.insert(std::string(tag)); return true; }
+  bool on (std::string tag) { d_tags.insert(tag); return true; }
+  bool off(const char* tag) { d_tags.erase (std::string(tag)); return false; }
+  bool off(std::string tag) { d_tags.erase (tag); return false; }
+  bool off()                { d_tags.clear(); return false; }
+
+  bool isOn(const char* tag) { return d_tags.find(std::string(tag)) != d_tags.end(); }
+  bool isOn(std::string tag) { return d_tags.find(tag) != d_tags.end(); }
+
+  std::ostream& setStream(std::ostream* os) { d_os = os; return *d_os; }
+  std::ostream& getStream() { return *d_os; }
+  std::ostream* getStreamPointer() { return d_os; }
+
+};/* class TraceC */
+
+/** The dump output class */
+class CVC4_PUBLIC DumpOutC {
+  std::set<std::string> d_tags;
+  std::ostream* d_os;
+
+public:
+  /**
+   * A copy of cout for use by the dumper.  This is important because
+   * it has different settings (e.g., the expr printing depth is always
+   * unlimited). */
+  static std::ostream dump_cout;
+
+  explicit DumpOutC(std::ostream* os) : d_os(os) {}
+
+  int printf(const char* tag, const char* fmt, ...) __attribute__ ((format(printf, 3, 4)));
+  int printf(std::string tag, const char* fmt, ...) __attribute__ ((format(printf, 3, 4)));
+
+  CVC4ostream operator()(const char* tag) {
+    if(!d_tags.empty() && d_tags.find(std::string(tag)) != d_tags.end()) {
+      return CVC4ostream(d_os);
+    } else {
+      return CVC4ostream();
+    }
+  }
+  CVC4ostream operator()(std::string tag) {
+    if(!d_tags.empty() && d_tags.find(tag) != d_tags.end()) {
+      return CVC4ostream(d_os);
+    } else {
+      return CVC4ostream();
+    }
+  }
+
+  bool on (const char* tag) { d_tags.insert(std::string(tag)); return true; }
+  bool on (std::string tag) { d_tags.insert(tag); return true; }
+  bool off(const char* tag) { d_tags.erase (std::string(tag)); return false; }
+  bool off(std::string tag) { d_tags.erase (tag); return false; }
+  bool off()                { d_tags.clear(); return false; }
+
+  bool isOn(const char* tag) { return d_tags.find(std::string(tag)) != d_tags.end(); }
+  bool isOn(std::string tag) { return d_tags.find(tag) != d_tags.end(); }
+
+  std::ostream& setStream(std::ostream* os) { d_os = os; return *d_os; }
+  std::ostream& getStream() { return *d_os; }
+  std::ostream* getStreamPointer() { return d_os; }
+};/* class DumpOutC */
+
+/** The debug output singleton */
+extern DebugC DebugChannel CVC4_PUBLIC;
+/** The warning output singleton */
+extern WarningC WarningChannel CVC4_PUBLIC;
+/** The message output singleton */
+extern MessageC MessageChannel CVC4_PUBLIC;
+/** The notice output singleton */
+extern NoticeC NoticeChannel CVC4_PUBLIC;
+/** The chat output singleton */
+extern ChatC ChatChannel CVC4_PUBLIC;
+/** The trace output singleton */
+extern TraceC TraceChannel CVC4_PUBLIC;
+/** The dump output singleton */
+extern DumpOutC DumpOutChannel CVC4_PUBLIC;
+
+#ifdef CVC4_MUZZLE
+
+#  define Debug ::CVC4::__cvc4_true() ? ::CVC4::nullCvc4Stream : ::CVC4::DebugChannel
+#  define Warning ::CVC4::__cvc4_true() ? ::CVC4::nullCvc4Stream : ::CVC4::WarningChannel
+#  define WarningOnce ::CVC4::__cvc4_true() ? ::CVC4::nullCvc4Stream : ::CVC4::WarningChannel
+#  define Message ::CVC4::__cvc4_true() ? ::CVC4::nullCvc4Stream : ::CVC4::MessageChannel
+#  define Notice ::CVC4::__cvc4_true() ? ::CVC4::nullCvc4Stream : ::CVC4::NoticeChannel
+#  define Chat ::CVC4::__cvc4_true() ? ::CVC4::nullCvc4Stream : ::CVC4::ChatChannel
+#  define Trace ::CVC4::__cvc4_true() ? ::CVC4::nullCvc4Stream : ::CVC4::TraceChannel
+#  define DumpOut ::CVC4::__cvc4_true() ? ::CVC4::nullCvc4Stream : ::CVC4::DumpOutChannel
+
+inline int DebugC::printf(const char* tag, const char* fmt, ...) { return 0; }
+inline int DebugC::printf(std::string tag, const char* fmt, ...) { return 0; }
+inline int WarningC::printf(const char* fmt, ...) { return 0; }
+inline int MessageC::printf(const char* fmt, ...) { return 0; }
+inline int NoticeC::printf(const char* fmt, ...) { return 0; }
+inline int ChatC::printf(const char* fmt, ...) { return 0; }
+inline int TraceC::printf(const char* tag, const char* fmt, ...) { return 0; }
+inline int TraceC::printf(std::string tag, const char* fmt, ...) { return 0; }
+inline int DumpOutC::printf(const char* tag, const char* fmt, ...) { return 0; }
+inline int DumpOutC::printf(std::string tag, const char* fmt, ...) { return 0; }
+
+#else /* CVC4_MUZZLE */
+
+#  if defined(CVC4_DEBUG) && defined(CVC4_TRACING)
+#    define Debug ::CVC4::DebugChannel
+#  else /* CVC4_DEBUG && CVC4_TRACING */
+#    define Debug ::CVC4::__cvc4_true() ? ::CVC4::nullCvc4Stream : ::CVC4::DebugChannel
+inline int DebugC::printf(const char* tag, const char* fmt, ...) { return 0; }
+inline int DebugC::printf(std::string tag, const char* fmt, ...) { return 0; }
+#  endif /* CVC4_DEBUG && CVC4_TRACING */
+#  define Warning (! ::CVC4::WarningChannel.isOn()) ? ::CVC4::nullCvc4Stream : ::CVC4::WarningChannel
+#  define WarningOnce (! ::CVC4::WarningChannel.isOn() || ! ::CVC4::WarningChannel.warnOnce(__FILE__,__LINE__)) ? ::CVC4::nullCvc4Stream : ::CVC4::WarningChannel
+#  define Message (! ::CVC4::MessageChannel.isOn()) ? ::CVC4::nullCvc4Stream : ::CVC4::MessageChannel
+#  define Notice (! ::CVC4::NoticeChannel.isOn()) ? ::CVC4::nullCvc4Stream : ::CVC4::NoticeChannel
+#  define Chat (! ::CVC4::ChatChannel.isOn()) ? ::CVC4::nullCvc4Stream : ::CVC4::ChatChannel
+#  ifdef CVC4_TRACING
+#    define Trace ::CVC4::TraceChannel
+#  else /* CVC4_TRACING */
+#    define Trace ::CVC4::__cvc4_true() ? ::CVC4::nullCvc4Stream : ::CVC4::TraceChannel
+inline int TraceC::printf(const char* tag, const char* fmt, ...) { return 0; }
+inline int TraceC::printf(std::string tag, const char* fmt, ...) { return 0; }
+#  endif /* CVC4_TRACING */
+#  ifdef CVC4_DUMPING
+#    define DumpOut ::CVC4::DumpOutChannel
+#  else /* CVC4_DUMPING */
+#    define DumpOut ::CVC4::__cvc4_true() ? ::CVC4::nullCvc4Stream : ::CVC4::DumpOutChannel
+inline int DumpOutC::printf(const char* tag, const char* fmt, ...) { return 0; }
+inline int DumpOutC::printf(std::string tag, const char* fmt, ...) { return 0; }
+#  endif /* CVC4_DUMPING */
+
+#endif /* CVC4_MUZZLE */
+
+// Disallow e.g. !Debug("foo").isOn() forms
+// because the ! will apply before the ? .
+// If a compiler error has directed you here,
+// just parenthesize it e.g. !(Debug("foo").isOn())
+class __cvc4_true {
+  void operator!() CVC4_UNUSED;
+  void operator~() CVC4_UNUSED;
+  void operator-() CVC4_UNUSED;
+  void operator+() CVC4_UNUSED;
+public:
+  inline operator bool() { return true; }
+};/* __cvc4_true */
+
+#if defined(CVC4_DEBUG) && defined(CVC4_TRACING)
+
+class CVC4_PUBLIC ScopedDebug {
+  std::string d_tag;
+  bool d_oldSetting;
+
+public:
+
+  ScopedDebug(std::string tag, bool newSetting = true) :
+    d_tag(tag) {
+    d_oldSetting = Debug.isOn(d_tag);
+    if(newSetting) {
+      Debug.on(d_tag);
+    } else {
+      Debug.off(d_tag);
+    }
+  }
+
+  ScopedDebug(const char* tag, bool newSetting = true) :
+    d_tag(tag) {
+    d_oldSetting = Debug.isOn(d_tag);
+    if(newSetting) {
+      Debug.on(d_tag);
+    } else {
+      Debug.off(d_tag);
+    }
+  }
+
+  ~ScopedDebug() {
+    if(d_oldSetting) {
+      Debug.on(d_tag);
+    } else {
+      Debug.off(d_tag);
+    }
+  }
+};/* class ScopedDebug */
+
+#else /* CVC4_DEBUG && CVC4_TRACING */
+
+class CVC4_PUBLIC ScopedDebug {
+public:
+  ScopedDebug(std::string tag, bool newSetting = true) {}
+  ScopedDebug(const char* tag, bool newSetting = true) {}
+};/* class ScopedDebug */
+
+#endif /* CVC4_DEBUG && CVC4_TRACING */
+
+#ifdef CVC4_TRACING
+
+class CVC4_PUBLIC ScopedTrace {
+  std::string d_tag;
+  bool d_oldSetting;
+
+public:
+
+  ScopedTrace(std::string tag, bool newSetting = true) :
+    d_tag(tag) {
+    d_oldSetting = Trace.isOn(d_tag);
+    if(newSetting) {
+      Trace.on(d_tag);
+    } else {
+      Trace.off(d_tag);
+    }
+  }
+
+  ScopedTrace(const char* tag, bool newSetting = true) :
+    d_tag(tag) {
+    d_oldSetting = Trace.isOn(d_tag);
+    if(newSetting) {
+      Trace.on(d_tag);
+    } else {
+      Trace.off(d_tag);
+    }
+  }
+
+  ~ScopedTrace() {
+    if(d_oldSetting) {
+      Trace.on(d_tag);
+    } else {
+      Trace.off(d_tag);
+    }
+  }
+};/* class ScopedTrace */
+
+#else /* CVC4_TRACING */
+
+class CVC4_PUBLIC ScopedTrace {
+public:
+  ScopedTrace(std::string tag, bool newSetting = true) {}
+  ScopedTrace(const char* tag, bool newSetting = true) {}
+};/* class ScopedTrace */
+
+#endif /* CVC4_TRACING */
+
+/**
+ * Pushes an indentation level on construction, pop on destruction.
+ * Useful for tracing recursive functions especially, but also can be
+ * used for clearly separating different phases of an algorithm,
+ * or iterations of a loop, or... etc.
+ */
+class CVC4_PUBLIC IndentedScope {
+  CVC4ostream d_out;
+public:
+  inline IndentedScope(CVC4ostream out);
+  inline ~IndentedScope();
+};/* class IndentedScope */
+
+#if defined(CVC4_DEBUG) && defined(CVC4_TRACING)
+inline IndentedScope::IndentedScope(CVC4ostream out) : d_out(out) { d_out << push; }
+inline IndentedScope::~IndentedScope() { d_out << pop; }
+#else /* CVC4_DEBUG && CVC4_TRACING */
+inline IndentedScope::IndentedScope(CVC4ostream out) {}
+inline IndentedScope::~IndentedScope() {}
+#endif /* CVC4_DEBUG && CVC4_TRACING */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OUTPUT_H */
diff --git a/src/base/ptr_closer.h b/src/base/ptr_closer.h
new file mode 100644
index 0000000..9c40eee
--- /dev/null
+++ b/src/base/ptr_closer.h
@@ -0,0 +1,73 @@
+/*********************                                                        */
+/*! \file ptr_closer.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A class to close owned pointers in the destructor.
+ **
+ ** A class to close owned pointers in the destructor.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__PTR_CLOSER_H
+#define __CVC4__PTR_CLOSER_H
+
+namespace CVC4 {
+
+/**
+ * A class to close owned pointers in the destructor. This plays a similar role
+ * to unique_ptr, but without move semantics. This is designed to overcome the
+ * lack of having unique_ptr in C++05.
+ *
+ * This is a variant of unique_ptr that is not designed for move semantics.
+ * These are appropriate to own pointer allocations on the stack that should be
+ * deleted when an exception is thrown. These should be used with care within
+ * heap based data structures, and never as the return value of a function.
+ */
+template <class T>
+class PtrCloser {
+ public:
+  PtrCloser() : d_pointer(NULL) {}
+  explicit PtrCloser(T* pointer) : d_pointer(pointer) {}
+  ~PtrCloser() { delete d_pointer; }
+
+  /** Deletes the currently owned copy and takes ownership of pointer. */
+  void reset(T* pointer = NULL) {
+    delete d_pointer;
+    d_pointer = pointer;
+  }
+
+  /** Gives up ownership of the pointer to the caller. */
+  T* release() {
+    T* copy = d_pointer;
+    d_pointer = NULL;
+    return copy;
+  }
+
+  /** Returns the pointer. */
+  T* get() const { return d_pointer; }
+
+  /** Returns the pointer. Undefined if the pointer is null. */
+  T* operator->() const { return d_pointer; }
+
+  /** Returns true if the pointer is not-null. */
+  operator bool() const { return d_pointer != NULL; }
+
+ private:
+  PtrCloser(const PtrCloser*) CVC4_UNDEFINED;
+  PtrCloser& operator=(const PtrCloser&) CVC4_UNDEFINED;
+
+  /** An owned pointer object allocated by `new`. Or NULL. */
+  T* d_pointer;
+}; /* class PtrCloser */
+
+} /* CVC4 namespace */
+
+#endif /* __CVC4__PTR_CLOSER_H */
diff --git a/src/base/tls.h.in b/src/base/tls.h.in
new file mode 100644
index 0000000..a61eb79
--- /dev/null
+++ b/src/base/tls.h.in
@@ -0,0 +1,198 @@
+/*********************                                                        */
+/*! \file tls.h.in
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, ACSYS, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Header to define CVC4_THREAD whether or not TLS is
+ ** supported by the compiler/runtime platform
+ **
+ ** Header to define CVC4_THREAD whether or not TLS is supported by
+ ** the compiler/runtime platform.  If not, an implementation based on
+ ** pthread_getspecific() / pthread_setspecific() is given.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__TLS_H
+#define __CVC4__TLS_H
+
+// A bit obnoxious: we have to take varargs to support multi-argument
+// template types in the threadlocals.
+// E.g. "CVC4_THREADLOCAL(hash_set<type, hasher>*)" fails otherwise,
+// due to the embedded comma.
+#if @CVC4_TLS_SUPPORTED@
+#  define CVC4_THREADLOCAL(__type...) @CVC4_TLS@ __type
+#  define CVC4_THREADLOCAL_PUBLIC(__type...) @CVC4_TLS@ CVC4_PUBLIC __type
+#  define CVC4_THREADLOCAL_TYPE(__type...) __type
+#else
+#  include <pthread.h>
+#  define CVC4_THREADLOCAL(__type...) ::CVC4::ThreadLocal< __type >
+#  define CVC4_THREADLOCAL_PUBLIC(__type...) CVC4_PUBLIC ::CVC4::ThreadLocal< __type >
+#  define CVC4_THREADLOCAL_TYPE(__type...) ::CVC4::ThreadLocal< __type >
+
+namespace CVC4 {
+
+template <class T, bool small>
+class ThreadLocalImpl;
+
+template <class T>
+class ThreadLocalImpl<T, true> {
+  pthread_key_t d_key;
+
+  static void cleanup(void*) {
+  }
+
+public:
+  ThreadLocalImpl() {
+    pthread_key_create(&d_key, ThreadLocalImpl::cleanup);
+  }
+
+  ThreadLocalImpl(const T& t) {
+    pthread_key_create(&d_key, ThreadLocalImpl::cleanup);
+    pthread_setspecific(d_key, const_cast<void*>(reinterpret_cast<const void*>(t)));
+  }
+
+  ThreadLocalImpl(const ThreadLocalImpl& tl) {
+    pthread_key_create(&d_key, ThreadLocalImpl::cleanup);
+    pthread_setspecific(d_key, const_cast<void*>(reinterpret_cast<const void*>(static_cast<const T&>(tl))));
+  }
+
+  ThreadLocalImpl& operator=(const T& t) {
+    pthread_setspecific(d_key, const_cast<void*>(reinterpret_cast<const void*>(t)));
+    return *this;
+  }
+  ThreadLocalImpl& operator=(const ThreadLocalImpl& tl) {
+    pthread_setspecific(d_key, const_cast<void*>(reinterpret_cast<const void*>(static_cast<const T&>(tl))));
+    return *this;
+  }
+
+  operator T() const {
+    return static_cast<T>(reinterpret_cast<size_t>(pthread_getspecific(d_key)));
+  }
+};/* class ThreadLocalImpl<T, true> */
+
+template <class T>
+class ThreadLocalImpl<T*, true> {
+  pthread_key_t d_key;
+
+  static void cleanup(void*) {
+  }
+
+public:
+  ThreadLocalImpl() {
+    pthread_key_create(&d_key, ThreadLocalImpl::cleanup);
+  }
+
+  ThreadLocalImpl(const T* t) {
+    pthread_key_create(&d_key, ThreadLocalImpl::cleanup);
+    pthread_setspecific(d_key, const_cast<void*>(reinterpret_cast<const void*>(t)));
+  }
+
+  ThreadLocalImpl(const ThreadLocalImpl& tl) {
+    pthread_key_create(&d_key, ThreadLocalImpl::cleanup);
+    pthread_setspecific(d_key, const_cast<void*>(reinterpret_cast<const void*>(static_cast<const T*>(tl))));
+  }
+
+  ThreadLocalImpl& operator=(const T* t) {
+    pthread_setspecific(d_key, const_cast<void*>(reinterpret_cast<const void*>(t)));
+    return *this;
+  }
+  ThreadLocalImpl& operator=(const ThreadLocalImpl& tl) {
+    pthread_setspecific(d_key, const_cast<void*>(reinterpret_cast<const void*>(static_cast<const T*>(tl))));
+    return *this;
+  }
+
+  operator T*() const {
+    return static_cast<T*>(pthread_getspecific(d_key));
+  }
+
+  T operator*() {
+    return *static_cast<T*>(pthread_getspecific(d_key));
+  }
+  T* operator->() {
+    return static_cast<T*>(pthread_getspecific(d_key));
+  }
+};/* class ThreadLocalImpl<T*, true> */
+
+template <class T>
+class ThreadLocalImpl<T, false> {
+};/* class ThreadLocalImpl<T, false> */
+
+template <class T>
+class ThreadLocal : public ThreadLocalImpl<T, sizeof(T) <= sizeof(void*)> {
+  typedef ThreadLocalImpl<T, sizeof(T) <= sizeof(void*)> super;
+
+public:
+  ThreadLocal() : super() {}
+  ThreadLocal(const T& t) : super(t) {}
+  ThreadLocal(const ThreadLocal<T>& tl) : super(tl) {}
+
+  ThreadLocal<T>& operator=(const T& t) {
+    return static_cast< ThreadLocal<T>& >(super::operator=(t));
+  }
+  ThreadLocal<T>& operator=(const ThreadLocal<T>& tl) {
+    return static_cast< ThreadLocal<T>& >(super::operator=(tl));
+  }
+};/* class ThreadLocal<T> */
+
+template <class T>
+class ThreadLocal<T*> : public ThreadLocalImpl<T*, sizeof(T*) <= sizeof(void*)> {
+  typedef ThreadLocalImpl<T*, sizeof(T*) <= sizeof(void*)> super;
+
+public:
+  ThreadLocal() : super() {}
+  ThreadLocal(T* t) : super(t) {}
+  ThreadLocal(const ThreadLocal<T*>& tl) : super(tl) {}
+
+  ThreadLocal<T*>& operator=(T* t) {
+    return static_cast< ThreadLocal<T*>& >(super::operator=(t));
+  }
+  ThreadLocal<T*>& operator=(const ThreadLocal<T*>& tl) {
+    return static_cast< ThreadLocal<T*>& >(super::operator=(tl));
+  }
+  // special operators for pointers
+  T& operator*() {
+    return *static_cast<T*>(*this);
+  }
+  const T& operator*() const {
+    return *static_cast<const T*>(*this);
+  }
+  T* operator->() {
+    return static_cast<T*>(*this);
+  }
+  const T* operator->() const {
+    return static_cast<const T*>(*this);
+  }
+  T* operator++() {
+    T* p = *this;
+    *this = ++p;
+    return p;
+  }
+  T* operator++(int) {
+    T* p = *this;
+    *this = p + 1;
+    return p;
+  }
+  T* operator--() {
+    T* p = *this;
+    *this = --p;
+    return p;
+  }
+  T* operator--(int) {
+    T* p = *this;
+    *this = p - 1;
+    return p;
+  }
+};/* class ThreadLocal<T*> */
+
+}/* CVC4 namespace */
+
+#endif /* @CVC4_TLS_SUPPORTED@ */
+
+#endif /* __CVC4__TLS_H */
diff --git a/src/bindings/Makefile.am b/src/bindings/Makefile.am
new file mode 100644
index 0000000..e7548bb
--- /dev/null
+++ b/src/bindings/Makefile.am
@@ -0,0 +1,235 @@
+# LIBCVC4BINDINGS_VERSION (-version-info) is in the form current:revision:age
+#
+# current -
+#   increment if interfaces have been added, removed or changed
+# revision -
+#   increment if source code has changed
+#   set to zero if current is incremented
+# age -
+#   increment if interfaces have been added
+#   set to zero if interfaces have been removed
+#   or changed
+#
+LIBCVC4BINDINGS_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+
+AUTOMAKE_OPTIONS = subdir-objects
+
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4BINDINGSLIB \
+	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..
+AM_CXXFLAGS = -Wall
+
+SUBDIRS = compat
+
+# any binding-specific flags to pass to swig
+java_cpp_SWIGFLAGS = -package edu.nyu.acsys.CVC4
+
+lib_LTLIBRARIES =
+bin_PROGRAMS =
+javadatadir = $(datadir)/java
+javalibdir = $(libdir)/jni
+ocamldatadir = $(libdir)/ocaml/cvc4
+ocamllibdir = $(libdir)/ocaml/cvc4
+perldatadir = $(datadir)/perl5
+perllibdir = $(libdir)/perl5
+phpdatadir = $(datadir)/php
+phplibdir = $(libdir)/php
+pythondatadir = $(datadir)/pyshared
+pythonlibdir = $(libdir)/pyshared
+csharpdatadir = $(datadir)/csharp
+csharplibdir = $(libdir)/csharp
+rubylibdir = $(libdir)/ruby
+tcllibdir = $(libdir)/tcltk
+javadata_DATA =
+javalib_LTLIBRARIES=
+ocamldata_DATA =
+ocamllib_LTLIBRARIES=
+perldata_DATA =
+perllib_LTLIBRARIES =
+phpdata_DATA =
+phplib_LTLIBRARIES =
+pythondata_DATA =
+pythonlib_LTLIBRARIES =
+csharpdata_DATA =
+csharplib_LTLIBRARIES =
+rubylib_LTLIBRARIES =
+tcllib_LTLIBRARIES =
+if CVC4_HAS_SWIG
+if CVC4_LANGUAGE_BINDING_JAVA 
+javalib_LTLIBRARIES += java/libcvc4jni.la
+javadata_DATA += CVC4.jar
+java_libcvc4jni_la_LDFLAGS = \
+	-module \
+	-shrext $(CVC4_JAVA_MODULE_EXT) \
+	-version-info $(LIBCVC4BINDINGS_VERSION)
+java_libcvc4jni_la_LIBADD = \
+	@builddir@/../libcvc4.la \
+	@builddir@/../parser/libcvc4parser.la
+endif
+if CVC4_LANGUAGE_BINDING_CSHARP
+csharplib_LTLIBRARIES += csharp/CVC4.la
+csharp_CVC4_la_LDFLAGS = \
+	-module \
+	-version-info $(LIBCVC4BINDINGS_VERSION)
+csharp_CVC4_la_LIBADD = \
+	@builddir@/../libcvc4.la \
+	@builddir@/../parser/libcvc4parser.la
+endif
+if CVC4_LANGUAGE_BINDING_PERL
+perllib_LTLIBRARIES += perl/CVC4.la
+perl_CVC4_la_LDFLAGS = \
+	-module \
+	-version-info $(LIBCVC4BINDINGS_VERSION)
+perl_CVC4_la_LIBADD = \
+	@builddir@/../libcvc4.la \
+	@builddir@/../parser/libcvc4parser.la
+perldata_DATA += perl/CVC4.pm
+endif
+if CVC4_LANGUAGE_BINDING_PHP
+phplib_LTLIBRARIES += php/CVC4.la
+php_CVC4_la_LDFLAGS = \
+	-module \
+	-version-info $(LIBCVC4BINDINGS_VERSION)
+php_CVC4_la_LIBADD = \
+	@builddir@/../libcvc4.la \
+	@builddir@/../parser/libcvc4parser.la
+phpdata_DATA += php/CVC4.php
+endif
+if CVC4_LANGUAGE_BINDING_PYTHON
+pythonlib_LTLIBRARIES += python/CVC4.la
+python_CVC4_la_CXXFLAGS = $(PYTHON_CXXFLAGS)
+python_CVC4_la_LDFLAGS = \
+	-module \
+	-version-info $(LIBCVC4BINDINGS_VERSION)
+python_CVC4_la_LIBADD = \
+	@builddir@/../libcvc4.la \
+	@builddir@/../parser/libcvc4parser.la
+pythondata_DATA += python/CVC4.py
+endif
+if CVC4_LANGUAGE_BINDING_OCAML
+ocamllib_LTLIBRARIES += ocaml/CVC4.la
+bin_PROGRAMS += cvc4_ocaml_top
+# We provide a make rule below, but we have to tell automake to lay off, too,
+# otherwise it tries (and fails) to package the nonexistent cvc4_ocaml_top.c!
+cvc4_ocaml_top_SOURCES =
+ocamldata_DATA += ocaml/swig.cmo ocaml/swig.cmi ocaml/swigp4.cmo ocaml/swigp4.cmi ocaml/CVC4.cmo ocaml/CVC4.cmi
+ocaml_CVC4_la_LDFLAGS = \
+	-module \
+	-version-info $(LIBCVC4BINDINGS_VERSION)
+ocaml_CVC4_la_LIBADD = \
+	@builddir@/../libcvc4.la \
+	@builddir@/../parser/libcvc4parser.la
+endif
+if CVC4_LANGUAGE_BINDING_RUBY
+rubylib_LTLIBRARIES += ruby/CVC4.la
+ruby_CVC4_la_LDFLAGS = \
+	-module \
+	-version-info $(LIBCVC4BINDINGS_VERSION)
+ruby_CVC4_la_LIBADD = \
+	@builddir@/../libcvc4.la \
+	@builddir@/../parser/libcvc4parser.la
+endif
+if CVC4_LANGUAGE_BINDING_TCL
+tcllib_LTLIBRARIES += tcl/CVC4.la
+tcl_CVC4_la_LDFLAGS = \
+	-module \
+	-version-info $(LIBCVC4BINDINGS_VERSION)
+tcl_CVC4_la_LIBADD = \
+	@builddir@/../libcvc4.la \
+	@builddir@/../parser/libcvc4parser.la
+endif
+# this endif matches the "if CVC4_HAS_SWIG" above
+endif
+
+nodist_java_libcvc4jni_la_SOURCES = java.cpp
+java_libcvc4jni_la_CXXFLAGS = -Wno-all @FNO_STRICT_ALIASING@ @WNO_UNUSED_VARIABLE@ @WNO_UNINITIALIZED@
+nodist_csharp_CVC4_la_SOURCES = csharp.cpp
+nodist_perl_CVC4_la_SOURCES = perl.cpp
+nodist_php_CVC4_la_SOURCES = php.cpp
+nodist_python_CVC4_la_SOURCES = python.cpp
+nodist_ocaml_CVC4_la_SOURCES = ocaml.cpp
+nodist_ruby_CVC4_la_SOURCES = ruby.cpp
+nodist_tcl_CVC4_la_SOURCES = tcl.cpp
+
+CLEANFILES = \
+	java.cpp \
+	csharp.cpp \
+	perl.cpp \
+	php.cpp \
+	python.cpp \
+	ocaml.cpp \
+	ruby.cpp \
+	tcl.cpp
+
+EXTRA_DIST = \
+	swig.h \
+	java_iterator_adapter.h \
+	java_stream_adapters.h
+
+MOSTLYCLEANFILES = \
+        .swig_deps \
+	$(patsubst %,%.d,$(filter-out c c++,$(CVC4_LANGUAGE_BINDINGS))) \
+	CVC4.jar
+
+java_libcvc4jni_la-java.lo: java.cpp
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(JAVA_CPPFLAGS) $(java_libcvc4jni_la_CXXFLAGS) -o $@ $<
+java.lo: java.cpp
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(JAVA_CPPFLAGS) $(java_libcvc4jni_la_CXXFLAGS) -o $@ $<
+CVC4.jar: java.cpp
+	$(AM_V_GEN) \
+	(cd java && \
+	rm -fr classes && \
+	mkdir -p classes && \
+	$(JAVAC) -source 1.5 -target 1.5 -classpath . -d classes `find . -name '*.java'` && \
+	cd classes) && \
+	$(JAR) cf $@ -C java/classes .
+#java.cpp:;
+csharp.lo: csharp.cpp
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(CSHARP_CPPFLAGS) -o $@ $<
+#csharp.cpp:;
+perl.lo: perl.cpp
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(PERL_CPPFLAGS) -o $@ $<
+#perl.cpp:;
+perl/CVC4.pm: perl.cpp
+php.lo: php.cpp
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(PHP_CPPFLAGS) -Iphp -o $@ $<
+#php.cpp:;
+python.lo: python.cpp
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(PYTHON_CPPFLAGS) -o $@ $<
+ocaml.lo: ocaml.cpp
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(OCAML_CPPFLAGS) -o $@ $<
+ocaml/swig.cmo: ocaml/swig.ml ocaml/swig.cmi; $(AM_V_GEN)$(OCAMLC) -I ocaml -c -o $@ $<
+ocaml/swig.cmi: ocaml/swig.mli; $(AM_V_GEN)$(OCAMLC) -I ocaml -c -o $@ $<
+ocaml/CVC4.cmo: ocaml/CVC4.ml ocaml/CVC4.cmi; $(AM_V_GEN)$(OCAMLC) -I ocaml -c -o $@ $<
+ocaml/CVC4.cmi: ocaml/CVC4.mli; $(AM_V_GEN)$(OCAMLC) -I ocaml -c -o $@ $<
+ocaml/swigp4.cmo: ocaml/swigp4.ml; $(AM_V_GEN)$(OCAMLFIND) ocamlc -package camlp4 -pp "$(CAMLP4O) pa_extend.cmo q_MLast.cmo" -o $@ -c $<
+ocaml/swig.ml:; $(AM_V_GEN)cd ocaml && $(SWIG) -ocaml -co swig.ml
+ocaml/swig.mli:; $(AM_V_GEN)cd ocaml && $(SWIG) -ocaml -co swig.mli
+ocaml/swigp4.ml:; $(AM_V_GEN)cd ocaml && $(SWIG) -ocaml -co swigp4.ml
+#ocaml.cpp:;
+cvc4_ocaml_top$(EXEEXT): ocaml/CVC4.la ocaml/swig.cmo ocaml/swig.cmi ocaml/swigp4.cmo ocaml/CVC4.cmo ocaml/CVC4.cmi
+	$(AM_V_GEN)\
+	$(OCAMLFIND) ocamlmktop -I $(ocamldatadir) -custom -o cvc4_ocaml_top$(EXEEXT) -package camlp4 dynlink.cma camlp4o.cma ocaml/swig.cmo ocaml/swigp4.cmo ocaml/CVC4.cmo -cclib ocaml/.libs/CVC4.so -cclib -lstdc++
+ruby.lo: ruby.cpp
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(RUBY_CPPFLAGS) -o $@ $<
+tcl.lo: tcl.cpp
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(TCL_CPPFLAGS) -o $@ $<
+#tcl.cpp:;
+
+if CVC4_HAS_SWIG
+
+$(patsubst %,%.cpp,$(filter-out c c++,$(CVC4_LANGUAGE_BINDINGS))): %.cpp: @srcdir@/../cvc4.i
+	$(AM_V_at)mkdir -p $(patsubst %.cpp,%,$@)
+	$(AM_V_GEN)$(SWIG) -Wall -I at builddir@/.. -I at srcdir@/../include -I at srcdir@/.. -c++ -$(patsubst %.cpp,%,$@) -outdir $(patsubst %.cpp,%,$@) $($(subst .,_,$@)_SWIGFLAGS) -o $@ $<
+
+$(patsubst %,%.d,$(filter-out c c++,$(CVC4_LANGUAGE_BINDINGS))): %.d: @srcdir@/../cvc4.i
+	$(AM_V_GEN)$(SWIG) -I at builddir@/.. -I at srcdir@/../include -I at srcdir@/.. -c++ -$(patsubst %.d,%,$@) -MM -o $(patsubst %.d,%.cpp,$@) $<
+# .PHONY so they get rebuilt each time
+.PHONY: .swig_deps $(patsubst %,%.d,$(filter-out c c++,$(CVC4_LANGUAGE_BINDINGS)))
+.swig_deps: $(patsubst %,%.d,$(filter-out c c++,$(CVC4_LANGUAGE_BINDINGS)))
+	$(AM_V_GEN)cat $+ </dev/null >$@
+ at mk_include@ .swig_deps
+
+endif
+
+clean-local:; rm -fr $(patsubst %.cpp,%,$(filter-out c c++,$(CVC4_LANGUAGE_BINDINGS)))
diff --git a/src/bindings/Makefile.in b/src/bindings/Makefile.in
new file mode 100644
index 0000000..5298326
--- /dev/null
+++ b/src/bindings/Makefile.in
@@ -0,0 +1,1825 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+bin_PROGRAMS = $(am__EXEEXT_1)
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_JAVA_TRUE at am__append_1 = java/libcvc4jni.la
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_JAVA_TRUE at am__append_2 = CVC4.jar
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_CSHARP_TRUE at am__append_3 = csharp/CVC4.la
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PERL_TRUE at am__append_4 = perl/CVC4.la
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PERL_TRUE at am__append_5 = perl/CVC4.pm
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PHP_TRUE at am__append_6 = php/CVC4.la
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PHP_TRUE at am__append_7 = php/CVC4.php
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PYTHON_TRUE at am__append_8 = python/CVC4.la
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PYTHON_TRUE at am__append_9 = python/CVC4.py
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_OCAML_TRUE at am__append_10 = ocaml/CVC4.la
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_OCAML_TRUE at am__append_11 = cvc4_ocaml_top
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_OCAML_TRUE at am__append_12 = ocaml/swig.cmo ocaml/swig.cmi ocaml/swigp4.cmo ocaml/swigp4.cmi ocaml/CVC4.cmo ocaml/CVC4.cmi
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_RUBY_TRUE at am__append_13 = ruby/CVC4.la
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_TCL_TRUE at am__append_14 = tcl/CVC4.la
+subdir = src/bindings
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(csharplibdir)" \
+	"$(DESTDIR)$(javalibdir)" "$(DESTDIR)$(libdir)" \
+	"$(DESTDIR)$(ocamllibdir)" "$(DESTDIR)$(perllibdir)" \
+	"$(DESTDIR)$(phplibdir)" "$(DESTDIR)$(pythonlibdir)" \
+	"$(DESTDIR)$(rubylibdir)" "$(DESTDIR)$(tcllibdir)" \
+	"$(DESTDIR)$(bindir)" "$(DESTDIR)$(csharpdatadir)" \
+	"$(DESTDIR)$(javadatadir)" "$(DESTDIR)$(ocamldatadir)" \
+	"$(DESTDIR)$(perldatadir)" "$(DESTDIR)$(phpdatadir)" \
+	"$(DESTDIR)$(pythondatadir)"
+LTLIBRARIES = $(csharplib_LTLIBRARIES) $(javalib_LTLIBRARIES) \
+	$(lib_LTLIBRARIES) $(ocamllib_LTLIBRARIES) \
+	$(perllib_LTLIBRARIES) $(phplib_LTLIBRARIES) \
+	$(pythonlib_LTLIBRARIES) $(rubylib_LTLIBRARIES) \
+	$(tcllib_LTLIBRARIES)
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_CSHARP_TRUE at csharp_CVC4_la_DEPENDENCIES = @builddir@/../libcvc4.la \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_CSHARP_TRUE@	@builddir@/../parser/libcvc4parser.la
+nodist_csharp_CVC4_la_OBJECTS = csharp.lo
+csharp_CVC4_la_OBJECTS = $(nodist_csharp_CVC4_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+csharp_CVC4_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+	$(AM_CXXFLAGS) $(CXXFLAGS) $(csharp_CVC4_la_LDFLAGS) \
+	$(LDFLAGS) -o $@
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_CSHARP_TRUE at am_csharp_CVC4_la_rpath =  \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_CSHARP_TRUE@	-rpath \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_CSHARP_TRUE@	$(csharplibdir)
+am__dirstamp = $(am__leading_dot)dirstamp
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_JAVA_TRUE at java_libcvc4jni_la_DEPENDENCIES = @builddir@/../libcvc4.la \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_JAVA_TRUE@	@builddir@/../parser/libcvc4parser.la
+nodist_java_libcvc4jni_la_OBJECTS = java_libcvc4jni_la-java.lo
+java_libcvc4jni_la_OBJECTS = $(nodist_java_libcvc4jni_la_OBJECTS)
+java_libcvc4jni_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+	$(java_libcvc4jni_la_CXXFLAGS) $(CXXFLAGS) \
+	$(java_libcvc4jni_la_LDFLAGS) $(LDFLAGS) -o $@
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_JAVA_TRUE at am_java_libcvc4jni_la_rpath =  \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_JAVA_TRUE@	-rpath \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_JAVA_TRUE@	$(javalibdir)
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_OCAML_TRUE at ocaml_CVC4_la_DEPENDENCIES = @builddir@/../libcvc4.la \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_OCAML_TRUE@	@builddir@/../parser/libcvc4parser.la
+nodist_ocaml_CVC4_la_OBJECTS = ocaml.lo
+ocaml_CVC4_la_OBJECTS = $(nodist_ocaml_CVC4_la_OBJECTS)
+ocaml_CVC4_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+	$(AM_CXXFLAGS) $(CXXFLAGS) $(ocaml_CVC4_la_LDFLAGS) $(LDFLAGS) \
+	-o $@
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_OCAML_TRUE at am_ocaml_CVC4_la_rpath =  \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_OCAML_TRUE@	-rpath \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_OCAML_TRUE@	$(ocamllibdir)
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PERL_TRUE at perl_CVC4_la_DEPENDENCIES = @builddir@/../libcvc4.la \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PERL_TRUE@	@builddir@/../parser/libcvc4parser.la
+nodist_perl_CVC4_la_OBJECTS = perl.lo
+perl_CVC4_la_OBJECTS = $(nodist_perl_CVC4_la_OBJECTS)
+perl_CVC4_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(perl_CVC4_la_LDFLAGS) $(LDFLAGS) -o $@
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PERL_TRUE at am_perl_CVC4_la_rpath =  \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PERL_TRUE@	-rpath \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PERL_TRUE@	$(perllibdir)
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PHP_TRUE at php_CVC4_la_DEPENDENCIES = @builddir@/../libcvc4.la \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PHP_TRUE@	@builddir@/../parser/libcvc4parser.la
+nodist_php_CVC4_la_OBJECTS = php.lo
+php_CVC4_la_OBJECTS = $(nodist_php_CVC4_la_OBJECTS)
+php_CVC4_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(php_CVC4_la_LDFLAGS) $(LDFLAGS) -o $@
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PHP_TRUE at am_php_CVC4_la_rpath =  \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PHP_TRUE@	-rpath \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PHP_TRUE@	$(phplibdir)
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PYTHON_TRUE at python_CVC4_la_DEPENDENCIES = @builddir@/../libcvc4.la \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PYTHON_TRUE@	@builddir@/../parser/libcvc4parser.la
+nodist_python_CVC4_la_OBJECTS = python_CVC4_la-python.lo
+python_CVC4_la_OBJECTS = $(nodist_python_CVC4_la_OBJECTS)
+python_CVC4_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+	$(python_CVC4_la_CXXFLAGS) $(CXXFLAGS) \
+	$(python_CVC4_la_LDFLAGS) $(LDFLAGS) -o $@
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PYTHON_TRUE at am_python_CVC4_la_rpath =  \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PYTHON_TRUE@	-rpath \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PYTHON_TRUE@	$(pythonlibdir)
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_RUBY_TRUE at ruby_CVC4_la_DEPENDENCIES = @builddir@/../libcvc4.la \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_RUBY_TRUE@	@builddir@/../parser/libcvc4parser.la
+nodist_ruby_CVC4_la_OBJECTS = ruby.lo
+ruby_CVC4_la_OBJECTS = $(nodist_ruby_CVC4_la_OBJECTS)
+ruby_CVC4_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(ruby_CVC4_la_LDFLAGS) $(LDFLAGS) -o $@
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_RUBY_TRUE at am_ruby_CVC4_la_rpath =  \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_RUBY_TRUE@	-rpath \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_RUBY_TRUE@	$(rubylibdir)
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_TCL_TRUE at tcl_CVC4_la_DEPENDENCIES = @builddir@/../libcvc4.la \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_TCL_TRUE@	@builddir@/../parser/libcvc4parser.la
+nodist_tcl_CVC4_la_OBJECTS = tcl.lo
+tcl_CVC4_la_OBJECTS = $(nodist_tcl_CVC4_la_OBJECTS)
+tcl_CVC4_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(tcl_CVC4_la_LDFLAGS) $(LDFLAGS) -o $@
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_TCL_TRUE at am_tcl_CVC4_la_rpath =  \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_TCL_TRUE@	-rpath \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_TCL_TRUE@	$(tcllibdir)
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_OCAML_TRUE at am__EXEEXT_1 = cvc4_ocaml_top$(EXEEXT)
+PROGRAMS = $(bin_PROGRAMS)
+am_cvc4_ocaml_top_OBJECTS =
+cvc4_ocaml_top_OBJECTS = $(am_cvc4_ocaml_top_OBJECTS)
+cvc4_ocaml_top_LDADD = $(LDADD)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(nodist_csharp_CVC4_la_SOURCES) \
+	$(nodist_java_libcvc4jni_la_SOURCES) \
+	$(nodist_ocaml_CVC4_la_SOURCES) $(nodist_perl_CVC4_la_SOURCES) \
+	$(nodist_php_CVC4_la_SOURCES) $(nodist_python_CVC4_la_SOURCES) \
+	$(nodist_ruby_CVC4_la_SOURCES) $(nodist_tcl_CVC4_la_SOURCES) \
+	$(cvc4_ocaml_top_SOURCES)
+DIST_SOURCES = $(cvc4_ocaml_top_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+DATA = $(csharpdata_DATA) $(javadata_DATA) $(ocamldata_DATA) \
+	$(perldata_DATA) $(phpdata_DATA) $(pythondata_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+
+# LIBCVC4BINDINGS_VERSION (-version-info) is in the form current:revision:age
+#
+# current -
+#   increment if interfaces have been added, removed or changed
+# revision -
+#   increment if source code has changed
+#   set to zero if current is incremented
+# age -
+#   increment if interfaces have been added
+#   set to zero if interfaces have been removed
+#   or changed
+#
+LIBCVC4BINDINGS_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+AUTOMAKE_OPTIONS = subdir-objects
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4BINDINGSLIB \
+	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..
+
+AM_CXXFLAGS = -Wall
+SUBDIRS = compat
+
+# any binding-specific flags to pass to swig
+java_cpp_SWIGFLAGS = -package edu.nyu.acsys.CVC4
+lib_LTLIBRARIES = 
+javadatadir = $(datadir)/java
+javalibdir = $(libdir)/jni
+ocamldatadir = $(libdir)/ocaml/cvc4
+ocamllibdir = $(libdir)/ocaml/cvc4
+perldatadir = $(datadir)/perl5
+perllibdir = $(libdir)/perl5
+phpdatadir = $(datadir)/php
+phplibdir = $(libdir)/php
+pythondatadir = $(datadir)/pyshared
+pythonlibdir = $(libdir)/pyshared
+csharpdatadir = $(datadir)/csharp
+csharplibdir = $(libdir)/csharp
+rubylibdir = $(libdir)/ruby
+tcllibdir = $(libdir)/tcltk
+javadata_DATA = $(am__append_2)
+javalib_LTLIBRARIES = $(am__append_1)
+ocamldata_DATA = $(am__append_12)
+ocamllib_LTLIBRARIES = $(am__append_10)
+perldata_DATA = $(am__append_5)
+perllib_LTLIBRARIES = $(am__append_4)
+phpdata_DATA = $(am__append_7)
+phplib_LTLIBRARIES = $(am__append_6)
+pythondata_DATA = $(am__append_9)
+pythonlib_LTLIBRARIES = $(am__append_8)
+csharpdata_DATA = 
+csharplib_LTLIBRARIES = $(am__append_3)
+rubylib_LTLIBRARIES = $(am__append_13)
+tcllib_LTLIBRARIES = $(am__append_14)
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_JAVA_TRUE at java_libcvc4jni_la_LDFLAGS = \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_JAVA_TRUE@	-module \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_JAVA_TRUE@	-shrext $(CVC4_JAVA_MODULE_EXT) \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_JAVA_TRUE@	-version-info $(LIBCVC4BINDINGS_VERSION)
+
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_JAVA_TRUE at java_libcvc4jni_la_LIBADD = \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_JAVA_TRUE@	@builddir@/../libcvc4.la \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_JAVA_TRUE@	@builddir@/../parser/libcvc4parser.la
+
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_CSHARP_TRUE at csharp_CVC4_la_LDFLAGS = \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_CSHARP_TRUE@	-module \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_CSHARP_TRUE@	-version-info $(LIBCVC4BINDINGS_VERSION)
+
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_CSHARP_TRUE at csharp_CVC4_la_LIBADD = \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_CSHARP_TRUE@	@builddir@/../libcvc4.la \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_CSHARP_TRUE@	@builddir@/../parser/libcvc4parser.la
+
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PERL_TRUE at perl_CVC4_la_LDFLAGS = \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PERL_TRUE@	-module \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PERL_TRUE@	-version-info $(LIBCVC4BINDINGS_VERSION)
+
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PERL_TRUE at perl_CVC4_la_LIBADD = \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PERL_TRUE@	@builddir@/../libcvc4.la \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PERL_TRUE@	@builddir@/../parser/libcvc4parser.la
+
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PHP_TRUE at php_CVC4_la_LDFLAGS = \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PHP_TRUE@	-module \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PHP_TRUE@	-version-info $(LIBCVC4BINDINGS_VERSION)
+
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PHP_TRUE at php_CVC4_la_LIBADD = \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PHP_TRUE@	@builddir@/../libcvc4.la \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PHP_TRUE@	@builddir@/../parser/libcvc4parser.la
+
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PYTHON_TRUE at python_CVC4_la_CXXFLAGS = $(PYTHON_CXXFLAGS)
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PYTHON_TRUE at python_CVC4_la_LDFLAGS = \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PYTHON_TRUE@	-module \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PYTHON_TRUE@	-version-info $(LIBCVC4BINDINGS_VERSION)
+
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PYTHON_TRUE at python_CVC4_la_LIBADD = \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PYTHON_TRUE@	@builddir@/../libcvc4.la \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_PYTHON_TRUE@	@builddir@/../parser/libcvc4parser.la
+
+# We provide a make rule below, but we have to tell automake to lay off, too,
+# otherwise it tries (and fails) to package the nonexistent cvc4_ocaml_top.c!
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_OCAML_TRUE at cvc4_ocaml_top_SOURCES = 
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_OCAML_TRUE at ocaml_CVC4_la_LDFLAGS = \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_OCAML_TRUE@	-module \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_OCAML_TRUE@	-version-info $(LIBCVC4BINDINGS_VERSION)
+
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_OCAML_TRUE at ocaml_CVC4_la_LIBADD = \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_OCAML_TRUE@	@builddir@/../libcvc4.la \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_OCAML_TRUE@	@builddir@/../parser/libcvc4parser.la
+
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_RUBY_TRUE at ruby_CVC4_la_LDFLAGS = \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_RUBY_TRUE@	-module \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_RUBY_TRUE@	-version-info $(LIBCVC4BINDINGS_VERSION)
+
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_RUBY_TRUE at ruby_CVC4_la_LIBADD = \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_RUBY_TRUE@	@builddir@/../libcvc4.la \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_RUBY_TRUE@	@builddir@/../parser/libcvc4parser.la
+
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_TCL_TRUE at tcl_CVC4_la_LDFLAGS = \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_TCL_TRUE@	-module \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_TCL_TRUE@	-version-info $(LIBCVC4BINDINGS_VERSION)
+
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_TCL_TRUE at tcl_CVC4_la_LIBADD = \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_TCL_TRUE@	@builddir@/../libcvc4.la \
+ at CVC4_HAS_SWIG_TRUE@@CVC4_LANGUAGE_BINDING_TCL_TRUE@	@builddir@/../parser/libcvc4parser.la
+
+# this endif matches the "if CVC4_HAS_SWIG" above
+nodist_java_libcvc4jni_la_SOURCES = java.cpp
+java_libcvc4jni_la_CXXFLAGS = -Wno-all @FNO_STRICT_ALIASING@ @WNO_UNUSED_VARIABLE@ @WNO_UNINITIALIZED@
+nodist_csharp_CVC4_la_SOURCES = csharp.cpp
+nodist_perl_CVC4_la_SOURCES = perl.cpp
+nodist_php_CVC4_la_SOURCES = php.cpp
+nodist_python_CVC4_la_SOURCES = python.cpp
+nodist_ocaml_CVC4_la_SOURCES = ocaml.cpp
+nodist_ruby_CVC4_la_SOURCES = ruby.cpp
+nodist_tcl_CVC4_la_SOURCES = tcl.cpp
+CLEANFILES = \
+	java.cpp \
+	csharp.cpp \
+	perl.cpp \
+	php.cpp \
+	python.cpp \
+	ocaml.cpp \
+	ruby.cpp \
+	tcl.cpp
+
+EXTRA_DIST = \
+	swig.h \
+	java_iterator_adapter.h \
+	java_stream_adapters.h
+
+MOSTLYCLEANFILES = \
+        .swig_deps \
+	$(patsubst %,%.d,$(filter-out c c++,$(CVC4_LANGUAGE_BINDINGS))) \
+	CVC4.jar
+
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/bindings/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/bindings/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+install-csharplibLTLIBRARIES: $(csharplib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(csharplib_LTLIBRARIES)'; test -n "$(csharplibdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(csharplibdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(csharplibdir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(csharplibdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(csharplibdir)"; \
+	}
+
+uninstall-csharplibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(csharplib_LTLIBRARIES)'; test -n "$(csharplibdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(csharplibdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(csharplibdir)/$$f"; \
+	done
+
+clean-csharplibLTLIBRARIES:
+	-test -z "$(csharplib_LTLIBRARIES)" || rm -f $(csharplib_LTLIBRARIES)
+	@list='$(csharplib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+install-javalibLTLIBRARIES: $(javalib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(javalib_LTLIBRARIES)'; test -n "$(javalibdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(javalibdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(javalibdir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(javalibdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(javalibdir)"; \
+	}
+
+uninstall-javalibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(javalib_LTLIBRARIES)'; test -n "$(javalibdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(javalibdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(javalibdir)/$$f"; \
+	done
+
+clean-javalibLTLIBRARIES:
+	-test -z "$(javalib_LTLIBRARIES)" || rm -f $(javalib_LTLIBRARIES)
+	@list='$(javalib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+	}
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+	done
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+	@list='$(lib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+install-ocamllibLTLIBRARIES: $(ocamllib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(ocamllib_LTLIBRARIES)'; test -n "$(ocamllibdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(ocamllibdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(ocamllibdir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(ocamllibdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(ocamllibdir)"; \
+	}
+
+uninstall-ocamllibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(ocamllib_LTLIBRARIES)'; test -n "$(ocamllibdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(ocamllibdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(ocamllibdir)/$$f"; \
+	done
+
+clean-ocamllibLTLIBRARIES:
+	-test -z "$(ocamllib_LTLIBRARIES)" || rm -f $(ocamllib_LTLIBRARIES)
+	@list='$(ocamllib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+install-perllibLTLIBRARIES: $(perllib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(perllib_LTLIBRARIES)'; test -n "$(perllibdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(perllibdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(perllibdir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(perllibdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(perllibdir)"; \
+	}
+
+uninstall-perllibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(perllib_LTLIBRARIES)'; test -n "$(perllibdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(perllibdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(perllibdir)/$$f"; \
+	done
+
+clean-perllibLTLIBRARIES:
+	-test -z "$(perllib_LTLIBRARIES)" || rm -f $(perllib_LTLIBRARIES)
+	@list='$(perllib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+install-phplibLTLIBRARIES: $(phplib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(phplib_LTLIBRARIES)'; test -n "$(phplibdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(phplibdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(phplibdir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(phplibdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(phplibdir)"; \
+	}
+
+uninstall-phplibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(phplib_LTLIBRARIES)'; test -n "$(phplibdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(phplibdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(phplibdir)/$$f"; \
+	done
+
+clean-phplibLTLIBRARIES:
+	-test -z "$(phplib_LTLIBRARIES)" || rm -f $(phplib_LTLIBRARIES)
+	@list='$(phplib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+install-pythonlibLTLIBRARIES: $(pythonlib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(pythonlib_LTLIBRARIES)'; test -n "$(pythonlibdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(pythonlibdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(pythonlibdir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pythonlibdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pythonlibdir)"; \
+	}
+
+uninstall-pythonlibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(pythonlib_LTLIBRARIES)'; test -n "$(pythonlibdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pythonlibdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pythonlibdir)/$$f"; \
+	done
+
+clean-pythonlibLTLIBRARIES:
+	-test -z "$(pythonlib_LTLIBRARIES)" || rm -f $(pythonlib_LTLIBRARIES)
+	@list='$(pythonlib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+install-rubylibLTLIBRARIES: $(rubylib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(rubylib_LTLIBRARIES)'; test -n "$(rubylibdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(rubylibdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(rubylibdir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(rubylibdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(rubylibdir)"; \
+	}
+
+uninstall-rubylibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(rubylib_LTLIBRARIES)'; test -n "$(rubylibdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(rubylibdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(rubylibdir)/$$f"; \
+	done
+
+clean-rubylibLTLIBRARIES:
+	-test -z "$(rubylib_LTLIBRARIES)" || rm -f $(rubylib_LTLIBRARIES)
+	@list='$(rubylib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+install-tcllibLTLIBRARIES: $(tcllib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(tcllib_LTLIBRARIES)'; test -n "$(tcllibdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(tcllibdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(tcllibdir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(tcllibdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(tcllibdir)"; \
+	}
+
+uninstall-tcllibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(tcllib_LTLIBRARIES)'; test -n "$(tcllibdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(tcllibdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(tcllibdir)/$$f"; \
+	done
+
+clean-tcllibLTLIBRARIES:
+	-test -z "$(tcllib_LTLIBRARIES)" || rm -f $(tcllib_LTLIBRARIES)
+	@list='$(tcllib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+csharp/$(am__dirstamp):
+	@$(MKDIR_P) csharp
+	@: > csharp/$(am__dirstamp)
+
+csharp/CVC4.la: $(csharp_CVC4_la_OBJECTS) $(csharp_CVC4_la_DEPENDENCIES) $(EXTRA_csharp_CVC4_la_DEPENDENCIES) csharp/$(am__dirstamp)
+	$(AM_V_CXXLD)$(csharp_CVC4_la_LINK) $(am_csharp_CVC4_la_rpath) $(csharp_CVC4_la_OBJECTS) $(csharp_CVC4_la_LIBADD) $(LIBS)
+java/$(am__dirstamp):
+	@$(MKDIR_P) java
+	@: > java/$(am__dirstamp)
+
+java/libcvc4jni.la: $(java_libcvc4jni_la_OBJECTS) $(java_libcvc4jni_la_DEPENDENCIES) $(EXTRA_java_libcvc4jni_la_DEPENDENCIES) java/$(am__dirstamp)
+	$(AM_V_CXXLD)$(java_libcvc4jni_la_LINK) $(am_java_libcvc4jni_la_rpath) $(java_libcvc4jni_la_OBJECTS) $(java_libcvc4jni_la_LIBADD) $(LIBS)
+ocaml/$(am__dirstamp):
+	@$(MKDIR_P) ocaml
+	@: > ocaml/$(am__dirstamp)
+
+ocaml/CVC4.la: $(ocaml_CVC4_la_OBJECTS) $(ocaml_CVC4_la_DEPENDENCIES) $(EXTRA_ocaml_CVC4_la_DEPENDENCIES) ocaml/$(am__dirstamp)
+	$(AM_V_CXXLD)$(ocaml_CVC4_la_LINK) $(am_ocaml_CVC4_la_rpath) $(ocaml_CVC4_la_OBJECTS) $(ocaml_CVC4_la_LIBADD) $(LIBS)
+perl/$(am__dirstamp):
+	@$(MKDIR_P) perl
+	@: > perl/$(am__dirstamp)
+
+perl/CVC4.la: $(perl_CVC4_la_OBJECTS) $(perl_CVC4_la_DEPENDENCIES) $(EXTRA_perl_CVC4_la_DEPENDENCIES) perl/$(am__dirstamp)
+	$(AM_V_CXXLD)$(perl_CVC4_la_LINK) $(am_perl_CVC4_la_rpath) $(perl_CVC4_la_OBJECTS) $(perl_CVC4_la_LIBADD) $(LIBS)
+php/$(am__dirstamp):
+	@$(MKDIR_P) php
+	@: > php/$(am__dirstamp)
+
+php/CVC4.la: $(php_CVC4_la_OBJECTS) $(php_CVC4_la_DEPENDENCIES) $(EXTRA_php_CVC4_la_DEPENDENCIES) php/$(am__dirstamp)
+	$(AM_V_CXXLD)$(php_CVC4_la_LINK) $(am_php_CVC4_la_rpath) $(php_CVC4_la_OBJECTS) $(php_CVC4_la_LIBADD) $(LIBS)
+python/$(am__dirstamp):
+	@$(MKDIR_P) python
+	@: > python/$(am__dirstamp)
+
+python/CVC4.la: $(python_CVC4_la_OBJECTS) $(python_CVC4_la_DEPENDENCIES) $(EXTRA_python_CVC4_la_DEPENDENCIES) python/$(am__dirstamp)
+	$(AM_V_CXXLD)$(python_CVC4_la_LINK) $(am_python_CVC4_la_rpath) $(python_CVC4_la_OBJECTS) $(python_CVC4_la_LIBADD) $(LIBS)
+ruby/$(am__dirstamp):
+	@$(MKDIR_P) ruby
+	@: > ruby/$(am__dirstamp)
+
+ruby/CVC4.la: $(ruby_CVC4_la_OBJECTS) $(ruby_CVC4_la_DEPENDENCIES) $(EXTRA_ruby_CVC4_la_DEPENDENCIES) ruby/$(am__dirstamp)
+	$(AM_V_CXXLD)$(ruby_CVC4_la_LINK) $(am_ruby_CVC4_la_rpath) $(ruby_CVC4_la_OBJECTS) $(ruby_CVC4_la_LIBADD) $(LIBS)
+tcl/$(am__dirstamp):
+	@$(MKDIR_P) tcl
+	@: > tcl/$(am__dirstamp)
+
+tcl/CVC4.la: $(tcl_CVC4_la_OBJECTS) $(tcl_CVC4_la_DEPENDENCIES) $(EXTRA_tcl_CVC4_la_DEPENDENCIES) tcl/$(am__dirstamp)
+	$(AM_V_CXXLD)$(tcl_CVC4_la_LINK) $(am_tcl_CVC4_la_rpath) $(tcl_CVC4_la_OBJECTS) $(tcl_CVC4_la_LIBADD) $(LIBS)
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
+	for p in $$list; do echo "$$p $$p"; done | \
+	sed 's/$(EXEEXT)$$//' | \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
+	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+	sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+	    else { print "f", $$3 "/" $$4, $$1; } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	    test -z "$$files" || { \
+	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	    } \
+	; done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+	@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+	echo " rm -f" $$list; \
+	rm -f $$list || exit $$?; \
+	test -n "$(EXEEXT)" || exit 0; \
+	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+	echo " rm -f" $$list; \
+	rm -f $$list
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/csharp.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/java_libcvc4jni_la-java.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ocaml.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/perl.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/php.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/python_CVC4_la-python.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ruby.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tcl.Plo at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+python_CVC4_la-python.lo: python.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(python_CVC4_la_CXXFLAGS) $(CXXFLAGS) -MT python_CVC4_la-python.lo -MD -MP -MF $(DEPDIR)/python_CVC4_la-python.Tpo -c -o python_CVC4_la-python.lo `test -f 'python.cpp' || echo '$(srcdir)/'`python.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/python_CVC4_la-python.Tpo $(DEPDIR)/python_CVC4_la-python.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='python.cpp' object='python_CVC4_la-python.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(python_CVC4_la_CXXFLAGS) $(CXXFLAGS) -c -o python_CVC4_la-python.lo `test -f 'python.cpp' || echo '$(srcdir)/'`python.cpp
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+	-rm -rf csharp/.libs csharp/_libs
+	-rm -rf java/.libs java/_libs
+	-rm -rf ocaml/.libs ocaml/_libs
+	-rm -rf perl/.libs perl/_libs
+	-rm -rf php/.libs php/_libs
+	-rm -rf python/.libs python/_libs
+	-rm -rf ruby/.libs ruby/_libs
+	-rm -rf tcl/.libs tcl/_libs
+install-csharpdataDATA: $(csharpdata_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(csharpdata_DATA)'; test -n "$(csharpdatadir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(csharpdatadir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(csharpdatadir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(csharpdatadir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(csharpdatadir)" || exit $$?; \
+	done
+
+uninstall-csharpdataDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(csharpdata_DATA)'; test -n "$(csharpdatadir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(csharpdatadir)'; $(am__uninstall_files_from_dir)
+install-javadataDATA: $(javadata_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(javadata_DATA)'; test -n "$(javadatadir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(javadatadir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(javadatadir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(javadatadir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(javadatadir)" || exit $$?; \
+	done
+
+uninstall-javadataDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(javadata_DATA)'; test -n "$(javadatadir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(javadatadir)'; $(am__uninstall_files_from_dir)
+install-ocamldataDATA: $(ocamldata_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(ocamldata_DATA)'; test -n "$(ocamldatadir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(ocamldatadir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(ocamldatadir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(ocamldatadir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(ocamldatadir)" || exit $$?; \
+	done
+
+uninstall-ocamldataDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(ocamldata_DATA)'; test -n "$(ocamldatadir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(ocamldatadir)'; $(am__uninstall_files_from_dir)
+install-perldataDATA: $(perldata_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(perldata_DATA)'; test -n "$(perldatadir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(perldatadir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(perldatadir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(perldatadir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(perldatadir)" || exit $$?; \
+	done
+
+uninstall-perldataDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(perldata_DATA)'; test -n "$(perldatadir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(perldatadir)'; $(am__uninstall_files_from_dir)
+install-phpdataDATA: $(phpdata_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(phpdata_DATA)'; test -n "$(phpdatadir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(phpdatadir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(phpdatadir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(phpdatadir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(phpdatadir)" || exit $$?; \
+	done
+
+uninstall-phpdataDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(phpdata_DATA)'; test -n "$(phpdatadir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(phpdatadir)'; $(am__uninstall_files_from_dir)
+install-pythondataDATA: $(pythondata_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(pythondata_DATA)'; test -n "$(pythondatadir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(pythondatadir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(pythondatadir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pythondatadir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pythondatadir)" || exit $$?; \
+	done
+
+uninstall-pythondataDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(pythondata_DATA)'; test -n "$(pythondatadir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(pythondatadir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA)
+install-binPROGRAMS: install-libLTLIBRARIES
+
+installdirs: installdirs-recursive
+installdirs-am:
+	for dir in "$(DESTDIR)$(csharplibdir)" "$(DESTDIR)$(javalibdir)" "$(DESTDIR)$(libdir)" "$(DESTDIR)$(ocamllibdir)" "$(DESTDIR)$(perllibdir)" "$(DESTDIR)$(phplibdir)" "$(DESTDIR)$(pythonlibdir)" "$(DESTDIR)$(rubylibdir)" "$(DESTDIR)$(tcllibdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(csharpdatadir)" "$(DESTDIR)$(javadatadir)" "$(DESTDIR)$(ocamldatadir)" "$(DESTDIR)$(perldatadir)" "$(DESTDIR)$(phpdatadir)" "$(DESTDIR)$(pythondatadir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f csharp/$(am__dirstamp)
+	-rm -f java/$(am__dirstamp)
+	-rm -f ocaml/$(am__dirstamp)
+	-rm -f perl/$(am__dirstamp)
+	-rm -f php/$(am__dirstamp)
+	-rm -f python/$(am__dirstamp)
+	-rm -f ruby/$(am__dirstamp)
+	-rm -f tcl/$(am__dirstamp)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-binPROGRAMS clean-csharplibLTLIBRARIES clean-generic \
+	clean-javalibLTLIBRARIES clean-libLTLIBRARIES clean-libtool \
+	clean-local clean-ocamllibLTLIBRARIES clean-perllibLTLIBRARIES \
+	clean-phplibLTLIBRARIES clean-pythonlibLTLIBRARIES \
+	clean-rubylibLTLIBRARIES clean-tcllibLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-csharpdataDATA install-csharplibLTLIBRARIES \
+	install-javadataDATA install-javalibLTLIBRARIES \
+	install-ocamldataDATA install-ocamllibLTLIBRARIES \
+	install-perldataDATA install-perllibLTLIBRARIES \
+	install-phpdataDATA install-phplibLTLIBRARIES \
+	install-pythondataDATA install-pythonlibLTLIBRARIES \
+	install-rubylibLTLIBRARIES install-tcllibLTLIBRARIES
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS install-libLTLIBRARIES
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-csharpdataDATA \
+	uninstall-csharplibLTLIBRARIES uninstall-javadataDATA \
+	uninstall-javalibLTLIBRARIES uninstall-libLTLIBRARIES \
+	uninstall-ocamldataDATA uninstall-ocamllibLTLIBRARIES \
+	uninstall-perldataDATA uninstall-perllibLTLIBRARIES \
+	uninstall-phpdataDATA uninstall-phplibLTLIBRARIES \
+	uninstall-pythondataDATA uninstall-pythonlibLTLIBRARIES \
+	uninstall-rubylibLTLIBRARIES uninstall-tcllibLTLIBRARIES
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am clean clean-binPROGRAMS clean-csharplibLTLIBRARIES \
+	clean-generic clean-javalibLTLIBRARIES clean-libLTLIBRARIES \
+	clean-libtool clean-local clean-ocamllibLTLIBRARIES \
+	clean-perllibLTLIBRARIES clean-phplibLTLIBRARIES \
+	clean-pythonlibLTLIBRARIES clean-rubylibLTLIBRARIES \
+	clean-tcllibLTLIBRARIES cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-binPROGRAMS install-csharpdataDATA \
+	install-csharplibLTLIBRARIES install-data install-data-am \
+	install-dvi install-dvi-am install-exec install-exec-am \
+	install-html install-html-am install-info install-info-am \
+	install-javadataDATA install-javalibLTLIBRARIES \
+	install-libLTLIBRARIES install-man install-ocamldataDATA \
+	install-ocamllibLTLIBRARIES install-pdf install-pdf-am \
+	install-perldataDATA install-perllibLTLIBRARIES \
+	install-phpdataDATA install-phplibLTLIBRARIES install-ps \
+	install-ps-am install-pythondataDATA \
+	install-pythonlibLTLIBRARIES install-rubylibLTLIBRARIES \
+	install-strip install-tcllibLTLIBRARIES installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \
+	uninstall-csharpdataDATA uninstall-csharplibLTLIBRARIES \
+	uninstall-javadataDATA uninstall-javalibLTLIBRARIES \
+	uninstall-libLTLIBRARIES uninstall-ocamldataDATA \
+	uninstall-ocamllibLTLIBRARIES uninstall-perldataDATA \
+	uninstall-perllibLTLIBRARIES uninstall-phpdataDATA \
+	uninstall-phplibLTLIBRARIES uninstall-pythondataDATA \
+	uninstall-pythonlibLTLIBRARIES uninstall-rubylibLTLIBRARIES \
+	uninstall-tcllibLTLIBRARIES
+
+.PRECIOUS: Makefile
+
+
+java_libcvc4jni_la-java.lo: java.cpp
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(JAVA_CPPFLAGS) $(java_libcvc4jni_la_CXXFLAGS) -o $@ $<
+java.lo: java.cpp
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(JAVA_CPPFLAGS) $(java_libcvc4jni_la_CXXFLAGS) -o $@ $<
+CVC4.jar: java.cpp
+	$(AM_V_GEN) \
+	(cd java && \
+	rm -fr classes && \
+	mkdir -p classes && \
+	$(JAVAC) -source 1.5 -target 1.5 -classpath . -d classes `find . -name '*.java'` && \
+	cd classes) && \
+	$(JAR) cf $@ -C java/classes .
+#java.cpp:;
+csharp.lo: csharp.cpp
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(CSHARP_CPPFLAGS) -o $@ $<
+#csharp.cpp:;
+perl.lo: perl.cpp
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(PERL_CPPFLAGS) -o $@ $<
+#perl.cpp:;
+perl/CVC4.pm: perl.cpp
+php.lo: php.cpp
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(PHP_CPPFLAGS) -Iphp -o $@ $<
+#php.cpp:;
+python.lo: python.cpp
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(PYTHON_CPPFLAGS) -o $@ $<
+ocaml.lo: ocaml.cpp
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(OCAML_CPPFLAGS) -o $@ $<
+ocaml/swig.cmo: ocaml/swig.ml ocaml/swig.cmi; $(AM_V_GEN)$(OCAMLC) -I ocaml -c -o $@ $<
+ocaml/swig.cmi: ocaml/swig.mli; $(AM_V_GEN)$(OCAMLC) -I ocaml -c -o $@ $<
+ocaml/CVC4.cmo: ocaml/CVC4.ml ocaml/CVC4.cmi; $(AM_V_GEN)$(OCAMLC) -I ocaml -c -o $@ $<
+ocaml/CVC4.cmi: ocaml/CVC4.mli; $(AM_V_GEN)$(OCAMLC) -I ocaml -c -o $@ $<
+ocaml/swigp4.cmo: ocaml/swigp4.ml; $(AM_V_GEN)$(OCAMLFIND) ocamlc -package camlp4 -pp "$(CAMLP4O) pa_extend.cmo q_MLast.cmo" -o $@ -c $<
+ocaml/swig.ml:; $(AM_V_GEN)cd ocaml && $(SWIG) -ocaml -co swig.ml
+ocaml/swig.mli:; $(AM_V_GEN)cd ocaml && $(SWIG) -ocaml -co swig.mli
+ocaml/swigp4.ml:; $(AM_V_GEN)cd ocaml && $(SWIG) -ocaml -co swigp4.ml
+#ocaml.cpp:;
+cvc4_ocaml_top$(EXEEXT): ocaml/CVC4.la ocaml/swig.cmo ocaml/swig.cmi ocaml/swigp4.cmo ocaml/CVC4.cmo ocaml/CVC4.cmi
+	$(AM_V_GEN)\
+	$(OCAMLFIND) ocamlmktop -I $(ocamldatadir) -custom -o cvc4_ocaml_top$(EXEEXT) -package camlp4 dynlink.cma camlp4o.cma ocaml/swig.cmo ocaml/swigp4.cmo ocaml/CVC4.cmo -cclib ocaml/.libs/CVC4.so -cclib -lstdc++
+ruby.lo: ruby.cpp
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(RUBY_CPPFLAGS) -o $@ $<
+tcl.lo: tcl.cpp
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(TCL_CPPFLAGS) -o $@ $<
+#tcl.cpp:;
+
+ at CVC4_HAS_SWIG_TRUE@$(patsubst %,%.cpp,$(filter-out c c++,$(CVC4_LANGUAGE_BINDINGS))): %.cpp: @srcdir@/../cvc4.i
+ at CVC4_HAS_SWIG_TRUE@	$(AM_V_at)mkdir -p $(patsubst %.cpp,%,$@)
+ at CVC4_HAS_SWIG_TRUE@	$(AM_V_GEN)$(SWIG) -Wall -I at builddir@/.. -I at srcdir@/../include -I at srcdir@/.. -c++ -$(patsubst %.cpp,%,$@) -outdir $(patsubst %.cpp,%,$@) $($(subst .,_,$@)_SWIGFLAGS) -o $@ $<
+
+ at CVC4_HAS_SWIG_TRUE@$(patsubst %,%.d,$(filter-out c c++,$(CVC4_LANGUAGE_BINDINGS))): %.d: @srcdir@/../cvc4.i
+ at CVC4_HAS_SWIG_TRUE@	$(AM_V_GEN)$(SWIG) -I at builddir@/.. -I at srcdir@/../include -I at srcdir@/.. -c++ -$(patsubst %.d,%,$@) -MM -o $(patsubst %.d,%.cpp,$@) $<
+# .PHONY so they get rebuilt each time
+ at CVC4_HAS_SWIG_TRUE@.PHONY: .swig_deps $(patsubst %,%.d,$(filter-out c c++,$(CVC4_LANGUAGE_BINDINGS)))
+ at CVC4_HAS_SWIG_TRUE@.swig_deps: $(patsubst %,%.d,$(filter-out c c++,$(CVC4_LANGUAGE_BINDINGS)))
+ at CVC4_HAS_SWIG_TRUE@	$(AM_V_GEN)cat $+ </dev/null >$@
+ at CVC4_HAS_SWIG_TRUE@@mk_include@ .swig_deps
+
+clean-local:; rm -fr $(patsubst %.cpp,%,$(filter-out c c++,$(CVC4_LANGUAGE_BINDINGS)))
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/bindings/compat/Makefile.am b/src/bindings/compat/Makefile.am
new file mode 100644
index 0000000..327da7f
--- /dev/null
+++ b/src/bindings/compat/Makefile.am
@@ -0,0 +1,9 @@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4BINDINGSLIB \
+	-I at builddir@/../.. -I at srcdir@/../../include -I at srcdir@/../..
+AM_CXXFLAGS = -Wall
+
+if CVC4_BUILD_LIBCOMPAT
+SUBDIRS = c java
+endif
+
diff --git a/src/bindings/compat/Makefile.in b/src/bindings/compat/Makefile.in
new file mode 100644
index 0000000..3c0b714
--- /dev/null
+++ b/src/bindings/compat/Makefile.in
@@ -0,0 +1,769 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = src/bindings/compat
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = c java
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4BINDINGSLIB \
+	-I at builddir@/../.. -I at srcdir@/../../include -I at srcdir@/../..
+
+AM_CXXFLAGS = -Wall
+ at CVC4_BUILD_LIBCOMPAT_TRUE@SUBDIRS = c java
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/bindings/compat/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/bindings/compat/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am clean clean-generic clean-libtool cscopelist-am ctags \
+	ctags-am distclean distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/bindings/compat/c/Makefile.am b/src/bindings/compat/c/Makefile.am
new file mode 100644
index 0000000..4ec4626
--- /dev/null
+++ b/src/bindings/compat/c/Makefile.am
@@ -0,0 +1,36 @@
+# LIBCVC4BINDINGS_VERSION (-version-info) is in the form current:revision:age
+#
+# current -
+#   increment if interfaces have been added, removed or changed
+# revision -
+#   increment if source code has changed
+#   set to zero if current is incremented
+# age -
+#   increment if interfaces have been added
+#   set to zero if interfaces have been removed
+#   or changed
+#
+LIBCVC4BINDINGS_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4BINDINGSLIB \
+	-I at builddir@/../../.. -I at srcdir@/../../../include -I at srcdir@/../../..
+AM_CXXFLAGS = -Wall -Wno-return-type
+
+lib_LTLIBRARIES =
+
+if CVC4_LANGUAGE_BINDING_C
+
+lib_LTLIBRARIES += libcvc4bindings_c_compat.la
+libcvc4bindings_c_compat_la_LDFLAGS = \
+	-version-info $(LIBCVC4BINDINGS_VERSION)
+libcvc4bindings_c_compat_la_LIBADD = \
+	@builddir@/../../../compat/libcvc4compat.la \
+	@builddir@/../../../libcvc4.la
+
+endif
+
+libcvc4bindings_c_compat_la_SOURCES = \
+	c_interface_defs.h \
+	c_interface.h \
+	c_interface.cpp
diff --git a/src/bindings/compat/c/Makefile.in b/src/bindings/compat/c/Makefile.in
new file mode 100644
index 0000000..700518d
--- /dev/null
+++ b/src/bindings/compat/c/Makefile.in
@@ -0,0 +1,846 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at CVC4_LANGUAGE_BINDING_C_TRUE@am__append_1 = libcvc4bindings_c_compat.la
+subdir = src/bindings/compat/c
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(libdir)"
+LTLIBRARIES = $(lib_LTLIBRARIES)
+ at CVC4_LANGUAGE_BINDING_C_TRUE@libcvc4bindings_c_compat_la_DEPENDENCIES = @builddir@/../../../compat/libcvc4compat.la \
+ at CVC4_LANGUAGE_BINDING_C_TRUE@	@builddir@/../../../libcvc4.la
+am_libcvc4bindings_c_compat_la_OBJECTS = c_interface.lo
+libcvc4bindings_c_compat_la_OBJECTS =  \
+	$(am_libcvc4bindings_c_compat_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+libcvc4bindings_c_compat_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+	$(AM_CXXFLAGS) $(CXXFLAGS) \
+	$(libcvc4bindings_c_compat_la_LDFLAGS) $(LDFLAGS) -o $@
+ at CVC4_LANGUAGE_BINDING_C_TRUE@am_libcvc4bindings_c_compat_la_rpath =  \
+ at CVC4_LANGUAGE_BINDING_C_TRUE@	-rpath $(libdir)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(libcvc4bindings_c_compat_la_SOURCES)
+DIST_SOURCES = $(libcvc4bindings_c_compat_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+
+# LIBCVC4BINDINGS_VERSION (-version-info) is in the form current:revision:age
+#
+# current -
+#   increment if interfaces have been added, removed or changed
+# revision -
+#   increment if source code has changed
+#   set to zero if current is incremented
+# age -
+#   increment if interfaces have been added
+#   set to zero if interfaces have been removed
+#   or changed
+#
+LIBCVC4BINDINGS_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4BINDINGSLIB \
+	-I at builddir@/../../.. -I at srcdir@/../../../include -I at srcdir@/../../..
+
+AM_CXXFLAGS = -Wall -Wno-return-type
+lib_LTLIBRARIES = $(am__append_1)
+ at CVC4_LANGUAGE_BINDING_C_TRUE@libcvc4bindings_c_compat_la_LDFLAGS = \
+ at CVC4_LANGUAGE_BINDING_C_TRUE@	-version-info $(LIBCVC4BINDINGS_VERSION)
+
+ at CVC4_LANGUAGE_BINDING_C_TRUE@libcvc4bindings_c_compat_la_LIBADD = \
+ at CVC4_LANGUAGE_BINDING_C_TRUE@	@builddir@/../../../compat/libcvc4compat.la \
+ at CVC4_LANGUAGE_BINDING_C_TRUE@	@builddir@/../../../libcvc4.la
+
+libcvc4bindings_c_compat_la_SOURCES = \
+	c_interface_defs.h \
+	c_interface.h \
+	c_interface.cpp
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/bindings/compat/c/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/bindings/compat/c/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+	}
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+	done
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+	@list='$(lib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+libcvc4bindings_c_compat.la: $(libcvc4bindings_c_compat_la_OBJECTS) $(libcvc4bindings_c_compat_la_DEPENDENCIES) $(EXTRA_libcvc4bindings_c_compat_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(libcvc4bindings_c_compat_la_LINK) $(am_libcvc4bindings_c_compat_la_rpath) $(libcvc4bindings_c_compat_la_OBJECTS) $(libcvc4bindings_c_compat_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/c_interface.Plo at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+	for dir in "$(DESTDIR)$(libdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-libLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-libLTLIBRARIES install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/bindings/compat/c/c_interface.cpp b/src/bindings/compat/c/c_interface.cpp
new file mode 100644
index 0000000..8219d51
--- /dev/null
+++ b/src/bindings/compat/c/c_interface.cpp
@@ -0,0 +1,2881 @@
+/*****************************************************************************/
+/*!
+ * \file c_interface.cpp
+ *
+ * Authors: Clark Barrett
+ *          Cristian Cadar
+ *
+ * Created: Thu Jun  5 10:34:02 2003
+ *
+ * <hr>
+ *
+ * License to use, copy, modify, sell and/or distribute this software
+ * and its documentation for any purpose is hereby granted without
+ * royalty, subject to the terms and conditions defined in the \ref
+ * LICENSE file provided with this distribution.
+ *
+ * <hr>
+ *
+ */
+/*****************************************************************************/
+
+
+#include <strings.h>
+#include "bindings/compat/c/c_interface_defs.h"
+#include "compat/cvc3_compat.h"
+//#include "vc.h"
+//#include "command_line_flags.h"
+//#include "parser.h"
+//#include "vc_cmd.h"
+//#include "theory_bitvector.h"
+//#include "fdstream.h"
+#include <string>
+#include <cassert>
+#include <cerrno>
+#include <unistd.h>
+
+#ifdef CVC4_DEBUG
+#  define DebugAssert(cond, str) assert(cond)
+#  define IF_DEBUG(x) x
+#else
+#  define DebugAssert(...)
+#  define IF_DEBUG(x)
+#endif
+
+using namespace std;
+
+
+// -------------------------------------------------------------------------
+//  Debugging
+// -------------------------------------------------------------------------
+
+// + will mean OK
+// - will mean error
+int c_interface_error_flag = 1;
+const int error_int = -100;
+const char* c_interface_error_message = "An Exception Occured: System in a compromised state.";
+string c_interface_error_string;
+// Used to return char* values.  Note that the value is only good until
+// the next call to a function returning char*
+static string tmpString;
+
+void signal_error(const char* message,int flag_val,CVC3::Exception ex){
+  ostringstream ss;
+  ss << c_interface_error_message << endl;
+  ss << "Message: " << message << endl;
+  ss << "Exception: " << ex << endl;
+  IF_DEBUG(cerr << ss.str();)
+  c_interface_error_string = ss.str();
+  c_interface_error_flag = flag_val;
+}
+
+extern "C" int vc_get_error_status(){
+  return c_interface_error_flag;
+}
+
+extern "C" void vc_reset_error_status(){
+  c_interface_error_flag = 1;
+  c_interface_error_string = "";
+}
+
+extern "C" char* vc_get_error_string() {
+  return (char*) (c_interface_error_string.c_str());
+}
+
+
+// Private to implementation
+
+class CInterface {
+public:
+  static CVC3::Type fromType(Type t);
+  static Type toType(const CVC3::Type& t);
+  static CVC3::Expr fromExpr(Expr e);
+  static Expr toExpr(const CVC3::Expr& e);
+  static CVC3::Op fromOp(Op op);
+  static Op toOp(VC vc, const CVC3::Op& op);
+  //  static CVC3::Proof fromProof(Proof proof);
+  //  static Proof toProof(const CVC3::Proof& proof);
+  static void deleteExpr(Expr e);
+  static void deleteType(Type t);
+  static void deleteVector(Expr* vec);
+};
+
+
+CVC3::Type CInterface::fromType(Type t)
+{
+  return *(CVC3::Type*)t;
+}
+
+
+Type CInterface::toType(const CVC3::Type& t)
+{
+  if(t.isNull()) return NULL;
+  return Type(new CVC3::Type(t));
+}
+
+
+CVC3::Expr CInterface::fromExpr(Expr e)
+{
+  return *(CVC3::Expr*)e;
+}
+
+
+Expr CInterface::toExpr(const CVC3::Expr& e)
+{
+  if(e.isNull()) return NULL;
+  return Expr(new CVC3::Expr(e));
+}
+
+
+CVC3::Op CInterface::fromOp(Op op)
+{
+  return *(CVC3::Op*)op;
+}
+
+
+Op CInterface::toOp(VC vc, const CVC3::Op& op)
+{
+  if (op.isNull()) return NULL;
+  return Op(new CVC3::Op(op));
+}
+
+
+// CVC3::Proof CInterface::fromProof(Proof proof)
+// {
+//   return CVC3::Proof(fromExpr(proof));
+// }
+
+
+// Proof CInterface::toProof(const CVC3::Proof& proof)
+// {
+//   return toExpr(proof.getExpr());
+// }
+
+
+void CInterface::deleteExpr(Expr e)
+{
+  if (e) delete (CVC3::Expr*)e;
+}
+
+void CInterface::deleteType(Type t)
+{
+  if (t) delete (CVC3::Type*)t;
+}
+
+void CInterface::deleteVector(Expr* e)
+{
+  if (e) delete [] e;
+}
+
+
+static CVC3::Type fromType(Type t) { return CInterface::fromType(t); }
+static Type toType(const CVC3::Type& t) { return CInterface::toType(t); }
+static CVC3::Expr fromExpr(Expr e) { return CInterface::fromExpr(e); }
+static Expr toExpr(const CVC3::Expr& e) { return CInterface::toExpr(e); }
+static CVC3::Op fromOp(Op op) { return CInterface::fromOp(op); }
+static Op toOp(VC vc, const CVC3::Op& op) { return CInterface::toOp(vc, op); }
+// static CVC3::Proof fromProof(Proof proof) { return CInterface::fromProof(proof); }
+// static Proof toProof(const CVC3::Proof& proof) { return CInterface::toProof(proof); }
+
+
+static char *val_to_binary_str(unsigned nbits, unsigned long val) {
+        char s[65];
+
+	assert(nbits < sizeof s);
+        strcpy(s, "");
+        while(nbits-- > 0) {
+                if((val >> nbits) & 1)
+                        strcat(s, "1");
+                else
+                        strcat(s, "0");
+        }
+        return strdup(s);
+}
+
+
+///////////////////////////////////////////////////////////////////////////
+// Begin implementation of C interface                                   //
+///////////////////////////////////////////////////////////////////////////
+
+
+extern "C" VC vc_createValidityChecker(Flags flags) {
+  try{
+    CVC3::CLFlags f = (flags==NULL)? CVC3::ValidityChecker::createFlags()
+      : *((CVC3::CLFlags*)flags);
+    return (VC)CVC3::ValidityChecker::create(f);
+  } catch (CVC3::Exception ex){
+    signal_error("vc_createValidityChecker",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Flags vc_createFlags() {
+  try{
+  return new CVC3::CLFlags(CVC3::ValidityChecker::createFlags());
+  } catch (CVC3::Exception ex){
+    signal_error("vc_createFlags",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" void vc_destroyValidityChecker(VC vc)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  delete cvc;
+  } catch (CVC3::Exception ex){
+    signal_error("vc_destroyVelidityChecker",error_int,ex);
+  }
+}
+
+
+extern "C" void vc_deleteFlags(Flags flags) {
+  try{
+  delete ((CVC3::CLFlags*)flags);
+  } catch (CVC3::Exception ex){
+    signal_error("vc_deleteFlags",error_int,ex);
+  }
+}
+
+
+extern "C" void vc_deleteExpr(Expr e)
+{
+  try{
+  CInterface::deleteExpr(e);
+  } catch (CVC3::Exception ex){
+    signal_error("vc_deleteExpr",error_int,ex);
+  }
+}
+
+
+extern "C" void vc_deleteType(Type t)
+{
+  try{
+  CInterface::deleteType(t);
+  } catch (CVC3::Exception ex){
+    signal_error("vc_deleteType",error_int,ex);
+  }
+}
+
+
+extern "C" void vc_deleteOp(Op op)
+{
+  vc_deleteExpr(op);
+}
+
+
+extern "C" void vc_deleteVector(Expr* e)
+{
+  try{
+  CInterface::deleteVector(e);
+  } catch (CVC3::Exception ex){
+    signal_error("vc_deleteVector",error_int,ex);
+  }
+}
+
+
+extern "C" void vc_deleteTypeVector(Type* e)
+{
+  vc_deleteVector(e);
+}
+
+
+extern "C" void vc_setBoolFlag(Flags flags, char* name, int val) {
+  try{
+  CVC3::CLFlags& f = *((CVC3::CLFlags*)flags);
+  f.setFlag(name, (val!=0));
+  } catch (CVC3::Exception ex){
+    signal_error("vc_setBoolFlag",error_int,ex);
+  }
+}
+
+
+extern "C" void vc_setIntFlag(Flags flags, char* name, int val) {
+  try{
+  CVC3::CLFlags& f = *((CVC3::CLFlags*)flags);
+  f.setFlag(name, val);
+  } catch (CVC3::Exception ex){
+    signal_error("vc_setIntFlag",error_int,ex);
+  }
+}
+
+
+extern "C" void vc_setStringFlag(Flags flags, char* name, char* val) {
+  try{
+  CVC3::CLFlags& f = *((CVC3::CLFlags*)flags);
+  f.setFlag(name, string(val));
+  } catch (CVC3::Exception ex){
+    signal_error("vc_setStringFlag",error_int,ex);
+  }
+}
+
+
+extern "C" void vc_setStrSeqFlag(Flags flags, char* name, char* str, int val) {
+  try{
+  CVC3::CLFlags& f = *((CVC3::CLFlags*)flags);
+  f.setFlag(name, pair<string,bool>(string(str), val!=0));
+  } catch (CVC3::Exception ex){
+    signal_error("vc_setStrSeqFlag",error_int,ex);
+  }
+}
+
+
+extern "C" Type vc_boolType(VC vc)
+{
+  try{
+    CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+    return toType(cvc->boolType());
+  } catch (CVC3::Exception ex){
+    signal_error("vc_boolType",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_realType(VC vc)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toType(cvc->realType());
+  }catch (CVC3::Exception ex){
+    signal_error("vc_realType",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_intType(VC vc)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toType(cvc->intType());
+  }catch (CVC3::Exception ex){
+    signal_error("vc_intType",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_subRangeType(VC vc, int lowerEnd, int upperEnd)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toType(cvc->subrangeType(cvc->ratExpr(lowerEnd),
+                                  cvc->ratExpr(upperEnd)));
+  }catch (CVC3::Exception &ex){
+    signal_error("vc_subRangeType",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_subtypeType(VC vc, Expr pred, Expr witness)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toType(cvc->subtypeType(fromExpr(pred), fromExpr(witness)));
+  }catch (CVC3::Exception &ex){
+    signal_error("vc_subtypeType",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_tupleType2(VC vc, Type type0, Type type1)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toType(cvc->tupleType(fromType(type0), fromType(type1)));
+  }catch (CVC3::Exception ex){
+    signal_error("vc_tupleType2",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_tupleType3(VC vc, Type type0, Type type1, Type type2)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toType(cvc->tupleType(fromType(type0), fromType(type1),
+			       fromType(type2)));
+  }catch (CVC3::Exception ex){
+    signal_error("vc_tupleType3",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_tupleTypeN(VC vc, Type* types, int numTypes)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Type> cvcTypes;
+  for (int i = 0; i < numTypes; ++i) {
+    cvcTypes.push_back(fromType(types[i]));
+  }
+  return toType(cvc->tupleType(cvcTypes));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_tupleTypeN",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_recordType1(VC vc, char* field, Type type)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toType(cvc->recordType(field, fromType(type)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_recordType1",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_recordType2(VC vc, char* field0, Type type0,
+                                      char* field1, Type type1)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toType(cvc->recordType(field0, fromType(type0),
+				field1, fromType(type1)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_recordType2",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_recordType3(VC vc, char* field0, Type type0,
+			              char* field1, Type type1,
+                                      char* field2, Type type2)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toType(cvc->recordType(field0, fromType(type0),
+				field1, fromType(type1),
+				field2, fromType(type2)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_recordType3",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_recordTypeN(VC vc, char** fields, Type* types,
+			       int numFields)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<std::string> cvcFields;
+  vector<CVC3::Type> cvcTypes;
+  for (int i = 0; i < numFields; ++i) {
+    cvcFields.push_back(fields[i]);
+    cvcTypes.push_back(fromType(types[i]));
+  }
+  return toType(cvc->recordType(cvcFields, cvcTypes));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_recordTypeN",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_dataType1(VC vc, char* name, char* constructor, int arity,
+                             char** selectors, Expr* types)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  string cvcName(name);
+  string cvcConstructor(constructor);
+  vector<string> cvcSelectors;
+  vector<CVC3::Expr> cvcTypes;
+  for (int i = 0; i < arity; ++i) {
+    cvcSelectors.push_back(selectors[i]);
+    cvcTypes.push_back(fromExpr(types[i]));
+  }
+  return toType(cvc->dataType(cvcName, cvcConstructor, cvcSelectors, cvcTypes));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_dataType1",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_dataTypeN(VC vc, char* name, int numCons, char** constructors,
+                             int* arities, char*** selectors, Expr** types)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  string cvcName(name);
+  vector<string> cvcConstructors;
+  vector<vector<string> > cvcSelectors(numCons);
+  vector<vector<CVC3::Expr> > cvcTypes(numCons);
+  for (int i = 0; i < numCons; ++i) {
+    cvcConstructors.push_back(constructors[i]);
+    for (int j = 0; j < arities[i]; ++j) {
+      cvcSelectors[i].push_back(selectors[i][j]);
+      cvcTypes[i].push_back(fromExpr(types[i][j]));
+    }
+  }
+  return toType(cvc->dataType(cvcName, cvcConstructors,
+                              cvcSelectors, cvcTypes));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_dataTypeN",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type* vc_dataTypeMN(VC vc, int numTypes, char** names,
+                               int* numCons, char*** constructors,
+                               int** arities, char**** selectors,
+                               Expr*** types)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<string> cvcNames;
+  vector<vector<string> > cvcConstructors(numTypes);
+  vector<vector<vector<string> > > cvcSelectors(numTypes);
+  vector<vector<vector<CVC3::Expr> > > cvcTypes(numTypes);
+  int i;
+  for (i = 0; i < numTypes; ++i) {
+    cvcNames.push_back(names[i]);
+    cvcSelectors[i].resize(numCons[i]);
+    cvcTypes[i].resize(numCons[i]);
+    for (int j = 0; i < numCons[i]; ++j) {
+      cvcConstructors[i].push_back(constructors[i][j]);
+      for (int k = 0; k < arities[i][j]; ++k) {
+        cvcSelectors[i][j].push_back(selectors[i][j][k]);
+        cvcTypes[i][j].push_back(fromExpr(types[i][j][k]));
+      }
+    }
+  }
+  vector<CVC3::Type> cvcReturnTypes;
+  cvc->dataType(cvcNames, cvcConstructors,
+                cvcSelectors, cvcTypes, cvcReturnTypes);
+  Type* returnTypes = new Type[numTypes];
+  for (i = 0; i < numTypes; ++i) {
+    returnTypes[i] = toType(cvcReturnTypes[i]);
+  }
+  return returnTypes;
+  }catch(CVC3::Exception ex){
+    signal_error("vc_dataTypeN",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_arrayType(VC vc, Type typeIndex, Type typeData)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toType(cvc->arrayType(fromType(typeIndex), fromType(typeData)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_arrayType",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_bvType(VC vc, int n)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toType(cvc->bitvecType(n));
+  }catch (CVC3::Exception ex){
+    signal_error("vc_bvType",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_funType1(VC vc, Type typeDom, Type typeRan)
+{
+  try{
+    CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+    return toType(cvc->funType(fromType(typeDom), fromType(typeRan)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_funType1",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_funType2(VC vc, Type a1, Type a2, Type typeRan)
+{
+  try{
+    CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+    vector<CVC3::Type> args;
+    args.push_back(fromType(a1));
+    args.push_back(fromType(a2));
+    return toType(cvc->funType(args, fromType(typeRan)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_funType2",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_funType3(VC vc, Type a1, Type a2, Type a3, Type typeRan)
+{
+  try {
+    CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+    vector<CVC3::Type> args;
+    args.push_back(fromType(a1));
+    args.push_back(fromType(a2));
+    args.push_back(fromType(a3));
+    return toType(cvc->funType(args, fromType(typeRan)));
+  } catch(CVC3::Exception ex){
+    signal_error("vc_funType3",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_funTypeN(VC vc, Type* a, Type typeRan, int numArgs)
+{
+  try{
+    CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+    vector<CVC3::Type> args;
+    for(int i=0; i<numArgs; ++i)
+      args.push_back(fromType(*(a+i)));
+    return toType(cvc->funType(args, fromType(typeRan)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_funTypeN",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_createType(VC vc, char* typeName)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toType(cvc->createType(typeName));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_createType",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_lookupType(VC vc, char* typeName)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toType(cvc->lookupType(typeName));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_lookupType",error_int,ex);
+    return NULL;
+  }
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Expr manipulation methods                                               //
+/////////////////////////////////////////////////////////////////////////////
+
+
+extern "C" ExprManager vc_getEM(VC vc)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return (ExprManager)cvc->getEM();
+  }catch(CVC3::Exception ex){
+    signal_error("vc_getEM",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_varExpr(VC vc, char* name, Type type)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->varExpr(name, fromType(type)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_varExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_varExprDef(VC vc, char* name, Type type, Expr def)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->varExpr(name, fromType(type), fromExpr(def)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_varExprDef",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_lookupVar(VC vc, char* name, Type* type)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  CVC3::Type t;
+  Expr e = toExpr(cvc->lookupVar(name, &t));
+  *type = toType(t);
+  return e;
+  }catch(CVC3::Exception ex){
+    signal_error("vc_lookupVar",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_getType(VC vc, Expr e)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toType(cvc->getType(fromExpr(e)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_getType",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_getBaseType(VC vc, Expr e)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toType(cvc->getBaseType(fromExpr(e)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_getBaseType",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_getBaseTypeOfType(VC vc, Type t)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toType(cvc->getBaseType(fromType(t)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_getBaseTypeOfType",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_getTypePred(VC vc, Type t, Expr e)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->getTypePred(fromType(t), fromExpr(e)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_getTypePred",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_stringExpr(VC vc, char* str)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->stringExpr(str));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_stringExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_idExpr(VC vc, char* str)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->idExpr(str));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_idExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_listExpr(VC vc, int numKids, Expr* kids)
+{
+  try{
+    CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+    vector<CVC3::Expr> args;
+    for(int i=0; i<numKids; ++i)
+      args.push_back(fromExpr(kids[i]));
+    return toExpr(cvc->listExpr(args));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_listExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" void vc_printExpr(VC vc, Expr e)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  cvc->printExpr(fromExpr(e));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_printExpr",error_int,ex);
+  }
+}
+
+
+extern "C" char* vc_printExprString(VC vc, Expr e)
+{
+  try{
+    ostringstream os;
+    string aa;
+    char*  result;
+    CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+    cvc->printExpr(fromExpr(e), os);
+    os.flush();
+    aa=os.str();
+    result=new char[aa.length()+1];
+    strcpy(result,aa.c_str());
+    return result;
+  } catch(CVC3::Exception ex) {
+    signal_error("vc_printExprString",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" void vc_deleteString(char* str)
+{
+  if (str) delete [] str;
+}
+
+
+extern "C" void vc_printExprFile(VC vc, Expr e, int fd)
+{
+  try {
+    stringstream ss;
+    CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+    cvc->printExpr(fromExpr(e), ss);
+    string s = ss.str();
+    ssize_t e = write(fd, s.c_str(), s.size());
+    if(e < 0) {
+      IF_DEBUG(cerr << "write() failed, errno == " << errno << endl;)
+      c_interface_error_string = "write() failed";
+      c_interface_error_flag = errno;
+    }
+  } catch(CVC3::Exception ex) {
+    signal_error("vc_printExpr",error_int,ex);
+  }
+}
+
+
+extern "C" Expr vc_importExpr(VC vc, Expr e)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->importExpr(fromExpr(e)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_importExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_importType(VC vc, Type e)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toType(cvc->importType(fromType(e)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_importType",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_eqExpr(VC vc, Expr child0, Expr child1)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->eqExpr(fromExpr(child0), fromExpr(child1)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_eqExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+extern "C" Expr vc_distinctExpr(VC vc, Expr* children, int numChildren)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Expr> cvcExprs;
+  for (int i = 0; i < numChildren; ++i) {
+    cvcExprs.push_back(fromExpr(children[i]));
+  }
+  return toExpr(cvc->distinctExpr(cvcExprs));
+  }catch(CVC3::Exception ex){
+  signal_error("vc_distinctExpr",error_int,ex);
+  return NULL;
+  }
+}
+
+
+extern "C" Expr vc_trueExpr(VC vc)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->trueExpr());
+  }catch(CVC3::Exception ex){
+    signal_error("vc_trueExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_falseExpr(VC vc)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->falseExpr());
+  }catch(CVC3::Exception ex){
+    signal_error("vc_falseExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_notExpr(VC vc, Expr child)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->notExpr(fromExpr(child)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_notExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_andExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->andExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_andExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_andExprN(VC vc, Expr* children, int numChildren)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Expr> cvcExprs;
+  for (int i = 0; i < numChildren; ++i) {
+    cvcExprs.push_back(fromExpr(children[i]));
+  }
+  return toExpr(cvc->andExpr(cvcExprs));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_andExprN",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_orExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->orExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_orExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_orExprN(VC vc, Expr* children, int numChildren)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Expr> cvcExprs;
+  for (int i = 0; i < numChildren; ++i) {
+    cvcExprs.push_back(fromExpr(children[i]));
+  }
+  return toExpr(cvc->orExpr(cvcExprs));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_orExprN",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_impliesExpr(VC vc, Expr hyp, Expr conc)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->impliesExpr(fromExpr(hyp), fromExpr(conc)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_impliesExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_iffExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->iffExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_iffExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_iteExpr(VC vc, Expr ifpart, Expr thenpart, Expr elsepart)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->iteExpr(fromExpr(ifpart), fromExpr(thenpart),
+			     fromExpr(elsepart)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_iteExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_substExpr(VC vc, Expr e,
+                             Expr* oldTerms, int numOldTerms,
+                             Expr* newTerms, int numNewTerms)
+{
+  try{
+  vector<CVC3::Expr> oldExprs, newExprs;
+  CVC3::Expr ex = fromExpr(e);
+  //CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  for (int i = 0; i < numOldTerms; ++i) {
+    oldExprs.push_back(fromExpr(oldTerms[i]));
+  }
+  for (int i = 0; i < numNewTerms; ++i) {
+    newExprs.push_back(fromExpr(newTerms[i]));
+  }
+  return toExpr(ex.substExpr(oldExprs, newExprs));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_substExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+
+extern "C" Op vc_createOp(VC vc, char* name, Type type)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toOp(vc, cvc->createOp(name, fromType(type)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_createOp",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Op vc_createOpDef(VC vc, char* name, Type type, Expr def)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toOp(vc, cvc->createOp(name, fromType(type), fromExpr(def)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_createOpDef",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Op vc_lookupOp(VC vc, char* name, Type* type)
+{
+  try{
+    CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+    CVC3::Type t;
+    Op op = toOp(vc, cvc->lookupOp(name, &t));
+    *type = toType(t);
+    return op;
+  } catch(CVC3::Exception ex){
+    signal_error("vc_lookupOp",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_funExpr1(VC vc, Op op, Expr child)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->funExpr(fromOp(op), fromExpr(child)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_funExpr1",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_funExpr2(VC vc, Op op, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->funExpr(fromOp(op), fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_funExpr2",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_funExpr3(VC vc, Op op, Expr child0, Expr child1,
+			    Expr child2)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->funExpr(fromOp(op), fromExpr(child0), fromExpr(child1),
+			     fromExpr(child2)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_funExpr3",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_funExprN(VC vc, Op op, Expr* children, int numChildren)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Expr> cvcExprs;
+  for (int i = 0; i < numChildren; ++i) {
+    cvcExprs.push_back(fromExpr(children[i]));
+  }
+  return toExpr(cvc->funExpr(fromOp(op), cvcExprs));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_funExprN",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_ratExpr(VC vc, int n, int d)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->ratExpr(n, d));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_ratExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_ratExprFromStr(VC vc, char* n, char* d, int base)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->ratExpr(n, d, base));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_ratExprFromStr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_ratExprFromStr1(VC vc, char* n, int base)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->ratExpr(n, base));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_ratExprFromStr1",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_uminusExpr(VC vc, Expr child)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->uminusExpr(fromExpr(child)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_uminusExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_plusExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->plusExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_plusExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+extern "C" Expr vc_plusExprN(VC vc, Expr* children, int numChildren)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Expr> cvcExprs;
+  for (int i = 0; i < numChildren; ++i) {
+    cvcExprs.push_back(fromExpr(children[i]));
+  }
+  return toExpr(cvc->plusExpr(cvcExprs));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_plusExprN",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_minusExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->minusExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_minusExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_multExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->multExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_multExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_powExpr(VC vc, Expr pow, Expr base)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->powExpr(fromExpr(pow), fromExpr(base)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_powExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_divideExpr(VC vc, Expr numerator, Expr denominator)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->divideExpr(fromExpr(numerator), fromExpr(denominator)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_divideExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_ltExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->ltExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_ltExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_leExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->leExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_leExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_gtExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->gtExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_gtExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_geExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->geExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_geExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_recordExpr1(VC vc, char* field, Expr expr)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->recordExpr(field, fromExpr(expr)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_recordExpr1",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_recordExpr2(VC vc, char* field0, Expr expr0,
+			              char* field1, Expr expr1)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->recordExpr(field0, fromExpr(expr0),
+				field1, fromExpr(expr1)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_recordExpr2",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_recordExpr3(VC vc, char* field0, Expr expr0,
+			              char* field1, Expr expr1,
+			              char* field2, Expr expr2)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->recordExpr(field0, fromExpr(expr0),
+				field1, fromExpr(expr1),
+				field2, fromExpr(expr2)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_recordExpr3",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_recordExprN(VC vc, char** fields, Expr* exprs,
+			       int numFields)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<std::string> cvcFields;
+  vector<CVC3::Expr> cvcExprs;
+  for (int i = 0; i < numFields; ++i) {
+    cvcFields.push_back(fields[i]);
+    cvcExprs.push_back(fromExpr(exprs[i]));
+  }
+  return toExpr(cvc->recordExpr(cvcFields, cvcExprs));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_recordExprN",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_recSelectExpr(VC vc, Expr record, char* field)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->recSelectExpr(fromExpr(record), field));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_recSelectExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_recUpdateExpr(VC vc, Expr record, char* field,
+				 Expr newValue)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->recUpdateExpr(fromExpr(record), field,
+				   fromExpr(newValue)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_recUpdateExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_readExpr(VC vc, Expr array, Expr index)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->readExpr(fromExpr(array), fromExpr(index)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_readExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_writeExpr(VC vc, Expr array, Expr index, Expr newValue)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->writeExpr(fromExpr(array), fromExpr(index),
+			       fromExpr(newValue)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_writeExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_bv32Type(VC vc)
+{
+  return vc_bvType(vc, 32);
+}
+
+
+extern "C" Expr vc_bvConstExprFromStr(VC vc, char* binary_repr)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->parseExpr(cvc->listExpr("_BVCONST", cvc->stringExpr(binary_repr))));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvConstExpr",error_int, ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvConstExprFromInt(VC vc, int n_bits, unsigned int value)
+{
+  char* s = val_to_binary_str(n_bits, value);
+  return vc_bvConstExprFromStr(vc, s);
+}
+
+
+extern "C" Expr vc_bv32ConstExprFromInt(VC vc, unsigned int value)
+{
+  return vc_bvConstExprFromInt(vc, 32, value);
+}
+
+
+extern "C" Expr vc_bvConstExprFromLL(VC vc, int n_bits, unsigned long value)
+{
+  char* s = val_to_binary_str(n_bits, value);
+  return vc_bvConstExprFromStr(vc, s);
+}
+
+
+extern "C" Expr vc_bvConcatExpr(VC vc, Expr left, Expr right) {
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->newConcatExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception &ex){
+    signal_error("vc_bvConcatExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvConcatExprN(VC vc, Expr* children, int numChildren) {
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Expr> cvcExprs;
+  for (int i = 0; i < numChildren; ++i) {
+    cvcExprs.push_back(fromExpr(children[i]));
+  }
+  return toExpr(cvc->newConcatExpr(cvcExprs));
+  }catch(CVC3::Exception &ex){
+    signal_error("vc_concatExprN",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvExtract(VC vc, Expr child, int high_bit_no, int low_bit_no)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->newBVExtractExpr(fromExpr(child), high_bit_no, low_bit_no));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvExtract",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvBoolExtract(VC vc, Expr child, int bit_no)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  CVC3::Expr lExpr = cvc->listExpr("_BOOLEXTRACT", fromExpr(child), cvc->ratExpr(bit_no));
+  return toExpr(cvc->parseExpr(lExpr));
+
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvBoolExtract",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvNotExpr(VC vc, Expr child)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->newBVNegExpr(fromExpr(child)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvNotExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvAndExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->newBVAndExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvAndExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvOrExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->newBVOrExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvOrExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvXorExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->newBVXorExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvXorExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvLtExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->newBVLTExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvLtExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvLeExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->newBVLEExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvLeExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvGtExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  CVC3::Expr lExpr = cvc->listExpr("_BVGT", fromExpr(left), fromExpr(right));
+  return toExpr(cvc->parseExpr(lExpr));
+
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvGtExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvGeExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  CVC3::Expr lExpr = cvc->listExpr("_BVGE", fromExpr(left), fromExpr(right));
+  return toExpr(cvc->parseExpr(lExpr));
+
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvGeExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvSLtExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->newBVSLTExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvSLtExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvSLeExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->newBVSLEExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvSLeExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvSGtExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  CVC3::Expr lExpr = cvc->listExpr("_BVSGT", fromExpr(left), fromExpr(right));
+  return toExpr(cvc->parseExpr(lExpr));
+
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvSGtExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvSGeExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  CVC3::Expr lExpr = cvc->listExpr("_BVSGE", fromExpr(left), fromExpr(right));
+  return toExpr(cvc->parseExpr(lExpr));
+
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvSGeExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvSignExtend(VC vc, Expr child, int nbits)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->newSXExpr(fromExpr(child), nbits));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvSignExtend",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvUMinusExpr(VC vc, Expr child)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->newBVUminusExpr(fromExpr(child)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvUMinusExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvPlusExpr(VC vc, int n_bits, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Expr> args;
+  args.push_back(fromExpr(left));
+  args.push_back(fromExpr(right));
+  return toExpr(cvc->newBVPlusExpr(n_bits, args));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvPlusExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bv32PlusExpr(VC vc, Expr left, Expr right)
+{
+  return vc_bvPlusExpr(vc, 32, left, right);
+}
+
+
+extern "C" Expr vc_bvMinusExpr(VC vc, int n_bits, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  CVC3::Expr lExpr = cvc->listExpr("_BVSUB", cvc->ratExpr(n_bits), fromExpr(left), fromExpr(right));
+   return toExpr(cvc->parseExpr(lExpr));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvMinusExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bv32MinusExpr(VC vc, Expr left, Expr right)
+{
+  return vc_bvMinusExpr(vc, 32, left, right);
+}
+
+
+extern "C" Expr vc_bvMultExpr(VC vc, int n_bits, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->newBVMultExpr(n_bits, fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvMultExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bv32MultExpr(VC vc, Expr left, Expr right)
+{
+  return vc_bvMultExpr(vc, 32, left, right);
+}
+
+
+extern "C" Expr vc_bvLeftShiftExpr(VC vc, int sh_amt, Expr child)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->newFixedLeftShiftExpr(fromExpr(child), sh_amt));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvLeftShiftExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvRightShiftExpr(VC vc, int sh_amt, Expr child)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->newFixedRightShiftExpr(fromExpr(child), sh_amt));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvRightShiftExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+extern "C" Expr vc_bvUDivExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->newBVUDivExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvUDivExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+extern "C" Expr vc_bvURemExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->newBVURemExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvURemExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+extern "C" Expr vc_bvSDivExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->newBVSDivExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvSDivExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+extern "C" Expr vc_bvSRemExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->newBVSRemExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvSRemExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+extern "C" Expr vc_bvSModExpr(VC vc, Expr left, Expr right)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->newBVSModExpr(fromExpr(left), fromExpr(right)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvSModExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+/* Same as vc_bvLeftShift only that the answer in 32 bits long */
+extern "C" Expr vc_bv32LeftShiftExpr(VC vc, int sh_amt, Expr child) {
+  return vc_bvExtract(vc, vc_bvLeftShiftExpr(vc, sh_amt, child), 31, 0);
+}
+
+
+/* Same as vc_bvRightShift only that the answer in 32 bits long */
+extern "C" Expr vc_bv32RightShiftExpr(VC vc, int sh_amt, Expr child) {
+  return vc_bvExtract(vc, vc_bvRightShiftExpr(vc, sh_amt, child), 31, 0);
+}
+
+extern "C" Expr vc_bvVar32LeftShiftExpr(VC vc, Expr sh_amt, Expr child) {
+  try{
+  Expr ifpart;
+  Expr thenpart;
+  Expr elsepart = vc_trueExpr(vc);
+  Expr ite = vc_trueExpr(vc);
+
+  for(int count=32; count >= 0; count--){
+    if(count != 32) {
+      ifpart = vc_eqExpr(vc, sh_amt,
+			 vc_bvConstExprFromInt(vc, 32, count));
+      thenpart = vc_bvExtract(vc,
+			      vc_bvLeftShiftExpr(vc, count, child),
+			      31, 0);
+
+      ite = vc_iteExpr(vc,ifpart,thenpart,elsepart);
+      elsepart = ite;
+    } else {
+      elsepart = vc_bvConstExprFromInt(vc,32, 0);
+    }
+  }
+  return ite;
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvVar32LeftShiftExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvVar32DivByPowOfTwoExpr(VC vc, Expr child, Expr rhs) {
+  try{
+  Expr ifpart;
+  Expr thenpart;
+  Expr elsepart = vc_trueExpr(vc);
+  Expr ite = vc_trueExpr(vc);
+
+  for(int count=32; count >= 0; count--){
+    if(count != 32) {
+      ifpart = vc_eqExpr(vc, rhs,
+			 vc_bvConstExprFromInt(vc, 32, 1 << count));
+      thenpart = vc_bvRightShiftExpr(vc, count, child);
+      ite = vc_iteExpr(vc,ifpart,thenpart,elsepart);
+      elsepart = ite;
+    } else {
+      elsepart = vc_bvConstExprFromInt(vc,32, 0);
+    }
+  }
+  return ite;
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvVar32DivByPowOfTwoExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_bvVar32RightShiftExpr(VC vc, Expr sh_amt, Expr child)
+{
+  try{
+  Expr ifpart;
+  Expr thenpart;
+  Expr elsepart = vc_trueExpr(vc);
+  Expr ite = vc_trueExpr(vc);
+
+  for(int count=32; count >= 0; count--){
+    if(count != 32) {
+      ifpart = vc_eqExpr(vc, sh_amt,
+			 vc_bvConstExprFromInt(vc, 32, count));
+      thenpart = vc_bvRightShiftExpr(vc, count, child);
+      ite = vc_iteExpr(vc,ifpart,thenpart,elsepart);
+      elsepart = ite;
+    } else {
+      elsepart = vc_bvConstExprFromInt(vc,32, 0);
+    }
+  }
+  return ite;
+  }catch(CVC3::Exception ex){
+    signal_error("vc_bvVar32LeftShiftExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+/* C pointer support: C interface to support C memory arrays in CVC3 */
+extern "C" Expr vc_bvCreateMemoryArray(VC vc, char * arrayName) {
+  Type bv8  = vc_bvType(vc,8);
+  Type bv32 = vc_bvType(vc,32);
+
+  Type malloced_mem0 = vc_arrayType(vc,bv32,bv8);
+  return vc_varExpr(vc, arrayName, malloced_mem0);
+}
+
+/*OLD VERSIONS C pointer theory functions. DO NOT DELETE */
+
+// //Warning: Type checking needed to ensure that the function is run
+// //correctly is not being done. it is assumed that the function
+// //recieves inputs of the correct types
+// extern "C" Expr vc_bvReadMemoryArray(VC vc,
+// 				     Expr array,
+// 				     Expr byteIndex, int newBitsPerElem) {
+//   DebugAssert(newBitsPerElem%8 == 0,
+// 	      "new bits per element must be a multiple of 8\n");
+
+//   Expr numerator = vc_bvMultExpr(vc,32,
+// 				 vc_bvConstExprFromInt(vc,32,newBitsPerElem),
+// 				 byteIndex);
+//   int numOfBytes = newBitsPerElem/8;
+//   DebugAssert(numOfBytes > 0,
+// 	      "numOfBytes must be greater than 0");
+
+//   if(numOfBytes == 1)
+//     return vc_readExpr(vc,array,numerator);
+//   else {
+//     int count = 1;
+//     Expr a = vc_readExpr(vc,array,numerator);
+//     while(--numOfBytes > 0) {
+//       Expr b = vc_readExpr(vc,array,
+// 			   vc_bvPlusExpr(vc,32,numerator,vc_bvConstExprFromInt(vc,32,count)));
+//       a = vc_bvConcatExpr(vc,a,b);
+//       count++;
+//     }
+//     return a;
+//   }
+// }
+
+// extern "C" Expr vc_bvWriteToMemoryArray(VC vc,
+// 					Expr array, Expr byteIndex,
+// 					Expr element, int newBitsPerElem) {
+//   DebugAssert(newBitsPerElem%8 == 0,
+// 	      "new bits per element must be a multiple of 8\n");
+
+//   Expr numerator = vc_bvMultExpr(vc,32,
+// 				 vc_bvConstExprFromInt(vc,32,newBitsPerElem),
+// 				 byteIndex);
+//   int numOfBytes = newBitsPerElem/8;
+//   DebugAssert(numOfBytes > 0,
+// 	      "numOfBytes must be greater than 0");
+
+//   if(numOfBytes == 1)
+//     return vc_writeExpr(vc,array,numerator, element);
+//   else {
+//     int count = 1;
+//     int hi = newBitsPerElem - 1;
+//     int low = newBitsPerElem - 8;
+//     Expr c = vc_bvExtract(vc,element,hi,low);
+//     Expr newarray = vc_writeExpr(vc,array,numerator,c);
+//     while(--numOfBytes > 0) {
+//       hi = low-1;
+//       low = low-8;
+//       c = vc_bvExtract(vc,element,hi,low);
+//       newarray = vc_writeExpr(vc,newarray,numerator,c);
+//       count++;
+//     }
+//     return newarray;
+//   }
+// }
+
+
+extern "C" Expr vc_bvReadMemoryArray(VC vc,
+				     Expr array,
+				     Expr byteIndex, int numOfBytes) {
+
+  DebugAssert(0 < numOfBytes,
+	      "number of Bytes must be greater than 0\n");
+
+  if(numOfBytes == 1)
+    return vc_readExpr(vc,array,byteIndex);
+  else {
+    int count = 1;
+    Expr a = vc_readExpr(vc,array,byteIndex);
+    while(--numOfBytes > 0) {
+      Expr b = vc_readExpr(vc,array,
+			   /*vc_simplify(vc, */
+				       vc_bvPlusExpr(vc, 32,
+						     byteIndex,
+						     vc_bvConstExprFromInt(vc,32,count)))/*)*/;
+      a = vc_bvConcatExpr(vc,b,a);
+      count++;
+    }
+    return a;
+  }
+}
+
+
+extern "C" Expr vc_bvWriteToMemoryArray(VC vc,
+					Expr array, Expr byteIndex,
+					Expr element, int numOfBytes) {
+  DebugAssert(numOfBytes > 0,
+	      "numOfBytes must be greater than 0");
+
+  //int newBitsPerElem = numOfBytes*8;
+  if(numOfBytes == 1)
+    return vc_writeExpr(vc, array, byteIndex, element);
+  else {
+    int count = 1;
+    //int hi = newBitsPerElem - 1;
+    //int low = newBitsPerElem - 8;
+    int low_elem = 0;
+    int hi_elem = low_elem + 7;
+    Expr c = vc_bvExtract(vc, element, hi_elem, low_elem);
+    Expr newarray = vc_writeExpr(vc, array, byteIndex, c);
+    while(--numOfBytes > 0) {
+      //hi = low-1;
+      //low = low-8;
+
+      low_elem = low_elem + 8;
+      hi_elem = low_elem + 7;
+
+      c = vc_bvExtract(vc, element, hi_elem, low_elem);
+      newarray =
+	vc_writeExpr(vc, newarray,
+		     vc_bvPlusExpr(vc, 32, byteIndex, vc_bvConstExprFromInt(vc,32,count)),
+		     c);
+      count++;
+    }
+    return newarray;
+  }
+}
+
+extern "C" Expr vc_tupleExprN(VC vc, Expr* children, int numChildren)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Expr> cvcExprs;
+  for (int i = 0; i < numChildren; ++i) {
+    cvcExprs.push_back(fromExpr(children[i]));
+  }
+  return toExpr(cvc->tupleExpr(cvcExprs));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_tupleExprN",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_tupleSelectExpr(VC vc, Expr tuple, int index)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->tupleSelectExpr(fromExpr(tuple), index));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_tupleSelectExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_tupleUpdateExpr(VC vc, Expr tuple, int index, Expr newValue)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->tupleUpdateExpr(fromExpr(tuple), index,
+                                     fromExpr(newValue)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_tupleUpdateExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_datatypeConsExpr(VC vc, char* constructor,
+                                    int numArgs, Expr* args)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Expr> cvcArgs;
+  for (int i = 0; i < numArgs; ++i) {
+    cvcArgs.push_back(fromExpr(args[i]));
+  }
+  return toExpr(cvc->datatypeConsExpr(constructor, cvcArgs));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_datatypeConsExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_datatypeSelExpr(VC vc, char* selector, Expr arg)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->datatypeSelExpr(selector, fromExpr(arg)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_datatypeSelExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_datatypeTestExpr(VC vc, char* constructor, Expr arg)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->datatypeTestExpr(constructor, fromExpr(arg)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_datatypeTestExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_boundVarExpr(VC vc, char* name, char *uid, Type type)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->boundVarExpr(name, uid, fromType(type)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_getEM",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Type vc_forallExpr(VC vc, Expr* Bvars, int numBvars, Expr f)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Expr> cvcBvars;
+  for (int i = 0; i < numBvars; ++i) {
+    cvcBvars.push_back(fromExpr(Bvars[i]));
+  }
+  return toExpr(cvc->forallExpr(cvcBvars,fromExpr(f)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_forallExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+// triggers must be an array of listExpr
+// each listExpr represent a trigger
+// if a listExpr contains more than one Expr, then it is a multi-trigger
+extern "C" void vc_setTriggers(VC vc, Expr e, int numTrigs, Expr* triggers)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<vector<CVC3::Expr> >cvcTriggers;
+  for (int i = 0; i < numTrigs; ++i) {
+    vector<CVC3::Expr> curTrig;
+    CVC3::Expr trigExpr = fromExpr(triggers[i]);
+    if(trigExpr.isRawList()){
+      for(int j = 0 ; j < trigExpr.arity(); j++){
+       curTrig.push_back(trigExpr[j]);
+      }
+    }
+    else{
+      curTrig.push_back(trigExpr);
+    }
+    cvcTriggers.push_back(curTrig);
+  } 
+  
+  cvc->setTriggers(fromExpr(e), cvcTriggers);
+  }catch(CVC3::Exception ex){
+    signal_error("vc_setTriggers",error_int,ex);
+  }
+}
+
+
+extern "C" Expr vc_existsExpr(VC vc, Expr* Bvars, int numBvars, Expr f)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Expr> cvcBvars;
+  for (int i = 0; i < numBvars; ++i) {
+    cvcBvars.push_back(fromExpr(Bvars[i]));
+  }
+  return toExpr(cvc->existsExpr(cvcBvars,fromExpr(f)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_existsExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Op vc_lambdaExpr(VC vc, int numVars, Expr* vars, Expr body)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Expr> cvcVars;
+  for (int i = 0; i < numVars; ++i) {
+    cvcVars.push_back(fromExpr(vars[i]));
+  }
+  return toOp(vc, cvc->lambdaExpr(cvcVars, fromExpr(body)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_lambdaExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Context-related methods                                                 //
+/////////////////////////////////////////////////////////////////////////////
+
+
+extern "C" void vc_setResourceLimit(VC vc, unsigned limit)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  cvc->setResourceLimit(limit);
+  }catch(CVC3::Exception ex){
+    signal_error("vc_setResourceLimit",error_int,ex);
+  }
+}
+
+
+extern "C" void vc_assertFormula(VC vc, Expr e)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  cvc->assertFormula(fromExpr(e));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_assertFormula",error_int,ex);
+  }
+}
+
+
+extern "C" void vc_registerAtom(VC vc, Expr e)
+{
+  try{
+    CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+    cvc->registerAtom(fromExpr(e));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_registerAtom",error_int,ex);
+  }
+}
+
+
+extern "C" Expr vc_getImpliedLiteral(VC vc)
+{
+  try {
+    CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+    return toExpr(cvc->getImpliedLiteral());
+  } catch(CVC3::Exception ex){
+    signal_error("vc_getImpliedLiteral",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_simplify(VC vc, Expr e)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->simplify(fromExpr(e)));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_simplify",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" int vc_query(VC vc, Expr e)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return (int)cvc->query(fromExpr(e));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_query",error_int,ex);
+    return error_int;
+  }
+}
+
+
+extern "C" int vc_checkContinue(VC vc)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return (int)cvc->checkContinue();
+  }catch(CVC3::Exception ex){
+    signal_error("vc_checkContinue",error_int,ex);
+    return error_int;
+  }
+}
+
+
+extern "C" int vc_restart(VC vc, Expr e)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return (int)cvc->restart(fromExpr(e));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_restart",error_int,ex);
+    return error_int;
+  }
+}
+
+
+extern "C" void vc_returnFromCheck(VC vc)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  cvc->returnFromCheck();
+  }catch(CVC3::Exception ex){
+    signal_error("vc_returnFromCheck",error_int,ex);
+  }
+}
+
+
+extern "C" Expr* vc_getUserAssumptions(VC vc, int* size)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Expr> cvcAssumptions;
+  cvc->getUserAssumptions(cvcAssumptions);
+  Expr* assumptions = new Expr[cvcAssumptions.size()];
+  unsigned n = 0;
+  for (; n < cvcAssumptions.size(); ++n) {
+    assumptions[n] = toExpr(cvcAssumptions[n]);
+  }
+  *size = int(n);
+  return assumptions;
+  }catch(CVC3::Exception ex){
+    signal_error("vc_getUserAssumptions",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr* vc_getInternalAssumptions(VC vc, int* size)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Expr> cvcAssumptions;
+  cvc->getInternalAssumptions(cvcAssumptions);
+  Expr* assumptions = new Expr[cvcAssumptions.size()];
+  unsigned n = 0;
+  for (; n < cvcAssumptions.size(); ++n) {
+    assumptions[n] = toExpr(cvcAssumptions[n]);
+  }
+  *size = int(n);
+  return assumptions;
+  }catch(CVC3::Exception ex){
+    signal_error("vc_getInternalAssumptions",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr* vc_getAssumptions(VC vc, int* size)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Expr> cvcAssumptions;
+  cvc->getAssumptions(cvcAssumptions);
+  Expr* assumptions = new Expr[cvcAssumptions.size()];
+  unsigned n = 0;
+  for (; n < cvcAssumptions.size(); ++n) {
+    assumptions[n] = toExpr(cvcAssumptions[n]);
+  }
+  *size = int(n);
+  return assumptions;
+  }catch(CVC3::Exception ex){
+    signal_error("vc_getAssumptions",error_int,ex);
+    return NULL;
+  }
+}
+
+//yeting, this is for proof translation,
+extern "C" Expr vc_getProofAssumptions(VC vc)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Expr> cvcAssumptions;
+  cvc->getUserAssumptions(cvcAssumptions);
+  return toExpr(cvc->listExpr(cvcAssumptions));
+  }catch(CVC3::Exception ex){
+    signal_error("vc_getProofAssumptions",error_int,ex);
+    return NULL;
+  }
+}
+
+//yeting, this is for proof translation
+extern "C" Expr vc_getProofQuery(VC vc)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->getProofQuery());
+  }catch(CVC3::Exception ex){
+    signal_error("vc_getProofQuery",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr* vc_getAssumptionsUsed(VC vc, int* size)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Expr> cvcAssumptions;
+  cvc->getAssumptionsUsed(cvcAssumptions);
+  Expr* assumptions = new Expr[cvcAssumptions.size()];
+  unsigned n = 0;
+  for (; n < cvcAssumptions.size(); ++n) {
+    assumptions[n] = toExpr(cvcAssumptions[n]);
+  }
+  *size = int(n);
+  return assumptions;
+  }catch(CVC3::Exception ex){
+    signal_error("vc_getAssumptionsUsed",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr* vc_getCounterExample(VC vc, int* size)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Expr> cvcAssumptions;
+  cvc->getCounterExample(cvcAssumptions);
+  Expr* assumptions = new Expr[cvcAssumptions.size()];
+  unsigned n = 0;
+  for (; n < cvcAssumptions.size(); ++n) {
+    assumptions[n] = toExpr(cvcAssumptions[n]);
+  }
+  *size = int(n);
+  return assumptions;
+  }catch(CVC3::Exception ex){
+    signal_error("vc_getCounterExample",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr* vc_getConcreteModel(VC vc, int* size)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  CVC3::ExprMap<CVC3::Expr> assertions;
+  cvc->getConcreteModel(assertions);
+  Expr* locAssumptions = new Expr[assertions.size()];
+  int n = 0;
+  CVC3::ExprMap<CVC3::Expr>::iterator it = assertions.begin(), end = assertions.end();
+  for (; it != end; it++) {
+    locAssumptions[n] = toExpr(cvc->eqExpr(it->first, it->second));
+    n++;
+  }
+  *size = n;
+  return locAssumptions;
+  }catch(CVC3::Exception ex){
+    signal_error("vc_getConcreteModel",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" int vc_inconsistent(VC vc, Expr** assumptions, int* size)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Expr> assertions;
+  bool ret = cvc->inconsistent(assertions);
+  Expr* locAssumptions = new Expr[assertions.size()];
+  for (unsigned i = 0; i < assertions.size(); ++i) {
+    locAssumptions[i] = toExpr(assertions[i]);
+  }
+  *assumptions = locAssumptions;
+  *size = assertions.size();
+  return (int)ret;
+  }catch(CVC3::Exception ex){
+    signal_error("vc_inconsistent",error_int,ex);
+    return 0;
+  }
+}
+
+
+extern "C" char* vc_incomplete(VC vc)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<string> reasons;
+  bool ret = cvc->incomplete(reasons);
+  if (!ret) return NULL;
+  string allReasons = "";
+  for (unsigned i = 0; i < reasons.size(); ++i) {
+    allReasons += '\n';
+    allReasons += reasons[i];
+  }
+  char* retStr = new char[allReasons.length()+1];
+  allReasons.copy(retStr, allReasons.length());
+  retStr[allReasons.length()] = '\0';
+  return retStr;
+  }catch(CVC3::Exception ex){
+    signal_error("vc_incomplete",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_getProof(VC vc)
+{
+  signal_error("vc_getProofTCC",error_int,CVC3::Exception("Unimplemented"));
+  return NULL;
+}
+
+
+extern "C" Expr vc_getProofOfFile(VC vc, char* fileName){
+  signal_error("vc_getProofTCC",error_int,CVC3::Exception("Unimplemented"));
+  return NULL;
+}
+
+
+extern "C" Expr vc_getTCC(VC vc)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->getTCC());
+  }catch(CVC3::Exception ex){
+    signal_error("vc_getTCC",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr* vc_getAssumptionsTCC(VC vc, int* size)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  vector<CVC3::Expr> cvcAssumptions;
+  cvc->getAssumptionsTCC(cvcAssumptions);
+  Expr* assumptions = new Expr[cvcAssumptions.size()];
+  unsigned n = 0;
+  for (; n < cvcAssumptions.size(); ++n) {
+    assumptions[n] = toExpr(cvcAssumptions[n]);
+  }
+  *size = int(n);
+  return assumptions;
+  }catch(CVC3::Exception ex){
+    signal_error("vc_getAssumptionsTCC",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_getProofTCC(VC vc)
+{
+  signal_error("vc_getProofTCC",error_int,CVC3::Exception("Unimplemented"));
+  return NULL;
+}
+
+
+extern "C" Expr vc_getClosure(VC vc)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return toExpr(cvc->getClosure());
+  }catch(CVC3::Exception ex){
+    signal_error("vc_getClosure",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_getProofClosure(VC vc)
+{
+  signal_error("vc_getProofTCC",error_int,CVC3::Exception("Unimplemented"));
+  return NULL;
+}
+
+
+extern "C" int vc_stackLevel(VC vc)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return cvc->stackLevel();
+  }catch(CVC3::Exception ex){
+    signal_error("vc_stackLevel",error_int,ex);
+    return 0;
+  }
+}
+
+
+extern "C" void vc_push(VC vc)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  cvc->push();
+  }catch(CVC3::Exception ex){
+    signal_error("vc_push",error_int,ex);
+  }
+}
+
+
+extern "C" void vc_pop(VC vc)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  cvc->pop();
+  }catch(CVC3::Exception ex){
+    signal_error("vc_pop",error_int,ex);
+  }
+}
+
+
+extern "C" void vc_popto(VC vc, int stackLevel)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  cvc->popto(stackLevel);
+  }catch(CVC3::Exception ex){
+    signal_error("vc_popto",error_int,ex);
+  }
+}
+
+
+extern "C" Context vc_getCurrentContext(VC vc)
+{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  return (Context)cvc->getCurrentContext();
+}
+
+
+// -------------------------------------------------------------------------
+//  Util
+// -------------------------------------------------------------------------
+
+
+extern "C" int vc_compare_exprs(Expr e1,Expr e2){
+  try{
+    return (compare(fromExpr(e1),fromExpr(e2)));
+  } catch (CVC3::Exception ex){
+    signal_error("vc_compare_exprs",error_int,ex);
+    return error_int;
+  }
+}
+
+
+extern "C" const char* vc_exprString(Expr e){
+  try{
+    tmpString =(fromExpr(e)).toString();
+    return tmpString.c_str();
+  } catch (CVC3::Exception ex){
+    signal_error("vc_exprString",error_int,ex);
+    return "ERROR";
+  }
+}
+
+
+extern "C" const char* vc_typeString(Type t){
+  try{
+    tmpString = (fromExpr(t)).toString();
+    return tmpString.c_str();
+  } catch (CVC3::Exception ex){
+    signal_error("vc_typeString",error_int,ex);
+    return "ERROR";
+  }
+}
+
+
+extern "C" bool vc_isClosure(Expr e){
+  signal_error("vc_isClosure",error_int,CVC3::Exception("Unimplemented"));
+  return false;
+}
+
+
+extern "C" bool vc_isQuantifier(Expr e){
+  signal_error("vc_isQuantifier",error_int,CVC3::Exception("Unimplemented"));
+  return false;
+}
+
+
+extern "C" bool vc_isLambda(Expr e){
+  signal_error("vc_isLambda",error_int,CVC3::Exception("Unimplemented"));
+  return false;
+}
+
+
+extern "C" bool vc_isVar(Expr e){
+  try{
+    return (fromExpr(e)).isVar();
+  } catch (CVC3::Exception ex){
+    signal_error("vc_isVar",error_int,ex);
+    return false;
+  }
+}
+
+
+extern "C" int vc_arity(Expr e){
+  try{
+    return (fromExpr(e)).arity();
+  } catch (CVC3::Exception ex){
+    signal_error("vc_arity",error_int,ex);
+    return error_int;
+  }
+}
+
+
+extern "C" int vc_getKind(Expr e){
+  try{
+    return (fromExpr(e)).getKind();
+  } catch (CVC3::Exception ex){
+    signal_error("vc_getKind",error_int,ex);
+    return error_int;
+  }
+}
+
+
+extern "C" Expr vc_getChild(Expr e, int i){
+  try{
+    return toExpr(((fromExpr(e))[i]));
+  } catch (CVC3::Exception ex){
+    signal_error("vc_getChild",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" int vc_getNumVars(Expr e){
+  signal_error("vc_getNumVars",error_int,CVC3::Exception("Unimplemented"));
+  return 0;
+}
+
+
+extern "C" Expr vc_getVar(Expr e, int i){
+  signal_error("vc_getVar",error_int,CVC3::Exception("Unimplemented"));
+  return 0;
+}
+
+
+extern "C" Expr vc_getBody(Expr e){
+  signal_error("vc_getBody",error_int,CVC3::Exception("Unimplemented"));
+  return 0;
+}
+
+extern "C" Expr vc_getExistential(Expr e){
+  signal_error("vc_getExistential",error_int,CVC3::Exception("Unimplemented"));
+  return 0;
+}
+
+
+extern "C" Expr vc_getFun(VC vc, Expr e)
+{
+  try{
+    return toExpr((fromExpr(e)).getOp().getExpr());
+  }catch(CVC3::Exception ex){
+    signal_error("vc_getFun",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" Expr vc_toExpr(Type t){
+  try{
+    return toExpr(fromExpr(t));
+  } catch (CVC3::Exception ex){
+    signal_error("vc_toExpr",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" const char* vc_getKindString(VC vc,int kind)
+{
+  try{
+  tmpString = CVC4::kind::kindToString(CVC4::Kind(kind));
+  return tmpString.c_str();
+  } catch (CVC3::Exception ex){
+    signal_error("vc_getKindString",error_int,ex);
+    return NULL;
+  }
+}
+
+
+extern "C" int vc_getKindInt(VC vc,char* kind_name)
+{
+  signal_error("vc_getKindInt",error_int,CVC3::Exception("Unimplemented"));
+  return 0;
+}
+
+
+extern "C" int vc_getInt(Expr e){
+  try{
+    CVC3::Expr ex = fromExpr(e);
+    return int(ex.getConst<CVC3::Rational>().getNumerator().getLong());
+  } catch (CVC3::Exception ex){
+    signal_error("vc_getInt",error_int,ex);
+    return error_int;
+  }
+}
+
+
+extern "C" int vc_getBVInt(VC vc, Expr e){
+  try{
+    CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+    return int(cvc->computeBVConst(fromExpr(e)).getNumerator().getLong());
+  } catch (CVC3::Exception ex){
+    signal_error("vc_getBVInt",error_int,ex);
+    return 0;
+  }
+}
+
+
+extern "C" unsigned int vc_getBVUnsigned(VC vc, Expr e){
+  try{
+    CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+    return unsigned(cvc->computeBVConst(fromExpr(e)).getNumerator().getUnsignedLong());
+  } catch (CVC3::Exception ex){
+    signal_error("vc_getBVUnsigned",error_int,ex);
+    return 0;
+  }
+}
+
+
+extern "C" void vc_print_statistics(VC vc)
+{
+  try{
+  CVC3::ValidityChecker* cvc = (CVC3::ValidityChecker*) vc;
+  cvc->printStatistics();
+  } catch (CVC3::Exception ex){
+    signal_error("vc_print_statistics",error_int,ex);
+  }
+}
diff --git a/src/bindings/compat/c/c_interface.h b/src/bindings/compat/c/c_interface.h
new file mode 100644
index 0000000..379097c
--- /dev/null
+++ b/src/bindings/compat/c/c_interface.h
@@ -0,0 +1,702 @@
+/*****************************************************************************/
+/*!
+ * \file c_interface.h
+ *
+ * Authors: Clark Barrett
+ *          Cristian Cadar
+ *
+ * Created: Thu Jun  5 10:34:02 2003
+ *
+ * <hr>
+ *
+ * License to use, copy, modify, sell and/or distribute this software
+ * and its documentation for any purpose is hereby granted without
+ * royalty, subject to the terms and conditions defined in the \ref
+ * COPYING file provided with this distribution.
+ *
+ * <hr>
+ *
+ */
+/*****************************************************************************/
+
+#include "cvc4_public.h"
+
+#ifndef _cvc3__include__c_interface_h_
+#define _cvc3__include__c_interface_h_
+
+#include "bindings/compat/c/c_interface_defs.h"
+
+//! Flags can be NULL
+VC vc_createValidityChecker(Flags flags);
+//! Create validity checker's flags
+Flags vc_createFlags();
+//! Destroy the validity checker.
+/*! Must be called after all other objects are deleted, except the flags */
+void vc_destroyValidityChecker(VC vc);
+//! Delete the flags
+void vc_deleteFlags(Flags flags);
+//! Delete type
+void vc_deleteType(Type t);
+//! Delete expression
+void vc_deleteExpr(Expr e);
+//! Delete operator
+void vc_deleteOp(Op op);
+//! Delete vector of expressions
+void vc_deleteVector(Expr* e);
+//! Delete vector of types
+void vc_deleteTypeVector(Type* e);
+
+// Setting the flags
+//! Set a boolean flag to true or false
+void vc_setBoolFlag(Flags flags, char* name, int val);
+//! Set an integer flag to the given value
+void vc_setIntFlag(Flags flags, char* name, int val);
+//! Set a string flag to the given value
+void vc_setStringFlag(Flags flags, char* name, char* val);
+//! Add a (string, bool) pair to the multy-string flag
+void vc_setStrSeqFlag(Flags flags, char* name, char* str, int val);
+
+// Basic types
+Type vc_boolType(VC vc);
+Type vc_realType(VC vc);
+Type vc_intType(VC vc);
+
+//! Create a subrange type
+Type vc_subRangeType(VC vc, int lowerEnd, int upperEnd);
+
+//! Creates a subtype defined by the given predicate
+/*!
+ * \param vc the validity checker
+ *
+ * \param pred is a predicate taking one argument of type T and returning
+ * Boolean.  The resulting type is a subtype of T whose elements x are those
+ * satisfying the predicate pred(x).
+ *
+ * \param witness is an expression of type T for which pred holds (if a Null
+ *  expression is passed as a witness, cvc will try to prove \f$\exists x. pred(x))\f$.
+ *  if the witness check fails, a TypecheckException is thrown.
+ */
+Type vc_subtypeType(VC vc, Expr pred, Expr witness);
+
+// Tuple types
+Type vc_tupleType2(VC vc, Type type0, Type type1);
+Type vc_tupleType3(VC vc, Type type0, Type type1, Type type2);
+//! Create a tuple type.  'types' is an array of types of length numTypes.
+Type vc_tupleTypeN(VC vc, Type* types, int numTypes);
+
+// Record types
+Type vc_recordType1(VC vc, char* field, Type type);
+Type vc_recordType2(VC vc, char* field0, Type type0,
+                           char* field1, Type type1);
+Type vc_recordType3(VC vc, char* field0, Type type0,
+	                   char* field1, Type type1,
+	                   char* field2, Type type2);
+//! Create a record type.
+/*! 'fields' and 'types' are arrays of length numFields. */
+Type vc_recordTypeN(VC vc, char** fields, Type* types, int numFields);
+
+// Datatypes
+
+//! Single datatype, single constructor
+/*! The types are either type exressions (obtained from a type with
+ *  getExpr()) or string expressions containing the name of (one of) the
+ *  dataType(s) being defined. */
+Type vc_dataType1(VC vc, char* name, char* constructor, int arity,
+                  char** selectors, Expr* types);
+
+//! Single datatype, multiple constructors
+/*! The types are either type exressions (obtained from a type with
+ *  getExpr()) or string expressions containing the name of (one of) the
+ *  dataType(s) being defined. */
+Type vc_dataTypeN(VC vc, char* name, int numCons, char** constructors,
+                  int* arities, char*** selectors, Expr** types);
+
+//! Multiple datatypes
+/*! The types are either type exressions (obtained from a type with
+ *  getExpr()) or string expressions containing the name of (one of) the
+ *  dataType(s) being defined.
+ *  Returns an array of size numTypes which must be freed by calling
+ *  vc_deleteTypeVector.
+ */
+Type* vc_dataTypeMN(VC vc, int numTypes, char** names,
+                    int* numCons, char*** constructors,
+                    int** arities, char**** selectors,
+                    Expr*** types);
+
+//! Create an array type
+Type vc_arrayType(VC vc, Type typeIndex, Type typeData);
+
+//! Create a bitvector type of length n
+Type vc_bvType(VC vc, int n);
+
+//! Create a function type with 1 argument
+Type vc_funType1(VC vc, Type a1, Type typeRan);
+//! Create a function type with 2 arguments
+Type vc_funType2(VC vc, Type a1, Type a2, Type typeRan);
+//! Create a function type with 3 arguments
+Type vc_funType3(VC vc, Type a1, Type a2, Type a3, Type typeRan);
+//! Create a function type with N arguments
+Type vc_funTypeN(VC vc, Type* args, Type typeRan, int numArgs);
+
+// User-defined types
+
+//! Create an uninterpreted named type
+Type vc_createType(VC vc, char* typeName);
+//! Lookup a user-defined (uninterpreted) type by name
+Type vc_lookupType(VC vc, char* typeName);
+
+/////////////////////////////////////////////////////////////////////////////
+// Expr manipulation methods                                               //
+/////////////////////////////////////////////////////////////////////////////
+
+//! Return the ExprManager
+ExprManager* vc_getEM(VC vc);
+
+//! Create a variable with a given name and type
+/*! The type cannot be a function type. */
+Expr vc_varExpr(VC vc, char* name, Type type);
+
+//! Create a variable with a given name, type, and value
+Expr vc_varExprDef(VC vc, char* name, Type type,
+                   Expr def);
+
+//! Get the expression and type associated with a name.
+/*!  If there is no such Expr, a NULL Expr is returned. */
+Expr vc_lookupVar(VC vc, char* name, Type* type);
+
+//! Get the type of the Expr.
+Type vc_getType(VC vc, Expr e);
+
+//! Get the largest supertype of the Expr.
+Type vc_getBaseType(VC vc, Expr e);
+
+//! Get the largest supertype of the Type.
+Type vc_getBaseTypeOfType(VC vc, Type t);
+
+//! Get the subtype predicate
+Expr vc_getTypePred(VC vc, Type t, Expr e);
+
+//! Create a string Expr
+Expr vc_stringExpr(VC vc, char* str);
+
+//! Create an ID Expr
+Expr vc_idExpr(VC vc, char* name);
+
+//! Create a list Expr
+/*! Intermediate representation for DP-specific expressions.
+ *  Normally, the first element of the list is a string Expr
+ *  representing an operator, and the rest of the list are the
+ *  arguments.  For example,
+ *
+ *  kids.push_back(vc->stringExpr("PLUS"));
+ *  kids.push_back(x); // x and y are previously created Exprs
+ *  kids.push_back(y);
+ *  Expr lst = vc->listExpr(kids);
+ *
+ * Or, alternatively (using its overloaded version):
+ *
+ * Expr lst = vc->listExpr("PLUS", x, y);
+ *
+ * or
+ *
+ * vector<Expr> summands;
+ * summands.push_back(x); summands.push_back(y); ...
+ * Expr lst = vc->listExpr("PLUS", summands);
+ */
+Expr vc_listExpr(VC vc, int numKids, Expr* kids);
+
+// Expr I/O
+//! Expr vc_parseExpr(VC vc, char* s);
+void vc_printExpr(VC vc, Expr e);
+//! Print e into a char*
+/*! Note that the ownership of the char* is given to the caller
+  which should free the memory when it is done with it.  This
+  can be done by calling vc_deleteString. */
+char* vc_printExprString(VC vc, Expr e);
+//! Delete char* returned by previous function
+void vc_deleteString(char* str);
+//! Print 'e' into an open file descriptor
+void vc_printExprFile(VC vc, Expr e, int fd);
+
+//! Import the Expr from another instance of VC
+/*! When expressions need to be passed among several instances of
+ *  VC, they need to be explicitly imported into the
+ *  corresponding instance using this method.  The return result is
+ *  an identical expression that belongs to the current instance of
+ *  VC, and can be safely used as part of more complex
+ *  expressions from the same instance.
+ \param vc is the instance to be imported into
+ \param e is the expression created using a different (not vc) instance
+ */
+Expr vc_importExpr(VC vc, Expr e);
+
+//! Import the Type from another instance of VC
+/*! \sa vc_importExpr() */
+Type vc_importType(Type t);
+
+//! Create an equality expression.  The two children must have the same type.
+Expr vc_eqExpr(VC vc, Expr child0, Expr child1);
+
+//! Create an all distinct expression. All children must ahve the same type.
+Expr vc_distinctExpr(VC vc, Expr* children, int numChildren);
+
+// Boolean expressions
+
+// The following functions create Boolean expressions.  The children provided
+// as arguments must be of type Boolean.
+Expr vc_trueExpr(VC vc);
+Expr vc_falseExpr(VC vc);
+Expr vc_notExpr(VC vc, Expr child);
+Expr vc_andExpr(VC vc, Expr left, Expr right);
+Expr vc_andExprN(VC vc, Expr* children, int numChildren);
+Expr vc_orExpr(VC vc, Expr left, Expr right);
+Expr vc_orExprN(VC vc, Expr* children, int numChildren);
+Expr vc_impliesExpr(VC vc, Expr hyp, Expr conc);
+Expr vc_iffExpr(VC vc, Expr left, Expr right);
+Expr vc_iteExpr(VC vc, Expr ifpart, Expr thenpart, Expr elsepart);
+
+// Substitution
+
+// Substitutes oldTerms for newTerms in e.
+// This function doesn't actually exist in ValidityChecker interface,
+// but it does in Expr, and its functionality is needed in the C interface.
+// For consistency, it is represented here as if it were in ValidityChecker.
+Expr vc_substExpr(VC vc, Expr e,
+                  Expr* oldTerms, int numOldTerms,
+                  Expr* newTerms, int numNewTerms);
+
+// User-defined (uninterpreted) functions.
+
+//! Create an operator from a function with a given name and type.
+/*! Name is given as an ID Expr, and the type must be a function type. */
+Op vc_createOp(VC vc, char* name, Type type);
+
+//! Create a named user-defined function with a given type
+Op vc_createOpDef(VC vc, char* name, Type type, Expr def);
+
+//! Lookup an operator by name.
+/*! Returns the operator and the type if the operator exists.
+ * Returns NULL otherwise
+ */
+Op vc_lookupOp(VC vc, char* name, Type* type);
+
+//! Create expressions with a user-defined operator.
+/*!  op must have a function type. */
+Expr vc_funExpr1(VC vc, Op op, Expr child);
+Expr vc_funExpr2(VC vc, Op op, Expr left, Expr right);
+Expr vc_funExpr3(VC vc, Op op, Expr child0, Expr child1, Expr child2);
+Expr vc_funExprN(VC vc, Op op, Expr* children, int numChildren);
+
+// Arithmetic
+
+//! Create a rational number with numerator n and denominator d.
+/*! d cannot be 0. */
+Expr vc_ratExpr(VC vc, int n, int d);
+
+//! Create a rational number n/d; n and d are given as strings
+/*! n and d are converted to arbitrary-precision integers according to
+ *  the given base.  d cannot be 0.  */
+Expr vc_ratExprFromStr(VC vc, char* n, char* d, int base);
+
+//! Create a rational from a single string.
+/*!
+  \param vc the validity checker
+  \param n can be a string containing an integer, a pair of integers
+  "nnn/ddd", or a number in the fixed or floating point format.
+  \param base is the base in which to interpret the string.
+*/
+Expr vc_ratExprFromStr1(VC vc, char* n, int base);
+
+//! Unary minus.  Child must have a numeric type.
+Expr vc_uminusExpr(VC vc, Expr child);
+
+// plus, minus, mult.  Children must have numeric types.
+Expr vc_plusExpr(VC vc, Expr left, Expr right);
+Expr vc_plusExprN(VC vc, Expr* children, int numChildren);
+Expr vc_minusExpr(VC vc, Expr left, Expr right);
+Expr vc_multExpr(VC vc, Expr left, Expr right);
+Expr vc_powExpr(VC vc, Expr pow, Expr base);
+Expr vc_divideExpr(VC vc, Expr numerator, Expr denominator);
+
+// The following functions create less-than, less-than or equal,
+// greater-than, and greater-than or equal expressions of type Boolean.
+// Their arguments must be of numeric types.
+Expr vc_ltExpr(VC vc, Expr left, Expr right);
+Expr vc_leExpr(VC vc, Expr left, Expr right);
+Expr vc_gtExpr(VC vc, Expr left, Expr right);
+Expr vc_geExpr(VC vc, Expr left, Expr right);
+
+// Records
+
+// Create record literals;
+Expr vc_recordExpr1(VC vc, char* field, Expr expr);
+Expr vc_recordExpr2(VC vc, char* field0, Expr expr0,
+		                   char* field1, Expr expr1);
+Expr vc_recordExpr3(VC vc, char* field0, Expr expr0,
+                                   char* field1, Expr expr1,
+		                   char* field2, Expr expr2);
+Expr vc_recordExprN(VC vc, char** fields, Expr* exprs, int numFields);
+
+//! Create an expression representing the selection of a field from a record.
+Expr vc_recSelectExpr(VC vc, Expr record, char* field);
+
+//! Record update; equivalent to "record WITH .field := newValue"
+Expr vc_recUpdateExpr(VC vc, Expr record, char* field, Expr newValue);
+
+// Arrays
+
+//! Create an expression for the value of array at the given index
+Expr vc_readExpr(VC vc, Expr array, Expr index);
+
+//! Array update; equivalent to "array WITH [index] := newValue"
+Expr vc_writeExpr(VC vc, Expr array, Expr index, Expr newValue);
+
+// Bitvectors
+// Additional type constructor
+Type vc_bv32Type(VC vc);
+
+// Bitvector constants
+Expr vc_bvConstExprFromStr(VC vc, char* binary_repr);
+Expr vc_bvConstExprFromInt(VC vc, int n_bits, unsigned int value);
+Expr vc_bv32ConstExprFromInt(VC vc, unsigned int value);
+Expr vc_bvConstExprFromLL(VC vc, int n_bits, unsigned long value);
+
+// Concat and extract
+Expr vc_bvConcatExpr(VC vc, Expr left, Expr right);
+Expr vc_bvConcatExprN(VC vc, Expr* children, int numChildren);
+Expr vc_bvExtract(VC vc, Expr child, int high_bit_no, int low_bit_no);
+Expr vc_bvBoolExtract(VC vc, Expr child, int bit_no);
+
+// Bitwise Boolean operators: Negation, And, Or, Xor
+Expr vc_bvNotExpr(VC vc, Expr child);
+Expr vc_bvAndExpr(VC vc, Expr left, Expr right);
+Expr vc_bvOrExpr(VC vc, Expr left, Expr right);
+Expr vc_bvXorExpr(VC vc, Expr left, Expr right);
+
+// Unsigned bitvector inequalities
+Expr vc_bvLtExpr(VC vc, Expr left, Expr right);
+Expr vc_bvLeExpr(VC vc, Expr left, Expr right);
+Expr vc_bvGtExpr(VC vc, Expr left, Expr right);
+Expr vc_bvGeExpr(VC vc, Expr left, Expr right);
+
+// Signed bitvector inequalities
+Expr vc_bvSLtExpr(VC vc, Expr left, Expr right);
+Expr vc_bvSLeExpr(VC vc, Expr left, Expr right);
+Expr vc_bvSGtExpr(VC vc, Expr left, Expr right);
+Expr vc_bvSGeExpr(VC vc, Expr left, Expr right);
+
+// Sign-extend child to a total of nbits bits
+Expr vc_bvSignExtend(VC vc, Expr child, int nbits);
+
+// Bitvector arithmetic: unary minus, plus, subtract, multiply
+Expr vc_bvUMinusExpr(VC vc, Expr child);
+Expr vc_bvPlusExpr(VC vc, int n_bits, Expr left, Expr right);
+Expr vc_bv32PlusExpr(VC vc, Expr left, Expr right);
+Expr vc_bvMinusExpr(VC vc, int n_bits, Expr left, Expr right);
+Expr vc_bv32MinusExpr(VC vc, Expr left, Expr right);
+Expr vc_bvMultExpr(VC vc, int n_bits, Expr left, Expr right);
+Expr vc_bv32MultExpr(VC vc, Expr left, Expr right);
+Expr vc_bvUDivExpr(VC vc, Expr left, Expr right);
+Expr vc_bvURemExpr(VC vc, Expr left, Expr right);
+Expr vc_bvSDivExpr(VC vc, Expr left, Expr right);
+Expr vc_bvSRemExpr(VC vc, Expr left, Expr right);
+Expr vc_bvSModExpr(VC vc, Expr left, Expr right);
+
+// Shift operators
+Expr vc_bvLeftShiftExpr(VC vc, int sh_amt, Expr child);
+Expr vc_bvRightShiftExpr(VC vc, int sh_amt, Expr child);
+Expr vc_bv32LeftShiftExpr(VC vc, int sh_amt, Expr child);
+Expr vc_bv32RightShiftExpr(VC vc, int sh_amt, Expr child);
+Expr vc_bvVar32LeftShiftExpr(VC vc, Expr sh_amt, Expr child);
+Expr vc_bvVar32RightShiftExpr(VC vc, Expr sh_amt, Expr child);
+Expr vc_bvVar32DivByPowOfTwoExpr(VC vc, Expr child, Expr rhs);
+
+/*C pointer support:  C interface to support C memory arrays in CVC3 */
+Expr vc_bvCreateMemoryArray(VC vc, char * arrayName);
+Expr vc_bvReadMemoryArray(VC vc,
+			  Expr array, Expr byteIndex, int numOfBytes);
+Expr vc_bvWriteToMemoryArray(VC vc,
+			     Expr array, Expr  byteIndex,
+			     Expr element, int numOfBytes);
+
+// Tuples
+
+//! Create a tuple expression
+/*! 'children' is an array of elements of length numChildren */
+Expr vc_tupleExprN(VC vc, Expr* children, int numChildren);
+
+//! Tuple select; equivalent to "tuple.n", where n is an numeral (e.g. tup.5)
+Expr vc_tupleSelectExpr(VC vc, Expr tuple, int index);
+
+//! Tuple update; equivalent to "tuple WITH index := newValue"
+Expr vc_tupleUpdateExpr(VC vc, Expr tuple, int index, Expr newValue);
+
+// Datatypes
+
+//! Datatype constructor expression
+Expr vc_datatypeConsExpr(VC vc, char* constructor, int numArgs, Expr* args);
+
+//! Datatype selector expression
+Expr vc_datatypeSelExpr(VC vc, char* selector, Expr arg);
+
+//! Datatype tester expression
+Expr vc_datatypeTestExpr(VC vc, char* constructor, Expr arg);
+
+// Quantifiers
+
+//! Create a bound variable.
+/*! \param vc the validity checker
+ * \param name
+ * \param uid is a fresh unique string to distinguish this variable
+ * from other bound variables with the same name
+ * \param type
+ */
+Expr vc_boundVarExpr(VC vc, char* name, char *uid, Type type);
+
+//! Create a FORALL quantifier.
+/*! Bvars is an array of bound variables of length numBvars. */
+Type vc_forallExpr(VC vc, Expr* Bvars, int numBvars, Expr f);
+
+//! Set triggers for a forallExpr
+void vc_setTriggers(VC vc, Expr e, int numTrigs, Expr* triggers);
+
+//! Create an EXISTS quantifier.
+/*! Bvars is an array of bound variables of length numBvars. */
+Expr vc_existsExpr(VC vc, Expr* Bvars, int numBvars, Expr f);
+
+//! Lambda-expression
+Op vc_lambdaExpr(VC vc, int numVars, Expr* vars, Expr body);
+
+/////////////////////////////////////////////////////////////////////////////
+// Context-related methods                                                 //
+/////////////////////////////////////////////////////////////////////////////
+
+//! Set the resource limit (0==unlimited, 1==exhausted).
+/*! Currently, the limit is the total number of processed facts. */
+void vc_setResourceLimit(VC vc, unsigned limit);
+
+//! Assert a new formula in the current context.
+/*! The formula must have Boolean type. */
+void vc_assertFormula(VC vc, Expr e);
+
+//! Register an atomic formula of interest.
+/*! Registered atoms are tracked by the decision procedures.  If one of them
+    is deduced to be true or false, it is added to a list of implied literals.
+    Implied literals can be retrieved with the getImpliedLiteral function */
+void vc_registerAtom(VC vc, Expr e);
+
+//! Return next literal implied by last assertion.  Null if none.
+/*! Returned literals are either registered atomic formulas or their negation
+ */
+Expr vc_getImpliedLiteral(VC vc);
+
+//! Simplify e with respect to the current context
+Expr vc_simplify(VC vc, Expr e);
+
+//! Check validity of e in the current context.
+/*! Possible results are: 0 = invalid, 1 = valid, 2 = abort, 3 = unknown,
+ * -100 = exception (type error, internal error, etc).
+ * If the result is 1, then the resulting context is the same as
+ * the starting context.  If the result is 0 or 3, then the resulting
+ * context is a context in which e is false (though the context may be
+ * inconsistent in the case of an unknown result).  e must have Boolean
+ * type.  In the case of a result of -100, refer to vc_get_error_string()
+ * to see what went wrong. */
+int vc_query(VC vc, Expr e);
+
+//! Get the next model
+/*! This method should only be called after a query which returns
+  0.  Its return values are as for vc_query(). */
+int vc_checkContinue(VC vc);
+
+//! Restart the most recent query with e as an additional assertion.
+/*! This method should only be called after a query which returns
+  0.  Its return values are as for vc_query(). */
+int vc_restart(VC vc, Expr e);
+
+//! Returns to context immediately before last invalid query.
+/*! This method should only be called after a query which returns 0.
+ */
+void vc_returnFromCheck(VC vc);
+
+//! Get assumptions made by the user in this and all previous contexts.
+/*! User assumptions are created either by calls to assertFormula or by a
+ * call to query.  In the latter case, the negated query is added as an
+ * assumption.  The caller is responsible for freeing the array when
+ * finished with it.
+ */
+Expr* vc_getUserAssumptions(VC vc, int* size);
+
+//! Get assumptions made internally in this and all previous contexts.
+/*! Internal assumptions are literals assumed by the sat solver.
+ * The caller is responsible for freeing the array when finished with it by
+ * calling vc_deleteVector.
+ */
+Expr* vc_getInternalAssumptions(VC vc, int* size);
+
+//! Get all assumptions made in this and all previous contexts.
+/*!
+ * The caller is responsible for freeing the array when finished with it by
+ * calling vc_deleteVector.
+ */
+Expr* vc_getAssumptions(VC vc, int* size);
+
+//yeting, for proof translation, get the assumptions used.
+//the assumptions used are different from the user assumptions.
+//the assumptions used are preprocessed if 'preprocess' is ena
+Expr vc_getProofAssumptions(VC vc);
+
+//yeting, for proof translation,
+Expr vc_getProofQuery(VC vc);
+
+//! Returns the set of assumptions used in the proof of queried formula.
+/*! It returns a subset of getAssumptions().  If the last query was false
+ *  or there has not yet been a query, it does nothing.
+ * The caller is responsible for freeing the array when finished with it by
+ * calling vc_deleteVector.
+ */
+Expr* vc_getAssumptionsUsed(VC vc, int* size);
+
+//! Return the counterexample after a failed query.
+/*! This method should only be called after a query which returns
+ * false.  It will try to return the simplest possible set of
+ * assertions which are sufficient to make the queried expression
+ * false.  The caller is responsible for freeing the array when finished with
+ * it by calling vc_deleteVector.
+ */
+Expr* vc_getCounterExample(VC vc, int* size);
+
+//! Will assign concrete values to all user created variables
+/*! This function should only be called after a query which return false.
+ * Returns an array of Exprs with size *size.
+ * The caller is responsible for freeing the array when finished with it by
+ * calling vc_deleteVector.
+ */
+Expr* vc_getConcreteModel(VC vc, int* size);
+
+// Returns true if the current context is inconsistent.
+/*! Also returns a minimal set of assertions used to determine the
+ * inconsistency. The caller is responsible for freeing the array when finished
+ * with it by calling vc_deleteVector.
+ */
+int vc_inconsistent(VC vc, Expr** assumptions, int* size);
+
+//! Returns non-NULL if the invalid result from last query() is imprecise
+/*!
+ * The return value is filled with the reasons for incompleteness (it
+ * is intended to be shown to the end user).  The caller is responsible for
+ * freeing the string returned by calling vc_deleteString.
+ */
+char* vc_incomplete(VC vc);
+
+//! Returns the proof for the last proven query
+Expr vc_getProof(VC vc);
+
+//! Returns the proof of a .cvc file, if it is valid.
+Expr vc_getProofOfFile(VC vc, char * filename);
+
+//! Returns the TCC of the last assumption or query
+/*! Returns Null Expr if no assumptions or queries were performed. */
+Expr vc_getTCC(VC vc);
+
+//! Return the set of assumptions used in the proof of the last TCC
+/*! The caller is responsible for freeing the array when finished with it by
+ * calling vc_deleteVector.
+ */
+Expr* vc_getAssumptionsTCC(VC vc, int* size);
+
+//! Returns the proof of TCC of the last assumption or query
+/*! Returns Null Expr if no assumptions or queries were performed. */
+Expr vc_getProofTCC(VC vc);
+
+//! After successful query, return its closure |- Gamma => phi
+/*! Turn a valid query Gamma |- phi into an implication
+ * |- Gamma => phi.
+ *
+ * Returns Null Expr if last query was invalid.
+ */
+Expr vc_getClosure(VC vc);
+
+//! Construct a proof of the query closure |- Gamma => phi
+/*! Returns Null if last query was Invalid. */
+Expr vc_getProofClosure(VC vc);
+
+//! Returns the current stack level.  Initial level is 0.
+int vc_stackLevel(VC vc);
+
+//! Checkpoint the current context and increase the scope level
+void vc_push(VC vc);
+
+//! Restore the current context to its state at the last checkpoint
+void vc_pop(VC vc);
+
+//! Restore the current context to the given stackLevel.
+/*! stackLevel must be less than or equal to the current stack level.
+ */
+void vc_popto(VC vc, int stackLevel);
+
+//! Get the current context
+Context* vc_getCurrentContext(VC vc);
+
+/* ---------------------------------------------------------------------- */
+/*  Util                                                                  */
+/* ---------------------------------------------------------------------- */
+
+// Order
+
+//! Compares two expressions
+/*! If e1 < e2, e1==e2, and e1 > e2, it returns -1, 0, 1
+ * respectively.  A return value of -100 signals an error (refer to
+ * vc_get_error_string() for details).
+ *
+ * Can't be 'compare' because already defined in ocaml */
+int vc_compare_exprs(Expr e1,Expr e2);
+
+// Printing
+
+//! Convert Expr to string
+char* vc_exprString(Expr e);
+//! Convert Type to string
+char* vc_typeString(Type t);
+
+// What kind of Expr?
+int vc_isClosure(Expr e);
+int vc_isQuantifier(Expr e);
+int vc_isLambda(Expr e);
+Expr vc_isVar(Expr e);
+
+int vc_arity(Expr e);
+int vc_getKind(Expr e);
+Expr vc_getChild(Expr e, int i);
+int vc_getNumVars(Expr e);
+Expr vc_getVar(Expr e, int i);
+Expr vc_getBody(Expr e);
+Expr vc_getExistential(Expr e);
+Expr vc_getFun(VC vc, Expr e);
+Expr vc_toExpr(Type t);
+
+//! Translate a kind int to a string
+const char* vc_getKindString(VC vc,int kind);
+
+//! Translate a kind string to an int
+int vc_getKindInt(VC vc,char* kind_name);
+
+//! Return an int from a rational expression
+int vc_getInt(Expr e);
+
+//! Return an int from a constant bitvector expression
+int vc_getBVInt(VC vc, Expr e);
+//! Return an unsigned int from a constant bitvector expression
+unsigned int vc_getBVUnsigned(VC vc, Expr e);
+
+// Debug
+int vc_get_error_status();
+void vc_reset_error_status();
+char* vc_get_error_string();
+
+//! Print statistics
+void vc_print_statistics(VC vc);
+
+#endif
+
+
diff --git a/src/bindings/compat/c/c_interface_defs.h b/src/bindings/compat/c/c_interface_defs.h
new file mode 100644
index 0000000..0f01553
--- /dev/null
+++ b/src/bindings/compat/c/c_interface_defs.h
@@ -0,0 +1,53 @@
+/*****************************************************************************/
+/*!
+ * \file c_interface_defs.h
+ *
+ * Author: Clark Barrett
+ *
+ * Created: Thu Jun  5 13:16:26 2003
+ *
+ * <hr>
+ *
+ * License to use, copy, modify, sell and/or distribute this software
+ * and its documentation for any purpose is hereby granted without
+ * royalty, subject to the terms and conditions defined in the \ref
+ * COPYING file provided with this distribution.
+ *
+ * <hr>
+ *
+ */
+/*****************************************************************************/
+
+#include "cvc4_public.h"
+
+#ifndef _cvc3__include__c_interface_defs_h_
+#define _cvc3__include__c_interface_defs_h_
+
+//#include "kinds.h"
+
+#ifdef CVC3_STRONG_TYPING
+
+        typedef struct _cvc_VC *VC;
+        typedef struct _cvc_Context *Context;
+        typedef struct _cvc_ExprManager *ExprManager;
+        typedef struct _cvc_Flags *Flags;
+
+        typedef struct _cvc_Expr * Expr;
+        typedef struct _cvc_Op * Op;
+        typedef struct _cvc_Type* Type;
+#else
+
+        //This gives absolutely no static pointer typing.
+        typedef void* VC;
+        typedef void* Context;
+        typedef void* ExprManager;
+        typedef void* Flags;
+
+        typedef void* Expr;
+        typedef void* Op;
+        typedef void* Type;
+        typedef void* Proof;
+
+#endif
+#endif
+
diff --git a/src/bindings/compat/java/Cvc3_manifest b/src/bindings/compat/java/Cvc3_manifest
new file mode 100644
index 0000000..904ce03
--- /dev/null
+++ b/src/bindings/compat/java/Cvc3_manifest
@@ -0,0 +1,2 @@
+Main-Class: cvc3/Cvc3
+Class-Path: libcvc3.jar
diff --git a/src/bindings/compat/java/Makefile.am b/src/bindings/compat/java/Makefile.am
new file mode 100644
index 0000000..5b05256
--- /dev/null
+++ b/src/bindings/compat/java/Makefile.am
@@ -0,0 +1,154 @@
+# LIBCVC4BINDINGS_VERSION (-version-info) is in the form current:revision:age
+#
+# current -
+#   increment if interfaces have been added, removed or changed
+# revision -
+#   increment if source code has changed
+#   set to zero if current is incremented
+# age -
+#   increment if interfaces have been added
+#   set to zero if interfaces have been removed
+#   or changed
+#
+LIBCVC4BINDINGS_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4BINDINGSLIB \
+	-I at builddir@/../../.. -I at srcdir@/../../../include -I at srcdir@/../../.. \
+	-I at builddir@/cvc3 -I at srcdir@/include/cvc3
+AM_CXXFLAGS = -Wall -Wno-unused-variable
+
+javadatadir = $(datadir)/java
+javalibdir = $(libdir)/jni
+javadata_DATA =
+javalib_LTLIBRARIES=
+BUILT_SOURCES =
+
+if CVC4_LANGUAGE_BINDING_JAVA
+
+javalib_LTLIBRARIES += libcvc4compatjni.la
+javadata_DATA += CVC4compat.jar
+libcvc4compatjni_la_LDFLAGS = \
+	-module \
+	-shrext $(CVC4_JAVA_MODULE_EXT) \
+	-version-info $(LIBCVC4BINDINGS_VERSION)
+libcvc4compatjni_la_LIBADD = \
+	@builddir@/../../../compat/libcvc4compat.la \
+	@builddir@/../../../libcvc4.la
+BUILT_SOURCES += $(JNI_CPP_FILES)
+
+endif
+
+# source files
+# java files of the library wrapper
+LIB_FILES = \
+	Cvc3Exception \
+	TypecheckException \
+	SoundException \
+	EvalException \
+	CLException \
+	ParserException \
+	SmtlibException \
+	DebugException \
+	Embedded \
+	EmbeddedManager \
+	InputLanguage \
+	QueryResult \
+	SatResult \
+	FormulaValue \
+	Expr \
+	ExprMut \
+	ExprManager \
+	ExprManagerMut \
+	Type \
+	TypeMut \
+	Op \
+	OpMut \
+	Rational \
+	RationalMut \
+	Theorem \
+	TheoremMut \
+	Proof \
+	ProofMut \
+	Context \
+	ContextMut \
+	Flag \
+	Flags \
+	FlagsMut \
+	Statistics \
+	StatisticsMut \
+	ValidityChecker
+
+# java files of the test program
+TEST_FILES = Test
+# java files of the stand alone program
+PROG_FILES = TimeoutHandler Cvc3
+# all java files, library and stand alone
+JAVA_FILES = JniUtils $(LIB_FILES) $(TEST_FILES) $(PROG_FILES)
+# generated files
+JNI_CPP_FILES = \
+	EmbeddedManager.cpp \
+	Expr.cpp \
+	ExprMut.cpp \
+	ExprManager.cpp \
+	ValidityChecker.cpp
+#	Type.cpp \
+#	TypeMut.cpp \
+#	Op.cpp \
+#	OpMut.cpp \
+#	Rational.cpp \
+#	RationalMut.cpp \
+#	Theorem.cpp \
+#	TheoremMut.cpp \
+#	Proof.cpp \
+#	ProofMut.cpp \
+#	Context.cpp \
+#	ContextMut.cpp \
+#	Flag.cpp \
+#	Flags.cpp \
+#	FlagsMut.cpp \
+#	Statistics.cpp \
+#	StatisticsMut.cpp \
+# non-generated files
+SRC_CPP_FILES = src/cvc3/JniUtils.cpp
+# all cpp files (to compile)
+CPP_FILES = $(SRC_CPP_FILES) $(JNI_CPP_FILES)
+
+dist_libcvc4compatjni_la_SOURCES = $(SRC_CPP_FILES) include/cvc3/JniUtils.h
+nodist_libcvc4compatjni_la_SOURCES = $(JNI_CPP_FILES)
+
+EXTRA_DIST = \
+	formula_value.h \
+	create_impl.py \
+	Cvc3_manifest \
+	$(JNI_CPP_FILES:%.cpp=src/cvc3/%_impl.cpp) \
+	$(JAVA_FILES:%=src/cvc3/%.java)
+
+# compile each cpp file
+$(JNI_CPP_FILES): %.cpp: src/cvc3/%_impl.cpp $(builddir)/cvc3/%.h include/cvc3/JniUtils.h
+	$(AM_V_GEN)$(PYTHON) $(srcdir)/create_impl.py \
+		cvc3/$*.h \
+		$(srcdir)/src/cvc3/$*_impl.cpp \
+		$*.cpp
+
+JniUtils.lo: src/cvc3/JniUtils.cpp .headers
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(JAVA_INCLUDES) $(JAVA_CPPFLAGS) -I . -o $@ $<
+%.lo: %.cpp .headers
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(JAVA_INCLUDES) $(JAVA_CPPFLAGS) -I . -o $@ $<
+
+$(LIB_FILES:%=classes/cvc3/%.class) classes/cvc3/JniUtils.class: .classes
+.classes:
+	$(AM_V_GEN)mkdir -p classes && $(JAVAC) -source 1.4 -target 1.4 -sourcepath $(srcdir)/src -d classes $(LIB_FILES:%=$(srcdir)/src/cvc3/%.java)
+	@touch .classes
+.headers: $(LIB_FILES:%=cvc3/%.h)
+	@touch .headers
+$(LIB_FILES:%=cvc3/%.h): %.h: classes/%.class .cvc3dir
+	$(AM_V_GEN)$(JAVAH) -jni -force -classpath classes -o $@ cvc3.$(@:cvc3/%.h=%)
+.cvc3dir:
+	@mkdir -p cvc3 && touch $@
+CVC4compat.jar: $(LIB_FILES:%=classes/cvc3/%.class) classes/cvc3/JniUtils.class
+	$(AM_V_GEN)$(JAR) cf $@ -C classes .
+
+clean-local:
+	rm -fr classes cvc3
+MOSTLYCLEANFILES = .cvc3dir .classes .headers CVC4compat.jar $(JNI_CPP_FILES)
diff --git a/src/bindings/compat/java/Makefile.in b/src/bindings/compat/java/Makefile.in
new file mode 100644
index 0000000..11b4306
--- /dev/null
+++ b/src/bindings/compat/java/Makefile.in
@@ -0,0 +1,1019 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@am__append_1 = libcvc4compatjni.la
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@am__append_2 = CVC4compat.jar
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@am__append_3 = $(JNI_CPP_FILES)
+subdir = src/bindings/compat/java
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(javalibdir)" "$(DESTDIR)$(javadatadir)"
+LTLIBRARIES = $(javalib_LTLIBRARIES)
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@libcvc4compatjni_la_DEPENDENCIES = @builddir@/../../../compat/libcvc4compat.la \
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@	@builddir@/../../../libcvc4.la
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_1 = src/cvc3/JniUtils.lo
+dist_libcvc4compatjni_la_OBJECTS = $(am__objects_1)
+am__objects_2 = EmbeddedManager.lo Expr.lo ExprMut.lo ExprManager.lo \
+	ValidityChecker.lo
+nodist_libcvc4compatjni_la_OBJECTS = $(am__objects_2)
+libcvc4compatjni_la_OBJECTS = $(dist_libcvc4compatjni_la_OBJECTS) \
+	$(nodist_libcvc4compatjni_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+libcvc4compatjni_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+	$(AM_CXXFLAGS) $(CXXFLAGS) $(libcvc4compatjni_la_LDFLAGS) \
+	$(LDFLAGS) -o $@
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@am_libcvc4compatjni_la_rpath =  \
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@	-rpath $(javalibdir)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(dist_libcvc4compatjni_la_SOURCES) \
+	$(nodist_libcvc4compatjni_la_SOURCES)
+DIST_SOURCES = $(dist_libcvc4compatjni_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+DATA = $(javadata_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+
+# LIBCVC4BINDINGS_VERSION (-version-info) is in the form current:revision:age
+#
+# current -
+#   increment if interfaces have been added, removed or changed
+# revision -
+#   increment if source code has changed
+#   set to zero if current is incremented
+# age -
+#   increment if interfaces have been added
+#   set to zero if interfaces have been removed
+#   or changed
+#
+LIBCVC4BINDINGS_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4BINDINGSLIB \
+	-I at builddir@/../../.. -I at srcdir@/../../../include -I at srcdir@/../../.. \
+	-I at builddir@/cvc3 -I at srcdir@/include/cvc3
+
+AM_CXXFLAGS = -Wall -Wno-unused-variable
+javadatadir = $(datadir)/java
+javalibdir = $(libdir)/jni
+javadata_DATA = $(am__append_2)
+javalib_LTLIBRARIES = $(am__append_1)
+BUILT_SOURCES = $(am__append_3)
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@libcvc4compatjni_la_LDFLAGS = \
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@	-module \
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@	-shrext $(CVC4_JAVA_MODULE_EXT) \
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@	-version-info $(LIBCVC4BINDINGS_VERSION)
+
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@libcvc4compatjni_la_LIBADD = \
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@	@builddir@/../../../compat/libcvc4compat.la \
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@	@builddir@/../../../libcvc4.la
+
+
+# source files
+# java files of the library wrapper
+LIB_FILES = \
+	Cvc3Exception \
+	TypecheckException \
+	SoundException \
+	EvalException \
+	CLException \
+	ParserException \
+	SmtlibException \
+	DebugException \
+	Embedded \
+	EmbeddedManager \
+	InputLanguage \
+	QueryResult \
+	SatResult \
+	FormulaValue \
+	Expr \
+	ExprMut \
+	ExprManager \
+	ExprManagerMut \
+	Type \
+	TypeMut \
+	Op \
+	OpMut \
+	Rational \
+	RationalMut \
+	Theorem \
+	TheoremMut \
+	Proof \
+	ProofMut \
+	Context \
+	ContextMut \
+	Flag \
+	Flags \
+	FlagsMut \
+	Statistics \
+	StatisticsMut \
+	ValidityChecker
+
+
+# java files of the test program
+TEST_FILES = Test
+# java files of the stand alone program
+PROG_FILES = TimeoutHandler Cvc3
+# all java files, library and stand alone
+JAVA_FILES = JniUtils $(LIB_FILES) $(TEST_FILES) $(PROG_FILES)
+# generated files
+JNI_CPP_FILES = \
+	EmbeddedManager.cpp \
+	Expr.cpp \
+	ExprMut.cpp \
+	ExprManager.cpp \
+	ValidityChecker.cpp
+
+#	Type.cpp \
+#	TypeMut.cpp \
+#	Op.cpp \
+#	OpMut.cpp \
+#	Rational.cpp \
+#	RationalMut.cpp \
+#	Theorem.cpp \
+#	TheoremMut.cpp \
+#	Proof.cpp \
+#	ProofMut.cpp \
+#	Context.cpp \
+#	ContextMut.cpp \
+#	Flag.cpp \
+#	Flags.cpp \
+#	FlagsMut.cpp \
+#	Statistics.cpp \
+#	StatisticsMut.cpp \
+# non-generated files
+SRC_CPP_FILES = src/cvc3/JniUtils.cpp
+# all cpp files (to compile)
+CPP_FILES = $(SRC_CPP_FILES) $(JNI_CPP_FILES)
+dist_libcvc4compatjni_la_SOURCES = $(SRC_CPP_FILES) include/cvc3/JniUtils.h
+nodist_libcvc4compatjni_la_SOURCES = $(JNI_CPP_FILES)
+EXTRA_DIST = \
+	formula_value.h \
+	create_impl.py \
+	Cvc3_manifest \
+	$(JNI_CPP_FILES:%.cpp=src/cvc3/%_impl.cpp) \
+	$(JAVA_FILES:%=src/cvc3/%.java)
+
+MOSTLYCLEANFILES = .cvc3dir .classes .headers CVC4compat.jar $(JNI_CPP_FILES)
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/bindings/compat/java/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/bindings/compat/java/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+install-javalibLTLIBRARIES: $(javalib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(javalib_LTLIBRARIES)'; test -n "$(javalibdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(javalibdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(javalibdir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(javalibdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(javalibdir)"; \
+	}
+
+uninstall-javalibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(javalib_LTLIBRARIES)'; test -n "$(javalibdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(javalibdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(javalibdir)/$$f"; \
+	done
+
+clean-javalibLTLIBRARIES:
+	-test -z "$(javalib_LTLIBRARIES)" || rm -f $(javalib_LTLIBRARIES)
+	@list='$(javalib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+src/cvc3/$(am__dirstamp):
+	@$(MKDIR_P) src/cvc3
+	@: > src/cvc3/$(am__dirstamp)
+src/cvc3/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/cvc3/$(DEPDIR)
+	@: > src/cvc3/$(DEPDIR)/$(am__dirstamp)
+src/cvc3/JniUtils.lo: src/cvc3/$(am__dirstamp) \
+	src/cvc3/$(DEPDIR)/$(am__dirstamp)
+
+libcvc4compatjni.la: $(libcvc4compatjni_la_OBJECTS) $(libcvc4compatjni_la_DEPENDENCIES) $(EXTRA_libcvc4compatjni_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(libcvc4compatjni_la_LINK) $(am_libcvc4compatjni_la_rpath) $(libcvc4compatjni_la_OBJECTS) $(libcvc4compatjni_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+	-rm -f src/cvc3/*.$(OBJEXT)
+	-rm -f src/cvc3/*.lo
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EmbeddedManager.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Expr.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ExprManager.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ExprMut.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ValidityChecker.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/cvc3/$(DEPDIR)/JniUtils.Plo at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+	-rm -rf src/cvc3/.libs src/cvc3/_libs
+install-javadataDATA: $(javadata_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(javadata_DATA)'; test -n "$(javadatadir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(javadatadir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(javadatadir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(javadatadir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(javadatadir)" || exit $$?; \
+	done
+
+uninstall-javadataDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(javadata_DATA)'; test -n "$(javadatadir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(javadatadir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(javalibdir)" "$(DESTDIR)$(javadatadir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f src/cvc3/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/cvc3/$(am__dirstamp)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic clean-javalibLTLIBRARIES clean-libtool \
+	clean-local mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR) src/cvc3/$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-javadataDATA install-javalibLTLIBRARIES
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR) src/cvc3/$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-javadataDATA uninstall-javalibLTLIBRARIES
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-javalibLTLIBRARIES clean-libtool clean-local \
+	cscopelist-am ctags ctags-am distclean distclean-compile \
+	distclean-generic distclean-libtool distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-javadataDATA \
+	install-javalibLTLIBRARIES install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-javadataDATA \
+	uninstall-javalibLTLIBRARIES
+
+.PRECIOUS: Makefile
+
+
+# compile each cpp file
+$(JNI_CPP_FILES): %.cpp: src/cvc3/%_impl.cpp $(builddir)/cvc3/%.h include/cvc3/JniUtils.h
+	$(AM_V_GEN)$(PYTHON) $(srcdir)/create_impl.py \
+		cvc3/$*.h \
+		$(srcdir)/src/cvc3/$*_impl.cpp \
+		$*.cpp
+
+JniUtils.lo: src/cvc3/JniUtils.cpp .headers
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(JAVA_INCLUDES) $(JAVA_CPPFLAGS) -I . -o $@ $<
+%.lo: %.cpp .headers
+	$(AM_V_CXX)$(LTCXXCOMPILE) -c $(JAVA_INCLUDES) $(JAVA_CPPFLAGS) -I . -o $@ $<
+
+$(LIB_FILES:%=classes/cvc3/%.class) classes/cvc3/JniUtils.class: .classes
+.classes:
+	$(AM_V_GEN)mkdir -p classes && $(JAVAC) -source 1.4 -target 1.4 -sourcepath $(srcdir)/src -d classes $(LIB_FILES:%=$(srcdir)/src/cvc3/%.java)
+	@touch .classes
+.headers: $(LIB_FILES:%=cvc3/%.h)
+	@touch .headers
+$(LIB_FILES:%=cvc3/%.h): %.h: classes/%.class .cvc3dir
+	$(AM_V_GEN)$(JAVAH) -jni -force -classpath classes -o $@ cvc3.$(@:cvc3/%.h=%)
+.cvc3dir:
+	@mkdir -p cvc3 && touch $@
+CVC4compat.jar: $(LIB_FILES:%=classes/cvc3/%.class) classes/cvc3/JniUtils.class
+	$(AM_V_GEN)$(JAR) cf $@ -C classes .
+
+clean-local:
+	rm -fr classes cvc3
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/bindings/compat/java/create_impl.py b/src/bindings/compat/java/create_impl.py
new file mode 100644
index 0000000..486f920
--- /dev/null
+++ b/src/bindings/compat/java/create_impl.py
@@ -0,0 +1,424 @@
+#!/usr/bin/env python
+
+import sys
+import os
+import re
+
+
+### output cpp file
+
+# qualifiers:
+# c   : embedded constant
+# m   : embedded mutable
+# n   : native
+# plus:
+# v   : vector
+# vv  : vector vector
+# vvv : vector vector vector
+
+# types:
+# - native: void, bool, int, string
+# - objects: the rest
+
+def is_native(arg_qual):
+    return (arg_qual[0] == 'n')
+
+def is_mutable(arg_qual):
+    return (arg_qual[0] == 'm')
+
+def is_const(arg_qual):
+    return (arg_qual[0] == 'c')
+
+def forall(p, s):
+    for x in s:
+        if not p(s):
+            return False
+
+    return True
+
+def check_arg_qual(arg_qual):
+    return \
+        (is_native(arg_qual) or is_mutable(arg_qual) or is_const(arg_qual)) \
+        and \
+        forall(lambda q: q == 'v', arg_qual[1:])
+    
+def is_vector(arg_qual):
+    return (len(arg_qual) > 1 and arg_qual[1] == 'v')
+
+def is_vector2(arg_qual):
+    return (is_vector(arg_qual) and len(arg_qual) > 2 and arg_qual[2] == 'v')
+
+def is_vector3(arg_qual):
+    return (is_vector2(arg_qual) and len(arg_qual) > 3 and arg_qual[3] == 'v')
+
+
+# returns the jni type corresponding to the pseudo type signature
+def arg_type_to_java((arg_qual, arg_type, arg_name)):
+    check_arg_qual(arg_qual);
+    if arg_type == "jobject":
+        if (not is_native(arg_qual)) or is_vector(arg_qual):
+            print("Error: native defined in implementation with qualifier: " + arg_qual)
+            sys.exit(1)
+        return "jobject"
+    elif arg_type == "bool":
+        if not is_native(arg_qual):
+            print("Error: bool defined in implementation with qualifier: " + arg_qual)
+            sys.exit(1)
+        if is_vector(arg_qual):
+            return "jbooleanArray"
+        else:
+            return "jboolean"
+    elif arg_type == "int":
+        if not is_native(arg_qual):
+            print("Error: int defined in implementation with qualifier: " + arg_qual)
+            sys.exit(1)
+        if is_vector(arg_qual):
+            return "jintArray"
+        else:
+            return "jint"
+    elif arg_type == "string":
+        if not is_native(arg_qual):
+            print("Error: string defined in implementation with qualifier: " + arg_qual)
+            sys.exit(1)
+        if is_vector(arg_qual):
+            return "jobjectArray"
+        else:
+            return "jstring"
+    else:
+        if is_vector(arg_qual):
+            return "jobjectArray"
+        else:
+            return "jobject"
+
+def print_unembed_arg(cpp_file, (arg_qual, arg_type, arg_name)):
+    check_arg_qual(arg_qual);
+    if arg_type == "jobject":
+        ()
+    elif arg_type == "bool":
+        if is_vector3(arg_qual):
+            cpp_file.write("    vector<vector<vector<bool> > > " + arg_name \
+                               + "(toCppVVV(env, j" + arg_name + "));\n");
+        elif is_vector2(arg_qual):
+            cpp_file.write("    vector<vector<bool> > " + arg_name \
+                               + "(toCppVV(env, j" + arg_name + "));\n");
+        elif is_vector(arg_qual):
+            cpp_file.write("    vector<bool> " + arg_name \
+                               + "(toCppV(env, j" + arg_name + "));\n");
+        else:
+            cpp_file.write("    bool " + arg_name + "(j" + arg_name + ");\n");
+    elif arg_type == "int":
+        if is_vector3(arg_qual):
+            cpp_file.write("    vector<vector<vector<int> > > " + arg_name \
+                               + "(toCppVVV(env, j" + arg_name + "));\n");
+        elif is_vector2(arg_qual):
+            cpp_file.write("    vector<vector<int> > " + arg_name \
+                               + "(toCppVV(env, j" + arg_name + "));\n");
+        elif is_vector(arg_qual):
+            cpp_file.write("    vector<int> " + arg_name \
+                               + "(toCppV(env, j" + arg_name + "));\n");
+        else:
+            cpp_file.write("    int " + arg_name + "(j" + arg_name + ");\n");
+    elif arg_type == "string":
+        if is_vector3(arg_qual):
+            cpp_file.write("    vector<vector<vector<string> > > " + arg_name \
+                               + "(toCppVVV(env, j" + arg_name + "));\n");
+        elif is_vector2(arg_qual):
+            cpp_file.write("    vector<vector<string> > " + arg_name \
+                               + "(toCppVV(env, j" + arg_name + "));\n");
+        elif is_vector(arg_qual):
+            cpp_file.write("    vector<string> " + arg_name \
+                               + "(toCppV(env, j" + arg_name + "));\n");
+        else:
+            cpp_file.write("    string " + arg_name + "(toCpp(env, j" + arg_name + "));\n");
+    else:
+        if is_vector3(arg_qual):
+            cpp_file.write("    vector<vector<vector<" + arg_type + "> > > " + arg_name \
+                               + "(toCppVVV<" + arg_type + ">(env, j" + arg_name + "));\n");
+        elif is_vector2(arg_qual):
+            cpp_file.write("    vector<vector<" + arg_type + "> > " + arg_name \
+                               + "(toCppVV<" + arg_type + ">(env, j" + arg_name + "));\n");
+        elif is_vector(arg_qual):
+            cpp_file.write("    vector<" + arg_type + "> " + arg_name \
+                               + "(toCppV<" + arg_type + ">(env, j" + arg_name + "));\n");
+        elif is_const(arg_qual):
+            cpp_file.write("    const " + arg_type + "* " + arg_name \
+                               + " = unembed_const<" + arg_type + ">(env, j" + arg_name + ");\n");
+        else:
+            cpp_file.write("    " + arg_type + "* " + arg_name \
+                               + " = unembed_mut<" + arg_type + ">(env, j" + arg_name + ");\n");
+
+def print_unembed_args(cpp_file, args):
+    for arg in args:
+        print_unembed_arg(cpp_file, arg)
+
+
+# check hat declaration and definition signatures match
+def match_signatures((decl_result, decl_args), (def_result, def_args, _)):
+    if decl_result != def_result or len(decl_args) != len(def_args):
+        return False
+    for i in xrange(0, len(decl_args)):
+        java_type = arg_type_to_java(def_args[i])
+        #print java_type
+        if decl_args[i] != java_type:
+            return False
+    return True
+
+def print_header(cpp_file, includes):
+    cpp_file.writelines(map(lambda name: "#include " + name + "\n", includes))
+
+    cpp_file.writelines(
+        [
+            "#include \"JniUtils.h\"\n",
+            "\n",
+            "using namespace std;\n",
+            "using namespace Java_cvc3_JniUtils;\n",
+            "using namespace CVC3;\n",
+            "\n"
+            ])
+
+def print_signature(cpp_file, name, result, args):
+    arg_strings = ["JNIEnv* env", "jclass"]
+    arg_strings.extend( \
+        map(lambda (argQual, argType, argName): \
+                arg_type_to_java((argQual, argType, argName)) \
+                + " j" + argName, args))
+    cpp_file.writelines([
+            "JNIEXPORT " + result + " JNICALL " + name + "\n",
+            "(" + ", ".join(arg_strings) + ")\n"])
+
+def print_definition(cpp_file, name, (result, args, body)):
+    cpp_file.writelines(["extern \"C\"\n"])
+    print_signature(cpp_file, name, result, args)
+    cpp_file.writelines([
+        "{\n",
+        "  try {\n"])
+    print_unembed_args(cpp_file, args)
+    cpp_file.writelines([
+            "    " + "    ".join(body),
+            "  } catch (const Exception& e) {\n",
+            "    toJava(env, e);\n"])
+    if result in [ "jobject", "jobjectArray", "jstring" ]:
+        cpp_file.writelines(["    return NULL;\n"])
+    elif result == "jboolean":
+        cpp_file.writelines(["    return false;\n"])
+    elif result == "jint":
+        cpp_file.writelines(["    return -1;\n"])
+    elif result <> "void":
+        print("BUG: return type " + result + " is not handled in print_definition")
+        sys.exit(1)
+    cpp_file.writelines(["  };\n",
+					     "}\n\n"])
+
+def print_cpp(cpp_name, declarations, definitions, includes):
+    try:
+        cpp_file = open(cpp_name, 'w')
+
+        print_header(cpp_file, includes)
+
+        #names = declarations.keys()
+        #names.sort()
+        for name in declarations[0]:
+            if not definitions.has_key(name):
+                #continue
+                print("Error: " + name + " is declared in header" \
+                          + " but not defined in implementation.")
+                sys.exit(1)
+
+            declaration = declarations[1][name]
+            definition = definitions[name]
+            definitions.pop(name)
+            if not match_signatures(declaration, definition):
+                print("Error: signature for " + name \
+                      + " in definition and implementation do not match:")
+                print declaration
+                print (definition[0], definition[1])
+                sys.exit(1)
+
+            print_definition(cpp_file, name, definition)
+
+        if not len(definitions) == 0:
+            print("Error: found definitions in implementation" \
+                      " without declaration in header file:")
+            print definitions
+            sys.exit(1)
+            
+    
+    except IOError, (error_nr, error_string):
+        print ("Couldn't open " + cpp_name + ": " + error_string)
+        sys.exit(0)
+
+
+### header file function declarations
+
+# header file function declaration:
+# - name: function name
+# - result: result type
+# - args: list of argument types, except for the first two (JNIEnv*, jclass)
+def register_declaration(declarations, name, result, args):
+    assert(not declarations[1].has_key(name));
+    declarations[0].append(name)
+    declarations[1][name] = (result, args)
+
+# extract function signatures from generated JNI header file
+def read_header(header_name):
+    # 0.: names of declared functions in same order as in input
+    # 1.: map from names to signature
+    declarations = ([], {})
+    try:
+        header_file = open(header_name)
+
+        line = header_file.readline()
+        while (line):
+            # look for start of signature
+            # declaration will look like:
+            # JNIEXPORT <result> JNICALL <name> (JNIENV *env, jclass, jobject);
+            # with an optional linebreak before the parameter list, and
+            # perhaps missing the "env"
+            if re.search("^JNIEXPORT", line):
+                # extract name and return type
+                elements = re.sub('[,();]+',' ',line).split(); 
+                assert(elements[0] == "JNIEXPORT");
+                assert(elements[2] == "JNICALL");
+                name = elements[3]
+                result = elements[1] 
+
+                # If there are no more elements on this line,
+                # read and tokenize the next line
+                if len(elements) > 4:
+                    elements = elements[4:]
+                else:
+                    line = header_file.readline ()
+                    elements = re.sub('[,();]+',' ',line).split(); 
+                    
+                # extract argument types
+                assert(elements[0] == "JNIEnv");
+                assert(elements[1] == "*" or elements[1] == "*env");
+                assert(elements[2] == "jclass")
+                args = elements[3:]
+
+                register_declaration(declarations, name, result, args)
+
+            line = header_file.readline ()
+
+        header_file.close()
+
+
+    except IOError, (error_nr, error_string):
+        print ("Couldn't open " + header_name + ": " + error_string)
+        sys.exit(0)
+
+    return declarations
+    
+
+
+
+# function definitions:
+
+# cpp file function definition:
+# - name: function name
+# - result: result type
+# - args: list of pairs of argument types and argument names,
+#   except for the first two (JNIEnv*, jclass)
+def register_definition(definitions, name, result, args, body):
+    if definitions.has_key(name):
+        print("Error: redefinition of " + name + " in implementation.")
+        sys.exit(1)
+
+    definitions[name] = (result, args, body)
+    #print_definition(name, declarations[name])
+
+# extract function definition from implementation file
+def read_impl(impl_name):
+    definitions = {}
+    includes = []
+    try:
+        impl_file = open(impl_name)
+
+        line = impl_file.readline()
+        while (line):
+            # look for include
+            if re.search("^INCLUDE:", line):
+                elements = line.split();
+                assert(len(elements) == 2);
+                assert(elements[0] == "INCLUDE:")
+                includes.append(elements[1])
+                line = impl_file.readline()
+
+            #print line
+            # look for start of definition
+            elif re.search("^DEFINITION:", line):
+                #print line,
+                # get name
+                elements = line.split();
+                if not (len(elements) == 2):
+                    print("Error: misformed signature: " + line)
+                    sys.exit(1)
+
+                assert(elements[0] == "DEFINITION:")
+                name = elements[1]
+
+                # get signature
+                line = impl_file.readline ()
+                elements = line.split();
+                assert(len(elements) > 0);
+                if not (len(elements) % 3 == 1):
+                    print("Error: misformed signature for: " + name)
+                    print(line)
+                    sys.exit(1)
+                result = elements.pop(0)
+                args = []
+                while len(elements) > 0:
+                    argQual = elements.pop(0)
+                    argType = elements.pop(0)
+                    argName = elements.pop(0)
+                    args.append((argQual, argType, argName))
+
+                # get body
+                body = []
+                line = impl_file.readline ()
+                while line and not re.search("^DEFINITION:", line):
+                    body.append(line)
+                    line = impl_file.readline()
+
+                while body and body[len(body) - 1] == "\n":
+                    body.pop(len(body) - 1)
+                assert(len(body) > 0)
+
+                register_definition(definitions, name, result, args, body)
+
+            else:
+                line = impl_file.readline()
+
+        impl_file.close()
+
+    except IOError, (error_nr, error_string):
+        print ("Couldn't open " + impl_name + ": " + error_string)
+        sys.exit(0)
+
+    return definitions, includes
+
+
+# read name of input file
+if (len(sys.argv) != 4):
+    print("Expected path to header, implementation, and target file.")
+    print("")
+    print("./create_impl.py <H_FILE> <IMPL_FILE> <CPP_FILE>")
+
+    sys.exit(0)
+
+else:
+    #print(sys.argv)
+    header_name = sys.argv[1]
+    impl_name = sys.argv[2]
+    cpp_file = sys.argv[3]
+
+    # extract information from header
+    declarations = read_header(header_name)
+    #print declarations
+    
+    # extract information from template
+    definitions, includes = read_impl(impl_name)
+    #print definitions
+    
+    # create implementation
+    print_cpp(cpp_file, declarations, definitions, includes)
diff --git a/src/bindings/compat/java/formula_value.h b/src/bindings/compat/java/formula_value.h
new file mode 100644
index 0000000..efcd32e
--- /dev/null
+++ b/src/bindings/compat/java/formula_value.h
@@ -0,0 +1,39 @@
+/*****************************************************************************/
+/*!
+ *\file formula_value.h
+ *\brief enumerated type for value of formulas
+ *
+ * Author: Alexander Fuchs
+ *
+ * Created: Fri Dec 07 08:00:00 2007
+ *
+ * <hr>
+ *
+ * License to use, copy, modify, sell and/or distribute this software
+ * and its documentation for any purpose is hereby granted without
+ * royalty, subject to the terms and conditions defined in the \ref
+ * LICENSE file provided with this distribution.
+ *
+ * <hr>
+ */
+/*****************************************************************************/
+
+#ifndef _cvc3__include__formulavalue_h_
+#define _cvc3__include__formulavalue_h_
+
+namespace CVC3 {
+
+/*****************************************************************************/
+/*
+ * Type for truth value of formulas.
+ */
+/*****************************************************************************/
+typedef enum FormulaValue {
+  TRUE_VAL,
+  FALSE_VAL,
+  UNKNOWN_VAL
+} FormulaValue;
+
+}
+
+#endif
diff --git a/src/bindings/compat/java/include/cvc3/JniUtils.h b/src/bindings/compat/java/include/cvc3/JniUtils.h
new file mode 100644
index 0000000..404774c
--- /dev/null
+++ b/src/bindings/compat/java/include/cvc3/JniUtils.h
@@ -0,0 +1,292 @@
+#ifndef _java__cvc3__jni_utils_h_
+#define _java__cvc3__jni_utils_h_
+
+#include <cassert>
+#include <string>
+#include <jni.h>
+#include <typeinfo>
+#include "compat/cvc3_compat.h"
+//#include "vcl.h"
+//#include "hash_map.h"
+//#include "exception.h"
+
+#define DebugAssert(cond, str) assert(cond)
+
+namespace Java_cvc3_JniUtils {
+
+  /// Embedding of c++ objects in java objects
+
+  // generic delete function for any type T
+  template <class T> class DeleteEmbedded {
+  public:
+    static void deleteEmbedded(void* cobj) {
+      delete (T*) cobj;
+    }
+  };
+
+  typedef void (*TDeleteEmbedded)(void*);
+
+
+  // Encapsulates a c++ object so that:
+  // - (un)embedding casting is type safe
+  // - deallocation is automatic (if needed)
+  // This has probably quit a bit of overhead, because now for each
+  // wrapper object (even if only a temporary reference) an instance
+  // of Embedded is created.
+  // But considering the above two benefits it should be worth it
+  // because it should simplify maintenance quite a bit,
+  // as changes in the cvc API should lead to assertion failures
+  // instead of strange bugs.
+  class Embedded {
+  private:
+    // the actual embedded c++ object,
+    // as void* to make Embedded independent of its type
+    void* d_cobj;
+
+    // the type info of d_cobj,
+    // to make sure that later unembeddings are type safe
+    // actually only needed in debugging, so might be guarded with IF_DEBUG
+    const std::type_info& d_typeInfo;
+
+    // the type correct delete function for d_cobj,
+    // or NULL if this embedding is merely a reference
+    // and not responsible for its deallocation
+    TDeleteEmbedded d_delete;
+
+  public:
+    Embedded(void* cobj, const std::type_info& ti, TDeleteEmbedded del) :
+      d_cobj(cobj), d_typeInfo(ti), d_delete(del) {
+	assert(d_cobj != NULL);
+    }
+
+    ~Embedded() {
+      assert(d_cobj != NULL);
+      if (d_delete != NULL) d_delete(d_cobj);
+    }
+
+    const void* getCObj() const {
+      return d_cobj;
+    }
+
+    const std::type_info& getType() const {
+      return d_typeInfo;
+    }
+  };
+
+
+
+  // embed functions
+
+  // embeds a c++ object of type T into a jobject
+  // by first wrapping it into an Embedded object.
+  template <class T> jobject embed(JNIEnv* env, T* cobj, const std::type_info& ti,
+				   TDeleteEmbedded del) {
+    DebugAssert(cobj != NULL, "JniUtils::embed: null object given");
+    Embedded* embedded = new Embedded((void*)cobj, ti, del);
+    return (jobject)env->NewDirectByteBuffer(embedded, sizeof(Embedded));
+  }
+
+  // embeds a constant reference to a c++ object into a jobject
+  template <class T> jobject embed_const_ref(JNIEnv* env, const T* cobj) {
+    DebugAssert(cobj != NULL, "JniUtils::embed_const: null object given");
+    return embed<T>(env, (T*) cobj, typeid(cobj), NULL);
+  }
+
+  // embeds a mutable reference to a c++ object into a jobject
+  template <class T> jobject embed_mut_ref(JNIEnv* env, T* cobj) {
+    DebugAssert(cobj != NULL, "JniUtils::embed_mut_ref: null object given");
+    return embed<T>(env, (T*) cobj, typeid(cobj), NULL);
+  }
+
+  // embeds a fresh copy of a (probably temporary) c++ object into a jobject
+  template <class T> jobject embed_copy(JNIEnv* env, const T& cobj) {
+    DebugAssert(&cobj != NULL, "JniUtils::embed_copy: null object given");
+    T* copy = new T(cobj);
+    assert(copy != NULL);
+    return embed<T>(env, copy, typeid(copy), &DeleteEmbedded<T>::deleteEmbedded);
+  }
+
+  // embeds a c++ object into a jobject,
+  // and takes over the responsibility to deallocate it
+  template <class T> jobject embed_own(JNIEnv* env, T* cobj) {
+    DebugAssert(cobj != NULL, "JniUtils::embed_own: null object given");
+    return embed<T>(env, cobj, typeid(cobj), &DeleteEmbedded<T>::deleteEmbedded);
+  }
+
+
+  // unembed functions
+
+  // extract Embedded* from a jobject
+  Embedded* unembed(JNIEnv* env, jobject jobj);
+
+  // extract a constant c++ object of type T from a jobject
+  template <class T> const T* unembed_const(JNIEnv* env, jobject jobj) {
+    Embedded* embedded = unembed(env, jobj);
+    return (const T*) embedded->getCObj();
+  }
+
+  // extract a mutable c++ object of type T from a jobject
+  template <class T> T* unembed_mut(JNIEnv* env, jobject jobj) {
+    Embedded* embedded = unembed(env, jobj);
+    // check that the wrapped object is not const
+    DebugAssert(embedded->getType() == typeid(T*),
+		"JniUtils::unembed_mut: type mismatch");
+    return (T*) embedded->getCObj();
+  }
+
+
+  // delete embedded
+
+  // delete the Embedded object contained in a jobject,
+  // and also destruct the wrapped c++ object if necessary.
+  void deleteEmbedded(JNIEnv* env, jobject jobj);
+
+
+
+
+  /// Conversions between c++ and java
+
+  // bool
+  bool toCpp(jboolean j);
+
+  // string
+  jstring toJava(JNIEnv* env, const std::string& cstring);
+  jstring toJava(JNIEnv* env, const char* cstring);
+  std::string toCpp(JNIEnv* env, const jstring& string);
+
+  // enums
+  jstring toJava(JNIEnv* env, CVC3::QueryResult result);
+  jstring toJava(JNIEnv* env, CVC3::FormulaValue result);
+  jstring toJava(JNIEnv* env, CVC3::InputLanguage result);
+  CVC3::InputLanguage toCppInputLanguage(JNIEnv* env, const std::string& lang);
+
+  // exceptions
+  void toJava(JNIEnv* env, const CVC3::Exception& e);
+
+  // vectors
+  template <class T> jobjectArray toJavaVCopy(JNIEnv* env, const std::vector<T>& v) {
+    jobjectArray jarray = (jobjectArray)
+      env->NewObjectArray(
+	v.size(),
+	env->FindClass("java/lang/Object"),
+	NULL);
+
+    for (size_t i = 0; i < v.size(); ++i) {
+      env->SetObjectArrayElement(jarray, i, embed_copy<T>(env, v[i]));
+    }
+
+    return jarray;
+  }
+
+  template <class T> jobjectArray toJavaVConstRef(JNIEnv* env, const std::vector<T>& v) {
+    jobjectArray jarray = (jobjectArray)
+      env->NewObjectArray(
+	v.size(),
+	env->FindClass("java/lang/Object"),
+	NULL);
+
+    for (size_t i = 0; i < v.size(); ++i) {
+      env->SetObjectArrayElement(jarray, i, embed_const_ref<T>(env, &v[i]));
+    }
+
+    return jarray;
+  }
+
+  template<class T>
+    jobjectArray
+    toJavaVVConstRef(JNIEnv* env, const std::vector<std::vector<T> >& v)
+    {
+      jobjectArray jarray = (jobjectArray) env->NewObjectArray(v.size(),
+          env->FindClass("[Ljava/lang/Object;"), NULL);
+      for (size_t i = 0; i < v.size(); ++i)
+        {
+          env->SetObjectArrayElement(jarray, i, toJavaVConstRef(env, v[i]));
+        }
+      return jarray;
+    }
+
+  template <class T> std::vector<T> toCppV(JNIEnv* env, const jobjectArray& jarray) {
+    std::vector<T> v;
+    int length = env->GetArrayLength(jarray);
+    for (int i = 0; i < length; ++i) {
+      v.push_back(*unembed_const<T>(env, env->GetObjectArrayElement(jarray, i)));
+    }
+    return v;
+  }
+
+  template <class T> std::vector<std::vector<T> > toCppVV(JNIEnv* env, const jobjectArray& jarray) {
+    std::vector<std::vector<T> > v;
+    int length = env->GetArrayLength(jarray);
+    for (int i = 0; i < length; ++i) {
+      jobjectArray jsub = static_cast<jobjectArray>(env->GetObjectArrayElement(jarray, i));
+      v.push_back(toCppV<T>(env, jsub));
+    }
+    return v;
+  }
+
+  template <class T> std::vector<std::vector<std::vector<T> > >
+    toCppVVV(JNIEnv* env, const jobjectArray& jarray) {
+    std::vector<std::vector<std::vector<T> > > v;
+    int length = env->GetArrayLength(jarray);
+    for (int i = 0; i < length; ++i) {
+      jobjectArray jsub = static_cast<jobjectArray>(env->GetObjectArrayElement(jarray, i));
+      v.push_back(toCppVV<T>(env, jsub));
+    }
+    return v;
+  }
+
+  // string vectors
+  std::vector<std::string> toCppV(JNIEnv* env, const jobjectArray& jarray);
+  std::vector<std::vector<std::string> > toCppVV(JNIEnv* env, const jobjectArray& jarray);
+  std::vector<std::vector<std::vector<std::string> > > toCppVVV(JNIEnv* env, const jobjectArray& jarray);
+  jobjectArray toJavaV(JNIEnv* env, const std::vector<std::string>& v);
+
+  // primitive vectors
+  std::vector<bool> toCppV(JNIEnv* env, const jbooleanArray& jarray);
+
+
+  // hash map
+  /*template <class K, class V> jobjectArray toJavaHCopy(JNIEnv* env, const Hash::hash_map<K, V>& hm) {
+    jobjectArray jarray = (jobjectArray)
+      env->NewObjectArray(
+	hm.size() * 2,
+	env->FindClass("java/lang/Object"),
+	NULL);
+
+    int i = 0;
+    typename Hash::hash_map<K, V>::const_iterator it;
+    for (it = hm.begin(); it != hm.end(); ++it) {
+      assert(i < env->GetArrayLength(jarray));
+      env->SetObjectArrayElement(jarray, i, embed_copy<K>(env, it->first));
+      ++i;
+      assert(i < env->GetArrayLength(jarray));
+      env->SetObjectArrayElement(jarray, i, embed_copy<V>(env, it->second));
+      ++i;
+    }
+    return jarray;
+  }*/
+
+  template <class V> jobjectArray toJavaHCopy(JNIEnv* env, const CVC3::ExprMap<V>& hm) {
+    jobjectArray jarray = (jobjectArray)
+      env->NewObjectArray(
+	hm.size() * 2,
+	env->FindClass("java/lang/Object"),
+	NULL);
+
+    int i = 0;
+    typename CVC3::ExprMap<V>::const_iterator it;
+    for (it = hm.begin(); it != hm.end(); ++it) {
+      assert(i < env->GetArrayLength(jarray));
+      env->SetObjectArrayElement(jarray, i, embed_copy<CVC3::Expr>(env, it->first));
+      ++i;
+      assert(i < env->GetArrayLength(jarray));
+      env->SetObjectArrayElement(jarray, i, embed_copy<V>(env, it->second));
+      ++i;
+    }
+    return jarray;
+  }
+
+}
+
+
+#endif
diff --git a/src/bindings/compat/java/src/cvc3/CLException.java b/src/bindings/compat/java/src/cvc3/CLException.java
new file mode 100644
index 0000000..5c13050
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/CLException.java
@@ -0,0 +1,13 @@
+package cvc3;
+
+import java.util.*;
+
+/** mirrors CVC3::CLException */
+class CLException extends Cvc3Exception {
+
+    private final static long serialVersionUID = 1L;
+
+    public CLException(String message) {
+	super(message);
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/Context.java b/src/bindings/compat/java/src/cvc3/Context.java
new file mode 100644
index 0000000..7c3dc5f
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/Context.java
@@ -0,0 +1,17 @@
+package cvc3;
+
+import java.util.*;
+
+public class Context extends Embedded {
+    // jni methods
+
+    /// Constructor
+
+    public Context(Object Context, EmbeddedManager embeddedManager) {
+	super(Context, embeddedManager);
+    }
+
+
+    /// API (immutable)
+
+}
diff --git a/src/bindings/compat/java/src/cvc3/ContextMut.java b/src/bindings/compat/java/src/cvc3/ContextMut.java
new file mode 100644
index 0000000..eadd393
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/ContextMut.java
@@ -0,0 +1,18 @@
+package cvc3;
+
+import java.util.*;
+
+public class ContextMut extends Context {
+    // jni methods
+    
+    
+    /// Constructor
+
+    // create embedded object
+    public ContextMut(Object ContextMut, EmbeddedManager embeddedManager) {
+	super(ContextMut, embeddedManager);
+    }
+
+    
+    /// API (mutable)
+}
diff --git a/src/bindings/compat/java/src/cvc3/Cvc3.java b/src/bindings/compat/java/src/cvc3/Cvc3.java
new file mode 100644
index 0000000..f0a80ab
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/Cvc3.java
@@ -0,0 +1,222 @@
+package cvc3;
+
+import java.util.*;
+
+class Cvc3 {
+    static boolean useObjManager = false;
+
+    static void timeoutHandler(Object o) {
+      System.out.println("self-timeout.");
+      System.exit(1);
+    }
+
+    public static void main(String args[]) throws Cvc3Exception {
+
+	ValidityChecker vc = null;
+	FlagsMut flags = null;
+	try {
+	    flags = ValidityChecker.createFlags(null);
+	
+	    // parse input
+	    String fileName = "";
+	    try {
+		fileName = parse_args(args, flags);
+	    } catch(CLException e) {
+		System.err.print("*** " + e);
+		System.err.println("\n\nRun with -help option for usage information.");
+		System.exit(1);
+	    }
+	    
+	    // Set the timeout, if given in the command line options
+	    int timeout = flags.getFlag("timeout").getInt();
+	    if (timeout > 0) {
+		new Timer().schedule(new TimeoutHandler(), timeout * 1000);
+	    }
+	    
+	    /*
+	     * Create and run the validity checker
+	     */ 
+	    
+	    // Debugging code may throw an exception
+	    vc = ValidityChecker.create(flags);
+	    flags.delete();
+
+	    // -h flag sets "help" to false (+h would make it true, but that's
+	    // not what the user normally types in).
+	    if(!vc.getFlags().getFlag("help").getBool()) {
+		String programName = "cvc3"; //:TODO:
+		printUsage(vc.getFlags(), programName);
+		System.exit(0);
+	    }
+
+	    // Similarly, -version sets the flag "version" to false
+	    if(!vc.getFlags().getFlag("version").getBool()) {
+		System.out.println("This is CVC3 version " + "UNKNOWN"); //:TODO:
+		System.out.println("Copyright (C) 2003-2006 by the Board of Trustees of Leland Stanford Junior");
+		System.out.println("University, New York University, and the University of Iowa.");
+		System.out.println();
+		System.out.print("THIS SOFTWARE PROVIDED AS-IS, WITHOUT ANY WARRANTIES. ");
+		System.out.println("USE IT AT YOUR OWN RISK.");
+		System.out.println();
+		System.exit(0);
+	    }
+
+	    // Test if the output language is correctly specified; if not, an
+	    // exception will be thrown
+	    vc.getExprManager().getOutputLanguage();
+	    // Read the input file
+	    vc.loadFile(fileName, vc.getExprManager().getInputLanguage());
+      
+	    // Print statistics
+	    if (vc.getFlags().getFlag("stats").getBool()) {
+		vc.printStatistics();
+	    }
+	} catch (Cvc3Exception e) {
+	    System.err.println("*** Fatal exception: " + e);
+	    System.exit(1);
+	} finally {
+	    if (flags != null) flags.delete();
+	    if (vc != null) vc.delete();
+	}
+
+	// to avoid waiting for timer to finish
+	System.exit(0);
+    }
+
+
+
+    // evaluates command line flags, returns problem file name
+    public static String parse_args(String[] args, FlagsMut flags) throws Cvc3Exception {
+	// keep track that exactly one file name is given
+	String fileName = "";
+	boolean seenFileName = false;
+
+	// iterate over the arguments
+	for (int i = 0; i < args.length; ++i) {
+	    String arg = args[i];
+
+	    // A command-line option
+	    if (arg.startsWith("-") || arg.startsWith("+")) {
+		List names = flags.getFlags(arg.substring(1));
+
+		// no match
+		if (names.size() == 0)
+		    throw new CLException(arg + " does not match any known option");
+
+		// ambiguous
+		else if (names.size() > 1) {
+		    StringBuffer s = new StringBuffer();
+		    s.append(arg + " is ambiguous.  Possible matches are:\n");
+		    for (Iterator name = names.iterator(); name.hasNext(); ) {
+			s.append("  " + name.next() + "\n");
+		    }
+		    throw new CLException(s.toString());
+		}
+			 
+		// Single match; process the option by name, type, and parameters
+		else {
+		    String name = (String) names.iterator().next();
+		    boolean val = arg.startsWith("+");
+		    Flag flag = flags.getFlag(name);
+
+		    if (flag.isBool()) {
+			flags.setFlag(name, val);
+		    }
+
+		    else if (flag.isInt()) {
+			++i;
+			if (i >= args.length)
+			    throw new CLException (arg + " (-" + name + ") expects an integer argument.");
+			int parameter = Integer.parseInt(args[i]);
+			flags.setFlag(name, parameter);
+		    }
+
+		    else if (flag.isString()) {
+			++i;
+			if (i >= args.length)
+			    throw new CLException (arg + " (-" + name + ") expects a string argument.");
+			flags.setFlag(name, args[i]);            
+		    }
+
+		    //             else if (flag.isStringVec())
+		    //             {
+		    //               bool hasMore = iter.MoveNext();
+		    //               if (!hasMore)
+		    //               {
+		    //                 throw new CLException
+		    //                   (arg + " (-" + name + ") expects a string argument.");
+		    //               }
+		    //               flags.setFlag(name, (string)iter.Current, val);
+		    //             }
+		    
+		    else {
+			throw new CLException("parse_args: Bad flag : " + name);
+		    }
+		}
+	    }
+        
+	    // no flag, so should be a file name
+	    // second no flag argument
+	    else if(seenFileName) {
+		throw new CLException("More than one file name given: " + fileName + " and " + arg);
+	    }
+
+	    // first no flag argument
+	    else {
+		fileName = arg;
+		seenFileName = true;
+	    }
+	}
+
+	return fileName;
+     }
+
+
+    public static void printUsage(Flags flags, String programName) throws Cvc3Exception {
+	System.out.println("Usage: " + programName + " [options]");
+	System.out.println(programName + " will read the input from STDIN and ");
+	System.out.println("print the result on STDOUT.");
+	System.out.println("Boolean (b) options are set 'on' by +option and 'off' by -option");
+	System.out.println("(for instance, +sat or -sat).");
+	System.out.println("Integer (i), string (s) and vector (v) options ");
+	System.out.println("require a parameter, e.g. -width 80");
+	System.out.println("Also, (v) options can appear multiple times setting args on and off,");
+	System.out.println("as in +trace \"enable this\" -trace \"disable that\".");
+	System.out.println("Option names can be abbreviated to the shortest unambiguous prefix.");
+	System.out.println();
+	System.out.println("The options are:");
+
+	// Get all the names of options (they all match the empty string)
+	List names = flags.getFlags("");
+	for (Iterator i = names.iterator(); i.hasNext(); ) {
+	    String name = (String) i.next();
+	    Flag flag = flags.getFlag(name);
+	    String prefix = "";
+	    if (flag.isNull()) {
+		prefix = " (null)";
+	    }
+	    else if (flag.isBool()) {
+		String enabled = flag.getBool() ? "+" : "-";
+		prefix = " (b) " + enabled + name;
+	    }
+	    else if (flag.isInt()) {
+		prefix = " (i) -" + name + " " + flag.getInt();
+	    }
+	    else if (flag.isString()) {
+		prefix = " (s) -" + name + " " + flag.getString();
+	    }
+	    else if (flag.isStringVec()) {
+		prefix = " (s) -" + name;
+	    }
+	    else {
+		assert(false);
+	    }
+	    
+	    while (prefix.length() < 21) {
+		prefix += " ";
+	    }
+	    System.out.println(prefix + " " + flag.getHelp());
+	}
+	System.out.println();
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/Cvc3Exception.java b/src/bindings/compat/java/src/cvc3/Cvc3Exception.java
new file mode 100644
index 0000000..bd189a1
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/Cvc3Exception.java
@@ -0,0 +1,12 @@
+package cvc3;
+
+
+/** mirrors CVC3::Exception */
+public class Cvc3Exception extends RuntimeException {
+
+    private final static long serialVersionUID = 1L;
+
+    public Cvc3Exception(String message) {
+	super(message);
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/DebugException.java b/src/bindings/compat/java/src/cvc3/DebugException.java
new file mode 100644
index 0000000..bc711a0
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/DebugException.java
@@ -0,0 +1,13 @@
+package cvc3;
+
+import java.util.*;
+
+/** mirrors CVC3::DebugException */
+public class DebugException extends Cvc3Exception {
+
+    private final static long serialVersionUID = 1L;
+
+    public DebugException(String message) {
+	super(message);
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/Embedded.java b/src/bindings/compat/java/src/cvc3/Embedded.java
new file mode 100644
index 0000000..742e128
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/Embedded.java
@@ -0,0 +1,114 @@
+package cvc3;
+
+import java.util.*;
+import java.io.*;
+
+/** Wrapper for a c++ object as a java Object.
+
+    see README for details on garbage collection,
+    i.e. interplay of delete, finalize, and EmbeddedManager to destruct
+    the embedded c++ object. */
+public abstract class Embedded {
+
+    // load jni c++ library
+    static {
+        System.loadLibrary("cvc4");
+        System.loadLibrary("cvc4parser");
+        System.loadLibrary("cvc4compatjni");
+
+	/*
+	// for debugging: stop here by waiting for a key press,
+	// and attach c++ debugger
+	System.out.println("Loadded cvc3jni");
+	
+	try {
+	    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+	    br.readLine();
+	} catch (IOException ioe) {
+	}
+	*/
+    }
+
+
+    /// Attributes
+
+
+    // embedded object
+    protected Object d_embedded;
+
+    // embedded object manager
+    private final EmbeddedManager d_embeddedManager;
+
+
+    /// Constructor
+
+
+    // initialize with embedded object and EmbeddedManager
+    // if EmbeddedManager is null then delete must be called before
+    // Embedded is garbage collected
+    protected Embedded(Object Embedded, EmbeddedManager embeddedManager) {
+	//System.out.println("Create: Embedded");
+	assert(Embedded != null);
+	d_embedded = Embedded;
+	d_embeddedManager = embeddedManager;
+    }
+
+    // access to embedded c++ object
+    public synchronized Object embedded() {
+	return d_embedded;
+    }
+
+    // access to EmbeddedManager (might be null if none used)
+    public EmbeddedManager embeddedManager() {
+	return d_embeddedManager;
+    }
+
+    // check if already destructed
+    // (or queued for destruction in embeddedManager)
+    public synchronized boolean isDeleted() {
+	return (d_embedded == null);
+    }
+
+    // delete embedded object or enqueue it for deletion
+    public synchronized void delete() throws Cvc3Exception {
+	if (isDeleted()) return;
+
+	// no embedded manager, so should be in main thread:
+	// destruct right away
+	if (d_embeddedManager == null) {
+	    EmbeddedManager.jniDelete(d_embedded);
+	}
+	// could be in finalizer, so queue in embeddedManager;
+	// unless the embeddedManager is already deleted,
+	// then its (and this') ValidityChecker has been delete.
+	// assuming this is an Expr or a Theorem it's embedded object
+	// has then already been deleted as well.
+	else {
+	    synchronized(d_embeddedManager) {
+		if (!d_embeddedManager.isDeleted()) {
+		    d_embeddedManager.register(this);
+		}
+	    }
+	}
+	d_embedded = null;
+    }
+
+    // ensure that delete is called if finalization occurs
+    public void finalize() throws Throwable {
+	try {
+	    // no embeddedManager, so deleted should have been called
+	    if (d_embeddedManager == null) {
+		if (d_embedded != null) {
+		    assert(false);
+//		    System.out.println("Embedded.Finalizer: should never be called");
+		    throw new Error("Embedded.Finalizer: should never be called");
+		}
+	    }
+	    else if (!d_embeddedManager.isDeleted()) {
+		delete();
+	    }
+	} finally {
+	    super.finalize();
+	}
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/EmbeddedManager.java b/src/bindings/compat/java/src/cvc3/EmbeddedManager.java
new file mode 100644
index 0000000..70b364a
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/EmbeddedManager.java
@@ -0,0 +1,78 @@
+package cvc3;
+
+import java.util.*;
+
+/** Helps to enforce deallocation of a set of embedded objects
+
+    See also Embedded.java
+
+    Cvc3 requires on the C++ level that the ValidityChecker is destructed
+    last, after all other Cvc3 objects (i.e. subclasses of Embedded).
+
+    A 'simple' (but not too cheap) way to achieve this effect of deterministic
+    deallocation in Java without introducing much error prone code is to
+    register all embedded objects (except for the ValidityChecker)
+    with an EmbeddedManager.
+
+    When the ValidityChecker is deleted/finalized it uses the EmbeddedManager
+    to destruct all other Cvc3 objects first.
+*/
+public class EmbeddedManager {
+    // jni methods
+
+    // call the destructor of the c++ object
+    public static native void jniDelete(Object Embedded) throws Cvc3Exception;
+
+
+    // c++ objects which have been registered for deletion
+    private List d_deleted;
+
+
+    /// Constructor
+
+    // delete must be called before EmbeddedManager is garbage collected
+    public EmbeddedManager() {
+	d_deleted = new ArrayList();
+    }
+
+
+    /// Methods
+
+    // true iff delete has been called
+    public synchronized boolean isDeleted() {
+	return (d_deleted == null);
+    }
+
+    // signals that the ValidityChecker destructs itself
+    public synchronized void delete() throws Cvc3Exception {
+	d_deleted = null;
+    }
+
+    // registers a c++ object for deletion
+    public synchronized void register(Embedded embedded) {
+	d_deleted.add(embedded.embedded());
+    }
+
+    // destruct all registered objects
+    public synchronized void cleanUp() throws Cvc3Exception {
+	assert(!isDeleted());
+	Iterator i = d_deleted.iterator();
+	while (i.hasNext()) {
+	    jniDelete(i.next());
+	}
+	d_deleted.clear();
+    }
+
+    // ensure that all embedded objects are deallocated eventually
+    public void finalize() throws Throwable {
+	try {
+	    if (!isDeleted()) {
+		assert(false);
+//		System.out.println("EmbeddedManager.Finalizer: should never be called");
+		throw new Error("EmbeddedManager.Finalizer: should never be called");
+	    }
+	} finally {
+	    super.finalize();
+	}
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/EmbeddedManager_impl.cpp b/src/bindings/compat/java/src/cvc3/EmbeddedManager_impl.cpp
new file mode 100644
index 0000000..9f01b99
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/EmbeddedManager_impl.cpp
@@ -0,0 +1,3 @@
+DEFINITION: Java_cvc3_EmbeddedManager_jniDelete
+void n jobject obj
+deleteEmbedded(env, jobj);
diff --git a/src/bindings/compat/java/src/cvc3/EvalException.java b/src/bindings/compat/java/src/cvc3/EvalException.java
new file mode 100644
index 0000000..6b85d92
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/EvalException.java
@@ -0,0 +1,13 @@
+package cvc3;
+
+import java.util.*;
+
+/** mirrors CVC3::EvalException */
+public class EvalException extends Cvc3Exception {
+
+    private final static long serialVersionUID = 1L;
+
+    public EvalException(String message) {
+	super(message);
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/Expr.java b/src/bindings/compat/java/src/cvc3/Expr.java
new file mode 100644
index 0000000..4093199
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/Expr.java
@@ -0,0 +1,573 @@
+package cvc3;
+
+import java.util.*;
+
+public class Expr extends Embedded {
+    // jni methods
+    private static native boolean
+	jniEquals(Object Expr1, Object Expr2) throws Cvc3Exception;
+    private static native String
+	jniToString(Object Expr) throws Cvc3Exception;
+    private static native void
+	jniPrint(Object Expr, String InputLanguage, boolean dagify) throws Cvc3Exception;
+    private static native int
+	jniHash(Object Expr) throws Cvc3Exception;
+
+    private static native String
+    jniGetKind(Object Expr) throws Cvc3Exception;
+    
+    private static native boolean
+	jniIsFalse(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsTrue(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsBoolConst(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsVar(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsBoundVar(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsString(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsClosure(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsQuantifier(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsLambda(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsApply(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsSymbol(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsTheorem(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsType(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsTerm(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsAtomic(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsAtomicFormula(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsAbsAtomicFormula(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsLiteral(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsAbsLiteral(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsBoolConnective(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsPropAtom(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsPropLiteral(Object Expr) throws Cvc3Exception;
+    private static native boolean
+    jniIsArrayLiteral(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsEq(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsNot(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsAnd(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsOr(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsITE(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsIff(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsImpl(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsXor(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsForall(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsExists(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsRational(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsUminus(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsPlus(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsMinus(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsMult(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsPow(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsDivide(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsLt(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsLe(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsGt(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsGe(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsSkolem(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsRead(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsWrite(Object Expr) throws Cvc3Exception;
+
+    private static native String
+	jniGetName(Object Expr) throws Cvc3Exception;
+    private static native String
+	jniGetUid(Object Expr) throws Cvc3Exception;
+    private static native String
+	jniGetString(Object Expr) throws Cvc3Exception;
+    private static native Object[]
+	jniGetVars(Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniGetExistential(Object Expr) throws Cvc3Exception;
+    private static native int
+	jniGetBoundIndex(Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniGetBody(Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniGetRational(Object Expr) throws Cvc3Exception;
+    private static native Object[][]
+    jniGetTriggers(Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniGetTheorem(Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniGetType(Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniMkOp(Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniGetOp(Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniGetOpExpr(Object Expr) throws Cvc3Exception;
+
+    private static native boolean
+	jniIsNull(Object Expr) throws Cvc3Exception;
+    private static native int
+	jniArity(Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniGetKid(Object Expr, int i) throws Cvc3Exception;
+    private static native Object[]
+	jniGetKids(Object Expr) throws Cvc3Exception;
+
+    private static native Object
+    jniSubstExpr(Object Expr, Object[] oldExprs, Object[] newExprs) throws Cvc3Exception;
+
+    private static native boolean
+	jniIsBvLt(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsBvLe(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsBvGt(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsBvGe(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsBvPlus(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsBvSub(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsBvConst(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsBvExtract(Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniIsBvConcat(Object Expr) throws Cvc3Exception;
+
+
+    /// Constructor
+
+    public Expr(Object Expr, EmbeddedManager embeddedManager) {
+	super(Expr, embeddedManager);
+    }
+
+
+    /// API (immutable)
+
+
+    // 'Problem' with equals/hashCode:
+    // this is based on the wrapped c++ expressions.
+    // as a consequence two Expr objects are equal iff
+    // the wrapped expression is equal,
+    // and are indistinguishable for example in a HashMap.
+    
+    public boolean equals(Object o) {
+	if (this == o) return true;
+
+	if (!(o instanceof Expr)) return false;
+	boolean result = false;
+	try {
+	    result = jniEquals(embedded(), ((Embedded)o).embedded());
+	} catch (Cvc3Exception e) {
+	    assert(false);
+	}
+	return result;
+    } 
+
+    // must return the same hash code for two objects if equals returns true
+    public int hashCode() {
+	try {
+	    if (!jniIsNull(embedded())) {
+		return jniHash(embedded());
+	    }
+	} catch (Cvc3Exception e) {
+	    assert(false);
+	}
+	assert(false);
+	return 0;
+    }
+    
+    public Expr subst(List oldExprs, List newExprs) throws Cvc3Exception {
+      assert(JniUtils.listInstanceof(oldExprs, Expr.class));      
+      assert(JniUtils.listInstanceof(newExprs, Expr.class));      
+      return new Expr(jniSubstExpr(embedded(), JniUtils.unembedList(oldExprs),
+        JniUtils.unembedList(newExprs)), embeddedManager());
+    }
+    
+    public String toString() {
+	String result = "";
+	try {
+	    result = jniToString(embedded());
+	} catch (Cvc3Exception e) {
+	    assert(false);
+	}
+	return result;
+    }
+
+    public void print(InputLanguage lang, boolean dagify) throws Cvc3Exception {
+	jniPrint(embedded(), lang.toString(), dagify);
+    }
+
+    public void print(boolean dagify) throws Cvc3Exception {
+	print(InputLanguage.PRESENTATION, dagify);
+    }
+
+    public void print() throws Cvc3Exception {
+      print(false);
+    }
+
+    public String getKind() throws Cvc3Exception {
+      return jniGetKind(embedded());
+    }
+    
+    // Core expression testers
+
+
+    public boolean isFalse() throws Cvc3Exception {
+	return jniIsFalse(embedded());
+    }
+
+    public boolean isTrue() throws Cvc3Exception {
+	return jniIsTrue(embedded());
+    }
+
+    public boolean isBooleanConst() throws Cvc3Exception {
+	return jniIsBoolConst(embedded());
+    }
+
+    public boolean isVar() throws Cvc3Exception {
+	return jniIsVar(embedded());
+    }
+
+    public boolean isBoundVar() throws Cvc3Exception {
+	return jniIsBoundVar(embedded());
+    }
+
+    public boolean isString() throws Cvc3Exception {
+	return jniIsString(embedded());
+    }
+
+    public boolean isClosure() throws Cvc3Exception {
+	return jniIsClosure(embedded());
+    }
+
+    public boolean isQuantifier() throws Cvc3Exception {
+	return jniIsQuantifier(embedded());
+    }
+
+    public boolean isLambda() throws Cvc3Exception {
+	return jniIsLambda(embedded());
+    }
+
+    public boolean isApply() throws Cvc3Exception {
+	return jniIsApply(embedded());
+    }
+
+    public boolean isSymbol() throws Cvc3Exception {
+	return jniIsSymbol(embedded());
+    }
+
+    public boolean isTheorem() throws Cvc3Exception {
+	return jniIsTheorem(embedded());
+    }
+
+    public boolean isType() throws Cvc3Exception {
+	return jniIsType(embedded());
+    }
+
+
+
+
+    public boolean isTerm() throws Cvc3Exception {
+	return jniIsTerm(embedded());
+    }
+
+    public boolean isAtomic() throws Cvc3Exception {
+	return jniIsAtomic(embedded());
+    }
+
+    public boolean isAtomicFormula() throws Cvc3Exception {
+	return jniIsAtomicFormula(embedded());
+    }
+
+    public boolean isAbsAtomicFormula() throws Cvc3Exception {
+	return jniIsAbsAtomicFormula(embedded());
+    }
+
+    public boolean isLiteral() throws Cvc3Exception {
+	return jniIsLiteral(embedded());
+    }
+
+    public boolean isAbsLiteral() throws Cvc3Exception {
+	return jniIsAbsLiteral(embedded());
+    }
+
+    public boolean isBoolConnective() throws Cvc3Exception {
+	return jniIsBoolConnective(embedded());
+    }
+
+    public boolean isPropAtom() throws Cvc3Exception {
+	return jniIsPropAtom(embedded());
+    }
+
+    public boolean isPropLiteral() throws Cvc3Exception {
+	return jniIsPropLiteral(embedded());
+    }
+
+    public boolean isArrayLiteral() throws Cvc3Exception {
+      return jniIsArrayLiteral(embedded());
+    }
+
+    public boolean isEq() throws Cvc3Exception {
+	return jniIsEq(embedded());
+    }
+
+    public boolean isNot() throws Cvc3Exception {
+	return jniIsNot(embedded());
+    }
+
+
+    public boolean isAnd() throws Cvc3Exception {
+	return jniIsAnd(embedded());
+    }
+
+
+    public boolean isOr() throws Cvc3Exception {
+	return jniIsOr(embedded());
+    }
+
+
+    public boolean isITE() throws Cvc3Exception {
+	return jniIsITE(embedded());
+    }
+
+
+    public boolean isIff() throws Cvc3Exception {
+	return jniIsIff(embedded());
+    }
+
+
+    public boolean isImpl() throws Cvc3Exception {
+	return jniIsImpl(embedded());
+    }
+
+
+    public boolean isXor() throws Cvc3Exception {
+	return jniIsXor(embedded());
+    }
+
+
+    public boolean isForall() throws Cvc3Exception {
+	return jniIsForall(embedded());
+    }
+
+
+    public boolean isExists() throws Cvc3Exception {
+	return jniIsExists(embedded());
+    }
+
+
+    public boolean isRational() throws Cvc3Exception {
+	return jniIsRational(embedded());
+    }
+
+    public boolean isUminus() throws Cvc3Exception {
+	return jniIsUminus(embedded());
+    }
+
+    public boolean isPlus() throws Cvc3Exception {
+	return jniIsPlus(embedded());
+    }
+
+    public boolean isMinus() throws Cvc3Exception {
+	return jniIsMinus(embedded());
+    }
+
+    public boolean isMult() throws Cvc3Exception {
+	return jniIsMult(embedded());
+    }
+
+    public boolean isPow() throws Cvc3Exception {
+	return jniIsPow(embedded());
+    }
+
+    public boolean isDivide() throws Cvc3Exception {
+	return jniIsDivide(embedded());
+    }
+
+    public boolean isLt() throws Cvc3Exception {
+	return jniIsLt(embedded());
+    }
+
+    public boolean isLe() throws Cvc3Exception {
+	return jniIsLe(embedded());
+    }
+
+    public boolean isGt() throws Cvc3Exception {
+	return jniIsGt(embedded());
+    }
+
+    public boolean isGe() throws Cvc3Exception {
+	return jniIsGe(embedded());
+    }
+
+    public boolean isSkolem() throws Cvc3Exception {
+	return jniIsSkolem(embedded());
+    }
+
+    public boolean isRead() throws Cvc3Exception {
+	return jniIsRead(embedded());
+    }
+
+    public boolean isWrite() throws Cvc3Exception {
+	return jniIsWrite(embedded());
+    }
+
+    public boolean isBvLe() throws Cvc3Exception {
+	return jniIsBvLe(embedded());
+    }
+
+    public boolean isBvLt() throws Cvc3Exception {
+	return jniIsBvLt(embedded());
+    }
+
+    public boolean isBvGe() throws Cvc3Exception {
+	return jniIsBvGe(embedded());
+    }
+
+    public boolean isBvGt() throws Cvc3Exception {
+	return jniIsBvGt(embedded());
+    }
+
+    public boolean isBvPlus() throws Cvc3Exception {
+	return jniIsBvPlus(embedded());
+    }
+
+    public boolean isBvSub() throws Cvc3Exception {
+	return jniIsBvSub(embedded());
+    }
+
+    public boolean isBvConstant() throws Cvc3Exception {
+	return jniIsBvConst(embedded());
+    }
+
+    public boolean isBvConcat() throws Cvc3Exception {
+	return jniIsBvConcat(embedded());
+    }
+
+    public boolean isBvExtract() throws Cvc3Exception {
+	return jniIsBvExtract(embedded());
+    }
+
+
+    public String getName() throws Cvc3Exception {
+	assert(!jniIsNull(embedded()));
+	return jniGetName(embedded());
+    }
+
+    public String getUid() throws Cvc3Exception {
+	assert(jniIsBoundVar(embedded()));
+	return jniGetUid(embedded());
+    }
+
+    public String getString() throws Cvc3Exception {
+	assert(jniIsString(embedded()));
+	return jniGetString(embedded());
+    }
+
+    public List getVars() throws Cvc3Exception {
+	assert(jniIsClosure(embedded()));
+	Object[] vars = jniGetVars(embedded());
+	return JniUtils.embedList(vars, Expr.class, embeddedManager());
+    }
+
+    public List getTriggers() throws Cvc3Exception {
+      assert (jniIsClosure(embedded()));
+      return JniUtils.embedListList(jniGetTriggers(embedded()), Expr.class, embeddedManager());
+    }
+  
+    public Expr getExistential() throws Cvc3Exception {
+	assert(jniIsSkolem(embedded()));
+	return new Expr(jniGetExistential(embedded()), embeddedManager());
+    }
+
+    public int getBoundIndex() throws Cvc3Exception {
+	assert(jniIsSkolem(embedded()));
+	return jniGetBoundIndex(embedded());
+    }
+ 
+    public Expr getBody() throws Cvc3Exception {
+	assert(jniIsClosure(embedded()));
+	return new Expr(jniGetBody(embedded()), embeddedManager());
+    }
+
+    public Rational getRational() throws Cvc3Exception {
+	assert(isRational());
+	return new Rational(jniGetRational(embedded()), embeddedManager());
+    }
+
+    public Theorem getTheorem() throws Cvc3Exception {
+	assert(jniIsTheorem(embedded()));
+	return new Theorem(jniGetTheorem(embedded()), embeddedManager());
+    }
+
+    public TypeMut getType() throws Cvc3Exception {
+	return new TypeMut(jniGetType(embedded()), embeddedManager());
+    }
+
+    public OpMut mkOp() throws Cvc3Exception {
+		return new OpMut(jniMkOp(embedded()), embeddedManager());
+	}
+    
+    public OpMut getOp() throws Cvc3Exception {
+	return new OpMut(jniGetOp(embedded()), embeddedManager());
+    }
+
+    public ExprMut getOpExpr() throws Cvc3Exception {
+	return new ExprMut(jniGetOpExpr(embedded()), embeddedManager());
+    }
+
+    public boolean isNull() throws Cvc3Exception {
+	return jniIsNull(embedded());
+    }
+
+    public int arity() throws Cvc3Exception {
+	return jniArity(embedded());
+    }
+
+    public Expr getChild(int i) throws Cvc3Exception {
+	assert(i >= 0 && i < arity());
+	return new Expr(jniGetKid(embedded(), i), embeddedManager());
+    }
+
+    public List getChildren() throws Cvc3Exception {
+        return JniUtils.embedList(jniGetKids(embedded()), Expr.class, embeddedManager());
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/ExprManager.java b/src/bindings/compat/java/src/cvc3/ExprManager.java
new file mode 100644
index 0000000..a7d809f
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/ExprManager.java
@@ -0,0 +1,26 @@
+package cvc3;
+
+import java.util.*;
+
+public class ExprManager extends Embedded {
+    // jni methods
+    private static native String jniGetInputLanguage(Object ExprManager) throws Cvc3Exception;
+    private static native String jniGetOutputLanguage(Object ExprManager) throws Cvc3Exception;
+
+    /// Constructor
+
+    public ExprManager(Object ExprManager, EmbeddedManager embeddedManager) {
+	super(ExprManager, embeddedManager);
+    }
+
+
+    /// API (immutable)
+
+    public InputLanguage getInputLanguage() throws Cvc3Exception {
+	return InputLanguage.get(jniGetInputLanguage(embedded()));
+    }
+
+    public InputLanguage getOutputLanguage() throws Cvc3Exception {
+	return InputLanguage.get(jniGetOutputLanguage(embedded()));
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/ExprManagerMut.java b/src/bindings/compat/java/src/cvc3/ExprManagerMut.java
new file mode 100644
index 0000000..92b53ba
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/ExprManagerMut.java
@@ -0,0 +1,16 @@
+package cvc3;
+
+import java.util.*;
+
+public class ExprManagerMut extends ExprManager {
+    // jni methods
+
+    /// Constructor
+
+    public ExprManagerMut(Object ExprManagerMut, EmbeddedManager embeddedManager) {
+	super(ExprManagerMut, embeddedManager);
+    }
+
+
+    /// API (mutable)
+}
diff --git a/src/bindings/compat/java/src/cvc3/ExprManager_impl.cpp b/src/bindings/compat/java/src/cvc3/ExprManager_impl.cpp
new file mode 100644
index 0000000..b96053c
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/ExprManager_impl.cpp
@@ -0,0 +1,7 @@
+DEFINITION: Java_cvc3_ExprManager_jniGetInputLanguage
+jstring c ExprManager exprManager
+return toJava(env, exprManager->getInputLang());
+
+DEFINITION: Java_cvc3_ExprManager_jniGetOutputLanguage
+jstring c ExprManager exprManager
+return toJava(env, exprManager->getOutputLang());
diff --git a/src/bindings/compat/java/src/cvc3/ExprMut.java b/src/bindings/compat/java/src/cvc3/ExprMut.java
new file mode 100644
index 0000000..65f0c92
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/ExprMut.java
@@ -0,0 +1,18 @@
+package cvc3;
+
+import java.util.*;
+
+public class ExprMut extends Expr {
+    // jni methods
+    
+    
+    /// Constructor
+
+    // create embedded object
+    public ExprMut(Object ExprMut, EmbeddedManager embeddedManager) {
+	super(ExprMut, embeddedManager);
+    }
+
+    
+    /// API (mutable)
+}
diff --git a/src/bindings/compat/java/src/cvc3/ExprMut_impl.cpp b/src/bindings/compat/java/src/cvc3/ExprMut_impl.cpp
new file mode 100644
index 0000000..e69de29
diff --git a/src/bindings/compat/java/src/cvc3/Expr_impl.cpp b/src/bindings/compat/java/src/cvc3/Expr_impl.cpp
new file mode 100644
index 0000000..8addc32
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/Expr_impl.cpp
@@ -0,0 +1,329 @@
+//INCLUDE: <expr.h>
+//INCLUDE: <theory_array.h>
+//INCLUDE: <theory_arith.h>
+//INCLUDE: <theory_bitvector.h>
+
+DEFINITION: Java_cvc3_Expr_jniEquals
+jboolean c Expr expr1 c Expr expr2
+return *expr1 == *expr2;
+
+DEFINITION: Java_cvc3_Expr_jniToString
+jstring c Expr expr
+return toJava(env, expr->toString());
+
+DEFINITION: Java_cvc3_Expr_jniPrint
+void c Expr expr n string lang n bool dagify
+dagify ? expr->pprint() : expr->pprintnodag();
+
+DEFINITION: Java_cvc3_Expr_jniHash
+jint c Expr expr
+return expr->hash();
+
+DEFINITION: Java_cvc3_Expr_jniGetKind
+jstring c Expr expr
+return toJava(env, expr->getEM()->getKindName( expr->getKind() ));
+
+DEFINITION: Java_cvc3_Expr_jniIsFalse
+jboolean c Expr expr
+return expr->isFalse();
+
+DEFINITION: Java_cvc3_Expr_jniIsTrue
+jboolean c Expr expr
+return expr->isTrue();
+
+DEFINITION: Java_cvc3_Expr_jniIsBoolConst
+jboolean c Expr expr
+return expr->isBoolConst();
+
+DEFINITION: Java_cvc3_Expr_jniIsVar
+jboolean c Expr expr
+return expr->isVar();
+
+DEFINITION: Java_cvc3_Expr_jniIsBoundVar
+jboolean c Expr expr
+return expr->isBoundVar();
+
+DEFINITION: Java_cvc3_Expr_jniIsString
+jboolean c Expr expr
+return expr->isString();
+
+DEFINITION: Java_cvc3_Expr_jniIsClosure
+jboolean c Expr expr
+return expr->isClosure();
+
+DEFINITION: Java_cvc3_Expr_jniIsQuantifier
+jboolean c Expr expr
+return expr->isQuantifier();
+
+DEFINITION: Java_cvc3_Expr_jniIsLambda
+jboolean c Expr expr
+return expr->isLambda();
+
+DEFINITION: Java_cvc3_Expr_jniIsApply
+jboolean c Expr expr
+return expr->isApply();
+
+DEFINITION: Java_cvc3_Expr_jniIsSymbol
+jboolean c Expr expr
+return expr->isSymbol();
+
+DEFINITION: Java_cvc3_Expr_jniIsTheorem
+jboolean c Expr expr
+return expr->isTheorem();
+
+DEFINITION: Java_cvc3_Expr_jniIsType
+jboolean c Expr expr
+return expr->isType();
+
+
+
+DEFINITION: Java_cvc3_Expr_jniIsTerm
+jboolean c Expr expr
+return expr->isTerm();
+
+DEFINITION: Java_cvc3_Expr_jniIsAtomic
+jboolean c Expr expr
+return expr->isAtomic();
+
+DEFINITION: Java_cvc3_Expr_jniIsAtomicFormula
+jboolean c Expr expr
+return expr->isAtomicFormula();
+
+DEFINITION: Java_cvc3_Expr_jniIsAbsAtomicFormula
+jboolean c Expr expr
+return expr->isAbsAtomicFormula();
+
+DEFINITION: Java_cvc3_Expr_jniIsLiteral
+jboolean c Expr expr
+return expr->isLiteral();
+
+DEFINITION: Java_cvc3_Expr_jniIsAbsLiteral
+jboolean c Expr expr
+return expr->isAbsLiteral();
+
+DEFINITION: Java_cvc3_Expr_jniIsBoolConnective
+jboolean c Expr expr
+return expr->isBoolConnective();
+
+DEFINITION: Java_cvc3_Expr_jniIsPropAtom
+jboolean c Expr expr
+return expr->isPropAtom();
+
+DEFINITION: Java_cvc3_Expr_jniIsPropLiteral
+jboolean c Expr expr
+return expr->isPropLiteral();
+
+DEFINITION: Java_cvc3_Expr_jniIsArrayLiteral
+jboolean c Expr expr
+return CVC3::isArrayLiteral(*expr);
+
+
+DEFINITION: Java_cvc3_Expr_jniIsEq
+jboolean c Expr expr
+return expr->isEq();
+
+DEFINITION: Java_cvc3_Expr_jniIsNot
+jboolean c Expr expr
+return expr->isNot();
+
+DEFINITION: Java_cvc3_Expr_jniIsAnd
+jboolean c Expr expr
+return expr->isAnd();
+
+DEFINITION: Java_cvc3_Expr_jniIsOr
+jboolean c Expr expr
+return expr->isOr();
+
+DEFINITION: Java_cvc3_Expr_jniIsITE
+jboolean c Expr expr
+return expr->isITE();
+
+DEFINITION: Java_cvc3_Expr_jniIsIff
+jboolean c Expr expr
+return expr->isIff();
+
+DEFINITION: Java_cvc3_Expr_jniIsImpl
+jboolean c Expr expr
+return expr->isImpl();
+
+DEFINITION: Java_cvc3_Expr_jniIsXor
+jboolean c Expr expr
+return expr->isXor();
+
+DEFINITION: Java_cvc3_Expr_jniIsForall
+jboolean c Expr expr
+return expr->isForall();
+
+DEFINITION: Java_cvc3_Expr_jniIsExists
+jboolean c Expr expr
+return expr->isExists();
+
+DEFINITION: Java_cvc3_Expr_jniIsRational
+jboolean c Expr expr
+return expr->isRational();
+
+DEFINITION: Java_cvc3_Expr_jniIsUminus
+jboolean c Expr expr
+return expr->getKind() == UMINUS;
+
+DEFINITION: Java_cvc3_Expr_jniIsPlus
+jboolean c Expr expr
+return expr->getKind() == PLUS;
+
+DEFINITION: Java_cvc3_Expr_jniIsMinus
+jboolean c Expr expr
+return expr->getKind() == MINUS;
+
+DEFINITION: Java_cvc3_Expr_jniIsMult
+jboolean c Expr expr
+return expr->getKind() == MULT;
+
+DEFINITION: Java_cvc3_Expr_jniIsPow
+jboolean c Expr expr
+return expr->getKind() == POW;
+
+DEFINITION: Java_cvc3_Expr_jniIsDivide
+jboolean c Expr expr
+return expr->getKind() == DIVIDE;
+
+DEFINITION: Java_cvc3_Expr_jniIsLt
+jboolean c Expr expr
+return expr->getKind() == LT;
+
+DEFINITION: Java_cvc3_Expr_jniIsLe
+jboolean c Expr expr
+return expr->getKind() == LE;
+
+DEFINITION: Java_cvc3_Expr_jniIsGt
+jboolean c Expr expr
+return expr->getKind() == GT;
+
+DEFINITION: Java_cvc3_Expr_jniIsGe
+jboolean c Expr expr
+return expr->getKind() == GE;
+
+DEFINITION: Java_cvc3_Expr_jniIsSkolem
+jboolean c Expr expr
+return expr->isSkolem();
+
+
+DEFINITION: Java_cvc3_Expr_jniIsRead
+jboolean c Expr expr
+return expr->getKind() == READ;
+
+DEFINITION: Java_cvc3_Expr_jniIsWrite
+jboolean c Expr expr
+return expr->getKind() == WRITE;
+
+
+DEFINITION: Java_cvc3_Expr_jniGetName
+jstring c Expr expr
+return toJava(env, expr->getName());
+
+DEFINITION: Java_cvc3_Expr_jniGetUid
+jstring c Expr expr
+return toJava(env, expr->getUid());
+
+DEFINITION: Java_cvc3_Expr_jniGetString
+jstring c Expr expr
+return toJava(env, expr->getString());
+
+DEFINITION: Java_cvc3_Expr_jniGetVars
+jobjectArray c Expr expr
+return toJavaVConstRef(env, expr->getVars());
+
+DEFINITION: Java_cvc3_Expr_jniGetExistential
+jobject c Expr expr
+return embed_copy<Expr>(env, expr->getExistential());
+
+DEFINITION: Java_cvc3_Expr_jniGetBoundIndex
+jint c Expr expr
+return expr->getBoundIndex();
+
+DEFINITION: Java_cvc3_Expr_jniGetBody
+jobject c Expr expr
+return embed_copy<Expr>(env, expr->getBody());
+
+DEFINITION: Java_cvc3_Expr_jniGetRational
+jobject c Expr expr
+return embed_const_ref<Rational>(env, &expr->getRational());
+
+DEFINITION: Java_cvc3_Expr_jniGetTriggers
+jobjectArray c Expr expr
+return toJavaVVConstRef(env, expr->getTriggers());
+
+DEFINITION: Java_cvc3_Expr_jniGetTheorem
+jobject c Expr expr
+return embed_copy<Theorem>(env, expr->getTheorem());
+
+DEFINITION: Java_cvc3_Expr_jniGetType
+jobject c Expr expr
+return embed_copy<Type>(env, expr->getType());
+
+DEFINITION: Java_cvc3_Expr_jniMkOp
+jobject c Expr expr
+return embed_copy<Op>(env, expr->mkOp());
+
+DEFINITION: Java_cvc3_Expr_jniGetOp
+jobject c Expr expr
+return embed_copy<Op>(env, expr->getOp());
+
+DEFINITION: Java_cvc3_Expr_jniGetOpExpr
+jobject c Expr expr
+return embed_copy<Expr>(env, expr->getOpExpr());
+
+DEFINITION: Java_cvc3_Expr_jniIsNull
+jboolean c Expr expr
+return expr->isNull();
+
+DEFINITION: Java_cvc3_Expr_jniArity
+jint c Expr expr
+return expr->arity();
+
+DEFINITION: Java_cvc3_Expr_jniGetKid
+jobject c Expr expr n int i
+return embed_copy<Expr>(env, (*expr)[ji]);
+
+DEFINITION: Java_cvc3_Expr_jniGetKids
+jobjectArray c Expr expr
+return toJavaVConstRef(env, expr->getKids());
+
+DEFINITION: Java_cvc3_Expr_jniSubstExpr
+jobject c Expr e cv Expr oldExprs cv Expr newExprs
+return embed_copy(env, e->substExpr(oldExprs,newExprs));
+
+DEFINITION: Java_cvc3_Expr_jniIsBvLt
+jboolean c Expr expr
+return expr->getKind() == BVLT;
+
+DEFINITION: Java_cvc3_Expr_jniIsBvLe
+jboolean c Expr expr
+return expr->getKind() == BVLE;
+
+DEFINITION: Java_cvc3_Expr_jniIsBvGt
+jboolean c Expr expr
+return expr->getKind() == BVGT;
+
+DEFINITION: Java_cvc3_Expr_jniIsBvGe
+jboolean c Expr expr
+return expr->getKind() == BVGE;
+
+DEFINITION: Java_cvc3_Expr_jniIsBvPlus
+jboolean c Expr expr
+return expr->getKind() == BVPLUS;
+
+DEFINITION: Java_cvc3_Expr_jniIsBvSub
+jboolean c Expr expr
+return expr->getKind() == BVSUB;
+
+DEFINITION: Java_cvc3_Expr_jniIsBvConst
+jboolean c Expr expr
+return expr->getKind() == BVCONST;
+
+DEFINITION: Java_cvc3_Expr_jniIsBvExtract
+jboolean c Expr expr
+return expr->getKind() == EXTRACT;
+
+DEFINITION: Java_cvc3_Expr_jniIsBvConcat
+jboolean c Expr expr
+return expr->getKind() == CONCAT;
diff --git a/src/bindings/compat/java/src/cvc3/Flag.java b/src/bindings/compat/java/src/cvc3/Flag.java
new file mode 100644
index 0000000..82230c0
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/Flag.java
@@ -0,0 +1,63 @@
+package cvc3;
+
+import java.util.*;
+
+public class Flag extends Embedded {
+    // jni methods
+    private static native boolean  jniIsNull(Object Flag) throws Cvc3Exception;
+    private static native boolean  jniIsBool(Object Flag) throws Cvc3Exception;
+    private static native boolean  jniIsInt(Object Flag) throws Cvc3Exception;
+    private static native boolean  jniIsString(Object Flag) throws Cvc3Exception;
+    private static native boolean  jniIsStringVec(Object Flag) throws Cvc3Exception;
+    private static native boolean  jniGetBool(Object Flag) throws Cvc3Exception;
+    private static native int      jniGetInt(Object Flag) throws Cvc3Exception;
+    private static native String   jniGetString(Object Flag) throws Cvc3Exception;
+    private static native String   jniGetHelp(Object Flag) throws Cvc3Exception;
+
+
+    /// Constructor
+
+    // create embedded object
+    public Flag(Object Flag, EmbeddedManager embeddedManager) {
+	super(Flag, embeddedManager);
+    }
+
+
+    /// API immutable
+    
+    boolean isNull() throws Cvc3Exception {
+	return jniIsNull(embedded());
+    }
+
+    boolean isBool() throws Cvc3Exception {
+	return jniIsBool(embedded());
+    }
+
+    boolean isInt() throws Cvc3Exception {
+	return jniIsInt(embedded());
+    }
+
+    boolean isString() throws Cvc3Exception {
+	return jniIsString(embedded());
+    }
+
+    boolean isStringVec() throws Cvc3Exception {
+	return jniIsStringVec(embedded());
+    }
+
+    boolean getBool() throws Cvc3Exception {
+	return jniGetBool(embedded());
+    }
+
+    int getInt() throws Cvc3Exception {
+	return jniGetInt(embedded());
+    }
+
+    String getString() throws Cvc3Exception {
+	return jniGetString(embedded());
+    }
+
+    String getHelp() throws Cvc3Exception {
+	return jniGetHelp(embedded());
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/Flags.java b/src/bindings/compat/java/src/cvc3/Flags.java
new file mode 100644
index 0000000..957a6f2
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/Flags.java
@@ -0,0 +1,32 @@
+package cvc3;
+
+import java.util.*;
+
+public abstract class Flags extends Embedded {
+    // jni methods
+    private static native Object[] jniGetFlags(Object Flags, String prefix) throws Cvc3Exception;
+    private static native Object jniGetFlag(Object Flags, String name) throws Cvc3Exception;
+
+
+    /// Constructor
+
+    // create embedded object
+    public Flags(Object Flags, EmbeddedManager embeddedManager) {
+	super(Flags, embeddedManager);
+    }
+
+    /// API (immutable)
+
+
+    // get names of all flags starting with prefix
+    public List getFlags(String prefix) throws Cvc3Exception {
+	Object[] flags = jniGetFlags(embedded(), prefix);
+	assert(flags instanceof String[]);
+	return Arrays.asList(flags);
+    }
+
+    // get the value of a flag by name (without prefix -/+)
+    public Flag getFlag(String name) throws Cvc3Exception {
+	return new Flag(jniGetFlag(embedded(), name), embeddedManager());
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/FlagsMut.java b/src/bindings/compat/java/src/cvc3/FlagsMut.java
new file mode 100644
index 0000000..cb0431d
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/FlagsMut.java
@@ -0,0 +1,39 @@
+package cvc3;
+
+import java.util.*;
+
+public class FlagsMut extends Flags {
+    // jni methods
+    private static native void jniSetFlag1(Object Flags, String name, boolean value) throws Cvc3Exception;
+    private static native void jniSetFlag2(Object Flags, String name, int value) throws Cvc3Exception;
+    private static native void jniSetFlag3(Object Flags, String name, String value) throws Cvc3Exception;
+    private static native void jniSetFlag4(Object Flags, String map, String name, boolean value) throws Cvc3Exception;
+    
+    
+    /// Constructor
+
+    // create embedded object
+    public FlagsMut(Object FlagsMut, EmbeddedManager embeddedManager) {
+	super(FlagsMut, embeddedManager);
+    }
+
+    
+    /// API (mutable)
+
+    public void setFlag(String name, boolean value) throws Cvc3Exception {
+        jniSetFlag1(embedded(), name, value);
+    }
+
+    public void setFlag(String name, int value) throws Cvc3Exception {
+        jniSetFlag2(embedded(), name, value);
+    }
+
+    public void setFlag(String name, String value) throws Cvc3Exception {
+        jniSetFlag3(embedded(), name, value);
+    }
+
+    // flag representing set of options, e.g. trace
+    public void setFlag(String map, String name, boolean value) throws Cvc3Exception {
+        jniSetFlag4(embedded(), map, name, value);
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/FormulaValue.java b/src/bindings/compat/java/src/cvc3/FormulaValue.java
new file mode 100644
index 0000000..c042593
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/FormulaValue.java
@@ -0,0 +1,36 @@
+package cvc3;
+
+import java.util.*;
+
+/** A truth value of a formula. */
+public class FormulaValue {
+    private final String d_result;
+
+    protected FormulaValue(String result) {
+	d_result = result;
+    }
+
+
+    // names of c++ enum values
+    public static final FormulaValue TRUE = new FormulaValue("TRUE_VAL");
+    public static final FormulaValue FALSE = new FormulaValue("FALSE_VAL");
+    public static final FormulaValue UNKNOWN = new FormulaValue("UNKNOWN_VAL");
+
+    // the FormulaValue corresponding to a c++ enum value by name
+    public static FormulaValue get(String value) throws DebugException {
+	if (value.equals(TRUE.toString())) {
+	    return TRUE;
+	} else if (value.equals(FALSE.toString())) {
+	    return FALSE;
+	} else if (value.equals(UNKNOWN.toString())) {
+	    return UNKNOWN;
+	} else {
+	    throw new DebugException("FormulaValue.constructor: unknown enum value: " + value);
+	}
+    }
+
+    // the FormulaValue's c++ enum value
+    public String toString() {
+	return d_result;
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/InputLanguage.java b/src/bindings/compat/java/src/cvc3/InputLanguage.java
new file mode 100644
index 0000000..46cf09a
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/InputLanguage.java
@@ -0,0 +1,36 @@
+package cvc3;
+
+import java.util.*;
+
+/** See comments about mapping c++ enums to java in QueryResult */
+public class InputLanguage {
+    private final String d_lang;
+
+    private InputLanguage(String lang) {
+	d_lang = lang;
+    }
+
+
+    // names of c++ enum values
+    public static final InputLanguage PRESENTATION = new InputLanguage("PRESENTATION");
+    public static final InputLanguage SMTLIB = new InputLanguage("SMTLIB");
+    public static final InputLanguage LISP = new InputLanguage("LISP");
+
+    // the InputLanguage corresponding to a c++ enum value by name
+    public static InputLanguage get(String value) throws DebugException {
+	if (value.equals(PRESENTATION.toString())) {
+	    return PRESENTATION;
+	} else if (value.equals(SMTLIB.toString())) {
+	    return SMTLIB;
+	} else if (value.equals(LISP.toString())) {
+	    return LISP;
+	} else {
+	    throw new DebugException("InputLanguage.constructor: unknown enum value: " + value);
+	}
+    }
+
+    // the InputLanguage's c++ enum value
+    public String toString() {
+	return d_lang;
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/JniUtils.cpp b/src/bindings/compat/java/src/cvc3/JniUtils.cpp
new file mode 100644
index 0000000..ddab665
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/JniUtils.cpp
@@ -0,0 +1,194 @@
+#include "JniUtils.h"
+
+// for CVC4: removed; don't need these
+//#include <typecheck_exception.h>
+//#include <sound_exception.h>
+//#include <eval_exception.h>
+//#include <command_line_exception.h>
+//#include <parser_exception.h>
+//#include <smtlib_exception.h>
+
+// for CVC4: need these for compatibility layer
+#include "compat/cvc3_compat.h"
+#include "Embedded.h"
+
+using namespace std;
+using namespace CVC3;
+
+namespace Java_cvc3_JniUtils {
+
+  /// Embedding of c++ objects in java objects
+
+  Embedded* unembed(JNIEnv* env, jobject jobj) {
+    Embedded* embedded = (Embedded*) env->GetDirectBufferAddress(jobj);
+    DebugAssert(embedded != NULL, "JniUtils::unembed: embedded object is NULL");
+    return embedded;
+  }
+
+  void deleteEmbedded(JNIEnv* env, jobject jobj) {
+    Embedded* embedded = unembed(env, jobj);
+    DebugAssert(embedded != NULL, "JniUtils::deleteEmbedded: embedded object is NULL");
+    delete embedded;
+  }
+
+
+
+  /// Conversions between c++ and java
+
+  bool toCpp(jboolean j) {
+    return (bool)j;
+  }
+
+  jstring toJava(JNIEnv* env, const string& cstring) {
+    return env->NewStringUTF(cstring.c_str());
+  }
+  
+  jstring toJava(JNIEnv* env, const char* cstring) {
+    return env->NewStringUTF(cstring);
+  }
+
+  string toCpp(JNIEnv* env, const jstring& jstring) {
+    const char* cstring = env->GetStringUTFChars(jstring, NULL);
+    string string(cstring);
+    env->ReleaseStringUTFChars(jstring, cstring);
+    return string;
+  }
+  
+  jstring toJava(JNIEnv* env, CVC3::QueryResult result) {
+    switch (result) {
+    case SATISFIABLE: return toJava(env, "SATISFIABLE");
+    case UNSATISFIABLE: return toJava(env, "UNSATISFIABLE");
+    case ABORT: return toJava(env, "ABORT");
+    case UNKNOWN: return toJava(env, "UNKNOWN");
+    }
+    
+    DebugAssert(false, "JniUtils::toJava(QueryResult): unreachable");
+    return toJava(env, ""); // to avoid compiler warning
+  }
+
+  jstring toJava(JNIEnv* env, CVC3::FormulaValue result) {
+    switch (result) {
+    case TRUE_VAL: return toJava(env, "TRUE_VAL");
+    case FALSE_VAL: return toJava(env, "FALSE_VAL");
+    case UNKNOWN_VAL: return toJava(env, "UNKNOWN_VAL");
+    }
+    
+    DebugAssert(false, "JniUtils::toJava(FormulaValue): unreachable");
+    return toJava(env, "UNDEFINED");
+  }
+
+  jstring toJava(JNIEnv* env, CVC3::InputLanguage lang) {
+    switch (lang) {
+    case PRESENTATION_LANG: return toJava(env, "PRESENTATION");
+    case SMTLIB_LANG: return toJava(env, "SMTLIB");
+    case SMTLIB_V2_LANG: return toJava(env, "SMTLIB_V2");
+    //case LISP_LANG: return toJava(env, "LISP");
+    default: /* fall through */;
+    }
+    
+    DebugAssert(false, "JniUtils::toJava(InputLanguage): unreachable");
+    return toJava(env, "UNDEFINED");
+  }
+
+  InputLanguage toCppInputLanguage(JNIEnv* env, const string& lang) {
+    if (lang.compare("PRESENTATION") == 0) {
+      return PRESENTATION_LANG;
+    } else if (lang.compare("SMTLIB") == 0) {
+      return SMTLIB_LANG;
+    } else if (lang.compare("SMTLIB_V2") == 0) {
+      return SMTLIB_V2_LANG;
+    /*
+    } else if (lang.compare("LISP") == 0) {
+      return LISP_LANG;
+    */
+    }
+    
+    DebugAssert(false, "JniUtils::toCpp(InputLanguage): unreachable");
+    return CVC4::language::input::LANG_MAX;
+  }
+
+  void toJava(JNIEnv* env, const Exception& e) {
+    /* for CVC4: don't worry about legacy exception mapping
+    string exceptionName("cvc3/");
+    if (dynamic_cast<const TypecheckException*>(&e) != NULL) {
+      exceptionName += "TypecheckException";
+    } else if (dynamic_cast<const CVC3::SoundException*>(&e) != NULL) {
+      exceptionName += "SoundException";
+    } else if (dynamic_cast<const CVC3::EvalException*>(&e) != NULL) {
+      exceptionName += "EvalException";
+    } else if (dynamic_cast<const CVC3::CLException*>(&e) != NULL) {
+      exceptionName += "CLException";
+    } else if (dynamic_cast<const CVC3::ParserException*>(&e) != NULL) {
+      exceptionName += "ParserException";
+    } else if (dynamic_cast<const CVC3::SmtlibException*>(&e) != NULL) {
+      exceptionName += "SmtlibException";
+    } else if (dynamic_cast<const CVC3::DebugException*>(&e) != NULL) {
+      exceptionName += "DebugException";
+    } else {
+      exceptionName += "Cvc3Exception";
+    }
+    */
+
+    jclass exceptionClass = env->FindClass("java/lang/RuntimeException");
+    // queues up the exception in the Java layer
+    env->ThrowNew(exceptionClass, e.toString().c_str());
+  }
+
+
+  vector<string> toCppV(JNIEnv* env, const jobjectArray& jarray) {
+    vector<string> v;
+    int length = env->GetArrayLength(jarray);
+    for (int i = 0; i < length; ++i) {
+      v.push_back(toCpp(env, (jstring)env->GetObjectArrayElement(jarray, i)));
+    }
+    return v;
+  }
+
+  vector<vector<string> > toCppVV(JNIEnv* env, const jobjectArray& jarray) {
+    vector<vector<string> > v;
+    int length = env->GetArrayLength(jarray);
+    for (int i = 0; i < length; ++i) {
+      jobjectArray jsub = static_cast<jobjectArray>(env->GetObjectArrayElement(jarray, i));
+      v.push_back(toCppV(env, jsub));
+    }
+    return v;
+  }
+
+  vector<vector<vector<string> > > toCppVVV(JNIEnv* env, const jobjectArray& jarray) {
+    vector<vector<vector<string> > > v;
+    int length = env->GetArrayLength(jarray);
+    for (int i = 0; i < length; ++i) {
+      jobjectArray jsub = static_cast<jobjectArray>(env->GetObjectArrayElement(jarray, i));
+      v.push_back(toCppVV(env, jsub));
+    }
+    return v;
+  }
+
+  jobjectArray toJavaV(JNIEnv* env, const vector<string>& v) {
+    jobjectArray jarray = (jobjectArray)
+      env->NewObjectArray(
+	v.size(),
+	env->FindClass("java/lang/String"),
+	env->NewStringUTF(""));
+
+    for(unsigned i = 0; i < v.size(); ++i) {
+      env->SetObjectArrayElement(jarray, i, toJava(env, v[i]));
+    }
+
+    return jarray;
+  }
+
+
+  vector<bool> toCppV(JNIEnv* env, const jbooleanArray& jarray) {
+    int length = env->GetArrayLength(jarray);
+    jboolean* jboolean = env->GetBooleanArrayElements(jarray, NULL);
+
+    vector<bool> v;
+    for (int i = 0; i < length; ++i) {
+      v.push_back(jboolean[i]);
+    }
+    env->ReleaseBooleanArrayElements(jarray, jboolean, JNI_ABORT);
+    
+    return v;
+  }
+}
diff --git a/src/bindings/compat/java/src/cvc3/JniUtils.java b/src/bindings/compat/java/src/cvc3/JniUtils.java
new file mode 100644
index 0000000..6c1376f
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/JniUtils.java
@@ -0,0 +1,227 @@
+package cvc3;
+
+import java.util.*;
+import java.lang.reflect.Constructor;
+
+public class JniUtils {
+
+    // check that list is an instance of a class -
+    // generics would avoid that
+    public static boolean listInstanceof(List list, Class c) {
+	Iterator i = list.iterator();
+	while (i.hasNext()) {
+	    if (!(c.isInstance(i.next()))) return false;
+	}
+	return true;
+    }
+
+    public static boolean listListInstanceof(List listList, Class c) {
+	Iterator i = listList.iterator();
+	while (i.hasNext()) {
+	    Object list = i.next();
+	    assert(list instanceof List);
+	    if (!(listInstanceof((List)list, c))) return false;
+	}
+	return true;
+    }
+
+    public static boolean listListListInstanceof(List listListList, Class c) {
+	Iterator i = listListList.iterator();
+	while (i.hasNext()) {
+	    Object list = i.next();
+	    assert(list instanceof List);
+	    if (!(listListInstanceof((List)list, c))) return false;
+	}
+	return true;
+    }
+
+
+    // embed an array of c++ objects in a list
+    public static List embedList(Object[] cobjects, Class c, EmbeddedManager embeddedManager) {
+	List embedded = new ArrayList();
+
+	try {
+	    Class[] argsC = new Class[2];
+	    argsC[0] = Object.class;
+	    argsC[1] = EmbeddedManager.class;
+	    Constructor constr = c.getConstructor(argsC);
+	    
+	    Object[] args = new Object[2];
+	    for (int i = 0; i < cobjects.length; ++i) {
+		args[0] = cobjects[i];
+		args[1] = embeddedManager;
+		embedded.add(constr.newInstance(args));
+	    }
+	} catch (NoSuchMethodException e) {
+	    System.out.println(e);
+	    assert(false);
+	} catch (InstantiationException e) {
+	    System.out.println(e);
+	    assert(false);
+	} catch (IllegalAccessException e) {
+	    System.out.println(e);
+	    assert(false);
+	} catch (java.lang.reflect.InvocationTargetException e) {
+	    System.out.println(e);
+	    assert(false);
+	}
+	return embedded;
+    }
+
+    public static List embedListList(Object[][] cobjects, Class c, EmbeddedManager embeddedManager) {
+      List embedded = new ArrayList(cobjects.length);
+      for (int i = 0; i < cobjects.length; ++i) {
+        Object[] cobject = cobjects[i];
+        embedded.add( embedList(cobject,c,embeddedManager) );
+      }
+      return embedded;
+    }
+    
+    // embed an array of c++ objects in a hash map
+    public static HashMap embedHashMap(Object[] cobjects, Class ck, Class cv,
+				       EmbeddedManager embeddedManager) {
+	HashMap embedded = new HashMap(cobjects.length / 2);
+
+	try {
+	    Class[] argsCK = new Class[2];
+	    argsCK[0] = Object.class;
+	    argsCK[1] = EmbeddedManager.class;
+	    Constructor constrK = ck.getConstructor(argsCK);
+	    
+	    Class[] argsCV = new Class[2];
+	    argsCV[0] = Object.class;
+	    argsCV[1] = EmbeddedManager.class;
+	    Constructor constrV = cv.getConstructor(argsCV);
+
+	    Object[] argsK = new Object[2];
+	    Object[] argsV = new Object[2];
+	    for (int i = 0; i < cobjects.length; ++i) {
+		argsK[0] = cobjects[i];
+		argsK[1] = embeddedManager;
+
+		++i;
+		assert(i < cobjects.length);
+		argsV[0] = cobjects[i];
+		argsV[1] = embeddedManager;
+		
+		embedded.put(constrK.newInstance(argsK), constrV.newInstance(argsV));
+	    }
+	} catch (NoSuchMethodException e) {
+	    System.out.println(e);
+	    assert(false);
+	} catch (InstantiationException e) {
+	    System.out.println(e);
+	    assert(false);
+	} catch (IllegalAccessException e) {
+	    System.out.println(e);
+	    assert(false);
+	} catch (java.lang.reflect.InvocationTargetException e) {
+	    System.out.println(e);
+	    assert(false);
+	}
+	return embedded;
+    }
+
+
+    // unembed a list of Embedded objects to a list
+    public static Object[] unembedList(List embedded) {
+	Object[] unembedded = new Object[embedded.size()];
+
+	for (int i = 0; i < embedded.size(); ++i) {
+	    assert(embedded.get(i) instanceof Embedded);
+	    unembedded[i] = ((Embedded)embedded.get(i)).embedded();
+	}
+
+	return unembedded;
+    }
+
+    public static Object[][] unembedListList(List embedded) {
+	Object[][] unembedded = new Object[embedded.size()][];
+
+	for (int i = 0; i < embedded.size(); ++i) {
+	    Object list = embedded.get(i);
+	    assert(list instanceof List);
+	    unembedded[i] = unembedList((List)list);
+	}
+
+	return unembedded;
+    }
+
+    public static Object[][][] unembedListListList(List embedded) {
+	Object[][][] unembedded = new Object[embedded.size()][][];
+
+	for (int i = 0; i < embedded.size(); ++i) {
+	    Object list = embedded.get(i);
+	    assert(list instanceof List);
+	    unembedded[i] = unembedListList((List)list);
+	}
+
+	return unembedded;
+    }
+
+
+    // unembed a list of Embedded objects to a list
+    public static Object[] unembedArray(Object[] embedded) {
+	Object[] unembedded = new Object[embedded.length];
+
+	for (int i = 0; i < embedded.length; ++i) {
+	    assert(embedded[i] instanceof Embedded);
+	    unembedded[i] = ((Embedded)embedded[i]).embedded();
+	}
+
+	return unembedded;
+    }
+
+    public static Object[] unembedArrayArray(Object[][] embedded) {
+	Object[] unembedded = new Object[embedded.length];
+
+	for (int i = 0; i < embedded.length; ++i) {
+	    unembedded[i] = unembedArray(embedded[i]);
+	}
+
+	return unembedded;
+    }
+
+    public static Object[] unembedArrayArrayArray(Object[][][] embedded) {
+	Object[] unembedded = new Object[embedded.length];
+
+	for (int i = 0; i < embedded.length; ++i) {
+	    unembedded[i] = unembedArrayArray(embedded[i]);
+	}
+
+	return unembedded;
+    }
+
+
+    // copy a list of strings to a list
+    public static Object[] toArray(List list) {
+	assert(listInstanceof(list, String.class));
+	assert(list.isEmpty() || !listInstanceof(list, Embedded.class));
+	return list.toArray();
+    }
+
+    public static Object[] toArrayArray(List listList) {
+	Object[] arrayArray = new Object[listList.size()];
+
+	for (int i = 0; i < listList.size(); ++i) {
+	    Object list = listList.get(i);
+	    assert(list instanceof List);
+	    arrayArray[i] = toArray(((List)list));
+	}
+
+	return arrayArray;
+    }
+
+    public static Object[] toArrayArrayArray(List listListList) {
+	Object[] arrayArrayArray = new Object[listListList.size()];
+
+	for (int i = 0; i < listListList.size(); ++i) {
+	    Object list = listListList.get(i);
+	    assert(list instanceof List);
+	    arrayArrayArray[i] = toArrayArray((List)list);
+	}
+
+	return arrayArrayArray;
+    }
+}
+
diff --git a/src/bindings/compat/java/src/cvc3/Op.java b/src/bindings/compat/java/src/cvc3/Op.java
new file mode 100644
index 0000000..7893d95
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/Op.java
@@ -0,0 +1,66 @@
+package cvc3;
+
+import java.util.*;
+
+public class Op extends Embedded {
+    // jni methods
+    private static native boolean
+	jniEquals(Object Expr1, Object Expr2) throws Cvc3Exception;
+    private static native String
+	jniToString(Object Expr) throws Cvc3Exception;
+
+    private static native Object
+	jniGetExpr(Object op) throws Cvc3Exception;
+    private static native boolean
+	jniIsNull(Object Op) throws Cvc3Exception;
+
+    /// Constructor
+
+    public Op(Object Op, EmbeddedManager embeddedManager) {
+	super(Op, embeddedManager);
+    }
+
+
+    /// API (immutable)
+
+    public boolean equals(Object o) {
+	if (this == o) return true;
+
+	if (!(o instanceof Op)) return false;
+	boolean result = false;
+	try {
+	    result = jniEquals(embedded(), ((Embedded)o).embedded());
+	} catch (Cvc3Exception e) {
+	    assert(false);
+	}
+	return result;
+    } 
+ 
+    // must return the same hash code for two objects if equals returns true
+    public int hashCode() {
+	try {
+	    return getExpr().hashCode();
+	} catch (Cvc3Exception e) {
+	    assert(false);
+	}
+	return 0;
+    }
+    
+    public String toString() {
+	String result = "";
+	try {
+	    result = jniToString(embedded());
+	} catch (Cvc3Exception e) {
+	    assert(false);
+	}
+	return result;
+    }
+ 
+    public ExprMut getExpr() throws Cvc3Exception {
+	return new ExprMut(jniGetExpr(embedded()), embeddedManager());
+    }
+
+    public boolean isNull() throws Cvc3Exception {
+	return jniIsNull(embedded());
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/OpMut.java b/src/bindings/compat/java/src/cvc3/OpMut.java
new file mode 100644
index 0000000..c609c16
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/OpMut.java
@@ -0,0 +1,18 @@
+package cvc3;
+
+import java.util.*;
+
+public class OpMut extends Op {
+    // jni methods
+    
+    
+    /// Constructor
+
+    // create embedded object
+    public OpMut(Object OpMut, EmbeddedManager embeddedManager) {
+	super(OpMut, embeddedManager);
+    }
+
+    
+    /// API (mutable)
+}
diff --git a/src/bindings/compat/java/src/cvc3/ParserException.java b/src/bindings/compat/java/src/cvc3/ParserException.java
new file mode 100644
index 0000000..50f7e2a
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/ParserException.java
@@ -0,0 +1,13 @@
+package cvc3;
+
+import java.util.*;
+
+/** mirrors CVC3::ParserException */
+public class ParserException extends Cvc3Exception {
+
+    private final static long serialVersionUID = 1L;
+
+    public ParserException(String message) {
+	super(message);
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/Proof.java b/src/bindings/compat/java/src/cvc3/Proof.java
new file mode 100644
index 0000000..a57cb75
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/Proof.java
@@ -0,0 +1,17 @@
+package cvc3;
+
+import java.util.*;
+
+public class Proof extends Embedded {
+    // jni methods
+
+    /// Constructor
+
+    public Proof(Object Proof, EmbeddedManager embeddedManager) {
+	super(Proof, embeddedManager);
+    }
+
+
+    /// API (immutable)
+
+}
diff --git a/src/bindings/compat/java/src/cvc3/ProofMut.java b/src/bindings/compat/java/src/cvc3/ProofMut.java
new file mode 100644
index 0000000..a4f5287
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/ProofMut.java
@@ -0,0 +1,18 @@
+package cvc3;
+
+import java.util.*;
+
+public class ProofMut extends Proof {
+    // jni methods
+    
+    
+    /// Constructor
+
+    // create embedded object
+    public ProofMut(Object ProofMut, EmbeddedManager embeddedManager) {
+	super(ProofMut, embeddedManager);
+    }
+
+    
+    /// API (mutable)
+}
diff --git a/src/bindings/compat/java/src/cvc3/QueryResult.java b/src/bindings/compat/java/src/cvc3/QueryResult.java
new file mode 100644
index 0000000..afb2996
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/QueryResult.java
@@ -0,0 +1,51 @@
+package cvc3;
+
+import java.util.*;
+
+/**
+ * QueryResult is an enum in Cvc3, but as we have to use java 1.4 we have to
+ * use one of the usual tricks instead of java's Enum.
+ * 
+ * To be independent of changes of the actual values of the c++ enum elements
+ * they are passed by name from the JNI interface, so that changing them will
+ * violently break the code (though unfortunately only at runtime).
+ */
+public class QueryResult {
+  private final String d_result;
+
+  private QueryResult(String result) {
+    d_result = result;
+  }
+
+  // value constants
+  public static final QueryResult INVALID = new QueryResult("INVALID");
+  public static final QueryResult VALID = new QueryResult("VALID");
+  public static final QueryResult ABORT = new QueryResult("ABORT");
+  public static final QueryResult UNKNOWN = new QueryResult("UNKNOWN");
+
+  // names of c++ enum values, CVC3 maps INVALID->SAT and VALID->UNSAT
+  private static Map valueMap = new HashMap() {	  
+    {
+      put("SATISFIABLE", INVALID);
+      put("UNSATISFIABLE", VALID);
+      put("UNKNOWN", UNKNOWN);
+      put("ABORT", ABORT);
+    }
+    
+	public static final long serialVersionUID = 1L;
+  };
+
+  // the QueryResult corresponding to a c++ enum value by name
+  public static QueryResult get(String value) throws DebugException {
+    QueryResult queryResult = (QueryResult) valueMap.get(value);
+    if (queryResult == null) {
+      throw new DebugException("QueryResult.constructor: unknown enum value: "
+          + value);
+    }
+    return queryResult;
+  }
+
+  public String toString() {
+    return d_result;
+  }
+}
diff --git a/src/bindings/compat/java/src/cvc3/Rational.java b/src/bindings/compat/java/src/cvc3/Rational.java
new file mode 100644
index 0000000..96a8dd6
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/Rational.java
@@ -0,0 +1,218 @@
+package cvc3;
+
+import java.util.*;
+
+public class Rational extends Embedded {
+    // jni methods
+    private static native Object
+	jniRational1(int n, int d) throws Cvc3Exception;
+    private static native Object
+	jniRational2(String n, int base) throws Cvc3Exception;
+    private static native Object
+	jniRational3(String n, String d, int base) throws Cvc3Exception;
+    
+    private static native boolean
+	jniEquals(Object Rational1, Object Rational2) throws Cvc3Exception;
+    private static native String
+	jniToString(Object Rational) throws Cvc3Exception;
+    private static native int
+	jniHash(Object Rational) throws Cvc3Exception;
+
+    private static native boolean
+	jniIsLe(Object Rational1, Object Rational2) throws Cvc3Exception;
+    private static native boolean
+	jniIsLt(Object Rational1, Object Rational2) throws Cvc3Exception;
+    private static native boolean
+	jniIsGe(Object Rational1, Object Rational2) throws Cvc3Exception;
+    private static native boolean
+	jniIsGt(Object Rational1, Object Rational2) throws Cvc3Exception;
+
+    private static native Object
+	jniPlus(Object Rational1, Object Rational2) throws Cvc3Exception;
+    private static native Object
+	jniMinus(Object Rational1, Object Rational2) throws Cvc3Exception;
+    private static native Object
+	jniMult(Object Rational1, Object Rational2) throws Cvc3Exception;
+    private static native Object
+	jniDivide(Object Rational1, Object Rational2) throws Cvc3Exception;
+    private static native Object
+	jniMod(Object Rational1, Object Rational2) throws Cvc3Exception;
+
+
+    private static native Object
+	jniGetNumerator(Object Rational) throws Cvc3Exception;
+    private static native Object
+	jniGetDenominator(Object Rational) throws Cvc3Exception;
+    private static native boolean
+	jniIsInteger(Object Rational) throws Cvc3Exception;
+    private static native int
+	jniGetInteger(Object Rational) throws Cvc3Exception;
+
+
+    private static native Object
+	jniGcd(Object Rational1, Object Rational2) throws Cvc3Exception;
+    private static native Object
+	jniLcm(Object Rational1, Object Rational2) throws Cvc3Exception;
+    private static native Object
+	jniAbs(Object Rational) throws Cvc3Exception;
+    private static native Object
+	jniFloor(Object Rational) throws Cvc3Exception;
+    private static native Object
+	jniCeil(Object Rational) throws Cvc3Exception;
+
+    /// Constructor
+
+    public Rational(Object Rational, EmbeddedManager embeddedManager) {
+	super(Rational, embeddedManager);
+    }
+
+
+    public Rational(int n, EmbeddedManager embeddedManager) throws Cvc3Exception {
+	this(jniRational1(n, 10), embeddedManager);
+    }
+
+    public Rational(int n, int d, EmbeddedManager embeddedManager) throws Cvc3Exception {
+	this(jniRational1(n, d), embeddedManager);
+    }
+
+    public Rational(String n, EmbeddedManager embeddedManager) throws Cvc3Exception {
+	this(jniRational2(n, 10), embeddedManager);
+    }
+
+    public Rational(String n, int base, EmbeddedManager embeddedManager) throws Cvc3Exception {
+	this(jniRational2(n, base), embeddedManager);
+    }
+
+    public Rational(String n, String d, EmbeddedManager embeddedManager) throws Cvc3Exception {
+	this(jniRational3(n, d, 10), embeddedManager);
+    }
+
+    public Rational(String n, String d, int base, EmbeddedManager embeddedManager) throws Cvc3Exception {
+	this(jniRational3(n, d, base), embeddedManager);
+    }
+
+
+
+    /// API (immutable)
+
+    // 'Problem' with equals/hashCode:
+    // this is based on the wrapped c++ expressions.
+    // as a consequence two Expr objects are equal iff
+    // the wrapped expression is equal,
+    // and are indistinguishable for example in a HashMap.
+
+    public boolean equals(Object o) {
+	if (this == o) return true;
+
+	if (!(o instanceof Rational)) return false;
+	boolean result = false;
+	try {
+	    result = jniEquals(embedded(), ((Embedded)o).embedded());
+	} catch (Cvc3Exception e) {
+	    assert(false);
+	}
+	return result;
+    } 
+
+    // must return the same hash code for two objects if equals returns true
+    public int hashCode() {
+	try {
+	    return jniHash(embedded());
+	} catch (Cvc3Exception e) {
+	    assert(false);
+	}
+	assert(false);
+	return 0;
+    }
+    
+
+    public String toString() {
+	String result = "";
+	try {
+	    result = jniToString(embedded());
+	} catch (Cvc3Exception e) {
+	    assert(false);
+	}
+	return result;
+    }
+
+
+    public boolean isLt(Rational r) throws Cvc3Exception {
+	return jniIsLt(embedded(), r.embedded());
+    }
+
+    public boolean isLe(Rational r) throws Cvc3Exception {
+	return jniIsLe(embedded(), r.embedded());
+    }
+
+    public boolean isGt(Rational r) throws Cvc3Exception {
+	return jniIsGt(embedded(), r.embedded());
+    }
+
+    public boolean isGe(Rational r) throws Cvc3Exception {
+	return jniIsGe(embedded(), r.embedded());
+    }
+
+
+
+    public Rational plus(Rational r) throws Cvc3Exception {
+	return new Rational(jniPlus(embedded(), r.embedded()), embeddedManager());
+    }
+
+    public Rational minus(Rational r) throws Cvc3Exception {
+	return new Rational(jniPlus(embedded(), r.embedded()), embeddedManager());
+    }
+
+    public Rational mult(Rational r) throws Cvc3Exception {
+	return new Rational(jniPlus(embedded(), r.embedded()), embeddedManager());
+    }
+
+    public Rational divide(Rational r) throws Cvc3Exception {
+	return new Rational(jniPlus(embedded(), r.embedded()), embeddedManager());
+    }
+
+    public Rational mod(Rational r) throws Cvc3Exception {
+	return new Rational(jniPlus(embedded(), r.embedded()), embeddedManager());
+    }
+
+
+
+    public Rational getNumerator() throws Cvc3Exception {
+	return new Rational(jniGetNumerator(embedded()), embeddedManager());
+    }
+
+    public Rational getDenominator() throws Cvc3Exception {
+	return new Rational(jniGetDenominator(embedded()), embeddedManager());
+    }
+
+    public boolean isInteger() throws Cvc3Exception {
+	return jniIsInteger(embedded());
+    }
+
+    public int getInteger() throws Cvc3Exception {
+        assert(isInteger());
+        return jniGetInteger(embedded());
+    }
+
+
+
+    public Rational gcd(Rational r) throws Cvc3Exception {
+	return new Rational(jniGcd(embedded(), r.embedded()), embeddedManager());
+    }
+
+    public Rational lcm(Rational r) throws Cvc3Exception {
+	return new Rational(jniLcm(embedded(), r.embedded()), embeddedManager());
+    }
+
+    public Rational abs() throws Cvc3Exception {
+	return new Rational(jniAbs(embedded()), embeddedManager());
+    }
+
+    public Rational floor() throws Cvc3Exception {
+	return new Rational(jniFloor(embedded()), embeddedManager());
+    }
+
+    public Rational ceil() throws Cvc3Exception {
+	return new Rational(jniCeil(embedded()), embeddedManager());
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/RationalMut.java b/src/bindings/compat/java/src/cvc3/RationalMut.java
new file mode 100644
index 0000000..2859240
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/RationalMut.java
@@ -0,0 +1,18 @@
+package cvc3;
+
+import java.util.*;
+
+public class RationalMut extends Rational {
+    // jni methods
+    
+    
+    /// Constructor
+
+    // create embedded object
+    public RationalMut(Object RationalMut, EmbeddedManager embeddedManager) {
+	super(RationalMut, embeddedManager);
+    }
+
+    
+    /// API (mutable)
+}
diff --git a/src/bindings/compat/java/src/cvc3/SatResult.java b/src/bindings/compat/java/src/cvc3/SatResult.java
new file mode 100644
index 0000000..2aabb2f
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/SatResult.java
@@ -0,0 +1,46 @@
+package cvc3;
+
+import java.util.*;
+
+/**
+ * SatResult is derived from the QueryResult enum in Cvc3, but as we have to
+ * use java 1.4 we have to use one of the usual tricks instead of java's Enum.
+ * 
+ * To be independent of changes of the actual values of the c++ enum elements
+ * they are passed by name from the JNI interface, so that changing them will
+ * violently break the code (though unfortunately only at runtime).
+ */
+public class SatResult {
+  private final String d_result;
+
+  private SatResult(String result) {
+    d_result = result;
+  }
+
+  // names of c++ enum values
+  public static final SatResult SATISFIABLE = new SatResult("SATISFIABLE");
+  public static final SatResult UNSATISFIABLE = new SatResult("UNSATISFIABLE");
+  public static final SatResult ABORT = new SatResult("ABORT");
+  public static final SatResult UNKNOWN = new SatResult("UNKNOWN");
+
+  // the SatResult corresponding to a c++ enum value by name
+  public static SatResult get(String value) throws DebugException {
+    if (value.equals(SATISFIABLE.toString())) {
+      return SATISFIABLE;
+    } else if (value.equals(UNSATISFIABLE.toString())) {
+      return UNSATISFIABLE;
+    } else if (value.equals(ABORT.toString())) {
+      return ABORT;
+    } else if (value.equals(UNKNOWN.toString())) {
+      return UNKNOWN;
+    } else {
+      throw new DebugException("SatResult.constructor: unknown enum value: "
+          + value);
+    }
+  }
+
+  // the SatResult's c++ enum value
+  public String toString() {
+    return d_result;
+  }
+}
diff --git a/src/bindings/compat/java/src/cvc3/SmtlibException.java b/src/bindings/compat/java/src/cvc3/SmtlibException.java
new file mode 100644
index 0000000..0601342
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/SmtlibException.java
@@ -0,0 +1,13 @@
+package cvc3;
+
+import java.util.*;
+
+/** mirrors CVC3::SmtlibException */
+public class SmtlibException extends Cvc3Exception {
+
+    private final static long serialVersionUID = 1L;
+
+    public SmtlibException(String message) {
+	super(message);
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/SoundException.java b/src/bindings/compat/java/src/cvc3/SoundException.java
new file mode 100644
index 0000000..607433d
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/SoundException.java
@@ -0,0 +1,13 @@
+package cvc3;
+
+import java.util.*;
+
+/** mirrors CVC3::SoundException */
+public class SoundException extends Cvc3Exception {
+
+    private final static long serialVersionUID = 1L;
+
+    public SoundException(String message) {
+	super(message);
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/Statistics.java b/src/bindings/compat/java/src/cvc3/Statistics.java
new file mode 100644
index 0000000..75b7b31
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/Statistics.java
@@ -0,0 +1,17 @@
+package cvc3;
+
+import java.util.*;
+
+public class Statistics extends Embedded {
+    // jni methods
+
+    /// Constructor
+
+    public Statistics(Object Statistics, EmbeddedManager embeddedManager) {
+	super(Statistics, embeddedManager);
+    }
+
+
+    /// API (immutable)
+
+}
diff --git a/src/bindings/compat/java/src/cvc3/StatisticsMut.java b/src/bindings/compat/java/src/cvc3/StatisticsMut.java
new file mode 100644
index 0000000..30a5dda
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/StatisticsMut.java
@@ -0,0 +1,18 @@
+package cvc3;
+
+import java.util.*;
+
+public class StatisticsMut extends Statistics {
+    // jni methods
+    
+    
+    /// Constructor
+
+    // create embedded object
+    public StatisticsMut(Object StatisticsMut, EmbeddedManager embeddedManager) {
+	super(StatisticsMut, embeddedManager);
+    }
+
+    
+    /// API (mutable)
+}
diff --git a/src/bindings/compat/java/src/cvc3/Test.java b/src/bindings/compat/java/src/cvc3/Test.java
new file mode 100644
index 0000000..8d4c0af
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/Test.java
@@ -0,0 +1,2082 @@
+package cvc3;
+
+import java.util.*;
+
+class Test {
+
+    public static void main(String args[]) {
+      int regressLevel = 3;
+      if (args.length > 1) {
+         regressLevel = Integer.parseInt(args[0]);
+      }
+      
+      boolean allPassed = true;
+      System.out.println("Running API test, regress level = " + regressLevel);
+      try {
+	  System.out.println("\ntest():");
+	  allPassed = test() && allPassed;
+	  System.out.println("\n}\ntest1():");
+	  allPassed = test1() && allPassed;
+	  System.out.println("\n}\ntest2():");
+	  allPassed = test2() && allPassed;
+	  System.out.println("\n}\ntest3():");
+	  allPassed = test3() && allPassed;
+	  System.out.println("\n}\ntest4():");
+	  allPassed = test4() && allPassed;
+	  if (regressLevel > 0) {
+	      System.out.println("\n}\n\ntest5():");
+	      allPassed = test5() && allPassed;
+	  }
+	  System.out.println("\n}\ntest6():");
+	  allPassed = test6() && allPassed;
+	  System.out.println("\n}\ntest7():");
+	  allPassed = test7() && allPassed;
+	  System.out.println("\n}\ntest8():");
+	  allPassed = test8() && allPassed;
+	  System.out.println("\n}\ntest9():");
+	  allPassed = test9(10 * regressLevel + 10) && allPassed;
+	  System.out.println("\n}\nbvtest9():");
+	  allPassed = bvtest9(regressLevel*3+2) && allPassed;
+
+	  // Test for obvious memory leaks
+	  int limit = 100 * regressLevel + 10;
+	  for (int i = 0; i < limit; ++i) {
+	      if (i % 100 == 0) System.out.println("test10[" + i + "]");
+	      allPassed = test10() && allPassed;
+	  }
+
+	  System.out.println("\n}\ntest11():");
+	  allPassed = test11() && allPassed;
+	  System.out.println("\n}\ntest12():");
+	  allPassed = test12() && allPassed;
+	  System.out.println("\n}\ntest13():");
+	  allPassed = test13() && allPassed;
+	  System.out.println("\n}\ntest14():");
+	  allPassed = test14() && allPassed;
+	  System.out.println("\n}\ntest15():");
+	  allPassed = test15() && allPassed;
+	  System.out.println("\n}\ntest16():");
+	  allPassed = test16() && allPassed;
+	  System.out.println("\n}\ntest17():");
+	  allPassed = test17() && allPassed;
+	  System.out.println("\n}\ntest18():");
+	  allPassed = test18() && allPassed;
+	  System.out.println("\n}\ntest19():");
+	  allPassed = test19() && allPassed;
+      System.out.println("\n}\ntest22():");
+      allPassed = test22() && allPassed;
+      System.out.println("\n}\ntest23():");
+      allPassed = test23() && allPassed;
+	  /* :TODO:
+	  if (regressLevel > 1) {
+	      System.out.println("\n}\ntestgeorge1():");
+	      George.testgeorge1();
+	      System.out.println("\n}\ntestgeorge2():");
+	      George.testgeorge2();
+	      System.out.println("\n}\ntestgeorge3():");
+	      George.testgeorge3();
+	      System.out.println("\n}\ntestgeorge4():");
+	      George.testgeorge4();
+	      System.out.println("\n}\ntestgeorge5():");
+	      George.testgeorge5();
+	  }
+	  */
+	  System.out.println("\n}\ntestNonlinearBV():");
+	  allPassed = testNonlinearBV() && allPassed;
+	  System.out.println("\n}\ntestDistinct():");
+	  allPassed = testDistinct() && allPassed;	  
+	  System.out.println("\n}");
+      } catch (Exception e) {
+	  System.out.println("*** Exception caught: \n" + e);
+	  e.printStackTrace(System.out);
+	  allPassed = false;
+      }
+      
+      if (allPassed) {
+	  System.out.println("Program exits successfully.");
+      }
+      else {
+	  System.out.println("Program exits with error status = " + allPassed + ".");
+      }
+      System.exit(allPassed ? 0 : 1);
+    }
+
+
+    public static void DebugAssert(boolean condition, String message) throws Cvc3Exception {
+      if (!condition) {
+        throw new DebugException(message);
+      }
+    }
+    
+    // Check whether e is valid
+    public static boolean check(ValidityChecker vc, Expr e) throws Cvc3Exception {
+	return check(vc, e, true);
+    }
+    
+    public static boolean check(ValidityChecker vc, Expr e, boolean verbose) throws Cvc3Exception {
+	if(verbose) {
+	    System.out.println("Query: " + e.toString());
+	}
+	QueryResult result = vc.query(e);
+	if (result == QueryResult.VALID) {
+	    if (verbose) System.out.println("Valid\n");
+	    return true;
+	}
+	else if (result == QueryResult.INVALID) {
+	    if (verbose) System.out.println("Invalid\n");
+	    return false;
+	}
+	if (verbose) System.out.println("Returned neither valid nor invalid\n");
+	return false;
+    }
+
+    public static void printResult(QueryResult result) throws Cvc3Exception {
+	if (result == QueryResult.VALID) {
+	    System.out.println("Result Valid");
+	}
+	else if (result == QueryResult.INVALID) {
+	    System.out.println("Result Invalid");
+	}
+	else if (result == QueryResult.UNKNOWN) {
+	    System.out.println("Result Unknown");
+	}
+	else if (result == QueryResult.ABORT) {
+	    System.out.println("Aborted");
+	} else {
+	    assert(false);
+	}
+    }
+
+    // Make a new assertion - disposes expression
+    public static void newAssertion(ValidityChecker vc, Expr e) throws Cvc3Exception {
+      System.out.println("Assert: " + e);
+      vc.assertFormula(e);
+    }
+
+
+
+    public static boolean test() throws Cvc3Exception {
+	ValidityChecker vc = null;
+	try {
+	    vc = ValidityChecker.create();
+	    
+	    Type it = vc.intType();               //int
+	    Op f = vc.createOp("f", vc.funType(it, it));
+	    Expr z = vc.varExpr("z", it);
+	    Expr e = vc.funExpr(f, vc.funExpr(f, z));
+	    e = e.getChild(0);
+	    Expr f2 = vc.funExpr(f, e);
+	    Expr f3 = vc.funExpr(f, f2);
+	    
+	    DebugAssert(!e.equals(f2) && !e.equals(f3), "Refcount problems");
+	    
+	    Expr x = vc.boundVarExpr("x", "0", it);        //x0:int
+	    List xs = new ArrayList();
+	    xs.add(x);                                     //<x0:int>
+	    Op lxsx = vc.lambdaExpr(xs, x);                //\<x0:int>. x0:int
+	    Expr y = vc.ratExpr(1, 1);                     //1
+	    List ys = new ArrayList();
+	    ys.add(y);                                     //<1>
+	    Expr lxsxy = vc.funExpr(lxsx, y);           //(\<x0:int>. x0:int)1
+	    Expr lxsxys = vc.funExpr(lxsx, ys);         //(\<x0:int>. x0:int)<1>
+	    System.out.println("Lambda application: " + lxsxy);
+	    System.out.println("Simplified: " + vc.simplify(lxsxy));
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in test(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc != null) vc.delete();
+	}
+    }
+
+    public static boolean test1() throws Cvc3Exception {
+	// It is important that all Expr objects are deleted before vc is
+	// deleted.  Therefore, we enclose them in a scope of try{ }catch
+	// block.
+	//
+	// Also, vc methods may throw an Exception, and we want to delete vc
+	// even in those exceptional cases.
+	ValidityChecker vc = null;
+	FlagsMut flags = null;
+	try {
+	    flags = ValidityChecker.createFlags(null);
+	    flags.setFlag("dagify-exprs",false);
+	    flags.setFlag("dump-log", ".test1.cvc");
+	    vc = ValidityChecker.create(flags);
+	    
+	    boolean b = check(vc, vc.trueExpr());
+	    DebugAssert(b, "Should be valid");
+
+	    vc.push();
+	    b = check(vc, vc.falseExpr());
+	    DebugAssert(!b, "Should be invalid");
+	    vc.pop();
+
+	    // Check p OR ~p
+	    
+	    Expr p = vc.varExpr("p", vc.boolType());
+	    Expr e = vc.orExpr(p, vc.notExpr(p));
+	    
+	    b = check(vc, e);
+	    DebugAssert(b, "Should be valid");
+
+	    // Check x = y . f(x) = f(y)
+
+	    Expr x = vc.varExpr("x", vc.realType());
+	    Expr y = vc.varExpr("y", vc.realType());
+
+	    Type real2real = vc.funType(vc.realType(), vc.realType());
+	    Op f = vc.createOp("f", real2real);
+	    Expr fx = vc.funExpr(f, x);
+	    Expr fy = vc.funExpr(f, y);
+
+	    e = vc.impliesExpr(vc.eqExpr(x,y),vc.eqExpr(fx, fy));
+	    b = check(vc, e);
+	    DebugAssert(b, "Should be valid");
+
+	    // Check f(x) = f(y) . x = y
+	    
+	    e = vc.impliesExpr(vc.eqExpr(fx,fy),vc.eqExpr(x, y));
+	    int scopeLevel = vc.scopeLevel();
+	    vc.push();
+	    b = check(vc, e);
+	    DebugAssert(!b, "Should be invalid");
+
+	    // Get counter-example
+	    
+	    System.out.println("Scope level: " + vc.scopeLevel());
+	    System.out.println("Counter-example:");
+	    List assertions = vc.getCounterExample();
+	    for (int i = 0; i < assertions.size(); ++i) {
+		System.out.println((Expr)assertions.get(i));
+	    }
+	    System.out.println("End of counter-example");
+	    System.out.println();
+
+	    // Reset to initial scope
+	    System.out.println("Resetting");
+	    vc.pop();
+	    DebugAssert(scopeLevel == vc.scopeLevel(), "scope error");
+	    System.out.println("Scope level: " + vc.scopeLevel());
+	    System.out.println();
+
+	    // Check w = x & x = y & y = z & f(x) = f(y) & x = 1 & z = 2
+	    
+	    Expr w = vc.varExpr("w", vc.realType());
+	    Expr z = vc.varExpr("z", vc.realType());
+
+	    System.out.println("Push Scope");
+	    System.out.println();
+	    vc.push();
+
+	    newAssertion(vc, vc.eqExpr(w, x));
+	    newAssertion(vc, vc.eqExpr(x, y));
+	    newAssertion(vc, vc.eqExpr(y, z));
+	    newAssertion(vc, vc.eqExpr(fx, fy));
+	    newAssertion(vc, vc.eqExpr(x, vc.ratExpr(1)));
+
+	    System.out.println("simplify(w) = " + vc.simplify(w));
+	    DebugAssert(vc.simplify(w).equals(vc.ratExpr(1)), "Expected simplify(w) = 1");
+	    
+	    newAssertion(vc, vc.eqExpr(z, vc.ratExpr(2)));
+	    System.out.println("Inconsistent?: " + vc.inconsistent());
+	    
+	    System.out.println("Assumptions Used:");
+	    assertions = vc.inconsistentReasons();
+	    for (int i = 0; i < assertions.size(); ++i) {
+		System.out.println((Expr)assertions.get(i));
+	    }
+
+	    System.out.println("Pop Scope");
+	    System.out.println();
+	    vc.pop();
+    
+	    System.out.println("simplify(w) = " + vc.simplify(w));
+	    DebugAssert(vc.simplify(w).equals(w), "Expected simplify(w) = w");
+    
+	    System.out.println("Inconsistent?: " + vc.inconsistent());
+
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in test1(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc != null) vc.delete();
+	    if (flags != null) flags.delete();
+	}
+    }
+
+
+    public static boolean test2() throws Cvc3Exception {
+	ValidityChecker vc = null;
+	FlagsMut flags = null;
+	try {
+	    flags = ValidityChecker.createFlags(null);
+	    flags.setFlag("dagify-exprs",false);
+	    vc = ValidityChecker.create(flags);
+
+	    Expr bexpr = vc.varExpr("b", vc.intType());
+	    vc.assertFormula(vc.ltExpr(bexpr, vc.ratExpr(10)));
+
+	    Expr c = vc.varExpr("c", vc.intType());
+	    vc.assertFormula(vc.orExpr(vc.eqExpr(c, vc.ratExpr(0)), vc.eqExpr(c, vc.ratExpr(1))));
+
+	    boolean b = check(vc, vc.leExpr(bexpr, vc.ratExpr(10)));
+	    DebugAssert(b, "Should be valid");
+
+	    b = check(vc, vc.falseExpr());
+	    DebugAssert(!b, "Should be invalid");
+	    vc.returnFromCheck();
+
+	    // Check x = y . g(x,y) = g(y,x)
+	    
+	    Expr x = vc.varExpr("x", vc.realType());
+	    Expr y = vc.varExpr("y", vc.realType());
+
+	    Type real = vc.realType();
+	    List RxR = new ArrayList();
+	    RxR.add(real);
+	    RxR.add(real);
+
+	    Type realxreal2real = vc.funType(RxR, real);
+	    Op g = vc.createOp("g", realxreal2real);
+
+	    Expr gxy = vc.funExpr(g, x, y);
+	    Expr gyx = vc.funExpr(g, y, x);
+
+	    Expr e = vc.impliesExpr(vc.eqExpr(x,y),vc.eqExpr(gxy, gyx));
+	    b = check(vc, e);
+	    DebugAssert(b, "Should be valid");
+	    
+	    Op h = vc.createOp("h", realxreal2real);
+
+	    Expr hxy = vc.funExpr(h, x, y);
+	    Expr hyx = vc.funExpr(h, y, x);
+
+	    e = vc.impliesExpr(vc.eqExpr(x,y),vc.eqExpr(hxy, hyx));
+	    b = check(vc, e);
+	    DebugAssert(b, "Should be valid");
+
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in test2(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc != null) vc.delete();
+	    if (flags != null) flags.delete();
+	}
+    }
+
+
+    public static ExprMut ltLex(ValidityChecker vc, Expr i1, Expr i2, Expr j1, Expr j2) throws Cvc3Exception {
+	Expr res = vc.ltExpr(i1, j1);
+	return vc.orExpr(res, vc.andExpr(vc.eqExpr(i1, j1), vc.ltExpr(i2, j2)));
+    }
+
+    public static ExprMut createTestFormula(ValidityChecker vc, Expr i1, Expr i2, Expr r1, Expr r2)
+	throws Cvc3Exception {
+	Expr lt1 = ltLex(vc, r1, r2, i1, i2);
+	Expr lt2 = ltLex(vc, i2, i1, r2, r1);
+	return vc.andExpr(lt1, lt2);
+    }
+
+    public static boolean test3() throws Cvc3Exception {
+	ValidityChecker vc = null;
+	FlagsMut flags = null;
+	try {
+	    flags = ValidityChecker.createFlags(null);
+	    flags.setFlag("dagify-exprs",false);
+	    vc = ValidityChecker.create(flags);
+	    
+	    Expr i = vc.varExpr("i", vc.realType());
+	    Expr j = vc.varExpr("j", vc.realType());
+	    Expr k = vc.varExpr("k", vc.realType());
+	    
+	    Expr one = vc.ratExpr(1);
+	    
+	    Expr test = createTestFormula(vc, i, j,
+					  vc.minusExpr(i, one), vc.minusExpr(j, k));
+	    
+	    System.out.println("Trying test: " + test);
+	    
+	    vc.push();
+	    QueryResult result = vc.query(test);
+	    if (result == QueryResult.VALID) {
+		System.out.println("Test Valid");
+		vc.pop();
+	    }
+	    else {
+		List assertions = vc.getCounterExample();
+		System.out.println("Test Invalid Under Conditions:");
+		for (int index = 0; index < assertions.size(); ++index) {
+		    System.out.println(assertions.get(index));
+		}
+		
+		// Try assertions one by one
+		for (int index = 0; index < assertions.size(); ++index) {
+		    Expr condition = vc.notExpr((Expr)assertions.get(index));
+		    System.out.println("Trying test under condition: " + condition);
+		    vc.pop();
+		    vc.push();
+		    printResult(vc.query(vc.impliesExpr(condition, test)));
+		}
+	    }
+   
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in test3(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc != null) vc.delete();
+	    if (flags != null) flags.delete();
+	}
+    }
+
+
+    public static boolean test4() throws Cvc3Exception {
+	ValidityChecker vc = null;
+	FlagsMut flags = null;
+	try {
+	    flags = ValidityChecker.createFlags(null);
+	    flags.setFlag("dagify-exprs",false);
+	    vc = ValidityChecker.create(flags);
+
+	    Expr i = vc.varExpr("i", vc.realType());
+	    Expr j = vc.varExpr("j", vc.realType());
+	    Expr k = vc.varExpr("k", vc.realType());
+	    
+	    Expr one = vc.ratExpr(1);
+
+	    Expr test = createTestFormula(vc, i, j,
+					  vc.minusExpr(i, one), vc.minusExpr(j, k));
+
+	    System.out.println("Trying test: " + test);
+
+	    vc.push();
+	    QueryResult result = vc.query(test);
+	    if (result == QueryResult.VALID) {
+		System.out.println("Test Valid");
+	    }
+	    else {
+		List assertions = vc.getCounterExample();
+		System.out.println("Test Invalid Under Conditions:");
+		for (int index = 0; index < assertions.size(); ++index) {
+		    System.out.println(assertions.get(index));
+		}
+
+		// Try assertions one by one
+		for (int index = 0; index < assertions.size(); ++index) {
+		    Expr condition = vc.notExpr((Expr)assertions.get(index));
+		    System.out.println("Trying test under condition: " + condition);
+		    vc.pop();
+		    vc.push();
+		    printResult(vc.query(vc.impliesExpr(condition, test)));
+		}
+	    }
+
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in test4(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc != null) vc.delete();
+	    if (flags != null) flags.delete();
+	}
+    }
+
+
+    public static void findLeaves(Expr e, List l) throws Cvc3Exception {
+	int ar = e.arity();
+	if (ar > 0) {
+	    for (int i = 0; i < ar; ++i) {
+		findLeaves(e.getChild(i), l);
+	    }
+	    return;
+	}
+	l.add(e);
+    }
+
+    public static boolean hasij(Expr e, Expr i, Expr j) throws Cvc3Exception {
+	int ar = e.arity();
+	if (ar > 0) {
+	    for (int k = 0; k < ar; ++k)
+		if (hasij(e.getChild(k), i, j)) return true;
+	    return false;
+	}
+	if (e.equals(i) || e.equals(j)) return true;
+	return false;
+    }
+
+    public static Expr plusExpr(ValidityChecker vc, List kids) throws Cvc3Exception {
+	if (kids.size() == 0) return vc.ratExpr(0);
+	else if (kids.size() == 1) return (Expr)kids.get(0);
+	else if (kids.size() == 2) return vc.plusExpr((Expr)kids.get(0), (Expr)kids.get(1));
+	else {
+	    Expr r = (Expr)kids.get(kids.size() - 1);
+	    kids.remove(kids.size() - 1);
+	    return vc.plusExpr(plusExpr(vc, kids), r);
+	}
+    }
+
+    public static boolean test5() throws Cvc3Exception {
+	ValidityChecker vc = null;
+	FlagsMut flags = null;
+	try {
+	    flags = ValidityChecker.createFlags(null);
+	    flags.setFlag("dagify-exprs",false);
+	    vc = ValidityChecker.create(flags);
+
+	    Expr i = vc.varExpr("i1", vc.realType());
+	    Expr j = vc.varExpr("i2", vc.realType());
+	    Expr p = vc.varExpr("p", vc.realType());
+	    Expr q = vc.varExpr("q", vc.realType());
+	    Expr r = vc.varExpr("r", vc.realType());
+	    Expr a = vc.varExpr("arb_addr", vc.realType());
+	    Expr N = vc.varExpr("N", vc.realType());
+
+	    Expr M = vc.varExpr("M", vc.arrayType(vc.realType(), vc.realType()));
+
+	    Expr M2 = vc.writeExpr(M, vc.plusExpr(q, i), vc.readExpr(M, vc.plusExpr(r, i)));
+	    
+	    Expr M1 = vc.writeExpr(M, vc.plusExpr(p, j), vc.readExpr(M, vc.plusExpr(r, j)));
+
+	    Expr e = vc.eqExpr(vc.readExpr(vc.writeExpr(M2, vc.plusExpr(p, j),
+							vc.readExpr(M2, vc.plusExpr(r, j))), a),
+			       vc.readExpr(vc.writeExpr(M1, vc.plusExpr(q, i),
+							vc.readExpr(M1, vc.plusExpr(r, i))), a));
+
+	    Expr one = vc.ratExpr(1);
+	    Expr zero = vc.ratExpr(0);
+
+	    Expr qmp = vc.minusExpr(q, p);
+	    Expr qmr = vc.minusExpr(q, r);
+
+	    List hyp = new ArrayList();
+	    hyp.add(vc.ltExpr(i, j));
+	    //   hyp.add(vc.orExpr(vc.geExpr(qmp, N), vc.leExpr(qmp, zero)));
+	    //   hyp.add(vc.orExpr(vc.geExpr(qmr, N), vc.leExpr(qmr, zero)));
+
+	    Expr test = vc.impliesExpr(vc.andExpr(hyp), e);
+	    Expr query;
+
+	    System.out.println("Checking verification condition:" + test);
+
+	    vc.push();
+	    QueryResult result = vc.query(test);
+	    if (result == QueryResult.VALID) {
+		System.out.println("Test Valid");
+	    }
+	    else {
+		List conditions = new ArrayList();
+		int req;
+		
+		List assertions = vc.getCounterExample();
+		
+		System.out.println("Invalid Under Conditions:");
+		for (int index = 0; index < assertions.size(); ++index) {
+		    if (((Expr)assertions.get(index)).equals(vc.notExpr(test))) {
+			for (; index < assertions.size()-1; ++index) {
+			    assertions.set(index, assertions.get(index+1));
+			}
+			assertions.remove(assertions.size() - 1);
+			break;
+		    }
+		}
+		for (int index = 0; index < assertions.size(); ++index) {
+		    System.out.println(assertions.get(index));
+		}
+
+		System.out.println();
+		
+		// Try assertions one by one
+		for (int index = 0; index < assertions.size(); ++index) {
+		    e = (Expr)assertions.get(index);
+      
+		    // Check condition for eligibility
+		    if (e.isNot()) {
+			System.out.println("Condition ineligible: negation: " + e);
+			System.out.println();
+			continue;
+		    }
+		    if (e.isEq()) {
+			req = 2;
+		    }
+		    else req = 1;
+		    
+		    List leaves = new ArrayList();
+		    findLeaves(e, leaves);
+		    for (int index2 = 0; index2 < leaves.size(); ++index2) {
+			if (!((Expr)leaves.get(index2)).isVar() ||
+			    ((Expr)leaves.get(index2)).equals(i) ||
+			    ((Expr)leaves.get(index2)).equals(j) ||
+			    ((Expr)leaves.get(index2)).equals(a))
+			    continue;
+			req--;
+		    }
+		    if (req > 0) {
+			System.out.println("Condition ineligible: not enough non-loop variables: " + e);
+			System.out.println();
+			continue;
+		    }
+
+		    System.out.println("Condition selected: " + e);
+		    System.out.println();
+
+		    conditions.add(vc.notExpr(e));
+		    System.out.println("Trying verification condition with hypothesis: "
+				       + vc.andExpr(conditions));
+		    vc.pop();
+		    vc.push();
+		    query = vc.impliesExpr(vc.andExpr(conditions), test);
+		    result = vc.query(test);
+		    if (result == QueryResult.VALID) {
+			System.out.println("Result Valid");
+			break;
+		    }
+		    else {
+			assertions = vc.getCounterExample();
+
+			System.out.println("Invalid Under Conditions:");
+			for (int index2 = 0; index2 < assertions.size(); ++index2) {
+			    if (((Expr)assertions.get(index2)).equals(vc.notExpr(query))) {
+				for (; index2 < assertions.size()-1; ++index2) {
+				    assertions.set(index2, assertions.get(index2+1));
+				}
+				assertions.remove(assertions.size() - 1);
+				break;
+			    }
+			}
+
+			for (int index2 = 0; index2 < assertions.size(); ++index2) {
+			    System.out.println(assertions.get(index2));
+			}
+			System.out.println();
+			index = assertions.size();
+		    }
+		}
+		
+		System.out.println();
+		System.out.println("Attempting to remove loop variables");
+		// replace loop variables in conditions
+		List newConditions = new ArrayList();
+		List newPlus = new ArrayList();
+		boolean foundi, foundj, negi, negj;
+		Expr minusone = vc.ratExpr(-1);
+		int index;
+		for (index = 0; index < conditions.size(); ++index) {
+		    if (((Expr)conditions.get(index)).getChild(0).isEq()) {
+			e = vc.simplify(
+					vc.minusExpr(((Expr)conditions.get(index)).getChild(0).getChild(0),
+						     ((Expr)conditions.get(index)).getChild(0).getChild(1)));
+			if (hasij(e, i, j)) {
+			    if (e.isPlus()) {
+				newPlus.clear();
+				newPlus.add(e.getChild(0));
+				foundi = foundj = negi = negj = false;
+				for (int index2 = 1; index2 < e.arity(); index2++) {
+				    Expr term = e.getChild(index2);
+				    if (term.equals(i) && !foundi) foundi = true;
+				    else if (term.equals(j) && !foundj) {
+					foundj = true;
+					negj = true;
+				    }
+				    else if (term.isMult()
+					     && term.getChild(0).equals(minusone)
+					     && term.getChild(1).equals(i)
+					     && !foundi) {
+					foundi = true;
+					negi = true;
+				    }
+				    else if (term.isMult()
+					     && term.getChild(0).equals(minusone)
+					     && term.getChild(1).equals(j)
+					     && !foundj)
+					foundj = true;
+				    else newPlus.add(term);
+				}
+				if (foundi && foundj && (negi && negj || (!negi && !negj))) {
+				    e = plusExpr(vc, newPlus);
+				    if (negi && negj) e = vc.uminusExpr(e);
+				    e = vc.simplify(e);
+				    if (!hasij(e, i, j)) {
+					newConditions.add(vc.orExpr(vc.geExpr(e, N), vc.leExpr(e, zero)));
+					continue;
+				    }
+				}
+			    }
+			    System.out.println("Unable to remove loop variables:" + e);
+			    break;
+			}
+		    }
+		    newConditions.add(conditions.get(index));
+		}
+		if (index == conditions.size()) {
+		    System.out.println("Loop variables successfully removed:");
+		    Expr cond = (newConditions.size()>0)?
+			vc.andExpr(newConditions) : vc.trueExpr();
+		    System.out.println(cond);
+		    
+		    List loopConditions = new ArrayList();
+		    loopConditions.add(cond);
+		    loopConditions.add(vc.geExpr(i, one));
+		    loopConditions.add(vc.geExpr(j, one));
+		    loopConditions.add(vc.leExpr(i, N));
+		    loopConditions.add(vc.leExpr(j, N));
+		    vc.pop();
+		    vc.push();
+		    System.out.println("Final query");
+		    printResult(vc.query(vc.impliesExpr(vc.andExpr(loopConditions), test)));
+		}
+	    }
+	    
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in test5(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc != null) vc.delete();
+	    if (flags != null) flags.delete();
+	}
+    }
+
+
+
+    public static boolean test6() throws Cvc3Exception {
+	ValidityChecker vc1 = null;
+	ValidityChecker vc2 = null;
+	try {
+	    vc1 = ValidityChecker.create();
+	    vc2 = ValidityChecker.create();
+
+	    Type real1 = vc1.realType();
+	    
+	    Expr x1 = vc1.varExpr("x", real1);
+	    Expr y1 = vc1.boundVarExpr("y", "0", real1);
+	    
+	    System.out.println("vc1 variables: " + x1 + ", " + y1);
+	    
+	    Expr x2 = vc2.varExpr("x", vc2.importType(real1));
+	    Expr y2 = vc2.boundVarExpr("y", "0", vc2.realType());
+	    
+	    System.out.println("vc2 variables: " + x2 + ", " + y2);
+	    System.out.println("vars imported to vc2 from vc1: "
+			       + vc2.importExpr(x1) + ", " + vc2.importExpr(y1));
+	    Expr t1 = vc1.trueExpr();
+	    Expr and1 = vc1.andExpr(t1, vc1.falseExpr());
+	    Op f1 = vc1.createOp("f", vc1.funType(real1, real1));
+	    Expr fx1 = vc1.funExpr(f1, x1);
+	    Expr f5_1 = vc1.funExpr(f1, vc1.ratExpr(5,1));
+	    Type rt1 = vc1.recordType("foo", real1, "bar", real1);
+	    Expr r1 = vc1.recordExpr("foo", fx1, "bar", f5_1);
+	    Expr r1_eq = vc1.eqExpr(r1, vc1.recUpdateExpr(r1, "foo", f5_1));
+	    Type art1 = vc1.arrayType(real1, rt1);
+	    Expr ar1 = vc1.varExpr("ar", art1);
+	    Expr ar_eq1 = vc1.eqExpr(vc1.writeExpr(ar1, x1, r1), ar1);
+	    Expr query1 = vc1.eqExpr(vc1.recSelectExpr(vc1.readExpr(ar1, x1), "foo"),
+				     vc1.recSelectExpr(r1, "bar"));
+	    
+	    System.out.println("*** VC #1:");
+	    newAssertion(vc1, r1_eq);
+	    newAssertion(vc1, ar_eq1);
+	    check(vc1, query1);
+	    
+	    System.out.println("*** VC #2:");
+	    newAssertion(vc2, vc2.importExpr(r1_eq));
+	    newAssertion(vc2, vc2.importExpr(ar_eq1));
+	    check(vc2, vc2.importExpr(query1));
+	    
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in test6(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc1 != null) vc1.delete();
+	    if (vc2 != null) vc2.delete();
+	}
+    }
+
+
+
+    public static boolean test7() throws Cvc3Exception {
+	ValidityChecker vc1 = null;
+	ValidityChecker vc2 = null;
+	try {
+	    vc1 = ValidityChecker.create();
+	    vc2 = ValidityChecker.create();
+
+	    Expr e1 = vc1.varExpr("e1", vc1.realType());
+	    Expr e2 = vc2.varExpr("e2", vc2.realType());
+	    newAssertion(vc2, vc2.eqExpr(vc2.importExpr(e1), e2));
+
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in test7(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc1 != null) vc1.delete();
+	    if (vc2 != null) vc2.delete();
+	}
+    }
+
+
+
+    public static boolean test8() throws Cvc3Exception {
+	ValidityChecker vc = null;
+	try {
+	    vc = ValidityChecker.create();
+
+	    List vec = new ArrayList();
+	    vec.add(vc.boundVarExpr("x", "x", vc.realType()));
+	    Expr lambda = vc.lambdaExpr(vec, vc.falseExpr()).getExpr();
+	    try {
+		Type t = vc.subtypeType(lambda, vc.nullExpr());
+		DebugAssert(false, "Typechecking exception expected");
+	    } catch(TypecheckException e) {
+		// fall through
+	    }
+	    
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in test5(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc != null) vc.delete();
+	}
+    }
+
+
+
+    public static ExprMut adder(ValidityChecker vc, Expr a, Expr b, Expr c) throws Cvc3Exception {
+	return vc.notExpr(vc.iffExpr(vc.notExpr(vc.iffExpr(a,b)),c));
+    }
+
+    public static ExprMut carry(ValidityChecker vc, Expr a, Expr b, Expr c) throws Cvc3Exception {
+	return vc.orExpr(vc.andExpr(a,b), vc.orExpr(vc.andExpr(b,c),vc.andExpr(a,c)));
+    }
+
+    public static List add(ValidityChecker vc, List a, List b) throws Cvc3Exception {
+	int N = a.size();
+	Expr c = vc.falseExpr();
+	
+	List sum = new ArrayList();
+	for (int i = 0; i < N; i++) {
+	    sum.add(adder(vc,(Expr)a.get(i),(Expr)b.get(i),c));
+	    c = carry(vc,(Expr)a.get(i),(Expr)b.get(i),c);
+	}
+	return sum;
+    }
+
+    public static ExprMut vectorEq(ValidityChecker vc, List a, List b) throws Cvc3Exception {
+	int N = a.size();
+	ExprMut result = vc.trueExpr();
+	
+	for (int i = 0; i < N; i++) {
+	    result = vc.andExpr(result, vc.iffExpr((Expr)a.get(i), (Expr)b.get(i)));
+	}
+	return result;
+    }
+
+
+    public static boolean test9(int N) throws Cvc3Exception {
+	ValidityChecker vc = null;
+	try {
+	    vc = ValidityChecker.create();
+
+	    int i;
+	    List a = new ArrayList();
+	    List b = new ArrayList();
+	    
+	    for (i=0; i < N; i++) {
+		a.add(vc.varExpr("a" + Integer.toString(i), vc.boolType()));
+		b.add(vc.varExpr("b" + Integer.toString(i), vc.boolType()));
+	    }
+	    
+	    List sum1 = add(vc,a,b);
+	    List sum2 = add(vc,b,a);
+	    
+	    Expr q = vectorEq(vc,sum1,sum2);
+	    
+	    check(vc, q);
+	    
+	    //  Proof p = vc.getProof();
+
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in test9(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc != null) vc.delete();
+	}
+    }
+
+
+  public static boolean test22() throws Cvc3Exception {
+    ValidityChecker vc = null;
+
+    try {
+      vc = ValidityChecker.create();
+      Type intType = vc.intType();
+      Type fType = vc.funType(intType, intType);
+
+      Op f = vc.createOp("f", fType);
+      Expr x = vc.varExpr("x", intType);
+      Expr fx = vc.exprFromString("f(x)");
+
+      Expr p = vc.exprFromString("FORALL (x:INT) : x < f(x)");
+
+      List patternvv = new ArrayList();
+      List patternv = new ArrayList();
+      patternv.add(fx);
+      patternvv.add(patternv);
+
+      vc.setTriggers(p, patternv);
+      DebugAssert(patternvv.equals(p.getTriggers()),
+          "Expected p.getTriggers() == patternvv: " + p.toString());
+
+      vc.setMultiTriggers(p, patternvv);
+
+      DebugAssert(patternvv.equals(p.getTriggers()),
+          "Expected p.getTriggers() == patternvv: " + p.toString());
+
+      List vars = new ArrayList();
+      vars.add(x);
+      Expr r = vc.forallExpr(vars, vc.ltExpr(x, fx), patternv);
+
+      DebugAssert(patternvv.equals(r.getTriggers()),
+          "Expected r.getTriggers() == patternvv: " + r.toString());
+
+      Expr s = vc.exprFromString("FORALL (x:INT) : x > f(x)");
+      vc.setTrigger(s, fx);
+
+      List trigsvv = s.getTriggers();
+      DebugAssert(trigsvv.size() == 1, "Expected s.getTriggers().size() == 1: "
+          + trigsvv.size());
+
+      List trigsv = (List)trigsvv.get(0);
+      DebugAssert(trigsv.size() == 1, "Expected s.getTriggers()[0].size() == 1: "
+          + trigsv.size());
+
+      DebugAssert(fx.equals(trigsv.get(0)),
+          "Expected s.getTriggers()[0][0] == fx: " + (trigsv.get(0)));
+
+      Expr t = vc.exprFromString("FORALL (x:INT) : x > f(x)");
+      vc.setMultiTrigger(t, patternv);
+      trigsvv = t.getTriggers();
+      DebugAssert(trigsvv.size() == 1, "Expected t.getTriggers().size() == 1: "
+          + trigsvv.size());
+
+      trigsv = (List)trigsvv.get(0);
+      DebugAssert(trigsv.size() == 1, "Expected t.getTriggers()[0].size() == 1: "
+          + trigsv.size());
+
+      DebugAssert(fx.equals(trigsv.get(0)),
+          "Expected t.getTriggers()[0][0] == fx: " + (trigsv.get(0)));
+
+      Expr u = vc.forallExprMultiTriggers(vars, vc.ltExpr(x, fx), patternvv);
+
+      DebugAssert(patternvv.equals(u.getTriggers()),
+          "Expected u.getTriggers() == patternvv: " + u.toString());
+    
+    } catch (Exception e) {
+      System.out.println("*** Exception caught in test22(): \n" + e);
+      e.printStackTrace(System.out);
+      return false;
+    } finally {
+      if (vc != null)
+        vc.delete();
+    }
+    return true;
+  }
+    
+  private static boolean test23() throws Cvc3Exception {
+    ValidityChecker vc = null;
+
+    try {
+      vc = ValidityChecker.create();
+      Type intType = vc.intType();
+
+      Expr x = vc.varExpr("x",intType);
+      Expr y= vc.varExpr("y",intType);
+      Expr a = vc.varExpr("a",intType);
+      Expr b = vc.varExpr("b",intType);
+
+      Expr s = vc.exprFromString("x < y");
+      Expr t = vc.exprFromString("a < b");
+
+      System.out.println( "s=" + s + "\nt=" + t );
+
+      List oldExprs = new ArrayList(), newExprs = new ArrayList();
+      oldExprs.add(x);
+      oldExprs.add(y);
+      newExprs.add(a);
+      newExprs.add(b);
+
+      Expr u = s.subst(oldExprs,newExprs);
+      System.out.println( "u=" + u );
+
+      DebugAssert( t.equals(u), "Expected t==u" );
+    } catch(Throwable e) {
+      System.out.println( "*** Exception caught in test23(): ");
+      e.printStackTrace(System.out);
+      return false;
+    } finally {
+      if (vc != null)
+        vc.delete();
+    }
+    return true;
+  }
+
+    public static ExprMut bvadder(ValidityChecker vc, Expr a, Expr b, Expr c) throws Cvc3Exception {
+	return vc.newBVXorExpr(a, vc.newBVXorExpr(b, c));
+    }
+
+
+    public static ExprMut bvcarry(ValidityChecker vc, Expr a, Expr b, Expr c) throws Cvc3Exception {
+	return vc.newBVOrExpr(vc.newBVAndExpr(a,b), vc.newBVOrExpr(vc.newBVAndExpr(b,c),vc.newBVAndExpr(a,c)));
+    }
+
+    public static List bvadd(ValidityChecker vc, List a, List b) throws Cvc3Exception {
+	int N=a.size();
+	Expr c = vc.newBVConstExpr(new Rational(0, vc.embeddedManager()), 1);
+	
+	List sum = new ArrayList();
+	for (int i = 0; i < N; i++) {
+	    sum.add(bvadder(vc,(Expr)a.get(i),(Expr)b.get(i),c));
+	    c = bvcarry(vc,(Expr)a.get(i),(Expr)b.get(i),c);
+	}
+	return sum;
+    }
+
+
+    public static ExprMut bvvectorEq(ValidityChecker vc, List a, List b) throws Cvc3Exception {
+	int N = a.size();
+	ExprMut result = vc.newBVConstExpr("1");
+	
+	for (int i = 0; i < N; i++) {
+	    result = vc.newBVAndExpr(result, vc.newBVXnorExpr((Expr)a.get(i), (Expr)b.get(i)));
+	}
+	return result;
+    }
+
+
+    public static boolean bvtest9(int N) throws Cvc3Exception {
+	ValidityChecker vc = null;
+	try {
+	    vc = ValidityChecker.create();
+	    
+	    Expr a, b, sum1;
+	    a = vc.varExpr("a", vc.bitvecType(N));
+	    b = vc.varExpr("b", vc.bitvecType(N));
+	    List kids = new ArrayList();
+	    kids.add(a);
+	    kids.add(b);
+	    sum1 = vc.newBVPlusExpr(N, kids);
+	    
+	    List avec = new ArrayList();
+	    List bvec = new ArrayList();
+	    List sum1vec = new ArrayList();
+	    for (int i = 0; i < N; i++) {
+		avec.add(vc.newBVExtractExpr(a, i, i));
+		bvec.add(vc.newBVExtractExpr(b, i, i));
+		sum1vec.add(vc.newBVExtractExpr(sum1, i, i));
+	    }
+	    
+	    List sum2 = bvadd(vc,avec,bvec);
+	    
+	    Expr q = bvvectorEq(vc,sum1vec,sum2);
+	    
+	    check(vc, vc.eqExpr(q,vc.newBVConstExpr("1")));
+
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in bvtest9(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc != null) vc.delete();
+	}
+    }
+
+
+    public static boolean test10() throws Cvc3Exception {
+	ValidityChecker vc = null;
+	try {
+	    vc = ValidityChecker.create();
+	    
+	    Expr x = vc.varExpr("x", vc.realType());
+	    Expr y = vc.varExpr("y", vc.realType());
+	    
+	    Type real = vc.realType();
+	    List RxR = new ArrayList();
+	    RxR.add(real);
+	    RxR.add(real);
+
+	    Type realxreal2real = vc.funType(RxR, real);
+	    Op g = vc.createOp("g", realxreal2real);
+	    
+	    Expr gxy = vc.funExpr(g, x, y);
+	    Expr gyx = vc.funExpr(g, y, x);
+
+	    Expr ia = vc.eqExpr(x,y);
+	    Expr ib = vc.eqExpr(gxy, gyx);
+
+	    Expr e = vc.impliesExpr(vc.eqExpr(x,y),vc.eqExpr(gxy, gyx));
+	    check(vc, e, false);
+
+	    Op h = vc.createOp("h", realxreal2real);
+	    
+	    Expr hxy = vc.funExpr(h, x, y);
+	    Expr hyx = vc.funExpr(h, y, x);
+	    
+	    e = vc.impliesExpr(vc.eqExpr(x,y),vc.eqExpr(hxy, hyx));
+	    check(vc, e, false);
+
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in test10(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc != null) vc.delete();
+	}
+    }
+
+
+
+    public static int printImpliedLiterals(ValidityChecker vc) throws Cvc3Exception {
+	int count = 0;
+	System.out.println("Implied Literals:");
+	Expr impLit = vc.getImpliedLiteral();
+	while (!impLit.isNull()) {
+	    ++count;
+	    System.out.println(impLit);
+	    impLit = vc.getImpliedLiteral();
+	}
+	return count;
+    }
+
+    public static boolean test11() throws Cvc3Exception {
+	ValidityChecker vc = null;
+	try {
+	    vc = ValidityChecker.create();
+	    
+	    Expr x = vc.varExpr("x", vc.realType());
+	    Expr y = vc.varExpr("y", vc.realType());
+	    Expr z = vc.varExpr("z", vc.realType());
+	    
+	    Type real = vc.realType();
+	    Type real2real = vc.funType(real, real);
+	    Type real2bool = vc.funType(real, vc.boolType());
+	    Op f = vc.createOp("f", real2real);
+	    Op p = vc.createOp("p", real2bool);
+
+	    Expr fx = vc.funExpr(f, x);
+	    Expr fy = vc.funExpr(f, y);
+	    
+	    Expr px = vc.funExpr(p, x);
+	    Expr py = vc.funExpr(p, y);
+	    
+	    Expr xeqy = vc.eqExpr(x, y);
+	    Expr yeqx = vc.eqExpr(y, x);
+	    Expr xeqz = vc.eqExpr(x, z);
+	    Expr zeqx = vc.eqExpr(z, x);
+	    Expr yeqz = vc.eqExpr(y, z);
+	    Expr zeqy = vc.eqExpr(z, y);
+	    
+	    int c;
+
+	    vc.registerAtom(vc.eqExpr(x,vc.ratExpr(0,1)));
+	    vc.registerAtom(xeqy);
+	    vc.registerAtom(yeqx);
+	    vc.registerAtom(xeqz);
+	    vc.registerAtom(zeqx);
+	    vc.registerAtom(yeqz);
+	    vc.registerAtom(zeqy);
+	    vc.registerAtom(px);
+	    vc.registerAtom(py);
+	    vc.registerAtom(vc.eqExpr(fx, fy));
+
+	    System.out.println("Push");
+	    vc.push();
+
+	    System.out.println("Assert x = y");
+	    vc.assertFormula(xeqy);
+	    c = printImpliedLiterals(vc);
+	    DebugAssert(c==3,"Implied literal error 0");
+
+	    System.out.println("Push");
+	    vc.push();
+	    System.out.println("Assert x /= z");
+	    vc.assertFormula(vc.notExpr(xeqz));
+	    c = printImpliedLiterals(vc);
+	    DebugAssert(c==4,"Implied literal error 1");
+	    System.out.println("Pop");
+	    vc.pop();
+	    
+	    System.out.println("Push");
+	    vc.push();
+	    System.out.println("Assert y /= z");
+	    vc.assertFormula(vc.notExpr(yeqz));
+	    c = printImpliedLiterals(vc);
+	    DebugAssert(c==4,"Implied literal error 2");
+	    System.out.println("Pop");
+	    vc.pop();
+	    
+	    System.out.println("Push");
+	    vc.push();
+	    System.out.println("Assert p(x)");
+	    vc.assertFormula(px);
+	    c = printImpliedLiterals(vc);
+	    DebugAssert(c==2,"Implied literal error 3");
+	    System.out.println("Pop");
+	    vc.pop();
+
+	    System.out.println("Push");
+	    vc.push();
+	    System.out.println("Assert p(y)");
+	    vc.assertFormula(py);
+	    c = printImpliedLiterals(vc);
+	    DebugAssert(c==2,"Implied literal error 4");
+	    System.out.println("Pop");
+	    vc.pop();
+
+	    System.out.println("Pop");
+	    vc.pop();
+	    
+	    System.out.println("Push");
+	    vc.push();
+	    System.out.println("Assert y = x");
+	    vc.assertFormula(yeqx);
+	    c = printImpliedLiterals(vc);
+	    DebugAssert(c==3,"Implied literal error 5");
+	    System.out.println("Pop");
+	    vc.pop();
+
+	    System.out.println("Push");
+	    vc.push();
+	    System.out.println("Assert p(x)");
+	    vc.assertFormula(px);
+	    c = printImpliedLiterals(vc);
+	    DebugAssert(c==1,"Implied literal error 6");
+	    System.out.println("Assert x = y");
+	    vc.assertFormula(xeqy);
+	    c = printImpliedLiterals(vc);
+	    DebugAssert(c==4,"Implied literal error 7");
+	    System.out.println("Pop");
+	    vc.pop();
+
+	    System.out.println("Push");
+	    vc.push();
+	    System.out.println("Assert NOT p(x)");
+	    vc.assertFormula(vc.notExpr(px));
+	    c = printImpliedLiterals(vc);
+	    DebugAssert(c==1,"Implied literal error 8");
+	    System.out.println("Assert x = y");
+	    vc.assertFormula(xeqy);
+	    c = printImpliedLiterals(vc);
+	    DebugAssert(c==4,"Implied literal error 9");
+	    System.out.println("Pop");
+	    vc.pop();
+
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in test11(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc != null) vc.delete();
+	}
+    }
+
+
+    public static boolean test12() throws Cvc3Exception {
+	ValidityChecker vc = null;
+	try {
+	    vc = ValidityChecker.create();
+
+	    Type realType = vc.realType();
+	    Type intType = vc.intType();
+	    Type boolType = vc.boolType();
+	    vc.push();
+	    int initial_layer = vc.stackLevel();
+	    int initial_scope = vc.scopeLevel();
+	    Expr exprObj_trueID = vc.trueExpr();
+	    Expr exprObj_falseID = vc.notExpr(vc.trueExpr());
+	    vc.popTo(initial_layer);
+	    DebugAssert(vc.scopeLevel() == initial_scope, "Expected no change");
+	    DebugAssert(vc.stackLevel() == initial_layer, "Expected no change");
+	    // TODO: what happens if we push and then popscope?
+
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in test12(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc != null) vc.delete();
+	}
+    }
+
+
+    public static boolean test13() throws Cvc3Exception {
+	ValidityChecker vc = null;
+	FlagsMut flags = null;
+	try {
+	    flags = ValidityChecker.createFlags(null);
+	    flags.setFlag("dagify-exprs",false);
+	    flags.setFlag("dump-log", ".test13.cvc");
+	    vc = ValidityChecker.create(flags);
+
+	    Expr rat_one = vc.ratExpr(1);
+	    Expr rat_two = vc.ratExpr(2);
+	    Expr rat_minus_one = vc.ratExpr(-1);
+	    
+	    QueryResult query_result;
+	    query_result = vc.query(vc.eqExpr(rat_two,rat_one));
+	    System.out.println("2=1 " + query_result);
+	    query_result = vc.query(vc.eqExpr(rat_two,rat_minus_one));
+	    System.out.println("2=-1 " + query_result);
+
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in test13(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc != null) vc.delete();
+	    if (flags != null) flags.delete();
+	}
+    }
+
+
+    public static Expr func1(ValidityChecker vc) throws Cvc3Exception {
+	// local Expr 'tmp'
+	Expr tmp = vc.varExpr("tmp", vc.boolType());
+	return vc.trueExpr();
+    }
+
+
+    public static boolean test14() throws Cvc3Exception {
+	ValidityChecker vc = null;
+	try {
+	    vc = ValidityChecker.create();
+	    
+	    // func call: ok
+	    Expr test1 = func1(vc);
+	    
+	    // func call: fail
+	    Expr test2 = func1(vc);
+
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in test13(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc != null) vc.delete();
+	}
+    }
+
+
+    public static boolean test15() throws Cvc3Exception {
+	ValidityChecker vc = null;
+	FlagsMut flags = null;
+	try {
+	    flags = ValidityChecker.createFlags(null);
+	    flags.setFlag("dagify-exprs",false);
+	    vc = ValidityChecker.create(flags);
+
+	    /*****************************************************
+	     *          array declaration                        *
+	     *****************************************************/
+	    
+	    // array: index type
+	    Type index_type = vc.subrangeType(vc.ratExpr(0), 
+					      vc.ratExpr(3));
+	    // array: data type
+	    Type data_type = vc.subrangeType(vc.ratExpr(0), 
+					     vc.ratExpr(3));
+	    // array type: [0 .. 3] of 0 .. 3
+	    Type array_type = vc.arrayType(index_type, data_type);
+	    Expr arr = vc.varExpr("array", array_type);
+	    
+	    // array: [1,1,0,0]
+	    arr = vc.writeExpr(arr, vc.ratExpr(0), vc.ratExpr(1));
+	    arr = vc.writeExpr(arr, vc.ratExpr(1), vc.ratExpr(1));
+	    arr = vc.writeExpr(arr, vc.ratExpr(2), vc.ratExpr(0));
+	    arr = vc.writeExpr(arr, vc.ratExpr(3), vc.ratExpr(0));
+	    
+	    
+	    
+	    /*****************************************************
+	     *             forall Expr                           *
+	     *****************************************************/
+	    
+	    // for loop: index
+	    Expr id = vc.boundVarExpr("id", "0", vc.subrangeType(vc.ratExpr(0),
+								 vc.ratExpr(2)));
+	    List vars = new ArrayList();
+	    vars.add(id);
+	    
+	    // for loop: body
+	    Expr for_body = vc.leExpr(vc.readExpr(arr, id),
+				      vc.readExpr(arr, vc.plusExpr(id, vc.ratExpr(1))));
+	    // forall expr
+	    Expr forall_expr = vc.forallExpr(vars, for_body);
+	    
+	    vc.push();
+	    check(vc, forall_expr);
+	    
+	    System.out.println("Scope level: " + vc.scopeLevel());
+	    System.out.println("Counter-example:");
+	    List assertions = vc.getCounterExample();
+	    for (int i = 0; i < assertions.size(); ++i) {
+		System.out.println(assertions.get(i));
+	    }
+	    System.out.println("End of counter-example");
+	    System.out.println("");
+	    vc.pop();
+	    
+	    /*****************************************************
+	     *            manual expansion                       *
+	     *****************************************************/
+	    
+	    Expr e1 = vc.leExpr(vc.readExpr(arr, vc.ratExpr(0)),
+				vc.readExpr(arr, vc.ratExpr(1)));
+	    Expr e2 = vc.leExpr(vc.readExpr(arr, vc.ratExpr(1)),
+				vc.readExpr(arr, vc.ratExpr(2)));
+	    Expr e3 = vc.leExpr(vc.readExpr(arr, vc.ratExpr(2)),
+				vc.readExpr(arr, vc.ratExpr(3)));
+	    Expr manual_expr = vc.andExpr(e1, vc.andExpr(e2, e3));
+
+	    
+
+	    /*****************************************************
+	     *            exists Expr                            *
+	     *****************************************************/
+	    
+	    // exists: index
+	    Expr id_ex = vc.varExpr("id_ex", vc.subrangeType(vc.ratExpr(0),
+							     vc.ratExpr(2)));
+	    List vars_ex = new ArrayList();
+	    vars_ex.add(id_ex);
+	    
+	    // exists: body
+	    Expr ex_body = vc.gtExpr(vc.readExpr(arr, id_ex),
+				     vc.readExpr(arr, vc.plusExpr(id_ex, vc.ratExpr(1))));
+	    // exists expr
+	    Expr ex_expr = vc.existsExpr(vars_ex, ex_body);
+
+
+
+
+	    /*****************************************************
+	     *            ???     forall <==> manual expansion   *
+	     *****************************************************/
+	    System.out.println("Checking forallExpr <==> manual expansion ...");
+	    if (vc.query(vc.iffExpr(forall_expr, manual_expr)) == QueryResult.VALID)
+		System.out.println("   -- yes.");
+	    else {
+		System.out.println("   -- no, with counter examples as ");
+		
+		List assert1 = vc.getCounterExample();
+		for (int i = 0; i < assert1.size(); i ++)
+		    System.out.println(assert1.get(i));
+	    }
+	    System.out.println();
+
+
+
+	    /*****************************************************
+	     *            ???     !forall <==> existsExpr        *
+	     *****************************************************/
+	    System.out.println();
+	    System.out.println("Checking !forallExpr <==> existsExpr ...");
+	    if (vc.query(vc.iffExpr(vc.notExpr(forall_expr), ex_expr)) == QueryResult.VALID)
+		System.out.println("   -- yes.");
+	    else if (vc.incomplete()) {
+		System.out.println("   -- incomplete:");
+		List reasons = vc.incompleteReasons();
+		for (int i = 0; i < reasons.size(); ++i)
+		    System.out.println(reasons.get(i));
+	    }
+	    else {
+		System.out.println("   -- no, with counter examples as ");
+		
+		List assert2 = vc.getCounterExample();
+		for (int i = 0; i < assert2.size(); i ++)
+		    System.out.println(assert2.get(i));
+	    }
+	    
+	    System.out.println();
+	    System.out.println("End of testcases.");
+	    System.out.println();
+	    
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in test15(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc != null) vc.delete();
+	    if (flags != null) flags.delete();
+	}
+    }
+
+
+    public static boolean test16() throws Cvc3Exception {
+	ValidityChecker vc = null;
+	try {
+	    vc = ValidityChecker.create();
+
+	    Type zto100 = vc.subrangeType(vc.ratExpr(0), vc.ratExpr(100));
+	    Expr mem = vc.varExpr("mem", vc.arrayType(zto100, vc.intType()));
+	    Expr a = vc.varExpr("a", zto100);
+	    Expr b = vc.varExpr("b", zto100);
+	    
+	    Expr lhs = vc.readExpr(vc.writeExpr(mem, a, vc.ratExpr(30)), b);
+	    Expr rhs = vc.readExpr(vc.writeExpr(mem, b, vc.ratExpr(40)), a);
+	    
+	    Expr q = vc.impliesExpr(vc.notExpr(vc.eqExpr(a, b)), vc.eqExpr(lhs, rhs));
+	    
+	    check(vc, q);
+	    
+	    System.out.println("Scope level: " + vc.scopeLevel());
+	    System.out.println("Counter-example:");
+	    List assertions = vc.getCounterExample();
+	    DebugAssert(assertions.size() > 0, "Expected non-empty counter-example");
+	    for (int i = 0; i < assertions.size(); ++i) {
+		System.out.println(assertions.get(i));
+	    }
+	    System.out.println("End of counter-example");
+	    System.out.println();
+	    
+	    HashMap m = vc.getConcreteModel();
+	    if(m.isEmpty())
+		System.out.println(" Did not find concrete model for any vars");
+	    else {
+		System.out.println("%Satisfiable  Variable Assignment: %");
+		Iterator it = m.entrySet().iterator();
+		while(it.hasNext()) {
+		    Map.Entry next = (Map.Entry)it.next();
+		    Expr eq;
+		    Expr key = (Expr)next.getKey();
+		    Expr value = (Expr)next.getValue();
+		    if (key.getType().isBoolean()) {
+			DebugAssert(value.isBooleanConst(),
+				    "Bad variable assignement: e = "+ key
+				    +"\n\n val = "+ value);
+			if(value.isTrue())
+			    eq = key;
+			else
+			    eq = vc.notExpr(key);
+		    }
+		    else
+			eq = vc.eqExpr(key, value);
+		    //:TODO:System.out.println(Expr(ASSERT, eq));
+		    System.out.println(eq);
+		}
+	    }
+
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in test16(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc != null) vc.delete();
+	}
+    }
+
+
+    public static boolean test17() throws Cvc3Exception {
+	ValidityChecker vc = null;
+	try {
+	    vc = ValidityChecker.create();
+	    try {
+		List selectors = new ArrayList();
+		List types = new ArrayList();
+		
+		selectors.add("car");
+		types.add(vc.intType().getExpr());
+		selectors.add("cdr");
+		types.add(vc.stringExpr("list"));
+		
+		Type badList = vc.dataType("list", "cons", selectors, types);
+		DebugAssert(false, "Typechecking exception expected");
+	    } catch(TypecheckException e) {
+		// fall through
+	    }
+
+	    vc.delete();
+
+	    vc = ValidityChecker.create();
+	    {
+		List constructors = new ArrayList();
+		List selectors = new ArrayList();
+		List selectors0 = new ArrayList();
+		List selectors1 = new ArrayList();
+		selectors.add(selectors0);
+		selectors.add(selectors1);
+		List types = new ArrayList();
+		List types0 = new ArrayList();
+		List types1 = new ArrayList();
+		types.add(types0);
+		types.add(types1);
+		
+		constructors.add("cons");
+		selectors0.add("car");
+		types0.add(vc.intType().getExpr());
+		selectors0.add("cdr");
+		types0.add(vc.stringExpr("list"));
+		constructors.add("null");
+		
+		Type list = vc.dataType("list", constructors, selectors, types);
+		
+		Expr x = vc.varExpr("x", vc.intType());
+		Expr y = vc.varExpr("y", list);
+		
+		List args = new ArrayList();
+		args.add(x);
+		args.add(y);
+		Expr cons = vc.datatypeConsExpr("cons", args);
+		
+		Expr sel = vc.datatypeSelExpr("car", cons);
+		boolean b = check(vc, vc.eqExpr(sel, x));
+		DebugAssert(b, "Should be valid");
+	    }
+	    vc.delete();
+
+	    vc = ValidityChecker.create();
+	    try {
+		List names = new ArrayList();
+		List constructors = new ArrayList();
+		List constructors0 = new ArrayList();
+		List constructors1 = new ArrayList();
+		constructors.add(constructors0);
+		constructors.add(constructors1);
+		List selectors = new ArrayList();
+		List selectors0 = new ArrayList();
+		List selectors1 = new ArrayList();
+		List selectors00 = new ArrayList();
+		List selectors10 = new ArrayList();
+		selectors.add(selectors0);
+		selectors0.add(selectors00);
+		selectors.add(selectors1);
+		selectors1.add(selectors10);
+		List types = new ArrayList();
+		List types0 = new ArrayList();
+		List types1 = new ArrayList();
+		List types00 = new ArrayList();
+		List types10 = new ArrayList();
+		types.add(types0);
+		types0.add(types00);
+		types.add(types1);
+		types1.add(types10);
+
+		names.add("list1");
+		
+		constructors0.add("cons1");
+		selectors00.add("car1");
+		types00.add(vc.intType().getExpr());
+		selectors00.add("cdr1");
+		types00.add(vc.stringExpr("list2"));
+		
+		names.add("list2");
+		
+		constructors1.add("cons2");
+		selectors10.add("car2");
+		types10.add(vc.intType().getExpr());
+		selectors10.add("cdr2");
+		types10.add(vc.stringExpr("list1"));
+		constructors1.add("null");
+		
+		List returnTypes = vc.dataType(names, constructors, selectors, types);
+		
+		Type list1 = (Type)returnTypes.get(0);
+		Type list2 = (Type)returnTypes.get(1);
+		
+		Expr x = vc.varExpr("x", vc.intType());
+		Expr y = vc.varExpr("y", list2);
+		Expr z = vc.varExpr("z", list1);
+		
+		List args = new ArrayList();
+		args.add(x);
+		args.add(y);
+		Expr cons1 = vc.datatypeConsExpr("cons1", args);
+		
+		Expr isnull = vc.datatypeTestExpr("null", y);
+		Expr hyp = vc.andExpr(vc.eqExpr(z, cons1), isnull);
+		
+		Expr nullE = vc.datatypeConsExpr("null", new ArrayList());
+		
+		args = new ArrayList();
+		args.add(x);
+		args.add(nullE);
+		Expr cons1_2 = vc.datatypeConsExpr("cons1", args);
+		
+		boolean b = check(vc, vc.impliesExpr(hyp, vc.eqExpr(z, cons1_2)));
+		DebugAssert(b, "Should be valid");
+	    } catch(TypecheckException e) {
+		// fall through
+	    }
+
+	    vc.delete();
+
+	    vc = ValidityChecker.create();
+	    {
+		List constructors = new ArrayList();
+		List selectors = new ArrayList();
+		selectors.add(new ArrayList());
+		selectors.add(new ArrayList());
+		List types = new ArrayList();
+		types.add(new ArrayList());
+		types.add(new ArrayList());
+		
+		constructors.add("A");
+		constructors.add("B");
+		
+		Type two = vc.dataType("two", constructors, selectors, types);
+		
+		Expr x = vc.varExpr("x", two);
+		Expr y = vc.varExpr("y", two);
+		Expr z = vc.varExpr("z", two);
+		
+		List args = new ArrayList();
+		args.add(vc.notExpr(vc.eqExpr(x,y)));
+		args.add(vc.notExpr(vc.eqExpr(y,z)));
+		args.add(vc.notExpr(vc.eqExpr(x,z)));
+		
+		boolean b = check(vc, vc.notExpr(vc.andExpr(args)));
+		DebugAssert(b, "Should be valid");
+	    }
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in test17(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc != null) vc.delete();
+	}
+    }
+
+
+    public static boolean test18() throws Cvc3Exception {
+	ValidityChecker vc = null;
+	FlagsMut flags = null;
+	try {
+	    flags = ValidityChecker.createFlags(null);
+	    flags.setFlag("tcc", true);
+	    vc = ValidityChecker.create(flags);
+
+	    List names = new ArrayList();
+	    List constructors = new ArrayList();
+	    List constructors0 = new ArrayList();
+	    List constructors1 = new ArrayList();
+	    List constructors2 = new ArrayList();
+	    constructors.add(constructors0);
+	    constructors.add(constructors1);
+	    constructors.add(constructors2);
+	    List selectors = new ArrayList();
+	    List selectors0 = new ArrayList();
+	    List selectors1 = new ArrayList();
+	    List selectors2 = new ArrayList();
+	    List selectors00 = new ArrayList();
+	    List selectors01 = new ArrayList();
+	    List selectors10 = new ArrayList();
+	    List selectors11 = new ArrayList();
+	    List selectors20 = new ArrayList();
+	    List selectors21 = new ArrayList();
+	    selectors.add(selectors0);
+	    selectors0.add(selectors00);
+	    selectors0.add(selectors01);
+	    selectors.add(selectors1);
+	    selectors1.add(selectors10);
+	    selectors1.add(selectors11);
+	    selectors.add(selectors2);
+	    selectors2.add(selectors20);
+	    selectors2.add(selectors21);
+	    List types = new ArrayList();
+	    List types0 = new ArrayList();
+	    List types1 = new ArrayList();
+	    List types2 = new ArrayList();
+	    List types00 = new ArrayList();
+	    List types01 = new ArrayList();
+	    List types10 = new ArrayList();
+	    List types11 = new ArrayList();
+	    List types20 = new ArrayList();
+	    List types21 = new ArrayList();
+	    types.add(types0);
+	    types0.add(types00);
+	    types0.add(types01);
+	    types.add(types1);
+	    types1.add(types10);
+	    types1.add(types11);
+	    types.add(types2);
+	    types2.add(types20);
+	    types2.add(types21);
+	    
+	    names.add("nat");
+	    
+	    constructors0.add("zero");
+	    constructors0.add("succ");
+	    selectors01.add("pred");
+	    types01.add(vc.stringExpr("nat"));
+	    
+	    names.add("list");
+	    
+	    constructors1.add("cons");
+	    selectors10.add("car");
+	    types10.add(vc.stringExpr("tree"));
+	    selectors10.add("cdr");
+	    types10.add(vc.stringExpr("list"));
+	    constructors1.add("null");
+
+	    names.add("tree");
+	    
+	    constructors2.add("leaf");
+	    constructors2.add("node");
+	    selectors21.add("data");
+	    types21.add(vc.stringExpr("nat"));
+	    selectors21.add("children");
+	    types21.add(vc.stringExpr("list"));
+	    
+	    List returnTypes = vc.dataType(names, constructors, selectors, types);
+	    
+	    Type nat = (Type)returnTypes.get(0);
+	    Type listType = (Type)returnTypes.get(1);
+	    Type tree = (Type)returnTypes.get(2);
+	    
+	    Expr x = vc.varExpr("x", nat);
+	    
+	    List args = new ArrayList();
+	    Expr zero = vc.datatypeConsExpr("zero", args);
+	    Expr nullE = vc.datatypeConsExpr("null", args);
+	    Expr leaf = vc.datatypeConsExpr("leaf", args);
+	    
+	    vc.push();
+	    try {
+		check(vc, vc.notExpr(vc.eqExpr(zero, nullE)));
+		DebugAssert(false, "Should have caught tcc exception");
+	    } catch (TypecheckException e) { }
+
+	    vc.pop();
+	    args.add(vc.datatypeSelExpr("pred",x));
+	    Expr spx = vc.datatypeConsExpr("succ", args);
+	    Expr spxeqx = vc.eqExpr(spx, x);
+	    vc.push();
+	    try {
+		check(vc, spxeqx);
+		DebugAssert(false, "Should have caught tcc exception");
+	    } catch(TypecheckException e) { }
+	    
+	    vc.pop();
+	    boolean b = check(vc, vc.impliesExpr(vc.datatypeTestExpr("succ", x), spxeqx));
+	    DebugAssert(b, "Should be valid");
+	    
+	    b = check(vc, vc.orExpr(vc.datatypeTestExpr("zero", x),
+				     vc.datatypeTestExpr("succ", x)));
+	    DebugAssert(b, "Should be valid");
+	    
+	    Expr y = vc.varExpr("y", nat);
+	    Expr xeqy = vc.eqExpr(x, y);
+	    args.clear();
+	    args.add(x);
+	    Expr sx = vc.datatypeConsExpr("succ", args);
+	    args.clear();
+	    args.add(y);
+	    Expr sy = vc.datatypeConsExpr("succ", args);
+	    Expr sxeqsy = vc.eqExpr(sx,sy);
+	    b = check(vc, vc.impliesExpr(xeqy, sxeqsy));
+	    DebugAssert(b, "Should be valid");
+	    
+	    b = check(vc, vc.notExpr(vc.eqExpr(sx, zero)));
+	    DebugAssert(b, "Should be valid");
+	    
+	    b = check(vc, vc.impliesExpr(sxeqsy, xeqy));
+	    DebugAssert(b, "Should be valid");
+	    
+	    b = check(vc, vc.notExpr(vc.eqExpr(sx, x)));
+	    DebugAssert(b, "Should be valid");
+
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in test18(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc != null) vc.delete();
+	    if (flags != null) flags.delete();
+	}
+    }
+
+
+    public static boolean test19() throws Cvc3Exception {
+	ValidityChecker vc = null;
+	FlagsMut flags = null;
+	try {
+	    flags = ValidityChecker.createFlags(null);
+	    flags.setFlag("dagify-exprs",false);
+	    vc = ValidityChecker.create(flags);
+
+	    Type RealType= vc.realType();
+	    Type IntType= vc.intType();
+	    Type BoolType= vc.boolType();
+	    Type PtrType = RealType;
+	    Type HeapType = vc.arrayType(PtrType, RealType);
+	    
+	    // -----------------
+	    //ASSERT(FORALL (CVCi: REAL): (Hs[CVCi] = Ht[CVCi]));
+	    //QUERY(Hs[(t6 + (3 * 1))] = Ht[(t6 + (3 * 1))]);
+	    Expr Ad = vc.boundVarExpr("CVCi", "CVCi", RealType);
+	    Expr Hs = vc.varExpr("Hs", HeapType);
+	    Expr Ht = vc.varExpr("Ht", HeapType);
+	    Expr t6 = vc.varExpr("t6", RealType);
+	    
+	    List Vars = new ArrayList();
+	    Vars.add(Ad);
+	    // Body = (Hs[Ad] = Ht[Ad])
+	    Expr Body = vc.eqExpr(vc.readExpr(Hs, Ad), vc.readExpr(Ht, Ad));
+	    
+	    //A = forall (~i:REAL): Body
+	    Expr A = vc.forallExpr(Vars, Body); 
+	    
+	    // Q = (Hs[t6] = Ht[t6])          
+	    Expr Q = vc.eqExpr(vc.readExpr(Hs, t6), vc.readExpr(Ht, t6));
+	    
+	    // ----------- CHECK A . Q
+	    vc.push();
+	    
+	    vc.assertFormula(A);
+	    
+	    System.out.println("Checking formula " + Q);
+	    System.out.println(" in context " + A);
+	    
+	    QueryResult Succ = vc.query(Q);
+	    
+	    DebugAssert(Succ == QueryResult.VALID, "Expected valid formula");
+	    
+	    return true;
+	} catch (Exception e) {
+	    System.out.println("*** Exception caught in test19(): \n" + e);
+	    e.printStackTrace(System.out);
+	    return false;
+	} finally {
+	    if (vc != null) vc.delete();
+	    if (flags != null) flags.delete();
+	}
+    }
+
+    public static boolean testNonlinearBV() throws Cvc3Exception {
+    	ValidityChecker vc = null;
+    	FlagsMut flags = null;
+    	try {
+    	    flags = ValidityChecker.createFlags(null);
+    	    flags.setFlag("dagify-exprs",false);   	        	    
+    	    vc = ValidityChecker.create(flags);    	    	    
+    	
+    	    int bvLength = 8;
+    	    
+    	    Rational zero = new Rational(0, vc.embeddedManager());
+    	    
+    	    Expr x   = vc.varExpr("x", vc.bitvecType(bvLength));
+    	    Expr y   = vc.varExpr("y", vc.bitvecType(bvLength));
+    	    Expr bv0 = vc.newBVConstExpr(zero, bvLength); 
+
+    	    // BVUDIV
+    	    vc.push();
+    	    System.out.println("Checking BVUDIV:");
+    	    Expr udiv = vc.newBVUDivExpr(x, y);
+    	    Expr umult = vc.newBVMultExpr(bvLength, udiv, y);
+    	    Expr test = vc.eqExpr(bv0, y);
+    	    boolean result = check(vc, vc.impliesExpr(vc.notExpr(test), vc.newBVLEExpr(umult, x)), true);    	    
+    	    DebugAssert(result, "Expected valid formula");
+    	    vc.pop();
+
+    	    // BVUREM
+    	    vc.push();
+    	    System.out.println("Checking BVUREM:");
+    	    Expr urem = vc.newBVURemExpr(x, y);
+    	    result = check(vc, vc.impliesExpr(vc.notExpr(test), vc.newBVLTExpr(urem, y)), true);    	    
+    	    DebugAssert(result, "Expected valid formula");
+    	    vc.pop();
+
+    	    // BVSDIV
+    	    vc.push();
+    	    System.out.println("Checking BVSDIV:");
+    	    Expr sdiv = vc.newBVSDivExpr(x, y);
+    	    Expr smult = vc.newBVMultExpr(bvLength, sdiv, y);
+    	    Expr signed_test = vc.newBVSLEExpr(bv0, x);
+    	    signed_test = vc.andExpr(signed_test, vc.newBVSLTExpr(bv0, y));
+    	    result = check(vc, vc.impliesExpr(signed_test, vc.newBVSLEExpr(smult, x)), true);    	    
+    	    DebugAssert(result, "Expected valid formula");
+    	    vc.pop();
+
+    	    // BVSREM
+    	    vc.push();
+    	    System.out.println("Checking BVSREM:");
+    	    Expr srem = vc.newBVSRemExpr(x, y);
+    	    result = check(vc, vc.impliesExpr(signed_test, vc.newBVLTExpr(srem, y)), true);    	    
+    	    DebugAssert(result, "Expected valid formula");
+    	    vc.pop();
+
+    	    // BVSMOD
+    	    vc.push();
+    	    System.out.println("Checking BVSMOD:");
+    	    Expr smod = vc.newBVSModExpr(x, y);
+    	    result = check(vc, vc.impliesExpr(signed_test, vc.newBVLTExpr(smod, y)), true);    	    
+    	    DebugAssert(result, "Expected valid formula");
+    	    vc.pop();
+
+    	    return true;
+    	} catch (Exception e) {
+    	    System.out.println("*** Exception caught in test19(): \n" + e);
+    	    e.printStackTrace(System.out);
+    	    return false;
+    	} finally {
+    	    if (vc != null) vc.delete();
+    	    if (flags != null) flags.delete();
+    	}
+    }
+
+    public static boolean testDistinct() throws Cvc3Exception {
+    	ValidityChecker vc = null;
+    	FlagsMut flags = null;
+    	try {
+    	    flags = ValidityChecker.createFlags(null);
+    	    vc = ValidityChecker.create(flags);    	    	    
+    	
+    	    int bvLength = 2;
+    	    int elements_count = bvLength*bvLength + 1;
+    	    
+    	    List elements = new ArrayList();
+    	    for (int i = 0; i < elements_count; i ++)
+    	    	elements.add(vc.varExpr("x" + i, vc.bitvecType(bvLength)));
+    	    Expr distinct = vc.distinctExpr(elements);
+    	    boolean result = check(vc, vc.notExpr(distinct), true);    	    
+    	    DebugAssert(result, "Expected valid formula");
+
+    	    return true;
+    	} catch (Exception e) {
+    	    System.out.println("*** Exception caught in test19(): \n" + e);
+    	    e.printStackTrace(System.out);
+    	    return false;
+    	} finally {
+    	    if (vc != null) vc.delete();
+    	    if (flags != null) flags.delete();
+    	}
+    }
+
+}
+
diff --git a/src/bindings/compat/java/src/cvc3/Theorem.java b/src/bindings/compat/java/src/cvc3/Theorem.java
new file mode 100644
index 0000000..f464ce8
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/Theorem.java
@@ -0,0 +1,17 @@
+package cvc3;
+
+import java.util.*;
+
+public class Theorem extends Embedded {
+    // jni methods
+
+    /// Constructor
+
+    public Theorem(Object Theorem, EmbeddedManager embeddedManager) {
+	super(Theorem, embeddedManager);
+    }
+
+
+    /// API (immutable)
+
+}
diff --git a/src/bindings/compat/java/src/cvc3/TheoremMut.java b/src/bindings/compat/java/src/cvc3/TheoremMut.java
new file mode 100644
index 0000000..ee59e8c
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/TheoremMut.java
@@ -0,0 +1,18 @@
+package cvc3;
+
+import java.util.*;
+
+public class TheoremMut extends Theorem {
+    // jni methods
+    
+    
+    /// Constructor
+
+    // create embedded object
+    public TheoremMut(Object TheoremMut, EmbeddedManager embeddedManager) {
+	super(TheoremMut, embeddedManager);
+    }
+
+    
+    /// API (mutable)
+}
diff --git a/src/bindings/compat/java/src/cvc3/TimeoutHandler.java b/src/bindings/compat/java/src/cvc3/TimeoutHandler.java
new file mode 100644
index 0000000..7df3018
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/TimeoutHandler.java
@@ -0,0 +1,11 @@
+package cvc3;
+
+import java.util.*;
+
+// used to enforce timeout in class Cvc3
+class TimeoutHandler extends TimerTask {
+    public void run() {
+	System.out.println("self-timeout.");
+	System.exit(1);
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/Type.java b/src/bindings/compat/java/src/cvc3/Type.java
new file mode 100644
index 0000000..12f92a6
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/Type.java
@@ -0,0 +1,135 @@
+package cvc3;
+
+public class Type extends Embedded {
+    // jni methods
+    private static native boolean
+        jniIsAny(Object Type) throws Cvc3Exception;
+    private static native boolean
+        jniIsArray(Object Type) throws Cvc3Exception;
+    private static native boolean
+        jniIsBitvector(Object Type) throws Cvc3Exception;
+    private static native boolean
+	jniIsBool(Object Type) throws Cvc3Exception;
+    private static native boolean
+	jniIsDatatype(Object Type) throws Cvc3Exception;
+    private static native boolean
+	jniIsFunction(Object Type) throws Cvc3Exception;
+    private static native boolean
+	jniIsNull(Object Type) throws Cvc3Exception;
+    private static native boolean
+	jniIsSubtype(Object Type) throws Cvc3Exception;
+
+    private static native Object
+	jniGetExpr(Object Type) throws Cvc3Exception;
+    private static native int
+	jniArity(Object Type) throws Cvc3Exception;
+    private static native Type
+	jniGetChild(Object Type, int i) throws Cvc3Exception;
+
+    private static native boolean
+	jniEquals(Object Type1, Object Type2) throws Cvc3Exception;
+    private static native String
+	jniToString(Object Type) throws Cvc3Exception;
+
+    private static native Object jniConstr(Object expr) throws Cvc3Exception;
+    
+    public static Type valueOf(Expr expr) throws Cvc3Exception {
+      return new Type(jniConstr(expr.embedded()), expr.embeddedManager());
+    }
+
+    /// Constructor
+
+    public Type(Object Type, EmbeddedManager embeddedManager) {
+	super(Type, embeddedManager);
+    }
+
+
+    /// API (immutable)
+
+    public boolean isAny() throws Cvc3Exception {
+      return jniIsAny(embedded());
+    }
+
+    public boolean isArray() throws Cvc3Exception {
+      return jniIsArray(embedded());
+    }
+    
+    public boolean isBitvector() throws Cvc3Exception {
+      return jniIsBitvector(embedded());
+    }
+    
+    public boolean isBoolean() throws Cvc3Exception {
+	return jniIsBool(embedded());
+    }
+
+    public boolean isDatatype() throws Cvc3Exception {
+	return jniIsDatatype(embedded());
+    }
+
+    public boolean isFunction() throws Cvc3Exception {
+	return jniIsFunction(embedded());
+    }
+
+    public boolean isNull() throws Cvc3Exception {
+	return jniIsNull(embedded());
+    }
+
+    public boolean isSubtype() throws Cvc3Exception {
+	return jniIsSubtype(embedded());
+    }
+
+
+
+
+
+    public Expr getExpr() throws Cvc3Exception {
+	return new Expr(jniGetExpr(embedded()), embeddedManager());
+    }
+
+    public int arity() throws Cvc3Exception {
+	return jniArity(embedded());
+    }
+
+    public Type getChild(int i) throws Cvc3Exception {
+	assert(i >= 0 && i < arity());
+	return new Type(jniGetChild(embedded(), i), embeddedManager());
+    }
+
+
+    // Printing
+    public String toString() {
+	String result = "";
+	try {
+	    result = jniToString(embedded());
+	} catch (Cvc3Exception e) {
+	    System.out.println(e);
+	    assert(false);
+	}
+	return result;
+    }
+
+    public boolean equals(Object o) {
+	if (this == o) return true;
+
+	if (!(o instanceof Type)) return false;
+	boolean result = false;
+	try {
+	    result = jniEquals(embedded(), ((Embedded)o).embedded());
+	} catch (Cvc3Exception e) {
+	    assert(false);
+	}
+	return result;
+    } 
+
+    // must return the same hash code for two exprs if equals returns true
+    
+    public int hashCode() {
+	try {
+	    return getExpr().hashCode();
+	} catch (Cvc3Exception e) {
+	    assert(false);
+	}
+	assert(false);
+	return 0;
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/TypeMut.java b/src/bindings/compat/java/src/cvc3/TypeMut.java
new file mode 100644
index 0000000..fc5f87f
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/TypeMut.java
@@ -0,0 +1,18 @@
+package cvc3;
+
+import java.util.*;
+
+public class TypeMut extends Type {
+    // jni methods
+    
+    
+    /// Constructor
+
+    // create embedded object
+    public TypeMut(Object TypeMut, EmbeddedManager embeddedManager) {
+	super(TypeMut, embeddedManager);
+    }
+
+    
+    /// API (mutable)
+}
diff --git a/src/bindings/compat/java/src/cvc3/TypecheckException.java b/src/bindings/compat/java/src/cvc3/TypecheckException.java
new file mode 100644
index 0000000..c6ed587
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/TypecheckException.java
@@ -0,0 +1,13 @@
+package cvc3;
+
+import java.util.*;
+
+/** mirrors CVC3::TypecheckException */
+public class TypecheckException extends Cvc3Exception {
+
+    private final static long serialVersionUID = 1L;
+
+    public TypecheckException(String message) {
+	super(message);
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/ValidityChecker.java b/src/bindings/compat/java/src/cvc3/ValidityChecker.java
new file mode 100644
index 0000000..7407d02
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/ValidityChecker.java
@@ -0,0 +1,1736 @@
+package cvc3;
+
+import java.util.*;
+
+import cvc3.Expr;
+import cvc3.JniUtils;
+
+public class ValidityChecker extends Embedded {
+    // jni methods
+    private static native Object
+	jniCreate1() throws Cvc3Exception;
+    private static native Object
+	jniCreate2(Object Flags) throws Cvc3Exception;
+    private static native Object
+	jniCreateFlags() throws Cvc3Exception;
+    private static native Object
+	jniGetFlags(Object ValidityChecker) throws Cvc3Exception;
+
+
+    private static native Object
+	jniBoolType(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object
+	jniRealType(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object
+	jniIntType(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object
+	jniSubrangeType(Object ValidityChecker, Object lExpr, Object rExpr) throws Cvc3Exception;
+    private static native Object
+	jniSubtypeType(Object ValidityChecker, Object predExpr, Object witnessExpr) throws Cvc3Exception;
+    private static native Object
+	jniTupleType1(Object ValidityChecker, Object Type0, Object Type1) throws Cvc3Exception;
+    private static native Object
+	jniTupleType2(Object ValidityChecker, Object Type0, Object Type1, Object Type2) throws Cvc3Exception;
+    private static native Object
+	jniTupleType3(Object ValidityChecker, Object[] Types) throws Cvc3Exception;
+    private static native Object
+	jniRecordType1(Object ValidityChecker, String field, Object Type) throws Cvc3Exception;
+    private static native Object
+	jniRecordType2(Object ValidityChecker, String field0, Object Type0,
+		       String field1, Object Type1) throws Cvc3Exception;
+    private static native Object
+	jniRecordType3(Object ValidityChecker, String field0, Object Type0,
+		       String field1, Object Type1, String field2, Object Type2) throws Cvc3Exception;
+    private static native Object
+	jniRecordType4(Object ValidityChecker, Object[] fields, Object[] types) throws Cvc3Exception;
+    private static native Object
+	jniDataType1(Object ValidityChecker, String name, String constructor,
+		     Object[] selectors, Object[] types) throws Cvc3Exception;
+    private static native Object
+	jniDataType2(Object ValidityChecker, String name, Object[] constructors,
+		     Object[] selectors, Object[] types) throws Cvc3Exception;
+    private static native Object[]
+	jniDataType3(Object ValidityChecker, Object[] names, Object[] constructors,
+		     Object[] selectors, Object[] types) throws Cvc3Exception;
+    private static native Object
+	jniAnyType(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object
+    jniArrayLiteral(Object ValidityChecker, Object indexVar, Object bodyExpr) throws Cvc3Exception;
+    private static native Object
+	jniArrayType(Object ValidityChecker, Object TypeIndex, Object TypeData) throws Cvc3Exception;
+    private static native Object
+	jniBitvecType(Object ValidityChecker, int n) throws Cvc3Exception;
+    private static native Object
+	jniFunType1(Object ValidityChecker, Object typeDom, Object TypeRan) throws Cvc3Exception;
+    private static native Object
+	jniFunType2(Object ValidityChecker, Object[] typeDom, Object TypeRan) throws Cvc3Exception;
+    private static native Object
+	jniCreateType1(Object ValidityChecker, String typeName) throws Cvc3Exception;
+    private static native Object
+	jniCreateType2(Object ValidityChecker, String typeName, Object TypeDef) throws Cvc3Exception;
+    private static native Object
+	jniLookupType(Object ValidityChecker, String typeName) throws Cvc3Exception;
+
+    
+    private static native Object
+	jniGetExprManager(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object
+	jniNullExpr(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object
+	jniVarExpr1(Object ValidityChecker, String name, Object Type) throws Cvc3Exception;
+    private static native Object
+	jniVarExpr2(Object ValidityChecker, String name, Object Type, Object defExpr) throws Cvc3Exception;
+    private static native Object
+	jniBoundVarExpr(Object ValidityChecker, String name, String uid, Object Type) throws Cvc3Exception;
+    /*private static native Object
+    jniBoundVarExpr2(Object ValidityChecker, Object Type) throws Cvc3Exception;
+    */
+    private static native Object
+	jniLookupVar(Object ValidityChecker, String name) throws Cvc3Exception;
+    private static native Object
+	jniLookupOp(Object ValidityChecker, String name) throws Cvc3Exception;
+    private static native Object
+	jniGetType(Object ValidityChecker, Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniGetBaseType1(Object ValidityChecker, Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniGetBaseType2(Object ValidityChecker, Object Type) throws Cvc3Exception;
+    private static native Object
+	jniGetTypePred(Object ValidityChecker, Object Type, Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniStringExpr(Object ValidityChecker, String str) throws Cvc3Exception;
+    private static native Object
+	jniIdExpr(Object ValidityChecker, String name) throws Cvc3Exception;
+    private static native Object
+	jniListExpr1(Object ValidityChecker, Object[] kids) throws Cvc3Exception;
+    private static native Object
+	jniListExpr2(Object ValidityChecker, Object Expr1) throws Cvc3Exception;
+    private static native Object
+	jniListExpr3(Object ValidityChecker, Object Expr1, Object Expr2) throws Cvc3Exception;
+    private static native Object
+	jniListExpr4(Object ValidityChecker, Object Expr1, Object Expr2, Object Expr3) throws Cvc3Exception;
+    private static native Object
+	jniListExpr5(Object ValidityChecker, String op, Object[] kids) throws Cvc3Exception;
+    private static native Object
+	jniListExpr6(Object ValidityChecker, String op, Object Expr1) throws Cvc3Exception;
+    private static native Object
+	jniListExpr7(Object ValidityChecker, String op, Object Expr1, Object Expr2) throws Cvc3Exception;
+    private static native Object
+	jniListExpr8(Object ValidityChecker, String op, Object Expr1, Object Expr2, Object Expr3) throws Cvc3Exception;
+    private static native void
+    jniPrintExpr(Object ValidityChecker, Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniParseExpr(Object ValidityChecker, Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniParseType(Object ValidityChecker, Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniImportExpr(Object ValidityChecker, Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniImportType(Object ValidityChecker, Object Type) throws Cvc3Exception;
+    private static native void
+    jniCmdsFromString(Object ValidityChecker, String s) throws Cvc3Exception;
+    private static native Object
+    jniExprFromString(Object ValidityChecker, String s) throws Cvc3Exception;
+    private static native Object
+	jniTrueExpr(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object
+	jniFalseExpr(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object
+	jniNotExpr(Object ValidityChecker, Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniAndExpr1(Object ValidityChecker, Object ExprLeft, Object ExprRight) throws Cvc3Exception;
+    private static native Object
+	jniAndExpr2(Object ValidityChecker, Object[] ExprChildren) throws Cvc3Exception;
+    private static native Object
+	jniOrExpr1(Object ValidityChecker, Object ExprLeft, Object ExprRight) throws Cvc3Exception;
+    private static native Object
+	jniOrExpr2(Object ValidityChecker, Object[] Exprchildren) throws Cvc3Exception;
+    private static native Object
+	jniImpliesExpr(Object ValidityChecker, Object ExprHyp, Object ExprConc) throws Cvc3Exception;
+    private static native Object
+	jniIffExpr(Object ValidityChecker, Object ExprLeft, Object ExprRight) throws Cvc3Exception;
+    private static native Object
+	jniEqExpr(Object ValidityChecker, Object Expr1, Object Expr2) throws Cvc3Exception;
+    private static native Object
+    jniDistinctExpr(Object ValidityChecker, Object[] ExprChildren) throws Cvc3Exception;
+	private static native Object
+	jniIteExpr(Object ValidityChecker, Object ExprIf, Object ExprThen, Object ExprElse) throws Cvc3Exception;
+    private static native Object
+	jniCreateOp1(Object ValidityChecker, String name, Object Type) throws Cvc3Exception;
+    private static native Object
+	jniCreateOp2(Object ValidityChecker, String name, Object Type, Object ExprDef) throws Cvc3Exception;
+    private static native Object
+	jniEqOp() throws Cvc3Exception;
+    private static native Object
+	jniLtOp() throws Cvc3Exception;
+    private static native Object
+	jniLeOp() throws Cvc3Exception;
+    private static native Object
+	jniGtOp() throws Cvc3Exception;
+    private static native Object
+	jniGeOp() throws Cvc3Exception;
+    private static native Object
+	jniPlusOp() throws Cvc3Exception;
+    private static native Object
+	jniMinusOp() throws Cvc3Exception;
+    private static native Object
+	jniMultOp() throws Cvc3Exception;
+    private static native Object
+	jniDivideOp() throws Cvc3Exception;
+    private static native Object
+	jniFunExpr1(Object ValidityChecker, Object Op, Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniFunExpr2(Object ValidityChecker, Object Op, Object ExprLeft, Object ExprRight) throws Cvc3Exception;
+    private static native Object
+	jniFunExpr3(Object ValidityChecker, Object Op, Object Expr1, Object Expr2, Object Expr3) throws Cvc3Exception;
+    private static native Object
+	jniFunExpr4(Object ValidityChecker, Object Op, Object[] ExprChildren) throws Cvc3Exception;
+    private static native Object
+	jniRatExpr1(Object ValidityChecker, int n, int d) throws Cvc3Exception;
+    private static native Object
+	jniRatExpr2(Object ValidityChecker, String n, String d, int base) throws Cvc3Exception;
+    private static native Object
+	jniRatExpr3(Object ValidityChecker, String n, int base) throws Cvc3Exception;
+    private static native Object
+	jniUminusExpr(Object ValidityChecker, Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniPlusExpr1(Object ValidityChecker, Object Exprleft, Object ExprRight) throws Cvc3Exception;
+    private static native Object
+	jniPlusExpr2(Object ValidityChecker, Object[] kids) throws Cvc3Exception;
+    private static native Object
+	jniMinusExpr(Object ValidityChecker, Object ExprLeft, Object ExprRight) throws Cvc3Exception;
+    private static native Object
+	jniMultExpr(Object ValidityChecker, Object ExprLeft, Object ExprRight) throws Cvc3Exception;
+    private static native Object
+	jniPowExpr(Object ValidityChecker, Object ExprX, Object ExprN) throws Cvc3Exception;
+    private static native Object
+	jniDivideExpr(Object ValidityChecker, Object ExprNumerator, Object ExprDenominator) throws Cvc3Exception;
+    private static native Object
+	jniLtExpr(Object ValidityChecker, Object ExprLeft, Object ExprRight) throws Cvc3Exception;
+    private static native Object
+	jniLeExpr(Object ValidityChecker, Object ExprLeft, Object ExprRight) throws Cvc3Exception;
+    private static native Object
+	jniGtExpr(Object ValidityChecker, Object ExprLeft, Object ExprRight) throws Cvc3Exception;
+    private static native Object
+	jniGeExpr(Object ValidityChecker, Object ExprLeft, Object ExprRight) throws Cvc3Exception;
+    private static native Object
+	jniRecordExpr1(Object ValidityChecker, String field, Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniRecordExpr2(Object ValidityChecker, String field1, Object Expr1,
+		   String field2, Object Expr2) throws Cvc3Exception;
+    private static native Object
+	jniRecordExpr3(Object ValidityChecker, String field1, Object Expr1, String field2, Object Expr2,
+		   String field3, Object Expr3) throws Cvc3Exception;
+    private static native Object
+	jniRecordExpr4(Object ValidityChecker, Object[] StringFields, Object[] Exprs) throws Cvc3Exception;
+    private static native Object
+	jniRecSelectExpr(Object ValidityChecker, Object ExprRecord, String field) throws Cvc3Exception;
+    private static native Object
+	jniRecUpdateExpr(Object ValidityChecker, Object ExprRecord, String field,
+		      Object ExprNewValue) throws Cvc3Exception;
+    private static native Object
+	jniReadExpr(Object ValidityChecker, Object ExprArray, Object ExprIndex) throws Cvc3Exception;
+    private static native Object
+	jniWriteExpr(Object ValidityChecker, Object ExprArray, Object ExprIndex,
+		  Object ExprNewValue) throws Cvc3Exception;
+    private static native Object
+	jniNewBVConstExpr1(Object ValidityChecker, String s, int base) throws Cvc3Exception;
+    private static native Object
+	jniNewBVConstExpr2(Object ValidityChecker, boolean[] bits) throws Cvc3Exception;
+    private static native Object
+	jniNewBVConstExpr3(Object ValidityChecker, Object RationalR, int len) throws Cvc3Exception;
+    private static native Object
+	jniNewConcatExpr1(Object ValidityChecker, Object Expr1, Object Expr2) throws Cvc3Exception;
+    private static native Object
+	jniNewConcatExpr2(Object ValidityChecker, Object[] Exprkids) throws Cvc3Exception;
+    private static native Object
+	jniNewBVExtractExpr(Object ValidityChecker, Object ExprE, int hi, int low) throws Cvc3Exception;
+    private static native Object
+	jniNewBVNegExpr(Object ValidityChecker, Object Expr1) throws Cvc3Exception;
+    private static native Object
+	jniNewBVAndExpr1(Object ValidityChecker, Object Expr1, Object Expr2) throws Cvc3Exception;
+    private static native Object
+	jniNewBVAndExpr2(Object ValidityChecker, Object[] ExprKids) throws Cvc3Exception;
+    private static native Object
+	jniNewBVOrExpr1(Object ValidityChecker, Object Expr1, Object Expr2) throws Cvc3Exception;
+    private static native Object
+	jniNewBVOrExpr2(Object ValidityChecker, Object[] ExprKids) throws Cvc3Exception;
+    private static native Object
+	jniNewBVXorExpr1(Object ValidityChecker, Object Expr1, Object Expr2) throws Cvc3Exception;
+    private static native Object
+	jniNewBVXorExpr2(Object ValidityChecker, Object[] ExprKids) throws Cvc3Exception;
+    private static native Object
+	jniNewBVXnorExpr1(Object ValidityChecker, Object Expr1, Object Expr2) throws Cvc3Exception;
+    private static native Object
+	jniNewBVXnorExpr2(Object ValidityChecker, Object[] ExprKids) throws Cvc3Exception;
+    private static native Object
+	jniNewBVNandExpr(Object ValidityChecker, Object Expr1, Object Expr2) throws Cvc3Exception;
+    private static native Object
+	jniNewBVNorExpr(Object ValidityChecker, Object Expr1, Object Expr2) throws Cvc3Exception;
+    private static native Object
+	jniNewBVLTExpr(Object ValidityChecker, Object Expr1, Object Expr2) throws Cvc3Exception;
+    private static native Object
+	jniNewBVLEExpr(Object ValidityChecker, Object Expr1, Object Expr2) throws Cvc3Exception;
+    private static native Object
+	jniNewBVSLTExpr(Object ValidityChecker, Object Expr1, Object Expr2) throws Cvc3Exception;
+    private static native Object
+	jniNewBVSLEExpr(Object ValidityChecker, Object Expr1, Object Expr2) throws Cvc3Exception;
+    private static native Object
+	jniNewSXExpr(Object ValidityChecker, Object Expr1, int len) throws Cvc3Exception;
+    private static native Object
+	jniNewBVUminusExpr(Object ValidityChecker, Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniNewBVSubExpr(Object ValidityChecker, Object Expr1, Object Expr2) throws Cvc3Exception;
+    private static native Object
+	jniNewBVPlusExpr(Object ValidityChecker, int numbits, Object[] ExprK) throws Cvc3Exception;
+    private static native Object
+	jniNewBVMultExpr(Object ValidityChecker, int numbits, Object Expr1, Object Expr2) throws Cvc3Exception;
+    private static native Object
+    jniNewBVUDivExpr(Object ValidityChecker, Object left, Object right) throws Cvc3Exception;
+    private static native Object
+    jniNewBVURemExpr(Object ValidityChecker, Object left, Object right) throws Cvc3Exception;
+    private static native Object
+    jniNewBVSDivExpr(Object ValidityChecker, Object left, Object right) throws Cvc3Exception;
+    private static native Object
+    jniNewBVSRemExpr(Object ValidityChecker, Object left, Object right) throws Cvc3Exception;
+    private static native Object
+    jniNewBVSModExpr(Object ValidityChecker, Object left, Object right)	throws Cvc3Exception;
+    private static native Object
+    jniNewBVSHL(Object ValidityChecker, Object left, Object right)	throws Cvc3Exception;
+    private static native Object
+    jniNewBVLSHR(Object ValidityChecker, Object left, Object right)	throws Cvc3Exception;
+    private static native Object
+    jniNewBVASHR(Object ValidityChecker, Object left, Object right)	throws Cvc3Exception;
+    private static native Object
+	jniNewFixedLeftShiftExpr(Object ValidityChecker, Object Expr1, int r) throws Cvc3Exception;
+    private static native Object
+	jniNewFixedConstWidthLeftShiftExpr(Object ValidityChecker, Object Expr1, int r) throws Cvc3Exception;
+    private static native Object
+	jniNewFixedRightShiftExpr(Object ValidityChecker, Object Expr1, int r) throws Cvc3Exception;
+    private static native Object
+        jniComputeBVConst(Object ValidityChecker, Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniTupleExpr(Object ValidityChecker, Object[] Exprs) throws Cvc3Exception;
+    private static native Object
+	jniTupleSelectExpr(Object ValidityChecker, Object ExprTuple, int index) throws Cvc3Exception;
+    private static native Object
+	jniTupleUpdateExpr(Object ValidityChecker, Object ExprTuple, int index,
+			   Object ExprNewValue) throws Cvc3Exception;
+    private static native Object
+	jniDatatypeConsExpr(Object ValidityChecker, String constructor, Object[] ExprArgs) throws Cvc3Exception;
+    private static native Object
+	jniDatatypeSelExpr(Object ValidityChecker, String selector, Object ExprArg) throws Cvc3Exception;
+    private static native Object
+	jniDatatypeTestExpr(Object ValidityChecker, String constructor, Object ExprArg) throws Cvc3Exception;
+    private static native Object
+	jniForallExpr1(Object ValidityChecker, Object[] ExprVars, Object ExprBody) throws Cvc3Exception;
+    private static native Object
+	jniForallExpr2(Object ValidityChecker, Object[] ExprVars, Object ExprBody,
+		      Object ExprTrigger) throws Cvc3Exception;
+    private static native Object
+    jniForallExpr3(Object ValidityChecker, Object[] ExprVars, Object ExprBody,
+              Object[] ExprTriggers) throws Cvc3Exception;
+    private static native Object
+	jniForallExpr4(Object ValidityChecker, Object[] ExprVars, Object ExprBody,
+		      Object[][] ExprTriggers) throws Cvc3Exception;
+    private static native void
+	jniSetTrigger(Object ValidityChecker, Object ExprClosure, Object ExprTrigger) throws Cvc3Exception;
+    private static native void
+	jniSetTriggers(Object ValidityChecker, Object ExprClosure, Object[] ExprTriggers) throws Cvc3Exception;
+    private static native void
+    jniSetTriggers2(Object ValidityChecker, Object ExprClosure, Object[][] ExprTriggers) throws Cvc3Exception;
+    private static native void
+    jniSetMultiTrigger(Object ValidityChecker, Object ExprClosure, Object[] ExprMultiTrigger) throws Cvc3Exception;
+    private static native Object
+	jniExistsExpr(Object ValidityChecker, Object[] ExprVars, Object ExprBody) throws Cvc3Exception;
+    private static native Object
+	jniLambdaExpr(Object ValidityChecker, Object[] ExprVars, Object ExprBody) throws Cvc3Exception;
+    private static native Object
+	jniTransClosure(Object ValidityChecker, Object Op) throws Cvc3Exception;
+    private static native Object
+	jniSimulateExpr(Object ValidityChecker, Object ExprF, Object ExprS,
+		     Object[] ExprInputs, Object ExprN) throws Cvc3Exception;
+
+    private static native void
+    jniSetResourceLimit(Object ValidityChecker, int limit) throws Cvc3Exception;
+    private static native void
+	jniAssertFormula(Object ValidityChecker, Object Expr) throws Cvc3Exception;
+    private static native void
+	jniRegisterAtom(Object ValidityChecker, Object Expr) throws Cvc3Exception;
+    private static native Object
+	jniGetImpliedLiteral(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object
+	jniSimplify(Object ValidityChecker, Object Expr) throws Cvc3Exception;
+    private static native String
+	jniQuery(Object ValidityChecker, Object Expr) throws Cvc3Exception;
+    private static native String
+	jniCheckUnsat(Object ValidityChecker, Object Expr) throws Cvc3Exception;
+    private static native String
+	jniCheckContinue(Object ValidityChecker) throws Cvc3Exception;
+    private static native String
+	jniRestart(Object ValidityChecker, Object Expr) throws Cvc3Exception;
+    private static native void
+	jniReturnFromCheck(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object[]
+	jniGetUserAssumptions(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object[]
+	jniGetInternalAssumptions(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object[]
+	jniGetAssumptions(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object[]
+	jniGetAssumptionsUsed(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object[]
+	jniGetCounterExample(Object ValidityChecker, boolean inOrder) throws Cvc3Exception;
+    private static native Object[]
+	jniGetConcreteModel(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object
+	jniGetValue(Object ValidityChecker, Object Expr) throws Cvc3Exception;
+    private static native String
+	jniValue(Object ValidityChecker, Object Expr) throws Cvc3Exception;
+    private static native boolean
+	jniInconsistent1(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object[]
+	jniInconsistent2(Object ValidityChecker) throws Cvc3Exception;
+    private static native boolean
+	jniIncomplete1(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object[]
+	jniIncomplete2(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object
+	jniGetProof(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object
+	jniGetTCC(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object[]
+	jniGetAssumptionsTCC(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object
+	jniGetProofTCC(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object
+	jniGetClosure(Object ValidityChecker) throws Cvc3Exception;
+    private static native Object
+	jniGetProofClosure(Object ValidityChecker) throws Cvc3Exception;
+    
+    private static native int
+	jniStackLevel(Object ValidityChecker) throws Cvc3Exception;
+    private static native void
+	jniPush(Object ValidityChecker) throws Cvc3Exception;
+    private static native void
+	jniPop(Object ValidityChecker) throws Cvc3Exception;
+    private static native void
+	jniPopTo(Object ValidityChecker, int stackLevel) throws Cvc3Exception;
+    private static native int
+	jniScopeLevel(Object ValidityChecker) throws Cvc3Exception;
+    private static native void
+	jniPushScope(Object ValidityChecker) throws Cvc3Exception;
+    private static native void
+	jniPopScope(Object ValidityChecker) throws Cvc3Exception;
+    private static native void
+	jniPopToScope(Object ValidityChecker, int scopeLevel) throws Cvc3Exception;
+    private static native Object
+	jniGetCurrentContext(Object ValidityChecker) throws Cvc3Exception;
+
+    private static native void
+	jniLoadFile1(Object ValidityChecker, String fileName, String lang) throws Cvc3Exception;
+
+    private static native Object
+	jniGetStatistics(Object ValidityChecker) throws Cvc3Exception;
+    private static native void
+	jniPrintStatistics(Object ValidityChecker) throws Cvc3Exception;
+
+    private static native void
+	jniSetTimeLimit(Object ValidityChecker, int limit) throws Cvc3Exception;
+
+
+
+    // delete ValidityChecker, all expressions created using it,
+    // and all embedded objects registered with its embeddedManager
+    public synchronized void delete() throws Cvc3Exception {
+	if (isDeleted()) return;
+
+	//:TEST:
+	embeddedManager().cleanUp();
+
+	embeddedManager().delete();
+	EmbeddedManager.jniDelete(embedded());
+	d_embedded = null;
+    }
+
+    // ensure that all embedded objects are deallocated eventually
+    public void finalize() throws Throwable {
+	try {
+	    if (!isDeleted()) {
+		assert(false);
+//		System.out.println("ValidityChecker.Finalizer: should never be called");
+		throw new Error("ValidityChecker.Finalizer: should never be called");
+	    }
+	} finally {
+	    super.finalize();
+	}
+    }
+
+    /// Constructor
+
+    // create embedded object
+    protected ValidityChecker(Object ValidityChecker) {
+	super(ValidityChecker, new EmbeddedManager());
+    }
+
+
+    /// API: ValidityChecker
+
+
+    // Creation
+
+    // delete must be called before ValidityChecker is garbage collected
+    public static ValidityChecker create() throws Cvc3Exception {
+	return new ValidityChecker(jniCreate1());
+    }
+
+    // delete must be called before ValidityChecker is garbage collected
+    public static ValidityChecker create(Flags flags) throws Cvc3Exception {
+	return new ValidityChecker(jniCreate2(flags.embedded()));
+    }
+
+
+    // Flags
+
+    // if embeddedManger is null then delete must be called before
+    // the returned Flags is garbage collected
+    public static FlagsMut createFlags(EmbeddedManager embeddedManager) throws Cvc3Exception {
+	return new FlagsMut(jniCreateFlags(), embeddedManager);
+    }
+
+    public FlagsMut getFlags() throws Cvc3Exception {
+	return new FlagsMut(jniGetFlags(embedded()), embeddedManager());
+    }
+
+
+
+    // Type-related methods
+
+    public TypeMut boolType() throws Cvc3Exception {
+	return new TypeMut(jniBoolType(embedded()), embeddedManager());
+    }
+    
+    public TypeMut realType() throws Cvc3Exception {
+	return new TypeMut(jniRealType(embedded()), embeddedManager());
+    }
+
+    public TypeMut intType() throws Cvc3Exception {
+	return new TypeMut(jniIntType(embedded()), embeddedManager());
+    }
+
+    public TypeMut subrangeType(Expr l, Expr r) throws Cvc3Exception {
+	return new TypeMut(
+	  jniSubrangeType(embedded(), l.embedded(), r.embedded()),
+	  embeddedManager());
+    }
+
+    public TypeMut subtypeType(Expr pred, Expr witness) throws Cvc3Exception {
+	return new TypeMut(
+	  jniSubtypeType(embedded(), pred.embedded(), witness.embedded()),
+	  embeddedManager());
+    }
+
+    public TypeMut tupleType(Type type0, Type type1) throws Cvc3Exception {
+	return new TypeMut(
+	  jniTupleType1(embedded(), type0.embedded(), type1.embedded()),
+	  embeddedManager());
+    }
+
+    public TypeMut tupleType(Type type0, Type type1, Type type2) throws Cvc3Exception {
+	return new TypeMut(
+	  jniTupleType2(embedded(), type0.embedded(), type1.embedded(), type2.embedded()),
+	  embeddedManager());
+    }
+
+    public TypeMut tupleType(List types) throws Cvc3Exception {
+	return new TypeMut(
+	  jniTupleType3(embedded(), JniUtils.unembedList(types)),
+	  embeddedManager());
+    }
+
+    public TypeMut recordType(String field, Type type) throws Cvc3Exception {
+	return new TypeMut(
+	  jniRecordType1(embedded(), field, type.embedded()),
+	  embeddedManager());
+    }
+
+    public TypeMut recordType(String field0, Type type0, String field1, Type type1) throws Cvc3Exception {
+	return new TypeMut(
+	  jniRecordType2(embedded(), field0, type0.embedded(), field1, type1.embedded()),
+	  embeddedManager());
+    }
+
+    public TypeMut recordType(String field0, Type type0, String field1, Type type1,
+			    String field2, Type type2) throws Cvc3Exception {
+	return new TypeMut(
+	  jniRecordType3(embedded(), field0, type0.embedded(), field1, type1.embedded(),
+			 field2, type2.embedded()),
+	  embeddedManager());
+    }
+
+    public TypeMut recordType(List fields, List types) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(fields, String.class));
+	return new TypeMut(
+	  jniRecordType4(embedded(), JniUtils.toArray(fields), JniUtils.unembedList(types)),
+	  embeddedManager());
+    }
+   
+    public TypeMut dataType(String name, String constructor,
+			  List selectors, List types) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(selectors, String.class));
+	assert(JniUtils.listInstanceof(types, Expr.class));
+	return new TypeMut(
+	  jniDataType1(embedded(), name, constructor,
+		       JniUtils.toArray(selectors), JniUtils.unembedList(types)),
+	  embeddedManager());
+    }
+
+    public TypeMut dataType(String name, String[] constructors,
+			  String[][] selectors, Expr[][] types) throws Cvc3Exception {
+	return new TypeMut(
+          jniDataType2(embedded(), name, constructors, selectors, JniUtils.unembedArrayArray(types)),
+	  embeddedManager());
+    }
+
+    public TypeMut dataType(String name, List constructors,
+			  List selectors, List types) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(constructors, String.class));
+	assert(JniUtils.listListInstanceof(selectors, String.class));
+	assert(JniUtils.listListInstanceof(types, Expr.class));
+	return new TypeMut(
+	  jniDataType2(embedded(), name, JniUtils.toArray(constructors),
+		       JniUtils.toArrayArray(selectors), JniUtils.unembedListList(types)),
+	  embeddedManager());
+    }
+
+    public List dataType(List names, List constructors,
+			  List selectors, List types) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(names, String.class));
+	assert(JniUtils.listListInstanceof(constructors, String.class));
+	assert(JniUtils.listListListInstanceof(selectors, String.class));
+	assert(JniUtils.listListListInstanceof(types, Expr.class));
+	Object[] dataTypes =
+	  jniDataType3(embedded(), JniUtils.toArray(names), JniUtils.toArrayArray(constructors),
+		       JniUtils.toArrayArrayArray(selectors), JniUtils.unembedListListList(types));
+	return JniUtils.embedList(dataTypes, TypeMut.class, embeddedManager());
+    }
+
+    public ExprMut arrayLiteral(Expr var, Expr body) throws Cvc3Exception {
+      return new ExprMut(jniArrayLiteral(embedded(), var.embedded(), body.embedded()),embeddedManager());
+    }
+
+  public TypeMut anyType() throws Cvc3Exception {
+    return new TypeMut(jniAnyType(embedded()),embeddedManager());
+  }
+    
+    public TypeMut arrayType(Type typeIndex, Type typeData) throws Cvc3Exception {
+	return new TypeMut(
+	  jniArrayType(embedded(), typeIndex.embedded(), typeData.embedded()),
+	  embeddedManager());
+    }
+
+    public TypeMut bitvecType(int n) throws Cvc3Exception {
+	return new TypeMut(
+	  jniBitvecType(embedded(), n),
+	  embeddedManager());
+    }
+
+    public TypeMut funType(Type typeDom, Type typeRange) throws Cvc3Exception {
+	return new TypeMut(
+	  jniFunType1(embedded(), typeDom.embedded(), typeRange.embedded()),
+	  embeddedManager());
+    }
+
+    public TypeMut funType(List typeDom, Type typeRange) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(typeDom, Type.class));
+	return new TypeMut(
+          jniFunType2(embedded(), JniUtils.unembedList(typeDom), typeRange.embedded()),
+	  embeddedManager());
+    }
+
+    public TypeMut createType(String typeName) throws Cvc3Exception {
+	return new TypeMut(
+	  jniCreateType1(embedded(), typeName),
+	  embeddedManager());
+    }
+
+    public TypeMut createType(String typeName, Type typeDef) throws Cvc3Exception {
+	return new TypeMut(
+          jniCreateType2(embedded(), typeName, typeDef.embedded()),
+	  embeddedManager());
+    }
+
+    public TypeMut lookupType(String typeName) throws Cvc3Exception {
+	return new TypeMut(
+	  jniLookupType(embedded(), typeName),
+	  embeddedManager());
+    }
+
+
+
+    // Expressions
+
+    public ExprManagerMut getExprManager() throws Cvc3Exception {
+	return new ExprManagerMut(jniGetExprManager(embedded()), embeddedManager());
+    }
+
+    public Expr nullExpr() throws Cvc3Exception {
+	return new Expr(jniNullExpr(embedded()), embeddedManager());
+    }
+
+    public ExprMut varExpr(String name, Type type) throws Cvc3Exception {
+	return new ExprMut(
+	  jniVarExpr1(embedded(), name, type.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut varExpr(String name, Type type, Expr def) throws Cvc3Exception {
+	return new ExprMut(
+	  jniVarExpr2(embedded(), name, type.embedded(), def.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut boundVarExpr(String name, String uid, Type type) throws Cvc3Exception {
+	return new ExprMut(
+	  jniBoundVarExpr(embedded(), name, uid, type.embedded()),
+	  embeddedManager());
+    }
+    
+/*    public ExprMut boundVarExpr(Type type) throws Cvc3Exception {
+      return new ExprMut(
+        jniBoundVarExpr(embedded(), type.embedded()),
+        embeddedManager());
+      }*/
+
+    public ExprMut lookupVar(String name) throws Cvc3Exception {
+	return new ExprMut(
+	  jniLookupVar(embedded(), name),
+	  embeddedManager());
+    }
+
+    public OpMut lookupOp(String name) throws Cvc3Exception {
+	return new OpMut(
+	  jniLookupOp(embedded(), name),
+	  embeddedManager());
+    }
+
+    public TypeMut getType(Expr expr) throws Cvc3Exception {
+	return new TypeMut(
+	  jniGetType(embedded(), expr.embedded()),
+	  embeddedManager());
+    }
+
+    public TypeMut getBaseType(Expr expr) throws Cvc3Exception {
+	return new TypeMut(
+	  jniGetBaseType1(embedded(), expr.embedded()),
+	  embeddedManager());
+    }
+
+    public TypeMut getBaseType(Type type) throws Cvc3Exception {
+	return new TypeMut(
+	  jniGetBaseType2(embedded(), type.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut getTypePred(Type type, Expr expr) throws Cvc3Exception {
+	return new ExprMut(
+	  jniGetTypePred(embedded(), type.embedded(), expr.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut stringExpr(String str) throws Cvc3Exception {
+	return new ExprMut(
+	  jniStringExpr(embedded(), str),
+	  embeddedManager());
+    }
+
+    public ExprMut idExpr(String name) throws Cvc3Exception {
+	return new ExprMut(
+	  jniIdExpr(embedded(), name),
+	  embeddedManager());
+    }
+
+    public ExprMut listExpr(List kids) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(kids, Expr.class));
+	return new ExprMut(
+	  jniListExpr1(embedded(), JniUtils.unembedList(kids)),
+	  embeddedManager());
+    }
+
+    public ExprMut listExpr(Expr expr1) throws Cvc3Exception {
+	return new ExprMut(
+	  jniListExpr2(embedded(), expr1.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut listExpr(Expr expr1, Expr expr2) throws Cvc3Exception {
+	return new ExprMut(
+	  jniListExpr3(embedded(), expr1.embedded(), expr2.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut listExpr(Expr expr1, Expr expr2, Expr expr3) throws Cvc3Exception {
+	return new ExprMut(
+	  jniListExpr4(embedded(), expr1.embedded(), expr2.embedded(), expr3.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut listExpr(String op, List kids) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(kids, Expr.class));
+	return new ExprMut(
+	  jniListExpr5(embedded(), op, JniUtils.unembedList(kids)),
+	  embeddedManager());
+    }
+
+    public ExprMut listExpr(String op, Expr expr1) throws Cvc3Exception {
+	return new ExprMut(
+	  jniListExpr6(embedded(), op, expr1.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut listExpr(String op, Expr expr1, Expr expr2) throws Cvc3Exception {
+	return new ExprMut(
+	  jniListExpr7(embedded(), op, expr1.embedded(), expr2.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut listExpr(String op, Expr expr1, Expr expr2, Expr expr3) throws Cvc3Exception {
+	return new ExprMut(
+	  jniListExpr8(embedded(), op, expr1.embedded(), expr2.embedded(), expr3.embedded()),
+	  embeddedManager());
+    }
+
+    public void printExpr(Expr expr) throws Cvc3Exception {
+      jniPrintExpr(embedded(), expr.embedded());
+    }
+    
+    public ExprMut parseExpr(Expr expr) throws Cvc3Exception {
+	return new ExprMut(
+	  jniParseExpr(embedded(), expr.embedded()),
+	  embeddedManager());
+    }
+
+    public TypeMut parseType(Expr expr) throws Cvc3Exception {
+	return new TypeMut(
+	  jniParseType(embedded(), expr.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut importExpr(Expr expr) throws Cvc3Exception {
+	return new ExprMut(
+	  jniImportExpr(embedded(), expr.embedded()),
+	  embeddedManager());
+    }
+
+    public TypeMut importType(Type type) throws Cvc3Exception {
+	return new TypeMut(
+	  jniImportType(embedded(), type.embedded()),
+	  embeddedManager());
+    }
+
+    public void cmdsFromString(String s) throws Cvc3Exception {
+      jniCmdsFromString(embedded(), s);
+    }
+
+    public ExprMut exprFromString(String s) throws Cvc3Exception {
+      return new ExprMut( jniExprFromString(embedded(), s), embeddedManager() );
+    }
+    
+    
+    public ExprMut trueExpr() throws Cvc3Exception {
+	return new ExprMut(jniTrueExpr(embedded()), embeddedManager());
+    }
+
+    public ExprMut falseExpr() throws Cvc3Exception {
+	return new ExprMut(jniFalseExpr(embedded()), embeddedManager());
+    }
+
+    public ExprMut notExpr(Expr expr) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNotExpr(embedded(), expr.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut andExpr(Expr expr1, Expr expr2) throws Cvc3Exception {
+	return new ExprMut(
+	  jniAndExpr1(embedded(), expr1.embedded(), expr2.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut andExpr(List children) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(children, Expr.class));
+	return new ExprMut(
+	  jniAndExpr2(embedded(), JniUtils.unembedList(children)),
+	  embeddedManager());
+    }
+
+    public ExprMut orExpr(Expr expr1, Expr expr2) throws Cvc3Exception {
+	return new ExprMut(
+	  jniOrExpr1(embedded(), expr1.embedded(), expr2.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut orExpr(List children) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(children, Expr.class));
+	return new ExprMut(
+	  jniOrExpr2(embedded(), JniUtils.unembedList(children)),
+	  embeddedManager());
+    }
+
+    public ExprMut impliesExpr(Expr hyp, Expr conc) throws Cvc3Exception {
+	return new ExprMut(
+	  jniImpliesExpr(embedded(), hyp.embedded(), conc.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut iffExpr(Expr left, Expr right) throws Cvc3Exception {
+	return new ExprMut(
+	  jniIffExpr(embedded(), left.embedded(), right.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut eqExpr(Expr left, Expr right) throws Cvc3Exception {
+	return new ExprMut(
+	  jniEqExpr(embedded(), left.embedded(), right.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut distinctExpr(List children) throws Cvc3Exception {
+    assert(JniUtils.listInstanceof(children, Expr.class));
+    return new ExprMut(
+    	jniDistinctExpr(embedded(), JniUtils.unembedList(children)), embeddedManager());
+    }    
+    
+    public ExprMut iteExpr(Expr ifPart, Expr thenPart, Expr elsePart) throws Cvc3Exception {
+	return new ExprMut(
+	  jniIteExpr(embedded(), ifPart.embedded(), thenPart.embedded(), elsePart.embedded()),
+	  embeddedManager());
+    }
+
+    public OpMut createOp(String name, Type type) throws Cvc3Exception {
+	return new OpMut(
+	  jniCreateOp1(embedded(), name, type.embedded()),
+	  embeddedManager());
+    }
+
+    public OpMut createOp(String name, Type type, Expr expr) throws Cvc3Exception {
+	return new OpMut(
+	  jniCreateOp2(embedded(), name, type.embedded(), expr.embedded()),
+	  embeddedManager());
+    }
+
+    // '='
+    public OpMut eqOp() throws Cvc3Exception {
+	return new OpMut(jniEqOp(), embeddedManager());
+    }
+
+    // '<'
+    public OpMut ltOp() throws Cvc3Exception {
+	return new OpMut(jniLtOp(), embeddedManager());
+    }
+
+    // '<='
+    public OpMut leOp() throws Cvc3Exception {
+	return new OpMut(jniLeOp(), embeddedManager());
+    }
+
+    // '>'
+    public OpMut gtOp() throws Cvc3Exception {
+	return new OpMut(jniGtOp(), embeddedManager());
+    }
+
+    // '>='
+    public OpMut geOp() throws Cvc3Exception {
+	return new OpMut(jniGeOp(), embeddedManager());
+    }
+
+    // '+'
+    public OpMut plusOp() throws Cvc3Exception {
+	return new OpMut(jniPlusOp(), embeddedManager());
+    }
+
+    // '-'
+    public OpMut minusOp() throws Cvc3Exception {
+	return new OpMut(jniMinusOp(), embeddedManager());
+    }
+
+    // '*'
+    public OpMut multOp() throws Cvc3Exception {
+	return new OpMut(jniMultOp(), embeddedManager());
+    }
+
+    // '/' for rationals
+    public OpMut divideOp() throws Cvc3Exception {
+	return new OpMut(jniDivideOp(), embeddedManager());
+    }
+
+    public ExprMut funExpr(Op op, Expr expr1) throws Cvc3Exception {
+	return new ExprMut(
+	  jniFunExpr1(embedded(), op.embedded(), expr1.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut funExpr(Op op, Expr expr1, Expr expr2) throws Cvc3Exception {
+	return new ExprMut(
+	  jniFunExpr2(embedded(), op.embedded(), expr1.embedded(), expr2.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut funExpr(Op op, Expr expr1, Expr expr2, Expr expr3) throws Cvc3Exception {
+	return new ExprMut(
+	  jniFunExpr3(embedded(), op.embedded(), expr1.embedded(), expr2.embedded(), expr3.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut funExpr(Op op, List children) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(children, Expr.class));
+	return new ExprMut(
+	  jniFunExpr4(embedded(), op.embedded(), JniUtils.unembedList(children)),
+	  embeddedManager());
+    }
+
+    public ExprMut ratExpr(int n) throws Cvc3Exception {
+	return ratExpr(n, 1);
+    }
+
+    public ExprMut ratExpr(int n, int d) throws Cvc3Exception {
+	return new ExprMut(
+	  jniRatExpr1(embedded(), n, d),
+	  embeddedManager());
+    }
+
+    public ExprMut ratExpr(String n, String d, int base) throws Cvc3Exception {
+	return new ExprMut(
+	  jniRatExpr2(embedded(), n, d, base),
+	  embeddedManager());
+    }
+
+    public ExprMut ratExpr(String n) throws Cvc3Exception {
+	return ratExpr(n, 10);
+    }
+
+    public ExprMut ratExpr(String n, int base) throws Cvc3Exception {
+	return new ExprMut(
+	  jniRatExpr3(embedded(), n, base),
+	  embeddedManager());
+    }
+
+    public ExprMut uminusExpr(Expr expr) throws Cvc3Exception {
+	return new ExprMut(
+	  jniUminusExpr(embedded(), expr.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut plusExpr(Expr left, Expr right) throws Cvc3Exception {
+	return new ExprMut(
+	  jniPlusExpr1(embedded(), left.embedded(), right.embedded()),
+	  embeddedManager());
+    }
+    
+    public ExprMut plusExpr(List kids) throws Cvc3Exception {
+    return new ExprMut(
+      jniPlusExpr2(embedded(), JniUtils.unembedList(kids)),
+      embeddedManager());
+    }
+
+    public ExprMut minusExpr(Expr left, Expr right) throws Cvc3Exception {
+	return new ExprMut(
+	  jniMinusExpr(embedded(), left.embedded(), right.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut multExpr(Expr left, Expr right) throws Cvc3Exception {
+	return new ExprMut(
+	  jniMultExpr(embedded(), left.embedded(), right.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut powExpr(Expr x, Expr n) throws Cvc3Exception {
+	return new ExprMut(
+	  jniPowExpr(embedded(), x.embedded(), n.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut divideExpr(Expr numerator, Expr denominator) throws Cvc3Exception {
+	return new ExprMut(
+	  jniDivideExpr(embedded(), numerator.embedded(), denominator.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut ltExpr(Expr left, Expr right) throws Cvc3Exception {
+	return new ExprMut(
+	  jniLtExpr(embedded(), left.embedded(), right.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut leExpr(Expr left, Expr right) throws Cvc3Exception {
+	return new ExprMut(
+	  jniLeExpr(embedded(), left.embedded(), right.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut gtExpr(Expr left, Expr right) throws Cvc3Exception {
+	return new ExprMut(
+	  jniGtExpr(embedded(), left.embedded(), right.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut geExpr(Expr left, Expr right) throws Cvc3Exception {
+	return new ExprMut(
+	  jniGeExpr(embedded(), left.embedded(), right.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut recordExpr(String field, Expr expr) throws Cvc3Exception {
+	return new ExprMut(
+	  jniRecordExpr1(embedded(), field, expr.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut recordExpr(String field1, Expr expr1, String field2, Expr expr2) throws Cvc3Exception {
+	return new ExprMut(
+	  jniRecordExpr2(embedded(), field1, expr1.embedded(), field2, expr2.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut recordExpr(String field1, Expr expr1, String field2, Expr expr2,
+			      String field3, Expr expr3) throws Cvc3Exception {
+	return new ExprMut(
+	  jniRecordExpr3(embedded(), field1, expr1.embedded(), field2, expr2.embedded(),
+			 field3, expr3.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut recordExpr(List fields, List exprs) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(fields, String.class));
+	assert(JniUtils.listInstanceof(exprs, Expr.class));
+	return new ExprMut(
+	  jniRecordExpr4(embedded(), JniUtils.toArray(fields), JniUtils.unembedList(exprs)),
+	  embeddedManager());
+    }
+
+    public ExprMut recSelectExpr(Expr record, String field) throws Cvc3Exception {
+	return new ExprMut(
+	  jniRecSelectExpr(embedded(), record.embedded(), field),
+	  embeddedManager());
+    }
+
+    public ExprMut recUpdateExpr(Expr record, String field, Expr newValue) throws Cvc3Exception {
+	return new ExprMut(
+	  jniRecUpdateExpr(embedded(), record.embedded(), field, newValue.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut readExpr(Expr array, Expr index) throws Cvc3Exception {
+	return new ExprMut(
+	  jniReadExpr(embedded(), array.embedded(), index.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut writeExpr(Expr array, Expr index, Expr newValue) throws Cvc3Exception {
+	return new ExprMut(
+	  jniWriteExpr(embedded(), array.embedded(), index.embedded(), newValue.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVConstExpr(String s) throws Cvc3Exception {
+	return newBVConstExpr(s, 2);
+    }
+
+    public ExprMut newBVConstExpr(String s, int base) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewBVConstExpr1(embedded(), s, base),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVConstExpr(boolean[] bits) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewBVConstExpr2(embedded(), bits),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVConstExpr(Rational r, int len) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewBVConstExpr3(embedded(), r.embedded(), len),
+	  embeddedManager());
+    }
+
+    public ExprMut newConcatExpr(Expr expr1, Expr expr2) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewConcatExpr1(embedded(), expr1.embedded(), expr2.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut newConcatExpr(List kids) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(kids, Expr.class));
+	return new ExprMut(
+	  jniNewConcatExpr2(embedded(), JniUtils.unembedList(kids)),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVExtractExpr(Expr e, int hi, int low) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewBVExtractExpr(embedded(), e.embedded(), hi, low),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVNegExpr(Expr expr) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewBVNegExpr(embedded(), expr.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVAndExpr(Expr expr1, Expr expr2) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewBVAndExpr1(embedded(), expr1.embedded(), expr2.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVAndExpr(List kids) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(kids, Expr.class));
+	return new ExprMut(
+	  jniNewBVAndExpr2(embedded(), JniUtils.unembedList(kids)),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVOrExpr(Expr expr1, Expr expr2) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewBVOrExpr1(embedded(), expr1.embedded(), expr2.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVOrExpr(List kids) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(kids, Expr.class));
+	return new ExprMut(
+	  jniNewBVOrExpr2(embedded(), JniUtils.unembedList(kids)),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVXorExpr(Expr expr1, Expr expr2) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewBVXorExpr1(embedded(), expr1.embedded(), expr2.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVXorExpr(List kids) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(kids, Expr.class));
+	return new ExprMut(
+	  jniNewBVXorExpr2(embedded(), JniUtils.unembedList(kids)),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVXnorExpr(Expr expr1, Expr expr2) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewBVXnorExpr1(embedded(), expr1.embedded(), expr2.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVXnorExpr(List kids) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(kids, Expr.class));
+	return new ExprMut(
+	  jniNewBVXnorExpr2(embedded(), JniUtils.unembedList(kids)),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVNandExpr(Expr expr1, Expr expr2) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewBVNandExpr(embedded(), expr1.embedded(), expr2.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVNorExpr(Expr expr1, Expr expr2) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewBVNorExpr(embedded(), expr1.embedded(), expr2.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVLTExpr(Expr expr1, Expr expr2) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewBVLTExpr(embedded(), expr1.embedded(), expr2.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVLEExpr(Expr expr1, Expr expr2) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewBVLEExpr(embedded(), expr1.embedded(), expr2.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVSLTExpr(Expr expr1, Expr expr2) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewBVSLTExpr(embedded(), expr1.embedded(), expr2.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVSLEExpr(Expr expr1, Expr expr2) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewBVSLEExpr(embedded(), expr1.embedded(), expr2.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut newSXExpr(Expr expr, int len) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewSXExpr(embedded(), expr.embedded(), len),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVUminusExpr(Expr expr) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewBVUminusExpr(embedded(), expr.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVSubExpr(Expr expr1, Expr expr2) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewBVSubExpr(embedded(), expr1.embedded(), expr2.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVPlusExpr(int numbits, List exprs) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(exprs, Expr.class));
+	return new ExprMut(
+	  jniNewBVPlusExpr(embedded(), numbits, JniUtils.unembedList(exprs)),
+	  embeddedManager());
+    }
+
+    public ExprMut newBVMultExpr(int numbits, Expr expr1, Expr expr2) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewBVMultExpr(embedded(), numbits, expr1.embedded(), expr2.embedded()),
+	  embeddedManager());
+    }
+       
+    public ExprMut newBVUDivExpr(Expr left, Expr right) throws Cvc3Exception {
+   	return new ExprMut(
+   	  jniNewBVUDivExpr(embedded(), left.embedded(), right.embedded()),
+   	  embeddedManager());
+    }
+        
+    public ExprMut newBVURemExpr(Expr left, Expr right) throws Cvc3Exception {
+   	return new ExprMut(
+  	  jniNewBVURemExpr(embedded(), left.embedded(), right.embedded()),
+   	  embeddedManager());
+    }
+
+    public ExprMut newBVSDivExpr(Expr left, Expr right) throws Cvc3Exception {
+  	return new ExprMut(
+  	  jniNewBVSDivExpr(embedded(), left.embedded(), right.embedded()),
+   	  embeddedManager());
+    }
+
+    public ExprMut newBVSRemExpr(Expr left, Expr right) throws Cvc3Exception {
+    return new ExprMut(
+  	  jniNewBVSRemExpr(embedded(), left.embedded(), right.embedded()),
+   	  embeddedManager());
+    }    
+    
+    public ExprMut newBVSModExpr(Expr left, Expr right) throws Cvc3Exception {
+    return new ExprMut(
+      jniNewBVSModExpr(embedded(), left.embedded(), right.embedded()),
+      embeddedManager());
+    }
+
+    public ExprMut newBVSHL(Expr left, Expr right) throws Cvc3Exception {
+    return new ExprMut(
+      jniNewBVSHL(embedded(), left.embedded(), right.embedded()),
+      embeddedManager());
+    }
+
+    public ExprMut newBVLSHR(Expr left, Expr right) throws Cvc3Exception {
+    return new ExprMut(
+      jniNewBVLSHR(embedded(), left.embedded(), right.embedded()),
+      embeddedManager());
+    }
+
+    public ExprMut newBVASHR(Expr left, Expr right) throws Cvc3Exception {
+    return new ExprMut(
+      jniNewBVASHR(embedded(), left.embedded(), right.embedded()),
+      embeddedManager());
+    }
+
+    public ExprMut newFixedLeftShiftExpr(Expr expr, int r) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewFixedLeftShiftExpr(embedded(), expr.embedded(), r),
+	  embeddedManager());
+    }
+
+    public ExprMut newFixedConstWidthLeftShiftExpr(Expr expr, int r) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewFixedConstWidthLeftShiftExpr(embedded(), expr.embedded(), r),
+	  embeddedManager());
+    }
+
+    public ExprMut newFixedRightShiftExpr(Expr expr, int r) throws Cvc3Exception {
+	return new ExprMut(
+	  jniNewFixedRightShiftExpr(embedded(), expr.embedded(), r),
+	  embeddedManager());
+    }
+
+    public Rational computeBVConst(Expr expr) {
+        Rational rat = new Rational(
+            jniComputeBVConst(embedded(),expr.embedded()), 
+            embeddedManager());
+        assert( rat.isInteger() );
+        return rat;
+    }
+
+    public ExprMut tupleExpr(List exprs) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(exprs, Expr.class));
+	return new ExprMut(
+	  jniTupleExpr(embedded(), JniUtils.unembedList(exprs)),
+	  embeddedManager());
+    }
+
+    public ExprMut tupleSelectExpr(Expr tuple, int index) throws Cvc3Exception {
+	return new ExprMut(
+	  jniTupleSelectExpr(embedded(), tuple.embedded(), index),
+	  embeddedManager());
+    }
+
+    public ExprMut tupleUpdateExpr(Expr tuple, int index, Expr newValue) throws Cvc3Exception {
+	return new ExprMut(
+	  jniTupleUpdateExpr(embedded(), tuple.embedded(), index, newValue.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut datatypeConsExpr(String constructor, List exprs) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(exprs, Expr.class));
+	return new ExprMut(
+	  jniDatatypeConsExpr(embedded(), constructor, JniUtils.unembedList(exprs)),
+	  embeddedManager());
+    }
+
+    public ExprMut datatypeSelExpr(String selector, Expr arg) throws Cvc3Exception {
+	return new ExprMut(
+	  jniDatatypeSelExpr(embedded(), selector, arg.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut datatypeTestExpr(String constructor, Expr arg) throws Cvc3Exception {
+	return new ExprMut(
+	  jniDatatypeTestExpr(embedded(), constructor, arg.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut forallExpr(List vars, Expr body) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(vars, Expr.class));
+	return new ExprMut(
+	  jniForallExpr1(embedded(), JniUtils.unembedList(vars), body.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut forallExpr(List vars, Expr body, Expr trigger) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(vars, Expr.class));
+	return new ExprMut(
+	  jniForallExpr2(embedded(), JniUtils.unembedList(vars), body.embedded(),
+                         trigger.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut forallExpr(List vars, Expr body, List triggers) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(vars, Expr.class));
+	assert(JniUtils.listInstanceof(triggers, Expr.class));
+	return new ExprMut(
+	  jniForallExpr3(embedded(), JniUtils.unembedList(vars), body.embedded(),
+			JniUtils.unembedList(triggers)),
+	  embeddedManager());
+    }
+
+    public ExprMut forallExprMultiTriggers(List vars, Expr body, List multiTriggers)
+      throws Cvc3Exception {
+    assert (JniUtils.listInstanceof(vars, Expr.class));
+    assert (JniUtils.listListInstanceof(multiTriggers, Expr.class));
+    return new ExprMut(jniForallExpr4(embedded(), JniUtils.unembedList(vars),
+        body.embedded(), JniUtils.unembedListList(multiTriggers)),
+        embeddedManager());
+    }
+
+    public void setTrigger(Expr closure, Expr trigger) throws Cvc3Exception {
+      jniSetTrigger(embedded(), closure.embedded(), trigger.embedded());
+    }
+
+    public void setTriggers(Expr closure, List triggers) throws Cvc3Exception {
+      jniSetTriggers(embedded(), closure.embedded(), JniUtils.unembedList(triggers));
+    }
+
+    public void setMultiTrigger(Expr closure, List multiTrigger) throws Cvc3Exception {
+      jniSetMultiTrigger(embedded(), closure.embedded(), JniUtils.unembedList(multiTrigger));
+    }
+
+    public void setMultiTriggers(Expr closure, List triggers) throws Cvc3Exception {
+      jniSetTriggers2(embedded(), closure.embedded(), JniUtils.unembedListList(triggers));
+    }
+
+    public ExprMut existsExpr(List vars, Expr body) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(vars, Expr.class));
+	return new ExprMut(
+	  jniExistsExpr(embedded(), JniUtils.unembedList(vars), body.embedded()),
+	  embeddedManager());
+    }
+
+    public OpMut lambdaExpr(List vars, Expr body) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(vars, Expr.class));
+	return new OpMut(
+	  jniLambdaExpr(embedded(), JniUtils.unembedList(vars), body.embedded()),
+	  embeddedManager());
+    }
+
+    public OpMut transClosure(Op p) throws Cvc3Exception {
+	return new OpMut(
+	  jniTransClosure(embedded(), p.embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut simulateExpr(Expr f, Expr s, List inputs, Expr n) throws Cvc3Exception {
+	assert(JniUtils.listInstanceof(inputs, Expr.class));
+	return new ExprMut(
+	  jniSimulateExpr(embedded(), f.embedded(), s.embedded(), JniUtils.unembedList(inputs), n.embedded()),
+	  embeddedManager());
+    }
+
+
+    public void setResourceLimit(int limit) throws Cvc3Exception {
+      jniSetResourceLimit(embedded(), limit);
+    }
+    
+    // Validity checking methods
+
+    public void assertFormula(Expr expr) throws Cvc3Exception {
+	embeddedManager().cleanUp();
+	jniAssertFormula(embedded(), expr.embedded());
+	embeddedManager().cleanUp();
+    }
+
+    public void registerAtom(Expr expr) throws Cvc3Exception {
+	jniRegisterAtom(embedded(), expr.embedded());
+    }
+
+    public ExprMut getImpliedLiteral() throws Cvc3Exception {
+	return new ExprMut(
+	  jniGetImpliedLiteral(embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut simplify(Expr expr) throws Cvc3Exception {
+	return new ExprMut(
+	  jniSimplify(embedded(), expr.embedded()),
+	  embeddedManager());
+    }
+
+    public QueryResult query(Expr expr) throws Cvc3Exception {
+	embeddedManager().cleanUp();
+	QueryResult result = QueryResult.get(jniQuery(embedded(), expr.embedded()));
+
+	//:TEST:
+	embeddedManager().cleanUp();
+	return result;
+    }
+
+    public SatResult checkUnsat(Expr expr) throws Cvc3Exception {
+	embeddedManager().cleanUp();
+	SatResult result = SatResult.get(jniCheckUnsat(embedded(), expr.embedded()));
+
+	//:TEST:
+	embeddedManager().cleanUp();
+	return result;
+    }
+
+    public QueryResult checkContinue() throws Cvc3Exception {
+	embeddedManager().cleanUp();
+	QueryResult result = QueryResult.get(jniCheckContinue(embedded()));
+
+	//:TEST:
+	embeddedManager().cleanUp();
+	return result;
+    }
+
+    public QueryResult restart(Expr expr) throws Cvc3Exception {
+	embeddedManager().cleanUp();
+	QueryResult result = QueryResult.get(jniRestart(embedded(), expr.embedded()));
+
+	//:TEST:
+	embeddedManager().cleanUp();
+	return result;
+    }
+
+    public void returnFromCheck() throws Cvc3Exception {
+	jniReturnFromCheck(embedded());
+
+	//:TEST:
+	embeddedManager().cleanUp();
+    }
+
+    public List getUserAssumptions() throws Cvc3Exception {
+	Object[] assumptions = jniGetUserAssumptions(embedded());
+	return JniUtils.embedList(assumptions, ExprMut.class, embeddedManager());
+    }
+
+    public List getInternalAssumptions() throws Cvc3Exception {
+	Object[] assumptions = jniGetInternalAssumptions(embedded());
+	return JniUtils.embedList(assumptions, ExprMut.class, embeddedManager());
+    }
+
+    public List getAssumptions() throws Cvc3Exception {
+	Object[] assumptions = jniGetAssumptions(embedded());
+	return JniUtils.embedList(assumptions, ExprMut.class, embeddedManager());
+    }
+
+    public List getAssumptionsUsed() throws Cvc3Exception {
+	Object[] assumptions = jniGetAssumptionsUsed(embedded());
+	return JniUtils.embedList(assumptions, ExprMut.class, embeddedManager());
+    }
+
+    public List getCounterExample() throws Cvc3Exception {
+	return getCounterExample(true);
+    }
+
+    public List getCounterExample(boolean inOrder) throws Cvc3Exception {
+	Object[] assumptions = jniGetCounterExample(embedded(), inOrder);
+	return JniUtils.embedList(assumptions, ExprMut.class, embeddedManager());
+    }
+
+    public HashMap getConcreteModel() throws Cvc3Exception {
+	Object[] model = jniGetConcreteModel(embedded());
+	return JniUtils.embedHashMap(model, Expr.class, Expr.class, embeddedManager());
+    }
+
+    public FormulaValue value(Expr expr) throws Cvc3Exception {
+	return FormulaValue.get(jniValue(embedded(), expr.embedded()));
+    }
+
+    public Expr getValue(Expr expr) throws Cvc3Exception {
+	return new ExprMut(
+	  jniGetValue(embedded(), expr.embedded()),
+	  embeddedManager());
+    }
+
+    public boolean inconsistent() throws Cvc3Exception {
+	return jniInconsistent1(embedded());
+    }
+
+    // makes only sense if inconsistent is true
+    public List inconsistentReasons() throws Cvc3Exception {
+	Object[] assumptions = jniInconsistent2(embedded());
+	return JniUtils.embedList(assumptions, ExprMut.class, embeddedManager());
+    }
+
+    public boolean incomplete() throws Cvc3Exception {
+	return jniIncomplete1(embedded());
+    }
+
+    // makes only sense if incomplete is true
+    public List incompleteReasons() throws Cvc3Exception {
+	Object[] assumptions = jniIncomplete2(embedded());
+	return JniUtils.embedList(assumptions, String.class, embeddedManager());
+    }
+
+    public ProofMut getProof() throws Cvc3Exception {
+	return new ProofMut(
+	  jniGetProof(embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut getTCC() throws Cvc3Exception {
+	return new ExprMut(
+	  jniGetTCC(embedded()),
+	  embeddedManager());
+    }
+
+    public List getAssumptionsTCC() throws Cvc3Exception {
+	Object[] assumptions = jniGetAssumptionsTCC(embedded());
+	return JniUtils.embedList(assumptions, ExprMut.class, embeddedManager());
+    }
+
+    public ProofMut getProofTCC() throws Cvc3Exception {
+	return new ProofMut(
+	  jniGetProofTCC(embedded()),
+	  embeddedManager());
+    }
+
+    public ExprMut getClosure() throws Cvc3Exception {
+	return new ExprMut(
+	  jniGetClosure(embedded()),
+	  embeddedManager());
+    }
+
+    public ProofMut getProofClosure() throws Cvc3Exception {
+	return new ProofMut(
+	  jniGetProofClosure(embedded()),
+	  embeddedManager());
+    }
+
+
+
+
+    // Context Methods
+
+    public int stackLevel() throws Cvc3Exception {
+	return jniStackLevel(embedded());
+    }
+
+    public void push() throws Cvc3Exception {
+	jniPush(embedded());
+    }
+
+    public void pop() throws Cvc3Exception {
+	jniPop(embedded());
+	//:TEST:
+	embeddedManager().cleanUp();
+    }
+
+    public void popTo(int stackLevel) throws Cvc3Exception {
+	jniPopTo(embedded(), stackLevel);
+	//:TEST:
+	embeddedManager().cleanUp();
+    }
+
+    public int scopeLevel() throws Cvc3Exception {
+	return jniScopeLevel(embedded());
+    }
+
+    public void pushScope() throws Cvc3Exception {
+	jniPushScope(embedded());
+    }
+
+    public void popScope() throws Cvc3Exception {
+	jniPopScope(embedded());
+    }
+
+    public void popToScope(int scopeLevel) throws Cvc3Exception {
+	jniPopToScope(embedded(), scopeLevel);
+    }
+
+    public ContextMut getCurrentContext() throws Cvc3Exception {
+	return new ContextMut(
+	  jniGetCurrentContext(embedded()),
+	  embeddedManager());
+    }
+
+
+
+
+    // Reading Files
+
+    public void loadFile(String fileName) throws Cvc3Exception {
+	loadFile(fileName, InputLanguage.PRESENTATION);
+    }
+
+    public void loadFile(String fileName, InputLanguage lang) throws Cvc3Exception {
+	jniLoadFile1(embedded(), fileName, lang.toString());
+    }
+
+    // Reporting Statistics
+    
+    public void printStatistics() throws Cvc3Exception {
+	jniPrintStatistics(embedded());
+    }
+
+    public StatisticsMut getStatistics() throws Cvc3Exception {
+	return new StatisticsMut(
+	  jniGetStatistics(embedded()),
+	  embeddedManager());
+    }
+
+    public void setTimeLimit(int limit) throws Cvc3Exception {
+        jniSetTimeLimit(embedded(), limit);
+    }
+}
diff --git a/src/bindings/compat/java/src/cvc3/ValidityChecker_impl.cpp b/src/bindings/compat/java/src/cvc3/ValidityChecker_impl.cpp
new file mode 100644
index 0000000..6bab7d2
--- /dev/null
+++ b/src/bindings/compat/java/src/cvc3/ValidityChecker_impl.cpp
@@ -0,0 +1,861 @@
+INCLUDE: <sstream>
+//INCLUDE: <theory_arith.h>
+//INCLUDE: <theory_array.h>
+
+DEFINITION: Java_cvc3_ValidityChecker_jniCreate1
+jobject
+return embed_own<ValidityChecker>(env, ValidityChecker::create());
+
+DEFINITION: Java_cvc3_ValidityChecker_jniCreate2
+jobject c CLFlags flags
+return embed_own<ValidityChecker>(env, ValidityChecker::create(*flags));
+
+
+
+DEFINITION: Java_cvc3_ValidityChecker_jniCreateFlags
+jobject
+return embed_copy(env, ValidityChecker::createFlags());
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetFlags
+jobject c ValidityChecker vc
+return embed_mut_ref(env, &vc->getFlags());
+
+
+
+DEFINITION: Java_cvc3_ValidityChecker_jniBoolType
+jobject m ValidityChecker vc
+return embed_copy(env, vc->boolType());
+
+DEFINITION: Java_cvc3_ValidityChecker_jniRealType
+jobject m ValidityChecker vc
+return embed_copy(env, vc->realType());
+
+DEFINITION: Java_cvc3_ValidityChecker_jniIntType
+jobject m ValidityChecker vc
+return embed_copy(env, vc->intType());
+
+DEFINITION: Java_cvc3_ValidityChecker_jniSubrangeType
+jobject m ValidityChecker vc c Expr l c Expr r
+return embed_copy(env, vc->subrangeType(*l, *r));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniSubtypeType
+jobject m ValidityChecker vc c Expr pred c Expr witness
+return embed_copy(env, vc->subtypeType(*pred, *witness));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniTupleType1
+jobject m ValidityChecker vc c Type type0 c Type type1
+return embed_copy(env, vc->tupleType(*type0, *type1));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniTupleType2
+jobject m ValidityChecker vc c Type type0 c Type type1 c Type type2
+return embed_copy(env, vc->tupleType(*type0, *type1, *type2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniTupleType3
+jobject m ValidityChecker vc cv Type types
+return embed_copy(env, vc->tupleType(types));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniRecordType1
+jobject m ValidityChecker vc n string field c Type type
+return embed_copy(env, vc->recordType(field, *type));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniRecordType2
+jobject m ValidityChecker vc n string field0 c Type type0 n string field1 c Type type1
+return embed_copy(env, vc->recordType(field0, *type0, field1, *type1));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniRecordType3
+jobject m ValidityChecker vc n string field0 c Type type0 n string field1 c Type type1 n string field2 c Type type2
+return embed_copy(env, vc->recordType(field0, *type0, field1, *type1, field2, *type2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniRecordType4
+jobject m ValidityChecker vc nv string fields cv Type types
+return embed_copy(env, vc->recordType(fields, types));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniDataType1
+jobject m ValidityChecker vc n string name n string constructor nv string selectors cv Expr types
+return embed_copy(env, vc->dataType(name, constructor, selectors, types));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniDataType2
+jobject m ValidityChecker vc n string name nv string constructors nvv string selectors cvv Expr types
+return embed_copy(env, vc->dataType(name, constructors, selectors, types));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniDataType3
+jobjectArray m ValidityChecker vc nv string names nvv string constructors nvvv string selectors cvvv Expr types
+vector<Type> result;
+vc->dataType(names, constructors, selectors, types, result);
+return toJavaVCopy(env, result);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniAnyType
+jobject m ValidityChecker vc
+assert(false);// Unimplemented
+return NULL;
+
+DEFINITION: Java_cvc3_ValidityChecker_jniArrayLiteral
+jobject m ValidityChecker vc c Expr indexVar c Expr bodyExpr
+assert(false);// Unimplemented
+return NULL;
+
+DEFINITION: Java_cvc3_ValidityChecker_jniArrayType
+jobject m ValidityChecker vc c Type typeIndex c Type typeData
+return embed_copy(env, vc->arrayType(*typeIndex, *typeData));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniBitvecType
+jobject m ValidityChecker vc n int n
+return embed_copy(env, vc->bitvecType(n));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniFunType1
+jobject m ValidityChecker vc c Type typeDom c Type typeRange
+return embed_copy(env, vc->funType(*typeDom, *typeRange));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniFunType2
+jobject m ValidityChecker vc cv Type typeDom c Type typeRange
+return embed_copy(env, vc->funType(typeDom, *typeRange));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniCreateType1
+jobject m ValidityChecker vc n string typeName
+return embed_copy(env, vc->createType(typeName));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniCreateType2
+jobject m ValidityChecker vc n string typeName c Type typeDef
+return embed_copy(env, vc->createType(typeName, *typeDef));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniLookupType
+jobject m ValidityChecker vc n string typeName
+return embed_copy(env, vc->lookupType(typeName));
+
+
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetExprManager
+jobject m ValidityChecker vc
+return embed_mut_ref(env, vc->getEM());
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNullExpr
+jobject m ValidityChecker vc
+return embed_copy(env, Expr());
+
+DEFINITION: Java_cvc3_ValidityChecker_jniVarExpr1
+jobject m ValidityChecker vc n string name c Type type
+return embed_copy(env, vc->varExpr(name, *type));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniVarExpr2
+jobject m ValidityChecker vc n string name c Type type c Expr def
+return embed_copy(env, vc->varExpr(name, *type, *def));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniBoundVarExpr
+jobject m ValidityChecker vc n string name n string uid c Type type
+return embed_copy(env, vc->boundVarExpr(name, uid, *type));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniLookupVar
+jobject m ValidityChecker vc n string name 
+Type* type = new Type;
+jobject result = embed_copy(env, vc->lookupVar(name, type));
+delete type;
+return result;
+
+DEFINITION: Java_cvc3_ValidityChecker_jniLookupOp
+jobject m ValidityChecker vc n string name
+Type* type = new Type;
+jobject result = embed_copy(env, vc->lookupOp(name, type));
+delete type;
+return result;
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetType
+jobject m ValidityChecker vc c Expr expr
+return embed_copy(env, vc->getType(*expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetBaseType1
+jobject m ValidityChecker vc c Expr expr
+return embed_copy(env, vc->getBaseType(*expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetBaseType2
+jobject m ValidityChecker vc c Type type
+return embed_copy(env, vc->getBaseType(*type));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetTypePred
+jobject m ValidityChecker vc c Type type c Expr expr
+return embed_copy(env, vc->getTypePred(*type, *expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniStringExpr
+jobject m ValidityChecker vc n string str
+return embed_copy(env, vc->stringExpr(str));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniIdExpr
+jobject m ValidityChecker vc n string name
+return embed_copy(env, vc->idExpr(name));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniListExpr1
+jobject m ValidityChecker vc cv Expr kids
+return embed_copy(env, vc->listExpr(kids));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniListExpr2
+jobject m ValidityChecker vc c Expr expr1
+return embed_copy(env, vc->listExpr(*expr1));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniListExpr3
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->listExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniListExpr4
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2 c Expr expr3
+return embed_copy(env, vc->listExpr(*expr1, *expr2, *expr3));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniListExpr5
+jobject m ValidityChecker vc n string op cv Expr kids
+return embed_copy(env, vc->listExpr(op, kids));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniListExpr6
+jobject m ValidityChecker vc n string op c Expr expr1
+return embed_copy(env, vc->listExpr(op, *expr1));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniListExpr7
+jobject m ValidityChecker vc n string op c Expr expr1 c Expr expr2
+return embed_copy(env, vc->listExpr(op, *expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniListExpr8
+jobject m ValidityChecker vc n string op c Expr expr1 c Expr expr2 c Expr expr3
+return embed_copy(env, vc->listExpr(op, *expr1, *expr2, *expr3));
+
+
+DEFINITION: Java_cvc3_ValidityChecker_jniPrintExpr
+void m ValidityChecker vc c Expr expr
+vc->printExpr(*expr);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniParseExpr
+jobject m ValidityChecker vc c Expr expr
+return embed_copy(env, vc->parseExpr(*expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniParseType
+jobject m ValidityChecker vc c Expr expr
+return embed_copy(env, vc->parseType(*expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniImportExpr
+jobject m ValidityChecker vc c Expr expr
+return embed_copy(env, vc->importExpr(*expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniImportType
+jobject m ValidityChecker vc c Type type
+return embed_copy(env, vc->importType(*type));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniCmdsFromString
+void m ValidityChecker vc n string s
+vc->cmdsFromString(s);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniExprFromString
+jobject m ValidityChecker vc n string s
+return embed_copy<Expr>(env, vc->exprFromString(s));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniTrueExpr
+jobject m ValidityChecker vc
+return embed_copy<Expr>(env, vc->trueExpr());
+
+DEFINITION: Java_cvc3_ValidityChecker_jniFalseExpr
+jobject m ValidityChecker vc
+return embed_copy<Expr>(env, vc->falseExpr());
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNotExpr
+jobject m ValidityChecker vc c Expr expr
+return embed_copy(env, vc->notExpr(*expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniAndExpr1
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->andExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniAndExpr2
+jobject m ValidityChecker vc cv Expr children
+return embed_copy(env, vc->andExpr(children));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniOrExpr1
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->orExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniOrExpr2
+jobject m ValidityChecker vc cv Expr children
+return embed_copy(env, vc->orExpr(children));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniImpliesExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->impliesExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniIffExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->iffExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniEqExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->eqExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniDistinctExpr
+jobject m ValidityChecker vc cv Expr children
+return embed_copy(env, vc->distinctExpr(children));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniIteExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2 c Expr expr3
+return embed_copy(env, vc->iteExpr(*expr1, *expr2, *expr3));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniCreateOp1
+jobject m ValidityChecker vc n string name c Type type
+return embed_copy(env, vc->createOp(name, *type));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniCreateOp2
+jobject m ValidityChecker vc n string name c Type type c Expr expr
+return embed_copy(env, vc->createOp(name, *type, *expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniEqOp
+jobject
+return embed_copy<Op>(env, Op(EQ));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniLtOp
+jobject
+return embed_copy<Op>(env, Op(LT));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniLeOp
+jobject
+return embed_copy<Op>(env, Op(LE));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGtOp
+jobject
+return embed_copy<Op>(env, Op(GT));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGeOp
+jobject
+return embed_copy<Op>(env, Op(GE));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniPlusOp
+jobject
+return embed_copy<Op>(env, Op(PLUS));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniMinusOp
+jobject
+return embed_copy<Op>(env, Op(MINUS));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniMultOp
+jobject
+return embed_copy<Op>(env, Op(MULT));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniDivideOp
+jobject
+return embed_copy<Op>(env, Op(DIVIDE));
+
+
+DEFINITION: Java_cvc3_ValidityChecker_jniFunExpr1
+jobject m ValidityChecker vc c Op op c Expr expr1
+return embed_copy(env, vc->funExpr(*op, *expr1));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniFunExpr2
+jobject m ValidityChecker vc c Op op c Expr expr1 c Expr expr2
+return embed_copy(env, vc->funExpr(*op, *expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniFunExpr3
+jobject m ValidityChecker vc c Op op c Expr expr1 c Expr expr2 c Expr expr3
+return embed_copy(env, vc->funExpr(*op, *expr1, *expr2, *expr3));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniFunExpr4
+jobject m ValidityChecker vc c Op op cv Expr children
+return embed_copy(env, vc->funExpr(*op, children));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniRatExpr1
+jobject m ValidityChecker vc n int n n int d
+return embed_copy(env, vc->ratExpr(n, d));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniRatExpr2
+jobject m ValidityChecker vc n string n n string d n int base
+return embed_copy(env, vc->ratExpr(n, d, base));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniRatExpr3
+jobject m ValidityChecker vc n string n n int base
+return embed_copy(env, vc->ratExpr(n, base));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniUminusExpr
+jobject m ValidityChecker vc c Expr expr
+return embed_copy(env, vc->uminusExpr(*expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniPlusExpr1
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->plusExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniPlusExpr2
+jobject m ValidityChecker vc cv Expr kids
+return embed_copy(env, vc->plusExpr(kids));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniMinusExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->minusExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniMultExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->multExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniPowExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->powExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniDivideExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->divideExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniLtExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->ltExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniLeExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->leExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGtExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->gtExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGeExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->geExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniRecordExpr1
+jobject m ValidityChecker vc n string field c Expr expr
+return embed_copy(env, vc->recordExpr(field, *expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniRecordExpr2
+jobject m ValidityChecker vc n string field1 c Expr expr1 n string field2 c Expr expr2
+return embed_copy(env, vc->recordExpr(field1, *expr1, field2, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniRecordExpr3
+jobject m ValidityChecker vc n string field1 c Expr expr1 n string field2 c Expr expr2 n string field3 c Expr expr3
+return embed_copy(env, vc->recordExpr(field1, *expr1, field2, *expr2, field3, *expr3));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniRecordExpr4
+jobject m ValidityChecker vc nv string fields cv Expr exprs
+return embed_copy(env, vc->recordExpr(fields, exprs));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniRecSelectExpr
+jobject m ValidityChecker vc c Expr record n string field
+return embed_copy(env, vc->recSelectExpr(*record, field));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniRecUpdateExpr
+jobject m ValidityChecker vc c Expr record n string field c Expr update
+return embed_copy(env, vc->recUpdateExpr(*record, field, *update));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniReadExpr
+jobject m ValidityChecker vc c Expr array c Expr index
+return embed_copy(env, vc->readExpr(*array, *index));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniWriteExpr
+jobject m ValidityChecker vc c Expr array c Expr index c Expr value
+return embed_copy(env, vc->writeExpr(*array, *index, *value));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVConstExpr1
+jobject m ValidityChecker vc n string s n int base
+return embed_copy(env, vc->newBVConstExpr(s, jbase));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVConstExpr2
+jobject m ValidityChecker vc nv bool bits
+return embed_copy(env, vc->newBVConstExpr(bits));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVConstExpr3
+jobject m ValidityChecker vc c Rational rational n int len
+return embed_copy(env, vc->newBVConstExpr(*rational, len));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewConcatExpr1
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newConcatExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewConcatExpr2
+jobject m ValidityChecker vc cv Expr kids
+return embed_copy(env, vc->newConcatExpr(kids));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVExtractExpr
+jobject m ValidityChecker vc c Expr expr n int hi n int low
+return embed_copy(env, vc->newBVExtractExpr(*expr, hi, low));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVNegExpr
+jobject m ValidityChecker vc c Expr expr
+return embed_copy(env, vc->newBVNegExpr(*expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVAndExpr1
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newBVAndExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVAndExpr2
+jobject m ValidityChecker vc cv Expr kids
+return embed_copy(env, vc->newBVAndExpr(kids));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVOrExpr1
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newBVOrExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVOrExpr2
+jobject m ValidityChecker vc cv Expr kids
+return embed_copy(env, vc->newBVOrExpr(kids));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVXorExpr1
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newBVXorExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVXorExpr2
+jobject m ValidityChecker vc cv Expr kids
+return embed_copy(env, vc->newBVXorExpr(kids));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVXnorExpr1
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newBVXnorExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVXnorExpr2
+jobject m ValidityChecker vc cv Expr kids
+return embed_copy(env, vc->newBVXnorExpr(kids));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVNandExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newBVNandExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVNorExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newBVNorExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVLTExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newBVLTExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVLEExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newBVLEExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVSLTExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newBVSLTExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVSLEExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newBVSLEExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewSXExpr
+jobject m ValidityChecker vc c Expr expr n int len
+return embed_copy(env, vc->newSXExpr(*expr, len));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVUminusExpr
+jobject m ValidityChecker vc c Expr expr
+return embed_copy(env, vc->newBVUminusExpr(*expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVSubExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newBVSubExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVPlusExpr
+jobject m ValidityChecker vc n int numbits cv Expr exprs
+return embed_copy(env, vc->newBVPlusExpr(numbits, exprs));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVMultExpr
+jobject m ValidityChecker vc n int numbits c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newBVMultExpr(numbits, *expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVUDivExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newBVUDivExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVURemExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newBVURemExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVSDivExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newBVSDivExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVSRemExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newBVSRemExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVSModExpr
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newBVSModExpr(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVSHL
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newBVSHL(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVLSHR
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newBVLSHR(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewBVASHR
+jobject m ValidityChecker vc c Expr expr1 c Expr expr2
+return embed_copy(env, vc->newBVASHR(*expr1, *expr2));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewFixedLeftShiftExpr
+jobject m ValidityChecker vc c Expr expr n int r
+return embed_copy(env, vc->newFixedLeftShiftExpr(*expr, r));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewFixedConstWidthLeftShiftExpr
+jobject m ValidityChecker vc c Expr expr n int r
+return embed_copy(env, vc->newFixedConstWidthLeftShiftExpr(*expr, r));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniNewFixedRightShiftExpr
+jobject m ValidityChecker vc c Expr expr n int r
+return embed_copy(env, vc->newFixedRightShiftExpr(*expr, r));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniComputeBVConst
+jobject m ValidityChecker vc c Expr expr
+return embed_copy(env, vc->computeBVConst(*expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniTupleExpr
+jobject m ValidityChecker vc cv Expr exprs
+return embed_copy(env, vc->tupleExpr(exprs));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniTupleSelectExpr
+jobject m ValidityChecker vc c Expr tuple n int index
+return embed_copy(env, vc->tupleSelectExpr(*tuple, index));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniTupleUpdateExpr
+jobject m ValidityChecker vc c Expr tuple n int index c Expr value
+return embed_copy(env, vc->tupleUpdateExpr(*tuple, index, *value));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniDatatypeConsExpr
+jobject m ValidityChecker vc n string constructor cv Expr exprs
+return embed_copy(env, vc->datatypeConsExpr(constructor, exprs));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniDatatypeSelExpr
+jobject m ValidityChecker vc n string selector c Expr expr
+return embed_copy(env, vc->datatypeSelExpr(selector, *expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniDatatypeTestExpr
+jobject m ValidityChecker vc n string constructor c Expr expr
+return embed_copy(env, vc->datatypeTestExpr(constructor, *expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniForallExpr1
+jobject m ValidityChecker vc cv Expr vars c Expr body
+return embed_copy(env, vc->forallExpr(vars, *body));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniForallExpr2
+jobject m ValidityChecker vc cv Expr vars c Expr body c Expr trigger
+return embed_copy(env, vc->forallExpr(vars, *body, *trigger));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniForallExpr3
+jobject m ValidityChecker vc cv Expr vars c Expr body cv Expr triggers
+return embed_copy(env, vc->forallExpr(vars, *body, triggers));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniForallExpr4
+jobject m ValidityChecker vc cv Expr vars c Expr body cvv Expr triggers
+return embed_copy(env, vc->forallExpr(vars, *body, triggers));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniSetTrigger
+void m ValidityChecker vc c Expr closure c Expr trigger
+vc->setTrigger(*closure, *trigger);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniSetTriggers
+void m ValidityChecker vc c Expr closure cv Expr triggers
+vc->setTriggers(*closure, triggers);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniSetTriggers2
+void m ValidityChecker vc c Expr closure cvv Expr triggers
+vc->setTriggers(*closure, triggers);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniSetMultiTrigger
+void m ValidityChecker vc c Expr closure cv Expr multiTrigger
+vc->setMultiTrigger(*closure, multiTrigger);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniExistsExpr
+jobject m ValidityChecker vc cv Expr vars c Expr body
+return embed_copy(env, vc->existsExpr(vars, *body));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniLambdaExpr
+jobject m ValidityChecker vc cv Expr vars c Expr body
+return embed_copy(env, vc->lambdaExpr(vars, *body));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniTransClosure
+jobject m ValidityChecker vc c Op p
+return embed_copy(env, vc->transClosure(*p));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniSimulateExpr
+jobject m ValidityChecker vc c Expr f c Expr s cv Expr inputs c Expr n
+return embed_copy(env, vc->simulateExpr(*f, *s, inputs, *n));
+
+
+DEFINITION: Java_cvc3_ValidityChecker_jniSetResourceLimit
+void m ValidityChecker vc n int limit
+vc->setResourceLimit(limit);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniAssertFormula
+void m ValidityChecker vc c Expr expr
+vc->assertFormula(*expr);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniRegisterAtom
+void m ValidityChecker vc c Expr expr
+vc->registerAtom(*expr);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetImpliedLiteral
+jobject m ValidityChecker vc
+return embed_copy(env, vc->getImpliedLiteral());
+
+DEFINITION: Java_cvc3_ValidityChecker_jniSimplify
+jobject m ValidityChecker vc c Expr expr
+return embed_copy(env, vc->simplify(*expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniQuery
+jstring m ValidityChecker vc c Expr expr
+return toJava(env, vc->query(*expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniCheckUnsat
+jstring m ValidityChecker vc c Expr expr
+return toJava(env, vc->checkUnsat(*expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniCheckContinue
+jstring m ValidityChecker vc
+return toJava(env, vc->checkContinue());
+
+DEFINITION: Java_cvc3_ValidityChecker_jniRestart
+jstring m ValidityChecker vc c Expr expr
+return toJava(env, vc->restart(*expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniReturnFromCheck
+void m ValidityChecker vc
+vc->returnFromCheck();
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetUserAssumptions
+jobjectArray m ValidityChecker vc
+vector<Expr> result;
+vc->getUserAssumptions(result);
+return toJavaVCopy(env, result);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetInternalAssumptions
+jobjectArray m ValidityChecker vc
+vector<Expr> result;
+vc->getInternalAssumptions(result);
+return toJavaVCopy(env, result);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetAssumptions
+jobjectArray m ValidityChecker vc
+vector<Expr> result;
+vc->getAssumptions(result);
+return toJavaVCopy(env, result);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetAssumptionsUsed
+jobjectArray m ValidityChecker vc
+vector<Expr> result;
+vc->getAssumptionsUsed(result);
+return toJavaVCopy(env, result);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetCounterExample
+jobjectArray m ValidityChecker vc n bool inOrder
+vector<Expr> result;
+vc->getCounterExample(result, inOrder);
+return toJavaVCopy(env, result);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniValue
+jstring m ValidityChecker vc c Expr expr
+return toJava(env, vc->value(*expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetValue
+jobject m ValidityChecker vc c Expr expr
+return embed_copy(env, vc->getValue(*expr));
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetConcreteModel
+jobjectArray m ValidityChecker vc
+ExprMap<Expr> result;
+vc->getConcreteModel(result);
+return toJavaHCopy(env, result);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniInconsistent1
+jboolean m ValidityChecker vc
+return vc->inconsistent();
+
+DEFINITION: Java_cvc3_ValidityChecker_jniInconsistent2
+jobjectArray m ValidityChecker vc
+vector<Expr> result;
+bool inconsistent = vc->inconsistent(result);
+assert(inconsistent);
+return toJavaVCopy(env, result);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniIncomplete1
+jboolean m ValidityChecker vc
+return vc->incomplete();
+
+DEFINITION: Java_cvc3_ValidityChecker_jniIncomplete2
+jobjectArray m ValidityChecker vc
+vector<std::string> result;
+bool incomplete = vc->incomplete(result);
+assert(incomplete);
+return toJavaVCopy(env, result);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetProof
+jobject m ValidityChecker vc
+return embed_copy(env, vc->getProof());
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetTCC
+jobject m ValidityChecker vc
+return embed_copy(env, vc->getTCC());
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetAssumptionsTCC
+jobjectArray m ValidityChecker vc
+vector<Expr> result;
+vc->getAssumptionsTCC(result);
+return toJavaVCopy(env, result);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetProofTCC
+jobject m ValidityChecker vc
+return embed_copy(env, vc->getProofTCC());
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetClosure
+jobject m ValidityChecker vc
+return embed_copy(env, vc->getClosure());
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetProofClosure
+jobject m ValidityChecker vc
+return embed_copy(env, vc->getProofClosure());
+
+
+
+
+
+
+DEFINITION: Java_cvc3_ValidityChecker_jniStackLevel
+jint m ValidityChecker vc
+return vc->stackLevel();
+
+DEFINITION: Java_cvc3_ValidityChecker_jniPush
+void m ValidityChecker vc
+vc->push();
+
+DEFINITION: Java_cvc3_ValidityChecker_jniPop
+void m ValidityChecker vc
+vc->pop();
+
+DEFINITION: Java_cvc3_ValidityChecker_jniPopTo
+void m ValidityChecker vc n int stackLevel
+vc->popto(stackLevel);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniScopeLevel
+jint m ValidityChecker vc
+return vc->scopeLevel();
+
+DEFINITION: Java_cvc3_ValidityChecker_jniPushScope
+void m ValidityChecker vc
+vc->pushScope();
+
+DEFINITION: Java_cvc3_ValidityChecker_jniPopScope
+void m ValidityChecker vc
+vc->popScope();
+
+DEFINITION: Java_cvc3_ValidityChecker_jniPopToScope
+void m ValidityChecker vc n int stackLevel
+vc->poptoScope(stackLevel);
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetCurrentContext
+jobject m ValidityChecker vc
+return embed_mut_ref(env, vc->getCurrentContext());
+
+
+
+
+
+DEFINITION: Java_cvc3_ValidityChecker_jniLoadFile1
+void m ValidityChecker vc n string fileName n string lang
+vc->loadFile(fileName, toCppInputLanguage(env, lang), false);
+
+
+DEFINITION: Java_cvc3_ValidityChecker_jniGetStatistics
+jobject m ValidityChecker vc
+return embed_copy(env, vc->getStatistics());
+
+DEFINITION: Java_cvc3_ValidityChecker_jniPrintStatistics
+void m ValidityChecker vc
+vc->printStatistics();
+
+
+DEFINITION: Java_cvc3_ValidityChecker_jniSetTimeLimit
+void m ValidityChecker vc n int n
+vc->setTimeLimit((unsigned int)n);
diff --git a/src/bindings/java_iterator_adapter.h b/src/bindings/java_iterator_adapter.h
new file mode 100644
index 0000000..2688f95
--- /dev/null
+++ b/src/bindings/java_iterator_adapter.h
@@ -0,0 +1,59 @@
+/*********************                                                        */
+/*! \file java_iterator_adapter.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An iterator adapter for the Java bindings, giving Java iterators
+ ** the ability to access elements from STL iterators.
+ **
+ ** An iterator adapter for the Java bindings, giving Java iterators the
+ ** ability to access elements from STL iterators.  This class is mapped
+ ** into Java by SWIG, where it implements Iterator (some additional
+ ** Java-side functions are added by the SWIG layer to implement the full
+ ** interface).
+ **
+ ** The functionality requires significant assistance from the ".i" SWIG
+ ** interface files, applying a variety of typemaps.
+ **/
+
+// private to the bindings layer
+#ifndef SWIGJAVA
+#  error This should only be included from the Java bindings layer.
+#endif /* SWIGJAVA */
+
+#ifndef __CVC4__BINDINGS__JAVA_ITERATOR_ADAPTER_H
+#define __CVC4__BINDINGS__JAVA_ITERATOR_ADAPTER_H
+
+namespace CVC4 {
+
+template <class T>
+class JavaIteratorAdapter {
+  const T& d_t;
+  typename T::const_iterator d_it;
+
+public:
+  JavaIteratorAdapter(const T& t) :
+    d_t(t),
+    d_it(d_t.begin()) {
+  }
+
+  bool hasNext() {
+    return d_it != d_t.end();
+  }
+
+  typename T::const_iterator::value_type getNext() {
+    typename T::const_iterator::value_type ret = *d_it;
+    ++d_it;
+    return ret;
+  }
+};/* class JavaIteratorAdapter<T> */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__BINDINGS__JAVA_ITERATOR_ADAPTER_H */
diff --git a/src/bindings/java_stream_adapters.h b/src/bindings/java_stream_adapters.h
new file mode 100644
index 0000000..12f8713
--- /dev/null
+++ b/src/bindings/java_stream_adapters.h
@@ -0,0 +1,108 @@
+/*********************                                                        */
+/*! \file java_stream_adapters.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An OutputStream adapter for the Java bindings
+ **
+ ** An OutputStream adapter for the Java bindings.  This works with a lot
+ ** of help from SWIG, and custom typemaps in the ".i" SWIG interface files
+ ** for CVC4.  The basic idea is that, when a CVC4 function with a
+ ** std::ostream& parameter is called, a Java-side binding is generated
+ ** taking a java.io.OutputStream.  Now, the problem is that std::ostream
+ ** has no Java equivalent, and java.io.OutputStream has no C++ equivalent,
+ ** so we use this class (which exists on both sides) as the go-between.
+ ** The wrapper connecting the Java function (taking an OutputStream) and
+ ** the C++ function (taking an ostream) creates a JavaOutputStreamAdapter,
+ ** and call the C++ function with the stringstream inside.  After the call,
+ ** the generated stream material is collected and output to the Java-side
+ ** OutputStream.
+ **/
+
+// private to the bindings layer
+#ifndef SWIGJAVA
+#  error This should only be included from the Java bindings layer.
+#endif /* SWIGJAVA */
+
+#include <sstream>
+#include <set>
+#include <cassert>
+#include <iosfwd>
+#include <string>
+#include <jni.h>
+
+#ifndef __CVC4__BINDINGS__JAVA_STREAM_ADAPTERS_H
+#define __CVC4__BINDINGS__JAVA_STREAM_ADAPTERS_H
+
+namespace CVC4 {
+
+class JavaOutputStreamAdapter : public std::ostringstream {
+public:
+  std::string toString() { return str(); }
+};/* class JavaOutputStreamAdapter */
+
+class JavaInputStreamAdapter : public std::stringstream {
+  static std::set<JavaInputStreamAdapter*> s_adapters;
+  jobject inputStream;
+
+  JavaInputStreamAdapter& operator=(const JavaInputStreamAdapter&);
+  JavaInputStreamAdapter(const JavaInputStreamAdapter&);
+
+public:
+  JavaInputStreamAdapter(jobject inputStream) : inputStream(inputStream) {
+    s_adapters.insert(this);
+  }
+
+  ~JavaInputStreamAdapter() {
+    s_adapters.erase(this);
+  }
+
+  static void pullAdapters(JNIEnv* jenv) {
+    for(std::set<JavaInputStreamAdapter*>::iterator i = s_adapters.begin();
+        i != s_adapters.end();
+        ++i) {
+      (*i)->pull(jenv);
+    }
+  }
+
+  jobject getInputStream() const {
+    return inputStream;
+  }
+
+  void pull(JNIEnv* jenv) {
+    if(fail() || eof()) {
+      clear();
+    }
+    jclass clazz = jenv->FindClass("java/io/InputStream");
+    assert(clazz != NULL && jenv->ExceptionOccurred() == NULL);
+    jmethodID method = jenv->GetMethodID(clazz, "available", "()I");
+    assert(method != NULL && jenv->ExceptionOccurred() == NULL);
+    jint available = jenv->CallIntMethod(inputStream, method);
+    assert(jenv->ExceptionOccurred() == NULL);
+    jbyteArray bytes = jenv->NewByteArray(available);
+    assert(bytes != NULL && jenv->ExceptionOccurred() == NULL);
+    method = jenv->GetMethodID(clazz, "read", "([B)I");
+    assert(method != NULL && jenv->ExceptionOccurred() == NULL);
+    jint nread = jenv->CallIntMethod(inputStream, method, bytes);
+    assert(jenv->ExceptionOccurred() == NULL);
+    jbyte* bptr = jenv->GetByteArrayElements(bytes, NULL);
+    assert(jenv->ExceptionOccurred() == NULL);
+    std::copy(bptr, bptr + nread, std::ostream_iterator<char>(*this));
+    *this << std::flush;
+    jenv->ReleaseByteArrayElements(bytes, bptr, 0);
+    assert(jenv->ExceptionOccurred() == NULL);
+    assert(good());
+    assert(!eof());
+  }
+
+};/* class JavaInputStreamAdapter */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__BINDINGS__JAVA_STREAM_ADAPTERS_H */
diff --git a/src/bindings/swig.h b/src/bindings/swig.h
new file mode 100644
index 0000000..7d8f749
--- /dev/null
+++ b/src/bindings/swig.h
@@ -0,0 +1,40 @@
+/*********************                                                        */
+/*! \file swig.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Common swig checks and definitions
+ **
+ ** Common swig checks and definitions, when generating swig interfaces.
+ **/
+
+#ifndef __CVC4__BINDINGS__SWIG_H
+#define __CVC4__BINDINGS__SWIG_H
+
+#ifndef SWIG
+#  error This file should only be included when generating swig interfaces.
+#endif /* SWIG */
+
+#if !defined(SWIG_VERSION) || SWIG_VERSION < 0x020000
+#  error CVC4 bindings require swig version 2.0.0 or later, sorry.
+#endif /* SWIG_VERSION */
+
+%import "cvc4_public.h"
+#warning "Working around a SWIG segfault in C++ template parsing."
+//%import "base/tls.h"
+#define CVC4_THREADLOCAL(__type...) __type
+#define CVC4_THREADLOCAL_PUBLIC(__type...) CVC4_PUBLIC __type
+#define CVC4_THREADLOCAL_TYPE(__type...) __type
+
+// swig doesn't like the __thread storage class...
+#define __thread
+// ...or GCC attributes
+#define __attribute__(x)
+
+#endif /* __CVC4__BINDINGS__SWIG_H */
diff --git a/src/compat/Makefile.am b/src/compat/Makefile.am
new file mode 100644
index 0000000..df4603a
--- /dev/null
+++ b/src/compat/Makefile.am
@@ -0,0 +1,44 @@
+# LIBCVC4COMPAT_VERSION (-version-info) is in the form current:revision:age
+#
+# current -
+#   increment if interfaces have been added, removed or changed
+# revision -
+#   increment if source code has changed
+#   set to zero if current is incremented
+# age -
+#   increment if interfaces have been added
+#   set to zero if interfaces have been removed
+#   or changed
+#
+LIBCVC4COMPAT_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4COMPATLIB \
+	-I at builddir@/.. $(ANTLR_INCLUDES) -I at srcdir@/../include -I at srcdir@/..
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas
+
+if CVC4_BUILD_LIBCOMPAT
+
+lib_LTLIBRARIES = libcvc4compat.la
+
+libcvc4compat_la_LDFLAGS = \
+	-version-info $(LIBCVC4COMPAT_VERSION)
+
+libcvc4compat_la_LIBADD = \
+	@builddir@/../libcvc4.la \
+	@builddir@/../parser/libcvc4parser.la \
+	@builddir@/../lib/libreplacements.la
+
+libcvc4compat_la_SOURCES = \
+	cvc3_compat.h \
+	cvc3_compat.cpp
+libcvc4compat_la_CXXFLAGS = -fno-strict-aliasing
+
+else
+
+EXTRA_DIST = \
+	cvc3_kinds.h \
+	cvc3_compat.h \
+	cvc3_compat.cpp
+
+endif
diff --git a/src/compat/Makefile.in b/src/compat/Makefile.in
new file mode 100644
index 0000000..8de2c1e
--- /dev/null
+++ b/src/compat/Makefile.in
@@ -0,0 +1,861 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = src/compat
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(libdir)"
+LTLIBRARIES = $(lib_LTLIBRARIES)
+ at CVC4_BUILD_LIBCOMPAT_TRUE@libcvc4compat_la_DEPENDENCIES =  \
+ at CVC4_BUILD_LIBCOMPAT_TRUE@	@builddir@/../libcvc4.la \
+ at CVC4_BUILD_LIBCOMPAT_TRUE@	@builddir@/../parser/libcvc4parser.la \
+ at CVC4_BUILD_LIBCOMPAT_TRUE@	@builddir@/../lib/libreplacements.la
+am__libcvc4compat_la_SOURCES_DIST = cvc3_compat.h cvc3_compat.cpp
+ at CVC4_BUILD_LIBCOMPAT_TRUE@am_libcvc4compat_la_OBJECTS =  \
+ at CVC4_BUILD_LIBCOMPAT_TRUE@	libcvc4compat_la-cvc3_compat.lo
+libcvc4compat_la_OBJECTS = $(am_libcvc4compat_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+libcvc4compat_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+	$(libcvc4compat_la_CXXFLAGS) $(CXXFLAGS) \
+	$(libcvc4compat_la_LDFLAGS) $(LDFLAGS) -o $@
+ at CVC4_BUILD_LIBCOMPAT_TRUE@am_libcvc4compat_la_rpath = -rpath \
+ at CVC4_BUILD_LIBCOMPAT_TRUE@	$(libdir)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(libcvc4compat_la_SOURCES)
+DIST_SOURCES = $(am__libcvc4compat_la_SOURCES_DIST)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+
+# LIBCVC4COMPAT_VERSION (-version-info) is in the form current:revision:age
+#
+# current -
+#   increment if interfaces have been added, removed or changed
+# revision -
+#   increment if source code has changed
+#   set to zero if current is incremented
+# age -
+#   increment if interfaces have been added
+#   set to zero if interfaces have been removed
+#   or changed
+#
+LIBCVC4COMPAT_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4COMPATLIB \
+	-I at builddir@/.. $(ANTLR_INCLUDES) -I at srcdir@/../include -I at srcdir@/..
+
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas
+ at CVC4_BUILD_LIBCOMPAT_TRUE@lib_LTLIBRARIES = libcvc4compat.la
+ at CVC4_BUILD_LIBCOMPAT_TRUE@libcvc4compat_la_LDFLAGS = \
+ at CVC4_BUILD_LIBCOMPAT_TRUE@	-version-info $(LIBCVC4COMPAT_VERSION)
+
+ at CVC4_BUILD_LIBCOMPAT_TRUE@libcvc4compat_la_LIBADD = \
+ at CVC4_BUILD_LIBCOMPAT_TRUE@	@builddir@/../libcvc4.la \
+ at CVC4_BUILD_LIBCOMPAT_TRUE@	@builddir@/../parser/libcvc4parser.la \
+ at CVC4_BUILD_LIBCOMPAT_TRUE@	@builddir@/../lib/libreplacements.la
+
+ at CVC4_BUILD_LIBCOMPAT_TRUE@libcvc4compat_la_SOURCES = \
+ at CVC4_BUILD_LIBCOMPAT_TRUE@	cvc3_compat.h \
+ at CVC4_BUILD_LIBCOMPAT_TRUE@	cvc3_compat.cpp
+
+ at CVC4_BUILD_LIBCOMPAT_TRUE@libcvc4compat_la_CXXFLAGS = -fno-strict-aliasing
+ at CVC4_BUILD_LIBCOMPAT_FALSE@EXTRA_DIST = \
+ at CVC4_BUILD_LIBCOMPAT_FALSE@	cvc3_kinds.h \
+ at CVC4_BUILD_LIBCOMPAT_FALSE@	cvc3_compat.h \
+ at CVC4_BUILD_LIBCOMPAT_FALSE@	cvc3_compat.cpp
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/compat/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/compat/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+	}
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+	done
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+	@list='$(lib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+libcvc4compat.la: $(libcvc4compat_la_OBJECTS) $(libcvc4compat_la_DEPENDENCIES) $(EXTRA_libcvc4compat_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(libcvc4compat_la_LINK) $(am_libcvc4compat_la_rpath) $(libcvc4compat_la_OBJECTS) $(libcvc4compat_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libcvc4compat_la-cvc3_compat.Plo at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+libcvc4compat_la-cvc3_compat.lo: cvc3_compat.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcvc4compat_la_CXXFLAGS) $(CXXFLAGS) -MT libcvc4compat_la-cvc3_compat.lo -MD -MP -MF $(DEPDIR)/libcvc4compat_la-cvc3_compat.Tpo -c -o libcvc4compat_la-cvc3_compat.lo `test -f 'cvc3_compat.cpp' || echo '$(srcdir)/'`cvc3_compat.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcvc4compat_la-cvc3_compat.Tpo $(DEPDIR)/libcvc4compat_la-cvc3_compat.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='cvc3_compat.cpp' object='libcvc4compat_la-cvc3_compat.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcvc4compat_la_CXXFLAGS) $(CXXFLAGS) -c -o libcvc4compat_la-cvc3_compat.lo `test -f 'cvc3_compat.cpp' || echo '$(srcdir)/'`cvc3_compat.cpp
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+	for dir in "$(DESTDIR)$(libdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-libLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-libLTLIBRARIES install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/compat/cvc3_compat.cpp b/src/compat/cvc3_compat.cpp
new file mode 100644
index 0000000..4f4101d
--- /dev/null
+++ b/src/compat/cvc3_compat.cpp
@@ -0,0 +1,2661 @@
+/*********************                                                        */
+/*! \file cvc3_compat.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief CVC3 compatibility layer for CVC4
+ **
+ ** CVC3 compatibility layer for CVC4.
+ **/
+
+#include "compat/cvc3_compat.h"
+
+#include <algorithm>
+#include <cassert>
+#include <iosfwd>
+#include <iterator>
+#include <sstream>
+#include <string>
+
+#include "base/exception.h"
+#include "base/output.h"
+#include "expr/expr_iomanip.h"
+#include "expr/kind.h"
+#include "expr/predicate.h"
+#include "options/options.h"
+#include "options/set_language.h"
+#include "parser/parser.h"
+#include "parser/parser_builder.h"
+#include "smt/command.h"
+#include "util/bitvector.h"
+#include "util/hash.h"
+#include "util/integer.h"
+#include "util/rational.h"
+#include "util/sexpr.h"
+#include "util/subrange_bound.h"
+
+using namespace std;
+
+// Matches base/cvc4_assert.h's PrettyCheckArgument.
+// base/cvc4_assert.h cannot be directly included.
+#define CompatCheckArgument(cond, arg, msg...)         \
+  do { \
+    if(__builtin_expect( ( ! (cond) ), false )) { \
+      throw ::CVC4::IllegalArgumentException(#cond, #arg, __PRETTY_FUNCTION__, \
+                                             ::CVC4::IllegalArgumentException::formatVariadic(msg).c_str()); \
+    } \
+  } while(0)
+
+#define Unimplemented(str) throw Exception(str)
+
+namespace CVC3 {
+
+// Connects ExprManagers to ValidityCheckers.  Needed to clean up the
+// emmcs on ValidityChecker destruction (which are used for
+// ExprManager-to-ExprManager import).
+static std::map<CVC4::ExprManager*, ValidityChecker*> s_validityCheckers;
+
+static std::hash_map<Type, Expr, CVC4::TypeHashFunction> s_typeToExpr;
+static std::hash_map<Expr, Type, CVC4::ExprHashFunction> s_exprToType;
+
+static bool typeHasExpr(const Type& t) {
+  std::hash_map<Type, Expr, CVC4::TypeHashFunction>::const_iterator i = s_typeToExpr.find(t);
+  return i != s_typeToExpr.end();
+}
+
+static Expr typeToExpr(const Type& t) {
+  std::hash_map<Type, Expr, CVC4::TypeHashFunction>::const_iterator i = s_typeToExpr.find(t);
+  assert(i != s_typeToExpr.end());
+  return (*i).second;
+}
+
+static Type exprToType(const Expr& e) {
+  std::hash_map<Expr, Type, CVC4::ExprHashFunction>::const_iterator i = s_exprToType.find(e);
+  assert(i != s_exprToType.end());
+  return (*i).second;
+}
+
+std::string int2string(int n) {
+  std::ostringstream ss;
+  ss << n;
+  return ss.str();
+}
+
+std::ostream& operator<<(std::ostream& out, CLFlagType clft) {
+  switch (clft) {
+    case CLFLAG_NULL:
+      out << "CLFLAG_NULL";
+      break;
+    case CLFLAG_BOOL:
+      out << "CLFLAG_BOOL";
+      break;
+    case CLFLAG_INT:
+      out << "CLFLAG_INT";
+      break;
+    case CLFLAG_STRING:
+      out << "CLFLAG_STRING";
+      break;
+    case CLFLAG_STRVEC:
+      out << "CLFLAG_STRVEC";
+      break;
+    default:
+      out << "CLFlagType!UNKNOWN";
+      break;
+  }
+
+  return out;
+}
+
+std::ostream& operator<<(std::ostream& out, QueryResult qr) {
+  switch(qr) {
+  case SATISFIABLE: out << "SATISFIABLE/INVALID"; break;
+  case UNSATISFIABLE: out << "VALID/UNSATISFIABLE"; break;
+  case ABORT: out << "ABORT"; break;
+  case UNKNOWN: out << "UNKNOWN"; break;
+  default: out << "QueryResult!UNKNOWN";
+  }
+
+  return out;
+}
+
+std::string QueryResultToString(QueryResult qr) {
+  stringstream sstr;
+  sstr << qr;
+  return sstr.str();
+}
+
+std::ostream& operator<<(std::ostream& out, FormulaValue fv) {
+  switch(fv) {
+  case TRUE_VAL: out << "TRUE_VAL"; break;
+  case FALSE_VAL: out << "FALSE_VAL"; break;
+  case UNKNOWN_VAL: out << "UNKNOWN_VAL"; break;
+  default: out << "FormulaValue!UNKNOWN";
+  }
+
+  return out;
+}
+
+std::ostream& operator<<(std::ostream& out, CVC3CardinalityKind c) {
+  switch(c) {
+  case CARD_FINITE: out << "CARD_FINITE"; break;
+  case CARD_INFINITE: out << "CARD_INFINITE"; break;
+  case CARD_UNKNOWN: out << "CARD_UNKNOWN"; break;
+  default: out << "CVC3CardinalityKind!UNKNOWN";
+  }
+
+  return out;
+}
+
+static string toString(CLFlagType clft) {
+  stringstream sstr;
+  sstr << clft;
+  return sstr.str();
+}
+
+bool operator==(const Cardinality& c, CVC3CardinalityKind d) {
+  switch(d) {
+  case CARD_FINITE:
+    return c.isFinite();
+  case CARD_INFINITE:
+    return c.isInfinite();
+  case CARD_UNKNOWN:
+    return c.isUnknown();
+  }
+
+  throw Exception("internal error: CVC3 cardinality kind unhandled");
+}
+
+bool operator==(CVC3CardinalityKind d, const Cardinality& c) {
+  return c == d;
+}
+
+bool operator!=(const Cardinality& c, CVC3CardinalityKind d) {
+  return !(c == d);
+}
+
+bool operator!=(CVC3CardinalityKind d, const Cardinality& c) {
+  return !(c == d);
+}
+
+Type::Type() :
+  CVC4::Type() {
+}
+
+Type::Type(const CVC4::Type& type) :
+  CVC4::Type(type) {
+}
+
+Type::Type(const Type& type) :
+  CVC4::Type(type) {
+}
+
+Expr Type::getExpr() const {
+  if(typeHasExpr(*this)) {
+    return typeToExpr(*this);
+  }
+  Expr e = getExprManager()->mkVar("compatibility-layer-expr-type", *this);
+  s_typeToExpr[*this] = e;
+  s_exprToType[e] = *this;
+  s_validityCheckers[e.getExprManager()]->d_exprTypeMapRemove.push_back(e);
+  return e;
+}
+
+int Type::arity() const {
+  return isSort() ? CVC4::SortType(*this).getParamTypes().size() : 0;
+}
+
+Type Type::operator[](int i) const {
+  return Type(CVC4::Type(CVC4::SortType(*this).getParamTypes()[i]));
+}
+
+bool Type::isBool() const {
+  return isBoolean();
+}
+
+bool Type::isSubtype() const {
+  return false;
+}
+
+Cardinality Type::card() const {
+  return getCardinality();
+}
+
+Expr Type::enumerateFinite(Unsigned n) const {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+Unsigned Type::sizeFinite() const {
+  return getCardinality().getFiniteCardinality().getUnsignedLong();
+}
+
+Type Type::typeBool(ExprManager* em) {
+  return Type(CVC4::Type(em->booleanType()));
+}
+
+Type Type::funType(const std::vector<Type>& typeDom,
+                   const Type& typeRan) {
+  const vector<CVC4::Type>& dom =
+    *reinterpret_cast<const vector<CVC4::Type>*>(&typeDom);
+  return Type(typeRan.getExprManager()->mkFunctionType(dom, typeRan));
+}
+
+Type Type::funType(const Type& typeRan) const {
+  return Type(getExprManager()->mkFunctionType(*this, typeRan));
+}
+
+Expr::Expr() : CVC4::Expr() {
+}
+
+Expr::Expr(const Expr& e) : CVC4::Expr(e) {
+}
+
+Expr::Expr(const CVC4::Expr& e) : CVC4::Expr(e) {
+}
+
+Expr::Expr(const CVC4::Kind k) : CVC4::Expr() {
+  *this = getEM()->operatorOf(k);
+}
+
+Expr Expr::eqExpr(const Expr& right) const {
+  return getEM()->mkExpr(CVC4::kind::EQUAL, *this, right);
+}
+
+Expr Expr::notExpr() const {
+  return getEM()->mkExpr(CVC4::kind::NOT, *this);
+}
+
+Expr Expr::negate() const {
+  // avoid double-negatives
+  return (getKind() == CVC4::kind::NOT) ?
+    (*this)[0] :
+    Expr(getEM()->mkExpr(CVC4::kind::NOT, *this));
+}
+
+Expr Expr::andExpr(const Expr& right) const {
+  return getEM()->mkExpr(CVC4::kind::AND, *this, right);
+}
+
+Expr Expr::orExpr(const Expr& right) const {
+  return getEM()->mkExpr(CVC4::kind::OR, *this, right);
+}
+
+Expr Expr::iteExpr(const Expr& thenpart, const Expr& elsepart) const {
+  return getEM()->mkExpr(CVC4::kind::ITE, *this, thenpart, elsepart);
+}
+
+Expr Expr::iffExpr(const Expr& right) const {
+  return getEM()->mkExpr(CVC4::kind::EQUAL, *this, right);
+}
+
+Expr Expr::impExpr(const Expr& right) const {
+  return getEM()->mkExpr(CVC4::kind::IMPLIES, *this, right);
+}
+
+Expr Expr::xorExpr(const Expr& right) const {
+  return getEM()->mkExpr(CVC4::kind::XOR, *this, right);
+}
+
+Expr Expr::substExpr(const std::vector<Expr>& oldTerms,
+                     const std::vector<Expr>& newTerms) const {
+  const vector<CVC4::Expr>& o =
+    *reinterpret_cast<const vector<CVC4::Expr>*>(&oldTerms);
+  const vector<CVC4::Expr>& n =
+    *reinterpret_cast<const vector<CVC4::Expr>*>(&newTerms);
+
+  return Expr(substitute(o, n));
+}
+
+Expr Expr::substExpr(const ExprHashMap<Expr>& oldToNew) const {
+  const hash_map<CVC4::Expr, CVC4::Expr, CVC4::ExprHashFunction>& o2n =
+    *reinterpret_cast<const hash_map<CVC4::Expr, CVC4::Expr, CVC4::ExprHashFunction>*>(&oldToNew);
+
+  return Expr(substitute(o2n));
+}
+
+Expr Expr::operator!() const {
+  return notExpr();
+}
+
+Expr Expr::operator&&(const Expr& right) const {
+  return andExpr(right);
+}
+
+Expr Expr::operator||(const Expr& right) const {
+  return orExpr(right);
+}
+
+size_t Expr::hash(const Expr& e) {
+  return CVC4::ExprHashFunction()(e);
+}
+
+size_t Expr::hash() const {
+  return CVC4::ExprHashFunction()(*this);
+}
+
+bool Expr::isFalse() const {
+  return getKind() == CVC4::kind::CONST_BOOLEAN && getConst<bool>() == false;
+}
+
+bool Expr::isTrue() const {
+  return getKind() == CVC4::kind::CONST_BOOLEAN && getConst<bool>() == true;
+}
+
+bool Expr::isBoolConst() const {
+  return getKind() == CVC4::kind::CONST_BOOLEAN;
+}
+
+bool Expr::isVar() const {
+  return isVariable();
+}
+
+bool Expr::isString() const {
+  return getType().isString();
+}
+
+bool Expr::isBoundVar() const {
+  return getKind() == CVC4::kind::BOUND_VARIABLE;
+}
+
+bool Expr::isForall() const {
+  return getKind() == CVC4::kind::FORALL;
+}
+
+bool Expr::isExists() const {
+  return getKind() == CVC4::kind::EXISTS;
+}
+
+bool Expr::isLambda() const {
+  return getKind() == CVC4::kind::LAMBDA;
+}
+
+bool Expr::isClosure() const {
+  return isQuantifier() || isLambda();
+}
+
+bool Expr::isQuantifier() const {
+  return getKind() == CVC4::kind::FORALL || getKind() == CVC4::kind::EXISTS;
+}
+
+bool Expr::isApply() const {
+  return hasOperator();
+}
+
+bool Expr::isSymbol() const {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+bool Expr::isTheorem() const {
+  return false;
+}
+
+bool Expr::isType() const {
+  return s_exprToType.find(*this) != s_exprToType.end();
+}
+
+bool Expr::isTerm() const {
+  return !getType().isBool();
+}
+
+bool Expr::isConstant() const {
+  return isConst();
+}
+
+bool Expr::isRawList() const {
+  return false;
+}
+
+bool Expr::isAtomic() const {
+  if (getType().isBool()) {
+    return isBoolConst();
+  }
+  for (int k = 0; k < arity(); ++k) {
+    if (!(*this)[k].isAtomic()) {
+      return false;
+    }
+  }
+  return true;
+}
+
+bool Expr::isAtomicFormula() const {
+  if (!getType().isBool()) {
+    return false;
+  }
+  switch(getKind()) {
+    case CVC4::kind::FORALL:
+    case CVC4::kind::EXISTS:
+    case CVC4::kind::XOR:
+    case CVC4::kind::NOT:
+    case CVC4::kind::AND:
+    case CVC4::kind::OR:
+    case CVC4::kind::ITE:
+    case CVC4::kind::IMPLIES:
+      return false;
+   case CVC4::kind::EQUAL:
+      return (*this)[0].getType().isBool();
+      break;
+    default:
+      ; /* fall through */
+  }
+  for (Expr::iterator k = begin(), kend=end(); k != kend; ++k) {
+    if (!CVC3::Expr(*k).isAtomic()) {
+      return false;
+    }
+  }
+  return true;
+}
+
+bool Expr::isAbsAtomicFormula() const {
+  return isQuantifier() || isAtomicFormula();
+}
+
+bool Expr::isLiteral() const {
+  return isAtomicFormula() || (isNot() && (*this)[0].isAtomicFormula());
+}
+
+bool Expr::isAbsLiteral() const {
+  return isAbsAtomicFormula() || (isNot() && (*this)[0].isAbsAtomicFormula());
+}
+
+bool Expr::isBoolConnective() const {
+  if (!getType().isBool()) {
+    return false;
+  }
+  switch (getKind()) {
+  case CVC4::kind::NOT:
+  case CVC4::kind::AND:
+  case CVC4::kind::OR:
+  case CVC4::kind::IMPLIES:
+  case CVC4::kind::XOR:
+  case CVC4::kind::ITE:
+    return true;
+  case CVC4::kind::EQUAL:
+    return (*this)[0].getType().isBool();
+    break;
+  default:
+    return false;
+  }
+}
+
+bool Expr::isPropLiteral() const {
+  return (isNot() && (*this)[0].isPropAtom()) || isPropAtom();
+}
+
+bool Expr::isPropAtom() const {
+  return !isTerm() && !isBoolConnective();
+}
+
+std::string Expr::getName() const {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+std::string Expr::getUid() const {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+std::string Expr::getString() const {
+  CompatCheckArgument(getKind() == CVC4::kind::CONST_STRING, *this, "CVC3::Expr::getString(): not a string Expr: `%s'", toString().c_str());
+  return getConst<CVC4::String>().toString();
+}
+
+std::vector<Expr> Expr::getVars() const {
+  CompatCheckArgument(isClosure(), *this, "CVC3::Expr::getVars(): not a closure Expr: `%s'", toString().c_str());
+  const vector<CVC4::Expr>& kids = (*this)[0].getChildren();
+  vector<Expr> v;
+  for(vector<CVC4::Expr>::const_iterator i = kids.begin(); i != kids.end(); ++i) {
+    v.push_back(*i);
+  }
+  return v;
+}
+
+Expr Expr::getExistential() const {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+int Expr::getBoundIndex() const {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+Expr Expr::getBody() const {
+  CompatCheckArgument(isClosure(), *this, "CVC3::Expr::getBody(): not a closure Expr: `%s'", toString().c_str());
+  return (*this)[1];
+}
+
+Theorem Expr::getTheorem() const {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+bool Expr::isEq() const {
+  return getKind() == CVC4::kind::EQUAL;
+}
+
+bool Expr::isNot() const {
+  return getKind() == CVC4::kind::NOT;
+}
+
+bool Expr::isAnd() const {
+  return getKind() == CVC4::kind::AND;
+}
+
+bool Expr::isOr() const {
+  return getKind() == CVC4::kind::OR;
+}
+
+bool Expr::isITE() const {
+  return getKind() == CVC4::kind::ITE;
+}
+
+bool Expr::isIff() const {
+  return getKind() == CVC4::kind::EQUAL && (*this)[0].getType().isBool();;
+}
+
+bool Expr::isImpl() const {
+  return getKind() == CVC4::kind::IMPLIES;
+}
+
+bool Expr::isXor() const {
+  return getKind() == CVC4::kind::XOR;
+}
+
+bool Expr::isRational() const {
+  return getKind() == CVC4::kind::CONST_RATIONAL;
+}
+
+bool Expr::isSkolem() const {
+  return getKind() == CVC4::kind::SKOLEM;
+}
+
+const Rational& Expr::getRational() const {
+  CompatCheckArgument(isRational(), *this, "CVC3::Expr::getRational(): not a rational Expr: `%s'", toString().c_str());
+  return getConst<CVC4::Rational>();
+}
+
+Op Expr::mkOp() const {
+  return *this;
+}
+
+Op Expr::getOp() const {
+  return getOperator();
+}
+
+Expr Expr::getOpExpr() const {
+  return getOperator();
+}
+
+int Expr::getOpKind() const {
+  Expr op = getOperator();
+  int k = op.getKind();
+  return k == BUILTIN ? getKind() : k;
+}
+
+Expr Expr::getExpr() const {
+  return *this;
+}
+
+std::vector< std::vector<Expr> > Expr::getTriggers() const {
+  CompatCheckArgument(isClosure(), *this,
+                      "getTriggers() called on non-closure expr");
+  if(getNumChildren() < 3) {
+    // no triggers for this quantifier
+    return vector< vector<Expr> >();
+  } else {
+    // get the triggers from the third child
+    Expr triggers = (*this)[2];
+    vector< vector<Expr> > v;
+    for(const_iterator i = triggers.begin(); i != triggers.end(); ++i) {
+      v.push_back(vector<Expr>());
+      for(const_iterator j = (*i).begin(); j != (*i).end(); ++j) {
+        v.back().push_back(*j);
+      }
+    }
+    return v;
+  }
+}
+
+ExprManager* Expr::getEM() const {
+  return reinterpret_cast<ExprManager*>(getExprManager());
+}
+
+std::vector<Expr> Expr::getKids() const {
+  vector<CVC4::Expr> v = getChildren();
+  return *reinterpret_cast<vector<Expr>*>(&v);
+}
+
+ExprIndex Expr::getIndex() const {
+  return getId();
+}
+
+int Expr::arity() const {
+  return getNumChildren();
+}
+
+Expr Expr::unnegate() const {
+  return isNot() ? Expr((*this)[0]) : *this;
+}
+
+bool Expr::isInitialized() const {
+  return !isNull();
+}
+
+Type Expr::getType() const {
+  return Type(this->CVC4::Expr::getType());
+}
+
+Type Expr::lookupType() const {
+  return getType();
+}
+
+void Expr::pprint() const {
+  std::cout << *this << std::endl;
+}
+
+void Expr::pprintnodag() const {
+  CVC4::expr::ExprDag::Scope scope(std::cout, 0);
+  std::cout << *this << std::endl;
+}
+
+bool isArrayLiteral(const Expr& e) {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+std::string ExprManager::getKindName(int kind) {
+  return CVC4::kind::kindToString(CVC4::Kind(kind));
+}
+
+InputLanguage ExprManager::getInputLang() const {
+  return getOptions().getInputLanguage();
+}
+
+InputLanguage ExprManager::getOutputLang() const {
+  return CVC4::language::toInputLanguage(getOptions().getOutputLanguage());
+}
+
+Expr Expr::operator[](int i) const {
+  return Expr(this->CVC4::Expr::operator[](i));
+}
+
+CLFlag::CLFlag(bool b, const std::string& help, bool display) :
+  d_tp(CLFLAG_BOOL) {
+  d_data.b = b;
+}
+
+CLFlag::CLFlag(int i, const std::string& help, bool display) :
+  d_tp(CLFLAG_INT) {
+  d_data.i = i;
+}
+
+CLFlag::CLFlag(const std::string& s, const std::string& help, bool display) :
+  d_tp(CLFLAG_STRING) {
+  d_data.s = new string(s);
+}
+
+CLFlag::CLFlag(const char* s, const std::string& help, bool display) :
+  d_tp(CLFLAG_STRING) {
+  d_data.s = new string(s);
+}
+
+CLFlag::CLFlag(const std::vector<std::pair<string,bool> >& sv,
+               const std::string& help, bool display) :
+  d_tp(CLFLAG_STRVEC) {
+  d_data.sv = new vector<pair<string, bool> >(sv);
+}
+
+CLFlag::CLFlag() :
+  d_tp(CLFLAG_NULL) {
+}
+
+CLFlag::CLFlag(const CLFlag& f) :
+  d_tp(f.d_tp) {
+  switch(d_tp) {
+  case CLFLAG_STRING:
+    d_data.s = new string(*f.d_data.s);
+    break;
+  case CLFLAG_STRVEC:
+    d_data.sv = new vector<pair<string, bool> >(*f.d_data.sv);
+    break;
+  default:
+    d_data = f.d_data;
+  }
+}
+
+CLFlag::~CLFlag() {
+  switch(d_tp) {
+  case CLFLAG_STRING:
+    delete d_data.s;
+    break;
+  case CLFLAG_STRVEC:
+    delete d_data.sv;
+    break;
+  default:
+    ; // nothing to do
+  }
+}
+
+CLFlag& CLFlag::operator=(const CLFlag& f) {
+  if(this == &f) {
+    // self-assignment
+    return *this;
+  }
+
+  // try to preserve the existing heap objects if possible
+  if(d_tp == f.d_tp) {
+    switch(d_tp) {
+    case CLFLAG_STRING:
+      *d_data.s = *f.d_data.s;
+      break;
+    case CLFLAG_STRVEC:
+      *d_data.sv = *f.d_data.sv;
+      break;
+    default:
+      d_data = f.d_data;
+    }
+  } else {
+    switch(d_tp) {
+    case CLFLAG_STRING:
+      delete d_data.s;
+      break;
+    case CLFLAG_STRVEC:
+      delete d_data.sv;
+      break;
+    default:
+      ; // nothing to do here
+    }
+
+    switch(f.d_tp) {
+    case CLFLAG_STRING:
+      d_data.s = new string(*f.d_data.s);
+      break;
+    case CLFLAG_STRVEC:
+      d_data.sv = new vector<pair<string, bool> >(*f.d_data.sv);
+      break;
+    default:
+      d_data = f.d_data;
+    }
+  }
+  d_tp = f.d_tp;
+  return *this;
+}
+
+CLFlag& CLFlag::operator=(bool b) {
+  CompatCheckArgument(d_tp == CLFLAG_BOOL, this);
+  d_data.b = b;
+  return *this;
+}
+
+CLFlag& CLFlag::operator=(int i) {
+  CompatCheckArgument(d_tp == CLFLAG_INT, this);
+  d_data.i = i;
+  return *this;
+}
+
+CLFlag& CLFlag::operator=(const std::string& s) {
+  CompatCheckArgument(d_tp == CLFLAG_STRING, this);
+  *d_data.s = s;
+  return *this;
+}
+
+CLFlag& CLFlag::operator=(const char* s) {
+  CompatCheckArgument(d_tp == CLFLAG_STRING, this);
+  *d_data.s = s;
+  return *this;
+}
+
+CLFlag& CLFlag::operator=(const std::pair<string, bool>& p) {
+  CompatCheckArgument(d_tp == CLFLAG_STRVEC, this);
+  d_data.sv->push_back(p);
+  return *this;
+}
+
+CLFlag& CLFlag::operator=(const std::vector<std::pair<string, bool> >& sv) {
+  CompatCheckArgument(d_tp == CLFLAG_STRVEC, this);
+  *d_data.sv = sv;
+  return *this;
+}
+
+CLFlagType CLFlag::getType() const {
+  return d_tp;
+}
+
+bool CLFlag::modified() const {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+bool CLFlag::display() const {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+const bool& CLFlag::getBool() const {
+  CompatCheckArgument(d_tp == CLFLAG_BOOL, this);
+  return d_data.b;
+}
+
+const int& CLFlag::getInt() const {
+  CompatCheckArgument(d_tp == CLFLAG_INT, this);
+  return d_data.i;
+}
+
+const std::string& CLFlag::getString() const {
+  CompatCheckArgument(d_tp == CLFLAG_STRING, this);
+  return *d_data.s;
+}
+
+const std::vector<std::pair<string, bool> >& CLFlag::getStrVec() const {
+  CompatCheckArgument(d_tp == CLFLAG_STRVEC, this);
+  return *d_data.sv;
+}
+
+const std::string& CLFlag::getHelp() const {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+void CLFlags::addFlag(const std::string& name, const CLFlag& f) {
+  d_map[name] = f;
+}
+
+size_t CLFlags::countFlags(const std::string& name) const {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+size_t CLFlags::countFlags(const std::string& name,
+                           std::vector<std::string>& names) const {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+const CLFlag& CLFlags::getFlag(const std::string& name) const {
+  FlagMap::const_iterator i = d_map.find(name);
+  CompatCheckArgument(i != d_map.end(), name, "No command-line flag by that name, or not supported.");
+  return (*i).second;
+}
+
+const CLFlag& CLFlags::operator[](const std::string& name) const {
+  return getFlag(name);
+}
+
+void CLFlags::setFlag(const std::string& name, const CLFlag& f) {
+  FlagMap::iterator i = d_map.find(name);
+  CompatCheckArgument(i != d_map.end(), name, "No command-line flag by that name, or not supported.");
+  CompatCheckArgument((*i).second.getType() == f.getType(), f,
+                      "Command-line flag `%s' has type %s, but caller tried to set to a %s.",
+                      name.c_str(),
+                      toString((*i).second.getType()).c_str(),
+                      toString(f.getType()).c_str());
+  (*i).second = f;
+}
+
+void CLFlags::setFlag(const std::string& name, bool b) {
+  FlagMap::iterator i = d_map.find(name);
+  CompatCheckArgument(i != d_map.end(), name, "No command-line flag by that name, or not supported.");
+  (*i).second = b;
+}
+
+void CLFlags::setFlag(const std::string& name, int i) {
+  FlagMap::iterator it = d_map.find(name);
+  CompatCheckArgument(it != d_map.end(), name, "No command-line flag by that name, or not supported.");
+  (*it).second = i;
+}
+
+void CLFlags::setFlag(const std::string& name, const std::string& s) {
+  FlagMap::iterator i = d_map.find(name);
+  CompatCheckArgument(i != d_map.end(), name, "No command-line flag by that name, or not supported.");
+  (*i).second = s;
+}
+
+void CLFlags::setFlag(const std::string& name, const char* s) {
+  FlagMap::iterator i = d_map.find(name);
+  CompatCheckArgument(i != d_map.end(), name, "No command-line flag by that name, or not supported.");
+  (*i).second = s;
+}
+
+void CLFlags::setFlag(const std::string& name, const std::pair<string, bool>& p) {
+  FlagMap::iterator i = d_map.find(name);
+  CompatCheckArgument(i != d_map.end(), name, "No command-line flag by that name, or not supported.");
+  (*i).second = p;
+}
+
+void CLFlags::setFlag(const std::string& name,
+                      const std::vector<std::pair<string, bool> >& sv) {
+  FlagMap::iterator i = d_map.find(name);
+  CompatCheckArgument(i != d_map.end(), name, "No command-line flag by that name, or not supported.");
+  (*i).second = sv;
+}
+
+void ValidityChecker::setUpOptions(CVC4::Options& options, const CLFlags& clflags) {
+  // always incremental and model-producing in CVC3 compatibility mode
+  // also incrementally-simplifying and interactive
+  d_smt->setOption("incremental", string("true"));
+  // disable this option by default for now, because datatype models
+  // are broken [MGD 10/4/2012]
+  //d_smt->setOption("produce-models", string("true"));
+  d_smt->setOption("simplification-mode", string("incremental"));
+  d_smt->setOption("interactive-mode", string("true"));// support SmtEngine::getAssertions()
+
+  d_smt->setOption("statistics", string(clflags["stats"].getBool() ? "true" : "false"));
+  d_smt->setOption("random-seed", int2string(clflags["seed"].getInt()));
+  d_smt->setOption("parse-only", string(clflags["parse-only"].getBool() ? "true" : "false"));
+  d_smt->setOption("input-language", clflags["lang"].getString());
+  if(clflags["output-lang"].getString() == "") {
+    stringstream langss;
+    langss << CVC4::language::toOutputLanguage(options.getInputLanguage());
+    d_smt->setOption("output-language", langss.str());
+  } else {
+    d_smt->setOption("output-language", clflags["output-lang"].getString());
+  }
+}
+
+ValidityChecker::ValidityChecker() :
+  d_clflags(new CLFlags()),
+  d_options(),
+  d_em(NULL),
+  d_emmc(),
+  d_reverseEmmc(),
+  d_smt(NULL),
+  d_parserContext(NULL),
+  d_exprTypeMapRemove(),
+  d_stackLevel(0),
+  d_constructors(),
+  d_selectors() {
+  d_em = reinterpret_cast<ExprManager*>(new CVC4::ExprManager(d_options));
+  s_validityCheckers[d_em] = this;
+  d_smt = new CVC4::SmtEngine(d_em);
+  setUpOptions(d_options, *d_clflags);
+  d_parserContext = CVC4::parser::ParserBuilder(d_em, "<internal>").withInputLanguage(CVC4::language::input::LANG_CVC4).withStringInput("").build();
+}
+
+ValidityChecker::ValidityChecker(const CLFlags& clflags) :
+  d_clflags(new CLFlags(clflags)),
+  d_options(),
+  d_em(NULL),
+  d_emmc(),
+  d_reverseEmmc(),
+  d_smt(NULL),
+  d_parserContext(NULL),
+  d_exprTypeMapRemove(),
+  d_stackLevel(0),
+  d_constructors(),
+  d_selectors() {
+  d_em = reinterpret_cast<ExprManager*>(new CVC4::ExprManager(d_options));
+  s_validityCheckers[d_em] = this;
+  d_smt = new CVC4::SmtEngine(d_em);
+  setUpOptions(d_options, *d_clflags);
+  d_parserContext = CVC4::parser::ParserBuilder(d_em, "<internal>").withInputLanguage(CVC4::language::input::LANG_CVC4).withStringInput("").build();
+}
+
+ValidityChecker::~ValidityChecker() {
+  for(vector<Expr>::iterator i = d_exprTypeMapRemove.begin(); i != d_exprTypeMapRemove.end(); ++i) {
+    s_typeToExpr.erase(s_exprToType[*i]);
+    s_exprToType.erase(*i);
+  }
+  d_exprTypeMapRemove.clear();
+  delete d_parserContext;
+  delete d_smt;
+  d_emmc.clear();
+  for(set<ValidityChecker*>::iterator i = d_reverseEmmc.begin(); i != d_reverseEmmc.end(); ++i) {
+    (*i)->d_emmc.erase(d_em);
+  }
+  d_reverseEmmc.clear();
+  s_validityCheckers.erase(d_em);
+  delete d_em;
+  delete d_clflags;
+}
+
+CLFlags& ValidityChecker::getFlags() const {
+  return *d_clflags;
+}
+
+void ValidityChecker::reprocessFlags() {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+CLFlags ValidityChecker::createFlags() {
+  CLFlags flags;
+
+  // We expect the user to type cvc3 -h to get help, which will set
+  // the "help" flag to false; that's why it's initially true.
+
+  // Overall system control flags
+  flags.addFlag("timeout", CLFlag(0, "Kill cvc3 process after given number of seconds (0==no limit)"));
+  flags.addFlag("stimeout", CLFlag(0, "Set time resource limit in tenths of seconds for a query(0==no limit)"));
+  flags.addFlag("resource", CLFlag(0, "Set finite resource limit (0==no limit)"));
+  flags.addFlag("mm", CLFlag("chunks", "Memory manager (chunks, malloc)"));
+
+  // Information printing flags
+  flags.addFlag("help",CLFlag(true, "print usage information and exit"));
+  flags.addFlag("unsupported",CLFlag(true, "print usage for old/unsupported/experimental options"));
+  flags.addFlag("version",CLFlag(true, "print version information and exit"));
+  flags.addFlag("interactive", CLFlag(false, "Interactive mode"));
+  flags.addFlag("stats", CLFlag(false, "Print run-time statistics"));
+  flags.addFlag("seed", CLFlag(91648253, "Set the seed for random sequence"));
+  flags.addFlag("printResults", CLFlag(true, "Print results of interactive commands."));
+  flags.addFlag("dump-log", CLFlag("", "Dump API call log in CVC3 input "
+                                   "format to given file "
+                                   "(off when file name is \"\")"));
+  flags.addFlag("parse-only", CLFlag(false,"Parse the input, then exit."));
+
+  //Translation related flags
+  flags.addFlag("expResult", CLFlag("", "For smtlib translation.  Give the expected result", false));
+  flags.addFlag("category", CLFlag("unknown", "For smtlib translation.  Give the category", false));
+  flags.addFlag("translate", CLFlag(false, "Produce a complete translation from "
+                                    "the input language to output language.  "));
+  flags.addFlag("real2int", CLFlag(false, "When translating, convert reals to integers.", false));
+  flags.addFlag("convertArith", CLFlag(false, "When translating, try to rewrite arith terms into smt-lib subset", false));
+  flags.addFlag("convert2diff", CLFlag("", "When translating, try to force into difference logic.  Legal values are int and real.", false));
+  flags.addFlag("iteLiftArith", CLFlag(false, "For translation.  If true, ite's are lifted out of arith exprs.", false));
+  flags.addFlag("convertArray", CLFlag(false, "For translation.  If true, arrays are converted to uninterpreted functions if possible.", false));
+  flags.addFlag("combineAssump", CLFlag(false, "For translation.  If true, assumptions are combined into the query.", false));
+  flags.addFlag("convert2array", CLFlag(false, "For translation. If true, try to convert to array-only theory", false));
+  flags.addFlag("convertToBV",CLFlag(0, "For translation.  Set to nonzero to convert ints to bv's of that length", false));
+  flags.addFlag("convert-eq-iff",CLFlag(false, "Convert equality on Boolean expressions to iff.", false));
+  flags.addFlag("preSimplify",CLFlag(false, "Simplify each assertion or query before translating it", false));
+  flags.addFlag("dump-tcc", CLFlag(false, "Compute and dump TCC only"));
+  flags.addFlag("trans-skip-pp", CLFlag(false, "Skip preprocess step in translation module", false));
+  flags.addFlag("trans-skip-difficulty", CLFlag(false, "Leave out difficulty attribute during translation to SMT v2.0", false));
+  flags.addFlag("promote", CLFlag(true, "Promote undefined logic combinations to defined logic combinations during translation to SMT", false));
+
+  // Parser related flags
+  flags.addFlag("old-func-syntax",CLFlag(false, "Enable parsing of old-style function syntax", false));
+
+  // Pretty-printing related flags
+  flags.addFlag("dagify-exprs",
+                CLFlag(true, "Print expressions with sharing as DAGs"));
+  flags.addFlag("lang", CLFlag("presentation", "Input language "
+                               "(presentation, smt, smt2, internal)"));
+  flags.addFlag("output-lang", CLFlag("", "Output language "
+                                      "(presentation, smtlib, simplify, internal, lisp, tptp, spass)"));
+  flags.addFlag("indent", CLFlag(false, "Print expressions with indentation"));
+  flags.addFlag("width", CLFlag(80, "Suggested line width for printing"));
+  flags.addFlag("print-depth", CLFlag(-1, "Max. depth to print expressions "));
+  flags.addFlag("print-assump", CLFlag(false, "Print assumptions in Theorems "));
+
+  // Search Engine (SAT) related flags
+  flags.addFlag("sat",CLFlag("minisat", "choose a SAT solver to use "
+                             "(sat, minisat)"));
+  flags.addFlag("de",CLFlag("dfs", "choose a decision engine to use "
+                            "(dfs, sat)"));
+
+  // Proofs and Assumptions
+  flags.addFlag("proofs", CLFlag(false, "Produce proofs"));
+  flags.addFlag("check-proofs", CLFlag(false, "Check proofs on-the-fly"));
+  flags.addFlag("minimizeClauses", CLFlag(false, "Use brute-force minimization of clauses", false));
+  flags.addFlag("dynack", CLFlag(false, "Use dynamic Ackermannization", false));
+  flags.addFlag("smart-clauses", CLFlag(true, "Learn multiple clauses per conflict"));
+  // Core framework switches
+  flags.addFlag("tcc", CLFlag(false, "Check TCCs for each ASSERT and QUERY"));
+  flags.addFlag("cnf", CLFlag(true, "Convert top-level Boolean formulas to CNF", false));
+  flags.addFlag("ignore-cnf-vars", CLFlag(false, "Do not split on aux. CNF vars (with +cnf)", false));
+  flags.addFlag("orig-formula", CLFlag(false, "Preserve the original formula with +cnf (for splitter heuristics)", false));
+  flags.addFlag("liftITE", CLFlag(false, "Eagerly lift all ITE exprs"));
+  flags.addFlag("iflift", CLFlag(false, "Translate if-then-else terms to CNF (with +cnf)", false));
+  flags.addFlag("circuit", CLFlag(false, "With +cnf, use circuit propagation", false));
+  flags.addFlag("un-ite-ify", CLFlag(false, "Unconvert ITE expressions", false));
+  flags.addFlag("ite-cond-simp",
+                CLFlag(false, "Replace ITE condition by TRUE/FALSE in subexprs", false));
+  flags.addFlag("preprocess", CLFlag(true, "Preprocess queries"));
+  flags.addFlag("pp-pushneg", CLFlag(false, "Push negation in preprocessor"));
+  flags.addFlag("pp-bryant", CLFlag(false, "Enable Bryant algorithm for UF", false));
+  flags.addFlag("pp-budget", CLFlag(0, "Budget for new preprocessing step", false));
+  flags.addFlag("pp-care", CLFlag(true, "Enable care-set preprocessing step", false));
+  flags.addFlag("simp-and", CLFlag(false, "Rewrite x&y to x&y[x/true]", false));
+  flags.addFlag("simp-or", CLFlag(false, "Rewrite x|y to x|y[x/false]", false));
+  flags.addFlag("pp-batch", CLFlag(false, "Ignore assumptions until query, then process all at once"));
+
+  // Negate the query when translate into tptp
+  flags.addFlag("negate-query", CLFlag(true, "Negate the query when translate into TPTP format"));;
+
+  // Concrete model generation (counterexamples) flags
+  flags.addFlag("counterexample", CLFlag(false, "Dump counterexample if formula is invalid or satisfiable"));
+  flags.addFlag("model", CLFlag(false, "Dump model if formula is invalid or satisfiable"));
+  flags.addFlag("unknown-check-model", CLFlag(false, "Try to generate model if formula is unknown"));
+  flags.addFlag("applications", CLFlag(true, "Add relevant function applications and array accesses to the concrete countermodel"));
+  // Debugging flags (only for the debug build)
+  // #ifdef _CVC3_DEBUG_MODE
+  vector<pair<string,bool> > sv;
+  flags.addFlag("trace", CLFlag(sv, "Tracing.  Multiple flags add up."));
+  flags.addFlag("dump-trace", CLFlag("", "Dump debugging trace to "
+                                   "given file (off when file name is \"\")"));
+  // #endif
+  // DP-specific flags
+
+  // Arithmetic
+  flags.addFlag("arith-new",CLFlag(false, "Use new arithmetic dp", false));
+  flags.addFlag("arith3",CLFlag(false, "Use old arithmetic dp that works well with combined theories", false));
+  flags.addFlag("var-order",
+                CLFlag(false, "Use simple variable order in arith", false));
+  flags.addFlag("ineq-delay", CLFlag(0, "Accumulate this many inequalities before processing (-1 for don't process until necessary)"));
+
+  flags.addFlag("nonlinear-sign-split", CLFlag(true, "Whether to split on the signs of nontrivial nonlinear terms"));
+
+  flags.addFlag("grayshadow-threshold", CLFlag(-1, "Ignore gray shadows bigger than this (makes solver incomplete)"));
+  flags.addFlag("pathlength-threshold", CLFlag(-1, "Ignore gray shadows bigger than this (makes solver incomplete)"));
+
+  // Arrays
+  flags.addFlag("liftReadIte", CLFlag(true, "Lift read of ite"));
+
+  //for LFSC stuff, disable Tseitin CNF conversion, by Yeting
+  flags.addFlag("cnf-formula", CLFlag(false, "The input must be in CNF. This option automatically enables '-de sat' and disable preprocess"));
+
+  //for LFSC print out, by Yeting
+  //flags.addFlag("lfsc", CLFlag(false, "the input is already in CNF. This option automatically enables -de sat and disable -preprocess"));
+
+  // for LFSC print, allows different modes by Liana
+  flags.addFlag("lfsc-mode",
+                  CLFlag(0, "lfsc mode 0: off, 1:normal, 2:cvc3-mimic etc."));
+
+
+  // Quantifiers
+  flags.addFlag("max-quant-inst", CLFlag(200, "The maximum number of"
+                                " naive instantiations"));
+
+  flags.addFlag("quant-new",
+                 CLFlag(true, "If this option is false, only naive instantiation is called"));
+
+  flags.addFlag("quant-lazy", CLFlag(false, "Instantiate lazily", false));
+
+  flags.addFlag("quant-sem-match",
+                CLFlag(false, "Attempt to match semantically when instantiating", false));
+
+//   flags.addFlag("quant-const-match",
+//                 CLFlag(true, "When matching semantically, only match with constants", false));
+
+  flags.addFlag("quant-complete-inst",
+                CLFlag(false, "Try complete instantiation heuristic.  +pp-batch will be automatically enabled"));
+
+  flags.addFlag("quant-max-IL",
+                CLFlag(100, "The maximum Instantiation Level allowed"));
+
+  flags.addFlag("quant-inst-lcache",
+                CLFlag(true, "Cache instantiations"));
+
+  flags.addFlag("quant-inst-gcache",
+                CLFlag(false, "Cache instantiations", false));
+
+  flags.addFlag("quant-inst-tcache",
+                CLFlag(false, "Cache instantiations", false));
+
+
+  flags.addFlag("quant-inst-true",
+                CLFlag(true, "Ignore true instantiations"));
+
+  flags.addFlag("quant-pullvar",
+                CLFlag(false, "Pull out vars", false));
+
+  flags.addFlag("quant-score",
+                CLFlag(true, "Use instantiation level"));
+
+  flags.addFlag("quant-polarity",
+                CLFlag(false, "Use polarity ", false));
+
+  flags.addFlag("quant-eqnew",
+                CLFlag(true, "Use new equality matching"));
+
+  flags.addFlag("quant-max-score",
+                CLFlag(0, "Maximum initial dynamic score"));
+
+  flags.addFlag("quant-trans3",
+                CLFlag(true, "Use trans heuristic"));
+
+  flags.addFlag("quant-trans2",
+                CLFlag(true, "Use trans2 heuristic"));
+
+  flags.addFlag("quant-naive-num",
+                CLFlag(1000, "Maximum number to call naive instantiation"));
+
+  flags.addFlag("quant-naive-inst",
+                CLFlag(true, "Use naive instantiation"));
+
+  flags.addFlag("quant-man-trig",
+                CLFlag(true, "Use manual triggers"));
+
+  flags.addFlag("quant-gfact",
+                CLFlag(false, "Send facts to core directly", false));
+
+  flags.addFlag("quant-glimit",
+                CLFlag(1000, "Limit for gfacts", false));
+
+  flags.addFlag("print-var-type", //by yeting, as requested by Sascha Boehme for proofs
+                CLFlag(false, "Print types for bound variables"));
+
+  // Bitvectors
+  flags.addFlag("bv32-flag",
+                CLFlag(false, "assume that all bitvectors are 32bits with no overflow", false));
+
+  // Uninterpreted Functions
+  flags.addFlag("trans-closure",
+                CLFlag(false,"enables transitive closure of binary relations", false));
+
+  // Datatypes
+  flags.addFlag("dt-smartsplits",
+                CLFlag(true, "enables smart splitting in datatype theory", false));
+  flags.addFlag("dt-lazy",
+                CLFlag(false, "lazy splitting on datatypes", false));
+
+  return flags;
+}
+
+ValidityChecker* ValidityChecker::create(const CLFlags& flags) {
+  return new ValidityChecker(flags);
+}
+
+ValidityChecker* ValidityChecker::create() {
+  return new ValidityChecker(createFlags());
+}
+
+Type ValidityChecker::boolType() {
+  return d_em->booleanType();
+}
+
+Type ValidityChecker::realType() {
+  return d_em->realType();
+}
+
+Type ValidityChecker::intType() {
+  return d_em->integerType();
+}
+
+Type ValidityChecker::subrangeType(const Expr& l, const Expr& r) {
+  bool noLowerBound = l.getType().isString() && l.getConst<CVC4::String>() == "_NEGINF";
+  bool noUpperBound = r.getType().isString() && r.getConst<CVC4::String>() == "_POSINF";
+  CompatCheckArgument(noLowerBound || (l.getKind() == CVC4::kind::CONST_RATIONAL && l.getConst<Rational>().isIntegral()), l);
+  CompatCheckArgument(noUpperBound || (r.getKind() == CVC4::kind::CONST_RATIONAL && r.getConst<Rational>().isIntegral()), r);
+  CVC4::SubrangeBound bl = noLowerBound ? CVC4::SubrangeBound() : CVC4::SubrangeBound(l.getConst<Rational>().getNumerator());
+  CVC4::SubrangeBound br = noUpperBound ? CVC4::SubrangeBound() : CVC4::SubrangeBound(r.getConst<Rational>().getNumerator());
+  return d_em->mkSubrangeType(CVC4::SubrangeBounds(bl, br));
+}
+
+Type ValidityChecker::subtypeType(const Expr& pred, const Expr& witness) {
+  Unimplemented("Predicate subtyping not supported by CVC4 yet (sorry!)");
+  /*
+  if(witness.isNull()) {
+    return d_em->mkPredicateSubtype(pred);
+  } else {
+    return d_em->mkPredicateSubtype(pred, witness);
+  }
+  */
+}
+
+Type ValidityChecker::tupleType(const Type& type0, const Type& type1) {
+  vector<CVC4::Type> types;
+  types.push_back(type0);
+  types.push_back(type1);
+  return d_em->mkTupleType(types);
+}
+
+Type ValidityChecker::tupleType(const Type& type0, const Type& type1, const Type& type2) {
+  vector<CVC4::Type> types;
+  types.push_back(type0);
+  types.push_back(type1);
+  types.push_back(type2);
+  return d_em->mkTupleType(types);
+}
+
+Type ValidityChecker::tupleType(const std::vector<Type>& types) {
+  const vector<CVC4::Type>& v =
+    *reinterpret_cast<const vector<CVC4::Type>*>(&types);
+  return Type(d_em->mkTupleType(v));
+}
+
+Type ValidityChecker::recordType(const std::string& field, const Type& type) {
+  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) {
+  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) {
+  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) {
+  CompatCheckArgument(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,
+                               const std::string& constructor,
+                               const std::vector<std::string>& selectors,
+                               const std::vector<Expr>& types) {
+  CompatCheckArgument(selectors.size() == types.size(), types,
+                      "expected selectors and types vectors to be of equal"
+                      "length");
+  vector<string> cv;
+  vector< vector<string> > sv;
+  vector< vector<Expr> > tv;
+  cv.push_back(constructor);
+  sv.push_back(selectors);
+  tv.push_back(types);
+  return dataType(name, cv, sv, tv);
+}
+
+Type ValidityChecker::dataType(const std::string& name,
+                               const std::vector<std::string>& constructors,
+                               const std::vector<std::vector<std::string> >& selectors,
+                               const std::vector<std::vector<Expr> >& types) {
+  CompatCheckArgument(constructors.size() == selectors.size(), selectors,
+                      "Expected constructors and selectors vectors to be of "
+                      "equal length.");
+  CompatCheckArgument(constructors.size() == types.size(), types,
+                      "Expected constructors and types vectors to be of equal "
+                      "length.");
+  vector<string> nv;
+  vector< vector<string> > cv;
+  vector< vector< vector<string> > > sv;
+  vector< vector< vector<Expr> > > tv;
+  nv.push_back(name);
+  cv.push_back(constructors);
+  sv.push_back(selectors);
+  tv.push_back(types);
+  vector<Type> dtts;
+  dataType(nv, cv, sv, tv, dtts);
+  assert(dtts.size() == 1);
+  return dtts[0];
+}
+
+void ValidityChecker::dataType(const std::vector<std::string>& names,
+                               const std::vector<std::vector<std::string> >& constructors,
+                               const std::vector<std::vector<std::vector<std::string> > >& selectors,
+                               const std::vector<std::vector<std::vector<Expr> > >& types,
+                               std::vector<Type>& returnTypes) {
+
+  CompatCheckArgument(names.size() == constructors.size(), constructors,
+                      "Expected names and constructors vectors to be of equal "
+                      "length.");
+  CompatCheckArgument(names.size() == selectors.size(), selectors,
+                      "Expected names and selectors vectors to be of equal "
+                      "length.");
+  CompatCheckArgument(names.size() == types.size(), types,
+                      "Expected names and types vectors to be of equal "
+                      "length.");
+  vector<CVC4::Datatype> dv;
+
+  // Set up the datatype specifications.
+  for(unsigned i = 0; i < names.size(); ++i) {
+    CVC4::Datatype dt(names[i], false);
+    CompatCheckArgument(constructors[i].size() == selectors[i].size(),
+                        "Expected sub-vectors in constructors and selectors "
+                        "vectors to match in size.");
+    CompatCheckArgument(constructors[i].size() == types[i].size(),
+                        "Expected sub-vectors in constructors and types "
+                        "vectors to match in size.");
+    for(unsigned j = 0; j < constructors[i].size(); ++j) {
+      CVC4::DatatypeConstructor ctor(constructors[i][j]);
+      CompatCheckArgument(selectors[i][j].size() == types[i][j].size(), types,
+                          "Expected sub-vectors in selectors and types vectors "
+                          "to match in size.");
+      for(unsigned k = 0; k < selectors[i][j].size(); ++k) {
+        if(types[i][j][k].getType().isString()) {
+          CVC4::DatatypeUnresolvedType unresolvedName = 
+            types[i][j][k].getConst<CVC4::String>().toString();
+          ctor.addArg(selectors[i][j][k], unresolvedName);
+        } else {
+          ctor.addArg(selectors[i][j][k], exprToType(types[i][j][k]));
+        }
+      }
+      dt.addConstructor(ctor);
+    }
+    dv.push_back(dt);
+  }
+
+  // Make the datatypes.
+  vector<CVC4::DatatypeType> dtts = d_em->mkMutualDatatypeTypes(dv);
+
+  // Post-process to register the names of everything with this validity checker.
+  // This is necessary for the compatibility layer because cons/sel operations are
+  // constructed without appealing explicitly to the Datatype they belong to.
+  for(vector<CVC4::DatatypeType>::iterator i = dtts.begin(); i != dtts.end(); ++i) {
+    // For each datatype...
+    const CVC4::Datatype& dt = (*i).getDatatype();
+    // ensure it's well-founded (the check is done here because
+    // that's how it is in CVC3)
+    CompatCheckArgument(dt.isWellFounded(), "datatype is not well-founded");
+    for(CVC4::Datatype::const_iterator j = dt.begin(); j != dt.end(); ++j) {
+      // For each constructor, register its name and its selectors names.
+      CompatCheckArgument(
+          d_constructors.find((*j).getName()) == d_constructors.end(),
+          constructors,
+          "Cannot have two constructors with the same name in a "
+          "ValidityChecker.");
+      d_constructors[(*j).getName()] = &dt;
+      for(CVC4::DatatypeConstructor::const_iterator k = (*j).begin(); k != (*j).end(); ++k) {
+        CompatCheckArgument(
+            d_selectors.find((*k).getName()) == d_selectors.end(), selectors,
+            "Cannot have two selectors with the same name in a "
+            "ValidityChecker.");
+        d_selectors[(*k).getName()] = make_pair(&dt, (*j).getName());
+      }
+    }
+  }
+
+  // Copy into the output buffer.
+  returnTypes.clear();
+  copy(dtts.begin(), dtts.end(), back_inserter(returnTypes));
+}
+
+Type ValidityChecker::arrayType(const Type& typeIndex, const Type& typeData) {
+  return d_em->mkArrayType(typeIndex, typeData);
+}
+
+Type ValidityChecker::bitvecType(int n) {
+  CompatCheckArgument(n >= 0, n,
+                      "Cannot construct a bitvector type of negative size.");
+  return d_em->mkBitVectorType(n);
+}
+
+Type ValidityChecker::funType(const Type& typeDom, const Type& typeRan) {
+  return d_em->mkFunctionType(typeDom, typeRan);
+}
+
+Type ValidityChecker::funType(const std::vector<Type>& typeDom, const Type& typeRan) {
+  const vector<CVC4::Type>& dom =
+    *reinterpret_cast<const vector<CVC4::Type>*>(&typeDom);
+  return Type(d_em->mkFunctionType(dom, typeRan));
+}
+
+Type ValidityChecker::createType(const std::string& typeName) {
+  return d_em->mkSort(typeName);
+}
+
+Type ValidityChecker::createType(const std::string& typeName, const Type& def) {
+  d_parserContext->defineType(typeName, def);
+  return def;
+}
+
+Type ValidityChecker::lookupType(const std::string& typeName) {
+  return d_parserContext->getSort(typeName);
+}
+
+ExprManager* ValidityChecker::getEM() {
+  return d_em;
+}
+
+Expr ValidityChecker::varExpr(const std::string& name, const Type& type) {
+  return d_parserContext->mkVar(name, type);
+}
+
+Expr ValidityChecker::varExpr(const std::string& name, const Type& type,
+                              const Expr& def) {
+  CompatCheckArgument(def.getType() == type, def, "expected types to match");
+  d_parserContext->defineVar(name, def);
+  return def;
+}
+
+Expr ValidityChecker::lookupVar(const std::string& name, Type* type) {
+  return d_parserContext->getVariable(name);
+}
+
+Type ValidityChecker::getType(const Expr& e) {
+  return d_em->getType(e);
+}
+
+Type ValidityChecker::getBaseType(const Expr& e) {
+  return getBaseType(e.getType());
+}
+
+Type ValidityChecker::getBaseType(const Type& t) {
+  return t.getBaseType();
+}
+
+Expr ValidityChecker::getTypePred(const Type&t, const Expr& e) {
+  // This function appears to be TCC-related---it doesn't just get the pred of a
+  // subtype predicate, but returns a predicate describing the type.
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+Expr ValidityChecker::stringExpr(const std::string& str) {
+  return d_em->mkConst(CVC4::String(str));
+}
+
+Expr ValidityChecker::idExpr(const std::string& name) {
+  // represent as a string expr, CVC4 doesn't have id exprs
+  return d_em->mkConst(CVC4::String(name));
+}
+
+Expr ValidityChecker::listExpr(const std::vector<Expr>& kids) {
+  return d_em->mkExpr(CVC4::kind::SEXPR, vector<CVC4::Expr>(kids.begin(), kids.end()));
+}
+
+Expr ValidityChecker::listExpr(const Expr& e1) {
+  return d_em->mkExpr(CVC4::kind::SEXPR, e1);
+}
+
+Expr ValidityChecker::listExpr(const Expr& e1, const Expr& e2) {
+  return d_em->mkExpr(CVC4::kind::SEXPR, e1, e2);
+}
+
+Expr ValidityChecker::listExpr(const Expr& e1, const Expr& e2, const Expr& e3) {
+  return d_em->mkExpr(CVC4::kind::SEXPR, e1, e2, e3);
+}
+
+Expr ValidityChecker::listExpr(const std::string& op,
+                               const std::vector<Expr>& kids) {
+  return d_em->mkExpr(CVC4::kind::SEXPR, d_em->mkConst(CVC4::String(op)), vector<CVC4::Expr>(kids.begin(), kids.end()));
+}
+
+Expr ValidityChecker::listExpr(const std::string& op, const Expr& e1) {
+  return d_em->mkExpr(CVC4::kind::SEXPR, d_em->mkConst(CVC4::String(op)), e1);
+}
+
+Expr ValidityChecker::listExpr(const std::string& op, const Expr& e1,
+                               const Expr& e2) {
+  return d_em->mkExpr(CVC4::kind::SEXPR, d_em->mkConst(CVC4::String(op)), e1, e2);
+}
+
+Expr ValidityChecker::listExpr(const std::string& op, const Expr& e1,
+                               const Expr& e2, const Expr& e3) {
+  return d_em->mkExpr(CVC4::kind::SEXPR, d_em->mkConst(CVC4::String(op)), e1, e2, e3);
+}
+
+void ValidityChecker::printExpr(const Expr& e) {
+  printExpr(e, Message());
+}
+
+void ValidityChecker::printExpr(const Expr& e, std::ostream& os) {
+  CVC4::expr::ExprSetDepth::Scope sd(os, -1);
+  CVC4::expr::ExprPrintTypes::Scope pt(os, false);
+  CVC4::language::SetLanguage::Scope sl(
+      os, d_em->getOptions().getOutputLanguage());
+  os << e;
+}
+
+Expr ValidityChecker::parseExpr(const Expr& e) {
+  return e;
+}
+
+Type ValidityChecker::parseType(const Expr& e) {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+Expr ValidityChecker::importExpr(const Expr& e) {
+  if(e.getExprManager() == d_em) {
+    return e;
+  }
+
+  s_validityCheckers[e.getExprManager()]->d_reverseEmmc.insert(this);
+  return e.exportTo(d_em, d_emmc[e.getExprManager()]);
+}
+
+Type ValidityChecker::importType(const Type& t) {
+  if(t.getExprManager() == d_em) {
+    return t;
+  }
+
+  s_validityCheckers[t.getExprManager()]->d_reverseEmmc.insert(this);
+  return t.exportTo(d_em, d_emmc[t.getExprManager()]);
+}
+
+void ValidityChecker::cmdsFromString(const std::string& s, InputLanguage lang) {
+  std::stringstream ss(s, std::stringstream::in);
+  return loadFile(ss, lang, false);
+}
+
+Expr ValidityChecker::exprFromString(const std::string& s, InputLanguage lang) {
+  std::stringstream ss;
+
+  if( lang != PRESENTATION_LANG && lang != SMTLIB_V2_LANG ) {
+    ss << lang;
+    throw Exception("Unsupported language in exprFromString: " + ss.str());
+  }
+
+  CVC4::parser::Parser* p = CVC4::parser::ParserBuilder(d_em, "<internal>").withStringInput(s).withInputLanguage(lang).build();
+  p->useDeclarationsFrom(d_parserContext);
+  Expr e = p->nextExpression();
+  if( e.isNull() ) {
+    throw CVC4::parser::ParserException("Parser result is null: '" + s + "'");
+  }
+
+  delete p;
+
+  return e;
+}
+
+Expr ValidityChecker::trueExpr() {
+  return d_em->mkConst(true);
+}
+
+Expr ValidityChecker::falseExpr() {
+  return d_em->mkConst(false);
+}
+
+Expr ValidityChecker::notExpr(const Expr& child) {
+  return d_em->mkExpr(CVC4::kind::NOT, child);
+}
+
+Expr ValidityChecker::andExpr(const Expr& left, const Expr& right) {
+  return d_em->mkExpr(CVC4::kind::AND, left, right);
+}
+
+Expr ValidityChecker::andExpr(const std::vector<Expr>& children) {
+  // AND must have at least 2 children
+  CompatCheckArgument(children.size() > 0, children);
+  return (children.size() == 1) ? children[0] : Expr(d_em->mkExpr(CVC4::kind::AND, *reinterpret_cast<const vector<CVC4::Expr>*>(&children)));
+}
+
+Expr ValidityChecker::orExpr(const Expr& left, const Expr& right) {
+  return d_em->mkExpr(CVC4::kind::OR, left, right);
+}
+
+Expr ValidityChecker::orExpr(const std::vector<Expr>& children) {
+  // OR must have at least 2 children
+  CompatCheckArgument(children.size() > 0, children);
+  return (children.size() == 1) ? children[0] : Expr(d_em->mkExpr(CVC4::kind::OR, *reinterpret_cast<const vector<CVC4::Expr>*>(&children)));
+}
+
+Expr ValidityChecker::impliesExpr(const Expr& hyp, const Expr& conc) {
+  return d_em->mkExpr(CVC4::kind::IMPLIES, hyp, conc);
+}
+
+Expr ValidityChecker::iffExpr(const Expr& left, const Expr& right) {
+  return d_em->mkExpr(CVC4::kind::EQUAL, left, right);
+}
+
+Expr ValidityChecker::eqExpr(const Expr& child0, const Expr& child1) {
+  return d_em->mkExpr(CVC4::kind::EQUAL, child0, child1);
+}
+
+Expr ValidityChecker::iteExpr(const Expr& ifpart, const Expr& thenpart,
+                              const Expr& elsepart) {
+  return d_em->mkExpr(CVC4::kind::ITE, ifpart, thenpart, elsepart);
+}
+
+Expr ValidityChecker::distinctExpr(const std::vector<Expr>& children) {
+  CompatCheckArgument(children.size() > 1, children, "it makes no sense to create a `distinct' expression with only one child");
+  const vector<CVC4::Expr>& v =
+    *reinterpret_cast<const vector<CVC4::Expr>*>(&children);
+  return d_em->mkExpr(CVC4::kind::DISTINCT, v);
+}
+
+Op ValidityChecker::createOp(const std::string& name, const Type& type) {
+  return d_parserContext->mkVar(name, type);
+}
+
+Op ValidityChecker::createOp(const std::string& name, const Type& type,
+                             const Expr& def) {
+  CompatCheckArgument(def.getType() == type, type,
+      "Type mismatch in ValidityChecker::createOp(): `%s' defined to an "
+      "expression of type %s but ascribed as type %s", name.c_str(),
+      def.getType().toString().c_str(), type.toString().c_str());
+  d_parserContext->defineFunction(name, def);
+  return def;
+}
+
+Op ValidityChecker::lookupOp(const std::string& name, Type* type) {
+  Op op = d_parserContext->getFunction(name);
+  *type = op.getType();
+  return op;
+}
+
+Expr ValidityChecker::funExpr(const Op& op, const Expr& child) {
+  return d_em->mkExpr(CVC4::kind::APPLY_UF, op, child);
+}
+
+Expr ValidityChecker::funExpr(const Op& op, const Expr& left, const Expr& right) {
+  return d_em->mkExpr(CVC4::kind::APPLY_UF, op, left, right);
+}
+
+Expr ValidityChecker::funExpr(const Op& op, const Expr& child0,
+                              const Expr& child1, const Expr& child2) {
+  return d_em->mkExpr(CVC4::kind::APPLY_UF, op, child0, child1, child2);
+}
+
+Expr ValidityChecker::funExpr(const Op& op, const std::vector<Expr>& children) {
+  vector<CVC4::Expr> opkids;
+  opkids.push_back(op);
+  opkids.insert(opkids.end(), children.begin(), children.end());
+  return d_em->mkExpr(CVC4::kind::APPLY_UF, opkids);
+}
+
+bool ValidityChecker::addPairToArithOrder(const Expr& smaller, const Expr& bigger) {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+Expr ValidityChecker::ratExpr(int n, int d) {
+  return d_em->mkConst(Rational(n, d));
+}
+
+Expr ValidityChecker::ratExpr(const std::string& n, const std::string& d, int base) {
+  return d_em->mkConst(Rational(n + '/' + d, base));
+}
+
+Expr ValidityChecker::ratExpr(const std::string& n, int base) {
+  if(n.find(".") == string::npos) {
+    return d_em->mkConst(Rational(n, base));
+  } else {
+    CompatCheckArgument(base == 10, base, "unsupported base for decimal parsing");
+    return d_em->mkConst(Rational::fromDecimal(n));
+  }
+}
+
+Expr ValidityChecker::uminusExpr(const Expr& child) {
+  return d_em->mkExpr(CVC4::kind::UMINUS, child);
+}
+
+Expr ValidityChecker::plusExpr(const Expr& left, const Expr& right) {
+  return d_em->mkExpr(CVC4::kind::PLUS, left, right);
+}
+
+Expr ValidityChecker::plusExpr(const std::vector<Expr>& children) {
+  // PLUS must have at least 2 children
+  CompatCheckArgument(children.size() > 0, children);
+  return (children.size() == 1) ? children[0] : Expr(d_em->mkExpr(CVC4::kind::PLUS, *reinterpret_cast<const vector<CVC4::Expr>*>(&children)));
+}
+
+Expr ValidityChecker::minusExpr(const Expr& left, const Expr& right) {
+  return d_em->mkExpr(CVC4::kind::MINUS, left, right);
+}
+
+Expr ValidityChecker::multExpr(const Expr& left, const Expr& right) {
+  return d_em->mkExpr(CVC4::kind::MULT, left, right);
+}
+
+Expr ValidityChecker::powExpr(const Expr& x, const Expr& n) {
+  return d_em->mkExpr(CVC4::kind::POW, x, n);
+}
+
+Expr ValidityChecker::divideExpr(const Expr& numerator,
+                                 const Expr& denominator) {
+  return d_em->mkExpr(CVC4::kind::DIVISION, numerator, denominator);
+}
+
+Expr ValidityChecker::ltExpr(const Expr& left, const Expr& right) {
+  return d_em->mkExpr(CVC4::kind::LT, left, right);
+}
+
+Expr ValidityChecker::leExpr(const Expr& left, const Expr& right) {
+  return d_em->mkExpr(CVC4::kind::LEQ, left, right);
+}
+
+Expr ValidityChecker::gtExpr(const Expr& left, const Expr& right) {
+  return d_em->mkExpr(CVC4::kind::GT, left, right);
+}
+
+Expr ValidityChecker::geExpr(const Expr& left, const Expr& right) {
+  return d_em->mkExpr(CVC4::kind::GEQ, left, right);
+}
+
+Expr ValidityChecker::recordExpr(const std::string& field, const Expr& expr) {
+  CVC4::Type t = recordType(field, expr.getType());
+  const CVC4::Datatype& dt = ((CVC4::DatatypeType)t).getDatatype();
+  return d_em->mkExpr(CVC4::kind::APPLY_CONSTRUCTOR, dt[0].getConstructor(), expr);
+}
+
+Expr ValidityChecker::recordExpr(const std::string& field0, const Expr& expr0,
+                                 const std::string& field1, const Expr& expr1) {
+  CVC4::Type t = recordType(field0, expr0.getType(),
+                            field1, expr1.getType());
+  const CVC4::Datatype& dt = ((CVC4::DatatypeType)t).getDatatype();
+  return d_em->mkExpr(CVC4::kind::APPLY_CONSTRUCTOR, dt[0].getConstructor(), 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) {
+  CVC4::Type t = recordType(field0, expr0.getType(),
+                            field1, expr1.getType(),
+                            field2, expr2.getType());
+  const CVC4::Datatype& dt = ((CVC4::DatatypeType)t).getDatatype();
+  return d_em->mkExpr(CVC4::kind::APPLY_CONSTRUCTOR, dt[0].getConstructor(), expr0, expr1, expr2);
+}
+
+Expr ValidityChecker::recordExpr(const std::vector<std::string>& fields,
+                                 const std::vector<Expr>& exprs) {
+  std::vector<Type> types;
+  for(unsigned i = 0; i < exprs.size(); ++i) {
+    types.push_back(exprs[i].getType());
+  }
+  CVC4::Type t = recordType(fields, types);
+  const CVC4::Datatype& dt = ((CVC4::DatatypeType)t).getDatatype();
+  return d_em->mkExpr(CVC4::kind::APPLY_CONSTRUCTOR, dt[0].getConstructor(), *reinterpret_cast<const vector<CVC4::Expr>*>(&exprs));
+}
+
+Expr ValidityChecker::recSelectExpr(const Expr& record, const std::string& field) {
+  Type t = record.getType();
+  const CVC4::Datatype& dt = ((CVC4::DatatypeType)t).getDatatype();
+  unsigned index = CVC4::Datatype::indexOf( dt[0].getSelector(field) );
+  return d_em->mkExpr(CVC4::kind::APPLY_SELECTOR_TOTAL, dt[0][index].getSelector(), record);
+}
+
+Expr ValidityChecker::recUpdateExpr(const Expr& record, const std::string& field,
+                                    const Expr& newValue) {
+  return d_em->mkExpr(d_em->mkConst(CVC4::RecordUpdate(field)), record, newValue);
+}
+
+Expr ValidityChecker::readExpr(const Expr& array, const Expr& index) {
+  return d_em->mkExpr(CVC4::kind::SELECT, array, index);
+}
+
+Expr ValidityChecker::writeExpr(const Expr& array, const Expr& index,
+                                const Expr& newValue) {
+  return d_em->mkExpr(CVC4::kind::STORE, array, index, newValue);
+}
+
+Expr ValidityChecker::newBVConstExpr(const std::string& s, int base) {
+  return d_em->mkConst(CVC4::BitVector(s, base));
+}
+
+Expr ValidityChecker::newBVConstExpr(const std::vector<bool>& bits) {
+  Integer value = 0;
+  for(vector<bool>::const_iterator i = bits.begin(); i != bits.end(); ++i) {
+    value *= 2;
+    value += *i ? 1 : 0;
+  }
+  return d_em->mkConst(CVC4::BitVector(bits.size(), value));
+}
+
+Expr ValidityChecker::newBVConstExpr(const Rational& r, int len) {
+  // implementation based on CVC3's TheoryBitvector::newBVConstExpr()
+
+  CompatCheckArgument(r.getDenominator() == 1, r,
+                      "ValidityChecker::newBVConstExpr: "
+                      "not an integer: `%s'", r.toString().c_str());
+  CompatCheckArgument(len > 0, len, "ValidityChecker::newBVConstExpr: "
+                      "len = %d", len);
+
+  string s(r.toString(2));
+  size_t strsize = s.size();
+  size_t length = len;
+  Expr res;
+  if(length > 0 && length != strsize) {
+    //either (length > strsize) or (length < strsize)
+    if(length < strsize) {
+      s = s.substr(strsize - length, length);
+    } else {
+      string zeros("");
+      for(size_t i = 0, pad = length - strsize; i < pad; ++i)
+	zeros += "0";
+      s = zeros + s;
+    }
+  }
+
+  return newBVConstExpr(s, 2);
+}
+
+Expr ValidityChecker::newConcatExpr(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only concat a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2, "can only concat a bitvector, not a `%s'", t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_CONCAT, t1, t2);
+}
+
+Expr ValidityChecker::newConcatExpr(const std::vector<Expr>& kids) {
+  const vector<CVC4::Expr>& v =
+    *reinterpret_cast<const vector<CVC4::Expr>*>(&kids);
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_CONCAT, v);
+}
+
+Expr ValidityChecker::newBVExtractExpr(const Expr& e, int hi, int low) {
+  CompatCheckArgument(e.getType().isBitVector(), e,
+                      "can only bvextract from a bitvector, not a `%s'",
+                      e.getType().toString().c_str());
+  CompatCheckArgument(hi >= low, hi,
+                      "extraction [%d:%d] is bad; possibly inverted?", hi, low);
+  CompatCheckArgument(low >= 0, low,
+                      "extraction [%d:%d] is bad (negative)", hi, low);
+  CompatCheckArgument(CVC4::BitVectorType(e.getType()).getSize() > unsigned(hi),
+                      hi,
+                      "bitvector is of size %u, extraction [%d:%d] is off-the-end",
+                      CVC4::BitVectorType(e.getType()).getSize(), hi, low);
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_EXTRACT,
+                      d_em->mkConst(CVC4::BitVectorExtract(hi, low)), e);
+}
+
+Expr ValidityChecker::newBVNegExpr(const Expr& t1) {
+  // CVC3's BVNEG => SMT-LIBv2 bvnot
+  CompatCheckArgument(t1.getType().isBitVector(), t1,
+                      "can only bvneg a bitvector, not a `%s'",
+                      t1.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_NOT, t1);
+}
+
+Expr ValidityChecker::newBVAndExpr(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1,
+                      "can only bvand a bitvector, not a `%s'",
+                      t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2,
+                      "can only bvand a bitvector, not a `%s'",
+                      t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_AND, t1, t2);
+}
+
+Expr ValidityChecker::newBVAndExpr(const std::vector<Expr>& kids) {
+  // BITVECTOR_AND is not N-ary in CVC4
+  CompatCheckArgument(kids.size() > 1, kids,
+                      "BITVECTOR_AND must have at least 2 children");
+  std::vector<Expr>::const_reverse_iterator i = kids.rbegin();
+  Expr e = *i++;
+  while(i != kids.rend()) {
+    e = d_em->mkExpr(CVC4::kind::BITVECTOR_AND, *i++, e);
+  }
+  return e;
+}
+
+Expr ValidityChecker::newBVOrExpr(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1,
+                      "can only bvor a bitvector, not a `%s'",
+                      t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2,
+                      "can only bvor a bitvector, not a `%s'",
+                      t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_OR, t1, t2);
+}
+
+Expr ValidityChecker::newBVOrExpr(const std::vector<Expr>& kids) {
+  // BITVECTOR_OR is not N-ary in CVC4
+  CompatCheckArgument(kids.size() > 1, kids,
+                      "BITVECTOR_OR must have at least 2 children");
+  std::vector<Expr>::const_reverse_iterator i = kids.rbegin();
+  Expr e = *i++;
+  while(i != kids.rend()) {
+    e = d_em->mkExpr(CVC4::kind::BITVECTOR_OR, *i++, e);
+  }
+  return e;
+}
+
+Expr ValidityChecker::newBVXorExpr(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1,
+                      "can only bvxor a bitvector, not a `%s'",
+                      t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2,
+                      "can only bvxor a bitvector, not a `%s'",
+                      t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_XOR, t1, t2);
+}
+
+Expr ValidityChecker::newBVXorExpr(const std::vector<Expr>& kids) {
+  // BITVECTOR_XOR is not N-ary in CVC4
+  CompatCheckArgument(kids.size() > 1, kids,
+                      "BITVECTOR_XOR must have at least 2 children");
+  std::vector<Expr>::const_reverse_iterator i = kids.rbegin();
+  Expr e = *i++;
+  while(i != kids.rend()) {
+    e = d_em->mkExpr(CVC4::kind::BITVECTOR_XOR, *i++, e);
+  }
+  return e;
+}
+
+Expr ValidityChecker::newBVXnorExpr(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1,
+                      "can only bvxnor a bitvector, not a `%s'",
+                      t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2,
+                      "can only bvxnor a bitvector, not a `%s'",
+                      t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_XNOR, t1, t2);
+}
+
+Expr ValidityChecker::newBVXnorExpr(const std::vector<Expr>& kids) {
+  // BITVECTOR_XNOR is not N-ary in CVC4
+  CompatCheckArgument(kids.size() > 1, kids,
+                      "BITVECTOR_XNOR must have at least 2 children");
+  std::vector<Expr>::const_reverse_iterator i = kids.rbegin();
+  Expr e = *i++;
+  while(i != kids.rend()) {
+    e = d_em->mkExpr(CVC4::kind::BITVECTOR_XNOR, *i++, e);
+  }
+  return e;
+}
+
+Expr ValidityChecker::newBVNandExpr(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1,
+                      "can only bvnand a bitvector, not a `%s'",
+                      t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2,
+                      "can only bvnand a bitvector, not a `%s'",
+                      t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_NAND, t1, t2);
+}
+
+Expr ValidityChecker::newBVNorExpr(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1,
+                      "can only bvnor a bitvector, not a `%s'",
+                      t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2,
+                      "can only bvnor a bitvector, not a `%s'",
+                      t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_NOR, t1, t2);
+}
+
+Expr ValidityChecker::newBVCompExpr(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only bvcomp a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2, "can only bvcomp a bitvector, not a `%s'", t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_COMP, t1, t2);
+}
+
+Expr ValidityChecker::newBVLTExpr(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only bvlt a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2, "can only bvlt a bitvector, not a `%s'", t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_ULT, t1, t2);
+}
+
+Expr ValidityChecker::newBVLEExpr(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only bvle a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2, "can only bvle a bitvector, not a `%s'", t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_ULE, t1, t2);
+}
+
+Expr ValidityChecker::newBVSLTExpr(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only bvslt a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2, "can only bvslt a bitvector, not a `%s'", t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_SLT, t1, t2);
+}
+
+Expr ValidityChecker::newBVSLEExpr(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only bvsle a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2, "can only bvsle a bitvector, not a `%s'", t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_SLE, t1, t2);
+}
+
+Expr ValidityChecker::newSXExpr(const Expr& t1, int len) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only sx a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(len >= 0, len, "must sx by a positive integer");
+  CompatCheckArgument(unsigned(len) >= CVC4::BitVectorType(t1.getType()).getSize(), len, "cannot sx by something smaller than the bitvector (%d < %u)", len, CVC4::BitVectorType(t1.getType()).getSize());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_SIGN_EXTEND,
+                     d_em->mkConst(CVC4::BitVectorSignExtend(len)), t1);
+}
+
+Expr ValidityChecker::newBVUminusExpr(const Expr& t1) {
+  // CVC3's BVUMINUS => SMT-LIBv2 bvneg
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only bvuminus a bitvector, not a `%s'", t1.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_NEG, t1);
+}
+
+Expr ValidityChecker::newBVSubExpr(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only bvsub a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2, "can only bvsub by a bitvector, not a `%s'", t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_SUB, t1, t2);
+}
+
+// Copied from CVC3's bitvector theory: makes bitvector expression "e"
+// into "len" bits, by zero-padding, or extracting least-significant bits.
+Expr ValidityChecker::bvpad(int len, const Expr& e) {
+  CompatCheckArgument(len >= 0, len,
+                "padding length must be a non-negative integer, not %d", len);
+  CompatCheckArgument(e.getType().isBitVector(), e,
+                "input to bitvector operation must be a bitvector");
+
+  unsigned size = CVC4::BitVectorType(e.getType()).getSize();
+  Expr res;
+  if(size == len) {
+    res = e;
+  } else if(len < size) {
+    res = d_em->mkExpr(d_em->mkConst(CVC4::BitVectorExtract(len - 1, 0)), e);
+  } else {
+    // size < len
+    Expr zero = d_em->mkConst(CVC4::BitVector(len - size, 0u));
+    res = d_em->mkExpr(CVC4::kind::BITVECTOR_CONCAT, zero, e);
+  }
+  return res;
+}
+
+Expr ValidityChecker::newBVPlusExpr(int numbits, const std::vector<Expr>& kids) {
+  // BITVECTOR_PLUS is not N-ary in CVC4
+  CompatCheckArgument(kids.size() > 1, kids, "BITVECTOR_PLUS must have at least 2 children");
+  std::vector<Expr>::const_reverse_iterator i = kids.rbegin();
+  Expr e = *i++;
+  while(i != kids.rend()) {
+    e = d_em->mkExpr(CVC4::kind::BITVECTOR_PLUS, bvpad(numbits, *i++), e);
+  }
+  unsigned size = CVC4::BitVectorType(e.getType()).getSize();
+  CompatCheckArgument(unsigned(numbits) == size, numbits,
+                "argument must match computed size of bitvector sum: "
+                "passed size == %u, computed size == %u", numbits, size);
+  return e;
+}
+
+Expr ValidityChecker::newBVPlusExpr(int numbits, const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only bvplus a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2, "can only bvplus a bitvector, not a `%s'", t2.getType().toString().c_str());
+  Expr e = d_em->mkExpr(CVC4::kind::BITVECTOR_PLUS, bvpad(numbits, t1), bvpad(numbits, t2));
+  unsigned size = CVC4::BitVectorType(e.getType()).getSize();
+  CompatCheckArgument(unsigned(numbits) == size, numbits,
+                "argument must match computed size of bitvector sum: "
+                "passed size == %u, computed size == %u", numbits, size);
+  return e;
+}
+
+Expr ValidityChecker::newBVMultExpr(int numbits, const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only bvmult a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2, "can only bvmult by a bitvector, not a `%s'", t2.getType().toString().c_str());
+  Expr e = d_em->mkExpr(CVC4::kind::BITVECTOR_MULT, bvpad(numbits, t1), bvpad(numbits, t2));
+  unsigned size = CVC4::BitVectorType(e.getType()).getSize();
+  CompatCheckArgument(unsigned(numbits) == size, numbits,
+                "argument must match computed size of bitvector product: "
+                "passed size == %u, computed size == %u", numbits, size);
+  return e;
+}
+
+Expr ValidityChecker::newBVUDivExpr(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only bvudiv a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2, "can only bvudiv by a bitvector, not a `%s'", t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_UDIV, t1, t2);
+}
+
+Expr ValidityChecker::newBVURemExpr(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only bvurem a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2, "can only bvurem by a bitvector, not a `%s'", t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_UREM, t1, t2);
+}
+
+Expr ValidityChecker::newBVSDivExpr(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only bvsdiv a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2, "can only bvsdiv by a bitvector, not a `%s'", t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_SDIV, t1, t2);
+}
+
+Expr ValidityChecker::newBVSRemExpr(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only bvsrem a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2, "can only bvsrem by a bitvector, not a `%s'", t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_SREM, t1, t2);
+}
+
+Expr ValidityChecker::newBVSModExpr(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only bvsmod a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2, "can only bvsmod by a bitvector, not a `%s'", t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_SMOD, t1, t2);
+}
+
+Expr ValidityChecker::newFixedLeftShiftExpr(const Expr& t1, int r) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only left-shift a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(r >= 0, r, "left shift amount must be >= 0 (you passed %d)", r);
+  // Defined in:
+  // http://www.cs.nyu.edu/acsys/cvc3/doc/user_doc.html#user_doc_pres_lang_expr_bit
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_CONCAT, t1, d_em->mkConst(CVC4::BitVector(r)));
+}
+
+Expr ValidityChecker::newFixedConstWidthLeftShiftExpr(const Expr& t1, int r) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only right-shift a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(r >= 0, r, "const-width left shift amount must be >= 0 (you passed %d)", r);
+  // just turn it into a BVSHL
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_SHL, t1, d_em->mkConst(CVC4::BitVector(CVC4::BitVectorType(t1.getType()).getSize(), unsigned(r))));
+}
+
+Expr ValidityChecker::newFixedRightShiftExpr(const Expr& t1, int r) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only right-shift a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(r >= 0, r, "right shift amount must be >= 0 (you passed %d)", r);
+  // Defined in:
+  // http://www.cs.nyu.edu/acsys/cvc3/doc/user_doc.html#user_doc_pres_lang_expr_bit
+  // Should be equivalent to a BVLSHR; just turn it into that.
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_LSHR, t1, d_em->mkConst(CVC4::BitVector(CVC4::BitVectorType(t1.getType()).getSize(), unsigned(r))));
+}
+
+Expr ValidityChecker::newBVSHL(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only right-shift a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2, "can only right-shift by a bitvector, not a `%s'", t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_SHL, t1, t2);
+}
+
+Expr ValidityChecker::newBVLSHR(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only right-shift a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2, "can only right-shift by a bitvector, not a `%s'", t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_LSHR, t1, t2);
+}
+
+Expr ValidityChecker::newBVASHR(const Expr& t1, const Expr& t2) {
+  CompatCheckArgument(t1.getType().isBitVector(), t1, "can only right-shift a bitvector, not a `%s'", t1.getType().toString().c_str());
+  CompatCheckArgument(t2.getType().isBitVector(), t2, "can only right-shift by a bitvector, not a `%s'", t2.getType().toString().c_str());
+  return d_em->mkExpr(CVC4::kind::BITVECTOR_ASHR, t1, t2);
+}
+
+Rational ValidityChecker::computeBVConst(const Expr& e) {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+Expr ValidityChecker::tupleExpr(const std::vector<Expr>& exprs) {
+  std::vector< Type > types;
+  std::vector<CVC4::Expr> v;
+  for( unsigned i=0; i<exprs.size(); i++ ){
+    types.push_back( exprs[i].getType() );  
+    v.push_back( exprs[i] );
+  }
+  Type t = tupleType( types );
+  const CVC4::Datatype& dt = ((CVC4::DatatypeType)t).getDatatype();
+  v.insert( v.begin(), dt[0].getConstructor() );
+  return d_em->mkExpr(CVC4::kind::APPLY_CONSTRUCTOR, v);
+}
+
+Expr ValidityChecker::tupleSelectExpr(const Expr& tuple, int index) {
+  CompatCheckArgument(index >= 0 && index < ((CVC4::DatatypeType)tuple.getType()).getTupleLength(),
+                      "invalid index in tuple select");
+  const CVC4::Datatype& dt = ((CVC4::DatatypeType)tuple.getType()).getDatatype();
+  return d_em->mkExpr(CVC4::kind::APPLY_SELECTOR_TOTAL, dt[0][index].getSelector(), tuple);
+}
+
+Expr ValidityChecker::tupleUpdateExpr(const Expr& tuple, int index,
+                                      const Expr& newValue) {
+  CompatCheckArgument(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) {
+  ConstructorMap::const_iterator i = d_constructors.find(constructor);
+  CompatCheckArgument(i != d_constructors.end(), constructor, "no such constructor");
+  const CVC4::Datatype& dt = *(*i).second;
+  const CVC4::DatatypeConstructor& ctor = dt[constructor];
+  CompatCheckArgument(ctor.getNumArgs() == args.size(), args, "arity mismatch in constructor application");
+  return d_em->mkExpr(CVC4::kind::APPLY_CONSTRUCTOR, ctor.getConstructor(), vector<CVC4::Expr>(args.begin(), args.end()));
+}
+
+Expr ValidityChecker::datatypeSelExpr(const std::string& selector, const Expr& arg) {
+  SelectorMap::const_iterator i = d_selectors.find(selector);
+  CompatCheckArgument(i != d_selectors.end(), selector, "no such selector");
+  const CVC4::Datatype& dt = *(*i).second.first;
+  string constructor = (*i).second.second;
+  const CVC4::DatatypeConstructor& ctor = dt[constructor];
+  return d_em->mkExpr(CVC4::kind::APPLY_SELECTOR, ctor.getSelector(selector), arg);
+}
+
+Expr ValidityChecker::datatypeTestExpr(const std::string& constructor, const Expr& arg) {
+  ConstructorMap::const_iterator i = d_constructors.find(constructor);
+  CompatCheckArgument(i != d_constructors.end(), constructor, "no such constructor");
+  const CVC4::Datatype& dt = *(*i).second;
+  const CVC4::DatatypeConstructor& ctor = dt[constructor];
+  return d_em->mkExpr(CVC4::kind::APPLY_TESTER, ctor.getTester(), arg);
+}
+
+Expr ValidityChecker::boundVarExpr(const std::string& name, const std::string& uid,
+                                   const Type& type) {
+  return d_em->mkBoundVar(name, type);
+}
+
+Expr ValidityChecker::forallExpr(const std::vector<Expr>& vars, const Expr& body) {
+  Expr boundVarList = d_em->mkExpr(CVC4::kind::BOUND_VAR_LIST, *reinterpret_cast<const std::vector<CVC4::Expr>*>(&vars));
+  return d_em->mkExpr(CVC4::kind::FORALL, boundVarList, body);
+}
+
+Expr ValidityChecker::forallExpr(const std::vector<Expr>& vars, const Expr& body,
+                                 const Expr& trigger) {
+  // trigger
+  Expr boundVarList = d_em->mkExpr(CVC4::kind::BOUND_VAR_LIST, *reinterpret_cast<const std::vector<CVC4::Expr>*>(&vars));
+  Expr triggerList = d_em->mkExpr(CVC4::kind::INST_PATTERN_LIST, d_em->mkExpr(CVC4::kind::INST_PATTERN, trigger));
+  return d_em->mkExpr(CVC4::kind::FORALL, boundVarList, body, triggerList);
+}
+
+Expr ValidityChecker::forallExpr(const std::vector<Expr>& vars, const Expr& body,
+                                 const std::vector<Expr>& triggers) {
+  // set of triggers
+  Expr boundVarList = d_em->mkExpr(CVC4::kind::BOUND_VAR_LIST, *reinterpret_cast<const std::vector<CVC4::Expr>*>(&vars));
+  std::vector<CVC4::Expr> pats;
+  for(std::vector<Expr>::const_iterator i = triggers.begin(); i != triggers.end(); ++i) {
+    pats.push_back(d_em->mkExpr(CVC4::kind::INST_PATTERN, *i));
+  }
+  Expr triggerList = d_em->mkExpr(CVC4::kind::INST_PATTERN_LIST, pats);
+  return d_em->mkExpr(CVC4::kind::FORALL, boundVarList, body, triggerList);
+}
+
+Expr ValidityChecker::forallExpr(const std::vector<Expr>& vars, const Expr& body,
+                                 const std::vector<std::vector<Expr> >& triggers) {
+  // set of multi-triggers
+  Expr boundVarList = d_em->mkExpr(CVC4::kind::BOUND_VAR_LIST, *reinterpret_cast<const std::vector<CVC4::Expr>*>(&vars));
+  std::vector<CVC4::Expr> pats;
+  for(std::vector< std::vector<Expr> >::const_iterator i = triggers.begin(); i != triggers.end(); ++i) {
+    pats.push_back(d_em->mkExpr(CVC4::kind::INST_PATTERN, *reinterpret_cast<const std::vector<CVC4::Expr>*>(&*i)));
+  }
+  Expr triggerList = d_em->mkExpr(CVC4::kind::INST_PATTERN_LIST, pats);
+  return d_em->mkExpr(CVC4::kind::FORALL, boundVarList, body, triggerList);
+}
+
+void ValidityChecker::setTriggers(const Expr& e, const std::vector<std::vector<Expr> > & triggers) {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+void ValidityChecker::setTriggers(const Expr& e, const std::vector<Expr>& triggers) {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+void ValidityChecker::setTrigger(const Expr& e, const Expr& trigger) {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+void ValidityChecker::setMultiTrigger(const Expr& e, const std::vector<Expr>& multiTrigger) {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+Expr ValidityChecker::existsExpr(const std::vector<Expr>& vars, const Expr& body) {
+  Expr boundVarList = d_em->mkExpr(CVC4::kind::BOUND_VAR_LIST, *reinterpret_cast<const std::vector<CVC4::Expr>*>(&vars));
+  return d_em->mkExpr(CVC4::kind::EXISTS, boundVarList, body);
+}
+
+Op ValidityChecker::lambdaExpr(const std::vector<Expr>& vars, const Expr& body) {
+  Unimplemented("Lambda expressions not supported by CVC4 yet (sorry!)");
+}
+
+Op ValidityChecker::transClosure(const Op& op) {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+Expr ValidityChecker::simulateExpr(const Expr& f, const Expr& s0,
+                                   const std::vector<Expr>& inputs,
+                                   const Expr& n) {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+void ValidityChecker::setResourceLimit(unsigned limit) {
+  // Set a resource limit for CVC4, cumulative (rather than
+  // per-query), starting from now.
+  d_smt->setResourceLimit(limit, true);
+}
+
+void ValidityChecker::setTimeLimit(unsigned limit) {
+  // Set a time limit for CVC4, cumulative (rather than per-query),
+  // starting from now.  Note that CVC3 uses tenths of a second,
+  // while CVC4 uses milliseconds.
+  d_smt->setTimeLimit(limit * 100, true);
+}
+
+void ValidityChecker::assertFormula(const Expr& e) {
+  d_smt->assertFormula(e);
+}
+
+void ValidityChecker::registerAtom(const Expr& e) {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+Expr ValidityChecker::getImpliedLiteral() {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+Expr ValidityChecker::simplify(const Expr& e) {
+  return d_smt->simplify(e);
+}
+
+static QueryResult cvc4resultToCvc3result(CVC4::Result r) {
+  switch(r.isSat()) {
+  case CVC4::Result::SAT:
+    return SATISFIABLE;
+  case CVC4::Result::UNSAT:
+    return UNSATISFIABLE;
+  default:
+    ;
+  }
+
+  switch(r.isValid()) {
+  case CVC4::Result::VALID:
+    return VALID;
+  case CVC4::Result::INVALID:
+    return INVALID;
+  default:
+    return UNKNOWN;
+  }
+}
+
+QueryResult ValidityChecker::query(const Expr& e) {
+  return cvc4resultToCvc3result(d_smt->query(e));
+}
+
+QueryResult ValidityChecker::checkUnsat(const Expr& e) {
+  return cvc4resultToCvc3result(d_smt->checkSat(e));
+}
+
+QueryResult ValidityChecker::checkContinue() {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+QueryResult ValidityChecker::restart(const Expr& e) {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+void ValidityChecker::returnFromCheck() {
+  // CVC4 has this behavior by default
+}
+
+void ValidityChecker::getUserAssumptions(std::vector<Expr>& assumptions) {
+  CompatCheckArgument(assumptions.empty(), assumptions, "assumptions arg must be empty");
+  vector<CVC4::Expr> v = d_smt->getAssertions();
+  assumptions.swap(*reinterpret_cast<vector<Expr>*>(&v));
+}
+
+void ValidityChecker::getInternalAssumptions(std::vector<Expr>& assumptions) {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+void ValidityChecker::getAssumptions(std::vector<Expr>& assumptions) {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+void ValidityChecker::getAssumptionsUsed(std::vector<Expr>& assumptions) {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+Expr ValidityChecker::getProofQuery() {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+void ValidityChecker::getCounterExample(std::vector<Expr>& assumptions,
+                                        bool inOrder) {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+void ValidityChecker::getConcreteModel(ExprMap<Expr>& m) {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+QueryResult ValidityChecker::tryModelGeneration() {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+FormulaValue ValidityChecker::value(const Expr& e) {
+  CompatCheckArgument(e.getType() == d_em->booleanType(), e, "argument must be a formula");
+  try {
+    return d_smt->getValue(e).getConst<bool>() ? TRUE_VAL : FALSE_VAL;
+  } catch(CVC4::Exception& e) {
+    return UNKNOWN_VAL;
+  }
+}
+
+Expr ValidityChecker::getValue(const Expr& e) {
+  try {
+    return d_smt->getValue(e);
+  } catch(CVC4::ModalException& e) {
+    // by contract, we return null expr
+    return Expr();
+  }
+}
+
+bool ValidityChecker::inconsistent(std::vector<Expr>& assumptions) {
+  CompatCheckArgument(assumptions.empty(), assumptions, "assumptions vector should be empty on entry");
+  if(d_smt->checkSat() == CVC4::Result::UNSAT) {
+    // supposed to be a minimal set, but CVC4 doesn't support that
+    d_smt->getAssertions().swap(*reinterpret_cast<std::vector<CVC4::Expr>*>(&assumptions));
+    return true;
+  }
+  return false;
+}
+
+bool ValidityChecker::inconsistent() {
+  return d_smt->checkSat() == CVC4::Result::UNSAT;
+}
+
+bool ValidityChecker::incomplete() {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+bool ValidityChecker::incomplete(std::vector<std::string>& reasons) {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+Proof ValidityChecker::getProof() {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+Expr ValidityChecker::getTCC() {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+void ValidityChecker::getAssumptionsTCC(std::vector<Expr>& assumptions) {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+Proof ValidityChecker::getProofTCC() {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+Expr ValidityChecker::getClosure() {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+Proof ValidityChecker::getProofClosure() {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+int ValidityChecker::stackLevel() {
+  return d_stackLevel;
+}
+
+void ValidityChecker::push() {
+  ++d_stackLevel;
+  d_smt->push();
+}
+
+void ValidityChecker::pop() {
+  d_smt->pop();
+  --d_stackLevel;
+}
+
+void ValidityChecker::popto(int stackLevel) {
+  CompatCheckArgument(stackLevel >= 0, stackLevel,
+                      "Cannot pop to a negative stack level %d", stackLevel);
+  CompatCheckArgument(unsigned(stackLevel) <= d_stackLevel, stackLevel,
+                      "Cannot pop to a stack level higher than the current one!  "
+                      "At stack level %u, user requested stack level %d",
+                      d_stackLevel, stackLevel);
+  while(unsigned(stackLevel) < d_stackLevel) {
+    pop();
+  }
+}
+
+int ValidityChecker::scopeLevel() {
+  return d_parserContext->scopeLevel();
+}
+
+void ValidityChecker::pushScope() {
+  d_parserContext->pushScope();
+}
+
+void ValidityChecker::popScope() {
+  d_parserContext->popScope();
+}
+
+void ValidityChecker::poptoScope(int scopeLevel) {
+  CompatCheckArgument(scopeLevel >= 0, scopeLevel,
+                      "Cannot pop to a negative scope level %d", scopeLevel);
+  CompatCheckArgument(unsigned(scopeLevel) <= d_parserContext->scopeLevel(),
+                      scopeLevel,
+                      "Cannot pop to a scope level higher than the current one!  "
+                      "At scope level %u, user requested scope level %d",
+                      d_parserContext->scopeLevel(), scopeLevel);
+  while(unsigned(scopeLevel) < d_parserContext->scopeLevel()) {
+    popScope();
+  }
+}
+
+Context* ValidityChecker::getCurrentContext() {
+  Unimplemented("Contexts are not part of the public interface of CVC4");
+}
+
+void ValidityChecker::reset() {
+  // reset everything, forget everything
+  d_smt->reset();
+  delete d_parserContext;
+  d_parserContext = CVC4::parser::ParserBuilder(d_em, "<internal>").withInputLanguage(CVC4::language::input::LANG_CVC4).withStringInput("").build();
+  s_typeToExpr.clear();
+  s_exprToType.clear();
+}
+
+void ValidityChecker::logAnnotation(const Expr& annot) {
+  Unimplemented("This CVC3 compatibility function not yet implemented (sorry!)");
+}
+
+static void doCommands(CVC4::parser::Parser* parser, CVC4::SmtEngine* smt, CVC4::Options& opts) {
+  while(CVC4::Command* cmd = parser->nextCommand()) {
+    if(opts.getVerbosity() >= 0) {
+      cmd->invoke(smt, *opts.getOut());
+    } else {
+      cmd->invoke(smt);
+    }
+    delete cmd;
+  }
+}
+
+void ValidityChecker::loadFile(const std::string& fileName,
+                               InputLanguage lang,
+                               bool interactive,
+                               bool calledFromParser) {
+  CVC4::Options opts;
+  opts.copyValues(d_em->getOptions());
+  stringstream langss;
+  langss << lang;
+  d_smt->setOption("input-language", CVC4::SExpr(langss.str()));
+  d_smt->setOption("interactive-mode", CVC4::SExpr(interactive ? true : false));
+  CVC4::parser::ParserBuilder parserBuilder(d_em, fileName, opts);
+  CVC4::parser::Parser* p = parserBuilder.build();
+  p->useDeclarationsFrom(d_parserContext);
+  doCommands(p, d_smt, opts);
+  delete p;
+}
+
+void ValidityChecker::loadFile(std::istream& is,
+                               InputLanguage lang,
+                               bool interactive) {
+  CVC4::Options opts;
+  opts.copyValues(d_em->getOptions());
+
+  stringstream langss;
+  langss << lang;
+  d_smt->setOption("input-language", CVC4::SExpr(langss.str()));
+  d_smt->setOption("interactive-mode", CVC4::SExpr(interactive ? true : false));
+  CVC4::parser::ParserBuilder parserBuilder(d_em, "[stream]", opts);
+  CVC4::parser::Parser* p = parserBuilder.withStreamInput(is).build();
+  d_parserContext = p;
+  p->useDeclarationsFrom(d_parserContext);
+  doCommands(p, d_smt, opts);
+  delete p;
+}
+
+Statistics ValidityChecker::getStatistics() {
+  return d_smt->getStatistics();
+}
+
+void ValidityChecker::printStatistics() {
+  d_smt->getStatistics().flushInformation(Message.getStream());
+}
+
+int compare(const Expr& e1, const Expr& e2) {
+  // Quick equality check (operator== is implemented independently
+  // and more efficiently)
+  if(e1 == e2) return 0;
+
+  if(e1.isNull()) return -1;
+  if(e2.isNull()) return 1;
+
+  // Both are non-Null.  Check for constant
+  bool e1c = e1.isConstant();
+  if (e1c != e2.isConstant()) {
+    return e1c ? -1 : 1;
+  }
+
+  // Compare the indices
+  return (e1.getIndex() < e2.getIndex())? -1 : 1;
+}
+
+}/* CVC3 namespace */
diff --git a/src/compat/cvc3_compat.h b/src/compat/cvc3_compat.h
new file mode 100644
index 0000000..d516709
--- /dev/null
+++ b/src/compat/cvc3_compat.h
@@ -0,0 +1,1562 @@
+/*********************                                                        */
+/*! \file cvc3_compat.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Francois Bobot
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief CVC3 compatibility layer for CVC4
+ **
+ ** CVC3 compatibility layer for CVC4.  This version was derived from
+ ** the following CVS revisions of the following files in CVC3.  If
+ ** those files have a later revision, then this file might be out of
+ ** date.  Note that this compatibility layer is not safe for use in
+ ** multithreaded contexts where multiple threads are accessing this
+ ** compatibility layer functionality.
+ **
+ ** src/include/vc.h 1.36
+ ** src/include/expr.h 1.39
+ ** src/include/command_line_flags.h 1.3
+ ** src/include/queryresult.h 1.2
+ ** src/include/formula_value.h 1.1
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__CVC3_COMPAT_H
+#define __CVC4__CVC3_COMPAT_H
+
+// keep the CVC3 include guard also
+#if defined(_cvc3__include__vc_h_) ||                                   \
+    defined(_cvc3__expr_h_) ||                                          \
+    defined(_cvc3__command_line_flags_h_) ||                            \
+    defined(_cvc3__include__queryresult_h_) ||                          \
+    defined(_cvc3__include__formula_value_h_)
+
+#error "A CVC3 header file was included before CVC4's cvc3_compat.h header.  Please include cvc3_compat.h rather than any CVC3 headers."
+
+#else
+
+// define these so the files are skipped if the user #includes them too
+#define _cvc3__expr_h_
+#define _cvc3__include__vc_h_
+#define _cvc3__command_line_flags_h_
+#define _cvc3__include__queryresult_h_
+#define _cvc3__include__formula_value_h_
+
+#include <stdlib.h>
+#include <map>
+#include <utility>
+
+#include "base/exception.h"
+#include "expr/expr.h"
+#include "expr/expr_manager.h"
+#include "expr/type.h"
+#include "parser/parser.h"
+#include "smt/smt_engine.h"
+#include "util/hash.h"
+#include "util/integer.h"
+#include "util/rational.h"
+
+//class CInterface;
+
+namespace CVC3 {
+
+const CVC4::Kind EQ = CVC4::kind::EQUAL;
+const CVC4::Kind LE = CVC4::kind::LEQ;
+const CVC4::Kind GE = CVC4::kind::GEQ;
+const CVC4::Kind DIVIDE = CVC4::kind::DIVISION;
+const CVC4::Kind BVLT = CVC4::kind::BITVECTOR_ULT;
+const CVC4::Kind BVLE = CVC4::kind::BITVECTOR_ULE;
+const CVC4::Kind BVGT = CVC4::kind::BITVECTOR_UGT;
+const CVC4::Kind BVGE = CVC4::kind::BITVECTOR_UGE;
+const CVC4::Kind BVPLUS = CVC4::kind::BITVECTOR_PLUS;
+const CVC4::Kind BVSUB = CVC4::kind::BITVECTOR_SUB;
+const CVC4::Kind BVCONST = CVC4::kind::CONST_BITVECTOR;
+const CVC4::Kind EXTRACT = CVC4::kind::BITVECTOR_EXTRACT;
+const CVC4::Kind CONCAT = CVC4::kind::BITVECTOR_CONCAT;
+
+std::string int2string(int n) CVC4_PUBLIC;
+
+//! Different types of command line flags
+typedef enum CVC4_PUBLIC {
+  CLFLAG_NULL,
+  CLFLAG_BOOL,
+  CLFLAG_INT,
+  CLFLAG_STRING,
+  CLFLAG_STRVEC //!< Vector of pair<string, bool>
+} CLFlagType;
+
+std::ostream& operator<<(std::ostream& out, CLFlagType clft) CVC4_PUBLIC;
+
+/*!
+  Class CLFlag (for Command Line Flag)
+
+  Author: Sergey Berezin
+
+  Date: Fri May 30 14:10:48 2003
+
+  This class implements a data structure to hold a value of a single
+  command line flag.
+*/
+class CVC4_PUBLIC CLFlag {
+  //! Type of the argument
+  CLFlagType d_tp;
+  //! The argument
+  union {
+    bool b;
+    int i;
+    std::string* s;
+    std::vector<std::pair<std::string,bool> >* sv;
+  } d_data;
+
+public:
+
+  //! Constructor for a boolean flag
+  CLFlag(bool b, const std::string& help, bool display = true);
+  //! Constructor for an integer flag
+  CLFlag(int i, const std::string& help, bool display = true);
+  //! Constructor for a string flag
+  CLFlag(const std::string& s, const std::string& help, bool display = true);
+  //! Constructor for a string flag from char*
+  CLFlag(const char* s, const std::string& help, bool display = true);
+  //! Constructor for a vector flag
+  CLFlag(const std::vector<std::pair<std::string,bool> >& sv,
+	 const std::string& help, bool display = true);
+  //! Default constructor
+  CLFlag();
+  //! Copy constructor
+  CLFlag(const CLFlag& f);
+  //! Destructor
+  ~CLFlag();
+
+  //! Assignment from another flag
+  CLFlag& operator=(const CLFlag& f);
+  //! Assignment of a boolean value
+  /*! The flag must already have the right type */
+  CLFlag& operator=(bool b);
+  //! Assignment of an integer value
+  /*! The flag must already have the right type */
+  CLFlag& operator=(int i);
+  //! Assignment of a string value
+  /*! The flag must already have a string type. */
+  CLFlag& operator=(const std::string& s);
+  //! Assignment of an string value from char*
+  /*! The flag must already have a string type. */
+  CLFlag& operator=(const char* s);
+  //! Assignment of a string value with a boolean tag to a vector flag
+  /*! The flag must already have a vector type.  The pair of
+    <string,bool> will be appended to the vector. */
+  CLFlag& operator=(const std::pair<std::string,bool>& p);
+  //! Assignment of a vector value
+  /*! The flag must already have a vector type. */
+  CLFlag& operator=(const std::vector<std::pair<std::string,bool> >& sv);
+
+  // Accessor methods
+  //! Return the type of the flag
+  CLFlagType getType() const;
+  /*! @brief Return true if the flag was modified from the default
+    value (e.g. set on the command line) */
+  bool modified() const;
+  //! Return true if flag should be displayed in regular help
+  bool display() const;
+
+  // The value accessors return a reference.  For the system-wide
+  // flags, this reference will remain valid throughout the run of the
+  // program, even if the flag's value changes.  So, the reference can
+  // be cached, and the value can be checked directly (which is more
+  // efficient).
+  const bool& getBool() const;
+
+  const int& getInt() const;
+
+  const std::string& getString() const;
+
+  const std::vector<std::pair<std::string,bool> >& getStrVec() const;
+
+  const std::string& getHelp() const;
+
+};/* class CLFlag */
+
+///////////////////////////////////////////////////////////////////////
+// Class CLFlag (for Command Line Flag)
+//
+// Author: Sergey Berezin
+// Date: Fri May 30 14:10:48 2003
+//
+// Database of command line flags.
+///////////////////////////////////////////////////////////////////////
+
+class CVC4_PUBLIC CLFlags {
+  typedef std::map<std::string, CLFlag> FlagMap;
+  FlagMap d_map;
+
+public:
+  // Public methods
+  // Add a new flag.  The name must be a complete flag name.
+  void addFlag(const std::string& name, const CLFlag& f);
+  // Count how many flags match the name prefix
+  size_t countFlags(const std::string& name) const;
+  // Match the name prefix and add all the matching names to the vector
+  size_t countFlags(const std::string& name,
+		    std::vector<std::string>& names) const;
+  // Retrieve an existing flag.  The 'name' must be a full name of an
+  // existing flag.
+  const CLFlag& getFlag(const std::string& name) const;
+
+  const CLFlag& operator[](const std::string& name) const;
+
+  // Setting the flag to a new value, but preserving the help string.
+  // The 'name' prefix must uniquely resolve to an existing flag.
+  void setFlag(const std::string& name, const CLFlag& f);
+
+  // Variants of setFlag for all the types
+  void setFlag(const std::string& name, bool b);
+  void setFlag(const std::string& name, int i);
+  void setFlag(const std::string& name, const std::string& s);
+  void setFlag(const std::string& name, const char* s);
+  void setFlag(const std::string& name, const std::pair<std::string, bool>& p);
+  void setFlag(const std::string& name,
+	       const std::vector<std::pair<std::string, bool> >& sv);
+
+};/* class CLFlags */
+
+class CVC4_PUBLIC ExprManager;
+class CVC4_PUBLIC Context;
+class CVC4_PUBLIC Proof {};
+class CVC4_PUBLIC Theorem {};
+
+using CVC4::InputLanguage;
+using CVC4::Integer;
+using CVC4::Rational;
+using CVC4::Exception;
+using CVC4::Cardinality;
+using namespace CVC4::kind;
+
+typedef size_t ExprIndex;
+typedef CVC4::TypeCheckingException TypecheckException;
+typedef size_t Unsigned;
+
+static const int READ = ::CVC4::kind::SELECT;
+static const int WRITE = ::CVC4::kind::STORE;
+
+// CVC4 has a more sophisticated Cardinality type;
+// but we can support comparison against CVC3's more
+// coarse-grained Cardinality.
+enum CVC4_PUBLIC CVC3CardinalityKind {
+  CARD_FINITE,
+  CARD_INFINITE,
+  CARD_UNKNOWN
+};/* enum CVC3CardinalityKind */
+
+std::ostream& operator<<(std::ostream& out, CVC3CardinalityKind c) CVC4_PUBLIC;
+
+bool operator==(const Cardinality& c, CVC3CardinalityKind d) CVC4_PUBLIC;
+bool operator==(CVC3CardinalityKind d, const Cardinality& c) CVC4_PUBLIC;
+bool operator!=(const Cardinality& c, CVC3CardinalityKind d) CVC4_PUBLIC;
+bool operator!=(CVC3CardinalityKind d, const Cardinality& c) CVC4_PUBLIC;
+
+class CVC4_PUBLIC Expr;
+
+template <class T>
+class CVC4_PUBLIC ExprMap : public std::map<Expr, T> {
+};/* class ExprMap<T> */
+
+template <class T>
+class CVC4_PUBLIC ExprHashMap : public std::hash_map<Expr, T, CVC4::ExprHashFunction> {
+public:
+  void insert(Expr a, Expr b);
+};/* class ExprHashMap<T> */
+
+class CVC4_PUBLIC Type : public CVC4::Type {
+public:
+  Type();
+  Type(const CVC4::Type& type);
+  Type(const Type& type);
+  Expr getExpr() const;
+
+  // Reasoning about children
+  int arity() const;
+  Type operator[](int i) const;
+
+  // Core testers
+  bool isBool() const;
+  bool isSubtype() const;
+  //! Return cardinality of type
+  Cardinality card() const;
+  //! Return nth (starting with 0) element in a finite type
+  /*! Returns NULL Expr if unable to compute nth element
+   */
+  Expr enumerateFinite(Unsigned n) const;
+  //! Return size of a finite type; returns 0 if size cannot be determined
+  Unsigned sizeFinite() const;
+
+  // Core constructors
+  static Type typeBool(ExprManager* em);
+  static Type funType(const std::vector<Type>& typeDom, const Type& typeRan);
+  Type funType(const Type& typeRan) const;
+
+};/* class CVC3::Type */
+
+class CVC4_PUBLIC Expr;
+typedef Expr Op;
+
+/**
+ * Expr class for CVC3 compatibility layer.
+ *
+ * This class is identical to (and convertible to/from) a CVC4 Expr,
+ * except that a few additional functions are supported to provide
+ * naming compatibility with CVC3.
+ */
+class CVC4_PUBLIC Expr : public CVC4::Expr {
+public:
+  typedef CVC4::Expr::const_iterator iterator;
+
+  Expr();
+  Expr(const Expr& e);
+  Expr(const CVC4::Expr& e);
+  Expr(CVC4::Kind k);
+
+  // Compound expression constructors
+  Expr eqExpr(const Expr& right) const;
+  Expr notExpr() const;
+  Expr negate() const; // avoid double-negatives
+  Expr andExpr(const Expr& right) const;
+  Expr orExpr(const Expr& right) const;
+  Expr iteExpr(const Expr& thenpart, const Expr& elsepart) const;
+  Expr iffExpr(const Expr& right) const;
+  Expr impExpr(const Expr& right) const;
+  Expr xorExpr(const Expr& right) const;
+
+  Expr substExpr(const std::vector<Expr>& oldTerms,
+                 const std::vector<Expr>& newTerms) const;
+  Expr substExpr(const ExprHashMap<Expr>& oldToNew) const;
+
+  Expr operator!() const;
+  Expr operator&&(const Expr& right) const;
+  Expr operator||(const Expr& right) const;
+
+  static size_t hash(const Expr& e);
+
+  size_t hash() const;
+
+  // Core expression testers
+
+  bool isFalse() const;
+  bool isTrue() const;
+  bool isBoolConst() const;
+  bool isVar() const;
+  bool isBoundVar() const;
+  bool isString() const;
+  bool isSymbol() const;
+  bool isTerm() const;
+  bool isType() const;
+  bool isClosure() const;
+  bool isQuantifier() const;
+  bool isForall() const;
+  bool isExists() const;
+  bool isLambda() const;
+  bool isApply() const;
+  bool isTheorem() const;
+  bool isConstant() const;
+  bool isRawList() const;
+
+  bool isAtomic() const;
+  bool isAtomicFormula() const;
+  bool isAbsAtomicFormula() const;
+  bool isLiteral() const;
+  bool isAbsLiteral() const;
+  bool isBoolConnective() const;
+  bool isPropLiteral() const;
+  bool isPropAtom() const;
+
+  std::string getName() const;
+  std::string getUid() const;
+
+  std::string getString() const;
+  std::vector<Expr> getVars() const;
+  Expr getExistential() const;
+  int getBoundIndex() const;
+  Expr getBody() const;
+  Theorem getTheorem() const;
+
+  bool isEq() const;
+  bool isNot() const;
+  bool isAnd() const;
+  bool isOr() const;
+  bool isITE() const;
+  bool isIff() const;
+  bool isImpl() const;
+  bool isXor() const;
+
+  bool isRational() const;
+  bool isSkolem() const;
+
+  const Rational& getRational() const;
+
+  Op mkOp() const;
+  Op getOp() const;
+  Expr getOpExpr() const;
+  int getOpKind() const;
+  Expr getExpr() const;// since people are used to doing getOp().getExpr() in CVC3
+
+  //! Get the manual triggers of the closure Expr
+  std::vector< std::vector<Expr> > getTriggers() const;
+
+  // Get the expression manager.  The expression must be non-null.
+  ExprManager* getEM() const;
+
+  // Return a ref to the vector of children.
+  std::vector<Expr> getKids() const;
+
+  // Get the index field
+  ExprIndex getIndex() const;
+
+  // Return the number of children.  Note, that an application of a
+  // user-defined function has the arity of that function (the number
+  // of arguments), and the function name itself is part of the
+  // operator.
+  int arity() const;
+
+  // Return the ith child.  As with arity, it's also the ith argument
+  // in function application.
+  Expr operator[](int i) const;
+
+  //! Remove leading NOT if any
+  Expr unnegate() const;
+
+  // Check if Expr is not Null
+  bool isInitialized() const;
+
+  //! Get the type.  Recursively compute if necessary
+  Type getType() const;
+  //! Look up the current type. Do not recursively compute (i.e. may be NULL)
+  Type lookupType() const;
+
+  //! Pretty-print the expression
+  void pprint() const;
+  //! Pretty-print without dagifying
+  void pprintnodag() const;
+
+};/* class CVC3::Expr */
+
+bool isArrayLiteral(const Expr&) CVC4_PUBLIC;
+
+class CVC4_PUBLIC ExprManager : public CVC4::ExprManager {
+public:
+  std::string getKindName(int kind);
+  //! Get the input language for printing
+  InputLanguage getInputLang() const;
+  //! Get the output language for printing
+  InputLanguage getOutputLang() const;
+};/* class CVC3::ExprManager */
+
+typedef CVC4::Statistics Statistics;
+
+#define PRESENTATION_LANG ::CVC4::language::input::LANG_CVC4
+#define SMTLIB_LANG ::CVC4::language::input::LANG_SMTLIB_V1
+#define SMTLIB_V2_LANG ::CVC4::language::input::LANG_SMTLIB_V2
+#define TPTP_LANG ::CVC4::language::input::LANG_TPTP
+#define AST_LANG ::CVC4::language::input::LANG_AST
+
+/*****************************************************************************/
+/*
+ * Type for result of queries.  VALID and UNSATISFIABLE are treated as
+ * equivalent, as are SATISFIABLE and INVALID.
+ */
+/*****************************************************************************/
+typedef enum CVC4_PUBLIC QueryResult {
+  SATISFIABLE = 0,
+  INVALID = 0,
+  VALID = 1,
+  UNSATISFIABLE = 1,
+  ABORT,
+  UNKNOWN
+} QueryResult;
+
+std::ostream& operator<<(std::ostream& out, QueryResult qr);
+std::string QueryResultToString(QueryResult query_result);
+
+/*****************************************************************************/
+/*
+ * Type for truth value of formulas.
+ */
+/*****************************************************************************/
+typedef enum CVC4_PUBLIC FormulaValue {
+  TRUE_VAL,
+  FALSE_VAL,
+  UNKNOWN_VAL
+} FormulaValue;
+
+std::ostream& operator<<(std::ostream& out, FormulaValue fv) CVC4_PUBLIC;
+
+/*****************************************************************************/
+/*!
+ *\class ValidityChecker
+ *\brief CVC3 API (compatibility layer for CVC4)
+ *
+ * All terms and formulas are represented as expressions using the Expr class.
+ * The notion of a context is also important.  A context is a "background" set
+ * of formulas which are assumed to be true or false.  Formulas can be added to
+ * the context explicitly, using assertFormula, or they may be added as part of
+ * processing a query command.  At any time, the current set of formulas making
+ * up the context can be retrieved using getAssumptions.
+ */
+/*****************************************************************************/
+class CVC4_PUBLIC ValidityChecker {
+
+  CLFlags* d_clflags;
+  CVC4::Options d_options;
+  CVC3::ExprManager* d_em;
+  std::map<CVC4::ExprManager*, CVC4::ExprManagerMapCollection> d_emmc;
+  std::set<ValidityChecker*> d_reverseEmmc;
+  CVC4::SmtEngine* d_smt;
+  CVC4::parser::Parser* d_parserContext;
+  std::vector<Expr> d_exprTypeMapRemove;
+  unsigned d_stackLevel;
+
+  friend class Type; // to reach in to d_exprTypeMapRemove
+
+  typedef std::hash_map<std::string, const CVC4::Datatype*, CVC4::StringHashFunction> ConstructorMap;
+  typedef std::hash_map<std::string, std::pair<const CVC4::Datatype*, std::string>, CVC4::StringHashFunction> SelectorMap;
+
+  ConstructorMap d_constructors;
+  SelectorMap d_selectors;
+
+  ValidityChecker(const CLFlags& clflags);
+
+  void setUpOptions(CVC4::Options& options, const CLFlags& clflags);
+
+  // helper function for bitvectors
+  Expr bvpad(int len, const Expr& e);
+
+public:
+  //! Constructor
+  ValidityChecker();
+  //! Destructor
+  virtual ~ValidityChecker();
+
+  //! Return the set of command-line flags
+  /*!  The flags are returned by reference, and if modified, will have an
+    immediate effect on the subsequent commands.  Note that not all flags will
+    have such an effect; some flags are used only at initialization time (like
+    "sat"), and therefore, will not take effect if modified after
+    ValidityChecker is created.
+  */
+  virtual CLFlags& getFlags() const;
+  //! Force reprocessing of all flags
+  virtual void reprocessFlags();
+
+  /***************************************************************************/
+  /*
+   * Static methods
+   */
+  /***************************************************************************/
+
+  //! Create the set of command line flags with default values;
+  /*!
+    \return the set of flags by value
+  */
+  static CLFlags createFlags();
+  //! Create an instance of ValidityChecker
+  /*!
+    \param flags is the set of command line flags.
+  */
+  static ValidityChecker* create(const CLFlags& flags);
+  //! Create an instance of ValidityChecker using default flag values.
+  static ValidityChecker* create();
+
+  /***************************************************************************/
+  /*!
+   *\name Type-related methods
+   * Methods for creating and looking up types
+   *\sa class Type
+   *@{
+   */
+  /***************************************************************************/
+
+  // Basic types
+  virtual Type boolType(); //!< Create type BOOLEAN
+
+  virtual Type realType(); //!< Create type REAL
+
+  virtual Type intType(); //!< Create type INT
+
+  //! Create a subrange type [l..r]
+  /*! l and r can be Null; l=Null represents minus infinity, r=Null is
+   * plus infinity.
+   */
+  virtual Type subrangeType(const Expr& l, const Expr& r);
+
+  //! Creates a subtype defined by the given predicate
+  /*!
+   * \param pred is a predicate taking one argument of type T and returning
+   * Boolean.  The resulting type is a subtype of T whose elements x are those
+   * satisfying the predicate pred(x).
+   *
+   * \param witness is an expression of type T for which pred holds (if a Null
+   *  expression is passed as a witness, cvc will try to prove \f$\exists x. pred(x))\f$.
+   *  if the witness check fails, a TypecheckException is thrown.
+   */
+  virtual Type subtypeType(const Expr& pred, const Expr& witness);
+
+  // Tuple types
+  //! 2-element tuple
+  virtual Type tupleType(const Type& type0, const Type& type1);
+
+  //! 3-element tuple
+  virtual Type tupleType(const Type& type0, const Type& type1,
+			 const Type& type2);
+  //! n-element tuple (from a vector of types)
+  virtual Type tupleType(const std::vector<Type>& types);
+
+  // Record types
+  //! 1-element record
+  virtual Type recordType(const std::string& field, const Type& type);
+
+  //! 2-element record
+  /*! Fields will be sorted automatically */
+  virtual Type recordType(const std::string& field0, const Type& type0,
+			  const std::string& field1, const Type& type1);
+  //! 3-element record
+  /*! Fields will be sorted automatically */
+  virtual Type recordType(const std::string& field0, const Type& type0,
+			  const std::string& field1, const Type& type1,
+			  const std::string& field2, const Type& type2);
+  //! n-element record (fields and types must be of the same length)
+  /*! Fields will be sorted automatically */
+  virtual Type recordType(const std::vector<std::string>& fields,
+			  const std::vector<Type>& types);
+
+  // Datatypes
+
+  //! Single datatype, single constructor
+  /*! The types are either type exressions (obtained from a type with
+   *  getExpr()) or string expressions containing the name of (one of) the
+   *  dataType(s) being defined. */
+  virtual Type dataType(const std::string& name,
+                        const std::string& constructor,
+                        const std::vector<std::string>& selectors,
+                        const std::vector<Expr>& types);
+
+  //! Single datatype, multiple constructors
+  /*! The types are either type exressions (obtained from a type with
+   *  getExpr()) or string expressions containing the name of (one of) the
+   *  dataType(s) being defined. */
+  virtual Type dataType(const std::string& name,
+                        const std::vector<std::string>& constructors,
+                        const std::vector<std::vector<std::string> >& selectors,
+                        const std::vector<std::vector<Expr> >& types);
+
+  //! Multiple datatypes
+  /*! The types are either type exressions (obtained from a type with
+   *  getExpr()) or string expressions containing the name of (one of) the
+   *  dataType(s) being defined. */
+  virtual void dataType(const std::vector<std::string>& names,
+                        const std::vector<std::vector<std::string> >& constructors,
+                        const std::vector<std::vector<std::vector<std::string> > >& selectors,
+                        const std::vector<std::vector<std::vector<Expr> > >& types,
+                        std::vector<Type>& returnTypes);
+
+  //! Create an array type (ARRAY typeIndex OF typeData)
+  virtual Type arrayType(const Type& typeIndex, const Type& typeData);
+
+  //! Create a bitvector type of length n
+  virtual Type bitvecType(int n);
+
+  //! Create a function type typeDom -> typeRan
+  virtual Type funType(const Type& typeDom, const Type& typeRan);
+
+  //! Create a function type (t1,t2,...,tn) -> typeRan
+  virtual Type funType(const std::vector<Type>& typeDom, const Type& typeRan);
+
+  //! Create named user-defined uninterpreted type
+  virtual Type createType(const std::string& typeName);
+
+  //! Create named user-defined interpreted type (type abbreviation)
+  virtual Type createType(const std::string& typeName, const Type& def);
+
+  //! Lookup a user-defined (uninterpreted) type by name.  Returns Null if none.
+  virtual Type lookupType(const std::string& typeName);
+
+  /*@}*/ // End of Type-related methods
+
+  /***************************************************************************/
+  /*!
+   *\name General Expr methods
+   *\sa class Expr
+   *\sa class ExprManager
+   *@{
+   */
+  /***************************************************************************/
+
+  //! Return the ExprManager
+  virtual ExprManager* getEM();
+
+  //! Create a variable with a given name and type
+  /*!
+    \param name is the name of the variable
+    \param type is its type.  The type cannot be a function type.
+    \return an Expr representation of a new variable
+   */
+  virtual Expr varExpr(const std::string& name, const Type& type);
+
+  //! Create a variable with a given name, type, and value
+  virtual Expr varExpr(const std::string& name, const Type& type,
+		       const Expr& def);
+
+  //! Get the variable associated with a name, and its type
+  /*!
+    \param name is the variable name
+    \param type is where the type value is returned
+
+    \return a variable by the name. If there is no such Expr, a NULL \
+    Expr is returned.
+  */
+  virtual Expr lookupVar(const std::string& name, Type* type);
+
+  //! Get the type of the Expr.
+  virtual Type getType(const Expr& e);
+
+  //! Get the largest supertype of the Expr.
+  virtual Type getBaseType(const Expr& e);
+
+  //! Get the largest supertype of the Type.
+  virtual Type getBaseType(const Type& t);
+
+  //! Get the subtype predicate
+  virtual Expr getTypePred(const Type&t, const Expr& e);
+
+  //! Create a string Expr
+  virtual Expr stringExpr(const std::string& str);
+
+  //! Create an ID Expr
+  virtual Expr idExpr(const std::string& name);
+
+  //! Create a list Expr
+  /*! Intermediate representation for DP-specific expressions.
+   *  Normally, the first element of the list is a string Expr
+   *  representing an operator, and the rest of the list are the
+   *  arguments.  For example,
+   *
+   *  kids.push_back(vc->stringExpr("PLUS"));
+   *  kids.push_back(x); // x and y are previously created Exprs
+   *  kids.push_back(y);
+   *  Expr lst = vc->listExpr(kids);
+   *
+   * Or, alternatively (using its overloaded version):
+   *
+   * Expr lst = vc->listExpr("PLUS", x, y);
+   *
+   * or
+   *
+   * vector<Expr> summands;
+   * summands.push_back(x); summands.push_back(y); ...
+   * Expr lst = vc->listExpr("PLUS", summands);
+   */
+  virtual Expr listExpr(const std::vector<Expr>& kids);
+
+  //! Overloaded version of listExpr with one argument
+  virtual Expr listExpr(const Expr& e1);
+
+  //! Overloaded version of listExpr with two arguments
+  virtual Expr listExpr(const Expr& e1, const Expr& e2);
+
+  //! Overloaded version of listExpr with three arguments
+  virtual Expr listExpr(const Expr& e1, const Expr& e2, const Expr& e3);
+
+  //! Overloaded version of listExpr with string operator and many arguments
+  virtual Expr listExpr(const std::string& op,
+			const std::vector<Expr>& kids);
+
+  //! Overloaded version of listExpr with string operator and one argument
+  virtual Expr listExpr(const std::string& op, const Expr& e1);
+
+  //! Overloaded version of listExpr with string operator and two arguments
+  virtual Expr listExpr(const std::string& op, const Expr& e1,
+			const Expr& e2);
+
+  //! Overloaded version of listExpr with string operator and three arguments
+  virtual Expr listExpr(const std::string& op, const Expr& e1,
+			const Expr& e2, const Expr& e3);
+
+  //! Prints e to the standard output
+  virtual void printExpr(const Expr& e);
+
+  //! Prints e to the given ostream
+  virtual void printExpr(const Expr& e, std::ostream& os);
+
+  //! Parse an expression using a Theory-specific parser
+  virtual Expr parseExpr(const Expr& e);
+
+  //! Parse a type expression using a Theory-specific parser
+  virtual Type parseType(const Expr& e);
+
+  //! Import the Expr from another instance of ValidityChecker
+  /*! When expressions need to be passed among several instances of
+   *  ValidityChecker, they need to be explicitly imported into the
+   *  corresponding instance using this method.  The return result is
+   *  an identical expression that belongs to the current instance of
+   *  ValidityChecker, and can be safely used as part of more complex
+   *  expressions from the same instance.
+   */
+  virtual Expr importExpr(const Expr& e);
+
+  //! Import the Type from another instance of ValidityChecker
+  /*! \sa getType() */
+  virtual Type importType(const Type& t);
+
+  //! Parse a sequence of commands from a presentation language string
+  virtual void cmdsFromString(const std::string& s,
+                              InputLanguage lang = PRESENTATION_LANG);
+
+  //! Parse an expression from a presentation language string
+  /*! Only PRESENTATION_LANG and SMTLIB_V2_LANG are supported. Any other
+   *  value for lang will raise an exception.
+   */
+  virtual Expr exprFromString(const std::string& e,
+                              InputLanguage lang = PRESENTATION_LANG);
+
+  /*@}*/ // End of General Expr Methods
+
+  /***************************************************************************/
+  /*!
+   *\name Core expression methods
+   * Methods for manipulating core expressions
+   *
+   * Except for equality and ite, the children provided as arguments must be of
+   * type Boolean.
+   *@{
+   */
+  /***************************************************************************/
+
+  //! Return TRUE Expr
+  virtual Expr trueExpr();
+
+  //! Return FALSE Expr
+  virtual Expr falseExpr();
+
+  //! Create negation
+  virtual Expr notExpr(const Expr& child);
+
+  //! Create 2-element conjunction
+  virtual Expr andExpr(const Expr& left, const Expr& right);
+
+  //! Create n-element conjunction
+  virtual Expr andExpr(const std::vector<Expr>& children);
+
+  //! Create 2-element disjunction
+  virtual Expr orExpr(const Expr& left, const Expr& right);
+
+  //! Create n-element disjunction
+  virtual Expr orExpr(const std::vector<Expr>& children);
+
+  //! Create Boolean implication
+  virtual Expr impliesExpr(const Expr& hyp, const Expr& conc);
+
+  //! Create left IFF right (boolean equivalence)
+  virtual Expr iffExpr(const Expr& left, const Expr& right);
+
+  //! Create an equality expression.
+  /*!
+    The two children must have the same type, and cannot be of type
+    Boolean.
+  */
+  virtual Expr eqExpr(const Expr& child0, const Expr& child1);
+
+  //! Create IF ifpart THEN thenpart ELSE elsepart ENDIF
+  /*!
+    \param ifpart must be of type Boolean.
+    \param thenpart and \param elsepart must have the same type, which will
+    also be the type of the ite expression.
+  */
+  virtual Expr iteExpr(const Expr& ifpart, const Expr& thenpart,
+		       const Expr& elsepart);
+
+  /**
+   * Create an expression asserting that all the children are different.
+   * @param children the children to be asserted different
+   */
+  virtual Expr distinctExpr(const std::vector<Expr>& children);
+
+  /*@}*/ // End of Core expression methods
+
+  /***************************************************************************/
+  /*!
+   *\name User-defined (uninterpreted) function methods
+   * Methods for manipulating uninterpreted function expressions
+   *@{
+   */
+  /***************************************************************************/
+
+  //! Create a named uninterpreted function with a given type
+  /*!
+    \param name is the new function's name (as ID Expr)
+    \param type is a function type ( [range -> domain] )
+  */
+  virtual Op createOp(const std::string& name, const Type& type);
+
+  //! Create a named user-defined function with a given type
+  virtual Op createOp(const std::string& name, const Type& type,
+		      const Expr& def);
+
+  //! Get the Op associated with a name, and its type
+  /*!
+    \param name is the operator name
+    \param type is where the type value is returned
+
+    \return an Op by the name. If there is no such Op, a NULL \
+    Op is returned.
+  */
+  virtual Op lookupOp(const std::string& name, Type* type);
+
+  //! Unary function application (op must be of function type)
+  virtual Expr funExpr(const Op& op, const Expr& child);
+
+  //! Binary function application (op must be of function type)
+  virtual Expr funExpr(const Op& op, const Expr& left, const Expr& right);
+
+  //! Ternary function application (op must be of function type)
+  virtual Expr funExpr(const Op& op, const Expr& child0,
+		       const Expr& child1, const Expr& child2);
+
+  //! n-ary function application (op must be of function type)
+  virtual Expr funExpr(const Op& op, const std::vector<Expr>& children);
+
+  /*@}*/ // End of User-defined (uninterpreted) function methods
+
+  /***************************************************************************/
+  /*!
+   *\name Arithmetic expression methods
+   * Methods for manipulating arithmetic expressions
+   *
+   * These functions create arithmetic expressions.  The children provided
+   * as arguments must be of type Real.
+   *@{
+   */
+  /***************************************************************************/
+
+  /*!
+   * Add the pair of variables to the variable ordering for aritmetic solving.
+   * Terms that are not arithmetic will be ignored.
+   * \param smaller the smaller variable
+   * \param bigger the bigger variable
+   */
+  virtual bool addPairToArithOrder(const Expr& smaller, const Expr& bigger);
+
+  //! Create a rational number with numerator n and denominator d.
+  /*!
+    \param n the numerator
+    \param d the denominator, cannot be 0.
+  */
+  virtual Expr ratExpr(int n, int d = 1);
+
+  //! Create a rational number with numerator n and denominator d.
+  /*!
+    Here n and d are given as strings.  They are converted to
+    arbitrary-precision integers according to the given base.
+  */
+  virtual Expr ratExpr(const std::string& n, const std::string& d, int base);
+
+  //! Create a rational from a single string.
+  /*!
+    \param n can be a string containing an integer, a pair of integers
+    "nnn/ddd", or a number in the fixed or floating point format.
+    \param base is the base in which to interpret the string.
+  */
+  virtual Expr ratExpr(const std::string& n, int base = 10);
+
+  //! Unary minus.
+  virtual Expr uminusExpr(const Expr& child);
+
+  //! Create 2-element sum (left + right)
+  virtual Expr plusExpr(const Expr& left, const Expr& right);
+
+  //! Create n-element sum
+  virtual Expr plusExpr(const std::vector<Expr>& children);
+
+  //! Make a difference (left - right)
+  virtual Expr minusExpr(const Expr& left, const Expr& right);
+
+  //! Create a product (left * right)
+  virtual Expr multExpr(const Expr& left, const Expr& right);
+
+  //! Create a power expression (x ^ n); n must be integer
+  virtual Expr powExpr(const Expr& x, const Expr& n);
+
+  //! Create expression x / y
+  virtual Expr divideExpr(const Expr& numerator, const Expr& denominator);
+
+  //! Create (left < right)
+  virtual Expr ltExpr(const Expr& left, const Expr& right);
+
+  //! Create (left <= right)
+  virtual Expr leExpr(const Expr& left, const Expr& right);
+
+  //! Create (left > right)
+  virtual Expr gtExpr(const Expr& left, const Expr& right);
+
+  //! Create (left >= right)
+  virtual Expr geExpr(const Expr& left, const Expr& right);
+
+  /*@}*/ // End of Arithmetic expression methods
+
+  /***************************************************************************/
+  /*!
+   *\name Record expression methods
+   * Methods for manipulating record expressions
+   *@{
+   */
+  /***************************************************************************/
+
+  //! Create a 1-element record value (# field := expr #)
+  /*! Fields will be sorted automatically */
+  virtual Expr recordExpr(const std::string& field, const Expr& expr);
+
+  //! Create a 2-element record value (# field0 := expr0, field1 := expr1 #)
+  /*! Fields will be sorted automatically */
+  virtual Expr recordExpr(const std::string& field0, const Expr& expr0,
+			  const std::string& field1, const Expr& expr1);
+
+  //! Create a 3-element record value (# field_i := expr_i #)
+  /*! Fields will be sorted automatically */
+  virtual Expr recordExpr(const std::string& field0, const Expr& expr0,
+			  const std::string& field1, const Expr& expr1,
+			  const std::string& field2, const Expr& expr2);
+
+  //! Create an n-element record value (# field_i := expr_i #)
+  /*!
+   * \param fields
+   * \param exprs must be the same length as fields
+   *
+   * Fields will be sorted automatically
+   */
+  virtual Expr recordExpr(const std::vector<std::string>& fields,
+			  const std::vector<Expr>& exprs);
+
+  //! Create record.field (field selection)
+  /*! Create an expression representing the selection of a field from
+    a record. */
+  virtual Expr recSelectExpr(const Expr& record, const std::string& field);
+
+  //! Record update; equivalent to "record WITH .field := newValue"
+  /*! Notice the `.' before field in the presentation language (and
+    the comment above); this is to distinguish it from datatype
+    update.
+  */
+  virtual Expr recUpdateExpr(const Expr& record, const std::string& field,
+			     const Expr& newValue);
+
+  /*@}*/ // End of Record expression methods
+
+  /***************************************************************************/
+  /*!
+   *\name Array expression methods
+   * Methods for manipulating array expressions
+   *@{
+   */
+  /***************************************************************************/
+
+  //! Create an expression array[index] (array access)
+  /*! Create an expression for the value of array at the given index */
+  virtual Expr readExpr(const Expr& array, const Expr& index);
+
+  //! Array update; equivalent to "array WITH index := newValue"
+  virtual Expr writeExpr(const Expr& array, const Expr& index,
+			 const Expr& newValue);
+
+  /*@}*/ // End of Array expression methods
+
+  /***************************************************************************/
+  /*!
+   *\name Bitvector expression methods
+   * Methods for manipulating bitvector expressions
+   *@{
+   */
+  /***************************************************************************/
+
+  // Bitvector constants
+  // From a string of digits in a given base
+  virtual Expr newBVConstExpr(const std::string& s, int base = 2);
+  // From a vector of bools
+  virtual Expr newBVConstExpr(const std::vector<bool>& bits);
+  // From a rational: bitvector is of length 'len', or the min. needed length when len=0.
+  virtual Expr newBVConstExpr(const Rational& r, int len = 0);
+
+  // Concat and extract
+  virtual Expr newConcatExpr(const Expr& t1, const Expr& t2);
+  virtual Expr newConcatExpr(const std::vector<Expr>& kids);
+  virtual Expr newBVExtractExpr(const Expr& e, int hi, int low);
+
+  // Bitwise Boolean operators: Negation, And, Nand, Or, Nor, Xor, Xnor
+  virtual Expr newBVNegExpr(const Expr& t1);
+
+  virtual Expr newBVAndExpr(const Expr& t1, const Expr& t2);
+  virtual Expr newBVAndExpr(const std::vector<Expr>& kids);
+
+  virtual Expr newBVOrExpr(const Expr& t1, const Expr& t2);
+  virtual Expr newBVOrExpr(const std::vector<Expr>& kids);
+
+  virtual Expr newBVXorExpr(const Expr& t1, const Expr& t2);
+  virtual Expr newBVXorExpr(const std::vector<Expr>& kids);
+
+  virtual Expr newBVXnorExpr(const Expr& t1, const Expr& t2);
+  virtual Expr newBVXnorExpr(const std::vector<Expr>& kids);
+
+  virtual Expr newBVNandExpr(const Expr& t1, const Expr& t2);
+  virtual Expr newBVNorExpr(const Expr& t1, const Expr& t2);
+  virtual Expr newBVCompExpr(const Expr& t1, const Expr& t2);
+
+  // Unsigned bitvector inequalities
+  virtual Expr newBVLTExpr(const Expr& t1, const Expr& t2);
+  virtual Expr newBVLEExpr(const Expr& t1, const Expr& t2);
+
+  // Signed bitvector inequalities
+  virtual Expr newBVSLTExpr(const Expr& t1, const Expr& t2);
+  virtual Expr newBVSLEExpr(const Expr& t1, const Expr& t2);
+
+  // Sign-extend t1 to a total of len bits
+  virtual Expr newSXExpr(const Expr& t1, int len);
+
+  // Bitvector arithmetic: unary minus, plus, subtract, multiply
+  virtual Expr newBVUminusExpr(const Expr& t1);
+  virtual Expr newBVSubExpr(const Expr& t1, const Expr& t2);
+  //! 'numbits' is the number of bits in the result
+  virtual Expr newBVPlusExpr(int numbits, const std::vector<Expr>& k);
+  virtual Expr newBVPlusExpr(int numbits, const Expr& t1, const Expr& t2);
+  virtual Expr newBVMultExpr(int numbits,
+                             const Expr& t1, const Expr& t2);
+
+  virtual Expr newBVUDivExpr(const Expr& t1, const Expr& t2);
+  virtual Expr newBVURemExpr(const Expr& t1, const Expr& t2);
+  virtual Expr newBVSDivExpr(const Expr& t1, const Expr& t2);
+  virtual Expr newBVSRemExpr(const Expr& t1, const Expr& t2);
+  virtual Expr newBVSModExpr(const Expr& t1, const Expr& t2);
+
+  // Left shift by r bits: result is old size + r bits
+  virtual Expr newFixedLeftShiftExpr(const Expr& t1, int r);
+  // Left shift by r bits: result is same size as t1
+  virtual Expr newFixedConstWidthLeftShiftExpr(const Expr& t1, int r);
+  // Logical right shift by r bits: result is same size as t1
+  virtual Expr newFixedRightShiftExpr(const Expr& t1, int r);
+  // Left shift with shift parameter an arbitrary bit-vector expr
+  virtual Expr newBVSHL(const Expr& t1, const Expr& t2);
+  // Logical right shift with shift parameter an arbitrary bit-vector expr
+  virtual Expr newBVLSHR(const Expr& t1, const Expr& t2);
+  // Arithmetic right shift with shift parameter an arbitrary bit-vector expr
+  virtual Expr newBVASHR(const Expr& t1, const Expr& t2);
+  // Get value of BV Constant
+  virtual Rational computeBVConst(const Expr& e);
+
+  /*@}*/ // End of Bitvector expression methods
+
+  /***************************************************************************/
+  /*!
+   *\name Other expression methods
+   * Methods for manipulating other kinds of expressions
+   *@{
+   */
+  /***************************************************************************/
+
+  //! Tuple expression
+  virtual Expr tupleExpr(const std::vector<Expr>& exprs);
+
+  //! Tuple select; equivalent to "tuple.n", where n is an numeral (e.g. tup.5)
+  virtual Expr tupleSelectExpr(const Expr& tuple, int index);
+
+  //! Tuple update; equivalent to "tuple WITH index := newValue"
+  virtual Expr tupleUpdateExpr(const Expr& tuple, int index,
+			       const Expr& newValue);
+
+  //! Datatype constructor expression
+  virtual Expr datatypeConsExpr(const std::string& constructor, const std::vector<Expr>& args);
+
+  //! Datatype selector expression
+  virtual Expr datatypeSelExpr(const std::string& selector, const Expr& arg);
+
+  //! Datatype tester expression
+  virtual Expr datatypeTestExpr(const std::string& constructor, const Expr& arg);
+
+  //! Create a bound variable with a given name, unique ID (uid) and type
+  /*!
+    \param name is the name of the variable
+    \param uid is the unique ID (a string), which must be unique for
+    each variable
+    \param type is its type.  The type cannot be a function type.
+    \return an Expr representation of a new variable
+   */
+  virtual Expr boundVarExpr(const std::string& name,
+			    const std::string& uid,
+			    const Type& type);
+
+  //! Universal quantifier
+  virtual Expr forallExpr(const std::vector<Expr>& vars, const Expr& body);
+  //! Universal quantifier with a trigger
+  virtual Expr forallExpr(const std::vector<Expr>& vars, const Expr& body, 
+                          const Expr& trigger);
+  //! Universal quantifier with a set of triggers.
+  virtual Expr forallExpr(const std::vector<Expr>& vars, const Expr& body,
+                          const std::vector<Expr>& triggers);
+  //! Universal quantifier with a set of multi-triggers.
+  virtual Expr forallExpr(const std::vector<Expr>& vars, const Expr& body,
+			  const std::vector<std::vector<Expr> >& triggers);
+
+  //! Set triggers for quantifier instantiation
+  /*!
+   * \param e the expression for which triggers are being set.
+   * \param triggers Each item in triggers is a vector of Expr containing one
+   * or more patterns.  A pattern is a term or Atomic predicate sub-expression
+   * of e.  A vector containing more than one pattern is treated as a
+   * multi-trigger.  Patterns will be matched in the order they occur in
+   * the vector.
+  */
+  virtual void setTriggers(const Expr& e, const std::vector<std::vector<Expr> > & triggers);
+  //! Set triggers for quantifier instantiation (no multi-triggers)
+  virtual void setTriggers(const Expr& e, const std::vector<Expr>& triggers);
+  //! Set a single trigger for quantifier instantiation
+  virtual void setTrigger(const Expr& e, const Expr& trigger);
+  //! Set a single multi-trigger for quantifier instantiation
+  virtual void setMultiTrigger(const Expr& e, const std::vector<Expr>& multiTrigger);
+
+  //! Existential quantifier
+  virtual Expr existsExpr(const std::vector<Expr>& vars, const Expr& body);
+
+  //! Lambda-expression
+  virtual Op lambdaExpr(const std::vector<Expr>& vars, const Expr& body);
+
+  //! Transitive closure of a binary predicate
+  virtual Op transClosure(const Op& op);
+
+  //! Symbolic simulation expression
+  /*!
+   * \param f is the next state function (LAMBDA-expression)
+   * \param s0 is the initial state
+   * \param inputs is the vector of LAMBDA-expressions representing
+   * the sequences of inputs to f
+   * \param n is a constant, the number of cycles to run the simulation.
+   */
+  virtual Expr simulateExpr(const Expr& f, const Expr& s0,
+			    const std::vector<Expr>& inputs,
+			    const Expr& n);
+
+  /*@}*/ // End of Other expression methods
+
+  /***************************************************************************/
+  /*!
+   *\name Validity checking methods
+   * Methods related to validity checking
+   *
+   * This group includes methods for asserting formulas, checking
+   * validity in the given logical context, manipulating the scope
+   * level of the context, etc.
+   *@{
+   */
+  /***************************************************************************/
+
+  //! Set the resource limit (0==unlimited, 1==exhausted).
+  /*! Currently, the limit is the total number of processed facts. */
+  virtual void setResourceLimit(unsigned limit);
+
+  //! Set a time limit in tenth of a second,
+  /*! counting the cpu time used by the current process from now on.
+   *  Currently, when the limit is reached, cvc3 tries to quickly
+   *  terminate, probably with the status unknown.
+   */
+  virtual void setTimeLimit(unsigned limit);
+
+  //! Assert a new formula in the current context.
+  /*! This creates the assumption e |- e.  The formula must have Boolean type.
+  */
+  virtual void assertFormula(const Expr& e);
+
+  //! Register an atomic formula of interest.
+  /*! Registered atoms are tracked by the decision procedures.  If one of them
+      is deduced to be true or false, it is added to a list of implied literals.
+      Implied literals can be retrieved with the getImpliedLiteral function */
+  virtual void registerAtom(const Expr& e);
+
+  //! Return next literal implied by last assertion.  Null Expr if none.
+  /*! Returned literals are either registered atomic formulas or their negation
+   */
+  virtual Expr getImpliedLiteral();
+
+  //! Simplify e with respect to the current context
+  virtual Expr simplify(const Expr& e);
+
+  //! Check validity of e in the current context.
+  /*! If it returns VALID, the scope and context are the same
+   *  as when called.  If it returns INVALID, the context will be one which
+   *  falsifies the query.  If it returns UNKNOWN, the context will falsify the
+   *  query, but the context may be inconsistent.  Finally, if it returns
+   *  ABORT, the context will be one which satisfies as much as possible.
+   *
+   *  \param e is the queried formula
+   */
+  virtual QueryResult query(const Expr& e);
+
+  //! Check satisfiability of the expr in the current context.
+  /*! Equivalent to query(!e) */
+  virtual QueryResult checkUnsat(const Expr& e);
+
+  //! Get the next model
+  /*! This method should only be called after a query which returns
+    INVALID.  Its return values are as for query(). */
+  virtual QueryResult checkContinue();
+
+  //! Restart the most recent query with e as an additional assertion.
+  /*! This method should only be called after a query which returns
+    INVALID.  Its return values are as for query(). */
+  virtual QueryResult restart(const Expr& e);
+
+  //! Returns to context immediately before last invalid query.
+  /*! This method should only be called after a query which returns false.
+   */
+  virtual void returnFromCheck();
+
+  //! Get assumptions made by the user in this and all previous contexts.
+  /*! User assumptions are created either by calls to assertFormula or by a
+   * call to query.  In the latter case, the negated query is added as an
+   * assumption.
+   * \param assumptions should be empty on entry.
+  */
+  virtual void getUserAssumptions(std::vector<Expr>& assumptions);
+
+  //! Get assumptions made internally in this and all previous contexts.
+  /*! Internal assumptions are literals assumed by the sat solver.
+   * \param assumptions should be empty on entry.
+  */
+  virtual void getInternalAssumptions(std::vector<Expr>& assumptions);
+
+  //! Get all assumptions made in this and all previous contexts.
+  /*! \param assumptions should be empty on entry.
+  */
+  virtual void getAssumptions(std::vector<Expr>& assumptions);
+
+  //! Returns the set of assumptions used in the proof of queried formula.
+  /*! It returns a subset of getAssumptions().  If the last query was false
+   *  or there has not yet been a query, it does nothing.
+   *  NOTE: this functionality is not supported yet
+   *  \param assumptions should be empty on entry.
+  */
+  virtual void getAssumptionsUsed(std::vector<Expr>& assumptions);
+
+  virtual Expr getProofQuery();
+
+
+  //! Return the internal assumptions that make the queried formula false.
+  /*! This method should only be called after a query which returns
+    false.  It will try to return the simplest possible subset of
+    the internal assumptions sufficient to make the queried expression
+    false.
+    \param assumptions should be empty on entry.
+    \param inOrder if true, returns the assumptions in the order they
+    were made.  This is slightly more expensive than inOrder = false.
+  */
+  virtual void getCounterExample(std::vector<Expr>& assumptions,
+                                 bool inOrder=true);
+
+  //! Will assign concrete values to all user created variables
+  /*! This function should only be called after a query which return false.
+  */
+  virtual void getConcreteModel(ExprMap<Expr> & m);
+
+  //! If the result of the last query was UNKNOWN try to actually build the model
+  //! to verify the result.
+  /*! This function should only be called after a query which return unknown.
+  */
+  virtual QueryResult tryModelGeneration();
+
+  //:ALEX: returns the current truth value of a formula
+  // returns UNKNOWN_VAL if e is not associated
+  // with a boolean variable in the SAT module,
+  // i.e. if its value can not determined without search.
+  virtual FormulaValue value(const Expr& e);
+
+  //! Returns true if the current context is inconsistent.
+  /*! Also returns a minimal set of assertions used to determine the
+   inconsistency.
+   \param assumptions should be empty on entry.
+  */
+  virtual bool inconsistent(std::vector<Expr>& assumptions);
+
+  //! Returns true if the current context is inconsistent.
+  virtual bool inconsistent();
+
+  //! Returns true if the invalid result from last query() is imprecise
+  /*!
+   * Some decision procedures in CVC are incomplete (quantifier
+   * elimination, non-linear arithmetic, etc.).  If any incomplete
+   * features were used during the last query(), and the result is
+   * "invalid" (query() returns false), then this result is
+   * inconclusive.  It means that the system gave up the search for
+   * contradiction at some point.
+   */
+  virtual bool incomplete();
+
+  //! Returns true if the invalid result from last query() is imprecise
+  /*!
+   * \sa incomplete()
+   *
+   * The argument is filled with the reasons for incompleteness (they
+   * are intended to be shown to the end user).
+   */
+  virtual bool incomplete(std::vector<std::string>& reasons);
+
+  //! Returns the proof term for the last proven query
+  /*! If there has not been a successful query, it should return a NULL proof
+  */
+  virtual Proof getProof();
+
+  //! Evaluate an expression and return a concrete value in the model
+  /*! If the last query was not invalid, should return NULL expr */
+  virtual Expr getValue(const Expr& e);
+
+  //! Returns the TCC of the last assumption or query
+  /*! Returns Null if no assumptions or queries were performed. */
+  virtual Expr getTCC();
+
+  //! Return the set of assumptions used in the proof of the last TCC
+  virtual void getAssumptionsTCC(std::vector<Expr>& assumptions);
+
+  //! Returns the proof of TCC of the last assumption or query
+  /*! Returns Null if no assumptions or queries were performed. */
+  virtual Proof getProofTCC();
+
+  //! After successful query, return its closure |- Gamma => phi
+  /*! Turn a valid query Gamma |- phi into an implication
+   * |- Gamma => phi.
+   *
+   * Returns Null if last query was invalid.
+   */
+  virtual Expr getClosure();
+
+  //! Construct a proof of the query closure |- Gamma => phi
+  /*! Returns Null if last query was Invalid. */
+  virtual Proof getProofClosure();
+
+  /*@}*/ // End of Validity checking methods
+
+  /***************************************************************************/
+  /*!
+   *\name Context methods
+   * Methods for manipulating contexts
+   *
+   * Contexts support stack-based push and pop.  There are two
+   * separate notions of the current context stack.  stackLevel(), push(),
+   * pop(), and popto() work with the user-level notion of the stack.
+   *
+   * scopeLevel(), pushScope(), popScope(), and poptoScope() work with
+   * the internal stack which is more fine-grained than the user
+   * stack.
+   *
+   * Do not use the scope methods unless you know what you are doing.
+   * *@{
+   */
+  /***************************************************************************/
+
+  //! Returns the current stack level.  Initial level is 0.
+  virtual int stackLevel();
+
+  //! Checkpoint the current context and increase the scope level
+  virtual void push();
+
+  //! Restore the current context to its state at the last checkpoint
+  virtual void pop();
+
+  //! Restore the current context to the given stackLevel.
+  /*!
+    \param stackLevel should be greater than or equal to 0 and less
+    than or equal to the current scope level.
+  */
+  virtual void popto(int stackLevel);
+
+  //! Returns the current scope level.  Initially, the scope level is 1.
+  virtual int scopeLevel();
+
+  /*! @brief Checkpoint the current context and increase the
+   * <strong>internal</strong> scope level.  Do not use unless you
+   * know what you're doing!
+   */
+  virtual void pushScope();
+
+  /*! @brief Restore the current context to its state at the last
+   * <strong>internal</strong> checkpoint.  Do not use unless you know
+   * what you're doing!
+   */
+  virtual void popScope();
+
+  //! Restore the current context to the given scopeLevel.
+  /*!
+    \param scopeLevel should be less than or equal to the current scope level.
+
+    If scopeLevel is less than 1, then the current context is reset
+    and the scope level is set to 1.
+  */
+  virtual void poptoScope(int scopeLevel);
+
+  //! Get the current context
+  virtual Context* getCurrentContext();
+
+  //! Destroy and recreate validity checker: resets everything except for flags
+  virtual void reset();
+
+  //! Add an annotation to the current script - prints annot when translating
+  virtual void logAnnotation(const Expr& annot);
+
+  /*@}*/ // End of Context methods
+
+  /***************************************************************************/
+  /*!
+   *\name Reading files
+   * Methods for reading external files
+   *@{
+   */
+  /***************************************************************************/
+
+  //! Read and execute the commands from a file given by name ("" means stdin)
+  virtual void loadFile(const std::string& fileName,
+			InputLanguage lang = PRESENTATION_LANG,
+			bool interactive = false,
+                        bool calledFromParser = false);
+
+  //! Read and execute the commands from a stream
+  virtual void loadFile(std::istream& is,
+			InputLanguage lang = PRESENTATION_LANG,
+			bool interactive = false);
+
+  /*@}*/ // End of methods for reading files
+
+  /***************************************************************************/
+  /*!
+   *\name Reporting Statistics
+   * Methods for collecting and reporting run-time statistics
+   *@{
+   */
+  /***************************************************************************/
+
+  //! Get statistics object
+  virtual Statistics getStatistics();
+
+  //! Print collected statistics to stdout
+  virtual void printStatistics();
+
+  /*@}*/ // End of Statistics Methods
+
+};/* class ValidityChecker */
+
+template <class T>
+void ExprHashMap<T>::insert(Expr a, Expr b) {
+  (*this)[a] = b;
+}
+
+// Comparison (the way that CVC3 does it)
+int compare(const Expr& e1, const Expr& e2);
+
+}/* CVC3 namespace */
+
+#endif /* _cvc3__include__vc_h_ */
+#endif /* __CVC4__CVC3_COMPAT_H */
diff --git a/src/context/backtrackable.h b/src/context/backtrackable.h
new file mode 100644
index 0000000..131fabd
--- /dev/null
+++ b/src/context/backtrackable.h
@@ -0,0 +1,222 @@
+/*********************                                                        */
+/*! \file backtrackable.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains a backtrackable list
+ **
+ ** Contains a backtrackable list.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__UTIL__BACKTRACKABLE_H
+#define __CVC4__UTIL__BACKTRACKABLE_H
+
+#include <cstdlib>
+#include <vector>
+#include "context/cdo.h"
+
+namespace CVC4 {
+
+template <class T> class List;
+template <class T> class List_iterator;
+template <class T> class Backtracker;
+
+template <class T>
+class ListNode {
+private:
+  T data;
+  ListNode<T>* next;
+
+  bool empty;
+  ListNode(const T& t, ListNode<T>* n, bool e = false) : data(t), next(n), empty(e) {}
+  ~ListNode() {
+    // maybe set to NULL
+    delete next;
+  }
+
+  friend class List<T>;
+  friend class List_iterator<T>;
+};/* class ListNode<T> */
+
+template <class T>
+class List_iterator : public std::iterator <std::forward_iterator_tag, T> {
+  friend class List<T>;
+
+public:
+  const T& operator*();
+  List_iterator<T>& operator++();
+  List_iterator<T> operator++(int);
+  bool operator!=(const List_iterator<T> & other) const;
+
+private:
+  const ListNode<T>* pointee;
+  List_iterator(const ListNode<T>* p) : pointee(p) {}
+
+};/* class List_iterator<T> */
+
+template <class T>
+const T& List_iterator<T>::operator*() {
+  return pointee->data;
+}
+
+template <class T>
+List_iterator<T>& List_iterator<T>::operator++() {
+  Assert(pointee != NULL);
+  pointee = pointee->next;
+  while(pointee != NULL && pointee->empty ) {
+    pointee = pointee->next;
+  }
+  return *this;
+}
+
+template <class T>
+List_iterator<T> List_iterator<T>::operator++(int) {
+  List_iterator<T> it = *this;
+  ++*this;
+  return it;
+}
+
+template <class T>
+bool List_iterator<T>::operator!=(const List_iterator<T>& other) const {
+  return (this->pointee != other.pointee);
+}
+
+// !! for the backtracking to work the lists must be allocated on the heap
+// therefore the hashmap from TNode to List<TNode> should store pointers!
+template <class T>
+class List {
+  ListNode<T>* head;
+  ListNode<T>* tail;
+  ListNode<T>* ptr_to_head;
+  bool uninitialized;
+  Backtracker<T>* bck;
+  List (const List&) {}
+public:
+  List(Backtracker<T>* b) : ptr_to_head(NULL), uninitialized(true), bck(b) {
+    head = tail = (ListNode<T>*)calloc(1,sizeof(ListNode<T>));
+    head->next = NULL;
+    head->empty = true;
+  }
+  ~List() {delete head;}
+  bool empty() {
+    bck->checkConsistency();
+    return head == NULL;
+  }
+  void append(const T& d);
+  //typedef List_iterator<T> iterator;
+  typedef List_iterator<T> const_iterator;
+
+  const_iterator begin() {
+    bck->checkConsistency();
+    if(head->empty) {
+      ListNode<T>* temp = head;
+      // if the head is empty return the first non-empty element or NULL
+      while(temp != NULL && temp->empty ) {
+        temp = temp->next;
+      }
+      return List_iterator<T>(temp);
+    }
+    return List_iterator<T>(head);
+  }
+
+  const_iterator end() {
+    bck->checkConsistency();
+    return List_iterator<T>(NULL);
+  }
+  void concat(List<T>* other);
+  void unconcat(List<T>* other);
+};/* class List */
+
+template <class T>
+void List<T>::append (const T& d) {
+  bck->checkConsistency();
+
+  if(uninitialized) {
+    new(head)ListNode<T> (d, head->next);
+    //head->data = d;
+    head->empty = false;
+    //Assert(tail == head); FIXME: do I need this because this list might be empty but append to another one
+    uninitialized = false;
+
+  } else {
+    ListNode<T>* new_node = new ListNode<T>(d, head);
+    head = new_node;
+  }
+
+  if(ptr_to_head != NULL) {
+    ptr_to_head->next = head;
+  }
+}
+
+template <class T>
+void List<T>::concat (List<T>* other) {
+  bck->checkConsistency();
+  bck->notifyConcat(this, other);
+  Assert(tail->next==NULL);
+  tail->next = other->head;
+  Assert(other->ptr_to_head == NULL);
+  other->ptr_to_head = tail;
+  tail = other->tail;
+}
+
+template <class T>
+void List<T>::unconcat(List<T>* other) {
+  // we do not need to check consistency since this is only called by the
+  // Backtracker when we are inconsistent
+  Assert(other->ptr_to_head != NULL);
+  other->ptr_to_head->next = NULL;
+  tail = other->ptr_to_head;
+  other->ptr_to_head = NULL;
+}
+
+/* Backtrackable Table */
+
+template <class T>
+class Backtracker {
+  friend class List<T>;
+  std::vector<std::pair<List<T>*,List<T>*> > undo_stack;
+
+  int curr_level;
+  context::CDO<int> pop_level;
+
+  void checkConsistency();
+  void notifyConcat(List<T>* a, List<T>* b);
+public:
+  Backtracker(context::Context* c) : undo_stack(), curr_level(0), pop_level(c, 0) {}
+  ~Backtracker() {}
+
+};/* class Backtrackable */
+
+template <class T>  void Backtracker<T>::notifyConcat(List<T>* a, List<T>* b) {
+  curr_level++;
+  pop_level.set(pop_level.get()+1);
+  undo_stack.push_back( std::make_pair(a, b));
+}
+
+template <class T> void Backtracker<T>::checkConsistency() {
+  if( curr_level == pop_level || pop_level == -1) {
+    return;
+  }
+  Assert(curr_level > pop_level);
+
+  while (curr_level > pop_level) {
+    curr_level--;
+    List<T>* l1 = undo_stack[curr_level].first;
+    List<T>* l2 = undo_stack[curr_level].second;
+    l1->unconcat(l2);
+    undo_stack.pop_back();
+  }
+  Assert(curr_level == pop_level);
+}
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__UTIL__BACKTRACKABLE_H */
diff --git a/src/context/cdchunk_list.h b/src/context/cdchunk_list.h
new file mode 100644
index 0000000..e75f4de
--- /dev/null
+++ b/src/context/cdchunk_list.h
@@ -0,0 +1,495 @@
+/*********************                                                        */
+/*! \file cdchunk_list.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Clark Barrett
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Context-dependent list class designed for use with a
+ ** context memory allocator.
+ **
+ ** Context-dependent list class designed for use with a context
+ ** memory allocator.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__CONTEXT__CDCHUNK_LIST_H
+#define __CVC4__CONTEXT__CDCHUNK_LIST_H
+
+#include <iterator>
+#include <memory>
+
+#include "base/cvc4_assert.h"
+#include "context/context.h"
+#include "context/context_mm.h"
+
+
+namespace CVC4 {
+namespace context {
+
+/**
+ * Generic context-dependent dynamic array.  Like the usual CDList<>,
+ * but allocates all memory from context memory.  Elements are kept in
+ * cascading "list segments."  Access to elements by operator[] is not O(1) but
+ * O(log n).  As with CDList<>, update is not permitted, only
+ * appending to the end of the list.
+ */
+template <class T>
+class CDChunkList : public ContextObj {
+public:
+
+  /** The value type with which this CDChunkList<> was instantiated. */
+  typedef T value_type;
+  /** The allocator type with which this CDChunkList<> was instantiated. */
+  typedef ContextMemoryAllocator<T> Allocator;
+
+protected:
+
+  static const size_t INITIAL_SEGMENT_SIZE = 10;
+  static const size_t INCREMENTAL_GROWTH_FACTOR = 2;
+
+  /**
+   * ListSegment is itself allocated in Context memory, but it is
+   * never updated; it serves as information about the d_list segment
+   * pointer it contains only.
+   */
+  class ListSegment {
+    ListSegment* d_nextSegment;
+    size_t d_segmentSize;
+    T* d_list;
+  public:
+    ListSegment() :
+      d_nextSegment(NULL),
+      d_segmentSize(0),
+      d_list(NULL) {
+    }
+    void initialize(T* list) {
+      Assert( d_nextSegment == NULL &&
+              d_segmentSize == 0 &&
+              d_list == NULL,
+              "Double-initialization of ListSegment not permitted" );
+      d_list = list;
+    }
+    void linkTo(ListSegment* nextSegment) {
+      Assert( d_nextSegment == NULL,
+              "Double-linking of ListSegment not permitted" );
+      d_nextSegment = nextSegment;
+    }
+    void cutLink() {
+      d_nextSegment = NULL;
+    }
+    ListSegment* getNextSegment() const { return d_nextSegment; }
+    size_t& size() { return d_segmentSize; }
+    size_t size() const { return d_segmentSize; }
+    const T* list() const { return d_list; }
+    T& operator[](size_t i) { return d_list[i]; }
+    const T& operator[](size_t i) const { return d_list[i]; }
+  };/* struct CDChunkList<T>::ListSegment */
+
+  /**
+   * The first segment of list memory.
+   */
+  ListSegment d_headSegment;
+
+  /**
+   * A pointer to the final segment of list memory.
+   */
+  ListSegment* d_tailSegment;
+
+  /**
+   * Whether to call the destructor when items are popped from the
+   * list.  True by default, but can be set to false by setting the
+   * second argument in the constructor to false.
+   */
+  bool d_callDestructor;
+
+  /**
+   * Number of objects in list across all segments.
+   */
+  size_t d_size;
+
+  /**
+   * Total allocated size across all segments.
+   */
+  size_t d_totalSizeAlloc;
+
+  /**
+   * Our allocator.
+   */
+  Allocator d_allocator;
+
+  /**
+   * Lightweight save object for CDChunkList<T, ContextMemoryAllocator<T> >.
+   */
+  struct CDChunkListSave : public ContextObj {
+    ListSegment* d_tail;
+    size_t d_tailSize, d_size, d_sizeAlloc;
+    CDChunkListSave(const CDChunkList<T>& list, ListSegment* tail,
+               size_t size, size_t sizeAlloc) :
+      ContextObj(list),
+      d_tail(tail),
+      d_tailSize(tail->size()),
+      d_size(size),
+      d_sizeAlloc(sizeAlloc) {
+    }
+    ~CDChunkListSave() {
+      this->destroy();
+    }
+    ContextObj* save(ContextMemoryManager* pCMM) {
+      // This type of object _is_ the save/restore object.  It isn't
+      // itself saved or restored.
+      Unreachable();
+    }
+    void restore(ContextObj* data) {
+      // This type of object _is_ the save/restore object.  It isn't
+      // itself saved or restored.
+      Unreachable();
+    }
+  };/* struct CDChunkList<T>::CDChunkListSave */
+
+  /**
+   * Private copy constructor undefined (no copy permitted).
+   */
+  CDChunkList(const CDChunkList<T>& l) CVC4_UNDEFINED;
+
+  /**
+   * Allocate the first list segment.
+   */
+  void allocateHeadSegment() {
+    Assert(d_headSegment.list() == NULL);
+    Assert(d_totalSizeAlloc == 0 && d_size == 0);
+
+    // Allocate an initial list if one does not yet exist
+    size_t newSize = INITIAL_SEGMENT_SIZE;
+    Debug("cdlist:cmm") << "initial grow of cdlist " << this
+                        << " level " << getContext()->getLevel()
+                        << " to " << newSize << std::endl;
+    if(newSize > d_allocator.max_size()) {
+      newSize = d_allocator.max_size();
+    }
+    T* newList = d_allocator.allocate(newSize);
+    if(newList == NULL) {
+      throw std::bad_alloc();
+    }
+    d_totalSizeAlloc = newSize;
+    d_headSegment.initialize(newList);
+  }
+
+  /**
+   * Allocate a new segment with more space.
+   * Throws bad_alloc if memory allocation fails.
+   */
+  void grow() {
+    Assert(d_totalSizeAlloc == d_size);
+
+    // Allocate a new segment
+    typedef typename Allocator::template rebind<ListSegment>::other
+      SegmentAllocator;
+    ContextMemoryManager* cmm = d_allocator.getCMM();
+    SegmentAllocator segAllocator = SegmentAllocator(cmm);
+    ListSegment* newSegment = segAllocator.allocate(1);
+    if(newSegment == NULL) {
+      throw std::bad_alloc();
+    }
+    segAllocator.construct(newSegment, ListSegment());
+    size_t newSize = INCREMENTAL_GROWTH_FACTOR * d_totalSizeAlloc;
+    if(newSize > d_allocator.max_size()) {
+      newSize = d_allocator.max_size();
+    }
+    T* newList = d_allocator.allocate(newSize);
+    Debug("cdlist:cmm") << "new segment of cdlistcontext " << this
+                        << " level " << getContext()->getLevel()
+                        << " to " << newSize
+                        << " (from " << d_tailSegment->list()
+                        << " to " << newList << ")" << std::endl;
+    if(newList == NULL) {
+      throw std::bad_alloc();
+    }
+    d_tailSegment->linkTo(newSegment);
+    d_tailSegment = newSegment;
+    d_tailSegment->initialize(newList);
+    d_totalSizeAlloc += newSize;
+  }
+
+  /**
+   * Implementation of mandatory ContextObj method save: simply copies the
+   * current size 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) CDChunkListSave(*this, d_tailSegment,
+                                            d_size, d_totalSizeAlloc);
+    Debug("cdlist:cmm") << "save " << this
+                        << " at level " << this->getContext()->getLevel()
+                        << " size at " << this->d_size
+                        << " totalSizeAlloc at " << this->d_totalSizeAlloc
+                        << " data:" << data << std::endl;
+    return data;
+  }
+
+  /**
+   * 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) {
+    CDChunkListSave* save = static_cast<CDChunkListSave*>(data);
+    Debug("cdlist:cmm") << "restore " << this
+                        << " level " << this->getContext()->getLevel()
+                        << " data == " << data
+                        << " call dtor == " << this->d_callDestructor
+                        << " d_tail == " << this->d_tailSegment << std::endl;
+    if(this->d_callDestructor) {
+      ListSegment* seg = &d_headSegment;
+      size_t i = save->d_size;
+      while(i >= seg->size()) {
+        i -= seg->size();
+        seg = seg->getNextSegment();
+      }
+      do {
+        while(i < seg->size()) {
+          this->d_allocator.destroy(&(*seg)[i++]);
+        }
+        i = 0;
+      } while((seg = seg->getNextSegment()) != NULL);
+    }
+
+    this->d_size = save->d_size;
+    this->d_tailSegment = save->d_tail;
+    this->d_tailSegment->size() = save->d_tailSize;
+    this->d_tailSegment->cutLink();
+    this->d_totalSizeAlloc = save->d_sizeAlloc;
+    Debug("cdlist:cmm") << "restore " << this
+                        << " level " << this->getContext()->getLevel()
+                        << " size back to " << this->d_size
+                        << " totalSizeAlloc at " << this->d_totalSizeAlloc
+                        << std::endl;
+  }
+
+public:
+
+  CDChunkList(Context* context, bool callDestructor, const Allocator& alloc) :
+    ContextObj(context),
+    d_headSegment(),
+    d_tailSegment(&d_headSegment),
+    d_callDestructor(callDestructor),
+    d_size(0),
+    d_totalSizeAlloc(0),
+    d_allocator(alloc) {
+    allocateHeadSegment();
+  }
+
+  CDChunkList(Context* context, bool callDestructor = true) :
+    ContextObj(context),
+    d_headSegment(),
+    d_tailSegment(&d_headSegment),
+    d_callDestructor(callDestructor),
+    d_size(0),
+    d_totalSizeAlloc(0),
+    d_allocator(Allocator(context->getCMM())) {
+    allocateHeadSegment();
+  }
+
+  CDChunkList(bool allocatedInCMM, Context* context, bool callDestructor,
+         const Allocator& alloc) :
+    ContextObj(allocatedInCMM, context),
+    d_headSegment(),
+    d_tailSegment(&d_headSegment),
+    d_callDestructor(callDestructor),
+    d_size(0),
+    d_totalSizeAlloc(0),
+    d_allocator(alloc) {
+    allocateHeadSegment();
+  }
+
+  CDChunkList(bool allocatedInCMM, Context* context, bool callDestructor = true) :
+    ContextObj(allocatedInCMM, context),
+    d_headSegment(),
+    d_tailSegment(&d_headSegment),
+    d_callDestructor(callDestructor),
+    d_size(0),
+    d_totalSizeAlloc(0),
+    d_allocator(Allocator(context->getCMM())) {
+    allocateHeadSegment();
+  }
+
+  /**
+   * Destructor: delete the list
+   */
+  ~CDChunkList() {
+    this->destroy();
+
+    if(this->d_callDestructor) {
+      for(ListSegment* segment = &d_headSegment;
+          segment != NULL;
+          segment = segment->getNextSegment()) {
+        for(size_t i = 0; i < segment->size(); ++i) {
+          this->d_allocator.destroy(&(*segment)[i]);
+        }
+      }
+    }
+  }
+
+  /**
+   * Return the current size of (i.e. valid number of objects in) the
+   * list.
+   */
+  size_t size() const {
+    return d_size;
+  }
+
+  /**
+   * Return true iff there are no valid objects in the list.
+   */
+  bool empty() const {
+    return d_size == 0;
+  }
+
+  /**
+   * Add an item to the end of the list.
+   */
+  void push_back(const T& data) {
+    Debug("cdlist:cmm") << "push_back " << this
+                        << " level " << getContext()->getLevel()
+                        << ": make-current, "
+                        << "d_list == " << d_tailSegment->list() << std::endl;
+    makeCurrent();
+
+    Debug("cdlist:cmm") << "push_back " << this
+                        << " level " << getContext()->getLevel()
+                        << ": grow? " << d_size
+                        << " size_alloc " << d_totalSizeAlloc
+                        << std::endl;
+
+    if(d_size == d_totalSizeAlloc) {
+      Debug("cdlist:cmm") << "push_back " << this
+                          << " " << getContext()->getLevel()
+                          << ": grow!\n";
+      grow();
+    }
+    Assert(d_size < d_totalSizeAlloc);
+
+    Debug("cdlist:cmm") << "push_back " << this
+                        << " " << getContext()->getLevel()
+                        << ": construct! at [" << d_size << "] == "
+                        << &(*d_tailSegment)[d_tailSegment->size()]
+                        << std::endl;
+    d_allocator.construct(&(*d_tailSegment)[d_tailSegment->size()], data);
+    Debug("cdlist:cmm") << "push_back " << this
+                        << " " << getContext()->getLevel()
+                        << ": done..." << std::endl;
+    ++d_tailSegment->size();
+    ++d_size;
+    Debug("cdlist:cmm") << "push_back " << this
+                        << " " << getContext()->getLevel()
+                        << ": size now " << d_size << std::endl;
+  }
+
+  /**
+   * Access to the ith item in the list in O(log n).
+   */
+  const T& operator[](size_t i) const {
+    Assert(i < d_size, "index out of bounds in CDChunkList::operator[]");
+    const ListSegment* seg = &d_headSegment;
+    while(i >= seg->size()) {
+      i -= seg->size();
+      seg = seg->getNextSegment();
+    }
+    return (*seg)[i];
+  }
+
+  /**
+   * Returns the most recent item added to the list.
+   */
+  const T& back() const {
+    Assert(d_size > 0, "CDChunkList::back() called on empty list");
+    return (*d_tailSegment)[d_tailSegment->size() - 1];
+  }
+
+  /**
+   * Iterator for CDChunkList class.  It has to be const because we don't
+   * allow items in the list to be changed.  It's a straightforward
+   * wrapper around a pointer.  Note that for efficiency, we implement
+   * only prefix increment and decrement.  Also note that it's OK to
+   * create an iterator from an empty, uninitialized list, as begin()
+   * and end() will have the same value (NULL).
+   */
+  class const_iterator {
+    const ListSegment* d_segment;
+    size_t d_index;
+
+    const_iterator(const ListSegment* segment, size_t i) :
+      d_segment(segment),
+      d_index(i) {
+    }
+
+    friend class CDChunkList<T>;
+
+  public:
+
+    typedef std::input_iterator_tag iterator_category;
+    typedef T value_type;
+    typedef std::ptrdiff_t difference_type;
+    typedef const T* pointer;
+    typedef const T& reference;
+
+    const_iterator() : d_segment(NULL), d_index(0) {}
+
+    inline bool operator==(const const_iterator& i) const {
+      return d_segment == i.d_segment && d_index == i.d_index;
+    }
+
+    inline bool operator!=(const const_iterator& i) const {
+      return !(*this == i);
+    }
+
+    inline const T& operator*() const {
+      return (*d_segment)[d_index];
+    }
+
+    /** Prefix increment */
+    const_iterator& operator++() {
+      if(++d_index >= d_segment->size()) {
+        d_segment = d_segment->getNextSegment();
+        d_index = 0;
+      }
+      return *this;
+    }
+
+    /** Postfix increment: returns new iterator with the old value. */
+    const_iterator operator++(int) {
+      const_iterator i = *this;
+      ++(*this);
+      return i;
+    }
+  };/* class CDChunkList<>::const_iterator */
+
+  /**
+   * Returns an iterator pointing to the first item in the list.
+   */
+  const_iterator begin() const {
+    // This looks curious, but we have to make sure that begin() == end()
+    // for an empty list, and begin() == (head,0) for a nonempty one.
+    // Since the segment spill-over is implemented in
+    // iterator::operator++(), let's reuse it. */
+    return ++const_iterator(&d_headSegment, -1);
+  }
+
+  /**
+   * Returns an iterator pointing one past the last item in the list.
+   */
+  const_iterator end() const {
+    return const_iterator(NULL, 0);
+  }
+};/* class CDChunkList<T, ContextMemoryAllocator<T> > */
+
+}/* CVC4::context namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__CONTEXT__CDCHUNK_LIST_H */
diff --git a/src/context/cddense_set.h b/src/context/cddense_set.h
new file mode 100644
index 0000000..edc5ea5
--- /dev/null
+++ b/src/context/cddense_set.h
@@ -0,0 +1,101 @@
+/*********************                                                        */
+/*! \file cddense_set.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This is an abstraction of a set of unsigned integers.
+ **
+ ** This is an abstraction of a set of unsigned integers.
+ ** This class is designed to provide constant time insertion, element_of,
+ ** and fast iteration. This is done by storing backing vectors of size greater than
+ ** the maximum key.
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <vector>
+
+#include "context/context.h"
+#include "context/cdlist_forward.h"
+#include "context/cdlist.h"
+
+#include "util/index.h"
+
+namespace CVC4 {
+namespace context {
+
+template <class CleanUp = DefaultCleanUp<Index> >
+class CDDenseSet {
+public:
+  typedef Index Element;
+
+private:
+
+  class RemoveIntCleanup {
+  private:
+    std::vector<bool>& d_set;
+
+    /**
+     * The CleanUp functor.
+     */
+    CleanUp d_cleanUp;
+  public:
+    RemoveIntCleanup(std::vector<bool>& set, const CleanUp& cleanup)
+      : d_set(set), d_cleanUp(cleanup)
+    {}
+
+    void operator()(Element* p){
+      d_cleanup(p);
+
+      ArithVar x = *p;
+      Assert(d_set[x]);
+      d_set[x] = false;
+    }
+  };
+
+  typedef CDList<Element, RemoveIntCleanup> ElementList;
+  ElementList d_list;
+
+  std::vector<bool> d_set;
+
+public:
+  typedef ElementList::const_iterator const_iterator;
+
+  CDDenseSet(context::Context* c, const CleanUp& cleanup = CleanUp())
+    : d_set(), d_list(c, true, RemoveIntCleanup(d_set, cleanup))
+  { }
+
+  /** This cannot be const as garbage collection is done lazily. */
+  bool contains(Element x) const{
+    if(x < d_set.size()){
+      return d_set[x];
+    }else{
+      return false;
+    }
+  }
+
+  void insert(Element x){
+    Assert(!contains(x));
+    if(x >= d_set.size()){
+      d_set.resize(x+1, false);
+    }
+    d_list.push_back(x);
+    d_set[x] = true;
+  }
+
+  const_iterator begin() const { return d_list.begin(); }
+  const_iterator end() const { return d_list.end(); }
+
+};/* class CDDenseSet<> */
+
+
+}/* CVC4::context namespace */
+}/* CVC4 namespace */
diff --git a/src/context/cdhashmap.h b/src/context/cdhashmap.h
new file mode 100644
index 0000000..0a6c400
--- /dev/null
+++ b/src/context/cdhashmap.h
@@ -0,0 +1,579 @@
+/*********************                                                        */
+/*! \file cdhashmap.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Context-dependent map class.
+ **
+ ** Context-dependent map class.  Generic templated class for a map
+ ** which must be saved and restored as contexts are pushed and
+ ** popped.  Requires that operator= be defined for the data class,
+ ** 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:
+ **
+ ** 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 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
+ **     threaded via CDOhash_map.{d_prev,d_next}.  CDOhash_maps are constructed
+ **     with a NULL d_map pointer, but then immediately call
+ **     makeCurrent() and set the d_map pointer back to the map.  At
+ **     context level 0, this doesn't lead to anything special.  In
+ **     higher context levels, this stores away a CDOhash_map with a NULL
+ **     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 CDHashMap, its
+ **     associated CDOhash_map calls makeCurrent(), then sets the new
+ **     value.  The save object is also a CDOhash_map (allocated in context
+ **     memory).
+ **
+ **     Now, CDOhash_maps disappear in a variety of ways.
+ **
+ **     First, you might pop beyond a "modification of the value"
+ **     scope level, requiring a re-association of the key to an old
+ **     value.  This is easy.  CDOhash_map::restore() does the work, and
+ **     the context memory of the save object is reclaimed as usual.
+ **
+ **     Second, you might pop beyond a "insert the key" scope level,
+ **     requiring that the key be completely removed from the map and
+ **     its CDOhash_map object memory freed.  Here, the CDOhash_map is restored
+ **     to a "NULL-map" state (see above), signaling it to remove
+ **     itself from the map completely and put itself on a "trash
+ **     list" for the map.
+ **
+ **     Third, you might obliterate() the key.  This calls the CDOhash_map
+ **     destructor, which calls destroy(), which does a successive
+ **     restore() until level 0.  If the key was in the map since
+ **     level 0, the restore() won't remove it, so in that case
+ **     obliterate() removes it from the map and frees the CDOhash_map's
+ **     memory.
+ **
+ **     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
+ **     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 CDHashMap.  This does exactly the
+ **     same as CDHashMap::~CDHashMap(), except that it doesn't call destroy()
+ **     on itself.
+ **
+ **     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()
+ **     calls destroy(), which restores as much as possible.  (Note,
+ **     though, that since objects placed on the trash have already
+ **     restored to the fullest extent possible, it does nothing.)
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__CONTEXT__CDHASHMAP_H
+#define __CVC4__CONTEXT__CDHASHMAP_H
+
+#include <ext/hash_map>
+#include <iterator>
+#include <vector>
+
+#include "base/cvc4_assert.h"
+#include "context/context.h"
+#include "context/cdhashmap_forward.h"
+
+namespace CVC4 {
+namespace context {
+
+// Auxiliary class: almost the same as CDO (see cdo.h)
+
+template <class Key, class Data, class HashFcn = __gnu_cxx::hash<Key> >
+class CDOhash_map : public ContextObj {
+  friend class CDHashMap<Key, Data, HashFcn>;
+
+  Key d_key;
+  Data d_data;
+  CDHashMap<Key, Data, HashFcn>* d_map;
+
+  /** never put this cdhashmapelement on the trash */
+  bool d_noTrash;
+
+  // Doubly-linked list for keeping track of elements in order of insertion
+  CDOhash_map* d_prev;
+  CDOhash_map* d_next;
+
+  virtual ContextObj* save(ContextMemoryManager* pCMM) {
+    return new(pCMM) CDOhash_map(*this);
+  }
+
+  virtual void restore(ContextObj* data) {
+    CDOhash_map* p = static_cast<CDOhash_map*>(data);
+    if(d_map != NULL) {
+      if(p->d_map == NULL) {
+        Assert(d_map->d_map.find(d_key) != d_map->d_map.end() &&
+               (*d_map->d_map.find(d_key)).second == this);
+        // no longer in map (popped beyond first level in which it was)
+        d_map->d_map.erase(d_key);
+        // If we call deleteSelf() here, it re-enters restore().  So,
+        // put it on a "trash heap" instead, for later deletion.
+        //
+        // FIXME multithreading
+        if(d_map->d_first == this) {
+          Debug("gc") << "remove first-elem " << this << " from map " << d_map << " with next-elem " << d_next << std::endl;
+          if(d_next == this) {
+            Assert(d_prev == this);
+            d_map->d_first = NULL;
+          } else {
+            d_map->d_first = d_next;
+          }
+        } else {
+          Debug("gc") << "remove nonfirst-elem " << this << " from map " << d_map << std::endl;
+        }
+        d_next->d_prev = d_prev;
+        d_prev->d_next = d_next;
+        if(d_noTrash) {
+          Debug("gc") << "CDHashMap<> no-trash " << this << std::endl;
+        } else {
+          Debug("gc") << "CDHashMap<> trash push_back " << this << std::endl;
+          //this->deleteSelf();
+          d_map->d_trash.push_back(this);
+        }
+      } else {
+        d_data = p->d_data;
+      }
+    }
+    // Explicitly call destructors for the key and the data as they will not
+    // otherwise get called.
+    p->d_key.~Key();
+    p->d_data.~Data();
+  }
+
+  /** ensure copy ctor is only called by us */
+  CDOhash_map(const CDOhash_map& other) :
+    ContextObj(other),
+    // don't need to save the key---and if we do we can get
+    // refcounts for Node keys messed up and leak memory
+    d_key(),
+    d_data(other.d_data),
+    d_map(other.d_map),
+    d_prev(NULL),
+    d_next(NULL) {
+  }
+  CDOhash_map& operator=(const CDOhash_map&) CVC4_UNDEFINED;
+
+public:
+
+  CDOhash_map(Context* context,
+         CDHashMap<Key, Data, HashFcn>* map,
+         const Key& key,
+         const Data& data,
+         bool atLevelZero = false,
+         bool allocatedInCMM = false) :
+    ContextObj(allocatedInCMM, context),
+    d_key(key),
+    d_data(),
+    d_map(NULL),
+    d_noTrash(allocatedInCMM) {
+
+    // untested, probably unsafe.
+    Assert(!(atLevelZero && allocatedInCMM));
+
+    if(atLevelZero) {
+      // "Initializing" map insertion: this entry will never be
+      // removed from the map, it's inserted at level 0 as an
+      // "initializing" element.  See
+      // CDHashMap<>::insertAtContextLevelZero().
+      d_data = data;
+    } else {
+      // Normal map insertion: first makeCurrent(), then set the data
+      // and then, later, the map.  Order is important; we can't
+      // initialize d_map in the constructor init list above, because
+      // we want the restore of d_map to NULL to signal us to remove
+      // the element from the map.
+
+      if(allocatedInCMM) {
+        // Force a save/restore point, even though the object is
+        // allocated here.  This is so that we can detect when the
+        // object falls out of the map (otherwise we wouldn't get it).
+        makeSaveRestorePoint();
+      }
+
+      set(data);
+    }
+    d_map = map;
+
+    CDOhash_map*& first = d_map->d_first;
+    if(first == NULL) {
+      first = d_next = d_prev = this;
+      Debug("gc") << "add first-elem " << this << " to map " << d_map << std::endl;
+    } else {
+      Debug("gc") << "add nonfirst-elem " << this << " to map " << d_map << " with first-elem " << first << "[" << first->d_prev << " " << first->d_next << std::endl;
+      d_prev = first->d_prev;
+      d_next = first;
+      d_prev->d_next = this;
+      first->d_prev = this;
+    }
+  }
+
+  ~CDOhash_map() {
+    destroy();
+  }
+
+  void set(const Data& data) {
+    makeCurrent();
+    d_data = data;
+  }
+
+  const Key& getKey() const {
+    return d_key;
+  }
+
+  const Data& get() const {
+    return d_data;
+  }
+
+  operator Data() {
+    return get();
+  }
+
+  const Data& operator=(const Data& data) {
+    set(data);
+    return data;
+  }
+
+  CDOhash_map* next() const {
+    if(d_next == d_map->d_first) {
+      return NULL;
+    } else {
+      return d_next;
+    }
+  }
+};/* class CDOhash_map<> */
+
+
+/**
+ * Generic templated class for a map which must be saved and restored
+ * as contexts are pushed and popped.  Requires that operator= be
+ * defined for the data class, and operator== for the key class.
+ */
+template <class Key, class Data, class HashFcn>
+class CDHashMap : public ContextObj {
+
+  typedef CDOhash_map<Key, Data, HashFcn> Element;
+  typedef __gnu_cxx::hash_map<Key, Element*, HashFcn> table_type;
+
+  friend class CDOhash_map<Key, Data, HashFcn>;
+
+  table_type d_map;
+
+  Element* d_first;
+  Context* d_context;
+
+  std::vector<Element*> d_trash;
+
+  // Nothing to save; the elements take care of themselves
+  virtual ContextObj* save(ContextMemoryManager* pCMM) {
+    Unreachable();
+  }
+
+  // Similarly, nothing to restore
+  virtual void restore(ContextObj* data) {
+    Unreachable();
+  }
+
+  void emptyTrash() {
+    //FIXME multithreading
+    for(typename std::vector<Element*>::iterator i = d_trash.begin();
+        i != d_trash.end();
+        ++i) {
+      Debug("gc") << "emptyTrash(): " << *i << std::endl;
+      (*i)->deleteSelf();
+    }
+    d_trash.clear();
+  }
+
+  // no copy or assignment
+  CDHashMap(const CDHashMap&) CVC4_UNDEFINED;
+  CDHashMap& operator=(const CDHashMap&) CVC4_UNDEFINED;
+
+public:
+
+  CDHashMap(Context* context) :
+    ContextObj(context),
+    d_map(),
+    d_first(NULL),
+    d_context(context),
+    d_trash() {
+  }
+
+  ~CDHashMap() {
+    Debug("gc") << "cdhashmap" << this
+                << " disappearing, destroying..." << std::endl;
+    destroy();
+    Debug("gc") << "cdhashmap" << this
+                << " disappearing, done destroying" << std::endl;
+
+    Debug("gc") << "cdhashmap" << this << " gone, emptying trash" << std::endl;
+    emptyTrash();
+    Debug("gc") << "done emptying trash for " << this << std::endl;
+
+    for(typename table_type::iterator i = d_map.begin();
+        i != d_map.end();
+        ++i) {
+      // mark it as being a destruction (short-circuit restore())
+      (*i).second->d_map = NULL;
+      if(!(*i).second->d_noTrash) {
+        (*i).second->deleteSelf();
+      }
+    }
+    d_map.clear();
+    d_first = NULL;
+
+    Assert(d_trash.empty());
+  }
+
+  void clear() throw(AssertionException) {
+    Debug("gc") << "clearing cdhashmap" << this << ", emptying trash" << std::endl;
+    emptyTrash();
+    Debug("gc") << "done emptying trash for " << this << std::endl;
+
+    for(typename table_type::iterator i = d_map.begin();
+        i != d_map.end();
+        ++i) {
+      // mark it as being a destruction (short-circuit restore())
+      (*i).second->d_map = NULL;
+      if(!(*i).second->d_noTrash) {
+        (*i).second->deleteSelf();
+      }
+    }
+    d_map.clear();
+    d_first = NULL;
+
+    Assert(d_trash.empty());
+  }
+
+  // The usual operators of map
+
+  size_t size() const {
+    return d_map.size();
+  }
+
+  bool empty() const {
+    return d_map.empty();
+  }
+
+  size_t count(const Key& k) const {
+    return d_map.count(k);
+  }
+
+  // If a key is not present, a new object is created and inserted
+  Element& operator[](const Key& k) {
+    emptyTrash();
+
+    typename table_type::iterator i = d_map.find(k);
+
+    Element* obj;
+    if(i == d_map.end()) {// create new object
+      obj = new(true) Element(d_context, this, k, Data());
+      d_map[k] = obj;
+    } else {
+      obj = (*i).second;
+    }
+    return *obj;
+  }
+
+  bool insert(const Key& k, const Data& d) {
+    emptyTrash();
+
+    typename table_type::iterator i = d_map.find(k);
+
+    if(i == d_map.end()) {// create new object
+      Element* obj = new(true) Element(d_context, this, k, d);
+      d_map[k] = obj;
+      return true;
+    } else {
+      (*i).second->set(d);
+      return false;
+    }
+  }
+
+  /**
+   * 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
+   * the object should have an "initializing" value v1 below context
+   * level L, and a "current" value v2 at context level L.  Then you
+   * can (assuming key k):
+   *
+   *   map.insertAtContextLevelZero(k, v1);
+   *   map.insert(k, v2);
+   *
+   * The justification for this "escape hatch" has to do with
+   * variables and assignments in theories (e.g., in arithmetic).
+   * Let's say you introduce a new variable x at some deep decision
+   * level (thanks to lazy registration, or a splitting lemma, or
+   * whatever).  x might be mapped to something, but for theory
+   * implementation simplicity shouldn't disappear from the map on
+   * backjump; rather, it can take another (legal) value, or a special
+   * value to indicate it needs to be recomputed.
+   *
+   * It is an error (checked via AlwaysAssert()) to
+   * insertAtContextLevelZero() a key that already is in the map.
+   */
+  void insertAtContextLevelZero(const Key& k, const Data& d) {
+    emptyTrash();
+
+    AlwaysAssert(d_map.find(k) == d_map.end());
+
+    Element* obj = new(true) Element(d_context, this, k, d,
+                                     true /* atLevelZero */);
+    d_map[k] = obj;
+  }
+
+  // FIXME: no erase(), too much hassle to implement efficiently...
+
+  /**
+   * "Obliterating" is kind of like erasing, except it's not
+   * backtrackable; the key is permanently removed from the map.
+   * (Naturally, it can be re-added as a new element.)
+   */
+  void obliterate(const Key& k) {
+    typename table_type::iterator i = d_map.find(k);
+    if(i != d_map.end()) {
+      Debug("gc") << "key " << k << " obliterated" << std::endl;
+      // Restore this object to level 0.  If it was inserted after level 0,
+      // nothing else to do as restore will put it in the trash.
+      (*i).second->destroy();
+
+      // Check if object was inserted at level 0: in that case, still have
+      // to do some work.
+      typename table_type::iterator j = d_map.find(k);
+      if(j != d_map.end()) {
+        Element* elt = (*j).second;
+        if(d_first == elt) {
+          if(elt->d_next == elt) {
+            Assert(elt->d_prev == elt);
+            d_first = NULL;
+          } else {
+            d_first = elt->d_next;
+          }
+        }
+        elt->d_prev->d_next = elt->d_next;
+        elt->d_next->d_prev = elt->d_prev;
+        d_map.erase(j);//FIXME multithreading
+        Debug("gc") << "key " << k << " obliterated zero-scope: " << elt << std::endl;
+        if(!elt->d_noTrash) {
+          elt->deleteSelf();
+        }
+      }
+    }
+  }
+
+  class iterator {
+    const Element* d_it;
+
+  public:
+
+    iterator(const Element* p) : d_it(p) {}
+    iterator(const iterator& i) : d_it(i.d_it) {}
+
+    // Default constructor
+    iterator() {}
+
+    // (Dis)equality
+    bool operator==(const iterator& i) const {
+      return d_it == i.d_it;
+    }
+    bool operator!=(const iterator& i) const {
+      return d_it != i.d_it;
+    }
+
+    // Dereference operators.
+    std::pair<const Key, const Data> operator*() const {
+      return std::pair<const Key, const Data>(d_it->getKey(), d_it->get());
+    }
+
+    // Prefix increment
+    iterator& operator++() {
+      d_it = d_it->next();
+      return *this;
+    }
+
+    // Postfix increment: requires a Proxy object to hold the
+    // intermediate value for dereferencing
+    class Proxy {
+      const std::pair<const Key, Data>* d_pair;
+
+    public:
+
+      Proxy(const std::pair<const Key, Data>& p) : d_pair(&p) {}
+
+      const std::pair<const Key, Data>& operator*() const {
+        return *d_pair;
+      }
+    };/* class CDHashMap<>::iterator::Proxy */
+
+    // Actual postfix increment: returns Proxy with the old value.
+    // Now, an expression like *i++ will return the current *i, and
+    // then advance the iterator.  However, don't try to use
+    // Proxy for anything else.
+    const Proxy operator++(int) {
+      Proxy e(*(*this));
+      ++(*this);
+      return e;
+    }
+  };/* class CDHashMap<>::iterator */
+
+  typedef iterator const_iterator;
+
+  iterator begin() const {
+    return iterator(d_first);
+  }
+
+  iterator end() const {
+    return iterator(NULL);
+  }
+
+  iterator find(const Key& k) const {
+    typename table_type::const_iterator i = d_map.find(k);
+
+    if(i == d_map.end()) {
+      return end();
+    } else {
+      return iterator((*i).second);
+    }
+  }
+
+  iterator find(const Key& k) {
+    emptyTrash();
+    return const_cast<const CDHashMap*>(this)->find(k);
+  }
+
+};/* class CDHashMap<> */
+
+}/* CVC4::context namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__CONTEXT__CDHASHMAP_H */
diff --git a/src/context/cdhashmap_forward.h b/src/context/cdhashmap_forward.h
new file mode 100644
index 0000000..b8a361d
--- /dev/null
+++ b/src/context/cdhashmap_forward.h
@@ -0,0 +1,44 @@
+/*********************                                                        */
+/*! \file cdhashmap_forward.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This is a forward declaration header to declare the CDHashMap<>
+ ** template
+ **
+ ** 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 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__CDHASHMAP_FORWARD_H
+#define __CVC4__CONTEXT__CDHASHMAP_FORWARD_H
+
+/// \cond internals
+
+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 CDHashMap;
+  }/* CVC4::context namespace */
+}/* CVC4 namespace */
+
+/// \endcond
+
+#endif /* __CVC4__CONTEXT__CDHASHMAP_FORWARD_H */
diff --git a/src/context/cdhashset.h b/src/context/cdhashset.h
new file mode 100644
index 0000000..8c450f1
--- /dev/null
+++ b/src/context/cdhashset.h
@@ -0,0 +1,161 @@
+/*********************                                                        */
+/*! \file cdhashset.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Kshitij Bansal
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Context-dependent set class.
+ **
+ ** Context-dependent set class.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__CONTEXT__CDHASHSET_H
+#define __CVC4__CONTEXT__CDHASHSET_H
+
+#include "base/cvc4_assert.h"
+#include "context/context.h"
+#include "context/cdinsert_hashmap.h"
+
+
+namespace CVC4 {
+namespace context {
+
+template <class V, class HashFcn>
+class CDHashSet : protected CDInsertHashMap<V, bool, HashFcn> {
+  typedef CDInsertHashMap<V, bool, HashFcn> super;
+
+  // no copy or assignment
+  CDHashSet(const CDHashSet&) CVC4_UNDEFINED;
+  CDHashSet& operator=(const CDHashSet&) CVC4_UNDEFINED;
+
+public:
+
+  // ensure these are publicly accessible
+  static void* operator new(size_t size, bool b) {
+    return ContextObj::operator new(size, b);
+  }
+
+  static void operator delete(void* pMem, bool b) {
+    return ContextObj::operator delete(pMem, b);
+  }
+
+  void deleteSelf() {
+    this->ContextObj::deleteSelf();
+  }
+
+  static void operator delete(void* pMem) {
+    AlwaysAssert(false, "It is not allowed to delete a ContextObj this way!");
+  }
+
+  CDHashSet(Context* context) :
+    super(context) {
+  }
+
+  size_t size() const {
+    return super::size();
+  }
+
+  bool empty() const {
+    return super::empty();
+  }
+
+  bool insert(const V& v) {
+    return super::insert_safe(v, true);
+  }
+
+  bool contains(const V& v) const {
+    return super::contains(v);
+  }
+
+  class const_iterator {
+    typename super::const_iterator d_it;
+
+  public:
+
+    const_iterator(const typename super::const_iterator& it) : d_it(it) {}
+    const_iterator(const const_iterator& it) : d_it(it.d_it) {}
+
+    // Default constructor
+    const_iterator() {}
+
+    // (Dis)equality
+    bool operator==(const const_iterator& i) const {
+      return d_it == i.d_it;
+    }
+    bool operator!=(const const_iterator& i) const {
+      return d_it != i.d_it;
+    }
+
+    // Dereference operators.
+    V operator*() const {
+      return (*d_it).first;
+    }
+
+    // Prefix increment
+    const_iterator& operator++() {
+      ++d_it;
+      return *this;
+    }
+
+    // Postfix increment: requires a Proxy object to hold the
+    // intermediate value for dereferencing
+    class Proxy {
+      const V& d_val;
+
+    public:
+
+      Proxy(const V& v) : d_val(v) {}
+
+      V operator*() const {
+        return d_val;
+      }
+    };/* class CDSet<>::iterator::Proxy */
+
+    // Actual postfix increment: returns Proxy with the old value.
+    // Now, an expression like *i++ will return the current *i, and
+    // then advance the orderedIterator.  However, don't try to use
+    // Proxy for anything else.
+    const Proxy operator++(int) {
+      Proxy e(*(*this));
+      ++(*this);
+      return e;
+    }
+  };/* class CDSet<>::iterator */
+
+  const_iterator begin() const {
+    return const_iterator(super::begin());
+  }
+
+  const_iterator end() const {
+    return const_iterator(super::end());
+  }
+
+  const_iterator find(const V& v) const {
+    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 CDHashSet */
+
+}/* CVC4::context namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__CONTEXT__CDHASHSET_H */
diff --git a/src/context/cdhashset_forward.h b/src/context/cdhashset_forward.h
new file mode 100644
index 0000000..06ea9c4
--- /dev/null
+++ b/src/context/cdhashset_forward.h
@@ -0,0 +1,44 @@
+/*********************                                                        */
+/*! \file cdhashset_forward.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This is a forward declaration header to declare the CDSet<>
+ ** template
+ **
+ ** This is a forward declaration header to declare the CDSet<>
+ ** template.  It's useful if you want to forward-declare CDSet<>
+ ** without including the full cdset.h header, for example, in a
+ ** public header context.
+ **
+ ** For CDSet<> in particular, it's difficult to forward-declare it
+ ** yourself, because it has a default template argument.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__CONTEXT__CDSET_FORWARD_H
+#define __CVC4__CONTEXT__CDSET_FORWARD_H
+
+/// \cond internals
+
+namespace __gnu_cxx {
+  template <class Key> struct hash;
+}/* __gnu_cxx namespace */
+
+namespace CVC4 {
+  namespace context {
+    template <class V, class HashFcn = __gnu_cxx::hash<V> >
+    class CDHashSet;
+  }/* CVC4::context namespace */
+}/* CVC4 namespace */
+
+/// \endcond
+
+#endif /* __CVC4__CONTEXT__CDSET_FORWARD_H */
diff --git a/src/context/cdinsert_hashmap.h b/src/context/cdinsert_hashmap.h
new file mode 100644
index 0000000..e901e94
--- /dev/null
+++ b/src/context/cdinsert_hashmap.h
@@ -0,0 +1,404 @@
+/*********************                                                        */
+/*! \file cdinsert_hashmap.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\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 <boost/static_assert.hpp>
+#include <deque>
+#include <ext/hash_map>
+#include <utility>
+
+#include "base/cvc4_assert.h"
+#include "base/output.h"
+#include "context/context.h"
+#include "context/cdinsert_hashmap_forward.h"
+#include "expr/node.h"
+
+
+#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& 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;
+  }
+  CDInsertHashMap& operator=(const CDInsertHashMap&) CVC4_UNDEFINED;
+
+  /**
+   * 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() {
+    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 guarantee is too 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 0000000..5bc6e8f
--- /dev/null
+++ b/src/context/cdinsert_hashmap_forward.h
@@ -0,0 +1,38 @@
+/*********************                                                        */
+/*! \file cdinsert_hashmap_forward.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\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/cdlist.h b/src/context/cdlist.h
new file mode 100644
index 0000000..47667cc
--- /dev/null
+++ b/src/context/cdlist.h
@@ -0,0 +1,440 @@
+/*********************                                                        */
+/*! \file cdlist.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Francois Bobot
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Context-dependent list class (only supports append)
+ **
+ ** Context-dependent list class.  This list only supports appending
+ ** to the list; on backtrack, the list is simply shortened.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__CONTEXT__CDLIST_H
+#define __CVC4__CONTEXT__CDLIST_H
+
+#include <boost/static_assert.hpp>
+#include <iterator>
+#include <memory>
+#include <string>
+#include <sstream>
+
+#include "base/cvc4_assert.h"
+#include "context/context.h"
+#include "context/context_mm.h"
+#include "context/cdlist_forward.h"
+
+namespace CVC4 {
+namespace context {
+
+/**
+ * Generic context-dependent dynamic array.  Note that for efficiency,
+ * this implementation makes the following assumptions:
+ *
+ * 1. Over time, objects are only added to the list.  Objects are only
+ *    removed when a pop restores the list to a previous state.
+ *
+ * 2. T objects can safely be copied using their copy constructor,
+ *    operator=, and memcpy.
+ */
+template <class T, class CleanUpT, class AllocatorT>
+class CDList : public ContextObj {
+public:
+
+  /** The value type with which this CDList<> was instantiated. */
+  typedef T value_type;
+
+  /** The cleanup type with which this CDList<> was instantiated. */
+  typedef CleanUpT CleanUp;
+
+  /** The allocator type with which this CDList<> was instantiated. */
+  typedef AllocatorT Allocator;
+
+protected:
+
+  /**
+   * d_list is a dynamic array of objects of type T.
+   */
+  T* d_list;
+
+  /**
+   * Number of objects in d_list
+   */
+  size_t d_size;
+
+private:
+
+  static const size_t INITIAL_SIZE = 10;
+  static const size_t GROWTH_FACTOR = 2;
+
+  /**
+   * Whether to call the destructor when items are popped from the
+   * list.  True by default, but can be set to false by setting the
+   * second argument in the constructor to false.
+   */
+  bool d_callDestructor;
+
+  /**
+   * Allocated size of d_list.
+   */
+  size_t d_sizeAlloc;
+
+  /**
+   * The CleanUp functor.
+   */
+  CleanUp d_cleanUp;
+
+  /**
+   * Our allocator.
+   */
+  Allocator d_allocator;
+
+protected:
+  /**
+   * Private copy constructor used only by save().  d_list and
+   * d_sizeAlloc are not copied: only the base class information and
+   * d_size are needed in restore.
+   */
+  CDList(const CDList& l) :
+    ContextObj(l),
+    d_list(NULL),
+    d_size(l.d_size),
+    d_callDestructor(false),
+    d_sizeAlloc(0),
+    d_cleanUp(l.d_cleanUp),
+    d_allocator(l.d_allocator) {
+    Debug("cdlist") << "copy ctor: " << this
+                    << " from " << &l
+                    << " size " << d_size << std::endl;
+  }
+  CDList& operator=(const CDList& l) CVC4_UNDEFINED;
+
+private:
+  /**
+   * Reallocate the array with more space.
+   * Throws bad_alloc if memory allocation fails.
+   */
+  void grow() {
+    if(d_list == NULL) {
+      // Allocate an initial list if one does not yet exist
+      d_sizeAlloc = INITIAL_SIZE;
+      Debug("cdlist") << "initial grow of cdlist " << this
+                      << " level " << getContext()->getLevel()
+                      << " to " << d_sizeAlloc << std::endl;
+      if(d_sizeAlloc > d_allocator.max_size()) {
+        d_sizeAlloc = d_allocator.max_size();
+      }
+      d_list = d_allocator.allocate(d_sizeAlloc);
+      if(d_list == NULL) {
+        throw std::bad_alloc();
+      }
+    } else {
+      // Allocate a new array with double the size
+      size_t newSize = GROWTH_FACTOR * d_sizeAlloc;
+      if(newSize > d_allocator.max_size()) {
+        newSize = d_allocator.max_size();
+        Assert(newSize > d_sizeAlloc,
+               "cannot request larger list due to allocator limits");
+      }
+      T* newList = d_allocator.allocate(newSize);
+      Debug("cdlist") << "2x grow of cdlist " << this
+                      << " level " << getContext()->getLevel()
+                      << " to " << newSize
+                      << " (from " << d_list
+                      << " to " << newList << ")" << std::endl;
+      if(newList == NULL) {
+        throw std::bad_alloc();
+      }
+      std::memcpy(newList, d_list, sizeof(T) * d_sizeAlloc);
+      d_allocator.deallocate(d_list, d_sizeAlloc);
+      d_list = newList;
+      d_sizeAlloc = newSize;
+    }
+  }
+
+  /**
+   * Implementation of mandatory ContextObj method save: simply copies
+   * the current size 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) CDList<T, CleanUp, Allocator>(*this);
+    Debug("cdlist") << "save " << this
+                    << " at level " << this->getContext()->getLevel()
+                    << " size at " << this->d_size
+                    << " sizeAlloc at " << this->d_sizeAlloc
+                    << " d_list is " << this->d_list
+                    << " 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("cdlist") << "restore " << this
+                    << " level " << this->getContext()->getLevel()
+                    << " data == " << data
+                    << " call dtor == " << this->d_callDestructor
+                    << " d_list == " << this->d_list << std::endl;
+    truncateList(((CDList<T, CleanUp, Allocator>*)data)->d_size);
+    Debug("cdlist") << "restore " << this
+                    << " level " << this->getContext()->getLevel()
+                    << " size back to " << this->d_size
+                    << " sizeAlloc at " << this->d_sizeAlloc << std::endl;
+  }
+
+  /**
+   * Given a size parameter smaller than d_size, truncateList()
+   * removes the elements from the end of the list until d_size equals size.
+   *
+   * WARNING! You should only use this function when you know what you are doing.
+   * This is a primitive operation with strange context dependent behavior!
+   * It is up to the user of the function to ensure that the saved d_size values
+   * at lower context levels are less than or equal to size.
+   */
+  void truncateList(const size_t size){
+    Assert(size <= d_size);
+    if(d_callDestructor) {
+      while(d_size != size) {
+        --d_size;
+        d_cleanUp(&d_list[d_size]);
+        d_allocator.destroy(&d_list[d_size]);
+      }
+    } else {
+      d_size = size;
+    }
+  }
+
+
+public:
+
+  /**
+   * Main constructor: d_list starts as NULL, size is 0
+   */
+  CDList(Context* context,
+         bool callDestructor = true,
+         const CleanUp& cleanup = CleanUp(),
+         const Allocator& alloc = Allocator()) :
+    ContextObj(context),
+    d_list(NULL),
+    d_size(0),
+    d_callDestructor(callDestructor),
+    d_sizeAlloc(0),
+    d_cleanUp(cleanup),
+    d_allocator(alloc) {
+  }
+
+  /**
+   * Destructor: delete the list
+   */
+  ~CDList() {
+    this->destroy();
+
+    if(this->d_callDestructor) {
+      truncateList(0);
+    }
+
+    this->d_allocator.deallocate(this->d_list, this->d_sizeAlloc);
+  }
+
+  /**
+   * Return the current size of (i.e. valid number of objects in) the
+   * list.
+   */
+  size_t size() const {
+    return d_size;
+  }
+
+  /**
+   * Return true iff there are no valid objects in the list.
+   */
+  bool empty() const {
+    return d_size == 0;
+  }
+
+  /**
+   * Add an item to the end of the list.
+   */
+  void push_back(const T& data) {
+    Debug("cdlist") << "push_back " << this
+                    << " " << getContext()->getLevel()
+                    << ": make-current, "
+                    << "d_list == " << d_list << std::endl;
+    makeCurrent();
+
+    Debug("cdlist") << "push_back " << this
+                    << " " << getContext()->getLevel()
+                    << ": grow? " << d_size
+                    << " " << d_sizeAlloc << std::endl;
+    if(d_size == d_sizeAlloc) {
+      Debug("cdlist") << "push_back " << this
+                      << " " << getContext()->getLevel()
+                      << ": grow!" << std::endl;
+      grow();
+    }
+    Assert(d_size < d_sizeAlloc);
+
+    Debug("cdlist") << "push_back " << this
+                    << " " << getContext()->getLevel()
+                    << ": construct! at " << d_list
+                    << "[" << d_size << "] == " << &d_list[d_size]
+                    << std::endl;
+    d_allocator.construct(&d_list[d_size], data);
+    Debug("cdlist") << "push_back " << this
+                    << " " << getContext()->getLevel()
+                    << ": done..." << std::endl;
+    ++d_size;
+    Debug("cdlist") << "push_back " << this
+                    << " " << getContext()->getLevel()
+                    << ": size now " << d_size << std::endl;
+  }
+
+  /**
+   * Access to the ith item in the list.
+   */
+  const T& operator[](size_t i) const {
+    Assert(i < d_size, "index out of bounds in CDList::operator[]");
+    return d_list[i];
+  }
+
+  /**
+   * Returns the most recent item added to the list.
+   */
+  const T& back() const {
+    Assert(d_size > 0, "CDList::back() called on empty list");
+    return d_list[d_size - 1];
+  }
+
+  /**
+   * Iterator for CDList class.  It has to be const because we don't
+   * allow items in the list to be changed.  It's a straightforward
+   * wrapper around a pointer.  Note that for efficiency, we implement
+   * only prefix increment and decrement.  Also note that it's OK to
+   * create an iterator from an empty, uninitialized list, as begin()
+   * and end() will have the same value (NULL).
+   */
+  class const_iterator {
+    T const* d_it;
+
+    const_iterator(T const* it) : d_it(it) {}
+
+    friend class CDList<T, CleanUp, Allocator>;
+
+  public:
+
+    // FIXME we support operator--, but do we satisfy all the
+    // requirements of a bidirectional iterator ?
+    typedef std::input_iterator_tag iterator_category;
+    typedef T value_type;
+    typedef std::ptrdiff_t difference_type;
+    typedef const T* pointer;
+    typedef const T& reference;
+
+    const_iterator() : d_it(NULL) {}
+
+    inline bool operator==(const const_iterator& i) const {
+      return d_it == i.d_it;
+    }
+
+    inline bool operator!=(const const_iterator& i) const {
+      return d_it != i.d_it;
+    }
+
+    inline const T& operator*() const {
+      return *d_it;
+    }
+
+    /** Prefix increment */
+    const_iterator& operator++() {
+      ++d_it;
+      return *this;
+    }
+
+    /** Prefix decrement */
+    const_iterator& operator--() { --d_it; return *this; }
+
+    /** operator+ */
+    const_iterator operator+(long signed int off) const {
+      return const_iterator(d_it + off);
+    }
+
+    // Postfix operations on iterators: requires a Proxy object to
+    // hold the intermediate value for dereferencing
+    class Proxy {
+      const T* d_t;
+
+    public:
+
+      Proxy(const T& p): d_t(&p) {}
+
+      T& operator*() {
+        return *d_t;
+      }
+    };/* class CDList<>::const_iterator::Proxy */
+
+    /** Postfix increment: returns Proxy with the old value. */
+    Proxy operator++(int) {
+      Proxy e(*(*this));
+      ++(*this);
+      return e;
+    }
+
+    /** Postfix decrement: returns Proxy with the old value. */
+    Proxy operator--(int) {
+      Proxy e(*(*this));
+      --(*this);
+      return e;
+    }
+
+  };/* class CDList<>::const_iterator */
+  typedef const_iterator iterator;
+
+  /**
+   * Returns an iterator pointing to the first item in the list.
+   */
+  const_iterator begin() const {
+    return const_iterator(static_cast<T const*>(d_list));
+  }
+
+  /**
+   * Returns an iterator pointing one past the last item in the list.
+   */
+  const_iterator end() const {
+    return const_iterator(static_cast<T const*>(d_list) + d_size);
+  }
+};/* class CDList<> */
+
+
+template <class T, class CleanUp>
+class CDList <T, CleanUp, ContextMemoryAllocator<T> > : public ContextObj {
+  /* CDList is incompatible for use with a ContextMemoryAllocator.
+   * Consider using CDChunkList<T> instead.
+   *
+   * Explanation:
+   * If ContextMemoryAllocator is used and d_list grows at a deeper context level
+   * the reallocated will be reallocated in a context memory region that can be
+   * destroyed on pop. To support this, a full copy of d_list would have to be made.
+   * As this is unacceptable for performance in other situations, we do not do
+   * this.
+   */
+
+  BOOST_STATIC_ASSERT(sizeof(T) == 0);
+};
+
+}/* CVC4::context namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__CONTEXT__CDLIST_H */
diff --git a/src/context/cdlist_forward.h b/src/context/cdlist_forward.h
new file mode 100644
index 0000000..101117c
--- /dev/null
+++ b/src/context/cdlist_forward.h
@@ -0,0 +1,60 @@
+/*********************                                                        */
+/*! \file cdlist_forward.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This is a forward declaration header to declare the
+ ** CDList<> template
+ **
+ ** This is a forward declaration header to declare the CDList<>
+ ** template.  It's useful if you want to forward-declare CDList<>
+ ** without including the full cdlist.h or cdlist_context_memory.h
+ ** header, for example, in a public header context, or to keep
+ ** compile times low when only a forward declaration is needed.
+ **
+ ** Note that all specializations of the template should be listed
+ ** here as well, since different specializations are defined in
+ ** different headers (cdlist.h and cdlist_context_memory.h).
+ ** Explicitly declaring both specializations here ensure that if you
+ ** define one, you'll get an error if you didn't include the correct
+ ** header (avoiding different, incompatible instantiations in
+ ** different compilation units).
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__CONTEXT__CDLIST_FORWARD_H
+#define __CVC4__CONTEXT__CDLIST_FORWARD_H
+
+#include <memory>
+
+/// \cond internals
+
+namespace __gnu_cxx {
+  template <class Key> struct hash;
+}/* __gnu_cxx namespace */
+
+namespace CVC4 {
+namespace context {
+
+template <class T>
+class DefaultCleanUp {
+public:
+  inline void operator()(T* t) const{}
+};
+
+template <class T, class CleanUp = DefaultCleanUp<T>, class Allocator = std::allocator<T> >
+class CDList;
+
+/// \endcond
+
+}/* CVC4::context namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__CONTEXT__CDLIST_FORWARD_H */
diff --git a/src/context/cdmaybe.h b/src/context/cdmaybe.h
new file mode 100644
index 0000000..458a124
--- /dev/null
+++ b/src/context/cdmaybe.h
@@ -0,0 +1,78 @@
+/*********************                                                        */
+/*! \file cdmaybe.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A context-dependent "maybe" template type
+ **
+ ** This implements a CDMaybe.
+ ** This has either been set in the context or it has not.
+ ** Template parameter T must have a default constructor and support
+ ** assignment.
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "context/cdo.h"
+#include "context/context.h"
+
+namespace CVC4 {
+namespace context {
+
+class CDRaised {
+private:
+  context::CDO<bool> d_flag;
+
+public:
+ CDRaised(context::Context* c)
+ : d_flag(c, false)
+ {}
+
+
+  bool isRaised() const {
+    return d_flag.get();
+  }
+
+  void raise(){
+    Assert(!isRaised());
+    d_flag.set(true);
+  }
+
+};/* class CDRaised */
+
+template <class T>
+class CDMaybe {
+private:
+  typedef std::pair<bool, T> BoolTPair;
+  context::CDO<BoolTPair> d_data;
+
+public:
+  CDMaybe(context::Context* c) : d_data(c, std::make_pair(false, T()))
+  {}
+
+  bool isSet() const {
+    return d_data.get().first;
+  }
+
+  void set(const T& d){
+    Assert(!isSet());
+    d_data.set(std::make_pair(true, d));
+  }
+
+  const T& get() const{
+    Assert(isSet());
+    return d_data.get().second;
+  }
+};/* class CDMaybe<T> */
+
+}/* CVC4::context namespace */
+}/* CVC4 namespace */
+
diff --git a/src/context/cdo.h b/src/context/cdo.h
new file mode 100644
index 0000000..2146518
--- /dev/null
+++ b/src/context/cdo.h
@@ -0,0 +1,181 @@
+/*********************                                                        */
+/*! \file cdo.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Francois Bobot
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A context-dependent object.
+ **
+ ** A context-dependent object.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__CONTEXT__CDO_H
+#define __CVC4__CONTEXT__CDO_H
+
+#include "base/cvc4_assert.h"
+#include "context/context.h"
+
+
+namespace CVC4 {
+namespace context {
+
+/**
+ * Most basic template for context-dependent objects.  Simply makes a copy
+ * (using the copy constructor) of class T when saving, and copies it back
+ * (using operator=) during restore.
+ */
+template <class T>
+class CDO : public ContextObj {
+
+  /**
+   * The data of type T being stored in this context-dependent object.
+   */
+  T d_data;
+
+protected:
+
+  /**
+   * Copy constructor - it's private to ensure it is only used by save().
+   * Basic CDO objects, cannot be copied-they have to be unique.
+   */
+  CDO(const CDO<T>& cdo) : ContextObj(cdo), d_data(cdo.d_data) {}
+
+  /**
+   * operator= for CDO is private to ensure CDO object is not copied.
+   */
+  CDO<T>& operator=(const CDO<T>& cdo) CVC4_UNDEFINED;
+
+  /**
+   * Implementation of mandatory ContextObj method save: simply copies the
+   * current data to a copy using the copy constructor.  Memory is allocated
+   * using the ContextMemoryManager.
+   */
+  virtual ContextObj* save(ContextMemoryManager* pCMM) {
+    Debug("context") << "save cdo " << this;
+    ContextObj* p = new(pCMM) CDO<T>(*this);
+    Debug("context") << " to " << p << std::endl;
+    return p;
+  }
+
+  /**
+   * Implementation of mandatory ContextObj method restore: simply copies the
+   * saved data back from the saved copy using operator= for T.
+   */
+  virtual void restore(ContextObj* pContextObj) {
+    //Debug("context") << "restore cdo " << this;
+    CDO<T>* p = static_cast<CDO<T>*>(pContextObj);
+    d_data = p->d_data;
+    //Debug("context") << " to " << get() << std::endl;
+    // Explicitly call destructor as it will not otherwise get called.
+    p->d_data.~T();
+  }
+
+public:
+
+  /**
+   * Main constructor - uses default constructor for T to create the initial
+   * value of d_data.
+   */
+  CDO(Context* context) :
+    ContextObj(context),
+    d_data(T()) {
+  }
+
+  /**
+   * Main constructor - uses default constructor for T to create the
+   * initial value of d_data.
+   *
+   * This version takes an argument that specifies whether this CDO<>
+   * was itself allocated in context memory.  If it was, it is linked
+   * with the current scope rather than scope 0.
+   *
+   * WARNING: Read the notes in src/context/context.h on "Gotchas when
+   * allocating contextual objects with non-standard allocators."
+   */
+  CDO(bool allocatedInCMM, Context* context) :
+    ContextObj(allocatedInCMM, context),
+    d_data(T()) {
+  }
+
+  /**
+   * Constructor from object of type T.  Creates a ContextObj and sets the data
+   * to the given data value.  Note that this value is only valid in the
+   * current Scope.  If the Scope is popped, the value will revert to whatever
+   * is assigned by the default constructor for T
+   */
+  CDO(Context* context, const T& data) :
+    ContextObj(context),
+    d_data(T()) {
+    makeCurrent();
+    d_data = data;
+  }
+
+  /**
+   * Constructor from object of type T.  Creates a ContextObj and sets the data
+   * to the given data value.  Note that this value is only valid in the
+   * current Scope.  If the Scope is popped, the value will revert to whatever
+   * is assigned by the default constructor for T.
+   *
+   * This version takes an argument that specifies whether this CDO<>
+   * was itself allocated in context memory.  If it was, it is linked
+   * with the current scope rather than scope 0.
+   *
+   * WARNING: Read the notes in src/context/context.h on "Gotchas when
+   * allocating contextual objects with non-standard allocators."
+   */
+  CDO(bool allocatedInCMM, Context* context, const T& data) :
+    ContextObj(allocatedInCMM, context),
+    d_data(T()) {
+    makeCurrent();
+    d_data = data;
+  }
+
+  /**
+   * Destructor - call destroy() method
+   */
+  ~CDO() { destroy(); }
+
+  /**
+   * Set the data in the CDO.  First call makeCurrent.
+   */
+  void set(const T& data) {
+    makeCurrent();
+    d_data = data;
+  }
+
+  /**
+   * Get the current data from the CDO.  Read-only.
+   */
+  const T& get() const { return d_data; }
+
+  /**
+   * For convenience, define operator T() to be the same as get().
+   */
+  operator T() { return get(); }
+
+  /**
+   * For convenience, define operator const T() to be the same as get().
+   */
+  operator const T() const { return get(); }
+
+  /**
+   * For convenience, define operator= that takes an object of type T.
+   */
+  CDO<T>& operator=(const T& data) {
+    set(data);
+    return *this;
+  }
+
+};/* class CDO */
+
+}/* CVC4::context namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__CONTEXT__CDO_H */
diff --git a/src/context/cdqueue.h b/src/context/cdqueue.h
new file mode 100644
index 0000000..5aa890d
--- /dev/null
+++ b/src/context/cdqueue.h
@@ -0,0 +1,167 @@
+/*********************                                                        */
+/*! \file cdqueue.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Francois Bobot, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Context-dependent queue class
+ **
+ ** Context-dependent First-In-First-Out queue class.
+ ** This implementation may discard elements which are enqueued and dequeued
+ ** at the same context level.
+ **
+ ** The implementation is based on a CDList with one additional size_t
+ ** for tracking the next element to dequeue from the list and additional
+ ** size_t for tracking the previous size of the list.
+ **/
+
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__CONTEXT__CDQUEUE_H
+#define __CVC4__CONTEXT__CDQUEUE_H
+
+#include "context/context.h"
+#include "context/cdlist.h"
+
+namespace CVC4 {
+namespace context {
+
+template <class T, class CleanUp = DefaultCleanUp<T>, class Allocator = std::allocator<T> >
+class CDQueue;
+
+/** We don't define a template with Allocator for the first implementation */
+template <class T, class CleanUp, class Allocator>
+class CDQueue : public CDList<T, CleanUp, Allocator> {
+private:
+  typedef CDList<T, CleanUp, Allocator> ParentType;
+
+protected:
+
+  /** Points to the next element in the current context to dequeue. */
+  size_t d_iter;
+
+  /** Points to the size at the last save. */
+  size_t d_lastsave;
+
+  /**
+   * Private copy constructor used only by save().
+   */
+  CDQueue(const CDQueue<T, CleanUp, Allocator>& l):
+    ParentType(l),
+    d_iter(l.d_iter),
+    d_lastsave(l.d_lastsave) {}
+
+  /** Implementation of mandatory ContextObj method save:
+   *  We assume that the base class do the job inside their copy constructor.
+   */
+  ContextObj* save(ContextMemoryManager* pCMM) {
+    ContextObj* data = new(pCMM) CDQueue<T, CleanUp, Allocator>(*this);
+    // We save the d_size in d_lastsave and we should never destruct below this
+    // indices before the corresponding restore.
+    d_lastsave = ParentType::d_size;
+    Debug("cdqueue") << "save " << this
+                     << " at level " << this->getContext()->getLevel()
+                     << " size at " << this->d_size
+                     << " iter at " << this->d_iter
+                     << " lastsave at " << this->d_lastsave
+                     << " d_list is " << this->d_list
+                     << " data:" << data << std::endl;
+    return data;
+  }
+
+  /**
+   * Implementation of mandatory ContextObj method restore: simply
+   * restores the previous size, iter and lastsave indices. Note that
+   * the list pointer and the allocated size are not changed.
+   */
+  void restore(ContextObj* data) {
+    CDQueue<T, CleanUp, Allocator>* qdata = static_cast<CDQueue<T, CleanUp, Allocator>*>(data);
+    d_iter = qdata->d_iter;
+    d_lastsave = qdata->d_lastsave;
+    ParentType::restore(data);
+  }
+
+
+
+public:
+
+  /** Creates a new CDQueue associated with the current context. */
+  CDQueue(Context* context,
+          bool callDestructor = true,
+          const CleanUp& cleanup = CleanUp(),
+          const Allocator& alloc = Allocator())
+    : ParentType(context, callDestructor, cleanup, alloc),
+      d_iter(0),
+      d_lastsave(0)
+  {}
+
+  /** Returns true if the queue is empty in the current context. */
+  bool empty() const{
+    Assert(d_iter <= ParentType::d_size);
+    return d_iter == ParentType::d_size;
+  }
+
+  /** Returns the number of elements that have not been dequeued in the context. */
+  size_t size() const{
+    return ParentType::d_size - d_iter;
+  }
+
+  /** Enqueues an element in the current context. */
+  void push(const T& data){
+    ParentType::push_back(data);
+  }
+
+  /**
+   * Delete next element. The destructor of this object will be
+   * called eventually but not necessarily during the call of this
+   * function.
+   */
+  void pop(){
+    Assert(!empty(), "Attempting to pop from an empty queue.");
+    ParentType::makeCurrent();
+    d_iter = d_iter + 1;
+    if (empty() && d_lastsave != ParentType::d_size) {
+      // Some elements have been enqueued and dequeued in the same
+      // context and now the queue is empty we can destruct them.
+      ParentType::truncateList(d_lastsave);
+      Assert(ParentType::d_size ==  d_lastsave);
+      d_iter = d_lastsave;
+    }
+  }
+
+  /** Returns a reference to the next element on the queue. */
+  const T& front() const{
+    Assert(!empty(), "No front in an empty queue.");
+    return ParentType::d_list[d_iter];
+  }
+
+  /**
+   * Returns the most recent item added to the queue.
+   */
+  const T& back() const {
+    Assert(!empty(), "CDQueue::back() called on empty list");
+    return ParentType::d_list[ParentType::d_size - 1];
+  }
+
+  typedef typename ParentType::const_iterator const_iterator;
+
+  const_iterator begin() const {
+    return ParentType::begin() + d_iter;
+  }
+
+  const_iterator end() const {
+    return ParentType::end();
+  }
+
+};/* class CDQueue<> */
+
+}/* CVC4::context namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__CONTEXT__CDQUEUE_H */
diff --git a/src/context/cdtrail_hashmap.h b/src/context/cdtrail_hashmap.h
new file mode 100644
index 0000000..90816d5
--- /dev/null
+++ b/src/context/cdtrail_hashmap.h
@@ -0,0 +1,570 @@
+/*********************                                                        */
+/*! \file cdtrail_hashmap.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\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 <boost/static_assert.hpp>
+#include <ext/hash_map>
+#include <deque>
+#include <utility>
+
+#include "base/cvc4_assert.h"
+#include "base/output.h"
+#include "context/context.h"
+#include "context/cdtrail_hashmap_forward.h"
+#include "expr/node.h"
+
+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() {
+    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 beginning 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 guarantee is too 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 0000000..926c858
--- /dev/null
+++ b/src/context/cdtrail_hashmap_forward.h
@@ -0,0 +1,38 @@
+/*********************                                                        */
+/*! \file cdtrail_hashmap_forward.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\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/context/cdtrail_queue.h b/src/context/cdtrail_queue.h
new file mode 100644
index 0000000..825557f
--- /dev/null
+++ b/src/context/cdtrail_queue.h
@@ -0,0 +1,95 @@
+/*********************                                                        */
+/*! \file cdtrail_queue.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Context-dependent queue class with an explicit trail of elements
+ **
+ ** Context-dependent First-In-First-Out queue class.
+ ** The implementation is based on a combination of CDList and a CDO<size_t>
+ ** for tracking the next element to dequeue from the list.
+ ** The implementation is currently not full featured.
+ **/
+
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__CONTEXT__CDTRAIL_QUEUE_H
+#define __CVC4__CONTEXT__CDTRAIL_QUEUE_H
+
+#include "context/context.h"
+#include "context/cdlist.h"
+
+namespace CVC4 {
+namespace context {
+
+
+template <class T>
+class CDTrailQueue {
+private:
+
+  /** List of elements in the queue. */
+  CDList<T> d_list;
+
+  /** Points to the next element in the current context to dequeue. */
+  CDO<size_t> d_iter;
+
+
+public:
+
+  /** Creates a new CDTrailQueue associated with the current context. */
+  CDTrailQueue(Context* context)
+    : d_list(context),
+      d_iter(context, 0)
+  {}
+
+  /** Returns true if the queue is empty in the current context. */
+  bool empty() const{
+    return d_iter >= d_list.size();
+  }
+
+  /**
+   * Enqueues an element in the current context.
+   * Returns its index in the queue.
+   */
+  size_t enqueue(const T& data){
+    size_t res = d_list.size();
+    d_list.push_back(data);
+    return res;
+  }
+
+  size_t frontIndex() const{
+    return d_iter;
+  }
+
+  const T& front() const{
+    return d_list[frontIndex()];
+  }
+
+  /** Moves the iterator for the queue forward. */
+  void dequeue(){
+    Assert(!empty(), "Attempting to queue from an empty queue.");
+    d_iter = d_iter + 1;
+  }
+
+  const T& operator[](size_t index) const{
+    Assert(index < d_list.size());
+    return d_list[index];
+  }
+
+  size_t size() const{
+    return d_list.size();
+  }
+
+};/* class CDTrailQueue<> */
+
+}/* CVC4::context namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__CONTEXT__CDTRAIL_QUEUE_H */
diff --git a/src/context/cdvector.h b/src/context/cdvector.h
new file mode 100644
index 0000000..2449d78
--- /dev/null
+++ b/src/context/cdvector.h
@@ -0,0 +1,162 @@
+/*********************                                                        */
+/*! \file cdvector.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__CONTEXT__CDVECTOR_H
+#define __CVC4__CONTEXT__CDVECTOR_H
+
+#include <vector>
+
+#include "base/cvc4_assert.h"
+#include "context/context.h"
+#include "context/cdlist.h"
+
+namespace CVC4 {
+namespace context {
+
+
+/**
+ * Generic context-dependent dynamic vector.
+ * This is quite different than CDList<T>.
+ * It provides the ability to destructively update the i'th item.
+ *
+ * The back of the vector may only be popped if there have been no updates to it
+ * at this context level.
+ */
+template <class T>
+class CDVector {
+private:
+  static const int ImpossibleLevel = -1;
+
+  struct UpdatableElement {
+  public:
+    T d_data;
+    int d_contextLevelOfLastUpdate;
+
+    UpdatableElement(const T& data) :
+      d_data(data),
+      d_contextLevelOfLastUpdate(ImpossibleLevel) {
+    }
+  };/* struct CDVector<T>::UpdatableElement */
+
+  struct HistoryElement {
+  public:
+    UpdatableElement d_cached;
+    size_t d_index;
+    HistoryElement(const UpdatableElement& cache, size_t index) :
+      d_cached(cache), d_index(index) {
+    }
+  };/* struct CDVector<T>::HistoryElement */
+
+  typedef std::vector< UpdatableElement > CurrentVector;
+  CurrentVector d_current;
+
+
+
+  class HistoryListCleanUp{
+  private:
+    CurrentVector& d_current;
+  public:
+    HistoryListCleanUp(CurrentVector& current)
+      : d_current(current)
+    {}
+
+    void operator()(HistoryElement* back){
+      d_current[back->d_index] = back->d_cached;
+    }
+  };/* class CDVector<T>::HistoryListCleanUp */
+
+  typedef CDList< HistoryElement,  HistoryListCleanUp > HistoryVector;
+  HistoryVector d_history;
+
+  Context* d_context;
+
+  // no copy or assignment
+  CDVector(const CDVector&) CVC4_UNDEFINED;
+  CDVector& operator=(const CDVector&) CVC4_UNDEFINED;
+
+public:
+  CDVector(Context* c) :
+    d_current(),
+    d_history(c, true, HistoryListCleanUp(d_current)),
+    d_context(c)
+  {}
+
+  size_t size() const {
+    return d_current.size();
+  }
+
+  /**
+   * Return true iff there are no valid objects in the list.
+   */
+  bool empty() const {
+    return d_current.empty();
+  }
+
+  /**
+   * Add an item to the end of the list.
+   * Assigns its state at level 0 to be equal to data.
+   */
+  void push_back(const T& data) {
+    d_current.push_back(UpdatableElement(data));
+  }
+
+  /**
+   * Access to the ith item in the list.
+   */
+  const T& operator[](size_t i) const {
+    return get(i);
+  }
+
+  const T& get(size_t i) const {
+    Assert(i < size(), "index out of bounds in CDVector::get()");
+    //makeConsistent();
+    return d_current[i].d_data;
+  }
+
+  void set(size_t index, const T& data) {
+    Assert(index < size(), "index out of bounds in CDVector::set()");
+    //makeConsistent();
+
+    if(d_current[index].d_contextLevelOfLastUpdate == d_context->getLevel()) {
+      d_current[index].d_data = data;
+    }else{
+      d_history.push_back(HistoryElement(d_current[index], index));
+
+      d_current[index].d_data = data;
+      d_current[index].d_contextLevelOfLastUpdate = d_context->getLevel();
+    }
+  }
+
+  bool hasUpdates(size_t index) const {
+    Assert(index < size(), "index out of bounds in CDVector::hasUpdates()");
+    return d_current[index].d_contextLevelOfLastUpdate == ImpossibleLevel;
+  }
+
+  void pop_back() {
+    Assert(!empty(), "pop_back() on an empty CDVector");
+    Assert(!hasUpdates(size() - 1), "popping an element with updates.");
+    d_current.pop_back();
+  }
+
+};/* class CDVector<T> */
+
+}/* CVC4::context namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__CONTEXT__CDVECTOR_H */
diff --git a/src/context/context.cpp b/src/context/context.cpp
new file mode 100644
index 0000000..8f151ad
--- /dev/null
+++ b/src/context/context.cpp
@@ -0,0 +1,359 @@
+/*********************                                                        */
+/*! \file context.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Clark Barrett, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of base context operations.
+ **
+ ** Implementation of base context operations.
+ **/
+
+
+#include <iostream>
+#include <vector>
+
+#include "base/cvc4_assert.h"
+#include "context/context.h"
+
+
+namespace CVC4 {
+namespace context {
+
+
+Context::Context() : d_pCNOpre(NULL), d_pCNOpost(NULL) {
+  // Create new memory manager
+  d_pCMM = new ContextMemoryManager();
+
+  // Create initial Scope
+  d_scopeList.push_back(new(d_pCMM) Scope(this, d_pCMM, 0));
+}
+
+
+Context::~Context() {
+  // Delete all Scopes
+  popto(0);
+
+  // Delete the memory manager
+  delete d_pCMM;
+
+  // Clear ContextNotifyObj lists so there are no dangling pointers
+  ContextNotifyObj* pCNO;
+  while(d_pCNOpre != NULL) {
+    pCNO = d_pCNOpre;
+    pCNO->d_ppCNOprev = NULL;
+    d_pCNOpre = pCNO->d_pCNOnext;
+    pCNO->d_pCNOnext = NULL;
+  }
+  while(d_pCNOpost != NULL) {
+    pCNO = d_pCNOpost;
+    pCNO->d_ppCNOprev = NULL;
+    d_pCNOpost = pCNO->d_pCNOnext;
+    pCNO->d_pCNOnext = NULL;
+  }
+}
+
+
+void Context::push() {
+  Trace("pushpop") << std::string(2 * getLevel(), ' ') << "Push [to "
+                   << getLevel() + 1 << "] { " << this << std::endl;
+
+  // Create a new memory region
+  d_pCMM->push();
+
+  // Create a new top Scope
+  d_scopeList.push_back(new(d_pCMM) Scope(this, d_pCMM, getLevel()+1));
+}
+
+
+void Context::pop() {
+  Assert(getLevel() > 0, "Cannot pop below level 0");
+
+  // Notify the (pre-pop) ContextNotifyObj objects
+  ContextNotifyObj* pCNO = d_pCNOpre;
+  while(pCNO != NULL) {
+    // pre-store the "next" pointer in case pCNO deletes itself on notify()
+    ContextNotifyObj* next = pCNO->d_pCNOnext;
+    pCNO->contextNotifyPop();
+    pCNO = next;
+  }
+
+  // Grab the top Scope
+  Scope* pScope = d_scopeList.back();
+
+  // Restore the previous Scope
+  d_scopeList.pop_back();
+
+  // Restore all objects in the top Scope
+  delete pScope;
+
+  // Pop the memory region
+  d_pCMM->pop();
+
+  // Notify the (post-pop) ContextNotifyObj objects
+  pCNO = d_pCNOpost;
+  while(pCNO != NULL) {
+    // pre-store the "next" pointer in case pCNO deletes itself on notify()
+    ContextNotifyObj* next = pCNO->d_pCNOnext;
+    pCNO->contextNotifyPop();
+    pCNO = next;
+  }
+
+  Trace("pushpop") << std::string(2 * getLevel(), ' ') << "} Pop [to "
+                   << getLevel() << "] " << this << std::endl;
+}
+
+
+void Context::popto(int toLevel) {
+  // Pop scopes until there are none left or toLevel is reached
+  if(toLevel < 0) toLevel = 0;
+  while(toLevel < getLevel()) pop();
+}
+
+
+void Context::addNotifyObjPre(ContextNotifyObj* pCNO) {
+  // Insert pCNO at *front* of list
+  if(d_pCNOpre != NULL)
+    d_pCNOpre->prev() = &(pCNO->next());
+  pCNO->next() = d_pCNOpre;
+  pCNO->prev() = &d_pCNOpre;
+  d_pCNOpre = pCNO;
+}
+
+
+void Context::addNotifyObjPost(ContextNotifyObj* pCNO) {
+  // Insert pCNO at *front* of list
+  if(d_pCNOpost != NULL)
+    d_pCNOpost->prev() = &(pCNO->next());
+  pCNO->next() = d_pCNOpost;
+  pCNO->prev() = &d_pCNOpost;
+  d_pCNOpost = pCNO;
+}
+
+
+void ContextObj::update() throw(AssertionException) {
+  Debug("context") << "before update(" << this << "):" << std::endl
+                   << "context is " << getContext() << std::endl
+                   << *getContext() << std::endl;
+
+  // Call save() to save the information in the current object
+  ContextObj* pContextObjSaved = save(d_pScope->getCMM());
+
+  Debug("context") << "in update(" << this << ") with restore "
+                   << pContextObjSaved << ": waypoint 1" << std::endl
+                   << *getContext() << std::endl;
+
+  // Check that base class data was saved
+  Assert( ( pContextObjSaved->d_pContextObjNext == d_pContextObjNext &&
+            pContextObjSaved->d_ppContextObjPrev == d_ppContextObjPrev &&
+            pContextObjSaved->d_pContextObjRestore == d_pContextObjRestore &&
+            pContextObjSaved->d_pScope == d_pScope ),
+          "save() did not properly copy information in base class" );
+
+  // Link the "saved" object in place of this ContextObj in the scope
+  // we're moving it FROM.
+  Debug("context") << "in update(" << this
+                   << "): next() == " << next() << std::endl;
+  if(next() != NULL) {
+    Debug("context") << "in update(" << this
+                     << "): next()->prev() == " << next()->prev() << std::endl;
+    next()->prev() = &pContextObjSaved->next();
+    Debug("context") << "in update(" << this
+                     << "): next()->prev() is now "
+                     << next()->prev() << std::endl;
+  }
+  Debug("context") << "in update(" << this
+                   << "): prev() == " << prev() << std::endl;
+  Debug("context") << "in update(" << this
+                   << "): *prev() == " << *prev() << std::endl;
+  *prev() = pContextObjSaved;
+  Debug("context") << "in update(" << this
+                   << "): *prev() is now " << *prev() << std::endl;
+
+  Debug("context") << "in update(" << this << ") with restore "
+                   << pContextObjSaved << ": waypoint 3" << std::endl
+                   << *getContext() << std::endl;
+
+  // Update Scope pointer to current top Scope
+  d_pScope = d_pScope->getContext()->getTopScope();
+
+  // Store the saved copy in the restore pointer
+  d_pContextObjRestore = pContextObjSaved;
+
+  // Insert object into the list of objects that need to be restored when this
+  // Scope is popped.
+  d_pScope->addToChain(this);
+
+  Debug("context") << "after update(" << this << ") with restore "
+                   << pContextObjSaved << ":" << std::endl
+                   << *getContext() << std::endl;
+}
+
+
+ContextObj* ContextObj::restoreAndContinue() throw(AssertionException) {
+  // Variable to hold next object in list
+  ContextObj* pContextObjNext;
+
+  // Check the restore pointer.  If NULL, this must be the bottom Scope
+  if(d_pContextObjRestore == NULL) {
+    // might not be bottom scope, since objects allocated in context
+    // memory don't get linked to scope 0
+    //
+    // Assert(d_pScope == d_pScope->getContext()->getBottomScope(),
+    //        "Expected bottom scope");
+
+    Debug("context") << "NULL restore object! " << this << std::endl;
+    pContextObjNext = d_pContextObjNext;
+
+    // Nothing else to do
+  } else {
+    // Call restore to update the subclass data
+    restore(d_pContextObjRestore);
+
+    // Remember the next object in the list
+    pContextObjNext = d_pContextObjNext;
+
+    // Restore the base class data
+    d_pScope = d_pContextObjRestore->d_pScope;
+    next() = d_pContextObjRestore->d_pContextObjNext;
+    prev() = d_pContextObjRestore->d_ppContextObjPrev;
+    d_pContextObjRestore = d_pContextObjRestore->d_pContextObjRestore;
+
+    // Re-link this ContextObj to the list in this scope
+    if(next() != NULL) {
+      next()->prev() = &next();
+    }
+    *prev() = this;
+  }
+
+  // Return the next object in the list
+  return pContextObjNext;
+}
+
+
+void ContextObj::destroy() throw(AssertionException) {
+  /* Context can be big and complicated, so we only want to process this output
+   * if we're really going to use it. (Same goes below.) */
+  Debug("context") << "before destroy " << this << " (level " << getLevel()
+                   << "):" << std::endl << *getContext() << std::endl;
+
+  for(;;) {
+    // If valgrind reports invalid writes on the next few lines,
+    // here's a hint: make sure all classes derived from ContextObj in
+    // the system properly call destroy() in their destructors.
+    // That's needed to maintain this linked list properly.
+    if(next() != NULL) {
+      next()->prev() = prev();
+    }
+    *prev() = next();
+    if(d_pContextObjRestore == NULL) {
+      break;
+    }
+    Debug("context") << "in destroy " << this << ", restore object is "
+                     << d_pContextObjRestore << " at level "
+                     << d_pContextObjRestore->getLevel() << ":" << std::endl
+                     << *getContext() << std::endl;
+    restoreAndContinue();
+  }
+  Debug("context") << "after destroy " << this << ":" << std::endl
+                   << *getContext() << std::endl;
+}
+
+
+ContextObj::ContextObj(Context* pContext) :
+  d_pScope(NULL),
+  d_pContextObjRestore(NULL),
+  d_pContextObjNext(NULL),
+  d_ppContextObjPrev(NULL) {
+
+  Assert(pContext != NULL, "NULL context pointer");
+
+  Debug("context") << "create new ContextObj(" << this << " inCMM=false)" << std::endl;
+  d_pScope = pContext->getBottomScope();
+  d_pScope->addToChain(this);
+}
+
+
+ContextObj::ContextObj(bool allocatedInCMM, Context* pContext) :
+  d_pScope(NULL),
+  d_pContextObjRestore(NULL),
+  d_pContextObjNext(NULL),
+  d_ppContextObjPrev(NULL) {
+
+  Assert(pContext != NULL, "NULL context pointer");
+
+  Debug("context") << "create new ContextObj(" << this << " inCMM=" << allocatedInCMM << ")" << std::endl;
+  if(allocatedInCMM) {
+    d_pScope = pContext->getTopScope();
+  } else {
+    d_pScope = pContext->getBottomScope();
+  }
+  d_pScope->addToChain(this);
+}
+
+
+ContextNotifyObj::ContextNotifyObj(Context* pContext, bool preNotify) {
+  if(preNotify) {
+    pContext->addNotifyObjPre(this);
+  } else {
+    pContext->addNotifyObjPost(this);
+  }
+}
+
+
+ContextNotifyObj::~ContextNotifyObj() {
+  if(d_pCNOnext != NULL) {
+    d_pCNOnext->d_ppCNOprev = d_ppCNOprev;
+  }
+  if(d_ppCNOprev != NULL) {
+    *d_ppCNOprev = d_pCNOnext;
+  }
+}
+
+
+std::ostream& operator<<(std::ostream& out,
+                         const Context& context) throw(AssertionException) {
+  static const std::string separator(79, '-');
+
+  int level = context.d_scopeList.size() - 1;
+  typedef std::vector<Scope*>::const_reverse_iterator const_reverse_iterator;
+  for(const_reverse_iterator i = context.d_scopeList.rbegin();
+      i != context.d_scopeList.rend();
+      ++i, --level) {
+    Scope* pScope = *i;
+    Assert(pScope->getLevel() == level);
+    Assert(pScope->getContext() == &context);
+    out << separator << std::endl
+        << *pScope << std::endl;
+  }
+  return out << separator << std::endl;
+}
+
+
+std::ostream& operator<<(std::ostream& out,
+                         const Scope& scope) throw(AssertionException) {
+  out << "Scope " << scope.d_level << " [" << &scope << "]:";
+  ContextObj* pContextObj = scope.d_pContextObjList;
+  Assert(pContextObj == NULL ||
+         pContextObj->prev() == &scope.d_pContextObjList);
+  while(pContextObj != NULL) {
+    out << " <--> " << pContextObj;
+    if(pContextObj->d_pScope != &scope) {
+      out << " XXX bad scope" << std::endl;
+    }
+    Assert(pContextObj->d_pScope == &scope);
+    Assert(pContextObj->next() == NULL ||
+           pContextObj->next()->prev() == &pContextObj->next());
+    pContextObj = pContextObj->next();
+  }
+  return out << " --> NULL";
+}
+
+
+} /* CVC4::context namespace */
+} /* CVC4 namespace */
diff --git a/src/context/context.h b/src/context/context.h
new file mode 100644
index 0000000..f7707bd
--- /dev/null
+++ b/src/context/context.h
@@ -0,0 +1,751 @@
+/*********************                                                        */
+/*! \file context.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Clark Barrett, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Context class and context manager.
+ **
+ ** Context class and context manager.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__CONTEXT__CONTEXT_H
+#define __CVC4__CONTEXT__CONTEXT_H
+
+#include <iostream>
+#include <cstdlib>
+#include <cstring>
+#include <vector>
+#include <new>
+#include <typeinfo>
+
+#include "base/cvc4_assert.h"
+#include "base/output.h"
+#include "context/context_mm.h"
+
+
+namespace CVC4 {
+namespace context {
+
+class Context;
+class Scope;
+class ContextObj;
+class ContextNotifyObj;
+
+/** Pretty-printing of Contexts (for debugging) */
+std::ostream&
+operator<<(std::ostream&, const Context&) throw(AssertionException);
+
+/** Pretty-printing of Scopes (for debugging) */
+std::ostream&
+operator<<(std::ostream&, const Scope&) throw(AssertionException);
+
+/**
+ * A Context encapsulates all of the dynamic state of the system.  Its main
+ * methods are push() and pop().  A call to push() saves the current state,
+ * and a call to pop() restores the state saved by the most recent call to
+ * push().
+ *
+ * Objects which want to participate in this global save and restore
+ * mechanism must inherit from ContextObj (see below).
+ *
+ * For more flexible context-dependent behavior, objects may implement the
+ * ContextNotifyObj interface and simply get a notification when a pop has
+ * occurred.
+ *
+ * Context also uses a helper class called Scope which stores information
+ * specific to the portion of the Context since the last call to push() (see
+ * below).
+ *
+ * Memory allocation in Contexts is done with the help of the
+ * ContextMemoryManager.  A copy is stored in each Scope object for quick
+ * access.
+ */
+class Context {
+
+  /**
+   * Pointer to the ContextMemoryManager for this Context.
+   */
+  ContextMemoryManager* d_pCMM;
+
+  /**
+   * List of all scopes for this context.
+   */
+  std::vector<Scope*> d_scopeList;
+
+  /**
+   * Doubly-linked list of objects to notify before every pop.  See
+   * ContextNotifyObj for structure of linked list.
+   */
+  ContextNotifyObj* d_pCNOpre;
+
+  /**
+   * Doubly-linked list of objects to notify after every pop.  See
+   * ContextNotifyObj for structure of linked list.
+   */
+  ContextNotifyObj* d_pCNOpost;
+
+  friend std::ostream&
+  operator<<(std::ostream&, const Context&) throw(AssertionException);
+
+  // disable copy, assignment
+  Context(const Context&) CVC4_UNDEFINED;
+  Context& operator=(const Context&) CVC4_UNDEFINED;
+
+public:
+
+  /**
+   * A mechanism by which a "scoped" bit of contextual speculation can
+   * be applied.  One might create a Context::ScopedPush in a function
+   * (as a local variable on the stack), then manipulate some
+   * context-dependent data structures in some fashion, speculatively.
+   * When the ScopedPush goes out of scope and is destructed, the
+   * context-dependent data structures will return to their original
+   * state.
+   *
+   * When such speculation occurs in a lexically-scoped manner, like
+   * described above, it is FAR preferable to use ScopedPush than to
+   * call ->push() and ->pop() on the Context directly.  If you do the
+   * latter, it's extremely easy to forget to pop() on exceptional
+   * exit of the function, or if a short-circuited "early" return is
+   * later added to the function, etc.  Further, ScopedPush includes
+   * an assertion that the Context at the end looks like the Context
+   * at the beginning (the topmost Scope pointer should be the same).
+   * This assertion is only an approximate check for correct behavior,
+   * but should catch egregious mismatches of ->push() and ->pop()
+   * while the ScopedPush is being applied---egregious mismatches that
+   * could exist, for example, if a Theory does some speculative
+   * reasoning but accidently gives control back to some other mechanism
+   * which does some speculation which isn't properly scoped inside the
+   * first.
+   */
+  class ScopedPush {
+    Context* const d_context;
+    const Scope* const d_scope;
+  public:
+    ScopedPush(Context* ctxt) :
+      d_context(ctxt),
+      d_scope(d_context->getTopScope()) {
+      d_context->push();
+    }
+    ~ScopedPush() {
+      d_context->pop();
+      AlwaysAssert(d_context->getTopScope() == d_scope,
+                   "Context::ScopedPush observed an uneven Context (at pop, "
+                   "top scope doesn't match what it was at the time the "
+                   "ScopedPush was applied)");
+    }
+  };/* Context::ScopedPush */
+
+  /**
+   * Constructor: create ContextMemoryManager and initial Scope
+   */
+  Context();
+
+  /**
+   * Destructor: pop all scopes, delete ContextMemoryManager
+   */
+  ~Context();
+
+  /**
+   * Return the current (top) scope
+   */
+  Scope* getTopScope() const { return d_scopeList.back(); }
+
+  /**
+   * Return the initial (bottom) scope
+   */
+  Scope* getBottomScope() const { return d_scopeList[0]; }
+
+  /**
+   * Return the current Scope level.
+   */
+  int getLevel() const { return d_scopeList.size() - 1; }
+
+  /**
+   * Return the ContextMemoryManager associated with the context.
+   */
+  ContextMemoryManager* getCMM() { return d_pCMM; }
+
+  /**
+   * Save the current state, create a new Scope
+   */
+  void push();
+
+  /**
+   * Restore the previous state, delete the top Scope
+   */
+  void pop();
+
+  /**
+   * Pop all the way back to given level
+   */
+  void popto(int toLevel);
+
+  /**
+   * Add pCNO to the list of objects notified before every pop
+   */
+  void addNotifyObjPre(ContextNotifyObj* pCNO);
+
+  /**
+   * Add pCNO to the list of objects notified after every pop
+   */
+  void addNotifyObjPost(ContextNotifyObj* pCNO);
+
+};/* class Context */
+
+
+/**
+ * A UserContext is different from a Context only because it's used for
+ * different purposes---so separating the two types gives type errors where
+ * appropriate.
+ */
+class UserContext : public Context {
+private:
+  // disable copy, assignment
+  UserContext(const UserContext&) CVC4_UNDEFINED;
+  UserContext& operator=(const UserContext&) CVC4_UNDEFINED;
+public:
+  UserContext() {}
+};/* class UserContext */
+
+
+/**
+ * Conceptually, a Scope encapsulates that portion of the context that
+ * changes after a call to push() and must be undone on a subsequent call to
+ * pop().  In particular, each call to push() creates a new Scope object .
+ * This new Scope object becomes the top scope and it points (via the
+ * d_pScopePrev member) to the previous top Scope.  Each call to pop()
+ * deletes the current top scope and restores the previous one.  The main
+ * purpose of a Scope is to maintain a linked list of ContexObj objects which
+ * change while the Scope is the top scope and which must be restored when
+ * the Scope is deleted.
+ *
+ * A Scope is also associated with a ContextMemoryManager.  All memory
+ * allocated by the Scope is allocated in a single region using the
+ * ContextMemoryManager and released all at once when the Scope is popped.
+ */
+class Scope {
+
+  /**
+   * Context that created this Scope
+   */
+  Context* d_pContext;
+
+  /**
+   * Memory manager for this Scope.  Same as in Context, but stored here too
+   * for faster access by ContextObj objects.
+   */
+  ContextMemoryManager* d_pCMM;
+
+  /**
+   * Scope level (total number of outstanding push() calls when this Scope was
+   * created).
+   */
+  int d_level;
+
+  /**
+   * Linked list of objects which changed in this scope,
+   * and thus need to be restored when the scope is deleted.
+   */
+  ContextObj* d_pContextObjList;
+
+  friend std::ostream&
+  operator<<(std::ostream&, const Scope&) throw(AssertionException);
+
+public:
+
+  /**
+   * Constructor: Create a new Scope; set the level and the previous Scope
+   * if any.
+   */
+  Scope(Context* pContext, ContextMemoryManager* pCMM, int level) throw() :
+    d_pContext(pContext),
+    d_pCMM(pCMM),
+    d_level(level),
+    d_pContextObjList(NULL) {
+  }
+
+  /**
+   * Destructor: Restore all of the objects in ContextObjList.  Defined inline
+   * below.
+   */
+  ~Scope();
+
+  /**
+   * Get the Context for this Scope
+   */
+  Context* getContext() const throw() { return d_pContext; }
+
+  /**
+   * Get the ContextMemoryManager for this Scope
+   */
+  ContextMemoryManager* getCMM() const throw() { return d_pCMM; }
+
+  /**
+   * Get the level of the current Scope
+   */
+  int getLevel() const throw() { return d_level; }
+
+  /**
+   * Return true iff this Scope is the current top Scope
+   */
+  bool isCurrent() const throw() { return this == d_pContext->getTopScope(); }
+
+  /**
+   * When a ContextObj object is modified for the first time in this
+   * Scope, it should call this method to add itself to the list of
+   * objects that will need to be restored.  Defined inline below.
+   */
+  void addToChain(ContextObj* pContextObj) throw(AssertionException);
+
+  /**
+   * Overload operator new for use with ContextMemoryManager to allow
+   * creation of new Scope objects in the current memory region.
+   */
+  static void* operator new(size_t size, ContextMemoryManager* pCMM) {
+    Trace("context_mm") << "Scope::new " << size << " in " << pCMM << std::endl;
+    return pCMM->newData(size);
+  }
+
+  /**
+   * Overload operator delete for Scope objects allocated using
+   * ContextMemoryManager.  No need to do anything because memory is
+   * freed automatically when the ContextMemoryManager pop() method is
+   * called.  Include both placement and standard delete for
+   * completeness.
+   */
+  static void operator delete(void* pMem, ContextMemoryManager* pCMM) {}
+  static void operator delete(void* pMem) {}
+
+  //FIXME:  //! Check for memory leaks
+  //  void check();
+
+};/* class Scope */
+
+/**
+ * This is an abstract base class from which all objects that are
+ * context-dependent should inherit.  For any data structure that you
+ * want to have be automatically backtracked, do the following:
+ *
+ * 1. Create a class for the data structure that inherits from ContextObj
+ *
+ * 2. Implement save()
+ *    The role of save() is to create a new ContexObj object that contains
+ *    enough information to restore the object to its current state, even if
+ *    it gets changed later.  Note that save should call the (default)
+ *    ContextObj Copy Constructor to copy the information in the base class.
+ *    It is recommended that any memory allocated by save() should be done
+ *    through the ContextMemoryManager.  This way, it does not need to be
+ *    explicitly freed when restore is called.  However, it is only required
+ *    that the ContextObj itself be allocated using the
+ *    ContextMemoryManager.  If other memory is allocated not using the
+ *    ContextMemoryManager, it should be freed when restore() is called.  In
+ *    fact, any clean-up work on a saved object must be done by restore().
+ *    This is because the destructor is never called explicitly on saved
+ *    objects.
+ *
+ * 3. Implement restore()
+ *    The role of restore() is, given the ContextObj returned by a previous
+ *    call to save(), to restore the current object to the state it was in
+ *    when save() was called.  Note that the implementation of restore does
+ *    *not* need to worry about restoring the base class data.  This is done
+ *    automatically.  Ideally, restore() should not have to free any memory
+ *    as any memory allocated by save() should have been done using the
+ *    ContextMemoryManager (see item 2 above).
+ *
+ * 4. In the subclass implementation, any time the state is about to be
+ *    changed, first call makeCurrent().
+ *
+ * 5. In the subclass implementation, the destructor should call destroy(),
+ *    which repeatedly calls restore() until the object is restored to context
+ *    level 0.  Note, however, that if there is additional cleanup required at
+ *    level 0, destroy() does not do this.  It has to be implemented in the
+ *    destructor of the subclass.  The reason the destroy() functionality
+ *    cannot be in the ContextObj destructor is that it needs to call the
+ *    subclass-specific restore() method in order to properly clean up saved
+ *    copies.
+ *
+ * GOTCHAS WHEN ALLOCATING CONTEXTUAL OBJECTS WITH NON-STANDARD ALLOCATORS
+ *
+ * Be careful if you intend to allocate ContextObj in (for example)
+ * ContextMemoryManager memory.  ContextMemoryManager doesn't call the
+ * destructors of contained objects, which means the objects aren't
+ * properly unregistered from the Context (as in point #5, above).
+ * This can be remedied by allocating the ContextObj in the "top
+ * scope" rather than the "bottom scope" (which is what the
+ * "allocatedInCMM" flag to the special constructor in ContextObj
+ * does).
+ *
+ * But why allocate in CMM if it's so complicated?  There's a big
+ * advantage: you don't have to track the lifetime of the ContextObj.
+ * The object simply ceases to exist when the Context is popped.  Thus
+ * you can create an object in context memory, and if you stow
+ * pointers to it only in context memory as well, all is cleaned up
+ * for you when the scope pops.  Here's a list of gotchas:
+ *
+ * 1. For data structures intended solely to be allocated in context
+ *    memory, privately declare (but don't define) an operator
+ *    new(size_t) and destructor (as currently in the Link class, in
+ *    src/theory/uf/ecdata.h).
+ *
+ * 2. For data structures that may or may not be allocated in context
+ *    memory, and are designed to be that way (esp. if they contain
+ *    ContextObj instances), they should be heavily documented --
+ *    especially the destructor, since it _may_or_may_not_be_called_.
+ *
+ * 3. There's also an issue for generic code -- some class Foo<T>
+ *    might be allocated in context memory, and that might normally be
+ *    fine, but if T is a ContextObj this requires certain care.
+ *
+ * 4. Note that certain care is required for ContextObj inside of data
+ *    structures.  If the (enclosing) data structure can be allocated
+ *    in CMM, that means the (enclosed) ContextObj can be, even if it
+ *    was not designed to be allocated in that way.  In many
+ *    instances, it may be required that data structures enclosing
+ *    ContextObj be parameterized with a similar "bool allocatedInCMM"
+ *    argument as the special constructor in this class (and pass it
+ *    on to all ContextObj instances).
+ */
+class ContextObj {
+  /**
+   * Pointer to Scope in which this object was last modified.
+   */
+  Scope* d_pScope;
+
+  /**
+   * Pointer to most recent version of same ContextObj in a previous Scope
+   */
+  ContextObj* d_pContextObjRestore;
+
+  /**
+   * Next link in ContextObjList list maintained by Scope class.
+   */
+  ContextObj* d_pContextObjNext;
+
+  /**
+   * Previous link in ContextObjList list maintained by Scope class.  We use
+   * double-indirection here to make element deletion easy.
+   */
+  ContextObj** d_ppContextObjPrev;
+
+  /**
+   * Helper method for makeCurrent (see below).  Separated out to allow common
+   * case to be inlined without making a function call.  It calls save() and
+   * does the necessary bookkeeping to ensure that object can be restored to
+   * its current state when restore is called.
+   */
+  void update() throw(AssertionException);
+
+  // The rest of the private methods are for the benefit of the Scope.  We make
+  // Scope our friend so it is the only one that can use them.
+
+  friend class Scope;
+
+  friend std::ostream&
+  operator<<(std::ostream&, const Scope&) throw(AssertionException);
+
+  /**
+   * Return reference to next link in ContextObjList.  Used by
+   * Scope::addToChain method.
+   */
+  ContextObj*& next() throw() { return d_pContextObjNext; }
+
+  /**
+   * Return reference to prev link in ContextObjList.  Used by
+   * Scope::addToChain method.
+   */
+  ContextObj**& prev() throw() { return d_ppContextObjPrev; }
+
+  /**
+   * This method is called by Scope during a pop: it does the necessary work to
+   * restore the object from its saved copy and then returns the next object in
+   * the list that needs to be restored.
+   */
+  ContextObj* restoreAndContinue() throw(AssertionException);
+
+protected:
+
+  /**
+   * This is a method that must be implemented by all classes inheriting from
+   * ContextObj.  See the comment before the class declaration.
+   */
+  virtual ContextObj* save(ContextMemoryManager* pCMM) = 0;
+
+  /**
+   * This is a method that must be implemented by all classes inheriting from
+   * ContextObj.  See the comment before the class declaration.
+   */
+  virtual void restore(ContextObj* pContextObjRestore) = 0;
+
+  /**
+   * This method checks if the object has been modified in this Scope
+   * yet.  If not, it calls update().
+   */
+  inline void makeCurrent() throw(AssertionException);
+
+  /**
+   * Just calls update(), but given a different name for the derived
+   * class-facing interface.  This is a "forced" makeCurrent(), useful
+   * for ContextObjs allocated in CMM that need a special "bottom"
+   * case when they disappear out of existence (kind of a destructor).
+   * See CDOhash_map (in cdhashmap.h) for an example.
+   */
+  inline void makeSaveRestorePoint() throw(AssertionException);
+
+  /**
+   * Should be called from sub-class destructor: calls restore until restored
+   * to initial version (version at context level 0).  Also removes object from
+   * all Scope lists.  Note that this doesn't actually free the memory
+   * allocated by the ContextMemoryManager for this object.  This isn't done
+   * until the corresponding Scope is popped.
+   */
+  void destroy() throw(AssertionException);
+
+  /////
+  //
+  //  These next four accessors return properties of the Scope to
+  //  derived classes without giving them the Scope object directly.
+  //
+  /////
+
+  /**
+   * Get the Context with which this ContextObj was created.  This is
+   * part of the protected interface, intended for derived classes to
+   * use if necessary.
+   */
+  Context* getContext() const throw() {
+    return d_pScope->getContext();
+  }
+
+  /**
+   * Get the ContextMemoryManager with which this ContextObj was
+   * created.  This is part of the protected interface, intended for
+   * derived classes to use if necessary.  If a ContextObj-derived
+   * class needs to allocate memory somewhere other than the save()
+   * member function (where it is explicitly given a
+   * ContextMemoryManager), it can use this accessor to get the memory
+   * manager.
+   */
+  ContextMemoryManager* getCMM() const throw() {
+    return d_pScope->getCMM();
+  }
+
+  /**
+   * Get the level associated to this ContextObj.  Useful if a
+   * ContextObj-derived class needs to compare the level of its last
+   * update with another ContextObj.
+   */
+  int getLevel() const throw() {
+    return d_pScope->getLevel();
+  }
+
+  /**
+   * Returns true if the object is "current"-- that is, updated in the
+   * topmost contextual scope.  Useful if a ContextObj-derived class
+   * needs to determine if it has been modified in the current scope.
+   * Note that it is always safe to call makeCurrent() without first
+   * checking if the object is current, so this function need not be
+   * used under normal circumstances.
+   */
+  bool isCurrent() const throw() {
+    return d_pScope->isCurrent();
+  }
+
+public:
+
+  /**
+   * Disable delete: objects allocated with new(ContextMemorymanager) should
+   * never be deleted.  Objects allocated with new(bool) should be deleted by
+   * calling deleteSelf().
+   */
+  static void operator delete(void* pMem) {
+    AlwaysAssert(false, "It is not allowed to delete a ContextObj this way!");
+  }
+
+  /**
+   * operator new using ContextMemoryManager (common case used by
+   * subclasses during save()).  No delete is required for memory
+   * allocated this way, since it is automatically released when the
+   * context is popped.  Also note that allocations using this
+   * operator never have their destructor called, so any clean-up has
+   * to be done using the restore method.
+   */
+  static void* operator new(size_t size, ContextMemoryManager* pCMM) {
+    Trace("context_mm") << "Context::new " << size << " in " << pCMM << std::endl;
+    return pCMM->newData(size);
+  }
+
+  /**
+   * Corresponding placement delete.  Note that this is provided just
+   * to satisfy the requirement that a placement delete should be
+   * provided for every placement new.  It would only be called if a
+   * ContextObj constructor throws an exception after a successful
+   * call to the above new operator.
+   */
+  static void operator delete(void* pMem, ContextMemoryManager* pCMM) {}
+
+  /**
+   * Create a new ContextObj.  The initial scope is set to the bottom
+   * scope of the Context.  Note that in the common case, the copy
+   * constructor is called to create new ContextObj objects.  The
+   * default copy constructor does the right thing, so we do not
+   * explicitly define it.
+   */
+  ContextObj(Context* context);
+
+  /**
+   * Create a new ContextObj.  This constructor takes an argument that
+   * specifies whether this ContextObj is itself allocated in context
+   * memory.  If it is, it's invalid below the current scope level, so
+   * we don't put it in scope 0.
+   *
+   * WARNING: Read the notes above on "Gotchas when allocating
+   * contextual objects with non-standard allocators."
+   */
+  ContextObj(bool allocatedInCMM, Context* context);
+
+  /**
+   * Destructor does nothing: subclass must explicitly call destroy() instead.
+   */
+  virtual ~ContextObj() {}
+
+  /**
+   * If you want to allocate a ContextObj object on the heap, use this
+   * special new operator.  To free this memory, instead of
+   * "delete p", use "p->deleteSelf()".
+   */
+  static void* operator new(size_t size, bool) {
+    return ::operator new(size);
+  }
+
+  /**
+   * Corresponding placement delete.  Note that this is provided for
+   * the compiler in case the ContextObj constructor throws an
+   * exception.  The client can't call it.
+   */
+  static void operator delete(void* pMem, bool) {
+    ::operator delete(pMem);
+  }
+
+  /**
+   * Use this instead of delete to delete memory allocated using the special
+   * new function provided above that takes a bool argument.  Do not call this
+   * function on memory allocated using the new that takes a
+   * ContextMemoryManager as an argument.
+   */
+  void deleteSelf() {
+    Debug("context") << "deleteSelf(" << this << ") " << typeid(*this).name() << std::endl;
+    this->~ContextObj();
+    ::operator delete(this);
+  }
+
+};/* class ContextObj */
+
+/**
+ * For more flexible context-dependent behavior than that provided by
+ * ContextObj, objects may implement the ContextNotifyObj interface
+ * and simply get a notification when a pop has occurred.  See
+ * Context class for how to register a ContextNotifyObj with the
+ * Context (you can choose to have notification come before or after
+ * the ContextObj objects have been restored).
+ */
+class ContextNotifyObj {
+
+  /**
+   * Context is our friend so that when the Context is deleted, any
+   * remaining ContextNotifyObj can be removed from the Context list.
+   */
+  friend class Context;
+
+  /**
+   * Pointer to next ContextNotifyObject in this List
+   */
+  ContextNotifyObj* d_pCNOnext;
+
+  /**
+   * Pointer to previous ContextNotifyObject in this list
+   */
+  ContextNotifyObj** d_ppCNOprev;
+
+  /**
+   * Return reference to next link in ContextNotifyObj list.  Used by
+   * Context::addNotifyObj methods.
+   */
+  ContextNotifyObj*& next() throw() { return d_pCNOnext; }
+
+  /**
+   * Return reference to prev link in ContextNotifyObj list.  Used by
+   * Context::addNotifyObj methods.
+   */
+  ContextNotifyObj**& prev() throw() { return d_ppCNOprev; }
+
+protected:
+
+  /**
+   * This is the method called to notify the object of a pop.  It must be
+   * implemented by the subclass. It is protected since context is out
+   * friend.
+   */
+  virtual void contextNotifyPop() = 0;
+
+public:
+
+  /**
+   * Constructor for ContextNotifyObj.  Parameters are the context to
+   * which this notify object will be added, and a flag which, if
+   * true, tells the context to notify this object *before* the
+   * ContextObj objects are restored.  Otherwise, the context notifies
+   * the object after the ContextObj objects are restored.  The
+   * default is for notification after.
+   */
+  ContextNotifyObj(Context* pContext, bool preNotify = false);
+
+  /**
+   * Destructor: removes object from list
+   */
+  virtual ~ContextNotifyObj();
+
+};/* class ContextNotifyObj */
+
+inline void ContextObj::makeCurrent() throw(AssertionException) {
+  if(!(d_pScope->isCurrent())) {
+    update();
+  }
+}
+
+inline void ContextObj::makeSaveRestorePoint() throw(AssertionException) {
+  update();
+}
+
+inline Scope::~Scope() {
+  // Call restore() method on each ContextObj object in the list.
+  // Note that it is the responsibility of restore() to return the
+  // next item in the list.
+  while(d_pContextObjList != NULL) {
+    d_pContextObjList = d_pContextObjList->restoreAndContinue();
+  }
+}
+
+inline void
+Scope::addToChain(ContextObj* pContextObj) throw(AssertionException) {
+  if(d_pContextObjList != NULL) {
+    d_pContextObjList->prev() = &pContextObj->next();
+  }
+
+  pContextObj->next() = d_pContextObjList;
+  pContextObj->prev() = &d_pContextObjList;
+  d_pContextObjList = pContextObj;
+}
+
+}/* CVC4::context namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__CONTEXT__CONTEXT_H */
diff --git a/src/context/context_mm.cpp b/src/context/context_mm.cpp
new file mode 100644
index 0000000..ac7d7f8
--- /dev/null
+++ b/src/context/context_mm.cpp
@@ -0,0 +1,132 @@
+/*********************                                                        */
+/*! \file context_mm.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Clark Barrett, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of Context Memory Manager.
+ **
+ ** Implementation of Context Memory Manager
+ **/
+
+
+#include <cstdlib>
+#include <vector>
+#include <deque>
+#include <new>
+
+#include "base/cvc4_assert.h"
+#include "base/output.h"
+#include "context/context_mm.h"
+
+namespace CVC4 {
+namespace context {
+
+void ContextMemoryManager::newChunk() {
+
+  // Increment index to chunk list
+  ++d_indexChunkList;
+  Assert(d_chunkList.size() == d_indexChunkList,
+         "Index should be at the end of the list");
+
+  // Create new chunk if no free chunk available
+  if(d_freeChunks.empty()) {
+    d_chunkList.push_back((char*)malloc(chunkSizeBytes));
+    if(d_chunkList.back() == NULL) {
+      throw std::bad_alloc();
+    }
+  }
+  // If there is a free chunk, use that
+  else {
+    d_chunkList.push_back(d_freeChunks.back());
+    d_freeChunks.pop_back();
+  }
+  // Set up the current chunk pointers
+  d_nextFree = d_chunkList.back();
+  d_endChunk = d_nextFree + chunkSizeBytes;
+}
+
+
+ContextMemoryManager::ContextMemoryManager() : d_indexChunkList(0) {
+  // Create initial chunk
+  d_chunkList.push_back((char*)malloc(chunkSizeBytes));
+  d_nextFree = d_chunkList.back();
+  if(d_nextFree == NULL) {
+    throw std::bad_alloc();
+  }
+  d_endChunk = d_nextFree + chunkSizeBytes;
+}
+
+
+ContextMemoryManager::~ContextMemoryManager() {
+  // Delete all chunks
+  while(!d_chunkList.empty()) {
+    free(d_chunkList.back());
+    d_chunkList.pop_back();
+  }
+  while(!d_freeChunks.empty()) {
+    free(d_freeChunks.back());
+    d_freeChunks.pop_back();
+  }
+}
+
+
+void* ContextMemoryManager::newData(size_t size) {
+  // Use next available free location in current chunk
+  void* res = (void*)d_nextFree;
+  d_nextFree += size;
+  // Check if the request is too big for the chunk
+  if(d_nextFree > d_endChunk) {
+    newChunk();
+    res = (void*)d_nextFree;
+    d_nextFree += size;
+    AlwaysAssert(d_nextFree <= d_endChunk,
+                 "Request is bigger than memory chunk size");
+  }
+  Debug("context") << "ContextMemoryManager::newData(" << size
+                   << ") returning " << res << " at level "
+                   << d_chunkList.size() << std::endl;
+  return res;
+}
+
+
+void ContextMemoryManager::push() {
+  // Store current state on the stack
+  d_nextFreeStack.push_back(d_nextFree);
+  d_endChunkStack.push_back(d_endChunk);
+  d_indexChunkListStack.push_back(d_indexChunkList);
+}
+
+
+void ContextMemoryManager::pop() {
+  Assert(d_nextFreeStack.size() > 0 && d_endChunkStack.size() > 0);
+
+  // Restore state from stack
+  d_nextFree = d_nextFreeStack.back();
+  d_nextFreeStack.pop_back();
+  d_endChunk = d_endChunkStack.back();
+  d_endChunkStack.pop_back();
+
+  // Free all the new chunks since the last push
+  while(d_indexChunkList > d_indexChunkListStack.back()) {
+    d_freeChunks.push_back(d_chunkList.back());
+    d_chunkList.pop_back();
+    --d_indexChunkList;
+  }
+  d_indexChunkListStack.pop_back();
+
+  // Delete excess free chunks
+  while(d_freeChunks.size() > maxFreeChunks) {
+    free(d_freeChunks.front());
+    d_freeChunks.pop_front();
+  }
+}
+
+
+} /* CVC4::context namespace */
+} /* CVC4 namespace */
diff --git a/src/context/context_mm.h b/src/context/context_mm.h
new file mode 100644
index 0000000..673fb90
--- /dev/null
+++ b/src/context/context_mm.h
@@ -0,0 +1,201 @@
+/*********************                                                        */
+/*! \file context_mm.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Clark Barrett, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Region-based memory manager with stack-based push and pop.
+ **
+ ** Region-based memory manager with stack-based push and pop.  Designed
+ ** for use by ContextManager.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__CONTEXT__CONTEXT_MM_H
+#define __CVC4__CONTEXT__CONTEXT_MM_H
+
+#include <vector>
+#include <deque>
+
+namespace CVC4 {
+namespace context {
+
+/**
+ * Region-based memory manager for contexts.  Calls to newData provide memory
+ * from the current region.  This memory will persist until the entire
+ * region is deallocated (by calling pop).
+ *
+ * If push is called, the current region is deactivated and pushed on a
+ * stack, and a new current region is created.  A subsequent call to pop
+ * releases the new region and restores the top region from the stack.
+ *
+ */
+class ContextMemoryManager {
+
+  /**
+   * Memory in regions is allocated in chunks.  This is the chunk size
+   */
+  static const unsigned chunkSizeBytes = 16384;
+
+  /**
+   * A list of free chunks is maintained.  This is the maximum number of
+   * free chunks.
+   */
+  static const unsigned maxFreeChunks = 100;
+
+  /**
+   * List of all chunks that are currently active
+   */
+  std::vector<char*> d_chunkList;
+
+  /**
+   * Queue of free chunks (for best cache performance, LIFO order is used)
+   */
+  std::deque<char*> d_freeChunks;
+
+  /**
+   * Pointer to the beginning of available memory in the current chunk in
+   * the current region.
+   */
+  char* d_nextFree;
+
+  /**
+   * Pointer to one past the last available byte in the current chunk in
+   * the current region.
+   */
+  char* d_endChunk;
+
+  /**
+   * The index in d_chunkList of the current chunk in the current region
+   */
+  unsigned d_indexChunkList;
+
+  /**
+   * Part of the stack of saved regions.  This vector stores the saved value
+   * of d_nextFree
+   */
+  std::vector<char*> d_nextFreeStack;
+
+  /**
+   * Part of the stack of saved regions.  This vector stores the saved value
+   * of d_endChunk.
+   */
+  std::vector<char*> d_endChunkStack;
+
+  /**
+   * Part of the stack of saved regions.  This vector stores the saved value
+   * of d_indexChunkList
+   */
+  std::vector<unsigned> d_indexChunkListStack;
+
+  /**
+   * Private method to grab a new chunk for the current region.  Uses chunk
+   * from d_freeChunks if available.  Creates a new one otherwise.  Sets the
+   * new chunk to be the current chunk.
+   */
+  void newChunk();
+
+public:
+
+  /**
+   * Get the maximum allocation size for this memory manager.
+   */
+  static unsigned getMaxAllocationSize() {
+    return chunkSizeBytes;
+  }
+
+  /**
+   * Constructor - creates an initial region and an empty stack
+   */
+  ContextMemoryManager();
+
+  /**
+   * Destructor - deletes all memory in all regions
+   */
+  ~ContextMemoryManager();
+
+  /**
+   * Allocate size bytes from the current region
+   */
+  void* newData(size_t size);
+
+  /**
+   * Create a new region.  Push old region on the stack.
+   */
+  void push();
+
+  /**
+   * Delete all memory allocated in the current region and restore the top
+   * region from the stack
+   */
+  void pop();
+
+};/* class ContextMemoryManager */
+
+/**
+ * An STL-like allocator class for allocating from context memory.
+ */
+template <class T>
+class ContextMemoryAllocator {
+  ContextMemoryManager* d_mm;
+
+public:
+
+  typedef size_t size_type;
+  typedef std::ptrdiff_t difference_type;
+  typedef T* pointer;
+  typedef T const* const_pointer;
+  typedef T& reference;
+  typedef T const& const_reference;
+  typedef T value_type;
+  template <class U> struct rebind {
+    typedef ContextMemoryAllocator<U> other;
+  };
+
+  ContextMemoryAllocator(ContextMemoryManager* mm) throw() : d_mm(mm) {}
+  template <class U>
+  ContextMemoryAllocator(const ContextMemoryAllocator<U>& alloc) throw() : d_mm(alloc.getCMM()) {}
+  ~ContextMemoryAllocator() {}
+
+  ContextMemoryManager* getCMM() const { return d_mm; }
+  T* address(T& v) const { return &v; }
+  T const* address(T const& v) const { return &v; }
+  size_t max_size() const throw() {
+    return ContextMemoryManager::getMaxAllocationSize() / sizeof(T);
+  }
+  T* allocate(size_t n, const void* = 0) const {
+    return static_cast<T*>(d_mm->newData(n * sizeof(T)));
+  }
+  void deallocate(T* p, size_t n) const {
+    /* no explicit delete */
+  }
+  void construct(T* p, T const& v) const {
+    ::new(reinterpret_cast<void*>(p)) T(v);
+  }
+  void destroy(T* p) const {
+    p->~T();
+  }
+};/* class ContextMemoryAllocator<T> */
+
+template <class T>
+inline bool operator==(const ContextMemoryAllocator<T>& a1,
+                       const ContextMemoryAllocator<T>& a2) {
+  return a1.d_mm == a2.d_mm;
+}
+
+template <class T>
+inline bool operator!=(const ContextMemoryAllocator<T>& a1,
+                       const ContextMemoryAllocator<T>& a2) {
+  return a1.d_mm != a2.d_mm;
+}
+
+}/* CVC4::context namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__CONTEXT__CONTEXT_MM_H */
diff --git a/src/context/stacking_vector.h b/src/context/stacking_vector.h
new file mode 100644
index 0000000..4b482c9
--- /dev/null
+++ b/src/context/stacking_vector.h
@@ -0,0 +1,114 @@
+/*********************                                                        */
+/*! \file stacking_vector.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Backtrackable vector using an undo stack
+ **
+ ** Backtrackable vector using an undo stack rather than storing items in
+ ** a CDVector<>.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__CONTEXT__STACKING_VECTOR_H
+#define __CVC4__CONTEXT__STACKING_VECTOR_H
+
+#include <utility>
+#include <vector>
+
+#include "context/cdo.h"
+
+namespace CVC4 {
+namespace context {
+
+template <class T>
+class StackingVector : context::ContextNotifyObj {
+  /** Our underlying map type. */
+  typedef std::vector<T> VectorType;
+
+  /** Our map of indices to their values. */
+  VectorType d_map;
+
+  /** Our undo stack for changes made to d_map. */
+  std::vector<std::pair<size_t, T> > d_trace;
+
+  /** Our current offset in the d_trace stack (context-dependent). */
+  context::CDO<size_t> d_offset;
+
+public:
+  typedef typename VectorType::const_iterator const_iterator;
+
+  StackingVector(context::Context* ctxt) :
+    context::ContextNotifyObj(ctxt),
+    d_offset(ctxt, 0) {
+  }
+
+  ~StackingVector() { }
+
+  /**
+   * Return a value from the vector.  If n is not a key in
+   * the map, this function returns a default-constructed T.
+   */
+  T operator[](size_t n) const {
+    return n < d_map.size() ? d_map[n] : T();
+  }
+  //T& operator[](ArgType n) { return d_map[n]; }// not permitted--bypasses set() logic
+
+  /**
+   * Set the value in the key-value map for Node n to newValue.
+   */
+  void set(size_t n, const T& newValue);
+
+  /**
+   * Return the current size of the vector.  Note that once a certain
+   * size is achieved, the size never goes down again, although the
+   * elements off the old end of the vector will be replaced with
+   * default-constructed T values.
+   */
+  size_t size() const {
+    return d_map.size();
+  }
+
+  /**
+   * Called by the Context when a pop occurs.  Cancels everything to the
+   * current context level.  Overrides ContextNotifyObj::notify().
+   */
+  void contextNotifyPop();
+
+};/* class StackingVector<> */
+
+template <class T>
+void StackingVector<T>::set(size_t n, const T& newValue) {
+  Trace("sv") << "SV setting " << n << " : " << newValue << " @ " << d_trace.size() << std::endl;
+  if(n >= d_map.size()) {
+    d_map.resize(n + 1);
+  }
+  T& ref = d_map[n];
+  d_trace.push_back(std::make_pair(n, T(ref)));
+  d_offset = d_trace.size();
+  ref = newValue;
+}
+
+template <class T>
+void StackingVector<T>::contextNotifyPop() {
+  Trace("sv") << "SV cancelling : " << d_offset << " < " << d_trace.size() << " ?" << std::endl;
+  while(d_offset < d_trace.size()) {
+    std::pair<size_t, T> p = d_trace.back();
+    Trace("sv") << "SV cancelling: " << p.first << " back to " << p.second << std::endl;
+    d_map[p.first] = p.second;
+    d_trace.pop_back();
+  }
+  Trace("sv") << "SV cancelling finished." << std::endl;
+}
+
+}/* CVC4::context namespace */
+}/* CVC4 namespace */
+
+#endif /*__CVC4__CONTEXT__STACKING_VECTOR_H */
diff --git a/src/cvc4.i b/src/cvc4.i
new file mode 100644
index 0000000..c950bb4
--- /dev/null
+++ b/src/cvc4.i
@@ -0,0 +1,364 @@
+%import "bindings/swig.h"
+
+%include "stdint.i"
+%include "stl.i"
+
+%module CVC4
+// nspace completely broken with Java packaging
+//%nspace;
+
+namespace std {
+  class istream;
+  class ostream;
+  template <class T> class set {};
+  template <class K, class V, class H> class hash_map {};
+}
+
+%{
+// Perl's headers define "seed" to Perl_seed, which breaks
+// gmpxx.h; undo the damage for our CVC4 module.
+#ifdef SWIGPERL
+#  undef seed
+#endif /* SWIGPERL */
+
+// OCaml's headers define "invalid_argument" and "flush" to
+// caml_invalid_argument and caml_flush, which breaks C++
+// standard headers; undo this damage
+//
+// Unfortunately, this code isn't inserted early enough.  swig puts
+// an include <stdexcept> very early, which breaks linking due to a
+// nonexistent std::caml_invalid_argument symbol.. ridiculous!
+//
+#ifdef SWIGOCAML
+#  if defined(flush) || defined(invalid_argument)
+#    error "flush" or "invalid_argument" (or both) is defined by the ocaml headers.  You must #undef it above before inclusion of <stdexcept>.
+#  endif /* flush */
+#  undef flush
+#  undef invalid_argument
+#endif /* SWIGOCAML */
+
+namespace CVC4 {}
+using namespace CVC4;
+
+#include <cassert>
+#include <ext/hash_map>
+#include <iosfwd>
+#include <set>
+#include <string>
+#include <typeinfo>
+#include <vector>
+
+#include "base/exception.h"
+#include "base/modal_exception.h"
+#include "expr/datatype.h"
+#include "expr/expr.h"
+#include "expr/type.h"
+#include "options/option_exception.h"
+#include "smt/command.h"
+#include "util/bitvector.h"
+#include "util/integer.h"
+#include "util/sexpr.h"
+#include "util/unsafe_interrupt_exception.h"
+
+#ifdef SWIGJAVA
+#include "bindings/java_stream_adapters.h"
+std::set<JavaInputStreamAdapter*> CVC4::JavaInputStreamAdapter::s_adapters;
+#endif
+%}
+
+#ifdef SWIGPYTHON
+%pythonappend CVC4::SmtEngine::SmtEngine %{
+  self.thisown = 0
+%}
+%pythonappend CVC4::ExprManager::ExprManager %{
+  self.thisown = 0
+%}
+#endif /* SWIGPYTHON */
+
+%template(vectorCommandPtr) std::vector< CVC4::Command* >;
+%template(vectorType) std::vector< CVC4::Type >;
+%template(vectorExpr) std::vector< CVC4::Expr >;
+%template(vectorUnsignedInt) std::vector< unsigned int >;
+%template(vectorVectorExpr) std::vector< std::vector< CVC4::Expr > >;
+%template(vectorDatatypeType) std::vector< CVC4::DatatypeType >;
+%template(vectorSExpr) std::vector< CVC4::SExpr >;
+%template(vectorString) std::vector< std::string >;
+%template(vectorPairStringType) std::vector< std::pair< std::string, CVC4::Type > >;
+%template(pairStringType) std::pair< std::string, CVC4::Type >;
+%template(setOfType) std::set< CVC4::Type >;
+%template(hashmapExpr) std::hash_map< CVC4::Expr, CVC4::Expr, CVC4::ExprHashFunction >;
+
+// This is unfortunate, but seems to be necessary; if we leave NULL
+// defined, swig will expand it to "(void*) 0", and some of swig's
+// helper functions won't compile properly.
+#undef NULL
+
+#ifdef SWIGJAVA
+
+#include "bindings/java_iterator_adapter.h"
+#include "bindings/java_stream_adapters.h"
+
+%exception %{
+  try {
+    $action
+  } catch(CVC4::Exception& e) {
+    std::stringstream ss;
+    ss << e.what() << ": " << e.getMessage();
+    std::string explanation = ss.str();
+    SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, explanation.c_str());
+  }
+%}
+
+// Create a mapping from C++ Exceptions to Java Exceptions.
+// This is in a couple of throws typemaps, simply because it's sensitive to SWIG's concept of which namespace we're in.
+%typemap(throws) Exception %{
+  std::string name = "edu/nyu/acsys/CVC4/$1_type";
+  /*
+  size_t i = name.find("::");
+  if(i != std::string::npos) {
+    size_t j = name.rfind("::");
+    assert(i <= j);
+    name.replace(i, j - i + 2, "/");
+  }
+  */
+  jclass clazz = jenv->FindClass(name.c_str());
+  assert(clazz != NULL && jenv->ExceptionOccurred() == NULL);
+  jmethodID method = jenv->GetMethodID(clazz, "<init>", "(JZ)V");
+  assert(method != NULL && jenv->ExceptionOccurred() == NULL);
+  jthrowable t = static_cast<jthrowable>(jenv->NewObject(clazz, method, reinterpret_cast<long>(new $1_type($1)), true));
+  assert(t != NULL && jenv->ExceptionOccurred() == NULL);
+  int status = jenv->Throw(t);
+  assert(status == 0);
+%}
+%typemap(throws) CVC4::Exception %{
+  std::string name = "edu/nyu/acsys/$1_type";
+  size_t i = name.find("::");
+  if(i != std::string::npos) {
+    size_t j = name.rfind("::");
+    assert(i <= j);
+    name.replace(i, j - i + 2, "/");
+  }
+  jclass clazz = jenv->FindClass(name.c_str());
+  assert(clazz != NULL && jenv->ExceptionOccurred() == NULL);
+  jmethodID method = jenv->GetMethodID(clazz, "<init>", "(JZ)V");
+  assert(method != NULL && jenv->ExceptionOccurred() == NULL);
+  jthrowable t = static_cast<jthrowable>(jenv->NewObject(clazz, method, reinterpret_cast<long>(new $1_type($1)), true));
+  assert(t != NULL && jenv->ExceptionOccurred() == NULL);
+  int status = jenv->Throw(t);
+  assert(status == 0);
+%}
+
+%typemap(throws) CVC4::ModalException = CVC4::Exception;
+%typemap(throws) CVC4::LogicException = CVC4::Exception;
+%typemap(throws) CVC4::OptionException = CVC4::Exception;
+%typemap(throws) CVC4::IllegalArgumentException = CVC4::Exception;
+%typemap(throws) CVC4::AssertionException = CVC4::Exception;
+
+%typemap(throws) CVC4::TypeCheckingException = CVC4::Exception;
+%typemap(throws) CVC4::ScopeException = CVC4::Exception;
+%typemap(throws) CVC4::IllegalArgumentException = CVC4::Exception;
+%typemap(throws) IllegalArgumentException = Exception;
+%typemap(throws) CVC4::AssertionException = CVC4::Exception;
+
+// TIM: Really unclear why both of these are required
+%typemap(throws) CVC4::UnsafeInterruptException = CVC4::Exception;
+%typemap(throws) UnsafeInterruptException = CVC4::Exception;
+%typemap(throws) CVC4::parser::InputStreamException = CVC4::Exception;
+%typemap(throws) CVC4::parser::ParserException = CVC4::Exception;
+
+%typemap(throws) CVC4::RationalFromDoubleException = Exception;
+
+// Generate an error if the mapping from C++ CVC4 Exception to Java CVC4 Exception doesn't exist above
+%typemap(throws) SWIGTYPE, SWIGTYPE &, SWIGTYPE *, SWIGTYPE [], SWIGTYPE [ANY] %{
+#error "exception $1_type doesn't map to Java correctly---please edit src/cvc4.i and add it"
+%}
+
+%include "java/typemaps.i" // primitive pointers and references
+%include "java/std_string.i" // map std::string to java.lang.String
+%include "java/arrays_java.i" // C arrays to Java arrays
+%include "java/various.i" // map char** to java.lang.String[]
+
+// Functions on the C++ side taking std::ostream& should on the Java side
+// take a java.io.OutputStream.  A JavaOutputStreamAdapter is created in
+// the wrapper which creates and passes on a std::stringstream to the C++
+// function.  Then on exit, the string from the stringstream is dumped to
+// the Java-side OutputStream.
+%typemap(jni) std::ostream& "jlong"
+%typemap(jtype) std::ostream& "long"
+%typemap(jstype) std::ostream& "java.io.OutputStream"
+%typemap(javain,
+         pre="    edu.nyu.acsys.CVC4.JavaOutputStreamAdapter temp$javainput = new edu.nyu.acsys.CVC4.JavaOutputStreamAdapter();", pgcppname="temp$javainput",
+         post="    new java.io.PrintStream($javainput).print(temp$javainput.toString());")
+         std::ostream& "edu.nyu.acsys.CVC4.JavaOutputStreamAdapter.getCPtr(temp$javainput)"
+
+%typemap(jni) std::istream& "jlong"
+%typemap(jtype) std::istream& "long"
+%typemap(jstype) std::istream& "java.io.InputStream"
+%typemap(javain,
+         pre="    edu.nyu.acsys.CVC4.JavaInputStreamAdapter temp$javainput = edu.nyu.acsys.CVC4.JavaInputStreamAdapter.get($javainput);", pgcppname="temp$javainput",
+         post="")
+         std::istream& "edu.nyu.acsys.CVC4.JavaInputStreamAdapter.getCPtr(temp$javainput)"
+%typemap(in) jobject inputStream %{
+  $1 = jenv->NewGlobalRef($input);
+%}
+%typemap(out) CVC4::JavaInputStreamAdapter* %{
+  $1->pull(jenv);
+  *(CVC4::JavaInputStreamAdapter **)&$result = $1;
+%}
+%typemap(javacode) CVC4::JavaInputStreamAdapter %{
+  private static java.util.HashMap<java.io.InputStream, JavaInputStreamAdapter> streams =
+    new java.util.HashMap<java.io.InputStream, JavaInputStreamAdapter>();
+  public static JavaInputStreamAdapter get(java.io.InputStream is) {
+    if(streams.containsKey(is)) {
+      return (JavaInputStreamAdapter) streams.get(is);
+    }
+    JavaInputStreamAdapter adapter = new JavaInputStreamAdapter(is);
+    streams.put(is, adapter);
+    return adapter;
+  }
+%}
+%typemap(javafinalize) CVC4::JavaInputStreamAdapter %{
+  protected void finalize() {
+    streams.remove(getInputStream());
+    delete();
+  }
+%}
+%ignore CVC4::JavaInputStreamAdapter::init(JNIEnv*);
+%ignore CVC4::JavaInputStreamAdapter::pullAdapters(JNIEnv*);
+%ignore CVC4::JavaInputStreamAdapter::pull(JNIEnv*);
+%javamethodmodifiers CVC4::JavaInputStreamAdapter::getInputStream() const "private";
+%javamethodmodifiers CVC4::JavaInputStreamAdapter::JavaInputStreamAdapter(jobject) "private";
+
+%exception CVC4::parser::Parser::nextCommand() %{
+  try {
+    CVC4::JavaInputStreamAdapter::pullAdapters(jenv);
+    $action
+  } catch(CVC4::Exception& e) {
+    std::stringstream ss;
+    ss << e.what() << ": " << e.getMessage();
+    std::string explanation = ss.str();
+    SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, explanation.c_str());
+  }
+%}
+%exception CVC4::parser::Parser::nextExpression() %{
+  try {
+    CVC4::JavaInputStreamAdapter::pullAdapters(jenv);
+    $action
+  } catch(CVC4::Exception& e) {
+    std::stringstream ss;
+    ss << e.what() << ": " << e.getMessage();
+    std::string explanation = ss.str();
+    SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, explanation.c_str());
+  }
+%}
+%exception CVC4::JavaInputStreamAdapter::~JavaInputStreamAdapter() %{
+  try {
+    jenv->DeleteGlobalRef(arg1->getInputStream());
+    $action
+  } catch(CVC4::Exception& e) {
+    std::stringstream ss;
+    ss << e.what() << ": " << e.getMessage();
+    std::string explanation = ss.str();
+    SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, explanation.c_str());
+  }
+%}
+
+/* Copied (and modified) from java.swg; the standard swig version causes
+ * negative BigInteger to be interpreted unsigned.  Here we throw an
+ * exception. */
+%typemap(in) unsigned long long {
+  jclass clazz;
+  jmethodID mid;
+  jbyteArray ba;
+  jbyte* bae;
+  jsize sz;
+  int i;
+
+  if (!$input) {
+    SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "BigInteger null");
+    return $null;
+  }
+  clazz = JCALL1(GetObjectClass, jenv, $input);
+  mid = JCALL3(GetMethodID, jenv, clazz, "toByteArray", "()[B");
+  ba = (jbyteArray)JCALL2(CallObjectMethod, jenv, $input, mid);
+  bae = JCALL2(GetByteArrayElements, jenv, ba, 0);
+  sz = JCALL1(GetArrayLength, jenv, ba);
+  if((bae[0] & 0x80) != 0) {
+    SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "BigInteger argument must be nonnegative.");
+  }
+  jsize test_sz = sz;
+  if(sz > 1 && bae[0] == 0) {
+    --test_sz;
+  }
+  if(test_sz > sizeof(unsigned long long)) {
+    SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "BigInteger argument out of bounds.");
+  }
+  $1 = 0;
+  for(i=0; i<sz; i++) {
+    $1 = ($1 << 8) | ($1_type)(unsigned char)bae[i];
+  }
+  JCALL3(ReleaseByteArrayElements, jenv, ba, bae, 0);
+}
+
+#endif /* SWIGJAVA */
+
+// TIM:
+// At the moment, the header includes seem to need to follow a special order.
+// I don't know why. I am following the build order 
+%include "base/configuration.i"
+%include "base/exception.i"
+%include "base/modal_exception.i"
+
+%include "options/language.i"
+
+// Tim: "util/integer.i" must come before util/{rational.i,bitvector.i}.
+%include "util/integer.i"
+%include "util/rational.i"
+%include "util/bitvector.i"
+
+// Tim: The remainder of util/.
+%include "util/bool.i"
+%include "util/cardinality.i"
+%include "util/hash.i"
+%include "util/proof.i"
+%include "util/regexp.i"
+%include "util/resource_manager.i"
+%include "util/result.i"
+%include "util/sexpr.i"
+%include "util/statistics.i"
+%include "util/subrange_bound.i"
+%include "util/tuple.i"
+%include "util/unsafe_interrupt_exception.i"
+
+%include "expr/uninterpreted_constant.i"
+%include "expr/array_store_all.i"
+%include "expr/ascription_type.i"
+%include "expr/emptyset.i"
+%include "expr/datatype.i"
+%include "expr/predicate.i"
+%include "expr/record.i"
+%include "proof/unsat_core.i"
+
+// TIM:
+// Have these before the rest of expr/.
+// Again, no clue why.
+%include "expr/array.i"
+%include "expr/kind.i"
+%include "expr/type.i"
+
+// TIM:
+// The remainder of the includes:
+%include "expr/expr.i"
+%include "expr/expr_manager.i"
+%include "expr/expr_stream.i"
+%include "expr/symbol_table.i"
+%include "expr/variable_type_map.i"
+%include "options/option_exception.i"
+%include "options/options.i"
+%include "parser/cvc4parser.i"
+%include "smt/command.i"
+%include "smt/logic_exception.i"
+%include "theory/logic_info.i"
+
+// Tim: This should come after "theory/logic_info.i".
+%include "smt/smt_engine.i"
diff --git a/src/decision/decision_attributes.h b/src/decision/decision_attributes.h
new file mode 100644
index 0000000..cc2c766
--- /dev/null
+++ b/src/decision/decision_attributes.h
@@ -0,0 +1,36 @@
+/*********************                                                        */
+/*! \file decision_attributes.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Rewriter attributes
+ **
+ ** Rewriter attributes.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__DECISION__DECISION_ATTRIBUTES_H
+#define __CVC4__DECISION__DECISION_ATTRIBUTES_H
+
+#include "options/decision_weight.h"
+#include "expr/attribute.h"
+
+namespace CVC4 {
+namespace decision {
+namespace attr {
+  struct DecisionWeightTag {};
+}/* CVC4::decision::attr namespace */
+
+typedef expr::Attribute<attr::DecisionWeightTag, DecisionWeight> DecisionWeightAttr;
+
+}/* CVC4::decision namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__DECISION__DECISION_ATTRIBUTES_H */
diff --git a/src/decision/decision_engine.cpp b/src/decision/decision_engine.cpp
new file mode 100644
index 0000000..71e4f4e
--- /dev/null
+++ b/src/decision/decision_engine.cpp
@@ -0,0 +1,128 @@
+/*********************                                                        */
+/*! \file decision_engine.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Decision engine
+ **
+ ** Decision engine
+ **/
+#include "decision/decision_engine.h"
+
+#include "decision/decision_attributes.h"
+#include "decision/justification_heuristic.h"
+#include "expr/node.h"
+#include "options/decision_mode.h"
+#include "options/decision_options.h"
+#include "options/smt_options.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+DecisionEngine::DecisionEngine(context::Context *sc,
+                               context::UserContext *uc) :
+  d_enabledStrategies(),
+  d_needIteSkolemMap(),
+  d_relevancyStrategy(NULL),
+  d_assertions(uc),
+  d_cnfStream(NULL),
+  d_satSolver(NULL),
+  d_satContext(sc),
+  d_userContext(uc),
+  d_result(sc, SAT_VALUE_UNKNOWN),
+  d_engineState(0)
+{
+  Trace("decision") << "Creating decision engine" << std::endl;
+}
+
+void DecisionEngine::init()
+{
+  Assert(d_engineState == 0);
+  d_engineState = 1;
+
+  Trace("decision-init") << "DecisionEngine::init()" << std::endl;
+  Trace("decision-init") << " * options->decisionMode: "
+                         << options::decisionMode() << std:: endl;
+  Trace("decision-init") << " * options->decisionStopOnly: "
+                         << options::decisionStopOnly() << std::endl;
+
+  if(options::decisionMode() == decision::DECISION_STRATEGY_INTERNAL) { }
+  if(options::decisionMode() == decision::DECISION_STRATEGY_JUSTIFICATION) {
+    ITEDecisionStrategy* ds =
+      new decision::JustificationHeuristic(this, d_userContext, d_satContext);
+    enableStrategy(ds);
+    d_needIteSkolemMap.push_back(ds);
+  }
+}
+
+
+void DecisionEngine::enableStrategy(DecisionStrategy* ds)
+{
+  d_enabledStrategies.push_back(ds);
+}
+
+void DecisionEngine::clearStrategies(){
+  for(unsigned i = 0; i < d_enabledStrategies.size(); ++i){
+    delete d_enabledStrategies[i];
+  }
+  d_enabledStrategies.clear();
+  d_needIteSkolemMap.clear();
+}
+
+bool DecisionEngine::isRelevant(SatVariable var)
+{
+  Debug("decision") << "isRelevant(" << var <<")" << std::endl;
+  if(d_relevancyStrategy != NULL) {
+    //Assert(d_cnfStream->hasNode(var));
+    return d_relevancyStrategy->isRelevant( d_cnfStream->getNode(SatLiteral(var)) );
+  } else {
+    return true;
+  }
+}
+
+SatValue DecisionEngine::getPolarity(SatVariable var)
+{
+  Debug("decision") << "getPolarity(" << var <<")" << std::endl;
+  if(d_relevancyStrategy != NULL) {
+    Assert(isRelevant(var));
+    return d_relevancyStrategy->getPolarity( d_cnfStream->getNode(SatLiteral(var)) );
+  } else {
+    return SAT_VALUE_UNKNOWN;
+  }
+}
+
+void DecisionEngine::addAssertions(const vector<Node> &assertions)
+{
+  Assert(false);  // doing this so that we revisit what to do
+                  // here. Currently not being used.
+
+  // d_result = SAT_VALUE_UNKNOWN;
+  // d_assertions.reserve(assertions.size());
+  // for(unsigned i = 0; i < assertions.size(); ++i)
+  //   d_assertions.push_back(assertions[i]);
+}
+
+void DecisionEngine::addAssertions(const vector<Node> &assertions,
+                                   unsigned assertionsEnd,
+                                   IteSkolemMap iteSkolemMap)
+{
+  // new assertions, reset whatever result we knew
+  d_result = SAT_VALUE_UNKNOWN;
+
+  // d_assertions.reserve(assertions.size());
+  for(unsigned i = 0; i < assertions.size(); ++i)
+    d_assertions.push_back(assertions[i]);
+
+  for(unsigned i = 0; i < d_needIteSkolemMap.size(); ++i)
+    d_needIteSkolemMap[i]->
+      addAssertions(assertions, assertionsEnd, iteSkolemMap);
+}
+
+}/* CVC4 namespace */
diff --git a/src/decision/decision_engine.h b/src/decision/decision_engine.h
new file mode 100644
index 0000000..66293d7
--- /dev/null
+++ b/src/decision/decision_engine.h
@@ -0,0 +1,232 @@
+/*********************                                                        */
+/*! \file decision_engine.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Decision engine
+ **
+ ** Decision engine
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__DECISION__DECISION_ENGINE_H
+#define __CVC4__DECISION__DECISION_ENGINE_H
+
+#include <vector>
+
+#include "base/output.h"
+#include "decision/decision_strategy.h"
+#include "expr/node.h"
+#include "prop/cnf_stream.h"
+#include "prop/prop_engine.h"
+#include "prop/sat_solver_types.h"
+#include "smt/term_formula_removal.h"
+#include "smt/smt_engine_scope.h"
+
+using namespace std;
+using namespace CVC4::prop;
+using namespace CVC4::decision;
+
+namespace CVC4 {
+
+class DecisionEngine {
+
+  vector <DecisionStrategy* > d_enabledStrategies;
+  vector <ITEDecisionStrategy* > d_needIteSkolemMap;
+  RelevancyStrategy* d_relevancyStrategy;
+
+  typedef context::CDList<Node> AssertionsList;
+  AssertionsList d_assertions;
+
+  // PropEngine* d_propEngine;
+  CnfStream* d_cnfStream;
+  DPLLSatSolverInterface* d_satSolver;
+
+  context::Context* d_satContext;
+  context::UserContext* d_userContext;
+
+  // Does decision engine know the answer?
+  context::CDO<SatValue> d_result;
+
+  // Disable creating decision engine without required parameters
+  DecisionEngine();
+
+  // init/shutdown state
+  unsigned d_engineState;    // 0=pre-init; 1=init,pre-shutdown; 2=shutdown
+public:
+  // Necessary functions
+
+  /** Constructor */
+  DecisionEngine(context::Context *sc, context::UserContext *uc);
+
+  /** Destructor, currently does nothing */
+  ~DecisionEngine() {
+    Trace("decision") << "Destroying decision engine" << std::endl;
+  }
+
+  // void setPropEngine(PropEngine* pe) {
+  //   // setPropEngine should not be called more than once
+  //   Assert(d_propEngine == NULL);
+  //   Assert(pe != NULL);
+  //   d_propEngine = pe;
+  // }
+
+  void setSatSolver(DPLLSatSolverInterface* ss) {
+    // setPropEngine should not be called more than once
+    Assert(d_satSolver == NULL);
+    Assert(ss != NULL);
+    d_satSolver = ss;
+  }
+
+  void setCnfStream(CnfStream* cs) {
+    // setPropEngine should not be called more than once
+    Assert(d_cnfStream == NULL);
+    Assert(cs != NULL);
+    d_cnfStream = cs;
+  }
+
+  /* enables decision stragies based on options */
+  void init();
+
+  /* clears all of the strategies */
+  void clearStrategies();
+
+
+  /**
+   * 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.
+   */
+  void shutdown() {
+    Assert(d_engineState == 1);
+    d_engineState = 2;
+
+    Trace("decision") << "Shutting down decision engine" << std::endl;
+    clearStrategies();
+  }
+
+  // Interface for External World to use our services
+
+  /** Gets the next decision based on strategies that are enabled */
+  SatLiteral getNext(bool &stopSearch) {
+    NodeManager::currentResourceManager()->spendResource(options::decisionStep());
+    Assert(d_cnfStream != NULL,
+           "Forgot to set cnfStream for decision engine?");
+    Assert(d_satSolver != NULL,
+           "Forgot to set satSolver for decision engine?");
+
+    SatLiteral ret = undefSatLiteral;
+    for(unsigned i = 0;
+        i < d_enabledStrategies.size()
+          and ret == undefSatLiteral
+          and stopSearch == false; ++i) {
+      ret = d_enabledStrategies[i]->getNext(stopSearch);
+    }
+    return ret;
+  }
+
+  /** Is a sat variable relevant */
+  bool isRelevant(SatVariable var);
+
+  /**
+   * Try to get tell SAT solver what polarity to try for a
+   * decision. Return SAT_VALUE_UNKNOWN if it can't help
+   */
+  SatValue getPolarity(SatVariable var);
+
+  /** Is the DecisionEngine in a state where it has solved everything? */
+  bool isDone() {
+    Trace("decision") << "DecisionEngine::isDone() returning "
+                      << (d_result != SAT_VALUE_UNKNOWN)
+                      << (d_result != SAT_VALUE_UNKNOWN ? "true" : "false")
+                      << std::endl;
+    return (d_result != SAT_VALUE_UNKNOWN);
+  }
+
+  /** */
+  Result getResult() {
+    switch(d_result.get()) {
+    case SAT_VALUE_TRUE: return Result(Result::SAT);
+    case SAT_VALUE_FALSE: return Result(Result::UNSAT);
+    case SAT_VALUE_UNKNOWN: return Result(Result::SAT_UNKNOWN, Result::UNKNOWN_REASON);
+    default: Assert(false, "d_result is garbage");
+    }
+    return Result();
+  }
+
+  /** */
+  void setResult(SatValue val) {
+    d_result = val;
+  }
+
+  // External World helping us help the Strategies
+
+  /** If one of the enabled strategies needs them  */
+  /* bool needIteSkolemMap() { */
+  /*   return d_needIteSkolemMap.size() > 0; */
+  /* } */
+
+  /* add a set of assertions */
+  void addAssertions(const vector<Node> &assertions);
+
+  /**
+   * add a set of assertions, while providing a mapping between skolem
+   * variables and corresponding assertions. It is assumed that all
+   * assertions after assertionEnd were generated by ite
+   * removal. Hence, iteSkolemMap maps into only these.
+   */
+  void addAssertions(const vector<Node> &assertions,
+                     unsigned assertionsEnd,
+                     IteSkolemMap iteSkolemMap);
+
+  /* add a single assertion */
+  void addAssertion(Node n);
+
+  // Interface for Strategies to use stuff stored in Decision Engine
+  // (which was possibly requested by them on initialization)
+
+  /**
+   * Get the assertions. Strategies are notified when these are available.
+   */
+  AssertionsList& getAssertions() {
+    return d_assertions;
+  }
+
+
+  // Interface for Strategies to get information about External World
+
+  bool hasSatLiteral(TNode n) {
+    return d_cnfStream->hasLiteral(n);
+  }
+  SatLiteral getSatLiteral(TNode n) {
+    return d_cnfStream->getLiteral(n);
+  }
+  SatValue getSatValue(SatLiteral l) {
+    return d_satSolver->value(l);
+  }
+  SatValue getSatValue(TNode n) {
+    return getSatValue(getSatLiteral(n));
+  }
+  Node getNode(SatLiteral l) {
+    return d_cnfStream->getNode(l);
+  }
+
+private:
+  /**
+   * Enable a particular decision strategy, also updating
+   * corresponding vector<DecisionStrategy*>-s is the engine
+   */
+  void enableStrategy(DecisionStrategy* ds);
+
+};/* DecisionEngine class */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__DECISION__DECISION_ENGINE_H */
diff --git a/src/decision/decision_strategy.h b/src/decision/decision_strategy.h
new file mode 100644
index 0000000..5c3b01b
--- /dev/null
+++ b/src/decision/decision_strategy.h
@@ -0,0 +1,79 @@
+/*********************                                                        */
+/*! \file decision_strategy.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Decision strategy
+ **
+ ** Decision strategy
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__DECISION__DECISION_STRATEGY_H
+#define __CVC4__DECISION__DECISION_STRATEGY_H
+
+#include "prop/sat_solver_types.h"
+#include "smt/term_formula_removal.h"
+
+namespace CVC4 {
+
+class DecisionEngine;
+
+namespace context {
+  class Context;
+}/* CVC4::context namespace */
+
+namespace decision {
+
+class DecisionStrategy {
+protected:
+  DecisionEngine* d_decisionEngine;
+public:
+  DecisionStrategy(DecisionEngine* de, context::Context *c) :
+    d_decisionEngine(de) {
+  }
+
+  virtual ~DecisionStrategy() { }
+
+  virtual prop::SatLiteral getNext(bool&) = 0;
+
+  virtual bool needIteSkolemMap() { return false; }
+
+  virtual void notifyAssertionsAvailable() { return; }
+};/* class DecisionStrategy */
+
+class ITEDecisionStrategy : public DecisionStrategy {
+public:
+  ITEDecisionStrategy(DecisionEngine* de, context::Context *c) :
+    DecisionStrategy(de, c) {
+  }
+
+
+  bool needIteSkolemMap() { return true; }
+
+  virtual void addAssertions(const std::vector<Node> &assertions,
+                             unsigned assertionsEnd,
+                             IteSkolemMap iteSkolemMap) = 0;
+};/* class ITEDecisionStrategy */
+
+class RelevancyStrategy : public ITEDecisionStrategy {
+public:
+  RelevancyStrategy(DecisionEngine* de, context::Context *c) :
+    ITEDecisionStrategy(de, c) {
+  }
+
+  virtual bool isRelevant(TNode n) = 0;
+  virtual prop::SatValue getPolarity(TNode n) = 0;
+};/* class RelevancyStrategy */
+
+}/* CVC4::decision namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__DECISION__DECISION_STRATEGY_H */
diff --git a/src/decision/justification_heuristic.cpp b/src/decision/justification_heuristic.cpp
new file mode 100644
index 0000000..ded2cad
--- /dev/null
+++ b/src/decision/justification_heuristic.cpp
@@ -0,0 +1,718 @@
+/*********************                                                        */
+/*! \file justification_heuristic.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Justification heuristic for decision making
+ **
+ ** A ATGP-inspired justification-based decision heuristic. This code is based
+ ** on the CVC3 implementation of the same heuristic -- note below.
+ **
+ ** It needs access to the simplified but non-clausal formula.
+ **/
+#include "justification_heuristic.h"
+
+#include "expr/kind.h"
+#include "expr/node_manager.h"
+#include "options/decision_options.h"
+#include "theory/rewriter.h"
+#include "smt/term_formula_removal.h"
+#include "smt/smt_statistics_registry.h"
+
+namespace CVC4 {
+
+JustificationHeuristic::JustificationHeuristic(CVC4::DecisionEngine* de,
+                                               context::UserContext *uc,
+                                               context::Context *c):
+  ITEDecisionStrategy(de, c),
+  d_justified(c),
+  d_exploredThreshold(c),
+  d_prvsIndex(c, 0),
+  d_threshPrvsIndex(c, 0),
+  d_helfulness("decision::jh::helpfulness", 0),
+  d_giveup("decision::jh::giveup", 0),
+  d_timestat("decision::jh::time"),
+  d_assertions(uc),
+  d_iteAssertions(uc),
+  d_iteCache(uc),
+  d_visited(),
+  d_visitedComputeITE(),
+  d_curDecision(),
+  d_curThreshold(0),
+  d_childCache(uc),
+  d_weightCache(uc),
+  d_startIndexCache(c) {
+  smtStatisticsRegistry()->registerStat(&d_helfulness);
+  smtStatisticsRegistry()->registerStat(&d_giveup);
+  smtStatisticsRegistry()->registerStat(&d_timestat);
+  Trace("decision") << "Justification heuristic enabled" << std::endl;
+}
+
+JustificationHeuristic::~JustificationHeuristic() throw() {
+  smtStatisticsRegistry()->unregisterStat(&d_helfulness);
+  smtStatisticsRegistry()->unregisterStat(&d_giveup);
+  smtStatisticsRegistry()->unregisterStat(&d_timestat);
+}
+
+CVC4::prop::SatLiteral JustificationHeuristic::getNext(bool &stopSearch)
+{
+  if(options::decisionThreshold() > 0) {
+    bool stopSearchTmp = false;
+    SatLiteral lit = getNextThresh(stopSearchTmp, options::decisionThreshold());
+    if(lit != undefSatLiteral) {
+       Assert(stopSearchTmp == false);
+       return lit;
+    }
+    Assert(stopSearchTmp == true);
+  }
+  return getNextThresh(stopSearch, 0);
+}
+
+CVC4::prop::SatLiteral JustificationHeuristic::getNextThresh(bool &stopSearch, DecisionWeight threshold) {
+  Trace("decision") << "JustificationHeuristic::getNextThresh(stopSearch, "<<threshold<<")" << std::endl;
+  TimerStat::CodeTimer codeTimer(d_timestat);
+
+  d_visited.clear();
+  d_curThreshold = threshold;
+
+  if(Trace.isOn("justified")) {
+    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;
+      SatValue v = tryGetSatValue(n);
+      Trace("justified") <<"{ "<<l<<"}" << n <<": "<<v << std::endl;
+    }
+  }
+
+  for(unsigned i = getPrvsIndex(); i < d_assertions.size(); ++i) {
+    Debug("decision") << "---" << std::endl << d_assertions[i] << std::endl;
+
+    // Sanity check: if it was false, aren't we inconsistent?
+    // Commenting out. See bug 374. In short, to do with how CNF stream works.
+    // Assert( tryGetSatValue(d_assertions[i]) != SAT_VALUE_FALSE);
+
+    SatValue desiredVal = SAT_VALUE_TRUE;
+    SatLiteral litDecision;
+
+    litDecision = findSplitter(d_assertions[i], desiredVal);
+
+    if(litDecision != undefSatLiteral) {
+      setPrvsIndex(i);
+      Trace("decision") << "jh: splitting on " << litDecision << std::endl;
+      ++d_helfulness;
+      return litDecision;
+    }
+  }
+
+  Trace("decision") << "jh: Nothing to split on " << std::endl;
+
+#if defined CVC4_DEBUG
+  bool alljustified = true;
+  for(unsigned i = 0 ; i < d_assertions.size() && alljustified ; ++i) {
+    TNode curass = d_assertions[i];
+    while(curass.getKind() == kind::NOT)
+      curass = curass[0];
+    alljustified &= checkJustified(curass);
+
+    if(Debug.isOn("decision")) {
+      if(!checkJustified(curass))
+        Debug("decision") << "****** Not justified [i="<<i<<"]: "
+                          << d_assertions[i] << std::endl;
+    }
+  }
+  Assert(alljustified || d_curThreshold != 0);
+#endif
+
+  // SAT solver can stop...
+  stopSearch = true;
+  if(d_curThreshold == 0)
+    d_decisionEngine->setResult(SAT_VALUE_TRUE);
+  return prop::undefSatLiteral;
+}
+
+
+inline void computeXorIffDesiredValues
+(Kind k, SatValue desiredVal, SatValue &desiredVal1, SatValue &desiredVal2)
+{
+  Assert(k == kind::EQUAL || k == kind::XOR);
+
+  bool shouldInvert =
+    (desiredVal == SAT_VALUE_TRUE && k == kind::EQUAL) ||
+    (desiredVal == SAT_VALUE_FALSE && k == kind::XOR);
+
+  if(desiredVal1 == SAT_VALUE_UNKNOWN &&
+     desiredVal2 == SAT_VALUE_UNKNOWN) {
+    // CHOICE: pick one of them arbitarily
+    desiredVal1 = SAT_VALUE_FALSE;
+  }
+
+  if(desiredVal2 == SAT_VALUE_UNKNOWN) {
+    desiredVal2 = shouldInvert ? invertValue(desiredVal1) : desiredVal1;
+  } else if(desiredVal1 == SAT_VALUE_UNKNOWN) {
+    desiredVal1 = shouldInvert ? invertValue(desiredVal2) : desiredVal2;
+  }
+}
+
+
+
+void JustificationHeuristic::addAssertions
+(const std::vector<Node> &assertions,
+ unsigned assertionsEnd,
+ IteSkolemMap iteSkolemMap) {
+
+  Trace("decision")
+    << "JustificationHeuristic::addAssertions()"
+    << " size = " << assertions.size()
+    << " assertionsEnd = " << assertionsEnd
+    << std::endl;
+
+  // Save the 'real' assertions locally
+  for(unsigned i = 0; i < assertionsEnd; ++i)
+    d_assertions.push_back(assertions[i]);
+
+  // Save mapping between ite skolems and ite assertions
+  for(IteSkolemMap::iterator i = iteSkolemMap.begin();
+      i != iteSkolemMap.end(); ++i) {
+
+    Trace("decision::jh::ite")
+      << " jh-ite: " << (i->first) << " maps to "
+      << assertions[(i->second)] << std::endl;
+    Assert(i->second >= assertionsEnd && i->second < assertions.size());
+
+    d_iteAssertions[i->first] = assertions[i->second];
+  }
+
+  // Automatic weight computation
+}
+
+SatLiteral JustificationHeuristic::findSplitter(TNode node,
+                                                SatValue desiredVal)
+{
+  d_curDecision = undefSatLiteral;
+  findSplitterRec(node, desiredVal);
+  return d_curDecision;
+}
+
+
+void JustificationHeuristic::setJustified(TNode n)
+{
+  d_justified.insert(n);
+}
+
+bool JustificationHeuristic::checkJustified(TNode n)
+{
+  return d_justified.find(n) != d_justified.end();
+}
+
+DecisionWeight JustificationHeuristic::getExploredThreshold(TNode n)
+{
+  return
+    d_exploredThreshold.find(n) == d_exploredThreshold.end() ?
+    numeric_limits<DecisionWeight>::max() : d_exploredThreshold[n];
+}
+
+void JustificationHeuristic::setExploredThreshold(TNode n)
+{
+  d_exploredThreshold[n] = d_curThreshold;
+}
+
+int JustificationHeuristic::getPrvsIndex()
+{
+  if(d_curThreshold == 0)
+    return d_prvsIndex;
+  else
+    return d_threshPrvsIndex;
+}
+
+void JustificationHeuristic::setPrvsIndex(int prvsIndex)
+{
+  if(d_curThreshold == 0)
+    d_prvsIndex = prvsIndex;
+  else
+    d_threshPrvsIndex = prvsIndex;
+}
+
+DecisionWeight JustificationHeuristic::getWeightPolarized(TNode n, SatValue satValue)
+{
+  Assert(satValue == SAT_VALUE_TRUE || satValue == SAT_VALUE_FALSE);
+  return getWeightPolarized(n, satValue == SAT_VALUE_TRUE);
+}
+
+DecisionWeight JustificationHeuristic::getWeightPolarized(TNode n, bool polarity)
+{
+  if(options::decisionWeightInternal() != DECISION_WEIGHT_INTERNAL_USR1) {
+    return getWeight(n);
+  }
+
+  if(d_weightCache.find(n) == d_weightCache.end()) {
+    Kind k = n.getKind();
+    theory::TheoryId tId  = theory::kindToTheoryId(k);
+    DecisionWeight dW1, dW2;
+    if(tId != theory::THEORY_BOOL) {
+      dW1 = dW2 = getWeight(n);
+    } else {
+
+      if(k == kind::OR) {
+        dW1 = numeric_limits<DecisionWeight>::max(), dW2 = 0;
+        for(TNode::iterator i=n.begin(); i != n.end(); ++i) {
+          dW1 = min(dW1, getWeightPolarized(*i, true));
+          dW2 = max(dW2, getWeightPolarized(*i, false));
+        }
+      } else if(k == kind::AND) {
+        dW1 = 0, dW2 = numeric_limits<DecisionWeight>::max();
+        for(TNode::iterator i=n.begin(); i != n.end(); ++i) {
+          dW1 = max(dW1, getWeightPolarized(*i, true));
+          dW2 = min(dW2, getWeightPolarized(*i, false));
+        }
+      } else if(k == kind::IMPLIES) {
+        dW1 = min(getWeightPolarized(n[0], false),
+                  getWeightPolarized(n[1], true));
+        dW2 = max(getWeightPolarized(n[0], true),
+                  getWeightPolarized(n[1], false));
+      } else if(k == kind::NOT) {
+        dW1 = getWeightPolarized(n[0], false);
+        dW2 = getWeightPolarized(n[0], true);
+      } else {
+        dW1 = 0;
+        for(TNode::iterator i=n.begin(); i != n.end(); ++i) {
+          dW1 = max(dW1, getWeightPolarized(*i, true));
+          dW1 = max(dW1, getWeightPolarized(*i, false));
+        }
+        dW2 = dW1;
+      }
+
+    }
+    d_weightCache[n] = make_pair(dW1, dW2);
+  }
+  return polarity ? d_weightCache[n].get().first : d_weightCache[n].get().second;
+}
+
+DecisionWeight JustificationHeuristic::getWeight(TNode n) {
+  if(!n.hasAttribute(DecisionWeightAttr()) ) {
+
+    DecisionWeightInternal combiningFn =
+      options::decisionWeightInternal();
+
+    if(combiningFn == DECISION_WEIGHT_INTERNAL_OFF || n.getNumChildren() == 0) {
+
+      if(options::decisionRandomWeight() != 0) {
+        n.setAttribute(DecisionWeightAttr(), rand() % options::decisionRandomWeight());
+      }
+
+    } else if(combiningFn == DECISION_WEIGHT_INTERNAL_MAX) {
+
+      DecisionWeight dW = 0;
+      for(TNode::iterator i=n.begin(); i != n.end(); ++i)
+        dW = max(dW, getWeight(*i));
+      n.setAttribute(DecisionWeightAttr(), dW);
+
+    } else if(combiningFn == DECISION_WEIGHT_INTERNAL_SUM ||
+              combiningFn == DECISION_WEIGHT_INTERNAL_USR1) {
+      DecisionWeight dW = 0;
+      for(TNode::iterator i=n.begin(); i != n.end(); ++i)
+        dW = max(dW, getWeight(*i));
+      n.setAttribute(DecisionWeightAttr(), dW);
+
+    } else {
+      Unreachable();
+    }
+
+  }
+  return n.getAttribute(DecisionWeightAttr());
+}
+
+typedef vector<TNode> ChildList;
+TNode JustificationHeuristic::getChildByWeight(TNode n, int i, bool polarity) {
+  if(options::decisionUseWeight()) {
+    // TODO: Optimize storing & access
+    if(d_childCache.find(n) == d_childCache.end()) {
+      ChildList list0(n.begin(), n.end()), list1(n.begin(), n.end());
+      std::sort(list0.begin(), list0.end(), JustificationHeuristic::myCompareClass(this,false));
+      std::sort(list1.begin(), list1.end(), JustificationHeuristic::myCompareClass(this,true));
+      d_childCache[n] = make_pair(list0, list1);
+    }
+    return polarity ? d_childCache[n].get().second[i] : d_childCache[n].get().first[i];
+  } else {
+    return n[i];
+  }
+}
+
+SatValue JustificationHeuristic::tryGetSatValue(Node n)
+{
+  Debug("decision") << "   "  << n << " has sat value " << " ";
+  if(d_decisionEngine->hasSatLiteral(n) ) {
+    Debug("decision") << d_decisionEngine->getSatValue(n) << std::endl;
+    return d_decisionEngine->getSatValue(n);
+  } else {
+    Debug("decision") << "NO SAT LITERAL" << std::endl;
+    return SAT_VALUE_UNKNOWN;
+  }//end of else
+}
+
+JustificationHeuristic::IteList
+JustificationHeuristic::getITEs(TNode n)
+{
+  IteCache::iterator it = d_iteCache.find(n);
+  if(it != d_iteCache.end()) {
+    return (*it).second;
+  } else {
+    // Compute the list of ITEs
+    // TODO: optimize by avoiding multiple lookup for d_iteCache[n]
+    d_visitedComputeITE.clear();
+    IteList ilist;
+    computeITEs(n, ilist);
+    d_iteCache.insert(n, ilist);
+    return ilist;
+  }
+}
+
+void JustificationHeuristic::computeITEs(TNode n, IteList &l)
+{
+  Trace("decision::jh::ite") << " computeITEs( " << n << ", &l)\n";
+  d_visitedComputeITE.insert(n);
+  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));
+      Assert(n[i].getNumChildren() == 0);
+    }
+    if(d_visitedComputeITE.find(n[i]) ==
+         d_visitedComputeITE.end()) {
+      computeITEs(n[i], l);
+    }
+  }
+}
+
+JustificationHeuristic::SearchResult
+JustificationHeuristic::findSplitterRec(TNode node, SatValue desiredVal)
+{
+  /**
+   * 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 OR
+   * formula we want to make it evaluate to true, we'd like one of the
+   * children to be true. this is done recursively.
+   */
+
+  Trace("decision::jh")
+    << "findSplitterRec(" << node << ", "
+    << desiredVal << ", .. )" << std::endl;
+
+  /* Handle NOT as a special case */
+  while (node.getKind() == kind::NOT) {
+    desiredVal = invertValue(desiredVal);
+    node = node[0];
+  }
+
+  /* Base case */
+  if (checkJustified(node)) {
+    Debug("decision::jh") << "  justified, returning" << std::endl;
+    return NO_SPLITTER;
+  }
+  if (getExploredThreshold(node) < d_curThreshold) {
+    Debug("decision::jh") << "  explored, returning" << std::endl;
+    Assert(d_curThreshold != 0);
+    return DONT_KNOW;
+  }
+
+#if defined CVC4_ASSERTIONS || defined CVC4_DEBUG
+  // We don't always have a sat literal, so remember that. Will need
+  // it for some assertions we make.
+  bool litPresent = d_decisionEngine->hasSatLiteral(node);
+  if(Debug.isOn("decision")) {
+    if(!litPresent) {
+      Debug("decision") << "no sat literal for this node" << std::endl;
+    }
+  }
+#endif
+
+  // Get value of sat literal for the node, if there is one
+  SatValue litVal = tryGetSatValue(node);
+
+  /* You'd better know what you want */
+  Assert(desiredVal != SAT_VALUE_UNKNOWN, "expected known value");
+
+  /* Good luck, hope you can get what you want */
+  // See bug 374
+  // Assert(litVal == desiredVal || litVal == SAT_VALUE_UNKNOWN,
+  //       "invariant violated");
+
+  /* What type of node is this */
+  Kind k = node.getKind();
+  theory::TheoryId tId = theory::kindToTheoryId(k);
+  bool isAtom =
+     (k == kind::BOOLEAN_TERM_VARIABLE ) ||
+     ( (tId != theory::THEORY_BOOL) &&
+       (k != kind::EQUAL || (!node[0].getType().isBoolean())) );
+
+  /* Some debugging stuff */
+  Debug("decision::jh") << "kind = " << k << std::endl
+                        << "theoryId = " << tId << std::endl
+                        << "node = " << node << std::endl
+                        << "litVal = " << litVal << std::endl;
+
+  /**
+   * If not in theory of booleans, check if this is something to split-on.
+   */
+  if(isAtom) {
+    // if node has embedded ites, resolve that first
+    if(handleEmbeddedITEs(node) == FOUND_SPLITTER)
+      return FOUND_SPLITTER;
+
+    if(litVal != SAT_VALUE_UNKNOWN) {
+      Assert(litVal == desiredVal);
+      setJustified(node);
+      return NO_SPLITTER;
+    }
+    else {
+      Assert(d_decisionEngine->hasSatLiteral(node));
+      if(d_curThreshold != 0 && getWeightPolarized(node, desiredVal) >= d_curThreshold)
+        return DONT_KNOW;
+      SatVariable v =
+        d_decisionEngine->getSatLiteral(node).getSatVariable();
+      d_curDecision = SatLiteral(v, /* negated = */ desiredVal != SAT_VALUE_TRUE );
+      Trace("decision-node") << "[decision-node] requesting split on " << d_curDecision
+                             << ", node: " << node
+                             << ", polarity: " << (desiredVal == SAT_VALUE_TRUE ? "true" : "false") << std::endl;
+      return FOUND_SPLITTER;
+    }
+  }
+
+  SearchResult ret = NO_SPLITTER;
+  switch (k) {
+
+  case kind::CONST_BOOLEAN:
+    Assert(node.getConst<bool>() == false || desiredVal == SAT_VALUE_TRUE);
+    Assert(node.getConst<bool>() == true  || desiredVal == SAT_VALUE_FALSE);
+    break;
+
+  case kind::AND:
+    if (desiredVal == SAT_VALUE_FALSE)
+      ret = handleAndOrEasy(node, desiredVal);
+    else
+      ret = handleAndOrHard(node, desiredVal);
+    break;
+
+  case kind::OR:
+    if (desiredVal == SAT_VALUE_FALSE)
+      ret = handleAndOrHard(node, desiredVal);
+    else
+      ret = handleAndOrEasy(node, desiredVal);
+    break;
+
+  case kind::IMPLIES:
+    if (desiredVal == SAT_VALUE_FALSE)
+      ret = handleBinaryHard(node[0], SAT_VALUE_TRUE,
+                             node[1], SAT_VALUE_FALSE);
+
+    else
+      ret = handleBinaryEasy(node[0], SAT_VALUE_FALSE,
+                             node[1], SAT_VALUE_TRUE);
+    break;
+
+  case kind::XOR:
+  case kind::EQUAL: {
+    SatValue desiredVal1 = tryGetSatValue(node[0]);
+    SatValue desiredVal2 = tryGetSatValue(node[1]);
+    computeXorIffDesiredValues(k, desiredVal, desiredVal1, desiredVal2);
+    ret = handleBinaryHard(node[0], desiredVal1,
+                           node[1], desiredVal2);
+    break;
+  }
+
+  case kind::ITE:
+    ret = handleITE(node, desiredVal);
+    break;
+
+  default:
+    Assert(false, "Unexpected Boolean operator");
+    break;
+  }//end of switch(k)
+
+  if(ret == DONT_KNOW) {
+    setExploredThreshold(node);
+  }
+
+  if(ret == NO_SPLITTER) {
+    Assert( litPresent == false || litVal ==  desiredVal,
+           "Output should be justified");
+    setJustified(node);
+  }
+  return ret;
+}/* findRecSplit method */
+
+JustificationHeuristic::SearchResult
+JustificationHeuristic::handleAndOrEasy(TNode node, SatValue desiredVal)
+{
+  Assert( (node.getKind() == kind::AND and desiredVal == SAT_VALUE_FALSE) or
+          (node.getKind() == kind::OR  and desiredVal == SAT_VALUE_TRUE) );
+
+  int numChildren = node.getNumChildren();
+  SatValue desiredValInverted = invertValue(desiredVal);
+  for(int i = 0; i < numChildren; ++i) {
+    TNode curNode = getChildByWeight(node, i, desiredVal);
+    if ( tryGetSatValue(curNode) != desiredValInverted ) {
+      SearchResult ret = findSplitterRec(curNode, desiredVal);
+      if(ret != DONT_KNOW) {
+        return ret;
+      }
+    }
+  }
+  Assert(d_curThreshold != 0, "handleAndOrEasy: No controlling input found");
+  return DONT_KNOW;
+}
+
+int JustificationHeuristic::getStartIndex(TNode node) {
+  return d_startIndexCache[node];
+}
+void JustificationHeuristic::saveStartIndex(TNode node, int val) {
+  d_startIndexCache[node] = val;
+}
+
+JustificationHeuristic::SearchResult JustificationHeuristic::handleAndOrHard(TNode node,
+                                             SatValue desiredVal) {
+  Assert( (node.getKind() == kind::AND and desiredVal == SAT_VALUE_TRUE) or
+          (node.getKind() == kind::OR  and desiredVal == SAT_VALUE_FALSE) );
+
+  int numChildren = node.getNumChildren();
+  bool noSplitter = true;
+  int i_st = getStartIndex(node);
+  for(int i = i_st; i < numChildren; ++i) {
+    TNode curNode = getChildByWeight(node, i, desiredVal);
+    SearchResult ret = findSplitterRec(curNode, desiredVal);
+    if (ret == FOUND_SPLITTER) {
+      if(i != i_st) saveStartIndex(node, i);
+      return FOUND_SPLITTER;
+    }
+    noSplitter = noSplitter && (ret == NO_SPLITTER);
+  }
+  return noSplitter ? NO_SPLITTER : DONT_KNOW;
+}
+
+JustificationHeuristic::SearchResult JustificationHeuristic::handleBinaryEasy(TNode node1,
+                                              SatValue desiredVal1,
+                                              TNode node2,
+                                              SatValue desiredVal2)
+{
+  if(options::decisionUseWeight() &&
+     getWeightPolarized(node1, desiredVal1) > getWeightPolarized(node2, desiredVal2)) {
+    swap(node1, node2);
+    swap(desiredVal1, desiredVal2);
+  }
+
+  if ( tryGetSatValue(node1) != invertValue(desiredVal1) ) {
+    SearchResult ret = findSplitterRec(node1, desiredVal1);
+    if(ret != DONT_KNOW)
+      return ret;
+  }
+  if ( tryGetSatValue(node2) != invertValue(desiredVal2) ) {
+    SearchResult ret = findSplitterRec(node2, desiredVal2);
+    if(ret != DONT_KNOW)
+      return ret;
+  }
+  Assert(d_curThreshold != 0, "handleBinaryEasy: No controlling input found");
+  return DONT_KNOW;
+}
+
+JustificationHeuristic::SearchResult JustificationHeuristic::handleBinaryHard(TNode node1,
+                                              SatValue desiredVal1,
+                                              TNode node2,
+                                              SatValue desiredVal2)
+{
+  if(options::decisionUseWeight() &&
+     getWeightPolarized(node1, desiredVal1) > getWeightPolarized(node2, desiredVal2)) {
+    swap(node1, node2);
+    swap(desiredVal1, desiredVal2);
+  }
+
+  bool noSplitter = true;
+  SearchResult ret;
+
+  ret = findSplitterRec(node1, desiredVal1);
+  if (ret == FOUND_SPLITTER)
+    return FOUND_SPLITTER;
+  noSplitter &= (ret == NO_SPLITTER);
+
+  ret = findSplitterRec(node2, desiredVal2);
+  if (ret == FOUND_SPLITTER)
+    return FOUND_SPLITTER;
+  noSplitter &= (ret == NO_SPLITTER);
+
+  return noSplitter ? NO_SPLITTER : DONT_KNOW;
+}
+
+JustificationHeuristic::SearchResult JustificationHeuristic::handleITE(TNode node, SatValue desiredVal)
+{
+  Debug("decision::jh") << " handleITE (" << node << ", "
+                              << desiredVal << std::endl;
+
+  //[0]: if, [1]: then, [2]: else
+  SatValue ifVal = tryGetSatValue(node[0]);
+  if (ifVal == SAT_VALUE_UNKNOWN) {
+    SatValue trueChildVal = tryGetSatValue(node[1]);
+    SatValue falseChildVal = tryGetSatValue(node[2]);
+    SatValue ifDesiredVal;
+
+    if(trueChildVal == desiredVal || falseChildVal == invertValue(desiredVal)) {
+      ifDesiredVal = SAT_VALUE_TRUE;
+    } else if(trueChildVal == invertValue(desiredVal) ||
+              falseChildVal == desiredVal ||
+              (options::decisionUseWeight() &&
+               getWeightPolarized(node[1], true) > getWeightPolarized(node[2], false))
+              ) {
+      ifDesiredVal = SAT_VALUE_FALSE;
+    } else {
+      ifDesiredVal = SAT_VALUE_TRUE;
+    }
+
+    if(findSplitterRec(node[0], ifDesiredVal) == FOUND_SPLITTER)
+      return FOUND_SPLITTER;
+
+    Assert(d_curThreshold != 0, "No controlling input found (6)");
+    return DONT_KNOW;
+  } else {
+    // Try to justify 'if'
+    if(findSplitterRec(node[0], ifVal) == FOUND_SPLITTER)
+      return FOUND_SPLITTER;
+
+    // If that was successful, we need to go into only one of 'then'
+    // or 'else'
+    int ch = (ifVal == SAT_VALUE_TRUE) ? 1 : 2;
+
+    if( findSplitterRec(node[ch], desiredVal) == FOUND_SPLITTER ) {
+      return FOUND_SPLITTER;
+    }
+
+    return NO_SPLITTER;
+  }// else (...ifVal...)
+}
+
+JustificationHeuristic::SearchResult JustificationHeuristic::handleEmbeddedITEs(TNode node)
+{
+  const IteList l = getITEs(node);
+  Trace("decision::jh::ite") << " ite size = " << l.size() << std::endl;
+
+  bool noSplitter = true;
+  for(IteList::const_iterator i = l.begin(); i != l.end(); ++i) {
+    if(d_visited.find((*i).first) == d_visited.end()) {
+      d_visited.insert((*i).first);
+      SearchResult ret = findSplitterRec((*i).second, SAT_VALUE_TRUE);
+      if (ret == FOUND_SPLITTER)
+        return FOUND_SPLITTER;
+      noSplitter = noSplitter && (ret == NO_SPLITTER);
+      d_visited.erase((*i).first);
+    }
+  }
+  return noSplitter ? NO_SPLITTER : DONT_KNOW;
+}
+
+} /* namespace CVC4 */
diff --git a/src/decision/justification_heuristic.h b/src/decision/justification_heuristic.h
new file mode 100644
index 0000000..c03bba0
--- /dev/null
+++ b/src/decision/justification_heuristic.h
@@ -0,0 +1,183 @@
+/*********************                                                        */
+/*! \file justification_heuristic.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Justification heuristic for decision making
+ **
+ ** A ATGP-inspired justification-based decision heuristic. See
+ ** [insert reference] for more details. This code is, or not, based
+ ** on the CVC3 implementation of the same heuristic.
+ **
+ ** It needs access to the simplified but non-clausal formula.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__DECISION__JUSTIFICATION_HEURISTIC
+#define __CVC4__DECISION__JUSTIFICATION_HEURISTIC
+
+#include "context/cdhashmap.h"
+#include "context/cdhashset.h"
+#include "context/cdlist.h"
+#include "decision/decision_attributes.h"
+#include "decision/decision_engine.h"
+#include "decision/decision_strategy.h"
+#include "expr/node.h"
+#include "prop/sat_solver_types.h"
+
+namespace CVC4 {
+namespace decision {
+
+class JustificationHeuristic : public ITEDecisionStrategy {
+  //                   TRUE           FALSE         MEH
+  enum SearchResult {FOUND_SPLITTER, NO_SPLITTER, DONT_KNOW};
+
+  typedef std::vector<pair<TNode,TNode> > IteList;
+  typedef context::CDHashMap<TNode,IteList,TNodeHashFunction> IteCache;
+  typedef std::vector<TNode> ChildList;
+  typedef context::CDHashMap<TNode,pair<ChildList,ChildList>,TNodeHashFunction> ChildCache;
+  typedef context::CDHashMap<TNode,TNode,TNodeHashFunction> SkolemMap;
+  typedef context::CDHashMap<TNode,pair<DecisionWeight,DecisionWeight>,TNodeHashFunction> WeightCache;
+
+  // being 'justified' is monotonic with respect to decisions
+  typedef context::CDHashSet<Node,NodeHashFunction> JustifiedSet;
+  JustifiedSet d_justified;
+  typedef context::CDHashMap<Node,DecisionWeight,NodeHashFunction> ExploredThreshold;
+  ExploredThreshold d_exploredThreshold;
+  context::CDO<unsigned>  d_prvsIndex;
+  context::CDO<unsigned>  d_threshPrvsIndex;
+
+  IntStat d_helfulness;
+  IntStat d_giveup;
+  TimerStat d_timestat;
+
+  /**
+   * A copy of the assertions that need to be justified
+   * directly. Doesn't have ones introduced during during ITE-removal.
+   */
+  context::CDList<TNode> d_assertions;
+  //TNode is fine since decisionEngine has them too
+
+  /** map from ite-rewrite skolem to a boolean-ite assertion */
+  SkolemMap d_iteAssertions;
+  // 'key' being TNode is fine since if a skolem didn't exist anywhere,
+  // we won't look it up. as for 'value', same reason as d_assertions
+
+  /** Cache for ITE skolems present in a atomic formula */
+  IteCache d_iteCache;
+
+  /**
+   * This is used to prevent infinite loop when trying to find a
+   * splitter. Can happen when exploring assertion corresponding to a
+   * term-ITE.
+   */
+  hash_set<TNode,TNodeHashFunction> d_visited;
+
+  /**
+   * Set to track visited nodes in a dfs search done in computeITE
+   * function
+   */
+  hash_set<TNode,TNodeHashFunction> d_visitedComputeITE;
+
+  /** current decision for the recursive call */
+  SatLiteral d_curDecision;
+  /** current threshold for the recursive call */
+  DecisionWeight d_curThreshold;
+
+  /** child cache */
+  ChildCache d_childCache;
+
+  /** computed polarized weight cache */
+  WeightCache d_weightCache;
+
+
+  class myCompareClass {
+    JustificationHeuristic* d_jh;
+    bool d_b;
+  public:
+    myCompareClass(JustificationHeuristic* jh, bool b):d_jh(jh),d_b(b) {};
+    bool operator() (TNode n1, TNode n2) {
+      return d_jh->getWeightPolarized(n1, d_b) < d_jh->getWeightPolarized(n2, d_b);
+    }
+  };
+
+public:
+  JustificationHeuristic(CVC4::DecisionEngine* de,
+                         context::UserContext *uc,
+                         context::Context *c);
+
+  ~JustificationHeuristic() throw();
+
+  prop::SatLiteral getNext(bool &stopSearch);
+
+  void addAssertions(const std::vector<Node> &assertions,
+                     unsigned assertionsEnd,
+                     IteSkolemMap iteSkolemMap);
+
+private:
+  /* getNext with an option to specify threshold */
+  prop::SatLiteral getNextThresh(bool &stopSearch, DecisionWeight threshold);
+
+  SatLiteral findSplitter(TNode node, SatValue desiredVal);
+
+  /**
+   * Do all the hard work.
+   */
+  SearchResult findSplitterRec(TNode node, SatValue value);
+
+  /* Helper functions */
+  void setJustified(TNode);
+  bool checkJustified(TNode);
+  DecisionWeight getExploredThreshold(TNode);
+  void setExploredThreshold(TNode);
+  void setPrvsIndex(int);
+  int  getPrvsIndex();
+  DecisionWeight getWeightPolarized(TNode n, bool polarity);
+  DecisionWeight getWeightPolarized(TNode n, SatValue);
+  static DecisionWeight getWeight(TNode);
+  bool compareByWeightFalse(TNode, TNode);
+  bool compareByWeightTrue(TNode, TNode);
+  TNode getChildByWeight(TNode n, int i, bool polarity);
+
+  /* If literal exists corresponding to the node return
+     that. Otherwise an UNKNOWN */
+  SatValue tryGetSatValue(Node n);
+
+  /* Get list of all term-ITEs for the atomic formula v */
+  JustificationHeuristic::IteList getITEs(TNode n);
+
+
+  /**
+   * For big and/or nodes, a cache to save starting index into children
+   * for efficiently.
+   */
+  typedef context::CDHashMap<TNode, int, TNodeHashFunction> StartIndexCache;
+  StartIndexCache d_startIndexCache;
+  int getStartIndex(TNode node);
+  void saveStartIndex(TNode node, int val);
+
+  /* Compute all term-ITEs in a node recursively */
+  void computeITEs(TNode n, IteList &l);
+
+  SearchResult handleAndOrEasy(TNode node, SatValue desiredVal);
+  SearchResult handleAndOrHard(TNode node, SatValue desiredVal);
+  SearchResult handleBinaryEasy(TNode node1, SatValue desiredVal1,
+                        TNode node2, SatValue desiredVal2);
+  SearchResult handleBinaryHard(TNode node1, SatValue desiredVal1,
+                        TNode node2, SatValue desiredVal2);
+  SearchResult handleITE(TNode node, SatValue desiredVal);
+  SearchResult handleEmbeddedITEs(TNode node);
+};/* class JustificationHeuristic */
+
+}/* namespace decision */
+
+}/* namespace CVC4 */
+
+#endif /* __CVC4__DECISION__JUSTIFICATION_HEURISTIC */
diff --git a/src/expr/Makefile.am b/src/expr/Makefile.am
new file mode 100644
index 0000000..c04de44
--- /dev/null
+++ b/src/expr/Makefile.am
@@ -0,0 +1,195 @@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4LIB \
+	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
+
+noinst_LTLIBRARIES = libexpr.la
+
+# For some reason statistics were in libutil. No idea why though.
+libexpr_la_SOURCES = \
+	array.h \
+	array_store_all.cpp \
+	array_store_all.h \
+	ascription_type.h \
+	attribute.h \
+	attribute.cpp \
+	attribute_internals.h \
+	attribute_unique_id.h \
+	convenience_node_builders.h \
+	chain.h \
+	emptyset.cpp \
+	emptyset.h \
+	expr_iomanip.cpp \
+	expr_iomanip.h \
+	expr_manager_scope.h \
+	expr_stream.h \
+	kind_map.h \
+	matcher.h \
+	node.cpp \
+	node.h \
+	node_builder.h \
+	node_manager.cpp \
+	node_manager.h \
+	node_manager_attributes.h \
+	node_manager_listeners.cpp \
+	node_manager_listeners.h \
+	node_self_iterator.h \
+	node_value.cpp \
+	node_value.h \
+	pickle_data.cpp \
+	pickle_data.h \
+	pickler.cpp \
+	pickler.h \
+	symbol_table.cpp \
+	symbol_table.h \
+	type.cpp \
+	type.h \
+	type_checker.h \
+	type_node.cpp \
+	type_node.h \
+	variable_type_map.h \
+	datatype.h \
+	datatype.cpp \
+	predicate.h \
+	predicate.cpp \
+	record.cpp \
+	record.h \
+	uninterpreted_constant.cpp \
+	uninterpreted_constant.h
+
+nodist_libexpr_la_SOURCES = \
+	kind.h \
+	metakind.h \
+	type_properties.h \
+	expr.h \
+	expr.cpp \
+	expr_manager.h \
+	expr_manager.cpp \
+	type_checker.cpp
+
+EXTRA_DIST = \
+	array.i \
+	chain.i \
+	array_store_all.i \
+	ascription_type.i \
+	datatype.i \
+	emptyset.i \
+	kind_template.h \
+	metakind_template.h \
+	type_properties_template.h \
+	expr_manager_template.h \
+	expr_manager_template.cpp \
+	expr_template.h \
+	expr_template.cpp \
+	type_checker_template.cpp \
+	mkkind \
+	mkmetakind \
+	mkexpr \
+	expr_stream.i \
+	expr_manager.i \
+	symbol_table.i \
+	type.i \
+	kind.i \
+	expr.i \
+	record.i \
+	predicate.i \
+	variable_type_map.i \
+	uninterpreted_constant.i
+
+BUILT_SOURCES = \
+	kind.h \
+	metakind.h \
+	type_properties.h \
+	expr.h \
+	expr.cpp \
+	expr_manager.h \
+	expr_manager.cpp \
+	type_checker.cpp \
+	$(top_builddir)/src/expr/.subdirs
+
+CLEANFILES = \
+	kind.h \
+	metakind.h \
+	expr.h \
+	expr.cpp \
+	expr_manager.h \
+	expr_manager.cpp \
+	type_checker.cpp \
+	type_properties.h \
+	$(top_builddir)/src/expr/.subdirs
+
+$(top_builddir)/src/expr/.subdirs: $(top_srcdir)/src/Makefile.theories  @top_srcdir@/src/mksubdirs
+	$(AM_V_at)test -d $(top_builddir)/src/expr || mkdir $(top_builddir)/src/expr
+	$(AM_V_at)chmod +x @top_srcdir@/src/mksubdirs
+	$(AM_V_at)( @top_srcdir@/src/mksubdirs "$(top_srcdir)" ) > $(top_builddir)/src/expr/.subdirs.tmp
+	@if ! diff -q $(top_builddir)/src/expr/.subdirs $(top_builddir)/src/expr/.subdirs.tmp &>/dev/null; then \
+		echo "  GEN   " $@; \
+		$(am__mv) $(top_builddir)/src/expr/.subdirs.tmp $(top_builddir)/src/expr/.subdirs; \
+	fi
+
+kind.h: kind_template.h mkkind @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)chmod +x @srcdir@/mkkind
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/mkkind \
+		$< \
+		`cat @top_builddir@/src/expr/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+metakind.h: metakind_template.h mkmetakind @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)chmod +x @srcdir@/mkmetakind
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/mkmetakind \
+		$< \
+		`cat @top_builddir@/src/expr/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+type_properties.h: type_properties_template.h mkkind @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)chmod +x @srcdir@/mkkind
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/mkkind \
+		$< \
+		`cat @top_builddir@/src/expr/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+expr.h: expr_template.h mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)chmod +x @srcdir@/mkexpr
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/mkexpr \
+		$< \
+		`cat @top_builddir@/src/expr/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+expr.cpp: expr_template.cpp mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)chmod +x @srcdir@/mkexpr
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/mkexpr \
+		$< \
+		`cat @top_builddir@/src/expr/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+expr_manager.h: expr_manager_template.h mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)chmod +x @srcdir@/mkexpr
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/mkexpr \
+		$< \
+		`cat @top_builddir@/src/expr/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+expr_manager.cpp: expr_manager_template.cpp mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)chmod +x @srcdir@/mkexpr
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/mkexpr \
+		$< \
+		`cat @top_builddir@/src/expr/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+type_checker.cpp: type_checker_template.cpp mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)chmod +x @srcdir@/mkexpr
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/mkexpr \
+		$< \
+		`cat @top_builddir@/src/expr/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+.PHONY: builts
+builts: $(BUILT_SOURCES)
diff --git a/src/expr/Makefile.in b/src/expr/Makefile.in
new file mode 100644
index 0000000..d2b68d9
--- /dev/null
+++ b/src/expr/Makefile.in
@@ -0,0 +1,976 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = src/expr
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libexpr_la_LIBADD =
+am_libexpr_la_OBJECTS = array_store_all.lo attribute.lo emptyset.lo \
+	expr_iomanip.lo node.lo node_manager.lo \
+	node_manager_listeners.lo node_value.lo pickle_data.lo \
+	pickler.lo symbol_table.lo type.lo type_node.lo datatype.lo \
+	predicate.lo record.lo uninterpreted_constant.lo
+nodist_libexpr_la_OBJECTS = expr.lo expr_manager.lo type_checker.lo
+libexpr_la_OBJECTS = $(am_libexpr_la_OBJECTS) \
+	$(nodist_libexpr_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(libexpr_la_SOURCES) $(nodist_libexpr_la_SOURCES)
+DIST_SOURCES = $(libexpr_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4LIB \
+	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..
+
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
+noinst_LTLIBRARIES = libexpr.la
+
+# For some reason statistics were in libutil. No idea why though.
+libexpr_la_SOURCES = \
+	array.h \
+	array_store_all.cpp \
+	array_store_all.h \
+	ascription_type.h \
+	attribute.h \
+	attribute.cpp \
+	attribute_internals.h \
+	attribute_unique_id.h \
+	convenience_node_builders.h \
+	chain.h \
+	emptyset.cpp \
+	emptyset.h \
+	expr_iomanip.cpp \
+	expr_iomanip.h \
+	expr_manager_scope.h \
+	expr_stream.h \
+	kind_map.h \
+	matcher.h \
+	node.cpp \
+	node.h \
+	node_builder.h \
+	node_manager.cpp \
+	node_manager.h \
+	node_manager_attributes.h \
+	node_manager_listeners.cpp \
+	node_manager_listeners.h \
+	node_self_iterator.h \
+	node_value.cpp \
+	node_value.h \
+	pickle_data.cpp \
+	pickle_data.h \
+	pickler.cpp \
+	pickler.h \
+	symbol_table.cpp \
+	symbol_table.h \
+	type.cpp \
+	type.h \
+	type_checker.h \
+	type_node.cpp \
+	type_node.h \
+	variable_type_map.h \
+	datatype.h \
+	datatype.cpp \
+	predicate.h \
+	predicate.cpp \
+	record.cpp \
+	record.h \
+	uninterpreted_constant.cpp \
+	uninterpreted_constant.h
+
+nodist_libexpr_la_SOURCES = \
+	kind.h \
+	metakind.h \
+	type_properties.h \
+	expr.h \
+	expr.cpp \
+	expr_manager.h \
+	expr_manager.cpp \
+	type_checker.cpp
+
+EXTRA_DIST = \
+	array.i \
+	chain.i \
+	array_store_all.i \
+	ascription_type.i \
+	datatype.i \
+	emptyset.i \
+	kind_template.h \
+	metakind_template.h \
+	type_properties_template.h \
+	expr_manager_template.h \
+	expr_manager_template.cpp \
+	expr_template.h \
+	expr_template.cpp \
+	type_checker_template.cpp \
+	mkkind \
+	mkmetakind \
+	mkexpr \
+	expr_stream.i \
+	expr_manager.i \
+	symbol_table.i \
+	type.i \
+	kind.i \
+	expr.i \
+	record.i \
+	predicate.i \
+	variable_type_map.i \
+	uninterpreted_constant.i
+
+BUILT_SOURCES = \
+	kind.h \
+	metakind.h \
+	type_properties.h \
+	expr.h \
+	expr.cpp \
+	expr_manager.h \
+	expr_manager.cpp \
+	type_checker.cpp \
+	$(top_builddir)/src/expr/.subdirs
+
+CLEANFILES = \
+	kind.h \
+	metakind.h \
+	expr.h \
+	expr.cpp \
+	expr_manager.h \
+	expr_manager.cpp \
+	type_checker.cpp \
+	type_properties.h \
+	$(top_builddir)/src/expr/.subdirs
+
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/expr/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/expr/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+libexpr.la: $(libexpr_la_OBJECTS) $(libexpr_la_DEPENDENCIES) $(EXTRA_libexpr_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK)  $(libexpr_la_OBJECTS) $(libexpr_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/array_store_all.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/attribute.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/datatype.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/emptyset.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/expr.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/expr_iomanip.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/expr_manager.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/node.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/node_manager.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/node_manager_listeners.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/node_value.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pickle_data.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pickler.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/predicate.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/record.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/symbol_table.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/type.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/type_checker.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/type_node.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uninterpreted_constant.Plo at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+$(top_builddir)/src/expr/.subdirs: $(top_srcdir)/src/Makefile.theories  @top_srcdir@/src/mksubdirs
+	$(AM_V_at)test -d $(top_builddir)/src/expr || mkdir $(top_builddir)/src/expr
+	$(AM_V_at)chmod +x @top_srcdir@/src/mksubdirs
+	$(AM_V_at)( @top_srcdir@/src/mksubdirs "$(top_srcdir)" ) > $(top_builddir)/src/expr/.subdirs.tmp
+	@if ! diff -q $(top_builddir)/src/expr/.subdirs $(top_builddir)/src/expr/.subdirs.tmp &>/dev/null; then \
+		echo "  GEN   " $@; \
+		$(am__mv) $(top_builddir)/src/expr/.subdirs.tmp $(top_builddir)/src/expr/.subdirs; \
+	fi
+
+kind.h: kind_template.h mkkind @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)chmod +x @srcdir@/mkkind
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/mkkind \
+		$< \
+		`cat @top_builddir@/src/expr/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+metakind.h: metakind_template.h mkmetakind @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)chmod +x @srcdir@/mkmetakind
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/mkmetakind \
+		$< \
+		`cat @top_builddir@/src/expr/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+type_properties.h: type_properties_template.h mkkind @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)chmod +x @srcdir@/mkkind
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/mkkind \
+		$< \
+		`cat @top_builddir@/src/expr/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+expr.h: expr_template.h mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)chmod +x @srcdir@/mkexpr
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/mkexpr \
+		$< \
+		`cat @top_builddir@/src/expr/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+expr.cpp: expr_template.cpp mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)chmod +x @srcdir@/mkexpr
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/mkexpr \
+		$< \
+		`cat @top_builddir@/src/expr/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+expr_manager.h: expr_manager_template.h mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)chmod +x @srcdir@/mkexpr
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/mkexpr \
+		$< \
+		`cat @top_builddir@/src/expr/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+expr_manager.cpp: expr_manager_template.cpp mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)chmod +x @srcdir@/mkexpr
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/mkexpr \
+		$< \
+		`cat @top_builddir@/src/expr/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+type_checker.cpp: type_checker_template.cpp mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+	$(AM_V_at)chmod +x @srcdir@/mkexpr
+	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
+	$(AM_V_GEN)(@srcdir@/mkexpr \
+		$< \
+		`cat @top_builddir@/src/expr/.subdirs` \
+	> $@) || (rm -f $@ && exit 1)
+
+.PHONY: builts
+builts: $(BUILT_SOURCES)
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/expr/array.h b/src/expr/array.h
new file mode 100644
index 0000000..cf050e0
--- /dev/null
+++ b/src/expr/array.h
@@ -0,0 +1,26 @@
+/*********************                                                        */
+/*! \file array.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Array types.
+ **
+ ** Array types.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__ARRAY_H
+#define __CVC4__ARRAY_H
+
+// we get ArrayType right now by #including type.h.
+// array.h is still useful for the auto-generated kinds #includes.
+#include "expr/type.h"
+
+#endif /* __CVC4__ARRAY_H */
diff --git a/src/expr/array.i b/src/expr/array.i
new file mode 100644
index 0000000..4acd7bf
--- /dev/null
+++ b/src/expr/array.i
@@ -0,0 +1,5 @@
+%{
+#include "expr/array.h"
+%}
+
+%include "expr/array.h"
diff --git a/src/expr/array_store_all.cpp b/src/expr/array_store_all.cpp
new file mode 100644
index 0000000..05710a6
--- /dev/null
+++ b/src/expr/array_store_all.cpp
@@ -0,0 +1,99 @@
+/*********************                                                        */
+/*! \file array_store_all.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Representation of a constant array (an array in which the
+ ** element is the same for all indices)
+ **
+ ** Representation of a constant array (an array in which the element is
+ ** the same for all indices).
+ **/
+
+#include "expr/array_store_all.h"
+
+#include <iostream>
+
+#include "base/cvc4_assert.h"
+#include "expr/expr.h"
+#include "expr/type.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+ArrayStoreAll::ArrayStoreAll(const ArrayType& type,
+                             const Expr& expr) throw(IllegalArgumentException)
+    : d_type(NULL), d_expr(NULL) {
+  // this check is stronger than the assertion check in the expr manager that
+  // ArrayTypes are actually array types
+  // because this check is done in production builds too
+  PrettyCheckArgument(
+      type.isArray(), type,
+      "array store-all constants can only be created for array types, not `%s'",
+      type.toString().c_str());
+
+  PrettyCheckArgument(
+      expr.getType().isComparableTo(type.getConstituentType()), expr,
+      "expr type `%s' does not match constituent type of array type `%s'",
+      expr.getType().toString().c_str(), type.toString().c_str());
+
+  PrettyCheckArgument(expr.isConst(), expr,
+                      "ArrayStoreAll requires a constant expression");
+
+  // Delay allocation until the checks above have been performed. If these fail,
+  // the memory for d_type and d_expr should not leak. The alternative is catch,
+  // delete and re-throw.
+  d_type = new ArrayType(type);
+  d_expr = new Expr(expr);
+}
+
+ArrayStoreAll::ArrayStoreAll(const ArrayStoreAll& other)
+    : d_type(new ArrayType(other.getType())),
+      d_expr(new Expr(other.getExpr())) {}
+
+ArrayStoreAll::~ArrayStoreAll() throw() {
+  delete d_expr;
+  delete d_type;
+}
+
+ArrayStoreAll& ArrayStoreAll::operator=(const ArrayStoreAll& other) {
+  (*d_type) = other.getType();
+  (*d_expr) = other.getExpr();
+  return *this;
+}
+
+const ArrayType& ArrayStoreAll::getType() const throw() { return *d_type; }
+
+const Expr& ArrayStoreAll::getExpr() const throw() { return *d_expr; }
+
+bool ArrayStoreAll::operator==(const ArrayStoreAll& asa) const throw() {
+  return getType() == asa.getType() && getExpr() == asa.getExpr();
+}
+
+bool ArrayStoreAll::operator<(const ArrayStoreAll& asa) const throw() {
+  return (getType() < asa.getType()) ||
+         (getType() == asa.getType() && getExpr() < asa.getExpr());
+}
+
+bool ArrayStoreAll::operator<=(const ArrayStoreAll& asa) const throw() {
+  return (getType() < asa.getType()) ||
+         (getType() == asa.getType() && getExpr() <= asa.getExpr());
+}
+
+std::ostream& operator<<(std::ostream& out, const ArrayStoreAll& asa) {
+  return out << "__array_store_all__(" << asa.getType() << ", " << asa.getExpr()
+             << ')';
+}
+
+size_t ArrayStoreAllHashFunction::operator()(const ArrayStoreAll& asa) const {
+  return TypeHashFunction()(asa.getType()) * ExprHashFunction()(asa.getExpr());
+}
+
+} /* CVC4 namespace */
diff --git a/src/expr/array_store_all.h b/src/expr/array_store_all.h
new file mode 100644
index 0000000..0a9c834
--- /dev/null
+++ b/src/expr/array_store_all.h
@@ -0,0 +1,81 @@
+/*********************                                                        */
+/*! \file array_store_all.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Representation of a constant array (an array in which the
+ ** element is the same for all indices)
+ **
+ ** Representation of a constant array (an array in which the element is
+ ** the same for all indices).
+ **/
+
+#include "cvc4_public.h"
+
+#pragma once
+
+#include <iosfwd>
+
+#include "base/exception.h"
+
+namespace CVC4 {
+  // messy; Expr needs ArrayStoreAll (because it's the payload of a
+  // CONSTANT-kinded expression), and ArrayStoreAll needs Expr.
+  class Expr;
+  class ArrayType;
+}/* CVC4 namespace */
+
+
+namespace CVC4 {
+
+class CVC4_PUBLIC ArrayStoreAll {
+public:
+  ArrayStoreAll(const ArrayStoreAll& other);
+
+  ArrayStoreAll& operator=(const ArrayStoreAll& other);
+
+  ArrayStoreAll(const ArrayType& type, const Expr& expr)
+      throw(IllegalArgumentException);
+
+  ~ArrayStoreAll() throw();
+
+  const ArrayType& getType() const throw();
+
+  const Expr& getExpr() const throw();
+
+  bool operator==(const ArrayStoreAll& asa) const throw();
+
+  bool operator!=(const ArrayStoreAll& asa) const throw() {
+    return !(*this == asa);
+  }
+
+  bool operator<(const ArrayStoreAll& asa) const throw();
+  bool operator<=(const ArrayStoreAll& asa) const throw();
+  bool operator>(const ArrayStoreAll& asa) const throw() {
+    return !(*this <= asa);
+  }
+  bool operator>=(const ArrayStoreAll& asa) const throw() {
+    return !(*this < asa);
+  }
+
+private:
+  ArrayType* d_type;
+  Expr* d_expr;
+};/* class ArrayStoreAll */
+
+std::ostream& operator<<(std::ostream& out, const ArrayStoreAll& asa) CVC4_PUBLIC;
+
+/**
+ * Hash function for the ArrayStoreAll constants.
+ */
+struct CVC4_PUBLIC ArrayStoreAllHashFunction {
+  size_t operator()(const ArrayStoreAll& asa) const;
+};/* struct ArrayStoreAllHashFunction */
+
+}/* CVC4 namespace */
diff --git a/src/expr/array_store_all.i b/src/expr/array_store_all.i
new file mode 100644
index 0000000..b66e4a1
--- /dev/null
+++ b/src/expr/array_store_all.i
@@ -0,0 +1,17 @@
+%{
+#include "expr/array_store_all.h"
+%}
+
+%rename(equals) CVC4::ArrayStoreAll::operator==(const ArrayStoreAll&) const;
+%ignore CVC4::ArrayStoreAll::operator!=(const ArrayStoreAll&) const;
+%rename(less) CVC4::ArrayStoreAll::operator<(const ArrayStoreAll&) const;
+%rename(lessEqual) CVC4::ArrayStoreAll::operator<=(const ArrayStoreAll&) const;
+%rename(greater) CVC4::ArrayStoreAll::operator>(const ArrayStoreAll&) const;
+%rename(greaterEqual) CVC4::ArrayStoreAll::operator>=(const ArrayStoreAll&) const;
+
+%rename(apply) CVC4::ArrayStoreAllHashFunction::operator()(const ArrayStoreAll&) const;
+
+%ignore CVC4::operator<<(std::ostream&, const ArrayStoreAll&);
+
+%include "expr/type.i"
+%include "expr/array_store_all.h"
diff --git a/src/expr/ascription_type.h b/src/expr/ascription_type.h
new file mode 100644
index 0000000..46d2871
--- /dev/null
+++ b/src/expr/ascription_type.h
@@ -0,0 +1,63 @@
+/*********************                                                        */
+/*! \file ascription_type.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A class representing a type ascription
+ **
+ ** A class representing a parameter for the type ascription operator.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__ASCRIPTION_TYPE_H
+#define __CVC4__ASCRIPTION_TYPE_H
+
+#include "expr/type.h"
+
+namespace CVC4 {
+
+/**
+ * A class used to parameterize a type ascription.  For example,
+ * "nil :: list<nat>" is an expression of kind APPLY_TYPE_ASCRIPTION.
+ * The parameter is an ASCRIPTION_TYPE-kinded expression with an
+ * AscriptionType payload.  (Essentially, all of this is a way to
+ * coerce a Type into the expression tree.)
+ */
+class CVC4_PUBLIC AscriptionType {
+  Type d_type;
+public:
+  AscriptionType(Type t) throw() : d_type(t) {}
+  Type getType() const throw() { return d_type; }
+  bool operator==(const AscriptionType& other) const throw() {
+    return d_type == other.d_type;
+  }
+  bool operator!=(const AscriptionType& other) const throw() {
+    return d_type != other.d_type;
+  }
+};/* class AscriptionType */
+
+/**
+ * A hash function for type ascription operators.
+ */
+struct CVC4_PUBLIC AscriptionTypeHashFunction {
+  inline size_t operator()(const AscriptionType& at) const {
+    return TypeHashFunction()(at.getType());
+  }
+};/* struct AscriptionTypeHashFunction */
+
+/** An output routine for AscriptionTypes */
+inline std::ostream& operator<<(std::ostream& out, AscriptionType at) {
+  out << at.getType();
+  return out;
+}
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__ASCRIPTION_TYPE_H */
diff --git a/src/expr/ascription_type.i b/src/expr/ascription_type.i
new file mode 100644
index 0000000..57d8f97
--- /dev/null
+++ b/src/expr/ascription_type.i
@@ -0,0 +1,12 @@
+%{
+#include "expr/ascription_type.h"
+%}
+
+%rename(equals) CVC4::AscriptionType::operator==(const AscriptionType&) const;
+%ignore CVC4::AscriptionType::operator!=(const AscriptionType&) const;
+
+%rename(apply) CVC4::AscriptionTypeHashFunction::operator()(const AscriptionType&) const;
+
+%ignore CVC4::operator<<(std::ostream&, AscriptionType);
+
+%include "expr/ascription_type.h"
diff --git a/src/expr/attribute.cpp b/src/expr/attribute.cpp
new file mode 100644
index 0000000..3cf2429
--- /dev/null
+++ b/src/expr/attribute.cpp
@@ -0,0 +1,152 @@
+/*********************                                                        */
+/*! \file attribute.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief AttributeManager implementation.
+ **
+ ** AttributeManager implementation.
+ **/
+#include <utility>
+
+#include "base/output.h"
+#include "expr/attribute.h"
+#include "expr/node_value.h"
+#include "smt/smt_engine.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace expr {
+namespace attr {
+
+SmtAttributes::SmtAttributes(context::Context* ctxt) :
+  d_cdbools(ctxt),
+  d_cdints(ctxt),
+  d_cdtnodes(ctxt),
+  d_cdnodes(ctxt),
+  d_cdstrings(ctxt),
+  d_cdptrs(ctxt) {
+}
+
+AttributeManager::AttributeManager() :
+  d_inGarbageCollection(false)
+{}
+
+bool AttributeManager::inGarbageCollection() const {
+  return d_inGarbageCollection;
+}
+
+SmtAttributes& AttributeManager::getSmtAttributes(SmtEngine* smt) {
+  Assert(smt != NULL);
+  return *smt->d_smtAttributes;
+}
+
+const SmtAttributes& AttributeManager::getSmtAttributes(SmtEngine* smt) const {
+  return *smt->d_smtAttributes;
+}
+
+void AttributeManager::debugHook(int debugFlag) {
+  /* DO NOT CHECK IN ANY CODE INTO THE DEBUG HOOKS!
+   * debugHook() is an empty function for the purpose of debugging
+   * the AttributeManager without recompiling all of CVC4.
+   * Formally this is a nop.
+   */
+}
+
+void AttributeManager::deleteAllAttributes(NodeValue* nv) {
+  Assert(!inGarbageCollection());
+  d_bools.erase(nv);
+  deleteFromTable(d_ints, nv);
+  deleteFromTable(d_tnodes, nv);
+  deleteFromTable(d_nodes, nv);
+  deleteFromTable(d_types, nv);
+  deleteFromTable(d_strings, nv);
+  deleteFromTable(d_ptrs, nv);
+}
+
+void SmtAttributes::deleteAllAttributes(TNode n) {
+  NodeValue* nv = n.d_nv;
+
+  d_cdbools.erase(nv);
+  deleteFromTable(d_cdints, nv);
+  deleteFromTable(d_cdtnodes, nv);
+  deleteFromTable(d_cdnodes, nv);
+  deleteFromTable(d_cdstrings, nv);
+  deleteFromTable(d_cdptrs, nv);
+}
+
+void AttributeManager::deleteAllAttributes() {
+  d_bools.clear();
+  deleteAllFromTable(d_ints);
+  deleteAllFromTable(d_tnodes);
+  deleteAllFromTable(d_nodes);
+  deleteAllFromTable(d_types);
+  deleteAllFromTable(d_strings);
+  deleteAllFromTable(d_ptrs);
+}
+
+void AttributeManager::deleteAttributes(const AttrIdVec& atids) {
+  typedef std::map<uint64_t, std::vector< uint64_t> > AttrToVecMap;
+  AttrToVecMap perTableIds;
+
+  for(AttrIdVec::const_iterator it = atids.begin(), it_end = atids.end(); it != it_end; ++it) {
+    const AttributeUniqueId& pair = *(*it);
+    std::vector< uint64_t>& inTable = perTableIds[pair.getTableId()];
+    inTable.push_back(pair.getWithinTypeId());
+  }
+  AttrToVecMap::iterator it = perTableIds.begin(), it_end = perTableIds.end();
+  for(; it != it_end; ++it) {
+    Assert(((*it).first) <= LastAttrTable);
+    AttrTableId tableId = (AttrTableId) ((*it).first);
+    std::vector< uint64_t>& ids = (*it).second;
+    std::sort(ids.begin(), ids.end());
+
+    switch(tableId) {
+    case AttrTableBool:
+      Unimplemented("delete attributes is unimplemented for bools");
+      break;
+    case AttrTableUInt64:
+      deleteAttributesFromTable(d_ints, ids);
+      break;
+    case AttrTableTNode:
+      deleteAttributesFromTable(d_tnodes, ids);
+      break;
+    case AttrTableNode:
+      deleteAttributesFromTable(d_nodes, ids);
+      break;
+    case AttrTableTypeNode:
+      deleteAttributesFromTable(d_types, ids);
+      break;
+    case AttrTableString:
+      deleteAttributesFromTable(d_strings, ids);
+      break;
+    case AttrTablePointer:
+      deleteAttributesFromTable(d_ptrs, ids);
+      break;
+
+    case AttrTableCDBool:
+    case AttrTableCDUInt64:
+    case AttrTableCDTNode:
+    case AttrTableCDNode:
+    case AttrTableCDString:
+    case AttrTableCDPointer:
+      Unimplemented("CDAttributes cannot be deleted. Contact Tim/Morgan if this behavior is desired.");
+      break;
+
+    case LastAttrTable:
+    default:
+      Unreachable();
+    }
+  }
+}
+
+}/* CVC4::expr::attr namespace */
+}/* CVC4::expr namespace */
+}/* CVC4 namespace */
diff --git a/src/expr/attribute.h b/src/expr/attribute.h
new file mode 100644
index 0000000..13bedea
--- /dev/null
+++ b/src/expr/attribute.h
@@ -0,0 +1,796 @@
+/*********************                                                        */
+/*! \file attribute.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Node attributes.
+ **
+ ** Node attributes.
+ **/
+
+#include "cvc4_private.h"
+
+/* There are strong constraints on ordering of declarations of
+ * attributes and nodes due to template use */
+#include "expr/node.h"
+#include "expr/type_node.h"
+#include "context/context.h"
+
+#ifndef __CVC4__EXPR__ATTRIBUTE_H
+#define __CVC4__EXPR__ATTRIBUTE_H
+
+#include <string>
+#include <stdint.h>
+#include "expr/attribute_unique_id.h"
+
+// include supporting templates
+#define CVC4_ATTRIBUTE_H__INCLUDING__ATTRIBUTE_INTERNALS_H
+#include "expr/attribute_internals.h"
+#undef CVC4_ATTRIBUTE_H__INCLUDING__ATTRIBUTE_INTERNALS_H
+
+namespace CVC4 {
+
+class SmtEngine;
+
+namespace smt {
+  extern CVC4_THREADLOCAL(SmtEngine*) s_smtEngine_current;
+}/* CVC4::smt namespace */
+
+namespace expr {
+namespace attr {
+
+// ATTRIBUTE MANAGER ===========================================================
+
+struct SmtAttributes {
+  SmtAttributes(context::Context*);
+
+  // IF YOU ADD ANY TABLES, don't forget to add them also to the
+  // implementation of deleteAllAttributes().
+
+  /** Underlying hash table for context-dependent boolean-valued attributes */
+  CDAttrHash<bool> d_cdbools;
+  /** Underlying hash table for context-dependent integral-valued attributes */
+  CDAttrHash<uint64_t> d_cdints;
+  /** Underlying hash table for context-dependent node-valued attributes */
+  CDAttrHash<TNode> d_cdtnodes;
+  /** Underlying hash table for context-dependent node-valued attributes */
+  CDAttrHash<Node> d_cdnodes;
+  /** Underlying hash table for context-dependent string-valued attributes */
+  CDAttrHash<std::string> d_cdstrings;
+  /** Underlying hash table for context-dependent pointer-valued attributes */
+  CDAttrHash<void*> d_cdptrs;
+
+  /** Delete all attributes of given node */
+  void deleteAllAttributes(TNode n);
+
+  template <class T>
+  void deleteFromTable(CDAttrHash<T>& table, NodeValue* nv);
+
+};/* struct SmtAttributes */
+
+/**
+ * A container for the main attribute tables of the system.  There's a
+ * one-to-one NodeManager : AttributeManager correspondence.
+ */
+class AttributeManager {
+
+  template <class T>
+  void deleteFromTable(AttrHash<T>& table, NodeValue* nv);
+
+  template <class T>
+  void deleteAllFromTable(AttrHash<T>& table);
+
+  template <class T>
+  void deleteAttributesFromTable(AttrHash<T>& table, const std::vector<uint64_t>& ids);
+
+  template <class T>
+  void reconstructTable(AttrHash<T>& table);
+
+  /**
+   * getTable<> is a helper template that gets the right table from an
+   * AttributeManager given its type.
+   */
+  template <class T, bool context_dep>
+  friend struct getTable;
+
+  bool d_inGarbageCollection;
+
+  void clearDeleteAllAttributesBuffer();
+
+  SmtAttributes& getSmtAttributes(SmtEngine*);
+  const SmtAttributes& getSmtAttributes(SmtEngine*) const;
+
+public:
+
+  /** Construct an attribute manager. */
+  AttributeManager();
+
+  // IF YOU ADD ANY TABLES, don't forget to add them also to the
+  // implementation of deleteAllAttributes().
+
+  /** Underlying hash table for boolean-valued attributes */
+  AttrHash<bool> d_bools;
+  /** Underlying hash table for integral-valued attributes */
+  AttrHash<uint64_t> d_ints;
+  /** Underlying hash table for node-valued attributes */
+  AttrHash<TNode> d_tnodes;
+  /** Underlying hash table for node-valued attributes */
+  AttrHash<Node> d_nodes;
+  /** Underlying hash table for types attributes */
+  AttrHash<TypeNode> d_types;
+  /** Underlying hash table for string-valued attributes */
+  AttrHash<std::string> d_strings;
+  /** Underlying hash table for pointer-valued attributes */
+  AttrHash<void*> d_ptrs;
+
+  /**
+   * Get a particular attribute on a particular node.
+   *
+   * @param nv the node about which to inquire
+   * @param attr the attribute kind to get
+   * @return the attribute value, if set, or a default-constructed
+   * AttrKind::value_type if not.
+   */
+  template <class AttrKind>
+  typename AttrKind::value_type getAttribute(NodeValue* nv,
+                                             const AttrKind& attr) const;
+
+  /**
+   * Determine if a particular attribute exists for a particular node.
+   *
+   * @param nv the node about which to inquire
+   * @param attr the attribute kind to inquire about
+   * @return true if the given node has the given attribute
+   */
+  template <class AttrKind>
+  bool hasAttribute(NodeValue* nv,
+                    const AttrKind& attr) const;
+
+  /**
+   * Determine if a particular attribute exists for a particular node,
+   * and get it if it does.
+   *
+   * @param nv the node about which to inquire
+   * @param attr the attribute kind to inquire about
+   * @param ret a pointer to a return value, set in case the node has
+   * the attribute
+   * @return true if the given node has the given attribute
+   */
+  template <class AttrKind>
+  bool getAttribute(NodeValue* nv,
+                    const AttrKind& attr,
+                    typename AttrKind::value_type& ret) const;
+
+  /**
+   * Set a particular attribute on a particular node.
+   *
+   * @param nv the node for which to set the attribute
+   * @param attr the attribute kind to set
+   * @param value a pointer to a return value, set in case the node has
+   * the attribute
+   * @return true if the given node has the given attribute
+   */
+  template <class AttrKind>
+  void setAttribute(NodeValue* nv,
+                    const AttrKind& attr,
+                    const typename AttrKind::value_type& value);
+
+  /**
+   * Remove all attributes associated to the given node.
+   *
+   * @param nv the node from which to delete attributes
+   */
+  void deleteAllAttributes(NodeValue* nv);
+
+  /**
+   * Remove all attributes from the tables.
+   */
+  void deleteAllAttributes();
+
+  /**
+   * Returns true if a table is currently being deleted.
+   */
+  bool inGarbageCollection() const ;
+
+  /**
+   * Determines the AttrTableId of an attribute.
+   *
+   * @param attr the attribute
+   * @return the id of the attribute table.
+   */
+  template <class AttrKind>
+  static AttributeUniqueId getAttributeId(const AttrKind& attr);
+
+  /** A list of attributes. */
+  typedef std::vector< const AttributeUniqueId* > AttrIdVec;
+
+  /** Deletes a list of attributes. */
+  void deleteAttributes(const AttrIdVec& attributeIds);
+
+  /**
+   * debugHook() is an empty function for the purpose of debugging
+   * the AttributeManager without recompiling all of CVC4.
+   * Formally this is a nop.
+   */
+  void debugHook(int debugFlag);
+};
+
+}/* CVC4::expr::attr namespace */
+
+// MAPPING OF ATTRIBUTE KINDS TO TABLES IN THE ATTRIBUTE MANAGER ===============
+
+namespace attr {
+
+/**
+ * The getTable<> template provides (static) access to the
+ * AttributeManager field holding the table.
+ */
+template <class T, bool context_dep>
+struct getTable;
+
+/** Access the "d_bools" member of AttributeManager. */
+template <>
+struct getTable<bool, false> {
+  static const AttrTableId id = AttrTableBool;
+  typedef AttrHash<bool> table_type;
+  static inline table_type& get(AttributeManager& am, SmtEngine* smt) {
+    return am.d_bools;
+  }
+  static inline const table_type& get(const AttributeManager& am, SmtEngine* smt) {
+    return am.d_bools;
+  }
+};
+
+/** Access the "d_ints" member of AttributeManager. */
+template <>
+struct getTable<uint64_t, false> {
+  static const AttrTableId id = AttrTableUInt64;
+  typedef AttrHash<uint64_t> table_type;
+  static inline table_type& get(AttributeManager& am, SmtEngine* smt) {
+    return am.d_ints;
+  }
+  static inline const table_type& get(const AttributeManager& am, SmtEngine* smt) {
+    return am.d_ints;
+  }
+};
+
+/** Access the "d_tnodes" member of AttributeManager. */
+template <>
+struct getTable<TNode, false> {
+  static const AttrTableId id = AttrTableTNode;
+  typedef AttrHash<TNode> table_type;
+  static inline table_type& get(AttributeManager& am, SmtEngine* smt) {
+    return am.d_tnodes;
+  }
+  static inline const table_type& get(const AttributeManager& am, SmtEngine* smt) {
+    return am.d_tnodes;
+  }
+};
+
+/** Access the "d_nodes" member of AttributeManager. */
+template <>
+struct getTable<Node, false> {
+  static const AttrTableId id = AttrTableNode;
+  typedef AttrHash<Node> table_type;
+  static inline table_type& get(AttributeManager& am, SmtEngine* smt) {
+    return am.d_nodes;
+  }
+  static inline const table_type& get(const AttributeManager& am, SmtEngine* smt) {
+    return am.d_nodes;
+  }
+};
+
+/** Access the "d_types" member of AttributeManager. */
+template <>
+struct getTable<TypeNode, false> {
+  static const AttrTableId id = AttrTableTypeNode;
+  typedef AttrHash<TypeNode> table_type;
+  static inline table_type& get(AttributeManager& am, SmtEngine* smt) {
+    return am.d_types;
+  }
+  static inline const table_type& get(const AttributeManager& am, SmtEngine* smt) {
+    return am.d_types;
+  }
+};
+
+/** Access the "d_strings" member of AttributeManager. */
+template <>
+struct getTable<std::string, false> {
+  static const AttrTableId id = AttrTableString;
+  typedef AttrHash<std::string> table_type;
+  static inline table_type& get(AttributeManager& am, SmtEngine* smt) {
+    return am.d_strings;
+  }
+  static inline const table_type& get(const AttributeManager& am, SmtEngine* smt) {
+    return am.d_strings;
+  }
+};
+
+/** Access the "d_ptrs" member of AttributeManager. */
+template <class T>
+struct getTable<T*, false> {
+  static const AttrTableId id = AttrTablePointer;
+  typedef AttrHash<void*> table_type;
+  static inline table_type& get(AttributeManager& am, SmtEngine* smt) {
+    return am.d_ptrs;
+  }
+  static inline const table_type& get(const AttributeManager& am, SmtEngine* smt) {
+    return am.d_ptrs;
+  }
+};
+
+/** Access the "d_ptrs" member of AttributeManager. */
+template <class T>
+struct getTable<const T*, false> {
+  static const AttrTableId id = AttrTablePointer;
+  typedef AttrHash<void*> table_type;
+  static inline table_type& get(AttributeManager& am, SmtEngine* smt) {
+    return am.d_ptrs;
+  }
+  static inline const table_type& get(const AttributeManager& am, SmtEngine* smt) {
+    return am.d_ptrs;
+  }
+};
+
+/** Access the "d_cdbools" member of AttributeManager. */
+template <>
+struct getTable<bool, true> {
+  static const AttrTableId id = AttrTableCDBool;
+  typedef CDAttrHash<bool> table_type;
+  static inline table_type& get(AttributeManager& am, SmtEngine* smt) {
+    return am.getSmtAttributes(smt).d_cdbools;
+  }
+  static inline const table_type& get(const AttributeManager& am, SmtEngine* smt) {
+    return am.getSmtAttributes(smt).d_cdbools;
+  }
+};
+
+/** Access the "d_cdints" member of AttributeManager. */
+template <>
+struct getTable<uint64_t, true> {
+  static const AttrTableId id = AttrTableCDUInt64;
+  typedef CDAttrHash<uint64_t> table_type;
+  static inline table_type& get(AttributeManager& am, SmtEngine* smt) {
+    return am.getSmtAttributes(smt).d_cdints;
+  }
+  static inline const table_type& get(const AttributeManager& am, SmtEngine* smt) {
+    return am.getSmtAttributes(smt).d_cdints;
+  }
+};
+
+/** Access the "d_tnodes" member of AttributeManager. */
+template <>
+struct getTable<TNode, true> {
+  static const AttrTableId id = AttrTableCDTNode;
+  typedef CDAttrHash<TNode> table_type;
+  static inline table_type& get(AttributeManager& am, SmtEngine* smt) {
+    return am.getSmtAttributes(smt).d_cdtnodes;
+  }
+  static inline const table_type& get(const AttributeManager& am, SmtEngine* smt) {
+    return am.getSmtAttributes(smt).d_cdtnodes;
+  }
+};
+
+/** Access the "d_cdnodes" member of AttributeManager. */
+template <>
+struct getTable<Node, true> {
+  static const AttrTableId id = AttrTableCDNode;
+  typedef CDAttrHash<Node> table_type;
+  static inline table_type& get(AttributeManager& am, SmtEngine* smt) {
+    return am.getSmtAttributes(smt).d_cdnodes;
+  }
+  static inline const table_type& get(const AttributeManager& am, SmtEngine* smt) {
+    return am.getSmtAttributes(smt).d_cdnodes;
+  }
+};
+
+/** Access the "d_cdstrings" member of AttributeManager. */
+template <>
+struct getTable<std::string, true> {
+  static const AttrTableId id = AttrTableCDString;
+  typedef CDAttrHash<std::string> table_type;
+  static inline table_type& get(AttributeManager& am, SmtEngine* smt) {
+    return am.getSmtAttributes(smt).d_cdstrings;
+  }
+  static inline const table_type& get(const AttributeManager& am, SmtEngine* smt) {
+    return am.getSmtAttributes(smt).d_cdstrings;
+  }
+};
+
+/** Access the "d_cdptrs" member of AttributeManager. */
+template <class T>
+struct getTable<T*, true> {
+  static const AttrTableId id = AttrTableCDPointer;
+  typedef CDAttrHash<void*> table_type;
+  static inline table_type& get(AttributeManager& am, SmtEngine* smt) {
+    return am.getSmtAttributes(smt).d_cdptrs;
+  }
+  static inline const table_type& get(const AttributeManager& am, SmtEngine* smt) {
+    return am.getSmtAttributes(smt).d_cdptrs;
+  }
+};
+
+/** Access the "d_cdptrs" member of AttributeManager. */
+template <class T>
+struct getTable<const T*, true> {
+  static const AttrTableId id = AttrTableCDPointer;
+  typedef CDAttrHash<void*> table_type;
+  static inline table_type& get(AttributeManager& am, SmtEngine* smt) {
+    return am.getSmtAttributes(smt).d_cdptrs;
+  }
+  static inline const table_type& get(const AttributeManager& am, SmtEngine* smt) {
+    return am.getSmtAttributes(smt).d_cdptrs;
+  }
+};
+
+}/* CVC4::expr::attr namespace */
+
+// ATTRIBUTE MANAGER IMPLEMENTATIONS ===========================================
+
+namespace attr {
+
+// implementation for AttributeManager::getAttribute()
+template <class AttrKind>
+typename AttrKind::value_type
+AttributeManager::getAttribute(NodeValue* nv, const AttrKind&) const {
+  typedef typename AttrKind::value_type value_type;
+  typedef KindValueToTableValueMapping<value_type> mapping;
+  typedef typename getTable<value_type, AttrKind::context_dependent>::
+            table_type table_type;
+
+  const table_type& ah =
+    getTable<value_type, AttrKind::context_dependent>::get(*this, smt::s_smtEngine_current);
+  typename table_type::const_iterator i =
+    ah.find(std::make_pair(AttrKind::getId(), nv));
+
+  if(i == ah.end()) {
+    return typename AttrKind::value_type();
+  }
+
+  return mapping::convertBack((*i).second);
+}
+
+/* Helper template class for hasAttribute(), specialized based on
+ * whether AttrKind has a "default value" that all Nodes implicitly
+ * have or not. */
+template <bool has_default, class AttrKind>
+struct HasAttribute;
+
+/**
+ * Specialization of HasAttribute<> helper template for AttrKinds
+ * with a default value.
+ */
+template <class AttrKind>
+struct HasAttribute<true, AttrKind> {
+  /** This implementation is simple; it's always true. */
+  static inline bool hasAttribute(const AttributeManager* am,
+                                  NodeValue* nv) {
+    return true;
+  }
+
+  /**
+   * This implementation returns the AttrKind's default value if the
+   * Node doesn't have the given attribute.
+   */
+  static inline bool getAttribute(const AttributeManager* am,
+                                  NodeValue* nv,
+                                  typename AttrKind::value_type& ret) {
+    typedef typename AttrKind::value_type value_type;
+    typedef KindValueToTableValueMapping<value_type> mapping;
+    typedef typename getTable<value_type,
+                              AttrKind::context_dependent>::table_type
+      table_type;
+
+    const table_type& ah =
+      getTable<value_type, AttrKind::context_dependent>::get(*am, smt::s_smtEngine_current);
+    typename table_type::const_iterator i =
+      ah.find(std::make_pair(AttrKind::getId(), nv));
+
+    if(i == ah.end()) {
+      ret = AttrKind::default_value;
+    } else {
+      ret = mapping::convertBack((*i).second);
+    }
+
+    return true;
+  }
+};
+
+/**
+ * Specialization of HasAttribute<> helper template for AttrKinds
+ * without a default value.
+ */
+template <class AttrKind>
+struct HasAttribute<false, AttrKind> {
+  static inline bool hasAttribute(const AttributeManager* am,
+                                  NodeValue* nv) {
+    typedef typename AttrKind::value_type value_type;
+    //typedef KindValueToTableValueMapping<value_type> mapping;
+    typedef typename getTable<value_type, AttrKind::context_dependent>::
+              table_type table_type;
+
+    const table_type& ah =
+      getTable<value_type, AttrKind::context_dependent>::get(*am, smt::s_smtEngine_current);
+    typename table_type::const_iterator i =
+      ah.find(std::make_pair(AttrKind::getId(), nv));
+
+    if(i == ah.end()) {
+      return false;
+    }
+
+    return true;
+  }
+
+  static inline bool getAttribute(const AttributeManager* am,
+                                  NodeValue* nv,
+                                  typename AttrKind::value_type& ret) {
+    typedef typename AttrKind::value_type value_type;
+    typedef KindValueToTableValueMapping<value_type> mapping;
+    typedef typename getTable<value_type, AttrKind::context_dependent>::
+              table_type table_type;
+
+    const table_type& ah =
+      getTable<value_type, AttrKind::context_dependent>::get(*am, smt::s_smtEngine_current);
+    typename table_type::const_iterator i =
+      ah.find(std::make_pair(AttrKind::getId(), nv));
+
+    if(i == ah.end()) {
+      return false;
+    }
+
+    ret = mapping::convertBack((*i).second);
+
+    return true;
+  }
+};
+
+template <class AttrKind>
+bool AttributeManager::hasAttribute(NodeValue* nv,
+                                    const AttrKind&) const {
+  return HasAttribute<AttrKind::has_default_value, AttrKind>::
+           hasAttribute(this, nv);
+}
+
+template <class AttrKind>
+bool AttributeManager::getAttribute(NodeValue* nv,
+                                    const AttrKind&,
+                                    typename AttrKind::value_type& ret) const {
+  return HasAttribute<AttrKind::has_default_value, AttrKind>::
+           getAttribute(this, nv, ret);
+}
+
+template <class AttrKind>
+inline void
+AttributeManager::setAttribute(NodeValue* nv,
+                               const AttrKind&,
+                               const typename AttrKind::value_type& value) {
+  typedef typename AttrKind::value_type value_type;
+  typedef KindValueToTableValueMapping<value_type> mapping;
+  typedef typename getTable<value_type, AttrKind::context_dependent>::
+            table_type table_type;
+
+  table_type& ah =
+    getTable<value_type, AttrKind::context_dependent>::get(*this, smt::s_smtEngine_current);
+  ah[std::make_pair(AttrKind::getId(), nv)] = mapping::convert(value);
+}
+
+/**
+ * Search for the NodeValue in all attribute tables and remove it,
+ * calling the cleanup function if one is defined.
+ *
+ * This cannot use nv as anything other than a pointer!
+ */
+template <class T>
+inline void AttributeManager::deleteFromTable(AttrHash<T>& table,
+                                              NodeValue* nv) {
+  for(uint64_t id = 0; id < attr::LastAttributeId<T, false>::getId(); ++id) {
+    typedef AttributeTraits<T, false> traits_t;
+    typedef AttrHash<T> hash_t;
+    std::pair<uint64_t, NodeValue*> pr = std::make_pair(id, nv);
+    if(traits_t::getCleanup()[id] != NULL) {
+      typename hash_t::iterator i = table.find(pr);
+      if(i != table.end()) {
+        traits_t::getCleanup()[id]((*i).second);
+        table.erase(pr);
+      }
+    } else {
+      table.erase(pr);
+    }
+  }
+}
+
+/**
+ * Obliterate a NodeValue from a (context-dependent) attribute table.
+ */
+template <class T>
+inline void SmtAttributes::deleteFromTable(CDAttrHash<T>& table,
+                                           NodeValue* nv) {
+  for(unsigned id = 0; id < attr::LastAttributeId<T, true>::getId(); ++id) {
+    table.obliterate(std::make_pair(id, nv));
+  }
+}
+
+/**
+ * Remove all attributes from the table calling the cleanup function
+ * if one is defined.
+ */
+template <class T>
+inline void AttributeManager::deleteAllFromTable(AttrHash<T>& table) {
+  Assert(!d_inGarbageCollection);
+  d_inGarbageCollection = true;
+
+  bool anyRequireClearing = false;
+  typedef AttributeTraits<T, false> traits_t;
+  typedef AttrHash<T> hash_t;
+  for(uint64_t id = 0; id < attr::LastAttributeId<T, false>::getId(); ++id) {
+    if(traits_t::getCleanup()[id] != NULL) {
+      anyRequireClearing = true;
+    }
+  }
+
+  if(anyRequireClearing) {
+    typename hash_t::iterator it = table.begin();
+    typename hash_t::iterator it_end = table.end();
+
+    while (it != it_end){
+      uint64_t id = (*it).first.first;
+      /*
+      Debug("attrgc") << "id " << id
+                      << " node_value: " << ((*it).first.second)
+                      << std::endl;
+      */
+      if(traits_t::getCleanup()[id] != NULL) {
+        traits_t::getCleanup()[id]((*it).second);
+      }
+      ++it;
+    }
+  }
+  table.clear();
+  d_inGarbageCollection = false;
+  Assert(!d_inGarbageCollection);
+}
+
+template <class AttrKind>
+AttributeUniqueId AttributeManager::getAttributeId(const AttrKind& attr){
+  typedef typename AttrKind::value_type value_type;
+  AttrTableId tableId = getTable<value_type,
+                                 AttrKind::context_dependent>::id;
+  return AttributeUniqueId(tableId, attr.getId());
+}
+
+template <class T>
+void AttributeManager::deleteAttributesFromTable(AttrHash<T>& table, const std::vector<uint64_t>& ids){
+  d_inGarbageCollection = true;
+  typedef AttributeTraits<T, false> traits_t;
+  typedef AttrHash<T> hash_t;
+
+  typename hash_t::iterator it = table.begin();
+  typename hash_t::iterator tmp;
+  typename hash_t::iterator it_end = table.end();
+
+  std::vector<uint64_t>::const_iterator begin_ids = ids.begin();
+  std::vector<uint64_t>::const_iterator end_ids = ids.end();
+
+  size_t initialSize = table.size();
+  while (it != it_end){
+    uint64_t id = (*it).first.first;
+
+    if(std::binary_search(begin_ids, end_ids, id)){
+      tmp = it;
+      ++it;
+      if(traits_t::getCleanup()[id] != NULL) {
+        traits_t::getCleanup()[id]((*tmp).second);
+      }
+      table.erase(tmp);
+    }else{
+      ++it;
+    }
+  }
+  d_inGarbageCollection = false;
+  static const size_t ReconstructShrinkRatio = 8;
+  if(initialSize/ReconstructShrinkRatio > table.size()){
+    reconstructTable(table);
+  }
+}
+
+template <class T>
+void AttributeManager::reconstructTable(AttrHash<T>& table){
+  d_inGarbageCollection = true;
+  typedef AttrHash<T> hash_t;
+  hash_t cpy;
+  cpy.insert(table.begin(), table.end());
+  cpy.swap(table);
+  d_inGarbageCollection = false;
+}
+
+
+}/* CVC4::expr::attr namespace */
+}/* CVC4::expr namespace */
+
+template <class AttrKind>
+inline typename AttrKind::value_type
+NodeManager::getAttribute(expr::NodeValue* nv, const AttrKind&) const {
+  return d_attrManager->getAttribute(nv, AttrKind());
+}
+
+template <class AttrKind>
+inline bool NodeManager::hasAttribute(expr::NodeValue* nv,
+                                      const AttrKind&) const {
+  return d_attrManager->hasAttribute(nv, AttrKind());
+}
+
+template <class AttrKind>
+inline bool
+NodeManager::getAttribute(expr::NodeValue* nv, const AttrKind&,
+                          typename AttrKind::value_type& ret) const {
+  return d_attrManager->getAttribute(nv, AttrKind(), ret);
+}
+
+template <class AttrKind>
+inline void
+NodeManager::setAttribute(expr::NodeValue* nv, const AttrKind&,
+                          const typename AttrKind::value_type& value) {
+  d_attrManager->setAttribute(nv, AttrKind(), value);
+}
+
+template <class AttrKind>
+inline typename AttrKind::value_type
+NodeManager::getAttribute(TNode n, const AttrKind&) const {
+  return d_attrManager->getAttribute(n.d_nv, AttrKind());
+}
+
+template <class AttrKind>
+inline bool
+NodeManager::hasAttribute(TNode n, const AttrKind&) const {
+  return d_attrManager->hasAttribute(n.d_nv, AttrKind());
+}
+
+template <class AttrKind>
+inline bool
+NodeManager::getAttribute(TNode n, const AttrKind&,
+                          typename AttrKind::value_type& ret) const {
+  return d_attrManager->getAttribute(n.d_nv, AttrKind(), ret);
+}
+
+template <class AttrKind>
+inline void
+NodeManager::setAttribute(TNode n, const AttrKind&,
+                          const typename AttrKind::value_type& value) {
+  d_attrManager->setAttribute(n.d_nv, AttrKind(), value);
+}
+
+template <class AttrKind>
+inline typename AttrKind::value_type
+NodeManager::getAttribute(TypeNode n, const AttrKind&) const {
+  return d_attrManager->getAttribute(n.d_nv, AttrKind());
+}
+
+template <class AttrKind>
+inline bool
+NodeManager::hasAttribute(TypeNode n, const AttrKind&) const {
+  return d_attrManager->hasAttribute(n.d_nv, AttrKind());
+}
+
+template <class AttrKind>
+inline bool
+NodeManager::getAttribute(TypeNode n, const AttrKind&,
+                          typename AttrKind::value_type& ret) const {
+  return d_attrManager->getAttribute(n.d_nv, AttrKind(), ret);
+}
+
+template <class AttrKind>
+inline void
+NodeManager::setAttribute(TypeNode n, const AttrKind&,
+                          const typename AttrKind::value_type& value) {
+  d_attrManager->setAttribute(n.d_nv, AttrKind(), value);
+}
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__EXPR__ATTRIBUTE_H */
diff --git a/src/expr/attribute_internals.h b/src/expr/attribute_internals.h
new file mode 100644
index 0000000..60d2069
--- /dev/null
+++ b/src/expr/attribute_internals.h
@@ -0,0 +1,910 @@
+/*********************                                                        */
+/*! \file attribute_internals.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Node attributes' internals.
+ **
+ ** Node attributes' internals.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef CVC4_ATTRIBUTE_H__INCLUDING__ATTRIBUTE_INTERNALS_H
+#  error expr/attribute_internals.h should only be included by expr/attribute.h
+#endif /* CVC4_ATTRIBUTE_H__INCLUDING__ATTRIBUTE_INTERNALS_H */
+
+#ifndef __CVC4__EXPR__ATTRIBUTE_INTERNALS_H
+#define __CVC4__EXPR__ATTRIBUTE_INTERNALS_H
+
+#include <ext/hash_map>
+
+#include "context/cdhashmap.h"
+
+namespace CVC4 {
+namespace expr {
+
+// ATTRIBUTE HASH FUNCTIONS ====================================================
+
+namespace attr {
+
+/**
+ * A hash function for attribute table keys.  Attribute table keys are
+ * pairs, (unique-attribute-id, Node).
+ */
+struct AttrHashFunction {
+  enum { LARGE_PRIME = 32452843ul };
+  std::size_t operator()(const std::pair<uint64_t, NodeValue*>& p) const {
+    return p.first * LARGE_PRIME + p.second->getId();
+  }
+};/* struct AttrHashFunction */
+
+/**
+ * A hash function for boolean-valued attribute table keys; here we
+ * don't have to store a pair as the key, because we use a known bit
+ * in [0..63] for each attribute
+ */
+struct AttrBoolHashFunction {
+  std::size_t operator()(NodeValue* nv) const {
+    return (size_t)nv->getId();
+  }
+};/* struct AttrBoolHashFunction */
+
+}/* CVC4::expr::attr namespace */
+
+// ATTRIBUTE TYPE MAPPINGS =====================================================
+
+namespace attr {
+
+/**
+ * KindValueToTableValueMapping is a compile-time-only mechanism to
+ * convert "attribute value types" into "table value types" and back
+ * again.
+ *
+ * Each instantiation < T > is expected to have three members:
+ *
+ *   typename table_value_type
+ *
+ *      A type representing the underlying table's value_type for
+ *      attribute value type (T).  It may be different from T, e.g. T
+ *      could be a pointer-to-Foo, but the underlying table value_type
+ *      might be pointer-to-void.
+ *
+ *   static [convertible-to-table_value_type] convert([convertible-from-T])
+ *
+ *      Converts a T into a table_value_type.  Used to convert an
+ *      attribute value on setting it (and assigning it into the
+ *      underlying table).  See notes on specializations of
+ *      KindValueToTableValueMapping, below.
+ *
+ *   static [convertible-to-T] convertBack([convertible-from-table_value_type])
+ *
+ *      Converts a table_value_type back into a T.  Used to convert an
+ *      underlying table value back into the attribute's expected type
+ *      when retrieving it from the table.  See notes on
+ *      specializations of KindValueToTableValueMapping, below.
+ *
+ * This general (non-specialized) implementation of the template does
+ * nothing.
+ */
+template <class T>
+struct KindValueToTableValueMapping {
+  /** Simple case: T == table_value_type */
+  typedef T table_value_type;
+  /** No conversion necessary */
+  inline static T convert(const T& t) { return t; }
+  /** No conversion necessary */
+  inline static T convertBack(const T& t) { return t; }
+};
+
+/**
+ * Specialization of KindValueToTableValueMapping<> for pointer-valued
+ * attributes.
+ */
+template <class T>
+struct KindValueToTableValueMapping<T*> {
+  /** Table's value type is void* */
+  typedef void* table_value_type;
+  /** A simple reinterpret_cast<>() conversion from T* to void* */
+  inline static void* convert(const T* const& t) {
+    return reinterpret_cast<void*>(const_cast<T*>(t));
+  }
+  /** A simple reinterpret_cast<>() conversion from void* to T* */
+  inline static T* convertBack(void* const& t) {
+    return reinterpret_cast<T*>(t);
+  }
+};
+
+/**
+ * Specialization of KindValueToTableValueMapping<> for const
+ * pointer-valued attributes.
+ */
+template <class T>
+struct KindValueToTableValueMapping<const T*> {
+  /** Table's value type is void* */
+  typedef void* table_value_type;
+  /** A simple reinterpret_cast<>() conversion from const T* const to void* */
+  inline static void* convert(const T* const& t) {
+    return reinterpret_cast<void*>(const_cast<T*>(t));
+  }
+  /** A simple reinterpret_cast<>() conversion from const void* const to T* */
+  inline static const T* convertBack(const void* const& t) {
+    return reinterpret_cast<const T*>(t);
+  }
+};
+
+}/* CVC4::expr::attr namespace */
+
+// ATTRIBUTE HASH TABLES =======================================================
+
+namespace attr {
+
+/**
+ * An "AttrHash<value_type>"---the hash table underlying
+ * attributes---is simply a mapping of pair<unique-attribute-id, Node>
+ * to value_type using our specialized hash function for these pairs.
+ */
+template <class value_type>
+class AttrHash :
+    public __gnu_cxx::hash_map<std::pair<uint64_t, NodeValue*>,
+                               value_type,
+                               AttrHashFunction> {
+};/* class AttrHash<> */
+
+/**
+ * In the case of Boolean-valued attributes we have a special
+ * "AttrHash<bool>" to pack bits together in words.
+ */
+template <>
+class AttrHash<bool> :
+    protected __gnu_cxx::hash_map<NodeValue*,
+                                  uint64_t,
+                                  AttrBoolHashFunction> {
+
+  /** A "super" type, like in Java, for easy reference below. */
+  typedef __gnu_cxx::hash_map<NodeValue*, uint64_t, AttrBoolHashFunction> super;
+
+  /**
+   * BitAccessor allows us to return a bit "by reference."  Of course,
+   * we don't require bit-addressibility supported by the system, we
+   * do it with a complex type.
+   */
+  class BitAccessor {
+
+    uint64_t& d_word;
+
+    unsigned d_bit;
+
+  public:
+
+    BitAccessor(uint64_t& word, unsigned bit) :
+      d_word(word),
+      d_bit(bit) {
+    }
+
+    BitAccessor& operator=(bool b) {
+      if(b) {
+        // set the bit
+        d_word |= (1 << d_bit);
+      } else {
+        // clear the bit
+        d_word &= ~(1 << d_bit);
+      }
+
+      return *this;
+    }
+
+    operator bool() const {
+      return (d_word & (1 << d_bit)) ? true : false;
+    }
+  };/* class AttrHash<bool>::BitAccessor */
+
+  /**
+   * A (somewhat degenerate) iterator over boolean-valued attributes.
+   * This iterator doesn't support anything except comparison and
+   * dereference.  It's intended just for the result of find() on the
+   * table.
+   */
+  class BitIterator {
+
+    std::pair<NodeValue* const, uint64_t>* d_entry;
+
+    unsigned d_bit;
+
+  public:
+
+    BitIterator() :
+      d_entry(NULL),
+      d_bit(0) {
+    }
+
+    BitIterator(std::pair<NodeValue* const, uint64_t>& entry, unsigned bit) :
+      d_entry(&entry),
+      d_bit(bit) {
+    }
+
+    std::pair<NodeValue* const, BitAccessor> operator*() {
+      return std::make_pair(d_entry->first,
+                            BitAccessor(d_entry->second, d_bit));
+    }
+
+    bool operator==(const BitIterator& b) {
+      return d_entry == b.d_entry && d_bit == b.d_bit;
+    }
+  };/* class AttrHash<bool>::BitIterator */
+
+  /**
+   * A (somewhat degenerate) const_iterator over boolean-valued
+   * attributes.  This const_iterator doesn't support anything except
+   * comparison and dereference.  It's intended just for the result of
+   * find() on the table.
+   */
+  class ConstBitIterator {
+
+    const std::pair<NodeValue* const, uint64_t>* d_entry;
+
+    unsigned d_bit;
+
+  public:
+
+    ConstBitIterator() :
+      d_entry(NULL),
+      d_bit(0) {
+    }
+
+    ConstBitIterator(const std::pair<NodeValue* const, uint64_t>& entry,
+                     unsigned bit) :
+      d_entry(&entry),
+      d_bit(bit) {
+    }
+
+    std::pair<NodeValue* const, bool> operator*() {
+      return std::make_pair(d_entry->first,
+                            (d_entry->second & (1 << d_bit)) ? true : false);
+    }
+
+    bool operator==(const ConstBitIterator& b) {
+      return d_entry == b.d_entry && d_bit == b.d_bit;
+    }
+  };/* class AttrHash<bool>::ConstBitIterator */
+
+public:
+
+  typedef std::pair<uint64_t, NodeValue*> key_type;
+  typedef bool data_type;
+  typedef std::pair<const key_type, data_type> value_type;
+
+  /** an iterator type; see above for limitations */
+  typedef BitIterator iterator;
+  /** a const_iterator type; see above for limitations */
+  typedef ConstBitIterator const_iterator;
+
+  /**
+   * Find the boolean value in the hash table.  Returns something ==
+   * end() if not found.
+   */
+  BitIterator find(const std::pair<uint64_t, NodeValue*>& k) {
+    super::iterator i = super::find(k.second);
+    if(i == super::end()) {
+      return BitIterator();
+    }
+    /*
+    Debug.printf("boolattr",
+                 "underlying word at 0x%p looks like 0x%016llx, bit is %u\n",
+                 &(*i).second,
+                 (unsigned long long)((*i).second),
+                 unsigned(k.first));
+    */
+    return BitIterator(*i, k.first);
+  }
+
+  /** The "off the end" iterator */
+  BitIterator end() {
+    return BitIterator();
+  }
+
+  /**
+   * Find the boolean value in the hash table.  Returns something ==
+   * end() if not found.
+   */
+  ConstBitIterator find(const std::pair<uint64_t, NodeValue*>& k) const {
+    super::const_iterator i = super::find(k.second);
+    if(i == super::end()) {
+      return ConstBitIterator();
+    }
+    /*
+    Debug.printf("boolattr",
+                 "underlying word at 0x%p looks like 0x%016llx, bit is %u\n",
+                 &(*i).second,
+                 (unsigned long long)((*i).second),
+                 unsigned(k.first));
+    */
+    return ConstBitIterator(*i, k.first);
+  }
+
+  /** The "off the end" const_iterator */
+  ConstBitIterator end() const {
+    return ConstBitIterator();
+  }
+
+  /**
+   * Access the hash table using the underlying operator[].  Inserts
+   * the key into the table (associated to default value) if it's not
+   * already there.
+   */
+  BitAccessor operator[](const std::pair<uint64_t, NodeValue*>& k) {
+    uint64_t& word = super::operator[](k.second);
+    return BitAccessor(word, k.first);
+  }
+
+  /**
+   * Delete all flags from the given node.
+   */
+  void erase(NodeValue* nv) {
+    super::erase(nv);
+  }
+
+  /**
+   * Clear the hash table.
+   */
+  void clear() {
+    super::clear();
+  }
+
+  /** Is the hash table empty? */
+  bool empty() const {
+    return super::empty();
+  }
+
+  /** This is currently very misleading! */
+  size_t size() const {
+    return super::size();
+  }
+};/* class AttrHash<bool> */
+
+/**
+ * A "CDAttrHash<value_type>"---the hash table underlying
+ * attributes---is simply a context-dependent mapping of
+ * pair<unique-attribute-id, Node> to value_type using our specialized
+ * hash function for these pairs.
+ */
+template <class value_type>
+class CDAttrHash :
+    public context::CDHashMap<std::pair<uint64_t, NodeValue*>,
+                          value_type,
+                          AttrHashFunction> {
+public:
+  CDAttrHash(context::Context* ctxt) :
+    context::CDHashMap<std::pair<uint64_t, NodeValue*>,
+                   value_type,
+                   AttrHashFunction>(ctxt) {
+  }
+};/* class CDAttrHash<> */
+
+/**
+ * In the case of Boolean-valued attributes we have a special
+ * "CDAttrHash<bool>" to pack bits together in words.
+ */
+template <>
+class CDAttrHash<bool> :
+    protected context::CDHashMap<NodeValue*,
+                             uint64_t,
+                             AttrBoolHashFunction> {
+
+  /** A "super" type, like in Java, for easy reference below. */
+  typedef context::CDHashMap<NodeValue*, uint64_t, AttrBoolHashFunction> super;
+
+  /**
+   * BitAccessor allows us to return a bit "by reference."  Of course,
+   * we don't require bit-addressibility supported by the system, we
+   * do it with a complex type.
+   */
+  class BitAccessor {
+
+    super& d_map;
+
+    NodeValue* d_key;
+
+    uint64_t d_word;
+
+    unsigned d_bit;
+
+  public:
+
+    BitAccessor(super& map, NodeValue* key, uint64_t word, unsigned bit) :
+      d_map(map),
+      d_key(key),
+      d_word(word),
+      d_bit(bit) {
+      /*
+      Debug.printf("cdboolattr",
+                   "CDAttrHash<bool>::BitAccessor(%p, %p, %016llx, %u)\n",
+                   &map, key, (unsigned long long) word, bit);
+      */
+    }
+
+    BitAccessor& operator=(bool b) {
+      if(b) {
+        // set the bit
+        d_word |= (1 << d_bit);
+        d_map.insert(d_key, d_word);
+        /*
+        Debug.printf("cdboolattr",
+                     "CDAttrHash<bool>::BitAccessor::set(%p, %p, %016llx, %u)\n",
+                     &d_map, d_key, (unsigned long long) d_word, d_bit);
+        */
+      } else {
+        // clear the bit
+        d_word &= ~(1 << d_bit);
+        d_map.insert(d_key, d_word);
+        /*
+        Debug.printf("cdboolattr",
+                     "CDAttrHash<bool>::BitAccessor::clr(%p, %p, %016llx, %u)\n",
+                     &d_map, d_key, (unsigned long long) d_word, d_bit);
+        */
+      }
+
+      return *this;
+    }
+
+    operator bool() const {
+      /*
+      Debug.printf("cdboolattr",
+                   "CDAttrHash<bool>::BitAccessor::toBool(%p, %p, %016llx, %u)\n",
+                   &d_map, d_key, (unsigned long long) d_word, d_bit);
+      */
+      return (d_word & (1 << d_bit)) ? true : false;
+    }
+  };/* class CDAttrHash<bool>::BitAccessor */
+
+  /**
+   * A (somewhat degenerate) const_iterator over boolean-valued
+   * attributes.  This const_iterator doesn't support anything except
+   * comparison and dereference.  It's intended just for the result of
+   * find() on the table.
+   */
+  class ConstBitIterator {
+
+    const std::pair<NodeValue* const, uint64_t> d_entry;
+
+    unsigned d_bit;
+
+  public:
+
+    ConstBitIterator() :
+      d_entry(),
+      d_bit(0) {
+    }
+
+    ConstBitIterator(const std::pair<NodeValue* const, uint64_t>& entry,
+                     unsigned bit) :
+      d_entry(entry),
+      d_bit(bit) {
+    }
+
+    std::pair<NodeValue* const, bool> operator*() {
+      return std::make_pair(d_entry.first,
+                            (d_entry.second & (1 << d_bit)) ? true : false);
+    }
+
+    bool operator==(const ConstBitIterator& b) {
+      return d_entry == b.d_entry && d_bit == b.d_bit;
+    }
+  };/* class CDAttrHash<bool>::ConstBitIterator */
+
+  /* remove non-permitted operations */
+  CDAttrHash(const CDAttrHash<bool>&) CVC4_UNDEFINED;
+  CDAttrHash<bool>& operator=(const CDAttrHash<bool>&) CVC4_UNDEFINED;
+
+public:
+
+  CDAttrHash(context::Context* context) : super(context) { }
+
+  typedef std::pair<uint64_t, NodeValue*> key_type;
+  typedef bool data_type;
+  typedef std::pair<const key_type, data_type> value_type;
+
+  /** an iterator type; see above for limitations */
+  typedef ConstBitIterator iterator;
+  /** a const_iterator type; see above for limitations */
+  typedef ConstBitIterator const_iterator;
+
+  /**
+   * Find the boolean value in the hash table.  Returns something ==
+   * end() if not found.
+   */
+  ConstBitIterator find(const std::pair<uint64_t, NodeValue*>& k) const {
+    super::const_iterator i = super::find(k.second);
+    if(i == super::end()) {
+      return ConstBitIterator();
+    }
+    /*
+    Debug.printf("cdboolattr",
+                 "underlying word at address looks like 0x%016llx, bit is %u\n",
+                 (unsigned long long)((*i).second),
+                 unsigned(k.first));
+    */
+    return ConstBitIterator(*i, k.first);
+  }
+
+  /** The "off the end" const_iterator */
+  ConstBitIterator end() const {
+    return ConstBitIterator();
+  }
+
+  /**
+   * Access the hash table using the underlying operator[].  Inserts
+   * the key into the table (associated to default value) if it's not
+   * already there.
+   */
+  BitAccessor operator[](const std::pair<uint64_t, NodeValue*>& k) {
+    uint64_t word = super::operator[](k.second);
+    return BitAccessor(*this, k.second, word, k.first);
+  }
+
+  /**
+   * Delete all flags from the given node.  Simply calls superclass's
+   * obliterate().  Note this removes all attributes at all context
+   * levels for this NodeValue!  This is important when the NodeValue
+   * is no longer referenced and is being collected, but otherwise
+   * it probably isn't useful to do this.
+   */
+  void erase(NodeValue* nv) {
+    super::obliterate(nv);
+  }
+
+  /**
+   * Clear the hash table.  This simply exposes the protected superclass
+   * version of clear() to clients.
+   */
+  void clear() {
+    super::clear();
+  }
+
+  /** Is the hash table empty? */
+  bool empty() const {
+    return super::empty();
+  }
+
+  /** This is currently very misleading! */
+  size_t size() const {
+    return super::size();
+  }
+
+};/* class CDAttrHash<bool> */
+
+}/* CVC4::expr::attr namespace */
+
+// ATTRIBUTE CLEANUP FUNCTIONS =================================================
+
+namespace attr {
+
+/** Default cleanup for unmanaged Attribute<> */
+struct NullCleanupStrategy {
+};/* struct NullCleanupStrategy */
+
+/** Default cleanup for ManagedAttribute<> */
+template <class T>
+struct ManagedAttributeCleanupStrategy {
+};/* struct ManagedAttributeCleanupStrategy<> */
+
+/** Specialization for T* */
+template <class T>
+struct ManagedAttributeCleanupStrategy<T*> {
+  static inline void cleanup(T* p) { delete p; }
+};/* struct ManagedAttributeCleanupStrategy<T*> */
+
+/** Specialization for const T* */
+template <class T>
+struct ManagedAttributeCleanupStrategy<const T*> {
+  static inline void cleanup(const T* p) { delete p; }
+};/* struct ManagedAttributeCleanupStrategy<const T*> */
+
+/**
+ * Helper for Attribute<> class below to determine whether a cleanup
+ * is defined or not.
+ */
+template <class T, class C>
+struct getCleanupStrategy {
+  typedef T value_type;
+  typedef KindValueToTableValueMapping<value_type> mapping;
+  static void fn(typename mapping::table_value_type t) {
+    C::cleanup(mapping::convertBack(t));
+  }
+};/* struct getCleanupStrategy<> */
+
+/**
+ * Specialization for NullCleanupStrategy.
+ */
+template <class T>
+struct getCleanupStrategy<T, NullCleanupStrategy> {
+  typedef T value_type;
+  typedef KindValueToTableValueMapping<value_type> mapping;
+  static void (*const fn)(typename mapping::table_value_type);
+};/* struct getCleanupStrategy<T, NullCleanupStrategy> */
+
+// out-of-class initialization required (because it's a non-integral type)
+template <class T>
+void (*const getCleanupStrategy<T, NullCleanupStrategy>::fn)
+     (typename getCleanupStrategy<T, NullCleanupStrategy>::
+               mapping::table_value_type) = NULL;
+
+/**
+ * Specialization for ManagedAttributeCleanupStrategy<T>.
+ */
+template <class T>
+struct getCleanupStrategy<T, ManagedAttributeCleanupStrategy<T> > {
+  typedef T value_type;
+  typedef KindValueToTableValueMapping<value_type> mapping;
+  static void (*const fn)(typename mapping::table_value_type);
+};/* struct getCleanupStrategy<T, ManagedAttributeCleanupStrategy<T> > */
+
+// out-of-class initialization required (because it's a non-integral type)
+template <class T>
+void (*const getCleanupStrategy<T, ManagedAttributeCleanupStrategy<T> >::fn)
+     (typename getCleanupStrategy<T, ManagedAttributeCleanupStrategy<T> >::
+               mapping::table_value_type) = NULL;
+
+/**
+ * Specialization for ManagedAttributeCleanupStrategy<T*>.
+ */
+template <class T>
+struct getCleanupStrategy<T*, ManagedAttributeCleanupStrategy<T*> > {
+  typedef T* value_type;
+  typedef ManagedAttributeCleanupStrategy<value_type> C;
+  typedef KindValueToTableValueMapping<value_type> mapping;
+  static void fn(typename mapping::table_value_type t) {
+    C::cleanup(mapping::convertBack(t));
+  }
+};/* struct getCleanupStrategy<T*, ManagedAttributeCleanupStrategy<T*> > */
+
+/**
+ * Specialization for ManagedAttributeCleanupStrategy<const T*>.
+ */
+template <class T>
+struct getCleanupStrategy<const T*,
+                          ManagedAttributeCleanupStrategy<const T*> > {
+  typedef const T* value_type;
+  typedef ManagedAttributeCleanupStrategy<value_type> C;
+  typedef KindValueToTableValueMapping<value_type> mapping;
+  static void fn(typename mapping::table_value_type t) {
+    C::cleanup(mapping::convertBack(t));
+  }
+};/* struct getCleanupStrategy<const T*,
+                               ManagedAttributeCleanupStrategy<const T*> > */
+
+/**
+ * Cause compile-time error for improperly-instantiated
+ * getCleanupStrategy<>.
+ */
+template <class T, class U>
+struct getCleanupStrategy<T, ManagedAttributeCleanupStrategy<U> >;
+
+}/* CVC4::expr::attr namespace */
+
+// ATTRIBUTE IDENTIFIER ASSIGNMENT TEMPLATE ====================================
+
+namespace attr {
+
+/**
+ * This is the last-attribute-assigner.  IDs are not globally
+ * unique; rather, they are unique for each table_value_type.
+ */
+template <class T, bool context_dep>
+struct LastAttributeId {
+  static uint64_t& getId() {
+    static uint64_t s_id = 0;
+    return s_id;
+  }
+};
+
+}/* CVC4::expr::attr namespace */
+
+// ATTRIBUTE TRAITS ============================================================
+
+namespace attr {
+
+/**
+ * This is the last-attribute-assigner.  IDs are not globally
+ * unique; rather, they are unique for each table_value_type.
+ */
+template <class T, bool context_dep>
+struct AttributeTraits {
+  typedef void (*cleanup_t)(T);
+  static std::vector<cleanup_t>& getCleanup() {
+    static std::vector<cleanup_t> cleanup;
+    return cleanup;
+  }
+};
+
+}/* CVC4::expr::attr namespace */
+
+// ATTRIBUTE DEFINITION ========================================================
+
+/**
+ * An "attribute type" structure.
+ *
+ * @param T the tag for the attribute kind.
+ *
+ * @param value_t the underlying value_type for the attribute kind
+ *
+ * @param CleanupStrategy Clean-up routine for associated values when the
+ * Node goes away.  Useful, e.g., for pointer-valued attributes when
+ * the values are "owned" by the table.
+ *
+ * @param context_dep whether this attribute kind is
+ * context-dependent
+ */
+template <class T,
+          class value_t,
+          class CleanupStrategy = attr::NullCleanupStrategy,
+          bool context_dep = false>
+class Attribute {
+  /**
+   * The unique ID associated to this attribute.  Assigned statically,
+   * at load time.
+   */
+  static const uint64_t s_id;
+
+public:
+
+  /** The value type for this attribute. */
+  typedef value_t value_type;
+
+  /** Get the unique ID associated to this attribute. */
+  static inline uint64_t getId() { return s_id; }
+
+  /**
+   * This attribute does not have a default value: calling
+   * hasAttribute() for a Node that hasn't had this attribute set will
+   * return false, and getAttribute() for the Node will return a
+   * default-constructed value_type.
+   */
+  static const bool has_default_value = false;
+
+  /**
+   * Expose this setting to the users of this Attribute kind.
+   */
+  static const bool context_dependent = context_dep;
+
+  /**
+   * Register this attribute kind and check that the ID is a valid ID
+   * for bool-valued attributes.  Fail an assert if not.  Otherwise
+   * return the id.
+   */
+  static inline uint64_t registerAttribute() {
+    typedef typename attr::KindValueToTableValueMapping<value_t>::
+                     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>::getId()++;
+    Assert(traits::getCleanup().size() == id);// sanity check
+    traits::getCleanup().push_back(attr::getCleanupStrategy<value_t,
+                                                       CleanupStrategy>::fn);
+    return id;
+  }
+};/* class Attribute<> */
+
+/**
+ * An "attribute type" structure for boolean flags (special).  The
+ * full one is below; the existence of this one disallows for boolean
+ * flag attributes with a specialized cleanup function.
+ */
+/* -- doesn't work; other specialization is "more specific" ??
+template <class T, class CleanupStrategy, bool context_dep>
+class Attribute<T, bool, CleanupStrategy, context_dep> {
+  template <bool> struct ERROR_bool_attributes_cannot_have_cleanup_functions;
+  ERROR_bool_attributes_cannot_have_cleanup_functions<true> blah;
+};
+*/
+
+/**
+ * An "attribute type" structure for boolean flags (special).
+ */
+template <class T, bool context_dep>
+class Attribute<T, bool, attr::NullCleanupStrategy, context_dep> {
+  /** IDs for bool-valued attributes are actually bit assignments. */
+  static const uint64_t s_id;
+
+public:
+
+  /** The value type for this attribute; here, bool. */
+  typedef bool value_type;
+
+  /** Get the unique ID associated to this attribute. */
+  static inline uint64_t getId() { return s_id; }
+
+  /**
+   * Such bool-valued attributes ("flags") have a default value: they
+   * are false for all nodes on entry.  Calling hasAttribute() for a
+   * Node that hasn't had this attribute set will return true, and
+   * getAttribute() for the Node will return the default_value below.
+   */
+  static const bool has_default_value = true;
+
+  /**
+   * Default value of the attribute for Nodes without one explicitly
+   * set.
+   */
+  static const bool default_value = false;
+
+  /**
+   * Expose this setting to the users of this Attribute kind.
+   */
+  static const bool context_dependent = context_dep;
+
+  /**
+   * Register this attribute kind and check that the ID is a valid ID
+   * for bool-valued attributes.  Fail an assert if not.  Otherwise
+   * return the id.
+   */
+  static inline uint64_t registerAttribute() {
+    uint64_t id = attr::LastAttributeId<bool, context_dep>::getId()++;
+    AlwaysAssert( id <= 63,
+                  "Too many boolean node attributes registered "
+                  "during initialization !" );
+    return id;
+  }
+};/* class Attribute<..., bool, ...> */
+
+/**
+ * This is a context-dependent attribute kind (the only difference
+ * between CDAttribute<> and Attribute<> (with the fourth argument
+ * "true") is that you cannot supply a cleanup function (a no-op one
+ * is used).
+ */
+template <class T,
+          class value_type>
+struct CDAttribute :
+    public Attribute<T, value_type, attr::NullCleanupStrategy, true> {};
+
+/**
+ * This is a managed attribute kind (the only difference between
+ * ManagedAttribute<> and Attribute<> is the default cleanup function
+ * and the fact that ManagedAttributes cannot be context-dependent).
+ * In the default ManagedAttribute cleanup function, the value is
+ * destroyed with the delete operator.  If the value is allocated with
+ * the array version of new[], an alternate cleanup function should be
+ * provided that uses array delete[].  It is an error to create a
+ * ManagedAttribute<> kind with a non-pointer value_type if you don't
+ * also supply a custom cleanup function.
+ */
+template <class T,
+          class value_type,
+          class CleanupStrategy =
+                    attr::ManagedAttributeCleanupStrategy<value_type> >
+struct ManagedAttribute :
+    public Attribute<T, value_type, CleanupStrategy, false> {};
+
+// ATTRIBUTE IDENTIFIER ASSIGNMENT =============================================
+
+/** Assign unique IDs to attributes at load time. */
+// Use of the comma-operator here forces instantiation (and
+// initialization) of the AttributeTraits<> structure and its
+// "cleanup" vector before registerAttribute() is called.  This is
+// important because otherwise the vector is initialized later,
+// clearing the first-pushed cleanup function.
+template <class T, class value_t, class CleanupStrategy, bool context_dep>
+const uint64_t Attribute<T, value_t, CleanupStrategy, context_dep>::s_id =
+  ( attr::AttributeTraits<typename attr::KindValueToTableValueMapping<value_t>::
+                                   table_value_type,
+                          context_dep>::getCleanup().size(),
+    Attribute<T, value_t, CleanupStrategy, context_dep>::registerAttribute() );
+
+/** Assign unique IDs to attributes at load time. */
+template <class T, bool context_dep>
+const uint64_t Attribute<T,
+                         bool,
+                         attr::NullCleanupStrategy, context_dep>::s_id =
+  Attribute<T, bool, attr::NullCleanupStrategy, context_dep>::
+    registerAttribute();
+
+}/* CVC4::expr namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__EXPR__ATTRIBUTE_INTERNALS_H */
diff --git a/src/expr/attribute_unique_id.h b/src/expr/attribute_unique_id.h
new file mode 100644
index 0000000..4875bdf
--- /dev/null
+++ b/src/expr/attribute_unique_id.h
@@ -0,0 +1,69 @@
+/*********************                                                        */
+/*! \file attribute_unique_id.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <stdint.h>
+
+// ATTRIBUTE IDs ============================================================
+
+namespace CVC4 {
+namespace expr {
+namespace attr {
+
+/** A unique id for each attribute table. */
+enum AttrTableId {
+  AttrTableBool,
+  AttrTableUInt64,
+  AttrTableTNode,
+  AttrTableNode,
+  AttrTableTypeNode,
+  AttrTableString,
+  AttrTablePointer,
+  AttrTableCDBool,
+  AttrTableCDUInt64,
+  AttrTableCDTNode,
+  AttrTableCDNode,
+  AttrTableCDString,
+  AttrTableCDPointer,
+  LastAttrTable
+};
+
+/**
+ * This uniquely identifies attributes across tables.
+ */
+class AttributeUniqueId {
+  AttrTableId d_tableId;
+  uint64_t d_withinTypeId;
+
+public:
+  AttributeUniqueId() : d_tableId(LastAttrTable), d_withinTypeId(0){}
+
+  AttributeUniqueId(AttrTableId tableId, uint64_t within)
+    : d_tableId(tableId), d_withinTypeId(within)
+  {}
+
+  AttrTableId getTableId() const{ return d_tableId; }
+  uint64_t getWithinTypeId() const{ return d_withinTypeId; }
+
+};/* CVC4::expr::attr::AttributeUniqueId */
+
+}/* CVC4::expr::attr namespace */
+}/* CVC4::expr namespace */
+}/* CVC4 namespace */
diff --git a/src/expr/chain.h b/src/expr/chain.h
new file mode 100644
index 0000000..703aa76
--- /dev/null
+++ b/src/expr/chain.h
@@ -0,0 +1,51 @@
+/*********************                                                        */
+/*! \file chain.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__CHAIN_H
+#define __CVC4__CHAIN_H
+
+#include "expr/kind.h"
+#include <iostream>
+
+namespace CVC4 {
+
+/** A class to represent a chained, built-in operator. */
+class CVC4_PUBLIC Chain {
+  Kind d_kind;
+public:
+  explicit Chain(Kind k) : d_kind(k) { }
+  bool operator==(const Chain& ch) const { return d_kind == ch.d_kind; }
+  bool operator!=(const Chain& ch) const { return d_kind != ch.d_kind; }
+  Kind getOperator() const { return d_kind; }
+};/* class Chain */
+
+inline std::ostream& operator<<(std::ostream& out, const Chain& ch) CVC4_PUBLIC;
+inline std::ostream& operator<<(std::ostream& out, const Chain& ch) {
+  return out << ch.getOperator();
+}
+
+struct CVC4_PUBLIC ChainHashFunction {
+  size_t operator()(const Chain& ch) const {
+    return kind::KindHashFunction()(ch.getOperator());
+  }
+};/* struct ChainHashFunction */
+
+}/* CVC4 namespace */
+
+#endif  /* __CVC4__CHAIN_H */
diff --git a/src/expr/chain.i b/src/expr/chain.i
new file mode 100644
index 0000000..8de1665
--- /dev/null
+++ b/src/expr/chain.i
@@ -0,0 +1,12 @@
+%{
+#include "expr/chain.h"
+%}
+
+%rename(equals) CVC4::Chain::operator==(const Chain&) const;
+%ignore CVC4::Chain::operator!=(const Chain&) const;
+
+%ignore CVC4::operator<<(std::ostream&, const Chain&);
+
+%rename(apply) CVC4::ChainHashFunction::operator()(const CVC4::Chain&) const;
+
+%include "expr/chain.h"
diff --git a/src/expr/convenience_node_builders.h b/src/expr/convenience_node_builders.h
new file mode 100644
index 0000000..611a88e
--- /dev/null
+++ b/src/expr/convenience_node_builders.h
@@ -0,0 +1,399 @@
+/*********************                                                        */
+/*! \file convenience_node_builders.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Convenience node builders.
+ **
+ ** These are convenience node builders for building AND, OR, PLUS,
+ ** and MULT expressions.
+ **
+ ** \todo These should be moved into theory code (say,
+ ** src/theory/booleans/node_builders.h and
+ ** src/theory/arith/node_builders.h), but for now they're here
+ ** because their design requires CVC4::NodeBuilder to friend them.
+ **/
+
+// TODO: add templatized NodeTemplate<ref_count> to all these inlines
+// for 'const [T]Node&' arguments?  Technically a lot of time is spent
+// in the TNode conversion and copy constructor, but this should be
+// optimized into a simple pointer copy (?)
+// TODO: double-check this.
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__CONVENIENCE_NODE_BUILDERS_H
+#define __CVC4__CONVENIENCE_NODE_BUILDERS_H
+
+#include "expr/node_builder.h"
+
+namespace CVC4 {
+
+class AndNodeBuilder {
+public:
+  NodeBuilder<> d_eb;
+
+  inline AndNodeBuilder(const NodeBuilder<>& eb) : d_eb(eb) {
+    d_eb.collapseTo(kind::AND);
+  }
+
+  inline AndNodeBuilder(TNode a, TNode b) : d_eb(kind::AND) {
+    d_eb << a << b;
+  }
+
+  template <bool rc>
+  inline AndNodeBuilder& operator&&(const NodeTemplate<rc>&);
+
+  template <bool rc>
+  inline OrNodeBuilder operator||(const NodeTemplate<rc>&);
+
+  inline operator NodeBuilder<>() { return d_eb; }
+  inline operator Node() { return d_eb; }
+
+};/* class AndNodeBuilder */
+
+class OrNodeBuilder {
+public:
+  NodeBuilder<> d_eb;
+
+  inline OrNodeBuilder(const NodeBuilder<>& eb) : d_eb(eb) {
+    d_eb.collapseTo(kind::OR);
+  }
+
+  inline OrNodeBuilder(TNode a, TNode b) : d_eb(kind::OR) {
+    d_eb << a << b;
+  }
+
+  template <bool rc>
+  inline AndNodeBuilder operator&&(const NodeTemplate<rc>&);
+
+  template <bool rc>
+  inline OrNodeBuilder& operator||(const NodeTemplate<rc>&);
+
+  inline operator NodeBuilder<>() { return d_eb; }
+  inline operator Node() { return d_eb; }
+
+};/* class OrNodeBuilder */
+
+class PlusNodeBuilder {
+public:
+  NodeBuilder<> d_eb;
+
+  inline PlusNodeBuilder(const NodeBuilder<>& eb) : d_eb(eb) {
+    d_eb.collapseTo(kind::PLUS);
+  }
+
+  inline PlusNodeBuilder(TNode a, TNode b) : d_eb(kind::PLUS) {
+    d_eb << a << b;
+  }
+
+  template <bool rc>
+  inline PlusNodeBuilder& operator+(const NodeTemplate<rc>&);
+
+  template <bool rc>
+  inline PlusNodeBuilder& operator-(const NodeTemplate<rc>&);
+
+  template <bool rc>
+  inline MultNodeBuilder operator*(const NodeTemplate<rc>&);
+
+  inline operator NodeBuilder<>() { return d_eb; }
+  inline operator Node() { return d_eb; }
+
+};/* class PlusNodeBuilder */
+
+class MultNodeBuilder {
+public:
+  NodeBuilder<> d_eb;
+
+  inline MultNodeBuilder(const NodeBuilder<>& eb) : d_eb(eb) {
+    d_eb.collapseTo(kind::MULT);
+  }
+
+  inline MultNodeBuilder(TNode a, TNode b) : d_eb(kind::MULT) {
+    d_eb << a << b;
+  }
+
+  template <bool rc>
+  inline PlusNodeBuilder operator+(const NodeTemplate<rc>&);
+
+  template <bool rc>
+  inline PlusNodeBuilder operator-(const NodeTemplate<rc>&);
+
+  template <bool rc>
+  inline MultNodeBuilder& operator*(const NodeTemplate<rc>&);
+
+  inline operator NodeBuilder<>() { return d_eb; }
+  inline operator Node() { return d_eb; }
+
+};/* class MultNodeBuilder */
+
+template <unsigned nchild_thresh>
+inline NodeBuilder<nchild_thresh>& NodeBuilder<nchild_thresh>::operator&=(TNode e) {
+  return collapseTo(kind::AND).append(e);
+}
+
+template <unsigned nchild_thresh>
+inline NodeBuilder<nchild_thresh>& NodeBuilder<nchild_thresh>::operator|=(TNode e) {
+  return collapseTo(kind::OR).append(e);
+}
+
+template <unsigned nchild_thresh>
+inline NodeBuilder<nchild_thresh>& NodeBuilder<nchild_thresh>::operator+=(TNode e) {
+  return collapseTo(kind::PLUS).append(e);
+}
+
+template <unsigned nchild_thresh>
+inline NodeBuilder<nchild_thresh>& NodeBuilder<nchild_thresh>::operator-=(TNode e) {
+  return collapseTo(kind::PLUS).
+    append(NodeManager::currentNM()->mkNode(kind::UMINUS, e));
+}
+
+template <unsigned nchild_thresh>
+inline NodeBuilder<nchild_thresh>& NodeBuilder<nchild_thresh>::operator*=(TNode e) {
+  return collapseTo(kind::MULT).append(e);
+}
+
+template <bool rc>
+inline AndNodeBuilder& AndNodeBuilder::operator&&(const NodeTemplate<rc>& n) {
+  d_eb.append(n);
+  return *this;
+}
+
+template <bool rc>
+inline OrNodeBuilder AndNodeBuilder::operator||(const NodeTemplate<rc>& n) {
+  return OrNodeBuilder(Node(d_eb), n);
+}
+
+inline AndNodeBuilder& operator&&(AndNodeBuilder& a,
+                                  const AndNodeBuilder& b) {
+  return a && Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+inline AndNodeBuilder& operator&&(AndNodeBuilder& a,
+                                  const OrNodeBuilder& b) {
+  return a && Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+inline OrNodeBuilder operator||(AndNodeBuilder& a,
+                                const AndNodeBuilder& b) {
+  return a || Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+inline OrNodeBuilder operator||(AndNodeBuilder& a,
+                                const OrNodeBuilder& b) {
+  return a || Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+
+template <bool rc>
+inline AndNodeBuilder OrNodeBuilder::operator&&(const NodeTemplate<rc>& n) {
+  return AndNodeBuilder(Node(d_eb), n);
+}
+
+template <bool rc>
+inline OrNodeBuilder& OrNodeBuilder::operator||(const NodeTemplate<rc>& n) {
+  d_eb.append(n);
+  return *this;
+}
+
+inline AndNodeBuilder operator&&(OrNodeBuilder& a,
+                                 const AndNodeBuilder& b) {
+  return a && Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+inline AndNodeBuilder operator&&(OrNodeBuilder& a,
+                                 const OrNodeBuilder& b) {
+  return a && Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+inline OrNodeBuilder& operator||(OrNodeBuilder& a,
+                                 const AndNodeBuilder& b) {
+  return a || Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+inline OrNodeBuilder& operator||(OrNodeBuilder& a,
+                                 const OrNodeBuilder& b) {
+  return a || Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+
+template <bool rc>
+inline PlusNodeBuilder& PlusNodeBuilder::operator+(const NodeTemplate<rc>& n) {
+  d_eb.append(n);
+  return *this;
+}
+
+template <bool rc>
+inline PlusNodeBuilder& PlusNodeBuilder::operator-(const NodeTemplate<rc>& n) {
+  d_eb.append(NodeManager::currentNM()->mkNode(kind::UMINUS, n));
+  return *this;
+}
+
+template <bool rc>
+inline MultNodeBuilder PlusNodeBuilder::operator*(const NodeTemplate<rc>& n) {
+  return MultNodeBuilder(Node(d_eb), n);
+}
+
+inline PlusNodeBuilder& operator+(PlusNodeBuilder& a,
+                                  const PlusNodeBuilder& b) {
+  return a + Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+inline PlusNodeBuilder& operator+(PlusNodeBuilder& a,
+                                  const MultNodeBuilder& b) {
+  return a + Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+inline PlusNodeBuilder& operator-(PlusNodeBuilder&a,
+                                  const PlusNodeBuilder& b) {
+  return a - Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+inline PlusNodeBuilder& operator-(PlusNodeBuilder& a,
+                                  const MultNodeBuilder& b) {
+  return a - Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+inline MultNodeBuilder operator*(PlusNodeBuilder& a,
+                                 const PlusNodeBuilder& b) {
+  return a * Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+inline MultNodeBuilder operator*(PlusNodeBuilder& a,
+                                 const MultNodeBuilder& b) {
+  return a * Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+
+template <bool rc>
+inline PlusNodeBuilder MultNodeBuilder::operator+(const NodeTemplate<rc>& n) {
+  return PlusNodeBuilder(Node(d_eb), n);
+}
+
+template <bool rc>
+inline PlusNodeBuilder MultNodeBuilder::operator-(const NodeTemplate<rc>& n) {
+  return PlusNodeBuilder(Node(d_eb),
+                         NodeManager::currentNM()->mkNode(kind::UMINUS, n));
+}
+
+template <bool rc>
+inline MultNodeBuilder& MultNodeBuilder::operator*(const NodeTemplate<rc>& n) {
+  d_eb.append(n);
+  return *this;
+}
+
+inline PlusNodeBuilder operator+(MultNodeBuilder& a,
+                                 const PlusNodeBuilder& b) {
+  return a + Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+inline PlusNodeBuilder operator+(MultNodeBuilder& a,
+                                 const MultNodeBuilder& b) {
+  return a + Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+inline PlusNodeBuilder operator-(MultNodeBuilder& a,
+                                 const PlusNodeBuilder& b) {
+  return a - Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+inline PlusNodeBuilder operator-(MultNodeBuilder& a,
+                                 const MultNodeBuilder& b) {
+  return a - Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+inline MultNodeBuilder& operator*(MultNodeBuilder& a,
+                                  const PlusNodeBuilder& b) {
+  return a * Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+inline MultNodeBuilder& operator*(MultNodeBuilder& a,
+                                  const MultNodeBuilder& b) {
+  return a * Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+
+template <bool rc1, bool rc2>
+inline AndNodeBuilder operator&&(const NodeTemplate<rc1>& a,
+                                 const NodeTemplate<rc2>& b) {
+  return AndNodeBuilder(a, b);
+}
+
+template <bool rc1, bool rc2>
+inline OrNodeBuilder operator||(const NodeTemplate<rc1>& a,
+                                const NodeTemplate<rc2>& b) {
+  return OrNodeBuilder(a, b);
+}
+
+template <bool rc1, bool rc2>
+inline PlusNodeBuilder operator+(const NodeTemplate<rc1>& a,
+                                 const NodeTemplate<rc2>& b) {
+  return PlusNodeBuilder(a, b);
+}
+
+template <bool rc1, bool rc2>
+inline PlusNodeBuilder operator-(const NodeTemplate<rc1>& a,
+                                 const NodeTemplate<rc2>& b) {
+  return PlusNodeBuilder(a, NodeManager::currentNM()->mkNode(kind::UMINUS, b));
+}
+
+template <bool rc1, bool rc2>
+inline MultNodeBuilder operator*(const NodeTemplate<rc1>& a,
+                                 const NodeTemplate<rc2>& b) {
+  return MultNodeBuilder(a, b);
+}
+
+template <bool rc>
+inline AndNodeBuilder operator&&(const NodeTemplate<rc>& a,
+                                 const AndNodeBuilder& b) {
+  return a && Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+
+template <bool rc>
+inline AndNodeBuilder operator&&(const NodeTemplate<rc>& a,
+                                 const OrNodeBuilder& b) {
+  return a && Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+
+template <bool rc>
+inline OrNodeBuilder operator||(const NodeTemplate<rc>& a,
+                                const AndNodeBuilder& b) {
+  return a || Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+
+template <bool rc>
+inline OrNodeBuilder operator||(const NodeTemplate<rc>& a,
+                                const OrNodeBuilder& b) {
+  return a || Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+
+template <bool rc>
+inline PlusNodeBuilder operator+(const NodeTemplate<rc>& a,
+                                 const PlusNodeBuilder& b) {
+  return a + Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+
+template <bool rc>
+inline PlusNodeBuilder operator+(const NodeTemplate<rc>& a,
+                                 const MultNodeBuilder& b) {
+  return a + Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+
+template <bool rc>
+inline PlusNodeBuilder operator-(const NodeTemplate<rc>& a,
+                                 const PlusNodeBuilder& b) {
+  return a - Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+
+template <bool rc>
+inline PlusNodeBuilder operator-(const NodeTemplate<rc>& a,
+                                 const MultNodeBuilder& b) {
+  return a - Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+
+template <bool rc>
+inline MultNodeBuilder operator*(const NodeTemplate<rc>& a,
+                                 const PlusNodeBuilder& b) {
+  return a * Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+
+template <bool rc>
+inline MultNodeBuilder operator*(const NodeTemplate<rc>& a,
+                                 const MultNodeBuilder& b) {
+  return a * Node(const_cast<NodeBuilder<>&>(b.d_eb));
+}
+
+template <bool rc>
+inline NodeTemplate<true> operator-(const NodeTemplate<rc>& a) {
+  return NodeManager::currentNM()->mkNode(kind::UMINUS, a);
+}
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__CONVENIENCE_NODE_BUILDERS_H */
diff --git a/src/expr/datatype.cpp b/src/expr/datatype.cpp
new file mode 100644
index 0000000..02edab5
--- /dev/null
+++ b/src/expr/datatype.cpp
@@ -0,0 +1,1182 @@
+/*********************                                                        */
+/*! \file datatype.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A class representing a Datatype definition
+ **
+ ** A class representing a Datatype definition for the theory of
+ ** inductive datatypes.
+ **/
+#include "expr/datatype.h"
+
+#include <string>
+#include <sstream>
+
+#include "base/cvc4_assert.h"
+#include "expr/attribute.h"
+#include "expr/expr_manager.h"
+#include "expr/expr_manager_scope.h"
+#include "expr/matcher.h"
+#include "expr/node.h"
+#include "expr/node_manager.h"
+#include "expr/type.h"
+#include "options/set_language.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+namespace expr {
+  namespace attr {
+    struct DatatypeIndexTag {};
+    struct DatatypeConsIndexTag {};
+    struct DatatypeFiniteTag {};
+    struct DatatypeFiniteComputedTag {};
+    struct DatatypeUFiniteTag {};
+    struct DatatypeUFiniteComputedTag {};
+  }/* CVC4::expr::attr namespace */
+}/* CVC4::expr namespace */
+
+typedef expr::Attribute<expr::attr::DatatypeIndexTag, uint64_t> DatatypeIndexAttr;
+typedef expr::Attribute<expr::attr::DatatypeConsIndexTag, uint64_t> DatatypeConsIndexAttr;
+typedef expr::Attribute<expr::attr::DatatypeFiniteTag, bool> DatatypeFiniteAttr;
+typedef expr::Attribute<expr::attr::DatatypeFiniteComputedTag, bool> DatatypeFiniteComputedAttr;
+typedef expr::Attribute<expr::attr::DatatypeUFiniteTag, bool> DatatypeUFiniteAttr;
+typedef expr::Attribute<expr::attr::DatatypeUFiniteComputedTag, bool> DatatypeUFiniteComputedAttr;
+
+Datatype::~Datatype(){
+  delete d_record;
+}
+
+const Datatype& Datatype::datatypeOf(Expr item) {
+  ExprManagerScope ems(item);
+  TypeNode t = Node::fromExpr(item).getType();
+  switch(t.getKind()) {
+  case kind::CONSTRUCTOR_TYPE:
+    return DatatypeType(t[t.getNumChildren() - 1].toType()).getDatatype();
+  case kind::SELECTOR_TYPE:
+  case kind::TESTER_TYPE:
+    return DatatypeType(t[0].toType()).getDatatype();
+  default:
+    Unhandled("arg must be a datatype constructor, selector, or tester");
+  }
+}
+
+size_t Datatype::indexOf(Expr item) {
+  ExprManagerScope ems(item);
+  PrettyCheckArgument(item.getType().isConstructor() ||
+                item.getType().isTester() ||
+                item.getType().isSelector(),
+                item,
+                "arg must be a datatype constructor, selector, or tester");
+  TNode n = Node::fromExpr(item);
+  if( item.getKind()==kind::APPLY_TYPE_ASCRIPTION ){
+    return indexOf( item[0] );
+  }else{
+    Assert(n.hasAttribute(DatatypeIndexAttr()));
+    return n.getAttribute(DatatypeIndexAttr());
+  }
+}
+
+size_t Datatype::cindexOf(Expr item) {
+  ExprManagerScope ems(item);
+  PrettyCheckArgument(item.getType().isSelector(),
+                item,
+                "arg must be a datatype selector");
+  TNode n = Node::fromExpr(item);
+  if( item.getKind()==kind::APPLY_TYPE_ASCRIPTION ){
+    return cindexOf( item[0] );
+  }else{
+    Assert(n.hasAttribute(DatatypeConsIndexAttr()));
+    return n.getAttribute(DatatypeConsIndexAttr());
+  }
+}
+
+void Datatype::resolve(ExprManager* em,
+                       const std::map<std::string, DatatypeType>& resolutions,
+                       const std::vector<Type>& placeholders,
+                       const std::vector<Type>& replacements,
+                       const std::vector< SortConstructorType >& paramTypes,
+                       const std::vector< DatatypeType >& paramReplacements)
+  throw(IllegalArgumentException, DatatypeResolutionException) {
+
+  PrettyCheckArgument(em != NULL, em, "cannot resolve a Datatype with a NULL expression manager");
+  PrettyCheckArgument(!d_resolved, this, "cannot resolve a Datatype twice");
+  PrettyCheckArgument(resolutions.find(d_name) != resolutions.end(), resolutions,
+                "Datatype::resolve(): resolutions doesn't contain me!");
+  PrettyCheckArgument(placeholders.size() == replacements.size(), placeholders,
+                "placeholders and replacements must be the same size");
+  PrettyCheckArgument(paramTypes.size() == paramReplacements.size(), paramTypes,
+                "paramTypes and paramReplacements must be the same size");
+  PrettyCheckArgument(getNumConstructors() > 0, *this, "cannot resolve a Datatype that has no constructors");
+  DatatypeType self = (*resolutions.find(d_name)).second;
+  PrettyCheckArgument(&self.getDatatype() == this, resolutions, "Datatype::resolve(): resolutions doesn't contain me!");
+  d_resolved = true;
+  size_t index = 0;
+  for(std::vector<DatatypeConstructor>::iterator i = d_constructors.begin(), i_end = d_constructors.end(); i != i_end; ++i) {
+    (*i).resolve(em, self, resolutions, placeholders, replacements, paramTypes, paramReplacements, index);
+    Node::fromExpr((*i).d_constructor).setAttribute(DatatypeIndexAttr(), index);
+    Node::fromExpr((*i).d_tester).setAttribute(DatatypeIndexAttr(), index++);
+  }
+  d_self = self;
+
+  d_involvesExt =  false;
+  d_involvesUt =  false;
+  for(const_iterator i = begin(); i != end(); ++i) {
+    if( (*i).involvesExternalType() ){
+      d_involvesExt =  true;
+    }
+    if( (*i).involvesUninterpretedType() ){
+      d_involvesUt =  true;
+    }
+  }
+
+  if( d_isRecord ){
+    std::vector< std::pair<std::string, Type> > fields;
+    for( unsigned i=0; i<(*this)[0].getNumArgs(); i++ ){
+      fields.push_back( std::pair<std::string, Type>( (*this)[0][i].getName(), (*this)[0][i].getRangeType() ) );
+    }
+    d_record = new Record(fields);
+  }
+}
+
+void Datatype::addConstructor(const DatatypeConstructor& c) {
+  PrettyCheckArgument(!d_resolved, this,
+                "cannot add a constructor to a finalized Datatype");
+  d_constructors.push_back(c);
+}
+
+
+void Datatype::setSygus( Type st, Expr bvl, bool allow_const, bool allow_all ){
+  PrettyCheckArgument(!d_resolved, this,
+                "cannot set sygus type to a finalized Datatype");
+  d_sygus_type = st;
+  d_sygus_bvl = bvl;
+  d_sygus_allow_const = allow_const || allow_all;
+  d_sygus_allow_all = allow_all;
+}
+
+void Datatype::setTuple() {
+  PrettyCheckArgument(!d_resolved, this, "cannot set tuple to a finalized Datatype");
+  d_isTuple = true;
+}
+
+void Datatype::setRecord() {
+  PrettyCheckArgument(!d_resolved, this, "cannot set record to a finalized Datatype");
+  d_isRecord = true;
+}
+
+Cardinality Datatype::getCardinality( Type t ) const throw(IllegalArgumentException) {
+  PrettyCheckArgument(isResolved(), this, "this datatype is not yet resolved");
+  Assert( t.isDatatype() && ((DatatypeType)t).getDatatype()==*this );
+  std::vector< Type > processing;
+  computeCardinality( t, processing );
+  return d_card;
+}
+
+Cardinality Datatype::getCardinality() const throw(IllegalArgumentException) {
+  PrettyCheckArgument(!isParametric(), this, "for getCardinality, this datatype cannot be parametric");
+  return getCardinality( d_self );
+}
+
+Cardinality Datatype::computeCardinality( Type t, std::vector< Type >& processing ) const throw(IllegalArgumentException){
+  PrettyCheckArgument(isResolved(), this, "this datatype is not yet resolved");
+  if( std::find( processing.begin(), processing.end(), d_self )!=processing.end() ){
+    d_card = Cardinality::INTEGERS;
+  }else{
+    processing.push_back( d_self );
+    Cardinality c = 0;
+    for(const_iterator i = begin(), i_end = end(); i != i_end; ++i) {
+      c += (*i).computeCardinality( t, processing );
+    }
+    d_card = c;
+    processing.pop_back();
+  }
+  return d_card;
+}
+
+bool Datatype::isRecursiveSingleton( Type t ) const throw(IllegalArgumentException) {
+  PrettyCheckArgument(isResolved(), this, "this datatype is not yet resolved");
+  Assert( t.isDatatype() && ((DatatypeType)t).getDatatype()==*this );
+  if( d_card_rec_singleton.find( t )==d_card_rec_singleton.end() ){
+    if( isCodatatype() ){
+      Assert( d_card_u_assume[t].empty() );
+      std::vector< Type > processing;
+      if( computeCardinalityRecSingleton( t, processing, d_card_u_assume[t] ) ){
+        d_card_rec_singleton[t] = 1;
+      }else{
+        d_card_rec_singleton[t] = -1;
+      }
+      if( d_card_rec_singleton[t]==1 ){
+        Trace("dt-card") << "Datatype " << getName() << " is recursive singleton, dependent upon " << d_card_u_assume[t].size() << " uninterpreted sorts: " << std::endl;
+        for( unsigned i=0; i<d_card_u_assume[t].size(); i++ ){
+          Trace("dt-card") << "  " << d_card_u_assume[t][i] << std::endl;
+        }
+        Trace("dt-card") << std::endl;
+      }
+    }else{
+      d_card_rec_singleton[t] = -1;
+    }
+  }
+  return d_card_rec_singleton[t]==1;
+}
+
+bool Datatype::isRecursiveSingleton() const throw(IllegalArgumentException) {
+  PrettyCheckArgument(!isParametric(), this, "for isRecursiveSingleton, this datatype cannot be parametric");
+  return isRecursiveSingleton( d_self );
+}
+
+unsigned Datatype::getNumRecursiveSingletonArgTypes( Type t ) const throw(IllegalArgumentException) {
+  Assert( d_card_rec_singleton.find( t )!=d_card_rec_singleton.end() );
+  Assert( isRecursiveSingleton( t ) );
+  return d_card_u_assume[t].size();
+}
+
+unsigned Datatype::getNumRecursiveSingletonArgTypes() const throw(IllegalArgumentException) {
+  PrettyCheckArgument(!isParametric(), this, "for getNumRecursiveSingletonArgTypes, this datatype cannot be parametric");
+  return getNumRecursiveSingletonArgTypes( d_self );
+}
+
+Type Datatype::getRecursiveSingletonArgType( Type t, unsigned i ) const throw(IllegalArgumentException) {
+  Assert( d_card_rec_singleton.find( t )!=d_card_rec_singleton.end() );
+  Assert( isRecursiveSingleton( t ) );
+  return d_card_u_assume[t][i];
+}
+
+Type Datatype::getRecursiveSingletonArgType( unsigned i ) const throw(IllegalArgumentException) {
+  PrettyCheckArgument(!isParametric(), this, "for getRecursiveSingletonArgType, this datatype cannot be parametric");
+  return getRecursiveSingletonArgType( d_self, i );
+}
+
+bool Datatype::computeCardinalityRecSingleton( Type t, std::vector< Type >& processing, std::vector< Type >& u_assume ) const throw(IllegalArgumentException){
+  if( std::find( processing.begin(), processing.end(), d_self )!=processing.end() ){
+    return true;
+  }else{
+    if( d_card_rec_singleton[t]==0 ){
+      //if not yet computed
+      if( d_constructors.size()==1 ){
+        bool success = false;
+        processing.push_back( d_self );
+        for(unsigned i = 0; i<d_constructors[0].getNumArgs(); i++ ) {
+          Type tc = ((SelectorType)d_constructors[0][i].getType()).getRangeType();
+          //if it is an uninterpreted sort, then we depend on it having cardinality one
+          if( tc.isSort() ){
+            if( std::find( u_assume.begin(), u_assume.end(), tc )==u_assume.end() ){
+              u_assume.push_back( tc );
+            }
+          //if it is a datatype, recurse
+          }else if( tc.isDatatype() ){
+            const Datatype & dt = ((DatatypeType)tc).getDatatype();
+            if( !dt.computeCardinalityRecSingleton( t, processing, u_assume ) ){
+              return false;
+            }else{
+              success = true;
+            }
+          //if it is a builtin type, it must have cardinality one
+          }else if( !tc.getCardinality().isOne() ){
+            return false;
+          }
+        }
+        processing.pop_back();
+        return success;
+      }else{
+        return false;
+      }
+    }else if( d_card_rec_singleton[t]==-1 ){
+      return false;
+    }else{
+      for( unsigned i=0; i<d_card_u_assume[t].size(); i++ ){
+        if( std::find( u_assume.begin(), u_assume.end(), d_card_u_assume[t][i] )==u_assume.end() ){
+          u_assume.push_back( d_card_u_assume[t][i] );
+        }
+      }
+      return true;
+    }
+  }
+}
+
+bool Datatype::isFinite( Type t ) const throw(IllegalArgumentException) {
+  PrettyCheckArgument(isResolved(), this, "this datatype is not yet resolved");
+  Assert( t.isDatatype() && ((DatatypeType)t).getDatatype()==*this );
+
+  // we're using some internals, so we have to set up this library context
+  ExprManagerScope ems(d_self);
+  TypeNode self = TypeNode::fromType(d_self);
+  // is this already in the cache ?
+  if(self.getAttribute(DatatypeFiniteComputedAttr())) {
+    return self.getAttribute(DatatypeFiniteAttr());
+  }
+  for(const_iterator i = begin(), i_end = end(); i != i_end; ++i) {
+    if(! (*i).isFinite( t )) {
+      self.setAttribute(DatatypeFiniteComputedAttr(), true);
+      self.setAttribute(DatatypeFiniteAttr(), false);
+      return false;
+    }
+  }
+  self.setAttribute(DatatypeFiniteComputedAttr(), true);
+  self.setAttribute(DatatypeFiniteAttr(), true);
+  return true;
+}
+bool Datatype::isFinite() const throw(IllegalArgumentException) {
+  PrettyCheckArgument(isResolved() && !isParametric(), this, "this datatype must be resolved and not parametric");
+  return isFinite( d_self );
+}
+
+bool Datatype::isInterpretedFinite( Type t ) const throw(IllegalArgumentException) {
+  PrettyCheckArgument(isResolved(), this, "this datatype is not yet resolved");
+  Assert( t.isDatatype() && ((DatatypeType)t).getDatatype()==*this );
+  // we're using some internals, so we have to set up this library context
+  ExprManagerScope ems(d_self);
+  TypeNode self = TypeNode::fromType(d_self);
+  // is this already in the cache ?
+  if(self.getAttribute(DatatypeUFiniteComputedAttr())) {
+    return self.getAttribute(DatatypeUFiniteAttr());
+  }
+  //start by assuming it is not
+  self.setAttribute(DatatypeUFiniteComputedAttr(), true);
+  self.setAttribute(DatatypeUFiniteAttr(), false);
+  for(const_iterator i = begin(), i_end = end(); i != i_end; ++i) {
+    if(! (*i).isInterpretedFinite( t )) {
+      return false;
+    }
+  }
+  self.setAttribute(DatatypeUFiniteComputedAttr(), true);
+  self.setAttribute(DatatypeUFiniteAttr(), true);
+  return true;
+}
+bool Datatype::isInterpretedFinite() const throw(IllegalArgumentException) {
+  PrettyCheckArgument(isResolved() && !isParametric(), this, "this datatype must be resolved and not parametric");
+  return isInterpretedFinite( d_self );
+}
+
+bool Datatype::isWellFounded() const throw(IllegalArgumentException) {
+  PrettyCheckArgument(isResolved(), this, "this datatype is not yet resolved");
+  if( d_well_founded==0 ){
+    // we're using some internals, so we have to set up this library context
+    ExprManagerScope ems(d_self);
+    std::vector< Type > processing;
+    if( computeWellFounded( processing ) ){
+      d_well_founded = 1;
+    }else{
+      d_well_founded = -1;
+    }
+  }
+  return d_well_founded==1;
+}
+
+bool Datatype::computeWellFounded( std::vector< Type >& processing ) const throw(IllegalArgumentException) {
+  PrettyCheckArgument(isResolved(), this, "this datatype is not yet resolved");
+  if( std::find( processing.begin(), processing.end(), d_self )!=processing.end() ){
+    return d_isCo;
+  }else{
+    processing.push_back( d_self );
+    for(const_iterator i = begin(), i_end = end(); i != i_end; ++i) {
+      if( (*i).computeWellFounded( processing ) ){
+        processing.pop_back();
+        return true;
+      }else{
+        Trace("dt-wf") << "Constructor " << (*i).getName() << " is not well-founded." << std::endl;
+      }
+    }
+    processing.pop_back();
+    Trace("dt-wf") << "Datatype " << getName() << " is not well-founded." << std::endl;
+    return false;
+  }
+}
+
+Expr Datatype::mkGroundTerm( Type t ) const throw(IllegalArgumentException) {
+  PrettyCheckArgument(isResolved(), this, "this datatype is not yet resolved");
+  ExprManagerScope ems(d_self);
+
+
+  // is this already in the cache ?
+  std::map< Type, Expr >::iterator it = d_ground_term.find( t );
+  if( it != d_ground_term.end() ){
+    Debug("datatypes") << "\nin cache: " << d_self << " => " << it->second << std::endl;
+    return it->second;
+  } else {
+    std::vector< Type > processing;
+    Expr groundTerm = computeGroundTerm( t, processing );
+    if(!groundTerm.isNull() ) {
+      // we found a ground-term-constructing constructor!
+      d_ground_term[t] = groundTerm;
+      Debug("datatypes") << "constructed: " << getName() << " => " << groundTerm << std::endl;
+    }
+    if( groundTerm.isNull() ){
+      if( !d_isCo ){
+        // if we get all the way here, we aren't well-founded
+        IllegalArgument(*this, "datatype is not well-founded, cannot construct a ground term!");
+      }else{
+        return groundTerm;
+      }
+    }else{
+      return groundTerm;
+    }
+  }
+}
+
+Expr getSubtermWithType( Expr e, Type t, bool isTop ){
+  if( !isTop && e.getType()==t ){
+    return e;
+  }else{
+    for( unsigned i=0; i<e.getNumChildren(); i++ ){
+      Expr se = getSubtermWithType( e[i], t, false );
+      if( !se.isNull() ){
+        return se;
+      }
+    }
+    return Expr();
+  }
+}
+
+Expr Datatype::computeGroundTerm( Type t, std::vector< Type >& processing ) const throw(IllegalArgumentException) {
+  if( std::find( processing.begin(), processing.end(), d_self )==processing.end() ){
+    processing.push_back( d_self );
+    for( unsigned r=0; r<2; r++ ){
+      for(const_iterator i = begin(), i_end = end(); i != i_end; ++i) {
+        //do nullary constructors first
+        if( ((*i).getNumArgs()==0)==(r==0)){
+          Debug("datatypes") << "Try constructing for " << (*i).getName() << ", processing = " << processing.size() << std::endl;
+          Expr e = (*i).computeGroundTerm( t, processing, d_ground_term );
+          if( !e.isNull() ){
+            //must check subterms for the same type to avoid infinite loops in type enumeration
+            Expr se = getSubtermWithType( e, t, true );
+            if( !se.isNull() ){
+              Debug("datatypes") << "Take subterm " << se << std::endl;
+              e = se;
+            }
+            processing.pop_back();
+            return e;
+          }else{
+            Debug("datatypes") << "...failed." << std::endl;
+          }
+        }
+      }
+    }
+    processing.pop_back();
+  }else{
+    Debug("datatypes") << "...already processing " << t << std::endl;
+  }
+  return Expr();
+}
+
+DatatypeType Datatype::getDatatypeType() const throw(IllegalArgumentException) {
+  PrettyCheckArgument(isResolved(), *this, "Datatype must be resolved to get its DatatypeType");
+  PrettyCheckArgument(!d_self.isNull(), *this);
+  return DatatypeType(d_self);
+}
+
+DatatypeType Datatype::getDatatypeType(const std::vector<Type>& params)
+  const throw(IllegalArgumentException) {
+  PrettyCheckArgument(isResolved(), *this, "Datatype must be resolved to get its DatatypeType");
+  PrettyCheckArgument(!d_self.isNull() && DatatypeType(d_self).isParametric(), this);
+  return DatatypeType(d_self).instantiate(params);
+}
+
+bool Datatype::operator==(const Datatype& other) const throw() {
+  // two datatypes are == iff the name is the same and they have
+  // exactly matching constructors (in the same order)
+
+  if(this == &other) {
+    return true;
+  }
+
+  if(isResolved() != other.isResolved()) {
+    return false;
+  }
+
+  if( d_name != other.d_name ||
+      getNumConstructors() != other.getNumConstructors() ) {
+    return false;
+  }
+  for(const_iterator i = begin(), j = other.begin(); i != end(); ++i, ++j) {
+    Assert(j != other.end());
+    // two constructors are == iff they have the same name, their
+    // constructors and testers are equal and they have exactly
+    // matching args (in the same order)
+    if((*i).getName() != (*j).getName() ||
+       (*i).getNumArgs() != (*j).getNumArgs()) {
+      return false;
+    }
+    // testing equivalence of constructors and testers is harder b/c
+    // this constructor might not be resolved yet; only compare them
+    // if they are both resolved
+    Assert(isResolved() == !(*i).d_constructor.isNull() &&
+           isResolved() == !(*i).d_tester.isNull() &&
+           (*i).d_constructor.isNull() == (*j).d_constructor.isNull() &&
+           (*i).d_tester.isNull() == (*j).d_tester.isNull());
+    if(!(*i).d_constructor.isNull() && (*i).d_constructor != (*j).d_constructor) {
+      return false;
+    }
+    if(!(*i).d_tester.isNull() && (*i).d_tester != (*j).d_tester) {
+      return false;
+    }
+    for(DatatypeConstructor::const_iterator k = (*i).begin(), l = (*j).begin(); k != (*i).end(); ++k, ++l) {
+      Assert(l != (*j).end());
+      if((*k).getName() != (*l).getName()) {
+        return false;
+      }
+      // testing equivalence of selectors is harder b/c args might not
+      // be resolved yet
+      Assert(isResolved() == (*k).isResolved() &&
+             (*k).isResolved() == (*l).isResolved());
+      if((*k).isResolved()) {
+        // both are resolved, so simply compare the selectors directly
+        if((*k).d_selector != (*l).d_selector) {
+          return false;
+        }
+      } else {
+        // neither is resolved, so compare their (possibly unresolved)
+        // types; we don't know if they'll be resolved the same way,
+        // so we can't ever say unresolved types are equal
+        if(!(*k).d_selector.isNull() && !(*l).d_selector.isNull()) {
+          if((*k).d_selector.getType() != (*l).d_selector.getType()) {
+            return false;
+          }
+        } else {
+          if((*k).isUnresolvedSelf() && (*l).isUnresolvedSelf()) {
+            // Fine, the selectors are equal if the rest of the
+            // enclosing datatypes are equal...
+          } else {
+            return false;
+          }
+        }
+      }
+    }
+  }
+  return true;
+}
+
+const DatatypeConstructor& Datatype::operator[](size_t index) const {
+  PrettyCheckArgument(index < getNumConstructors(), index, "index out of bounds");
+  return d_constructors[index];
+}
+
+const DatatypeConstructor& Datatype::operator[](std::string name) const {
+  for(const_iterator i = begin(); i != end(); ++i) {
+    if((*i).getName() == name) {
+      return *i;
+    }
+  }
+  IllegalArgument(name, "No such constructor `%s' of datatype `%s'", name.c_str(), d_name.c_str());
+}
+
+Expr Datatype::getConstructor(std::string name) const {
+  return (*this)[name].getConstructor();
+}
+
+Type Datatype::getSygusType() const {
+  return d_sygus_type;
+}
+
+Expr Datatype::getSygusVarList() const {
+  return d_sygus_bvl;
+}
+
+bool Datatype::getSygusAllowConst() const {
+  return d_sygus_allow_const;
+}
+
+bool Datatype::getSygusAllowAll() const {
+  return d_sygus_allow_const;
+}
+
+bool Datatype::involvesExternalType() const{
+  return d_involvesExt;
+}
+
+bool Datatype::involvesUninterpretedType() const{
+  return d_involvesUt;
+}
+
+void DatatypeConstructor::resolve(ExprManager* em, DatatypeType self,
+                                  const std::map<std::string, DatatypeType>& resolutions,
+                                  const std::vector<Type>& placeholders,
+                                  const std::vector<Type>& replacements,
+                                  const std::vector< SortConstructorType >& paramTypes,
+                                  const std::vector< DatatypeType >& paramReplacements, size_t cindex)
+  throw(IllegalArgumentException, DatatypeResolutionException) {
+
+  PrettyCheckArgument(em != NULL, em, "cannot resolve a Datatype with a NULL expression manager");
+  PrettyCheckArgument(!isResolved(),
+                "cannot resolve a Datatype constructor twice; "
+                "perhaps the same constructor was added twice, "
+                "or to two datatypes?");
+
+  // we're using some internals, so we have to set up this library context
+  ExprManagerScope ems(*em);
+
+  NodeManager* nm = NodeManager::fromExprManager(em);
+  TypeNode selfTypeNode = TypeNode::fromType(self);
+  size_t index = 0;
+  for(std::vector<DatatypeConstructorArg>::iterator i = d_args.begin(), i_end = d_args.end(); i != i_end; ++i) {
+    if((*i).d_selector.isNull()) {
+      // the unresolved type wasn't created here; do name resolution
+      string typeName = (*i).d_name.substr((*i).d_name.find('\0') + 1);
+      (*i).d_name.resize((*i).d_name.find('\0'));
+      if(typeName == "") {
+        (*i).d_selector = nm->mkSkolem((*i).d_name, nm->mkSelectorType(selfTypeNode, selfTypeNode), "is a selector", NodeManager::SKOLEM_EXACT_NAME | NodeManager::SKOLEM_NO_NOTIFY).toExpr();
+      } else {
+        map<string, DatatypeType>::const_iterator j = resolutions.find(typeName);
+        if(j == resolutions.end()) {
+          stringstream msg;
+          msg << "cannot resolve type \"" << typeName << "\" "
+              << "in selector \"" << (*i).d_name << "\" "
+              << "of constructor \"" << d_name << "\"";
+          throw DatatypeResolutionException(msg.str());
+        } else {
+          (*i).d_selector = nm->mkSkolem((*i).d_name, nm->mkSelectorType(selfTypeNode, TypeNode::fromType((*j).second)), "is a selector", NodeManager::SKOLEM_EXACT_NAME | NodeManager::SKOLEM_NO_NOTIFY).toExpr();
+        }
+      }
+    } else {
+      // the type for the selector already exists; may need
+      // complex-type substitution
+      Type range = (*i).d_selector.getType();
+      if(!placeholders.empty()) {
+        range = range.substitute(placeholders, replacements);
+      }
+      if(!paramTypes.empty() ) {
+        range = doParametricSubstitution( range, paramTypes, paramReplacements );
+      }
+      (*i).d_selector = nm->mkSkolem((*i).d_name, nm->mkSelectorType(selfTypeNode, TypeNode::fromType(range)), "is a selector", NodeManager::SKOLEM_EXACT_NAME | NodeManager::SKOLEM_NO_NOTIFY).toExpr();
+    }
+    Node::fromExpr((*i).d_selector).setAttribute(DatatypeConsIndexAttr(), cindex);
+    Node::fromExpr((*i).d_selector).setAttribute(DatatypeIndexAttr(), index++);
+    (*i).d_resolved = true;
+  }
+
+  Assert(index == getNumArgs());
+
+  // Set constructor/tester last, since DatatypeConstructor::isResolved()
+  // returns true when d_tester is not the null Expr.  If something
+  // fails above, we want Constuctor::isResolved() to remain "false".
+  // Further, mkConstructorType() iterates over the selectors, so
+  // should get the results of any resolutions we did above.
+  d_tester = nm->mkSkolem(getTesterName(), nm->mkTesterType(selfTypeNode), "is a tester", NodeManager::SKOLEM_EXACT_NAME | NodeManager::SKOLEM_NO_NOTIFY).toExpr();
+  d_constructor = nm->mkSkolem(getName(), nm->mkConstructorType(*this, selfTypeNode), "is a constructor", NodeManager::SKOLEM_EXACT_NAME | NodeManager::SKOLEM_NO_NOTIFY).toExpr();
+  // associate constructor with all selectors
+  for(std::vector<DatatypeConstructorArg>::iterator i = d_args.begin(), i_end = d_args.end(); i != i_end; ++i) {
+    (*i).d_constructor = d_constructor;
+  }
+}
+
+Type DatatypeConstructor::doParametricSubstitution( Type range,
+                                  const std::vector< SortConstructorType >& paramTypes,
+                                  const std::vector< DatatypeType >& paramReplacements ) {
+  TypeNode typn = TypeNode::fromType( range );
+  if(typn.getNumChildren() == 0) {
+    return range;
+  } else {
+    std::vector< Type > origChildren;
+    std::vector< Type > children;
+    for(TypeNode::const_iterator i = typn.begin(), iend = typn.end();i != iend; ++i) {
+      origChildren.push_back( (*i).toType() );
+      children.push_back( doParametricSubstitution( (*i).toType(), paramTypes, paramReplacements ) );
+    }
+    for( unsigned i = 0; i < paramTypes.size(); ++i ) {
+      if( paramTypes[i].getArity() == origChildren.size() ) {
+        Type tn = paramTypes[i].instantiate( origChildren );
+        if( range == tn ) {
+          return paramReplacements[i].instantiate( children );
+        }
+      }
+    }
+    NodeBuilder<> nb(typn.getKind());
+    for( unsigned i = 0; i < children.size(); ++i ) {
+      nb << TypeNode::fromType( children[i] );
+    }
+    return nb.constructTypeNode().toType();
+  }
+}
+
+DatatypeConstructor::DatatypeConstructor(std::string name) :
+  // We don't want to introduce a new data member, because eventually
+  // we're going to be a constant stuffed inside a node.  So we stow
+  // the tester name away inside the constructor name until
+  // resolution.
+  d_name(name + '\0' + "is_" + name), // default tester name is "is_FOO"
+  d_tester(),
+  d_args() {
+  PrettyCheckArgument(name != "", name, "cannot construct a datatype constructor without a name");
+}
+
+DatatypeConstructor::DatatypeConstructor(std::string name, std::string tester) :
+  // We don't want to introduce a new data member, because eventually
+  // we're going to be a constant stuffed inside a node.  So we stow
+  // the tester name away inside the constructor name until
+  // resolution.
+  d_name(name + '\0' + tester),
+  d_tester(),
+  d_args() {
+  PrettyCheckArgument(name != "", name, "cannot construct a datatype constructor without a name");
+  PrettyCheckArgument(!tester.empty(), tester, "cannot construct a datatype constructor without a tester");
+}
+
+void DatatypeConstructor::setSygus( Expr op, Expr let_body, std::vector< Expr >& let_args, unsigned num_let_input_args ){
+  d_sygus_op = op;
+  d_sygus_let_body = let_body;
+  d_sygus_let_args.insert( d_sygus_let_args.end(), let_args.begin(), let_args.end() );
+  d_sygus_num_let_input_args = num_let_input_args;
+}
+
+void DatatypeConstructor::addArg(std::string selectorName, Type selectorType) {
+  // We don't want to introduce a new data member, because eventually
+  // we're going to be a constant stuffed inside a node.  So we stow
+  // the selector type away inside a var until resolution (when we can
+  // create the proper selector type)
+  PrettyCheckArgument(!isResolved(), this, "cannot modify a finalized Datatype constructor");
+  PrettyCheckArgument(!selectorType.isNull(), selectorType, "cannot add a null selector type");
+
+  // we're using some internals, so we have to set up this library context
+  ExprManagerScope ems(selectorType);
+
+  Expr type = NodeManager::currentNM()->mkSkolem("unresolved_" + selectorName, TypeNode::fromType(selectorType), "is an unresolved selector type placeholder", NodeManager::SKOLEM_EXACT_NAME | NodeManager::SKOLEM_NO_NOTIFY).toExpr();
+  Debug("datatypes") << type << endl;
+  d_args.push_back(DatatypeConstructorArg(selectorName, type));
+}
+
+void DatatypeConstructor::addArg(std::string selectorName, DatatypeUnresolvedType selectorType) {
+  // We don't want to introduce a new data member, because eventually
+  // we're going to be a constant stuffed inside a node.  So we stow
+  // the selector type away after a NUL in the name string until
+  // resolution (when we can create the proper selector type)
+  PrettyCheckArgument(!isResolved(), this, "cannot modify a finalized Datatype constructor");
+  PrettyCheckArgument(selectorType.getName() != "", selectorType, "cannot add a null selector type");
+  d_args.push_back(DatatypeConstructorArg(selectorName + '\0' + selectorType.getName(), Expr()));
+}
+
+void DatatypeConstructor::addArg(std::string selectorName, DatatypeSelfType) {
+  // We don't want to introduce a new data member, because eventually
+  // we're going to be a constant stuffed inside a node.  So we mark
+  // the name string with a NUL to indicate that we have a
+  // self-selecting selector until resolution (when we can create the
+  // proper selector type)
+  PrettyCheckArgument(!isResolved(), this, "cannot modify a finalized Datatype constructor");
+  d_args.push_back(DatatypeConstructorArg(selectorName + '\0', Expr()));
+}
+
+std::string DatatypeConstructor::getName() const throw() {
+  return d_name.substr(0, d_name.find('\0'));
+}
+
+std::string DatatypeConstructor::getTesterName() const throw() {
+  return d_name.substr(d_name.find('\0') + 1);
+}
+
+Expr DatatypeConstructor::getConstructor() const {
+  PrettyCheckArgument(isResolved(), this, "this datatype constructor is not yet resolved");
+  return d_constructor;
+}
+
+Type DatatypeConstructor::getSpecializedConstructorType(Type returnType) const {
+  PrettyCheckArgument(isResolved(), this, "this datatype constructor is not yet resolved");
+  ExprManagerScope ems(d_constructor);
+  const Datatype& dt = Datatype::datatypeOf(d_constructor);
+  PrettyCheckArgument(dt.isParametric(), this, "this datatype constructor is not parametric");
+  DatatypeType dtt = dt.getDatatypeType();
+  Matcher m(dtt);
+  m.doMatching( TypeNode::fromType(dtt), TypeNode::fromType(returnType) );
+  vector<Type> subst;
+  m.getMatches(subst);
+  vector<Type> params = dt.getParameters();
+  return d_constructor.getType().substitute(params, subst);
+}
+
+Expr DatatypeConstructor::getTester() const {
+  PrettyCheckArgument(isResolved(), this, "this datatype constructor is not yet resolved");
+  return d_tester;
+}
+
+Expr DatatypeConstructor::getSygusOp() const {
+  PrettyCheckArgument(isResolved(), this, "this datatype constructor is not yet resolved");
+  return d_sygus_op;
+}
+
+Expr DatatypeConstructor::getSygusLetBody() const {
+  PrettyCheckArgument(isResolved(), this, "this datatype constructor is not yet resolved");
+  return d_sygus_let_body;
+}
+
+unsigned DatatypeConstructor::getNumSygusLetArgs() const {
+  PrettyCheckArgument(isResolved(), this, "this datatype constructor is not yet resolved");
+  return d_sygus_let_args.size();
+}
+
+Expr DatatypeConstructor::getSygusLetArg( unsigned i ) const {
+  PrettyCheckArgument(isResolved(), this, "this datatype constructor is not yet resolved");
+  return d_sygus_let_args[i];
+}
+
+unsigned DatatypeConstructor::getNumSygusLetInputArgs() const {
+  PrettyCheckArgument(isResolved(), this, "this datatype constructor is not yet resolved");
+  return d_sygus_num_let_input_args;
+}
+
+bool DatatypeConstructor::isSygusIdFunc() const {
+  PrettyCheckArgument(isResolved(), this, "this datatype constructor is not yet resolved");
+  return d_sygus_let_args.size()==1 && d_sygus_let_args[0]==d_sygus_let_body;
+}
+
+Cardinality DatatypeConstructor::getCardinality( Type t ) const throw(IllegalArgumentException) {
+  PrettyCheckArgument(isResolved(), this, "this datatype constructor is not yet resolved");
+
+  Cardinality c = 1;
+
+  for(const_iterator i = begin(), i_end = end(); i != i_end; ++i) {
+    c *= SelectorType((*i).getSelector().getType()).getRangeType().getCardinality();
+  }
+
+  return c;
+}
+
+/** compute the cardinality of this datatype */
+Cardinality DatatypeConstructor::computeCardinality( Type t, std::vector< Type >& processing ) const throw(IllegalArgumentException){
+  Cardinality c = 1;
+  std::vector< Type > instTypes;
+  std::vector< Type > paramTypes;
+  if( DatatypeType(t).isParametric() ){
+    paramTypes = DatatypeType(t).getDatatype().getParameters();
+    instTypes = DatatypeType(t).getParamTypes();
+  }  
+  for(const_iterator i = begin(), i_end = end(); i != i_end; ++i) {
+    Type tc = SelectorType((*i).getSelector().getType()).getRangeType();
+    if( DatatypeType(t).isParametric() ){
+      tc = tc.substitute( paramTypes, instTypes );
+    }
+    if( tc.isDatatype() ){
+      const Datatype& dt = ((DatatypeType)tc).getDatatype();
+      c *= dt.computeCardinality( t, processing );
+    }else{
+      c *= tc.getCardinality();
+    }
+  }
+  return c;
+}
+
+bool DatatypeConstructor::computeWellFounded( std::vector< Type >& processing ) const throw(IllegalArgumentException){
+  for(const_iterator i = begin(), i_end = end(); i != i_end; ++i) {
+    Type t = SelectorType((*i).getSelector().getType()).getRangeType();
+    if( t.isDatatype() ){
+      const Datatype& dt = ((DatatypeType)t).getDatatype();
+      if( !dt.computeWellFounded( processing ) ){
+        return false;
+      }
+    }
+  }
+  return true;
+}
+
+
+bool DatatypeConstructor::isFinite( Type t ) const throw(IllegalArgumentException) {
+  PrettyCheckArgument(isResolved(), this, "this datatype constructor is not yet resolved");
+
+  // we're using some internals, so we have to set up this library context
+  ExprManagerScope ems(d_constructor);
+  TNode self = Node::fromExpr(d_constructor);
+  // is this already in the cache ?
+  if(self.getAttribute(DatatypeFiniteComputedAttr())) {
+    return self.getAttribute(DatatypeFiniteAttr());
+  }
+  std::vector< Type > instTypes;
+  std::vector< Type > paramTypes;
+  if( DatatypeType(t).isParametric() ){
+    paramTypes = DatatypeType(t).getDatatype().getParameters();
+    instTypes = DatatypeType(t).getParamTypes();
+  }  
+  for(const_iterator i = begin(), i_end = end(); i != i_end; ++i) {
+    Type tc = (*i).getRangeType();
+    if( DatatypeType(t).isParametric() ){
+      tc = tc.substitute( paramTypes, instTypes );
+    }
+    if(! tc.getCardinality().isFinite()) {
+      self.setAttribute(DatatypeFiniteComputedAttr(), true);
+      self.setAttribute(DatatypeFiniteAttr(), false);
+      return false;
+    }
+  }
+  self.setAttribute(DatatypeFiniteComputedAttr(), true);
+  self.setAttribute(DatatypeFiniteAttr(), true);
+  return true;
+}
+
+bool DatatypeConstructor::isInterpretedFinite( Type t ) const throw(IllegalArgumentException) {
+  PrettyCheckArgument(isResolved(), this, "this datatype constructor is not yet resolved");
+  // we're using some internals, so we have to set up this library context
+  ExprManagerScope ems(d_constructor);
+  TNode self = Node::fromExpr(d_constructor);
+  // is this already in the cache ?
+  if(self.getAttribute(DatatypeUFiniteComputedAttr())) {
+    return self.getAttribute(DatatypeUFiniteAttr());
+  }
+  std::vector< Type > instTypes;
+  std::vector< Type > paramTypes;
+  if( DatatypeType(t).isParametric() ){
+    paramTypes = DatatypeType(t).getDatatype().getParameters();
+    instTypes = DatatypeType(t).getParamTypes();
+  }  
+  for(const_iterator i = begin(), i_end = end(); i != i_end; ++i) {
+    Type tc = (*i).getRangeType();
+    if( DatatypeType(t).isParametric() ){
+      tc = tc.substitute( paramTypes, instTypes );
+    }
+    TypeNode tcn = TypeNode::fromType( tc );
+    if(!tcn.isInterpretedFinite()) {
+      self.setAttribute(DatatypeUFiniteComputedAttr(), true);
+      self.setAttribute(DatatypeUFiniteAttr(), false);
+      return false;
+    }
+  }
+  self.setAttribute(DatatypeUFiniteComputedAttr(), true);
+  self.setAttribute(DatatypeUFiniteAttr(), true);
+  return true;
+}
+
+Expr DatatypeConstructor::computeGroundTerm( Type t, std::vector< Type >& processing, std::map< Type, Expr >& gt ) const throw(IllegalArgumentException) {
+// we're using some internals, so we have to set up this library context
+  ExprManagerScope ems(d_constructor);
+
+  std::vector<Expr> groundTerms;
+  groundTerms.push_back(getConstructor());
+
+  // for each selector, get a ground term
+  std::vector< Type > instTypes;
+  std::vector< Type > paramTypes;
+  if( DatatypeType(t).isParametric() ){
+    paramTypes = DatatypeType(t).getDatatype().getParameters();
+    instTypes = DatatypeType(t).getParamTypes();
+  }
+  for(const_iterator i = begin(), i_end = end(); i != i_end; ++i) {
+    Type selType = SelectorType((*i).getSelector().getType()).getRangeType();
+    if( DatatypeType(t).isParametric() ){
+      selType = selType.substitute( paramTypes, instTypes );
+    }
+    Expr arg;
+    if( selType.isDatatype() ){
+      std::map< Type, Expr >::iterator itgt = gt.find( selType );
+      if( itgt != gt.end() ){
+        arg = itgt->second;
+      }else{
+        const Datatype & dt = DatatypeType(selType).getDatatype();
+        arg = dt.computeGroundTerm( selType, processing );
+      }
+    }else{
+      arg = selType.mkGroundTerm();
+    }
+    if( arg.isNull() ){
+      Debug("datatypes") << "...unable to construct arg of " << (*i).getName() << std::endl;
+      return Expr();
+    }else{
+      Debug("datatypes") << "...constructed arg " << arg.getType() << std::endl;
+      groundTerms.push_back(arg);
+    }
+  }
+
+  Expr groundTerm = getConstructor().getExprManager()->mkExpr(kind::APPLY_CONSTRUCTOR, groundTerms);
+  if( groundTerm.getType()!=t ){
+    Assert( Datatype::datatypeOf( d_constructor ).isParametric() );
+    //type is ambiguous, must apply type ascription
+    Debug("datatypes-gt") << "ambiguous type for " << groundTerm << ", ascribe to " << t << std::endl;
+    groundTerms[0] = getConstructor().getExprManager()->mkExpr(kind::APPLY_TYPE_ASCRIPTION,
+                       getConstructor().getExprManager()->mkConst(AscriptionType(getSpecializedConstructorType(t))),
+                       groundTerms[0]);
+    groundTerm = getConstructor().getExprManager()->mkExpr(kind::APPLY_CONSTRUCTOR, groundTerms);
+  }
+  return groundTerm;
+}
+
+
+const DatatypeConstructorArg& DatatypeConstructor::operator[](size_t index) const {
+  PrettyCheckArgument(index < getNumArgs(), index, "index out of bounds");
+  return d_args[index];
+}
+
+const DatatypeConstructorArg& DatatypeConstructor::operator[](std::string name) const {
+  for(const_iterator i = begin(); i != end(); ++i) {
+    if((*i).getName() == name) {
+      return *i;
+    }
+  }
+  IllegalArgument(name, "No such arg `%s' of constructor `%s'", name.c_str(), d_name.c_str());
+}
+
+Expr DatatypeConstructor::getSelector(std::string name) const {
+  return (*this)[name].getSelector();
+}
+
+bool DatatypeConstructor::involvesExternalType() const{
+  for(const_iterator i = begin(); i != end(); ++i) {
+    if(! SelectorType((*i).getSelector().getType()).getRangeType().isDatatype()) {
+      return true;
+    }
+  }
+  return false;
+}
+
+bool DatatypeConstructor::involvesUninterpretedType() const{
+  for(const_iterator i = begin(); i != end(); ++i) {
+    if(SelectorType((*i).getSelector().getType()).getRangeType().isSort()) {
+      return true;
+    }
+  }
+  return false;
+}
+
+DatatypeConstructorArg::DatatypeConstructorArg(std::string name, Expr selector) :
+  d_name(name),
+  d_selector(selector),
+  d_resolved(false) {
+  PrettyCheckArgument(name != "", name, "cannot construct a datatype constructor arg without a name");
+}
+
+std::string DatatypeConstructorArg::getName() const throw() {
+  string name = d_name;
+  const size_t nul = name.find('\0');
+  if(nul != string::npos) {
+    name.resize(nul);
+  }
+  return name;
+}
+
+Expr DatatypeConstructorArg::getSelector() const {
+  PrettyCheckArgument(isResolved(), this, "cannot get a selector for an unresolved datatype constructor");
+  return d_selector;
+}
+
+Expr DatatypeConstructorArg::getConstructor() const {
+  PrettyCheckArgument(isResolved(), this,
+                "cannot get a associated constructor for argument of an unresolved datatype constructor");
+  return d_constructor;
+}
+
+SelectorType DatatypeConstructorArg::getType() const {
+  return getSelector().getType();
+}
+
+Type DatatypeConstructorArg::getRangeType() const {
+  return getType().getRangeType();
+}
+
+bool DatatypeConstructorArg::isUnresolvedSelf() const throw() {
+  return d_selector.isNull() && d_name.size() == d_name.find('\0') + 1;
+}
+
+static const int s_printDatatypeNamesOnly = std::ios_base::xalloc();
+
+std::string DatatypeConstructorArg::getTypeName() const {
+  Type t;
+  if(isResolved()) {
+    t = SelectorType(d_selector.getType()).getRangeType();
+  } else {
+    if(d_selector.isNull()) {
+      string typeName = d_name.substr(d_name.find('\0') + 1);
+      return (typeName == "") ? "[self]" : typeName;
+    } else {
+      t = d_selector.getType();
+    }
+  }
+
+  // Unfortunately, in the case of complex selector types, we can
+  // enter nontrivial recursion here.  Make sure that doesn't happen.
+  stringstream ss;
+  ss << language::SetLanguage(language::output::LANG_CVC4);
+  ss.iword(s_printDatatypeNamesOnly) = 1;
+  t.toStream(ss);
+  return ss.str();
+}
+
+std::ostream& operator<<(std::ostream& os, const Datatype& dt) {
+  // These datatype things are recursive!  Be very careful not to
+  // print an infinite chain of them.
+  long& printNameOnly = os.iword(s_printDatatypeNamesOnly);
+  Debug("datatypes-output") << "printNameOnly is " << printNameOnly << std::endl;
+  if(printNameOnly) {
+    return os << dt.getName();
+  }
+
+  class Scope {
+    long& d_ref;
+    long d_oldValue;
+  public:
+    Scope(long& ref, long value) : d_ref(ref), d_oldValue(ref) { d_ref = value; }
+    ~Scope() { d_ref = d_oldValue; }
+  } scope(printNameOnly, 1);
+  // when scope is destructed, the value pops back
+
+  Debug("datatypes-output") << "printNameOnly is now " << printNameOnly << std::endl;
+
+  // can only output datatypes in the CVC4 native language
+  language::SetLanguage::Scope ls(os, language::output::LANG_CVC4);
+
+  os << "DATATYPE " << dt.getName();
+  if(dt.isParametric()) {
+    os << '[';
+    for(size_t i = 0; i < dt.getNumParameters(); ++i) {
+      if(i > 0) {
+        os << ',';
+      }
+      os << dt.getParameter(i);
+    }
+    os << ']';
+  }
+  os << " =" << endl;
+  Datatype::const_iterator i = dt.begin(), i_end = dt.end();
+  if(i != i_end) {
+    os << "  ";
+    do {
+      os << *i << endl;
+      if(++i != i_end) {
+        os << "| ";
+      }
+    } while(i != i_end);
+  }
+  os << "END;" << endl;
+
+  return os;
+}
+
+std::ostream& operator<<(std::ostream& os, const DatatypeConstructor& ctor) {
+  // can only output datatypes in the CVC4 native language
+  language::SetLanguage::Scope ls(os, language::output::LANG_CVC4);
+
+  os << ctor.getName();
+
+  DatatypeConstructor::const_iterator i = ctor.begin(), i_end = ctor.end();
+  if(i != i_end) {
+    os << "(";
+    do {
+      os << *i;
+      if(++i != i_end) {
+        os << ", ";
+      }
+    } while(i != i_end);
+    os << ")";
+  }
+
+  return os;
+}
+
+std::ostream& operator<<(std::ostream& os, const DatatypeConstructorArg& arg) {
+  // can only output datatypes in the CVC4 native language
+  language::SetLanguage::Scope ls(os, language::output::LANG_CVC4);
+
+  os << arg.getName() << ": " << arg.getTypeName();
+
+  return os;
+}
+
+DatatypeIndexConstant::DatatypeIndexConstant(unsigned index) throw(IllegalArgumentException) : d_index(index){
+
+}
+
+std::ostream& operator<<(std::ostream& out, const DatatypeIndexConstant& dic) {
+  return out << "index_" << dic.getIndex();
+}
+
+}/* CVC4 namespace */
diff --git a/src/expr/datatype.h b/src/expr/datatype.h
new file mode 100644
index 0000000..5a09730
--- /dev/null
+++ b/src/expr/datatype.h
@@ -0,0 +1,990 @@
+/*********************                                                        */
+/*! \file datatype.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A class representing a Datatype definition
+ **
+ ** A class representing a Datatype definition for the theory of
+ ** inductive datatypes.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__DATATYPE_H
+#define __CVC4__DATATYPE_H
+
+#include <iostream>
+#include <string>
+#include <vector>
+#include <map>
+
+namespace CVC4 {
+  // messy; Expr needs Datatype (because it's the payload of a
+  // CONSTANT-kinded expression), and Datatype needs Expr.
+  //class CVC4_PUBLIC Datatype;
+  class CVC4_PUBLIC DatatypeIndexConstant;
+}/* CVC4 namespace */
+
+#include "base/exception.h"
+#include "expr/expr.h"
+#include "expr/type.h"
+#include "util/hash.h"
+
+
+namespace CVC4 {
+
+class CVC4_PUBLIC ExprManager;
+
+class CVC4_PUBLIC DatatypeConstructor;
+class CVC4_PUBLIC DatatypeConstructorArg;
+
+class CVC4_PUBLIC DatatypeConstructorIterator {
+  const std::vector<DatatypeConstructor>* d_v;
+  size_t d_i;
+
+  friend class Datatype;
+
+  DatatypeConstructorIterator(const std::vector<DatatypeConstructor>& v, bool start) : d_v(&v), d_i(start ? 0 : v.size()) {
+  }
+
+public:
+  typedef const DatatypeConstructor& value_type;
+  const DatatypeConstructor& operator*() const { return (*d_v)[d_i]; }
+  const DatatypeConstructor* operator->() const { return &(*d_v)[d_i]; }
+  DatatypeConstructorIterator& operator++() { ++d_i; return *this; }
+  DatatypeConstructorIterator operator++(int) { DatatypeConstructorIterator i(*this); ++d_i; return i; }
+  bool operator==(const DatatypeConstructorIterator& other) const { return d_v == other.d_v && d_i == other.d_i; }
+  bool operator!=(const DatatypeConstructorIterator& other) const { return d_v != other.d_v || d_i != other.d_i; }
+};/* class DatatypeConstructorIterator */
+
+class CVC4_PUBLIC DatatypeConstructorArgIterator {
+  const std::vector<DatatypeConstructorArg>* d_v;
+  size_t d_i;
+
+  friend class DatatypeConstructor;
+
+  DatatypeConstructorArgIterator(const std::vector<DatatypeConstructorArg>& v, bool start) : d_v(&v), d_i(start ? 0 : v.size()) {
+  }
+
+public:
+  typedef const DatatypeConstructorArg& value_type;
+  const DatatypeConstructorArg& operator*() const { return (*d_v)[d_i]; }
+  const DatatypeConstructorArg* operator->() const { return &(*d_v)[d_i]; }
+  DatatypeConstructorArgIterator& operator++() { ++d_i; return *this; }
+  DatatypeConstructorArgIterator operator++(int) { DatatypeConstructorArgIterator i(*this); ++d_i; return i; }
+  bool operator==(const DatatypeConstructorArgIterator& other) const { return d_v == other.d_v && d_i == other.d_i; }
+  bool operator!=(const DatatypeConstructorArgIterator& other) const { return d_v != other.d_v || d_i != other.d_i; }
+};/* class DatatypeConstructorArgIterator */
+
+/**
+ * An exception that is thrown when a datatype resolution fails.
+ */
+class CVC4_PUBLIC DatatypeResolutionException : public Exception {
+public:
+  inline DatatypeResolutionException(std::string msg);
+};/* class DatatypeResolutionException */
+
+/**
+ * A holder type (used in calls to DatatypeConstructor::addArg())
+ * to allow a Datatype to refer to itself.  Self-typed fields of
+ * Datatypes will be properly typed when a Type is created for the
+ * Datatype by the ExprManager (which calls Datatype::resolve()).
+ */
+class CVC4_PUBLIC DatatypeSelfType {
+};/* class DatatypeSelfType */
+
+/**
+ * An unresolved type (used in calls to
+ * DatatypeConstructor::addArg()) to allow a Datatype to refer to
+ * itself or to other mutually-recursive Datatypes.  Unresolved-type
+ * fields of Datatypes will be properly typed when a Type is created
+ * for the Datatype by the ExprManager (which calls
+ * Datatype::resolve()).
+ */
+class CVC4_PUBLIC DatatypeUnresolvedType {
+  std::string d_name;
+public:
+  inline DatatypeUnresolvedType(std::string name);
+  inline std::string getName() const throw();
+};/* class DatatypeUnresolvedType */
+
+/**
+ * A Datatype constructor argument (i.e., a Datatype field).
+ */
+class CVC4_PUBLIC DatatypeConstructorArg {
+
+  std::string d_name;
+  Expr d_selector;
+  /** the constructor associated with this selector */
+  Expr d_constructor;
+  bool d_resolved;
+
+  DatatypeConstructorArg(std::string name, Expr selector);
+  friend class DatatypeConstructor;
+  friend class Datatype;
+
+  bool isUnresolvedSelf() const throw();
+
+public:
+
+  /** Get the name of this constructor argument. */
+  std::string getName() const throw();
+
+  /**
+   * Get the selector for this constructor argument; this call is
+   * only permitted after resolution.
+   */
+  Expr getSelector() const;
+
+  /**
+   * Get the associated constructor for this constructor argument;
+   * this call is only permitted after resolution.
+   */
+  Expr getConstructor() const;
+
+  /**
+   * Get the type of the selector for this constructor argument;
+   * this call is only permitted after resolution.
+   */
+  SelectorType getType() const;
+
+  /**
+   * Get the range type of this argument.
+   */
+  Type getRangeType() const;
+
+  /**
+   * Get the name of the type of this constructor argument
+   * (Datatype field).  Can be used for not-yet-resolved Datatypes
+   * (in which case the name of the unresolved type, or "[self]"
+   * for a self-referential type is returned).
+   */
+  std::string getTypeName() const;
+
+  /**
+   * Returns true iff this constructor argument has been resolved.
+   */
+  bool isResolved() const throw();
+
+};/* class DatatypeConstructorArg */
+
+/**
+ * A constructor for a Datatype.
+ */
+class CVC4_PUBLIC DatatypeConstructor {
+public:
+
+  /** The type for iterators over constructor arguments. */
+  typedef DatatypeConstructorArgIterator iterator;
+  /** The (const) type for iterators over constructor arguments. */
+  typedef DatatypeConstructorArgIterator const_iterator;
+
+private:
+
+  std::string d_name;
+  Expr d_constructor;
+  Expr d_tester;
+  std::vector<DatatypeConstructorArg> d_args;
+  /** the operator associated with this constructor (for sygus) */
+  Expr d_sygus_op;
+  Expr d_sygus_let_body;
+  std::vector< Expr > d_sygus_let_args;
+  unsigned d_sygus_num_let_input_args;
+
+  void resolve(ExprManager* em, DatatypeType self,
+               const std::map<std::string, DatatypeType>& resolutions,
+               const std::vector<Type>& placeholders,
+               const std::vector<Type>& replacements,
+               const std::vector< SortConstructorType >& paramTypes,
+               const std::vector< DatatypeType >& paramReplacements, size_t cindex)
+    throw(IllegalArgumentException, DatatypeResolutionException);
+  friend class Datatype;
+
+  /** Helper function for resolving parametric datatypes.
+      This replaces instances of the SortConstructorType produced for unresolved
+      parametric datatypes, with the corresponding resolved DatatypeType.  For example, take
+      the parametric definition of a list, list[T] = cons(car : T, cdr : list[T]) | null.
+      If "range" is the unresolved parametric datatype:
+        DATATYPE list = cons(car: SORT_TAG_1, cdr: SORT_TAG_2(SORT_TAG_1)) | null END;,
+      this function will return the resolved type:
+        DATATYPE list = cons(car: SORT_TAG_1, cdr: (list PARAMETERIC_DATATYPE SORT_TAG_1)) | null END;
+    */
+  Type doParametricSubstitution(Type range,
+                                const std::vector< SortConstructorType >& paramTypes,
+                                const std::vector< DatatypeType >& paramReplacements);
+
+  /** compute the cardinality of this datatype */
+  Cardinality computeCardinality( Type t, std::vector< Type >& processing ) const throw(IllegalArgumentException);
+  /** compute whether this datatype is well-founded */
+  bool computeWellFounded( std::vector< Type >& processing ) const throw(IllegalArgumentException);
+  /** compute ground term */
+  Expr computeGroundTerm( Type t, std::vector< Type >& processing, std::map< Type, Expr >& gt ) const throw(IllegalArgumentException);
+public:
+  /**
+   * Create a new Datatype constructor with the given name for the
+   * constructor and the same name (prefixed with "is_") for the
+   * tester.  The actual constructor and tester (meaning, the Exprs
+   * representing operators for these entities) aren't created until
+   * resolution time.
+   */
+  explicit DatatypeConstructor(std::string name);
+
+  /**
+   * Create a new Datatype constructor with the given name for the
+   * constructor and the given name for the tester.  The actual
+   * constructor and tester aren't created until resolution time.
+   */
+  DatatypeConstructor(std::string name, std::string tester);
+
+  /**
+   * Add an argument (i.e., a data field) of the given name and type
+   * to this Datatype constructor.  Selector names need not be unique;
+   * they are for convenience and pretty-printing only.
+   */
+  void addArg(std::string selectorName, Type selectorType);
+
+  /**
+   * Add an argument (i.e., a data field) of the given name to this
+   * Datatype constructor that refers to an as-yet-unresolved
+   * Datatype (which may be mutually-recursive).  Selector names need
+   * not be unique; they are for convenience and pretty-printing only.
+   */
+  void addArg(std::string selectorName, DatatypeUnresolvedType selectorType);
+
+  /**
+   * Add a self-referential (i.e., a data field) of the given name
+   * to this Datatype constructor that refers to the enclosing
+   * Datatype.  For example, using the familiar "nat" Datatype, to
+   * create the "pred" field for "succ" constructor, one uses
+   * succ::addArg("pred", DatatypeSelfType())---the actual Type
+   * cannot be passed because the Datatype is still under
+   * construction.  Selector names need not be unique; they are for
+   * convenience and pretty-printing only.
+   *
+   * This is a special case of
+   * DatatypeConstructor::addArg(std::string, DatatypeUnresolvedType).
+   */
+  void addArg(std::string selectorName, DatatypeSelfType);
+
+  /** Get the name of this Datatype constructor. */
+  std::string getName() const throw();
+
+  /**
+   * Get the constructor operator of this Datatype constructor.  The
+   * Datatype must be resolved.
+   */
+  Expr getConstructor() const;
+
+  /**
+   * Get the tester operator of this Datatype constructor.  The
+   * Datatype must be resolved.
+   */
+  Expr getTester() const;
+
+  /** get sygus op */
+  Expr getSygusOp() const;
+  /** get sygus let body */
+  Expr getSygusLetBody() const;
+  /** get number of sygus let args */
+  unsigned getNumSygusLetArgs() const;
+  /** get sygus let arg */
+  Expr getSygusLetArg( unsigned i ) const;
+  /** get number of let arguments that should be printed as arguments to let */
+  unsigned getNumSygusLetInputArgs() const;
+  /** is this a sygus identity function */
+  bool isSygusIdFunc() const;
+
+  /**
+   * Get the tester name for this Datatype constructor.
+   */
+  std::string getTesterName() const throw();
+
+  /**
+   * Get the number of arguments (so far) of this Datatype constructor.
+   */
+  inline size_t getNumArgs() const throw();
+
+  /**
+   * Get the specialized constructor type for a parametric
+   * constructor; this call is only permitted after resolution.
+   * Given a (concrete) returnType, the constructor's concrete
+   * type in this parametric datatype is returned.
+   *
+   * For instance, if the datatype is list[T], with constructor
+   * "cons[T]" of type "T -> list[T] -> list[T]", then calling
+   * this function with "list[int]" will return the concrete
+   * "cons" constructor type for lists of int---namely,
+   * "int -> list[int] -> list[int]".
+   */
+  Type getSpecializedConstructorType(Type returnType) const;
+
+  /**
+   * Return the cardinality of this constructor (the product of the
+   * cardinalities of its arguments).
+   */
+  Cardinality getCardinality( Type t ) const throw(IllegalArgumentException);
+
+  /**
+   * Return true iff this constructor is finite (it is nullary or
+   * each of its argument types are finite).  This function can
+   * only be called for resolved constructors.
+   */
+  bool isFinite( Type t ) const throw(IllegalArgumentException);
+  /**
+   * Return true iff this constructor is finite (it is nullary or
+   * each of its argument types are finite) under assumption
+   * uninterpreted sorts are finite.  This function can
+   * only be called for resolved constructors.
+   */
+  bool isInterpretedFinite( Type t ) const throw(IllegalArgumentException);
+
+  /**
+   * Returns true iff this Datatype constructor has already been
+   * resolved.
+   */
+  inline bool isResolved() const throw();
+
+  /** Get the beginning iterator over DatatypeConstructor args. */
+  inline iterator begin() throw();
+  /** Get the ending iterator over DatatypeConstructor args. */
+  inline iterator end() throw();
+  /** Get the beginning const_iterator over DatatypeConstructor args. */
+  inline const_iterator begin() const throw();
+  /** Get the ending const_iterator over DatatypeConstructor args. */
+  inline const_iterator end() const throw();
+
+  /** Get the ith DatatypeConstructor arg. */
+  const DatatypeConstructorArg& operator[](size_t index) const;
+
+  /**
+   * Get the DatatypeConstructor arg named.  This is a linear search
+   * through the arguments, so in the case of multiple,
+   * similarly-named arguments, the first is returned.
+   */
+  const DatatypeConstructorArg& operator[](std::string name) const;
+
+  /**
+   * Get the selector named.  This is a linear search
+   * through the arguments, so in the case of multiple,
+   * similarly-named arguments, the selector for the first
+   * is returned.
+   */
+  Expr getSelector(std::string name) const;
+
+  /**
+   * Get whether this datatype involves an external type.  If so,
+   * then we will pose additional requirements for sharing.
+   */
+  bool involvesExternalType() const;
+  bool involvesUninterpretedType() const;
+
+  /** set sygus */
+  void setSygus( Expr op, Expr let_body, std::vector< Expr >& let_args, unsigned num_let_input_argus );
+};/* class DatatypeConstructor */
+
+/**
+ * The representation of an inductive datatype.
+ *
+ * This is far more complicated than it first seems.  Consider this
+ * datatype definition:
+ *
+ *   DATATYPE nat =
+ *     succ(pred: nat)
+ *   | zero
+ *   END;
+ *
+ * You cannot define "nat" until you have a Type for it, but you
+ * cannot have a Type for it until you fill in the type of the "pred"
+ * selector, which needs the Type.  So we have a chicken-and-egg
+ * problem.  It's even more complicated when we have mutual recursion
+ * between datatypes, since the CVC presentation language does not
+ * require forward-declarations.  Here, we define trees of lists that
+ * contain trees of lists (etc):
+ *
+ *   DATATYPE
+ *     tree = node(left: tree, right: tree) | leaf(list),
+ *     list = cons(car: tree, cdr: list) | nil
+ *   END;
+ *
+ * Note that while parsing the "tree" definition, we have to take it
+ * on faith that "list" is a valid type.  We build Datatype objects to
+ * describe "tree" and "list", and their constructors and constructor
+ * arguments, but leave any unknown types (including self-references)
+ * in an "unresolved" state.  After parsing the whole DATATYPE block,
+ * we create a DatatypeType through
+ * ExprManager::mkMutualDatatypeTypes().  The ExprManager creates a
+ * DatatypeType for each, but before "releasing" this type into the
+ * wild, it does a round of in-place "resolution" on each Datatype by
+ * calling Datatype::resolve() with a map of string -> DatatypeType to
+ * allow the datatype to construct the necessary testers and
+ * selectors.
+ *
+ * An additional point to make is that we want to ease the burden on
+ * both the parser AND the users of the CVC4 API, so this class takes
+ * on the task of generating its own selectors and testers, for
+ * instance.  That means that, after reifying the Datatype with the
+ * ExprManager, the parser needs to go through the (now-resolved)
+ * Datatype and request the constructor, selector, and tester terms.
+ * See src/parser/parser.cpp for how this is done.  For API usage
+ * ideas, see test/unit/util/datatype_black.h.
+ *
+ * Datatypes may also be defined parametrically, such as this example:
+ *
+ *  DATATYPE
+ *    list[T] = cons(car : T, cdr : list[T]) | null,
+ *    tree = node(children : list[tree]) | leaf
+ *  END;
+ *
+ * Here, the definition of the parametric datatype list, where T is a type variable.
+ * In other words, this defines a family of types list[C] where C is any concrete
+ * type.  Datatypes can be parameterized over multiple type variables using the
+ * syntax sym[ T1, ..., Tn ] = ...,
+ *
+ */
+class CVC4_PUBLIC Datatype {
+  friend class DatatypeConstructor;
+public:
+  /**
+   * Get the datatype of a constructor, selector, or tester operator.
+   */
+  static const Datatype& datatypeOf(Expr item) CVC4_PUBLIC;
+
+  /**
+   * Get the index of a constructor or tester in its datatype, or the
+   * index of a selector in its constructor.  (Zero is always the
+   * first index.)
+   */
+  static size_t indexOf(Expr item) CVC4_PUBLIC;
+
+  /**
+   * Get the index of constructor corresponding to selector.  (Zero is
+   * always the first index.)
+   */
+  static size_t cindexOf(Expr item) CVC4_PUBLIC;
+
+  /** The type for iterators over constructors. */
+  typedef DatatypeConstructorIterator iterator;
+  /** The (const) type for iterators over constructors. */
+  typedef DatatypeConstructorIterator const_iterator;
+
+private:
+  std::string d_name;
+  std::vector<Type> d_params;
+  bool d_isCo;
+  bool d_isTuple;
+  bool d_isRecord;
+  Record * d_record;
+  std::vector<DatatypeConstructor> d_constructors;
+  bool d_resolved;
+  Type d_self;
+  bool d_involvesExt;
+  bool d_involvesUt;
+  /** information for sygus */
+  Type d_sygus_type;
+  Expr d_sygus_bvl;
+  bool d_sygus_allow_const;
+  bool d_sygus_allow_all;
+
+  // "mutable" because computing the cardinality can be expensive,
+  // and so it's computed just once, on demand---this is the cache
+  mutable Cardinality d_card;
+
+  // is this type a recursive singleton type
+  mutable std::map< Type, int > d_card_rec_singleton;
+  // if d_card_rec_singleton is true,
+  // infinite cardinality depends on at least one of the following uninterpreted sorts having cardinality > 1
+  mutable std::map< Type, std::vector< Type > > d_card_u_assume;
+  // is this well-founded
+  mutable int d_well_founded;
+  // ground term for this datatype
+  mutable std::map< Type, Expr > d_ground_term;
+
+  /**
+   * Datatypes refer to themselves, recursively, and we have a
+   * chicken-and-egg problem.  The DatatypeType around the Datatype
+   * cannot exist until the Datatype is finalized, and the Datatype
+   * cannot refer to the DatatypeType representing itself until it
+   * exists.  resolve() is called by the ExprManager when a Type is
+   * ultimately requested of the Datatype specification (that is, when
+   * ExprManager::mkDatatypeType() or ExprManager::mkMutualDatatypeTypes()
+   * is called).  Has the effect of freezing the object, too; that is,
+   * addConstructor() will fail after a call to resolve().
+   *
+   * The basic goal of resolution is to assign constructors, selectors,
+   * and testers.  To do this, any UnresolvedType/SelfType references
+   * must be cleared up.  This is the purpose of the "resolutions" map;
+   * it includes any mutually-recursive datatypes that are currently
+   * under resolution.  The four vectors come in two pairs (so, really
+   * they are two maps).  placeholders->replacements give type variables
+   * that should be resolved in the case of parametric datatypes.
+   *
+   * @param em the ExprManager at play
+   * @param resolutions a map of strings to DatatypeTypes currently under resolution
+   * @param placeholders the types in these Datatypes under resolution that must be replaced
+   * @param replacements the corresponding replacements
+   * @param paramTypes the sort constructors in these Datatypes under resolution that must be replaced
+   * @param paramReplacements the corresponding (parametric) DatatypeTypes
+   */
+  void resolve(ExprManager* em,
+               const std::map<std::string, DatatypeType>& resolutions,
+               const std::vector<Type>& placeholders,
+               const std::vector<Type>& replacements,
+               const std::vector< SortConstructorType >& paramTypes,
+               const std::vector< DatatypeType >& paramReplacements)
+    throw(IllegalArgumentException, DatatypeResolutionException);
+  friend class ExprManager;// for access to resolve()
+
+  /** compute the cardinality of this datatype */
+  Cardinality computeCardinality( Type t, std::vector< Type >& processing ) const throw(IllegalArgumentException);
+  /** compute whether this datatype is a recursive singleton */
+  bool computeCardinalityRecSingleton( Type t, std::vector< Type >& processing, std::vector< Type >& u_assume ) const throw(IllegalArgumentException);
+  /** compute whether this datatype is well-founded */
+  bool computeWellFounded( std::vector< Type >& processing ) const throw(IllegalArgumentException);
+  /** compute ground term */
+  Expr computeGroundTerm( Type t, std::vector< Type >& processing ) const throw(IllegalArgumentException);
+public:
+
+  /** Create a new Datatype of the given name. */
+  inline explicit Datatype(std::string name, bool isCo = false);
+
+  /**
+   * Create a new Datatype of the given name, with the given
+   * parameterization.
+   */
+  inline Datatype(std::string name, const std::vector<Type>& params, bool isCo = false);
+
+  ~Datatype();
+
+  /**
+   * Add a constructor to this Datatype.  Constructor names need not
+   * be unique; they are for convenience and pretty-printing only.
+   */
+  void addConstructor(const DatatypeConstructor& c);
+
+  /** set the sygus information of this datatype
+   *    st : the builtin type for this grammar
+   *    bvl : the list of arguments for the synth-fun
+   *    allow_const : whether all constants are (implicitly) included in the grammar
+   */
+  void setSygus( Type st, Expr bvl, bool allow_const, bool allow_all );
+
+  /** set tuple */
+  void setTuple();
+
+  /** set tuple */
+  void setRecord();
+
+  /** Get the name of this Datatype. */
+  inline std::string getName() const throw();
+
+  /** Get the number of constructors (so far) for this Datatype. */
+  inline size_t getNumConstructors() const throw();
+
+  /** Is this datatype parametric? */
+  inline bool isParametric() const throw();
+
+  /** Get the nubmer of type parameters */
+  inline size_t getNumParameters() const throw();
+
+  /** Get parameter */
+  inline Type getParameter( unsigned int i ) const;
+
+  /** Get parameters */
+  inline std::vector<Type> getParameters() const;
+
+  /** is this a co-datatype? */
+  inline bool isCodatatype() const;
+
+  /** is this a sygus datatype? */
+  inline bool isSygus() const;
+
+  /** is this a tuple datatype? */
+  inline bool isTuple() const;
+
+  /** is this a record datatype? */
+  inline bool isRecord() const;
+
+  /** get the record representation for this datatype */
+  inline Record * getRecord() const;
+
+  /**
+   * Return the cardinality of this datatype (the sum of the
+   * cardinalities of its constructors).  The Datatype must be
+   * resolved.
+   * Version taking Type t is required for parametric datatypes.
+   */
+  Cardinality getCardinality( Type t ) const throw(IllegalArgumentException);
+  Cardinality getCardinality() const throw(IllegalArgumentException);
+
+  /**
+   * Return  true iff this  Datatype is  finite (all  constructors are
+   * finite,  i.e., there  are finitely  many ground  terms).   If the
+   * datatype is  not well-founded, this function  returns false.  The
+   * Datatype must be resolved or an exception is thrown.
+   * Version taking Type t is required for parametric.
+   */
+  bool isFinite( Type t ) const throw(IllegalArgumentException);
+  bool isFinite() const throw(IllegalArgumentException);
+  
+  /**
+   * Return  true iff this  Datatype is  finite (all  constructors are
+   * finite,  i.e., there  are finitely  many ground  terms) under the
+   * assumption unintepreted sorts are finite.   If the
+   * datatype is  not well-founded, this function  returns false.  The
+   * Datatype must be resolved or an exception is thrown.
+   * Version taking Type t is required for parametric datatypes.
+   */
+  bool isInterpretedFinite( Type t ) const throw(IllegalArgumentException);
+  bool isInterpretedFinite() const throw(IllegalArgumentException);
+
+  /**
+   * Return true iff this datatype is well-founded (there exist ground
+   * terms).  The Datatype must be resolved or an exception is thrown.
+   */
+  bool isWellFounded() const throw(IllegalArgumentException);
+
+  /**
+   * Return true iff this datatype is a recursive singleton
+   * Version taking Type t is required for parametric datatypes.
+   */
+  bool isRecursiveSingleton( Type t ) const throw(IllegalArgumentException);
+  bool isRecursiveSingleton() const throw(IllegalArgumentException);
+
+
+  /** 
+   * Get recursive singleton argument types (uninterpreted sorts that the singleton cardinality 
+   * of this datatype is dependent upon).
+   * Versions taking Type t are required for parametric datatypes.
+  */
+  unsigned getNumRecursiveSingletonArgTypes( Type t ) const throw(IllegalArgumentException);
+  Type getRecursiveSingletonArgType( Type t, unsigned i ) const throw(IllegalArgumentException);
+  unsigned getNumRecursiveSingletonArgTypes() const throw(IllegalArgumentException);
+  Type getRecursiveSingletonArgType( unsigned i ) const throw(IllegalArgumentException);
+
+  /**
+   * Construct and return a ground term of this Datatype.  The
+   * Datatype must be both resolved and well-founded, or else an
+   * exception is thrown.
+   */
+  Expr mkGroundTerm( Type t ) const throw(IllegalArgumentException);
+
+  /**
+   * Get the DatatypeType associated to this Datatype.  Can only be
+   * called post-resolution.
+   */
+  DatatypeType getDatatypeType() const throw(IllegalArgumentException);
+
+  /**
+   * Get the DatatypeType associated to this (parameterized) Datatype.  Can only be
+   * called post-resolution.
+   */
+  DatatypeType getDatatypeType(const std::vector<Type>& params) const throw(IllegalArgumentException);
+
+  /**
+   * Return true iff the two Datatypes are the same.
+   *
+   * We need == for mkConst(Datatype) to properly work---since if the
+   * Datatype Expr requested is the same as an already-existing one,
+   * we need to return that one.  For that, we have a hash and
+   * operator==.  We provide != for symmetry.  We don't provide
+   * operator<() etc. because given two Datatype Exprs, you could
+   * simply compare those rather than the (bare) Datatypes.  This
+   * means, though, that Datatype cannot be stored in a sorted list or
+   * RB tree directly, so maybe we can consider adding these
+   * comparison operators later on.
+   */
+  bool operator==(const Datatype& other) const throw();
+  /** Return true iff the two Datatypes are not the same. */
+  inline bool operator!=(const Datatype& other) const throw();
+
+  /** Return true iff this Datatype has already been resolved. */
+  inline bool isResolved() const throw();
+
+  /** Get the beginning iterator over DatatypeConstructors. */
+  inline iterator begin() throw();
+  /** Get the ending iterator over DatatypeConstructors. */
+  inline iterator end() throw();
+  /** Get the beginning const_iterator over DatatypeConstructors. */
+  inline const_iterator begin() const throw();
+  /** Get the ending const_iterator over DatatypeConstructors. */
+  inline const_iterator end() const throw();
+
+  /** Get the ith DatatypeConstructor. */
+  const DatatypeConstructor& operator[](size_t index) const;
+
+  /**
+   * Get the DatatypeConstructor named.  This is a linear search
+   * through the constructors, so in the case of multiple,
+   * similarly-named constructors, the first is returned.
+   */
+  const DatatypeConstructor& operator[](std::string name) const;
+
+  /**
+   * Get the constructor operator for the named constructor.
+   * This is a linear search through the constructors, so in
+   * the case of multiple, similarly-named constructors, the
+   * first is returned.
+   *
+   * This Datatype must be resolved.
+   */
+  Expr getConstructor(std::string name) const;
+
+  /** get sygus type */
+  Type getSygusType() const;
+  /** get sygus var list */
+  Expr getSygusVarList() const;
+  /** does it allow constants */
+  bool getSygusAllowConst() const;
+  /** does it allow constants */
+  bool getSygusAllowAll() const;
+
+  /**
+   * Get whether this datatype involves an external type.  If so,
+   * then we will pose additional requirements for sharing.
+   */
+  bool involvesExternalType() const;
+  bool involvesUninterpretedType() const;
+
+};/* class Datatype */
+
+/**
+ * A hash function for Datatypes.  Needed to store them in hash sets
+ * and hash maps.
+ */
+struct CVC4_PUBLIC DatatypeHashFunction {
+  inline size_t operator()(const Datatype& dt) const {
+    return StringHashFunction()(dt.getName());
+  }
+  inline size_t operator()(const Datatype* dt) const {
+    return StringHashFunction()(dt->getName());
+  }
+  inline size_t operator()(const DatatypeConstructor& dtc) const {
+    return StringHashFunction()(dtc.getName());
+  }
+  inline size_t operator()(const DatatypeConstructor* dtc) const {
+    return StringHashFunction()(dtc->getName());
+  }
+};/* struct DatatypeHashFunction */
+
+
+
+/* stores an index to Datatype residing in NodeManager */
+class CVC4_PUBLIC DatatypeIndexConstant {
+public:
+
+  DatatypeIndexConstant(unsigned index) throw(IllegalArgumentException);
+
+  ~DatatypeIndexConstant() throw() { }
+
+  const unsigned getIndex() const throw() {
+    return d_index;
+  }
+  bool operator==(const DatatypeIndexConstant& uc) const throw() {
+    return d_index == uc.d_index;
+  }
+  bool operator!=(const DatatypeIndexConstant& uc) const throw() {
+    return !(*this == uc);
+  }
+  bool operator<(const DatatypeIndexConstant& uc) const throw() {
+    return d_index < uc.d_index;
+  }
+  bool operator<=(const DatatypeIndexConstant& uc) const throw() {
+    return d_index <= uc.d_index;
+  }
+  bool operator>(const DatatypeIndexConstant& uc) const throw() {
+    return !(*this <= uc);
+  }
+  bool operator>=(const DatatypeIndexConstant& uc) const throw() {
+    return !(*this < uc);
+  }
+private:
+  const unsigned d_index;
+};/* class DatatypeIndexConstant */
+
+std::ostream& operator<<(std::ostream& out, const DatatypeIndexConstant& dic) CVC4_PUBLIC;
+
+struct CVC4_PUBLIC DatatypeIndexConstantHashFunction {
+  inline size_t operator()(const DatatypeIndexConstant& dic) const {
+    return IntegerHashFunction()(dic.getIndex());
+  }
+};/* struct DatatypeIndexConstantHashFunction */
+
+
+
+// FUNCTION DECLARATIONS FOR OUTPUT STREAMS
+
+std::ostream& operator<<(std::ostream& os, const Datatype& dt) CVC4_PUBLIC;
+std::ostream& operator<<(std::ostream& os, const DatatypeConstructor& ctor) CVC4_PUBLIC;
+std::ostream& operator<<(std::ostream& os, const DatatypeConstructorArg& arg) CVC4_PUBLIC;
+
+// INLINE FUNCTIONS
+
+inline DatatypeResolutionException::DatatypeResolutionException(std::string msg) :
+  Exception(msg) {
+}
+
+inline DatatypeUnresolvedType::DatatypeUnresolvedType(std::string name) :
+  d_name(name) {
+}
+
+inline std::string DatatypeUnresolvedType::getName() const throw() {
+  return d_name;
+}
+
+inline Datatype::Datatype(std::string name, bool isCo) :
+  d_name(name),
+  d_params(),
+  d_isCo(isCo),
+  d_isTuple(false),
+  d_isRecord(false),
+  d_record(NULL),
+  d_constructors(),
+  d_resolved(false),
+  d_self(),
+  d_involvesExt(false),
+  d_involvesUt(false),
+  d_card(CardinalityUnknown()),
+  d_well_founded(0) {
+}
+
+inline Datatype::Datatype(std::string name, const std::vector<Type>& params, bool isCo) :
+  d_name(name),
+  d_params(params),
+  d_isCo(isCo),
+  d_isTuple(false),
+  d_isRecord(false),
+  d_record(NULL),
+  d_constructors(),
+  d_resolved(false),
+  d_self(),
+  d_involvesExt(false),
+  d_involvesUt(false),
+  d_card(CardinalityUnknown()),
+  d_well_founded(0) {
+}
+
+inline std::string Datatype::getName() const throw() {
+  return d_name;
+}
+
+inline size_t Datatype::getNumConstructors() const throw() {
+  return d_constructors.size();
+}
+
+inline bool Datatype::isParametric() const throw() {
+  return d_params.size() > 0;
+}
+
+inline size_t Datatype::getNumParameters() const throw() {
+  return d_params.size();
+}
+
+inline Type Datatype::getParameter( unsigned int i ) const {
+  CheckArgument(isParametric(), this,
+                "Cannot get type parameter of a non-parametric datatype.");
+  CheckArgument(i < d_params.size(), i,
+                "Type parameter index out of range for datatype.");
+  return d_params[i];
+}
+
+inline std::vector<Type> Datatype::getParameters() const {
+  CheckArgument(isParametric(), this,
+                "Cannot get type parameters of a non-parametric datatype.");
+  return d_params;
+}
+
+inline bool Datatype::isCodatatype() const {
+  return d_isCo;
+}
+
+inline bool Datatype::isSygus() const {
+  return !d_sygus_type.isNull();
+}
+
+inline bool Datatype::isTuple() const {
+  return d_isTuple;
+}
+
+inline bool Datatype::isRecord() const {
+  return d_isRecord;
+}
+
+inline Record * Datatype::getRecord() const {
+  return d_record;
+}
+
+inline bool Datatype::operator!=(const Datatype& other) const throw() {
+  return !(*this == other);
+}
+
+inline bool Datatype::isResolved() const throw() {
+  return d_resolved;
+}
+
+inline Datatype::iterator Datatype::begin() throw() {
+  return iterator(d_constructors, true);
+}
+
+inline Datatype::iterator Datatype::end() throw() {
+  return iterator(d_constructors, false);
+}
+
+inline Datatype::const_iterator Datatype::begin() const throw() {
+  return const_iterator(d_constructors, true);
+}
+
+inline Datatype::const_iterator Datatype::end() const throw() {
+  return const_iterator(d_constructors, false);
+}
+
+inline bool DatatypeConstructor::isResolved() const throw() {
+  return !d_tester.isNull();
+}
+
+inline size_t DatatypeConstructor::getNumArgs() const throw() {
+  return d_args.size();
+}
+
+inline bool DatatypeConstructorArg::isResolved() const throw() {
+  // We could just write:
+  //
+  //   return !d_selector.isNull() && d_selector.getType().isSelector();
+  //
+  // HOWEVER, this causes problems in ExprManager tear-down, because
+  // the attributes are removed before the pool is purged.  When the
+  // pool is purged, this triggers an equality test between Datatypes,
+  // and this triggers a call to isResolved(), which breaks because
+  // d_selector has no type after attributes are stripped.
+  //
+  // This problem, coupled with the fact that this function is called
+  // _often_, means we should just use a boolean flag.
+  //
+  return d_resolved;
+}
+
+inline DatatypeConstructor::iterator DatatypeConstructor::begin() throw() {
+  return iterator(d_args, true);
+}
+
+inline DatatypeConstructor::iterator DatatypeConstructor::end() throw() {
+  return iterator(d_args, false);
+}
+
+inline DatatypeConstructor::const_iterator DatatypeConstructor::begin() const throw() {
+  return const_iterator(d_args, true);
+}
+
+inline DatatypeConstructor::const_iterator DatatypeConstructor::end() const throw() {
+  return const_iterator(d_args, false);
+}
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__DATATYPE_H */
diff --git a/src/expr/datatype.i b/src/expr/datatype.i
new file mode 100644
index 0000000..a903e02
--- /dev/null
+++ b/src/expr/datatype.i
@@ -0,0 +1,189 @@
+%{
+#include "expr/datatype.h"
+
+#ifdef SWIGJAVA
+
+#include "bindings/java_iterator_adapter.h"
+#include "bindings/java_stream_adapters.h"
+
+#endif /* SWIGJAVA */
+%}
+
+%extend std::vector< CVC4::Datatype > {
+  /* These member functions have slightly different signatures in
+   * different swig language packages.  The underlying issue is that
+   * DatatypeConstructor doesn't have a default constructor */
+#if defined(SWIGOCAML) || defined(SWIGPERL) || defined(SWIGTCL)
+  %ignore vector(unsigned int size = 0);
+  %ignore set( int i, const CVC4::Datatype &x );
+  %ignore to_array();
+#endif /* SWIGOCAML || SWIGPERL || SWIGTCL */
+  %ignore vector(size_type);// java/python/perl/others?
+  %ignore resize(size_type);// java/python/perl/others?
+  %ignore set(int i, const CVC4::Datatype& x);
+  %ignore to_array();
+};
+%template(vectorDatatype) std::vector< CVC4::Datatype >;
+
+%extend std::vector< CVC4::DatatypeConstructor > {
+  /* These member functions have slightly different signatures in
+   * different swig language packages.  The underlying issue is that
+   * DatatypeConstructor doesn't have a default constructor */
+#if defined(SWIGOCAML) || defined(SWIGPERL) || defined(SWIGTCL)
+  %ignore vector(unsigned int size = 0);
+  %ignore set( int i, const CVC4::DatatypeConstructor &x );
+  %ignore to_array();
+#endif /* SWIGOCAML || SWIGPERL || SWIGTCL */
+  %ignore vector(size_type);// java/python/perl/others?
+  %ignore resize(size_type);// java/python/perl/others?
+  %ignore set(int i, const CVC4::Datatype::Constructor& x);
+  %ignore to_array();
+};
+//%template(vectorDatatypeConstructor) std::vector< CVC4::DatatypeConstructor >;
+
+%rename(equals) CVC4::Datatype::operator==(const Datatype&) const;
+%ignore CVC4::Datatype::operator!=(const Datatype&) const;
+
+%ignore CVC4::Datatype::begin();
+%ignore CVC4::Datatype::end();
+%ignore CVC4::Datatype::begin() const;
+%ignore CVC4::Datatype::end() const;
+
+%rename(get) CVC4::Datatype::operator[](size_t) const;
+%rename(get) CVC4::Datatype::operator[](std::string) const;
+
+%rename(apply) CVC4::DatatypeHashFunction::operator()(const Datatype&) const;
+%ignore CVC4::DatatypeHashFunction::operator()(const Datatype*) const;
+%rename(apply) CVC4::DatatypeHashFunction::operator()(const DatatypeConstructor&) const;
+%ignore CVC4::DatatypeHashFunction::operator()(const DatatypeConstructor*) const;
+
+%ignore CVC4::DatatypeConstructor::begin();
+%ignore CVC4::DatatypeConstructor::end();
+%ignore CVC4::DatatypeConstructor::begin() const;
+%ignore CVC4::DatatypeConstructor::end() const;
+
+%rename(get) CVC4::DatatypeConstructor::operator[](size_t) const;
+%rename(get) CVC4::DatatypeConstructor::operator[](std::string) const;
+
+%ignore CVC4::operator<<(std::ostream&, const Datatype&);
+%ignore CVC4::operator<<(std::ostream&, const DatatypeConstructor&);
+%ignore CVC4::operator<<(std::ostream&, const DatatypeConstructorArg&);
+
+%ignore CVC4::DatatypeConstructorIterator;
+%ignore CVC4::DatatypeConstructorArgIterator;
+
+%feature("valuewrapper") CVC4::DatatypeUnresolvedType;
+%feature("valuewrapper") CVC4::DatatypeConstructor;
+
+
+%rename(equals) CVC4::DatatypeIndexConstant::operator==(const DatatypeIndexConstant&) const;
+%ignore CVC4::DatatypeIndexConstant::operator!=(const DatatypeIndexConstant&) const;
+
+%rename(less) CVC4::DatatypeIndexConstant::operator<(const DatatypeIndexConstant&) const;
+%rename(lessEqual) CVC4::DatatypeIndexConstant::operator<=(const DatatypeIndexConstant&) const;
+%rename(greater) CVC4::DatatypeIndexConstant::operator>(const DatatypeIndexConstant&) const;
+%rename(greaterEqual) CVC4::DatatypeIndexConstant::operator>=(const DatatypeIndexConstant&) const;
+
+%rename(apply) CVC4::DatatypeIndexConstantFunction::operator()(const DatatypeIndexConstant&) const;
+
+%ignore CVC4::operator<<(std::ostream& out, const DatatypeIndexConstant& es);
+
+
+#ifdef SWIGJAVA
+
+// Instead of Datatype::begin() and end(), create an
+// iterator() method on the Java side that returns a Java-style
+// Iterator.
+%extend CVC4::Datatype {
+  CVC4::JavaIteratorAdapter<CVC4::Datatype> iterator() {
+    return CVC4::JavaIteratorAdapter<CVC4::Datatype>(*$self);
+  }
+
+  std::string toString() const {
+    std::stringstream ss;
+    ss << *$self;
+    return ss.str();
+  }
+}
+%extend CVC4::DatatypeConstructor {
+  CVC4::JavaIteratorAdapter<CVC4::DatatypeConstructor> iterator() {
+    return CVC4::JavaIteratorAdapter<CVC4::DatatypeConstructor>(*$self);
+  }
+
+  std::string toString() const {
+    std::stringstream ss;
+    ss << *$self;
+    return ss.str();
+  }
+}
+%extend CVC4::DatatypeConstructorArg {
+  std::string toString() const {
+    std::stringstream ss;
+    ss << *$self;
+    return ss.str();
+  }
+}
+
+// Datatype is "iterable" on the Java side
+%typemap(javainterfaces) CVC4::Datatype "java.lang.Iterable<DatatypeConstructor>";
+%typemap(javainterfaces) CVC4::DatatypeConstructor "java.lang.Iterable<DatatypeConstructorArg>";
+
+// the JavaIteratorAdapter should not be public, and implements Iterator
+%typemap(javaclassmodifiers) CVC4::JavaIteratorAdapter<CVC4::Datatype> "class";
+%typemap(javaclassmodifiers) CVC4::JavaIteratorAdapter<CVC4::DatatypeConstructor> "class";
+%typemap(javainterfaces) CVC4::JavaIteratorAdapter<CVC4::Datatype> "java.util.Iterator<DatatypeConstructor>";
+%typemap(javainterfaces) CVC4::JavaIteratorAdapter<CVC4::DatatypeConstructor> "java.util.Iterator<DatatypeConstructorArg>";
+// add some functions to the Java side (do it here because there's no way to do these in C++)
+%typemap(javacode) CVC4::JavaIteratorAdapter<CVC4::Datatype> "
+  public void remove() {
+    throw new java.lang.UnsupportedOperationException();
+  }
+
+  public DatatypeConstructor next() {
+    if(hasNext()) {
+      return getNext();
+    } else {
+      throw new java.util.NoSuchElementException();
+    }
+  }
+"
+%typemap(javacode) CVC4::JavaIteratorAdapter<CVC4::DatatypeConstructor> "
+  public void remove() {
+    throw new java.lang.UnsupportedOperationException();
+  }
+
+  public DatatypeConstructorArg next() {
+    if(hasNext()) {
+      return getNext();
+    } else {
+      throw new java.util.NoSuchElementException();
+    }
+  }
+"
+// getNext() just allows C++ iterator access from Java-side next(), make it private
+%javamethodmodifiers CVC4::JavaIteratorAdapter<CVC4::Datatype>::getNext() "private";
+%javamethodmodifiers CVC4::JavaIteratorAdapter<CVC4::DatatypeConstructor>::getNext() "private";
+
+// map the types appropriately.
+%typemap(jni) CVC4::Datatype::iterator::value_type "jobject";
+%typemap(jtype) CVC4::Datatype::iterator::value_type "edu.nyu.acsys.CVC4.DatatypeConstructor";
+%typemap(jstype) CVC4::Datatype::iterator::value_type "edu.nyu.acsys.CVC4.DatatypeConstructor";
+%typemap(javaout) CVC4::Datatype::iterator::value_type { return $jnicall; }
+%typemap(jni) CVC4::DatatypeConstructor::iterator::value_type "jobject";
+%typemap(jtype) CVC4::DatatypeConstructor::iterator::value_type "edu.nyu.acsys.CVC4.DatatypeConstructorArg";
+%typemap(jstype) CVC4::DatatypeConstructor::iterator::value_type "edu.nyu.acsys.CVC4.DatatypeConstructorArg";
+%typemap(javaout) CVC4::DatatypeConstructor::iterator::value_type { return $jnicall; }
+
+#endif /* SWIGJAVA */
+
+%include "expr/datatype.h"
+
+#ifdef SWIGJAVA
+
+%include "bindings/java_iterator_adapter.h"
+%include "bindings/java_stream_adapters.h"
+
+%template(JavaIteratorAdapter_Datatype) CVC4::JavaIteratorAdapter<CVC4::Datatype>;
+%template(JavaIteratorAdapter_DatatypeConstructor) CVC4::JavaIteratorAdapter<CVC4::DatatypeConstructor>;
+
+#endif /* SWIGJAVA */
diff --git a/src/expr/emptyset.cpp b/src/expr/emptyset.cpp
new file mode 100644
index 0000000..23e6df7
--- /dev/null
+++ b/src/expr/emptyset.cpp
@@ -0,0 +1,86 @@
+/*********************                                                        */
+/*! \file emptyset.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Kshitij Bansal, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "expr/emptyset.h"
+
+#include <iosfwd>
+
+#include "expr/expr.h"
+#include "expr/type.h"
+
+namespace CVC4 {
+
+std::ostream& operator<<(std::ostream& out, const EmptySet& asa) {
+  return out << "emptyset(" << asa.getType() << ')';
+}
+
+size_t EmptySetHashFunction::operator()(const EmptySet& es) const {
+  return TypeHashFunction()(es.getType());
+}
+
+/**
+ * Constructs an emptyset of the specified type. Note that the argument
+ * is the type of the set itself, NOT the type of the elements.
+ */
+EmptySet::EmptySet(const SetType& setType)
+    : d_type(new SetType(setType))
+{ }
+
+EmptySet::EmptySet(const EmptySet& es)
+    : d_type(new SetType(es.getType()))
+{ }
+
+EmptySet& EmptySet::operator=(const EmptySet& es) {
+  (*d_type) = es.getType();
+  return *this;
+}
+
+
+EmptySet::~EmptySet() throw() {
+  delete d_type;
+}
+
+const SetType& EmptySet::getType() const {
+  return *d_type;
+}
+
+bool EmptySet::operator==(const EmptySet& es) const throw() {
+  return getType() == es.getType();
+}
+
+bool EmptySet::operator!=(const EmptySet& es) const throw() {
+  return !(*this == es);
+}
+
+bool EmptySet::operator<(const EmptySet& es) const throw() {
+  return getType() < es.getType();
+}
+
+bool EmptySet::operator<=(const EmptySet& es) const throw() {
+  return getType() <= es.getType();
+}
+
+bool EmptySet::operator>(const EmptySet& es) const throw() {
+  return !(*this <= es);
+}
+
+bool EmptySet::operator>=(const EmptySet& es) const throw() {
+  return !(*this < es);
+}
+
+
+}/* CVC4 namespace */
diff --git a/src/expr/emptyset.h b/src/expr/emptyset.h
new file mode 100644
index 0000000..a606951
--- /dev/null
+++ b/src/expr/emptyset.h
@@ -0,0 +1,68 @@
+/*********************                                                        */
+/*! \file emptyset.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Kshitij Bansal, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_public.h"
+
+#pragma once
+
+#include <iosfwd>
+
+namespace CVC4 {
+  // messy; Expr needs EmptySet (because it's the payload of a
+  // CONSTANT-kinded expression), EmptySet needs SetType, and
+  // SetType needs Expr. Using a forward declaration here in
+  // order to break the build cycle.
+  // Uses of SetType need to be as an incomplete type throughout
+  // this header.
+  class SetType;
+}/* CVC4 namespace */
+
+namespace CVC4 {
+class CVC4_PUBLIC EmptySet {
+public:
+  /**
+   * Constructs an emptyset of the specified type. Note that the argument
+   * is the type of the set itself, NOT the type of the elements.
+   */
+  EmptySet(const SetType& setType);
+  ~EmptySet() throw();
+  EmptySet(const EmptySet& other);
+  EmptySet& operator=(const EmptySet& other);
+
+  const SetType& getType() const;
+  bool operator==(const EmptySet& es) const throw();
+  bool operator!=(const EmptySet& es) const throw();
+  bool operator<(const EmptySet& es) const throw();
+  bool operator<=(const EmptySet& es) const throw();
+  bool operator>(const EmptySet& es) const throw() ;
+  bool operator>=(const EmptySet& es) const throw();
+
+private:
+  /** Pointer to the SetType node. This is never NULL. */
+  SetType* d_type;
+
+  EmptySet();
+
+};/* class EmptySet */
+
+std::ostream& operator<<(std::ostream& out, const EmptySet& es) CVC4_PUBLIC;
+
+struct CVC4_PUBLIC EmptySetHashFunction {
+  size_t operator()(const EmptySet& es) const;
+};/* struct EmptySetHashFunction */
+
+}/* CVC4 namespace */
diff --git a/src/expr/emptyset.i b/src/expr/emptyset.i
new file mode 100644
index 0000000..ada3dd5
--- /dev/null
+++ b/src/expr/emptyset.i
@@ -0,0 +1,17 @@
+%{
+#include "expr/emptyset.h"
+%}
+
+%rename(equals) CVC4::EmptySet::operator==(const EmptySet&) const;
+%ignore CVC4::EmptySet::operator!=(const EmptySet&) const;
+
+%rename(less) CVC4::EmptySet::operator<(const EmptySet&) const;
+%rename(lessEqual) CVC4::EmptySet::operator<=(const EmptySet&) const;
+%rename(greater) CVC4::EmptySet::operator>(const EmptySet&) const;
+%rename(greaterEqual) CVC4::EmptySet::operator>=(const EmptySet&) const;
+
+%rename(apply) CVC4::EmptySetHashFunction::operator()(const EmptySet&) const;
+
+%ignore CVC4::operator<<(std::ostream& out, const EmptySet& es);
+
+%include "expr/emptyset.h"
diff --git a/src/expr/expr.i b/src/expr/expr.i
new file mode 100644
index 0000000..49cb243
--- /dev/null
+++ b/src/expr/expr.i
@@ -0,0 +1,171 @@
+%{
+#include "expr/expr.h"
+
+#ifdef SWIGJAVA
+
+#include "bindings/java_iterator_adapter.h"
+#include "bindings/java_stream_adapters.h"
+
+#endif /* SWIGJAVA */
+%}
+
+#ifdef SWIGPYTHON
+%rename(doApply) CVC4::ExprHashFunction::operator()(CVC4::Expr) const;
+#else /* SWIGPYTHON */
+%rename(apply) CVC4::ExprHashFunction::operator()(CVC4::Expr) const;
+#endif /* SWIGPYTHON */
+
+#ifdef SWIGJAVA
+%typemap(javabody) CVC4::Expr %{
+  private long swigCPtr;
+  protected boolean swigCMemOwn;
+
+  protected $javaclassname(long cPtr, boolean cMemoryOwn) {
+    swigCMemOwn = cMemoryOwn;
+    swigCPtr = cPtr;
+    this.em = SmtEngine.mkRef(getExprManager()); // keep ref to em in SWIG proxy class
+  }
+
+  protected static long getCPtr($javaclassname obj) {
+    return (obj == null) ? 0 : obj.swigCPtr;
+  }
+%}
+%javamethodmodifiers CVC4::Expr::operator=(const Expr&) "protected";
+%typemap(javacode) CVC4::Expr %{
+  // a ref is kept here to keep Java GC from collecting the ExprManager
+  // before the Expr
+  private Object em;
+
+  public Expr assign(Expr e) {
+    Expr r = assignInternal(e);
+    this.em = SmtEngine.mkRef(getExprManager()); // keep ref to em in SWIG proxy class
+    return r;
+  }
+%}
+%typemap(javaconstruct) Expr {
+    this($imcall, true);
+    this.em = SmtEngine.mkRef(getExprManager()); // keep ref to em in SWIG proxy class
+  }
+%typemap(javadestruct, methodname="delete", methodmodifiers="public synchronized") CVC4::Expr {
+    SmtEngine.dlRef(em);
+    em = null;
+    if (swigCPtr != 0) {
+      if (swigCMemOwn) {
+        swigCMemOwn = false;
+        CVC4JNI.delete_Expr(swigCPtr);
+      }
+      swigCPtr = 0;
+    }
+  }
+#endif /* SWIGJAVA */
+
+%ignore CVC4::operator<<(std::ostream&, const Expr&);
+%ignore CVC4::operator<<(std::ostream&, const TypeCheckingException&);
+
+%ignore CVC4::expr::operator<<(std::ostream&, ExprSetDepth);
+%ignore CVC4::expr::operator<<(std::ostream&, ExprPrintTypes);
+%ignore CVC4::expr::operator<<(std::ostream&, ExprDag);
+%ignore CVC4::expr::operator<<(std::ostream&, ExprSetLanguage);
+
+%rename(assignInternal) CVC4::Expr::operator=(const Expr&);
+%rename(equals) CVC4::Expr::operator==(const Expr&) const;
+%ignore CVC4::Expr::operator!=(const Expr&) const;
+%rename(less) CVC4::Expr::operator<(const Expr&) const;
+%rename(lessEqual) CVC4::Expr::operator<=(const Expr&) const;
+%rename(greater) CVC4::Expr::operator>(const Expr&) const;
+%rename(greaterEqual) CVC4::Expr::operator>=(const Expr&) const;
+
+%rename(getChild) CVC4::Expr::operator[](unsigned i) const;
+%ignore CVC4::Expr::operator bool() const;// can just use isNull()
+
+namespace CVC4 {
+  namespace expr {
+    %ignore exportInternal;
+  }/* CVC4::expr namespace */
+}/* CVC4 namespace */
+
+#ifdef SWIGJAVA
+
+// Instead of Expr::begin() and end(), create an
+// iterator() method on the Java side that returns a Java-style
+// Iterator.
+%ignore CVC4::Expr::begin() const;
+%ignore CVC4::Expr::end() const;
+%extend CVC4::Expr {
+  CVC4::JavaIteratorAdapter<CVC4::Expr> iterator() {
+    return CVC4::JavaIteratorAdapter<CVC4::Expr>(*$self);
+  }
+}
+
+// Expr is "iterable" on the Java side
+%typemap(javainterfaces) CVC4::Expr "java.lang.Iterable<edu.nyu.acsys.CVC4.Expr>";
+
+// the JavaIteratorAdapter should not be public, and implements Iterator
+%typemap(javaclassmodifiers) CVC4::JavaIteratorAdapter<CVC4::Expr> "class";
+%typemap(javainterfaces) CVC4::JavaIteratorAdapter<CVC4::Expr> "java.util.Iterator<edu.nyu.acsys.CVC4.Expr>";
+// add some functions to the Java side (do it here because there's no way to do these in C++)
+%typemap(javacode) CVC4::JavaIteratorAdapter<CVC4::Expr> "
+  public void remove() {
+    throw new java.lang.UnsupportedOperationException();
+  }
+
+  public edu.nyu.acsys.CVC4.Expr next() {
+    if(hasNext()) {
+      return getNext();
+    } else {
+      throw new java.util.NoSuchElementException();
+    }
+  }
+"
+// getNext() just allows C++ iterator access from Java-side next(), make it private
+%javamethodmodifiers CVC4::JavaIteratorAdapter<CVC4::Expr>::getNext() "private";
+
+// map the types appropriately
+%typemap(jni) CVC4::Expr::const_iterator::value_type "jobject";
+%typemap(jtype) CVC4::Expr::const_iterator::value_type "edu.nyu.acsys.CVC4.Expr";
+%typemap(jstype) CVC4::Expr::const_iterator::value_type "edu.nyu.acsys.CVC4.Expr";
+%typemap(javaout) CVC4::Expr::const_iterator::value_type { return $jnicall; }
+
+#endif /* SWIGJAVA */
+
+%include "expr/expr.h"
+
+#ifdef SWIGPYTHON
+/* The python bindings on Mac OS X have trouble with this one - leave it
+ * out for now. */
+//%template(getConstTypeConstant) CVC4::Expr::getConst<CVC4::TypeConstant>;
+#else
+%template(getConstTypeConstant) CVC4::Expr::getConst<CVC4::TypeConstant>;
+#endif
+%template(getConstArrayStoreAll) CVC4::Expr::getConst<CVC4::ArrayStoreAll>;
+%template(getConstBitVectorSize) CVC4::Expr::getConst<CVC4::BitVectorSize>;
+%template(getConstAscriptionType) CVC4::Expr::getConst<CVC4::AscriptionType>;
+%template(getConstBitVectorBitOf) CVC4::Expr::getConst<CVC4::BitVectorBitOf>;
+%template(getConstSubrangeBounds) CVC4::Expr::getConst<CVC4::SubrangeBounds>;
+%template(getConstBitVectorRepeat) CVC4::Expr::getConst<CVC4::BitVectorRepeat>;
+%template(getConstBitVectorExtract) CVC4::Expr::getConst<CVC4::BitVectorExtract>;
+%template(getConstBitVectorRotateLeft) CVC4::Expr::getConst<CVC4::BitVectorRotateLeft>;
+%template(getConstBitVectorSignExtend) CVC4::Expr::getConst<CVC4::BitVectorSignExtend>;
+%template(getConstBitVectorZeroExtend) CVC4::Expr::getConst<CVC4::BitVectorZeroExtend>;
+%template(getConstBitVectorRotateRight) CVC4::Expr::getConst<CVC4::BitVectorRotateRight>;
+%template(getConstUninterpretedConstant) CVC4::Expr::getConst<CVC4::UninterpretedConstant>;
+%template(getConstKind) CVC4::Expr::getConst<CVC4::kind::Kind_t>;
+%template(getConstDatatypeIndexConstant) CVC4::Expr::getConst<CVC4::DatatypeIndexConstant>;
+%template(getConstRational) CVC4::Expr::getConst<CVC4::Rational>;
+%template(getConstBitVector) CVC4::Expr::getConst<CVC4::BitVector>;
+%template(getConstPredicate) CVC4::Expr::getConst<CVC4::Predicate>;
+%template(getConstString) CVC4::Expr::getConst<CVC4::String>;
+%template(getConstRegExp) CVC4::Expr::getConst<CVC4::RegExp>;
+%template(getConstEmptySet) CVC4::Expr::getConst<CVC4::EmptySet>;
+%template(getConstBoolean) CVC4::Expr::getConst<bool>;
+
+#ifdef SWIGJAVA
+
+%include "bindings/java_iterator_adapter.h"
+%include "bindings/java_stream_adapters.h"
+
+%template(JavaIteratorAdapter_Expr) CVC4::JavaIteratorAdapter<CVC4::Expr>;
+
+#endif /* SWIGJAVA */
+
+%include "expr/expr.h"
diff --git a/src/expr/expr_iomanip.cpp b/src/expr/expr_iomanip.cpp
new file mode 100644
index 0000000..1d6df2a
--- /dev/null
+++ b/src/expr/expr_iomanip.cpp
@@ -0,0 +1,160 @@
+/*********************                                                        */
+/*! \file expr_iomanip.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Expr IO manipulation classes.
+ **
+ ** Expr IO manipulation classes.
+ **/
+
+#include "expr/expr_iomanip.h"
+
+#include <iomanip>
+#include <iostream>
+
+#include "options/options.h"
+#include "options/expr_options.h"
+
+namespace CVC4 {
+namespace expr {
+
+const int ExprSetDepth::s_iosIndex = std::ios_base::xalloc();
+const int ExprPrintTypes::s_iosIndex = std::ios_base::xalloc();
+const int ExprDag::s_iosIndex = std::ios_base::xalloc();
+
+
+
+ExprSetDepth::ExprSetDepth(long depth) : d_depth(depth) {}
+
+void ExprSetDepth::applyDepth(std::ostream& out) {
+  out.iword(s_iosIndex) = d_depth;
+}
+
+long ExprSetDepth::getDepth(std::ostream& out) {
+  long& l = out.iword(s_iosIndex);
+  if(l == 0) {
+    // set the default print depth on this ostream
+    if(not Options::isCurrentNull()) {
+      l = options::defaultExprDepth();
+    }
+    if(l == 0) {
+      // if called from outside the library, we may not have options
+      // available to us at this point (or perhaps the output language
+      // is not set in Options).  Default to something reasonable, but
+      // don't set "l" since that would make it "sticky" for this
+      // stream.
+      return s_defaultPrintDepth;
+    }
+  }
+  return l;
+}
+
+void ExprSetDepth::setDepth(std::ostream& out, long depth) {
+  out.iword(s_iosIndex) = depth;
+}
+
+
+ExprSetDepth::Scope::Scope(std::ostream& out, long depth)
+  : d_out(out), d_oldDepth(ExprSetDepth::getDepth(out))
+{
+  ExprSetDepth::setDepth(out, depth);
+}
+
+ExprSetDepth::Scope::~Scope() {
+  ExprSetDepth::setDepth(d_out, d_oldDepth);
+}
+
+
+ExprPrintTypes::ExprPrintTypes(bool printTypes) : d_printTypes(printTypes) {}
+
+void ExprPrintTypes::applyPrintTypes(std::ostream& out) {
+  out.iword(s_iosIndex) = d_printTypes;
+}
+
+bool ExprPrintTypes::getPrintTypes(std::ostream& out) {
+  return out.iword(s_iosIndex);
+}
+
+void ExprPrintTypes::setPrintTypes(std::ostream& out, bool printTypes) {
+  out.iword(s_iosIndex) = printTypes;
+}
+
+ExprPrintTypes::Scope::Scope(std::ostream& out, bool printTypes)
+  : d_out(out),
+    d_oldPrintTypes(ExprPrintTypes::getPrintTypes(out)) {
+  ExprPrintTypes::setPrintTypes(out, printTypes);
+}
+
+ExprPrintTypes::Scope::~Scope() {
+  ExprPrintTypes::setPrintTypes(d_out, d_oldPrintTypes);
+}
+
+ExprDag::ExprDag(bool dag) : d_dag(dag ? 1 : 0) {}
+
+ExprDag::ExprDag(int dag) : d_dag(dag < 0 ? 0 : dag) {}
+
+void ExprDag::applyDag(std::ostream& out) {
+  // (offset by one to detect whether default has been set yet)
+  out.iword(s_iosIndex) = static_cast<long>(d_dag) + 1;
+}
+
+size_t ExprDag::getDag(std::ostream& out) {
+  long& l = out.iword(s_iosIndex);
+  if(l == 0) {
+    // set the default dag setting on this ostream
+    // (offset by one to detect whether default has been set yet)
+    if(not Options::isCurrentNull()) {
+      l = options::defaultDagThresh() + 1;
+    }
+    if(l == 0) {
+      // if called from outside the library, we may not have options
+      // available to us at this point (or perhaps the output language
+      // is not set in Options).  Default to something reasonable, but
+      // don't set "l" since that would make it "sticky" for this
+      // stream.
+      return s_defaultDag + 1;
+    }
+  }
+  return static_cast<size_t>(l - 1);
+}
+
+void ExprDag::setDag(std::ostream& out, size_t dag) {
+  // (offset by one to detect whether default has been set yet)
+  out.iword(s_iosIndex) = static_cast<long>(dag) + 1;
+}
+
+ExprDag::Scope::Scope(std::ostream& out, size_t dag)
+  : d_out(out),
+    d_oldDag(ExprDag::getDag(out)) {
+  ExprDag::setDag(out, dag);
+}
+
+ExprDag::Scope::~Scope() {
+  ExprDag::setDag(d_out, d_oldDag);
+}
+
+std::ostream& operator<<(std::ostream& out, ExprDag d) {
+  d.applyDag(out);
+  return out;
+}
+
+std::ostream& operator<<(std::ostream& out, ExprPrintTypes pt) {
+  pt.applyPrintTypes(out);
+  return out;
+}
+
+std::ostream& operator<<(std::ostream& out, ExprSetDepth sd) {
+  sd.applyDepth(out);
+  return out;
+}
+
+
+}/* namespace CVC4::expr */
+}/* namespace CVC4 */
diff --git a/src/expr/expr_iomanip.h b/src/expr/expr_iomanip.h
new file mode 100644
index 0000000..94e2b46
--- /dev/null
+++ b/src/expr/expr_iomanip.h
@@ -0,0 +1,239 @@
+/*********************                                                        */
+/*! \file expr_iomanip.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Expr IO manipulation classes.
+ **
+ ** Expr IO manipulation classes.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__EXPR__EXPR_IOMANIP_H
+#define __CVC4__EXPR__EXPR_IOMANIP_H
+
+#include <iosfwd>
+
+namespace CVC4 {
+namespace expr {
+
+/**
+ * IOStream manipulator to set the maximum depth of Exprs when
+ * pretty-printing.  -1 means print to any depth.  E.g.:
+ *
+ *   // let a, b, c, and d be VARIABLEs
+ *   Expr e = em->mkExpr(OR, a, b, em->mkExpr(AND, c, em->mkExpr(NOT, d)))
+ *   out << setdepth(3) << e;
+ *
+ * gives "(OR a b (AND c (NOT d)))", but
+ *
+ *   out << setdepth(1) << [same expr as above]
+ *
+ * gives "(OR a b (...))".
+ *
+ * The implementation of this class serves two purposes; it holds
+ * information about the depth setting (such as the index of the
+ * allocated word in ios_base), and serves also as the manipulator
+ * itself (as above).
+ */
+class CVC4_PUBLIC ExprSetDepth {
+public:
+
+  /**
+   * Construct a ExprSetDepth with the given depth.
+   */
+  ExprSetDepth(long depth);
+
+  void applyDepth(std::ostream& out);
+
+  static long getDepth(std::ostream& out);
+
+  static void setDepth(std::ostream& out, long depth);
+
+  /**
+   * Set the expression depth on the output stream for the current
+   * stack scope.  This makes sure the old depth is reset on the stream
+   * after normal OR exceptional exit from the scope, using the RAII
+   * C++ idiom.
+   */
+  class Scope {
+  public:
+    Scope(std::ostream& out, long depth);
+    ~Scope();
+
+  private:
+    std::ostream& d_out;
+    long d_oldDepth;
+  };/* class ExprSetDepth::Scope */
+
+ private:
+  /**
+   * The allocated index in ios_base for our depth setting.
+   */
+  static const int s_iosIndex;
+
+  /**
+   * The default depth to print, for ostreams that haven't yet had a
+   * setdepth() applied to them.
+   */
+  static const int s_defaultPrintDepth = -1;
+
+  /**
+   * When this manipulator is used, the depth is stored here.
+   */
+  long d_depth;
+};/* class ExprSetDepth */
+
+/**
+ * IOStream manipulator to print type ascriptions or not.
+ *
+ *   // let a, b, c, and d be variables of sort U
+ *   Expr e = em->mkExpr(OR, a, b, em->mkExpr(AND, c, em->mkExpr(NOT, d)))
+ *   out << e;
+ *
+ * gives "(OR a:U b:U (AND c:U (NOT d:U)))", but
+ */
+class CVC4_PUBLIC ExprPrintTypes {
+public:
+  /**
+   * Construct a ExprPrintTypes with the given setting.
+   */
+  ExprPrintTypes(bool printTypes);
+
+  void applyPrintTypes(std::ostream& out);
+
+  static bool getPrintTypes(std::ostream& out);
+
+  static void setPrintTypes(std::ostream& out, bool printTypes);
+
+  /**
+   * Set the print-types state on the output stream for the current
+   * stack scope.  This makes sure the old state is reset on the
+   * stream after normal OR exceptional exit from the scope, using the
+   * RAII C++ idiom.
+   */
+  class Scope {
+  public:
+    Scope(std::ostream& out, bool printTypes);
+    ~Scope();
+
+  private:
+    std::ostream& d_out;
+    bool d_oldPrintTypes;
+  };/* class ExprPrintTypes::Scope */
+
+ private:
+  /**
+   * The allocated index in ios_base for our setting.
+   */
+  static const int s_iosIndex;
+
+  /**
+   * When this manipulator is used, the setting is stored here.
+   */
+  bool d_printTypes;
+};/* class ExprPrintTypes */
+
+/**
+ * IOStream manipulator to print expressions as a dag (or not).
+ */
+class CVC4_PUBLIC ExprDag {
+public:
+  /**
+   * Construct a ExprDag with the given setting (dagification on or off).
+   */
+  explicit ExprDag(bool dag);
+
+  /**
+   * Construct a ExprDag with the given setting (letify only common
+   * subexpressions that appear more than 'dag' times).  dag <= 0 means
+   * don't dagify.
+   */
+  explicit ExprDag(int dag);
+
+  void applyDag(std::ostream& out);
+
+  static size_t getDag(std::ostream& out);
+
+  static void setDag(std::ostream& out, size_t dag);
+
+  /**
+   * Set the dag state on the output stream for the current
+   * stack scope.  This makes sure the old state is reset on the
+   * stream after normal OR exceptional exit from the scope, using the
+   * RAII C++ idiom.
+   */
+  class Scope {
+  public:
+    Scope(std::ostream& out, size_t dag);
+    ~Scope();
+
+  private:
+    std::ostream& d_out;
+    size_t d_oldDag;
+  };/* class ExprDag::Scope */
+
+ private:
+  /**
+   * The allocated index in ios_base for our setting.
+   */
+  static const int s_iosIndex;
+
+  /**
+   * The default setting, for ostreams that haven't yet had a
+   * dag() applied to them.
+   */
+  static const size_t s_defaultDag = 1;
+
+  /**
+   * When this manipulator is used, the setting is stored here.
+   */
+  size_t d_dag;
+};/* class ExprDag */
+
+/**
+ * Sets the default dag setting when pretty-printing a Expr to an ostream.
+ * Use like this:
+ *
+ *   // let out be an ostream, e an Expr
+ *   out << Expr::dag(true) << e << endl;
+ *
+ * The setting stays permanently (until set again) with the stream.
+ */
+std::ostream& operator<<(std::ostream& out, ExprDag d) CVC4_PUBLIC;
+
+
+/**
+ * Sets the default print-types setting when pretty-printing an Expr
+ * to an ostream.  Use like this:
+ *
+ *   // let out be an ostream, e an Expr
+ *   out << Expr::printtypes(true) << e << endl;
+ *
+ * The setting stays permanently (until set again) with the stream.
+ */
+std::ostream& operator<<(std::ostream& out, ExprPrintTypes pt) CVC4_PUBLIC;
+
+/**
+ * Sets the default depth when pretty-printing a Expr to an ostream.
+ * Use like this:
+ *
+ *   // let out be an ostream, e an Expr
+ *   out << Expr::setdepth(n) << e << endl;
+ *
+ * The depth stays permanently (until set again) with the stream.
+ */
+std::ostream& operator<<(std::ostream& out, ExprSetDepth sd) CVC4_PUBLIC;
+
+}/* namespace CVC4::expr */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__EXPR__EXPR_IOMANIP_H */
diff --git a/src/expr/expr_manager.i b/src/expr/expr_manager.i
new file mode 100644
index 0000000..f8bb555
--- /dev/null
+++ b/src/expr/expr_manager.i
@@ -0,0 +1,98 @@
+%{
+#include "expr/expr_manager.h"
+%}
+
+%typemap(javacode) CVC4::ExprManager %{
+  // a ref is kept here to keep Java GC from collecting the Options
+  // before the ExprManager
+  private Object options;
+%}
+%typemap(javaconstruct) ExprManager {
+    this($imcall, true);
+    this.options = SmtEngine.mkRef(options); // keep ref to options in SWIG proxy class
+  }
+%typemap(javadestruct, methodname="delete", methodmodifiers="public synchronized") CVC4::ExprManager {
+    SmtEngine.dlRef(options);
+    options = null;
+    if (swigCPtr != 0) {
+      if (swigCMemOwn) {
+        swigCMemOwn = false;
+        CVC4JNI.delete_ExprManager(swigCPtr);
+      }
+      swigCPtr = 0;
+    }
+  }
+
+#ifdef SWIGOCAML
+  /* OCaml bindings cannot deal with this degree of overloading */
+  %ignore CVC4::ExprManager::mkExpr(Kind, const std::vector<Expr>&);
+  %ignore CVC4::ExprManager::mkExpr(Kind, Expr, const std::vector<Expr>&);
+  %ignore CVC4::ExprManager::mkExpr(Expr);
+  %ignore CVC4::ExprManager::mkExpr(Expr, Expr);
+  %ignore CVC4::ExprManager::mkExpr(Expr, Expr, Expr);
+  %ignore CVC4::ExprManager::mkExpr(Expr, Expr, Expr, Expr);
+  %ignore CVC4::ExprManager::mkExpr(Expr, Expr, Expr, Expr, Expr);
+  %ignore CVC4::ExprManager::mkExpr(Expr, Expr, Expr, Expr, Expr, Expr);
+  %ignore CVC4::ExprManager::mkExpr(Expr, const std::vector<Expr>&);
+#endif /* SWIGOCAML */
+
+%ignore CVC4::stats::getStatisticsRegistry(ExprManager*);
+
+%include "expr/expr_manager.h"
+
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::ArrayStoreAll>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::BitVectorSize>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::AscriptionType>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::BitVectorBitOf>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::SubrangeBounds>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::BitVectorRepeat>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::BitVectorExtract>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::BitVectorRotateLeft>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::BitVectorSignExtend>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::BitVectorZeroExtend>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::BitVectorRotateRight>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::IntToBitVector>;
+//%template(mkConst) CVC4::ExprManager::mkConst<CVC4::FloatingPoint>;
+//%template(mkConst) CVC4::ExprManager::mkConst<CVC4::RoundingMode>;
+//%template(mkConst) CVC4::ExprManager::mkConst<CVC4::FloatingPointSize>;
+//%template(mkConst) CVC4::ExprManager::mkConst<CVC4::FloatingPointToFPIEEEBitVector>;
+//%template(mkConst) CVC4::ExprManager::mkConst<CVC4::FloatingPointToFPFloatingPoint>;
+//%template(mkConst) CVC4::ExprManager::mkConst<CVC4::FloatingPointToFPReal>;
+//%template(mkConst) CVC4::ExprManager::mkConst<CVC4::FloatingPointToFPSignedBitVector>;
+//%template(mkConst) CVC4::ExprManager::mkConst<CVC4::FloatingPointToFPUnsignedBitVector>;
+//%template(mkConst) CVC4::ExprManager::mkConst<CVC4::FloatingPointToFPGeneric>;
+//%template(mkConst) CVC4::ExprManager::mkConst<CVC4::FloatingPointToUBV>;
+//%template(mkConst) CVC4::ExprManager::mkConst<CVC4::FloatingPointToSBV>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::UninterpretedConstant>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::kind::Kind_t>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::DatatypeIndexConstant>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::TupleUpdate>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::RecordUpdate>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::Rational>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::BitVector>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::Predicate>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::EmptySet>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::String>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::RegExp>;
+#ifdef SWIGPYTHON
+/* The python bindings cannot differentiate between bool and other basic
+ * types like enum and int. Therefore, we rename mkConst for the bool
+ * case into mkBoolConst.
+*/
+%template(mkBoolConst) CVC4::ExprManager::mkConst<bool>;
+
+// These cases have trouble too.  Remove them for now.
+//%template(mkConst) CVC4::ExprManager::mkConst<CVC4::TypeConstant>;
+//%template(mkConst) CVC4::ExprManager::mkConst<CVC4::TupleSelect>;
+//%template(mkConst) CVC4::ExprManager::mkConst<CVC4::Record>;
+//%template(mkConst) CVC4::ExprManager::mkConst<CVC4::RecordSelect>;
+
+#else
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::TypeConstant>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::TupleSelect>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::Record>;
+%template(mkConst) CVC4::ExprManager::mkConst<CVC4::RecordSelect>;
+%template(mkConst) CVC4::ExprManager::mkConst<bool>;
+#endif
+
+%include "expr/expr_manager.h"
diff --git a/src/expr/expr_manager_scope.h b/src/expr/expr_manager_scope.h
new file mode 100644
index 0000000..cd4c274
--- /dev/null
+++ b/src/expr/expr_manager_scope.h
@@ -0,0 +1,69 @@
+/*********************                                                        */
+/*! \file expr_manager_scope.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__EXPR_MANAGER_SCOPE_H
+#define __CVC4__EXPR_MANAGER_SCOPE_H
+
+#include "expr/expr.h"
+#include "expr/node_manager.h"
+#include "expr/expr_manager.h"
+
+namespace CVC4 {
+
+/**
+ * Creates a <code>NodeManagerScope</code> with the underlying
+ * <code>NodeManager</code> of a given <code>Expr</code> or
+ * <code>ExprManager</code>.  The <code>NodeManagerScope</code> is
+ * destroyed when the <code>ExprManagerScope</code> is destroyed. See
+ * <code>NodeManagerScope</code> for more information.
+ */
+// NOTE: Here, it seems ExprManagerScope is redundant, since we have
+// NodeManagerScope already.  However, without this class, we'd need
+// Expr to be a friend of ExprManager, because in the implementation
+// of Expr functions, it needs to set the current NodeManager
+// correctly (and to do that it needs access to
+// ExprManager::getNodeManager()).  So, we make ExprManagerScope a
+// friend of ExprManager's, since its implementation is simple to
+// read and understand (and verify that it doesn't do any mischief).
+//
+// ExprManager::getNodeManager() can't just be made public, since
+// ExprManager is exposed to clients of the library and NodeManager is
+// not.  Similarly, ExprManagerScope shouldn't go in expr_manager.h,
+// since that's a public header.
+class ExprManagerScope {
+  NodeManagerScope d_nms;
+public:
+  inline ExprManagerScope(const Expr& e) :
+    d_nms(e.getExprManager() == NULL
+          ? NodeManager::currentNM()
+          : e.getExprManager()->getNodeManager()) {
+  }
+  inline ExprManagerScope(const Type& t) :
+    d_nms(t.getExprManager() == NULL
+          ? NodeManager::currentNM()
+          : t.getExprManager()->getNodeManager()) {
+  }
+  inline ExprManagerScope(const ExprManager& exprManager) :
+    d_nms(exprManager.getNodeManager()) {
+  }
+};/* class ExprManagerScope */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__EXPR_MANAGER_SCOPE_H */
diff --git a/src/expr/expr_manager_template.cpp b/src/expr/expr_manager_template.cpp
new file mode 100644
index 0000000..470a6ee
--- /dev/null
+++ b/src/expr/expr_manager_template.cpp
@@ -0,0 +1,1098 @@
+/*********************                                                        */
+/*! \file expr_manager_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Christopher L. Conway
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Public-facing expression manager interface, implementation
+ **
+ ** Public-facing expression manager interface, implementation.
+ **/
+
+#include "expr/expr_manager.h"
+
+#include <map>
+
+#include "expr/node_manager.h"
+#include "expr/variable_type_map.h"
+#include "expr/node_manager_attributes.h"
+#include "options/options.h"
+#include "util/statistics_registry.h"
+
+${includes}
+
+// This is a hack, but an important one: if there's an error, the
+// compiler directs the user to the template file instead of the
+// generated one.  We don't want the user to modify the generated one,
+// since it'll get overwritten on a later build.
+#line 34 "${template}"
+
+#ifdef CVC4_STATISTICS_ON
+  #define INC_STAT(kind) \
+  { \
+    if (d_exprStatistics[kind] == NULL) { \
+      stringstream statName; \
+      statName << "expr::ExprManager::" << kind; \
+      d_exprStatistics[kind] = new IntStat(statName.str(), 0); \
+      d_nodeManager->getStatisticsRegistry()->registerStat(d_exprStatistics[kind]); \
+    } \
+    ++ *(d_exprStatistics[kind]); \
+  }
+  #define INC_STAT_VAR(type, bound_var) \
+  { \
+    TypeNode* typeNode = Type::getTypeNode(type); \
+    TypeConstant type = typeNode->getKind() == kind::TYPE_CONSTANT ? typeNode->getConst<TypeConstant>() : LAST_TYPE; \
+    if (d_exprStatisticsVars[type] == NULL) { \
+      stringstream statName; \
+      if (type == LAST_TYPE) { \
+        statName << "expr::ExprManager::" << ((bound_var) ? "BOUND_VARIABLE" : "VARIABLE") << ":Parameterized type"; \
+      } else { \
+        statName << "expr::ExprManager::" << ((bound_var) ? "BOUND_VARIABLE" : "VARIABLE") << ":" << type; \
+      } \
+      d_exprStatisticsVars[type] = new IntStat(statName.str(), 0); \
+      d_nodeManager->getStatisticsRegistry()->registerStat(d_exprStatisticsVars[type]); \
+    } \
+    ++ *(d_exprStatisticsVars[type]); \
+  }
+#else
+  #define INC_STAT(kind)
+  #define INC_STAT_VAR(type, bound_var)
+#endif
+
+using namespace std;
+using namespace CVC4::kind;
+
+namespace CVC4 {
+
+ExprManager::ExprManager() :
+  d_nodeManager(new NodeManager(this)) {
+#ifdef CVC4_STATISTICS_ON
+  for (unsigned i = 0; i < kind::LAST_KIND; ++ i) {
+    d_exprStatistics[i] = NULL;
+  }
+  for (unsigned i = 0; i <= LAST_TYPE; ++ i) {
+    d_exprStatisticsVars[i] = NULL;
+  }
+#endif
+}
+
+ExprManager::ExprManager(const Options& options) :
+  d_nodeManager(new NodeManager(this, options)) {
+#ifdef CVC4_STATISTICS_ON
+  for (unsigned i = 0; i <= LAST_TYPE; ++ i) {
+    d_exprStatisticsVars[i] = NULL;
+  }
+  for (unsigned i = 0; i < kind::LAST_KIND; ++ i) {
+    d_exprStatistics[i] = NULL;
+  }
+#endif
+}
+
+ExprManager::~ExprManager() throw() {
+  NodeManagerScope nms(d_nodeManager);
+
+  try {
+
+#ifdef CVC4_STATISTICS_ON
+    for (unsigned i = 0; i < kind::LAST_KIND; ++ i) {
+      if (d_exprStatistics[i] != NULL) {
+        d_nodeManager->getStatisticsRegistry()->unregisterStat(d_exprStatistics[i]);
+        delete d_exprStatistics[i];
+        d_exprStatistics[i] = NULL;
+      }
+    }
+    for (unsigned i = 0; i <= LAST_TYPE; ++ i) {
+      if (d_exprStatisticsVars[i] != NULL) {
+        d_nodeManager->getStatisticsRegistry()->unregisterStat(d_exprStatisticsVars[i]);
+        delete d_exprStatisticsVars[i];
+        d_exprStatisticsVars[i] = NULL;
+      }
+    }
+#endif
+
+    delete d_nodeManager;
+    d_nodeManager = NULL;
+
+  } catch(Exception& e) {
+    Warning() << "CVC4 threw an exception during cleanup." << std::endl
+              << e << std::endl;
+  }
+}
+
+const Options& ExprManager::getOptions() const {
+  return d_nodeManager->getOptions();
+}
+
+ResourceManager* ExprManager::getResourceManager() throw() {
+  return d_nodeManager->getResourceManager();
+}
+
+BooleanType ExprManager::booleanType() const {
+  NodeManagerScope nms(d_nodeManager);
+  return BooleanType(Type(d_nodeManager, new TypeNode(d_nodeManager->booleanType())));
+}
+
+StringType ExprManager::stringType() const {
+  NodeManagerScope nms(d_nodeManager);
+  return StringType(Type(d_nodeManager, new TypeNode(d_nodeManager->stringType())));
+}
+
+RegExpType ExprManager::regExpType() const {
+  NodeManagerScope nms(d_nodeManager);
+  return StringType(Type(d_nodeManager, new TypeNode(d_nodeManager->regExpType())));
+}
+
+RealType ExprManager::realType() const {
+  NodeManagerScope nms(d_nodeManager);
+  return RealType(Type(d_nodeManager, new TypeNode(d_nodeManager->realType())));
+}
+
+IntegerType ExprManager::integerType() const {
+  NodeManagerScope nms(d_nodeManager);
+  return IntegerType(Type(d_nodeManager, new TypeNode(d_nodeManager->integerType())));
+}
+
+RoundingModeType ExprManager::roundingModeType() const {
+  NodeManagerScope nms(d_nodeManager);
+  return RoundingModeType(Type(d_nodeManager, new TypeNode(d_nodeManager->roundingModeType())));
+}
+
+
+Expr ExprManager::mkExpr(Kind kind, Expr child1) {
+  const kind::MetaKind mk = kind::metaKindOf(kind);
+  const unsigned n = 1 - (mk == kind::metakind::PARAMETERIZED ? 1 : 0);
+  PrettyCheckArgument(
+      mk == kind::metakind::PARAMETERIZED ||
+      mk == kind::metakind::OPERATOR, kind,
+      "Only operator-style expressions are made with mkExpr(); "
+      "to make variables and constants, see mkVar(), mkBoundVar(), "
+      "and mkConst().");
+  PrettyCheckArgument(
+      n >= minArity(kind) && n <= maxArity(kind), kind,
+      "Exprs with kind %s must have at least %u children and "
+      "at most %u children (the one under construction has %u)",
+      kind::kindToString(kind).c_str(),
+      minArity(kind), maxArity(kind), n);
+  NodeManagerScope nms(d_nodeManager);
+  try {
+    INC_STAT(kind);
+    return Expr(this, d_nodeManager->mkNodePtr(kind, child1.getNode()));
+  } catch (const TypeCheckingExceptionPrivate& e) {
+    throw TypeCheckingException(this, &e);
+  }
+}
+
+Expr ExprManager::mkExpr(Kind kind, Expr child1, Expr child2) {
+  const kind::MetaKind mk = kind::metaKindOf(kind);
+  const unsigned n = 2 - (mk == kind::metakind::PARAMETERIZED ? 1 : 0);
+  PrettyCheckArgument(
+      mk == kind::metakind::PARAMETERIZED ||
+      mk == kind::metakind::OPERATOR, kind,
+      "Only operator-style expressions are made with mkExpr(); "
+      "to make variables and constants, see mkVar(), mkBoundVar(), "
+      "and mkConst().");
+  PrettyCheckArgument(
+      n >= minArity(kind) && n <= maxArity(kind), kind,
+      "Exprs with kind %s must have at least %u children and "
+      "at most %u children (the one under construction has %u)",
+      kind::kindToString(kind).c_str(),
+      minArity(kind), maxArity(kind), n);
+  NodeManagerScope nms(d_nodeManager);
+  try {
+    INC_STAT(kind);
+    return Expr(this, d_nodeManager->mkNodePtr(kind,
+                                               child1.getNode(),
+                                               child2.getNode()));
+  } catch (const TypeCheckingExceptionPrivate& e) {
+    throw TypeCheckingException(this, &e);
+  }
+}
+
+Expr ExprManager::mkExpr(Kind kind, Expr child1, Expr child2, Expr child3) {
+  const kind::MetaKind mk = kind::metaKindOf(kind);
+  const unsigned n = 3 - (mk == kind::metakind::PARAMETERIZED ? 1 : 0);
+  PrettyCheckArgument(
+      mk == kind::metakind::PARAMETERIZED ||
+      mk == kind::metakind::OPERATOR, kind,
+      "Only operator-style expressions are made with mkExpr(); "
+      "to make variables and constants, see mkVar(), mkBoundVar(), "
+      "and mkConst().");
+  PrettyCheckArgument(
+      n >= minArity(kind) && n <= maxArity(kind), kind,
+      "Exprs with kind %s must have at least %u children and "
+      "at most %u children (the one under construction has %u)",
+      kind::kindToString(kind).c_str(),
+      minArity(kind), maxArity(kind), n);
+  NodeManagerScope nms(d_nodeManager);
+  try {
+    INC_STAT(kind);
+    return Expr(this, d_nodeManager->mkNodePtr(kind,
+                                               child1.getNode(),
+                                               child2.getNode(),
+                                               child3.getNode()));
+  } catch (const TypeCheckingExceptionPrivate& e) {
+    throw TypeCheckingException(this, &e);
+  }
+}
+
+Expr ExprManager::mkExpr(Kind kind, Expr child1, Expr child2, Expr child3,
+                         Expr child4) {
+  const kind::MetaKind mk = kind::metaKindOf(kind);
+  const unsigned n = 4 - (mk == kind::metakind::PARAMETERIZED ? 1 : 0);
+  PrettyCheckArgument(
+      mk == kind::metakind::PARAMETERIZED ||
+      mk == kind::metakind::OPERATOR, kind,
+      "Only operator-style expressions are made with mkExpr(); "
+      "to make variables and constants, see mkVar(), mkBoundVar(), "
+      "and mkConst().");
+  PrettyCheckArgument(
+      n >= minArity(kind) && n <= maxArity(kind), kind,
+      "Exprs with kind %s must have at least %u children and "
+      "at most %u children (the one under construction has %u)",
+      kind::kindToString(kind).c_str(),
+      minArity(kind), maxArity(kind), n);
+  NodeManagerScope nms(d_nodeManager);
+  try {
+    INC_STAT(kind);
+    return Expr(this, d_nodeManager->mkNodePtr(kind,
+                                               child1.getNode(),
+                                               child2.getNode(),
+                                               child3.getNode(),
+                                               child4.getNode()));
+  } catch (const TypeCheckingExceptionPrivate& e) {
+    throw TypeCheckingException(this, &e);
+  }
+}
+
+Expr ExprManager::mkExpr(Kind kind, Expr child1, Expr child2, Expr child3,
+                         Expr child4, Expr child5) {
+  const kind::MetaKind mk = kind::metaKindOf(kind);
+  const unsigned n = 5 - (mk == kind::metakind::PARAMETERIZED ? 1 : 0);
+  PrettyCheckArgument(
+      mk == kind::metakind::PARAMETERIZED ||
+      mk == kind::metakind::OPERATOR, kind,
+      "Only operator-style expressions are made with mkExpr(); "
+      "to make variables and constants, see mkVar(), mkBoundVar(), "
+      "and mkConst().");
+  PrettyCheckArgument(
+      n >= minArity(kind) && n <= maxArity(kind), kind,
+      "Exprs with kind %s must have at least %u children and "
+      "at most %u children (the one under construction has %u)",
+      kind::kindToString(kind).c_str(),
+      minArity(kind), maxArity(kind), n);
+  NodeManagerScope nms(d_nodeManager);
+  try {
+    INC_STAT(kind);
+    return Expr(this, d_nodeManager->mkNodePtr(kind,
+                                               child1.getNode(),
+                                               child2.getNode(),
+                                               child3.getNode(),
+                                               child4.getNode(),
+                                               child5.getNode()));
+  } catch (const TypeCheckingExceptionPrivate& e) {
+    throw TypeCheckingException(this, &e);
+  }
+}
+
+Expr ExprManager::mkExpr(Kind kind, const std::vector<Expr>& children) {
+  const kind::MetaKind mk = kind::metaKindOf(kind);
+  const unsigned n = children.size() - (mk == kind::metakind::PARAMETERIZED ? 1 : 0);
+  PrettyCheckArgument(
+      mk == kind::metakind::PARAMETERIZED ||
+      mk == kind::metakind::OPERATOR, kind,
+      "Only operator-style expressions are made with mkExpr(); "
+      "to make variables and constants, see mkVar(), mkBoundVar(), "
+      "and mkConst().");
+  PrettyCheckArgument(
+      n >= minArity(kind) && n <= maxArity(kind), kind,
+      "Exprs with kind %s must have at least %u children and "
+      "at most %u children (the one under construction has %u)",
+      kind::kindToString(kind).c_str(),
+      minArity(kind), maxArity(kind), n);
+
+  NodeManagerScope nms(d_nodeManager);
+
+  vector<Node> nodes;
+  vector<Expr>::const_iterator it = children.begin();
+  vector<Expr>::const_iterator it_end = children.end();
+  while(it != it_end) {
+    nodes.push_back(it->getNode());
+    ++it;
+  }
+  try {
+    INC_STAT(kind);
+    return Expr(this, d_nodeManager->mkNodePtr(kind, nodes));
+  } catch (const TypeCheckingExceptionPrivate& e) {
+    throw TypeCheckingException(this, &e);
+  }
+}
+
+Expr ExprManager::mkExpr(Kind kind, Expr child1,
+                         const std::vector<Expr>& otherChildren) {
+  const kind::MetaKind mk = kind::metaKindOf(kind);
+  const unsigned n =
+      otherChildren.size() - (mk == kind::metakind::PARAMETERIZED ? 1 : 0) + 1;
+  PrettyCheckArgument(
+      mk == kind::metakind::PARAMETERIZED ||
+      mk == kind::metakind::OPERATOR, kind,
+      "Only operator-style expressions are made with mkExpr(); "
+      "to make variables and constants, see mkVar(), mkBoundVar(), "
+      "and mkConst().");
+  PrettyCheckArgument(
+      n >= minArity(kind) && n <= maxArity(kind), kind,
+      "Exprs with kind %s must have at least %u children and "
+      "at most %u children (the one under construction has %u)",
+      kind::kindToString(kind).c_str(),
+      minArity(kind), maxArity(kind), n);
+
+  NodeManagerScope nms(d_nodeManager);
+
+  vector<Node> nodes;
+  nodes.push_back(child1.getNode());
+
+  vector<Expr>::const_iterator it = otherChildren.begin();
+  vector<Expr>::const_iterator it_end = otherChildren.end();
+  while(it != it_end) {
+    nodes.push_back(it->getNode());
+    ++it;
+  }
+  try {
+    INC_STAT(kind);
+    return Expr(this, d_nodeManager->mkNodePtr(kind, nodes));
+  } catch (const TypeCheckingExceptionPrivate& e) {
+    throw TypeCheckingException(this, &e);
+  }
+}
+
+Expr ExprManager::mkExpr(Expr opExpr) {
+  const unsigned n = 0;
+  Kind kind = NodeManager::operatorToKind(opExpr.getNode());
+  PrettyCheckArgument(
+      opExpr.getKind() == kind::BUILTIN ||
+      kind::metaKindOf(kind) == kind::metakind::PARAMETERIZED, opExpr,
+      "This Expr constructor is for parameterized kinds only");
+  PrettyCheckArgument(
+      n >= minArity(kind) && n <= maxArity(kind), kind,
+      "Exprs with kind %s must have at least %u children and "
+      "at most %u children (the one under construction has %u)",
+      kind::kindToString(kind).c_str(),
+      minArity(kind), maxArity(kind), n);
+  NodeManagerScope nms(d_nodeManager);
+  try {
+    INC_STAT(kind);
+    return Expr(this, d_nodeManager->mkNodePtr(opExpr.getNode()));
+  } catch (const TypeCheckingExceptionPrivate& e) {
+    throw TypeCheckingException(this, &e);
+  }
+}
+
+Expr ExprManager::mkExpr(Expr opExpr, Expr child1) {
+  const unsigned n = 1;
+  Kind kind = NodeManager::operatorToKind(opExpr.getNode());
+  PrettyCheckArgument(
+      (opExpr.getKind() == kind::BUILTIN ||
+       kind::metaKindOf(kind) == kind::metakind::PARAMETERIZED), opExpr,
+      "This Expr constructor is for parameterized kinds only");
+  PrettyCheckArgument(
+      n >= minArity(kind) && n <= maxArity(kind), kind,
+      "Exprs with kind %s must have at least %u children and "
+      "at most %u children (the one under construction has %u)",
+      kind::kindToString(kind).c_str(),
+      minArity(kind), maxArity(kind), n);
+  NodeManagerScope nms(d_nodeManager);
+  try {
+    INC_STAT(kind);
+    return Expr(this, d_nodeManager->mkNodePtr(opExpr.getNode(), child1.getNode()));
+  } catch (const TypeCheckingExceptionPrivate& e) {
+    throw TypeCheckingException(this, &e);
+  }
+}
+
+Expr ExprManager::mkExpr(Expr opExpr, Expr child1, Expr child2) {
+  const unsigned n = 2;
+  Kind kind = NodeManager::operatorToKind(opExpr.getNode());
+  PrettyCheckArgument(
+      (opExpr.getKind() == kind::BUILTIN ||
+       kind::metaKindOf(kind) == kind::metakind::PARAMETERIZED), opExpr,
+      "This Expr constructor is for parameterized kinds only");
+  PrettyCheckArgument(
+      n >= minArity(kind) && n <= maxArity(kind), kind,
+      "Exprs with kind %s must have at least %u children and "
+      "at most %u children (the one under construction has %u)",
+      kind::kindToString(kind).c_str(),
+      minArity(kind), maxArity(kind), n);
+  NodeManagerScope nms(d_nodeManager);
+  try {
+    INC_STAT(kind);
+    return Expr(this, d_nodeManager->mkNodePtr(opExpr.getNode(),
+                                               child1.getNode(),
+                                               child2.getNode()));
+  } catch (const TypeCheckingExceptionPrivate& e) {
+    throw TypeCheckingException(this, &e);
+  }
+}
+
+Expr ExprManager::mkExpr(Expr opExpr, Expr child1, Expr child2, Expr child3) {
+  const unsigned n = 3;
+  Kind kind = NodeManager::operatorToKind(opExpr.getNode());
+  PrettyCheckArgument(
+      (opExpr.getKind() == kind::BUILTIN ||
+       kind::metaKindOf(kind) == kind::metakind::PARAMETERIZED), opExpr,
+                "This Expr constructor is for parameterized kinds only");
+  PrettyCheckArgument(n >= minArity(kind) && n <= maxArity(kind), kind,
+                "Exprs with kind %s must have at least %u children and "
+                "at most %u children (the one under construction has %u)",
+                kind::kindToString(kind).c_str(),
+                minArity(kind), maxArity(kind), n);
+  NodeManagerScope nms(d_nodeManager);
+  try {
+    INC_STAT(kind);
+    return Expr(this, d_nodeManager->mkNodePtr(opExpr.getNode(),
+                                               child1.getNode(),
+                                               child2.getNode(),
+                                               child3.getNode()));
+  } catch (const TypeCheckingExceptionPrivate& e) {
+    throw TypeCheckingException(this, &e);
+  }
+}
+
+Expr ExprManager::mkExpr(Expr opExpr, Expr child1, Expr child2, Expr child3,
+                         Expr child4) {
+  const unsigned n = 4;
+  Kind kind = NodeManager::operatorToKind(opExpr.getNode());
+  PrettyCheckArgument(
+      (opExpr.getKind() == kind::BUILTIN ||
+       kind::metaKindOf(kind) == kind::metakind::PARAMETERIZED), opExpr,
+      "This Expr constructor is for parameterized kinds only");
+
+  PrettyCheckArgument(
+      n >= minArity(kind) && n <= maxArity(kind), kind,
+      "Exprs with kind %s must have at least %u children and "
+      "at most %u children (the one under construction has %u)",
+      kind::kindToString(kind).c_str(),
+      minArity(kind), maxArity(kind), n);
+
+  NodeManagerScope nms(d_nodeManager);
+  try {
+    INC_STAT(kind);
+    return Expr(this, d_nodeManager->mkNodePtr(opExpr.getNode(),
+                                               child1.getNode(),
+                                               child2.getNode(),
+                                               child3.getNode(),
+                                               child4.getNode()));
+  } catch (const TypeCheckingExceptionPrivate& e) {
+    throw TypeCheckingException(this, &e);
+  }
+}
+
+Expr ExprManager::mkExpr(Expr opExpr, Expr child1, Expr child2, Expr child3,
+                         Expr child4, Expr child5) {
+  const unsigned n = 5;
+  Kind kind = NodeManager::operatorToKind(opExpr.getNode());
+  PrettyCheckArgument(
+      (opExpr.getKind() == kind::BUILTIN ||
+       kind::metaKindOf(kind) == kind::metakind::PARAMETERIZED), opExpr,
+      "This Expr constructor is for parameterized kinds only");
+  PrettyCheckArgument(
+      n >= minArity(kind) && n <= maxArity(kind), kind,
+      "Exprs with kind %s must have at least %u children and "
+      "at most %u children (the one under construction has %u)",
+      kind::kindToString(kind).c_str(),
+      minArity(kind), maxArity(kind), n);
+  NodeManagerScope nms(d_nodeManager);
+  try {
+    INC_STAT(kind);
+    return Expr(this, d_nodeManager->mkNodePtr(opExpr.getNode(),
+                                               child1.getNode(),
+                                               child2.getNode(),
+                                               child3.getNode(),
+                                               child4.getNode(),
+                                               child5.getNode()));
+  } catch (const TypeCheckingExceptionPrivate& e) {
+    throw TypeCheckingException(this, &e);
+  }
+}
+
+Expr ExprManager::mkExpr(Expr opExpr, const std::vector<Expr>& children) {
+  const unsigned n = children.size();
+  Kind kind = NodeManager::operatorToKind(opExpr.getNode());
+  PrettyCheckArgument(
+      (opExpr.getKind() == kind::BUILTIN ||
+       kind::metaKindOf(kind) == kind::metakind::PARAMETERIZED), opExpr,
+      "This Expr constructor is for parameterized kinds only");
+  PrettyCheckArgument(
+      n >= minArity(kind) && n <= maxArity(kind), kind,
+      "Exprs with kind %s must have at least %u children and "
+      "at most %u children (the one under construction has %u)",
+      kind::kindToString(kind).c_str(),
+      minArity(kind), maxArity(kind), n);
+
+  NodeManagerScope nms(d_nodeManager);
+
+  vector<Node> nodes;
+  vector<Expr>::const_iterator it = children.begin();
+  vector<Expr>::const_iterator it_end = children.end();
+  while(it != it_end) {
+    nodes.push_back(it->getNode());
+    ++it;
+  }
+  try {
+    INC_STAT(kind);
+    return Expr(this,d_nodeManager->mkNodePtr(opExpr.getNode(), nodes));
+  } catch (const TypeCheckingExceptionPrivate& e) {
+    throw TypeCheckingException(this, &e);
+  }
+}
+
+bool ExprManager::hasOperator(Kind k) {
+  return NodeManager::hasOperator(k);
+}
+
+Expr ExprManager::operatorOf(Kind k) {
+  NodeManagerScope nms(d_nodeManager);
+
+  return d_nodeManager->operatorOf(k).toExpr();
+}
+
+Kind ExprManager::operatorToKind(Expr e) {
+  NodeManagerScope nms(d_nodeManager);
+
+  return d_nodeManager->operatorToKind( e.getNode() );
+}
+
+/** Make a function type from domain to range. */
+FunctionType ExprManager::mkFunctionType(Type domain, Type range) {
+  NodeManagerScope nms(d_nodeManager);
+  return FunctionType(Type(d_nodeManager, new TypeNode(d_nodeManager->mkFunctionType(*domain.d_typeNode, *range.d_typeNode))));
+}
+
+/** Make a function type with input types from argTypes. */
+FunctionType ExprManager::mkFunctionType(const std::vector<Type>& argTypes, Type range) {
+  NodeManagerScope nms(d_nodeManager);
+  Assert( argTypes.size() >= 1 );
+  std::vector<TypeNode> argTypeNodes;
+  for (unsigned i = 0, i_end = argTypes.size(); i < i_end; ++ i) {
+    argTypeNodes.push_back(*argTypes[i].d_typeNode);
+  }
+  return FunctionType(Type(d_nodeManager, new TypeNode(d_nodeManager->mkFunctionType(argTypeNodes, *range.d_typeNode))));
+}
+
+FunctionType ExprManager::mkFunctionType(const std::vector<Type>& sorts) {
+  NodeManagerScope nms(d_nodeManager);
+  Assert( sorts.size() >= 2 );
+  std::vector<TypeNode> sortNodes;
+  for (unsigned i = 0, i_end = sorts.size(); i < i_end; ++ i) {
+     sortNodes.push_back(*sorts[i].d_typeNode);
+  }
+  return FunctionType(Type(d_nodeManager, new TypeNode(d_nodeManager->mkFunctionType(sortNodes))));
+}
+
+FunctionType ExprManager::mkPredicateType(const std::vector<Type>& sorts) {
+  NodeManagerScope nms(d_nodeManager);
+  Assert( sorts.size() >= 1 );
+  std::vector<TypeNode> sortNodes;
+  for (unsigned i = 0, i_end = sorts.size(); i < i_end; ++ i) {
+     sortNodes.push_back(*sorts[i].d_typeNode);
+  }
+  return FunctionType(Type(d_nodeManager, new TypeNode(d_nodeManager->mkPredicateType(sortNodes))));
+}
+
+DatatypeType ExprManager::mkTupleType(const std::vector<Type>& types) {
+  NodeManagerScope nms(d_nodeManager);
+  std::vector<TypeNode> typeNodes;
+  for (unsigned i = 0, i_end = types.size(); i < i_end; ++ i) {
+     typeNodes.push_back(*types[i].d_typeNode);
+  }
+  return DatatypeType(Type(d_nodeManager, new TypeNode(d_nodeManager->mkTupleType(typeNodes))));
+}
+
+DatatypeType ExprManager::mkRecordType(const Record& rec) {
+  NodeManagerScope nms(d_nodeManager);
+  return DatatypeType(Type(d_nodeManager, new TypeNode(d_nodeManager->mkRecordType(rec))));
+}
+
+SExprType ExprManager::mkSExprType(const std::vector<Type>& types) {
+  NodeManagerScope nms(d_nodeManager);
+  std::vector<TypeNode> typeNodes;
+  for (unsigned i = 0, i_end = types.size(); i < i_end; ++ i) {
+     typeNodes.push_back(*types[i].d_typeNode);
+  }
+  return SExprType(Type(d_nodeManager, new TypeNode(d_nodeManager->mkSExprType(typeNodes))));
+}
+
+FloatingPointType ExprManager::mkFloatingPointType(unsigned exp, unsigned sig) const {
+  NodeManagerScope nms(d_nodeManager);
+  return FloatingPointType(Type(d_nodeManager, new TypeNode(d_nodeManager->mkFloatingPointType(exp,sig))));
+}
+
+BitVectorType ExprManager::mkBitVectorType(unsigned size) const {
+  NodeManagerScope nms(d_nodeManager);
+  return BitVectorType(Type(d_nodeManager, new TypeNode(d_nodeManager->mkBitVectorType(size))));
+}
+
+ArrayType ExprManager::mkArrayType(Type indexType, Type constituentType) const {
+  NodeManagerScope nms(d_nodeManager);
+  return ArrayType(Type(d_nodeManager, new TypeNode(d_nodeManager->mkArrayType(*indexType.d_typeNode, *constituentType.d_typeNode))));
+}
+
+SetType ExprManager::mkSetType(Type elementType) const {
+  NodeManagerScope nms(d_nodeManager);
+  return SetType(Type(d_nodeManager, new TypeNode(d_nodeManager->mkSetType(*elementType.d_typeNode))));
+}
+
+DatatypeType ExprManager::mkDatatypeType(Datatype& datatype) {
+  // Not worth a special implementation; this doesn't need to be fast
+  // code anyway.
+  vector<Datatype> datatypes;
+  datatypes.push_back(datatype);
+  std::vector<DatatypeType> result = mkMutualDatatypeTypes(datatypes);
+  Assert(result.size() == 1);
+  return result.front();
+}
+
+std::vector<DatatypeType> ExprManager::mkMutualDatatypeTypes(std::vector<Datatype>& datatypes) {
+  std::set<Type> unresolvedTypes;
+  return mkMutualDatatypeTypes(datatypes, unresolvedTypes);
+}
+
+std::vector<DatatypeType> ExprManager::mkMutualDatatypeTypes(std::vector<Datatype>& datatypes, std::set<Type>& unresolvedTypes) {
+  NodeManagerScope nms(d_nodeManager);
+  std::map<std::string, DatatypeType> nameResolutions;
+  std::vector<DatatypeType> dtts;
+
+  //have to build deep copy so that datatypes will live in NodeManager
+  std::vector< Datatype* > dt_copies;
+  for(std::vector<Datatype>::iterator i = datatypes.begin(), i_end = datatypes.end(); i != i_end; ++i) {
+    dt_copies.push_back( new Datatype( *i ) );
+  }
+  
+  // First do some sanity checks, set up the final Type to be used for
+  // each datatype, and set up the "named resolutions" used to handle
+  // simple self- and mutual-recursion, for example in the definition
+  // "nat = succ(pred:nat) | zero", a named resolution can handle the
+  // pred selector.
+  for(std::vector<Datatype*>::iterator i = dt_copies.begin(), i_end = dt_copies.end(); i != i_end; ++i) {
+    TypeNode* typeNode;
+    if( (*i)->getNumParameters() == 0 ) {
+      unsigned index = d_nodeManager->registerDatatype( *i );
+      typeNode = new TypeNode(d_nodeManager->mkTypeConst(DatatypeIndexConstant(index)));
+      //typeNode = new TypeNode(d_nodeManager->mkTypeConst(*i));
+    } else {
+      unsigned index = d_nodeManager->registerDatatype( *i );
+      TypeNode cons = d_nodeManager->mkTypeConst(DatatypeIndexConstant(index));
+      //TypeNode cons = d_nodeManager->mkTypeConst(*i);
+      std::vector< TypeNode > params;
+      params.push_back( cons );
+      for( unsigned int ip = 0; ip < (*i)->getNumParameters(); ++ip ) {
+        params.push_back( TypeNode::fromType( (*i)->getParameter( ip ) ) );
+      }
+
+      typeNode = new TypeNode(d_nodeManager->mkTypeNode(kind::PARAMETRIC_DATATYPE, params));
+    }
+    Type type(d_nodeManager, typeNode);
+    DatatypeType dtt(type);
+    PrettyCheckArgument(
+        nameResolutions.find((*i)->getName()) == nameResolutions.end(),
+        dt_copies,
+        "cannot construct two datatypes at the same time "
+        "with the same name `%s'",
+        (*i)->getName().c_str());
+    nameResolutions.insert(std::make_pair((*i)->getName(), dtt));
+    dtts.push_back(dtt);
+    //d_keep_dtt.push_back(dtt);
+    //d_keep_dt.push_back(*i);
+    //Assert( dtt.getDatatype()==(*i) );
+  }
+
+  // Second, set up the type substitution map for complex type
+  // resolution (e.g. if "list" is the type we're defining, and it has
+  // a selector of type "ARRAY INT OF list", this can't be taken care
+  // of using the named resolutions that we set up above.  A
+  // preliminary array type was set up, and now needs to have "list"
+  // substituted in it for the correct type.
+  //
+  // @TODO get rid of named resolutions altogether and handle
+  // everything with these resolutions?
+  std::vector< SortConstructorType > paramTypes;
+  std::vector< DatatypeType > paramReplacements;
+  std::vector<Type> placeholders;// to hold the "unresolved placeholders"
+  std::vector<Type> replacements;// to hold our final, resolved types
+  for(std::set<Type>::iterator i = unresolvedTypes.begin(), i_end = unresolvedTypes.end(); i != i_end; ++i) {
+    std::string name;
+    if( (*i).isSort() ) {
+      name = SortType(*i).getName();
+    } else {
+      Assert( (*i).isSortConstructor() );
+      name = SortConstructorType(*i).getName();
+    }
+    std::map<std::string, DatatypeType>::const_iterator resolver =
+      nameResolutions.find(name);
+    PrettyCheckArgument(
+        resolver != nameResolutions.end(),
+        unresolvedTypes,
+        "cannot resolve type `%s'; it's not among "
+        "the datatypes being defined", name.c_str());
+    // We will instruct the Datatype to substitute "*i" (the
+    // unresolved SortType used as a placeholder in complex types)
+    // with "(*resolver).second" (the DatatypeType we created in the
+    // first step, above).
+    if( (*i).isSort() ) {
+      placeholders.push_back(*i);
+      replacements.push_back( (*resolver).second );
+    } else {
+      Assert( (*i).isSortConstructor() );
+      paramTypes.push_back( SortConstructorType(*i) );
+      paramReplacements.push_back( (*resolver).second );
+    }
+  }
+
+  // Lastly, perform the final resolutions and checks.
+  for(std::vector<DatatypeType>::iterator i = dtts.begin(),
+        i_end = dtts.end();
+      i != i_end;
+      ++i) {
+    const Datatype& dt = (*i).getDatatype();
+    if(!dt.isResolved()) {
+      const_cast<Datatype&>(dt).resolve(this, nameResolutions,
+                                        placeholders, replacements,
+                                        paramTypes, paramReplacements);
+    }
+
+    // Now run some checks, including a check to make sure that no
+    // selector is function-valued.
+    checkResolvedDatatype(*i);
+  }
+
+  for(std::vector<NodeManagerListener*>::iterator i = d_nodeManager->d_listeners.begin(); i != d_nodeManager->d_listeners.end(); ++i) {
+    (*i)->nmNotifyNewDatatypes(dtts);
+  }
+  
+  return dtts;
+}
+
+void ExprManager::checkResolvedDatatype(DatatypeType dtt) const {
+  const Datatype& dt = dtt.getDatatype();
+
+  AssertArgument(dt.isResolved(), dtt, "datatype should have been resolved");
+
+  // for all constructors...
+  for(Datatype::const_iterator i = dt.begin(), i_end = dt.end();
+      i != i_end;
+      ++i) {
+    const DatatypeConstructor& c = *i;
+    Type testerType CVC4_UNUSED = c.getTester().getType();
+    Assert(c.isResolved() &&
+           testerType.isTester() &&
+           TesterType(testerType).getDomain() == dtt &&
+           TesterType(testerType).getRangeType() == booleanType(),
+           "malformed tester in datatype post-resolution");
+    Type ctorType CVC4_UNUSED = c.getConstructor().getType();
+    Assert(ctorType.isConstructor() &&
+           ConstructorType(ctorType).getArity() == c.getNumArgs() &&
+           ConstructorType(ctorType).getRangeType() == dtt,
+           "malformed constructor in datatype post-resolution");
+    // for all selectors...
+    for(DatatypeConstructor::const_iterator j = c.begin(), j_end = c.end();
+        j != j_end;
+        ++j) {
+      const DatatypeConstructorArg& a = *j;
+      Type selectorType = a.getType();
+      Assert(a.isResolved() &&
+             selectorType.isSelector() &&
+             SelectorType(selectorType).getDomain() == dtt,
+             "malformed selector in datatype post-resolution");
+      // This next one's a "hard" check, performed in non-debug builds
+      // as well; the other ones should all be guaranteed by the
+      // CVC4::Datatype class, but this actually needs to be checked.
+      AlwaysAssert(!SelectorType(selectorType).getRangeType().d_typeNode->isFunctionLike(),
+                   "cannot put function-like things in datatypes");
+    }
+  }
+}
+
+ConstructorType ExprManager::mkConstructorType(const DatatypeConstructor& constructor, Type range) const {
+  NodeManagerScope nms(d_nodeManager);
+  return Type(d_nodeManager, new TypeNode(d_nodeManager->mkConstructorType(constructor, *range.d_typeNode)));
+}
+
+SelectorType ExprManager::mkSelectorType(Type domain, Type range) const {
+  NodeManagerScope nms(d_nodeManager);
+  return Type(d_nodeManager, new TypeNode(d_nodeManager->mkSelectorType(*domain.d_typeNode, *range.d_typeNode)));
+}
+
+TesterType ExprManager::mkTesterType(Type domain) const {
+  NodeManagerScope nms(d_nodeManager);
+  return Type(d_nodeManager, new TypeNode(d_nodeManager->mkTesterType(*domain.d_typeNode)));
+}
+
+SortType ExprManager::mkSort(const std::string& name, uint32_t flags) const {
+  NodeManagerScope nms(d_nodeManager);
+  return SortType(Type(d_nodeManager, new TypeNode(d_nodeManager->mkSort(name, flags))));
+}
+
+SortConstructorType ExprManager::mkSortConstructor(const std::string& name,
+                                                   size_t arity) const {
+  NodeManagerScope nms(d_nodeManager);
+  return SortConstructorType(Type(d_nodeManager,
+              new TypeNode(d_nodeManager->mkSortConstructor(name, arity))));
+}
+
+/* - not in release 1.0
+Type ExprManager::mkPredicateSubtype(Expr lambda)
+  throw(TypeCheckingException) {
+  NodeManagerScope nms(d_nodeManager);
+  try {
+    return PredicateSubtype(Type(d_nodeManager,
+                new TypeNode(d_nodeManager->mkPredicateSubtype(lambda))));
+  } catch (const TypeCheckingExceptionPrivate& e) {
+    throw TypeCheckingException(this, &e);
+  }
+}
+*/
+
+/* - not in release 1.0
+Type ExprManager::mkPredicateSubtype(Expr lambda, Expr witness)
+  throw(TypeCheckingException) {
+  NodeManagerScope nms(d_nodeManager);
+  try {
+    return PredicateSubtype(Type(d_nodeManager,
+                new TypeNode(d_nodeManager->mkPredicateSubtype(lambda, witness))));
+  } catch (const TypeCheckingExceptionPrivate& e) {
+    throw TypeCheckingException(this, &e);
+  }
+}
+*/
+
+Type ExprManager::mkSubrangeType(const SubrangeBounds& bounds)
+  throw(TypeCheckingException) {
+  NodeManagerScope nms(d_nodeManager);
+  try {
+    return SubrangeType(Type(d_nodeManager,
+                new TypeNode(d_nodeManager->mkSubrangeType(bounds))));
+  } catch (const TypeCheckingExceptionPrivate& e) {
+    throw TypeCheckingException(this, &e);
+  }
+}
+
+/**
+ * Get the type for the given Expr and optionally do type checking.
+ *
+ * Initial type computation will be near-constant time if
+ * type checking is not requested. Results are memoized, so that
+ * subsequent calls to getType() without type checking will be
+ * constant time.
+ *
+ * Initial type checking is linear in the size of the expression.
+ * Again, the results are memoized, so that subsequent calls to
+ * getType(), with or without type checking, will be constant
+ * time.
+ *
+ * NOTE: A TypeCheckingException can be thrown even when type
+ * checking is not requested. getType() will always return a
+ * valid and correct type and, thus, an exception will be thrown
+ * when no valid or correct type can be computed (e.g., if the
+ * arguments to a bit-vector operation aren't bit-vectors). When
+ * type checking is not requested, getType() will do the minimum
+ * amount of checking required to return a valid result.
+ *
+ * @param e the Expr for which we want a type
+ * @param check whether we should check the type as we compute it
+ * (default: false)
+ */
+Type ExprManager::getType(Expr e, bool check) throw (TypeCheckingException) {
+  NodeManagerScope nms(d_nodeManager);
+  Type t;
+  try {
+    t = Type(d_nodeManager,
+             new TypeNode(d_nodeManager->getType(e.getNode(), check)));
+  } catch (const TypeCheckingExceptionPrivate& e) {
+    throw TypeCheckingException(this, &e);
+  }
+  return t;
+}
+
+Expr ExprManager::mkVar(const std::string& name, Type type, uint32_t flags) {
+  Assert(NodeManager::currentNM() == NULL, "ExprManager::mkVar() should only be called externally, not from within CVC4 code.  Please use mkSkolem().");
+  NodeManagerScope nms(d_nodeManager);
+  Node* n = d_nodeManager->mkVarPtr(name, *type.d_typeNode, flags);
+  Debug("nm") << "set " << name << " on " << *n << std::endl;
+  INC_STAT_VAR(type, false);
+  return Expr(this, n);
+}
+
+Expr ExprManager::mkVar(Type type, uint32_t flags) {
+  Assert(NodeManager::currentNM() == NULL, "ExprManager::mkVar() should only be called externally, not from within CVC4 code.  Please use mkSkolem().");
+  NodeManagerScope nms(d_nodeManager);
+  INC_STAT_VAR(type, false);
+  return Expr(this, d_nodeManager->mkVarPtr(*type.d_typeNode, flags));
+}
+
+Expr ExprManager::mkBoundVar(const std::string& name, Type type) {
+  NodeManagerScope nms(d_nodeManager);
+  Node* n = d_nodeManager->mkBoundVarPtr(name, *type.d_typeNode);
+  Debug("nm") << "set " << name << " on " << *n << std::endl;
+  INC_STAT_VAR(type, true);
+  return Expr(this, n);
+}
+
+Expr ExprManager::mkBoundVar(Type type) {
+  NodeManagerScope nms(d_nodeManager);
+  INC_STAT_VAR(type, true);
+  return Expr(this, d_nodeManager->mkBoundVarPtr(*type.d_typeNode));
+}
+
+Expr ExprManager::mkUniqueVar(Type type, Kind k){
+  NodeManagerScope nms(d_nodeManager);
+  Node n = d_nodeManager->mkUniqueVar(*type.d_typeNode, k); 
+  return n.toExpr();
+}
+
+Expr ExprManager::mkAssociative(Kind kind,
+                                const std::vector<Expr>& children) {
+  PrettyCheckArgument(
+      kind::isAssociative(kind), kind,
+      "Illegal kind in mkAssociative: %s",
+      kind::kindToString(kind).c_str());
+
+  NodeManagerScope nms(d_nodeManager);
+  const unsigned int max = maxArity(kind);
+  const unsigned int min = minArity(kind);
+  unsigned int numChildren = children.size();
+
+  /* If the number of children is within bounds, then there's nothing to do. */
+  if( numChildren <= max ) {
+    return mkExpr(kind,children);
+  }
+
+  std::vector<Expr>::const_iterator it = children.begin() ;
+  std::vector<Expr>::const_iterator end = children.end() ;
+
+  /* The new top-level children and the children of each sub node */
+  std::vector<Node> newChildren;
+  std::vector<Node> subChildren;
+
+  while( it != end && numChildren > max ) {
+    /* Grab the next max children and make a node for them. */
+    for( std::vector<Expr>::const_iterator next = it + max;
+         it != next;
+         ++it, --numChildren ) {
+      subChildren.push_back(it->getNode());
+    }
+    Node subNode = d_nodeManager->mkNode(kind,subChildren);
+    newChildren.push_back(subNode);
+
+    subChildren.clear();
+  }
+
+  /* If there's children left, "top off" the Expr. */
+  if(numChildren > 0) {
+    /* If the leftovers are too few, just copy them into newChildren;
+     * otherwise make a new sub-node  */
+    if(numChildren < min) {
+      for(; it != end; ++it) {
+        newChildren.push_back(it->getNode());
+      }
+    } else {
+      for(; it != end; ++it) {
+        subChildren.push_back(it->getNode());
+      }
+      Node subNode = d_nodeManager->mkNode(kind, subChildren);
+      newChildren.push_back(subNode);
+    }
+  }
+
+  /* It's inconceivable we could have enough children for this to fail
+   * (more than 2^32, in most cases?). */
+  AlwaysAssert( newChildren.size() <= max,
+                "Too many new children in mkAssociative" );
+
+  /* It would be really weird if this happened (it would require
+   * min > 2, for one thing), but let's make sure. */
+  AlwaysAssert( newChildren.size() >= min,
+                "Too few new children in mkAssociative" );
+
+  return Expr(this, d_nodeManager->mkNodePtr(kind,newChildren) );
+}
+
+unsigned ExprManager::minArity(Kind kind) {
+  return metakind::getLowerBoundForKind(kind);
+}
+
+unsigned ExprManager::maxArity(Kind kind) {
+  return metakind::getUpperBoundForKind(kind);
+}
+
+NodeManager* ExprManager::getNodeManager() const {
+  return d_nodeManager;
+}
+
+Statistics ExprManager::getStatistics() const throw() {
+  return Statistics(*d_nodeManager->getStatisticsRegistry());
+}
+
+SExpr ExprManager::getStatistic(const std::string& name) const throw() {
+  return d_nodeManager->getStatisticsRegistry()->getStatistic(name);
+}
+
+namespace expr {
+
+Node exportInternal(TNode n, ExprManager* from, ExprManager* to, ExprManagerMapCollection& vmap);
+
+TypeNode exportTypeInternal(TypeNode n, NodeManager* from, NodeManager* to, ExprManagerMapCollection& vmap) {
+  Debug("export") << "type: " << n << " " << n.getId() << std::endl;
+  if(theory::kindToTheoryId(n.getKind()) == theory::THEORY_DATATYPES) {
+    throw ExportUnsupportedException
+      ("export of types belonging to theory of DATATYPES kinds unsupported");
+  }
+  if(n.getMetaKind() == kind::metakind::PARAMETERIZED &&
+     n.getKind() != kind::SORT_TYPE) {
+    throw ExportUnsupportedException
+      ("export of PARAMETERIZED-kinded types (other than SORT_KIND) not supported");
+  }
+  if(n.getKind() == kind::TYPE_CONSTANT) {
+    return to->mkTypeConst(n.getConst<TypeConstant>());
+  } else if(n.getKind() == kind::BITVECTOR_TYPE) {
+    return to->mkBitVectorType(n.getConst<BitVectorSize>());
+  } else if(n.getKind() == kind::SUBRANGE_TYPE) {
+    return to->mkSubrangeType(n.getSubrangeBounds());
+  }
+  Type from_t = from->toType(n);
+  Type& to_t = vmap.d_typeMap[from_t];
+  if(! to_t.isNull()) {
+    Debug("export") << "+ mapped `" << from_t << "' to `" << to_t << "'" << std::endl;
+    return *Type::getTypeNode(to_t);
+  }
+  NodeBuilder<> children(to, n.getKind());
+  if(n.getKind() == kind::SORT_TYPE) {
+    Debug("export") << "type: operator: " << n.getOperator() << std::endl;
+    // make a new sort tag in target node manager
+    Node sortTag = NodeBuilder<0>(to, kind::SORT_TAG);
+    children << sortTag;
+  }
+  for(TypeNode::iterator i = n.begin(), i_end = n.end(); i != i_end; ++i) {
+    Debug("export") << "type: child: " << *i << std::endl;
+    children << exportTypeInternal(*i, from, to, vmap);
+  }
+  TypeNode out = children.constructTypeNode();// FIXME thread safety
+  to_t = to->toType(out);
+  return out;
+}/* exportTypeInternal() */
+
+}/* CVC4::expr namespace */
+
+Type ExprManager::exportType(const Type& t, ExprManager* em, ExprManagerMapCollection& vmap) {
+  Assert(t.d_nodeManager != em->d_nodeManager,
+         "Can't export a Type to the same ExprManager");
+  NodeManagerScope ems(t.d_nodeManager);
+  return Type(em->d_nodeManager,
+              new TypeNode(expr::exportTypeInternal(*t.d_typeNode, t.d_nodeManager, em->d_nodeManager, vmap)));
+}
+
+${mkConst_implementations}
+
+}/* CVC4 namespace */
diff --git a/src/expr/expr_manager_template.h b/src/expr/expr_manager_template.h
new file mode 100644
index 0000000..ed9247e
--- /dev/null
+++ b/src/expr/expr_manager_template.h
@@ -0,0 +1,577 @@
+/*********************                                                        */
+/*! \file expr_manager_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Christopher L. Conway
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Public-facing expression manager interface
+ **
+ ** Public-facing expression manager interface.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__EXPR_MANAGER_H
+#define __CVC4__EXPR_MANAGER_H
+
+#include <vector>
+
+#include "expr/expr.h"
+#include "expr/kind.h"
+#include "expr/type.h"
+#include "util/statistics.h"
+#include "util/subrange_bound.h"
+
+${includes}
+
+// This is a hack, but an important one: if there's an error, the
+// compiler directs the user to the template file instead of the
+// generated one.  We don't want the user to modify the generated one,
+// since it'll get overwritten on a later build.
+#line 37 "${template}"
+
+namespace CVC4 {
+
+class Expr;
+class SmtEngine;
+class NodeManager;
+class Options;
+class IntStat;
+struct ExprManagerMapCollection;
+class ResourceManager;
+
+namespace expr {
+  namespace pickle {
+    class Pickler;
+  }/* CVC4::expr::pickle namespace */
+}/* CVC4::expr namespace */
+
+class CVC4_PUBLIC ExprManager {
+private:
+  /** The internal node manager */
+  NodeManager* d_nodeManager;
+
+  /** Counts of expressions and variables created of a given kind */
+  IntStat* d_exprStatisticsVars[LAST_TYPE + 1];
+  IntStat* d_exprStatistics[kind::LAST_KIND];
+
+  /**
+   * Returns the internal node manager.  This should only be used by
+   * internal users, i.e. the friend classes.
+   */
+  NodeManager* getNodeManager() const;
+
+  /**
+   * Check some things about a newly-created DatatypeType.
+   */
+  void checkResolvedDatatype(DatatypeType dtt) const;
+
+  /**
+   * SmtEngine will use all the internals, so it will grab the
+   * NodeManager.
+   */
+  friend class SmtEngine;
+
+  /** ExprManagerScope reaches in to get the NodeManager */
+  friend class ExprManagerScope;
+
+  /** NodeManager reaches in to get the NodeManager */
+  friend class NodeManager;
+
+  // undefined, private copy constructor and assignment op (disallow copy)
+  ExprManager(const ExprManager&) CVC4_UNDEFINED;
+  ExprManager& operator=(const ExprManager&) CVC4_UNDEFINED;
+
+  std::vector<DatatypeType> d_keep_dtt;
+  std::vector<Datatype> d_keep_dt;
+
+public:
+
+  /**
+   * Creates an expression manager with default options.
+   */
+  ExprManager();
+
+  /**
+   * Creates an expression manager.
+   *
+   * @param options the earlyTypeChecking field is used to configure
+   * whether to do at Expr creation time.
+   */
+  explicit ExprManager(const Options& options);
+
+  /**
+   * Destroys the expression manager. No will be deallocated at this point, so
+   * any expression references that used to be managed by this expression
+   * manager and are left-over are bad.
+   */
+  ~ExprManager() throw();
+
+  /** Get this expr manager's options */
+  const Options& getOptions() const;
+
+  /** Get this expr manager's resource manager */
+  ResourceManager* getResourceManager() throw();
+
+  /** Get the type for booleans */
+  BooleanType booleanType() const;
+
+  /** Get the type for strings. */
+  StringType stringType() const;
+
+  /** Get the type for regular expressions. */
+  RegExpType regExpType() const;
+
+  /** Get the type for reals. */
+  RealType realType() const;
+
+  /** Get the type for integers */
+  IntegerType integerType() const;
+
+  /** Get the type for rounding modes */
+  RoundingModeType roundingModeType() const;
+
+  /**
+   * Make a unary expression of a given kind (NOT, BVNOT, ...).
+   * @param kind the kind of expression
+   * @param child1 kind the kind of expression
+   * @return the expression
+   */
+  Expr mkExpr(Kind kind, Expr child1);
+
+  /**
+   * Make a binary expression of a given kind (AND, PLUS, ...).
+   * @param kind the kind of expression
+   * @param child1 the first child of the new expression
+   * @param child2 the second child of the new expression
+   * @return the expression
+   */
+  Expr mkExpr(Kind kind, Expr child1, Expr child2);
+
+  /**
+   * Make a 3-ary expression of a given kind (AND, PLUS, ...).
+   * @param kind the kind of expression
+   * @param child1 the first child of the new expression
+   * @param child2 the second child of the new expression
+   * @param child3 the third child of the new expression
+   * @return the expression
+   */
+  Expr mkExpr(Kind kind, Expr child1, Expr child2, Expr child3);
+
+  /**
+   * Make a 4-ary expression of a given kind (AND, PLUS, ...).
+   * @param kind the kind of expression
+   * @param child1 the first child of the new expression
+   * @param child2 the second child of the new expression
+   * @param child3 the third child of the new expression
+   * @param child4 the fourth child of the new expression
+   * @return the expression
+   */
+  Expr mkExpr(Kind kind, Expr child1, Expr child2, Expr child3, Expr child4);
+
+  /**
+   * Make a 5-ary expression of a given kind (AND, PLUS, ...).
+   * @param kind the kind of expression
+   * @param child1 the first child of the new expression
+   * @param child2 the second child of the new expression
+   * @param child3 the third child of the new expression
+   * @param child4 the fourth child of the new expression
+   * @param child5 the fifth child of the new expression
+   * @return the expression
+   */
+  Expr mkExpr(Kind kind, Expr child1, Expr child2, Expr child3, Expr child4,
+              Expr child5);
+
+  /**
+   * Make an n-ary expression of given kind given a vector of its
+   * children
+   *
+   * @param kind the kind of expression to build
+   * @param children the subexpressions
+   * @return the n-ary expression
+   */
+  Expr mkExpr(Kind kind, const std::vector<Expr>& children);
+
+  /**
+   * Make an n-ary expression of given kind given a first arg and
+   * a vector of its remaining children (this can be useful where the
+   * kind is parameterized operator, so the first arg is really an
+   * arg to the kind to construct an operator)
+   *
+   * @param kind the kind of expression to build
+   * @param child1 the first subexpression
+   * @param otherChildren the remaining subexpressions
+   * @return the n-ary expression
+   */
+  Expr mkExpr(Kind kind, Expr child1, const std::vector<Expr>& otherChildren);
+
+  /**
+   * Make a nullary parameterized expression with the given operator.
+   *
+   * @param opExpr the operator expression
+   * @return the nullary expression
+   */
+  Expr mkExpr(Expr opExpr);
+
+  /**
+   * Make a unary parameterized expression with the given operator.
+   *
+   * @param opExpr the operator expression
+   * @param child1 the subexpression
+   * @return the unary expression
+   */
+  Expr mkExpr(Expr opExpr, Expr child1);
+
+  /**
+   * Make a binary parameterized expression with the given operator.
+   *
+   * @param opExpr the operator expression
+   * @param child1 the first subexpression
+   * @param child2 the second subexpression
+   * @return the binary expression
+   */
+  Expr mkExpr(Expr opExpr, Expr child1, Expr child2);
+
+  /**
+   * Make a ternary parameterized expression with the given operator.
+   *
+   * @param opExpr the operator expression
+   * @param child1 the first subexpression
+   * @param child2 the second subexpression
+   * @param child3 the third subexpression
+   * @return the ternary expression
+   */
+  Expr mkExpr(Expr opExpr, Expr child1, Expr child2, Expr child3);
+
+  /**
+   * Make a quaternary parameterized expression with the given operator.
+   *
+   * @param opExpr the operator expression
+   * @param child1 the first subexpression
+   * @param child2 the second subexpression
+   * @param child3 the third subexpression
+   * @param child4 the fourth subexpression
+   * @return the quaternary expression
+   */
+  Expr mkExpr(Expr opExpr, Expr child1, Expr child2, Expr child3, Expr child4);
+
+  /**
+   * Make a quinary parameterized expression with the given operator.
+   *
+   * @param opExpr the operator expression
+   * @param child1 the first subexpression
+   * @param child2 the second subexpression
+   * @param child3 the third subexpression
+   * @param child4 the fourth subexpression
+   * @param child5 the fifth subexpression
+   * @return the quinary expression
+   */
+  Expr mkExpr(Expr opExpr, Expr child1, Expr child2, Expr child3, Expr child4,
+              Expr child5);
+
+  /**
+   * Make an n-ary expression of given operator to apply and a vector
+   * of its children
+   *
+   * @param opExpr the operator expression
+   * @param children the subexpressions
+   * @return the n-ary expression
+   */
+  Expr mkExpr(Expr opExpr, const std::vector<Expr>& children);
+
+  /** Create a constant of type T */
+  template <class T>
+  Expr mkConst(const T&);
+
+  /**
+   * Create an Expr by applying an associative operator to the children.
+   * If <code>children.size()</code> is greater than the max arity for
+   * <code>kind</code>, then the expression will be broken up into
+   * suitably-sized chunks, taking advantage of the associativity of
+   * <code>kind</code>. For example, if kind <code>FOO</code> has max arity
+   * 2, then calling <code>mkAssociative(FOO,a,b,c)</code> will return
+   * <code>(FOO (FOO a b) c)</code> or <code>(FOO a (FOO b c))</code>.
+   * The order of the arguments will be preserved in a left-to-right
+   * traversal of the resulting tree.
+   */
+  Expr mkAssociative(Kind kind, const std::vector<Expr>& children);
+
+  /**
+   * Determine whether Exprs of a particular Kind have operators.
+   * @returns true if Exprs of Kind k have operators.
+   */
+  static bool hasOperator(Kind k);
+
+  /**
+   * Get the (singleton) operator of an OPERATOR-kinded kind.  The
+   * returned Expr e will have kind BUILTIN, and calling
+   * e.getConst<CVC4::Kind>() will yield k.
+   */
+  Expr operatorOf(Kind k);
+  
+  /** Get a Kind from an operator expression */
+  Kind operatorToKind(Expr e);
+  
+  /** Make a function type from domain to range. */
+  FunctionType mkFunctionType(Type domain, Type range);
+
+  /**
+   * Make a function type with input types from argTypes.
+   * <code>argTypes</code> must have at least one element.
+   */
+  FunctionType mkFunctionType(const std::vector<Type>& argTypes, Type range);
+
+  /**
+   * Make a function type with input types from
+   * <code>sorts[0..sorts.size()-2]</code> and result type
+   * <code>sorts[sorts.size()-1]</code>. <code>sorts</code> must have
+   * at least 2 elements.
+   */
+  FunctionType mkFunctionType(const std::vector<Type>& sorts);
+
+  /**
+   * Make a predicate type with input types from
+   * <code>sorts</code>. The result with be a function type with range
+   * <code>BOOLEAN</code>. <code>sorts</code> must have at least one
+   * element.
+   */
+  FunctionType mkPredicateType(const std::vector<Type>& sorts);
+
+  /**
+   * Make a tuple type with types from
+   * <code>types[0..types.size()-1]</code>.  <code>types</code> must
+   * have at least one element.
+   */
+  DatatypeType mkTupleType(const std::vector<Type>& types);
+
+  /**
+   * Make a record type with types from the rec parameter.
+   */
+  DatatypeType mkRecordType(const Record& rec);
+
+  /**
+   * Make a symbolic expressiontype with types from
+   * <code>types[0..types.size()-1]</code>.  <code>types</code> may
+   * have any number of elements.
+   */
+  SExprType mkSExprType(const std::vector<Type>& types);
+
+  /** Make a type representing a floating-point type with the given parameters. */
+  FloatingPointType mkFloatingPointType(unsigned exp, unsigned sig) const;
+
+  /** Make a type representing a bit-vector of the given size. */
+  BitVectorType mkBitVectorType(unsigned size) const;
+
+  /** Make the type of arrays with the given parameterization. */
+  ArrayType mkArrayType(Type indexType, Type constituentType) const;
+
+  /** Make the type of set with the given parameterization. */
+  SetType mkSetType(Type elementType) const;
+
+  /** Make a type representing the given datatype. */
+  DatatypeType mkDatatypeType(Datatype& datatype);
+
+  /**
+   * Make a set of types representing the given datatypes, which may be
+   * mutually recursive.
+   */
+  std::vector<DatatypeType> mkMutualDatatypeTypes(std::vector<Datatype>& datatypes);
+
+  /**
+   * Make a set of types representing the given datatypes, which may
+   * be mutually recursive.  unresolvedTypes is a set of SortTypes
+   * that were used as placeholders in the Datatypes for the Datatypes
+   * of the same name.  This is just a more complicated version of the
+   * above mkMutualDatatypeTypes() function, but is required to handle
+   * complex types.
+   *
+   * For example, unresolvedTypes might contain the single sort "list"
+   * (with that name reported from SortType::getName()).  The
+   * datatypes list might have the single datatype
+   *
+   *   DATATYPE
+   *     list = cons(car:ARRAY INT OF list, cdr:list) | nil;
+   *   END;
+   *
+   * To represent the Type of the array, the user had to create a
+   * placeholder type (an uninterpreted sort) to stand for "list" in
+   * the type of "car".  It is this placeholder sort that should be
+   * passed in unresolvedTypes.  If the datatype was of the simpler
+   * form:
+   *
+   *   DATATYPE
+   *     list = cons(car:list, cdr:list) | nil;
+   *   END;
+   *
+   * then no complicated Type needs to be created, and the above,
+   * simpler form of mkMutualDatatypeTypes() is enough.
+   */
+  std::vector<DatatypeType> mkMutualDatatypeTypes(std::vector<Datatype>& datatypes, std::set<Type>& unresolvedTypes);
+
+  /**
+   * Make a type representing a constructor with the given parameterization.
+   */
+  ConstructorType mkConstructorType(const DatatypeConstructor& constructor, Type range) const;
+
+  /** Make a type representing a selector with the given parameterization. */
+  SelectorType mkSelectorType(Type domain, Type range) const;
+
+  /** Make a type representing a tester with the given parameterization. */
+  TesterType mkTesterType(Type domain) const;
+
+  /** Bits for use in mkSort() flags. */
+  enum {
+    SORT_FLAG_NONE = 0,
+    SORT_FLAG_PLACEHOLDER = 1
+  };/* enum */
+
+  /** Make a new sort with the given name. */
+  SortType mkSort(const std::string& name, uint32_t flags = SORT_FLAG_NONE) const;
+
+  /** Make a sort constructor from a name and arity. */
+  SortConstructorType mkSortConstructor(const std::string& name,
+                                        size_t arity) const;
+
+  /**
+   * Make a predicate subtype type defined by the given LAMBDA
+   * expression.  A TypeCheckingException can be thrown if lambda is
+   * not a LAMBDA, or is ill-typed, or if CVC4 fails at proving that
+   * the resulting predicate subtype is inhabited.
+   */
+  // not in release 1.0
+  //Type mkPredicateSubtype(Expr lambda)
+  //  throw(TypeCheckingException);
+
+  /**
+   * Make a predicate subtype type defined by the given LAMBDA
+   * expression and whose non-emptiness is witnessed by the given
+   * witness.  A TypeCheckingException can be thrown if lambda is not
+   * a LAMBDA, or is ill-typed, or if the witness is not a witness or
+   * ill-typed.
+   */
+  // not in release 1.0
+  //Type mkPredicateSubtype(Expr lambda, Expr witness)
+  //  throw(TypeCheckingException);
+
+  /**
+   * Make an integer subrange type as defined by the argument.
+   */
+  Type mkSubrangeType(const SubrangeBounds& bounds)
+    throw(TypeCheckingException);
+
+  /** Get the type of an expression */
+  Type getType(Expr e, bool check = false)
+    throw(TypeCheckingException);
+
+  /** Bits for use in mkVar() flags. */
+  enum {
+    VAR_FLAG_NONE = 0,
+    VAR_FLAG_GLOBAL = 1,
+    VAR_FLAG_DEFINED = 2
+  };/* enum */
+
+  /**
+   * Create a new, fresh variable.  This variable is guaranteed to be
+   * distinct from every variable thus far in the ExprManager, even
+   * if it shares a name with another; this is to support any kind of
+   * scoping policy on top of ExprManager.  The SymbolTable class
+   * can be used to store and lookup symbols by name, if desired.
+   *
+   * @param name a name to associate to the fresh new variable
+   * @param type the type for the new variable
+   * @param flags - VAR_FLAG_NONE - no flags;
+   * VAR_FLAG_GLOBAL - whether this variable is to be
+   * considered "global" or not.  Note that this information isn't
+   * used by the ExprManager, but is passed on to the ExprManager's
+   * event subscribers like the model-building service; if isGlobal
+   * is true, this newly-created variable will still available in
+   * models generated after an intervening pop.
+   * VAR_FLAG_DEFINED - if this is to be a "defined" symbol, e.g., for
+   * use with SmtEngine::defineFunction().  This keeps a declaration
+   * from being emitted in API dumps (since a subsequent definition is
+   * expected to be dumped instead).
+   */
+  Expr mkVar(const std::string& name, Type type, uint32_t flags = VAR_FLAG_NONE);
+
+  /**
+   * Create a (nameless) new, fresh variable.  This variable is guaranteed
+   * to be distinct from every variable thus far in the ExprManager.
+   *
+   * @param type the type for the new variable
+   * @param flags - VAR_FLAG_GLOBAL - whether this variable is to be considered "global"
+   * or not.  Note that this information isn't used by the ExprManager,
+   * but is passed on to the ExprManager's event subscribers like the
+   * model-building service; if isGlobal is true, this newly-created
+   * variable will still available in models generated after an
+   * intervening pop.
+   */
+  Expr mkVar(Type type, uint32_t flags = VAR_FLAG_NONE);
+
+  /**
+   * Create a new, fresh variable for use in a binder expression
+   * (the BOUND_VAR_LIST of a FORALL, EXISTS, or LAMBDA).  It is
+   * an error for this bound variable to exist outside of a binder,
+   * and it should also only be used in a single binder expression.
+   * That is, two distinct FORALL expressions should use entirely
+   * disjoint sets of bound variables (however, a single FORALL
+   * expression can be used in multiple places in a formula without
+   * a problem).  This newly-created bound variable is guaranteed to
+   * be distinct from every variable thus far in the ExprManager, even
+   * if it shares a name with another; this is to support any kind of
+   * scoping policy on top of ExprManager.  The SymbolTable class
+   * can be used to store and lookup symbols by name, if desired.
+   *
+   * @param name a name to associate to the fresh new bound variable
+   * @param type the type for the new bound variable
+   */
+  Expr mkBoundVar(const std::string& name, Type type);
+
+  /**
+   * Create a (nameless) new, fresh variable for use in a binder
+   * expression (the BOUND_VAR_LIST of a FORALL, EXISTS, or LAMBDA).
+   * It is an error for this bound variable to exist outside of a
+   * binder, and it should also only be used in a single binder
+   * expression.  That is, two distinct FORALL expressions should use
+   * entirely disjoint sets of bound variables (however, a single FORALL
+   * expression can be used in multiple places in a formula without
+   * a problem).  This newly-created bound variable is guaranteed to
+   * be distinct from every variable thus far in the ExprManager.
+   *
+   * @param type the type for the new bound variable
+   */
+  Expr mkBoundVar(Type type);
+  
+  /**
+   * Create unique variable of type 
+   */
+  Expr mkUniqueVar( Type type, Kind k);
+
+  /** Get a reference to the statistics registry for this ExprManager */
+  Statistics getStatistics() const throw();
+
+  /** Get a reference to the statistics registry for this ExprManager */
+  SExpr getStatistic(const std::string& name) const throw();
+
+  /** Export an expr to a different ExprManager */
+  //static Expr exportExpr(const Expr& e, ExprManager* em);
+  /** Export a type to a different ExprManager */
+  static Type exportType(const Type& t, ExprManager* em, ExprManagerMapCollection& vmap);
+
+  /** Returns the minimum arity of the given kind. */
+  static unsigned minArity(Kind kind);
+
+  /** Returns the maximum arity of the given kind. */
+  static unsigned maxArity(Kind kind);
+
+};/* class ExprManager */
+
+${mkConst_instantiations}
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__EXPR_MANAGER_H */
diff --git a/src/expr/expr_stream.h b/src/expr/expr_stream.h
new file mode 100644
index 0000000..d3dbd29
--- /dev/null
+++ b/src/expr/expr_stream.h
@@ -0,0 +1,45 @@
+/*********************                                                        */
+/*! \file expr_stream.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A stream interface for expressions
+ **
+ ** A stream interface for expressions.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__EXPR_STREAM_H
+#define __CVC4__EXPR_STREAM_H
+
+#include "expr/expr.h"
+
+namespace CVC4 {
+
+/**
+ * A pure-virtual stream interface for expressions.  Can be used to
+ * communicate streams of expressions between different parts of CVC4.
+ */
+class CVC4_PUBLIC ExprStream {
+public:
+  /** Virtual destructor; this implementation does nothing. */
+  virtual ~ExprStream() {}
+
+  /**
+   * Get the next expression in the stream (advancing the stream
+   * pointer as a side effect.)
+   */
+  virtual Expr nextExpr() = 0;
+};/* class ExprStream */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__EXPR_STREAM_H */
+
diff --git a/src/expr/expr_stream.i b/src/expr/expr_stream.i
new file mode 100644
index 0000000..f114462
--- /dev/null
+++ b/src/expr/expr_stream.i
@@ -0,0 +1,5 @@
+%{
+#include "expr/expr_stream.h"
+%}
+
+%include "expr/expr_stream.h"
diff --git a/src/expr/expr_template.cpp b/src/expr/expr_template.cpp
new file mode 100644
index 0000000..dad437b
--- /dev/null
+++ b/src/expr/expr_template.cpp
@@ -0,0 +1,595 @@
+/*********************                                                        */
+/*! \file expr_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Kshitij Bansal, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Public-facing expression interface, implementation.
+ **
+ ** Public-facing expression interface, implementation.
+ **/
+#include "expr/expr.h"
+
+#include <iterator>
+#include <utility>
+#include <vector>
+
+#include "base/cvc4_assert.h"
+#include "expr/node.h"
+#include "expr/expr_manager_scope.h"
+#include "expr/variable_type_map.h"
+#include "expr/node_manager_attributes.h"
+
+${includes}
+
+// This is a hack, but an important one: if there's an error, the
+// compiler directs the user to the template file instead of the
+// generated one.  We don't want the user to modify the generated one,
+// since it'll get overwritten on a later build.
+#line 35 "${template}"
+
+using namespace CVC4::kind;
+using namespace std;
+
+namespace CVC4 {
+
+class ExprManager;
+
+std::ostream& operator<<(std::ostream& out, const TypeCheckingException& e) {
+  return out << e.getMessage() << ": " << e.getExpression();
+}
+
+std::ostream& operator<<(std::ostream& out, const Expr& e) {
+  if(e.isNull()) {
+    return out << "null";
+  } else {
+    ExprManagerScope ems(*e.getExprManager());
+    return out << e.getNode();
+  }
+}
+
+TypeCheckingException::TypeCheckingException(const TypeCheckingException& t) throw() :
+  Exception(t.d_msg), d_expr(new Expr(t.getExpression())) {
+}
+
+TypeCheckingException::TypeCheckingException(const Expr& expr, std::string message) throw() :
+  Exception(message), d_expr(new Expr(expr)) {
+}
+
+TypeCheckingException::TypeCheckingException(ExprManager* em,
+                                             const TypeCheckingExceptionPrivate* exc) throw() :
+  Exception(exc->getMessage()), d_expr(new Expr(em, new Node(exc->getNode()))) {
+}
+
+TypeCheckingException::~TypeCheckingException() throw() {
+  delete d_expr;
+}
+
+void TypeCheckingException::toStream(std::ostream& os) const throw() {
+  os << "Error during type checking: " << d_msg << endl
+     << "The ill-typed expression: " << *d_expr;
+}
+
+Expr TypeCheckingException::getExpression() const throw() {
+  return *d_expr;
+}
+
+Expr::Expr() :
+  d_node(new Node),
+  d_exprManager(NULL) {
+}
+
+Expr::Expr(ExprManager* em, Node* node) :
+  d_node(node),
+  d_exprManager(em) {
+}
+
+Expr::Expr(const Expr& e) :
+  d_node(new Node(*e.d_node)),
+  d_exprManager(e.d_exprManager) {
+}
+
+Expr::~Expr() {
+  ExprManagerScope ems(*this);
+  delete d_node;
+}
+
+ExprManager* Expr::getExprManager() const {
+  return d_exprManager;
+}
+
+namespace expr {
+
+static Node exportConstant(TNode n, NodeManager* to, ExprManagerMapCollection& vmap);
+
+class ExportPrivate {
+private:
+  typedef std::hash_map <NodeTemplate<false>, NodeTemplate<true>, TNodeHashFunction> ExportCache;
+  ExprManager* from;
+  ExprManager* to;
+  ExprManagerMapCollection& vmap;
+  uint32_t flags;
+  ExportCache exportCache;
+public:
+  ExportPrivate(ExprManager* from, ExprManager* to, ExprManagerMapCollection& vmap, uint32_t flags) : from(from), to(to), vmap(vmap), flags(flags) {}
+  Node exportInternal(TNode n) {
+
+    if(n.isNull()) return Node::null();
+    if(theory::kindToTheoryId(n.getKind()) == theory::THEORY_DATATYPES) {
+      throw ExportUnsupportedException
+        ("export of node belonging to theory of DATATYPES kinds unsupported");
+    }
+
+    if(n.getMetaKind() == metakind::CONSTANT) {
+      if(n.getKind() == kind::EMPTYSET) {
+        Type type = from->exportType(n.getConst< ::CVC4::EmptySet >().getType(), to, vmap);
+        return to->mkConst(::CVC4::EmptySet(type));
+      }
+      return exportConstant(n, NodeManager::fromExprManager(to), vmap);
+    } else if(n.isVar()) {
+      Expr from_e(from, new Node(n));
+      Expr& to_e = vmap.d_typeMap[from_e];
+      if(! to_e.isNull()) {
+        Debug("export") << "+ mapped `" << from_e << "' to `" << to_e << "'" << std::endl;
+        return to_e.getNode();
+      } else {
+        // construct new variable in other manager:
+        // to_e is a ref, so this inserts from_e -> to_e
+        std::string name;
+        Type type = from->exportType(from_e.getType(), to, vmap);
+        if(Node::fromExpr(from_e).getAttribute(VarNameAttr(), name)) {
+          // temporarily set the node manager to NULL; this gets around
+          // a check that mkVar isn't called internally
+
+          if(n.getKind() == kind::BOUND_VAR_LIST || n.getKind() == kind::BOUND_VARIABLE) {
+            NodeManagerScope nullScope(NULL);
+            to_e = to->mkBoundVar(name, type);// FIXME thread safety
+          } else if(n.getKind() == kind::VARIABLE) {
+            bool isGlobal;
+            Node::fromExpr(from_e).getAttribute(GlobalVarAttr(), isGlobal);
+            NodeManagerScope nullScope(NULL);
+            to_e = to->mkVar(name, type, isGlobal ? ExprManager::VAR_FLAG_GLOBAL : flags);// FIXME thread safety
+          } else if(n.getKind() == kind::SKOLEM) {
+            // skolems are only available at the Node level (not the Expr level)
+            TypeNode typeNode = TypeNode::fromType(type);
+            NodeManager* to_nm = NodeManager::fromExprManager(to);
+            Node n = to_nm->mkSkolem(name, typeNode, "is a skolem variable imported from another ExprManager");// FIXME thread safety
+            to_e = n.toExpr();
+          } else {
+            Unhandled();
+          }
+
+          Debug("export") << "+ exported var `" << from_e << "'[" << from_e.getId() << "] with name `" << name << "' and type `" << from_e.getType() << "' to `" << to_e << "'[" << to_e.getId() << "] with type `" << type << "'" << std::endl;
+        } else {
+          // temporarily set the node manager to NULL; this gets around
+          // a check that mkVar isn't called internally
+          NodeManagerScope nullScope(NULL);
+          to_e = to->mkVar(type);// FIXME thread safety
+          Debug("export") << "+ exported unnamed var `" << from_e << "' with type `" << from_e.getType() << "' to `" << to_e << "' with type `" << type << "'" << std::endl;
+        }
+        uint64_t to_int = (uint64_t)(to_e.getNode().d_nv);
+        uint64_t from_int = (uint64_t)(from_e.getNode().d_nv);
+        vmap.d_from[to_int] = from_int;
+        vmap.d_to[from_int] = to_int;
+        vmap.d_typeMap[to_e] = from_e;// insert other direction too
+        return Node::fromExpr(to_e);
+      }
+    } else {
+      if(exportCache.find(n) != exportCache.end()) {
+        return exportCache[n];
+      }
+
+      std::vector<Node> children;
+      Debug("export") << "n: " << n << std::endl;
+      if(n.getMetaKind() == kind::metakind::PARAMETERIZED) {
+        Debug("export") << "+ parameterized, op is " << n.getOperator() << std::endl;
+        children.reserve(n.getNumChildren() + 1);
+        children.push_back(exportInternal(n.getOperator()));
+      } else {
+        children.reserve(n.getNumChildren());
+      }
+      for(TNode::iterator i = n.begin(), i_end = n.end(); i != i_end; ++i) {
+        Debug("export") << "+ child: " << *i << std::endl;
+        children.push_back(exportInternal(*i));
+      }
+      if(Debug.isOn("export")) {
+        ExprManagerScope ems(*to);
+        Debug("export") << "children for export from " << n << std::endl;
+        for(std::vector<Node>::iterator i = children.begin(), i_end = children.end(); i != i_end; ++i) {
+          Debug("export") << "  child: " << *i << std::endl;
+        }
+      }
+
+      // FIXME thread safety
+      Node ret = NodeManager::fromExprManager(to)->mkNode(n.getKind(), children);
+
+      exportCache[n] = ret;
+      return ret;
+    }
+  }/* exportInternal() */
+
+};
+
+}/* CVC4::expr namespace */
+
+Expr Expr::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap,
+                    uint32_t flags /* = 0 */) const {
+  Assert(d_exprManager != exprManager,
+         "No sense in cloning an Expr in the same ExprManager");
+  ExprManagerScope ems(*this);
+  return Expr(exprManager, new Node(expr::ExportPrivate(d_exprManager, exprManager, variableMap, flags).exportInternal(*d_node)));
+}
+
+Expr& Expr::operator=(const Expr& e) {
+  Assert(d_node != NULL, "Unexpected NULL expression pointer!");
+  Assert(e.d_node != NULL, "Unexpected NULL expression pointer!");
+
+  if(this != &e) {
+    if(d_exprManager == e.d_exprManager) {
+      ExprManagerScope ems(*this);
+      *d_node = *e.d_node;
+    } else {
+      // This happens more than you think---every time you set to or
+      // from the null Expr.  It's tricky because each node manager
+      // must be in play at the right time.
+
+      ExprManagerScope ems1(*this);
+      *d_node = Node::null();
+
+      ExprManagerScope ems2(e);
+      *d_node = *e.d_node;
+
+      d_exprManager = e.d_exprManager;
+    }
+  }
+  return *this;
+}
+
+bool Expr::operator==(const Expr& e) const {
+  if(d_exprManager != e.d_exprManager) {
+    return false;
+  }
+  ExprManagerScope ems(*this);
+  Assert(d_node != NULL, "Unexpected NULL expression pointer!");
+  Assert(e.d_node != NULL, "Unexpected NULL expression pointer!");
+  return *d_node == *e.d_node;
+}
+
+bool Expr::operator!=(const Expr& e) const {
+  return !(*this == e);
+}
+
+bool Expr::operator<(const Expr& e) const {
+  Assert(d_node != NULL, "Unexpected NULL expression pointer!");
+  Assert(e.d_node != NULL, "Unexpected NULL expression pointer!");
+  if(isNull() && !e.isNull()) {
+    return true;
+  }
+  ExprManagerScope ems(*this);
+  return *d_node < *e.d_node;
+}
+
+bool Expr::operator>(const Expr& e) const {
+  Assert(d_node != NULL, "Unexpected NULL expression pointer!");
+  Assert(e.d_node != NULL, "Unexpected NULL expression pointer!");
+  if(isNull() && !e.isNull()) {
+    return true;
+  }
+  ExprManagerScope ems(*this);
+  return *d_node > *e.d_node;
+}
+
+unsigned long Expr::getId() const {
+  ExprManagerScope ems(*this);
+  Assert(d_node != NULL, "Unexpected NULL expression pointer!");
+  return d_node->getId();
+}
+
+Kind Expr::getKind() const {
+  ExprManagerScope ems(*this);
+  Assert(d_node != NULL, "Unexpected NULL expression pointer!");
+  return d_node->getKind();
+}
+
+size_t Expr::getNumChildren() const {
+  ExprManagerScope ems(*this);
+  Assert(d_node != NULL, "Unexpected NULL expression pointer!");
+  return d_node->getNumChildren();
+}
+
+Expr Expr::operator[](unsigned i) const {
+  ExprManagerScope ems(*this);
+  Assert(d_node != NULL, "Unexpected NULL expression pointer!");
+  Assert(i >= 0 && i < d_node->getNumChildren(), "Child index out of bounds");
+  return Expr(d_exprManager, new Node((*d_node)[i]));
+}
+
+bool Expr::hasOperator() const {
+  ExprManagerScope ems(*this);
+  Assert(d_node != NULL, "Unexpected NULL expression pointer!");
+  return d_node->hasOperator();
+}
+
+Expr Expr::getOperator() const {
+  ExprManagerScope ems(*this);
+  Assert(d_node != NULL, "Unexpected NULL expression pointer!");
+  PrettyCheckArgument(d_node->hasOperator(), *this,
+                      "Expr::getOperator() called on an Expr with no operator");
+  return Expr(d_exprManager, new Node(d_node->getOperator()));
+}
+
+Type Expr::getType(bool check) const throw (TypeCheckingException) {
+  ExprManagerScope ems(*this);
+  Assert(d_node != NULL, "Unexpected NULL expression pointer!");
+  PrettyCheckArgument(!d_node->isNull(), this,
+                      "Can't get type of null expression!");
+  return d_exprManager->getType(*this, check);
+}
+
+Expr Expr::substitute(Expr e, Expr replacement) const {
+  ExprManagerScope ems(*this);
+  return Expr(d_exprManager, new Node(d_node->substitute(TNode(*e.d_node), TNode(*replacement.d_node))));
+}
+
+template <class Iterator>
+class NodeIteratorAdaptor : public std::iterator<std::input_iterator_tag, Node> {
+  Iterator d_iterator;
+public:
+  NodeIteratorAdaptor(Iterator i) : d_iterator(i) {
+  }
+  NodeIteratorAdaptor& operator++() { ++d_iterator; return *this; }
+  NodeIteratorAdaptor operator++(int) { NodeIteratorAdaptor i(d_iterator); ++d_iterator; return i; }
+  bool operator==(NodeIteratorAdaptor i) { return d_iterator == i.d_iterator; }
+  bool operator!=(NodeIteratorAdaptor i) { return !(*this == i); }
+  Node operator*() { return Node::fromExpr(*d_iterator); }
+};/* class NodeIteratorAdaptor */
+
+template <class Iterator>
+static inline NodeIteratorAdaptor<Iterator> mkNodeIteratorAdaptor(Iterator i) {
+  return NodeIteratorAdaptor<Iterator>(i);
+}
+
+Expr Expr::substitute(const std::vector<Expr> exes,
+                      const std::vector<Expr>& replacements) const {
+  ExprManagerScope ems(*this);
+  return Expr(d_exprManager,
+              new Node(d_node->substitute(mkNodeIteratorAdaptor(exes.begin()),
+                                          mkNodeIteratorAdaptor(exes.end()),
+                                          mkNodeIteratorAdaptor(replacements.begin()),
+                                          mkNodeIteratorAdaptor(replacements.end()))));
+}
+
+template <class Iterator>
+class NodePairIteratorAdaptor : public std::iterator<std::input_iterator_tag, pair<Node, Node> > {
+  Iterator d_iterator;
+public:
+  NodePairIteratorAdaptor(Iterator i) : d_iterator(i) {
+  }
+  NodePairIteratorAdaptor& operator++() { ++d_iterator; return *this; }
+  NodePairIteratorAdaptor operator++(int) { NodePairIteratorAdaptor i(d_iterator); ++d_iterator; return i; }
+  bool operator==(NodePairIteratorAdaptor i) { return d_iterator == i.d_iterator; }
+  bool operator!=(NodePairIteratorAdaptor i) { return !(*this == i); }
+  pair<Node, Node> operator*() { return make_pair(Node::fromExpr((*d_iterator).first), Node::fromExpr((*d_iterator).second)); }
+};/* class NodePairIteratorAdaptor */
+
+template <class Iterator>
+static inline NodePairIteratorAdaptor<Iterator> mkNodePairIteratorAdaptor(Iterator i) {
+  return NodePairIteratorAdaptor<Iterator>(i);
+}
+
+Expr Expr::substitute(const std::hash_map<Expr, Expr, ExprHashFunction> map) const {
+  ExprManagerScope ems(*this);
+  return Expr(d_exprManager, new Node(d_node->substitute(mkNodePairIteratorAdaptor(map.begin()), mkNodePairIteratorAdaptor(map.end()))));
+}
+
+Expr::const_iterator::const_iterator() :
+  d_iterator(NULL) {
+}
+Expr::const_iterator::const_iterator(ExprManager* em, void* v) :
+  d_exprManager(em),
+  d_iterator(v) {
+}
+Expr::const_iterator::const_iterator(const const_iterator& it) {
+  if(it.d_iterator == NULL) {
+    d_iterator = NULL;
+  } else {
+    d_exprManager = it.d_exprManager;
+    ExprManagerScope ems(*d_exprManager);
+    d_iterator = new Node::iterator(*reinterpret_cast<Node::iterator*>(it.d_iterator));
+  }
+}
+Expr::const_iterator& Expr::const_iterator::operator=(const const_iterator& it) {
+  if(d_iterator != NULL) {
+    ExprManagerScope ems(*d_exprManager);
+    delete reinterpret_cast<Node::iterator*>(d_iterator);
+  }
+  d_exprManager = it.d_exprManager;
+  ExprManagerScope ems(*d_exprManager);
+  d_iterator = new Node::iterator(*reinterpret_cast<Node::iterator*>(it.d_iterator));
+  return *this;
+}
+Expr::const_iterator::~const_iterator() {
+  if(d_iterator != NULL) {
+    ExprManagerScope ems(*d_exprManager);
+    delete reinterpret_cast<Node::iterator*>(d_iterator);
+  }
+}
+bool Expr::const_iterator::operator==(const const_iterator& it) const {
+  if(d_iterator == NULL || it.d_iterator == NULL) {
+    return false;
+  }
+  return *reinterpret_cast<Node::iterator*>(d_iterator) ==
+    *reinterpret_cast<Node::iterator*>(it.d_iterator);
+}
+Expr::const_iterator& Expr::const_iterator::operator++() {
+  Assert(d_iterator != NULL);
+  ExprManagerScope ems(*d_exprManager);
+  ++*reinterpret_cast<Node::iterator*>(d_iterator);
+  return *this;
+}
+Expr::const_iterator Expr::const_iterator::operator++(int) {
+  Assert(d_iterator != NULL);
+  ExprManagerScope ems(*d_exprManager);
+  const_iterator it = *this;
+  ++*reinterpret_cast<Node::iterator*>(d_iterator);
+  return it;
+}
+Expr Expr::const_iterator::operator*() const {
+  Assert(d_iterator != NULL);
+  ExprManagerScope ems(*d_exprManager);
+  return (**reinterpret_cast<Node::iterator*>(d_iterator)).toExpr();
+}
+
+Expr::const_iterator Expr::begin() const {
+  ExprManagerScope ems(*d_exprManager);
+  return Expr::const_iterator(d_exprManager, new Node::iterator(d_node->begin()));
+}
+
+Expr::const_iterator Expr::end() const {
+  ExprManagerScope ems(*d_exprManager);
+  return Expr::const_iterator(d_exprManager, new Node::iterator(d_node->end()));
+}
+
+std::string Expr::toString() const {
+  ExprManagerScope ems(*this);
+  Assert(d_node != NULL, "Unexpected NULL expression pointer!");
+  return d_node->toString();
+}
+
+bool Expr::isNull() const {
+  ExprManagerScope ems(*this);
+  Assert(d_node != NULL, "Unexpected NULL expression pointer!");
+  return d_node->isNull();
+}
+
+bool Expr::isVariable() const {
+  ExprManagerScope ems(*this);
+  Assert(d_node != NULL, "Unexpected NULL expression pointer!");
+  return d_node->getMetaKind() == kind::metakind::VARIABLE;
+}
+
+bool Expr::isConst() const {
+  ExprManagerScope ems(*this);
+  Assert(d_node != NULL, "Unexpected NULL expression pointer!");
+  return d_node->isConst();
+}
+
+void Expr::toStream(std::ostream& out, int depth, bool types, size_t dag,
+                    OutputLanguage language) const {
+  ExprManagerScope ems(*this);
+  d_node->toStream(out, depth, types, dag, language);
+}
+
+Node Expr::getNode() const throw() {
+  return *d_node;
+}
+
+TNode Expr::getTNode() const throw() {
+  return *d_node;
+}
+
+Expr Expr::notExpr() const {
+  Assert(d_exprManager != NULL,
+         "Don't have an expression manager for this expression!");
+  return d_exprManager->mkExpr(NOT, *this);
+}
+
+Expr Expr::andExpr(const Expr& e) const {
+  Assert(d_exprManager != NULL,
+         "Don't have an expression manager for this expression!");
+  PrettyCheckArgument(d_exprManager == e.d_exprManager, e,
+                      "Different expression managers!");
+  return d_exprManager->mkExpr(AND, *this, e);
+}
+
+Expr Expr::orExpr(const Expr& e) const {
+  Assert(d_exprManager != NULL,
+         "Don't have an expression manager for this expression!");
+  PrettyCheckArgument(d_exprManager == e.d_exprManager, e,
+                      "Different expression managers!");
+  return d_exprManager->mkExpr(OR, *this, e);
+}
+
+Expr Expr::xorExpr(const Expr& e) const {
+  Assert(d_exprManager != NULL,
+         "Don't have an expression manager for this expression!");
+  PrettyCheckArgument(d_exprManager == e.d_exprManager, e,
+                      "Different expression managers!");
+  return d_exprManager->mkExpr(XOR, *this, e);
+}
+
+Expr Expr::iffExpr(const Expr& e) const {
+  Assert(d_exprManager != NULL,
+         "Don't have an expression manager for this expression!");
+  PrettyCheckArgument(d_exprManager == e.d_exprManager, e,
+                      "Different expression managers!");
+  return d_exprManager->mkExpr(EQUAL, *this, e);
+}
+
+Expr Expr::impExpr(const Expr& e) const {
+  Assert(d_exprManager != NULL,
+         "Don't have an expression manager for this expression!");
+  PrettyCheckArgument(d_exprManager == e.d_exprManager, e,
+                      "Different expression managers!");
+  return d_exprManager->mkExpr(IMPLIES, *this, e);
+}
+
+Expr Expr::iteExpr(const Expr& then_e,
+                           const Expr& else_e) const {
+  Assert(d_exprManager != NULL,
+         "Don't have an expression manager for this expression!");
+  PrettyCheckArgument(d_exprManager == then_e.d_exprManager, then_e,
+                      "Different expression managers!");
+  PrettyCheckArgument(d_exprManager == else_e.d_exprManager, else_e,
+                      "Different expression managers!");
+  return d_exprManager->mkExpr(ITE, *this, then_e, else_e);
+}
+
+void Expr::printAst(std::ostream & o, int indent) const {
+  ExprManagerScope ems(*this);
+  getNode().printAst(o, indent);
+}
+
+void Expr::debugPrint() {
+#ifndef CVC4_MUZZLE
+  printAst(Warning());
+  Warning().flush();
+#endif /* ! CVC4_MUZZLE */
+}
+
+${getConst_implementations}
+
+namespace expr {
+
+static Node exportConstant(TNode n, NodeManager* to, ExprManagerMapCollection& vmap) {
+  Assert(n.isConst());
+  Debug("export") << "constant: " << n << std::endl;
+
+  if(n.getKind() == kind::STORE_ALL) {
+    // Special export for ArrayStoreAll.
+    //
+    // Ultimately we'll need special cases also for RecordUpdate,
+    // TupleUpdate, AscriptionType, and other constant-metakinded
+    // expressions that embed types.  For now datatypes aren't supported
+    // for export so those don't matter.
+    ExprManager* toEm = to->toExprManager();
+    const ArrayStoreAll& asa = n.getConst<ArrayStoreAll>();
+    return to->mkConst(ArrayStoreAll(asa.getType().exportTo(toEm, vmap),
+                                     asa.getExpr().exportTo(toEm, vmap)));
+  }
+
+  switch(n.getKind()) {
+${exportConstant_cases}
+
+  default: Unhandled(n.getKind());
+  }
+
+}/* exportConstant() */
+
+}/* CVC4::expr namespace */
+}/* CVC4 namespace */
diff --git a/src/expr/expr_template.h b/src/expr/expr_template.h
new file mode 100644
index 0000000..5c3f89e
--- /dev/null
+++ b/src/expr/expr_template.h
@@ -0,0 +1,564 @@
+/*********************                                                        */
+/*! \file expr_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Christopher L. Conway
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Public-facing expression interface.
+ **
+ ** Public-facing expression interface.
+ **/
+
+#include "cvc4_public.h"
+
+// putting the constant-payload #includes up here allows circularity
+// (some of them may require a completely-defined Expr type).  This
+// way, those #includes can forward-declare some stuff to get Expr's
+// getConst<> template instantiations correct, and then #include
+// "expr.h" safely, then go on to completely declare their own stuff.
+${includes}
+
+#ifndef __CVC4__EXPR_H
+#define __CVC4__EXPR_H
+
+#include <stdint.h>
+#include <iostream>
+#include <iterator>
+
+#include <string>
+
+#include "base/exception.h"
+#include "options/language.h"
+#include "util/hash.h"
+
+// This is a hack, but an important one: if there's an error, the
+// compiler directs the user to the template file instead of the
+// generated one.  We don't want the user to modify the generated one,
+// since it'll get overwritten on a later build.
+#line 44 "${template}"
+
+namespace CVC4 {
+
+// The internal expression representation
+template <bool ref_count>
+class NodeTemplate;
+
+class NodeManager;
+
+class Expr;
+class ExprManager;
+class SmtEngine;
+class Type;
+class TypeCheckingException;
+class TypeCheckingExceptionPrivate;
+
+namespace expr {
+  namespace pickle {
+    class Pickler;
+  }/* CVC4::expr::pickle namespace */
+}/* CVC4::expr namespace */
+
+namespace prop {
+  class TheoryProxy;
+}/* CVC4::prop namespace */
+
+struct ExprManagerMapCollection;
+
+struct ExprHashFunction;
+
+namespace smt {
+  class SmtEnginePrivate;
+}/* CVC4::smt namespace */
+
+namespace expr {
+  class ExportPrivate;
+}/* CVC4::expr namespace */
+
+/**
+ * Exception thrown in the case of type-checking errors.
+ */
+class CVC4_PUBLIC TypeCheckingException : public Exception {
+
+  friend class SmtEngine;
+  friend class smt::SmtEnginePrivate;
+
+private:
+
+  /** The expression responsible for the error */
+  Expr* d_expr;
+
+protected:
+
+  TypeCheckingException() throw() : Exception() {}
+  TypeCheckingException(ExprManager* em,
+                        const TypeCheckingExceptionPrivate* exc) throw();
+
+public:
+
+  TypeCheckingException(const Expr& expr, std::string message) throw();
+
+  /** Copy constructor */
+  TypeCheckingException(const TypeCheckingException& t) throw();
+
+  /** Destructor */
+  ~TypeCheckingException() throw();
+
+  /**
+   * Get the Expr that caused the type-checking to fail.
+   *
+   * @return the expr
+   */
+  Expr getExpression() const throw();
+
+  /**
+   * Returns the message corresponding to the type-checking failure.
+   * We prefer toStream() to toString() because that keeps the expr-depth
+   * and expr-language settings present in the stream.
+   */
+  void toStream(std::ostream& out) const throw();
+
+  friend class ExprManager;
+};/* class TypeCheckingException */
+
+/**
+ * Exception thrown in case of failure to export
+ */
+class CVC4_PUBLIC ExportUnsupportedException : public Exception {
+public:
+  ExportUnsupportedException() throw():
+    Exception("export unsupported") {
+  }
+  ExportUnsupportedException(const char* msg) throw():
+    Exception(msg) {
+  }
+};/* class DatatypeExportUnsupportedException */
+
+std::ostream& operator<<(std::ostream& out,
+                         const TypeCheckingException& e) CVC4_PUBLIC;
+
+/**
+ * Output operator for expressions
+ * @param out the stream to output to
+ * @param e the expression to output
+ * @return the stream
+ */
+std::ostream& operator<<(std::ostream& out, const Expr& e) CVC4_PUBLIC;
+
+// for hash_maps, hash_sets..
+struct ExprHashFunction {
+  size_t operator()(CVC4::Expr e) const;
+};/* struct ExprHashFunction */
+
+/**
+ * Class encapsulating CVC4 expressions and methods for constructing new
+ * expressions.
+ */
+class CVC4_PUBLIC Expr {
+
+  /** The internal expression representation */
+  NodeTemplate<true>* d_node;
+
+  /** The responsible expression manager */
+  ExprManager* d_exprManager;
+
+  /**
+   * Constructor for internal purposes.
+   *
+   * @param em the expression manager that handles this expression
+   * @param node the actual expression node pointer
+   */
+  Expr(ExprManager* em, NodeTemplate<true>* node);
+
+public:
+
+  /** Default constructor, makes a null expression. */
+  Expr();
+
+  /**
+   * Copy constructor, makes a copy of a given expression
+   *
+   * @param e the expression to copy
+   */
+  Expr(const Expr& e);
+
+  /** Destructor */
+  ~Expr();
+
+  /**
+   * Assignment operator, makes a copy of the given expression. If the
+   * expression managers of the two expressions differ, the expression of
+   * the given expression will be used.
+   *
+   * @param e the expression to assign
+   * @return the reference to this expression after assignment
+   */
+  Expr& operator=(const Expr& e);
+
+  /**
+   * Syntactic comparison operator. Returns true if expressions belong to the
+   * same expression manager and are syntactically identical.
+   *
+   * @param e the expression to compare to
+   * @return true if expressions are syntactically the same, false otherwise
+   */
+  bool operator==(const Expr& e) const;
+
+  /**
+   * Syntactic disequality operator.
+   *
+   * @param e the expression to compare to
+   * @return true if expressions differ syntactically, false otherwise
+   */
+  bool operator!=(const Expr& e) const;
+
+  /**
+   * Order comparison operator. The only invariant on the order of expressions
+   * is that the expressions that were created sooner will be smaller in the
+   * ordering than all the expressions created later. Null expression is the
+   * smallest element of the ordering. The behavior of the operator is
+   * undefined if the expressions come from two different expression managers.
+   *
+   * @param e the expression to compare to
+   * @return true if this expression is smaller than the given one
+   */
+  bool operator<(const Expr& e) const;
+
+  /**
+   * Order comparison operator. The only invariant on the order of expressions
+   * is that the expressions that were created sooner will be smaller in the
+   * ordering than all the expressions created later. Null expression is the
+   * smallest element of the ordering. The behavior of the operator is
+   * undefined if the expressions come from two different expression managers.
+   *
+   * @param e the expression to compare to
+   * @return true if this expression is greater than the given one
+   */
+  bool operator>(const Expr& e) const;
+
+  /**
+   * Order comparison operator. The only invariant on the order of expressions
+   * is that the expressions that were created sooner will be smaller in the
+   * ordering than all the expressions created later. Null expression is the
+   * smallest element of the ordering. The behavior of the operator is
+   * undefined if the expressions come from two different expression managers.
+   *
+   * @param e the expression to compare to
+   * @return true if this expression is smaller or equal to the given one
+   */
+  bool operator<=(const Expr& e) const { return !(*this > e); }
+
+  /**
+   * Order comparison operator. The only invariant on the order of expressions
+   * is that the expressions that were created sooner will be smaller in the
+   * ordering than all the expressions created later. Null expression is the
+   * smallest element of the ordering. The behavior of the operator is
+   * undefined if the expressions come from two different expression managers.
+   *
+   * @param e the expression to compare to
+   * @return true if this expression is greater or equal to the given one
+   */
+  bool operator>=(const Expr& e) const { return !(*this < e); }
+
+  /**
+   * Get the ID of this expression (used for the comparison operators).
+   *
+   * @return an identifier uniquely identifying the value this
+   * expression holds.
+   */
+  unsigned long getId() const;
+
+  /**
+   * Returns the kind of the expression (AND, PLUS ...).
+   *
+   * @return the kind of the expression
+   */
+  Kind getKind() const;
+
+  /**
+   * Returns the number of children of this expression.
+   *
+   * @return the number of children
+   */
+  size_t getNumChildren() const;
+
+  /**
+   * Returns the i'th child of this expression.
+   *
+   * @param i the index of the child to retrieve
+   * @return the child
+   */
+  Expr operator[](unsigned i) const;
+
+  /**
+   * Returns the children of this Expr.
+   */
+  std::vector<Expr> getChildren() const {
+    return std::vector<Expr>(begin(), end());
+  }
+
+  /**
+   * Returns the Boolean negation of this Expr.
+   */
+  Expr notExpr() const;
+
+  /**
+   * Returns the conjunction of this expression and
+   * the given expression.
+   */
+  Expr andExpr(const Expr& e) const;
+
+  /**
+   * Returns the disjunction of this expression and
+   * the given expression.
+   */
+  Expr orExpr(const Expr& e) const;
+
+  /**
+   * Returns the exclusive disjunction of this expression and
+   * the given expression.
+   */
+  Expr xorExpr(const Expr& e) const;
+
+  /**
+   * Returns the Boolean equivalence of this expression and
+   * the given expression.
+   */
+  Expr iffExpr(const Expr& e) const;
+
+  /**
+   * Returns the implication of this expression and
+   * the given expression.
+   */
+  Expr impExpr(const Expr& e) const;
+
+  /**
+   * Returns the if-then-else expression with this expression
+   * as the Boolean condition and the given expressions as
+   * the "then" and "else" expressions.
+   */
+  Expr iteExpr(const Expr& then_e, const Expr& else_e) const;
+
+  /**
+   * Iterator type for the children of an Expr.
+   */
+  class const_iterator : public std::iterator<std::input_iterator_tag, Expr> {
+    ExprManager* d_exprManager;
+    void* d_iterator;
+
+    explicit const_iterator(ExprManager*, void*);
+
+    friend class Expr;// to access void* constructor
+
+  public:
+    const_iterator();
+    const_iterator(const const_iterator& it);
+    const_iterator& operator=(const const_iterator& it);
+    ~const_iterator();
+    bool operator==(const const_iterator& it) const;
+    bool operator!=(const const_iterator& it) const {
+      return !(*this == it);
+    }
+    const_iterator& operator++();
+    const_iterator operator++(int);
+    Expr operator*() const;
+  };/* class Expr::const_iterator */
+
+  /**
+   * Returns an iterator to the first child of this Expr.
+   */
+  const_iterator begin() const;
+
+  /**
+   * Returns an iterator to one-off-the-last child of this Expr.
+   */
+  const_iterator end() const;
+
+  /**
+   * Check if this is an expression that has an operator.
+   *
+   * @return true if this expression has an operator
+   */
+  bool hasOperator() const;
+
+  /**
+   * Get the operator of this expression.
+   *
+   * @throws IllegalArgumentException if it has no operator
+   * @return the operator of this expression
+   */
+  Expr getOperator() const;
+
+  /**
+   * Get the type for this Expr and optionally do type checking.
+   *
+   * Initial type computation will be near-constant time if
+   * type checking is not requested. Results are memoized, so that
+   * subsequent calls to getType() without type checking will be
+   * constant time.
+   *
+   * Initial type checking is linear in the size of the expression.
+   * Again, the results are memoized, so that subsequent calls to
+   * getType(), with or without type checking, will be constant
+   * time.
+   *
+   * NOTE: A TypeCheckingException can be thrown even when type
+   * checking is not requested. getType() will always return a
+   * valid and correct type and, thus, an exception will be thrown
+   * when no valid or correct type can be computed (e.g., if the
+   * arguments to a bit-vector operation aren't bit-vectors). When
+   * type checking is not requested, getType() will do the minimum
+   * amount of checking required to return a valid result.
+   *
+   * @param check whether we should check the type as we compute it
+   * (default: false)
+   */
+  Type getType(bool check = false) const throw (TypeCheckingException);
+
+  /**
+   * Substitute "replacement" in for "e".
+   */
+  Expr substitute(Expr e, Expr replacement) const;
+
+  /**
+   * Substitute "replacements" in for "exes".
+   */
+  Expr substitute(const std::vector<Expr> exes,
+                  const std::vector<Expr>& replacements) const;
+
+  /**
+   * Substitute pairs of (ex,replacement) from the given map.
+   */
+  Expr substitute(const std::hash_map<Expr, Expr, ExprHashFunction> map) const;
+
+  /**
+   * Returns the string representation of the expression.
+   * @return a string representation of the expression
+   */
+  std::string toString() const;
+
+  /**
+   * Outputs the string representation of the expression to the stream.
+   *
+   * @param out the stream to serialize this expression to
+   * @param toDepth the depth to which to print this expression, or -1
+   * to print it fully
+   * @param types set to true to ascribe types to the output
+   * expressions (might break language compliance, but good for
+   * debugging expressions)
+   * @param dag the dagification threshold to use (0 == off)
+   * @param language the language in which to output
+   */
+  void toStream(std::ostream& out, int toDepth = -1, bool types = false, size_t dag = 1,
+                OutputLanguage language = language::output::LANG_AUTO) const;
+
+  /**
+   * Check if this is a null expression.
+   *
+   * @return true if a null expression
+   */
+  bool isNull() const;
+
+  /**
+   * Check if this is an expression representing a variable.
+   *
+   * @return true if a variable expression
+   */
+  bool isVariable() const;
+
+  /**
+   * Check if this is an expression representing a constant.
+   *
+   * @return true if a constant expression
+   */
+  bool isConst() const;
+
+  /* A note on isAtomic() and isAtomicFormula() (in CVC3 parlance)..
+   *
+   * It has been decided for now to hold off on implementations of
+   * these functions, as they may only be needed in CNF conversion,
+   * where it's pointless to do a lazy isAtomic determination by
+   * searching through the DAG, and storing it, since the result will
+   * only be used once.  For more details see the 4/27/2010 CVC4
+   * developer's meeting notes at:
+   *
+   * http://goedel.cims.nyu.edu/wiki/Meeting_Minutes_-_April_27,_2010#isAtomic.28.29_and_isAtomicFormula.28.29
+   */
+  // bool containsDecision(); // is "atomic"
+  // bool properlyContainsDecision(); // maybe not atomic but all children are
+
+  /** Extract a constant of type T */
+  template <class T>
+  const T& getConst() const;
+
+  /**
+   * Returns the expression reponsible for this expression.
+   */
+  ExprManager* getExprManager() const;
+
+  /**
+   * Maps this Expr into one for a different ExprManager, using
+   * variableMap for the translation and extending it with any new
+   * mappings.
+   */
+  Expr exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap, uint32_t flags = 0) const;
+
+  /**
+   * Very basic pretty printer for Expr.
+   * This is equivalent to calling e.getNode().printAst(...)
+   * @param out output stream to print to.
+   * @param indent number of spaces to indent the formula by.
+   */
+  void printAst(std::ostream& out, int indent = 0) const;
+
+private:
+
+  /**
+   * Pretty printer for use within gdb
+   * This is not intended to be used outside of gdb.
+   * This writes to the ostream Warning() and immediately flushes
+   * the ostream.
+   */
+  void debugPrint();
+
+  /**
+   * Returns the actual internal node.
+   * @return the internal node
+   */
+  NodeTemplate<true> getNode() const throw();
+
+  /**
+   * Returns the actual internal node as a TNode.
+   * @return the internal node
+   */
+  NodeTemplate<false> getTNode() const throw();
+
+  // Friend to access the actual internal expr information and private methods
+  friend class SmtEngine;
+  friend class smt::SmtEnginePrivate;
+  friend class ExprManager;
+  friend class NodeManager;
+  friend class TypeCheckingException;
+  friend class expr::pickle::Pickler;
+  friend class prop::TheoryProxy;
+  friend class expr::ExportPrivate;
+  friend std::ostream& CVC4::operator<<(std::ostream& out, const Expr& e);
+  template <bool ref_count> friend class NodeTemplate;
+
+};/* class Expr */
+
+${getConst_instantiations}
+
+#line 557 "${template}"
+
+inline size_t ExprHashFunction::operator()(CVC4::Expr e) const {
+  return (size_t) e.getId();
+}
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__EXPR_H */
diff --git a/src/expr/kind.i b/src/expr/kind.i
new file mode 100644
index 0000000..189c94f
--- /dev/null
+++ b/src/expr/kind.i
@@ -0,0 +1,16 @@
+%{
+#include "expr/kind.h"
+%}
+
+%ignore CVC4::kind::operator<<(std::ostream&, CVC4::Kind);
+%ignore CVC4::operator<<(std::ostream&, TypeConstant);
+%ignore CVC4::theory::operator<<(std::ostream&, TheoryId);
+
+%ignore CVC4::theory::operator++(TheoryId&);
+
+%rename(apply) CVC4::kind::KindHashFunction::operator()(::CVC4::Kind) const;
+%rename(apply) CVC4::TypeConstantHashFunction::operator()(TypeConstant) const;
+
+%rename(Kind) CVC4::kind::Kind_t;
+
+%include "expr/kind.h"
diff --git a/src/expr/kind_map.h b/src/expr/kind_map.h
new file mode 100644
index 0000000..6858f8a
--- /dev/null
+++ b/src/expr/kind_map.h
@@ -0,0 +1,274 @@
+/*********************                                                        */
+/*! \file kind_map.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A bitmap of Kinds
+ **
+ ** This is a class representation for a bitmap of Kinds that is
+ ** iterable, manipulable, and packed.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__KIND_MAP_H
+#define __CVC4__KIND_MAP_H
+
+#include <stdint.h>
+#include <iterator>
+
+#include "base/cvc4_assert.h"
+#include "expr/kind.h"
+
+namespace CVC4 {
+
+/** A bitmap of Kinds. */
+class KindMap {
+  static const size_t SIZE = (kind::LAST_KIND + 63) / 64;
+
+  uint64_t d_bitmap[SIZE];
+
+  /**
+   * Accessor proxy class used so that things like "map[k] = true"
+   * will work as expected (we have to return a proxy from
+   * KindMap::operator[]() in that case, since we can't construct an
+   * address to the individual *bit* in the packed representation).
+   */
+  class Accessor {
+    KindMap& d_map;
+    Kind d_kind;
+
+    Accessor(KindMap& m, Kind k) :
+      d_map(m),
+      d_kind(k) {
+      AssertArgument(k >= Kind(0) && k < kind::LAST_KIND, k, "invalid kind");
+    }
+
+    friend class KindMap;
+
+  public:
+
+    operator bool() const {
+      return d_map.tst(d_kind);
+    }
+
+    Accessor operator=(bool b) const {
+      if(b) {
+        d_map.set(d_kind);
+      } else {
+        d_map.clr(d_kind);
+      }
+      return *this;
+    }
+
+  };/* class KindMap::Accessor */
+
+public:
+
+  /** An iterator over a KindMap. */
+  class iterator {
+    const KindMap* d_map;
+    Kind d_kind;
+
+  public:
+    typedef std::input_iterator_tag iterator_category;
+    typedef Kind value_type;
+
+    iterator() :
+      d_map(NULL),
+      d_kind(Kind(0)) {
+    }
+    iterator(const KindMap& m, Kind k) :
+      d_map(&m),
+      d_kind(k) {
+      AssertArgument(k >= Kind(0) && k <= kind::LAST_KIND, k, "invalid kind");
+      while(d_kind < kind::LAST_KIND &&
+            ! d_map->tst(d_kind)) {
+        d_kind = Kind(uint64_t(d_kind) + 1);
+      }
+    }
+    iterator& operator++() {
+      if(d_kind < kind::LAST_KIND) {
+        d_kind = Kind(uint64_t(d_kind) + 1);
+        while(d_kind < kind::LAST_KIND &&
+              ! d_map->tst(d_kind)) {
+          d_kind = Kind(uint64_t(d_kind) + 1);
+        }
+      }
+      return *this;
+    }
+    iterator operator++(int) const {
+      const_iterator i = *this;
+      ++i;
+      return i;
+    }
+    Kind operator*() const {
+      return d_kind;
+    }
+    bool operator==(iterator i) const {
+      return d_map == i.d_map && d_kind == i.d_kind;
+    }
+    bool operator!=(iterator i) const {
+      return !(*this == i);
+    }
+  };/* class KindMap::iterator */
+  typedef iterator const_iterator;
+
+  KindMap() {
+    clear();
+  }
+  KindMap(const KindMap& m) {
+    for(unsigned i = 0; i < SIZE; ++i) {
+      d_bitmap[i] = m.d_bitmap[i];
+    }
+  }
+  KindMap(Kind k) {
+    clear();
+    set(k);
+  }
+
+  /** Empty the map. */
+  void clear() {
+    for(unsigned i = 0; i < SIZE; ++i) {
+      d_bitmap[i] = uint64_t(0);
+    }
+  }
+  /** Tests whether the map is empty. */
+  bool isEmpty() const {
+    for(unsigned i = 0; i < SIZE; ++i) {
+      if(d_bitmap[i] != uint64_t(0)) {
+        return false;
+      }
+    }
+    return true;
+  }
+  /** Test whether k is in the map. */
+  bool tst(Kind k) const {
+    AssertArgument(k >= Kind(0) && k < kind::LAST_KIND, k, "invalid kind");
+    return (d_bitmap[k / 64] >> (k % 64)) & uint64_t(1);
+  }
+  /** Set k in the map. */
+  void set(Kind k) {
+    AssertArgument(k >= Kind(0) && k < kind::LAST_KIND, k, "invalid kind");
+    d_bitmap[k / 64] |= (uint64_t(1) << (k % 64));
+  }
+  /** Clear k from the map. */
+  void clr(Kind k) {
+    AssertArgument(k >= Kind(0) && k < kind::LAST_KIND, k, "invalid kind");
+    d_bitmap[k / 64] &= ~(uint64_t(1) << (k % 64));
+  }
+
+  /** Iterate over the map. */
+  const_iterator begin() const {
+    return const_iterator(*this, Kind(0));
+  }
+  const_iterator end() const {
+    return const_iterator(*this, kind::LAST_KIND);
+  }
+
+  /** Invert the map. */
+  KindMap operator~() const {
+    KindMap r;
+    for(unsigned i = 0; i < SIZE; ++i) {
+      r.d_bitmap[i] = ~d_bitmap[i];
+    }
+    return r;
+  }
+  /** Bitwise-AND the map (with assignment). */
+  KindMap& operator&=(const KindMap& m) {
+    for(unsigned i = 0; i < SIZE; ++i) {
+      d_bitmap[i] &= m.d_bitmap[i];
+    }
+    return *this;
+  }
+  /** Bitwise-AND the map. */
+  KindMap operator&(const KindMap& m) const {
+    KindMap r(*this);
+    r &= m;
+    return r;
+  }
+  /** Bitwise-OR the map (with assignment). */
+  KindMap& operator|=(const KindMap& m) {
+    for(unsigned i = 0; i < SIZE; ++i) {
+      d_bitmap[i] |= m.d_bitmap[i];
+    }
+    return *this;
+  }
+  /** Bitwise-OR the map. */
+  KindMap operator|(const KindMap& m) const {
+    KindMap r(*this);
+    r |= m;
+    return r;
+  }
+  /** Bitwise-XOR the map (with assignment). */
+  KindMap& operator^=(const KindMap& m) {
+    for(unsigned i = 0; i < SIZE; ++i) {
+      d_bitmap[i] ^= m.d_bitmap[i];
+    }
+    return *this;
+  }
+  /** Bitwise-XOR the map. */
+  KindMap operator^(const KindMap& m) const {
+    KindMap r(*this);
+    r ^= m;
+    return r;
+  }
+
+  /** Test whether k is in the map. */
+  bool operator[](Kind k) const {
+    return tst(k);
+  }
+  /** Test whether k is in the map (allowing assignment). */
+  Accessor operator[](Kind k) {
+    return Accessor(*this, k);
+  }
+
+  /** Test equality between two maps. */
+  bool operator==(KindMap m) {
+    for(unsigned i = 0; i < SIZE; ++i) {
+      if(d_bitmap[i] != m.d_bitmap[i]) {
+        return false;
+      }
+    }
+    return true;
+  }
+  bool operator!=(KindMap m) {
+    return !(*this == m);
+  }
+};/* class KindMap */
+
+inline KindMap operator~(Kind k) {
+  KindMap m(k);
+  return ~m;
+}
+inline KindMap operator&(Kind k1, Kind k2) {
+  KindMap m(k1);
+  return m &= k2;
+}
+inline KindMap operator&(Kind k1, KindMap m2) {
+  return m2 & k1;
+}
+inline KindMap operator|(Kind k1, Kind k2) {
+  KindMap m(k1);
+  return m |= k2;
+}
+inline KindMap operator|(Kind k1, KindMap m2) {
+  return m2 | k1;
+}
+inline KindMap operator^(Kind k1, Kind k2) {
+  KindMap m(k1);
+  return m ^= k2;
+}
+inline KindMap operator^(Kind k1, KindMap m2) {
+  return m2 ^ k1;
+}
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__KIND_MAP_H */
diff --git a/src/expr/kind_template.h b/src/expr/kind_template.h
new file mode 100644
index 0000000..440d6b5
--- /dev/null
+++ b/src/expr/kind_template.h
@@ -0,0 +1,177 @@
+/*********************                                                        */
+/*! \file kind_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Template for the Node kind header
+ **
+ ** Template for the Node kind header.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__KIND_H
+#define __CVC4__KIND_H
+
+#include <iosfwd>
+#include <sstream>
+
+#include "base/exception.h"
+
+namespace CVC4 {
+namespace kind {
+
+enum CVC4_PUBLIC Kind_t {
+  UNDEFINED_KIND = -1, /**< undefined */
+  NULL_EXPR, /**< Null kind */
+${kind_decls}
+  LAST_KIND /**< marks the upper-bound of this enumeration */
+
+};/* enum Kind_t */
+
+}/* CVC4::kind namespace */
+
+// import Kind into the "CVC4" namespace but keep the individual kind
+// constants under kind::
+typedef ::CVC4::kind::Kind_t Kind;
+
+namespace kind {
+
+inline std::ostream& operator<<(std::ostream&, CVC4::Kind) CVC4_PUBLIC;
+inline std::ostream& operator<<(std::ostream& out, CVC4::Kind k) {
+  using namespace CVC4::kind;
+
+  switch(k) {
+
+  /* special cases */
+  case UNDEFINED_KIND: out << "UNDEFINED_KIND"; break;
+  case NULL_EXPR: out << "NULL"; break;
+${kind_printers}
+  case LAST_KIND: out << "LAST_KIND"; break;
+  default: out << "UNKNOWNKIND!" << int(k); break;
+  }
+
+  return out;
+}
+
+#line 64 "${template}"
+
+/** Returns true if the given kind is associative. This is used by ExprManager to
+ * decide whether it's safe to modify big expressions by changing the grouping of
+ * the arguments. */
+/* TODO: This could be generated. */
+inline bool isAssociative(::CVC4::Kind k) {
+  switch(k) {
+  case kind::AND:
+  case kind::OR:
+  case kind::MULT:
+  case kind::PLUS:
+    return true;
+
+  default:
+    return false;
+  }
+}
+
+inline std::string kindToString(::CVC4::Kind k) {
+  std::stringstream ss;
+  ss << k;
+  return ss.str();
+}
+
+struct KindHashFunction {
+  inline size_t operator()(::CVC4::Kind k) const {
+    return k;
+  }
+};/* struct KindHashFunction */
+
+}/* CVC4::kind namespace */
+
+/**
+ * The enumeration for the built-in atomic types.
+ */
+enum TypeConstant {
+${type_constant_list}
+#line 102 "${template}"
+  LAST_TYPE
+};/* enum TypeConstant */
+
+/**
+ * We hash the constants with their values.
+ */
+struct TypeConstantHashFunction {
+  inline size_t operator()(TypeConstant tc) const {
+    return tc;
+  }
+};/* struct TypeConstantHashFunction */
+
+inline std::ostream& operator<<(std::ostream& out, TypeConstant typeConstant) {
+  switch(typeConstant) {
+${type_constant_descriptions}
+#line 118 "${template}"
+  default:
+    out << "UNKNOWN_TYPE_CONSTANT";
+    break;
+  }
+  return out;
+}
+
+namespace theory {
+
+enum TheoryId {
+${theory_enum}
+#line 130 "${template}"
+  THEORY_LAST
+};/* enum TheoryId */
+
+const TheoryId THEORY_FIRST = static_cast<TheoryId>(0);
+const TheoryId THEORY_SAT_SOLVER = THEORY_LAST;
+
+inline TheoryId& operator ++ (TheoryId& id) {
+  return id = static_cast<TheoryId>(((int)id) + 1);
+}
+
+inline std::ostream& operator<<(std::ostream& out, TheoryId theoryId) {
+  switch(theoryId) {
+${theory_descriptions}
+#line 144 "${template}"
+  default:
+    out << "UNKNOWN_THEORY";
+    break;
+  }
+  return out;
+}
+
+inline TheoryId kindToTheoryId(::CVC4::Kind k) {
+  switch(k) {
+  case kind::UNDEFINED_KIND:
+  case kind::NULL_EXPR:
+    break;
+${kind_to_theory_id}
+#line 158 "${template}"
+  case kind::LAST_KIND:
+    break;
+  }
+  throw IllegalArgumentException("", "k", __PRETTY_FUNCTION__, "bad kind");
+}
+
+inline TheoryId typeConstantToTheoryId(::CVC4::TypeConstant typeConstant) {
+  switch(typeConstant) {
+${type_constant_to_theory_id}
+#line 168 "${template}"
+  case LAST_TYPE:
+    break;
+  }
+  throw IllegalArgumentException("", "k", __PRETTY_FUNCTION__, "bad type constant");
+}
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__KIND_H */
diff --git a/src/expr/matcher.h b/src/expr/matcher.h
new file mode 100644
index 0000000..308ad06
--- /dev/null
+++ b/src/expr/matcher.h
@@ -0,0 +1,119 @@
+/*********************                                                        */
+/*! \file matcher.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A class representing a type matcher
+ **
+ ** A class representing a type matcher.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__MATCHER_H
+#define __CVC4__MATCHER_H
+
+#include <iosfwd>
+#include <string>
+#include <vector>
+#include <map>
+
+#include "base/cvc4_assert.h"
+#include "expr/node.h"
+#include "expr/type_node.h"
+
+namespace CVC4 {
+
+class Matcher {
+private:
+  std::vector< TypeNode > d_types;
+  std::vector< TypeNode > d_match;
+public:
+  Matcher(){}
+  Matcher( DatatypeType dt ){
+    addTypesFromDatatype( dt );
+  }
+  ~Matcher(){}
+
+  void addTypesFromDatatype( DatatypeType dt ){
+    std::vector< Type > argTypes = dt.getParamTypes();
+    addTypes( argTypes );
+    Debug("typecheck-idt") << "instantiating matcher for " << dt << std::endl;
+    for(unsigned i = 0; i < argTypes.size(); ++i) {
+      if(dt.isParameterInstantiated(i)) {
+        Debug("typecheck-idt") << "++ instantiate param " << i << " : " << d_types[i] << std::endl;
+        d_match[i] = d_types[i];
+      }
+    }
+  }
+  void addType( Type t ){
+    d_types.push_back( TypeNode::fromType( t ) );
+    d_match.push_back( TypeNode::null() );
+  }
+  void addTypes( std::vector< Type > types ){
+    for( int i=0; i<(int)types.size(); i++ ){
+      addType( types[i] );
+    }
+  }
+
+  bool doMatching( TypeNode pattern, TypeNode tn ){
+    Debug("typecheck-idt") << "doMatching() : " << pattern << " : " << tn << std::endl;
+    std::vector< TypeNode >::iterator i = std::find( d_types.begin(), d_types.end(), pattern );
+    if( i!=d_types.end() ){
+      int index = i - d_types.begin();
+      if( !d_match[index].isNull() ){
+        Debug("typecheck-idt") << "check subtype " << tn << " " << d_match[index] << std::endl;
+        TypeNode tnn = TypeNode::leastCommonTypeNode( tn, d_match[index] );
+        //recognize subtype relation
+        if( !tnn.isNull() ){
+          d_match[index] = tnn;
+          return true;
+        }else{
+          return false;
+        }
+      }else{
+        d_match[ i - d_types.begin() ] = tn;
+        return true;
+      }
+    }else if( pattern==tn ){
+      return true;
+    }else if( pattern.getKind()!=tn.getKind() || pattern.getNumChildren()!=tn.getNumChildren() ){
+      return false;
+    }else{
+      for( int i=0; i<(int)pattern.getNumChildren(); i++ ){
+        if( !doMatching( pattern[i], tn[i] ) ){
+          return false;
+        }
+      }
+      return true;
+    }
+  }
+
+  TypeNode getMatch( unsigned int i ){ return d_match[i]; }
+  void getTypes( std::vector<Type>& types ) {
+    types.clear();
+    for( int i=0; i<(int)d_match.size(); i++ ){
+      types.push_back( d_types[i].toType() );
+    }
+  }
+  void getMatches( std::vector<Type>& types ) {
+    types.clear();
+    for( int i=0; i<(int)d_match.size(); i++ ){
+      if(d_match[i].isNull()) {
+        types.push_back( d_types[i].toType() );
+      } else {
+        types.push_back( d_match[i].toType() );
+      }
+    }
+  }
+};/* class Matcher */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__MATCHER_H */
diff --git a/src/expr/metakind_template.h b/src/expr/metakind_template.h
new file mode 100644
index 0000000..1c03cf4
--- /dev/null
+++ b/src/expr/metakind_template.h
@@ -0,0 +1,359 @@
+/*********************                                                        */
+/*! \file metakind_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Template for the metakind header.
+ **
+ ** Template for the metakind header.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__KIND__METAKIND_H
+#define __CVC4__KIND__METAKIND_H
+
+#include <iostream>
+
+#include "base/cvc4_assert.h"
+#include "expr/kind.h"
+
+namespace CVC4 {
+
+namespace expr {
+  class NodeValue;
+}/* CVC4::expr namespace */
+
+namespace kind {
+namespace metakind {
+
+/**
+ * Static, compile-time information about types T representing CVC4
+ * constants:
+ *
+ *   typename ConstantMap<T>::OwningTheory
+ *
+ *     The theory in charge of constructing T when constructing Nodes
+ *     with NodeManager::mkConst(T).
+ *
+ *   typename ConstantMap<T>::kind
+ *
+ *     The kind to use when constructing Nodes with
+ *     NodeManager::mkConst(T).
+ */
+template <class T>
+struct ConstantMap;
+
+/**
+ * Static, compile-time information about kinds k and what type their
+ * corresponding CVC4 constants are:
+ *
+ *   typename ConstantMapReverse<k>::T
+ *
+ *     Constant type for kind k.
+ */
+template <Kind k>
+struct ConstantMapReverse;
+
+/**
+ * Static, compile-time mapping from CONSTANT kinds to comparison
+ * functors on NodeValue*.  The single element of this structure is:
+ *
+ *   static bool NodeValueCompare<K, pool>::compare(NodeValue* x, NodeValue* y)
+ *
+ *     Compares x and y, given that they are both K-kinded (and the
+ *     meta-kind of K is CONSTANT).  If pool == true, one of x and y
+ *     (but not both) may be a "non-inlined" NodeValue.  If pool ==
+ *     false, neither x nor y may be a "non-inlined" NodeValue.
+ */
+template <Kind k, bool pool>
+struct NodeValueConstCompare {
+  inline static bool compare(const ::CVC4::expr::NodeValue* x,
+                             const ::CVC4::expr::NodeValue* y);
+  inline static size_t constHash(const ::CVC4::expr::NodeValue* nv);
+};/* NodeValueConstCompare<k, pool> */
+
+struct NodeValueCompare {
+  template <bool pool>
+  inline static bool compare(const ::CVC4::expr::NodeValue* nv1,
+                             const ::CVC4::expr::NodeValue* nv2);
+  inline static size_t constHash(const ::CVC4::expr::NodeValue* nv);
+};/* struct NodeValueCompare */
+
+/**
+ * "metakinds" represent the "kinds" of kinds at the meta-level.
+ * "metakind" is an ugly name but it's not used by client code, just
+ * by the expr package, and the intent here is to keep it from
+ * polluting the kind namespace.  For more documentation on what these
+ * mean, see src/theory/builtin/kinds.
+ */
+enum MetaKind_t {
+  INVALID = -1, /**< special node non-kinds like NULL_EXPR or LAST_KIND */
+  VARIABLE, /**< special node kinds: no operator */
+  OPERATOR, /**< operators that get "inlined" */
+  PARAMETERIZED, /**< parameterized ops (like APPLYs) that carry extra data */
+  CONSTANT /**< constants */
+};/* enum MetaKind_t */
+
+}/* CVC4::kind::metakind namespace */
+
+// import MetaKind into the "CVC4::kind" namespace but keep the
+// individual MetaKind constants under kind::metakind::
+typedef ::CVC4::kind::metakind::MetaKind_t MetaKind;
+
+/**
+ * Get the metakind for a particular kind.
+ */
+static inline MetaKind metaKindOf(Kind k) {
+  static const MetaKind metaKinds[] = {
+    metakind::INVALID, /* UNDEFINED_KIND */
+    metakind::INVALID, /* NULL_EXPR */
+${metakind_kinds}
+    metakind::INVALID /* LAST_KIND */
+  };/* metaKinds[] */
+
+  Assert(k >= kind::NULL_EXPR && k < kind::LAST_KIND);
+
+  // We've asserted that k >= NULL_EXPR (which is 0), but we still
+  // handle the UNDEFINED_KIND (-1) case.  If we don't, the compiler
+  // emits warnings for non-assertion builds, since the check isn't done.
+  return metaKinds[k + 1];
+}/* metaKindOf(k) */
+
+}/* CVC4::kind namespace */
+
+namespace expr {
+  class NodeValue;
+}/* CVC4::expr namespace */
+
+namespace kind {
+namespace metakind {
+
+/* these are #defines so their sum can be #if-checked in node_value.h */
+#define __CVC4__EXPR__NODE_VALUE__NBITS__REFCOUNT 20
+#define __CVC4__EXPR__NODE_VALUE__NBITS__KIND 10
+#define __CVC4__EXPR__NODE_VALUE__NBITS__ID 40
+#define __CVC4__EXPR__NODE_VALUE__NBITS__NCHILDREN 26
+
+static const unsigned MAX_CHILDREN =
+  (1u << __CVC4__EXPR__NODE_VALUE__NBITS__NCHILDREN) - 1;
+
+}/* CVC4::kind::metakind namespace */
+}/* CVC4::kind namespace */
+
+namespace expr {
+
+// Comparison predicate
+struct NodeValuePoolEq {
+  inline bool operator()(const NodeValue* nv1, const NodeValue* nv2) const {
+    return ::CVC4::kind::metakind::NodeValueCompare::compare<true>(nv1, nv2);
+  }
+};
+
+}/* CVC4::expr namespace */
+}/* CVC4 namespace */
+
+#include "expr/node_value.h"
+
+#endif /* __CVC4__KIND__METAKIND_H */
+
+${metakind_includes}
+
+#ifdef __CVC4__NODE_MANAGER_NEEDS_CONSTANT_MAP
+
+namespace CVC4 {
+namespace kind {
+namespace metakind {
+
+template <Kind k, bool pool>
+inline bool NodeValueConstCompare<k, pool>::compare(const ::CVC4::expr::NodeValue* x,
+                                                    const ::CVC4::expr::NodeValue* y) {
+  typedef typename ConstantMapReverse<k>::T T;
+  if(pool) {
+    if(x->d_nchildren == 1) {
+      Assert(y->d_nchildren == 0);
+      return compare(y, x);
+    } else if(y->d_nchildren == 1) {
+      Assert(x->d_nchildren == 0);
+      return x->getConst<T>() == *reinterpret_cast<T*>(y->d_children[0]);
+    }
+  }
+
+  Assert(x->d_nchildren == 0);
+  Assert(y->d_nchildren == 0);
+  return x->getConst<T>() == y->getConst<T>();
+}
+
+template <Kind k, bool pool>
+inline size_t NodeValueConstCompare<k, pool>::constHash(const ::CVC4::expr::NodeValue* nv) {
+  typedef typename ConstantMapReverse<k>::T T;
+  return nv->getConst<T>().hash();
+}
+
+${metakind_constantMaps}
+
+template <bool pool>
+inline bool NodeValueCompare::compare(const ::CVC4::expr::NodeValue* nv1,
+                                      const ::CVC4::expr::NodeValue* nv2) {
+  if(nv1->d_kind != nv2->d_kind) {
+    return false;
+  }
+
+  if(nv1->getMetaKind() == kind::metakind::CONSTANT) {
+    switch(nv1->d_kind) {
+${metakind_compares}
+    default:
+      Unhandled(::CVC4::expr::NodeValue::dKindToKind(nv1->d_kind));
+    }
+  }
+
+  if(nv1->d_nchildren != nv2->d_nchildren) {
+    return false;
+  }
+
+  ::CVC4::expr::NodeValue::const_nv_iterator i = nv1->nv_begin();
+  ::CVC4::expr::NodeValue::const_nv_iterator j = nv2->nv_begin();
+  ::CVC4::expr::NodeValue::const_nv_iterator i_end = nv1->nv_end();
+
+  while(i != i_end) {
+    if((*i) != (*j)) {
+      return false;
+    }
+    ++i;
+    ++j;
+  }
+
+  return true;
+}
+
+inline size_t NodeValueCompare::constHash(const ::CVC4::expr::NodeValue* nv) {
+  Assert(nv->getMetaKind() == kind::metakind::CONSTANT);
+
+  switch(nv->d_kind) {
+${metakind_constHashes}
+  default:
+    Unhandled(::CVC4::expr::NodeValue::dKindToKind(nv->d_kind));
+  }
+}
+
+struct NodeValueConstPrinter {
+  inline static void toStream(std::ostream& out,
+                              const ::CVC4::expr::NodeValue* nv);
+  inline static void toStream(std::ostream& out, TNode n);
+};
+
+inline void NodeValueConstPrinter::toStream(std::ostream& out,
+                                            const ::CVC4::expr::NodeValue* nv) {
+  Assert(nv->getMetaKind() == kind::metakind::CONSTANT);
+
+  switch(nv->d_kind) {
+${metakind_constPrinters}
+  default:
+    Unhandled(::CVC4::expr::NodeValue::dKindToKind(nv->d_kind));
+  }
+}
+
+inline void NodeValueConstPrinter::toStream(std::ostream& out, TNode n) {
+  toStream(out, n.d_nv);
+}
+
+// The reinterpret_cast of d_children to various constant payload types
+// in deleteNodeValueConstant(), below, can flag a "strict aliasing"
+// warning; it should actually be okay, because we never access the
+// embedded constant as a NodeValue* child, and never access an embedded
+// NodeValue* child as a constant.
+#pragma GCC diagnostic ignored "-Wstrict-aliasing"
+
+/**
+ * Cleanup to be performed when a NodeValue zombie is collected, and
+ * it has CONSTANT metakind.  This calls the destructor for the underlying
+ * C++ type representing the constant value.  See
+ * NodeManager::reclaimZombies() for more information.
+ *
+ * This doesn't support "non-inlined" NodeValues, which shouldn't need this
+ * kind of cleanup.
+ */
+inline void deleteNodeValueConstant(::CVC4::expr::NodeValue* nv) {
+  Assert(nv->getMetaKind() == kind::metakind::CONSTANT);
+
+  switch(nv->d_kind) {
+${metakind_constDeleters}
+  default:
+    Unhandled(::CVC4::expr::NodeValue::dKindToKind(nv->d_kind));
+  }
+}
+
+// re-enable the strict-aliasing warning
+# pragma GCC diagnostic warning "-Wstrict-aliasing"
+
+inline unsigned getLowerBoundForKind(::CVC4::Kind k) {
+  static const unsigned lbs[] = {
+    0, /* NULL_EXPR */
+${metakind_lbchildren}
+
+    0 /* LAST_KIND */
+  };
+
+  return lbs[k];
+}
+
+inline unsigned getUpperBoundForKind(::CVC4::Kind k) {
+  static const unsigned ubs[] = {
+    0, /* NULL_EXPR */
+${metakind_ubchildren}
+
+    0, /* LAST_KIND */
+  };
+
+  return ubs[k];
+}
+
+}/* CVC4::kind::metakind namespace */
+
+/**
+ * Map a kind of the operator to the kind of the enclosing expression. For
+ * example, since the kind of functions is just VARIABLE, it should map
+ * VARIABLE to APPLY_UF.
+ */
+static inline Kind operatorToKind(::CVC4::expr::NodeValue* nv) {
+  if(nv->getKind() == kind::BUILTIN) {
+    return nv->getConst<Kind>();
+  } else if(nv->getKind() == kind::LAMBDA) {
+    return kind::APPLY_UF;
+  }
+
+  switch(Kind k CVC4_UNUSED = nv->getKind()) {
+${metakind_operatorKinds}
+
+  default:
+    return kind::UNDEFINED_KIND;  /* LAST_KIND */
+  };
+}
+
+}/* CVC4::kind namespace */
+
+#line 342 "${template}"
+
+namespace theory {
+
+static inline bool useTheoryValidate(std::string theory) {
+${use_theory_validations}
+  return false;
+}
+
+static const char *const useTheoryHelp = "\
+The following options are valid alternate implementations for use with\n\
+the --use-theory option:\n\
+\n\
+${theory_alternate_doc}";
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__NODE_MANAGER_NEEDS_CONSTANT_MAP */
diff --git a/src/expr/mkexpr b/src/expr/mkexpr
new file mode 100755
index 0000000..4717b61
--- /dev/null
+++ b/src/expr/mkexpr
@@ -0,0 +1,313 @@
+#!/bin/bash
+#
+# mkexpr
+# Morgan Deters <mdeters at cs.nyu.edu> for CVC4
+# Copyright (c) 2010-2013  The CVC4 Project
+#
+# The purpose of this script is to create {expr,expr_manager}.{h,cpp}
+# from template files and a list of theory kinds.  Basically it just
+# sets up the public interface for access to constants.
+#
+# Invocation:
+#
+#   mkexpr template-file theory-kind-files...
+#
+# Output is to standard out.
+#
+
+copyright=2010-2014
+
+filename=`basename "$1" | sed 's,_template,,'`
+
+cat <<EOF
+/*********************                                                        */
+/** $filename
+ **
+ ** Copyright $copyright  New York University and The University of Iowa,
+ ** and as below.
+ **
+ ** This file automatically generated by:
+ **
+ **     $0 $@
+ **
+ ** for the CVC4 project.
+ **/
+
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+
+/* Edit the template file instead:                     */
+/* $1 */
+
+EOF
+
+me=$(basename "$0")
+
+template=$1; shift
+
+includes=
+getConst_instantiations=
+getConst_implementations=
+mkConst_instantiations=
+mkConst_implementations=
+exportConstant_cases=
+
+typerules=
+construles=
+neverconstrules=
+
+seen_theory=false
+seen_theory_builtin=false
+
+function theory {
+  # theory ID T header
+
+  lineno=${BASH_LINENO[0]}
+
+  if $seen_theory; then
+    echo "$kf:$lineno: error: multiple theories defined in one file !?" >&2
+    exit 1
+  fi
+
+  # this script doesn't care about the theory class information, but
+  # makes does make sure it's there
+  seen_theory=true
+  if [ "$1" = THEORY_BUILTIN ]; then
+    if $seen_theory_builtin; then
+      echo "$kf:$lineno: error: \"builtin\" theory redefined" >&2
+      exit 1
+    fi
+    seen_theory_builtin=true
+  elif [ -z "$1" -o -z "$2" -o -z "$3" ]; then
+    echo "$kf:$lineno: error: \"theory\" directive missing class or header argument" >&2
+    exit 1
+  elif ! expr "$2" : '\(::*\)' >/dev/null; then
+    echo "$kf:$lineno: warning: theory class \`$2' isn't fully-qualified (e.g., ::CVC4::theory::foo)" >&2
+  elif ! expr "$2" : '\(::CVC4::theory::*\)' >/dev/null; then
+    echo "$kf:$lineno: warning: theory class not under ::CVC4::theory namespace" >&2
+  fi
+}
+
+function alternate {
+  # alternate ID name T header
+
+  lineno=${BASH_LINENO[0]}
+
+  if $seen_theory; then
+    echo "$kf:$lineno: error: multiple theories defined in one file !?" >&2
+    exit 1
+  fi
+
+  seen_theory=true
+  seen_endtheory=true
+}
+
+function rewriter {
+  # rewriter class header
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function properties {
+  # properties prop*
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function endtheory {
+  # endtheory
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+  seen_endtheory=true
+}
+
+function enumerator {
+  # enumerator KIND enumerator-class header
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function typechecker {
+  # typechecker header
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+  typechecker_includes="${typechecker_includes}
+#include \"$1\""
+}
+
+function typerule {
+  # typerule OPERATOR typechecking-class
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+  typerules="${typerules}
+#line $lineno \"$kf\"
+  case kind::$1:
+#line $lineno \"$kf\"
+    typeNode = $2::computeType(nodeManager, n, check);
+    break;
+"
+}
+
+function construle {
+  # isconst OPERATOR isconst-checking-class
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+  construles="${construles}
+#line $lineno \"$kf\"
+  case kind::$1:
+#line $lineno \"$kf\"
+    return $2::computeIsConst(nodeManager, n);
+"
+  neverconstrules="${neverconstrules}
+#line $lineno \"$kf\"
+  case kind::$1:
+#line $lineno \"$kf\"
+    return false;
+"
+}
+
+function sort {
+  # sort TYPE cardinality [well-founded ground-term header | not-well-founded] ["comment"]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function cardinality {
+  # cardinality TYPE cardinality-computer [header]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function well-founded {
+  # well-founded TYPE wellfoundedness-computer [header]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function variable {
+  # variable K ["comment"]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function operator {
+  # operator K #children ["comment"]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function parameterized {
+  # parameterized K #children ["comment"]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function constant {
+  # constant K T Hasher header ["comment"]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+
+  includes="${includes}
+#include \"$4\""
+  mkConst_instantiations="${mkConst_instantiations}
+#line $lineno \"$kf\"
+template <> Expr ExprManager::mkConst($2 const& val);
+"
+  mkConst_implementations="${mkConst_implementations}
+#line $lineno \"$kf\"
+template <> Expr ExprManager::mkConst($2 const& val) {
+#line $lineno \"$kf\"
+  return Expr(this, new Node(d_nodeManager->mkConst< $2 >(val)));
+}
+"
+  getConst_instantiations="${getConst_instantiations}
+#line $lineno \"$kf\"
+template <> $2 const & Expr::getConst< $2 >() const;
+"
+  getConst_implementations="${getConst_implementations}
+#line $lineno \"$kf\"
+template <> $2 const & Expr::getConst() const {
+#line $lineno \"$kf\"
+  PrettyCheckArgument(getKind() == ::CVC4::kind::$1, *this, \"Improper kind for getConst<$2>()\");
+#line $lineno \"$kf\"
+  return d_node->getConst< $2 >();
+}
+"
+  exportConstant_cases="${exportConstant_cases}
+  case $1: return to->mkConst(n.getConst< $2 >());"
+}
+
+function check_theory_seen {
+  if $seen_endtheory; then
+    echo "$kf:$lineno: error: command after \"endtheory\" declaration (endtheory has to be last)" >&2
+    exit 1
+  fi
+  if ! $seen_theory; then
+    echo "$kf:$lineno: error: no \"theory\" declaration found (it has to be first)" >&2
+    exit 1
+  fi
+}
+
+function check_builtin_theory_seen {
+  if ! $seen_theory_builtin; then
+    echo "$me: warning: no declaration for the builtin theory found" >&2
+  fi
+}
+
+while [ $# -gt 0 ]; do
+  kf=$1
+  seen_theory=false
+  seen_endtheory=false
+  b=$(basename $(dirname "$kf"))
+  source "$kf"
+  if ! $seen_theory; then
+    echo "$kf: error: no theory content found in file!" >&2
+    exit 1
+  fi
+  if ! $seen_endtheory; then
+    echo "$kf:$lineno: error: no \"endtheory\" declaration found (it is required at the end)" >&2
+    exit 1
+  fi
+  shift
+done
+check_builtin_theory_seen
+
+## output
+
+# generate warnings about incorrect #line annotations in templates
+nl -ba -s' ' "$template"  | grep '^ *[0-9][0-9]* # *line' |
+  awk '{OFS="";if($1+1!=$3) print "'"$template"':",$1,": warning: incorrect annotation \"#line ",$3,"\" (it should be \"#line ",($1+1),"\")"}' >&2
+
+text=$(cat "$template")
+for var in \
+    includes \
+    template \
+    getConst_instantiations \
+    getConst_implementations \
+    mkConst_instantiations \
+    mkConst_implementations \
+    exportConstant_cases \
+    typechecker_includes \
+    typerules \
+    construles \
+    neverconstrules \
+    ; do
+  eval text="\${text//\\\$\\{$var\\}/\${$var}}"
+done
+error=`expr "$text" : '.*\${\([^}]*\)}.*'`
+if [ -n "$error" ]; then
+  echo "$template:0: error: undefined replacement \${$error}" >&2
+  exit 1
+fi
+echo "$text"
diff --git a/src/expr/mkkind b/src/expr/mkkind
new file mode 100755
index 0000000..d54aa3a
--- /dev/null
+++ b/src/expr/mkkind
@@ -0,0 +1,419 @@
+#!/bin/bash
+#
+# mkkind
+# Morgan Deters <mdeters at cs.nyu.edu> for CVC4
+# Copyright (c) 2010-2013  The CVC4 Project
+#
+# The purpose of this script is to create kind.h (and also
+# type_properties.h) from a template and a list of theory kinds.
+#
+# Invocation:
+#
+#   mkkind template-file theory-kind-files...
+#
+# Output is to standard out.
+#
+
+copyright=2010-2014
+
+filename=`basename "$1" | sed 's,_template,,'`
+
+cat <<EOF
+/*********************                                                        */
+/** $filename
+ **
+ ** Copyright $copyright  New York University and The University of Iowa,
+ ** and as below.
+ **
+ ** This header file automatically generated by:
+ **
+ **     $0 $@
+ **
+ ** for the CVC4 project.
+ **/
+
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+
+/* Edit the template file instead:                     */
+/* $1 */
+
+EOF
+
+me=$(basename "$0")
+
+template=$1; shift
+
+kind_decls=
+kind_printers=
+kind_to_theory_id=
+
+type_constant_descriptions=
+type_constant_list=
+type_constant_to_theory_id=
+type_cardinalities=
+type_constant_cardinalities=
+type_wellfoundednesses=
+type_constant_wellfoundednesses=
+type_groundterms=
+type_constant_groundterms=
+type_properties_includes=
+
+seen_theory=false
+seen_theory_builtin=false
+
+theory_enum=
+theory_descriptions=
+
+function theory {
+  # theory ID T header
+
+  lineno=${BASH_LINENO[0]}
+
+  if $seen_theory; then
+    echo "$kf:$lineno: error: multiple theories defined in one file !?" >&2
+    exit 1
+  fi
+
+  # this script doesn't care about the theory class information, but
+  # makes does make sure it's there
+  seen_theory=true
+  if [ "$1" = THEORY_BUILTIN ]; then
+    if $seen_theory_builtin; then
+      echo "$kf:$lineno: error: \"builtin\" theory redefined" >&2
+      exit 1
+    fi
+    seen_theory_builtin=true
+  elif [ -z "$1" -o -z "$2" -o -z "$3" ]; then
+    echo "$kf:$lineno: error: \"theory\" directive missing class or header argument" >&2
+    exit 1
+  elif ! expr "$2" : '\(::*\)' >/dev/null; then
+    echo "$kf:$lineno: warning: theory class \`$2' isn't fully-qualified (e.g., ::CVC4::theory::foo)" >&2
+  elif ! expr "$2" : '\(::CVC4::theory::*\)' >/dev/null; then
+    echo "$kf:$lineno: warning: theory class not under ::CVC4::theory namespace" >&2
+  fi
+
+  theory_id="$1"
+  theory_enum="${theory_enum}  $1,
+"
+  theory_descriptions="${theory_descriptions}  case ${theory_id}: out << \"${theory_id}\"; break;
+"
+}
+
+function alternate {
+  # alternate ID name T header
+
+  lineno=${BASH_LINENO[0]}
+
+  if $seen_theory; then
+    echo "$kf:$lineno: error: multiple theories defined in one file !?" >&2
+    exit 1
+  fi
+
+  seen_theory=true
+  seen_endtheory=true
+}
+
+function properties {
+  # rewriter class header
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function endtheory {
+  # endtheory
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+  seen_endtheory=true
+}
+
+function enumerator {
+  # enumerator KIND enumerator-class header
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function typechecker {
+  # typechecker header
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function typerule {
+  # typerule OPERATOR typechecking-class
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function construle {
+  # construle OPERATOR isconst-checking-class
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function rewriter {
+  # properties prop*
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function sort {
+  # sort TYPE cardinality [well-founded ground-term header | not-well-founded] ["comment"]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+  if [ "$3" = well-founded ]; then
+    wf=true
+    groundterm="$4"
+    header="$5"
+    comment="$6"
+  elif [ "$3" = not-well-founded ]; then
+    wf=false
+    groundterm=
+    header=
+    comment="$4"
+  else
+    echo "$kf:$lineno: expected third argument to be \"well-founded\" or \"not-well-founded\"" >&2
+    exit 1
+  fi
+  register_sort "$1" "$2" "$wf" "$groundterm" "$header" "$comment"
+}
+
+function cardinality {
+  # cardinality TYPE cardinality-computer [header]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+  register_cardinality "$1" "$2" "$3"
+}
+
+function well-founded {
+  # well-founded TYPE wellfoundedness-computer groundterm-computer [header]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+  register_wellfoundedness "$1" "$2" "$3" "$4"
+}
+
+function variable {
+  # variable K ["comment"]
+
+  lineno=${BASH_LINENO[0]}
+
+  check_theory_seen
+  register_kind "$1" 0 "$2"
+}
+
+function operator {
+  # operator K #children ["comment"]
+
+  lineno=${BASH_LINENO[0]}
+
+  check_theory_seen
+  register_kind "$1" "$2" "$3"
+}
+
+function parameterized {
+  # parameterized K1 K2 #children ["comment"]
+
+  lineno=${BASH_LINENO[0]}
+
+  check_theory_seen
+  register_kind "$1" "$3" "$4"
+}
+
+function constant {
+  # constant K T Hasher header ["comment"]
+
+  lineno=${BASH_LINENO[0]}
+
+  check_theory_seen
+  register_kind "$1" 0 "$5"
+}
+
+function register_sort {
+  id=$1
+  cardinality=$2
+  wellfoundedness=$3
+  groundterm=$4
+  header=$5
+  comment=$6
+
+  type_constant_list="${type_constant_list}  ${id}, /**< ${comment} */
+"
+  type_constant_descriptions="${type_constant_descriptions}  case $id:  out << \"${comment}\"; break;
+"
+  type_constant_to_theory_id="${type_constant_to_theory_id}  case $id: return $theory_id;
+"
+  type_constant_cardinalities="${type_constant_cardinalities}#line $lineno \"$kf\"
+  case $id: return Cardinality($cardinality);
+"
+  type_constant_wellfoundednesses="${type_constant_wellfoundednesses}#line $lineno \"$kf\"
+  case $id: return $wellfoundedness;
+"
+  if [ -n "$groundterm" ]; then
+    type_constant_groundterms="${type_constant_groundterms}#line $lineno \"$kf\"
+  case $id: return $groundterm;
+"
+    if [ -n "$header" ]; then
+      type_properties_includes="${type_properties_includes}#line $lineno \"$kf\"
+#include \"$header\"
+"
+    fi
+  else
+    type_constant_groundterms="${type_constant_groundterms}#line $lineno \"$kf\"
+  case $id: Unhandled(tc);
+"
+  fi
+}
+
+function register_cardinality {
+  id=$1
+  cardinality_computer=$(sed 's,%TYPE%,typeNode,g' <<<"$2")
+  header=$3
+
+  type_cardinalities="${type_cardinalities}#line $lineno \"$kf\"
+  case $id: return $cardinality_computer;
+"
+  if [ -n "$header" ]; then
+    type_properties_includes="${type_properties_includes}#line $lineno \"$kf\"
+#include \"$header\"
+"
+  fi
+}
+
+function register_wellfoundedness {
+  id=$1
+  wellfoundedness_computer=$(sed 's,%TYPE%,typeNode,g' <<<"$2")
+  groundterm_computer=$(sed 's,%TYPE%,typeNode,g' <<<"$3")
+  header=$4
+
+  # "false" is a special well-foundedness computer that doesn't
+  # require an associated groundterm-computer; anything else does
+  if [ "$wellfoundedness_computer" != false ]; then
+    if [ -z "$groundterm_computer" ]; then
+      echo "$kf:$lineno: ground-term computer missing in command \"well-founded\"" >&2
+      exit 1
+    fi
+  else
+    if [ -n "$groundterm_computer" ]; then
+      echo "$kf:$lineno: ground-term computer specified for not-well-founded type" >&2
+      exit 1
+    fi
+  fi
+
+  type_wellfoundednesses="${type_wellfoundednesses}#line $lineno \"$kf\"
+  case $id: return $wellfoundedness_computer;
+"
+  if [ -n "$groundterm_computer" ]; then
+    type_groundterms="${type_groundterms}#line $lineno \"$kf\"
+  case $id: return $groundterm_computer;
+"
+  else
+    type_groundterms="${type_groundterms}#line $lineno \"$kf\"
+  case $id: Unhandled(typeNode);
+"
+  fi
+  if [ -n "$header" ]; then
+    type_properties_includes="${type_properties_includes}#line $lineno \"$kf\"
+#include \"$header\"
+"
+  fi
+}
+
+function register_kind {
+  r=$1
+  nc=$2
+  comment=$3
+  register_kind_counter=$[register_kind_counter+1]
+
+  kind_decls="${kind_decls}  $r, /**< $comment ($register_kind_counter) */
+"
+  kind_printers="${kind_printers}  case $r: out << \"$r\"; break;
+"
+  kind_to_theory_id="${kind_to_theory_id}  case kind::$r: return $theory_id;
+"
+}
+
+function check_theory_seen {
+  if $seen_endtheory; then
+    echo "$kf:$lineno: error: command after \"endtheory\" declaration (endtheory has to be last)" >&2
+    exit 1
+  fi
+  if ! $seen_theory; then
+    echo "$kf:$lineno: error: no \"theory\" declaration found (it has to be first)" >&2
+    exit 1
+  fi
+}
+
+function check_builtin_theory_seen {
+  if ! $seen_theory_builtin; then
+    echo "$me: warning: no declaration for the builtin theory found" >&2
+  fi
+}
+
+while [ $# -gt 0 ]; do
+  kf=$1
+  seen_theory=false
+  seen_endtheory=false
+  b=$(basename $(dirname "$kf"))
+  kind_decls="${kind_decls}
+  /* from $b */
+"
+  kind_printers="${kind_printers}
+  /* from $b */
+"
+  source "$kf"
+  if ! $seen_theory; then
+    echo "$kf: error: no theory content found in file!" >&2
+    exit 1
+  fi
+  if ! $seen_endtheory; then
+    echo "$kf:$lineno: error: no \"endtheory\" declaration found (it is required at the end)" >&2
+    exit 1
+  fi
+  shift
+done
+check_builtin_theory_seen
+
+## output
+
+# generate warnings about incorrect #line annotations in templates
+nl -ba -s' ' "$template"  | grep '^ *[0-9][0-9]* # *line' |
+  awk '{OFS="";if($1+1!=$3) print "'"$template"':",$1,": warning: incorrect annotation \"#line ",$3,"\" (it should be \"#line ",($1+1),"\")"}' >&2
+
+text=$(cat "$template")
+for var in \
+    kind_decls \
+    kind_printers \
+    kind_to_theory_id \
+    theory_enum \
+    type_constant_list \
+    type_constant_descriptions \
+    type_constant_to_theory_id \
+    type_cardinalities \
+    type_constant_cardinalities \
+    type_wellfoundednesses \
+    type_constant_wellfoundednesses \
+    type_groundterms \
+    type_constant_groundterms \
+    type_properties_includes \
+    theory_descriptions \
+    template \
+    ; do
+  eval text="\${text//\\\$\\{$var\\}/\${$var}}"
+done
+error=`expr "$text" : '.*\${\([^}]*\)}.*'`
+if [ -n "$error" ]; then
+  echo "$template:0: error: undefined replacement \${$error}" >&2
+  exit 1
+fi
+echo "$text"
diff --git a/src/expr/mkmetakind b/src/expr/mkmetakind
new file mode 100755
index 0000000..5f003dc
--- /dev/null
+++ b/src/expr/mkmetakind
@@ -0,0 +1,435 @@
+#!/bin/bash
+#
+# mkmetakind
+# Morgan Deters <mdeters at cs.nyu.edu> for CVC4
+# Copyright (c) 2010-2013  The CVC4 Project
+#
+# The purpose of this script is to create metakind.h from a template
+# and a list of theory kinds.
+#
+# This is kept distinct from kind.h because kind.h is a public header
+# and metakind.h is intended for the expr package only.
+#
+# Invocation:
+#
+#   mkmetakind template-file theory-kind-files...
+#
+# Output is to standard out.
+#
+
+copyright=2010-2014
+
+cat <<EOF
+/*********************                                                        */
+/** metakind.h
+ **
+ ** Copyright $copyright  New York University and The University of Iowa,
+ ** and as below.
+ **
+ ** This header file automatically generated by:
+ **
+ **     $0 $@
+ **
+ ** for the CVC4 project.
+ **/
+
+EOF
+
+me=$(basename "$0")
+
+template=$1; shift
+
+metakind_includes=
+metakind_kinds=
+metakind_constantMaps=
+metakind_compares=
+metakind_constHashes=
+metakind_constPrinters=
+metakind_constDeleters=
+metakind_ubchildren=
+metakind_lbchildren=
+metakind_operatorKinds=
+
+use_theory_validations=
+theory_alternate_doc=
+
+seen_theory=false
+seen_theory_builtin=false
+
+function theory {
+  # theory ID T header
+
+  lineno=${BASH_LINENO[0]}
+
+  if $seen_theory; then
+    echo "$kf:$lineno: error: multiple theories defined in one file !?" >&2
+    exit 1
+  fi
+
+  # this script doesn't care about the theory class information, but
+  # makes does make sure it's there
+  seen_theory=true
+  if [ "$1" = THEORY_BUILTIN ]; then
+    if $seen_theory_builtin; then
+      echo "$kf:$lineno: error: \"builtin\" theory redefined" >&2
+      exit 1
+    fi
+    seen_theory_builtin=true
+  elif [ -z "$1" -o -z "$2" -o -z "$3" ]; then
+    echo "$kf:$lineno: error: \"theory\" directive missing class or header argument" >&2
+    exit 1
+  elif ! expr "$2" : '\(::*\)' >/dev/null; then
+    echo "$kf:$lineno: warning: theory class \`$1' isn't fully-qualified (e.g., ::CVC4::theory::foo)" >&2
+  elif ! expr "$2" : '\(::CVC4::theory::*\)' >/dev/null; then
+    echo "$kf:$lineno: warning: theory class not under ::CVC4::theory namespace" >&2
+  fi
+
+  theory_class=$1
+  metakind_includes="${metakind_includes}
+// #include \"theory/$b/$2\""
+}
+
+function alternate {
+  # alternate ID name T header
+
+  lineno=${BASH_LINENO[0]}
+
+  if $seen_theory; then
+    echo "$kf:$lineno: error: multiple theories defined in one file !?" >&2
+    exit 1
+  fi
+
+  seen_theory=true
+  seen_endtheory=true
+
+  theory_id="$1"
+  name="$2"
+  theory_class="$3"
+  theory_header="$4"
+  theory_includes="${theory_includes}#include \"$theory_header\"
+"
+
+  use_theory_validations="${use_theory_validations}
+  if(theory == \"$name\") {
+    return true;
+  }"
+  theory_alternate_doc="$theory_alternate_doc$name - alternate implementation for $theory_id\\n\\
+"
+}
+
+function properties {
+  # properties prop*
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function endtheory {
+  # endtheory
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+  seen_endtheory=true
+}
+
+function enumerator {
+  # enumerator KIND enumerator-class header
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function typechecker {
+  # typechecker header
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function typerule {
+  # typerule OPERATOR typechecking-class
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function construle {
+  # construle OPERATOR isconst-checking-class
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function rewriter {
+  # rewriter class header
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function sort {
+  # sort TYPE cardinality [well-founded ground-term header | not-well-founded] ["comment"]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function cardinality {
+  # cardinality TYPE cardinality-computer [header]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function well-founded {
+  # well-founded TYPE wellfoundedness-computer [header]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function variable {
+  # variable K ["comment"]
+
+  lineno=${BASH_LINENO[0]}
+
+  check_theory_seen
+  register_metakind VARIABLE "$1" 0
+}
+
+function operator {
+  # operator K #children ["comment"]
+
+  lineno=${BASH_LINENO[0]}
+
+  check_theory_seen
+  register_metakind OPERATOR "$1" "$2"
+}
+
+function parameterized {
+  # parameterized K1 K2 #children ["comment"]
+
+  lineno=${BASH_LINENO[0]}
+
+  check_theory_seen
+  register_metakind PARAMETERIZED "$1" "$3"
+  if ! expr "$2" : '\[.*\]' &>/dev/null; then
+    registerOperatorToKind "$1" "$2"
+  fi
+}
+
+function constant {
+  # constant K T Hasher header ["comment"]
+
+  lineno=${BASH_LINENO[0]}
+
+  check_theory_seen
+
+  if ! expr "$2" : '\(::*\)' >/dev/null; then
+    if ! primitive_type "$2"; then
+      # if there's an embedded space, we're probably doing something
+      # tricky to specify the CONST payload, like "int const*"; in any
+      # case, this warning gives too many false positives, so disable it
+      if ! expr "$2" : '..* ..*' >/dev/null; then
+        echo "$kf:$lineno: warning: constant $1 class \`$2' isn't fully-qualified (e.g., ::CVC4::Rational)" >&2
+      fi
+    fi
+  fi
+  if ! expr "$3" : '\(::*\)' >/dev/null; then
+    echo "$kf:$lineno: warning: constant $1 hasher \`$3' isn't fully-qualified (e.g., ::CVC4::RationalHashFunction)" >&2
+  fi
+
+  if [ -n "$4" ]; then
+    metakind_includes="${metakind_includes}
+#include \"$4\""
+  fi
+  register_metakind CONSTANT "$1" 0
+  metakind_constantMaps="${metakind_constantMaps}
+}/* CVC4::kind::metakind namespace */
+}/* CVC4::kind namespace */
+
+namespace expr {
+
+// The reinterpret_cast of d_children to \"$2 const*\"
+// flags a \"strict aliasing\" warning; it's okay, because we never access
+// the embedded constant as a NodeValue* child, and never access an embedded
+// NodeValue* child as a constant.
+#pragma GCC diagnostic ignored \"-Wstrict-aliasing\"
+
+template <>
+inline $2 const& NodeValue::getConst< $2 >() const {
+  AssertArgument(getKind() == ::CVC4::kind::$1, *this,
+                 \"Improper kind for getConst<$2>()\");
+  // To support non-inlined CONSTANT-kinded NodeValues (those that are
+  // \"constructed\" when initially checking them against the NodeManager
+  // pool), we must check d_nchildren here.
+  return d_nchildren == 0
+    ? *reinterpret_cast< $2 const* >(d_children)
+    : *reinterpret_cast< $2 const* >(d_children[0]);
+}
+
+// re-enable the warning
+#pragma GCC diagnostic warning \"-Wstrict-aliasing\"
+
+}/* CVC4::expr namespace */
+
+namespace kind {
+namespace metakind {
+
+template <>
+struct ConstantMap< $2 > {
+  // typedef $theory_class OwningTheory;
+  enum { kind = ::CVC4::kind::$1 };
+};/* ConstantMap< $2 > */
+
+template <>
+struct ConstantMapReverse< ::CVC4::kind::$1 > {
+  typedef $2 T;
+};/* ConstantMapReverse< ::CVC4::kind::$1 > */
+
+"
+  metakind_compares="${metakind_compares}
+    case kind::$1:
+      return NodeValueConstCompare< kind::$1, pool >::compare(nv1, nv2);
+"
+  metakind_constHashes="${metakind_constHashes}
+  case kind::$1:
+#line $lineno \"$kf\"
+    return $3()(nv->getConst< $2 >());
+"
+  metakind_constPrinters="${metakind_constPrinters}
+  case kind::$1:
+#line $lineno \"$kf\"
+    out << nv->getConst< $2 >();
+    break;
+"
+  cname=`echo "$2" | awk 'BEGIN {FS="::"} {print$NF}'`
+  metakind_constDeleters="${metakind_constDeleters}
+  case kind::$1:
+#line $lineno \"$kf\"
+    std::allocator< $2 >().destroy(reinterpret_cast< $2* >(nv->d_children));
+    break;
+"
+}
+
+function registerOperatorToKind {
+  operatorKind=$1
+  applyKind=$2
+  metakind_operatorKinds="${metakind_operatorKinds}
+#line $lineno \"$kf\"
+    case kind::$applyKind: return kind::$operatorKind;";
+}
+
+function register_metakind {
+  mk=$1
+  k=$2
+  nc=$3
+
+  metakind_kinds="${metakind_kinds}    metakind::$mk, /* $k */
+";
+
+  # figure out the range given by $nc
+  if expr "$nc" : '[0-9][0-9]*$' >/dev/null; then
+    lb=$nc
+    ub=$nc
+  elif expr "$nc" : '[0-9][0-9]*:$' >/dev/null; then
+    let `echo "$nc" | awk 'BEGIN{FS=":"}{print"lb="$1}'`
+    ub=MAX_CHILDREN
+  elif expr "$nc" : '[0-9][0-9]*:[0-9][0-9]*$' >/dev/null; then
+    let `echo "$nc" | awk 'BEGIN{FS=":"}{print"lb="$1" ub="$2}'`
+    if [ $ub -lt $lb ]; then
+      echo "$kf:$lineno: error in range \`$nc': LB < UB (in definition of $k)" >&2
+      exit 1
+    fi
+  else
+    echo "$kf:$lineno: can't parse range \`$nc' in definition of $k" >&2
+    exit 1
+  fi
+
+  metakind_lbchildren="${metakind_lbchildren}
+    $lb, /* $k */"
+  metakind_ubchildren="${metakind_ubchildren}
+    $ub, /* $k */"
+}
+
+# Returns 0 if arg is a primitive C++ type, or a pointer to same; 1
+# otherwise.  Really all this does is check whether we should issue a
+# "not fully qualified" warning or not.
+function primitive_type {
+  strip=`expr "$1" : ' *\(.*\)\* *'`
+  if [ -n "$strip" ]; then
+    primitive_type "$strip" >&2
+    return $?
+  fi
+
+  case "$1" in
+    bool|int|size_t|long|void|char|float|double) return 0;;
+    *) return 1;;
+  esac
+}
+
+function check_theory_seen {
+  if $seen_endtheory; then
+    echo "$kf:$lineno: error: command after \"endtheory\" declaration (endtheory has to be last)" >&2
+    exit 1
+  fi
+  if ! $seen_theory; then
+    echo "$kf:$lineno: error: no \"theory\" declaration found (it has to be first)" >&2
+    exit 1
+  fi
+}
+
+function check_builtin_theory_seen {
+  if ! $seen_theory_builtin; then
+    echo "$me: warning: no declaration for the builtin theory found" >&2
+  fi
+}
+
+while [ $# -gt 0 ]; do
+  kf=$1
+  seen_theory=false
+  seen_endtheory=false
+  b=$(basename $(dirname "$kf"))
+  metakind_kinds="${metakind_kinds}
+    /* from $b */
+"
+  metakind_operatorKinds="${metakind_operatorKinds}
+
+    /* from $b */"
+  source "$kf"
+  if ! $seen_theory; then
+    echo "$kf: error: no theory content found in file!" >&2
+    exit 1
+  fi
+  if ! $seen_endtheory; then
+    echo "$kf:$lineno: error: no \"endtheory\" declaration found (it is required at the end)" >&2
+    exit 1
+  fi
+  shift
+done
+check_builtin_theory_seen
+
+## output
+
+# generate warnings about incorrect #line annotations in templates
+nl -ba -s' ' "$template"  | grep '^ *[0-9][0-9]* # *line' |
+  awk '{OFS="";if($1+1!=$3) print "'"$template"':",$1,": warning: incorrect annotation \"#line ",$3,"\" (it should be \"#line ",($1+1),"\")"}' >&2
+
+if [ -z "$theory_alternate_doc" ]; then
+  theory_alternate_doc="[none defined]"
+fi
+
+text=$(cat "$template")
+for var in \
+    metakind_includes \
+    metakind_kinds \
+    metakind_constantMaps \
+    metakind_compares \
+    metakind_constHashes \
+    metakind_constPrinters \
+    metakind_constDeleters \
+    metakind_ubchildren \
+    metakind_lbchildren \
+    metakind_operatorKinds \
+    use_theory_validations \
+    theory_alternate_doc \
+    template \
+    ; do
+  eval text="\${text//\\\$\\{$var\\}/\${$var}}"
+done
+error=`expr "$text" : '.*\${\([^}]*\)}.*'`
+if [ -n "$error" ]; then
+  echo "$template:0: error: undefined replacement \${$error}" >&2
+  exit 1
+fi
+echo "$text"
diff --git a/src/expr/node.cpp b/src/expr/node.cpp
new file mode 100644
index 0000000..793b6af
--- /dev/null
+++ b/src/expr/node.cpp
@@ -0,0 +1,128 @@
+/*********************                                                        */
+/*! \file node.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Reference-counted encapsulation of a pointer to node information.
+ **
+ ** Reference-counted encapsulation of a pointer to node information.
+ **/
+#include "expr/node.h"
+
+#include <iostream>
+#include <cstring>
+
+#include "base/exception.h"
+#include "base/output.h"
+#include "expr/attribute.h"
+
+
+using namespace std;
+
+namespace CVC4 {
+
+TypeCheckingExceptionPrivate::TypeCheckingExceptionPrivate(TNode node,
+                                                           std::string message) throw() :
+  Exception(message),
+  d_node(new Node(node)) {
+#ifdef CVC4_DEBUG
+  LastExceptionBuffer* current = LastExceptionBuffer::getCurrent();
+  if(current != NULL){
+    current->setContents(toString().c_str());
+  }
+#endif /* CVC4_DEBUG */
+}
+
+TypeCheckingExceptionPrivate::~TypeCheckingExceptionPrivate() throw () {
+  delete d_node;
+}
+
+void TypeCheckingExceptionPrivate::toStream(std::ostream& os) const throw() {
+  os << "Error during type checking: " << d_msg << std::endl << *d_node << endl << "The ill-typed expression: " << *d_node;
+}
+
+NodeTemplate<true> TypeCheckingExceptionPrivate::getNode() const throw() {
+  return *d_node;
+}
+
+UnknownTypeException::UnknownTypeException(TNode n) throw() :
+  TypeCheckingExceptionPrivate(n, "this expression contains an element of unknown type (such as an abstract value);"
+                               " its type cannot be computed until it is substituted away") {
+}
+
+/** Is this node constant? (and has that been computed yet?) */
+struct IsConstTag { };
+struct IsConstComputedTag { };
+struct HasBoundVarTag { };
+struct HasBoundVarComputedTag { };
+typedef expr::Attribute<IsConstTag, bool> IsConstAttr;
+typedef expr::Attribute<IsConstComputedTag, bool> IsConstComputedAttr;
+/** Attribute true for expressions with bound variables in them */
+typedef expr::Attribute<HasBoundVarTag, bool> HasBoundVarAttr;
+typedef expr::Attribute<HasBoundVarComputedTag, bool> HasBoundVarComputedAttr;
+
+template <bool ref_count>
+bool NodeTemplate<ref_count>::isConst() const {
+  assertTNodeNotExpired();
+  Debug("isConst") << "Node::isConst() for: " << *this << std::endl;
+  if(isNull()) {
+    return false;
+  }
+  switch(getMetaKind()) {
+  case kind::metakind::CONSTANT:
+    Debug("isConst") << "Node::isConst() returning true, it's a CONSTANT" << std::endl;
+    return true;
+  case kind::metakind::VARIABLE:
+    Debug("isConst") << "Node::isConst() returning false, it's a VARIABLE" << std::endl;
+    return false;
+  default:
+    if(expr::TypeChecker::neverIsConst(NodeManager::currentNM(), *this)){
+      Debug("isConst") << "Node::isConst() returning false, the kind is never const" << std::endl;
+      return false;
+    }
+    if(getAttribute(IsConstComputedAttr())) {
+      bool bval = getAttribute(IsConstAttr());
+      Debug("isConst") << "Node::isConst() returning cached value " << (bval ? "true" : "false") << " for: " << *this << std::endl;
+      return bval;
+    } else {
+      bool bval = expr::TypeChecker::computeIsConst(NodeManager::currentNM(), *this);
+      Debug("isConst") << "Node::isConst() computed value " << (bval ? "true" : "false") << " for: " << *this << std::endl;
+      const_cast< NodeTemplate<ref_count>* >(this)->setAttribute(IsConstAttr(), bval);
+      const_cast< NodeTemplate<ref_count>* >(this)->setAttribute(IsConstComputedAttr(), true);
+      return bval;
+    }
+  }
+}
+
+template <bool ref_count>
+bool NodeTemplate<ref_count>::hasBoundVar() {
+  assertTNodeNotExpired();
+  if(! getAttribute(HasBoundVarComputedAttr())) {
+    bool hasBv = false;
+    if(getKind() == kind::BOUND_VARIABLE) {
+      hasBv = true;
+    } else {
+      for(iterator i = begin(); i != end() && !hasBv; ++i) {
+        hasBv = (*i).hasBoundVar();
+      }
+    }
+    setAttribute(HasBoundVarAttr(), hasBv);
+    setAttribute(HasBoundVarComputedAttr(), true);
+    Debug("bva") << *this << " has bva : " << getAttribute(HasBoundVarAttr()) << std::endl;
+    return hasBv;
+  }
+  return getAttribute(HasBoundVarAttr());
+}
+
+template bool NodeTemplate<true>::isConst() const;
+template bool NodeTemplate<false>::isConst() const;
+template bool NodeTemplate<true>::hasBoundVar();
+template bool NodeTemplate<false>::hasBoundVar();
+
+}/* CVC4 namespace */
diff --git a/src/expr/node.h b/src/expr/node.h
new file mode 100644
index 0000000..6dbb5aa
--- /dev/null
+++ b/src/expr/node.h
@@ -0,0 +1,1552 @@
+/*********************                                                        */
+/*! \file node.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Reference-counted encapsulation of a pointer to node information
+ **
+ ** Reference-counted encapsulation of a pointer to node information.
+ **/
+
+#include "cvc4_private.h"
+
+// circular dependency
+#include "expr/node_value.h"
+
+#ifndef __CVC4__NODE_H
+#define __CVC4__NODE_H
+
+#include <vector>
+#include <string>
+#include <iostream>
+#include <utility>
+#include <algorithm>
+#include <functional>
+#include <stdint.h>
+
+#include "base/configuration.h"
+#include "base/cvc4_assert.h"
+#include "base/exception.h"
+#include "base/output.h"
+#include "expr/type.h"
+#include "expr/kind.h"
+#include "expr/metakind.h"
+#include "expr/expr.h"
+#include "expr/expr_iomanip.h"
+#include "options/language.h"
+#include "options/set_language.h"
+#include "util/utility.h"
+#include "util/hash.h"
+
+namespace CVC4 {
+
+class TypeNode;
+class NodeManager;
+
+namespace expr {
+  namespace pickle {
+    class PicklerPrivate;
+  }/* CVC4::expr::pickle namespace */
+}/* CVC4::expr namespace */
+
+template <bool ref_count>
+class NodeTemplate;
+
+/**
+ * Exception thrown during the type-checking phase, it can be
+ * thrown by node.getType().
+ */
+class TypeCheckingExceptionPrivate : public Exception {
+
+private:
+
+  /** The node responsible for the failure */
+  NodeTemplate<true>* d_node;
+
+public:
+
+  /**
+   * Construct the exception with the problematic node and the message
+   * @param node the problematic node
+   * @param message the message explaining the failure
+   */
+  TypeCheckingExceptionPrivate(NodeTemplate<false> node, std::string message) throw();
+
+  /** Destructor */
+  ~TypeCheckingExceptionPrivate() throw ();
+
+  /**
+   * Get the Node that caused the type-checking to fail.
+   * @return the node
+   */
+  NodeTemplate<true> getNode() const throw();
+
+  /**
+   * Returns the message corresponding to the type-checking failure.
+   * We prefer toStream() to toString() because that keeps the expr-depth
+   * and expr-language settings present in the stream.
+   */
+  void toStream(std::ostream& out) const throw();
+
+};/* class TypeCheckingExceptionPrivate */
+
+class UnknownTypeException : public TypeCheckingExceptionPrivate {
+public:
+
+  UnknownTypeException(NodeTemplate<false> node) throw();
+
+};/* class UnknownTypeException */
+
+/**
+ * \typedef NodeTemplate<true> Node;
+ *
+ * The Node class encapsulates the NodeValue with reference counting.
+ *
+ * One should use generally use Nodes to manipulate expressions, to be safe.
+ * Every outstanding Node that references a NodeValue is counted in that
+ * NodeValue's reference count.  Reference counts are maintained correctly
+ * on assignment of the Node object (to point to another NodeValue), and,
+ * upon destruction of the Node object, the NodeValue's reference count is
+ * decremented and, if zero, it becomes eligible for reclamation by the
+ * system.
+ */
+typedef NodeTemplate<true> Node;
+
+/**
+ * \typedef NodeTemplate<false> TNode;
+ *
+ * The TNode class encapsulates the NodeValue but doesn't count references.
+ *
+ * TNodes are just like Nodes, but they don't update the reference count.
+ * Therefore, there is less overhead (copying a TNode is just the cost of
+ * the underlying pointer copy).  Generally speaking, this is unsafe!
+ * However, there are certain situations where a TNode can be used safely.
+ *
+ * The largest class of uses for TNodes are when you need to use them in a
+ * "temporary," scoped fashion (hence the "T" in "TNode").  In general,
+ * it is safe to use TNode as a function parameter type, since the calling
+ * function (or some other function on the call stack) presumably has a Node
+ * reference to the expression data.  It is generally _not_ safe, however,
+ * to return a TNode _from_ a function.  (Functions that return Nodes often
+ * create the expression they return; such new expressions may not be
+ * referenced on the call stack, and have a reference count of 1 on
+ * creation.  If this is returned as a TNode rather than a Node, the
+ * count drops to zero, marking the expression as eligible for reclamation.)
+ *
+ * More guidelines on when to use TNodes is available in the CVC4
+ * Developer's Guide:
+ * http://goedel.cims.nyu.edu/wiki/Developer%27s_Guide#Dealing_with_expressions_.28Nodes_and_TNodes.29
+ */
+typedef NodeTemplate<false> TNode;
+
+namespace expr {
+
+class NodeValue;
+
+  namespace attr {
+    class AttributeManager;
+    struct SmtAttributes;
+  }/* CVC4::expr::attr namespace */
+
+  class ExprSetDepth;
+}/* CVC4::expr namespace */
+
+namespace kind {
+  namespace metakind {
+    struct NodeValueConstPrinter;
+  }/* CVC4::kind::metakind namespace */
+}/* CVC4::kind namespace */
+
+// for hash_maps, hash_sets..
+struct NodeHashFunction {
+  inline size_t operator()(Node node) const;
+};/* struct NodeHashFunction */
+struct TNodeHashFunction {
+  inline size_t operator()(TNode node) const;
+};/* struct TNodeHashFunction */
+
+/**
+ * Encapsulation of an NodeValue pointer.  The reference count is
+ * maintained in the NodeValue if ref_count is true.
+ * @param ref_count if true reference are counted in the NodeValue
+ */
+template <bool ref_count>
+class NodeTemplate {
+  /**
+   * The NodeValue has access to the private constructors, so that the
+   * iterators can can create new nodes.
+   */
+  friend class expr::NodeValue;
+
+  friend class expr::pickle::PicklerPrivate;
+  friend class expr::ExportPrivate;
+
+  /** A convenient null-valued encapsulated pointer */
+  static NodeTemplate s_null;
+
+  /** The referenced NodeValue */
+  expr::NodeValue* d_nv;
+
+  /**
+   * This constructor is reserved for use by the NodeTemplate package; one
+   * must construct an NodeTemplate using one of the build mechanisms of the
+   * NodeTemplate package.
+   *
+   * FIXME: there's a type-system escape here to cast away the const,
+   * since the refcount needs to be updated.  But conceptually Nodes
+   * don't change their arguments, and it's nice to have
+   * const_iterators over them.
+   *
+   * This really does needs to be explicit to avoid hard to track errors with
+   * Nodes implicitly wrapping NodeValues
+   */
+  explicit NodeTemplate(const expr::NodeValue*);
+
+  friend class NodeTemplate<true>;
+  friend class NodeTemplate<false>;
+  friend class TypeNode;
+  friend class NodeManager;
+
+  template <unsigned nchild_thresh>
+  friend class NodeBuilder;
+
+  friend class ::CVC4::expr::attr::AttributeManager;
+  friend struct ::CVC4::expr::attr::SmtAttributes;
+
+  friend struct ::CVC4::kind::metakind::NodeValueConstPrinter;
+
+  /**
+   * Assigns the expression value and does reference counting. No assumptions
+   * are made on the expression, and should only be used if we know what we
+   * are doing.
+   *
+   * @param ev the expression value to assign
+   */
+  void assignNodeValue(expr::NodeValue* ev);
+
+  inline void assertTNodeNotExpired() const throw(AssertionException) {
+    if(!ref_count) {
+      Assert( d_nv->d_rc > 0, "TNode pointing to an expired NodeValue" );
+    }
+  }
+
+public:
+
+  /**
+   * Cache-aware, recursive version of substitute() used by the public
+   * member function with a similar signature.
+   */
+  Node substitute(TNode node, TNode replacement,
+                  std::hash_map<TNode, TNode, TNodeHashFunction>& cache) const;
+
+  /**
+   * Cache-aware, recursive version of substitute() used by the public
+   * member function with a similar signature.
+   */
+  template <class Iterator1, class Iterator2>
+  Node substitute(Iterator1 nodesBegin, Iterator1 nodesEnd,
+                  Iterator2 replacementsBegin, Iterator2 replacementsEnd,
+                  std::hash_map<TNode, TNode, TNodeHashFunction>& cache) const;
+
+  /**
+   * Cache-aware, recursive version of substitute() used by the public
+   * member function with a similar signature.
+   */
+  template <class Iterator>
+  Node substitute(Iterator substitutionsBegin, Iterator substitutionsEnd,
+                  std::hash_map<TNode, TNode, TNodeHashFunction>& cache) const;
+
+  /** Default constructor, makes a null expression. */
+  NodeTemplate() : d_nv(&expr::NodeValue::null()) { }
+
+  /**
+   * Conversion between nodes that are reference-counted and those that are
+   * not.
+   * @param node the node to make copy of
+   */
+  NodeTemplate(const NodeTemplate<!ref_count>& node);
+
+  /**
+   * Copy constructor.  Note that GCC does NOT recognize an instantiation of
+   * the above template as a copy constructor and problems ensue.  So we
+   * provide an explicit one here.
+   * @param node the node to make copy of
+   */
+  NodeTemplate(const NodeTemplate& node);
+
+  /**
+   * Allow Exprs to become Nodes.  This permits flexible translation of
+   * Exprs -> Nodes inside the CVC4 library without exposing a toNode()
+   * function in the public interface, or requiring lots of "friend"
+   * relationships.
+   */
+  NodeTemplate(const Expr& e);
+
+  /**
+   * Assignment operator for nodes, copies the relevant information from node
+   * to this node.
+   * @param node the node to copy
+   * @return reference to this node
+   */
+  NodeTemplate& operator=(const NodeTemplate& node);
+
+  /**
+   * Assignment operator for nodes, copies the relevant information from node
+   * to this node.
+   * @param node the node to copy
+   * @return reference to this node
+   */
+  NodeTemplate& operator=(const NodeTemplate<!ref_count>& node);
+
+  /**
+   * Destructor. If ref_count is true it will decrement the reference count
+   * and, if zero, collect the NodeValue.
+   */
+  ~NodeTemplate();
+
+  /**
+   * Return the null node.
+   * @return the null node
+   */
+  static NodeTemplate null() {
+    return s_null;
+  }
+
+  /**
+   * Returns true if this expression is a null expression.
+   * @return true if null
+   */
+  bool isNull() const {
+    assertTNodeNotExpired();
+    return d_nv == &expr::NodeValue::null();
+  }
+
+  /**
+   * Structural comparison operator for expressions.
+   * @param node the node to compare to
+   * @return true if expressions are equal, false otherwise
+   */
+  template <bool ref_count_1>
+  bool operator==(const NodeTemplate<ref_count_1>& node) const {
+    assertTNodeNotExpired();
+    node.assertTNodeNotExpired();
+    return d_nv == node.d_nv;
+  }
+
+  /**
+   * Structural comparison operator for expressions.
+   * @param node the node to compare to
+   * @return false if expressions are equal, true otherwise
+   */
+  template <bool ref_count_1>
+  bool operator!=(const NodeTemplate<ref_count_1>& node) const {
+    assertTNodeNotExpired();
+    node.assertTNodeNotExpired();
+    return d_nv != node.d_nv;
+  }
+
+  /**
+   * We compare by expression ids so, keeping things deterministic and having
+   * that subexpressions have to be smaller than the enclosing expressions.
+   * @param node the node to compare to
+   * @return true if this expression is smaller
+   */
+  template <bool ref_count_1>
+  inline bool operator<(const NodeTemplate<ref_count_1>& node) const {
+    assertTNodeNotExpired();
+    node.assertTNodeNotExpired();
+    return d_nv->d_id < node.d_nv->d_id;
+  }
+
+  /**
+   * We compare by expression ids so, keeping things deterministic and having
+   * that subexpressions have to be smaller than the enclosing expressions.
+   * @param node the node to compare to
+   * @return true if this expression is greater
+   */
+  template <bool ref_count_1>
+  inline bool operator>(const NodeTemplate<ref_count_1>& node) const {
+    assertTNodeNotExpired();
+    node.assertTNodeNotExpired();
+    return d_nv->d_id > node.d_nv->d_id;
+  }
+
+  /**
+   * We compare by expression ids so, keeping things deterministic and having
+   * that subexpressions have to be smaller than the enclosing expressions.
+   * @param node the node to compare to
+   * @return true if this expression is smaller than or equal to
+   */
+  template <bool ref_count_1>
+  inline bool operator<=(const NodeTemplate<ref_count_1>& node) const {
+    assertTNodeNotExpired();
+    node.assertTNodeNotExpired();
+    return d_nv->d_id <= node.d_nv->d_id;
+  }
+
+  /**
+   * We compare by expression ids so, keeping things deterministic and having
+   * that subexpressions have to be smaller than the enclosing expressions.
+   * @param node the node to compare to
+   * @return true if this expression is greater than or equal to
+   */
+  template <bool ref_count_1>
+  inline bool operator>=(const NodeTemplate<ref_count_1>& node) const {
+    assertTNodeNotExpired();
+    node.assertTNodeNotExpired();
+    return d_nv->d_id >= node.d_nv->d_id;
+  }
+
+  /**
+   * Returns the i-th child of this node.
+   * @param i the index of the child
+   * @return the node representing the i-th child
+   */
+  NodeTemplate operator[](int i) const {
+    assertTNodeNotExpired();
+    return NodeTemplate(d_nv->getChild(i));
+  }
+
+  /* A note on isAtomic() and isAtomicFormula() (in CVC3 parlance)..
+   *
+   * It has been decided for now to hold off on implementations of
+   * these functions, as they may only be needed in CNF conversion,
+   * where it's pointless to do a lazy isAtomic determination by
+   * searching through the DAG, and storing it, since the result will
+   * only be used once.  For more details see the 4/27/2010 CVC4
+   * developer's meeting notes at:
+   *
+   * http://goedel.cims.nyu.edu/wiki/Meeting_Minutes_-_April_27,_2010#isAtomic.28.29_and_isAtomicFormula.28.29
+   */
+  // bool containsDecision(); // is "atomic"
+  // bool properlyContainsDecision(); // maybe not atomic but all children are
+
+  /**
+   * Returns true iff this node contains a bound variable.  This bound
+   * variable may or may not be free.
+   * @return true iff this node contains a bound variable.
+   */
+  bool hasBoundVar();
+
+  /**
+   * Convert this Node into an Expr using the currently-in-scope
+   * manager.  Essentially this is like an "operator Expr()" but we
+   * don't want it to compete with implicit conversions between e.g.
+   * Node and TNode, and we want internal-to-external interface
+   * (Node -> Expr) points to be explicit.  We could write an
+   * explicit Expr(Node) constructor---but that dirties the public
+   * interface.
+   */
+  inline Expr toExpr() const;
+
+  /**
+   * Convert an Expr into a Node.
+   */
+  static inline Node fromExpr(const Expr& e);
+
+  /**
+   * Returns true if this node represents a constant
+   * @return true if const
+   */
+  bool isConst() const;
+
+  /**
+   * Returns true if this node represents a constant
+   * @return true if const
+   */
+  inline bool isVar() const {
+    assertTNodeNotExpired();
+    return getMetaKind() == kind::metakind::VARIABLE;
+  }
+
+  inline bool isClosure() const {
+    assertTNodeNotExpired();
+    return getKind() == kind::LAMBDA ||
+           getKind() == kind::FORALL ||
+           getKind() == kind::EXISTS ||
+           getKind() == kind::REWRITE_RULE;
+  }
+
+  /**
+   * Returns the unique id of this node
+   * @return the ud
+   */
+  unsigned long getId() const {
+    assertTNodeNotExpired();
+    return d_nv->getId();
+  }
+
+  /**
+   * Returns a node representing the operator of this expression.
+   * If this is an APPLY, then the operator will be a functional term.
+   * Otherwise, it will be a node with kind BUILTIN.
+   */
+  NodeTemplate<true> getOperator() const;
+
+  /**
+   * Returns true if the node has an operator (i.e., it's not a
+   * variable or a constant).
+   */
+  inline bool hasOperator() const;
+
+  /**
+   * Get the type for the node and optionally do type checking.
+   *
+   * Initial type computation will be near-constant time if
+   * type checking is not requested. Results are memoized, so that
+   * subsequent calls to getType() without type checking will be
+   * constant time.
+   *
+   * Initial type checking is linear in the size of the expression.
+   * Again, the results are memoized, so that subsequent calls to
+   * getType(), with or without type checking, will be constant
+   * time.
+   *
+   * NOTE: A TypeCheckingException can be thrown even when type
+   * checking is not requested. getType() will always return a
+   * valid and correct type and, thus, an exception will be thrown
+   * when no valid or correct type can be computed (e.g., if the
+   * arguments to a bit-vector operation aren't bit-vectors). When
+   * type checking is not requested, getType() will do the minimum
+   * amount of checking required to return a valid result.
+   *
+   * @param check whether we should check the type as we compute it
+   * (default: false)
+   */
+  TypeNode getType(bool check = false) const
+    throw (CVC4::TypeCheckingExceptionPrivate, CVC4::AssertionException);
+
+  /**
+   * Substitution of Nodes.
+   */
+  Node substitute(TNode node, TNode replacement) const;
+
+  /**
+   * Simultaneous substitution of Nodes.  Elements in the Iterator1
+   * range will be replaced by their corresponding element in the
+   * Iterator2 range.  Both ranges should have the same size.
+   */
+  template <class Iterator1, class Iterator2>
+  Node substitute(Iterator1 nodesBegin,
+                  Iterator1 nodesEnd,
+                  Iterator2 replacementsBegin,
+                  Iterator2 replacementsEnd) const;
+
+  /**
+   * Simultaneous substitution of Nodes.  Iterators should be over
+   * pairs (x,y) for the rewrites [x->y].
+   */
+  template <class Iterator>
+  Node substitute(Iterator substitutionsBegin,
+                  Iterator substitutionsEnd) const;
+
+  /**
+   * Returns the kind of this node.
+   * @return the kind
+   */
+  inline Kind getKind() const {
+    assertTNodeNotExpired();
+    return Kind(d_nv->d_kind);
+  }
+
+  /**
+   * Returns the metakind of this node.
+   * @return the metakind
+   */
+  inline kind::MetaKind getMetaKind() const {
+    assertTNodeNotExpired();
+    return kind::metaKindOf(getKind());
+  }
+
+  /**
+   * Returns the number of children this node has.
+   * @return the number of children
+   */
+  inline size_t getNumChildren() const;
+
+  /**
+   * If this is a CONST_* Node, extract the constant from it.
+   */
+  template <class T>
+  inline const T& getConst() const;
+
+  /**
+   * Returns the reference count of this node.
+   * @return the refcount
+   */
+  unsigned getRefCount() const {
+    return d_nv->getRefCount();
+  }
+
+  /**
+   * Returns the value of the given attribute that this has been attached.
+   * @param attKind the kind of the attribute
+   * @return the value of the attribute
+   */
+  template <class AttrKind>
+  inline typename AttrKind::value_type getAttribute(const AttrKind& attKind) const;
+
+  // Note that there are two, distinct hasAttribute() declarations for
+  // a reason (rather than using a pointer-valued argument with a
+  // default value): they permit more optimized code in the underlying
+  // hasAttribute() implementations.
+
+  /**
+   * Returns true if this node has been associated an attribute of given kind.
+   * Additionaly, if a pointer to the value_kind is give, and the attribute
+   * value has been set for this node, it will be returned.
+   * @param attKind the kind of the attribute
+   * @return true if this node has the requested attribute
+   */
+  template <class AttrKind>
+  inline bool hasAttribute(const AttrKind& attKind) const;
+
+  /**
+   * Returns true if this node has been associated an attribute of given kind.
+   * Additionaly, if a pointer to the value_kind is give, and the attribute
+   * value has been set for this node, it will be returned.
+   * @param attKind the kind of the attribute
+   * @param value where to store the value if it exists
+   * @return true if this node has the requested attribute
+   */
+  template <class AttrKind>
+  inline bool getAttribute(const AttrKind& attKind,
+                           typename AttrKind::value_type& value) const;
+
+  /**
+   * Sets the given attribute of this node to the given value.
+   * @param attKind the kind of the atribute
+   * @param value the value to set the attribute to
+   */
+  template <class AttrKind>
+  inline void setAttribute(const AttrKind& attKind,
+                           const typename AttrKind::value_type& value);
+
+  /** Iterator allowing for scanning through the children. */
+  typedef typename expr::NodeValue::iterator< NodeTemplate<ref_count> > iterator;
+  /** Constant iterator allowing for scanning through the children. */
+  typedef typename expr::NodeValue::iterator< NodeTemplate<ref_count> > const_iterator;
+
+  class kinded_iterator {
+    friend class NodeTemplate<ref_count>;
+
+    NodeTemplate<ref_count> d_node;
+    ssize_t d_child;
+
+    kinded_iterator(TNode node, ssize_t child) :
+      d_node(node),
+      d_child(child) {
+    }
+
+    // These are factories to serve as clients to Node::begin<K>() and
+    // Node::end<K>().
+    static kinded_iterator begin(TNode n, Kind k) {
+      return kinded_iterator(n, n.getKind() == k ? 0 : -2);
+    }
+    static kinded_iterator end(TNode n, Kind k) {
+      return kinded_iterator(n, n.getKind() == k ? n.getNumChildren() : -1);
+    }
+
+  public:
+    typedef NodeTemplate<ref_count> value_type;
+    typedef std::ptrdiff_t difference_type;
+    typedef NodeTemplate<ref_count>* pointer;
+    typedef NodeTemplate<ref_count>& reference;
+
+    kinded_iterator() :
+      d_node(NodeTemplate<ref_count>::null()),
+      d_child(-2) {
+    }
+
+    kinded_iterator(const kinded_iterator& i) :
+      d_node(i.d_node),
+      d_child(i.d_child) {
+    }
+
+    NodeTemplate<ref_count> operator*() {
+      return d_child < 0 ? d_node : d_node[d_child];
+    }
+
+    bool operator==(const kinded_iterator& i) {
+      return d_node == i.d_node && d_child == i.d_child;
+    }
+
+    bool operator!=(const kinded_iterator& i) {
+      return !(*this == i);
+    }
+
+    kinded_iterator& operator++() {
+      if(d_child != -1) {
+        ++d_child;
+      }
+      return *this;
+    }
+
+    kinded_iterator operator++(int) {
+      kinded_iterator i = *this;
+      ++*this;
+      return i;
+    }
+  };/* class NodeTemplate<ref_count>::kinded_iterator */
+
+  typedef kinded_iterator const_kinded_iterator;
+
+  /**
+   * Returns the iterator pointing to the first child.
+   * @return the iterator
+   */
+  inline iterator begin() {
+    assertTNodeNotExpired();
+    return d_nv->begin< NodeTemplate<ref_count> >();
+  }
+
+  /**
+   * Returns the iterator pointing to the end of the children (one beyond the
+   * last one).
+   * @return the end of the children iterator.
+   */
+  inline iterator end() {
+    assertTNodeNotExpired();
+    return d_nv->end< NodeTemplate<ref_count> >();
+  }
+
+  /**
+   * Returns the iterator pointing to the first child, if the node's
+   * kind is the same as the parameter, otherwise returns the iterator
+   * pointing to the node itself.  This is useful if you want to
+   * pretend to iterate over a "unary" PLUS, for instance, since unary
+   * PLUSes don't exist---begin(PLUS) will give an iterator over the
+   * children if the node's a PLUS node, otherwise give an iterator
+   * over the node itself, as if it were a unary PLUS.
+   * @param kind the kind to match
+   * @return the kinded_iterator iterating over this Node (if its kind
+   * is not the passed kind) or its children
+   */
+  inline kinded_iterator begin(Kind kind) {
+    assertTNodeNotExpired();
+    return kinded_iterator::begin(*this, kind);
+  }
+
+  /**
+   * Returns the iterator pointing to the end of the children (one
+   * beyond the last one), if the node's kind is the same as the
+   * parameter, otherwise returns the iterator pointing to the
+   * one-of-the-node-itself.  This is useful if you want to pretend to
+   * iterate over a "unary" PLUS, for instance, since unary PLUSes
+   * don't exist---begin(PLUS) will give an iterator over the children
+   * if the node's a PLUS node, otherwise give an iterator over the
+   * node itself, as if it were a unary PLUS.
+   * @param kind the kind to match
+   * @return the kinded_iterator pointing off-the-end of this Node (if
+   * its kind is not the passed kind) or off-the-end of its children
+   */
+  inline kinded_iterator end(Kind kind) {
+    assertTNodeNotExpired();
+    return kinded_iterator::end(*this, kind);
+  }
+
+  /**
+   * Returns the const_iterator pointing to the first child.
+   * @return the const_iterator
+   */
+  inline const_iterator begin() const {
+    assertTNodeNotExpired();
+    return d_nv->begin< NodeTemplate<ref_count> >();
+  }
+
+  /**
+   * Returns the const_iterator pointing to the end of the children (one
+   * beyond the last one.
+   * @return the end of the children const_iterator.
+   */
+  inline const_iterator end() const {
+    assertTNodeNotExpired();
+    return d_nv->end< NodeTemplate<ref_count> >();
+  }
+
+  /**
+   * Returns the iterator pointing to the first child, if the node's
+   * kind is the same as the parameter, otherwise returns the iterator
+   * pointing to the node itself.  This is useful if you want to
+   * pretend to iterate over a "unary" PLUS, for instance, since unary
+   * PLUSes don't exist---begin(PLUS) will give an iterator over the
+   * children if the node's a PLUS node, otherwise give an iterator
+   * over the node itself, as if it were a unary PLUS.
+   * @param kind the kind to match
+   * @return the kinded_iterator iterating over this Node (if its kind
+   * is not the passed kind) or its children
+   */
+  inline const_kinded_iterator begin(Kind kind) const {
+    assertTNodeNotExpired();
+    return const_kinded_iterator::begin(*this, kind);
+  }
+
+  /**
+   * Returns the iterator pointing to the end of the children (one
+   * beyond the last one), if the node's kind is the same as the
+   * parameter, otherwise returns the iterator pointing to the
+   * one-of-the-node-itself.  This is useful if you want to pretend to
+   * iterate over a "unary" PLUS, for instance, since unary PLUSes
+   * don't exist---begin(PLUS) will give an iterator over the children
+   * if the node's a PLUS node, otherwise give an iterator over the
+   * node itself, as if it were a unary PLUS.
+   * @param kind the kind to match
+   * @return the kinded_iterator pointing off-the-end of this Node (if
+   * its kind is not the passed kind) or off-the-end of its children
+   */
+  inline const_kinded_iterator end(Kind kind) const {
+    assertTNodeNotExpired();
+    return const_kinded_iterator::end(*this, kind);
+  }
+
+  /**
+   * Converts this node into a string representation.
+   * @return the string representation of this node.
+   */
+  inline std::string toString() const {
+    assertTNodeNotExpired();
+    return d_nv->toString();
+  }
+
+  /**
+   * Converts this node into a string representation and sends it to the
+   * given stream
+   *
+   * @param out the stream to serialize this node to
+   * @param toDepth the depth to which to print this expression, or -1 to
+   * print it fully
+   * @param types set to true to ascribe types to the output expressions
+   * (might break language compliance, but good for debugging expressions)
+   * @param language the language in which to output
+   */
+  inline void toStream(std::ostream& out, int toDepth = -1, bool types = false, size_t dag = 1,
+                       OutputLanguage language = language::output::LANG_AUTO) const {
+    assertTNodeNotExpired();
+    d_nv->toStream(out, toDepth, types, dag, language);
+  }
+
+  /**
+   * IOStream manipulator to set the maximum depth of Nodes when
+   * pretty-printing.  -1 means print to any depth.  E.g.:
+   *
+   *   // let a, b, c, and d be VARIABLEs
+   *   Node n = nm->mkNode(OR, a, b, nm->mkNode(AND, c, nm->mkNode(NOT, d)))
+   *   out << setdepth(3) << n;
+   *
+   * gives "(OR a b (AND c (NOT d)))", but
+   *
+   *   out << setdepth(1) << [same node as above]
+   *
+   * gives "(OR a b (...))"
+   */
+  typedef expr::ExprSetDepth setdepth;
+
+  /**
+   * IOStream manipulator to print type ascriptions or not.
+   *
+   *   // let a, b, c, and d be variables of sort U
+   *   Node n = nm->mkNode(OR, a, b, nm->mkNode(AND, c, nm->mkNode(NOT, d)))
+   *   out << n;
+   *
+   * gives "(OR a:U b:U (AND c:U (NOT d:U)))", but
+   */
+  typedef expr::ExprPrintTypes printtypes;
+
+  /**
+   * IOStream manipulator to print expressions as DAGs (or not).
+   */
+  typedef expr::ExprDag dag;
+
+  /**
+   * IOStream manipulator to set the output language for Exprs.
+   */
+  typedef language::SetLanguage setlanguage;
+
+  /**
+   * Very basic pretty printer for Node.
+   * @param out output stream to print to.
+   * @param indent number of spaces to indent the formula by.
+   */
+  inline void printAst(std::ostream& out, int indent = 0) const;
+
+  /**
+   * Check if the node has a subterm t.
+   */
+  inline bool hasSubterm(NodeTemplate<false> t, bool strict = false) const;
+
+  template <bool ref_count2>
+  NodeTemplate<true> eqNode(const NodeTemplate<ref_count2>& right) const;
+
+  NodeTemplate<true> notNode() const;
+  NodeTemplate<true> negate() const;
+  template <bool ref_count2>
+  NodeTemplate<true> andNode(const NodeTemplate<ref_count2>& right) const;
+  template <bool ref_count2>
+  NodeTemplate<true> orNode(const NodeTemplate<ref_count2>& right) const;
+  template <bool ref_count2, bool ref_count3>
+  NodeTemplate<true> iteNode(const NodeTemplate<ref_count2>& thenpart,
+                             const NodeTemplate<ref_count3>& elsepart) const;
+  template <bool ref_count2>
+  NodeTemplate<true> impNode(const NodeTemplate<ref_count2>& right) const;
+  template <bool ref_count2>
+  NodeTemplate<true> xorNode(const NodeTemplate<ref_count2>& right) const;
+
+};/* class NodeTemplate<ref_count> */
+
+/**
+ * Serializes a given node to the given stream.
+ *
+ * @param out the output stream to use
+ * @param n the node to output to the stream
+ * @return the stream
+ */
+inline std::ostream& operator<<(std::ostream& out, TNode n) {
+  n.toStream(out,
+             Node::setdepth::getDepth(out),
+             Node::printtypes::getPrintTypes(out),
+             Node::dag::getDag(out),
+             Node::setlanguage::getLanguage(out));
+  return out;
+}
+
+/**
+ * Serializes a vector of node to the given stream.
+ *
+ * @param out the output stream to use
+ * @param ns the vector of nodes to output to the stream
+ * @return the stream
+ */
+template<bool ref_count>
+inline std::ostream& operator<<(std::ostream& out,
+                                const std::vector< NodeTemplate<ref_count> > & ns) {
+  for(typename std::vector< NodeTemplate<ref_count> >::const_iterator
+        i=ns.begin(), end=ns.end();
+      i != end; ++i){
+    out << *i;
+  }
+  return out;
+}
+
+
+}/* CVC4 namespace */
+
+#include <ext/hash_map>
+
+//#include "expr/attribute.h"
+#include "expr/node_manager.h"
+#include "expr/type_checker.h"
+
+namespace CVC4 {
+
+inline size_t NodeHashFunction::operator()(Node node) const {
+  return node.getId();
+}
+inline size_t TNodeHashFunction::operator()(TNode node) const {
+  return node.getId();
+}
+
+struct TNodePairHashFunction {
+  size_t operator()(const std::pair<CVC4::TNode, CVC4::TNode>& pair ) const {
+    TNode n1 = pair.first;
+    TNode n2 = pair.second;
+
+    return (size_t) (n1.getId() * 0x9e3779b9 + n2.getId());
+  }
+};/* struct TNodePairHashFunction */
+
+template <bool ref_count>
+inline size_t NodeTemplate<ref_count>::getNumChildren() const {
+  assertTNodeNotExpired();
+  return d_nv->getNumChildren();
+}
+
+template <bool ref_count>
+template <class T>
+inline const T& NodeTemplate<ref_count>::getConst() const {
+  assertTNodeNotExpired();
+  return d_nv->getConst<T>();
+}
+
+template <bool ref_count>
+template <class AttrKind>
+inline typename AttrKind::value_type NodeTemplate<ref_count>::
+getAttribute(const AttrKind&) const {
+  Assert( NodeManager::currentNM() != NULL,
+          "There is no current CVC4::NodeManager associated to this thread.\n"
+          "Perhaps a public-facing function is missing a NodeManagerScope ?" );
+
+  assertTNodeNotExpired();
+
+  return NodeManager::currentNM()->getAttribute(*this, AttrKind());
+}
+
+template <bool ref_count>
+template <class AttrKind>
+inline bool NodeTemplate<ref_count>::
+hasAttribute(const AttrKind&) const {
+  Assert( NodeManager::currentNM() != NULL,
+          "There is no current CVC4::NodeManager associated to this thread.\n"
+          "Perhaps a public-facing function is missing a NodeManagerScope ?" );
+
+  assertTNodeNotExpired();
+
+  return NodeManager::currentNM()->hasAttribute(*this, AttrKind());
+}
+
+template <bool ref_count>
+template <class AttrKind>
+inline bool NodeTemplate<ref_count>::getAttribute(const AttrKind&,
+                                                  typename AttrKind::value_type& ret) const {
+  Assert( NodeManager::currentNM() != NULL,
+          "There is no current CVC4::NodeManager associated to this thread.\n"
+          "Perhaps a public-facing function is missing a NodeManagerScope ?" );
+
+  assertTNodeNotExpired();
+
+  return NodeManager::currentNM()->getAttribute(*this, AttrKind(), ret);
+}
+
+template <bool ref_count>
+template <class AttrKind>
+inline void NodeTemplate<ref_count>::
+setAttribute(const AttrKind&, const typename AttrKind::value_type& value) {
+  Assert( NodeManager::currentNM() != NULL,
+          "There is no current CVC4::NodeManager associated to this thread.\n"
+          "Perhaps a public-facing function is missing a NodeManagerScope ?" );
+
+  assertTNodeNotExpired();
+
+  NodeManager::currentNM()->setAttribute(*this, AttrKind(), value);
+}
+
+template <bool ref_count>
+NodeTemplate<ref_count> NodeTemplate<ref_count>::s_null(&expr::NodeValue::null());
+
+// FIXME: escape from type system convenient but is there a better
+// way?  Nodes conceptually don't change their expr values but of
+// course they do modify the refcount.  But it's nice to be able to
+// support node_iterators over const NodeValue*.  So.... hm.
+template <bool ref_count>
+NodeTemplate<ref_count>::NodeTemplate(const expr::NodeValue* ev) :
+  d_nv(const_cast<expr::NodeValue*> (ev)) {
+  Assert(d_nv != NULL, "Expecting a non-NULL expression value!");
+  if(ref_count) {
+    d_nv->inc();
+  } else {
+    Assert(d_nv->d_rc > 0 || d_nv == &expr::NodeValue::null(),
+           "TNode constructed from NodeValue with rc == 0");
+  }
+}
+
+// the code for these two following constructors ("conversion/copy
+// constructors") is identical, but we need both.  see comment in the
+// class.
+
+template <bool ref_count>
+NodeTemplate<ref_count>::NodeTemplate(const NodeTemplate<!ref_count>& e) {
+  Assert(e.d_nv != NULL, "Expecting a non-NULL expression value!");
+  d_nv = e.d_nv;
+  if(ref_count) {
+    Assert(d_nv->d_rc > 0, "Node constructed from TNode with rc == 0");
+    d_nv->inc();
+  } else {
+    // shouldn't ever fail
+    Assert(d_nv->d_rc > 0, "TNode constructed from Node with rc == 0");
+  }
+}
+
+template <bool ref_count>
+NodeTemplate<ref_count>::NodeTemplate(const NodeTemplate& e) {
+  Assert(e.d_nv != NULL, "Expecting a non-NULL expression value!");
+  d_nv = e.d_nv;
+  if(ref_count) {
+    // shouldn't ever fail
+    Assert(d_nv->d_rc > 0, "Node constructed from Node with rc == 0");
+    d_nv->inc();
+  } else {
+    Assert(d_nv->d_rc > 0, "TNode constructed from TNode with rc == 0");
+  }
+}
+
+template <bool ref_count>
+NodeTemplate<ref_count>::NodeTemplate(const Expr& e) {
+  Assert(e.d_node != NULL, "Expecting a non-NULL expression value!");
+  Assert(e.d_node->d_nv != NULL, "Expecting a non-NULL expression value!");
+  d_nv = e.d_node->d_nv;
+  // shouldn't ever fail
+  Assert(d_nv->d_rc > 0, "Node constructed from Expr with rc == 0");
+  if(ref_count) {
+    d_nv->inc();
+  }
+}
+
+template <bool ref_count>
+NodeTemplate<ref_count>::~NodeTemplate() {
+  Assert(d_nv != NULL, "Expecting a non-NULL expression value!");
+  if(ref_count) {
+    // shouldn't ever fail
+    Assert(d_nv->d_rc > 0, "Node reference count would be negative");
+    d_nv->dec();
+  }
+}
+
+template <bool ref_count>
+void NodeTemplate<ref_count>::assignNodeValue(expr::NodeValue* ev) {
+  d_nv = ev;
+  if(ref_count) {
+    d_nv->inc();
+  } else {
+    Assert(d_nv->d_rc > 0, "TNode assigned to NodeValue with rc == 0");
+  }
+}
+
+template <bool ref_count>
+NodeTemplate<ref_count>& NodeTemplate<ref_count>::
+operator=(const NodeTemplate& e) {
+  Assert(d_nv != NULL, "Expecting a non-NULL expression value!");
+  Assert(e.d_nv != NULL, "Expecting a non-NULL expression value on RHS!");
+  if(__builtin_expect( ( d_nv != e.d_nv ), true )) {
+    if(ref_count) {
+      // shouldn't ever fail
+      Assert(d_nv->d_rc > 0,
+             "Node reference count would be negative");
+      d_nv->dec();
+    }
+    d_nv = e.d_nv;
+    if(ref_count) {
+      // shouldn't ever fail
+      Assert(d_nv->d_rc > 0, "Node assigned from Node with rc == 0");
+      d_nv->inc();
+    } else {
+      Assert(d_nv->d_rc > 0, "TNode assigned from TNode with rc == 0");
+    }
+  }
+  return *this;
+}
+
+template <bool ref_count>
+NodeTemplate<ref_count>& NodeTemplate<ref_count>::
+operator=(const NodeTemplate<!ref_count>& e) {
+  Assert(d_nv != NULL, "Expecting a non-NULL expression value!");
+  Assert(e.d_nv != NULL, "Expecting a non-NULL expression value on RHS!");
+  if(__builtin_expect( ( d_nv != e.d_nv ), true )) {
+    if(ref_count) {
+      // shouldn't ever fail
+      Assert(d_nv->d_rc > 0, "Node reference count would be negative");
+      d_nv->dec();
+    }
+    d_nv = e.d_nv;
+    if(ref_count) {
+      Assert(d_nv->d_rc > 0, "Node assigned from TNode with rc == 0");
+      d_nv->inc();
+    } else {
+      // shouldn't ever happen
+      Assert(d_nv->d_rc > 0, "TNode assigned from Node with rc == 0");
+    }
+  }
+  return *this;
+}
+
+template <bool ref_count>
+template <bool ref_count2>
+NodeTemplate<true>
+NodeTemplate<ref_count>::eqNode(const NodeTemplate<ref_count2>& right) const {
+  assertTNodeNotExpired();
+  return NodeManager::currentNM()->mkNode(kind::EQUAL, *this, right);
+}
+
+template <bool ref_count>
+NodeTemplate<true> NodeTemplate<ref_count>::notNode() const {
+  assertTNodeNotExpired();
+  return NodeManager::currentNM()->mkNode(kind::NOT, *this);
+}
+
+template <bool ref_count>
+NodeTemplate<true> NodeTemplate<ref_count>::negate() const {
+  assertTNodeNotExpired();
+  return (getKind() == kind::NOT) ? NodeTemplate<true>(d_nv->getChild(0)) : NodeManager::currentNM()->mkNode(kind::NOT, *this);
+}
+
+template <bool ref_count>
+template <bool ref_count2>
+NodeTemplate<true>
+NodeTemplate<ref_count>::andNode(const NodeTemplate<ref_count2>& right) const {
+  assertTNodeNotExpired();
+  return NodeManager::currentNM()->mkNode(kind::AND, *this, right);
+}
+
+template <bool ref_count>
+template <bool ref_count2>
+NodeTemplate<true>
+NodeTemplate<ref_count>::orNode(const NodeTemplate<ref_count2>& right) const {
+  assertTNodeNotExpired();
+  return NodeManager::currentNM()->mkNode(kind::OR, *this, right);
+}
+
+template <bool ref_count>
+template <bool ref_count2, bool ref_count3>
+NodeTemplate<true>
+NodeTemplate<ref_count>::iteNode(const NodeTemplate<ref_count2>& thenpart,
+                                 const NodeTemplate<ref_count3>& elsepart) const {
+  assertTNodeNotExpired();
+  return NodeManager::currentNM()->mkNode(kind::ITE, *this, thenpart, elsepart);
+}
+
+template <bool ref_count>
+template <bool ref_count2>
+NodeTemplate<true>
+NodeTemplate<ref_count>::impNode(const NodeTemplate<ref_count2>& right) const {
+  assertTNodeNotExpired();
+  return NodeManager::currentNM()->mkNode(kind::IMPLIES, *this, right);
+}
+
+template <bool ref_count>
+template <bool ref_count2>
+NodeTemplate<true>
+NodeTemplate<ref_count>::xorNode(const NodeTemplate<ref_count2>& right) const {
+  assertTNodeNotExpired();
+  return NodeManager::currentNM()->mkNode(kind::XOR, *this, right);
+}
+
+template <bool ref_count>
+inline void
+NodeTemplate<ref_count>::printAst(std::ostream& out, int indent) const {
+  assertTNodeNotExpired();
+  d_nv->printAst(out, indent);
+}
+
+/**
+ * Returns a node representing the operator of this expression.
+ * If this is an APPLY, then the operator will be a functional term.
+ * Otherwise, it will be a node with kind BUILTIN.
+ */
+template <bool ref_count>
+NodeTemplate<true> NodeTemplate<ref_count>::getOperator() const {
+  Assert( NodeManager::currentNM() != NULL,
+          "There is no current CVC4::NodeManager associated to this thread.\n"
+          "Perhaps a public-facing function is missing a NodeManagerScope ?" );
+
+  assertTNodeNotExpired();
+
+  switch(kind::MetaKind mk = getMetaKind()) {
+  case kind::metakind::INVALID:
+    IllegalArgument(*this, "getOperator() called on Node with INVALID-kinded kind");
+
+  case kind::metakind::VARIABLE:
+    IllegalArgument(*this, "getOperator() called on Node with VARIABLE-kinded kind");
+
+  case kind::metakind::OPERATOR: {
+    /* Returns a BUILTIN node. */
+    return NodeManager::currentNM()->operatorOf(getKind());
+  }
+
+  case kind::metakind::PARAMETERIZED:
+    /* The operator is the first child. */
+    return Node(d_nv->d_children[0]);
+
+  case kind::metakind::CONSTANT:
+    IllegalArgument(*this, "getOperator() called on Node with CONSTANT-kinded kind");
+
+  default:
+    Unhandled(mk);
+  }
+}
+
+/**
+ * Returns true if the node has an operator (i.e., it's not a variable
+ * or a constant).
+ */
+template <bool ref_count>
+inline bool NodeTemplate<ref_count>::hasOperator() const {
+  assertTNodeNotExpired();
+  return NodeManager::hasOperator(getKind());
+}
+
+template <bool ref_count>
+TypeNode NodeTemplate<ref_count>::getType(bool check) const
+  throw (CVC4::TypeCheckingExceptionPrivate, CVC4::AssertionException) {
+  Assert( NodeManager::currentNM() != NULL,
+          "There is no current CVC4::NodeManager associated to this thread.\n"
+          "Perhaps a public-facing function is missing a NodeManagerScope ?" );
+
+  assertTNodeNotExpired();
+
+  return NodeManager::currentNM()->getType(*this, check);
+}
+
+template <bool ref_count>
+inline Node
+NodeTemplate<ref_count>::substitute(TNode node, TNode replacement) const {
+  if (node == *this) {
+    return replacement;
+  }
+  std::hash_map<TNode, TNode, TNodeHashFunction> cache;
+  return substitute(node, replacement, cache);
+}
+
+template <bool ref_count>
+Node
+NodeTemplate<ref_count>::substitute(TNode node, TNode replacement,
+                                    std::hash_map<TNode, TNode, TNodeHashFunction>& cache) const {
+  Assert(node != *this);
+
+  if (getNumChildren() == 0) {
+    return *this;
+  }
+
+  // in cache?
+  typename std::hash_map<TNode, TNode, TNodeHashFunction>::const_iterator i = cache.find(*this);
+  if(i != cache.end()) {
+    return (*i).second;
+  }
+
+  // otherwise compute
+  NodeBuilder<> nb(getKind());
+  if(getMetaKind() == kind::metakind::PARAMETERIZED) {
+    // push the operator
+    if(getOperator() == node) {
+      nb << replacement;
+    } else {
+      nb << getOperator().substitute(node, replacement, cache);
+    }
+  }
+  for(const_iterator i = begin(),
+        iend = end();
+      i != iend;
+      ++i) {
+    if(*i == node) {
+      nb << replacement;
+    } else {
+      nb << (*i).substitute(node, replacement, cache);
+    }
+  }
+
+  // put in cache
+  Node n = nb;
+  Assert(node != n);
+  cache[*this] = n;
+  return n;
+}
+
+template <bool ref_count>
+template <class Iterator1, class Iterator2>
+inline Node
+NodeTemplate<ref_count>::substitute(Iterator1 nodesBegin,
+                                    Iterator1 nodesEnd,
+                                    Iterator2 replacementsBegin,
+                                    Iterator2 replacementsEnd) const {
+  std::hash_map<TNode, TNode, TNodeHashFunction> cache;
+  return substitute(nodesBegin, nodesEnd,
+                    replacementsBegin, replacementsEnd, cache);
+}
+
+template <bool ref_count>
+template <class Iterator1, class Iterator2>
+Node
+NodeTemplate<ref_count>::substitute(Iterator1 nodesBegin,
+                                    Iterator1 nodesEnd,
+                                    Iterator2 replacementsBegin,
+                                    Iterator2 replacementsEnd,
+                                    std::hash_map<TNode, TNode, TNodeHashFunction>& cache) const {
+  // in cache?
+  typename std::hash_map<TNode, TNode, TNodeHashFunction>::const_iterator i = cache.find(*this);
+  if(i != cache.end()) {
+    return (*i).second;
+  }
+
+  // otherwise compute
+  Assert( std::distance(nodesBegin, nodesEnd) == std::distance(replacementsBegin, replacementsEnd),
+          "Substitution iterator ranges must be equal size" );
+  Iterator1 j = find(nodesBegin, nodesEnd, TNode(*this));
+  if(j != nodesEnd) {
+    Iterator2 b = replacementsBegin;
+    std::advance(b, std::distance(nodesBegin, j));
+    Node n = *b;
+    cache[*this] = n;
+    return n;
+  } else if(getNumChildren() == 0) {
+    cache[*this] = *this;
+    return *this;
+  } else {
+    NodeBuilder<> nb(getKind());
+    if(getMetaKind() == kind::metakind::PARAMETERIZED) {
+      // push the operator
+      nb << getOperator().substitute(nodesBegin, nodesEnd,
+                                     replacementsBegin, replacementsEnd,
+                                     cache);
+    }
+    for(const_iterator i = begin(),
+          iend = end();
+        i != iend;
+        ++i) {
+      nb << (*i).substitute(nodesBegin, nodesEnd,
+                            replacementsBegin, replacementsEnd,
+                            cache);
+    }
+    Node n = nb;
+    cache[*this] = n;
+    return n;
+  }
+}
+
+template <bool ref_count>
+template <class Iterator>
+inline Node
+NodeTemplate<ref_count>::substitute(Iterator substitutionsBegin,
+                                    Iterator substitutionsEnd) const {
+  std::hash_map<TNode, TNode, TNodeHashFunction> cache;
+  return substitute(substitutionsBegin, substitutionsEnd, cache);
+}
+
+template <bool ref_count>
+template <class Iterator>
+Node
+NodeTemplate<ref_count>::substitute(Iterator substitutionsBegin,
+                                    Iterator substitutionsEnd,
+                                    std::hash_map<TNode, TNode, TNodeHashFunction>& cache) const {
+  // in cache?
+  typename std::hash_map<TNode, TNode, TNodeHashFunction>::const_iterator i = cache.find(*this);
+  if(i != cache.end()) {
+    return (*i).second;
+  }
+
+  // otherwise compute
+  Iterator j = find_if(substitutionsBegin, substitutionsEnd,
+                       bind2nd(first_equal_to<typename Iterator::value_type::first_type, typename Iterator::value_type::second_type>(), *this));
+  if(j != substitutionsEnd) {
+    Node n = (*j).second;
+    cache[*this] = n;
+    return n;
+  } else if(getNumChildren() == 0) {
+    cache[*this] = *this;
+    return *this;
+  } else {
+    NodeBuilder<> nb(getKind());
+    if(getMetaKind() == kind::metakind::PARAMETERIZED) {
+      // push the operator
+      nb << getOperator().substitute(substitutionsBegin, substitutionsEnd, cache);
+    }
+    for(const_iterator i = begin(),
+          iend = end();
+        i != iend;
+        ++i) {
+      nb << (*i).substitute(substitutionsBegin, substitutionsEnd, cache);
+    }
+    Node n = nb;
+    cache[*this] = n;
+    return n;
+  }
+}
+
+template <bool ref_count>
+inline Expr NodeTemplate<ref_count>::toExpr() const {
+  assertTNodeNotExpired();
+  return NodeManager::currentNM()->toExpr(*this);
+}
+
+// intentionally not defined for TNode
+template <>
+inline Node NodeTemplate<true>::fromExpr(const Expr& e) {
+  return NodeManager::fromExpr(e);
+}
+
+template<bool ref_count>
+bool NodeTemplate<ref_count>::hasSubterm(NodeTemplate<false> t, bool strict) const {
+  typedef std::hash_set<TNode, TNodeHashFunction> node_set;
+
+  if (!strict && *this == t) {
+    return true;
+  }
+
+  node_set visited;
+  std::vector<TNode> toProcess;
+
+  toProcess.push_back(*this);
+
+  for (unsigned i = 0; i < toProcess.size(); ++ i) {
+    TNode current = toProcess[i];
+    for(unsigned j = 0, j_end = current.getNumChildren(); j < j_end; ++ j) {
+      TNode child = current[j];
+      if (child == t) {
+        return true;
+      }
+      if (visited.find(child) != visited.end()) {
+        continue;
+      } else {
+        visited.insert(child);
+        toProcess.push_back(child);
+      }
+    }
+  }
+
+  return false;
+}
+
+#ifdef CVC4_DEBUG
+/**
+ * Pretty printer for use within gdb.  This is not intended to be used
+ * outside of gdb.  This writes to the Warning() stream and immediately
+ * flushes the stream.
+ *
+ * Note that this function cannot be a template, since the compiler
+ * won't instantiate it.  Even if we explicitly instantiate.  (Odd?)
+ * So we implement twice.  We mark as __attribute__((used)) so that
+ * GCC emits code for it even though static analysis indicates it's
+ * never called.
+ *
+ * Tim's Note: I moved this into the node.h file because this allows gdb
+ * to find the symbol, and use it, which is the first standard this code needs
+ * to meet. A cleaner solution is welcomed.
+ */
+static void __attribute__((used)) debugPrintNode(const NodeTemplate<true>& n) {
+  Warning() << Node::setdepth(-1)
+            << Node::printtypes(false)
+            << Node::dag(true)
+            << Node::setlanguage(language::output::LANG_AST)
+            << n << std::endl;
+  Warning().flush();
+}
+static void __attribute__((used)) debugPrintNodeNoDag(const NodeTemplate<true>& n) {
+  Warning() << Node::setdepth(-1)
+            << Node::printtypes(false)
+            << Node::dag(false)
+            << Node::setlanguage(language::output::LANG_AST)
+            << n << std::endl;
+  Warning().flush();
+}
+static void __attribute__((used)) debugPrintRawNode(const NodeTemplate<true>& n) {
+  n.printAst(Warning(), 0);
+  Warning().flush();
+}
+
+static void __attribute__((used)) debugPrintTNode(const NodeTemplate<false>& n) {
+  Warning() << Node::setdepth(-1)
+            << Node::printtypes(false)
+            << Node::dag(true)
+            << Node::setlanguage(language::output::LANG_AST)
+            << n << std::endl;
+  Warning().flush();
+}
+static void __attribute__((used)) debugPrintTNodeNoDag(const NodeTemplate<false>& n) {
+  Warning() << Node::setdepth(-1)
+            << Node::printtypes(false)
+            << Node::dag(false)
+            << Node::setlanguage(language::output::LANG_AST)
+            << n << std::endl;
+  Warning().flush();
+}
+static void __attribute__((used)) debugPrintRawTNode(const NodeTemplate<false>& n) {
+  n.printAst(Warning(), 0);
+  Warning().flush();
+}
+#endif /* CVC4_DEBUG */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__NODE_H */
diff --git a/src/expr/node_builder.h b/src/expr/node_builder.h
new file mode 100644
index 0000000..d92524a
--- /dev/null
+++ b/src/expr/node_builder.h
@@ -0,0 +1,1353 @@
+/*********************                                                        */
+/*! \file node_builder.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Christopher L. Conway
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A builder interface for Nodes.
+ **
+ ** A builder interface for Nodes.
+ **
+ ** The idea is to permit a flexible and efficient (in the common
+ ** case) interface for building Nodes.  The general pattern of use is
+ ** to create a NodeBuilder, set its kind, append children to it, then
+ ** "extract" the resulting Node.  This resulting Node may be one that
+ ** already exists (the NodeManager keeps a table of all Nodes in the
+ ** system), or may be entirely new.
+ **
+ ** This implementation gets a bit hairy for a handful of reasons.  We
+ ** want a user-supplied "in-line" buffer (probably on the stack, see
+ ** below) to hold the children, but then the number of children must
+ ** be known ahead of time.  Therefore, if this buffer is overrun, we
+ ** need to heap-allocate a new buffer to hold the children.
+ **
+ ** Note that as children are added to a NodeBuilder, they are stored
+ ** as raw pointers-to-NodeValue.  However, their reference counts are
+ ** carefully maintained.
+ **
+ ** When the "in-line" buffer "d_inlineNv" is superceded by a
+ ** heap-allocated buffer, we allocate the new buffer (a NodeValue
+ ** large enough to hold more children), copy the elements to it, and
+ ** mark d_inlineNv as having zero children.  We do this last bit so
+ ** that we don't have to modify any child reference counts.  The new
+ ** heap-allocated buffer "takes over" the reference counts of the old
+ ** "in-line" buffer.  (If we didn't mark it as having zero children,
+ ** the destructor may improperly decrement the children's reference
+ ** counts.)
+ **
+ ** There are then four normal cases at the end of a NodeBuilder's
+ ** life cycle:
+ **
+ **   0. We have a VARIABLE-kinded Node.  These are special (they have
+ **      no children and are all distinct by definition).  They are
+ **      really a subcase of 1(b), below.
+ **   1. d_nv points to d_inlineNv: it is the backing store supplied
+ **      by the user (or derived class).
+ **      (a) The Node under construction already exists in the
+ **          NodeManager's pool.
+ **      (b) The Node under construction is NOT already in the
+ **          NodeManager's pool.
+ **   2. d_nv does NOT point to d_inlineNv: it is a new, larger buffer
+ **      that was heap-allocated by this NodeBuilder.
+ **      (a) The Node under construction already exists in the
+ **          NodeManager's pool.
+ **      (b) The Node under construction is NOT already in the
+ **          NodeManager's pool.
+ **
+ ** When a Node is extracted, we convert the NodeBuilder to a Node and
+ ** make sure the reference counts are properly maintained.  That
+ ** means we must ensure there are no reference-counting errors among
+ ** the node's children, that the children aren't re-decremented on
+ ** clear() or NodeBuilder destruction, and that the returned Node
+ ** wraps a NodeValue with a reference count of 1.
+ **
+ **   0.    If a VARIABLE, treat similarly to 1(b), except that we
+ **         know there are no children (no reference counts to reason
+ **         about) and we don't keep VARIABLE-kinded Nodes in the
+ **         NodeManager pool.
+ **
+ **   1(a). Reference-counts for all children in d_inlineNv must be
+ **         decremented, and the NodeBuilder must be marked as "used"
+ **         and the number of children set to zero so that we don't
+ **         decrement them again on destruction.  The existing
+ **         NodeManager pool entry is returned.
+ **
+ **   1(b). A new heap-allocated NodeValue must be constructed and all
+ **         settings and children from d_inlineNv copied into it.
+ **         This new NodeValue is put into the NodeManager's pool.
+ **         The NodeBuilder is marked as "used" and the number of
+ **         children in d_inlineNv set to zero so that we don't
+ **         decrement child reference counts on destruction (the child
+ **         reference counts have been "taken over" by the new
+ **         NodeValue).  We return a Node wrapper for this new
+ **         NodeValue, which increments its reference count.
+ **
+ **   2(a). Reference counts for all children in d_nv must be
+ **         decremented.  The NodeBuilder is marked as "used" and the
+ **         heap-allocated d_nv deleted.  d_nv is repointed to
+ **         d_inlineNv so that destruction of the NodeBuilder doesn't
+ **         cause any problems.  The existing NodeManager pool entry
+ **         is returned.
+ **
+ **   2(b). The heap-allocated d_nv is "cropped" to the correct size
+ **         (based on the number of children it _actually_ has).  d_nv
+ **         is repointed to d_inlineNv so that destruction of the
+ **         NodeBuilder doesn't cause any problems, and the (old)
+ **         value it had is placed into the NodeManager's pool and
+ **         returned in a Node wrapper.
+ **
+ ** NOTE IN 1(b) AND 2(b) THAT we can NOT create Node wrapper
+ ** temporary for the NodeValue in the NodeBuilder<>::operator Node()
+ ** member function.  If we create a temporary (for example by writing
+ ** Debug("builder") << Node(nv) << endl), the NodeValue will have its
+ ** reference count incremented from zero to one, then decremented,
+ ** which makes it eligible for collection before the builder has even
+ ** returned it!  So this is a no-no.
+ **
+ ** There are also two cases when the NodeBuilder is clear()'ed:
+ **
+ **   1. d_nv == &d_inlineNv (NodeBuilder using the user-supplied
+ **      backing store): all d_inlineNv children have their reference
+ **      counts decremented, d_inlineNv.d_nchildren is set to zero,
+ **      and its kind is set to UNDEFINED_KIND.
+ **
+ **   2. d_nv != &d_inlineNv (d_nv heap-allocated by NodeBuilder): all
+ **      d_nv children have their reference counts decremented, d_nv
+ **      is deallocated, and d_nv is set to &d_inlineNv.  d_inlineNv's
+ **      kind is set to UNDEFINED_KIND.
+ **
+ ** ... destruction is similar:
+ **
+ **   1. d_nv == &d_inlineNv (NodeBuilder using the user-supplied
+ **      backing store): all d_inlineNv children have their reference
+ **      counts decremented.
+ **
+ **   2. d_nv != &d_inlineNv (d_nv heap-allocated by NodeBuilder): all
+ **      d_nv children have their reference counts decremented, and
+ **      d_nv is deallocated.
+ **
+ ** Regarding the backing store (typically on the stack): the file
+ ** below provides the template:
+ **
+ **   template < unsigned nchild_thresh > class NodeBuilder;
+ **
+ **     The default:
+ **
+ **       NodeBuilder<> b;
+ **
+ **     gives you a backing buffer with capacity for 10 children in
+ **     the same place as the NodeBuilder<> itself is allocated.  You
+ **     can specify another size as a template parameter, but it must
+ **     be a compile-time constant.
+ **/
+
+#include "cvc4_private.h"
+
+/* strong dependency; make sure node is included first */
+#include "expr/node.h"
+#include "expr/type_node.h"
+
+#ifndef __CVC4__NODE_BUILDER_H
+#define __CVC4__NODE_BUILDER_H
+
+#include <iostream>
+#include <vector>
+#include <cstdlib>
+#include <stdint.h>
+
+namespace CVC4 {
+  static const unsigned default_nchild_thresh = 10;
+
+  template <unsigned nchild_thresh>
+  class NodeBuilder;
+
+  class NodeManager;
+}/* CVC4 namespace */
+
+#include "base/cvc4_assert.h"
+#include "base/output.h"
+#include "base/ptr_closer.h"
+#include "expr/kind.h"
+#include "expr/metakind.h"
+#include "expr/node_value.h"
+
+
+namespace CVC4 {
+
+/* see expr/convenience_node_builders.h */
+class AndNodeBuilder;
+class OrNodeBuilder;
+class PlusNodeBuilder;
+class MultNodeBuilder;
+
+// Sometimes it's useful for debugging to output a NodeBuilder that
+// isn't yet a Node..
+template <unsigned nchild_thresh>
+std::ostream& operator<<(std::ostream& out, const NodeBuilder<nchild_thresh>& nb);
+
+/**
+ * The main template NodeBuilder.
+ */
+template <unsigned nchild_thresh = default_nchild_thresh>
+class NodeBuilder {
+  /**
+   * An "in-line" stack-allocated buffer for use by the
+   * NodeBuilder.
+   */
+  expr::NodeValue d_inlineNv;
+  /**
+   * Space for the children of the node being constructed.  This is
+   * never accessed directly, but rather through
+   * d_inlineNv.d_children[i].
+   */
+  expr::NodeValue* d_inlineNvChildSpace[nchild_thresh];
+
+  /**
+   * A pointer to the "current" NodeValue buffer; either &d_inlineNv
+   * or a heap-allocated one if d_inlineNv wasn't big enough.
+   */
+  expr::NodeValue* d_nv;
+
+  /** The NodeManager at play */
+  NodeManager* d_nm;
+
+  /**
+   * The number of children allocated in d_nv.
+   */
+  uint32_t d_nvMaxChildren;
+
+  template <unsigned N>
+  void internalCopy(const NodeBuilder<N>& nb);
+
+  /**
+   * Returns whether or not this NodeBuilder has been "used"---i.e.,
+   * whether a Node has been extracted with operator Node().
+   * Internally, this state is represented by d_nv pointing to NULL.
+   */
+  inline bool isUsed() const {
+    return __builtin_expect( ( d_nv == NULL ), false );
+  }
+
+  /**
+   * Set this NodeBuilder to the `used' state.
+   */
+  inline void setUsed() {
+    Assert(!isUsed(), "Internal error: bad `used' state in NodeBuilder!");
+    Assert(d_inlineNv.d_nchildren == 0 &&
+           d_nvMaxChildren == nchild_thresh,
+           "Internal error: bad `inline' state in NodeBuilder!");
+    d_nv = NULL;
+  }
+
+  /**
+   * Set this NodeBuilder to the `unused' state.  Should only be done
+   * from clear().
+   */
+  inline void setUnused() {
+    Assert(isUsed(), "Internal error: bad `used' state in NodeBuilder!");
+    Assert(d_inlineNv.d_nchildren == 0 &&
+           d_nvMaxChildren == nchild_thresh,
+           "Internal error: bad `inline' state in NodeBuilder!");
+    d_nv = &d_inlineNv;
+  }
+
+  /**
+   * Returns true if d_nv is *not* the "in-line" one (it was
+   * heap-allocated by this class).
+   */
+  inline bool nvIsAllocated() const {
+    return __builtin_expect( ( d_nv != &d_inlineNv ), false ) && __builtin_expect(( d_nv != NULL ), true );
+  }
+
+  /**
+   * Returns true if adding a child requires (re)allocation of d_nv
+   * first.
+   */
+  inline bool nvNeedsToBeAllocated() const {
+    return __builtin_expect( ( d_nv->d_nchildren == d_nvMaxChildren ), false );
+  }
+
+  /**
+   * (Re)allocate d_nv using a default grow factor.  Ensure that child
+   * pointers are copied into the new buffer, and if the "inline"
+   * NodeValue is evacuated, make sure its children won't be
+   * double-decremented later (on destruction/clear).
+   */
+  inline void realloc() {
+    size_t newSize = 2 * size_t(d_nvMaxChildren);
+    size_t hardLimit = (1lu << __CVC4__EXPR__NODE_VALUE__NBITS__NCHILDREN) - 1;
+    realloc(__builtin_expect( ( newSize > hardLimit ), false ) ? hardLimit : newSize);
+  }
+
+  /**
+   * (Re)allocate d_nv to a specific size.  Specify "copy" if the
+   * children should be copied; if they are, and if the "inline"
+   * NodeValue is evacuated, make sure its children won't be
+   * double-decremented later (on destruction/clear).
+   */
+  void realloc(size_t toSize);
+
+  /**
+   * If d_nv needs to be (re)allocated to add an additional child, do
+   * so using realloc(), which ensures child pointers are copied and
+   * that the reference counts of the "inline" NodeValue won't be
+   * double-decremented on destruction/clear.  Otherwise, do nothing.
+   */
+  inline void allocateNvIfNecessaryForAppend() {
+    if(__builtin_expect( ( nvNeedsToBeAllocated() ), false )) {
+      realloc();
+    }
+  }
+
+  /**
+   * Deallocate a d_nv that was heap-allocated by this class during
+   * grow operations.  (Marks this NodeValue no longer allocated so
+   * that double-deallocations don't occur.)
+   *
+   * PRECONDITION: only call this when nvIsAllocated() == true.
+   * POSTCONDITION: !nvIsAllocated()
+   */
+  void dealloc();
+
+  /**
+   * "Purge" the "inline" children.  Decrement all their reference
+   * counts and set the number of children to zero.
+   *
+   * PRECONDITION: only call this when nvIsAllocated() == false.
+   * POSTCONDITION: d_inlineNv.d_nchildren == 0.
+   */
+  void decrRefCounts();
+
+  /**
+   * Trim d_nv down to the size it needs to be for the number of
+   * children it has.  Used when a Node is extracted from a
+   * NodeBuilder and we want the returned memory not to suffer from
+   * internal fragmentation.  If d_nv was not heap-allocated by this
+   * class, or is already the right size, this function does nothing.
+   *
+   * @throws bad_alloc if the reallocation fails
+   */
+  void crop() {
+    if(__builtin_expect( ( nvIsAllocated() ), false ) &&
+       __builtin_expect( ( d_nvMaxChildren > d_nv->d_nchildren ), true )) {
+      // Ensure d_nv is not modified on allocation failure
+      expr::NodeValue* newBlock = (expr::NodeValue*)
+        std::realloc(d_nv,
+                     sizeof(expr::NodeValue) +
+                     ( sizeof(expr::NodeValue*) * d_nv->d_nchildren ));
+      if(newBlock == NULL) {
+        // In this case, d_nv was NOT freed.  If we throw, the
+        // deallocation should occur on destruction of the
+        // NodeBuilder.
+        throw std::bad_alloc();
+      }
+      d_nv = newBlock;
+      d_nvMaxChildren = d_nv->d_nchildren;
+    }
+  }
+
+  // used by convenience node builders
+  NodeBuilder<nchild_thresh>& collapseTo(Kind k) {
+    AssertArgument(k != kind::UNDEFINED_KIND &&
+                   k != kind::NULL_EXPR &&
+                   k < kind::LAST_KIND,
+                   k, "illegal collapsing kind");
+
+    if(getKind() != k) {
+      Node n = operator Node();
+      clear();
+      d_nv->d_kind = expr::NodeValue::kindToDKind(k);
+      d_nv->d_id = 1; // have a kind already
+      return append(n);
+    }
+    return *this;
+  }
+
+public:
+
+  inline NodeBuilder() :
+    d_nv(&d_inlineNv),
+    d_nm(NodeManager::currentNM()),
+    d_nvMaxChildren(nchild_thresh) {
+
+    d_inlineNv.d_id = 0;
+    d_inlineNv.d_rc = 0;
+    d_inlineNv.d_kind = expr::NodeValue::kindToDKind(kind::UNDEFINED_KIND);
+    d_inlineNv.d_nchildren = 0;
+  }
+
+  inline NodeBuilder(Kind k) :
+    d_nv(&d_inlineNv),
+    d_nm(NodeManager::currentNM()),
+    d_nvMaxChildren(nchild_thresh) {
+
+    Assert(k != kind::NULL_EXPR && k != kind::UNDEFINED_KIND,
+           "illegal Node-building kind");
+
+    d_inlineNv.d_id = 1; // have a kind already
+    d_inlineNv.d_rc = 0;
+    d_inlineNv.d_kind = expr::NodeValue::kindToDKind(k);
+    d_inlineNv.d_nchildren = 0;
+  }
+
+  inline NodeBuilder(NodeManager* nm) :
+    d_nv(&d_inlineNv),
+    d_nm(nm),
+    d_nvMaxChildren(nchild_thresh) {
+
+    d_inlineNv.d_id = 0;
+    d_inlineNv.d_rc = 0;
+    d_inlineNv.d_kind = expr::NodeValue::kindToDKind(kind::UNDEFINED_KIND);
+    d_inlineNv.d_nchildren = 0;
+  }
+
+  inline NodeBuilder(NodeManager* nm, Kind k) :
+    d_nv(&d_inlineNv),
+    d_nm(nm),
+    d_nvMaxChildren(nchild_thresh) {
+
+    Assert(k != kind::NULL_EXPR && k != kind::UNDEFINED_KIND,
+           "illegal Node-building kind");
+
+    d_inlineNv.d_id = 1; // have a kind already
+    d_inlineNv.d_rc = 0;
+    d_inlineNv.d_kind = expr::NodeValue::kindToDKind(k);
+    d_inlineNv.d_nchildren = 0;
+  }
+
+  inline ~NodeBuilder() {
+    if(__builtin_expect( ( nvIsAllocated() ), false )) {
+      dealloc();
+    } else if(__builtin_expect( ( !isUsed() ), false )) {
+      decrRefCounts();
+    }
+  }
+
+  // These implementations are identical, but we need to have both of
+  // these because the templatized version isn't recognized as a
+  // generalization of a copy constructor (and a default copy
+  // constructor will be generated [?])
+  inline NodeBuilder(const NodeBuilder& nb) :
+    d_nv(&d_inlineNv),
+    d_nm(nb.d_nm),
+    d_nvMaxChildren(nchild_thresh) {
+
+    d_inlineNv.d_id = nb.d_nv->d_id;
+    d_inlineNv.d_rc = 0;
+    d_inlineNv.d_kind = nb.d_nv->d_kind;
+    d_inlineNv.d_nchildren = 0;
+
+    internalCopy(nb);
+  }
+
+  // technically this is a conversion, not a copy
+  template <unsigned N>
+  inline NodeBuilder(const NodeBuilder<N>& nb) :
+    d_nv(&d_inlineNv),
+    d_nm(nb.d_nm),
+    d_nvMaxChildren(nchild_thresh) {
+
+    d_inlineNv.d_id = nb.d_nv->d_id;
+    d_inlineNv.d_rc = 0;
+    d_inlineNv.d_kind = nb.d_nv->d_kind;
+    d_inlineNv.d_nchildren = 0;
+
+    internalCopy(nb);
+  }
+
+  typedef expr::NodeValue::iterator< NodeTemplate<true>  > iterator;
+  typedef expr::NodeValue::iterator< NodeTemplate<true> > const_iterator;
+
+  /** Get the begin-const-iterator of this Node-under-construction. */
+  inline const_iterator begin() const {
+    Assert(!isUsed(), "NodeBuilder is one-shot only; "
+           "attempt to access it after conversion");
+    Assert(getKind() != kind::UNDEFINED_KIND,
+           "Iterators over NodeBuilder<> are undefined "
+           "until a Kind is set");
+    return d_nv->begin< NodeTemplate<true> >();
+  }
+
+  /** Get the end-const-iterator of this Node-under-construction. */
+  inline const_iterator end() const {
+    Assert(!isUsed(), "NodeBuilder is one-shot only; "
+           "attempt to access it after conversion");
+    Assert(getKind() != kind::UNDEFINED_KIND,
+           "Iterators over NodeBuilder<> are undefined "
+           "until a Kind is set");
+    return d_nv->end< NodeTemplate<true> >();
+  }
+
+  /** Get the kind of this Node-under-construction. */
+  inline Kind getKind() const {
+    Assert(!isUsed(), "NodeBuilder is one-shot only; "
+           "attempt to access it after conversion");
+    return d_nv->getKind();
+  }
+
+  /** Get the kind of this Node-under-construction. */
+  inline kind::MetaKind getMetaKind() const {
+    Assert(!isUsed(), "NodeBuilder is one-shot only; "
+           "attempt to access it after conversion");
+    Assert(getKind() != kind::UNDEFINED_KIND,
+           "The metakind of a NodeBuilder<> is undefined "
+           "until a Kind is set");
+    return d_nv->getMetaKind();
+  }
+
+  /** Get the current number of children of this Node-under-construction. */
+  inline unsigned getNumChildren() const {
+    Assert(!isUsed(), "NodeBuilder is one-shot only; "
+           "attempt to access it after conversion");
+    Assert(getKind() != kind::UNDEFINED_KIND,
+           "The number of children of a NodeBuilder<> is undefined "
+           "until a Kind is set");
+    return d_nv->getNumChildren();
+  }
+
+  /**
+   * Access to the operator of this Node-under-construction.  Only
+   * allowed if this NodeBuilder is unused, and has a defined kind
+   * that is of PARAMETERIZED metakind.
+   */
+  inline Node getOperator() const {
+    Assert(!isUsed(), "NodeBuilder is one-shot only; "
+           "attempt to access it after conversion");
+    Assert(getKind() != kind::UNDEFINED_KIND,
+           "NodeBuilder<> operator access is not permitted "
+           "until a Kind is set");
+    Assert(getMetaKind() == kind::metakind::PARAMETERIZED,
+           "NodeBuilder<> operator access is only permitted "
+           "on parameterized kinds, not `%s'",
+           kind::kindToString(getKind()).c_str());
+    return Node(d_nv->getOperator());
+  }
+
+  /**
+   * Access to children of this Node-under-construction.  Only allowed
+   * if this NodeBuilder is unused and has a defined kind.
+   */
+  inline Node getChild(int i) const {
+    Assert(!isUsed(), "NodeBuilder is one-shot only; "
+           "attempt to access it after conversion");
+    Assert(getKind() != kind::UNDEFINED_KIND,
+           "NodeBuilder<> child access is not permitted "
+           "until a Kind is set");
+    Assert(i >= 0 && unsigned(i) < d_nv->getNumChildren(),
+           "index out of range for NodeBuilder::getChild()");
+    return Node(d_nv->getChild(i));
+  }
+
+  /** Access to children of this Node-under-construction. */
+  inline Node operator[](int i) const {
+    return getChild(i);
+  }
+
+  /**
+   * "Reset" this node builder (optionally setting a new kind for it),
+   * using the same "inline" memory as at construction time.  This
+   * deallocates NodeBuilder-allocated heap memory, if it was
+   * allocated, and decrements the reference counts of any currently
+   * children in the NodeBuilder.
+   *
+   * This should leave the NodeBuilder in the state it was after
+   * initial construction, except for Kind, which is set to the
+   * argument, if provided, or UNDEFINED_KIND.  In particular, the
+   * associated NodeManager is not affected by clear().
+   */
+  void clear(Kind k = kind::UNDEFINED_KIND);
+
+  // "Stream" expression constructor syntax
+
+  /** Set the Kind of this Node-under-construction. */
+  inline NodeBuilder<nchild_thresh>& operator<<(const Kind& k) {
+    Assert(!isUsed(), "NodeBuilder is one-shot only; "
+           "attempt to access it after conversion");
+    Assert(getKind() == kind::UNDEFINED_KIND || d_nv->d_id == 0,
+           "can't redefine the Kind of a NodeBuilder");
+    Assert(d_nv->d_id == 0,
+           "internal inconsistency with NodeBuilder: d_id != 0");
+    AssertArgument(k != kind::UNDEFINED_KIND &&
+                   k != kind::NULL_EXPR &&
+                   k < kind::LAST_KIND,
+                   k, "illegal node-building kind");
+    // This test means: we didn't have a Kind at the beginning (on
+    // NodeBuilder construction or at the last clear()), but we do
+    // now.  That means we appended a Kind with operator<<(Kind),
+    // which now (lazily) we'll collapse.
+    if(__builtin_expect( ( d_nv->d_id == 0 && getKind() != kind::UNDEFINED_KIND ), false )) {
+      Node n2 = operator Node();
+      clear();
+      append(n2);
+    } else if(d_nv->d_nchildren == 0) {
+      d_nv->d_id = 1; // remember that we had a kind from the start
+    }
+    d_nv->d_kind = expr::NodeValue::kindToDKind(k);
+    return *this;
+  }
+
+  /**
+   * If this Node-under-construction has a Kind set, collapse it and
+   * append the given Node as a child.  Otherwise, simply append.
+   */
+  NodeBuilder<nchild_thresh>& operator<<(TNode n) {
+    Assert(!isUsed(), "NodeBuilder is one-shot only; "
+           "attempt to access it after conversion");
+    // This test means: we didn't have a Kind at the beginning (on
+    // NodeBuilder construction or at the last clear()), but we do
+    // now.  That means we appended a Kind with operator<<(Kind),
+    // which now (lazily) we'll collapse.
+    if(__builtin_expect( ( d_nv->d_id == 0 && getKind() != kind::UNDEFINED_KIND ), false )) {
+      Node n2 = operator Node();
+      clear();
+      append(n2);
+    }
+    return append(n);
+  }
+
+  /**
+   * If this Node-under-construction has a Kind set, collapse it and
+   * append the given Node as a child.  Otherwise, simply append.
+   */
+  NodeBuilder<nchild_thresh>& operator<<(TypeNode n) {
+    Assert(!isUsed(), "NodeBuilder is one-shot only; "
+           "attempt to access it after conversion");
+    // This test means: we didn't have a Kind at the beginning (on
+    // NodeBuilder construction or at the last clear()), but we do
+    // now.  That means we appended a Kind with operator<<(Kind),
+    // which now (lazily) we'll collapse.
+    if(__builtin_expect( ( d_nv->d_id == 0 && getKind() != kind::UNDEFINED_KIND ), false )) {
+      Node n2 = operator Node();
+      clear();
+      append(n2);
+    }
+    return append(n);
+  }
+
+  /** Append a sequence of children to this TypeNode-under-construction. */
+  inline NodeBuilder<nchild_thresh>&
+  append(const std::vector<TypeNode>& children) {
+    Assert(!isUsed(), "NodeBuilder is one-shot only; "
+           "attempt to access it after conversion");
+    return append(children.begin(), children.end());
+  }
+
+  /** Append a sequence of children to this Node-under-construction. */
+  template <bool ref_count>
+  inline NodeBuilder<nchild_thresh>&
+  append(const std::vector<NodeTemplate<ref_count> >& children) {
+    Assert(!isUsed(), "NodeBuilder is one-shot only; "
+           "attempt to access it after conversion");
+    return append(children.begin(), children.end());
+  }
+
+  /** Append a sequence of children to this Node-under-construction. */
+  template <class Iterator>
+  NodeBuilder<nchild_thresh>& append(const Iterator& begin, const Iterator& end) {
+    Assert(!isUsed(), "NodeBuilder is one-shot only; "
+           "attempt to access it after conversion");
+    for(Iterator i = begin; i != end; ++i) {
+      append(*i);
+    }
+    return *this;
+  }
+
+  /** Append a child to this Node-under-construction. */
+  NodeBuilder<nchild_thresh>& append(TNode n) {
+    Assert(!isUsed(), "NodeBuilder is one-shot only; "
+           "attempt to access it after conversion");
+    Assert(!n.isNull(), "Cannot use NULL Node as a child of a Node");
+    if(n.getKind() == kind::BUILTIN) {
+      return *this << NodeManager::operatorToKind(n);
+    }
+    allocateNvIfNecessaryForAppend();
+    expr::NodeValue* nv = n.d_nv;
+    nv->inc();
+    d_nv->d_children[d_nv->d_nchildren++] = nv;
+    Assert(d_nv->d_nchildren <= d_nvMaxChildren);
+    return *this;
+  }
+
+  /** Append a child to this Node-under-construction. */
+  NodeBuilder<nchild_thresh>& append(const TypeNode& typeNode) {
+    Assert(!isUsed(), "NodeBuilder is one-shot only; "
+           "attempt to access it after conversion");
+    Assert(!typeNode.isNull(), "Cannot use NULL Node as a child of a Node");
+    allocateNvIfNecessaryForAppend();
+    expr::NodeValue* nv = typeNode.d_nv;
+    nv->inc();
+    d_nv->d_children[d_nv->d_nchildren++] = nv;
+    Assert(d_nv->d_nchildren <= d_nvMaxChildren);
+    return *this;
+  }
+
+private:
+
+  /** Construct the node value out of the node builder */
+  expr::NodeValue* constructNV();
+  expr::NodeValue* constructNV() const;
+
+#ifdef CVC4_DEBUG
+  void maybeCheckType(const TNode n) const
+    throw(TypeCheckingExceptionPrivate, AssertionException);
+#else /* CVC4_DEBUG */
+  inline void maybeCheckType(const TNode n) const throw() { }
+#endif /* CVC4_DEBUG */
+
+public:
+
+  /** Construct the Node out of the node builder */
+  Node constructNode();
+  Node constructNode() const;
+
+  /** Construct a Node on the heap out of the node builder */
+  Node* constructNodePtr();
+  Node* constructNodePtr() const;
+
+  /** Construction of the TypeNode out of the node builder */
+  TypeNode constructTypeNode();
+  TypeNode constructTypeNode() const;
+
+  // two versions, so we can support extraction from (const)
+  // NodeBuilders which are temporaries appearing as rvalues
+  operator Node();
+  operator Node() const;
+
+  // similarly for TypeNode
+  operator TypeNode();
+  operator TypeNode() const;
+
+  NodeBuilder<nchild_thresh>& operator&=(TNode);
+  NodeBuilder<nchild_thresh>& operator|=(TNode);
+  NodeBuilder<nchild_thresh>& operator+=(TNode);
+  NodeBuilder<nchild_thresh>& operator-=(TNode);
+  NodeBuilder<nchild_thresh>& operator*=(TNode);
+
+  friend class AndNodeBuilder;
+  friend class OrNodeBuilder;
+  friend class PlusNodeBuilder;
+  friend class MultNodeBuilder;
+
+  // This is needed for copy constructors of different sizes to access
+  // private fields
+  template <unsigned N>
+  friend class NodeBuilder;
+
+  template <unsigned N>
+  friend std::ostream& operator<<(std::ostream& out, const NodeBuilder<N>& nb);
+
+};/* class NodeBuilder<> */
+
+}/* CVC4 namespace */
+
+// TODO: add templatized NodeTemplate<ref_count> to all above and
+// below inlines for 'const [T]Node&' arguments?  Technically a lot of
+// time is spent in the TNode conversion and copy constructor, but
+// this should be optimized into a simple pointer copy (?)
+// TODO: double-check this.
+
+#include "expr/node.h"
+#include "expr/node_manager.h"
+#include "options/expr_options.h"
+
+namespace CVC4 {
+
+template <unsigned nchild_thresh>
+void NodeBuilder<nchild_thresh>::clear(Kind k) {
+  Assert(k != kind::NULL_EXPR, "illegal Node-building clear kind");
+
+  if(__builtin_expect( ( nvIsAllocated() ), false )) {
+    dealloc();
+  } else if(__builtin_expect( ( !isUsed() ), false )) {
+    decrRefCounts();
+  } else {
+    setUnused();
+  }
+
+  d_inlineNv.d_kind = expr::NodeValue::kindToDKind(k);
+  for(expr::NodeValue::nv_iterator i = d_inlineNv.nv_begin();
+      i != d_inlineNv.nv_end();
+      ++i) {
+    (*i)->dec();
+  }
+  d_inlineNv.d_nchildren = 0;
+  // keep track of whether or not we hvae a kind already
+  d_inlineNv.d_id = (k == kind::UNDEFINED_KIND) ? 0 : 1;
+}
+
+template <unsigned nchild_thresh>
+void NodeBuilder<nchild_thresh>::realloc(size_t toSize) {
+  Assert( toSize > d_nvMaxChildren,
+          "attempt to realloc() a NodeBuilder to a smaller/equal size!" );
+  Assert( toSize < (1lu << __CVC4__EXPR__NODE_VALUE__NBITS__NCHILDREN),
+          "attempt to realloc() a NodeBuilder to size %u (beyond hard limit of %u)",
+          toSize, (1lu << __CVC4__EXPR__NODE_VALUE__NBITS__NCHILDREN) - 1 );
+
+  if(__builtin_expect( ( nvIsAllocated() ), false )) {
+    // Ensure d_nv is not modified on allocation failure
+    expr::NodeValue* newBlock = (expr::NodeValue*)
+      std::realloc(d_nv, sizeof(expr::NodeValue) +
+                   ( sizeof(expr::NodeValue*) * toSize ));
+    if(newBlock == NULL) {
+      // In this case, d_nv was NOT freed.  If we throw, the
+      // deallocation should occur on destruction of the NodeBuilder.
+      throw std::bad_alloc();
+    }
+    d_nvMaxChildren = toSize;
+    Assert(d_nvMaxChildren == toSize);//overflow check
+    // Here, the copy (between two heap-allocated buffers) has already
+    // been done for us by the std::realloc().
+    d_nv = newBlock;
+  } else {
+    // Ensure d_nv is not modified on allocation failure
+    expr::NodeValue* newBlock = (expr::NodeValue*)
+      std::malloc(sizeof(expr::NodeValue) +
+                  ( sizeof(expr::NodeValue*) * toSize ));
+    if(newBlock == NULL) {
+      throw std::bad_alloc();
+    }
+    d_nvMaxChildren = toSize;
+    Assert(d_nvMaxChildren == toSize);//overflow check
+
+    d_nv = newBlock;
+    d_nv->d_id = d_inlineNv.d_id;
+    d_nv->d_rc = 0;
+    d_nv->d_kind = d_inlineNv.d_kind;
+    d_nv->d_nchildren = d_inlineNv.d_nchildren;
+
+    std::copy(d_inlineNv.d_children,
+              d_inlineNv.d_children + d_inlineNv.d_nchildren,
+              d_nv->d_children);
+
+    // ensure "inline" children don't get decremented in dtor
+    d_inlineNv.d_nchildren = 0;
+  }
+}
+
+template <unsigned nchild_thresh>
+void NodeBuilder<nchild_thresh>::dealloc() {
+  Assert( nvIsAllocated(),
+          "Internal error: NodeBuilder: dealloc() called without a "
+          "private NodeBuilder-allocated buffer" );
+
+  for(expr::NodeValue::nv_iterator i = d_nv->nv_begin();
+      i != d_nv->nv_end();
+      ++i) {
+    (*i)->dec();
+  }
+
+  free(d_nv);
+  d_nv = &d_inlineNv;
+  d_nvMaxChildren = nchild_thresh;
+}
+
+template <unsigned nchild_thresh>
+void NodeBuilder<nchild_thresh>::decrRefCounts() {
+  Assert( !nvIsAllocated(),
+          "Internal error: NodeBuilder: decrRefCounts() called with a "
+          "private NodeBuilder-allocated buffer" );
+
+  for(expr::NodeValue::nv_iterator i = d_inlineNv.nv_begin();
+      i != d_inlineNv.nv_end();
+      ++i) {
+    (*i)->dec();
+  }
+
+  d_inlineNv.d_nchildren = 0;
+}
+
+
+template <unsigned nchild_thresh>
+TypeNode NodeBuilder<nchild_thresh>::constructTypeNode() {
+  return TypeNode(constructNV());
+}
+
+template <unsigned nchild_thresh>
+TypeNode NodeBuilder<nchild_thresh>::constructTypeNode() const {
+  return TypeNode(constructNV());
+}
+
+template <unsigned nchild_thresh>
+Node NodeBuilder<nchild_thresh>::constructNode() {
+  Node n = Node(constructNV());
+  maybeCheckType(n);
+  return n;
+}
+
+template <unsigned nchild_thresh>
+Node NodeBuilder<nchild_thresh>::constructNode() const {
+  Node n = Node(constructNV());
+  maybeCheckType(n);
+  return n;
+}
+
+template <unsigned nchild_thresh>
+Node* NodeBuilder<nchild_thresh>::constructNodePtr() {
+  // maybeCheckType() can throw an exception. Make sure to call the destructor
+  // on the exception branch.
+  PtrCloser<Node> np(new Node(constructNV()));
+  maybeCheckType(*np.get());
+  return np.release();
+}
+
+template <unsigned nchild_thresh>
+Node* NodeBuilder<nchild_thresh>::constructNodePtr() const {
+  PtrCloser<Node> np(new Node(constructNV()));
+  maybeCheckType(*np.get());
+  return np.release();
+}
+
+template <unsigned nchild_thresh>
+NodeBuilder<nchild_thresh>::operator Node() {
+  return constructNode();
+}
+
+template <unsigned nchild_thresh>
+NodeBuilder<nchild_thresh>::operator Node() const {
+  return constructNode();
+}
+
+template <unsigned nchild_thresh>
+NodeBuilder<nchild_thresh>::operator TypeNode() {
+  return constructTypeNode();
+}
+
+template <unsigned nchild_thresh>
+NodeBuilder<nchild_thresh>::operator TypeNode() const {
+  return constructTypeNode();
+}
+
+template <unsigned nchild_thresh>
+expr::NodeValue* NodeBuilder<nchild_thresh>::constructNV() {
+  Assert(!isUsed(), "NodeBuilder is one-shot only; "
+         "attempt to access it after conversion");
+  Assert(getKind() != kind::UNDEFINED_KIND,
+         "Can't make an expression of an undefined kind!");
+
+  // NOTE: The comments in this function refer to the cases in the
+  // file comments at the top of this file.
+
+  // Case 0: If a VARIABLE
+  if(getMetaKind() == kind::metakind::VARIABLE) {
+    /* 0. If a VARIABLE, treat similarly to 1(b), except that we know
+     * there are no children (no reference counts to reason about),
+     * and we don't keep VARIABLE-kinded Nodes in the NodeManager
+     * pool. */
+
+    Assert( ! nvIsAllocated(),
+            "internal NodeBuilder error: "
+            "VARIABLE-kinded NodeBuilder is heap-allocated !?" );
+    Assert( d_inlineNv.d_nchildren == 0,
+            "improperly-formed VARIABLE-kinded NodeBuilder: "
+            "no children permitted" );
+
+    // we have to copy the inline NodeValue out
+    expr::NodeValue* nv = (expr::NodeValue*)
+      std::malloc(sizeof(expr::NodeValue));
+    if(nv == NULL) {
+      throw std::bad_alloc();
+    }
+    // there are no children, so we don't have to worry about
+    // reference counts in this case.
+    nv->d_nchildren = 0;
+    nv->d_kind = d_nv->d_kind;
+    nv->d_id = d_nm->next_id++;// FIXME multithreading
+    nv->d_rc = 0;
+    setUsed();
+    if(Debug.isOn("gc")) {
+      Debug("gc") << "creating node value " << nv
+                  << " [" << nv->d_id << "]: ";
+      nv->printAst(Debug("gc"));
+      Debug("gc") << std::endl;
+    }
+    return nv;
+  }
+
+  // check that there are the right # of children for this kind
+  Assert(getMetaKind() != kind::metakind::CONSTANT,
+         "Cannot make Nodes with NodeBuilder that have CONSTANT-kinded kinds");
+  Assert(getNumChildren() >= kind::metakind::getLowerBoundForKind(getKind()),
+         "Nodes with kind %s must have at least %u children (the one under "
+         "construction has %u)",
+         kind::kindToString(getKind()).c_str(),
+         kind::metakind::getLowerBoundForKind(getKind()),
+         getNumChildren());
+  Assert(getNumChildren() <= kind::metakind::getUpperBoundForKind(getKind()),
+         "Nodes with kind %s must have at most %u children (the one under "
+         "construction has %u)",
+         kind::kindToString(getKind()).c_str(),
+         kind::metakind::getUpperBoundForKind(getKind()),
+         getNumChildren());
+
+#if 0
+  // if the kind is PARAMETERIZED, check that the operator is correctly-kinded
+  Assert(kind::metaKindOf(getKind()) != kind::metakind::PARAMETERIZED ||
+         NodeManager::operatorToKind(getOperator()) == getKind(),
+         "Attempted to construct a parameterized kind `%s' with "
+         "incorrectly-kinded operator `%s'",
+         kind::kindToString(getKind()).c_str(),
+         kind::kindToString(getOperator().getKind()).c_str());
+#endif /* 0 */
+
+  // Implementation differs depending on whether the NodeValue was
+  // malloc'ed or not and whether or not it's in the already-been-seen
+  // NodeManager pool of Nodes.  See implementation notes at the top
+  // of this file.
+
+  if(__builtin_expect( ( ! nvIsAllocated() ), true )) {
+    /** Case 1.  d_nv points to d_inlineNv: it is the backing store
+     ** allocated "inline" in this NodeBuilder. **/
+
+    // Lookup the expression value in the pool we already have
+    expr::NodeValue* poolNv = d_nm->poolLookup(&d_inlineNv);
+    // If something else is there, we reuse it
+    if(poolNv != NULL) {
+      /* Subcase (a): The Node under construction already exists in
+       * the NodeManager's pool. */
+
+      /* 1(a). Reference-counts for all children in d_inlineNv must be
+       * decremented, and the NodeBuilder must be marked as "used" and
+       * the number of children set to zero so that we don't decrement
+       * them again on destruction.  The existing NodeManager pool
+       * entry is returned.
+       */
+      decrRefCounts();
+      d_inlineNv.d_nchildren = 0;
+      setUsed();
+      return poolNv;
+    } else {
+      /* Subcase (b): The Node under construction is NOT already in
+       * the NodeManager's pool. */
+
+      /* 1(b). A new heap-allocated NodeValue must be constructed and
+       * all settings and children from d_inlineNv copied into it.
+       * This new NodeValue is put into the NodeManager's pool.  The
+       * NodeBuilder is marked as "used" and the number of children in
+       * d_inlineNv set to zero so that we don't decrement child
+       * reference counts on destruction (the child reference counts
+       * have been "taken over" by the new NodeValue).  We return a
+       * Node wrapper for this new NodeValue, which increments its
+       * reference count. */
+
+      // create the canonical expression value for this node
+      expr::NodeValue* nv = (expr::NodeValue*)
+        std::malloc(sizeof(expr::NodeValue) +
+                    ( sizeof(expr::NodeValue*) * d_inlineNv.d_nchildren ));
+      if(nv == NULL) {
+        throw std::bad_alloc();
+      }
+      nv->d_nchildren = d_inlineNv.d_nchildren;
+      nv->d_kind = d_inlineNv.d_kind;
+      nv->d_id = d_nm->next_id++;// FIXME multithreading
+      nv->d_rc = 0;
+
+      std::copy(d_inlineNv.d_children,
+                d_inlineNv.d_children + d_inlineNv.d_nchildren,
+                nv->d_children);
+
+      d_inlineNv.d_nchildren = 0;
+      setUsed();
+
+      //poolNv = nv;
+      d_nm->poolInsert(nv);
+      if(Debug.isOn("gc")) {
+        Debug("gc") << "creating node value " << nv
+                    << " [" << nv->d_id << "]: ";
+        nv->printAst(Debug("gc"));
+        Debug("gc") << std::endl;
+      }
+      return nv;
+    }
+  } else {
+    /** Case 2. d_nv does NOT point to d_inlineNv: it is a new, larger
+     ** buffer that was heap-allocated by this NodeBuilder. **/
+
+    // Lookup the expression value in the pool we already have (with insert)
+    expr::NodeValue* poolNv = d_nm->poolLookup(d_nv);
+    // If something else is there, we reuse it
+    if(poolNv != NULL) {
+      /* Subcase (a): The Node under construction already exists in
+       * the NodeManager's pool. */
+
+      /* 2(a). Reference-counts for all children in d_nv must be
+       * decremented.  The NodeBuilder is marked as "used" and the
+       * heap-allocated d_nv deleted.  d_nv is repointed to d_inlineNv
+       * so that destruction of the NodeBuilder doesn't cause any
+       * problems.  The existing NodeManager pool entry is
+       * returned. */
+
+      dealloc();
+      setUsed();
+      return poolNv;
+    } else {
+      /* Subcase (b) The Node under construction is NOT already in the
+       * NodeManager's pool. */
+
+      /* 2(b). The heap-allocated d_nv is "cropped" to the correct
+       * size (based on the number of children it _actually_ has).
+       * d_nv is repointed to d_inlineNv so that destruction of the
+       * NodeBuilder doesn't cause any problems, and the (old) value
+       * it had is placed into the NodeManager's pool and returned in
+       * a Node wrapper. */
+
+      crop();
+      expr::NodeValue* nv = d_nv;
+      nv->d_id = d_nm->next_id++;// FIXME multithreading
+      d_nv = &d_inlineNv;
+      d_nvMaxChildren = nchild_thresh;
+      setUsed();
+
+      //poolNv = nv;
+      d_nm->poolInsert(nv);
+      Debug("gc") << "creating node value " << nv
+                  << " [" << nv->d_id << "]: " << *nv << "\n";
+      return nv;
+    }
+  }
+}
+
+// CONST VERSION OF NODE EXTRACTOR
+template <unsigned nchild_thresh>
+expr::NodeValue* NodeBuilder<nchild_thresh>::constructNV() const {
+  Assert(!isUsed(), "NodeBuilder is one-shot only; "
+         "attempt to access it after conversion");
+  Assert(getKind() != kind::UNDEFINED_KIND,
+         "Can't make an expression of an undefined kind!");
+
+  // NOTE: The comments in this function refer to the cases in the
+  // file comments at the top of this file.
+
+  // Case 0: If a VARIABLE
+  if(getMetaKind() == kind::metakind::VARIABLE) {
+    /* 0. If a VARIABLE, treat similarly to 1(b), except that we know
+     * there are no children (no reference counts to reason about),
+     * and we don't keep VARIABLE-kinded Nodes in the NodeManager
+     * pool. */
+
+    Assert( ! nvIsAllocated(),
+            "internal NodeBuilder error: "
+            "VARIABLE-kinded NodeBuilder is heap-allocated !?" );
+    Assert( d_inlineNv.d_nchildren == 0,
+            "improperly-formed VARIABLE-kinded NodeBuilder: "
+            "no children permitted" );
+
+    // we have to copy the inline NodeValue out
+    expr::NodeValue* nv = (expr::NodeValue*)
+      std::malloc(sizeof(expr::NodeValue));
+    if(nv == NULL) {
+      throw std::bad_alloc();
+    }
+    // there are no children, so we don't have to worry about
+    // reference counts in this case.
+    nv->d_nchildren = 0;
+    nv->d_kind = d_nv->d_kind;
+    nv->d_id = d_nm->next_id++;// FIXME multithreading
+    nv->d_rc = 0;
+    Debug("gc") << "creating node value " << nv
+                << " [" << nv->d_id << "]: " << *nv << "\n";
+    return nv;
+  }
+
+  // check that there are the right # of children for this kind
+  Assert(getMetaKind() != kind::metakind::CONSTANT,
+         "Cannot make Nodes with NodeBuilder that have CONSTANT-kinded kinds");
+  Assert(getNumChildren() >= kind::metakind::getLowerBoundForKind(getKind()),
+         "Nodes with kind %s must have at least %u children (the one under "
+         "construction has %u)",
+         kind::kindToString(getKind()).c_str(),
+         kind::metakind::getLowerBoundForKind(getKind()),
+         getNumChildren());
+  Assert(getNumChildren() <= kind::metakind::getUpperBoundForKind(getKind()),
+         "Nodes with kind %s must have at most %u children (the one under "
+         "construction has %u)",
+         kind::kindToString(getKind()).c_str(),
+         kind::metakind::getUpperBoundForKind(getKind()),
+         getNumChildren());
+
+#if 0
+  // if the kind is PARAMETERIZED, check that the operator is correctly-kinded
+  Assert(kind::metaKindOf(getKind()) != kind::metakind::PARAMETERIZED ||
+         NodeManager::operatorToKind(getOperator()) == getKind(),
+         "Attempted to construct a parameterized kind `%s' with "
+         "incorrectly-kinded operator `%s'",
+         kind::kindToString(getKind()).c_str(),
+         kind::kindToString(getOperator().getKind()).c_str());
+#endif /* 0 */
+
+  // Implementation differs depending on whether the NodeValue was
+  // malloc'ed or not and whether or not it's in the already-been-seen
+  // NodeManager pool of Nodes.  See implementation notes at the top
+  // of this file.
+
+  if(__builtin_expect( ( ! nvIsAllocated() ), true )) {
+    /** Case 1.  d_nv points to d_inlineNv: it is the backing store
+     ** allocated "inline" in this NodeBuilder. **/
+
+    // Lookup the expression value in the pool we already have
+    expr::NodeValue* poolNv = d_nm->poolLookup(const_cast<expr::NodeValue*>(&d_inlineNv));
+    // If something else is there, we reuse it
+    if(poolNv != NULL) {
+      /* Subcase (a): The Node under construction already exists in
+       * the NodeManager's pool. */
+
+      /* 1(a). The existing NodeManager pool entry is returned; we
+       * leave child reference counts alone and get them at
+       * NodeBuilder destruction time. */
+
+      return poolNv;
+    } else {
+      /* Subcase (b): The Node under construction is NOT already in
+       * the NodeManager's pool. */
+
+      /* 1(b). A new heap-allocated NodeValue must be constructed and
+       * all settings and children from d_inlineNv copied into it.
+       * This new NodeValue is put into the NodeManager's pool.  The
+       * NodeBuilder cannot be marked as "used", so we increment all
+       * child reference counts (which will be decremented to match on
+       * destruction of the NodeBuilder).  We return a Node wrapper
+       * for this new NodeValue, which increments its reference
+       * count. */
+
+      // create the canonical expression value for this node
+      expr::NodeValue* nv = (expr::NodeValue*)
+        std::malloc(sizeof(expr::NodeValue) +
+                    ( sizeof(expr::NodeValue*) * d_inlineNv.d_nchildren ));
+      if(nv == NULL) {
+        throw std::bad_alloc();
+      }
+      nv->d_nchildren = d_inlineNv.d_nchildren;
+      nv->d_kind = d_inlineNv.d_kind;
+      nv->d_id = d_nm->next_id++;// FIXME multithreading
+      nv->d_rc = 0;
+
+      std::copy(d_inlineNv.d_children,
+                d_inlineNv.d_children + d_inlineNv.d_nchildren,
+                nv->d_children);
+
+      for(expr::NodeValue::nv_iterator i = nv->nv_begin();
+          i != nv->nv_end();
+          ++i) {
+        (*i)->inc();
+      }
+
+      //poolNv = nv;
+      d_nm->poolInsert(nv);
+      Debug("gc") << "creating node value " << nv
+                  << " [" << nv->d_id << "]: " << *nv << "\n";
+      return nv;
+    }
+  } else {
+    /** Case 2. d_nv does NOT point to d_inlineNv: it is a new, larger
+     ** buffer that was heap-allocated by this NodeBuilder. **/
+
+    // Lookup the expression value in the pool we already have (with insert)
+    expr::NodeValue* poolNv = d_nm->poolLookup(d_nv);
+    // If something else is there, we reuse it
+    if(poolNv != NULL) {
+      /* Subcase (a): The Node under construction already exists in
+       * the NodeManager's pool. */
+
+      /* 2(a). The existing NodeManager pool entry is returned; we
+       * leave child reference counts alone and get them at
+       * NodeBuilder destruction time. */
+
+      return poolNv;
+    } else {
+      /* Subcase (b) The Node under construction is NOT already in the
+       * NodeManager's pool. */
+
+      /* 2(b). The heap-allocated d_nv cannot be "cropped" to the
+       * correct size; we create a copy, increment child reference
+       * counts, place this copy into the NodeManager pool, and return
+       * a Node wrapper around it.  The child reference counts will be
+       * decremented to match at NodeBuilder destruction time. */
+
+      // create the canonical expression value for this node
+      expr::NodeValue* nv = (expr::NodeValue*)
+        std::malloc(sizeof(expr::NodeValue) +
+                    ( sizeof(expr::NodeValue*) * d_nv->d_nchildren ));
+      if(nv == NULL) {
+        throw std::bad_alloc();
+      }
+      nv->d_nchildren = d_nv->d_nchildren;
+      nv->d_kind = d_nv->d_kind;
+      nv->d_id = d_nm->next_id++;// FIXME multithreading
+      nv->d_rc = 0;
+
+      std::copy(d_nv->d_children,
+                d_nv->d_children + d_nv->d_nchildren,
+                nv->d_children);
+
+      for(expr::NodeValue::nv_iterator i = nv->nv_begin();
+          i != nv->nv_end();
+          ++i) {
+        (*i)->inc();
+      }
+
+      //poolNv = nv;
+      d_nm->poolInsert(nv);
+      Debug("gc") << "creating node value " << nv
+                  << " [" << nv->d_id << "]: " << *nv << "\n";
+      return nv;
+    }
+  }
+}
+
+template <unsigned nchild_thresh>
+template <unsigned N>
+void NodeBuilder<nchild_thresh>::internalCopy(const NodeBuilder<N>& nb) {
+  if(nb.isUsed()) {
+    setUsed();
+    return;
+  }
+
+  bool realloced CVC4_UNUSED = false;
+  if(nb.d_nvMaxChildren > d_nvMaxChildren) {
+    realloced = true;
+    realloc(nb.d_nvMaxChildren);
+  }
+
+  Assert(nb.d_nvMaxChildren <= d_nvMaxChildren);
+  Assert(nb.d_nv->nv_end() - nb.d_nv->nv_begin() <= d_nvMaxChildren, "realloced:%s, d_nvMax:%u, size:%u, nc:%u", realloced ? "true" : "false", d_nvMaxChildren, nb.d_nv->nv_end() - nb.d_nv->nv_begin(), nb.d_nv->getNumChildren());
+  std::copy(nb.d_nv->nv_begin(),
+            nb.d_nv->nv_end(),
+            d_nv->nv_begin());
+
+  d_nv->d_nchildren = nb.d_nv->d_nchildren;
+
+  for(expr::NodeValue::nv_iterator i = d_nv->nv_begin();
+      i != d_nv->nv_end();
+      ++i) {
+    (*i)->inc();
+  }
+}
+
+#ifdef CVC4_DEBUG
+template <unsigned nchild_thresh>
+inline void NodeBuilder<nchild_thresh>::maybeCheckType(const TNode n) const
+    throw(TypeCheckingExceptionPrivate, AssertionException) {
+  /* force an immediate type check, if early type checking is
+     enabled and the current node isn't a variable or constant */
+  if( d_nm->getOptions()[options::earlyTypeChecking] ) {
+    kind::MetaKind mk = n.getMetaKind();
+    if( mk != kind::metakind::VARIABLE
+        && mk != kind::metakind::CONSTANT ) {
+      d_nm->getType(n, true);
+    }
+  }
+}
+#endif /* CVC4_DEBUG */
+
+template <unsigned nchild_thresh>
+std::ostream& operator<<(std::ostream& out, const NodeBuilder<nchild_thresh>& nb) {
+  return out << *nb.d_nv;
+}
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__NODE_BUILDER_H */
diff --git a/src/expr/node_manager.cpp b/src/expr/node_manager.cpp
new file mode 100644
index 0000000..ebf78f5
--- /dev/null
+++ b/src/expr/node_manager.cpp
@@ -0,0 +1,824 @@
+/*********************                                                        */
+/*! \file node_manager.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Expression manager implementation.
+ **
+ ** Expression manager implementation.
+ **
+ ** Reviewed by Chris Conway, Apr 5 2010 (bug #65).
+ **/
+#include "expr/node_manager.h"
+
+#include <algorithm>
+#include <ext/hash_set>
+#include <stack>
+#include <utility>
+
+#include "base/cvc4_assert.h"
+#include "base/listener.h"
+#include "base/tls.h"
+#include "expr/attribute.h"
+#include "expr/node_manager_attributes.h"
+#include "expr/node_manager_listeners.h"
+#include "expr/type_checker.h"
+#include "options/options.h"
+#include "options/smt_options.h"
+#include "util/statistics_registry.h"
+#include "util/resource_manager.h"
+
+using namespace std;
+using namespace CVC4::expr;
+using __gnu_cxx::hash_set;
+
+namespace CVC4 {
+
+CVC4_THREADLOCAL(NodeManager*) NodeManager::s_current = NULL;
+
+namespace {
+
+/**
+ * This class sets it reference argument to true and ensures that it gets set
+ * to false on destruction. This can be used to make sure a flag gets toggled
+ * in a function even on exceptional exit (e.g., see reclaimZombies()).
+ */
+struct ScopedBool {
+  bool& d_value;
+
+  ScopedBool(bool& value) :
+    d_value(value) {
+
+    Debug("gc") << ">> setting ScopedBool\n";
+    d_value = true;
+  }
+
+  ~ScopedBool() {
+    Debug("gc") << "<< clearing ScopedBool\n";
+    d_value = false;
+  }
+};
+
+/**
+ * Similarly, ensure d_nodeUnderDeletion gets set to NULL even on
+ * exceptional exit from NodeManager::reclaimZombies().
+ */
+struct NVReclaim {
+  NodeValue*& d_deletionField;
+
+  NVReclaim(NodeValue*& deletionField) :
+    d_deletionField(deletionField) {
+
+    Debug("gc") << ">> setting NVRECLAIM field\n";
+  }
+
+  ~NVReclaim() {
+    Debug("gc") << "<< clearing NVRECLAIM field\n";
+    d_deletionField = NULL;
+  }
+};
+
+} // namespace
+
+
+NodeManager::NodeManager(ExprManager* exprManager) :
+  d_options(new Options()),
+  d_statisticsRegistry(new StatisticsRegistry()),
+  d_resourceManager(new ResourceManager()),
+  d_registrations(new ListenerRegistrationList()),
+  next_id(0),
+  d_attrManager(new expr::attr::AttributeManager()),
+  d_exprManager(exprManager),
+  d_nodeUnderDeletion(NULL),
+  d_inReclaimZombies(false),
+  d_abstractValueCount(0),
+  d_skolemCounter(0) {
+  init();
+}
+
+NodeManager::NodeManager(ExprManager* exprManager,
+                         const Options& options) :
+  d_options(new Options()),
+  d_statisticsRegistry(new StatisticsRegistry()),
+  d_resourceManager(new ResourceManager()),
+  d_registrations(new ListenerRegistrationList()),
+  next_id(0),
+  d_attrManager(new expr::attr::AttributeManager()),
+  d_exprManager(exprManager),
+  d_nodeUnderDeletion(NULL),
+  d_inReclaimZombies(false),
+  d_abstractValueCount(0),
+  d_skolemCounter(0)
+{
+  d_options->copyValues(options);
+  init();
+}
+
+void NodeManager::init() {
+  poolInsert( &expr::NodeValue::null() );
+
+  for(unsigned i = 0; i < unsigned(kind::LAST_KIND); ++i) {
+    Kind k = Kind(i);
+
+    if(hasOperator(k)) {
+      d_operators[i] = mkConst(Kind(k));
+    }
+  }
+  d_resourceManager->setHardLimit((*d_options)[options::hardLimit]);
+  if((*d_options)[options::perCallResourceLimit] != 0) {
+    d_resourceManager->setResourceLimit((*d_options)[options::perCallResourceLimit], false);
+  }
+  if((*d_options)[options::cumulativeResourceLimit] != 0) {
+    d_resourceManager->setResourceLimit((*d_options)[options::cumulativeResourceLimit], true);
+  }
+  if((*d_options)[options::perCallMillisecondLimit] != 0) {
+    d_resourceManager->setTimeLimit((*d_options)[options::perCallMillisecondLimit], false);
+  }
+  if((*d_options)[options::cumulativeMillisecondLimit] != 0) {
+    d_resourceManager->setTimeLimit((*d_options)[options::cumulativeMillisecondLimit], true);
+  }
+  if((*d_options)[options::cpuTime]) {
+    d_resourceManager->useCPUTime(true);
+  }
+
+  // Do not notify() upon registration as these were handled manually above.
+  d_registrations->add(d_options->registerTlimitListener(
+      new TlimitListener(d_resourceManager), false));
+  d_registrations->add(d_options->registerTlimitPerListener(
+      new TlimitPerListener(d_resourceManager), false));
+  d_registrations->add(d_options->registerRlimitListener(
+      new RlimitListener(d_resourceManager), false));
+  d_registrations->add(d_options->registerRlimitPerListener(
+      new RlimitPerListener(d_resourceManager), false));
+}
+
+NodeManager::~NodeManager() {
+  // have to ensure "this" is the current NodeManager during
+  // destruction of operators, because they get GCed.
+
+  NodeManagerScope nms(this);
+
+  {
+    ScopedBool dontGC(d_inReclaimZombies);
+    // hopefully by this point all SmtEngines have been deleted
+    // already, along with all their attributes
+    d_attrManager->deleteAllAttributes();
+  }
+
+  for(unsigned i = 0; i < unsigned(kind::LAST_KIND); ++i) {
+    d_operators[i] = Node::null();
+  }
+
+  d_unique_vars.clear();
+
+  TypeNode dummy;
+  d_tt_cache.d_children.clear();
+  d_tt_cache.d_data = dummy;
+  d_rt_cache.d_children.clear();
+  d_rt_cache.d_data = dummy;
+
+  for (std::vector<Datatype*>::iterator
+           datatype_iter = d_ownedDatatypes.begin(),
+           datatype_end = d_ownedDatatypes.end();
+       datatype_iter != datatype_end; ++datatype_iter) {
+    Datatype* datatype = *datatype_iter;
+    delete datatype;
+  }
+  d_ownedDatatypes.clear();
+
+  Assert(!d_attrManager->inGarbageCollection() );
+
+  std::vector<NodeValue*> order = TopologicalSort(d_maxedOut);
+  d_maxedOut.clear();
+
+  while (!d_zombies.empty() || !order.empty()) {
+    if (d_zombies.empty()) {
+      // Delete the maxed out nodes in toplogical order once we know
+      // there are no additional zombies, or other nodes to worry about.
+      Assert(!order.empty());
+      // We process these in reverse to reverse the topological order.
+      NodeValue* greatest_maxed_out = order.back();
+      order.pop_back();
+      Assert(greatest_maxed_out->HasMaximizedReferenceCount());
+      Debug("gc") << "Force zombify " << greatest_maxed_out << std::endl;
+      greatest_maxed_out->d_rc = 0;
+      markForDeletion(greatest_maxed_out);
+    } else {
+      reclaimZombies();
+    }
+  }
+
+  poolRemove( &expr::NodeValue::null() );
+
+  if(Debug.isOn("gc:leaks")) {
+    Debug("gc:leaks") << "still in pool:" << endl;
+    for(NodeValuePool::const_iterator i = d_nodeValuePool.begin(),
+          iend = d_nodeValuePool.end();
+        i != iend;
+        ++i) {
+      Debug("gc:leaks") << "  " << *i
+                        << " id=" << (*i)->d_id
+                        << " rc=" << (*i)->d_rc
+                        << " " << **i << endl;
+    }
+    Debug("gc:leaks") << ":end:" << endl;
+  }
+
+  // defensive coding, in case destruction-order issues pop up (they often do)
+  delete d_statisticsRegistry;
+  d_statisticsRegistry = NULL;
+  delete d_registrations;
+  d_registrations = NULL;
+  delete d_resourceManager;
+  d_resourceManager = NULL;
+  delete d_attrManager;
+  d_attrManager = NULL;
+  delete d_options;
+  d_options = NULL;
+}
+
+unsigned NodeManager::registerDatatype(Datatype* dt) {
+  unsigned sz = d_ownedDatatypes.size();
+  d_ownedDatatypes.push_back( dt );
+  return sz;
+}
+
+const Datatype & NodeManager::getDatatypeForIndex( unsigned index ) const{
+  Assert( index<d_ownedDatatypes.size() );
+  return *d_ownedDatatypes[index];
+}
+
+void NodeManager::reclaimZombies() {
+  // FIXME multithreading
+  Assert(!d_attrManager->inGarbageCollection());
+
+  Debug("gc") << "reclaiming " << d_zombies.size() << " zombie(s)!\n";
+
+  // during reclamation, reclaimZombies() is never supposed to be called
+  Assert(! d_inReclaimZombies, "NodeManager::reclaimZombies() not re-entrant!");
+
+  // whether exit is normal or exceptional, the Reclaim dtor is called
+  // and ensures that d_inReclaimZombies is set back to false.
+  ScopedBool r(d_inReclaimZombies);
+
+  // We copy the set away and clear the NodeManager's set of zombies.
+  // This is because reclaimZombie() decrements the RC of the
+  // NodeValue's children, which may (recursively) reclaim them.
+  //
+  // Let's say we're reclaiming zombie NodeValue "A" and its child "B"
+  // then becomes a zombie (NodeManager::markForDeletion(B) is called).
+  //
+  // One way to handle B's zombification would be simply to put it
+  // into d_zombies.  This is what we do.  However, if we were to
+  // concurrently process d_zombies in the loop below, such addition
+  // may be invisible to us (B is leaked) or even invalidate our
+  // iterator, causing a crash.  So we need to copy the set away.
+
+  vector<NodeValue*> zombies;
+  zombies.reserve(d_zombies.size());
+  remove_copy_if(d_zombies.begin(),
+                 d_zombies.end(),
+                 back_inserter(zombies),
+                 NodeValueReferenceCountNonZero());
+  d_zombies.clear();
+
+#ifdef _LIBCPP_VERSION
+  NodeValue* last = NULL;
+#endif
+  for(vector<NodeValue*>::iterator i = zombies.begin();
+      i != zombies.end();
+      ++i) {
+    NodeValue* nv = *i;
+#ifdef _LIBCPP_VERSION
+    // Work around an apparent bug in libc++'s hash_set<> which can
+    // (very occasionally) have an element repeated.
+    if(nv == last) {
+      continue;
+    }
+    last = nv;
+#endif
+
+    // collect ONLY IF still zero
+    if(nv->d_rc == 0) {
+      if(Debug.isOn("gc")) {
+        Debug("gc") << "deleting node value " << nv
+                    << " [" << nv->d_id << "]: ";
+        nv->printAst(Debug("gc"));
+        Debug("gc") << endl;
+      }
+
+      // remove from the pool
+      kind::MetaKind mk = nv->getMetaKind();
+      if(mk != kind::metakind::VARIABLE) {
+        poolRemove(nv);
+      }
+
+      // whether exit is normal or exceptional, the NVReclaim dtor is
+      // called and ensures that d_nodeUnderDeletion is set back to
+      // NULL.
+      NVReclaim rc(d_nodeUnderDeletion);
+      d_nodeUnderDeletion = nv;
+
+      // remove attributes
+      { // notify listeners of deleted node
+        TNode n;
+        n.d_nv = nv;
+        nv->d_rc = 1; // so that TNode doesn't assert-fail
+        for(vector<NodeManagerListener*>::iterator i = d_listeners.begin(); i != d_listeners.end(); ++i) {
+          (*i)->nmNotifyDeleteNode(n);
+        }
+        // this would mean that one of the listeners stowed away
+        // a reference to this node!
+        Assert(nv->d_rc == 1);
+      }
+      nv->d_rc = 0;
+      d_attrManager->deleteAllAttributes(nv);
+
+      // decr ref counts of children
+      nv->decrRefCounts();
+      if(mk == kind::metakind::CONSTANT) {
+        // Destroy (call the destructor for) the C++ type representing
+        // the constant in this NodeValue.  This is needed for
+        // e.g. CVC4::Rational, since it has a gmp internal
+        // representation that mallocs memory and should be cleaned
+        // up.  (This won't delete a pointer value if used as a
+        // constant, but then, you should probably use a smart-pointer
+        // type for a constant payload.)
+        kind::metakind::deleteNodeValueConstant(nv);
+      }
+      free(nv);
+    }
+  }
+}/* NodeManager::reclaimZombies() */
+
+std::vector<NodeValue*> NodeManager::TopologicalSort(
+    const std::vector<NodeValue*>& roots) {
+  std::vector<NodeValue*> order;
+  std::vector<std::pair<bool, NodeValue*> > stack;
+  NodeValueIDSet visited;
+  const NodeValueIDSet root_set(roots.begin(), roots.end());
+
+  for (size_t index = 0; index < roots.size(); index++) {
+    NodeValue* root = roots[index];
+    if (visited.find(root) == visited.end()) {
+      stack.push_back(std::make_pair(false, root));
+    }
+    while (!stack.empty()) {
+      NodeValue* current = stack.back().second;
+      const bool visited_children = stack.back().first;
+      Debug("gc") << "Topological sort " << current << " " << visited_children
+                  << std::endl;
+      if (visited_children) {
+        if (root_set.find(current) != root_set.end()) {
+          order.push_back(current);
+        }
+        stack.pop_back();
+      } else {
+        stack.back().first = true;
+        Assert(visited.count(current) == 0);
+        visited.insert(current);
+        for (unsigned i = 0; i < current->getNumChildren(); ++i) {
+          expr::NodeValue* child = current->getChild(i);
+          if (visited.find(child) == visited.end()) {
+            stack.push_back(std::make_pair(false, child));
+          }
+        }
+      }
+    }
+  }
+  Assert(order.size() == roots.size());
+  return order;
+} /* NodeManager::TopologicalSort() */
+
+TypeNode NodeManager::getType(TNode n, bool check)
+  throw(TypeCheckingExceptionPrivate, AssertionException) {
+
+  // Many theories' type checkers call Node::getType() directly.  This
+  // is incorrect, since "this" might not be the caller's curent node
+  // manager.  Rather than force the individual typecheckers not to do
+  // this (by policy, which would be imperfect and lead to
+  // hard-to-find bugs, which it has in the past), we just set this
+  // node manager to be current for the duration of this check.
+  //
+  NodeManagerScope nms(this);
+
+  TypeNode typeNode;
+  bool hasType = getAttribute(n, TypeAttr(), typeNode);
+  bool needsCheck = check && !getAttribute(n, TypeCheckedAttr());
+
+  Debug("getType") << "getting type for " << n << endl;
+
+  if(needsCheck && !(*d_options)[options::earlyTypeChecking]) {
+    /* Iterate and compute the children bottom up. This avoids stack
+       overflows in computeType() when the Node graph is really deep,
+       which should only affect us when we're type checking lazily. */
+    stack<TNode> worklist;
+    worklist.push(n);
+
+    while( !worklist.empty() ) {
+      TNode m = worklist.top();
+
+      bool readyToCompute = true;
+
+      for( TNode::iterator it = m.begin(), end = m.end();
+           it != end;
+           ++it ) {
+        if( !hasAttribute(*it, TypeAttr())
+            || (check && !getAttribute(*it, TypeCheckedAttr())) ) {
+          readyToCompute = false;
+          worklist.push(*it);
+        }
+      }
+
+      if( readyToCompute ) {
+        /* All the children have types, time to compute */
+        typeNode = TypeChecker::computeType(this, m, check);
+        worklist.pop();
+      }
+    } // end while
+
+    /* Last type computed in loop should be the type of n */
+    Assert( typeNode == getAttribute(n, TypeAttr()) );
+  } else if( !hasType || needsCheck ) {
+    /* We can compute the type top-down, without worrying about
+       deep recursion. */
+    typeNode = TypeChecker::computeType(this, n, check);
+  }
+
+  /* The type should be have been computed and stored. */
+  Assert( hasAttribute(n, TypeAttr()) );
+  /* The check should have happened, if we asked for it. */
+  Assert( !check || getAttribute(n, TypeCheckedAttr()) );
+
+  Debug("getType") << "type of " << n << " is " << typeNode << endl;
+  return typeNode;
+}
+
+Node NodeManager::mkSkolem(const std::string& prefix, const TypeNode& type, const std::string& comment, int flags) {
+  Node n = NodeBuilder<0>(this, kind::SKOLEM);
+  setAttribute(n, TypeAttr(), type);
+  setAttribute(n, TypeCheckedAttr(), true);
+  if((flags & SKOLEM_EXACT_NAME) == 0) {
+    stringstream name;
+    name << prefix << '_' << ++d_skolemCounter;
+    setAttribute(n, expr::VarNameAttr(), name.str());
+  } else {
+    setAttribute(n, expr::VarNameAttr(), prefix);
+  }
+  if((flags & SKOLEM_NO_NOTIFY) == 0) {
+    for(vector<NodeManagerListener*>::iterator i = d_listeners.begin(); i != d_listeners.end(); ++i) {
+      (*i)->nmNotifyNewSkolem(n, comment, (flags & SKOLEM_IS_GLOBAL) == SKOLEM_IS_GLOBAL);
+    }
+  }
+  return n;
+}
+
+TypeNode NodeManager::mkConstructorType(const DatatypeConstructor& constructor,
+                                        TypeNode range) {
+  vector<TypeNode> sorts;
+  Debug("datatypes") << "ctor name: " << constructor.getName() << endl;
+  for(DatatypeConstructor::const_iterator i = constructor.begin();
+      i != constructor.end();
+      ++i) {
+    TypeNode selectorType = *(*i).getSelector().getType().d_typeNode;
+    Debug("datatypes") << selectorType << endl;
+    TypeNode sort = selectorType[1];
+
+    // should be guaranteed here already, but just in case
+    Assert(!sort.isFunctionLike());
+
+    Debug("datatypes") << "ctor sort: " << sort << endl;
+    sorts.push_back(sort);
+  }
+  Debug("datatypes") << "ctor range: " << range << endl;
+  PrettyCheckArgument(!range.isFunctionLike(), range,
+                      "cannot create higher-order function types");
+  sorts.push_back(range);
+  return mkTypeNode(kind::CONSTRUCTOR_TYPE, sorts);
+}
+
+TypeNode NodeManager::mkPredicateSubtype(Expr lambda)
+  throw(TypeCheckingExceptionPrivate) {
+
+  Node lambdan = Node::fromExpr(lambda);
+
+  if(lambda.isNull()) {
+    throw TypeCheckingExceptionPrivate(lambdan, "cannot make a predicate subtype based on null expression");
+  }
+
+  TypeNode tn = lambdan.getType();
+  if(! tn.isPredicateLike() ||
+     tn.getArgTypes().size() != 1) {
+    stringstream ss;
+    ss << "expected a predicate of one argument to define predicate subtype, but got type `" << tn << "'";
+    throw TypeCheckingExceptionPrivate(lambdan, ss.str());
+  }
+
+  return TypeNode(mkTypeConst(Predicate(lambda)));
+}
+
+TypeNode NodeManager::mkPredicateSubtype(Expr lambda, Expr witness)
+  throw(TypeCheckingExceptionPrivate) {
+
+  Node lambdan = Node::fromExpr(lambda);
+
+  if(lambda.isNull()) {
+    throw TypeCheckingExceptionPrivate(lambdan, "cannot make a predicate subtype based on null expression");
+  }
+
+  TypeNode tn = lambdan.getType();
+  if(! tn.isPredicateLike() ||
+     tn.getArgTypes().size() != 1) {
+    stringstream ss;
+    ss << "expected a predicate of one argument to define predicate subtype, but got type `" << tn << "'";
+    throw TypeCheckingExceptionPrivate(lambdan, ss.str());
+  }
+
+  return TypeNode(mkTypeConst(Predicate(lambda, witness)));
+}
+
+TypeNode NodeManager::mkSubrangeType(const SubrangeBounds& bounds)
+  throw(TypeCheckingExceptionPrivate) {
+  return TypeNode(mkTypeConst(bounds));
+}
+
+TypeNode NodeManager::TupleTypeCache::getTupleType( NodeManager * nm, std::vector< TypeNode >& types, unsigned index ) {
+  if( index==types.size() ){
+    if( d_data.isNull() ){
+      std::stringstream sst;
+      sst << "__cvc4_tuple";
+      for (unsigned i = 0; i < types.size(); ++ i) {
+        sst << "_" << types[i];
+      }
+      Datatype dt(sst.str());
+      dt.setTuple();
+      std::stringstream ssc;
+      ssc << sst.str() << "_ctor";
+      DatatypeConstructor c(ssc.str());
+      for (unsigned i = 0; i < types.size(); ++ i) {
+        std::stringstream ss;
+        ss << sst.str() << "_stor_" << i;
+        c.addArg(ss.str().c_str(), types[i].toType());
+      }
+      dt.addConstructor(c);
+      d_data = TypeNode::fromType(nm->toExprManager()->mkDatatypeType(dt));
+      Debug("tuprec-debug") << "Return type : " << d_data << std::endl;
+    }
+    return d_data;
+  }else{
+    return d_children[types[index]].getTupleType( nm, types, index+1 );
+  }
+}
+
+TypeNode NodeManager::RecTypeCache::getRecordType( NodeManager * nm, const Record& rec, unsigned index ) {
+  if( index==rec.getNumFields() ){
+    if( d_data.isNull() ){
+      const Record::FieldVector& fields = rec.getFields();
+      std::stringstream sst;
+      sst << "__cvc4_record";
+      for(Record::FieldVector::const_iterator i = fields.begin(); i != fields.end(); ++i) {
+        sst << "_" << (*i).first << "_" << (*i).second;
+      }
+      Datatype dt(sst.str());
+      dt.setRecord();
+      std::stringstream ssc;
+      ssc << sst.str() << "_ctor";
+      DatatypeConstructor c(ssc.str());
+      for(Record::FieldVector::const_iterator i = fields.begin(); i != fields.end(); ++i) {
+        c.addArg((*i).first, (*i).second);
+      }
+      dt.addConstructor(c);
+      d_data = TypeNode::fromType(nm->toExprManager()->mkDatatypeType(dt));
+      Debug("tuprec-debug") << "Return type : " << d_data << std::endl;
+    }
+    return d_data;
+  }else{
+    return d_children[TypeNode::fromType( rec[index].second )][rec[index].first].getRecordType( nm, rec, index+1 );
+  }
+}
+
+TypeNode NodeManager::mkTupleType(const std::vector<TypeNode>& types) {
+  std::vector< TypeNode > ts;
+  Debug("tuprec-debug") << "Make tuple type : ";
+  for (unsigned i = 0; i < types.size(); ++ i) {
+    CheckArgument(!types[i].isFunctionLike(), types, "cannot put function-like types in tuples");
+    ts.push_back( types[i] );
+    Debug("tuprec-debug") << types[i] << " ";
+  }
+  Debug("tuprec-debug") << std::endl;
+  return d_tt_cache.getTupleType( this, ts );
+}
+
+TypeNode NodeManager::mkRecordType(const Record& rec) {
+  return d_rt_cache.getRecordType( this, rec );
+}
+
+void NodeManager::reclaimAllZombies(){
+  reclaimZombiesUntil(0u);
+}
+
+/** Reclaim zombies while there are more than k nodes in the pool (if possible).*/
+void NodeManager::reclaimZombiesUntil(uint32_t k){
+  if(safeToReclaimZombies()){
+    while(poolSize() >= k && !d_zombies.empty()){
+      reclaimZombies();
+    }
+  }
+}
+
+size_t NodeManager::poolSize() const{
+  return d_nodeValuePool.size();
+}
+
+TypeNode NodeManager::mkSort(uint32_t flags) {
+  NodeBuilder<1> nb(this, kind::SORT_TYPE);
+  Node sortTag = NodeBuilder<0>(this, kind::SORT_TAG);
+  nb << sortTag;
+  TypeNode tn = nb.constructTypeNode();
+  for(std::vector<NodeManagerListener*>::iterator i = d_listeners.begin(); i != d_listeners.end(); ++i) {
+    (*i)->nmNotifyNewSort(tn, flags);
+  }
+  return tn;
+}
+
+TypeNode NodeManager::mkSort(const std::string& name, uint32_t flags) {
+  NodeBuilder<1> nb(this, kind::SORT_TYPE);
+  Node sortTag = NodeBuilder<0>(this, kind::SORT_TAG);
+  nb << sortTag;
+  TypeNode tn = nb.constructTypeNode();
+  setAttribute(tn, expr::VarNameAttr(), name);
+  for(std::vector<NodeManagerListener*>::iterator i = d_listeners.begin(); i != d_listeners.end(); ++i) {
+    (*i)->nmNotifyNewSort(tn, flags);
+  }
+  return tn;
+}
+
+TypeNode NodeManager::mkSort(TypeNode constructor,
+                                    const std::vector<TypeNode>& children,
+                                    uint32_t flags) {
+  Assert(constructor.getKind() == kind::SORT_TYPE &&
+         constructor.getNumChildren() == 0,
+         "expected a sort constructor");
+  Assert(children.size() > 0, "expected non-zero # of children");
+  Assert( hasAttribute(constructor.d_nv, expr::SortArityAttr()) &&
+          hasAttribute(constructor.d_nv, expr::VarNameAttr()),
+          "expected a sort constructor" );
+  std::string name = getAttribute(constructor.d_nv, expr::VarNameAttr());
+  Assert(getAttribute(constructor.d_nv, expr::SortArityAttr()) == children.size(),
+         "arity mismatch in application of sort constructor");
+  NodeBuilder<> nb(this, kind::SORT_TYPE);
+  Node sortTag = Node(constructor.d_nv->d_children[0]);
+  nb << sortTag;
+  nb.append(children);
+  TypeNode type = nb.constructTypeNode();
+  setAttribute(type, expr::VarNameAttr(), name);
+  for(std::vector<NodeManagerListener*>::iterator i = d_listeners.begin(); i != d_listeners.end(); ++i) {
+    (*i)->nmNotifyInstantiateSortConstructor(constructor, type, flags);
+  }
+  return type;
+}
+
+TypeNode NodeManager::mkSortConstructor(const std::string& name,
+                                        size_t arity) {
+  Assert(arity > 0);
+  NodeBuilder<> nb(this, kind::SORT_TYPE);
+  Node sortTag = NodeBuilder<0>(this, kind::SORT_TAG);
+  nb << sortTag;
+  TypeNode type = nb.constructTypeNode();
+  setAttribute(type, expr::VarNameAttr(), name);
+  setAttribute(type, expr::SortArityAttr(), arity);
+  for(std::vector<NodeManagerListener*>::iterator i = d_listeners.begin(); i != d_listeners.end(); ++i) {
+    (*i)->nmNotifyNewSortConstructor(type);
+  }
+  return type;
+}
+
+Node NodeManager::mkVar(const std::string& name, const TypeNode& type, uint32_t flags) {
+  Node n = NodeBuilder<0>(this, kind::VARIABLE);
+  setAttribute(n, TypeAttr(), type);
+  setAttribute(n, TypeCheckedAttr(), true);
+  setAttribute(n, expr::VarNameAttr(), name);
+  setAttribute(n, expr::GlobalVarAttr(), flags & ExprManager::VAR_FLAG_GLOBAL);
+  for(std::vector<NodeManagerListener*>::iterator i = d_listeners.begin(); i != d_listeners.end(); ++i) {
+    (*i)->nmNotifyNewVar(n, flags);
+  }
+  return n;
+}
+
+Node* NodeManager::mkVarPtr(const std::string& name,
+                            const TypeNode& type, uint32_t flags) {
+  Node* n = NodeBuilder<0>(this, kind::VARIABLE).constructNodePtr();
+  setAttribute(*n, TypeAttr(), type);
+  setAttribute(*n, TypeCheckedAttr(), true);
+  setAttribute(*n, expr::VarNameAttr(), name);
+  setAttribute(*n, expr::GlobalVarAttr(), flags & ExprManager::VAR_FLAG_GLOBAL);
+  for(std::vector<NodeManagerListener*>::iterator i = d_listeners.begin(); i != d_listeners.end(); ++i) {
+    (*i)->nmNotifyNewVar(*n, flags);
+  }
+  return n;
+}
+
+Node NodeManager::mkBoundVar(const std::string& name, const TypeNode& type) {
+  Node n = mkBoundVar(type);
+  setAttribute(n, expr::VarNameAttr(), name);
+  return n;
+}
+
+Node* NodeManager::mkBoundVarPtr(const std::string& name,
+                                 const TypeNode& type) {
+  Node* n = mkBoundVarPtr(type);
+  setAttribute(*n, expr::VarNameAttr(), name);
+  return n;
+}
+
+Node NodeManager::mkVar(const TypeNode& type, uint32_t flags) {
+  Node n = NodeBuilder<0>(this, kind::VARIABLE);
+  setAttribute(n, TypeAttr(), type);
+  setAttribute(n, TypeCheckedAttr(), true);
+  setAttribute(n, expr::GlobalVarAttr(), flags & ExprManager::VAR_FLAG_GLOBAL);
+  for(std::vector<NodeManagerListener*>::iterator i = d_listeners.begin(); i != d_listeners.end(); ++i) {
+    (*i)->nmNotifyNewVar(n, flags);
+  }
+  return n;
+}
+
+Node* NodeManager::mkVarPtr(const TypeNode& type, uint32_t flags) {
+  Node* n = NodeBuilder<0>(this, kind::VARIABLE).constructNodePtr();
+  setAttribute(*n, TypeAttr(), type);
+  setAttribute(*n, TypeCheckedAttr(), true);
+  setAttribute(*n, expr::GlobalVarAttr(), flags & ExprManager::VAR_FLAG_GLOBAL);
+  for(std::vector<NodeManagerListener*>::iterator i = d_listeners.begin(); i != d_listeners.end(); ++i) {
+    (*i)->nmNotifyNewVar(*n, flags);
+  }
+  return n;
+}
+
+Node NodeManager::mkBoundVar(const TypeNode& type) {
+  Node n = NodeBuilder<0>(this, kind::BOUND_VARIABLE);
+  setAttribute(n, TypeAttr(), type);
+  setAttribute(n, TypeCheckedAttr(), true);
+  return n;
+}
+
+Node* NodeManager::mkBoundVarPtr(const TypeNode& type) {
+  Node* n = NodeBuilder<0>(this, kind::BOUND_VARIABLE).constructNodePtr();
+  setAttribute(*n, TypeAttr(), type);
+  setAttribute(*n, TypeCheckedAttr(), true);
+  return n;
+}
+
+Node NodeManager::mkInstConstant(const TypeNode& type) {
+  Node n = NodeBuilder<0>(this, kind::INST_CONSTANT);
+  n.setAttribute(TypeAttr(), type);
+  n.setAttribute(TypeCheckedAttr(), true);
+  return n;
+}
+
+Node NodeManager::mkBooleanTermVariable() {
+  Node n = NodeBuilder<0>(this, kind::BOOLEAN_TERM_VARIABLE);
+  n.setAttribute(TypeAttr(), booleanType());
+  n.setAttribute(TypeCheckedAttr(), true);
+  return n;
+}
+
+Node NodeManager::mkUniqueVar(const TypeNode& type, Kind k) {
+  std::map< TypeNode, Node >::iterator it = d_unique_vars[k].find( type );
+  if( it==d_unique_vars[k].end() ){
+    Node n = NodeBuilder<0>(this, k);
+    n.setAttribute(TypeAttr(), type);
+    n.setAttribute(TypeCheckedAttr(), true);
+    d_unique_vars[k][type] = n;
+    Assert( n.getMetaKind() == kind::metakind::VARIABLE );
+    return n;
+  }else{
+    return it->second;
+  }
+}
+
+Node NodeManager::mkAbstractValue(const TypeNode& type) {
+  Node n = mkConst(AbstractValue(++d_abstractValueCount));
+  n.setAttribute(TypeAttr(), type);
+  n.setAttribute(TypeCheckedAttr(), true);
+  return n;
+}
+
+bool NodeManager::safeToReclaimZombies() const{
+  // FIXME multithreading
+  return !d_inReclaimZombies && !d_attrManager->inGarbageCollection();
+}
+
+void NodeManager::deleteAttributes(const std::vector<const expr::attr::AttributeUniqueId*>& ids){
+  d_attrManager->deleteAttributes(ids);
+}
+
+void NodeManager::debugHook(int debugFlag){
+  // For debugging purposes only, DO NOT CHECK IN ANY CODE!
+}
+
+}/* CVC4 namespace */
diff --git a/src/expr/node_manager.h b/src/expr/node_manager.h
new file mode 100644
index 0000000..d2b45a6
--- /dev/null
+++ b/src/expr/node_manager.h
@@ -0,0 +1,1571 @@
+/*********************                                                        */
+/*! \file node_manager.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Christopher L. Conway, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A manager for Nodes
+ **
+ ** A manager for Nodes.
+ **
+ ** Reviewed by Chris Conway, Apr 5 2010 (bug #65).
+ **/
+
+#include "cvc4_private.h"
+
+/* circular dependency; force node.h first */
+//#include "expr/attribute.h"
+#include "expr/node.h"
+#include "expr/type_node.h"
+#include "expr/expr.h"
+#include "expr/expr_manager.h"
+
+#ifndef __CVC4__NODE_MANAGER_H
+#define __CVC4__NODE_MANAGER_H
+
+#include <vector>
+#include <string>
+#include <ext/hash_set>
+
+#include "base/tls.h"
+#include "expr/kind.h"
+#include "expr/metakind.h"
+#include "expr/node_value.h"
+#include "util/subrange_bound.h"
+#include "options/options.h"
+
+namespace CVC4 {
+
+class StatisticsRegistry;
+class ResourceManager;
+
+namespace expr {
+  namespace attr {
+    class AttributeUniqueId;
+    class AttributeManager;
+  }/* CVC4::expr::attr namespace */
+
+  class TypeChecker;
+}/* CVC4::expr namespace */
+
+/**
+ * An interface that an interested party can implement and then subscribe
+ * to NodeManager events via NodeManager::subscribeEvents(this).
+ */
+class NodeManagerListener {
+ public:
+  virtual ~NodeManagerListener() {}
+  virtual void nmNotifyNewSort(TypeNode tn, uint32_t flags) {}
+  virtual void nmNotifyNewSortConstructor(TypeNode tn) {}
+  virtual void nmNotifyInstantiateSortConstructor(TypeNode ctor, TypeNode sort,
+                                                  uint32_t flags) {}
+  virtual void nmNotifyNewDatatypes(
+      const std::vector<DatatypeType>& datatypes) {}
+  virtual void nmNotifyNewVar(TNode n, uint32_t flags) {}
+  virtual void nmNotifyNewSkolem(TNode n, const std::string& comment,
+                                 uint32_t flags) {}
+  /**
+   * Notify a listener of a Node that's being GCed.  If this function stores a
+   * reference
+   * to the Node somewhere, very bad things will happen.
+   */
+  virtual void nmNotifyDeleteNode(TNode n) {}
+}; /* class NodeManagerListener */
+
+class NodeManager {
+  template <unsigned nchild_thresh> friend class CVC4::NodeBuilder;
+  friend class NodeManagerScope;
+  friend class expr::NodeValue;
+  friend class expr::TypeChecker;
+
+  // friends so they can access mkVar() here, which is private
+  friend Expr ExprManager::mkVar(const std::string&, Type, uint32_t flags);
+  friend Expr ExprManager::mkVar(Type, uint32_t flags);
+
+  // friend so it can access NodeManager's d_listeners and notify clients
+  friend std::vector<DatatypeType> ExprManager::mkMutualDatatypeTypes(std::vector<Datatype>&, std::set<Type>&);
+
+  /** Predicate for use with STL algorithms */
+  struct NodeValueReferenceCountNonZero {
+    bool operator()(expr::NodeValue* nv) { return nv->d_rc > 0; }
+  };
+
+  typedef __gnu_cxx::hash_set<expr::NodeValue*,
+                              expr::NodeValuePoolHashFunction,
+                              expr::NodeValuePoolEq> NodeValuePool;
+  typedef __gnu_cxx::hash_set<expr::NodeValue*,
+                              expr::NodeValueIDHashFunction,
+                              expr::NodeValueIDEquality> NodeValueIDSet;
+
+  static CVC4_THREADLOCAL(NodeManager*) s_current;
+
+  Options* d_options;
+  StatisticsRegistry* d_statisticsRegistry;
+
+  ResourceManager* d_resourceManager;
+
+  /**
+   * A list of registrations on d_options to that call into d_resourceManager.
+   * These must be garbage collected before d_options and d_resourceManager.
+   */
+  ListenerRegistrationList* d_registrations;
+
+  NodeValuePool d_nodeValuePool;
+
+  size_t next_id;
+
+  expr::attr::AttributeManager* d_attrManager;
+
+  /** The associated ExprManager */
+  ExprManager* d_exprManager;
+
+  /**
+   * The node value we're currently freeing.  This unique node value
+   * is permitted to have outstanding TNodes to it (in "soft"
+   * contexts, like as a key in attribute tables), even though
+   * normally it's an error to have a TNode to a node value with a
+   * reference count of 0.  Being "under deletion" also enables
+   * assertions that inc() is not called on it.  (A poorly-behaving
+   * attribute cleanup function could otherwise create a "Node" that
+   * points to the node value that is in the process of being deleted,
+   * springing it back to life.)
+   */
+  expr::NodeValue* d_nodeUnderDeletion;
+
+  /**
+   * True iff we are in reclaimZombies().  This avoids unnecessary
+   * recursion; a NodeValue being deleted might zombify other
+   * NodeValues, but these shouldn't trigger a (recursive) call to
+   * reclaimZombies().
+   */
+  bool d_inReclaimZombies;
+
+  /**
+   * The set of zombie nodes.  We may want to revisit this design, as
+   * we might like to delete nodes in least-recently-used order.  But
+   * we also need to avoid processing a zombie twice.
+   */
+  NodeValueIDSet d_zombies;
+
+  /**
+   * NodeValues with maxed out reference counts. These live as long as the
+   * NodeManager. They have a custom deallocation procedure at the very end.
+   */
+  std::vector<expr::NodeValue*> d_maxedOut;
+
+  /**
+   * A set of operator singletons (w.r.t.  to this NodeManager
+   * instance) for operators.  Conceptually, Nodes with kind, say,
+   * PLUS, are APPLYs of a PLUS operator to arguments.  This array
+   * holds the set of operators for these things.  A PLUS operator is
+   * a Node with kind "BUILTIN", and if you call
+   * plusOperator->getConst<CVC4::Kind>(), you get kind::PLUS back.
+   */
+  Node d_operators[kind::LAST_KIND];
+
+  /** unique vars per (Kind,Type) */
+  std::map< Kind, std::map< TypeNode, Node > > d_unique_vars;
+
+  /**
+   * A list of subscribers for NodeManager events.
+   */
+  std::vector<NodeManagerListener*> d_listeners;
+
+  /** A list of datatypes owned by this node manager. */
+  std::vector<Datatype*> d_ownedDatatypes;
+
+  /**
+   * A map of tuple and record types to their corresponding datatype.
+   */
+  class TupleTypeCache {
+  public:
+    std::map< TypeNode, TupleTypeCache > d_children;
+    TypeNode d_data;
+    TypeNode getTupleType( NodeManager * nm, std::vector< TypeNode >& types, unsigned index = 0 );
+  };
+  class RecTypeCache {
+  public:
+    std::map< TypeNode, std::map< std::string, RecTypeCache > > d_children;
+    TypeNode d_data;
+    TypeNode getRecordType( NodeManager * nm, const Record& rec, unsigned index = 0 );
+  };
+  TupleTypeCache d_tt_cache;
+  RecTypeCache d_rt_cache;
+
+  /**
+   * Keep a count of all abstract values produced by this NodeManager.
+   * Abstract values have a type attribute, so if multiple SmtEngines
+   * are attached to this NodeManager, we don't want their abstract
+   * values to overlap.
+   */
+  unsigned d_abstractValueCount;
+
+  /**
+   * A counter used to produce unique skolem names.
+   *
+   * Note that it is NOT incremented when skolems are created using
+   * SKOLEM_EXACT_NAME, so it is NOT a count of the skolems produced
+   * by this node manager.
+   */
+  unsigned d_skolemCounter;
+
+  /**
+   * Look up a NodeValue in the pool associated to this NodeManager.
+   * The NodeValue argument need not be a "completely-constructed"
+   * NodeValue.  In particular, "non-inlined" constants are permitted
+   * (see below).
+   *
+   * For non-CONSTANT metakinds, nv's d_kind and d_nchildren should be
+   * correctly set, and d_children[0..n-1] should be valid (extant)
+   * NodeValues for lookup.
+   *
+   * For CONSTANT metakinds, nv's d_kind should be set correctly.
+   * Normally a CONSTANT would have d_nchildren == 0 and the constant
+   * value inlined in the d_children space.  However, here we permit
+   * "non-inlined" NodeValues to avoid unnecessary copying.  For
+   * these, d_nchildren == 1, and d_nchildren is a pointer to the
+   * constant value.
+   *
+   * The point of this complex design is to permit efficient lookups
+   * (without fully constructing a NodeValue).  In the case that the
+   * argument is not fully constructed, and this function returns
+   * NULL, the caller should fully construct an equivalent one before
+   * calling poolInsert().  NON-FULLY-CONSTRUCTED NODEVALUES are not
+   * permitted in the pool!
+   */
+  inline expr::NodeValue* poolLookup(expr::NodeValue* nv) const;
+
+  /**
+   * Insert a NodeValue into the NodeManager's pool.
+   *
+   * It is an error to insert a NodeValue already in the pool.
+   * Enquire first with poolLookup().
+   */
+  inline void poolInsert(expr::NodeValue* nv);
+
+  /**
+   * Remove a NodeValue from the NodeManager's pool.
+   *
+   * It is an error to request the removal of a NodeValue from the
+   * pool that is not in the pool.
+   */
+  inline void poolRemove(expr::NodeValue* nv);
+
+  /**
+   * Determine if nv is currently being deleted by the NodeManager.
+   */
+  inline bool isCurrentlyDeleting(const expr::NodeValue* nv) const {
+    return d_nodeUnderDeletion == nv;
+  }
+
+  /**
+   * Register a NodeValue as a zombie.
+   */
+  inline void markForDeletion(expr::NodeValue* nv) {
+    Assert(nv->d_rc == 0);
+
+    // if d_reclaiming is set, make sure we don't call
+    // reclaimZombies(), because it's already running.
+    if(Debug.isOn("gc")) {
+      Debug("gc") << "zombifying node value " << nv
+                  << " [" << nv->d_id << "]: ";
+      nv->printAst(Debug("gc"));
+      Debug("gc") << (d_inReclaimZombies ? " [CURRENTLY-RECLAIMING]" : "")
+                  << std::endl;
+    }
+    d_zombies.insert(nv);  // FIXME multithreading
+
+    if(safeToReclaimZombies()) {
+      if(d_zombies.size() > 5000) {
+        reclaimZombies();
+      }
+    }
+  }
+
+  /**
+   * Register a NodeValue as having a maxed out reference count. This NodeValue
+   * will live as long as its containing NodeManager.
+   */
+  inline void markRefCountMaxedOut(expr::NodeValue* nv) {
+    Assert(nv->HasMaximizedReferenceCount());
+    if(Debug.isOn("gc")) {
+      Debug("gc") << "marking node value " << nv
+                  << " [" << nv->d_id << "]: as maxed out" << std::endl;
+    }
+    d_maxedOut.push_back(nv);
+  }
+
+  /**
+   * Reclaim all zombies.
+   */
+  void reclaimZombies();
+
+  /**
+   * It is safe to collect zombies.
+   */
+  bool safeToReclaimZombies() const;
+
+  /**
+   * Returns a reverse topological sort of a list of NodeValues. The NodeValues
+   * must be valid and have ids. The NodeValues are not modified (including ref
+   * counts).
+   */
+  static std::vector<expr::NodeValue*> TopologicalSort(
+      const std::vector<expr::NodeValue*>& roots);
+
+  /**
+   * This template gives a mechanism to stack-allocate a NodeValue
+   * with enough space for N children (where N is a compile-time
+   * constant).  You use it like this:
+   *
+   *   NVStorage<4> nvStorage;
+   *   NodeValue& nvStack = reinterpret_cast<NodeValue&>(nvStorage);
+   *
+   * ...and then you can use nvStack as a NodeValue that you know has
+   * room for 4 children.
+   */
+  template <size_t N>
+  struct NVStorage {
+    expr::NodeValue nv;
+    expr::NodeValue* child[N];
+  };/* struct NodeManager::NVStorage<N> */
+
+  /* A note on isAtomic() and isAtomicFormula() (in CVC3 parlance)..
+   *
+   * It has been decided for now to hold off on implementations of
+   * these functions, as they may only be needed in CNF conversion,
+   * where it's pointless to do a lazy isAtomic determination by
+   * searching through the DAG, and storing it, since the result will
+   * only be used once.  For more details see the 4/27/2010 CVC4
+   * developer's meeting notes at:
+   *
+   * http://goedel.cims.nyu.edu/wiki/Meeting_Minutes_-_April_27,_2010#isAtomic.28.29_and_isAtomicFormula.28.29
+   */
+  // bool containsDecision(TNode); // is "atomic"
+  // bool properlyContainsDecision(TNode); // all children are atomic
+
+  // undefined private copy constructor (disallow copy)
+  NodeManager(const NodeManager&) CVC4_UNDEFINED;
+
+  NodeManager& operator=(const NodeManager&) CVC4_UNDEFINED;
+
+  void init();
+
+  /**
+   * Create a variable with the given name and type.  NOTE that no
+   * lookup is done on the name.  If you mkVar("a", type) and then
+   * mkVar("a", type) again, you have two variables.  The NodeManager
+   * version of this is private to avoid internal uses of mkVar() from
+   * within CVC4.  Such uses should employ mkSkolem() instead.
+   */
+  Node mkVar(const std::string& name, const TypeNode& type, uint32_t flags = ExprManager::VAR_FLAG_NONE);
+  Node* mkVarPtr(const std::string& name, const TypeNode& type, uint32_t flags = ExprManager::VAR_FLAG_NONE);
+
+  /** Create a variable with the given type. */
+  Node mkVar(const TypeNode& type, uint32_t flags = ExprManager::VAR_FLAG_NONE);
+  Node* mkVarPtr(const TypeNode& type, uint32_t flags = ExprManager::VAR_FLAG_NONE);
+  
+public:
+
+  explicit NodeManager(ExprManager* exprManager);
+  explicit NodeManager(ExprManager* exprManager, const Options& options);
+  ~NodeManager();
+
+  /** The node manager in the current public-facing CVC4 library context */
+  static NodeManager* currentNM() { return s_current; }
+  /** The resource manager associated with the current node manager */
+  static ResourceManager* currentResourceManager() { return s_current->d_resourceManager; }
+
+  /** Get this node manager's options (const version) */
+  const Options& getOptions() const {
+    return *d_options;
+  }
+
+  /** Get this node manager's options (non-const version) */
+  Options& getOptions() {
+    return *d_options;
+  }
+
+  /** Get this node manager's resource manager */
+  ResourceManager* getResourceManager() throw() { return d_resourceManager; }
+
+  /** Get this node manager's statistics registry */
+  StatisticsRegistry* getStatisticsRegistry() const throw() {
+    return d_statisticsRegistry;
+  }
+
+  /** Subscribe to NodeManager events */
+  void subscribeEvents(NodeManagerListener* listener) {
+    Assert(std::find(d_listeners.begin(), d_listeners.end(), listener) == d_listeners.end(), "listener already subscribed");
+    d_listeners.push_back(listener);
+  }
+
+  /** Unsubscribe from NodeManager events */
+  void unsubscribeEvents(NodeManagerListener* listener) {
+    std::vector<NodeManagerListener*>::iterator elt = std::find(d_listeners.begin(), d_listeners.end(), listener);
+    Assert(elt != d_listeners.end(), "listener not subscribed");
+    d_listeners.erase(elt);
+  }
+  
+  /** register datatype */
+  unsigned registerDatatype(Datatype* dt);
+  /** get datatype for index */
+  const Datatype & getDatatypeForIndex( unsigned index ) const;
+
+  /** Get a Kind from an operator expression */
+  static inline Kind operatorToKind(TNode n);
+
+  // general expression-builders
+
+  /** Create a node with one child. */
+  Node mkNode(Kind kind, TNode child1);
+  Node* mkNodePtr(Kind kind, TNode child1);
+
+  /** Create a node with two children. */
+  Node mkNode(Kind kind, TNode child1, TNode child2);
+  Node* mkNodePtr(Kind kind, TNode child1, TNode child2);
+
+  /** Create a node with three children. */
+  Node mkNode(Kind kind, TNode child1, TNode child2, TNode child3);
+  Node* mkNodePtr(Kind kind, TNode child1, TNode child2, TNode child3);
+
+  /** Create a node with four children. */
+  Node mkNode(Kind kind, TNode child1, TNode child2, TNode child3,
+              TNode child4);
+  Node* mkNodePtr(Kind kind, TNode child1, TNode child2, TNode child3,
+              TNode child4);
+
+  /** Create a node with five children. */
+  Node mkNode(Kind kind, TNode child1, TNode child2, TNode child3,
+              TNode child4, TNode child5);
+  Node* mkNodePtr(Kind kind, TNode child1, TNode child2, TNode child3,
+              TNode child4, TNode child5);
+
+  /** Create a node with an arbitrary number of children. */
+  template <bool ref_count>
+  Node mkNode(Kind kind, const std::vector<NodeTemplate<ref_count> >& children);
+  template <bool ref_count>
+  Node* mkNodePtr(Kind kind, const std::vector<NodeTemplate<ref_count> >& children);
+
+  /** Create a node (with no children) by operator. */
+  Node mkNode(TNode opNode);
+  Node* mkNodePtr(TNode opNode);
+
+  /** Create a node with one child by operator. */
+  Node mkNode(TNode opNode, TNode child1);
+  Node* mkNodePtr(TNode opNode, TNode child1);
+
+  /** Create a node with two children by operator. */
+  Node mkNode(TNode opNode, TNode child1, TNode child2);
+  Node* mkNodePtr(TNode opNode, TNode child1, TNode child2);
+
+  /** Create a node with three children by operator. */
+  Node mkNode(TNode opNode, TNode child1, TNode child2, TNode child3);
+  Node* mkNodePtr(TNode opNode, TNode child1, TNode child2, TNode child3);
+
+  /** Create a node with four children by operator. */
+  Node mkNode(TNode opNode, TNode child1, TNode child2, TNode child3,
+              TNode child4);
+  Node* mkNodePtr(TNode opNode, TNode child1, TNode child2, TNode child3,
+              TNode child4);
+
+  /** Create a node with five children by operator. */
+  Node mkNode(TNode opNode, TNode child1, TNode child2, TNode child3,
+              TNode child4, TNode child5);
+  Node* mkNodePtr(TNode opNode, TNode child1, TNode child2, TNode child3,
+              TNode child4, TNode child5);
+
+  /** Create a node by applying an operator to the children. */
+  template <bool ref_count>
+  Node mkNode(TNode opNode, const std::vector<NodeTemplate<ref_count> >& children);
+  template <bool ref_count>
+  Node* mkNodePtr(TNode opNode, const std::vector<NodeTemplate<ref_count> >& children);
+
+  Node mkBoundVar(const std::string& name, const TypeNode& type);
+  Node* mkBoundVarPtr(const std::string& name, const TypeNode& type);
+
+  Node mkBoundVar(const TypeNode& type);
+  Node* mkBoundVarPtr(const TypeNode& type);
+
+  /**
+   * Optional flags used to control behavior of NodeManager::mkSkolem().
+   * They should be composed with a bitwise OR (e.g.,
+   * "SKOLEM_NO_NOTIFY | SKOLEM_EXACT_NAME").  Of course, SKOLEM_DEFAULT
+   * cannot be composed in such a manner.
+   */
+  enum SkolemFlags {
+    SKOLEM_DEFAULT = 0,   /**< default behavior */
+    SKOLEM_NO_NOTIFY = 1, /**< do not notify subscribers */
+    SKOLEM_EXACT_NAME = 2,/**< do not make the name unique by adding the id */
+    SKOLEM_IS_GLOBAL = 4  /**< global vars appear in models even after a pop */
+  };/* enum SkolemFlags */
+
+  /**
+   * Create a skolem constant with the given name, type, and comment.
+   *
+   * @param prefix the name of the new skolem variable is the prefix
+   * appended with a unique ID.  This way a family of skolem variables
+   * can be made with unique identifiers, used in dump, tracing, and
+   * debugging output.  Use SKOLEM_EXECT_NAME flag if you don't want
+   * a unique ID appended and use prefix as the name.
+   *
+   * @param type the type of the skolem variable to create
+   *
+   * @param comment a comment for dumping output; if declarations are
+   * being dumped, this is included in a comment before the declaration
+   * and can be quite useful for debugging
+   *
+   * @param flags an optional mask of bits from SkolemFlags to control
+   * mkSkolem() behavior
+   */
+  Node mkSkolem(const std::string& prefix, const TypeNode& type,
+                const std::string& comment = "", int flags = SKOLEM_DEFAULT);
+
+  /** Create a instantiation constant with the given type. */
+  Node mkInstConstant(const TypeNode& type);
+  
+  /** Create a boolean term variable. */
+  Node mkBooleanTermVariable();
+
+  /** Make a new abstract value with the given type. */
+  Node mkAbstractValue(const TypeNode& type);
+  
+  /** make unique (per Type,Kind) variable. */
+  Node mkUniqueVar(const TypeNode& type, Kind k);
+
+  /**
+   * Create a constant of type T.  It will have the appropriate
+   * CONST_* kind defined for T.
+   */
+  template <class T>
+  Node mkConst(const T&);
+
+  template <class T>
+  TypeNode mkTypeConst(const T&);
+
+  template <class NodeClass, class T>
+  NodeClass mkConstInternal(const T&);
+
+  /** Create a node with children. */
+  TypeNode mkTypeNode(Kind kind, TypeNode child1);
+  TypeNode mkTypeNode(Kind kind, TypeNode child1, TypeNode child2);
+  TypeNode mkTypeNode(Kind kind, TypeNode child1, TypeNode child2,
+                      TypeNode child3);
+  TypeNode mkTypeNode(Kind kind, const std::vector<TypeNode>& children);
+
+  /**
+   * Determine whether Nodes of a particular Kind have operators.
+   * @returns true if Nodes of Kind k have operators.
+   */
+  static inline bool hasOperator(Kind k);
+
+  /**
+   * Get the (singleton) operator of an OPERATOR-kinded kind.  The
+   * returned node n will have kind BUILTIN, and calling
+   * n.getConst<CVC4::Kind>() will yield k.
+   */
+  inline TNode operatorOf(Kind k) {
+    AssertArgument( kind::metaKindOf(k) == kind::metakind::OPERATOR, k,
+                    "Kind is not an OPERATOR-kinded kind "
+                    "in NodeManager::operatorOf()" );
+    return d_operators[k];
+  }
+
+  /**
+   * Retrieve an attribute for a node.
+   *
+   * @param nv the node value
+   * @param attr an instance of the attribute kind to retrieve.
+   * @returns the attribute, if set, or a default-constructed
+   * <code>AttrKind::value_type</code> if not.
+   */
+  template <class AttrKind>
+  inline typename AttrKind::value_type getAttribute(expr::NodeValue* nv,
+                                                    const AttrKind& attr) const;
+
+  /**
+   * Check whether an attribute is set for a node.
+   *
+   * @param nv the node value
+   * @param attr an instance of the attribute kind to check
+   * @returns <code>true</code> iff <code>attr</code> is set for
+   * <code>nv</code>.
+   */
+  template <class AttrKind>
+  inline bool hasAttribute(expr::NodeValue* nv,
+                           const AttrKind& attr) const;
+
+  /**
+   * Check whether an attribute is set for a node, and, if so,
+   * retrieve it.
+   *
+   * @param nv the node value
+   * @param attr an instance of the attribute kind to check
+   * @param value a reference to an object of the attribute's value type.
+   * <code>value</code> will be set to the value of the attribute, if it is
+   * set for <code>nv</code>; otherwise, it will be set to the default
+   * value of the attribute.
+   * @returns <code>true</code> iff <code>attr</code> is set for
+   * <code>nv</code>.
+   */
+  template <class AttrKind>
+  inline bool getAttribute(expr::NodeValue* nv,
+                           const AttrKind& attr,
+                           typename AttrKind::value_type& value) const;
+
+  /**
+   * Set an attribute for a node.  If the node doesn't have the
+   * attribute, this function assigns one.  If the node has one, this
+   * overwrites it.
+   *
+   * @param nv the node value
+   * @param attr an instance of the attribute kind to set
+   * @param value the value of <code>attr</code> for <code>nv</code>
+   */
+  template <class AttrKind>
+  inline void setAttribute(expr::NodeValue* nv,
+                           const AttrKind& attr,
+                           const typename AttrKind::value_type& value);
+
+  /**
+   * Retrieve an attribute for a TNode.
+   *
+   * @param n the node
+   * @param attr an instance of the attribute kind to retrieve.
+   * @returns the attribute, if set, or a default-constructed
+   * <code>AttrKind::value_type</code> if not.
+   */
+  template <class AttrKind>
+  inline typename AttrKind::value_type
+  getAttribute(TNode n, const AttrKind& attr) const;
+
+  /**
+   * Check whether an attribute is set for a TNode.
+   *
+   * @param n the node
+   * @param attr an instance of the attribute kind to check
+   * @returns <code>true</code> iff <code>attr</code> is set for <code>n</code>.
+   */
+  template <class AttrKind>
+  inline bool hasAttribute(TNode n,
+                           const AttrKind& attr) const;
+
+  /**
+   * Check whether an attribute is set for a TNode and, if so, retieve
+   * it.
+   *
+   * @param n the node
+   * @param attr an instance of the attribute kind to check
+   * @param value a reference to an object of the attribute's value type.
+   * <code>value</code> will be set to the value of the attribute, if it is
+   * set for <code>nv</code>; otherwise, it will be set to the default value of
+   * the attribute.
+   * @returns <code>true</code> iff <code>attr</code> is set for <code>n</code>.
+   */
+  template <class AttrKind>
+  inline bool getAttribute(TNode n,
+                           const AttrKind& attr,
+                           typename AttrKind::value_type& value) const;
+
+  /**
+   * Set an attribute for a node.  If the node doesn't have the
+   * attribute, this function assigns one.  If the node has one, this
+   * overwrites it.
+   *
+   * @param n the node
+   * @param attr an instance of the attribute kind to set
+   * @param value the value of <code>attr</code> for <code>n</code>
+   */
+  template <class AttrKind>
+  inline void setAttribute(TNode n,
+                           const AttrKind& attr,
+                           const typename AttrKind::value_type& value);
+
+  /**
+   * Retrieve an attribute for a TypeNode.
+   *
+   * @param n the type node
+   * @param attr an instance of the attribute kind to retrieve.
+   * @returns the attribute, if set, or a default-constructed
+   * <code>AttrKind::value_type</code> if not.
+   */
+  template <class AttrKind>
+  inline typename AttrKind::value_type
+  getAttribute(TypeNode n, const AttrKind& attr) const;
+
+  /**
+   * Check whether an attribute is set for a TypeNode.
+   *
+   * @param n the type node
+   * @param attr an instance of the attribute kind to check
+   * @returns <code>true</code> iff <code>attr</code> is set for <code>n</code>.
+   */
+  template <class AttrKind>
+  inline bool hasAttribute(TypeNode n,
+                           const AttrKind& attr) const;
+
+  /**
+   * Check whether an attribute is set for a TypeNode and, if so, retieve
+   * it.
+   *
+   * @param n the type node
+   * @param attr an instance of the attribute kind to check
+   * @param value a reference to an object of the attribute's value type.
+   * <code>value</code> will be set to the value of the attribute, if it is
+   * set for <code>nv</code>; otherwise, it will be set to the default value of
+   * the attribute.
+   * @returns <code>true</code> iff <code>attr</code> is set for <code>n</code>.
+   */
+  template <class AttrKind>
+  inline bool getAttribute(TypeNode n,
+                           const AttrKind& attr,
+                           typename AttrKind::value_type& value) const;
+
+  /**
+   * Set an attribute for a type node.  If the node doesn't have the
+   * attribute, this function assigns one.  If the type node has one,
+   * this overwrites it.
+   *
+   * @param n the type node
+   * @param attr an instance of the attribute kind to set
+   * @param value the value of <code>attr</code> for <code>n</code>
+   */
+  template <class AttrKind>
+  inline void setAttribute(TypeNode n,
+                           const AttrKind& attr,
+                           const typename AttrKind::value_type& value);
+
+  /** Get the (singleton) type for Booleans. */
+  inline TypeNode booleanType();
+
+  /** Get the (singleton) type for integers. */
+  inline TypeNode integerType();
+
+  /** Get the (singleton) type for reals. */
+  inline TypeNode realType();
+
+  /** Get the (singleton) type for strings. */
+  inline TypeNode stringType();
+
+  /** Get the (singleton) type for RegExp. */
+  inline TypeNode regExpType();
+
+  /** Get the (singleton) type for rounding modes. */
+  inline TypeNode roundingModeType();
+
+  /** Get the bound var list type. */
+  inline TypeNode boundVarListType();
+
+  /** Get the instantiation pattern type. */
+  inline TypeNode instPatternType();
+
+  /** Get the instantiation pattern type. */
+  inline TypeNode instPatternListType();
+
+  /**
+   * Get the (singleton) type for builtin operators (that is, the type
+   * of the Node returned from Node::getOperator() when the operator
+   * is built-in, like EQUAL). */
+  inline TypeNode builtinOperatorType();
+
+  /**
+   * Make a function type from domain to range.
+   *
+   * @param domain the domain type
+   * @param range the range type
+   * @returns the functional type domain -> range
+   */
+  inline TypeNode mkFunctionType(const TypeNode& domain, const TypeNode& range);
+
+  /**
+   * Make a function type with input types from
+   * argTypes. <code>argTypes</code> must have at least one element.
+   *
+   * @param argTypes the domain is a tuple (argTypes[0], ..., argTypes[n])
+   * @param range the range type
+   * @returns the functional type (argTypes[0], ..., argTypes[n]) -> range
+   */
+  inline TypeNode mkFunctionType(const std::vector<TypeNode>& argTypes,
+                                 const TypeNode& range);
+
+  /**
+   * Make a function type with input types from
+   * <code>sorts[0..sorts.size()-2]</code> and result type
+   * <code>sorts[sorts.size()-1]</code>. <code>sorts</code> must have
+   * at least 2 elements.
+   */
+  inline TypeNode mkFunctionType(const std::vector<TypeNode>& sorts);
+
+  /**
+   * Make a predicate type with input types from
+   * <code>sorts</code>. The result with be a function type with range
+   * <code>BOOLEAN</code>. <code>sorts</code> must have at least one
+   * element.
+   */
+  inline TypeNode mkPredicateType(const std::vector<TypeNode>& sorts);
+
+  /**
+   * Make a tuple type with types from
+   * <code>types</code>. <code>types</code> must have at least one
+   * element.
+   *
+   * @param types a vector of types
+   * @returns the tuple type (types[0], ..., types[n])
+   */
+  TypeNode mkTupleType(const std::vector<TypeNode>& types);
+
+  /**
+   * Make a record type with the description from rec.
+   *
+   * @param rec a description of the record
+   * @returns the record type
+   */
+  TypeNode mkRecordType(const Record& rec);
+
+  /**
+   * Make a symbolic expression type with types from
+   * <code>types</code>. <code>types</code> may have any number of
+   * elements.
+   *
+   * @param types a vector of types
+   * @returns the symbolic expression type (types[0], ..., types[n])
+   */
+  inline TypeNode mkSExprType(const std::vector<TypeNode>& types);
+
+  /** Make the type of floating-point with <code>exp</code> bit exponent and
+      <code>sig</code> bit significand */
+  inline TypeNode mkFloatingPointType(unsigned exp, unsigned sig);  
+  inline TypeNode mkFloatingPointType(FloatingPointSize fs);
+
+  /** Make the type of bitvectors of size <code>size</code> */
+  inline TypeNode mkBitVectorType(unsigned size);
+
+  /** Make the type of arrays with the given parameterization */
+  inline TypeNode mkArrayType(TypeNode indexType, TypeNode constituentType);
+
+  /** Make the type of arrays with the given parameterization */
+  inline TypeNode mkSetType(TypeNode elementType);
+
+  /** Make a type representing a constructor with the given parameterization */
+  TypeNode mkConstructorType(const DatatypeConstructor& constructor, TypeNode range);
+
+  /** Make a type representing a selector with the given parameterization */
+  inline TypeNode mkSelectorType(TypeNode domain, TypeNode range);
+
+  /** Make a type representing a tester with given parameterization */
+  inline TypeNode mkTesterType(TypeNode domain);
+
+  /** Make a new (anonymous) sort of arity 0. */
+  TypeNode mkSort(uint32_t flags = ExprManager::SORT_FLAG_NONE);
+
+  /** Make a new sort with the given name of arity 0. */
+  TypeNode mkSort(const std::string& name, uint32_t flags = ExprManager::SORT_FLAG_NONE);
+
+  /** Make a new sort by parameterizing the given sort constructor. */
+  TypeNode mkSort(TypeNode constructor,
+                  const std::vector<TypeNode>& children,
+                  uint32_t flags = ExprManager::SORT_FLAG_NONE);
+
+  /** Make a new sort with the given name and arity. */
+  TypeNode mkSortConstructor(const std::string& name, size_t arity);
+
+  /**
+   * Make a predicate subtype type defined by the given LAMBDA
+   * expression.  A TypeCheckingExceptionPrivate can be thrown if
+   * lambda is not a LAMBDA, or is ill-typed, or if CVC4 fails at
+   * proving that the resulting predicate subtype is inhabited.
+   */
+  TypeNode mkPredicateSubtype(Expr lambda)
+    throw(TypeCheckingExceptionPrivate);
+
+  /**
+   * Make a predicate subtype type defined by the given LAMBDA
+   * expression and whose non-emptiness is witnessed by the given
+   * witness.  A TypeCheckingExceptionPrivate can be thrown if lambda
+   * is not a LAMBDA, or is ill-typed, or if the witness is not a
+   * witness or ill-typed.
+   */
+  TypeNode mkPredicateSubtype(Expr lambda, Expr witness)
+    throw(TypeCheckingExceptionPrivate);
+
+  /**
+   * Make an integer subrange type as defined by the argument.
+   */
+  TypeNode mkSubrangeType(const SubrangeBounds& bounds)
+    throw(TypeCheckingExceptionPrivate);
+
+  /**
+   * Get the type for the given node and optionally do type checking.
+   *
+   * Initial type computation will be near-constant time if
+   * type checking is not requested. Results are memoized, so that
+   * subsequent calls to getType() without type checking will be
+   * constant time.
+   *
+   * Initial type checking is linear in the size of the expression.
+   * Again, the results are memoized, so that subsequent calls to
+   * getType(), with or without type checking, will be constant
+   * time.
+   *
+   * NOTE: A TypeCheckingException can be thrown even when type
+   * checking is not requested. getType() will always return a
+   * valid and correct type and, thus, an exception will be thrown
+   * when no valid or correct type can be computed (e.g., if the
+   * arguments to a bit-vector operation aren't bit-vectors). When
+   * type checking is not requested, getType() will do the minimum
+   * amount of checking required to return a valid result.
+   *
+   * @param n the Node for which we want a type
+   * @param check whether we should check the type as we compute it
+   * (default: false)
+   */
+  TypeNode getType(TNode n, bool check = false)
+    throw(TypeCheckingExceptionPrivate, AssertionException);
+
+  /**
+   * Convert a node to an expression.  Uses the ExprManager
+   * associated to this NodeManager.
+   */
+  inline Expr toExpr(TNode n);
+
+  /**
+   * Convert an expression to a node.
+   */
+  static inline Node fromExpr(const Expr& e);
+
+  /**
+   * Convert a node manager to an expression manager.
+   */
+  inline ExprManager* toExprManager();
+
+  /**
+   * Convert an expression manager to a node manager.
+   */
+  static inline NodeManager* fromExprManager(ExprManager* exprManager);
+
+  /**
+   * Convert a type node to a type.
+   */
+  inline Type toType(TypeNode tn);
+
+  /**
+   * Convert a type to a type node.
+   */
+  static inline TypeNode fromType(Type t);
+
+  /** Reclaim zombies while there are more than k nodes in the pool (if possible).*/
+  void reclaimZombiesUntil(uint32_t k);
+
+  /** Reclaims all zombies (if possible).*/
+  void reclaimAllZombies();
+
+  /** Size of the node pool. */
+  size_t poolSize() const;
+
+  /** Deletes a list of attributes from the NM's AttributeManager.*/
+  void deleteAttributes(const std::vector< const expr::attr::AttributeUniqueId* >& ids);
+
+  /**
+   * This function gives developers a hook into the NodeManager.
+   * This can be changed in node_manager.cpp without recompiling most of cvc4.
+   *
+   * debugHook is a debugging only function, and should not be present in
+   * any published code!
+   */
+  void debugHook(int debugFlag);
+};/* class NodeManager */
+
+/**
+ * This class changes the "current" thread-global
+ * <code>NodeManager</code> when it is created and reinstates the
+ * previous thread-global <code>NodeManager</code> when it is
+ * destroyed, effectively maintaining a set of nested
+ * <code>NodeManager</code> scopes.  This is especially useful on
+ * public-interface calls into the CVC4 library, where CVC4's notion
+ * of the "current" <code>NodeManager</code> should be set to match
+ * the calling context.  See, for example, the implementations of
+ * public calls in the <code>ExprManager</code> and
+ * <code>SmtEngine</code> classes.
+ *
+ * The client must be careful to create and destroy
+ * <code>NodeManagerScope</code> objects in a well-nested manner (such
+ * as on the stack). You may create a <code>NodeManagerScope</code>
+ * with <code>new</code> and destroy it with <code>delete</code>, or
+ * place it as a data member of an object that is, but if the scope of
+ * these <code>new</code>/<code>delete</code> pairs isn't properly
+ * maintained, the incorrect "current" <code>NodeManager</code>
+ * pointer may be restored after a delete.
+ */
+class NodeManagerScope {
+  /** The old NodeManager, to be restored on destruction. */
+  NodeManager* d_oldNodeManager;
+  Options::OptionsScope d_optionsScope;
+public:
+
+  NodeManagerScope(NodeManager* nm)
+      : d_oldNodeManager(NodeManager::s_current)
+      , d_optionsScope(nm ? nm->d_options : NULL) {
+    // There are corner cases where nm can be NULL and it's ok.
+    // For example, if you write { Expr e; }, then when the null
+    // Expr is destructed, there's no active node manager.
+    //Assert(nm != NULL);
+    NodeManager::s_current = nm;
+    //Options::s_current = nm ? nm->d_options : NULL;
+    Debug("current") << "node manager scope: "
+                     << NodeManager::s_current << "\n";
+  }
+
+  ~NodeManagerScope() {
+    NodeManager::s_current = d_oldNodeManager;
+    //Options::s_current = d_oldNodeManager ? d_oldNodeManager->d_options : NULL;
+    Debug("current") << "node manager scope: "
+                     << "returning to " << NodeManager::s_current << "\n";
+  }
+};/* class NodeManagerScope */
+
+/** Get the (singleton) type for booleans. */
+inline TypeNode NodeManager::booleanType() {
+  return TypeNode(mkTypeConst<TypeConstant>(BOOLEAN_TYPE));
+}
+
+/** Get the (singleton) type for integers. */
+inline TypeNode NodeManager::integerType() {
+  return TypeNode(mkTypeConst<TypeConstant>(INTEGER_TYPE));
+}
+
+/** Get the (singleton) type for reals. */
+inline TypeNode NodeManager::realType() {
+  return TypeNode(mkTypeConst<TypeConstant>(REAL_TYPE));
+}
+
+/** Get the (singleton) type for strings. */
+inline TypeNode NodeManager::stringType() {
+  return TypeNode(mkTypeConst<TypeConstant>(STRING_TYPE));
+}
+
+/** Get the (singleton) type for regexps. */
+inline TypeNode NodeManager::regExpType() {
+  return TypeNode(mkTypeConst<TypeConstant>(REGEXP_TYPE));
+}
+
+/** Get the (singleton) type for rounding modes. */
+inline TypeNode NodeManager::roundingModeType() {
+  return TypeNode(mkTypeConst<TypeConstant>(ROUNDINGMODE_TYPE));
+}
+
+/** Get the bound var list type. */
+inline TypeNode NodeManager::boundVarListType() {
+  return TypeNode(mkTypeConst<TypeConstant>(BOUND_VAR_LIST_TYPE));
+}
+
+/** Get the instantiation pattern type. */
+inline TypeNode NodeManager::instPatternType() {
+  return TypeNode(mkTypeConst<TypeConstant>(INST_PATTERN_TYPE));
+}
+
+/** Get the instantiation pattern type. */
+inline TypeNode NodeManager::instPatternListType() {
+  return TypeNode(mkTypeConst<TypeConstant>(INST_PATTERN_LIST_TYPE));
+}
+
+/** Get the (singleton) type for builtin operators. */
+inline TypeNode NodeManager::builtinOperatorType() {
+  return TypeNode(mkTypeConst<TypeConstant>(BUILTIN_OPERATOR_TYPE));
+}
+
+/** Make a function type from domain to range. */
+inline TypeNode NodeManager::mkFunctionType(const TypeNode& domain, const TypeNode& range) {
+  std::vector<TypeNode> sorts;
+  sorts.push_back(domain);
+  sorts.push_back(range);
+  return mkFunctionType(sorts);
+}
+
+inline TypeNode NodeManager::mkFunctionType(const std::vector<TypeNode>& argTypes, const TypeNode& range) {
+  Assert(argTypes.size() >= 1);
+  std::vector<TypeNode> sorts(argTypes);
+  sorts.push_back(range);
+  return mkFunctionType(sorts);
+}
+
+inline TypeNode
+NodeManager::mkFunctionType(const std::vector<TypeNode>& sorts) {
+  Assert(sorts.size() >= 2);
+  std::vector<TypeNode> sortNodes;
+  for (unsigned i = 0; i < sorts.size(); ++ i) {
+    CheckArgument(!sorts[i].isFunctionLike(), sorts,
+                  "cannot create higher-order function types");
+    sortNodes.push_back(sorts[i]);
+  }
+  return mkTypeNode(kind::FUNCTION_TYPE, sortNodes);
+}
+
+inline TypeNode
+NodeManager::mkPredicateType(const std::vector<TypeNode>& sorts) {
+  Assert(sorts.size() >= 1);
+  std::vector<TypeNode> sortNodes;
+  for (unsigned i = 0; i < sorts.size(); ++ i) {
+    CheckArgument(!sorts[i].isFunctionLike(), sorts,
+                  "cannot create higher-order function types");
+    sortNodes.push_back(sorts[i]);
+  }
+  sortNodes.push_back(booleanType());
+  return mkTypeNode(kind::FUNCTION_TYPE, sortNodes);
+}
+
+inline TypeNode NodeManager::mkSExprType(const std::vector<TypeNode>& types) {
+  std::vector<TypeNode> typeNodes;
+  for (unsigned i = 0; i < types.size(); ++ i) {
+    typeNodes.push_back(types[i]);
+  }
+  return mkTypeNode(kind::SEXPR_TYPE, typeNodes);
+}
+
+inline TypeNode NodeManager::mkBitVectorType(unsigned size) {
+  return TypeNode(mkTypeConst<BitVectorSize>(BitVectorSize(size)));
+}
+
+inline TypeNode NodeManager::mkFloatingPointType(unsigned exp, unsigned sig) {
+  return TypeNode(mkTypeConst<FloatingPointSize>(FloatingPointSize(exp,sig)));
+}
+
+inline TypeNode NodeManager::mkFloatingPointType(FloatingPointSize fs) {
+  return TypeNode(mkTypeConst<FloatingPointSize>(fs));
+}
+
+inline TypeNode NodeManager::mkArrayType(TypeNode indexType,
+                                         TypeNode constituentType) {
+  CheckArgument(!indexType.isNull(), indexType,
+                "unexpected NULL index type");
+  CheckArgument(!constituentType.isNull(), constituentType,
+                "unexpected NULL constituent type");
+  CheckArgument(!indexType.isFunctionLike(), indexType,
+                "cannot index arrays by a function-like type");
+  CheckArgument(!constituentType.isFunctionLike(), constituentType,
+                "cannot store function-like types in arrays");
+  Debug("arrays") << "making array type " << indexType << " "
+                  << constituentType << std::endl;
+  return mkTypeNode(kind::ARRAY_TYPE, indexType, constituentType);
+}
+
+inline TypeNode NodeManager::mkSetType(TypeNode elementType) {
+  CheckArgument(!elementType.isNull(), elementType,
+                "unexpected NULL element type");
+  // TODO: Confirm meaning of isFunctionLike(). --K
+  CheckArgument(!elementType.isFunctionLike(), elementType,
+                "cannot store function-like types in sets");
+  Debug("sets") << "making sets type " << elementType << std::endl;
+  return mkTypeNode(kind::SET_TYPE, elementType);
+}
+
+inline TypeNode NodeManager::mkSelectorType(TypeNode domain, TypeNode range) {
+  CheckArgument(!domain.isFunctionLike(), domain,
+                "cannot create higher-order function types");
+  CheckArgument(!range.isFunctionLike(), range,
+                "cannot create higher-order function types");
+  return mkTypeNode(kind::SELECTOR_TYPE, domain, range);
+}
+
+inline TypeNode NodeManager::mkTesterType(TypeNode domain) {
+  CheckArgument(!domain.isFunctionLike(), domain,
+                "cannot create higher-order function types");
+  return mkTypeNode(kind::TESTER_TYPE, domain );
+}
+
+inline expr::NodeValue* NodeManager::poolLookup(expr::NodeValue* nv) const {
+  NodeValuePool::const_iterator find = d_nodeValuePool.find(nv);
+  if(find == d_nodeValuePool.end()) {
+    return NULL;
+  } else {
+    return *find;
+  }
+}
+
+inline void NodeManager::poolInsert(expr::NodeValue* nv) {
+  Assert(d_nodeValuePool.find(nv) == d_nodeValuePool.end(),
+         "NodeValue already in the pool!");
+  d_nodeValuePool.insert(nv);// FIXME multithreading
+}
+
+inline void NodeManager::poolRemove(expr::NodeValue* nv) {
+  Assert(d_nodeValuePool.find(nv) != d_nodeValuePool.end(),
+         "NodeValue is not in the pool!");
+
+  d_nodeValuePool.erase(nv);// FIXME multithreading
+}
+
+inline Expr NodeManager::toExpr(TNode n) {
+  return Expr(d_exprManager, new Node(n));
+}
+
+inline Node NodeManager::fromExpr(const Expr& e) {
+  return e.getNode();
+}
+
+inline ExprManager* NodeManager::toExprManager() {
+  return d_exprManager;
+}
+
+inline NodeManager* NodeManager::fromExprManager(ExprManager* exprManager) {
+  return exprManager->getNodeManager();
+}
+
+inline Type NodeManager::toType(TypeNode tn) {
+  return Type(this, new TypeNode(tn));
+}
+
+inline TypeNode NodeManager::fromType(Type t) {
+  return *Type::getTypeNode(t);
+}
+
+}/* CVC4 namespace */
+
+#define __CVC4__NODE_MANAGER_NEEDS_CONSTANT_MAP
+#include "expr/metakind.h"
+#undef __CVC4__NODE_MANAGER_NEEDS_CONSTANT_MAP
+
+#include "expr/node_builder.h"
+
+namespace CVC4 {
+
+// general expression-builders
+
+inline bool NodeManager::hasOperator(Kind k) {
+  switch(kind::MetaKind mk = kind::metaKindOf(k)) {
+
+  case kind::metakind::INVALID:
+  case kind::metakind::VARIABLE:
+    return false;
+
+  case kind::metakind::OPERATOR:
+  case kind::metakind::PARAMETERIZED:
+    return true;
+
+  case kind::metakind::CONSTANT:
+    return false;
+
+  default:
+    Unhandled(mk);
+  }
+}
+
+inline Kind NodeManager::operatorToKind(TNode n) {
+  return kind::operatorToKind(n.d_nv);
+}
+
+inline Node NodeManager::mkNode(Kind kind, TNode child1) {
+  NodeBuilder<1> nb(this, kind);
+  nb << child1;
+  return nb.constructNode();
+}
+
+inline Node* NodeManager::mkNodePtr(Kind kind, TNode child1) {
+  NodeBuilder<1> nb(this, kind);
+  nb << child1;
+  return nb.constructNodePtr();
+}
+
+inline Node NodeManager::mkNode(Kind kind, TNode child1, TNode child2) {
+  NodeBuilder<2> nb(this, kind);
+  nb << child1 << child2;
+  return nb.constructNode();
+}
+
+inline Node* NodeManager::mkNodePtr(Kind kind, TNode child1, TNode child2) {
+  NodeBuilder<2> nb(this, kind);
+  nb << child1 << child2;
+  return nb.constructNodePtr();
+}
+
+inline Node NodeManager::mkNode(Kind kind, TNode child1, TNode child2,
+                                TNode child3) {
+  NodeBuilder<3> nb(this, kind);
+  nb << child1 << child2 << child3;
+  return nb.constructNode();
+}
+
+inline Node* NodeManager::mkNodePtr(Kind kind, TNode child1, TNode child2,
+                                TNode child3) {
+  NodeBuilder<3> nb(this, kind);
+  nb << child1 << child2 << child3;
+  return nb.constructNodePtr();
+}
+
+inline Node NodeManager::mkNode(Kind kind, TNode child1, TNode child2,
+                                TNode child3, TNode child4) {
+  NodeBuilder<4> nb(this, kind);
+  nb << child1 << child2 << child3 << child4;
+  return nb.constructNode();
+}
+
+inline Node* NodeManager::mkNodePtr(Kind kind, TNode child1, TNode child2,
+                                TNode child3, TNode child4) {
+  NodeBuilder<4> nb(this, kind);
+  nb << child1 << child2 << child3 << child4;
+  return nb.constructNodePtr();
+}
+
+inline Node NodeManager::mkNode(Kind kind, TNode child1, TNode child2,
+                                TNode child3, TNode child4, TNode child5) {
+  NodeBuilder<5> nb(this, kind);
+  nb << child1 << child2 << child3 << child4 << child5;
+  return nb.constructNode();
+}
+
+inline Node* NodeManager::mkNodePtr(Kind kind, TNode child1, TNode child2,
+                                    TNode child3, TNode child4, TNode child5) {
+  NodeBuilder<5> nb(this, kind);
+  nb << child1 << child2 << child3 << child4 << child5;
+  return nb.constructNodePtr();
+}
+
+// N-ary version
+template <bool ref_count>
+inline Node NodeManager::mkNode(Kind kind,
+                                const std::vector<NodeTemplate<ref_count> >&
+                                children) {
+  NodeBuilder<> nb(this, kind);
+  nb.append(children);
+  return nb.constructNode();
+}
+
+template <bool ref_count>
+inline Node* NodeManager::mkNodePtr(Kind kind,
+                                const std::vector<NodeTemplate<ref_count> >&
+                                children) {
+  NodeBuilder<> nb(this, kind);
+  nb.append(children);
+  return nb.constructNodePtr();
+}
+
+// for operators
+inline Node NodeManager::mkNode(TNode opNode) {
+  NodeBuilder<1> nb(this, operatorToKind(opNode));
+  if(opNode.getKind() != kind::BUILTIN) {
+    nb << opNode;
+  }
+  return nb.constructNode();
+}
+
+inline Node* NodeManager::mkNodePtr(TNode opNode) {
+  NodeBuilder<1> nb(this, operatorToKind(opNode));
+  if(opNode.getKind() != kind::BUILTIN) {
+    nb << opNode;
+  }
+  return nb.constructNodePtr();
+}
+
+inline Node NodeManager::mkNode(TNode opNode, TNode child1) {
+  NodeBuilder<2> nb(this, operatorToKind(opNode));
+  if(opNode.getKind() != kind::BUILTIN) {
+    nb << opNode;
+  }
+  nb << child1;
+  return nb.constructNode();
+}
+
+inline Node* NodeManager::mkNodePtr(TNode opNode, TNode child1) {
+  NodeBuilder<2> nb(this, operatorToKind(opNode));
+  if(opNode.getKind() != kind::BUILTIN) {
+    nb << opNode;
+  }
+  nb << child1;
+  return nb.constructNodePtr();
+}
+
+inline Node NodeManager::mkNode(TNode opNode, TNode child1, TNode child2) {
+  NodeBuilder<3> nb(this, operatorToKind(opNode));
+  if(opNode.getKind() != kind::BUILTIN) {
+    nb << opNode;
+  }
+  nb << child1 << child2;
+  return nb.constructNode();
+}
+
+inline Node* NodeManager::mkNodePtr(TNode opNode, TNode child1, TNode child2) {
+  NodeBuilder<3> nb(this, operatorToKind(opNode));
+  if(opNode.getKind() != kind::BUILTIN) {
+    nb << opNode;
+  }
+  nb << child1 << child2;
+  return nb.constructNodePtr();
+}
+
+inline Node NodeManager::mkNode(TNode opNode, TNode child1, TNode child2,
+                                TNode child3) {
+  NodeBuilder<4> nb(this, operatorToKind(opNode));
+  if(opNode.getKind() != kind::BUILTIN) {
+    nb << opNode;
+  }
+  nb << child1 << child2 << child3;
+  return nb.constructNode();
+}
+
+inline Node* NodeManager::mkNodePtr(TNode opNode, TNode child1, TNode child2,
+                                TNode child3) {
+  NodeBuilder<4> nb(this, operatorToKind(opNode));
+  if(opNode.getKind() != kind::BUILTIN) {
+    nb << opNode;
+  }
+  nb << child1 << child2 << child3;
+  return nb.constructNodePtr();
+}
+
+inline Node NodeManager::mkNode(TNode opNode, TNode child1, TNode child2,
+                                TNode child3, TNode child4) {
+  NodeBuilder<5> nb(this, operatorToKind(opNode));
+  if(opNode.getKind() != kind::BUILTIN) {
+    nb << opNode;
+  }
+  nb << child1 << child2 << child3 << child4;
+  return nb.constructNode();
+}
+
+inline Node* NodeManager::mkNodePtr(TNode opNode, TNode child1, TNode child2,
+                                TNode child3, TNode child4) {
+  NodeBuilder<5> nb(this, operatorToKind(opNode));
+  if(opNode.getKind() != kind::BUILTIN) {
+    nb << opNode;
+  }
+  nb << child1 << child2 << child3 << child4;
+  return nb.constructNodePtr();
+}
+
+inline Node NodeManager::mkNode(TNode opNode, TNode child1, TNode child2,
+                                TNode child3, TNode child4, TNode child5) {
+  NodeBuilder<6> nb(this, operatorToKind(opNode));
+  if(opNode.getKind() != kind::BUILTIN) {
+    nb << opNode;
+  }
+  nb << child1 << child2 << child3 << child4 << child5;
+  return nb.constructNode();
+}
+
+inline Node* NodeManager::mkNodePtr(TNode opNode, TNode child1, TNode child2,
+                                    TNode child3, TNode child4, TNode child5) {
+  NodeBuilder<6> nb(this, operatorToKind(opNode));
+  if(opNode.getKind() != kind::BUILTIN) {
+    nb << opNode;
+  }
+  nb << child1 << child2 << child3 << child4 << child5;
+  return nb.constructNodePtr();
+}
+
+// N-ary version for operators
+template <bool ref_count>
+inline Node NodeManager::mkNode(TNode opNode,
+                                const std::vector<NodeTemplate<ref_count> >&
+                                children) {
+  NodeBuilder<> nb(this, operatorToKind(opNode));
+  if(opNode.getKind() != kind::BUILTIN) {
+    nb << opNode;
+  }
+  nb.append(children);
+  return nb.constructNode();
+}
+
+template <bool ref_count>
+inline Node* NodeManager::mkNodePtr(TNode opNode,
+                                    const std::vector<NodeTemplate<ref_count> >&
+                                    children) {
+  NodeBuilder<> nb(this, operatorToKind(opNode));
+  if(opNode.getKind() != kind::BUILTIN) {
+    nb << opNode;
+  }
+  nb.append(children);
+  return nb.constructNodePtr();
+}
+
+
+inline TypeNode NodeManager::mkTypeNode(Kind kind, TypeNode child1) {
+  return (NodeBuilder<1>(this, kind) << child1).constructTypeNode();
+}
+
+inline TypeNode NodeManager::mkTypeNode(Kind kind, TypeNode child1,
+                                        TypeNode child2) {
+  return (NodeBuilder<2>(this, kind) << child1 << child2).constructTypeNode();
+}
+
+inline TypeNode NodeManager::mkTypeNode(Kind kind, TypeNode child1,
+                                        TypeNode child2, TypeNode child3) {
+  return (NodeBuilder<3>(this, kind) << child1 << child2 << child3).constructTypeNode();
+}
+
+// N-ary version for types
+inline TypeNode NodeManager::mkTypeNode(Kind kind,
+                                        const std::vector<TypeNode>& children) {
+  return NodeBuilder<>(this, kind).append(children).constructTypeNode();
+}
+
+template <class T>
+Node NodeManager::mkConst(const T& val) {
+  return mkConstInternal<Node, T>(val);
+}
+
+template <class T>
+TypeNode NodeManager::mkTypeConst(const T& val) {
+  return mkConstInternal<TypeNode, T>(val);
+}
+
+template <class NodeClass, class T>
+NodeClass NodeManager::mkConstInternal(const T& val) {
+
+  // typedef typename kind::metakind::constantMap<T>::OwningTheory theory_t;
+  NVStorage<1> nvStorage;
+  expr::NodeValue& nvStack = reinterpret_cast<expr::NodeValue&>(nvStorage);
+
+  nvStack.d_id = 0;
+  nvStack.d_kind = kind::metakind::ConstantMap<T>::kind;
+  nvStack.d_rc = 0;
+  nvStack.d_nchildren = 1;
+
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Warray-bounds"
+#endif
+
+  nvStack.d_children[0] =
+    const_cast<expr::NodeValue*>(reinterpret_cast<const expr::NodeValue*>(&val));
+  expr::NodeValue* nv = poolLookup(&nvStack);
+
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
+#pragma GCC diagnostic pop
+#endif
+
+  if(nv != NULL) {
+    return NodeClass(nv);
+  }
+
+  nv = (expr::NodeValue*)
+    std::malloc(sizeof(expr::NodeValue) + sizeof(T));
+  if(nv == NULL) {
+    throw std::bad_alloc();
+  }
+
+  nv->d_nchildren = 0;
+  nv->d_kind = kind::metakind::ConstantMap<T>::kind;
+  nv->d_id = next_id++;// FIXME multithreading
+  nv->d_rc = 0;
+
+  //OwningTheory::mkConst(val);
+  new (&nv->d_children) T(val);
+
+  poolInsert(nv);
+  if(Debug.isOn("gc")) {
+    Debug("gc") << "creating node value " << nv
+                << " [" << nv->d_id << "]: ";
+    nv->printAst(Debug("gc"));
+    Debug("gc") << std::endl;
+  }
+
+  return NodeClass(nv);
+}
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__NODE_MANAGER_H */
diff --git a/src/expr/node_manager_attributes.h b/src/expr/node_manager_attributes.h
new file mode 100644
index 0000000..20e1c6c
--- /dev/null
+++ b/src/expr/node_manager_attributes.h
@@ -0,0 +1,42 @@
+/*********************                                                        */
+/*! \file node_manager_attributes.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#pragma once
+
+#include "expr/attribute.h"
+
+namespace CVC4 {
+namespace expr {
+
+// Definition of an attribute for the variable name.
+// TODO: hide this attribute behind a NodeManager interface.
+namespace attr {
+  struct VarNameTag { };
+  struct GlobalVarTag { };
+  struct SortArityTag { };
+  struct TypeTag { };
+  struct TypeCheckedTag { };
+}/* CVC4::expr::attr namespace */
+
+typedef Attribute<attr::VarNameTag, std::string> VarNameAttr;
+typedef Attribute<attr::GlobalVarTag(), bool> GlobalVarAttr;
+typedef Attribute<attr::SortArityTag, uint64_t> SortArityAttr;
+typedef expr::Attribute<expr::attr::TypeTag, TypeNode> TypeAttr;
+typedef expr::Attribute<expr::attr::TypeCheckedTag, bool> TypeCheckedAttr;
+
+}/* CVC4::expr namespace */
+}/* CVC4 namespace */
diff --git a/src/expr/node_manager_listeners.cpp b/src/expr/node_manager_listeners.cpp
new file mode 100644
index 0000000..3915aa9
--- /dev/null
+++ b/src/expr/node_manager_listeners.cpp
@@ -0,0 +1,44 @@
+/*********************                                                        */
+/*! \file node_manager_listeners.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Listeners that NodeManager registers to its Options object.
+ **
+ ** Listeners that NodeManager registers to its Options object.
+ **/
+
+#include "node_manager_listeners.h"
+
+#include "base/listener.h"
+#include "options/smt_options.h"
+#include "util/resource_manager.h"
+
+namespace CVC4 {
+namespace expr {
+
+
+void TlimitListener::notify() {
+  d_rm->setTimeLimit(options::cumulativeMillisecondLimit(), true);
+}
+
+void TlimitPerListener::notify() {
+  d_rm->setTimeLimit(options::perCallMillisecondLimit(), false);
+}
+
+void RlimitListener::notify() {
+  d_rm->setTimeLimit(options::cumulativeResourceLimit(), true);
+}
+
+void RlimitPerListener::notify() {
+  d_rm->setTimeLimit(options::perCallResourceLimit(), false);
+}
+
+}/* CVC4::expr namespace */
+}/* CVC4 namespace */
diff --git a/src/expr/node_manager_listeners.h b/src/expr/node_manager_listeners.h
new file mode 100644
index 0000000..caff3a5
--- /dev/null
+++ b/src/expr/node_manager_listeners.h
@@ -0,0 +1,63 @@
+/*********************                                                        */
+/*! \file node_manager_listeners.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Listeners that NodeManager registers to its Options object.
+ **
+ ** Listeners that NodeManager registers to its Options object.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__EXPR__NODE_MANAGER_LISTENERS_H
+#define __CVC4__EXPR__NODE_MANAGER_LISTENERS_H
+
+#include "base/listener.h"
+#include "util/resource_manager.h"
+
+namespace CVC4 {
+namespace expr {
+
+class TlimitListener : public Listener {
+ public:
+  TlimitListener(ResourceManager* rm) : d_rm(rm) {}
+  virtual void notify();
+ private:
+  ResourceManager* d_rm;
+};
+
+class TlimitPerListener : public Listener {
+ public:
+  TlimitPerListener(ResourceManager* rm) : d_rm(rm) {}
+  virtual void notify();
+ private:
+  ResourceManager* d_rm;
+};
+
+class RlimitListener : public Listener {
+ public:
+  RlimitListener(ResourceManager* rm) : d_rm(rm) {}
+  virtual void notify();
+ private:
+  ResourceManager* d_rm;
+};
+
+class RlimitPerListener : public Listener {
+ public:
+  RlimitPerListener(ResourceManager* rm) : d_rm(rm) {}
+  virtual void notify();
+ private:
+  ResourceManager* d_rm;
+};
+
+}/* CVC4::expr namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__EXPR__NODE_MANAGER_LISTENERS_H */
diff --git a/src/expr/node_self_iterator.h b/src/expr/node_self_iterator.h
new file mode 100644
index 0000000..9d37f6e
--- /dev/null
+++ b/src/expr/node_self_iterator.h
@@ -0,0 +1,128 @@
+/*********************                                                        */
+/*! \file node_self_iterator.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Iterator supporting Node "self-iteration"
+ **
+ ** Iterator supporting Node "self-iteration."
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__EXPR__NODE_SELF_ITERATOR_H
+#define __CVC4__EXPR__NODE_SELF_ITERATOR_H
+
+#include <iterator>
+
+#include "base/cvc4_assert.h"
+#include "expr/node.h"
+
+namespace CVC4 {
+namespace expr {
+
+class NodeSelfIterator : std::iterator<std::input_iterator_tag, Node> {
+  Node d_node;
+  Node::const_iterator d_child;
+
+public:
+  static NodeSelfIterator self(TNode n);
+  static NodeSelfIterator selfEnd(TNode n);
+
+  NodeSelfIterator();
+  NodeSelfIterator(Node n);
+  NodeSelfIterator(TNode n);
+  NodeSelfIterator(const NodeSelfIterator& i);
+
+  NodeSelfIterator(Node::const_iterator i);
+  NodeSelfIterator(TNode::const_iterator i);
+
+  Node operator*() const;
+  NodeSelfIterator& operator++();
+  NodeSelfIterator operator++(int);
+
+  bool operator==(NodeSelfIterator i) const;
+  bool operator!=(NodeSelfIterator i) const;
+
+};/* class NodeSelfIterator */
+
+inline NodeSelfIterator NodeSelfIterator::self(TNode n) {
+  Assert(!n.isNull(), "Self-iteration over null nodes not permitted.");
+  return NodeSelfIterator(n);
+}
+
+inline NodeSelfIterator NodeSelfIterator::selfEnd(TNode n) {
+  Assert(!n.isNull(), "Self-iteration over null nodes not permitted.");
+  return NodeSelfIterator(n.end());
+}
+
+inline NodeSelfIterator::NodeSelfIterator() :
+  d_node(),
+  d_child() {
+}
+
+inline NodeSelfIterator::NodeSelfIterator(Node node) :
+  d_node(node),
+  d_child() {
+  Assert(!node.isNull(), "Self-iteration over null nodes not permitted.");
+}
+
+inline NodeSelfIterator::NodeSelfIterator(TNode node) :
+  d_node(node),
+  d_child() {
+  Assert(!node.isNull(), "Self-iteration over null nodes not permitted.");
+}
+
+inline NodeSelfIterator::NodeSelfIterator(const NodeSelfIterator& i) :
+  d_node(i.d_node),
+  d_child(i.d_child) {
+}
+
+inline NodeSelfIterator::NodeSelfIterator(Node::const_iterator i) :
+  d_node(),
+  d_child(i) {
+}
+
+inline NodeSelfIterator::NodeSelfIterator(TNode::const_iterator i) :
+  d_node(),
+  d_child(i) {
+}
+
+inline Node NodeSelfIterator::operator*() const {
+  return d_node.isNull() ? *d_child : d_node;
+}
+
+inline NodeSelfIterator& NodeSelfIterator::operator++() {
+  if(d_node.isNull()) {
+    ++d_child;
+  } else {
+    d_child = d_node.end();
+    d_node = Node::null();
+  }
+  return *this;
+}
+
+inline NodeSelfIterator NodeSelfIterator::operator++(int) {
+  NodeSelfIterator i = *this;
+  ++*this;
+  return i;
+}
+
+inline bool NodeSelfIterator::operator==(NodeSelfIterator i) const {
+  return d_node == i.d_node && d_child == i.d_child;
+}
+
+inline bool NodeSelfIterator::operator!=(NodeSelfIterator i) const {
+  return !(*this == i);
+}
+
+}/* CVC4::expr namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__EXPR__NODE_SELF_ITERATOR_H */
diff --git a/src/expr/node_value.cpp b/src/expr/node_value.cpp
new file mode 100644
index 0000000..40649ef
--- /dev/null
+++ b/src/expr/node_value.cpp
@@ -0,0 +1,82 @@
+/*********************                                                        */
+/*! \file node_value.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Clark Barrett
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An expression node.
+ **
+ ** An expression node.
+ **
+ ** Instances of this class are generally referenced through
+ ** cvc4::Node rather than by pointer; cvc4::Node maintains the
+ ** reference count on NodeValue instances and
+ **/
+#include "expr/node_value.h"
+
+#include <sstream>
+
+#include "expr/kind.h"
+#include "expr/metakind.h"
+#include "expr/node.h"
+#include "options/base_options.h"
+#include "options/language.h"
+#include "options/options.h"
+#include "printer/printer.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace expr {
+
+string NodeValue::toString() const {
+  stringstream ss;
+
+  OutputLanguage outlang = (this == &null()) ? language::output::LANG_AUTO
+                                             : options::outputLanguage();
+  toStream(ss, -1, false, false, outlang);
+  return ss.str();
+}
+
+void NodeValue::toStream(std::ostream& out, int toDepth, bool types, size_t dag,
+                         OutputLanguage language) const {
+  // Ensure that this node value is live for the length of this call.
+  // It really breaks things badly if we don't have a nonzero ref
+  // count, even just for printing.
+  RefCountGuard guard(this);
+
+  Printer::getPrinter(language)->toStream(out, TNode(this), toDepth, types,
+                                          dag);
+}
+
+void NodeValue::printAst(std::ostream& out, int ind) const {
+  RefCountGuard guard(this);
+
+  indent(out, ind);
+  out << '(';
+  out << getKind();
+  if (getMetaKind() == kind::metakind::VARIABLE) {
+    out << ' ' << getId();
+  } else if (getMetaKind() == kind::metakind::CONSTANT) {
+    out << ' ';
+    kind::metakind::NodeValueConstPrinter::toStream(out, this);
+  } else {
+    if (nv_begin() != nv_end()) {
+      for (const_nv_iterator child = nv_begin(); child != nv_end(); ++child) {
+        out << std::endl;
+        (*child)->printAst(out, ind + 1);
+      }
+      out << std::endl;
+      indent(out, ind);
+    }
+  }
+  out << ')';
+}
+
+} /* CVC4::expr namespace */
+} /* CVC4 namespace */
diff --git a/src/expr/node_value.h b/src/expr/node_value.h
new file mode 100644
index 0000000..79ce8cb
--- /dev/null
+++ b/src/expr/node_value.h
@@ -0,0 +1,556 @@
+/*********************                                                        */
+/*! \file node_value.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An expression node.
+ **
+ ** An expression node.
+ **
+ ** Instances of this class are generally referenced through
+ ** cvc4::Node rather than by pointer; cvc4::Node maintains the
+ ** reference count on NodeValue instances and
+ **/
+
+#include "cvc4_private.h"
+
+// circular dependency
+#include "expr/metakind.h"
+
+#ifndef __CVC4__EXPR__NODE_VALUE_H
+#define __CVC4__EXPR__NODE_VALUE_H
+
+#include <stdint.h>
+
+#include <iterator>
+#include <string>
+
+#include "expr/kind.h"
+#include "options/language.h"
+
+namespace CVC4 {
+
+template <bool ref_count> class NodeTemplate;
+class TypeNode;
+template <unsigned N> class NodeBuilder;
+class AndNodeBuilder;
+class OrNodeBuilder;
+class PlusNodeBuilder;
+class MultNodeBuilder;
+class NodeManager;
+
+namespace expr {
+  class NodeValue;
+}
+
+namespace kind {
+  namespace metakind {
+    template < ::CVC4::Kind k, bool pool >
+    struct NodeValueConstCompare;
+
+    struct NodeValueCompare;
+    struct NodeValueConstPrinter;
+
+    void deleteNodeValueConstant(::CVC4::expr::NodeValue* nv);
+  }/* CVC4::kind::metakind namespace */
+}/* CVC4::kind namespace */
+
+namespace expr {
+
+#if __CVC4__EXPR__NODE_VALUE__NBITS__REFCOUNT + \
+    __CVC4__EXPR__NODE_VALUE__NBITS__KIND + \
+    __CVC4__EXPR__NODE_VALUE__NBITS__ID + \
+    __CVC4__EXPR__NODE_VALUE__NBITS__NCHILDREN != 96
+#  error NodeValue header bit assignment does not sum to 96 !
+#endif /* sum != 96 */
+
+/**
+ * This is a NodeValue.
+ */
+class NodeValue {
+
+  static const unsigned NBITS_REFCOUNT = __CVC4__EXPR__NODE_VALUE__NBITS__REFCOUNT;
+  static const unsigned NBITS_KIND = __CVC4__EXPR__NODE_VALUE__NBITS__KIND;
+  static const unsigned NBITS_ID = __CVC4__EXPR__NODE_VALUE__NBITS__ID;
+  static const unsigned NBITS_NCHILDREN = __CVC4__EXPR__NODE_VALUE__NBITS__NCHILDREN;
+
+  /** Maximum reference count possible.  Used for sticky
+   *  reference-counting.  Should be (1 << num_bits(d_rc)) - 1 */
+  static const unsigned MAX_RC = (1u << NBITS_REFCOUNT) - 1;
+
+  /** A mask for d_kind */
+  static const unsigned kindMask = (1u << NBITS_KIND) - 1;
+
+  // This header fits into 96 bits
+
+  /** The ID (0 is reserved for the null value) */
+  uint64_t d_id        : NBITS_ID;
+
+  /** The expression's reference count.  @see cvc4::Node. */
+  uint64_t d_rc        : NBITS_REFCOUNT;
+
+  /** Kind of the expression */
+  uint64_t d_kind      : NBITS_KIND;
+
+  /** Number of children */
+  uint64_t d_nchildren : NBITS_NCHILDREN;
+
+  /** Variable number of child nodes */
+  NodeValue* d_children[0];
+
+  // todo add exprMgr ref in debug case
+
+  template <bool> friend class ::CVC4::NodeTemplate;
+  friend class ::CVC4::TypeNode;
+  template <unsigned nchild_thresh> friend class ::CVC4::NodeBuilder;
+  friend class ::CVC4::NodeManager;
+
+  template <Kind k, bool pool>
+  friend struct ::CVC4::kind::metakind::NodeValueConstCompare;
+
+  friend struct ::CVC4::kind::metakind::NodeValueCompare;
+  friend struct ::CVC4::kind::metakind::NodeValueConstPrinter;
+
+  friend void ::CVC4::kind::metakind::deleteNodeValueConstant(NodeValue* nv);
+
+  void inc();
+  void dec();
+
+  // Returns true if the reference count is maximized.
+  inline bool HasMaximizedReferenceCount() { return d_rc == MAX_RC; }
+
+  /**
+   * Uninitializing constructor for NodeBuilder's use.
+   */
+  NodeValue() { /* do not initialize! */ }
+
+private:
+  /** Private constructor for the null value. */
+  NodeValue(int);
+
+  typedef NodeValue** nv_iterator;
+  typedef NodeValue const* const* const_nv_iterator;
+
+  nv_iterator nv_begin();
+  nv_iterator nv_end();
+
+  const_nv_iterator nv_begin() const;
+  const_nv_iterator nv_end() const;
+
+  template <class T>
+  class iterator {
+    const_nv_iterator d_i;
+  public:
+    typedef std::random_access_iterator_tag iterator_category;
+    typedef T value_type;
+    typedef std::ptrdiff_t difference_type;
+    typedef T* pointer;
+    typedef T& reference;
+
+    iterator() : d_i(NULL) {}
+    explicit iterator(const_nv_iterator i) : d_i(i) {}
+
+    // conversion of a TNode iterator to a Node iterator
+    inline operator NodeValue::iterator<NodeTemplate<true> >() {
+      return iterator<NodeTemplate<true> >(d_i);
+    }
+
+    inline T operator*() const;
+
+    bool operator==(const iterator& i) const {
+      return d_i == i.d_i;
+    }
+
+    bool operator!=(const iterator& i) const {
+      return d_i != i.d_i;
+    }
+
+    iterator& operator++() {
+      ++d_i;
+      return *this;
+    }
+
+    iterator operator++(int) {
+      return iterator(d_i++);
+    }
+
+    iterator& operator--() {
+      --d_i;
+      return *this;
+    }
+
+    iterator operator--(int) {
+      return iterator(d_i--);
+    }
+
+    iterator& operator+=(difference_type p) {
+      d_i += p;
+      return *this;
+    }
+
+    iterator& operator-=(difference_type p) {
+      d_i -= p;
+      return *this;
+    }
+
+    iterator operator+(difference_type p) {
+      return iterator(d_i + p);
+    }
+
+    iterator operator-(difference_type p) {
+      return iterator(d_i - p);
+    }
+
+    difference_type operator-(iterator i) {
+      return d_i - i.d_i;
+    }
+  };/* class NodeValue::iterator<T> */
+
+  // operator+ (as a function) cannot be a template, so we have to
+  // define two versions
+  friend NodeValue::iterator<NodeTemplate<true> >
+  operator+(NodeValue::iterator<NodeTemplate<true> >::difference_type p,
+            NodeValue::iterator<NodeTemplate<true> > i);
+  friend NodeValue::iterator<NodeTemplate<false> >
+  operator+(NodeValue::iterator<NodeTemplate<false> >::difference_type p,
+            NodeValue::iterator<NodeTemplate<false> > i);
+
+  /** Decrement ref counts of children */
+  inline void decrRefCounts();
+
+  bool isBeingDeleted() const;
+
+public:
+
+  template <typename T>
+  inline iterator<T> begin() const;
+
+  template <typename T>
+  inline iterator<T> end() const;
+
+  /**
+   * Hash this NodeValue.  For hash_maps, hash_sets, etc.. but this is
+   * for expr package internal use only at present!  This is likely to
+   * be POORLY PERFORMING for other uses!  For example, this gives
+   * collisions for all VARIABLEs.
+   * @return the hash value of this expression.
+   */
+  size_t poolHash() const {
+    if(getMetaKind() == kind::metakind::CONSTANT) {
+      return kind::metakind::NodeValueCompare::constHash(this);
+    }
+
+    size_t hash = d_kind;
+    const_nv_iterator i = nv_begin();
+    const_nv_iterator i_end = nv_end();
+    while(i != i_end) {
+      hash ^= (*i)->d_id + 0x9e3779b9 + (hash << 6) + (hash >> 2);
+      ++i;
+    }
+    return hash;
+  }
+
+  unsigned long getId() const { return d_id; }
+  Kind getKind() const { return dKindToKind(d_kind); }
+  kind::MetaKind getMetaKind() const { return kind::metaKindOf(getKind()); }
+  unsigned getNumChildren() const {
+    return (getMetaKind() == kind::metakind::PARAMETERIZED)
+      ? d_nchildren - 1
+      : d_nchildren;
+  }
+
+  unsigned getRefCount() const { return d_rc; }
+
+  std::string toString() const;
+  void toStream(std::ostream& out, int toDepth = -1, bool types = false, size_t dag = 1,
+                OutputLanguage = language::output::LANG_AUTO) const;
+
+  static inline unsigned kindToDKind(Kind k) {
+    return ((unsigned) k) & kindMask;
+  }
+
+  static inline Kind dKindToKind(unsigned d) {
+    return (d == kindMask) ? kind::UNDEFINED_KIND : Kind(d);
+  }
+
+  static inline NodeValue& null() {
+    static NodeValue* s_null = new NodeValue(0);
+    return *s_null;
+  }
+
+  /**
+   * If this is a CONST_* Node, extract the constant from it.
+   */
+  template <class T>
+  inline const T& getConst() const;
+
+  NodeValue* getOperator() const;
+  NodeValue* getChild(int i) const;
+
+  void printAst(std::ostream& out, int indent = 0) const;
+
+private:
+
+  /**
+   * RAII guard that increases the reference count if the reference count to be
+   * > 0.  Otherwise, this does nothing. This does not just increment the
+   * reference count to avoid maxing out the d_rc field. This is only for low
+   * level functions.
+   */
+  class RefCountGuard {
+    NodeValue* d_nv;
+    bool d_increased;
+  public:
+    RefCountGuard(const NodeValue* nv) :
+      d_nv(const_cast<NodeValue*>(nv)) {
+      d_increased = (d_nv->d_rc == 0);
+      if(d_increased) {
+        d_nv->d_rc = 1;
+      }
+    }
+    ~RefCountGuard() {
+      // dec() without marking for deletion: we don't want to garbage
+      // collect this NodeValue if ours is the last reference to it.
+      // E.g., this can happen when debugging code calls the print
+      // routines below.  As RefCountGuards are scoped on the stack,
+      // this should be fine---but not in multithreaded contexts!
+      if(d_increased) {
+        --d_nv->d_rc;
+      }
+    }
+  };/* NodeValue::RefCountGuard */
+
+  friend class RefCountGuard;
+
+  /**
+   * Indents the given stream a given amount of spaces.
+   * @param out the stream to indent
+   * @param indent the numer of spaces
+   */
+  static inline void indent(std::ostream& out, int indent) {
+    for(int i = 0; i < indent; i++) {
+      out << ' ';
+    }
+  }
+
+};/* class NodeValue */
+
+/**
+ * Provides a symmetric addition operator to that already defined in
+ * the iterator class.
+ */
+inline NodeValue::iterator<NodeTemplate<true> >
+operator+(NodeValue::iterator<NodeTemplate<true> >::difference_type p,
+          NodeValue::iterator<NodeTemplate<true> > i) {
+  return i + p;
+}
+
+/**
+ * Provides a symmetric addition operator to that already defined in
+ * the iterator class.
+ */
+inline NodeValue::iterator<NodeTemplate<false> >
+operator+(NodeValue::iterator<NodeTemplate<false> >::difference_type p,
+          NodeValue::iterator<NodeTemplate<false> > i) {
+  return i + p;
+}
+
+/**
+ * For hash_maps, hash_sets, etc.. but this is for expr package
+ * internal use only at present!  This is likely to be POORLY
+ * PERFORMING for other uses!  NodeValue::poolHash() will lead to
+ * collisions for all VARIABLEs.
+ */
+struct NodeValuePoolHashFunction {
+  inline size_t operator()(const NodeValue* nv) const {
+    return (size_t) nv->poolHash();
+  }
+};/* struct NodeValuePoolHashFunction */
+
+/**
+ * For hash_maps, hash_sets, etc.
+ */
+struct NodeValueIDHashFunction {
+  inline size_t operator()(const NodeValue* nv) const {
+    return (size_t) nv->getId();
+  }
+};/* struct NodeValueIDHashFunction */
+
+
+/**
+ * An equality predicate that is applicable between pointers to fully
+ * constructed NodeValues.
+ */
+struct NodeValueIDEquality {
+  inline bool operator()(const NodeValue* a, const NodeValue* b) const {
+    return a->getId() == b->getId();
+  }
+};
+
+
+inline std::ostream& operator<<(std::ostream& out, const NodeValue& nv);
+
+}/* CVC4::expr namespace */
+}/* CVC4 namespace */
+
+#include "expr/node_manager.h"
+#include "expr/type_node.h"
+
+namespace CVC4 {
+namespace expr {
+
+inline NodeValue::NodeValue(int) :
+  d_id(0),
+  d_rc(MAX_RC),
+  d_kind(kind::NULL_EXPR),
+  d_nchildren(0) {
+}
+
+inline void NodeValue::decrRefCounts() {
+  for(nv_iterator i = nv_begin(); i != nv_end(); ++i) {
+    (*i)->dec();
+  }
+}
+
+inline void NodeValue::inc() {
+  Assert(!isBeingDeleted(),
+         "NodeValue is currently being deleted "
+         "and increment is being called on it. Don't Do That!");
+  // FIXME multithreading
+  if (__builtin_expect((d_rc < MAX_RC - 1), true)) {
+    ++d_rc;
+  } else if (__builtin_expect((d_rc == MAX_RC - 1), false)) {
+    ++d_rc;
+    Assert(NodeManager::currentNM() != NULL,
+           "No current NodeManager on incrementing of NodeValue: "
+           "maybe a public CVC4 interface function is missing a "
+           "NodeManagerScope ?");
+    NodeManager::currentNM()->markRefCountMaxedOut(this);
+  }
+}
+
+inline void NodeValue::dec() {
+  // FIXME multithreading
+  if(__builtin_expect( ( d_rc < MAX_RC ), true )) {
+    --d_rc;
+    if(__builtin_expect( ( d_rc == 0 ), false )) {
+      Assert(NodeManager::currentNM() != NULL,
+             "No current NodeManager on destruction of NodeValue: "
+             "maybe a public CVC4 interface function is missing a "
+             "NodeManagerScope ?");
+      NodeManager::currentNM()->markForDeletion(this);
+    }
+  }
+}
+
+inline NodeValue::nv_iterator NodeValue::nv_begin() {
+  return d_children;
+}
+
+inline NodeValue::nv_iterator NodeValue::nv_end() {
+  return d_children + d_nchildren;
+}
+
+inline NodeValue::const_nv_iterator NodeValue::nv_begin() const {
+  return d_children;
+}
+
+inline NodeValue::const_nv_iterator NodeValue::nv_end() const {
+  return d_children + d_nchildren;
+}
+
+template <typename T>
+inline NodeValue::iterator<T> NodeValue::begin() const {
+  NodeValue* const* firstChild = d_children;
+  if(getMetaKind() == kind::metakind::PARAMETERIZED) {
+    ++firstChild;
+  }
+  return iterator<T>(firstChild);
+}
+
+template <typename T>
+inline NodeValue::iterator<T> NodeValue::end() const {
+  return iterator<T>(d_children + d_nchildren);
+}
+
+inline bool NodeValue::isBeingDeleted() const {
+  return NodeManager::currentNM() != NULL &&
+    NodeManager::currentNM()->isCurrentlyDeleting(this);
+}
+
+inline NodeValue* NodeValue::getOperator() const {
+  Assert(getMetaKind() == kind::metakind::PARAMETERIZED);
+  return d_children[0];
+}
+
+inline NodeValue* NodeValue::getChild(int i) const {
+  if(getMetaKind() == kind::metakind::PARAMETERIZED) {
+    ++i;
+  }
+
+  Assert(i >= 0 && unsigned(i) < d_nchildren);
+  return d_children[i];
+}
+
+}/* CVC4::expr namespace */
+}/* CVC4 namespace */
+
+#include "expr/node.h"
+#include "expr/type_node.h"
+
+namespace CVC4 {
+namespace expr {
+
+template <typename T>
+inline T NodeValue::iterator<T>::operator*() const {
+  return T(*d_i);
+}
+
+inline std::ostream& operator<<(std::ostream& out, const NodeValue& nv) {
+  nv.toStream(out,
+              Node::setdepth::getDepth(out),
+              Node::printtypes::getPrintTypes(out),
+              Node::dag::getDag(out),
+              Node::setlanguage::getLanguage(out));
+  return out;
+}
+
+}/* CVC4::expr namespace */
+
+#ifdef CVC4_DEBUG
+/**
+ * Pretty printer for use within gdb.  This is not intended to be used
+ * outside of gdb.  This writes to the Warning() stream and immediately
+ * flushes the stream.
+ */
+static void __attribute__((used)) debugPrintNodeValue(const expr::NodeValue* nv) {
+  Warning() << Node::setdepth(-1)
+            << Node::printtypes(false)
+            << Node::dag(true)
+            << Node::setlanguage(language::output::LANG_AST)
+            << *nv << std::endl;
+  Warning().flush();
+}
+static void __attribute__((used)) debugPrintNodeValueNoDag(const expr::NodeValue* nv) {
+  Warning() << Node::setdepth(-1)
+            << Node::printtypes(false)
+            << Node::dag(false)
+            << Node::setlanguage(language::output::LANG_AST)
+            << *nv << std::endl;
+  Warning().flush();
+}
+static void __attribute__((used)) debugPrintRawNodeValue(const expr::NodeValue* nv) {
+  nv->printAst(Warning(), 0);
+  Warning().flush();
+}
+#endif /* CVC4_DEBUG */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__EXPR__NODE_VALUE_H */
diff --git a/src/expr/pickle_data.cpp b/src/expr/pickle_data.cpp
new file mode 100644
index 0000000..2050d2d
--- /dev/null
+++ b/src/expr/pickle_data.cpp
@@ -0,0 +1,58 @@
+/*********************                                                        */
+/*! \file pickle_data.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This is a "pickle" for expressions, CVC4-internal view
+ **
+ ** This is the CVC4-internal view (private data structure) for a
+ ** "pickle" for expressions.  The public-facing view is a "Pickle",
+ ** which just points to a PickleData.  A pickle is a binary
+ ** serialization of an expression that can be converted back into an
+ ** expression in the same or another ExprManager.
+ **/
+
+#include <iostream>
+#include <sstream>
+#include <string>
+
+#include "base/cvc4_assert.h"
+#include "expr/pickle_data.h"
+#include "expr/expr.h"
+#include "expr/node.h"
+#include "expr/node_manager.h"
+#include "expr/node_value.h"
+#include "expr/expr_manager_scope.h"
+#include "expr/variable_type_map.h"
+#include "expr/kind.h"
+#include "expr/metakind.h"
+
+namespace CVC4 {
+namespace expr {
+namespace pickle {
+
+void PickleData::writeToStringStream(std::ostringstream& oss) const {
+  BlockDeque::const_iterator i = d_blocks.begin(), end = d_blocks.end();
+  for(; i != end; ++i) {
+    Block b = *i;
+    Assert(sizeof(b) * 8 == NBITS_BLOCK);
+    oss << b.d_body.d_data << " ";
+  }
+}
+
+std::string PickleData::toString() const {
+  std::ostringstream oss;
+  oss.flags(std::ios::oct | std::ios::showbase);
+  writeToStringStream(oss);
+  return oss.str();
+}
+
+}/* CVC4::expr::pickle namespace */
+}/* CVC4::expr namespace */
+}/* CVC4 namespace */
diff --git a/src/expr/pickle_data.h b/src/expr/pickle_data.h
new file mode 100644
index 0000000..6c28371
--- /dev/null
+++ b/src/expr/pickle_data.h
@@ -0,0 +1,120 @@
+/*********************                                                        */
+/*! \file pickle_data.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This is a "pickle" for expressions, CVC4-internal view
+ **
+ ** This is the CVC4-internal view (private data structure) for a
+ ** "pickle" for expressions.  The public-facing view is a "Pickle",
+ ** which just points to a PickleData.  A pickle is a binary
+ ** serialization of an expression that can be converted back into an
+ ** expression in the same or another ExprManager.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__PICKLE_DATA_H
+#define __CVC4__PICKLE_DATA_H
+
+#include <sstream>
+#include <deque>
+#include <stack>
+#include <exception>
+
+#include "expr/expr.h"
+#include "expr/node.h"
+#include "expr/node_manager.h"
+#include "expr/expr_manager.h"
+#include "expr/variable_type_map.h"
+#include "expr/kind.h"
+#include "expr/metakind.h"
+
+namespace CVC4 {
+
+class NodeManager;
+
+namespace expr {
+namespace pickle {
+
+const unsigned NBITS_BLOCK = 64;
+const unsigned NBITS_KIND = __CVC4__EXPR__NODE_VALUE__NBITS__KIND;
+const unsigned NBITS_NCHILDREN = __CVC4__EXPR__NODE_VALUE__NBITS__NCHILDREN;
+const unsigned NBITS_CONSTBLOCKS = 32;
+
+struct BlockHeader {
+  uint64_t d_kind          : NBITS_KIND;
+};/* struct BlockHeader */
+
+struct BlockHeaderOperator {
+  uint64_t d_kind          : NBITS_KIND;
+  uint64_t d_nchildren     : NBITS_NCHILDREN;
+  uint64_t                 : NBITS_BLOCK - (NBITS_KIND + NBITS_NCHILDREN);
+};/* struct BlockHeaderOperator */
+
+struct BlockHeaderConstant {
+  uint64_t d_kind          : NBITS_KIND;
+  uint64_t d_constblocks   : NBITS_BLOCK - NBITS_KIND;
+};/* struct BlockHeaderConstant */
+
+struct BlockHeaderVariable {
+  uint64_t d_kind          : NBITS_KIND;
+  uint64_t                 : NBITS_BLOCK - NBITS_KIND;
+};/* struct BlockHeaderVariable */
+
+struct BlockBody  {
+  uint64_t d_data          : NBITS_BLOCK;
+};/* struct BlockBody */
+
+union Block {
+  BlockHeader d_header;
+  BlockHeaderConstant d_headerConstant;
+  BlockHeaderOperator d_headerOperator;
+  BlockHeaderVariable d_headerVariable;
+
+  BlockBody d_body;
+};/* union Block */
+
+class PickleData {
+  typedef std::deque<Block> BlockDeque;
+  BlockDeque d_blocks;
+
+public:
+  PickleData& operator<<(Block b) {
+    enqueue(b);
+    return (*this);
+  }
+
+  std::string toString() const;
+
+  void enqueue(Block b) {
+    d_blocks.push_back(b);
+  }
+
+  Block dequeue() {
+    Block b = d_blocks.front();
+    d_blocks.pop_front();
+    return b;
+  }
+
+  bool empty() const { return d_blocks.empty(); }
+  uint32_t size() const { return d_blocks.size(); }
+
+  void swap(PickleData& other){
+    d_blocks.swap(other.d_blocks);
+  }
+
+  void writeToStringStream(std::ostringstream& oss) const;
+};/* class PickleData */
+
+}/* CVC4::expr::pickle namespace */
+}/* CVC4::expr namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PICKLE_DATA_H */
diff --git a/src/expr/pickler.cpp b/src/expr/pickler.cpp
new file mode 100644
index 0000000..ab8037a
--- /dev/null
+++ b/src/expr/pickler.cpp
@@ -0,0 +1,481 @@
+/*********************                                                        */
+/*! \file pickler.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Kshitij Bansal, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This is a "pickler" for expressions
+ **
+ ** This is a "pickler" for expressions.  It produces a binary
+ ** serialization of an expression that can be converted back
+ ** into an expression in the same or another ExprManager.
+ **/
+
+#include <iostream>
+#include <sstream>
+#include <string>
+
+#include "base/cvc4_assert.h"
+#include "base/output.h"
+#include "expr/pickler.h"
+#include "expr/pickle_data.h"
+#include "expr/expr.h"
+#include "expr/node.h"
+#include "expr/node_manager.h"
+#include "expr/node_value.h"
+#include "expr/expr_manager_scope.h"
+#include "expr/variable_type_map.h"
+#include "expr/kind.h"
+#include "expr/metakind.h"
+
+namespace CVC4 {
+namespace expr {
+namespace pickle {
+
+class PicklerPrivate {
+public:
+  typedef std::stack<Node> NodeStack;
+  NodeStack d_stack;
+
+  PickleData d_current;
+
+  Pickler& d_pickler;
+
+  NodeManager* const d_nm;
+
+  PicklerPrivate(Pickler& pickler, ExprManager* em) :
+    d_pickler(pickler),
+    d_nm(NodeManager::fromExprManager(em)) {
+  }
+
+  bool atDefaultState(){
+    return d_stack.empty() && d_current.empty();
+  }
+
+  /* Helper functions for toPickle */
+  void toCaseNode(TNode n) throw(AssertionException, PicklingException);
+  void toCaseVariable(TNode n) throw(AssertionException, PicklingException);
+  void toCaseConstant(TNode n);
+  void toCaseOperator(TNode n) throw(AssertionException, PicklingException);
+  void toCaseString(Kind k, const std::string& s);
+
+  /* Helper functions for toPickle */
+  Node fromCaseOperator(Kind k, uint32_t nchildren);
+  Node fromCaseConstant(Kind k, uint32_t nblocks);
+  std::string fromCaseString(uint32_t nblocks);
+  Node fromCaseVariable(Kind k);
+
+};/* class PicklerPrivate */
+
+static Block mkBlockBody4Chars(char a, char b, char c, char d) {
+  Block newBody;
+  newBody.d_body.d_data = (a << 24) | (b << 16) | (c << 8) | d;
+  return newBody;
+}
+
+static char getCharBlockBody(BlockBody body, int i) {
+  Assert(0 <= i && i <= 3);
+
+  switch(i) {
+  case 0: return (body.d_data & 0xff000000) >> 24;
+  case 1: return (body.d_data & 0x00ff0000) >> 16;
+  case 2: return (body.d_data & 0x0000ff00) >> 8;
+  case 3: return (body.d_data & 0x000000ff);
+  default:
+    Unreachable();
+  }
+  return '\0';
+}
+
+static Block mkBlockBody(unsigned data) {
+  Block newBody;
+  newBody.d_body.d_data = data;
+  return newBody;
+}
+
+static Block mkOperatorHeader(Kind k, unsigned numChildren) {
+  Block newHeader;
+  newHeader.d_headerOperator.d_kind = k;
+  newHeader.d_headerOperator.d_nchildren = numChildren;
+  return newHeader;
+}
+
+static Block mkVariableHeader(Kind k) {
+  Block newHeader;
+  newHeader.d_header.d_kind = k;
+  return newHeader;
+}
+
+static Block mkConstantHeader(Kind k, unsigned numBlocks) {
+  Block newHeader;
+  newHeader.d_headerConstant.d_kind = k;
+  newHeader.d_headerConstant.d_constblocks = numBlocks;
+  return newHeader;
+}
+
+Pickler::Pickler(ExprManager* em) :
+  d_private(new PicklerPrivate(*this, em)) {
+}
+
+Pickler::~Pickler() {
+  delete d_private;
+}
+
+void Pickler::toPickle(Expr e, Pickle& p)
+  throw(PicklingException) {
+  Assert(NodeManager::fromExprManager(e.getExprManager()) == d_private->d_nm);
+  Assert(d_private->atDefaultState());
+
+  try{
+    d_private->d_current.swap(*p.d_data);
+    d_private->toCaseNode(e.getTNode());
+    d_private->d_current.swap(*p.d_data);
+  }catch(PicklingException& pe){
+    d_private->d_current = PickleData();
+    Assert(d_private->atDefaultState());
+    throw pe;
+  }
+
+  Assert(d_private->atDefaultState());
+}
+
+void PicklerPrivate::toCaseNode(TNode n)
+  throw(AssertionException, PicklingException) {
+  Debug("pickler") << "toCaseNode: " << n << std::endl;
+  Kind k = n.getKind();
+  kind::MetaKind m = metaKindOf(k);
+  switch(m) {
+  case kind::metakind::CONSTANT:
+    toCaseConstant(n);
+    break;
+  case kind::metakind::VARIABLE:
+    toCaseVariable(n);
+    break;
+  case kind::metakind::OPERATOR:
+  case kind::metakind::PARAMETERIZED:
+    toCaseOperator(n);
+    break;
+  default:
+    Unhandled(m);
+  }
+}
+
+void PicklerPrivate::toCaseOperator(TNode n)
+  throw(AssertionException, PicklingException) {
+  Kind k = n.getKind();
+  kind::MetaKind m = metaKindOf(k);
+  Assert(m == kind::metakind::PARAMETERIZED || m == kind::metakind::OPERATOR);
+  if(m == kind::metakind::PARAMETERIZED) {
+    toCaseNode(n.getOperator());
+  }
+  for(TNode::iterator i = n.begin(), i_end = n.end(); i != i_end; ++i) {
+    toCaseNode(*i);
+  }
+  d_current << mkOperatorHeader(k, n.getNumChildren());
+}
+
+void PicklerPrivate::toCaseVariable(TNode n)
+  throw(AssertionException, PicklingException) {
+  Kind k = n.getKind();
+  Assert(metaKindOf(k) == kind::metakind::VARIABLE);
+
+  const NodeValue* nv = n.d_nv;
+  uint64_t asInt = reinterpret_cast<uint64_t>(nv);
+  uint64_t mapped = d_pickler.variableToMap(asInt);
+
+  uint32_t firstHalf = mapped >> 32;
+  uint32_t secondHalf = mapped & 0xffffffff;
+
+  d_current << mkVariableHeader(k);
+  d_current << mkBlockBody(firstHalf);
+  d_current << mkBlockBody(secondHalf);
+}
+
+
+void PicklerPrivate::toCaseConstant(TNode n) {
+  Kind k = n.getKind();
+  Assert(metaKindOf(k) == kind::metakind::CONSTANT);
+  switch(k) {
+  case kind::CONST_BOOLEAN:
+    d_current << mkConstantHeader(k, 1);
+    d_current << mkBlockBody(n.getConst<bool>());
+    break;
+  case kind::CONST_RATIONAL: {
+    std::string asString;
+    Assert(k == kind::CONST_RATIONAL);
+    const Rational& q = n.getConst<Rational>();
+    asString = q.toString(16);
+    toCaseString(k, asString);
+    break;
+  }
+  case kind::BITVECTOR_EXTRACT_OP: {
+    BitVectorExtract bve = n.getConst<BitVectorExtract>();
+    d_current << mkConstantHeader(k, 2);
+    d_current << mkBlockBody(bve.high);
+    d_current << mkBlockBody(bve.low);
+    break;
+  }
+  case kind::CONST_BITVECTOR: {
+    // irritating: we incorporate the size of the string in with the
+    // size of this constant, so it appears as one big constant and
+    // doesn't confuse anybody
+    BitVector bv = n.getConst<BitVector>();
+    std::string asString = bv.getValue().toString(16);
+    d_current << mkConstantHeader(k, 2 + asString.size());
+    d_current << mkBlockBody(bv.getSize());
+    toCaseString(k, asString);
+    break;
+  }
+  case  kind::BITVECTOR_SIGN_EXTEND_OP: {
+    BitVectorSignExtend bvse = n.getConst<BitVectorSignExtend>();
+    d_current << mkConstantHeader(k, 1);
+    d_current << mkBlockBody(bvse.signExtendAmount);
+    break;
+  }
+  default:
+    Unhandled(k);
+  }
+}
+
+void PicklerPrivate::toCaseString(Kind k, const std::string& s) {
+  d_current << mkConstantHeader(k, s.size());
+
+  unsigned size = s.size();
+  unsigned i;
+  for(i = 0; i + 4 <= size; i += 4) {
+    d_current << mkBlockBody4Chars(s[i + 0], s[i + 1],s[i + 2], s[i + 3]);
+  }
+  switch(size % 4) {
+  case 0: break;
+  case 1: d_current << mkBlockBody4Chars(s[i + 0], '\0','\0', '\0'); break;
+  case 2: d_current << mkBlockBody4Chars(s[i + 0], s[i + 1], '\0', '\0'); break;
+  case 3: d_current << mkBlockBody4Chars(s[i + 0], s[i + 1],s[i + 2], '\0'); break;
+  default:
+    Unreachable();
+  }
+
+}
+
+void Pickler::debugPickleTest(Expr e) {
+
+  //ExprManager *em = e.getExprManager();
+  //Expr e1 = mkVar("x", makeType());
+  //return ;
+
+  Pickler pickler(e.getExprManager());
+
+  Pickle p;
+  pickler.toPickle(e, p);
+
+  uint32_t size = p.d_data->size();
+  std::string str = p.d_data->toString();
+
+  Expr from = pickler.fromPickle(p);
+  ExprManagerScope ems(e);
+
+  Debug("pickle") << "before: " << e << std::endl;
+  Debug("pickle") << "after: " << from.getNode() << std::endl;
+  Debug("pickle") << "pickle: (oct) "<< size << " " << str.length() << " " << str << std::endl;
+
+  Assert(p.d_data->empty());
+  Assert(e == from);
+}
+
+Expr Pickler::fromPickle(Pickle& p) {
+  Assert(d_private->atDefaultState());
+
+  d_private->d_current.swap(*p.d_data);
+
+  while(!d_private->d_current.empty()) {
+    Block front = d_private->d_current.dequeue();
+
+    Kind k = (Kind)front.d_header.d_kind;
+    kind::MetaKind m = metaKindOf(k);
+
+    Node result = Node::null();
+    switch(m) {
+    case kind::metakind::VARIABLE:
+      result = d_private->fromCaseVariable(k);
+      break;
+    case kind::metakind::CONSTANT:
+      result = d_private->fromCaseConstant(k, front.d_headerConstant.d_constblocks);
+      break;
+    case kind::metakind::OPERATOR:
+    case kind::metakind::PARAMETERIZED:
+      result = d_private->fromCaseOperator(k, front.d_headerOperator.d_nchildren);
+      break;
+    default:
+      Unhandled(m);
+    }
+    Assert(result != Node::null());
+    d_private->d_stack.push(result);
+  }
+
+  Assert(d_private->d_current.empty());
+  Assert(d_private->d_stack.size() == 1);
+  Node res = d_private->d_stack.top();
+  d_private->d_stack.pop();
+
+  Assert(d_private->atDefaultState());
+
+  return d_private->d_nm->toExpr(res);
+}
+
+Node PicklerPrivate::fromCaseVariable(Kind k) {
+  Assert(metaKindOf(k) == kind::metakind::VARIABLE);
+
+  Block firstHalf = d_current.dequeue();
+  Block secondHalf = d_current.dequeue();
+
+  uint64_t asInt = firstHalf.d_body.d_data;
+  asInt = asInt << 32;
+  asInt = asInt | (secondHalf.d_body.d_data);
+
+  uint64_t mapped = d_pickler.variableFromMap(asInt);
+
+  NodeValue* nv = reinterpret_cast<NodeValue*>(mapped);
+  Node fromNodeValue(nv);
+
+  Assert(fromNodeValue.getKind() == k);
+
+  return fromNodeValue;
+}
+
+Node PicklerPrivate::fromCaseConstant(Kind k, uint32_t constblocks) {
+  switch(k) {
+  case kind::CONST_BOOLEAN: {
+    Assert(constblocks == 1);
+    Block val = d_current.dequeue();
+
+    bool b= val.d_body.d_data;
+    return d_nm->mkConst<bool>(b);
+  }
+  case kind::CONST_RATIONAL: {
+    std::string s = fromCaseString(constblocks);
+    Rational q(s, 16);
+    return d_nm->mkConst<Rational>(q);
+  }
+  case kind::BITVECTOR_EXTRACT_OP: {
+    Block high = d_current.dequeue();
+    Block low = d_current.dequeue();
+    BitVectorExtract bve(high.d_body.d_data, low.d_body.d_data);
+    return d_nm->mkConst<BitVectorExtract>(bve);
+  }
+  case kind::CONST_BITVECTOR: {
+    unsigned size = d_current.dequeue().d_body.d_data;
+    Block header CVC4_UNUSED = d_current.dequeue();
+    Assert(header.d_headerConstant.d_kind == kind::CONST_BITVECTOR);
+    Assert(header.d_headerConstant.d_constblocks == constblocks - 2);
+    Integer value(fromCaseString(constblocks - 2));
+    BitVector bv(size, value);
+    return d_nm->mkConst(bv);
+  }
+  case  kind::BITVECTOR_SIGN_EXTEND_OP: {
+    Block signExtendAmount = d_current.dequeue();
+    BitVectorSignExtend bvse(signExtendAmount.d_body.d_data);
+    return d_nm->mkConst<BitVectorSignExtend>(bvse);
+  }
+  default:
+    Unhandled(k);
+  }
+}
+
+std::string PicklerPrivate::fromCaseString(uint32_t size) {
+  std::stringstream ss;
+  unsigned i;
+  for(i = 0; i + 4 <= size; i += 4) {
+    Block front = d_current.dequeue();
+    BlockBody body = front.d_body;
+
+    ss << getCharBlockBody(body,0)
+       << getCharBlockBody(body,1)
+       << getCharBlockBody(body,2)
+       << getCharBlockBody(body,3);
+  }
+  Assert(i == size - (size%4) );
+  if(size % 4 != 0) {
+    Block front = d_current.dequeue();
+    BlockBody body = front.d_body;
+    switch(size % 4) {
+    case 1:
+      ss << getCharBlockBody(body,0);
+      break;
+    case 2:
+      ss << getCharBlockBody(body,0)
+         << getCharBlockBody(body,1);
+      break;
+    case 3:
+      ss << getCharBlockBody(body,0)
+         << getCharBlockBody(body,1)
+         << getCharBlockBody(body,2);
+      break;
+    default:
+      Unreachable();
+    }
+  }
+  return ss.str();
+}
+
+Node PicklerPrivate::fromCaseOperator(Kind k, uint32_t nchildren) {
+  kind::MetaKind m = metaKindOf(k);
+  bool parameterized = (m == kind::metakind::PARAMETERIZED);
+  uint32_t npops = nchildren + (parameterized? 1 : 0);
+
+  NodeStack aux;
+  while(npops > 0) {
+    Assert(!d_stack.empty());
+    Node top = d_stack.top();
+    aux.push(top);
+    d_stack.pop();
+    --npops;
+  }
+
+  NodeBuilder<> nb(d_nm, k);
+  while(!aux.empty()) {
+    Node top = aux.top();
+    nb << top;
+    aux.pop();
+  }
+
+  return nb;
+}
+
+Pickle::Pickle() {
+  d_data = new PickleData();
+}
+
+// Just copying the pointer isn't right, we have to copy the
+// underlying data.  Otherwise user-level Pickles will delete the data
+// twice! (once in each thread)
+Pickle::Pickle(const Pickle& p) {
+  d_data = new PickleData(*p.d_data);
+}
+
+Pickle& Pickle::operator = (const Pickle& other) {
+  if (this != &other) {
+    delete d_data;
+    d_data = new PickleData(*other.d_data);
+  }
+  return *this;
+}
+
+
+Pickle::~Pickle() {
+  delete d_data;
+}
+
+uint64_t MapPickler::variableFromMap(uint64_t x) const 
+{
+  VarMap::const_iterator i = d_fromMap.find(x);
+  Assert(i != d_fromMap.end());
+  return i->second;
+}
+
+}/* CVC4::expr::pickle namespace */
+}/* CVC4::expr namespace */
+}/* CVC4 namespace */
diff --git a/src/expr/pickler.h b/src/expr/pickler.h
new file mode 100644
index 0000000..abd9277
--- /dev/null
+++ b/src/expr/pickler.h
@@ -0,0 +1,135 @@
+/*********************                                                        */
+/*! \file pickler.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Kshitij Bansal
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This is a "pickler" for expressions
+ **
+ ** This is a "pickler" for expressions.  It produces a binary
+ ** serialization of an expression that can be converted back
+ ** into an expression in the same or another ExprManager.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__PICKLER_H
+#define __CVC4__PICKLER_H
+
+#include "expr/variable_type_map.h"
+#include "expr/expr.h"
+#include "base/exception.h"
+
+#include <exception>
+#include <stack>
+
+namespace CVC4 {
+
+class ExprManager;
+
+namespace expr {
+namespace pickle {
+
+class Pickler;
+class PicklerPrivate;
+
+class PickleData;// CVC4-internal representation
+
+class CVC4_PUBLIC Pickle {
+  PickleData* d_data;
+  friend class Pickler;
+  friend class PicklerPrivate;
+public:
+  Pickle();
+  Pickle(const Pickle& p);
+  ~Pickle();
+  Pickle& operator=(const Pickle& other);
+};/* class Pickle */
+
+class CVC4_PUBLIC PicklingException : public Exception {
+public:
+  PicklingException() :
+    Exception("Pickling failed") {
+  }
+};/* class PicklingException */
+
+class CVC4_PUBLIC Pickler {
+  PicklerPrivate* d_private;
+
+  friend class PicklerPrivate;
+
+protected:
+  virtual uint64_t variableToMap(uint64_t x) const
+    throw(PicklingException) {
+    return x;
+  }
+  virtual uint64_t variableFromMap(uint64_t x) const {
+    return x;
+  }
+
+public:
+  Pickler(ExprManager* em);
+  virtual ~Pickler();
+
+  /**
+   * Constructs a new Pickle of the node n.
+   * n must be a node allocated in the node manager specified at initialization
+   * time. The new pickle has variables mapped using the VariableIDMap provided
+   * at initialization.
+   * TODO: Fix comment
+   *
+   * @return the pickle, which should be dispose()'d when you're done with it
+   */
+  void toPickle(Expr e, Pickle& p) throw(PicklingException);
+
+  /**
+   * Constructs a node from a Pickle.
+   * This destroys the contents of the Pickle.
+   * The node is created in the NodeManager getNM();
+   * TODO: Fix comment
+   */
+  Expr fromPickle(Pickle& p);
+
+  static void debugPickleTest(Expr e);
+
+};/* class Pickler */
+
+class CVC4_PUBLIC MapPickler : public Pickler {
+private:
+  const VarMap& d_toMap;
+  const VarMap& d_fromMap;
+
+public:
+  MapPickler(ExprManager* em, const VarMap& to, const VarMap& from):
+    Pickler(em),
+    d_toMap(to),
+    d_fromMap(from) {
+  }
+
+  virtual ~MapPickler() throw() {}
+
+protected:
+
+  virtual uint64_t variableToMap(uint64_t x) const
+    throw(PicklingException) {
+    VarMap::const_iterator i = d_toMap.find(x);
+    if(i != d_toMap.end()) {
+      return i->second;
+    } else {
+      throw PicklingException();
+    }
+  }
+
+  virtual uint64_t variableFromMap(uint64_t x) const; 
+};/* class MapPickler */
+
+}/* CVC4::expr::pickle namespace */
+}/* CVC4::expr namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PICKLER_H */
diff --git a/src/expr/predicate.cpp b/src/expr/predicate.cpp
new file mode 100644
index 0000000..52b5801
--- /dev/null
+++ b/src/expr/predicate.cpp
@@ -0,0 +1,99 @@
+/*********************                                                        */
+/*! \file predicate.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Representation of predicates for predicate subtyping
+ **
+ ** Simple class to represent predicates for predicate subtyping.
+ ** Instances of this class are carried as the payload of
+ ** the CONSTANT-metakinded SUBTYPE_TYPE types.
+ **/
+#include "expr/predicate.h"
+
+#include "base/cvc4_assert.h"
+#include "expr/expr.h"
+
+
+using namespace std;
+
+namespace CVC4 {
+
+Predicate::Predicate(const Predicate& p)
+    : d_predicate(new Expr(p.getExpression()))
+    , d_witness(new Expr(p.getWitness()))
+{}
+
+Predicate::Predicate(const Expr& e) throw(IllegalArgumentException)
+    : d_predicate(new Expr(e))
+    , d_witness(new Expr())
+{
+  PrettyCheckArgument(! e.isNull(), e, "Predicate cannot be null");
+  PrettyCheckArgument(e.getType().isPredicate(), e,
+                      "Expression given is not predicate");
+  PrettyCheckArgument(FunctionType(e.getType()).getArgTypes().size() == 1, e,
+                      "Expression given is not predicate of a single argument");
+}
+
+Predicate::Predicate(const Expr& e, const Expr& w)
+    throw(IllegalArgumentException)
+    : d_predicate(new Expr(e))
+    , d_witness(new Expr(w))
+{
+  PrettyCheckArgument(! e.isNull(), e, "Predicate cannot be null");
+  PrettyCheckArgument(e.getType().isPredicate(), e,
+                      "Expression given is not predicate");
+  PrettyCheckArgument(FunctionType(e.getType()).getArgTypes().size() == 1, e,
+                      "Expression given is not predicate of a single argument");
+}
+
+Predicate::~Predicate() {
+  delete d_predicate;
+  delete d_witness;
+}
+
+Predicate& Predicate::operator=(const Predicate& p){
+  (*d_predicate) = p.getExpression();
+  (*d_witness) = p.getWitness();
+  return *this;
+}
+
+
+// Predicate::operator Expr() const {
+//   return d_predicate;
+// }
+
+const Expr& Predicate::getExpression() const {
+  return *d_predicate;
+}
+
+const Expr& Predicate::getWitness() const {
+  return *d_witness;
+}
+
+bool Predicate::operator==(const Predicate& p) const {
+  return getExpression() == p.getExpression() &&
+      getWitness() == p.getWitness();
+}
+
+std::ostream& operator<<(std::ostream& out, const Predicate& p) {
+  out << p.getExpression();
+  const Expr& witness = p.getWitness();
+  if(! witness.isNull()) {
+    out << " : " << witness;
+  }
+  return out;
+}
+
+size_t PredicateHashFunction::operator()(const Predicate& p) const {
+  ExprHashFunction h;
+  return h(p.getWitness()) * 5039 + h(p.getExpression());
+}
+
+}/* CVC4 namespace */
diff --git a/src/expr/predicate.h b/src/expr/predicate.h
new file mode 100644
index 0000000..a7003fb
--- /dev/null
+++ b/src/expr/predicate.h
@@ -0,0 +1,72 @@
+/*********************                                                        */
+/*! \file predicate.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Representation of predicates for predicate subtyping
+ **
+ ** Simple class to represent predicates for predicate subtyping.
+ ** Instances of this class are carried as the payload of
+ ** the CONSTANT-metakinded SUBTYPE_TYPE types.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__PREDICATE_H
+#define __CVC4__PREDICATE_H
+
+#include "base/exception.h"
+
+namespace CVC4 {
+
+class Predicate;
+
+std::ostream& operator<<(std::ostream& out, const Predicate& p) CVC4_PUBLIC;
+
+struct CVC4_PUBLIC PredicateHashFunction {
+  size_t operator()(const Predicate& p) const;
+};/* class PredicateHashFunction */
+
+}/* CVC4 namespace */
+
+
+namespace CVC4 {
+class CVC4_PUBLIC Expr;
+}/* CVC4 namespace */
+
+
+namespace CVC4 {
+class CVC4_PUBLIC Predicate {
+public:
+
+  Predicate(const Expr& e) throw(IllegalArgumentException);
+  Predicate(const Expr& e, const Expr& w) throw(IllegalArgumentException);
+
+  Predicate(const Predicate& p);
+  ~Predicate();
+  Predicate& operator=(const Predicate& p);
+
+  //operator Expr() const;
+
+  const Expr& getExpression() const;
+  const Expr& getWitness() const;
+
+  bool operator==(const Predicate& p) const;
+
+  friend std::ostream& CVC4::operator<<(std::ostream& out, const Predicate& p);
+  friend size_t PredicateHashFunction::operator()(const Predicate& p) const;
+
+private:
+  Expr* d_predicate;
+  Expr* d_witness;
+};/* class Predicate */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PREDICATE_H */
diff --git a/src/expr/predicate.i b/src/expr/predicate.i
new file mode 100644
index 0000000..aa80a98
--- /dev/null
+++ b/src/expr/predicate.i
@@ -0,0 +1,12 @@
+%{
+#include "expr/predicate.h"
+%}
+
+%rename(equals) CVC4::Predicate::operator==(const Predicate&) const;
+%rename(toExpr) CVC4::Predicate::operator Expr() const;
+
+%rename(apply) CVC4::PredicateHashFunction::operator()(const Predicate&) const;
+
+%ignore CVC4::operator<<(std::ostream&, const Predicate&);
+
+%include "expr/predicate.h"
diff --git a/src/expr/record.cpp b/src/expr/record.cpp
new file mode 100644
index 0000000..0d2fd65
--- /dev/null
+++ b/src/expr/record.cpp
@@ -0,0 +1,128 @@
+/*********************                                                        */
+/*! \file record.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A class representing a record definition
+ **
+ ** A class representing a record definition.
+ **/
+
+#include "expr/record.h"
+
+#include "base/cvc4_assert.h"
+#include "base/output.h"
+#include "expr/expr.h"
+#include "expr/type.h"
+
+
+namespace CVC4 {
+
+static Record::FieldVector::const_iterator find(const Record::FieldVector& fields, std::string name){
+  for(Record::FieldVector::const_iterator i = fields.begin(), i_end = fields.end(); i != i_end; ++i){
+    if((*i).first == name) {
+      return i;
+    }
+  }
+  return fields.end();
+}
+
+Record::Record(const FieldVector& fields)
+    : d_fields(new FieldVector(fields))
+{
+  Debug("record") << "making " << this << " " << d_fields << std::endl;
+}
+
+Record::Record(const Record& other)
+    : d_fields(new FieldVector(other.getFields()))
+{
+  Debug("record") << "copy constructor " << this << " " << d_fields << std::endl;
+}
+
+Record::~Record() {
+  Debug("record") << "deleting " << this << " " << d_fields << std::endl;
+  delete d_fields;
+}
+
+Record& Record::operator=(const Record& r) {
+  Debug("record") << "setting " << this << " " << d_fields << std::endl;
+  Record::FieldVector& local = *d_fields;
+  local = r.getFields();
+  return *this;
+}
+
+const Record::FieldVector& Record::getFields() const {
+  return *d_fields;
+}
+
+bool Record::contains(const std::string& name) const {
+  return find(*d_fields, name) != d_fields->end();
+}
+
+
+size_t Record::getIndex(std::string name) const {
+  FieldVector::const_iterator i = find(*d_fields, name);
+  PrettyCheckArgument(i != d_fields->end(), name,
+                      "requested field `%s' does not exist in record",
+                      name.c_str());
+  return i - d_fields->begin();
+}
+
+size_t Record::getNumFields() const {
+  return d_fields->size();
+}
+
+
+std::ostream& operator<<(std::ostream& os, const Record& r) {
+  os << "[# ";
+  bool first = true;
+  const Record::FieldVector& fields = r.getFields();
+  for(Record::FieldVector::const_iterator i = fields.begin(),
+      i_end = fields.end(); i != i_end; ++i) {
+    if(!first) {
+      os << ", ";
+    }
+    os << (*i).first << ":" << (*i).second;
+    first = false;
+  }
+  os << " #]";
+
+  return os;
+}
+
+size_t RecordHashFunction::operator()(const Record& r) const {
+  size_t n = 0;
+  const Record::FieldVector& fields = r.getFields();
+  for(Record::FieldVector::const_iterator i = fields.begin(),
+      i_end = fields.end(); i != i_end; ++i) {
+    n = (n << 3) ^ TypeHashFunction()((*i).second);
+  }
+  return n;
+}
+
+std::ostream& operator<<(std::ostream& out, const RecordSelect& t) {
+  return out << "[" << t.getField() << "]";
+}
+
+std::ostream& operator<<(std::ostream& out, const RecordUpdate& t) {
+  return out << "[" << t.getField() << "]";
+}
+
+
+const std::pair<std::string, Type>& Record::operator[](size_t index) const {
+  PrettyCheckArgument(index < d_fields->size(), index,
+                      "index out of bounds for record type");
+  return (*d_fields)[index];
+}
+
+bool Record::operator==(const Record& r) const {
+  return (*d_fields) == *(r.d_fields);
+}
+
+}/* CVC4 namespace */
diff --git a/src/expr/record.h b/src/expr/record.h
new file mode 100644
index 0000000..84feb7e
--- /dev/null
+++ b/src/expr/record.h
@@ -0,0 +1,109 @@
+/*********************                                                        */
+/*! \file record.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A class representing a Record definition
+ **
+ ** A class representing a Record definition.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__RECORD_H
+#define __CVC4__RECORD_H
+
+#include <iostream>
+#include <string>
+#include <vector>
+#include <utility>
+#include "util/hash.h"
+
+// Forward Declarations
+namespace CVC4 {
+// This forward delcartion is required to resolve a cicular dependency with
+// Record which is a referenced in a Kind file.
+class Type;
+} /* namespace CVC4 */
+
+namespace CVC4 {
+
+// operators for record select and update
+
+class CVC4_PUBLIC RecordSelect {
+  std::string d_field;
+public:
+  RecordSelect(const std::string& field) throw() : d_field(field) { }
+  std::string getField() const throw() { return d_field; }
+  bool operator==(const RecordSelect& t) const throw() { return d_field == t.d_field; }
+  bool operator!=(const RecordSelect& t) const throw() { return d_field != t.d_field; }
+};/* class RecordSelect */
+
+class CVC4_PUBLIC RecordUpdate {
+  std::string d_field;
+public:
+  RecordUpdate(const std::string& field) throw() : d_field(field) { }
+  std::string getField() const throw() { return d_field; }
+  bool operator==(const RecordUpdate& t) const throw() { return d_field == t.d_field; }
+  bool operator!=(const RecordUpdate& t) const throw() { return d_field != t.d_field; }
+};/* class RecordUpdate */
+
+struct CVC4_PUBLIC RecordSelectHashFunction {
+  inline size_t operator()(const RecordSelect& t) const {
+    return StringHashFunction()(t.getField());
+  }
+};/* struct RecordSelectHashFunction */
+
+struct CVC4_PUBLIC RecordUpdateHashFunction {
+  inline size_t operator()(const RecordUpdate& t) const {
+    return StringHashFunction()(t.getField());
+  }
+};/* struct RecordUpdateHashFunction */
+
+std::ostream& operator<<(std::ostream& out, const RecordSelect& t) CVC4_PUBLIC;
+std::ostream& operator<<(std::ostream& out, const RecordUpdate& t) CVC4_PUBLIC;
+
+// now an actual record definition
+class CVC4_PUBLIC Record {
+public:
+  // Type must stay as incomplete types throughout this header!
+  // Everything containing a Type must be a pointer or a reference.
+  typedef std::vector< std::pair<std::string, Type> > FieldVector;
+
+  Record(const FieldVector& fields);
+  Record(const Record& other);
+  ~Record();
+  Record& operator=(const Record& r);
+
+  bool contains(const std::string &name) const;
+
+  size_t getIndex(std::string name) const;
+  size_t getNumFields() const;
+
+  const FieldVector& getFields() const;
+  const std::pair<std::string, Type>& operator[](size_t index) const;
+
+  bool operator==(const Record& r) const;
+  bool operator!=(const Record& r) const {
+    return !(*this == r);
+  }
+
+private:
+  FieldVector* d_fields;
+};/* class Record */
+
+struct CVC4_PUBLIC RecordHashFunction {
+  size_t operator()(const Record& r) const;
+};/* struct RecordHashFunction */
+
+std::ostream& operator<<(std::ostream& os, const Record& r) CVC4_PUBLIC;
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__RECORD_H */
diff --git a/src/expr/record.i b/src/expr/record.i
new file mode 100644
index 0000000..695ff10
--- /dev/null
+++ b/src/expr/record.i
@@ -0,0 +1,58 @@
+%{
+#include "expr/record.h"
+
+#ifdef SWIGJAVA
+
+#include "bindings/java_iterator_adapter.h"
+#include "bindings/java_stream_adapters.h"
+
+#endif /* SWIGJAVA */
+%}
+
+%rename(equals) CVC4::RecordSelect::operator==(const RecordSelect&) const;
+%ignore CVC4::RecordSelect::operator!=(const RecordSelect&) const;
+
+%rename(equals) CVC4::RecordUpdate::operator==(const RecordUpdate&) const;
+%ignore CVC4::RecordUpdate::operator!=(const RecordUpdate&) const;
+
+%rename(equals) CVC4::Record::operator==(const Record&) const;
+%ignore CVC4::Record::operator!=(const Record&) const;
+%rename(getField) CVC4::Record::operator[](size_t) const;
+
+%rename(apply) CVC4::RecordHashFunction::operator()(const Record&) const;
+%rename(apply) CVC4::RecordSelectHashFunction::operator()(const RecordSelect&) const;
+%rename(apply) CVC4::RecordUpdateHashFunction::operator()(const RecordUpdate&) const;
+
+%ignore CVC4::operator<<(std::ostream&, const Record&);
+%ignore CVC4::operator<<(std::ostream&, const RecordSelect&);
+%ignore CVC4::operator<<(std::ostream&, const RecordUpdate&);
+
+#ifdef SWIGJAVA
+
+// These Object arrays are always of two elements, the first is a String and the second a
+// Type.  (On the C++ side, it is a std::pair<std::string, Type>.)
+%typemap(jni) std::pair<std::string, CVC4::Type> "jobjectArray";
+%typemap(jtype) std::pair<std::string, CVC4::Type> "java.lang.Object[]";
+%typemap(jstype) std::pair<std::string, CVC4::Type> "java.lang.Object[]";
+%typemap(javaout) std::pair<std::string, CVC4::Type> { return $jnicall; }
+%typemap(out) std::pair<std::string, CVC4::Type> {
+      $result = jenv->NewObjectArray(2, jenv->FindClass("java/lang/Object"), $null);
+      jenv->SetObjectArrayElement($result, 0, jenv->NewStringUTF($1.first.c_str()));
+      jclass clazz = jenv->FindClass("edu/nyu/acsys/CVC4/Type");
+      jmethodID methodid = jenv->GetMethodID(clazz, "<init>", "(JZ)V");
+      jenv->SetObjectArrayElement($result, 1, jenv->NewObject(clazz, methodid, reinterpret_cast<long>(new CVC4::Type($1.second)), true));
+    };
+
+
+
+#endif /* SWIGJAVA */
+
+%include "expr/record.h"
+
+#ifdef SWIGJAVA
+
+%include "bindings/java_iterator_adapter.h"
+%include "bindings/java_stream_adapters.h"
+
+
+#endif /* SWIGJAVA */
diff --git a/src/expr/symbol_table.cpp b/src/expr/symbol_table.cpp
new file mode 100644
index 0000000..185006e
--- /dev/null
+++ b/src/expr/symbol_table.cpp
@@ -0,0 +1,215 @@
+/*********************                                                        */
+/*! \file symbol_table.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Christopher L. Conway, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Convenience class for scoping variable and type
+ ** declarations (implementation)
+ **
+ ** Convenience class for scoping variable and type declarations
+ ** (implementation).
+ **/
+
+#include "expr/symbol_table.h"
+
+#include <string>
+#include <utility>
+
+#include "context/cdhashmap.h"
+#include "context/cdhashset.h"
+#include "context/context.h"
+#include "expr/expr.h"
+#include "expr/expr_manager_scope.h"
+#include "expr/type.h"
+
+
+using namespace CVC4::context;
+using namespace std;
+
+namespace CVC4 {
+
+SymbolTable::SymbolTable() :
+  d_context(new Context()),
+  d_exprMap(new(true) CDHashMap<std::string, Expr, StringHashFunction>(d_context)),
+  d_typeMap(new(true) CDHashMap<std::string, pair<vector<Type>, Type>, StringHashFunction>(d_context)),
+  d_functions(new(true) CDHashSet<Expr, ExprHashFunction>(d_context)) {
+}
+
+SymbolTable::~SymbolTable() {
+  d_exprMap->deleteSelf();
+  d_typeMap->deleteSelf();
+  d_functions->deleteSelf();
+  delete d_context;
+}
+
+void SymbolTable::bind(const std::string& name, Expr obj,
+                       bool levelZero) throw() {
+  PrettyCheckArgument(!obj.isNull(), obj, "cannot bind to a null Expr");
+  ExprManagerScope ems(obj);
+  if(levelZero) d_exprMap->insertAtContextLevelZero(name, obj);
+  else d_exprMap->insert(name, obj);
+}
+
+void SymbolTable::bindDefinedFunction(const std::string& name, Expr obj,
+                                      bool levelZero) throw() {
+  PrettyCheckArgument(!obj.isNull(), obj, "cannot bind to a null Expr");
+  ExprManagerScope ems(obj);
+  if(levelZero){
+    d_exprMap->insertAtContextLevelZero(name, obj);
+    d_functions->insertAtContextLevelZero(obj);
+  } else {
+    d_exprMap->insert(name, obj);
+    d_functions->insert(obj);
+  }
+}
+
+bool SymbolTable::isBound(const std::string& name) const throw() {
+  return d_exprMap->find(name) != d_exprMap->end();
+}
+
+bool SymbolTable::isBoundDefinedFunction(const std::string& name) const throw() {
+  CDHashMap<std::string, Expr, StringHashFunction>::iterator found =
+    d_exprMap->find(name);
+  return found != d_exprMap->end() && d_functions->contains((*found).second);
+}
+
+bool SymbolTable::isBoundDefinedFunction(Expr func) const throw() {
+  return d_functions->contains(func);
+}
+
+Expr SymbolTable::lookup(const std::string& name) const throw() {
+  return (*d_exprMap->find(name)).second;
+}
+
+void SymbolTable::bindType(const std::string& name, Type t,
+                           bool levelZero) throw() {
+  if(levelZero) {
+    d_typeMap->insertAtContextLevelZero(name, make_pair(vector<Type>(), t));
+  } else {
+    d_typeMap->insert(name, make_pair(vector<Type>(), t));
+  }
+}
+
+void SymbolTable::bindType(const std::string& name,
+                           const std::vector<Type>& params,
+                           Type t,
+                           bool levelZero) throw() {
+  if(Debug.isOn("sort")) {
+    Debug("sort") << "bindType(" << name << ", [";
+    if(params.size() > 0) {
+      copy( params.begin(), params.end() - 1,
+            ostream_iterator<Type>(Debug("sort"), ", ") );
+      Debug("sort") << params.back();
+    }
+    Debug("sort") << "], " << t << ")" << endl;
+  }
+  if(levelZero) {
+    d_typeMap->insertAtContextLevelZero(name, make_pair(params, t));
+  } else {
+    d_typeMap->insert(name, make_pair(params, t));
+  }
+}
+
+bool SymbolTable::isBoundType(const std::string& name) const throw() {
+  return d_typeMap->find(name) != d_typeMap->end();
+}
+
+Type SymbolTable::lookupType(const std::string& name) const throw() {
+  pair<vector<Type>, Type> p = (*d_typeMap->find(name)).second;
+  PrettyCheckArgument(p.first.size() == 0, name,
+                "type constructor arity is wrong: "
+                "`%s' requires %u parameters but was provided 0",
+                name.c_str(), p.first.size());
+  return p.second;
+}
+
+Type SymbolTable::lookupType(const std::string& name,
+                             const std::vector<Type>& params) const throw() {
+  pair<vector<Type>, Type> p = (*d_typeMap->find(name)).second;
+  PrettyCheckArgument(p.first.size() == params.size(), params,
+                "type constructor arity is wrong: "
+                "`%s' requires %u parameters but was provided %u",
+         name.c_str(), p.first.size(), params.size());
+  if(p.first.size() == 0) {
+    PrettyCheckArgument(p.second.isSort(), name.c_str());
+    return p.second;
+  }
+  if(p.second.isSortConstructor()) {
+    if(Debug.isOn("sort")) {
+      Debug("sort") << "instantiating using a sort constructor" << endl;
+      Debug("sort") << "have formals [";
+      copy( p.first.begin(), p.first.end() - 1,
+            ostream_iterator<Type>(Debug("sort"), ", ") );
+      Debug("sort") << p.first.back() << "]" << endl
+                    << "parameters   [";
+      copy( params.begin(), params.end() - 1,
+            ostream_iterator<Type>(Debug("sort"), ", ") );
+      Debug("sort") << params.back() << "]" << endl
+                    << "type ctor    " << name << endl
+                    << "type is      " << p.second << endl;
+    }
+
+    Type instantiation =
+      SortConstructorType(p.second).instantiate(params);
+
+    Debug("sort") << "instance is  " << instantiation << endl;
+
+    return instantiation;
+  } else if(p.second.isDatatype()) {
+    PrettyCheckArgument(DatatypeType(p.second).isParametric(), name, "expected parametric datatype");
+    return DatatypeType(p.second).instantiate(params);
+  } else {
+    if(Debug.isOn("sort")) {
+      Debug("sort") << "instantiating using a sort substitution" << endl;
+      Debug("sort") << "have formals [";
+      copy( p.first.begin(), p.first.end() - 1,
+            ostream_iterator<Type>(Debug("sort"), ", ") );
+      Debug("sort") << p.first.back() << "]" << endl
+                    << "parameters   [";
+      copy( params.begin(), params.end() - 1,
+            ostream_iterator<Type>(Debug("sort"), ", ") );
+      Debug("sort") << params.back() << "]" << endl
+                    << "type ctor    " << name << endl
+                    << "type is      " << p.second << endl;
+    }
+
+    Type instantiation = p.second.substitute(p.first, params);
+
+    Debug("sort") << "instance is  " << instantiation << endl;
+
+    return instantiation;
+  }
+}
+
+size_t SymbolTable::lookupArity(const std::string& name) {
+  pair<vector<Type>, Type> p = (*d_typeMap->find(name)).second;
+  return p.first.size();
+}
+
+void SymbolTable::popScope() throw(ScopeException) {
+  if( d_context->getLevel() == 0 ) {
+    throw ScopeException();
+  }
+  d_context->pop();
+}
+
+void SymbolTable::pushScope() throw() {
+  d_context->push();
+}
+
+size_t SymbolTable::getLevel() const throw() {
+  return d_context->getLevel();
+}
+
+void SymbolTable::reset() {
+  this->SymbolTable::~SymbolTable();
+  new(this) SymbolTable();
+}
+
+}/* CVC4 namespace */
diff --git a/src/expr/symbol_table.h b/src/expr/symbol_table.h
new file mode 100644
index 0000000..efd0f1a
--- /dev/null
+++ b/src/expr/symbol_table.h
@@ -0,0 +1,208 @@
+/*********************                                                        */
+/*! \file symbol_table.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Christopher L. Conway, Francois Bobot
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Convenience class for scoping variable and type declarations.
+ **
+ ** Convenience class for scoping variable and type declarations.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__SYMBOL_TABLE_H
+#define __CVC4__SYMBOL_TABLE_H
+
+#include <vector>
+#include <utility>
+#include <ext/hash_map>
+
+#include "expr/expr.h"
+#include "util/hash.h"
+
+#include "context/cdhashset_forward.h"
+#include "context/cdhashmap_forward.h"
+
+namespace CVC4 {
+
+class Type;
+
+namespace context {
+  class Context;
+}/* CVC4::context namespace */
+
+class CVC4_PUBLIC ScopeException : public Exception {
+};/* class ScopeException */
+
+/**
+ * A convenience class for handling scoped declarations. Implements the usual
+ * nested scoping rules for declarations, with separate bindings for expressions
+ * and types.
+ */
+class CVC4_PUBLIC SymbolTable {
+  /** The context manager for the scope maps. */
+  context::Context* d_context;
+
+  /** A map for expressions. */
+  context::CDHashMap<std::string, Expr, StringHashFunction> *d_exprMap;
+
+  /** A map for types. */
+  context::CDHashMap<std::string, std::pair<std::vector<Type>, Type>, StringHashFunction> *d_typeMap;
+
+  /** A set of defined functions. */
+  context::CDHashSet<Expr, ExprHashFunction> *d_functions;
+
+public:
+  /** Create a symbol table. */
+  SymbolTable();
+
+  /** Destroy a symbol table. */
+  ~SymbolTable();
+
+  /**
+   * Bind an expression to a name in the current scope level.  If
+   * <code>name</code> is already bound to an expression in the current
+   * level, then the binding is replaced. If <code>name</code> is bound
+   * in a previous level, then the binding is "covered" by this one
+   * until the current scope is popped. If levelZero is true the name
+   * shouldn't be already bound.
+   *
+   * @param name an identifier
+   * @param obj the expression to bind to <code>name</code>
+   * @param levelZero set if the binding must be done at level 0
+   */
+  void bind(const std::string& name, Expr obj, bool levelZero = false) throw();
+
+  /**
+   * Bind a function body to a name in the current scope.  If
+   * <code>name</code> is already bound to an expression in the current
+   * level, then the binding is replaced. If <code>name</code> is bound
+   * in a previous level, then the binding is "covered" by this one
+   * until the current scope is popped.  Same as bind() but registers
+   * this as a function (so that isBoundDefinedFunction() returns true).
+   *
+   * @param name an identifier
+   * @param obj the expression to bind to <code>name</code>
+   * @param levelZero set if the binding must be done at level 0
+   */
+  void bindDefinedFunction(const std::string& name, Expr obj, bool levelZero = false) throw();
+
+  /**
+   * Bind a type to a name in the current scope.  If <code>name</code>
+   * is already bound to a type in the current level, then the binding
+   * is replaced. If <code>name</code> is bound in a previous level,
+   * then the binding is "covered" by this one until the current scope
+   * is popped.
+   *
+   * @param name an identifier
+   * @param t the type to bind to <code>name</code>
+   * @param levelZero set if the binding must be done at level 0
+   */
+  void bindType(const std::string& name, Type t, bool levelZero = false) throw();
+
+  /**
+   * Bind a type to a name in the current scope.  If <code>name</code>
+   * is already bound to a type or type constructor in the current
+   * level, then the binding is replaced. If <code>name</code> is
+   * bound in a previous level, then the binding is "covered" by this
+   * one until the current scope is popped.
+   *
+   * @param name an identifier
+   * @param params the parameters to the type
+   * @param t the type to bind to <code>name</code>
+   * @param levelZero true to bind it globally (default is to bind it
+   * locally within the current scope)
+   */
+  void bindType(const std::string& name,
+                const std::vector<Type>& params,
+                Type t, bool levelZero = false) throw();
+
+  /**
+   * Check whether a name is bound to an expression with either bind()
+   * or bindDefinedFunction().
+   *
+   * @param name the identifier to check.
+   * @returns true iff name is bound in the current scope.
+   */
+  bool isBound(const std::string& name) const throw();
+
+  /**
+   * Check whether a name was bound to a function with bindDefinedFunction().
+   */
+  bool isBoundDefinedFunction(const std::string& name) const throw();
+
+  /**
+   * Check whether an Expr was bound to a function (i.e., was the
+   * second arg to bindDefinedFunction()).
+   */
+  bool isBoundDefinedFunction(Expr func) const throw();
+
+  /**
+   * Check whether a name is bound to a type (or type constructor).
+   *
+   * @param name the identifier to check.
+   * @returns true iff name is bound to a type in the current scope.
+   */
+  bool isBoundType(const std::string& name) const throw();
+
+  /**
+   * Lookup a bound expression.
+   *
+   * @param name the identifier to lookup
+   * @returns the expression bound to <code>name</code> in the current scope.
+   */
+  Expr lookup(const std::string& name) const throw();
+
+  /**
+   * Lookup a bound type.
+   *
+   * @param name the type identifier to lookup
+   * @returns the type bound to <code>name</code> in the current scope.
+   */
+  Type lookupType(const std::string& name) const throw();
+
+  /**
+   * Lookup a bound parameterized type.
+   *
+   * @param name the type-constructor identifier to lookup
+   * @param params the types to use to parameterize the type
+   * @returns the type bound to <code>name(<i>params</i>)</code> in
+   * the current scope.
+   */
+  Type lookupType(const std::string& name,
+                  const std::vector<Type>& params) const throw();
+
+  /**
+   * Lookup the arity of a bound parameterized type.
+   */
+  size_t lookupArity(const std::string& name);
+
+  /**
+   * Pop a scope level. Deletes all bindings since the last call to
+   * <code>pushScope</code>. Calls to <code>pushScope</code> and
+   * <code>popScope</code> must be "properly nested." I.e., a call to
+   * <code>popScope</code> is only legal if the number of prior calls to
+   * <code>pushScope</code> on this <code>SymbolTable</code> is strictly
+   * greater than then number of prior calls to <code>popScope</code>. */
+  void popScope() throw(ScopeException);
+
+  /** Push a scope level. */
+  void pushScope() throw();
+
+  /** Get the current level of this symbol table. */
+  size_t getLevel() const throw();
+
+  /** Reset everything. */
+  void reset();
+
+};/* class SymbolTable */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__SYMBOL_TABLE_H */
diff --git a/src/expr/symbol_table.i b/src/expr/symbol_table.i
new file mode 100644
index 0000000..7e5579c
--- /dev/null
+++ b/src/expr/symbol_table.i
@@ -0,0 +1,5 @@
+%{
+#include "expr/symbol_table.h"
+%}
+
+%include "expr/symbol_table.h"
diff --git a/src/expr/type.cpp b/src/expr/type.cpp
new file mode 100644
index 0000000..5f62317
--- /dev/null
+++ b/src/expr/type.cpp
@@ -0,0 +1,677 @@
+/*********************                                                        */
+/*! \file type.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of expression types
+ **
+ ** Implementation of expression types.
+ **/
+#include "expr/type.h"
+
+#include <iostream>
+#include <string>
+#include <vector>
+
+#include "base/exception.h"
+#include "expr/node_manager.h"
+#include "expr/node_manager_attributes.h"
+#include "expr/type_node.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+ostream& operator<<(ostream& out, const Type& t) {
+  NodeManagerScope nms(t.d_nodeManager);
+  return out << *Type::getTypeNode(t);
+}
+
+Type Type::makeType(const TypeNode& typeNode) const {
+  return Type(d_nodeManager, new TypeNode(typeNode));
+}
+
+Type::Type(NodeManager* nm, TypeNode* node) :
+  d_typeNode(node),
+  d_nodeManager(nm) {
+}
+
+Type::~Type() {
+  NodeManagerScope nms(d_nodeManager);
+  delete d_typeNode;
+}
+
+Type::Type() :
+  d_typeNode(new TypeNode),
+  d_nodeManager(NULL) {
+}
+
+Type::Type(const Type& t) :
+  d_typeNode(new TypeNode(*t.d_typeNode)),
+  d_nodeManager(t.d_nodeManager) {
+}
+
+bool Type::isNull() const {
+  return d_typeNode->isNull();
+}
+
+Cardinality Type::getCardinality() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->getCardinality();
+}
+
+bool Type::isWellFounded() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isWellFounded();
+}
+
+Expr Type::mkGroundTerm() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->mkGroundTerm().toExpr();
+}
+
+bool Type::isSubtypeOf(Type t) const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isSubtypeOf(*t.d_typeNode);
+}
+
+bool Type::isComparableTo(Type t) const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isComparableTo(*t.d_typeNode);
+}
+
+Type Type::getBaseType() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->getBaseType().toType();
+}
+
+Type& Type::operator=(const Type& t) {
+  PrettyCheckArgument(d_typeNode != NULL, this, "Unexpected NULL typenode pointer!");
+  PrettyCheckArgument(t.d_typeNode != NULL, t, "Unexpected NULL typenode pointer!");
+
+  if(this != &t) {
+    if(d_nodeManager == t.d_nodeManager) {
+      NodeManagerScope nms(d_nodeManager);
+      *d_typeNode = *t.d_typeNode;
+    } else {
+      // This happens more than you think---every time you set to or
+      // from the null Type.  It's tricky because each node manager
+      // must be in play at the right time.
+
+      NodeManagerScope nms1(d_nodeManager);
+      *d_typeNode = TypeNode::null();
+
+      NodeManagerScope nms2(t.d_nodeManager);
+      *d_typeNode = *t.d_typeNode;
+
+      d_nodeManager = t.d_nodeManager;
+    }
+  }
+  return *this;
+}
+
+bool Type::operator==(const Type& t) const {
+  NodeManagerScope nms(d_nodeManager);
+  return *d_typeNode == *t.d_typeNode;
+}
+
+bool Type::operator!=(const Type& t) const {
+  NodeManagerScope nms(d_nodeManager);
+  return *d_typeNode != *t.d_typeNode;
+}
+
+bool Type::operator<(const Type& t) const {
+  NodeManagerScope nms(d_nodeManager);
+  return *d_typeNode < *t.d_typeNode;
+}
+
+bool Type::operator<=(const Type& t) const {
+  NodeManagerScope nms(d_nodeManager);
+  return *d_typeNode <= *t.d_typeNode;
+}
+
+bool Type::operator>(const Type& t) const {
+  NodeManagerScope nms(d_nodeManager);
+  return *d_typeNode > *t.d_typeNode;
+}
+
+bool Type::operator>=(const Type& t) const {
+  NodeManagerScope nms(d_nodeManager);
+  return *d_typeNode >= *t.d_typeNode;
+}
+
+Type Type::substitute(const Type& type, const Type& replacement) const {
+  NodeManagerScope nms(d_nodeManager);
+  return makeType(d_typeNode->substitute(*type.d_typeNode,
+                                         *replacement.d_typeNode));
+}
+
+Type Type::substitute(const std::vector<Type>& types,
+                      const std::vector<Type>& replacements) const {
+  NodeManagerScope nms(d_nodeManager);
+
+  vector<TypeNode> typesNodes, replacementsNodes;
+
+  for(vector<Type>::const_iterator i = types.begin(),
+        iend = types.end();
+      i != iend;
+      ++i) {
+    typesNodes.push_back(*(*i).d_typeNode);
+  }
+
+  for(vector<Type>::const_iterator i = replacements.begin(),
+        iend = replacements.end();
+      i != iend;
+      ++i) {
+    replacementsNodes.push_back(*(*i).d_typeNode);
+  }
+
+  return makeType(d_typeNode->substitute(typesNodes.begin(),
+                                         typesNodes.end(),
+                                         replacementsNodes.begin(),
+                                         replacementsNodes.end()));
+}
+
+ExprManager* Type::getExprManager() const {
+  return d_nodeManager->toExprManager();
+}
+
+Type Type::exportTo(ExprManager* exprManager, ExprManagerMapCollection& vmap) const {
+  return ExprManager::exportType(*this, exprManager, vmap);
+}
+
+void Type::toStream(std::ostream& out) const {
+  NodeManagerScope nms(d_nodeManager);
+  out << *d_typeNode;
+  return;
+}
+
+string Type::toString() const {
+  NodeManagerScope nms(d_nodeManager);
+  stringstream ss;
+  ss << *d_typeNode;
+  return ss.str();
+}
+
+/** Is this the Boolean type? */
+bool Type::isBoolean() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isBoolean();
+}
+
+/** Is this the integer type? */
+bool Type::isInteger() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isInteger();
+}
+
+/** Is this the real type? */
+bool Type::isReal() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isReal();
+}
+
+/** Is this the string type? */
+bool Type::isString() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isString();
+}
+
+/** Is this the regexp type? */
+bool Type::isRegExp() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isRegExp();
+}
+
+/** Is this the rounding mode type? */
+bool Type::isRoundingMode() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isRoundingMode();
+}
+
+/** Is this the bit-vector type? */
+bool Type::isBitVector() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isBitVector();
+}
+
+/** Is this the floating-point type? */
+bool Type::isFloatingPoint() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isFloatingPoint();
+}
+
+/** Is this a datatype type? */
+bool Type::isDatatype() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isDatatype();
+}
+
+/** Is this the Constructor type? */
+bool Type::isConstructor() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isConstructor();
+}
+
+/** Is this the Selector type? */
+bool Type::isSelector() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isSelector();
+}
+
+/** Is this the Tester type? */
+bool Type::isTester() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isTester();
+}
+
+/** Is this a function type? */
+bool Type::isFunction() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isFunction();
+}
+
+/**
+ * Is this a predicate type? NOTE: all predicate types are also
+ * function types.
+ */
+bool Type::isPredicate() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isPredicate();
+}
+
+/** Is this a tuple type? */
+bool Type::isTuple() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isTuple();
+}
+
+/** Is this a record type? */
+bool Type::isRecord() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isRecord();
+}
+
+/** Is this a symbolic expression type? */
+bool Type::isSExpr() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isSExpr();
+}
+
+/** Is this an array type? */
+bool Type::isArray() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isArray();
+}
+
+/** Is this a Set type? */
+bool Type::isSet() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isSet();
+}
+
+/** Is this a sort kind */
+bool Type::isSort() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isSort();
+}
+
+/** Cast to a sort type */
+bool Type::isSortConstructor() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isSortConstructor();
+}
+
+/** Is this a predicate subtype */
+/* - not in release 1.0
+bool Type::isPredicateSubtype() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isPredicateSubtype();
+}
+*/
+
+/** Is this an integer subrange */
+bool Type::isSubrange() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->isSubrange();
+}
+
+size_t FunctionType::getArity() const {
+  return d_typeNode->getNumChildren() - 1;
+}
+
+vector<Type> FunctionType::getArgTypes() const {
+  NodeManagerScope nms(d_nodeManager);
+  vector<Type> args;
+  vector<TypeNode> argNodes = d_typeNode->getArgTypes();
+  vector<TypeNode>::iterator it = argNodes.begin();
+  vector<TypeNode>::iterator it_end = argNodes.end();
+  for(; it != it_end; ++ it) {
+    args.push_back(makeType(*it));
+  }
+  return args;
+}
+
+Type FunctionType::getRangeType() const {
+  NodeManagerScope nms(d_nodeManager);
+  PrettyCheckArgument(isNull() || isFunction(), this);
+  return makeType(d_typeNode->getRangeType());
+}
+
+vector<Type> SExprType::getTypes() const {
+  NodeManagerScope nms(d_nodeManager);
+  vector<Type> types;
+  vector<TypeNode> typeNodes = d_typeNode->getSExprTypes();
+  vector<TypeNode>::iterator it = typeNodes.begin();
+  vector<TypeNode>::iterator it_end = typeNodes.end();
+  for(; it != it_end; ++ it) {
+    types.push_back(makeType(*it));
+  }
+  return types;
+}
+
+string SortType::getName() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->getAttribute(expr::VarNameAttr());
+}
+
+bool SortType::isParameterized() const {
+  return false;
+}
+
+/** Get the parameter types */
+std::vector<Type> SortType::getParamTypes() const {
+  vector<Type> params;
+  return params;
+}
+
+string SortConstructorType::getName() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->getAttribute(expr::VarNameAttr());
+}
+
+size_t SortConstructorType::getArity() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->getAttribute(expr::SortArityAttr());
+}
+
+SortType SortConstructorType::instantiate(const std::vector<Type>& params) const {
+  NodeManagerScope nms(d_nodeManager);
+  vector<TypeNode> paramsNodes;
+  for(vector<Type>::const_iterator i = params.begin(),
+        iend = params.end();
+      i != iend;
+      ++i) {
+    paramsNodes.push_back(*getTypeNode(*i));
+  }
+  return SortType(makeType(d_nodeManager->mkSort(*d_typeNode, paramsNodes)));
+}
+
+BooleanType::BooleanType(const Type& t) throw(IllegalArgumentException) :
+  Type(t) {
+  PrettyCheckArgument(isNull() || isBoolean(), this);
+}
+
+IntegerType::IntegerType(const Type& t) throw(IllegalArgumentException) :
+  Type(t) {
+  PrettyCheckArgument(isNull() || isInteger(), this);
+}
+
+RealType::RealType(const Type& t) throw(IllegalArgumentException) :
+  Type(t) {
+  PrettyCheckArgument(isNull() || isReal(), this);
+}
+
+StringType::StringType(const Type& t) throw(IllegalArgumentException) :
+  Type(t) {
+  PrettyCheckArgument(isNull() || isString(), this);
+}
+
+RegExpType::RegExpType(const Type& t) throw(IllegalArgumentException) :
+  Type(t) {
+  PrettyCheckArgument(isNull() || isRegExp(), this);
+}
+
+RoundingModeType::RoundingModeType(const Type& t) throw(IllegalArgumentException) :
+  Type(t) {
+  PrettyCheckArgument(isNull() || isRoundingMode(), this);
+}
+
+BitVectorType::BitVectorType(const Type& t) throw(IllegalArgumentException) :
+  Type(t) {
+  PrettyCheckArgument(isNull() || isBitVector(), this);
+}
+
+FloatingPointType::FloatingPointType(const Type& t) throw(IllegalArgumentException) :
+  Type(t) {
+  PrettyCheckArgument(isNull() || isFloatingPoint(), this);
+}
+
+DatatypeType::DatatypeType(const Type& t) throw(IllegalArgumentException) :
+  Type(t) {
+  PrettyCheckArgument(isNull() || isDatatype(), this);
+}
+
+ConstructorType::ConstructorType(const Type& t) throw(IllegalArgumentException) :
+  Type(t) {
+  PrettyCheckArgument(isNull() || isConstructor(), this);
+}
+
+SelectorType::SelectorType(const Type& t) throw(IllegalArgumentException) :
+  Type(t) {
+  PrettyCheckArgument(isNull() || isSelector(), this);
+}
+
+TesterType::TesterType(const Type& t) throw(IllegalArgumentException)
+    : Type(t) {
+  PrettyCheckArgument(isNull() || isTester(), this);
+}
+
+FunctionType::FunctionType(const Type& t) throw(IllegalArgumentException)
+    : Type(t) {
+  PrettyCheckArgument(isNull() || isFunction(), this);
+}
+
+SExprType::SExprType(const Type& t) throw(IllegalArgumentException)
+    : Type(t) {
+  PrettyCheckArgument(isNull() || isSExpr(), this);
+}
+
+ArrayType::ArrayType(const Type& t) throw(IllegalArgumentException)
+    : Type(t) {
+  PrettyCheckArgument(isNull() || isArray(), this);
+}
+
+SetType::SetType(const Type& t) throw(IllegalArgumentException)
+    : Type(t) {
+  PrettyCheckArgument(isNull() || isSet(), this);
+}
+
+SortType::SortType(const Type& t) throw(IllegalArgumentException)
+    : Type(t) {
+  PrettyCheckArgument(isNull() || isSort(), this);
+}
+
+SortConstructorType::SortConstructorType(const Type& t)
+  throw(IllegalArgumentException)
+    : Type(t) {
+  PrettyCheckArgument(isNull() || isSortConstructor(), this);
+}
+
+/* - not in release 1.0
+PredicateSubtype::PredicateSubtype(const Type& t)
+  throw(IllegalArgumentException) :
+  Type(t) {
+  PrettyCheckArgument(isNull() || isPredicateSubtype(), this);
+}
+*/
+
+SubrangeType::SubrangeType(const Type& t)
+  throw(IllegalArgumentException) :
+  Type(t) {
+  PrettyCheckArgument(isNull() || isSubrange(), this);
+}
+
+unsigned BitVectorType::getSize() const {
+  return d_typeNode->getBitVectorSize();
+}
+
+unsigned FloatingPointType::getExponentSize() const {
+  return d_typeNode->getFloatingPointExponentSize();
+}
+
+unsigned FloatingPointType::getSignificandSize() const {
+  return d_typeNode->getFloatingPointSignificandSize();
+}
+
+Type ArrayType::getIndexType() const {
+  return makeType(d_typeNode->getArrayIndexType());
+}
+
+Type ArrayType::getConstituentType() const {
+  return makeType(d_typeNode->getArrayConstituentType());
+}
+
+Type SetType::getElementType() const {
+  return makeType(d_typeNode->getSetElementType());
+}
+
+DatatypeType ConstructorType::getRangeType() const {
+  return DatatypeType(makeType(d_typeNode->getConstructorRangeType()));
+}
+
+size_t ConstructorType::getArity() const {
+  return d_typeNode->getNumChildren() - 1;
+}
+
+std::vector<Type> ConstructorType::getArgTypes() const {
+  NodeManagerScope nms(d_nodeManager);
+  vector<Type> args;
+  vector<TypeNode> argNodes = d_typeNode->getArgTypes();
+  vector<TypeNode>::iterator it = argNodes.begin();
+  vector<TypeNode>::iterator it_end = argNodes.end();
+  for(; it != it_end; ++ it) {
+    args.push_back(makeType(*it));
+  }
+  return args;
+}
+
+const Datatype& DatatypeType::getDatatype() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->getDatatype();
+}
+
+bool DatatypeType::isParametric() const {
+  return d_typeNode->isParametricDatatype();
+}
+
+Expr DatatypeType::getConstructor(std::string name) const {
+  return getDatatype().getConstructor(name);
+}
+
+bool DatatypeType::isInstantiated() const {
+  return d_typeNode->isInstantiatedDatatype();
+}
+
+bool DatatypeType::isParameterInstantiated(unsigned n) const {
+  return d_typeNode->isParameterInstantiatedDatatype(n);
+}
+
+size_t DatatypeType::getArity() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->getNumChildren() - 1;
+}
+
+std::vector<Type> DatatypeType::getParamTypes() const {
+  NodeManagerScope nms(d_nodeManager);
+  vector<Type> params;
+  vector<TypeNode> paramNodes = d_typeNode->getParamTypes();
+  vector<TypeNode>::iterator it = paramNodes.begin();
+  vector<TypeNode>::iterator it_end = paramNodes.end();
+  for(; it != it_end; ++it) {
+    params.push_back(makeType(*it));
+  }
+  return params;
+}
+
+DatatypeType DatatypeType::instantiate(const std::vector<Type>& params) const {
+  NodeManagerScope nms(d_nodeManager);
+  TypeNode cons = d_nodeManager->mkTypeConst( (*d_typeNode)[0].getConst<DatatypeIndexConstant>() );
+  vector<TypeNode> paramsNodes;
+  paramsNodes.push_back( cons );
+  for(vector<Type>::const_iterator i = params.begin(),
+        iend = params.end();
+      i != iend;
+      ++i) {
+    paramsNodes.push_back(*getTypeNode(*i));
+  }
+  return DatatypeType(makeType(d_nodeManager->mkTypeNode(kind::PARAMETRIC_DATATYPE, paramsNodes)));
+}
+
+/** Get the length of a tuple type */
+size_t DatatypeType::getTupleLength() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->getTupleLength();
+}
+
+/** Get the constituent types of a tuple type */
+std::vector<Type> DatatypeType::getTupleTypes() const {
+  NodeManagerScope nms(d_nodeManager);
+  std::vector< TypeNode > vec = d_typeNode->getTupleTypes();
+  std::vector< Type > vect;
+  for( unsigned i=0; i<vec.size(); i++ ){
+    vect.push_back( vec[i].toType() );
+  }
+  return vect;
+}
+
+/** Get the description of the record type */
+const Record& DatatypeType::getRecord() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->getRecord();
+}
+
+DatatypeType SelectorType::getDomain() const {
+  return DatatypeType(makeType((*d_typeNode)[0]));
+}
+
+Type SelectorType::getRangeType() const {
+  return makeType((*d_typeNode)[1]);
+}
+
+DatatypeType TesterType::getDomain() const {
+  return DatatypeType(makeType((*d_typeNode)[0]));
+}
+
+BooleanType TesterType::getRangeType() const {
+  return BooleanType(makeType(d_nodeManager->booleanType()));
+}
+
+/* - not in release 1.0
+Expr PredicateSubtype::getPredicate() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->getSubtypePredicate().toExpr();
+}
+
+Type PredicateSubtype::getParentType() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->getSubtypeParentType().toType();
+}
+*/
+
+SubrangeBounds SubrangeType::getSubrangeBounds() const {
+  NodeManagerScope nms(d_nodeManager);
+  return d_typeNode->getSubrangeBounds();
+}
+
+size_t TypeHashFunction::operator()(const Type& t) const {
+  return TypeNodeHashFunction()(NodeManager::fromType(t));
+}
+
+}/* CVC4 namespace */
diff --git a/src/expr/type.h b/src/expr/type.h
new file mode 100644
index 0000000..43cb3ff
--- /dev/null
+++ b/src/expr/type.h
@@ -0,0 +1,766 @@
+/*********************                                                        */
+/*! \file type.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Martin Brain
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Interface for expression types.
+ **
+ ** Interface for expression types
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__TYPE_H
+#define __CVC4__TYPE_H
+
+#include <string>
+#include <vector>
+#include <limits.h>
+#include <stdint.h>
+
+#include "util/cardinality.h"
+#include "util/subrange_bound.h"
+
+namespace CVC4 {
+
+class NodeManager;
+class CVC4_PUBLIC ExprManager;
+class CVC4_PUBLIC Expr;
+class TypeNode;
+struct CVC4_PUBLIC ExprManagerMapCollection;
+
+class CVC4_PUBLIC SmtEngine;
+
+class CVC4_PUBLIC Datatype;
+class Record;
+
+template <bool ref_count>
+class NodeTemplate;
+
+class BooleanType;
+class IntegerType;
+class RealType;
+class StringType;
+class RegExpType;
+class RoundingModeType;
+class BitVectorType;
+class ArrayType;
+class SetType;
+class DatatypeType;
+class ConstructorType;
+class SelectorType;
+class TesterType;
+class FunctionType;
+class SExprType;
+class SortType;
+class SortConstructorType;
+// not in release 1.0
+//class PredicateSubtype;
+class SubrangeType;
+class Type;
+
+/** Hash function for Types */
+struct CVC4_PUBLIC TypeHashFunction {
+  /** Return a hash code for type t */
+  size_t operator()(const CVC4::Type& t) const;
+};/* struct TypeHashFunction */
+
+/**
+ * Output operator for types
+ * @param out the stream to output to
+ * @param t the type to output
+ * @return the stream
+ */
+std::ostream& operator<<(std::ostream& out, const Type& t) CVC4_PUBLIC;
+
+namespace expr {
+  TypeNode exportTypeInternal(TypeNode n, NodeManager* from, NodeManager* nm, ExprManagerMapCollection& vmap);
+}/* CVC4::expr namespace */
+
+/**
+ * Class encapsulating CVC4 expression types.
+ */
+class CVC4_PUBLIC Type {
+
+  friend class SmtEngine;
+  friend class ExprManager;
+  friend class NodeManager;
+  friend class TypeNode;
+  friend std::ostream& CVC4::operator<<(std::ostream& out, const Type& t);
+  friend TypeNode expr::exportTypeInternal(TypeNode n, NodeManager* from, NodeManager* nm, ExprManagerMapCollection& vmap);
+
+protected:
+
+  /** The internal expression representation */
+  TypeNode* d_typeNode;
+
+  /** The responsible expression manager */
+  NodeManager* d_nodeManager;
+
+  /**
+   * Construct a new type given the typeNode, for internal use only.
+   * @param typeNode the TypeNode to use
+   * @return the Type corresponding to the TypeNode
+   */
+  Type makeType(const TypeNode& typeNode) const;
+
+  /**
+   * Constructor for internal purposes.
+   * @param em the expression manager that handles this expression
+   * @param typeNode the actual TypeNode pointer for this type
+   */
+  Type(NodeManager* em, TypeNode* typeNode);
+
+  /** Accessor for derived classes */
+  static TypeNode* getTypeNode(const Type& t) throw() { return t.d_typeNode; }
+
+public:
+
+  /** Force a virtual destructor for safety. */
+  virtual ~Type();
+
+  /** Default constructor */
+  Type();
+
+  /**
+   * Copy constructor.
+   * @param t the type to make a copy of
+   */
+  Type(const Type& t);
+
+  /**
+   * Check whether this is a null type
+   * @return true if type is null
+   */
+  bool isNull() const;
+
+  /**
+   * Return the cardinality of this type.
+   */
+  Cardinality getCardinality() const;
+
+  /**
+   * Is this a well-founded type?
+   */
+  bool isWellFounded() const;
+
+  /**
+   * Construct and return a ground term for this Type.  Throws an
+   * exception if this type is not well-founded.
+   */
+  Expr mkGroundTerm() const;
+
+  /**
+   * Is this type a subtype of the given type?
+   */
+  bool isSubtypeOf(Type t) const;
+
+  /**
+   * Is this type comparable to the given type (i.e., do they share
+   * a common ancestor in the subtype tree)?
+   */
+  bool isComparableTo(Type t) const;
+
+  /**
+   * Get the most general base type of this type.
+   */
+  Type getBaseType() const;
+
+  /**
+   * Substitution of Types.
+   */
+  Type substitute(const Type& type, const Type& replacement) const;
+
+  /**
+   * Simultaneous substitution of Types.
+   */
+  Type substitute(const std::vector<Type>& types,
+                  const std::vector<Type>& replacements) const;
+
+  /**
+   * Get this type's ExprManager.
+   */
+  ExprManager* getExprManager() const;
+
+  /**
+   * Exports this type into a different ExprManager.
+   */
+  Type exportTo(ExprManager* exprManager, ExprManagerMapCollection& vmap) const;
+
+  /**
+   * Assignment operator.
+   * @param t the type to assign to this type
+   * @return this type after assignment.
+   */
+  Type& operator=(const Type& t);
+
+  /**
+   * Comparison for structural equality.
+   * @param t the type to compare to
+   * @returns true if the types are equal
+   */
+  bool operator==(const Type& t) const;
+
+  /**
+   * Comparison for structural disequality.
+   * @param t the type to compare to
+   * @returns true if the types are not equal
+   */
+  bool operator!=(const Type& t) const;
+
+  /**
+   * An ordering on Types so they can be stored in maps, etc.
+   */
+  bool operator<(const Type& t) const;
+
+  /**
+   * An ordering on Types so they can be stored in maps, etc.
+   */
+  bool operator<=(const Type& t) const;
+
+  /**
+   * An ordering on Types so they can be stored in maps, etc.
+   */
+  bool operator>(const Type& t) const;
+
+  /**
+   * An ordering on Types so they can be stored in maps, etc.
+   */
+  bool operator>=(const Type& t) const;
+
+  /**
+   * Is this the Boolean type?
+   * @return true if the type is a Boolean type
+   */
+  bool isBoolean() const;
+
+  /**
+   * Is this the integer type?
+   * @return true if the type is a integer type
+   */
+  bool isInteger() const;
+
+  /**
+   * Is this the real type?
+   * @return true if the type is a real type
+   */
+  bool isReal() const;
+
+  /**
+   * Is this the string type?
+   * @return true if the type is the string type
+   */
+  bool isString() const;
+
+  /**
+   * Is this the regexp type?
+   * @return true if the type is the regexp type
+   */
+  bool isRegExp() const;
+
+  /**
+   * Is this the rounding mode type?
+   * @return true if the type is the rounding mode type
+   */
+  bool isRoundingMode() const;
+
+  /**
+   * Is this the bit-vector type?
+   * @return true if the type is a bit-vector type
+   */
+  bool isBitVector() const;
+
+  /**
+   * Is this the floating-point type?
+   * @return true if the type is a floating-point type
+   */
+  bool isFloatingPoint() const;
+
+  /**
+   * Is this a function type?
+   * @return true if the type is a function type
+   */
+  bool isFunction() const;
+
+  /**
+   * Is this a predicate type, i.e. if it's a function type mapping to Boolean.
+   * All predicate types are also function types.
+   * @return true if the type is a predicate type
+   */
+  bool isPredicate() const;
+
+  /**
+   * Is this a tuple type?
+   * @return true if the type is a tuple type
+   */
+  bool isTuple() const;
+
+  /**
+   * Is this a record type?
+   * @return true if the type is a record type
+   */
+  bool isRecord() const;
+
+  /**
+   * Is this a symbolic expression type?
+   * @return true if the type is a symbolic expression type
+   */
+  bool isSExpr() const;
+
+  /**
+   * Is this an array type?
+   * @return true if the type is a array type
+   */
+  bool isArray() const;
+
+  /**
+   * Is this a Set type?
+   * @return true if the type is a Set type
+   */
+  bool isSet() const;
+
+ /**
+   * Is this a datatype type?
+   * @return true if the type is a datatype type
+   */
+  bool isDatatype() const;
+
+  /**
+   * Is this a constructor type?
+   * @return true if the type is a constructor type
+   */
+  bool isConstructor() const;
+
+  /**
+   * Is this a selector type?
+   * @return true if the type is a selector type
+   */
+  bool isSelector() const;
+
+  /**
+   * Is this a tester type?
+   * @return true if the type is a tester type
+   */
+  bool isTester() const;
+
+  /**
+   * Is this a sort kind?
+   * @return true if this is a sort kind
+   */
+  bool isSort() const;
+
+  /**
+   * Is this a sort constructor kind?
+   * @return true if this is a sort constructor kind
+   */
+  bool isSortConstructor() const;
+
+  /**
+   * Is this a predicate subtype?
+   * @return true if this is a predicate subtype
+   */
+  // not in release 1.0
+  //bool isPredicateSubtype() const;
+
+  /**
+   * Is this an integer subrange type?
+   * @return true if this is an integer subrange type
+   */
+  bool isSubrange() const;
+
+  /**
+   * Outputs a string representation of this type to the stream.
+   * @param out the stream to output to
+   */
+  void toStream(std::ostream& out) const;
+
+  /**
+   * Constructs a string representation of this type.
+   */
+  std::string toString() const;
+};/* class Type */
+
+/**
+ * Singleton class encapsulating the Boolean type.
+ */
+class CVC4_PUBLIC BooleanType : public Type {
+
+public:
+
+  /** Construct from the base type */
+  BooleanType(const Type& type = Type()) throw(IllegalArgumentException);
+};/* class BooleanType */
+
+/**
+ * Singleton class encapsulating the integer type.
+ */
+class CVC4_PUBLIC IntegerType : public Type {
+
+public:
+
+  /** Construct from the base type */
+  IntegerType(const Type& type = Type()) throw(IllegalArgumentException);
+};/* class IntegerType */
+
+/**
+ * Singleton class encapsulating the real type.
+ */
+class CVC4_PUBLIC RealType : public Type {
+
+public:
+
+  /** Construct from the base type */
+  RealType(const Type& type = Type()) throw(IllegalArgumentException);
+};/* class RealType */
+
+/**
+ * Singleton class encapsulating the string type.
+ */
+class CVC4_PUBLIC StringType : public Type {
+
+public:
+
+  /** Construct from the base type */
+  StringType(const Type& type) throw(IllegalArgumentException);
+};/* class StringType */
+
+/**
+ * Singleton class encapsulating the string type.
+ */
+class CVC4_PUBLIC RegExpType : public Type {
+
+public:
+
+  /** Construct from the base type */
+  RegExpType(const Type& type) throw(IllegalArgumentException);
+};/* class RegExpType */
+
+
+/**
+ * Singleton class encapsulating the rounding mode type.
+ */
+class CVC4_PUBLIC RoundingModeType : public Type {
+
+public:
+
+  /** Construct from the base type */
+  RoundingModeType(const Type& type = Type()) throw(IllegalArgumentException);
+};/* class RoundingModeType */
+
+
+
+/**
+ * Class encapsulating a function type.
+ */
+class CVC4_PUBLIC FunctionType : public Type {
+
+public:
+
+  /** Construct from the base type */
+  FunctionType(const Type& type = Type()) throw(IllegalArgumentException);
+
+  /** Get the arity of the function type */
+  size_t getArity() const;
+
+  /** Get the argument types */
+  std::vector<Type> getArgTypes() const;
+
+  /** Get the range type (i.e., the type of the result). */
+  Type getRangeType() const;
+};/* class FunctionType */
+
+/**
+ * Class encapsulating a sexpr type.
+ */
+class CVC4_PUBLIC SExprType : public Type {
+
+public:
+
+  /** Construct from the base type */
+  SExprType(const Type& type = Type()) throw(IllegalArgumentException);
+
+  /** Get the constituent types */
+  std::vector<Type> getTypes() const;
+};/* class SExprType */
+
+/**
+ * Class encapsulating an array type.
+ */
+class CVC4_PUBLIC ArrayType : public Type {
+
+public:
+
+  /** Construct from the base type */
+  ArrayType(const Type& type = Type()) throw(IllegalArgumentException);
+
+  /** Get the index type */
+  Type getIndexType() const;
+
+  /** Get the constituent type */
+  Type getConstituentType() const;
+};/* class ArrayType */
+
+/**
+ * Class encapsulating an set type.
+ */
+class CVC4_PUBLIC SetType : public Type {
+
+public:
+
+  /** Construct from the base type */
+  SetType(const Type& type = Type()) throw(IllegalArgumentException);
+
+  /** Get the index type */
+  Type getElementType() const;
+};/* class SetType */
+
+/**
+ * Class encapsulating a user-defined sort.
+ */
+class CVC4_PUBLIC SortType : public Type {
+
+public:
+
+  /** Construct from the base type */
+  SortType(const Type& type = Type()) throw(IllegalArgumentException);
+
+  /** Get the name of the sort */
+  std::string getName() const;
+
+  /** Is this type parameterized? */
+  bool isParameterized() const;
+
+  /** Get the parameter types */
+  std::vector<Type> getParamTypes() const;
+
+};/* class SortType */
+
+/**
+ * Class encapsulating a user-defined sort constructor.
+ */
+class CVC4_PUBLIC SortConstructorType : public Type {
+
+public:
+
+  /** Construct from the base type */
+  SortConstructorType(const Type& type = Type()) throw(IllegalArgumentException);
+
+  /** Get the name of the sort constructor */
+  std::string getName() const;
+
+  /** Get the arity of the sort constructor */
+  size_t getArity() const;
+
+  /** Instantiate a sort using this sort constructor */
+  SortType instantiate(const std::vector<Type>& params) const;
+
+};/* class SortConstructorType */
+
+// not in release 1.0
+#if 0
+/**
+ * Class encapsulating a predicate subtype.
+ */
+class CVC4_PUBLIC PredicateSubtype : public Type {
+
+public:
+
+  /** Construct from the base type */
+  PredicateSubtype(const Type& type = Type()) throw(IllegalArgumentException);
+
+  /** Get the LAMBDA defining this predicate subtype */
+  Expr getPredicate() const;
+
+  /**
+   * Get the parent type of this predicate subtype; note that this
+   * could be another predicate subtype.
+   */
+  Type getParentType() const;
+
+};/* class PredicateSubtype */
+#endif /* 0 */
+
+/**
+ * Class encapsulating an integer subrange type.
+ */
+class CVC4_PUBLIC SubrangeType : public Type {
+
+public:
+
+  /** Construct from the base type */
+  SubrangeType(const Type& type = Type()) throw(IllegalArgumentException);
+
+  /** Get the bounds defining this integer subrange */
+  SubrangeBounds getSubrangeBounds() const;
+
+};/* class SubrangeType */
+
+/**
+ * Class encapsulating the bit-vector type.
+ */
+class CVC4_PUBLIC BitVectorType : public Type {
+
+public:
+
+  /** Construct from the base type */
+  BitVectorType(const Type& type = Type()) throw(IllegalArgumentException);
+
+  /**
+   * Returns the size of the bit-vector type.
+   * @return the width of the bit-vector type (> 0)
+   */
+  unsigned getSize() const;
+
+};/* class BitVectorType */
+
+
+/**
+ * Class encapsulating the floating point type.
+ */
+class CVC4_PUBLIC FloatingPointType : public Type {
+
+public:
+
+  /** Construct from the base type */
+  FloatingPointType(const Type& type = Type()) throw(IllegalArgumentException);
+
+  /**
+   * Returns the size of the floating-point exponent type.
+   * @return the width of the floating-point exponent type (> 0)
+   */
+  unsigned getExponentSize() const;
+
+  /**
+   * Returns the size of the floating-point significand type.
+   * @return the width of the floating-point significand type (> 0)
+   */
+  unsigned getSignificandSize() const;
+
+};/* class FloatingPointType */
+
+
+/**
+ * Class encapsulating the datatype type
+ */
+class CVC4_PUBLIC DatatypeType : public Type {
+
+public:
+
+  /** Construct from the base type */
+  DatatypeType(const Type& type = Type()) throw(IllegalArgumentException);
+
+  /** Get the underlying datatype */
+  const Datatype& getDatatype() const;
+
+  /** Is this datatype parametric? */
+  bool isParametric() const;
+
+  /**
+   * Get the constructor operator associated to the given constructor
+   * name in this datatype.
+   */
+  Expr getConstructor(std::string name) const;
+
+  /**
+   * Has this datatype been fully instantiated ?
+   *
+   * @return true if this datatype is not parametric or, if it is, it
+   * has been fully instantiated
+   */
+  bool isInstantiated() const;
+
+  /**
+   * Has this datatype been instantiated for parameter N ?
+   */
+  bool isParameterInstantiated(unsigned n) const;
+
+  /** Get the parameter types */
+  std::vector<Type> getParamTypes() const;
+
+  /** Get the arity of the datatype constructor */
+  size_t getArity() const;
+
+  /** Instantiate a datatype using this datatype constructor */
+  DatatypeType instantiate(const std::vector<Type>& params) const;
+
+  /** Get the length of a tuple type */
+  size_t getTupleLength() const;
+
+  /** Get the constituent types of a tuple type */
+  std::vector<Type> getTupleTypes() const;
+
+  /** Get the description of the record type */
+  const Record& getRecord() const;
+
+};/* class DatatypeType */
+
+/**
+ * Class encapsulating the constructor type
+ */
+class CVC4_PUBLIC ConstructorType : public Type {
+
+public:
+
+  /** Construct from the base type */
+  ConstructorType(const Type& type = Type()) throw(IllegalArgumentException);
+
+  /** Get the range type */
+  DatatypeType getRangeType() const;
+
+  /** Get the argument types */
+  std::vector<Type> getArgTypes() const;
+
+  /** Get the number of constructor arguments */
+  size_t getArity() const;
+
+};/* class ConstructorType */
+
+
+/**
+ * Class encapsulating the Selector type
+ */
+class CVC4_PUBLIC SelectorType : public Type {
+
+public:
+
+  /** Construct from the base type */
+  SelectorType(const Type& type = Type()) throw(IllegalArgumentException);
+
+  /** Get the domain type for this selector (the datatype type) */
+  DatatypeType getDomain() const;
+
+  /** Get the range type for this selector (the field type) */
+  Type getRangeType() const;
+
+};/* class SelectorType */
+
+/**
+ * Class encapsulating the Tester type
+ */
+class CVC4_PUBLIC TesterType : public Type {
+
+public:
+
+  /** Construct from the base type */
+  TesterType(const Type& type = Type()) throw(IllegalArgumentException);
+
+  /** Get the type that this tester tests (the datatype type) */
+  DatatypeType getDomain() const;
+
+  /**
+   * Get the range type for this tester (included for sake of
+   * interface completeness), but doesn't give useful information).
+   */
+  BooleanType getRangeType() const;
+
+};/* class TesterType */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__TYPE_H */
diff --git a/src/expr/type.i b/src/expr/type.i
new file mode 100644
index 0000000..16d059e
--- /dev/null
+++ b/src/expr/type.i
@@ -0,0 +1,70 @@
+%{
+#include "expr/type.h"
+%}
+
+#ifdef SWIGPYTHON
+%rename(doApply) CVC4::TypeHashFunction::operator()(const CVC4::Type&) const;
+#else /* SWIGPYTHON */
+%rename(apply) CVC4::TypeHashFunction::operator()(const CVC4::Type&) const;
+#endif /* SWIGPYTHON */
+
+#ifdef SWIGJAVA
+%typemap(javabody) CVC4::Type %{
+  private long swigCPtr;
+  protected boolean swigCMemOwn;
+
+  protected $javaclassname(long cPtr, boolean cMemoryOwn) {
+    swigCMemOwn = cMemoryOwn;
+    swigCPtr = cPtr;
+    this.em = SmtEngine.mkRef(getExprManager()); // keep ref to em in SWIG proxy class
+  }
+
+  protected static long getCPtr($javaclassname obj) {
+    return (obj == null) ? 0 : obj.swigCPtr;
+  }
+%}
+%javamethodmodifiers CVC4::Type::operator=(const Type&) "protected";
+%typemap(javacode) CVC4::Type %{
+  // a ref is kept here to keep Java GC from collecting the ExprManager
+  // before the Type
+  private Object em;
+
+  public Type assign(Type t) {
+    Type r = assignInternal(t);
+    this.em = SmtEngine.mkRef(getExprManager()); // keep ref to em in SWIG proxy class
+    return r;
+  }
+%}
+%typemap(javaconstruct) Type {
+    this($imcall, true);
+    this.em = SmtEngine.mkRef(getExprManager()); // keep ref to em in SWIG proxy class
+  }
+%typemap(javadestruct, methodname="delete", methodmodifiers="public synchronized") CVC4::Type {
+    SmtEngine.dlRef(em);
+    em = null;
+    if (swigCPtr != 0) {
+      if (swigCMemOwn) {
+        swigCMemOwn = false;
+        CVC4JNI.delete_Type(swigCPtr);
+      }
+      swigCPtr = 0;
+    }
+  }
+#endif /* SWIGJAVA */
+%ignore CVC4::operator<<(std::ostream&, const Type&);
+
+%rename(assignInternal) CVC4::Type::operator=(const Type&);
+%rename(equals) CVC4::Type::operator==(const Type&) const;
+%ignore CVC4::Type::operator!=(const Type&) const;
+%rename(less) CVC4::Type::operator<(const Type&) const;
+%rename(lessEqual) CVC4::Type::operator<=(const Type&) const;
+%rename(greater) CVC4::Type::operator>(const Type&) const;
+%rename(greaterEqual) CVC4::Type::operator>=(const Type&) const;
+
+namespace CVC4 {
+  namespace expr {
+    %ignore exportTypeInternal;
+  }/* CVC4::expr namespace */
+}/* CVC4 namespace */
+
+%include "expr/type.h"
diff --git a/src/expr/type_checker.h b/src/expr/type_checker.h
new file mode 100644
index 0000000..3df73b2
--- /dev/null
+++ b/src/expr/type_checker.h
@@ -0,0 +1,45 @@
+/*********************                                                        */
+/*! \file type_checker.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A type checker
+ **
+ ** A type checker.
+ **/
+
+#include "cvc4_private.h"
+
+// ordering dependence
+#include "expr/node.h"
+
+#ifndef __CVC4__EXPR__TYPE_CHECKER_H
+#define __CVC4__EXPR__TYPE_CHECKER_H
+
+namespace CVC4 {
+namespace expr {
+
+class TypeChecker {
+public:
+
+  static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check = false)
+    throw (TypeCheckingExceptionPrivate, AssertionException);
+
+  static bool computeIsConst(NodeManager* nodeManager, TNode n)
+    throw (AssertionException);
+
+  static bool neverIsConst(NodeManager* nodeManager, TNode n)
+    throw (AssertionException);
+
+};/* class TypeChecker */
+
+}/* CVC4::expr namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__EXPR__TYPE_CHECKER_H */
diff --git a/src/expr/type_checker_template.cpp b/src/expr/type_checker_template.cpp
new file mode 100644
index 0000000..8ed894a
--- /dev/null
+++ b/src/expr/type_checker_template.cpp
@@ -0,0 +1,96 @@
+/*********************                                                        */
+/*! \file type_checker_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief TypeChecker implementation
+ **
+ ** TypeChecker implementation.
+ **/
+
+#line 18 "${template}"
+
+#include "expr/type_checker.h"
+#include "expr/node_manager.h"
+#include "expr/node_manager_attributes.h"
+
+${typechecker_includes}
+
+#line 26 "${template}"
+
+namespace CVC4 {
+namespace expr {
+
+TypeNode TypeChecker::computeType(NodeManager* nodeManager, TNode n, bool check)
+  throw (TypeCheckingExceptionPrivate, AssertionException) {
+  TypeNode typeNode;
+
+  // Infer the type
+  switch(n.getKind()) {
+  case kind::VARIABLE:
+  case kind::SKOLEM:
+    typeNode = nodeManager->getAttribute(n, TypeAttr());
+    break;
+  case kind::BUILTIN:
+    typeNode = nodeManager->builtinOperatorType();
+    break;
+
+${typerules}
+
+#line 47 "${template}"
+
+  default:
+    Debug("getType") << "FAILURE" << std::endl;
+    Unhandled(n.getKind());
+  }
+
+  nodeManager->setAttribute(n, TypeAttr(), typeNode);
+  nodeManager->setAttribute(n, TypeCheckedAttr(),
+                            check || nodeManager->getAttribute(n, TypeCheckedAttr()));
+
+  return typeNode;
+
+}/* TypeChecker::computeType */
+
+bool TypeChecker::computeIsConst(NodeManager* nodeManager, TNode n)
+  throw (AssertionException) {
+
+  Assert(n.getMetaKind() == kind::metakind::OPERATOR || n.getMetaKind() == kind::metakind::PARAMETERIZED);
+
+  switch(n.getKind()) {
+${construles}
+
+#line 70 "${template}"
+
+  default:;
+  }
+
+  return false;
+
+}/* TypeChecker::computeIsConst */
+
+bool TypeChecker::neverIsConst(NodeManager* nodeManager, TNode n)
+  throw (AssertionException) {
+
+  Assert(n.getMetaKind() == kind::metakind::OPERATOR || n.getMetaKind() == kind::metakind::PARAMETERIZED);
+
+  switch(n.getKind()) {
+${neverconstrules}
+
+#line 87 "${template}"
+
+  default:;
+  }
+
+  return true;
+
+}/* TypeChecker::neverIsConst */
+
+}/* CVC4::expr namespace */
+}/* CVC4 namespace */
diff --git a/src/expr/type_node.cpp b/src/expr/type_node.cpp
new file mode 100644
index 0000000..f11aa01
--- /dev/null
+++ b/src/expr/type_node.cpp
@@ -0,0 +1,561 @@
+/*********************                                                        */
+/*! \file type_node.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Kshitij Bansal
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Reference-counted encapsulation of a pointer to node information.
+ **
+ ** Reference-counted encapsulation of a pointer to node information.
+ **/
+#include "expr/type_node.h"
+
+#include <vector>
+
+#include "expr/node_manager_attributes.h"
+#include "expr/type_properties.h"
+#include "options/base_options.h"
+#include "options/expr_options.h"
+#include "options/quantifiers_options.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+TypeNode TypeNode::s_null( &expr::NodeValue::null() );
+
+TypeNode TypeNode::substitute(const TypeNode& type,
+                              const TypeNode& replacement,
+                              std::hash_map<TypeNode, TypeNode, HashFunction>& cache) const {
+  // in cache?
+  std::hash_map<TypeNode, TypeNode, HashFunction>::const_iterator i = cache.find(*this);
+  if(i != cache.end()) {
+    return (*i).second;
+  }
+
+  // otherwise compute
+  NodeBuilder<> nb(getKind());
+  if(getMetaKind() == kind::metakind::PARAMETERIZED) {
+    // push the operator
+    nb << TypeNode(d_nv->d_children[0]);
+  }
+  for(TypeNode::const_iterator i = begin(),
+        iend = end();
+      i != iend;
+      ++i) {
+    if(*i == type) {
+      nb << replacement;
+    } else {
+      (*i).substitute(type, replacement);
+    }
+  }
+
+  // put in cache
+  TypeNode tn = nb.constructTypeNode();
+  cache[*this] = tn;
+  return tn;
+}
+
+Cardinality TypeNode::getCardinality() const {
+  return kind::getCardinality(*this);
+}
+
+bool TypeNode::isInterpretedFinite() const {
+  if( getCardinality().isFinite() ){
+    return true;
+  }else{
+    if( options::finiteModelFind() ){
+      if( isSort() ){
+        return true;
+      }else if( isDatatype() ){
+        TypeNode tn = *this;
+        const Datatype& dt = getDatatype();
+        return dt.isInterpretedFinite( tn.toType() );
+      }else if( isArray() ){
+        return getArrayIndexType().isInterpretedFinite() && getArrayConstituentType().isInterpretedFinite();
+      }else if( isSet() ) {
+        return getSetElementType().isInterpretedFinite();
+      }
+    }
+    return false;
+  }
+}
+
+bool TypeNode::isWellFounded() const {
+  return kind::isWellFounded(*this);
+}
+
+Node TypeNode::mkGroundTerm() const {
+  return kind::mkGroundTerm(*this);
+}
+
+bool TypeNode::isSubtypeOf(TypeNode t) const {
+  if(*this == t) {
+    return true;
+  }
+  if(getKind() == kind::TYPE_CONSTANT) {
+    switch(getConst<TypeConstant>()) {
+    case INTEGER_TYPE:
+      return t.getKind() == kind::TYPE_CONSTANT && t.getConst<TypeConstant>() == REAL_TYPE;
+    default:
+      return false;
+    }
+  }
+  if(isSubrange()) {
+    if(t.isSubrange()) {
+      return t.getSubrangeBounds() <= getSubrangeBounds();
+    } else {
+      return t.getKind() == kind::TYPE_CONSTANT &&
+        ( t.getConst<TypeConstant>() == INTEGER_TYPE ||
+          t.getConst<TypeConstant>() == REAL_TYPE );
+    }
+  }
+  if(isTuple() && t.isTuple()) {
+    const Datatype& dt1 = getDatatype();
+    const Datatype& dt2 = t.getDatatype();
+    if( dt1[0].getNumArgs()!=dt2[0].getNumArgs() ){
+      return false;
+    }
+    // r1's fields must be subtypes of r2's, in order
+    for( unsigned i=0; i<dt1[0].getNumArgs(); i++ ){
+      if( !dt1[0][i].getRangeType().isSubtypeOf( dt2[0][i].getRangeType() ) ){
+        return false;
+      }
+    }
+    return true;
+  }else if( t.isRecord() && t.isRecord() ){
+    //records are not subtypes of each other in current implementation
+  }
+  if(isFunction()) {
+    // A function is a subtype of another if the args are the same type, and
+    // the return type is a subtype of the other's.  This is enough for now
+    // (and it's necessary for model generation, since a Real-valued function
+    // might return a constant Int and thus the model value is typed differently).
+    return t.isFunction() && getArgTypes() == t.getArgTypes() && getRangeType().isSubtypeOf(t.getRangeType());
+  }
+  if(isParametricDatatype() && t.isParametricDatatype()) {
+    Assert(getKind() == kind::PARAMETRIC_DATATYPE);
+    Assert(t.getKind() == kind::PARAMETRIC_DATATYPE);
+    if((*this)[0] != t[0] || getNumChildren() != t.getNumChildren()) {
+      return false;
+    }
+    for(size_t i = 1; i < getNumChildren(); ++i) {
+      if(!((*this)[i].isSubtypeOf(t[i]))) {
+        return false;
+      }
+    }
+    return true;
+  }
+  if(isPredicateSubtype()) {
+    return getSubtypeParentType().isSubtypeOf(t);
+  }
+  if(isSet() && t.isSet()) {
+    return getSetElementType().isSubtypeOf(t.getSetElementType());
+  }
+  if(isArray() && t.isArray()) {
+    //reverse for index type
+    return t.getArrayIndexType().isSubtypeOf(getArrayIndexType()) && 
+           getArrayConstituentType().isSubtypeOf(t.getArrayConstituentType());
+  }
+  return false;
+}
+
+bool TypeNode::isComparableTo(TypeNode t) const {
+  if(*this == t) {
+    return true;
+  }
+  if(isSubtypeOf(NodeManager::currentNM()->realType())) {
+    return t.isSubtypeOf(NodeManager::currentNM()->realType());
+  }
+  if(isTuple() && t.isTuple()) {
+    const Datatype& dt1 = getDatatype();
+    const Datatype& dt2 = t.getDatatype();
+    if( dt1[0].getNumArgs()!=dt2[0].getNumArgs() ){
+      return false;
+    }
+    // r1's fields must be subtypes of r2's, in order
+    for( unsigned i=0; i<dt1[0].getNumArgs(); i++ ){
+      if( !dt1[0][i].getRangeType().isComparableTo( dt2[0][i].getRangeType() ) ){
+        return false;
+      }
+    }
+    return true;
+  //}else if( isRecord() && t.isRecord() ){
+    //record types are incomparable in current implementation
+  } else if(isParametricDatatype() && t.isParametricDatatype()) {
+    Assert(getKind() == kind::PARAMETRIC_DATATYPE);
+    Assert(t.getKind() == kind::PARAMETRIC_DATATYPE);
+    if((*this)[0] != t[0] || getNumChildren() != t.getNumChildren()) {
+      return false;
+    }
+    for(size_t i = 1; i < getNumChildren(); ++i) {
+      if(!((*this)[i].isComparableTo(t[i]))) {
+        return false;
+      }
+    }
+    return true;
+  } else if(isSet() && t.isSet()) {
+    return getSetElementType().isComparableTo(t.getSetElementType());
+  }
+  if(isArray() && t.isArray()) {
+    return getArrayIndexType().isComparableTo(t.getArrayIndexType()) && getArrayConstituentType().isComparableTo(t.getArrayConstituentType());
+  }
+  //if(isPredicateSubtype()) {
+  //  return t.isComparableTo(getSubtypeParentType());
+  //}
+  return false;
+}
+
+Node TypeNode::getSubtypePredicate() const {
+  Assert(isPredicateSubtype());
+  return Node::fromExpr(getConst<Predicate>().getExpression());
+}
+
+TypeNode TypeNode::getSubtypeParentType() const {
+  Assert(isPredicateSubtype());
+  return getSubtypePredicate().getType().getArgTypes()[0];
+}
+
+TypeNode TypeNode::getBaseType() const {
+  TypeNode realt = NodeManager::currentNM()->realType();
+  if (isSubtypeOf(realt)) {
+    return realt;
+  } else if (isPredicateSubtype()) {
+    return getSubtypeParentType().getBaseType();
+  } else if (isParametricDatatype()) {
+    vector<Type> v;
+    for(size_t i = 1; i < getNumChildren(); ++i) {
+      v.push_back((*this)[i].getBaseType().toType());
+    }
+    TypeNode tn = TypeNode::fromType((*this)[0].getDatatype().getDatatypeType(v));
+    return tn;
+  }
+  return *this;
+}
+
+std::vector<TypeNode> TypeNode::getArgTypes() const {
+  vector<TypeNode> args;
+  if(isTester()) {
+    Assert(getNumChildren() == 1);
+    args.push_back((*this)[0]);
+  } else {
+    Assert(isFunction() || isConstructor() || isSelector());
+    for(unsigned i = 0, i_end = getNumChildren() - 1; i < i_end; ++i) {
+      args.push_back((*this)[i]);
+    }
+  }
+  return args;
+}
+
+std::vector<TypeNode> TypeNode::getParamTypes() const {
+  vector<TypeNode> params;
+  Assert(isParametricDatatype());
+  for(unsigned i = 1, i_end = getNumChildren(); i < i_end; ++i) {
+    params.push_back((*this)[i]);
+  }
+  return params;
+}
+
+
+/** Is this a tuple type? */
+bool TypeNode::isTuple() const {
+  return ( getKind() == kind::DATATYPE_TYPE && getDatatype().isTuple() ) ||
+    ( isPredicateSubtype() && getSubtypeParentType().isTuple() );
+}
+
+/** Is this a record type? */
+bool TypeNode::isRecord() const {
+  return ( getKind() == kind::DATATYPE_TYPE && getDatatype().isRecord() )  ||
+    ( isPredicateSubtype() && getSubtypeParentType().isRecord() );
+}
+
+size_t TypeNode::getTupleLength() const {
+  Assert(isTuple());
+  const Datatype& dt = getDatatype();
+  Assert(dt.getNumConstructors()==1);
+  return dt[0].getNumArgs();
+}
+
+vector<TypeNode> TypeNode::getTupleTypes() const {
+  Assert(isTuple());
+  const Datatype& dt = getDatatype();
+  Assert(dt.getNumConstructors()==1);
+  vector<TypeNode> types;
+  for(unsigned i = 0; i < dt[0].getNumArgs(); ++i) {
+    types.push_back(TypeNode::fromType(dt[0][i].getRangeType()));
+  }
+  return types;
+}
+
+const Record& TypeNode::getRecord() const {
+  Assert(isRecord());
+  const Datatype & dt = getDatatype();
+  return *(dt.getRecord());
+  //return getAttribute(expr::DatatypeRecordAttr()).getConst<Record>();
+}
+
+vector<TypeNode> TypeNode::getSExprTypes() const {
+  Assert(isSExpr());
+  vector<TypeNode> types;
+  for(unsigned i = 0, i_end = getNumChildren(); i < i_end; ++i) {
+    types.push_back((*this)[i]);
+  }
+  return types;
+}
+
+/** Is this an instantiated datatype type */
+bool TypeNode::isInstantiatedDatatype() const {
+  if(getKind() == kind::DATATYPE_TYPE) {
+    return true;
+  }
+  if(getKind() != kind::PARAMETRIC_DATATYPE) {
+    return false;
+  }
+  const Datatype& dt = (*this)[0].getDatatype();
+  unsigned n = dt.getNumParameters();
+  Assert(n < getNumChildren());
+  for(unsigned i = 0; i < n; ++i) {
+    if(TypeNode::fromType(dt.getParameter(i)) == (*this)[i + 1]) {
+      return false;
+    }
+  }
+  return true;
+}
+
+/** Is this an instantiated datatype parameter */
+bool TypeNode::isParameterInstantiatedDatatype(unsigned n) const {
+  AssertArgument(getKind() == kind::PARAMETRIC_DATATYPE, *this);
+  const Datatype& dt = (*this)[0].getDatatype();
+  AssertArgument(n < dt.getNumParameters(), *this);
+  return TypeNode::fromType(dt.getParameter(n)) != (*this)[n + 1];
+}
+
+TypeNode TypeNode::leastCommonTypeNode(TypeNode t0, TypeNode t1){
+  return commonTypeNode( t0, t1, true );
+}
+
+TypeNode TypeNode::mostCommonTypeNode(TypeNode t0, TypeNode t1){
+  return commonTypeNode( t0, t1, false );
+}
+
+TypeNode TypeNode::commonTypeNode(TypeNode t0, TypeNode t1, bool isLeast) {
+  Assert( NodeManager::currentNM() != NULL,
+          "There is no current CVC4::NodeManager associated to this thread.\n"
+          "Perhaps a public-facing function is missing a NodeManagerScope ?" );
+
+  Assert(!t0.isNull());
+  Assert(!t1.isNull());
+
+  if(__builtin_expect( (t0 == t1), true )) {
+    return t0;
+  }
+
+  // t0 != t1 &&
+  if(t0.getKind() == kind::TYPE_CONSTANT) {
+    switch(t0.getConst<TypeConstant>()) {
+    case INTEGER_TYPE:
+      if(t1.isInteger()) {
+        // t0 == IntegerType && t1.isInteger()
+        return t0; //IntegerType
+      } else if(t1.isReal()) {
+        // t0 == IntegerType && t1.isReal() && !t1.isInteger()
+        return isLeast ? t1 : t0; // RealType
+      } else {
+        return TypeNode(); // null type
+      }
+    case REAL_TYPE:
+      if(t1.isReal()) {
+        return isLeast ? t0 : t1; // RealType
+      } else {
+        return TypeNode(); // null type
+      }
+    default:
+      //if(t1.isPredicateSubtype() && t1.getSubtypeParentType().isSubtypeOf(t0)) {
+      //  return t0; // t0 is a constant type
+      //} else {
+        return TypeNode(); // null type
+      //}
+    }
+  } else if(t1.getKind() == kind::TYPE_CONSTANT) {
+    return commonTypeNode(t1, t0, isLeast); // decrease the number of special cases
+  }
+
+  // t0 != t1 &&
+  // t0.getKind() == kind::TYPE_CONSTANT &&
+  // t1.getKind() == kind::TYPE_CONSTANT
+  switch(t0.getKind()) {
+  case kind::BITVECTOR_TYPE:
+  case kind::SORT_TYPE:
+  case kind::CONSTRUCTOR_TYPE:
+  case kind::SELECTOR_TYPE:
+  case kind::TESTER_TYPE:
+    //if( t1.isPredicateSubtype() && t1.getSubtypeParentType().isSubtypeOf(t0)) {
+    //  return t0;
+    //} else {
+      return TypeNode();
+    //}
+  case kind::FUNCTION_TYPE:
+    return TypeNode(); // Not sure if this is right
+  case kind::SET_TYPE: {
+    // take the least common subtype of element types
+    TypeNode elementType;
+    if(t1.isSet() && !(elementType = commonTypeNode(t0[0], t1[0], isLeast)).isNull() ) {
+      return NodeManager::currentNM()->mkSetType(elementType);
+    } else {
+      return TypeNode();
+    }
+  }
+  case kind::ARRAY_TYPE: {
+    TypeNode indexType, elementType;
+    if(t1.isArray() &&
+       ! (indexType = commonTypeNode(t0[0], t1[0], !isLeast)).isNull() && 
+       ! (elementType = commonTypeNode(t0[1], t1[1], isLeast)).isNull() ) {
+      return NodeManager::currentNM()->mkArrayType(indexType, elementType);
+    } else {
+      return TypeNode();
+    }
+  }
+  case kind::SEXPR_TYPE:
+    Unimplemented("haven't implemented leastCommonType for symbolic expressions yet");
+    return TypeNode();
+  case kind::SUBTYPE_TYPE:
+    //if(t1.isPredicateSubtype()){
+    //  // This is the case where both t0 and t1 are predicate subtypes.
+    //  return leastCommonPredicateSubtype(t0, t1);
+    //}else{ // t0 is a predicate subtype and t1 is not
+    //  return commonTypeNode(t1, t0, isLeast); //decrease the number of special cases
+    //}
+    return TypeNode();
+  case kind::SUBRANGE_TYPE:
+    /*
+    if(t1.isSubrange()) {
+      const SubrangeBounds& t0SR = t0.getSubrangeBounds();
+      const SubrangeBounds& t1SR = t1.getSubrangeBounds();
+      if(SubrangeBounds::joinIsBounded(t0SR, t1SR)) {
+        SubrangeBounds j = SubrangeBounds::join(t0SR, t1SR);
+        return NodeManager::currentNM()->mkSubrangeType(j);
+      } else {
+        return NodeManager::currentNM()->integerType();
+      }
+    } else if(t1.isPredicateSubtype()) {
+      // t0 is a subrange
+      // t1 is not a subrange
+      // t1 is a predicate subtype
+      if(t1.isInteger()) {
+        return NodeManager::currentNM()->integerType();
+      } else if(t1.isReal()) {
+        return NodeManager::currentNM()->realType();
+      } else {
+        return TypeNode();
+      }
+    } else {
+      // t0 is a subrange
+      // t1 is not a subrange
+      // t1 is not a type constant && is not a predicate subtype
+      // t1 cannot be real subtype or integer.
+      Assert(t1.isReal());
+      Assert(t1.isInteger());
+      return TypeNode();
+    }
+*/
+    return TypeNode();
+  case kind::DATATYPE_TYPE:
+    if( t0.isTuple() && t1.isTuple() ){
+      const Datatype& dt1 = t0.getDatatype();
+      const Datatype& dt2 = t1.getDatatype();
+      if( dt1[0].getNumArgs()==dt2[0].getNumArgs() ){
+        std::vector< TypeNode > lc_types;
+        for( unsigned i=0; i<dt1[0].getNumArgs(); i++ ){
+          TypeNode tc = commonTypeNode( TypeNode::fromType( dt1[0][i].getRangeType() ), TypeNode::fromType( dt2[0][i].getRangeType() ), isLeast );
+          if( tc.isNull() ){
+            return tc;
+          }else{
+            lc_types.push_back( tc );
+          }
+        }
+        return NodeManager::currentNM()->mkTupleType( lc_types );
+      }
+    }
+    //else if( t0.isRecord() && t1.isRecord() ){
+      //record types are not related in current implementation
+    //}
+    // otherwise no common ancestor
+    return TypeNode();
+  case kind::PARAMETRIC_DATATYPE: {
+    if(!t1.isParametricDatatype()) {
+      return TypeNode();
+    }
+    while(t1.getKind() != kind::PARAMETRIC_DATATYPE) {
+      t1 = t1.getSubtypeParentType();
+    }
+    if(t0[0] != t1[0] || t0.getNumChildren() != t1.getNumChildren()) {
+      return TypeNode();
+    }
+    vector<Type> v;
+    for(size_t i = 1; i < t0.getNumChildren(); ++i) {
+      v.push_back(commonTypeNode(t0[i], t1[i], isLeast).toType());
+    }
+    return TypeNode::fromType(t0[0].getDatatype().getDatatypeType(v));
+  }
+  default:
+    Unimplemented("don't have a commonType for types `%s' and `%s'", t0.toString().c_str(), t1.toString().c_str());
+    return TypeNode();
+  }
+}
+
+TypeNode TypeNode::leastCommonPredicateSubtype(TypeNode t0, TypeNode t1){
+  Assert(t0.isPredicateSubtype());
+  Assert(t1.isPredicateSubtype());
+
+  std::vector<TypeNode> t0stack;
+  t0stack.push_back(t0);
+  while(t0stack.back().isPredicateSubtype()){
+    t0stack.push_back(t0stack.back().getSubtypeParentType());
+  }
+  std::vector<TypeNode> t1stack;
+  t1stack.push_back(t1);
+  while(t1stack.back().isPredicateSubtype()){
+    t1stack.push_back(t1stack.back().getSubtypeParentType());
+  }
+
+  Assert(!t0stack.empty());
+  Assert(!t1stack.empty());
+
+  if(t0stack.back() == t1stack.back()){
+    TypeNode mostGeneral = t1stack.back();
+    t0stack.pop_back(); t1stack.pop_back();
+    while(!t0stack.empty() && t1stack.empty() && t0stack.back() == t1stack.back()){
+      mostGeneral = t0stack.back();
+      t0stack.pop_back(); t1stack.pop_back();
+    }
+    return mostGeneral;
+  }else{
+    return leastCommonTypeNode(t0stack.back(), t1stack.back());
+  }
+}
+
+/** Is this a sort kind */
+bool TypeNode::isSort() const {
+  return ( getKind() == kind::SORT_TYPE && !hasAttribute(expr::SortArityAttr()) ) ||
+    ( isPredicateSubtype() && getSubtypeParentType().isSort() );
+}
+
+/** Is this a sort constructor kind */
+bool TypeNode::isSortConstructor() const {
+  return getKind() == kind::SORT_TYPE && hasAttribute(expr::SortArityAttr());
+}
+
+std::string TypeNode::toString() const {
+  std::stringstream ss;
+  OutputLanguage outlang = (this == &s_null) ? language::output::LANG_AUTO : options::outputLanguage();
+  d_nv->toStream(ss, -1, false, 0, outlang);
+  return ss.str();
+}
+
+
+}/* CVC4 namespace */
diff --git a/src/expr/type_node.h b/src/expr/type_node.h
new file mode 100644
index 0000000..0abbc9a
--- /dev/null
+++ b/src/expr/type_node.h
@@ -0,0 +1,1103 @@
+/*********************                                                        */
+/*! \file type_node.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Martin Brain
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Reference-counted encapsulation of a pointer to node information.
+ **
+ ** Reference-counted encapsulation of a pointer to node information.
+ **/
+
+#include "cvc4_private.h"
+
+// circular dependency
+#include "expr/node_value.h"
+
+#ifndef __CVC4__TYPE_NODE_H
+#define __CVC4__TYPE_NODE_H
+
+#include <vector>
+#include <string>
+#include <iostream>
+#include <stdint.h>
+
+#include "base/cvc4_assert.h"
+#include "expr/kind.h"
+#include "expr/metakind.h"
+#include "util/cardinality.h"
+
+namespace CVC4 {
+
+class NodeManager;
+
+namespace expr {
+  class NodeValue;
+}/* CVC4::expr namespace */
+
+/**
+ * Encapsulation of an NodeValue pointer for Types. The reference count is
+ * maintained in the NodeValue.
+ */
+class TypeNode {
+
+public:
+
+  // for hash_maps, hash_sets..
+  struct HashFunction {
+    size_t operator()(TypeNode node) const {
+      return (size_t) node.getId();
+    }
+  };/* struct HashFunction */
+
+private:
+
+  /**
+   * The NodeValue has access to the private constructors, so that the
+   * iterators can can create new types.
+   */
+  friend class expr::NodeValue;
+
+  /** A convenient null-valued encapsulated pointer */
+  static TypeNode s_null;
+
+  /** The referenced NodeValue */
+  expr::NodeValue* d_nv;
+
+  /**
+   * This constructor is reserved for use by the TypeNode package.
+   */
+  explicit TypeNode(const expr::NodeValue*);
+
+  friend class NodeManager;
+
+  template <unsigned nchild_thresh>
+  friend class NodeBuilder;
+
+  /**
+   * Assigns the expression value and does reference counting. No
+   * assumptions are made on the expression, and should only be used
+   * if we know what we are doing.
+   *
+   * @param ev the expression value to assign
+   */
+  void assignNodeValue(expr::NodeValue* ev);
+
+  /**
+   * Cache-aware, recursive version of substitute() used by the public
+   * member function with a similar signature.
+   */
+  TypeNode substitute(const TypeNode& type, const TypeNode& replacement,
+                      std::hash_map<TypeNode, TypeNode, HashFunction>& cache) const;
+
+  /**
+   * Cache-aware, recursive version of substitute() used by the public
+   * member function with a similar signature.
+   */
+  template <class Iterator1, class Iterator2>
+  TypeNode substitute(Iterator1 typesBegin, Iterator1 typesEnd,
+                      Iterator2 replacementsBegin, Iterator2 replacementsEnd,
+                      std::hash_map<TypeNode, TypeNode, HashFunction>& cache) const;
+
+public:
+
+  /** Default constructor, makes a null expression. */
+  TypeNode() : d_nv(&expr::NodeValue::null()) { }
+
+  /** Copy constructor */
+  TypeNode(const TypeNode& node);
+
+  /**
+   * Destructor. If ref_count is true it will decrement the reference count
+   * and, if zero, collect the NodeValue.
+   */
+  ~TypeNode();
+
+  /**
+   * Assignment operator for nodes, copies the relevant information from node
+   * to this node.
+   *
+   * @param typeNode the node to copy
+   * @return reference to this node
+   */
+  TypeNode& operator=(const TypeNode& typeNode);
+
+  /**
+   * Return the null node.
+   *
+   * @return the null node
+   */
+  static TypeNode null() {
+    return s_null;
+  }
+
+  /**
+   * Substitution of TypeNodes.
+   */
+  inline TypeNode
+  substitute(const TypeNode& type, const TypeNode& replacement) const;
+
+  /**
+   * Simultaneous substitution of TypeNodes.
+   */
+  template <class Iterator1, class Iterator2>
+  inline TypeNode
+  substitute(Iterator1 typesBegin, Iterator1 typesEnd,
+             Iterator2 replacementsBegin, Iterator2 replacementsEnd) const;
+
+  /**
+   * Structural comparison operator for expressions.
+   *
+   * @param typeNode the type node to compare to
+   * @return true if expressions are equal, false otherwise
+   */
+  bool operator==(const TypeNode& typeNode) const {
+    return d_nv == typeNode.d_nv;
+  }
+
+  /**
+   * Structural comparison operator for expressions.
+   *
+   * @param typeNode the type node to compare to
+   * @return true if expressions are equal, false otherwise
+   */
+  bool operator!=(const TypeNode& typeNode) const {
+    return !(*this == typeNode);
+  }
+
+  /**
+   * We compare by expression ids so, keeping things deterministic and having
+   * that subexpressions have to be smaller than the enclosing expressions.
+   *
+   * @param typeNode the node to compare to
+   * @return true if this expression is lesser
+   */
+  inline bool operator<(const TypeNode& typeNode) const {
+    return d_nv->d_id < typeNode.d_nv->d_id;
+  }
+
+  /**
+   * We compare by expression ids so, keeping things deterministic and having
+   * that subexpressions have to be smaller than the enclosing expressions.
+   *
+   * @param typeNode the node to compare to
+   * @return true if this expression is lesser or equal
+   */
+  inline bool operator<=(const TypeNode& typeNode) const {
+    return d_nv->d_id <= typeNode.d_nv->d_id;
+  }
+
+  /**
+   * We compare by expression ids so, keeping things deterministic and having
+   * that subexpressions have to be smaller than the enclosing expressions.
+   *
+   * @param typeNode the node to compare to
+   * @return true if this expression is greater
+   */
+  inline bool operator>(const TypeNode& typeNode) const {
+    return d_nv->d_id > typeNode.d_nv->d_id;
+  }
+
+  /**
+   * We compare by expression ids so, keeping things deterministic and having
+   * that subexpressions have to be smaller than the enclosing expressions.
+   *
+   * @param typeNode the node to compare to
+   * @return true if this expression is greater or equal
+   */
+  inline bool operator>=(const TypeNode& typeNode) const {
+    return d_nv->d_id >= typeNode.d_nv->d_id;
+  }
+
+  /**
+   * Returns the i-th child of this node.
+   *
+   * @param i the index of the child
+   * @return the node representing the i-th child
+   */
+  inline TypeNode operator[](int i) const {
+    return TypeNode(d_nv->getChild(i));
+  }
+
+  /**
+   * PARAMETERIZED-metakinded types (the SORT_TYPE is one of these)
+   * have an operator.  "Little-p parameterized" types (like Array),
+   * are OPERATORs, not PARAMETERIZEDs.
+   */
+  inline Node getOperator() const {
+    Assert(getMetaKind() == kind::metakind::PARAMETERIZED);
+    return Node(d_nv->getChild(-1));
+  }
+
+  /**
+   * Returns the unique id of this node
+   *
+   * @return the id
+   */
+  inline unsigned long getId() const {
+    return d_nv->getId();
+  }
+
+  /**
+   * Returns the kind of this type node.
+   *
+   * @return the kind
+   */
+  inline Kind getKind() const {
+    return Kind(d_nv->d_kind);
+  }
+
+  /**
+   * Returns the metakind of this type node.
+   *
+   * @return the metakind
+   */
+  inline kind::MetaKind getMetaKind() const {
+    return kind::metaKindOf(getKind());
+  }
+
+  /**
+   * Returns the number of children this node has.
+   *
+   * @return the number of children
+   */
+  inline size_t getNumChildren() const;
+
+  /**
+   * If this is a CONST_* TypeNode, extract the constant from it.
+   */
+  template <class T>
+  inline const T& getConst() const;
+
+  /**
+   * Returns the value of the given attribute that this has been attached.
+   *
+   * @param attKind the kind of the attribute
+   * @return the value of the attribute
+   */
+  template <class AttrKind>
+  inline typename AttrKind::value_type
+  getAttribute(const AttrKind& attKind) const;
+
+  // Note that there are two, distinct hasAttribute() declarations for
+  // a reason (rather than using a pointer-valued argument with a
+  // default value): they permit more optimized code in the underlying
+  // hasAttribute() implementations.
+
+  /**
+   * Returns true if this node has been associated an attribute of
+   * given kind.  Additionally, if a pointer to the value_kind is
+   * give, and the attribute value has been set for this node, it will
+   * be returned.
+   *
+   * @param attKind the kind of the attribute
+   * @return true if this node has the requested attribute
+   */
+  template <class AttrKind>
+  inline bool hasAttribute(const AttrKind& attKind) const;
+
+  /**
+   * Returns true if this node has been associated an attribute of given kind.
+   * Additionaly, if a pointer to the value_kind is give, and the attribute
+   * value has been set for this node, it will be returned.
+   *
+   * @param attKind the kind of the attribute
+   * @param value where to store the value if it exists
+   * @return true if this node has the requested attribute
+   */
+  template <class AttrKind>
+  inline bool getAttribute(const AttrKind& attKind,
+                           typename AttrKind::value_type& value) const;
+
+  /**
+   * Sets the given attribute of this node to the given value.
+   *
+   * @param attKind the kind of the atribute
+   * @param value the value to set the attribute to
+   */
+  template <class AttrKind>
+  inline void setAttribute(const AttrKind& attKind,
+                           const typename AttrKind::value_type& value);
+
+  /** Iterator allowing for scanning through the children. */
+  typedef expr::NodeValue::iterator<TypeNode> iterator;
+  /** Constant iterator allowing for scanning through the children. */
+  typedef expr::NodeValue::iterator<TypeNode> const_iterator;
+
+  /**
+   * Returns the iterator pointing to the first child.
+   *
+   * @return the iterator
+   */
+  inline iterator begin() {
+    return d_nv->begin<TypeNode>();
+  }
+
+  /**
+   * Returns the iterator pointing to the end of the children (one
+   * beyond the last one.
+   *
+   * @return the end of the children iterator.
+   */
+  inline iterator end() {
+    return d_nv->end<TypeNode>();
+  }
+
+  /**
+   * Returns the const_iterator pointing to the first child.
+   *
+   * @return the const_iterator
+   */
+  inline const_iterator begin() const {
+    return d_nv->begin<TypeNode>();
+  }
+
+  /**
+   * Returns the const_iterator pointing to the end of the children
+   * (one beyond the last one.
+   *
+   * @return the end of the children const_iterator.
+   */
+  inline const_iterator end() const {
+    return d_nv->end<TypeNode>();
+  }
+
+  /**
+   * Converts this type into a string representation.
+   *
+   * @return the string representation of this type.
+   */
+  std::string toString() const;
+
+  /**
+   * Converts this node into a string representation and sends it to the
+   * given stream
+   *
+   * @param out the stream to serialize this node to
+   * @param language the language in which to output
+   */
+  inline void toStream(std::ostream& out, OutputLanguage language = language::output::LANG_AUTO) const {
+    d_nv->toStream(out, -1, false, 0, language);
+  }
+
+  /**
+   * Very basic pretty printer for Node.
+   *
+   * @param out output stream to print to.
+   * @param indent number of spaces to indent the formula by.
+   */
+  void printAst(std::ostream& out, int indent = 0) const;
+
+  /**
+   * Returns true if this type is a null type.
+   *
+   * @return true if null
+   */
+  bool isNull() const {
+    return d_nv == &expr::NodeValue::null();
+  }
+
+  /**
+   * Convert this TypeNode into a Type using the currently-in-scope
+   * manager.
+   */
+  inline Type toType();
+
+  /**
+   * Convert a Type into a TypeNode.
+   */
+  inline static TypeNode fromType(const Type& t);
+
+  /**
+   * Returns the cardinality of this type.
+   *
+   * @return a finite or infinite cardinality
+   */
+  Cardinality getCardinality() const;
+  
+  /**
+   * Is this type interpreted as being finite.
+   * If finite model finding is enabled, this assumes all uninterpreted sorts 
+   *   are interpreted as finite.
+   */
+  bool isInterpretedFinite() const;
+
+  /**
+   * Returns whether this type is well-founded.
+   *
+   * @return true iff the type is well-founded
+   */
+  bool isWellFounded() const;
+
+  /**
+   * Construct and return a ground term of this type.  If the type is
+   * not well founded, this function throws an exception.
+   *
+   * @return a ground term of the type
+   */
+  Node mkGroundTerm() const;
+
+  /**
+   * Is this type a subtype of the given type?
+   */
+  bool isSubtypeOf(TypeNode t) const;
+
+  /**
+   * Is this type comparable to the given type (i.e., do they share
+   * a common ancestor in the subtype tree)?
+   */
+  bool isComparableTo(TypeNode t) const;
+
+  /** Is this the Boolean type? */
+  bool isBoolean() const;
+
+  /** Is this the Integer type? */
+  bool isInteger() const;
+
+  /** Is this the Real type? */
+  bool isReal() const;
+
+  /** Is this the String type? */
+  bool isString() const;
+
+  /** Is this the Rounding Mode type? */
+  bool isRoundingMode() const;
+
+  /** Is this an array type? */
+  bool isArray() const;
+
+  /** Is this a Set type? */
+  bool isSet() const;
+
+  /** Get the index type (for array types) */
+  TypeNode getArrayIndexType() const;
+
+  /** Get the element type (for array types) */
+  TypeNode getArrayConstituentType() const;
+
+  /** Get the return type (for constructor types) */
+  TypeNode getConstructorRangeType() const;
+
+  /** Get the element type (for set types) */
+  TypeNode getSetElementType() const;
+
+  /**
+   * Is this a function type?  Function-like things (e.g. datatype
+   * selectors) that aren't actually functions are NOT considered
+   * functions, here.
+   */
+  bool isFunction() const;
+
+  /**
+   * Is this a function-LIKE type?  Function-like things
+   * (e.g. datatype selectors) that aren't actually functions ARE
+   * considered functions, here.  The main point is that this is used
+   * to avoid anything higher-order: anything function-like cannot be
+   * the argument or return value for anything else function-like.
+   *
+   * Arrays are explicitly *not* function-like for the purposes of
+   * this test.  However, functions still cannot contain anything
+   * function-like.
+   */
+  bool isFunctionLike() const;
+
+  /**
+   * Get the argument types of a function, datatype constructor,
+   * datatype selector, or datatype tester.
+   */
+  std::vector<TypeNode> getArgTypes() const;
+
+  /**
+   * Get the paramater types of a parameterized datatype.  Fails an
+   * assertion if this type is not a parametric datatype.
+   */
+  std::vector<TypeNode> getParamTypes() const;
+
+  /**
+   * Get the range type (i.e., the type of the result) of a function,
+   * datatype constructor, datatype selector, or datatype tester.
+   */
+  TypeNode getRangeType() const;
+
+  /**
+   * Is this a predicate type?  NOTE: all predicate types are also
+   * function types (so datatype testers are NOT considered
+   * "predicates" for the purpose of this function).
+   */
+  bool isPredicate() const;
+
+  /**
+   * Is this a predicate-LIKE type?  Predicate-like things
+   * (e.g. datatype testers) that aren't actually predicates ARE
+   * considered predicates, here.
+   *
+   * Arrays are explicitly *not* predicate-like for the purposes of
+   * this test.
+   */
+  bool isPredicateLike() const;
+
+  /** Is this a tuple type? */
+  bool isTuple() const;
+
+  /** Get the length of a tuple type */
+  size_t getTupleLength() const;
+
+  /** Get the constituent types of a tuple type */
+  std::vector<TypeNode> getTupleTypes() const;
+
+  /** Is this a record type? */
+  bool isRecord() const;
+
+  /** Get the description of the record type */
+  const Record& getRecord() const;
+
+  /** Is this a symbolic expression type? */
+  bool isSExpr() const;
+
+  /** Get the constituent types of a symbolic expression type */
+  std::vector<TypeNode> getSExprTypes() const;
+
+  /** Is this a regexp type */
+  bool isRegExp() const;
+
+  /** Is this a floating-point type */
+  bool isFloatingPoint() const;
+
+  /** Is this a floating-point type of with <code>exp</code> exponent bits
+      and <code>sig</code> significand bits */
+  bool isFloatingPoint(unsigned exp, unsigned sig) const;
+
+  /** Is this a bit-vector type */
+  bool isBitVector() const;
+
+  /** Is this a bit-vector type of size <code>size</code> */
+  bool isBitVector(unsigned size) const;
+
+  /** Is this a datatype type */
+  bool isDatatype() const;
+
+  /** Is this a parameterized datatype type */
+  bool isParametricDatatype() const;
+
+  /** Is this a codatatype type */
+  bool isCodatatype() const;
+
+  /** Is this a fully instantiated datatype type */
+  bool isInstantiatedDatatype() const;
+
+  /** Is this an instantiated datatype parameter */
+  bool isParameterInstantiatedDatatype(unsigned n) const;
+
+  /** Is this a constructor type */
+  bool isConstructor() const;
+
+  /** Is this a selector type */
+  bool isSelector() const;
+
+  /** Is this a tester type */
+  bool isTester() const;
+
+  /** Get the Datatype specification from a datatype type */
+  const Datatype& getDatatype() const;
+
+  /** Get the exponent size of this floating-point type */
+  unsigned getFloatingPointExponentSize() const;
+
+  /** Get the significand size of this floating-point type */
+  unsigned getFloatingPointSignificandSize() const;
+
+  /** Get the size of this bit-vector type */
+  unsigned getBitVectorSize() const;
+
+  /** Is this a sort kind */
+  bool isSort() const;
+
+  /** Is this a sort constructor kind */
+  bool isSortConstructor() const;
+
+  /** Is this a subtype predicate */
+  bool isPredicateSubtype() const;
+
+  /** Get the predicate defining this subtype */
+  Node getSubtypePredicate() const;
+
+  /**
+   * Get the parent type of this subtype; note that it could be
+   * another subtype.
+   */
+  TypeNode getSubtypeParentType() const;
+
+  /** Get the most general base type of the type */
+  TypeNode getBaseType() const;
+
+  /** Is this a subrange */
+  bool isSubrange() const;
+
+  /** Get the bounds defining this subrange */
+  const SubrangeBounds& getSubrangeBounds() const;
+
+  /**
+   * Returns the leastUpperBound in the extended type lattice of the two types.
+   * If this is \top, i.e. there is no inhabited type that contains both,
+   * a TypeNode such that isNull() is true is returned.
+   *
+   * For more information see: http://cvc4.cs.nyu.edu/wiki/Cvc4_Type_Lattice
+   */
+  static TypeNode leastCommonTypeNode(TypeNode t0, TypeNode t1);
+  static TypeNode mostCommonTypeNode(TypeNode t0, TypeNode t1);
+
+private:
+  static TypeNode commonTypeNode(TypeNode t0, TypeNode t1, bool isLeast);
+
+  /**
+   * Returns the leastUpperBound in the extended type lattice of two
+   * predicate subtypes.
+   */
+  static TypeNode leastCommonPredicateSubtype(TypeNode t0, TypeNode t1);
+
+  /**
+   * Indents the given stream a given amount of spaces.
+   *
+   * @param out the stream to indent
+   * @param indent the number of spaces
+   */
+  static void indent(std::ostream& out, int indent) {
+    for(int i = 0; i < indent; i++) {
+      out << ' ';
+    }
+  }
+
+};/* class TypeNode */
+
+/**
+ * Serializes a given node to the given stream.
+ *
+ * @param out the output stream to use
+ * @param n the node to output to the stream
+ * @return the stream
+ */
+inline std::ostream& operator<<(std::ostream& out, const TypeNode& n) {
+  n.toStream(out, Node::setlanguage::getLanguage(out));
+  return out;
+}
+
+typedef TypeNode::HashFunction TypeNodeHashFunction;
+
+}/* CVC4 namespace */
+
+#include <ext/hash_map>
+
+#include "expr/node_manager.h"
+
+namespace CVC4 {
+
+inline Type TypeNode::toType() {
+  return NodeManager::currentNM()->toType(*this);
+}
+
+inline TypeNode TypeNode::fromType(const Type& t) {
+  return NodeManager::fromType(t);
+}
+
+inline TypeNode
+TypeNode::substitute(const TypeNode& type,
+                     const TypeNode& replacement) const {
+  std::hash_map<TypeNode, TypeNode, HashFunction> cache;
+  return substitute(type, replacement, cache);
+}
+
+template <class Iterator1, class Iterator2>
+inline TypeNode
+TypeNode::substitute(Iterator1 typesBegin,
+                     Iterator1 typesEnd,
+                     Iterator2 replacementsBegin,
+                     Iterator2 replacementsEnd) const {
+  std::hash_map<TypeNode, TypeNode, HashFunction> cache;
+  return substitute(typesBegin, typesEnd,
+                    replacementsBegin, replacementsEnd, cache);
+}
+
+template <class Iterator1, class Iterator2>
+TypeNode TypeNode::substitute(Iterator1 typesBegin,
+                              Iterator1 typesEnd,
+                              Iterator2 replacementsBegin,
+                              Iterator2 replacementsEnd,
+                              std::hash_map<TypeNode, TypeNode, HashFunction>& cache) const {
+  // in cache?
+  std::hash_map<TypeNode, TypeNode, HashFunction>::const_iterator i = cache.find(*this);
+  if(i != cache.end()) {
+    return (*i).second;
+  }
+
+  // otherwise compute
+  Assert( typesEnd - typesBegin == replacementsEnd - replacementsBegin,
+          "Substitution iterator ranges must be equal size" );
+  Iterator1 j = find(typesBegin, typesEnd, *this);
+  if(j != typesEnd) {
+    TypeNode tn = *(replacementsBegin + (j - typesBegin));
+    cache[*this] = tn;
+    return tn;
+  } else if(getNumChildren() == 0) {
+    cache[*this] = *this;
+    return *this;
+  } else {
+    NodeBuilder<> nb(getKind());
+    if(getMetaKind() == kind::metakind::PARAMETERIZED) {
+      // push the operator
+      nb << TypeNode(d_nv->d_children[0]);
+    }
+    for(TypeNode::const_iterator i = begin(),
+          iend = end();
+        i != iend;
+        ++i) {
+      nb << (*i).substitute(typesBegin, typesEnd,
+                            replacementsBegin, replacementsEnd, cache);
+    }
+    TypeNode tn = nb.constructTypeNode();
+    cache[*this] = tn;
+    return tn;
+  }
+}
+
+inline size_t TypeNode::getNumChildren() const {
+  return d_nv->getNumChildren();
+}
+
+template <class T>
+inline const T& TypeNode::getConst() const {
+  return d_nv->getConst<T>();
+}
+
+inline TypeNode::TypeNode(const expr::NodeValue* ev) :
+  d_nv(const_cast<expr::NodeValue*> (ev)) {
+  Assert(d_nv != NULL, "Expecting a non-NULL expression value!");
+  d_nv->inc();
+}
+
+inline TypeNode::TypeNode(const TypeNode& typeNode) {
+  Assert(typeNode.d_nv != NULL, "Expecting a non-NULL expression value!");
+  d_nv = typeNode.d_nv;
+  d_nv->inc();
+}
+
+inline TypeNode::~TypeNode() {
+  Assert(d_nv != NULL, "Expecting a non-NULL expression value!");
+  d_nv->dec();
+}
+
+inline void TypeNode::assignNodeValue(expr::NodeValue* ev) {
+  d_nv = ev;
+  d_nv->inc();
+}
+
+inline TypeNode& TypeNode::operator=(const TypeNode& typeNode) {
+  Assert(d_nv != NULL, "Expecting a non-NULL expression value!");
+  Assert(typeNode.d_nv != NULL,
+         "Expecting a non-NULL expression value on RHS!");
+  if(__builtin_expect( ( d_nv != typeNode.d_nv ), true )) {
+    d_nv->dec();
+    d_nv = typeNode.d_nv;
+    d_nv->inc();
+  }
+  return *this;
+}
+
+template <class AttrKind>
+inline typename AttrKind::value_type TypeNode::
+getAttribute(const AttrKind&) const {
+  Assert( NodeManager::currentNM() != NULL,
+          "There is no current CVC4::NodeManager associated to this thread.\n"
+          "Perhaps a public-facing function is missing a NodeManagerScope ?" );
+  return NodeManager::currentNM()->getAttribute(d_nv, AttrKind());
+}
+
+template <class AttrKind>
+inline bool TypeNode::
+hasAttribute(const AttrKind&) const {
+  Assert( NodeManager::currentNM() != NULL,
+          "There is no current CVC4::NodeManager associated to this thread.\n"
+          "Perhaps a public-facing function is missing a NodeManagerScope ?" );
+  return NodeManager::currentNM()->hasAttribute(d_nv, AttrKind());
+}
+
+template <class AttrKind>
+inline bool TypeNode::getAttribute(const AttrKind&, typename AttrKind::value_type& ret) const {
+  Assert( NodeManager::currentNM() != NULL,
+          "There is no current CVC4::NodeManager associated to this thread.\n"
+          "Perhaps a public-facing function is missing a NodeManagerScope ?" );
+  return NodeManager::currentNM()->getAttribute(d_nv, AttrKind(), ret);
+}
+
+template <class AttrKind>
+inline void TypeNode::
+setAttribute(const AttrKind&, const typename AttrKind::value_type& value) {
+  Assert( NodeManager::currentNM() != NULL,
+          "There is no current CVC4::NodeManager associated to this thread.\n"
+          "Perhaps a public-facing function is missing a NodeManagerScope ?" );
+  NodeManager::currentNM()->setAttribute(d_nv, AttrKind(), value);
+}
+
+inline void TypeNode::printAst(std::ostream& out, int indent) const {
+  d_nv->printAst(out, indent);
+}
+
+inline bool TypeNode::isBoolean() const {
+  return
+    ( getKind() == kind::TYPE_CONSTANT && getConst<TypeConstant>() == BOOLEAN_TYPE ) ||
+    ( isPredicateSubtype() && getSubtypeParentType().isBoolean() );
+}
+
+inline bool TypeNode::isInteger() const {
+  return
+    ( getKind() == kind::TYPE_CONSTANT && getConst<TypeConstant>() == INTEGER_TYPE ) ||
+    isSubrange() ||
+    ( isPredicateSubtype() && getSubtypeParentType().isInteger() );
+}
+
+inline bool TypeNode::isReal() const {
+  return
+    ( getKind() == kind::TYPE_CONSTANT && getConst<TypeConstant>() == REAL_TYPE ) ||
+    isInteger() ||
+    ( isPredicateSubtype() && getSubtypeParentType().isReal() );
+}
+
+inline bool TypeNode::isString() const {
+  return getKind() == kind::TYPE_CONSTANT &&
+    getConst<TypeConstant>() == STRING_TYPE;
+}
+
+/** Is this a regexp type */
+inline bool TypeNode::isRegExp() const {
+  return getKind() == kind::TYPE_CONSTANT &&
+    getConst<TypeConstant>() == REGEXP_TYPE;
+ }
+
+inline bool TypeNode::isRoundingMode() const {
+  return getKind() == kind::TYPE_CONSTANT &&
+    getConst<TypeConstant>() == ROUNDINGMODE_TYPE;
+}
+
+inline bool TypeNode::isArray() const {
+  return getKind() == kind::ARRAY_TYPE;
+}
+
+inline TypeNode TypeNode::getArrayIndexType() const {
+  Assert(isArray());
+  return (*this)[0];
+}
+
+inline TypeNode TypeNode::getArrayConstituentType() const {
+  Assert(isArray());
+  return (*this)[1];
+}
+
+inline TypeNode TypeNode::getConstructorRangeType() const {
+  Assert(isConstructor());
+  return (*this)[getNumChildren()-1];
+}
+
+inline bool TypeNode::isSet() const {
+  return getKind() == kind::SET_TYPE;
+}
+
+inline TypeNode TypeNode::getSetElementType() const {
+  Assert(isSet());
+  return (*this)[0];
+}
+
+inline bool TypeNode::isFunction() const {
+  return getKind() == kind::FUNCTION_TYPE;
+}
+
+inline bool TypeNode::isFunctionLike() const {
+  return
+    getKind() == kind::FUNCTION_TYPE ||
+    getKind() == kind::CONSTRUCTOR_TYPE ||
+    getKind() == kind::SELECTOR_TYPE ||
+    getKind() == kind::TESTER_TYPE;
+}
+
+inline bool TypeNode::isPredicate() const {
+  return isFunction() && getRangeType().isBoolean();
+}
+
+inline bool TypeNode::isPredicateLike() const {
+  return isFunctionLike() && getRangeType().isBoolean();
+}
+
+inline TypeNode TypeNode::getRangeType() const {
+  if(isTester()) {
+    return NodeManager::currentNM()->booleanType();
+  }
+  Assert(isFunction() || isConstructor() || isSelector());
+  return (*this)[getNumChildren() - 1];
+}
+
+/** Is this a symbolic expression type? */
+inline bool TypeNode::isSExpr() const {
+  return getKind() == kind::SEXPR_TYPE ||
+    ( isPredicateSubtype() && getSubtypeParentType().isSExpr() );
+}
+
+/** Is this a predicate subtype */
+inline bool TypeNode::isPredicateSubtype() const {
+  return getKind() == kind::SUBTYPE_TYPE;
+}
+
+/** Is this a subrange type */
+inline bool TypeNode::isSubrange() const {
+  return getKind() == kind::SUBRANGE_TYPE ||
+    ( isPredicateSubtype() && getSubtypeParentType().isSubrange() );
+}
+
+/** Is this a floating-point type */
+inline bool TypeNode::isFloatingPoint() const {
+  return getKind() == kind::FLOATINGPOINT_TYPE ||
+    ( isPredicateSubtype() && getSubtypeParentType().isFloatingPoint() );
+}
+
+/** Is this a bit-vector type */
+inline bool TypeNode::isBitVector() const {
+  return getKind() == kind::BITVECTOR_TYPE ||
+    ( isPredicateSubtype() && getSubtypeParentType().isBitVector() );
+}
+
+/** Is this a datatype type */
+inline bool TypeNode::isDatatype() const {
+  return getKind() == kind::DATATYPE_TYPE || getKind() == kind::PARAMETRIC_DATATYPE ||
+    ( isPredicateSubtype() && getSubtypeParentType().isDatatype() );
+}
+
+/** Is this a parametric datatype type */
+inline bool TypeNode::isParametricDatatype() const {
+  return getKind() == kind::PARAMETRIC_DATATYPE ||
+    ( isPredicateSubtype() && getSubtypeParentType().isParametricDatatype() );
+}
+
+/** Is this a codatatype type */
+inline bool TypeNode::isCodatatype() const {
+  if( isDatatype() ){
+    return getDatatype().isCodatatype();
+  }else{
+    return false;
+  }
+}
+
+/** Is this a constructor type */
+inline bool TypeNode::isConstructor() const {
+  return getKind() == kind::CONSTRUCTOR_TYPE;
+}
+
+/** Is this a selector type */
+inline bool TypeNode::isSelector() const {
+  return getKind() == kind::SELECTOR_TYPE;
+}
+
+/** Is this a tester type */
+inline bool TypeNode::isTester() const {
+  return getKind() == kind::TESTER_TYPE;
+}
+
+/** Is this a floating-point type of with <code>exp</code> exponent bits
+    and <code>sig</code> significand bits */
+inline bool TypeNode::isFloatingPoint(unsigned exp, unsigned sig) const {
+  return
+    ( getKind() == kind::FLOATINGPOINT_TYPE &&
+      getConst<FloatingPointSize>().exponent() == exp &&
+      getConst<FloatingPointSize>().significand() == sig ) ||
+    ( isPredicateSubtype() && getSubtypeParentType().isFloatingPoint(exp,sig) );
+}
+
+/** Is this a bit-vector type of size <code>size</code> */
+inline bool TypeNode::isBitVector(unsigned size) const {
+  return
+    ( getKind() == kind::BITVECTOR_TYPE && getConst<BitVectorSize>() == size ) ||
+    ( isPredicateSubtype() && getSubtypeParentType().isBitVector(size) );
+}
+
+/** Get the datatype specification from a datatype type */
+inline const Datatype& TypeNode::getDatatype() const {
+  Assert(isDatatype());
+  if( getKind() == kind::DATATYPE_TYPE ){
+    DatatypeIndexConstant dic = getConst<DatatypeIndexConstant>();
+    return NodeManager::currentNM()->getDatatypeForIndex( dic.getIndex() );
+  }else{
+    Assert( getKind() == kind::PARAMETRIC_DATATYPE );
+    return (*this)[0].getDatatype();
+  }
+}
+
+/** Get the exponent size of this floating-point type */
+inline unsigned TypeNode::getFloatingPointExponentSize() const {
+  Assert(isFloatingPoint());
+  return getConst<FloatingPointSize>().exponent();
+}
+
+/** Get the significand size of this floating-point type */
+inline unsigned TypeNode::getFloatingPointSignificandSize() const {
+ Assert(isFloatingPoint());
+ return getConst<FloatingPointSize>().significand();
+}
+
+/** Get the size of this bit-vector type */
+inline unsigned TypeNode::getBitVectorSize() const {
+  Assert(isBitVector());
+  return getConst<BitVectorSize>();
+}
+
+inline const SubrangeBounds& TypeNode::getSubrangeBounds() const {
+  Assert(isSubrange());
+  if(getKind() == kind::SUBRANGE_TYPE){
+    return getConst<SubrangeBounds>();
+  }else{
+    Assert(isPredicateSubtype());
+    return getSubtypeParentType().getSubrangeBounds();
+  }
+}
+
+#ifdef CVC4_DEBUG
+/**
+ * Pretty printer for use within gdb.  This is not intended to be used
+ * outside of gdb.  This writes to the Warning() stream and immediately
+ * flushes the stream.
+ *
+ * Note that this function cannot be a template, since the compiler
+ * won't instantiate it.  Even if we explicitly instantiate.  (Odd?)
+ * So we implement twice.  We mark as __attribute__((used)) so that
+ * GCC emits code for it even though static analysis indicates it's
+ * never called.
+ *
+ * Tim's Note: I moved this into the node.h file because this allows gdb
+ * to find the symbol, and use it, which is the first standard this code needs
+ * to meet. A cleaner solution is welcomed.
+ */
+static void __attribute__((used)) debugPrintTypeNode(const TypeNode& n) {
+  Warning() << Node::setdepth(-1)
+            << Node::printtypes(false)
+            << Node::dag(true)
+            << Node::setlanguage(language::output::LANG_AST)
+            << n << std::endl;
+  Warning().flush();
+}
+static void __attribute__((used)) debugPrintTypeNodeNoDag(const TypeNode& n) {
+  Warning() << Node::setdepth(-1)
+            << Node::printtypes(false)
+            << Node::dag(false)
+            << Node::setlanguage(language::output::LANG_AST)
+            << n << std::endl;
+  Warning().flush();
+}
+static void __attribute__((used)) debugPrintRawTypeNode(const TypeNode& n) {
+  n.printAst(Warning(), 0);
+  Warning().flush();
+}
+#endif /* CVC4_DEBUG */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__NODE_H */
diff --git a/src/expr/type_properties_template.h b/src/expr/type_properties_template.h
new file mode 100644
index 0000000..4874a84
--- /dev/null
+++ b/src/expr/type_properties_template.h
@@ -0,0 +1,141 @@
+/*********************                                                        */
+/*! \file type_properties_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Template for the Type properties header
+ **
+ ** Template for the Type properties header.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__TYPE_PROPERTIES_H
+#define __CVC4__TYPE_PROPERTIES_H
+
+#line 23 "${template}"
+
+#include <sstream>
+
+#include "base/cvc4_assert.h"
+#include "options/language.h"
+#include "expr/type_node.h"
+#include "expr/kind.h"
+#include "expr/expr.h"
+
+${type_properties_includes}
+
+#line 35 "${template}"
+
+namespace CVC4 {
+namespace kind {
+
+/**
+ * Return the cardinality of the type constant represented by the
+ * TypeConstant argument.  This function is auto-generated from Theory
+ * "kinds" files, so includes contributions from each theory regarding
+ * that theory's types.
+ */
+inline Cardinality getCardinality(TypeConstant tc) {
+  switch(tc) {
+${type_constant_cardinalities}
+#line 49 "${template}"
+  default: {
+    std::stringstream ss;
+    ss << "No cardinality known for type constant " << tc;
+    InternalError(ss.str());
+  }
+  }
+}/* getCardinality(TypeConstant) */
+
+/**
+ * Return the cardinality of the type represented by the TypeNode
+ * argument.  This function is auto-generated from Theory "kinds"
+ * files, so includes contributions from each theory regarding that
+ * theory's types.
+ */
+inline Cardinality getCardinality(TypeNode typeNode) {
+  AssertArgument(!typeNode.isNull(), typeNode);
+  switch(Kind k = typeNode.getKind()) {
+  case TYPE_CONSTANT:
+    return getCardinality(typeNode.getConst<TypeConstant>());
+${type_cardinalities}
+#line 70 "${template}"
+  default: {
+    std::stringstream ss;
+    ss << "A theory kinds file did not provide a cardinality "
+       << "or cardinality computer for type:\n" << typeNode
+       << "\nof kind " << k;
+    InternalError(ss.str());
+  }
+  }
+}/* getCardinality(TypeNode) */
+
+inline bool isWellFounded(TypeConstant tc) {
+  switch(tc) {
+${type_constant_wellfoundednesses}
+#line 84 "${template}"
+  default: {
+    std::stringstream ss;
+    ss << "No well-foundedness status known for type constant: " << tc;
+    InternalError(ss.str());
+  }
+  }
+}/* isWellFounded(TypeConstant) */
+
+inline bool isWellFounded(TypeNode typeNode) {
+  AssertArgument(!typeNode.isNull(), typeNode);
+  switch(Kind k = typeNode.getKind()) {
+  case TYPE_CONSTANT:
+    return isWellFounded(typeNode.getConst<TypeConstant>());
+${type_wellfoundednesses}
+#line 99 "${template}"
+  default: {
+    std::stringstream ss;
+    ss << "A theory kinds file did not provide a well-foundedness "
+       << "or well-foundedness computer for type:\n" << typeNode
+       << "\nof kind " << k;
+    InternalError(ss.str());
+  }
+  }
+}/* isWellFounded(TypeNode) */
+
+inline Node mkGroundTerm(TypeConstant tc) {
+  switch(tc) {
+${type_constant_groundterms}
+#line 113 "${template}"
+  default: {
+    std::stringstream ss;
+    ss << "No ground term known for type constant: " << tc;
+    InternalError(ss.str());
+  }
+  }
+}/* mkGroundTerm(TypeConstant) */
+
+inline Node mkGroundTerm(TypeNode typeNode) {
+  AssertArgument(!typeNode.isNull(), typeNode);
+  switch(Kind k = typeNode.getKind()) {
+  case TYPE_CONSTANT:
+    return mkGroundTerm(typeNode.getConst<TypeConstant>());
+${type_groundterms}
+#line 128 "${template}"
+  default: {
+    std::stringstream ss;
+    ss << "A theory kinds file did not provide a ground term "
+       << "or ground term computer for type:\n" << typeNode
+       << "\nof kind " << k;
+    InternalError(ss.str());
+  }
+  }
+}/* mkGroundTerm(TypeNode) */
+
+}/* CVC4::kind namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__TYPE_PROPERTIES_H */
diff --git a/src/expr/uninterpreted_constant.cpp b/src/expr/uninterpreted_constant.cpp
new file mode 100644
index 0000000..c88c3b5
--- /dev/null
+++ b/src/expr/uninterpreted_constant.cpp
@@ -0,0 +1,49 @@
+/*********************                                                        */
+/*! \file uninterpreted_constant.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Representation of constants of uninterpreted sorts
+ **
+ ** Representation of constants of uninterpreted sorts.
+ **/
+
+#include "expr/uninterpreted_constant.h"
+
+#include <iostream>
+#include <sstream>
+#include <string>
+
+#include "base/cvc4_assert.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+UninterpretedConstant::UninterpretedConstant(Type type, Integer index) throw(IllegalArgumentException)
+    : d_type(type)
+    , d_index(index)
+{
+  //PrettyCheckArgument(type.isSort(), type, "uninterpreted constants can only be created for uninterpreted sorts, not `%s'", type.toString().c_str());
+  PrettyCheckArgument(index >= 0, index, "index >= 0 required for uninterpreted constant index, not `%s'", index.toString().c_str());
+}
+
+std::ostream& operator<<(std::ostream& out, const UninterpretedConstant& uc) {
+  stringstream ss;
+  ss << uc.getType();
+  string t = ss.str();
+  size_t i = 0;
+  // replace everything that isn't in [a-zA-Z0-9_] with an _
+  while((i = t.find_first_not_of("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_", i)) != string::npos) {
+    t.replace(i, 1, 1, '_');
+  }
+  return out << "uc_" << t << '_' << uc.getIndex();
+}
+
+}/* CVC4 namespace */
diff --git a/src/expr/uninterpreted_constant.h b/src/expr/uninterpreted_constant.h
new file mode 100644
index 0000000..7d7a375
--- /dev/null
+++ b/src/expr/uninterpreted_constant.h
@@ -0,0 +1,79 @@
+/*********************                                                        */
+/*! \file uninterpreted_constant.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Representation of constants of uninterpreted sorts
+ **
+ ** Representation of constants of uninterpreted sorts.
+ **/
+
+#include "cvc4_public.h"
+
+#pragma once
+
+#include <iosfwd>
+
+#include "expr/type.h"
+
+namespace CVC4 {
+
+class CVC4_PUBLIC UninterpretedConstant {
+public:
+
+  UninterpretedConstant(Type type, Integer index) throw(IllegalArgumentException);
+
+  ~UninterpretedConstant() throw() { }
+
+  Type getType() const throw() {
+    return d_type;
+  }
+  const Integer& getIndex() const throw() {
+    return d_index;
+  }
+
+  bool operator==(const UninterpretedConstant& uc) const throw() {
+    return d_type == uc.d_type && d_index == uc.d_index;
+  }
+  bool operator!=(const UninterpretedConstant& uc) const throw() {
+    return !(*this == uc);
+  }
+
+  bool operator<(const UninterpretedConstant& uc) const throw() {
+    return d_type < uc.d_type ||
+           (d_type == uc.d_type && d_index < uc.d_index);
+  }
+  bool operator<=(const UninterpretedConstant& uc) const throw() {
+    return d_type < uc.d_type ||
+           (d_type == uc.d_type && d_index <= uc.d_index);
+  }
+  bool operator>(const UninterpretedConstant& uc) const throw() {
+    return !(*this <= uc);
+  }
+  bool operator>=(const UninterpretedConstant& uc) const throw() {
+    return !(*this < uc);
+  }
+
+private:
+  const Type d_type;
+  const Integer d_index;
+};/* class UninterpretedConstant */
+
+std::ostream& operator<<(std::ostream& out, const UninterpretedConstant& uc) CVC4_PUBLIC;
+
+/**
+ * Hash function for the BitVector constants.
+ */
+struct CVC4_PUBLIC UninterpretedConstantHashFunction {
+  inline size_t operator()(const UninterpretedConstant& uc) const {
+    return TypeHashFunction()(uc.getType()) * IntegerHashFunction()(uc.getIndex());
+  }
+};/* struct UninterpretedConstantHashFunction */
+
+}/* CVC4 namespace */
diff --git a/src/expr/uninterpreted_constant.i b/src/expr/uninterpreted_constant.i
new file mode 100644
index 0000000..1636eba
--- /dev/null
+++ b/src/expr/uninterpreted_constant.i
@@ -0,0 +1,17 @@
+%{
+#include "expr/uninterpreted_constant.h"
+%}
+
+%rename(less) CVC4::UninterpretedConstant::operator<(const UninterpretedConstant&) const;
+%rename(lessEqual) CVC4::UninterpretedConstant::operator<=(const UninterpretedConstant&) const;
+%rename(greater) CVC4::UninterpretedConstant::operator>(const UninterpretedConstant&) const;
+%rename(greaterEqual) CVC4::UninterpretedConstant::operator>=(const UninterpretedConstant&) const;
+
+%rename(equals) CVC4::UninterpretedConstant::operator==(const UninterpretedConstant&) const;
+%ignore CVC4::UninterpretedConstant::operator!=(const UninterpretedConstant&) const;
+
+%rename(apply) CVC4::UninterpretedConstantHashFunction::operator()(const UninterpretedConstant&) const;
+
+%ignore CVC4::operator<<(std::ostream&, const UninterpretedConstant&);
+
+%include "expr/uninterpreted_constant.h"
diff --git a/src/expr/variable_type_map.h b/src/expr/variable_type_map.h
new file mode 100644
index 0000000..00d2c3e
--- /dev/null
+++ b/src/expr/variable_type_map.h
@@ -0,0 +1,62 @@
+/*********************                                                        */
+/*! \file variable_type_map.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__VARIABLE_TYPE_MAP_H
+#define __CVC4__VARIABLE_TYPE_MAP_H
+
+#include "expr/expr.h"
+#include "util/hash.h"
+
+namespace CVC4 {
+
+class Expr;
+struct ExprHashFunction;
+class Type;
+struct TypeHashFunction;
+
+class CVC4_PUBLIC VariableTypeMap {
+  /**
+   * A map Expr -> Expr, intended to be used for a mapping of variables
+   * between two ExprManagers.
+   */
+  std::hash_map<Expr, Expr, ExprHashFunction> d_variables;
+
+  /**
+   * A map Type -> Type, intended to be used for a mapping of types
+   * between two ExprManagers.
+   */
+  std::hash_map<Type, Type, TypeHashFunction> d_types;
+
+public:
+  Expr& operator[](Expr e) { return d_variables[e]; }
+  Type& operator[](Type t) { return d_types[t]; }
+
+};/* class VariableTypeMap */
+
+typedef __gnu_cxx::hash_map<uint64_t, uint64_t> VarMap;
+
+struct CVC4_PUBLIC ExprManagerMapCollection {
+  VariableTypeMap d_typeMap;
+  VarMap d_to;
+  VarMap d_from;
+};/* struct ExprManagerMapCollection */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__VARIABLE_MAP_H */
diff --git a/src/expr/variable_type_map.i b/src/expr/variable_type_map.i
new file mode 100644
index 0000000..95c705c
--- /dev/null
+++ b/src/expr/variable_type_map.i
@@ -0,0 +1,12 @@
+%{
+#include "expr/variable_type_map.h"
+%}
+
+%rename(get) CVC4::VariableTypeMap::operator[](Expr);
+%rename(get) CVC4::VariableTypeMap::operator[](Type);
+
+%ignore CVC4::ExprManagerMapCollection::d_typeMap;
+%ignore CVC4::ExprManagerMapCollection::d_to;
+%ignore CVC4::ExprManagerMapCollection::d_from;
+
+%include "expr/variable_type_map.h"
diff --git a/src/git_versioninfo.cpp b/src/git_versioninfo.cpp
new file mode 100644
index 0000000..84ac8d3
--- /dev/null
+++ b/src/git_versioninfo.cpp
@@ -0,0 +1,5 @@
+#include "base/configuration.h"
+const bool ::CVC4::Configuration::IS_GIT_BUILD = false;
+const char* const ::CVC4::Configuration::GIT_BRANCH_NAME = "unknown";
+const char* const ::CVC4::Configuration::GIT_COMMIT = "unknown";
+const bool ::CVC4::Configuration::GIT_HAS_MODIFICATIONS = false;
diff --git a/src/include/cvc4.h b/src/include/cvc4.h
new file mode 100644
index 0000000..6e6204c
--- /dev/null
+++ b/src/include/cvc4.h
@@ -0,0 +1,34 @@
+/*********************                                                        */
+/*! \file cvc4.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Main header file for CVC4 library functionality
+ **
+ ** Main header file for CVC4 library functionality.  Includes the
+ ** most-commonly used CVC4 public-facing class interfaces.
+ **/
+
+#ifndef __CVC4__CVC4_H
+#define __CVC4__CVC4_H
+
+#include <cvc4/base/configuration.h>
+#include <cvc4/base/exception.h>
+#include <cvc4/expr/datatype.h>
+#include <cvc4/expr/expr.h>
+#include <cvc4/expr/expr_manager.h>
+#include <cvc4/options/options.h>
+#include <cvc4/parser/parser.h>
+#include <cvc4/parser/parser_builder.h>
+#include <cvc4/smt/command.h>
+#include <cvc4/smt/smt_engine.h>
+#include <cvc4/util/integer.h>
+#include <cvc4/util/rational.h>
+
+#endif /* __CVC4__CVC4_H */
diff --git a/src/include/cvc4_private.h b/src/include/cvc4_private.h
new file mode 100644
index 0000000..56be6ff
--- /dev/null
+++ b/src/include/cvc4_private.h
@@ -0,0 +1,30 @@
+/*********************                                                        */
+/*! \file cvc4_private.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief #-inclusion of this file marks a header as private and generates a
+ ** warning when the file is included improperly
+ **
+ ** #-inclusion of this file marks a header as private and generates a
+ ** warning when the file is included improperly.
+ **/
+
+#ifndef __CVC4_PRIVATE_H
+#define __CVC4_PRIVATE_H
+
+#if ! (defined(__BUILDING_CVC4LIB) || defined(__BUILDING_CVC4LIB_UNIT_TEST))
+#  error A private CVC4 header was included when not building the library or private unit test code.
+#endif /* ! (__BUILDING_CVC4LIB || __BUILDING_CVC4LIB_UNIT_TEST) */
+
+
+#include "cvc4_public.h"
+#include "cvc4autoconfig.h"
+
+#endif /* __CVC4_PRIVATE_H */
diff --git a/src/include/cvc4_private_library.h b/src/include/cvc4_private_library.h
new file mode 100644
index 0000000..c536d05
--- /dev/null
+++ b/src/include/cvc4_private_library.h
@@ -0,0 +1,29 @@
+/*********************                                                        */
+/*! \file cvc4_private_library.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief #-inclusion of this file marks a header as private and generates a
+ ** warning when the file is included improperly
+ **
+ ** #-inclusion of this file marks a header as private and generates a
+ ** warning when the file is included improperly.
+ **/
+
+#ifndef __CVC4_PRIVATE_LIBRARY_H
+#define __CVC4_PRIVATE_LIBRARY_H
+
+#if ! (defined(__BUILDING_CVC4LIB) || defined(__BUILDING_CVC4LIB_UNIT_TEST) || defined(__BUILDING_CVC4PARSERLIB) || defined(__BUILDING_CVC4PARSERLIB_UNIT_TEST) || defined(__BUILDING_CVC4COMPATLIB) || defined(__BUILDING_CVC4DRIVER))
+#  error A "private library" CVC4 header was included when not building the library, driver, or private unit test code.
+#endif /* ! (__BUILDING_CVC4LIB || __BUILDING_CVC4LIB_UNIT_TEST || __BUILDING_CVC4PARSERLIB || __BUILDING_CVC4PARSERLIB_UNIT_TEST || __BUILDING_CVC4DRIVER) */
+
+#include "cvc4_public.h"
+#include "cvc4autoconfig.h"
+
+#endif /* __CVC4_PRIVATE_LIBRARY_H */
diff --git a/src/include/cvc4_public.h b/src/include/cvc4_public.h
new file mode 100644
index 0000000..1308b3d
--- /dev/null
+++ b/src/include/cvc4_public.h
@@ -0,0 +1,71 @@
+/*********************                                                        */
+/*! \file cvc4_public.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Macros that should be defined everywhere during the building of
+ ** the libraries and driver binary, and also exported to the user.
+ **
+ ** Macros that should be defined everywhere during the building of
+ ** the libraries and driver binary, and also exported to the user.
+ **/
+
+#ifndef __CVC4_PUBLIC_H
+#define __CVC4_PUBLIC_H
+
+#include <stdint.h>
+
+#if defined _WIN32 || defined __CYGWIN__
+#  define CVC4_PUBLIC
+#else /* !( defined _WIN32 || defined __CYGWIN__ ) */
+#  if __GNUC__ >= 4
+#    define CVC4_PUBLIC __attribute__ ((__visibility__("default")))
+#  else /* !( __GNUC__ >= 4 ) */
+#    define CVC4_PUBLIC
+#  endif /* __GNUC__ >= 4 */
+#endif /* defined _WIN32 || defined __CYGWIN__ */
+
+// Can use CVC4_UNDEFINED for things like undefined, private
+// copy constructors.  The advantage is that with CVC4_UNDEFINED,
+// if something _does_ try to call the function, you get an error
+// at the point of the call (rather than a link error later).
+
+// CVC4_UNUSED is to mark something (e.g. local variable, function)
+// as being _possibly_ unused, so that the compiler generates no
+// warning about it.  This might be the case for e.g. a variable
+// only used in DEBUG builds.
+
+#ifdef __GNUC__
+#  if __GNUC__ > 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ >= 3 )
+     /* error function attribute only exists in GCC >= 4.3.0 */
+#    define CVC4_UNDEFINED __attribute__((__error__("this function intentionally undefined")))
+#  else /* GCC < 4.3.0 */
+#    define CVC4_UNDEFINED
+#  endif /* GCC >= 4.3.0 */
+#else /* ! __GNUC__ */
+#  define CVC4_UNDEFINED
+#endif /* __GNUC__ */
+
+#ifdef __GNUC__
+#  define CVC4_UNUSED __attribute__((__unused__))
+#  define CVC4_NORETURN __attribute__ ((__noreturn__))
+#  define CVC4_CONST_FUNCTION __attribute__ ((__const__))
+#  define CVC4_PURE_FUNCTION __attribute__ ((__pure__))
+#  define CVC4_DEPRECATED __attribute__ ((__deprecated__))
+#  define CVC4_WARN_UNUSED_RESULT __attribute__ ((__warn_unused_result__))
+#else /* ! __GNUC__ */
+#  define CVC4_UNUSED
+#  define CVC4_NORETURN
+#  define CVC4_CONST_FUNCTION
+#  define CVC4_PURE_FUNCTION
+#  define CVC4_DEPRECATED
+#  define CVC4_WARN_UNUSED_RESULT
+#endif /* __GNUC__ */
+
+#endif /* __CVC4_PUBLIC_H */
diff --git a/src/include/cvc4parser_private.h b/src/include/cvc4parser_private.h
new file mode 100644
index 0000000..366877c
--- /dev/null
+++ b/src/include/cvc4parser_private.h
@@ -0,0 +1,32 @@
+/*********************                                                        */
+/*! \file cvc4parser_private.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief #-inclusion of this file marks a header as private and generates a
+ ** warning when the file is included improperly.
+ **
+ ** #-inclusion of this file marks a header as private and generates a
+ ** warning when the file is included improperly.
+ **/
+
+#ifndef __CVC4PARSER_PRIVATE_H
+#define __CVC4PARSER_PRIVATE_H
+
+#if ! (defined(__BUILDING_CVC4PARSERLIB) || defined(__BUILDING_CVC4PARSERLIB_UNIT_TEST))
+#  error A private CVC4 parser header was included when not building the parser library or private unit test code.
+#endif /* ! (__BUILDING_CVC4PARSERLIB || __BUILDING_CVC4PARSERLIB_UNIT_TEST) */
+
+#include "cvc4parser_public.h"
+// It would be nice to #include "cvc4autoconfig.h" here, but there are conflicts
+// with antlr3's autoheader stuff, which they export :(
+//
+// #include "cvc4autoconfig.h"
+
+#endif /* __CVC4PARSER_PRIVATE_H */
diff --git a/src/include/cvc4parser_public.h b/src/include/cvc4parser_public.h
new file mode 100644
index 0000000..ccbd090
--- /dev/null
+++ b/src/include/cvc4parser_public.h
@@ -0,0 +1,24 @@
+/*********************                                                        */
+/*! \file cvc4parser_public.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Macros that should be defined everywhere during the building of
+ ** the libraries and driver binary, and also exported to the user.
+ **
+ ** Macros that should be defined everywhere during the building of
+ ** the libraries and driver binary, and also exported to the user.
+ **/
+
+#ifndef __CVC4PARSER_PUBLIC_H
+#define __CVC4PARSER_PUBLIC_H
+
+#include "cvc4_public.h"
+
+#endif /* __CVC4PARSER_PUBLIC_H */
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
new file mode 100644
index 0000000..8db3d66
--- /dev/null
+++ b/src/lib/Makefile.am
@@ -0,0 +1,21 @@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4LIB \
+	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..
+AM_CFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
+
+noinst_LTLIBRARIES = libreplacements.la
+
+libreplacements_la_SOURCES =
+
+libreplacements_la_LIBADD = \
+	$(LTLIBOBJS)
+
+EXTRA_DIST = \
+	replacements.h \
+	clock_gettime.c \
+	clock_gettime.h \
+	strtok_r.c \
+	strtok_r.h \
+	ffs.c \
+	ffs.h
diff --git a/src/lib/Makefile.in b/src/lib/Makefile.in
new file mode 100644
index 0000000..f6051ad
--- /dev/null
+++ b/src/lib/Makefile.in
@@ -0,0 +1,687 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = src/lib
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libreplacements_la_DEPENDENCIES = $(LTLIBOBJS)
+am_libreplacements_la_OBJECTS =
+libreplacements_la_OBJECTS = $(am_libreplacements_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(libreplacements_la_SOURCES)
+DIST_SOURCES = $(libreplacements_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp \
+	clock_gettime.c
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4LIB \
+	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..
+
+AM_CFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
+noinst_LTLIBRARIES = libreplacements.la
+libreplacements_la_SOURCES = 
+libreplacements_la_LIBADD = \
+	$(LTLIBOBJS)
+
+EXTRA_DIST = \
+	replacements.h \
+	clock_gettime.c \
+	clock_gettime.h \
+	strtok_r.c \
+	strtok_r.h \
+	ffs.c \
+	ffs.h
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/lib/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/lib/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+libreplacements.la: $(libreplacements_la_OBJECTS) $(libreplacements_la_DEPENDENCIES) $(EXTRA_libreplacements_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(LINK)  $(libreplacements_la_OBJECTS) $(libreplacements_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/clock_gettime.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf $(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf $(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	clean-noinstLTLIBRARIES cscopelist-am ctags-am distclean \
+	distclean-compile distclean-generic distclean-libtool distdir \
+	dvi dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/lib/clock_gettime.c b/src/lib/clock_gettime.c
new file mode 100644
index 0000000..9bd4eaf
--- /dev/null
+++ b/src/lib/clock_gettime.c
@@ -0,0 +1,85 @@
+/*********************                                                        */
+/*! \file clock_gettime.c
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Replacement for clock_gettime() for systems without it (like
+ ** Mac OS X)
+ **
+ ** Replacement for clock_gettime() for systems without it (like Mac
+ ** OS X).
+ **/
+
+// #warning "TODO(taking): Make lib/clock_gettime.h cvc4_private.h again."
+
+#include "lib/clock_gettime.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#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) {
+  if( s_clockconv == 0.0 ) {
+    mach_timebase_info_data_t tb;
+    kern_return_t err = mach_timebase_info(&tb);
+    if(err == 0) {
+      s_clockconv = ((double) tb.numer) / tb.denom;
+    } else {
+      return -EINVAL;
+    }
+  }
+
+  switch(which_clock) {
+  case CLOCK_REALTIME:
+  case CLOCK_REALTIME_HR:
+  case CLOCK_MONOTONIC:
+  case CLOCK_MONOTONIC_HR: {
+      uint64_t t = mach_absolute_time() * s_clockconv;
+      tp->tv_sec = t / 1000000000ul;
+      tp->tv_nsec = t % 1000000000ul;
+    }
+    break;
+  default:
+    return -EINVAL;
+  }
+
+  return 0;
+}
+
+#else /* not defined __APPLE__ */
+#ifdef __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 /* closing #ifdef __WIN32__ */
+#endif /* closing #else for #ifdef __APPLE__ / __WIN32__ */
+
+#ifdef __cplusplus
+}/* extern "C" */
+#endif /* __cplusplus */
diff --git a/src/lib/clock_gettime.h b/src/lib/clock_gettime.h
new file mode 100644
index 0000000..74c9f50
--- /dev/null
+++ b/src/lib/clock_gettime.h
@@ -0,0 +1,75 @@
+/*********************                                                        */
+/*! \file clock_gettime.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Replacement for clock_gettime() for systems without it (like Mac OS X)
+ **
+ ** Replacement for clock_gettime() for systems without it (like Mac OS X).
+ **/
+
+#include "cvc4_private_library.h"
+
+#ifndef __CVC4__LIB__CLOCK_GETTIME_H
+#define __CVC4__LIB__CLOCK_GETTIME_H
+
+#include "lib/replacements.h"
+
+#ifdef HAVE_CLOCK_GETTIME
+
+/* it should be available from <time.h> */
+#include <time.h>
+
+#else /* HAVE_CLOCK_GETTIME */
+
+/* otherwise, we have to define it */
+
+#if defined(__WIN32__) && !defined(_W64)
+
+#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__ || _W64 */
+
+/* get timespec from <time.h> */
+#include <time.h>
+
+#endif /* __WIN32__ && !_W64 */
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+struct timespec;
+
+typedef enum {
+  CLOCK_REALTIME,
+  CLOCK_MONOTONIC,
+  CLOCK_REALTIME_HR,
+  CLOCK_MONOTONIC_HR
+} clockid_t;
+
+long clock_gettime(clockid_t which_clock, struct timespec* tp);
+
+#ifdef __cplusplus
+}/* extern "C" */
+#endif /* __cplusplus */
+
+#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 0000000..d42f9da
--- /dev/null
+++ b/src/lib/ffs.c
@@ -0,0 +1,42 @@
+/*********************                                                        */
+/*! \file ffs.c
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\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 */
+#ifndef HAVE_FFS
+
+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;
+}
+
+#endif /* ifndef HAVE_FFS */
+#ifdef __cplusplus
+}/* extern "C" */
+#endif /* __cplusplus */
diff --git a/src/lib/ffs.h b/src/lib/ffs.h
new file mode 100644
index 0000000..878c8f7
--- /dev/null
+++ b/src/lib/ffs.h
@@ -0,0 +1,45 @@
+/*********************                                                        */
+/*! \file ffs.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Replacement for ffs() for systems without it (like Win32)
+ **
+ ** Replacement for ffs() for systems without it (like Win32).
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__LIB__FFS_H
+#define __CVC4__LIB__FFS_H
+
+//We include this for HAVE_FFS
+#include "cvc4autoconfig.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/replacements.h b/src/lib/replacements.h
new file mode 100644
index 0000000..d2f7d9f
--- /dev/null
+++ b/src/lib/replacements.h
@@ -0,0 +1,34 @@
+/*********************                                                        */
+/*! \file replacements.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Common header for replacement function sources
+ **
+ ** Common header for replacement function sources.
+ **/
+
+#ifndef __CVC4__LIB__REPLACEMENTS_H
+#define __CVC4__LIB__REPLACEMENTS_H
+
+#if (defined(__BUILDING_CVC4LIB) || defined(__BUILDING_CVC4LIB_UNIT_TEST)) && !defined(__BUILDING_STATISTICS_FOR_EXPORT)
+#  include "cvc4_private.h"
+#else
+#  if defined(__BUILDING_CVC4PARSERLIB) || defined(__BUILDING_CVC4PARSERLIB_UNIT_TEST)
+#    include "cvc4parser_private.h"
+#  else
+#    if defined(__BUILDING_CVC4DRIVER) || defined(__BUILDING_CVC4_SYSTEM_TEST) || defined(__BUILDING_STATISTICS_FOR_EXPORT)
+#      include "cvc4autoconfig.h"
+#    else
+#      error Must be building libcvc4 or libcvc4parser to use replacement functions.  This is because replacement function headers should never be publicly-depended upon, as they should not be installed on user machines with 'make install'.
+#    endif
+#  endif
+#endif
+
+#endif /* __CVC4__LIB__REPLACEMENTS_H */
diff --git a/src/lib/strtok_r.c b/src/lib/strtok_r.c
new file mode 100644
index 0000000..9173596
--- /dev/null
+++ b/src/lib/strtok_r.c
@@ -0,0 +1,44 @@
+/*********************                                                        */
+/*! \file strtok_r.c
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\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 */
+#ifndef HAVE_STRTOK_R
+
+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;
+  }
+}
+
+#endif /* ifndef HAVE_STRTOK_R */
+#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 0000000..e3803b0
--- /dev/null
+++ b/src/lib/strtok_r.h
@@ -0,0 +1,42 @@
+/*********************                                                        */
+/*! \file strtok_r.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\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"
+
+#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
new file mode 100644
index 0000000..372e817
--- /dev/null
+++ b/src/main/Makefile.am
@@ -0,0 +1,85 @@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4DRIVER \
+	-I at builddir@/.. $(ANTLR_INCLUDES) -I at srcdir@/../include -I at srcdir@/..
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas
+
+bin_PROGRAMS = cvc4
+
+noinst_LIBRARIES = libmain.a
+
+libmain_a_SOURCES = \
+	interactive_shell.h \
+	interactive_shell.cpp \
+	main.h \
+	util.cpp
+
+if CVC4_BUILD_PCVC4
+bin_PROGRAMS += pcvc4
+pcvc4_SOURCES = \
+	main.cpp \
+	portfolio.cpp \
+	portfolio.h \
+	portfolio_util.cpp \
+	portfolio_util.h \
+	command_executor.cpp \
+	command_executor_portfolio.cpp \
+	command_executor.h \
+	command_executor_portfolio.h \
+	driver_unified.cpp
+pcvc4_LDADD = \
+	libmain.a \
+	@builddir@/../parser/libcvc4parser.la \
+	@builddir@/../libcvc4.la \
+	$(READLINE_LIBS) \
+	@builddir@/../lib/libreplacements.la
+
+pcvc4_CPPFLAGS = $(AM_CPPFLAGS) $(BOOST_CPPFLAGS) -DPORTFOLIO_BUILD
+pcvc4_LDADD += $(BOOST_THREAD_LIBS)
+pcvc4_LDADD += $(BOOST_THREAD_LDFLAGS)
+
+if STATIC_BINARY
+pcvc4_LINK = $(CXXLINK) -all-static $(pcvc4_LDFLAGS)
+else
+pcvc4_LINK = $(CXXLINK) $(pcvc4_LDFLAGS)
+endif
+endif
+
+cvc4_SOURCES = \
+	main.cpp \
+	command_executor.cpp \
+	driver_unified.cpp
+cvc4_LDADD = \
+	libmain.a \
+	@builddir@/../parser/libcvc4parser.la \
+	@builddir@/../libcvc4.la \
+	$(READLINE_LIBS) \
+	@builddir@/../lib/libreplacements.la
+
+BUILT_SOURCES = \
+	$(TOKENS_FILES)
+
+TOKENS_FILES = \
+	cvc_tokens.h \
+	smt1_tokens.h \
+	smt2_tokens.h \
+	tptp_tokens.h
+
+cvc_tokens.h: @srcdir@/../parser/cvc/Cvc.g
+	$(AM_V_GEN)grep "'[a-zA-Z][a-zA-Z0-9_-][a-zA-Z0-9_-]*'" $^ | sed 's/.*'\''\([a-zA-Z0-9_-]*\)'\''.*/"\1",/' | sort -u >$@
+smt1_tokens.h: @srcdir@/../parser/smt1/Smt1.g
+	$(AM_V_GEN)grep "'[a-zA-Z][a-zA-Z0-9_-][a-zA-Z0-9_-]*'" $^ | sed 's/.*'\''\([a-zA-Z0-9_-]*\)'\''.*/"\1",/' | sort -u >$@
+smt2_tokens.h: @srcdir@/../parser/smt2/Smt2.g
+	$(AM_V_GEN)grep "'[a-zA-Z][a-zA-Z0-9_-][a-zA-Z0-9_-]*'" $^ | sed 's/.*'\''\([a-zA-Z0-9_-]*\)'\''.*/"\1",/' | sort -u >$@
+tptp_tokens.h: @srcdir@/../parser/tptp/Tptp.g
+	$(AM_V_GEN)grep "'[a-zA-Z][a-zA-Z0-9_-][a-zA-Z0-9_-]*'" $^ | sed 's/.*'\''\([a-zA-Z0-9_-]*\)'\''.*/"\1",/' | sort -u >$@
+
+
+clean-local:
+	rm -f $(BUILT_SOURCES)
+
+if STATIC_BINARY
+cvc4_LINK = $(CXXLINK) -all-static $(cvc4_LDFLAGS)
+else
+cvc4_LINK = $(CXXLINK) $(cvc4_LDFLAGS)
+endif
+
diff --git a/src/main/Makefile.in b/src/main/Makefile.in
new file mode 100644
index 0000000..2e9e757
--- /dev/null
+++ b/src/main/Makefile.in
@@ -0,0 +1,1010 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+bin_PROGRAMS = cvc4$(EXEEXT) $(am__EXEEXT_1)
+ at CVC4_BUILD_PCVC4_TRUE@am__append_1 = pcvc4
+subdir = src/main
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_ at AM_V@)
+am__v_AR_ = $(am__v_AR_ at AM_DEFAULT_V@)
+am__v_AR_0 = @echo "  AR      " $@;
+am__v_AR_1 = 
+libmain_a_AR = $(AR) $(ARFLAGS)
+libmain_a_LIBADD =
+am_libmain_a_OBJECTS = interactive_shell.$(OBJEXT) util.$(OBJEXT)
+libmain_a_OBJECTS = $(am_libmain_a_OBJECTS)
+ at CVC4_BUILD_PCVC4_TRUE@am__EXEEXT_1 = pcvc4$(EXEEXT)
+am__installdirs = "$(DESTDIR)$(bindir)"
+PROGRAMS = $(bin_PROGRAMS)
+am_cvc4_OBJECTS = main.$(OBJEXT) command_executor.$(OBJEXT) \
+	driver_unified.$(OBJEXT)
+cvc4_OBJECTS = $(am_cvc4_OBJECTS)
+am__DEPENDENCIES_1 =
+cvc4_DEPENDENCIES = libmain.a @builddir@/../parser/libcvc4parser.la \
+	@builddir@/../libcvc4.la $(am__DEPENDENCIES_1) \
+	@builddir@/../lib/libreplacements.la
+am__pcvc4_SOURCES_DIST = main.cpp portfolio.cpp portfolio.h \
+	portfolio_util.cpp portfolio_util.h command_executor.cpp \
+	command_executor_portfolio.cpp command_executor.h \
+	command_executor_portfolio.h driver_unified.cpp
+ at CVC4_BUILD_PCVC4_TRUE@am_pcvc4_OBJECTS = pcvc4-main.$(OBJEXT) \
+ at CVC4_BUILD_PCVC4_TRUE@	pcvc4-portfolio.$(OBJEXT) \
+ at CVC4_BUILD_PCVC4_TRUE@	pcvc4-portfolio_util.$(OBJEXT) \
+ at CVC4_BUILD_PCVC4_TRUE@	pcvc4-command_executor.$(OBJEXT) \
+ at CVC4_BUILD_PCVC4_TRUE@	pcvc4-command_executor_portfolio.$(OBJEXT) \
+ at CVC4_BUILD_PCVC4_TRUE@	pcvc4-driver_unified.$(OBJEXT)
+pcvc4_OBJECTS = $(am_pcvc4_OBJECTS)
+ at CVC4_BUILD_PCVC4_TRUE@pcvc4_DEPENDENCIES = libmain.a \
+ at CVC4_BUILD_PCVC4_TRUE@	@builddir@/../parser/libcvc4parser.la \
+ at CVC4_BUILD_PCVC4_TRUE@	@builddir@/../libcvc4.la \
+ at CVC4_BUILD_PCVC4_TRUE@	$(am__DEPENDENCIES_1) \
+ at CVC4_BUILD_PCVC4_TRUE@	@builddir@/../lib/libreplacements.la \
+ at CVC4_BUILD_PCVC4_TRUE@	$(am__DEPENDENCIES_1) \
+ at CVC4_BUILD_PCVC4_TRUE@	$(am__DEPENDENCIES_1)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(libmain_a_SOURCES) $(cvc4_SOURCES) $(pcvc4_SOURCES)
+DIST_SOURCES = $(libmain_a_SOURCES) $(cvc4_SOURCES) \
+	$(am__pcvc4_SOURCES_DIST)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4DRIVER \
+	-I at builddir@/.. $(ANTLR_INCLUDES) -I at srcdir@/../include -I at srcdir@/..
+
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas
+noinst_LIBRARIES = libmain.a
+libmain_a_SOURCES = \
+	interactive_shell.h \
+	interactive_shell.cpp \
+	main.h \
+	util.cpp
+
+ at CVC4_BUILD_PCVC4_TRUE@pcvc4_SOURCES = \
+ at CVC4_BUILD_PCVC4_TRUE@	main.cpp \
+ at CVC4_BUILD_PCVC4_TRUE@	portfolio.cpp \
+ at CVC4_BUILD_PCVC4_TRUE@	portfolio.h \
+ at CVC4_BUILD_PCVC4_TRUE@	portfolio_util.cpp \
+ at CVC4_BUILD_PCVC4_TRUE@	portfolio_util.h \
+ at CVC4_BUILD_PCVC4_TRUE@	command_executor.cpp \
+ at CVC4_BUILD_PCVC4_TRUE@	command_executor_portfolio.cpp \
+ at CVC4_BUILD_PCVC4_TRUE@	command_executor.h \
+ at CVC4_BUILD_PCVC4_TRUE@	command_executor_portfolio.h \
+ at CVC4_BUILD_PCVC4_TRUE@	driver_unified.cpp
+
+ at CVC4_BUILD_PCVC4_TRUE@pcvc4_LDADD = libmain.a \
+ at CVC4_BUILD_PCVC4_TRUE@	@builddir@/../parser/libcvc4parser.la \
+ at CVC4_BUILD_PCVC4_TRUE@	@builddir@/../libcvc4.la \
+ at CVC4_BUILD_PCVC4_TRUE@	$(READLINE_LIBS) \
+ at CVC4_BUILD_PCVC4_TRUE@	@builddir@/../lib/libreplacements.la \
+ at CVC4_BUILD_PCVC4_TRUE@	$(BOOST_THREAD_LIBS) \
+ at CVC4_BUILD_PCVC4_TRUE@	$(BOOST_THREAD_LDFLAGS)
+ at CVC4_BUILD_PCVC4_TRUE@pcvc4_CPPFLAGS = $(AM_CPPFLAGS) $(BOOST_CPPFLAGS) -DPORTFOLIO_BUILD
+ at CVC4_BUILD_PCVC4_TRUE@@STATIC_BINARY_FALSE at pcvc4_LINK = $(CXXLINK) $(pcvc4_LDFLAGS)
+ at CVC4_BUILD_PCVC4_TRUE@@STATIC_BINARY_TRUE at pcvc4_LINK = $(CXXLINK) -all-static $(pcvc4_LDFLAGS)
+cvc4_SOURCES = \
+	main.cpp \
+	command_executor.cpp \
+	driver_unified.cpp
+
+cvc4_LDADD = \
+	libmain.a \
+	@builddir@/../parser/libcvc4parser.la \
+	@builddir@/../libcvc4.la \
+	$(READLINE_LIBS) \
+	@builddir@/../lib/libreplacements.la
+
+BUILT_SOURCES = \
+	$(TOKENS_FILES)
+
+TOKENS_FILES = \
+	cvc_tokens.h \
+	smt1_tokens.h \
+	smt2_tokens.h \
+	tptp_tokens.h
+
+ at STATIC_BINARY_FALSE@cvc4_LINK = $(CXXLINK) $(cvc4_LDFLAGS)
+ at STATIC_BINARY_TRUE@cvc4_LINK = $(CXXLINK) -all-static $(cvc4_LDFLAGS)
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/main/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/main/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
+libmain.a: $(libmain_a_OBJECTS) $(libmain_a_DEPENDENCIES) $(EXTRA_libmain_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libmain.a
+	$(AM_V_AR)$(libmain_a_AR) libmain.a $(libmain_a_OBJECTS) $(libmain_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libmain.a
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
+	for p in $$list; do echo "$$p $$p"; done | \
+	sed 's/$(EXEEXT)$$//' | \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
+	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+	sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+	    else { print "f", $$3 "/" $$4, $$1; } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	    test -z "$$files" || { \
+	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	    } \
+	; done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+	@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+	echo " rm -f" $$list; \
+	rm -f $$list || exit $$?; \
+	test -n "$(EXEEXT)" || exit 0; \
+	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+	echo " rm -f" $$list; \
+	rm -f $$list
+
+cvc4$(EXEEXT): $(cvc4_OBJECTS) $(cvc4_DEPENDENCIES) $(EXTRA_cvc4_DEPENDENCIES) 
+	@rm -f cvc4$(EXEEXT)
+	$(AM_V_GEN)$(cvc4_LINK) $(cvc4_OBJECTS) $(cvc4_LDADD) $(LIBS)
+
+pcvc4$(EXEEXT): $(pcvc4_OBJECTS) $(pcvc4_DEPENDENCIES) $(EXTRA_pcvc4_DEPENDENCIES) 
+	@rm -f pcvc4$(EXEEXT)
+	$(AM_V_GEN)$(pcvc4_LINK) $(pcvc4_OBJECTS) $(pcvc4_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/command_executor.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/driver_unified.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/interactive_shell.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/main.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pcvc4-command_executor.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pcvc4-command_executor_portfolio.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pcvc4-driver_unified.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pcvc4-main.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pcvc4-portfolio.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pcvc4-portfolio_util.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/util.Po at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+pcvc4-main.o: main.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT pcvc4-main.o -MD -MP -MF $(DEPDIR)/pcvc4-main.Tpo -c -o pcvc4-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pcvc4-main.Tpo $(DEPDIR)/pcvc4-main.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='main.cpp' object='pcvc4-main.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o pcvc4-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
+
+pcvc4-main.obj: main.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT pcvc4-main.obj -MD -MP -MF $(DEPDIR)/pcvc4-main.Tpo -c -o pcvc4-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pcvc4-main.Tpo $(DEPDIR)/pcvc4-main.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='main.cpp' object='pcvc4-main.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o pcvc4-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
+
+pcvc4-portfolio.o: portfolio.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT pcvc4-portfolio.o -MD -MP -MF $(DEPDIR)/pcvc4-portfolio.Tpo -c -o pcvc4-portfolio.o `test -f 'portfolio.cpp' || echo '$(srcdir)/'`portfolio.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pcvc4-portfolio.Tpo $(DEPDIR)/pcvc4-portfolio.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='portfolio.cpp' object='pcvc4-portfolio.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o pcvc4-portfolio.o `test -f 'portfolio.cpp' || echo '$(srcdir)/'`portfolio.cpp
+
+pcvc4-portfolio.obj: portfolio.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT pcvc4-portfolio.obj -MD -MP -MF $(DEPDIR)/pcvc4-portfolio.Tpo -c -o pcvc4-portfolio.obj `if test -f 'portfolio.cpp'; then $(CYGPATH_W) 'portfolio.cpp'; else $(CYGPATH_W) '$(srcdir)/portfolio.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pcvc4-portfolio.Tpo $(DEPDIR)/pcvc4-portfolio.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='portfolio.cpp' object='pcvc4-portfolio.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o pcvc4-portfolio.obj `if test -f 'portfolio.cpp'; then $(CYGPATH_W) 'portfolio.cpp'; else $(CYGPATH_W) '$(srcdir)/portfolio.cpp'; fi`
+
+pcvc4-portfolio_util.o: portfolio_util.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT pcvc4-portfolio_util.o -MD -MP -MF $(DEPDIR)/pcvc4-portfolio_util.Tpo -c -o pcvc4-portfolio_util.o `test -f 'portfolio_util.cpp' || echo '$(srcdir)/'`portfolio_util.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pcvc4-portfolio_util.Tpo $(DEPDIR)/pcvc4-portfolio_util.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='portfolio_util.cpp' object='pcvc4-portfolio_util.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o pcvc4-portfolio_util.o `test -f 'portfolio_util.cpp' || echo '$(srcdir)/'`portfolio_util.cpp
+
+pcvc4-portfolio_util.obj: portfolio_util.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT pcvc4-portfolio_util.obj -MD -MP -MF $(DEPDIR)/pcvc4-portfolio_util.Tpo -c -o pcvc4-portfolio_util.obj `if test -f 'portfolio_util.cpp'; then $(CYGPATH_W) 'portfolio_util.cpp'; else $(CYGPATH_W) '$(srcdir)/portfolio_util.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pcvc4-portfolio_util.Tpo $(DEPDIR)/pcvc4-portfolio_util.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='portfolio_util.cpp' object='pcvc4-portfolio_util.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o pcvc4-portfolio_util.obj `if test -f 'portfolio_util.cpp'; then $(CYGPATH_W) 'portfolio_util.cpp'; else $(CYGPATH_W) '$(srcdir)/portfolio_util.cpp'; fi`
+
+pcvc4-command_executor.o: command_executor.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT pcvc4-command_executor.o -MD -MP -MF $(DEPDIR)/pcvc4-command_executor.Tpo -c -o pcvc4-command_executor.o `test -f 'command_executor.cpp' || echo '$(srcdir)/'`command_executor.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pcvc4-command_executor.Tpo $(DEPDIR)/pcvc4-command_executor.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='command_executor.cpp' object='pcvc4-command_executor.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o pcvc4-command_executor.o `test -f 'command_executor.cpp' || echo '$(srcdir)/'`command_executor.cpp
+
+pcvc4-command_executor.obj: command_executor.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT pcvc4-command_executor.obj -MD -MP -MF $(DEPDIR)/pcvc4-command_executor.Tpo -c -o pcvc4-command_executor.obj `if test -f 'command_executor.cpp'; then $(CYGPATH_W) 'command_executor.cpp'; else $(CYGPATH_W) '$(srcdir)/command_executor.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pcvc4-command_executor.Tpo $(DEPDIR)/pcvc4-command_executor.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='command_executor.cpp' object='pcvc4-command_executor.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o pcvc4-command_executor.obj `if test -f 'command_executor.cpp'; then $(CYGPATH_W) 'command_executor.cpp'; else $(CYGPATH_W) '$(srcdir)/command_executor.cpp'; fi`
+
+pcvc4-command_executor_portfolio.o: command_executor_portfolio.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT pcvc4-command_executor_portfolio.o -MD -MP -MF $(DEPDIR)/pcvc4-command_executor_portfolio.Tpo -c -o pcvc4-command_executor_portfolio.o `test -f 'command_executor_portfolio.cpp' || echo '$(srcdir)/'`command_executor_portfolio.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pcvc4-command_executor_portfolio.Tpo $(DEPDIR)/pcvc4-command_executor_portfolio.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='command_executor_portfolio.cpp' object='pcvc4-command_executor_portfolio.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o pcvc4-command_executor_portfolio.o `test -f 'command_executor_portfolio.cpp' || echo '$(srcdir)/'`command_executor_portfolio.cpp
+
+pcvc4-command_executor_portfolio.obj: command_executor_portfolio.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT pcvc4-command_executor_portfolio.obj -MD -MP -MF $(DEPDIR)/pcvc4-command_executor_portfolio.Tpo -c -o pcvc4-command_executor_portfolio.obj `if test -f 'command_executor_portfolio.cpp'; then $(CYGPATH_W) 'command_executor_portfolio.cpp'; else $(CYGPATH_W) '$(srcdir)/command_executor_portfolio.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pcvc4-command_executor_portfolio.Tpo $(DEPDIR)/pcvc4-command_executor_portfolio.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='command_executor_portfolio.cpp' object='pcvc4-command_executor_portfolio.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o pcvc4-command_executor_portfolio.obj `if test -f 'command_executor_portfolio.cpp'; then $(CYGPATH_W) 'command_executor_portfolio.cpp'; else $(CYGPATH_W) '$(srcdir)/command_executor_portfolio.cpp'; fi`
+
+pcvc4-driver_unified.o: driver_unified.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT pcvc4-driver_unified.o -MD -MP -MF $(DEPDIR)/pcvc4-driver_unified.Tpo -c -o pcvc4-driver_unified.o `test -f 'driver_unified.cpp' || echo '$(srcdir)/'`driver_unified.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pcvc4-driver_unified.Tpo $(DEPDIR)/pcvc4-driver_unified.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='driver_unified.cpp' object='pcvc4-driver_unified.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o pcvc4-driver_unified.o `test -f 'driver_unified.cpp' || echo '$(srcdir)/'`driver_unified.cpp
+
+pcvc4-driver_unified.obj: driver_unified.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT pcvc4-driver_unified.obj -MD -MP -MF $(DEPDIR)/pcvc4-driver_unified.Tpo -c -o pcvc4-driver_unified.obj `if test -f 'driver_unified.cpp'; then $(CYGPATH_W) 'driver_unified.cpp'; else $(CYGPATH_W) '$(srcdir)/driver_unified.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pcvc4-driver_unified.Tpo $(DEPDIR)/pcvc4-driver_unified.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='driver_unified.cpp' object='pcvc4-driver_unified.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pcvc4_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o pcvc4-driver_unified.obj `if test -f 'driver_unified.cpp'; then $(CYGPATH_W) 'driver_unified.cpp'; else $(CYGPATH_W) '$(srcdir)/driver_unified.cpp'; fi`
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LIBRARIES) $(PROGRAMS)
+installdirs:
+	for dir in "$(DESTDIR)$(bindir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool clean-local \
+	clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+	clean-binPROGRAMS clean-generic clean-libtool clean-local \
+	clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-binPROGRAMS install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
+
+.PRECIOUS: Makefile
+
+
+cvc_tokens.h: @srcdir@/../parser/cvc/Cvc.g
+	$(AM_V_GEN)grep "'[a-zA-Z][a-zA-Z0-9_-][a-zA-Z0-9_-]*'" $^ | sed 's/.*'\''\([a-zA-Z0-9_-]*\)'\''.*/"\1",/' | sort -u >$@
+smt1_tokens.h: @srcdir@/../parser/smt1/Smt1.g
+	$(AM_V_GEN)grep "'[a-zA-Z][a-zA-Z0-9_-][a-zA-Z0-9_-]*'" $^ | sed 's/.*'\''\([a-zA-Z0-9_-]*\)'\''.*/"\1",/' | sort -u >$@
+smt2_tokens.h: @srcdir@/../parser/smt2/Smt2.g
+	$(AM_V_GEN)grep "'[a-zA-Z][a-zA-Z0-9_-][a-zA-Z0-9_-]*'" $^ | sed 's/.*'\''\([a-zA-Z0-9_-]*\)'\''.*/"\1",/' | sort -u >$@
+tptp_tokens.h: @srcdir@/../parser/tptp/Tptp.g
+	$(AM_V_GEN)grep "'[a-zA-Z][a-zA-Z0-9_-][a-zA-Z0-9_-]*'" $^ | sed 's/.*'\''\([a-zA-Z0-9_-]*\)'\''.*/"\1",/' | sort -u >$@
+
+clean-local:
+	rm -f $(BUILT_SOURCES)
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/main/command_executor.cpp b/src/main/command_executor.cpp
new file mode 100644
index 0000000..ebb57da
--- /dev/null
+++ b/src/main/command_executor.cpp
@@ -0,0 +1,291 @@
+/*********************                                                        */
+/*! \file command_executor.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An additional layer between commands and invoking them.
+ **/
+
+#include "main/command_executor.h"
+
+#ifndef __WIN32__
+#  include <sys/resource.h>
+#endif /* ! __WIN32__ */
+
+#include <iostream>
+#include <string>
+
+#include "main/main.h"
+#include "smt/command.h"
+
+
+namespace CVC4 {
+namespace main {
+
+// Function to cancel any (externally-imposed) limit on CPU time.
+// This is used for competitions while a solution (proof or model)
+// is being dumped (so that we don't give "sat" or "unsat" then get
+// interrupted partway through outputting a proof!).
+void setNoLimitCPU() {
+  // Windows doesn't have these things, just ignore
+#ifndef __WIN32__
+  struct rlimit rlc;
+  int st = getrlimit(RLIMIT_CPU, &rlc);
+  if(st == 0) {
+    rlc.rlim_cur = rlc.rlim_max;
+    setrlimit(RLIMIT_CPU, &rlc);
+  }
+#endif /* ! __WIN32__ */
+}
+
+void printStatsIncremental(std::ostream& out, const std::string& prvsStatsString, const std::string& curStatsString);
+
+CommandExecutor::CommandExecutor(ExprManager &exprMgr, Options &options) :
+  d_exprMgr(exprMgr),
+  d_smtEngine(new SmtEngine(&exprMgr)),
+  d_options(options),
+  d_stats("driver"),
+  d_result(),
+  d_replayStream(NULL)
+{}
+
+void CommandExecutor::setReplayStream(ExprStream* replayStream) {
+  assert(d_replayStream == NULL);
+  d_replayStream = replayStream;
+  d_smtEngine->setReplayStream(d_replayStream);
+}
+
+bool CommandExecutor::doCommand(Command* cmd)
+{
+  if( d_options.getParseOnly() ) {
+    return true;
+  }
+
+  CommandSequence *seq = dynamic_cast<CommandSequence*>(cmd);
+  if(seq != NULL) {
+    // assume no error
+    bool status = true;
+
+    for(CommandSequence::iterator subcmd = seq->begin();
+        (status || d_options.getContinuedExecution()) && subcmd != seq->end();
+        ++subcmd) {
+      status = doCommand(*subcmd);
+    }
+
+    return status;
+  } else {
+    if(d_options.getVerbosity() > 2) {
+      *d_options.getOut() << "Invoking: " << *cmd << std::endl;
+    }
+
+    return doCommandSingleton(cmd);
+  }
+}
+
+void CommandExecutor::reset()
+{
+  if(d_options.getStatistics()) {
+    flushStatistics(*d_options.getErr());
+  }
+  delete d_smtEngine;
+  d_smtEngine = new SmtEngine(&d_exprMgr);
+}
+
+bool CommandExecutor::doCommandSingleton(Command* cmd)
+{
+  bool status = true;
+  if(d_options.getVerbosity() >= -1) {
+    status = smtEngineInvoke(d_smtEngine, cmd, d_options.getOut());
+  } else {
+    status = smtEngineInvoke(d_smtEngine, cmd, NULL);
+  }
+
+  Result res;
+  CheckSatCommand* cs = dynamic_cast<CheckSatCommand*>(cmd);
+  if(cs != NULL) {
+    d_result = res = cs->getResult();
+  }
+  QueryCommand* q = dynamic_cast<QueryCommand*>(cmd);
+  if(q != NULL) {
+    d_result = res = q->getResult();
+  }
+  CheckSynthCommand* csy = dynamic_cast<CheckSynthCommand*>(cmd);
+  if(csy != NULL) {
+    d_result = res = csy->getResult();
+  }
+
+  if((cs != NULL || q != NULL) && d_options.getStatsEveryQuery()) {
+    std::ostringstream ossCurStats;
+    flushStatistics(ossCurStats);
+    std::ostream& err = *d_options.getErr();
+    printStatsIncremental(err, d_lastStatistics, ossCurStats.str());
+    d_lastStatistics = ossCurStats.str();
+  }
+
+  // dump the model/proof/unsat core if option is set
+  if (status) {
+    Command* g = NULL;
+    if (d_options.getProduceModels() && d_options.getDumpModels() &&
+        (res.asSatisfiabilityResult() == Result::SAT ||
+         (res.isUnknown() && res.whyUnknown() == Result::INCOMPLETE))) {
+      g = new GetModelCommand();
+    }
+    if (d_options.getProof() && d_options.getDumpProofs() &&
+        res.asSatisfiabilityResult() == Result::UNSAT) {
+      g = new GetProofCommand();
+    }
+
+    if (d_options.getDumpInstantiations() &&
+        ((d_options.getInstFormatMode() != INST_FORMAT_MODE_SZS &&
+          (res.asSatisfiabilityResult() == Result::SAT ||
+           (res.isUnknown() && res.whyUnknown() == Result::INCOMPLETE))) ||
+         res.asSatisfiabilityResult() == Result::UNSAT)) {
+      g = new GetInstantiationsCommand();
+    }
+
+    if (d_options.getDumpSynth() &&
+        res.asSatisfiabilityResult() == Result::UNSAT) {
+      g = new GetSynthSolutionCommand();
+    }
+
+    if (d_options.getDumpUnsatCores() &&
+        res.asSatisfiabilityResult() == Result::UNSAT) {
+      g = new GetUnsatCoreCommand();
+    }
+
+    if (g != NULL) {
+      // set no time limit during dumping if applicable
+      if (d_options.getForceNoLimitCpuWhileDump()) {
+        setNoLimitCPU();
+      }
+      status = doCommandSingleton(g);
+      delete g;
+    }
+  }
+  return status;
+}
+
+bool smtEngineInvoke(SmtEngine* smt, Command* cmd, std::ostream *out)
+{
+  if(out == NULL) {
+    cmd->invoke(smt);
+  } else {
+    cmd->invoke(smt, *out);
+  }
+  // ignore the error if the command-verbosity is 0 for this command
+  std::string commandName =
+      std::string("command-verbosity:") + cmd->getCommandName();
+  if(smt->getOption(commandName).getIntegerValue() == 0) {
+    return true;
+  }
+  return !cmd->fail();
+}
+
+void printStatsIncremental(std::ostream& out, const std::string& prvsStatsString, const std::string& curStatsString) {
+  if(prvsStatsString == "") {
+    out << curStatsString;
+    return;
+  }
+
+  // read each line
+  // if a number, subtract and add that to parentheses
+  std::istringstream issPrvs(prvsStatsString);
+  std::istringstream issCur(curStatsString);
+
+  std::string prvsStatName, prvsStatValue, curStatName, curStatValue;
+
+  std::getline(issPrvs, prvsStatName, ',');
+  std::getline(issCur, curStatName, ',');
+
+  /**
+   * Stat are assumed to one-per line: "<statName>, <statValue>"
+   *   e.g. "sat::decisions, 100"
+   * Output is of the form: "<statName>, <statValue> (<statDiffFromPrvs>)"
+   *   e.g. "sat::decisions, 100 (20)"
+   * If the value is not numeric, no change is made.
+   */
+  while( !issCur.eof() ) {
+
+    std::getline(issCur, curStatValue, '\n');
+
+    if(curStatName == prvsStatName) {
+      std::getline(issPrvs, prvsStatValue, '\n');
+
+      double prvsFloat, curFloat;
+      bool isFloat =
+        (std::istringstream(prvsStatValue) >> prvsFloat) &&
+        (std::istringstream(curStatValue) >> curFloat);
+
+      if(isFloat) {
+        out << curStatName << ", " << curStatValue << " "
+            << "(" << std::setprecision(8) << (curFloat-prvsFloat) << ")"
+            << std::endl;
+      } else {
+        out << curStatName << ", " << curStatValue << std::endl;
+      }
+
+      std::getline(issPrvs, prvsStatName, ',');
+    } else {
+      out << curStatName << ", " << curStatValue << std::endl;
+    }
+
+    std::getline(issCur, curStatName, ',');
+  }
+}
+
+void CommandExecutor::printStatsFilterZeros(std::ostream& out,
+                                            const std::string& statsString) {
+  // read each line, if a number, check zero and skip if so
+  // Stat are assumed to one-per line: "<statName>, <statValue>"
+
+  std::istringstream iss(statsString);
+  std::string statName, statValue;
+
+  std::getline(iss, statName, ',');
+
+  while( !iss.eof() ) {
+
+    std::getline(iss, statValue, '\n');
+
+    double curFloat;
+    std::istringstream iss_stat_value (statValue);
+    iss_stat_value >> curFloat;
+    bool isFloat = iss_stat_value.good();
+
+    if( (isFloat && curFloat == 0) ||
+        statValue == " \"0\"" ||
+        statValue == " \"[]\"") {
+      // skip
+    } else {
+      out << statName << "," << statValue << std::endl;
+    }
+
+    std::getline(iss, statName, ',');
+  }
+
+}
+
+void CommandExecutor::flushOutputStreams() {
+  if(d_options.getStatistics()) {
+    if(d_options.getStatsHideZeros() == false) {
+      flushStatistics(*(d_options.getErr()));
+    } else {
+      std::ostringstream ossStats;
+      flushStatistics(ossStats);
+      printStatsFilterZeros(*(d_options.getErr()), ossStats.str());
+    }
+  }
+
+  // make sure out and err streams are flushed too
+  d_options.flushOut();
+  d_options.flushErr();
+}
+
+}/* CVC4::main namespace */
+}/* CVC4 namespace */
diff --git a/src/main/command_executor.h b/src/main/command_executor.h
new file mode 100644
index 0000000..4018aed
--- /dev/null
+++ b/src/main/command_executor.h
@@ -0,0 +1,94 @@
+/*********************                                                        */
+/*! \file command_executor.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An additional layer between commands and invoking them.
+ **/
+
+#ifndef __CVC4__MAIN__COMMAND_EXECUTOR_H
+#define __CVC4__MAIN__COMMAND_EXECUTOR_H
+
+#include <iosfwd>
+#include <string>
+
+#include "expr/expr_manager.h"
+#include "options/options.h"
+#include "smt/command.h"
+#include "smt/smt_engine.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace main {
+
+class CommandExecutor {
+private:
+  std::string d_lastStatistics;
+
+protected:
+  ExprManager& d_exprMgr;
+  SmtEngine* d_smtEngine;
+  Options& d_options;
+  StatisticsRegistry d_stats;
+  Result d_result;
+  ExprStream* d_replayStream;
+
+public:
+  CommandExecutor(ExprManager &exprMgr, Options &options);
+
+  virtual ~CommandExecutor() {
+    delete d_smtEngine;
+    if(d_replayStream != NULL){
+      delete d_replayStream;
+    }
+  }
+
+  /**
+   * Executes a command. Recursively handles if cmd is a command
+   * sequence.  Eventually uses doCommandSingleton (which can be
+   * overridden by a derived class).
+   */
+  bool doCommand(CVC4::Command* cmd);
+
+  Result getResult() const { return d_result; }
+  void reset();
+
+  StatisticsRegistry& getStatisticsRegistry() {
+    return d_stats;
+  }
+
+  virtual void flushStatistics(std::ostream& out) const {
+    d_exprMgr.getStatistics().flushInformation(out);
+    d_smtEngine->getStatistics().flushInformation(out);
+    d_stats.flushInformation(out);
+  }
+
+  static void printStatsFilterZeros(std::ostream& out,
+                                    const std::string& statsString);
+
+  LemmaChannels* channels() { return d_smtEngine->channels(); }
+  void flushOutputStreams();
+
+  void setReplayStream(ExprStream* replayStream);
+
+protected:
+  /** Executes treating cmd as a singleton */
+  virtual bool doCommandSingleton(CVC4::Command* cmd);
+
+private:
+  CommandExecutor();
+
+};/* class CommandExecutor */
+
+bool smtEngineInvoke(SmtEngine* smt, Command* cmd, std::ostream *out);
+
+}/* CVC4::main namespace */
+}/* CVC4 namespace */
+
+#endif  /* __CVC4__MAIN__COMMAND_EXECUTOR_H */
diff --git a/src/main/command_executor_portfolio.cpp b/src/main/command_executor_portfolio.cpp
new file mode 100644
index 0000000..bd8b6a9
--- /dev/null
+++ b/src/main/command_executor_portfolio.cpp
@@ -0,0 +1,442 @@
+/*********************                                                        */
+/*! \file command_executor_portfolio.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An additional layer between commands and invoking them.
+ **
+ ** The portfolio executor branches check-sat queries to several
+ ** threads.
+ **/
+
+#include "main/command_executor_portfolio.h"
+
+#if HAVE_UNISTD_H
+#  include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+
+#include <boost/exception_ptr.hpp>
+#include <boost/lexical_cast.hpp>
+#include <boost/thread.hpp>
+#include <boost/thread/condition.hpp>
+#include <string>
+
+#include "cvc4autoconfig.h"
+#include "expr/pickler.h"
+#include "main/main.h"
+#include "main/portfolio.h"
+#include "options/options.h"
+#include "options/set_language.h"
+#include "smt/command.h"
+
+
+using namespace std;
+
+namespace CVC4 {
+namespace main {
+
+CommandExecutorPortfolio::CommandExecutorPortfolio(
+    ExprManager &exprMgr, Options &options, OptionsList& tOpts)
+    : CommandExecutor(exprMgr, options),
+      d_numThreads(options.getThreads()),
+      d_smts(),
+      d_seq(new CommandSequence()),
+      d_threadOptions(tOpts),
+      d_vmaps(),
+      d_lastWinner(0),
+      d_channelsOut(),
+      d_channelsIn(),
+      d_ostringstreams(),
+      d_statLastWinner("portfolio::lastWinner"),
+      d_statWaitTime("portfolio::waitTime")
+{
+  assert(d_threadOptions.size() == d_numThreads);
+
+  d_statLastWinner.setData(d_lastWinner);
+  d_stats.registerStat(&d_statLastWinner);
+
+  d_stats.registerStat(&d_statWaitTime);
+
+  /* Duplication, individualization */
+  d_exprMgrs.push_back(&d_exprMgr);
+  for(unsigned i = 1; i < d_numThreads; ++i) {
+    d_exprMgrs.push_back(new ExprManager(d_threadOptions[i]));
+  }
+
+  // Create the SmtEngine(s)
+  d_smts.push_back(d_smtEngine);
+  for(unsigned i = 1; i < d_numThreads; ++i) {
+    d_smts.push_back(new SmtEngine(d_exprMgrs[i]));
+  }
+
+  assert(d_vmaps.size() == 0);
+  for(unsigned i = 0; i < d_numThreads; ++i) {
+    d_vmaps.push_back(new ExprManagerMapCollection());
+  }
+}
+
+CommandExecutorPortfolio::~CommandExecutorPortfolio()
+{
+  assert(d_seq != NULL);
+  delete d_seq;
+
+  assert(d_smts.size() == d_numThreads);
+  for(unsigned i = 1; i < d_numThreads; ++i) {
+    // the 0-th one is responsibility of parent class
+
+    delete d_smts[i];
+    delete d_exprMgrs[i];
+  }
+  d_exprMgrs.clear();
+  d_smts.clear();
+
+  d_stats.unregisterStat(&d_statLastWinner);
+  d_stats.unregisterStat(&d_statWaitTime);
+}
+
+void CommandExecutorPortfolio::lemmaSharingInit()
+{
+  /* Sharing channels */
+  assert(d_channelsIn.size() == 0);
+  assert(d_channelsOut.size() == 0);
+
+  if(d_numThreads == 1) {
+    // Disable sharing
+    d_threadOptions[0].setSharingFilterByLength(0);
+  } else {
+    // Setup sharing channels
+    const unsigned int sharingChannelSize = 1000000;
+
+    for(unsigned i = 0; i < d_numThreads; ++i){
+      d_channelsOut.push_back(
+          new SynchronizedSharedChannel<ChannelFormat>(sharingChannelSize));
+      d_channelsIn.push_back(
+          new SynchronizedSharedChannel<ChannelFormat>(sharingChannelSize));
+    }
+
+    /* Lemma I/O channels */
+    for(unsigned i = 0; i < d_numThreads; ++i) {
+      int thread_id = d_threadOptions[i].getThreadId();
+      string tag = "thread #" + boost::lexical_cast<string>(thread_id);
+      LemmaOutputChannel* outputChannel =
+          new PortfolioLemmaOutputChannel(tag, d_channelsOut[i], d_exprMgrs[i],
+                                          d_vmaps[i]->d_from, d_vmaps[i]->d_to);
+      LemmaInputChannel* inputChannel =
+          new PortfolioLemmaInputChannel(tag, d_channelsIn[i], d_exprMgrs[i],
+                                         d_vmaps[i]->d_from, d_vmaps[i]->d_to);
+      d_smts[i]->channels()->setLemmaInputChannel(inputChannel);
+      d_smts[i]->channels()->setLemmaOutputChannel(outputChannel);
+    }
+
+    /* Output to string stream  */
+    assert(d_ostringstreams.size() == 0);
+    for(unsigned i = 0; i < d_numThreads; ++i) {
+      d_ostringstreams.push_back(new ostringstream);
+      d_threadOptions[i].setOut(d_ostringstreams[i]);
+
+      OutputLanguage outputLanguage = d_threadOptions[i].getOutputLanguage();
+      // important even for muzzled builds (to get result output right)
+      *(d_threadOptions[i].getOut()) << language::SetLanguage(outputLanguage);
+    }
+  }
+}/* CommandExecutorPortfolio::lemmaSharingInit() */
+
+void CommandExecutorPortfolio::lemmaSharingCleanup()
+{
+  assert(d_numThreads == d_options.getThreads());
+
+  if(d_numThreads == 1)
+    return;
+
+  // Channel cleanup
+  assert(d_channelsIn.size() == d_numThreads);
+  assert(d_channelsOut.size() == d_numThreads);
+  for(unsigned i = 0; i < d_numThreads; ++i) {
+    delete d_channelsIn[i];
+    delete d_channelsOut[i];
+    delete d_smts[i]->channels()->getLemmaInputChannel();
+    d_smts[i]->channels()->setLemmaInputChannel(NULL);
+    delete d_smts[i]->channels()->getLemmaOutputChannel();
+    d_smts[i]->channels()->setLemmaOutputChannel(NULL);
+  }
+  d_channelsIn.clear();
+  d_channelsOut.clear();
+
+  // sstreams cleanup (if used)
+  if(d_ostringstreams.size() != 0) {
+    assert(d_ostringstreams.size() == d_numThreads);
+    for(unsigned i = 0; i < d_numThreads; ++i) {
+      d_threadOptions[i].setOut(d_options.getOut());
+      delete d_ostringstreams[i];
+    }
+    d_ostringstreams.clear();
+  }
+
+}/* CommandExecutorPortfolio::lemmaSharingCleanup() */
+
+
+bool CommandExecutorPortfolio::doCommandSingleton(Command* cmd)
+{
+  /**
+   * save the command and if check sat or query command, run a
+   * porfolio of SMT solvers.
+   */
+
+  int mode = 0;
+  // mode = 0 : run command on lastWinner, saving the command
+  // to be run on all others
+  //
+  // mode = 1 : run a race of the command, update lastWinner
+  //
+  // mode = 2 : run _only_ the lastWinner thread, not saving the
+  // command
+
+  if(dynamic_cast<CheckSatCommand*>(cmd) != NULL ||
+     dynamic_cast<QueryCommand*>(cmd) != NULL ||
+     dynamic_cast<CheckSynthCommand*>(cmd) != NULL) {
+    mode = 1;
+  } else if(dynamic_cast<GetValueCommand*>(cmd) != NULL ||
+            dynamic_cast<GetAssignmentCommand*>(cmd) != NULL ||
+            dynamic_cast<GetModelCommand*>(cmd) != NULL ||
+            dynamic_cast<GetProofCommand*>(cmd) != NULL ||
+            dynamic_cast<GetInstantiationsCommand*>(cmd) != NULL ||
+            dynamic_cast<GetUnsatCoreCommand*>(cmd) != NULL ||
+            dynamic_cast<GetAssertionsCommand*>(cmd) != NULL ||
+            dynamic_cast<GetInfoCommand*>(cmd) != NULL ||
+            dynamic_cast<GetOptionCommand*>(cmd) != NULL ||
+            false) {
+    mode = 2;
+  }
+
+  Debug("portfolio::outputmode") << "Mode is " << mode
+                                 << "lastWinner is " << d_lastWinner
+                                 << "d_seq is " << d_seq << std::endl;
+
+  if(mode == 0) {
+    d_seq->addCommand(cmd->clone());
+    Command* cmdExported =
+      d_lastWinner == 0 ?
+      cmd : cmd->exportTo(d_exprMgrs[d_lastWinner], *(d_vmaps[d_lastWinner]) );
+    std::ostream* winnersOut =  d_options.getVerbosity() >= -1 ?
+        (d_threadOptions[d_lastWinner]).getOut() : NULL;
+    bool ret = smtEngineInvoke(d_smts[d_lastWinner], cmdExported, winnersOut);
+    if(d_lastWinner != 0) delete cmdExported;
+    return ret;
+  } else if(mode == 1) {               // portfolio
+    d_seq->addCommand(cmd->clone());
+
+    // We currently don't support changing number of threads for each
+    // command, but things have been architected in a way so that this
+    // can be achieved without a lot of work.
+    Command *seqs[d_numThreads];
+
+    if(d_lastWinner == 0)
+      seqs[0] = cmd;
+    else
+      seqs[0] = d_seq;
+
+    /* variable maps and exporting */
+    for(unsigned i = 1; i < d_numThreads; ++i) {
+      /**
+       * vmaps[i].d_from [x] = y means
+       *    that in thread #0's expr manager id is y
+       *    and  in thread #i's expr manager id is x
+       * opposite for d_to
+       *
+       * d_from[x] : in a sense gives the id if converting *from* it to
+       *             first thread
+       */
+      try {
+        seqs[i] =
+          int(i) == d_lastWinner ?
+          cmd->exportTo(d_exprMgrs[i], *(d_vmaps[i])) :
+          d_seq->exportTo(d_exprMgrs[i], *(d_vmaps[i]) );
+      } catch(ExportUnsupportedException& e) {
+        if(d_options.getFallbackSequential()) {
+          Notice() << "Unsupported theory encountered."
+                   << "Switching to sequential mode.";
+          return CommandExecutor::doCommandSingleton(cmd);
+        }
+        else
+          throw Exception("Certain theories (e.g., datatypes) are (currently)"
+                          " unsupported in portfolio\n mode. Please see option"
+                          " --fallback-sequential to make this a soft error.");
+      }
+    }
+
+    /**
+     * Create identity variable map for the first thread, with only
+     * those variables which have a corresponding variable in
+     * another thread. (TODO: Also assert, all threads have the same
+     * set of variables mapped.)
+     */
+    if(d_numThreads >= 2) {
+      VarMap& thread_0_from = d_vmaps[0]->d_from;
+      VarMap& thread_1_to = d_vmaps[1]->d_to;
+      for(VarMap::iterator i=thread_1_to.begin();
+          i != thread_1_to.end(); ++i) {
+        thread_0_from[i->first] = i->first;
+      }
+      d_vmaps[0]->d_to = thread_0_from;
+    }
+
+    lemmaSharingInit();
+
+    /* Portfolio */
+    boost::function<bool()>* fns = new boost::function<bool()>[d_numThreads];
+    for(unsigned i = 0; i < d_numThreads; ++i) {
+      std::ostream* current_out_or_null = d_options.getVerbosity() >= -1 ?
+          d_threadOptions[i].getOut() : NULL;
+
+      fns[i] = boost::bind(smtEngineInvoke, d_smts[i], seqs[i],
+                           current_out_or_null);
+    }
+
+    assert(d_channelsIn.size() == d_numThreads
+           || d_numThreads == 1);
+    assert(d_channelsOut.size() == d_numThreads
+           || d_numThreads == 1);
+    assert(d_smts.size() == d_numThreads);
+    assert( !d_statWaitTime.running() );
+
+    boost::function<void()>
+      smFn = d_numThreads <= 1 ? boost::function<void()>() :
+             boost::bind(sharingManager<ChannelFormat>,
+                         d_numThreads,
+                         &d_channelsOut[0],
+                         &d_channelsIn[0],
+                         &d_smts[0]);
+
+    size_t threadStackSize = d_options.getThreadStackSize();
+    threadStackSize *= 1024 * 1024;
+
+    pair<int, bool> portfolioReturn =
+        runPortfolio(d_numThreads, smFn, fns, threadStackSize,
+                     d_options.getWaitToJoin(), d_statWaitTime);
+
+#ifdef CVC4_STATISTICS_ON
+    assert( d_statWaitTime.running() );
+    d_statWaitTime.stop();
+#endif /* CVC4_STATISTICS_ON */
+
+    d_lastWinner = portfolioReturn.first;
+    d_result = d_smts[d_lastWinner]->getStatusOfLastCommand();
+
+    if(d_ostringstreams.size() != 0) {
+      assert(d_numThreads == d_options.getThreads());
+      assert(portfolioReturn.first >= 0);
+      assert(unsigned(portfolioReturn.first) < d_numThreads);
+
+      std::ostream& out = *d_options.getOut();
+      if(Debug.isOn("treat-unknown-error")) {
+        if(d_ostringstreams[portfolioReturn.first]->str() == "unknown\n") {
+          out << "portfolioReturn = (" << portfolioReturn.first << ", "
+              << portfolioReturn.second << ")\n";
+          for(unsigned i = 0; i < d_numThreads; ++i)
+            out << "thread " << i << ": " << d_ostringstreams[i]->str()
+                << std::endl;
+          throw Exception("unknown encountered");
+        }
+      }
+
+      out << d_ostringstreams[portfolioReturn.first]->str()
+          << std::flush;
+
+#ifdef CVC4_COMPETITION_MODE
+      // We use CVC4 in competition with --no-wait-to-join. If
+      // destructors run, they will destroy(!) us. So, just exit now.
+      _exit(0);
+#endif /* CVC4_COMPETITION_MODE */
+    }
+
+    /* cleanup this check sat specific stuff */
+    lemmaSharingCleanup();
+
+    delete d_seq;
+    d_seq = new CommandSequence();
+
+    delete[] fns;
+
+    bool status = portfolioReturn.second;
+
+    // dump the model/proof/unsat core if option is set
+    if(status) {
+      if( d_options.getProduceModels() &&
+          d_options.getDumpModels() &&
+          ( d_result.asSatisfiabilityResult() == Result::SAT ||
+            (d_result.isUnknown() &&
+             d_result.whyUnknown() == Result::INCOMPLETE) ) )
+      {
+        Command* gm = new GetModelCommand();
+        status = doCommandSingleton(gm);
+      } else if( d_options.getProof() &&
+                 d_options.getDumpProofs() &&
+                 d_result.asSatisfiabilityResult() == Result::UNSAT ) {
+        Command* gp = new GetProofCommand();
+        status = doCommandSingleton(gp);
+      } else if( d_options.getDumpInstantiations() &&
+                 ( ( d_options.getInstFormatMode() != INST_FORMAT_MODE_SZS &&
+                   ( d_result.asSatisfiabilityResult() == Result::SAT ||
+                     (d_result.isUnknown() &&
+                      d_result.whyUnknown() == Result::INCOMPLETE) ) ) ||
+                   d_result.asSatisfiabilityResult() == Result::UNSAT ) ) {
+        Command* gi = new GetInstantiationsCommand();
+        status = doCommandSingleton(gi);
+      } else if( d_options.getDumpSynth() &&
+                 d_result.asSatisfiabilityResult() == Result::UNSAT ){
+        Command* gi = new GetSynthSolutionCommand();
+        status = doCommandSingleton(gi);
+      } else if( d_options.getDumpUnsatCores() &&
+                 d_result.asSatisfiabilityResult() == Result::UNSAT ) {
+        Command* guc = new GetUnsatCoreCommand();
+        status = doCommandSingleton(guc);
+      }
+    }
+
+    return status;
+  } else if(mode == 2) {
+    Command* cmdExported = d_lastWinner == 0 ?
+        cmd : cmd->exportTo(d_exprMgrs[d_lastWinner], *(d_vmaps[d_lastWinner]));
+    std::ostream* winner_out_if_verbose = d_options.getVerbosity() >= -1 ?
+        d_threadOptions[d_lastWinner].getOut() : NULL;
+    bool ret = smtEngineInvoke(d_smts[d_lastWinner], cmdExported,
+                               winner_out_if_verbose);
+    if(d_lastWinner != 0){
+      delete cmdExported;
+    }
+    return ret;
+  } else {
+    // Unreachable();
+    assert(false);
+    return false;
+  }
+
+}/* CommandExecutorPortfolio::doCommandSingleton() */
+
+void CommandExecutorPortfolio::flushStatistics(std::ostream& out) const {
+  assert(d_numThreads == d_exprMgrs.size() &&
+         d_exprMgrs.size() == d_smts.size());
+  for(size_t i = 0; i < d_numThreads; ++i) {
+    string emTag = "thread#"
+        + boost::lexical_cast<string>(d_threadOptions[i].getThreadId());
+    Statistics stats = d_exprMgrs[i]->getStatistics();
+    stats.setPrefix(emTag);
+    stats.flushInformation(out);
+
+    string smtTag = "thread#"
+        + boost::lexical_cast<string>(d_threadOptions[i].getThreadId());
+    stats = d_smts[i]->getStatistics();
+    stats.setPrefix(smtTag);
+    stats.flushInformation(out);
+  }
+  d_stats.flushInformation(out);
+}
+
+}/* CVC4::main namespace */
+}/* CVC4 namespace */
diff --git a/src/main/command_executor_portfolio.h b/src/main/command_executor_portfolio.h
new file mode 100644
index 0000000..be980a0
--- /dev/null
+++ b/src/main/command_executor_portfolio.h
@@ -0,0 +1,79 @@
+/*********************                                                        */
+/*! \file command_executor_portfolio.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An additional layer between commands and invoking them.
+ **
+ ** The portfolio executer branches check-sat queries to several
+ ** threads.
+ **/
+
+#ifndef __CVC4__MAIN__COMMAND_EXECUTOR_PORTFOLIO_H
+#define __CVC4__MAIN__COMMAND_EXECUTOR_PORTFOLIO_H
+
+#include "main/command_executor.h"
+#include "main/portfolio_util.h"
+
+#include <iosfwd>
+#include <sstream>
+#include <string>
+#include <vector>
+
+namespace CVC4 {
+
+class CommandSequence;
+
+namespace main {
+
+class CommandExecutorPortfolio : public CommandExecutor {
+
+  // These shall be created/deleted during initialization
+  std::vector<ExprManager*> d_exprMgrs;
+  const unsigned d_numThreads;   // Currently const, but designed so it is
+                                 // not too hard to support this changing
+  std::vector<SmtEngine*> d_smts;
+  CommandSequence* d_seq;
+  OptionsList& d_threadOptions;
+  std::vector<ExprManagerMapCollection*> d_vmaps;
+
+  int d_lastWinner;
+
+  // These shall be reset for each check-sat
+  std::vector< SharedChannel<ChannelFormat>* > d_channelsOut;
+  std::vector< SharedChannel<ChannelFormat>* > d_channelsIn;
+  std::vector<std::ostringstream*> d_ostringstreams;
+
+  // Stats
+  ReferenceStat<int> d_statLastWinner;
+  TimerStat d_statWaitTime;
+
+public:
+  CommandExecutorPortfolio(ExprManager &exprMgr,
+                           Options &options,
+                           OptionsList& tOpts);
+
+  ~CommandExecutorPortfolio();
+
+  std::string getSmtEngineStatus();
+
+  void flushStatistics(std::ostream& out) const;
+
+protected:
+  bool doCommandSingleton(Command* cmd);
+private:
+  CommandExecutorPortfolio();
+  void lemmaSharingInit();
+  void lemmaSharingCleanup();
+};/* class CommandExecutorPortfolio */
+
+}/* CVC4::main namespace */
+}/* CVC4 namespace */
+
+#endif  /* __CVC4__MAIN__COMMAND_EXECUTOR_PORTFOLIO_H */
diff --git a/src/main/driver_unified.cpp b/src/main/driver_unified.cpp
new file mode 100644
index 0000000..efa4f5b
--- /dev/null
+++ b/src/main/driver_unified.cpp
@@ -0,0 +1,593 @@
+/*********************                                                        */
+/*! \file driver_unified.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Liana Hadarean
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Driver for CVC4 executable (cvc4) unified for both
+ ** sequential and portfolio versions
+ **/
+
+#include <stdio.h>
+#include <unistd.h>
+
+#include <cstdlib>
+#include <cstring>
+#include <fstream>
+#include <iostream>
+#include <new>
+
+// This must come before PORTFOLIO_BUILD.
+#include "cvc4autoconfig.h"
+
+#include "base/configuration.h"
+#include "base/output.h"
+#include "base/ptr_closer.h"
+#include "expr/expr_iomanip.h"
+#include "expr/expr_manager.h"
+#include "main/command_executor.h"
+
+#ifdef PORTFOLIO_BUILD
+#  include "main/command_executor_portfolio.h"
+#endif
+
+#include "main/interactive_shell.h"
+#include "main/main.h"
+#include "options/options.h"
+#include "options/set_language.h"
+#include "parser/parser.h"
+#include "parser/parser_builder.h"
+#include "parser/parser_exception.h"
+#include "smt/command.h"
+#include "util/result.h"
+#include "util/statistics_registry.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::parser;
+using namespace CVC4::main;
+
+namespace CVC4 {
+  namespace main {
+    /** Global options variable */
+    CVC4_THREADLOCAL(Options*) pOptions;
+
+    /** Full argv[0] */
+    const char *progPath;
+
+    /** Just the basename component of argv[0] */
+    const char *progName;
+
+    /** A pointer to the CommandExecutor (the signal handlers need it) */
+    CVC4::main::CommandExecutor* pExecutor = NULL;
+
+    /** A pointer to the totalTime driver stat (the signal handlers need it) */
+    CVC4::TimerStat* pTotalTime = NULL;
+
+  }/* CVC4::main namespace */
+}/* CVC4 namespace */
+
+
+void printUsage(Options& opts, bool full) {
+  stringstream ss;
+  ss << "usage: " << opts.getBinaryName() << " [options] [input-file]"
+     << endl << endl
+     << "Without an input file, or with `-', CVC4 reads from standard input."
+     << endl << endl
+     << "CVC4 options:" << endl;
+  if(full) {
+    Options::printUsage( ss.str(), *(opts.getOut()) );
+  } else {
+    Options::printShortUsage( ss.str(), *(opts.getOut()) );
+  }
+}
+
+int runCvc4(int argc, char* argv[], Options& opts) {
+
+  // Timer statistic
+  pTotalTime = new TimerStat("totalTime");
+  pTotalTime->start();
+
+  // For the signal handlers' benefit
+  pOptions = &opts;
+
+  // Initialize the signal handlers
+  cvc4_init();
+
+  progPath = argv[0];
+
+  // Parse the options
+  vector<string> filenames = Options::parseOptions(&opts, argc, argv);
+
+# ifndef PORTFOLIO_BUILD
+  if( opts.wasSetByUserThreads() ||
+      opts.wasSetByUserThreadStackSize() ||
+      (! opts.getThreadArgv().empty()) ) {
+    throw OptionException("Thread options cannot be used with sequential CVC4.  Please build and use the portfolio binary `pcvc4'.");
+  }
+# endif
+
+  progName = opts.getBinaryName().c_str();
+
+  if( opts.getHelp() ) {
+    printUsage(opts, true);
+    exit(1);
+  } else if( opts.getLanguageHelp() ) {
+    Options::printLanguageHelp(*(opts.getOut()));
+    exit(1);
+  } else if( opts.getVersion() ) {
+    *(opts.getOut()) << Configuration::about().c_str() << flush;
+    exit(0);
+  }
+
+  segvSpin = opts.getSegvSpin();
+
+  // If in competition mode, set output stream option to flush immediately
+#ifdef CVC4_COMPETITION_MODE
+  *(opts.getOut()) << unitbuf;
+#endif /* CVC4_COMPETITION_MODE */
+
+  // We only accept one input file
+  if(filenames.size() > 1) {
+    throw Exception("Too many input files specified.");
+  }
+
+  // If no file supplied we will read from standard input
+  const bool inputFromStdin = filenames.empty() || filenames[0] == "-";
+
+  // if we're reading from stdin on a TTY, default to interactive mode
+  if(!opts.wasSetByUserInteractive()) {
+    opts.setInteractive(inputFromStdin && isatty(fileno(stdin)));
+  }
+
+  // Auto-detect input language by filename extension
+  const char* filename = inputFromStdin ? "<stdin>" : filenames[0].c_str();
+
+  if(opts.getInputLanguage() == language::input::LANG_AUTO) {
+    if( inputFromStdin ) {
+      // We can't do any fancy detection on stdin
+      opts.setInputLanguage(language::input::LANG_CVC4);
+    } else {
+      unsigned len = strlen(filename);
+      if(len >= 5 && !strcmp(".smt2", filename + len - 5)) {
+        opts.setInputLanguage(language::input::LANG_SMTLIB_V2_5);
+      } else if(len >= 4 && !strcmp(".smt", filename + len - 4)) {
+        opts.setInputLanguage(language::input::LANG_SMTLIB_V1);
+      } else if(len >= 5 && !strcmp(".smt1", filename + len - 5)) {
+        opts.setInputLanguage(language::input::LANG_SMTLIB_V1);
+      } else if((len >= 2 && !strcmp(".p", filename + len - 2))
+                || (len >= 5 && !strcmp(".tptp", filename + len - 5))) {
+        opts.setInputLanguage(language::input::LANG_TPTP);
+      } else if(( len >= 4 && !strcmp(".cvc", filename + len - 4) )
+                || ( len >= 5 && !strcmp(".cvc4", filename + len - 5) )) {
+        opts.setInputLanguage(language::input::LANG_CVC4);
+      } else if((len >= 3 && !strcmp(".sy", filename + len - 3))
+                || (len >= 3 && !strcmp(".sl", filename + len - 3))) {
+        opts.setInputLanguage(language::input::LANG_SYGUS);
+        //since there is no sygus output language, set this to SMT lib 2
+        //opts.setOutputLanguage(language::output::LANG_SMTLIB_V2_0);
+      }
+    }
+  }
+
+  if(opts.getOutputLanguage() == language::output::LANG_AUTO) {
+    opts.setOutputLanguage(language::toOutputLanguage(opts.getInputLanguage()));
+  }
+
+  // if doing sygus, turn on CEGQI by default
+  if(opts.getInputLanguage() == language::input::LANG_SYGUS ){
+    if( !opts.wasSetByUserCeGuidedInst()) {
+      opts.setCeGuidedInst(true);
+    }
+    if( !opts.wasSetByUserDumpSynth()) {
+      opts.setDumpSynth(true);
+    }
+  }
+
+  // Determine which messages to show based on smtcomp_mode and verbosity
+  if(Configuration::isMuzzledBuild()) {
+    DebugChannel.setStream(&CVC4::null_os);
+    TraceChannel.setStream(&CVC4::null_os);
+    NoticeChannel.setStream(&CVC4::null_os);
+    ChatChannel.setStream(&CVC4::null_os);
+    MessageChannel.setStream(&CVC4::null_os);
+    WarningChannel.setStream(&CVC4::null_os);
+  }
+
+  // important even for muzzled builds (to get result output right)
+  (*(opts.getOut())) << language::SetLanguage(opts.getOutputLanguage());
+
+  // Create the expression manager using appropriate options
+  ExprManager* exprMgr;
+# ifndef PORTFOLIO_BUILD
+  exprMgr = new ExprManager(opts);
+  pExecutor = new CommandExecutor(*exprMgr, opts);
+# else
+  OptionsList threadOpts;
+  parseThreadSpecificOptions(threadOpts, opts);
+
+  bool useParallelExecutor = true;
+  // incremental?
+  if(opts.wasSetByUserIncrementalSolving() &&
+     opts.getIncrementalSolving() &&
+     (! opts.getIncrementalParallel()) ) {
+    Notice() << "Notice: In --incremental mode, using the sequential solver"
+             << " unless forced by...\n"
+             << "Notice: ...the experimental --incremental-parallel option.\n";
+    useParallelExecutor = false;
+  }
+  // proofs?
+  if(opts.getCheckProofs()) {
+    if(opts.getFallbackSequential()) {
+      Warning() << "Warning: Falling back to sequential mode, as cannot run"
+                << " portfolio in check-proofs mode.\n";
+      useParallelExecutor = false;
+    }
+    else {
+      throw OptionException("Cannot run portfolio in check-proofs mode.");
+    }
+  }
+  // pick appropriate one
+  if(useParallelExecutor) {
+    exprMgr = new ExprManager(threadOpts[0]);
+    pExecutor = new CommandExecutorPortfolio(*exprMgr, opts, threadOpts);
+  } else {
+    exprMgr = new ExprManager(opts);
+    pExecutor = new CommandExecutor(*exprMgr, opts);
+  }
+# endif
+
+  PtrCloser<Parser> replayParser;
+  if( opts.getReplayInputFilename() != "" ) {
+    std::string replayFilename = opts.getReplayInputFilename();
+    ParserBuilder replayParserBuilder(exprMgr, replayFilename, opts);
+
+    if( replayFilename == "-") {
+      if( inputFromStdin ) {
+        throw OptionException("Replay file and input file can't both be stdin.");
+      }
+      replayParserBuilder.withStreamInput(cin);
+    }
+    replayParser.reset(replayParserBuilder.build());
+    pExecutor->setReplayStream(new Parser::ExprStream(replayParser.get()));
+  }
+
+  int returnValue = 0;
+  {
+    // Timer statistic
+    RegisterStatistic statTotalTime(&pExecutor->getStatisticsRegistry(),
+                                    pTotalTime);
+
+    // Filename statistics
+    ReferenceStat< const char* > s_statFilename("filename", filename);
+    RegisterStatistic statFilenameReg(&pExecutor->getStatisticsRegistry(),
+                                      &s_statFilename);
+
+    // Parse and execute commands until we are done
+    Command* cmd;
+    bool status = true;
+    if(opts.getInteractive() && inputFromStdin) {
+      if(opts.getTearDownIncremental() > 0) {
+        throw OptionException(
+            "--tear-down-incremental doesn't work in interactive mode");
+      }
+#ifndef PORTFOLIO_BUILD
+      if(!opts.wasSetByUserIncrementalSolving()) {
+        cmd = new SetOptionCommand("incremental", SExpr(true));
+        cmd->setMuted(true);
+        pExecutor->doCommand(cmd);
+        delete cmd;
+      }
+#endif /* PORTFOLIO_BUILD */
+      InteractiveShell shell(*exprMgr, opts);
+      if(opts.getInteractivePrompt()) {
+        Message() << Configuration::getPackageName()
+                  << " " << Configuration::getVersionString();
+        if(Configuration::isGitBuild()) {
+          Message() << " [" << Configuration::getGitId() << "]";
+        } else if(Configuration::isSubversionBuild()) {
+          Message() << " [" << Configuration::getSubversionId() << "]";
+        }
+        Message() << (Configuration::isDebugBuild() ? " DEBUG" : "")
+                  << " assertions:"
+                  << (Configuration::isAssertionBuild() ? "on" : "off")
+                  << endl;
+      }
+      if(replayParser) {
+        // have the replay parser use the declarations input interactively
+        replayParser->useDeclarationsFrom(shell.getParser());
+      }
+
+      while(true) {
+        try {
+          cmd = shell.readCommand();
+        } catch(UnsafeInterruptException& e) {
+          (*opts.getOut()) << CommandInterrupted();
+          break;
+        }
+        if (cmd == NULL)
+          break;
+        status = pExecutor->doCommand(cmd) && status;
+        if (cmd->interrupted()) {
+          delete cmd;
+          break;
+        }
+        delete cmd;
+      }
+    } else if( opts.getTearDownIncremental() > 0) {
+      if(!opts.getIncrementalSolving() && opts.getTearDownIncremental() > 1) {
+        // For tear-down-incremental values greater than 1, need incremental
+        // on too.
+        cmd = new SetOptionCommand("incremental", SExpr(true));
+        cmd->setMuted(true);
+        pExecutor->doCommand(cmd);
+        delete cmd;
+        // if(opts.wasSetByUserIncrementalSolving()) {
+        //   throw OptionException(
+        //     "--tear-down-incremental incompatible with --incremental");
+        // }
+
+        // cmd = new SetOptionCommand("incremental", SExpr(false));
+        // cmd->setMuted(true);
+        // pExecutor->doCommand(cmd);
+        // delete cmd;
+      }
+
+      ParserBuilder parserBuilder(exprMgr, filename, opts);
+
+      if( inputFromStdin ) {
+#if defined(CVC4_COMPETITION_MODE) && !defined(CVC4_SMTCOMP_APPLICATION_TRACK)
+        parserBuilder.withStreamInput(cin);
+#else /* CVC4_COMPETITION_MODE && !CVC4_SMTCOMP_APPLICATION_TRACK */
+        parserBuilder.withLineBufferedStreamInput(cin);
+#endif /* CVC4_COMPETITION_MODE && !CVC4_SMTCOMP_APPLICATION_TRACK */
+      }
+
+      vector< vector<Command*> > allCommands;
+      allCommands.push_back(vector<Command*>());
+      PtrCloser<Parser> parser(parserBuilder.build());
+      if(replayParser) {
+        // have the replay parser use the file's declarations
+        replayParser->useDeclarationsFrom(parser.get());
+      }
+      int needReset = 0;
+      // true if one of the commands was interrupted
+      bool interrupted = false;
+      while (status || opts.getContinuedExecution()) {
+        if (interrupted) {
+          (*opts.getOut()) << CommandInterrupted();
+          break;
+        }
+
+        try {
+          cmd = parser->nextCommand();
+          if (cmd == NULL) break;
+        } catch (UnsafeInterruptException& e) {
+          interrupted = true;
+          continue;
+        }
+
+        if(dynamic_cast<PushCommand*>(cmd) != NULL) {
+          if(needReset >= opts.getTearDownIncremental()) {
+            pExecutor->reset();
+            for(size_t i = 0; i < allCommands.size() && !interrupted; ++i) {
+              if (interrupted) break;
+              for(size_t j = 0; j < allCommands[i].size() && !interrupted; ++j)
+              {
+                Command* cmd = allCommands[i][j]->clone();
+                cmd->setMuted(true);
+                pExecutor->doCommand(cmd);
+                if(cmd->interrupted()) {
+                  interrupted = true;
+                }
+                delete cmd;
+              }
+            }
+            needReset = 0;
+          }
+          allCommands.push_back(vector<Command*>());
+          Command* copy = cmd->clone();
+          allCommands.back().push_back(copy);
+          status = pExecutor->doCommand(cmd);
+          if(cmd->interrupted()) {
+            interrupted = true;
+            continue;
+          }
+        } else if(dynamic_cast<PopCommand*>(cmd) != NULL) {
+          allCommands.pop_back(); // fixme leaks cmds here
+          if (needReset >= opts.getTearDownIncremental()) {
+            pExecutor->reset();
+            for(size_t i = 0; i < allCommands.size() && !interrupted; ++i) {
+              for(size_t j = 0; j < allCommands[i].size() && !interrupted; ++j)
+              {
+                Command* cmd = allCommands[i][j]->clone();
+                cmd->setMuted(true);
+                pExecutor->doCommand(cmd);
+                if(cmd->interrupted()) {
+                  interrupted = true;
+                }
+                delete cmd;
+              }
+            }
+            if (interrupted) continue;
+            (*opts.getOut()) << CommandSuccess();
+            needReset = 0;
+          } else {
+            status = pExecutor->doCommand(cmd);
+            if(cmd->interrupted()) {
+              interrupted = true;
+              continue;
+            }
+          }
+        } else if(dynamic_cast<CheckSatCommand*>(cmd) != NULL ||
+                  dynamic_cast<QueryCommand*>(cmd) != NULL) {
+          if(needReset >= opts.getTearDownIncremental()) {
+            pExecutor->reset();
+            for(size_t i = 0; i < allCommands.size() && !interrupted; ++i) {
+              for(size_t j = 0; j < allCommands[i].size() && !interrupted; ++j)
+              {
+                Command* cmd = allCommands[i][j]->clone();
+                cmd->setMuted(true);
+                pExecutor->doCommand(cmd);
+                if(cmd->interrupted()) {
+                  interrupted = true;
+                }
+                delete cmd;
+              }
+            }
+            needReset = 0;
+          } else {
+            ++needReset;
+          }
+          if (interrupted) {
+            continue;
+          }
+
+          status = pExecutor->doCommand(cmd);
+          if(cmd->interrupted()) {
+            interrupted = true;
+            continue;
+          }
+        } else if(dynamic_cast<ResetCommand*>(cmd) != NULL) {
+          pExecutor->doCommand(cmd);
+          allCommands.clear();
+          allCommands.push_back(vector<Command*>());
+        } else {
+          // We shouldn't copy certain commands, because they can cause
+          // an error on replay since there's no associated sat/unsat check
+          // preceding them.
+          if(dynamic_cast<GetUnsatCoreCommand*>(cmd) == NULL &&
+             dynamic_cast<GetProofCommand*>(cmd) == NULL &&
+             dynamic_cast<GetValueCommand*>(cmd) == NULL &&
+             dynamic_cast<GetModelCommand*>(cmd) == NULL &&
+             dynamic_cast<GetAssignmentCommand*>(cmd) == NULL &&
+             dynamic_cast<GetInstantiationsCommand*>(cmd) == NULL &&
+             dynamic_cast<GetAssertionsCommand*>(cmd) == NULL &&
+             dynamic_cast<GetInfoCommand*>(cmd) == NULL &&
+             dynamic_cast<GetOptionCommand*>(cmd) == NULL &&
+             dynamic_cast<EchoCommand*>(cmd) == NULL) {
+            Command* copy = cmd->clone();
+            allCommands.back().push_back(copy);
+          }
+          status = pExecutor->doCommand(cmd);
+          if(cmd->interrupted()) {
+            interrupted = true;
+            continue;
+          }
+
+          if(dynamic_cast<QuitCommand*>(cmd) != NULL) {
+            delete cmd;
+            break;
+          }
+        }
+        delete cmd;
+      }
+    } else {
+      if(!opts.wasSetByUserIncrementalSolving()) {
+        cmd = new SetOptionCommand("incremental", SExpr(false));
+        cmd->setMuted(true);
+        pExecutor->doCommand(cmd);
+        delete cmd;
+      }
+
+      ParserBuilder parserBuilder(exprMgr, filename, opts);
+
+      if( inputFromStdin ) {
+#if defined(CVC4_COMPETITION_MODE) && !defined(CVC4_SMTCOMP_APPLICATION_TRACK)
+        parserBuilder.withStreamInput(cin);
+#else /* CVC4_COMPETITION_MODE && !CVC4_SMTCOMP_APPLICATION_TRACK */
+        parserBuilder.withLineBufferedStreamInput(cin);
+#endif /* CVC4_COMPETITION_MODE && !CVC4_SMTCOMP_APPLICATION_TRACK */
+      }
+
+      PtrCloser<Parser> parser(parserBuilder.build());
+      if(replayParser) {
+        // have the replay parser use the file's declarations
+        replayParser->useDeclarationsFrom(parser.get());
+      }
+      bool interrupted = false;
+      while(status || opts.getContinuedExecution()) {
+        if (interrupted) {
+          (*opts.getOut()) << CommandInterrupted();
+          pExecutor->reset();
+          break;
+        }
+        try {
+          cmd = parser->nextCommand();
+          if (cmd == NULL) break;
+        } catch (UnsafeInterruptException& e) {
+          interrupted = true;
+          continue;
+        }
+
+        status = pExecutor->doCommand(cmd);
+        if (cmd->interrupted() && status == 0) {
+          interrupted = true;
+          break;
+        }
+
+        if(dynamic_cast<QuitCommand*>(cmd) != NULL) {
+          delete cmd;
+          break;
+        }
+        delete cmd;
+      }
+    }
+
+    Result result;
+    if(status) {
+      result = pExecutor->getResult();
+      returnValue = 0;
+    } else {
+      // there was some kind of error
+      returnValue = 1;
+    }
+
+#ifdef CVC4_COMPETITION_MODE
+    opts.flushOut();
+    // exit, don't return (don't want destructors to run)
+    // _exit() from unistd.h doesn't run global destructors
+    // or other on_exit/atexit stuff.
+    _exit(returnValue);
+#endif /* CVC4_COMPETITION_MODE */
+
+    ReferenceStat< Result > s_statSatResult("sat/unsat", result);
+    RegisterStatistic statSatResultReg(&pExecutor->getStatisticsRegistry(),
+                                       &s_statSatResult);
+
+    pTotalTime->stop();
+
+    // Tim: I think that following comment is out of date?
+    // Set the global executor pointer to NULL first.  If we get a
+    // signal while dumping statistics, we don't want to try again.
+    pExecutor->flushOutputStreams();
+
+#ifdef CVC4_DEBUG
+    if(opts.getEarlyExit() && opts.wasSetByUserEarlyExit()) {
+      _exit(returnValue);
+    }
+#else /* CVC4_DEBUG */
+    if(opts.getEarlyExit()) {
+      _exit(returnValue);
+    }
+#endif /* CVC4_DEBUG */
+  }
+
+  // On exceptional exit, these are leaked, but that's okay... they
+  // need to be around in that case for main() to print statistics.
+  delete pTotalTime;
+  delete pExecutor;
+  delete exprMgr;
+
+  pTotalTime = NULL;
+  pExecutor = NULL;
+
+  cvc4_shutdown();
+
+  return returnValue;
+}
diff --git a/src/main/interactive_shell.cpp b/src/main/interactive_shell.cpp
new file mode 100644
index 0000000..3343736
--- /dev/null
+++ b/src/main/interactive_shell.cpp
@@ -0,0 +1,410 @@
+/*********************                                                        */
+/*! \file interactive_shell.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Christopher L. Conway, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Interactive shell for CVC4
+ **
+ ** This file is the implementation for the CVC4 interactive shell.
+ ** The shell supports the readline library.
+ **/
+#include "main/interactive_shell.h"
+
+#include <algorithm>
+#include <cassert>
+#include <cstdlib>
+#include <iostream>
+#include <set>
+#include <string.h>
+#include <string>
+#include <utility>
+#include <vector>
+
+//This must go before HAVE_LIBREADLINE.
+#include "cvc4autoconfig.h"
+
+#if HAVE_LIBREADLINE
+#  include <readline/readline.h>
+#  include <readline/history.h>
+#  if HAVE_EXT_STDIO_FILEBUF_H
+#    include <ext/stdio_filebuf.h>
+#  endif /* HAVE_EXT_STDIO_FILEBUF_H */
+#endif /* HAVE_LIBREADLINE */
+
+
+#include "base/output.h"
+#include "options/language.h"
+#include "options/options.h"
+#include "parser/input.h"
+#include "parser/parser.h"
+#include "parser/parser_builder.h"
+#include "smt/command.h"
+#include "theory/logic_info.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+using namespace parser;
+using namespace language;
+
+const string InteractiveShell::INPUT_FILENAME = "<shell>";
+
+#if HAVE_LIBREADLINE
+
+#if HAVE_EXT_STDIO_FILEBUF_H
+using __gnu_cxx::stdio_filebuf;
+#endif /* HAVE_EXT_STDIO_FILEBUF_H */
+
+char** commandCompletion(const char* text, int start, int end);
+char* commandGenerator(const char* text, int state);
+
+static const std::string cvc_commands[] = {
+#include "main/cvc_tokens.h"
+};/* cvc_commands */
+
+static const std::string smt1_commands[] = {
+#include "main/smt1_tokens.h"
+};/* smt1_commands */
+
+static const std::string smt2_commands[] = {
+#include "main/smt2_tokens.h"
+};/* smt2_commands */
+
+static const std::string tptp_commands[] = {
+#include "main/tptp_tokens.h"
+};/* tptp_commands */
+
+static const std::string* commandsBegin;
+static const std::string* commandsEnd;
+
+static set<string> s_declarations;
+
+#endif /* HAVE_LIBREADLINE */
+
+InteractiveShell::InteractiveShell(ExprManager& exprManager,
+                                   const Options& options)
+    : d_in(*options.getIn()),
+      d_out(*options.getOutConst()),
+      d_options(options),
+      d_quit(false)
+{
+  ParserBuilder parserBuilder(&exprManager, INPUT_FILENAME, options);
+  /* Create parser with bogus input. */
+  d_parser = parserBuilder.withStringInput("").build();
+  if(d_options.wasSetByUserForceLogicString()) {
+    LogicInfo tmp(d_options.getForceLogicString());
+    d_parser->forceLogic(tmp.getLogicString());
+  }
+
+#if HAVE_LIBREADLINE
+  if(d_in == cin) {
+    ::rl_readline_name = const_cast<char*>("CVC4");
+#if READLINE_COMPENTRY_FUNC_RETURNS_CHARP
+    ::rl_completion_entry_function = commandGenerator;
+#else /* READLINE_COMPENTRY_FUNC_RETURNS_CHARP */
+    ::rl_completion_entry_function = (int (*)(const char*, int)) commandGenerator;
+#endif /* READLINE_COMPENTRY_FUNC_RETURNS_CHARP */
+    ::using_history();
+
+    OutputLanguage lang = toOutputLanguage(d_options.getInputLanguage());
+    switch(lang) {
+    case output::LANG_CVC4:
+      d_historyFilename = string(getenv("HOME")) + "/.cvc4_history";
+      commandsBegin = cvc_commands;
+      commandsEnd = cvc_commands + sizeof(cvc_commands) / sizeof(*cvc_commands);
+      break;
+    case output::LANG_SMTLIB_V1:
+      d_historyFilename = string(getenv("HOME")) + "/.cvc4_history_smtlib1";
+      commandsBegin = smt1_commands;
+      commandsEnd = smt1_commands + sizeof(smt1_commands) / sizeof(*smt1_commands);
+      break;
+    case output::LANG_SMTLIB_V2_0:
+    case output::LANG_SMTLIB_V2_5:
+      d_historyFilename = string(getenv("HOME")) + "/.cvc4_history_smtlib2";
+      commandsBegin = smt2_commands;
+      commandsEnd = smt2_commands + sizeof(smt2_commands) / sizeof(*smt2_commands);
+      break;
+    case output::LANG_TPTP:
+      d_historyFilename = string(getenv("HOME")) + "/.cvc4_history_tptp";
+      commandsBegin = tptp_commands;
+      commandsEnd = tptp_commands + sizeof(tptp_commands) / sizeof(*tptp_commands);
+      break;
+    default:
+      std::stringstream ss;
+      ss << "internal error: unhandled language " << lang;
+      throw Exception(ss.str());
+    }
+    d_usingReadline = true;
+    int err = ::read_history(d_historyFilename.c_str());
+    ::stifle_history(s_historyLimit);
+    if(Notice.isOn()) {
+      if(err == 0) {
+        Notice() << "Read " << ::history_length << " lines of history from "
+                 << d_historyFilename << std::endl;
+      } else {
+        Notice() << "Could not read history from " << d_historyFilename
+                 << ": " << strerror(err) << std::endl;
+      }
+    }
+  } else {
+    d_usingReadline = false;
+  }
+#else /* HAVE_LIBREADLINE */
+  d_usingReadline = false;
+#endif /* HAVE_LIBREADLINE */
+}/* InteractiveShell::InteractiveShell() */
+
+InteractiveShell::~InteractiveShell() {
+#if HAVE_LIBREADLINE
+  int err = ::write_history(d_historyFilename.c_str());
+  if(err == 0) {
+    Notice() << "Wrote " << ::history_length << " lines of history to "
+             << d_historyFilename << std::endl;
+  } else {
+    Notice() << "Could not write history to " << d_historyFilename
+             << ": " << strerror(err) << std::endl;
+  }
+#endif /* HAVE_LIBREADLINE */
+  delete d_parser;
+}
+
+Command* InteractiveShell::readCommand() throw (UnsafeInterruptException) {
+  char* lineBuf = NULL;
+  string line = "";
+
+restart:
+
+  /* Don't do anything if the input is closed or if we've seen a
+   * QuitCommand. */
+  if(d_in.eof() || d_quit) {
+    d_out << endl;
+    return NULL;
+  }
+
+  /* If something's wrong with the input, there's nothing we can do. */
+  if( !d_in.good() ) {
+    throw ParserException("Interactive input broken.");
+  }
+
+  /* Prompt the user for input. */
+  if(d_usingReadline) {
+#if HAVE_LIBREADLINE
+    lineBuf = ::readline(d_options.getInteractivePrompt()
+                         ? (line == "" ? "CVC4> " : "... > ") : "");
+    if(lineBuf != NULL && lineBuf[0] != '\0') {
+      ::add_history(lineBuf);
+    }
+    line += lineBuf == NULL ? "" : lineBuf;
+    free(lineBuf);
+#endif /* HAVE_LIBREADLINE */
+  } else {
+    if(d_options.getInteractivePrompt()) {
+      if(line == "") {
+        d_out << "CVC4> " << flush;
+      } else {
+        d_out << "... > " << flush;
+      }
+    }
+
+    /* Read a line */
+    stringbuf sb;
+    d_in.get(sb);
+    line += sb.str();
+  }
+
+  string input = "";
+  while(true) {
+    Debug("interactive") << "Input now '" << input << line << "'" << endl
+                         << flush;
+
+    assert( !(d_in.fail() && !d_in.eof()) || line.empty() );
+
+    /* Check for failure. */
+    if(d_in.fail() && !d_in.eof()) {
+      /* This should only happen if the input line was empty. */
+      assert( line.empty() );
+      d_in.clear();
+    }
+
+    /* Strip trailing whitespace. */
+    int n = line.length() - 1;
+    while( !line.empty() && isspace(line[n]) ) {
+      line.erase(n,1);
+      n--;
+    }
+
+    /* If we hit EOF, we're done. */
+    if( (!d_usingReadline && d_in.eof()) ||
+        (d_usingReadline && lineBuf == NULL) ) {
+      input += line;
+
+      if(input.empty()) {
+        /* Nothing left to parse. */
+        d_out << endl;
+        return NULL;
+      }
+
+      /* Some input left to parse, but nothing left to read.
+         Jump out of input loop. */
+      d_out << endl;
+      input = line = "";
+      d_in.clear();
+      goto restart;
+    }
+
+    if(!d_usingReadline) {
+      /* Extract the newline delimiter from the stream too */
+      int c CVC4_UNUSED = d_in.get();
+      assert(c == '\n');
+      Debug("interactive") << "Next char is '" << (char)c << "'" << endl
+                           << flush;
+    }
+
+    input += line;
+
+    /* If the last char was a backslash, continue on the next line. */
+    n = input.length() - 1;
+    if( !line.empty() && input[n] == '\\' ) {
+      input[n] = '\n';
+      if(d_usingReadline) {
+#if HAVE_LIBREADLINE
+        lineBuf = ::readline(d_options.getInteractivePrompt() ? "... > " : "");
+        if(lineBuf != NULL && lineBuf[0] != '\0') {
+          ::add_history(lineBuf);
+        }
+        line = lineBuf == NULL ? "" : lineBuf;
+        free(lineBuf);
+#endif /* HAVE_LIBREADLINE */
+      } else {
+        if(d_options.getInteractivePrompt()) {
+          d_out << "... > " << flush;
+        }
+
+        /* Read a line */
+        stringbuf sb;
+        d_in.get(sb);
+        line = sb.str();
+      }
+    } else {
+      /* No continuation, we're done. */
+      Debug("interactive") << "Leaving input loop." << endl << flush;
+      break;
+    }
+  }
+
+  d_parser->setInput(Input::newStringInput(d_options.getInputLanguage(),
+                                           input, INPUT_FILENAME));
+
+  /* There may be more than one command in the input. Build up a
+     sequence. */
+  CommandSequence *cmd_seq = new CommandSequence();
+  Command *cmd;
+
+  try {
+    while( (cmd = d_parser->nextCommand()) ) {
+      cmd_seq->addCommand(cmd);
+      if(dynamic_cast<QuitCommand*>(cmd) != NULL) {
+        d_quit = true;
+        break;
+      } else {
+#if HAVE_LIBREADLINE
+        if(dynamic_cast<DeclareFunctionCommand*>(cmd) != NULL) {
+          s_declarations.insert(dynamic_cast<DeclareFunctionCommand*>(cmd)->getSymbol());
+        } else if(dynamic_cast<DefineFunctionCommand*>(cmd) != NULL) {
+          s_declarations.insert(dynamic_cast<DefineFunctionCommand*>(cmd)->getSymbol());
+        } else if(dynamic_cast<DeclareTypeCommand*>(cmd) != NULL) {
+          s_declarations.insert(dynamic_cast<DeclareTypeCommand*>(cmd)->getSymbol());
+        } else if(dynamic_cast<DefineTypeCommand*>(cmd) != NULL) {
+          s_declarations.insert(dynamic_cast<DefineTypeCommand*>(cmd)->getSymbol());
+        }
+#endif /* HAVE_LIBREADLINE */
+      }
+    }
+  } catch(ParserEndOfFileException& pe) {
+    line += "\n";
+    goto restart;
+  } catch(ParserException& pe) {
+    if(d_options.getOutputLanguage() == output::LANG_SMTLIB_V2_0 ||
+       d_options.getOutputLanguage() == output::LANG_SMTLIB_V2_5) {
+      d_out << "(error \"" << pe << "\")" << endl;
+    } else {
+      d_out << pe << endl;
+    }
+    // We can't really clear out the sequence and abort the current line,
+    // because the parse error might be for the second command on the
+    // line.  The first ones haven't yet been executed by the SmtEngine,
+    // but the parser state has already made the variables and the mappings
+    // in the symbol table.  So unfortunately, either we exit CVC4 entirely,
+    // or we commit to the current line up to the command with the parse
+    // error.
+    //
+    // FIXME: does that mean e.g. that a pushed LET scope might not yet have
+    // been popped?!
+    //
+    //delete cmd_seq;
+    //cmd_seq = new CommandSequence();
+  }
+
+  return cmd_seq;
+}/* InteractiveShell::readCommand() */
+
+#if HAVE_LIBREADLINE
+
+char** commandCompletion(const char* text, int start, int end) {
+  Debug("rl") << "text: " << text << endl;
+  Debug("rl") << "start: " << start << " end: " << end << endl;
+  return rl_completion_matches(text, commandGenerator);
+}
+
+// Our peculiar versions of "less than" for strings
+struct StringPrefix1Less {
+  bool operator()(const std::string& s1, const std::string& s2) {
+    size_t l1 = s1.length(), l2 = s2.length();
+    size_t l = l1 <= l2 ? l1 : l2;
+    return s1.compare(0, l1, s2, 0, l) < 0;
+  }
+};/* struct StringPrefix1Less */
+struct StringPrefix2Less {
+  bool operator()(const std::string& s1, const std::string& s2) {
+    size_t l1 = s1.length(), l2 = s2.length();
+    size_t l = l1 <= l2 ? l1 : l2;
+    return s1.compare(0, l, s2, 0, l2) < 0;
+  }
+};/* struct StringPrefix2Less */
+
+char* commandGenerator(const char* text, int state) {
+  static CVC4_THREADLOCAL(const std::string*) rlCommand;
+  static CVC4_THREADLOCAL(set<string>::const_iterator*) rlDeclaration;
+
+  const std::string* i = lower_bound(commandsBegin, commandsEnd, text, StringPrefix2Less());
+  const std::string* j = upper_bound(commandsBegin, commandsEnd, text, StringPrefix1Less());
+
+  set<string>::const_iterator ii = lower_bound(s_declarations.begin(), s_declarations.end(), text, StringPrefix2Less());
+  set<string>::const_iterator jj = upper_bound(s_declarations.begin(), s_declarations.end(), text, StringPrefix1Less());
+
+  if(rlDeclaration == NULL) {
+    rlDeclaration = new set<string>::const_iterator();
+  }
+
+  if(state == 0) {
+    rlCommand = i;
+    *rlDeclaration = ii;
+  }
+
+  if(rlCommand != j) {
+    return strdup((*rlCommand++).c_str());
+  }
+
+  return *rlDeclaration == jj ? NULL : strdup((*(*rlDeclaration)++).c_str());
+}
+
+#endif /* HAVE_LIBREADLINE */
+
+}/* CVC4 namespace */
diff --git a/src/main/interactive_shell.h b/src/main/interactive_shell.h
new file mode 100644
index 0000000..18e42f1
--- /dev/null
+++ b/src/main/interactive_shell.h
@@ -0,0 +1,73 @@
+/*********************                                                        */
+/*! \file interactive_shell.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Christopher L. Conway, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Interactive shell for CVC4
+ **/
+
+#ifndef __CVC4__INTERACTIVE_SHELL_H
+#define __CVC4__INTERACTIVE_SHELL_H
+
+#include <iosfwd>
+#include <string>
+
+#include "options/language.h"
+#include "options/options.h"
+#include "util/unsafe_interrupt_exception.h"
+
+namespace CVC4 {
+
+class Command;
+class ExprManager;
+class Options;
+
+namespace parser {
+  class Parser;
+}/* CVC4::parser namespace */
+
+class CVC4_PUBLIC InteractiveShell {
+  std::istream& d_in;
+  std::ostream& d_out;
+  parser::Parser* d_parser;
+  const Options& d_options;
+  bool d_quit;
+  bool d_usingReadline;
+
+  std::string d_historyFilename;
+
+  static const std::string INPUT_FILENAME;
+  static const unsigned s_historyLimit = 500;
+
+public:
+  InteractiveShell(ExprManager& exprManager, const Options& options);
+
+  /**
+   * Close out the interactive session.
+   */
+  ~InteractiveShell();
+
+  /**
+   * Read a command from the interactive shell. This will read as
+   * many lines as necessary to parse a well-formed command.
+   */
+  Command* readCommand() throw (UnsafeInterruptException);
+
+  /**
+   * Return the internal parser being used.
+   */
+  parser::Parser* getParser() {
+    return d_parser;
+  }
+
+};/* class InteractiveShell */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__INTERACTIVE_SHELL_H */
diff --git a/src/main/main.cpp b/src/main/main.cpp
new file mode 100644
index 0000000..7b6b9ad
--- /dev/null
+++ b/src/main/main.cpp
@@ -0,0 +1,79 @@
+/*********************                                                        */
+/*! \file main.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Christopher L. Conway
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Main driver for CVC4 executable
+ **
+ ** Main driver for CVC4 executable.
+ **/
+#include "main/main.h"
+
+#include <cstdlib>
+#include <cstring>
+#include <fstream>
+#include <iostream>
+#include <stdio.h>
+#include <unistd.h>
+
+#include "base/configuration.h"
+#include "base/output.h"
+#include "expr/expr_manager.h"
+#include "main/command_executor.h"
+#include "main/interactive_shell.h"
+#include "options/language.h"
+#include "options/options.h"
+#include "parser/parser.h"
+#include "parser/parser_builder.h"
+#include "parser/parser_exception.h"
+#include "smt/command.h"
+#include "smt/smt_engine.h"
+#include "util/result.h"
+#include "util/statistics.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::main;
+using namespace CVC4::language;
+
+/**
+ * CVC4's main() routine is just an exception-safe wrapper around CVC4.
+ * Please don't construct anything here.  Even if the constructor is
+ * inside the try { }, an exception during destruction can cause
+ * problems.  That's why main() wraps runCvc4() in the first place.
+ * Put everything in runCvc4().
+ */
+int main(int argc, char* argv[]) {
+  Options opts;
+  try {
+    return runCvc4(argc, argv, opts);
+  } catch(OptionException& e) {
+#ifdef CVC4_COMPETITION_MODE
+    *opts.getOut() << "unknown" << endl;
+#endif
+    cerr << "CVC4 Error:" << endl << e << endl << endl
+         << "Please use --help to get help on command-line options."
+         << endl;
+  } catch(Exception& e) {
+#ifdef CVC4_COMPETITION_MODE
+    *opts.getOut() << "unknown" << endl;
+#endif
+    if(opts.getOutputLanguage() == output::LANG_SMTLIB_V2_0 ||
+       opts.getOutputLanguage() == output::LANG_SMTLIB_V2_5) {
+      *opts.getOut() << "(error \"" << e << "\")" << endl;
+    } else {
+      *opts.getErr() << "CVC4 Error:" << endl << e << endl;
+    }
+    if(opts.getStatistics() && pExecutor != NULL) {
+      pTotalTime->stop();
+      pExecutor->flushStatistics(*opts.getErr());
+    }
+  }
+  exit(1);
+}
diff --git a/src/main/main.h b/src/main/main.h
new file mode 100644
index 0000000..8277d36
--- /dev/null
+++ b/src/main/main.h
@@ -0,0 +1,73 @@
+/*********************                                                        */
+/*! \file main.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Header for main CVC4 driver
+ **
+ ** Header for main CVC4 driver.
+ **/
+
+#include <exception>
+#include <string>
+
+#include "base/exception.h"
+#include "base/tls.h"
+#include "cvc4autoconfig.h"
+#include "expr/expr_manager.h"
+#include "options/options.h"
+#include "smt/smt_engine.h"
+#include "util/statistics.h"
+#include "util/statistics_registry.h"
+
+#ifndef __CVC4__MAIN__MAIN_H
+#define __CVC4__MAIN__MAIN_H
+
+namespace CVC4 {
+namespace main {
+
+class CommandExecutor;
+
+/** Full argv[0] */
+extern const char* progPath;
+
+/** Just the basename component of argv[0] */
+extern const char* progName;
+
+/** A reference for use by the signal handlers to print statistics */
+extern CVC4::main::CommandExecutor* pExecutor;
+
+/** A reference for use by the signal handlers to print statistics */
+extern CVC4::TimerStat* pTotalTime;
+
+/**
+ * If true, will not spin on segfault even when CVC4_DEBUG is on.
+ * Useful for nightly regressions, noninteractive performance runs
+ * etc.  See util.cpp.
+ */
+extern bool segvSpin;
+
+/** A pointer to the options in play */
+extern CVC4_THREADLOCAL(Options*) pOptions;
+
+/** Initialize the driver.  Sets signal handlers for SIGINT and SIGSEGV. */
+void cvc4_init() throw(Exception);
+
+/** Shutdown the driver. Frees memory for the signal handlers. */
+void cvc4_shutdown() throw();
+
+
+}/* CVC4::main namespace */
+}/* CVC4 namespace */
+
+/** Actual Cvc4 driver functions **/
+int runCvc4(int argc, char* argv[], CVC4::Options&);
+void printUsage(CVC4::Options&, bool full = false);
+
+#endif /* __CVC4__MAIN__MAIN_H */
diff --git a/src/main/portfolio.cpp b/src/main/portfolio.cpp
new file mode 100644
index 0000000..1e1b41b
--- /dev/null
+++ b/src/main/portfolio.cpp
@@ -0,0 +1,149 @@
+/*********************                                                        */
+/*! \file portfolio.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Kshitij Bansal, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Provides (somewhat) generic functionality to simulate a
+ ** (potentially cooperative) race
+ **/
+
+#include <boost/function.hpp>
+#include <boost/thread.hpp>
+#include <boost/bind.hpp>
+#include <boost/thread/condition.hpp>
+#include <boost/exception_ptr.hpp>
+
+#include "base/output.h"
+#include "options/options.h"
+#include "smt/smt_engine.h"
+#include "util/result.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+
+/** Mutex to make sure at most one thread is winner */
+boost::mutex mutex_done;
+
+/** Mutex / condition variable to notify main when winner data written */
+boost::mutex mutex_main_wait;
+boost::condition_variable condition_var_main_wait;
+
+bool global_flag_done;
+int global_winner;
+
+template<typename S>
+void runThread(int thread_id, boost::function<S()> threadFn, S& returnValue)
+{
+  /* Uncomment line to delay first thread, useful to unearth errors/debug */
+  // if(thread_id == 0) { sleep(1); }
+  returnValue = threadFn();
+
+  if( mutex_done.try_lock() ) {
+    if(global_flag_done == false) 
+    {
+      {
+        boost::lock_guard<boost::mutex> lock(mutex_main_wait);
+        global_winner = thread_id;
+        global_flag_done = true;
+      }
+      condition_var_main_wait.notify_all(); // we want main thread to quit
+    }
+    mutex_done.unlock();
+  }
+}
+
+template<typename T, typename S>
+std::pair<int, S> runPortfolio(int numThreads,
+                               boost::function<T()> driverFn,
+                               boost::function<S()> threadFns[],
+                               size_t stackSize,
+                               bool optionWaitToJoin,
+                               TimerStat& statWaitTime) {
+  boost::thread thread_driver;
+  boost::thread* threads = new boost::thread[numThreads];
+  S* threads_returnValue = new S[numThreads];
+
+  global_flag_done = false;
+  global_winner = -1;
+
+  for(int t = 0; t < numThreads; ++t) {
+
+#if BOOST_HAS_THREAD_ATTR
+    boost::thread::attributes attrs;
+
+    if(stackSize > 0) {
+      attrs.set_stack_size(stackSize);
+    }
+
+    threads[t] =
+      boost::thread(attrs, boost::bind(runThread<S>, t, threadFns[t],
+                                       boost::ref(threads_returnValue[t]) ) );
+#else /* BOOST_HAS_THREAD_ATTR */
+    if(stackSize > 0) {
+      throw OptionException("cannot specify a stack size for worker threads; requires CVC4 to be built with Boost thread library >= 1.50.0");
+    }
+
+    threads[t] =
+      boost::thread(boost::bind(runThread<S>, t, threadFns[t],
+                                boost::ref(threads_returnValue[t]) ) );
+
+#endif /* BOOST_HAS_THREAD_ATTR */
+
+#if defined(BOOST_THREAD_PLATFORM_PTHREAD)
+    if(Chat.isOn()) {
+      void *stackaddr;
+      size_t stacksize;
+      pthread_attr_t attr;
+      pthread_getattr_np(threads[t].native_handle(), &attr);
+      pthread_attr_getstack(&attr, &stackaddr, &stacksize);
+      Chat() << "Created worker thread " << t << " with stack size " << stacksize << std::endl;
+    }
+#endif
+  }
+
+  if(not driverFn.empty())
+    thread_driver = boost::thread(driverFn);
+
+  boost::unique_lock<boost::mutex> lock(mutex_main_wait);
+  while(global_flag_done == false) {
+    condition_var_main_wait.wait(lock);
+  }
+
+  statWaitTime.start();
+
+  if(not driverFn.empty()) {
+    thread_driver.interrupt();
+    thread_driver.join();
+  }
+
+  for(int t = 0; t < numThreads; ++t) {
+    if(optionWaitToJoin) {
+      threads[t].join();
+    }
+  }
+
+  std::pair<int, S> retval(global_winner, threads_returnValue[global_winner]);
+
+  delete[] threads;
+  delete[] threads_returnValue;
+
+  return retval;
+}
+
+// instantiation
+template
+std::pair<int, bool>
+runPortfolio<void, bool>(int,
+                         boost::function<void()>, 
+                         boost::function<bool()>*,
+                         size_t,
+                         bool,
+                         TimerStat&);
+
+}/* CVC4 namespace */
diff --git a/src/main/portfolio.h b/src/main/portfolio.h
new file mode 100644
index 0000000..b96efda
--- /dev/null
+++ b/src/main/portfolio.h
@@ -0,0 +1,41 @@
+/*********************                                                        */
+/*! \file portfolio.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Kshitij Bansal
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Provides (somewhat) generic functionality to simulate a
+ ** (potentially cooperative) race
+ **/
+
+#ifndef __CVC4__PORTFOLIO_H
+#define __CVC4__PORTFOLIO_H
+
+#include <boost/function.hpp>
+#include <utility>
+
+#include "options/options.h"
+#include "smt/command.h"
+#include "smt/smt_engine.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+
+template<typename T, typename S>
+std::pair<int, S> runPortfolio(int numThreads, 
+                               boost::function<T()> driverFn,
+                               boost::function<S()> threadFns[],
+                               size_t stackSize,
+                               bool optionWaitToJoin,
+                               TimerStat& statWaitTime);
+// as we have defined things, S=void would give compile errors
+// do we want to fix this? yes, no, maybe?
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PORTFOLIO_H */
diff --git a/src/main/portfolio_util.cpp b/src/main/portfolio_util.cpp
new file mode 100644
index 0000000..8e38eb5
--- /dev/null
+++ b/src/main/portfolio_util.cpp
@@ -0,0 +1,161 @@
+/*********************                                                        */
+/*! \file portfolio_util.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Kshitij Bansal
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Code relevant only for portfolio builds
+ **/
+
+#include "main/portfolio_util.h"
+
+#include <unistd.h>
+
+#include <cassert>
+#include <vector>
+
+#include "options/options.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+OptionsList::OptionsList() : d_options() {}
+
+OptionsList::~OptionsList(){
+  for(std::vector<Options*>::iterator i = d_options.begin(),
+          iend = d_options.end(); i != iend; ++i)
+  {
+    Options* current = *i;
+    delete current;
+  }
+  d_options.clear();
+}
+
+void OptionsList::push_back_copy(const Options& opts) {
+  Options* copy = new Options;
+  copy->copyValues(opts);
+  d_options.push_back(copy);
+}
+
+Options& OptionsList::operator[](size_t position){
+  return *(d_options[position]);
+}
+
+const Options& OptionsList::operator[](size_t position) const {
+  return *(d_options[position]);
+}
+
+Options& OptionsList::back() {
+  return *(d_options.back());
+}
+
+size_t OptionsList::size() const {
+  return d_options.size();
+}
+
+void parseThreadSpecificOptions(OptionsList& threadOptions, const Options& opts)
+{
+
+  unsigned numThreads = opts.getThreads();
+
+  for(unsigned i = 0; i < numThreads; ++i) {
+    threadOptions.push_back_copy(opts);
+    Options& tOpts = threadOptions.back();
+
+    // Set thread identifier
+    tOpts.setThreadId(i);
+    const std::vector<std::string>& optThreadArgvs = opts.getThreadArgv();
+    if(i < optThreadArgvs.size() && (! optThreadArgvs[i].empty())) {
+      // separate out the thread's individual configuration string
+      stringstream optidss;
+      optidss << "--thread" << i;
+      string optid = optidss.str();
+      int targc = 1;
+      char* tbuf = strdup(optThreadArgvs[i].c_str());
+      char* p = tbuf;
+      // string length is certainly an upper bound on size needed
+      char** targv = new char*[optThreadArgvs[i].size()];
+      char** vp = targv;
+      *vp++ = strdup(optid.c_str());
+      p = strtok(p, " ");
+      while(p != NULL) {
+        *vp++ = p;
+        ++targc;
+        p = strtok(NULL, " ");
+      }
+      *vp++ = NULL;
+      if(targc > 1) { // this is necessary in case you do e.g. --thread0="  "
+        try {
+          Options::parseOptions(&tOpts, targc, targv);
+        } catch(OptionException& e) {
+          stringstream ss;
+          ss << optid << ": " << e.getMessage();
+          throw OptionException(ss.str());
+        }
+        if(tOpts.getThreads() != numThreads ||
+           tOpts.getThreadArgv() != opts.getThreadArgv()) {
+          stringstream ss;
+          ss << "not allowed to set thread options in " << optid << " !";
+          throw OptionException(ss.str());
+        }
+      }
+      free(targv[0]);
+      delete [] targv;
+      free(tbuf);
+    }
+  }
+
+  assert(numThreads >= 1);      //do we need this?
+}
+
+void PortfolioLemmaOutputChannel::notifyNewLemma(Expr lemma) {
+  if(int(lemma.getNumChildren()) > Options::currentGetSharingFilterByLength()) {
+    return;
+  }
+  ++cnt;
+  Trace("sharing") << d_tag << ": " << lemma << std::endl;
+  expr::pickle::Pickle pkl;
+  try {
+    d_pickler.toPickle(lemma, pkl);
+    d_sharedChannel->push(pkl);
+    if(Trace.isOn("showSharing") && Options::currentGetThreadId() == 0) {
+      (*(Options::currentGetOut()))
+          << "thread #0: notifyNewLemma: " << lemma << std::endl;
+    }
+  } catch(expr::pickle::PicklingException& p){
+    Trace("sharing::blocked") << lemma << std::endl;
+  }
+}
+
+
+PortfolioLemmaInputChannel::PortfolioLemmaInputChannel(std::string tag,
+    SharedChannel<ChannelFormat>* c,
+    ExprManager* em,
+    VarMap& to,
+    VarMap& from)
+    : d_tag(tag), d_sharedChannel(c), d_pickler(em, to, from)
+{}
+
+bool PortfolioLemmaInputChannel::hasNewLemma(){
+  Debug("lemmaInputChannel") << d_tag << ": " << "hasNewLemma" << std::endl;
+  return !d_sharedChannel->empty();
+}
+
+Expr PortfolioLemmaInputChannel::getNewLemma() {
+  Debug("lemmaInputChannel") << d_tag << ": " << "getNewLemma" << std::endl;
+  expr::pickle::Pickle pkl = d_sharedChannel->pop();
+
+  Expr e = d_pickler.fromPickle(pkl);
+  if(Trace.isOn("showSharing") && Options::currentGetThreadId() == 0) {
+    (*Options::currentGetOut()) << "thread #0: getNewLemma: " << e << std::endl;
+  }
+  return e;
+}
+
+}/*CVC4 namespace */
diff --git a/src/main/portfolio_util.h b/src/main/portfolio_util.h
new file mode 100644
index 0000000..32cc045
--- /dev/null
+++ b/src/main/portfolio_util.h
@@ -0,0 +1,180 @@
+/*********************                                                        */
+/*! \file portfolio_util.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Code relevant only for portfolio builds
+ **/
+
+#ifndef __CVC4__PORTFOLIO_UTIL_H
+#define __CVC4__PORTFOLIO_UTIL_H
+
+#include <queue>
+
+#include "base/output.h"
+#include "expr/pickler.h"
+#include "smt/smt_engine.h"
+#include "smt_util/lemma_input_channel.h"
+#include "smt_util/lemma_output_channel.h"
+#include "util/channel.h"
+
+namespace CVC4 {
+
+typedef expr::pickle::Pickle ChannelFormat;
+
+class PortfolioLemmaOutputChannel : public LemmaOutputChannel {
+private:
+  std::string d_tag;
+  SharedChannel<ChannelFormat>* d_sharedChannel;
+  expr::pickle::MapPickler d_pickler;
+
+public:
+  int cnt;
+  PortfolioLemmaOutputChannel(std::string tag,
+                              SharedChannel<ChannelFormat> *c,
+                              ExprManager* em,
+                              VarMap& to,
+                              VarMap& from) :
+    d_tag(tag),
+    d_sharedChannel(c),
+    d_pickler(em, to, from),
+    cnt(0)
+  {}
+
+  ~PortfolioLemmaOutputChannel() throw() { }
+
+  void notifyNewLemma(Expr lemma);
+};/* class PortfolioLemmaOutputChannel */
+
+class PortfolioLemmaInputChannel : public LemmaInputChannel {
+private:
+  std::string d_tag;
+  SharedChannel<ChannelFormat>* d_sharedChannel;
+  expr::pickle::MapPickler d_pickler;
+
+public:
+  PortfolioLemmaInputChannel(std::string tag,
+                             SharedChannel<ChannelFormat>* c,
+                             ExprManager* em,
+                             VarMap& to,
+                               VarMap& from);
+
+  ~PortfolioLemmaInputChannel() throw() { }
+
+  bool hasNewLemma();
+  Expr getNewLemma();
+
+};/* class PortfolioLemmaInputChannel */
+
+class OptionsList {
+ public:
+  OptionsList();
+  ~OptionsList();
+
+  void push_back_copy(const Options& options);
+
+  Options& operator[](size_t position);
+  const Options& operator[](size_t position) const;
+
+  Options& back();
+
+  size_t size() const;
+ private:
+  OptionsList(const OptionsList&) CVC4_UNDEFINED;
+  OptionsList& operator=(const OptionsList&) CVC4_UNDEFINED;
+  std::vector<Options*> d_options;
+};
+
+void parseThreadSpecificOptions(OptionsList& list, const Options& opts);
+
+template<typename T>
+void sharingManager(unsigned numThreads,
+                    SharedChannel<T> *channelsOut[], // out and in with respect
+                    SharedChannel<T> *channelsIn[],
+                    SmtEngine *smts[])  // to smt engines
+{
+  Trace("sharing") << "sharing: thread started " << std::endl;
+  std::vector <int> cnt(numThreads); // Debug("sharing")
+
+  std::vector< std::queue<T> > queues;
+  for(unsigned i = 0; i < numThreads; ++i){
+    queues.push_back(std::queue<T>());
+  }
+
+  const unsigned int sharingBroadcastInterval = 1;
+
+  boost::mutex mutex_activity;
+
+  /* Disable interruption, so that we can check manually */
+  boost::this_thread::disable_interruption di;
+
+  while(not boost::this_thread::interruption_requested()) {
+
+    boost::this_thread::sleep
+      (boost::posix_time::milliseconds(sharingBroadcastInterval));
+
+    for(unsigned t = 0; t < numThreads; ++t) {
+
+      /* No activity on this channel */
+      if(channelsOut[t]->empty()) continue;
+
+      /* Alert if channel full, so that we increase sharingChannelSize
+         or decrease sharingBroadcastInterval */
+      assert(not channelsOut[t]->full());
+
+      T data = channelsOut[t]->pop();
+
+      if(Trace.isOn("sharing")) {
+        ++cnt[t];
+        Trace("sharing") << "sharing: Got data. Thread #" << t
+                         << ". Chunk " << cnt[t] << std::endl;
+      }
+
+      for(unsigned u = 0; u < numThreads; ++u) {
+        if(u != t){
+          Trace("sharing") << "sharing: adding to queue " << u << std::endl;
+          queues[u].push(data);
+        }
+      }/* end of inner for: broadcast activity */
+
+    } /* end of outer for: look for activity */
+
+    for(unsigned t = 0; t < numThreads; ++t){
+      /* Alert if channel full, so that we increase sharingChannelSize
+         or decrease sharingBroadcastInterval */
+      assert(not channelsIn[t]->full());
+
+      while(!queues[t].empty() && !channelsIn[t]->full()){
+        Trace("sharing") << "sharing: pushing on channel " << t << std::endl;
+        T data = queues[t].front();
+        channelsIn[t]->push(data);
+        queues[t].pop();
+      }
+    }
+  } /* end of infinite while */
+
+  Trace("interrupt")
+    << "sharing thread interrupted, interrupting all smtEngines" << std::endl;
+
+  for(unsigned t = 0; t < numThreads; ++t) {
+    Trace("interrupt") << "Interrupting thread #" << t << std::endl;
+    try{
+      smts[t]->interrupt();
+    }catch(ModalException &e){
+      // It's fine, the thread is probably not there.
+      Trace("interrupt") << "Could not interrupt thread #" << t << std::endl;
+    }
+  }
+
+  Trace("sharing") << "sharing: Interrupted, exiting." << std::endl;
+}/* sharingManager() */
+
+}/* CVC4 namespace */
+
+#endif   /* __CVC4__PORTFOLIO_UTIL_H */
diff --git a/src/main/util.cpp b/src/main/util.cpp
new file mode 100644
index 0000000..e14b508
--- /dev/null
+++ b/src/main/util.cpp
@@ -0,0 +1,305 @@
+/*********************                                                        */
+/*! \file util.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Kshitij Bansal
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Utilities for the main driver.
+ **
+ ** Utilities for the main driver.
+ **/
+
+#include <cstdio>
+#include <cstdlib>
+#include <cerrno>
+#include <exception>
+#include <string.h>
+
+#ifndef __WIN32__
+
+#include <signal.h>
+#include <sys/resource.h>
+#include <unistd.h>
+
+#endif /* __WIN32__ */
+
+#include "base/exception.h"
+#include "base/tls.h"
+#include "cvc4autoconfig.h"
+#include "main/command_executor.h"
+#include "main/main.h"
+#include "options/options.h"
+#include "smt/smt_engine.h"
+#include "util/statistics.h"
+
+using CVC4::Exception;
+using namespace std;
+
+namespace CVC4 {
+namespace main {
+
+/**
+ * If true, will not spin on segfault even when CVC4_DEBUG is on.
+ * Useful for nightly regressions, noninteractive performance runs
+ * etc.
+ */
+bool segvSpin = 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");
+  if(pOptions->getStatistics() && pExecutor != NULL) {
+    pTotalTime->stop();
+    pExecutor->flushStatistics(cerr);
+  }
+  abort();
+}
+
+/** Handler for SIGINT, i.e., when the user hits control C. */
+void sigint_handler(int sig, siginfo_t* info, void*) {
+  fprintf(stderr, "CVC4 interrupted by user.\n");
+  if(pOptions->getStatistics() && pExecutor != NULL) {
+    pTotalTime->stop();
+    pExecutor->flushStatistics(cerr);
+  }
+  abort();
+}
+
+/** Handler for SIGSEGV (segfault). */
+void segv_handler(int sig, siginfo_t* info, void* c) {
+  uintptr_t extent = reinterpret_cast<uintptr_t>(cvc4StackBase) - cvc4StackSize;
+  uintptr_t addr = reinterpret_cast<uintptr_t>(info->si_addr);
+#ifdef CVC4_DEBUG
+  fprintf(stderr, "CVC4 suffered a segfault in DEBUG mode.\n");
+  cerr << "Offending address is " << info->si_addr << endl;
+  //cerr << "base is " << (void*)cvc4StackBase << endl;
+  //cerr << "size is " << cvc4StackSize << endl;
+  //cerr << "extent is " << (void*)extent << endl;
+  if(addr >= extent && addr <= extent + 10*1024) {
+    cerr << "Looks like this is likely due to stack overflow." << endl
+         << "You might consider increasing the limit with `ulimit -s' or equivalent." << endl;
+  } else if(addr < 10*1024) {
+    cerr << "Looks like a NULL pointer was dereferenced." << endl;
+  }
+
+  if(!segvSpin) {
+    if(pOptions->getStatistics() && pExecutor != NULL) {
+      pTotalTime->stop();
+      pExecutor->flushStatistics(cerr);
+    }
+    abort();
+  } else {
+    fprintf(stderr, "Spinning so that a debugger can be connected.\n");
+    cerr << "Try:  gdb " << progName << " " << getpid() << endl
+         << " or:  gdb --pid=" << getpid() << " " << progName << endl;
+    for(;;) {
+      sleep(60);
+    }
+  }
+#else /* CVC4_DEBUG */
+  fprintf(stderr, "CVC4 suffered a segfault.\n");
+  cerr << "Offending address is " << info->si_addr << endl;
+  if(addr >= extent && addr <= extent + 10*1024) {
+    cerr << "Looks like this is likely due to stack overflow." << endl
+         << "You might consider increasing the limit with `ulimit -s' or equivalent." << endl;
+  } else if(addr < 10*1024) {
+    cerr << "Looks like a NULL pointer was dereferenced." << endl;
+  }
+  if(pOptions->getStatistics() && pExecutor != NULL) {
+    pTotalTime->stop();
+    pExecutor->flushStatistics(cerr);
+  }
+  abort();
+#endif /* CVC4_DEBUG */
+}
+
+/** Handler for SIGILL (illegal instruction). */
+void ill_handler(int sig, siginfo_t* info, void*) {
+#ifdef CVC4_DEBUG
+  fprintf(stderr, "CVC4 executed an illegal instruction in DEBUG mode.\n");
+  if(!segvSpin) {
+    if(pOptions->getStatistics() && pExecutor != NULL) {
+      pTotalTime->stop();
+      pExecutor->flushStatistics(cerr);
+    }
+    abort();
+  } else {
+    fprintf(stderr, "Spinning so that a debugger can be connected.\n");
+    fprintf(stderr, "Try:  gdb %s %u\n", progName, getpid());
+    fprintf(stderr, " or:  gdb --pid=%u %s\n", getpid(), progName);
+    for(;;) {
+      sleep(60);
+    }
+  }
+#else /* CVC4_DEBUG */
+  fprintf(stderr, "CVC4 executed an illegal instruction.\n");
+  if(pOptions->getStatistics() && pExecutor != NULL) {
+    pTotalTime->stop();
+    pExecutor->flushStatistics(cerr);
+  }
+  abort();
+#endif /* CVC4_DEBUG */
+}
+
+#endif /* __WIN32__ */
+
+static terminate_handler default_terminator;
+
+void cvc4unexpected() {
+#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)."
+          "\n\n");
+
+  const char* lastContents = LastExceptionBuffer::currentContents();
+
+  if(lastContents == NULL) {
+    fprintf(stderr,
+            "The exception is unknown (maybe it's not a CVC4::Exception).\n\n");
+  } else {
+    fprintf(stderr, "The exception is:\n%s\n\n", lastContents);
+  }
+  if(!segvSpin) {
+    if(pOptions->getStatistics() && pExecutor != NULL) {
+      pTotalTime->stop();
+      pExecutor->flushStatistics(cerr);
+    }
+    set_terminate(default_terminator);
+  } else {
+    fprintf(stderr, "Spinning so that a debugger can be connected.\n");
+    fprintf(stderr, "Try:  gdb %s %u\n", progName, getpid());
+    fprintf(stderr, " or:  gdb --pid=%u %s\n", getpid(), progName);
+    for(;;) {
+      sleep(60);
+    }
+  }
+#else /* CVC4_DEBUG */
+  fprintf(stderr, "CVC4 threw an \"unexpected\" exception.\n");
+  if(pOptions->getStatistics() && pExecutor != NULL) {
+    pTotalTime->stop();
+    pExecutor->flushStatistics(cerr);
+  }
+  set_terminate(default_terminator);
+#endif /* CVC4_DEBUG */
+}
+
+void cvc4terminate() {
+  set_terminate(default_terminator);
+#ifdef CVC4_DEBUG
+  LastExceptionBuffer* current = LastExceptionBuffer::getCurrent();
+   LastExceptionBuffer::setCurrent(NULL);
+  delete current;
+
+  fprintf(stderr, "\n"
+          "CVC4 was terminated by the C++ runtime.\n"
+          "Perhaps an exception was thrown during stack unwinding.  "
+          "(Don't do that.)\n");
+  if(pOptions->getStatistics() && pExecutor != NULL) {
+    pTotalTime->stop();
+    pExecutor->flushStatistics(cerr);
+  }
+  default_terminator();
+#else /* CVC4_DEBUG */
+  fprintf(stderr,
+          "CVC4 was terminated by the C++ runtime.\n"
+          "Perhaps an exception was thrown during stack unwinding.\n");
+  if(pOptions->getStatistics() && pExecutor != NULL) {
+    pTotalTime->stop();
+    pExecutor->flushStatistics(cerr);
+  }
+  default_terminator();
+#endif /* CVC4_DEBUG */
+}
+
+/** Initialize the driver.  Sets signal handlers for SIGINT and SIGSEGV. */
+void cvc4_init() throw(Exception) {
+#ifdef CVC4_DEBUG
+  LastExceptionBuffer::setCurrent(new LastExceptionBuffer());
+#endif
+
+#ifndef __WIN32__
+  stack_t ss;
+  ss.ss_sp = malloc(SIGSTKSZ);
+  if(ss.ss_sp == NULL) {
+    throw Exception("Can't malloc() space for a signal stack");
+  }
+  ss.ss_size = SIGSTKSZ;
+  ss.ss_flags = 0;
+  if(sigaltstack(&ss, NULL) == -1) {
+    throw Exception(string("sigaltstack() failure: ") + strerror(errno));
+  }
+  struct rlimit limit;
+  if(getrlimit(RLIMIT_STACK, &limit)) {
+    throw Exception(string("getrlimit() failure: ") + strerror(errno));
+  }
+  if(limit.rlim_cur != limit.rlim_max) {
+    limit.rlim_cur = limit.rlim_max;
+    if(setrlimit(RLIMIT_STACK, &limit)) {
+      throw Exception(string("setrlimit() failure: ") + strerror(errno));
+    }
+    if(getrlimit(RLIMIT_STACK, &limit)) {
+      throw Exception(string("getrlimit() failure: ") + strerror(errno));
+    }
+  }
+  cvc4StackSize = limit.rlim_cur;
+  cvc4StackBase = ss.ss_sp;
+
+  struct sigaction act1;
+  act1.sa_sigaction = sigint_handler;
+  act1.sa_flags = SA_SIGINFO;
+  sigemptyset(&act1.sa_mask);
+  if(sigaction(SIGINT, &act1, NULL)) {
+    throw Exception(string("sigaction(SIGINT) failure: ") + strerror(errno));
+  }
+
+  struct sigaction act2;
+  act2.sa_sigaction = timeout_handler;
+  act2.sa_flags = SA_SIGINFO;
+  sigemptyset(&act2.sa_mask);
+  if(sigaction(SIGXCPU, &act2, NULL)) {
+    throw Exception(string("sigaction(SIGXCPU) failure: ") + strerror(errno));
+  }
+
+  struct sigaction act3;
+  act3.sa_sigaction = segv_handler;
+  act3.sa_flags = SA_SIGINFO | SA_ONSTACK;
+  sigemptyset(&act3.sa_mask);
+  if(sigaction(SIGSEGV, &act3, NULL)) {
+    throw Exception(string("sigaction(SIGSEGV) failure: ") + strerror(errno));
+  }
+
+  struct sigaction act4;
+  act4.sa_sigaction = segv_handler;
+  act4.sa_flags = SA_SIGINFO;
+  sigemptyset(&act4.sa_mask);
+  if(sigaction(SIGILL, &act4, NULL)) {
+    throw Exception(string("sigaction(SIGILL) failure: ") + strerror(errno));
+  }
+
+#endif /* __WIN32__ */
+
+  set_unexpected(cvc4unexpected);
+  default_terminator = set_terminate(cvc4terminate);
+}
+
+void cvc4_shutdown() throw () {
+#ifndef __WIN32__
+  free(cvc4StackBase);
+  cvc4StackBase = NULL;
+  cvc4StackSize = 0;
+#endif /* __WIN32__ */
+}
+
+}/* CVC4::main namespace */
+}/* CVC4 namespace */
diff --git a/src/mksubdirs b/src/mksubdirs
new file mode 100755
index 0000000..c96437c
--- /dev/null
+++ b/src/mksubdirs
@@ -0,0 +1,16 @@
+#!/bin/bash
+#
+# The purpose of this file is to generate a .subdirs file in the build process.
+# This file contains a file of relative paths to all of the theories relative
+# to the current directory. Each Makefile.am should thus build its own .subdirs file.
+# This assumes it is passed the equivalent of the $top_srcdir configure variable.
+#
+# Invocation:
+#
+#    mksubdirs <top_srcdir>
+
+TOP_SRCDIR=$1
+
+grep '^THEORIES = ' $TOP_SRCDIR/src/Makefile.theories | \
+  cut -d' ' -f3- | tr ' ' "\n" | \
+  xargs -I__D__ echo "$TOP_SRCDIR/src/theory/__D__/kinds"
diff --git a/src/options/Makefile.am b/src/options/Makefile.am
new file mode 100644
index 0000000..31330a9
--- /dev/null
+++ b/src/options/Makefile.am
@@ -0,0 +1,430 @@
+# How options are built:
+# Step 1: Copy the X_options source file into builddir as X_options.tmp.
+#    X_options.tmp is a .PHONY rule to force this step to always be done.
+# Step 2: Compare X_options.tmp to X_options.options.
+#   If they are different, overwrite "X_options.options".
+#   This is the file that we use to generate options from.
+#   This is always up to dat with X_options. The change in name is just
+#   to keep Makefile stage more explicit.
+# Step 3: Generate X_options.sed from X_options.options using mkoptions.
+# Step 4: Generate X_options.h from X_options.sed
+# Step 5: Generate X_options.cpp from X_options.sed.
+#   This stage also waits for X_options.h as otherwise it cannot compile.
+#
+
+OPTIONS_SRC_FILES = \
+	arith_options \
+	arrays_options \
+	base_options \
+	booleans_options \
+	builtin_options \
+	bv_options \
+	datatypes_options \
+	decision_options \
+	expr_options \
+	fp_options \
+	idl_options \
+	main_options \
+	parser_options \
+	printer_options \
+	proof_options \
+	prop_options \
+	quantifiers_options \
+	sep_options \
+	sets_options \
+	smt_options \
+	strings_options \
+	theory_options \
+	uf_options
+
+OPTIONS_TEMPS = \
+	arith_options.tmp \
+	arrays_options.tmp \
+	base_options.tmp \
+	booleans_options.tmp \
+	builtin_options.tmp \
+	bv_options.tmp \
+	datatypes_options.tmp \
+	decision_options.tmp \
+	expr_options.tmp \
+	fp_options.tmp \
+	idl_options.tmp \
+	main_options.tmp \
+	parser_options.tmp \
+	printer_options.tmp \
+	proof_options.tmp \
+	prop_options.tmp \
+	quantifiers_options.tmp \
+	sep_options.tmp \
+	sets_options.tmp \
+	smt_options.tmp \
+	strings_options.tmp \
+	theory_options.tmp \
+	uf_options.tmp
+
+OPTIONS_OPTIONS_FILES = \
+	arith_options.options \
+	arrays_options.options \
+	base_options.options \
+	booleans_options.options \
+	builtin_options.options \
+	bv_options.options \
+	datatypes_options.options \
+	decision_options.options \
+	expr_options.options \
+	fp_options.options \
+	idl_options.options \
+	main_options.options \
+	parser_options.options \
+	printer_options.options \
+	proof_options.options \
+	prop_options.options \
+	quantifiers_options.options \
+	sep_options.options \
+	sets_options.options \
+	smt_options.options \
+	strings_options.options \
+	theory_options.options \
+	uf_options.options
+
+OPTIONS_SEDS = \
+	arith_options.sed \
+	arrays_options.sed \
+	base_options.sed \
+	booleans_options.sed \
+	builtin_options.sed \
+	bv_options.sed \
+	datatypes_options.sed \
+	decision_options.sed \
+	expr_options.sed \
+	fp_options.sed \
+	idl_options.sed \
+	main_options.sed \
+	parser_options.sed \
+	printer_options.sed \
+	proof_options.sed \
+	prop_options.sed \
+	quantifiers_options.sed \
+	sep_options.sed \
+	sets_options.sed \
+	smt_options.sed \
+	strings_options.sed \
+	theory_options.sed \
+	uf_options.sed
+
+OPTIONS_HEADS = \
+	arith_options.h \
+	arrays_options.h \
+	base_options.h \
+	booleans_options.h \
+	builtin_options.h \
+	bv_options.h \
+	datatypes_options.h \
+	decision_options.h \
+	expr_options.h \
+	fp_options.h \
+	idl_options.h \
+	main_options.h \
+	parser_options.h \
+	printer_options.h \
+	proof_options.h \
+	prop_options.h \
+	quantifiers_options.h \
+	sep_options.h \
+	sets_options.h \
+	smt_options.h \
+	strings_options.h \
+	theory_options.h \
+	uf_options.h
+
+OPTIONS_CPPS = \
+	arith_options.cpp \
+	arrays_options.cpp \
+	base_options.cpp \
+	booleans_options.cpp \
+	builtin_options.cpp \
+	bv_options.cpp \
+	datatypes_options.cpp \
+	decision_options.cpp \
+	expr_options.cpp \
+	fp_options.cpp \
+	idl_options.cpp \
+	main_options.cpp \
+	parser_options.cpp \
+	printer_options.cpp \
+	proof_options.cpp \
+	prop_options.cpp \
+	quantifiers_options.cpp \
+	sep_options.cpp \
+	sets_options.cpp \
+	smt_options.cpp \
+	strings_options.cpp \
+	theory_options.cpp \
+	uf_options.cpp
+
+
+CPP_TEMPLATE_FILES = \
+	base_options_template.h \
+	base_options_template.cpp \
+	options_holder_template.h \
+	options_template.cpp \
+	options_get_option_template.cpp \
+	options_set_option_template.cpp
+
+CPP_TEMPLATE_SEDS = \
+	base_options_template.h.sed \
+	base_options_template.cpp.sed \
+	options_holder_template.h.sed \
+	options_template.cpp.sed \
+	options_get_option_template.cpp.sed \
+	options_set_option_template.cpp.sed
+
+
+DOCUMENTATION_FILES = \
+	../../doc/cvc4.1 \
+	../../doc/libcvc4.3 \
+	../../doc/SmtEngine.3cvc \
+	../../doc/options.3cvc
+
+DOCUMENTATION_TEMPLATE_FILES = \
+	../../doc/cvc4.1_template \
+	../../doc/libcvc4.3_template \
+	../../doc/SmtEngine.3cvc_template \
+	../../doc/options.3cvc_template
+
+DOCUMENTATION_TEMPLATE_SEDS = \
+	../../doc/cvc4.1_template.sed \
+	../../doc/libcvc4.3_template.sed \
+	../../doc/SmtEngine.3cvc_template.sed \
+	../../doc/options.3cvc_template.sed
+
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4LIB \
+	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..
+AM_CXXFLAGS = -Wall $(FLAG_VISIBILITY_HIDDEN)
+
+noinst_LTLIBRARIES = liboptions.la
+
+liboptions_la_SOURCES = \
+	arith_heuristic_pivot_rule.cpp \
+	arith_heuristic_pivot_rule.h \
+	arith_propagation_mode.cpp \
+	arith_propagation_mode.h \
+	arith_unate_lemma_mode.cpp \
+	arith_unate_lemma_mode.h \
+	argument_extender_implementation.cpp \
+	argument_extender_implementation.h \
+	argument_extender.h \
+	base_handlers.h \
+	bv_bitblast_mode.cpp \
+	bv_bitblast_mode.h \
+	decision_mode.cpp \
+	decision_mode.h \
+	decision_weight.h \
+	didyoumean.cpp \
+	didyoumean.h \
+	language.cpp \
+	language.h \
+	open_ostream.cpp \
+	open_ostream.h \
+	option_exception.h \
+	options.h \
+	options_handler.cpp \
+	options_handler.h \
+	options_public_functions.cpp \
+	printer_modes.cpp \
+	printer_modes.h \
+	quantifiers_modes.cpp \
+	quantifiers_modes.h \
+	set_language.cpp \
+	set_language.h \
+	simplification_mode.cpp \
+	simplification_mode.h \
+	theoryof_mode.cpp \
+	theoryof_mode.h \
+	ufss_mode.h
+
+
+nodist_liboptions_la_SOURCES = \
+	options.cpp \
+	options_holder.h \
+	$(OPTIONS_HEADS) \
+	$(OPTIONS_CPPS) \
+	options_get_option.cpp \
+	options_set_option.cpp
+
+
+BUILT_SOURCES = \
+	$(CPP_TEMPLATE_SEDS) \
+	$(DOCUMENTATION_FILES) \
+	$(DOCUMENTATION_TEMPLATE_SEDS) \
+	$(OPTIONS_CPPS) \
+	$(OPTIONS_HEADS) \
+	$(OPTIONS_OPTIONS_FILES) \
+	$(OPTIONS_SEDS) \
+	options.cpp \
+	options_get_option.cpp \
+	options_set_option.cpp \
+	options_holder.h \
+	summary.sed
+
+
+CLEANFILES = \
+	$(BUILT_SOURCES) \
+	$(DOCUMENTATION_FILES) \
+	$(OPTIONS_TEMPS)
+
+EXTRA_DIST = \
+	$(DOCUMENTATION_FILES) \
+	$(OPTIONS_CPPS) \
+	$(OPTIONS_HEADS) \
+	$(OPTIONS_SRC_FILES) \
+	base_options_template.cpp \
+	base_options_template.h \
+	language.i \
+	mkoptions \
+	option_exception.i \
+	options.i \
+	options_get_option_template.cpp \
+	options_holder_template.h \
+	options_set_option_template.cpp \
+	options_template.cpp
+
+
+
+
+
+# Make sure the implicit rules never mistake a _template.cpp or _template.h file for source file.
+options_holder_template.h options_template.cpp options_get_option_template.cpp options_set_option_template.cpp base_options_template.h base_options_template.cpp :;
+
+# Make sure the implicit rules never mistake X_options for the -o file for a
+# CPP file.
+arith_options arrays_options base_options booleans_options builtin_options bv_options datatypes_options decision_options expr_options fp_options idl_options main_options parser_options printer_options proof_options prop_options quantifiers_options sep_options sets_options smt_options strings_options theory_options uf_options:;
+
+
+# These are phony to force them to be made everytime.
+.PHONY: arith_options.tmp arrays_options.tmp base_options.tmp booleans_options.tmp builtin_options.tmp bv_options.tmp datatypes_options.tmp decision_options.tmp expr_options.tmp fp_options.tmp idl_options.tmp main_options.tmp parser_options.tmp printer_options.tmp proof_options.tmp prop_options.tmp quantifiers_options.tmp sep_options.tmp sets_options.tmp smt_options.tmp strings_options.tmp theory_options.tmp uf_options.tmp
+
+# Make is happier being listed explictly. Not sure why.
+arith_options.tmp arrays_options.tmp base_options.tmp booleans_options.tmp builtin_options.tmp bv_options.tmp datatypes_options.tmp decision_options.tmp expr_options.tmp fp_options.tmp idl_options.tmp main_options.tmp parser_options.tmp printer_options.tmp proof_options.tmp prop_options.tmp quantifiers_options.tmp sep_options.tmp sets_options.tmp smt_options.tmp strings_options.tmp theory_options.tmp uf_options.tmp:
+	echo "$@" "$(@:.tmp=)"
+	$(AM_V_GEN)(cp "@srcdir@/$(@:.tmp=)" "$@" || true)
+#TIM:
+#The (... || true) here is to make distcheck not fail.
+
+%_options.options: %_options.tmp
+	$(AM_V_GEN)\
+	diff -q "$^" "$@" &>/dev/null || mv "$^" "$@" || true
+
+
+# This bit is kinda tricky.
+# We use the updating of %_options.options to signal that the options file updated.
+# However, we use the original file in src to generate the file.
+%_options.sed: %_options.options mkoptions
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions module-sed "@srcdir@/$(@:.sed=)" ) > "$@"
+
+
+$(CPP_TEMPLATE_SEDS): %.sed : % mkoptions
+#	echo "template seds"
+#	echo "$@"
+#	echo $(TEMPLATE_SEDS)
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions template-sed "$<" ) > "$@"
+
+$(DOCUMENTATION_TEMPLATE_SEDS): %.sed : % mkoptions
+#	echo "template seds"
+#	echo "$@"
+#	echo $(TEMPLATE_SEDS)
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions template-sed "$<" ) > "$@"
+
+%_options.h : %_options.sed mkoptions base_options_template.h base_options_template.h.sed
+#	echo heads
+#	echo "$@"
+#	echo $(OPTIONS_HEADS)
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
+		@srcdir@/base_options_template.h \
+		base_options_template.h.sed \
+		"$<" \
+	) > "$@"
+
+summary.sed : mkoptions $(OPTIONS_OPTIONS_FILES)
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions summary-sed \
+		$(OPTIONS_OPTIONS_FILES) \
+	) > summary.sed
+
+
+
+#   mkoptions apply-sed-to-template sed-file template-file
+options_holder.h : options_holder_template.h options_holder_template.h.sed summary.sed mkoptions $(OPTIONS_HEADS)
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
+		@srcdir@/options_holder_template.h \
+		@builddir@/options_holder_template.h.sed \
+		summary.sed \
+	) > "$@"
+
+# Make sure not to match with "options.cpp" too.
+%_options.cpp: %_options.sed %_options.h mkoptions options_holder.h base_options_template.cpp base_options_template.cpp.sed
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
+		@srcdir@/base_options_template.cpp \
+		base_options_template.cpp.sed \
+		"$<" \
+	) > "$@"
+
+
+
+
+#   mkoptions apply-sed-to-template sed-file template-file
+options.cpp : options_template.cpp options_template.cpp.sed mkoptions summary.sed $(OPTIONS_HEADS) options_holder.h
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
+		@srcdir@/options_template.cpp \
+		@builddir@/options_template.cpp.sed \
+		summary.sed \
+	) > "$@"
+
+
+#   mkoptions apply-sed-to-template sed-file template-file
+options_get_option.cpp : options_get_option_template.cpp options_get_option_template.cpp.sed mkoptions summary.sed $(OPTIONS_HEADS)
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
+		@srcdir@/options_get_option_template.cpp \
+		@builddir@/options_get_option_template.cpp.sed \
+		summary.sed \
+	) > "$@"
+
+options_set_option.cpp : options_set_option_template.cpp options_set_option_template.cpp.sed mkoptions summary.sed $(OPTIONS_HEADS)
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
+		@srcdir@/options_set_option_template.cpp \
+		@builddir@/options_set_option_template.cpp.sed \
+		summary.sed \
+	) > "$@"
+
+
+
+$(DOCUMENTATION_FILES) : % : %_template %_template.sed mkoptions summary.sed
+#	echo "$<"
+#	echo "$@"
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
+		"$<" \
+		"$<".sed \
+		@builddir@/summary.sed \
+	) > "$@"
+
+
+
+#options-stamp: options_holder_template.h options_template.cpp smt_options_template.cpp base_options_template.h base_options_template.cpp mkoptions $(OPTIONS_FILE_SRCS)
+
+
+# This rule is ugly.  It's needed to ensure that automake's dependence
+# includes are available during distclean, even though they come from
+# directories that are cleaned first.  Without this rule, "distclean"
+# fails.
+%.Plo:; $(MKDIR_P) "$(dir $@)" && : > "$@"
diff --git a/src/options/Makefile.in b/src/options/Makefile.in
new file mode 100644
index 0000000..7d47b09
--- /dev/null
+++ b/src/options/Makefile.in
@@ -0,0 +1,1221 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# How options are built:
+# Step 1: Copy the X_options source file into builddir as X_options.tmp.
+#    X_options.tmp is a .PHONY rule to force this step to always be done.
+# Step 2: Compare X_options.tmp to X_options.options.
+#   If they are different, overwrite "X_options.options".
+#   This is the file that we use to generate options from.
+#   This is always up to dat with X_options. The change in name is just
+#   to keep Makefile stage more explicit.
+# Step 3: Generate X_options.sed from X_options.options using mkoptions.
+# Step 4: Generate X_options.h from X_options.sed
+# Step 5: Generate X_options.cpp from X_options.sed.
+#   This stage also waits for X_options.h as otherwise it cannot compile.
+#
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = src/options
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+liboptions_la_LIBADD =
+am_liboptions_la_OBJECTS = arith_heuristic_pivot_rule.lo \
+	arith_propagation_mode.lo arith_unate_lemma_mode.lo \
+	argument_extender_implementation.lo bv_bitblast_mode.lo \
+	decision_mode.lo didyoumean.lo language.lo open_ostream.lo \
+	options_handler.lo options_public_functions.lo \
+	printer_modes.lo quantifiers_modes.lo set_language.lo \
+	simplification_mode.lo theoryof_mode.lo
+am__objects_1 =
+am__objects_2 = arith_options.lo arrays_options.lo base_options.lo \
+	booleans_options.lo builtin_options.lo bv_options.lo \
+	datatypes_options.lo decision_options.lo expr_options.lo \
+	fp_options.lo idl_options.lo main_options.lo parser_options.lo \
+	printer_options.lo proof_options.lo prop_options.lo \
+	quantifiers_options.lo sep_options.lo sets_options.lo \
+	smt_options.lo strings_options.lo theory_options.lo \
+	uf_options.lo
+nodist_liboptions_la_OBJECTS = options.lo $(am__objects_1) \
+	$(am__objects_2) options_get_option.lo options_set_option.lo
+liboptions_la_OBJECTS = $(am_liboptions_la_OBJECTS) \
+	$(nodist_liboptions_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(liboptions_la_SOURCES) $(nodist_liboptions_la_SOURCES)
+DIST_SOURCES = $(liboptions_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+OPTIONS_SRC_FILES = \
+	arith_options \
+	arrays_options \
+	base_options \
+	booleans_options \
+	builtin_options \
+	bv_options \
+	datatypes_options \
+	decision_options \
+	expr_options \
+	fp_options \
+	idl_options \
+	main_options \
+	parser_options \
+	printer_options \
+	proof_options \
+	prop_options \
+	quantifiers_options \
+	sep_options \
+	sets_options \
+	smt_options \
+	strings_options \
+	theory_options \
+	uf_options
+
+OPTIONS_TEMPS = \
+	arith_options.tmp \
+	arrays_options.tmp \
+	base_options.tmp \
+	booleans_options.tmp \
+	builtin_options.tmp \
+	bv_options.tmp \
+	datatypes_options.tmp \
+	decision_options.tmp \
+	expr_options.tmp \
+	fp_options.tmp \
+	idl_options.tmp \
+	main_options.tmp \
+	parser_options.tmp \
+	printer_options.tmp \
+	proof_options.tmp \
+	prop_options.tmp \
+	quantifiers_options.tmp \
+	sep_options.tmp \
+	sets_options.tmp \
+	smt_options.tmp \
+	strings_options.tmp \
+	theory_options.tmp \
+	uf_options.tmp
+
+OPTIONS_OPTIONS_FILES = \
+	arith_options.options \
+	arrays_options.options \
+	base_options.options \
+	booleans_options.options \
+	builtin_options.options \
+	bv_options.options \
+	datatypes_options.options \
+	decision_options.options \
+	expr_options.options \
+	fp_options.options \
+	idl_options.options \
+	main_options.options \
+	parser_options.options \
+	printer_options.options \
+	proof_options.options \
+	prop_options.options \
+	quantifiers_options.options \
+	sep_options.options \
+	sets_options.options \
+	smt_options.options \
+	strings_options.options \
+	theory_options.options \
+	uf_options.options
+
+OPTIONS_SEDS = \
+	arith_options.sed \
+	arrays_options.sed \
+	base_options.sed \
+	booleans_options.sed \
+	builtin_options.sed \
+	bv_options.sed \
+	datatypes_options.sed \
+	decision_options.sed \
+	expr_options.sed \
+	fp_options.sed \
+	idl_options.sed \
+	main_options.sed \
+	parser_options.sed \
+	printer_options.sed \
+	proof_options.sed \
+	prop_options.sed \
+	quantifiers_options.sed \
+	sep_options.sed \
+	sets_options.sed \
+	smt_options.sed \
+	strings_options.sed \
+	theory_options.sed \
+	uf_options.sed
+
+OPTIONS_HEADS = \
+	arith_options.h \
+	arrays_options.h \
+	base_options.h \
+	booleans_options.h \
+	builtin_options.h \
+	bv_options.h \
+	datatypes_options.h \
+	decision_options.h \
+	expr_options.h \
+	fp_options.h \
+	idl_options.h \
+	main_options.h \
+	parser_options.h \
+	printer_options.h \
+	proof_options.h \
+	prop_options.h \
+	quantifiers_options.h \
+	sep_options.h \
+	sets_options.h \
+	smt_options.h \
+	strings_options.h \
+	theory_options.h \
+	uf_options.h
+
+OPTIONS_CPPS = \
+	arith_options.cpp \
+	arrays_options.cpp \
+	base_options.cpp \
+	booleans_options.cpp \
+	builtin_options.cpp \
+	bv_options.cpp \
+	datatypes_options.cpp \
+	decision_options.cpp \
+	expr_options.cpp \
+	fp_options.cpp \
+	idl_options.cpp \
+	main_options.cpp \
+	parser_options.cpp \
+	printer_options.cpp \
+	proof_options.cpp \
+	prop_options.cpp \
+	quantifiers_options.cpp \
+	sep_options.cpp \
+	sets_options.cpp \
+	smt_options.cpp \
+	strings_options.cpp \
+	theory_options.cpp \
+	uf_options.cpp
+
+CPP_TEMPLATE_FILES = \
+	base_options_template.h \
+	base_options_template.cpp \
+	options_holder_template.h \
+	options_template.cpp \
+	options_get_option_template.cpp \
+	options_set_option_template.cpp
+
+CPP_TEMPLATE_SEDS = \
+	base_options_template.h.sed \
+	base_options_template.cpp.sed \
+	options_holder_template.h.sed \
+	options_template.cpp.sed \
+	options_get_option_template.cpp.sed \
+	options_set_option_template.cpp.sed
+
+DOCUMENTATION_FILES = \
+	../../doc/cvc4.1 \
+	../../doc/libcvc4.3 \
+	../../doc/SmtEngine.3cvc \
+	../../doc/options.3cvc
+
+DOCUMENTATION_TEMPLATE_FILES = \
+	../../doc/cvc4.1_template \
+	../../doc/libcvc4.3_template \
+	../../doc/SmtEngine.3cvc_template \
+	../../doc/options.3cvc_template
+
+DOCUMENTATION_TEMPLATE_SEDS = \
+	../../doc/cvc4.1_template.sed \
+	../../doc/libcvc4.3_template.sed \
+	../../doc/SmtEngine.3cvc_template.sed \
+	../../doc/options.3cvc_template.sed
+
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4LIB \
+	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..
+
+AM_CXXFLAGS = -Wall $(FLAG_VISIBILITY_HIDDEN)
+noinst_LTLIBRARIES = liboptions.la
+liboptions_la_SOURCES = \
+	arith_heuristic_pivot_rule.cpp \
+	arith_heuristic_pivot_rule.h \
+	arith_propagation_mode.cpp \
+	arith_propagation_mode.h \
+	arith_unate_lemma_mode.cpp \
+	arith_unate_lemma_mode.h \
+	argument_extender_implementation.cpp \
+	argument_extender_implementation.h \
+	argument_extender.h \
+	base_handlers.h \
+	bv_bitblast_mode.cpp \
+	bv_bitblast_mode.h \
+	decision_mode.cpp \
+	decision_mode.h \
+	decision_weight.h \
+	didyoumean.cpp \
+	didyoumean.h \
+	language.cpp \
+	language.h \
+	open_ostream.cpp \
+	open_ostream.h \
+	option_exception.h \
+	options.h \
+	options_handler.cpp \
+	options_handler.h \
+	options_public_functions.cpp \
+	printer_modes.cpp \
+	printer_modes.h \
+	quantifiers_modes.cpp \
+	quantifiers_modes.h \
+	set_language.cpp \
+	set_language.h \
+	simplification_mode.cpp \
+	simplification_mode.h \
+	theoryof_mode.cpp \
+	theoryof_mode.h \
+	ufss_mode.h
+
+nodist_liboptions_la_SOURCES = \
+	options.cpp \
+	options_holder.h \
+	$(OPTIONS_HEADS) \
+	$(OPTIONS_CPPS) \
+	options_get_option.cpp \
+	options_set_option.cpp
+
+BUILT_SOURCES = \
+	$(CPP_TEMPLATE_SEDS) \
+	$(DOCUMENTATION_FILES) \
+	$(DOCUMENTATION_TEMPLATE_SEDS) \
+	$(OPTIONS_CPPS) \
+	$(OPTIONS_HEADS) \
+	$(OPTIONS_OPTIONS_FILES) \
+	$(OPTIONS_SEDS) \
+	options.cpp \
+	options_get_option.cpp \
+	options_set_option.cpp \
+	options_holder.h \
+	summary.sed
+
+CLEANFILES = \
+	$(BUILT_SOURCES) \
+	$(DOCUMENTATION_FILES) \
+	$(OPTIONS_TEMPS)
+
+EXTRA_DIST = \
+	$(DOCUMENTATION_FILES) \
+	$(OPTIONS_CPPS) \
+	$(OPTIONS_HEADS) \
+	$(OPTIONS_SRC_FILES) \
+	base_options_template.cpp \
+	base_options_template.h \
+	language.i \
+	mkoptions \
+	option_exception.i \
+	options.i \
+	options_get_option_template.cpp \
+	options_holder_template.h \
+	options_set_option_template.cpp \
+	options_template.cpp
+
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/options/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/options/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+liboptions.la: $(liboptions_la_OBJECTS) $(liboptions_la_DEPENDENCIES) $(EXTRA_liboptions_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK)  $(liboptions_la_OBJECTS) $(liboptions_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/argument_extender_implementation.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/arith_heuristic_pivot_rule.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/arith_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/arith_propagation_mode.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/arith_unate_lemma_mode.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/arrays_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/base_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/booleans_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/builtin_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bv_bitblast_mode.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bv_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/datatypes_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/decision_mode.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/decision_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/didyoumean.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/expr_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/fp_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/idl_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/language.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/main_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/open_ostream.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/options_get_option.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/options_handler.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/options_public_functions.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/options_set_option.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/parser_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/printer_modes.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/printer_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/proof_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/prop_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/quantifiers_modes.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/quantifiers_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sep_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/set_language.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sets_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/simplification_mode.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/smt_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/strings_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/theory_options.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/theoryof_mode.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/uf_options.Plo at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Make sure the implicit rules never mistake a _template.cpp or _template.h file for source file.
+options_holder_template.h options_template.cpp options_get_option_template.cpp options_set_option_template.cpp base_options_template.h base_options_template.cpp :;
+
+# Make sure the implicit rules never mistake X_options for the -o file for a
+# CPP file.
+arith_options arrays_options base_options booleans_options builtin_options bv_options datatypes_options decision_options expr_options fp_options idl_options main_options parser_options printer_options proof_options prop_options quantifiers_options sep_options sets_options smt_options strings_options theory_options uf_options:;
+
+# These are phony to force them to be made everytime.
+.PHONY: arith_options.tmp arrays_options.tmp base_options.tmp booleans_options.tmp builtin_options.tmp bv_options.tmp datatypes_options.tmp decision_options.tmp expr_options.tmp fp_options.tmp idl_options.tmp main_options.tmp parser_options.tmp printer_options.tmp proof_options.tmp prop_options.tmp quantifiers_options.tmp sep_options.tmp sets_options.tmp smt_options.tmp strings_options.tmp theory_options.tmp uf_options.tmp
+
+# Make is happier being listed explictly. Not sure why.
+arith_options.tmp arrays_options.tmp base_options.tmp booleans_options.tmp builtin_options.tmp bv_options.tmp datatypes_options.tmp decision_options.tmp expr_options.tmp fp_options.tmp idl_options.tmp main_options.tmp parser_options.tmp printer_options.tmp proof_options.tmp prop_options.tmp quantifiers_options.tmp sep_options.tmp sets_options.tmp smt_options.tmp strings_options.tmp theory_options.tmp uf_options.tmp:
+	echo "$@" "$(@:.tmp=)"
+	$(AM_V_GEN)(cp "@srcdir@/$(@:.tmp=)" "$@" || true)
+#TIM:
+#The (... || true) here is to make distcheck not fail.
+
+%_options.options: %_options.tmp
+	$(AM_V_GEN)\
+	diff -q "$^" "$@" &>/dev/null || mv "$^" "$@" || true
+
+# This bit is kinda tricky.
+# We use the updating of %_options.options to signal that the options file updated.
+# However, we use the original file in src to generate the file.
+%_options.sed: %_options.options mkoptions
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions module-sed "@srcdir@/$(@:.sed=)" ) > "$@"
+
+$(CPP_TEMPLATE_SEDS): %.sed : % mkoptions
+#	echo "template seds"
+#	echo "$@"
+#	echo $(TEMPLATE_SEDS)
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions template-sed "$<" ) > "$@"
+
+$(DOCUMENTATION_TEMPLATE_SEDS): %.sed : % mkoptions
+#	echo "template seds"
+#	echo "$@"
+#	echo $(TEMPLATE_SEDS)
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions template-sed "$<" ) > "$@"
+
+%_options.h : %_options.sed mkoptions base_options_template.h base_options_template.h.sed
+#	echo heads
+#	echo "$@"
+#	echo $(OPTIONS_HEADS)
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
+		@srcdir@/base_options_template.h \
+		base_options_template.h.sed \
+		"$<" \
+	) > "$@"
+
+summary.sed : mkoptions $(OPTIONS_OPTIONS_FILES)
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions summary-sed \
+		$(OPTIONS_OPTIONS_FILES) \
+	) > summary.sed
+
+#   mkoptions apply-sed-to-template sed-file template-file
+options_holder.h : options_holder_template.h options_holder_template.h.sed summary.sed mkoptions $(OPTIONS_HEADS)
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
+		@srcdir@/options_holder_template.h \
+		@builddir@/options_holder_template.h.sed \
+		summary.sed \
+	) > "$@"
+
+# Make sure not to match with "options.cpp" too.
+%_options.cpp: %_options.sed %_options.h mkoptions options_holder.h base_options_template.cpp base_options_template.cpp.sed
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
+		@srcdir@/base_options_template.cpp \
+		base_options_template.cpp.sed \
+		"$<" \
+	) > "$@"
+
+#   mkoptions apply-sed-to-template sed-file template-file
+options.cpp : options_template.cpp options_template.cpp.sed mkoptions summary.sed $(OPTIONS_HEADS) options_holder.h
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
+		@srcdir@/options_template.cpp \
+		@builddir@/options_template.cpp.sed \
+		summary.sed \
+	) > "$@"
+
+#   mkoptions apply-sed-to-template sed-file template-file
+options_get_option.cpp : options_get_option_template.cpp options_get_option_template.cpp.sed mkoptions summary.sed $(OPTIONS_HEADS)
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
+		@srcdir@/options_get_option_template.cpp \
+		@builddir@/options_get_option_template.cpp.sed \
+		summary.sed \
+	) > "$@"
+
+options_set_option.cpp : options_set_option_template.cpp options_set_option_template.cpp.sed mkoptions summary.sed $(OPTIONS_HEADS)
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
+		@srcdir@/options_set_option_template.cpp \
+		@builddir@/options_set_option_template.cpp.sed \
+		summary.sed \
+	) > "$@"
+
+$(DOCUMENTATION_FILES) : % : %_template %_template.sed mkoptions summary.sed
+#	echo "$<"
+#	echo "$@"
+	$(AM_V_at)chmod +x @srcdir@/mkoptions
+	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
+		"$<" \
+		"$<".sed \
+		@builddir@/summary.sed \
+	) > "$@"
+
+#options-stamp: options_holder_template.h options_template.cpp smt_options_template.cpp base_options_template.h base_options_template.cpp mkoptions $(OPTIONS_FILE_SRCS)
+
+# This rule is ugly.  It's needed to ensure that automake's dependence
+# includes are available during distclean, even though they come from
+# directories that are cleaned first.  Without this rule, "distclean"
+# fails.
+%.Plo:; $(MKDIR_P) "$(dir $@)" && : > "$@"
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/options/argument_extender.h b/src/options/argument_extender.h
new file mode 100644
index 0000000..6be41fe
--- /dev/null
+++ b/src/options/argument_extender.h
@@ -0,0 +1,85 @@
+/*********************                                                        */
+/*! \file argument_extender.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Abstract utility class for extending commandline options.
+ **
+ ** Abstract utility class for extending commandline options.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__OPTIONS__ARGUMENT_EXTENDER_H
+#define __CVC4__OPTIONS__ARGUMENT_EXTENDER_H
+
+#include <cstddef>
+
+namespace CVC4 {
+namespace options {
+
+/**
+ * Abstract utility class for implementing command line options
+ * parsing for the Options class. This allows for adding preemption
+ * arguments. A preemption is effectivly adding a new argument into
+ * the commandline arguments and must be processed immediately.
+ */
+class ArgumentExtender {
+public:
+  ArgumentExtender(){}
+  virtual ~ArgumentExtender(){}
+
+  /**
+   * This creates a copy of the current arguments list as a new array.
+   * The new array is stored in argv.  The user of this function is
+   * expected to own the memory of the string array, but not the
+   * strings themselves.  The length of the new array is
+   * numArguments() and is stored in argc.
+   *
+   * Preconditions:
+   * - argc and argv are non-null.
+   */
+  virtual void getArguments(int* argc, char*** argv) const = 0;
+
+  /** Returns the number of arguments that are . */
+  virtual size_t numArguments() const = 0;
+
+  /**
+   * Inserts a copy of element into the front of the arguments list.
+   * Preconditions: element is non-null and 0 terminated.
+   */
+  virtual void pushFrontArgument(const char* element) = 0;
+
+  /**
+   * Inserts a copy of element into the back of the arguments list.
+   * Preconditions: element is non-null and 0 terminated.
+   */
+  virtual void pushBackArgument(const char* element) = 0;
+
+  /** Removes the front of the arguments list.*/
+  virtual void popFrontArgument() = 0;
+
+  /** Adds a new preemption to the arguments list. */
+  virtual void pushBackPreemption(const char* element) = 0;
+
+  /**
+   * Moves all of the preemptions into the front of the arguments
+   * list.
+   */
+  virtual void movePreemptionsToArguments() = 0;
+
+  /** Returns true iff there is a pending preemption.*/
+  virtual bool hasPreemptions() const = 0;
+
+};/* class ArgumentExtender */
+
+}/* CVC4::options namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__ARGUMENT_EXTENDER_H */
diff --git a/src/options/argument_extender_implementation.cpp b/src/options/argument_extender_implementation.cpp
new file mode 100644
index 0000000..0c23434
--- /dev/null
+++ b/src/options/argument_extender_implementation.cpp
@@ -0,0 +1,114 @@
+/*********************                                                        */
+/*! \file argument_extender_implementation.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Utility class for parsing commandline options.
+ **
+ ** Utility class for parsing commandline options.
+ **/
+
+#include "options/argument_extender_implementation.h"
+
+#include <cstdlib>
+#include <cstring>
+#include <list>
+
+#include "base/cvc4_assert.h"
+#include "base/output.h"
+#include "options/argument_extender.h"
+
+namespace CVC4 {
+namespace options {
+
+ArgumentExtenderImplementation::ArgumentExtenderImplementation()
+  : d_allocated()
+  , d_preemptions()
+  , d_arguments()
+{
+}
+
+ArgumentExtenderImplementation::~ArgumentExtenderImplementation(){
+  for(CharPointerList::iterator i = d_allocated.begin(),
+        iend = d_allocated.end(); i != iend; ++i) {
+    char* current = *i;
+    Debug("options") << "~ArgumentExtenderImplementation " << current
+    << std::endl;
+    free(current);
+  }
+  d_allocated.clear();
+}
+
+size_t ArgumentExtenderImplementation::numArguments() const {
+  return d_arguments.size();
+}
+
+char* ArgumentExtenderImplementation::allocateCopy(const char* element) {
+  Assert(element != NULL);
+
+  char* duplicate = strdup(element);
+  Assert(duplicate != NULL);
+  d_allocated.push_back(duplicate);
+  return duplicate;
+}
+
+bool ArgumentExtenderImplementation::hasPreemptions() const {
+  return !d_preemptions.empty();
+}
+
+void ArgumentExtenderImplementation::pushBackPreemption(const char* element) {
+  d_preemptions.push_back(allocateCopy(element));
+}
+
+void ArgumentExtenderImplementation::movePreemptionsToArguments() {
+  d_arguments.splice(d_arguments.begin(), d_preemptions);
+}
+
+void ArgumentExtenderImplementation::popFrontArgument() {
+  Assert(!d_arguments.empty());
+  Debug("options") << "ArgumentExtenderImplementation::popFrontArgument "
+                   << d_arguments.front() << std::endl;
+  d_arguments.pop_front();
+}
+
+void ArgumentExtenderImplementation::pushFrontArgument(const char* element) {
+  d_arguments.push_front(allocateCopy(element));
+}
+
+void ArgumentExtenderImplementation::pushBackArgument(const char* element) {
+  d_arguments.push_back(allocateCopy(element));
+}
+
+void ArgumentExtenderImplementation::getArguments(int* argc, char*** argv)
+  const {
+  Assert(argc != NULL);
+  Assert(argv != NULL);
+
+  *argc = numArguments();
+  *argv = copyArguments();
+}
+
+char** ArgumentExtenderImplementation::copyArguments() const {
+  int size = numArguments();
+  Assert(size >= 0);
+
+  char** array = (char**) malloc( sizeof(char*) * size );
+  Assert(array != NULL);
+  int position = 0;
+  for(std::list< char* >::const_iterator i = d_arguments.begin(),
+        iend = d_arguments.end(); i != iend; ++i, ++position) {
+    char* at_position = *i;
+    array[position] = at_position;
+  }
+
+  return array;
+}
+
+}/* CVC4::options namespace */
+}/* CVC4 namespace */
diff --git a/src/options/argument_extender_implementation.h b/src/options/argument_extender_implementation.h
new file mode 100644
index 0000000..e948132
--- /dev/null
+++ b/src/options/argument_extender_implementation.h
@@ -0,0 +1,115 @@
+/*********************                                                        */
+/*! \file argument_extender_implementation.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Utility class for extending commandline options.
+ **
+ ** Utility class for extending commandline options.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__ARGUMENT_EXTENDER_IMPLEMENTATION_H
+#define __CVC4__OPTIONS__ARGUMENT_EXTENDER_IMPLEMENTATION_H
+
+#include <cstddef>
+#include <list>
+
+#include "options/argument_extender.h"
+
+namespace CVC4 {
+namespace options {
+
+/**
+ * Utility class for implementing command line options parsing for the
+ * Options class. This allows for adding preemption arguments.
+ * Preemptions are processed immediately after the current argument.
+ */
+class ArgumentExtenderImplementation : public ArgumentExtender {
+ public:
+  /** Constructs a new empty ArgumentExtender.*/
+  ArgumentExtenderImplementation();
+
+  /** Destroys an ArgumentExtender and frees its associated memory.*/
+  ~ArgumentExtenderImplementation();
+
+  /**
+   * This creates a copy of the current arguments list as a new array.
+   * The new array is stored in argv.  The user of this function is
+   * expected to own the memory of the string array, but not the
+   * strings themselves.  The length of the new array is
+   * numArguments() and is stored in argc.
+   *
+   * Preconditions:
+   * - argc and argv are non-null.
+   */
+  void getArguments(int* argc, char*** argv) const;
+
+  /** Returns the number of arguments that are . */
+  size_t numArguments() const;
+
+  /**
+   * Inserts a copy of element into the front of the arguments list.
+   * Preconditions: element is non-null and 0 terminated.
+   */
+  void pushFrontArgument(const char* element);
+
+  /**
+   * Inserts a copy of element into the back of the arguments list.
+   * Preconditions: element is non-null and 0 terminated.
+   */
+  void pushBackArgument(const char* element);
+
+  /** Removes the front of the arguments list.*/
+  void popFrontArgument();
+
+  /** Adds a new preemption to the arguments list. */
+  void pushBackPreemption(const char* element);
+
+  /**
+   * Moves all of the preemptions into the front of the arguments
+   * list.
+   */
+  void movePreemptionsToArguments();
+
+  /** Returns true iff there is a pending preemption.*/
+  bool hasPreemptions() const;
+
+private:
+
+  typedef std::list< char* > CharPointerList;
+
+  /** Creates of copy of the arugments list.*/
+  char** copyArguments() const;
+
+  /** Allocates a copy and stores a copy in d_allocated.*/
+  char* allocateCopy(const char* element);
+
+  /** Contains a copy of the allocated strings.*/
+  CharPointerList d_allocated;
+
+  /**
+   * A list of all of the preempted arguments. All of these pointers
+   * in this list should be contained in d_allocated.
+   */
+  CharPointerList d_preemptions;
+
+  /**
+   * A list of all of the arguments. All of these pointers in this
+   * list should be contained in d_allocated.
+   */
+  CharPointerList d_arguments;
+
+};/* class ArgumentExtenderImplementation */
+
+}/* CVC4::options namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__ARGUMENT_EXTENDER_IMPLEMENTATION_H */
diff --git a/src/options/arith_heuristic_pivot_rule.cpp b/src/options/arith_heuristic_pivot_rule.cpp
new file mode 100644
index 0000000..15c340a
--- /dev/null
+++ b/src/options/arith_heuristic_pivot_rule.cpp
@@ -0,0 +1,40 @@
+/*********************                                                        */
+/*! \file arith_heuristic_pivot_rule.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "options/arith_heuristic_pivot_rule.h"
+
+namespace CVC4 {
+
+std::ostream& operator<<(std::ostream& out, ErrorSelectionRule rule) {
+  switch(rule) {
+  case MINIMUM_AMOUNT:
+    out << "MINIMUM_AMOUNT";
+    break;
+  case VAR_ORDER:
+    out << "VAR_ORDER";
+    break;
+  case MAXIMUM_AMOUNT:
+    out << "MAXIMUM_AMOUNT";
+    break;
+  default:
+    out << "ArithHeuristicPivotRule!UNKNOWN";
+  }
+
+  return out;
+}
+
+}/* CVC4 namespace */
diff --git a/src/options/arith_heuristic_pivot_rule.h b/src/options/arith_heuristic_pivot_rule.h
new file mode 100644
index 0000000..9048cb9
--- /dev/null
+++ b/src/options/arith_heuristic_pivot_rule.h
@@ -0,0 +1,38 @@
+/*********************                                                        */
+/*! \file arith_heuristic_pivot_rule.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__THEORY__ARITH__ARITH_HEURISTIC_PIVOT_RULE_H
+#define __CVC4__THEORY__ARITH__ARITH_HEURISTIC_PIVOT_RULE_H
+
+#include <iostream>
+
+namespace CVC4 {
+
+enum ErrorSelectionRule {
+  VAR_ORDER,
+  MINIMUM_AMOUNT,
+  MAXIMUM_AMOUNT,
+  SUM_METRIC
+};
+
+std::ostream& operator<<(std::ostream& out, ErrorSelectionRule rule) CVC4_PUBLIC;
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__ARITH__ARITH_HEURISTIC_PIVOT_RULE_H */
diff --git a/src/options/arith_options b/src/options/arith_options
new file mode 100644
index 0000000..f38e377
--- /dev/null
+++ b/src/options/arith_options
@@ -0,0 +1,168 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module ARITH "options/arith_options.h" Arithmetic theory
+
+option arithUnateLemmaMode --unate-lemmas=MODE ArithUnateLemmaMode :handler stringToArithUnateLemmaMode :default ALL_PRESOLVE_LEMMAS :include "options/arith_unate_lemma_mode.h"
+ determines which lemmas to add before solving (default is 'all', see --unate-lemmas=help)
+
+option arithPropagationMode --arith-prop=MODE ArithPropagationMode :handler stringToArithPropagationMode :default BOTH_PROP :include "options/arith_propagation_mode.h"
+ turns on arithmetic propagation (default is 'old', see --arith-prop=help)
+
+# The maximum number of difference pivots to do per invocation of simplex.
+# If this is negative, the number of pivots done is the number of variables.
+# If this is not set by the user, different logics are free to chose different
+# defaults.
+option arithHeuristicPivots --heuristic-pivots=N int16_t :default 0 :read-write
+ the number of times to apply the heuristic pivot rule; if N < 0, this defaults to the number of variables; if this is unset, this is tuned by the logic selection
+
+# The maximum number of variable order pivots to do per invocation of simplex.
+# If this is negative, the number of pivots done is unlimited.
+# If this is not set by the user, different logics are free to chose different
+# defaults.
+expert-option arithStandardCheckVarOrderPivots --standard-effort-variable-order-pivots=N int16_t :default -1 :read-write
+ limits the number of pivots in a single invocation of check() at a non-full effort level using Bland's pivot rule
+
+option arithErrorSelectionRule --error-selection-rule=RULE ErrorSelectionRule :handler stringToErrorSelectionRule :default MINIMUM_AMOUNT :include "options/arith_heuristic_pivot_rule.h"
+ change the pivot rule for the basic variable (default is 'min', see --pivot-rule help)
+
+# The number of pivots before simplex rechecks every basic variable for a conflict
+option arithSimplexCheckPeriod --simplex-check-period=N uint16_t :default 200
+ the number of pivots to do in simplex before rechecking for a conflict on all variables
+
+# This is the pivots per basic variable that can be done using heuristic choices
+# before variable order must be used.
+# If this is not set by the user, different logics are free to chose different
+# defaults.
+option arithPivotThreshold --pivot-threshold=N uint16_t :default 2 :read-write
+ sets the number of pivots using --pivot-rule per basic variable per simplex instance before using variable order
+
+option arithPropagateMaxLength --prop-row-length=N uint16_t :default 16
+ sets the maximum row length to be used in propagation
+
+option arithDioSolver --enable-dio-solver/--disable-dio-solver bool :default true
+ turns on Linear Diophantine Equation solver (Griggio, JSAT 2012)
+/turns off Linear Diophantine Equation solver (Griggio, JSAT 2012)
+
+# Whether to split (= x y) into (and (<= x y) (>= x y)) in
+# arithmetic preprocessing.
+option arithRewriteEq --enable-arith-rewrite-equalities/--disable-arith-rewrite-equalities bool :default false :read-write
+ 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=N unsigned :default 1
+ do substitution for miplib 'tmp' vars if defined in <= N eliminated vars
+
+option doCutAllBounded --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
+
+option maxCutsInContext --maxCutsInContext unsigned :default 65535
+ maximum cuts in a given context before signalling a restart
+
+option revertArithModels --revert-arith-models-on-unsat bool :default false
+ revert the arithmetic model to a known safe model on unsat if one is cached
+
+option havePenalties --fc-penalties bool :default false :read-write
+ turns on degenerate pivot penalties
+/turns off degenerate pivot penalties
+
+option useFC --use-fcsimplex bool :default false :read-write
+ use focusing and converging simplex (FMCAD 2013 submission)
+
+option useSOI --use-soi bool :default false :read-write
+ use sum of infeasibility simplex (FMCAD 2013 submission)
+
+option restrictedPivots --restrict-pivots bool :default true :read-write
+ have a pivot cap for simplex at effort levels below fullEffort
+
+option collectPivots --collect-pivot-stats bool :default false :read-write
+ collect the pivot history
+
+option useApprox --use-approx bool :default false :read-write
+ attempt to use an approximate solver
+
+option maxApproxDepth --approx-branch-depth int16_t :default 200 :read-write
+ maximum branch depth the approximate solver is allowed to take
+
+option exportDioDecompositions --dio-decomps bool :default false :read-write
+ let skolem variables for integer divisibility constraints leak from the dio solver
+
+option newProp --new-prop bool :default false :read-write
+ use the new row propagation system
+
+option arithPropAsLemmaLength --arith-prop-clauses uint16_t :default 8 :read-write
+ rows shorter than this are propagated as clauses
+
+option soiQuickExplain --soi-qe bool :default false :read-write
+ use quick explain to minimize the sum of infeasibility conflicts
+
+option rewriteDivk rewrite-divk --rewrite-divk bool :default false :read-write
+ rewrite division and mod when by a constant into linear terms
+
+option trySolveIntStandardEffort --se-solve-int bool :default false
+ attempt to use the approximate solve integer method on standard effort
+
+option replayFailureLemma --lemmas-on-replay-failure bool :default false
+ attempt to use external lemmas if approximate solve integer failed
+
+option dioSolverTurns --dio-turns int :default 10
+ turns in a row dio solver cutting gets
+
+option rrTurns --rr-turns int :default 3
+ round robin turn
+
+option dioRepeat --dio-repeat bool :default false
+ handle dio solver constraints in mass or one at a time
+
+option replayEarlyCloseDepths --replay-early-close-depth int :default 1
+ multiples of the depths to try to close the approx log eagerly
+
+option replayFailurePenalty --replay-failure-penalty int :default 100
+ number of solve integer attempts to skips after a numeric failure
+
+option replayNumericFailurePenalty --replay-num-err-penalty int :default 4194304
+ number of solve integer attempts to skips after a numeric failure
+
+option replayRejectCutSize --replay-reject-cut unsigned :default 25500
+ maximum complexity of any coefficient while replaying cuts
+
+option lemmaRejectCutSize --replay-lemma-reject-cut unsigned :default 25500
+ maximum complexity of any coefficient while outputing replaying cut lemmas
+
+option soiApproxMajorFailure --replay-soi-major-threshold double :default .01
+ threshold for a major tolerance failure by the approximate solver
+
+option soiApproxMajorFailurePen --replay-soi-major-threshold-pen int :default 50
+ threshold for a major tolerance failure by the approximate solver
+
+option soiApproxMinorFailure --replay-soi-minor-threshold double :default .0001
+ threshold for a minor tolerance failure by the approximate solver
+
+option soiApproxMinorFailurePen --replay-soi-minor-threshold-pen int :default 10
+ threshold for a minor tolerance failure by the approximate solver
+
+option ppAssertMaxSubSize --pp-assert-max-sub-size unsigned :default 2
+ threshold for substituting an equality in ppAssert
+
+option maxReplayTree --max-replay-tree int :default 512
+ threshold for attempting to replay a tree
+
+
+option pbRewrites --pb-rewrites bool :default false
+ apply pseudo boolean rewrites
+
+option pbRewriteThreshold --pb-rewrite-threshold int :default 256
+ threshold of number of pseudoboolean variables to have before doing rewrites
+
+option sNormInferEq --snorm-infer-eq bool :default false
+ infer equalities based on Shostak normalization
+
+endmodule
diff --git a/src/options/arith_options.cpp b/src/options/arith_options.cpp
new file mode 100644
index 0000000..681391b
--- /dev/null
+++ b/src/options/arith_options.cpp
@@ -0,0 +1,343 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+#line 8 "../../../../../src/options/arith_options"
+template <> const options::arithUnateLemmaMode__option_t::type& Options::operator[](options::arithUnateLemmaMode__option_t) const { return d_holder->arithUnateLemmaMode; }
+#line 8 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithUnateLemmaMode__option_t) const { return d_holder->arithUnateLemmaMode__setByUser__; }
+#line 11 "../../../../../src/options/arith_options"
+template <> const options::arithPropagationMode__option_t::type& Options::operator[](options::arithPropagationMode__option_t) const { return d_holder->arithPropagationMode; }
+#line 11 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithPropagationMode__option_t) const { return d_holder->arithPropagationMode__setByUser__; }
+#line 18 "../../../../../src/options/arith_options"
+template <> void Options::set(options::arithHeuristicPivots__option_t, const options::arithHeuristicPivots__option_t::type& x) { d_holder->arithHeuristicPivots = x; }
+#line 18 "../../../../../src/options/arith_options"
+template <> const options::arithHeuristicPivots__option_t::type& Options::operator[](options::arithHeuristicPivots__option_t) const { return d_holder->arithHeuristicPivots; }
+#line 18 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithHeuristicPivots__option_t) const { return d_holder->arithHeuristicPivots__setByUser__; }
+#line 25 "../../../../../src/options/arith_options"
+template <> void Options::set(options::arithStandardCheckVarOrderPivots__option_t, const options::arithStandardCheckVarOrderPivots__option_t::type& x) { d_holder->arithStandardCheckVarOrderPivots = x; }
+#line 25 "../../../../../src/options/arith_options"
+template <> const options::arithStandardCheckVarOrderPivots__option_t::type& Options::operator[](options::arithStandardCheckVarOrderPivots__option_t) const { return d_holder->arithStandardCheckVarOrderPivots; }
+#line 25 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithStandardCheckVarOrderPivots__option_t) const { return d_holder->arithStandardCheckVarOrderPivots__setByUser__; }
+#line 28 "../../../../../src/options/arith_options"
+template <> const options::arithErrorSelectionRule__option_t::type& Options::operator[](options::arithErrorSelectionRule__option_t) const { return d_holder->arithErrorSelectionRule; }
+#line 28 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithErrorSelectionRule__option_t) const { return d_holder->arithErrorSelectionRule__setByUser__; }
+#line 32 "../../../../../src/options/arith_options"
+template <> const options::arithSimplexCheckPeriod__option_t::type& Options::operator[](options::arithSimplexCheckPeriod__option_t) const { return d_holder->arithSimplexCheckPeriod; }
+#line 32 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithSimplexCheckPeriod__option_t) const { return d_holder->arithSimplexCheckPeriod__setByUser__; }
+#line 39 "../../../../../src/options/arith_options"
+template <> void Options::set(options::arithPivotThreshold__option_t, const options::arithPivotThreshold__option_t::type& x) { d_holder->arithPivotThreshold = x; }
+#line 39 "../../../../../src/options/arith_options"
+template <> const options::arithPivotThreshold__option_t::type& Options::operator[](options::arithPivotThreshold__option_t) const { return d_holder->arithPivotThreshold; }
+#line 39 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithPivotThreshold__option_t) const { return d_holder->arithPivotThreshold__setByUser__; }
+#line 42 "../../../../../src/options/arith_options"
+template <> const options::arithPropagateMaxLength__option_t::type& Options::operator[](options::arithPropagateMaxLength__option_t) const { return d_holder->arithPropagateMaxLength; }
+#line 42 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithPropagateMaxLength__option_t) const { return d_holder->arithPropagateMaxLength__setByUser__; }
+#line 45 "../../../../../src/options/arith_options"
+template <> const options::arithDioSolver__option_t::type& Options::operator[](options::arithDioSolver__option_t) const { return d_holder->arithDioSolver; }
+#line 45 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithDioSolver__option_t) const { return d_holder->arithDioSolver__setByUser__; }
+#line 51 "../../../../../src/options/arith_options"
+template <> void Options::set(options::arithRewriteEq__option_t, const options::arithRewriteEq__option_t::type& x) { d_holder->arithRewriteEq = x; }
+#line 51 "../../../../../src/options/arith_options"
+template <> const options::arithRewriteEq__option_t::type& Options::operator[](options::arithRewriteEq__option_t) const { return d_holder->arithRewriteEq; }
+#line 51 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithRewriteEq__option_t) const { return d_holder->arithRewriteEq__setByUser__; }
+#line 56 "../../../../../src/options/arith_options"
+template <> const options::arithMLTrick__option_t::type& Options::operator[](options::arithMLTrick__option_t) const { return d_holder->arithMLTrick; }
+#line 56 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithMLTrick__option_t) const { return d_holder->arithMLTrick__setByUser__; }
+#line 60 "../../../../../src/options/arith_options"
+template <> const options::arithMLTrickSubstitutions__option_t::type& Options::operator[](options::arithMLTrickSubstitutions__option_t) const { return d_holder->arithMLTrickSubstitutions; }
+#line 60 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithMLTrickSubstitutions__option_t) const { return d_holder->arithMLTrickSubstitutions__setByUser__; }
+#line 63 "../../../../../src/options/arith_options"
+template <> void Options::set(options::doCutAllBounded__option_t, const options::doCutAllBounded__option_t::type& x) { d_holder->doCutAllBounded = x; }
+#line 63 "../../../../../src/options/arith_options"
+template <> const options::doCutAllBounded__option_t::type& Options::operator[](options::doCutAllBounded__option_t) const { return d_holder->doCutAllBounded; }
+#line 63 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::doCutAllBounded__option_t) const { return d_holder->doCutAllBounded__setByUser__; }
+#line 67 "../../../../../src/options/arith_options"
+template <> const options::maxCutsInContext__option_t::type& Options::operator[](options::maxCutsInContext__option_t) const { return d_holder->maxCutsInContext; }
+#line 67 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::maxCutsInContext__option_t) const { return d_holder->maxCutsInContext__setByUser__; }
+#line 70 "../../../../../src/options/arith_options"
+template <> const options::revertArithModels__option_t::type& Options::operator[](options::revertArithModels__option_t) const { return d_holder->revertArithModels; }
+#line 70 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::revertArithModels__option_t) const { return d_holder->revertArithModels__setByUser__; }
+#line 73 "../../../../../src/options/arith_options"
+template <> void Options::set(options::havePenalties__option_t, const options::havePenalties__option_t::type& x) { d_holder->havePenalties = x; }
+#line 73 "../../../../../src/options/arith_options"
+template <> const options::havePenalties__option_t::type& Options::operator[](options::havePenalties__option_t) const { return d_holder->havePenalties; }
+#line 73 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::havePenalties__option_t) const { return d_holder->havePenalties__setByUser__; }
+#line 77 "../../../../../src/options/arith_options"
+template <> void Options::set(options::useFC__option_t, const options::useFC__option_t::type& x) { d_holder->useFC = x; }
+#line 77 "../../../../../src/options/arith_options"
+template <> const options::useFC__option_t::type& Options::operator[](options::useFC__option_t) const { return d_holder->useFC; }
+#line 77 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::useFC__option_t) const { return d_holder->useFC__setByUser__; }
+#line 80 "../../../../../src/options/arith_options"
+template <> void Options::set(options::useSOI__option_t, const options::useSOI__option_t::type& x) { d_holder->useSOI = x; }
+#line 80 "../../../../../src/options/arith_options"
+template <> const options::useSOI__option_t::type& Options::operator[](options::useSOI__option_t) const { return d_holder->useSOI; }
+#line 80 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::useSOI__option_t) const { return d_holder->useSOI__setByUser__; }
+#line 83 "../../../../../src/options/arith_options"
+template <> void Options::set(options::restrictedPivots__option_t, const options::restrictedPivots__option_t::type& x) { d_holder->restrictedPivots = x; }
+#line 83 "../../../../../src/options/arith_options"
+template <> const options::restrictedPivots__option_t::type& Options::operator[](options::restrictedPivots__option_t) const { return d_holder->restrictedPivots; }
+#line 83 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::restrictedPivots__option_t) const { return d_holder->restrictedPivots__setByUser__; }
+#line 86 "../../../../../src/options/arith_options"
+template <> void Options::set(options::collectPivots__option_t, const options::collectPivots__option_t::type& x) { d_holder->collectPivots = x; }
+#line 86 "../../../../../src/options/arith_options"
+template <> const options::collectPivots__option_t::type& Options::operator[](options::collectPivots__option_t) const { return d_holder->collectPivots; }
+#line 86 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::collectPivots__option_t) const { return d_holder->collectPivots__setByUser__; }
+#line 89 "../../../../../src/options/arith_options"
+template <> void Options::set(options::useApprox__option_t, const options::useApprox__option_t::type& x) { d_holder->useApprox = x; }
+#line 89 "../../../../../src/options/arith_options"
+template <> const options::useApprox__option_t::type& Options::operator[](options::useApprox__option_t) const { return d_holder->useApprox; }
+#line 89 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::useApprox__option_t) const { return d_holder->useApprox__setByUser__; }
+#line 92 "../../../../../src/options/arith_options"
+template <> void Options::set(options::maxApproxDepth__option_t, const options::maxApproxDepth__option_t::type& x) { d_holder->maxApproxDepth = x; }
+#line 92 "../../../../../src/options/arith_options"
+template <> const options::maxApproxDepth__option_t::type& Options::operator[](options::maxApproxDepth__option_t) const { return d_holder->maxApproxDepth; }
+#line 92 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::maxApproxDepth__option_t) const { return d_holder->maxApproxDepth__setByUser__; }
+#line 95 "../../../../../src/options/arith_options"
+template <> void Options::set(options::exportDioDecompositions__option_t, const options::exportDioDecompositions__option_t::type& x) { d_holder->exportDioDecompositions = x; }
+#line 95 "../../../../../src/options/arith_options"
+template <> const options::exportDioDecompositions__option_t::type& Options::operator[](options::exportDioDecompositions__option_t) const { return d_holder->exportDioDecompositions; }
+#line 95 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::exportDioDecompositions__option_t) const { return d_holder->exportDioDecompositions__setByUser__; }
+#line 98 "../../../../../src/options/arith_options"
+template <> void Options::set(options::newProp__option_t, const options::newProp__option_t::type& x) { d_holder->newProp = x; }
+#line 98 "../../../../../src/options/arith_options"
+template <> const options::newProp__option_t::type& Options::operator[](options::newProp__option_t) const { return d_holder->newProp; }
+#line 98 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::newProp__option_t) const { return d_holder->newProp__setByUser__; }
+#line 101 "../../../../../src/options/arith_options"
+template <> void Options::set(options::arithPropAsLemmaLength__option_t, const options::arithPropAsLemmaLength__option_t::type& x) { d_holder->arithPropAsLemmaLength = x; }
+#line 101 "../../../../../src/options/arith_options"
+template <> const options::arithPropAsLemmaLength__option_t::type& Options::operator[](options::arithPropAsLemmaLength__option_t) const { return d_holder->arithPropAsLemmaLength; }
+#line 101 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithPropAsLemmaLength__option_t) const { return d_holder->arithPropAsLemmaLength__setByUser__; }
+#line 104 "../../../../../src/options/arith_options"
+template <> void Options::set(options::soiQuickExplain__option_t, const options::soiQuickExplain__option_t::type& x) { d_holder->soiQuickExplain = x; }
+#line 104 "../../../../../src/options/arith_options"
+template <> const options::soiQuickExplain__option_t::type& Options::operator[](options::soiQuickExplain__option_t) const { return d_holder->soiQuickExplain; }
+#line 104 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::soiQuickExplain__option_t) const { return d_holder->soiQuickExplain__setByUser__; }
+#line 107 "../../../../../src/options/arith_options"
+template <> void Options::set(options::rewriteDivk__option_t, const options::rewriteDivk__option_t::type& x) { d_holder->rewriteDivk = x; }
+#line 107 "../../../../../src/options/arith_options"
+template <> const options::rewriteDivk__option_t::type& Options::operator[](options::rewriteDivk__option_t) const { return d_holder->rewriteDivk; }
+#line 107 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::rewriteDivk__option_t) const { return d_holder->rewriteDivk__setByUser__; }
+#line 110 "../../../../../src/options/arith_options"
+template <> const options::trySolveIntStandardEffort__option_t::type& Options::operator[](options::trySolveIntStandardEffort__option_t) const { return d_holder->trySolveIntStandardEffort; }
+#line 110 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::trySolveIntStandardEffort__option_t) const { return d_holder->trySolveIntStandardEffort__setByUser__; }
+#line 113 "../../../../../src/options/arith_options"
+template <> const options::replayFailureLemma__option_t::type& Options::operator[](options::replayFailureLemma__option_t) const { return d_holder->replayFailureLemma; }
+#line 113 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::replayFailureLemma__option_t) const { return d_holder->replayFailureLemma__setByUser__; }
+#line 116 "../../../../../src/options/arith_options"
+template <> const options::dioSolverTurns__option_t::type& Options::operator[](options::dioSolverTurns__option_t) const { return d_holder->dioSolverTurns; }
+#line 116 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::dioSolverTurns__option_t) const { return d_holder->dioSolverTurns__setByUser__; }
+#line 119 "../../../../../src/options/arith_options"
+template <> const options::rrTurns__option_t::type& Options::operator[](options::rrTurns__option_t) const { return d_holder->rrTurns; }
+#line 119 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::rrTurns__option_t) const { return d_holder->rrTurns__setByUser__; }
+#line 122 "../../../../../src/options/arith_options"
+template <> const options::dioRepeat__option_t::type& Options::operator[](options::dioRepeat__option_t) const { return d_holder->dioRepeat; }
+#line 122 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::dioRepeat__option_t) const { return d_holder->dioRepeat__setByUser__; }
+#line 125 "../../../../../src/options/arith_options"
+template <> const options::replayEarlyCloseDepths__option_t::type& Options::operator[](options::replayEarlyCloseDepths__option_t) const { return d_holder->replayEarlyCloseDepths; }
+#line 125 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::replayEarlyCloseDepths__option_t) const { return d_holder->replayEarlyCloseDepths__setByUser__; }
+#line 128 "../../../../../src/options/arith_options"
+template <> const options::replayFailurePenalty__option_t::type& Options::operator[](options::replayFailurePenalty__option_t) const { return d_holder->replayFailurePenalty; }
+#line 128 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::replayFailurePenalty__option_t) const { return d_holder->replayFailurePenalty__setByUser__; }
+#line 131 "../../../../../src/options/arith_options"
+template <> const options::replayNumericFailurePenalty__option_t::type& Options::operator[](options::replayNumericFailurePenalty__option_t) const { return d_holder->replayNumericFailurePenalty; }
+#line 131 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::replayNumericFailurePenalty__option_t) const { return d_holder->replayNumericFailurePenalty__setByUser__; }
+#line 134 "../../../../../src/options/arith_options"
+template <> const options::replayRejectCutSize__option_t::type& Options::operator[](options::replayRejectCutSize__option_t) const { return d_holder->replayRejectCutSize; }
+#line 134 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::replayRejectCutSize__option_t) const { return d_holder->replayRejectCutSize__setByUser__; }
+#line 137 "../../../../../src/options/arith_options"
+template <> const options::lemmaRejectCutSize__option_t::type& Options::operator[](options::lemmaRejectCutSize__option_t) const { return d_holder->lemmaRejectCutSize; }
+#line 137 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::lemmaRejectCutSize__option_t) const { return d_holder->lemmaRejectCutSize__setByUser__; }
+#line 140 "../../../../../src/options/arith_options"
+template <> const options::soiApproxMajorFailure__option_t::type& Options::operator[](options::soiApproxMajorFailure__option_t) const { return d_holder->soiApproxMajorFailure; }
+#line 140 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::soiApproxMajorFailure__option_t) const { return d_holder->soiApproxMajorFailure__setByUser__; }
+#line 143 "../../../../../src/options/arith_options"
+template <> const options::soiApproxMajorFailurePen__option_t::type& Options::operator[](options::soiApproxMajorFailurePen__option_t) const { return d_holder->soiApproxMajorFailurePen; }
+#line 143 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::soiApproxMajorFailurePen__option_t) const { return d_holder->soiApproxMajorFailurePen__setByUser__; }
+#line 146 "../../../../../src/options/arith_options"
+template <> const options::soiApproxMinorFailure__option_t::type& Options::operator[](options::soiApproxMinorFailure__option_t) const { return d_holder->soiApproxMinorFailure; }
+#line 146 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::soiApproxMinorFailure__option_t) const { return d_holder->soiApproxMinorFailure__setByUser__; }
+#line 149 "../../../../../src/options/arith_options"
+template <> const options::soiApproxMinorFailurePen__option_t::type& Options::operator[](options::soiApproxMinorFailurePen__option_t) const { return d_holder->soiApproxMinorFailurePen; }
+#line 149 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::soiApproxMinorFailurePen__option_t) const { return d_holder->soiApproxMinorFailurePen__setByUser__; }
+#line 152 "../../../../../src/options/arith_options"
+template <> const options::ppAssertMaxSubSize__option_t::type& Options::operator[](options::ppAssertMaxSubSize__option_t) const { return d_holder->ppAssertMaxSubSize; }
+#line 152 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::ppAssertMaxSubSize__option_t) const { return d_holder->ppAssertMaxSubSize__setByUser__; }
+#line 155 "../../../../../src/options/arith_options"
+template <> const options::maxReplayTree__option_t::type& Options::operator[](options::maxReplayTree__option_t) const { return d_holder->maxReplayTree; }
+#line 155 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::maxReplayTree__option_t) const { return d_holder->maxReplayTree__setByUser__; }
+#line 159 "../../../../../src/options/arith_options"
+template <> const options::pbRewrites__option_t::type& Options::operator[](options::pbRewrites__option_t) const { return d_holder->pbRewrites; }
+#line 159 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::pbRewrites__option_t) const { return d_holder->pbRewrites__setByUser__; }
+#line 162 "../../../../../src/options/arith_options"
+template <> const options::pbRewriteThreshold__option_t::type& Options::operator[](options::pbRewriteThreshold__option_t) const { return d_holder->pbRewriteThreshold; }
+#line 162 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::pbRewriteThreshold__option_t) const { return d_holder->pbRewriteThreshold__setByUser__; }
+#line 165 "../../../../../src/options/arith_options"
+template <> const options::sNormInferEq__option_t::type& Options::operator[](options::sNormInferEq__option_t) const { return d_holder->sNormInferEq; }
+#line 165 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::sNormInferEq__option_t) const { return d_holder->sNormInferEq__setByUser__; }
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/arith_options"
+struct arithUnateLemmaMode__option_t arithUnateLemmaMode;
+#line 11 "../../../../../src/options/arith_options"
+struct arithPropagationMode__option_t arithPropagationMode;
+#line 18 "../../../../../src/options/arith_options"
+struct arithHeuristicPivots__option_t arithHeuristicPivots;
+#line 25 "../../../../../src/options/arith_options"
+struct arithStandardCheckVarOrderPivots__option_t arithStandardCheckVarOrderPivots;
+#line 28 "../../../../../src/options/arith_options"
+struct arithErrorSelectionRule__option_t arithErrorSelectionRule;
+#line 32 "../../../../../src/options/arith_options"
+struct arithSimplexCheckPeriod__option_t arithSimplexCheckPeriod;
+#line 39 "../../../../../src/options/arith_options"
+struct arithPivotThreshold__option_t arithPivotThreshold;
+#line 42 "../../../../../src/options/arith_options"
+struct arithPropagateMaxLength__option_t arithPropagateMaxLength;
+#line 45 "../../../../../src/options/arith_options"
+struct arithDioSolver__option_t arithDioSolver;
+#line 51 "../../../../../src/options/arith_options"
+struct arithRewriteEq__option_t arithRewriteEq;
+#line 56 "../../../../../src/options/arith_options"
+struct arithMLTrick__option_t arithMLTrick;
+#line 60 "../../../../../src/options/arith_options"
+struct arithMLTrickSubstitutions__option_t arithMLTrickSubstitutions;
+#line 63 "../../../../../src/options/arith_options"
+struct doCutAllBounded__option_t doCutAllBounded;
+#line 67 "../../../../../src/options/arith_options"
+struct maxCutsInContext__option_t maxCutsInContext;
+#line 70 "../../../../../src/options/arith_options"
+struct revertArithModels__option_t revertArithModels;
+#line 73 "../../../../../src/options/arith_options"
+struct havePenalties__option_t havePenalties;
+#line 77 "../../../../../src/options/arith_options"
+struct useFC__option_t useFC;
+#line 80 "../../../../../src/options/arith_options"
+struct useSOI__option_t useSOI;
+#line 83 "../../../../../src/options/arith_options"
+struct restrictedPivots__option_t restrictedPivots;
+#line 86 "../../../../../src/options/arith_options"
+struct collectPivots__option_t collectPivots;
+#line 89 "../../../../../src/options/arith_options"
+struct useApprox__option_t useApprox;
+#line 92 "../../../../../src/options/arith_options"
+struct maxApproxDepth__option_t maxApproxDepth;
+#line 95 "../../../../../src/options/arith_options"
+struct exportDioDecompositions__option_t exportDioDecompositions;
+#line 98 "../../../../../src/options/arith_options"
+struct newProp__option_t newProp;
+#line 101 "../../../../../src/options/arith_options"
+struct arithPropAsLemmaLength__option_t arithPropAsLemmaLength;
+#line 104 "../../../../../src/options/arith_options"
+struct soiQuickExplain__option_t soiQuickExplain;
+#line 107 "../../../../../src/options/arith_options"
+struct rewriteDivk__option_t rewriteDivk;
+#line 110 "../../../../../src/options/arith_options"
+struct trySolveIntStandardEffort__option_t trySolveIntStandardEffort;
+#line 113 "../../../../../src/options/arith_options"
+struct replayFailureLemma__option_t replayFailureLemma;
+#line 116 "../../../../../src/options/arith_options"
+struct dioSolverTurns__option_t dioSolverTurns;
+#line 119 "../../../../../src/options/arith_options"
+struct rrTurns__option_t rrTurns;
+#line 122 "../../../../../src/options/arith_options"
+struct dioRepeat__option_t dioRepeat;
+#line 125 "../../../../../src/options/arith_options"
+struct replayEarlyCloseDepths__option_t replayEarlyCloseDepths;
+#line 128 "../../../../../src/options/arith_options"
+struct replayFailurePenalty__option_t replayFailurePenalty;
+#line 131 "../../../../../src/options/arith_options"
+struct replayNumericFailurePenalty__option_t replayNumericFailurePenalty;
+#line 134 "../../../../../src/options/arith_options"
+struct replayRejectCutSize__option_t replayRejectCutSize;
+#line 137 "../../../../../src/options/arith_options"
+struct lemmaRejectCutSize__option_t lemmaRejectCutSize;
+#line 140 "../../../../../src/options/arith_options"
+struct soiApproxMajorFailure__option_t soiApproxMajorFailure;
+#line 143 "../../../../../src/options/arith_options"
+struct soiApproxMajorFailurePen__option_t soiApproxMajorFailurePen;
+#line 146 "../../../../../src/options/arith_options"
+struct soiApproxMinorFailure__option_t soiApproxMinorFailure;
+#line 149 "../../../../../src/options/arith_options"
+struct soiApproxMinorFailurePen__option_t soiApproxMinorFailurePen;
+#line 152 "../../../../../src/options/arith_options"
+struct ppAssertMaxSubSize__option_t ppAssertMaxSubSize;
+#line 155 "../../../../../src/options/arith_options"
+struct maxReplayTree__option_t maxReplayTree;
+#line 159 "../../../../../src/options/arith_options"
+struct pbRewrites__option_t pbRewrites;
+#line 162 "../../../../../src/options/arith_options"
+struct pbRewriteThreshold__option_t pbRewriteThreshold;
+#line 165 "../../../../../src/options/arith_options"
+struct sNormInferEq__option_t sNormInferEq;
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/arith_options.h b/src/options/arith_options.h
new file mode 100644
index 0000000..b1de166
--- /dev/null
+++ b/src/options/arith_options.h
@@ -0,0 +1,818 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__ARITH_H
+#define __CVC4__OPTIONS__ARITH_H
+
+#include "options/options.h"
+
+#line 8 "../../../../../src/options/arith_options"
+#include "options/arith_unate_lemma_mode.h"
+#line 11 "../../../../../src/options/arith_options"
+#include "options/arith_propagation_mode.h"
+#line 28 "../../../../../src/options/arith_options"
+#include "options/arith_heuristic_pivot_rule.h"
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__ARITH__FOR_OPTION_HOLDER \
+  arithUnateLemmaMode__option_t::type arithUnateLemmaMode; \
+  bool arithUnateLemmaMode__setByUser__; \
+  arithPropagationMode__option_t::type arithPropagationMode; \
+  bool arithPropagationMode__setByUser__; \
+  arithHeuristicPivots__option_t::type arithHeuristicPivots; \
+  bool arithHeuristicPivots__setByUser__; \
+  arithStandardCheckVarOrderPivots__option_t::type arithStandardCheckVarOrderPivots; \
+  bool arithStandardCheckVarOrderPivots__setByUser__; \
+  arithErrorSelectionRule__option_t::type arithErrorSelectionRule; \
+  bool arithErrorSelectionRule__setByUser__; \
+  arithSimplexCheckPeriod__option_t::type arithSimplexCheckPeriod; \
+  bool arithSimplexCheckPeriod__setByUser__; \
+  arithPivotThreshold__option_t::type arithPivotThreshold; \
+  bool arithPivotThreshold__setByUser__; \
+  arithPropagateMaxLength__option_t::type arithPropagateMaxLength; \
+  bool arithPropagateMaxLength__setByUser__; \
+  arithDioSolver__option_t::type arithDioSolver; \
+  bool arithDioSolver__setByUser__; \
+  arithRewriteEq__option_t::type arithRewriteEq; \
+  bool arithRewriteEq__setByUser__; \
+  arithMLTrick__option_t::type arithMLTrick; \
+  bool arithMLTrick__setByUser__; \
+  arithMLTrickSubstitutions__option_t::type arithMLTrickSubstitutions; \
+  bool arithMLTrickSubstitutions__setByUser__; \
+  doCutAllBounded__option_t::type doCutAllBounded; \
+  bool doCutAllBounded__setByUser__; \
+  maxCutsInContext__option_t::type maxCutsInContext; \
+  bool maxCutsInContext__setByUser__; \
+  revertArithModels__option_t::type revertArithModels; \
+  bool revertArithModels__setByUser__; \
+  havePenalties__option_t::type havePenalties; \
+  bool havePenalties__setByUser__; \
+  useFC__option_t::type useFC; \
+  bool useFC__setByUser__; \
+  useSOI__option_t::type useSOI; \
+  bool useSOI__setByUser__; \
+  restrictedPivots__option_t::type restrictedPivots; \
+  bool restrictedPivots__setByUser__; \
+  collectPivots__option_t::type collectPivots; \
+  bool collectPivots__setByUser__; \
+  useApprox__option_t::type useApprox; \
+  bool useApprox__setByUser__; \
+  maxApproxDepth__option_t::type maxApproxDepth; \
+  bool maxApproxDepth__setByUser__; \
+  exportDioDecompositions__option_t::type exportDioDecompositions; \
+  bool exportDioDecompositions__setByUser__; \
+  newProp__option_t::type newProp; \
+  bool newProp__setByUser__; \
+  arithPropAsLemmaLength__option_t::type arithPropAsLemmaLength; \
+  bool arithPropAsLemmaLength__setByUser__; \
+  soiQuickExplain__option_t::type soiQuickExplain; \
+  bool soiQuickExplain__setByUser__; \
+  rewriteDivk__option_t::type rewriteDivk; \
+  bool rewriteDivk__setByUser__; \
+  trySolveIntStandardEffort__option_t::type trySolveIntStandardEffort; \
+  bool trySolveIntStandardEffort__setByUser__; \
+  replayFailureLemma__option_t::type replayFailureLemma; \
+  bool replayFailureLemma__setByUser__; \
+  dioSolverTurns__option_t::type dioSolverTurns; \
+  bool dioSolverTurns__setByUser__; \
+  rrTurns__option_t::type rrTurns; \
+  bool rrTurns__setByUser__; \
+  dioRepeat__option_t::type dioRepeat; \
+  bool dioRepeat__setByUser__; \
+  replayEarlyCloseDepths__option_t::type replayEarlyCloseDepths; \
+  bool replayEarlyCloseDepths__setByUser__; \
+  replayFailurePenalty__option_t::type replayFailurePenalty; \
+  bool replayFailurePenalty__setByUser__; \
+  replayNumericFailurePenalty__option_t::type replayNumericFailurePenalty; \
+  bool replayNumericFailurePenalty__setByUser__; \
+  replayRejectCutSize__option_t::type replayRejectCutSize; \
+  bool replayRejectCutSize__setByUser__; \
+  lemmaRejectCutSize__option_t::type lemmaRejectCutSize; \
+  bool lemmaRejectCutSize__setByUser__; \
+  soiApproxMajorFailure__option_t::type soiApproxMajorFailure; \
+  bool soiApproxMajorFailure__setByUser__; \
+  soiApproxMajorFailurePen__option_t::type soiApproxMajorFailurePen; \
+  bool soiApproxMajorFailurePen__setByUser__; \
+  soiApproxMinorFailure__option_t::type soiApproxMinorFailure; \
+  bool soiApproxMinorFailure__setByUser__; \
+  soiApproxMinorFailurePen__option_t::type soiApproxMinorFailurePen; \
+  bool soiApproxMinorFailurePen__setByUser__; \
+  ppAssertMaxSubSize__option_t::type ppAssertMaxSubSize; \
+  bool ppAssertMaxSubSize__setByUser__; \
+  maxReplayTree__option_t::type maxReplayTree; \
+  bool maxReplayTree__setByUser__; \
+  pbRewrites__option_t::type pbRewrites; \
+  bool pbRewrites__setByUser__; \
+  pbRewriteThreshold__option_t::type pbRewriteThreshold; \
+  bool pbRewriteThreshold__setByUser__; \
+  sNormInferEq__option_t::type sNormInferEq; \
+  bool sNormInferEq__setByUser__;
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC arithUnateLemmaMode__option_t { typedef ArithUnateLemmaMode type; type operator()() const; bool wasSetByUser() const; } arithUnateLemmaMode CVC4_PUBLIC;
+#line 11 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC arithPropagationMode__option_t { typedef ArithPropagationMode type; type operator()() const; bool wasSetByUser() const; } arithPropagationMode CVC4_PUBLIC;
+#line 18 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC arithHeuristicPivots__option_t { typedef int16_t type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arithHeuristicPivots CVC4_PUBLIC;
+#line 25 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC arithStandardCheckVarOrderPivots__option_t { typedef int16_t type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arithStandardCheckVarOrderPivots CVC4_PUBLIC;
+#line 28 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC arithErrorSelectionRule__option_t { typedef ErrorSelectionRule type; type operator()() const; bool wasSetByUser() const; } arithErrorSelectionRule CVC4_PUBLIC;
+#line 32 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC arithSimplexCheckPeriod__option_t { typedef uint16_t type; type operator()() const; bool wasSetByUser() const; } arithSimplexCheckPeriod CVC4_PUBLIC;
+#line 39 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC arithPivotThreshold__option_t { typedef uint16_t type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arithPivotThreshold CVC4_PUBLIC;
+#line 42 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC arithPropagateMaxLength__option_t { typedef uint16_t type; type operator()() const; bool wasSetByUser() const; } arithPropagateMaxLength CVC4_PUBLIC;
+#line 45 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC arithDioSolver__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } arithDioSolver CVC4_PUBLIC;
+#line 51 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC arithRewriteEq__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arithRewriteEq CVC4_PUBLIC;
+#line 56 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC arithMLTrick__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } arithMLTrick CVC4_PUBLIC;
+#line 60 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC arithMLTrickSubstitutions__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } arithMLTrickSubstitutions CVC4_PUBLIC;
+#line 63 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC doCutAllBounded__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } doCutAllBounded CVC4_PUBLIC;
+#line 67 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC maxCutsInContext__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } maxCutsInContext CVC4_PUBLIC;
+#line 70 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC revertArithModels__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } revertArithModels CVC4_PUBLIC;
+#line 73 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC havePenalties__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } havePenalties CVC4_PUBLIC;
+#line 77 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC useFC__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } useFC CVC4_PUBLIC;
+#line 80 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC useSOI__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } useSOI CVC4_PUBLIC;
+#line 83 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC restrictedPivots__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } restrictedPivots CVC4_PUBLIC;
+#line 86 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC collectPivots__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } collectPivots CVC4_PUBLIC;
+#line 89 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC useApprox__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } useApprox CVC4_PUBLIC;
+#line 92 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC maxApproxDepth__option_t { typedef int16_t type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } maxApproxDepth CVC4_PUBLIC;
+#line 95 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC exportDioDecompositions__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } exportDioDecompositions CVC4_PUBLIC;
+#line 98 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC newProp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } newProp CVC4_PUBLIC;
+#line 101 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC arithPropAsLemmaLength__option_t { typedef uint16_t type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arithPropAsLemmaLength CVC4_PUBLIC;
+#line 104 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC soiQuickExplain__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } soiQuickExplain CVC4_PUBLIC;
+#line 107 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC rewriteDivk__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } rewriteDivk CVC4_PUBLIC;
+#line 110 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC trySolveIntStandardEffort__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } trySolveIntStandardEffort CVC4_PUBLIC;
+#line 113 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC replayFailureLemma__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } replayFailureLemma CVC4_PUBLIC;
+#line 116 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC dioSolverTurns__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } dioSolverTurns CVC4_PUBLIC;
+#line 119 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC rrTurns__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } rrTurns CVC4_PUBLIC;
+#line 122 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC dioRepeat__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dioRepeat CVC4_PUBLIC;
+#line 125 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC replayEarlyCloseDepths__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } replayEarlyCloseDepths CVC4_PUBLIC;
+#line 128 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC replayFailurePenalty__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } replayFailurePenalty CVC4_PUBLIC;
+#line 131 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC replayNumericFailurePenalty__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } replayNumericFailurePenalty CVC4_PUBLIC;
+#line 134 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC replayRejectCutSize__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } replayRejectCutSize CVC4_PUBLIC;
+#line 137 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC lemmaRejectCutSize__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } lemmaRejectCutSize CVC4_PUBLIC;
+#line 140 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC soiApproxMajorFailure__option_t { typedef double type; type operator()() const; bool wasSetByUser() const; } soiApproxMajorFailure CVC4_PUBLIC;
+#line 143 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC soiApproxMajorFailurePen__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } soiApproxMajorFailurePen CVC4_PUBLIC;
+#line 146 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC soiApproxMinorFailure__option_t { typedef double type; type operator()() const; bool wasSetByUser() const; } soiApproxMinorFailure CVC4_PUBLIC;
+#line 149 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC soiApproxMinorFailurePen__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } soiApproxMinorFailurePen CVC4_PUBLIC;
+#line 152 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC ppAssertMaxSubSize__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } ppAssertMaxSubSize CVC4_PUBLIC;
+#line 155 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC maxReplayTree__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } maxReplayTree CVC4_PUBLIC;
+#line 159 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC pbRewrites__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } pbRewrites CVC4_PUBLIC;
+#line 162 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC pbRewriteThreshold__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } pbRewriteThreshold CVC4_PUBLIC;
+#line 165 "../../../../../src/options/arith_options"
+extern struct CVC4_PUBLIC sNormInferEq__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sNormInferEq CVC4_PUBLIC;
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+#line 8 "../../../../../src/options/arith_options"
+template <> const options::arithUnateLemmaMode__option_t::type& Options::operator[](options::arithUnateLemmaMode__option_t) const;
+#line 8 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithUnateLemmaMode__option_t) const;
+#line 8 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::arithUnateLemmaMode__option_t, std::string option, std::string value);
+#line 11 "../../../../../src/options/arith_options"
+template <> const options::arithPropagationMode__option_t::type& Options::operator[](options::arithPropagationMode__option_t) const;
+#line 11 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithPropagationMode__option_t) const;
+#line 11 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::arithPropagationMode__option_t, std::string option, std::string value);
+#line 18 "../../../../../src/options/arith_options"
+template <> void Options::set(options::arithHeuristicPivots__option_t, const options::arithHeuristicPivots__option_t::type& x);
+#line 18 "../../../../../src/options/arith_options"
+template <> const options::arithHeuristicPivots__option_t::type& Options::operator[](options::arithHeuristicPivots__option_t) const;
+#line 18 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithHeuristicPivots__option_t) const;
+#line 18 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::arithHeuristicPivots__option_t, std::string option, std::string value);
+#line 25 "../../../../../src/options/arith_options"
+template <> void Options::set(options::arithStandardCheckVarOrderPivots__option_t, const options::arithStandardCheckVarOrderPivots__option_t::type& x);
+#line 25 "../../../../../src/options/arith_options"
+template <> const options::arithStandardCheckVarOrderPivots__option_t::type& Options::operator[](options::arithStandardCheckVarOrderPivots__option_t) const;
+#line 25 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithStandardCheckVarOrderPivots__option_t) const;
+#line 25 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::arithStandardCheckVarOrderPivots__option_t, std::string option, std::string value);
+#line 28 "../../../../../src/options/arith_options"
+template <> const options::arithErrorSelectionRule__option_t::type& Options::operator[](options::arithErrorSelectionRule__option_t) const;
+#line 28 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithErrorSelectionRule__option_t) const;
+#line 28 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::arithErrorSelectionRule__option_t, std::string option, std::string value);
+#line 32 "../../../../../src/options/arith_options"
+template <> const options::arithSimplexCheckPeriod__option_t::type& Options::operator[](options::arithSimplexCheckPeriod__option_t) const;
+#line 32 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithSimplexCheckPeriod__option_t) const;
+#line 32 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::arithSimplexCheckPeriod__option_t, std::string option, std::string value);
+#line 39 "../../../../../src/options/arith_options"
+template <> void Options::set(options::arithPivotThreshold__option_t, const options::arithPivotThreshold__option_t::type& x);
+#line 39 "../../../../../src/options/arith_options"
+template <> const options::arithPivotThreshold__option_t::type& Options::operator[](options::arithPivotThreshold__option_t) const;
+#line 39 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithPivotThreshold__option_t) const;
+#line 39 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::arithPivotThreshold__option_t, std::string option, std::string value);
+#line 42 "../../../../../src/options/arith_options"
+template <> const options::arithPropagateMaxLength__option_t::type& Options::operator[](options::arithPropagateMaxLength__option_t) const;
+#line 42 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithPropagateMaxLength__option_t) const;
+#line 42 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::arithPropagateMaxLength__option_t, std::string option, std::string value);
+#line 45 "../../../../../src/options/arith_options"
+template <> const options::arithDioSolver__option_t::type& Options::operator[](options::arithDioSolver__option_t) const;
+#line 45 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithDioSolver__option_t) const;
+#line 45 "../../../../../src/options/arith_options"
+template <> void Options::assignBool(options::arithDioSolver__option_t, std::string option, bool value);
+#line 51 "../../../../../src/options/arith_options"
+template <> void Options::set(options::arithRewriteEq__option_t, const options::arithRewriteEq__option_t::type& x);
+#line 51 "../../../../../src/options/arith_options"
+template <> const options::arithRewriteEq__option_t::type& Options::operator[](options::arithRewriteEq__option_t) const;
+#line 51 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithRewriteEq__option_t) const;
+#line 51 "../../../../../src/options/arith_options"
+template <> void Options::assignBool(options::arithRewriteEq__option_t, std::string option, bool value);
+#line 56 "../../../../../src/options/arith_options"
+template <> const options::arithMLTrick__option_t::type& Options::operator[](options::arithMLTrick__option_t) const;
+#line 56 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithMLTrick__option_t) const;
+#line 56 "../../../../../src/options/arith_options"
+template <> void Options::assignBool(options::arithMLTrick__option_t, std::string option, bool value);
+#line 60 "../../../../../src/options/arith_options"
+template <> const options::arithMLTrickSubstitutions__option_t::type& Options::operator[](options::arithMLTrickSubstitutions__option_t) const;
+#line 60 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithMLTrickSubstitutions__option_t) const;
+#line 60 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::arithMLTrickSubstitutions__option_t, std::string option, std::string value);
+#line 63 "../../../../../src/options/arith_options"
+template <> void Options::set(options::doCutAllBounded__option_t, const options::doCutAllBounded__option_t::type& x);
+#line 63 "../../../../../src/options/arith_options"
+template <> const options::doCutAllBounded__option_t::type& Options::operator[](options::doCutAllBounded__option_t) const;
+#line 63 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::doCutAllBounded__option_t) const;
+#line 63 "../../../../../src/options/arith_options"
+template <> void Options::assignBool(options::doCutAllBounded__option_t, std::string option, bool value);
+#line 67 "../../../../../src/options/arith_options"
+template <> const options::maxCutsInContext__option_t::type& Options::operator[](options::maxCutsInContext__option_t) const;
+#line 67 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::maxCutsInContext__option_t) const;
+#line 67 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::maxCutsInContext__option_t, std::string option, std::string value);
+#line 70 "../../../../../src/options/arith_options"
+template <> const options::revertArithModels__option_t::type& Options::operator[](options::revertArithModels__option_t) const;
+#line 70 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::revertArithModels__option_t) const;
+#line 70 "../../../../../src/options/arith_options"
+template <> void Options::assignBool(options::revertArithModels__option_t, std::string option, bool value);
+#line 73 "../../../../../src/options/arith_options"
+template <> void Options::set(options::havePenalties__option_t, const options::havePenalties__option_t::type& x);
+#line 73 "../../../../../src/options/arith_options"
+template <> const options::havePenalties__option_t::type& Options::operator[](options::havePenalties__option_t) const;
+#line 73 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::havePenalties__option_t) const;
+#line 73 "../../../../../src/options/arith_options"
+template <> void Options::assignBool(options::havePenalties__option_t, std::string option, bool value);
+#line 77 "../../../../../src/options/arith_options"
+template <> void Options::set(options::useFC__option_t, const options::useFC__option_t::type& x);
+#line 77 "../../../../../src/options/arith_options"
+template <> const options::useFC__option_t::type& Options::operator[](options::useFC__option_t) const;
+#line 77 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::useFC__option_t) const;
+#line 77 "../../../../../src/options/arith_options"
+template <> void Options::assignBool(options::useFC__option_t, std::string option, bool value);
+#line 80 "../../../../../src/options/arith_options"
+template <> void Options::set(options::useSOI__option_t, const options::useSOI__option_t::type& x);
+#line 80 "../../../../../src/options/arith_options"
+template <> const options::useSOI__option_t::type& Options::operator[](options::useSOI__option_t) const;
+#line 80 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::useSOI__option_t) const;
+#line 80 "../../../../../src/options/arith_options"
+template <> void Options::assignBool(options::useSOI__option_t, std::string option, bool value);
+#line 83 "../../../../../src/options/arith_options"
+template <> void Options::set(options::restrictedPivots__option_t, const options::restrictedPivots__option_t::type& x);
+#line 83 "../../../../../src/options/arith_options"
+template <> const options::restrictedPivots__option_t::type& Options::operator[](options::restrictedPivots__option_t) const;
+#line 83 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::restrictedPivots__option_t) const;
+#line 83 "../../../../../src/options/arith_options"
+template <> void Options::assignBool(options::restrictedPivots__option_t, std::string option, bool value);
+#line 86 "../../../../../src/options/arith_options"
+template <> void Options::set(options::collectPivots__option_t, const options::collectPivots__option_t::type& x);
+#line 86 "../../../../../src/options/arith_options"
+template <> const options::collectPivots__option_t::type& Options::operator[](options::collectPivots__option_t) const;
+#line 86 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::collectPivots__option_t) const;
+#line 86 "../../../../../src/options/arith_options"
+template <> void Options::assignBool(options::collectPivots__option_t, std::string option, bool value);
+#line 89 "../../../../../src/options/arith_options"
+template <> void Options::set(options::useApprox__option_t, const options::useApprox__option_t::type& x);
+#line 89 "../../../../../src/options/arith_options"
+template <> const options::useApprox__option_t::type& Options::operator[](options::useApprox__option_t) const;
+#line 89 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::useApprox__option_t) const;
+#line 89 "../../../../../src/options/arith_options"
+template <> void Options::assignBool(options::useApprox__option_t, std::string option, bool value);
+#line 92 "../../../../../src/options/arith_options"
+template <> void Options::set(options::maxApproxDepth__option_t, const options::maxApproxDepth__option_t::type& x);
+#line 92 "../../../../../src/options/arith_options"
+template <> const options::maxApproxDepth__option_t::type& Options::operator[](options::maxApproxDepth__option_t) const;
+#line 92 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::maxApproxDepth__option_t) const;
+#line 92 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::maxApproxDepth__option_t, std::string option, std::string value);
+#line 95 "../../../../../src/options/arith_options"
+template <> void Options::set(options::exportDioDecompositions__option_t, const options::exportDioDecompositions__option_t::type& x);
+#line 95 "../../../../../src/options/arith_options"
+template <> const options::exportDioDecompositions__option_t::type& Options::operator[](options::exportDioDecompositions__option_t) const;
+#line 95 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::exportDioDecompositions__option_t) const;
+#line 95 "../../../../../src/options/arith_options"
+template <> void Options::assignBool(options::exportDioDecompositions__option_t, std::string option, bool value);
+#line 98 "../../../../../src/options/arith_options"
+template <> void Options::set(options::newProp__option_t, const options::newProp__option_t::type& x);
+#line 98 "../../../../../src/options/arith_options"
+template <> const options::newProp__option_t::type& Options::operator[](options::newProp__option_t) const;
+#line 98 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::newProp__option_t) const;
+#line 98 "../../../../../src/options/arith_options"
+template <> void Options::assignBool(options::newProp__option_t, std::string option, bool value);
+#line 101 "../../../../../src/options/arith_options"
+template <> void Options::set(options::arithPropAsLemmaLength__option_t, const options::arithPropAsLemmaLength__option_t::type& x);
+#line 101 "../../../../../src/options/arith_options"
+template <> const options::arithPropAsLemmaLength__option_t::type& Options::operator[](options::arithPropAsLemmaLength__option_t) const;
+#line 101 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::arithPropAsLemmaLength__option_t) const;
+#line 101 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::arithPropAsLemmaLength__option_t, std::string option, std::string value);
+#line 104 "../../../../../src/options/arith_options"
+template <> void Options::set(options::soiQuickExplain__option_t, const options::soiQuickExplain__option_t::type& x);
+#line 104 "../../../../../src/options/arith_options"
+template <> const options::soiQuickExplain__option_t::type& Options::operator[](options::soiQuickExplain__option_t) const;
+#line 104 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::soiQuickExplain__option_t) const;
+#line 104 "../../../../../src/options/arith_options"
+template <> void Options::assignBool(options::soiQuickExplain__option_t, std::string option, bool value);
+#line 107 "../../../../../src/options/arith_options"
+template <> void Options::set(options::rewriteDivk__option_t, const options::rewriteDivk__option_t::type& x);
+#line 107 "../../../../../src/options/arith_options"
+template <> const options::rewriteDivk__option_t::type& Options::operator[](options::rewriteDivk__option_t) const;
+#line 107 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::rewriteDivk__option_t) const;
+#line 107 "../../../../../src/options/arith_options"
+template <> void Options::assignBool(options::rewriteDivk__option_t, std::string option, bool value);
+#line 110 "../../../../../src/options/arith_options"
+template <> const options::trySolveIntStandardEffort__option_t::type& Options::operator[](options::trySolveIntStandardEffort__option_t) const;
+#line 110 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::trySolveIntStandardEffort__option_t) const;
+#line 110 "../../../../../src/options/arith_options"
+template <> void Options::assignBool(options::trySolveIntStandardEffort__option_t, std::string option, bool value);
+#line 113 "../../../../../src/options/arith_options"
+template <> const options::replayFailureLemma__option_t::type& Options::operator[](options::replayFailureLemma__option_t) const;
+#line 113 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::replayFailureLemma__option_t) const;
+#line 113 "../../../../../src/options/arith_options"
+template <> void Options::assignBool(options::replayFailureLemma__option_t, std::string option, bool value);
+#line 116 "../../../../../src/options/arith_options"
+template <> const options::dioSolverTurns__option_t::type& Options::operator[](options::dioSolverTurns__option_t) const;
+#line 116 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::dioSolverTurns__option_t) const;
+#line 116 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::dioSolverTurns__option_t, std::string option, std::string value);
+#line 119 "../../../../../src/options/arith_options"
+template <> const options::rrTurns__option_t::type& Options::operator[](options::rrTurns__option_t) const;
+#line 119 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::rrTurns__option_t) const;
+#line 119 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::rrTurns__option_t, std::string option, std::string value);
+#line 122 "../../../../../src/options/arith_options"
+template <> const options::dioRepeat__option_t::type& Options::operator[](options::dioRepeat__option_t) const;
+#line 122 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::dioRepeat__option_t) const;
+#line 122 "../../../../../src/options/arith_options"
+template <> void Options::assignBool(options::dioRepeat__option_t, std::string option, bool value);
+#line 125 "../../../../../src/options/arith_options"
+template <> const options::replayEarlyCloseDepths__option_t::type& Options::operator[](options::replayEarlyCloseDepths__option_t) const;
+#line 125 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::replayEarlyCloseDepths__option_t) const;
+#line 125 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::replayEarlyCloseDepths__option_t, std::string option, std::string value);
+#line 128 "../../../../../src/options/arith_options"
+template <> const options::replayFailurePenalty__option_t::type& Options::operator[](options::replayFailurePenalty__option_t) const;
+#line 128 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::replayFailurePenalty__option_t) const;
+#line 128 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::replayFailurePenalty__option_t, std::string option, std::string value);
+#line 131 "../../../../../src/options/arith_options"
+template <> const options::replayNumericFailurePenalty__option_t::type& Options::operator[](options::replayNumericFailurePenalty__option_t) const;
+#line 131 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::replayNumericFailurePenalty__option_t) const;
+#line 131 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::replayNumericFailurePenalty__option_t, std::string option, std::string value);
+#line 134 "../../../../../src/options/arith_options"
+template <> const options::replayRejectCutSize__option_t::type& Options::operator[](options::replayRejectCutSize__option_t) const;
+#line 134 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::replayRejectCutSize__option_t) const;
+#line 134 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::replayRejectCutSize__option_t, std::string option, std::string value);
+#line 137 "../../../../../src/options/arith_options"
+template <> const options::lemmaRejectCutSize__option_t::type& Options::operator[](options::lemmaRejectCutSize__option_t) const;
+#line 137 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::lemmaRejectCutSize__option_t) const;
+#line 137 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::lemmaRejectCutSize__option_t, std::string option, std::string value);
+#line 140 "../../../../../src/options/arith_options"
+template <> const options::soiApproxMajorFailure__option_t::type& Options::operator[](options::soiApproxMajorFailure__option_t) const;
+#line 140 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::soiApproxMajorFailure__option_t) const;
+#line 140 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::soiApproxMajorFailure__option_t, std::string option, std::string value);
+#line 143 "../../../../../src/options/arith_options"
+template <> const options::soiApproxMajorFailurePen__option_t::type& Options::operator[](options::soiApproxMajorFailurePen__option_t) const;
+#line 143 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::soiApproxMajorFailurePen__option_t) const;
+#line 143 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::soiApproxMajorFailurePen__option_t, std::string option, std::string value);
+#line 146 "../../../../../src/options/arith_options"
+template <> const options::soiApproxMinorFailure__option_t::type& Options::operator[](options::soiApproxMinorFailure__option_t) const;
+#line 146 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::soiApproxMinorFailure__option_t) const;
+#line 146 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::soiApproxMinorFailure__option_t, std::string option, std::string value);
+#line 149 "../../../../../src/options/arith_options"
+template <> const options::soiApproxMinorFailurePen__option_t::type& Options::operator[](options::soiApproxMinorFailurePen__option_t) const;
+#line 149 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::soiApproxMinorFailurePen__option_t) const;
+#line 149 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::soiApproxMinorFailurePen__option_t, std::string option, std::string value);
+#line 152 "../../../../../src/options/arith_options"
+template <> const options::ppAssertMaxSubSize__option_t::type& Options::operator[](options::ppAssertMaxSubSize__option_t) const;
+#line 152 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::ppAssertMaxSubSize__option_t) const;
+#line 152 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::ppAssertMaxSubSize__option_t, std::string option, std::string value);
+#line 155 "../../../../../src/options/arith_options"
+template <> const options::maxReplayTree__option_t::type& Options::operator[](options::maxReplayTree__option_t) const;
+#line 155 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::maxReplayTree__option_t) const;
+#line 155 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::maxReplayTree__option_t, std::string option, std::string value);
+#line 159 "../../../../../src/options/arith_options"
+template <> const options::pbRewrites__option_t::type& Options::operator[](options::pbRewrites__option_t) const;
+#line 159 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::pbRewrites__option_t) const;
+#line 159 "../../../../../src/options/arith_options"
+template <> void Options::assignBool(options::pbRewrites__option_t, std::string option, bool value);
+#line 162 "../../../../../src/options/arith_options"
+template <> const options::pbRewriteThreshold__option_t::type& Options::operator[](options::pbRewriteThreshold__option_t) const;
+#line 162 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::pbRewriteThreshold__option_t) const;
+#line 162 "../../../../../src/options/arith_options"
+template <> void Options::assign(options::pbRewriteThreshold__option_t, std::string option, std::string value);
+#line 165 "../../../../../src/options/arith_options"
+template <> const options::sNormInferEq__option_t::type& Options::operator[](options::sNormInferEq__option_t) const;
+#line 165 "../../../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::sNormInferEq__option_t) const;
+#line 165 "../../../../../src/options/arith_options"
+template <> void Options::assignBool(options::sNormInferEq__option_t, std::string option, bool value);
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/arith_options"
+inline arithUnateLemmaMode__option_t::type arithUnateLemmaMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 8 "../../../../../src/options/arith_options"
+inline bool arithUnateLemmaMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 11 "../../../../../src/options/arith_options"
+inline arithPropagationMode__option_t::type arithPropagationMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 11 "../../../../../src/options/arith_options"
+inline bool arithPropagationMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 18 "../../../../../src/options/arith_options"
+inline arithHeuristicPivots__option_t::type arithHeuristicPivots__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 18 "../../../../../src/options/arith_options"
+inline bool arithHeuristicPivots__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 18 "../../../../../src/options/arith_options"
+inline void arithHeuristicPivots__option_t::set(const arithHeuristicPivots__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 25 "../../../../../src/options/arith_options"
+inline arithStandardCheckVarOrderPivots__option_t::type arithStandardCheckVarOrderPivots__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 25 "../../../../../src/options/arith_options"
+inline bool arithStandardCheckVarOrderPivots__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 25 "../../../../../src/options/arith_options"
+inline void arithStandardCheckVarOrderPivots__option_t::set(const arithStandardCheckVarOrderPivots__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 28 "../../../../../src/options/arith_options"
+inline arithErrorSelectionRule__option_t::type arithErrorSelectionRule__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 28 "../../../../../src/options/arith_options"
+inline bool arithErrorSelectionRule__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 32 "../../../../../src/options/arith_options"
+inline arithSimplexCheckPeriod__option_t::type arithSimplexCheckPeriod__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 32 "../../../../../src/options/arith_options"
+inline bool arithSimplexCheckPeriod__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 39 "../../../../../src/options/arith_options"
+inline arithPivotThreshold__option_t::type arithPivotThreshold__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 39 "../../../../../src/options/arith_options"
+inline bool arithPivotThreshold__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 39 "../../../../../src/options/arith_options"
+inline void arithPivotThreshold__option_t::set(const arithPivotThreshold__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 42 "../../../../../src/options/arith_options"
+inline arithPropagateMaxLength__option_t::type arithPropagateMaxLength__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 42 "../../../../../src/options/arith_options"
+inline bool arithPropagateMaxLength__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 45 "../../../../../src/options/arith_options"
+inline arithDioSolver__option_t::type arithDioSolver__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 45 "../../../../../src/options/arith_options"
+inline bool arithDioSolver__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 51 "../../../../../src/options/arith_options"
+inline arithRewriteEq__option_t::type arithRewriteEq__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 51 "../../../../../src/options/arith_options"
+inline bool arithRewriteEq__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 51 "../../../../../src/options/arith_options"
+inline void arithRewriteEq__option_t::set(const arithRewriteEq__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 56 "../../../../../src/options/arith_options"
+inline arithMLTrick__option_t::type arithMLTrick__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 56 "../../../../../src/options/arith_options"
+inline bool arithMLTrick__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 60 "../../../../../src/options/arith_options"
+inline arithMLTrickSubstitutions__option_t::type arithMLTrickSubstitutions__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 60 "../../../../../src/options/arith_options"
+inline bool arithMLTrickSubstitutions__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 63 "../../../../../src/options/arith_options"
+inline doCutAllBounded__option_t::type doCutAllBounded__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 63 "../../../../../src/options/arith_options"
+inline bool doCutAllBounded__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 63 "../../../../../src/options/arith_options"
+inline void doCutAllBounded__option_t::set(const doCutAllBounded__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 67 "../../../../../src/options/arith_options"
+inline maxCutsInContext__option_t::type maxCutsInContext__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 67 "../../../../../src/options/arith_options"
+inline bool maxCutsInContext__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 70 "../../../../../src/options/arith_options"
+inline revertArithModels__option_t::type revertArithModels__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 70 "../../../../../src/options/arith_options"
+inline bool revertArithModels__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 73 "../../../../../src/options/arith_options"
+inline havePenalties__option_t::type havePenalties__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 73 "../../../../../src/options/arith_options"
+inline bool havePenalties__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 73 "../../../../../src/options/arith_options"
+inline void havePenalties__option_t::set(const havePenalties__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 77 "../../../../../src/options/arith_options"
+inline useFC__option_t::type useFC__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 77 "../../../../../src/options/arith_options"
+inline bool useFC__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 77 "../../../../../src/options/arith_options"
+inline void useFC__option_t::set(const useFC__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 80 "../../../../../src/options/arith_options"
+inline useSOI__option_t::type useSOI__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 80 "../../../../../src/options/arith_options"
+inline bool useSOI__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 80 "../../../../../src/options/arith_options"
+inline void useSOI__option_t::set(const useSOI__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 83 "../../../../../src/options/arith_options"
+inline restrictedPivots__option_t::type restrictedPivots__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 83 "../../../../../src/options/arith_options"
+inline bool restrictedPivots__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 83 "../../../../../src/options/arith_options"
+inline void restrictedPivots__option_t::set(const restrictedPivots__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 86 "../../../../../src/options/arith_options"
+inline collectPivots__option_t::type collectPivots__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 86 "../../../../../src/options/arith_options"
+inline bool collectPivots__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 86 "../../../../../src/options/arith_options"
+inline void collectPivots__option_t::set(const collectPivots__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 89 "../../../../../src/options/arith_options"
+inline useApprox__option_t::type useApprox__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 89 "../../../../../src/options/arith_options"
+inline bool useApprox__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 89 "../../../../../src/options/arith_options"
+inline void useApprox__option_t::set(const useApprox__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 92 "../../../../../src/options/arith_options"
+inline maxApproxDepth__option_t::type maxApproxDepth__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 92 "../../../../../src/options/arith_options"
+inline bool maxApproxDepth__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 92 "../../../../../src/options/arith_options"
+inline void maxApproxDepth__option_t::set(const maxApproxDepth__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 95 "../../../../../src/options/arith_options"
+inline exportDioDecompositions__option_t::type exportDioDecompositions__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 95 "../../../../../src/options/arith_options"
+inline bool exportDioDecompositions__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 95 "../../../../../src/options/arith_options"
+inline void exportDioDecompositions__option_t::set(const exportDioDecompositions__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 98 "../../../../../src/options/arith_options"
+inline newProp__option_t::type newProp__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 98 "../../../../../src/options/arith_options"
+inline bool newProp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 98 "../../../../../src/options/arith_options"
+inline void newProp__option_t::set(const newProp__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 101 "../../../../../src/options/arith_options"
+inline arithPropAsLemmaLength__option_t::type arithPropAsLemmaLength__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 101 "../../../../../src/options/arith_options"
+inline bool arithPropAsLemmaLength__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 101 "../../../../../src/options/arith_options"
+inline void arithPropAsLemmaLength__option_t::set(const arithPropAsLemmaLength__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 104 "../../../../../src/options/arith_options"
+inline soiQuickExplain__option_t::type soiQuickExplain__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 104 "../../../../../src/options/arith_options"
+inline bool soiQuickExplain__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 104 "../../../../../src/options/arith_options"
+inline void soiQuickExplain__option_t::set(const soiQuickExplain__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 107 "../../../../../src/options/arith_options"
+inline rewriteDivk__option_t::type rewriteDivk__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 107 "../../../../../src/options/arith_options"
+inline bool rewriteDivk__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 107 "../../../../../src/options/arith_options"
+inline void rewriteDivk__option_t::set(const rewriteDivk__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 110 "../../../../../src/options/arith_options"
+inline trySolveIntStandardEffort__option_t::type trySolveIntStandardEffort__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 110 "../../../../../src/options/arith_options"
+inline bool trySolveIntStandardEffort__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 113 "../../../../../src/options/arith_options"
+inline replayFailureLemma__option_t::type replayFailureLemma__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 113 "../../../../../src/options/arith_options"
+inline bool replayFailureLemma__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 116 "../../../../../src/options/arith_options"
+inline dioSolverTurns__option_t::type dioSolverTurns__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 116 "../../../../../src/options/arith_options"
+inline bool dioSolverTurns__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 119 "../../../../../src/options/arith_options"
+inline rrTurns__option_t::type rrTurns__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 119 "../../../../../src/options/arith_options"
+inline bool rrTurns__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 122 "../../../../../src/options/arith_options"
+inline dioRepeat__option_t::type dioRepeat__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 122 "../../../../../src/options/arith_options"
+inline bool dioRepeat__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 125 "../../../../../src/options/arith_options"
+inline replayEarlyCloseDepths__option_t::type replayEarlyCloseDepths__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 125 "../../../../../src/options/arith_options"
+inline bool replayEarlyCloseDepths__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 128 "../../../../../src/options/arith_options"
+inline replayFailurePenalty__option_t::type replayFailurePenalty__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 128 "../../../../../src/options/arith_options"
+inline bool replayFailurePenalty__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 131 "../../../../../src/options/arith_options"
+inline replayNumericFailurePenalty__option_t::type replayNumericFailurePenalty__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 131 "../../../../../src/options/arith_options"
+inline bool replayNumericFailurePenalty__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 134 "../../../../../src/options/arith_options"
+inline replayRejectCutSize__option_t::type replayRejectCutSize__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 134 "../../../../../src/options/arith_options"
+inline bool replayRejectCutSize__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 137 "../../../../../src/options/arith_options"
+inline lemmaRejectCutSize__option_t::type lemmaRejectCutSize__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 137 "../../../../../src/options/arith_options"
+inline bool lemmaRejectCutSize__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 140 "../../../../../src/options/arith_options"
+inline soiApproxMajorFailure__option_t::type soiApproxMajorFailure__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 140 "../../../../../src/options/arith_options"
+inline bool soiApproxMajorFailure__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 143 "../../../../../src/options/arith_options"
+inline soiApproxMajorFailurePen__option_t::type soiApproxMajorFailurePen__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 143 "../../../../../src/options/arith_options"
+inline bool soiApproxMajorFailurePen__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 146 "../../../../../src/options/arith_options"
+inline soiApproxMinorFailure__option_t::type soiApproxMinorFailure__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 146 "../../../../../src/options/arith_options"
+inline bool soiApproxMinorFailure__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 149 "../../../../../src/options/arith_options"
+inline soiApproxMinorFailurePen__option_t::type soiApproxMinorFailurePen__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 149 "../../../../../src/options/arith_options"
+inline bool soiApproxMinorFailurePen__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 152 "../../../../../src/options/arith_options"
+inline ppAssertMaxSubSize__option_t::type ppAssertMaxSubSize__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 152 "../../../../../src/options/arith_options"
+inline bool ppAssertMaxSubSize__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 155 "../../../../../src/options/arith_options"
+inline maxReplayTree__option_t::type maxReplayTree__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 155 "../../../../../src/options/arith_options"
+inline bool maxReplayTree__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 159 "../../../../../src/options/arith_options"
+inline pbRewrites__option_t::type pbRewrites__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 159 "../../../../../src/options/arith_options"
+inline bool pbRewrites__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 162 "../../../../../src/options/arith_options"
+inline pbRewriteThreshold__option_t::type pbRewriteThreshold__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 162 "../../../../../src/options/arith_options"
+inline bool pbRewriteThreshold__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 165 "../../../../../src/options/arith_options"
+inline sNormInferEq__option_t::type sNormInferEq__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 165 "../../../../../src/options/arith_options"
+inline bool sNormInferEq__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__ARITH_H */
diff --git a/src/options/arith_propagation_mode.cpp b/src/options/arith_propagation_mode.cpp
new file mode 100644
index 0000000..5baf0b8
--- /dev/null
+++ b/src/options/arith_propagation_mode.cpp
@@ -0,0 +1,43 @@
+/*********************                                                        */
+/*! \file arith_propagation_mode.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "options/arith_propagation_mode.h"
+
+namespace CVC4 {
+
+std::ostream& operator<<(std::ostream& out, ArithPropagationMode mode) {
+  switch(mode) {
+  case NO_PROP:
+    out << "NO_PROP";
+    break;
+  case UNATE_PROP:
+    out << "UNATE_PROP";
+    break;
+  case BOUND_INFERENCE_PROP:
+    out << "BOUND_INFERENCE_PROP";
+    break;
+  case BOTH_PROP:
+    out << "BOTH_PROP";
+    break;
+  default:
+    out << "ArithPropagationMode!UNKNOWN";
+  }
+
+  return out;
+}
+
+}/* CVC4 namespace */
diff --git a/src/options/arith_propagation_mode.h b/src/options/arith_propagation_mode.h
new file mode 100644
index 0000000..dc4b803
--- /dev/null
+++ b/src/options/arith_propagation_mode.h
@@ -0,0 +1,38 @@
+/*********************                                                        */
+/*! \file arith_propagation_mode.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__THEORY__ARITH__ARITH_PROPAGATION_MODE_H
+#define __CVC4__THEORY__ARITH__ARITH_PROPAGATION_MODE_H
+
+#include <iostream>
+
+namespace CVC4 {
+
+enum ArithPropagationMode {
+  NO_PROP,
+  UNATE_PROP,
+  BOUND_INFERENCE_PROP,
+  BOTH_PROP
+};
+
+std::ostream& operator<<(std::ostream& out, ArithPropagationMode rule) CVC4_PUBLIC;
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__ARITH__ARITH_PROPAGATION_MODE_H */
diff --git a/src/options/arith_unate_lemma_mode.cpp b/src/options/arith_unate_lemma_mode.cpp
new file mode 100644
index 0000000..9b683f4
--- /dev/null
+++ b/src/options/arith_unate_lemma_mode.cpp
@@ -0,0 +1,43 @@
+/*********************                                                        */
+/*! \file arith_unate_lemma_mode.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "options/arith_unate_lemma_mode.h"
+
+namespace CVC4 {
+
+std::ostream& operator<<(std::ostream& out, ArithUnateLemmaMode mode) {
+  switch(mode) {
+  case NO_PRESOLVE_LEMMAS:
+    out << "NO_PRESOLVE_LEMMAS";
+    break;
+  case INEQUALITY_PRESOLVE_LEMMAS:
+    out << "INEQUALITY_PRESOLVE_LEMMAS";
+    break;
+  case EQUALITY_PRESOLVE_LEMMAS:
+    out << "EQUALITY_PRESOLVE_LEMMAS";
+    break;
+  case ALL_PRESOLVE_LEMMAS:
+    out << "ALL_PRESOLVE_LEMMAS";
+    break;
+  default:
+    out << "ArithUnateLemmaMode!UNKNOWN";
+  }
+
+  return out;
+}
+
+}/* CVC4 namespace */
diff --git a/src/options/arith_unate_lemma_mode.h b/src/options/arith_unate_lemma_mode.h
new file mode 100644
index 0000000..39664d3
--- /dev/null
+++ b/src/options/arith_unate_lemma_mode.h
@@ -0,0 +1,38 @@
+/*********************                                                        */
+/*! \file arith_unate_lemma_mode.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__THEORY__ARITH__ARITH_UNATE_LEMMA_MODE_H
+#define __CVC4__THEORY__ARITH__ARITH_UNATE_LEMMA_MODE_H
+
+#include <iostream>
+
+namespace CVC4 {
+
+typedef enum {
+  NO_PRESOLVE_LEMMAS,
+  INEQUALITY_PRESOLVE_LEMMAS,
+  EQUALITY_PRESOLVE_LEMMAS,
+  ALL_PRESOLVE_LEMMAS
+} ArithUnateLemmaMode;
+
+std::ostream& operator<<(std::ostream& out, ArithUnateLemmaMode rule) CVC4_PUBLIC;
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__ARITH__ARITH_UNATE_LEMMA_MODE_H */
diff --git a/src/options/arrays_options b/src/options/arrays_options
new file mode 100644
index 0000000..371554a
--- /dev/null
+++ b/src/options/arrays_options
@@ -0,0 +1,35 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module ARRAYS "options/arrays_options.h" Arrays theory
+
+option arraysOptimizeLinear --arrays-optimize-linear bool :default true :read-write
+ turn on optimization for linear array terms (see de Moura FMCAD 09 arrays paper)
+
+option arraysLazyRIntro1 --arrays-lazy-rintro1 bool :default true :read-write
+ turn on optimization to only perform RIntro1 rule lazily (see Jovanovic/Barrett 2012: Being Careful with Theory Combination)
+
+option arraysWeakEquivalence --arrays-weak-equiv bool :default false :read-write
+ use algorithm from Christ/Hoenicke (SMT 2014)
+
+option arraysModelBased --arrays-model-based bool :default false :read-write
+ turn on model-based array solver
+
+option arraysEagerIndexSplitting --arrays-eager-index bool :default true :read-write
+ turn on eager index splitting for generated array lemmas
+
+option arraysEagerLemmas --arrays-eager-lemmas bool :default false :read-write
+ turn on eager lemma generation for arrays
+
+option arraysConfig --arrays-config int :default 0 :read-write
+ set different array option configurations - for developers only
+
+option arraysReduceSharing --arrays-reduce-sharing bool :default false :read-write
+ use model information to reduce size of care graph for arrays
+
+option arraysPropagate --arrays-prop int :default 2 :read-write
+ propagation effort for arrays: 0 is none, 1 is some, 2 is full
+
+endmodule
diff --git a/src/options/arrays_options.cpp b/src/options/arrays_options.cpp
new file mode 100644
index 0000000..682bf0e
--- /dev/null
+++ b/src/options/arrays_options.cpp
@@ -0,0 +1,105 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+#line 8 "../../../../../src/options/arrays_options"
+template <> void Options::set(options::arraysOptimizeLinear__option_t, const options::arraysOptimizeLinear__option_t::type& x) { d_holder->arraysOptimizeLinear = x; }
+#line 8 "../../../../../src/options/arrays_options"
+template <> const options::arraysOptimizeLinear__option_t::type& Options::operator[](options::arraysOptimizeLinear__option_t) const { return d_holder->arraysOptimizeLinear; }
+#line 8 "../../../../../src/options/arrays_options"
+template <> bool Options::wasSetByUser(options::arraysOptimizeLinear__option_t) const { return d_holder->arraysOptimizeLinear__setByUser__; }
+#line 11 "../../../../../src/options/arrays_options"
+template <> void Options::set(options::arraysLazyRIntro1__option_t, const options::arraysLazyRIntro1__option_t::type& x) { d_holder->arraysLazyRIntro1 = x; }
+#line 11 "../../../../../src/options/arrays_options"
+template <> const options::arraysLazyRIntro1__option_t::type& Options::operator[](options::arraysLazyRIntro1__option_t) const { return d_holder->arraysLazyRIntro1; }
+#line 11 "../../../../../src/options/arrays_options"
+template <> bool Options::wasSetByUser(options::arraysLazyRIntro1__option_t) const { return d_holder->arraysLazyRIntro1__setByUser__; }
+#line 14 "../../../../../src/options/arrays_options"
+template <> void Options::set(options::arraysWeakEquivalence__option_t, const options::arraysWeakEquivalence__option_t::type& x) { d_holder->arraysWeakEquivalence = x; }
+#line 14 "../../../../../src/options/arrays_options"
+template <> const options::arraysWeakEquivalence__option_t::type& Options::operator[](options::arraysWeakEquivalence__option_t) const { return d_holder->arraysWeakEquivalence; }
+#line 14 "../../../../../src/options/arrays_options"
+template <> bool Options::wasSetByUser(options::arraysWeakEquivalence__option_t) const { return d_holder->arraysWeakEquivalence__setByUser__; }
+#line 17 "../../../../../src/options/arrays_options"
+template <> void Options::set(options::arraysModelBased__option_t, const options::arraysModelBased__option_t::type& x) { d_holder->arraysModelBased = x; }
+#line 17 "../../../../../src/options/arrays_options"
+template <> const options::arraysModelBased__option_t::type& Options::operator[](options::arraysModelBased__option_t) const { return d_holder->arraysModelBased; }
+#line 17 "../../../../../src/options/arrays_options"
+template <> bool Options::wasSetByUser(options::arraysModelBased__option_t) const { return d_holder->arraysModelBased__setByUser__; }
+#line 20 "../../../../../src/options/arrays_options"
+template <> void Options::set(options::arraysEagerIndexSplitting__option_t, const options::arraysEagerIndexSplitting__option_t::type& x) { d_holder->arraysEagerIndexSplitting = x; }
+#line 20 "../../../../../src/options/arrays_options"
+template <> const options::arraysEagerIndexSplitting__option_t::type& Options::operator[](options::arraysEagerIndexSplitting__option_t) const { return d_holder->arraysEagerIndexSplitting; }
+#line 20 "../../../../../src/options/arrays_options"
+template <> bool Options::wasSetByUser(options::arraysEagerIndexSplitting__option_t) const { return d_holder->arraysEagerIndexSplitting__setByUser__; }
+#line 23 "../../../../../src/options/arrays_options"
+template <> void Options::set(options::arraysEagerLemmas__option_t, const options::arraysEagerLemmas__option_t::type& x) { d_holder->arraysEagerLemmas = x; }
+#line 23 "../../../../../src/options/arrays_options"
+template <> const options::arraysEagerLemmas__option_t::type& Options::operator[](options::arraysEagerLemmas__option_t) const { return d_holder->arraysEagerLemmas; }
+#line 23 "../../../../../src/options/arrays_options"
+template <> bool Options::wasSetByUser(options::arraysEagerLemmas__option_t) const { return d_holder->arraysEagerLemmas__setByUser__; }
+#line 26 "../../../../../src/options/arrays_options"
+template <> void Options::set(options::arraysConfig__option_t, const options::arraysConfig__option_t::type& x) { d_holder->arraysConfig = x; }
+#line 26 "../../../../../src/options/arrays_options"
+template <> const options::arraysConfig__option_t::type& Options::operator[](options::arraysConfig__option_t) const { return d_holder->arraysConfig; }
+#line 26 "../../../../../src/options/arrays_options"
+template <> bool Options::wasSetByUser(options::arraysConfig__option_t) const { return d_holder->arraysConfig__setByUser__; }
+#line 29 "../../../../../src/options/arrays_options"
+template <> void Options::set(options::arraysReduceSharing__option_t, const options::arraysReduceSharing__option_t::type& x) { d_holder->arraysReduceSharing = x; }
+#line 29 "../../../../../src/options/arrays_options"
+template <> const options::arraysReduceSharing__option_t::type& Options::operator[](options::arraysReduceSharing__option_t) const { return d_holder->arraysReduceSharing; }
+#line 29 "../../../../../src/options/arrays_options"
+template <> bool Options::wasSetByUser(options::arraysReduceSharing__option_t) const { return d_holder->arraysReduceSharing__setByUser__; }
+#line 32 "../../../../../src/options/arrays_options"
+template <> void Options::set(options::arraysPropagate__option_t, const options::arraysPropagate__option_t::type& x) { d_holder->arraysPropagate = x; }
+#line 32 "../../../../../src/options/arrays_options"
+template <> const options::arraysPropagate__option_t::type& Options::operator[](options::arraysPropagate__option_t) const { return d_holder->arraysPropagate; }
+#line 32 "../../../../../src/options/arrays_options"
+template <> bool Options::wasSetByUser(options::arraysPropagate__option_t) const { return d_holder->arraysPropagate__setByUser__; }
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/arrays_options"
+struct arraysOptimizeLinear__option_t arraysOptimizeLinear;
+#line 11 "../../../../../src/options/arrays_options"
+struct arraysLazyRIntro1__option_t arraysLazyRIntro1;
+#line 14 "../../../../../src/options/arrays_options"
+struct arraysWeakEquivalence__option_t arraysWeakEquivalence;
+#line 17 "../../../../../src/options/arrays_options"
+struct arraysModelBased__option_t arraysModelBased;
+#line 20 "../../../../../src/options/arrays_options"
+struct arraysEagerIndexSplitting__option_t arraysEagerIndexSplitting;
+#line 23 "../../../../../src/options/arrays_options"
+struct arraysEagerLemmas__option_t arraysEagerLemmas;
+#line 26 "../../../../../src/options/arrays_options"
+struct arraysConfig__option_t arraysConfig;
+#line 29 "../../../../../src/options/arrays_options"
+struct arraysReduceSharing__option_t arraysReduceSharing;
+#line 32 "../../../../../src/options/arrays_options"
+struct arraysPropagate__option_t arraysPropagate;
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/arrays_options.h b/src/options/arrays_options.h
new file mode 100644
index 0000000..4fab7e7
--- /dev/null
+++ b/src/options/arrays_options.h
@@ -0,0 +1,225 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__ARRAYS_H
+#define __CVC4__OPTIONS__ARRAYS_H
+
+#include "options/options.h"
+
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__ARRAYS__FOR_OPTION_HOLDER \
+  arraysOptimizeLinear__option_t::type arraysOptimizeLinear; \
+  bool arraysOptimizeLinear__setByUser__; \
+  arraysLazyRIntro1__option_t::type arraysLazyRIntro1; \
+  bool arraysLazyRIntro1__setByUser__; \
+  arraysWeakEquivalence__option_t::type arraysWeakEquivalence; \
+  bool arraysWeakEquivalence__setByUser__; \
+  arraysModelBased__option_t::type arraysModelBased; \
+  bool arraysModelBased__setByUser__; \
+  arraysEagerIndexSplitting__option_t::type arraysEagerIndexSplitting; \
+  bool arraysEagerIndexSplitting__setByUser__; \
+  arraysEagerLemmas__option_t::type arraysEagerLemmas; \
+  bool arraysEagerLemmas__setByUser__; \
+  arraysConfig__option_t::type arraysConfig; \
+  bool arraysConfig__setByUser__; \
+  arraysReduceSharing__option_t::type arraysReduceSharing; \
+  bool arraysReduceSharing__setByUser__; \
+  arraysPropagate__option_t::type arraysPropagate; \
+  bool arraysPropagate__setByUser__;
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/arrays_options"
+extern struct CVC4_PUBLIC arraysOptimizeLinear__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arraysOptimizeLinear CVC4_PUBLIC;
+#line 11 "../../../../../src/options/arrays_options"
+extern struct CVC4_PUBLIC arraysLazyRIntro1__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arraysLazyRIntro1 CVC4_PUBLIC;
+#line 14 "../../../../../src/options/arrays_options"
+extern struct CVC4_PUBLIC arraysWeakEquivalence__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arraysWeakEquivalence CVC4_PUBLIC;
+#line 17 "../../../../../src/options/arrays_options"
+extern struct CVC4_PUBLIC arraysModelBased__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arraysModelBased CVC4_PUBLIC;
+#line 20 "../../../../../src/options/arrays_options"
+extern struct CVC4_PUBLIC arraysEagerIndexSplitting__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arraysEagerIndexSplitting CVC4_PUBLIC;
+#line 23 "../../../../../src/options/arrays_options"
+extern struct CVC4_PUBLIC arraysEagerLemmas__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arraysEagerLemmas CVC4_PUBLIC;
+#line 26 "../../../../../src/options/arrays_options"
+extern struct CVC4_PUBLIC arraysConfig__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arraysConfig CVC4_PUBLIC;
+#line 29 "../../../../../src/options/arrays_options"
+extern struct CVC4_PUBLIC arraysReduceSharing__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arraysReduceSharing CVC4_PUBLIC;
+#line 32 "../../../../../src/options/arrays_options"
+extern struct CVC4_PUBLIC arraysPropagate__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arraysPropagate CVC4_PUBLIC;
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+#line 8 "../../../../../src/options/arrays_options"
+template <> void Options::set(options::arraysOptimizeLinear__option_t, const options::arraysOptimizeLinear__option_t::type& x);
+#line 8 "../../../../../src/options/arrays_options"
+template <> const options::arraysOptimizeLinear__option_t::type& Options::operator[](options::arraysOptimizeLinear__option_t) const;
+#line 8 "../../../../../src/options/arrays_options"
+template <> bool Options::wasSetByUser(options::arraysOptimizeLinear__option_t) const;
+#line 8 "../../../../../src/options/arrays_options"
+template <> void Options::assignBool(options::arraysOptimizeLinear__option_t, std::string option, bool value);
+#line 11 "../../../../../src/options/arrays_options"
+template <> void Options::set(options::arraysLazyRIntro1__option_t, const options::arraysLazyRIntro1__option_t::type& x);
+#line 11 "../../../../../src/options/arrays_options"
+template <> const options::arraysLazyRIntro1__option_t::type& Options::operator[](options::arraysLazyRIntro1__option_t) const;
+#line 11 "../../../../../src/options/arrays_options"
+template <> bool Options::wasSetByUser(options::arraysLazyRIntro1__option_t) const;
+#line 11 "../../../../../src/options/arrays_options"
+template <> void Options::assignBool(options::arraysLazyRIntro1__option_t, std::string option, bool value);
+#line 14 "../../../../../src/options/arrays_options"
+template <> void Options::set(options::arraysWeakEquivalence__option_t, const options::arraysWeakEquivalence__option_t::type& x);
+#line 14 "../../../../../src/options/arrays_options"
+template <> const options::arraysWeakEquivalence__option_t::type& Options::operator[](options::arraysWeakEquivalence__option_t) const;
+#line 14 "../../../../../src/options/arrays_options"
+template <> bool Options::wasSetByUser(options::arraysWeakEquivalence__option_t) const;
+#line 14 "../../../../../src/options/arrays_options"
+template <> void Options::assignBool(options::arraysWeakEquivalence__option_t, std::string option, bool value);
+#line 17 "../../../../../src/options/arrays_options"
+template <> void Options::set(options::arraysModelBased__option_t, const options::arraysModelBased__option_t::type& x);
+#line 17 "../../../../../src/options/arrays_options"
+template <> const options::arraysModelBased__option_t::type& Options::operator[](options::arraysModelBased__option_t) const;
+#line 17 "../../../../../src/options/arrays_options"
+template <> bool Options::wasSetByUser(options::arraysModelBased__option_t) const;
+#line 17 "../../../../../src/options/arrays_options"
+template <> void Options::assignBool(options::arraysModelBased__option_t, std::string option, bool value);
+#line 20 "../../../../../src/options/arrays_options"
+template <> void Options::set(options::arraysEagerIndexSplitting__option_t, const options::arraysEagerIndexSplitting__option_t::type& x);
+#line 20 "../../../../../src/options/arrays_options"
+template <> const options::arraysEagerIndexSplitting__option_t::type& Options::operator[](options::arraysEagerIndexSplitting__option_t) const;
+#line 20 "../../../../../src/options/arrays_options"
+template <> bool Options::wasSetByUser(options::arraysEagerIndexSplitting__option_t) const;
+#line 20 "../../../../../src/options/arrays_options"
+template <> void Options::assignBool(options::arraysEagerIndexSplitting__option_t, std::string option, bool value);
+#line 23 "../../../../../src/options/arrays_options"
+template <> void Options::set(options::arraysEagerLemmas__option_t, const options::arraysEagerLemmas__option_t::type& x);
+#line 23 "../../../../../src/options/arrays_options"
+template <> const options::arraysEagerLemmas__option_t::type& Options::operator[](options::arraysEagerLemmas__option_t) const;
+#line 23 "../../../../../src/options/arrays_options"
+template <> bool Options::wasSetByUser(options::arraysEagerLemmas__option_t) const;
+#line 23 "../../../../../src/options/arrays_options"
+template <> void Options::assignBool(options::arraysEagerLemmas__option_t, std::string option, bool value);
+#line 26 "../../../../../src/options/arrays_options"
+template <> void Options::set(options::arraysConfig__option_t, const options::arraysConfig__option_t::type& x);
+#line 26 "../../../../../src/options/arrays_options"
+template <> const options::arraysConfig__option_t::type& Options::operator[](options::arraysConfig__option_t) const;
+#line 26 "../../../../../src/options/arrays_options"
+template <> bool Options::wasSetByUser(options::arraysConfig__option_t) const;
+#line 26 "../../../../../src/options/arrays_options"
+template <> void Options::assign(options::arraysConfig__option_t, std::string option, std::string value);
+#line 29 "../../../../../src/options/arrays_options"
+template <> void Options::set(options::arraysReduceSharing__option_t, const options::arraysReduceSharing__option_t::type& x);
+#line 29 "../../../../../src/options/arrays_options"
+template <> const options::arraysReduceSharing__option_t::type& Options::operator[](options::arraysReduceSharing__option_t) const;
+#line 29 "../../../../../src/options/arrays_options"
+template <> bool Options::wasSetByUser(options::arraysReduceSharing__option_t) const;
+#line 29 "../../../../../src/options/arrays_options"
+template <> void Options::assignBool(options::arraysReduceSharing__option_t, std::string option, bool value);
+#line 32 "../../../../../src/options/arrays_options"
+template <> void Options::set(options::arraysPropagate__option_t, const options::arraysPropagate__option_t::type& x);
+#line 32 "../../../../../src/options/arrays_options"
+template <> const options::arraysPropagate__option_t::type& Options::operator[](options::arraysPropagate__option_t) const;
+#line 32 "../../../../../src/options/arrays_options"
+template <> bool Options::wasSetByUser(options::arraysPropagate__option_t) const;
+#line 32 "../../../../../src/options/arrays_options"
+template <> void Options::assign(options::arraysPropagate__option_t, std::string option, std::string value);
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/arrays_options"
+inline arraysOptimizeLinear__option_t::type arraysOptimizeLinear__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 8 "../../../../../src/options/arrays_options"
+inline bool arraysOptimizeLinear__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 8 "../../../../../src/options/arrays_options"
+inline void arraysOptimizeLinear__option_t::set(const arraysOptimizeLinear__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 11 "../../../../../src/options/arrays_options"
+inline arraysLazyRIntro1__option_t::type arraysLazyRIntro1__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 11 "../../../../../src/options/arrays_options"
+inline bool arraysLazyRIntro1__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 11 "../../../../../src/options/arrays_options"
+inline void arraysLazyRIntro1__option_t::set(const arraysLazyRIntro1__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 14 "../../../../../src/options/arrays_options"
+inline arraysWeakEquivalence__option_t::type arraysWeakEquivalence__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 14 "../../../../../src/options/arrays_options"
+inline bool arraysWeakEquivalence__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 14 "../../../../../src/options/arrays_options"
+inline void arraysWeakEquivalence__option_t::set(const arraysWeakEquivalence__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 17 "../../../../../src/options/arrays_options"
+inline arraysModelBased__option_t::type arraysModelBased__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 17 "../../../../../src/options/arrays_options"
+inline bool arraysModelBased__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 17 "../../../../../src/options/arrays_options"
+inline void arraysModelBased__option_t::set(const arraysModelBased__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 20 "../../../../../src/options/arrays_options"
+inline arraysEagerIndexSplitting__option_t::type arraysEagerIndexSplitting__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 20 "../../../../../src/options/arrays_options"
+inline bool arraysEagerIndexSplitting__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 20 "../../../../../src/options/arrays_options"
+inline void arraysEagerIndexSplitting__option_t::set(const arraysEagerIndexSplitting__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 23 "../../../../../src/options/arrays_options"
+inline arraysEagerLemmas__option_t::type arraysEagerLemmas__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 23 "../../../../../src/options/arrays_options"
+inline bool arraysEagerLemmas__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 23 "../../../../../src/options/arrays_options"
+inline void arraysEagerLemmas__option_t::set(const arraysEagerLemmas__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 26 "../../../../../src/options/arrays_options"
+inline arraysConfig__option_t::type arraysConfig__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 26 "../../../../../src/options/arrays_options"
+inline bool arraysConfig__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 26 "../../../../../src/options/arrays_options"
+inline void arraysConfig__option_t::set(const arraysConfig__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 29 "../../../../../src/options/arrays_options"
+inline arraysReduceSharing__option_t::type arraysReduceSharing__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 29 "../../../../../src/options/arrays_options"
+inline bool arraysReduceSharing__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 29 "../../../../../src/options/arrays_options"
+inline void arraysReduceSharing__option_t::set(const arraysReduceSharing__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 32 "../../../../../src/options/arrays_options"
+inline arraysPropagate__option_t::type arraysPropagate__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 32 "../../../../../src/options/arrays_options"
+inline bool arraysPropagate__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 32 "../../../../../src/options/arrays_options"
+inline void arraysPropagate__option_t::set(const arraysPropagate__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__ARRAYS_H */
diff --git a/src/options/base_handlers.h b/src/options/base_handlers.h
new file mode 100644
index 0000000..0345f9e
--- /dev/null
+++ b/src/options/base_handlers.h
@@ -0,0 +1,87 @@
+/*********************                                                        */
+/*! \file base_handlers.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__BASE_HANDLERS_H
+#define __CVC4__BASE_HANDLERS_H
+
+#include <iostream>
+#include <string>
+#include <sstream>
+
+#include "options/option_exception.h"
+
+namespace CVC4 {
+namespace options {
+
+template <template <class U> class Cmp>
+class comparator {
+  long d_lbound;
+  double d_dbound;
+  bool d_hasLbound;
+
+public:
+  comparator(int i) throw() : d_lbound(i), d_dbound(0.0), d_hasLbound(true) {}
+  comparator(long l) throw() : d_lbound(l), d_dbound(0.0), d_hasLbound(true) {}
+  comparator(double d) throw() : d_lbound(0), d_dbound(d), d_hasLbound(false) {}
+
+  template <class T>
+  void operator()(std::string option, const T& value) {
+    if((d_hasLbound && !(Cmp<T>()(value, T(d_lbound)))) ||
+       (!d_hasLbound && !(Cmp<T>()(value, T(d_dbound))))) {
+      std::stringstream ss;
+      ss << option << ": " << value << " is not a legal setting";
+      throw OptionException(ss.str());
+    }
+  }
+};/* class comparator */
+
+struct greater : public comparator<std::greater> {
+  greater(int i) throw() : comparator<std::greater>(i) {}
+  greater(long l) throw() : comparator<std::greater>(l) {}
+  greater(double d) throw() : comparator<std::greater>(d) {}
+};/* struct greater */
+
+struct greater_equal : public comparator<std::greater_equal> {
+  greater_equal(int i) throw() : comparator<std::greater_equal>(i) {}
+  greater_equal(long l) throw() : comparator<std::greater_equal>(l) {}
+  greater_equal(double d) throw() : comparator<std::greater_equal>(d) {}
+};/* struct greater_equal */
+
+struct less : public comparator<std::less> {
+  less(int i) throw() : comparator<std::less>(i) {}
+  less(long l) throw() : comparator<std::less>(l) {}
+  less(double d) throw() : comparator<std::less>(d) {}
+};/* struct less */
+
+struct less_equal : public comparator<std::less_equal> {
+  less_equal(int i) throw() : comparator<std::less_equal>(i) {}
+  less_equal(long l) throw() : comparator<std::less_equal>(l) {}
+  less_equal(double d) throw() : comparator<std::less_equal>(d) {}
+};/* struct less_equal */
+
+struct not_equal : public comparator<std::not_equal_to> {
+  not_equal(int i) throw() : comparator<std::not_equal_to>(i) {}
+  not_equal(long l) throw() : comparator<std::not_equal_to>(l) {}
+  not_equal(double d) throw() : comparator<std::not_equal_to>(d) {}
+};/* struct not_equal_to */
+
+}/* CVC4::options namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__BASE_HANDLERS_H */
diff --git a/src/options/base_options b/src/options/base_options
new file mode 100644
index 0000000..7346641
--- /dev/null
+++ b/src/options/base_options
@@ -0,0 +1,213 @@
+#
+# Option specification file for CVC4
+#
+# This is essentially a shell script interpreted with special commands.
+#
+# Lines starting with whitespace are special.  They are passed in their entirety
+# (minus the first whitespace char) to the "doc" command.  Lines starting with a
+# single slash are stripped of this initial character and interpreted by the
+# "doc-alt" command.  A period "." in the first column of a line, followed
+# optionally by whitespace but without any other content on the line, is
+# interpreted as an empty string passed to doc.  (This allows multi-paragraph
+# documentation for options.)  Lines may be continued with a backslash (\) at the
+# end of a line.
+#
+# commands are:
+#
+#   module ID "include-file" name
+#
+#     Identifies the module.  Must be the first command in the file.  ID is a
+#     suitable identifier for a preprocessor definition, and should be unique;
+#     name is a "pretty" name used for the benefit of the end CVC4 user in, e.g.,
+#     option listings.
+#
+#   common-option SPECIFICATION
+#   option SPECIFICATION
+#   expert-option SPECIFICATION
+#   undocumented-option SPECIFICATION
+#
+#     These commands declare (respectively) common options presented first to the
+#     user, standard options that the user might want to see with "--help"
+#     documentation, expert options that should be marked as expert-only, and
+#     options that should not appear in normal option documentation (even if
+#     documentation is included here).
+#
+#     SPECIFICATIONs take this form:
+#
+#       SPECIFICATION ::= (internal-name | -) [smt-option-name] [-short-option/-alternate-short-option] [--long-option/--alternate-long-option] C++-type [ATTRIBUTEs...]
+#       ATTRIBUTE ::=   :include include-files..
+#                     | :default C++-expression
+#                     | :handler custom-option-handlers..
+#                     | :handler-include include-files..
+#                     | :predicate custom-option-handlers..
+#                     | :predicate-include include-files..
+#                     | :notify custom-option-notifications..
+#                     | :read-only
+#                     | :read-write
+#                     | :link linked-options..
+#                     | :link-smt linked-option [value]
+#
+#   common-alias ALIAS_SPECIFICATION
+#   alias ALIAS_SPECIFICATION
+#   expert-alias ALIAS_SPECIFICATION
+#   undocumented-alias ALIAS_SPECIFICATION
+#
+#       ALIAS_SPECIFICATION ::=   (-short-option | --long-option) = (-option[=argument] | --long-option[=argument])+
+#                               | (-short-option=ARG | --long-option=ARG) = (-option[=ARG|argument] | --long-option[=ARG|argument])+
+#
+#     The alias command creates a new short or long option, and binds it
+#     to act the same way as if the options to the right of "=" were passed.
+#     For example, if there are options to --disable-warning-1 and
+#     --disable-warning-2, etc., a useful alias might be:
+#
+#       alias --disable-all-warnings = --disable-warning-1 --disable-warning-2
+#
+#     It's also possible to pass an argument through to another option.
+#     This alias makes "--output-language" synonymous with "--output-lang".
+#     Without the "=L" parts, --output-language would not take an argument,
+#     and option processing would fail (because --output-lang expects one).
+#
+#       alias --output-language=L = --output-lang=L
+#
+#     You can also ignore such an argument:
+#
+#       alias --some-option=VALUE = --other-option --option2=foo --option3=bar
+#
+#     or use it for multiple options on the right-hand side, etc.
+#
+#   warning message
+#
+#     Warn about something during processing (like a FIXME).
+#
+#   endmodule
+#
+#     This file should end with the "endmodule" command, and nothing should
+#     follow it.
+#
+#
+#  The options/ package supports a wide range of operations for responding to
+#  an option being set. Roughly the three major concepts are:
+#  - :handler is to parse an option before setting its value.
+#  - :predicate is to reject bad values for the option.
+#  - :notify is used for dynamic dispatch after an option is assigned.
+#
+#  More details on each class of custom handlers.
+#   :handler custom-option-handler
+#    Handlers provide support for parsing custom types and parsing for options.
+#    The signature for a handler call is:
+#       T custom-option-handler(std::string option, std::string optarg,
+#                               OptionsHandler* handler);
+#    where T is the type of the option. The suggested implementation is to
+#    implement custom-handler as a dispatch into a function on handler with the
+#    signature:
+#       T OptionsHandler::custom-option-handler(std::string option,
+#                                               std::string optarg);
+#    The handlers are run before predicates and notifications.
+#    Having multiple handlers is considered bad practice and is unsupported.
+#    Handlers may have arbitrary side effects, but should call no code
+#    inaccessible to liboptions. For side effects that are not required in order
+#    to parse the option, using :predicate is recommended. Use :notify to
+#    achieve dynamic dispatch outside of base/, lib/, and options/. Memory
+#    management done by a handler needs to either be encapsulated by the type
+#    and the destructor for the type or should *always* be owned by handler. More
+#    elaborate memory management schemes are not currently supported.
+#
+#   :predicate custom-predicate
+#    Predicates provide support for checking whether or not the value of an
+#    is acceptable. Predicates are run after handlers and before notifications.
+#    The signature for a predicate call is:
+#      void custom-predicate(std::string option, T value,
+#                            OptionsHandler* handler);
+#    where T is the type of the option. The suggested implementation is to
+#    implement custom-predicate as a dispatch into a function on handler with the
+#    signature:
+#      void OptionsHandler::custom-predicate(std::string option, T value);
+#    The predicates are run after handlers and before notifications. Multiple
+#    predicates may be defined for the same option, but the order they are run
+#    is not guaranteed. Predicates may have arbitrary side effects, but should
+#    call no code inaccessible to liboptions. Use :notify to
+#    achieve dynamic dispatch outside of base/, lib/, and options/.
+#    Predicates are expected to reject bad value for the option by throwing an
+#    OptionsException.
+#
+#   :notify custom-notification
+#    This allows for the installation of custom post-processing callbacks using
+#    the Listener infrastructure. custom-option-notification is a C++ function
+#    that is called after the assignment of the option is updated.
+#    The normal usage of an notify is to call a Listener that is registered for
+#    this specific option. This is how dynamic dispatch outside of the
+#    liboptions package should always be done.
+#    The signature of custom-option-notification should take an option name as
+#    well as an OptionsHandler*.
+#      void custom-notification(
+#        const std::string& option, CVC4::options::OptionsHandler* handler);
+#    The name is provided so multiple options can use the same notification
+#    implementation.
+#    This is called after all handlers and predicates have been run.
+#    Formally, this is always placed at the end of either the generated
+#    Options::assign or Options::assignBool function for the option.
+#    Because of this :notify cannot be used with void type options.
+#    Users of this feature should *always* check the code generated in
+#    builds/src/options/options.cpp for the correctness of the placement of the
+#    generated code. The Listener notify() function is allowed to throw
+#    an arbitrary std::exception.
+#
+
+module BASE "options/base_options.h" Base
+
+option binary_name std::string
+
+option in std::istream* :default &std::cin :include <iosfwd>
+option out std::ostream* :default &std::cout :include <iosfwd>
+option err std::ostream* :default &std::cerr :include <iosfwd>
+
+common-option inputLanguage input-language -L --lang=LANG InputLanguage :handler stringToInputLanguage :include "options/language.h" :default language::input::LANG_AUTO :read-write
+ force input language (default is "auto"; see --lang help)
+common-option outputLanguage output-language --output-lang=LANG OutputLanguage :handler stringToOutputLanguage :include "options/language.h" :default language::output::LANG_AUTO :read-write
+ force output language (default is "auto"; see --output-lang help)
+option languageHelp bool
+
+# Allow also --language and --output-language, it's a common mistake to
+# type these, but no need to document it.
+undocumented-alias --language=L = --lang=L
+undocumented-alias --output-language=L = --output-lang=L
+
+option verbosity verbosity int :read-write :default 0 :predicate setVerbosity
+ the verbosity level of CVC4
+common-option - -v --verbose void :handler increaseVerbosity
+ increase verbosity (may be repeated)
+common-option - -q --quiet void :handler decreaseVerbosity
+ decrease verbosity (may be repeated)
+
+common-option statistics statistics --stats bool :predicate statsEnabledBuild
+ give statistics on exit
+undocumented-alias --statistics = --stats
+undocumented-alias --no-statistics = --no-stats
+option statsEveryQuery --stats-every-query bool :default false :link --stats :link-smt statistics
+ in incremental mode, print stats after every satisfiability or validity query
+undocumented-alias --statistics-every-query = --stats-every-query
+undocumented-alias --no-statistics-every-query = --no-stats-every-query
+option statsHideZeros --stats-hide-zeros/--stats-show-zeros bool :default false
+ hide statistics which are zero
+/show statistics even when they are zero (default)
+undocumented-alias --hide-zero-stats = --stats-hide-zeros
+undocumented-alias --show-zero-stats = --stats-show-zeros
+
+option parseOnly parse-only --parse-only bool :read-write
+ exit after parsing input
+
+option preprocessOnly preprocess-only --preprocess-only bool
+ exit after preprocessing input
+
+option - trace -t --trace=TAG argument :handler addTraceTag
+ trace something (e.g. -t pushpop), can repeat
+option - debug -d --debug=TAG argument :handler addDebugTag
+ debug something (e.g. -d arith), can repeat
+
+option printSuccess print-success --print-success bool :notify notifyPrintSuccess
+ print the "success" output required of SMT-LIBv2
+
+alias --smtlib-strict = --lang=smt2 --output-lang=smt2 --strict-parsing --default-expr-depth=-1 --print-success --incremental --abstract-values
+ SMT-LIBv2 compliance mode (implies other options)
+
+endmodule
diff --git a/src/options/base_options.cpp b/src/options/base_options.cpp
new file mode 100644
index 0000000..1f02290
--- /dev/null
+++ b/src/options/base_options.cpp
@@ -0,0 +1,135 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+#line 158 "../../../../../src/options/base_options"
+template <> void Options::set(options::binary_name__option_t, const options::binary_name__option_t::type& x) { d_holder->binary_name = x; }
+#line 158 "../../../../../src/options/base_options"
+template <> const options::binary_name__option_t::type& Options::operator[](options::binary_name__option_t) const { return d_holder->binary_name; }
+#line 158 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::binary_name__option_t) const { return d_holder->binary_name__setByUser__; }
+#line 160 "../../../../../src/options/base_options"
+template <> void Options::set(options::in__option_t, const options::in__option_t::type& x) { d_holder->in = x; }
+#line 160 "../../../../../src/options/base_options"
+template <> const options::in__option_t::type& Options::operator[](options::in__option_t) const { return d_holder->in; }
+#line 160 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::in__option_t) const { return d_holder->in__setByUser__; }
+#line 161 "../../../../../src/options/base_options"
+template <> void Options::set(options::out__option_t, const options::out__option_t::type& x) { d_holder->out = x; }
+#line 161 "../../../../../src/options/base_options"
+template <> const options::out__option_t::type& Options::operator[](options::out__option_t) const { return d_holder->out; }
+#line 161 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::out__option_t) const { return d_holder->out__setByUser__; }
+#line 162 "../../../../../src/options/base_options"
+template <> void Options::set(options::err__option_t, const options::err__option_t::type& x) { d_holder->err = x; }
+#line 162 "../../../../../src/options/base_options"
+template <> const options::err__option_t::type& Options::operator[](options::err__option_t) const { return d_holder->err; }
+#line 162 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::err__option_t) const { return d_holder->err__setByUser__; }
+#line 164 "../../../../../src/options/base_options"
+template <> void Options::set(options::inputLanguage__option_t, const options::inputLanguage__option_t::type& x) { d_holder->inputLanguage = x; }
+#line 164 "../../../../../src/options/base_options"
+template <> const options::inputLanguage__option_t::type& Options::operator[](options::inputLanguage__option_t) const { return d_holder->inputLanguage; }
+#line 164 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::inputLanguage__option_t) const { return d_holder->inputLanguage__setByUser__; }
+#line 166 "../../../../../src/options/base_options"
+template <> void Options::set(options::outputLanguage__option_t, const options::outputLanguage__option_t::type& x) { d_holder->outputLanguage = x; }
+#line 166 "../../../../../src/options/base_options"
+template <> const options::outputLanguage__option_t::type& Options::operator[](options::outputLanguage__option_t) const { return d_holder->outputLanguage; }
+#line 166 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::outputLanguage__option_t) const { return d_holder->outputLanguage__setByUser__; }
+#line 168 "../../../../../src/options/base_options"
+template <> void Options::set(options::languageHelp__option_t, const options::languageHelp__option_t::type& x) { d_holder->languageHelp = x; }
+#line 168 "../../../../../src/options/base_options"
+template <> const options::languageHelp__option_t::type& Options::operator[](options::languageHelp__option_t) const { return d_holder->languageHelp; }
+#line 168 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::languageHelp__option_t) const { return d_holder->languageHelp__setByUser__; }
+#line 175 "../../../../../src/options/base_options"
+template <> void Options::set(options::verbosity__option_t, const options::verbosity__option_t::type& x) { d_holder->verbosity = x; }
+#line 175 "../../../../../src/options/base_options"
+template <> const options::verbosity__option_t::type& Options::operator[](options::verbosity__option_t) const { return d_holder->verbosity; }
+#line 175 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::verbosity__option_t) const { return d_holder->verbosity__setByUser__; }
+#line 182 "../../../../../src/options/base_options"
+template <> const options::statistics__option_t::type& Options::operator[](options::statistics__option_t) const { return d_holder->statistics; }
+#line 182 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::statistics__option_t) const { return d_holder->statistics__setByUser__; }
+#line 186 "../../../../../src/options/base_options"
+template <> const options::statsEveryQuery__option_t::type& Options::operator[](options::statsEveryQuery__option_t) const { return d_holder->statsEveryQuery; }
+#line 186 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::statsEveryQuery__option_t) const { return d_holder->statsEveryQuery__setByUser__; }
+#line 190 "../../../../../src/options/base_options"
+template <> const options::statsHideZeros__option_t::type& Options::operator[](options::statsHideZeros__option_t) const { return d_holder->statsHideZeros; }
+#line 190 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::statsHideZeros__option_t) const { return d_holder->statsHideZeros__setByUser__; }
+#line 196 "../../../../../src/options/base_options"
+template <> void Options::set(options::parseOnly__option_t, const options::parseOnly__option_t::type& x) { d_holder->parseOnly = x; }
+#line 196 "../../../../../src/options/base_options"
+template <> const options::parseOnly__option_t::type& Options::operator[](options::parseOnly__option_t) const { return d_holder->parseOnly; }
+#line 196 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::parseOnly__option_t) const { return d_holder->parseOnly__setByUser__; }
+#line 199 "../../../../../src/options/base_options"
+template <> const options::preprocessOnly__option_t::type& Options::operator[](options::preprocessOnly__option_t) const { return d_holder->preprocessOnly; }
+#line 199 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::preprocessOnly__option_t) const { return d_holder->preprocessOnly__setByUser__; }
+#line 207 "../../../../../src/options/base_options"
+template <> const options::printSuccess__option_t::type& Options::operator[](options::printSuccess__option_t) const { return d_holder->printSuccess; }
+#line 207 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::printSuccess__option_t) const { return d_holder->printSuccess__setByUser__; }
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+#line 158 "../../../../../src/options/base_options"
+struct binary_name__option_t binary_name;
+#line 160 "../../../../../src/options/base_options"
+struct in__option_t in;
+#line 161 "../../../../../src/options/base_options"
+struct out__option_t out;
+#line 162 "../../../../../src/options/base_options"
+struct err__option_t err;
+#line 164 "../../../../../src/options/base_options"
+struct inputLanguage__option_t inputLanguage;
+#line 166 "../../../../../src/options/base_options"
+struct outputLanguage__option_t outputLanguage;
+#line 168 "../../../../../src/options/base_options"
+struct languageHelp__option_t languageHelp;
+#line 175 "../../../../../src/options/base_options"
+struct verbosity__option_t verbosity;
+#line 182 "../../../../../src/options/base_options"
+struct statistics__option_t statistics;
+#line 186 "../../../../../src/options/base_options"
+struct statsEveryQuery__option_t statsEveryQuery;
+#line 190 "../../../../../src/options/base_options"
+struct statsHideZeros__option_t statsHideZeros;
+#line 196 "../../../../../src/options/base_options"
+struct parseOnly__option_t parseOnly;
+#line 199 "../../../../../src/options/base_options"
+struct preprocessOnly__option_t preprocessOnly;
+#line 207 "../../../../../src/options/base_options"
+struct printSuccess__option_t printSuccess;
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/base_options.h b/src/options/base_options.h
new file mode 100644
index 0000000..009dd5e
--- /dev/null
+++ b/src/options/base_options.h
@@ -0,0 +1,310 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__BASE_H
+#define __CVC4__OPTIONS__BASE_H
+
+#include "options/options.h"
+
+#line 160 "../../../../../src/options/base_options"
+#include <iosfwd>
+#line 161 "../../../../../src/options/base_options"
+#include <iosfwd>
+#line 162 "../../../../../src/options/base_options"
+#include <iosfwd>
+#line 164 "../../../../../src/options/base_options"
+#include "options/language.h"
+#line 166 "../../../../../src/options/base_options"
+#include "options/language.h"
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__BASE__FOR_OPTION_HOLDER \
+  binary_name__option_t::type binary_name; \
+  bool binary_name__setByUser__; \
+  in__option_t::type in; \
+  bool in__setByUser__; \
+  out__option_t::type out; \
+  bool out__setByUser__; \
+  err__option_t::type err; \
+  bool err__setByUser__; \
+  inputLanguage__option_t::type inputLanguage; \
+  bool inputLanguage__setByUser__; \
+  outputLanguage__option_t::type outputLanguage; \
+  bool outputLanguage__setByUser__; \
+  languageHelp__option_t::type languageHelp; \
+  bool languageHelp__setByUser__; \
+  verbosity__option_t::type verbosity; \
+  bool verbosity__setByUser__; \
+  statistics__option_t::type statistics; \
+  bool statistics__setByUser__; \
+  statsEveryQuery__option_t::type statsEveryQuery; \
+  bool statsEveryQuery__setByUser__; \
+  statsHideZeros__option_t::type statsHideZeros; \
+  bool statsHideZeros__setByUser__; \
+  parseOnly__option_t::type parseOnly; \
+  bool parseOnly__setByUser__; \
+  preprocessOnly__option_t::type preprocessOnly; \
+  bool preprocessOnly__setByUser__; \
+  printSuccess__option_t::type printSuccess; \
+  bool printSuccess__setByUser__;
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+#line 158 "../../../../../src/options/base_options"
+extern struct CVC4_PUBLIC binary_name__option_t { typedef std::string type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } binary_name CVC4_PUBLIC;
+#line 160 "../../../../../src/options/base_options"
+extern struct CVC4_PUBLIC in__option_t { typedef std::istream* type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } in CVC4_PUBLIC;
+#line 161 "../../../../../src/options/base_options"
+extern struct CVC4_PUBLIC out__option_t { typedef std::ostream* type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } out CVC4_PUBLIC;
+#line 162 "../../../../../src/options/base_options"
+extern struct CVC4_PUBLIC err__option_t { typedef std::ostream* type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } err CVC4_PUBLIC;
+#line 164 "../../../../../src/options/base_options"
+extern struct CVC4_PUBLIC inputLanguage__option_t { typedef InputLanguage type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } inputLanguage CVC4_PUBLIC;
+#line 166 "../../../../../src/options/base_options"
+extern struct CVC4_PUBLIC outputLanguage__option_t { typedef OutputLanguage type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } outputLanguage CVC4_PUBLIC;
+#line 168 "../../../../../src/options/base_options"
+extern struct CVC4_PUBLIC languageHelp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } languageHelp CVC4_PUBLIC;
+#line 175 "../../../../../src/options/base_options"
+extern struct CVC4_PUBLIC verbosity__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } verbosity CVC4_PUBLIC;
+#line 182 "../../../../../src/options/base_options"
+extern struct CVC4_PUBLIC statistics__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } statistics CVC4_PUBLIC;
+#line 186 "../../../../../src/options/base_options"
+extern struct CVC4_PUBLIC statsEveryQuery__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } statsEveryQuery CVC4_PUBLIC;
+#line 190 "../../../../../src/options/base_options"
+extern struct CVC4_PUBLIC statsHideZeros__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } statsHideZeros CVC4_PUBLIC;
+#line 196 "../../../../../src/options/base_options"
+extern struct CVC4_PUBLIC parseOnly__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } parseOnly CVC4_PUBLIC;
+#line 199 "../../../../../src/options/base_options"
+extern struct CVC4_PUBLIC preprocessOnly__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } preprocessOnly CVC4_PUBLIC;
+#line 207 "../../../../../src/options/base_options"
+extern struct CVC4_PUBLIC printSuccess__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } printSuccess CVC4_PUBLIC;
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+#line 158 "../../../../../src/options/base_options"
+template <> void Options::set(options::binary_name__option_t, const options::binary_name__option_t::type& x);
+#line 158 "../../../../../src/options/base_options"
+template <> const options::binary_name__option_t::type& Options::operator[](options::binary_name__option_t) const;
+#line 158 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::binary_name__option_t) const;
+#line 158 "../../../../../src/options/base_options"
+template <> void Options::assign(options::binary_name__option_t, std::string option, std::string value);
+#line 160 "../../../../../src/options/base_options"
+template <> void Options::set(options::in__option_t, const options::in__option_t::type& x);
+#line 160 "../../../../../src/options/base_options"
+template <> const options::in__option_t::type& Options::operator[](options::in__option_t) const;
+#line 160 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::in__option_t) const;
+#line 160 "../../../../../src/options/base_options"
+template <> void Options::assign(options::in__option_t, std::string option, std::string value);
+#line 161 "../../../../../src/options/base_options"
+template <> void Options::set(options::out__option_t, const options::out__option_t::type& x);
+#line 161 "../../../../../src/options/base_options"
+template <> const options::out__option_t::type& Options::operator[](options::out__option_t) const;
+#line 161 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::out__option_t) const;
+#line 161 "../../../../../src/options/base_options"
+template <> void Options::assign(options::out__option_t, std::string option, std::string value);
+#line 162 "../../../../../src/options/base_options"
+template <> void Options::set(options::err__option_t, const options::err__option_t::type& x);
+#line 162 "../../../../../src/options/base_options"
+template <> const options::err__option_t::type& Options::operator[](options::err__option_t) const;
+#line 162 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::err__option_t) const;
+#line 162 "../../../../../src/options/base_options"
+template <> void Options::assign(options::err__option_t, std::string option, std::string value);
+#line 164 "../../../../../src/options/base_options"
+template <> void Options::set(options::inputLanguage__option_t, const options::inputLanguage__option_t::type& x);
+#line 164 "../../../../../src/options/base_options"
+template <> const options::inputLanguage__option_t::type& Options::operator[](options::inputLanguage__option_t) const;
+#line 164 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::inputLanguage__option_t) const;
+#line 164 "../../../../../src/options/base_options"
+template <> void Options::assign(options::inputLanguage__option_t, std::string option, std::string value);
+#line 166 "../../../../../src/options/base_options"
+template <> void Options::set(options::outputLanguage__option_t, const options::outputLanguage__option_t::type& x);
+#line 166 "../../../../../src/options/base_options"
+template <> const options::outputLanguage__option_t::type& Options::operator[](options::outputLanguage__option_t) const;
+#line 166 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::outputLanguage__option_t) const;
+#line 166 "../../../../../src/options/base_options"
+template <> void Options::assign(options::outputLanguage__option_t, std::string option, std::string value);
+#line 168 "../../../../../src/options/base_options"
+template <> void Options::set(options::languageHelp__option_t, const options::languageHelp__option_t::type& x);
+#line 168 "../../../../../src/options/base_options"
+template <> const options::languageHelp__option_t::type& Options::operator[](options::languageHelp__option_t) const;
+#line 168 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::languageHelp__option_t) const;
+#line 168 "../../../../../src/options/base_options"
+template <> void Options::assignBool(options::languageHelp__option_t, std::string option, bool value);
+#line 175 "../../../../../src/options/base_options"
+template <> void Options::set(options::verbosity__option_t, const options::verbosity__option_t::type& x);
+#line 175 "../../../../../src/options/base_options"
+template <> const options::verbosity__option_t::type& Options::operator[](options::verbosity__option_t) const;
+#line 175 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::verbosity__option_t) const;
+#line 175 "../../../../../src/options/base_options"
+template <> void Options::assign(options::verbosity__option_t, std::string option, std::string value);
+#line 182 "../../../../../src/options/base_options"
+template <> const options::statistics__option_t::type& Options::operator[](options::statistics__option_t) const;
+#line 182 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::statistics__option_t) const;
+#line 182 "../../../../../src/options/base_options"
+template <> void Options::assignBool(options::statistics__option_t, std::string option, bool value);
+#line 186 "../../../../../src/options/base_options"
+template <> const options::statsEveryQuery__option_t::type& Options::operator[](options::statsEveryQuery__option_t) const;
+#line 186 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::statsEveryQuery__option_t) const;
+#line 186 "../../../../../src/options/base_options"
+template <> void Options::assignBool(options::statsEveryQuery__option_t, std::string option, bool value);
+#line 190 "../../../../../src/options/base_options"
+template <> const options::statsHideZeros__option_t::type& Options::operator[](options::statsHideZeros__option_t) const;
+#line 190 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::statsHideZeros__option_t) const;
+#line 190 "../../../../../src/options/base_options"
+template <> void Options::assignBool(options::statsHideZeros__option_t, std::string option, bool value);
+#line 196 "../../../../../src/options/base_options"
+template <> void Options::set(options::parseOnly__option_t, const options::parseOnly__option_t::type& x);
+#line 196 "../../../../../src/options/base_options"
+template <> const options::parseOnly__option_t::type& Options::operator[](options::parseOnly__option_t) const;
+#line 196 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::parseOnly__option_t) const;
+#line 196 "../../../../../src/options/base_options"
+template <> void Options::assignBool(options::parseOnly__option_t, std::string option, bool value);
+#line 199 "../../../../../src/options/base_options"
+template <> const options::preprocessOnly__option_t::type& Options::operator[](options::preprocessOnly__option_t) const;
+#line 199 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::preprocessOnly__option_t) const;
+#line 199 "../../../../../src/options/base_options"
+template <> void Options::assignBool(options::preprocessOnly__option_t, std::string option, bool value);
+#line 207 "../../../../../src/options/base_options"
+template <> const options::printSuccess__option_t::type& Options::operator[](options::printSuccess__option_t) const;
+#line 207 "../../../../../src/options/base_options"
+template <> bool Options::wasSetByUser(options::printSuccess__option_t) const;
+#line 207 "../../../../../src/options/base_options"
+template <> void Options::assignBool(options::printSuccess__option_t, std::string option, bool value);
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+#line 158 "../../../../../src/options/base_options"
+inline binary_name__option_t::type binary_name__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 158 "../../../../../src/options/base_options"
+inline bool binary_name__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 158 "../../../../../src/options/base_options"
+inline void binary_name__option_t::set(const binary_name__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 160 "../../../../../src/options/base_options"
+inline in__option_t::type in__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 160 "../../../../../src/options/base_options"
+inline bool in__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 160 "../../../../../src/options/base_options"
+inline void in__option_t::set(const in__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 161 "../../../../../src/options/base_options"
+inline out__option_t::type out__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 161 "../../../../../src/options/base_options"
+inline bool out__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 161 "../../../../../src/options/base_options"
+inline void out__option_t::set(const out__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 162 "../../../../../src/options/base_options"
+inline err__option_t::type err__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 162 "../../../../../src/options/base_options"
+inline bool err__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 162 "../../../../../src/options/base_options"
+inline void err__option_t::set(const err__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 164 "../../../../../src/options/base_options"
+inline inputLanguage__option_t::type inputLanguage__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 164 "../../../../../src/options/base_options"
+inline bool inputLanguage__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 164 "../../../../../src/options/base_options"
+inline void inputLanguage__option_t::set(const inputLanguage__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 166 "../../../../../src/options/base_options"
+inline outputLanguage__option_t::type outputLanguage__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 166 "../../../../../src/options/base_options"
+inline bool outputLanguage__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 166 "../../../../../src/options/base_options"
+inline void outputLanguage__option_t::set(const outputLanguage__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 168 "../../../../../src/options/base_options"
+inline languageHelp__option_t::type languageHelp__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 168 "../../../../../src/options/base_options"
+inline bool languageHelp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 168 "../../../../../src/options/base_options"
+inline void languageHelp__option_t::set(const languageHelp__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 175 "../../../../../src/options/base_options"
+inline verbosity__option_t::type verbosity__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 175 "../../../../../src/options/base_options"
+inline bool verbosity__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 175 "../../../../../src/options/base_options"
+inline void verbosity__option_t::set(const verbosity__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 182 "../../../../../src/options/base_options"
+inline statistics__option_t::type statistics__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 182 "../../../../../src/options/base_options"
+inline bool statistics__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 186 "../../../../../src/options/base_options"
+inline statsEveryQuery__option_t::type statsEveryQuery__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 186 "../../../../../src/options/base_options"
+inline bool statsEveryQuery__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 190 "../../../../../src/options/base_options"
+inline statsHideZeros__option_t::type statsHideZeros__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 190 "../../../../../src/options/base_options"
+inline bool statsHideZeros__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 196 "../../../../../src/options/base_options"
+inline parseOnly__option_t::type parseOnly__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 196 "../../../../../src/options/base_options"
+inline bool parseOnly__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 196 "../../../../../src/options/base_options"
+inline void parseOnly__option_t::set(const parseOnly__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 199 "../../../../../src/options/base_options"
+inline preprocessOnly__option_t::type preprocessOnly__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 199 "../../../../../src/options/base_options"
+inline bool preprocessOnly__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 207 "../../../../../src/options/base_options"
+inline printSuccess__option_t::type printSuccess__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 207 "../../../../../src/options/base_options"
+inline bool printSuccess__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__BASE_H */
diff --git a/src/options/base_options_template.cpp b/src/options/base_options_template.cpp
new file mode 100644
index 0000000..bdcef60
--- /dev/null
+++ b/src/options/base_options_template.cpp
@@ -0,0 +1,33 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+${module_accessors}
+
+#line 24 "${template}"
+
+namespace options {
+
+${module_global_definitions}
+
+#line 30 "${template}"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/base_options_template.h b/src/options/base_options_template.h
new file mode 100644
index 0000000..486b793
--- /dev/null
+++ b/src/options/base_options_template.h
@@ -0,0 +1,55 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__${module_id}_H
+#define __CVC4__OPTIONS__${module_id}_H
+
+#include "options/options.h"
+${module_includes}
+
+#line 26 "${template}"
+
+${module_optionholder_spec}
+
+#line 30 "${template}"
+
+namespace CVC4 {
+
+namespace options {
+
+${module_decls}
+
+#line 38 "${template}"
+
+}/* CVC4::options namespace */
+
+${module_specializations}
+
+#line 44 "${template}"
+
+namespace options {
+
+${module_inlines}
+
+#line 50 "${template}"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__${module_id}_H */
diff --git a/src/options/booleans_options b/src/options/booleans_options
new file mode 100644
index 0000000..6143f4f
--- /dev/null
+++ b/src/options/booleans_options
@@ -0,0 +1,9 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module BOOLEANS "options/booleans_options.h" Boolean theory
+
+
+endmodule
diff --git a/src/options/booleans_options.cpp b/src/options/booleans_options.cpp
new file mode 100644
index 0000000..2762db1
--- /dev/null
+++ b/src/options/booleans_options.cpp
@@ -0,0 +1,33 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/booleans_options.h b/src/options/booleans_options.h
new file mode 100644
index 0000000..5f7e4ce
--- /dev/null
+++ b/src/options/booleans_options.h
@@ -0,0 +1,55 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__BOOLEANS_H
+#define __CVC4__OPTIONS__BOOLEANS_H
+
+#include "options/options.h"
+
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__BOOLEANS__FOR_OPTION_HOLDER
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__BOOLEANS_H */
diff --git a/src/options/builtin_options b/src/options/builtin_options
new file mode 100644
index 0000000..ea4229b
--- /dev/null
+++ b/src/options/builtin_options
@@ -0,0 +1,8 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module BUILTIN "options/builtin_options.h" Builtin theory
+
+endmodule
diff --git a/src/options/builtin_options.cpp b/src/options/builtin_options.cpp
new file mode 100644
index 0000000..2762db1
--- /dev/null
+++ b/src/options/builtin_options.cpp
@@ -0,0 +1,33 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/builtin_options.h b/src/options/builtin_options.h
new file mode 100644
index 0000000..b86a0b3
--- /dev/null
+++ b/src/options/builtin_options.h
@@ -0,0 +1,55 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__BUILTIN_H
+#define __CVC4__OPTIONS__BUILTIN_H
+
+#include "options/options.h"
+
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__BUILTIN__FOR_OPTION_HOLDER
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__BUILTIN_H */
diff --git a/src/options/bv_bitblast_mode.cpp b/src/options/bv_bitblast_mode.cpp
new file mode 100644
index 0000000..f331345
--- /dev/null
+++ b/src/options/bv_bitblast_mode.cpp
@@ -0,0 +1,71 @@
+/*********************                                                        */
+/*! \file bv_bitblast_mode.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Bitblast modes for bit-vector solver.
+ **
+ ** Bitblast modes for bit-vector solver.
+ **/
+
+#include "options/bv_bitblast_mode.h"
+
+#include <iostream>
+
+namespace CVC4 {
+
+std::ostream& operator<<(std::ostream& out, theory::bv::BitblastMode mode) {
+  switch(mode) {
+  case theory::bv::BITBLAST_MODE_LAZY:
+    out << "BITBLAST_MODE_LAZY";
+    break;
+  case theory::bv::BITBLAST_MODE_EAGER:
+    out << "BITBLAST_MODE_EAGER";
+    break;
+  default:
+    out << "BitblastMode:UNKNOWN![" << unsigned(mode) << "]";
+  }
+
+  return out;
+}
+
+std::ostream& operator<<(std::ostream& out, theory::bv::BvSlicerMode mode) {
+  switch(mode) {
+  case theory::bv::BITVECTOR_SLICER_ON:
+    out << "BITVECTOR_SLICER_ON";
+    break;
+  case theory::bv::BITVECTOR_SLICER_OFF:
+    out << "BITVECTOR_SLICER_OFF";
+    break;
+  case theory::bv::BITVECTOR_SLICER_AUTO:
+    out << "BITVECTOR_SLICER_AUTO";
+    break;
+  default:
+    out << "BvSlicerMode:UNKNOWN![" << unsigned(mode) << "]";
+  }
+
+  return out;
+}
+
+std::ostream& operator<<(std::ostream& out, theory::bv::SatSolverMode solver) {
+  switch(solver) {
+  case theory::bv::SAT_SOLVER_MINISAT:
+    out << "SAT_SOLVER_MINISAT"; 
+    break;
+  case theory::bv::SAT_SOLVER_CRYPTOMINISAT:
+    out << "SAT_SOLVER_CRYPTOMINISAT"; 
+    break;
+  default:
+    out << "SatSolverMode:UNKNOWN![" << unsigned(solver) << "]";
+  }
+
+  return out;
+}
+
+}/* CVC4 namespace */
diff --git a/src/options/bv_bitblast_mode.h b/src/options/bv_bitblast_mode.h
new file mode 100644
index 0000000..3a64741
--- /dev/null
+++ b/src/options/bv_bitblast_mode.h
@@ -0,0 +1,79 @@
+/*********************                                                        */
+/*! \file bv_bitblast_mode.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Bitblasting modes for bit-vector solver.
+ **
+ ** Bitblasting modes for bit-vector solver.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__BV__BITBLAST_MODE_H
+#define __CVC4__THEORY__BV__BITBLAST_MODE_H
+
+#include <iosfwd>
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+/** Enumeration of bit-blasting modes */
+enum BitblastMode {
+
+  /**
+   * Lazy bit-blasting that separates boolean reasoning
+   * from term reasoning.
+   */
+  BITBLAST_MODE_LAZY,
+
+  /**
+   * Bit-blast eagerly to the bit-vector SAT solver.
+   */
+  BITBLAST_MODE_EAGER
+};/* enum BitblastMode */
+
+/** Enumeration of bit-vector equality slicer mode */
+enum BvSlicerMode {
+
+  /**
+   * Force the slicer on. 
+   */
+  BITVECTOR_SLICER_ON, 
+
+  /**
+   * Slicer off. 
+   */
+  BITVECTOR_SLICER_OFF, 
+
+  /**
+   * Auto enable slicer if problem has only equalities.
+   */
+  BITVECTOR_SLICER_AUTO
+
+};/* enum BvSlicerMode */
+
+/** Enumeration of sat solvers that can be used. */
+enum SatSolverMode {
+  SAT_SOLVER_MINISAT,
+  SAT_SOLVER_CRYPTOMINISAT,
+};/* enum SatSolver */
+
+
+}/* CVC4::theory::bv namespace */
+}/* CVC4::theory namespace */
+
+std::ostream& operator<<(std::ostream& out, theory::bv::BitblastMode mode);
+std::ostream& operator<<(std::ostream& out, theory::bv::BvSlicerMode mode);
+std::ostream& operator<<(std::ostream& out, theory::bv::SatSolverMode mode);
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__BV__BITBLAST_MODE_H */
diff --git a/src/options/bv_options b/src/options/bv_options
new file mode 100644
index 0000000..035d6ae
--- /dev/null
+++ b/src/options/bv_options
@@ -0,0 +1,84 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module BV "options/bv_options.h" Bitvector theory
+
+# Option to set the bit-blasting mode (lazy, eager)
+
+expert-option bvSatSolver bv-sat-solver --bv-sat-solver=MODE CVC4::theory::bv::SatSolverMode :predicate satSolverEnabledBuild :handler stringToSatSolver :default CVC4::theory::bv::SAT_SOLVER_MINISAT :read-write :include "options/bv_bitblast_mode.h"
+ choose which sat solver to use, see --bv-sat-solver=help
+
+option bitblastMode bitblast --bitblast=MODE CVC4::theory::bv::BitblastMode :handler stringToBitblastMode :default CVC4::theory::bv::BITBLAST_MODE_LAZY :read-write :include "options/bv_bitblast_mode.h"
+ choose bitblasting mode, see --bitblast=help
+
+# Options for eager bit-blasting
+
+option bitvectorAig --bitblast-aig bool :default false :predicate abcEnabledBuild setBitblastAig :read-write
+ bitblast by first converting to AIG (implies --bitblast=eager)
+expert-option bitvectorAigSimplifications --bv-aig-simp=COMMAND std::string :default "" :predicate abcEnabledBuild :read-write :link --bitblast-aig :link-smt bitblast-aig
+ abc command to run AIG simplifications (implies --bitblast-aig, default is "balance;drw")
+
+# Options for lazy bit-blasting
+option bitvectorPropagate --bv-propagate bool :default true :read-write
+ use bit-vector propagation in the bit-blaster
+
+option bitvectorEqualitySolver --bv-eq-solver bool :default true :read-write
+ use the equality engine for the bit-vector theory (only if --bitblast=lazy)
+
+option bitvectorEqualitySlicer --bv-eq-slicer=MODE CVC4::theory::bv::BvSlicerMode :handler stringToBvSlicerMode :default CVC4::theory::bv::BITVECTOR_SLICER_OFF :read-write :include "options/bv_bitblast_mode.h" :read-write :link --bv-eq-solver :link-smt bv-eq-solver
+ turn on the slicing equality solver for the bit-vector theory (only if --bitblast=lazy)
+
+
+option bitvectorInequalitySolver --bv-inequality-solver bool :default true :read-write
+ turn on the inequality solver for the bit-vector theory (only if --bitblast=lazy)
+
+option bitvectorAlgebraicSolver --bv-algebraic-solver bool :default true :read-write
+ turn on the algebraic solver for the bit-vector theory (only if --bitblast=lazy)
+
+expert-option bitvectorAlgebraicBudget --bv-algebraic-budget unsigned :default 1500 :read-write :link --bv-algebraic-solver :link-smt bv-algebraic-solver
+ the budget allowed for the algebraic solver in number of SAT conflicts
+
+# General options
+
+option bitvectorToBool --bv-to-bool bool :default false :read-write
+ lift bit-vectors of size 1 to booleans when possible
+
+option boolToBitvector --bool-to-bv bool :default false :read-write
+ convert booleans to bit-vectors of size 1 when possible
+
+option bitvectorDivByZeroConst --bv-div-zero-const bool :default false :read-write
+ always return -1 on division by zero
+
+expert-option bvExtractArithRewrite --bv-extract-arith bool :default false :read-write
+ enable rewrite pushing extract [i:0] over arithmetic operations (can blow up)
+
+expert-option bvAbstraction --bv-abstraction bool :default false :read-write
+ mcm benchmark abstraction
+
+expert-option skolemizeArguments --bv-skolemize bool :default false :read-write
+ skolemize arguments for bv abstraction (only does something if --bv-abstraction is on)
+
+expert-option bvNumFunc --bv-num-func=NUM unsigned :default 1
+ number of function symbols in conflicts that are generalized
+
+expert-option bvEagerExplanations --bv-eager-explanations bool :default false :read-write
+ compute bit-blasting propagation explanations eagerly
+
+expert-option bitvectorQuickXplain --bv-quick-xplain bool :default false
+ minimize bv conflicts using the QuickXplain algorithm
+
+expert-option bvIntroducePow2 --bv-intro-pow2 bool :default false
+ introduce bitvector powers of two as a preprocessing pass
+
+option bvLazyRewriteExtf --bv-lazy-rewrite-extf bool :default true :read-write
+ lazily rewrite extended functions like bv2nat and int2bv
+ 
+option bvLazyReduceExtf --bv-lazy-reduce-extf bool :default false :read-write
+ reduce extended functions like bv2nat and int2bv at last call instead of full effort
+ 
+option bvAlgExtf --bv-alg-extf bool :default true :read-write
+ algebraic inferences for extended functions
+ 
+endmodule
diff --git a/src/options/bv_options.cpp b/src/options/bv_options.cpp
new file mode 100644
index 0000000..ffead76
--- /dev/null
+++ b/src/options/bv_options.cpp
@@ -0,0 +1,211 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+#line 10 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bvSatSolver__option_t, const options::bvSatSolver__option_t::type& x) { d_holder->bvSatSolver = x; }
+#line 10 "../../../../../src/options/bv_options"
+template <> const options::bvSatSolver__option_t::type& Options::operator[](options::bvSatSolver__option_t) const { return d_holder->bvSatSolver; }
+#line 10 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bvSatSolver__option_t) const { return d_holder->bvSatSolver__setByUser__; }
+#line 13 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitblastMode__option_t, const options::bitblastMode__option_t::type& x) { d_holder->bitblastMode = x; }
+#line 13 "../../../../../src/options/bv_options"
+template <> const options::bitblastMode__option_t::type& Options::operator[](options::bitblastMode__option_t) const { return d_holder->bitblastMode; }
+#line 13 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitblastMode__option_t) const { return d_holder->bitblastMode__setByUser__; }
+#line 18 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitvectorAig__option_t, const options::bitvectorAig__option_t::type& x) { d_holder->bitvectorAig = x; }
+#line 18 "../../../../../src/options/bv_options"
+template <> const options::bitvectorAig__option_t::type& Options::operator[](options::bitvectorAig__option_t) const { return d_holder->bitvectorAig; }
+#line 18 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorAig__option_t) const { return d_holder->bitvectorAig__setByUser__; }
+#line 20 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitvectorAigSimplifications__option_t, const options::bitvectorAigSimplifications__option_t::type& x) { d_holder->bitvectorAigSimplifications = x; }
+#line 20 "../../../../../src/options/bv_options"
+template <> const options::bitvectorAigSimplifications__option_t::type& Options::operator[](options::bitvectorAigSimplifications__option_t) const { return d_holder->bitvectorAigSimplifications; }
+#line 20 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorAigSimplifications__option_t) const { return d_holder->bitvectorAigSimplifications__setByUser__; }
+#line 24 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitvectorPropagate__option_t, const options::bitvectorPropagate__option_t::type& x) { d_holder->bitvectorPropagate = x; }
+#line 24 "../../../../../src/options/bv_options"
+template <> const options::bitvectorPropagate__option_t::type& Options::operator[](options::bitvectorPropagate__option_t) const { return d_holder->bitvectorPropagate; }
+#line 24 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorPropagate__option_t) const { return d_holder->bitvectorPropagate__setByUser__; }
+#line 27 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitvectorEqualitySolver__option_t, const options::bitvectorEqualitySolver__option_t::type& x) { d_holder->bitvectorEqualitySolver = x; }
+#line 27 "../../../../../src/options/bv_options"
+template <> const options::bitvectorEqualitySolver__option_t::type& Options::operator[](options::bitvectorEqualitySolver__option_t) const { return d_holder->bitvectorEqualitySolver; }
+#line 27 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorEqualitySolver__option_t) const { return d_holder->bitvectorEqualitySolver__setByUser__; }
+#line 30 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitvectorEqualitySlicer__option_t, const options::bitvectorEqualitySlicer__option_t::type& x) { d_holder->bitvectorEqualitySlicer = x; }
+#line 30 "../../../../../src/options/bv_options"
+template <> const options::bitvectorEqualitySlicer__option_t::type& Options::operator[](options::bitvectorEqualitySlicer__option_t) const { return d_holder->bitvectorEqualitySlicer; }
+#line 30 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorEqualitySlicer__option_t) const { return d_holder->bitvectorEqualitySlicer__setByUser__; }
+#line 34 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitvectorInequalitySolver__option_t, const options::bitvectorInequalitySolver__option_t::type& x) { d_holder->bitvectorInequalitySolver = x; }
+#line 34 "../../../../../src/options/bv_options"
+template <> const options::bitvectorInequalitySolver__option_t::type& Options::operator[](options::bitvectorInequalitySolver__option_t) const { return d_holder->bitvectorInequalitySolver; }
+#line 34 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorInequalitySolver__option_t) const { return d_holder->bitvectorInequalitySolver__setByUser__; }
+#line 37 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitvectorAlgebraicSolver__option_t, const options::bitvectorAlgebraicSolver__option_t::type& x) { d_holder->bitvectorAlgebraicSolver = x; }
+#line 37 "../../../../../src/options/bv_options"
+template <> const options::bitvectorAlgebraicSolver__option_t::type& Options::operator[](options::bitvectorAlgebraicSolver__option_t) const { return d_holder->bitvectorAlgebraicSolver; }
+#line 37 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorAlgebraicSolver__option_t) const { return d_holder->bitvectorAlgebraicSolver__setByUser__; }
+#line 40 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitvectorAlgebraicBudget__option_t, const options::bitvectorAlgebraicBudget__option_t::type& x) { d_holder->bitvectorAlgebraicBudget = x; }
+#line 40 "../../../../../src/options/bv_options"
+template <> const options::bitvectorAlgebraicBudget__option_t::type& Options::operator[](options::bitvectorAlgebraicBudget__option_t) const { return d_holder->bitvectorAlgebraicBudget; }
+#line 40 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorAlgebraicBudget__option_t) const { return d_holder->bitvectorAlgebraicBudget__setByUser__; }
+#line 45 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitvectorToBool__option_t, const options::bitvectorToBool__option_t::type& x) { d_holder->bitvectorToBool = x; }
+#line 45 "../../../../../src/options/bv_options"
+template <> const options::bitvectorToBool__option_t::type& Options::operator[](options::bitvectorToBool__option_t) const { return d_holder->bitvectorToBool; }
+#line 45 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorToBool__option_t) const { return d_holder->bitvectorToBool__setByUser__; }
+#line 48 "../../../../../src/options/bv_options"
+template <> void Options::set(options::boolToBitvector__option_t, const options::boolToBitvector__option_t::type& x) { d_holder->boolToBitvector = x; }
+#line 48 "../../../../../src/options/bv_options"
+template <> const options::boolToBitvector__option_t::type& Options::operator[](options::boolToBitvector__option_t) const { return d_holder->boolToBitvector; }
+#line 48 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::boolToBitvector__option_t) const { return d_holder->boolToBitvector__setByUser__; }
+#line 51 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitvectorDivByZeroConst__option_t, const options::bitvectorDivByZeroConst__option_t::type& x) { d_holder->bitvectorDivByZeroConst = x; }
+#line 51 "../../../../../src/options/bv_options"
+template <> const options::bitvectorDivByZeroConst__option_t::type& Options::operator[](options::bitvectorDivByZeroConst__option_t) const { return d_holder->bitvectorDivByZeroConst; }
+#line 51 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorDivByZeroConst__option_t) const { return d_holder->bitvectorDivByZeroConst__setByUser__; }
+#line 54 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bvExtractArithRewrite__option_t, const options::bvExtractArithRewrite__option_t::type& x) { d_holder->bvExtractArithRewrite = x; }
+#line 54 "../../../../../src/options/bv_options"
+template <> const options::bvExtractArithRewrite__option_t::type& Options::operator[](options::bvExtractArithRewrite__option_t) const { return d_holder->bvExtractArithRewrite; }
+#line 54 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bvExtractArithRewrite__option_t) const { return d_holder->bvExtractArithRewrite__setByUser__; }
+#line 57 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bvAbstraction__option_t, const options::bvAbstraction__option_t::type& x) { d_holder->bvAbstraction = x; }
+#line 57 "../../../../../src/options/bv_options"
+template <> const options::bvAbstraction__option_t::type& Options::operator[](options::bvAbstraction__option_t) const { return d_holder->bvAbstraction; }
+#line 57 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bvAbstraction__option_t) const { return d_holder->bvAbstraction__setByUser__; }
+#line 60 "../../../../../src/options/bv_options"
+template <> void Options::set(options::skolemizeArguments__option_t, const options::skolemizeArguments__option_t::type& x) { d_holder->skolemizeArguments = x; }
+#line 60 "../../../../../src/options/bv_options"
+template <> const options::skolemizeArguments__option_t::type& Options::operator[](options::skolemizeArguments__option_t) const { return d_holder->skolemizeArguments; }
+#line 60 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::skolemizeArguments__option_t) const { return d_holder->skolemizeArguments__setByUser__; }
+#line 63 "../../../../../src/options/bv_options"
+template <> const options::bvNumFunc__option_t::type& Options::operator[](options::bvNumFunc__option_t) const { return d_holder->bvNumFunc; }
+#line 63 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bvNumFunc__option_t) const { return d_holder->bvNumFunc__setByUser__; }
+#line 66 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bvEagerExplanations__option_t, const options::bvEagerExplanations__option_t::type& x) { d_holder->bvEagerExplanations = x; }
+#line 66 "../../../../../src/options/bv_options"
+template <> const options::bvEagerExplanations__option_t::type& Options::operator[](options::bvEagerExplanations__option_t) const { return d_holder->bvEagerExplanations; }
+#line 66 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bvEagerExplanations__option_t) const { return d_holder->bvEagerExplanations__setByUser__; }
+#line 69 "../../../../../src/options/bv_options"
+template <> const options::bitvectorQuickXplain__option_t::type& Options::operator[](options::bitvectorQuickXplain__option_t) const { return d_holder->bitvectorQuickXplain; }
+#line 69 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorQuickXplain__option_t) const { return d_holder->bitvectorQuickXplain__setByUser__; }
+#line 72 "../../../../../src/options/bv_options"
+template <> const options::bvIntroducePow2__option_t::type& Options::operator[](options::bvIntroducePow2__option_t) const { return d_holder->bvIntroducePow2; }
+#line 72 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bvIntroducePow2__option_t) const { return d_holder->bvIntroducePow2__setByUser__; }
+#line 75 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bvLazyRewriteExtf__option_t, const options::bvLazyRewriteExtf__option_t::type& x) { d_holder->bvLazyRewriteExtf = x; }
+#line 75 "../../../../../src/options/bv_options"
+template <> const options::bvLazyRewriteExtf__option_t::type& Options::operator[](options::bvLazyRewriteExtf__option_t) const { return d_holder->bvLazyRewriteExtf; }
+#line 75 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bvLazyRewriteExtf__option_t) const { return d_holder->bvLazyRewriteExtf__setByUser__; }
+#line 78 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bvLazyReduceExtf__option_t, const options::bvLazyReduceExtf__option_t::type& x) { d_holder->bvLazyReduceExtf = x; }
+#line 78 "../../../../../src/options/bv_options"
+template <> const options::bvLazyReduceExtf__option_t::type& Options::operator[](options::bvLazyReduceExtf__option_t) const { return d_holder->bvLazyReduceExtf; }
+#line 78 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bvLazyReduceExtf__option_t) const { return d_holder->bvLazyReduceExtf__setByUser__; }
+#line 81 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bvAlgExtf__option_t, const options::bvAlgExtf__option_t::type& x) { d_holder->bvAlgExtf = x; }
+#line 81 "../../../../../src/options/bv_options"
+template <> const options::bvAlgExtf__option_t::type& Options::operator[](options::bvAlgExtf__option_t) const { return d_holder->bvAlgExtf; }
+#line 81 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bvAlgExtf__option_t) const { return d_holder->bvAlgExtf__setByUser__; }
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+#line 10 "../../../../../src/options/bv_options"
+struct bvSatSolver__option_t bvSatSolver;
+#line 13 "../../../../../src/options/bv_options"
+struct bitblastMode__option_t bitblastMode;
+#line 18 "../../../../../src/options/bv_options"
+struct bitvectorAig__option_t bitvectorAig;
+#line 20 "../../../../../src/options/bv_options"
+struct bitvectorAigSimplifications__option_t bitvectorAigSimplifications;
+#line 24 "../../../../../src/options/bv_options"
+struct bitvectorPropagate__option_t bitvectorPropagate;
+#line 27 "../../../../../src/options/bv_options"
+struct bitvectorEqualitySolver__option_t bitvectorEqualitySolver;
+#line 30 "../../../../../src/options/bv_options"
+struct bitvectorEqualitySlicer__option_t bitvectorEqualitySlicer;
+#line 34 "../../../../../src/options/bv_options"
+struct bitvectorInequalitySolver__option_t bitvectorInequalitySolver;
+#line 37 "../../../../../src/options/bv_options"
+struct bitvectorAlgebraicSolver__option_t bitvectorAlgebraicSolver;
+#line 40 "../../../../../src/options/bv_options"
+struct bitvectorAlgebraicBudget__option_t bitvectorAlgebraicBudget;
+#line 45 "../../../../../src/options/bv_options"
+struct bitvectorToBool__option_t bitvectorToBool;
+#line 48 "../../../../../src/options/bv_options"
+struct boolToBitvector__option_t boolToBitvector;
+#line 51 "../../../../../src/options/bv_options"
+struct bitvectorDivByZeroConst__option_t bitvectorDivByZeroConst;
+#line 54 "../../../../../src/options/bv_options"
+struct bvExtractArithRewrite__option_t bvExtractArithRewrite;
+#line 57 "../../../../../src/options/bv_options"
+struct bvAbstraction__option_t bvAbstraction;
+#line 60 "../../../../../src/options/bv_options"
+struct skolemizeArguments__option_t skolemizeArguments;
+#line 63 "../../../../../src/options/bv_options"
+struct bvNumFunc__option_t bvNumFunc;
+#line 66 "../../../../../src/options/bv_options"
+struct bvEagerExplanations__option_t bvEagerExplanations;
+#line 69 "../../../../../src/options/bv_options"
+struct bitvectorQuickXplain__option_t bitvectorQuickXplain;
+#line 72 "../../../../../src/options/bv_options"
+struct bvIntroducePow2__option_t bvIntroducePow2;
+#line 75 "../../../../../src/options/bv_options"
+struct bvLazyRewriteExtf__option_t bvLazyRewriteExtf;
+#line 78 "../../../../../src/options/bv_options"
+struct bvLazyReduceExtf__option_t bvLazyReduceExtf;
+#line 81 "../../../../../src/options/bv_options"
+struct bvAlgExtf__option_t bvAlgExtf;
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/bv_options.h b/src/options/bv_options.h
new file mode 100644
index 0000000..78e2959
--- /dev/null
+++ b/src/options/bv_options.h
@@ -0,0 +1,485 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__BV_H
+#define __CVC4__OPTIONS__BV_H
+
+#include "options/options.h"
+
+#line 10 "../../../../../src/options/bv_options"
+#include "options/bv_bitblast_mode.h"
+#line 13 "../../../../../src/options/bv_options"
+#include "options/bv_bitblast_mode.h"
+#line 30 "../../../../../src/options/bv_options"
+#include "options/bv_bitblast_mode.h"
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__BV__FOR_OPTION_HOLDER \
+  bvSatSolver__option_t::type bvSatSolver; \
+  bool bvSatSolver__setByUser__; \
+  bitblastMode__option_t::type bitblastMode; \
+  bool bitblastMode__setByUser__; \
+  bitvectorAig__option_t::type bitvectorAig; \
+  bool bitvectorAig__setByUser__; \
+  bitvectorAigSimplifications__option_t::type bitvectorAigSimplifications; \
+  bool bitvectorAigSimplifications__setByUser__; \
+  bitvectorPropagate__option_t::type bitvectorPropagate; \
+  bool bitvectorPropagate__setByUser__; \
+  bitvectorEqualitySolver__option_t::type bitvectorEqualitySolver; \
+  bool bitvectorEqualitySolver__setByUser__; \
+  bitvectorEqualitySlicer__option_t::type bitvectorEqualitySlicer; \
+  bool bitvectorEqualitySlicer__setByUser__; \
+  bitvectorInequalitySolver__option_t::type bitvectorInequalitySolver; \
+  bool bitvectorInequalitySolver__setByUser__; \
+  bitvectorAlgebraicSolver__option_t::type bitvectorAlgebraicSolver; \
+  bool bitvectorAlgebraicSolver__setByUser__; \
+  bitvectorAlgebraicBudget__option_t::type bitvectorAlgebraicBudget; \
+  bool bitvectorAlgebraicBudget__setByUser__; \
+  bitvectorToBool__option_t::type bitvectorToBool; \
+  bool bitvectorToBool__setByUser__; \
+  boolToBitvector__option_t::type boolToBitvector; \
+  bool boolToBitvector__setByUser__; \
+  bitvectorDivByZeroConst__option_t::type bitvectorDivByZeroConst; \
+  bool bitvectorDivByZeroConst__setByUser__; \
+  bvExtractArithRewrite__option_t::type bvExtractArithRewrite; \
+  bool bvExtractArithRewrite__setByUser__; \
+  bvAbstraction__option_t::type bvAbstraction; \
+  bool bvAbstraction__setByUser__; \
+  skolemizeArguments__option_t::type skolemizeArguments; \
+  bool skolemizeArguments__setByUser__; \
+  bvNumFunc__option_t::type bvNumFunc; \
+  bool bvNumFunc__setByUser__; \
+  bvEagerExplanations__option_t::type bvEagerExplanations; \
+  bool bvEagerExplanations__setByUser__; \
+  bitvectorQuickXplain__option_t::type bitvectorQuickXplain; \
+  bool bitvectorQuickXplain__setByUser__; \
+  bvIntroducePow2__option_t::type bvIntroducePow2; \
+  bool bvIntroducePow2__setByUser__; \
+  bvLazyRewriteExtf__option_t::type bvLazyRewriteExtf; \
+  bool bvLazyRewriteExtf__setByUser__; \
+  bvLazyReduceExtf__option_t::type bvLazyReduceExtf; \
+  bool bvLazyReduceExtf__setByUser__; \
+  bvAlgExtf__option_t::type bvAlgExtf; \
+  bool bvAlgExtf__setByUser__;
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+#line 10 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bvSatSolver__option_t { typedef CVC4::theory::bv::SatSolverMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bvSatSolver CVC4_PUBLIC;
+#line 13 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bitblastMode__option_t { typedef CVC4::theory::bv::BitblastMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitblastMode CVC4_PUBLIC;
+#line 18 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bitvectorAig__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitvectorAig CVC4_PUBLIC;
+#line 20 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bitvectorAigSimplifications__option_t { typedef std::string type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitvectorAigSimplifications CVC4_PUBLIC;
+#line 24 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bitvectorPropagate__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitvectorPropagate CVC4_PUBLIC;
+#line 27 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bitvectorEqualitySolver__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitvectorEqualitySolver CVC4_PUBLIC;
+#line 30 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bitvectorEqualitySlicer__option_t { typedef CVC4::theory::bv::BvSlicerMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitvectorEqualitySlicer CVC4_PUBLIC;
+#line 34 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bitvectorInequalitySolver__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitvectorInequalitySolver CVC4_PUBLIC;
+#line 37 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bitvectorAlgebraicSolver__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitvectorAlgebraicSolver CVC4_PUBLIC;
+#line 40 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bitvectorAlgebraicBudget__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitvectorAlgebraicBudget CVC4_PUBLIC;
+#line 45 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bitvectorToBool__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitvectorToBool CVC4_PUBLIC;
+#line 48 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC boolToBitvector__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } boolToBitvector CVC4_PUBLIC;
+#line 51 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bitvectorDivByZeroConst__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitvectorDivByZeroConst CVC4_PUBLIC;
+#line 54 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bvExtractArithRewrite__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bvExtractArithRewrite CVC4_PUBLIC;
+#line 57 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bvAbstraction__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bvAbstraction CVC4_PUBLIC;
+#line 60 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC skolemizeArguments__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } skolemizeArguments CVC4_PUBLIC;
+#line 63 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bvNumFunc__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } bvNumFunc CVC4_PUBLIC;
+#line 66 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bvEagerExplanations__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bvEagerExplanations CVC4_PUBLIC;
+#line 69 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bitvectorQuickXplain__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } bitvectorQuickXplain CVC4_PUBLIC;
+#line 72 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bvIntroducePow2__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } bvIntroducePow2 CVC4_PUBLIC;
+#line 75 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bvLazyRewriteExtf__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bvLazyRewriteExtf CVC4_PUBLIC;
+#line 78 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bvLazyReduceExtf__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bvLazyReduceExtf CVC4_PUBLIC;
+#line 81 "../../../../../src/options/bv_options"
+extern struct CVC4_PUBLIC bvAlgExtf__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bvAlgExtf CVC4_PUBLIC;
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+#line 10 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bvSatSolver__option_t, const options::bvSatSolver__option_t::type& x);
+#line 10 "../../../../../src/options/bv_options"
+template <> const options::bvSatSolver__option_t::type& Options::operator[](options::bvSatSolver__option_t) const;
+#line 10 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bvSatSolver__option_t) const;
+#line 10 "../../../../../src/options/bv_options"
+template <> void Options::assign(options::bvSatSolver__option_t, std::string option, std::string value);
+#line 13 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitblastMode__option_t, const options::bitblastMode__option_t::type& x);
+#line 13 "../../../../../src/options/bv_options"
+template <> const options::bitblastMode__option_t::type& Options::operator[](options::bitblastMode__option_t) const;
+#line 13 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitblastMode__option_t) const;
+#line 13 "../../../../../src/options/bv_options"
+template <> void Options::assign(options::bitblastMode__option_t, std::string option, std::string value);
+#line 18 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitvectorAig__option_t, const options::bitvectorAig__option_t::type& x);
+#line 18 "../../../../../src/options/bv_options"
+template <> const options::bitvectorAig__option_t::type& Options::operator[](options::bitvectorAig__option_t) const;
+#line 18 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorAig__option_t) const;
+#line 18 "../../../../../src/options/bv_options"
+template <> void Options::assignBool(options::bitvectorAig__option_t, std::string option, bool value);
+#line 20 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitvectorAigSimplifications__option_t, const options::bitvectorAigSimplifications__option_t::type& x);
+#line 20 "../../../../../src/options/bv_options"
+template <> const options::bitvectorAigSimplifications__option_t::type& Options::operator[](options::bitvectorAigSimplifications__option_t) const;
+#line 20 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorAigSimplifications__option_t) const;
+#line 20 "../../../../../src/options/bv_options"
+template <> void Options::assign(options::bitvectorAigSimplifications__option_t, std::string option, std::string value);
+#line 24 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitvectorPropagate__option_t, const options::bitvectorPropagate__option_t::type& x);
+#line 24 "../../../../../src/options/bv_options"
+template <> const options::bitvectorPropagate__option_t::type& Options::operator[](options::bitvectorPropagate__option_t) const;
+#line 24 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorPropagate__option_t) const;
+#line 24 "../../../../../src/options/bv_options"
+template <> void Options::assignBool(options::bitvectorPropagate__option_t, std::string option, bool value);
+#line 27 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitvectorEqualitySolver__option_t, const options::bitvectorEqualitySolver__option_t::type& x);
+#line 27 "../../../../../src/options/bv_options"
+template <> const options::bitvectorEqualitySolver__option_t::type& Options::operator[](options::bitvectorEqualitySolver__option_t) const;
+#line 27 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorEqualitySolver__option_t) const;
+#line 27 "../../../../../src/options/bv_options"
+template <> void Options::assignBool(options::bitvectorEqualitySolver__option_t, std::string option, bool value);
+#line 30 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitvectorEqualitySlicer__option_t, const options::bitvectorEqualitySlicer__option_t::type& x);
+#line 30 "../../../../../src/options/bv_options"
+template <> const options::bitvectorEqualitySlicer__option_t::type& Options::operator[](options::bitvectorEqualitySlicer__option_t) const;
+#line 30 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorEqualitySlicer__option_t) const;
+#line 30 "../../../../../src/options/bv_options"
+template <> void Options::assign(options::bitvectorEqualitySlicer__option_t, std::string option, std::string value);
+#line 34 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitvectorInequalitySolver__option_t, const options::bitvectorInequalitySolver__option_t::type& x);
+#line 34 "../../../../../src/options/bv_options"
+template <> const options::bitvectorInequalitySolver__option_t::type& Options::operator[](options::bitvectorInequalitySolver__option_t) const;
+#line 34 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorInequalitySolver__option_t) const;
+#line 34 "../../../../../src/options/bv_options"
+template <> void Options::assignBool(options::bitvectorInequalitySolver__option_t, std::string option, bool value);
+#line 37 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitvectorAlgebraicSolver__option_t, const options::bitvectorAlgebraicSolver__option_t::type& x);
+#line 37 "../../../../../src/options/bv_options"
+template <> const options::bitvectorAlgebraicSolver__option_t::type& Options::operator[](options::bitvectorAlgebraicSolver__option_t) const;
+#line 37 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorAlgebraicSolver__option_t) const;
+#line 37 "../../../../../src/options/bv_options"
+template <> void Options::assignBool(options::bitvectorAlgebraicSolver__option_t, std::string option, bool value);
+#line 40 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitvectorAlgebraicBudget__option_t, const options::bitvectorAlgebraicBudget__option_t::type& x);
+#line 40 "../../../../../src/options/bv_options"
+template <> const options::bitvectorAlgebraicBudget__option_t::type& Options::operator[](options::bitvectorAlgebraicBudget__option_t) const;
+#line 40 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorAlgebraicBudget__option_t) const;
+#line 40 "../../../../../src/options/bv_options"
+template <> void Options::assign(options::bitvectorAlgebraicBudget__option_t, std::string option, std::string value);
+#line 45 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitvectorToBool__option_t, const options::bitvectorToBool__option_t::type& x);
+#line 45 "../../../../../src/options/bv_options"
+template <> const options::bitvectorToBool__option_t::type& Options::operator[](options::bitvectorToBool__option_t) const;
+#line 45 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorToBool__option_t) const;
+#line 45 "../../../../../src/options/bv_options"
+template <> void Options::assignBool(options::bitvectorToBool__option_t, std::string option, bool value);
+#line 48 "../../../../../src/options/bv_options"
+template <> void Options::set(options::boolToBitvector__option_t, const options::boolToBitvector__option_t::type& x);
+#line 48 "../../../../../src/options/bv_options"
+template <> const options::boolToBitvector__option_t::type& Options::operator[](options::boolToBitvector__option_t) const;
+#line 48 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::boolToBitvector__option_t) const;
+#line 48 "../../../../../src/options/bv_options"
+template <> void Options::assignBool(options::boolToBitvector__option_t, std::string option, bool value);
+#line 51 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bitvectorDivByZeroConst__option_t, const options::bitvectorDivByZeroConst__option_t::type& x);
+#line 51 "../../../../../src/options/bv_options"
+template <> const options::bitvectorDivByZeroConst__option_t::type& Options::operator[](options::bitvectorDivByZeroConst__option_t) const;
+#line 51 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorDivByZeroConst__option_t) const;
+#line 51 "../../../../../src/options/bv_options"
+template <> void Options::assignBool(options::bitvectorDivByZeroConst__option_t, std::string option, bool value);
+#line 54 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bvExtractArithRewrite__option_t, const options::bvExtractArithRewrite__option_t::type& x);
+#line 54 "../../../../../src/options/bv_options"
+template <> const options::bvExtractArithRewrite__option_t::type& Options::operator[](options::bvExtractArithRewrite__option_t) const;
+#line 54 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bvExtractArithRewrite__option_t) const;
+#line 54 "../../../../../src/options/bv_options"
+template <> void Options::assignBool(options::bvExtractArithRewrite__option_t, std::string option, bool value);
+#line 57 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bvAbstraction__option_t, const options::bvAbstraction__option_t::type& x);
+#line 57 "../../../../../src/options/bv_options"
+template <> const options::bvAbstraction__option_t::type& Options::operator[](options::bvAbstraction__option_t) const;
+#line 57 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bvAbstraction__option_t) const;
+#line 57 "../../../../../src/options/bv_options"
+template <> void Options::assignBool(options::bvAbstraction__option_t, std::string option, bool value);
+#line 60 "../../../../../src/options/bv_options"
+template <> void Options::set(options::skolemizeArguments__option_t, const options::skolemizeArguments__option_t::type& x);
+#line 60 "../../../../../src/options/bv_options"
+template <> const options::skolemizeArguments__option_t::type& Options::operator[](options::skolemizeArguments__option_t) const;
+#line 60 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::skolemizeArguments__option_t) const;
+#line 60 "../../../../../src/options/bv_options"
+template <> void Options::assignBool(options::skolemizeArguments__option_t, std::string option, bool value);
+#line 63 "../../../../../src/options/bv_options"
+template <> const options::bvNumFunc__option_t::type& Options::operator[](options::bvNumFunc__option_t) const;
+#line 63 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bvNumFunc__option_t) const;
+#line 63 "../../../../../src/options/bv_options"
+template <> void Options::assign(options::bvNumFunc__option_t, std::string option, std::string value);
+#line 66 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bvEagerExplanations__option_t, const options::bvEagerExplanations__option_t::type& x);
+#line 66 "../../../../../src/options/bv_options"
+template <> const options::bvEagerExplanations__option_t::type& Options::operator[](options::bvEagerExplanations__option_t) const;
+#line 66 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bvEagerExplanations__option_t) const;
+#line 66 "../../../../../src/options/bv_options"
+template <> void Options::assignBool(options::bvEagerExplanations__option_t, std::string option, bool value);
+#line 69 "../../../../../src/options/bv_options"
+template <> const options::bitvectorQuickXplain__option_t::type& Options::operator[](options::bitvectorQuickXplain__option_t) const;
+#line 69 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bitvectorQuickXplain__option_t) const;
+#line 69 "../../../../../src/options/bv_options"
+template <> void Options::assignBool(options::bitvectorQuickXplain__option_t, std::string option, bool value);
+#line 72 "../../../../../src/options/bv_options"
+template <> const options::bvIntroducePow2__option_t::type& Options::operator[](options::bvIntroducePow2__option_t) const;
+#line 72 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bvIntroducePow2__option_t) const;
+#line 72 "../../../../../src/options/bv_options"
+template <> void Options::assignBool(options::bvIntroducePow2__option_t, std::string option, bool value);
+#line 75 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bvLazyRewriteExtf__option_t, const options::bvLazyRewriteExtf__option_t::type& x);
+#line 75 "../../../../../src/options/bv_options"
+template <> const options::bvLazyRewriteExtf__option_t::type& Options::operator[](options::bvLazyRewriteExtf__option_t) const;
+#line 75 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bvLazyRewriteExtf__option_t) const;
+#line 75 "../../../../../src/options/bv_options"
+template <> void Options::assignBool(options::bvLazyRewriteExtf__option_t, std::string option, bool value);
+#line 78 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bvLazyReduceExtf__option_t, const options::bvLazyReduceExtf__option_t::type& x);
+#line 78 "../../../../../src/options/bv_options"
+template <> const options::bvLazyReduceExtf__option_t::type& Options::operator[](options::bvLazyReduceExtf__option_t) const;
+#line 78 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bvLazyReduceExtf__option_t) const;
+#line 78 "../../../../../src/options/bv_options"
+template <> void Options::assignBool(options::bvLazyReduceExtf__option_t, std::string option, bool value);
+#line 81 "../../../../../src/options/bv_options"
+template <> void Options::set(options::bvAlgExtf__option_t, const options::bvAlgExtf__option_t::type& x);
+#line 81 "../../../../../src/options/bv_options"
+template <> const options::bvAlgExtf__option_t::type& Options::operator[](options::bvAlgExtf__option_t) const;
+#line 81 "../../../../../src/options/bv_options"
+template <> bool Options::wasSetByUser(options::bvAlgExtf__option_t) const;
+#line 81 "../../../../../src/options/bv_options"
+template <> void Options::assignBool(options::bvAlgExtf__option_t, std::string option, bool value);
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+#line 10 "../../../../../src/options/bv_options"
+inline bvSatSolver__option_t::type bvSatSolver__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 10 "../../../../../src/options/bv_options"
+inline bool bvSatSolver__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 10 "../../../../../src/options/bv_options"
+inline void bvSatSolver__option_t::set(const bvSatSolver__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 13 "../../../../../src/options/bv_options"
+inline bitblastMode__option_t::type bitblastMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 13 "../../../../../src/options/bv_options"
+inline bool bitblastMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 13 "../../../../../src/options/bv_options"
+inline void bitblastMode__option_t::set(const bitblastMode__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 18 "../../../../../src/options/bv_options"
+inline bitvectorAig__option_t::type bitvectorAig__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 18 "../../../../../src/options/bv_options"
+inline bool bitvectorAig__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 18 "../../../../../src/options/bv_options"
+inline void bitvectorAig__option_t::set(const bitvectorAig__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 20 "../../../../../src/options/bv_options"
+inline bitvectorAigSimplifications__option_t::type bitvectorAigSimplifications__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 20 "../../../../../src/options/bv_options"
+inline bool bitvectorAigSimplifications__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 20 "../../../../../src/options/bv_options"
+inline void bitvectorAigSimplifications__option_t::set(const bitvectorAigSimplifications__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 24 "../../../../../src/options/bv_options"
+inline bitvectorPropagate__option_t::type bitvectorPropagate__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 24 "../../../../../src/options/bv_options"
+inline bool bitvectorPropagate__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 24 "../../../../../src/options/bv_options"
+inline void bitvectorPropagate__option_t::set(const bitvectorPropagate__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 27 "../../../../../src/options/bv_options"
+inline bitvectorEqualitySolver__option_t::type bitvectorEqualitySolver__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 27 "../../../../../src/options/bv_options"
+inline bool bitvectorEqualitySolver__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 27 "../../../../../src/options/bv_options"
+inline void bitvectorEqualitySolver__option_t::set(const bitvectorEqualitySolver__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 30 "../../../../../src/options/bv_options"
+inline bitvectorEqualitySlicer__option_t::type bitvectorEqualitySlicer__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 30 "../../../../../src/options/bv_options"
+inline bool bitvectorEqualitySlicer__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 30 "../../../../../src/options/bv_options"
+inline void bitvectorEqualitySlicer__option_t::set(const bitvectorEqualitySlicer__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 34 "../../../../../src/options/bv_options"
+inline bitvectorInequalitySolver__option_t::type bitvectorInequalitySolver__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 34 "../../../../../src/options/bv_options"
+inline bool bitvectorInequalitySolver__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 34 "../../../../../src/options/bv_options"
+inline void bitvectorInequalitySolver__option_t::set(const bitvectorInequalitySolver__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 37 "../../../../../src/options/bv_options"
+inline bitvectorAlgebraicSolver__option_t::type bitvectorAlgebraicSolver__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 37 "../../../../../src/options/bv_options"
+inline bool bitvectorAlgebraicSolver__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 37 "../../../../../src/options/bv_options"
+inline void bitvectorAlgebraicSolver__option_t::set(const bitvectorAlgebraicSolver__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 40 "../../../../../src/options/bv_options"
+inline bitvectorAlgebraicBudget__option_t::type bitvectorAlgebraicBudget__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 40 "../../../../../src/options/bv_options"
+inline bool bitvectorAlgebraicBudget__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 40 "../../../../../src/options/bv_options"
+inline void bitvectorAlgebraicBudget__option_t::set(const bitvectorAlgebraicBudget__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 45 "../../../../../src/options/bv_options"
+inline bitvectorToBool__option_t::type bitvectorToBool__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 45 "../../../../../src/options/bv_options"
+inline bool bitvectorToBool__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 45 "../../../../../src/options/bv_options"
+inline void bitvectorToBool__option_t::set(const bitvectorToBool__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 48 "../../../../../src/options/bv_options"
+inline boolToBitvector__option_t::type boolToBitvector__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 48 "../../../../../src/options/bv_options"
+inline bool boolToBitvector__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 48 "../../../../../src/options/bv_options"
+inline void boolToBitvector__option_t::set(const boolToBitvector__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 51 "../../../../../src/options/bv_options"
+inline bitvectorDivByZeroConst__option_t::type bitvectorDivByZeroConst__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 51 "../../../../../src/options/bv_options"
+inline bool bitvectorDivByZeroConst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 51 "../../../../../src/options/bv_options"
+inline void bitvectorDivByZeroConst__option_t::set(const bitvectorDivByZeroConst__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 54 "../../../../../src/options/bv_options"
+inline bvExtractArithRewrite__option_t::type bvExtractArithRewrite__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 54 "../../../../../src/options/bv_options"
+inline bool bvExtractArithRewrite__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 54 "../../../../../src/options/bv_options"
+inline void bvExtractArithRewrite__option_t::set(const bvExtractArithRewrite__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 57 "../../../../../src/options/bv_options"
+inline bvAbstraction__option_t::type bvAbstraction__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 57 "../../../../../src/options/bv_options"
+inline bool bvAbstraction__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 57 "../../../../../src/options/bv_options"
+inline void bvAbstraction__option_t::set(const bvAbstraction__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 60 "../../../../../src/options/bv_options"
+inline skolemizeArguments__option_t::type skolemizeArguments__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 60 "../../../../../src/options/bv_options"
+inline bool skolemizeArguments__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 60 "../../../../../src/options/bv_options"
+inline void skolemizeArguments__option_t::set(const skolemizeArguments__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 63 "../../../../../src/options/bv_options"
+inline bvNumFunc__option_t::type bvNumFunc__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 63 "../../../../../src/options/bv_options"
+inline bool bvNumFunc__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 66 "../../../../../src/options/bv_options"
+inline bvEagerExplanations__option_t::type bvEagerExplanations__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 66 "../../../../../src/options/bv_options"
+inline bool bvEagerExplanations__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 66 "../../../../../src/options/bv_options"
+inline void bvEagerExplanations__option_t::set(const bvEagerExplanations__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 69 "../../../../../src/options/bv_options"
+inline bitvectorQuickXplain__option_t::type bitvectorQuickXplain__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 69 "../../../../../src/options/bv_options"
+inline bool bitvectorQuickXplain__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 72 "../../../../../src/options/bv_options"
+inline bvIntroducePow2__option_t::type bvIntroducePow2__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 72 "../../../../../src/options/bv_options"
+inline bool bvIntroducePow2__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 75 "../../../../../src/options/bv_options"
+inline bvLazyRewriteExtf__option_t::type bvLazyRewriteExtf__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 75 "../../../../../src/options/bv_options"
+inline bool bvLazyRewriteExtf__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 75 "../../../../../src/options/bv_options"
+inline void bvLazyRewriteExtf__option_t::set(const bvLazyRewriteExtf__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 78 "../../../../../src/options/bv_options"
+inline bvLazyReduceExtf__option_t::type bvLazyReduceExtf__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 78 "../../../../../src/options/bv_options"
+inline bool bvLazyReduceExtf__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 78 "../../../../../src/options/bv_options"
+inline void bvLazyReduceExtf__option_t::set(const bvLazyReduceExtf__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 81 "../../../../../src/options/bv_options"
+inline bvAlgExtf__option_t::type bvAlgExtf__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 81 "../../../../../src/options/bv_options"
+inline bool bvAlgExtf__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 81 "../../../../../src/options/bv_options"
+inline void bvAlgExtf__option_t::set(const bvAlgExtf__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__BV_H */
diff --git a/src/options/datatypes_options b/src/options/datatypes_options
new file mode 100644
index 0000000..bb92b4e
--- /dev/null
+++ b/src/options/datatypes_options
@@ -0,0 +1,33 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module DATATYPES "options/datatypes_options.h" Datatypes theory
+
+# How to handle selectors applied to incorrect constructors.  If this option is set,
+# then we do not rewrite such a selector term to an arbitrary ground term.  
+# For example, by default cvc4 considers cdr( nil ) = nil.  If this option is set, then
+# cdr( nil ) has no set value.
+expert-option dtRewriteErrorSel --dt-rewrite-error-sel bool :default false :read-write
+ rewrite incorrectly applied selectors to arbitrary ground term
+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
+option dtBinarySplit --dt-binary-split bool :default false
+ do binary splits for datatype constructor types
+option dtRefIntro --dt-ref-sk-intro bool :default false
+ introduce reference skolems for shorter explanations
+option dtUseTesters --dt-use-testers bool :default true
+ do not preprocess away tester predicates
+option cdtBisimilar --cdt-bisimilar bool :default true
+ do bisimilarity check for co-datatypes
+option dtCyclic --dt-cyclic bool :default true
+ do cyclicity check for datatypes
+option dtInferAsLemmas --dt-infer-as-lemmas bool :default false
+ always send lemmas out instead of making internal inferences
+#option dtRExplainLemmas --dt-rexplain-lemmas bool :default true
+# regression explanations for datatype lemmas
+option dtBlastSplits --dt-blast-splits bool :default false
+ when applicable, blast splitting lemmas for all variables at once
+ 
+endmodule
diff --git a/src/options/datatypes_options.cpp b/src/options/datatypes_options.cpp
new file mode 100644
index 0000000..92e13f9
--- /dev/null
+++ b/src/options/datatypes_options.cpp
@@ -0,0 +1,91 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+#line 12 "../../../../../src/options/datatypes_options"
+template <> void Options::set(options::dtRewriteErrorSel__option_t, const options::dtRewriteErrorSel__option_t::type& x) { d_holder->dtRewriteErrorSel = x; }
+#line 12 "../../../../../src/options/datatypes_options"
+template <> const options::dtRewriteErrorSel__option_t::type& Options::operator[](options::dtRewriteErrorSel__option_t) const { return d_holder->dtRewriteErrorSel; }
+#line 12 "../../../../../src/options/datatypes_options"
+template <> bool Options::wasSetByUser(options::dtRewriteErrorSel__option_t) const { return d_holder->dtRewriteErrorSel__setByUser__; }
+#line 14 "../../../../../src/options/datatypes_options"
+template <> void Options::set(options::dtForceAssignment__option_t, const options::dtForceAssignment__option_t::type& x) { d_holder->dtForceAssignment = x; }
+#line 14 "../../../../../src/options/datatypes_options"
+template <> const options::dtForceAssignment__option_t::type& Options::operator[](options::dtForceAssignment__option_t) const { return d_holder->dtForceAssignment; }
+#line 14 "../../../../../src/options/datatypes_options"
+template <> bool Options::wasSetByUser(options::dtForceAssignment__option_t) const { return d_holder->dtForceAssignment__setByUser__; }
+#line 16 "../../../../../src/options/datatypes_options"
+template <> const options::dtBinarySplit__option_t::type& Options::operator[](options::dtBinarySplit__option_t) const { return d_holder->dtBinarySplit; }
+#line 16 "../../../../../src/options/datatypes_options"
+template <> bool Options::wasSetByUser(options::dtBinarySplit__option_t) const { return d_holder->dtBinarySplit__setByUser__; }
+#line 18 "../../../../../src/options/datatypes_options"
+template <> const options::dtRefIntro__option_t::type& Options::operator[](options::dtRefIntro__option_t) const { return d_holder->dtRefIntro; }
+#line 18 "../../../../../src/options/datatypes_options"
+template <> bool Options::wasSetByUser(options::dtRefIntro__option_t) const { return d_holder->dtRefIntro__setByUser__; }
+#line 20 "../../../../../src/options/datatypes_options"
+template <> const options::dtUseTesters__option_t::type& Options::operator[](options::dtUseTesters__option_t) const { return d_holder->dtUseTesters; }
+#line 20 "../../../../../src/options/datatypes_options"
+template <> bool Options::wasSetByUser(options::dtUseTesters__option_t) const { return d_holder->dtUseTesters__setByUser__; }
+#line 22 "../../../../../src/options/datatypes_options"
+template <> const options::cdtBisimilar__option_t::type& Options::operator[](options::cdtBisimilar__option_t) const { return d_holder->cdtBisimilar; }
+#line 22 "../../../../../src/options/datatypes_options"
+template <> bool Options::wasSetByUser(options::cdtBisimilar__option_t) const { return d_holder->cdtBisimilar__setByUser__; }
+#line 24 "../../../../../src/options/datatypes_options"
+template <> const options::dtCyclic__option_t::type& Options::operator[](options::dtCyclic__option_t) const { return d_holder->dtCyclic; }
+#line 24 "../../../../../src/options/datatypes_options"
+template <> bool Options::wasSetByUser(options::dtCyclic__option_t) const { return d_holder->dtCyclic__setByUser__; }
+#line 26 "../../../../../src/options/datatypes_options"
+template <> const options::dtInferAsLemmas__option_t::type& Options::operator[](options::dtInferAsLemmas__option_t) const { return d_holder->dtInferAsLemmas; }
+#line 26 "../../../../../src/options/datatypes_options"
+template <> bool Options::wasSetByUser(options::dtInferAsLemmas__option_t) const { return d_holder->dtInferAsLemmas__setByUser__; }
+#line 30 "../../../../../src/options/datatypes_options"
+template <> const options::dtBlastSplits__option_t::type& Options::operator[](options::dtBlastSplits__option_t) const { return d_holder->dtBlastSplits; }
+#line 30 "../../../../../src/options/datatypes_options"
+template <> bool Options::wasSetByUser(options::dtBlastSplits__option_t) const { return d_holder->dtBlastSplits__setByUser__; }
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+#line 12 "../../../../../src/options/datatypes_options"
+struct dtRewriteErrorSel__option_t dtRewriteErrorSel;
+#line 14 "../../../../../src/options/datatypes_options"
+struct dtForceAssignment__option_t dtForceAssignment;
+#line 16 "../../../../../src/options/datatypes_options"
+struct dtBinarySplit__option_t dtBinarySplit;
+#line 18 "../../../../../src/options/datatypes_options"
+struct dtRefIntro__option_t dtRefIntro;
+#line 20 "../../../../../src/options/datatypes_options"
+struct dtUseTesters__option_t dtUseTesters;
+#line 22 "../../../../../src/options/datatypes_options"
+struct cdtBisimilar__option_t cdtBisimilar;
+#line 24 "../../../../../src/options/datatypes_options"
+struct dtCyclic__option_t dtCyclic;
+#line 26 "../../../../../src/options/datatypes_options"
+struct dtInferAsLemmas__option_t dtInferAsLemmas;
+#line 30 "../../../../../src/options/datatypes_options"
+struct dtBlastSplits__option_t dtBlastSplits;
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/datatypes_options.h b/src/options/datatypes_options.h
new file mode 100644
index 0000000..0aea94e
--- /dev/null
+++ b/src/options/datatypes_options.h
@@ -0,0 +1,197 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__DATATYPES_H
+#define __CVC4__OPTIONS__DATATYPES_H
+
+#include "options/options.h"
+
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__DATATYPES__FOR_OPTION_HOLDER \
+  dtRewriteErrorSel__option_t::type dtRewriteErrorSel; \
+  bool dtRewriteErrorSel__setByUser__; \
+  dtForceAssignment__option_t::type dtForceAssignment; \
+  bool dtForceAssignment__setByUser__; \
+  dtBinarySplit__option_t::type dtBinarySplit; \
+  bool dtBinarySplit__setByUser__; \
+  dtRefIntro__option_t::type dtRefIntro; \
+  bool dtRefIntro__setByUser__; \
+  dtUseTesters__option_t::type dtUseTesters; \
+  bool dtUseTesters__setByUser__; \
+  cdtBisimilar__option_t::type cdtBisimilar; \
+  bool cdtBisimilar__setByUser__; \
+  dtCyclic__option_t::type dtCyclic; \
+  bool dtCyclic__setByUser__; \
+  dtInferAsLemmas__option_t::type dtInferAsLemmas; \
+  bool dtInferAsLemmas__setByUser__; \
+  dtBlastSplits__option_t::type dtBlastSplits; \
+  bool dtBlastSplits__setByUser__;
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+#line 12 "../../../../../src/options/datatypes_options"
+extern struct CVC4_PUBLIC dtRewriteErrorSel__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } dtRewriteErrorSel CVC4_PUBLIC;
+#line 14 "../../../../../src/options/datatypes_options"
+extern struct CVC4_PUBLIC dtForceAssignment__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } dtForceAssignment CVC4_PUBLIC;
+#line 16 "../../../../../src/options/datatypes_options"
+extern struct CVC4_PUBLIC dtBinarySplit__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dtBinarySplit CVC4_PUBLIC;
+#line 18 "../../../../../src/options/datatypes_options"
+extern struct CVC4_PUBLIC dtRefIntro__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dtRefIntro CVC4_PUBLIC;
+#line 20 "../../../../../src/options/datatypes_options"
+extern struct CVC4_PUBLIC dtUseTesters__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dtUseTesters CVC4_PUBLIC;
+#line 22 "../../../../../src/options/datatypes_options"
+extern struct CVC4_PUBLIC cdtBisimilar__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cdtBisimilar CVC4_PUBLIC;
+#line 24 "../../../../../src/options/datatypes_options"
+extern struct CVC4_PUBLIC dtCyclic__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dtCyclic CVC4_PUBLIC;
+#line 26 "../../../../../src/options/datatypes_options"
+extern struct CVC4_PUBLIC dtInferAsLemmas__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dtInferAsLemmas CVC4_PUBLIC;
+#line 30 "../../../../../src/options/datatypes_options"
+extern struct CVC4_PUBLIC dtBlastSplits__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dtBlastSplits CVC4_PUBLIC;
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+#line 12 "../../../../../src/options/datatypes_options"
+template <> void Options::set(options::dtRewriteErrorSel__option_t, const options::dtRewriteErrorSel__option_t::type& x);
+#line 12 "../../../../../src/options/datatypes_options"
+template <> const options::dtRewriteErrorSel__option_t::type& Options::operator[](options::dtRewriteErrorSel__option_t) const;
+#line 12 "../../../../../src/options/datatypes_options"
+template <> bool Options::wasSetByUser(options::dtRewriteErrorSel__option_t) const;
+#line 12 "../../../../../src/options/datatypes_options"
+template <> void Options::assignBool(options::dtRewriteErrorSel__option_t, std::string option, bool value);
+#line 14 "../../../../../src/options/datatypes_options"
+template <> void Options::set(options::dtForceAssignment__option_t, const options::dtForceAssignment__option_t::type& x);
+#line 14 "../../../../../src/options/datatypes_options"
+template <> const options::dtForceAssignment__option_t::type& Options::operator[](options::dtForceAssignment__option_t) const;
+#line 14 "../../../../../src/options/datatypes_options"
+template <> bool Options::wasSetByUser(options::dtForceAssignment__option_t) const;
+#line 14 "../../../../../src/options/datatypes_options"
+template <> void Options::assignBool(options::dtForceAssignment__option_t, std::string option, bool value);
+#line 16 "../../../../../src/options/datatypes_options"
+template <> const options::dtBinarySplit__option_t::type& Options::operator[](options::dtBinarySplit__option_t) const;
+#line 16 "../../../../../src/options/datatypes_options"
+template <> bool Options::wasSetByUser(options::dtBinarySplit__option_t) const;
+#line 16 "../../../../../src/options/datatypes_options"
+template <> void Options::assignBool(options::dtBinarySplit__option_t, std::string option, bool value);
+#line 18 "../../../../../src/options/datatypes_options"
+template <> const options::dtRefIntro__option_t::type& Options::operator[](options::dtRefIntro__option_t) const;
+#line 18 "../../../../../src/options/datatypes_options"
+template <> bool Options::wasSetByUser(options::dtRefIntro__option_t) const;
+#line 18 "../../../../../src/options/datatypes_options"
+template <> void Options::assignBool(options::dtRefIntro__option_t, std::string option, bool value);
+#line 20 "../../../../../src/options/datatypes_options"
+template <> const options::dtUseTesters__option_t::type& Options::operator[](options::dtUseTesters__option_t) const;
+#line 20 "../../../../../src/options/datatypes_options"
+template <> bool Options::wasSetByUser(options::dtUseTesters__option_t) const;
+#line 20 "../../../../../src/options/datatypes_options"
+template <> void Options::assignBool(options::dtUseTesters__option_t, std::string option, bool value);
+#line 22 "../../../../../src/options/datatypes_options"
+template <> const options::cdtBisimilar__option_t::type& Options::operator[](options::cdtBisimilar__option_t) const;
+#line 22 "../../../../../src/options/datatypes_options"
+template <> bool Options::wasSetByUser(options::cdtBisimilar__option_t) const;
+#line 22 "../../../../../src/options/datatypes_options"
+template <> void Options::assignBool(options::cdtBisimilar__option_t, std::string option, bool value);
+#line 24 "../../../../../src/options/datatypes_options"
+template <> const options::dtCyclic__option_t::type& Options::operator[](options::dtCyclic__option_t) const;
+#line 24 "../../../../../src/options/datatypes_options"
+template <> bool Options::wasSetByUser(options::dtCyclic__option_t) const;
+#line 24 "../../../../../src/options/datatypes_options"
+template <> void Options::assignBool(options::dtCyclic__option_t, std::string option, bool value);
+#line 26 "../../../../../src/options/datatypes_options"
+template <> const options::dtInferAsLemmas__option_t::type& Options::operator[](options::dtInferAsLemmas__option_t) const;
+#line 26 "../../../../../src/options/datatypes_options"
+template <> bool Options::wasSetByUser(options::dtInferAsLemmas__option_t) const;
+#line 26 "../../../../../src/options/datatypes_options"
+template <> void Options::assignBool(options::dtInferAsLemmas__option_t, std::string option, bool value);
+#line 30 "../../../../../src/options/datatypes_options"
+template <> const options::dtBlastSplits__option_t::type& Options::operator[](options::dtBlastSplits__option_t) const;
+#line 30 "../../../../../src/options/datatypes_options"
+template <> bool Options::wasSetByUser(options::dtBlastSplits__option_t) const;
+#line 30 "../../../../../src/options/datatypes_options"
+template <> void Options::assignBool(options::dtBlastSplits__option_t, std::string option, bool value);
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+#line 12 "../../../../../src/options/datatypes_options"
+inline dtRewriteErrorSel__option_t::type dtRewriteErrorSel__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 12 "../../../../../src/options/datatypes_options"
+inline bool dtRewriteErrorSel__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 12 "../../../../../src/options/datatypes_options"
+inline void dtRewriteErrorSel__option_t::set(const dtRewriteErrorSel__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 14 "../../../../../src/options/datatypes_options"
+inline dtForceAssignment__option_t::type dtForceAssignment__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 14 "../../../../../src/options/datatypes_options"
+inline bool dtForceAssignment__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 14 "../../../../../src/options/datatypes_options"
+inline void dtForceAssignment__option_t::set(const dtForceAssignment__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 16 "../../../../../src/options/datatypes_options"
+inline dtBinarySplit__option_t::type dtBinarySplit__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 16 "../../../../../src/options/datatypes_options"
+inline bool dtBinarySplit__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 18 "../../../../../src/options/datatypes_options"
+inline dtRefIntro__option_t::type dtRefIntro__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 18 "../../../../../src/options/datatypes_options"
+inline bool dtRefIntro__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 20 "../../../../../src/options/datatypes_options"
+inline dtUseTesters__option_t::type dtUseTesters__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 20 "../../../../../src/options/datatypes_options"
+inline bool dtUseTesters__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 22 "../../../../../src/options/datatypes_options"
+inline cdtBisimilar__option_t::type cdtBisimilar__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 22 "../../../../../src/options/datatypes_options"
+inline bool cdtBisimilar__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 24 "../../../../../src/options/datatypes_options"
+inline dtCyclic__option_t::type dtCyclic__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 24 "../../../../../src/options/datatypes_options"
+inline bool dtCyclic__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 26 "../../../../../src/options/datatypes_options"
+inline dtInferAsLemmas__option_t::type dtInferAsLemmas__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 26 "../../../../../src/options/datatypes_options"
+inline bool dtInferAsLemmas__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 30 "../../../../../src/options/datatypes_options"
+inline dtBlastSplits__option_t::type dtBlastSplits__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 30 "../../../../../src/options/datatypes_options"
+inline bool dtBlastSplits__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__DATATYPES_H */
diff --git a/src/options/decision_mode.cpp b/src/options/decision_mode.cpp
new file mode 100644
index 0000000..3a93b02
--- /dev/null
+++ b/src/options/decision_mode.cpp
@@ -0,0 +1,39 @@
+/*********************                                                        */
+/*! \file decision_mode.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "options/decision_mode.h"
+
+#include <iostream>
+
+namespace CVC4 {
+
+std::ostream& operator<<(std::ostream& out, decision::DecisionMode mode) {
+  switch(mode) {
+  case decision::DECISION_STRATEGY_INTERNAL:
+    out << "DECISION_STRATEGY_INTERNAL";
+    break;
+  case decision::DECISION_STRATEGY_JUSTIFICATION:
+    out << "DECISION_STRATEGY_JUSTIFICATION";
+    break;
+  default:
+    out << "DecisionMode:UNKNOWN![" << unsigned(mode) << "]";
+  }
+
+  return out;
+}
+
+}/* CVC4 namespace */
diff --git a/src/options/decision_mode.h b/src/options/decision_mode.h
new file mode 100644
index 0000000..efc6ca2
--- /dev/null
+++ b/src/options/decision_mode.h
@@ -0,0 +1,64 @@
+/*********************                                                        */
+/*! \file decision_mode.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Kshitij Bansal, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__SMT__DECISION_MODE_H
+#define __CVC4__SMT__DECISION_MODE_H
+
+#include <iosfwd>
+
+namespace CVC4 {
+namespace decision {
+
+/** Enumeration of decision strategies */
+enum DecisionMode {
+
+  /**
+   * Decision engine doesn't do anything. Use sat solver's internal
+   * heuristics
+   */
+  DECISION_STRATEGY_INTERNAL,
+
+  /**
+   * Use the justification heuristic
+   */
+  DECISION_STRATEGY_JUSTIFICATION,
+
+  /**
+   * Use may-relevancy.
+   */
+  DECISION_STRATEGY_RELEVANCY
+
+};/* enum DecisionMode */
+
+
+/** Enumeration of combining functions for computing internal weights */
+enum DecisionWeightInternal {
+  DECISION_WEIGHT_INTERNAL_OFF,
+  DECISION_WEIGHT_INTERNAL_MAX,
+  DECISION_WEIGHT_INTERNAL_SUM,
+  DECISION_WEIGHT_INTERNAL_USR1
+};/* enum DecisionInternalWeight */
+
+}/* CVC4::decision namespace */
+
+std::ostream& operator<<(std::ostream& out, decision::DecisionMode mode);
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__SMT__DECISION_MODE_H */
diff --git a/src/options/decision_options b/src/options/decision_options
new file mode 100644
index 0000000..2490d28
--- /dev/null
+++ b/src/options/decision_options
@@ -0,0 +1,27 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module DECISION "options/decision_options.h" Decision heuristics
+
+# When/whether to use any decision strategies
+option decisionMode decision-mode --decision=MODE decision::DecisionMode :handler stringToDecisionMode :default decision::DECISION_STRATEGY_INTERNAL :read-write :include "options/decision_mode.h"
+ choose decision mode, see --decision=help
+
+# only use DE to determine when to stop, not to make decisions
+option decisionStopOnly bool
+
+expert-option decisionThreshold --decision-threshold=N decision::DecisionWeight :default 0 :include "options/decision_weight.h"
+ ignore all nodes greater than threshold in first attempt to pick decision
+
+expert-option decisionUseWeight --decision-use-weight bool :default false
+ use the weight nodes (locally, by looking at children) to direct recursive search
+
+expert-option decisionRandomWeight --decision-random-weight=N int :default 0
+ assign random weights to nodes between 0 and N-1 (0: disable)
+
+expert-option decisionWeightInternal --decision-weight-internal=HOW decision::DecisionWeightInternal :handler stringToDecisionWeightInternal :default decision::DECISION_WEIGHT_INTERNAL_OFF
+ computer weights of internal nodes using children: off, max, sum, usr1 (meaning evolving)
+
+endmodule
diff --git a/src/options/decision_options.cpp b/src/options/decision_options.cpp
new file mode 100644
index 0000000..fe2bc1a
--- /dev/null
+++ b/src/options/decision_options.cpp
@@ -0,0 +1,73 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+#line 9 "../../../../../src/options/decision_options"
+template <> void Options::set(options::decisionMode__option_t, const options::decisionMode__option_t::type& x) { d_holder->decisionMode = x; }
+#line 9 "../../../../../src/options/decision_options"
+template <> const options::decisionMode__option_t::type& Options::operator[](options::decisionMode__option_t) const { return d_holder->decisionMode; }
+#line 9 "../../../../../src/options/decision_options"
+template <> bool Options::wasSetByUser(options::decisionMode__option_t) const { return d_holder->decisionMode__setByUser__; }
+#line 13 "../../../../../src/options/decision_options"
+template <> void Options::set(options::decisionStopOnly__option_t, const options::decisionStopOnly__option_t::type& x) { d_holder->decisionStopOnly = x; }
+#line 13 "../../../../../src/options/decision_options"
+template <> const options::decisionStopOnly__option_t::type& Options::operator[](options::decisionStopOnly__option_t) const { return d_holder->decisionStopOnly; }
+#line 13 "../../../../../src/options/decision_options"
+template <> bool Options::wasSetByUser(options::decisionStopOnly__option_t) const { return d_holder->decisionStopOnly__setByUser__; }
+#line 15 "../../../../../src/options/decision_options"
+template <> const options::decisionThreshold__option_t::type& Options::operator[](options::decisionThreshold__option_t) const { return d_holder->decisionThreshold; }
+#line 15 "../../../../../src/options/decision_options"
+template <> bool Options::wasSetByUser(options::decisionThreshold__option_t) const { return d_holder->decisionThreshold__setByUser__; }
+#line 18 "../../../../../src/options/decision_options"
+template <> const options::decisionUseWeight__option_t::type& Options::operator[](options::decisionUseWeight__option_t) const { return d_holder->decisionUseWeight; }
+#line 18 "../../../../../src/options/decision_options"
+template <> bool Options::wasSetByUser(options::decisionUseWeight__option_t) const { return d_holder->decisionUseWeight__setByUser__; }
+#line 21 "../../../../../src/options/decision_options"
+template <> const options::decisionRandomWeight__option_t::type& Options::operator[](options::decisionRandomWeight__option_t) const { return d_holder->decisionRandomWeight; }
+#line 21 "../../../../../src/options/decision_options"
+template <> bool Options::wasSetByUser(options::decisionRandomWeight__option_t) const { return d_holder->decisionRandomWeight__setByUser__; }
+#line 24 "../../../../../src/options/decision_options"
+template <> const options::decisionWeightInternal__option_t::type& Options::operator[](options::decisionWeightInternal__option_t) const { return d_holder->decisionWeightInternal; }
+#line 24 "../../../../../src/options/decision_options"
+template <> bool Options::wasSetByUser(options::decisionWeightInternal__option_t) const { return d_holder->decisionWeightInternal__setByUser__; }
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+#line 9 "../../../../../src/options/decision_options"
+struct decisionMode__option_t decisionMode;
+#line 13 "../../../../../src/options/decision_options"
+struct decisionStopOnly__option_t decisionStopOnly;
+#line 15 "../../../../../src/options/decision_options"
+struct decisionThreshold__option_t decisionThreshold;
+#line 18 "../../../../../src/options/decision_options"
+struct decisionUseWeight__option_t decisionUseWeight;
+#line 21 "../../../../../src/options/decision_options"
+struct decisionRandomWeight__option_t decisionRandomWeight;
+#line 24 "../../../../../src/options/decision_options"
+struct decisionWeightInternal__option_t decisionWeightInternal;
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/decision_options.h b/src/options/decision_options.h
new file mode 100644
index 0000000..d1ef6c7
--- /dev/null
+++ b/src/options/decision_options.h
@@ -0,0 +1,156 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__DECISION_H
+#define __CVC4__OPTIONS__DECISION_H
+
+#include "options/options.h"
+
+#line 9 "../../../../../src/options/decision_options"
+#include "options/decision_mode.h"
+#line 15 "../../../../../src/options/decision_options"
+#include "options/decision_weight.h"
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__DECISION__FOR_OPTION_HOLDER \
+  decisionMode__option_t::type decisionMode; \
+  bool decisionMode__setByUser__; \
+  decisionStopOnly__option_t::type decisionStopOnly; \
+  bool decisionStopOnly__setByUser__; \
+  decisionThreshold__option_t::type decisionThreshold; \
+  bool decisionThreshold__setByUser__; \
+  decisionUseWeight__option_t::type decisionUseWeight; \
+  bool decisionUseWeight__setByUser__; \
+  decisionRandomWeight__option_t::type decisionRandomWeight; \
+  bool decisionRandomWeight__setByUser__; \
+  decisionWeightInternal__option_t::type decisionWeightInternal; \
+  bool decisionWeightInternal__setByUser__;
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+#line 9 "../../../../../src/options/decision_options"
+extern struct CVC4_PUBLIC decisionMode__option_t { typedef decision::DecisionMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } decisionMode CVC4_PUBLIC;
+#line 13 "../../../../../src/options/decision_options"
+extern struct CVC4_PUBLIC decisionStopOnly__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } decisionStopOnly CVC4_PUBLIC;
+#line 15 "../../../../../src/options/decision_options"
+extern struct CVC4_PUBLIC decisionThreshold__option_t { typedef decision::DecisionWeight type; type operator()() const; bool wasSetByUser() const; } decisionThreshold CVC4_PUBLIC;
+#line 18 "../../../../../src/options/decision_options"
+extern struct CVC4_PUBLIC decisionUseWeight__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } decisionUseWeight CVC4_PUBLIC;
+#line 21 "../../../../../src/options/decision_options"
+extern struct CVC4_PUBLIC decisionRandomWeight__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } decisionRandomWeight CVC4_PUBLIC;
+#line 24 "../../../../../src/options/decision_options"
+extern struct CVC4_PUBLIC decisionWeightInternal__option_t { typedef decision::DecisionWeightInternal type; type operator()() const; bool wasSetByUser() const; } decisionWeightInternal CVC4_PUBLIC;
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+#line 9 "../../../../../src/options/decision_options"
+template <> void Options::set(options::decisionMode__option_t, const options::decisionMode__option_t::type& x);
+#line 9 "../../../../../src/options/decision_options"
+template <> const options::decisionMode__option_t::type& Options::operator[](options::decisionMode__option_t) const;
+#line 9 "../../../../../src/options/decision_options"
+template <> bool Options::wasSetByUser(options::decisionMode__option_t) const;
+#line 9 "../../../../../src/options/decision_options"
+template <> void Options::assign(options::decisionMode__option_t, std::string option, std::string value);
+#line 13 "../../../../../src/options/decision_options"
+template <> void Options::set(options::decisionStopOnly__option_t, const options::decisionStopOnly__option_t::type& x);
+#line 13 "../../../../../src/options/decision_options"
+template <> const options::decisionStopOnly__option_t::type& Options::operator[](options::decisionStopOnly__option_t) const;
+#line 13 "../../../../../src/options/decision_options"
+template <> bool Options::wasSetByUser(options::decisionStopOnly__option_t) const;
+#line 13 "../../../../../src/options/decision_options"
+template <> void Options::assignBool(options::decisionStopOnly__option_t, std::string option, bool value);
+#line 15 "../../../../../src/options/decision_options"
+template <> const options::decisionThreshold__option_t::type& Options::operator[](options::decisionThreshold__option_t) const;
+#line 15 "../../../../../src/options/decision_options"
+template <> bool Options::wasSetByUser(options::decisionThreshold__option_t) const;
+#line 15 "../../../../../src/options/decision_options"
+template <> void Options::assign(options::decisionThreshold__option_t, std::string option, std::string value);
+#line 18 "../../../../../src/options/decision_options"
+template <> const options::decisionUseWeight__option_t::type& Options::operator[](options::decisionUseWeight__option_t) const;
+#line 18 "../../../../../src/options/decision_options"
+template <> bool Options::wasSetByUser(options::decisionUseWeight__option_t) const;
+#line 18 "../../../../../src/options/decision_options"
+template <> void Options::assignBool(options::decisionUseWeight__option_t, std::string option, bool value);
+#line 21 "../../../../../src/options/decision_options"
+template <> const options::decisionRandomWeight__option_t::type& Options::operator[](options::decisionRandomWeight__option_t) const;
+#line 21 "../../../../../src/options/decision_options"
+template <> bool Options::wasSetByUser(options::decisionRandomWeight__option_t) const;
+#line 21 "../../../../../src/options/decision_options"
+template <> void Options::assign(options::decisionRandomWeight__option_t, std::string option, std::string value);
+#line 24 "../../../../../src/options/decision_options"
+template <> const options::decisionWeightInternal__option_t::type& Options::operator[](options::decisionWeightInternal__option_t) const;
+#line 24 "../../../../../src/options/decision_options"
+template <> bool Options::wasSetByUser(options::decisionWeightInternal__option_t) const;
+#line 24 "../../../../../src/options/decision_options"
+template <> void Options::assign(options::decisionWeightInternal__option_t, std::string option, std::string value);
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+#line 9 "../../../../../src/options/decision_options"
+inline decisionMode__option_t::type decisionMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 9 "../../../../../src/options/decision_options"
+inline bool decisionMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 9 "../../../../../src/options/decision_options"
+inline void decisionMode__option_t::set(const decisionMode__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 13 "../../../../../src/options/decision_options"
+inline decisionStopOnly__option_t::type decisionStopOnly__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 13 "../../../../../src/options/decision_options"
+inline bool decisionStopOnly__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 13 "../../../../../src/options/decision_options"
+inline void decisionStopOnly__option_t::set(const decisionStopOnly__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 15 "../../../../../src/options/decision_options"
+inline decisionThreshold__option_t::type decisionThreshold__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 15 "../../../../../src/options/decision_options"
+inline bool decisionThreshold__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 18 "../../../../../src/options/decision_options"
+inline decisionUseWeight__option_t::type decisionUseWeight__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 18 "../../../../../src/options/decision_options"
+inline bool decisionUseWeight__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 21 "../../../../../src/options/decision_options"
+inline decisionRandomWeight__option_t::type decisionRandomWeight__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 21 "../../../../../src/options/decision_options"
+inline bool decisionRandomWeight__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 24 "../../../../../src/options/decision_options"
+inline decisionWeightInternal__option_t::type decisionWeightInternal__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 24 "../../../../../src/options/decision_options"
+inline bool decisionWeightInternal__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__DECISION_H */
diff --git a/src/options/decision_weight.h b/src/options/decision_weight.h
new file mode 100644
index 0000000..6d01b18
--- /dev/null
+++ b/src/options/decision_weight.h
@@ -0,0 +1,30 @@
+/*********************                                                        */
+/*! \file decision_weight.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Rewriter attributes
+ **
+ ** Rewriter attributes.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__DECISION_WEIGHT_H
+#define __CVC4__OPTIONS__DECISION_WEIGHT_H
+
+namespace CVC4 {
+namespace decision {
+
+typedef uint64_t DecisionWeight;
+
+}/* CVC4::decision namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__DECISION_WEIGHT_H */
diff --git a/src/options/didyoumean.cpp b/src/options/didyoumean.cpp
new file mode 100644
index 0000000..693764b
--- /dev/null
+++ b/src/options/didyoumean.cpp
@@ -0,0 +1,161 @@
+/*********************                                                        */
+/*! \file didyoumean.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King, Clark Barrett
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief did-you-mean style suggestions
+ **
+ ** ``What do you mean? I don't understand.'' An attempt to be more
+ ** helpful than that. Similar to one in git.
+ **
+ ** There are no dependencies on CVC4 (except namespace).
+ **/
+
+#include "options/didyoumean.h"
+
+#include <iostream>
+#include <set>
+#include <sstream>
+#include <string>
+#include <vector>
+
+namespace CVC4 {
+
+std::vector<std::string> DidYouMean::getMatch(std::string input) {
+  /** Magic numbers */
+  const int similarityThreshold = 7;
+  const unsigned numMatchesThreshold = 10;
+
+  typedef std::set<std::pair<int, std::string> > ScoreSet;
+  ScoreSet scores;
+  std::vector<std::string> ret;
+  for (Words::const_iterator it = d_words.begin(); it != d_words.end(); ++it) {
+    std::string s = (*it);
+    if (s == input) {
+      // if input matches AS-IS just return that
+      ret.push_back(s);
+      return ret;
+    }
+    int score;
+    if (s.compare(0, input.size(), input) == 0) {
+      score = 0;
+    } else {
+      score = editDistance(input, s) + 1;
+    }
+    scores.insert(make_pair(score, s));
+  }
+  int min_score = scores.begin()->first;
+  for (ScoreSet::const_iterator i = scores.begin(); i != scores.end(); ++i) {
+    // add if score is overall not too big, and also not much close to
+    // the score of the best suggestion
+    if (i->first < similarityThreshold && i->first <= min_score + 1) {
+      ret.push_back(i->second);
+#ifdef DIDYOUMEAN_DEBUG
+      cout << i->second << ": " << i->first << std::endl;
+#endif
+    }
+  }
+  if (ret.size() > numMatchesThreshold) {
+    ret.resize(numMatchesThreshold);
+  }
+  return ret;
+}
+
+int DidYouMean::editDistance(const std::string& a, const std::string& b) {
+  // input string: a
+  // desired string: b
+
+  const int swapCost = 0;
+  const int substituteCost = 2;
+  const int addCost = 1;
+  const int deleteCost = 3;
+  const int switchCaseCost = 0;
+
+  int len1 = a.size();
+  int len2 = b.size();
+
+  int* C[3];
+  int ii;
+  for (ii = 0; ii < 3; ++ii) {
+    C[ii] = new int[len2 + 1];
+  }
+  //  int C[3][len2+1];             // cost
+
+  for (int j = 0; j <= len2; ++j) {
+    C[0][j] = j * addCost;
+  }
+
+  for (int i = 1; i <= len1; ++i) {
+    int cur = i % 3;
+    int prv = (i + 2) % 3;
+    int pr2 = (i + 1) % 3;
+
+    C[cur][0] = i * deleteCost;
+
+    for (int j = 1; j <= len2; ++j) {
+      C[cur][j] = 100000000;  // INF
+
+      if (a[i - 1] == b[j - 1]) {
+        // match
+        C[cur][j] = std::min(C[cur][j], C[prv][j - 1]);
+      } else if (tolower(a[i - 1]) == tolower(b[j - 1])) {
+        // switch case
+        C[cur][j] = std::min(C[cur][j], C[prv][j - 1] + switchCaseCost);
+      } else {
+        // substitute
+        C[cur][j] = std::min(C[cur][j], C[prv][j - 1] + substituteCost);
+      }
+
+      // swap
+      if (i >= 2 && j >= 2 && a[i - 1] == b[j - 2] && a[i - 2] == b[j - 1]) {
+        C[cur][j] = std::min(C[cur][j], C[pr2][j - 2] + swapCost);
+      }
+
+      // add
+      C[cur][j] = std::min(C[cur][j], C[cur][j - 1] + addCost);
+
+      // delete
+      C[cur][j] = std::min(C[cur][j], C[prv][j] + deleteCost);
+
+#ifdef DIDYOUMEAN_DEBUG1
+      std::cout << "C[" << cur << "][" << 0 << "] = " << C[cur][0] << std::endl;
+#endif
+    }
+  }
+  int result = C[len1 % 3][len2];
+  for (ii = 0; ii < 3; ++ii) {
+    delete[] C[ii];
+  }
+  return result;
+}
+
+std::string DidYouMean::getMatchAsString(std::string input, int prefixNewLines,
+                                         int suffixNewLines) {
+  std::vector<std::string> matches = getMatch(input);
+  std::ostringstream oss;
+  if (matches.size() > 0) {
+    while (prefixNewLines-- > 0) {
+      oss << std::endl;
+    }
+    if (matches.size() == 1) {
+      oss << "Did you mean this?";
+    } else {
+      oss << "Did you mean any of these?";
+    }
+    for (unsigned i = 0; i < matches.size(); ++i) {
+      oss << "\n        " << matches[i];
+    }
+    while (suffixNewLines-- > 0) {
+      oss << std::endl;
+    }
+  }
+  return oss.str();
+}
+
+} /* CVC4 namespace */
diff --git a/src/options/didyoumean.h b/src/options/didyoumean.h
new file mode 100644
index 0000000..31b58aa
--- /dev/null
+++ b/src/options/didyoumean.h
@@ -0,0 +1,53 @@
+/*********************                                                        */
+/*! \file didyoumean.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief did-you-mean style suggestions.
+ **
+ ** ``What do you mean? I don't understand.'' An attempt to be more
+ ** helpful than that. Similar to one in git.
+ **
+ ** There are no dependencies on CVC4 (except namespace).
+ **/
+
+#pragma once
+
+#include <set>
+#include <string>
+#include <vector>
+
+namespace CVC4 {
+
+class DidYouMean {
+ public:
+  typedef std::set<std::string> Words;
+
+  DidYouMean() {}
+  ~DidYouMean() {}
+
+  DidYouMean(Words words) : d_words(words) {}
+
+  void addWord(std::string word) { d_words.insert(word); }
+
+  std::vector<std::string> getMatch(std::string input);
+
+  /**
+   * This is provided to make it easier to ensure consistency of
+   * output. Returned string is empty if there are no matches.
+   */
+  std::string getMatchAsString(std::string input, int prefixNewLines = 2,
+                               int suffixNewLines = 0);
+
+ private:
+  int editDistance(const std::string& a, const std::string& b);
+  Words d_words;
+};
+
+} /*CVC4 namespace*/
diff --git a/src/options/expr_options b/src/options/expr_options
new file mode 100644
index 0000000..d6997b2
--- /dev/null
+++ b/src/options/expr_options
@@ -0,0 +1,30 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module EXPR "options/expr_options.h" Expression package
+
+option defaultExprDepth --default-expr-depth=N int :default 0 :predicate setDefaultExprDepthPredicate :notify notifySetDefaultExprDepth
+ print exprs to depth N (0 == default, -1 == no limit)
+undocumented-alias --expr-depth=N = --default-expr-depth=N
+
+option defaultDagThresh default-dag-thresh --default-dag-thresh=N int :default 1 :predicate setDefaultDagThreshPredicate :notify notifySetDefaultDagThresh
+ dagify common subexprs appearing > N times (1 == default, 0 == don't dagify)
+undocumented-alias --dag-thresh=N = --default-dag-thresh=N
+undocumented-alias --dag-threshold=N = --default-dag-thresh=N
+
+option printExprTypes --print-expr-types bool :default false :notify notifySetPrintExprTypes
+ print types with variables when printing exprs
+
+option earlyTypeChecking --eager-type-checking/--lazy-type-checking bool :default USE_EARLY_TYPE_CHECKING_BY_DEFAULT
+ type check expressions immediately on creation (debug builds only)
+/type check expressions only when necessary (default)
+
+# --no-type-checking will override any --early-type-checking or --lazy-type-checking option
+# --lazy-type-checking is linked because earlyTypeChecking should be set false too
+option typeChecking type-checking /--no-type-checking bool :default DO_SEMANTIC_CHECKS_BY_DEFAULT :link /--lazy-type-checking
+ never type check expressions
+
+endmodule
+
diff --git a/src/options/expr_options.cpp b/src/options/expr_options.cpp
new file mode 100644
index 0000000..b4c93ac
--- /dev/null
+++ b/src/options/expr_options.cpp
@@ -0,0 +1,63 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+#line 8 "../../../../../src/options/expr_options"
+template <> const options::defaultExprDepth__option_t::type& Options::operator[](options::defaultExprDepth__option_t) const { return d_holder->defaultExprDepth; }
+#line 8 "../../../../../src/options/expr_options"
+template <> bool Options::wasSetByUser(options::defaultExprDepth__option_t) const { return d_holder->defaultExprDepth__setByUser__; }
+#line 12 "../../../../../src/options/expr_options"
+template <> const options::defaultDagThresh__option_t::type& Options::operator[](options::defaultDagThresh__option_t) const { return d_holder->defaultDagThresh; }
+#line 12 "../../../../../src/options/expr_options"
+template <> bool Options::wasSetByUser(options::defaultDagThresh__option_t) const { return d_holder->defaultDagThresh__setByUser__; }
+#line 17 "../../../../../src/options/expr_options"
+template <> const options::printExprTypes__option_t::type& Options::operator[](options::printExprTypes__option_t) const { return d_holder->printExprTypes; }
+#line 17 "../../../../../src/options/expr_options"
+template <> bool Options::wasSetByUser(options::printExprTypes__option_t) const { return d_holder->printExprTypes__setByUser__; }
+#line 20 "../../../../../src/options/expr_options"
+template <> const options::earlyTypeChecking__option_t::type& Options::operator[](options::earlyTypeChecking__option_t) const { return d_holder->earlyTypeChecking; }
+#line 20 "../../../../../src/options/expr_options"
+template <> bool Options::wasSetByUser(options::earlyTypeChecking__option_t) const { return d_holder->earlyTypeChecking__setByUser__; }
+#line 26 "../../../../../src/options/expr_options"
+template <> const options::typeChecking__option_t::type& Options::operator[](options::typeChecking__option_t) const { return d_holder->typeChecking; }
+#line 26 "../../../../../src/options/expr_options"
+template <> bool Options::wasSetByUser(options::typeChecking__option_t) const { return d_holder->typeChecking__setByUser__; }
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/expr_options"
+struct defaultExprDepth__option_t defaultExprDepth;
+#line 12 "../../../../../src/options/expr_options"
+struct defaultDagThresh__option_t defaultDagThresh;
+#line 17 "../../../../../src/options/expr_options"
+struct printExprTypes__option_t printExprTypes;
+#line 20 "../../../../../src/options/expr_options"
+struct earlyTypeChecking__option_t earlyTypeChecking;
+#line 26 "../../../../../src/options/expr_options"
+struct typeChecking__option_t typeChecking;
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/expr_options.h b/src/options/expr_options.h
new file mode 100644
index 0000000..a28cfca
--- /dev/null
+++ b/src/options/expr_options.h
@@ -0,0 +1,129 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__EXPR_H
+#define __CVC4__OPTIONS__EXPR_H
+
+#include "options/options.h"
+
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__EXPR__FOR_OPTION_HOLDER \
+  defaultExprDepth__option_t::type defaultExprDepth; \
+  bool defaultExprDepth__setByUser__; \
+  defaultDagThresh__option_t::type defaultDagThresh; \
+  bool defaultDagThresh__setByUser__; \
+  printExprTypes__option_t::type printExprTypes; \
+  bool printExprTypes__setByUser__; \
+  earlyTypeChecking__option_t::type earlyTypeChecking; \
+  bool earlyTypeChecking__setByUser__; \
+  typeChecking__option_t::type typeChecking; \
+  bool typeChecking__setByUser__;
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/expr_options"
+extern struct CVC4_PUBLIC defaultExprDepth__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } defaultExprDepth CVC4_PUBLIC;
+#line 12 "../../../../../src/options/expr_options"
+extern struct CVC4_PUBLIC defaultDagThresh__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } defaultDagThresh CVC4_PUBLIC;
+#line 17 "../../../../../src/options/expr_options"
+extern struct CVC4_PUBLIC printExprTypes__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } printExprTypes CVC4_PUBLIC;
+#line 20 "../../../../../src/options/expr_options"
+extern struct CVC4_PUBLIC earlyTypeChecking__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } earlyTypeChecking CVC4_PUBLIC;
+#line 26 "../../../../../src/options/expr_options"
+extern struct CVC4_PUBLIC typeChecking__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } typeChecking CVC4_PUBLIC;
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+#line 8 "../../../../../src/options/expr_options"
+template <> const options::defaultExprDepth__option_t::type& Options::operator[](options::defaultExprDepth__option_t) const;
+#line 8 "../../../../../src/options/expr_options"
+template <> bool Options::wasSetByUser(options::defaultExprDepth__option_t) const;
+#line 8 "../../../../../src/options/expr_options"
+template <> void Options::assign(options::defaultExprDepth__option_t, std::string option, std::string value);
+#line 12 "../../../../../src/options/expr_options"
+template <> const options::defaultDagThresh__option_t::type& Options::operator[](options::defaultDagThresh__option_t) const;
+#line 12 "../../../../../src/options/expr_options"
+template <> bool Options::wasSetByUser(options::defaultDagThresh__option_t) const;
+#line 12 "../../../../../src/options/expr_options"
+template <> void Options::assign(options::defaultDagThresh__option_t, std::string option, std::string value);
+#line 17 "../../../../../src/options/expr_options"
+template <> const options::printExprTypes__option_t::type& Options::operator[](options::printExprTypes__option_t) const;
+#line 17 "../../../../../src/options/expr_options"
+template <> bool Options::wasSetByUser(options::printExprTypes__option_t) const;
+#line 17 "../../../../../src/options/expr_options"
+template <> void Options::assignBool(options::printExprTypes__option_t, std::string option, bool value);
+#line 20 "../../../../../src/options/expr_options"
+template <> const options::earlyTypeChecking__option_t::type& Options::operator[](options::earlyTypeChecking__option_t) const;
+#line 20 "../../../../../src/options/expr_options"
+template <> bool Options::wasSetByUser(options::earlyTypeChecking__option_t) const;
+#line 20 "../../../../../src/options/expr_options"
+template <> void Options::assignBool(options::earlyTypeChecking__option_t, std::string option, bool value);
+#line 26 "../../../../../src/options/expr_options"
+template <> const options::typeChecking__option_t::type& Options::operator[](options::typeChecking__option_t) const;
+#line 26 "../../../../../src/options/expr_options"
+template <> bool Options::wasSetByUser(options::typeChecking__option_t) const;
+#line 26 "../../../../../src/options/expr_options"
+template <> void Options::assignBool(options::typeChecking__option_t, std::string option, bool value);
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/expr_options"
+inline defaultExprDepth__option_t::type defaultExprDepth__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 8 "../../../../../src/options/expr_options"
+inline bool defaultExprDepth__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 12 "../../../../../src/options/expr_options"
+inline defaultDagThresh__option_t::type defaultDagThresh__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 12 "../../../../../src/options/expr_options"
+inline bool defaultDagThresh__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 17 "../../../../../src/options/expr_options"
+inline printExprTypes__option_t::type printExprTypes__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 17 "../../../../../src/options/expr_options"
+inline bool printExprTypes__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 20 "../../../../../src/options/expr_options"
+inline earlyTypeChecking__option_t::type earlyTypeChecking__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 20 "../../../../../src/options/expr_options"
+inline bool earlyTypeChecking__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 26 "../../../../../src/options/expr_options"
+inline typeChecking__option_t::type typeChecking__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 26 "../../../../../src/options/expr_options"
+inline bool typeChecking__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__EXPR_H */
diff --git a/src/options/fp_options b/src/options/fp_options
new file mode 100644
index 0000000..977e868
--- /dev/null
+++ b/src/options/fp_options
@@ -0,0 +1,8 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module FP "options/fp_options.h" Fp
+
+endmodule
diff --git a/src/options/fp_options.cpp b/src/options/fp_options.cpp
new file mode 100644
index 0000000..2762db1
--- /dev/null
+++ b/src/options/fp_options.cpp
@@ -0,0 +1,33 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/fp_options.h b/src/options/fp_options.h
new file mode 100644
index 0000000..a82896a
--- /dev/null
+++ b/src/options/fp_options.h
@@ -0,0 +1,55 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__FP_H
+#define __CVC4__OPTIONS__FP_H
+
+#include "options/options.h"
+
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__FP__FOR_OPTION_HOLDER
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__FP_H */
diff --git a/src/options/idl_options b/src/options/idl_options
new file mode 100644
index 0000000..9d4d2a4
--- /dev/null
+++ b/src/options/idl_options
@@ -0,0 +1,12 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module IDL "options/idl_options.h" Idl
+
+option idlRewriteEq --enable-idl-rewrite-equalities/--disable-idl-rewrite-equalities bool :default false :read-write
+ enable rewriting equalities into two inequalities in IDL solver (default is disabled)
+/disable rewriting equalities into two inequalities in IDL solver (default is disabled)
+
+endmodule
diff --git a/src/options/idl_options.cpp b/src/options/idl_options.cpp
new file mode 100644
index 0000000..a27c333
--- /dev/null
+++ b/src/options/idl_options.cpp
@@ -0,0 +1,41 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+#line 8 "../../../../../src/options/idl_options"
+template <> void Options::set(options::idlRewriteEq__option_t, const options::idlRewriteEq__option_t::type& x) { d_holder->idlRewriteEq = x; }
+#line 8 "../../../../../src/options/idl_options"
+template <> const options::idlRewriteEq__option_t::type& Options::operator[](options::idlRewriteEq__option_t) const { return d_holder->idlRewriteEq; }
+#line 8 "../../../../../src/options/idl_options"
+template <> bool Options::wasSetByUser(options::idlRewriteEq__option_t) const { return d_holder->idlRewriteEq__setByUser__; }
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/idl_options"
+struct idlRewriteEq__option_t idlRewriteEq;
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/idl_options.h b/src/options/idl_options.h
new file mode 100644
index 0000000..55536cf
--- /dev/null
+++ b/src/options/idl_options.h
@@ -0,0 +1,73 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__IDL_H
+#define __CVC4__OPTIONS__IDL_H
+
+#include "options/options.h"
+
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__IDL__FOR_OPTION_HOLDER \
+  idlRewriteEq__option_t::type idlRewriteEq; \
+  bool idlRewriteEq__setByUser__;
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/idl_options"
+extern struct CVC4_PUBLIC idlRewriteEq__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } idlRewriteEq CVC4_PUBLIC;
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+#line 8 "../../../../../src/options/idl_options"
+template <> void Options::set(options::idlRewriteEq__option_t, const options::idlRewriteEq__option_t::type& x);
+#line 8 "../../../../../src/options/idl_options"
+template <> const options::idlRewriteEq__option_t::type& Options::operator[](options::idlRewriteEq__option_t) const;
+#line 8 "../../../../../src/options/idl_options"
+template <> bool Options::wasSetByUser(options::idlRewriteEq__option_t) const;
+#line 8 "../../../../../src/options/idl_options"
+template <> void Options::assignBool(options::idlRewriteEq__option_t, std::string option, bool value);
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/idl_options"
+inline idlRewriteEq__option_t::type idlRewriteEq__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 8 "../../../../../src/options/idl_options"
+inline bool idlRewriteEq__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 8 "../../../../../src/options/idl_options"
+inline void idlRewriteEq__option_t::set(const idlRewriteEq__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__IDL_H */
diff --git a/src/options/language.cpp b/src/options/language.cpp
new file mode 100644
index 0000000..665089e
--- /dev/null
+++ b/src/options/language.cpp
@@ -0,0 +1,135 @@
+/*********************                                                        */
+/*! \file language.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Definition of input and output languages
+ **
+ ** Definition of input and output languages.
+ **/
+
+#include "options/language.h"
+
+namespace CVC4 {
+namespace language {
+
+InputLanguage toInputLanguage(OutputLanguage language) {
+  switch(language) {
+  case output::LANG_SMTLIB_V1:
+  case output::LANG_SMTLIB_V2_0:
+  case output::LANG_SMTLIB_V2_5:
+  case output::LANG_TPTP:
+  case output::LANG_CVC4:
+  case output::LANG_Z3STR:
+  case output::LANG_SYGUS:
+    // these entries directly correspond (by design)
+    return InputLanguage(int(language));
+
+  default: {
+    std::stringstream ss;
+    ss << "Cannot map output language `" << language
+       << "' to an input language.";
+    throw CVC4::Exception(ss.str());
+  }
+  }/* switch(language) */
+}/* toInputLanguage() */
+
+OutputLanguage toOutputLanguage(InputLanguage language) {
+  switch(language) {
+  case input::LANG_SMTLIB_V1:
+  case input::LANG_SMTLIB_V2_0:
+  case input::LANG_SMTLIB_V2_5:
+  case input::LANG_TPTP:
+  case input::LANG_CVC4:
+  case input::LANG_Z3STR:
+  case input::LANG_SYGUS:
+    // these entries directly correspond (by design)
+    return OutputLanguage(int(language));
+
+  default:
+    // Revert to the default (AST) language.
+    //
+    // We used to throw an exception here, but that's not quite right.
+    // We often call this while constructing exceptions, for one, and
+    // it's better to output SOMETHING related to the original
+    // exception rather than mask it with another exception.  Also,
+    // the input language isn't always defined---e.g. during the
+    // initial phase of the main CVC4 driver while it determines which
+    // language is appropriate, and during unit tests.  Also, when
+    // users are writing their own code against the library.
+    return output::LANG_AST;
+  }/* switch(language) */
+}/* toOutputLanguage() */
+
+OutputLanguage toOutputLanguage(std::string language) {
+  if(language == "cvc4" || language == "pl" ||
+     language == "presentation" || language == "native" ||
+     language == "LANG_CVC4") {
+    return output::LANG_CVC4;
+  } else if(language == "cvc3" || language == "LANG_CVC3") {
+    return output::LANG_CVC3;
+  } else if(language == "smtlib1" || language == "smt1" ||
+            language == "LANG_SMTLIB_V1") {
+    return output::LANG_SMTLIB_V1;
+  } else if(language == "smtlib" || language == "smt" ||
+            language == "smtlib2" || language == "smt2" ||
+            language == "smtlib2.0" || language == "smt2.0" ||
+            language == "LANG_SMTLIB_V2_0" || language == "LANG_SMTLIB_V2") {
+    return output::LANG_SMTLIB_V2_0;
+  } else if(language == "smtlib2.5" || language == "smt2.5" ||
+            language == "LANG_SMTLIB_V2_5") {
+    return output::LANG_SMTLIB_V2_5;
+  } else if(language == "tptp" || language == "LANG_TPTP") {
+    return output::LANG_TPTP;
+  } else if(language == "z3str" || language == "z3-str" ||
+            language == "LANG_Z3STR") {
+    return output::LANG_Z3STR;
+  } else if(language == "sygus" || language == "LANG_SYGUS") {
+    return output::LANG_SYGUS;
+  } else if(language == "ast" || language == "LANG_AST") {
+    return output::LANG_AST;
+  } else if(language == "auto" || language == "LANG_AUTO") {
+    return output::LANG_AUTO;
+  }
+
+  throw OptionException(std::string("unknown output language `" + language + "'"));
+}/* toOutputLanguage() */
+
+InputLanguage toInputLanguage(std::string language) {
+  if(language == "cvc4" || language == "pl" ||
+     language == "presentation" || language == "native" ||
+     language == "LANG_CVC4") {
+    return input::LANG_CVC4;
+  } else if(language == "smtlib1" || language == "smt1" ||
+            language == "LANG_SMTLIB_V1") {
+    return input::LANG_SMTLIB_V1;
+  } else if(language == "smtlib" || language == "smt" ||
+            language == "smtlib2" || language == "smt2" ||
+            language == "smtlib2.0" || language == "smt2.0" ||
+            language == "LANG_SMTLIB_V2_0" || language == "LANG_SMTLIB_V2") {
+    return input::LANG_SMTLIB_V2_0;
+  } else if(language == "smtlib2.5" || language == "smt2.5" ||
+            language == "LANG_SMTLIB_V2_5") {
+    return input::LANG_SMTLIB_V2_5;
+  } else if(language == "tptp" || language == "LANG_TPTP") {
+    return input::LANG_TPTP;
+  } else if(language == "z3str" || language == "z3-str" ||
+            language == "LANG_Z3STR") {
+    return input::LANG_Z3STR;
+  } else if(language == "sygus" || language == "LANG_SYGUS") {
+    return input::LANG_SYGUS;
+  } else if(language == "auto" || language == "LANG_AUTO") {
+    return input::LANG_AUTO;
+  }
+
+  throw OptionException(std::string("unknown input language `" + language + "'"));
+}/* toInputLanguage() */
+
+}/* CVC4::language namespace */
+}/* CVC4 namespace */
diff --git a/src/options/language.h b/src/options/language.h
new file mode 100644
index 0000000..00328e4
--- /dev/null
+++ b/src/options/language.h
@@ -0,0 +1,202 @@
+/*********************                                                        */
+/*! \file language.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Francois Bobot, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Definition of input and output languages
+ **
+ ** Definition of input and output languages.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__LANGUAGE_H
+#define __CVC4__LANGUAGE_H
+
+#include <sstream>
+#include <string>
+
+#include "base/exception.h"
+#include "options/option_exception.h"
+
+namespace CVC4 {
+namespace language {
+
+namespace input {
+
+enum CVC4_PUBLIC Language {
+  // SPECIAL "NON-LANGUAGE" LANGUAGES HAVE ENUM VALUE < 0
+
+  /** Auto-detect the language */
+  LANG_AUTO = -1,
+
+  // COMMON INPUT AND OUTPUT LANGUAGES HAVE ENUM VALUES IN [0,9]
+  // AND SHOULD CORRESPOND IN PLACEMENT WITH OUTPUTLANGUAGE
+  //
+  // EVEN IF A LANGUAGE ISN'T CURRENTLY SUPPORTED AS AN INPUT OR
+  // OUTPUT LANGUAGE, IF IT IS "IN PRINCIPLE" A COMMON LANGUAGE,
+  // INCLUDE IT HERE
+
+  /** The SMTLIB v1 input language */
+  LANG_SMTLIB_V1 = 0,
+  /** The SMTLIB v2.0 input language */
+  LANG_SMTLIB_V2_0,
+  /** The SMTLIB v2.5 input language */
+  LANG_SMTLIB_V2_5,
+  /** Backward-compatibility for enumeration naming */
+  LANG_SMTLIB_V2 = LANG_SMTLIB_V2_5,
+  /** The TPTP input language */
+  LANG_TPTP,
+  /** The CVC4 input language */
+  LANG_CVC4,
+  /** The Z3-str input language */
+  LANG_Z3STR,
+  /** The SyGuS input language */
+  LANG_SYGUS,
+
+  // START OUTPUT-ONLY LANGUAGES AT ENUM VALUE 10
+  // THESE ARE IN PRINCIPLE NOT POSSIBLE INPUT LANGUAGES
+
+  /** LANG_MAX is > any valid InputLanguage id */
+  LANG_MAX
+};/* enum Language */
+
+inline std::ostream& operator<<(std::ostream& out, Language lang) CVC4_PUBLIC;
+inline std::ostream& operator<<(std::ostream& out, Language lang) {
+  switch(lang) {
+  case LANG_AUTO:
+    out << "LANG_AUTO";
+    break;
+  case LANG_SMTLIB_V1:
+    out << "LANG_SMTLIB_V1";
+    break;
+  case LANG_SMTLIB_V2_0:
+    out << "LANG_SMTLIB_V2_0";
+    break;
+  case LANG_SMTLIB_V2_5:
+    out << "LANG_SMTLIB_V2_5";
+    break;
+  case LANG_TPTP:
+    out << "LANG_TPTP";
+    break;
+  case LANG_CVC4:
+    out << "LANG_CVC4";
+    break;
+  case LANG_Z3STR:
+    out << "LANG_Z3STR";
+    break;
+  case LANG_SYGUS:
+    out << "LANG_SYGUS";
+    break;
+  default:
+    out << "undefined_input_language";
+  }
+  return out;
+}
+
+}/* CVC4::language::input namespace */
+
+namespace output {
+
+enum CVC4_PUBLIC Language {
+  // SPECIAL "NON-LANGUAGE" LANGUAGES HAVE ENUM VALUE < 0
+
+  /** Match the output language to the input language */
+  LANG_AUTO = -1,
+
+  // COMMON INPUT AND OUTPUT LANGUAGES HAVE ENUM VALUES IN [0,9]
+  // AND SHOULD CORRESPOND IN PLACEMENT WITH INPUTLANGUAGE
+  //
+  // EVEN IF A LANGUAGE ISN'T CURRENTLY SUPPORTED AS AN INPUT OR
+  // OUTPUT LANGUAGE, IF IT IS "IN PRINCIPLE" A COMMON LANGUAGE,
+  // INCLUDE IT HERE
+
+  /** The SMTLIB v1 output language */
+  LANG_SMTLIB_V1 = input::LANG_SMTLIB_V1,
+  /** The SMTLIB v2.0 output language */
+  LANG_SMTLIB_V2_0 = input::LANG_SMTLIB_V2_0,
+  /** The SMTLIB v2.5 output language */
+  LANG_SMTLIB_V2_5 = input::LANG_SMTLIB_V2_5,
+  /** Backward-compatibility for enumeration naming */
+  LANG_SMTLIB_V2 = input::LANG_SMTLIB_V2,
+  /** The TPTP output language */
+  LANG_TPTP = input::LANG_TPTP,
+  /** The CVC4 output language */
+  LANG_CVC4 = input::LANG_CVC4,
+  /** The Z3-str output language */
+  LANG_Z3STR = input::LANG_Z3STR,
+  /** The sygus output language */
+  LANG_SYGUS = input::LANG_SYGUS,
+
+  // START OUTPUT-ONLY LANGUAGES AT ENUM VALUE 10
+  // THESE ARE IN PRINCIPLE NOT POSSIBLE INPUT LANGUAGES
+
+  /** The AST output language */
+  LANG_AST = 10,
+  /** The CVC3-compatibility output language */
+  LANG_CVC3,
+
+  /** LANG_MAX is > any valid OutputLanguage id */
+  LANG_MAX
+};/* enum Language */
+
+inline std::ostream& operator<<(std::ostream& out, Language lang) CVC4_PUBLIC;
+inline std::ostream& operator<<(std::ostream& out, Language lang) {
+  switch(lang) {
+  case LANG_SMTLIB_V1:
+    out << "LANG_SMTLIB_V1";
+    break;
+  case LANG_SMTLIB_V2_0:
+    out << "LANG_SMTLIB_V2_0";
+    break;
+  case LANG_SMTLIB_V2_5:
+    out << "LANG_SMTLIB_V2_5";
+    break;
+  case LANG_TPTP:
+    out << "LANG_TPTP";
+    break;
+  case LANG_CVC4:
+    out << "LANG_CVC4";
+    break;
+  case LANG_Z3STR:
+    out << "LANG_Z3STR";
+    break;
+  case LANG_SYGUS:
+    out << "LANG_SYGUS";
+    break;
+  case LANG_AST:
+    out << "LANG_AST";
+    break;
+  case LANG_CVC3:
+    out << "LANG_CVC3";
+    break;
+  default:
+    out << "undefined_output_language";
+  }
+  return out;
+}
+
+}/* CVC4::language::output namespace */
+
+}/* CVC4::language namespace */
+
+typedef language::input::Language InputLanguage;
+typedef language::output::Language OutputLanguage;
+
+namespace language {
+
+InputLanguage toInputLanguage(OutputLanguage language) CVC4_PUBLIC;
+OutputLanguage toOutputLanguage(InputLanguage language) CVC4_PUBLIC;
+InputLanguage toInputLanguage(std::string language) CVC4_PUBLIC;
+OutputLanguage toOutputLanguage(std::string language) CVC4_PUBLIC;
+
+}/* CVC4::language namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__LANGUAGE_H */
diff --git a/src/options/language.i b/src/options/language.i
new file mode 100644
index 0000000..d14368c
--- /dev/null
+++ b/src/options/language.i
@@ -0,0 +1,44 @@
+%{
+#include "options/language.h"
+%}
+
+namespace CVC4 {
+  namespace language {
+    namespace input {
+      %ignore operator<<(std::ostream&, Language);
+    }/* CVC4::language::input namespace */
+
+    namespace output {
+      %ignore operator<<(std::ostream&, Language);
+    }/* CVC4::language::output namespace */
+  }/* CVC4::language namespace */
+}/* CVC4 namespace */
+
+// These clash in the monolithic Java namespace, so we rename them.
+%rename(InputLanguage) CVC4::language::input::Language;
+%rename(OutputLanguage) CVC4::language::output::Language;
+
+%rename(INPUT_LANG_AUTO) CVC4::language::input::LANG_AUTO;
+%rename(INPUT_LANG_SMTLIB_V1) CVC4::language::input::LANG_SMTLIB_V1;
+%rename(INPUT_LANG_SMTLIB_V2) CVC4::language::input::LANG_SMTLIB_V2;
+%rename(INPUT_LANG_SMTLIB_V2_0) CVC4::language::input::LANG_SMTLIB_V2_0;
+%rename(INPUT_LANG_SMTLIB_V2_5) CVC4::language::input::LANG_SMTLIB_V2_5;
+%rename(INPUT_LANG_TPTP) CVC4::language::input::LANG_TPTP;
+%rename(INPUT_LANG_CVC4) CVC4::language::input::LANG_CVC4;
+%rename(INPUT_LANG_MAX) CVC4::language::input::LANG_MAX;
+%rename(INPUT_LANG_Z3STR) CVC4::language::input::LANG_Z3STR;
+%rename(INPUT_LANG_SYGUS) CVC4::language::input::LANG_SYGUS;
+
+%rename(OUTPUT_LANG_AUTO) CVC4::language::output::LANG_AUTO;
+%rename(OUTPUT_LANG_SMTLIB_V1) CVC4::language::output::LANG_SMTLIB_V1;
+%rename(OUTPUT_LANG_SMTLIB_V2) CVC4::language::output::LANG_SMTLIB_V2;
+%rename(OUTPUT_LANG_SMTLIB_V2_0) CVC4::language::output::LANG_SMTLIB_V2_0;
+%rename(OUTPUT_LANG_SMTLIB_V2_5) CVC4::language::output::LANG_SMTLIB_V2_5;
+%rename(OUTPUT_LANG_TPTP) CVC4::language::output::LANG_TPTP;
+%rename(OUTPUT_LANG_CVC4) CVC4::language::output::LANG_CVC4;
+%rename(OUTPUT_LANG_AST) CVC4::language::output::LANG_AST;
+%rename(OUTPUT_LANG_MAX) CVC4::language::output::LANG_MAX;
+%rename(OUTPUT_LANG_Z3STR) CVC4::language::output::LANG_Z3STR;
+%rename(OUTPUT_LANG_SYGUS) CVC4::language::output::LANG_SYGUS;
+
+%include "options/language.h"
diff --git a/src/options/main_options b/src/options/main_options
new file mode 100644
index 0000000..0fa799d
--- /dev/null
+++ b/src/options/main_options
@@ -0,0 +1,63 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module DRIVER "options/main_options.h" Driver
+
+common-option version -V --version/ bool
+ identify this CVC4 binary
+undocumented-alias --license = --version
+
+common-option help -h --help/ bool
+ full command line reference
+
+common-option - --show-config void :handler showConfiguration
+ show CVC4 static configuration
+
+option - --show-debug-tags void :handler showDebugTags
+ show all available tags for debugging
+option - --show-trace-tags void :handler showTraceTags
+ show all available tags for tracing
+
+expert-option earlyExit --early-exit bool :default true
+ do not run destructors at exit; default on except in debug builds
+
+# portfolio options
+option threads --threads=N unsigned :default 2 :predicate unsignedGreater0
+ Total number of threads for portfolio
+option - --threadN=string void :handler threadN
+ configures portfolio thread N (0..#threads-1)
+option threadStackSize --thread-stack=N unsigned :default 0
+ stack size for worker threads in MB (0 means use Boost/thread lib default)
+option threadArgv std::vector<std::string> :include <vector> <string>
+ Thread configuration (a string to be passed to parseOptions)
+option thread_id int :default -1
+ Thread ID, for internal use in case of multi-threaded run
+option sharingFilterByLength --filter-lemma-length=N int :default -1 :read-write
+ don't share (among portfolio threads) lemmas strictly longer than N
+option fallbackSequential  --fallback-sequential bool :default false
+ Switch to sequential mode (instead of printing an error) if it can't be solved in portfolio mode
+option incrementalParallel --incremental-parallel bool :default false :link --incremental :link-smt incremental
+ Use parallel solver even in incremental mode (may print 'unknown's at times)
+
+option interactive : --interactive bool :read-write
+ force interactive/non-interactive mode
+undocumented-option interactivePrompt --interactive-prompt bool :default true
+ interactive prompting while in interactive mode
+
+# error behaviors (--immediate-exit is default in cases we support, thus no options)
+option continuedExecution --continued-execution/ bool :default false :link "--interactive --no-interactive-prompt"/ :link-smt interactive :link-smt interactivePrompt \"false\"
+ continue executing commands, even on error
+
+option segvSpin --segv-spin bool :default false
+ spin on segfault/other crash waiting for gdb
+undocumented-alias --segv-nospin = --no-segv-spin
+
+expert-option tearDownIncremental : --tear-down-incremental=N int :default 0
+ implement PUSH/POP/multi-query by destroying and recreating SmtEngine every N queries
+
+expert-option waitToJoin --wait-to-join bool :default true
+ wait for other threads to join before quitting
+
+endmodule
diff --git a/src/options/main_options.cpp b/src/options/main_options.cpp
new file mode 100644
index 0000000..28b344e
--- /dev/null
+++ b/src/options/main_options.cpp
@@ -0,0 +1,137 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+#line 8 "../../../../../src/options/main_options"
+template <> const options::version__option_t::type& Options::operator[](options::version__option_t) const { return d_holder->version; }
+#line 8 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::version__option_t) const { return d_holder->version__setByUser__; }
+#line 12 "../../../../../src/options/main_options"
+template <> const options::help__option_t::type& Options::operator[](options::help__option_t) const { return d_holder->help; }
+#line 12 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::help__option_t) const { return d_holder->help__setByUser__; }
+#line 23 "../../../../../src/options/main_options"
+template <> const options::earlyExit__option_t::type& Options::operator[](options::earlyExit__option_t) const { return d_holder->earlyExit; }
+#line 23 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::earlyExit__option_t) const { return d_holder->earlyExit__setByUser__; }
+#line 27 "../../../../../src/options/main_options"
+template <> const options::threads__option_t::type& Options::operator[](options::threads__option_t) const { return d_holder->threads; }
+#line 27 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::threads__option_t) const { return d_holder->threads__setByUser__; }
+#line 31 "../../../../../src/options/main_options"
+template <> const options::threadStackSize__option_t::type& Options::operator[](options::threadStackSize__option_t) const { return d_holder->threadStackSize; }
+#line 31 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::threadStackSize__option_t) const { return d_holder->threadStackSize__setByUser__; }
+#line 33 "../../../../../src/options/main_options"
+template <> void Options::set(options::threadArgv__option_t, const options::threadArgv__option_t::type& x) { d_holder->threadArgv = x; }
+#line 33 "../../../../../src/options/main_options"
+template <> const options::threadArgv__option_t::type& Options::operator[](options::threadArgv__option_t) const { return d_holder->threadArgv; }
+#line 33 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::threadArgv__option_t) const { return d_holder->threadArgv__setByUser__; }
+#line 35 "../../../../../src/options/main_options"
+template <> void Options::set(options::thread_id__option_t, const options::thread_id__option_t::type& x) { d_holder->thread_id = x; }
+#line 35 "../../../../../src/options/main_options"
+template <> const options::thread_id__option_t::type& Options::operator[](options::thread_id__option_t) const { return d_holder->thread_id; }
+#line 35 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::thread_id__option_t) const { return d_holder->thread_id__setByUser__; }
+#line 37 "../../../../../src/options/main_options"
+template <> void Options::set(options::sharingFilterByLength__option_t, const options::sharingFilterByLength__option_t::type& x) { d_holder->sharingFilterByLength = x; }
+#line 37 "../../../../../src/options/main_options"
+template <> const options::sharingFilterByLength__option_t::type& Options::operator[](options::sharingFilterByLength__option_t) const { return d_holder->sharingFilterByLength; }
+#line 37 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::sharingFilterByLength__option_t) const { return d_holder->sharingFilterByLength__setByUser__; }
+#line 39 "../../../../../src/options/main_options"
+template <> const options::fallbackSequential__option_t::type& Options::operator[](options::fallbackSequential__option_t) const { return d_holder->fallbackSequential; }
+#line 39 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::fallbackSequential__option_t) const { return d_holder->fallbackSequential__setByUser__; }
+#line 41 "../../../../../src/options/main_options"
+template <> const options::incrementalParallel__option_t::type& Options::operator[](options::incrementalParallel__option_t) const { return d_holder->incrementalParallel; }
+#line 41 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::incrementalParallel__option_t) const { return d_holder->incrementalParallel__setByUser__; }
+#line 44 "../../../../../src/options/main_options"
+template <> void Options::set(options::interactive__option_t, const options::interactive__option_t::type& x) { d_holder->interactive = x; }
+#line 44 "../../../../../src/options/main_options"
+template <> const options::interactive__option_t::type& Options::operator[](options::interactive__option_t) const { return d_holder->interactive; }
+#line 44 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::interactive__option_t) const { return d_holder->interactive__setByUser__; }
+#line 46 "../../../../../src/options/main_options"
+template <> const options::interactivePrompt__option_t::type& Options::operator[](options::interactivePrompt__option_t) const { return d_holder->interactivePrompt; }
+#line 46 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::interactivePrompt__option_t) const { return d_holder->interactivePrompt__setByUser__; }
+#line 50 "../../../../../src/options/main_options"
+template <> const options::continuedExecution__option_t::type& Options::operator[](options::continuedExecution__option_t) const { return d_holder->continuedExecution; }
+#line 50 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::continuedExecution__option_t) const { return d_holder->continuedExecution__setByUser__; }
+#line 53 "../../../../../src/options/main_options"
+template <> const options::segvSpin__option_t::type& Options::operator[](options::segvSpin__option_t) const { return d_holder->segvSpin; }
+#line 53 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::segvSpin__option_t) const { return d_holder->segvSpin__setByUser__; }
+#line 57 "../../../../../src/options/main_options"
+template <> const options::tearDownIncremental__option_t::type& Options::operator[](options::tearDownIncremental__option_t) const { return d_holder->tearDownIncremental; }
+#line 57 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::tearDownIncremental__option_t) const { return d_holder->tearDownIncremental__setByUser__; }
+#line 60 "../../../../../src/options/main_options"
+template <> const options::waitToJoin__option_t::type& Options::operator[](options::waitToJoin__option_t) const { return d_holder->waitToJoin; }
+#line 60 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::waitToJoin__option_t) const { return d_holder->waitToJoin__setByUser__; }
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/main_options"
+struct version__option_t version;
+#line 12 "../../../../../src/options/main_options"
+struct help__option_t help;
+#line 23 "../../../../../src/options/main_options"
+struct earlyExit__option_t earlyExit;
+#line 27 "../../../../../src/options/main_options"
+struct threads__option_t threads;
+#line 31 "../../../../../src/options/main_options"
+struct threadStackSize__option_t threadStackSize;
+#line 33 "../../../../../src/options/main_options"
+struct threadArgv__option_t threadArgv;
+#line 35 "../../../../../src/options/main_options"
+struct thread_id__option_t thread_id;
+#line 37 "../../../../../src/options/main_options"
+struct sharingFilterByLength__option_t sharingFilterByLength;
+#line 39 "../../../../../src/options/main_options"
+struct fallbackSequential__option_t fallbackSequential;
+#line 41 "../../../../../src/options/main_options"
+struct incrementalParallel__option_t incrementalParallel;
+#line 44 "../../../../../src/options/main_options"
+struct interactive__option_t interactive;
+#line 46 "../../../../../src/options/main_options"
+struct interactivePrompt__option_t interactivePrompt;
+#line 50 "../../../../../src/options/main_options"
+struct continuedExecution__option_t continuedExecution;
+#line 53 "../../../../../src/options/main_options"
+struct segvSpin__option_t segvSpin;
+#line 57 "../../../../../src/options/main_options"
+struct tearDownIncremental__option_t tearDownIncremental;
+#line 60 "../../../../../src/options/main_options"
+struct waitToJoin__option_t waitToJoin;
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/main_options.h b/src/options/main_options.h
new file mode 100644
index 0000000..59576cd
--- /dev/null
+++ b/src/options/main_options.h
@@ -0,0 +1,314 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__DRIVER_H
+#define __CVC4__OPTIONS__DRIVER_H
+
+#include "options/options.h"
+
+#line 33 "../../../../../src/options/main_options"
+#include <vector>
+#line 33 "../../../../../src/options/main_options"
+#include <string>
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__DRIVER__FOR_OPTION_HOLDER \
+  version__option_t::type version; \
+  bool version__setByUser__; \
+  help__option_t::type help; \
+  bool help__setByUser__; \
+  earlyExit__option_t::type earlyExit; \
+  bool earlyExit__setByUser__; \
+  threads__option_t::type threads; \
+  bool threads__setByUser__; \
+  threadStackSize__option_t::type threadStackSize; \
+  bool threadStackSize__setByUser__; \
+  threadArgv__option_t::type threadArgv; \
+  bool threadArgv__setByUser__; \
+  thread_id__option_t::type thread_id; \
+  bool thread_id__setByUser__; \
+  sharingFilterByLength__option_t::type sharingFilterByLength; \
+  bool sharingFilterByLength__setByUser__; \
+  fallbackSequential__option_t::type fallbackSequential; \
+  bool fallbackSequential__setByUser__; \
+  incrementalParallel__option_t::type incrementalParallel; \
+  bool incrementalParallel__setByUser__; \
+  interactive__option_t::type interactive; \
+  bool interactive__setByUser__; \
+  interactivePrompt__option_t::type interactivePrompt; \
+  bool interactivePrompt__setByUser__; \
+  continuedExecution__option_t::type continuedExecution; \
+  bool continuedExecution__setByUser__; \
+  segvSpin__option_t::type segvSpin; \
+  bool segvSpin__setByUser__; \
+  tearDownIncremental__option_t::type tearDownIncremental; \
+  bool tearDownIncremental__setByUser__; \
+  waitToJoin__option_t::type waitToJoin; \
+  bool waitToJoin__setByUser__;
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/main_options"
+extern struct CVC4_PUBLIC version__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } version CVC4_PUBLIC;
+#line 12 "../../../../../src/options/main_options"
+extern struct CVC4_PUBLIC help__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } help CVC4_PUBLIC;
+#line 23 "../../../../../src/options/main_options"
+extern struct CVC4_PUBLIC earlyExit__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } earlyExit CVC4_PUBLIC;
+#line 27 "../../../../../src/options/main_options"
+extern struct CVC4_PUBLIC threads__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } threads CVC4_PUBLIC;
+#line 31 "../../../../../src/options/main_options"
+extern struct CVC4_PUBLIC threadStackSize__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } threadStackSize CVC4_PUBLIC;
+#line 33 "../../../../../src/options/main_options"
+extern struct CVC4_PUBLIC threadArgv__option_t { typedef std::vector<std::string> type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } threadArgv CVC4_PUBLIC;
+#line 35 "../../../../../src/options/main_options"
+extern struct CVC4_PUBLIC thread_id__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } thread_id CVC4_PUBLIC;
+#line 37 "../../../../../src/options/main_options"
+extern struct CVC4_PUBLIC sharingFilterByLength__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } sharingFilterByLength CVC4_PUBLIC;
+#line 39 "../../../../../src/options/main_options"
+extern struct CVC4_PUBLIC fallbackSequential__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } fallbackSequential CVC4_PUBLIC;
+#line 41 "../../../../../src/options/main_options"
+extern struct CVC4_PUBLIC incrementalParallel__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } incrementalParallel CVC4_PUBLIC;
+#line 44 "../../../../../src/options/main_options"
+extern struct CVC4_PUBLIC interactive__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } interactive CVC4_PUBLIC;
+#line 46 "../../../../../src/options/main_options"
+extern struct CVC4_PUBLIC interactivePrompt__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } interactivePrompt CVC4_PUBLIC;
+#line 50 "../../../../../src/options/main_options"
+extern struct CVC4_PUBLIC continuedExecution__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } continuedExecution CVC4_PUBLIC;
+#line 53 "../../../../../src/options/main_options"
+extern struct CVC4_PUBLIC segvSpin__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } segvSpin CVC4_PUBLIC;
+#line 57 "../../../../../src/options/main_options"
+extern struct CVC4_PUBLIC tearDownIncremental__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } tearDownIncremental CVC4_PUBLIC;
+#line 60 "../../../../../src/options/main_options"
+extern struct CVC4_PUBLIC waitToJoin__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } waitToJoin CVC4_PUBLIC;
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+#line 8 "../../../../../src/options/main_options"
+template <> const options::version__option_t::type& Options::operator[](options::version__option_t) const;
+#line 8 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::version__option_t) const;
+#line 8 "../../../../../src/options/main_options"
+template <> void Options::assignBool(options::version__option_t, std::string option, bool value);
+#line 12 "../../../../../src/options/main_options"
+template <> const options::help__option_t::type& Options::operator[](options::help__option_t) const;
+#line 12 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::help__option_t) const;
+#line 12 "../../../../../src/options/main_options"
+template <> void Options::assignBool(options::help__option_t, std::string option, bool value);
+#line 23 "../../../../../src/options/main_options"
+template <> const options::earlyExit__option_t::type& Options::operator[](options::earlyExit__option_t) const;
+#line 23 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::earlyExit__option_t) const;
+#line 23 "../../../../../src/options/main_options"
+template <> void Options::assignBool(options::earlyExit__option_t, std::string option, bool value);
+#line 27 "../../../../../src/options/main_options"
+template <> const options::threads__option_t::type& Options::operator[](options::threads__option_t) const;
+#line 27 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::threads__option_t) const;
+#line 27 "../../../../../src/options/main_options"
+template <> void Options::assign(options::threads__option_t, std::string option, std::string value);
+#line 31 "../../../../../src/options/main_options"
+template <> const options::threadStackSize__option_t::type& Options::operator[](options::threadStackSize__option_t) const;
+#line 31 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::threadStackSize__option_t) const;
+#line 31 "../../../../../src/options/main_options"
+template <> void Options::assign(options::threadStackSize__option_t, std::string option, std::string value);
+#line 33 "../../../../../src/options/main_options"
+template <> void Options::set(options::threadArgv__option_t, const options::threadArgv__option_t::type& x);
+#line 33 "../../../../../src/options/main_options"
+template <> const options::threadArgv__option_t::type& Options::operator[](options::threadArgv__option_t) const;
+#line 33 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::threadArgv__option_t) const;
+#line 33 "../../../../../src/options/main_options"
+template <> void Options::assign(options::threadArgv__option_t, std::string option, std::string value);
+#line 35 "../../../../../src/options/main_options"
+template <> void Options::set(options::thread_id__option_t, const options::thread_id__option_t::type& x);
+#line 35 "../../../../../src/options/main_options"
+template <> const options::thread_id__option_t::type& Options::operator[](options::thread_id__option_t) const;
+#line 35 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::thread_id__option_t) const;
+#line 35 "../../../../../src/options/main_options"
+template <> void Options::assign(options::thread_id__option_t, std::string option, std::string value);
+#line 37 "../../../../../src/options/main_options"
+template <> void Options::set(options::sharingFilterByLength__option_t, const options::sharingFilterByLength__option_t::type& x);
+#line 37 "../../../../../src/options/main_options"
+template <> const options::sharingFilterByLength__option_t::type& Options::operator[](options::sharingFilterByLength__option_t) const;
+#line 37 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::sharingFilterByLength__option_t) const;
+#line 37 "../../../../../src/options/main_options"
+template <> void Options::assign(options::sharingFilterByLength__option_t, std::string option, std::string value);
+#line 39 "../../../../../src/options/main_options"
+template <> const options::fallbackSequential__option_t::type& Options::operator[](options::fallbackSequential__option_t) const;
+#line 39 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::fallbackSequential__option_t) const;
+#line 39 "../../../../../src/options/main_options"
+template <> void Options::assignBool(options::fallbackSequential__option_t, std::string option, bool value);
+#line 41 "../../../../../src/options/main_options"
+template <> const options::incrementalParallel__option_t::type& Options::operator[](options::incrementalParallel__option_t) const;
+#line 41 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::incrementalParallel__option_t) const;
+#line 41 "../../../../../src/options/main_options"
+template <> void Options::assignBool(options::incrementalParallel__option_t, std::string option, bool value);
+#line 44 "../../../../../src/options/main_options"
+template <> void Options::set(options::interactive__option_t, const options::interactive__option_t::type& x);
+#line 44 "../../../../../src/options/main_options"
+template <> const options::interactive__option_t::type& Options::operator[](options::interactive__option_t) const;
+#line 44 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::interactive__option_t) const;
+#line 44 "../../../../../src/options/main_options"
+template <> void Options::assignBool(options::interactive__option_t, std::string option, bool value);
+#line 46 "../../../../../src/options/main_options"
+template <> const options::interactivePrompt__option_t::type& Options::operator[](options::interactivePrompt__option_t) const;
+#line 46 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::interactivePrompt__option_t) const;
+#line 46 "../../../../../src/options/main_options"
+template <> void Options::assignBool(options::interactivePrompt__option_t, std::string option, bool value);
+#line 50 "../../../../../src/options/main_options"
+template <> const options::continuedExecution__option_t::type& Options::operator[](options::continuedExecution__option_t) const;
+#line 50 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::continuedExecution__option_t) const;
+#line 50 "../../../../../src/options/main_options"
+template <> void Options::assignBool(options::continuedExecution__option_t, std::string option, bool value);
+#line 53 "../../../../../src/options/main_options"
+template <> const options::segvSpin__option_t::type& Options::operator[](options::segvSpin__option_t) const;
+#line 53 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::segvSpin__option_t) const;
+#line 53 "../../../../../src/options/main_options"
+template <> void Options::assignBool(options::segvSpin__option_t, std::string option, bool value);
+#line 57 "../../../../../src/options/main_options"
+template <> const options::tearDownIncremental__option_t::type& Options::operator[](options::tearDownIncremental__option_t) const;
+#line 57 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::tearDownIncremental__option_t) const;
+#line 57 "../../../../../src/options/main_options"
+template <> void Options::assign(options::tearDownIncremental__option_t, std::string option, std::string value);
+#line 60 "../../../../../src/options/main_options"
+template <> const options::waitToJoin__option_t::type& Options::operator[](options::waitToJoin__option_t) const;
+#line 60 "../../../../../src/options/main_options"
+template <> bool Options::wasSetByUser(options::waitToJoin__option_t) const;
+#line 60 "../../../../../src/options/main_options"
+template <> void Options::assignBool(options::waitToJoin__option_t, std::string option, bool value);
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/main_options"
+inline version__option_t::type version__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 8 "../../../../../src/options/main_options"
+inline bool version__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 12 "../../../../../src/options/main_options"
+inline help__option_t::type help__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 12 "../../../../../src/options/main_options"
+inline bool help__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 23 "../../../../../src/options/main_options"
+inline earlyExit__option_t::type earlyExit__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 23 "../../../../../src/options/main_options"
+inline bool earlyExit__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 27 "../../../../../src/options/main_options"
+inline threads__option_t::type threads__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 27 "../../../../../src/options/main_options"
+inline bool threads__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 31 "../../../../../src/options/main_options"
+inline threadStackSize__option_t::type threadStackSize__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 31 "../../../../../src/options/main_options"
+inline bool threadStackSize__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 33 "../../../../../src/options/main_options"
+inline threadArgv__option_t::type threadArgv__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 33 "../../../../../src/options/main_options"
+inline bool threadArgv__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 33 "../../../../../src/options/main_options"
+inline void threadArgv__option_t::set(const threadArgv__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 35 "../../../../../src/options/main_options"
+inline thread_id__option_t::type thread_id__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 35 "../../../../../src/options/main_options"
+inline bool thread_id__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 35 "../../../../../src/options/main_options"
+inline void thread_id__option_t::set(const thread_id__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 37 "../../../../../src/options/main_options"
+inline sharingFilterByLength__option_t::type sharingFilterByLength__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 37 "../../../../../src/options/main_options"
+inline bool sharingFilterByLength__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 37 "../../../../../src/options/main_options"
+inline void sharingFilterByLength__option_t::set(const sharingFilterByLength__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 39 "../../../../../src/options/main_options"
+inline fallbackSequential__option_t::type fallbackSequential__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 39 "../../../../../src/options/main_options"
+inline bool fallbackSequential__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 41 "../../../../../src/options/main_options"
+inline incrementalParallel__option_t::type incrementalParallel__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 41 "../../../../../src/options/main_options"
+inline bool incrementalParallel__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 44 "../../../../../src/options/main_options"
+inline interactive__option_t::type interactive__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 44 "../../../../../src/options/main_options"
+inline bool interactive__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 44 "../../../../../src/options/main_options"
+inline void interactive__option_t::set(const interactive__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 46 "../../../../../src/options/main_options"
+inline interactivePrompt__option_t::type interactivePrompt__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 46 "../../../../../src/options/main_options"
+inline bool interactivePrompt__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 50 "../../../../../src/options/main_options"
+inline continuedExecution__option_t::type continuedExecution__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 50 "../../../../../src/options/main_options"
+inline bool continuedExecution__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 53 "../../../../../src/options/main_options"
+inline segvSpin__option_t::type segvSpin__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 53 "../../../../../src/options/main_options"
+inline bool segvSpin__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 57 "../../../../../src/options/main_options"
+inline tearDownIncremental__option_t::type tearDownIncremental__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 57 "../../../../../src/options/main_options"
+inline bool tearDownIncremental__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 60 "../../../../../src/options/main_options"
+inline waitToJoin__option_t::type waitToJoin__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 60 "../../../../../src/options/main_options"
+inline bool waitToJoin__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__DRIVER_H */
diff --git a/src/options/mkoptions b/src/options/mkoptions
new file mode 100755
index 0000000..dd55756
--- /dev/null
+++ b/src/options/mkoptions
@@ -0,0 +1,1670 @@
+#!/bin/bash
+#
+# mkoptions
+# Morgan Deters <mdeters at cs.nyu.edu> for CVC4
+# Tim King <taking at google.com> for CVC4
+# Copyright (c) 2011-2015  The CVC4 Project
+#
+# Invocation:
+#
+#   mkoptions module-sed options-file
+#   mkoptions summary-sed (options-file)*
+#   mkoptions template-sed template-file
+#   mkoptions apply-sed-files-to-template template-file (sed-file)*
+#
+# The primary purpose of this script is to create options/*_options.{h,cpp}
+# from template files and a list of options. This additionally generates
+# the several documentation files, option_handler_get_option.cpp,
+# option_handler_set_option.cpp, and options_holder.{h,cpp}. This script can in
+# broad terms be thought of as an interpreter for a domain specific language
+# within bash.
+#
+# The process for generating the files is as follows.
+# 1) Scan all of the option files that are of interest.
+#    For an options.h file this is a single option file. For the system wide
+#    aggregates, like documentation, this is all of the option files.
+#
+# 2) Each option file is effectively a bash script. To oversimplify, each line
+#    in the file corresponds to executing a command in this file.
+#    The side effect of running the bash script is to populate the internal
+#    variables of this script.
+#    See the "eval" call in scan_module to see how internal functions are
+#    called.
+# 
+# 3) The internal variables are then compiled into a map from variables to
+#    string values. These maps are printed to standard output. This output
+#    is a valid sed file.
+#
+# 4) These sed maps are then applied to templates files to generate the final
+#    output files.
+#
+# Example of generating a module:
+#   mkoptions module-sed src/options/base_options.h src/theory
+
+copyright=2011-2015
+
+me=$(basename "$0")
+
+function usage {
+  echo "usage: $me module-sed options-file" >&2
+  echo "usage: $me summary-sed (options-file)*" >&2
+  echo "usage: $me template-sed template-file" >&2
+  echo "usage: $me apply-sed-files-to-template template-file (sed-file)*" >&2
+}
+
+# progress_char=/
+# if [ -t 1 ]; then r="\r"; else r=""; fi
+# function progress {
+#   file="$(expr "$1" : '.*\(.................................................................\)')"
+#   if [ -z "$file" ]; then file="$1"; else file="[...]$file"; fi
+#   [ -t 1 ] && printf "$r%c %-70s (%3d%%)" "$progress_char" "$file" "$(($2*100/$3))"
+#   progress_char="`echo "$progress_char" | tr -- '-\\\\|/' '\\\\|/-'`"
+# }
+
+function NOTE {
+  printf "$r%-80s\n" "$kf:$lineno: note: $@" >&2
+}
+
+function WARN {
+  printf "$r%-80s\n" "$kf:$lineno: warning: $@" >&2
+}
+
+function ERR {
+  printf "$r%-80s\n" "$kf:$lineno: error: $@" >&2
+  exit 1
+}
+
+
+#options_h_template="$1"; shift
+#options_cpp_template="$1"; shift
+
+all_modules_defaults=
+all_modules_short_options=
+all_modules_long_options=
+all_modules_smt_options=
+all_modules_option_handlers=
+all_modules_get_options=
+smt_getoption_handlers=
+smt_setoption_handlers=
+include_all_option_headers=
+all_modules_contributions=
+option_handler_includes=
+all_custom_handlers=
+common_documentation=
+remaining_documentation=
+common_manpage_documentation=
+remaining_manpage_documentation=
+common_manpage_smt_documentation=
+remaining_manpage_smt_documentation=
+common_manpage_internals_documentation=
+remaining_manpage_internals_documentation=
+
+seen_module=false
+seen_endmodule=false
+expect_doc=false
+expect_doc_alternate=false
+seen_doc=false
+n_long=256
+
+internal=
+smtname=
+short_option=
+short_option_alternate=
+long_option=
+long_option_alternate=
+long_option_alternate_set=
+type=
+predicates=
+notifications=
+
+# just for duplicates-checking
+all_declared_internal_options=
+all_declared_long_options=
+all_declared_short_options=
+all_declared_smt_options=
+
+long_option_value_begin=$n_long
+
+function module {
+  # module id name
+
+  module_id=
+  module_name=
+  module_includes=
+  module_optionholder_spec=
+  module_decls=
+  module_specializations=
+  module_inlines=
+  module_accessors=
+  module_global_definitions=
+
+  seen_module=true
+  if [ $# -lt 3 -o -z "$1" -o -z "$2" -o -z "$3" ]; then
+    ERR "\"module\" directive requires exactly three arguments"
+  fi
+
+  module_id="$1"; shift
+  include="$1"; shift
+  module_name="$@"
+  include_all_option_headers="${include_all_option_headers}
+#line $lineno \"$kf\"
+#include $(check_include "$include")"
+  all_modules_contributions="${all_modules_contributions}
+  CVC4_OPTIONS__${module_id}__FOR_OPTION_HOLDER"
+  module_optionholder_spec="#define CVC4_OPTIONS__${module_id}__FOR_OPTION_HOLDER"
+
+  previous_remaining_documentation="${remaining_documentation}"
+  remaining_documentation="${remaining_documentation}\\n\\n\"
+#line $lineno \"$kf\"
+\"From the $module_name module:"
+  remaining_documentation_at_start_of_module="${remaining_documentation}"
+
+  previous_remaining_manpage_documentation="${remaining_manpage_documentation}"
+  remaining_manpage_documentation="${remaining_manpage_documentation}
+.SH `echo "$module_name" | tr a-z A-Z` OPTIONS
+"
+  remaining_manpage_documentation_at_start_of_module="${remaining_manpage_documentation}"
+
+  previous_remaining_manpage_smt_documentation="${remaining_manpage_smt_documentation}"
+  remaining_manpage_smt_documentation="${remaining_manpage_smt_documentation}
+.TP
+.I \"`echo "$module_name" | tr a-z A-Z` OPTIONS\"
+"
+  remaining_manpage_smt_documentation_at_start_of_module="${remaining_manpage_smt_documentation}"
+
+  previous_remaining_manpage_internals_documentation="${remaining_manpage_internals_documentation}"
+  remaining_manpage_internals_documentation="${remaining_manpage_internals_documentation}
+.TP
+.I \"`echo "$module_name" | tr a-z A-Z` OPTIONS\"
+"
+  remaining_manpage_internals_documentation_at_start_of_module="${remaining_manpage_internals_documentation}"
+}
+
+function endmodule {
+  # endmodule
+  check_module_seen
+  check_doc
+  seen_endmodule=true
+  if [ $# -ne 0 ]; then
+    ERR "endmodule takes no arguments"
+  fi
+
+  # check, and if no documented options, remove the headers
+
+  if [ "$remaining_documentation" = "$remaining_documentation_at_start_of_module" ]; then
+    remaining_documentation="$previous_remaining_documentation"
+  fi
+
+  if [ "$remaining_manpage_documentation" = "$remaining_manpage_documentation_at_start_of_module" ]; then
+    remaining_manpage_documentation="$previous_remaining_manpage_documentation"
+  fi
+
+  if [ "$remaining_manpage_smt_documentation" = "$remaining_manpage_smt_documentation_at_start_of_module" ]; then
+    remaining_manpage_smt_documentation="$previous_remaining_manpage_smt_documentation"
+  fi
+
+  if [ "$remaining_manpage_internals_documentation" = "$remaining_manpage_internals_documentation_at_start_of_module" ]; then
+    remaining_manpage_internals_documentation="$previous_remaining_manpage_internals_documentation"
+  fi
+}
+
+function common-option {
+  # common-option option-args...
+  handle_option COMMON "$@"
+}
+
+function option {
+  # option option-args...
+  handle_option STANDARD "$@"
+}
+
+function expert-option {
+  # expert-option option-args...
+  handle_option EXPERT "$@"
+}
+
+function undocumented-option {
+  # undocumented-option option-args...
+  handle_option UNDOCUMENTED "$@"
+}
+
+function handle_option {
+  check_module_seen
+  check_doc
+
+  args=("$@")
+
+  category="${args[0]}"
+  internal="${args[1]}"
+  smtname=
+  short_option=
+  short_option_alternate=
+  long_option=
+  long_option_alternate=
+  long_option_alternate_set=
+  type=
+  readOnly=true
+  required_argument=false
+  default_value=
+  handlers=
+  predicates=
+  notifications=
+  links=
+  links_alternate=
+  smt_links=
+
+  options_already_documented=false
+  alternate_options_already_documented=false
+
+  if [ "$category" = UNDOCUMENTED ]; then
+    expect_doc=false
+  else
+    expect_doc=true
+  fi
+  expect_doc_alternate=false
+  seen_doc=false
+
+  # scan ahead to see where the type is
+  type_pos=2
+  while [ $(($type_pos+1)) -lt ${#args[@]} ] && ! expr "${args[$(($type_pos+1))]}" : '\:' &>/dev/null; do
+    let ++type_pos
+  done
+
+  type="${args[$type_pos]}"
+
+  if [ "$type" = argument ]; then
+    type=void
+    required_argument=true
+  fi
+
+  if [ $type_pos -eq 2 ]; then
+    expect_doc=false
+    readOnly=false
+  else
+    i=2
+    while [ $i -lt $type_pos ]; do
+      if expr "${args[$i]}" : '\--' &>/dev/null || expr "${args[$i]}" : '/--' &>/dev/null; then
+        if [ -n "$long_option" -o -n "$long_option_alternate" ]; then
+          ERR "malformed option line for \`$internal': unexpected \`${args[$i]}'"
+        fi
+        long_option="$(echo "${args[$i]}" | sed 's,/.*,,')"
+        if [ -n "$long_option" ]; then
+          if ! expr "$long_option" : '\--.' &>/dev/null; then
+            ERR "bad long option \`$long_option': expected something like \`--foo'"
+          fi
+          long_option="$(echo "$long_option" | sed 's,^--,,')"
+        fi
+        if expr "${args[$i]}" : '.*/' &>/dev/null; then
+          long_option_alternate="$(echo "${args[$i]}" | sed 's,[^/]*/,,')"
+          long_option_alternate_set=set
+          if [ -n "$long_option_alternate" ]; then
+            if ! expr "$long_option_alternate" : '\--.' &>/dev/null; then
+              ERR "bad alternate long option \`$long_option_alternate': expected something like \`--foo'"
+            fi
+            long_option_alternate="$(echo "$long_option_alternate" | sed 's,^--,,')"
+          fi
+        fi
+      elif expr "${args[$i]}" : '\-' &>/dev/null || expr "${args[$i]}" : '/-' &>/dev/null; then
+        if [ -n "$short_option" -o -n "$short_option_alternate" -o -n "$long_option" -o -n "$long_option_alternate" ]; then
+          ERR "malformed option line for \`$internal': unexpected \`${args[$i]}'"
+        fi
+        short_option="$(echo "${args[$i]}" | sed 's,/.*,,')"
+        if [ -n "$short_option" ]; then
+          if ! expr "$short_option" : '\-.$' &>/dev/null; then
+            ERR "bad short option \`$short_option': expected something like \`-x'"
+          fi
+          short_option="$(echo "$short_option" | sed 's,^-,,')"
+        fi
+        if expr "${args[$i]}" : '.*/' &>/dev/null; then
+          short_option_alternate="$(echo "${args[$i]}" | sed 's,[^/]*/,,')"
+          if expr "$short_option_alternate" : '\-' &>/dev/null; then
+            if ! expr "$short_option_alternate" : '\-.$' &>/dev/null; then
+              ERR "bad alternate short option \`$short_option_alternate': expected something like \`-x'"
+            fi
+            short_option_alternate="$(echo "$short_option_alternate" | sed 's,^-,,')"
+          fi
+        fi
+      else
+        if [ -n "$smtname" -o -n "$short_option" -o -n "$short_option_alternate" -o -n "$long_option" -o -n "$long_option_alternate" ]; then
+          ERR "malformed option line for \`$internal': unexpected \`${args[$i]}'"
+        fi
+        smtname="${args[$i]}"
+      fi
+      let ++i
+    done
+  fi
+
+  if [ "$type" = void -a "$internal" != - ]; then
+    ERR "$internal cannot be void-typed; use \`-' as the name if its to be void"
+  elif [ "$type" != void -a "$internal" = - ]; then
+    ERR "cannot use an unnamed option if its type is not void"
+  fi
+
+  if [ "$type" = bool -a -n "$long_option$short_option" -a "$category" != UNDOCUMENTED ]; then
+    if [ -n "$short_option_alternate" -o -n "$long_option_alternate" ]; then
+      expect_doc_alternate=true
+    fi
+  fi
+  if [ "$type" = bool -a -n "$long_option" -a -z "$long_option_alternate" -a -z "$long_option_alternate_set" ]; then
+    long_option_alternate="no-$(echo "$long_option" | sed 's,^--,,')"
+  fi
+  if [ "$type" != bool -a -n "$short_option_alternate" ]; then
+    ERR "cannot use alternate short option -$short_option_alternate for \`$internal' because it's not of bool type"
+  elif [ "$type" != bool -a -n "$long_option_alternate" ]; then
+    ERR "cannot use alternate long option --$long_option_alternate for \`$internal' because it's not of bool type"
+  fi
+
+  # check that normal options are accessible via SmtEngine too
+  if [ -n "$long_option$short_option$long_option_alternate$short_option_alternate" -a -z "$smtname" -a "$internal" != - ]; then
+    if [ -n "$long_option" ]; then
+      smtname="$long_option"
+    else
+      WARN "$internal is inaccessible via SmtEngine (no smt name for option) but can be set via command-line: $long_option $short_option $long_option_alternate $short_option_alternate"
+    fi
+  fi
+  # in options files, use an smt name of ":" to force there not to be one
+  if [ "$smtname" = : ]; then
+    smtname=
+  fi
+
+  # check for duplicates
+  if [ "$internal" != - ]; then
+    if echo " $all_declared_internal_options " | grep -q " $internal "; then
+      ERR "internal option name \`$internal' previously declared"
+    fi
+    all_declared_internal_options="$all_declared_internal_options $internal"
+  fi
+  if [ -n "$long_option" ]; then
+    if echo " $all_declared_long_options " | grep -q " $long_option "; then
+      ERR "long option name \`--$long_option' previously declared"
+    fi
+    all_declared_long_options="$all_declared_long_options $long_option"
+  fi
+  if [ -n "$long_option_alternate" ]; then
+    if echo " $all_declared_long_options " | grep -q " $long_option_alternate "; then
+      ERR "long option name \`--$long_option_alternate' previously declared"
+    fi
+    all_declared_long_options="$all_declared_long_options $long_option_alternate"
+  fi
+  if [ -n "$short_option" ]; then
+    if echo " $all_declared_short_options " | grep -q " $short_option "; then
+      ERR "short option name \`-$short_option' previously declared"
+    fi
+    all_declared_short_options="$all_declared_short_options $short_option"
+  fi
+  if [ -n "$short_option_alternate" ]; then
+    if echo " $all_declared_short_options " | grep -q " $short_option_alternate "; then
+      ERR "short option name \`-$short_option_alternate' previously declared"
+    fi
+    all_declared_short_options="$all_declared_short_options $short_option_alternate"
+  fi
+  if [ -n "$smtname" ]; then
+    if echo " $all_declared_smt_options " | grep -q " $smtname "; then
+      ERR "SMT option name \`$smtname' previously declared"
+    fi
+    all_declared_smt_options="$all_declared_smt_options $smtname"
+  fi
+
+  # parse attributes
+  i=$(($type_pos+1))
+  while [ $i -lt ${#args[@]} ]; do
+    attribute="${args[$i]}"
+    case "$attribute" in
+    :default)
+       let ++i
+       default_value="${args[$i]}"
+       ;;
+    :handler)
+       let ++i
+       if [ -n "$handlers" ]; then
+         ERR "cannot specify more than one handler; maybe you want a :handler and a :predicate"
+       fi
+       handlers="${args[$i]}"
+       ;;
+    :predicate)
+       while [ $(($i+1)) -lt ${#args[@]} ] && ! expr "${args[$(($i+1))]}" : '\:' &>/dev/null; do
+         let ++i
+         predicates="${predicates} ${args[$i]}"
+       done
+       ;;
+    :notify)
+       while [ $(($i+1)) -lt ${#args[@]} ] && ! expr "${args[$(($i+1))]}" : '\:' &>/dev/null; do
+         let ++i
+         notifications="${notifications} ${args[$i]}"
+       done
+       ;;
+    :link)
+       while [ $(($i+1)) -lt ${#args[@]} ] && ! expr "${args[$(($i+1))]}" : '\:' &>/dev/null; do
+         let ++i
+         link="${args[$i]}"
+         if expr "${args[$i]}" : '.*/' &>/dev/null; then
+           links="${links} $(echo "${args[$i]}" | sed 's,/.*,,')"
+           links_alternate="${links_alternate} $(echo "${args[$i]}" | sed 's,[^/]*/,,')"
+         else
+           links="${links} ${args[$i]}"
+         fi
+       done
+       ;;
+    :link-smt)
+       j=0
+       while [ $(($i+1)) -lt ${#args[@]} ] && ! expr "${args[$(($i+1))]}" : '\:' &>/dev/null; do
+         let ++i
+         let ++j
+         if [ $j -eq 3 ]; then
+           echo "$kf:$lineno: error: attribute :link-smt can only take two arguments" >&2
+           exit 1
+         fi
+         if expr "${args[$i]}" : '.*/' &>/dev/null; then
+           echo "$kf:$lineno: error: attribute :link-smt cannot take alternates" >&2
+           exit 1
+         fi
+         smt_links="${smt_links} ${args[$i]}"
+       done
+       if [ $j -eq 1 ]; then
+         smt_links="${smt_links} \"true\""
+       fi
+       ;;
+    :include)
+       while [ $(($i+1)) -lt ${#args[@]} ] && ! expr "${args[$(($i+1))]}" : '\:' &>/dev/null; do
+         let ++i
+         module_includes="${module_includes}
+#line $lineno \"$kf\"
+#include $(check_include "${args[$i]}")"
+       done
+       ;;
+    :handler-include|:predicate-include)
+       while [ $(($i+1)) -lt ${#args[@]} ] && ! expr "${args[$(($i+1))]}" : '\:' &>/dev/null; do
+         let ++i
+         option_handler_includes="${option_handler_includes}
+#line $lineno \"$kf\"
+#include $(check_include "${args[$i]}")"
+       done
+       ;;
+    :read-write)
+       readOnly=false
+       ;;
+    :read-only)
+       readOnly=true
+       ;;
+    *)
+       ERR "error in option \`$internal': bad attribute \`$attribute'"
+    esac
+    let ++i
+  done
+
+  # set up structures
+  if [ "$internal" != - ]; then
+    # set up a field in the options_holder
+    module_optionholder_spec="${module_optionholder_spec} \\
+  ${internal}__option_t::type $internal; \\
+  bool ${internal}__setByUser__;"
+    all_modules_defaults="${all_modules_defaults:+${all_modules_defaults},}
+#line $lineno \"$kf\"
+  $internal($default_value),
+#line $lineno \"$kf\"
+  ${internal}__setByUser__(false)"
+    if $readOnly; then
+      module_decls="${module_decls}
+#line $lineno \"$kf\"
+extern struct CVC4_PUBLIC ${internal}__option_t { typedef $type type; type operator()() const; bool wasSetByUser() const; } $internal CVC4_PUBLIC;"
+      module_inlines="${module_inlines}
+#line $lineno \"$kf\"
+inline ${internal}__option_t::type ${internal}__option_t::operator()() const { return (*Options::current())[*this]; }
+#line $lineno \"$kf\"
+inline bool ${internal}__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+"
+    else
+      module_decls="${module_decls}
+#line $lineno \"$kf\"
+extern struct CVC4_PUBLIC ${internal}__option_t { typedef $type type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } $internal CVC4_PUBLIC;"
+      module_inlines="${module_inlines}
+#line $lineno \"$kf\"
+inline ${internal}__option_t::type ${internal}__option_t::operator()() const { return (*Options::current())[*this]; }
+#line $lineno \"$kf\"
+inline bool ${internal}__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line $lineno \"$kf\"
+inline void ${internal}__option_t::set(const ${internal}__option_t::type& v) { Options::current()->set(*this, v); }
+"
+      module_specializations="${module_specializations}
+#line $lineno \"$kf\"
+template <> void Options::set(options::${internal}__option_t, const options::${internal}__option_t::type& x);"
+      module_accessors="${module_accessors}
+#line $lineno \"$kf\"
+template <> void Options::set(options::${internal}__option_t, const options::${internal}__option_t::type& x) { d_holder->$internal = x; }"
+    fi
+    module_global_definitions="${module_global_definitions}
+#line $lineno \"$kf\"
+struct ${internal}__option_t $internal;"
+    module_specializations="${module_specializations}
+#line $lineno \"$kf\"
+template <> const options::${internal}__option_t::type& Options::operator[](options::${internal}__option_t) const;
+#line $lineno \"$kf\"
+template <> bool Options::wasSetByUser(options::${internal}__option_t) const;"
+    if [ "$type" = bool ]; then
+      module_specializations="${module_specializations}
+#line $lineno \"$kf\"
+template <> void Options::assignBool(options::${internal}__option_t, std::string option, bool value);"
+    elif [ "$internal" != - ]; then
+      module_specializations="${module_specializations}
+#line $lineno \"$kf\"
+template <> void Options::assign(options::${internal}__option_t, std::string option, std::string value);"
+    fi
+
+    module_accessors="${module_accessors}
+#line $lineno \"$kf\"
+template <> const options::${internal}__option_t::type& Options::operator[](options::${internal}__option_t) const { return d_holder->$internal; }
+#line $lineno \"$kf\"
+template <> bool Options::wasSetByUser(options::${internal}__option_t) const { return d_holder->${internal}__setByUser__; }"
+  fi
+
+  if $required_argument || [ "$type" != bool -a "$type" != void ]; then
+    expect_arg=:
+    expect_arg_long=required_argument
+  else
+    expect_arg=
+    expect_arg_long=no_argument
+  fi
+  cases=
+  cases_alternate=
+  if [ -n "$short_option" ]; then
+    all_modules_short_options="${all_modules_short_options}$short_option$expect_arg"
+    cases="${cases}
+    case '$short_option':"
+  fi
+  if [ -n "$short_option_alternate" ]; then
+    all_modules_short_options="${all_modules_short_options}$short_option_alternate$expect_arg"
+    cases_alternate="${cases_alternate}
+    case '$short_option_alternate':"
+  fi
+  if [ -n "$long_option" ]; then
+    all_modules_long_options="${all_modules_long_options}
+  { \"$(echo "$long_option" | sed 's,=.*,,')\", $expect_arg_long, NULL, $n_long },"
+    cases="${cases}
+    case $n_long:// --$long_option"
+    let ++n_long
+  fi
+  if [ -n "$long_option_alternate" ]; then
+    all_modules_long_options="${all_modules_long_options}
+  { \"$(echo "$long_option_alternate" | sed 's,=.*,,')\", $expect_arg_long, NULL, $n_long },"
+    cases_alternate="${cases_alternate}
+    case $n_long:// --$long_option_alternate"
+    let ++n_long
+  fi
+  run_links=
+  run_links_alternate=
+  run_smt_links=
+  run_notifications=
+  if [ -n "$links" -a -z "$smt_links" -a -n "$smtname" ]; then
+    WARN "$smtname has no :link-smt, but equivalent command-line has :link"
+  elif [ -n "$smt_links" -a -z "$links" ] && [ -n "$short_option" -o -n "$short_option_alternate" -o -n "$long_option" -o "$long_option_alternate" ]; then
+    WARN "$smtname has a :link-smt, but equivalent command-line has no :link"
+  fi
+  if [ -n "$links" ]; then
+    # command-line links
+    for link in $links; do
+      run_links="$run_links
+#line $lineno \"$kf\"
+      extender->pushBackPreemption(\"$link\");"
+    done
+  fi
+  if [ -n "$smt_links" ]; then
+    # smt links
+    smt_links=($smt_links)
+    i=0
+    while [ $i -lt ${#smt_links[@]} ]; do
+      run_smt_links="$run_smt_links
+#line $lineno \"$kf\"
+    setOption(std::string(\"${smt_links[$i]}\"), (${smt_links[$(($i+1))]}));"
+      i=$((i+2))
+    done
+  fi
+  if [ -n "$links_alternate" ]; then
+    # command-line links
+    for link in $links_alternate; do
+      run_links_alternate="$run_links_alternate
+#line $lineno \"$kf\"
+      extender->pushBackPreemption(\"$link\");"
+    done
+  fi
+  if [ -n "$notifications" ]; then
+    for notification in $notifications; do
+      run_notifications="$run_notifications
+#line $lineno \"$kf\"
+  d_handler->$notification(option);"
+    done
+  fi
+  if [ "$type" = bool ] && [ -n "$cases" -o -n "$cases_alternate" -o -n "$smtname" ]; then
+    run_handlers=
+    if [ -n "$handlers" ]; then
+      ERR "bool-valued options cannot have handlers"
+    fi
+    if [ -n "$predicates" ]; then
+      for predicate in $predicates; do
+        run_handlers="$run_handlers
+#line $lineno \"$kf\"
+  handler->$predicate(option, b);"
+      done
+    fi
+    if [ -n "$run_handlers" ]; then
+      all_custom_handlers="${all_custom_handlers}
+#line $lineno \"$kf\"
+template <> void runBoolPredicates(options::${internal}__option_t, std::string option, bool b, options::OptionsHandler* handler) {
+  $run_handlers
+}"
+    fi
+  fi
+  if [ -n "$cases" ]; then
+    if [ "$type" = bool ]; then
+      all_modules_option_handlers="${all_modules_option_handlers}${cases}
+#line $lineno \"$kf\"
+      options->assignBool(options::$internal, option, true);$run_links
+      break;
+"
+    elif [ -n "$expect_arg" -a "$internal" != - ]; then
+      run_handlers=
+      if [ -n "$handlers" ]; then
+        for handler in $handlers; do
+          run_handlers="$run_handlers
+#line $lineno \"$kf\"
+  handler->$handler(option, optionarg);"
+        done
+      else
+        run_handlers="
+#line $lineno \"$kf\"
+  handleOption<$type>(option, optionarg);"
+      fi
+      if [ -n "$predicates" ]; then
+        for predicate in $predicates; do
+          run_handlers="$run_handlers
+#line $lineno \"$kf\"
+  handler->$predicate(option, retval);"
+        done
+      fi
+      all_custom_handlers="${all_custom_handlers}
+#line $lineno \"$kf\"
+template <> options::${internal}__option_t::type runHandlerAndPredicates(options::${internal}__option_t, std::string option, std::string optionarg, options::OptionsHandler* handler) {
+#line $lineno \"$kf\"
+  options::${internal}__option_t::type retval = $run_handlers
+#line $lineno \"$kf\"
+  return retval;
+}"
+      all_modules_option_handlers="${all_modules_option_handlers}${cases}
+#line $lineno \"$kf\"
+      options->assign(options::$internal, option, optionarg);$run_links
+      break;
+"
+    elif [ -n "$expect_arg" ]; then
+      run_handlers=
+      if [ -n "$predicates" ]; then
+        ERR "void-valued options cannot have predicates"
+      fi
+      if [ -n "$handlers" ]; then
+        for handler in $handlers; do
+          run_handlers="$run_handlers
+#line $lineno \"$kf\"
+      handler->$handler(option, optionarg);"
+        done
+      fi
+      all_modules_option_handlers="${all_modules_option_handlers}${cases}
+#line $lineno \"$kf\"
+      $run_handlers$run_links
+      break;
+"
+    else
+      run_handlers=
+      if [ -n "$predicates" ]; then
+        ERR "void-valued options cannot have predicates"
+      fi
+      if [ -n "$handlers" ]; then
+        for handler in $handlers; do
+          run_handlers="$run_handlers
+#line $lineno \"$kf\"
+      handler->$handler(option);"
+        done
+      fi
+      all_modules_option_handlers="${all_modules_option_handlers}${cases}
+#line $lineno \"$kf\"
+      $run_handlers$run_links
+      break;
+"
+    fi
+  fi # ends if [ -n "$cases" ];
+  if [ -n "$cases_alternate" ]; then
+    if [ "$type" = bool ]; then
+      all_modules_option_handlers="${all_modules_option_handlers}${cases_alternate}
+#line $lineno \"$kf\"
+      options->assignBool(options::$internal, option, false);$run_links_alternate
+      break;
+"
+    else
+      ERR "internal error: expected BOOL-typed option in alternate handler"
+    fi
+  fi
+
+  if [ -n "$smtname" ]; then
+    all_modules_smt_options="${all_modules_smt_options:+$all_modules_smt_options,}
+#line $lineno \"$kf\"
+  \"$smtname\""
+    if [ "$internal" != - ]; then
+      case "$type" in
+      bool)
+        all_modules_get_options="${all_modules_get_options:+$all_modules_get_options
+#line $lineno \"$kf\"
+  }{ std::vector<std::string> v; v.push_back(\"$smtname\"); v.push_back(std::string(d_holder->$internal ? \"true\" : \"false\")); opts.push_back(v); }"
+        smt_getoption_handlers="${smt_getoption_handlers}
+#line $lineno \"$kf\"
+  if(key == \"$smtname\") {
+#line $lineno \"$kf\"
+    return std::string(options::$internal() ? \"true\" : \"false\");
+  }";;
+      int|unsigned|int*_t|uint*_t|unsigned\ long|long|float|double)
+        all_modules_get_options="${all_modules_get_options:+$all_modules_get_options
+#line $lineno \"$kf\"
+  }{ std::stringstream ss; ss << std::fixed << std::setprecision(8); ss << d_holder->$internal; std::vector<std::string> v; v.push_back(\"$smtname\"); v.push_back(ss.str()); opts.push_back(v); }"
+        smt_getoption_handlers="${smt_getoption_handlers}
+#line $lineno \"$kf\"
+  if(key == \"$smtname\") {
+#line $lineno \"$kf\"
+    std::stringstream ss; ss << std::fixed << std::setprecision(8); ss << options::$internal(); return ss.str();
+  }";;
+      *)
+        all_modules_get_options="${all_modules_get_options:+$all_modules_get_options
+#line $lineno \"$kf\"
+  }{ std::stringstream ss; ss << d_holder->$internal; std::vector<std::string> v; v.push_back(\"$smtname\"); v.push_back(ss.str()); opts.push_back(v); }"
+        smt_getoption_handlers="${smt_getoption_handlers}
+#line $lineno \"$kf\"
+  if(key == \"$smtname\") {
+#line $lineno \"$kf\"
+    std::stringstream ss; ss << options::$internal();
+    return ss.str();
+  }";;
+      esac
+    fi
+
+    if [ "$type" = bool ]; then
+      smt_setoption_handlers="${smt_setoption_handlers}
+#line $lineno \"$kf\"
+  if(key == \"$smtname\") {
+#line $lineno \"$kf\"
+    Options::current()->assignBool(options::$internal, \"$smtname\", optionarg == \"true\");$run_smt_links
+    return;
+  }"
+    elif [ -n "$expect_arg" -a "$internal" != - ]; then
+      run_handlers=
+      if [ -n "$handlers" ]; then
+        for handler in $handlers; do
+          run_handlers="$run_handlers
+#line $lineno \"$kf\"
+    handler->$handler(\"$smtname\", optionarg);
+"
+        done
+      fi
+      smt_setoption_handlers="${smt_setoption_handlers}
+#line $lineno \"$kf\"
+  if(key == \"$smtname\") {
+#line $lineno \"$kf\"
+    Options::current()->assign(options::$internal, \"$smtname\", optionarg);$run_smt_links
+    return;
+  }"
+    elif [ -n "$expect_arg" ]; then
+      run_handlers=
+      for handler in $handlers; do
+        run_handlers="$run_handlers
+#line $lineno \"$kf\"
+    handler->$handler(\"$smtname\", optionarg);
+"
+      done
+      smt_setoption_handlers="${smt_setoption_handlers}
+#line $lineno \"$kf\"
+  if(key == \"$smtname\") {
+#line $lineno \"$kf\"
+    $run_handlers$run_smt_links
+    return;
+  }"
+    else
+      run_handlers=
+      for handler in $handlers; do
+        run_handlers="$run_handlers
+#line $lineno \"$kf\"
+    handler->$handler(\"$smtname\");
+"
+      done
+      smt_setoption_handlers="${smt_setoption_handlers}
+#line $lineno \"$kf\"
+  if(key == \"$smtname\") {
+#line $lineno \"$kf\"
+    $run_handlers$run_smt_links
+    return;
+  }"
+    fi
+  elif [ -n "$long_option" -o "$long_option_alternate" ] && [ "$internal" != - ]; then
+    case "$type" in
+    bool)
+      getoption_name="$long_option"
+      inv=
+      # case where we have a --disable but no corresponding --enable
+      if [ -z "$getoption_name" ]; then
+        getoption_name="$long_option_alternate"
+        inv='!'
+      fi
+      all_modules_get_options="${all_modules_get_options:+$all_modules_get_options
+#line $lineno \"$kf\"
+  }{ std::vector<std::string> v; v.push_back(\"$getoption_name\"); v.push_back(std::string((${inv}d_holder->$internal) ? \"true\" : \"false\")); opts.push_back(v); }";;
+    int|unsigned|int*_t|uint*_t|unsigned\ long|long|float|double)
+        all_modules_get_options="${all_modules_get_options:+$all_modules_get_options
+#line $lineno \"$kf\"
+  }{ std::stringstream ss; ss << std::fixed << std::setprecision(8); ss << d_holder->$internal; std::vector<std::string> v; v.push_back(\"$long_option\"); v.push_back(ss.str()); opts.push_back(v); }";;
+    *)
+      all_modules_get_options="${all_modules_get_options:+$all_modules_get_options
+#line $lineno \"$kf\"
+  }{ std::stringstream ss; ss << std::fixed << std::setprecision(8); ss << d_holder->$internal; std::vector<std::string> v; v.push_back(\"$long_option\"); v.push_back(ss.str()); opts.push_back(v); }";;
+    esac
+  fi
+
+  if [ "$type" = bool ]; then
+    # emit assignBool/assign
+    all_custom_handlers="${all_custom_handlers}
+#line $lineno \"$kf\"
+template <> void Options::assignBool(options::${internal}__option_t, std::string option, bool value) {
+#line $lineno \"$kf\"
+  runBoolPredicates(options::$internal, option, value, d_handler);
+#line $lineno \"$kf\"
+  d_holder->$internal = value;
+#line $lineno \"$kf\"
+  d_holder->${internal}__setByUser__ = true;
+#line $lineno \"$kf\"
+  Trace(\"options\") << \"user assigned option $internal\" << std::endl;$run_notifications
+}"
+  elif [ -n "$expect_arg" -a "$internal" != - ] && [ -n "$cases" -o -n "$cases_alternate" -o -n "$smtname" ]; then
+    all_custom_handlers="${all_custom_handlers}
+#line $lineno \"$kf\"
+template <> void Options::assign(options::${internal}__option_t, std::string option, std::string value) {
+#line $lineno \"$kf\"
+  d_holder->$internal = runHandlerAndPredicates(options::$internal, option, value, d_handler);
+#line $lineno \"$kf\"
+  d_holder->${internal}__setByUser__ = true;
+#line $lineno \"$kf\"
+  Trace(\"options\") << \"user assigned option $internal\" << std::endl;$run_notifications
+}"
+  fi
+}
+
+function common-alias {
+  # common-alias -option[=arg] = (-option[=arg])+
+  handle_alias COMMON "$@"
+}
+
+function alias {
+  # alias -option[=arg] = (-option[=arg])+
+  handle_alias STANDARD "$@"
+}
+
+function expert-alias {
+  # expert-alias -option[=arg] = (-option[=arg])+
+  handle_alias EXPERT "$@"
+}
+
+function undocumented-alias {
+  # undocumented-alias -option[=arg] = (-option[=arg])+
+  handle_alias UNDOCUMENTED "$@"
+}
+
+function handle_alias {
+  # handle_alias CATEGORY -option[=arg] = (-option[=arg])+
+  check_module_seen
+  check_doc
+
+  category="$1"
+  shift
+
+  internal=-
+  smtname=
+  short_option=
+  short_option_alternate=
+  long_option=
+  long_option_alternate=
+  long_option_alternate_set=
+  type=void
+  readOnly=true
+  required_argument=false
+  default_value=
+  links=
+  links_alternate=
+
+  options_already_documented=false
+  alternate_options_already_documented=false
+
+  if [ "$category" = UNDOCUMENTED ]; then
+    expect_doc=false
+  else
+    expect_doc=true
+  fi
+  expect_doc_alternate=false
+
+  if [ $# -lt 3 ]; then
+    ERR "malformed \"alias\" command; expected more arguments"
+  fi
+  if [ "$1" = '=' ]; then
+    ERR "malformed \"alias\" command; expected option name"
+  fi
+  option="$1"
+  shift
+  if [ "$1" != '=' ]; then
+    ERR "malformed \"alias\" command; expected \`='"
+  fi
+  shift
+  if [ $# -eq 0 ]; then
+    ERR "malformed \"alias\" command; expected more arguments"
+  fi
+  cases=
+  if ! expr "$option" : '\-' &>/dev/null; then
+    ERR "alias for SMT options not yet supported"
+  fi
+  if expr "$option" : '\--' &>/dev/null; then
+    if expr "$option" : '.*=' &>/dev/null; then
+      expect_arg_long=required_argument
+      arg="$(echo "$option" | sed 's,[^=]*=\(.*\),\1,')"
+      option="$(echo "$option" | sed 's,--,,;s,=.*,,')"
+    else
+      expect_arg_long=no_argument
+      arg=
+      option="$(echo "$option" | sed 's,--,,')"
+    fi
+    all_modules_long_options="${all_modules_long_options}
+  { \"$(echo "$option" | sed 's,=.*,,')\", $expect_arg_long, NULL, $n_long },"
+      cases="${cases}
+    case $n_long:// --$option"
+    let ++n_long
+    long_option="${long_option:+$long_option | --}$option"
+  else
+    if ! expr "$option" : '\-.$' &>/dev/null; then
+      if ! expr "$option" : '\-.=' &>/dev/null; then
+        ERR "expected short option specification, got \`$option'"
+      fi
+      expect_arg=:
+      arg="$(echo "$option" | sed 's,[^=]*=,,')"
+      option="$(echo "$option" | sed 's,-\(.\)=.*,\1,')"
+    else
+      expect_arg=
+      arg=
+      option="$(echo "$option" | sed 's,-,,')"
+    fi
+    all_modules_short_options="${all_modules_short_options}$option$expect_arg"
+      cases="${cases}
+    case '$option':"
+    short_option="${short_option:+$short_option | -}$option"
+  fi
+
+  while [ $# -gt 0 ]; do
+    linkopt="$1"
+    # on the RHS, we're looking for =ARG, where "ARG" is *exactly* what
+    # was given on the LHS
+    if expr "$linkopt" : '.*=' &>/dev/null; then
+      linkarg="$(echo "$linkopt" | sed 's,[^=]*=,,')"
+      if [ "$linkarg" = "$arg" ]; then
+        # we found =ARG
+        linkopt="$(echo "$linkopt" | sed 's,=.*,,')"
+      else
+        # false positive: =SOMETHING, where SOMETHING != ARG
+        linkarg=
+      fi
+    else
+      linkarg=
+    fi
+    links="$links
+#line $lineno \"$kf\"
+      extender->pushBackPreemption(\"$linkopt\");"
+    if [ "$linkarg" ]; then
+      # include also the arg
+      links="$links
+#line $lineno \"$kf\"
+      extender->pushBackPreemption(optionarg.c_str());"
+    fi
+    shift
+  done
+  all_modules_option_handlers="$all_modules_option_handlers$cases$links
+      break;
+"
+}
+
+function warning {
+  # warning message
+  check_module_seen
+  check_doc
+
+  WARN "$*"
+}
+
+function doc {
+  # doc text...
+  check_module_seen
+  expect_doc=false
+  seen_doc=true
+
+  if [ -z "$short_option" -a -z "$long_option" ]; then
+    if [ -n "$short_option_alternate" -o -n "$long_option_alternate" ]; then
+      if [ -n "$smtname" ]; then
+        expect_doc_alternate=true
+      else
+        if [ "$internal" != - ]; then
+          if ! $alternate_options_already_documented; then
+            if [ "$short_option_alternate" ]; then
+              if [ "$long_option_alternate" ]; then
+                altopt="s -$short_option_alternate and --$long_option_alternate, each of"
+              else
+                altopt=" -$short_option_alternate,"
+              fi
+            else
+              altopt=" --$long_option_alternate,"
+            fi
+            if [ -z "$default_value" ]; then
+              typedefault="($type)"
+            else
+              typedefault="($type, default = $default_value)"
+            fi
+            mansmtdoc="$@"
+            if [ "$category" = EXPERT ]; then
+              mansmtdoc="$mansmtdoc (EXPERTS only)"
+            fi
+            altmanopt="`echo "$altopt" | sed 's,-,\\\\\\-,g'`"
+            mansmtdoc="`echo "$mansmtdoc" | sed 's,-,\\\\\\-,g'`"
+            typedefault="`echo "$typedefault" | sed 's,-,\\\\\\-,g'`"
+            if [ "$category" = COMMON ]; then
+              common_manpage_internals_documentation="${common_manpage_internals_documentation}
+.TP
+.B \"$internal\"
+$typedefault
+.br
+.B \"This internal Boolean flag is undocumented; however, its alternate option$altmanopt which reverses the sense of the option, is documented thusly:\"
+$mansmtdoc"
+            else
+              remaining_manpage_internals_documentation="${remaining_manpage_internals_documentation}
+.TP
+.B \"$internal\"
+$typedefault
+.br
+.B \"This internal Boolean flag is undocumented; however, its alternate option$altmanopt which reverses the sense of the option, is documented thusly:\"
+$mansmtdoc"
+            fi
+          else
+            if [ "$category" = COMMON ]; then
+              common_manpage_internals_documentation="${common_manpage_internals_documentation}
+$@"
+            else
+              remaining_manpage_internals_documentation="${remaining_manpage_internals_documentation}
+$@"
+            fi
+          fi
+        fi
+        doc-alternate "$@"
+        return
+      fi
+    fi
+  fi
+
+  the_opt=
+  if [ "$long_option" ]; then
+    the_opt="--$long_option"
+    if [ "$short_option" ]; then
+      shortoptarg=
+      if expr "$the_opt" : '.*=' &>/dev/null; then
+        shortoptarg="$(echo "$the_opt" | sed 's,[^=]*=, ,')"
+      fi
+      the_opt="$the_opt | -$short_option$shortoptarg"
+    fi
+  elif [ "$short_option" ]; then
+    the_opt="-$short_option"
+  fi
+
+  if ! $options_already_documented; then
+    options_already_documented=true
+
+    the_doc="$@"
+    mandoc="$@"
+    mansmtdoc="$@"
+    if [ "$category" = EXPERT ]; then
+      the_doc="$the_doc (EXPERTS only)"
+      mandoc="$mandoc (EXPERTS only)"
+      mansmtdoc="$mansmtdoc (EXPERTS only)"
+    fi
+
+    if [ "$type" = bool -a -n "$long_option" -a "$long_option_alternate" = "no-$long_option" ]; then
+      the_doc="$the_doc [*]"
+      mandoc="$mandoc [*]"
+    fi
+
+    # in man, minus sign is \-, different from hyphen
+    the_manopt="`echo "$the_opt" | sed 's,-,\\\\\\-,g'`"
+    mandoc="`echo "$mandoc" | sed 's,-,\\\\\\-,g'`"
+    mansmtdoc="`echo "$mansmtdoc" | sed 's,-,\\\\\\-,g'`"
+
+    if [ "$the_opt" ]; then
+      doc_line=
+      while [ -n "$the_doc" ]; do
+        remaining_doc="$(expr "$the_doc " : '.\{1,53\} \(.*\)')"
+        the_doc="$(expr "$the_doc " : '\(.\{1,53\}\) ')"
+        if [ -z "$doc_line" ]; then
+          if expr "$the_opt" : '.\{23\}' &>/dev/null; then
+            # break into two lines
+            doc_line="$(printf '  %s\\n\\\n%-24s %s' "$the_opt" "" "$the_doc")"
+          else
+            doc_line="$(printf '  %-22s %s' "$the_opt" "$the_doc")"
+          fi
+        else
+          doc_line="$doc_line\\n$(printf '%-24s %s' "" "$the_doc")"
+        fi
+        the_doc="$(expr "$remaining_doc" : '\(.*\) ')"
+      done
+
+      if [ "$category" = COMMON ]; then
+        common_documentation="${common_documentation}\\n\"
+#line $lineno \"$kf\"
+\"$(echo "$doc_line" | sed 's,'\'',\\'\'',g;s,",\\",g')"
+        common_manpage_documentation="${common_manpage_documentation}
+.IP \"$the_manopt\"
+$mandoc"
+      elif [ "$category" != UNDOCUMENTED ]; then
+        remaining_documentation="${remaining_documentation}\\n\"
+#line $lineno \"$kf\"
+\"$(echo "$doc_line" | sed 's,'\'',\\'\'',g;s,",\\",g')"
+        remaining_manpage_documentation="${remaining_manpage_documentation}
+.IP \"$the_manopt\"
+$mandoc"
+      fi
+    fi
+
+    if [ "$smtname" -a "$category" != UNDOCUMENTED ]; then
+      if [ "$category" = COMMON ]; then
+        common_manpage_smt_documentation="${common_manpage_smt_documentation}
+.TP
+.B \"$smtname\"
+($type) $mansmtdoc"
+      else
+        remaining_manpage_smt_documentation="${remaining_manpage_smt_documentation}
+.TP
+.B \"$smtname\"
+($type) $mansmtdoc"
+      fi
+    fi
+    if [ "$internal" != - ]; then
+      if [ -z "$default_value" ]; then
+        typedefault="($type)"
+      else
+        typedefault="($type, default = $default_value)"
+      fi
+      typedefault="`echo "$typedefault" | sed 's,-,\\\\\\-,g'`"
+      if [ "$category" = COMMON ]; then
+        common_manpage_internals_documentation="${common_manpage_internals_documentation}
+.TP
+.B \"$internal\"
+$typedefault
+.br
+$mansmtdoc"
+      else
+        remaining_manpage_internals_documentation="${remaining_manpage_internals_documentation}
+.TP
+.B \"$internal\"
+$typedefault
+.br
+$mansmtdoc"
+      fi
+    fi
+  else
+    if [ "$the_opt" -a "$category" != UNDOCUMENTED ]; then
+      if [ "$category" = COMMON ]; then
+        common_manpage_documentation="${common_manpage_documentation}
+$@"
+      else
+        remaining_manpage_documentation="${remaining_manpage_documentation}
+$@"
+      fi
+    fi
+
+    if [ "$smtname" -a "$category" != UNDOCUMENTED ]; then
+      if [ "$category" = COMMON ]; then
+        common_manpage_smt_documentation="${common_manpage_smt_documentation}
+$@"
+      else
+        remaining_manpage_smt_documentation="${remaining_manpage_smt_documentation}
+$@"
+      fi
+    fi
+
+    if [ "$internal" != - ]; then
+      if [ "$category" = COMMON ]; then
+        common_manpage_internals_documentation="${common_manpage_internals_documentation}
+$@"
+      else
+        remaining_manpage_internals_documentation="${remaining_manpage_internals_documentation}
+$@"
+      fi
+    fi
+  fi
+}
+
+function doc-alternate {
+  # doc-alternate text...
+  check_module_seen
+  expect_doc_alternate=false
+
+  if $expect_doc; then
+    ERR "must provide documentation before alternate documentation"
+  fi
+
+  if [ -z "$short_option_alternate" -a -z "$long_option_alternate" ]; then
+    ERR "cannot document an alternative for option \`$internal'; one does not exist"
+  fi
+
+  if [ "$category" = UNDOCUMENTED ]; then
+    return
+  fi
+
+  if ! $alternate_options_already_documented; then
+    alternate_options_already_documented=true
+    the_opt=
+    if [ "$long_option_alternate" ]; then
+      the_opt="--$long_option_alternate"
+      shortoptarg=
+      if expr "$the_opt" : '.*=' &>/dev/null; then
+        shortoptarg="$(echo "$the_opt" | sed 's,[^=]*=, ,')"
+      fi
+      if [ "$short_option_alternate" ]; then
+        the_opt="$the_opt | -$short_option_alternate$shortoptarg"
+      fi
+    elif [ "$short_option_alternate" ]; then
+      the_opt="-$short_option_alternate"
+    fi
+    if [ -z "$the_opt" ]; then
+      # nothing to document
+      return
+    fi
+
+    the_doc="$@"
+    if [ "$category" = EXPERT ]; then
+      the_doc="$the_doc (EXPERTS only)"
+    fi
+
+    doc_line=
+    while [ -n "$the_doc" ]; do
+      remaining_doc="$(expr "$the_doc " : '.\{1,53\} \(.*\)')"
+      the_doc="$(expr "$the_doc " : '\(.\{1,53\}\) ')"
+      if [ -z "$doc_line" ]; then
+        if expr "$the_opt" : '.\{23\}' &>/dev/null; then
+          # break into two lines
+          doc_line="$(printf '  %s\\n\\\n%-24s %s' "$the_opt" "" "$the_doc")"
+        else
+          doc_line="$(printf '  %-22s %s' "$the_opt" "$the_doc")"
+        fi
+      else
+        doc_line="$doc_line\\n$(printf '%-24s %s' "" "$the_doc")"
+      fi
+      the_doc="$(expr "$remaining_doc" : '\(.*\) ')"
+    done
+
+    # in man, minus sign is \-, different from hyphen
+    the_manopt="`echo "$the_opt" | sed 's,-,\\\\\\-,g'`"
+
+    if [ "$category" = COMMON ]; then
+      common_documentation="${common_documentation}\\n\"
+#line $lineno \"$kf\"
+\"$(echo "$doc_line" | sed 's,'\'',\\'\'',g;s,",\\",g')"
+      common_manpage_documentation="${common_manpage_documentation}
+.IP \"$the_manopt\"
+$@"
+    else
+      remaining_documentation="${remaining_documentation}\\n\"
+#line $lineno \"$kf\"
+\"$(echo "$doc_line" | sed 's,'\'',\\'\'',g;s,",\\",g')"
+      remaining_manpage_documentation="${remaining_manpage_documentation}
+.IP \"$the_manopt\"
+$@"
+    fi
+  else
+    if [ "$category" = COMMON ]; then
+      common_manpage_documentation="${common_manpage_documentation}
+$@"
+    else
+      remaining_manpage_documentation="${remaining_manpage_documentation}
+$@"
+    fi
+  fi
+}
+
+function check_doc {
+  if $expect_doc; then
+    if [ "$internal" != - ]; then
+      WARN "$internal is lacking documentation"
+    elif [ -n "$long_option" ]; then
+      WARN "option --$long_option is lacking documentation"
+    elif [ -n "$short_option" ]; then
+      WARN "option -$short_option is lacking documentation"
+    elif [ -n "$smtname" ]; then
+      WARN "SMT option $smtname is lacking documentation"
+    fi
+    expect_doc=false
+  elif ! $seen_doc; then
+    if [ -n "$internal" -a "$internal" != - ]; then
+      if [ -z "$default_value" ]; then
+        typedefault="($type)"
+      else
+        typedefault="($type, default = $default_value)"
+      fi
+      if [ "$category" = COMMON ]; then
+        common_manpage_internals_documentation="${common_manpage_internals_documentation}
+.TP
+.B \"$internal\"
+$typedefault
+.br
+[undocumented]"
+      else
+        remaining_manpage_internals_documentation="${remaining_manpage_internals_documentation}
+.TP
+.B \"$internal\"
+$typedefault
+.br
+[undocumented]"
+      fi
+    fi
+  fi
+
+  if $expect_doc_alternate; then
+    WARN "$internal is lacking documentation for the alternative option(s): $short_option_alternate $long_option_alternate"
+    expect_doc_alternate=false
+  fi
+}
+
+function check_module_seen {
+  if $seen_endmodule; then
+    ERR "command after \"endmodule\" declaration (endmodule has to be last)"
+  fi
+  if ! $seen_module; then
+    ERR "no \"module\" declaration found (it has to be first)"
+  fi
+}
+
+function check_include {
+  if ! expr "$1" : '".*"$' &>/dev/null && ! expr "$1" : '<.*>$' &>/dev/null; then
+    echo "\"$1\""
+  else
+    echo "$1"
+  fi
+}
+
+function apply_sed_files_to_template {
+  template="$1"
+  sed_files="$2"
+  command="$3"
+
+  filename="$(basename "$sed_file")"
+  filename="${filename%.*}"
+
+  echo "applying sed files $sed_files to $template to get $filename " 1>&2
+
+  sed_args=""
+  for file in $sed_files; do
+    sed_args+=" -f $file"
+  done
+  
+  echo "applying sed files $sed_args " 1>&2
+
+  output_working=$(sed $sed_args "$template")
+  error="$(echo "$output_working" | grep '.*\${[^}]*}.*' | head -n 1)"
+  if [ -n "$error" ]; then
+    error="$(echo "$error" | sed 's,.*\${\([^}]*\)}.*,\1,')"
+    kf="$template"
+    lineno=0
+    ERR "undefined replacement \${$error}"
+  fi
+
+  
+  # Output header (if this is a .cpp or .c or .h file) and then the
+  # processed text
+
+  if expr "$filename" : '.*\.cpp$' &>/dev/null || expr "$filename" : '.*\.[ch]$' &>/dev/null; then
+
+
+  cat <<EOF
+/*********************                                                        */
+/** $filename
+ **
+ ** Copyright $copyright  New York University and The University of Iowa,
+ ** and as below.
+ **
+ ** This file automatically generated by:
+ **
+ **     $command
+ **
+ ** for the CVC4 project.
+ **/
+
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
+
+/* Edit the template file instead.                     */
+
+EOF
+  fi
+
+  echo -n "$output_working"
+  echo ""
+}
+
+function output_module_sed {
+  options_file="$1"
+
+  echo "generating sed file from $options_file" 1>&2
+
+
+  for var in \
+      module_id \
+      module_name \
+      module_includes \
+      module_optionholder_spec \
+      module_decls \
+      module_specializations \
+      module_inlines \
+      module_accessors \
+      module_global_definitions \
+      ; do
+    repl="$(eval "echo \"\${$var}\"" | sed 's,\\,\\\\,g;s/,/\\,/g;s,&,\\\&,g;$!s,$,\\,g')"
+    # a little nasty; for multi-line replacements, bash can eat a final
+    # (blank) newline, and so we get a final \ on the final line, leading
+    # to malformed replacements in the sed script
+    repl2="$(echo "$repl" | sed '$s,\\*$,,')"
+    while [ "$repl" != "$repl2" ]; do
+      repl="$repl2"
+      repl2="$(echo "$repl" | sed '$s,\\*$,,')"
+    done
+    repl="$repl2"
+    echo -n ";s,$(eval echo "\$\{$var\}"),$repl,g"
+  done
+}
+
+function output_summary_sed {
+  echo "generating summary sed" 1>&2
+
+  long_option_value_end=$n_long
+
+  for var in \
+      smt_getoption_handlers \
+      smt_setoption_handlers \
+      long_option_value_begin \
+      long_option_value_end \
+      option_handler_includes \
+      all_modules_defaults \
+      all_modules_short_options \
+      all_modules_long_options \
+      all_modules_smt_options \
+      all_modules_option_handlers \
+      all_modules_get_options \
+      include_all_option_headers \
+      all_modules_contributions \
+      all_custom_handlers \
+      common_documentation \
+      remaining_documentation \
+      common_manpage_documentation \
+      remaining_manpage_documentation \
+      common_manpage_smt_documentation \
+      remaining_manpage_smt_documentation \
+      common_manpage_internals_documentation \
+      remaining_manpage_internals_documentation \
+      ; do
+    let ++count
+    repl="$(eval "echo \"\${$var}\"" | sed 's,\\,\\\\,g;s/,/\\,/g;s,&,\\\&,g;$!s,$,\\,g')"
+    # a little nasty; for multi-line replacements, bash can eat a final
+    # (blank) newline, and so we get a final \ on the final line, leading
+    # to malformed replacements in the sed script
+    repl2="$(echo "$repl" | sed '$s,\\*$,,')"
+    while [ "$repl" != "$repl2" ]; do
+      repl="$repl2"
+      repl2="$(echo "$repl" | sed '$s,\\*$,,')"
+    done
+    repl="$repl2"
+    echo -n ";s,$(eval echo "\$\{$var\}"),$repl,g"
+  done
+}
+
+
+function output_template_sed {
+  template="$1"
+
+  echo "generating $template" 1>&2
+
+  # generate warnings about incorrect #line annotations in templates
+  nl -ba -s' ' "$template"  | grep '^ *[0-9][0-9]* # *line' |
+    awk '{OFS="";if($1+1!=$3) print "'"$template"':",$1,": warning: incorrect annotation \"#line ",$3,"\" (it should be \"#line ",($1+1),"\")"}' >&2
+
+  long_option_value_end=$n_long
+
+  for var in \
+      template \
+      ; do
+    let ++count
+    repl="$(eval "echo \"\${$var}\"" | sed 's,\\,\\\\,g;s/,/\\,/g;s,&,\\\&,g;$!s,$,\\,g')"
+    # a little nasty; for multi-line replacements, bash can eat a final
+    # (blank) newline, and so we get a final \ on the final line, leading
+    # to malformed replacements in the sed script
+    repl2="$(echo "$repl" | sed '$s,\\*$,,')"
+    while [ "$repl" != "$repl2" ]; do
+      repl="$repl2"
+      repl2="$(echo "$repl" | sed '$s,\\*$,,')"
+    done
+    repl="$repl2"
+    echo -n ";s,$(eval echo "\$\{$var\}"),$repl,g"
+  done
+}
+
+
+
+function scan_module {
+  kf="$1";
+
+  echo "scanning $kf" >&2
+  let ++count
+  #progress "$kf" $count $total
+
+  seen_module=false
+  seen_endmodule=false
+  b=$(basename $(dirname "$kf"))
+  lineno=0
+  # IFS= forces read to read an entire line
+  while IFS= read -r line; do
+    let ++lineno
+    # read any continuations of the line
+    while expr "$line" : '.*\\$' &>/dev/null; do
+      IFS= read -r line2
+      line="$(echo "$line" | sed 's,\\$,,')$line2"
+      let ++lineno
+    done
+    if expr "$line" : '[ 	].*' &>/dev/null; then
+      doc "$(echo "$line" | sed 's,^[ 	],,')"
+    elif expr "$line" : '\.[ 	]*$' &>/dev/null; then
+      doc ""
+    elif expr "$line" : '\.' &>/dev/null; then
+      ERR "malformed line during processing of option \`$internal': continuation lines should not have content"
+    elif expr "$line" : '/.*' &>/dev/null; then
+      doc-alternate "$(echo "$line" | sed 's,^/,,')"
+    else
+      line="$(echo "$line" | sed 's,\([<>&()!?*]\),\\\1,g')"
+      #progress "$kf" $count $total
+      if ! eval "$line"; then
+        ERR "error was due to evaluation of this line"
+      fi
+    fi
+  done < "$kf"
+
+  if ! $seen_module; then
+    ERR "no module content found in file!"
+  fi
+  if ! $seen_endmodule; then
+    ERR "no \"endmodule\" declaration found (it is required at the end)"
+  fi
+
+  echo "done scanning $kf" >&2
+}
+
+
+running_command="$1"
+
+if [ "$running_command" = "module-sed" ]; then
+#   mkoptions module-sed options-file
+  echo "args: $#" >&2
+  if [ "$#" -eq 2 ]; then
+    options_file="$2"
+    scan_module  "$options_file"
+    output_module_sed "$options_file"
+  else
+    usage
+    exit 1
+  fi
+elif [ "$running_command" = "apply-sed-files-to-template" ]; then
+#   mkoptions apply-sed-files-to-template template-file (sed-file)*
+  echo "args: $#" >&2
+  if [ "$#" -ge 2 ]; then
+    shift;
+    options_template="$1"; shift
+    sed_files="$@"
+    apply_sed_files_to_template "$options_template" "$sed_files" "$*"
+  else
+    usage
+    exit 1
+  fi
+elif [ "$running_command" = "summary-sed" ]; then
+#   mkoptions summary-sed (options-file)*
+  echo "args: $#" >&2
+  shift;
+
+  while [ $# -gt 0 ]; do
+    kf="$1"; shift
+    scan_module "$kf"
+  done
+  output_summary_sed 
+elif [ "$running_command" = "template-sed" ]; then
+#   mkoptions template-sed template-file
+  if [ "$#" -eq 2 ]; then
+    template_file="$2"
+    output_template_sed "$template_file"
+  else
+    echo "$me: error: expected -t on command line" >&2
+    usage
+    exit 1
+  fi
+else
+  echo "$me: error: $running_command" >&2
+  usage
+  exit 1
+fi
+
+exit 0
+
diff --git a/src/options/open_ostream.cpp b/src/options/open_ostream.cpp
new file mode 100644
index 0000000..214f148
--- /dev/null
+++ b/src/options/open_ostream.cpp
@@ -0,0 +1,102 @@
+/*********************                                                        */
+/*! \file open_ostream.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "options/open_ostream.h"
+
+
+#include <cerrno>
+#include <iostream>
+#include <ostream>
+#include <sstream>
+#include <string>
+#include <utility>
+
+#include "lib/strtok_r.h"
+#include "options/parser_options.h"
+
+namespace CVC4 {
+
+OstreamOpener::OstreamOpener(const char* channelName)
+    : d_channelName(channelName)
+    , d_specialCases()
+{}
+
+void OstreamOpener::addSpecialCase(const std::string& name, std::ostream* out){
+  d_specialCases[name] = out;
+}
+
+
+
+std::pair< bool, std::ostream* > OstreamOpener::open(const std::string& optarg) const
+    throw(OptionException)
+{
+  if(optarg == "") {
+    std::stringstream ss;
+    ss << "Bad file name setting for " << d_channelName;
+    throw OptionException(ss.str());
+  }
+  if(d_specialCases.find(optarg) != d_specialCases.end()){
+    return std::make_pair(false, (*d_specialCases.find(optarg)).second);
+  } else if(!options::filesystemAccess()) {
+    throw OptionException(std::string("Filesystem access not permitted"));
+  } else {
+    errno = 0;
+    std::ostream* outStream;
+    outStream = new std::ofstream(optarg.c_str(),
+                                    std::ofstream::out | std::ofstream::trunc);
+    if(outStream == NULL || !*outStream) {
+      std::stringstream ss;
+      ss << "Cannot open " << d_channelName << " file: `"
+         << optarg << "': " << cvc4_errno_failreason();
+      throw OptionException(ss.str());
+    }
+    return make_pair(true, outStream);
+  }
+}
+
+std::string cvc4_errno_failreason() {
+#if HAVE_STRERROR_R
+#if STRERROR_R_CHAR_P
+  if(errno != 0) {
+    // GNU version of strerror_r: *might* use the given buffer,
+    // or might not.  It returns a pointer to buf, or not.
+    char buf[80];
+    return std::string(strerror_r(errno, buf, sizeof buf));
+  } else {
+    return "unknown reason";
+  }
+#else /* STRERROR_R_CHAR_P */
+  if(errno != 0) {
+    // XSI version of strerror_r: always uses the given buffer.
+    // Returns an error code.
+    char buf[80];
+    if(strerror_r(errno, buf, sizeof buf) == 0) {
+      return std::string(buf);
+    } else {
+      // some error occurred while getting the error string
+      return "unknown reason";
+    }
+  } else {
+    return "unknown reason";
+  }
+#endif /* STRERROR_R_CHAR_P */
+#else /* HAVE_STRERROR_R */
+  return "unknown reason";
+#endif /* HAVE_STRERROR_R */
+}
+
+}/* CVC4 namespace */
diff --git a/src/options/open_ostream.h b/src/options/open_ostream.h
new file mode 100644
index 0000000..6c00e7d
--- /dev/null
+++ b/src/options/open_ostream.h
@@ -0,0 +1,63 @@
+/*********************                                                        */
+/*! \file open_ostream.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPEN_OSTREAM_H
+#define __CVC4__OPEN_OSTREAM_H
+
+#include <map>
+#include <ostream>
+#include <string>
+#include <utility>
+
+#include "options/option_exception.h"
+
+namespace CVC4 {
+
+class OstreamOpener {
+ public:
+  OstreamOpener(const char* channelName);
+
+  void addSpecialCase(const std::string& name, std::ostream* out);
+
+  /**
+   * If name == "", this throws OptionException with the message, messageIfEmpty.
+   * If name is a special case, this return <false, out> where out is the
+   *   special case that was added.
+   * If name == "std::cerr", this return <false, &cerr>.
+   * If none of the previous conditions hold and !options::filesystemAccess(),
+   *   this throws an OptionException.
+   * Otherwise, this attempts to open a ofstream using the filename, name.
+   *   If this fails, this throws and OptionException. If this succeeds, this
+   *   returns <true, stream> where stream is a ostream allocated by new.
+   *   The caller is in this case the owner of the allocated memory.
+   */
+  std::pair<bool, std::ostream*> open(const std::string& name) const
+    throw(OptionException);
+
+ private:
+  const char* d_channelName;
+  std::map< std::string, std::ostream* > d_specialCases;
+
+}; /* class OstreamOpener */
+
+std::string cvc4_errno_failreason();
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPEN_OSTREAM_H */
diff --git a/src/options/option_exception.h b/src/options/option_exception.h
new file mode 100644
index 0000000..450eda9
--- /dev/null
+++ b/src/options/option_exception.h
@@ -0,0 +1,56 @@
+/*********************                                                        */
+/*! \file option_exception.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Options-related exceptions
+ **
+ ** Options-related exceptions.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__OPTION_EXCEPTION_H
+#define __CVC4__OPTION_EXCEPTION_H
+
+#include "base/exception.h"
+
+namespace CVC4 {
+
+/**
+ * Class representing an option-parsing exception such as badly-typed
+ * or missing arguments, arguments out of bounds, etc.  If an option
+ * name is itself unrecognized, a UnrecognizedOptionException (a derived
+ * class, below) should be used instead.
+ */
+class CVC4_PUBLIC OptionException : public CVC4::Exception {
+public:
+  OptionException(const std::string& s) throw() :
+    CVC4::Exception("Error in option parsing: " + s) {
+  }
+};/* class OptionException */
+
+/**
+ * Class representing an exception in option processing due to an
+ * unrecognized or unsupported option key.
+ */
+class CVC4_PUBLIC UnrecognizedOptionException : public CVC4::OptionException {
+public:
+  UnrecognizedOptionException() :
+    CVC4::OptionException("Unrecognized informational or option key or setting") {
+  }
+
+  UnrecognizedOptionException(const std::string& msg) :
+    CVC4::OptionException("Unrecognized informational or option key or setting: " + msg) {
+  }
+};/* class UnrecognizedOptionException */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTION_EXCEPTION_H */
diff --git a/src/options/option_exception.i b/src/options/option_exception.i
new file mode 100644
index 0000000..ae68d4e
--- /dev/null
+++ b/src/options/option_exception.i
@@ -0,0 +1,5 @@
+%{
+#include "options/option_exception.h"
+%}
+
+%include "options/option_exception.h"
diff --git a/src/options/options.h b/src/options/options.h
new file mode 100644
index 0000000..3551d82
--- /dev/null
+++ b/src/options/options.h
@@ -0,0 +1,558 @@
+/*********************                                                        */
+/*! \file options.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Kshitij Bansal
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Global (command-line, set-option, ...) parameters for SMT.
+ **
+ ** Global (command-line, set-option, ...) parameters for SMT.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__OPTIONS__OPTIONS_H
+#define __CVC4__OPTIONS__OPTIONS_H
+
+#include <fstream>
+#include <ostream>
+#include <string>
+#include <vector>
+
+#include "base/listener.h"
+#include "base/modal_exception.h"
+#include "base/tls.h"
+#include "options/argument_extender.h"
+#include "options/language.h"
+#include "options/printer_modes.h"
+#include "options/option_exception.h"
+
+namespace CVC4 {
+
+namespace options {
+  struct OptionsHolder;
+  class OptionsHandler;
+}/* CVC4::options namespace */
+
+class CVC4_PUBLIC Options {
+  /** The struct that holds all option values. */
+  options::OptionsHolder* d_holder;
+
+  /** The handler for the options of the theory. */
+  options::OptionsHandler* d_handler;
+
+  /** The current Options in effect */
+  static CVC4_THREADLOCAL(Options*) s_current;
+
+  /** Listeners for options::forceLogicString being set. */
+  ListenerCollection d_forceLogicListeners;
+
+  /** Listeners for notifyBeforeSearch. */
+  ListenerCollection d_beforeSearchListeners;
+
+  /** Listeners for options::tlimit. */
+  ListenerCollection d_tlimitListeners;
+
+  /** Listeners for options::tlimit-per. */
+  ListenerCollection d_tlimitPerListeners;
+
+  /** Listeners for options::rlimit. */
+  ListenerCollection d_rlimitListeners;
+
+  /** Listeners for options::tlimit-per. */
+  ListenerCollection d_rlimitPerListeners;
+
+  /** Listeners for options::useTheoryList. */
+  ListenerCollection d_useTheoryListListeners;
+
+  /** Listeners for options::defaultExprDepth. */
+  ListenerCollection d_setDefaultExprDepthListeners;
+
+  /** Listeners for options::defaultDagThresh. */
+  ListenerCollection d_setDefaultDagThreshListeners;
+
+  /** Listeners for options::printExprTypes. */
+  ListenerCollection d_setPrintExprTypesListeners;
+
+  /** Listeners for options::dumpModeString. */
+  ListenerCollection d_setDumpModeListeners;
+
+  /** Listeners for options::printSuccess. */
+  ListenerCollection d_setPrintSuccessListeners;
+
+  /** Listeners for options::dumpToFileName. */
+  ListenerCollection d_dumpToFileListeners;
+
+  /** Listeners for options::regularChannelName. */
+  ListenerCollection d_setRegularChannelListeners;
+
+  /** Listeners for options::diagnosticChannelName. */
+  ListenerCollection d_setDiagnosticChannelListeners;
+
+  /** Listeners for options::replayFilename. */
+  ListenerCollection d_setReplayFilenameListeners;
+
+
+  static ListenerCollection::Registration* registerAndNotify(
+      ListenerCollection& collection, Listener* listener, bool notify);
+
+  /** Low-level assignment function for options */
+  template <class T>
+  void assign(T, std::string option, std::string value);
+  /** Low-level assignment function for bool-valued options */
+  template <class T>
+  void assignBool(T, std::string option, bool value);
+
+  friend class options::OptionsHandler;
+
+  /**
+   * Options cannot be copied as they are given an explicit list of
+   * Listeners to respond to.
+   */
+  Options(const Options& options) CVC4_UNDEFINED;
+
+  /**
+   * Options cannot be assigned as they are given an explicit list of
+   * Listeners to respond to.
+   */
+  Options& operator=(const Options& options) CVC4_UNDEFINED;
+
+  static std::string formatThreadOptionException(const std::string& option);
+
+  static const size_t s_maxoptlen = 128;
+  static const unsigned s_preemptAdditional = 6;
+
+public:
+  class CVC4_PUBLIC OptionsScope {
+  private:
+    Options* d_oldOptions;
+  public:
+    OptionsScope(Options* newOptions) :
+        d_oldOptions(Options::s_current)
+    {
+      Options::s_current = newOptions;
+    }
+    ~OptionsScope(){
+      Options::s_current = d_oldOptions;
+    }
+  };
+
+  /** Return true if current Options are null */
+  static inline bool isCurrentNull() {
+    return s_current == NULL;
+  }
+
+  /** Get the current Options in effect */
+  static inline Options* current() {
+    return s_current;
+  }
+
+  Options();
+  ~Options();
+
+  /**
+   * Copies the value of the options stored in OptionsHolder into the current
+   * Options object.
+   * This does not copy the listeners in the Options object.
+   */
+  void copyValues(const Options& options);
+
+  /**
+   * Set the value of the given option.  Use of this default
+   * implementation causes a compile-time error; write-able
+   * options specialize this template with a real implementation.
+   */
+  template <class T>
+  void set(T, const typename T::type&) {
+    // Flag a compile-time error.  Write-able options specialize
+    // this template to provide an implementation.
+    T::you_are_trying_to_assign_to_a_read_only_option;
+  }
+
+  /**
+   * Set the value of the given option by key.
+   */
+  void setOption(const std::string& key, const std::string& optionarg)
+      throw(OptionException, ModalException);
+
+
+  /** Get the value of the given option.  Const access only. */
+  template <class T>
+  const typename T::type& operator[](T) const;
+
+  /**
+   * Gets the value of the given option by key and returns value as a string.
+   */
+  std::string getOption(const std::string& key) const
+    throw(OptionException);
+
+  // Get accessor functions.
+  InputLanguage getInputLanguage() const;
+  InstFormatMode getInstFormatMode() const;
+  OutputLanguage getOutputLanguage() const;
+  bool getCheckProofs() const;
+  bool getContinuedExecution() const;
+  bool getDumpInstantiations() const;
+  bool getDumpModels() const;
+  bool getDumpProofs() const;
+  bool getDumpSynth() const;
+  bool getDumpUnsatCores() const;
+  bool getEarlyExit() const;
+  bool getFallbackSequential() const;
+  bool getFilesystemAccess() const;
+  bool getForceNoLimitCpuWhileDump() const;
+  bool getHelp() const;
+  bool getIncrementalParallel() const;
+  bool getIncrementalSolving() const;
+  bool getInteractive() const;
+  bool getInteractivePrompt() const;
+  bool getLanguageHelp() const;
+  bool getMemoryMap() const;
+  bool getParseOnly() const;
+  bool getProduceModels() const;
+  bool getProof() const;
+  bool getSegvSpin() const;
+  bool getSemanticChecks() const;
+  bool getStatistics() const;
+  bool getStatsEveryQuery() const;
+  bool getStatsHideZeros() const;
+  bool getStrictParsing() const;
+  int getTearDownIncremental() const;
+  bool getVersion() const;
+  bool getWaitToJoin() const;
+  const std::string& getForceLogicString() const;
+  const std::vector<std::string>& getThreadArgv() const;
+  int getSharingFilterByLength() const;
+  int getThreadId() const;
+  int getVerbosity() const;
+  std::istream* getIn() const;
+  std::ostream* getErr();
+  std::ostream* getOut();
+  std::ostream* getOutConst() const; // TODO: Remove this.
+  std::string getBinaryName() const;
+  std::string getReplayInputFilename() const;
+  unsigned getParseStep() const;
+  unsigned getThreadStackSize() const;
+  unsigned getThreads() const;
+
+
+  // TODO: Document these.
+  void setCeGuidedInst(bool);
+  void setDumpSynth(bool);
+  void setInputLanguage(InputLanguage);
+  void setInteractive(bool);
+  void setOut(std::ostream*);
+  void setOutputLanguage(OutputLanguage);
+  void setSharingFilterByLength(int length);
+  void setThreadId(int);
+
+  bool wasSetByUserCeGuidedInst() const;
+  bool wasSetByUserDumpSynth() const;
+  bool wasSetByUserEarlyExit() const;
+  bool wasSetByUserForceLogicString() const;
+  bool wasSetByUserIncrementalSolving() const;
+  bool wasSetByUserInteractive() const;
+  bool wasSetByUserThreadStackSize() const;
+  bool wasSetByUserThreads() const;
+
+  // Static accessor functions.
+  // TODO: Document these.
+  static int currentGetSharingFilterByLength();
+  static int currentGetThreadId();
+  static std::ostream* currentGetOut();
+
+  /**
+   * Returns true iff the value of the given option was set
+   * by the user via a command-line option or SmtEngine::setOption().
+   * (Options::set() is low-level and doesn't count.)  Returns false
+   * otherwise.
+   */
+  template <class T>
+  bool wasSetByUser(T) const;
+
+  /**
+   * Get a description of the command-line flags accepted by
+   * parseOptions.  The returned string will be escaped so that it is
+   * suitable as an argument to printf. */
+  std::string getDescription() const;
+
+  /**
+   * Print overall command-line option usage message, prefixed by
+   * "msg"---which could be an error message causing the usage
+   * output in the first place, e.g. "no such option --foo"
+   */
+  static void printUsage(const std::string msg, std::ostream& out);
+
+  /**
+   * Print command-line option usage message for only the most-commonly
+   * used options.  The message is prefixed by "msg"---which could be
+   * an error message causing the usage output in the first place, e.g.
+   * "no such option --foo"
+   */
+  static void printShortUsage(const std::string msg, std::ostream& out);
+
+  /** Print help for the --lang command line option */
+  static void printLanguageHelp(std::ostream& out);
+
+  /**
+   * Look up long command-line option names that bear some similarity
+   * to the given name.  Returns an empty string if there are no
+   * suggestions.
+   */
+  static std::string suggestCommandLineOptions(const std::string& optionName) throw();
+
+  /**
+   * Look up SMT option names that bear some similarity to
+   * the given name.  Don't include the initial ":".  This might be
+   * useful in case of typos.  Can return an empty vector if there are
+   * no suggestions.
+   */
+  static std::vector<std::string> suggestSmtOptions(const std::string& optionName) throw();
+
+  /**
+   * Initialize the Options object options based on the given
+   * command-line arguments given in argc and argv.  The return value
+   * is what's left of the command line (that is, the non-option
+   * arguments).
+   *
+   * This function uses getopt_long() and is not thread safe.
+   *
+   * Preconditions: options and argv must be non-null.
+   */
+  static std::vector<std::string> parseOptions(Options* options,
+                                               int argc, char* argv[])
+    throw(OptionException);
+
+  /**
+   * Get the setting for all options.
+   */
+  std::vector< std::vector<std::string> > getOptions() const throw();
+
+
+  /**
+   * Registers a listener for the notification, notifyBeforeSearch.
+   *
+   * The memory for the Registration is controlled by the user and must
+   * be destroyed before the Options object is.
+   *
+   * This has multiple usages so having a notifyIfSet flag does not add
+   * clarity. Users should check the relevant flags before registering this.
+   */
+  ListenerCollection::Registration* registerBeforeSearchListener(
+      Listener* listener);
+
+
+  /**
+   * Registers a listener for options::forceLogic being set.
+   *
+   * If notifyIfSet is true, this calls notify on the listener
+   * if the option was set by the user.
+   *
+   * The memory for the Registration is controlled by the user and must
+   * be destroyed before the Options object is.
+   */
+  ListenerCollection::Registration* registerForceLogicListener(
+      Listener* listener, bool notifyIfSet);
+
+  /**
+   * Registers a listener for options::tlimit being set.
+   *
+   * If notifyIfSet is true, this calls notify on the listener
+   * if the option was set by the user.
+   *
+   * The memory for the Registration is controlled by the user and must
+   * be destroyed before the Options object is.
+   */
+  ListenerCollection::Registration* registerTlimitListener(
+      Listener* listener, bool notifyIfSet);
+
+  /**
+   * Registers a listener for options::tlimit-per being set.
+   *
+   * If notifyIfSet is true, this calls notify on the listener
+   * if the option was set by the user.
+   *
+   * The memory for the Registration is controlled by the user and must
+   * be destroyed before the Options object is.
+   */
+  ListenerCollection::Registration* registerTlimitPerListener(
+      Listener* listener, bool notifyIfSet);
+
+
+  /**
+   * Registers a listener for options::rlimit being set.
+   *
+   * If notifyIfSet is true, this calls notify on the listener
+   * if the option was set by the user.
+   *
+   * The memory for the Registration is controlled by the user and must
+   * be destroyed before the Options object is.
+   */
+  ListenerCollection::Registration* registerRlimitListener(
+      Listener* listener, bool notifyIfSet);
+
+  /**
+   * Registers a listener for options::rlimit-per being set.
+   *
+   * If notifyIfSet is true, this calls notify on the listener
+   * if the option was set by the user.
+   *
+   * The memory for the Registration is controlled by the user and must
+   * be destroyed before the Options object is.
+   */
+  ListenerCollection::Registration* registerRlimitPerListener(
+      Listener* listener, bool notifyIfSet);
+
+  /**
+   * Registers a listener for options::useTheoryList being set.
+   *
+   * If notifyIfSet is true, this calls notify on the listener
+   * if the option was set by the user.
+   *
+   * The memory for the Registration is controlled by the user and must
+   * be destroyed before the Options object is.
+   */
+  ListenerCollection::Registration* registerUseTheoryListListener(
+      Listener* listener, bool notifyIfSet);
+
+
+  /**
+   * Registers a listener for options::defaultExprDepth being set.
+   *
+   * If notifyIfSet is true, this calls notify on the listener
+   * if the option was set by the user.
+   *
+   * The memory for the Registration is controlled by the user and must
+   * be destroyed before the Options object is.
+   */
+  ListenerCollection::Registration* registerSetDefaultExprDepthListener(
+      Listener* listener, bool notifyIfSet);
+
+  /**
+   * Registers a listener for options::defaultDagThresh being set.
+   *
+   * If notifyIfSet is true, this calls notify on the listener
+   * if the option was set by the user.
+   *
+   * The memory for the Registration is controlled by the user and must
+   * be destroyed before the Options object is.
+   */
+  ListenerCollection::Registration* registerSetDefaultExprDagListener(
+      Listener* listener, bool notifyIfSet);
+
+  /**
+   * Registers a listener for options::printExprTypes being set.
+   *
+   * If notifyIfSet is true, this calls notify on the listener
+   * if the option was set by the user.
+   *
+   * The memory for the Registration is controlled by the user and must
+   * be destroyed before the Options object is.
+   */
+  ListenerCollection::Registration* registerSetPrintExprTypesListener(
+      Listener* listener, bool notifyIfSet);
+
+  /**
+   * Registers a listener for options::dumpModeString being set.
+   *
+   * If notifyIfSet is true, this calls notify on the listener
+   * if the option was set by the user.
+   *
+   * The memory for the Registration is controlled by the user and must
+   * be destroyed before the Options object is.
+   */
+  ListenerCollection::Registration* registerSetDumpModeListener(
+      Listener* listener, bool notifyIfSet);
+
+  /**
+   * Registers a listener for options::printSuccess being set.
+   *
+   * If notifyIfSet is true, this calls notify on the listener
+   * if the option was set by the user.
+   *
+   * The memory for the Registration is controlled by the user and must
+   * be destroyed before the Options object is.
+   */
+  ListenerCollection::Registration* registerSetPrintSuccessListener(
+      Listener* listener, bool notifyIfSet);
+
+  /**
+   * Registers a listener for options::dumpToFileName being set.
+   *
+   * If notifyIfSet is true, this calls notify on the listener
+   * if the option was set by the user.
+   *
+   * The memory for the Registration is controlled by the user and must
+   * be destroyed before the Options object is.
+   */
+  ListenerCollection::Registration* registerDumpToFileNameListener(
+      Listener* listener, bool notifyIfSet);
+
+  /**
+   * Registers a listener for options::regularChannelName being set.
+   *
+   * If notifyIfSet is true, this calls notify on the listener
+   * if the option was set by the user.
+   *
+   * The memory for the Registration is controlled by the user and must
+   * be destroyed before the Options object is.
+   */
+  ListenerCollection::Registration* registerSetRegularOutputChannelListener(
+      Listener* listener, bool notifyIfSet);
+
+  /**
+   * Registers a listener for options::diagnosticChannelName being set.
+   *
+   * If notifyIfSet is true, this calls notify on the listener
+   * if the option was set by the user.
+   *
+   * The memory for the Registration is controlled by the user and must
+   * be destroyed before the Options object is.
+   */
+  ListenerCollection::Registration* registerSetDiagnosticOutputChannelListener(
+      Listener* listener, bool notifyIfSet);
+
+  /**
+   * Registers a listener for options::replayLogFilename being set.
+   *
+   * If notifyIfSet is true, this calls notify on the listener
+   * if the option was set by the user.
+   *
+   * The memory for the Registration is controlled by the user and must
+   * be destroyed before the Options object is.
+   */
+  ListenerCollection::Registration* registerSetReplayLogFilename(
+      Listener* listener, bool notifyIfSet);
+
+  /** Sends a std::flush to getErr(). */
+  void flushErr();
+
+  /** Sends a std::flush to getOut(). */
+  void flushOut();
+
+ private:
+
+  /**
+   * Internal procedure for implementing the parseOptions function.
+   * Initializes the options object based on the given command-line
+   * arguments. This uses an ArgumentExtender containing the
+   * command-line arguments. Nonoptions are stored into nonoptions.
+   *
+   * This is not thread safe.
+   *
+   * Preconditions: options, extender and nonoptions are non-null.
+   */
+  static void parseOptionsRecursive(Options* options,
+                                    options::ArgumentExtender* extender,
+                                    std::vector<std::string>* nonoptions)
+    throw(OptionException);
+};/* class Options */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__OPTIONS_H */
diff --git a/src/options/options.i b/src/options/options.i
new file mode 100644
index 0000000..25eecaf
--- /dev/null
+++ b/src/options/options.i
@@ -0,0 +1,10 @@
+%{
+#include "options/options.h"
+%}
+
+%ignore CVC4::operator<<(std::ostream&, SimplificationMode);
+%ignore CVC4::operator<<(std::ostream&, ArithPivotRule);
+
+%apply char** STRING_ARRAY { char* argv[] }
+%include "options/options.h"
+%clear char* argv[];
diff --git a/src/options/options_get_option_template.cpp b/src/options/options_get_option_template.cpp
new file mode 100644
index 0000000..d50644a
--- /dev/null
+++ b/src/options/options_get_option_template.cpp
@@ -0,0 +1,53 @@
+/*********************                                                        */
+/*! \file options_get_option_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of OptionsHandler::getOption.
+ **
+ ** This template file is expanded into the cpp implementation of
+ ** OptionsHandler::setOption. The file is essentially the contents
+ ** of the ${smt_getoption_handlers} variable in the options/mkoptions
+ ** script. This variable depends on all options files. To generate this file,
+ ** first generate options/summary.sed.
+ **/
+
+#include <iomanip>
+#include <string>
+#include <sstream>
+
+
+#include "base/output.h"
+#include "base/modal_exception.h"
+#include "options/option_exception.h"
+#include "options/options.h"
+#include "options/options_handler.h"
+
+
+${include_all_option_headers}
+${option_handler_includes}
+
+#line 37 "${template}"
+
+using namespace std;
+
+namespace CVC4 {
+
+std::string Options::getOption(const std::string& key) const
+  throw(OptionException) {
+  Trace("options") << "SMT getOption(" << key << ")" << endl;
+
+  ${smt_getoption_handlers}
+
+#line 49 "${template}"
+
+  throw UnrecognizedOptionException(key);
+}
+
+}/* CVC4 namespace */
diff --git a/src/options/options_handler.cpp b/src/options/options_handler.cpp
new file mode 100644
index 0000000..94bf155
--- /dev/null
+++ b/src/options/options_handler.cpp
@@ -0,0 +1,1591 @@
+/*********************                                                        */
+/*! \file options_handler.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Interface for custom handlers and predicates options.
+ **
+ ** Interface for custom handlers and predicates options.
+ **/
+
+#include "options/options_handler.h"
+
+#include <ostream>
+#include <string>
+#include <cerrno>
+
+#include "cvc4autoconfig.h"
+
+#include "base/configuration.h"
+#include "base/cvc4_assert.h"
+#include "base/exception.h"
+#include "base/modal_exception.h"
+#include "base/output.h"
+#include "lib/strtok_r.h"
+#include "options/arith_heuristic_pivot_rule.h"
+#include "options/arith_propagation_mode.h"
+#include "options/arith_unate_lemma_mode.h"
+#include "options/base_options.h"
+#include "options/bv_bitblast_mode.h"
+#include "options/bv_options.h"
+#include "options/decision_mode.h"
+#include "options/decision_options.h"
+#include "options/didyoumean.h"
+#include "options/language.h"
+#include "options/option_exception.h"
+#include "options/printer_modes.h"
+#include "options/quantifiers_modes.h"
+#include "options/simplification_mode.h"
+#include "options/smt_options.h"
+#include "options/theory_options.h"
+#include "options/theoryof_mode.h"
+#include "options/ufss_mode.h"
+
+namespace CVC4 {
+namespace options {
+
+OptionsHandler::OptionsHandler(Options* options) : d_options(options) { }
+
+void OptionsHandler::notifyForceLogic(const std::string& option){
+  d_options->d_forceLogicListeners.notify();
+}
+
+void OptionsHandler::notifyBeforeSearch(const std::string& option)
+    throw(ModalException)
+{
+  try{
+    d_options->d_beforeSearchListeners.notify();
+  } catch (ModalException&){
+    std::stringstream ss;
+    ss << "cannot change option `" << option
+       << "' after final initialization (i.e., after logic has been set)";
+    throw ModalException(ss.str());
+  }
+}
+
+
+void OptionsHandler::notifyTlimit(const std::string& option) {
+  d_options->d_tlimitListeners.notify();
+}
+
+void OptionsHandler::notifyTlimitPer(const std::string& option) {
+  d_options->d_tlimitPerListeners.notify();
+}
+
+void OptionsHandler::notifyRlimit(const std::string& option) {
+  d_options->d_rlimitListeners.notify();
+}
+
+void OptionsHandler::notifyRlimitPer(const std::string& option) {
+  d_options->d_rlimitPerListeners.notify();
+}
+
+
+unsigned long OptionsHandler::tlimitHandler(std::string option, std::string optarg) throw(OptionException)  {
+  unsigned long ms;
+  std::istringstream convert(optarg);
+  if (!(convert >> ms)) {
+    throw OptionException("option `"+option+"` requires a number as an argument");
+  }
+  return ms;
+}
+
+unsigned long OptionsHandler::tlimitPerHandler(std::string option, std::string optarg) throw(OptionException) {
+  unsigned long ms;
+
+  std::istringstream convert(optarg);
+  if (!(convert >> ms)) {
+    throw OptionException("option `"+option+"` requires a number as an argument");
+  }
+  return ms;
+}
+
+unsigned long OptionsHandler::rlimitHandler(std::string option, std::string optarg) throw(OptionException) {
+  unsigned long ms;
+
+  std::istringstream convert(optarg);
+  if (!(convert >> ms)) {
+    throw OptionException("option `"+option+"` requires a number as an argument");
+  }
+  return ms;
+}
+
+
+unsigned long OptionsHandler::rlimitPerHandler(std::string option, std::string optarg) throw(OptionException) {
+  unsigned long ms;
+
+  std::istringstream convert(optarg);
+  if (!(convert >> ms)) {
+    throw OptionException("option `"+option+"` requires a number as an argument");
+  }
+
+  return ms;
+}
+
+
+/* options/base_options_handlers.h */
+void OptionsHandler::notifyPrintSuccess(std::string option) {
+  d_options->d_setPrintSuccessListeners.notify();
+}
+
+// theory/arith/options_handlers.h
+const std::string OptionsHandler::s_arithUnateLemmasHelp = "\
+Unate lemmas are generated before SAT search begins using the relationship\n\
+of constant terms and polynomials.\n\
+Modes currently supported by the --unate-lemmas option:\n\
++ none \n\
++ ineqs \n\
+  Outputs lemmas of the general form (<= p c) implies (<= p d) for c < d.\n\
++ eqs \n\
+  Outputs lemmas of the general forms\n\
+  (= p c) implies (<= p d) for c < d, or\n\
+  (= p c) implies (not (= p d)) for c != d.\n\
++ all \n\
+  A combination of inequalities and equalities.\n\
+";
+
+const std::string OptionsHandler::s_arithPropagationModeHelp = "\
+This decides on kind of propagation arithmetic attempts to do during the search.\n\
++ none\n\
++ unate\n\
+ use constraints to do unate propagation\n\
++ bi (Bounds Inference)\n\
+  infers bounds on basic variables using the upper and lower bounds of the\n\
+  non-basic variables in the tableau.\n\
++both\n\
+";
+
+const std::string OptionsHandler::s_errorSelectionRulesHelp = "\
+This decides on the rule used by simplex during heuristic rounds\n\
+for deciding the next basic variable to select.\n\
+Heuristic pivot rules available:\n\
++min\n\
+  The minimum abs() value of the variable's violation of its bound. (default)\n\
++max\n\
+  The maximum violation the bound\n\
++varord\n\
+  The variable order\n\
+";
+
+ArithUnateLemmaMode OptionsHandler::stringToArithUnateLemmaMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "all") {
+    return ALL_PRESOLVE_LEMMAS;
+  } else if(optarg == "none") {
+    return NO_PRESOLVE_LEMMAS;
+  } else if(optarg == "ineqs") {
+    return INEQUALITY_PRESOLVE_LEMMAS;
+  } else if(optarg == "eqs") {
+    return EQUALITY_PRESOLVE_LEMMAS;
+  } else if(optarg == "help") {
+    puts(s_arithUnateLemmasHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --unate-lemmas: `") +
+                          optarg + "'.  Try --unate-lemmas help.");
+  }
+}
+
+ArithPropagationMode OptionsHandler::stringToArithPropagationMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "none") {
+    return NO_PROP;
+  } else if(optarg == "unate") {
+    return UNATE_PROP;
+  } else if(optarg == "bi") {
+    return BOUND_INFERENCE_PROP;
+  } else if(optarg == "both") {
+    return BOTH_PROP;
+  } else if(optarg == "help") {
+    puts(s_arithPropagationModeHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --arith-prop: `") +
+                          optarg + "'.  Try --arith-prop help.");
+  }
+}
+
+ErrorSelectionRule OptionsHandler::stringToErrorSelectionRule(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "min") {
+    return MINIMUM_AMOUNT;
+  } else if(optarg == "varord") {
+    return VAR_ORDER;
+  } else if(optarg == "max") {
+    return MAXIMUM_AMOUNT;
+  } else if(optarg == "help") {
+    puts(s_errorSelectionRulesHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --heuristic-pivot-rule: `") +
+                          optarg + "'.  Try --heuristic-pivot-rule help.");
+  }
+}
+// theory/quantifiers/options_handlers.h
+
+const std::string OptionsHandler::s_instWhenHelp = "\
+Modes currently supported by the --inst-when option:\n\
+\n\
+full-last-call (default)\n\
++ Alternate running instantiation rounds at full effort and last\n\
+  call.  In other words, interleave instantiation and theory combination.\n\
+\n\
+full\n\
++ Run instantiation round at full effort, before theory combination.\n\
+\n\
+full-delay \n\
++ Run instantiation round at full effort, before theory combination, after\n\
+  all other theories have finished.\n\
+\n\
+full-delay-last-call \n\
++ Alternate running instantiation rounds at full effort after all other\n\
+  theories have finished, and last call.  \n\
+\n\
+last-call\n\
++ Run instantiation at last call effort, after theory combination and\n\
+  and theories report sat.\n\
+\n\
+";
+
+const std::string OptionsHandler::s_literalMatchHelp = "\
+Literal match modes currently supported by the --literal-match option:\n\
+\n\
+none \n\
++ Do not use literal matching.\n\
+\n\
+use (default)\n\
++ Consider phase requirements of triggers conservatively. For example, the\n\
+  trigger P( x ) in forall( x ). ( P( x ) V ~Q( x ) ) will not be matched with\n\
+  terms in the equivalence class of true, and likewise Q( x ) will not be matched\n\
+  terms in the equivalence class of false. Extends to equality.\n\
+\n\
+agg-predicate \n\
++ Consider phase requirements aggressively for predicates. In the above example,\n\
+  only match P( x ) with terms that are in the equivalence class of false.\n\
+\n\
+agg \n\
++ Consider the phase requirements aggressively for all triggers.\n\
+\n\
+";
+
+const std::string OptionsHandler::s_mbqiModeHelp = "\
+Model-based quantifier instantiation modes currently supported by the --mbqi option:\n\
+\n\
+default \n\
++ Use algorithm from Section 5.4.2 of thesis Finite Model Finding in Satisfiability \n\
+  Modulo Theories.\n\
+\n\
+none \n\
++ Disable model-based quantifier instantiation.\n\
+\n\
+gen-ev \n\
++ Use model-based quantifier instantiation algorithm from CADE 24 finite\n\
+  model finding paper based on generalizing evaluations.\n\
+\n\
+fmc-interval \n\
++ Same as default, but with intervals for models of integer functions.\n\
+\n\
+abs \n\
++ Use abstract MBQI algorithm (uses disjoint sets). \n\
+\n\
+";
+
+const std::string OptionsHandler::s_qcfWhenModeHelp = "\
+Quantifier conflict find modes currently supported by the --quant-cf-when option:\n\
+\n\
+default \n\
++ Default, apply conflict finding at full effort.\n\
+\n\
+last-call \n\
++ Apply conflict finding at last call, after theory combination and \n\
+  and all theories report sat. \n\
+\n\
+std \n\
++ Apply conflict finding at standard effort.\n\
+\n\
+std-h \n\
++ Apply conflict finding at standard effort when heuristic says to. \n\
+\n\
+";
+
+const std::string OptionsHandler::s_qcfModeHelp = "\
+Quantifier conflict find modes currently supported by the --quant-cf option:\n\
+\n\
+prop-eq \n\
++ Default, apply QCF algorithm to propagate equalities as well as conflicts. \n\
+\n\
+conflict \n\
++ Apply QCF algorithm to find conflicts only.\n\
+\n\
+partial \n\
++ Apply QCF algorithm to instantiate heuristically as well. \n\
+\n\
+mc \n\
++ Apply QCF algorithm in a complete way, so that a model is ensured when it fails. \n\
+\n\
+";
+
+const std::string OptionsHandler::s_userPatModeHelp = "\
+User pattern modes currently supported by the --user-pat option:\n\
+\n\
+trust \n\
++ When provided, use only user-provided patterns for a quantified formula.\n\
+\n\
+use \n\
++ Use both user-provided and auto-generated patterns when patterns\n\
+  are provided for a quantified formula.\n\
+\n\
+resort \n\
++ Use user-provided patterns only after auto-generated patterns saturate.\n\
+\n\
+ignore \n\
++ Ignore user-provided patterns. \n\
+\n\
+interleave \n\
++ Alternate between use/resort. \n\
+\n\
+";
+
+const std::string OptionsHandler::s_triggerSelModeHelp = "\
+Trigger selection modes currently supported by the --trigger-sel option:\n\
+\n\
+min | default \n\
++ Consider only minimal subterms that meet criteria for triggers.\n\
+\n\
+max \n\
++ Consider only maximal subterms that meet criteria for triggers. \n\
+\n\
+all \n\
++ Consider all subterms that meet criteria for triggers. \n\
+\n\
+min-s-max \n\
++ Consider only minimal subterms that meet criteria for single triggers, maximal otherwise. \n\
+\n\
+min-s-all \n\
++ Consider only minimal subterms that meet criteria for single triggers, all otherwise. \n\
+\n\
+";
+const std::string OptionsHandler::s_triggerActiveSelModeHelp = "\
+Trigger active selection modes currently supported by the --trigger-sel option:\n\
+\n\
+all \n\
++ Make all triggers active. \n\
+\n\
+min \n\
++ Activate triggers with minimal ground terms.\n\
+\n\
+max \n\
++ Activate triggers with maximal ground terms. \n\
+\n\
+";
+const std::string OptionsHandler::s_prenexQuantModeHelp = "\
+Prenex quantifiers modes currently supported by the --prenex-quant option:\n\
+\n\
+none \n\
++ Do no prenex nested quantifiers. \n\
+\n\
+default | simple \n\
++ Default, do simple prenexing of same sign quantifiers.\n\
+\n\
+dnorm \n\
++ Prenex to disjunctive prenex normal form.\n\
+\n\
+norm \n\
++ Prenex to prenex normal form.\n\
+\n\
+";
+
+const std::string OptionsHandler::s_cegqiFairModeHelp = "\
+Modes for enforcing fairness for counterexample guided quantifier instantion, supported by --cegqi-fair:\n\
+\n\
+uf-dt-size \n\
++ Enforce fairness using an uninterpreted function for datatypes size.\n\
+\n\
+default | dt-size \n\
++ Default, enforce fairness using size operator.\n\
+\n\
+dt-height-bound \n\
++ Enforce fairness by height bound predicate.\n\
+\n\
+none \n\
++ Do not enforce fairness. \n\
+\n\
+";
+
+const std::string OptionsHandler::s_termDbModeHelp = "\
+Modes for term database, supported by --term-db-mode:\n\
+\n\
+all  \n\
++ Quantifiers module considers all ground terms.\n\
+\n\
+relevant \n\
++ Quantifiers module considers only ground terms connected to current assertions. \n\
+\n\
+";
+
+const std::string OptionsHandler::s_iteLiftQuantHelp = "\
+Modes for term database, supported by --ite-lift-quant:\n\
+\n\
+none  \n\
++ Do not lift if-then-else in quantified formulas.\n\
+\n\
+simple  \n\
++ Lift if-then-else in quantified formulas if results in smaller term size.\n\
+\n\
+all \n\
++ Lift if-then-else in quantified formulas. \n\
+\n\
+";
+
+const std::string OptionsHandler::s_cegqiSingleInvHelp = "\
+Modes for single invocation techniques, supported by --cegqi-si:\n\
+\n\
+none  \n\
++ Do not use single invocation techniques.\n\
+\n\
+use (default) \n\
++ Use single invocation techniques only if grammar is not restrictive.\n\
+\n\
+all-abort  \n\
++ Always use single invocation techniques, abort if solution reconstruction will likely fail,\
+  for instance, when the grammar does not have ITE and solution requires it.\n\
+\n\
+all \n\
++ Always use single invocation techniques. \n\
+\n\
+";
+
+const std::string OptionsHandler::s_sygusInvTemplHelp = "\
+Template modes for sygus invariant synthesis, supported by --sygus-inv-templ:\n\
+\n\
+none  \n\
++ Synthesize invariant directly.\n\
+\n\
+pre  \n\
++ Synthesize invariant based on weakening of precondition .\n\
+\n\
+post \n\
++ Synthesize invariant based on strengthening of postcondition. \n\
+\n\
+";
+
+const std::string OptionsHandler::s_macrosQuantHelp = "\
+Modes for quantifiers macro expansion, supported by --macros-quant-mode:\n\
+\n\
+all \n\
++ Infer definitions for functions, including those containing quantified formulas.\n\
+\n\
+ground (default) \n\
++ Only infer ground definitions for functions.\n\
+\n\
+ground-uf \n\
++ Only infer ground definitions for functions that result in triggers for all free variables.\n\
+\n\
+";
+
+const std::string OptionsHandler::s_quantDSplitHelp = "\
+Modes for quantifiers splitting, supported by --quant-dsplit-mode:\n\
+\n\
+none \n\
++ Never split quantified formulas.\n\
+\n\
+default \n\
++ Split quantified formulas over some finite datatypes when finite model finding is enabled.\n\
+\n\
+agg \n\
++ Aggressively split quantified formulas.\n\
+\n\
+";
+
+const std::string OptionsHandler::s_quantRepHelp = "\
+Modes for quantifiers representative selection, supported by --quant-rep-mode:\n\
+\n\
+ee \n\
++ Let equality engine choose representatives.\n\
+\n\
+first (default) \n\
++ Choose terms that appear first.\n\
+\n\
+depth \n\
++ Choose terms that are of minimal depth.\n\
+\n\
+";
+
+const std::string OptionsHandler::s_fmfBoundMinModeModeHelp = "\
+Modes for finite model finding bound minimization, supported by --fmf-bound-min-mode:\n\
+\n\
+none \n\
++ Do not minimize inferred bounds.\n\
+\n\
+int (default) \n\
++ Minimize integer ranges only.\n\
+\n\
+setc \n\
++ Minimize cardinality of set membership ranges only.\n\
+\n\
+all \n\
++ Minimize all inferred bounds.\n\
+\n\
+";
+
+
+theory::quantifiers::InstWhenMode OptionsHandler::stringToInstWhenMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "pre-full") {
+    return theory::quantifiers::INST_WHEN_PRE_FULL;
+  } else if(optarg == "full") {
+    return theory::quantifiers::INST_WHEN_FULL;
+  } else if(optarg == "full-delay") {
+    return theory::quantifiers::INST_WHEN_FULL_DELAY;
+  } else if(optarg == "full-last-call") {
+    return theory::quantifiers::INST_WHEN_FULL_LAST_CALL;
+  } else if(optarg == "full-delay-last-call") {
+    return theory::quantifiers::INST_WHEN_FULL_DELAY_LAST_CALL;
+  } else if(optarg == "last-call") {
+    return theory::quantifiers::INST_WHEN_LAST_CALL;
+  } else if(optarg == "help") {
+    puts(s_instWhenHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --inst-when: `") +
+                          optarg + "'.  Try --inst-when help.");
+  }
+}
+
+void OptionsHandler::checkInstWhenMode(std::string option, theory::quantifiers::InstWhenMode mode) throw(OptionException)  {
+  if(mode == theory::quantifiers::INST_WHEN_PRE_FULL) {
+    throw OptionException(std::string("Mode pre-full for ") + option + " is not supported in this release.");
+  }
+}
+
+theory::quantifiers::LiteralMatchMode OptionsHandler::stringToLiteralMatchMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg ==  "none") {
+    return theory::quantifiers::LITERAL_MATCH_NONE;
+  } else if(optarg ==  "use") {
+    return theory::quantifiers::LITERAL_MATCH_USE;
+  } else if(optarg ==  "agg-predicate") {
+    return theory::quantifiers::LITERAL_MATCH_AGG_PREDICATE;
+  } else if(optarg ==  "agg") {
+    return theory::quantifiers::LITERAL_MATCH_AGG;
+  } else if(optarg ==  "help") {
+    puts(s_literalMatchHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --literal-matching: `") +
+                          optarg + "'.  Try --literal-matching help.");
+  }
+}
+
+void OptionsHandler::checkLiteralMatchMode(std::string option, theory::quantifiers::LiteralMatchMode mode) throw(OptionException) {
+
+}
+
+theory::quantifiers::MbqiMode OptionsHandler::stringToMbqiMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "gen-ev") {
+    return theory::quantifiers::MBQI_GEN_EVAL;
+  } else if(optarg == "none") {
+    return theory::quantifiers::MBQI_NONE;
+  } else if(optarg == "default" || optarg ==  "fmc") {
+    return theory::quantifiers::MBQI_FMC;
+  } else if(optarg == "fmc-interval") {
+    return theory::quantifiers::MBQI_FMC_INTERVAL;
+  } else if(optarg == "abs") {
+    return theory::quantifiers::MBQI_ABS;
+  } else if(optarg == "trust") {
+    return theory::quantifiers::MBQI_TRUST;
+  } else if(optarg == "help") {
+    puts(s_mbqiModeHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --mbqi: `") +
+                          optarg + "'.  Try --mbqi help.");
+  }
+}
+
+
+void OptionsHandler::checkMbqiMode(std::string option, theory::quantifiers::MbqiMode mode) throw(OptionException) {}
+
+
+theory::quantifiers::QcfWhenMode OptionsHandler::stringToQcfWhenMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg ==  "default") {
+    return theory::quantifiers::QCF_WHEN_MODE_DEFAULT;
+  } else if(optarg ==  "last-call") {
+    return theory::quantifiers::QCF_WHEN_MODE_LAST_CALL;
+  } else if(optarg ==  "std") {
+    return theory::quantifiers::QCF_WHEN_MODE_STD;
+  } else if(optarg ==  "std-h") {
+    return theory::quantifiers::QCF_WHEN_MODE_STD_H;
+  } else if(optarg ==  "help") {
+    puts(s_qcfWhenModeHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --quant-cf-when: `") +
+                          optarg + "'.  Try --quant-cf-when help.");
+  }
+}
+
+theory::quantifiers::QcfMode OptionsHandler::stringToQcfMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg ==  "conflict") {
+    return theory::quantifiers::QCF_CONFLICT_ONLY;
+  } else if(optarg ==  "default" || optarg == "prop-eq") {
+    return theory::quantifiers::QCF_PROP_EQ;
+  } else if(optarg == "partial") {
+    return theory::quantifiers::QCF_PARTIAL;
+  } else if(optarg ==  "help") {
+    puts(s_qcfModeHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --quant-cf-mode: `") +
+                          optarg + "'.  Try --quant-cf-mode help.");
+  }
+}
+
+theory::quantifiers::UserPatMode OptionsHandler::stringToUserPatMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "use") {
+    return theory::quantifiers::USER_PAT_MODE_USE;
+  } else if(optarg ==  "default" || optarg == "trust") {
+    return theory::quantifiers::USER_PAT_MODE_TRUST;
+  } else if(optarg == "resort") {
+    return theory::quantifiers::USER_PAT_MODE_RESORT;
+  } else if(optarg == "ignore") {
+    return theory::quantifiers::USER_PAT_MODE_IGNORE;
+  } else if(optarg == "interleave") {
+    return theory::quantifiers::USER_PAT_MODE_INTERLEAVE;
+  } else if(optarg ==  "help") {
+    puts(s_userPatModeHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --user-pat: `") +
+                          optarg + "'.  Try --user-pat help.");
+  }
+}
+
+theory::quantifiers::TriggerSelMode OptionsHandler::stringToTriggerSelMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg ==  "default" || optarg == "min") {
+    return theory::quantifiers::TRIGGER_SEL_MIN;
+  } else if(optarg == "max") {
+    return theory::quantifiers::TRIGGER_SEL_MAX;
+  } else if(optarg == "min-s-max") {
+    return theory::quantifiers::TRIGGER_SEL_MIN_SINGLE_MAX;
+  } else if(optarg == "min-s-all") {
+    return theory::quantifiers::TRIGGER_SEL_MIN_SINGLE_ALL;
+  } else if(optarg == "all") {
+    return theory::quantifiers::TRIGGER_SEL_ALL;
+  } else if(optarg ==  "help") {
+    puts(s_triggerSelModeHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --trigger-sel: `") +
+                          optarg + "'.  Try --trigger-sel help.");
+  }
+}
+
+theory::quantifiers::TriggerActiveSelMode OptionsHandler::stringToTriggerActiveSelMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg ==  "default" || optarg == "all") {
+    return theory::quantifiers::TRIGGER_ACTIVE_SEL_ALL;
+  } else if(optarg == "min") {
+    return theory::quantifiers::TRIGGER_ACTIVE_SEL_MIN;
+  } else if(optarg == "max") {
+    return theory::quantifiers::TRIGGER_ACTIVE_SEL_MAX;
+  } else if(optarg ==  "help") {
+    puts(s_triggerActiveSelModeHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --trigger-active-sel: `") +
+                          optarg + "'.  Try --trigger-active-sel help.");
+  }
+}
+
+theory::quantifiers::PrenexQuantMode OptionsHandler::stringToPrenexQuantMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg== "default" || optarg== "simple" ) {
+    return theory::quantifiers::PRENEX_QUANT_SIMPLE;
+  } else if(optarg == "none") {
+    return theory::quantifiers::PRENEX_QUANT_NONE;
+  } else if(optarg == "dnorm") {
+    return theory::quantifiers::PRENEX_QUANT_DISJ_NORMAL;
+  } else if(optarg == "norm") {
+    return theory::quantifiers::PRENEX_QUANT_NORMAL;
+  } else if(optarg ==  "help") {
+    puts(s_prenexQuantModeHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --prenex-quant: `") +
+                          optarg + "'.  Try --prenex-quant help.");
+  }
+}
+
+theory::quantifiers::CegqiFairMode OptionsHandler::stringToCegqiFairMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "uf-dt-size" ) {
+    return theory::quantifiers::CEGQI_FAIR_UF_DT_SIZE;
+  } else if(optarg == "default" || optarg == "dt-size") {
+    return theory::quantifiers::CEGQI_FAIR_DT_SIZE;
+  } else if(optarg == "dt-height-bound" ){
+    return theory::quantifiers::CEGQI_FAIR_DT_HEIGHT_PRED;
+  //} else if(optarg == "dt-size-bound" ){
+  //  return theory::quantifiers::CEGQI_FAIR_DT_SIZE_PRED;
+  } else if(optarg == "none") {
+    return theory::quantifiers::CEGQI_FAIR_NONE;
+  } else if(optarg ==  "help") {
+    puts(s_cegqiFairModeHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --cegqi-fair: `") +
+                          optarg + "'.  Try --cegqi-fair help.");
+  }
+}
+
+theory::quantifiers::TermDbMode OptionsHandler::stringToTermDbMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "all" ) {
+    return theory::quantifiers::TERM_DB_ALL;
+  } else if(optarg == "relevant") {
+    return theory::quantifiers::TERM_DB_RELEVANT;
+  } else if(optarg ==  "help") {
+    puts(s_termDbModeHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --term-db-mode: `") +
+                          optarg + "'.  Try --term-db-mode help.");
+  }
+}
+
+theory::quantifiers::IteLiftQuantMode OptionsHandler::stringToIteLiftQuantMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "all" ) {
+    return theory::quantifiers::ITE_LIFT_QUANT_MODE_ALL;
+  } else if(optarg == "simple") {
+    return theory::quantifiers::ITE_LIFT_QUANT_MODE_SIMPLE;
+  } else if(optarg == "none") {
+    return theory::quantifiers::ITE_LIFT_QUANT_MODE_NONE;
+  } else if(optarg ==  "help") {
+    puts(s_iteLiftQuantHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --ite-lift-quant: `") +
+                          optarg + "'.  Try --ite-lift-quant help.");
+  }
+}
+
+theory::quantifiers::CegqiSingleInvMode OptionsHandler::stringToCegqiSingleInvMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "none" ) {
+    return theory::quantifiers::CEGQI_SI_MODE_NONE;
+  } else if(optarg == "use" || optarg == "default") {
+    return theory::quantifiers::CEGQI_SI_MODE_USE;
+  } else if(optarg == "all-abort") {
+    return theory::quantifiers::CEGQI_SI_MODE_ALL_ABORT;
+  } else if(optarg == "all") {
+    return theory::quantifiers::CEGQI_SI_MODE_ALL;
+  } else if(optarg ==  "help") {
+    puts(s_cegqiSingleInvHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --cegqi-si: `") +
+                          optarg + "'.  Try --cegqi-si help.");
+  }
+}
+
+theory::quantifiers::SygusInvTemplMode OptionsHandler::stringToSygusInvTemplMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "none" ) {
+    return theory::quantifiers::SYGUS_INV_TEMPL_MODE_NONE;
+  } else if(optarg == "pre") {
+    return theory::quantifiers::SYGUS_INV_TEMPL_MODE_PRE;
+  } else if(optarg == "post") {
+    return theory::quantifiers::SYGUS_INV_TEMPL_MODE_POST;
+  } else if(optarg ==  "help") {
+    puts(s_sygusInvTemplHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --sygus-inv-templ: `") +
+                          optarg + "'.  Try --sygus-inv-templ help.");
+  }
+}
+
+theory::quantifiers::MacrosQuantMode OptionsHandler::stringToMacrosQuantMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "all" ) {
+    return theory::quantifiers::MACROS_QUANT_MODE_ALL;
+  } else if(optarg == "ground") {
+    return theory::quantifiers::MACROS_QUANT_MODE_GROUND;
+  } else if(optarg == "ground-uf") {
+    return theory::quantifiers::MACROS_QUANT_MODE_GROUND_UF;
+  } else if(optarg ==  "help") {
+    puts(s_macrosQuantHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --macros-quant-mode: `") +
+                          optarg + "'.  Try --macros-quant-mode help.");
+  }
+}
+
+theory::quantifiers::QuantDSplitMode OptionsHandler::stringToQuantDSplitMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "none" ) {
+    return theory::quantifiers::QUANT_DSPLIT_MODE_NONE;
+  } else if(optarg == "default") {
+    return theory::quantifiers::QUANT_DSPLIT_MODE_DEFAULT;
+  } else if(optarg == "agg") {
+    return theory::quantifiers::QUANT_DSPLIT_MODE_AGG;
+  } else if(optarg ==  "help") {
+    puts(s_quantDSplitHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --quant-dsplit-mode: `") +
+                          optarg + "'.  Try --quant-dsplit-mode help.");
+  }
+}
+
+theory::quantifiers::QuantRepMode OptionsHandler::stringToQuantRepMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "none" ) {
+    return theory::quantifiers::QUANT_REP_MODE_EE;
+  } else if(optarg == "first" || optarg == "default") {
+    return theory::quantifiers::QUANT_REP_MODE_FIRST;
+  } else if(optarg == "depth") {
+    return theory::quantifiers::QUANT_REP_MODE_DEPTH;
+  } else if(optarg ==  "help") {
+    puts(s_quantRepHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --quant-rep-mode: `") +
+                          optarg + "'.  Try --quant-rep-mode help.");
+  }
+}
+
+
+theory::quantifiers::FmfBoundMinMode OptionsHandler::stringToFmfBoundMinMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "none" ) {
+    return theory::quantifiers::FMF_BOUND_MIN_NONE;
+  } else if(optarg == "int" || optarg == "default") {
+    return theory::quantifiers::FMF_BOUND_MIN_INT_RANGE;
+  } else if(optarg == "setc" || optarg == "default") {
+    return theory::quantifiers::FMF_BOUND_MIN_SET_CARD;
+  } else if(optarg == "all") {
+    return theory::quantifiers::FMF_BOUND_MIN_ALL;
+  } else if(optarg ==  "help") {
+    puts(s_fmfBoundMinModeModeHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --fmf-bound-min-mode: `") +
+                          optarg + "'.  Try --fmf-bound-min-mode help.");
+  }
+}
+
+// theory/bv/options_handlers.h
+void OptionsHandler::abcEnabledBuild(std::string option, bool value) throw(OptionException) {
+#ifndef CVC4_USE_ABC
+  if(value) {
+    std::stringstream ss;
+    ss << "option `" << option << "' requires an abc-enabled build of CVC4; this binary was not built with abc support";
+    throw OptionException(ss.str());
+  }
+#endif /* CVC4_USE_ABC */
+}
+
+void OptionsHandler::abcEnabledBuild(std::string option, std::string value) throw(OptionException) {
+#ifndef CVC4_USE_ABC
+  if(!value.empty()) {
+    std::stringstream ss;
+    ss << "option `" << option << "' requires an abc-enabled build of CVC4; this binary was not built with abc support";
+    throw OptionException(ss.str());
+  }
+#endif /* CVC4_USE_ABC */
+}
+
+void OptionsHandler::satSolverEnabledBuild(std::string option,
+                                           bool value) throw(OptionException) {
+#ifndef CVC4_USE_CRYPTOMINISAT
+  if(value) {
+    std::stringstream ss;
+    ss << "option `" << option << "' requires an cryptominisat-enabled build of CVC4; this binary was not built with cryptominisat support";
+    throw OptionException(ss.str());
+  }
+#endif /* CVC4_USE_CRYPTOMINISAT */
+}
+
+void OptionsHandler::satSolverEnabledBuild(std::string option,
+                                           std::string value) throw(OptionException) {
+#ifndef CVC4_USE_CRYPTOMINISAT
+  if(!value.empty()) {
+    std::stringstream ss;
+    ss << "option `" << option << "' requires an cryptominisat-enabled build of CVC4; this binary was not built with cryptominisat support";
+    throw OptionException(ss.str());
+  }
+#endif /* CVC4_USE_CRYPTOMINISAT */
+}
+
+const std::string OptionsHandler::s_bvSatSolverHelp = "\
+Sat solvers currently supported by the --bv-sat-solver option:\n\
+\n\
+minisat (default)\n\
+\n\
+cryptominisat\n\
+";
+
+theory::bv::SatSolverMode OptionsHandler::stringToSatSolver(std::string option,
+                                                            std::string optarg) throw(OptionException) {
+  if(optarg == "minisat") {
+    return theory::bv::SAT_SOLVER_MINISAT;
+  } else if(optarg == "cryptominisat") {
+    
+    if (options::incrementalSolving() &&
+        options::incrementalSolving.wasSetByUser()) {
+      throw OptionException(std::string("Cryptominsat does not support incremental mode. \n\
+                                         Try --bv-sat-solver=minisat"));
+    }
+
+    if (options::bitblastMode() == theory::bv::BITBLAST_MODE_LAZY &&
+        options::bitblastMode.wasSetByUser()) {
+      throw OptionException(std::string("Cryptominsat does not support lazy bit-blsating. \n\
+                                         Try --bv-sat-solver=minisat"));
+    }
+    if (!options::bitvectorToBool.wasSetByUser()) {
+      options::bitvectorToBool.set(true);
+    }
+
+    // if (!options::bvAbstraction.wasSetByUser() &&
+    //     !options::skolemizeArguments.wasSetByUser()) {
+    //   options::bvAbstraction.set(true);
+    //   options::skolemizeArguments.set(true); 
+    // }
+    return theory::bv::SAT_SOLVER_CRYPTOMINISAT;
+  } else if(optarg == "help") {
+    puts(s_bvSatSolverHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --bv-sat-solver: `") +
+                          optarg + "'.  Try --bv-sat-solver=help.");
+  }
+}
+
+const std::string OptionsHandler::s_bitblastingModeHelp = "\
+Bit-blasting modes currently supported by the --bitblast option:\n\
+\n\
+lazy (default)\n\
++ Separate boolean structure and term reasoning betwen the core\n\
+  SAT solver and the bv SAT solver\n\
+\n\
+eager\n\
++ Bitblast eagerly to bv SAT solver\n\
+";
+
+theory::bv::BitblastMode OptionsHandler::stringToBitblastMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "lazy") {
+    if (!options::bitvectorPropagate.wasSetByUser()) {
+      options::bitvectorPropagate.set(true);
+    }
+    if (!options::bitvectorEqualitySolver.wasSetByUser()) {
+      options::bitvectorEqualitySolver.set(true);
+    }
+    if (!options::bitvectorEqualitySlicer.wasSetByUser()) {
+      if (options::incrementalSolving() ||
+          options::produceModels()) {
+        options::bitvectorEqualitySlicer.set(theory::bv::BITVECTOR_SLICER_OFF);
+      } else {
+        options::bitvectorEqualitySlicer.set(theory::bv::BITVECTOR_SLICER_AUTO);
+      }
+    }
+
+    if (!options::bitvectorInequalitySolver.wasSetByUser()) {
+      options::bitvectorInequalitySolver.set(true);
+    }
+    if (!options::bitvectorAlgebraicSolver.wasSetByUser()) {
+      options::bitvectorAlgebraicSolver.set(true);
+    }
+    return theory::bv::BITBLAST_MODE_LAZY;
+  } else if(optarg == "eager") {
+
+    if (options::incrementalSolving() &&
+        options::incrementalSolving.wasSetByUser()) {
+      throw OptionException(std::string("Eager bit-blasting does not currently support incremental mode. \n\
+                                         Try --bitblast=lazy"));
+    }
+    if (!options::bitvectorToBool.wasSetByUser()) {
+      options::bitvectorToBool.set(true);
+    }
+
+    if (!options::bvAbstraction.wasSetByUser() &&
+        !options::skolemizeArguments.wasSetByUser()) {
+      options::bvAbstraction.set(true);
+      options::skolemizeArguments.set(true);
+    }
+    return theory::bv::BITBLAST_MODE_EAGER;
+  } else if(optarg == "help") {
+    puts(s_bitblastingModeHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --bitblast: `") +
+                          optarg + "'.  Try --bitblast=help.");
+  }
+}
+
+const std::string OptionsHandler::s_bvSlicerModeHelp = "\
+Bit-vector equality slicer modes supported by the --bv-eq-slicer option:\n\
+\n\
+auto (default)\n\
++ Turn slicer on if input has only equalities over core symbols\n\
+\n\
+on\n\
++ Turn slicer on\n\
+\n\
+off\n\
++ Turn slicer off\n\
+";
+
+theory::bv::BvSlicerMode OptionsHandler::stringToBvSlicerMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "auto") {
+    return theory::bv::BITVECTOR_SLICER_AUTO;
+  } else if(optarg == "on") {
+    return theory::bv::BITVECTOR_SLICER_ON;
+  } else if(optarg == "off") {
+    return theory::bv::BITVECTOR_SLICER_OFF;
+  } else if(optarg == "help") {
+    puts(s_bitblastingModeHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --bv-eq-slicer: `") +
+                          optarg + "'.  Try --bv-eq-slicer=help.");
+  }
+}
+
+void OptionsHandler::setBitblastAig(std::string option, bool arg) throw(OptionException) {
+  if(arg) {
+    if(options::bitblastMode.wasSetByUser()) {
+      if(options::bitblastMode() != theory::bv::BITBLAST_MODE_EAGER) {
+        throw OptionException("bitblast-aig must be used with eager bitblaster");
+      }
+    } else {
+      theory::bv::BitblastMode mode = stringToBitblastMode("", "eager");
+      options::bitblastMode.set(mode);
+    }
+    if(!options::bitvectorAigSimplifications.wasSetByUser()) {
+      options::bitvectorAigSimplifications.set("balance;drw");
+    }
+  }
+}
+
+// theory/uf/options_handlers.h
+const std::string OptionsHandler::s_ufssModeHelp = "\
+UF strong solver options currently supported by the --uf-ss option:\n\
+\n\
+full \n\
++ Default, use uf strong solver to find minimal models for uninterpreted sorts.\n\
+\n\
+no-minimal \n\
++ Use uf strong solver to shrink model sizes, but do no enforce minimality.\n\
+\n\
+none \n\
++ Do not use uf strong solver to shrink model sizes. \n\
+\n\
+";
+
+theory::uf::UfssMode OptionsHandler::stringToUfssMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg ==  "default" || optarg == "full" ) {
+    return theory::uf::UF_SS_FULL;
+  } else if(optarg == "no-minimal") {
+    return theory::uf::UF_SS_NO_MINIMAL;
+  } else if(optarg == "none") {
+    return theory::uf::UF_SS_NONE;
+  } else if(optarg ==  "help") {
+    puts(s_ufssModeHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --uf-ss: `") +
+                          optarg + "'.  Try --uf-ss help.");
+  }
+}
+
+
+
+// theory/options_handlers.h
+const std::string OptionsHandler::s_theoryOfModeHelp = "\
+TheoryOf modes currently supported by the --theoryof-mode option:\n\
+\n\
+type (default) \n\
++ type variables, constants and equalities by type\n\
+\n\
+term \n\
++ type variables as uninterpreted, equalities by the parametric theory\n\
+";
+
+theory::TheoryOfMode OptionsHandler::stringToTheoryOfMode(std::string option, std::string optarg) {
+  if(optarg == "type") {
+    return theory::THEORY_OF_TYPE_BASED;
+  } else if(optarg == "term") {
+    return theory::THEORY_OF_TERM_BASED;
+  } else if(optarg == "help") {
+    puts(s_theoryOfModeHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --theoryof-mode: `") +
+                          optarg + "'.  Try --theoryof-mode help.");
+  }
+}
+
+// theory/options_handlers.h
+std::string OptionsHandler::handleUseTheoryList(std::string option, std::string optarg) {
+  std::string currentList = options::useTheoryList();
+  if(currentList.empty()){
+    return optarg;
+  } else {
+    return currentList +','+ optarg;
+  }
+}
+
+void OptionsHandler::notifyUseTheoryList(std::string option) {
+  d_options->d_useTheoryListListeners.notify();
+}
+
+
+
+// printer/options_handlers.h
+const std::string OptionsHandler::s_modelFormatHelp = "\
+Model format modes currently supported by the --model-format option:\n\
+\n\
+default \n\
++ Print model as expressions in the output language format.\n\
+\n\
+table\n\
++ Print functional expressions over finite domains in a table format.\n\
+";
+
+const std::string OptionsHandler::s_instFormatHelp = "\
+Inst format modes currently supported by the --model-format option:\n\
+\n\
+default \n\
++ Print instantiations as a list in the output language format.\n\
+\n\
+szs\n\
++ Print instantiations as SZS compliant proof.\n\
+";
+
+ModelFormatMode OptionsHandler::stringToModelFormatMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "default") {
+    return MODEL_FORMAT_MODE_DEFAULT;
+  } else if(optarg == "table") {
+    return MODEL_FORMAT_MODE_TABLE;
+  } else if(optarg == "help") {
+    puts(s_modelFormatHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --model-format: `") +
+                          optarg + "'.  Try --model-format help.");
+  }
+}
+
+InstFormatMode OptionsHandler::stringToInstFormatMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "default") {
+    return INST_FORMAT_MODE_DEFAULT;
+  } else if(optarg == "szs") {
+    return INST_FORMAT_MODE_SZS;
+  } else if(optarg == "help") {
+    puts(s_instFormatHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --inst-format: `") +
+                          optarg + "'.  Try --inst-format help.");
+  }
+}
+
+
+// decision/options_handlers.h
+const std::string OptionsHandler::s_decisionModeHelp = "\
+Decision modes currently supported by the --decision option:\n\
+\n\
+internal (default)\n\
++ Use the internal decision heuristics of the SAT solver\n\
+\n\
+justification\n\
++ An ATGP-inspired justification heuristic\n\
+\n\
+justification-stoponly\n\
++ Use the justification heuristic only to stop early, not for decisions\n\
+";
+
+decision::DecisionMode OptionsHandler::stringToDecisionMode(std::string option, std::string optarg) throw(OptionException) {
+  options::decisionStopOnly.set(false);
+
+  if(optarg == "internal") {
+    return decision::DECISION_STRATEGY_INTERNAL;
+  } else if(optarg == "justification") {
+    return decision::DECISION_STRATEGY_JUSTIFICATION;
+  } else if(optarg == "justification-stoponly") {
+    options::decisionStopOnly.set(true);
+    return decision::DECISION_STRATEGY_JUSTIFICATION;
+  } else if(optarg == "help") {
+    puts(s_decisionModeHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --decision: `") +
+                          optarg + "'.  Try --decision help.");
+  }
+}
+
+decision::DecisionWeightInternal OptionsHandler::stringToDecisionWeightInternal(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "off")
+    return decision::DECISION_WEIGHT_INTERNAL_OFF;
+  else if(optarg == "max")
+    return decision::DECISION_WEIGHT_INTERNAL_MAX;
+  else if(optarg == "sum")
+    return decision::DECISION_WEIGHT_INTERNAL_SUM;
+  else if(optarg == "usr1")
+    return decision::DECISION_WEIGHT_INTERNAL_USR1;
+  else
+    throw OptionException(std::string("--decision-weight-internal must be off, max or sum."));
+}
+
+
+// smt/options_handlers.h
+const std::string OptionsHandler::s_simplificationHelp = "\
+Simplification modes currently supported by the --simplification option:\n\
+\n\
+batch (default) \n\
++ save up all ASSERTions; run nonclausal simplification and clausal\n\
+  (MiniSat) propagation for all of them only after reaching a querying command\n\
+  (CHECKSAT or QUERY or predicate SUBTYPE declaration)\n\
+\n\
+none\n\
++ do not perform nonclausal simplification\n\
+";
+
+
+
+SimplificationMode OptionsHandler::stringToSimplificationMode(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "batch") {
+    return SIMPLIFICATION_MODE_BATCH;
+  } else if(optarg == "none") {
+    return SIMPLIFICATION_MODE_NONE;
+  } else if(optarg == "help") {
+    puts(s_simplificationHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --simplification: `") +
+                          optarg + "'.  Try --simplification help.");
+  }
+}
+
+
+void OptionsHandler::setProduceAssertions(std::string option, bool value) throw() {
+  options::produceAssertions.set(value);
+  options::interactiveMode.set(value);
+}
+
+
+void OptionsHandler::proofEnabledBuild(std::string option, bool value) throw(OptionException) {
+#ifndef CVC4_PROOF
+  if(value) {
+    std::stringstream ss;
+    ss << "option `" << option << "' requires a proofs-enabled build of CVC4; this binary was not built with proof support";
+    throw OptionException(ss.str());
+  }
+#endif /* CVC4_PROOF */
+}
+
+void OptionsHandler::notifyDumpToFile(std::string option) {
+  d_options->d_dumpToFileListeners.notify();
+}
+
+
+void OptionsHandler::notifySetRegularOutputChannel(std::string option) {
+  d_options->d_setRegularChannelListeners.notify();
+}
+
+void OptionsHandler::notifySetDiagnosticOutputChannel(std::string option) {
+  d_options->d_setDiagnosticChannelListeners.notify();
+}
+
+
+std::string OptionsHandler::checkReplayFilename(std::string option, std::string optarg) {
+#ifdef CVC4_REPLAY
+  if(optarg == "") {
+    throw OptionException (std::string("Bad file name for --replay"));
+  } else {
+    return optarg;
+  }
+#else /* CVC4_REPLAY */
+  throw OptionException("The replay feature was disabled in this build of CVC4.");
+#endif /* CVC4_REPLAY */
+}
+
+void OptionsHandler::notifySetReplayLogFilename(std::string option) {
+  d_options->d_setReplayFilenameListeners.notify();
+}
+
+void OptionsHandler::statsEnabledBuild(std::string option, bool value) throw(OptionException) {
+#ifndef CVC4_STATISTICS_ON
+  if(value) {
+    std::stringstream ss;
+    ss << "option `" << option << "' requires a statistics-enabled build of CVC4; this binary was not built with statistics support";
+    throw OptionException(ss.str());
+  }
+#endif /* CVC4_STATISTICS_ON */
+}
+
+void OptionsHandler::threadN(std::string option) {
+  throw OptionException(option + " is not a real option by itself.  Use e.g. --thread0=\"--random-seed=10 --random-freq=0.02\" --thread1=\"--random-seed=20 --random-freq=0.05\"");
+}
+
+void OptionsHandler::notifyDumpMode(std::string option) throw(OptionException) {
+  d_options->d_setDumpModeListeners.notify();
+}
+
+
+// expr/options_handlers.h
+void OptionsHandler::setDefaultExprDepthPredicate(std::string option, int depth) {
+  if(depth < -1) {
+    throw OptionException("--default-expr-depth requires a positive argument, or -1.");
+  }
+}
+
+void OptionsHandler::setDefaultDagThreshPredicate(std::string option, int dag) {
+  if(dag < 0) {
+    throw OptionException("--default-dag-thresh requires a nonnegative argument.");
+  }
+}
+
+void OptionsHandler::notifySetDefaultExprDepth(std::string option) {
+  d_options->d_setDefaultExprDepthListeners.notify();
+}
+
+void OptionsHandler::notifySetDefaultDagThresh(std::string option) {
+  d_options->d_setDefaultDagThreshListeners.notify();
+}
+
+void OptionsHandler::notifySetPrintExprTypes(std::string option) {
+  d_options->d_setPrintExprTypesListeners.notify();
+}
+
+
+// main/options_handlers.h
+void OptionsHandler::showConfiguration(std::string option) {
+  fputs(Configuration::about().c_str(), stdout);
+  printf("\n");
+  printf("version    : %s\n", Configuration::getVersionString().c_str());
+  if(Configuration::isGitBuild()) {
+    const char* branchName = Configuration::getGitBranchName();
+    if(*branchName == '\0') {
+      branchName = "-";
+    }
+    printf("scm        : git [%s %s%s]\n",
+           branchName,
+           std::string(Configuration::getGitCommit()).substr(0, 8).c_str(),
+           Configuration::hasGitModifications() ?
+             " (with modifications)" : "");
+  } else if(Configuration::isSubversionBuild()) {
+    printf("scm        : svn [%s r%u%s]\n",
+           Configuration::getSubversionBranchName(),
+           Configuration::getSubversionRevision(),
+           Configuration::hasSubversionModifications() ?
+             " (with modifications)" : "");
+  } else {
+    printf("scm        : no\n");
+  }
+  printf("\n");
+  printf("library    : %u.%u.%u\n",
+         Configuration::getVersionMajor(),
+         Configuration::getVersionMinor(),
+         Configuration::getVersionRelease());
+  printf("\n");
+  printf("debug code : %s\n", Configuration::isDebugBuild() ? "yes" : "no");
+  printf("statistics : %s\n", Configuration::isStatisticsBuild() ? "yes" : "no");
+  printf("replay     : %s\n", Configuration::isReplayBuild() ? "yes" : "no");
+  printf("tracing    : %s\n", Configuration::isTracingBuild() ? "yes" : "no");
+  printf("dumping    : %s\n", Configuration::isDumpingBuild() ? "yes" : "no");
+  printf("muzzled    : %s\n", Configuration::isMuzzledBuild() ? "yes" : "no");
+  printf("assertions : %s\n", Configuration::isAssertionBuild() ? "yes" : "no");
+  printf("proof      : %s\n", Configuration::isProofBuild() ? "yes" : "no");
+  printf("coverage   : %s\n", Configuration::isCoverageBuild() ? "yes" : "no");
+  printf("profiling  : %s\n", Configuration::isProfilingBuild() ? "yes" : "no");
+  printf("competition: %s\n", Configuration::isCompetitionBuild() ? "yes" : "no");
+  printf("\n");
+  printf("cudd       : %s\n", Configuration::isBuiltWithCudd() ? "yes" : "no");
+  printf("cln        : %s\n", Configuration::isBuiltWithCln() ? "yes" : "no");
+  printf("gmp        : %s\n", Configuration::isBuiltWithGmp() ? "yes" : "no");
+  printf("glpk       : %s\n", Configuration::isBuiltWithGlpk() ? "yes" : "no");
+  printf("abc        : %s\n", Configuration::isBuiltWithAbc() ? "yes" : "no");
+  printf("readline   : %s\n", Configuration::isBuiltWithReadline() ? "yes" : "no");
+  printf("tls        : %s\n", Configuration::isBuiltWithTlsSupport() ? "yes" : "no");
+  exit(0);
+}
+
+void OptionsHandler::showDebugTags(std::string option) {
+  if(Configuration::isDebugBuild() && Configuration::isTracingBuild()) {
+    printf("available tags:");
+    unsigned ntags = Configuration::getNumDebugTags();
+    char const* const* tags = Configuration::getDebugTags();
+    for(unsigned i = 0; i < ntags; ++ i) {
+      printf(" %s", tags[i]);
+    }
+    printf("\n");
+  } else if(! Configuration::isDebugBuild()) {
+    throw OptionException("debug tags not available in non-debug builds");
+  } else {
+    throw OptionException("debug tags not available in non-tracing builds");
+  }
+  exit(0);
+}
+
+void OptionsHandler::showTraceTags(std::string option) {
+  if(Configuration::isTracingBuild()) {
+    printf("available tags:");
+    unsigned ntags = Configuration::getNumTraceTags();
+    char const* const* tags = Configuration::getTraceTags();
+    for (unsigned i = 0; i < ntags; ++ i) {
+      printf(" %s", tags[i]);
+    }
+    printf("\n");
+  } else {
+    throw OptionException("trace tags not available in non-tracing build");
+  }
+  exit(0);
+}
+
+
+OutputLanguage OptionsHandler::stringToOutputLanguage(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "help") {
+    options::languageHelp.set(true);
+    return language::output::LANG_AUTO;
+  }
+
+  try {
+    return language::toOutputLanguage(optarg);
+  } catch(OptionException& oe) {
+    throw OptionException("Error in " + option + ": " + oe.getMessage() +
+                          "\nTry --output-language help");
+  }
+
+  Unreachable();
+}
+
+InputLanguage OptionsHandler::stringToInputLanguage(std::string option, std::string optarg) throw(OptionException) {
+  if(optarg == "help") {
+    options::languageHelp.set(true);
+    return language::input::LANG_AUTO;
+  }
+
+  try {
+    return language::toInputLanguage(optarg);
+  } catch(OptionException& oe) {
+    throw OptionException("Error in " + option + ": " + oe.getMessage() + "\nTry --language help");
+  }
+
+  Unreachable();
+}
+
+/* options/base_options_handlers.h */
+void OptionsHandler::setVerbosity(std::string option, int value) throw(OptionException) {
+  if(Configuration::isMuzzledBuild()) {
+    DebugChannel.setStream(&CVC4::null_os);
+    TraceChannel.setStream(&CVC4::null_os);
+    NoticeChannel.setStream(&CVC4::null_os);
+    ChatChannel.setStream(&CVC4::null_os);
+    MessageChannel.setStream(&CVC4::null_os);
+    WarningChannel.setStream(&CVC4::null_os);
+  } else {
+    if(value < 2) {
+      ChatChannel.setStream(&CVC4::null_os);
+    } else {
+      ChatChannel.setStream(&std::cout);
+    }
+    if(value < 1) {
+      NoticeChannel.setStream(&CVC4::null_os);
+    } else {
+      NoticeChannel.setStream(&std::cout);
+    }
+    if(value < 0) {
+      MessageChannel.setStream(&CVC4::null_os);
+      WarningChannel.setStream(&CVC4::null_os);
+    } else {
+      MessageChannel.setStream(&std::cout);
+      WarningChannel.setStream(&std::cerr);
+    }
+  }
+}
+
+void OptionsHandler::increaseVerbosity(std::string option) {
+  options::verbosity.set(options::verbosity() + 1);
+  setVerbosity(option, options::verbosity());
+}
+
+void OptionsHandler::decreaseVerbosity(std::string option) {
+  options::verbosity.set(options::verbosity() - 1);
+  setVerbosity(option, options::verbosity());
+}
+
+
+void OptionsHandler::addTraceTag(std::string option, std::string optarg) {
+  if(Configuration::isTracingBuild()) {
+    if(!Configuration::isTraceTag(optarg.c_str())) {
+
+      if(optarg == "help") {
+        printf("available tags:");
+        unsigned ntags = Configuration::getNumTraceTags();
+        char const* const* tags = Configuration::getTraceTags();
+        for(unsigned i = 0; i < ntags; ++ i) {
+          printf(" %s", tags[i]);
+        }
+        printf("\n");
+        exit(0);
+      }
+
+      throw OptionException(std::string("trace tag ") + optarg +
+                            std::string(" not available.") +
+                            suggestTags(Configuration::getTraceTags(), optarg) );
+    }
+  } else {
+    throw OptionException("trace tags not available in non-tracing builds");
+  }
+  Trace.on(optarg);
+}
+
+void OptionsHandler::addDebugTag(std::string option, std::string optarg) {
+  if(Configuration::isDebugBuild() && Configuration::isTracingBuild()) {
+    if(!Configuration::isDebugTag(optarg.c_str()) &&
+       !Configuration::isTraceTag(optarg.c_str())) {
+
+      if(optarg == "help") {
+        printf("available tags:");
+        unsigned ntags = Configuration::getNumDebugTags();
+        char const* const* tags = Configuration::getDebugTags();
+        for(unsigned i = 0; i < ntags; ++ i) {
+          printf(" %s", tags[i]);
+        }
+        printf("\n");
+        exit(0);
+      }
+
+      throw OptionException(std::string("debug tag ") + optarg +
+                            std::string(" not available.") +
+                            suggestTags(Configuration::getDebugTags(), optarg, Configuration::getTraceTags()) );
+    }
+  } else if(! Configuration::isDebugBuild()) {
+    throw OptionException("debug tags not available in non-debug builds");
+  } else {
+    throw OptionException("debug tags not available in non-tracing builds");
+  }
+  Debug.on(optarg);
+  Trace.on(optarg);
+}
+
+
+
+
+std::string OptionsHandler::suggestTags(char const* const* validTags, std::string inputTag,
+                                           char const* const* additionalTags)
+{
+  DidYouMean didYouMean;
+
+  const char* opt;
+  for(size_t i = 0; (opt = validTags[i]) != NULL; ++i) {
+    didYouMean.addWord(validTags[i]);
+  }
+  if(additionalTags != NULL) {
+    for(size_t i = 0; (opt = additionalTags[i]) != NULL; ++i) {
+      didYouMean.addWord(additionalTags[i]);
+    }
+  }
+
+  return  didYouMean.getMatchAsString(inputTag);
+}
+
+
+
+
+}/* CVC4::options namespace */
+}/* CVC4 namespace */
diff --git a/src/options/options_handler.h b/src/options/options_handler.h
new file mode 100644
index 0000000..6721eaa
--- /dev/null
+++ b/src/options/options_handler.h
@@ -0,0 +1,235 @@
+/*********************                                                        */
+/*! \file options_handler.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Interface for custom handlers and predicates options.
+ **
+ ** Interface for custom handlers and predicates options.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__OPTIONS_HANDLER_H
+#define __CVC4__OPTIONS__OPTIONS_HANDLER_H
+
+#include <ostream>
+#include <string>
+
+#include "base/modal_exception.h"
+#include "options/arith_heuristic_pivot_rule.h"
+#include "options/arith_propagation_mode.h"
+#include "options/arith_unate_lemma_mode.h"
+#include "options/base_handlers.h"
+#include "options/bv_bitblast_mode.h"
+#include "options/decision_mode.h"
+#include "options/language.h"
+#include "options/option_exception.h"
+#include "options/options.h"
+#include "options/printer_modes.h"
+#include "options/quantifiers_modes.h"
+#include "options/simplification_mode.h"
+#include "options/theoryof_mode.h"
+#include "options/ufss_mode.h"
+
+namespace CVC4 {
+namespace options {
+
+class OptionsHandler {
+public:
+  OptionsHandler(Options* options);
+  virtual ~OptionsHandler() {}
+
+  void unsignedGreater0(const std::string& option, unsigned value) {
+    options::greater(0)(option, value);
+  }
+
+  void unsignedLessEqual2(const std::string& option, unsigned value) {
+    options::less_equal(2)(option, value);
+  }
+
+  void doubleGreaterOrEqual0(const std::string& option, double value) {
+    options::greater_equal(0.0)(option, value);
+  }
+
+  void doubleLessOrEqual1(const std::string& option, double value) {
+    options::less_equal(1.0)(option, value);
+  }
+
+  // DONE
+  // decision/options_handlers.h
+  // expr/options_handlers.h
+  // main/options_handlers.h
+  // options/base_options_handlers.h
+  // printer/options_handlers.h
+  // smt/options_handlers.h
+  // theory/options_handlers.h
+  // theory/booleans/options_handlers.h
+  // theory/uf/options_handlers.h
+  // theory/bv/options_handlers.h
+  // theory/quantifiers/options_handlers.h
+  // theory/arith/options_handlers.h
+
+
+  // theory/arith/options_handlers.h
+  ArithUnateLemmaMode stringToArithUnateLemmaMode(std::string option, std::string optarg) throw(OptionException);
+  ArithPropagationMode stringToArithPropagationMode(std::string option, std::string optarg) throw(OptionException);
+  ErrorSelectionRule stringToErrorSelectionRule(std::string option, std::string optarg) throw(OptionException);
+
+  // theory/quantifiers/options_handlers.h
+  theory::quantifiers::InstWhenMode stringToInstWhenMode(std::string option, std::string optarg) throw(OptionException);
+  void checkInstWhenMode(std::string option, theory::quantifiers::InstWhenMode mode) throw(OptionException);
+  theory::quantifiers::LiteralMatchMode stringToLiteralMatchMode(std::string option, std::string optarg) throw(OptionException);
+  void checkLiteralMatchMode(std::string option, theory::quantifiers::LiteralMatchMode mode) throw(OptionException);
+  theory::quantifiers::MbqiMode stringToMbqiMode(std::string option, std::string optarg) throw(OptionException);
+  void checkMbqiMode(std::string option, theory::quantifiers::MbqiMode mode) throw(OptionException);
+  theory::quantifiers::QcfWhenMode stringToQcfWhenMode(std::string option, std::string optarg) throw(OptionException);
+  theory::quantifiers::QcfMode stringToQcfMode(std::string option, std::string optarg) throw(OptionException);
+  theory::quantifiers::UserPatMode stringToUserPatMode(std::string option, std::string optarg) throw(OptionException);
+  theory::quantifiers::TriggerSelMode stringToTriggerSelMode(std::string option, std::string optarg) throw(OptionException);
+  theory::quantifiers::TriggerActiveSelMode stringToTriggerActiveSelMode(std::string option, std::string optarg) throw(OptionException);
+  theory::quantifiers::PrenexQuantMode stringToPrenexQuantMode(std::string option, std::string optarg) throw(OptionException);
+  theory::quantifiers::CegqiFairMode stringToCegqiFairMode(std::string option, std::string optarg) throw(OptionException);
+  theory::quantifiers::TermDbMode stringToTermDbMode(std::string option, std::string optarg) throw(OptionException);
+  theory::quantifiers::IteLiftQuantMode stringToIteLiftQuantMode(std::string option, std::string optarg) throw(OptionException);
+  theory::quantifiers::CegqiSingleInvMode stringToCegqiSingleInvMode(std::string option, std::string optarg) throw(OptionException);
+  theory::quantifiers::SygusInvTemplMode stringToSygusInvTemplMode(std::string option, std::string optarg) throw(OptionException);
+  theory::quantifiers::MacrosQuantMode stringToMacrosQuantMode(std::string option, std::string optarg) throw(OptionException);
+  theory::quantifiers::QuantDSplitMode stringToQuantDSplitMode(std::string option, std::string optarg) throw(OptionException);
+  theory::quantifiers::QuantRepMode stringToQuantRepMode(std::string option, std::string optarg) throw(OptionException);
+  theory::quantifiers::FmfBoundMinMode stringToFmfBoundMinMode(std::string option, std::string optarg) throw(OptionException);
+
+  // theory/bv/options_handlers.h
+  void abcEnabledBuild(std::string option, bool value) throw(OptionException);
+  void abcEnabledBuild(std::string option, std::string value) throw(OptionException);
+  void satSolverEnabledBuild(std::string option, bool value) throw(OptionException);
+  void satSolverEnabledBuild(std::string option, std::string optarg) throw(OptionException);
+
+  theory::bv::BitblastMode stringToBitblastMode(std::string option, std::string optarg) throw(OptionException);
+  theory::bv::BvSlicerMode stringToBvSlicerMode(std::string option, std::string optarg) throw(OptionException);
+  void setBitblastAig(std::string option, bool arg) throw(OptionException);
+
+  theory::bv::SatSolverMode stringToSatSolver(std::string option, std::string optarg) throw(OptionException);
+    
+  // theory/uf/options_handlers.h
+  theory::uf::UfssMode stringToUfssMode(std::string option, std::string optarg) throw(OptionException);
+
+  // theory/options_handlers.h
+  theory::TheoryOfMode stringToTheoryOfMode(std::string option, std::string optarg);
+  void notifyUseTheoryList(std::string option);
+  std::string handleUseTheoryList(std::string option, std::string optarg);
+
+
+  // printer/options_handlers.h
+  ModelFormatMode stringToModelFormatMode(std::string option, std::string optarg) throw(OptionException);
+  InstFormatMode stringToInstFormatMode(std::string option, std::string optarg) throw(OptionException);
+
+  // decision/options_handlers.h
+  decision::DecisionMode stringToDecisionMode(std::string option, std::string optarg) throw(OptionException);
+  decision::DecisionWeightInternal stringToDecisionWeightInternal(std::string option, std::string optarg) throw(OptionException);
+
+
+  /* smt/options_handlers.h */
+  void notifyForceLogic(const std::string& option);
+  void notifyBeforeSearch(const std::string& option) throw(ModalException);
+  void notifyDumpMode(std::string option) throw(OptionException);
+  SimplificationMode stringToSimplificationMode(std::string option, std::string optarg) throw(OptionException);
+  void setProduceAssertions(std::string option, bool value) throw();
+  void proofEnabledBuild(std::string option, bool value) throw(OptionException);
+  void notifyDumpToFile(std::string option);
+  void notifySetRegularOutputChannel(std::string option);
+  void notifySetDiagnosticOutputChannel(std::string option);
+  std::string checkReplayFilename(std::string option, std::string optarg);
+  void notifySetReplayLogFilename(std::string option);
+
+  void statsEnabledBuild(std::string option, bool value) throw(OptionException);
+
+  unsigned long tlimitHandler(std::string option, std::string optarg) throw(OptionException);
+  unsigned long tlimitPerHandler(std::string option, std::string optarg) throw(OptionException);
+  unsigned long rlimitHandler(std::string option, std::string optarg) throw(OptionException);
+  unsigned long rlimitPerHandler(std::string option, std::string optarg) throw(OptionException);
+
+  void notifyTlimit(const std::string& option);
+  void notifyTlimitPer(const std::string& option);
+  void notifyRlimit(const std::string& option);
+  void notifyRlimitPer(const std::string& option);
+
+
+  /* expr/options_handlers.h */
+  void setDefaultExprDepthPredicate(std::string option, int depth);
+  void setDefaultDagThreshPredicate(std::string option, int dag);
+  void notifySetDefaultExprDepth(std::string option);
+  void notifySetDefaultDagThresh(std::string option);
+  void notifySetPrintExprTypes(std::string option);
+
+  /* main/options_handlers.h */
+  void showConfiguration(std::string option);
+  void showDebugTags(std::string option);
+  void showTraceTags(std::string option);
+  void threadN(std::string option);
+
+  /* options/base_options_handlers.h */
+  void setVerbosity(std::string option, int value) throw(OptionException);
+  void increaseVerbosity(std::string option);
+  void decreaseVerbosity(std::string option);
+  OutputLanguage stringToOutputLanguage(std::string option, std::string optarg) throw(OptionException);
+  InputLanguage stringToInputLanguage(std::string option, std::string optarg) throw(OptionException);
+  void addTraceTag(std::string option, std::string optarg);
+  void addDebugTag(std::string option, std::string optarg);
+  void notifyPrintSuccess(std::string option);
+
+ private:
+
+  /* Helper utilities */
+  static std::string suggestTags(char const* const* validTags, std::string inputTag,
+                                 char const* const* additionalTags = NULL);
+
+  /** Pointer to the containing Options object.*/
+  Options* d_options;
+
+  /* Help strings */
+  static const std::string s_bitblastingModeHelp;
+  static const std::string s_bvSatSolverHelp;
+  static const std::string s_booleanTermConversionModeHelp;
+  static const std::string s_bvSlicerModeHelp;
+  static const std::string s_cegqiFairModeHelp;
+  static const std::string s_decisionModeHelp;
+  static const std::string s_instFormatHelp ;
+  static const std::string s_instWhenHelp;
+  static const std::string s_iteLiftQuantHelp;
+  static const std::string s_literalMatchHelp;
+  static const std::string s_macrosQuantHelp;
+  static const std::string s_quantDSplitHelp;
+  static const std::string s_quantRepHelp;
+  static const std::string s_mbqiModeHelp;
+  static const std::string s_modelFormatHelp;
+  static const std::string s_prenexQuantModeHelp;
+  static const std::string s_qcfModeHelp;
+  static const std::string s_qcfWhenModeHelp;
+  static const std::string s_simplificationHelp;
+  static const std::string s_cegqiSingleInvHelp;
+  static const std::string s_sygusInvTemplHelp;
+  static const std::string s_termDbModeHelp;
+  static const std::string s_theoryOfModeHelp;
+  static const std::string s_triggerSelModeHelp;
+  static const std::string s_triggerActiveSelModeHelp;
+  static const std::string s_ufssModeHelp;
+  static const std::string s_userPatModeHelp;
+  static const std::string s_fmfBoundMinModeModeHelp;
+  static const std::string s_errorSelectionRulesHelp;
+  static const std::string s_arithPropagationModeHelp;
+  static const std::string s_arithUnateLemmasHelp;
+
+}; /* class OptionHandler */
+
+
+}/* CVC4::options namespace */
+}/* CVC4 namespace */
+
+#endif /*  __CVC4__OPTIONS__OPTIONS_HANDLER_H */
diff --git a/src/options/options_holder_template.h b/src/options/options_holder_template.h
new file mode 100644
index 0000000..f33656e
--- /dev/null
+++ b/src/options/options_holder_template.h
@@ -0,0 +1,40 @@
+/*********************                                                        */
+/*! \file options_holder_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Global (command-line, set-option, ...) parameters for SMT
+ **
+ ** Global (command-line, set-option, ...) parameters for SMT.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__OPTIONS_HOLDER_H
+#define __CVC4__OPTIONS__OPTIONS_HOLDER_H
+
+${include_all_option_headers}
+
+#line 25 "${template}"
+
+namespace CVC4 {
+namespace options {
+
+struct OptionsHolder {
+  OptionsHolder();
+${all_modules_contributions}
+
+#line 34 "${template}"
+
+};/* struct OptionsHolder */
+
+}/* CVC4::options namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__OPTIONS_HOLDER_H */
diff --git a/src/options/options_public_functions.cpp b/src/options/options_public_functions.cpp
new file mode 100644
index 0000000..111b548
--- /dev/null
+++ b/src/options/options_public_functions.cpp
@@ -0,0 +1,322 @@
+/*********************                                                        */
+/*! \file options_public_functions.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Definitions of public facing interface functions for Options.
+ **
+ ** Definitions of public facing interface functions for Options. These are
+ ** all 1 line wrappers for Options::get<T>, Options::set<T>, and
+ ** Options::wasSetByUser<T> for different option types T.
+ **/
+
+#include "options.h"
+
+#include <fstream>
+#include <ostream>
+#include <string>
+#include <vector>
+
+#include "base/listener.h"
+#include "base/modal_exception.h"
+#include "base/tls.h"
+#include "options/base_options.h"
+#include "options/language.h"
+#include "options/main_options.h"
+#include "options/parser_options.h"
+#include "options/printer_modes.h"
+#include "options/printer_options.h"
+#include "options/option_exception.h"
+#include "options/smt_options.h"
+#include "options/quantifiers_options.h"
+
+namespace CVC4 {
+
+// Get accessor functions.
+InputLanguage Options::getInputLanguage() const {
+  return (*this)[options::inputLanguage];
+}
+
+InstFormatMode Options::getInstFormatMode() const {
+  return (*this)[options::instFormatMode];
+}
+
+OutputLanguage Options::getOutputLanguage() const {
+  return (*this)[options::outputLanguage];
+}
+
+bool Options::getCheckProofs() const{
+  return (*this)[options::checkProofs];
+}
+
+bool Options::getContinuedExecution() const{
+  return (*this)[options::continuedExecution];
+}
+
+bool Options::getDumpInstantiations() const{
+  return (*this)[options::dumpInstantiations];
+}
+
+bool Options::getDumpModels() const{
+  return (*this)[options::dumpModels];
+}
+
+bool Options::getDumpProofs() const{
+  return (*this)[options::dumpProofs];
+}
+
+bool Options::getDumpSynth() const{
+  return (*this)[options::dumpSynth];
+}
+
+bool Options::getDumpUnsatCores() const{
+  return (*this)[options::dumpUnsatCores];
+}
+
+bool Options::getEarlyExit() const{
+  return (*this)[options::earlyExit];
+}
+
+bool Options::getFallbackSequential() const{
+  return (*this)[options::fallbackSequential];
+}
+
+bool Options::getFilesystemAccess() const{
+  return (*this)[options::filesystemAccess];
+}
+
+bool Options::getForceNoLimitCpuWhileDump() const{
+  return (*this)[options::forceNoLimitCpuWhileDump];
+}
+
+bool Options::getHelp() const{
+  return (*this)[options::help];
+}
+
+bool Options::getIncrementalParallel() const{
+  return (*this)[options::incrementalParallel];
+}
+
+bool Options::getIncrementalSolving() const{
+  return (*this)[options::incrementalSolving];
+}
+
+bool Options::getInteractive() const{
+  return (*this)[options::interactive];
+}
+
+bool Options::getInteractivePrompt() const{
+  return (*this)[options::interactivePrompt];
+}
+
+bool Options::getLanguageHelp() const{
+  return (*this)[options::languageHelp];
+}
+
+bool Options::getMemoryMap() const{
+  return (*this)[options::memoryMap];
+}
+
+bool Options::getParseOnly() const{
+  return (*this)[options::parseOnly];
+}
+
+bool Options::getProduceModels() const{
+  return (*this)[options::produceModels];
+}
+
+bool Options::getProof() const{
+  return (*this)[options::proof];
+}
+
+bool Options::getSegvSpin() const{
+  return (*this)[options::segvSpin];
+}
+
+bool Options::getSemanticChecks() const{
+  return (*this)[options::semanticChecks];
+}
+
+bool Options::getStatistics() const{
+  return (*this)[options::statistics];
+}
+
+bool Options::getStatsEveryQuery() const{
+  return (*this)[options::statsEveryQuery];
+}
+
+bool Options::getStatsHideZeros() const{
+  return (*this)[options::statsHideZeros];
+}
+
+bool Options::getStrictParsing() const{
+  return (*this)[options::strictParsing];
+}
+
+int Options::getTearDownIncremental() const{
+  return (*this)[options::tearDownIncremental];
+}
+
+bool Options::getVersion() const{
+  return (*this)[options::version];
+}
+
+bool Options::getWaitToJoin() const{
+  return (*this)[options::waitToJoin];
+}
+
+const std::string& Options::getForceLogicString() const{
+  return (*this)[options::forceLogicString];
+}
+
+const std::vector<std::string>& Options::getThreadArgv() const{
+  return (*this)[options::threadArgv];
+}
+
+int Options::getSharingFilterByLength() const{
+  return (*this)[options::sharingFilterByLength];
+}
+
+int Options::getThreadId() const{
+  return (*this)[options::thread_id];
+}
+
+int Options::getVerbosity() const{
+  return (*this)[options::verbosity];
+}
+
+std::istream* Options::getIn() const{
+  return (*this)[options::in];
+}
+
+std::ostream* Options::getErr(){
+  return (*this)[options::err];
+}
+
+std::ostream* Options::getOut(){
+  return (*this)[options::out];
+}
+
+std::ostream* Options::getOutConst() const{
+  // #warning "Remove Options::getOutConst"
+  return (*this)[options::out];
+}
+
+std::string Options::getBinaryName() const{
+  return (*this)[options::binary_name];
+}
+
+std::string Options::getReplayInputFilename() const{
+  return (*this)[options::replayInputFilename];
+}
+
+unsigned Options::getParseStep() const{
+  return (*this)[options::parseStep];
+}
+
+unsigned Options::getThreadStackSize() const{
+  return (*this)[options::threadStackSize];
+}
+
+unsigned Options::getThreads() const{
+  return (*this)[options::threads];
+}
+
+int Options::currentGetSharingFilterByLength() {
+  return current()->getSharingFilterByLength();
+}
+
+int Options::currentGetThreadId() {
+  return current()->getThreadId();
+}
+
+std::ostream* Options::currentGetOut() {
+  return current()->getOut();
+}
+
+
+// TODO: Document these.
+void Options::setCeGuidedInst(bool value) {
+  set(options::ceGuidedInst, value);
+}
+
+void Options::setDumpSynth(bool value) {
+  set(options::dumpSynth, value);
+}
+
+void Options::setInputLanguage(InputLanguage value) {
+  set(options::inputLanguage, value);
+}
+
+void Options::setInteractive(bool value) {
+  set(options::interactive, value);
+}
+
+void Options::setOut(std::ostream* value) {
+  set(options::out, value);
+}
+
+void Options::setOutputLanguage(OutputLanguage value) {
+  set(options::outputLanguage, value);
+}
+
+void Options::setSharingFilterByLength(int length) {
+  set(options::sharingFilterByLength, length);
+}
+
+void Options::setThreadId(int value) {
+  set(options::thread_id, value);
+}
+
+bool Options::wasSetByUserCeGuidedInst() const {
+  return wasSetByUser(options::ceGuidedInst);
+}
+
+bool Options::wasSetByUserDumpSynth() const {
+  return wasSetByUser(options::dumpSynth);
+}
+
+bool Options::wasSetByUserEarlyExit() const {
+  return wasSetByUser(options::earlyExit);
+}
+
+bool Options::wasSetByUserForceLogicString() const {
+  return wasSetByUser(options::forceLogicString);
+}
+
+bool Options::wasSetByUserIncrementalSolving() const {
+  return wasSetByUser(options::incrementalSolving);
+}
+
+bool Options::wasSetByUserInteractive() const {
+  return wasSetByUser(options::interactive);
+}
+
+bool Options::wasSetByUserThreadStackSize() const {
+  return wasSetByUser(options::threadStackSize);
+}
+
+bool Options::wasSetByUserThreads() const {
+  return wasSetByUser(options::threads);
+}
+
+
+void Options::flushErr() {
+  if(getErr() != NULL) {
+    *(getErr()) << std::flush;
+  }
+}
+
+void Options::flushOut() {
+  if(getOut() != NULL) {
+    *(getOut()) << std::flush;
+  }
+}
+
+}/* CVC4 namespace */
diff --git a/src/options/options_set_option_template.cpp b/src/options/options_set_option_template.cpp
new file mode 100644
index 0000000..cc068f4
--- /dev/null
+++ b/src/options/options_set_option_template.cpp
@@ -0,0 +1,52 @@
+/*********************                                                        */
+/*! \file options_set_option_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of OptionsHandler::setOption.
+ **
+ ** This template file is expanded into the cpp implementation of
+ ** OptionsHandler::setOption. The file is essentially the contents
+ ** of the ${smt_setoption_handlers} variable in the options/mkoptions
+ ** script. This variable depends on all options files. To generate this file,
+ ** first generate options/summary.sed.
+ **/
+
+
+#include <string>
+#include <sstream>
+
+#include "base/modal_exception.h"
+#include "base/output.h"
+#include "options/option_exception.h"
+#include "options/options.h"
+#include "options/options_handler.h"
+
+${include_all_option_headers}
+${option_handler_includes}
+
+#line 35 "${template}"
+
+using namespace std;
+
+namespace CVC4 {
+
+void Options::setOption(const std::string& key, const std::string& optionarg)
+  throw(OptionException, ModalException) {
+  options::OptionsHandler* handler = d_handler;
+  Trace("options") << "SMT setOption(" << key << ", " << optionarg << ")" << endl;
+
+  ${smt_setoption_handlers}
+
+#line 48 "${template}"
+
+  throw UnrecognizedOptionException(key);
+}
+
+}/* CVC4 namespace */
diff --git a/src/options/options_template.cpp b/src/options/options_template.cpp
new file mode 100644
index 0000000..694d46d
--- /dev/null
+++ b/src/options/options_template.cpp
@@ -0,0 +1,832 @@
+/*********************                                                        */
+/*! \file options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Kshitij Bansal
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#if !defined(_BSD_SOURCE) && defined(__MINGW32__) && !defined(__MINGW64__)
+// force use of optreset; mingw32 croaks on argv-switching otherwise
+#  include "cvc4autoconfig.h"
+#  define _BSD_SOURCE
+#  undef HAVE_DECL_OPTRESET
+#  define HAVE_DECL_OPTRESET 1
+#  define CVC4_IS_NOT_REALLY_BSD
+#endif /* !_BSD_SOURCE && __MINGW32__ && !__MINGW64__ */
+
+#ifdef __MINGW64__
+extern int optreset;
+#endif /* __MINGW64__ */
+
+#include <getopt.h>
+
+// clean up
+#ifdef CVC4_IS_NOT_REALLY_BSD
+#  undef _BSD_SOURCE
+#endif /* CVC4_IS_NOT_REALLY_BSD */
+
+#include <unistd.h>
+#include <string.h>
+#include <stdint.h>
+#include <time.h>
+
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <iomanip>
+#include <new>
+#include <string>
+#include <sstream>
+#include <limits>
+
+#include "base/cvc4_assert.h"
+#include "base/exception.h"
+#include "base/output.h"
+#include "base/tls.h"
+#include "options/argument_extender.h"
+#include "options/argument_extender_implementation.h"
+#include "options/didyoumean.h"
+#include "options/language.h"
+#include "options/options_handler.h"
+
+${include_all_option_headers}
+
+#line 64 "${template}"
+
+#include "options/options_holder.h"
+#include "cvc4autoconfig.h"
+#include "options/base_handlers.h"
+
+${option_handler_includes}
+
+#line 72 "${template}"
+
+using namespace CVC4;
+using namespace CVC4::options;
+
+namespace CVC4 {
+
+CVC4_THREADLOCAL(Options*) Options::s_current = NULL;
+
+
+
+/**
+ * This is a default handler for options of built-in C++ type.  This
+ * template is really just a helper for the handleOption() template,
+ * below.  Variants of this template handle numeric and non-numeric,
+ * integral and non-integral, signed and unsigned C++ types.
+ * handleOption() makes sure to instantiate the right one.
+ *
+ * This implements default behavior when e.g. an option is
+ * unsigned but the user specifies a negative argument; etc.
+ */
+template <class T, bool is_numeric, bool is_integer>
+struct OptionHandler {
+  static T handle(std::string option, std::string optionarg);
+};/* struct OptionHandler<> */
+
+/** Variant for integral C++ types */
+template <class T>
+struct OptionHandler<T, true, true> {
+  static bool stringToInt(T& t, const std::string& str) {
+    std::istringstream ss(str);
+    ss >> t;
+    char tmp;
+    return !(ss.fail() || ss.get(tmp));
+  }
+
+  static bool containsMinus(const std::string& str) {
+    return str.find('-') != std::string::npos;
+  }
+
+  static T handle(const std::string& option, const std::string& optionarg) {
+    try {
+      T i;
+      bool success = stringToInt(i, optionarg);
+
+      if(!success){
+        throw OptionException(option + ": failed to parse "+ optionarg +
+                              " as an integer of the appropraite type.");
+      }
+
+      // Depending in the platform unsigned numbers with '-' signs may parse.
+      // Reject these by looking for any minus if it is not signed.
+      if( (! std::numeric_limits<T>::is_signed) && containsMinus(optionarg) ) {
+        // unsigned type but user gave negative argument
+        throw OptionException(option + " requires a nonnegative argument");
+      } else if(i < std::numeric_limits<T>::min()) {
+        // negative overflow for type
+        std::stringstream ss;
+        ss << option << " requires an argument >= "
+           << std::numeric_limits<T>::min();
+        throw OptionException(ss.str());
+      } else if(i > std::numeric_limits<T>::max()) {
+        // positive overflow for type
+        std::stringstream ss;
+        ss << option << " requires an argument <= "
+           << std::numeric_limits<T>::max();
+        throw OptionException(ss.str());
+      }
+
+      return i;
+
+      // if(std::numeric_limits<T>::is_signed) {
+      //   return T(i.getLong());
+      // } else {
+      //   return T(i.getUnsignedLong());
+      // }
+    } catch(std::invalid_argument&) {
+      // user gave something other than an integer
+      throw OptionException(option + " requires an integer argument");
+    }
+  }
+};/* struct OptionHandler<T, true, true> */
+
+/** Variant for numeric but non-integral C++ types */
+template <class T>
+struct OptionHandler<T, true, false> {
+  static T handle(std::string option, std::string optionarg) {
+    std::stringstream in(optionarg);
+    long double r;
+    in >> r;
+    if(! in.eof()) {
+      // we didn't consume the whole string (junk at end)
+      throw OptionException(option + " requires a numeric argument");
+    }
+
+    if(! std::numeric_limits<T>::is_signed && r < 0.0) {
+      // unsigned type but user gave negative value
+      throw OptionException(option + " requires a nonnegative argument");
+    } else if(r < -std::numeric_limits<T>::max()) {
+      // negative overflow for type
+      std::stringstream ss;
+      ss << option << " requires an argument >= "
+         << -std::numeric_limits<T>::max();
+      throw OptionException(ss.str());
+    } else if(r > std::numeric_limits<T>::max()) {
+      // positive overflow for type
+      std::stringstream ss;
+      ss << option << " requires an argument <= "
+         << std::numeric_limits<T>::max();
+      throw OptionException(ss.str());
+    }
+
+    return T(r);
+  }
+};/* struct OptionHandler<T, true, false> */
+
+/** Variant for non-numeric C++ types */
+template <class T>
+struct OptionHandler<T, false, false> {
+  static T handle(std::string option, std::string optionarg) {
+    T::unsupported_handleOption_call___please_write_me;
+    // The above line causes a compiler error if this version of the template
+    // is ever instantiated (meaning that a specialization is missing).  So
+    // don't worry about the segfault in the next line, the "return" is only
+    // there to keep the compiler from giving additional, distracting errors
+    // and warnings.
+    return *(T*)0;
+  }
+};/* struct OptionHandler<T, false, false> */
+
+/** Handle an option of type T in the default way. */
+template <class T>
+T handleOption(std::string option, std::string optionarg) {
+  return OptionHandler<T, std::numeric_limits<T>::is_specialized, std::numeric_limits<T>::is_integer>::handle(option, optionarg);
+}
+
+/** Handle an option of type std::string in the default way. */
+template <>
+std::string handleOption<std::string>(std::string option, std::string optionarg) {
+  return optionarg;
+}
+
+/**
+ * Run handler, and any user-given predicates, for option T.
+ * If a user specifies a :handler or :predicates, it overrides this.
+ */
+template <class T>
+typename T::type runHandlerAndPredicates(T, std::string option, std::string optionarg, options::OptionsHandler* handler) {
+  // By default, parse the option argument in a way appropriate for its type.
+  // E.g., for "unsigned int" options, ensure that the provided argument is
+  // a nonnegative integer that fits in the unsigned int type.
+
+  return handleOption<typename T::type>(option, optionarg);
+}
+
+template <class T>
+void runBoolPredicates(T, std::string option, bool b, options::OptionsHandler* handler) {
+  // By default, nothing to do for bool.  Users add things with
+  // :predicate in options files to provide custom checking routines
+  // that can throw exceptions.
+}
+
+
+Options::Options()
+    : d_holder(new options::OptionsHolder())
+    , d_handler(new options::OptionsHandler(this))
+    , d_forceLogicListeners()
+    , d_beforeSearchListeners()
+    , d_tlimitListeners()
+    , d_tlimitPerListeners()
+    , d_rlimitListeners()
+    , d_rlimitPerListeners()
+{}
+
+Options::~Options() {
+  delete d_handler;
+  delete d_holder;
+}
+
+void Options::copyValues(const Options& options){
+  if(this != &options) {
+    delete d_holder;
+    d_holder = new options::OptionsHolder(*options.d_holder);
+  }
+}
+
+std::string Options::formatThreadOptionException(const std::string& option) {
+  std::stringstream ss;
+  ss << "can't understand option `" << option
+     << "': expected something like --threadN=\"--option1 --option2\","
+     << " where N is a nonnegative integer";
+  return ss.str();
+}
+
+ListenerCollection::Registration* Options::registerAndNotify(
+    ListenerCollection& collection, Listener* listener, bool notify)
+{
+  ListenerCollection::Registration* registration =
+      collection.registerListener(listener);
+  if(notify) {
+    listener->notify();
+  }
+  return registration;
+}
+
+ListenerCollection::Registration* Options::registerForceLogicListener(
+    Listener* listener, bool notifyIfSet)
+{
+  bool notify = notifyIfSet && wasSetByUser(options::forceLogicString);
+  return registerAndNotify(d_forceLogicListeners, listener, notify);
+}
+
+ListenerCollection::Registration* Options::registerBeforeSearchListener(
+   Listener* listener)
+{
+  return d_beforeSearchListeners.registerListener(listener);
+}
+
+ListenerCollection::Registration* Options::registerTlimitListener(
+   Listener* listener, bool notifyIfSet)
+{
+  bool notify = notifyIfSet &&
+      wasSetByUser(options::cumulativeMillisecondLimit);
+  return registerAndNotify(d_tlimitListeners, listener, notify);
+}
+
+ListenerCollection::Registration* Options::registerTlimitPerListener(
+   Listener* listener, bool notifyIfSet)
+{
+  bool notify = notifyIfSet && wasSetByUser(options::perCallMillisecondLimit);
+  return registerAndNotify(d_tlimitPerListeners, listener, notify);
+}
+
+ListenerCollection::Registration* Options::registerRlimitListener(
+   Listener* listener, bool notifyIfSet)
+{
+  bool notify = notifyIfSet && wasSetByUser(options::cumulativeResourceLimit);
+  return registerAndNotify(d_rlimitListeners, listener, notify);
+}
+
+ListenerCollection::Registration* Options::registerRlimitPerListener(
+   Listener* listener, bool notifyIfSet)
+{
+  bool notify = notifyIfSet && wasSetByUser(options::perCallResourceLimit);
+  return registerAndNotify(d_rlimitPerListeners, listener, notify);
+}
+
+ListenerCollection::Registration* Options::registerUseTheoryListListener(
+   Listener* listener, bool notifyIfSet)
+{
+  bool notify = notifyIfSet && wasSetByUser(options::useTheoryList);
+  return registerAndNotify(d_useTheoryListListeners, listener, notify);
+}
+
+ListenerCollection::Registration* Options::registerSetDefaultExprDepthListener(
+    Listener* listener, bool notifyIfSet)
+{
+  bool notify = notifyIfSet && wasSetByUser(options::defaultExprDepth);
+  return registerAndNotify(d_setDefaultExprDepthListeners, listener, notify);
+}
+
+ListenerCollection::Registration* Options::registerSetDefaultExprDagListener(
+    Listener* listener, bool notifyIfSet)
+{
+  bool notify = notifyIfSet && wasSetByUser(options::defaultDagThresh);
+  return registerAndNotify(d_setDefaultDagThreshListeners, listener, notify);
+}
+
+ListenerCollection::Registration* Options::registerSetPrintExprTypesListener(
+    Listener* listener, bool notifyIfSet)
+{
+  bool notify = notifyIfSet && wasSetByUser(options::printExprTypes);
+  return registerAndNotify(d_setPrintExprTypesListeners, listener, notify);
+}
+
+ListenerCollection::Registration* Options::registerSetDumpModeListener(
+    Listener* listener, bool notifyIfSet)
+{
+  bool notify = notifyIfSet && wasSetByUser(options::dumpModeString);
+  return registerAndNotify(d_setDumpModeListeners, listener, notify);
+}
+
+ListenerCollection::Registration* Options::registerSetPrintSuccessListener(
+    Listener* listener, bool notifyIfSet)
+{
+  bool notify = notifyIfSet && wasSetByUser(options::printSuccess);
+  return registerAndNotify(d_setPrintSuccessListeners, listener, notify);
+}
+
+ListenerCollection::Registration* Options::registerDumpToFileNameListener(
+    Listener* listener, bool notifyIfSet)
+{
+  bool notify = notifyIfSet && wasSetByUser(options::dumpToFileName);
+  return registerAndNotify(d_dumpToFileListeners, listener, notify);
+}
+
+ListenerCollection::Registration*
+Options::registerSetRegularOutputChannelListener(
+    Listener* listener, bool notifyIfSet)
+{
+  bool notify = notifyIfSet && wasSetByUser(options::regularChannelName);
+  return registerAndNotify(d_setRegularChannelListeners, listener, notify);
+}
+
+ListenerCollection::Registration*
+Options::registerSetDiagnosticOutputChannelListener(
+    Listener* listener, bool notifyIfSet)
+{
+  bool notify = notifyIfSet && wasSetByUser(options::diagnosticChannelName);
+  return registerAndNotify(d_setDiagnosticChannelListeners, listener, notify);
+}
+
+ListenerCollection::Registration*
+Options::registerSetReplayLogFilename(
+    Listener* listener, bool notifyIfSet)
+{
+  bool notify = notifyIfSet && wasSetByUser(options::replayLogFilename);
+  return registerAndNotify(d_setReplayFilenameListeners, listener, notify);
+}
+
+${all_custom_handlers}
+
+#line 394 "${template}"
+
+#ifdef CVC4_DEBUG
+#  define USE_EARLY_TYPE_CHECKING_BY_DEFAULT true
+#else /* CVC4_DEBUG */
+#  define USE_EARLY_TYPE_CHECKING_BY_DEFAULT false
+#endif /* CVC4_DEBUG */
+
+#if defined(CVC4_MUZZLED) || defined(CVC4_COMPETITION_MODE)
+#  define DO_SEMANTIC_CHECKS_BY_DEFAULT false
+#else /* CVC4_MUZZLED || CVC4_COMPETITION_MODE */
+#  define DO_SEMANTIC_CHECKS_BY_DEFAULT true
+#endif /* CVC4_MUZZLED || CVC4_COMPETITION_MODE */
+
+options::OptionsHolder::OptionsHolder() : ${all_modules_defaults}
+{
+}
+
+#line 412 "${template}"
+
+static const std::string mostCommonOptionsDescription = "\
+Most commonly-used CVC4 options:${common_documentation}";
+
+#line 417 "${template}"
+
+static const std::string optionsDescription = mostCommonOptionsDescription + "\n\
+\n\
+Additional CVC4 options:${remaining_documentation}";
+
+#line 423 "${template}"
+
+static const std::string optionsFootnote = "\n\
+[*] Each of these options has a --no-OPTIONNAME variant, which reverses the\n\
+    sense of the option.\n\
+";
+
+static const std::string languageDescription = "\
+Languages currently supported as arguments to the -L / --lang option:\n\
+  auto                           attempt to automatically determine language\n\
+  cvc4 | presentation | pl       CVC4 presentation language\n\
+  smt1 | smtlib1                 SMT-LIB format 1.2\n\
+  smt | smtlib | smt2 |\n\
+  smt2.0 | smtlib2 | smtlib2.0   SMT-LIB format 2.0\n\
+  smt2.5 | smtlib2.5             SMT-LIB format 2.5\n\
+  tptp                           TPTP format (cnf and fof)\n\
+  sygus                          SyGuS format\n\
+\n\
+Languages currently supported as arguments to the --output-lang option:\n\
+  auto                           match output language to input language\n\
+  cvc4 | presentation | pl       CVC4 presentation language\n\
+  cvc3                           CVC3 presentation language\n\
+  smt1 | smtlib1                 SMT-LIB format 1.2\n\
+  smt | smtlib | smt2 |\n\
+  smt2.0 | smtlib2.0 | smtlib2   SMT-LIB format 2.0\n\
+  smt2.5 | smtlib2.5             SMT-LIB format 2.5\n\
+  tptp                           TPTP format\n\
+  z3str                          SMT-LIB 2.0 with Z3-str string constraints\n\
+  ast                            internal format (simple syntax trees)\n\
+";
+
+std::string Options::getDescription() const {
+  return optionsDescription;
+}
+
+void Options::printUsage(const std::string msg, std::ostream& out) {
+  out << msg << optionsDescription << std::endl
+      << optionsFootnote << std::endl << std::flush;
+}
+
+void Options::printShortUsage(const std::string msg, std::ostream& out) {
+  out << msg << mostCommonOptionsDescription << std::endl
+      << optionsFootnote << std::endl
+      << "For full usage, please use --help."
+      << std::endl << std::endl << std::flush;
+}
+
+void Options::printLanguageHelp(std::ostream& out) {
+  out << languageDescription << std::flush;
+}
+
+/**
+ * This is a table of long options.  By policy, each short option
+ * should have an equivalent long option (but the reverse isn't the
+ * case), so this table should thus contain all command-line options.
+ *
+ * Each option in this array has four elements:
+ *
+ * 1. the long option string
+ * 2. argument behavior for the option:
+ *    no_argument - no argument permitted
+ *    required_argument - an argument is expected
+ *    optional_argument - an argument is permitted but not required
+ * 3. this is a pointer to an int which is set to the 4th entry of the
+ *    array if the option is present; or NULL, in which case
+ *    getopt_long() returns the 4th entry
+ * 4. the return value for getopt_long() when this long option (or the
+ *    value to set the 3rd entry to; see #3)
+ *
+ * If you add something here, you should add it in src/main/usage.h
+ * also, to document it.
+ *
+ * If you add something that has a short option equivalent, you should
+ * add it to the getopt_long() call in parseOptions().
+ */
+static struct option cmdlineOptions[] = {${all_modules_long_options}
+  { NULL, no_argument, NULL, '\0' }
+};/* cmdlineOptions */
+
+#line 502 "${template}"
+
+// static void preemptGetopt(int& argc, char**& argv, const char* opt) {
+
+//   Debug("preemptGetopt") << "preempting getopt() with " << opt << std::endl;
+
+//   AlwaysAssert(opt != NULL && *opt != '\0');
+//   AlwaysAssert(strlen(opt) <= maxoptlen);
+
+//   ++argc;
+//   unsigned i = 1;
+//   while(argv[i] != NULL && argv[i][0] != '\0') {
+//     ++i;
+//   }
+
+//   if(argv[i] == NULL) {
+//     argv = (char**) realloc(argv, (i + 6) * sizeof(char*));
+//     for(unsigned j = i; j < i + 5; ++j) {
+//       argv[j] = (char*) malloc(sizeof(char) * maxoptlen);
+//       argv[j][0] = '\0';
+//     }
+//     argv[i + 5] = NULL;
+//   }
+
+//   strncpy(argv[i], opt, maxoptlen - 1);
+//   argv[i][maxoptlen - 1] = '\0'; // ensure NUL-termination even on overflow
+// }
+
+namespace options {
+
+/** Set a given Options* as "current" just for a particular scope. */
+class OptionsGuard {
+  CVC4_THREADLOCAL_TYPE(Options*)* d_field;
+  Options* d_old;
+public:
+  OptionsGuard(CVC4_THREADLOCAL_TYPE(Options*)* field, Options* opts) :
+    d_field(field),
+    d_old(*field) {
+    *field = opts;
+  }
+  ~OptionsGuard() {
+    *d_field = d_old;
+  }
+};/* class OptionsGuard */
+
+}/* CVC4::options namespace */
+
+/**
+ * Parse argc/argv and put the result into a CVC4::Options.
+ * The return value is what's left of the command line (that is, the
+ * non-option arguments).
+ */
+std::vector<std::string> Options::parseOptions(Options* options,
+                                               int argc, char* argv[])
+  throw(OptionException) {
+
+  Assert(options != NULL);
+  Assert(argv != NULL);
+
+  options::OptionsGuard guard(&s_current, options);
+
+  const char *progName = argv[0];
+
+  // To debug options parsing, you may prefer to simply uncomment this
+  // and recompile. Debug flags have not been parsed yet so these have
+  // not been set.
+  //DebugChannel.on("options");
+
+  Debug("options") << "Options::parseOptions == " << options << std::endl;
+  Debug("options") << "argv == " << argv << std::endl;
+
+  // Find the base name of the program.
+  const char *x = strrchr(progName, '/');
+  if(x != NULL) {
+    progName = x + 1;
+  }
+  options->d_holder->binary_name = std::string(progName);
+
+  ArgumentExtender* argumentExtender = new ArgumentExtenderImplementation();
+  for(int position = 1; position < argc; position++) {
+    argumentExtender->pushBackArgument(argv[position]);
+  }
+
+  std::vector<std::string> nonoptions;
+  parseOptionsRecursive(options, argumentExtender, &nonoptions);
+  if(Debug.isOn("options")){
+    for(std::vector<std::string>::const_iterator i = nonoptions.begin(),
+          iend = nonoptions.end(); i != iend; ++i){
+      Debug("options") << "nonoptions " << *i << std::endl;
+    }
+  }
+
+  delete argumentExtender;
+  return nonoptions;
+}
+
+void Options::parseOptionsRecursive(Options* options,
+                                    ArgumentExtender* extender,
+                                    std::vector<std::string>* nonoptions)
+  throw(OptionException) {
+
+  int argc;
+  char** argv;
+
+  extender->movePreemptionsToArguments();
+  extender->pushFrontArgument("");
+  extender->getArguments(&argc, &argv);
+
+  if(Debug.isOn("options")) {
+    Debug("options") << "starting a new parseOptionsRecursive with "
+                     << argc << " arguments" << std::endl;
+    for( int i = 0; i < argc ; i++ ){
+      Assert(argv[i] != NULL);
+      Debug("options") << "  argv[" << i << "] = " << argv[i] << std::endl;
+    }
+  }
+
+  // Having this synonym simplifies the generation code in mkoptions.
+  options::OptionsHandler* handler = options->d_handler;
+  options::OptionsHolder* holder = options->d_holder;
+
+  // Reset getopt(), in the case of multiple calls to parseOptions().
+  // This can be = 1 in newer GNU getopt, but older (< 2007) require = 0.
+  optind = 0;
+#if HAVE_DECL_OPTRESET
+  optreset = 1; // on BSD getopt() (e.g. Mac OS), might need this
+#endif /* HAVE_DECL_OPTRESET */
+
+  
+  int main_optind = 0;
+  int old_optind;
+
+
+  while(true) { // Repeat Forever
+
+    if(extender->hasPreemptions()){
+      // Stop this round of parsing. We now parse recursively
+      // to start on a new character array for argv.
+      parseOptionsRecursive(options, extender, nonoptions);
+      break;
+    }
+
+    optopt = 0;
+    std::string option, optionarg;
+
+    optind = main_optind;
+    old_optind = main_optind;
+    //optind_ref = &main_optind;
+    //argv = main_argv;
+
+    // If we encounter an element that is not at zero and does not start
+    // with a "-", this is a non-option. We consume this element as a
+    // non-option.
+    if (main_optind > 0 && main_optind < argc &&
+        argv[main_optind][0] != '-') {
+      Debug("options") << "enqueueing " << argv[main_optind]
+                       << " as a non-option." << std::endl;
+      nonoptions->push_back(argv[main_optind]);
+      ++main_optind;
+      extender->popFrontArgument();
+      continue;
+    }
+
+
+    Debug("options") << "[ before, main_optind == " << main_optind << " ]"
+                     << std::endl;
+    Debug("options") << "[ before, optind == " << optind << " ]" << std::endl;
+    Debug("options") << "[ argc == " << argc << ", argv == " << argv << " ]"
+                     << std::endl;
+    int c = getopt_long(argc, argv,
+                        "+:${all_modules_short_options}",
+                        cmdlineOptions, NULL);
+
+    while(main_optind < optind) {
+      main_optind++;
+      extender->popFrontArgument();
+    }
+
+    Debug("options") << "[ got " << int(c) << " (" << char(c) << ") ]"
+                     << "[ next option will be at pos: " << optind << " ]"
+                     << std::endl;
+
+    // The initial getopt_long call should always determine that argv[0]
+    // is not an option and returns -1. We always manually advance beyond
+    // this element.
+    //
+    // We have to reinitialize optind to 0 instead of 1 as we need to support
+    // changing the argv array passed to getopt.
+    // This is needed as are using GNU extensions.
+    // From: http://man7.org/linux/man-pages/man3/getopt.3.html
+    // A program that scans multiple argument vectors, or rescans the same
+    // vector more than once, and wants to make use of GNU extensions such
+    // as '+' and '-' at the start of optstring, or changes the value of
+    //  POSIXLY_CORRECT between scans, must reinitialize getopt() by
+    //  resetting optind to 0, rather than the traditional value of 1.
+    //  (Resetting to 0 forces the invocation of an internal initialization
+    //  routine that rechecks POSIXLY_CORRECT and checks for GNU extensions
+    //  in optstring.)
+    if ( old_optind == 0  && c == -1 ) {
+      Assert(main_optind > 0);
+      continue;
+    }
+
+    if ( c == -1 ) {
+      if(Debug.isOn("options")) {
+        Debug("options") << "done with option parsing" << std::endl;
+        for(int index = optind; index < argc; ++index) {
+          Debug("options") << "remaining " << argv[index] << std::endl;
+        }
+      }
+      break;
+    }
+
+    option = argv[old_optind == 0 ? 1 : old_optind];
+    optionarg = (optarg == NULL) ? "" : optarg;
+
+    Debug("preemptGetopt") << "processing option " << c
+                           << " (`" << char(c) << "'), " << option << std::endl;
+
+    switch(c) {
+${all_modules_option_handlers}
+
+#line 724 "${template}"
+
+    case ':':
+      // This can be a long or short option, and the way to get at the
+      // name of it is different.
+      throw OptionException(std::string("option `") + option +
+                            "' missing its required argument");
+
+    case '?':
+    default:
+      if( ( optopt == 0 ||
+            ( optopt >= ${long_option_value_begin} &&
+              optopt <= ${long_option_value_end} )
+          ) && !strncmp(argv[optind - 1], "--thread", 8) &&
+          strlen(argv[optind - 1]) > 8 )
+      {
+        if(! isdigit(argv[optind - 1][8])) {
+          throw OptionException(formatThreadOptionException(option));
+        }
+        std::vector<std::string>& threadArgv = holder->threadArgv;
+        char *end;
+        long tnum = strtol(argv[optind - 1] + 8, &end, 10);
+        if(tnum < 0 || (*end != '\0' && *end != '=')) {
+          throw OptionException(formatThreadOptionException(option));
+        }
+        if(threadArgv.size() <= size_t(tnum)) {
+          threadArgv.resize(tnum + 1);
+        }
+        if(threadArgv[tnum] != "") {
+          threadArgv[tnum] += " ";
+        }
+        if(*end == '\0') { // e.g., we have --thread0 "foo"
+          if(argc <= optind) {
+            throw OptionException(std::string("option `") + option +
+                                  "' missing its required argument");
+          }
+          Debug("options") << "thread " << tnum << " gets option "
+                           << argv[optind] << std::endl;
+          threadArgv[tnum] += argv[main_optind];
+          main_optind++;
+        } else { // e.g., we have --thread0="foo"
+          if(end[1] == '\0') {
+            throw OptionException(std::string("option `") + option +
+                                  "' missing its required argument");
+          }
+          Debug("options") << "thread " << tnum << " gets option "
+                           << (end + 1) << std::endl;
+          threadArgv[tnum] += end + 1;
+        }
+        Debug("options") << "thread " << tnum << " now has "
+                         << threadArgv[tnum] << std::endl;
+        break;
+      }
+
+      throw OptionException(std::string("can't understand option `") + option +
+                            "'" + suggestCommandLineOptions(option));
+    }
+  }
+
+  Debug("options") << "got " << nonoptions->size()
+                   << " non-option arguments." << std::endl;
+
+  free(argv);
+}
+
+std::string Options::suggestCommandLineOptions(const std::string& optionName) throw() {
+  DidYouMean didYouMean;
+
+  const char* opt;
+  for(size_t i = 0; (opt = cmdlineOptions[i].name) != NULL; ++i) {
+    didYouMean.addWord(std::string("--") + cmdlineOptions[i].name);
+  }
+
+  return didYouMean.getMatchAsString(optionName.substr(0, optionName.find('=')));
+}
+
+static const char* smtOptions[] = {
+  ${all_modules_smt_options},
+#line 802 "${template}"
+  NULL
+};/* smtOptions[] */
+
+std::vector<std::string> Options::suggestSmtOptions(const std::string& optionName) throw() {
+  std::vector<std::string> suggestions;
+
+  const char* opt;
+  for(size_t i = 0; (opt = smtOptions[i]) != NULL; ++i) {
+    if(std::strstr(opt, optionName.c_str()) != NULL) {
+      suggestions.push_back(opt);
+    }
+  }
+
+  return suggestions;
+}
+
+std::vector< std::vector<std::string> > Options::getOptions() const throw() {
+  std::vector< std::vector<std::string> > opts;
+
+  ${all_modules_get_options}
+
+#line 824 "${template}"
+
+  return opts;
+}
+
+
+#undef USE_EARLY_TYPE_CHECKING_BY_DEFAULT
+#undef DO_SEMANTIC_CHECKS_BY_DEFAULT
+
+}/* CVC4 namespace */
diff --git a/src/options/parser_options b/src/options/parser_options
new file mode 100644
index 0000000..d1e9aa1
--- /dev/null
+++ b/src/options/parser_options
@@ -0,0 +1,35 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module PARSER "options/parser_options.h" Parser
+
+common-option strictParsing --strict-parsing bool
+ be less tolerant of non-conforming inputs
+
+option memoryMap --mmap bool
+ memory map file input
+
+option semanticChecks semantic-checks /--no-checking bool :default DO_SEMANTIC_CHECKS_BY_DEFAULT :link /--no-type-checking
+ disable ALL semantic checks, including type checks
+
+option globalDeclarations global-declarations bool :default false
+ force all declarations and definitions to be global
+
+# this is to support security in the online version, and in other similar
+# contexts (--no-include-file disables filesystem access in TPTP and SMT2
+# parsers) the name --no-include-file is legacy: it also now limits any
+# filesystem access (read or write) for example by using --dump-to (or the
+# equivalent set-option) or set-option
+# :regular-output-channel/:diagnostic-output-channel.  However, the main driver
+# is still permitted to read the input file given on the command-line if any.
+# creation/use of temp files are still permitted (but the paths aren't given by
+# the user).  Also note this is only safe for the version invoked through the
+# main driver, there are ways via the API to get the CVC4 library to open a file
+# for reading or writing and thus leak information from an existing file, or
+# overwrite an existing file with malicious content.
+undocumented-option filesystemAccess filesystem-access /--no-filesystem-access bool :default true
+undocumented-alias --no-include-file = --no-filesystem-access
+
+endmodule
diff --git a/src/options/parser_options.cpp b/src/options/parser_options.cpp
new file mode 100644
index 0000000..5ee5b84
--- /dev/null
+++ b/src/options/parser_options.cpp
@@ -0,0 +1,63 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+#line 8 "../../../../../src/options/parser_options"
+template <> const options::strictParsing__option_t::type& Options::operator[](options::strictParsing__option_t) const { return d_holder->strictParsing; }
+#line 8 "../../../../../src/options/parser_options"
+template <> bool Options::wasSetByUser(options::strictParsing__option_t) const { return d_holder->strictParsing__setByUser__; }
+#line 11 "../../../../../src/options/parser_options"
+template <> const options::memoryMap__option_t::type& Options::operator[](options::memoryMap__option_t) const { return d_holder->memoryMap; }
+#line 11 "../../../../../src/options/parser_options"
+template <> bool Options::wasSetByUser(options::memoryMap__option_t) const { return d_holder->memoryMap__setByUser__; }
+#line 14 "../../../../../src/options/parser_options"
+template <> const options::semanticChecks__option_t::type& Options::operator[](options::semanticChecks__option_t) const { return d_holder->semanticChecks; }
+#line 14 "../../../../../src/options/parser_options"
+template <> bool Options::wasSetByUser(options::semanticChecks__option_t) const { return d_holder->semanticChecks__setByUser__; }
+#line 17 "../../../../../src/options/parser_options"
+template <> const options::globalDeclarations__option_t::type& Options::operator[](options::globalDeclarations__option_t) const { return d_holder->globalDeclarations; }
+#line 17 "../../../../../src/options/parser_options"
+template <> bool Options::wasSetByUser(options::globalDeclarations__option_t) const { return d_holder->globalDeclarations__setByUser__; }
+#line 32 "../../../../../src/options/parser_options"
+template <> const options::filesystemAccess__option_t::type& Options::operator[](options::filesystemAccess__option_t) const { return d_holder->filesystemAccess; }
+#line 32 "../../../../../src/options/parser_options"
+template <> bool Options::wasSetByUser(options::filesystemAccess__option_t) const { return d_holder->filesystemAccess__setByUser__; }
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/parser_options"
+struct strictParsing__option_t strictParsing;
+#line 11 "../../../../../src/options/parser_options"
+struct memoryMap__option_t memoryMap;
+#line 14 "../../../../../src/options/parser_options"
+struct semanticChecks__option_t semanticChecks;
+#line 17 "../../../../../src/options/parser_options"
+struct globalDeclarations__option_t globalDeclarations;
+#line 32 "../../../../../src/options/parser_options"
+struct filesystemAccess__option_t filesystemAccess;
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/parser_options.h b/src/options/parser_options.h
new file mode 100644
index 0000000..07e45c9
--- /dev/null
+++ b/src/options/parser_options.h
@@ -0,0 +1,129 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__PARSER_H
+#define __CVC4__OPTIONS__PARSER_H
+
+#include "options/options.h"
+
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__PARSER__FOR_OPTION_HOLDER \
+  strictParsing__option_t::type strictParsing; \
+  bool strictParsing__setByUser__; \
+  memoryMap__option_t::type memoryMap; \
+  bool memoryMap__setByUser__; \
+  semanticChecks__option_t::type semanticChecks; \
+  bool semanticChecks__setByUser__; \
+  globalDeclarations__option_t::type globalDeclarations; \
+  bool globalDeclarations__setByUser__; \
+  filesystemAccess__option_t::type filesystemAccess; \
+  bool filesystemAccess__setByUser__;
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/parser_options"
+extern struct CVC4_PUBLIC strictParsing__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } strictParsing CVC4_PUBLIC;
+#line 11 "../../../../../src/options/parser_options"
+extern struct CVC4_PUBLIC memoryMap__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } memoryMap CVC4_PUBLIC;
+#line 14 "../../../../../src/options/parser_options"
+extern struct CVC4_PUBLIC semanticChecks__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } semanticChecks CVC4_PUBLIC;
+#line 17 "../../../../../src/options/parser_options"
+extern struct CVC4_PUBLIC globalDeclarations__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } globalDeclarations CVC4_PUBLIC;
+#line 32 "../../../../../src/options/parser_options"
+extern struct CVC4_PUBLIC filesystemAccess__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } filesystemAccess CVC4_PUBLIC;
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+#line 8 "../../../../../src/options/parser_options"
+template <> const options::strictParsing__option_t::type& Options::operator[](options::strictParsing__option_t) const;
+#line 8 "../../../../../src/options/parser_options"
+template <> bool Options::wasSetByUser(options::strictParsing__option_t) const;
+#line 8 "../../../../../src/options/parser_options"
+template <> void Options::assignBool(options::strictParsing__option_t, std::string option, bool value);
+#line 11 "../../../../../src/options/parser_options"
+template <> const options::memoryMap__option_t::type& Options::operator[](options::memoryMap__option_t) const;
+#line 11 "../../../../../src/options/parser_options"
+template <> bool Options::wasSetByUser(options::memoryMap__option_t) const;
+#line 11 "../../../../../src/options/parser_options"
+template <> void Options::assignBool(options::memoryMap__option_t, std::string option, bool value);
+#line 14 "../../../../../src/options/parser_options"
+template <> const options::semanticChecks__option_t::type& Options::operator[](options::semanticChecks__option_t) const;
+#line 14 "../../../../../src/options/parser_options"
+template <> bool Options::wasSetByUser(options::semanticChecks__option_t) const;
+#line 14 "../../../../../src/options/parser_options"
+template <> void Options::assignBool(options::semanticChecks__option_t, std::string option, bool value);
+#line 17 "../../../../../src/options/parser_options"
+template <> const options::globalDeclarations__option_t::type& Options::operator[](options::globalDeclarations__option_t) const;
+#line 17 "../../../../../src/options/parser_options"
+template <> bool Options::wasSetByUser(options::globalDeclarations__option_t) const;
+#line 17 "../../../../../src/options/parser_options"
+template <> void Options::assignBool(options::globalDeclarations__option_t, std::string option, bool value);
+#line 32 "../../../../../src/options/parser_options"
+template <> const options::filesystemAccess__option_t::type& Options::operator[](options::filesystemAccess__option_t) const;
+#line 32 "../../../../../src/options/parser_options"
+template <> bool Options::wasSetByUser(options::filesystemAccess__option_t) const;
+#line 32 "../../../../../src/options/parser_options"
+template <> void Options::assignBool(options::filesystemAccess__option_t, std::string option, bool value);
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/parser_options"
+inline strictParsing__option_t::type strictParsing__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 8 "../../../../../src/options/parser_options"
+inline bool strictParsing__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 11 "../../../../../src/options/parser_options"
+inline memoryMap__option_t::type memoryMap__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 11 "../../../../../src/options/parser_options"
+inline bool memoryMap__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 14 "../../../../../src/options/parser_options"
+inline semanticChecks__option_t::type semanticChecks__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 14 "../../../../../src/options/parser_options"
+inline bool semanticChecks__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 17 "../../../../../src/options/parser_options"
+inline globalDeclarations__option_t::type globalDeclarations__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 17 "../../../../../src/options/parser_options"
+inline bool globalDeclarations__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 32 "../../../../../src/options/parser_options"
+inline filesystemAccess__option_t::type filesystemAccess__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 32 "../../../../../src/options/parser_options"
+inline bool filesystemAccess__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__PARSER_H */
diff --git a/src/options/printer_modes.cpp b/src/options/printer_modes.cpp
new file mode 100644
index 0000000..3ca311a
--- /dev/null
+++ b/src/options/printer_modes.cpp
@@ -0,0 +1,51 @@
+/*********************                                                        */
+/*! \file printer_modes.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "options/printer_modes.h"
+
+namespace CVC4 {
+
+std::ostream& operator<<(std::ostream& out, ModelFormatMode mode) {
+  switch(mode) {
+  case MODEL_FORMAT_MODE_DEFAULT:
+    out << "MODEL_FORMAT_MODE_DEFAULT";
+    break;
+  case MODEL_FORMAT_MODE_TABLE:
+    out << "MODEL_FORMAT_MODE_TABLE";
+    break;
+  default:
+    out << "ModelFormatMode:UNKNOWN![" << unsigned(mode) << "]";
+  }
+
+  return out;
+}
+
+std::ostream& operator<<(std::ostream& out, InstFormatMode mode) {
+  switch(mode) {
+  case INST_FORMAT_MODE_DEFAULT:
+    out << "INST_FORMAT_MODE_DEFAULT";
+    break;
+  case INST_FORMAT_MODE_SZS:
+    out << "INST_FORMAT_MODE_SZS";
+    break;
+  default:
+    out << "InstFormatMode:UNKNOWN![" << unsigned(mode) << "]";
+  }
+  return out;
+}
+
+}/* CVC4 namespace */
diff --git a/src/options/printer_modes.h b/src/options/printer_modes.h
new file mode 100644
index 0000000..a05ca24
--- /dev/null
+++ b/src/options/printer_modes.h
@@ -0,0 +1,48 @@
+/*********************                                                        */
+/*! \file printer_modes.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__PRINTER__MODES_H
+#define __CVC4__PRINTER__MODES_H
+
+#include <iostream>
+
+namespace CVC4 {
+
+/** Enumeration of model_format modes (how to print models from get-model command). */
+enum CVC4_PUBLIC ModelFormatMode {
+  /** default mode (print expressions in the output language format) */
+  MODEL_FORMAT_MODE_DEFAULT,
+  /** print functional values in a table format */
+  MODEL_FORMAT_MODE_TABLE,
+};
+
+/** Enumeration of inst_format modes (how to print models from get-model command). */
+enum CVC4_PUBLIC InstFormatMode {
+  /** default mode (print expressions in the output language format) */
+  INST_FORMAT_MODE_DEFAULT,
+  /** print as SZS proof */
+  INST_FORMAT_MODE_SZS,
+};
+
+std::ostream& operator<<(std::ostream& out, ModelFormatMode mode) CVC4_PUBLIC;
+std::ostream& operator<<(std::ostream& out, InstFormatMode mode) CVC4_PUBLIC;
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PRINTER__MODEL_FORMAT_H */
diff --git a/src/options/printer_options b/src/options/printer_options
new file mode 100644
index 0000000..c276c0d
--- /dev/null
+++ b/src/options/printer_options
@@ -0,0 +1,14 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module PRINTER "options/printer_options.h" Printing
+
+option modelFormatMode --model-format=MODE ModelFormatMode :handler stringToModelFormatMode :default MODEL_FORMAT_MODE_DEFAULT :read-write :include "options/printer_modes.h"
+ print format mode for models, see --model-format=help
+
+option instFormatMode --inst-format=MODE InstFormatMode :handler stringToInstFormatMode :default INST_FORMAT_MODE_DEFAULT :read-write :include "options/printer_modes.h"
+ print format mode for instantiations, see --inst-format=help
+
+endmodule
diff --git a/src/options/printer_options.cpp b/src/options/printer_options.cpp
new file mode 100644
index 0000000..634d3d6
--- /dev/null
+++ b/src/options/printer_options.cpp
@@ -0,0 +1,49 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+#line 8 "../../../../../src/options/printer_options"
+template <> void Options::set(options::modelFormatMode__option_t, const options::modelFormatMode__option_t::type& x) { d_holder->modelFormatMode = x; }
+#line 8 "../../../../../src/options/printer_options"
+template <> const options::modelFormatMode__option_t::type& Options::operator[](options::modelFormatMode__option_t) const { return d_holder->modelFormatMode; }
+#line 8 "../../../../../src/options/printer_options"
+template <> bool Options::wasSetByUser(options::modelFormatMode__option_t) const { return d_holder->modelFormatMode__setByUser__; }
+#line 11 "../../../../../src/options/printer_options"
+template <> void Options::set(options::instFormatMode__option_t, const options::instFormatMode__option_t::type& x) { d_holder->instFormatMode = x; }
+#line 11 "../../../../../src/options/printer_options"
+template <> const options::instFormatMode__option_t::type& Options::operator[](options::instFormatMode__option_t) const { return d_holder->instFormatMode; }
+#line 11 "../../../../../src/options/printer_options"
+template <> bool Options::wasSetByUser(options::instFormatMode__option_t) const { return d_holder->instFormatMode__setByUser__; }
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/printer_options"
+struct modelFormatMode__option_t modelFormatMode;
+#line 11 "../../../../../src/options/printer_options"
+struct instFormatMode__option_t instFormatMode;
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/printer_options.h b/src/options/printer_options.h
new file mode 100644
index 0000000..8bdf04b
--- /dev/null
+++ b/src/options/printer_options.h
@@ -0,0 +1,96 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__PRINTER_H
+#define __CVC4__OPTIONS__PRINTER_H
+
+#include "options/options.h"
+
+#line 8 "../../../../../src/options/printer_options"
+#include "options/printer_modes.h"
+#line 11 "../../../../../src/options/printer_options"
+#include "options/printer_modes.h"
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__PRINTER__FOR_OPTION_HOLDER \
+  modelFormatMode__option_t::type modelFormatMode; \
+  bool modelFormatMode__setByUser__; \
+  instFormatMode__option_t::type instFormatMode; \
+  bool instFormatMode__setByUser__;
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/printer_options"
+extern struct CVC4_PUBLIC modelFormatMode__option_t { typedef ModelFormatMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } modelFormatMode CVC4_PUBLIC;
+#line 11 "../../../../../src/options/printer_options"
+extern struct CVC4_PUBLIC instFormatMode__option_t { typedef InstFormatMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } instFormatMode CVC4_PUBLIC;
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+#line 8 "../../../../../src/options/printer_options"
+template <> void Options::set(options::modelFormatMode__option_t, const options::modelFormatMode__option_t::type& x);
+#line 8 "../../../../../src/options/printer_options"
+template <> const options::modelFormatMode__option_t::type& Options::operator[](options::modelFormatMode__option_t) const;
+#line 8 "../../../../../src/options/printer_options"
+template <> bool Options::wasSetByUser(options::modelFormatMode__option_t) const;
+#line 8 "../../../../../src/options/printer_options"
+template <> void Options::assign(options::modelFormatMode__option_t, std::string option, std::string value);
+#line 11 "../../../../../src/options/printer_options"
+template <> void Options::set(options::instFormatMode__option_t, const options::instFormatMode__option_t::type& x);
+#line 11 "../../../../../src/options/printer_options"
+template <> const options::instFormatMode__option_t::type& Options::operator[](options::instFormatMode__option_t) const;
+#line 11 "../../../../../src/options/printer_options"
+template <> bool Options::wasSetByUser(options::instFormatMode__option_t) const;
+#line 11 "../../../../../src/options/printer_options"
+template <> void Options::assign(options::instFormatMode__option_t, std::string option, std::string value);
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/printer_options"
+inline modelFormatMode__option_t::type modelFormatMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 8 "../../../../../src/options/printer_options"
+inline bool modelFormatMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 8 "../../../../../src/options/printer_options"
+inline void modelFormatMode__option_t::set(const modelFormatMode__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 11 "../../../../../src/options/printer_options"
+inline instFormatMode__option_t::type instFormatMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 11 "../../../../../src/options/printer_options"
+inline bool instFormatMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 11 "../../../../../src/options/printer_options"
+inline void instFormatMode__option_t::set(const instFormatMode__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__PRINTER_H */
diff --git a/src/options/proof_options b/src/options/proof_options
new file mode 100644
index 0000000..7895133
--- /dev/null
+++ b/src/options/proof_options
@@ -0,0 +1,20 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module PROOF "options/proof_options.h" Proof
+
+option lfscLetification --lfsc-letification bool :default true
+ turns on global letification in LFSC proofs
+
+option aggressiveCoreMin --aggressive-core-min bool :default false
+ turns on aggressive unsat core minimization (experimental)
+
+option fewerPreprocessingHoles --fewer-preprocessing-holes bool :default false :read-write
+ try to eliminate preprocessing holes in proofs
+
+option allowEmptyDependencies --allow-empty-dependencies bool :default false
+ if unable to track the dependencies of a rewritten/preprocessed assertion, fail silently
+
+endmodule
diff --git a/src/options/proof_options.cpp b/src/options/proof_options.cpp
new file mode 100644
index 0000000..38ab4bf
--- /dev/null
+++ b/src/options/proof_options.cpp
@@ -0,0 +1,59 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+#line 8 "../../../../../src/options/proof_options"
+template <> const options::lfscLetification__option_t::type& Options::operator[](options::lfscLetification__option_t) const { return d_holder->lfscLetification; }
+#line 8 "../../../../../src/options/proof_options"
+template <> bool Options::wasSetByUser(options::lfscLetification__option_t) const { return d_holder->lfscLetification__setByUser__; }
+#line 11 "../../../../../src/options/proof_options"
+template <> const options::aggressiveCoreMin__option_t::type& Options::operator[](options::aggressiveCoreMin__option_t) const { return d_holder->aggressiveCoreMin; }
+#line 11 "../../../../../src/options/proof_options"
+template <> bool Options::wasSetByUser(options::aggressiveCoreMin__option_t) const { return d_holder->aggressiveCoreMin__setByUser__; }
+#line 14 "../../../../../src/options/proof_options"
+template <> void Options::set(options::fewerPreprocessingHoles__option_t, const options::fewerPreprocessingHoles__option_t::type& x) { d_holder->fewerPreprocessingHoles = x; }
+#line 14 "../../../../../src/options/proof_options"
+template <> const options::fewerPreprocessingHoles__option_t::type& Options::operator[](options::fewerPreprocessingHoles__option_t) const { return d_holder->fewerPreprocessingHoles; }
+#line 14 "../../../../../src/options/proof_options"
+template <> bool Options::wasSetByUser(options::fewerPreprocessingHoles__option_t) const { return d_holder->fewerPreprocessingHoles__setByUser__; }
+#line 17 "../../../../../src/options/proof_options"
+template <> const options::allowEmptyDependencies__option_t::type& Options::operator[](options::allowEmptyDependencies__option_t) const { return d_holder->allowEmptyDependencies; }
+#line 17 "../../../../../src/options/proof_options"
+template <> bool Options::wasSetByUser(options::allowEmptyDependencies__option_t) const { return d_holder->allowEmptyDependencies__setByUser__; }
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/proof_options"
+struct lfscLetification__option_t lfscLetification;
+#line 11 "../../../../../src/options/proof_options"
+struct aggressiveCoreMin__option_t aggressiveCoreMin;
+#line 14 "../../../../../src/options/proof_options"
+struct fewerPreprocessingHoles__option_t fewerPreprocessingHoles;
+#line 17 "../../../../../src/options/proof_options"
+struct allowEmptyDependencies__option_t allowEmptyDependencies;
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/proof_options.h b/src/options/proof_options.h
new file mode 100644
index 0000000..c307c33
--- /dev/null
+++ b/src/options/proof_options.h
@@ -0,0 +1,118 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__PROOF_H
+#define __CVC4__OPTIONS__PROOF_H
+
+#include "options/options.h"
+
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__PROOF__FOR_OPTION_HOLDER \
+  lfscLetification__option_t::type lfscLetification; \
+  bool lfscLetification__setByUser__; \
+  aggressiveCoreMin__option_t::type aggressiveCoreMin; \
+  bool aggressiveCoreMin__setByUser__; \
+  fewerPreprocessingHoles__option_t::type fewerPreprocessingHoles; \
+  bool fewerPreprocessingHoles__setByUser__; \
+  allowEmptyDependencies__option_t::type allowEmptyDependencies; \
+  bool allowEmptyDependencies__setByUser__;
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/proof_options"
+extern struct CVC4_PUBLIC lfscLetification__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } lfscLetification CVC4_PUBLIC;
+#line 11 "../../../../../src/options/proof_options"
+extern struct CVC4_PUBLIC aggressiveCoreMin__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } aggressiveCoreMin CVC4_PUBLIC;
+#line 14 "../../../../../src/options/proof_options"
+extern struct CVC4_PUBLIC fewerPreprocessingHoles__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } fewerPreprocessingHoles CVC4_PUBLIC;
+#line 17 "../../../../../src/options/proof_options"
+extern struct CVC4_PUBLIC allowEmptyDependencies__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } allowEmptyDependencies CVC4_PUBLIC;
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+#line 8 "../../../../../src/options/proof_options"
+template <> const options::lfscLetification__option_t::type& Options::operator[](options::lfscLetification__option_t) const;
+#line 8 "../../../../../src/options/proof_options"
+template <> bool Options::wasSetByUser(options::lfscLetification__option_t) const;
+#line 8 "../../../../../src/options/proof_options"
+template <> void Options::assignBool(options::lfscLetification__option_t, std::string option, bool value);
+#line 11 "../../../../../src/options/proof_options"
+template <> const options::aggressiveCoreMin__option_t::type& Options::operator[](options::aggressiveCoreMin__option_t) const;
+#line 11 "../../../../../src/options/proof_options"
+template <> bool Options::wasSetByUser(options::aggressiveCoreMin__option_t) const;
+#line 11 "../../../../../src/options/proof_options"
+template <> void Options::assignBool(options::aggressiveCoreMin__option_t, std::string option, bool value);
+#line 14 "../../../../../src/options/proof_options"
+template <> void Options::set(options::fewerPreprocessingHoles__option_t, const options::fewerPreprocessingHoles__option_t::type& x);
+#line 14 "../../../../../src/options/proof_options"
+template <> const options::fewerPreprocessingHoles__option_t::type& Options::operator[](options::fewerPreprocessingHoles__option_t) const;
+#line 14 "../../../../../src/options/proof_options"
+template <> bool Options::wasSetByUser(options::fewerPreprocessingHoles__option_t) const;
+#line 14 "../../../../../src/options/proof_options"
+template <> void Options::assignBool(options::fewerPreprocessingHoles__option_t, std::string option, bool value);
+#line 17 "../../../../../src/options/proof_options"
+template <> const options::allowEmptyDependencies__option_t::type& Options::operator[](options::allowEmptyDependencies__option_t) const;
+#line 17 "../../../../../src/options/proof_options"
+template <> bool Options::wasSetByUser(options::allowEmptyDependencies__option_t) const;
+#line 17 "../../../../../src/options/proof_options"
+template <> void Options::assignBool(options::allowEmptyDependencies__option_t, std::string option, bool value);
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/proof_options"
+inline lfscLetification__option_t::type lfscLetification__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 8 "../../../../../src/options/proof_options"
+inline bool lfscLetification__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 11 "../../../../../src/options/proof_options"
+inline aggressiveCoreMin__option_t::type aggressiveCoreMin__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 11 "../../../../../src/options/proof_options"
+inline bool aggressiveCoreMin__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 14 "../../../../../src/options/proof_options"
+inline fewerPreprocessingHoles__option_t::type fewerPreprocessingHoles__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 14 "../../../../../src/options/proof_options"
+inline bool fewerPreprocessingHoles__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 14 "../../../../../src/options/proof_options"
+inline void fewerPreprocessingHoles__option_t::set(const fewerPreprocessingHoles__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 17 "../../../../../src/options/proof_options"
+inline allowEmptyDependencies__option_t::type allowEmptyDependencies__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 17 "../../../../../src/options/proof_options"
+inline bool allowEmptyDependencies__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__PROOF_H */
diff --git a/src/options/prop_options b/src/options/prop_options
new file mode 100644
index 0000000..8711219
--- /dev/null
+++ b/src/options/prop_options
@@ -0,0 +1,31 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module PROP "options/prop_options.h" SAT layer
+
+option satRandomFreq random-frequency --random-freq=P double :default 0.0 :predicate doubleGreaterOrEqual0 doubleLessOrEqual1
+ sets the frequency of random decisions in the sat solver (P=0.0 by default)
+option satRandomSeed random-seed --random-seed=S uint32_t :default 0 :read-write
+ sets the random seed for the sat solver
+
+option satVarDecay double :default 0.95 :predicate doubleGreaterOrEqual0 doubleLessOrEqual1
+ variable activity decay factor for Minisat
+option satClauseDecay double :default 0.999 :predicate doubleGreaterOrEqual0 doubleLessOrEqual1
+ clause activity decay factor for Minisat
+option satRestartFirst --restart-int-base=N unsigned :default 25
+ sets the base restart interval for the sat solver (N=25 by default)
+option satRestartInc --restart-int-inc=F double :default 3.0 :predicate doubleGreaterOrEqual0
+ sets the restart interval increase factor for the sat solver (F=3.0 by default)
+
+option sat_refine_conflicts --refine-conflicts bool :default false
+ refine theory conflict clauses (default false)
+
+option minisatUseElim --minisat-elimination bool :default true :read-write 
+ use Minisat elimination
+
+option minisatDumpDimacs --minisat-dump-dimacs bool :default false
+ instead of solving minisat dumps the asserted clauses in Dimacs format
+ 
+endmodule
diff --git a/src/options/prop_options.cpp b/src/options/prop_options.cpp
new file mode 100644
index 0000000..98892a4
--- /dev/null
+++ b/src/options/prop_options.cpp
@@ -0,0 +1,95 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+#line 8 "../../../../../src/options/prop_options"
+template <> const options::satRandomFreq__option_t::type& Options::operator[](options::satRandomFreq__option_t) const { return d_holder->satRandomFreq; }
+#line 8 "../../../../../src/options/prop_options"
+template <> bool Options::wasSetByUser(options::satRandomFreq__option_t) const { return d_holder->satRandomFreq__setByUser__; }
+#line 10 "../../../../../src/options/prop_options"
+template <> void Options::set(options::satRandomSeed__option_t, const options::satRandomSeed__option_t::type& x) { d_holder->satRandomSeed = x; }
+#line 10 "../../../../../src/options/prop_options"
+template <> const options::satRandomSeed__option_t::type& Options::operator[](options::satRandomSeed__option_t) const { return d_holder->satRandomSeed; }
+#line 10 "../../../../../src/options/prop_options"
+template <> bool Options::wasSetByUser(options::satRandomSeed__option_t) const { return d_holder->satRandomSeed__setByUser__; }
+#line 13 "../../../../../src/options/prop_options"
+template <> void Options::set(options::satVarDecay__option_t, const options::satVarDecay__option_t::type& x) { d_holder->satVarDecay = x; }
+#line 13 "../../../../../src/options/prop_options"
+template <> const options::satVarDecay__option_t::type& Options::operator[](options::satVarDecay__option_t) const { return d_holder->satVarDecay; }
+#line 13 "../../../../../src/options/prop_options"
+template <> bool Options::wasSetByUser(options::satVarDecay__option_t) const { return d_holder->satVarDecay__setByUser__; }
+#line 15 "../../../../../src/options/prop_options"
+template <> void Options::set(options::satClauseDecay__option_t, const options::satClauseDecay__option_t::type& x) { d_holder->satClauseDecay = x; }
+#line 15 "../../../../../src/options/prop_options"
+template <> const options::satClauseDecay__option_t::type& Options::operator[](options::satClauseDecay__option_t) const { return d_holder->satClauseDecay; }
+#line 15 "../../../../../src/options/prop_options"
+template <> bool Options::wasSetByUser(options::satClauseDecay__option_t) const { return d_holder->satClauseDecay__setByUser__; }
+#line 17 "../../../../../src/options/prop_options"
+template <> const options::satRestartFirst__option_t::type& Options::operator[](options::satRestartFirst__option_t) const { return d_holder->satRestartFirst; }
+#line 17 "../../../../../src/options/prop_options"
+template <> bool Options::wasSetByUser(options::satRestartFirst__option_t) const { return d_holder->satRestartFirst__setByUser__; }
+#line 19 "../../../../../src/options/prop_options"
+template <> const options::satRestartInc__option_t::type& Options::operator[](options::satRestartInc__option_t) const { return d_holder->satRestartInc; }
+#line 19 "../../../../../src/options/prop_options"
+template <> bool Options::wasSetByUser(options::satRestartInc__option_t) const { return d_holder->satRestartInc__setByUser__; }
+#line 22 "../../../../../src/options/prop_options"
+template <> const options::sat_refine_conflicts__option_t::type& Options::operator[](options::sat_refine_conflicts__option_t) const { return d_holder->sat_refine_conflicts; }
+#line 22 "../../../../../src/options/prop_options"
+template <> bool Options::wasSetByUser(options::sat_refine_conflicts__option_t) const { return d_holder->sat_refine_conflicts__setByUser__; }
+#line 25 "../../../../../src/options/prop_options"
+template <> void Options::set(options::minisatUseElim__option_t, const options::minisatUseElim__option_t::type& x) { d_holder->minisatUseElim = x; }
+#line 25 "../../../../../src/options/prop_options"
+template <> const options::minisatUseElim__option_t::type& Options::operator[](options::minisatUseElim__option_t) const { return d_holder->minisatUseElim; }
+#line 25 "../../../../../src/options/prop_options"
+template <> bool Options::wasSetByUser(options::minisatUseElim__option_t) const { return d_holder->minisatUseElim__setByUser__; }
+#line 28 "../../../../../src/options/prop_options"
+template <> const options::minisatDumpDimacs__option_t::type& Options::operator[](options::minisatDumpDimacs__option_t) const { return d_holder->minisatDumpDimacs; }
+#line 28 "../../../../../src/options/prop_options"
+template <> bool Options::wasSetByUser(options::minisatDumpDimacs__option_t) const { return d_holder->minisatDumpDimacs__setByUser__; }
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/prop_options"
+struct satRandomFreq__option_t satRandomFreq;
+#line 10 "../../../../../src/options/prop_options"
+struct satRandomSeed__option_t satRandomSeed;
+#line 13 "../../../../../src/options/prop_options"
+struct satVarDecay__option_t satVarDecay;
+#line 15 "../../../../../src/options/prop_options"
+struct satClauseDecay__option_t satClauseDecay;
+#line 17 "../../../../../src/options/prop_options"
+struct satRestartFirst__option_t satRestartFirst;
+#line 19 "../../../../../src/options/prop_options"
+struct satRestartInc__option_t satRestartInc;
+#line 22 "../../../../../src/options/prop_options"
+struct sat_refine_conflicts__option_t sat_refine_conflicts;
+#line 25 "../../../../../src/options/prop_options"
+struct minisatUseElim__option_t minisatUseElim;
+#line 28 "../../../../../src/options/prop_options"
+struct minisatDumpDimacs__option_t minisatDumpDimacs;
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/prop_options.h b/src/options/prop_options.h
new file mode 100644
index 0000000..9457dd2
--- /dev/null
+++ b/src/options/prop_options.h
@@ -0,0 +1,205 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__PROP_H
+#define __CVC4__OPTIONS__PROP_H
+
+#include "options/options.h"
+
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__PROP__FOR_OPTION_HOLDER \
+  satRandomFreq__option_t::type satRandomFreq; \
+  bool satRandomFreq__setByUser__; \
+  satRandomSeed__option_t::type satRandomSeed; \
+  bool satRandomSeed__setByUser__; \
+  satVarDecay__option_t::type satVarDecay; \
+  bool satVarDecay__setByUser__; \
+  satClauseDecay__option_t::type satClauseDecay; \
+  bool satClauseDecay__setByUser__; \
+  satRestartFirst__option_t::type satRestartFirst; \
+  bool satRestartFirst__setByUser__; \
+  satRestartInc__option_t::type satRestartInc; \
+  bool satRestartInc__setByUser__; \
+  sat_refine_conflicts__option_t::type sat_refine_conflicts; \
+  bool sat_refine_conflicts__setByUser__; \
+  minisatUseElim__option_t::type minisatUseElim; \
+  bool minisatUseElim__setByUser__; \
+  minisatDumpDimacs__option_t::type minisatDumpDimacs; \
+  bool minisatDumpDimacs__setByUser__;
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/prop_options"
+extern struct CVC4_PUBLIC satRandomFreq__option_t { typedef double type; type operator()() const; bool wasSetByUser() const; } satRandomFreq CVC4_PUBLIC;
+#line 10 "../../../../../src/options/prop_options"
+extern struct CVC4_PUBLIC satRandomSeed__option_t { typedef uint32_t type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } satRandomSeed CVC4_PUBLIC;
+#line 13 "../../../../../src/options/prop_options"
+extern struct CVC4_PUBLIC satVarDecay__option_t { typedef double type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } satVarDecay CVC4_PUBLIC;
+#line 15 "../../../../../src/options/prop_options"
+extern struct CVC4_PUBLIC satClauseDecay__option_t { typedef double type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } satClauseDecay CVC4_PUBLIC;
+#line 17 "../../../../../src/options/prop_options"
+extern struct CVC4_PUBLIC satRestartFirst__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } satRestartFirst CVC4_PUBLIC;
+#line 19 "../../../../../src/options/prop_options"
+extern struct CVC4_PUBLIC satRestartInc__option_t { typedef double type; type operator()() const; bool wasSetByUser() const; } satRestartInc CVC4_PUBLIC;
+#line 22 "../../../../../src/options/prop_options"
+extern struct CVC4_PUBLIC sat_refine_conflicts__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sat_refine_conflicts CVC4_PUBLIC;
+#line 25 "../../../../../src/options/prop_options"
+extern struct CVC4_PUBLIC minisatUseElim__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } minisatUseElim CVC4_PUBLIC;
+#line 28 "../../../../../src/options/prop_options"
+extern struct CVC4_PUBLIC minisatDumpDimacs__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } minisatDumpDimacs CVC4_PUBLIC;
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+#line 8 "../../../../../src/options/prop_options"
+template <> const options::satRandomFreq__option_t::type& Options::operator[](options::satRandomFreq__option_t) const;
+#line 8 "../../../../../src/options/prop_options"
+template <> bool Options::wasSetByUser(options::satRandomFreq__option_t) const;
+#line 8 "../../../../../src/options/prop_options"
+template <> void Options::assign(options::satRandomFreq__option_t, std::string option, std::string value);
+#line 10 "../../../../../src/options/prop_options"
+template <> void Options::set(options::satRandomSeed__option_t, const options::satRandomSeed__option_t::type& x);
+#line 10 "../../../../../src/options/prop_options"
+template <> const options::satRandomSeed__option_t::type& Options::operator[](options::satRandomSeed__option_t) const;
+#line 10 "../../../../../src/options/prop_options"
+template <> bool Options::wasSetByUser(options::satRandomSeed__option_t) const;
+#line 10 "../../../../../src/options/prop_options"
+template <> void Options::assign(options::satRandomSeed__option_t, std::string option, std::string value);
+#line 13 "../../../../../src/options/prop_options"
+template <> void Options::set(options::satVarDecay__option_t, const options::satVarDecay__option_t::type& x);
+#line 13 "../../../../../src/options/prop_options"
+template <> const options::satVarDecay__option_t::type& Options::operator[](options::satVarDecay__option_t) const;
+#line 13 "../../../../../src/options/prop_options"
+template <> bool Options::wasSetByUser(options::satVarDecay__option_t) const;
+#line 13 "../../../../../src/options/prop_options"
+template <> void Options::assign(options::satVarDecay__option_t, std::string option, std::string value);
+#line 15 "../../../../../src/options/prop_options"
+template <> void Options::set(options::satClauseDecay__option_t, const options::satClauseDecay__option_t::type& x);
+#line 15 "../../../../../src/options/prop_options"
+template <> const options::satClauseDecay__option_t::type& Options::operator[](options::satClauseDecay__option_t) const;
+#line 15 "../../../../../src/options/prop_options"
+template <> bool Options::wasSetByUser(options::satClauseDecay__option_t) const;
+#line 15 "../../../../../src/options/prop_options"
+template <> void Options::assign(options::satClauseDecay__option_t, std::string option, std::string value);
+#line 17 "../../../../../src/options/prop_options"
+template <> const options::satRestartFirst__option_t::type& Options::operator[](options::satRestartFirst__option_t) const;
+#line 17 "../../../../../src/options/prop_options"
+template <> bool Options::wasSetByUser(options::satRestartFirst__option_t) const;
+#line 17 "../../../../../src/options/prop_options"
+template <> void Options::assign(options::satRestartFirst__option_t, std::string option, std::string value);
+#line 19 "../../../../../src/options/prop_options"
+template <> const options::satRestartInc__option_t::type& Options::operator[](options::satRestartInc__option_t) const;
+#line 19 "../../../../../src/options/prop_options"
+template <> bool Options::wasSetByUser(options::satRestartInc__option_t) const;
+#line 19 "../../../../../src/options/prop_options"
+template <> void Options::assign(options::satRestartInc__option_t, std::string option, std::string value);
+#line 22 "../../../../../src/options/prop_options"
+template <> const options::sat_refine_conflicts__option_t::type& Options::operator[](options::sat_refine_conflicts__option_t) const;
+#line 22 "../../../../../src/options/prop_options"
+template <> bool Options::wasSetByUser(options::sat_refine_conflicts__option_t) const;
+#line 22 "../../../../../src/options/prop_options"
+template <> void Options::assignBool(options::sat_refine_conflicts__option_t, std::string option, bool value);
+#line 25 "../../../../../src/options/prop_options"
+template <> void Options::set(options::minisatUseElim__option_t, const options::minisatUseElim__option_t::type& x);
+#line 25 "../../../../../src/options/prop_options"
+template <> const options::minisatUseElim__option_t::type& Options::operator[](options::minisatUseElim__option_t) const;
+#line 25 "../../../../../src/options/prop_options"
+template <> bool Options::wasSetByUser(options::minisatUseElim__option_t) const;
+#line 25 "../../../../../src/options/prop_options"
+template <> void Options::assignBool(options::minisatUseElim__option_t, std::string option, bool value);
+#line 28 "../../../../../src/options/prop_options"
+template <> const options::minisatDumpDimacs__option_t::type& Options::operator[](options::minisatDumpDimacs__option_t) const;
+#line 28 "../../../../../src/options/prop_options"
+template <> bool Options::wasSetByUser(options::minisatDumpDimacs__option_t) const;
+#line 28 "../../../../../src/options/prop_options"
+template <> void Options::assignBool(options::minisatDumpDimacs__option_t, std::string option, bool value);
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/prop_options"
+inline satRandomFreq__option_t::type satRandomFreq__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 8 "../../../../../src/options/prop_options"
+inline bool satRandomFreq__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 10 "../../../../../src/options/prop_options"
+inline satRandomSeed__option_t::type satRandomSeed__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 10 "../../../../../src/options/prop_options"
+inline bool satRandomSeed__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 10 "../../../../../src/options/prop_options"
+inline void satRandomSeed__option_t::set(const satRandomSeed__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 13 "../../../../../src/options/prop_options"
+inline satVarDecay__option_t::type satVarDecay__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 13 "../../../../../src/options/prop_options"
+inline bool satVarDecay__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 13 "../../../../../src/options/prop_options"
+inline void satVarDecay__option_t::set(const satVarDecay__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 15 "../../../../../src/options/prop_options"
+inline satClauseDecay__option_t::type satClauseDecay__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 15 "../../../../../src/options/prop_options"
+inline bool satClauseDecay__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 15 "../../../../../src/options/prop_options"
+inline void satClauseDecay__option_t::set(const satClauseDecay__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 17 "../../../../../src/options/prop_options"
+inline satRestartFirst__option_t::type satRestartFirst__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 17 "../../../../../src/options/prop_options"
+inline bool satRestartFirst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 19 "../../../../../src/options/prop_options"
+inline satRestartInc__option_t::type satRestartInc__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 19 "../../../../../src/options/prop_options"
+inline bool satRestartInc__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 22 "../../../../../src/options/prop_options"
+inline sat_refine_conflicts__option_t::type sat_refine_conflicts__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 22 "../../../../../src/options/prop_options"
+inline bool sat_refine_conflicts__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 25 "../../../../../src/options/prop_options"
+inline minisatUseElim__option_t::type minisatUseElim__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 25 "../../../../../src/options/prop_options"
+inline bool minisatUseElim__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 25 "../../../../../src/options/prop_options"
+inline void minisatUseElim__option_t::set(const minisatUseElim__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 28 "../../../../../src/options/prop_options"
+inline minisatDumpDimacs__option_t::type minisatDumpDimacs__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 28 "../../../../../src/options/prop_options"
+inline bool minisatDumpDimacs__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__PROP_H */
diff --git a/src/options/quantifiers_modes.cpp b/src/options/quantifiers_modes.cpp
new file mode 100644
index 0000000..e2cd78d
--- /dev/null
+++ b/src/options/quantifiers_modes.cpp
@@ -0,0 +1,88 @@
+/*********************                                                        */
+/*! \file quantifiers_modes.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+#include "options/quantifiers_modes.h"
+
+#include <iostream>
+
+namespace CVC4 {
+
+std::ostream& operator<<(std::ostream& out, theory::quantifiers::InstWhenMode mode) {
+  switch(mode) {
+  case theory::quantifiers::INST_WHEN_PRE_FULL:
+    out << "INST_WHEN_PRE_FULL";
+    break;
+  case theory::quantifiers::INST_WHEN_FULL:
+    out << "INST_WHEN_FULL";
+    break;
+  case theory::quantifiers::INST_WHEN_FULL_LAST_CALL:
+    out << "INST_WHEN_FULL_LAST_CALL";
+    break;
+  case theory::quantifiers::INST_WHEN_LAST_CALL:
+    out << "INST_WHEN_LAST_CALL";
+    break;
+  default:
+    out << "InstWhenMode!UNKNOWN";
+  }
+
+  return out;
+}
+
+std::ostream& operator<<(std::ostream& out, theory::quantifiers::LiteralMatchMode mode) {
+  switch(mode) {
+  case theory::quantifiers::LITERAL_MATCH_NONE:
+    out << "LITERAL_MATCH_NONE";
+    break;
+  case theory::quantifiers::LITERAL_MATCH_USE:
+    out << "LITERAL_MATCH_USE";
+    break;
+  case theory::quantifiers::LITERAL_MATCH_AGG_PREDICATE:
+    out << "LITERAL_MATCH_AGG_PREDICATE";
+    break;
+  case theory::quantifiers::LITERAL_MATCH_AGG:
+    out << "LITERAL_MATCH_AGG";
+    break;
+  default:
+    out << "LiteralMatchMode!UNKNOWN";
+  }
+
+  return out;
+}
+
+std::ostream& operator<<(std::ostream& out, theory::quantifiers::MbqiMode mode) {
+  switch(mode) {
+  case theory::quantifiers::MBQI_GEN_EVAL:
+    out << "MBQI_GEN_EVAL";
+    break;
+  case theory::quantifiers::MBQI_NONE:
+    out << "MBQI_NONE";
+    break;
+  case theory::quantifiers::MBQI_FMC:
+    out << "MBQI_FMC";
+    break;
+  case theory::quantifiers::MBQI_ABS:
+    out << "MBQI_ABS";
+    break;
+  case theory::quantifiers::MBQI_TRUST:
+    out << "MBQI_TRUST";
+    break;
+  default:
+    out << "MbqiMode!UNKNOWN";
+  }
+  return out;
+}
+
+}/* CVC4 namespace */
diff --git a/src/options/quantifiers_modes.h b/src/options/quantifiers_modes.h
new file mode 100644
index 0000000..e4c539e
--- /dev/null
+++ b/src/options/quantifiers_modes.h
@@ -0,0 +1,230 @@
+/*********************                                                        */
+/*! \file quantifiers_modes.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__BASE__QUANTIFIERS_MODES_H
+#define __CVC4__BASE__QUANTIFIERS_MODES_H
+
+#include <iostream>
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+enum InstWhenMode {
+  /** Apply instantiation round before full effort (possibly at standard effort) */
+  INST_WHEN_PRE_FULL,
+  /** Apply instantiation round at full effort or above  */
+  INST_WHEN_FULL,
+  /** Apply instantiation round at full effort, after all other theories finish, or above  */
+  INST_WHEN_FULL_DELAY,
+  /** Apply instantiation round at full effort half the time, and last call always */
+  INST_WHEN_FULL_LAST_CALL,
+  /** Apply instantiation round at full effort after all other theories finish half the time, and last call always */
+  INST_WHEN_FULL_DELAY_LAST_CALL,
+  /** Apply instantiation round at last call only */
+  INST_WHEN_LAST_CALL,
+};
+
+enum LiteralMatchMode {
+  /** Do not consider polarity of patterns */
+  LITERAL_MATCH_NONE,
+  /** Conservatively consider polarity of patterns */
+  LITERAL_MATCH_USE,
+  /** Aggressively consider polarity of Boolean predicates */
+  LITERAL_MATCH_AGG_PREDICATE,
+  /** Aggressively consider polarity of all terms */
+  LITERAL_MATCH_AGG,
+};
+
+enum MbqiMode {
+  /** mbqi from CADE 24 paper */
+  MBQI_GEN_EVAL,
+  /** no mbqi */
+  MBQI_NONE,
+  /** default, mbqi from Section 5.4.2 of AJR thesis */
+  MBQI_FMC,
+  /** mbqi with integer intervals */
+  MBQI_FMC_INTERVAL,
+  /** abstract mbqi algorithm */
+  MBQI_ABS,
+  /** mbqi trust (produce no instantiations) */
+  MBQI_TRUST,
+};
+
+enum QcfWhenMode {
+  /** default, apply at full effort */
+  QCF_WHEN_MODE_DEFAULT,
+  /** apply at last call */
+  QCF_WHEN_MODE_LAST_CALL,
+  /** apply at standard effort */
+  QCF_WHEN_MODE_STD,
+  /** apply based on heuristics */
+  QCF_WHEN_MODE_STD_H,
+};
+
+enum QcfMode {
+  /** default, use qcf for conflicts only */
+  QCF_CONFLICT_ONLY,
+  /** use qcf for conflicts and propagations */
+  QCF_PROP_EQ,
+  /** use qcf for conflicts, propagations and heuristic instantiations */
+  QCF_PARTIAL,
+};
+
+enum UserPatMode {
+  /** use but do not trust */
+  USER_PAT_MODE_USE,
+  /** default, if patterns are supplied for a quantifier, use only those */
+  USER_PAT_MODE_TRUST,
+  /** resort to user patterns only when necessary */
+  USER_PAT_MODE_RESORT,
+  /** ignore user patterns */
+  USER_PAT_MODE_IGNORE,
+  /** interleave use/resort for user patterns */
+  USER_PAT_MODE_INTERLEAVE,
+};
+
+enum TriggerSelMode {
+  /** only consider minimal terms for triggers */
+  TRIGGER_SEL_MIN,
+  /** only consider maximal terms for triggers */
+  TRIGGER_SEL_MAX,
+  /** consider minimal terms for single triggers, maximal for non-single */
+  TRIGGER_SEL_MIN_SINGLE_MAX,
+  /** consider minimal terms for single triggers, all for non-single */
+  TRIGGER_SEL_MIN_SINGLE_ALL,
+  /** consider all terms for triggers */
+  TRIGGER_SEL_ALL,
+};
+
+enum TriggerActiveSelMode {
+  /** always use all triggers */
+  TRIGGER_ACTIVE_SEL_ALL,
+  /** only use triggers with minimal # of ground terms */
+  TRIGGER_ACTIVE_SEL_MIN,
+  /** only use triggers with maximal # of ground terms */
+  TRIGGER_ACTIVE_SEL_MAX,
+};
+
+enum CVC4_PUBLIC PrenexQuantMode {
+  /** do not prenex */
+  PRENEX_QUANT_NONE,
+  /** prenex same sign quantifiers */
+  PRENEX_QUANT_SIMPLE,
+  /** aggressive prenex, disjunctive prenex normal form */
+  PRENEX_QUANT_DISJ_NORMAL,
+  /** prenex normal form */
+  PRENEX_QUANT_NORMAL,
+};
+
+enum CegqiFairMode {
+  /** enforce fairness by UF corresponding to datatypes size */
+  CEGQI_FAIR_UF_DT_SIZE,
+  /** enforce fairness by datatypes size */
+  CEGQI_FAIR_DT_SIZE,
+  /** enforce fairness by datatypes height bound */
+  CEGQI_FAIR_DT_HEIGHT_PRED,
+  /** enforce fairness by datatypes size bound */
+  CEGQI_FAIR_DT_SIZE_PRED,
+  /** do not use fair strategy for CEGQI */
+  CEGQI_FAIR_NONE,
+};
+
+enum TermDbMode {
+  /** consider all terms in master equality engine */
+  TERM_DB_ALL,
+  /** consider only relevant terms */
+  TERM_DB_RELEVANT,
+};
+
+enum IteLiftQuantMode {
+  /** do not lift ITEs in quantified formulas */
+  ITE_LIFT_QUANT_MODE_NONE,
+  /** only lift ITEs in quantified formulas if reduces the term size */
+  ITE_LIFT_QUANT_MODE_SIMPLE,
+  /** lift ITEs  */
+  ITE_LIFT_QUANT_MODE_ALL,
+};
+
+enum CegqiSingleInvMode {
+  /** do not use single invocation techniques */
+  CEGQI_SI_MODE_NONE,
+  /** use single invocation techniques */
+  CEGQI_SI_MODE_USE,
+  /** always use single invocation techniques, abort if solution reconstruction will fail */
+  CEGQI_SI_MODE_ALL_ABORT,
+  /** always use single invocation techniques */
+  CEGQI_SI_MODE_ALL,
+};
+
+enum SygusInvTemplMode {
+  /** synthesize I( x ) */
+  SYGUS_INV_TEMPL_MODE_NONE,
+  /** synthesize ( pre( x ) V I( x ) ) */
+  SYGUS_INV_TEMPL_MODE_PRE,
+  /** synthesize ( post( x ) ^ I( x ) ) */
+  SYGUS_INV_TEMPL_MODE_POST,
+};
+
+enum MacrosQuantMode {
+  /** infer all definitions */
+  MACROS_QUANT_MODE_ALL,
+  /** infer ground definitions */
+  MACROS_QUANT_MODE_GROUND,
+  /** infer ground uf definitions */
+  MACROS_QUANT_MODE_GROUND_UF,
+};
+
+enum QuantDSplitMode {
+  /** never do quantifiers splitting */
+  QUANT_DSPLIT_MODE_NONE,
+  /** default */
+  QUANT_DSPLIT_MODE_DEFAULT,
+  /** do quantifiers splitting aggressively */
+  QUANT_DSPLIT_MODE_AGG,
+};
+
+enum QuantRepMode {
+  /** let equality engine choose representatives */
+  QUANT_REP_MODE_EE,
+  /** default, choose representatives that appear first */
+  QUANT_REP_MODE_FIRST,
+  /** choose representatives that have minimal depth */
+  QUANT_REP_MODE_DEPTH,
+};
+
+enum FmfBoundMinMode {
+  /** do not minimize bounds */
+  FMF_BOUND_MIN_NONE,
+  /** default, minimize integer ranges */
+  FMF_BOUND_MIN_INT_RANGE,
+  /** minimize set cardinality ranges */
+  FMF_BOUND_MIN_SET_CARD,
+  /** minimize all bounds */
+  FMF_BOUND_MIN_ALL,
+};
+
+}/* CVC4::theory::quantifiers namespace */
+}/* CVC4::theory namespace */
+
+std::ostream& operator<<(std::ostream& out, theory::quantifiers::InstWhenMode mode) CVC4_PUBLIC;
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__BASE__QUANTIFIERS_MODES_H */
diff --git a/src/options/quantifiers_options b/src/options/quantifiers_options
new file mode 100644
index 0000000..cf8fca2
--- /dev/null
+++ b/src/options/quantifiers_options
@@ -0,0 +1,350 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module QUANTIFIERS "options/quantifiers_options.h" Quantifiers
+
+#### rewriter options
+
+# Whether to mini-scope quantifiers.
+# For example, forall x. ( P( x ) ^ Q( x ) ) will be rewritten to
+# ( forall x. P( x ) ) ^ ( forall x. Q( x ) )
+option miniscopeQuant --miniscope-quant bool :default true :read-write
+ miniscope quantifiers
+# Whether to mini-scope quantifiers based on formulas with no free variables.
+# For example, forall x. ( P( x ) V Q ) will be rewritten to
+# ( forall x. P( x ) ) V Q
+option miniscopeQuantFreeVar --miniscope-quant-fv bool :default true :read-write
+ miniscope quantifiers for ground subformulas
+option quantSplit --quant-split bool :default true :read-write
+ apply splitting to quantified formulas based on variable disjoint disjuncts
+option prenexQuant --prenex-quant=MODE CVC4::theory::quantifiers::PrenexQuantMode :default CVC4::theory::quantifiers::PRENEX_QUANT_SIMPLE :include "options/quantifiers_modes.h" :read-write :handler stringToPrenexQuantMode
+ prenex mode for quantified formulas
+option prenexQuantUser --prenex-quant-user bool :default false :read-write
+ prenex quantified formulas with user patterns
+# Whether to variable-eliminate quantifiers.
+# For example, forall x y. ( P( x, y ) V x != c ) will be rewritten to
+#   forall y. P( c, y )
+option varElimQuant --var-elim-quant bool :default true
+ enable simple variable elimination for quantified formulas
+option varIneqElimQuant --var-ineq-elim-quant bool :default true
+ enable variable elimination based on infinite projection of unbound arithmetic variables
+option dtVarExpandQuant --dt-var-exp-quant bool :default true
+ expand datatype variables bound to one constructor in quantifiers
+#ite lift mode for quantified formulas
+option iteLiftQuant --ite-lift-quant=MODE CVC4::theory::quantifiers::IteLiftQuantMode :default CVC4::theory::quantifiers::ITE_LIFT_QUANT_MODE_SIMPLE :include "options/quantifiers_modes.h" :read-write :handler stringToIteLiftQuantMode
+ ite lifting mode for quantified formulas
+option condVarSplitQuant --cond-var-split-quant bool :default true
+ split quantified formulas that lead to variable eliminations
+option condVarSplitQuantAgg --cond-var-split-agg-quant bool :default false
+ aggressive split quantified formulas that lead to variable eliminations
+option iteDtTesterSplitQuant --ite-dtt-split-quant bool :read-write :default false
+ split ites with dt testers as conditions
+# Whether to pre-skolemize quantifier bodies.
+# For example, forall x. ( P( x ) => (exists y. f( y ) = x) ) will be rewritten to
+#   forall x. P( x ) => f( S( x ) ) = x
+option preSkolemQuant --pre-skolem-quant bool :read-write :default false
+ apply skolemization eagerly to bodies of quantified formulas
+option preSkolemQuantNested --pre-skolem-quant-nested bool :read-write :default true
+ apply skolemization to nested quantified formulas
+option preSkolemQuantAgg --pre-skolem-quant-agg bool :read-write :default true
+ apply skolemization to quantified formulas aggressively
+option aggressiveMiniscopeQuant --ag-miniscope-quant bool :default false
+ perform aggressive miniscoping for quantifiers
+option elimTautQuant --elim-taut-quant bool :default true
+ eliminate tautological disjuncts of quantified formulas
+option elimExtArithQuant --elim-ext-arith-quant bool :default true
+ eliminate extended arithmetic symbols in quantified formulas
+option condRewriteQuant --cond-rewrite-quant bool :default true
+ conditional rewriting of quantified formulas
+ 
+#### E-matching options
+ 
+option eMatching --e-matching bool :read-write :default true
+ whether to do heuristic E-matching
+
+option termDbMode --term-db-mode CVC4::theory::quantifiers::TermDbMode :default CVC4::theory::quantifiers::TERM_DB_ALL :read-write :include "options/quantifiers_modes.h" :handler  stringToTermDbMode
+ which ground terms to consider for instantiation
+option registerQuantBodyTerms --register-quant-body-terms bool :default false
+ consider ground terms within bodies of quantified formulas for matching
+option inferArithTriggerEq --infer-arith-trigger-eq bool :default false
+ infer equalities for trigger terms based on solving arithmetic equalities
+option inferArithTriggerEqExp --infer-arith-trigger-eq-exp bool :default false
+ record explanations for inferArithTriggerEq
+ 
+option strictTriggers --strict-triggers bool :default false
+ only instantiate quantifiers with user patterns based on triggers
+option relevantTriggers --relevant-triggers bool :default false
+ prefer triggers that are more relevant based on SInE style analysis
+option relationalTriggers --relational-triggers bool :default false
+ choose relational triggers such as x = f(y), x >= f(y)
+option purifyTriggers --purify-triggers bool :default false :read-write
+ purify triggers, e.g. f( x+1 ) becomes f( y ), x mapsto y-1
+option purifyDtTriggers --purify-dt-triggers bool :default false :read-write
+ purify dt triggers, match all constructors of correct form instead of selectors
+option pureThTriggers --pure-th-triggers bool :default false :read-write
+ use pure theory terms as single triggers
+option partialTriggers --partial-triggers bool :default false :read-write
+ use triggers that do not contain all free variables
+option multiTriggerWhenSingle --multi-trigger-when-single bool :default false
+ select multi triggers when single triggers exist
+option multiTriggerPriority --multi-trigger-priority bool :default false
+ only try multi triggers if single triggers give no instantiations
+option triggerSelMode --trigger-sel CVC4::theory::quantifiers::TriggerSelMode :default CVC4::theory::quantifiers::TRIGGER_SEL_MIN :read-write :include "options/quantifiers_modes.h" :handler  stringToTriggerSelMode
+ selection mode for triggers
+option triggerActiveSelMode --trigger-active-sel CVC4::theory::quantifiers::TriggerActiveSelMode :default CVC4::theory::quantifiers::TRIGGER_ACTIVE_SEL_ALL :read-write :include "options/quantifiers_modes.h" :handler stringToTriggerActiveSelMode
+ selection mode to activate triggers
+option userPatternsQuant --user-pat=MODE CVC4::theory::quantifiers::UserPatMode :default CVC4::theory::quantifiers::USER_PAT_MODE_TRUST :read-write :include "options/quantifiers_modes.h" :handler stringToUserPatMode
+ policy for handling user-provided patterns for quantifier instantiation
+option incrementTriggers --increment-triggers bool :default true
+ generate additional triggers as needed during search
+ 
+option instWhenMode --inst-when=MODE CVC4::theory::quantifiers::InstWhenMode :default CVC4::theory::quantifiers::INST_WHEN_FULL_LAST_CALL :read-write :include "options/quantifiers_modes.h" :handler stringToInstWhenMode :predicate checkInstWhenMode
+ when to apply instantiation
+option instWhenStrictInterleave --inst-when-strict-interleave bool :default true :read-write
+ ensure theory combination and standard quantifier effort strategies take turns 
+option instWhenPhase --inst-when-phase=N int :read-write :default 2 :read-write
+ instantiation rounds quantifiers takes (>=1) before allowing theory combination to happen
+option instWhenTcFirst --inst-when-tc-first bool :default true :read-write
+ allow theory combination to happen once initially, before quantifier strategies are run
+ 
+option instMaxLevel --inst-max-level=N int :read-write :default -1
+ maximum inst level of terms used to instantiate quantified formulas with (-1 == no limit, default)
+option instLevelInputOnly --inst-level-input-only bool :default true
+ only input terms are assigned instantiation level zero
+option quantRepMode --quant-rep-mode=MODE  CVC4::theory::quantifiers::QuantRepMode :default CVC4::theory::quantifiers::QUANT_REP_MODE_FIRST :read-write :include "options/quantifiers_modes.h" :handler stringToQuantRepMode
+ selection mode for representatives in quantifiers engine
+option instRelevantCond --inst-rlv-cond bool :default false
+ add relevancy conditions for instantiations
+
+option fullSaturateQuant --full-saturate-quant bool :default false :read-write
+ when all other quantifier instantiation strategies fail, instantiate with ground terms from relevant domain, then arbitrary ground terms before answering unknown
+option fullSaturateQuantRd --full-saturate-quant-rd bool :default true
+ whether to use relevant domain first for full saturation instantiation strategy
+option fullSaturateInst --fs-inst bool :default false
+ interleave full saturate instantiation with other techniques
+
+option literalMatchMode --literal-matching=MODE CVC4::theory::quantifiers::LiteralMatchMode :default CVC4::theory::quantifiers::LITERAL_MATCH_USE :include "options/quantifiers_modes.h" :handler stringToLiteralMatchMode :predicate checkLiteralMatchMode
+ choose literal matching mode
+
+### finite model finding options
+ 
+option finiteModelFind finite-model-find --finite-model-find bool :default false :read-write
+ use finite model finding heuristic for quantifier instantiation
+
+option quantFunWellDefined --quant-fun-wd bool :default false
+ assume that function defined by quantifiers are well defined
+option fmfFunWellDefined --fmf-fun bool :default false :read-write
+ find models for recursively defined functions, assumes functions are admissible
+option fmfFunWellDefinedRelevant --fmf-fun-rlv bool :default false
+ find models for recursively defined functions, assumes functions are admissible, allows empty type when function is irrelevant
+option fmfEmptySorts --fmf-empty-sorts bool :default false
+ allow finite model finding to assume sorts that do not occur in ground assertions are empty
+ 
+option mbqiMode --mbqi=MODE CVC4::theory::quantifiers::MbqiMode :read-write :default CVC4::theory::quantifiers::MBQI_FMC :include "options/quantifiers_modes.h" :handler stringToMbqiMode :predicate checkMbqiMode
+ choose mode for model-based quantifier instantiation
+option fmfOneInstPerRound --mbqi-one-inst-per-round bool :read-write :default false
+ only add one instantiation per quantifier per round for mbqi
+option fmfOneQuantPerRound --mbqi-one-quant-per-round bool :default false
+ only add instantiations for one quantifier per round for mbqi
+
+option fmfInstEngine --fmf-inst-engine bool :default false :read-write
+ use instantiation engine in conjunction with finite model finding
+option fmfInstGen --fmf-inst-gen bool :default true
+ enable Inst-Gen instantiation techniques for finite model finding 
+option fmfInstGenOneQuantPerRound --fmf-inst-gen-one-quant-per-round bool :default false
+ only perform Inst-Gen instantiation techniques on one quantifier per round
+option fmfFreshDistConst --fmf-fresh-dc bool :default false
+ use fresh distinguished representative when applying Inst-Gen techniques
+option fmfFmcSimple --fmf-fmc-simple bool :default true
+ simple models in full model check for finite model finding
+option fmfBoundInt fmf-bound-int --fmf-bound-int bool :default false :read-write
+ finite model finding on bounded integer quantification
+option fmfBound fmf-bound --fmf-bound bool :default false :read-write
+ finite model finding on bounded quantification
+option fmfBoundLazy --fmf-bound-lazy bool :default false :read-write
+ enforce bounds for bounded quantification lazily via use of proxy variables
+option fmfBoundMinMode --fmf-bound-min-mode=MODE CVC4::theory::quantifiers::FmfBoundMinMode :default CVC4::theory::quantifiers::FMF_BOUND_MIN_INT_RANGE :include "options/quantifiers_modes.h" :handler stringToFmfBoundMinMode
+ mode for which types of bounds to minimize via first decision heuristics
+ 
+### conflict-based instantiation options 
+ 
+option quantConflictFind --quant-cf bool :read-write :default true
+ enable conflict find mechanism for quantifiers
+option qcfMode --quant-cf-mode=MODE CVC4::theory::quantifiers::QcfMode :default CVC4::theory::quantifiers::QCF_PROP_EQ :include "options/quantifiers_modes.h" :handler stringToQcfMode
+ what effort to apply conflict find mechanism
+option qcfWhenMode --quant-cf-when=MODE CVC4::theory::quantifiers::QcfWhenMode :default CVC4::theory::quantifiers::QCF_WHEN_MODE_DEFAULT :include "options/quantifiers_modes.h" :handler stringToQcfWhenMode
+ when to invoke conflict find mechanism for quantifiers
+option qcfTConstraint --qcf-tconstraint bool :read-write :default false
+ enable entailment checks for t-constraints in qcf algorithm
+option qcfAllConflict --qcf-all-conflict bool :read-write :default false
+ add all available conflicting instances during conflict-based instantiation
+option qcfNestedConflict --qcf-nested-conflict bool :default false
+ consider conflicts for nested quantifiers
+option qcfVoExp --qcf-vo-exp bool :default false
+ qcf experimental variable ordering
+
+option instNoEntail --inst-no-entail bool :read-write :default true
+ do not consider instances of quantified formulas that are currently entailed
+
+option instPropagate --inst-prop bool :read-write :default false
+ internal propagation for instantiations for selecting relevant instances
+ 
+option qcfEagerTest --qcf-eager-test bool :default true
+ optimization, test qcf instances eagerly
+option qcfEagerCheckRd --qcf-eager-check-rd bool :default true
+ optimization, eagerly check relevant domain of matched position
+option qcfSkipRd --qcf-skip-rd bool :default false
+ optimization, skip instances based on possibly irrelevant portions of quantified formulas
+ 
+### rewrite rules options 
+ 
+option quantRewriteRules --rewrite-rules bool :default false
+ use rewrite rules module
+option rrOneInstPerRound --rr-one-inst-per-round bool :default false
+ add one instance of rewrite rule per round
+ 
+### induction options 
+ 
+option quantInduction --quant-ind bool :default false
+ use all available techniques for inductive reasoning
+option dtStcInduction --dt-stc-ind bool :read-write :default false
+ apply strengthening for existential quantification over datatypes based on structural induction
+option intWfInduction --int-wf-ind bool :read-write :default false
+ apply strengthening for integers based on well-founded induction
+option conjectureGen --conjecture-gen bool :read-write :default false
+ generate candidate conjectures for inductive proofs
+ 
+option conjectureGenPerRound --conjecture-gen-per-round=N int :default 1
+ number of conjectures to generate per instantiation round 
+option conjectureNoFilter --conjecture-no-filter bool :default false
+ do not filter conjectures
+option conjectureFilterActiveTerms --conjecture-filter-active-terms bool :read-write :default true
+ filter based on active terms
+option conjectureFilterCanonical --conjecture-filter-canonical bool :read-write :default true
+ filter based on canonicity
+option conjectureFilterModel --conjecture-filter-model bool :read-write :default true
+ filter based on model
+option conjectureGenGtEnum --conjecture-gen-gt-enum=N int :default 50
+ number of ground terms to generate for model filtering
+option conjectureUeeIntro --conjecture-gen-uee-intro bool :default false
+ more aggressive merging for universal equality engine, introduces terms
+option conjectureGenMaxDepth --conjecture-gen-max-depth=N int :default 3
+ maximum depth of terms to consider for conjectures
+  
+### synthesis options 
+
+option ceGuidedInst --cegqi bool :default false :read-write
+  counterexample-guided quantifier instantiation
+option ceGuidedInstFair --cegqi-fair=MODE CVC4::theory::quantifiers::CegqiFairMode :default CVC4::theory::quantifiers::CEGQI_FAIR_DT_SIZE :include "options/quantifiers_modes.h" :handler stringToCegqiFairMode
+  if and how to apply fairness for cegqi
+option cegqiSingleInvMode --cegqi-si=MODE CVC4::theory::quantifiers::CegqiSingleInvMode :default CVC4::theory::quantifiers::CEGQI_SI_MODE_NONE :include "options/quantifiers_modes.h" :handler stringToCegqiSingleInvMode :read-write
+  mode for processing single invocation synthesis conjectures
+option cegqiSingleInvPartial --cegqi-si-partial bool :default false
+  combined techniques for synthesis conjectures that are partially single invocation 
+option cegqiSingleInvReconstruct --cegqi-si-reconstruct bool :default true
+  reconstruct solutions for single invocation conjectures in original grammar
+option cegqiSolMinCore --cegqi-si-sol-min-core bool :default false
+  minimize solutions for single invocation conjectures based on unsat core
+option cegqiSolMinInst --cegqi-si-sol-min-inst bool :default true
+  minimize individual instantiations for single invocation conjectures based on unsat core
+option cegqiSingleInvReconstructConst --cegqi-si-reconstruct-const bool :default true
+  include constants when reconstruct solutions for single invocation conjectures in original grammar
+option cegqiSingleInvAbort --cegqi-si-abort bool :default false
+  abort if synthesis conjecture is not single invocation
+  
+option sygusNormalForm --sygus-nf bool :default true
+  only search for sygus builtin terms that are in normal form
+option sygusNormalFormArg --sygus-nf-arg bool :default true
+  account for relationship between arguments of operations in sygus normal form
+option sygusNormalFormGlobal --sygus-nf-sym bool :default true
+  narrow sygus search space based on global state of current candidate program
+option sygusNormalFormGlobalGen --sygus-nf-sym-gen bool :default true
+  generalize lemmas for global search space narrowing
+option sygusNormalFormGlobalArg --sygus-nf-sym-arg bool :default true
+  generalize based on arguments in global search space narrowing
+option sygusNormalFormGlobalContent --sygus-nf-sym-content bool :default true
+  generalize based on content in global search space narrowing
+  
+option sygusInvTemplMode --sygus-inv-templ=MODE CVC4::theory::quantifiers::SygusInvTemplMode :default CVC4::theory::quantifiers::SYGUS_INV_TEMPL_MODE_NONE :include "options/quantifiers_modes.h" :handler stringToSygusInvTemplMode
+  template mode for sygus invariant synthesis
+
+option sygusDirectEval --sygus-direct-eval bool :default true
+  direct unfolding of evaluation functions
+  
+# approach applied to general quantified formulas
+option cbqi --cbqi bool :read-write :default false
+ turns on counterexample-based quantifier instantiation
+option recurseCbqi --cbqi-recurse bool :default true
+ turns on recursive counterexample-based quantifier instantiation
+option cbqiSat --cbqi-sat bool :read-write :default true
+ answer sat when quantifiers are asserted with counterexample-based quantifier instantiation
+option cbqiModel --cbqi-model bool :read-write :default true
+ guide instantiations by model values for counterexample-based quantifier instantiation
+option cbqiAll --cbqi-all bool :read-write :default false
+ apply counterexample-based instantiation to all quantified formulas
+option cbqiUseInfInt --cbqi-use-inf-int bool :read-write :default false
+ use integer infinity for vts in counterexample-based quantifier instantiation
+option cbqiUseInfReal --cbqi-use-inf-real bool :read-write :default false
+ use real infinity for vts in counterexample-based quantifier instantiation
+option cbqiPreRegInst --cbqi-prereg-inst bool :read-write :default false
+  preregister ground instantiations in counterexample-based quantifier instantiation
+option cbqiMinBounds --cbqi-min-bounds bool :default false
+  use minimally constrained lower/upper bound for counterexample-based quantifier instantiation
+option cbqiRoundUpLowerLia --cbqi-round-up-lia bool :default false
+  round up integer lower bounds in substitutions for counterexample-based quantifier instantiation
+option cbqiMidpoint --cbqi-midpoint bool :default false
+  choose substitutions based on midpoints of lower and upper bounds for counterexample-based quantifier instantiation
+option cbqiNopt --cbqi-nopt bool :default true
+  non-optimal bounds for counterexample-based quantifier instantiation
+option cbqiLitDepend --cbqi-lit-dep bool :default true
+  dependency lemmas for quantifier alternation in counterexample-based quantifier instantiation
+option cbqiInnermost --cbqi-innermost bool :read-write :default true
+ only process innermost quantified formulas in counterexample-based quantifier instantiation
+option cbqiNestedQE --cbqi-nested-qe bool :default false
+ process nested quantified formulas with quantifier elimination in counterexample-based quantifier instantiation
+ 
+option quantEpr --quant-epr bool :default false :read-write
+ infer whether in effectively propositional fragment, use for cbqi
+option quantEprMatching --quant-epr-match bool :default true
+ use matching heuristics for EPR instantiation
+ 
+### local theory extensions options 
+
+option localTheoryExt --local-t-ext bool :default false
+  do instantiation based on local theory extensions
+option ltePartialInst --lte-partial-inst bool :default false
+  partially instantiate local theory quantifiers
+option lteRestrictInstClosure --lte-restrict-inst-closure bool :default false
+  treat arguments of inst closure as restricted terms for instantiation
+ 
+### reduction options
+
+option quantAlphaEquiv --quant-alpha-equiv bool :default true
+  infer alpha equivalence between quantified formulas
+option macrosQuant --macros-quant bool :read-write :default false
+ perform quantifiers macro expansion
+option macrosQuantMode --macros-quant-mode=MODE CVC4::theory::quantifiers::MacrosQuantMode :default CVC4::theory::quantifiers::MACROS_QUANT_MODE_GROUND_UF :include "options/quantifiers_modes.h" :handler stringToMacrosQuantMode
+ mode for quantifiers macro expansion
+option quantDynamicSplit --quant-dsplit-mode=MODE CVC4::theory::quantifiers::QuantDSplitMode :read-write :default CVC4::theory::quantifiers::QUANT_DSPLIT_MODE_NONE :include "options/quantifiers_modes.h" :handler stringToQuantDSplitMode
+ mode for dynamic quantifiers splitting
+option quantAntiSkolem --quant-anti-skolem bool :read-write :default false
+ perform anti-skolemization for quantified formulas
+
+### recursive function options
+
+#option funDefs --fun-defs bool :default false
+#  enable specialized techniques for recursive function definitions
+ 
+### e-unification options
+
+option quantEqualityEngine --quant-ee bool :default false
+  maintain congrunce closure over universal equalities
+ 
+### proof options
+
+option trackInstLemmas --track-inst-lemmas bool :read-write :default false
+  track instantiation lemmas (for proofs, unsat cores, qe and synthesis minimization)
+ 
+endmodule
diff --git a/src/options/quantifiers_options.cpp b/src/options/quantifiers_options.cpp
new file mode 100644
index 0000000..421e305
--- /dev/null
+++ b/src/options/quantifiers_options.cpp
@@ -0,0 +1,969 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+#line 13 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::miniscopeQuant__option_t, const options::miniscopeQuant__option_t::type& x) { d_holder->miniscopeQuant = x; }
+#line 13 "../../../../../src/options/quantifiers_options"
+template <> const options::miniscopeQuant__option_t::type& Options::operator[](options::miniscopeQuant__option_t) const { return d_holder->miniscopeQuant; }
+#line 13 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::miniscopeQuant__option_t) const { return d_holder->miniscopeQuant__setByUser__; }
+#line 18 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::miniscopeQuantFreeVar__option_t, const options::miniscopeQuantFreeVar__option_t::type& x) { d_holder->miniscopeQuantFreeVar = x; }
+#line 18 "../../../../../src/options/quantifiers_options"
+template <> const options::miniscopeQuantFreeVar__option_t::type& Options::operator[](options::miniscopeQuantFreeVar__option_t) const { return d_holder->miniscopeQuantFreeVar; }
+#line 18 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::miniscopeQuantFreeVar__option_t) const { return d_holder->miniscopeQuantFreeVar__setByUser__; }
+#line 20 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::quantSplit__option_t, const options::quantSplit__option_t::type& x) { d_holder->quantSplit = x; }
+#line 20 "../../../../../src/options/quantifiers_options"
+template <> const options::quantSplit__option_t::type& Options::operator[](options::quantSplit__option_t) const { return d_holder->quantSplit; }
+#line 20 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantSplit__option_t) const { return d_holder->quantSplit__setByUser__; }
+#line 22 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::prenexQuant__option_t, const options::prenexQuant__option_t::type& x) { d_holder->prenexQuant = x; }
+#line 22 "../../../../../src/options/quantifiers_options"
+template <> const options::prenexQuant__option_t::type& Options::operator[](options::prenexQuant__option_t) const { return d_holder->prenexQuant; }
+#line 22 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::prenexQuant__option_t) const { return d_holder->prenexQuant__setByUser__; }
+#line 24 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::prenexQuantUser__option_t, const options::prenexQuantUser__option_t::type& x) { d_holder->prenexQuantUser = x; }
+#line 24 "../../../../../src/options/quantifiers_options"
+template <> const options::prenexQuantUser__option_t::type& Options::operator[](options::prenexQuantUser__option_t) const { return d_holder->prenexQuantUser; }
+#line 24 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::prenexQuantUser__option_t) const { return d_holder->prenexQuantUser__setByUser__; }
+#line 29 "../../../../../src/options/quantifiers_options"
+template <> const options::varElimQuant__option_t::type& Options::operator[](options::varElimQuant__option_t) const { return d_holder->varElimQuant; }
+#line 29 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::varElimQuant__option_t) const { return d_holder->varElimQuant__setByUser__; }
+#line 31 "../../../../../src/options/quantifiers_options"
+template <> const options::varIneqElimQuant__option_t::type& Options::operator[](options::varIneqElimQuant__option_t) const { return d_holder->varIneqElimQuant; }
+#line 31 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::varIneqElimQuant__option_t) const { return d_holder->varIneqElimQuant__setByUser__; }
+#line 33 "../../../../../src/options/quantifiers_options"
+template <> const options::dtVarExpandQuant__option_t::type& Options::operator[](options::dtVarExpandQuant__option_t) const { return d_holder->dtVarExpandQuant; }
+#line 33 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::dtVarExpandQuant__option_t) const { return d_holder->dtVarExpandQuant__setByUser__; }
+#line 36 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::iteLiftQuant__option_t, const options::iteLiftQuant__option_t::type& x) { d_holder->iteLiftQuant = x; }
+#line 36 "../../../../../src/options/quantifiers_options"
+template <> const options::iteLiftQuant__option_t::type& Options::operator[](options::iteLiftQuant__option_t) const { return d_holder->iteLiftQuant; }
+#line 36 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::iteLiftQuant__option_t) const { return d_holder->iteLiftQuant__setByUser__; }
+#line 38 "../../../../../src/options/quantifiers_options"
+template <> const options::condVarSplitQuant__option_t::type& Options::operator[](options::condVarSplitQuant__option_t) const { return d_holder->condVarSplitQuant; }
+#line 38 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::condVarSplitQuant__option_t) const { return d_holder->condVarSplitQuant__setByUser__; }
+#line 40 "../../../../../src/options/quantifiers_options"
+template <> const options::condVarSplitQuantAgg__option_t::type& Options::operator[](options::condVarSplitQuantAgg__option_t) const { return d_holder->condVarSplitQuantAgg; }
+#line 40 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::condVarSplitQuantAgg__option_t) const { return d_holder->condVarSplitQuantAgg__setByUser__; }
+#line 42 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::iteDtTesterSplitQuant__option_t, const options::iteDtTesterSplitQuant__option_t::type& x) { d_holder->iteDtTesterSplitQuant = x; }
+#line 42 "../../../../../src/options/quantifiers_options"
+template <> const options::iteDtTesterSplitQuant__option_t::type& Options::operator[](options::iteDtTesterSplitQuant__option_t) const { return d_holder->iteDtTesterSplitQuant; }
+#line 42 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::iteDtTesterSplitQuant__option_t) const { return d_holder->iteDtTesterSplitQuant__setByUser__; }
+#line 47 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::preSkolemQuant__option_t, const options::preSkolemQuant__option_t::type& x) { d_holder->preSkolemQuant = x; }
+#line 47 "../../../../../src/options/quantifiers_options"
+template <> const options::preSkolemQuant__option_t::type& Options::operator[](options::preSkolemQuant__option_t) const { return d_holder->preSkolemQuant; }
+#line 47 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::preSkolemQuant__option_t) const { return d_holder->preSkolemQuant__setByUser__; }
+#line 49 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::preSkolemQuantNested__option_t, const options::preSkolemQuantNested__option_t::type& x) { d_holder->preSkolemQuantNested = x; }
+#line 49 "../../../../../src/options/quantifiers_options"
+template <> const options::preSkolemQuantNested__option_t::type& Options::operator[](options::preSkolemQuantNested__option_t) const { return d_holder->preSkolemQuantNested; }
+#line 49 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::preSkolemQuantNested__option_t) const { return d_holder->preSkolemQuantNested__setByUser__; }
+#line 51 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::preSkolemQuantAgg__option_t, const options::preSkolemQuantAgg__option_t::type& x) { d_holder->preSkolemQuantAgg = x; }
+#line 51 "../../../../../src/options/quantifiers_options"
+template <> const options::preSkolemQuantAgg__option_t::type& Options::operator[](options::preSkolemQuantAgg__option_t) const { return d_holder->preSkolemQuantAgg; }
+#line 51 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::preSkolemQuantAgg__option_t) const { return d_holder->preSkolemQuantAgg__setByUser__; }
+#line 53 "../../../../../src/options/quantifiers_options"
+template <> const options::aggressiveMiniscopeQuant__option_t::type& Options::operator[](options::aggressiveMiniscopeQuant__option_t) const { return d_holder->aggressiveMiniscopeQuant; }
+#line 53 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::aggressiveMiniscopeQuant__option_t) const { return d_holder->aggressiveMiniscopeQuant__setByUser__; }
+#line 55 "../../../../../src/options/quantifiers_options"
+template <> const options::elimTautQuant__option_t::type& Options::operator[](options::elimTautQuant__option_t) const { return d_holder->elimTautQuant; }
+#line 55 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::elimTautQuant__option_t) const { return d_holder->elimTautQuant__setByUser__; }
+#line 57 "../../../../../src/options/quantifiers_options"
+template <> const options::elimExtArithQuant__option_t::type& Options::operator[](options::elimExtArithQuant__option_t) const { return d_holder->elimExtArithQuant; }
+#line 57 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::elimExtArithQuant__option_t) const { return d_holder->elimExtArithQuant__setByUser__; }
+#line 59 "../../../../../src/options/quantifiers_options"
+template <> const options::condRewriteQuant__option_t::type& Options::operator[](options::condRewriteQuant__option_t) const { return d_holder->condRewriteQuant; }
+#line 59 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::condRewriteQuant__option_t) const { return d_holder->condRewriteQuant__setByUser__; }
+#line 64 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::eMatching__option_t, const options::eMatching__option_t::type& x) { d_holder->eMatching = x; }
+#line 64 "../../../../../src/options/quantifiers_options"
+template <> const options::eMatching__option_t::type& Options::operator[](options::eMatching__option_t) const { return d_holder->eMatching; }
+#line 64 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::eMatching__option_t) const { return d_holder->eMatching__setByUser__; }
+#line 67 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::termDbMode__option_t, const options::termDbMode__option_t::type& x) { d_holder->termDbMode = x; }
+#line 67 "../../../../../src/options/quantifiers_options"
+template <> const options::termDbMode__option_t::type& Options::operator[](options::termDbMode__option_t) const { return d_holder->termDbMode; }
+#line 67 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::termDbMode__option_t) const { return d_holder->termDbMode__setByUser__; }
+#line 69 "../../../../../src/options/quantifiers_options"
+template <> const options::registerQuantBodyTerms__option_t::type& Options::operator[](options::registerQuantBodyTerms__option_t) const { return d_holder->registerQuantBodyTerms; }
+#line 69 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::registerQuantBodyTerms__option_t) const { return d_holder->registerQuantBodyTerms__setByUser__; }
+#line 71 "../../../../../src/options/quantifiers_options"
+template <> const options::inferArithTriggerEq__option_t::type& Options::operator[](options::inferArithTriggerEq__option_t) const { return d_holder->inferArithTriggerEq; }
+#line 71 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::inferArithTriggerEq__option_t) const { return d_holder->inferArithTriggerEq__setByUser__; }
+#line 73 "../../../../../src/options/quantifiers_options"
+template <> const options::inferArithTriggerEqExp__option_t::type& Options::operator[](options::inferArithTriggerEqExp__option_t) const { return d_holder->inferArithTriggerEqExp; }
+#line 73 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::inferArithTriggerEqExp__option_t) const { return d_holder->inferArithTriggerEqExp__setByUser__; }
+#line 76 "../../../../../src/options/quantifiers_options"
+template <> const options::strictTriggers__option_t::type& Options::operator[](options::strictTriggers__option_t) const { return d_holder->strictTriggers; }
+#line 76 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::strictTriggers__option_t) const { return d_holder->strictTriggers__setByUser__; }
+#line 78 "../../../../../src/options/quantifiers_options"
+template <> const options::relevantTriggers__option_t::type& Options::operator[](options::relevantTriggers__option_t) const { return d_holder->relevantTriggers; }
+#line 78 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::relevantTriggers__option_t) const { return d_holder->relevantTriggers__setByUser__; }
+#line 80 "../../../../../src/options/quantifiers_options"
+template <> const options::relationalTriggers__option_t::type& Options::operator[](options::relationalTriggers__option_t) const { return d_holder->relationalTriggers; }
+#line 80 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::relationalTriggers__option_t) const { return d_holder->relationalTriggers__setByUser__; }
+#line 82 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::purifyTriggers__option_t, const options::purifyTriggers__option_t::type& x) { d_holder->purifyTriggers = x; }
+#line 82 "../../../../../src/options/quantifiers_options"
+template <> const options::purifyTriggers__option_t::type& Options::operator[](options::purifyTriggers__option_t) const { return d_holder->purifyTriggers; }
+#line 82 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::purifyTriggers__option_t) const { return d_holder->purifyTriggers__setByUser__; }
+#line 84 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::purifyDtTriggers__option_t, const options::purifyDtTriggers__option_t::type& x) { d_holder->purifyDtTriggers = x; }
+#line 84 "../../../../../src/options/quantifiers_options"
+template <> const options::purifyDtTriggers__option_t::type& Options::operator[](options::purifyDtTriggers__option_t) const { return d_holder->purifyDtTriggers; }
+#line 84 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::purifyDtTriggers__option_t) const { return d_holder->purifyDtTriggers__setByUser__; }
+#line 86 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::pureThTriggers__option_t, const options::pureThTriggers__option_t::type& x) { d_holder->pureThTriggers = x; }
+#line 86 "../../../../../src/options/quantifiers_options"
+template <> const options::pureThTriggers__option_t::type& Options::operator[](options::pureThTriggers__option_t) const { return d_holder->pureThTriggers; }
+#line 86 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::pureThTriggers__option_t) const { return d_holder->pureThTriggers__setByUser__; }
+#line 88 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::partialTriggers__option_t, const options::partialTriggers__option_t::type& x) { d_holder->partialTriggers = x; }
+#line 88 "../../../../../src/options/quantifiers_options"
+template <> const options::partialTriggers__option_t::type& Options::operator[](options::partialTriggers__option_t) const { return d_holder->partialTriggers; }
+#line 88 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::partialTriggers__option_t) const { return d_holder->partialTriggers__setByUser__; }
+#line 90 "../../../../../src/options/quantifiers_options"
+template <> const options::multiTriggerWhenSingle__option_t::type& Options::operator[](options::multiTriggerWhenSingle__option_t) const { return d_holder->multiTriggerWhenSingle; }
+#line 90 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::multiTriggerWhenSingle__option_t) const { return d_holder->multiTriggerWhenSingle__setByUser__; }
+#line 92 "../../../../../src/options/quantifiers_options"
+template <> const options::multiTriggerPriority__option_t::type& Options::operator[](options::multiTriggerPriority__option_t) const { return d_holder->multiTriggerPriority; }
+#line 92 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::multiTriggerPriority__option_t) const { return d_holder->multiTriggerPriority__setByUser__; }
+#line 94 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::triggerSelMode__option_t, const options::triggerSelMode__option_t::type& x) { d_holder->triggerSelMode = x; }
+#line 94 "../../../../../src/options/quantifiers_options"
+template <> const options::triggerSelMode__option_t::type& Options::operator[](options::triggerSelMode__option_t) const { return d_holder->triggerSelMode; }
+#line 94 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::triggerSelMode__option_t) const { return d_holder->triggerSelMode__setByUser__; }
+#line 96 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::triggerActiveSelMode__option_t, const options::triggerActiveSelMode__option_t::type& x) { d_holder->triggerActiveSelMode = x; }
+#line 96 "../../../../../src/options/quantifiers_options"
+template <> const options::triggerActiveSelMode__option_t::type& Options::operator[](options::triggerActiveSelMode__option_t) const { return d_holder->triggerActiveSelMode; }
+#line 96 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::triggerActiveSelMode__option_t) const { return d_holder->triggerActiveSelMode__setByUser__; }
+#line 98 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::userPatternsQuant__option_t, const options::userPatternsQuant__option_t::type& x) { d_holder->userPatternsQuant = x; }
+#line 98 "../../../../../src/options/quantifiers_options"
+template <> const options::userPatternsQuant__option_t::type& Options::operator[](options::userPatternsQuant__option_t) const { return d_holder->userPatternsQuant; }
+#line 98 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::userPatternsQuant__option_t) const { return d_holder->userPatternsQuant__setByUser__; }
+#line 100 "../../../../../src/options/quantifiers_options"
+template <> const options::incrementTriggers__option_t::type& Options::operator[](options::incrementTriggers__option_t) const { return d_holder->incrementTriggers; }
+#line 100 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::incrementTriggers__option_t) const { return d_holder->incrementTriggers__setByUser__; }
+#line 103 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::instWhenMode__option_t, const options::instWhenMode__option_t::type& x) { d_holder->instWhenMode = x; }
+#line 103 "../../../../../src/options/quantifiers_options"
+template <> const options::instWhenMode__option_t::type& Options::operator[](options::instWhenMode__option_t) const { return d_holder->instWhenMode; }
+#line 103 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::instWhenMode__option_t) const { return d_holder->instWhenMode__setByUser__; }
+#line 105 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::instWhenStrictInterleave__option_t, const options::instWhenStrictInterleave__option_t::type& x) { d_holder->instWhenStrictInterleave = x; }
+#line 105 "../../../../../src/options/quantifiers_options"
+template <> const options::instWhenStrictInterleave__option_t::type& Options::operator[](options::instWhenStrictInterleave__option_t) const { return d_holder->instWhenStrictInterleave; }
+#line 105 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::instWhenStrictInterleave__option_t) const { return d_holder->instWhenStrictInterleave__setByUser__; }
+#line 107 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::instWhenPhase__option_t, const options::instWhenPhase__option_t::type& x) { d_holder->instWhenPhase = x; }
+#line 107 "../../../../../src/options/quantifiers_options"
+template <> const options::instWhenPhase__option_t::type& Options::operator[](options::instWhenPhase__option_t) const { return d_holder->instWhenPhase; }
+#line 107 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::instWhenPhase__option_t) const { return d_holder->instWhenPhase__setByUser__; }
+#line 109 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::instWhenTcFirst__option_t, const options::instWhenTcFirst__option_t::type& x) { d_holder->instWhenTcFirst = x; }
+#line 109 "../../../../../src/options/quantifiers_options"
+template <> const options::instWhenTcFirst__option_t::type& Options::operator[](options::instWhenTcFirst__option_t) const { return d_holder->instWhenTcFirst; }
+#line 109 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::instWhenTcFirst__option_t) const { return d_holder->instWhenTcFirst__setByUser__; }
+#line 112 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::instMaxLevel__option_t, const options::instMaxLevel__option_t::type& x) { d_holder->instMaxLevel = x; }
+#line 112 "../../../../../src/options/quantifiers_options"
+template <> const options::instMaxLevel__option_t::type& Options::operator[](options::instMaxLevel__option_t) const { return d_holder->instMaxLevel; }
+#line 112 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::instMaxLevel__option_t) const { return d_holder->instMaxLevel__setByUser__; }
+#line 114 "../../../../../src/options/quantifiers_options"
+template <> const options::instLevelInputOnly__option_t::type& Options::operator[](options::instLevelInputOnly__option_t) const { return d_holder->instLevelInputOnly; }
+#line 114 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::instLevelInputOnly__option_t) const { return d_holder->instLevelInputOnly__setByUser__; }
+#line 116 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::quantRepMode__option_t, const options::quantRepMode__option_t::type& x) { d_holder->quantRepMode = x; }
+#line 116 "../../../../../src/options/quantifiers_options"
+template <> const options::quantRepMode__option_t::type& Options::operator[](options::quantRepMode__option_t) const { return d_holder->quantRepMode; }
+#line 116 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantRepMode__option_t) const { return d_holder->quantRepMode__setByUser__; }
+#line 118 "../../../../../src/options/quantifiers_options"
+template <> const options::instRelevantCond__option_t::type& Options::operator[](options::instRelevantCond__option_t) const { return d_holder->instRelevantCond; }
+#line 118 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::instRelevantCond__option_t) const { return d_holder->instRelevantCond__setByUser__; }
+#line 121 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::fullSaturateQuant__option_t, const options::fullSaturateQuant__option_t::type& x) { d_holder->fullSaturateQuant = x; }
+#line 121 "../../../../../src/options/quantifiers_options"
+template <> const options::fullSaturateQuant__option_t::type& Options::operator[](options::fullSaturateQuant__option_t) const { return d_holder->fullSaturateQuant; }
+#line 121 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fullSaturateQuant__option_t) const { return d_holder->fullSaturateQuant__setByUser__; }
+#line 123 "../../../../../src/options/quantifiers_options"
+template <> const options::fullSaturateQuantRd__option_t::type& Options::operator[](options::fullSaturateQuantRd__option_t) const { return d_holder->fullSaturateQuantRd; }
+#line 123 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fullSaturateQuantRd__option_t) const { return d_holder->fullSaturateQuantRd__setByUser__; }
+#line 125 "../../../../../src/options/quantifiers_options"
+template <> const options::fullSaturateInst__option_t::type& Options::operator[](options::fullSaturateInst__option_t) const { return d_holder->fullSaturateInst; }
+#line 125 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fullSaturateInst__option_t) const { return d_holder->fullSaturateInst__setByUser__; }
+#line 128 "../../../../../src/options/quantifiers_options"
+template <> const options::literalMatchMode__option_t::type& Options::operator[](options::literalMatchMode__option_t) const { return d_holder->literalMatchMode; }
+#line 128 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::literalMatchMode__option_t) const { return d_holder->literalMatchMode__setByUser__; }
+#line 133 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::finiteModelFind__option_t, const options::finiteModelFind__option_t::type& x) { d_holder->finiteModelFind = x; }
+#line 133 "../../../../../src/options/quantifiers_options"
+template <> const options::finiteModelFind__option_t::type& Options::operator[](options::finiteModelFind__option_t) const { return d_holder->finiteModelFind; }
+#line 133 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::finiteModelFind__option_t) const { return d_holder->finiteModelFind__setByUser__; }
+#line 136 "../../../../../src/options/quantifiers_options"
+template <> const options::quantFunWellDefined__option_t::type& Options::operator[](options::quantFunWellDefined__option_t) const { return d_holder->quantFunWellDefined; }
+#line 136 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantFunWellDefined__option_t) const { return d_holder->quantFunWellDefined__setByUser__; }
+#line 138 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::fmfFunWellDefined__option_t, const options::fmfFunWellDefined__option_t::type& x) { d_holder->fmfFunWellDefined = x; }
+#line 138 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfFunWellDefined__option_t::type& Options::operator[](options::fmfFunWellDefined__option_t) const { return d_holder->fmfFunWellDefined; }
+#line 138 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfFunWellDefined__option_t) const { return d_holder->fmfFunWellDefined__setByUser__; }
+#line 140 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfFunWellDefinedRelevant__option_t::type& Options::operator[](options::fmfFunWellDefinedRelevant__option_t) const { return d_holder->fmfFunWellDefinedRelevant; }
+#line 140 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfFunWellDefinedRelevant__option_t) const { return d_holder->fmfFunWellDefinedRelevant__setByUser__; }
+#line 142 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfEmptySorts__option_t::type& Options::operator[](options::fmfEmptySorts__option_t) const { return d_holder->fmfEmptySorts; }
+#line 142 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfEmptySorts__option_t) const { return d_holder->fmfEmptySorts__setByUser__; }
+#line 145 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::mbqiMode__option_t, const options::mbqiMode__option_t::type& x) { d_holder->mbqiMode = x; }
+#line 145 "../../../../../src/options/quantifiers_options"
+template <> const options::mbqiMode__option_t::type& Options::operator[](options::mbqiMode__option_t) const { return d_holder->mbqiMode; }
+#line 145 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::mbqiMode__option_t) const { return d_holder->mbqiMode__setByUser__; }
+#line 147 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::fmfOneInstPerRound__option_t, const options::fmfOneInstPerRound__option_t::type& x) { d_holder->fmfOneInstPerRound = x; }
+#line 147 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfOneInstPerRound__option_t::type& Options::operator[](options::fmfOneInstPerRound__option_t) const { return d_holder->fmfOneInstPerRound; }
+#line 147 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfOneInstPerRound__option_t) const { return d_holder->fmfOneInstPerRound__setByUser__; }
+#line 149 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfOneQuantPerRound__option_t::type& Options::operator[](options::fmfOneQuantPerRound__option_t) const { return d_holder->fmfOneQuantPerRound; }
+#line 149 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfOneQuantPerRound__option_t) const { return d_holder->fmfOneQuantPerRound__setByUser__; }
+#line 152 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::fmfInstEngine__option_t, const options::fmfInstEngine__option_t::type& x) { d_holder->fmfInstEngine = x; }
+#line 152 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfInstEngine__option_t::type& Options::operator[](options::fmfInstEngine__option_t) const { return d_holder->fmfInstEngine; }
+#line 152 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfInstEngine__option_t) const { return d_holder->fmfInstEngine__setByUser__; }
+#line 154 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfInstGen__option_t::type& Options::operator[](options::fmfInstGen__option_t) const { return d_holder->fmfInstGen; }
+#line 154 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfInstGen__option_t) const { return d_holder->fmfInstGen__setByUser__; }
+#line 156 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfInstGenOneQuantPerRound__option_t::type& Options::operator[](options::fmfInstGenOneQuantPerRound__option_t) const { return d_holder->fmfInstGenOneQuantPerRound; }
+#line 156 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfInstGenOneQuantPerRound__option_t) const { return d_holder->fmfInstGenOneQuantPerRound__setByUser__; }
+#line 158 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfFreshDistConst__option_t::type& Options::operator[](options::fmfFreshDistConst__option_t) const { return d_holder->fmfFreshDistConst; }
+#line 158 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfFreshDistConst__option_t) const { return d_holder->fmfFreshDistConst__setByUser__; }
+#line 160 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfFmcSimple__option_t::type& Options::operator[](options::fmfFmcSimple__option_t) const { return d_holder->fmfFmcSimple; }
+#line 160 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfFmcSimple__option_t) const { return d_holder->fmfFmcSimple__setByUser__; }
+#line 162 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::fmfBoundInt__option_t, const options::fmfBoundInt__option_t::type& x) { d_holder->fmfBoundInt = x; }
+#line 162 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfBoundInt__option_t::type& Options::operator[](options::fmfBoundInt__option_t) const { return d_holder->fmfBoundInt; }
+#line 162 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfBoundInt__option_t) const { return d_holder->fmfBoundInt__setByUser__; }
+#line 164 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::fmfBound__option_t, const options::fmfBound__option_t::type& x) { d_holder->fmfBound = x; }
+#line 164 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfBound__option_t::type& Options::operator[](options::fmfBound__option_t) const { return d_holder->fmfBound; }
+#line 164 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfBound__option_t) const { return d_holder->fmfBound__setByUser__; }
+#line 166 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::fmfBoundLazy__option_t, const options::fmfBoundLazy__option_t::type& x) { d_holder->fmfBoundLazy = x; }
+#line 166 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfBoundLazy__option_t::type& Options::operator[](options::fmfBoundLazy__option_t) const { return d_holder->fmfBoundLazy; }
+#line 166 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfBoundLazy__option_t) const { return d_holder->fmfBoundLazy__setByUser__; }
+#line 168 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfBoundMinMode__option_t::type& Options::operator[](options::fmfBoundMinMode__option_t) const { return d_holder->fmfBoundMinMode; }
+#line 168 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfBoundMinMode__option_t) const { return d_holder->fmfBoundMinMode__setByUser__; }
+#line 173 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::quantConflictFind__option_t, const options::quantConflictFind__option_t::type& x) { d_holder->quantConflictFind = x; }
+#line 173 "../../../../../src/options/quantifiers_options"
+template <> const options::quantConflictFind__option_t::type& Options::operator[](options::quantConflictFind__option_t) const { return d_holder->quantConflictFind; }
+#line 173 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantConflictFind__option_t) const { return d_holder->quantConflictFind__setByUser__; }
+#line 175 "../../../../../src/options/quantifiers_options"
+template <> const options::qcfMode__option_t::type& Options::operator[](options::qcfMode__option_t) const { return d_holder->qcfMode; }
+#line 175 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::qcfMode__option_t) const { return d_holder->qcfMode__setByUser__; }
+#line 177 "../../../../../src/options/quantifiers_options"
+template <> const options::qcfWhenMode__option_t::type& Options::operator[](options::qcfWhenMode__option_t) const { return d_holder->qcfWhenMode; }
+#line 177 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::qcfWhenMode__option_t) const { return d_holder->qcfWhenMode__setByUser__; }
+#line 179 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::qcfTConstraint__option_t, const options::qcfTConstraint__option_t::type& x) { d_holder->qcfTConstraint = x; }
+#line 179 "../../../../../src/options/quantifiers_options"
+template <> const options::qcfTConstraint__option_t::type& Options::operator[](options::qcfTConstraint__option_t) const { return d_holder->qcfTConstraint; }
+#line 179 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::qcfTConstraint__option_t) const { return d_holder->qcfTConstraint__setByUser__; }
+#line 181 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::qcfAllConflict__option_t, const options::qcfAllConflict__option_t::type& x) { d_holder->qcfAllConflict = x; }
+#line 181 "../../../../../src/options/quantifiers_options"
+template <> const options::qcfAllConflict__option_t::type& Options::operator[](options::qcfAllConflict__option_t) const { return d_holder->qcfAllConflict; }
+#line 181 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::qcfAllConflict__option_t) const { return d_holder->qcfAllConflict__setByUser__; }
+#line 183 "../../../../../src/options/quantifiers_options"
+template <> const options::qcfNestedConflict__option_t::type& Options::operator[](options::qcfNestedConflict__option_t) const { return d_holder->qcfNestedConflict; }
+#line 183 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::qcfNestedConflict__option_t) const { return d_holder->qcfNestedConflict__setByUser__; }
+#line 185 "../../../../../src/options/quantifiers_options"
+template <> const options::qcfVoExp__option_t::type& Options::operator[](options::qcfVoExp__option_t) const { return d_holder->qcfVoExp; }
+#line 185 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::qcfVoExp__option_t) const { return d_holder->qcfVoExp__setByUser__; }
+#line 188 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::instNoEntail__option_t, const options::instNoEntail__option_t::type& x) { d_holder->instNoEntail = x; }
+#line 188 "../../../../../src/options/quantifiers_options"
+template <> const options::instNoEntail__option_t::type& Options::operator[](options::instNoEntail__option_t) const { return d_holder->instNoEntail; }
+#line 188 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::instNoEntail__option_t) const { return d_holder->instNoEntail__setByUser__; }
+#line 191 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::instPropagate__option_t, const options::instPropagate__option_t::type& x) { d_holder->instPropagate = x; }
+#line 191 "../../../../../src/options/quantifiers_options"
+template <> const options::instPropagate__option_t::type& Options::operator[](options::instPropagate__option_t) const { return d_holder->instPropagate; }
+#line 191 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::instPropagate__option_t) const { return d_holder->instPropagate__setByUser__; }
+#line 194 "../../../../../src/options/quantifiers_options"
+template <> const options::qcfEagerTest__option_t::type& Options::operator[](options::qcfEagerTest__option_t) const { return d_holder->qcfEagerTest; }
+#line 194 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::qcfEagerTest__option_t) const { return d_holder->qcfEagerTest__setByUser__; }
+#line 196 "../../../../../src/options/quantifiers_options"
+template <> const options::qcfEagerCheckRd__option_t::type& Options::operator[](options::qcfEagerCheckRd__option_t) const { return d_holder->qcfEagerCheckRd; }
+#line 196 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::qcfEagerCheckRd__option_t) const { return d_holder->qcfEagerCheckRd__setByUser__; }
+#line 198 "../../../../../src/options/quantifiers_options"
+template <> const options::qcfSkipRd__option_t::type& Options::operator[](options::qcfSkipRd__option_t) const { return d_holder->qcfSkipRd; }
+#line 198 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::qcfSkipRd__option_t) const { return d_holder->qcfSkipRd__setByUser__; }
+#line 203 "../../../../../src/options/quantifiers_options"
+template <> const options::quantRewriteRules__option_t::type& Options::operator[](options::quantRewriteRules__option_t) const { return d_holder->quantRewriteRules; }
+#line 203 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantRewriteRules__option_t) const { return d_holder->quantRewriteRules__setByUser__; }
+#line 205 "../../../../../src/options/quantifiers_options"
+template <> const options::rrOneInstPerRound__option_t::type& Options::operator[](options::rrOneInstPerRound__option_t) const { return d_holder->rrOneInstPerRound; }
+#line 205 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::rrOneInstPerRound__option_t) const { return d_holder->rrOneInstPerRound__setByUser__; }
+#line 210 "../../../../../src/options/quantifiers_options"
+template <> const options::quantInduction__option_t::type& Options::operator[](options::quantInduction__option_t) const { return d_holder->quantInduction; }
+#line 210 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantInduction__option_t) const { return d_holder->quantInduction__setByUser__; }
+#line 212 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::dtStcInduction__option_t, const options::dtStcInduction__option_t::type& x) { d_holder->dtStcInduction = x; }
+#line 212 "../../../../../src/options/quantifiers_options"
+template <> const options::dtStcInduction__option_t::type& Options::operator[](options::dtStcInduction__option_t) const { return d_holder->dtStcInduction; }
+#line 212 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::dtStcInduction__option_t) const { return d_holder->dtStcInduction__setByUser__; }
+#line 214 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::intWfInduction__option_t, const options::intWfInduction__option_t::type& x) { d_holder->intWfInduction = x; }
+#line 214 "../../../../../src/options/quantifiers_options"
+template <> const options::intWfInduction__option_t::type& Options::operator[](options::intWfInduction__option_t) const { return d_holder->intWfInduction; }
+#line 214 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::intWfInduction__option_t) const { return d_holder->intWfInduction__setByUser__; }
+#line 216 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::conjectureGen__option_t, const options::conjectureGen__option_t::type& x) { d_holder->conjectureGen = x; }
+#line 216 "../../../../../src/options/quantifiers_options"
+template <> const options::conjectureGen__option_t::type& Options::operator[](options::conjectureGen__option_t) const { return d_holder->conjectureGen; }
+#line 216 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::conjectureGen__option_t) const { return d_holder->conjectureGen__setByUser__; }
+#line 219 "../../../../../src/options/quantifiers_options"
+template <> const options::conjectureGenPerRound__option_t::type& Options::operator[](options::conjectureGenPerRound__option_t) const { return d_holder->conjectureGenPerRound; }
+#line 219 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::conjectureGenPerRound__option_t) const { return d_holder->conjectureGenPerRound__setByUser__; }
+#line 221 "../../../../../src/options/quantifiers_options"
+template <> const options::conjectureNoFilter__option_t::type& Options::operator[](options::conjectureNoFilter__option_t) const { return d_holder->conjectureNoFilter; }
+#line 221 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::conjectureNoFilter__option_t) const { return d_holder->conjectureNoFilter__setByUser__; }
+#line 223 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::conjectureFilterActiveTerms__option_t, const options::conjectureFilterActiveTerms__option_t::type& x) { d_holder->conjectureFilterActiveTerms = x; }
+#line 223 "../../../../../src/options/quantifiers_options"
+template <> const options::conjectureFilterActiveTerms__option_t::type& Options::operator[](options::conjectureFilterActiveTerms__option_t) const { return d_holder->conjectureFilterActiveTerms; }
+#line 223 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::conjectureFilterActiveTerms__option_t) const { return d_holder->conjectureFilterActiveTerms__setByUser__; }
+#line 225 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::conjectureFilterCanonical__option_t, const options::conjectureFilterCanonical__option_t::type& x) { d_holder->conjectureFilterCanonical = x; }
+#line 225 "../../../../../src/options/quantifiers_options"
+template <> const options::conjectureFilterCanonical__option_t::type& Options::operator[](options::conjectureFilterCanonical__option_t) const { return d_holder->conjectureFilterCanonical; }
+#line 225 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::conjectureFilterCanonical__option_t) const { return d_holder->conjectureFilterCanonical__setByUser__; }
+#line 227 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::conjectureFilterModel__option_t, const options::conjectureFilterModel__option_t::type& x) { d_holder->conjectureFilterModel = x; }
+#line 227 "../../../../../src/options/quantifiers_options"
+template <> const options::conjectureFilterModel__option_t::type& Options::operator[](options::conjectureFilterModel__option_t) const { return d_holder->conjectureFilterModel; }
+#line 227 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::conjectureFilterModel__option_t) const { return d_holder->conjectureFilterModel__setByUser__; }
+#line 229 "../../../../../src/options/quantifiers_options"
+template <> const options::conjectureGenGtEnum__option_t::type& Options::operator[](options::conjectureGenGtEnum__option_t) const { return d_holder->conjectureGenGtEnum; }
+#line 229 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::conjectureGenGtEnum__option_t) const { return d_holder->conjectureGenGtEnum__setByUser__; }
+#line 231 "../../../../../src/options/quantifiers_options"
+template <> const options::conjectureUeeIntro__option_t::type& Options::operator[](options::conjectureUeeIntro__option_t) const { return d_holder->conjectureUeeIntro; }
+#line 231 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::conjectureUeeIntro__option_t) const { return d_holder->conjectureUeeIntro__setByUser__; }
+#line 233 "../../../../../src/options/quantifiers_options"
+template <> const options::conjectureGenMaxDepth__option_t::type& Options::operator[](options::conjectureGenMaxDepth__option_t) const { return d_holder->conjectureGenMaxDepth; }
+#line 233 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::conjectureGenMaxDepth__option_t) const { return d_holder->conjectureGenMaxDepth__setByUser__; }
+#line 238 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::ceGuidedInst__option_t, const options::ceGuidedInst__option_t::type& x) { d_holder->ceGuidedInst = x; }
+#line 238 "../../../../../src/options/quantifiers_options"
+template <> const options::ceGuidedInst__option_t::type& Options::operator[](options::ceGuidedInst__option_t) const { return d_holder->ceGuidedInst; }
+#line 238 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::ceGuidedInst__option_t) const { return d_holder->ceGuidedInst__setByUser__; }
+#line 240 "../../../../../src/options/quantifiers_options"
+template <> const options::ceGuidedInstFair__option_t::type& Options::operator[](options::ceGuidedInstFair__option_t) const { return d_holder->ceGuidedInstFair; }
+#line 240 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::ceGuidedInstFair__option_t) const { return d_holder->ceGuidedInstFair__setByUser__; }
+#line 242 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::cegqiSingleInvMode__option_t, const options::cegqiSingleInvMode__option_t::type& x) { d_holder->cegqiSingleInvMode = x; }
+#line 242 "../../../../../src/options/quantifiers_options"
+template <> const options::cegqiSingleInvMode__option_t::type& Options::operator[](options::cegqiSingleInvMode__option_t) const { return d_holder->cegqiSingleInvMode; }
+#line 242 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cegqiSingleInvMode__option_t) const { return d_holder->cegqiSingleInvMode__setByUser__; }
+#line 244 "../../../../../src/options/quantifiers_options"
+template <> const options::cegqiSingleInvPartial__option_t::type& Options::operator[](options::cegqiSingleInvPartial__option_t) const { return d_holder->cegqiSingleInvPartial; }
+#line 244 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cegqiSingleInvPartial__option_t) const { return d_holder->cegqiSingleInvPartial__setByUser__; }
+#line 246 "../../../../../src/options/quantifiers_options"
+template <> const options::cegqiSingleInvReconstruct__option_t::type& Options::operator[](options::cegqiSingleInvReconstruct__option_t) const { return d_holder->cegqiSingleInvReconstruct; }
+#line 246 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cegqiSingleInvReconstruct__option_t) const { return d_holder->cegqiSingleInvReconstruct__setByUser__; }
+#line 248 "../../../../../src/options/quantifiers_options"
+template <> const options::cegqiSolMinCore__option_t::type& Options::operator[](options::cegqiSolMinCore__option_t) const { return d_holder->cegqiSolMinCore; }
+#line 248 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cegqiSolMinCore__option_t) const { return d_holder->cegqiSolMinCore__setByUser__; }
+#line 250 "../../../../../src/options/quantifiers_options"
+template <> const options::cegqiSolMinInst__option_t::type& Options::operator[](options::cegqiSolMinInst__option_t) const { return d_holder->cegqiSolMinInst; }
+#line 250 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cegqiSolMinInst__option_t) const { return d_holder->cegqiSolMinInst__setByUser__; }
+#line 252 "../../../../../src/options/quantifiers_options"
+template <> const options::cegqiSingleInvReconstructConst__option_t::type& Options::operator[](options::cegqiSingleInvReconstructConst__option_t) const { return d_holder->cegqiSingleInvReconstructConst; }
+#line 252 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cegqiSingleInvReconstructConst__option_t) const { return d_holder->cegqiSingleInvReconstructConst__setByUser__; }
+#line 254 "../../../../../src/options/quantifiers_options"
+template <> const options::cegqiSingleInvAbort__option_t::type& Options::operator[](options::cegqiSingleInvAbort__option_t) const { return d_holder->cegqiSingleInvAbort; }
+#line 254 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cegqiSingleInvAbort__option_t) const { return d_holder->cegqiSingleInvAbort__setByUser__; }
+#line 257 "../../../../../src/options/quantifiers_options"
+template <> const options::sygusNormalForm__option_t::type& Options::operator[](options::sygusNormalForm__option_t) const { return d_holder->sygusNormalForm; }
+#line 257 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::sygusNormalForm__option_t) const { return d_holder->sygusNormalForm__setByUser__; }
+#line 259 "../../../../../src/options/quantifiers_options"
+template <> const options::sygusNormalFormArg__option_t::type& Options::operator[](options::sygusNormalFormArg__option_t) const { return d_holder->sygusNormalFormArg; }
+#line 259 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::sygusNormalFormArg__option_t) const { return d_holder->sygusNormalFormArg__setByUser__; }
+#line 261 "../../../../../src/options/quantifiers_options"
+template <> const options::sygusNormalFormGlobal__option_t::type& Options::operator[](options::sygusNormalFormGlobal__option_t) const { return d_holder->sygusNormalFormGlobal; }
+#line 261 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::sygusNormalFormGlobal__option_t) const { return d_holder->sygusNormalFormGlobal__setByUser__; }
+#line 263 "../../../../../src/options/quantifiers_options"
+template <> const options::sygusNormalFormGlobalGen__option_t::type& Options::operator[](options::sygusNormalFormGlobalGen__option_t) const { return d_holder->sygusNormalFormGlobalGen; }
+#line 263 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::sygusNormalFormGlobalGen__option_t) const { return d_holder->sygusNormalFormGlobalGen__setByUser__; }
+#line 265 "../../../../../src/options/quantifiers_options"
+template <> const options::sygusNormalFormGlobalArg__option_t::type& Options::operator[](options::sygusNormalFormGlobalArg__option_t) const { return d_holder->sygusNormalFormGlobalArg; }
+#line 265 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::sygusNormalFormGlobalArg__option_t) const { return d_holder->sygusNormalFormGlobalArg__setByUser__; }
+#line 267 "../../../../../src/options/quantifiers_options"
+template <> const options::sygusNormalFormGlobalContent__option_t::type& Options::operator[](options::sygusNormalFormGlobalContent__option_t) const { return d_holder->sygusNormalFormGlobalContent; }
+#line 267 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::sygusNormalFormGlobalContent__option_t) const { return d_holder->sygusNormalFormGlobalContent__setByUser__; }
+#line 270 "../../../../../src/options/quantifiers_options"
+template <> const options::sygusInvTemplMode__option_t::type& Options::operator[](options::sygusInvTemplMode__option_t) const { return d_holder->sygusInvTemplMode; }
+#line 270 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::sygusInvTemplMode__option_t) const { return d_holder->sygusInvTemplMode__setByUser__; }
+#line 273 "../../../../../src/options/quantifiers_options"
+template <> const options::sygusDirectEval__option_t::type& Options::operator[](options::sygusDirectEval__option_t) const { return d_holder->sygusDirectEval; }
+#line 273 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::sygusDirectEval__option_t) const { return d_holder->sygusDirectEval__setByUser__; }
+#line 277 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::cbqi__option_t, const options::cbqi__option_t::type& x) { d_holder->cbqi = x; }
+#line 277 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqi__option_t::type& Options::operator[](options::cbqi__option_t) const { return d_holder->cbqi; }
+#line 277 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqi__option_t) const { return d_holder->cbqi__setByUser__; }
+#line 279 "../../../../../src/options/quantifiers_options"
+template <> const options::recurseCbqi__option_t::type& Options::operator[](options::recurseCbqi__option_t) const { return d_holder->recurseCbqi; }
+#line 279 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::recurseCbqi__option_t) const { return d_holder->recurseCbqi__setByUser__; }
+#line 281 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::cbqiSat__option_t, const options::cbqiSat__option_t::type& x) { d_holder->cbqiSat = x; }
+#line 281 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiSat__option_t::type& Options::operator[](options::cbqiSat__option_t) const { return d_holder->cbqiSat; }
+#line 281 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiSat__option_t) const { return d_holder->cbqiSat__setByUser__; }
+#line 283 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::cbqiModel__option_t, const options::cbqiModel__option_t::type& x) { d_holder->cbqiModel = x; }
+#line 283 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiModel__option_t::type& Options::operator[](options::cbqiModel__option_t) const { return d_holder->cbqiModel; }
+#line 283 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiModel__option_t) const { return d_holder->cbqiModel__setByUser__; }
+#line 285 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::cbqiAll__option_t, const options::cbqiAll__option_t::type& x) { d_holder->cbqiAll = x; }
+#line 285 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiAll__option_t::type& Options::operator[](options::cbqiAll__option_t) const { return d_holder->cbqiAll; }
+#line 285 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiAll__option_t) const { return d_holder->cbqiAll__setByUser__; }
+#line 287 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::cbqiUseInfInt__option_t, const options::cbqiUseInfInt__option_t::type& x) { d_holder->cbqiUseInfInt = x; }
+#line 287 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiUseInfInt__option_t::type& Options::operator[](options::cbqiUseInfInt__option_t) const { return d_holder->cbqiUseInfInt; }
+#line 287 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiUseInfInt__option_t) const { return d_holder->cbqiUseInfInt__setByUser__; }
+#line 289 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::cbqiUseInfReal__option_t, const options::cbqiUseInfReal__option_t::type& x) { d_holder->cbqiUseInfReal = x; }
+#line 289 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiUseInfReal__option_t::type& Options::operator[](options::cbqiUseInfReal__option_t) const { return d_holder->cbqiUseInfReal; }
+#line 289 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiUseInfReal__option_t) const { return d_holder->cbqiUseInfReal__setByUser__; }
+#line 291 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::cbqiPreRegInst__option_t, const options::cbqiPreRegInst__option_t::type& x) { d_holder->cbqiPreRegInst = x; }
+#line 291 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiPreRegInst__option_t::type& Options::operator[](options::cbqiPreRegInst__option_t) const { return d_holder->cbqiPreRegInst; }
+#line 291 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiPreRegInst__option_t) const { return d_holder->cbqiPreRegInst__setByUser__; }
+#line 293 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiMinBounds__option_t::type& Options::operator[](options::cbqiMinBounds__option_t) const { return d_holder->cbqiMinBounds; }
+#line 293 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiMinBounds__option_t) const { return d_holder->cbqiMinBounds__setByUser__; }
+#line 295 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiRoundUpLowerLia__option_t::type& Options::operator[](options::cbqiRoundUpLowerLia__option_t) const { return d_holder->cbqiRoundUpLowerLia; }
+#line 295 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiRoundUpLowerLia__option_t) const { return d_holder->cbqiRoundUpLowerLia__setByUser__; }
+#line 297 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiMidpoint__option_t::type& Options::operator[](options::cbqiMidpoint__option_t) const { return d_holder->cbqiMidpoint; }
+#line 297 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiMidpoint__option_t) const { return d_holder->cbqiMidpoint__setByUser__; }
+#line 299 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiNopt__option_t::type& Options::operator[](options::cbqiNopt__option_t) const { return d_holder->cbqiNopt; }
+#line 299 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiNopt__option_t) const { return d_holder->cbqiNopt__setByUser__; }
+#line 301 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiLitDepend__option_t::type& Options::operator[](options::cbqiLitDepend__option_t) const { return d_holder->cbqiLitDepend; }
+#line 301 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiLitDepend__option_t) const { return d_holder->cbqiLitDepend__setByUser__; }
+#line 303 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::cbqiInnermost__option_t, const options::cbqiInnermost__option_t::type& x) { d_holder->cbqiInnermost = x; }
+#line 303 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiInnermost__option_t::type& Options::operator[](options::cbqiInnermost__option_t) const { return d_holder->cbqiInnermost; }
+#line 303 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiInnermost__option_t) const { return d_holder->cbqiInnermost__setByUser__; }
+#line 305 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiNestedQE__option_t::type& Options::operator[](options::cbqiNestedQE__option_t) const { return d_holder->cbqiNestedQE; }
+#line 305 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiNestedQE__option_t) const { return d_holder->cbqiNestedQE__setByUser__; }
+#line 308 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::quantEpr__option_t, const options::quantEpr__option_t::type& x) { d_holder->quantEpr = x; }
+#line 308 "../../../../../src/options/quantifiers_options"
+template <> const options::quantEpr__option_t::type& Options::operator[](options::quantEpr__option_t) const { return d_holder->quantEpr; }
+#line 308 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantEpr__option_t) const { return d_holder->quantEpr__setByUser__; }
+#line 310 "../../../../../src/options/quantifiers_options"
+template <> const options::quantEprMatching__option_t::type& Options::operator[](options::quantEprMatching__option_t) const { return d_holder->quantEprMatching; }
+#line 310 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantEprMatching__option_t) const { return d_holder->quantEprMatching__setByUser__; }
+#line 315 "../../../../../src/options/quantifiers_options"
+template <> const options::localTheoryExt__option_t::type& Options::operator[](options::localTheoryExt__option_t) const { return d_holder->localTheoryExt; }
+#line 315 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::localTheoryExt__option_t) const { return d_holder->localTheoryExt__setByUser__; }
+#line 317 "../../../../../src/options/quantifiers_options"
+template <> const options::ltePartialInst__option_t::type& Options::operator[](options::ltePartialInst__option_t) const { return d_holder->ltePartialInst; }
+#line 317 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::ltePartialInst__option_t) const { return d_holder->ltePartialInst__setByUser__; }
+#line 319 "../../../../../src/options/quantifiers_options"
+template <> const options::lteRestrictInstClosure__option_t::type& Options::operator[](options::lteRestrictInstClosure__option_t) const { return d_holder->lteRestrictInstClosure; }
+#line 319 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::lteRestrictInstClosure__option_t) const { return d_holder->lteRestrictInstClosure__setByUser__; }
+#line 324 "../../../../../src/options/quantifiers_options"
+template <> const options::quantAlphaEquiv__option_t::type& Options::operator[](options::quantAlphaEquiv__option_t) const { return d_holder->quantAlphaEquiv; }
+#line 324 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantAlphaEquiv__option_t) const { return d_holder->quantAlphaEquiv__setByUser__; }
+#line 326 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::macrosQuant__option_t, const options::macrosQuant__option_t::type& x) { d_holder->macrosQuant = x; }
+#line 326 "../../../../../src/options/quantifiers_options"
+template <> const options::macrosQuant__option_t::type& Options::operator[](options::macrosQuant__option_t) const { return d_holder->macrosQuant; }
+#line 326 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::macrosQuant__option_t) const { return d_holder->macrosQuant__setByUser__; }
+#line 328 "../../../../../src/options/quantifiers_options"
+template <> const options::macrosQuantMode__option_t::type& Options::operator[](options::macrosQuantMode__option_t) const { return d_holder->macrosQuantMode; }
+#line 328 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::macrosQuantMode__option_t) const { return d_holder->macrosQuantMode__setByUser__; }
+#line 330 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::quantDynamicSplit__option_t, const options::quantDynamicSplit__option_t::type& x) { d_holder->quantDynamicSplit = x; }
+#line 330 "../../../../../src/options/quantifiers_options"
+template <> const options::quantDynamicSplit__option_t::type& Options::operator[](options::quantDynamicSplit__option_t) const { return d_holder->quantDynamicSplit; }
+#line 330 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantDynamicSplit__option_t) const { return d_holder->quantDynamicSplit__setByUser__; }
+#line 332 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::quantAntiSkolem__option_t, const options::quantAntiSkolem__option_t::type& x) { d_holder->quantAntiSkolem = x; }
+#line 332 "../../../../../src/options/quantifiers_options"
+template <> const options::quantAntiSkolem__option_t::type& Options::operator[](options::quantAntiSkolem__option_t) const { return d_holder->quantAntiSkolem; }
+#line 332 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantAntiSkolem__option_t) const { return d_holder->quantAntiSkolem__setByUser__; }
+#line 342 "../../../../../src/options/quantifiers_options"
+template <> const options::quantEqualityEngine__option_t::type& Options::operator[](options::quantEqualityEngine__option_t) const { return d_holder->quantEqualityEngine; }
+#line 342 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantEqualityEngine__option_t) const { return d_holder->quantEqualityEngine__setByUser__; }
+#line 347 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::trackInstLemmas__option_t, const options::trackInstLemmas__option_t::type& x) { d_holder->trackInstLemmas = x; }
+#line 347 "../../../../../src/options/quantifiers_options"
+template <> const options::trackInstLemmas__option_t::type& Options::operator[](options::trackInstLemmas__option_t) const { return d_holder->trackInstLemmas; }
+#line 347 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::trackInstLemmas__option_t) const { return d_holder->trackInstLemmas__setByUser__; }
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+#line 13 "../../../../../src/options/quantifiers_options"
+struct miniscopeQuant__option_t miniscopeQuant;
+#line 18 "../../../../../src/options/quantifiers_options"
+struct miniscopeQuantFreeVar__option_t miniscopeQuantFreeVar;
+#line 20 "../../../../../src/options/quantifiers_options"
+struct quantSplit__option_t quantSplit;
+#line 22 "../../../../../src/options/quantifiers_options"
+struct prenexQuant__option_t prenexQuant;
+#line 24 "../../../../../src/options/quantifiers_options"
+struct prenexQuantUser__option_t prenexQuantUser;
+#line 29 "../../../../../src/options/quantifiers_options"
+struct varElimQuant__option_t varElimQuant;
+#line 31 "../../../../../src/options/quantifiers_options"
+struct varIneqElimQuant__option_t varIneqElimQuant;
+#line 33 "../../../../../src/options/quantifiers_options"
+struct dtVarExpandQuant__option_t dtVarExpandQuant;
+#line 36 "../../../../../src/options/quantifiers_options"
+struct iteLiftQuant__option_t iteLiftQuant;
+#line 38 "../../../../../src/options/quantifiers_options"
+struct condVarSplitQuant__option_t condVarSplitQuant;
+#line 40 "../../../../../src/options/quantifiers_options"
+struct condVarSplitQuantAgg__option_t condVarSplitQuantAgg;
+#line 42 "../../../../../src/options/quantifiers_options"
+struct iteDtTesterSplitQuant__option_t iteDtTesterSplitQuant;
+#line 47 "../../../../../src/options/quantifiers_options"
+struct preSkolemQuant__option_t preSkolemQuant;
+#line 49 "../../../../../src/options/quantifiers_options"
+struct preSkolemQuantNested__option_t preSkolemQuantNested;
+#line 51 "../../../../../src/options/quantifiers_options"
+struct preSkolemQuantAgg__option_t preSkolemQuantAgg;
+#line 53 "../../../../../src/options/quantifiers_options"
+struct aggressiveMiniscopeQuant__option_t aggressiveMiniscopeQuant;
+#line 55 "../../../../../src/options/quantifiers_options"
+struct elimTautQuant__option_t elimTautQuant;
+#line 57 "../../../../../src/options/quantifiers_options"
+struct elimExtArithQuant__option_t elimExtArithQuant;
+#line 59 "../../../../../src/options/quantifiers_options"
+struct condRewriteQuant__option_t condRewriteQuant;
+#line 64 "../../../../../src/options/quantifiers_options"
+struct eMatching__option_t eMatching;
+#line 67 "../../../../../src/options/quantifiers_options"
+struct termDbMode__option_t termDbMode;
+#line 69 "../../../../../src/options/quantifiers_options"
+struct registerQuantBodyTerms__option_t registerQuantBodyTerms;
+#line 71 "../../../../../src/options/quantifiers_options"
+struct inferArithTriggerEq__option_t inferArithTriggerEq;
+#line 73 "../../../../../src/options/quantifiers_options"
+struct inferArithTriggerEqExp__option_t inferArithTriggerEqExp;
+#line 76 "../../../../../src/options/quantifiers_options"
+struct strictTriggers__option_t strictTriggers;
+#line 78 "../../../../../src/options/quantifiers_options"
+struct relevantTriggers__option_t relevantTriggers;
+#line 80 "../../../../../src/options/quantifiers_options"
+struct relationalTriggers__option_t relationalTriggers;
+#line 82 "../../../../../src/options/quantifiers_options"
+struct purifyTriggers__option_t purifyTriggers;
+#line 84 "../../../../../src/options/quantifiers_options"
+struct purifyDtTriggers__option_t purifyDtTriggers;
+#line 86 "../../../../../src/options/quantifiers_options"
+struct pureThTriggers__option_t pureThTriggers;
+#line 88 "../../../../../src/options/quantifiers_options"
+struct partialTriggers__option_t partialTriggers;
+#line 90 "../../../../../src/options/quantifiers_options"
+struct multiTriggerWhenSingle__option_t multiTriggerWhenSingle;
+#line 92 "../../../../../src/options/quantifiers_options"
+struct multiTriggerPriority__option_t multiTriggerPriority;
+#line 94 "../../../../../src/options/quantifiers_options"
+struct triggerSelMode__option_t triggerSelMode;
+#line 96 "../../../../../src/options/quantifiers_options"
+struct triggerActiveSelMode__option_t triggerActiveSelMode;
+#line 98 "../../../../../src/options/quantifiers_options"
+struct userPatternsQuant__option_t userPatternsQuant;
+#line 100 "../../../../../src/options/quantifiers_options"
+struct incrementTriggers__option_t incrementTriggers;
+#line 103 "../../../../../src/options/quantifiers_options"
+struct instWhenMode__option_t instWhenMode;
+#line 105 "../../../../../src/options/quantifiers_options"
+struct instWhenStrictInterleave__option_t instWhenStrictInterleave;
+#line 107 "../../../../../src/options/quantifiers_options"
+struct instWhenPhase__option_t instWhenPhase;
+#line 109 "../../../../../src/options/quantifiers_options"
+struct instWhenTcFirst__option_t instWhenTcFirst;
+#line 112 "../../../../../src/options/quantifiers_options"
+struct instMaxLevel__option_t instMaxLevel;
+#line 114 "../../../../../src/options/quantifiers_options"
+struct instLevelInputOnly__option_t instLevelInputOnly;
+#line 116 "../../../../../src/options/quantifiers_options"
+struct quantRepMode__option_t quantRepMode;
+#line 118 "../../../../../src/options/quantifiers_options"
+struct instRelevantCond__option_t instRelevantCond;
+#line 121 "../../../../../src/options/quantifiers_options"
+struct fullSaturateQuant__option_t fullSaturateQuant;
+#line 123 "../../../../../src/options/quantifiers_options"
+struct fullSaturateQuantRd__option_t fullSaturateQuantRd;
+#line 125 "../../../../../src/options/quantifiers_options"
+struct fullSaturateInst__option_t fullSaturateInst;
+#line 128 "../../../../../src/options/quantifiers_options"
+struct literalMatchMode__option_t literalMatchMode;
+#line 133 "../../../../../src/options/quantifiers_options"
+struct finiteModelFind__option_t finiteModelFind;
+#line 136 "../../../../../src/options/quantifiers_options"
+struct quantFunWellDefined__option_t quantFunWellDefined;
+#line 138 "../../../../../src/options/quantifiers_options"
+struct fmfFunWellDefined__option_t fmfFunWellDefined;
+#line 140 "../../../../../src/options/quantifiers_options"
+struct fmfFunWellDefinedRelevant__option_t fmfFunWellDefinedRelevant;
+#line 142 "../../../../../src/options/quantifiers_options"
+struct fmfEmptySorts__option_t fmfEmptySorts;
+#line 145 "../../../../../src/options/quantifiers_options"
+struct mbqiMode__option_t mbqiMode;
+#line 147 "../../../../../src/options/quantifiers_options"
+struct fmfOneInstPerRound__option_t fmfOneInstPerRound;
+#line 149 "../../../../../src/options/quantifiers_options"
+struct fmfOneQuantPerRound__option_t fmfOneQuantPerRound;
+#line 152 "../../../../../src/options/quantifiers_options"
+struct fmfInstEngine__option_t fmfInstEngine;
+#line 154 "../../../../../src/options/quantifiers_options"
+struct fmfInstGen__option_t fmfInstGen;
+#line 156 "../../../../../src/options/quantifiers_options"
+struct fmfInstGenOneQuantPerRound__option_t fmfInstGenOneQuantPerRound;
+#line 158 "../../../../../src/options/quantifiers_options"
+struct fmfFreshDistConst__option_t fmfFreshDistConst;
+#line 160 "../../../../../src/options/quantifiers_options"
+struct fmfFmcSimple__option_t fmfFmcSimple;
+#line 162 "../../../../../src/options/quantifiers_options"
+struct fmfBoundInt__option_t fmfBoundInt;
+#line 164 "../../../../../src/options/quantifiers_options"
+struct fmfBound__option_t fmfBound;
+#line 166 "../../../../../src/options/quantifiers_options"
+struct fmfBoundLazy__option_t fmfBoundLazy;
+#line 168 "../../../../../src/options/quantifiers_options"
+struct fmfBoundMinMode__option_t fmfBoundMinMode;
+#line 173 "../../../../../src/options/quantifiers_options"
+struct quantConflictFind__option_t quantConflictFind;
+#line 175 "../../../../../src/options/quantifiers_options"
+struct qcfMode__option_t qcfMode;
+#line 177 "../../../../../src/options/quantifiers_options"
+struct qcfWhenMode__option_t qcfWhenMode;
+#line 179 "../../../../../src/options/quantifiers_options"
+struct qcfTConstraint__option_t qcfTConstraint;
+#line 181 "../../../../../src/options/quantifiers_options"
+struct qcfAllConflict__option_t qcfAllConflict;
+#line 183 "../../../../../src/options/quantifiers_options"
+struct qcfNestedConflict__option_t qcfNestedConflict;
+#line 185 "../../../../../src/options/quantifiers_options"
+struct qcfVoExp__option_t qcfVoExp;
+#line 188 "../../../../../src/options/quantifiers_options"
+struct instNoEntail__option_t instNoEntail;
+#line 191 "../../../../../src/options/quantifiers_options"
+struct instPropagate__option_t instPropagate;
+#line 194 "../../../../../src/options/quantifiers_options"
+struct qcfEagerTest__option_t qcfEagerTest;
+#line 196 "../../../../../src/options/quantifiers_options"
+struct qcfEagerCheckRd__option_t qcfEagerCheckRd;
+#line 198 "../../../../../src/options/quantifiers_options"
+struct qcfSkipRd__option_t qcfSkipRd;
+#line 203 "../../../../../src/options/quantifiers_options"
+struct quantRewriteRules__option_t quantRewriteRules;
+#line 205 "../../../../../src/options/quantifiers_options"
+struct rrOneInstPerRound__option_t rrOneInstPerRound;
+#line 210 "../../../../../src/options/quantifiers_options"
+struct quantInduction__option_t quantInduction;
+#line 212 "../../../../../src/options/quantifiers_options"
+struct dtStcInduction__option_t dtStcInduction;
+#line 214 "../../../../../src/options/quantifiers_options"
+struct intWfInduction__option_t intWfInduction;
+#line 216 "../../../../../src/options/quantifiers_options"
+struct conjectureGen__option_t conjectureGen;
+#line 219 "../../../../../src/options/quantifiers_options"
+struct conjectureGenPerRound__option_t conjectureGenPerRound;
+#line 221 "../../../../../src/options/quantifiers_options"
+struct conjectureNoFilter__option_t conjectureNoFilter;
+#line 223 "../../../../../src/options/quantifiers_options"
+struct conjectureFilterActiveTerms__option_t conjectureFilterActiveTerms;
+#line 225 "../../../../../src/options/quantifiers_options"
+struct conjectureFilterCanonical__option_t conjectureFilterCanonical;
+#line 227 "../../../../../src/options/quantifiers_options"
+struct conjectureFilterModel__option_t conjectureFilterModel;
+#line 229 "../../../../../src/options/quantifiers_options"
+struct conjectureGenGtEnum__option_t conjectureGenGtEnum;
+#line 231 "../../../../../src/options/quantifiers_options"
+struct conjectureUeeIntro__option_t conjectureUeeIntro;
+#line 233 "../../../../../src/options/quantifiers_options"
+struct conjectureGenMaxDepth__option_t conjectureGenMaxDepth;
+#line 238 "../../../../../src/options/quantifiers_options"
+struct ceGuidedInst__option_t ceGuidedInst;
+#line 240 "../../../../../src/options/quantifiers_options"
+struct ceGuidedInstFair__option_t ceGuidedInstFair;
+#line 242 "../../../../../src/options/quantifiers_options"
+struct cegqiSingleInvMode__option_t cegqiSingleInvMode;
+#line 244 "../../../../../src/options/quantifiers_options"
+struct cegqiSingleInvPartial__option_t cegqiSingleInvPartial;
+#line 246 "../../../../../src/options/quantifiers_options"
+struct cegqiSingleInvReconstruct__option_t cegqiSingleInvReconstruct;
+#line 248 "../../../../../src/options/quantifiers_options"
+struct cegqiSolMinCore__option_t cegqiSolMinCore;
+#line 250 "../../../../../src/options/quantifiers_options"
+struct cegqiSolMinInst__option_t cegqiSolMinInst;
+#line 252 "../../../../../src/options/quantifiers_options"
+struct cegqiSingleInvReconstructConst__option_t cegqiSingleInvReconstructConst;
+#line 254 "../../../../../src/options/quantifiers_options"
+struct cegqiSingleInvAbort__option_t cegqiSingleInvAbort;
+#line 257 "../../../../../src/options/quantifiers_options"
+struct sygusNormalForm__option_t sygusNormalForm;
+#line 259 "../../../../../src/options/quantifiers_options"
+struct sygusNormalFormArg__option_t sygusNormalFormArg;
+#line 261 "../../../../../src/options/quantifiers_options"
+struct sygusNormalFormGlobal__option_t sygusNormalFormGlobal;
+#line 263 "../../../../../src/options/quantifiers_options"
+struct sygusNormalFormGlobalGen__option_t sygusNormalFormGlobalGen;
+#line 265 "../../../../../src/options/quantifiers_options"
+struct sygusNormalFormGlobalArg__option_t sygusNormalFormGlobalArg;
+#line 267 "../../../../../src/options/quantifiers_options"
+struct sygusNormalFormGlobalContent__option_t sygusNormalFormGlobalContent;
+#line 270 "../../../../../src/options/quantifiers_options"
+struct sygusInvTemplMode__option_t sygusInvTemplMode;
+#line 273 "../../../../../src/options/quantifiers_options"
+struct sygusDirectEval__option_t sygusDirectEval;
+#line 277 "../../../../../src/options/quantifiers_options"
+struct cbqi__option_t cbqi;
+#line 279 "../../../../../src/options/quantifiers_options"
+struct recurseCbqi__option_t recurseCbqi;
+#line 281 "../../../../../src/options/quantifiers_options"
+struct cbqiSat__option_t cbqiSat;
+#line 283 "../../../../../src/options/quantifiers_options"
+struct cbqiModel__option_t cbqiModel;
+#line 285 "../../../../../src/options/quantifiers_options"
+struct cbqiAll__option_t cbqiAll;
+#line 287 "../../../../../src/options/quantifiers_options"
+struct cbqiUseInfInt__option_t cbqiUseInfInt;
+#line 289 "../../../../../src/options/quantifiers_options"
+struct cbqiUseInfReal__option_t cbqiUseInfReal;
+#line 291 "../../../../../src/options/quantifiers_options"
+struct cbqiPreRegInst__option_t cbqiPreRegInst;
+#line 293 "../../../../../src/options/quantifiers_options"
+struct cbqiMinBounds__option_t cbqiMinBounds;
+#line 295 "../../../../../src/options/quantifiers_options"
+struct cbqiRoundUpLowerLia__option_t cbqiRoundUpLowerLia;
+#line 297 "../../../../../src/options/quantifiers_options"
+struct cbqiMidpoint__option_t cbqiMidpoint;
+#line 299 "../../../../../src/options/quantifiers_options"
+struct cbqiNopt__option_t cbqiNopt;
+#line 301 "../../../../../src/options/quantifiers_options"
+struct cbqiLitDepend__option_t cbqiLitDepend;
+#line 303 "../../../../../src/options/quantifiers_options"
+struct cbqiInnermost__option_t cbqiInnermost;
+#line 305 "../../../../../src/options/quantifiers_options"
+struct cbqiNestedQE__option_t cbqiNestedQE;
+#line 308 "../../../../../src/options/quantifiers_options"
+struct quantEpr__option_t quantEpr;
+#line 310 "../../../../../src/options/quantifiers_options"
+struct quantEprMatching__option_t quantEprMatching;
+#line 315 "../../../../../src/options/quantifiers_options"
+struct localTheoryExt__option_t localTheoryExt;
+#line 317 "../../../../../src/options/quantifiers_options"
+struct ltePartialInst__option_t ltePartialInst;
+#line 319 "../../../../../src/options/quantifiers_options"
+struct lteRestrictInstClosure__option_t lteRestrictInstClosure;
+#line 324 "../../../../../src/options/quantifiers_options"
+struct quantAlphaEquiv__option_t quantAlphaEquiv;
+#line 326 "../../../../../src/options/quantifiers_options"
+struct macrosQuant__option_t macrosQuant;
+#line 328 "../../../../../src/options/quantifiers_options"
+struct macrosQuantMode__option_t macrosQuantMode;
+#line 330 "../../../../../src/options/quantifiers_options"
+struct quantDynamicSplit__option_t quantDynamicSplit;
+#line 332 "../../../../../src/options/quantifiers_options"
+struct quantAntiSkolem__option_t quantAntiSkolem;
+#line 342 "../../../../../src/options/quantifiers_options"
+struct quantEqualityEngine__option_t quantEqualityEngine;
+#line 347 "../../../../../src/options/quantifiers_options"
+struct trackInstLemmas__option_t trackInstLemmas;
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/quantifiers_options.h b/src/options/quantifiers_options.h
new file mode 100644
index 0000000..507c54d
--- /dev/null
+++ b/src/options/quantifiers_options.h
@@ -0,0 +1,2370 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__QUANTIFIERS_H
+#define __CVC4__OPTIONS__QUANTIFIERS_H
+
+#include "options/options.h"
+
+#line 22 "../../../../../src/options/quantifiers_options"
+#include "options/quantifiers_modes.h"
+#line 36 "../../../../../src/options/quantifiers_options"
+#include "options/quantifiers_modes.h"
+#line 67 "../../../../../src/options/quantifiers_options"
+#include "options/quantifiers_modes.h"
+#line 94 "../../../../../src/options/quantifiers_options"
+#include "options/quantifiers_modes.h"
+#line 96 "../../../../../src/options/quantifiers_options"
+#include "options/quantifiers_modes.h"
+#line 98 "../../../../../src/options/quantifiers_options"
+#include "options/quantifiers_modes.h"
+#line 103 "../../../../../src/options/quantifiers_options"
+#include "options/quantifiers_modes.h"
+#line 116 "../../../../../src/options/quantifiers_options"
+#include "options/quantifiers_modes.h"
+#line 128 "../../../../../src/options/quantifiers_options"
+#include "options/quantifiers_modes.h"
+#line 145 "../../../../../src/options/quantifiers_options"
+#include "options/quantifiers_modes.h"
+#line 168 "../../../../../src/options/quantifiers_options"
+#include "options/quantifiers_modes.h"
+#line 175 "../../../../../src/options/quantifiers_options"
+#include "options/quantifiers_modes.h"
+#line 177 "../../../../../src/options/quantifiers_options"
+#include "options/quantifiers_modes.h"
+#line 240 "../../../../../src/options/quantifiers_options"
+#include "options/quantifiers_modes.h"
+#line 242 "../../../../../src/options/quantifiers_options"
+#include "options/quantifiers_modes.h"
+#line 270 "../../../../../src/options/quantifiers_options"
+#include "options/quantifiers_modes.h"
+#line 328 "../../../../../src/options/quantifiers_options"
+#include "options/quantifiers_modes.h"
+#line 330 "../../../../../src/options/quantifiers_options"
+#include "options/quantifiers_modes.h"
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__QUANTIFIERS__FOR_OPTION_HOLDER \
+  miniscopeQuant__option_t::type miniscopeQuant; \
+  bool miniscopeQuant__setByUser__; \
+  miniscopeQuantFreeVar__option_t::type miniscopeQuantFreeVar; \
+  bool miniscopeQuantFreeVar__setByUser__; \
+  quantSplit__option_t::type quantSplit; \
+  bool quantSplit__setByUser__; \
+  prenexQuant__option_t::type prenexQuant; \
+  bool prenexQuant__setByUser__; \
+  prenexQuantUser__option_t::type prenexQuantUser; \
+  bool prenexQuantUser__setByUser__; \
+  varElimQuant__option_t::type varElimQuant; \
+  bool varElimQuant__setByUser__; \
+  varIneqElimQuant__option_t::type varIneqElimQuant; \
+  bool varIneqElimQuant__setByUser__; \
+  dtVarExpandQuant__option_t::type dtVarExpandQuant; \
+  bool dtVarExpandQuant__setByUser__; \
+  iteLiftQuant__option_t::type iteLiftQuant; \
+  bool iteLiftQuant__setByUser__; \
+  condVarSplitQuant__option_t::type condVarSplitQuant; \
+  bool condVarSplitQuant__setByUser__; \
+  condVarSplitQuantAgg__option_t::type condVarSplitQuantAgg; \
+  bool condVarSplitQuantAgg__setByUser__; \
+  iteDtTesterSplitQuant__option_t::type iteDtTesterSplitQuant; \
+  bool iteDtTesterSplitQuant__setByUser__; \
+  preSkolemQuant__option_t::type preSkolemQuant; \
+  bool preSkolemQuant__setByUser__; \
+  preSkolemQuantNested__option_t::type preSkolemQuantNested; \
+  bool preSkolemQuantNested__setByUser__; \
+  preSkolemQuantAgg__option_t::type preSkolemQuantAgg; \
+  bool preSkolemQuantAgg__setByUser__; \
+  aggressiveMiniscopeQuant__option_t::type aggressiveMiniscopeQuant; \
+  bool aggressiveMiniscopeQuant__setByUser__; \
+  elimTautQuant__option_t::type elimTautQuant; \
+  bool elimTautQuant__setByUser__; \
+  elimExtArithQuant__option_t::type elimExtArithQuant; \
+  bool elimExtArithQuant__setByUser__; \
+  condRewriteQuant__option_t::type condRewriteQuant; \
+  bool condRewriteQuant__setByUser__; \
+  eMatching__option_t::type eMatching; \
+  bool eMatching__setByUser__; \
+  termDbMode__option_t::type termDbMode; \
+  bool termDbMode__setByUser__; \
+  registerQuantBodyTerms__option_t::type registerQuantBodyTerms; \
+  bool registerQuantBodyTerms__setByUser__; \
+  inferArithTriggerEq__option_t::type inferArithTriggerEq; \
+  bool inferArithTriggerEq__setByUser__; \
+  inferArithTriggerEqExp__option_t::type inferArithTriggerEqExp; \
+  bool inferArithTriggerEqExp__setByUser__; \
+  strictTriggers__option_t::type strictTriggers; \
+  bool strictTriggers__setByUser__; \
+  relevantTriggers__option_t::type relevantTriggers; \
+  bool relevantTriggers__setByUser__; \
+  relationalTriggers__option_t::type relationalTriggers; \
+  bool relationalTriggers__setByUser__; \
+  purifyTriggers__option_t::type purifyTriggers; \
+  bool purifyTriggers__setByUser__; \
+  purifyDtTriggers__option_t::type purifyDtTriggers; \
+  bool purifyDtTriggers__setByUser__; \
+  pureThTriggers__option_t::type pureThTriggers; \
+  bool pureThTriggers__setByUser__; \
+  partialTriggers__option_t::type partialTriggers; \
+  bool partialTriggers__setByUser__; \
+  multiTriggerWhenSingle__option_t::type multiTriggerWhenSingle; \
+  bool multiTriggerWhenSingle__setByUser__; \
+  multiTriggerPriority__option_t::type multiTriggerPriority; \
+  bool multiTriggerPriority__setByUser__; \
+  triggerSelMode__option_t::type triggerSelMode; \
+  bool triggerSelMode__setByUser__; \
+  triggerActiveSelMode__option_t::type triggerActiveSelMode; \
+  bool triggerActiveSelMode__setByUser__; \
+  userPatternsQuant__option_t::type userPatternsQuant; \
+  bool userPatternsQuant__setByUser__; \
+  incrementTriggers__option_t::type incrementTriggers; \
+  bool incrementTriggers__setByUser__; \
+  instWhenMode__option_t::type instWhenMode; \
+  bool instWhenMode__setByUser__; \
+  instWhenStrictInterleave__option_t::type instWhenStrictInterleave; \
+  bool instWhenStrictInterleave__setByUser__; \
+  instWhenPhase__option_t::type instWhenPhase; \
+  bool instWhenPhase__setByUser__; \
+  instWhenTcFirst__option_t::type instWhenTcFirst; \
+  bool instWhenTcFirst__setByUser__; \
+  instMaxLevel__option_t::type instMaxLevel; \
+  bool instMaxLevel__setByUser__; \
+  instLevelInputOnly__option_t::type instLevelInputOnly; \
+  bool instLevelInputOnly__setByUser__; \
+  quantRepMode__option_t::type quantRepMode; \
+  bool quantRepMode__setByUser__; \
+  instRelevantCond__option_t::type instRelevantCond; \
+  bool instRelevantCond__setByUser__; \
+  fullSaturateQuant__option_t::type fullSaturateQuant; \
+  bool fullSaturateQuant__setByUser__; \
+  fullSaturateQuantRd__option_t::type fullSaturateQuantRd; \
+  bool fullSaturateQuantRd__setByUser__; \
+  fullSaturateInst__option_t::type fullSaturateInst; \
+  bool fullSaturateInst__setByUser__; \
+  literalMatchMode__option_t::type literalMatchMode; \
+  bool literalMatchMode__setByUser__; \
+  finiteModelFind__option_t::type finiteModelFind; \
+  bool finiteModelFind__setByUser__; \
+  quantFunWellDefined__option_t::type quantFunWellDefined; \
+  bool quantFunWellDefined__setByUser__; \
+  fmfFunWellDefined__option_t::type fmfFunWellDefined; \
+  bool fmfFunWellDefined__setByUser__; \
+  fmfFunWellDefinedRelevant__option_t::type fmfFunWellDefinedRelevant; \
+  bool fmfFunWellDefinedRelevant__setByUser__; \
+  fmfEmptySorts__option_t::type fmfEmptySorts; \
+  bool fmfEmptySorts__setByUser__; \
+  mbqiMode__option_t::type mbqiMode; \
+  bool mbqiMode__setByUser__; \
+  fmfOneInstPerRound__option_t::type fmfOneInstPerRound; \
+  bool fmfOneInstPerRound__setByUser__; \
+  fmfOneQuantPerRound__option_t::type fmfOneQuantPerRound; \
+  bool fmfOneQuantPerRound__setByUser__; \
+  fmfInstEngine__option_t::type fmfInstEngine; \
+  bool fmfInstEngine__setByUser__; \
+  fmfInstGen__option_t::type fmfInstGen; \
+  bool fmfInstGen__setByUser__; \
+  fmfInstGenOneQuantPerRound__option_t::type fmfInstGenOneQuantPerRound; \
+  bool fmfInstGenOneQuantPerRound__setByUser__; \
+  fmfFreshDistConst__option_t::type fmfFreshDistConst; \
+  bool fmfFreshDistConst__setByUser__; \
+  fmfFmcSimple__option_t::type fmfFmcSimple; \
+  bool fmfFmcSimple__setByUser__; \
+  fmfBoundInt__option_t::type fmfBoundInt; \
+  bool fmfBoundInt__setByUser__; \
+  fmfBound__option_t::type fmfBound; \
+  bool fmfBound__setByUser__; \
+  fmfBoundLazy__option_t::type fmfBoundLazy; \
+  bool fmfBoundLazy__setByUser__; \
+  fmfBoundMinMode__option_t::type fmfBoundMinMode; \
+  bool fmfBoundMinMode__setByUser__; \
+  quantConflictFind__option_t::type quantConflictFind; \
+  bool quantConflictFind__setByUser__; \
+  qcfMode__option_t::type qcfMode; \
+  bool qcfMode__setByUser__; \
+  qcfWhenMode__option_t::type qcfWhenMode; \
+  bool qcfWhenMode__setByUser__; \
+  qcfTConstraint__option_t::type qcfTConstraint; \
+  bool qcfTConstraint__setByUser__; \
+  qcfAllConflict__option_t::type qcfAllConflict; \
+  bool qcfAllConflict__setByUser__; \
+  qcfNestedConflict__option_t::type qcfNestedConflict; \
+  bool qcfNestedConflict__setByUser__; \
+  qcfVoExp__option_t::type qcfVoExp; \
+  bool qcfVoExp__setByUser__; \
+  instNoEntail__option_t::type instNoEntail; \
+  bool instNoEntail__setByUser__; \
+  instPropagate__option_t::type instPropagate; \
+  bool instPropagate__setByUser__; \
+  qcfEagerTest__option_t::type qcfEagerTest; \
+  bool qcfEagerTest__setByUser__; \
+  qcfEagerCheckRd__option_t::type qcfEagerCheckRd; \
+  bool qcfEagerCheckRd__setByUser__; \
+  qcfSkipRd__option_t::type qcfSkipRd; \
+  bool qcfSkipRd__setByUser__; \
+  quantRewriteRules__option_t::type quantRewriteRules; \
+  bool quantRewriteRules__setByUser__; \
+  rrOneInstPerRound__option_t::type rrOneInstPerRound; \
+  bool rrOneInstPerRound__setByUser__; \
+  quantInduction__option_t::type quantInduction; \
+  bool quantInduction__setByUser__; \
+  dtStcInduction__option_t::type dtStcInduction; \
+  bool dtStcInduction__setByUser__; \
+  intWfInduction__option_t::type intWfInduction; \
+  bool intWfInduction__setByUser__; \
+  conjectureGen__option_t::type conjectureGen; \
+  bool conjectureGen__setByUser__; \
+  conjectureGenPerRound__option_t::type conjectureGenPerRound; \
+  bool conjectureGenPerRound__setByUser__; \
+  conjectureNoFilter__option_t::type conjectureNoFilter; \
+  bool conjectureNoFilter__setByUser__; \
+  conjectureFilterActiveTerms__option_t::type conjectureFilterActiveTerms; \
+  bool conjectureFilterActiveTerms__setByUser__; \
+  conjectureFilterCanonical__option_t::type conjectureFilterCanonical; \
+  bool conjectureFilterCanonical__setByUser__; \
+  conjectureFilterModel__option_t::type conjectureFilterModel; \
+  bool conjectureFilterModel__setByUser__; \
+  conjectureGenGtEnum__option_t::type conjectureGenGtEnum; \
+  bool conjectureGenGtEnum__setByUser__; \
+  conjectureUeeIntro__option_t::type conjectureUeeIntro; \
+  bool conjectureUeeIntro__setByUser__; \
+  conjectureGenMaxDepth__option_t::type conjectureGenMaxDepth; \
+  bool conjectureGenMaxDepth__setByUser__; \
+  ceGuidedInst__option_t::type ceGuidedInst; \
+  bool ceGuidedInst__setByUser__; \
+  ceGuidedInstFair__option_t::type ceGuidedInstFair; \
+  bool ceGuidedInstFair__setByUser__; \
+  cegqiSingleInvMode__option_t::type cegqiSingleInvMode; \
+  bool cegqiSingleInvMode__setByUser__; \
+  cegqiSingleInvPartial__option_t::type cegqiSingleInvPartial; \
+  bool cegqiSingleInvPartial__setByUser__; \
+  cegqiSingleInvReconstruct__option_t::type cegqiSingleInvReconstruct; \
+  bool cegqiSingleInvReconstruct__setByUser__; \
+  cegqiSolMinCore__option_t::type cegqiSolMinCore; \
+  bool cegqiSolMinCore__setByUser__; \
+  cegqiSolMinInst__option_t::type cegqiSolMinInst; \
+  bool cegqiSolMinInst__setByUser__; \
+  cegqiSingleInvReconstructConst__option_t::type cegqiSingleInvReconstructConst; \
+  bool cegqiSingleInvReconstructConst__setByUser__; \
+  cegqiSingleInvAbort__option_t::type cegqiSingleInvAbort; \
+  bool cegqiSingleInvAbort__setByUser__; \
+  sygusNormalForm__option_t::type sygusNormalForm; \
+  bool sygusNormalForm__setByUser__; \
+  sygusNormalFormArg__option_t::type sygusNormalFormArg; \
+  bool sygusNormalFormArg__setByUser__; \
+  sygusNormalFormGlobal__option_t::type sygusNormalFormGlobal; \
+  bool sygusNormalFormGlobal__setByUser__; \
+  sygusNormalFormGlobalGen__option_t::type sygusNormalFormGlobalGen; \
+  bool sygusNormalFormGlobalGen__setByUser__; \
+  sygusNormalFormGlobalArg__option_t::type sygusNormalFormGlobalArg; \
+  bool sygusNormalFormGlobalArg__setByUser__; \
+  sygusNormalFormGlobalContent__option_t::type sygusNormalFormGlobalContent; \
+  bool sygusNormalFormGlobalContent__setByUser__; \
+  sygusInvTemplMode__option_t::type sygusInvTemplMode; \
+  bool sygusInvTemplMode__setByUser__; \
+  sygusDirectEval__option_t::type sygusDirectEval; \
+  bool sygusDirectEval__setByUser__; \
+  cbqi__option_t::type cbqi; \
+  bool cbqi__setByUser__; \
+  recurseCbqi__option_t::type recurseCbqi; \
+  bool recurseCbqi__setByUser__; \
+  cbqiSat__option_t::type cbqiSat; \
+  bool cbqiSat__setByUser__; \
+  cbqiModel__option_t::type cbqiModel; \
+  bool cbqiModel__setByUser__; \
+  cbqiAll__option_t::type cbqiAll; \
+  bool cbqiAll__setByUser__; \
+  cbqiUseInfInt__option_t::type cbqiUseInfInt; \
+  bool cbqiUseInfInt__setByUser__; \
+  cbqiUseInfReal__option_t::type cbqiUseInfReal; \
+  bool cbqiUseInfReal__setByUser__; \
+  cbqiPreRegInst__option_t::type cbqiPreRegInst; \
+  bool cbqiPreRegInst__setByUser__; \
+  cbqiMinBounds__option_t::type cbqiMinBounds; \
+  bool cbqiMinBounds__setByUser__; \
+  cbqiRoundUpLowerLia__option_t::type cbqiRoundUpLowerLia; \
+  bool cbqiRoundUpLowerLia__setByUser__; \
+  cbqiMidpoint__option_t::type cbqiMidpoint; \
+  bool cbqiMidpoint__setByUser__; \
+  cbqiNopt__option_t::type cbqiNopt; \
+  bool cbqiNopt__setByUser__; \
+  cbqiLitDepend__option_t::type cbqiLitDepend; \
+  bool cbqiLitDepend__setByUser__; \
+  cbqiInnermost__option_t::type cbqiInnermost; \
+  bool cbqiInnermost__setByUser__; \
+  cbqiNestedQE__option_t::type cbqiNestedQE; \
+  bool cbqiNestedQE__setByUser__; \
+  quantEpr__option_t::type quantEpr; \
+  bool quantEpr__setByUser__; \
+  quantEprMatching__option_t::type quantEprMatching; \
+  bool quantEprMatching__setByUser__; \
+  localTheoryExt__option_t::type localTheoryExt; \
+  bool localTheoryExt__setByUser__; \
+  ltePartialInst__option_t::type ltePartialInst; \
+  bool ltePartialInst__setByUser__; \
+  lteRestrictInstClosure__option_t::type lteRestrictInstClosure; \
+  bool lteRestrictInstClosure__setByUser__; \
+  quantAlphaEquiv__option_t::type quantAlphaEquiv; \
+  bool quantAlphaEquiv__setByUser__; \
+  macrosQuant__option_t::type macrosQuant; \
+  bool macrosQuant__setByUser__; \
+  macrosQuantMode__option_t::type macrosQuantMode; \
+  bool macrosQuantMode__setByUser__; \
+  quantDynamicSplit__option_t::type quantDynamicSplit; \
+  bool quantDynamicSplit__setByUser__; \
+  quantAntiSkolem__option_t::type quantAntiSkolem; \
+  bool quantAntiSkolem__setByUser__; \
+  quantEqualityEngine__option_t::type quantEqualityEngine; \
+  bool quantEqualityEngine__setByUser__; \
+  trackInstLemmas__option_t::type trackInstLemmas; \
+  bool trackInstLemmas__setByUser__;
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+#line 13 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC miniscopeQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } miniscopeQuant CVC4_PUBLIC;
+#line 18 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC miniscopeQuantFreeVar__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } miniscopeQuantFreeVar CVC4_PUBLIC;
+#line 20 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC quantSplit__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } quantSplit CVC4_PUBLIC;
+#line 22 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC prenexQuant__option_t { typedef CVC4::theory::quantifiers::PrenexQuantMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } prenexQuant CVC4_PUBLIC;
+#line 24 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC prenexQuantUser__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } prenexQuantUser CVC4_PUBLIC;
+#line 29 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC varElimQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } varElimQuant CVC4_PUBLIC;
+#line 31 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC varIneqElimQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } varIneqElimQuant CVC4_PUBLIC;
+#line 33 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC dtVarExpandQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dtVarExpandQuant CVC4_PUBLIC;
+#line 36 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC iteLiftQuant__option_t { typedef CVC4::theory::quantifiers::IteLiftQuantMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } iteLiftQuant CVC4_PUBLIC;
+#line 38 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC condVarSplitQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } condVarSplitQuant CVC4_PUBLIC;
+#line 40 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC condVarSplitQuantAgg__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } condVarSplitQuantAgg CVC4_PUBLIC;
+#line 42 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC iteDtTesterSplitQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } iteDtTesterSplitQuant CVC4_PUBLIC;
+#line 47 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC preSkolemQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } preSkolemQuant CVC4_PUBLIC;
+#line 49 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC preSkolemQuantNested__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } preSkolemQuantNested CVC4_PUBLIC;
+#line 51 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC preSkolemQuantAgg__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } preSkolemQuantAgg CVC4_PUBLIC;
+#line 53 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC aggressiveMiniscopeQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } aggressiveMiniscopeQuant CVC4_PUBLIC;
+#line 55 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC elimTautQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } elimTautQuant CVC4_PUBLIC;
+#line 57 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC elimExtArithQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } elimExtArithQuant CVC4_PUBLIC;
+#line 59 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC condRewriteQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } condRewriteQuant CVC4_PUBLIC;
+#line 64 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC eMatching__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } eMatching CVC4_PUBLIC;
+#line 67 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC termDbMode__option_t { typedef CVC4::theory::quantifiers::TermDbMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } termDbMode CVC4_PUBLIC;
+#line 69 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC registerQuantBodyTerms__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } registerQuantBodyTerms CVC4_PUBLIC;
+#line 71 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC inferArithTriggerEq__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } inferArithTriggerEq CVC4_PUBLIC;
+#line 73 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC inferArithTriggerEqExp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } inferArithTriggerEqExp CVC4_PUBLIC;
+#line 76 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC strictTriggers__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } strictTriggers CVC4_PUBLIC;
+#line 78 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC relevantTriggers__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } relevantTriggers CVC4_PUBLIC;
+#line 80 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC relationalTriggers__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } relationalTriggers CVC4_PUBLIC;
+#line 82 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC purifyTriggers__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } purifyTriggers CVC4_PUBLIC;
+#line 84 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC purifyDtTriggers__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } purifyDtTriggers CVC4_PUBLIC;
+#line 86 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC pureThTriggers__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } pureThTriggers CVC4_PUBLIC;
+#line 88 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC partialTriggers__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } partialTriggers CVC4_PUBLIC;
+#line 90 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC multiTriggerWhenSingle__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } multiTriggerWhenSingle CVC4_PUBLIC;
+#line 92 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC multiTriggerPriority__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } multiTriggerPriority CVC4_PUBLIC;
+#line 94 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC triggerSelMode__option_t { typedef CVC4::theory::quantifiers::TriggerSelMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } triggerSelMode CVC4_PUBLIC;
+#line 96 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC triggerActiveSelMode__option_t { typedef CVC4::theory::quantifiers::TriggerActiveSelMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } triggerActiveSelMode CVC4_PUBLIC;
+#line 98 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC userPatternsQuant__option_t { typedef CVC4::theory::quantifiers::UserPatMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } userPatternsQuant CVC4_PUBLIC;
+#line 100 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC incrementTriggers__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } incrementTriggers CVC4_PUBLIC;
+#line 103 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC instWhenMode__option_t { typedef CVC4::theory::quantifiers::InstWhenMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } instWhenMode CVC4_PUBLIC;
+#line 105 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC instWhenStrictInterleave__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } instWhenStrictInterleave CVC4_PUBLIC;
+#line 107 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC instWhenPhase__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } instWhenPhase CVC4_PUBLIC;
+#line 109 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC instWhenTcFirst__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } instWhenTcFirst CVC4_PUBLIC;
+#line 112 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC instMaxLevel__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } instMaxLevel CVC4_PUBLIC;
+#line 114 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC instLevelInputOnly__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } instLevelInputOnly CVC4_PUBLIC;
+#line 116 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC quantRepMode__option_t { typedef CVC4::theory::quantifiers::QuantRepMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } quantRepMode CVC4_PUBLIC;
+#line 118 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC instRelevantCond__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } instRelevantCond CVC4_PUBLIC;
+#line 121 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC fullSaturateQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } fullSaturateQuant CVC4_PUBLIC;
+#line 123 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC fullSaturateQuantRd__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } fullSaturateQuantRd CVC4_PUBLIC;
+#line 125 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC fullSaturateInst__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } fullSaturateInst CVC4_PUBLIC;
+#line 128 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC literalMatchMode__option_t { typedef CVC4::theory::quantifiers::LiteralMatchMode type; type operator()() const; bool wasSetByUser() const; } literalMatchMode CVC4_PUBLIC;
+#line 133 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC finiteModelFind__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } finiteModelFind CVC4_PUBLIC;
+#line 136 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC quantFunWellDefined__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } quantFunWellDefined CVC4_PUBLIC;
+#line 138 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC fmfFunWellDefined__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } fmfFunWellDefined CVC4_PUBLIC;
+#line 140 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC fmfFunWellDefinedRelevant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } fmfFunWellDefinedRelevant CVC4_PUBLIC;
+#line 142 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC fmfEmptySorts__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } fmfEmptySorts CVC4_PUBLIC;
+#line 145 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC mbqiMode__option_t { typedef CVC4::theory::quantifiers::MbqiMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } mbqiMode CVC4_PUBLIC;
+#line 147 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC fmfOneInstPerRound__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } fmfOneInstPerRound CVC4_PUBLIC;
+#line 149 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC fmfOneQuantPerRound__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } fmfOneQuantPerRound CVC4_PUBLIC;
+#line 152 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC fmfInstEngine__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } fmfInstEngine CVC4_PUBLIC;
+#line 154 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC fmfInstGen__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } fmfInstGen CVC4_PUBLIC;
+#line 156 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC fmfInstGenOneQuantPerRound__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } fmfInstGenOneQuantPerRound CVC4_PUBLIC;
+#line 158 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC fmfFreshDistConst__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } fmfFreshDistConst CVC4_PUBLIC;
+#line 160 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC fmfFmcSimple__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } fmfFmcSimple CVC4_PUBLIC;
+#line 162 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC fmfBoundInt__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } fmfBoundInt CVC4_PUBLIC;
+#line 164 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC fmfBound__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } fmfBound CVC4_PUBLIC;
+#line 166 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC fmfBoundLazy__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } fmfBoundLazy CVC4_PUBLIC;
+#line 168 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC fmfBoundMinMode__option_t { typedef CVC4::theory::quantifiers::FmfBoundMinMode type; type operator()() const; bool wasSetByUser() const; } fmfBoundMinMode CVC4_PUBLIC;
+#line 173 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC quantConflictFind__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } quantConflictFind CVC4_PUBLIC;
+#line 175 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC qcfMode__option_t { typedef CVC4::theory::quantifiers::QcfMode type; type operator()() const; bool wasSetByUser() const; } qcfMode CVC4_PUBLIC;
+#line 177 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC qcfWhenMode__option_t { typedef CVC4::theory::quantifiers::QcfWhenMode type; type operator()() const; bool wasSetByUser() const; } qcfWhenMode CVC4_PUBLIC;
+#line 179 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC qcfTConstraint__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } qcfTConstraint CVC4_PUBLIC;
+#line 181 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC qcfAllConflict__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } qcfAllConflict CVC4_PUBLIC;
+#line 183 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC qcfNestedConflict__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } qcfNestedConflict CVC4_PUBLIC;
+#line 185 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC qcfVoExp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } qcfVoExp CVC4_PUBLIC;
+#line 188 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC instNoEntail__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } instNoEntail CVC4_PUBLIC;
+#line 191 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC instPropagate__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } instPropagate CVC4_PUBLIC;
+#line 194 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC qcfEagerTest__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } qcfEagerTest CVC4_PUBLIC;
+#line 196 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC qcfEagerCheckRd__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } qcfEagerCheckRd CVC4_PUBLIC;
+#line 198 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC qcfSkipRd__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } qcfSkipRd CVC4_PUBLIC;
+#line 203 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC quantRewriteRules__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } quantRewriteRules CVC4_PUBLIC;
+#line 205 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC rrOneInstPerRound__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } rrOneInstPerRound CVC4_PUBLIC;
+#line 210 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC quantInduction__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } quantInduction CVC4_PUBLIC;
+#line 212 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC dtStcInduction__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } dtStcInduction CVC4_PUBLIC;
+#line 214 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC intWfInduction__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } intWfInduction CVC4_PUBLIC;
+#line 216 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC conjectureGen__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } conjectureGen CVC4_PUBLIC;
+#line 219 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC conjectureGenPerRound__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } conjectureGenPerRound CVC4_PUBLIC;
+#line 221 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC conjectureNoFilter__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } conjectureNoFilter CVC4_PUBLIC;
+#line 223 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC conjectureFilterActiveTerms__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } conjectureFilterActiveTerms CVC4_PUBLIC;
+#line 225 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC conjectureFilterCanonical__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } conjectureFilterCanonical CVC4_PUBLIC;
+#line 227 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC conjectureFilterModel__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } conjectureFilterModel CVC4_PUBLIC;
+#line 229 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC conjectureGenGtEnum__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } conjectureGenGtEnum CVC4_PUBLIC;
+#line 231 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC conjectureUeeIntro__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } conjectureUeeIntro CVC4_PUBLIC;
+#line 233 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC conjectureGenMaxDepth__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } conjectureGenMaxDepth CVC4_PUBLIC;
+#line 238 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC ceGuidedInst__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } ceGuidedInst CVC4_PUBLIC;
+#line 240 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC ceGuidedInstFair__option_t { typedef CVC4::theory::quantifiers::CegqiFairMode type; type operator()() const; bool wasSetByUser() const; } ceGuidedInstFair CVC4_PUBLIC;
+#line 242 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cegqiSingleInvMode__option_t { typedef CVC4::theory::quantifiers::CegqiSingleInvMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } cegqiSingleInvMode CVC4_PUBLIC;
+#line 244 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cegqiSingleInvPartial__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cegqiSingleInvPartial CVC4_PUBLIC;
+#line 246 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cegqiSingleInvReconstruct__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cegqiSingleInvReconstruct CVC4_PUBLIC;
+#line 248 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cegqiSolMinCore__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cegqiSolMinCore CVC4_PUBLIC;
+#line 250 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cegqiSolMinInst__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cegqiSolMinInst CVC4_PUBLIC;
+#line 252 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cegqiSingleInvReconstructConst__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cegqiSingleInvReconstructConst CVC4_PUBLIC;
+#line 254 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cegqiSingleInvAbort__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cegqiSingleInvAbort CVC4_PUBLIC;
+#line 257 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC sygusNormalForm__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sygusNormalForm CVC4_PUBLIC;
+#line 259 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC sygusNormalFormArg__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sygusNormalFormArg CVC4_PUBLIC;
+#line 261 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC sygusNormalFormGlobal__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sygusNormalFormGlobal CVC4_PUBLIC;
+#line 263 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC sygusNormalFormGlobalGen__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sygusNormalFormGlobalGen CVC4_PUBLIC;
+#line 265 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC sygusNormalFormGlobalArg__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sygusNormalFormGlobalArg CVC4_PUBLIC;
+#line 267 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC sygusNormalFormGlobalContent__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sygusNormalFormGlobalContent CVC4_PUBLIC;
+#line 270 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC sygusInvTemplMode__option_t { typedef CVC4::theory::quantifiers::SygusInvTemplMode type; type operator()() const; bool wasSetByUser() const; } sygusInvTemplMode CVC4_PUBLIC;
+#line 273 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC sygusDirectEval__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sygusDirectEval CVC4_PUBLIC;
+#line 277 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cbqi__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } cbqi CVC4_PUBLIC;
+#line 279 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC recurseCbqi__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } recurseCbqi CVC4_PUBLIC;
+#line 281 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cbqiSat__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } cbqiSat CVC4_PUBLIC;
+#line 283 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cbqiModel__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } cbqiModel CVC4_PUBLIC;
+#line 285 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cbqiAll__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } cbqiAll CVC4_PUBLIC;
+#line 287 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cbqiUseInfInt__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } cbqiUseInfInt CVC4_PUBLIC;
+#line 289 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cbqiUseInfReal__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } cbqiUseInfReal CVC4_PUBLIC;
+#line 291 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cbqiPreRegInst__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } cbqiPreRegInst CVC4_PUBLIC;
+#line 293 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cbqiMinBounds__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cbqiMinBounds CVC4_PUBLIC;
+#line 295 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cbqiRoundUpLowerLia__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cbqiRoundUpLowerLia CVC4_PUBLIC;
+#line 297 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cbqiMidpoint__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cbqiMidpoint CVC4_PUBLIC;
+#line 299 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cbqiNopt__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cbqiNopt CVC4_PUBLIC;
+#line 301 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cbqiLitDepend__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cbqiLitDepend CVC4_PUBLIC;
+#line 303 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cbqiInnermost__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } cbqiInnermost CVC4_PUBLIC;
+#line 305 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cbqiNestedQE__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cbqiNestedQE CVC4_PUBLIC;
+#line 308 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC quantEpr__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } quantEpr CVC4_PUBLIC;
+#line 310 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC quantEprMatching__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } quantEprMatching CVC4_PUBLIC;
+#line 315 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC localTheoryExt__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } localTheoryExt CVC4_PUBLIC;
+#line 317 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC ltePartialInst__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ltePartialInst CVC4_PUBLIC;
+#line 319 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC lteRestrictInstClosure__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } lteRestrictInstClosure CVC4_PUBLIC;
+#line 324 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC quantAlphaEquiv__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } quantAlphaEquiv CVC4_PUBLIC;
+#line 326 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC macrosQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } macrosQuant CVC4_PUBLIC;
+#line 328 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC macrosQuantMode__option_t { typedef CVC4::theory::quantifiers::MacrosQuantMode type; type operator()() const; bool wasSetByUser() const; } macrosQuantMode CVC4_PUBLIC;
+#line 330 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC quantDynamicSplit__option_t { typedef CVC4::theory::quantifiers::QuantDSplitMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } quantDynamicSplit CVC4_PUBLIC;
+#line 332 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC quantAntiSkolem__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } quantAntiSkolem CVC4_PUBLIC;
+#line 342 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC quantEqualityEngine__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } quantEqualityEngine CVC4_PUBLIC;
+#line 347 "../../../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC trackInstLemmas__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } trackInstLemmas CVC4_PUBLIC;
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+#line 13 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::miniscopeQuant__option_t, const options::miniscopeQuant__option_t::type& x);
+#line 13 "../../../../../src/options/quantifiers_options"
+template <> const options::miniscopeQuant__option_t::type& Options::operator[](options::miniscopeQuant__option_t) const;
+#line 13 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::miniscopeQuant__option_t) const;
+#line 13 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::miniscopeQuant__option_t, std::string option, bool value);
+#line 18 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::miniscopeQuantFreeVar__option_t, const options::miniscopeQuantFreeVar__option_t::type& x);
+#line 18 "../../../../../src/options/quantifiers_options"
+template <> const options::miniscopeQuantFreeVar__option_t::type& Options::operator[](options::miniscopeQuantFreeVar__option_t) const;
+#line 18 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::miniscopeQuantFreeVar__option_t) const;
+#line 18 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::miniscopeQuantFreeVar__option_t, std::string option, bool value);
+#line 20 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::quantSplit__option_t, const options::quantSplit__option_t::type& x);
+#line 20 "../../../../../src/options/quantifiers_options"
+template <> const options::quantSplit__option_t::type& Options::operator[](options::quantSplit__option_t) const;
+#line 20 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantSplit__option_t) const;
+#line 20 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::quantSplit__option_t, std::string option, bool value);
+#line 22 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::prenexQuant__option_t, const options::prenexQuant__option_t::type& x);
+#line 22 "../../../../../src/options/quantifiers_options"
+template <> const options::prenexQuant__option_t::type& Options::operator[](options::prenexQuant__option_t) const;
+#line 22 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::prenexQuant__option_t) const;
+#line 22 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::prenexQuant__option_t, std::string option, std::string value);
+#line 24 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::prenexQuantUser__option_t, const options::prenexQuantUser__option_t::type& x);
+#line 24 "../../../../../src/options/quantifiers_options"
+template <> const options::prenexQuantUser__option_t::type& Options::operator[](options::prenexQuantUser__option_t) const;
+#line 24 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::prenexQuantUser__option_t) const;
+#line 24 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::prenexQuantUser__option_t, std::string option, bool value);
+#line 29 "../../../../../src/options/quantifiers_options"
+template <> const options::varElimQuant__option_t::type& Options::operator[](options::varElimQuant__option_t) const;
+#line 29 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::varElimQuant__option_t) const;
+#line 29 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::varElimQuant__option_t, std::string option, bool value);
+#line 31 "../../../../../src/options/quantifiers_options"
+template <> const options::varIneqElimQuant__option_t::type& Options::operator[](options::varIneqElimQuant__option_t) const;
+#line 31 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::varIneqElimQuant__option_t) const;
+#line 31 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::varIneqElimQuant__option_t, std::string option, bool value);
+#line 33 "../../../../../src/options/quantifiers_options"
+template <> const options::dtVarExpandQuant__option_t::type& Options::operator[](options::dtVarExpandQuant__option_t) const;
+#line 33 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::dtVarExpandQuant__option_t) const;
+#line 33 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::dtVarExpandQuant__option_t, std::string option, bool value);
+#line 36 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::iteLiftQuant__option_t, const options::iteLiftQuant__option_t::type& x);
+#line 36 "../../../../../src/options/quantifiers_options"
+template <> const options::iteLiftQuant__option_t::type& Options::operator[](options::iteLiftQuant__option_t) const;
+#line 36 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::iteLiftQuant__option_t) const;
+#line 36 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::iteLiftQuant__option_t, std::string option, std::string value);
+#line 38 "../../../../../src/options/quantifiers_options"
+template <> const options::condVarSplitQuant__option_t::type& Options::operator[](options::condVarSplitQuant__option_t) const;
+#line 38 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::condVarSplitQuant__option_t) const;
+#line 38 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::condVarSplitQuant__option_t, std::string option, bool value);
+#line 40 "../../../../../src/options/quantifiers_options"
+template <> const options::condVarSplitQuantAgg__option_t::type& Options::operator[](options::condVarSplitQuantAgg__option_t) const;
+#line 40 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::condVarSplitQuantAgg__option_t) const;
+#line 40 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::condVarSplitQuantAgg__option_t, std::string option, bool value);
+#line 42 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::iteDtTesterSplitQuant__option_t, const options::iteDtTesterSplitQuant__option_t::type& x);
+#line 42 "../../../../../src/options/quantifiers_options"
+template <> const options::iteDtTesterSplitQuant__option_t::type& Options::operator[](options::iteDtTesterSplitQuant__option_t) const;
+#line 42 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::iteDtTesterSplitQuant__option_t) const;
+#line 42 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::iteDtTesterSplitQuant__option_t, std::string option, bool value);
+#line 47 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::preSkolemQuant__option_t, const options::preSkolemQuant__option_t::type& x);
+#line 47 "../../../../../src/options/quantifiers_options"
+template <> const options::preSkolemQuant__option_t::type& Options::operator[](options::preSkolemQuant__option_t) const;
+#line 47 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::preSkolemQuant__option_t) const;
+#line 47 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::preSkolemQuant__option_t, std::string option, bool value);
+#line 49 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::preSkolemQuantNested__option_t, const options::preSkolemQuantNested__option_t::type& x);
+#line 49 "../../../../../src/options/quantifiers_options"
+template <> const options::preSkolemQuantNested__option_t::type& Options::operator[](options::preSkolemQuantNested__option_t) const;
+#line 49 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::preSkolemQuantNested__option_t) const;
+#line 49 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::preSkolemQuantNested__option_t, std::string option, bool value);
+#line 51 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::preSkolemQuantAgg__option_t, const options::preSkolemQuantAgg__option_t::type& x);
+#line 51 "../../../../../src/options/quantifiers_options"
+template <> const options::preSkolemQuantAgg__option_t::type& Options::operator[](options::preSkolemQuantAgg__option_t) const;
+#line 51 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::preSkolemQuantAgg__option_t) const;
+#line 51 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::preSkolemQuantAgg__option_t, std::string option, bool value);
+#line 53 "../../../../../src/options/quantifiers_options"
+template <> const options::aggressiveMiniscopeQuant__option_t::type& Options::operator[](options::aggressiveMiniscopeQuant__option_t) const;
+#line 53 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::aggressiveMiniscopeQuant__option_t) const;
+#line 53 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::aggressiveMiniscopeQuant__option_t, std::string option, bool value);
+#line 55 "../../../../../src/options/quantifiers_options"
+template <> const options::elimTautQuant__option_t::type& Options::operator[](options::elimTautQuant__option_t) const;
+#line 55 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::elimTautQuant__option_t) const;
+#line 55 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::elimTautQuant__option_t, std::string option, bool value);
+#line 57 "../../../../../src/options/quantifiers_options"
+template <> const options::elimExtArithQuant__option_t::type& Options::operator[](options::elimExtArithQuant__option_t) const;
+#line 57 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::elimExtArithQuant__option_t) const;
+#line 57 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::elimExtArithQuant__option_t, std::string option, bool value);
+#line 59 "../../../../../src/options/quantifiers_options"
+template <> const options::condRewriteQuant__option_t::type& Options::operator[](options::condRewriteQuant__option_t) const;
+#line 59 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::condRewriteQuant__option_t) const;
+#line 59 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::condRewriteQuant__option_t, std::string option, bool value);
+#line 64 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::eMatching__option_t, const options::eMatching__option_t::type& x);
+#line 64 "../../../../../src/options/quantifiers_options"
+template <> const options::eMatching__option_t::type& Options::operator[](options::eMatching__option_t) const;
+#line 64 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::eMatching__option_t) const;
+#line 64 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::eMatching__option_t, std::string option, bool value);
+#line 67 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::termDbMode__option_t, const options::termDbMode__option_t::type& x);
+#line 67 "../../../../../src/options/quantifiers_options"
+template <> const options::termDbMode__option_t::type& Options::operator[](options::termDbMode__option_t) const;
+#line 67 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::termDbMode__option_t) const;
+#line 67 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::termDbMode__option_t, std::string option, std::string value);
+#line 69 "../../../../../src/options/quantifiers_options"
+template <> const options::registerQuantBodyTerms__option_t::type& Options::operator[](options::registerQuantBodyTerms__option_t) const;
+#line 69 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::registerQuantBodyTerms__option_t) const;
+#line 69 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::registerQuantBodyTerms__option_t, std::string option, bool value);
+#line 71 "../../../../../src/options/quantifiers_options"
+template <> const options::inferArithTriggerEq__option_t::type& Options::operator[](options::inferArithTriggerEq__option_t) const;
+#line 71 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::inferArithTriggerEq__option_t) const;
+#line 71 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::inferArithTriggerEq__option_t, std::string option, bool value);
+#line 73 "../../../../../src/options/quantifiers_options"
+template <> const options::inferArithTriggerEqExp__option_t::type& Options::operator[](options::inferArithTriggerEqExp__option_t) const;
+#line 73 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::inferArithTriggerEqExp__option_t) const;
+#line 73 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::inferArithTriggerEqExp__option_t, std::string option, bool value);
+#line 76 "../../../../../src/options/quantifiers_options"
+template <> const options::strictTriggers__option_t::type& Options::operator[](options::strictTriggers__option_t) const;
+#line 76 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::strictTriggers__option_t) const;
+#line 76 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::strictTriggers__option_t, std::string option, bool value);
+#line 78 "../../../../../src/options/quantifiers_options"
+template <> const options::relevantTriggers__option_t::type& Options::operator[](options::relevantTriggers__option_t) const;
+#line 78 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::relevantTriggers__option_t) const;
+#line 78 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::relevantTriggers__option_t, std::string option, bool value);
+#line 80 "../../../../../src/options/quantifiers_options"
+template <> const options::relationalTriggers__option_t::type& Options::operator[](options::relationalTriggers__option_t) const;
+#line 80 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::relationalTriggers__option_t) const;
+#line 80 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::relationalTriggers__option_t, std::string option, bool value);
+#line 82 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::purifyTriggers__option_t, const options::purifyTriggers__option_t::type& x);
+#line 82 "../../../../../src/options/quantifiers_options"
+template <> const options::purifyTriggers__option_t::type& Options::operator[](options::purifyTriggers__option_t) const;
+#line 82 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::purifyTriggers__option_t) const;
+#line 82 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::purifyTriggers__option_t, std::string option, bool value);
+#line 84 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::purifyDtTriggers__option_t, const options::purifyDtTriggers__option_t::type& x);
+#line 84 "../../../../../src/options/quantifiers_options"
+template <> const options::purifyDtTriggers__option_t::type& Options::operator[](options::purifyDtTriggers__option_t) const;
+#line 84 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::purifyDtTriggers__option_t) const;
+#line 84 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::purifyDtTriggers__option_t, std::string option, bool value);
+#line 86 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::pureThTriggers__option_t, const options::pureThTriggers__option_t::type& x);
+#line 86 "../../../../../src/options/quantifiers_options"
+template <> const options::pureThTriggers__option_t::type& Options::operator[](options::pureThTriggers__option_t) const;
+#line 86 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::pureThTriggers__option_t) const;
+#line 86 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::pureThTriggers__option_t, std::string option, bool value);
+#line 88 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::partialTriggers__option_t, const options::partialTriggers__option_t::type& x);
+#line 88 "../../../../../src/options/quantifiers_options"
+template <> const options::partialTriggers__option_t::type& Options::operator[](options::partialTriggers__option_t) const;
+#line 88 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::partialTriggers__option_t) const;
+#line 88 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::partialTriggers__option_t, std::string option, bool value);
+#line 90 "../../../../../src/options/quantifiers_options"
+template <> const options::multiTriggerWhenSingle__option_t::type& Options::operator[](options::multiTriggerWhenSingle__option_t) const;
+#line 90 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::multiTriggerWhenSingle__option_t) const;
+#line 90 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::multiTriggerWhenSingle__option_t, std::string option, bool value);
+#line 92 "../../../../../src/options/quantifiers_options"
+template <> const options::multiTriggerPriority__option_t::type& Options::operator[](options::multiTriggerPriority__option_t) const;
+#line 92 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::multiTriggerPriority__option_t) const;
+#line 92 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::multiTriggerPriority__option_t, std::string option, bool value);
+#line 94 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::triggerSelMode__option_t, const options::triggerSelMode__option_t::type& x);
+#line 94 "../../../../../src/options/quantifiers_options"
+template <> const options::triggerSelMode__option_t::type& Options::operator[](options::triggerSelMode__option_t) const;
+#line 94 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::triggerSelMode__option_t) const;
+#line 94 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::triggerSelMode__option_t, std::string option, std::string value);
+#line 96 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::triggerActiveSelMode__option_t, const options::triggerActiveSelMode__option_t::type& x);
+#line 96 "../../../../../src/options/quantifiers_options"
+template <> const options::triggerActiveSelMode__option_t::type& Options::operator[](options::triggerActiveSelMode__option_t) const;
+#line 96 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::triggerActiveSelMode__option_t) const;
+#line 96 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::triggerActiveSelMode__option_t, std::string option, std::string value);
+#line 98 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::userPatternsQuant__option_t, const options::userPatternsQuant__option_t::type& x);
+#line 98 "../../../../../src/options/quantifiers_options"
+template <> const options::userPatternsQuant__option_t::type& Options::operator[](options::userPatternsQuant__option_t) const;
+#line 98 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::userPatternsQuant__option_t) const;
+#line 98 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::userPatternsQuant__option_t, std::string option, std::string value);
+#line 100 "../../../../../src/options/quantifiers_options"
+template <> const options::incrementTriggers__option_t::type& Options::operator[](options::incrementTriggers__option_t) const;
+#line 100 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::incrementTriggers__option_t) const;
+#line 100 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::incrementTriggers__option_t, std::string option, bool value);
+#line 103 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::instWhenMode__option_t, const options::instWhenMode__option_t::type& x);
+#line 103 "../../../../../src/options/quantifiers_options"
+template <> const options::instWhenMode__option_t::type& Options::operator[](options::instWhenMode__option_t) const;
+#line 103 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::instWhenMode__option_t) const;
+#line 103 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::instWhenMode__option_t, std::string option, std::string value);
+#line 105 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::instWhenStrictInterleave__option_t, const options::instWhenStrictInterleave__option_t::type& x);
+#line 105 "../../../../../src/options/quantifiers_options"
+template <> const options::instWhenStrictInterleave__option_t::type& Options::operator[](options::instWhenStrictInterleave__option_t) const;
+#line 105 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::instWhenStrictInterleave__option_t) const;
+#line 105 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::instWhenStrictInterleave__option_t, std::string option, bool value);
+#line 107 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::instWhenPhase__option_t, const options::instWhenPhase__option_t::type& x);
+#line 107 "../../../../../src/options/quantifiers_options"
+template <> const options::instWhenPhase__option_t::type& Options::operator[](options::instWhenPhase__option_t) const;
+#line 107 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::instWhenPhase__option_t) const;
+#line 107 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::instWhenPhase__option_t, std::string option, std::string value);
+#line 109 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::instWhenTcFirst__option_t, const options::instWhenTcFirst__option_t::type& x);
+#line 109 "../../../../../src/options/quantifiers_options"
+template <> const options::instWhenTcFirst__option_t::type& Options::operator[](options::instWhenTcFirst__option_t) const;
+#line 109 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::instWhenTcFirst__option_t) const;
+#line 109 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::instWhenTcFirst__option_t, std::string option, bool value);
+#line 112 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::instMaxLevel__option_t, const options::instMaxLevel__option_t::type& x);
+#line 112 "../../../../../src/options/quantifiers_options"
+template <> const options::instMaxLevel__option_t::type& Options::operator[](options::instMaxLevel__option_t) const;
+#line 112 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::instMaxLevel__option_t) const;
+#line 112 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::instMaxLevel__option_t, std::string option, std::string value);
+#line 114 "../../../../../src/options/quantifiers_options"
+template <> const options::instLevelInputOnly__option_t::type& Options::operator[](options::instLevelInputOnly__option_t) const;
+#line 114 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::instLevelInputOnly__option_t) const;
+#line 114 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::instLevelInputOnly__option_t, std::string option, bool value);
+#line 116 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::quantRepMode__option_t, const options::quantRepMode__option_t::type& x);
+#line 116 "../../../../../src/options/quantifiers_options"
+template <> const options::quantRepMode__option_t::type& Options::operator[](options::quantRepMode__option_t) const;
+#line 116 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantRepMode__option_t) const;
+#line 116 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::quantRepMode__option_t, std::string option, std::string value);
+#line 118 "../../../../../src/options/quantifiers_options"
+template <> const options::instRelevantCond__option_t::type& Options::operator[](options::instRelevantCond__option_t) const;
+#line 118 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::instRelevantCond__option_t) const;
+#line 118 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::instRelevantCond__option_t, std::string option, bool value);
+#line 121 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::fullSaturateQuant__option_t, const options::fullSaturateQuant__option_t::type& x);
+#line 121 "../../../../../src/options/quantifiers_options"
+template <> const options::fullSaturateQuant__option_t::type& Options::operator[](options::fullSaturateQuant__option_t) const;
+#line 121 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fullSaturateQuant__option_t) const;
+#line 121 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::fullSaturateQuant__option_t, std::string option, bool value);
+#line 123 "../../../../../src/options/quantifiers_options"
+template <> const options::fullSaturateQuantRd__option_t::type& Options::operator[](options::fullSaturateQuantRd__option_t) const;
+#line 123 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fullSaturateQuantRd__option_t) const;
+#line 123 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::fullSaturateQuantRd__option_t, std::string option, bool value);
+#line 125 "../../../../../src/options/quantifiers_options"
+template <> const options::fullSaturateInst__option_t::type& Options::operator[](options::fullSaturateInst__option_t) const;
+#line 125 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fullSaturateInst__option_t) const;
+#line 125 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::fullSaturateInst__option_t, std::string option, bool value);
+#line 128 "../../../../../src/options/quantifiers_options"
+template <> const options::literalMatchMode__option_t::type& Options::operator[](options::literalMatchMode__option_t) const;
+#line 128 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::literalMatchMode__option_t) const;
+#line 128 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::literalMatchMode__option_t, std::string option, std::string value);
+#line 133 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::finiteModelFind__option_t, const options::finiteModelFind__option_t::type& x);
+#line 133 "../../../../../src/options/quantifiers_options"
+template <> const options::finiteModelFind__option_t::type& Options::operator[](options::finiteModelFind__option_t) const;
+#line 133 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::finiteModelFind__option_t) const;
+#line 133 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::finiteModelFind__option_t, std::string option, bool value);
+#line 136 "../../../../../src/options/quantifiers_options"
+template <> const options::quantFunWellDefined__option_t::type& Options::operator[](options::quantFunWellDefined__option_t) const;
+#line 136 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantFunWellDefined__option_t) const;
+#line 136 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::quantFunWellDefined__option_t, std::string option, bool value);
+#line 138 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::fmfFunWellDefined__option_t, const options::fmfFunWellDefined__option_t::type& x);
+#line 138 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfFunWellDefined__option_t::type& Options::operator[](options::fmfFunWellDefined__option_t) const;
+#line 138 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfFunWellDefined__option_t) const;
+#line 138 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::fmfFunWellDefined__option_t, std::string option, bool value);
+#line 140 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfFunWellDefinedRelevant__option_t::type& Options::operator[](options::fmfFunWellDefinedRelevant__option_t) const;
+#line 140 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfFunWellDefinedRelevant__option_t) const;
+#line 140 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::fmfFunWellDefinedRelevant__option_t, std::string option, bool value);
+#line 142 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfEmptySorts__option_t::type& Options::operator[](options::fmfEmptySorts__option_t) const;
+#line 142 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfEmptySorts__option_t) const;
+#line 142 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::fmfEmptySorts__option_t, std::string option, bool value);
+#line 145 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::mbqiMode__option_t, const options::mbqiMode__option_t::type& x);
+#line 145 "../../../../../src/options/quantifiers_options"
+template <> const options::mbqiMode__option_t::type& Options::operator[](options::mbqiMode__option_t) const;
+#line 145 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::mbqiMode__option_t) const;
+#line 145 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::mbqiMode__option_t, std::string option, std::string value);
+#line 147 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::fmfOneInstPerRound__option_t, const options::fmfOneInstPerRound__option_t::type& x);
+#line 147 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfOneInstPerRound__option_t::type& Options::operator[](options::fmfOneInstPerRound__option_t) const;
+#line 147 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfOneInstPerRound__option_t) const;
+#line 147 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::fmfOneInstPerRound__option_t, std::string option, bool value);
+#line 149 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfOneQuantPerRound__option_t::type& Options::operator[](options::fmfOneQuantPerRound__option_t) const;
+#line 149 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfOneQuantPerRound__option_t) const;
+#line 149 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::fmfOneQuantPerRound__option_t, std::string option, bool value);
+#line 152 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::fmfInstEngine__option_t, const options::fmfInstEngine__option_t::type& x);
+#line 152 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfInstEngine__option_t::type& Options::operator[](options::fmfInstEngine__option_t) const;
+#line 152 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfInstEngine__option_t) const;
+#line 152 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::fmfInstEngine__option_t, std::string option, bool value);
+#line 154 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfInstGen__option_t::type& Options::operator[](options::fmfInstGen__option_t) const;
+#line 154 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfInstGen__option_t) const;
+#line 154 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::fmfInstGen__option_t, std::string option, bool value);
+#line 156 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfInstGenOneQuantPerRound__option_t::type& Options::operator[](options::fmfInstGenOneQuantPerRound__option_t) const;
+#line 156 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfInstGenOneQuantPerRound__option_t) const;
+#line 156 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::fmfInstGenOneQuantPerRound__option_t, std::string option, bool value);
+#line 158 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfFreshDistConst__option_t::type& Options::operator[](options::fmfFreshDistConst__option_t) const;
+#line 158 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfFreshDistConst__option_t) const;
+#line 158 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::fmfFreshDistConst__option_t, std::string option, bool value);
+#line 160 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfFmcSimple__option_t::type& Options::operator[](options::fmfFmcSimple__option_t) const;
+#line 160 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfFmcSimple__option_t) const;
+#line 160 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::fmfFmcSimple__option_t, std::string option, bool value);
+#line 162 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::fmfBoundInt__option_t, const options::fmfBoundInt__option_t::type& x);
+#line 162 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfBoundInt__option_t::type& Options::operator[](options::fmfBoundInt__option_t) const;
+#line 162 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfBoundInt__option_t) const;
+#line 162 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::fmfBoundInt__option_t, std::string option, bool value);
+#line 164 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::fmfBound__option_t, const options::fmfBound__option_t::type& x);
+#line 164 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfBound__option_t::type& Options::operator[](options::fmfBound__option_t) const;
+#line 164 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfBound__option_t) const;
+#line 164 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::fmfBound__option_t, std::string option, bool value);
+#line 166 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::fmfBoundLazy__option_t, const options::fmfBoundLazy__option_t::type& x);
+#line 166 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfBoundLazy__option_t::type& Options::operator[](options::fmfBoundLazy__option_t) const;
+#line 166 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfBoundLazy__option_t) const;
+#line 166 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::fmfBoundLazy__option_t, std::string option, bool value);
+#line 168 "../../../../../src/options/quantifiers_options"
+template <> const options::fmfBoundMinMode__option_t::type& Options::operator[](options::fmfBoundMinMode__option_t) const;
+#line 168 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::fmfBoundMinMode__option_t) const;
+#line 168 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::fmfBoundMinMode__option_t, std::string option, std::string value);
+#line 173 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::quantConflictFind__option_t, const options::quantConflictFind__option_t::type& x);
+#line 173 "../../../../../src/options/quantifiers_options"
+template <> const options::quantConflictFind__option_t::type& Options::operator[](options::quantConflictFind__option_t) const;
+#line 173 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantConflictFind__option_t) const;
+#line 173 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::quantConflictFind__option_t, std::string option, bool value);
+#line 175 "../../../../../src/options/quantifiers_options"
+template <> const options::qcfMode__option_t::type& Options::operator[](options::qcfMode__option_t) const;
+#line 175 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::qcfMode__option_t) const;
+#line 175 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::qcfMode__option_t, std::string option, std::string value);
+#line 177 "../../../../../src/options/quantifiers_options"
+template <> const options::qcfWhenMode__option_t::type& Options::operator[](options::qcfWhenMode__option_t) const;
+#line 177 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::qcfWhenMode__option_t) const;
+#line 177 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::qcfWhenMode__option_t, std::string option, std::string value);
+#line 179 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::qcfTConstraint__option_t, const options::qcfTConstraint__option_t::type& x);
+#line 179 "../../../../../src/options/quantifiers_options"
+template <> const options::qcfTConstraint__option_t::type& Options::operator[](options::qcfTConstraint__option_t) const;
+#line 179 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::qcfTConstraint__option_t) const;
+#line 179 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::qcfTConstraint__option_t, std::string option, bool value);
+#line 181 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::qcfAllConflict__option_t, const options::qcfAllConflict__option_t::type& x);
+#line 181 "../../../../../src/options/quantifiers_options"
+template <> const options::qcfAllConflict__option_t::type& Options::operator[](options::qcfAllConflict__option_t) const;
+#line 181 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::qcfAllConflict__option_t) const;
+#line 181 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::qcfAllConflict__option_t, std::string option, bool value);
+#line 183 "../../../../../src/options/quantifiers_options"
+template <> const options::qcfNestedConflict__option_t::type& Options::operator[](options::qcfNestedConflict__option_t) const;
+#line 183 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::qcfNestedConflict__option_t) const;
+#line 183 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::qcfNestedConflict__option_t, std::string option, bool value);
+#line 185 "../../../../../src/options/quantifiers_options"
+template <> const options::qcfVoExp__option_t::type& Options::operator[](options::qcfVoExp__option_t) const;
+#line 185 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::qcfVoExp__option_t) const;
+#line 185 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::qcfVoExp__option_t, std::string option, bool value);
+#line 188 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::instNoEntail__option_t, const options::instNoEntail__option_t::type& x);
+#line 188 "../../../../../src/options/quantifiers_options"
+template <> const options::instNoEntail__option_t::type& Options::operator[](options::instNoEntail__option_t) const;
+#line 188 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::instNoEntail__option_t) const;
+#line 188 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::instNoEntail__option_t, std::string option, bool value);
+#line 191 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::instPropagate__option_t, const options::instPropagate__option_t::type& x);
+#line 191 "../../../../../src/options/quantifiers_options"
+template <> const options::instPropagate__option_t::type& Options::operator[](options::instPropagate__option_t) const;
+#line 191 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::instPropagate__option_t) const;
+#line 191 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::instPropagate__option_t, std::string option, bool value);
+#line 194 "../../../../../src/options/quantifiers_options"
+template <> const options::qcfEagerTest__option_t::type& Options::operator[](options::qcfEagerTest__option_t) const;
+#line 194 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::qcfEagerTest__option_t) const;
+#line 194 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::qcfEagerTest__option_t, std::string option, bool value);
+#line 196 "../../../../../src/options/quantifiers_options"
+template <> const options::qcfEagerCheckRd__option_t::type& Options::operator[](options::qcfEagerCheckRd__option_t) const;
+#line 196 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::qcfEagerCheckRd__option_t) const;
+#line 196 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::qcfEagerCheckRd__option_t, std::string option, bool value);
+#line 198 "../../../../../src/options/quantifiers_options"
+template <> const options::qcfSkipRd__option_t::type& Options::operator[](options::qcfSkipRd__option_t) const;
+#line 198 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::qcfSkipRd__option_t) const;
+#line 198 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::qcfSkipRd__option_t, std::string option, bool value);
+#line 203 "../../../../../src/options/quantifiers_options"
+template <> const options::quantRewriteRules__option_t::type& Options::operator[](options::quantRewriteRules__option_t) const;
+#line 203 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantRewriteRules__option_t) const;
+#line 203 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::quantRewriteRules__option_t, std::string option, bool value);
+#line 205 "../../../../../src/options/quantifiers_options"
+template <> const options::rrOneInstPerRound__option_t::type& Options::operator[](options::rrOneInstPerRound__option_t) const;
+#line 205 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::rrOneInstPerRound__option_t) const;
+#line 205 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::rrOneInstPerRound__option_t, std::string option, bool value);
+#line 210 "../../../../../src/options/quantifiers_options"
+template <> const options::quantInduction__option_t::type& Options::operator[](options::quantInduction__option_t) const;
+#line 210 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantInduction__option_t) const;
+#line 210 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::quantInduction__option_t, std::string option, bool value);
+#line 212 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::dtStcInduction__option_t, const options::dtStcInduction__option_t::type& x);
+#line 212 "../../../../../src/options/quantifiers_options"
+template <> const options::dtStcInduction__option_t::type& Options::operator[](options::dtStcInduction__option_t) const;
+#line 212 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::dtStcInduction__option_t) const;
+#line 212 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::dtStcInduction__option_t, std::string option, bool value);
+#line 214 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::intWfInduction__option_t, const options::intWfInduction__option_t::type& x);
+#line 214 "../../../../../src/options/quantifiers_options"
+template <> const options::intWfInduction__option_t::type& Options::operator[](options::intWfInduction__option_t) const;
+#line 214 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::intWfInduction__option_t) const;
+#line 214 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::intWfInduction__option_t, std::string option, bool value);
+#line 216 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::conjectureGen__option_t, const options::conjectureGen__option_t::type& x);
+#line 216 "../../../../../src/options/quantifiers_options"
+template <> const options::conjectureGen__option_t::type& Options::operator[](options::conjectureGen__option_t) const;
+#line 216 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::conjectureGen__option_t) const;
+#line 216 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::conjectureGen__option_t, std::string option, bool value);
+#line 219 "../../../../../src/options/quantifiers_options"
+template <> const options::conjectureGenPerRound__option_t::type& Options::operator[](options::conjectureGenPerRound__option_t) const;
+#line 219 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::conjectureGenPerRound__option_t) const;
+#line 219 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::conjectureGenPerRound__option_t, std::string option, std::string value);
+#line 221 "../../../../../src/options/quantifiers_options"
+template <> const options::conjectureNoFilter__option_t::type& Options::operator[](options::conjectureNoFilter__option_t) const;
+#line 221 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::conjectureNoFilter__option_t) const;
+#line 221 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::conjectureNoFilter__option_t, std::string option, bool value);
+#line 223 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::conjectureFilterActiveTerms__option_t, const options::conjectureFilterActiveTerms__option_t::type& x);
+#line 223 "../../../../../src/options/quantifiers_options"
+template <> const options::conjectureFilterActiveTerms__option_t::type& Options::operator[](options::conjectureFilterActiveTerms__option_t) const;
+#line 223 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::conjectureFilterActiveTerms__option_t) const;
+#line 223 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::conjectureFilterActiveTerms__option_t, std::string option, bool value);
+#line 225 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::conjectureFilterCanonical__option_t, const options::conjectureFilterCanonical__option_t::type& x);
+#line 225 "../../../../../src/options/quantifiers_options"
+template <> const options::conjectureFilterCanonical__option_t::type& Options::operator[](options::conjectureFilterCanonical__option_t) const;
+#line 225 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::conjectureFilterCanonical__option_t) const;
+#line 225 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::conjectureFilterCanonical__option_t, std::string option, bool value);
+#line 227 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::conjectureFilterModel__option_t, const options::conjectureFilterModel__option_t::type& x);
+#line 227 "../../../../../src/options/quantifiers_options"
+template <> const options::conjectureFilterModel__option_t::type& Options::operator[](options::conjectureFilterModel__option_t) const;
+#line 227 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::conjectureFilterModel__option_t) const;
+#line 227 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::conjectureFilterModel__option_t, std::string option, bool value);
+#line 229 "../../../../../src/options/quantifiers_options"
+template <> const options::conjectureGenGtEnum__option_t::type& Options::operator[](options::conjectureGenGtEnum__option_t) const;
+#line 229 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::conjectureGenGtEnum__option_t) const;
+#line 229 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::conjectureGenGtEnum__option_t, std::string option, std::string value);
+#line 231 "../../../../../src/options/quantifiers_options"
+template <> const options::conjectureUeeIntro__option_t::type& Options::operator[](options::conjectureUeeIntro__option_t) const;
+#line 231 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::conjectureUeeIntro__option_t) const;
+#line 231 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::conjectureUeeIntro__option_t, std::string option, bool value);
+#line 233 "../../../../../src/options/quantifiers_options"
+template <> const options::conjectureGenMaxDepth__option_t::type& Options::operator[](options::conjectureGenMaxDepth__option_t) const;
+#line 233 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::conjectureGenMaxDepth__option_t) const;
+#line 233 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::conjectureGenMaxDepth__option_t, std::string option, std::string value);
+#line 238 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::ceGuidedInst__option_t, const options::ceGuidedInst__option_t::type& x);
+#line 238 "../../../../../src/options/quantifiers_options"
+template <> const options::ceGuidedInst__option_t::type& Options::operator[](options::ceGuidedInst__option_t) const;
+#line 238 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::ceGuidedInst__option_t) const;
+#line 238 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::ceGuidedInst__option_t, std::string option, bool value);
+#line 240 "../../../../../src/options/quantifiers_options"
+template <> const options::ceGuidedInstFair__option_t::type& Options::operator[](options::ceGuidedInstFair__option_t) const;
+#line 240 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::ceGuidedInstFair__option_t) const;
+#line 240 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::ceGuidedInstFair__option_t, std::string option, std::string value);
+#line 242 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::cegqiSingleInvMode__option_t, const options::cegqiSingleInvMode__option_t::type& x);
+#line 242 "../../../../../src/options/quantifiers_options"
+template <> const options::cegqiSingleInvMode__option_t::type& Options::operator[](options::cegqiSingleInvMode__option_t) const;
+#line 242 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cegqiSingleInvMode__option_t) const;
+#line 242 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::cegqiSingleInvMode__option_t, std::string option, std::string value);
+#line 244 "../../../../../src/options/quantifiers_options"
+template <> const options::cegqiSingleInvPartial__option_t::type& Options::operator[](options::cegqiSingleInvPartial__option_t) const;
+#line 244 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cegqiSingleInvPartial__option_t) const;
+#line 244 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::cegqiSingleInvPartial__option_t, std::string option, bool value);
+#line 246 "../../../../../src/options/quantifiers_options"
+template <> const options::cegqiSingleInvReconstruct__option_t::type& Options::operator[](options::cegqiSingleInvReconstruct__option_t) const;
+#line 246 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cegqiSingleInvReconstruct__option_t) const;
+#line 246 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::cegqiSingleInvReconstruct__option_t, std::string option, bool value);
+#line 248 "../../../../../src/options/quantifiers_options"
+template <> const options::cegqiSolMinCore__option_t::type& Options::operator[](options::cegqiSolMinCore__option_t) const;
+#line 248 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cegqiSolMinCore__option_t) const;
+#line 248 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::cegqiSolMinCore__option_t, std::string option, bool value);
+#line 250 "../../../../../src/options/quantifiers_options"
+template <> const options::cegqiSolMinInst__option_t::type& Options::operator[](options::cegqiSolMinInst__option_t) const;
+#line 250 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cegqiSolMinInst__option_t) const;
+#line 250 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::cegqiSolMinInst__option_t, std::string option, bool value);
+#line 252 "../../../../../src/options/quantifiers_options"
+template <> const options::cegqiSingleInvReconstructConst__option_t::type& Options::operator[](options::cegqiSingleInvReconstructConst__option_t) const;
+#line 252 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cegqiSingleInvReconstructConst__option_t) const;
+#line 252 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::cegqiSingleInvReconstructConst__option_t, std::string option, bool value);
+#line 254 "../../../../../src/options/quantifiers_options"
+template <> const options::cegqiSingleInvAbort__option_t::type& Options::operator[](options::cegqiSingleInvAbort__option_t) const;
+#line 254 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cegqiSingleInvAbort__option_t) const;
+#line 254 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::cegqiSingleInvAbort__option_t, std::string option, bool value);
+#line 257 "../../../../../src/options/quantifiers_options"
+template <> const options::sygusNormalForm__option_t::type& Options::operator[](options::sygusNormalForm__option_t) const;
+#line 257 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::sygusNormalForm__option_t) const;
+#line 257 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::sygusNormalForm__option_t, std::string option, bool value);
+#line 259 "../../../../../src/options/quantifiers_options"
+template <> const options::sygusNormalFormArg__option_t::type& Options::operator[](options::sygusNormalFormArg__option_t) const;
+#line 259 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::sygusNormalFormArg__option_t) const;
+#line 259 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::sygusNormalFormArg__option_t, std::string option, bool value);
+#line 261 "../../../../../src/options/quantifiers_options"
+template <> const options::sygusNormalFormGlobal__option_t::type& Options::operator[](options::sygusNormalFormGlobal__option_t) const;
+#line 261 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::sygusNormalFormGlobal__option_t) const;
+#line 261 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::sygusNormalFormGlobal__option_t, std::string option, bool value);
+#line 263 "../../../../../src/options/quantifiers_options"
+template <> const options::sygusNormalFormGlobalGen__option_t::type& Options::operator[](options::sygusNormalFormGlobalGen__option_t) const;
+#line 263 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::sygusNormalFormGlobalGen__option_t) const;
+#line 263 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::sygusNormalFormGlobalGen__option_t, std::string option, bool value);
+#line 265 "../../../../../src/options/quantifiers_options"
+template <> const options::sygusNormalFormGlobalArg__option_t::type& Options::operator[](options::sygusNormalFormGlobalArg__option_t) const;
+#line 265 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::sygusNormalFormGlobalArg__option_t) const;
+#line 265 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::sygusNormalFormGlobalArg__option_t, std::string option, bool value);
+#line 267 "../../../../../src/options/quantifiers_options"
+template <> const options::sygusNormalFormGlobalContent__option_t::type& Options::operator[](options::sygusNormalFormGlobalContent__option_t) const;
+#line 267 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::sygusNormalFormGlobalContent__option_t) const;
+#line 267 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::sygusNormalFormGlobalContent__option_t, std::string option, bool value);
+#line 270 "../../../../../src/options/quantifiers_options"
+template <> const options::sygusInvTemplMode__option_t::type& Options::operator[](options::sygusInvTemplMode__option_t) const;
+#line 270 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::sygusInvTemplMode__option_t) const;
+#line 270 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::sygusInvTemplMode__option_t, std::string option, std::string value);
+#line 273 "../../../../../src/options/quantifiers_options"
+template <> const options::sygusDirectEval__option_t::type& Options::operator[](options::sygusDirectEval__option_t) const;
+#line 273 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::sygusDirectEval__option_t) const;
+#line 273 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::sygusDirectEval__option_t, std::string option, bool value);
+#line 277 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::cbqi__option_t, const options::cbqi__option_t::type& x);
+#line 277 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqi__option_t::type& Options::operator[](options::cbqi__option_t) const;
+#line 277 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqi__option_t) const;
+#line 277 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::cbqi__option_t, std::string option, bool value);
+#line 279 "../../../../../src/options/quantifiers_options"
+template <> const options::recurseCbqi__option_t::type& Options::operator[](options::recurseCbqi__option_t) const;
+#line 279 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::recurseCbqi__option_t) const;
+#line 279 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::recurseCbqi__option_t, std::string option, bool value);
+#line 281 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::cbqiSat__option_t, const options::cbqiSat__option_t::type& x);
+#line 281 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiSat__option_t::type& Options::operator[](options::cbqiSat__option_t) const;
+#line 281 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiSat__option_t) const;
+#line 281 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::cbqiSat__option_t, std::string option, bool value);
+#line 283 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::cbqiModel__option_t, const options::cbqiModel__option_t::type& x);
+#line 283 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiModel__option_t::type& Options::operator[](options::cbqiModel__option_t) const;
+#line 283 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiModel__option_t) const;
+#line 283 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::cbqiModel__option_t, std::string option, bool value);
+#line 285 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::cbqiAll__option_t, const options::cbqiAll__option_t::type& x);
+#line 285 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiAll__option_t::type& Options::operator[](options::cbqiAll__option_t) const;
+#line 285 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiAll__option_t) const;
+#line 285 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::cbqiAll__option_t, std::string option, bool value);
+#line 287 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::cbqiUseInfInt__option_t, const options::cbqiUseInfInt__option_t::type& x);
+#line 287 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiUseInfInt__option_t::type& Options::operator[](options::cbqiUseInfInt__option_t) const;
+#line 287 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiUseInfInt__option_t) const;
+#line 287 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::cbqiUseInfInt__option_t, std::string option, bool value);
+#line 289 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::cbqiUseInfReal__option_t, const options::cbqiUseInfReal__option_t::type& x);
+#line 289 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiUseInfReal__option_t::type& Options::operator[](options::cbqiUseInfReal__option_t) const;
+#line 289 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiUseInfReal__option_t) const;
+#line 289 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::cbqiUseInfReal__option_t, std::string option, bool value);
+#line 291 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::cbqiPreRegInst__option_t, const options::cbqiPreRegInst__option_t::type& x);
+#line 291 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiPreRegInst__option_t::type& Options::operator[](options::cbqiPreRegInst__option_t) const;
+#line 291 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiPreRegInst__option_t) const;
+#line 291 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::cbqiPreRegInst__option_t, std::string option, bool value);
+#line 293 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiMinBounds__option_t::type& Options::operator[](options::cbqiMinBounds__option_t) const;
+#line 293 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiMinBounds__option_t) const;
+#line 293 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::cbqiMinBounds__option_t, std::string option, bool value);
+#line 295 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiRoundUpLowerLia__option_t::type& Options::operator[](options::cbqiRoundUpLowerLia__option_t) const;
+#line 295 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiRoundUpLowerLia__option_t) const;
+#line 295 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::cbqiRoundUpLowerLia__option_t, std::string option, bool value);
+#line 297 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiMidpoint__option_t::type& Options::operator[](options::cbqiMidpoint__option_t) const;
+#line 297 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiMidpoint__option_t) const;
+#line 297 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::cbqiMidpoint__option_t, std::string option, bool value);
+#line 299 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiNopt__option_t::type& Options::operator[](options::cbqiNopt__option_t) const;
+#line 299 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiNopt__option_t) const;
+#line 299 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::cbqiNopt__option_t, std::string option, bool value);
+#line 301 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiLitDepend__option_t::type& Options::operator[](options::cbqiLitDepend__option_t) const;
+#line 301 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiLitDepend__option_t) const;
+#line 301 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::cbqiLitDepend__option_t, std::string option, bool value);
+#line 303 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::cbqiInnermost__option_t, const options::cbqiInnermost__option_t::type& x);
+#line 303 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiInnermost__option_t::type& Options::operator[](options::cbqiInnermost__option_t) const;
+#line 303 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiInnermost__option_t) const;
+#line 303 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::cbqiInnermost__option_t, std::string option, bool value);
+#line 305 "../../../../../src/options/quantifiers_options"
+template <> const options::cbqiNestedQE__option_t::type& Options::operator[](options::cbqiNestedQE__option_t) const;
+#line 305 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::cbqiNestedQE__option_t) const;
+#line 305 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::cbqiNestedQE__option_t, std::string option, bool value);
+#line 308 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::quantEpr__option_t, const options::quantEpr__option_t::type& x);
+#line 308 "../../../../../src/options/quantifiers_options"
+template <> const options::quantEpr__option_t::type& Options::operator[](options::quantEpr__option_t) const;
+#line 308 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantEpr__option_t) const;
+#line 308 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::quantEpr__option_t, std::string option, bool value);
+#line 310 "../../../../../src/options/quantifiers_options"
+template <> const options::quantEprMatching__option_t::type& Options::operator[](options::quantEprMatching__option_t) const;
+#line 310 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantEprMatching__option_t) const;
+#line 310 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::quantEprMatching__option_t, std::string option, bool value);
+#line 315 "../../../../../src/options/quantifiers_options"
+template <> const options::localTheoryExt__option_t::type& Options::operator[](options::localTheoryExt__option_t) const;
+#line 315 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::localTheoryExt__option_t) const;
+#line 315 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::localTheoryExt__option_t, std::string option, bool value);
+#line 317 "../../../../../src/options/quantifiers_options"
+template <> const options::ltePartialInst__option_t::type& Options::operator[](options::ltePartialInst__option_t) const;
+#line 317 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::ltePartialInst__option_t) const;
+#line 317 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::ltePartialInst__option_t, std::string option, bool value);
+#line 319 "../../../../../src/options/quantifiers_options"
+template <> const options::lteRestrictInstClosure__option_t::type& Options::operator[](options::lteRestrictInstClosure__option_t) const;
+#line 319 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::lteRestrictInstClosure__option_t) const;
+#line 319 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::lteRestrictInstClosure__option_t, std::string option, bool value);
+#line 324 "../../../../../src/options/quantifiers_options"
+template <> const options::quantAlphaEquiv__option_t::type& Options::operator[](options::quantAlphaEquiv__option_t) const;
+#line 324 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantAlphaEquiv__option_t) const;
+#line 324 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::quantAlphaEquiv__option_t, std::string option, bool value);
+#line 326 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::macrosQuant__option_t, const options::macrosQuant__option_t::type& x);
+#line 326 "../../../../../src/options/quantifiers_options"
+template <> const options::macrosQuant__option_t::type& Options::operator[](options::macrosQuant__option_t) const;
+#line 326 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::macrosQuant__option_t) const;
+#line 326 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::macrosQuant__option_t, std::string option, bool value);
+#line 328 "../../../../../src/options/quantifiers_options"
+template <> const options::macrosQuantMode__option_t::type& Options::operator[](options::macrosQuantMode__option_t) const;
+#line 328 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::macrosQuantMode__option_t) const;
+#line 328 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::macrosQuantMode__option_t, std::string option, std::string value);
+#line 330 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::quantDynamicSplit__option_t, const options::quantDynamicSplit__option_t::type& x);
+#line 330 "../../../../../src/options/quantifiers_options"
+template <> const options::quantDynamicSplit__option_t::type& Options::operator[](options::quantDynamicSplit__option_t) const;
+#line 330 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantDynamicSplit__option_t) const;
+#line 330 "../../../../../src/options/quantifiers_options"
+template <> void Options::assign(options::quantDynamicSplit__option_t, std::string option, std::string value);
+#line 332 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::quantAntiSkolem__option_t, const options::quantAntiSkolem__option_t::type& x);
+#line 332 "../../../../../src/options/quantifiers_options"
+template <> const options::quantAntiSkolem__option_t::type& Options::operator[](options::quantAntiSkolem__option_t) const;
+#line 332 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantAntiSkolem__option_t) const;
+#line 332 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::quantAntiSkolem__option_t, std::string option, bool value);
+#line 342 "../../../../../src/options/quantifiers_options"
+template <> const options::quantEqualityEngine__option_t::type& Options::operator[](options::quantEqualityEngine__option_t) const;
+#line 342 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantEqualityEngine__option_t) const;
+#line 342 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::quantEqualityEngine__option_t, std::string option, bool value);
+#line 347 "../../../../../src/options/quantifiers_options"
+template <> void Options::set(options::trackInstLemmas__option_t, const options::trackInstLemmas__option_t::type& x);
+#line 347 "../../../../../src/options/quantifiers_options"
+template <> const options::trackInstLemmas__option_t::type& Options::operator[](options::trackInstLemmas__option_t) const;
+#line 347 "../../../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::trackInstLemmas__option_t) const;
+#line 347 "../../../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::trackInstLemmas__option_t, std::string option, bool value);
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+#line 13 "../../../../../src/options/quantifiers_options"
+inline miniscopeQuant__option_t::type miniscopeQuant__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 13 "../../../../../src/options/quantifiers_options"
+inline bool miniscopeQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 13 "../../../../../src/options/quantifiers_options"
+inline void miniscopeQuant__option_t::set(const miniscopeQuant__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 18 "../../../../../src/options/quantifiers_options"
+inline miniscopeQuantFreeVar__option_t::type miniscopeQuantFreeVar__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 18 "../../../../../src/options/quantifiers_options"
+inline bool miniscopeQuantFreeVar__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 18 "../../../../../src/options/quantifiers_options"
+inline void miniscopeQuantFreeVar__option_t::set(const miniscopeQuantFreeVar__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 20 "../../../../../src/options/quantifiers_options"
+inline quantSplit__option_t::type quantSplit__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 20 "../../../../../src/options/quantifiers_options"
+inline bool quantSplit__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 20 "../../../../../src/options/quantifiers_options"
+inline void quantSplit__option_t::set(const quantSplit__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 22 "../../../../../src/options/quantifiers_options"
+inline prenexQuant__option_t::type prenexQuant__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 22 "../../../../../src/options/quantifiers_options"
+inline bool prenexQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 22 "../../../../../src/options/quantifiers_options"
+inline void prenexQuant__option_t::set(const prenexQuant__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 24 "../../../../../src/options/quantifiers_options"
+inline prenexQuantUser__option_t::type prenexQuantUser__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 24 "../../../../../src/options/quantifiers_options"
+inline bool prenexQuantUser__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 24 "../../../../../src/options/quantifiers_options"
+inline void prenexQuantUser__option_t::set(const prenexQuantUser__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 29 "../../../../../src/options/quantifiers_options"
+inline varElimQuant__option_t::type varElimQuant__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 29 "../../../../../src/options/quantifiers_options"
+inline bool varElimQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 31 "../../../../../src/options/quantifiers_options"
+inline varIneqElimQuant__option_t::type varIneqElimQuant__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 31 "../../../../../src/options/quantifiers_options"
+inline bool varIneqElimQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 33 "../../../../../src/options/quantifiers_options"
+inline dtVarExpandQuant__option_t::type dtVarExpandQuant__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 33 "../../../../../src/options/quantifiers_options"
+inline bool dtVarExpandQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 36 "../../../../../src/options/quantifiers_options"
+inline iteLiftQuant__option_t::type iteLiftQuant__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 36 "../../../../../src/options/quantifiers_options"
+inline bool iteLiftQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 36 "../../../../../src/options/quantifiers_options"
+inline void iteLiftQuant__option_t::set(const iteLiftQuant__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 38 "../../../../../src/options/quantifiers_options"
+inline condVarSplitQuant__option_t::type condVarSplitQuant__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 38 "../../../../../src/options/quantifiers_options"
+inline bool condVarSplitQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 40 "../../../../../src/options/quantifiers_options"
+inline condVarSplitQuantAgg__option_t::type condVarSplitQuantAgg__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 40 "../../../../../src/options/quantifiers_options"
+inline bool condVarSplitQuantAgg__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 42 "../../../../../src/options/quantifiers_options"
+inline iteDtTesterSplitQuant__option_t::type iteDtTesterSplitQuant__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 42 "../../../../../src/options/quantifiers_options"
+inline bool iteDtTesterSplitQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 42 "../../../../../src/options/quantifiers_options"
+inline void iteDtTesterSplitQuant__option_t::set(const iteDtTesterSplitQuant__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 47 "../../../../../src/options/quantifiers_options"
+inline preSkolemQuant__option_t::type preSkolemQuant__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 47 "../../../../../src/options/quantifiers_options"
+inline bool preSkolemQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 47 "../../../../../src/options/quantifiers_options"
+inline void preSkolemQuant__option_t::set(const preSkolemQuant__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 49 "../../../../../src/options/quantifiers_options"
+inline preSkolemQuantNested__option_t::type preSkolemQuantNested__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 49 "../../../../../src/options/quantifiers_options"
+inline bool preSkolemQuantNested__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 49 "../../../../../src/options/quantifiers_options"
+inline void preSkolemQuantNested__option_t::set(const preSkolemQuantNested__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 51 "../../../../../src/options/quantifiers_options"
+inline preSkolemQuantAgg__option_t::type preSkolemQuantAgg__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 51 "../../../../../src/options/quantifiers_options"
+inline bool preSkolemQuantAgg__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 51 "../../../../../src/options/quantifiers_options"
+inline void preSkolemQuantAgg__option_t::set(const preSkolemQuantAgg__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 53 "../../../../../src/options/quantifiers_options"
+inline aggressiveMiniscopeQuant__option_t::type aggressiveMiniscopeQuant__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 53 "../../../../../src/options/quantifiers_options"
+inline bool aggressiveMiniscopeQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 55 "../../../../../src/options/quantifiers_options"
+inline elimTautQuant__option_t::type elimTautQuant__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 55 "../../../../../src/options/quantifiers_options"
+inline bool elimTautQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 57 "../../../../../src/options/quantifiers_options"
+inline elimExtArithQuant__option_t::type elimExtArithQuant__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 57 "../../../../../src/options/quantifiers_options"
+inline bool elimExtArithQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 59 "../../../../../src/options/quantifiers_options"
+inline condRewriteQuant__option_t::type condRewriteQuant__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 59 "../../../../../src/options/quantifiers_options"
+inline bool condRewriteQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 64 "../../../../../src/options/quantifiers_options"
+inline eMatching__option_t::type eMatching__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 64 "../../../../../src/options/quantifiers_options"
+inline bool eMatching__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 64 "../../../../../src/options/quantifiers_options"
+inline void eMatching__option_t::set(const eMatching__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 67 "../../../../../src/options/quantifiers_options"
+inline termDbMode__option_t::type termDbMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 67 "../../../../../src/options/quantifiers_options"
+inline bool termDbMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 67 "../../../../../src/options/quantifiers_options"
+inline void termDbMode__option_t::set(const termDbMode__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 69 "../../../../../src/options/quantifiers_options"
+inline registerQuantBodyTerms__option_t::type registerQuantBodyTerms__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 69 "../../../../../src/options/quantifiers_options"
+inline bool registerQuantBodyTerms__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 71 "../../../../../src/options/quantifiers_options"
+inline inferArithTriggerEq__option_t::type inferArithTriggerEq__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 71 "../../../../../src/options/quantifiers_options"
+inline bool inferArithTriggerEq__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 73 "../../../../../src/options/quantifiers_options"
+inline inferArithTriggerEqExp__option_t::type inferArithTriggerEqExp__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 73 "../../../../../src/options/quantifiers_options"
+inline bool inferArithTriggerEqExp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 76 "../../../../../src/options/quantifiers_options"
+inline strictTriggers__option_t::type strictTriggers__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 76 "../../../../../src/options/quantifiers_options"
+inline bool strictTriggers__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 78 "../../../../../src/options/quantifiers_options"
+inline relevantTriggers__option_t::type relevantTriggers__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 78 "../../../../../src/options/quantifiers_options"
+inline bool relevantTriggers__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 80 "../../../../../src/options/quantifiers_options"
+inline relationalTriggers__option_t::type relationalTriggers__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 80 "../../../../../src/options/quantifiers_options"
+inline bool relationalTriggers__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 82 "../../../../../src/options/quantifiers_options"
+inline purifyTriggers__option_t::type purifyTriggers__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 82 "../../../../../src/options/quantifiers_options"
+inline bool purifyTriggers__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 82 "../../../../../src/options/quantifiers_options"
+inline void purifyTriggers__option_t::set(const purifyTriggers__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 84 "../../../../../src/options/quantifiers_options"
+inline purifyDtTriggers__option_t::type purifyDtTriggers__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 84 "../../../../../src/options/quantifiers_options"
+inline bool purifyDtTriggers__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 84 "../../../../../src/options/quantifiers_options"
+inline void purifyDtTriggers__option_t::set(const purifyDtTriggers__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 86 "../../../../../src/options/quantifiers_options"
+inline pureThTriggers__option_t::type pureThTriggers__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 86 "../../../../../src/options/quantifiers_options"
+inline bool pureThTriggers__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 86 "../../../../../src/options/quantifiers_options"
+inline void pureThTriggers__option_t::set(const pureThTriggers__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 88 "../../../../../src/options/quantifiers_options"
+inline partialTriggers__option_t::type partialTriggers__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 88 "../../../../../src/options/quantifiers_options"
+inline bool partialTriggers__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 88 "../../../../../src/options/quantifiers_options"
+inline void partialTriggers__option_t::set(const partialTriggers__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 90 "../../../../../src/options/quantifiers_options"
+inline multiTriggerWhenSingle__option_t::type multiTriggerWhenSingle__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 90 "../../../../../src/options/quantifiers_options"
+inline bool multiTriggerWhenSingle__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 92 "../../../../../src/options/quantifiers_options"
+inline multiTriggerPriority__option_t::type multiTriggerPriority__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 92 "../../../../../src/options/quantifiers_options"
+inline bool multiTriggerPriority__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 94 "../../../../../src/options/quantifiers_options"
+inline triggerSelMode__option_t::type triggerSelMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 94 "../../../../../src/options/quantifiers_options"
+inline bool triggerSelMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 94 "../../../../../src/options/quantifiers_options"
+inline void triggerSelMode__option_t::set(const triggerSelMode__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 96 "../../../../../src/options/quantifiers_options"
+inline triggerActiveSelMode__option_t::type triggerActiveSelMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 96 "../../../../../src/options/quantifiers_options"
+inline bool triggerActiveSelMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 96 "../../../../../src/options/quantifiers_options"
+inline void triggerActiveSelMode__option_t::set(const triggerActiveSelMode__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 98 "../../../../../src/options/quantifiers_options"
+inline userPatternsQuant__option_t::type userPatternsQuant__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 98 "../../../../../src/options/quantifiers_options"
+inline bool userPatternsQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 98 "../../../../../src/options/quantifiers_options"
+inline void userPatternsQuant__option_t::set(const userPatternsQuant__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 100 "../../../../../src/options/quantifiers_options"
+inline incrementTriggers__option_t::type incrementTriggers__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 100 "../../../../../src/options/quantifiers_options"
+inline bool incrementTriggers__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 103 "../../../../../src/options/quantifiers_options"
+inline instWhenMode__option_t::type instWhenMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 103 "../../../../../src/options/quantifiers_options"
+inline bool instWhenMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 103 "../../../../../src/options/quantifiers_options"
+inline void instWhenMode__option_t::set(const instWhenMode__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 105 "../../../../../src/options/quantifiers_options"
+inline instWhenStrictInterleave__option_t::type instWhenStrictInterleave__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 105 "../../../../../src/options/quantifiers_options"
+inline bool instWhenStrictInterleave__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 105 "../../../../../src/options/quantifiers_options"
+inline void instWhenStrictInterleave__option_t::set(const instWhenStrictInterleave__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 107 "../../../../../src/options/quantifiers_options"
+inline instWhenPhase__option_t::type instWhenPhase__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 107 "../../../../../src/options/quantifiers_options"
+inline bool instWhenPhase__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 107 "../../../../../src/options/quantifiers_options"
+inline void instWhenPhase__option_t::set(const instWhenPhase__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 109 "../../../../../src/options/quantifiers_options"
+inline instWhenTcFirst__option_t::type instWhenTcFirst__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 109 "../../../../../src/options/quantifiers_options"
+inline bool instWhenTcFirst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 109 "../../../../../src/options/quantifiers_options"
+inline void instWhenTcFirst__option_t::set(const instWhenTcFirst__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 112 "../../../../../src/options/quantifiers_options"
+inline instMaxLevel__option_t::type instMaxLevel__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 112 "../../../../../src/options/quantifiers_options"
+inline bool instMaxLevel__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 112 "../../../../../src/options/quantifiers_options"
+inline void instMaxLevel__option_t::set(const instMaxLevel__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 114 "../../../../../src/options/quantifiers_options"
+inline instLevelInputOnly__option_t::type instLevelInputOnly__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 114 "../../../../../src/options/quantifiers_options"
+inline bool instLevelInputOnly__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 116 "../../../../../src/options/quantifiers_options"
+inline quantRepMode__option_t::type quantRepMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 116 "../../../../../src/options/quantifiers_options"
+inline bool quantRepMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 116 "../../../../../src/options/quantifiers_options"
+inline void quantRepMode__option_t::set(const quantRepMode__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 118 "../../../../../src/options/quantifiers_options"
+inline instRelevantCond__option_t::type instRelevantCond__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 118 "../../../../../src/options/quantifiers_options"
+inline bool instRelevantCond__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 121 "../../../../../src/options/quantifiers_options"
+inline fullSaturateQuant__option_t::type fullSaturateQuant__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 121 "../../../../../src/options/quantifiers_options"
+inline bool fullSaturateQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 121 "../../../../../src/options/quantifiers_options"
+inline void fullSaturateQuant__option_t::set(const fullSaturateQuant__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 123 "../../../../../src/options/quantifiers_options"
+inline fullSaturateQuantRd__option_t::type fullSaturateQuantRd__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 123 "../../../../../src/options/quantifiers_options"
+inline bool fullSaturateQuantRd__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 125 "../../../../../src/options/quantifiers_options"
+inline fullSaturateInst__option_t::type fullSaturateInst__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 125 "../../../../../src/options/quantifiers_options"
+inline bool fullSaturateInst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 128 "../../../../../src/options/quantifiers_options"
+inline literalMatchMode__option_t::type literalMatchMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 128 "../../../../../src/options/quantifiers_options"
+inline bool literalMatchMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 133 "../../../../../src/options/quantifiers_options"
+inline finiteModelFind__option_t::type finiteModelFind__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 133 "../../../../../src/options/quantifiers_options"
+inline bool finiteModelFind__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 133 "../../../../../src/options/quantifiers_options"
+inline void finiteModelFind__option_t::set(const finiteModelFind__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 136 "../../../../../src/options/quantifiers_options"
+inline quantFunWellDefined__option_t::type quantFunWellDefined__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 136 "../../../../../src/options/quantifiers_options"
+inline bool quantFunWellDefined__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 138 "../../../../../src/options/quantifiers_options"
+inline fmfFunWellDefined__option_t::type fmfFunWellDefined__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 138 "../../../../../src/options/quantifiers_options"
+inline bool fmfFunWellDefined__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 138 "../../../../../src/options/quantifiers_options"
+inline void fmfFunWellDefined__option_t::set(const fmfFunWellDefined__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 140 "../../../../../src/options/quantifiers_options"
+inline fmfFunWellDefinedRelevant__option_t::type fmfFunWellDefinedRelevant__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 140 "../../../../../src/options/quantifiers_options"
+inline bool fmfFunWellDefinedRelevant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 142 "../../../../../src/options/quantifiers_options"
+inline fmfEmptySorts__option_t::type fmfEmptySorts__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 142 "../../../../../src/options/quantifiers_options"
+inline bool fmfEmptySorts__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 145 "../../../../../src/options/quantifiers_options"
+inline mbqiMode__option_t::type mbqiMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 145 "../../../../../src/options/quantifiers_options"
+inline bool mbqiMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 145 "../../../../../src/options/quantifiers_options"
+inline void mbqiMode__option_t::set(const mbqiMode__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 147 "../../../../../src/options/quantifiers_options"
+inline fmfOneInstPerRound__option_t::type fmfOneInstPerRound__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 147 "../../../../../src/options/quantifiers_options"
+inline bool fmfOneInstPerRound__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 147 "../../../../../src/options/quantifiers_options"
+inline void fmfOneInstPerRound__option_t::set(const fmfOneInstPerRound__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 149 "../../../../../src/options/quantifiers_options"
+inline fmfOneQuantPerRound__option_t::type fmfOneQuantPerRound__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 149 "../../../../../src/options/quantifiers_options"
+inline bool fmfOneQuantPerRound__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 152 "../../../../../src/options/quantifiers_options"
+inline fmfInstEngine__option_t::type fmfInstEngine__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 152 "../../../../../src/options/quantifiers_options"
+inline bool fmfInstEngine__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 152 "../../../../../src/options/quantifiers_options"
+inline void fmfInstEngine__option_t::set(const fmfInstEngine__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 154 "../../../../../src/options/quantifiers_options"
+inline fmfInstGen__option_t::type fmfInstGen__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 154 "../../../../../src/options/quantifiers_options"
+inline bool fmfInstGen__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 156 "../../../../../src/options/quantifiers_options"
+inline fmfInstGenOneQuantPerRound__option_t::type fmfInstGenOneQuantPerRound__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 156 "../../../../../src/options/quantifiers_options"
+inline bool fmfInstGenOneQuantPerRound__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 158 "../../../../../src/options/quantifiers_options"
+inline fmfFreshDistConst__option_t::type fmfFreshDistConst__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 158 "../../../../../src/options/quantifiers_options"
+inline bool fmfFreshDistConst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 160 "../../../../../src/options/quantifiers_options"
+inline fmfFmcSimple__option_t::type fmfFmcSimple__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 160 "../../../../../src/options/quantifiers_options"
+inline bool fmfFmcSimple__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 162 "../../../../../src/options/quantifiers_options"
+inline fmfBoundInt__option_t::type fmfBoundInt__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 162 "../../../../../src/options/quantifiers_options"
+inline bool fmfBoundInt__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 162 "../../../../../src/options/quantifiers_options"
+inline void fmfBoundInt__option_t::set(const fmfBoundInt__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 164 "../../../../../src/options/quantifiers_options"
+inline fmfBound__option_t::type fmfBound__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 164 "../../../../../src/options/quantifiers_options"
+inline bool fmfBound__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 164 "../../../../../src/options/quantifiers_options"
+inline void fmfBound__option_t::set(const fmfBound__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 166 "../../../../../src/options/quantifiers_options"
+inline fmfBoundLazy__option_t::type fmfBoundLazy__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 166 "../../../../../src/options/quantifiers_options"
+inline bool fmfBoundLazy__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 166 "../../../../../src/options/quantifiers_options"
+inline void fmfBoundLazy__option_t::set(const fmfBoundLazy__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 168 "../../../../../src/options/quantifiers_options"
+inline fmfBoundMinMode__option_t::type fmfBoundMinMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 168 "../../../../../src/options/quantifiers_options"
+inline bool fmfBoundMinMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 173 "../../../../../src/options/quantifiers_options"
+inline quantConflictFind__option_t::type quantConflictFind__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 173 "../../../../../src/options/quantifiers_options"
+inline bool quantConflictFind__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 173 "../../../../../src/options/quantifiers_options"
+inline void quantConflictFind__option_t::set(const quantConflictFind__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 175 "../../../../../src/options/quantifiers_options"
+inline qcfMode__option_t::type qcfMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 175 "../../../../../src/options/quantifiers_options"
+inline bool qcfMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 177 "../../../../../src/options/quantifiers_options"
+inline qcfWhenMode__option_t::type qcfWhenMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 177 "../../../../../src/options/quantifiers_options"
+inline bool qcfWhenMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 179 "../../../../../src/options/quantifiers_options"
+inline qcfTConstraint__option_t::type qcfTConstraint__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 179 "../../../../../src/options/quantifiers_options"
+inline bool qcfTConstraint__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 179 "../../../../../src/options/quantifiers_options"
+inline void qcfTConstraint__option_t::set(const qcfTConstraint__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 181 "../../../../../src/options/quantifiers_options"
+inline qcfAllConflict__option_t::type qcfAllConflict__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 181 "../../../../../src/options/quantifiers_options"
+inline bool qcfAllConflict__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 181 "../../../../../src/options/quantifiers_options"
+inline void qcfAllConflict__option_t::set(const qcfAllConflict__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 183 "../../../../../src/options/quantifiers_options"
+inline qcfNestedConflict__option_t::type qcfNestedConflict__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 183 "../../../../../src/options/quantifiers_options"
+inline bool qcfNestedConflict__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 185 "../../../../../src/options/quantifiers_options"
+inline qcfVoExp__option_t::type qcfVoExp__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 185 "../../../../../src/options/quantifiers_options"
+inline bool qcfVoExp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 188 "../../../../../src/options/quantifiers_options"
+inline instNoEntail__option_t::type instNoEntail__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 188 "../../../../../src/options/quantifiers_options"
+inline bool instNoEntail__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 188 "../../../../../src/options/quantifiers_options"
+inline void instNoEntail__option_t::set(const instNoEntail__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 191 "../../../../../src/options/quantifiers_options"
+inline instPropagate__option_t::type instPropagate__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 191 "../../../../../src/options/quantifiers_options"
+inline bool instPropagate__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 191 "../../../../../src/options/quantifiers_options"
+inline void instPropagate__option_t::set(const instPropagate__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 194 "../../../../../src/options/quantifiers_options"
+inline qcfEagerTest__option_t::type qcfEagerTest__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 194 "../../../../../src/options/quantifiers_options"
+inline bool qcfEagerTest__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 196 "../../../../../src/options/quantifiers_options"
+inline qcfEagerCheckRd__option_t::type qcfEagerCheckRd__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 196 "../../../../../src/options/quantifiers_options"
+inline bool qcfEagerCheckRd__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 198 "../../../../../src/options/quantifiers_options"
+inline qcfSkipRd__option_t::type qcfSkipRd__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 198 "../../../../../src/options/quantifiers_options"
+inline bool qcfSkipRd__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 203 "../../../../../src/options/quantifiers_options"
+inline quantRewriteRules__option_t::type quantRewriteRules__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 203 "../../../../../src/options/quantifiers_options"
+inline bool quantRewriteRules__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 205 "../../../../../src/options/quantifiers_options"
+inline rrOneInstPerRound__option_t::type rrOneInstPerRound__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 205 "../../../../../src/options/quantifiers_options"
+inline bool rrOneInstPerRound__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 210 "../../../../../src/options/quantifiers_options"
+inline quantInduction__option_t::type quantInduction__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 210 "../../../../../src/options/quantifiers_options"
+inline bool quantInduction__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 212 "../../../../../src/options/quantifiers_options"
+inline dtStcInduction__option_t::type dtStcInduction__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 212 "../../../../../src/options/quantifiers_options"
+inline bool dtStcInduction__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 212 "../../../../../src/options/quantifiers_options"
+inline void dtStcInduction__option_t::set(const dtStcInduction__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 214 "../../../../../src/options/quantifiers_options"
+inline intWfInduction__option_t::type intWfInduction__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 214 "../../../../../src/options/quantifiers_options"
+inline bool intWfInduction__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 214 "../../../../../src/options/quantifiers_options"
+inline void intWfInduction__option_t::set(const intWfInduction__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 216 "../../../../../src/options/quantifiers_options"
+inline conjectureGen__option_t::type conjectureGen__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 216 "../../../../../src/options/quantifiers_options"
+inline bool conjectureGen__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 216 "../../../../../src/options/quantifiers_options"
+inline void conjectureGen__option_t::set(const conjectureGen__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 219 "../../../../../src/options/quantifiers_options"
+inline conjectureGenPerRound__option_t::type conjectureGenPerRound__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 219 "../../../../../src/options/quantifiers_options"
+inline bool conjectureGenPerRound__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 221 "../../../../../src/options/quantifiers_options"
+inline conjectureNoFilter__option_t::type conjectureNoFilter__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 221 "../../../../../src/options/quantifiers_options"
+inline bool conjectureNoFilter__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 223 "../../../../../src/options/quantifiers_options"
+inline conjectureFilterActiveTerms__option_t::type conjectureFilterActiveTerms__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 223 "../../../../../src/options/quantifiers_options"
+inline bool conjectureFilterActiveTerms__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 223 "../../../../../src/options/quantifiers_options"
+inline void conjectureFilterActiveTerms__option_t::set(const conjectureFilterActiveTerms__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 225 "../../../../../src/options/quantifiers_options"
+inline conjectureFilterCanonical__option_t::type conjectureFilterCanonical__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 225 "../../../../../src/options/quantifiers_options"
+inline bool conjectureFilterCanonical__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 225 "../../../../../src/options/quantifiers_options"
+inline void conjectureFilterCanonical__option_t::set(const conjectureFilterCanonical__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 227 "../../../../../src/options/quantifiers_options"
+inline conjectureFilterModel__option_t::type conjectureFilterModel__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 227 "../../../../../src/options/quantifiers_options"
+inline bool conjectureFilterModel__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 227 "../../../../../src/options/quantifiers_options"
+inline void conjectureFilterModel__option_t::set(const conjectureFilterModel__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 229 "../../../../../src/options/quantifiers_options"
+inline conjectureGenGtEnum__option_t::type conjectureGenGtEnum__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 229 "../../../../../src/options/quantifiers_options"
+inline bool conjectureGenGtEnum__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 231 "../../../../../src/options/quantifiers_options"
+inline conjectureUeeIntro__option_t::type conjectureUeeIntro__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 231 "../../../../../src/options/quantifiers_options"
+inline bool conjectureUeeIntro__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 233 "../../../../../src/options/quantifiers_options"
+inline conjectureGenMaxDepth__option_t::type conjectureGenMaxDepth__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 233 "../../../../../src/options/quantifiers_options"
+inline bool conjectureGenMaxDepth__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 238 "../../../../../src/options/quantifiers_options"
+inline ceGuidedInst__option_t::type ceGuidedInst__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 238 "../../../../../src/options/quantifiers_options"
+inline bool ceGuidedInst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 238 "../../../../../src/options/quantifiers_options"
+inline void ceGuidedInst__option_t::set(const ceGuidedInst__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 240 "../../../../../src/options/quantifiers_options"
+inline ceGuidedInstFair__option_t::type ceGuidedInstFair__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 240 "../../../../../src/options/quantifiers_options"
+inline bool ceGuidedInstFair__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 242 "../../../../../src/options/quantifiers_options"
+inline cegqiSingleInvMode__option_t::type cegqiSingleInvMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 242 "../../../../../src/options/quantifiers_options"
+inline bool cegqiSingleInvMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 242 "../../../../../src/options/quantifiers_options"
+inline void cegqiSingleInvMode__option_t::set(const cegqiSingleInvMode__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 244 "../../../../../src/options/quantifiers_options"
+inline cegqiSingleInvPartial__option_t::type cegqiSingleInvPartial__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 244 "../../../../../src/options/quantifiers_options"
+inline bool cegqiSingleInvPartial__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 246 "../../../../../src/options/quantifiers_options"
+inline cegqiSingleInvReconstruct__option_t::type cegqiSingleInvReconstruct__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 246 "../../../../../src/options/quantifiers_options"
+inline bool cegqiSingleInvReconstruct__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 248 "../../../../../src/options/quantifiers_options"
+inline cegqiSolMinCore__option_t::type cegqiSolMinCore__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 248 "../../../../../src/options/quantifiers_options"
+inline bool cegqiSolMinCore__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 250 "../../../../../src/options/quantifiers_options"
+inline cegqiSolMinInst__option_t::type cegqiSolMinInst__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 250 "../../../../../src/options/quantifiers_options"
+inline bool cegqiSolMinInst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 252 "../../../../../src/options/quantifiers_options"
+inline cegqiSingleInvReconstructConst__option_t::type cegqiSingleInvReconstructConst__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 252 "../../../../../src/options/quantifiers_options"
+inline bool cegqiSingleInvReconstructConst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 254 "../../../../../src/options/quantifiers_options"
+inline cegqiSingleInvAbort__option_t::type cegqiSingleInvAbort__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 254 "../../../../../src/options/quantifiers_options"
+inline bool cegqiSingleInvAbort__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 257 "../../../../../src/options/quantifiers_options"
+inline sygusNormalForm__option_t::type sygusNormalForm__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 257 "../../../../../src/options/quantifiers_options"
+inline bool sygusNormalForm__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 259 "../../../../../src/options/quantifiers_options"
+inline sygusNormalFormArg__option_t::type sygusNormalFormArg__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 259 "../../../../../src/options/quantifiers_options"
+inline bool sygusNormalFormArg__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 261 "../../../../../src/options/quantifiers_options"
+inline sygusNormalFormGlobal__option_t::type sygusNormalFormGlobal__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 261 "../../../../../src/options/quantifiers_options"
+inline bool sygusNormalFormGlobal__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 263 "../../../../../src/options/quantifiers_options"
+inline sygusNormalFormGlobalGen__option_t::type sygusNormalFormGlobalGen__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 263 "../../../../../src/options/quantifiers_options"
+inline bool sygusNormalFormGlobalGen__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 265 "../../../../../src/options/quantifiers_options"
+inline sygusNormalFormGlobalArg__option_t::type sygusNormalFormGlobalArg__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 265 "../../../../../src/options/quantifiers_options"
+inline bool sygusNormalFormGlobalArg__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 267 "../../../../../src/options/quantifiers_options"
+inline sygusNormalFormGlobalContent__option_t::type sygusNormalFormGlobalContent__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 267 "../../../../../src/options/quantifiers_options"
+inline bool sygusNormalFormGlobalContent__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 270 "../../../../../src/options/quantifiers_options"
+inline sygusInvTemplMode__option_t::type sygusInvTemplMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 270 "../../../../../src/options/quantifiers_options"
+inline bool sygusInvTemplMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 273 "../../../../../src/options/quantifiers_options"
+inline sygusDirectEval__option_t::type sygusDirectEval__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 273 "../../../../../src/options/quantifiers_options"
+inline bool sygusDirectEval__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 277 "../../../../../src/options/quantifiers_options"
+inline cbqi__option_t::type cbqi__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 277 "../../../../../src/options/quantifiers_options"
+inline bool cbqi__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 277 "../../../../../src/options/quantifiers_options"
+inline void cbqi__option_t::set(const cbqi__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 279 "../../../../../src/options/quantifiers_options"
+inline recurseCbqi__option_t::type recurseCbqi__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 279 "../../../../../src/options/quantifiers_options"
+inline bool recurseCbqi__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 281 "../../../../../src/options/quantifiers_options"
+inline cbqiSat__option_t::type cbqiSat__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 281 "../../../../../src/options/quantifiers_options"
+inline bool cbqiSat__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 281 "../../../../../src/options/quantifiers_options"
+inline void cbqiSat__option_t::set(const cbqiSat__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 283 "../../../../../src/options/quantifiers_options"
+inline cbqiModel__option_t::type cbqiModel__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 283 "../../../../../src/options/quantifiers_options"
+inline bool cbqiModel__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 283 "../../../../../src/options/quantifiers_options"
+inline void cbqiModel__option_t::set(const cbqiModel__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 285 "../../../../../src/options/quantifiers_options"
+inline cbqiAll__option_t::type cbqiAll__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 285 "../../../../../src/options/quantifiers_options"
+inline bool cbqiAll__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 285 "../../../../../src/options/quantifiers_options"
+inline void cbqiAll__option_t::set(const cbqiAll__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 287 "../../../../../src/options/quantifiers_options"
+inline cbqiUseInfInt__option_t::type cbqiUseInfInt__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 287 "../../../../../src/options/quantifiers_options"
+inline bool cbqiUseInfInt__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 287 "../../../../../src/options/quantifiers_options"
+inline void cbqiUseInfInt__option_t::set(const cbqiUseInfInt__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 289 "../../../../../src/options/quantifiers_options"
+inline cbqiUseInfReal__option_t::type cbqiUseInfReal__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 289 "../../../../../src/options/quantifiers_options"
+inline bool cbqiUseInfReal__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 289 "../../../../../src/options/quantifiers_options"
+inline void cbqiUseInfReal__option_t::set(const cbqiUseInfReal__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 291 "../../../../../src/options/quantifiers_options"
+inline cbqiPreRegInst__option_t::type cbqiPreRegInst__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 291 "../../../../../src/options/quantifiers_options"
+inline bool cbqiPreRegInst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 291 "../../../../../src/options/quantifiers_options"
+inline void cbqiPreRegInst__option_t::set(const cbqiPreRegInst__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 293 "../../../../../src/options/quantifiers_options"
+inline cbqiMinBounds__option_t::type cbqiMinBounds__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 293 "../../../../../src/options/quantifiers_options"
+inline bool cbqiMinBounds__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 295 "../../../../../src/options/quantifiers_options"
+inline cbqiRoundUpLowerLia__option_t::type cbqiRoundUpLowerLia__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 295 "../../../../../src/options/quantifiers_options"
+inline bool cbqiRoundUpLowerLia__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 297 "../../../../../src/options/quantifiers_options"
+inline cbqiMidpoint__option_t::type cbqiMidpoint__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 297 "../../../../../src/options/quantifiers_options"
+inline bool cbqiMidpoint__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 299 "../../../../../src/options/quantifiers_options"
+inline cbqiNopt__option_t::type cbqiNopt__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 299 "../../../../../src/options/quantifiers_options"
+inline bool cbqiNopt__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 301 "../../../../../src/options/quantifiers_options"
+inline cbqiLitDepend__option_t::type cbqiLitDepend__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 301 "../../../../../src/options/quantifiers_options"
+inline bool cbqiLitDepend__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 303 "../../../../../src/options/quantifiers_options"
+inline cbqiInnermost__option_t::type cbqiInnermost__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 303 "../../../../../src/options/quantifiers_options"
+inline bool cbqiInnermost__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 303 "../../../../../src/options/quantifiers_options"
+inline void cbqiInnermost__option_t::set(const cbqiInnermost__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 305 "../../../../../src/options/quantifiers_options"
+inline cbqiNestedQE__option_t::type cbqiNestedQE__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 305 "../../../../../src/options/quantifiers_options"
+inline bool cbqiNestedQE__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 308 "../../../../../src/options/quantifiers_options"
+inline quantEpr__option_t::type quantEpr__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 308 "../../../../../src/options/quantifiers_options"
+inline bool quantEpr__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 308 "../../../../../src/options/quantifiers_options"
+inline void quantEpr__option_t::set(const quantEpr__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 310 "../../../../../src/options/quantifiers_options"
+inline quantEprMatching__option_t::type quantEprMatching__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 310 "../../../../../src/options/quantifiers_options"
+inline bool quantEprMatching__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 315 "../../../../../src/options/quantifiers_options"
+inline localTheoryExt__option_t::type localTheoryExt__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 315 "../../../../../src/options/quantifiers_options"
+inline bool localTheoryExt__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 317 "../../../../../src/options/quantifiers_options"
+inline ltePartialInst__option_t::type ltePartialInst__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 317 "../../../../../src/options/quantifiers_options"
+inline bool ltePartialInst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 319 "../../../../../src/options/quantifiers_options"
+inline lteRestrictInstClosure__option_t::type lteRestrictInstClosure__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 319 "../../../../../src/options/quantifiers_options"
+inline bool lteRestrictInstClosure__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 324 "../../../../../src/options/quantifiers_options"
+inline quantAlphaEquiv__option_t::type quantAlphaEquiv__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 324 "../../../../../src/options/quantifiers_options"
+inline bool quantAlphaEquiv__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 326 "../../../../../src/options/quantifiers_options"
+inline macrosQuant__option_t::type macrosQuant__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 326 "../../../../../src/options/quantifiers_options"
+inline bool macrosQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 326 "../../../../../src/options/quantifiers_options"
+inline void macrosQuant__option_t::set(const macrosQuant__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 328 "../../../../../src/options/quantifiers_options"
+inline macrosQuantMode__option_t::type macrosQuantMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 328 "../../../../../src/options/quantifiers_options"
+inline bool macrosQuantMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 330 "../../../../../src/options/quantifiers_options"
+inline quantDynamicSplit__option_t::type quantDynamicSplit__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 330 "../../../../../src/options/quantifiers_options"
+inline bool quantDynamicSplit__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 330 "../../../../../src/options/quantifiers_options"
+inline void quantDynamicSplit__option_t::set(const quantDynamicSplit__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 332 "../../../../../src/options/quantifiers_options"
+inline quantAntiSkolem__option_t::type quantAntiSkolem__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 332 "../../../../../src/options/quantifiers_options"
+inline bool quantAntiSkolem__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 332 "../../../../../src/options/quantifiers_options"
+inline void quantAntiSkolem__option_t::set(const quantAntiSkolem__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 342 "../../../../../src/options/quantifiers_options"
+inline quantEqualityEngine__option_t::type quantEqualityEngine__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 342 "../../../../../src/options/quantifiers_options"
+inline bool quantEqualityEngine__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 347 "../../../../../src/options/quantifiers_options"
+inline trackInstLemmas__option_t::type trackInstLemmas__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 347 "../../../../../src/options/quantifiers_options"
+inline bool trackInstLemmas__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 347 "../../../../../src/options/quantifiers_options"
+inline void trackInstLemmas__option_t::set(const trackInstLemmas__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__QUANTIFIERS_H */
diff --git a/src/options/sep_options b/src/options/sep_options
new file mode 100644
index 0000000..ba10cde
--- /dev/null
+++ b/src/options/sep_options
@@ -0,0 +1,24 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module SEP "options/sep_options.h" Sep
+
+option sepCheckNeg --sep-check-neg bool :default true
+ check negated spatial assertions
+
+option sepExp --sep-exp bool :default false
+ experimental flag for sep
+option sepMinimalRefine --sep-min-refine bool :default false
+ only add refinement lemmas for minimal (innermost) assertions
+option sepDisequalC --sep-deq-c bool :default true
+ assume cardinality elements are distinct
+
+option sepPreSkolemEmp --sep-pre-skolem-emp bool :default false
+ eliminate emp constraint at preprocess time
+ 
+option sepChildRefine --sep-child-refine bool :default false
+ child-specific refinements of negated star, positive wand
+ 
+endmodule
diff --git a/src/options/sep_options.cpp b/src/options/sep_options.cpp
new file mode 100644
index 0000000..ccb08cb
--- /dev/null
+++ b/src/options/sep_options.cpp
@@ -0,0 +1,69 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+#line 8 "../../../../../src/options/sep_options"
+template <> const options::sepCheckNeg__option_t::type& Options::operator[](options::sepCheckNeg__option_t) const { return d_holder->sepCheckNeg; }
+#line 8 "../../../../../src/options/sep_options"
+template <> bool Options::wasSetByUser(options::sepCheckNeg__option_t) const { return d_holder->sepCheckNeg__setByUser__; }
+#line 11 "../../../../../src/options/sep_options"
+template <> const options::sepExp__option_t::type& Options::operator[](options::sepExp__option_t) const { return d_holder->sepExp; }
+#line 11 "../../../../../src/options/sep_options"
+template <> bool Options::wasSetByUser(options::sepExp__option_t) const { return d_holder->sepExp__setByUser__; }
+#line 13 "../../../../../src/options/sep_options"
+template <> const options::sepMinimalRefine__option_t::type& Options::operator[](options::sepMinimalRefine__option_t) const { return d_holder->sepMinimalRefine; }
+#line 13 "../../../../../src/options/sep_options"
+template <> bool Options::wasSetByUser(options::sepMinimalRefine__option_t) const { return d_holder->sepMinimalRefine__setByUser__; }
+#line 15 "../../../../../src/options/sep_options"
+template <> const options::sepDisequalC__option_t::type& Options::operator[](options::sepDisequalC__option_t) const { return d_holder->sepDisequalC; }
+#line 15 "../../../../../src/options/sep_options"
+template <> bool Options::wasSetByUser(options::sepDisequalC__option_t) const { return d_holder->sepDisequalC__setByUser__; }
+#line 18 "../../../../../src/options/sep_options"
+template <> const options::sepPreSkolemEmp__option_t::type& Options::operator[](options::sepPreSkolemEmp__option_t) const { return d_holder->sepPreSkolemEmp; }
+#line 18 "../../../../../src/options/sep_options"
+template <> bool Options::wasSetByUser(options::sepPreSkolemEmp__option_t) const { return d_holder->sepPreSkolemEmp__setByUser__; }
+#line 21 "../../../../../src/options/sep_options"
+template <> const options::sepChildRefine__option_t::type& Options::operator[](options::sepChildRefine__option_t) const { return d_holder->sepChildRefine; }
+#line 21 "../../../../../src/options/sep_options"
+template <> bool Options::wasSetByUser(options::sepChildRefine__option_t) const { return d_holder->sepChildRefine__setByUser__; }
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/sep_options"
+struct sepCheckNeg__option_t sepCheckNeg;
+#line 11 "../../../../../src/options/sep_options"
+struct sepExp__option_t sepExp;
+#line 13 "../../../../../src/options/sep_options"
+struct sepMinimalRefine__option_t sepMinimalRefine;
+#line 15 "../../../../../src/options/sep_options"
+struct sepDisequalC__option_t sepDisequalC;
+#line 18 "../../../../../src/options/sep_options"
+struct sepPreSkolemEmp__option_t sepPreSkolemEmp;
+#line 21 "../../../../../src/options/sep_options"
+struct sepChildRefine__option_t sepChildRefine;
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/sep_options.h b/src/options/sep_options.h
new file mode 100644
index 0000000..2fef78a
--- /dev/null
+++ b/src/options/sep_options.h
@@ -0,0 +1,144 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__SEP_H
+#define __CVC4__OPTIONS__SEP_H
+
+#include "options/options.h"
+
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__SEP__FOR_OPTION_HOLDER \
+  sepCheckNeg__option_t::type sepCheckNeg; \
+  bool sepCheckNeg__setByUser__; \
+  sepExp__option_t::type sepExp; \
+  bool sepExp__setByUser__; \
+  sepMinimalRefine__option_t::type sepMinimalRefine; \
+  bool sepMinimalRefine__setByUser__; \
+  sepDisequalC__option_t::type sepDisequalC; \
+  bool sepDisequalC__setByUser__; \
+  sepPreSkolemEmp__option_t::type sepPreSkolemEmp; \
+  bool sepPreSkolemEmp__setByUser__; \
+  sepChildRefine__option_t::type sepChildRefine; \
+  bool sepChildRefine__setByUser__;
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/sep_options"
+extern struct CVC4_PUBLIC sepCheckNeg__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sepCheckNeg CVC4_PUBLIC;
+#line 11 "../../../../../src/options/sep_options"
+extern struct CVC4_PUBLIC sepExp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sepExp CVC4_PUBLIC;
+#line 13 "../../../../../src/options/sep_options"
+extern struct CVC4_PUBLIC sepMinimalRefine__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sepMinimalRefine CVC4_PUBLIC;
+#line 15 "../../../../../src/options/sep_options"
+extern struct CVC4_PUBLIC sepDisequalC__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sepDisequalC CVC4_PUBLIC;
+#line 18 "../../../../../src/options/sep_options"
+extern struct CVC4_PUBLIC sepPreSkolemEmp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sepPreSkolemEmp CVC4_PUBLIC;
+#line 21 "../../../../../src/options/sep_options"
+extern struct CVC4_PUBLIC sepChildRefine__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sepChildRefine CVC4_PUBLIC;
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+#line 8 "../../../../../src/options/sep_options"
+template <> const options::sepCheckNeg__option_t::type& Options::operator[](options::sepCheckNeg__option_t) const;
+#line 8 "../../../../../src/options/sep_options"
+template <> bool Options::wasSetByUser(options::sepCheckNeg__option_t) const;
+#line 8 "../../../../../src/options/sep_options"
+template <> void Options::assignBool(options::sepCheckNeg__option_t, std::string option, bool value);
+#line 11 "../../../../../src/options/sep_options"
+template <> const options::sepExp__option_t::type& Options::operator[](options::sepExp__option_t) const;
+#line 11 "../../../../../src/options/sep_options"
+template <> bool Options::wasSetByUser(options::sepExp__option_t) const;
+#line 11 "../../../../../src/options/sep_options"
+template <> void Options::assignBool(options::sepExp__option_t, std::string option, bool value);
+#line 13 "../../../../../src/options/sep_options"
+template <> const options::sepMinimalRefine__option_t::type& Options::operator[](options::sepMinimalRefine__option_t) const;
+#line 13 "../../../../../src/options/sep_options"
+template <> bool Options::wasSetByUser(options::sepMinimalRefine__option_t) const;
+#line 13 "../../../../../src/options/sep_options"
+template <> void Options::assignBool(options::sepMinimalRefine__option_t, std::string option, bool value);
+#line 15 "../../../../../src/options/sep_options"
+template <> const options::sepDisequalC__option_t::type& Options::operator[](options::sepDisequalC__option_t) const;
+#line 15 "../../../../../src/options/sep_options"
+template <> bool Options::wasSetByUser(options::sepDisequalC__option_t) const;
+#line 15 "../../../../../src/options/sep_options"
+template <> void Options::assignBool(options::sepDisequalC__option_t, std::string option, bool value);
+#line 18 "../../../../../src/options/sep_options"
+template <> const options::sepPreSkolemEmp__option_t::type& Options::operator[](options::sepPreSkolemEmp__option_t) const;
+#line 18 "../../../../../src/options/sep_options"
+template <> bool Options::wasSetByUser(options::sepPreSkolemEmp__option_t) const;
+#line 18 "../../../../../src/options/sep_options"
+template <> void Options::assignBool(options::sepPreSkolemEmp__option_t, std::string option, bool value);
+#line 21 "../../../../../src/options/sep_options"
+template <> const options::sepChildRefine__option_t::type& Options::operator[](options::sepChildRefine__option_t) const;
+#line 21 "../../../../../src/options/sep_options"
+template <> bool Options::wasSetByUser(options::sepChildRefine__option_t) const;
+#line 21 "../../../../../src/options/sep_options"
+template <> void Options::assignBool(options::sepChildRefine__option_t, std::string option, bool value);
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/sep_options"
+inline sepCheckNeg__option_t::type sepCheckNeg__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 8 "../../../../../src/options/sep_options"
+inline bool sepCheckNeg__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 11 "../../../../../src/options/sep_options"
+inline sepExp__option_t::type sepExp__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 11 "../../../../../src/options/sep_options"
+inline bool sepExp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 13 "../../../../../src/options/sep_options"
+inline sepMinimalRefine__option_t::type sepMinimalRefine__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 13 "../../../../../src/options/sep_options"
+inline bool sepMinimalRefine__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 15 "../../../../../src/options/sep_options"
+inline sepDisequalC__option_t::type sepDisequalC__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 15 "../../../../../src/options/sep_options"
+inline bool sepDisequalC__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 18 "../../../../../src/options/sep_options"
+inline sepPreSkolemEmp__option_t::type sepPreSkolemEmp__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 18 "../../../../../src/options/sep_options"
+inline bool sepPreSkolemEmp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 21 "../../../../../src/options/sep_options"
+inline sepChildRefine__option_t::type sepChildRefine__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 21 "../../../../../src/options/sep_options"
+inline bool sepChildRefine__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__SEP_H */
diff --git a/src/options/set_language.cpp b/src/options/set_language.cpp
new file mode 100644
index 0000000..32d3d73
--- /dev/null
+++ b/src/options/set_language.cpp
@@ -0,0 +1,82 @@
+/*********************                                                        */
+/*! \file set_language.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Definition of input and output languages
+ **
+ ** Definition of input and output languages.
+ **/
+#include "options/set_language.h"
+
+#include <iosfwd>
+#include <iomanip>
+
+#include "options/base_options.h"
+#include "options/language.h"
+#include "options/options.h"
+
+namespace CVC4 {
+namespace language {
+
+const int SetLanguage::s_iosIndex = std::ios_base::xalloc();
+
+SetLanguage::Scope::Scope(std::ostream& out, OutputLanguage language)
+  : d_out(out)
+  , d_oldLanguage(SetLanguage::getLanguage(out))
+{
+  SetLanguage::setLanguage(out, language);
+}
+
+SetLanguage::Scope::~Scope(){
+  SetLanguage::setLanguage(d_out, d_oldLanguage);
+}
+
+
+SetLanguage::SetLanguage(OutputLanguage l)
+  : d_language(l)
+{}
+
+void SetLanguage::applyLanguage(std::ostream& out) {
+  // (offset by one to detect whether default has been set yet)
+  out.iword(s_iosIndex) = int(d_language) + 1;
+}
+
+OutputLanguage SetLanguage::getLanguage(std::ostream& out) {
+  long& l = out.iword(s_iosIndex);
+  if(l == 0) {
+    // set the default language on this ostream
+    // (offset by one to detect whether default has been set yet)
+    if(not Options::isCurrentNull()) {
+      l = options::outputLanguage() + 1;
+    }
+    if(l <= 0 || l > language::output::LANG_MAX) {
+      // if called from outside the library, we may not have options
+      // available to us at this point (or perhaps the output language
+      // is not set in Options).  Default to something reasonable, but
+      // don't set "l" since that would make it "sticky" for this
+      // stream.
+      return OutputLanguage(s_defaultOutputLanguage);
+    }
+  }
+  return OutputLanguage(l - 1);
+}
+
+void SetLanguage::setLanguage(std::ostream& out, OutputLanguage l) {
+  // (offset by one to detect whether default has been set yet)
+  out.iword(s_iosIndex) = int(l) + 1;
+}
+
+std::ostream& operator<<(std::ostream& out, SetLanguage l) {
+  l.applyLanguage(out);
+  return out;
+}
+
+}/* CVC4::language namespace */
+}/* CVC4 namespace */
diff --git a/src/options/set_language.h b/src/options/set_language.h
new file mode 100644
index 0000000..c27bb51
--- /dev/null
+++ b/src/options/set_language.h
@@ -0,0 +1,99 @@
+/*********************                                                        */
+/*! \file set_language.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Definition of input and output languages
+ **
+ ** Definition of input and output languages.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__OPTIONS__SET_LANGUAGE_H
+#define __CVC4__OPTIONS__SET_LANGUAGE_H
+
+#include <iostream>
+#include "options/language.h"
+
+namespace CVC4 {
+namespace language {
+
+/**
+ * IOStream manipulator to set the output language for Exprs.
+ */
+class CVC4_PUBLIC SetLanguage {
+public:
+  /**
+   * Set a language on the output stream for the current stack scope.
+   * This makes sure the old language is reset on the stream after
+   * normal OR exceptional exit from the scope, using the RAII C++
+   * idiom.
+   */
+  class Scope {
+   public:
+    Scope(std::ostream& out, OutputLanguage language);
+    ~Scope();
+   private:
+    std::ostream& d_out;
+    OutputLanguage d_oldLanguage;
+  };/* class SetLanguage::Scope */
+
+  /**
+   * Construct a ExprSetLanguage with the given setting.
+   */
+  SetLanguage(OutputLanguage l);
+
+  void applyLanguage(std::ostream& out);
+
+  static OutputLanguage getLanguage(std::ostream& out);
+
+  static void setLanguage(std::ostream& out, OutputLanguage l);
+
+private:
+
+  /**
+   * The allocated index in ios_base for our depth setting.
+   */
+  static const int s_iosIndex;
+
+  /**
+   * The default language to use, for ostreams that haven't yet had a
+   * setlanguage() applied to them and where the current Options
+   * information isn't available.
+   */
+  static const int s_defaultOutputLanguage = language::output::LANG_AUTO;
+
+  /**
+   * When this manipulator is used, the setting is stored here.
+   */
+  OutputLanguage d_language;
+};/* class SetLanguage */
+
+
+/**
+ * Sets the output language when pretty-printing a Expr to an ostream.
+ * This is used liek this:
+ *
+ *   // let out be an ostream, e an Expr
+ *   out << language::SetLanguage(LANG_SMTLIB_V2_5) << e << endl;
+ *
+ * This used to be used like this:
+ *
+ *   // let out be an ostream, e an Expr
+ *   out << Expr::setlanguage(LANG_SMTLIB_V2_5) << e << endl;
+ *
+ * The setting stays permanently (until set again) with the stream.
+ */
+std::ostream& operator<<(std::ostream& out, SetLanguage l) CVC4_PUBLIC;
+
+}/* CVC4::language namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__SET_LANGUAGE_H */
diff --git a/src/options/sets_options b/src/options/sets_options
new file mode 100644
index 0000000..1c7e12a
--- /dev/null
+++ b/src/options/sets_options
@@ -0,0 +1,17 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module SETS "options/sets_options.h" Sets
+
+option setsProxyLemmas --sets-proxy-lemmas bool :default false
+ introduce proxy variables eagerly to shorten lemmas
+
+option setsInferAsLemmas --sets-infer-as-lemmas bool :default true
+ send inferences as lemmas
+ 
+option setsRelEager --sets-rel-eager bool :default true
+ standard effort checks for relations
+ 
+endmodule
diff --git a/src/options/sets_options.cpp b/src/options/sets_options.cpp
new file mode 100644
index 0000000..5409350
--- /dev/null
+++ b/src/options/sets_options.cpp
@@ -0,0 +1,51 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+#line 8 "../../../../../src/options/sets_options"
+template <> const options::setsProxyLemmas__option_t::type& Options::operator[](options::setsProxyLemmas__option_t) const { return d_holder->setsProxyLemmas; }
+#line 8 "../../../../../src/options/sets_options"
+template <> bool Options::wasSetByUser(options::setsProxyLemmas__option_t) const { return d_holder->setsProxyLemmas__setByUser__; }
+#line 11 "../../../../../src/options/sets_options"
+template <> const options::setsInferAsLemmas__option_t::type& Options::operator[](options::setsInferAsLemmas__option_t) const { return d_holder->setsInferAsLemmas; }
+#line 11 "../../../../../src/options/sets_options"
+template <> bool Options::wasSetByUser(options::setsInferAsLemmas__option_t) const { return d_holder->setsInferAsLemmas__setByUser__; }
+#line 14 "../../../../../src/options/sets_options"
+template <> const options::setsRelEager__option_t::type& Options::operator[](options::setsRelEager__option_t) const { return d_holder->setsRelEager; }
+#line 14 "../../../../../src/options/sets_options"
+template <> bool Options::wasSetByUser(options::setsRelEager__option_t) const { return d_holder->setsRelEager__setByUser__; }
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/sets_options"
+struct setsProxyLemmas__option_t setsProxyLemmas;
+#line 11 "../../../../../src/options/sets_options"
+struct setsInferAsLemmas__option_t setsInferAsLemmas;
+#line 14 "../../../../../src/options/sets_options"
+struct setsRelEager__option_t setsRelEager;
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/sets_options.h b/src/options/sets_options.h
new file mode 100644
index 0000000..1e284d6
--- /dev/null
+++ b/src/options/sets_options.h
@@ -0,0 +1,99 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__SETS_H
+#define __CVC4__OPTIONS__SETS_H
+
+#include "options/options.h"
+
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__SETS__FOR_OPTION_HOLDER \
+  setsProxyLemmas__option_t::type setsProxyLemmas; \
+  bool setsProxyLemmas__setByUser__; \
+  setsInferAsLemmas__option_t::type setsInferAsLemmas; \
+  bool setsInferAsLemmas__setByUser__; \
+  setsRelEager__option_t::type setsRelEager; \
+  bool setsRelEager__setByUser__;
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/sets_options"
+extern struct CVC4_PUBLIC setsProxyLemmas__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } setsProxyLemmas CVC4_PUBLIC;
+#line 11 "../../../../../src/options/sets_options"
+extern struct CVC4_PUBLIC setsInferAsLemmas__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } setsInferAsLemmas CVC4_PUBLIC;
+#line 14 "../../../../../src/options/sets_options"
+extern struct CVC4_PUBLIC setsRelEager__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } setsRelEager CVC4_PUBLIC;
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+#line 8 "../../../../../src/options/sets_options"
+template <> const options::setsProxyLemmas__option_t::type& Options::operator[](options::setsProxyLemmas__option_t) const;
+#line 8 "../../../../../src/options/sets_options"
+template <> bool Options::wasSetByUser(options::setsProxyLemmas__option_t) const;
+#line 8 "../../../../../src/options/sets_options"
+template <> void Options::assignBool(options::setsProxyLemmas__option_t, std::string option, bool value);
+#line 11 "../../../../../src/options/sets_options"
+template <> const options::setsInferAsLemmas__option_t::type& Options::operator[](options::setsInferAsLemmas__option_t) const;
+#line 11 "../../../../../src/options/sets_options"
+template <> bool Options::wasSetByUser(options::setsInferAsLemmas__option_t) const;
+#line 11 "../../../../../src/options/sets_options"
+template <> void Options::assignBool(options::setsInferAsLemmas__option_t, std::string option, bool value);
+#line 14 "../../../../../src/options/sets_options"
+template <> const options::setsRelEager__option_t::type& Options::operator[](options::setsRelEager__option_t) const;
+#line 14 "../../../../../src/options/sets_options"
+template <> bool Options::wasSetByUser(options::setsRelEager__option_t) const;
+#line 14 "../../../../../src/options/sets_options"
+template <> void Options::assignBool(options::setsRelEager__option_t, std::string option, bool value);
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/sets_options"
+inline setsProxyLemmas__option_t::type setsProxyLemmas__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 8 "../../../../../src/options/sets_options"
+inline bool setsProxyLemmas__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 11 "../../../../../src/options/sets_options"
+inline setsInferAsLemmas__option_t::type setsInferAsLemmas__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 11 "../../../../../src/options/sets_options"
+inline bool setsInferAsLemmas__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 14 "../../../../../src/options/sets_options"
+inline setsRelEager__option_t::type setsRelEager__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 14 "../../../../../src/options/sets_options"
+inline bool setsRelEager__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__SETS_H */
diff --git a/src/options/simplification_mode.cpp b/src/options/simplification_mode.cpp
new file mode 100644
index 0000000..7189dac
--- /dev/null
+++ b/src/options/simplification_mode.cpp
@@ -0,0 +1,39 @@
+/*********************                                                        */
+/*! \file simplification_mode.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "options/simplification_mode.h"
+
+#include <iostream>
+
+namespace CVC4 {
+
+std::ostream& operator<<(std::ostream& out, SimplificationMode mode) {
+  switch(mode) {
+  case SIMPLIFICATION_MODE_BATCH:
+    out << "SIMPLIFICATION_MODE_BATCH";
+    break;
+  case SIMPLIFICATION_MODE_NONE:
+    out << "SIMPLIFICATION_MODE_NONE";
+    break;
+  default:
+    out << "SimplificationMode:UNKNOWN![" << unsigned(mode) << "]";
+  }
+
+  return out;
+}
+
+}/* CVC4 namespace */
diff --git a/src/options/simplification_mode.h b/src/options/simplification_mode.h
new file mode 100644
index 0000000..d1170f9
--- /dev/null
+++ b/src/options/simplification_mode.h
@@ -0,0 +1,39 @@
+/*********************                                                        */
+/*! \file simplification_mode.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__SMT__SIMPLIFICATION_MODE_H
+#define __CVC4__SMT__SIMPLIFICATION_MODE_H
+
+#include <iosfwd>
+
+namespace CVC4 {
+
+/** Enumeration of simplification modes (when to simplify). */
+typedef enum {
+  /** Simplify the assertions all together once a check is requested */
+  SIMPLIFICATION_MODE_BATCH,
+  /** Don't do simplification */
+  SIMPLIFICATION_MODE_NONE
+} SimplificationMode;
+
+std::ostream& operator<<(std::ostream& out, SimplificationMode mode) CVC4_PUBLIC;
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__SMT__SIMPLIFICATION_MODE_H */
diff --git a/src/options/smt_options b/src/options/smt_options
new file mode 100644
index 0000000..7471193
--- /dev/null
+++ b/src/options/smt_options
@@ -0,0 +1,165 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module SMT "options/smt_options.h" SMT layer
+
+common-option dumpModeString dump --dump=MODE std::string :default "" :notify notifyDumpMode
+ dump preprocessed assertions, etc., see --dump=help
+common-option dumpToFileName dump-to --dump-to=FILE std::string :notify notifyDumpToFile
+ all dumping goes to FILE (instead of stdout)
+
+expert-option forceLogicString force-logic --force-logic=LOGIC std::string :default "" :notify notifyForceLogic
+ set the logic, and override all further user attempts to change it
+
+option simplificationMode simplification-mode --simplification=MODE SimplificationMode :handler stringToSimplificationMode :default SIMPLIFICATION_MODE_BATCH :read-write :include "options/simplification_mode.h"
+ choose simplification mode, see --simplification=help
+alias --no-simplification = --simplification=none
+ turn off all simplification (same as --simplification=none)
+
+option doStaticLearning static-learning --static-learning bool :default true
+ use static learning (on by default)
+
+option expandDefinitions expand-definitions bool :default false
+ always expand symbol definitions in output
+common-option produceModels produce-models -m --produce-models bool :default false :notify notifyBeforeSearch
+ support the get-value and get-model commands
+option checkModels check-models --check-models bool :link --produce-models --produce-assertions :link-smt produce-models :link-smt produce-assertions :notify notifyBeforeSearch
+ after SAT/INVALID/UNKNOWN, check that the generated model satisfies user assertions
+option dumpModels --dump-models bool :default false :link --produce-models :link-smt produce-models
+ output models after every SAT/INVALID/UNKNOWN response
+option omitDontCares --omit-dont-cares bool :default false
+ When producing a model, omit variables whose value does not matter
+option proof produce-proofs --proof bool :default false :predicate proofEnabledBuild :notify notifyBeforeSearch
+ turn on proof generation
+option checkProofs check-proofs --check-proofs bool :link --proof :link-smt produce-proofs :notify notifyBeforeSearch :read-write
+ after UNSAT/VALID, machine-check the generated proof
+option dumpProofs --dump-proofs bool :default false :link --proof :link-smt produce-proofs
+ output proofs after every UNSAT/VALID response
+option dumpInstantiations --dump-instantiations bool :default false
+ output instantiations of quantified formulas after every UNSAT/VALID response
+option dumpSynth --dump-synth bool :read-write :default false
+ output solution for synthesis conjectures after every UNSAT/VALID response
+option unsatCores produce-unsat-cores --produce-unsat-cores bool :predicate proofEnabledBuild :notify :notify notifyBeforeSearch
+ turn on unsat core generation
+option checkUnsatCores check-unsat-cores --check-unsat-cores bool :link --produce-unsat-cores :link-smt produce-unsat-cores :read-write
+ after UNSAT/VALID, produce and check an unsat core (expensive)
+option dumpUnsatCores --dump-unsat-cores bool :default false :link --produce-unsat-cores :link-smt produce-unsat-cores :notify notifyBeforeSearch
+ output unsat cores after every UNSAT/VALID response
+
+option produceAssignments produce-assignments --produce-assignments bool :default false :notify notifyBeforeSearch
+ support the get-assignment command
+
+undocumented-option interactiveMode interactive-mode bool :predicate setProduceAssertions :read-write :notify notifyBeforeSearch
+ deprecated name for produce-assertions
+common-option produceAssertions produce-assertions --produce-assertions bool :predicate setProduceAssertions :read-write :notify notifyBeforeSearch
+ keep an assertions list (enables get-assertions command)
+
+option doITESimp --ite-simp bool :read-write
+ turn on ite simplification (Kim (and Somenzi) et al., SAT 2009)
+
+option doITESimpOnRepeat --on-repeat-ite-simp bool :read-write :default false
+ do the ite simplification pass again if repeating simplification
+
+option simplifyWithCareEnabled --simp-with-care bool :default false :read-write
+ enables simplifyWithCare in ite simplificiation
+
+option compressItes --simp-ite-compress bool :default false :read-write
+ enables compressing ites after ite simplification
+
+option unconstrainedSimp --unconstrained-simp bool :default false :read-write
+ turn on unconstrained simplification (see Bruttomesso/Brummayer PhD thesis)
+
+option repeatSimp --repeat-simp bool :read-write
+ make multiple passes with nonclausal simplifier
+
+option zombieHuntThreshold --simp-ite-hunt-zombies uint32_t :default 524288
+ post ite compression enables zombie removal while the number of nodes is above this threshold
+
+option sortInference --sort-inference bool :read-write :default false
+ calculate sort inference of input problem, convert the input based on monotonic sorts
+
+common-option incrementalSolving incremental -i --incremental bool :default true
+ enable incremental solving
+
+option abstractValues abstract-values --abstract-values bool :default false
+ in models, output arrays (and in future, maybe others) using abstract values, as required by the SMT-LIB standard
+option modelUninterpDtEnum --model-u-dt-enum bool :default false
+ in models, output uninterpreted sorts as datatype enumerations
+
+option regularChannelName regular-output-channel std::string :notify notifySetRegularOutputChannel
+ set the regular output channel of the solver
+option diagnosticChannelName diagnostic-output-channel std::string :notify notifySetDiagnosticOutputChannel
+ set the diagnostic output channel of the solver
+
+common-option cumulativeMillisecondLimit tlimit --tlimit=MS "unsigned long" :handler tlimitHandler :notify notifyTlimit
+ enable time limiting (give milliseconds)
+common-option perCallMillisecondLimit  tlimit-per --tlimit-per=MS "unsigned long" :handler tlimitPerHandler :notify notifyTlimitPer
+ enable time limiting per query (give milliseconds)
+common-option cumulativeResourceLimit rlimit --rlimit=N "unsigned long" :handler rlimitHandler :notify notifyRlimit
+ enable resource limiting (currently, roughly the number of SAT conflicts)
+common-option perCallResourceLimit reproducible-resource-limit --rlimit-per=N "unsigned long" :handler rlimitPerHandler :notify notifyRlimitPer
+ enable resource limiting per query
+common-option hardLimit hard-limit --hard-limit bool :default false
+ the resource limit is hard potentially leaving the smtEngine in an unsafe state (should be destroyed and rebuild after resourcing out)
+common-option cpuTime cpu-time --cpu-time bool :default false
+ measures CPU time if set to true and wall time if false (default false)
+
+# Resource spending options for SPARK
+expert-option rewriteStep rewrite-step --rewrite-step unsigned :default 1
+ ammount of resources spent for each rewrite step
+
+expert-option theoryCheckStep theory-check-step --theory-check-step unsigned :default 1
+ ammount of resources spent for each theory check call
+
+expert-option decisionStep decision-step --decision-step unsigned :default 1
+ ammount of getNext decision calls in the decision engine
+ 
+expert-option bitblastStep bitblast-step --bitblast-step unsigned :default 1
+ ammount of resources spent for each bitblast step
+ 
+expert-option parseStep parse-step --parse-step unsigned :default 1
+ ammount of resources spent for each command/expression parsing
+ 
+expert-option lemmaStep lemma-step --lemma-step unsigned :default 1
+ ammount of resources spent when adding lemmas
+ 
+expert-option restartStep restart-step --restart-step unsigned :default 1
+ ammount of resources spent for each theory restart
+ 
+expert-option cnfStep cnf-step --cnf-step unsigned :default 1
+ ammount of resources spent for each call to cnf conversion
+ 
+expert-option preprocessStep preprocess-step --preprocess-step unsigned :default 1
+ ammount of resources spent for each preprocessing step in SmtEngine
+ 
+expert-option quantifierStep quantifier-step --quantifier-step unsigned :default 1
+ ammount of resources spent for quantifier instantiations
+ 
+expert-option satConflictStep sat-conflict-step --sat-conflict-step unsigned :default 1
+ ammount of resources spent for each sat conflict (main sat solver)
+ 
+expert-option bvSatConflictStep bv-sat-conflict-step --bv-sat-conflict-step unsigned :default 1
+ ammount of resources spent for each sat conflict (bitvectors)
+ 
+ 
+expert-option rewriteApplyToConst rewrite-apply-to-const --rewrite-apply-to-const bool :default false
+ eliminate function applications, rewriting e.g. f(5) to a new symbol f_5
+
+
+# --replay is currently broken; don't document it for 1.0
+undocumented-option replayInputFilename --replay=FILE std::string :handler checkReplayFilename
+ replay decisions from file
+
+# --replay is currently broken; don't document it for 1.0
+undocumented-option replayLogFilename --replay-log=FILE std::string :handler checkReplayFilename :notify notifySetReplayLogFilename :notify notifyBeforeSearch
+ replay decisions from file
+
+option forceNoLimitCpuWhileDump --force-no-limit-cpu-while-dump bool :default false
+ Force no CPU limit when dumping models and proofs
+
+undocumented-option solveIntAsBV --solve-int-as-bv uint32_t :default 0
+ attempt to solve a pure integer satisfiable problem by bitblasting in sufficient bitwidth (experimental)
+
+endmodule
diff --git a/src/options/smt_options.cpp b/src/options/smt_options.cpp
new file mode 100644
index 0000000..65c636c
--- /dev/null
+++ b/src/options/smt_options.cpp
@@ -0,0 +1,401 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+#line 8 "../../../../../src/options/smt_options"
+template <> const options::dumpModeString__option_t::type& Options::operator[](options::dumpModeString__option_t) const { return d_holder->dumpModeString; }
+#line 8 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::dumpModeString__option_t) const { return d_holder->dumpModeString__setByUser__; }
+#line 10 "../../../../../src/options/smt_options"
+template <> const options::dumpToFileName__option_t::type& Options::operator[](options::dumpToFileName__option_t) const { return d_holder->dumpToFileName; }
+#line 10 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::dumpToFileName__option_t) const { return d_holder->dumpToFileName__setByUser__; }
+#line 13 "../../../../../src/options/smt_options"
+template <> const options::forceLogicString__option_t::type& Options::operator[](options::forceLogicString__option_t) const { return d_holder->forceLogicString; }
+#line 13 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::forceLogicString__option_t) const { return d_holder->forceLogicString__setByUser__; }
+#line 16 "../../../../../src/options/smt_options"
+template <> void Options::set(options::simplificationMode__option_t, const options::simplificationMode__option_t::type& x) { d_holder->simplificationMode = x; }
+#line 16 "../../../../../src/options/smt_options"
+template <> const options::simplificationMode__option_t::type& Options::operator[](options::simplificationMode__option_t) const { return d_holder->simplificationMode; }
+#line 16 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::simplificationMode__option_t) const { return d_holder->simplificationMode__setByUser__; }
+#line 21 "../../../../../src/options/smt_options"
+template <> const options::doStaticLearning__option_t::type& Options::operator[](options::doStaticLearning__option_t) const { return d_holder->doStaticLearning; }
+#line 21 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::doStaticLearning__option_t) const { return d_holder->doStaticLearning__setByUser__; }
+#line 24 "../../../../../src/options/smt_options"
+template <> const options::expandDefinitions__option_t::type& Options::operator[](options::expandDefinitions__option_t) const { return d_holder->expandDefinitions; }
+#line 24 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::expandDefinitions__option_t) const { return d_holder->expandDefinitions__setByUser__; }
+#line 26 "../../../../../src/options/smt_options"
+template <> const options::produceModels__option_t::type& Options::operator[](options::produceModels__option_t) const { return d_holder->produceModels; }
+#line 26 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::produceModels__option_t) const { return d_holder->produceModels__setByUser__; }
+#line 28 "../../../../../src/options/smt_options"
+template <> const options::checkModels__option_t::type& Options::operator[](options::checkModels__option_t) const { return d_holder->checkModels; }
+#line 28 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::checkModels__option_t) const { return d_holder->checkModels__setByUser__; }
+#line 30 "../../../../../src/options/smt_options"
+template <> const options::dumpModels__option_t::type& Options::operator[](options::dumpModels__option_t) const { return d_holder->dumpModels; }
+#line 30 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::dumpModels__option_t) const { return d_holder->dumpModels__setByUser__; }
+#line 32 "../../../../../src/options/smt_options"
+template <> const options::omitDontCares__option_t::type& Options::operator[](options::omitDontCares__option_t) const { return d_holder->omitDontCares; }
+#line 32 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::omitDontCares__option_t) const { return d_holder->omitDontCares__setByUser__; }
+#line 34 "../../../../../src/options/smt_options"
+template <> const options::proof__option_t::type& Options::operator[](options::proof__option_t) const { return d_holder->proof; }
+#line 34 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::proof__option_t) const { return d_holder->proof__setByUser__; }
+#line 36 "../../../../../src/options/smt_options"
+template <> void Options::set(options::checkProofs__option_t, const options::checkProofs__option_t::type& x) { d_holder->checkProofs = x; }
+#line 36 "../../../../../src/options/smt_options"
+template <> const options::checkProofs__option_t::type& Options::operator[](options::checkProofs__option_t) const { return d_holder->checkProofs; }
+#line 36 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::checkProofs__option_t) const { return d_holder->checkProofs__setByUser__; }
+#line 38 "../../../../../src/options/smt_options"
+template <> const options::dumpProofs__option_t::type& Options::operator[](options::dumpProofs__option_t) const { return d_holder->dumpProofs; }
+#line 38 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::dumpProofs__option_t) const { return d_holder->dumpProofs__setByUser__; }
+#line 40 "../../../../../src/options/smt_options"
+template <> const options::dumpInstantiations__option_t::type& Options::operator[](options::dumpInstantiations__option_t) const { return d_holder->dumpInstantiations; }
+#line 40 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::dumpInstantiations__option_t) const { return d_holder->dumpInstantiations__setByUser__; }
+#line 42 "../../../../../src/options/smt_options"
+template <> void Options::set(options::dumpSynth__option_t, const options::dumpSynth__option_t::type& x) { d_holder->dumpSynth = x; }
+#line 42 "../../../../../src/options/smt_options"
+template <> const options::dumpSynth__option_t::type& Options::operator[](options::dumpSynth__option_t) const { return d_holder->dumpSynth; }
+#line 42 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::dumpSynth__option_t) const { return d_holder->dumpSynth__setByUser__; }
+#line 44 "../../../../../src/options/smt_options"
+template <> const options::unsatCores__option_t::type& Options::operator[](options::unsatCores__option_t) const { return d_holder->unsatCores; }
+#line 44 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::unsatCores__option_t) const { return d_holder->unsatCores__setByUser__; }
+#line 46 "../../../../../src/options/smt_options"
+template <> void Options::set(options::checkUnsatCores__option_t, const options::checkUnsatCores__option_t::type& x) { d_holder->checkUnsatCores = x; }
+#line 46 "../../../../../src/options/smt_options"
+template <> const options::checkUnsatCores__option_t::type& Options::operator[](options::checkUnsatCores__option_t) const { return d_holder->checkUnsatCores; }
+#line 46 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::checkUnsatCores__option_t) const { return d_holder->checkUnsatCores__setByUser__; }
+#line 48 "../../../../../src/options/smt_options"
+template <> const options::dumpUnsatCores__option_t::type& Options::operator[](options::dumpUnsatCores__option_t) const { return d_holder->dumpUnsatCores; }
+#line 48 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::dumpUnsatCores__option_t) const { return d_holder->dumpUnsatCores__setByUser__; }
+#line 51 "../../../../../src/options/smt_options"
+template <> const options::produceAssignments__option_t::type& Options::operator[](options::produceAssignments__option_t) const { return d_holder->produceAssignments; }
+#line 51 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::produceAssignments__option_t) const { return d_holder->produceAssignments__setByUser__; }
+#line 54 "../../../../../src/options/smt_options"
+template <> void Options::set(options::interactiveMode__option_t, const options::interactiveMode__option_t::type& x) { d_holder->interactiveMode = x; }
+#line 54 "../../../../../src/options/smt_options"
+template <> const options::interactiveMode__option_t::type& Options::operator[](options::interactiveMode__option_t) const { return d_holder->interactiveMode; }
+#line 54 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::interactiveMode__option_t) const { return d_holder->interactiveMode__setByUser__; }
+#line 56 "../../../../../src/options/smt_options"
+template <> void Options::set(options::produceAssertions__option_t, const options::produceAssertions__option_t::type& x) { d_holder->produceAssertions = x; }
+#line 56 "../../../../../src/options/smt_options"
+template <> const options::produceAssertions__option_t::type& Options::operator[](options::produceAssertions__option_t) const { return d_holder->produceAssertions; }
+#line 56 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::produceAssertions__option_t) const { return d_holder->produceAssertions__setByUser__; }
+#line 59 "../../../../../src/options/smt_options"
+template <> void Options::set(options::doITESimp__option_t, const options::doITESimp__option_t::type& x) { d_holder->doITESimp = x; }
+#line 59 "../../../../../src/options/smt_options"
+template <> const options::doITESimp__option_t::type& Options::operator[](options::doITESimp__option_t) const { return d_holder->doITESimp; }
+#line 59 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::doITESimp__option_t) const { return d_holder->doITESimp__setByUser__; }
+#line 62 "../../../../../src/options/smt_options"
+template <> void Options::set(options::doITESimpOnRepeat__option_t, const options::doITESimpOnRepeat__option_t::type& x) { d_holder->doITESimpOnRepeat = x; }
+#line 62 "../../../../../src/options/smt_options"
+template <> const options::doITESimpOnRepeat__option_t::type& Options::operator[](options::doITESimpOnRepeat__option_t) const { return d_holder->doITESimpOnRepeat; }
+#line 62 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::doITESimpOnRepeat__option_t) const { return d_holder->doITESimpOnRepeat__setByUser__; }
+#line 65 "../../../../../src/options/smt_options"
+template <> void Options::set(options::simplifyWithCareEnabled__option_t, const options::simplifyWithCareEnabled__option_t::type& x) { d_holder->simplifyWithCareEnabled = x; }
+#line 65 "../../../../../src/options/smt_options"
+template <> const options::simplifyWithCareEnabled__option_t::type& Options::operator[](options::simplifyWithCareEnabled__option_t) const { return d_holder->simplifyWithCareEnabled; }
+#line 65 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::simplifyWithCareEnabled__option_t) const { return d_holder->simplifyWithCareEnabled__setByUser__; }
+#line 68 "../../../../../src/options/smt_options"
+template <> void Options::set(options::compressItes__option_t, const options::compressItes__option_t::type& x) { d_holder->compressItes = x; }
+#line 68 "../../../../../src/options/smt_options"
+template <> const options::compressItes__option_t::type& Options::operator[](options::compressItes__option_t) const { return d_holder->compressItes; }
+#line 68 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::compressItes__option_t) const { return d_holder->compressItes__setByUser__; }
+#line 71 "../../../../../src/options/smt_options"
+template <> void Options::set(options::unconstrainedSimp__option_t, const options::unconstrainedSimp__option_t::type& x) { d_holder->unconstrainedSimp = x; }
+#line 71 "../../../../../src/options/smt_options"
+template <> const options::unconstrainedSimp__option_t::type& Options::operator[](options::unconstrainedSimp__option_t) const { return d_holder->unconstrainedSimp; }
+#line 71 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::unconstrainedSimp__option_t) const { return d_holder->unconstrainedSimp__setByUser__; }
+#line 74 "../../../../../src/options/smt_options"
+template <> void Options::set(options::repeatSimp__option_t, const options::repeatSimp__option_t::type& x) { d_holder->repeatSimp = x; }
+#line 74 "../../../../../src/options/smt_options"
+template <> const options::repeatSimp__option_t::type& Options::operator[](options::repeatSimp__option_t) const { return d_holder->repeatSimp; }
+#line 74 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::repeatSimp__option_t) const { return d_holder->repeatSimp__setByUser__; }
+#line 77 "../../../../../src/options/smt_options"
+template <> const options::zombieHuntThreshold__option_t::type& Options::operator[](options::zombieHuntThreshold__option_t) const { return d_holder->zombieHuntThreshold; }
+#line 77 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::zombieHuntThreshold__option_t) const { return d_holder->zombieHuntThreshold__setByUser__; }
+#line 80 "../../../../../src/options/smt_options"
+template <> void Options::set(options::sortInference__option_t, const options::sortInference__option_t::type& x) { d_holder->sortInference = x; }
+#line 80 "../../../../../src/options/smt_options"
+template <> const options::sortInference__option_t::type& Options::operator[](options::sortInference__option_t) const { return d_holder->sortInference; }
+#line 80 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::sortInference__option_t) const { return d_holder->sortInference__setByUser__; }
+#line 83 "../../../../../src/options/smt_options"
+template <> const options::incrementalSolving__option_t::type& Options::operator[](options::incrementalSolving__option_t) const { return d_holder->incrementalSolving; }
+#line 83 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::incrementalSolving__option_t) const { return d_holder->incrementalSolving__setByUser__; }
+#line 86 "../../../../../src/options/smt_options"
+template <> const options::abstractValues__option_t::type& Options::operator[](options::abstractValues__option_t) const { return d_holder->abstractValues; }
+#line 86 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::abstractValues__option_t) const { return d_holder->abstractValues__setByUser__; }
+#line 88 "../../../../../src/options/smt_options"
+template <> const options::modelUninterpDtEnum__option_t::type& Options::operator[](options::modelUninterpDtEnum__option_t) const { return d_holder->modelUninterpDtEnum; }
+#line 88 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::modelUninterpDtEnum__option_t) const { return d_holder->modelUninterpDtEnum__setByUser__; }
+#line 91 "../../../../../src/options/smt_options"
+template <> const options::regularChannelName__option_t::type& Options::operator[](options::regularChannelName__option_t) const { return d_holder->regularChannelName; }
+#line 91 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::regularChannelName__option_t) const { return d_holder->regularChannelName__setByUser__; }
+#line 93 "../../../../../src/options/smt_options"
+template <> const options::diagnosticChannelName__option_t::type& Options::operator[](options::diagnosticChannelName__option_t) const { return d_holder->diagnosticChannelName; }
+#line 93 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::diagnosticChannelName__option_t) const { return d_holder->diagnosticChannelName__setByUser__; }
+#line 96 "../../../../../src/options/smt_options"
+template <> const options::cumulativeMillisecondLimit__option_t::type& Options::operator[](options::cumulativeMillisecondLimit__option_t) const { return d_holder->cumulativeMillisecondLimit; }
+#line 96 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::cumulativeMillisecondLimit__option_t) const { return d_holder->cumulativeMillisecondLimit__setByUser__; }
+#line 98 "../../../../../src/options/smt_options"
+template <> const options::perCallMillisecondLimit__option_t::type& Options::operator[](options::perCallMillisecondLimit__option_t) const { return d_holder->perCallMillisecondLimit; }
+#line 98 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::perCallMillisecondLimit__option_t) const { return d_holder->perCallMillisecondLimit__setByUser__; }
+#line 100 "../../../../../src/options/smt_options"
+template <> const options::cumulativeResourceLimit__option_t::type& Options::operator[](options::cumulativeResourceLimit__option_t) const { return d_holder->cumulativeResourceLimit; }
+#line 100 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::cumulativeResourceLimit__option_t) const { return d_holder->cumulativeResourceLimit__setByUser__; }
+#line 102 "../../../../../src/options/smt_options"
+template <> const options::perCallResourceLimit__option_t::type& Options::operator[](options::perCallResourceLimit__option_t) const { return d_holder->perCallResourceLimit; }
+#line 102 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::perCallResourceLimit__option_t) const { return d_holder->perCallResourceLimit__setByUser__; }
+#line 104 "../../../../../src/options/smt_options"
+template <> const options::hardLimit__option_t::type& Options::operator[](options::hardLimit__option_t) const { return d_holder->hardLimit; }
+#line 104 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::hardLimit__option_t) const { return d_holder->hardLimit__setByUser__; }
+#line 106 "../../../../../src/options/smt_options"
+template <> const options::cpuTime__option_t::type& Options::operator[](options::cpuTime__option_t) const { return d_holder->cpuTime; }
+#line 106 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::cpuTime__option_t) const { return d_holder->cpuTime__setByUser__; }
+#line 110 "../../../../../src/options/smt_options"
+template <> const options::rewriteStep__option_t::type& Options::operator[](options::rewriteStep__option_t) const { return d_holder->rewriteStep; }
+#line 110 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::rewriteStep__option_t) const { return d_holder->rewriteStep__setByUser__; }
+#line 113 "../../../../../src/options/smt_options"
+template <> const options::theoryCheckStep__option_t::type& Options::operator[](options::theoryCheckStep__option_t) const { return d_holder->theoryCheckStep; }
+#line 113 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::theoryCheckStep__option_t) const { return d_holder->theoryCheckStep__setByUser__; }
+#line 116 "../../../../../src/options/smt_options"
+template <> const options::decisionStep__option_t::type& Options::operator[](options::decisionStep__option_t) const { return d_holder->decisionStep; }
+#line 116 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::decisionStep__option_t) const { return d_holder->decisionStep__setByUser__; }
+#line 119 "../../../../../src/options/smt_options"
+template <> const options::bitblastStep__option_t::type& Options::operator[](options::bitblastStep__option_t) const { return d_holder->bitblastStep; }
+#line 119 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::bitblastStep__option_t) const { return d_holder->bitblastStep__setByUser__; }
+#line 122 "../../../../../src/options/smt_options"
+template <> const options::parseStep__option_t::type& Options::operator[](options::parseStep__option_t) const { return d_holder->parseStep; }
+#line 122 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::parseStep__option_t) const { return d_holder->parseStep__setByUser__; }
+#line 125 "../../../../../src/options/smt_options"
+template <> const options::lemmaStep__option_t::type& Options::operator[](options::lemmaStep__option_t) const { return d_holder->lemmaStep; }
+#line 125 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::lemmaStep__option_t) const { return d_holder->lemmaStep__setByUser__; }
+#line 128 "../../../../../src/options/smt_options"
+template <> const options::restartStep__option_t::type& Options::operator[](options::restartStep__option_t) const { return d_holder->restartStep; }
+#line 128 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::restartStep__option_t) const { return d_holder->restartStep__setByUser__; }
+#line 131 "../../../../../src/options/smt_options"
+template <> const options::cnfStep__option_t::type& Options::operator[](options::cnfStep__option_t) const { return d_holder->cnfStep; }
+#line 131 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::cnfStep__option_t) const { return d_holder->cnfStep__setByUser__; }
+#line 134 "../../../../../src/options/smt_options"
+template <> const options::preprocessStep__option_t::type& Options::operator[](options::preprocessStep__option_t) const { return d_holder->preprocessStep; }
+#line 134 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::preprocessStep__option_t) const { return d_holder->preprocessStep__setByUser__; }
+#line 137 "../../../../../src/options/smt_options"
+template <> const options::quantifierStep__option_t::type& Options::operator[](options::quantifierStep__option_t) const { return d_holder->quantifierStep; }
+#line 137 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::quantifierStep__option_t) const { return d_holder->quantifierStep__setByUser__; }
+#line 140 "../../../../../src/options/smt_options"
+template <> const options::satConflictStep__option_t::type& Options::operator[](options::satConflictStep__option_t) const { return d_holder->satConflictStep; }
+#line 140 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::satConflictStep__option_t) const { return d_holder->satConflictStep__setByUser__; }
+#line 143 "../../../../../src/options/smt_options"
+template <> const options::bvSatConflictStep__option_t::type& Options::operator[](options::bvSatConflictStep__option_t) const { return d_holder->bvSatConflictStep; }
+#line 143 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::bvSatConflictStep__option_t) const { return d_holder->bvSatConflictStep__setByUser__; }
+#line 147 "../../../../../src/options/smt_options"
+template <> const options::rewriteApplyToConst__option_t::type& Options::operator[](options::rewriteApplyToConst__option_t) const { return d_holder->rewriteApplyToConst; }
+#line 147 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::rewriteApplyToConst__option_t) const { return d_holder->rewriteApplyToConst__setByUser__; }
+#line 152 "../../../../../src/options/smt_options"
+template <> const options::replayInputFilename__option_t::type& Options::operator[](options::replayInputFilename__option_t) const { return d_holder->replayInputFilename; }
+#line 152 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::replayInputFilename__option_t) const { return d_holder->replayInputFilename__setByUser__; }
+#line 156 "../../../../../src/options/smt_options"
+template <> const options::replayLogFilename__option_t::type& Options::operator[](options::replayLogFilename__option_t) const { return d_holder->replayLogFilename; }
+#line 156 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::replayLogFilename__option_t) const { return d_holder->replayLogFilename__setByUser__; }
+#line 159 "../../../../../src/options/smt_options"
+template <> const options::forceNoLimitCpuWhileDump__option_t::type& Options::operator[](options::forceNoLimitCpuWhileDump__option_t) const { return d_holder->forceNoLimitCpuWhileDump; }
+#line 159 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::forceNoLimitCpuWhileDump__option_t) const { return d_holder->forceNoLimitCpuWhileDump__setByUser__; }
+#line 162 "../../../../../src/options/smt_options"
+template <> const options::solveIntAsBV__option_t::type& Options::operator[](options::solveIntAsBV__option_t) const { return d_holder->solveIntAsBV; }
+#line 162 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::solveIntAsBV__option_t) const { return d_holder->solveIntAsBV__setByUser__; }
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/smt_options"
+struct dumpModeString__option_t dumpModeString;
+#line 10 "../../../../../src/options/smt_options"
+struct dumpToFileName__option_t dumpToFileName;
+#line 13 "../../../../../src/options/smt_options"
+struct forceLogicString__option_t forceLogicString;
+#line 16 "../../../../../src/options/smt_options"
+struct simplificationMode__option_t simplificationMode;
+#line 21 "../../../../../src/options/smt_options"
+struct doStaticLearning__option_t doStaticLearning;
+#line 24 "../../../../../src/options/smt_options"
+struct expandDefinitions__option_t expandDefinitions;
+#line 26 "../../../../../src/options/smt_options"
+struct produceModels__option_t produceModels;
+#line 28 "../../../../../src/options/smt_options"
+struct checkModels__option_t checkModels;
+#line 30 "../../../../../src/options/smt_options"
+struct dumpModels__option_t dumpModels;
+#line 32 "../../../../../src/options/smt_options"
+struct omitDontCares__option_t omitDontCares;
+#line 34 "../../../../../src/options/smt_options"
+struct proof__option_t proof;
+#line 36 "../../../../../src/options/smt_options"
+struct checkProofs__option_t checkProofs;
+#line 38 "../../../../../src/options/smt_options"
+struct dumpProofs__option_t dumpProofs;
+#line 40 "../../../../../src/options/smt_options"
+struct dumpInstantiations__option_t dumpInstantiations;
+#line 42 "../../../../../src/options/smt_options"
+struct dumpSynth__option_t dumpSynth;
+#line 44 "../../../../../src/options/smt_options"
+struct unsatCores__option_t unsatCores;
+#line 46 "../../../../../src/options/smt_options"
+struct checkUnsatCores__option_t checkUnsatCores;
+#line 48 "../../../../../src/options/smt_options"
+struct dumpUnsatCores__option_t dumpUnsatCores;
+#line 51 "../../../../../src/options/smt_options"
+struct produceAssignments__option_t produceAssignments;
+#line 54 "../../../../../src/options/smt_options"
+struct interactiveMode__option_t interactiveMode;
+#line 56 "../../../../../src/options/smt_options"
+struct produceAssertions__option_t produceAssertions;
+#line 59 "../../../../../src/options/smt_options"
+struct doITESimp__option_t doITESimp;
+#line 62 "../../../../../src/options/smt_options"
+struct doITESimpOnRepeat__option_t doITESimpOnRepeat;
+#line 65 "../../../../../src/options/smt_options"
+struct simplifyWithCareEnabled__option_t simplifyWithCareEnabled;
+#line 68 "../../../../../src/options/smt_options"
+struct compressItes__option_t compressItes;
+#line 71 "../../../../../src/options/smt_options"
+struct unconstrainedSimp__option_t unconstrainedSimp;
+#line 74 "../../../../../src/options/smt_options"
+struct repeatSimp__option_t repeatSimp;
+#line 77 "../../../../../src/options/smt_options"
+struct zombieHuntThreshold__option_t zombieHuntThreshold;
+#line 80 "../../../../../src/options/smt_options"
+struct sortInference__option_t sortInference;
+#line 83 "../../../../../src/options/smt_options"
+struct incrementalSolving__option_t incrementalSolving;
+#line 86 "../../../../../src/options/smt_options"
+struct abstractValues__option_t abstractValues;
+#line 88 "../../../../../src/options/smt_options"
+struct modelUninterpDtEnum__option_t modelUninterpDtEnum;
+#line 91 "../../../../../src/options/smt_options"
+struct regularChannelName__option_t regularChannelName;
+#line 93 "../../../../../src/options/smt_options"
+struct diagnosticChannelName__option_t diagnosticChannelName;
+#line 96 "../../../../../src/options/smt_options"
+struct cumulativeMillisecondLimit__option_t cumulativeMillisecondLimit;
+#line 98 "../../../../../src/options/smt_options"
+struct perCallMillisecondLimit__option_t perCallMillisecondLimit;
+#line 100 "../../../../../src/options/smt_options"
+struct cumulativeResourceLimit__option_t cumulativeResourceLimit;
+#line 102 "../../../../../src/options/smt_options"
+struct perCallResourceLimit__option_t perCallResourceLimit;
+#line 104 "../../../../../src/options/smt_options"
+struct hardLimit__option_t hardLimit;
+#line 106 "../../../../../src/options/smt_options"
+struct cpuTime__option_t cpuTime;
+#line 110 "../../../../../src/options/smt_options"
+struct rewriteStep__option_t rewriteStep;
+#line 113 "../../../../../src/options/smt_options"
+struct theoryCheckStep__option_t theoryCheckStep;
+#line 116 "../../../../../src/options/smt_options"
+struct decisionStep__option_t decisionStep;
+#line 119 "../../../../../src/options/smt_options"
+struct bitblastStep__option_t bitblastStep;
+#line 122 "../../../../../src/options/smt_options"
+struct parseStep__option_t parseStep;
+#line 125 "../../../../../src/options/smt_options"
+struct lemmaStep__option_t lemmaStep;
+#line 128 "../../../../../src/options/smt_options"
+struct restartStep__option_t restartStep;
+#line 131 "../../../../../src/options/smt_options"
+struct cnfStep__option_t cnfStep;
+#line 134 "../../../../../src/options/smt_options"
+struct preprocessStep__option_t preprocessStep;
+#line 137 "../../../../../src/options/smt_options"
+struct quantifierStep__option_t quantifierStep;
+#line 140 "../../../../../src/options/smt_options"
+struct satConflictStep__option_t satConflictStep;
+#line 143 "../../../../../src/options/smt_options"
+struct bvSatConflictStep__option_t bvSatConflictStep;
+#line 147 "../../../../../src/options/smt_options"
+struct rewriteApplyToConst__option_t rewriteApplyToConst;
+#line 152 "../../../../../src/options/smt_options"
+struct replayInputFilename__option_t replayInputFilename;
+#line 156 "../../../../../src/options/smt_options"
+struct replayLogFilename__option_t replayLogFilename;
+#line 159 "../../../../../src/options/smt_options"
+struct forceNoLimitCpuWhileDump__option_t forceNoLimitCpuWhileDump;
+#line 162 "../../../../../src/options/smt_options"
+struct solveIntAsBV__option_t solveIntAsBV;
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/smt_options.h b/src/options/smt_options.h
new file mode 100644
index 0000000..a4152c0
--- /dev/null
+++ b/src/options/smt_options.h
@@ -0,0 +1,963 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__SMT_H
+#define __CVC4__OPTIONS__SMT_H
+
+#include "options/options.h"
+
+#line 16 "../../../../../src/options/smt_options"
+#include "options/simplification_mode.h"
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__SMT__FOR_OPTION_HOLDER \
+  dumpModeString__option_t::type dumpModeString; \
+  bool dumpModeString__setByUser__; \
+  dumpToFileName__option_t::type dumpToFileName; \
+  bool dumpToFileName__setByUser__; \
+  forceLogicString__option_t::type forceLogicString; \
+  bool forceLogicString__setByUser__; \
+  simplificationMode__option_t::type simplificationMode; \
+  bool simplificationMode__setByUser__; \
+  doStaticLearning__option_t::type doStaticLearning; \
+  bool doStaticLearning__setByUser__; \
+  expandDefinitions__option_t::type expandDefinitions; \
+  bool expandDefinitions__setByUser__; \
+  produceModels__option_t::type produceModels; \
+  bool produceModels__setByUser__; \
+  checkModels__option_t::type checkModels; \
+  bool checkModels__setByUser__; \
+  dumpModels__option_t::type dumpModels; \
+  bool dumpModels__setByUser__; \
+  omitDontCares__option_t::type omitDontCares; \
+  bool omitDontCares__setByUser__; \
+  proof__option_t::type proof; \
+  bool proof__setByUser__; \
+  checkProofs__option_t::type checkProofs; \
+  bool checkProofs__setByUser__; \
+  dumpProofs__option_t::type dumpProofs; \
+  bool dumpProofs__setByUser__; \
+  dumpInstantiations__option_t::type dumpInstantiations; \
+  bool dumpInstantiations__setByUser__; \
+  dumpSynth__option_t::type dumpSynth; \
+  bool dumpSynth__setByUser__; \
+  unsatCores__option_t::type unsatCores; \
+  bool unsatCores__setByUser__; \
+  checkUnsatCores__option_t::type checkUnsatCores; \
+  bool checkUnsatCores__setByUser__; \
+  dumpUnsatCores__option_t::type dumpUnsatCores; \
+  bool dumpUnsatCores__setByUser__; \
+  produceAssignments__option_t::type produceAssignments; \
+  bool produceAssignments__setByUser__; \
+  interactiveMode__option_t::type interactiveMode; \
+  bool interactiveMode__setByUser__; \
+  produceAssertions__option_t::type produceAssertions; \
+  bool produceAssertions__setByUser__; \
+  doITESimp__option_t::type doITESimp; \
+  bool doITESimp__setByUser__; \
+  doITESimpOnRepeat__option_t::type doITESimpOnRepeat; \
+  bool doITESimpOnRepeat__setByUser__; \
+  simplifyWithCareEnabled__option_t::type simplifyWithCareEnabled; \
+  bool simplifyWithCareEnabled__setByUser__; \
+  compressItes__option_t::type compressItes; \
+  bool compressItes__setByUser__; \
+  unconstrainedSimp__option_t::type unconstrainedSimp; \
+  bool unconstrainedSimp__setByUser__; \
+  repeatSimp__option_t::type repeatSimp; \
+  bool repeatSimp__setByUser__; \
+  zombieHuntThreshold__option_t::type zombieHuntThreshold; \
+  bool zombieHuntThreshold__setByUser__; \
+  sortInference__option_t::type sortInference; \
+  bool sortInference__setByUser__; \
+  incrementalSolving__option_t::type incrementalSolving; \
+  bool incrementalSolving__setByUser__; \
+  abstractValues__option_t::type abstractValues; \
+  bool abstractValues__setByUser__; \
+  modelUninterpDtEnum__option_t::type modelUninterpDtEnum; \
+  bool modelUninterpDtEnum__setByUser__; \
+  regularChannelName__option_t::type regularChannelName; \
+  bool regularChannelName__setByUser__; \
+  diagnosticChannelName__option_t::type diagnosticChannelName; \
+  bool diagnosticChannelName__setByUser__; \
+  cumulativeMillisecondLimit__option_t::type cumulativeMillisecondLimit; \
+  bool cumulativeMillisecondLimit__setByUser__; \
+  perCallMillisecondLimit__option_t::type perCallMillisecondLimit; \
+  bool perCallMillisecondLimit__setByUser__; \
+  cumulativeResourceLimit__option_t::type cumulativeResourceLimit; \
+  bool cumulativeResourceLimit__setByUser__; \
+  perCallResourceLimit__option_t::type perCallResourceLimit; \
+  bool perCallResourceLimit__setByUser__; \
+  hardLimit__option_t::type hardLimit; \
+  bool hardLimit__setByUser__; \
+  cpuTime__option_t::type cpuTime; \
+  bool cpuTime__setByUser__; \
+  rewriteStep__option_t::type rewriteStep; \
+  bool rewriteStep__setByUser__; \
+  theoryCheckStep__option_t::type theoryCheckStep; \
+  bool theoryCheckStep__setByUser__; \
+  decisionStep__option_t::type decisionStep; \
+  bool decisionStep__setByUser__; \
+  bitblastStep__option_t::type bitblastStep; \
+  bool bitblastStep__setByUser__; \
+  parseStep__option_t::type parseStep; \
+  bool parseStep__setByUser__; \
+  lemmaStep__option_t::type lemmaStep; \
+  bool lemmaStep__setByUser__; \
+  restartStep__option_t::type restartStep; \
+  bool restartStep__setByUser__; \
+  cnfStep__option_t::type cnfStep; \
+  bool cnfStep__setByUser__; \
+  preprocessStep__option_t::type preprocessStep; \
+  bool preprocessStep__setByUser__; \
+  quantifierStep__option_t::type quantifierStep; \
+  bool quantifierStep__setByUser__; \
+  satConflictStep__option_t::type satConflictStep; \
+  bool satConflictStep__setByUser__; \
+  bvSatConflictStep__option_t::type bvSatConflictStep; \
+  bool bvSatConflictStep__setByUser__; \
+  rewriteApplyToConst__option_t::type rewriteApplyToConst; \
+  bool rewriteApplyToConst__setByUser__; \
+  replayInputFilename__option_t::type replayInputFilename; \
+  bool replayInputFilename__setByUser__; \
+  replayLogFilename__option_t::type replayLogFilename; \
+  bool replayLogFilename__setByUser__; \
+  forceNoLimitCpuWhileDump__option_t::type forceNoLimitCpuWhileDump; \
+  bool forceNoLimitCpuWhileDump__setByUser__; \
+  solveIntAsBV__option_t::type solveIntAsBV; \
+  bool solveIntAsBV__setByUser__;
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC dumpModeString__option_t { typedef std::string type; type operator()() const; bool wasSetByUser() const; } dumpModeString CVC4_PUBLIC;
+#line 10 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC dumpToFileName__option_t { typedef std::string type; type operator()() const; bool wasSetByUser() const; } dumpToFileName CVC4_PUBLIC;
+#line 13 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC forceLogicString__option_t { typedef std::string type; type operator()() const; bool wasSetByUser() const; } forceLogicString CVC4_PUBLIC;
+#line 16 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC simplificationMode__option_t { typedef SimplificationMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } simplificationMode CVC4_PUBLIC;
+#line 21 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC doStaticLearning__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } doStaticLearning CVC4_PUBLIC;
+#line 24 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC expandDefinitions__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } expandDefinitions CVC4_PUBLIC;
+#line 26 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC produceModels__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } produceModels CVC4_PUBLIC;
+#line 28 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC checkModels__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } checkModels CVC4_PUBLIC;
+#line 30 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC dumpModels__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dumpModels CVC4_PUBLIC;
+#line 32 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC omitDontCares__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } omitDontCares CVC4_PUBLIC;
+#line 34 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC proof__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } proof CVC4_PUBLIC;
+#line 36 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC checkProofs__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } checkProofs CVC4_PUBLIC;
+#line 38 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC dumpProofs__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dumpProofs CVC4_PUBLIC;
+#line 40 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC dumpInstantiations__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dumpInstantiations CVC4_PUBLIC;
+#line 42 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC dumpSynth__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } dumpSynth CVC4_PUBLIC;
+#line 44 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC unsatCores__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } unsatCores CVC4_PUBLIC;
+#line 46 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC checkUnsatCores__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } checkUnsatCores CVC4_PUBLIC;
+#line 48 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC dumpUnsatCores__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dumpUnsatCores CVC4_PUBLIC;
+#line 51 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC produceAssignments__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } produceAssignments CVC4_PUBLIC;
+#line 54 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC interactiveMode__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } interactiveMode CVC4_PUBLIC;
+#line 56 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC produceAssertions__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } produceAssertions CVC4_PUBLIC;
+#line 59 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC doITESimp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } doITESimp CVC4_PUBLIC;
+#line 62 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC doITESimpOnRepeat__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } doITESimpOnRepeat CVC4_PUBLIC;
+#line 65 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC simplifyWithCareEnabled__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } simplifyWithCareEnabled CVC4_PUBLIC;
+#line 68 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC compressItes__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } compressItes CVC4_PUBLIC;
+#line 71 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC unconstrainedSimp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } unconstrainedSimp CVC4_PUBLIC;
+#line 74 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC repeatSimp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } repeatSimp CVC4_PUBLIC;
+#line 77 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC zombieHuntThreshold__option_t { typedef uint32_t type; type operator()() const; bool wasSetByUser() const; } zombieHuntThreshold CVC4_PUBLIC;
+#line 80 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC sortInference__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } sortInference CVC4_PUBLIC;
+#line 83 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC incrementalSolving__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } incrementalSolving CVC4_PUBLIC;
+#line 86 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC abstractValues__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } abstractValues CVC4_PUBLIC;
+#line 88 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC modelUninterpDtEnum__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } modelUninterpDtEnum CVC4_PUBLIC;
+#line 91 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC regularChannelName__option_t { typedef std::string type; type operator()() const; bool wasSetByUser() const; } regularChannelName CVC4_PUBLIC;
+#line 93 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC diagnosticChannelName__option_t { typedef std::string type; type operator()() const; bool wasSetByUser() const; } diagnosticChannelName CVC4_PUBLIC;
+#line 96 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC cumulativeMillisecondLimit__option_t { typedef unsigned long type; type operator()() const; bool wasSetByUser() const; } cumulativeMillisecondLimit CVC4_PUBLIC;
+#line 98 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC perCallMillisecondLimit__option_t { typedef unsigned long type; type operator()() const; bool wasSetByUser() const; } perCallMillisecondLimit CVC4_PUBLIC;
+#line 100 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC cumulativeResourceLimit__option_t { typedef unsigned long type; type operator()() const; bool wasSetByUser() const; } cumulativeResourceLimit CVC4_PUBLIC;
+#line 102 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC perCallResourceLimit__option_t { typedef unsigned long type; type operator()() const; bool wasSetByUser() const; } perCallResourceLimit CVC4_PUBLIC;
+#line 104 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC hardLimit__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } hardLimit CVC4_PUBLIC;
+#line 106 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC cpuTime__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cpuTime CVC4_PUBLIC;
+#line 110 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC rewriteStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } rewriteStep CVC4_PUBLIC;
+#line 113 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC theoryCheckStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } theoryCheckStep CVC4_PUBLIC;
+#line 116 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC decisionStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } decisionStep CVC4_PUBLIC;
+#line 119 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC bitblastStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } bitblastStep CVC4_PUBLIC;
+#line 122 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC parseStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } parseStep CVC4_PUBLIC;
+#line 125 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC lemmaStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } lemmaStep CVC4_PUBLIC;
+#line 128 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC restartStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } restartStep CVC4_PUBLIC;
+#line 131 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC cnfStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } cnfStep CVC4_PUBLIC;
+#line 134 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC preprocessStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } preprocessStep CVC4_PUBLIC;
+#line 137 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC quantifierStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } quantifierStep CVC4_PUBLIC;
+#line 140 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC satConflictStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } satConflictStep CVC4_PUBLIC;
+#line 143 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC bvSatConflictStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } bvSatConflictStep CVC4_PUBLIC;
+#line 147 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC rewriteApplyToConst__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } rewriteApplyToConst CVC4_PUBLIC;
+#line 152 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC replayInputFilename__option_t { typedef std::string type; type operator()() const; bool wasSetByUser() const; } replayInputFilename CVC4_PUBLIC;
+#line 156 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC replayLogFilename__option_t { typedef std::string type; type operator()() const; bool wasSetByUser() const; } replayLogFilename CVC4_PUBLIC;
+#line 159 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC forceNoLimitCpuWhileDump__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } forceNoLimitCpuWhileDump CVC4_PUBLIC;
+#line 162 "../../../../../src/options/smt_options"
+extern struct CVC4_PUBLIC solveIntAsBV__option_t { typedef uint32_t type; type operator()() const; bool wasSetByUser() const; } solveIntAsBV CVC4_PUBLIC;
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+#line 8 "../../../../../src/options/smt_options"
+template <> const options::dumpModeString__option_t::type& Options::operator[](options::dumpModeString__option_t) const;
+#line 8 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::dumpModeString__option_t) const;
+#line 8 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::dumpModeString__option_t, std::string option, std::string value);
+#line 10 "../../../../../src/options/smt_options"
+template <> const options::dumpToFileName__option_t::type& Options::operator[](options::dumpToFileName__option_t) const;
+#line 10 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::dumpToFileName__option_t) const;
+#line 10 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::dumpToFileName__option_t, std::string option, std::string value);
+#line 13 "../../../../../src/options/smt_options"
+template <> const options::forceLogicString__option_t::type& Options::operator[](options::forceLogicString__option_t) const;
+#line 13 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::forceLogicString__option_t) const;
+#line 13 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::forceLogicString__option_t, std::string option, std::string value);
+#line 16 "../../../../../src/options/smt_options"
+template <> void Options::set(options::simplificationMode__option_t, const options::simplificationMode__option_t::type& x);
+#line 16 "../../../../../src/options/smt_options"
+template <> const options::simplificationMode__option_t::type& Options::operator[](options::simplificationMode__option_t) const;
+#line 16 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::simplificationMode__option_t) const;
+#line 16 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::simplificationMode__option_t, std::string option, std::string value);
+#line 21 "../../../../../src/options/smt_options"
+template <> const options::doStaticLearning__option_t::type& Options::operator[](options::doStaticLearning__option_t) const;
+#line 21 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::doStaticLearning__option_t) const;
+#line 21 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::doStaticLearning__option_t, std::string option, bool value);
+#line 24 "../../../../../src/options/smt_options"
+template <> const options::expandDefinitions__option_t::type& Options::operator[](options::expandDefinitions__option_t) const;
+#line 24 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::expandDefinitions__option_t) const;
+#line 24 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::expandDefinitions__option_t, std::string option, bool value);
+#line 26 "../../../../../src/options/smt_options"
+template <> const options::produceModels__option_t::type& Options::operator[](options::produceModels__option_t) const;
+#line 26 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::produceModels__option_t) const;
+#line 26 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::produceModels__option_t, std::string option, bool value);
+#line 28 "../../../../../src/options/smt_options"
+template <> const options::checkModels__option_t::type& Options::operator[](options::checkModels__option_t) const;
+#line 28 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::checkModels__option_t) const;
+#line 28 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::checkModels__option_t, std::string option, bool value);
+#line 30 "../../../../../src/options/smt_options"
+template <> const options::dumpModels__option_t::type& Options::operator[](options::dumpModels__option_t) const;
+#line 30 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::dumpModels__option_t) const;
+#line 30 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::dumpModels__option_t, std::string option, bool value);
+#line 32 "../../../../../src/options/smt_options"
+template <> const options::omitDontCares__option_t::type& Options::operator[](options::omitDontCares__option_t) const;
+#line 32 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::omitDontCares__option_t) const;
+#line 32 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::omitDontCares__option_t, std::string option, bool value);
+#line 34 "../../../../../src/options/smt_options"
+template <> const options::proof__option_t::type& Options::operator[](options::proof__option_t) const;
+#line 34 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::proof__option_t) const;
+#line 34 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::proof__option_t, std::string option, bool value);
+#line 36 "../../../../../src/options/smt_options"
+template <> void Options::set(options::checkProofs__option_t, const options::checkProofs__option_t::type& x);
+#line 36 "../../../../../src/options/smt_options"
+template <> const options::checkProofs__option_t::type& Options::operator[](options::checkProofs__option_t) const;
+#line 36 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::checkProofs__option_t) const;
+#line 36 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::checkProofs__option_t, std::string option, bool value);
+#line 38 "../../../../../src/options/smt_options"
+template <> const options::dumpProofs__option_t::type& Options::operator[](options::dumpProofs__option_t) const;
+#line 38 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::dumpProofs__option_t) const;
+#line 38 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::dumpProofs__option_t, std::string option, bool value);
+#line 40 "../../../../../src/options/smt_options"
+template <> const options::dumpInstantiations__option_t::type& Options::operator[](options::dumpInstantiations__option_t) const;
+#line 40 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::dumpInstantiations__option_t) const;
+#line 40 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::dumpInstantiations__option_t, std::string option, bool value);
+#line 42 "../../../../../src/options/smt_options"
+template <> void Options::set(options::dumpSynth__option_t, const options::dumpSynth__option_t::type& x);
+#line 42 "../../../../../src/options/smt_options"
+template <> const options::dumpSynth__option_t::type& Options::operator[](options::dumpSynth__option_t) const;
+#line 42 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::dumpSynth__option_t) const;
+#line 42 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::dumpSynth__option_t, std::string option, bool value);
+#line 44 "../../../../../src/options/smt_options"
+template <> const options::unsatCores__option_t::type& Options::operator[](options::unsatCores__option_t) const;
+#line 44 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::unsatCores__option_t) const;
+#line 44 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::unsatCores__option_t, std::string option, bool value);
+#line 46 "../../../../../src/options/smt_options"
+template <> void Options::set(options::checkUnsatCores__option_t, const options::checkUnsatCores__option_t::type& x);
+#line 46 "../../../../../src/options/smt_options"
+template <> const options::checkUnsatCores__option_t::type& Options::operator[](options::checkUnsatCores__option_t) const;
+#line 46 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::checkUnsatCores__option_t) const;
+#line 46 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::checkUnsatCores__option_t, std::string option, bool value);
+#line 48 "../../../../../src/options/smt_options"
+template <> const options::dumpUnsatCores__option_t::type& Options::operator[](options::dumpUnsatCores__option_t) const;
+#line 48 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::dumpUnsatCores__option_t) const;
+#line 48 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::dumpUnsatCores__option_t, std::string option, bool value);
+#line 51 "../../../../../src/options/smt_options"
+template <> const options::produceAssignments__option_t::type& Options::operator[](options::produceAssignments__option_t) const;
+#line 51 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::produceAssignments__option_t) const;
+#line 51 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::produceAssignments__option_t, std::string option, bool value);
+#line 54 "../../../../../src/options/smt_options"
+template <> void Options::set(options::interactiveMode__option_t, const options::interactiveMode__option_t::type& x);
+#line 54 "../../../../../src/options/smt_options"
+template <> const options::interactiveMode__option_t::type& Options::operator[](options::interactiveMode__option_t) const;
+#line 54 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::interactiveMode__option_t) const;
+#line 54 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::interactiveMode__option_t, std::string option, bool value);
+#line 56 "../../../../../src/options/smt_options"
+template <> void Options::set(options::produceAssertions__option_t, const options::produceAssertions__option_t::type& x);
+#line 56 "../../../../../src/options/smt_options"
+template <> const options::produceAssertions__option_t::type& Options::operator[](options::produceAssertions__option_t) const;
+#line 56 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::produceAssertions__option_t) const;
+#line 56 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::produceAssertions__option_t, std::string option, bool value);
+#line 59 "../../../../../src/options/smt_options"
+template <> void Options::set(options::doITESimp__option_t, const options::doITESimp__option_t::type& x);
+#line 59 "../../../../../src/options/smt_options"
+template <> const options::doITESimp__option_t::type& Options::operator[](options::doITESimp__option_t) const;
+#line 59 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::doITESimp__option_t) const;
+#line 59 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::doITESimp__option_t, std::string option, bool value);
+#line 62 "../../../../../src/options/smt_options"
+template <> void Options::set(options::doITESimpOnRepeat__option_t, const options::doITESimpOnRepeat__option_t::type& x);
+#line 62 "../../../../../src/options/smt_options"
+template <> const options::doITESimpOnRepeat__option_t::type& Options::operator[](options::doITESimpOnRepeat__option_t) const;
+#line 62 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::doITESimpOnRepeat__option_t) const;
+#line 62 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::doITESimpOnRepeat__option_t, std::string option, bool value);
+#line 65 "../../../../../src/options/smt_options"
+template <> void Options::set(options::simplifyWithCareEnabled__option_t, const options::simplifyWithCareEnabled__option_t::type& x);
+#line 65 "../../../../../src/options/smt_options"
+template <> const options::simplifyWithCareEnabled__option_t::type& Options::operator[](options::simplifyWithCareEnabled__option_t) const;
+#line 65 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::simplifyWithCareEnabled__option_t) const;
+#line 65 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::simplifyWithCareEnabled__option_t, std::string option, bool value);
+#line 68 "../../../../../src/options/smt_options"
+template <> void Options::set(options::compressItes__option_t, const options::compressItes__option_t::type& x);
+#line 68 "../../../../../src/options/smt_options"
+template <> const options::compressItes__option_t::type& Options::operator[](options::compressItes__option_t) const;
+#line 68 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::compressItes__option_t) const;
+#line 68 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::compressItes__option_t, std::string option, bool value);
+#line 71 "../../../../../src/options/smt_options"
+template <> void Options::set(options::unconstrainedSimp__option_t, const options::unconstrainedSimp__option_t::type& x);
+#line 71 "../../../../../src/options/smt_options"
+template <> const options::unconstrainedSimp__option_t::type& Options::operator[](options::unconstrainedSimp__option_t) const;
+#line 71 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::unconstrainedSimp__option_t) const;
+#line 71 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::unconstrainedSimp__option_t, std::string option, bool value);
+#line 74 "../../../../../src/options/smt_options"
+template <> void Options::set(options::repeatSimp__option_t, const options::repeatSimp__option_t::type& x);
+#line 74 "../../../../../src/options/smt_options"
+template <> const options::repeatSimp__option_t::type& Options::operator[](options::repeatSimp__option_t) const;
+#line 74 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::repeatSimp__option_t) const;
+#line 74 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::repeatSimp__option_t, std::string option, bool value);
+#line 77 "../../../../../src/options/smt_options"
+template <> const options::zombieHuntThreshold__option_t::type& Options::operator[](options::zombieHuntThreshold__option_t) const;
+#line 77 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::zombieHuntThreshold__option_t) const;
+#line 77 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::zombieHuntThreshold__option_t, std::string option, std::string value);
+#line 80 "../../../../../src/options/smt_options"
+template <> void Options::set(options::sortInference__option_t, const options::sortInference__option_t::type& x);
+#line 80 "../../../../../src/options/smt_options"
+template <> const options::sortInference__option_t::type& Options::operator[](options::sortInference__option_t) const;
+#line 80 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::sortInference__option_t) const;
+#line 80 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::sortInference__option_t, std::string option, bool value);
+#line 83 "../../../../../src/options/smt_options"
+template <> const options::incrementalSolving__option_t::type& Options::operator[](options::incrementalSolving__option_t) const;
+#line 83 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::incrementalSolving__option_t) const;
+#line 83 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::incrementalSolving__option_t, std::string option, bool value);
+#line 86 "../../../../../src/options/smt_options"
+template <> const options::abstractValues__option_t::type& Options::operator[](options::abstractValues__option_t) const;
+#line 86 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::abstractValues__option_t) const;
+#line 86 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::abstractValues__option_t, std::string option, bool value);
+#line 88 "../../../../../src/options/smt_options"
+template <> const options::modelUninterpDtEnum__option_t::type& Options::operator[](options::modelUninterpDtEnum__option_t) const;
+#line 88 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::modelUninterpDtEnum__option_t) const;
+#line 88 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::modelUninterpDtEnum__option_t, std::string option, bool value);
+#line 91 "../../../../../src/options/smt_options"
+template <> const options::regularChannelName__option_t::type& Options::operator[](options::regularChannelName__option_t) const;
+#line 91 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::regularChannelName__option_t) const;
+#line 91 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::regularChannelName__option_t, std::string option, std::string value);
+#line 93 "../../../../../src/options/smt_options"
+template <> const options::diagnosticChannelName__option_t::type& Options::operator[](options::diagnosticChannelName__option_t) const;
+#line 93 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::diagnosticChannelName__option_t) const;
+#line 93 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::diagnosticChannelName__option_t, std::string option, std::string value);
+#line 96 "../../../../../src/options/smt_options"
+template <> const options::cumulativeMillisecondLimit__option_t::type& Options::operator[](options::cumulativeMillisecondLimit__option_t) const;
+#line 96 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::cumulativeMillisecondLimit__option_t) const;
+#line 96 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::cumulativeMillisecondLimit__option_t, std::string option, std::string value);
+#line 98 "../../../../../src/options/smt_options"
+template <> const options::perCallMillisecondLimit__option_t::type& Options::operator[](options::perCallMillisecondLimit__option_t) const;
+#line 98 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::perCallMillisecondLimit__option_t) const;
+#line 98 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::perCallMillisecondLimit__option_t, std::string option, std::string value);
+#line 100 "../../../../../src/options/smt_options"
+template <> const options::cumulativeResourceLimit__option_t::type& Options::operator[](options::cumulativeResourceLimit__option_t) const;
+#line 100 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::cumulativeResourceLimit__option_t) const;
+#line 100 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::cumulativeResourceLimit__option_t, std::string option, std::string value);
+#line 102 "../../../../../src/options/smt_options"
+template <> const options::perCallResourceLimit__option_t::type& Options::operator[](options::perCallResourceLimit__option_t) const;
+#line 102 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::perCallResourceLimit__option_t) const;
+#line 102 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::perCallResourceLimit__option_t, std::string option, std::string value);
+#line 104 "../../../../../src/options/smt_options"
+template <> const options::hardLimit__option_t::type& Options::operator[](options::hardLimit__option_t) const;
+#line 104 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::hardLimit__option_t) const;
+#line 104 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::hardLimit__option_t, std::string option, bool value);
+#line 106 "../../../../../src/options/smt_options"
+template <> const options::cpuTime__option_t::type& Options::operator[](options::cpuTime__option_t) const;
+#line 106 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::cpuTime__option_t) const;
+#line 106 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::cpuTime__option_t, std::string option, bool value);
+#line 110 "../../../../../src/options/smt_options"
+template <> const options::rewriteStep__option_t::type& Options::operator[](options::rewriteStep__option_t) const;
+#line 110 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::rewriteStep__option_t) const;
+#line 110 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::rewriteStep__option_t, std::string option, std::string value);
+#line 113 "../../../../../src/options/smt_options"
+template <> const options::theoryCheckStep__option_t::type& Options::operator[](options::theoryCheckStep__option_t) const;
+#line 113 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::theoryCheckStep__option_t) const;
+#line 113 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::theoryCheckStep__option_t, std::string option, std::string value);
+#line 116 "../../../../../src/options/smt_options"
+template <> const options::decisionStep__option_t::type& Options::operator[](options::decisionStep__option_t) const;
+#line 116 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::decisionStep__option_t) const;
+#line 116 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::decisionStep__option_t, std::string option, std::string value);
+#line 119 "../../../../../src/options/smt_options"
+template <> const options::bitblastStep__option_t::type& Options::operator[](options::bitblastStep__option_t) const;
+#line 119 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::bitblastStep__option_t) const;
+#line 119 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::bitblastStep__option_t, std::string option, std::string value);
+#line 122 "../../../../../src/options/smt_options"
+template <> const options::parseStep__option_t::type& Options::operator[](options::parseStep__option_t) const;
+#line 122 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::parseStep__option_t) const;
+#line 122 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::parseStep__option_t, std::string option, std::string value);
+#line 125 "../../../../../src/options/smt_options"
+template <> const options::lemmaStep__option_t::type& Options::operator[](options::lemmaStep__option_t) const;
+#line 125 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::lemmaStep__option_t) const;
+#line 125 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::lemmaStep__option_t, std::string option, std::string value);
+#line 128 "../../../../../src/options/smt_options"
+template <> const options::restartStep__option_t::type& Options::operator[](options::restartStep__option_t) const;
+#line 128 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::restartStep__option_t) const;
+#line 128 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::restartStep__option_t, std::string option, std::string value);
+#line 131 "../../../../../src/options/smt_options"
+template <> const options::cnfStep__option_t::type& Options::operator[](options::cnfStep__option_t) const;
+#line 131 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::cnfStep__option_t) const;
+#line 131 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::cnfStep__option_t, std::string option, std::string value);
+#line 134 "../../../../../src/options/smt_options"
+template <> const options::preprocessStep__option_t::type& Options::operator[](options::preprocessStep__option_t) const;
+#line 134 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::preprocessStep__option_t) const;
+#line 134 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::preprocessStep__option_t, std::string option, std::string value);
+#line 137 "../../../../../src/options/smt_options"
+template <> const options::quantifierStep__option_t::type& Options::operator[](options::quantifierStep__option_t) const;
+#line 137 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::quantifierStep__option_t) const;
+#line 137 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::quantifierStep__option_t, std::string option, std::string value);
+#line 140 "../../../../../src/options/smt_options"
+template <> const options::satConflictStep__option_t::type& Options::operator[](options::satConflictStep__option_t) const;
+#line 140 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::satConflictStep__option_t) const;
+#line 140 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::satConflictStep__option_t, std::string option, std::string value);
+#line 143 "../../../../../src/options/smt_options"
+template <> const options::bvSatConflictStep__option_t::type& Options::operator[](options::bvSatConflictStep__option_t) const;
+#line 143 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::bvSatConflictStep__option_t) const;
+#line 143 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::bvSatConflictStep__option_t, std::string option, std::string value);
+#line 147 "../../../../../src/options/smt_options"
+template <> const options::rewriteApplyToConst__option_t::type& Options::operator[](options::rewriteApplyToConst__option_t) const;
+#line 147 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::rewriteApplyToConst__option_t) const;
+#line 147 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::rewriteApplyToConst__option_t, std::string option, bool value);
+#line 152 "../../../../../src/options/smt_options"
+template <> const options::replayInputFilename__option_t::type& Options::operator[](options::replayInputFilename__option_t) const;
+#line 152 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::replayInputFilename__option_t) const;
+#line 152 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::replayInputFilename__option_t, std::string option, std::string value);
+#line 156 "../../../../../src/options/smt_options"
+template <> const options::replayLogFilename__option_t::type& Options::operator[](options::replayLogFilename__option_t) const;
+#line 156 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::replayLogFilename__option_t) const;
+#line 156 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::replayLogFilename__option_t, std::string option, std::string value);
+#line 159 "../../../../../src/options/smt_options"
+template <> const options::forceNoLimitCpuWhileDump__option_t::type& Options::operator[](options::forceNoLimitCpuWhileDump__option_t) const;
+#line 159 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::forceNoLimitCpuWhileDump__option_t) const;
+#line 159 "../../../../../src/options/smt_options"
+template <> void Options::assignBool(options::forceNoLimitCpuWhileDump__option_t, std::string option, bool value);
+#line 162 "../../../../../src/options/smt_options"
+template <> const options::solveIntAsBV__option_t::type& Options::operator[](options::solveIntAsBV__option_t) const;
+#line 162 "../../../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::solveIntAsBV__option_t) const;
+#line 162 "../../../../../src/options/smt_options"
+template <> void Options::assign(options::solveIntAsBV__option_t, std::string option, std::string value);
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/smt_options"
+inline dumpModeString__option_t::type dumpModeString__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 8 "../../../../../src/options/smt_options"
+inline bool dumpModeString__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 10 "../../../../../src/options/smt_options"
+inline dumpToFileName__option_t::type dumpToFileName__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 10 "../../../../../src/options/smt_options"
+inline bool dumpToFileName__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 13 "../../../../../src/options/smt_options"
+inline forceLogicString__option_t::type forceLogicString__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 13 "../../../../../src/options/smt_options"
+inline bool forceLogicString__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 16 "../../../../../src/options/smt_options"
+inline simplificationMode__option_t::type simplificationMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 16 "../../../../../src/options/smt_options"
+inline bool simplificationMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 16 "../../../../../src/options/smt_options"
+inline void simplificationMode__option_t::set(const simplificationMode__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 21 "../../../../../src/options/smt_options"
+inline doStaticLearning__option_t::type doStaticLearning__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 21 "../../../../../src/options/smt_options"
+inline bool doStaticLearning__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 24 "../../../../../src/options/smt_options"
+inline expandDefinitions__option_t::type expandDefinitions__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 24 "../../../../../src/options/smt_options"
+inline bool expandDefinitions__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 26 "../../../../../src/options/smt_options"
+inline produceModels__option_t::type produceModels__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 26 "../../../../../src/options/smt_options"
+inline bool produceModels__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 28 "../../../../../src/options/smt_options"
+inline checkModels__option_t::type checkModels__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 28 "../../../../../src/options/smt_options"
+inline bool checkModels__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 30 "../../../../../src/options/smt_options"
+inline dumpModels__option_t::type dumpModels__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 30 "../../../../../src/options/smt_options"
+inline bool dumpModels__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 32 "../../../../../src/options/smt_options"
+inline omitDontCares__option_t::type omitDontCares__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 32 "../../../../../src/options/smt_options"
+inline bool omitDontCares__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 34 "../../../../../src/options/smt_options"
+inline proof__option_t::type proof__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 34 "../../../../../src/options/smt_options"
+inline bool proof__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 36 "../../../../../src/options/smt_options"
+inline checkProofs__option_t::type checkProofs__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 36 "../../../../../src/options/smt_options"
+inline bool checkProofs__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 36 "../../../../../src/options/smt_options"
+inline void checkProofs__option_t::set(const checkProofs__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 38 "../../../../../src/options/smt_options"
+inline dumpProofs__option_t::type dumpProofs__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 38 "../../../../../src/options/smt_options"
+inline bool dumpProofs__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 40 "../../../../../src/options/smt_options"
+inline dumpInstantiations__option_t::type dumpInstantiations__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 40 "../../../../../src/options/smt_options"
+inline bool dumpInstantiations__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 42 "../../../../../src/options/smt_options"
+inline dumpSynth__option_t::type dumpSynth__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 42 "../../../../../src/options/smt_options"
+inline bool dumpSynth__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 42 "../../../../../src/options/smt_options"
+inline void dumpSynth__option_t::set(const dumpSynth__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 44 "../../../../../src/options/smt_options"
+inline unsatCores__option_t::type unsatCores__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 44 "../../../../../src/options/smt_options"
+inline bool unsatCores__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 46 "../../../../../src/options/smt_options"
+inline checkUnsatCores__option_t::type checkUnsatCores__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 46 "../../../../../src/options/smt_options"
+inline bool checkUnsatCores__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 46 "../../../../../src/options/smt_options"
+inline void checkUnsatCores__option_t::set(const checkUnsatCores__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 48 "../../../../../src/options/smt_options"
+inline dumpUnsatCores__option_t::type dumpUnsatCores__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 48 "../../../../../src/options/smt_options"
+inline bool dumpUnsatCores__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 51 "../../../../../src/options/smt_options"
+inline produceAssignments__option_t::type produceAssignments__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 51 "../../../../../src/options/smt_options"
+inline bool produceAssignments__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 54 "../../../../../src/options/smt_options"
+inline interactiveMode__option_t::type interactiveMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 54 "../../../../../src/options/smt_options"
+inline bool interactiveMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 54 "../../../../../src/options/smt_options"
+inline void interactiveMode__option_t::set(const interactiveMode__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 56 "../../../../../src/options/smt_options"
+inline produceAssertions__option_t::type produceAssertions__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 56 "../../../../../src/options/smt_options"
+inline bool produceAssertions__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 56 "../../../../../src/options/smt_options"
+inline void produceAssertions__option_t::set(const produceAssertions__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 59 "../../../../../src/options/smt_options"
+inline doITESimp__option_t::type doITESimp__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 59 "../../../../../src/options/smt_options"
+inline bool doITESimp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 59 "../../../../../src/options/smt_options"
+inline void doITESimp__option_t::set(const doITESimp__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 62 "../../../../../src/options/smt_options"
+inline doITESimpOnRepeat__option_t::type doITESimpOnRepeat__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 62 "../../../../../src/options/smt_options"
+inline bool doITESimpOnRepeat__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 62 "../../../../../src/options/smt_options"
+inline void doITESimpOnRepeat__option_t::set(const doITESimpOnRepeat__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 65 "../../../../../src/options/smt_options"
+inline simplifyWithCareEnabled__option_t::type simplifyWithCareEnabled__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 65 "../../../../../src/options/smt_options"
+inline bool simplifyWithCareEnabled__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 65 "../../../../../src/options/smt_options"
+inline void simplifyWithCareEnabled__option_t::set(const simplifyWithCareEnabled__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 68 "../../../../../src/options/smt_options"
+inline compressItes__option_t::type compressItes__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 68 "../../../../../src/options/smt_options"
+inline bool compressItes__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 68 "../../../../../src/options/smt_options"
+inline void compressItes__option_t::set(const compressItes__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 71 "../../../../../src/options/smt_options"
+inline unconstrainedSimp__option_t::type unconstrainedSimp__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 71 "../../../../../src/options/smt_options"
+inline bool unconstrainedSimp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 71 "../../../../../src/options/smt_options"
+inline void unconstrainedSimp__option_t::set(const unconstrainedSimp__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 74 "../../../../../src/options/smt_options"
+inline repeatSimp__option_t::type repeatSimp__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 74 "../../../../../src/options/smt_options"
+inline bool repeatSimp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 74 "../../../../../src/options/smt_options"
+inline void repeatSimp__option_t::set(const repeatSimp__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 77 "../../../../../src/options/smt_options"
+inline zombieHuntThreshold__option_t::type zombieHuntThreshold__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 77 "../../../../../src/options/smt_options"
+inline bool zombieHuntThreshold__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 80 "../../../../../src/options/smt_options"
+inline sortInference__option_t::type sortInference__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 80 "../../../../../src/options/smt_options"
+inline bool sortInference__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 80 "../../../../../src/options/smt_options"
+inline void sortInference__option_t::set(const sortInference__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 83 "../../../../../src/options/smt_options"
+inline incrementalSolving__option_t::type incrementalSolving__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 83 "../../../../../src/options/smt_options"
+inline bool incrementalSolving__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 86 "../../../../../src/options/smt_options"
+inline abstractValues__option_t::type abstractValues__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 86 "../../../../../src/options/smt_options"
+inline bool abstractValues__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 88 "../../../../../src/options/smt_options"
+inline modelUninterpDtEnum__option_t::type modelUninterpDtEnum__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 88 "../../../../../src/options/smt_options"
+inline bool modelUninterpDtEnum__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 91 "../../../../../src/options/smt_options"
+inline regularChannelName__option_t::type regularChannelName__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 91 "../../../../../src/options/smt_options"
+inline bool regularChannelName__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 93 "../../../../../src/options/smt_options"
+inline diagnosticChannelName__option_t::type diagnosticChannelName__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 93 "../../../../../src/options/smt_options"
+inline bool diagnosticChannelName__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 96 "../../../../../src/options/smt_options"
+inline cumulativeMillisecondLimit__option_t::type cumulativeMillisecondLimit__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 96 "../../../../../src/options/smt_options"
+inline bool cumulativeMillisecondLimit__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 98 "../../../../../src/options/smt_options"
+inline perCallMillisecondLimit__option_t::type perCallMillisecondLimit__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 98 "../../../../../src/options/smt_options"
+inline bool perCallMillisecondLimit__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 100 "../../../../../src/options/smt_options"
+inline cumulativeResourceLimit__option_t::type cumulativeResourceLimit__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 100 "../../../../../src/options/smt_options"
+inline bool cumulativeResourceLimit__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 102 "../../../../../src/options/smt_options"
+inline perCallResourceLimit__option_t::type perCallResourceLimit__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 102 "../../../../../src/options/smt_options"
+inline bool perCallResourceLimit__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 104 "../../../../../src/options/smt_options"
+inline hardLimit__option_t::type hardLimit__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 104 "../../../../../src/options/smt_options"
+inline bool hardLimit__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 106 "../../../../../src/options/smt_options"
+inline cpuTime__option_t::type cpuTime__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 106 "../../../../../src/options/smt_options"
+inline bool cpuTime__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 110 "../../../../../src/options/smt_options"
+inline rewriteStep__option_t::type rewriteStep__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 110 "../../../../../src/options/smt_options"
+inline bool rewriteStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 113 "../../../../../src/options/smt_options"
+inline theoryCheckStep__option_t::type theoryCheckStep__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 113 "../../../../../src/options/smt_options"
+inline bool theoryCheckStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 116 "../../../../../src/options/smt_options"
+inline decisionStep__option_t::type decisionStep__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 116 "../../../../../src/options/smt_options"
+inline bool decisionStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 119 "../../../../../src/options/smt_options"
+inline bitblastStep__option_t::type bitblastStep__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 119 "../../../../../src/options/smt_options"
+inline bool bitblastStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 122 "../../../../../src/options/smt_options"
+inline parseStep__option_t::type parseStep__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 122 "../../../../../src/options/smt_options"
+inline bool parseStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 125 "../../../../../src/options/smt_options"
+inline lemmaStep__option_t::type lemmaStep__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 125 "../../../../../src/options/smt_options"
+inline bool lemmaStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 128 "../../../../../src/options/smt_options"
+inline restartStep__option_t::type restartStep__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 128 "../../../../../src/options/smt_options"
+inline bool restartStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 131 "../../../../../src/options/smt_options"
+inline cnfStep__option_t::type cnfStep__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 131 "../../../../../src/options/smt_options"
+inline bool cnfStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 134 "../../../../../src/options/smt_options"
+inline preprocessStep__option_t::type preprocessStep__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 134 "../../../../../src/options/smt_options"
+inline bool preprocessStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 137 "../../../../../src/options/smt_options"
+inline quantifierStep__option_t::type quantifierStep__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 137 "../../../../../src/options/smt_options"
+inline bool quantifierStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 140 "../../../../../src/options/smt_options"
+inline satConflictStep__option_t::type satConflictStep__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 140 "../../../../../src/options/smt_options"
+inline bool satConflictStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 143 "../../../../../src/options/smt_options"
+inline bvSatConflictStep__option_t::type bvSatConflictStep__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 143 "../../../../../src/options/smt_options"
+inline bool bvSatConflictStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 147 "../../../../../src/options/smt_options"
+inline rewriteApplyToConst__option_t::type rewriteApplyToConst__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 147 "../../../../../src/options/smt_options"
+inline bool rewriteApplyToConst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 152 "../../../../../src/options/smt_options"
+inline replayInputFilename__option_t::type replayInputFilename__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 152 "../../../../../src/options/smt_options"
+inline bool replayInputFilename__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 156 "../../../../../src/options/smt_options"
+inline replayLogFilename__option_t::type replayLogFilename__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 156 "../../../../../src/options/smt_options"
+inline bool replayLogFilename__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 159 "../../../../../src/options/smt_options"
+inline forceNoLimitCpuWhileDump__option_t::type forceNoLimitCpuWhileDump__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 159 "../../../../../src/options/smt_options"
+inline bool forceNoLimitCpuWhileDump__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 162 "../../../../../src/options/smt_options"
+inline solveIntAsBV__option_t::type solveIntAsBV__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 162 "../../../../../src/options/smt_options"
+inline bool solveIntAsBV__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__SMT_H */
diff --git a/src/options/strings_options b/src/options/strings_options
new file mode 100644
index 0000000..6dd7030
--- /dev/null
+++ b/src/options/strings_options
@@ -0,0 +1,76 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module STRINGS "options/strings_options.h" Strings theory
+
+option stringExp strings-exp --strings-exp bool :default false :read-write
+ experimental features in the theory of strings
+
+# :predicate-include "smt/smt_engine.h"
+option stringLB strings-lb --strings-lb=N unsigned :default 0 :predicate unsignedLessEqual2
+ the strategy of LB rule application: 0-lazy, 1-eager, 2-no
+
+# :predicate-include "smt/smt_engine.h"
+option stdASCII strings-std-ascii --strings-std-ascii bool :default true :predicate unsignedLessEqual2
+ the alphabet contains only characters from the standard ASCII or the extended one
+
+option stringFMF strings-fmf --strings-fmf bool :default false :read-write
+ the finite model finding used by the theory of strings
+ 
+option stringEager strings-eager --strings-eager bool :default false
+ strings eager check
+
+option stringEIT strings-eit --strings-eit bool :default false
+ the eager intersection used by the theory of strings
+
+option stringOpt1 strings-opt1 --strings-opt1 bool :default true
+ internal option1 for strings: normal form
+
+option stringOpt2 strings-opt2 --strings-opt2 bool :default false
+ internal option2 for strings: constant regexp splitting
+
+option stringIgnNegMembership strings-inm --strings-inm bool :default false
+ internal for strings: ignore negative membership constraints (fragment checking is needed, left to users for now)
+
+#expert-option stringCharCardinality strings-alphabet-card --strings-alphabet-card=N int16_t :default 128 :read-write
+# the cardinality of the characters used by the theory of strings, default 128 (for standard ASCII) or 256 (for extended ASCII)
+
+option stringLazyPreproc strings-lazy-pp --strings-lazy-pp bool :default true
+ perform string preprocessing lazily
+
+option stringLenGeqZ strings-len-geqz --strings-len-geqz bool :default false
+ strings length greater than zero lemmas
+
+option stringLenNorm strings-len-norm --strings-len-norm bool :default true
+ strings length normalization lemma
+option stringSplitEmp strings-sp-emp --strings-sp-emp bool :default true
+ strings split on empty string
+option stringInferSym strings-infer-sym --strings-infer-sym bool :default true
+ strings split on empty string
+option stringEagerLen strings-eager-len --strings-eager-len bool :default true
+ strings eager length lemmas
+option stringCheckEntailLen strings-check-entail-len --strings-check-entail-len bool :default true
+ check entailment between length terms to reduce splitting
+option stringProcessLoop strings-process-loop --strings-process-loop bool :default true
+ reduce looping word equations to regular expressions
+option stringAbortLoop strings-abort-loop --strings-abort-loop bool :default false
+ abort when a looping word equation is encountered
+option stringInferAsLemmas strings-infer-as-lemmas --strings-infer-as-lemmas bool :default false
+ always send lemmas out instead of making internal inferences
+option stringRExplainLemmas strings-rexplain-lemmas --strings-rexplain-lemmas bool :default true
+ regression explanations for string lemmas
+option stringMinPrefixExplain strings-min-prefix-explain --strings-min-prefix-explain bool :default true
+ minimize explanations for prefix of normal forms in strings
+option stringGuessModel strings-guess-model --strings-guess-model bool :default false
+ use model guessing to avoid string extended function reductions
+option stringUfReduct strings-uf-reduct --strings-uf-reduct bool :default false
+ use uninterpreted functions when applying extended function reductions
+option stringBinaryCsp strings-binary-csp --strings-binary-csp bool :default false
+ use binary search when splitting strings
+option stringLenPropCsp strings-lprop-csp --strings-lprop-csp bool :default false
+ do length propagation based on constant splits
+
+
+endmodule
diff --git a/src/options/strings_options.cpp b/src/options/strings_options.cpp
new file mode 100644
index 0000000..c015847
--- /dev/null
+++ b/src/options/strings_options.cpp
@@ -0,0 +1,187 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+#line 8 "../../../../../src/options/strings_options"
+template <> void Options::set(options::stringExp__option_t, const options::stringExp__option_t::type& x) { d_holder->stringExp = x; }
+#line 8 "../../../../../src/options/strings_options"
+template <> const options::stringExp__option_t::type& Options::operator[](options::stringExp__option_t) const { return d_holder->stringExp; }
+#line 8 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringExp__option_t) const { return d_holder->stringExp__setByUser__; }
+#line 12 "../../../../../src/options/strings_options"
+template <> const options::stringLB__option_t::type& Options::operator[](options::stringLB__option_t) const { return d_holder->stringLB; }
+#line 12 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringLB__option_t) const { return d_holder->stringLB__setByUser__; }
+#line 16 "../../../../../src/options/strings_options"
+template <> const options::stdASCII__option_t::type& Options::operator[](options::stdASCII__option_t) const { return d_holder->stdASCII; }
+#line 16 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stdASCII__option_t) const { return d_holder->stdASCII__setByUser__; }
+#line 19 "../../../../../src/options/strings_options"
+template <> void Options::set(options::stringFMF__option_t, const options::stringFMF__option_t::type& x) { d_holder->stringFMF = x; }
+#line 19 "../../../../../src/options/strings_options"
+template <> const options::stringFMF__option_t::type& Options::operator[](options::stringFMF__option_t) const { return d_holder->stringFMF; }
+#line 19 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringFMF__option_t) const { return d_holder->stringFMF__setByUser__; }
+#line 22 "../../../../../src/options/strings_options"
+template <> const options::stringEager__option_t::type& Options::operator[](options::stringEager__option_t) const { return d_holder->stringEager; }
+#line 22 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringEager__option_t) const { return d_holder->stringEager__setByUser__; }
+#line 25 "../../../../../src/options/strings_options"
+template <> const options::stringEIT__option_t::type& Options::operator[](options::stringEIT__option_t) const { return d_holder->stringEIT; }
+#line 25 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringEIT__option_t) const { return d_holder->stringEIT__setByUser__; }
+#line 28 "../../../../../src/options/strings_options"
+template <> const options::stringOpt1__option_t::type& Options::operator[](options::stringOpt1__option_t) const { return d_holder->stringOpt1; }
+#line 28 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringOpt1__option_t) const { return d_holder->stringOpt1__setByUser__; }
+#line 31 "../../../../../src/options/strings_options"
+template <> const options::stringOpt2__option_t::type& Options::operator[](options::stringOpt2__option_t) const { return d_holder->stringOpt2; }
+#line 31 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringOpt2__option_t) const { return d_holder->stringOpt2__setByUser__; }
+#line 34 "../../../../../src/options/strings_options"
+template <> const options::stringIgnNegMembership__option_t::type& Options::operator[](options::stringIgnNegMembership__option_t) const { return d_holder->stringIgnNegMembership; }
+#line 34 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringIgnNegMembership__option_t) const { return d_holder->stringIgnNegMembership__setByUser__; }
+#line 40 "../../../../../src/options/strings_options"
+template <> const options::stringLazyPreproc__option_t::type& Options::operator[](options::stringLazyPreproc__option_t) const { return d_holder->stringLazyPreproc; }
+#line 40 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringLazyPreproc__option_t) const { return d_holder->stringLazyPreproc__setByUser__; }
+#line 43 "../../../../../src/options/strings_options"
+template <> const options::stringLenGeqZ__option_t::type& Options::operator[](options::stringLenGeqZ__option_t) const { return d_holder->stringLenGeqZ; }
+#line 43 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringLenGeqZ__option_t) const { return d_holder->stringLenGeqZ__setByUser__; }
+#line 46 "../../../../../src/options/strings_options"
+template <> const options::stringLenNorm__option_t::type& Options::operator[](options::stringLenNorm__option_t) const { return d_holder->stringLenNorm; }
+#line 46 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringLenNorm__option_t) const { return d_holder->stringLenNorm__setByUser__; }
+#line 48 "../../../../../src/options/strings_options"
+template <> const options::stringSplitEmp__option_t::type& Options::operator[](options::stringSplitEmp__option_t) const { return d_holder->stringSplitEmp; }
+#line 48 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringSplitEmp__option_t) const { return d_holder->stringSplitEmp__setByUser__; }
+#line 50 "../../../../../src/options/strings_options"
+template <> const options::stringInferSym__option_t::type& Options::operator[](options::stringInferSym__option_t) const { return d_holder->stringInferSym; }
+#line 50 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringInferSym__option_t) const { return d_holder->stringInferSym__setByUser__; }
+#line 52 "../../../../../src/options/strings_options"
+template <> const options::stringEagerLen__option_t::type& Options::operator[](options::stringEagerLen__option_t) const { return d_holder->stringEagerLen; }
+#line 52 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringEagerLen__option_t) const { return d_holder->stringEagerLen__setByUser__; }
+#line 54 "../../../../../src/options/strings_options"
+template <> const options::stringCheckEntailLen__option_t::type& Options::operator[](options::stringCheckEntailLen__option_t) const { return d_holder->stringCheckEntailLen; }
+#line 54 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringCheckEntailLen__option_t) const { return d_holder->stringCheckEntailLen__setByUser__; }
+#line 56 "../../../../../src/options/strings_options"
+template <> const options::stringProcessLoop__option_t::type& Options::operator[](options::stringProcessLoop__option_t) const { return d_holder->stringProcessLoop; }
+#line 56 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringProcessLoop__option_t) const { return d_holder->stringProcessLoop__setByUser__; }
+#line 58 "../../../../../src/options/strings_options"
+template <> const options::stringAbortLoop__option_t::type& Options::operator[](options::stringAbortLoop__option_t) const { return d_holder->stringAbortLoop; }
+#line 58 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringAbortLoop__option_t) const { return d_holder->stringAbortLoop__setByUser__; }
+#line 60 "../../../../../src/options/strings_options"
+template <> const options::stringInferAsLemmas__option_t::type& Options::operator[](options::stringInferAsLemmas__option_t) const { return d_holder->stringInferAsLemmas; }
+#line 60 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringInferAsLemmas__option_t) const { return d_holder->stringInferAsLemmas__setByUser__; }
+#line 62 "../../../../../src/options/strings_options"
+template <> const options::stringRExplainLemmas__option_t::type& Options::operator[](options::stringRExplainLemmas__option_t) const { return d_holder->stringRExplainLemmas; }
+#line 62 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringRExplainLemmas__option_t) const { return d_holder->stringRExplainLemmas__setByUser__; }
+#line 64 "../../../../../src/options/strings_options"
+template <> const options::stringMinPrefixExplain__option_t::type& Options::operator[](options::stringMinPrefixExplain__option_t) const { return d_holder->stringMinPrefixExplain; }
+#line 64 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringMinPrefixExplain__option_t) const { return d_holder->stringMinPrefixExplain__setByUser__; }
+#line 66 "../../../../../src/options/strings_options"
+template <> const options::stringGuessModel__option_t::type& Options::operator[](options::stringGuessModel__option_t) const { return d_holder->stringGuessModel; }
+#line 66 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringGuessModel__option_t) const { return d_holder->stringGuessModel__setByUser__; }
+#line 68 "../../../../../src/options/strings_options"
+template <> const options::stringUfReduct__option_t::type& Options::operator[](options::stringUfReduct__option_t) const { return d_holder->stringUfReduct; }
+#line 68 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringUfReduct__option_t) const { return d_holder->stringUfReduct__setByUser__; }
+#line 70 "../../../../../src/options/strings_options"
+template <> const options::stringBinaryCsp__option_t::type& Options::operator[](options::stringBinaryCsp__option_t) const { return d_holder->stringBinaryCsp; }
+#line 70 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringBinaryCsp__option_t) const { return d_holder->stringBinaryCsp__setByUser__; }
+#line 72 "../../../../../src/options/strings_options"
+template <> const options::stringLenPropCsp__option_t::type& Options::operator[](options::stringLenPropCsp__option_t) const { return d_holder->stringLenPropCsp; }
+#line 72 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringLenPropCsp__option_t) const { return d_holder->stringLenPropCsp__setByUser__; }
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/strings_options"
+struct stringExp__option_t stringExp;
+#line 12 "../../../../../src/options/strings_options"
+struct stringLB__option_t stringLB;
+#line 16 "../../../../../src/options/strings_options"
+struct stdASCII__option_t stdASCII;
+#line 19 "../../../../../src/options/strings_options"
+struct stringFMF__option_t stringFMF;
+#line 22 "../../../../../src/options/strings_options"
+struct stringEager__option_t stringEager;
+#line 25 "../../../../../src/options/strings_options"
+struct stringEIT__option_t stringEIT;
+#line 28 "../../../../../src/options/strings_options"
+struct stringOpt1__option_t stringOpt1;
+#line 31 "../../../../../src/options/strings_options"
+struct stringOpt2__option_t stringOpt2;
+#line 34 "../../../../../src/options/strings_options"
+struct stringIgnNegMembership__option_t stringIgnNegMembership;
+#line 40 "../../../../../src/options/strings_options"
+struct stringLazyPreproc__option_t stringLazyPreproc;
+#line 43 "../../../../../src/options/strings_options"
+struct stringLenGeqZ__option_t stringLenGeqZ;
+#line 46 "../../../../../src/options/strings_options"
+struct stringLenNorm__option_t stringLenNorm;
+#line 48 "../../../../../src/options/strings_options"
+struct stringSplitEmp__option_t stringSplitEmp;
+#line 50 "../../../../../src/options/strings_options"
+struct stringInferSym__option_t stringInferSym;
+#line 52 "../../../../../src/options/strings_options"
+struct stringEagerLen__option_t stringEagerLen;
+#line 54 "../../../../../src/options/strings_options"
+struct stringCheckEntailLen__option_t stringCheckEntailLen;
+#line 56 "../../../../../src/options/strings_options"
+struct stringProcessLoop__option_t stringProcessLoop;
+#line 58 "../../../../../src/options/strings_options"
+struct stringAbortLoop__option_t stringAbortLoop;
+#line 60 "../../../../../src/options/strings_options"
+struct stringInferAsLemmas__option_t stringInferAsLemmas;
+#line 62 "../../../../../src/options/strings_options"
+struct stringRExplainLemmas__option_t stringRExplainLemmas;
+#line 64 "../../../../../src/options/strings_options"
+struct stringMinPrefixExplain__option_t stringMinPrefixExplain;
+#line 66 "../../../../../src/options/strings_options"
+struct stringGuessModel__option_t stringGuessModel;
+#line 68 "../../../../../src/options/strings_options"
+struct stringUfReduct__option_t stringUfReduct;
+#line 70 "../../../../../src/options/strings_options"
+struct stringBinaryCsp__option_t stringBinaryCsp;
+#line 72 "../../../../../src/options/strings_options"
+struct stringLenPropCsp__option_t stringLenPropCsp;
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/strings_options.h b/src/options/strings_options.h
new file mode 100644
index 0000000..e4a6817
--- /dev/null
+++ b/src/options/strings_options.h
@@ -0,0 +1,437 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__STRINGS_H
+#define __CVC4__OPTIONS__STRINGS_H
+
+#include "options/options.h"
+
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__STRINGS__FOR_OPTION_HOLDER \
+  stringExp__option_t::type stringExp; \
+  bool stringExp__setByUser__; \
+  stringLB__option_t::type stringLB; \
+  bool stringLB__setByUser__; \
+  stdASCII__option_t::type stdASCII; \
+  bool stdASCII__setByUser__; \
+  stringFMF__option_t::type stringFMF; \
+  bool stringFMF__setByUser__; \
+  stringEager__option_t::type stringEager; \
+  bool stringEager__setByUser__; \
+  stringEIT__option_t::type stringEIT; \
+  bool stringEIT__setByUser__; \
+  stringOpt1__option_t::type stringOpt1; \
+  bool stringOpt1__setByUser__; \
+  stringOpt2__option_t::type stringOpt2; \
+  bool stringOpt2__setByUser__; \
+  stringIgnNegMembership__option_t::type stringIgnNegMembership; \
+  bool stringIgnNegMembership__setByUser__; \
+  stringLazyPreproc__option_t::type stringLazyPreproc; \
+  bool stringLazyPreproc__setByUser__; \
+  stringLenGeqZ__option_t::type stringLenGeqZ; \
+  bool stringLenGeqZ__setByUser__; \
+  stringLenNorm__option_t::type stringLenNorm; \
+  bool stringLenNorm__setByUser__; \
+  stringSplitEmp__option_t::type stringSplitEmp; \
+  bool stringSplitEmp__setByUser__; \
+  stringInferSym__option_t::type stringInferSym; \
+  bool stringInferSym__setByUser__; \
+  stringEagerLen__option_t::type stringEagerLen; \
+  bool stringEagerLen__setByUser__; \
+  stringCheckEntailLen__option_t::type stringCheckEntailLen; \
+  bool stringCheckEntailLen__setByUser__; \
+  stringProcessLoop__option_t::type stringProcessLoop; \
+  bool stringProcessLoop__setByUser__; \
+  stringAbortLoop__option_t::type stringAbortLoop; \
+  bool stringAbortLoop__setByUser__; \
+  stringInferAsLemmas__option_t::type stringInferAsLemmas; \
+  bool stringInferAsLemmas__setByUser__; \
+  stringRExplainLemmas__option_t::type stringRExplainLemmas; \
+  bool stringRExplainLemmas__setByUser__; \
+  stringMinPrefixExplain__option_t::type stringMinPrefixExplain; \
+  bool stringMinPrefixExplain__setByUser__; \
+  stringGuessModel__option_t::type stringGuessModel; \
+  bool stringGuessModel__setByUser__; \
+  stringUfReduct__option_t::type stringUfReduct; \
+  bool stringUfReduct__setByUser__; \
+  stringBinaryCsp__option_t::type stringBinaryCsp; \
+  bool stringBinaryCsp__setByUser__; \
+  stringLenPropCsp__option_t::type stringLenPropCsp; \
+  bool stringLenPropCsp__setByUser__;
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringExp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } stringExp CVC4_PUBLIC;
+#line 12 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringLB__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } stringLB CVC4_PUBLIC;
+#line 16 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stdASCII__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stdASCII CVC4_PUBLIC;
+#line 19 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringFMF__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } stringFMF CVC4_PUBLIC;
+#line 22 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringEager__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringEager CVC4_PUBLIC;
+#line 25 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringEIT__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringEIT CVC4_PUBLIC;
+#line 28 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringOpt1__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringOpt1 CVC4_PUBLIC;
+#line 31 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringOpt2__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringOpt2 CVC4_PUBLIC;
+#line 34 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringIgnNegMembership__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringIgnNegMembership CVC4_PUBLIC;
+#line 40 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringLazyPreproc__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringLazyPreproc CVC4_PUBLIC;
+#line 43 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringLenGeqZ__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringLenGeqZ CVC4_PUBLIC;
+#line 46 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringLenNorm__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringLenNorm CVC4_PUBLIC;
+#line 48 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringSplitEmp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringSplitEmp CVC4_PUBLIC;
+#line 50 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringInferSym__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringInferSym CVC4_PUBLIC;
+#line 52 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringEagerLen__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringEagerLen CVC4_PUBLIC;
+#line 54 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringCheckEntailLen__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringCheckEntailLen CVC4_PUBLIC;
+#line 56 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringProcessLoop__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringProcessLoop CVC4_PUBLIC;
+#line 58 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringAbortLoop__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringAbortLoop CVC4_PUBLIC;
+#line 60 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringInferAsLemmas__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringInferAsLemmas CVC4_PUBLIC;
+#line 62 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringRExplainLemmas__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringRExplainLemmas CVC4_PUBLIC;
+#line 64 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringMinPrefixExplain__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringMinPrefixExplain CVC4_PUBLIC;
+#line 66 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringGuessModel__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringGuessModel CVC4_PUBLIC;
+#line 68 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringUfReduct__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringUfReduct CVC4_PUBLIC;
+#line 70 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringBinaryCsp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringBinaryCsp CVC4_PUBLIC;
+#line 72 "../../../../../src/options/strings_options"
+extern struct CVC4_PUBLIC stringLenPropCsp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringLenPropCsp CVC4_PUBLIC;
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+#line 8 "../../../../../src/options/strings_options"
+template <> void Options::set(options::stringExp__option_t, const options::stringExp__option_t::type& x);
+#line 8 "../../../../../src/options/strings_options"
+template <> const options::stringExp__option_t::type& Options::operator[](options::stringExp__option_t) const;
+#line 8 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringExp__option_t) const;
+#line 8 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringExp__option_t, std::string option, bool value);
+#line 12 "../../../../../src/options/strings_options"
+template <> const options::stringLB__option_t::type& Options::operator[](options::stringLB__option_t) const;
+#line 12 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringLB__option_t) const;
+#line 12 "../../../../../src/options/strings_options"
+template <> void Options::assign(options::stringLB__option_t, std::string option, std::string value);
+#line 16 "../../../../../src/options/strings_options"
+template <> const options::stdASCII__option_t::type& Options::operator[](options::stdASCII__option_t) const;
+#line 16 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stdASCII__option_t) const;
+#line 16 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stdASCII__option_t, std::string option, bool value);
+#line 19 "../../../../../src/options/strings_options"
+template <> void Options::set(options::stringFMF__option_t, const options::stringFMF__option_t::type& x);
+#line 19 "../../../../../src/options/strings_options"
+template <> const options::stringFMF__option_t::type& Options::operator[](options::stringFMF__option_t) const;
+#line 19 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringFMF__option_t) const;
+#line 19 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringFMF__option_t, std::string option, bool value);
+#line 22 "../../../../../src/options/strings_options"
+template <> const options::stringEager__option_t::type& Options::operator[](options::stringEager__option_t) const;
+#line 22 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringEager__option_t) const;
+#line 22 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringEager__option_t, std::string option, bool value);
+#line 25 "../../../../../src/options/strings_options"
+template <> const options::stringEIT__option_t::type& Options::operator[](options::stringEIT__option_t) const;
+#line 25 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringEIT__option_t) const;
+#line 25 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringEIT__option_t, std::string option, bool value);
+#line 28 "../../../../../src/options/strings_options"
+template <> const options::stringOpt1__option_t::type& Options::operator[](options::stringOpt1__option_t) const;
+#line 28 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringOpt1__option_t) const;
+#line 28 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringOpt1__option_t, std::string option, bool value);
+#line 31 "../../../../../src/options/strings_options"
+template <> const options::stringOpt2__option_t::type& Options::operator[](options::stringOpt2__option_t) const;
+#line 31 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringOpt2__option_t) const;
+#line 31 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringOpt2__option_t, std::string option, bool value);
+#line 34 "../../../../../src/options/strings_options"
+template <> const options::stringIgnNegMembership__option_t::type& Options::operator[](options::stringIgnNegMembership__option_t) const;
+#line 34 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringIgnNegMembership__option_t) const;
+#line 34 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringIgnNegMembership__option_t, std::string option, bool value);
+#line 40 "../../../../../src/options/strings_options"
+template <> const options::stringLazyPreproc__option_t::type& Options::operator[](options::stringLazyPreproc__option_t) const;
+#line 40 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringLazyPreproc__option_t) const;
+#line 40 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringLazyPreproc__option_t, std::string option, bool value);
+#line 43 "../../../../../src/options/strings_options"
+template <> const options::stringLenGeqZ__option_t::type& Options::operator[](options::stringLenGeqZ__option_t) const;
+#line 43 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringLenGeqZ__option_t) const;
+#line 43 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringLenGeqZ__option_t, std::string option, bool value);
+#line 46 "../../../../../src/options/strings_options"
+template <> const options::stringLenNorm__option_t::type& Options::operator[](options::stringLenNorm__option_t) const;
+#line 46 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringLenNorm__option_t) const;
+#line 46 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringLenNorm__option_t, std::string option, bool value);
+#line 48 "../../../../../src/options/strings_options"
+template <> const options::stringSplitEmp__option_t::type& Options::operator[](options::stringSplitEmp__option_t) const;
+#line 48 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringSplitEmp__option_t) const;
+#line 48 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringSplitEmp__option_t, std::string option, bool value);
+#line 50 "../../../../../src/options/strings_options"
+template <> const options::stringInferSym__option_t::type& Options::operator[](options::stringInferSym__option_t) const;
+#line 50 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringInferSym__option_t) const;
+#line 50 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringInferSym__option_t, std::string option, bool value);
+#line 52 "../../../../../src/options/strings_options"
+template <> const options::stringEagerLen__option_t::type& Options::operator[](options::stringEagerLen__option_t) const;
+#line 52 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringEagerLen__option_t) const;
+#line 52 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringEagerLen__option_t, std::string option, bool value);
+#line 54 "../../../../../src/options/strings_options"
+template <> const options::stringCheckEntailLen__option_t::type& Options::operator[](options::stringCheckEntailLen__option_t) const;
+#line 54 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringCheckEntailLen__option_t) const;
+#line 54 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringCheckEntailLen__option_t, std::string option, bool value);
+#line 56 "../../../../../src/options/strings_options"
+template <> const options::stringProcessLoop__option_t::type& Options::operator[](options::stringProcessLoop__option_t) const;
+#line 56 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringProcessLoop__option_t) const;
+#line 56 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringProcessLoop__option_t, std::string option, bool value);
+#line 58 "../../../../../src/options/strings_options"
+template <> const options::stringAbortLoop__option_t::type& Options::operator[](options::stringAbortLoop__option_t) const;
+#line 58 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringAbortLoop__option_t) const;
+#line 58 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringAbortLoop__option_t, std::string option, bool value);
+#line 60 "../../../../../src/options/strings_options"
+template <> const options::stringInferAsLemmas__option_t::type& Options::operator[](options::stringInferAsLemmas__option_t) const;
+#line 60 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringInferAsLemmas__option_t) const;
+#line 60 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringInferAsLemmas__option_t, std::string option, bool value);
+#line 62 "../../../../../src/options/strings_options"
+template <> const options::stringRExplainLemmas__option_t::type& Options::operator[](options::stringRExplainLemmas__option_t) const;
+#line 62 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringRExplainLemmas__option_t) const;
+#line 62 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringRExplainLemmas__option_t, std::string option, bool value);
+#line 64 "../../../../../src/options/strings_options"
+template <> const options::stringMinPrefixExplain__option_t::type& Options::operator[](options::stringMinPrefixExplain__option_t) const;
+#line 64 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringMinPrefixExplain__option_t) const;
+#line 64 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringMinPrefixExplain__option_t, std::string option, bool value);
+#line 66 "../../../../../src/options/strings_options"
+template <> const options::stringGuessModel__option_t::type& Options::operator[](options::stringGuessModel__option_t) const;
+#line 66 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringGuessModel__option_t) const;
+#line 66 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringGuessModel__option_t, std::string option, bool value);
+#line 68 "../../../../../src/options/strings_options"
+template <> const options::stringUfReduct__option_t::type& Options::operator[](options::stringUfReduct__option_t) const;
+#line 68 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringUfReduct__option_t) const;
+#line 68 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringUfReduct__option_t, std::string option, bool value);
+#line 70 "../../../../../src/options/strings_options"
+template <> const options::stringBinaryCsp__option_t::type& Options::operator[](options::stringBinaryCsp__option_t) const;
+#line 70 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringBinaryCsp__option_t) const;
+#line 70 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringBinaryCsp__option_t, std::string option, bool value);
+#line 72 "../../../../../src/options/strings_options"
+template <> const options::stringLenPropCsp__option_t::type& Options::operator[](options::stringLenPropCsp__option_t) const;
+#line 72 "../../../../../src/options/strings_options"
+template <> bool Options::wasSetByUser(options::stringLenPropCsp__option_t) const;
+#line 72 "../../../../../src/options/strings_options"
+template <> void Options::assignBool(options::stringLenPropCsp__option_t, std::string option, bool value);
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/strings_options"
+inline stringExp__option_t::type stringExp__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 8 "../../../../../src/options/strings_options"
+inline bool stringExp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 8 "../../../../../src/options/strings_options"
+inline void stringExp__option_t::set(const stringExp__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 12 "../../../../../src/options/strings_options"
+inline stringLB__option_t::type stringLB__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 12 "../../../../../src/options/strings_options"
+inline bool stringLB__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 16 "../../../../../src/options/strings_options"
+inline stdASCII__option_t::type stdASCII__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 16 "../../../../../src/options/strings_options"
+inline bool stdASCII__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 19 "../../../../../src/options/strings_options"
+inline stringFMF__option_t::type stringFMF__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 19 "../../../../../src/options/strings_options"
+inline bool stringFMF__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 19 "../../../../../src/options/strings_options"
+inline void stringFMF__option_t::set(const stringFMF__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 22 "../../../../../src/options/strings_options"
+inline stringEager__option_t::type stringEager__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 22 "../../../../../src/options/strings_options"
+inline bool stringEager__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 25 "../../../../../src/options/strings_options"
+inline stringEIT__option_t::type stringEIT__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 25 "../../../../../src/options/strings_options"
+inline bool stringEIT__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 28 "../../../../../src/options/strings_options"
+inline stringOpt1__option_t::type stringOpt1__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 28 "../../../../../src/options/strings_options"
+inline bool stringOpt1__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 31 "../../../../../src/options/strings_options"
+inline stringOpt2__option_t::type stringOpt2__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 31 "../../../../../src/options/strings_options"
+inline bool stringOpt2__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 34 "../../../../../src/options/strings_options"
+inline stringIgnNegMembership__option_t::type stringIgnNegMembership__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 34 "../../../../../src/options/strings_options"
+inline bool stringIgnNegMembership__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 40 "../../../../../src/options/strings_options"
+inline stringLazyPreproc__option_t::type stringLazyPreproc__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 40 "../../../../../src/options/strings_options"
+inline bool stringLazyPreproc__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 43 "../../../../../src/options/strings_options"
+inline stringLenGeqZ__option_t::type stringLenGeqZ__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 43 "../../../../../src/options/strings_options"
+inline bool stringLenGeqZ__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 46 "../../../../../src/options/strings_options"
+inline stringLenNorm__option_t::type stringLenNorm__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 46 "../../../../../src/options/strings_options"
+inline bool stringLenNorm__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 48 "../../../../../src/options/strings_options"
+inline stringSplitEmp__option_t::type stringSplitEmp__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 48 "../../../../../src/options/strings_options"
+inline bool stringSplitEmp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 50 "../../../../../src/options/strings_options"
+inline stringInferSym__option_t::type stringInferSym__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 50 "../../../../../src/options/strings_options"
+inline bool stringInferSym__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 52 "../../../../../src/options/strings_options"
+inline stringEagerLen__option_t::type stringEagerLen__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 52 "../../../../../src/options/strings_options"
+inline bool stringEagerLen__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 54 "../../../../../src/options/strings_options"
+inline stringCheckEntailLen__option_t::type stringCheckEntailLen__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 54 "../../../../../src/options/strings_options"
+inline bool stringCheckEntailLen__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 56 "../../../../../src/options/strings_options"
+inline stringProcessLoop__option_t::type stringProcessLoop__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 56 "../../../../../src/options/strings_options"
+inline bool stringProcessLoop__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 58 "../../../../../src/options/strings_options"
+inline stringAbortLoop__option_t::type stringAbortLoop__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 58 "../../../../../src/options/strings_options"
+inline bool stringAbortLoop__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 60 "../../../../../src/options/strings_options"
+inline stringInferAsLemmas__option_t::type stringInferAsLemmas__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 60 "../../../../../src/options/strings_options"
+inline bool stringInferAsLemmas__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 62 "../../../../../src/options/strings_options"
+inline stringRExplainLemmas__option_t::type stringRExplainLemmas__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 62 "../../../../../src/options/strings_options"
+inline bool stringRExplainLemmas__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 64 "../../../../../src/options/strings_options"
+inline stringMinPrefixExplain__option_t::type stringMinPrefixExplain__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 64 "../../../../../src/options/strings_options"
+inline bool stringMinPrefixExplain__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 66 "../../../../../src/options/strings_options"
+inline stringGuessModel__option_t::type stringGuessModel__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 66 "../../../../../src/options/strings_options"
+inline bool stringGuessModel__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 68 "../../../../../src/options/strings_options"
+inline stringUfReduct__option_t::type stringUfReduct__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 68 "../../../../../src/options/strings_options"
+inline bool stringUfReduct__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 70 "../../../../../src/options/strings_options"
+inline stringBinaryCsp__option_t::type stringBinaryCsp__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 70 "../../../../../src/options/strings_options"
+inline bool stringBinaryCsp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 72 "../../../../../src/options/strings_options"
+inline stringLenPropCsp__option_t::type stringLenPropCsp__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 72 "../../../../../src/options/strings_options"
+inline bool stringLenPropCsp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__STRINGS_H */
diff --git a/src/options/theory_options b/src/options/theory_options
new file mode 100644
index 0000000..131b5fb
--- /dev/null
+++ b/src/options/theory_options
@@ -0,0 +1,14 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module THEORY "options/theory_options.h" Theory layer
+
+expert-option theoryOfMode theoryof-mode --theoryof-mode=MODE CVC4::theory::TheoryOfMode :handler stringToTheoryOfMode :default CVC4::theory::THEORY_OF_TYPE_BASED :include "options/theoryof_mode.h" :read-write
+ mode for Theory::theoryof()
+
+option useTheoryList use-theory --use-theory=NAME std::string :handler handleUseTheoryList :notify notifyUseTheoryList
+ use alternate theory implementation NAME (--use-theory=help for a list). This option may be repeated or a comma separated list.
+
+endmodule
diff --git a/src/options/theory_options.cpp b/src/options/theory_options.cpp
new file mode 100644
index 0000000..b6e2cac
--- /dev/null
+++ b/src/options/theory_options.cpp
@@ -0,0 +1,47 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+#line 8 "../../../../../src/options/theory_options"
+template <> void Options::set(options::theoryOfMode__option_t, const options::theoryOfMode__option_t::type& x) { d_holder->theoryOfMode = x; }
+#line 8 "../../../../../src/options/theory_options"
+template <> const options::theoryOfMode__option_t::type& Options::operator[](options::theoryOfMode__option_t) const { return d_holder->theoryOfMode; }
+#line 8 "../../../../../src/options/theory_options"
+template <> bool Options::wasSetByUser(options::theoryOfMode__option_t) const { return d_holder->theoryOfMode__setByUser__; }
+#line 11 "../../../../../src/options/theory_options"
+template <> const options::useTheoryList__option_t::type& Options::operator[](options::useTheoryList__option_t) const { return d_holder->useTheoryList; }
+#line 11 "../../../../../src/options/theory_options"
+template <> bool Options::wasSetByUser(options::useTheoryList__option_t) const { return d_holder->useTheoryList__setByUser__; }
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/theory_options"
+struct theoryOfMode__option_t theoryOfMode;
+#line 11 "../../../../../src/options/theory_options"
+struct useTheoryList__option_t useTheoryList;
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/theory_options.h b/src/options/theory_options.h
new file mode 100644
index 0000000..d6b55c7
--- /dev/null
+++ b/src/options/theory_options.h
@@ -0,0 +1,90 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__THEORY_H
+#define __CVC4__OPTIONS__THEORY_H
+
+#include "options/options.h"
+
+#line 8 "../../../../../src/options/theory_options"
+#include "options/theoryof_mode.h"
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__THEORY__FOR_OPTION_HOLDER \
+  theoryOfMode__option_t::type theoryOfMode; \
+  bool theoryOfMode__setByUser__; \
+  useTheoryList__option_t::type useTheoryList; \
+  bool useTheoryList__setByUser__;
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/theory_options"
+extern struct CVC4_PUBLIC theoryOfMode__option_t { typedef CVC4::theory::TheoryOfMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } theoryOfMode CVC4_PUBLIC;
+#line 11 "../../../../../src/options/theory_options"
+extern struct CVC4_PUBLIC useTheoryList__option_t { typedef std::string type; type operator()() const; bool wasSetByUser() const; } useTheoryList CVC4_PUBLIC;
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+#line 8 "../../../../../src/options/theory_options"
+template <> void Options::set(options::theoryOfMode__option_t, const options::theoryOfMode__option_t::type& x);
+#line 8 "../../../../../src/options/theory_options"
+template <> const options::theoryOfMode__option_t::type& Options::operator[](options::theoryOfMode__option_t) const;
+#line 8 "../../../../../src/options/theory_options"
+template <> bool Options::wasSetByUser(options::theoryOfMode__option_t) const;
+#line 8 "../../../../../src/options/theory_options"
+template <> void Options::assign(options::theoryOfMode__option_t, std::string option, std::string value);
+#line 11 "../../../../../src/options/theory_options"
+template <> const options::useTheoryList__option_t::type& Options::operator[](options::useTheoryList__option_t) const;
+#line 11 "../../../../../src/options/theory_options"
+template <> bool Options::wasSetByUser(options::useTheoryList__option_t) const;
+#line 11 "../../../../../src/options/theory_options"
+template <> void Options::assign(options::useTheoryList__option_t, std::string option, std::string value);
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/theory_options"
+inline theoryOfMode__option_t::type theoryOfMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 8 "../../../../../src/options/theory_options"
+inline bool theoryOfMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 8 "../../../../../src/options/theory_options"
+inline void theoryOfMode__option_t::set(const theoryOfMode__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 11 "../../../../../src/options/theory_options"
+inline useTheoryList__option_t::type useTheoryList__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 11 "../../../../../src/options/theory_options"
+inline bool useTheoryList__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__THEORY_H */
diff --git a/src/options/theoryof_mode.cpp b/src/options/theoryof_mode.cpp
new file mode 100644
index 0000000..cf71780
--- /dev/null
+++ b/src/options/theoryof_mode.cpp
@@ -0,0 +1,38 @@
+/*********************                                                        */
+/*! \file theoryof_mode.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+
+#include "options/theoryof_mode.h"
+
+#include <ostream>
+#include "base/cvc4_assert.h"
+
+namespace CVC4 {
+namespace theory {
+
+std::ostream& operator<<(std::ostream& out, TheoryOfMode m) throw() {
+  switch(m) {
+  case THEORY_OF_TYPE_BASED: return out << "THEORY_OF_TYPE_BASED";
+  case THEORY_OF_TERM_BASED: return out << "THEORY_OF_TERM_BASED";
+  default: return out << "TheoryOfMode!UNKNOWN";
+  }
+
+  Unreachable();
+}
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/options/theoryof_mode.h b/src/options/theoryof_mode.h
new file mode 100644
index 0000000..98f05a1
--- /dev/null
+++ b/src/options/theoryof_mode.h
@@ -0,0 +1,38 @@
+/*********************                                                        */
+/*! \file theoryof_mode.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Option selection for theoryOf() operation
+ **
+ ** Option selection for theoryOf() operation.
+ **/
+
+#include "cvc4_public.h"
+
+#pragma once
+
+#include <ostream>
+
+namespace CVC4 {
+namespace theory {
+
+/** How do we associate theories with the terms */
+enum TheoryOfMode {
+  /** Equality, variables and constants are associated with the types */
+  THEORY_OF_TYPE_BASED,
+  /** Variables are uninterpreted, constants are with the type, equalities prefer parametric */
+  THEORY_OF_TERM_BASED
+};/* enum TheoryOfMode */
+
+std::ostream& operator<<(std::ostream& out, TheoryOfMode m) throw() CVC4_PUBLIC;
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
diff --git a/src/options/uf_options b/src/options/uf_options
new file mode 100644
index 0000000..cbac04b
--- /dev/null
+++ b/src/options/uf_options
@@ -0,0 +1,44 @@
+#
+# Option specification file for CVC4
+# See src/options/base_options for a description of this file format
+#
+
+module UF "options/uf_options.h" Uninterpreted functions theory
+
+option ufSymmetryBreaker uf-symmetry-breaker --symmetry-breaker bool :read-write :default true
+ use UF symmetry breaker (Deharbe et al., CADE 2011)
+
+option condenseFunctionValues condense-function-values --condense-function-values bool :default true
+ condense models for functions rather than explicitly representing them
+
+option ufssRegions --uf-ss-regions bool :default true
+ disable region-based method for discovering cliques and splits in uf strong solver
+option ufssEagerSplits --uf-ss-eager-split bool :default false
+ add splits eagerly for uf strong solver
+option ufssTotality --uf-ss-totality bool :default false
+ always use totality axioms for enforcing cardinality constraints
+option ufssTotalityLimited --uf-ss-totality-limited=N int :default -1
+ apply totality axioms, but only up to cardinality N (-1 == do not apply totality axioms, default)
+option ufssTotalitySymBreak --uf-ss-totality-sym-break bool :default false
+ apply symmetry breaking for totality axioms
+option ufssAbortCardinality --uf-ss-abort-card=N int :default -1
+ tells the uf strong solver a cardinality to abort at (-1 == no limit, default)
+option ufssExplainedCliques --uf-ss-explained-cliques bool :default false
+ 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
+option ufssDiseqPropagation --uf-ss-deq-prop bool :default false
+ eagerly propagate disequalities for uf strong solver
+option ufssMode --uf-ss=MODE CVC4::theory::uf::UfssMode :default CVC4::theory::uf::UF_SS_FULL :include "options/ufss_mode.h" :handler stringToUfssMode
+ mode of operation for uf strong solver.
+option ufssCliqueSplits --uf-ss-clique-splits bool :default false
+ use cliques instead of splitting on demand to shrink model
+
+option ufssSymBreak --uf-ss-sym-break bool :default false
+ finite model finding symmetry breaking techniques
+option ufssFairness --uf-ss-fair bool :default true
+ use fair strategy for finite model finding multiple sorts
+option ufssFairnessMonotone --uf-ss-fair-monotone bool :read-write :default false
+ group monotone sorts when enforcing fairness for finite model finding
+
+endmodule
diff --git a/src/options/uf_options.cpp b/src/options/uf_options.cpp
new file mode 100644
index 0000000..ab5904c
--- /dev/null
+++ b/src/options/uf_options.cpp
@@ -0,0 +1,133 @@
+/*********************                                                        */
+/*! \file base_options_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "options/options_holder.h"
+
+namespace CVC4 {
+
+
+#line 8 "../../../../../src/options/uf_options"
+template <> void Options::set(options::ufSymmetryBreaker__option_t, const options::ufSymmetryBreaker__option_t::type& x) { d_holder->ufSymmetryBreaker = x; }
+#line 8 "../../../../../src/options/uf_options"
+template <> const options::ufSymmetryBreaker__option_t::type& Options::operator[](options::ufSymmetryBreaker__option_t) const { return d_holder->ufSymmetryBreaker; }
+#line 8 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufSymmetryBreaker__option_t) const { return d_holder->ufSymmetryBreaker__setByUser__; }
+#line 11 "../../../../../src/options/uf_options"
+template <> const options::condenseFunctionValues__option_t::type& Options::operator[](options::condenseFunctionValues__option_t) const { return d_holder->condenseFunctionValues; }
+#line 11 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::condenseFunctionValues__option_t) const { return d_holder->condenseFunctionValues__setByUser__; }
+#line 14 "../../../../../src/options/uf_options"
+template <> const options::ufssRegions__option_t::type& Options::operator[](options::ufssRegions__option_t) const { return d_holder->ufssRegions; }
+#line 14 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssRegions__option_t) const { return d_holder->ufssRegions__setByUser__; }
+#line 16 "../../../../../src/options/uf_options"
+template <> const options::ufssEagerSplits__option_t::type& Options::operator[](options::ufssEagerSplits__option_t) const { return d_holder->ufssEagerSplits; }
+#line 16 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssEagerSplits__option_t) const { return d_holder->ufssEagerSplits__setByUser__; }
+#line 18 "../../../../../src/options/uf_options"
+template <> const options::ufssTotality__option_t::type& Options::operator[](options::ufssTotality__option_t) const { return d_holder->ufssTotality; }
+#line 18 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssTotality__option_t) const { return d_holder->ufssTotality__setByUser__; }
+#line 20 "../../../../../src/options/uf_options"
+template <> const options::ufssTotalityLimited__option_t::type& Options::operator[](options::ufssTotalityLimited__option_t) const { return d_holder->ufssTotalityLimited; }
+#line 20 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssTotalityLimited__option_t) const { return d_holder->ufssTotalityLimited__setByUser__; }
+#line 22 "../../../../../src/options/uf_options"
+template <> const options::ufssTotalitySymBreak__option_t::type& Options::operator[](options::ufssTotalitySymBreak__option_t) const { return d_holder->ufssTotalitySymBreak; }
+#line 22 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssTotalitySymBreak__option_t) const { return d_holder->ufssTotalitySymBreak__setByUser__; }
+#line 24 "../../../../../src/options/uf_options"
+template <> const options::ufssAbortCardinality__option_t::type& Options::operator[](options::ufssAbortCardinality__option_t) const { return d_holder->ufssAbortCardinality; }
+#line 24 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssAbortCardinality__option_t) const { return d_holder->ufssAbortCardinality__setByUser__; }
+#line 26 "../../../../../src/options/uf_options"
+template <> const options::ufssExplainedCliques__option_t::type& Options::operator[](options::ufssExplainedCliques__option_t) const { return d_holder->ufssExplainedCliques; }
+#line 26 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssExplainedCliques__option_t) const { return d_holder->ufssExplainedCliques__setByUser__; }
+#line 28 "../../../../../src/options/uf_options"
+template <> const options::ufssSimpleCliques__option_t::type& Options::operator[](options::ufssSimpleCliques__option_t) const { return d_holder->ufssSimpleCliques; }
+#line 28 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssSimpleCliques__option_t) const { return d_holder->ufssSimpleCliques__setByUser__; }
+#line 30 "../../../../../src/options/uf_options"
+template <> const options::ufssDiseqPropagation__option_t::type& Options::operator[](options::ufssDiseqPropagation__option_t) const { return d_holder->ufssDiseqPropagation; }
+#line 30 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssDiseqPropagation__option_t) const { return d_holder->ufssDiseqPropagation__setByUser__; }
+#line 32 "../../../../../src/options/uf_options"
+template <> const options::ufssMode__option_t::type& Options::operator[](options::ufssMode__option_t) const { return d_holder->ufssMode; }
+#line 32 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssMode__option_t) const { return d_holder->ufssMode__setByUser__; }
+#line 34 "../../../../../src/options/uf_options"
+template <> const options::ufssCliqueSplits__option_t::type& Options::operator[](options::ufssCliqueSplits__option_t) const { return d_holder->ufssCliqueSplits; }
+#line 34 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssCliqueSplits__option_t) const { return d_holder->ufssCliqueSplits__setByUser__; }
+#line 37 "../../../../../src/options/uf_options"
+template <> const options::ufssSymBreak__option_t::type& Options::operator[](options::ufssSymBreak__option_t) const { return d_holder->ufssSymBreak; }
+#line 37 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssSymBreak__option_t) const { return d_holder->ufssSymBreak__setByUser__; }
+#line 39 "../../../../../src/options/uf_options"
+template <> const options::ufssFairness__option_t::type& Options::operator[](options::ufssFairness__option_t) const { return d_holder->ufssFairness; }
+#line 39 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssFairness__option_t) const { return d_holder->ufssFairness__setByUser__; }
+#line 41 "../../../../../src/options/uf_options"
+template <> void Options::set(options::ufssFairnessMonotone__option_t, const options::ufssFairnessMonotone__option_t::type& x) { d_holder->ufssFairnessMonotone = x; }
+#line 41 "../../../../../src/options/uf_options"
+template <> const options::ufssFairnessMonotone__option_t::type& Options::operator[](options::ufssFairnessMonotone__option_t) const { return d_holder->ufssFairnessMonotone; }
+#line 41 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssFairnessMonotone__option_t) const { return d_holder->ufssFairnessMonotone__setByUser__; }
+
+#line 24 "../../../../../src/options/base_options_template.cpp"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/uf_options"
+struct ufSymmetryBreaker__option_t ufSymmetryBreaker;
+#line 11 "../../../../../src/options/uf_options"
+struct condenseFunctionValues__option_t condenseFunctionValues;
+#line 14 "../../../../../src/options/uf_options"
+struct ufssRegions__option_t ufssRegions;
+#line 16 "../../../../../src/options/uf_options"
+struct ufssEagerSplits__option_t ufssEagerSplits;
+#line 18 "../../../../../src/options/uf_options"
+struct ufssTotality__option_t ufssTotality;
+#line 20 "../../../../../src/options/uf_options"
+struct ufssTotalityLimited__option_t ufssTotalityLimited;
+#line 22 "../../../../../src/options/uf_options"
+struct ufssTotalitySymBreak__option_t ufssTotalitySymBreak;
+#line 24 "../../../../../src/options/uf_options"
+struct ufssAbortCardinality__option_t ufssAbortCardinality;
+#line 26 "../../../../../src/options/uf_options"
+struct ufssExplainedCliques__option_t ufssExplainedCliques;
+#line 28 "../../../../../src/options/uf_options"
+struct ufssSimpleCliques__option_t ufssSimpleCliques;
+#line 30 "../../../../../src/options/uf_options"
+struct ufssDiseqPropagation__option_t ufssDiseqPropagation;
+#line 32 "../../../../../src/options/uf_options"
+struct ufssMode__option_t ufssMode;
+#line 34 "../../../../../src/options/uf_options"
+struct ufssCliqueSplits__option_t ufssCliqueSplits;
+#line 37 "../../../../../src/options/uf_options"
+struct ufssSymBreak__option_t ufssSymBreak;
+#line 39 "../../../../../src/options/uf_options"
+struct ufssFairness__option_t ufssFairness;
+#line 41 "../../../../../src/options/uf_options"
+struct ufssFairnessMonotone__option_t ufssFairnessMonotone;
+
+#line 30 "../../../../../src/options/base_options_template.cpp"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
diff --git a/src/options/uf_options.h b/src/options/uf_options.h
new file mode 100644
index 0000000..52aa340
--- /dev/null
+++ b/src/options/uf_options.h
@@ -0,0 +1,304 @@
+/*********************                                                        */
+/*! \file base_options_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains code for handling command-line options.
+ **
+ ** Contains code for handling command-line options
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__OPTIONS__UF_H
+#define __CVC4__OPTIONS__UF_H
+
+#include "options/options.h"
+
+#line 32 "../../../../../src/options/uf_options"
+#include "options/ufss_mode.h"
+
+#line 26 "../../../../../src/options/base_options_template.h"
+
+#define CVC4_OPTIONS__UF__FOR_OPTION_HOLDER \
+  ufSymmetryBreaker__option_t::type ufSymmetryBreaker; \
+  bool ufSymmetryBreaker__setByUser__; \
+  condenseFunctionValues__option_t::type condenseFunctionValues; \
+  bool condenseFunctionValues__setByUser__; \
+  ufssRegions__option_t::type ufssRegions; \
+  bool ufssRegions__setByUser__; \
+  ufssEagerSplits__option_t::type ufssEagerSplits; \
+  bool ufssEagerSplits__setByUser__; \
+  ufssTotality__option_t::type ufssTotality; \
+  bool ufssTotality__setByUser__; \
+  ufssTotalityLimited__option_t::type ufssTotalityLimited; \
+  bool ufssTotalityLimited__setByUser__; \
+  ufssTotalitySymBreak__option_t::type ufssTotalitySymBreak; \
+  bool ufssTotalitySymBreak__setByUser__; \
+  ufssAbortCardinality__option_t::type ufssAbortCardinality; \
+  bool ufssAbortCardinality__setByUser__; \
+  ufssExplainedCliques__option_t::type ufssExplainedCliques; \
+  bool ufssExplainedCliques__setByUser__; \
+  ufssSimpleCliques__option_t::type ufssSimpleCliques; \
+  bool ufssSimpleCliques__setByUser__; \
+  ufssDiseqPropagation__option_t::type ufssDiseqPropagation; \
+  bool ufssDiseqPropagation__setByUser__; \
+  ufssMode__option_t::type ufssMode; \
+  bool ufssMode__setByUser__; \
+  ufssCliqueSplits__option_t::type ufssCliqueSplits; \
+  bool ufssCliqueSplits__setByUser__; \
+  ufssSymBreak__option_t::type ufssSymBreak; \
+  bool ufssSymBreak__setByUser__; \
+  ufssFairness__option_t::type ufssFairness; \
+  bool ufssFairness__setByUser__; \
+  ufssFairnessMonotone__option_t::type ufssFairnessMonotone; \
+  bool ufssFairnessMonotone__setByUser__;
+
+#line 30 "../../../../../src/options/base_options_template.h"
+
+namespace CVC4 {
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/uf_options"
+extern struct CVC4_PUBLIC ufSymmetryBreaker__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } ufSymmetryBreaker CVC4_PUBLIC;
+#line 11 "../../../../../src/options/uf_options"
+extern struct CVC4_PUBLIC condenseFunctionValues__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } condenseFunctionValues CVC4_PUBLIC;
+#line 14 "../../../../../src/options/uf_options"
+extern struct CVC4_PUBLIC ufssRegions__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ufssRegions CVC4_PUBLIC;
+#line 16 "../../../../../src/options/uf_options"
+extern struct CVC4_PUBLIC ufssEagerSplits__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ufssEagerSplits CVC4_PUBLIC;
+#line 18 "../../../../../src/options/uf_options"
+extern struct CVC4_PUBLIC ufssTotality__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ufssTotality CVC4_PUBLIC;
+#line 20 "../../../../../src/options/uf_options"
+extern struct CVC4_PUBLIC ufssTotalityLimited__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } ufssTotalityLimited CVC4_PUBLIC;
+#line 22 "../../../../../src/options/uf_options"
+extern struct CVC4_PUBLIC ufssTotalitySymBreak__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ufssTotalitySymBreak CVC4_PUBLIC;
+#line 24 "../../../../../src/options/uf_options"
+extern struct CVC4_PUBLIC ufssAbortCardinality__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } ufssAbortCardinality CVC4_PUBLIC;
+#line 26 "../../../../../src/options/uf_options"
+extern struct CVC4_PUBLIC ufssExplainedCliques__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ufssExplainedCliques CVC4_PUBLIC;
+#line 28 "../../../../../src/options/uf_options"
+extern struct CVC4_PUBLIC ufssSimpleCliques__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ufssSimpleCliques CVC4_PUBLIC;
+#line 30 "../../../../../src/options/uf_options"
+extern struct CVC4_PUBLIC ufssDiseqPropagation__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ufssDiseqPropagation CVC4_PUBLIC;
+#line 32 "../../../../../src/options/uf_options"
+extern struct CVC4_PUBLIC ufssMode__option_t { typedef CVC4::theory::uf::UfssMode type; type operator()() const; bool wasSetByUser() const; } ufssMode CVC4_PUBLIC;
+#line 34 "../../../../../src/options/uf_options"
+extern struct CVC4_PUBLIC ufssCliqueSplits__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ufssCliqueSplits CVC4_PUBLIC;
+#line 37 "../../../../../src/options/uf_options"
+extern struct CVC4_PUBLIC ufssSymBreak__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ufssSymBreak CVC4_PUBLIC;
+#line 39 "../../../../../src/options/uf_options"
+extern struct CVC4_PUBLIC ufssFairness__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ufssFairness CVC4_PUBLIC;
+#line 41 "../../../../../src/options/uf_options"
+extern struct CVC4_PUBLIC ufssFairnessMonotone__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } ufssFairnessMonotone CVC4_PUBLIC;
+
+#line 38 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+
+#line 8 "../../../../../src/options/uf_options"
+template <> void Options::set(options::ufSymmetryBreaker__option_t, const options::ufSymmetryBreaker__option_t::type& x);
+#line 8 "../../../../../src/options/uf_options"
+template <> const options::ufSymmetryBreaker__option_t::type& Options::operator[](options::ufSymmetryBreaker__option_t) const;
+#line 8 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufSymmetryBreaker__option_t) const;
+#line 8 "../../../../../src/options/uf_options"
+template <> void Options::assignBool(options::ufSymmetryBreaker__option_t, std::string option, bool value);
+#line 11 "../../../../../src/options/uf_options"
+template <> const options::condenseFunctionValues__option_t::type& Options::operator[](options::condenseFunctionValues__option_t) const;
+#line 11 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::condenseFunctionValues__option_t) const;
+#line 11 "../../../../../src/options/uf_options"
+template <> void Options::assignBool(options::condenseFunctionValues__option_t, std::string option, bool value);
+#line 14 "../../../../../src/options/uf_options"
+template <> const options::ufssRegions__option_t::type& Options::operator[](options::ufssRegions__option_t) const;
+#line 14 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssRegions__option_t) const;
+#line 14 "../../../../../src/options/uf_options"
+template <> void Options::assignBool(options::ufssRegions__option_t, std::string option, bool value);
+#line 16 "../../../../../src/options/uf_options"
+template <> const options::ufssEagerSplits__option_t::type& Options::operator[](options::ufssEagerSplits__option_t) const;
+#line 16 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssEagerSplits__option_t) const;
+#line 16 "../../../../../src/options/uf_options"
+template <> void Options::assignBool(options::ufssEagerSplits__option_t, std::string option, bool value);
+#line 18 "../../../../../src/options/uf_options"
+template <> const options::ufssTotality__option_t::type& Options::operator[](options::ufssTotality__option_t) const;
+#line 18 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssTotality__option_t) const;
+#line 18 "../../../../../src/options/uf_options"
+template <> void Options::assignBool(options::ufssTotality__option_t, std::string option, bool value);
+#line 20 "../../../../../src/options/uf_options"
+template <> const options::ufssTotalityLimited__option_t::type& Options::operator[](options::ufssTotalityLimited__option_t) const;
+#line 20 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssTotalityLimited__option_t) const;
+#line 20 "../../../../../src/options/uf_options"
+template <> void Options::assign(options::ufssTotalityLimited__option_t, std::string option, std::string value);
+#line 22 "../../../../../src/options/uf_options"
+template <> const options::ufssTotalitySymBreak__option_t::type& Options::operator[](options::ufssTotalitySymBreak__option_t) const;
+#line 22 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssTotalitySymBreak__option_t) const;
+#line 22 "../../../../../src/options/uf_options"
+template <> void Options::assignBool(options::ufssTotalitySymBreak__option_t, std::string option, bool value);
+#line 24 "../../../../../src/options/uf_options"
+template <> const options::ufssAbortCardinality__option_t::type& Options::operator[](options::ufssAbortCardinality__option_t) const;
+#line 24 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssAbortCardinality__option_t) const;
+#line 24 "../../../../../src/options/uf_options"
+template <> void Options::assign(options::ufssAbortCardinality__option_t, std::string option, std::string value);
+#line 26 "../../../../../src/options/uf_options"
+template <> const options::ufssExplainedCliques__option_t::type& Options::operator[](options::ufssExplainedCliques__option_t) const;
+#line 26 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssExplainedCliques__option_t) const;
+#line 26 "../../../../../src/options/uf_options"
+template <> void Options::assignBool(options::ufssExplainedCliques__option_t, std::string option, bool value);
+#line 28 "../../../../../src/options/uf_options"
+template <> const options::ufssSimpleCliques__option_t::type& Options::operator[](options::ufssSimpleCliques__option_t) const;
+#line 28 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssSimpleCliques__option_t) const;
+#line 28 "../../../../../src/options/uf_options"
+template <> void Options::assignBool(options::ufssSimpleCliques__option_t, std::string option, bool value);
+#line 30 "../../../../../src/options/uf_options"
+template <> const options::ufssDiseqPropagation__option_t::type& Options::operator[](options::ufssDiseqPropagation__option_t) const;
+#line 30 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssDiseqPropagation__option_t) const;
+#line 30 "../../../../../src/options/uf_options"
+template <> void Options::assignBool(options::ufssDiseqPropagation__option_t, std::string option, bool value);
+#line 32 "../../../../../src/options/uf_options"
+template <> const options::ufssMode__option_t::type& Options::operator[](options::ufssMode__option_t) const;
+#line 32 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssMode__option_t) const;
+#line 32 "../../../../../src/options/uf_options"
+template <> void Options::assign(options::ufssMode__option_t, std::string option, std::string value);
+#line 34 "../../../../../src/options/uf_options"
+template <> const options::ufssCliqueSplits__option_t::type& Options::operator[](options::ufssCliqueSplits__option_t) const;
+#line 34 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssCliqueSplits__option_t) const;
+#line 34 "../../../../../src/options/uf_options"
+template <> void Options::assignBool(options::ufssCliqueSplits__option_t, std::string option, bool value);
+#line 37 "../../../../../src/options/uf_options"
+template <> const options::ufssSymBreak__option_t::type& Options::operator[](options::ufssSymBreak__option_t) const;
+#line 37 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssSymBreak__option_t) const;
+#line 37 "../../../../../src/options/uf_options"
+template <> void Options::assignBool(options::ufssSymBreak__option_t, std::string option, bool value);
+#line 39 "../../../../../src/options/uf_options"
+template <> const options::ufssFairness__option_t::type& Options::operator[](options::ufssFairness__option_t) const;
+#line 39 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssFairness__option_t) const;
+#line 39 "../../../../../src/options/uf_options"
+template <> void Options::assignBool(options::ufssFairness__option_t, std::string option, bool value);
+#line 41 "../../../../../src/options/uf_options"
+template <> void Options::set(options::ufssFairnessMonotone__option_t, const options::ufssFairnessMonotone__option_t::type& x);
+#line 41 "../../../../../src/options/uf_options"
+template <> const options::ufssFairnessMonotone__option_t::type& Options::operator[](options::ufssFairnessMonotone__option_t) const;
+#line 41 "../../../../../src/options/uf_options"
+template <> bool Options::wasSetByUser(options::ufssFairnessMonotone__option_t) const;
+#line 41 "../../../../../src/options/uf_options"
+template <> void Options::assignBool(options::ufssFairnessMonotone__option_t, std::string option, bool value);
+
+#line 44 "../../../../../src/options/base_options_template.h"
+
+namespace options {
+
+
+#line 8 "../../../../../src/options/uf_options"
+inline ufSymmetryBreaker__option_t::type ufSymmetryBreaker__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 8 "../../../../../src/options/uf_options"
+inline bool ufSymmetryBreaker__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 8 "../../../../../src/options/uf_options"
+inline void ufSymmetryBreaker__option_t::set(const ufSymmetryBreaker__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 11 "../../../../../src/options/uf_options"
+inline condenseFunctionValues__option_t::type condenseFunctionValues__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 11 "../../../../../src/options/uf_options"
+inline bool condenseFunctionValues__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 14 "../../../../../src/options/uf_options"
+inline ufssRegions__option_t::type ufssRegions__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 14 "../../../../../src/options/uf_options"
+inline bool ufssRegions__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 16 "../../../../../src/options/uf_options"
+inline ufssEagerSplits__option_t::type ufssEagerSplits__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 16 "../../../../../src/options/uf_options"
+inline bool ufssEagerSplits__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 18 "../../../../../src/options/uf_options"
+inline ufssTotality__option_t::type ufssTotality__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 18 "../../../../../src/options/uf_options"
+inline bool ufssTotality__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 20 "../../../../../src/options/uf_options"
+inline ufssTotalityLimited__option_t::type ufssTotalityLimited__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 20 "../../../../../src/options/uf_options"
+inline bool ufssTotalityLimited__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 22 "../../../../../src/options/uf_options"
+inline ufssTotalitySymBreak__option_t::type ufssTotalitySymBreak__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 22 "../../../../../src/options/uf_options"
+inline bool ufssTotalitySymBreak__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 24 "../../../../../src/options/uf_options"
+inline ufssAbortCardinality__option_t::type ufssAbortCardinality__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 24 "../../../../../src/options/uf_options"
+inline bool ufssAbortCardinality__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 26 "../../../../../src/options/uf_options"
+inline ufssExplainedCliques__option_t::type ufssExplainedCliques__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 26 "../../../../../src/options/uf_options"
+inline bool ufssExplainedCliques__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 28 "../../../../../src/options/uf_options"
+inline ufssSimpleCliques__option_t::type ufssSimpleCliques__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 28 "../../../../../src/options/uf_options"
+inline bool ufssSimpleCliques__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 30 "../../../../../src/options/uf_options"
+inline ufssDiseqPropagation__option_t::type ufssDiseqPropagation__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 30 "../../../../../src/options/uf_options"
+inline bool ufssDiseqPropagation__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 32 "../../../../../src/options/uf_options"
+inline ufssMode__option_t::type ufssMode__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 32 "../../../../../src/options/uf_options"
+inline bool ufssMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 34 "../../../../../src/options/uf_options"
+inline ufssCliqueSplits__option_t::type ufssCliqueSplits__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 34 "../../../../../src/options/uf_options"
+inline bool ufssCliqueSplits__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 37 "../../../../../src/options/uf_options"
+inline ufssSymBreak__option_t::type ufssSymBreak__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 37 "../../../../../src/options/uf_options"
+inline bool ufssSymBreak__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 39 "../../../../../src/options/uf_options"
+inline ufssFairness__option_t::type ufssFairness__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 39 "../../../../../src/options/uf_options"
+inline bool ufssFairness__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 41 "../../../../../src/options/uf_options"
+inline ufssFairnessMonotone__option_t::type ufssFairnessMonotone__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 41 "../../../../../src/options/uf_options"
+inline bool ufssFairnessMonotone__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 41 "../../../../../src/options/uf_options"
+inline void ufssFairnessMonotone__option_t::set(const ufssFairnessMonotone__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 50 "../../../../../src/options/base_options_template.h"
+
+}/* CVC4::options namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTIONS__UF_H */
diff --git a/src/options/ufss_mode.h b/src/options/ufss_mode.h
new file mode 100644
index 0000000..4a4b8b4
--- /dev/null
+++ b/src/options/ufss_mode.h
@@ -0,0 +1,39 @@
+/*********************                                                        */
+/*! \file ufss_mode.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Custom handlers and predicates for TheoryUF options
+ **
+ ** Custom handlers and predicates for TheoryUF options.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__BASE__UFSS_MODE_H
+#define __CVC4__BASE__UFSS_MODE_H
+
+namespace CVC4 {
+namespace theory {
+namespace uf {
+
+enum UfssMode{
+  /** default, use uf strong solver to find minimal models for uninterpreted sorts */
+  UF_SS_FULL,
+  /** use uf strong solver to shrink model sizes, but do no enforce minimality */
+  UF_SS_NO_MINIMAL,
+  /** do not use uf strong solver */
+  UF_SS_NONE,
+};
+
+}/* CVC4::theory::uf namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__BASE__UFSS_MODE_H */
diff --git a/src/parser/Makefile.am b/src/parser/Makefile.am
new file mode 100644
index 0000000..ca10de6
--- /dev/null
+++ b/src/parser/Makefile.am
@@ -0,0 +1,63 @@
+# LIBCVC4PARSER_VERSION (-version-info) is in the form current:revision:age
+#
+# current -
+#   increment if interfaces have been added, removed or changed
+# revision -
+#   increment if source code has changed
+#   set to zero if current is incremented
+# age -
+#   increment if interfaces have been added
+#   set to zero if interfaces have been removed
+#   or changed
+#
+LIBCVC4PARSER_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4PARSERLIB \
+	-I at builddir@/.. $(ANTLR_INCLUDES) -I at srcdir@/../include -I at srcdir@/..
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
+
+SUBDIRS = smt1 smt2 cvc tptp
+
+lib_LTLIBRARIES = libcvc4parser.la
+
+libcvc4parser_la_LDFLAGS = $(ANTLR_LDFLAGS) \
+	-version-info $(LIBCVC4PARSER_VERSION)
+
+libcvc4parser_la_LIBADD = \
+	@builddir@/smt1/libparsersmt1.la \
+	@builddir@/smt2/libparsersmt2.la \
+	@builddir@/tptp/libparsertptp.la \
+	@builddir@/cvc/libparsercvc.la \
+	@builddir@/../libcvc4.la \
+	@builddir@/../lib/libreplacements.la
+
+libcvc4parser_la_SOURCES = \
+	antlr_input.cpp \
+	antlr_input.h \
+	antlr_input_imports.cpp \
+	antlr_line_buffered_input.cpp \
+	antlr_line_buffered_input.h \
+	antlr_tracing.h \
+	antlr_undefines.h \
+	bounded_token_buffer.cpp \
+	bounded_token_buffer.h \
+	bounded_token_factory.cpp \
+	bounded_token_factory.h \
+	input.cpp \
+	input.h \
+	memory_mapped_input_buffer.cpp \
+	memory_mapped_input_buffer.h \
+	parser.cpp \
+	parser.h \
+	parser_builder.cpp \
+	parser_builder.h \
+	parser_exception.h
+
+EXTRA_DIST = \
+	Makefile.antlr_tracing \
+	cvc4parser.i \
+	input.i \
+	parser_builder.i \
+	parser_exception.i \
+	parser.i
diff --git a/src/parser/Makefile.antlr_tracing b/src/parser/Makefile.antlr_tracing
new file mode 100644
index 0000000..fa79337
--- /dev/null
+++ b/src/parser/Makefile.antlr_tracing
@@ -0,0 +1,22 @@
+# -*-makefile-*-
+#
+# This makefile is included from parser directories in order to
+# do antlr tracing.  THIS IS VERY MUCH A HACK, and is only enabled
+# if CVC4_TRACE_ANTLR is defined (and not 0).  In ANTLR 3.2, we
+# have to #define "println" and "System," etc., because the
+# generator erroneously puts Java in C output!
+#
+
+ifeq ($(CVC4_TRACE_ANTLR),)
+else
+
+ifeq ($(CVC4_TRACE_ANTLR),0)
+else
+
+AM_CPPFLAGS += -DCVC4_TRACE_ANTLR
+ANTLR_OPTS += -trace
+
+endif
+
+endif
+
diff --git a/src/parser/Makefile.in b/src/parser/Makefile.in
new file mode 100644
index 0000000..d207cdb
--- /dev/null
+++ b/src/parser/Makefile.in
@@ -0,0 +1,1002 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = src/parser
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(libdir)"
+LTLIBRARIES = $(lib_LTLIBRARIES)
+libcvc4parser_la_DEPENDENCIES = @builddir@/smt1/libparsersmt1.la \
+	@builddir@/smt2/libparsersmt2.la \
+	@builddir@/tptp/libparsertptp.la \
+	@builddir@/cvc/libparsercvc.la @builddir@/../libcvc4.la \
+	@builddir@/../lib/libreplacements.la
+am_libcvc4parser_la_OBJECTS = antlr_input.lo antlr_input_imports.lo \
+	antlr_line_buffered_input.lo bounded_token_buffer.lo \
+	bounded_token_factory.lo input.lo \
+	memory_mapped_input_buffer.lo parser.lo parser_builder.lo
+libcvc4parser_la_OBJECTS = $(am_libcvc4parser_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+libcvc4parser_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+	$(AM_CXXFLAGS) $(CXXFLAGS) $(libcvc4parser_la_LDFLAGS) \
+	$(LDFLAGS) -o $@
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(libcvc4parser_la_SOURCES)
+DIST_SOURCES = $(libcvc4parser_la_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+
+# LIBCVC4PARSER_VERSION (-version-info) is in the form current:revision:age
+#
+# current -
+#   increment if interfaces have been added, removed or changed
+# revision -
+#   increment if source code has changed
+#   set to zero if current is incremented
+# age -
+#   increment if interfaces have been added
+#   set to zero if interfaces have been removed
+#   or changed
+#
+LIBCVC4PARSER_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4PARSERLIB \
+	-I at builddir@/.. $(ANTLR_INCLUDES) -I at srcdir@/../include -I at srcdir@/..
+
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
+SUBDIRS = smt1 smt2 cvc tptp
+lib_LTLIBRARIES = libcvc4parser.la
+libcvc4parser_la_LDFLAGS = $(ANTLR_LDFLAGS) \
+	-version-info $(LIBCVC4PARSER_VERSION)
+
+libcvc4parser_la_LIBADD = \
+	@builddir@/smt1/libparsersmt1.la \
+	@builddir@/smt2/libparsersmt2.la \
+	@builddir@/tptp/libparsertptp.la \
+	@builddir@/cvc/libparsercvc.la \
+	@builddir@/../libcvc4.la \
+	@builddir@/../lib/libreplacements.la
+
+libcvc4parser_la_SOURCES = \
+	antlr_input.cpp \
+	antlr_input.h \
+	antlr_input_imports.cpp \
+	antlr_line_buffered_input.cpp \
+	antlr_line_buffered_input.h \
+	antlr_tracing.h \
+	antlr_undefines.h \
+	bounded_token_buffer.cpp \
+	bounded_token_buffer.h \
+	bounded_token_factory.cpp \
+	bounded_token_factory.h \
+	input.cpp \
+	input.h \
+	memory_mapped_input_buffer.cpp \
+	memory_mapped_input_buffer.h \
+	parser.cpp \
+	parser.h \
+	parser_builder.cpp \
+	parser_builder.h \
+	parser_exception.h
+
+EXTRA_DIST = \
+	Makefile.antlr_tracing \
+	cvc4parser.i \
+	input.i \
+	parser_builder.i \
+	parser_exception.i \
+	parser.i
+
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/parser/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/parser/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+	}
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+	done
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+	@list='$(lib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+libcvc4parser.la: $(libcvc4parser_la_OBJECTS) $(libcvc4parser_la_DEPENDENCIES) $(EXTRA_libcvc4parser_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(libcvc4parser_la_LINK) -rpath $(libdir) $(libcvc4parser_la_OBJECTS) $(libcvc4parser_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/antlr_input.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/antlr_input_imports.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/antlr_line_buffered_input.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bounded_token_buffer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bounded_token_factory.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/input.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memory_mapped_input_buffer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/parser.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/parser_builder.Plo at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(LTLIBRARIES)
+installdirs: installdirs-recursive
+installdirs-am:
+	for dir in "$(DESTDIR)$(libdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+	mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am: install-libLTLIBRARIES
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-libLTLIBRARIES
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am clean clean-generic clean-libLTLIBRARIES \
+	clean-libtool cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am \
+	install-libLTLIBRARIES install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/parser/antlr_input.cpp b/src/parser/antlr_input.cpp
new file mode 100644
index 0000000..6edb23a
--- /dev/null
+++ b/src/parser/antlr_input.cpp
@@ -0,0 +1,577 @@
+/*********************                                                        */
+/*! \file antlr_input.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Kshitij Bansal, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A super-class for ANTLR-generated input language parsers.
+ **
+ ** A super-class for ANTLR-generated input language parsers
+ **/
+
+#include "parser/antlr_input.h"
+// We rely on the inclusion of #include <antlr3.h> in "parser/antlr_input.h".
+// This is avoid having to undefine the symbols in <antlr3.h>.
+// See the documentation in "parser/antlr_undefines.h" for more
+// details.
+
+#include <limits.h>
+#include <stdint.h>
+
+#include "base/output.h"
+#include "expr/type.h"
+#include "parser/antlr_line_buffered_input.h"
+#include "parser/bounded_token_buffer.h"
+#include "parser/bounded_token_factory.h"
+#include "parser/cvc/cvc_input.h"
+#include "parser/input.h"
+#include "parser/memory_mapped_input_buffer.h"
+#include "parser/parser.h"
+#include "parser/parser_exception.h"
+#include "parser/smt1/smt1_input.h"
+#include "parser/smt2/smt2_input.h"
+#include "parser/smt2/sygus_input.h"
+#include "parser/tptp/tptp_input.h"
+#include "smt/command.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::parser;
+using namespace CVC4::kind;
+
+namespace CVC4 {
+namespace parser {
+
+// These functions exactly wrap the antlr3 source inconsistencies.
+// These are the only location CVC4_ANTLR3_OLD_INPUT_STREAM ifdefs appear.
+// No other sanity checking happens;
+pANTLR3_INPUT_STREAM newAntlr3BufferedStream(std::istream& input, const std::string& name);
+pANTLR3_INPUT_STREAM newAntlr3FileStream(const std::string& name);
+pANTLR3_INPUT_STREAM newAntrl3InPlaceStream(pANTLR3_UINT8 basep,
+                                            uint32_t size,
+                                            const std::string& name);
+
+pANTLR3_INPUT_STREAM
+newAntlr3BufferedStream(std::istream& input, const std::string& name){
+  pANTLR3_INPUT_STREAM inputStream = NULL;
+  pANTLR3_UINT8 name_duplicate = (pANTLR3_UINT8) strdup(name.c_str());
+
+#ifdef CVC4_ANTLR3_OLD_INPUT_STREAM
+  inputStream =
+    antlr3LineBufferedStreamNew(input, 0, name_duplicate);
+#else /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+  inputStream =
+    antlr3LineBufferedStreamNew(input, ANTLR3_ENC_8BIT, name_duplicate);
+#endif /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+
+  free(name_duplicate);
+  return inputStream;
+}
+
+pANTLR3_INPUT_STREAM newAntlr3FileStream(const std::string& name){
+  pANTLR3_INPUT_STREAM input = NULL;
+  pANTLR3_UINT8 name_duplicate = (pANTLR3_UINT8) strdup(name.c_str());
+
+  // libantlr3c v3.2 isn't source-compatible with v3.4
+#ifdef CVC4_ANTLR3_OLD_INPUT_STREAM
+  input = antlr3AsciiFileStreamNew(name_duplicate);
+#else /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+  input = antlr3FileStreamNew(name_duplicate, ANTLR3_ENC_8BIT);
+#endif /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+
+  free(name_duplicate);
+  return input;
+}
+
+
+pANTLR3_INPUT_STREAM newAntrl3InPlaceStream(pANTLR3_UINT8 basep,
+                                            uint32_t size,
+                                            const std::string& name){
+  pANTLR3_UINT8 name_duplicate = (pANTLR3_UINT8) strdup(name.c_str());
+  pANTLR3_INPUT_STREAM inputStream = NULL;
+  /* Create an ANTLR input backed by the buffer. */
+#ifdef CVC4_ANTLR3_OLD_INPUT_STREAM
+  inputStream =
+    antlr3NewAsciiStringInPlaceStream(basep, size, name_duplicate);
+#else /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+  inputStream =
+    antlr3StringStreamNew(basep, ANTLR3_ENC_8BIT, size,
+                          name_duplicate);
+#endif /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+  free(name_duplicate);
+  return inputStream;
+}
+
+AntlrInputStream::AntlrInputStream(std::string name,
+                                   pANTLR3_INPUT_STREAM input,
+                                   bool fileIsTemporary,
+                                   pANTLR3_UINT8 inputString) :
+  InputStream(name, fileIsTemporary),
+  d_input(input),
+  d_inputString(inputString)
+{
+  assert( input != NULL );
+  input->fileName = input->strFactory->newStr8(input->strFactory, (pANTLR3_UINT8)name.c_str());
+}
+
+AntlrInputStream::~AntlrInputStream() {
+  d_input->free(d_input);
+  if(d_inputString != NULL){
+    free(d_inputString);
+  }
+}
+
+pANTLR3_INPUT_STREAM AntlrInputStream::getAntlr3InputStream() const {
+  return d_input;
+}
+
+
+
+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) {
+    input = MemoryMappedInputBufferNew(name);
+  } else {
+    input = newAntlr3FileStream(name);
+  }
+  if(input == NULL) {
+    throw InputStreamException("Couldn't open file: " + name);
+  }
+  return new AntlrInputStream( name, input, false, NULL );
+}
+
+
+AntlrInputStream*
+AntlrInputStream::newStreamInputStream(std::istream& input,
+                                       const std::string& name,
+                                       bool lineBuffered)
+  throw (InputStreamException) {
+
+  pANTLR3_INPUT_STREAM inputStream = NULL;
+  pANTLR3_UINT8 inputStringCopy = NULL;
+
+  if(lineBuffered) {
+    inputStream = newAntlr3BufferedStream(input, name);
+  } else {
+
+    // Since these are all NULL on entry, realloc will be called
+    char *basep = NULL, *boundp = NULL, *cp = NULL;
+    /* 64KB seems like a reasonable default size. */
+    size_t bufSize = 0x10000;
+
+    /* Keep going until we can't go no more. */
+    while( !input.eof() && !input.fail() ) {
+
+      if( cp == boundp ) {
+        /* We ran out of room in the buffer. Realloc at double the size. */
+        ptrdiff_t offset = cp - basep;
+        basep = (char *) realloc(basep, bufSize);
+        if( basep == NULL ) {
+          throw InputStreamException("Failed buffering input stream: " + name);
+        }
+        cp = basep + offset;
+        boundp = basep + bufSize;
+        bufSize *= 2;
+      }
+
+      /* Read as much as we have room for. */
+      input.read( cp, boundp - cp );
+      cp += input.gcount();
+    }
+
+    /* Make sure the fail bit didn't get set. */
+    if( !input.eof() ) {
+      throw InputStreamException("Stream input failed: " + name);
+    }
+    ptrdiff_t offset = cp - basep;
+    assert(offset >= 0);
+    assert(offset <= std::numeric_limits<uint32_t>::max());
+    inputStringCopy = (pANTLR3_UINT8)basep;
+    inputStream = newAntrl3InPlaceStream(inputStringCopy, (uint32_t) offset, name);
+  }
+
+  if( inputStream == NULL ) {
+    throw InputStreamException("Couldn't initialize input: " + name);
+  }
+
+  return new AntlrInputStream( name, inputStream, false, inputStringCopy );
+}
+
+
+AntlrInputStream*
+AntlrInputStream::newStringInputStream(const std::string& input,
+                                       const std::string& name)
+  throw (InputStreamException) {
+
+  size_t input_size = input.size();
+  assert(input_size <= std::numeric_limits<uint32_t>::max());
+
+  // Ownership of input_duplicate  is transferred to the AntlrInputStream.
+  pANTLR3_UINT8 input_duplicate = (pANTLR3_UINT8) strdup(input.c_str());
+
+  if( input_duplicate == NULL ) {
+    throw InputStreamException("Couldn't initialize string input: '" + input + "'");
+  }
+
+  pANTLR3_INPUT_STREAM inputStream = newAntrl3InPlaceStream(input_duplicate, (uint32_t)input_size, name);
+  if( inputStream==NULL ) {
+    throw InputStreamException("Couldn't initialize string input: '" + input + "'");
+  }
+  return new AntlrInputStream( name, inputStream, false, input_duplicate );
+}
+
+AntlrInput* AntlrInput::newInput(InputLanguage lang, AntlrInputStream& inputStream) {
+  using namespace language::input;
+
+  AntlrInput* input;
+
+  switch(lang) {
+  case LANG_CVC4: {
+    input = new CvcInput(inputStream);
+    break;
+  }
+  case LANG_SMTLIB_V1:
+    input = new Smt1Input(inputStream);
+    break;
+
+  case LANG_SMTLIB_V2_0:
+  case LANG_SMTLIB_V2_5:
+    input = new Smt2Input(inputStream, lang);
+    break;
+
+  case LANG_SYGUS:
+    input = new SygusInput(inputStream);
+    break;
+
+  case LANG_TPTP:
+    input = new TptpInput(inputStream);
+    break;
+
+  default:
+    std::stringstream ss;
+    ss << "internal error: unhandled language " << lang << " in AntlrInput::newInput";
+    throw InputStreamException(ss.str());
+  }
+
+  return input;
+}
+
+AntlrInput::AntlrInput(AntlrInputStream& inputStream, unsigned int lookahead) :
+    Input(inputStream),
+    d_lookahead(lookahead),
+    d_lexer(NULL),
+    d_parser(NULL),
+    d_antlr3InputStream( inputStream.getAntlr3InputStream() ),
+    d_tokenBuffer(NULL) {
+}
+
+/*
+AntlrParser::AntlrParser(ExprManager* exprManager, std::istream& input, const std::string& name, unsigned int lookahead)
+  Parser(exprManager,name),
+  d_lookahead(lookahead) {
+
+}
+*/
+
+/*
+AntlrInput::Input(ExprManager* exprManager, const std::string& input, const std::string& name, unsigned int lookahead) :
+  Input(exprManager,name),
+  d_lookahead(lookahead),
+  d_lexer(NULL),
+  d_parser(NULL),
+  d_tokenStream(NULL) {
+
+  char* inputStr = strdup(input.c_str());
+  char* nameStr = strdup(name.c_str());
+  if( inputStr==NULL || nameStr==NULL ) {
+    throw ParserException("Couldn't initialize string input: '" + input + "'");
+  }
+  d_inputStream = antlr3NewAsciiStringInPlaceStream((pANTLR3_UINT8)inputStr,input.size(),(pANTLR3_UINT8)nameStr);
+  if( d_inputStream == NULL ) {
+    throw ParserException("Couldn't create input stream for string: '" + input + "'");
+  }
+
+}
+*/
+
+AntlrInput::~AntlrInput() {
+  BoundedTokenBufferFree(d_tokenBuffer);
+}
+
+pANTLR3_COMMON_TOKEN_STREAM AntlrInput::getTokenStream() {
+  return d_tokenBuffer->commonTstream;
+}
+
+void AntlrInput::lexerError(pANTLR3_BASE_RECOGNIZER recognizer) {
+  pANTLR3_LEXER lexer = (pANTLR3_LEXER)(recognizer->super);
+  assert(lexer!=NULL);
+  Parser *parser = (Parser*)(lexer->super);
+  assert(parser!=NULL);
+  AntlrInput *input = (AntlrInput*) parser->getInput();
+  assert(input!=NULL);
+
+  /* Call the error display routine *if* there's not already a 
+   * parse error pending.  If a parser error is pending, this
+   * error is probably less important, so we just drop it. */
+  if( input->d_parser->rec->state->error == ANTLR3_FALSE ) {
+    input->parseError("Error finding next token.");
+  }
+}
+
+void AntlrInput::warning(const std::string& message) {
+  Warning() << getInputStream()->getName() << ':' << d_lexer->getLine(d_lexer) << '.' << d_lexer->getCharPositionInLine(d_lexer) << ": " << message << endl;
+}
+
+
+
+/**
+ * characters considered part of a simple symbol in SMTLIB.
+ *
+ * TODO: Ideally this code shouldn't be smtlib specific (should work
+ * with CVC language too), but this per-language specialization has
+ * been left for a later point.
+ */
+inline bool isSimpleChar(char ch) {
+  return isalnum(ch) || (strchr("~!@$%^&*_-+=<>.?/", ch) != NULL);
+}
+
+size_t wholeWordMatch(string input, string pattern, bool (*isWordChar)(char)) {
+  size_t st = 0;
+  size_t N = input.size();
+  while(st < N) {
+    while( st < N && (*isWordChar)(input[st])  == false ) st++;
+    size_t en = st;
+    while(en + 1 < N && (*isWordChar)(input[en + 1]) == true) en++;
+    if(en - st + 1 == pattern.size()) {
+      bool match = true;
+      for(size_t i = 0; match && i < pattern.size(); ++i) {
+        match &= (pattern[i] == input[st+i]);
+      }
+      if(match == true) {
+        return st;
+      }
+    }
+    st = en + 1;
+  }
+  return string::npos;
+}
+
+/**
+ * Gets part of original input and tries to visually hint where the
+ * error might be.
+ *
+ * Something like:
+ *
+ *   ...nd (= alpha beta) (= beta delta))
+ *                                ^
+ *
+ * Implementation (as on 2014/04/24):
+ *
+ * > if suggested pointer by lexer is under a "simple char", move to
+ *   start of the word and print pointer there.
+ *
+ * > in the other case, it tries to find the nearest word in the error
+ *   message passed along. if it can't find it, we don't add this
+ *   visual hint, as experimentally position suggested by lexer was
+ *   found to be totally unhelpful. (TODO: fix this upstream to
+ *   improve)
+ */
+std::string parseErrorHelper(const char* lineStart, int charPositionInLine, const std::string& message)
+{
+  // Is it a multi-line message
+  bool multilineMessage = (message.find('\n') != string::npos);
+  // Useful only if it is a multi-line message
+  int firstLineEnd = message.find('\n');
+
+  std::ostringstream ss, slicess;
+
+  // Keep first line of message
+  if(multilineMessage) {
+    ss << message.substr(0, firstLineEnd) << endl << endl;
+  } else {
+    ss << message << endl << endl;
+  }
+
+  int posSliceStart = (charPositionInLine - 50 <= 0) ? 0 : charPositionInLine - 50 + 5;
+  int posSliceEnd = posSliceStart + 70;
+  int caretPos = 0;
+  int caretPosExtra = 0; // for inital intendation, epilipses etc.
+
+  ss << "  "; caretPosExtra += 2;
+  if(posSliceStart > 0) {
+    ss << "..."; caretPosExtra += 3;
+  }
+
+  for(int i = posSliceStart; lineStart[i] != '\n'; ++i) {
+    if(i == posSliceEnd) {
+      ss << "...";
+      break;
+    }
+    if(i < charPositionInLine) { caretPos++; }
+
+    if(!isprint(lineStart[i])) {
+      // non-printable character, something wrong, bail out
+      return message;
+    }
+
+    ss << (lineStart[i]);
+    slicess << (lineStart[i]);
+  }
+
+  // adjust position of caret, based on slice and message
+  {
+    int caretPosOrig = caretPos;
+    string slice = slicess.str();
+    if(isSimpleChar(slice[caretPos])) {
+      // if alphanumeric, try to go to beginning of word/number
+      while(caretPos > 0 && isSimpleChar(slice[caretPos - 1])) { --caretPos; }
+      if(caretPos == 0 && posSliceStart > 0) {
+        // reached start and this is not really the start? bail out
+        return message;
+      } else {
+        // likely it is also in original message? if so, very likely
+        // we found the right place
+        string word = slice.substr(caretPos, (caretPosOrig - caretPos + 1));
+        size_t matchLoc = wholeWordMatch(message, word, isSimpleChar);
+        Debug("friendlyparser") << "[friendlyparser] matchLoc = " << matchLoc << endl;
+        if( matchLoc != string::npos ) {
+          Debug("friendlyparser") << "[friendlyparser] Feeling good." << std::endl;
+        }
+      }
+    } else {
+      bool foundCaretPos = false;
+
+      for(int tries = 0; tries < 2 && caretPos > 0 && !foundCaretPos; ++tries) {
+        // go to nearest alphanumeric string (before current position),
+        // see if that word can be found in original message. If so,
+        // point to that, else keep pointer where it was.
+        int nearestWordEn = caretPos - 1;
+        while(nearestWordEn > 0 && !isSimpleChar(slice[nearestWordEn])) {
+          --nearestWordEn;
+        }
+        if(isSimpleChar(slice[nearestWordEn])) {
+          int nearestWordSt = nearestWordEn;
+          while(nearestWordSt > 0 && isSimpleChar(slice[nearestWordSt - 1])) {
+            --nearestWordSt;
+          }
+          string word = slice.substr(nearestWordSt, (nearestWordEn - nearestWordSt + 1));
+          size_t matchLoc = wholeWordMatch(message, word, isSimpleChar);
+          Debug("friendlyparser") << "[friendlyparser] nearest word = " << word << std::endl;
+          Debug("friendlyparser") << "[friendlyparser] matchLoc = " << matchLoc << endl;
+          if( matchLoc != string::npos ) {
+            Debug("friendlyparser") << "[friendlyparser] strong evidence that caret should be at "
+                                    << nearestWordSt << std::endl;
+            foundCaretPos = true;
+          }
+          caretPos = nearestWordSt;
+        }
+      }
+      if( !foundCaretPos) {
+        // this doesn't look good. caret generally getting printed
+        // at unhelpful positions. improve upstream?
+        return message;
+      }
+    }
+    caretPos += caretPosExtra;
+  }// end of caret position computation/heuristics
+
+  ss << std::endl;
+  while( caretPos-- > 0 ) {
+    ss << ' ';
+  }
+  ss << '^' << endl;
+  if(multilineMessage) {
+     ss << message.substr(firstLineEnd, message.size() - firstLineEnd);;
+  }
+  return ss.str();
+}
+
+void AntlrInput::parseError(const std::string& message, bool eofException)
+  throw (ParserException) {
+
+  string updatedMessage = parseErrorHelper((const char*)d_antlr3InputStream->getLineBuf(d_antlr3InputStream),
+                                           d_lexer->getCharPositionInLine(d_lexer),
+                                           message);
+
+  Debug("parser") << "Throwing exception: "
+      << (const char*)d_lexer->rec->state->tokSource->fileName->chars << ":"
+      << d_lexer->getLine(d_lexer) << "."
+      << d_lexer->getCharPositionInLine(d_lexer) << ": "
+      << updatedMessage << endl;
+  if(eofException) {
+    throw ParserEndOfFileException(message,
+                                   (const char*)d_lexer->rec->state->tokSource->fileName->chars,
+                                   d_lexer->getLine(d_lexer),
+                                   d_lexer->getCharPositionInLine(d_lexer));
+  } else {
+    throw ParserException(updatedMessage,
+                          (const char*)d_lexer->rec->state->tokSource->fileName->chars,
+                          d_lexer->getLine(d_lexer),
+                          d_lexer->getCharPositionInLine(d_lexer));
+  }
+}
+
+
+void AntlrInput::setAntlr3Lexer(pANTLR3_LEXER pLexer) {
+  d_lexer = pLexer;
+
+  pANTLR3_TOKEN_FACTORY pTokenFactory = d_lexer->rec->state->tokFactory;
+  if( pTokenFactory != NULL ) {
+    pTokenFactory->close(pTokenFactory);
+  }
+
+  /* 2*lookahead should be sufficient, but we give ourselves some breathing room. */
+  pTokenFactory = BoundedTokenFactoryNew(d_antlr3InputStream, 2*d_lookahead);
+  if( pTokenFactory == NULL ) {
+    throw InputStreamException("Couldn't create token factory.");
+  }
+  d_lexer->rec->state->tokFactory = pTokenFactory;
+
+  pBOUNDED_TOKEN_BUFFER buffer = BoundedTokenBufferSourceNew(d_lookahead, d_lexer->rec->state->tokSource);
+  if( buffer == NULL ) {
+    throw InputStreamException("Couldn't create token buffer.");
+  }
+
+  d_tokenBuffer = buffer;
+
+  // Override default lexer error reporting
+  d_lexer->rec->reportError = &lexerError;
+  // Override default nextToken function, just to prevent exceptions escaping.
+  d_lexer->rec->state->tokSource->nextToken = &nextToken;
+}
+
+void AntlrInput::setParser(Parser& parser) {
+  // ANTLR isn't using super in the lexer or the parser, AFAICT.
+  // We could also use @lexer/parser::context to add a field to the generated
+  // objects, but then it would have to be declared separately in every
+  // language's grammar and we'd have to in the address of the field anyway.
+  d_lexer->super = &parser;
+  d_parser->super = &parser;
+}
+
+void AntlrInput::setAntlr3Parser(pANTLR3_PARSER pParser) {
+  d_parser = pParser;
+//  d_parser->rec->match = &match;
+  d_parser->rec->reportError = &reportError;
+  /* Don't try to recover from a parse error. */
+  // [chris 4/5/2010] Not clear on why this cast is necessary, but I get an error if I remove it.
+  d_parser->rec->recoverFromMismatchedToken =
+      (void* (*)(ANTLR3_BASE_RECOGNIZER_struct*, ANTLR3_UINT32, ANTLR3_BITSET_LIST_struct*))
+      d_parser->rec->mismatch;
+}
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
diff --git a/src/parser/antlr_input.h b/src/parser/antlr_input.h
new file mode 100644
index 0000000..8e5e828
--- /dev/null
+++ b/src/parser/antlr_input.h
@@ -0,0 +1,322 @@
+/*********************                                                        */
+/*! \file antlr_input.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Base for ANTLR parser classes.
+ **
+ ** Base for ANTLR parser classes.
+ **/
+
+#ifndef __CVC4__PARSER__ANTLR_INPUT_H
+#define __CVC4__PARSER__ANTLR_INPUT_H
+
+// These headers must be included first. See the documentation
+// in parser/antlr_undefines.h for an explanation.
+// Also while unusual this must also be within the #ifdef guard.
+#include <antlr3.h>
+#include "parser/antlr_undefines.h"
+
+#include "cvc4parser_private.h"
+
+#include <iostream>
+#include <sstream>
+#include <stdexcept>
+#include <string>
+#include <vector>
+#include <cassert>
+
+#include "base/output.h"
+#include "parser/bounded_token_buffer.h"
+#include "parser/input.h"
+#include "parser/parser_exception.h"
+#include "util/bitvector.h"
+#include "util/integer.h"
+#include "util/rational.h"
+
+
+namespace CVC4 {
+
+class Command;
+class Type;
+class FunctionType;
+
+namespace parser {
+
+/** Wrapper around an ANTLR3 input stream. */
+class AntlrInputStream : public InputStream {
+private:
+  pANTLR3_INPUT_STREAM d_input;
+
+  /**
+   * If the AntlrInputStream corresponds to reading from a string,
+   * this is the string literal. The memory is owned by the Antlr3Input. It is
+   * assumed to be copied from malloc, and can be free'd at destruction time.
+   * It is otherwise NULL.
+   */
+  pANTLR3_UINT8 d_inputString;
+
+  AntlrInputStream(std::string name,
+                   pANTLR3_INPUT_STREAM input,
+                   bool fileIsTemporary,
+                   pANTLR3_UINT8 inputString);
+
+  /* This is private and unimplemented, because you should never use it. */
+  AntlrInputStream(const AntlrInputStream& inputStream) CVC4_UNDEFINED;
+
+  /* This is private and unimplemented, because you should never use it. */
+  AntlrInputStream& operator=(const AntlrInputStream& inputStream)
+    CVC4_UNDEFINED;
+
+public:
+
+  virtual ~AntlrInputStream();
+
+  pANTLR3_INPUT_STREAM getAntlr3InputStream() const;
+
+  /** Create a file input.
+   *
+   * @param name the path of the file to read
+   * @param useMmap <code>true</code> if the input should use memory-mapped I/O; otherwise, the
+   * input will use the standard ANTLR3 I/O implementation.
+   */
+  static AntlrInputStream* newFileInputStream(const std::string& name,
+                                              bool useMmap = false)
+    throw (InputStreamException);
+
+  /** Create an input from an istream. */
+  static AntlrInputStream* newStreamInputStream(std::istream& input,
+                                                const std::string& name,
+                                                bool lineBuffered = false)
+    throw (InputStreamException);
+
+  /** Create a string input.
+   * NOTE: the new AntlrInputStream will take ownership of input over
+   * and free it at destruction time.
+   *
+   * @param input the string to read
+   * @param name the "filename" to use when reporting errors
+   */
+  static AntlrInputStream* newStringInputStream(const std::string& input,
+                                                const std::string& name)
+    throw (InputStreamException);
+};/* class AntlrInputStream */
+
+class Parser;
+
+/**
+ * An input to be parsed. The static factory methods in this class (e.g.,
+ * <code>newFileInput</code>, <code>newStringInput</code>) create a parser
+ * for the given input language and attach it to an input source of the
+ * appropriate type.
+ */
+class AntlrInput : public Input {
+  /** The token lookahead used to lex and parse the input. This should usually be equal to
+   * <code>K</code> for an LL(k) grammar. */
+  unsigned int d_lookahead;
+
+  /** The ANTLR3 lexer associated with this input. This will be <code>NULL</code> initially. It
+   *  must be set by a call to <code>setLexer</code>, preferably in the subclass constructor. */
+  pANTLR3_LEXER d_lexer;
+
+  /** The ANTLR3 parser associated with this input. This will be <code>NULL</code> initially. It
+   *  must be set by a call to <code>setParser</code>, preferably in the subclass constructor.
+   *  The <code>super</code> field of <code>d_parser</code> will be set to <code>this</code> and
+   *  <code>reportError</code> will be set to <code>Input::reportError</code>. */
+  pANTLR3_PARSER d_parser;
+
+  /** The ANTLR3 input stream associated with this input. */
+  pANTLR3_INPUT_STREAM d_antlr3InputStream;
+
+  /** The ANTLR3 bounded token buffer associated with this input.
+   *  We only need this so we can free it on exit.
+   *  This is set by <code>setLexer</code>.
+   *  NOTE: We assume that we <em>can</em> free it on exit. No sharing! */
+  pBOUNDED_TOKEN_BUFFER d_tokenBuffer;
+
+  /** Turns an ANTLR3 exception into a message for the user and calls <code>parseError</code>. */
+  static void reportError(pANTLR3_BASE_RECOGNIZER recognizer);
+
+  /** Builds a message for a lexer error and calls <code>parseError</code>. */
+  static void lexerError(pANTLR3_BASE_RECOGNIZER recognizer);
+
+  /** Returns the next available lexer token from the current input stream. */
+  /* - auxillary function */
+  static pANTLR3_COMMON_TOKEN
+  nextTokenStr (pANTLR3_TOKEN_SOURCE toksource);
+  /* - main function */
+  static pANTLR3_COMMON_TOKEN
+  nextToken (pANTLR3_TOKEN_SOURCE toksource);
+
+  /* Since we own d_tokenStream and it needs to be freed, we need to prevent
+   * copy construction and assignment.
+   */
+  AntlrInput(const AntlrInput& input);
+  AntlrInput& operator=(const AntlrInput& input);
+
+public:
+
+  /** Destructor. Frees the token stream and closes the input. */
+  virtual ~AntlrInput();
+
+  /** Create an input for the given AntlrInputStream.
+   * NOTE: the new Input will take ownership of the input stream and delete it
+   * at destruction time.
+   *
+   * @param lang the input language
+   * @param inputStream the input stream
+   *
+   * */
+  static AntlrInput* newInput(InputLanguage lang, AntlrInputStream& inputStream);
+
+  /** Retrieve the text associated with a token. */
+  static std::string tokenText(pANTLR3_COMMON_TOKEN token);
+
+  /** Retrieve a substring of the text associated with a token.
+   *
+   * @param token the token
+   * @param index the index of the starting character of the substring
+   * @param n the size of the substring. If <code>n</code> is 0, then all of the
+   * characters up to the end of the token text will be included. If <code>n</code>
+   * would make the substring span past the end of the token text, only those
+   * characters up to the end of the token text will be included.
+   */
+  static std::string tokenTextSubstr(pANTLR3_COMMON_TOKEN token, size_t index, size_t n = 0);
+
+  /** Retrieve an unsigned from the text of a token */
+  static unsigned tokenToUnsigned( pANTLR3_COMMON_TOKEN token );
+
+  /** Retrieve an Integer from the text of a token */
+  static Rational tokenToInteger( pANTLR3_COMMON_TOKEN token );
+
+  /** Retrieve a Rational from the text of a token */
+  static Rational tokenToRational(pANTLR3_COMMON_TOKEN token);
+
+  /** Get a bitvector constant from the text of the number and the size token */
+  static BitVector tokenToBitvector(pANTLR3_COMMON_TOKEN number, pANTLR3_COMMON_TOKEN size);
+
+  /** Retrieve the remaining text in this input. */
+  std::string getUnparsedText();
+
+  /** Get the ANTLR3 lexer for this input. */
+  pANTLR3_LEXER getAntlr3Lexer() { return d_lexer; }
+
+  pANTLR3_INPUT_STREAM getAntlr3InputStream() { return d_antlr3InputStream; }
+protected:
+  /** Create an input. This input takes ownership of the given input stream,
+   * and will delete it at destruction time.
+   *
+   * @param inputStream the input stream to use
+   * @param lookahead the lookahead needed to parse the input (i.e., k for
+   * an LL(k) grammar)
+   */
+  AntlrInput(AntlrInputStream& inputStream, unsigned int lookahead);
+
+  /** Retrieve the token stream for this parser. Must not be called before
+   * <code>setLexer()</code>. */
+  pANTLR3_COMMON_TOKEN_STREAM getTokenStream();
+
+  /**
+   * Issue a non-fatal warning to the user with file, line, and column info.
+   */
+  void warning(const std::string& msg);
+
+  /**
+   * Throws a <code>ParserException</code> with the given message.
+   */
+  void parseError(const std::string& msg, bool eofException = false)
+    throw (ParserException);
+
+  /** Set the ANTLR3 lexer for this input. */
+  void setAntlr3Lexer(pANTLR3_LEXER pLexer);
+
+  /** Set the ANTLR3 parser implementation for this input. */
+  void setAntlr3Parser(pANTLR3_PARSER pParser);
+
+  /** Set the Parser object for this input. */
+  virtual void setParser(Parser& parser);
+};/* class AntlrInput */
+
+inline std::string AntlrInput::getUnparsedText() {
+  const char *base = (const char *)d_antlr3InputStream->data;
+  const char *cur = (const char *)d_antlr3InputStream->nextChar;
+
+  return std::string(cur, d_antlr3InputStream->sizeBuf - (cur - base));
+}
+
+
+inline std::string AntlrInput::tokenText(pANTLR3_COMMON_TOKEN token) {
+  if( token->type == ANTLR3_TOKEN_EOF ) {
+    return "<<EOF>>";
+  }
+
+  ANTLR3_MARKER start = token->getStartIndex(token);
+  ANTLR3_MARKER end = token->getStopIndex(token);
+  /* start and end are boundary pointers. The text is a string
+   * of (end-start+1) bytes beginning at start. */
+  std::string txt( (const char *)start, end-start+1 );
+  Debug("parser-extra") << "tokenText: start=" << start << std::endl
+                        <<  "end=" << end << std::endl
+                        <<  "txt='" << txt << "'" << std::endl;
+  return txt;
+}
+
+inline std::string AntlrInput::tokenTextSubstr(pANTLR3_COMMON_TOKEN token,
+                                               size_t index,
+                                               size_t n) {
+
+  ANTLR3_MARKER start = token->getStartIndex(token);
+  // Its the last character of the token (not the one just after)
+  ANTLR3_MARKER end = token->getStopIndex(token);
+  assert( start < end );
+  if( index > (size_t) end - start ) {
+    std::stringstream ss;
+    ss << "Out-of-bounds substring index: " << index;
+    throw std::invalid_argument(ss.str());
+  }
+  start += index;
+  if( n==0 || n > (size_t) end - start ) {
+    return std::string( (const char *)start, end-start+1 );
+  } else {
+    return std::string( (const char *)start, n );
+  }
+}
+
+inline unsigned AntlrInput::tokenToUnsigned(pANTLR3_COMMON_TOKEN token) {
+  unsigned result;
+  std::stringstream ss;
+  ss << tokenText(token);
+  ss >> result;
+  return result;
+}
+
+inline Rational AntlrInput::tokenToInteger(pANTLR3_COMMON_TOKEN token) {
+  return Rational( tokenText(token) );
+}
+
+inline Rational AntlrInput::tokenToRational(pANTLR3_COMMON_TOKEN token) {
+  return Rational::fromDecimal( tokenText(token) );
+}
+
+inline BitVector AntlrInput::tokenToBitvector(pANTLR3_COMMON_TOKEN number, pANTLR3_COMMON_TOKEN size) {
+  std::string number_str = tokenTextSubstr(number, 2);
+  unsigned sz = tokenToUnsigned(size);
+  Integer val(number_str);
+  if(val.modByPow2(sz) != val) {
+    std::stringstream ss;
+    ss << "Overflow in bitvector construction (specified bitvector size " << sz << " too small to hold value " << tokenText(number) << ")";
+    throw std::invalid_argument(ss.str());
+  }
+  return BitVector(sz, val);
+}
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PARSER__ANTLR_INPUT_H */
diff --git a/src/parser/antlr_input_imports.cpp b/src/parser/antlr_input_imports.cpp
new file mode 100644
index 0000000..e74d838
--- /dev/null
+++ b/src/parser/antlr_input_imports.cpp
@@ -0,0 +1,445 @@
+/*********************                                                        */
+/*! \file antlr_input_imports.cpp
+ ** \verbatim
+ ** Original author: cconway
+ ** Major contributors: none
+ ** Minor contributors (to current version): none
+ ** This file is part of the CVC4 prototype.
+ ** Copyright (c) 2009, 2010  The Analysis of Computer Systems Group (ACSys)
+ ** Courant Institute of Mathematical Sciences
+ ** New York University
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+/*
+ * The functions in this file are based on implementations in libantlr3c,
+ * with only minor CVC4-specific changes.
+ */
+
+// [The "BSD licence"]
+// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
+// http://www.temporal-wave.com
+// http://www.linkedin.com/in/jimidle
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+// 3. The name of the author may not be used to endorse or promote products
+//    derived from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+// These headers must be the first two included.
+// See the documentation in "parser/antlr_undefines.h" for more details.
+#include <antlr3.h>
+#include "parser/antlr_undefines.h"
+
+#include <sstream>
+
+#include "parser/antlr_input.h"
+#include "parser/parser.h"
+#include "parser/parser_exception.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace parser {
+
+/// Report a recognition problem.
+///
+/// This method sets errorRecovery to indicate the parser is recovering
+/// not parsing.  Once in recovery mode, no errors are generated.
+/// To get out of recovery mode, the parser must successfully match
+/// a token (after a resync).  So it will go:
+///
+///             1. error occurs
+///             2. enter recovery mode, report error
+///             3. consume until token found in resynch set
+///             4. try to resume parsing
+///             5. next match() will reset errorRecovery mode
+///
+/// If you override, make sure to update errorCount if you care about that.
+///
+/* *** CVC4 NOTE ***
+ * This function is has been modified in not-completely-trivial ways from its
+ * libantlr3c implementation to support more informative error messages and to
+ * invoke the error reporting mechanism of the Input class instead of the
+ * default error printer.
+ */
+void AntlrInput::reportError(pANTLR3_BASE_RECOGNIZER recognizer) {
+  pANTLR3_EXCEPTION ex = recognizer->state->exception;
+  pANTLR3_UINT8 * tokenNames = recognizer->state->tokenNames;
+  stringstream ss;
+
+  // Dig the CVC4 objects out of the ANTLR3 mess
+  pANTLR3_PARSER antlr3Parser = (pANTLR3_PARSER)(recognizer->super);
+  assert(antlr3Parser!=NULL);
+  Parser *parser = (Parser*)(antlr3Parser->super);
+  assert(parser!=NULL);
+  AntlrInput *input = (AntlrInput*) parser->getInput() ;
+  assert(input!=NULL);
+
+  // Signal we are in error recovery now
+  recognizer->state->errorRecovery = ANTLR3_TRUE;
+
+  // Indicate this recognizer had an error while processing.
+  recognizer->state->errorCount++;
+
+  // Call the builtin error formatter
+  // recognizer->displayRecognitionError(recognizer, recognizer->state->tokenNames);
+
+  /* TODO: Make error messages more useful, maybe by including more expected tokens and information
+   * about the current token. */
+  switch(ex->type) {
+  case ANTLR3_UNWANTED_TOKEN_EXCEPTION:
+
+    // Indicates that the recognizer was fed a token which seems to be
+    // spurious input. We can detect this when the token that follows
+    // this unwanted token would normally be part of the syntactically
+    // correct stream. Then we can see that the token we are looking at
+    // is just something that should not be there and throw this exception.
+    //
+    if(tokenNames == NULL) {
+      ss << "Unexpected token." ;
+    } else {
+      if(ex->expecting == ANTLR3_TOKEN_EOF) {
+        ss << "Expected end of file.";
+      } else {
+        ss << "Expected " << tokenNames[ex->expecting]
+           << ", found '" << tokenText((pANTLR3_COMMON_TOKEN)ex->token) << "'.";
+      }
+    }
+    break;
+
+  case ANTLR3_MISSING_TOKEN_EXCEPTION:
+
+    // Indicates that the recognizer detected that the token we just
+    // hit would be valid syntactically if preceded by a particular
+    // token. Perhaps a missing ';' at line end or a missing ',' in an
+    // expression list, and such like.
+    //
+    if(tokenNames == NULL) {
+      ss << "Missing token (" << ex->expecting << ").";
+    } else {
+      if(ex->expecting == ANTLR3_TOKEN_EOF) {
+        ss << "Missing end of file marker.";
+      } else if( ex->expecting == 0 ) {
+        ss << "Unexpected token: '" << tokenText((pANTLR3_COMMON_TOKEN)ex->token) << "'.";
+        if( std::string(tokenText((pANTLR3_COMMON_TOKEN)ex->token)) == std::string("IN") ) {
+          ss << " Did you mean: `IS_IN'?";
+        }
+      } else {
+        ss << "Missing " << tokenNames[ex->expecting] << ".";
+      }
+    }
+    break;
+
+  case ANTLR3_RECOGNITION_EXCEPTION:
+
+    // Indicates that the recognizer received a token
+    // in the input that was not predicted. This is the basic exception type
+    // from which all others are derived. So we assume it was a syntax error.
+    // You may get this if there are not more tokens and more are needed
+    // to complete a parse for instance.
+    //
+    ss <<"Syntax error.";
+    break;
+
+  case ANTLR3_MISMATCHED_TOKEN_EXCEPTION:
+
+    // We were expecting to see one thing and got another. This is the
+    // most common error if we could not detect a missing or unwanted token.
+    // Here you can spend your efforts to
+    // derive more useful error messages based on the expected
+    // token set and the last token and so on. The error following
+    // bitmaps do a good job of reducing the set that we were looking
+    // for down to something small. Knowing what you are parsing may be
+    // able to allow you to be even more specific about an error.
+    //
+    if(tokenNames == NULL) {
+      ss << "Syntax error.";
+    } else {
+      if(ex->expecting == ANTLR3_TOKEN_EOF) {
+        ss << "Expected end of file.";
+      } else if( ex->expecting == 0 ) {
+        ss << "Unexpected token: '" << tokenText((pANTLR3_COMMON_TOKEN)ex->token) << "'.";
+      } else {
+        ss << "Expected " << tokenNames[ex->expecting] << ".";
+      }
+    }
+    break;
+
+  case ANTLR3_NO_VIABLE_ALT_EXCEPTION:
+    // We could not pick any alt decision from the input given
+    // so god knows what happened - however when you examine your grammar,
+    // you should. It means that at the point where the current token occurred
+    // that the DFA indicates nowhere to go from here.
+    //
+    ss << "Unexpected token: '" << tokenText((pANTLR3_COMMON_TOKEN)ex->token) << "'.";
+    break;
+
+  case ANTLR3_MISMATCHED_SET_EXCEPTION:
+
+  {
+    ANTLR3_UINT32 count;
+    ANTLR3_UINT32 bit;
+    ANTLR3_UINT32 size;
+    ANTLR3_UINT32 numbits;
+    pANTLR3_BITSET errBits;
+
+    // This means we were able to deal with one of a set of
+    // possible tokens at this point, but we did not see any
+    // member of that set.
+    //
+    ss << "Unexpected input: '" << tokenText((pANTLR3_COMMON_TOKEN)ex->token)
+       << "'. Expected one of: ";
+
+    // What tokens could we have accepted at this point in the
+    // parse?
+    //
+    count = 0;
+    errBits = antlr3BitsetLoad(ex->expectingSet);
+    numbits = errBits->numBits(errBits);
+    size = errBits->size(errBits);
+
+    if(size > 0) {
+      // However many tokens we could have dealt with here, it is usually
+      // not useful to print ALL of the set here. I arbitrarily chose 8
+      // here, but you should do whatever makes sense for you of course.
+      // No token number 0, so look for bit 1 and on.
+      //
+      for(bit = 1; bit < numbits && count < 8 && count < size; bit++) {
+        // TODO: This doesn;t look right - should be asking if the bit is set!!
+        //
+        if(tokenNames[bit]) {
+          if( count++ > 0 ) {
+            ss << ", ";
+          }
+          ss << tokenNames[bit];
+        }
+      }
+    } else {
+      assert(false);//("Parse error with empty set of expected tokens.");
+    }
+  }
+    break;
+
+  case ANTLR3_EARLY_EXIT_EXCEPTION:
+
+    // We entered a loop requiring a number of token sequences
+    // but found a token that ended that sequence earlier than
+    // we should have done.
+    //
+    ss << "Sequence terminated early by token: '"
+       << tokenText((pANTLR3_COMMON_TOKEN)ex->token) << "'.";
+    break;
+
+  default:
+
+    // We don't handle any other exceptions here, but you can
+    // if you wish. If we get an exception that hits this point
+    // then we are just going to report what we know about the
+    // token.
+    //
+    assert(false);//("Unexpected exception in parser.");
+    break;
+  }
+
+  // Call the error display routine
+  input->parseError(ss.str(), ((pANTLR3_COMMON_TOKEN)ex->token)->type == ANTLR3_TOKEN_EOF);
+}
+
+///
+/// \brief
+/// Returns the next available token from the current input stream.
+///
+/// \param toksource
+/// Points to the implementation of a token source. The lexer is
+/// addressed by the super structure pointer.
+///
+/// \returns
+/// The next token in the current input stream or the EOF token
+/// if there are no more tokens.
+///
+/// \remarks
+/// Write remarks for nextToken here.
+///
+/// \see nextToken
+///
+/* *** CVC4 NOTE ***
+ * This is copied, largely unmodified, from antlr3lexer.c
+ *
+ */
+pANTLR3_COMMON_TOKEN
+AntlrInput::nextTokenStr (pANTLR3_TOKEN_SOURCE toksource)
+{
+  pANTLR3_LEXER lexer;
+
+  lexer = (pANTLR3_LEXER)(toksource->super);
+
+  /// Loop until we get a non skipped token or EOF
+  ///
+  for (;;)
+  {
+    // Get rid of any previous token (token factory takes care of
+    // any de-allocation when this token is finally used up.
+    //
+    lexer->rec->state->token = NULL;
+    lexer->rec->state->error = ANTLR3_FALSE; // Start out without an exception
+    lexer->rec->state->failed = ANTLR3_FALSE;
+
+    // Now call the matching rules and see if we can generate a new token
+    //
+    for (;;)
+    {
+      // Record the start of the token in our input stream.
+      //
+      lexer->rec->state->channel = ANTLR3_TOKEN_DEFAULT_CHANNEL;
+      lexer->rec->state->tokenStartCharIndex = lexer->input->istream->index(lexer->input->istream);
+      lexer->rec->state->tokenStartCharPositionInLine = lexer->input->getCharPositionInLine(lexer->input);
+      lexer->rec->state->tokenStartLine = lexer->input->getLine(lexer->input);
+      lexer->rec->state->text = NULL;
+
+      if (lexer->input->istream->_LA(lexer->input->istream, 1) == ANTLR3_CHARSTREAM_EOF)
+      {
+        // Reached the end of the current stream, nothing more to do if this is
+        // the last in the stack.
+        //
+        pANTLR3_COMMON_TOKEN teof = &(toksource->eofToken);
+
+        teof->setStartIndex (teof, lexer->getCharIndex(lexer));
+        teof->setStopIndex (teof, lexer->getCharIndex(lexer));
+        teof->setLine (teof, lexer->getLine(lexer));
+        teof->factoryMade = ANTLR3_TRUE; // This isn't really manufactured but it stops things from trying to free it
+        return teof;
+      }
+
+      lexer->rec->state->token = NULL;
+      lexer->rec->state->error = ANTLR3_FALSE; // Start out without an exception
+      lexer->rec->state->failed = ANTLR3_FALSE;
+
+      // Call the generated lexer, see if it can get a new token together.
+      //
+      lexer->mTokens(lexer->ctx);
+
+      if (lexer->rec->state->error == ANTLR3_TRUE)
+      {
+        // Recognition exception, report it and try to recover.
+        //
+        lexer->rec->state->failed = ANTLR3_TRUE;
+        // *** CVC4 EDIT: Just call the AntlrInput error routine
+        lexerError(lexer->rec);
+        lexer->recover(lexer);
+      }
+      else
+      {
+        if (lexer->rec->state->token == NULL)
+        {
+          // Emit the real token, which adds it in to the token stream basically
+          //
+          // *** CVC4 Edit: call emit on the lexer object
+          lexer->emit(lexer);
+        }
+        else if (lexer->rec->state->token == &(toksource->skipToken))
+        {
+          // A real token could have been generated, but "Computer say's naaaaah" and it
+          // it is just something we need to skip altogether.
+          //
+          continue;
+        }
+
+        // Good token, not skipped, not EOF token
+        //
+        return lexer->rec->state->token;
+      }
+    }
+  }
+}
+
+/* *** CVC4 NOTE ***
+ * This is copied, totaly unmodified, from antlr3lexer.c
+ * in order to use nextTokenStr previously defined.
+ *
+ */
+pANTLR3_COMMON_TOKEN
+AntlrInput::nextToken	    (pANTLR3_TOKEN_SOURCE toksource)
+{
+	pANTLR3_COMMON_TOKEN tok;
+
+	// Find the next token in the current stream
+	//
+	tok = nextTokenStr(toksource);
+
+	// If we got to the EOF token then switch to the previous
+	// input stream if there were any and just return the
+	// EOF if there are none. We must check the next token
+	// in any outstanding input stream we pop into the active
+	// role to see if it was sitting at EOF after PUSHing the
+	// stream we just consumed, otherwise we will return EOF
+	// on the reinstalled input stream, when in actual fact
+	// there might be more input streams to POP before the
+	// real EOF of the whole logical inptu stream. Hence we
+	// use a while loop here until we find somethign in the stream
+	// that isn't EOF or we reach the actual end of the last input
+	// stream on the stack.
+	//
+	while	(tok->type == ANTLR3_TOKEN_EOF)
+	{
+		pANTLR3_LEXER   lexer;
+
+		lexer   = (pANTLR3_LEXER)(toksource->super);
+
+		if  (lexer->rec->state->streams != NULL && lexer->rec->state->streams->size(lexer->rec->state->streams) > 0)
+		{
+			// We have another input stream in the stack so we
+			// need to revert to it, then resume the loop to check
+			// it wasn't sitting at EOF itself.
+			//
+			lexer->popCharStream(lexer);
+			tok = nextTokenStr(toksource);
+		}
+		else
+		{
+			// There were no more streams on the input stack
+			// so this EOF is the 'real' logical EOF for
+			// the input stream. So we just exit the loop and 
+			// return the EOF we have found.
+			//
+			break;
+		}
+		
+	}
+
+	// return whatever token we have, which may be EOF
+	//
+	return  tok;
+}
+
+
+
+} // namespace parser
+} // namespace CVC4
diff --git a/src/parser/antlr_line_buffered_input.cpp b/src/parser/antlr_line_buffered_input.cpp
new file mode 100644
index 0000000..22bbaf1
--- /dev/null
+++ b/src/parser/antlr_line_buffered_input.cpp
@@ -0,0 +1,379 @@
+/*********************                                                        */
+/*! \file antlr_line_buffered_input.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+// We rely on the inclusion of #include <antlr3.h> in
+//   "parser/antlr_line_buffered_input.h".
+// This is avoid having to undefine the symbols in <antlr3.h>.
+// See the documentation in "parser/antlr_undefines.h" for more
+// details.
+
+#include "parser/antlr_line_buffered_input.h"
+
+#include <iostream>
+#include <string>
+#include <cassert>
+
+#include "base/output.h"
+
+namespace CVC4 {
+namespace parser {
+
+static pANTLR3_INPUT_STREAM    antlr3CreateLineBufferedStream(std::istream& in);
+
+static void
+setupInputStream(pANTLR3_INPUT_STREAM input)
+{
+#if 0
+    ANTLR3_BOOLEAN  isBigEndian;
+
+    // Used to determine the endianness of the machine we are currently
+    // running on.
+    //
+    ANTLR3_UINT16 bomTest = 0xFEFF;
+
+    // What endianess is the machine we are running on? If the incoming
+    // encoding endianess is the same as this machine's natural byte order
+    // then we can use more efficient API calls.
+    //
+    if  (*((pANTLR3_UINT8)(&bomTest)) == 0xFE)
+    {
+        isBigEndian = ANTLR3_TRUE;
+    }
+    else
+    {
+        isBigEndian = ANTLR3_FALSE;
+    }
+
+    // What encoding did the user tell us {s}he thought it was? I am going
+    // to get sick of the questions on antlr-interest, I know I am.
+    //
+    switch  (input->encoding)
+    {
+        case    ANTLR3_ENC_UTF8:
+
+            // See if there is a BOM at the start of this UTF-8 sequence
+            // and just eat it if there is. Windows .TXT files have this for instance
+            // as it identifies UTF-8 even though it is of no consequence for byte order
+            // as UTF-8 does not have a byte order.
+            //
+            if  (       (ANTLR3_UINT8)(*((pANTLR3_UINT8)input->nextChar))      == 0xEF
+                    &&  (ANTLR3_UINT8)(*((pANTLR3_UINT8)input->nextChar+1))    == 0xBB
+                    &&  (ANTLR3_UINT8)(*((pANTLR3_UINT8)input->nextChar+2))    == 0xBF
+                )
+            {
+                // The UTF8 BOM is present so skip it
+                //
+                input->nextChar = (void *)((pANTLR3_UINT8)input->nextChar + 3);
+            }
+
+            // Install the UTF8 input routines
+            //
+            antlr3UTF8SetupStream(input);
+            break;
+
+        case    ANTLR3_ENC_UTF16:
+
+            // See if there is a BOM at the start of the input. If not then
+            // we assume that the byte order is the natural order of this
+            // machine (or it is really UCS2). If there is a BOM we determine if the encoding
+            // is the same as the natural order of this machine.
+            //
+            if  (       (ANTLR3_UINT8)(*((pANTLR3_UINT8)input->nextChar))      == 0xFE
+                    &&  (ANTLR3_UINT8)(*((pANTLR3_UINT8)input->nextChar+1))    == 0xFF
+                )
+            {
+                // BOM Present, indicates Big Endian
+                //
+                input->nextChar = (void *)((pANTLR3_UINT8)input->nextChar + 2);
+
+                antlr3UTF16SetupStream(input, isBigEndian, ANTLR3_TRUE);
+            }
+            else if  (      (ANTLR3_UINT8)(*((pANTLR3_UINT8)input->nextChar))      == 0xFF
+                        &&  (ANTLR3_UINT8)(*((pANTLR3_UINT8)input->nextChar+1))    == 0xFE
+                )
+            {
+                // BOM present, indicates Little Endian
+                //
+                input->nextChar = (void *)((pANTLR3_UINT8)input->nextChar + 2);
+
+                antlr3UTF16SetupStream(input, isBigEndian, ANTLR3_FALSE);
+            }
+            else
+            {
+                // No BOM present, assume local computer byte order
+                //
+                antlr3UTF16SetupStream(input, isBigEndian, isBigEndian);
+            }
+            break;
+
+        case    ANTLR3_ENC_UTF32:
+
+            // See if there is a BOM at the start of the input. If not then
+            // we assume that the byte order is the natural order of this
+            // machine. If there is we determine if the encoding
+            // is the same as the natural order of this machine.
+            //
+            if  (       (ANTLR3_UINT8)(*((pANTLR3_UINT8)input->nextChar))      == 0x00
+                    &&  (ANTLR3_UINT8)(*((pANTLR3_UINT8)input->nextChar+1))    == 0x00
+                    &&  (ANTLR3_UINT8)(*((pANTLR3_UINT8)input->nextChar+2))    == 0xFE
+                    &&  (ANTLR3_UINT8)(*((pANTLR3_UINT8)input->nextChar+3))    == 0xFF
+                )
+            {
+                // BOM Present, indicates Big Endian
+                //
+                input->nextChar = (void *)((pANTLR3_UINT8)input->nextChar + 4);
+
+                antlr3UTF32SetupStream(input, isBigEndian, ANTLR3_TRUE);
+            }
+            else if  (      (ANTLR3_UINT8)(*((pANTLR3_UINT8)input->nextChar))      == 0xFF
+                        &&  (ANTLR3_UINT8)(*((pANTLR3_UINT8)input->nextChar+1))    == 0xFE
+                        &&  (ANTLR3_UINT8)(*((pANTLR3_UINT8)input->nextChar+1))    == 0x00
+                        &&  (ANTLR3_UINT8)(*((pANTLR3_UINT8)input->nextChar+1))    == 0x00
+                )
+            {
+                // BOM present, indicates Little Endian
+                //
+                input->nextChar = (void *)((pANTLR3_UINT8)input->nextChar + 4);
+
+                antlr3UTF32SetupStream(input, isBigEndian, ANTLR3_FALSE);
+            }
+            else
+            {
+                // No BOM present, assume local computer byte order
+                //
+                antlr3UTF32SetupStream(input, isBigEndian, isBigEndian);
+            }
+            break;
+
+        case    ANTLR3_ENC_UTF16BE:
+
+            // Encoding is definately Big Endian with no BOM
+            //
+            antlr3UTF16SetupStream(input, isBigEndian, ANTLR3_TRUE);
+            break;
+
+        case    ANTLR3_ENC_UTF16LE:
+
+            // Encoding is definately Little Endian with no BOM
+            //
+            antlr3UTF16SetupStream(input, isBigEndian, ANTLR3_FALSE);
+            break;
+
+        case    ANTLR3_ENC_UTF32BE:
+
+            // Encoding is definately Big Endian with no BOM
+            //
+            antlr3UTF32SetupStream(input, isBigEndian, ANTLR3_TRUE);
+            break;
+
+        case    ANTLR3_ENC_UTF32LE:
+
+            // Encoding is definately Little Endian with no BOM
+            //
+            antlr3UTF32SetupStream(input, isBigEndian, ANTLR3_FALSE);
+            break;
+
+        case    ANTLR3_ENC_EBCDIC:
+
+            // EBCDIC is basically the same as ASCII but with an on the
+            // fly translation to ASCII
+            //
+            antlr3EBCDICSetupStream(input);
+            break;
+
+        case    ANTLR3_ENC_8BIT:
+        default:
+
+            // Standard 8bit/ASCII
+            //
+            antlr38BitSetupStream(input);
+            break;
+    }
+#endif /* 0 */
+}
+
+static ANTLR3_UCHAR
+myLA(pANTLR3_INT_STREAM is, ANTLR3_INT32 la) {
+    pANTLR3_INPUT_STREAM input;
+
+    input   = ((pANTLR3_INPUT_STREAM) (is->super));
+
+    Debug("pipe") << "LA" << std::endl;
+    if	(( ((pANTLR3_UINT8)input->nextChar) + la - 1) >= (((pANTLR3_UINT8)input->data) + input->sizeBuf))
+    {
+      std::istream& in = *((CVC4::parser::pANTLR3_LINE_BUFFERED_INPUT_STREAM)input)->in;
+      //MGD
+      // in.clear();
+      if(!in) {
+        Debug("pipe") << "EOF" << std::endl;
+        return	ANTLR3_CHARSTREAM_EOF;
+      }
+      Debug("pipe") << "READ" << std::endl;
+      if(input->data == NULL) {
+        Debug("pipe") << "ALLOC" << std::endl;
+        input->data = malloc(1024);
+        input->nextChar = input->data;
+      } else {
+        Debug("pipe") << "REALLOC" << std::endl;
+        size_t pos = (char*)input->nextChar - (char*)input->data;
+        input->data = realloc(input->data, input->sizeBuf + 1024);
+        input->nextChar = (char*)input->data + pos;
+      }
+      in.getline((((char*)input->data) + input->sizeBuf), 1024);
+      while(in.fail() && !in.eof()) {
+        Debug("pipe") << "input string too long, reallocating" << std::endl;
+        input->sizeBuf += strlen(((char*)input->data) + input->sizeBuf);
+        size_t pos = (char*)input->nextChar - (char*)input->data;
+        input->data = realloc(input->data, input->sizeBuf + 1024);
+        input->nextChar = (char*)input->data + pos;
+        in.clear();
+        in.getline((((char*)input->data) + input->sizeBuf), 1024);
+      }
+      input->sizeBuf += strlen(((char*)input->data) + input->sizeBuf);
+      assert(*(((char*)input->data) + input->sizeBuf) == '\0');
+      Debug("pipe") << "SIZEBUF now " << input->sizeBuf << std::endl;
+      *(((char*)input->data) + input->sizeBuf) = '\n';
+      ++input->sizeBuf;
+    }
+
+    Debug("pipe") << "READ POINTER[" << la << "] AT: >>" << std::string(((char*)input->nextChar), input->sizeBuf - (((char*)input->nextChar) - (char*)input->data)) << "<< returning '" << (char)(*((pANTLR3_UINT8)input->nextChar + la - 1)) << "' (" << (unsigned)(*((pANTLR3_UINT8)input->nextChar + la - 1)) << ")" << std::endl;
+    return	(ANTLR3_UCHAR)(*((pANTLR3_UINT8)input->nextChar + la - 1));
+}
+
+
+static void
+myConsume(pANTLR3_INT_STREAM is)
+{
+    pANTLR3_INPUT_STREAM input;
+
+    input   = ((pANTLR3_INPUT_STREAM) (is->super));
+
+    Debug("pipe") << "consume! '" << *(char*)input->nextChar << "' (" << (unsigned)*(char*)input->nextChar << ")" << std::endl;
+    if	((pANTLR3_UINT8)(input->nextChar) < (((pANTLR3_UINT8)input->data) + input->sizeBuf))
+    {
+	/* Indicate one more character in this line
+	 */
+	input->charPositionInLine++;
+
+	if  ((ANTLR3_UCHAR)(*((pANTLR3_UINT8)input->nextChar)) == input->newlineChar)
+	{
+	    /* Reset for start of a new line of input
+	     */
+	    input->line++;
+	    input->charPositionInLine	= 0;
+	    input->currentLine		= (void *)(((pANTLR3_UINT8)input->nextChar) + 1);
+            Debug("pipe") << "-- newline!" << std::endl;
+	}
+
+	/* Increment to next character position
+	 */
+	input->nextChar = (void *)(((pANTLR3_UINT8)input->nextChar) + 1);
+        Debug("pipe") << "-- advance nextChar! looking at '" << *(char*)input->nextChar << "' (" << (unsigned)*(char*)input->nextChar << ")" << std::endl;
+    } else Debug("pipe") << "-- nothing!" << std::endl;
+}
+
+pANTLR3_INPUT_STREAM
+antlr3LineBufferedStreamNew(std::istream& in, ANTLR3_UINT32 encoding, pANTLR3_UINT8 name)
+{
+    pANTLR3_INPUT_STREAM    input;
+
+    if(!in) {
+      return NULL;
+    }
+
+    // First order of business is to set up the stream and install the data pointer.
+    // Then we will work out the encoding and byte order and adjust the API functions that are installed for the
+    // default 8Bit stream accordingly.
+    //
+    input   = antlr3CreateLineBufferedStream(in);
+    if  (input == NULL)
+    {
+        return NULL;
+    }
+
+    // Size (in bytes) of the given 'string'
+    //
+    input->sizeBuf		= 0;
+
+    input->istream->_LA		= myLA;
+    input->istream->consume	= myConsume;
+
+#ifndef CVC4_ANTLR3_OLD_INPUT_STREAM
+    // We have the data in memory now so we can deal with it according to
+    // the encoding scheme we were given by the user.
+    //
+    input->encoding = encoding;
+#endif /* ! CVC4_ANTLR3_OLD_INPUT_STREAM */
+
+    // Now we need to work out the endian type and install any
+    // API functions that differ from 8Bit
+    //
+    setupInputStream(input);
+
+    // Now we can set up the file name
+    //
+    input->istream->streamName	= input->strFactory->newStr8(input->strFactory, name);
+    input->fileName		= input->istream->streamName;
+
+    return input;
+}
+
+static pANTLR3_INPUT_STREAM
+antlr3CreateLineBufferedStream(std::istream& in)
+{
+	// Pointer to the input stream we are going to create
+	//
+	pANTLR3_INPUT_STREAM    input;
+
+	if	(!in)
+	{
+		return NULL;
+	}
+
+	// Allocate memory for the input stream structure
+	//
+	input   = (pANTLR3_INPUT_STREAM)
+		ANTLR3_CALLOC(1, sizeof(ANTLR3_LINE_BUFFERED_INPUT_STREAM));
+
+	if	(input == NULL)
+	{
+		return	NULL;
+	}
+
+	// Structure was allocated correctly, now we can install the pointer
+	//
+        input->data             = malloc(1024);
+        input->isAllocated	= ANTLR3_FALSE;
+
+        ((pANTLR3_LINE_BUFFERED_INPUT_STREAM)input)->in = ∈
+	// Call the common 8 bit input stream handler
+	// initialization.
+	//
+#ifdef CVC4_ANTLR3_OLD_INPUT_STREAM
+	antlr3AsciiSetupStream(input, ANTLR3_CHARSTREAM);
+#else /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+	antlr38BitSetupStream(input);
+        // In some libantlr3c 3.4-beta versions, this call is not included in the above.
+        // This is probably an erroneously-deleted line in the libantlr3c source since 3.2.
+	antlr3GenericSetupStream(input);
+#endif /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+
+        return  input;
+}
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
diff --git a/src/parser/antlr_line_buffered_input.h b/src/parser/antlr_line_buffered_input.h
new file mode 100644
index 0000000..2c01a9b
--- /dev/null
+++ b/src/parser/antlr_line_buffered_input.h
@@ -0,0 +1,44 @@
+/*********************                                                        */
+/*! \file antlr_line_buffered_input.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+// These headers should be the first two included.
+// See the documentation in "parser/antlr_undefines.h" for more details.
+#include <antlr3.h>
+#include "parser/antlr_undefines.h"
+
+#include "cvc4parser_private.h"
+
+#ifndef __CVC4__PARSER__ANTLR_LINE_BUFFERED_INPUT_H
+#define __CVC4__PARSER__ANTLR_LINE_BUFFERED_INPUT_H
+
+#include <istream>
+
+namespace CVC4 {
+namespace parser {
+
+typedef struct ANTLR3_LINE_BUFFERED_INPUT_STREAM {
+  ANTLR3_INPUT_STREAM antlr;
+  std::istream* in;
+} *pANTLR3_LINE_BUFFERED_INPUT_STREAM;
+
+pANTLR3_INPUT_STREAM
+antlr3LineBufferedStreamNew(std::istream& in, ANTLR3_UINT32 encoding, pANTLR3_UINT8 name);
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PARSER__ANTLR_LINE_BUFFERED_INPUT_H */
diff --git a/src/parser/antlr_tracing.h b/src/parser/antlr_tracing.h
new file mode 100644
index 0000000..93a7817
--- /dev/null
+++ b/src/parser/antlr_tracing.h
@@ -0,0 +1,86 @@
+/*********************                                                        */
+/*! \file antlr_tracing.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#ifndef __CVC4__PARSER__ANTLR_TRACING_H
+#define __CVC4__PARSER__ANTLR_TRACING_H
+
+// only enable the hack with -DCVC4_TRACE_ANTLR
+#ifdef CVC4_TRACE_ANTLR
+
+#include <iostream>
+#include <string>
+
+#include "base/output.h"
+
+/* The ANTLR lexer generator, as of v3.2, puts Java trace commands
+ * into our beautiful generated C lexer!  How awful!  This is clearly
+ * a bug (the parser generator traces with printf()), but we have to
+ * do something about it.  Basically, the things look like this:
+ *
+ *   System.out.println("something"+somethingElse+"another thing");
+ *
+ * What to do to make this C++?!  Alas, you cannot
+ * "#define System.out.println", because it has dots in it.
+ * So we do the following.  Sigh.
+ *
+ * This is all C++, and the generated lexer/parser is C++, but that's
+ * ok here, we use the C++ compiler anyway!  Plus, this is only code
+ * for **debugging** lexers and parsers.
+ */
+
+/** A "System" object, just like in Java! */
+static struct __Cvc4System {
+  /**
+   * Helper class just to handle arbitrary string concatenation
+   * with Java syntax.  In C++ you cannot do "char*" + "char*",
+   * so instead we fool the type system into calling
+   * JavaPrinter::operator+() for each item successively.
+   */
+  struct JavaPrinter {
+    template <class T>
+    JavaPrinter operator+(const T& t) const {
+      Message() << t;
+      return JavaPrinter();
+    }
+  };/* struct JavaPrinter */
+
+  /** A "System.out" object, just like in Java! */
+  struct {
+    /**
+     * By the time println() is called, we've completely
+     * evaluated (and thus printed) its entire argument, thanks
+     * to the call-by-value semantics of C.  All that's left to
+     * do is print the newline.
+     */
+    void println(JavaPrinter) { Message() << std::endl; }
+  } out;
+} System;
+
+// Now define println(): this kicks off the successive operator+() calls
+// Also define "failed" because ANTLR 3.3 uses "failed" improperly.
+// These are highly dependent on the bugs in a particular ANTLR release.
+// These seem to work with ANTLR 3.3 as of 4/23/2011.  A different trick
+// works with ANTLR 3.2.  EXPECT LOTS OF COMPILER WARNINGS.
+#define println(x) println(({int failed=0;__Cvc4System::JavaPrinter()+x;}))
+#undef ANTLR3_FPRINTF
+#define ANTLR3_FPRINTF(args...) {int failed=0;fprintf(args);}
+#undef ANTLR3_PRINTF
+#define ANTLR3_PRINTF(args...) {int failed=0;printf(args);}
+
+#endif /* CVC4_TRACE_ANTLR */
+
+#endif /* __CVC4__PARSER__ANTLR_TRACING_H */
diff --git a/src/parser/antlr_undefines.h b/src/parser/antlr_undefines.h
new file mode 100644
index 0000000..edf64c8
--- /dev/null
+++ b/src/parser/antlr_undefines.h
@@ -0,0 +1,69 @@
+/*********************                                                        */
+/*! \file antlr_undefines.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Every usage undefines standard autotools macro names.
+ **
+ ** This header is very sensitive and it should be understood *in full* before
+ ** it is used or *moved* in position relative to other headers.
+ **
+ ** Including this header runs #undef on the following identifiers:
+ ** - PACKAGE_BUGREPORT,
+ ** - PACKAGE_NAME
+ ** - PACKAGE_STRING
+ ** - PACKAGE_TARNAME
+ ** - PACKAGE_VERSION
+ **
+ ** This is to solves a problem caused by antlr and cvc4 both defining these
+ ** symbols. This has to do with both packages using autotools in a slightly
+ ** dicey way. This was reported by us a long time ago, but most versions
+ ** of libantlr are quite old (3.2).
+ ** http://www.antlr3.org/pipermail/antlr-interest/2010-March/037859.html
+ **
+ ** The source of both of these two definitions are given below.
+ **
+ ** From antlr, the autogenerated antlr lexers and parsers include antlr3.h.
+ ** The chain of inclusions is:
+ **  Lang{Lexer,Parser}.h -> <antlr3.h> -> <antlr3config.h> -> <antlr3defs.h>
+ **
+ ** where Lang is in {Smt1,Smt2,Tptp,Cvc}.
+ **
+ ** From CVC4, the parsers use Debug("...") and other features from
+ ** "base/output.h". This is a cvc4_private_library.h header file. This means
+ ** the files is usable while building the driver and parsers, but is otherwise
+ ** conceptually the same as a cvc4_private.h header. (If that sounds sketchy,
+ ** it is sure is! [See src/DESIGN.txt for more details].)
+ ** The include chain is then
+ **  "base/output.h" -> "cvc4_private_library.h" -> "cvc4_private.h" ->
+ **     "cvc4autoconfig.h".
+ ** The file cvc4autoconfig.h is autogenerated by autotools and can be found in
+ **   builds/<arch>/<target>/cvc4autoconfig.h
+ **
+ ** Thus a working solution is to include this header immediately after all
+ ** locations of #include <antlr3.h>. This includes all autogenerated files.
+ ** This potentially has to be repeated so this header should not be guarded.
+ **
+ ** To ensure that we do not remove cvc4's versions and use antlr's by mistake
+ ** #include <antlr3.h> needs to proceed any other includes like
+ ** #include "cvc4parser_private.h".
+ **
+ ** It is worth noting that future version of antlr can both not define these
+ ** macros and may generate different code. This is at best a stop gap
+ ** solution.
+ **
+ ** Every location this header is included needs to be documented.
+ ** When in doubt do not move this header!
+ **/
+
+#undef PACKAGE_BUGREPORT
+#undef PACKAGE_NAME
+#undef PACKAGE_STRING
+#undef PACKAGE_TARNAME
+#undef PACKAGE_VERSION
diff --git a/src/parser/bounded_token_buffer.cpp b/src/parser/bounded_token_buffer.cpp
new file mode 100644
index 0000000..31a2219
--- /dev/null
+++ b/src/parser/bounded_token_buffer.cpp
@@ -0,0 +1,538 @@
+/*********************                                                        */
+/*! \file bounded_token_buffer.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An ANTLR3 bounded token stream implementation. 
+ **
+ ** An ANTLR3 bounded token stream implementation. 
+ ** This code is largely based on the original token buffer implementation
+ ** in libantlr3c, by Jim Idle.
+ **/
+
+/// \file 
+/// Default implementation of CommonTokenStream
+///
+
+// [The "BSD licence"]
+// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
+// http://www.temporal-wave.com
+// http://www.linkedin.com/in/jimidle
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+// 3. The name of the author may not be used to endorse or promote products
+//    derived from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <antlr3commontoken.h>
+#include <antlr3lexer.h>
+#include <antlr3tokenstream.h>
+
+#include "parser/bounded_token_buffer.h"
+#include <cassert>
+
+namespace CVC4 {
+namespace parser {
+
+#ifdef	ANTLR3_WINDOWS
+#pragma warning( disable : 4100 )
+#endif
+
+// TOKEN_STREAM API 
+//
+static pANTLR3_COMMON_TOKEN tokLT				(pANTLR3_TOKEN_STREAM ts, ANTLR3_INT32 k);
+static pANTLR3_COMMON_TOKEN dbgTokLT			(pANTLR3_TOKEN_STREAM ts, ANTLR3_INT32 k);
+static pANTLR3_COMMON_TOKEN get					(pANTLR3_TOKEN_STREAM ts, ANTLR3_UINT32 i);
+static pANTLR3_TOKEN_SOURCE getTokenSource		(pANTLR3_TOKEN_STREAM ts);
+static void					setTokenSource		(pANTLR3_TOKEN_STREAM ts, pANTLR3_TOKEN_SOURCE tokenSource);
+static pANTLR3_STRING	    toString			(pANTLR3_TOKEN_STREAM ts);
+static pANTLR3_STRING	    toStringSS			(pANTLR3_TOKEN_STREAM ts, ANTLR3_UINT32 start, ANTLR3_UINT32 stop);
+static pANTLR3_STRING	    toStringTT			(pANTLR3_TOKEN_STREAM ts, pANTLR3_COMMON_TOKEN start, pANTLR3_COMMON_TOKEN stop);
+static void					setDebugListener	(pANTLR3_TOKEN_STREAM ts, pANTLR3_DEBUG_EVENT_LISTENER debugger);
+
+// INT STREAM API
+//
+static void					consume						(pANTLR3_INT_STREAM is);
+static void					dbgConsume					(pANTLR3_INT_STREAM is);
+static ANTLR3_UINT32	    _LA							(pANTLR3_INT_STREAM is, ANTLR3_INT32 i);
+static ANTLR3_UINT32	    dbgLA						(pANTLR3_INT_STREAM is, ANTLR3_INT32 i);
+static ANTLR3_MARKER	    mark						(pANTLR3_INT_STREAM is);
+static ANTLR3_MARKER	    dbgMark						(pANTLR3_INT_STREAM is);
+static void					release						(pANTLR3_INT_STREAM is, ANTLR3_MARKER mark);
+static ANTLR3_UINT32	    size						(pANTLR3_INT_STREAM is);
+static ANTLR3_MARKER		tindex						(pANTLR3_INT_STREAM is);
+static void					rewindStream				(pANTLR3_INT_STREAM is, ANTLR3_MARKER marker);
+static void					dbgRewindStream				(pANTLR3_INT_STREAM is, ANTLR3_MARKER marker);
+static void					rewindLast					(pANTLR3_INT_STREAM is);
+static void					dbgRewindLast				(pANTLR3_INT_STREAM is);
+static void					seek						(pANTLR3_INT_STREAM is, ANTLR3_MARKER index);
+static void					dbgSeek						(pANTLR3_INT_STREAM is, ANTLR3_MARKER index);
+static pANTLR3_STRING		getSourceName				(pANTLR3_INT_STREAM is);
+
+static pANTLR3_COMMON_TOKEN nextToken(pBOUNDED_TOKEN_BUFFER buffer);
+
+void
+BoundedTokenBufferFree(pBOUNDED_TOKEN_BUFFER buffer) {
+  buffer->commonTstream->free(buffer->commonTstream);
+  ANTLR3_FREE(buffer->tokenBuffer);
+  ANTLR3_FREE(buffer);
+}
+
+
+/*ANTLR3_API pANTLR3_COMMON_TOKEN_STREAM
+antlr3CommonTokenDebugStreamSourceNew(ANTLR3_UINT32 hint, pANTLR3_TOKEN_SOURCE source, pANTLR3_DEBUG_EVENT_LISTENER debugger)
+{
+    pANTLR3_COMMON_TOKEN_STREAM	stream;
+
+	// Create a standard token stream
+	//
+	stream = antlr3CommonTokenStreamSourceNew(hint, source);
+
+	// Install the debugger object
+	//
+	stream->tstream->debugger = debugger;
+
+	// Override standard token stream methods with debugging versions
+	//
+	stream->tstream->initialStreamState	= ANTLR3_FALSE;
+
+	stream->tstream->_LT				= dbgTokLT;
+
+	stream->tstream->istream->consume		= dbgConsume;
+	stream->tstream->istream->_LA			= dbgLA;
+	stream->tstream->istream->mark			= dbgMark;
+	stream->tstream->istream->rewind		= dbgRewindStream;
+	stream->tstream->istream->rewindLast	= dbgRewindLast;
+	stream->tstream->istream->seek			= dbgSeek;
+
+	return stream;
+}*/
+
+pBOUNDED_TOKEN_BUFFER BoundedTokenBufferSourceNew(ANTLR3_UINT32 k,
+                                                  pANTLR3_TOKEN_SOURCE source) {
+  pBOUNDED_TOKEN_BUFFER buffer;
+  pANTLR3_COMMON_TOKEN_STREAM stream;
+
+  assert(k > 0);
+
+  /* Memory for the interface structure */
+  buffer =
+      (pBOUNDED_TOKEN_BUFFER)ANTLR3_MALLOC(sizeof(BOUNDED_TOKEN_BUFFER_struct));
+
+  if (buffer == NULL) {
+    return NULL;
+  }
+
+  buffer->tokenBuffer = (pANTLR3_COMMON_TOKEN*)ANTLR3_MALLOC(
+      2 * k * sizeof(pANTLR3_COMMON_TOKEN));
+  if (buffer->tokenBuffer == NULL) {
+    ANTLR3_FREE(buffer);
+    return NULL;
+  }
+
+  buffer->currentIndex = 0;
+  buffer->maxIndex = 0;
+  buffer->k = k;
+  buffer->bufferSize = 2 * k;
+  buffer->empty = ANTLR3_TRUE;
+  buffer->done = ANTLR3_FALSE;
+
+  stream = antlr3CommonTokenStreamSourceNew(k, source);
+  if (stream == NULL) {
+    ANTLR3_FREE(buffer->tokenBuffer);
+    ANTLR3_FREE(buffer);
+    return NULL;
+  }
+
+  stream->super = buffer;
+  buffer->commonTstream = stream;
+
+  /* Defaults */
+  stream->p = -1;
+
+  /* Install the token stream API */
+  stream->tstream->_LT = tokLT;
+  stream->tstream->get = get;
+  stream->tstream->getTokenSource = getTokenSource;
+  stream->tstream->setTokenSource = setTokenSource;
+  stream->tstream->toString = toString;
+  stream->tstream->toStringSS = toStringSS;
+  stream->tstream->toStringTT = toStringTT;
+  stream->tstream->setDebugListener = setDebugListener;
+
+  /* Install INT_STREAM interface */
+  stream->tstream->istream->_LA = _LA;
+  stream->tstream->istream->mark = mark;
+  stream->tstream->istream->release = release;
+  stream->tstream->istream->size = size;
+  stream->tstream->istream->index = tindex;
+  stream->tstream->istream->rewind = rewindStream;
+  stream->tstream->istream->rewindLast = rewindLast;
+  stream->tstream->istream->seek = seek;
+  stream->tstream->istream->consume = consume;
+  stream->tstream->istream->getSourceName = getSourceName;
+
+  return buffer;
+}
+
+// Install a debug listener adn switch to debug mode methods
+//
+static void					
+setDebugListener	(pANTLR3_TOKEN_STREAM ts, pANTLR3_DEBUG_EVENT_LISTENER debugger)
+{
+		// Install the debugger object
+	//
+	ts->debugger = debugger;
+
+	// Override standard token stream methods with debugging versions
+	//
+	ts->initialStreamState	= ANTLR3_FALSE;
+
+	ts->_LT				= dbgTokLT;
+
+	ts->istream->consume		= dbgConsume;
+	ts->istream->_LA			= dbgLA;
+	ts->istream->mark			= dbgMark;
+	ts->istream->rewind			= dbgRewindStream;
+	ts->istream->rewindLast		= dbgRewindLast;
+	ts->istream->seek			= dbgSeek;
+}
+
+/** Get the ith token from the current position 1..n where k=1 is the
+*  first symbol of lookahead.
+*/
+static pANTLR3_COMMON_TOKEN tokLT(pANTLR3_TOKEN_STREAM ts, ANTLR3_INT32 k) {
+  pANTLR3_COMMON_TOKEN_STREAM cts;
+  pBOUNDED_TOKEN_BUFFER buffer;
+
+  cts = (pANTLR3_COMMON_TOKEN_STREAM) ts->super;
+  buffer = (pBOUNDED_TOKEN_BUFFER) cts->super;
+
+  /* k must be in the range [-buffer->k..buffer->k] */
+  assert( k <= (ANTLR3_INT32)buffer->k 
+                && -k <= (ANTLR3_INT32)buffer->k );
+
+  if(k == 0) {
+    return NULL;
+  }
+
+  /* Initialize the buffer on our first call. */
+  if( __builtin_expect( (buffer->empty == ANTLR3_TRUE), false ) ) {
+    assert( buffer->tokenBuffer != NULL );
+    buffer->tokenBuffer[ 0 ] = nextToken(buffer);
+    buffer->maxIndex = 0;
+    buffer->currentIndex = 0;
+    buffer->empty = ANTLR3_FALSE;
+  }
+
+  ANTLR3_UINT32 kIndex;
+  if( k > 0 ) {
+    /* look-ahead token k is at offset k-1 */
+    kIndex = buffer->currentIndex + k - 1;
+  } else {
+    /* Can't look behind more tokens than we've consumed. */
+    assert( -k <= (ANTLR3_INT32)buffer->currentIndex );
+    /* look-behind token k is at offset -k */
+    kIndex = buffer->currentIndex + k;
+  }
+
+  while( kIndex > buffer->maxIndex ) {
+    buffer->maxIndex++;
+    buffer->tokenBuffer[ buffer->maxIndex % buffer->bufferSize ] = nextToken(buffer);
+  }
+
+  return buffer->tokenBuffer[ kIndex % buffer->bufferSize ];
+}
+
+
+/// As per the normal tokLT but sends information to the debugger
+///
+static pANTLR3_COMMON_TOKEN 
+dbgTokLT  (pANTLR3_TOKEN_STREAM ts, ANTLR3_INT32 k)
+{
+	return tokLT(ts, k);
+}
+
+#ifdef	ANTLR3_WINDOWS
+	/* When fully optimized VC7 complains about non reachable code.
+	 * Not yet sure if this is an optimizer bug, or a bug in the flow analysis
+	 */
+#pragma warning( disable : 4702 )
+#endif
+
+static pANTLR3_COMMON_TOKEN 
+get (pANTLR3_TOKEN_STREAM ts, ANTLR3_UINT32 i)
+{
+    assert(false);// unimplemented
+    return NULL;
+}
+
+static pANTLR3_TOKEN_SOURCE 
+getTokenSource	(pANTLR3_TOKEN_STREAM ts)
+{
+    return  ts->tokenSource;
+}
+
+static void
+setTokenSource	(   pANTLR3_TOKEN_STREAM ts,
+		    pANTLR3_TOKEN_SOURCE tokenSource)
+{
+    ts->tokenSource	= tokenSource;
+}
+
+static pANTLR3_STRING	    
+toString    (pANTLR3_TOKEN_STREAM ts)
+{
+  assert(false);// unimplemented
+  return NULL;
+}
+
+static pANTLR3_STRING
+toStringSS(pANTLR3_TOKEN_STREAM ts, ANTLR3_UINT32 start, ANTLR3_UINT32 stop)
+{
+  assert(false);// unimplemented
+  return NULL;
+}
+
+static pANTLR3_STRING	    
+toStringTT  (pANTLR3_TOKEN_STREAM ts, pANTLR3_COMMON_TOKEN start, pANTLR3_COMMON_TOKEN stop)
+{
+  assert(false);// unimplemented
+  return NULL;
+}
+
+/** Move the input pointer to the next incoming token.  The stream
+ *  must become active with LT(1) available.  consume() simply
+ *  moves the input pointer so that LT(1) points at the next
+ *  input symbol. Consume at least one token.
+ *
+ *  Walk past any token not on the channel the parser is listening to.
+ */
+static void		    
+consume	(pANTLR3_INT_STREAM is)
+{
+	pANTLR3_COMMON_TOKEN_STREAM cts;
+	pANTLR3_TOKEN_STREAM	ts;
+	pBOUNDED_TOKEN_BUFFER buffer;
+
+	ts	    = (pANTLR3_TOKEN_STREAM)	    is->super;
+	cts	    = (pANTLR3_COMMON_TOKEN_STREAM) ts->super;
+	buffer      = (pBOUNDED_TOKEN_BUFFER)     cts->super;
+
+	buffer->currentIndex++;
+}
+
+
+/// As per ordinary consume but notifies the debugger about hidden
+/// tokens and so on.
+///
+static void
+dbgConsume	(pANTLR3_INT_STREAM is)
+{
+    consume(is);
+}
+
+static ANTLR3_UINT32	    
+_LA  (pANTLR3_INT_STREAM is, ANTLR3_INT32 i)
+{
+	pANTLR3_TOKEN_STREAM    ts;
+	pANTLR3_COMMON_TOKEN    tok;
+
+	ts	    = (pANTLR3_TOKEN_STREAM)	    is->super;
+
+	tok	    =  ts->_LT(ts, i);
+
+	if	(tok != NULL)
+	{
+		return	tok->getType(tok);
+	}
+	else
+	{
+		return	ANTLR3_TOKEN_INVALID;
+	}
+}
+
+/// As per _LA() but for debug mode.
+///
+static ANTLR3_UINT32	    
+dbgLA  (pANTLR3_INT_STREAM is, ANTLR3_INT32 i)
+{
+  assert(false);
+  return 0;
+}
+
+static ANTLR3_MARKER
+mark	(pANTLR3_INT_STREAM is)
+{
+  is->lastMarker = is->index(is);
+  return  is->lastMarker;
+}
+
+/// As per mark() but with a call to tell the debugger we are doing this
+///
+static ANTLR3_MARKER
+dbgMark	(pANTLR3_INT_STREAM is)
+{
+  assert(false);
+  return 0;
+}
+
+static void		    
+release	(pANTLR3_INT_STREAM is, ANTLR3_MARKER mark)
+{
+    return;
+}
+
+static ANTLR3_UINT32	    
+size	(pANTLR3_INT_STREAM is)
+{
+  assert(false);
+  return 0;
+}
+
+static ANTLR3_MARKER   
+tindex	(pANTLR3_INT_STREAM is)
+{
+  pANTLR3_COMMON_TOKEN_STREAM cts;
+  pANTLR3_TOKEN_STREAM        ts;
+  pBOUNDED_TOKEN_BUFFER buffer;
+
+  ts      = (pANTLR3_TOKEN_STREAM)        is->super;
+  cts     = (pANTLR3_COMMON_TOKEN_STREAM) ts->super;
+  buffer      = (pBOUNDED_TOKEN_BUFFER)     cts->super;
+
+  return  buffer->currentIndex;
+}
+
+static void		    
+dbgRewindLast	(pANTLR3_INT_STREAM is)
+{
+  assert(false);
+}
+static void		    
+rewindLast	(pANTLR3_INT_STREAM is)
+{
+  assert(false);
+}
+static void		    
+rewindStream	(pANTLR3_INT_STREAM is, ANTLR3_MARKER marker)
+{
+    is->seek(is, (ANTLR3_UINT32)(marker));
+}
+static void		    
+dbgRewindStream	(pANTLR3_INT_STREAM is, ANTLR3_MARKER marker)
+{
+   assert(false);
+}
+
+static void		    
+seek	(pANTLR3_INT_STREAM is, ANTLR3_MARKER index)
+{
+    pANTLR3_COMMON_TOKEN_STREAM cts;
+    pANTLR3_TOKEN_STREAM        ts;
+
+    ts      = (pANTLR3_TOKEN_STREAM)        is->super;
+    cts     = (pANTLR3_COMMON_TOKEN_STREAM) ts->super;
+
+    cts->p  = (ANTLR3_UINT32)index;
+}
+static void		    
+dbgSeek	(pANTLR3_INT_STREAM is, ANTLR3_MARKER index)
+{
+  assert(false);
+}
+
+static pANTLR3_COMMON_TOKEN nextToken(pBOUNDED_TOKEN_BUFFER buffer) {
+  pANTLR3_COMMON_TOKEN_STREAM tokenStream;
+  pANTLR3_COMMON_TOKEN tok;
+  ANTLR3_BOOLEAN discard;
+
+  tokenStream = buffer->commonTstream;
+
+  /*
+  if( buffer->done == ANTLR3_TRUE ) {
+    return &(tokenStream->tstream->tokenSource->eofToken);
+  }
+  */
+
+  /* Pick out the next token from the token source
+   * Remember we just get a pointer (reference if you like) here
+   * and so if we store it anywhere, we don't set any pointers to auto free it.
+   */
+  do {
+    tok
+        = tokenStream->tstream->tokenSource->nextToken(
+                                                       tokenStream->tstream->tokenSource);
+    if(tok == NULL || tok->type == ANTLR3_TOKEN_EOF) {
+      buffer->done = ANTLR3_TRUE;
+      break;
+    }
+
+    discard = ANTLR3_FALSE; /* Assume we are not discarding	*/
+
+    /* I employ a bit of a trick, or perhaps hack here. Rather than
+     * store a pointer to a structure in the override map and discard set
+     * we store the value + 1 cast to a void *. Hence on systems where NULL = (void *)0
+     * we can distinguish "not being there" from "being channel or type 0"
+     */
+
+    if(tokenStream->discardSet != NULL
+        && tokenStream->discardSet->get(tokenStream->discardSet,
+                                        tok->getType(tok)) != NULL) {
+      discard = ANTLR3_TRUE;
+    } else if(tok->getChannel(tok) != tokenStream->channel) {
+      discard = ANTLR3_TRUE;
+    }
+
+  } while(discard == ANTLR3_TRUE);
+
+  return tok;
+}
+
+
+/// Return a string that represents the name associated with the input source
+///
+/// /param[in] is The ANTLR3_INT_STREAM interface that is representing this token stream.
+///
+/// /returns 
+/// /implements ANTLR3_INT_STREAM_struct::getSourceName()
+///
+static pANTLR3_STRING		
+getSourceName				(pANTLR3_INT_STREAM is)
+{
+	// Slightly convoluted as we must trace back to the lexer's input source
+	// via the token source. The streamName that is here is not initialized
+	// because this is a token stream, not a file or string stream, which are the
+	// only things that have a context for a source name.
+	//
+	return ((pANTLR3_TOKEN_STREAM)(is->super))->tokenSource->fileName;
+}
+
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
diff --git a/src/parser/bounded_token_buffer.h b/src/parser/bounded_token_buffer.h
new file mode 100644
index 0000000..947b33f
--- /dev/null
+++ b/src/parser/bounded_token_buffer.h
@@ -0,0 +1,64 @@
+/*********************                                                        */
+/*! \file bounded_token_buffer.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An ANTLR3 bounded token stream.
+ **
+ ** An ANTLR3 bounded token stream. The stream has a bounded
+ ** lookahead/behind k. Calling LT(i) with i > k or i < -k will raise
+ ** an exception. Only use this factory if you *know* that the grammar
+ ** has bounded lookahead (e.g., if you've set the k parameter in the 
+ ** parser.
+ **
+ ** NOTE: ANTLR3 puts "hidden" tokens into this buffer too, so
+ ** pathological inputs can exceed the k token lookahead, even if
+ ** your grammar really is LL(k). Be sure that irrelevant tokens
+ ** are SKIP()'d and not "hidden".
+ **/
+
+#include "cvc4parser_private.h"
+
+#ifndef	__CVC4__PARSER__BOUNDED_TOKEN_BUFFER_H
+#define	__CVC4__PARSER__BOUNDED_TOKEN_BUFFER_H
+
+#include <antlr3defs.h>
+
+namespace CVC4 {
+namespace parser {
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** A "super" structure for COMMON_TOKEN_STREAM. */
+typedef struct BOUNDED_TOKEN_BUFFER_struct
+{
+    pANTLR3_COMMON_TOKEN_STREAM    commonTstream;
+    pANTLR3_COMMON_TOKEN* tokenBuffer;
+    // tokenNeg1, token1, token2;
+    ANTLR3_UINT32 currentIndex, maxIndex, k, bufferSize;
+    ANTLR3_BOOLEAN empty, done;
+} BOUNDED_TOKEN_BUFFER, *pBOUNDED_TOKEN_BUFFER;
+
+pBOUNDED_TOKEN_BUFFER
+BoundedTokenBufferSourceNew(ANTLR3_UINT32 k, pANTLR3_TOKEN_SOURCE source);
+
+void
+BoundedTokenBufferFree(pBOUNDED_TOKEN_BUFFER buffer);
+
+#ifdef __cplusplus
+}/* extern "C" */
+#endif
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PARSER__BOUNDED_TOKEN_BUFFER_H */
diff --git a/src/parser/bounded_token_factory.cpp b/src/parser/bounded_token_factory.cpp
new file mode 100644
index 0000000..1c5a009
--- /dev/null
+++ b/src/parser/bounded_token_factory.cpp
@@ -0,0 +1,144 @@
+/*********************                                                        */
+/*! \file bounded_token_factory.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An ANTLR3 bounded token factory implementation.
+ **
+ ** An ANTLR3 bounded token factory implementation.
+ **/
+
+#include <antlr3input.h>
+#include <antlr3commontoken.h>
+#include <antlr3interfaces.h>
+#include "parser/bounded_token_factory.h"
+
+namespace CVC4 {
+namespace parser {
+
+static pANTLR3_COMMON_TOKEN
+newPoolToken(pANTLR3_TOKEN_FACTORY factory);
+
+static void
+setInputStream  (pANTLR3_TOKEN_FACTORY factory, pANTLR3_INPUT_STREAM input);
+
+static  void
+factoryClose        (pANTLR3_TOKEN_FACTORY factory);
+
+pANTLR3_TOKEN_FACTORY
+BoundedTokenFactoryNew(pANTLR3_INPUT_STREAM input,ANTLR3_UINT32 size)
+{
+    pANTLR3_TOKEN_FACTORY   factory;
+    pANTLR3_COMMON_TOKEN tok;
+    ANTLR3_UINT32 i;
+
+    /* allocate memory
+     */
+    factory     = (pANTLR3_TOKEN_FACTORY) ANTLR3_MALLOC(sizeof(ANTLR3_TOKEN_FACTORY));
+
+    if  (factory == NULL)
+    {
+        return  NULL;
+    }
+
+    /* Install factory API
+     */
+    factory->newToken       =  newPoolToken;
+    factory->close          =  factoryClose;
+    factory->setInputStream = setInputStream;
+
+    /* Allocate the initial pool
+     */
+    factory->thisPool   = size;
+    factory->nextToken  = 0;
+    factory->pools      = (pANTLR3_COMMON_TOKEN*) ANTLR3_MALLOC(sizeof(pANTLR3_COMMON_TOKEN));
+    factory->pools[0]  =
+        (pANTLR3_COMMON_TOKEN)
+        ANTLR3_MALLOC((size_t)(sizeof(ANTLR3_COMMON_TOKEN) * size));
+
+    /* Set up the tokens once and for all */
+    for( i=0; i < size; i++ ) {
+      tok = factory->pools[0] + i;
+      antlr3SetTokenAPI(tok);
+
+      /* It is factory made, and we need to copy the string factory pointer
+       */
+      tok->factoryMade  = ANTLR3_TRUE;
+      tok->strFactory   = input == NULL ? NULL : input->strFactory;
+      tok->input        = input;
+    }
+
+    /* Factory space is good, we now want to initialize our cheating token
+     * which one it is initialized is the model for all tokens we manufacture
+     */
+    antlr3SetTokenAPI(&factory->unTruc);
+
+    /* Set some initial variables for future copying
+     */
+    factory->unTruc.factoryMade = ANTLR3_TRUE;
+
+    // Input stream
+    //
+    setInputStream(factory, input);
+
+    return  factory;
+
+}
+
+static pANTLR3_COMMON_TOKEN
+newPoolToken(pANTLR3_TOKEN_FACTORY factory)
+{
+  ANTLR3_UINT32 size = factory->thisPool;
+  pANTLR3_COMMON_TOKEN tok = factory->pools[0] + (factory->nextToken % size);
+  if(factory->nextToken >= size && tok->custom != NULL && tok->freeCustom != NULL) {
+    tok->freeCustom(tok->custom);
+    tok->custom = NULL;
+  }
+  factory->nextToken++;
+
+  return tok;
+}
+
+static  void
+factoryClose        (pANTLR3_TOKEN_FACTORY factory)
+{
+  ANTLR3_UINT32 i;
+  ANTLR3_UINT32 size = factory->thisPool;
+  pANTLR3_COMMON_TOKEN tok;
+
+  for(i = 0; i < size && i < factory->nextToken; i++) {
+    tok = factory->pools[0] + i;
+    if(tok->custom != NULL && tok->freeCustom != NULL) {
+      tok->freeCustom(tok->custom);
+      tok->custom = NULL;
+    }
+  }
+  ANTLR3_FREE(factory->pools[0]);
+  ANTLR3_FREE(factory->pools);
+  ANTLR3_FREE(factory);
+
+}
+
+static void
+setInputStream  (pANTLR3_TOKEN_FACTORY factory, pANTLR3_INPUT_STREAM input)
+{
+    factory->input          =  input;
+    factory->unTruc.input   =  input;
+        if      (input != NULL)
+        {
+                factory->unTruc.strFactory      = input->strFactory;
+        }
+        else
+        {
+                factory->unTruc.strFactory = NULL;
+    }
+}
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
diff --git a/src/parser/bounded_token_factory.h b/src/parser/bounded_token_factory.h
new file mode 100644
index 0000000..8535d49
--- /dev/null
+++ b/src/parser/bounded_token_factory.h
@@ -0,0 +1,51 @@
+/*********************                                                        */
+/*! \file bounded_token_factory.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An ANTLR3 bounded token factory.
+ **
+ ** An ANTLR3 bounded token factory. The factory has a fixed number of
+ ** tokens that are re-used as parsing proceeds. Only use this factory
+ ** if you *know* that the number of active tokens will be bounded
+ ** (e.g., if you're using a bounded token stream).
+ **/
+
+#include "cvc4parser_private.h"
+
+#ifndef __CVC4__PARSER__BOUNDED_TOKEN_FACTORY_H
+#define __CVC4__PARSER__BOUNDED_TOKEN_FACTORY_H
+
+namespace CVC4 {
+namespace parser {
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** Create a token factory with a pool of exactly <code>size</code> tokens,
+ * attached to the input stream <code>input</code>. <code>size</code> must be
+ * greater than the maximum lookahead in the parser, or tokens will be prematurely re-used.
+ *
+ * We abuse <code>pANTLR3_TOKEN_FACTORY</code> fields for our own purposes:
+ * <code>pANTLR3_COMMON_TOKEN    *pools</code>: a pointer to a single-element array, a single pool of tokens
+ * <code>ANTLR3_INT32       thisPool</code>: the size of the pool
+ * <code>ANTLR3_UINT32      nextToken</code>: the index of the next token to be returned
+ * */
+pANTLR3_TOKEN_FACTORY
+BoundedTokenFactoryNew(pANTLR3_INPUT_STREAM input,ANTLR3_UINT32 size);
+
+#ifdef __cplusplus
+}/* extern "C" */
+#endif
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PARSER__BOUNDED_TOKEN_FACTORY_H */
diff --git a/src/parser/cvc/Cvc.g b/src/parser/cvc/Cvc.g
new file mode 100644
index 0000000..fb03040
--- /dev/null
+++ b/src/parser/cvc/Cvc.g
@@ -0,0 +1,2400 @@
+/* *******************                                                        */
+/*! \file Cvc.g
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Christopher L. Conway, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Parser for CVC presentation input language
+ **
+ ** Parser for CVC presentation input language.
+ **/
+
+grammar Cvc;
+
+options {
+  // C output for antlr
+  language = 'C';
+
+  // Skip the default error handling, just break with exceptions
+  // defaultErrorHandler = false;
+
+  // Only lookahead of <= k requested (disable for LL* parsing)
+  // Note that CVC4's BoundedTokenBuffer requires a fixed k !
+  // If you change this k, change it also in cvc_input.cpp !
+  k = 3;
+}/* options */
+
+tokens {
+  /* commands */
+
+  ASSERT_TOK = 'ASSERT';
+  QUERY_TOK = 'QUERY';
+  CHECKSAT_TOK = 'CHECKSAT';
+  OPTION_TOK = 'OPTION';
+  PUSH_TOK = 'PUSH';
+  POP_TOK = 'POP';
+  POPTO_TOK = 'POPTO';
+  PUSH_SCOPE_TOK = 'PUSH_SCOPE';
+  POP_SCOPE_TOK = 'POP_SCOPE';
+  POPTO_SCOPE_TOK = 'POPTO_SCOPE';
+  RESET_TOK = 'RESET';
+  DATATYPE_TOK = 'DATATYPE';
+  END_TOK = 'END';
+  CONTEXT_TOK = 'CONTEXT';
+  FORGET_TOK = 'FORGET';
+  GET_TYPE_TOK = 'GET_TYPE';
+  CHECK_TYPE_TOK = 'CHECK_TYPE';
+  GET_CHILD_TOK = 'GET_CHILD';
+  GET_OP_TOK = 'GET_OP';
+  GET_VALUE_TOK = 'GET_VALUE';
+  SUBSTITUTE_TOK = 'SUBSTITUTE';
+  DBG_TOK = 'DBG';
+  TRACE_TOK = 'TRACE';
+  UNTRACE_TOK = 'UNTRACE';
+  HELP_TOK = 'HELP';
+  TRANSFORM_TOK = 'TRANSFORM';
+  PRINT_TOK = 'PRINT';
+  PRINT_TYPE_TOK = 'PRINT_TYPE';
+  CALL_TOK = 'CALL';
+  ECHO_TOK = 'ECHO';
+  EXIT_TOK = 'EXIT';
+  INCLUDE_TOK = 'INCLUDE';
+  DUMP_PROOF_TOK = 'DUMP_PROOF';
+  DUMP_UNSAT_CORE_TOK = 'DUMP_UNSAT_CORE';
+  DUMP_ASSUMPTIONS_TOK = 'DUMP_ASSUMPTIONS';
+  DUMP_SIG_TOK = 'DUMP_SIG';
+  DUMP_TCC_TOK = 'DUMP_TCC';
+  DUMP_TCC_ASSUMPTIONS_TOK = 'DUMP_TCC_ASSUMPTIONS';
+  DUMP_TCC_PROOF_TOK = 'DUMP_TCC_PROOF';
+  DUMP_CLOSURE_TOK = 'DUMP_CLOSURE';
+  DUMP_CLOSURE_PROOF_TOK = 'DUMP_CLOSURE_PROOF';
+  WHERE_TOK = 'WHERE';
+  ASSERTIONS_TOK = 'ASSERTIONS';
+  ASSUMPTIONS_TOK = 'ASSUMPTIONS';
+  COUNTEREXAMPLE_TOK = 'COUNTEREXAMPLE';
+  COUNTERMODEL_TOK = 'COUNTERMODEL';
+  ARITH_VAR_ORDER_TOK = 'ARITH_VAR_ORDER';
+  CONTINUE_TOK = 'CONTINUE';
+  RESTART_TOK = 'RESTART';
+
+  /* operators */
+
+  AND_TOK = 'AND';
+  BOOLEAN_TOK = 'BOOLEAN';
+  ELSEIF_TOK = 'ELSIF';
+  ELSE_TOK = 'ELSE';
+  ENDIF_TOK = 'ENDIF';
+  FALSE_TOK = 'FALSE';
+  IF_TOK = 'IF';
+  IN_TOK = 'IN';
+  INT_TOK = 'INT';
+  LET_TOK = 'LET';
+  MEMBER_TOK = 'IS_IN';
+  NOT_TOK = 'NOT';
+  OR_TOK = 'OR';
+  REAL_TOK = 'REAL';
+  THEN_TOK = 'THEN';
+  TRUE_TOK = 'TRUE';
+  TYPE_TOK = 'TYPE';
+  XOR_TOK = 'XOR';
+
+  ARRAY_TOK = 'ARRAY';
+  OF_TOK = 'OF';
+  WITH_TOK = 'WITH';
+
+  SUBTYPE_TOK = 'SUBTYPE';
+  SET_TOK = 'SET';
+  
+  TUPLE_TOK = 'TUPLE';
+
+  FORALL_TOK = 'FORALL';
+  EXISTS_TOK = 'EXISTS';
+  PATTERN_TOK = 'PATTERN';
+
+  LAMBDA = 'LAMBDA';
+
+  // Symbols
+
+  COLON = ':';
+  COMMA = ',';
+  LPAREN = '(';
+  RPAREN = ')';
+  LBRACE = '{';
+  RBRACE = '}';
+  LBRACKET = '[';
+  RBRACKET = ']';
+  SEMICOLON = ';';
+  BAR = '|';
+  UNDERSCORE = '_';
+
+  SQHASH = '[#';
+  HASHSQ = '#]';
+  PARENHASH = '(#';
+  HASHPAREN = '#)';
+
+  // Operators
+
+  ARROW_TOK = '->';
+  DIV_TOK = '/';
+  EQUAL_TOK = '=';
+  DISEQUAL_TOK = '/=';
+  EXP_TOK = '^';
+  GT_TOK = '>';
+  GEQ_TOK = '>=';
+  IFF_TOK = '<=>';
+  IMPLIES_TOK = '=>';
+  LT_TOK = '<';
+  LEQ_TOK = '<=';
+  MINUS_TOK = '-';
+  PLUS_TOK = '+';
+  STAR_TOK = '*';
+  ASSIGN_TOK = ':=';
+  MOD_TOK = 'MOD';
+  INTDIV_TOK = 'DIV';
+  FLOOR_TOK = 'FLOOR';
+  ABS_TOK = 'ABS';
+  DIVISIBLE_TOK = 'DIVISIBLE';
+  DISTINCT_TOK = 'DISTINCT';
+
+  // Bitvectors
+
+  BITVECTOR_TOK = 'BITVECTOR';
+  LEFTSHIFT_TOK = '<<';
+  RIGHTSHIFT_TOK = '>>';
+  BVPLUS_TOK = 'BVPLUS';
+  BVSUB_TOK = 'BVSUB';
+  BVUDIV_TOK = 'BVUDIV';
+  BVSDIV_TOK = 'BVSDIV';
+  BVUREM_TOK = 'BVUREM';
+  BVSREM_TOK = 'BVSREM';
+  BVSMOD_TOK = 'BVSMOD';
+  BVSHL_TOK = 'BVSHL';
+  BVASHR_TOK = 'BVASHR';
+  BVLSHR_TOK = 'BVLSHR';
+  BVUMINUS_TOK = 'BVUMINUS';
+  BVMULT_TOK = 'BVMULT';
+  BVNEG_TOK = '~';
+  BVAND_TOK = '&';
+  BVXOR_TOK = 'BVXOR';
+  BVNAND_TOK = 'BVNAND';
+  BVNOR_TOK = 'BVNOR';
+  BVCOMP_TOK = 'BVCOMP';
+  BVXNOR_TOK = 'BVXNOR';
+  CONCAT_TOK = '@';
+  //BVTOINT_TOK = 'BVTOINT';
+  //INTTOBV_TOK = 'INTTOBV';
+  //BOOLEXTRACT_TOK = 'BOOLEXTRACT';
+  IS_INTEGER_TOK = 'IS_INTEGER';
+  BVLT_TOK = 'BVLT';
+  BVGT_TOK = 'BVGT';
+  BVLE_TOK = 'BVLE';
+  BVGE_TOK = 'BVGE';
+  SX_TOK = 'SX';
+  BVZEROEXTEND_TOK = 'BVZEROEXTEND';
+  BVREPEAT_TOK = 'BVREPEAT';
+  BVROTL_TOK = 'BVROTL';
+  BVROTR_TOK = 'BVROTR';
+  BVSLT_TOK = 'BVSLT';
+  BVSGT_TOK = 'BVSGT';
+  BVSLE_TOK = 'BVSLE';
+  BVSGE_TOK = 'BVSGE';
+  
+  // Relations
+  JOIN_TOK = 'JOIN';
+  TRANSPOSE_TOK = 'TRANSPOSE';
+  PRODUCT_TOK = 'PRODUCT';
+  TRANSCLOSURE_TOK = 'TCLOSURE';
+
+  // Strings
+
+  STRING_TOK = 'STRING';
+  STRING_CONCAT_TOK = 'CONCAT';
+  STRING_LENGTH_TOK = 'LENGTH';
+  STRING_CONTAINS_TOK = 'CONTAINS';
+  STRING_SUBSTR_TOK = 'SUBSTR';
+  STRING_CHARAT_TOK = 'CHARAT';
+  STRING_INDEXOF_TOK = 'INDEXOF';
+  STRING_REPLACE_TOK = 'REPLACE';
+  STRING_PREFIXOF_TOK = 'PREFIXOF';
+  STRING_SUFFIXOF_TOK = 'SUFFIXOF';
+  STRING_STOI_TOK = 'STRING_TO_INTEGER';
+  STRING_ITOS_TOK = 'INTEGER_TO_STRING';
+  STRING_U16TOS_TOK = 'UINT16_TO_STRING';
+  STRING_STOU16_TOK = 'STRING_TO_UINT16';
+  STRING_U32TOS_TOK = 'UINT32_TO_STRING';
+  STRING_STOU32_TOK = 'STRING_TO_UINT32';
+  //Regular expressions (TODO)
+  //STRING_IN_REGEXP_TOK
+  //STRING_TO_REGEXP_TOK
+  //REGEXP_CONCAT_TOK 
+  //REGEXP_UNION_TOK 
+  //REGEXP_INTER_TOK 
+  //REGEXP_STAR_TOK 
+  //REGEXP_PLUS_TOK 
+  //REGEXP_OPT_TOK 
+  //REGEXP_RANGE_TOK 
+  //REGEXP_LOOP_TOK 
+  //REGEXP_EMPTY_TOK
+  //REGEXP_SIGMA_TOK
+  
+  SETS_CARD_TOK = 'CARD';
+  
+  FMF_CARD_TOK = 'HAS_CARD';
+  UNIVSET_TOK = 'UNIVERSE';
+
+  // these are parsed by special NUMBER_OR_RANGEOP rule, below
+  DECIMAL_LITERAL;
+  INTEGER_LITERAL;
+  DOT;
+  DOTDOT;
+}/* tokens */
+
+ at parser::members {
+
+// Idea and code guidance from Sam Harwell,
+// http://www.antlr.org/wiki/display/ANTLR3/Operator+precedence+parser
+
+bool isRightToLeft(int type) {
+  // return true here for any operators that are right-to-left associative
+  switch(type) {
+  case IMPLIES_TOK: return true;
+  default: return false;
+  }
+}/* isRightToLeft() */
+
+int getOperatorPrecedence(int type) {
+  switch(type) {
+  case BITVECTOR_TOK: return 1;
+  //case DOT:
+  case LPAREN:
+  case LBRACE: return 2;
+  case LBRACKET: return 3;
+  case ARROW_TOK: return 4;
+  case IS_INTEGER_TOK: return 5;
+  case BVSLT_TOK:
+  case BVSLE_TOK:
+  case BVSGT_TOK:
+  case BVSGE_TOK: return 6;
+  case BVLT_TOK:
+  case BVLE_TOK:
+  case BVGT_TOK:
+  case BVGE_TOK: return 7;
+  case LEFTSHIFT_TOK:
+  case RIGHTSHIFT_TOK: return 8;
+  case SX_TOK:
+  case BVZEROEXTEND_TOK:
+  case BVREPEAT_TOK:
+  case BVROTL_TOK:
+  case BVROTR_TOK: return 9;
+  case BVUDIV_TOK:
+  case BVSDIV_TOK:
+  case BVUREM_TOK:
+  case BVSREM_TOK:
+  case BVSMOD_TOK:
+  case BVSHL_TOK:
+  case BVASHR_TOK:
+  case BVLSHR_TOK: return 10;
+  case BVUMINUS_TOK:
+  case BVPLUS_TOK:
+  case BVSUB_TOK: return 11;
+  case BVNEG_TOK: return 12;
+  case BVXNOR_TOK: return 13;
+  case BVNOR_TOK:
+  case BVCOMP_TOK: return 14;
+  case BVNAND_TOK: return 15;
+  case BVXOR_TOK: return 16;
+  case BVAND_TOK: return 17;
+  case BAR: return 18;
+  case CONCAT_TOK: return 19;
+//case UMINUS_TOK: return 20;
+  case WITH_TOK: return 21;
+  case EXP_TOK: return 22;
+  case STAR_TOK:
+  case INTDIV_TOK:
+  case DIV_TOK:
+  case TUPLE_TOK:
+  case MOD_TOK: return 23;
+  case PLUS_TOK:
+  case MINUS_TOK:
+  case JOIN_TOK:
+  case TRANSPOSE_TOK:
+  case PRODUCT_TOK:
+  case TRANSCLOSURE_TOK: return 24;
+  case LEQ_TOK:
+  case LT_TOK:
+  case GEQ_TOK:
+  case GT_TOK:
+  case MEMBER_TOK: 
+  case SETS_CARD_TOK:
+  case FMF_CARD_TOK: return 25;
+  case EQUAL_TOK:
+  case DISEQUAL_TOK: return 26;
+  case NOT_TOK: return 27;
+  case AND_TOK: return 28;
+  case OR_TOK:
+  case XOR_TOK: return 29;
+  case IMPLIES_TOK: return 30;// right-to-left
+  case IFF_TOK: return 31;
+  case FORALL_TOK:
+  case EXISTS_TOK: return 32;
+  case ASSIGN_TOK:
+  case IN_TOK: return 33;
+
+  default:
+    std::stringstream ss;
+    ss << "internal error: no entry in precedence table for operator " << CvcParserTokenNames[type];
+    throw ParserException(ss.str());
+  }
+}/* getOperatorPrecedence() */
+
+Kind getOperatorKind(int type, bool& negate) {
+  negate = false;
+
+  switch(type) {
+    // booleanBinop
+  case IFF_TOK: return kind::EQUAL;
+  case IMPLIES_TOK: return kind::IMPLIES;
+  case OR_TOK: return kind::OR;
+  case XOR_TOK: return kind::XOR;
+  case AND_TOK: return kind::AND;
+  
+  case PRODUCT_TOK: return kind::PRODUCT;
+  case JOIN_TOK: return kind::JOIN;
+
+    // comparisonBinop
+  case EQUAL_TOK: return kind::EQUAL;
+  case DISEQUAL_TOK: negate = true; return kind::EQUAL;
+  case GT_TOK: return kind::GT;
+  case GEQ_TOK: return kind::GEQ;
+  case LT_TOK: return kind::LT;
+  case LEQ_TOK: return kind::LEQ;
+  case MEMBER_TOK: return kind::MEMBER;
+  case SETS_CARD_TOK: return kind::CARD;
+  case FMF_CARD_TOK: return kind::CARDINALITY_CONSTRAINT;
+
+    // arithmeticBinop
+  case PLUS_TOK: return kind::PLUS;
+  case MINUS_TOK: return kind::MINUS;
+  case STAR_TOK: return kind::MULT;
+  case INTDIV_TOK: return kind::INTS_DIVISION;
+  case MOD_TOK: return kind::INTS_MODULUS;
+  case DIV_TOK: return kind::DIVISION;
+  case EXP_TOK: return kind::POW;
+
+    // bvBinop
+  case CONCAT_TOK: return kind::BITVECTOR_CONCAT;
+  case BAR: return kind::BITVECTOR_OR;
+  case BVAND_TOK: return kind::BITVECTOR_AND;
+  
+  }
+
+  std::stringstream ss;
+  ss << "internal error: no entry in operator-kind table for operator " << CvcParserTokenNames[type];
+  throw ParserException(ss.str());
+
+}/* getOperatorKind() */
+
+unsigned findPivot(const std::vector<unsigned>& operators,
+                   unsigned startIndex, unsigned stopIndex) {
+  unsigned pivot = startIndex;
+  unsigned pivotRank = getOperatorPrecedence(operators[pivot]);
+  /*Debug("prec") << "initial pivot at " << pivot
+                << "(" << CvcParserTokenNames[operators[pivot]] << ") "
+                << "level " << pivotRank << std::endl;*/
+  for(unsigned i = startIndex + 1; i <= stopIndex; ++i) {
+    unsigned current = getOperatorPrecedence(operators[i]);
+    bool rtl = isRightToLeft(operators[i]);
+    if(current > pivotRank || (current == pivotRank && !rtl)) {
+      /*Debug("prec") << "new pivot at " << i
+                    << "(" << CvcParserTokenNames[operators[i]] << ") "
+                    << "level " << current << " rtl == " << rtl << std::endl;*/
+      pivot = i;
+      pivotRank = current;
+    }
+  }
+  return pivot;
+}/* findPivot() */
+
+Expr createPrecedenceTree(Parser* parser, ExprManager* em,
+                          const std::vector<CVC4::Expr>& expressions,
+                          const std::vector<unsigned>& operators,
+                          unsigned startIndex, unsigned stopIndex) {
+  assert(expressions.size() == operators.size() + 1);
+  assert(startIndex < expressions.size());
+  assert(stopIndex < expressions.size());
+  assert(startIndex <= stopIndex);
+
+  if(stopIndex == startIndex) {
+    return expressions[startIndex];
+  }
+
+  unsigned pivot = findPivot(operators, startIndex, stopIndex - 1);
+  //Debug("prec") << "pivot[" << startIndex << "," << stopIndex - 1 << "] at " << pivot << std::endl;
+  bool negate;
+  Kind k = getOperatorKind(operators[pivot], negate);
+  Expr lhs = createPrecedenceTree(parser, em, expressions, operators, startIndex, pivot);
+  Expr rhs = createPrecedenceTree(parser, em, expressions, operators, pivot + 1, stopIndex);
+
+  switch(k) {
+  case kind::LEQ          : if(lhs.getType().isSet()) { k = kind::SUBSET; } break;
+  case kind::MINUS        : if(lhs.getType().isSet()) { k = kind::SETMINUS; } break;
+  case kind::BITVECTOR_AND: if(lhs.getType().isSet()) { k = kind::INTERSECTION; } break;
+  case kind::BITVECTOR_OR : if(lhs.getType().isSet()) { k = kind::UNION; } break;
+  default: break;
+  }
+  Expr e = em->mkExpr(k, lhs, rhs);
+  return negate ? em->mkExpr(e.getType().isSet() ? kind::COMPLEMENT : kind::NOT, e) : e;
+}/* createPrecedenceTree() recursive variant */
+
+Expr createPrecedenceTree(Parser* parser, ExprManager* em,
+                          const std::vector<CVC4::Expr>& expressions,
+                          const std::vector<unsigned>& operators) {
+  if(Debug.isOn("prec") && operators.size() > 1) {
+    for(unsigned i = 0; i < expressions.size(); ++i) {
+      Debug("prec") << expressions[i];
+      if(operators.size() > i) {
+        Debug("prec") << ' ' << CvcParserTokenNames[operators[i]] << ' ';
+      }
+    }
+    Debug("prec") << std::endl;
+  }
+
+  Expr e = createPrecedenceTree(parser, em, expressions, operators, 0, expressions.size() - 1);
+  if(Debug.isOn("prec") && operators.size() > 1) {
+    language::SetLanguage::Scope ls(Debug("prec"), language::output::LANG_AST);
+    Debug("prec") << "=> " << e << std::endl;
+  }
+  return e;
+}/* createPrecedenceTree() base variant */
+
+/** Add n NOTs to the front of e and return the result. */
+Expr addNots(ExprManager* em, size_t n, Expr e) {
+  Kind k = e.getType().isSet() ? kind::COMPLEMENT : kind::NOT;
+  while(n-- > 0) {
+    e = em->mkExpr(k, e);
+  }
+  return e;
+}/* addNots() */
+
+}/* @parser::members */
+
+ at header {
+/**
+ ** This file is part of CVC4.
+ ** Copyright (c) 2009-2014  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.
+ **/
+}/* @header */
+
+ at lexer::includes {
+
+// This should come immediately after #include <antlr3.h> in the generated
+// files. See the documentation in "parser/antlr_undefines.h" for more details.
+#include "parser/antlr_undefines.h"
+
+/** This suppresses warnings about the redefinition of token symbols between different
+  * parsers. The redefinitions should be harmless as long as no client: (a) #include's
+  * the lexer headers for two grammars AND (b) uses the token symbol definitions. */
+#pragma GCC system_header
+
+#if defined(CVC4_COMPETITION_MODE) && !defined(CVC4_SMTCOMP_APPLICATION_TRACK)
+/* This improves performance by ~10 percent on big inputs.
+ * This option is only valid if we know the input is ASCII (or some 8-bit encoding).
+ * If we know the input is UTF-16, we can use ANTLR3_INLINE_INPUT_UTF16.
+ * Otherwise, we have to let the lexer detect the encoding at runtime.
+ */
+#  define ANTLR3_INLINE_INPUT_ASCII
+#  define ANTLR3_INLINE_INPUT_8BIT
+#endif /* CVC4_COMPETITION_MODE && !CVC4_SMTCOMP_APPLICATION_TRACK */
+
+#include "parser/antlr_input.h"
+#include "parser/antlr_tracing.h"
+#include "parser/parser.h"
+#include "util/integer.h"
+
+}/* @lexer::includes */
+
+ at parser::includes {
+
+// This should come immediately after #include <antlr3.h> in the generated
+// files. See the documentation in "parser/antlr_undefines.h" for more details.
+#include "parser/antlr_undefines.h"
+
+#include <stdint.h>
+#include <cassert>
+
+#include "base/ptr_closer.h"
+#include "options/set_language.h"
+#include "parser/antlr_tracing.h"
+#include "parser/parser.h"
+#include "smt/command.h"
+#include "util/subrange_bound.h"
+
+namespace CVC4 {
+  class Expr;
+
+  namespace parser {
+    namespace cvc {
+      /**
+       * This class is just here to get around an unfortunate bit of Antlr.
+       * We use strings below as return values from rules, which require
+       * them to be constructible by a void*.  So we derive the string
+       * class to provide just such a conversion.
+       */
+      class myString : public std::string {
+      public:
+        myString(const std::string& s) : std::string(s) {}
+        myString(void*) : std::string() {}
+        myString() : std::string() {}
+      };/* class myString */
+
+      /**
+       * Just exists to give us the void* construction that
+       * ANTLR requires.
+       */
+      class mySubrangeBound : public CVC4::SubrangeBound {
+      public:
+        mySubrangeBound() : CVC4::SubrangeBound() {}
+        mySubrangeBound(void*) : CVC4::SubrangeBound() {}
+        mySubrangeBound(const Integer& i) : CVC4::SubrangeBound(i) {}
+        mySubrangeBound(const SubrangeBound& b) : CVC4::SubrangeBound(b) {}
+      };/* class mySubrangeBound */
+
+      /**
+       * Just exists to give us the void* construction that
+       * ANTLR requires.
+       */
+      struct myExpr : public CVC4::Expr {
+        myExpr() : CVC4::Expr() {}
+        myExpr(void*) : CVC4::Expr() {}
+        myExpr(const Expr& e) : CVC4::Expr(e) {}
+        myExpr(const myExpr& e) : CVC4::Expr(e) {}
+      };/* struct myExpr */
+
+    }/* CVC4::parser::cvc namespace */
+  }/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+}/* @parser::includes */
+
+ at parser::postinclude {
+
+#include <sstream>
+#include <string>
+#include <vector>
+
+#include "base/output.h"
+#include "base/ptr_closer.h"
+#include "expr/expr.h"
+#include "expr/kind.h"
+#include "expr/type.h"
+#include "parser/antlr_input.h"
+#include "parser/parser.h"
+
+
+#define REPEAT_COMMAND(k, CommandCtor)                      \
+  ({                                                        \
+    unsigned __k = (k);                                     \
+    (__k <= 1)                                              \
+      ? (Command*) new CommandCtor                          \
+      : ({                                                  \
+          CommandSequence* __seq = new CommandSequence();   \
+          while(__k-- > 0) {                                \
+            __seq->addCommand(new CommandCtor);             \
+          }                                                 \
+          (Command*) __seq;                                 \
+        });                                                 \
+  })
+
+using namespace CVC4;
+using namespace CVC4::parser;
+
+/* These need to be macros so they can refer to the PARSER macro, which will be defined
+ * by ANTLR *after* this section. (If they were functions, PARSER would be undefined.) */
+#undef PARSER_STATE
+#define PARSER_STATE ((Parser*)PARSER->super)
+#undef EXPR_MANAGER
+#define EXPR_MANAGER PARSER_STATE->getExprManager()
+#undef MK_EXPR
+#define MK_EXPR EXPR_MANAGER->mkExpr
+#undef MK_CONST
+#define MK_CONST EXPR_MANAGER->mkConst
+#define UNSUPPORTED PARSER_STATE->unimplementedFeature
+
+#define ENSURE_BV_SIZE(k, f)                                   \
+{                                                              \
+  unsigned size = BitVectorType(f.getType()).getSize();        \
+  if(k > size) {                                               \
+    f = MK_EXPR(MK_CONST(BitVectorZeroExtend(k - size)), f);   \
+  } else if (k < size) {                                       \
+    f = MK_EXPR(MK_CONST(BitVectorExtract(k - 1, 0)), f);      \
+  }                                                            \
+}
+
+}/* @parser::postinclude */
+
+/**
+ * Parses an expression.
+ * @return the parsed expression
+ */
+parseExpr returns [CVC4::Expr expr = CVC4::Expr()]
+  : formula[expr]
+  | EOF
+  ;
+
+/**
+ * Parses a command (the whole benchmark)
+ * @return the command of the benchmark
+ */
+parseCommand returns [CVC4::Command* cmd_return = NULL]
+ at declarations {
+    CVC4::PtrCloser<CVC4::Command> cmd;
+}
+ at after {
+    cmd_return = cmd.release();
+}
+  : c=command[&cmd]
+  | LPAREN IDENTIFIER
+    { std::string s = AntlrInput::tokenText($IDENTIFIER);
+    if(s == "benchmark") {
+        PARSER_STATE->parseError(
+            "In CVC4 presentation language mode, but SMT-LIBv1 format "
+            "detected.  Use --lang smt1 for SMT-LIBv1 support.");
+      } else if(s == "set" || s == "get" || s == "declare" ||
+                s == "define" || s == "assert") {
+        PARSER_STATE->parseError(
+            "In CVC4 presentation language mode, but SMT-LIB format detected. "
+            "Use --lang smt for SMT-LIB support.");
+      } else {
+        PARSER_STATE->parseError(
+            "A CVC4 presentation language command cannot begin with a "
+            "parenthesis; expected command name.");
+      }
+    }
+  | EOF
+  ;
+
+/**
+ * Matches a command of the input. If a declaration, it will return an empty
+ * command.
+ */
+command [CVC4::PtrCloser<CVC4::Command>* cmd]
+  : ( mainCommand[cmd] SEMICOLON
+    | SEMICOLON
+    | LET_TOK { PARSER_STATE->pushScope(); }
+      typeOrVarLetDecl[CHECK_DECLARED] (
+          COMMA typeOrVarLetDecl[CHECK_DECLARED] )*
+      IN_TOK command[cmd]
+      { PARSER_STATE->popScope(); }
+    )
+    { if(!(*cmd)) {
+        cmd->reset(new EmptyCommand());
+      }
+    }
+  | IDENTIFIER SEMICOLON
+    { std::stringstream ss;
+      ss << "Unrecognized command `"
+         << AntlrInput::tokenText($IDENTIFIER)
+         << "'";
+      PARSER_STATE->parseError(ss.str());
+    }
+  ;
+
+typeOrVarLetDecl[CVC4::parser::DeclarationCheck check]
+options { backtrack = true; }
+  : letDecl | typeLetDecl[check]
+  ;
+
+mainCommand[CVC4::PtrCloser<CVC4::Command>* cmd]
+ at init {
+  Expr f;
+  SExpr sexpr;
+  std::string id;
+  Type t;
+  std::vector<CVC4::Datatype> dts;
+  Debug("parser-extra") << "command: " << AntlrInput::tokenText(LT(1)) << std::endl;
+  std::string s;
+}
+    /* our bread & butter */
+  : ASSERT_TOK formula[f] { cmd->reset(new AssertCommand(f)); }
+
+  | QUERY_TOK formula[f] { cmd->reset(new QueryCommand(f)); }
+  | CHECKSAT_TOK formula[f]?
+    { cmd->reset(f.isNull() ? new CheckSatCommand() : new CheckSatCommand(f)); }
+    /* options */
+  | OPTION_TOK
+    ( str[s] | IDENTIFIER { s = AntlrInput::tokenText($IDENTIFIER); } )
+    ( symbolicExpr[sexpr]
+      { if(s == "logic") {
+          cmd->reset(new SetBenchmarkLogicCommand(sexpr.getValue()));
+        } else {
+          cmd->reset(new SetOptionCommand(s, sexpr));
+        }
+      }
+    | TRUE_TOK { cmd->reset(new SetOptionCommand(s, SExpr("true"))); }
+    | FALSE_TOK { cmd->reset(new SetOptionCommand(s, SExpr("false"))); }
+    | { cmd->reset(new SetOptionCommand(s, SExpr("true"))); }
+    )
+
+    /* push / pop */
+  | PUSH_TOK ( k=numeral { cmd->reset(REPEAT_COMMAND(k, PushCommand())); }
+               | { cmd->reset(new PushCommand()); } )
+  | POP_TOK ( k=numeral { cmd->reset(REPEAT_COMMAND(k, PopCommand())); }
+              | { cmd->reset(new PopCommand()); } )
+  | POPTO_TOK k=numeral?
+    { UNSUPPORTED("POPTO command"); }
+
+    /* push / pop scopes */
+  | PUSH_SCOPE_TOK k=numeral?
+    { UNSUPPORTED("PUSH_SCOPE command"); }
+  | POP_SCOPE_TOK k=numeral?
+    { UNSUPPORTED("POP_SCOPE command"); }
+  | POPTO_SCOPE_TOK k=numeral?
+    { UNSUPPORTED("POPTO_SCOPE command"); }
+
+  | RESET_TOK
+    { cmd->reset(new ResetCommand());
+      PARSER_STATE->reset();
+    }
+
+  | RESET_TOK ASSERTIONS_TOK
+    { cmd->reset(new ResetAssertionsCommand());
+      PARSER_STATE->reset();
+    }
+
+    // Datatypes can be mututally-recursive if they're in the same
+    // definition block, separated by a comma.  So we parse everything
+    // and then ask the ExprManager to resolve everything in one go.
+  | DATATYPE_TOK
+    { /* open a scope to keep the UnresolvedTypes contained */
+      PARSER_STATE->pushScope(); }
+    datatypeDef[dts]
+    ( COMMA datatypeDef[dts] )*
+    END_TOK
+    { PARSER_STATE->popScope();
+      cmd->reset(new DatatypeDeclarationCommand(
+          PARSER_STATE->mkMutualDatatypeTypes(dts)));
+    }
+
+  | CONTEXT_TOK
+    ( ( str[s] | IDENTIFIER { s = AntlrInput::tokenText($IDENTIFIER); } )
+      { UNSUPPORTED("CONTEXT command"); }
+    | { UNSUPPORTED("CONTEXT command"); }
+    )
+
+  | FORGET_TOK identifier[id,CHECK_NONE,SYM_VARIABLE]
+    { UNSUPPORTED("FORGET command"); }
+
+  | GET_TYPE_TOK formula[f]
+    { UNSUPPORTED("GET_TYPE command"); }
+
+  | CHECK_TYPE_TOK formula[f] COLON type[t,CHECK_DECLARED]
+    { UNSUPPORTED("CHECK_TYPE command"); }
+
+  | GET_CHILD_TOK formula[f] k=numeral
+    { UNSUPPORTED("GET_CHILD command"); }
+
+  | GET_OP_TOK formula[f]
+    { UNSUPPORTED("GET_OP command"); }
+
+  | GET_VALUE_TOK formula[f]
+    { cmd->reset(new GetValueCommand(f)); }
+
+  | SUBSTITUTE_TOK identifier[id,CHECK_NONE,SYM_VARIABLE] COLON
+    type[t,CHECK_DECLARED] EQUAL_TOK formula[f] LBRACKET
+    identifier[id,CHECK_NONE,SYM_VARIABLE] ASSIGN_TOK formula[f] RBRACKET
+    { UNSUPPORTED("SUBSTITUTE command"); }
+
+    /* Like the --debug command line option, DBG turns on both tracing
+     * and debugging. */
+  | DBG_TOK
+    ( ( str[s] | IDENTIFIER { s = AntlrInput::tokenText($IDENTIFIER); } )
+      { Debug.on(s); Trace.on(s); }
+    | { Message() << "Please specify what to debug." << std::endl; }
+    )
+
+  | TRACE_TOK
+    ( ( str[s] | IDENTIFIER { s = AntlrInput::tokenText($IDENTIFIER); } )
+      { Trace.on(s); }
+    | { Message() << "Please specify something to trace." << std::endl; }
+    )
+  | UNTRACE_TOK
+    ( ( str[s] | IDENTIFIER { s = AntlrInput::tokenText($IDENTIFIER); } )
+      { Trace.off(s); }
+    | { Message() << "Please specify something to untrace." << std::endl; }
+    )
+
+  | HELP_TOK
+    ( ( str[s] | IDENTIFIER { s = AntlrInput::tokenText($IDENTIFIER); } )
+      { Message() << "No help available for `" << s << "'." << std::endl; }
+  |   { Message() << "Please use --help at the command line for help."
+                << std::endl; }
+            )
+
+  | TRANSFORM_TOK formula[f]
+    { cmd->reset(new SimplifyCommand(f)); }
+
+  | PRINT_TOK formula[f]
+    { UNSUPPORTED("PRINT command"); }
+  | PRINT_TYPE_TOK type[t,CHECK_DECLARED]
+    { UNSUPPORTED("PRINT_TYPE command"); }
+
+  | CALL_TOK identifier[id,CHECK_NONE,SYM_VARIABLE] formula[f]
+    { UNSUPPORTED("CALL command"); }
+
+  | ECHO_TOK
+    ( simpleSymbolicExpr[sexpr]
+      { cmd->reset(new EchoCommand(sexpr.getValue())); }
+    | { cmd->reset(new EchoCommand()); }
+    )
+
+  | EXIT_TOK
+    { cmd->reset(new QuitCommand()); }
+
+  | INCLUDE_TOK
+    ( ( str[s] | IDENTIFIER { s = AntlrInput::tokenText($IDENTIFIER); } )
+      { UNSUPPORTED("INCLUDE command"); }
+    | { PARSER_STATE->parseError("No filename given to INCLUDE command"); }
+    )
+
+  | DUMP_PROOF_TOK
+    { cmd->reset(new GetProofCommand()); }
+
+  | DUMP_UNSAT_CORE_TOK
+    { cmd->reset(new GetUnsatCoreCommand()); }
+
+  | ( DUMP_ASSUMPTIONS_TOK
+    | DUMP_SIG_TOK
+    | DUMP_TCC_TOK
+    | DUMP_TCC_ASSUMPTIONS_TOK
+    | DUMP_TCC_PROOF_TOK
+    | DUMP_CLOSURE_TOK
+    | DUMP_CLOSURE_PROOF_TOK
+    ) { UNSUPPORTED("DUMP* command"); }
+
+    /* these are all synonyms */
+  | ( WHERE_TOK | ASSERTIONS_TOK | ASSUMPTIONS_TOK )
+    { cmd->reset(new GetAssertionsCommand()); }
+
+  | COUNTEREXAMPLE_TOK
+    { cmd->reset(new GetModelCommand); }
+  | COUNTERMODEL_TOK
+    { cmd->reset(new GetModelCommand); }
+
+  | ARITH_VAR_ORDER_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN
+    { UNSUPPORTED("ARITH_VAR_ORDER command"); }
+
+  | CONTINUE_TOK
+    { UNSUPPORTED("CONTINUE command"); }
+  | RESTART_TOK formula[f] { UNSUPPORTED("RESTART command"); }
+  | toplevelDeclaration[cmd]
+  ;
+
+simpleSymbolicExpr[CVC4::SExpr& sexpr]
+ at declarations {
+  std::string s;
+  CVC4::Rational r;
+}
+  : INTEGER_LITERAL
+    { sexpr = SExpr(Integer(AntlrInput::tokenText($INTEGER_LITERAL))); }
+  | MINUS_TOK INTEGER_LITERAL
+    { sexpr = SExpr(-Integer(AntlrInput::tokenText($INTEGER_LITERAL))); }
+  | DECIMAL_LITERAL
+    { sexpr = SExpr(AntlrInput::tokenToRational($DECIMAL_LITERAL)); }
+  | HEX_LITERAL
+    { sexpr = SExpr(AntlrInput::tokenText($HEX_LITERAL)); }
+  | BINARY_LITERAL
+    { sexpr = SExpr(AntlrInput::tokenText($BINARY_LITERAL)); }
+  | str[s]
+    { sexpr = SExpr(s); }
+  | IDENTIFIER
+    { sexpr = SExpr(AntlrInput::tokenText($IDENTIFIER)); }
+  ;
+
+symbolicExpr[CVC4::SExpr& sexpr]
+ at declarations {
+  std::vector<SExpr> children;
+}
+  : simpleSymbolicExpr[sexpr]
+  | LPAREN (symbolicExpr[sexpr] { children.push_back(sexpr); } )* RPAREN
+    { sexpr = SExpr(children); }
+  ;
+
+/**
+ * Match a top-level declaration.
+ */
+toplevelDeclaration[CVC4::PtrCloser<CVC4::Command>* cmd]
+ at init {
+  std::vector<std::string> ids;
+  Type t;
+  Debug("parser-extra") << "declaration: " << AntlrInput::tokenText(LT(1))
+                        << std::endl;
+}
+  : identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON
+    ( declareVariables[cmd,t,ids,true]
+    | declareTypes[cmd,ids] )
+  ;
+
+/**
+ * A bound variable declaration.
+ */
+boundVarDecl[std::vector<std::string>& ids, CVC4::Type& t]
+ at init {
+  CVC4::PtrCloser<Command> local_cmd;
+}
+  : identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON
+    declareVariables[&local_cmd,t,ids,false]
+  ;
+
+/**
+ * A series of bound variable declarations.
+ */
+boundVarDecls
+ at init {
+  std::vector<std::string> ids;
+  Type t;
+}
+  : boundVarDecl[ids,t] ( COMMA boundVarDecl[ids,t] )*
+  ;
+
+boundVarDeclsReturn[std::vector<CVC4::Expr>& terms,
+                    std::vector<CVC4::Type>& types]
+ at init {
+  std::vector<std::string> ids;
+  Type t;
+  terms.clear();
+  types.clear();
+}
+  : boundVarDeclReturn[terms,types] ( COMMA boundVarDeclReturn[terms,types] )*
+  ;
+
+boundVarDeclReturn[std::vector<CVC4::Expr>& terms,
+                   std::vector<CVC4::Type>& types]
+ at init {
+  std::vector<std::string> ids;
+  Type t;
+  // NOTE: do not clear the vectors here!
+}
+  : identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON type[t,CHECK_DECLARED]
+    { const std::vector<Expr>& vars = PARSER_STATE->mkBoundVars(ids, t);
+      terms.insert(terms.end(), vars.begin(), vars.end());
+      for(unsigned i = 0; i < vars.size(); ++i) {
+        types.push_back(t);
+      }
+    }
+  ;
+
+/**
+ * Match the right-hand-side of a type declaration.  Unlike
+ * declareVariables[] below, don't need to return the Type, since it's
+ * always the KindType (the type of types).  Also don't need toplevel
+ * because type declarations are always top-level, except for
+ * type-lets, which don't use this rule.
+ */
+declareTypes[CVC4::PtrCloser<CVC4::Command>* cmd,
+             const std::vector<std::string>& idList]
+ at init {
+  Type t;
+}
+    /* A sort declaration (e.g., "T : TYPE") */
+  : TYPE_TOK
+    { CVC4::PtrCloser<DeclarationSequence> seq(new DeclarationSequence());
+      for(std::vector<std::string>::const_iterator i = idList.begin();
+          i != idList.end(); ++i) {
+        // Don't allow a type variable to clash with a previously
+        // declared type variable, however a type variable and a
+        // non-type variable can clash unambiguously.  Break from CVC3
+        // behavior here.
+        PARSER_STATE->checkDeclaration(*i, CHECK_UNDECLARED, SYM_SORT);
+        Type sort = PARSER_STATE->mkSort(*i);
+        Command* decl = new DeclareTypeCommand(*i, 0, sort);
+        seq->addCommand(decl);
+      }
+      cmd->reset(seq.release());
+    }
+
+    /* A type alias "T : TYPE = foo..." */
+  | TYPE_TOK EQUAL_TOK type[t,CHECK_DECLARED]
+    { for(std::vector<std::string>::const_iterator i = idList.begin();
+          i != idList.end();
+          ++i) {
+        PARSER_STATE->checkDeclaration(*i, CHECK_UNDECLARED, SYM_SORT);
+        PARSER_STATE->defineType(*i, t);
+      }
+    }
+  ;
+
+/**
+ * Match the right-hand side of a variable declaration.  Returns the
+ * type.  Some IDs might have been declared previously, and are not
+ * re-declared if topLevel is true (CVC allows re-declaration if the
+ * types are compatible---if they aren't compatible, an error is
+ * thrown).  Also if topLevel is true, variable definitions are
+ * permitted and "cmd" is output.  If topLevel is false, bound vars
+ * are created
+ */
+declareVariables[CVC4::PtrCloser<CVC4::Command>* cmd, CVC4::Type& t,
+                 const std::vector<std::string>& idList, bool topLevel]
+ at init {
+  Expr f;
+  Debug("parser-extra") << "declType: " << AntlrInput::tokenText(LT(1)) << std::endl;
+}
+    /* A variable declaration (or definition) */
+  : type[t,CHECK_DECLARED] ( EQUAL_TOK formula[f] )?
+    { CVC4::PtrCloser<DeclarationSequence> seq;
+      if(topLevel) {
+        seq.reset(new DeclarationSequence());
+      }
+      if(f.isNull()) {
+        Debug("parser") << "working on " << idList.front() << " : " << t
+                        << std::endl;
+        // CVC language allows redeclaration of variables if types are the same
+        for(std::vector<std::string>::const_iterator i = idList.begin(),
+              i_end = idList.end();
+            i != i_end;
+            ++i) {
+          if(PARSER_STATE->isDeclared(*i, SYM_VARIABLE)) {
+            Type oldType = PARSER_STATE->getType(*i);
+            Debug("parser") << "  " << *i << " was declared previously "
+                            << "with type " << oldType << std::endl;
+            if(oldType != t) {
+              std::stringstream ss;
+              ss << language::SetLanguage(language::output::LANG_CVC4)
+                 << "incompatible type for `" << *i << "':" << std::endl
+                 << "  old type: " << oldType << std::endl
+                 << "  new type: " << t << std::endl;
+              PARSER_STATE->parseError(ss.str());
+            } else {
+              Debug("parser") << "  types " << t << " and " << oldType
+                              << " are compatible" << std::endl;
+            }
+          } else {
+            Debug("parser") << "  " << *i << " not declared" << std::endl;
+            if(topLevel) {
+              Expr func = PARSER_STATE->mkVar(*i, t, ExprManager::VAR_FLAG_GLOBAL);
+              Command* decl = new DeclareFunctionCommand(*i, func, t);
+              seq->addCommand(decl);
+            } else {
+              PARSER_STATE->mkBoundVar(*i, t);
+            }
+          }
+        }
+      } else {
+        // f is not null-- meaning this is a definition not a declaration
+        if(!topLevel) {
+          // must be top-level; doesn't make sense to write something
+          // like e.g. FORALL(x:INT = 4): [...]
+          PARSER_STATE->parseError("cannot construct a definition here; maybe you want a LET");
+        }
+        assert(!idList.empty());
+        for(std::vector<std::string>::const_iterator i = idList.begin(),
+              i_end = idList.end();
+            i != i_end;
+            ++i) {
+          Debug("parser") << "making " << *i << " : " << t << " = " << f << std::endl;
+          PARSER_STATE->checkDeclaration(*i, CHECK_UNDECLARED, SYM_VARIABLE);
+          Expr func = EXPR_MANAGER->mkVar(*i, t, ExprManager::VAR_FLAG_GLOBAL | ExprManager::VAR_FLAG_DEFINED);
+          PARSER_STATE->defineFunction(*i, f);
+          Command* decl = new DefineFunctionCommand(*i, func, f);
+          seq->addCommand(decl);
+        }
+      }
+      if(topLevel) {
+        cmd->reset(new DeclarationSequence());
+      }
+    }
+  ;
+
+/**
+ * Matches a list of identifiers separated by a comma and puts them in the
+ * given list.
+ * @param idList the list to fill with identifiers.
+ * @param check what kinds of check to perform on the symbols
+ */
+identifierList[std::vector<std::string>& idList,
+               CVC4::parser::DeclarationCheck check,
+               CVC4::parser::SymbolType type]
+ at init {
+  std::string id;
+  idList.clear();
+}
+  : identifier[id,check,type] { idList.push_back(id); }
+    ( COMMA identifier[id,check,type] { idList.push_back(id); } )*
+  ;
+
+/**
+ * Matches an identifier and returns a string.
+ */
+identifier[std::string& id,
+           CVC4::parser::DeclarationCheck check,
+           CVC4::parser::SymbolType type]
+  : IDENTIFIER
+    { id = AntlrInput::tokenText($IDENTIFIER);
+      PARSER_STATE->checkDeclaration(id, check, type); }
+  ;
+
+/**
+ * Match the type in a declaration and do the declaration binding.  If
+ * "check" is CHECK_NONE, then identifiers occurring in the type need
+ * not exist!  They are created as "unresolved" types and linked up in
+ * a type-substitution pass.  Right now, only datatype definitions are
+ * supported in this way (since type names can occur without any
+ * forward-declaration in CVC language datatype definitions, we have
+ * to create types for them on-the-fly).  Before passing CHECK_NONE
+ * you really should have a clear idea of WHY you need to parse that
+ * way; then you should trace through Parser::mkMutualDatatypeType()
+ * to figure out just what you're in for.
+ */
+type[CVC4::Type& t,
+     CVC4::parser::DeclarationCheck check]
+ at init {
+  Type t2;
+  bool lhs;
+  std::vector<Type> args;
+}
+    /* a type, possibly a function */
+  : restrictedTypePossiblyFunctionLHS[t,check,lhs]
+    { if(lhs) {
+        assert(t.isTuple());
+        args = ((DatatypeType)t).getTupleTypes();
+      } else {
+        args.push_back(t);
+      }
+    }
+    ( ARROW_TOK type[t2,check] { args.push_back(t2); } )?
+    { if(t2.isNull()) {
+        if(lhs) {
+          PARSER_STATE->parseError("improperly-placed type list; expected `->' after to define a function; or else maybe these parentheses were meant to be square brackets, to define a tuple type?");
+        }
+      } else {
+        t = EXPR_MANAGER->mkFunctionType(args);
+      }
+    }
+
+    /* type-lets: typeLetDecl defines the types, we just manage the
+     * scopes here.  NOTE that LET in the CVC language is always
+     * sequential! */
+  | LET_TOK { PARSER_STATE->pushScope(); }
+    typeLetDecl[check] ( COMMA typeLetDecl[check] )* IN_TOK type[t,check]
+    { PARSER_STATE->popScope(); }
+  ;
+
+// A restrictedType is one that is not a "bare" function type (it can
+// be enclosed in parentheses) and is not a type list.  To support the
+// syntax
+//
+//   f : (nat, nat) -> nat;
+//
+// we have to permit restrictedTypes to be type lists (as on the LHS
+// there).  The "type" rule above uses restictedTypePossiblyFunctionLHS
+// directly in order to implement that; this rule allows a type list to
+// parse but then issues an error.
+restrictedType[CVC4::Type& t,
+               CVC4::parser::DeclarationCheck check]
+ at init {
+  bool lhs;
+}
+  : restrictedTypePossiblyFunctionLHS[t,check,lhs]
+    { if(lhs) { PARSER_STATE->parseError("improperly-placed type list; maybe these parentheses were meant to be square brackets, to define a tuple type?"); } }
+  ;
+
+/**
+ * lhs is set to "true" on output if we have a list of types, so an
+ * ARROW must follow.  An ARROW can always follow; lhs means it MUST.
+ */
+restrictedTypePossiblyFunctionLHS[CVC4::Type& t,
+                                  CVC4::parser::DeclarationCheck check,
+                                  bool& lhs]
+ at init {
+  Type t2;
+  Expr f, f2;
+  std::string id;
+  std::vector<Type> types;
+  std::vector< std::pair<std::string, Type> > typeIds;
+  //SymbolTable* symtab;
+  Parser* parser;
+  lhs = false;
+}
+    /* named types */
+  : identifier[id,check,SYM_SORT]
+    parameterization[check,types]?
+    {
+      if(check == CHECK_DECLARED ||
+         PARSER_STATE->isDeclared(id, SYM_SORT)) {
+        Debug("parser-param") << "param: getSort " << id << " " << types.size() << " " << PARSER_STATE->getArity( id )
+                              << " " << PARSER_STATE->isDeclared(id, SYM_SORT) << std::endl;
+        if(types.size() != PARSER_STATE->getArity(id)) {
+          std::stringstream ss;
+          ss << "incorrect arity for symbol `" << id << "': expected "
+             << PARSER_STATE->getArity( id ) << " type arguments, got "
+             << types.size();
+          PARSER_STATE->parseError(ss.str());
+        }
+        if(types.size() > 0) {
+          t = PARSER_STATE->getSort(id, types);
+        }else{
+          t = PARSER_STATE->getSort(id);
+        }
+      } else {
+        if(types.empty()) {
+          t = PARSER_STATE->mkUnresolvedType(id);
+          Debug("parser-param") << "param: make unres type " << id << std::endl;
+        }else{
+          t = PARSER_STATE->mkUnresolvedTypeConstructor(id,types);
+          t = SortConstructorType(t).instantiate( types );
+          Debug("parser-param") << "param: make unres param type " << id << " " << types.size() << " "
+                                << PARSER_STATE->getArity( id ) << std::endl;
+        }
+      }
+    }
+
+    /* array types */
+  | ARRAY_TOK restrictedType[t,check] OF_TOK restrictedType[t2,check]
+    { t = EXPR_MANAGER->mkArrayType(t, t2); }
+  | SET_TOK OF_TOK restrictedType[t,check]
+    { t = EXPR_MANAGER->mkSetType(t); } 
+  
+    /* subtypes */
+  | SUBTYPE_TOK LPAREN
+    /* A bit tricky: this LAMBDA expression cannot refer to constants
+     * declared in the outer context.  What follows isn't quite right,
+     * though, since type aliases and function definitions should be
+     * retained in the set of current declarations. */
+    { /*symtab = PARSER_STATE->getSymbolTable();
+      PARSER_STATE->useDeclarationsFrom(new SymbolTable());*/ }
+    formula[f] ( COMMA formula[f2] )? RPAREN
+    { /*SymbolTable* old = PARSER_STATE->getSymbolTable();
+      PARSER_STATE->useDeclarationsFrom(symtab);
+      delete old;*/
+      PARSER_STATE->unimplementedFeature("predicate subtyping not supported in this release");
+      /*t = f2.isNull() ?
+        EXPR_MANAGER->mkPredicateSubtype(f) :
+        EXPR_MANAGER->mkPredicateSubtype(f, f2);
+      */
+    }
+
+    /* subrange types */
+  | LBRACKET k1=bound DOTDOT k2=bound RBRACKET
+    { if(k1.hasBound() && k2.hasBound() &&
+         k1.getBound() > k2.getBound()) {
+        std::stringstream ss;
+        ss << "Subrange [" << k1.getBound() << ".." << k2.getBound()
+           << "] inappropriate: range must be nonempty!";
+        PARSER_STATE->parseError(ss.str());
+      }
+      t = EXPR_MANAGER->mkSubrangeType(SubrangeBounds(k1, k2));
+    }
+
+    /* tuple types / old-style function types */
+  | LBRACKET ( type[t,check] { types.push_back(t); }
+    ( COMMA type[t,check] { types.push_back(t); } )* )? RBRACKET
+    { if(types.size() == 1 && types.front().isFunction()) {
+        // old style function syntax [ T -> U ]
+        PARSER_STATE->parseError("old-style function type syntax not supported anymore; please use the new syntax");
+      } else {
+        // tuple type [ T, U, V... ]
+        t = EXPR_MANAGER->mkTupleType(types);
+      }
+    }
+
+    /* record types */
+  | SQHASH ( identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] { typeIds.push_back(std::make_pair(id, t)); }
+    ( COMMA identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] { typeIds.push_back(std::make_pair(id, t)); } )* )? HASHSQ
+    { t = EXPR_MANAGER->mkRecordType(typeIds); }
+
+    /* bitvector types */
+  | BITVECTOR_TOK LPAREN k=numeral RPAREN
+    { if(k == 0) {
+        PARSER_STATE->parseError("Illegal bitvector size: 0");
+      }
+      t = EXPR_MANAGER->mkBitVectorType(k);
+    }
+
+    /* string type */
+  | STRING_TOK { t = EXPR_MANAGER->stringType(); }
+
+    /* basic types */
+  | BOOLEAN_TOK { t = EXPR_MANAGER->booleanType(); }
+  | REAL_TOK { t = EXPR_MANAGER->realType(); }
+  | INT_TOK { t = EXPR_MANAGER->integerType(); }
+
+    /* Parenthesized general type, or the lhs of an ARROW (a list of
+     * types).  These two things are combined to avoid conflicts in
+     * parsing. */
+  | LPAREN type[t,check] { types.push_back(t); }
+    ( COMMA type[t,check] { lhs = true; types.push_back(t); } )* RPAREN
+    { if(lhs) { t = EXPR_MANAGER->mkTupleType(types); }
+      // if !lhs, t is already set up correctly, nothing to do..
+    }
+  ;
+
+parameterization[CVC4::parser::DeclarationCheck check,
+                 std::vector<CVC4::Type>& params]
+ at init {
+  Type t;
+}
+  : LBRACKET restrictedType[t,check] { Debug("parser-param") << "t = " << t << std::endl; params.push_back( t ); }
+    ( COMMA restrictedType[t,check] { Debug("parser-param") << "t = " << t << std::endl; params.push_back( t ); } )* RBRACKET
+  ;
+
+bound returns [CVC4::parser::cvc::mySubrangeBound bound]
+  : UNDERSCORE { $bound = SubrangeBound(); }
+  | k=integer { $bound = SubrangeBound(k.getNumerator()); }
+;
+
+typeLetDecl[CVC4::parser::DeclarationCheck check]
+ at init {
+  Type t;
+  std::string id;
+}
+  : identifier[id,CHECK_NONE,SYM_SORT] (COLON TYPE_TOK)? EQUAL_TOK restrictedType[t,check]
+    { PARSER_STATE->defineType(id, t); }
+  ;
+
+/**
+ * Matches a CVC4 expression.  Formulas and terms are not really
+ * distinguished during parsing; please ignore the naming of the
+ * grammar rules.
+ *
+ * @return the expression representing the formula/term
+ */
+formula[CVC4::Expr& f]
+ at init {
+  Debug("parser-extra") << "formula: " << AntlrInput::tokenText(LT(1)) << std::endl;
+  Expr f2;
+  std::vector<CVC4::Expr> expressions;
+  std::vector<unsigned> operators;
+  unsigned op;
+}
+  : n=nots
+    ( prefixFormula[f]
+      { f = addNots(EXPR_MANAGER, n, f); }
+    | comparison[f]
+      { f = addNots(EXPR_MANAGER, n, f);
+        expressions.push_back(f);
+      }
+      morecomparisons[expressions,operators]?
+      { f = createPrecedenceTree(PARSER_STATE, EXPR_MANAGER, expressions, operators); }
+    )
+  ;
+
+morecomparisons[std::vector<CVC4::Expr>& expressions,
+                std::vector<unsigned>& operators] returns [size_t i = 0]
+ at init {
+  unsigned op;
+  Expr f;
+  $i = expressions.size();
+}
+  : booleanBinop[op] { operators.push_back(op); }
+    n=nots
+    ( prefixFormula[f]
+      { expressions.push_back(addNots(EXPR_MANAGER, n, f)); }
+    | comparison[f]
+      { f = addNots(EXPR_MANAGER, n, f);
+        expressions.push_back(f);
+      }
+      morecomparisons[expressions,operators]?
+    )
+  ;
+
+/** Matches 0 or more NOTs. */
+nots returns [size_t n = 0]
+  : ( NOT_TOK { ++$n; } )*
+  ;
+
+prefixFormula[CVC4::Expr& f]
+ at init {
+  std::vector<std::string> ids;
+  std::vector<Expr> terms;
+  std::vector<Type> types;
+  std::vector<Expr> bvs;
+  Type t;
+  Kind k;
+  Expr ipl;
+}
+    /* quantifiers */
+  : ( FORALL_TOK { k = kind::FORALL; } | EXISTS_TOK { k = kind::EXISTS; } )
+    { PARSER_STATE->pushScope(); } LPAREN
+    boundVarDecl[ids,t]
+    { for(std::vector<std::string>::const_iterator i = ids.begin(); i != ids.end(); ++i) {
+        bvs.push_back(PARSER_STATE->mkBoundVar(*i, t));
+      }
+      ids.clear();
+    }
+    ( COMMA boundVarDecl[ids,t]
+      {
+        for(std::vector<std::string>::const_iterator i = ids.begin(); i != ids.end(); ++i) {
+          bvs.push_back(PARSER_STATE->mkBoundVar(*i, t));
+        }
+        ids.clear();
+      }
+    )* RPAREN {
+      terms.push_back( EXPR_MANAGER->mkExpr( kind::BOUND_VAR_LIST, bvs ) ); }
+    COLON instantiationPatterns[ipl]? formula[f]
+    { PARSER_STATE->popScope();
+      terms.push_back(f);
+      if(! ipl.isNull()) {
+        terms.push_back(ipl);
+      }
+      f = MK_EXPR(k, terms);
+    }
+
+   /* lets: letDecl defines the variables and functionss, we just
+     * manage the scopes here.  NOTE that LET in the CVC language is
+     * always sequential! */
+  | LET_TOK { PARSER_STATE->pushScope(); }
+    letDecl ( COMMA letDecl )*
+    IN_TOK formula[f] { PARSER_STATE->popScope(); }
+
+   /* lambda */
+  | LAMBDA { PARSER_STATE->pushScope(); } LPAREN
+    boundVarDeclsReturn[terms,types]
+    RPAREN COLON formula[f]
+    { PARSER_STATE->popScope();
+      Type t = EXPR_MANAGER->mkFunctionType(types, f.getType());
+      std::string name = "lambda";
+      Expr func = PARSER_STATE->mkAnonymousFunction(name, t, ExprManager::VAR_FLAG_DEFINED);
+      Command* cmd = new DefineFunctionCommand(name, func, terms, f);
+      PARSER_STATE->preemptCommand(cmd);
+      f = func;
+    }
+  ;
+
+instantiationPatterns[ CVC4::Expr& expr ]
+ at init {
+  std::vector<Expr> args;
+  Expr f;
+  std::vector<Expr> patterns;
+}
+  : ( PATTERN_TOK LPAREN formula[f] { args.push_back( f ); } (COMMA formula[f] { args.push_back( f ); } )* RPAREN COLON
+      { patterns.push_back( EXPR_MANAGER->mkExpr( kind::INST_PATTERN, args ) );
+        args.clear();
+      } )+
+    { if(! patterns.empty()) {
+       expr = EXPR_MANAGER->mkExpr( kind::INST_PATTERN_LIST, patterns );
+       }
+    }
+  ;
+
+/**
+ * Matches (and defines) a single LET declaration.
+ */
+letDecl
+ at init {
+  Expr e;
+  std::string name;
+}
+  : identifier[name,CHECK_NONE,SYM_VARIABLE] EQUAL_TOK formula[e]
+    { Debug("parser") << language::SetLanguage(language::output::LANG_CVC4) << e.getType() << std::endl;
+      PARSER_STATE->defineVar(name, e);
+      Debug("parser") << "LET[" << PARSER_STATE->scopeLevel() << "]: "
+                      << name << std::endl
+                      << " ==>" << " " << e << std::endl;
+    }
+  ;
+
+booleanBinop[unsigned& op]
+ at init {
+  op = LT(1)->getType(LT(1));
+}
+  : IFF_TOK
+  | IMPLIES_TOK
+  | OR_TOK
+  | XOR_TOK
+  | AND_TOK
+  | JOIN_TOK
+  | PRODUCT_TOK
+  ;
+
+comparison[CVC4::Expr& f]
+ at init {
+  std::vector<CVC4::Expr> expressions;
+  std::vector<unsigned> operators;
+  unsigned op;
+}
+  : term[f] { expressions.push_back(f); }
+    ( comparisonBinop[op] term[f]
+      { operators.push_back(op); expressions.push_back(f); } )*
+    { f = createPrecedenceTree(PARSER_STATE, EXPR_MANAGER, expressions, operators); }
+  ;
+
+comparisonBinop[unsigned& op]
+ at init {
+  op = LT(1)->getType(LT(1));
+}
+  : EQUAL_TOK
+  | DISEQUAL_TOK
+  | GT_TOK
+  | GEQ_TOK
+  | LT_TOK
+  | LEQ_TOK
+  | MEMBER_TOK
+  | FMF_CARD_TOK
+  ;
+
+arithmeticBinop[unsigned& op]
+ at init {
+  op = LT(1)->getType(LT(1));
+}
+  : PLUS_TOK
+  | MINUS_TOK
+  | STAR_TOK
+  | INTDIV_TOK
+  | MOD_TOK
+  | DIV_TOK
+  | EXP_TOK
+  ;
+
+/** Parses an array/tuple/record assignment term. */
+term[CVC4::Expr& f]
+ at init {
+  std::vector<CVC4::Expr> expressions;
+  std::vector<unsigned> operators;
+  unsigned op;
+  Type t;
+}
+  : uminusTerm[f]
+    ( WITH_TOK
+      ( arrayStore[f] ( COMMA arrayStore[f] )*
+      | DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )*
+            | recordStore[f] ( COMMA DOT recordStore[f] )* ) )
+    | { expressions.push_back(f); }
+      ( arithmeticBinop[op] uminusTerm[f] { operators.push_back(op); expressions.push_back(f); } )*
+      { f = createPrecedenceTree(PARSER_STATE, EXPR_MANAGER, expressions, operators); }
+    )
+  ;
+
+/**
+ * Parses just part of the array assignment (and constructs
+ * the store terms).
+ */
+arrayStore[CVC4::Expr& f]
+ at init {
+  Expr f2, k;
+}
+  : LBRACKET formula[k] RBRACKET
+    { f2 = MK_EXPR(CVC4::kind::SELECT, f, k); }
+    ( ( arrayStore[f2]
+      | DOT ( tupleStore[f2]
+            | recordStore[f2] ) )
+    | ASSIGN_TOK term[f2] )
+    { f = MK_EXPR(CVC4::kind::STORE, f, k, f2); }
+  ;
+
+/**
+ * Parses just part of the tuple assignment (and constructs
+ * the store terms).
+ */
+tupleStore[CVC4::Expr& f]
+ at init {
+  Expr f2;
+}
+  : k=numeral
+    { Type t = f.getType();
+      if(! t.isTuple()) {
+        PARSER_STATE->parseError("tuple-update applied to non-tuple");
+      }
+      size_t length = ((DatatypeType)t).getTupleLength();
+      if(k >= length) {
+        std::stringstream ss;
+        ss << "tuple is of length " << length << "; cannot update index " << k;
+        PARSER_STATE->parseError(ss.str());
+      }
+      std::vector<Expr> args;
+      const Datatype & dt = ((DatatypeType)t).getDatatype();
+      args.push_back( dt[0][k].getSelector() );
+      args.push_back( f );
+      f2 = MK_EXPR(CVC4::kind::APPLY_SELECTOR_TOTAL,args);
+    }
+    ( ( arrayStore[f2]
+      | DOT ( tupleStore[f2]
+            | recordStore[f2] ) )
+    | ASSIGN_TOK term[f2] )
+    { f = MK_EXPR(MK_CONST(TupleUpdate(k)), f, f2); }
+  ;
+
+/**
+ * Parses just part of the record assignment (and constructs
+ * the store terms).
+ */
+recordStore[CVC4::Expr& f]
+ at init {
+  std::string id;
+  Expr f2;
+}
+  : identifier[id,CHECK_NONE,SYM_VARIABLE]
+    { Type t = f.getType();
+      if(! t.isRecord()) {
+        std::stringstream ss;
+        ss << "record-update applied to non-record term" << std::endl
+           << "the term: " << f << std::endl
+           << "its type: " << t;
+        PARSER_STATE->parseError(ss.str());
+      }
+      const Record& rec = ((DatatypeType)t).getRecord();
+      if(! rec.contains(id)) {
+        PARSER_STATE->parseError(std::string("no such field `") + id + "' in record");
+      }
+      std::vector<Expr> args;
+      const Datatype & dt = ((DatatypeType)t).getDatatype();
+      args.push_back( dt[0][id].getSelector() );
+      args.push_back( f );
+      f2 = MK_EXPR(CVC4::kind::APPLY_SELECTOR_TOTAL,args);
+    }
+    ( ( arrayStore[f2]
+      | DOT ( tupleStore[f2]
+            | recordStore[f2] ) )
+    | ASSIGN_TOK term[f2] )
+    { f = MK_EXPR(MK_CONST(RecordUpdate(id)), f, f2); }
+  ;
+
+/** Parses a unary minus term. */
+uminusTerm[CVC4::Expr& f]
+ at init {
+  unsigned minusCount = 0;
+}
+    /* Unary minus */
+  : (MINUS_TOK { ++minusCount; })+ bvBinaryOpTerm[f]
+    { while(minusCount > 0) { --minusCount; f = MK_EXPR(CVC4::kind::UMINUS, f); } }
+  | bvBinaryOpTerm[f]
+  ;
+
+/** Parses bitvectors.  Starts with binary operators @, &, and |. */
+bvBinaryOpTerm[CVC4::Expr& f]
+ at init {
+  std::vector<CVC4::Expr> expressions;
+  std::vector<unsigned> operators;
+  unsigned op;
+}
+  : bvNegTerm[f] { expressions.push_back(f); }
+    ( bvBinop[op] bvNegTerm[f] { operators.push_back(op); expressions.push_back(f); } )*
+    { f = createPrecedenceTree(PARSER_STATE, EXPR_MANAGER, expressions, operators); }
+  ;
+bvBinop[unsigned& op]
+ at init {
+  op = LT(1)->getType(LT(1));
+}
+  : CONCAT_TOK
+  | BAR // bitwise OR
+  | BVAND_TOK
+  ;
+
+bvNegTerm[CVC4::Expr& f]
+    /* BV neg */
+  : BVNEG_TOK bvNegTerm[f]
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_NOT, f); }
+  | NOT_TOK bvNegTerm[f]
+    { f = MK_EXPR(CVC4::kind::COMPLEMENT, f); } 
+  | TRANSPOSE_TOK bvNegTerm[f]
+    { f = MK_EXPR(CVC4::kind::TRANSPOSE, f); } 
+  | TRANSCLOSURE_TOK bvNegTerm[f]
+    { f = MK_EXPR(CVC4::kind::TCLOSURE, f); }
+  | TUPLE_TOK LPAREN bvNegTerm[f] RPAREN
+    { std::vector<Type> types;
+      std::vector<Expr> args;
+      args.push_back(f);
+	  types.push_back(f.getType());
+      DatatypeType t = EXPR_MANAGER->mkTupleType(types);
+      const Datatype& dt = t.getDatatype();
+      args.insert( args.begin(), dt[0].getConstructor() );
+      f = MK_EXPR(kind::APPLY_CONSTRUCTOR, args);
+    }             
+  | postfixTerm[f]
+  ;
+
+/**
+ * Parses an array select / bitvector extract / bitvector shift /
+ * function or constructor application.  These are all parsed the same
+ * way because they are all effectively post-fix operators and can
+ * continue piling onto an expression.  Array selects and bitvector
+ * extracts even share similar syntax with their use of [ square
+ * brackets ], so we left-factor as much out as possible to make ANTLR
+ * happy.
+ */
+postfixTerm[CVC4::Expr& f]
+ at init {
+  Expr f2;
+  bool extract = false, left = false;
+  std::vector<Expr> args;
+  std::string id;
+  Type t;
+}
+  : ( bvTerm[f]
+    ( /* array select / bitvector extract */
+      LBRACKET
+        ( formula[f2] { extract = false; }
+        | k1=numeral COLON k2=numeral { extract = true; } )
+      RBRACKET
+      { if(extract) {
+          /* bitvector extract */
+          f = MK_EXPR(MK_CONST(BitVectorExtract(k1, k2)), f);
+        } else {
+          /* array select */
+          f = MK_EXPR(CVC4::kind::SELECT, f, f2);
+        }
+      }
+      /* left- or right-shift */
+    | ( LEFTSHIFT_TOK { left = true; }
+      | RIGHTSHIFT_TOK { left = false; } ) k=numeral
+      { // Defined in:
+        // http://www.cs.nyu.edu/acsys/cvc3/doc/user_doc.html#user_doc_pres_lang_expr_bit
+        if(left) {
+          f = MK_EXPR(kind::BITVECTOR_CONCAT, f, MK_CONST(BitVector(k)));
+        } else {
+          unsigned n = BitVectorType(f.getType()).getSize();
+          f = MK_EXPR(kind::BITVECTOR_CONCAT, MK_CONST(BitVector(k)),
+                      MK_EXPR(MK_CONST(BitVectorExtract(n - 1, k)), f));
+        }
+      }
+
+      /* function/constructor application */
+    | LPAREN { args.push_back(f); }
+      formula[f] { args.push_back(f); }
+      ( COMMA formula[f] { args.push_back(f); } )* RPAREN
+      // TODO: check arity
+      { Type t = args.front().getType();
+        Debug("parser") << "type is " << t << std::endl;
+        Debug("parser") << "expr is " << args.front() << std::endl;
+        if(PARSER_STATE->isDefinedFunction(args.front())) {
+          f = MK_EXPR(CVC4::kind::APPLY, args);
+        } else if(t.isFunction()) {
+          f = MK_EXPR(CVC4::kind::APPLY_UF, args);
+        } else if(t.isConstructor()) {
+          f = MK_EXPR(CVC4::kind::APPLY_CONSTRUCTOR, args);
+        } else if(t.isSelector()) {
+          f = MK_EXPR(CVC4::kind::APPLY_SELECTOR, args);
+        } else if(t.isTester()) {
+          f = MK_EXPR(CVC4::kind::APPLY_TESTER, args);
+        } else {
+          PARSER_STATE->parseError("internal error: unhandled function application kind");
+        }
+      }
+
+      /* record / tuple select */
+    | DOT
+      ( identifier[id,CHECK_NONE,SYM_VARIABLE]
+        { Type t = f.getType();
+          if(! t.isRecord()) {
+            PARSER_STATE->parseError("record-select applied to non-record");
+          }
+          const Record& rec = ((DatatypeType)t).getRecord();
+          if(!rec.contains(id)){
+            PARSER_STATE->parseError(std::string("no such field `") + id + "' in record");
+          }
+          const Datatype & dt = ((DatatypeType)t).getDatatype();
+          std::vector<Expr> sargs;
+          sargs.push_back( dt[0][id].getSelector() );
+          sargs.push_back( f );
+          f = MK_EXPR(CVC4::kind::APPLY_SELECTOR_TOTAL,sargs);
+        }
+      | k=numeral
+        { Type t = f.getType();
+          if(! t.isTuple()) {
+            PARSER_STATE->parseError("tuple-select applied to non-tuple");
+          }
+          size_t length = ((DatatypeType)t).getTupleLength();
+          if(k >= length) {
+            std::stringstream ss;
+            ss << "tuple is of length " << length << "; cannot access index " << k;
+            PARSER_STATE->parseError(ss.str());
+          }
+          const Datatype & dt = ((DatatypeType)t).getDatatype();
+          std::vector<Expr> sargs;
+          sargs.push_back( dt[0][k].getSelector() );
+          sargs.push_back( f );
+          f = MK_EXPR(CVC4::kind::APPLY_SELECTOR_TOTAL,sargs);
+        }
+      )
+    )*
+    | FLOOR_TOK LPAREN formula[f] RPAREN
+      { f = MK_EXPR(CVC4::kind::TO_INTEGER, f); }
+    | IS_INTEGER_TOK LPAREN formula[f] RPAREN
+      { f = MK_EXPR(CVC4::kind::IS_INTEGER, f); }
+    | ABS_TOK LPAREN formula[f] RPAREN
+      { f = MK_EXPR(CVC4::kind::ABS, f); }
+    | DIVISIBLE_TOK LPAREN formula[f] COMMA n=numeral RPAREN
+      { f = MK_EXPR(CVC4::kind::DIVISIBLE, MK_CONST(CVC4::Divisible(n)), f); }
+    | DISTINCT_TOK LPAREN
+      formula[f] { args.push_back(f); }
+      ( COMMA formula[f] { args.push_back(f); } )* RPAREN
+      { f = (args.size() == 1) ? MK_CONST(bool(true)) : MK_EXPR(CVC4::kind::DISTINCT, args); }
+    )
+    ( typeAscription[f, t]
+      { if(f.getKind() == CVC4::kind::APPLY_CONSTRUCTOR && t.isDatatype()) {
+          std::vector<CVC4::Expr> v;
+          Expr e = f.getOperator();
+          const DatatypeConstructor& dtc = Datatype::datatypeOf(e)[Datatype::indexOf(e)];
+          v.push_back(MK_EXPR( CVC4::kind::APPLY_TYPE_ASCRIPTION,
+                               MK_CONST(AscriptionType(dtc.getSpecializedConstructorType(t))), f.getOperator() ));
+          v.insert(v.end(), f.begin(), f.end());
+          f = MK_EXPR(CVC4::kind::APPLY_CONSTRUCTOR, v);
+        } else if(f.getKind() == CVC4::kind::EMPTYSET && t.isSet()) {
+          f = MK_CONST(CVC4::EmptySet(t));
+        } else if(f.getKind() == CVC4::kind::UNIVERSE_SET && t.isSet()) {
+          f = EXPR_MANAGER->mkUniqueVar(t, kind::UNIVERSE_SET);
+        } else {
+          if(f.getType() != t) {
+            PARSER_STATE->parseError("Type ascription not satisfied.");
+          }
+        }
+      }
+    )?
+  ;
+
+bvTerm[CVC4::Expr& f]
+ at init {
+  Expr f2;
+  std::vector<Expr> args;
+}
+    /* BV xor */
+  : BVXOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_XOR, f, f2); }
+  | BVNAND_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_NAND, f, f2); }
+  | BVNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_NOR, f, f2); }
+  | BVCOMP_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_COMP, f, f2); }
+  | BVXNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_XNOR, f, f2); }
+
+    /* BV unary minus */
+  | BVUMINUS_TOK LPAREN formula[f] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_NEG, f); }
+    /* BV addition */
+  | BVPLUS_TOK LPAREN k=numeral COMMA formula[f] { args.push_back(f); }
+    ( COMMA formula[f2] { args.push_back(f2); } )+ RPAREN
+    {
+      if (k <= 0) {
+        PARSER_STATE->parseError("BVPLUS(k,_,_) must have k > 0");
+      }
+      for (unsigned i = 0; i < args.size(); ++ i) {
+        ENSURE_BV_SIZE(k, args[i]);
+      }
+      f = MK_EXPR(CVC4::kind::BITVECTOR_PLUS, args);
+    }
+    /* BV subtraction */
+  | BVSUB_TOK LPAREN k=numeral COMMA formula[f] COMMA formula[f2] RPAREN
+    {
+      if (k <= 0) {
+        PARSER_STATE->parseError("BVSUB(k,_,_) must have k > 0");
+      }
+      ENSURE_BV_SIZE(k, f);
+      ENSURE_BV_SIZE(k, f2);
+      f = MK_EXPR(CVC4::kind::BITVECTOR_SUB, f, f2);
+    }
+    /* BV multiplication */
+  | BVMULT_TOK LPAREN k=numeral COMMA formula[f] COMMA formula[f2] RPAREN
+    {
+      if (k <= 0) {
+        PARSER_STATE->parseError("BVMULT(k,_,_) must have k > 0");
+      }
+      ENSURE_BV_SIZE(k, f);
+      ENSURE_BV_SIZE(k, f2);
+      f = MK_EXPR(CVC4::kind::BITVECTOR_MULT, f, f2);
+    }
+    /* BV unsigned division */
+  | BVUDIV_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_UDIV, f, f2); }
+    /* BV signed division */
+  | BVSDIV_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_SDIV, f, f2); }
+    /* BV unsigned remainder */
+  | BVUREM_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_UREM, f, f2); }
+    /* BV signed remainder */
+  | BVSREM_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_SREM, f, f2); }
+    /* BV signed modulo */
+  | BVSMOD_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_SMOD, f, f2); }
+    /* BV left shift */
+  | BVSHL_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_SHL, f, f2); }
+    /* BV arithmetic right shift */
+  | BVASHR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_ASHR, f, f2); }
+    /* BV logical left shift */
+  | BVLSHR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_LSHR, f, f2); }
+    /* BV sign extension */
+  | SX_TOK LPAREN formula[f] COMMA k=numeral RPAREN
+    { unsigned n = BitVectorType(f.getType()).getSize();
+      // Sign extension in TheoryBitVector is defined as in SMT-LIB
+      // which is different than in the CVC language
+      // SX(BITVECTOR(k), n) in CVC language extends to n bits
+      // In SMT-LIB, such a thing expands to k + n bits
+      f = MK_EXPR(MK_CONST(BitVectorSignExtend(k - n)), f); }
+    /* BV zero extension */
+  | BVZEROEXTEND_TOK LPAREN formula[f] COMMA k=numeral RPAREN
+    { unsigned n = BitVectorType(f.getType()).getSize();
+      // Zero extension in TheoryBitVector is defined as in SMT-LIB
+      // which is the same as in CVC3, but different than SX!
+      // SX(BITVECTOR(k), n) in CVC language extends to n bits
+      // BVZEROEXTEND(BITVECTOR(k), n) in CVC language extends to k + n bits
+      f = MK_EXPR(MK_CONST(BitVectorZeroExtend(k)), f); }
+    /* BV repeat operation */
+  | BVREPEAT_TOK LPAREN formula[f] COMMA k=numeral RPAREN
+    { f = MK_EXPR(MK_CONST(BitVectorRepeat(k)), f); }
+    /* BV rotate right */
+  | BVROTR_TOK LPAREN formula[f] COMMA k=numeral RPAREN
+    { f = MK_EXPR(MK_CONST(BitVectorRotateRight(k)), f); }
+    /* BV rotate left */
+  | BVROTL_TOK LPAREN formula[f] COMMA k=numeral RPAREN
+    { f = MK_EXPR(MK_CONST(BitVectorRotateLeft(k)), f); }
+
+    /* BV comparisons */
+  | BVLT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_ULT, f, f2); }
+  | BVLE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_ULE, f, f2); }
+  | BVGT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_UGT, f, f2); }
+  | BVGE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_UGE, f, f2); }
+  | BVSLT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_SLT, f, f2); }
+  | BVSLE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_SLE, f, f2); }
+  | BVSGT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_SGT, f, f2); }
+  | BVSGE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::BITVECTOR_SGE, f, f2); }
+  | stringTerm[f]
+  ;
+
+stringTerm[CVC4::Expr& f]
+ at init {
+  Expr f2;
+  Expr f3;
+  std::string s;
+  std::vector<Expr> args;
+}
+    /* String prefix operators */
+  : STRING_CONCAT_TOK LPAREN formula[f] { args.push_back(f); }
+    ( COMMA formula[f2] { args.push_back(f2); } )+ RPAREN
+    { f = MK_EXPR(CVC4::kind::STRING_CONCAT, args); }
+  | STRING_LENGTH_TOK LPAREN formula[f] RPAREN
+    { f = MK_EXPR(CVC4::kind::STRING_LENGTH, f); }
+  | STRING_CONTAINS_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::STRING_STRCTN, f, f2); }
+  | STRING_SUBSTR_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN
+    { f = MK_EXPR(CVC4::kind::STRING_SUBSTR, f, f2, f3); }
+  | STRING_INDEXOF_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN
+    { f = MK_EXPR(CVC4::kind::STRING_STRIDOF, f, f2, f3); }
+  | STRING_REPLACE_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN
+    { f = MK_EXPR(CVC4::kind::STRING_STRREPL, f, f2, f3); }
+  | STRING_PREFIXOF_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::STRING_PREFIX, f, f2); }
+  | STRING_SUFFIXOF_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+    { f = MK_EXPR(CVC4::kind::STRING_SUFFIX, f, f2); }
+  | STRING_STOI_TOK LPAREN formula[f] RPAREN
+    { f = MK_EXPR(CVC4::kind::STRING_STOI, f); }
+  | STRING_ITOS_TOK LPAREN formula[f] RPAREN
+    { f = MK_EXPR(CVC4::kind::STRING_ITOS, f); }
+  | STRING_U16TOS_TOK LPAREN formula[f] RPAREN
+    { f = MK_EXPR(CVC4::kind::STRING_U16TOS, f); }
+  | STRING_STOU16_TOK LPAREN formula[f] RPAREN
+    { f = MK_EXPR(CVC4::kind::STRING_STOU16, f); }
+  | STRING_U32TOS_TOK LPAREN formula[f] RPAREN
+    { f = MK_EXPR(CVC4::kind::STRING_U32TOS, f); }
+  | STRING_STOU32_TOK LPAREN formula[f] RPAREN
+    { f = MK_EXPR(CVC4::kind::STRING_STOU32, f); }    
+
+    /* string literal */
+  | str[s]
+    { f = MK_CONST(CVC4::String(s)); }
+
+  | setsTerm[f]
+  ;
+  
+setsTerm[CVC4::Expr& f]
+ at init {
+}
+    /* Sets prefix operators */
+  : SETS_CARD_TOK LPAREN formula[f] RPAREN
+    { f = MK_EXPR(CVC4::kind::CARD, f); }
+  | simpleTerm[f]
+  ;
+  
+
+/** Parses a simple term. */
+simpleTerm[CVC4::Expr& f]
+ at init {
+  std::string name;
+  std::vector<Expr> args;
+  std::vector<std::string> names;
+  Expr e;
+  Debug("parser-extra") << "term: " << AntlrInput::tokenText(LT(1)) << std::endl;
+  Type t, t2;
+}
+    /* if-then-else */
+  : iteTerm[f] 
+        
+    /* parenthesized sub-formula / tuple literals */
+  | LPAREN formula[f] { args.push_back(f); }
+    ( COMMA formula[f] { args.push_back(f); } )* RPAREN
+    { if(args.size() > 1) {
+        /* If args has elements, we must be a tuple literal.
+         * Otherwise, f is already the sub-formula, and
+         * there's nothing to do */
+        std::vector<Type> types;
+        for(std::vector<Expr>::const_iterator i = args.begin(); i != args.end(); ++i) {
+          types.push_back((*i).getType());
+        }
+        DatatypeType t = EXPR_MANAGER->mkTupleType(types);
+        const Datatype& dt = t.getDatatype();
+        args.insert( args.begin(), dt[0].getConstructor() );
+        f = MK_EXPR(kind::APPLY_CONSTRUCTOR, args);
+      }
+    }    
+
+    /* empty tuple literal */
+  | LPAREN RPAREN
+    { std::vector<Type> types;
+      DatatypeType t = EXPR_MANAGER->mkTupleType(types);
+      const Datatype& dt = t.getDatatype();
+      f = MK_EXPR(kind::APPLY_CONSTRUCTOR, dt[0].getConstructor()); }       
+                  
+    /* empty record literal */
+  | PARENHASH HASHPAREN
+    { DatatypeType t = EXPR_MANAGER->mkRecordType(std::vector< std::pair<std::string, Type> >());
+      const Datatype& dt = t.getDatatype();
+      f = MK_EXPR(kind::APPLY_CONSTRUCTOR, dt[0].getConstructor());
+    }
+    /* empty set literal */
+  | LBRACE RBRACE
+    { f = MK_CONST(EmptySet(Type())); }
+  | UNIVSET_TOK
+    { //booleanType is placeholder
+      f = EXPR_MANAGER->mkUniqueVar(EXPR_MANAGER->booleanType(), kind::UNIVERSE_SET);
+    }
+
+    /* finite set literal */
+  | LBRACE formula[f] { args.push_back(f); }
+    ( COMMA formula[f] { args.push_back(f); } )* RBRACE
+    { f = MK_EXPR(kind::SINGLETON, args[0]);
+      for(size_t i = 1; i < args.size(); ++i) {
+        f = MK_EXPR(kind::UNION, f, MK_EXPR(kind::SINGLETON, args[i]));
+      }
+    }
+
+    /* set cardinality literal */
+  | BAR BAR formula[f] { args.push_back(f); } BAR BAR
+    { f = MK_EXPR(kind::CARD, args[0]);
+    }
+
+    /* array literals */
+  | ARRAY_TOK /* { PARSER_STATE->pushScope(); } */ LPAREN
+    restrictedType[t, CHECK_DECLARED] OF_TOK restrictedType[t2, CHECK_DECLARED]
+    RPAREN COLON simpleTerm[f]
+    { /* Eventually if we support a bound var (like a lambda) for array
+       * literals, we can use the push/pop scope. */
+      /* PARSER_STATE->popScope(); */
+      t = EXPR_MANAGER->mkArrayType(t, t2);
+      if(!f.isConst()) {
+        std::stringstream ss;
+        ss << "expected constant term inside array constant, but found "
+           << "nonconstant term" << std::endl
+           << "the term: " << f;
+        PARSER_STATE->parseError(ss.str());
+      }
+      if(!t2.isComparableTo(f.getType())) {
+        std::stringstream ss;
+        ss << "type mismatch inside array constant term:" << std::endl
+           << "array type:          " << t << std::endl
+           << "expected const type: " << t2 << std::endl
+           << "computed const type: " << f.getType();
+        PARSER_STATE->parseError(ss.str());
+      }
+      f = MK_CONST( ArrayStoreAll(t, f) );
+    }
+
+    /* boolean literals */
+  | TRUE_TOK  { f = MK_CONST(bool(true)); }
+  | FALSE_TOK { f = MK_CONST(bool(false)); }
+    /* arithmetic literals */
+    /* syntactic predicate: never match INTEGER.DIGIT as an integer and a dot!
+     * This is a rational constant!  Otherwise the parser interprets it as a tuple
+     * selector! */
+  | DECIMAL_LITERAL { f = MK_CONST(AntlrInput::tokenToRational($DECIMAL_LITERAL)); }
+  | INTEGER_LITERAL { f = MK_CONST(AntlrInput::tokenToInteger($INTEGER_LITERAL)); }
+    /* bitvector literals */
+  | HEX_LITERAL
+    { assert( AntlrInput::tokenText($HEX_LITERAL).find("0hex") == 0 );
+      std::string hexString = AntlrInput::tokenTextSubstr($HEX_LITERAL, 4);
+      f = MK_CONST( BitVector(hexString, 16) ); }
+  | BINARY_LITERAL
+    { assert( AntlrInput::tokenText($BINARY_LITERAL).find("0bin") == 0 );
+      std::string binString = AntlrInput::tokenTextSubstr($BINARY_LITERAL, 4);
+      f = MK_CONST( BitVector(binString, 2) ); }
+    /* record literals */
+  | PARENHASH recordEntry[name,e] { names.push_back(name); args.push_back(e); }
+    ( COMMA recordEntry[name,e] { names.push_back(name); args.push_back(e); } )* HASHPAREN
+    { std::vector< std::pair<std::string, Type> > typeIds;
+      assert(names.size() == args.size());
+      for(unsigned i = 0; i < names.size(); ++i) {
+        typeIds.push_back(std::make_pair(names[i], args[i].getType()));
+      }
+      DatatypeType t = EXPR_MANAGER->mkRecordType(typeIds);
+      const Datatype& dt = t.getDatatype();
+      args.insert( args.begin(), dt[0].getConstructor() );
+      f = MK_EXPR(kind::APPLY_CONSTRUCTOR, args);
+    }
+
+    /* variable / zero-ary constructor application */
+  | identifier[name,CHECK_DECLARED,SYM_VARIABLE]
+    /* ascriptions will be required for parameterized zero-ary constructors */
+    { f = PARSER_STATE->getVariable(name); }
+    { // datatypes: zero-ary constructors
+      Type t2 = PARSER_STATE->getType(name);
+      if(t2.isConstructor() && ConstructorType(t2).getArity() == 0) {
+        // don't require parentheses, immediately turn it into an apply
+        f = MK_EXPR(CVC4::kind::APPLY_CONSTRUCTOR, f);
+      }
+    }
+  ;
+
+/**
+ * Matches a type ascription.
+ * The f arg is the term to check (it is an input-only argument).
+ */
+typeAscription[const CVC4::Expr& f, CVC4::Type& t]
+ at init {
+}
+  : COLON COLON type[t,CHECK_DECLARED]
+  ;
+
+/**
+ * Matches an entry in a record literal.
+ */
+recordEntry[std::string& name, CVC4::Expr& ex]
+  : identifier[name,CHECK_NONE,SYM_VARIABLE] ASSIGN_TOK formula[ex]
+  ;
+
+/**
+ * Parses an ITE term.
+ */
+iteTerm[CVC4::Expr& f]
+ at init {
+  std::vector<Expr> args;
+  Debug("parser-extra") << "ite: " << AntlrInput::tokenText(LT(1)) << std::endl;
+}
+  : IF_TOK formula[f] { args.push_back(f); }
+    THEN_TOK formula[f] { args.push_back(f); }
+    iteElseTerm[f] { args.push_back(f); }
+    ENDIF_TOK
+    { f = MK_EXPR(CVC4::kind::ITE, args); }
+  ;
+
+/**
+ * Parses the else part of the ITE, i.e. ELSE f, or ELSIF b THEN f1 ...
+ */
+iteElseTerm[CVC4::Expr& f]
+ at init {
+  std::vector<Expr> args;
+  Debug("parser-extra") << "else: " << AntlrInput::tokenText(LT(1)) << std::endl;
+}
+  : ELSE_TOK formula[f]
+  | ELSEIF_TOK iteCondition = formula[f] { args.push_back(f); }
+    THEN_TOK iteThen = formula[f] { args.push_back(f); }
+    iteElse = iteElseTerm[f] { args.push_back(f); }
+    { f = MK_EXPR(CVC4::kind::ITE, args); }
+  ;
+
+/**
+ * Parses a datatype definition
+ */
+datatypeDef[std::vector<CVC4::Datatype>& datatypes]
+ at init {
+  std::string id, id2;
+  Type t;
+  std::vector< Type > params;
+}
+    /* This really needs to be CHECK_NONE, or mutually-recursive
+     * datatypes won't work, because this type will already be
+     * "defined" as an unresolved type; don't worry, we check
+     * below. */
+  : identifier[id,CHECK_NONE,SYM_SORT] { PARSER_STATE->pushScope(); }
+    ( LBRACKET identifier[id2,CHECK_UNDECLARED,SYM_SORT] {
+        t = PARSER_STATE->mkSort(id2, ExprManager::SORT_FLAG_PLACEHOLDER);
+        params.push_back( t );
+      }
+      ( COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT] {
+        t = PARSER_STATE->mkSort(id2, ExprManager::SORT_FLAG_PLACEHOLDER);
+        params.push_back( t ); }
+      )* RBRACKET
+    )?
+    { datatypes.push_back(Datatype(id, params, false));
+      if(!PARSER_STATE->isUnresolvedType(id)) {
+        // if not unresolved, must be undeclared
+        PARSER_STATE->checkDeclaration(id, CHECK_UNDECLARED, SYM_SORT);
+      }
+    }
+    EQUAL_TOK constructorDef[datatypes.back()]
+    ( BAR constructorDef[datatypes.back()] )*
+    { PARSER_STATE->popScope(); }
+  ;
+
+/**
+ * Parses a constructor defintion for type
+ */
+constructorDef[CVC4::Datatype& type]
+ at init {
+  std::string id;
+  CVC4::PtrCloser<CVC4::DatatypeConstructor> ctor;
+}
+  : identifier[id,CHECK_UNDECLARED,SYM_SORT]
+    { // make the tester
+      std::string testerId("is_");
+      testerId.append(id);
+      PARSER_STATE->checkDeclaration(testerId, CHECK_UNDECLARED, SYM_SORT);
+      ctor.reset(new CVC4::DatatypeConstructor(id, testerId));
+    }
+    ( LPAREN
+      selector[&ctor]
+      ( COMMA selector[&ctor] )*
+      RPAREN
+    )?
+    { // make the constructor
+      type.addConstructor(*ctor.get());
+      Debug("parser-idt") << "constructor: " << id.c_str() << std::endl;
+    }
+  ;
+
+selector[CVC4::PtrCloser<CVC4::DatatypeConstructor>* ctor]
+ at init {
+  std::string id;
+  Type t, t2;
+}
+  : identifier[id,CHECK_UNDECLARED,SYM_SORT] COLON type[t,CHECK_NONE]
+    { (*ctor)->addArg(id, t);
+      Debug("parser-idt") << "selector: " << id.c_str() << std::endl;
+    }
+  ;
+
+/**
+ * Matches an identifier from the input. An identifier is a sequence of letters,
+ * digits and "_", "'", "." symbols, starting with a letter.
+ */
+IDENTIFIER : (ALPHA | '_') (ALPHA | DIGIT | '_' | '\'' | '\\' | '?' | '$' | '~')*;
+
+/**
+ * Same as an integer literal converted to an unsigned int, but
+ * slightly more convenient AND works around a strange ANTLR bug (?)
+ * in the BVPLUS/BVMINUS/BVMULT rules where $INTEGER_LITERAL was
+ * returning a reference to the wrong token?!
+ */
+numeral returns [unsigned k = 0]
+  : INTEGER_LITERAL
+    { $k = AntlrInput::tokenToUnsigned($INTEGER_LITERAL); }
+  ;
+
+/**
+ * Similar to numeral but for arbitrary-precision, signed integer.
+ */
+integer returns [CVC4::Rational k = 0]
+  : INTEGER_LITERAL
+    { $k = AntlrInput::tokenToInteger($INTEGER_LITERAL); }
+  | MINUS_TOK INTEGER_LITERAL
+    { $k = -AntlrInput::tokenToInteger($INTEGER_LITERAL); }
+  ;
+
+/**
+ * Similar to numeral but for strings.
+ */
+str[std::string& s]
+  : STRING_LITERAL
+    { s = AntlrInput::tokenText($STRING_LITERAL);
+      /* strip off the quotes */
+      s = s.substr(1, s.size() - 2);
+    }
+  ;
+
+/**
+ * Matches a hexadecimal constant.
+ */
+HEX_LITERAL
+  : '0hex' HEX_DIGIT+
+  ;
+
+/**
+ * Matches a binary constant.
+ */
+BINARY_LITERAL
+  : '0bin' ('0' | '1')+
+  ;
+
+/**
+ * Matches a double quoted string literal. Escaping is supported, and
+ * escape character '\' has to be escaped.
+ */
+STRING_LITERAL: '"' (ESCAPE | ~('"'|'\\'))* '"';
+
+/**
+ * Matches any letter ('a'-'z' and 'A'-'Z').
+ */
+fragment ALPHA : 'a'..'z' | 'A'..'Z';
+
+/**
+ * Matches the decimal digits (0-9)
+ */
+fragment DIGIT : '0'..'9';
+
+// This rule adapted from http://www.antlr.org/wiki/pages/viewpage.action?pageId=13828121
+// which reportedly comes from Tapestry (http://tapestry.apache.org/tapestry5/)
+//
+// Special rule that uses parsing tricks to identify numbers and ranges; it's all about
+// the dot ('.').
+// Recognizes:
+// '.' as DOT
+// '..' as DOTDOT
+// INTEGER_LITERAL (digit+)
+// DECIMAL_LITERAL (digit* . digit+)
+// Has to watch out for embedded rangeop (i.e. "1..10" is not "1." and ".10").
+//
+// This doesn't ever generate the NUMBER_OR_RANGEOP token, it
+// manipulates the $type inside to return the right token.
+NUMBER_OR_RANGEOP
+  : DIGIT+
+    (
+      { LA(2) != '.' }? => '.' DIGIT* { $type = DECIMAL_LITERAL; }
+      | { $type = INTEGER_LITERAL; }
+    )
+  | '.'
+    ( '.' {$type = DOTDOT; }
+    | {$type = DOT; }
+    )
+  ;
+
+// these empty fragments remove "no lexer rule corresponding to token" warnings
+fragment INTEGER_LITERAL:;
+fragment DECIMAL_LITERAL:;
+fragment DOT:;
+fragment DOTDOT:;
+
+/**
+ * Matches the hexidecimal digits (0-9, a-f, A-F)
+ */
+fragment HEX_DIGIT : DIGIT | 'a'..'f' | 'A'..'F';
+
+/**
+ * Matches and skips whitespace in the input and ignores it.
+ */
+WHITESPACE : (' ' | '\t' | '\f' | '\r' | '\n')+ { SKIP(); };
+
+/**
+ * Matches the comments and ignores them
+ */
+COMMENT : '%' (~('\n' | '\r'))* { SKIP(); };
+
+/**
+ * Matches an allowed escaped character.
+ */
+fragment ESCAPE : '\\' ('"' | '\\' | 'n' | 't' | 'r');
diff --git a/src/parser/cvc/Cvc.tokens b/src/parser/cvc/Cvc.tokens
new file mode 100644
index 0000000..c95b1ff
--- /dev/null
+++ b/src/parser/cvc/Cvc.tokens
@@ -0,0 +1,361 @@
+ABS_TOK=4
+ALPHA=5
+AND_TOK=6
+ARITH_VAR_ORDER_TOK=7
+ARRAY_TOK=8
+ARROW_TOK=9
+ASSERTIONS_TOK=10
+ASSERT_TOK=11
+ASSIGN_TOK=12
+ASSUMPTIONS_TOK=13
+BAR=14
+BINARY_LITERAL=15
+BITVECTOR_TOK=16
+BOOLEAN_TOK=17
+BVAND_TOK=18
+BVASHR_TOK=19
+BVCOMP_TOK=20
+BVGE_TOK=21
+BVGT_TOK=22
+BVLE_TOK=23
+BVLSHR_TOK=24
+BVLT_TOK=25
+BVMULT_TOK=26
+BVNAND_TOK=27
+BVNEG_TOK=28
+BVNOR_TOK=29
+BVPLUS_TOK=30
+BVREPEAT_TOK=31
+BVROTL_TOK=32
+BVROTR_TOK=33
+BVSDIV_TOK=34
+BVSGE_TOK=35
+BVSGT_TOK=36
+BVSHL_TOK=37
+BVSLE_TOK=38
+BVSLT_TOK=39
+BVSMOD_TOK=40
+BVSREM_TOK=41
+BVSUB_TOK=42
+BVUDIV_TOK=43
+BVUMINUS_TOK=44
+BVUREM_TOK=45
+BVXNOR_TOK=46
+BVXOR_TOK=47
+BVZEROEXTEND_TOK=48
+CALL_TOK=49
+CHECKSAT_TOK=50
+CHECK_TYPE_TOK=51
+COLON=52
+COMMA=53
+COMMENT=54
+CONCAT_TOK=55
+CONTEXT_TOK=56
+CONTINUE_TOK=57
+COUNTEREXAMPLE_TOK=58
+COUNTERMODEL_TOK=59
+DATATYPE_TOK=60
+DBG_TOK=61
+DECIMAL_LITERAL=62
+DIGIT=63
+DISEQUAL_TOK=64
+DISTINCT_TOK=65
+DIVISIBLE_TOK=66
+DIV_TOK=67
+DOT=68
+DOTDOT=69
+DUMP_ASSUMPTIONS_TOK=70
+DUMP_CLOSURE_PROOF_TOK=71
+DUMP_CLOSURE_TOK=72
+DUMP_PROOF_TOK=73
+DUMP_SIG_TOK=74
+DUMP_TCC_ASSUMPTIONS_TOK=75
+DUMP_TCC_PROOF_TOK=76
+DUMP_TCC_TOK=77
+DUMP_UNSAT_CORE_TOK=78
+ECHO_TOK=79
+ELSEIF_TOK=80
+ELSE_TOK=81
+ENDIF_TOK=82
+END_TOK=83
+EQUAL_TOK=84
+ESCAPE=85
+EXISTS_TOK=86
+EXIT_TOK=87
+EXP_TOK=88
+FALSE_TOK=89
+FLOOR_TOK=90
+FMF_CARD_TOK=91
+FORALL_TOK=92
+FORGET_TOK=93
+GEQ_TOK=94
+GET_CHILD_TOK=95
+GET_OP_TOK=96
+GET_TYPE_TOK=97
+GET_VALUE_TOK=98
+GT_TOK=99
+HASHPAREN=100
+HASHSQ=101
+HELP_TOK=102
+HEX_DIGIT=103
+HEX_LITERAL=104
+IDENTIFIER=105
+IFF_TOK=106
+IF_TOK=107
+IMPLIES_TOK=108
+INCLUDE_TOK=109
+INTDIV_TOK=110
+INTEGER_LITERAL=111
+INT_TOK=112
+IN_TOK=113
+IS_INTEGER_TOK=114
+JOIN_TOK=115
+LAMBDA=116
+LBRACE=117
+LBRACKET=118
+LEFTSHIFT_TOK=119
+LEQ_TOK=120
+LET_TOK=121
+LPAREN=122
+LT_TOK=123
+MEMBER_TOK=124
+MINUS_TOK=125
+MOD_TOK=126
+NOT_TOK=127
+NUMBER_OR_RANGEOP=128
+OF_TOK=129
+OPTION_TOK=130
+OR_TOK=131
+PARENHASH=132
+PATTERN_TOK=133
+PLUS_TOK=134
+POPTO_SCOPE_TOK=135
+POPTO_TOK=136
+POP_SCOPE_TOK=137
+POP_TOK=138
+PRINT_TOK=139
+PRINT_TYPE_TOK=140
+PRODUCT_TOK=141
+PUSH_SCOPE_TOK=142
+PUSH_TOK=143
+QUERY_TOK=144
+RBRACE=145
+RBRACKET=146
+REAL_TOK=147
+RESET_TOK=148
+RESTART_TOK=149
+RIGHTSHIFT_TOK=150
+RPAREN=151
+SEMICOLON=152
+SETS_CARD_TOK=153
+SET_TOK=154
+SQHASH=155
+STAR_TOK=156
+STRING_CHARAT_TOK=157
+STRING_CONCAT_TOK=158
+STRING_CONTAINS_TOK=159
+STRING_INDEXOF_TOK=160
+STRING_ITOS_TOK=161
+STRING_LENGTH_TOK=162
+STRING_LITERAL=163
+STRING_PREFIXOF_TOK=164
+STRING_REPLACE_TOK=165
+STRING_STOI_TOK=166
+STRING_STOU16_TOK=167
+STRING_STOU32_TOK=168
+STRING_SUBSTR_TOK=169
+STRING_SUFFIXOF_TOK=170
+STRING_TOK=171
+STRING_U16TOS_TOK=172
+STRING_U32TOS_TOK=173
+SUBSTITUTE_TOK=174
+SUBTYPE_TOK=175
+SX_TOK=176
+THEN_TOK=177
+TRACE_TOK=178
+TRANSCLOSURE_TOK=179
+TRANSFORM_TOK=180
+TRANSPOSE_TOK=181
+TRUE_TOK=182
+TUPLE_TOK=183
+TYPE_TOK=184
+UNDERSCORE=185
+UNIVSET_TOK=186
+UNTRACE_TOK=187
+WHERE_TOK=188
+WHITESPACE=189
+WITH_TOK=190
+XOR_TOK=191
+'#)'=100
+'#]'=101
+'&'=18
+'(#'=132
+'('=122
+')'=151
+'*'=156
+'+'=134
+','=53
+'-'=125
+'->'=9
+'/'=67
+'/='=64
+':'=52
+':='=12
+';'=152
+'<'=123
+'<<'=119
+'<='=120
+'<=>'=106
+'='=84
+'=>'=108
+'>'=99
+'>='=94
+'>>'=150
+'@'=55
+'ABS'=4
+'AND'=6
+'ARITH_VAR_ORDER'=7
+'ARRAY'=8
+'ASSERT'=11
+'ASSERTIONS'=10
+'ASSUMPTIONS'=13
+'BITVECTOR'=16
+'BOOLEAN'=17
+'BVASHR'=19
+'BVCOMP'=20
+'BVGE'=21
+'BVGT'=22
+'BVLE'=23
+'BVLSHR'=24
+'BVLT'=25
+'BVMULT'=26
+'BVNAND'=27
+'BVNOR'=29
+'BVPLUS'=30
+'BVREPEAT'=31
+'BVROTL'=32
+'BVROTR'=33
+'BVSDIV'=34
+'BVSGE'=35
+'BVSGT'=36
+'BVSHL'=37
+'BVSLE'=38
+'BVSLT'=39
+'BVSMOD'=40
+'BVSREM'=41
+'BVSUB'=42
+'BVUDIV'=43
+'BVUMINUS'=44
+'BVUREM'=45
+'BVXNOR'=46
+'BVXOR'=47
+'BVZEROEXTEND'=48
+'CALL'=49
+'CARD'=153
+'CHARAT'=157
+'CHECKSAT'=50
+'CHECK_TYPE'=51
+'CONCAT'=158
+'CONTAINS'=159
+'CONTEXT'=56
+'CONTINUE'=57
+'COUNTEREXAMPLE'=58
+'COUNTERMODEL'=59
+'DATATYPE'=60
+'DBG'=61
+'DISTINCT'=65
+'DIV'=110
+'DIVISIBLE'=66
+'DUMP_ASSUMPTIONS'=70
+'DUMP_CLOSURE'=72
+'DUMP_CLOSURE_PROOF'=71
+'DUMP_PROOF'=73
+'DUMP_SIG'=74
+'DUMP_TCC'=77
+'DUMP_TCC_ASSUMPTIONS'=75
+'DUMP_TCC_PROOF'=76
+'DUMP_UNSAT_CORE'=78
+'ECHO'=79
+'ELSE'=81
+'ELSIF'=80
+'END'=83
+'ENDIF'=82
+'EXISTS'=86
+'EXIT'=87
+'FALSE'=89
+'FLOOR'=90
+'FORALL'=92
+'FORGET'=93
+'GET_CHILD'=95
+'GET_OP'=96
+'GET_TYPE'=97
+'GET_VALUE'=98
+'HAS_CARD'=91
+'HELP'=102
+'IF'=107
+'IN'=113
+'INCLUDE'=109
+'INDEXOF'=160
+'INT'=112
+'INTEGER_TO_STRING'=161
+'IS_IN'=124
+'IS_INTEGER'=114
+'JOIN'=115
+'LAMBDA'=116
+'LENGTH'=162
+'LET'=121
+'MOD'=126
+'NOT'=127
+'OF'=129
+'OPTION'=130
+'OR'=131
+'PATTERN'=133
+'POP'=138
+'POPTO'=136
+'POPTO_SCOPE'=135
+'POP_SCOPE'=137
+'PREFIXOF'=164
+'PRINT'=139
+'PRINT_TYPE'=140
+'PRODUCT'=141
+'PUSH'=143
+'PUSH_SCOPE'=142
+'QUERY'=144
+'REAL'=147
+'REPLACE'=165
+'RESET'=148
+'RESTART'=149
+'SET'=154
+'STRING'=171
+'STRING_TO_INTEGER'=166
+'STRING_TO_UINT16'=167
+'STRING_TO_UINT32'=168
+'SUBSTITUTE'=174
+'SUBSTR'=169
+'SUBTYPE'=175
+'SUFFIXOF'=170
+'SX'=176
+'TCLOSURE'=179
+'THEN'=177
+'TRACE'=178
+'TRANSFORM'=180
+'TRANSPOSE'=181
+'TRUE'=182
+'TUPLE'=183
+'TYPE'=184
+'UINT16_TO_STRING'=172
+'UINT32_TO_STRING'=173
+'UNIVERSE'=186
+'UNTRACE'=187
+'WHERE'=188
+'WITH'=190
+'XOR'=191
+'[#'=155
+'['=118
+']'=146
+'^'=88
+'_'=185
+'{'=117
+'|'=14
+'}'=145
+'~'=28
diff --git a/src/parser/cvc/CvcLexer.c b/src/parser/cvc/CvcLexer.c
new file mode 100644
index 0000000..c6b5f0b
--- /dev/null
+++ b/src/parser/cvc/CvcLexer.c
@@ -0,0 +1,29848 @@
+/** \file
+ *  This C source file was generated by $ANTLR version 3.4
+ *
+ *     -  From the grammar source file : ../../../../../../src/parser/cvc/Cvc.g
+ *     -                            On : 2017-03-16 01:03:03
+ *     -                 for the lexer : CvcLexerLexer
+ *
+ * Editing it, at least manually, is not wise.
+ *
+ * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws.
+ *
+ *
+*/
+// [The "BSD license"]
+// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
+// http://www.temporal-wave.com
+// http://www.linkedin.com/in/jimidle
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+// 3. The name of the author may not be used to endorse or promote products
+//    derived from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/* -----------------------------------------
+ * Include the ANTLR3 generated header file.
+ */
+#include    "CvcLexer.h"
+/* ----------------------------------------- */
+
+
+/** String literals used by CvcLexer that we must do things like MATCHS() with.
+ *  C will normally just lay down 8 bit characters, and you can use L"xxx" to
+ *  get wchar_t, but wchar_t is 16 bits on Windows, which is not UTF32 and so
+ *  we perform this little trick of defining the literals as arrays of UINT32
+ *  and passing in the address of these.
+ */
+static ANTLR3_UCHAR	lit_1[]  = { 0x41, 0x42, 0x53,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_2[]  = { 0x41, 0x4E, 0x44,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_3[]  = { 0x41, 0x52, 0x49, 0x54, 0x48, 0x5F, 0x56, 0x41, 0x52, 0x5F, 0x4F, 0x52, 0x44, 0x45, 0x52,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_4[]  = { 0x41, 0x52, 0x52, 0x41, 0x59,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_5[]  = { 0x2D, 0x3E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_6[]  = { 0x41, 0x53, 0x53, 0x45, 0x52, 0x54, 0x49, 0x4F, 0x4E, 0x53,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_7[]  = { 0x41, 0x53, 0x53, 0x45, 0x52, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_8[]  = { 0x3A, 0x3D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_9[]  = { 0x41, 0x53, 0x53, 0x55, 0x4D, 0x50, 0x54, 0x49, 0x4F, 0x4E, 0x53,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_10[]  = { 0x42, 0x49, 0x54, 0x56, 0x45, 0x43, 0x54, 0x4F, 0x52,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_11[]  = { 0x42, 0x4F, 0x4F, 0x4C, 0x45, 0x41, 0x4E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_12[]  = { 0x42, 0x56, 0x41, 0x53, 0x48, 0x52,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_13[]  = { 0x42, 0x56, 0x43, 0x4F, 0x4D, 0x50,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_14[]  = { 0x42, 0x56, 0x47, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_15[]  = { 0x42, 0x56, 0x47, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_16[]  = { 0x42, 0x56, 0x4C, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_17[]  = { 0x42, 0x56, 0x4C, 0x53, 0x48, 0x52,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_18[]  = { 0x42, 0x56, 0x4C, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_19[]  = { 0x42, 0x56, 0x4D, 0x55, 0x4C, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_20[]  = { 0x42, 0x56, 0x4E, 0x41, 0x4E, 0x44,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_21[]  = { 0x42, 0x56, 0x4E, 0x4F, 0x52,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_22[]  = { 0x42, 0x56, 0x50, 0x4C, 0x55, 0x53,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_23[]  = { 0x42, 0x56, 0x52, 0x45, 0x50, 0x45, 0x41, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_24[]  = { 0x42, 0x56, 0x52, 0x4F, 0x54, 0x4C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_25[]  = { 0x42, 0x56, 0x52, 0x4F, 0x54, 0x52,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_26[]  = { 0x42, 0x56, 0x53, 0x44, 0x49, 0x56,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_27[]  = { 0x42, 0x56, 0x53, 0x47, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_28[]  = { 0x42, 0x56, 0x53, 0x47, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_29[]  = { 0x42, 0x56, 0x53, 0x48, 0x4C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_30[]  = { 0x42, 0x56, 0x53, 0x4C, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_31[]  = { 0x42, 0x56, 0x53, 0x4C, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_32[]  = { 0x42, 0x56, 0x53, 0x4D, 0x4F, 0x44,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_33[]  = { 0x42, 0x56, 0x53, 0x52, 0x45, 0x4D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_34[]  = { 0x42, 0x56, 0x53, 0x55, 0x42,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_35[]  = { 0x42, 0x56, 0x55, 0x44, 0x49, 0x56,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_36[]  = { 0x42, 0x56, 0x55, 0x4D, 0x49, 0x4E, 0x55, 0x53,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_37[]  = { 0x42, 0x56, 0x55, 0x52, 0x45, 0x4D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_38[]  = { 0x42, 0x56, 0x58, 0x4E, 0x4F, 0x52,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_39[]  = { 0x42, 0x56, 0x58, 0x4F, 0x52,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_40[]  = { 0x42, 0x56, 0x5A, 0x45, 0x52, 0x4F, 0x45, 0x58, 0x54, 0x45, 0x4E, 0x44,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_41[]  = { 0x43, 0x41, 0x4C, 0x4C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_42[]  = { 0x43, 0x48, 0x45, 0x43, 0x4B, 0x53, 0x41, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_43[]  = { 0x43, 0x48, 0x45, 0x43, 0x4B, 0x5F, 0x54, 0x59, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_44[]  = { 0x43, 0x4F, 0x4E, 0x54, 0x45, 0x58, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_45[]  = { 0x43, 0x4F, 0x4E, 0x54, 0x49, 0x4E, 0x55, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_46[]  = { 0x43, 0x4F, 0x55, 0x4E, 0x54, 0x45, 0x52, 0x45, 0x58, 0x41, 0x4D, 0x50, 0x4C, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_47[]  = { 0x43, 0x4F, 0x55, 0x4E, 0x54, 0x45, 0x52, 0x4D, 0x4F, 0x44, 0x45, 0x4C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_48[]  = { 0x44, 0x41, 0x54, 0x41, 0x54, 0x59, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_49[]  = { 0x44, 0x42, 0x47,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_50[]  = { 0x2F, 0x3D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_51[]  = { 0x44, 0x49, 0x53, 0x54, 0x49, 0x4E, 0x43, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_52[]  = { 0x44, 0x49, 0x56, 0x49, 0x53, 0x49, 0x42, 0x4C, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_53[]  = { 0x44, 0x55, 0x4D, 0x50, 0x5F, 0x41, 0x53, 0x53, 0x55, 0x4D, 0x50, 0x54, 0x49, 0x4F, 0x4E, 0x53,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_54[]  = { 0x44, 0x55, 0x4D, 0x50, 0x5F, 0x43, 0x4C, 0x4F, 0x53, 0x55, 0x52, 0x45, 0x5F, 0x50, 0x52, 0x4F, 0x4F, 0x46,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_55[]  = { 0x44, 0x55, 0x4D, 0x50, 0x5F, 0x43, 0x4C, 0x4F, 0x53, 0x55, 0x52, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_56[]  = { 0x44, 0x55, 0x4D, 0x50, 0x5F, 0x50, 0x52, 0x4F, 0x4F, 0x46,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_57[]  = { 0x44, 0x55, 0x4D, 0x50, 0x5F, 0x53, 0x49, 0x47,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_58[]  = { 0x44, 0x55, 0x4D, 0x50, 0x5F, 0x54, 0x43, 0x43, 0x5F, 0x41, 0x53, 0x53, 0x55, 0x4D, 0x50, 0x54, 0x49, 0x4F, 0x4E, 0x53,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_59[]  = { 0x44, 0x55, 0x4D, 0x50, 0x5F, 0x54, 0x43, 0x43, 0x5F, 0x50, 0x52, 0x4F, 0x4F, 0x46,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_60[]  = { 0x44, 0x55, 0x4D, 0x50, 0x5F, 0x54, 0x43, 0x43,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_61[]  = { 0x44, 0x55, 0x4D, 0x50, 0x5F, 0x55, 0x4E, 0x53, 0x41, 0x54, 0x5F, 0x43, 0x4F, 0x52, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_62[]  = { 0x45, 0x43, 0x48, 0x4F,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_63[]  = { 0x45, 0x4C, 0x53, 0x49, 0x46,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_64[]  = { 0x45, 0x4C, 0x53, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_65[]  = { 0x45, 0x4E, 0x44, 0x49, 0x46,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_66[]  = { 0x45, 0x4E, 0x44,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_67[]  = { 0x45, 0x58, 0x49, 0x53, 0x54, 0x53,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_68[]  = { 0x45, 0x58, 0x49, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_69[]  = { 0x46, 0x41, 0x4C, 0x53, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_70[]  = { 0x46, 0x4C, 0x4F, 0x4F, 0x52,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_71[]  = { 0x48, 0x41, 0x53, 0x5F, 0x43, 0x41, 0x52, 0x44,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_72[]  = { 0x46, 0x4F, 0x52, 0x41, 0x4C, 0x4C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_73[]  = { 0x46, 0x4F, 0x52, 0x47, 0x45, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_74[]  = { 0x3E, 0x3D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_75[]  = { 0x47, 0x45, 0x54, 0x5F, 0x43, 0x48, 0x49, 0x4C, 0x44,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_76[]  = { 0x47, 0x45, 0x54, 0x5F, 0x4F, 0x50,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_77[]  = { 0x47, 0x45, 0x54, 0x5F, 0x54, 0x59, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_78[]  = { 0x47, 0x45, 0x54, 0x5F, 0x56, 0x41, 0x4C, 0x55, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_79[]  = { 0x23, 0x29,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_80[]  = { 0x23, 0x5D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_81[]  = { 0x48, 0x45, 0x4C, 0x50,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_82[]  = { 0x3C, 0x3D, 0x3E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_83[]  = { 0x49, 0x46,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_84[]  = { 0x3D, 0x3E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_85[]  = { 0x49, 0x4E, 0x43, 0x4C, 0x55, 0x44, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_86[]  = { 0x44, 0x49, 0x56,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_87[]  = { 0x49, 0x4E, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_88[]  = { 0x49, 0x4E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_89[]  = { 0x49, 0x53, 0x5F, 0x49, 0x4E, 0x54, 0x45, 0x47, 0x45, 0x52,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_90[]  = { 0x4A, 0x4F, 0x49, 0x4E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_91[]  = { 0x4C, 0x41, 0x4D, 0x42, 0x44, 0x41,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_92[]  = { 0x3C, 0x3C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_93[]  = { 0x3C, 0x3D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_94[]  = { 0x4C, 0x45, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_95[]  = { 0x49, 0x53, 0x5F, 0x49, 0x4E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_96[]  = { 0x4D, 0x4F, 0x44,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_97[]  = { 0x4E, 0x4F, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_98[]  = { 0x4F, 0x46,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_99[]  = { 0x4F, 0x50, 0x54, 0x49, 0x4F, 0x4E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_100[]  = { 0x4F, 0x52,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_101[]  = { 0x28, 0x23,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_102[]  = { 0x50, 0x41, 0x54, 0x54, 0x45, 0x52, 0x4E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_103[]  = { 0x50, 0x4F, 0x50, 0x54, 0x4F, 0x5F, 0x53, 0x43, 0x4F, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_104[]  = { 0x50, 0x4F, 0x50, 0x54, 0x4F,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_105[]  = { 0x50, 0x4F, 0x50, 0x5F, 0x53, 0x43, 0x4F, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_106[]  = { 0x50, 0x4F, 0x50,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_107[]  = { 0x50, 0x52, 0x49, 0x4E, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_108[]  = { 0x50, 0x52, 0x49, 0x4E, 0x54, 0x5F, 0x54, 0x59, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_109[]  = { 0x50, 0x52, 0x4F, 0x44, 0x55, 0x43, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_110[]  = { 0x50, 0x55, 0x53, 0x48, 0x5F, 0x53, 0x43, 0x4F, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_111[]  = { 0x50, 0x55, 0x53, 0x48,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_112[]  = { 0x51, 0x55, 0x45, 0x52, 0x59,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_113[]  = { 0x52, 0x45, 0x41, 0x4C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_114[]  = { 0x52, 0x45, 0x53, 0x45, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_115[]  = { 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_116[]  = { 0x3E, 0x3E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_117[]  = { 0x43, 0x41, 0x52, 0x44,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_118[]  = { 0x53, 0x45, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_119[]  = { 0x5B, 0x23,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_120[]  = { 0x43, 0x48, 0x41, 0x52, 0x41, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_121[]  = { 0x43, 0x4F, 0x4E, 0x43, 0x41, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_122[]  = { 0x43, 0x4F, 0x4E, 0x54, 0x41, 0x49, 0x4E, 0x53,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_123[]  = { 0x49, 0x4E, 0x44, 0x45, 0x58, 0x4F, 0x46,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_124[]  = { 0x49, 0x4E, 0x54, 0x45, 0x47, 0x45, 0x52, 0x5F, 0x54, 0x4F, 0x5F, 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_125[]  = { 0x4C, 0x45, 0x4E, 0x47, 0x54, 0x48,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_126[]  = { 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x4F, 0x46,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_127[]  = { 0x52, 0x45, 0x50, 0x4C, 0x41, 0x43, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_128[]  = { 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47, 0x5F, 0x54, 0x4F, 0x5F, 0x49, 0x4E, 0x54, 0x45, 0x47, 0x45, 0x52,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_129[]  = { 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47, 0x5F, 0x54, 0x4F, 0x5F, 0x55, 0x49, 0x4E, 0x54, 0x31, 0x36,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_130[]  = { 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47, 0x5F, 0x54, 0x4F, 0x5F, 0x55, 0x49, 0x4E, 0x54, 0x33, 0x32,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_131[]  = { 0x53, 0x55, 0x42, 0x53, 0x54, 0x52,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_132[]  = { 0x53, 0x55, 0x46, 0x46, 0x49, 0x58, 0x4F, 0x46,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_133[]  = { 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_134[]  = { 0x55, 0x49, 0x4E, 0x54, 0x31, 0x36, 0x5F, 0x54, 0x4F, 0x5F, 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_135[]  = { 0x55, 0x49, 0x4E, 0x54, 0x33, 0x32, 0x5F, 0x54, 0x4F, 0x5F, 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_136[]  = { 0x53, 0x55, 0x42, 0x53, 0x54, 0x49, 0x54, 0x55, 0x54, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_137[]  = { 0x53, 0x55, 0x42, 0x54, 0x59, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_138[]  = { 0x53, 0x58,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_139[]  = { 0x54, 0x48, 0x45, 0x4E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_140[]  = { 0x54, 0x52, 0x41, 0x43, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_141[]  = { 0x54, 0x43, 0x4C, 0x4F, 0x53, 0x55, 0x52, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_142[]  = { 0x54, 0x52, 0x41, 0x4E, 0x53, 0x46, 0x4F, 0x52, 0x4D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_143[]  = { 0x54, 0x52, 0x41, 0x4E, 0x53, 0x50, 0x4F, 0x53, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_144[]  = { 0x54, 0x52, 0x55, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_145[]  = { 0x54, 0x55, 0x50, 0x4C, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_146[]  = { 0x54, 0x59, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_147[]  = { 0x55, 0x4E, 0x49, 0x56, 0x45, 0x52, 0x53, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_148[]  = { 0x55, 0x4E, 0x54, 0x52, 0x41, 0x43, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_149[]  = { 0x57, 0x48, 0x45, 0x52, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_150[]  = { 0x57, 0x49, 0x54, 0x48,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_151[]  = { 0x58, 0x4F, 0x52,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_152[]  = { 0x30, 0x68, 0x65, 0x78,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_153[]  = { 0x30, 0x62, 0x69, 0x6E,  ANTLR3_STRING_TERMINATOR};
+
+
+
+
+
+/* MACROS that hide the C interface implementations from the
+ * generated code, which makes it a little more understandable to the human eye.
+ * I am very much against using C pre-processor macros for function calls and bits
+ * of code as you cannot see what is happening when single stepping in debuggers
+ * and so on. The exception (in my book at least) is for generated code, where you are
+ * not maintaining it, but may wish to read and understand it. If you single step it, you know that input()
+ * hides some indirect calls, but is always referring to the input stream. This is
+ * probably more readable than ctx->input->istream->input(snarfle0->blarg) and allows me to rejig
+ * the runtime interfaces without changing the generated code too often, without
+ * confusing the reader of the generated output, who may not wish to know the gory
+ * details of the interface inheritance.
+ */
+
+#define		CTX	ctx
+
+/* Aids in accessing scopes for grammar programmers
+ */
+#undef	SCOPE_TYPE
+#undef	SCOPE_STACK
+#undef	SCOPE_TOP
+#define	SCOPE_TYPE(scope)   pCvcLexer_##scope##_SCOPE
+#define SCOPE_STACK(scope)  pCvcLexer_##scope##Stack
+#define	SCOPE_TOP(scope)    ctx->pCvcLexer_##scope##Top
+#define	SCOPE_SIZE(scope)		ctx->pCvcLexer_##scope##Stack_limit
+#define SCOPE_INSTANCE(scope, i)	(ctx->SCOPE_STACK(scope)->get(ctx->SCOPE_STACK(scope),i))
+
+
+/* Macros for accessing things in a lexer
+ */
+#undef	    LEXER
+#undef	    RECOGNIZER
+#undef	    RULEMEMO
+#undef	    GETCHARINDEX
+#undef	    GETLINE
+#undef	    GETCHARPOSITIONINLINE
+#undef	    EMIT
+#undef	    EMITNEW
+#undef	    MATCHC
+#undef	    MATCHS
+#undef	    MATCHRANGE
+#undef	    LTOKEN
+#undef	    HASFAILED
+#undef	    FAILEDFLAG
+#undef	    INPUT
+#undef	    STRSTREAM
+#undef	    LA
+#undef	    HASEXCEPTION
+#undef	    EXCEPTION
+#undef	    CONSTRUCTEX
+#undef	    CONSUME
+#undef	    LRECOVER
+#undef	    MARK
+#undef	    REWIND
+#undef	    REWINDLAST
+#undef	    BACKTRACKING
+#undef		MATCHANY
+#undef		MEMOIZE
+#undef		HAVEPARSEDRULE
+#undef		GETTEXT
+#undef		INDEX
+#undef		SEEK
+#undef		PUSHSTREAM
+#undef		POPSTREAM
+#undef		SETTEXT
+#undef		SETTEXT8
+
+#define	    LEXER					ctx->pLexer
+#define	    RECOGNIZER			    LEXER->rec
+#define		LEXSTATE				RECOGNIZER->state
+#define		TOKSOURCE				LEXSTATE->tokSource
+#define	    GETCHARINDEX()			LEXER->getCharIndex(LEXER)
+#define	    GETLINE()				LEXER->getLine(LEXER)
+#define	    GETTEXT()				LEXER->getText(LEXER)
+#define	    GETCHARPOSITIONINLINE() LEXER->getCharPositionInLine(LEXER)
+#define	    EMIT()					LEXSTATE->type = _type; LEXER->emit(LEXER)
+#define	    EMITNEW(t)				LEXER->emitNew(LEXER, t)
+#define	    MATCHC(c)				LEXER->matchc(LEXER, c)
+#define	    MATCHS(s)				LEXER->matchs(LEXER, s)
+#define	    MATCHRANGE(c1,c2)	    LEXER->matchRange(LEXER, c1, c2)
+#define	    MATCHANY()				LEXER->matchAny(LEXER)
+#define	    LTOKEN  				LEXSTATE->token
+#define	    HASFAILED()				(LEXSTATE->failed == ANTLR3_TRUE)
+#define	    BACKTRACKING			LEXSTATE->backtracking
+#define	    FAILEDFLAG				LEXSTATE->failed
+#define	    INPUT					LEXER->input
+#define	    STRSTREAM				INPUT
+#define		ISTREAM					INPUT->istream
+#define		INDEX()					ISTREAM->index(ISTREAM)
+#define		SEEK(n)					ISTREAM->seek(ISTREAM, n)
+#define	    EOF_TOKEN				&(LEXSTATE->tokSource->eofToken)
+#define	    HASEXCEPTION()			(LEXSTATE->error == ANTLR3_TRUE)
+#define	    EXCEPTION				LEXSTATE->exception
+#define	    CONSTRUCTEX()			RECOGNIZER->exConstruct(RECOGNIZER)
+#define	    LRECOVER()				LEXER->recover(LEXER)
+#define	    MARK()					ISTREAM->mark(ISTREAM)
+#define	    REWIND(m)				ISTREAM->rewind(ISTREAM, m)
+#define	    REWINDLAST()			ISTREAM->rewindLast(ISTREAM)
+#define		MEMOIZE(ri,si)			RECOGNIZER->memoize(RECOGNIZER, ri, si)
+#define		HAVEPARSEDRULE(r)		RECOGNIZER->alreadyParsedRule(RECOGNIZER, r)
+#define		PUSHSTREAM(str)			LEXER->pushCharStream(LEXER, str)
+#define		POPSTREAM()				LEXER->popCharStream(LEXER)
+#define		SETTEXT(str)			LEXSTATE->text = str
+#define		SKIP()					LEXSTATE->token = &(TOKSOURCE->skipToken)
+#define		USER1					LEXSTATE->user1
+#define		USER2					LEXSTATE->user2
+#define		USER3					LEXSTATE->user3
+#define		CUSTOM					LEXSTATE->custom
+#define		RULEMEMO				LEXSTATE->ruleMemo
+#define		DBG						RECOGNIZER->debugger
+
+/* If we have been told we can rely on the standard 8 bit or UTF16 input
+ * stream, then we can define our macros to use the direct pointers
+ * in the input object, which is much faster than indirect calls. This
+ * is really only significant to lexers with a lot of fragment rules (which
+ * do not place LA(1) in a temporary at the moment) and even then
+ * only if there is a lot of input (order of say 1M or so).
+ */
+#if	defined(ANTLR3_INLINE_INPUT_8BIT) || defined(ANTLR3_INLINE_INPUT_UTF16)
+
+# ifdef	ANTLR3_INLINE_INPUT_8BIT
+
+/* 8 bit character set */
+
+#  define	    NEXTCHAR	((pANTLR3_UINT8)(INPUT->nextChar))
+#  define	    DATAP	((pANTLR3_UINT8)(INPUT->data))
+
+# else
+
+#  define	    NEXTCHAR	((pANTLR3_UINT16)(INPUT->nextChar))
+#  define	    DATAP	((pANTLR3_UINT16)(INPUT->data))
+
+# endif
+
+# define	    LA(n) ((NEXTCHAR + n) > (DATAP + INPUT->sizeBuf) ? ANTLR3_CHARSTREAM_EOF : (ANTLR3_UCHAR)(*(NEXTCHAR + n - 1)))
+# define            CONSUME()                                           \
+{                                                                       \
+    if        (NEXTCHAR < (DATAP + INPUT->sizeBuf))                     \
+    {                                                                   \
+        INPUT->charPositionInLine++;                                    \
+        if  ((ANTLR3_UCHAR)(*NEXTCHAR) == INPUT->newlineChar)           \
+        {                                                               \
+            INPUT->line++;                                              \
+            INPUT->charPositionInLine        = 0;                       \
+            INPUT->currentLine                = (void *)(NEXTCHAR + 1); \
+        }                                                               \
+        INPUT->nextChar = (void *)(NEXTCHAR + 1);                       \
+    }                                                                   \
+}
+
+#else
+
+// Pick up the input character by calling the input stream implementation.
+//
+#define	    CONSUME()   INPUT->istream->consume(INPUT->istream)
+#define	    LA(n)       INPUT->istream->_LA(INPUT->istream, n)
+
+#endif
+
+#define		TOKTEXT(tok, txt)				tok, (pANTLR3_UINT8)txt
+
+/* The 4 tokens defined below may well clash with your own #defines or token types. If so
+ * then for the present you must use different names for your defines as these are hard coded
+ * in the code generator. It would be better not to use such names internally, and maybe
+ * we can change this in a forthcoming release. I deliberately do not #undef these
+ * here as this will at least give you a redefined error somewhere if they clash.
+ */
+#define	    UP	    ANTLR3_TOKEN_UP
+#define	    DOWN    ANTLR3_TOKEN_DOWN
+#define	    EOR	    ANTLR3_TOKEN_EOR
+#define	    INVALID ANTLR3_TOKEN_INVALID
+
+
+/* =============================================================================
+ * Functions to create and destroy scopes. First come the rule scopes, followed
+ * by the global declared scopes.
+ */
+
+
+
+/* ============================================================================= */
+
+/* =============================================================================
+ * Start of recognizer
+ */
+
+/* Forward declare the locally static matching functions we have generated and any predicate functions.
+ */
+static ANTLR3_INLINE 
+ void
+	mABS_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mAND_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mARITH_VAR_ORDER_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mARRAY_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mARROW_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mASSERTIONS_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mASSERT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mASSIGN_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mASSUMPTIONS_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBAR    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBITVECTOR_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBOOLEAN_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVAND_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVASHR_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVCOMP_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVGE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVGT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVLE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVLSHR_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVLT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVMULT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVNAND_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVNEG_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVNOR_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVPLUS_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVREPEAT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVROTL_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVROTR_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVSDIV_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVSGE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVSGT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVSHL_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVSLE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVSLT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVSMOD_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVSREM_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVSUB_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVUDIV_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVUMINUS_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVUREM_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVXNOR_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVXOR_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVZEROEXTEND_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCALL_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCHECKSAT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCHECK_TYPE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCOLON    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCOMMA    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCONCAT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCONTEXT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCONTINUE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCOUNTEREXAMPLE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCOUNTERMODEL_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDATATYPE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDBG_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDISEQUAL_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDISTINCT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDIVISIBLE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDIV_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDUMP_ASSUMPTIONS_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDUMP_CLOSURE_PROOF_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDUMP_CLOSURE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDUMP_PROOF_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDUMP_SIG_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDUMP_TCC_ASSUMPTIONS_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDUMP_TCC_PROOF_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDUMP_TCC_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDUMP_UNSAT_CORE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mECHO_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mELSEIF_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mELSE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mENDIF_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mEND_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mEQUAL_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mEXISTS_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mEXIT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mEXP_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFALSE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFLOOR_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFMF_CARD_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFORALL_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFORGET_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mGEQ_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mGET_CHILD_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mGET_OP_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mGET_TYPE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mGET_VALUE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mGT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mHASHPAREN    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mHASHSQ    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mHELP_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mIFF_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mIF_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mIMPLIES_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mINCLUDE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mINTDIV_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mINT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mIN_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mIS_INTEGER_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mJOIN_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLAMBDA    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLBRACE    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLBRACKET    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLEFTSHIFT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLEQ_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLET_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLPAREN    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mMEMBER_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mMINUS_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mMOD_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mNOT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mOF_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mOPTION_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mOR_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPARENHASH    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPATTERN_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPLUS_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPOPTO_SCOPE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPOPTO_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPOP_SCOPE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPOP_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPRINT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPRINT_TYPE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPRODUCT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPUSH_SCOPE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPUSH_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mQUERY_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mRBRACE    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mRBRACKET    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mREAL_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mRESET_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mRESTART_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mRIGHTSHIFT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mRPAREN    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSEMICOLON    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSETS_CARD_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSET_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSQHASH    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTAR_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTRING_CHARAT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTRING_CONCAT_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTRING_CONTAINS_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTRING_INDEXOF_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTRING_ITOS_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTRING_LENGTH_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTRING_PREFIXOF_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTRING_REPLACE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTRING_STOI_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTRING_STOU16_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTRING_STOU32_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTRING_SUBSTR_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTRING_SUFFIXOF_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTRING_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTRING_U16TOS_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTRING_U32TOS_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSUBSTITUTE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSUBTYPE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSX_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTHEN_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTRACE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTRANSCLOSURE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTRANSFORM_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTRANSPOSE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTRUE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTUPLE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTYPE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mUNDERSCORE    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mUNIVSET_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mUNTRACE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mWHERE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mWITH_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mXOR_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mIDENTIFIER    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mHEX_LITERAL    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBINARY_LITERAL    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTRING_LITERAL    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mALPHA    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDIGIT    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mNUMBER_OR_RANGEOP    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mINTEGER_LITERAL    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDECIMAL_LITERAL    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDOT    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDOTDOT    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mHEX_DIGIT    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mWHITESPACE    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCOMMENT    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mESCAPE    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTokens    (pCvcLexer ctx);
+static void	CvcLexerFree(pCvcLexer ctx);
+
+/* =========================================================================
+ * Lexer matching rules end.
+ * =========================================================================
+ */
+
+
+
+static void
+CvcLexerFree  (pCvcLexer ctx)
+{
+    LEXER->free(LEXER);
+
+    ANTLR3_FREE(ctx);
+}
+
+static void
+CvcLexerReset (pCvcLexer ctx)
+{
+    RECOGNIZER->reset(RECOGNIZER);
+}
+
+/** \brief Name of the grammar file that generated this code
+ */
+static const char fileName[] = "../../../../../../src/parser/cvc/Cvc.g";
+
+/** \brief Return the name of the grammar file that generated this code.
+ */
+static const char * getGrammarFileName()
+{
+	return fileName;
+}
+
+/** \brief Create a new lexer called CvcLexer
+ *
+ * \param[in]    instream Pointer to an initialized input stream
+ * \return
+ *     - Success pCvcLexer initialized for the lex start
+ *     - Fail NULL
+ */
+ANTLR3_API pCvcLexer CvcLexerNew
+(
+pANTLR3_INPUT_STREAM
+ instream)
+{
+	// See if we can create a new lexer with the standard constructor
+	//
+	return CvcLexerNewSSD(instream, NULL);
+}
+
+/** \brief Create a new lexer called CvcLexer
+ *
+ * \param[in]    instream Pointer to an initialized input stream
+ * \param[state] state Previously created shared recognizer stat
+ * \return
+ *     - Success pCvcLexer initialized for the lex start
+ *     - Fail NULL
+ */
+ANTLR3_API pCvcLexer CvcLexerNewSSD
+(pANTLR3_INPUT_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state)
+{
+    pCvcLexer ctx; // Context structure we will build and return
+
+    ctx = (pCvcLexer) ANTLR3_CALLOC(1, sizeof(CvcLexer));
+
+    if  (ctx == NULL)
+    {
+        // Failed to allocate memory for lexer context
+        return  NULL;
+    }
+
+    /* -------------------------------------------------------------------
+     * Memory for basic structure is allocated, now to fill in
+     * in base ANTLR3 structures. We initialize the function pointers
+     * for the standard ANTLR3 lexer function set, but upon return
+     * from here, the programmer may set the pointers to provide custom
+     * implementations of each function.
+     *
+     * We don't use the macros defined in CvcLexer.h here so you can get a sense
+     * of what goes where.
+     */
+
+    /* Create a base lexer, using the supplied input stream
+     */
+    ctx->pLexer	= antlr3LexerNewStream(ANTLR3_SIZE_HINT, instream, state);
+
+    /* Check that we allocated the memory correctly
+     */
+    if	(ctx->pLexer == NULL)
+    {
+		ANTLR3_FREE(ctx);
+		return  NULL;
+    }
+    /* Install the implementation of our CvcLexer interface
+     */
+    ctx->mABS_TOK	= mABS_TOK;
+    ctx->mAND_TOK	= mAND_TOK;
+    ctx->mARITH_VAR_ORDER_TOK	= mARITH_VAR_ORDER_TOK;
+    ctx->mARRAY_TOK	= mARRAY_TOK;
+    ctx->mARROW_TOK	= mARROW_TOK;
+    ctx->mASSERTIONS_TOK	= mASSERTIONS_TOK;
+    ctx->mASSERT_TOK	= mASSERT_TOK;
+    ctx->mASSIGN_TOK	= mASSIGN_TOK;
+    ctx->mASSUMPTIONS_TOK	= mASSUMPTIONS_TOK;
+    ctx->mBAR	= mBAR;
+    ctx->mBITVECTOR_TOK	= mBITVECTOR_TOK;
+    ctx->mBOOLEAN_TOK	= mBOOLEAN_TOK;
+    ctx->mBVAND_TOK	= mBVAND_TOK;
+    ctx->mBVASHR_TOK	= mBVASHR_TOK;
+    ctx->mBVCOMP_TOK	= mBVCOMP_TOK;
+    ctx->mBVGE_TOK	= mBVGE_TOK;
+    ctx->mBVGT_TOK	= mBVGT_TOK;
+    ctx->mBVLE_TOK	= mBVLE_TOK;
+    ctx->mBVLSHR_TOK	= mBVLSHR_TOK;
+    ctx->mBVLT_TOK	= mBVLT_TOK;
+    ctx->mBVMULT_TOK	= mBVMULT_TOK;
+    ctx->mBVNAND_TOK	= mBVNAND_TOK;
+    ctx->mBVNEG_TOK	= mBVNEG_TOK;
+    ctx->mBVNOR_TOK	= mBVNOR_TOK;
+    ctx->mBVPLUS_TOK	= mBVPLUS_TOK;
+    ctx->mBVREPEAT_TOK	= mBVREPEAT_TOK;
+    ctx->mBVROTL_TOK	= mBVROTL_TOK;
+    ctx->mBVROTR_TOK	= mBVROTR_TOK;
+    ctx->mBVSDIV_TOK	= mBVSDIV_TOK;
+    ctx->mBVSGE_TOK	= mBVSGE_TOK;
+    ctx->mBVSGT_TOK	= mBVSGT_TOK;
+    ctx->mBVSHL_TOK	= mBVSHL_TOK;
+    ctx->mBVSLE_TOK	= mBVSLE_TOK;
+    ctx->mBVSLT_TOK	= mBVSLT_TOK;
+    ctx->mBVSMOD_TOK	= mBVSMOD_TOK;
+    ctx->mBVSREM_TOK	= mBVSREM_TOK;
+    ctx->mBVSUB_TOK	= mBVSUB_TOK;
+    ctx->mBVUDIV_TOK	= mBVUDIV_TOK;
+    ctx->mBVUMINUS_TOK	= mBVUMINUS_TOK;
+    ctx->mBVUREM_TOK	= mBVUREM_TOK;
+    ctx->mBVXNOR_TOK	= mBVXNOR_TOK;
+    ctx->mBVXOR_TOK	= mBVXOR_TOK;
+    ctx->mBVZEROEXTEND_TOK	= mBVZEROEXTEND_TOK;
+    ctx->mCALL_TOK	= mCALL_TOK;
+    ctx->mCHECKSAT_TOK	= mCHECKSAT_TOK;
+    ctx->mCHECK_TYPE_TOK	= mCHECK_TYPE_TOK;
+    ctx->mCOLON	= mCOLON;
+    ctx->mCOMMA	= mCOMMA;
+    ctx->mCONCAT_TOK	= mCONCAT_TOK;
+    ctx->mCONTEXT_TOK	= mCONTEXT_TOK;
+    ctx->mCONTINUE_TOK	= mCONTINUE_TOK;
+    ctx->mCOUNTEREXAMPLE_TOK	= mCOUNTEREXAMPLE_TOK;
+    ctx->mCOUNTERMODEL_TOK	= mCOUNTERMODEL_TOK;
+    ctx->mDATATYPE_TOK	= mDATATYPE_TOK;
+    ctx->mDBG_TOK	= mDBG_TOK;
+    ctx->mDISEQUAL_TOK	= mDISEQUAL_TOK;
+    ctx->mDISTINCT_TOK	= mDISTINCT_TOK;
+    ctx->mDIVISIBLE_TOK	= mDIVISIBLE_TOK;
+    ctx->mDIV_TOK	= mDIV_TOK;
+    ctx->mDUMP_ASSUMPTIONS_TOK	= mDUMP_ASSUMPTIONS_TOK;
+    ctx->mDUMP_CLOSURE_PROOF_TOK	= mDUMP_CLOSURE_PROOF_TOK;
+    ctx->mDUMP_CLOSURE_TOK	= mDUMP_CLOSURE_TOK;
+    ctx->mDUMP_PROOF_TOK	= mDUMP_PROOF_TOK;
+    ctx->mDUMP_SIG_TOK	= mDUMP_SIG_TOK;
+    ctx->mDUMP_TCC_ASSUMPTIONS_TOK	= mDUMP_TCC_ASSUMPTIONS_TOK;
+    ctx->mDUMP_TCC_PROOF_TOK	= mDUMP_TCC_PROOF_TOK;
+    ctx->mDUMP_TCC_TOK	= mDUMP_TCC_TOK;
+    ctx->mDUMP_UNSAT_CORE_TOK	= mDUMP_UNSAT_CORE_TOK;
+    ctx->mECHO_TOK	= mECHO_TOK;
+    ctx->mELSEIF_TOK	= mELSEIF_TOK;
+    ctx->mELSE_TOK	= mELSE_TOK;
+    ctx->mENDIF_TOK	= mENDIF_TOK;
+    ctx->mEND_TOK	= mEND_TOK;
+    ctx->mEQUAL_TOK	= mEQUAL_TOK;
+    ctx->mEXISTS_TOK	= mEXISTS_TOK;
+    ctx->mEXIT_TOK	= mEXIT_TOK;
+    ctx->mEXP_TOK	= mEXP_TOK;
+    ctx->mFALSE_TOK	= mFALSE_TOK;
+    ctx->mFLOOR_TOK	= mFLOOR_TOK;
+    ctx->mFMF_CARD_TOK	= mFMF_CARD_TOK;
+    ctx->mFORALL_TOK	= mFORALL_TOK;
+    ctx->mFORGET_TOK	= mFORGET_TOK;
+    ctx->mGEQ_TOK	= mGEQ_TOK;
+    ctx->mGET_CHILD_TOK	= mGET_CHILD_TOK;
+    ctx->mGET_OP_TOK	= mGET_OP_TOK;
+    ctx->mGET_TYPE_TOK	= mGET_TYPE_TOK;
+    ctx->mGET_VALUE_TOK	= mGET_VALUE_TOK;
+    ctx->mGT_TOK	= mGT_TOK;
+    ctx->mHASHPAREN	= mHASHPAREN;
+    ctx->mHASHSQ	= mHASHSQ;
+    ctx->mHELP_TOK	= mHELP_TOK;
+    ctx->mIFF_TOK	= mIFF_TOK;
+    ctx->mIF_TOK	= mIF_TOK;
+    ctx->mIMPLIES_TOK	= mIMPLIES_TOK;
+    ctx->mINCLUDE_TOK	= mINCLUDE_TOK;
+    ctx->mINTDIV_TOK	= mINTDIV_TOK;
+    ctx->mINT_TOK	= mINT_TOK;
+    ctx->mIN_TOK	= mIN_TOK;
+    ctx->mIS_INTEGER_TOK	= mIS_INTEGER_TOK;
+    ctx->mJOIN_TOK	= mJOIN_TOK;
+    ctx->mLAMBDA	= mLAMBDA;
+    ctx->mLBRACE	= mLBRACE;
+    ctx->mLBRACKET	= mLBRACKET;
+    ctx->mLEFTSHIFT_TOK	= mLEFTSHIFT_TOK;
+    ctx->mLEQ_TOK	= mLEQ_TOK;
+    ctx->mLET_TOK	= mLET_TOK;
+    ctx->mLPAREN	= mLPAREN;
+    ctx->mLT_TOK	= mLT_TOK;
+    ctx->mMEMBER_TOK	= mMEMBER_TOK;
+    ctx->mMINUS_TOK	= mMINUS_TOK;
+    ctx->mMOD_TOK	= mMOD_TOK;
+    ctx->mNOT_TOK	= mNOT_TOK;
+    ctx->mOF_TOK	= mOF_TOK;
+    ctx->mOPTION_TOK	= mOPTION_TOK;
+    ctx->mOR_TOK	= mOR_TOK;
+    ctx->mPARENHASH	= mPARENHASH;
+    ctx->mPATTERN_TOK	= mPATTERN_TOK;
+    ctx->mPLUS_TOK	= mPLUS_TOK;
+    ctx->mPOPTO_SCOPE_TOK	= mPOPTO_SCOPE_TOK;
+    ctx->mPOPTO_TOK	= mPOPTO_TOK;
+    ctx->mPOP_SCOPE_TOK	= mPOP_SCOPE_TOK;
+    ctx->mPOP_TOK	= mPOP_TOK;
+    ctx->mPRINT_TOK	= mPRINT_TOK;
+    ctx->mPRINT_TYPE_TOK	= mPRINT_TYPE_TOK;
+    ctx->mPRODUCT_TOK	= mPRODUCT_TOK;
+    ctx->mPUSH_SCOPE_TOK	= mPUSH_SCOPE_TOK;
+    ctx->mPUSH_TOK	= mPUSH_TOK;
+    ctx->mQUERY_TOK	= mQUERY_TOK;
+    ctx->mRBRACE	= mRBRACE;
+    ctx->mRBRACKET	= mRBRACKET;
+    ctx->mREAL_TOK	= mREAL_TOK;
+    ctx->mRESET_TOK	= mRESET_TOK;
+    ctx->mRESTART_TOK	= mRESTART_TOK;
+    ctx->mRIGHTSHIFT_TOK	= mRIGHTSHIFT_TOK;
+    ctx->mRPAREN	= mRPAREN;
+    ctx->mSEMICOLON	= mSEMICOLON;
+    ctx->mSETS_CARD_TOK	= mSETS_CARD_TOK;
+    ctx->mSET_TOK	= mSET_TOK;
+    ctx->mSQHASH	= mSQHASH;
+    ctx->mSTAR_TOK	= mSTAR_TOK;
+    ctx->mSTRING_CHARAT_TOK	= mSTRING_CHARAT_TOK;
+    ctx->mSTRING_CONCAT_TOK	= mSTRING_CONCAT_TOK;
+    ctx->mSTRING_CONTAINS_TOK	= mSTRING_CONTAINS_TOK;
+    ctx->mSTRING_INDEXOF_TOK	= mSTRING_INDEXOF_TOK;
+    ctx->mSTRING_ITOS_TOK	= mSTRING_ITOS_TOK;
+    ctx->mSTRING_LENGTH_TOK	= mSTRING_LENGTH_TOK;
+    ctx->mSTRING_PREFIXOF_TOK	= mSTRING_PREFIXOF_TOK;
+    ctx->mSTRING_REPLACE_TOK	= mSTRING_REPLACE_TOK;
+    ctx->mSTRING_STOI_TOK	= mSTRING_STOI_TOK;
+    ctx->mSTRING_STOU16_TOK	= mSTRING_STOU16_TOK;
+    ctx->mSTRING_STOU32_TOK	= mSTRING_STOU32_TOK;
+    ctx->mSTRING_SUBSTR_TOK	= mSTRING_SUBSTR_TOK;
+    ctx->mSTRING_SUFFIXOF_TOK	= mSTRING_SUFFIXOF_TOK;
+    ctx->mSTRING_TOK	= mSTRING_TOK;
+    ctx->mSTRING_U16TOS_TOK	= mSTRING_U16TOS_TOK;
+    ctx->mSTRING_U32TOS_TOK	= mSTRING_U32TOS_TOK;
+    ctx->mSUBSTITUTE_TOK	= mSUBSTITUTE_TOK;
+    ctx->mSUBTYPE_TOK	= mSUBTYPE_TOK;
+    ctx->mSX_TOK	= mSX_TOK;
+    ctx->mTHEN_TOK	= mTHEN_TOK;
+    ctx->mTRACE_TOK	= mTRACE_TOK;
+    ctx->mTRANSCLOSURE_TOK	= mTRANSCLOSURE_TOK;
+    ctx->mTRANSFORM_TOK	= mTRANSFORM_TOK;
+    ctx->mTRANSPOSE_TOK	= mTRANSPOSE_TOK;
+    ctx->mTRUE_TOK	= mTRUE_TOK;
+    ctx->mTUPLE_TOK	= mTUPLE_TOK;
+    ctx->mTYPE_TOK	= mTYPE_TOK;
+    ctx->mUNDERSCORE	= mUNDERSCORE;
+    ctx->mUNIVSET_TOK	= mUNIVSET_TOK;
+    ctx->mUNTRACE_TOK	= mUNTRACE_TOK;
+    ctx->mWHERE_TOK	= mWHERE_TOK;
+    ctx->mWITH_TOK	= mWITH_TOK;
+    ctx->mXOR_TOK	= mXOR_TOK;
+    ctx->mIDENTIFIER	= mIDENTIFIER;
+    ctx->mHEX_LITERAL	= mHEX_LITERAL;
+    ctx->mBINARY_LITERAL	= mBINARY_LITERAL;
+    ctx->mSTRING_LITERAL	= mSTRING_LITERAL;
+    ctx->mALPHA	= mALPHA;
+    ctx->mDIGIT	= mDIGIT;
+    ctx->mNUMBER_OR_RANGEOP	= mNUMBER_OR_RANGEOP;
+    ctx->mINTEGER_LITERAL	= mINTEGER_LITERAL;
+    ctx->mDECIMAL_LITERAL	= mDECIMAL_LITERAL;
+    ctx->mDOT	= mDOT;
+    ctx->mDOTDOT	= mDOTDOT;
+    ctx->mHEX_DIGIT	= mHEX_DIGIT;
+    ctx->mWHITESPACE	= mWHITESPACE;
+    ctx->mCOMMENT	= mCOMMENT;
+    ctx->mESCAPE	= mESCAPE;
+    ctx->mTokens	= mTokens;
+
+    /** When the nextToken() call is made to this lexer's pANTLR3_TOKEN_SOURCE
+     *  it will call mTokens() in this generated code, and will pass it the ctx
+     * pointer of this lexer, not the context of the base lexer, so store that now.
+     */
+    ctx->pLexer->ctx	    = ctx;
+
+    /**Install the token matching function
+     */
+    ctx->pLexer->mTokens = (void (*) (void *))(mTokens);
+
+    ctx->getGrammarFileName	= getGrammarFileName;
+    ctx->free		= CvcLexerFree;
+    ctx->reset          = CvcLexerReset;
+
+
+    /* Return the newly built lexer to the caller
+     */
+    return  ctx;
+}
+/* =========================================================================
+ * Functions to match the lexer grammar defined tokens from the input stream
+ */
+
+//   Comes from: 35:9: ( 'ABS' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ABS_TOK
+ *
+ * Looks to match the characters the constitute the token ABS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mABS_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ABS_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:35:9: ( 'ABS' )
+    // ../../../../../../src/parser/cvc/Cvc.g:35:11: 'ABS'
+    {
+        MATCHS(lit_1);
+        if  (HASEXCEPTION())
+        {
+            goto ruleABS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleABS_TOKEx; /* Prevent compiler warnings */
+    ruleABS_TOKEx: ;
+
+}
+// $ANTLR end ABS_TOK
+
+//   Comes from: 36:9: ( 'AND' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start AND_TOK
+ *
+ * Looks to match the characters the constitute the token AND_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mAND_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = AND_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:36:9: ( 'AND' )
+    // ../../../../../../src/parser/cvc/Cvc.g:36:11: 'AND'
+    {
+        MATCHS(lit_2);
+        if  (HASEXCEPTION())
+        {
+            goto ruleAND_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleAND_TOKEx; /* Prevent compiler warnings */
+    ruleAND_TOKEx: ;
+
+}
+// $ANTLR end AND_TOK
+
+//   Comes from: 37:21: ( 'ARITH_VAR_ORDER' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ARITH_VAR_ORDER_TOK
+ *
+ * Looks to match the characters the constitute the token ARITH_VAR_ORDER_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mARITH_VAR_ORDER_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ARITH_VAR_ORDER_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:37:21: ( 'ARITH_VAR_ORDER' )
+    // ../../../../../../src/parser/cvc/Cvc.g:37:23: 'ARITH_VAR_ORDER'
+    {
+        MATCHS(lit_3);
+        if  (HASEXCEPTION())
+        {
+            goto ruleARITH_VAR_ORDER_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleARITH_VAR_ORDER_TOKEx; /* Prevent compiler warnings */
+    ruleARITH_VAR_ORDER_TOKEx: ;
+
+}
+// $ANTLR end ARITH_VAR_ORDER_TOK
+
+//   Comes from: 38:11: ( 'ARRAY' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ARRAY_TOK
+ *
+ * Looks to match the characters the constitute the token ARRAY_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mARRAY_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ARRAY_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:38:11: ( 'ARRAY' )
+    // ../../../../../../src/parser/cvc/Cvc.g:38:13: 'ARRAY'
+    {
+        MATCHS(lit_4);
+        if  (HASEXCEPTION())
+        {
+            goto ruleARRAY_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleARRAY_TOKEx; /* Prevent compiler warnings */
+    ruleARRAY_TOKEx: ;
+
+}
+// $ANTLR end ARRAY_TOK
+
+//   Comes from: 39:11: ( '->' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ARROW_TOK
+ *
+ * Looks to match the characters the constitute the token ARROW_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mARROW_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ARROW_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:39:11: ( '->' )
+    // ../../../../../../src/parser/cvc/Cvc.g:39:13: '->'
+    {
+        MATCHS(lit_5);
+        if  (HASEXCEPTION())
+        {
+            goto ruleARROW_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleARROW_TOKEx; /* Prevent compiler warnings */
+    ruleARROW_TOKEx: ;
+
+}
+// $ANTLR end ARROW_TOK
+
+//   Comes from: 40:16: ( 'ASSERTIONS' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ASSERTIONS_TOK
+ *
+ * Looks to match the characters the constitute the token ASSERTIONS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mASSERTIONS_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ASSERTIONS_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:40:16: ( 'ASSERTIONS' )
+    // ../../../../../../src/parser/cvc/Cvc.g:40:18: 'ASSERTIONS'
+    {
+        MATCHS(lit_6);
+        if  (HASEXCEPTION())
+        {
+            goto ruleASSERTIONS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleASSERTIONS_TOKEx; /* Prevent compiler warnings */
+    ruleASSERTIONS_TOKEx: ;
+
+}
+// $ANTLR end ASSERTIONS_TOK
+
+//   Comes from: 41:12: ( 'ASSERT' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ASSERT_TOK
+ *
+ * Looks to match the characters the constitute the token ASSERT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mASSERT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ASSERT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:41:12: ( 'ASSERT' )
+    // ../../../../../../src/parser/cvc/Cvc.g:41:14: 'ASSERT'
+    {
+        MATCHS(lit_7);
+        if  (HASEXCEPTION())
+        {
+            goto ruleASSERT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleASSERT_TOKEx; /* Prevent compiler warnings */
+    ruleASSERT_TOKEx: ;
+
+}
+// $ANTLR end ASSERT_TOK
+
+//   Comes from: 42:12: ( ':=' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ASSIGN_TOK
+ *
+ * Looks to match the characters the constitute the token ASSIGN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mASSIGN_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ASSIGN_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:42:12: ( ':=' )
+    // ../../../../../../src/parser/cvc/Cvc.g:42:14: ':='
+    {
+        MATCHS(lit_8);
+        if  (HASEXCEPTION())
+        {
+            goto ruleASSIGN_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleASSIGN_TOKEx; /* Prevent compiler warnings */
+    ruleASSIGN_TOKEx: ;
+
+}
+// $ANTLR end ASSIGN_TOK
+
+//   Comes from: 43:17: ( 'ASSUMPTIONS' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ASSUMPTIONS_TOK
+ *
+ * Looks to match the characters the constitute the token ASSUMPTIONS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mASSUMPTIONS_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ASSUMPTIONS_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:43:17: ( 'ASSUMPTIONS' )
+    // ../../../../../../src/parser/cvc/Cvc.g:43:19: 'ASSUMPTIONS'
+    {
+        MATCHS(lit_9);
+        if  (HASEXCEPTION())
+        {
+            goto ruleASSUMPTIONS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleASSUMPTIONS_TOKEx; /* Prevent compiler warnings */
+    ruleASSUMPTIONS_TOKEx: ;
+
+}
+// $ANTLR end ASSUMPTIONS_TOK
+
+//   Comes from: 44:5: ( '|' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BAR
+ *
+ * Looks to match the characters the constitute the token BAR
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBAR(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BAR;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:44:5: ( '|' )
+    // ../../../../../../src/parser/cvc/Cvc.g:44:7: '|'
+    {
+        MATCHC('|');
+        if  (HASEXCEPTION())
+        {
+            goto ruleBAREx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBAREx; /* Prevent compiler warnings */
+    ruleBAREx: ;
+
+}
+// $ANTLR end BAR
+
+//   Comes from: 45:15: ( 'BITVECTOR' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BITVECTOR_TOK
+ *
+ * Looks to match the characters the constitute the token BITVECTOR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBITVECTOR_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BITVECTOR_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:45:15: ( 'BITVECTOR' )
+    // ../../../../../../src/parser/cvc/Cvc.g:45:17: 'BITVECTOR'
+    {
+        MATCHS(lit_10);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBITVECTOR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBITVECTOR_TOKEx; /* Prevent compiler warnings */
+    ruleBITVECTOR_TOKEx: ;
+
+}
+// $ANTLR end BITVECTOR_TOK
+
+//   Comes from: 46:13: ( 'BOOLEAN' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BOOLEAN_TOK
+ *
+ * Looks to match the characters the constitute the token BOOLEAN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBOOLEAN_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BOOLEAN_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:46:13: ( 'BOOLEAN' )
+    // ../../../../../../src/parser/cvc/Cvc.g:46:15: 'BOOLEAN'
+    {
+        MATCHS(lit_11);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBOOLEAN_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBOOLEAN_TOKEx; /* Prevent compiler warnings */
+    ruleBOOLEAN_TOKEx: ;
+
+}
+// $ANTLR end BOOLEAN_TOK
+
+//   Comes from: 47:11: ( '&' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVAND_TOK
+ *
+ * Looks to match the characters the constitute the token BVAND_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVAND_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVAND_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:47:11: ( '&' )
+    // ../../../../../../src/parser/cvc/Cvc.g:47:13: '&'
+    {
+        MATCHC('&');
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVAND_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVAND_TOKEx; /* Prevent compiler warnings */
+    ruleBVAND_TOKEx: ;
+
+}
+// $ANTLR end BVAND_TOK
+
+//   Comes from: 48:12: ( 'BVASHR' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVASHR_TOK
+ *
+ * Looks to match the characters the constitute the token BVASHR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVASHR_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVASHR_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:48:12: ( 'BVASHR' )
+    // ../../../../../../src/parser/cvc/Cvc.g:48:14: 'BVASHR'
+    {
+        MATCHS(lit_12);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVASHR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVASHR_TOKEx; /* Prevent compiler warnings */
+    ruleBVASHR_TOKEx: ;
+
+}
+// $ANTLR end BVASHR_TOK
+
+//   Comes from: 49:12: ( 'BVCOMP' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVCOMP_TOK
+ *
+ * Looks to match the characters the constitute the token BVCOMP_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVCOMP_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVCOMP_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:49:12: ( 'BVCOMP' )
+    // ../../../../../../src/parser/cvc/Cvc.g:49:14: 'BVCOMP'
+    {
+        MATCHS(lit_13);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVCOMP_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVCOMP_TOKEx; /* Prevent compiler warnings */
+    ruleBVCOMP_TOKEx: ;
+
+}
+// $ANTLR end BVCOMP_TOK
+
+//   Comes from: 50:10: ( 'BVGE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVGE_TOK
+ *
+ * Looks to match the characters the constitute the token BVGE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVGE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVGE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:50:10: ( 'BVGE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:50:12: 'BVGE'
+    {
+        MATCHS(lit_14);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVGE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVGE_TOKEx; /* Prevent compiler warnings */
+    ruleBVGE_TOKEx: ;
+
+}
+// $ANTLR end BVGE_TOK
+
+//   Comes from: 51:10: ( 'BVGT' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVGT_TOK
+ *
+ * Looks to match the characters the constitute the token BVGT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVGT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVGT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:51:10: ( 'BVGT' )
+    // ../../../../../../src/parser/cvc/Cvc.g:51:12: 'BVGT'
+    {
+        MATCHS(lit_15);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVGT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVGT_TOKEx; /* Prevent compiler warnings */
+    ruleBVGT_TOKEx: ;
+
+}
+// $ANTLR end BVGT_TOK
+
+//   Comes from: 52:10: ( 'BVLE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVLE_TOK
+ *
+ * Looks to match the characters the constitute the token BVLE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVLE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVLE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:52:10: ( 'BVLE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:52:12: 'BVLE'
+    {
+        MATCHS(lit_16);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVLE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVLE_TOKEx; /* Prevent compiler warnings */
+    ruleBVLE_TOKEx: ;
+
+}
+// $ANTLR end BVLE_TOK
+
+//   Comes from: 53:12: ( 'BVLSHR' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVLSHR_TOK
+ *
+ * Looks to match the characters the constitute the token BVLSHR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVLSHR_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVLSHR_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:53:12: ( 'BVLSHR' )
+    // ../../../../../../src/parser/cvc/Cvc.g:53:14: 'BVLSHR'
+    {
+        MATCHS(lit_17);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVLSHR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVLSHR_TOKEx; /* Prevent compiler warnings */
+    ruleBVLSHR_TOKEx: ;
+
+}
+// $ANTLR end BVLSHR_TOK
+
+//   Comes from: 54:10: ( 'BVLT' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVLT_TOK
+ *
+ * Looks to match the characters the constitute the token BVLT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVLT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVLT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:54:10: ( 'BVLT' )
+    // ../../../../../../src/parser/cvc/Cvc.g:54:12: 'BVLT'
+    {
+        MATCHS(lit_18);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVLT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVLT_TOKEx; /* Prevent compiler warnings */
+    ruleBVLT_TOKEx: ;
+
+}
+// $ANTLR end BVLT_TOK
+
+//   Comes from: 55:12: ( 'BVMULT' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVMULT_TOK
+ *
+ * Looks to match the characters the constitute the token BVMULT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVMULT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVMULT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:55:12: ( 'BVMULT' )
+    // ../../../../../../src/parser/cvc/Cvc.g:55:14: 'BVMULT'
+    {
+        MATCHS(lit_19);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVMULT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVMULT_TOKEx; /* Prevent compiler warnings */
+    ruleBVMULT_TOKEx: ;
+
+}
+// $ANTLR end BVMULT_TOK
+
+//   Comes from: 56:12: ( 'BVNAND' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVNAND_TOK
+ *
+ * Looks to match the characters the constitute the token BVNAND_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVNAND_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVNAND_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:56:12: ( 'BVNAND' )
+    // ../../../../../../src/parser/cvc/Cvc.g:56:14: 'BVNAND'
+    {
+        MATCHS(lit_20);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVNAND_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVNAND_TOKEx; /* Prevent compiler warnings */
+    ruleBVNAND_TOKEx: ;
+
+}
+// $ANTLR end BVNAND_TOK
+
+//   Comes from: 57:11: ( '~' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVNEG_TOK
+ *
+ * Looks to match the characters the constitute the token BVNEG_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVNEG_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVNEG_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:57:11: ( '~' )
+    // ../../../../../../src/parser/cvc/Cvc.g:57:13: '~'
+    {
+        MATCHC('~');
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVNEG_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVNEG_TOKEx; /* Prevent compiler warnings */
+    ruleBVNEG_TOKEx: ;
+
+}
+// $ANTLR end BVNEG_TOK
+
+//   Comes from: 58:11: ( 'BVNOR' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVNOR_TOK
+ *
+ * Looks to match the characters the constitute the token BVNOR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVNOR_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVNOR_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:58:11: ( 'BVNOR' )
+    // ../../../../../../src/parser/cvc/Cvc.g:58:13: 'BVNOR'
+    {
+        MATCHS(lit_21);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVNOR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVNOR_TOKEx; /* Prevent compiler warnings */
+    ruleBVNOR_TOKEx: ;
+
+}
+// $ANTLR end BVNOR_TOK
+
+//   Comes from: 59:12: ( 'BVPLUS' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVPLUS_TOK
+ *
+ * Looks to match the characters the constitute the token BVPLUS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVPLUS_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVPLUS_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:59:12: ( 'BVPLUS' )
+    // ../../../../../../src/parser/cvc/Cvc.g:59:14: 'BVPLUS'
+    {
+        MATCHS(lit_22);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVPLUS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVPLUS_TOKEx; /* Prevent compiler warnings */
+    ruleBVPLUS_TOKEx: ;
+
+}
+// $ANTLR end BVPLUS_TOK
+
+//   Comes from: 60:14: ( 'BVREPEAT' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVREPEAT_TOK
+ *
+ * Looks to match the characters the constitute the token BVREPEAT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVREPEAT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVREPEAT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:60:14: ( 'BVREPEAT' )
+    // ../../../../../../src/parser/cvc/Cvc.g:60:16: 'BVREPEAT'
+    {
+        MATCHS(lit_23);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVREPEAT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVREPEAT_TOKEx; /* Prevent compiler warnings */
+    ruleBVREPEAT_TOKEx: ;
+
+}
+// $ANTLR end BVREPEAT_TOK
+
+//   Comes from: 61:12: ( 'BVROTL' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVROTL_TOK
+ *
+ * Looks to match the characters the constitute the token BVROTL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVROTL_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVROTL_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:61:12: ( 'BVROTL' )
+    // ../../../../../../src/parser/cvc/Cvc.g:61:14: 'BVROTL'
+    {
+        MATCHS(lit_24);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVROTL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVROTL_TOKEx; /* Prevent compiler warnings */
+    ruleBVROTL_TOKEx: ;
+
+}
+// $ANTLR end BVROTL_TOK
+
+//   Comes from: 62:12: ( 'BVROTR' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVROTR_TOK
+ *
+ * Looks to match the characters the constitute the token BVROTR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVROTR_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVROTR_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:62:12: ( 'BVROTR' )
+    // ../../../../../../src/parser/cvc/Cvc.g:62:14: 'BVROTR'
+    {
+        MATCHS(lit_25);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVROTR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVROTR_TOKEx; /* Prevent compiler warnings */
+    ruleBVROTR_TOKEx: ;
+
+}
+// $ANTLR end BVROTR_TOK
+
+//   Comes from: 63:12: ( 'BVSDIV' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVSDIV_TOK
+ *
+ * Looks to match the characters the constitute the token BVSDIV_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVSDIV_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVSDIV_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:63:12: ( 'BVSDIV' )
+    // ../../../../../../src/parser/cvc/Cvc.g:63:14: 'BVSDIV'
+    {
+        MATCHS(lit_26);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVSDIV_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVSDIV_TOKEx; /* Prevent compiler warnings */
+    ruleBVSDIV_TOKEx: ;
+
+}
+// $ANTLR end BVSDIV_TOK
+
+//   Comes from: 64:11: ( 'BVSGE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVSGE_TOK
+ *
+ * Looks to match the characters the constitute the token BVSGE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVSGE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVSGE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:64:11: ( 'BVSGE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:64:13: 'BVSGE'
+    {
+        MATCHS(lit_27);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVSGE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVSGE_TOKEx; /* Prevent compiler warnings */
+    ruleBVSGE_TOKEx: ;
+
+}
+// $ANTLR end BVSGE_TOK
+
+//   Comes from: 65:11: ( 'BVSGT' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVSGT_TOK
+ *
+ * Looks to match the characters the constitute the token BVSGT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVSGT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVSGT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:65:11: ( 'BVSGT' )
+    // ../../../../../../src/parser/cvc/Cvc.g:65:13: 'BVSGT'
+    {
+        MATCHS(lit_28);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVSGT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVSGT_TOKEx; /* Prevent compiler warnings */
+    ruleBVSGT_TOKEx: ;
+
+}
+// $ANTLR end BVSGT_TOK
+
+//   Comes from: 66:11: ( 'BVSHL' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVSHL_TOK
+ *
+ * Looks to match the characters the constitute the token BVSHL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVSHL_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVSHL_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:66:11: ( 'BVSHL' )
+    // ../../../../../../src/parser/cvc/Cvc.g:66:13: 'BVSHL'
+    {
+        MATCHS(lit_29);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVSHL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVSHL_TOKEx; /* Prevent compiler warnings */
+    ruleBVSHL_TOKEx: ;
+
+}
+// $ANTLR end BVSHL_TOK
+
+//   Comes from: 67:11: ( 'BVSLE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVSLE_TOK
+ *
+ * Looks to match the characters the constitute the token BVSLE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVSLE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVSLE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:67:11: ( 'BVSLE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:67:13: 'BVSLE'
+    {
+        MATCHS(lit_30);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVSLE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVSLE_TOKEx; /* Prevent compiler warnings */
+    ruleBVSLE_TOKEx: ;
+
+}
+// $ANTLR end BVSLE_TOK
+
+//   Comes from: 68:11: ( 'BVSLT' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVSLT_TOK
+ *
+ * Looks to match the characters the constitute the token BVSLT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVSLT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVSLT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:68:11: ( 'BVSLT' )
+    // ../../../../../../src/parser/cvc/Cvc.g:68:13: 'BVSLT'
+    {
+        MATCHS(lit_31);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVSLT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVSLT_TOKEx; /* Prevent compiler warnings */
+    ruleBVSLT_TOKEx: ;
+
+}
+// $ANTLR end BVSLT_TOK
+
+//   Comes from: 69:12: ( 'BVSMOD' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVSMOD_TOK
+ *
+ * Looks to match the characters the constitute the token BVSMOD_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVSMOD_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVSMOD_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:69:12: ( 'BVSMOD' )
+    // ../../../../../../src/parser/cvc/Cvc.g:69:14: 'BVSMOD'
+    {
+        MATCHS(lit_32);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVSMOD_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVSMOD_TOKEx; /* Prevent compiler warnings */
+    ruleBVSMOD_TOKEx: ;
+
+}
+// $ANTLR end BVSMOD_TOK
+
+//   Comes from: 70:12: ( 'BVSREM' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVSREM_TOK
+ *
+ * Looks to match the characters the constitute the token BVSREM_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVSREM_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVSREM_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:70:12: ( 'BVSREM' )
+    // ../../../../../../src/parser/cvc/Cvc.g:70:14: 'BVSREM'
+    {
+        MATCHS(lit_33);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVSREM_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVSREM_TOKEx; /* Prevent compiler warnings */
+    ruleBVSREM_TOKEx: ;
+
+}
+// $ANTLR end BVSREM_TOK
+
+//   Comes from: 71:11: ( 'BVSUB' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVSUB_TOK
+ *
+ * Looks to match the characters the constitute the token BVSUB_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVSUB_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVSUB_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:71:11: ( 'BVSUB' )
+    // ../../../../../../src/parser/cvc/Cvc.g:71:13: 'BVSUB'
+    {
+        MATCHS(lit_34);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVSUB_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVSUB_TOKEx; /* Prevent compiler warnings */
+    ruleBVSUB_TOKEx: ;
+
+}
+// $ANTLR end BVSUB_TOK
+
+//   Comes from: 72:12: ( 'BVUDIV' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVUDIV_TOK
+ *
+ * Looks to match the characters the constitute the token BVUDIV_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVUDIV_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVUDIV_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:72:12: ( 'BVUDIV' )
+    // ../../../../../../src/parser/cvc/Cvc.g:72:14: 'BVUDIV'
+    {
+        MATCHS(lit_35);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVUDIV_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVUDIV_TOKEx; /* Prevent compiler warnings */
+    ruleBVUDIV_TOKEx: ;
+
+}
+// $ANTLR end BVUDIV_TOK
+
+//   Comes from: 73:14: ( 'BVUMINUS' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVUMINUS_TOK
+ *
+ * Looks to match the characters the constitute the token BVUMINUS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVUMINUS_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVUMINUS_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:73:14: ( 'BVUMINUS' )
+    // ../../../../../../src/parser/cvc/Cvc.g:73:16: 'BVUMINUS'
+    {
+        MATCHS(lit_36);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVUMINUS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVUMINUS_TOKEx; /* Prevent compiler warnings */
+    ruleBVUMINUS_TOKEx: ;
+
+}
+// $ANTLR end BVUMINUS_TOK
+
+//   Comes from: 74:12: ( 'BVUREM' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVUREM_TOK
+ *
+ * Looks to match the characters the constitute the token BVUREM_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVUREM_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVUREM_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:74:12: ( 'BVUREM' )
+    // ../../../../../../src/parser/cvc/Cvc.g:74:14: 'BVUREM'
+    {
+        MATCHS(lit_37);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVUREM_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVUREM_TOKEx; /* Prevent compiler warnings */
+    ruleBVUREM_TOKEx: ;
+
+}
+// $ANTLR end BVUREM_TOK
+
+//   Comes from: 75:12: ( 'BVXNOR' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVXNOR_TOK
+ *
+ * Looks to match the characters the constitute the token BVXNOR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVXNOR_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVXNOR_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:75:12: ( 'BVXNOR' )
+    // ../../../../../../src/parser/cvc/Cvc.g:75:14: 'BVXNOR'
+    {
+        MATCHS(lit_38);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVXNOR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVXNOR_TOKEx; /* Prevent compiler warnings */
+    ruleBVXNOR_TOKEx: ;
+
+}
+// $ANTLR end BVXNOR_TOK
+
+//   Comes from: 76:11: ( 'BVXOR' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVXOR_TOK
+ *
+ * Looks to match the characters the constitute the token BVXOR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVXOR_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVXOR_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:76:11: ( 'BVXOR' )
+    // ../../../../../../src/parser/cvc/Cvc.g:76:13: 'BVXOR'
+    {
+        MATCHS(lit_39);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVXOR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVXOR_TOKEx; /* Prevent compiler warnings */
+    ruleBVXOR_TOKEx: ;
+
+}
+// $ANTLR end BVXOR_TOK
+
+//   Comes from: 77:18: ( 'BVZEROEXTEND' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVZEROEXTEND_TOK
+ *
+ * Looks to match the characters the constitute the token BVZEROEXTEND_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVZEROEXTEND_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVZEROEXTEND_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:77:18: ( 'BVZEROEXTEND' )
+    // ../../../../../../src/parser/cvc/Cvc.g:77:20: 'BVZEROEXTEND'
+    {
+        MATCHS(lit_40);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVZEROEXTEND_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVZEROEXTEND_TOKEx; /* Prevent compiler warnings */
+    ruleBVZEROEXTEND_TOKEx: ;
+
+}
+// $ANTLR end BVZEROEXTEND_TOK
+
+//   Comes from: 78:10: ( 'CALL' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start CALL_TOK
+ *
+ * Looks to match the characters the constitute the token CALL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCALL_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = CALL_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:78:10: ( 'CALL' )
+    // ../../../../../../src/parser/cvc/Cvc.g:78:12: 'CALL'
+    {
+        MATCHS(lit_41);
+        if  (HASEXCEPTION())
+        {
+            goto ruleCALL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCALL_TOKEx; /* Prevent compiler warnings */
+    ruleCALL_TOKEx: ;
+
+}
+// $ANTLR end CALL_TOK
+
+//   Comes from: 79:14: ( 'CHECKSAT' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start CHECKSAT_TOK
+ *
+ * Looks to match the characters the constitute the token CHECKSAT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCHECKSAT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = CHECKSAT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:79:14: ( 'CHECKSAT' )
+    // ../../../../../../src/parser/cvc/Cvc.g:79:16: 'CHECKSAT'
+    {
+        MATCHS(lit_42);
+        if  (HASEXCEPTION())
+        {
+            goto ruleCHECKSAT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCHECKSAT_TOKEx; /* Prevent compiler warnings */
+    ruleCHECKSAT_TOKEx: ;
+
+}
+// $ANTLR end CHECKSAT_TOK
+
+//   Comes from: 80:16: ( 'CHECK_TYPE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start CHECK_TYPE_TOK
+ *
+ * Looks to match the characters the constitute the token CHECK_TYPE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCHECK_TYPE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = CHECK_TYPE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:80:16: ( 'CHECK_TYPE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:80:18: 'CHECK_TYPE'
+    {
+        MATCHS(lit_43);
+        if  (HASEXCEPTION())
+        {
+            goto ruleCHECK_TYPE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCHECK_TYPE_TOKEx; /* Prevent compiler warnings */
+    ruleCHECK_TYPE_TOKEx: ;
+
+}
+// $ANTLR end CHECK_TYPE_TOK
+
+//   Comes from: 81:7: ( ':' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start COLON
+ *
+ * Looks to match the characters the constitute the token COLON
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCOLON(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = COLON;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:81:7: ( ':' )
+    // ../../../../../../src/parser/cvc/Cvc.g:81:9: ':'
+    {
+        MATCHC(':');
+        if  (HASEXCEPTION())
+        {
+            goto ruleCOLONEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCOLONEx; /* Prevent compiler warnings */
+    ruleCOLONEx: ;
+
+}
+// $ANTLR end COLON
+
+//   Comes from: 82:7: ( ',' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start COMMA
+ *
+ * Looks to match the characters the constitute the token COMMA
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCOMMA(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = COMMA;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:82:7: ( ',' )
+    // ../../../../../../src/parser/cvc/Cvc.g:82:9: ','
+    {
+        MATCHC(',');
+        if  (HASEXCEPTION())
+        {
+            goto ruleCOMMAEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCOMMAEx; /* Prevent compiler warnings */
+    ruleCOMMAEx: ;
+
+}
+// $ANTLR end COMMA
+
+//   Comes from: 83:12: ( '@' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start CONCAT_TOK
+ *
+ * Looks to match the characters the constitute the token CONCAT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCONCAT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = CONCAT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:83:12: ( '@' )
+    // ../../../../../../src/parser/cvc/Cvc.g:83:14: '@'
+    {
+        MATCHC('@');
+        if  (HASEXCEPTION())
+        {
+            goto ruleCONCAT_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCONCAT_TOKEx; /* Prevent compiler warnings */
+    ruleCONCAT_TOKEx: ;
+
+}
+// $ANTLR end CONCAT_TOK
+
+//   Comes from: 84:13: ( 'CONTEXT' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start CONTEXT_TOK
+ *
+ * Looks to match the characters the constitute the token CONTEXT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCONTEXT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = CONTEXT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:84:13: ( 'CONTEXT' )
+    // ../../../../../../src/parser/cvc/Cvc.g:84:15: 'CONTEXT'
+    {
+        MATCHS(lit_44);
+        if  (HASEXCEPTION())
+        {
+            goto ruleCONTEXT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCONTEXT_TOKEx; /* Prevent compiler warnings */
+    ruleCONTEXT_TOKEx: ;
+
+}
+// $ANTLR end CONTEXT_TOK
+
+//   Comes from: 85:14: ( 'CONTINUE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start CONTINUE_TOK
+ *
+ * Looks to match the characters the constitute the token CONTINUE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCONTINUE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = CONTINUE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:85:14: ( 'CONTINUE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:85:16: 'CONTINUE'
+    {
+        MATCHS(lit_45);
+        if  (HASEXCEPTION())
+        {
+            goto ruleCONTINUE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCONTINUE_TOKEx; /* Prevent compiler warnings */
+    ruleCONTINUE_TOKEx: ;
+
+}
+// $ANTLR end CONTINUE_TOK
+
+//   Comes from: 86:20: ( 'COUNTEREXAMPLE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start COUNTEREXAMPLE_TOK
+ *
+ * Looks to match the characters the constitute the token COUNTEREXAMPLE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCOUNTEREXAMPLE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = COUNTEREXAMPLE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:86:20: ( 'COUNTEREXAMPLE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:86:22: 'COUNTEREXAMPLE'
+    {
+        MATCHS(lit_46);
+        if  (HASEXCEPTION())
+        {
+            goto ruleCOUNTEREXAMPLE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCOUNTEREXAMPLE_TOKEx; /* Prevent compiler warnings */
+    ruleCOUNTEREXAMPLE_TOKEx: ;
+
+}
+// $ANTLR end COUNTEREXAMPLE_TOK
+
+//   Comes from: 87:18: ( 'COUNTERMODEL' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start COUNTERMODEL_TOK
+ *
+ * Looks to match the characters the constitute the token COUNTERMODEL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCOUNTERMODEL_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = COUNTERMODEL_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:87:18: ( 'COUNTERMODEL' )
+    // ../../../../../../src/parser/cvc/Cvc.g:87:20: 'COUNTERMODEL'
+    {
+        MATCHS(lit_47);
+        if  (HASEXCEPTION())
+        {
+            goto ruleCOUNTERMODEL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCOUNTERMODEL_TOKEx; /* Prevent compiler warnings */
+    ruleCOUNTERMODEL_TOKEx: ;
+
+}
+// $ANTLR end COUNTERMODEL_TOK
+
+//   Comes from: 88:14: ( 'DATATYPE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DATATYPE_TOK
+ *
+ * Looks to match the characters the constitute the token DATATYPE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDATATYPE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DATATYPE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:88:14: ( 'DATATYPE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:88:16: 'DATATYPE'
+    {
+        MATCHS(lit_48);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDATATYPE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDATATYPE_TOKEx; /* Prevent compiler warnings */
+    ruleDATATYPE_TOKEx: ;
+
+}
+// $ANTLR end DATATYPE_TOK
+
+//   Comes from: 89:9: ( 'DBG' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DBG_TOK
+ *
+ * Looks to match the characters the constitute the token DBG_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDBG_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DBG_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:89:9: ( 'DBG' )
+    // ../../../../../../src/parser/cvc/Cvc.g:89:11: 'DBG'
+    {
+        MATCHS(lit_49);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDBG_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDBG_TOKEx; /* Prevent compiler warnings */
+    ruleDBG_TOKEx: ;
+
+}
+// $ANTLR end DBG_TOK
+
+//   Comes from: 90:14: ( '/=' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DISEQUAL_TOK
+ *
+ * Looks to match the characters the constitute the token DISEQUAL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDISEQUAL_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DISEQUAL_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:90:14: ( '/=' )
+    // ../../../../../../src/parser/cvc/Cvc.g:90:16: '/='
+    {
+        MATCHS(lit_50);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDISEQUAL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDISEQUAL_TOKEx; /* Prevent compiler warnings */
+    ruleDISEQUAL_TOKEx: ;
+
+}
+// $ANTLR end DISEQUAL_TOK
+
+//   Comes from: 91:14: ( 'DISTINCT' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DISTINCT_TOK
+ *
+ * Looks to match the characters the constitute the token DISTINCT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDISTINCT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DISTINCT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:91:14: ( 'DISTINCT' )
+    // ../../../../../../src/parser/cvc/Cvc.g:91:16: 'DISTINCT'
+    {
+        MATCHS(lit_51);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDISTINCT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDISTINCT_TOKEx; /* Prevent compiler warnings */
+    ruleDISTINCT_TOKEx: ;
+
+}
+// $ANTLR end DISTINCT_TOK
+
+//   Comes from: 92:15: ( 'DIVISIBLE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DIVISIBLE_TOK
+ *
+ * Looks to match the characters the constitute the token DIVISIBLE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDIVISIBLE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DIVISIBLE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:92:15: ( 'DIVISIBLE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:92:17: 'DIVISIBLE'
+    {
+        MATCHS(lit_52);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDIVISIBLE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDIVISIBLE_TOKEx; /* Prevent compiler warnings */
+    ruleDIVISIBLE_TOKEx: ;
+
+}
+// $ANTLR end DIVISIBLE_TOK
+
+//   Comes from: 93:9: ( '/' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DIV_TOK
+ *
+ * Looks to match the characters the constitute the token DIV_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDIV_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DIV_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:93:9: ( '/' )
+    // ../../../../../../src/parser/cvc/Cvc.g:93:11: '/'
+    {
+        MATCHC('/');
+        if  (HASEXCEPTION())
+        {
+            goto ruleDIV_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDIV_TOKEx; /* Prevent compiler warnings */
+    ruleDIV_TOKEx: ;
+
+}
+// $ANTLR end DIV_TOK
+
+//   Comes from: 94:22: ( 'DUMP_ASSUMPTIONS' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DUMP_ASSUMPTIONS_TOK
+ *
+ * Looks to match the characters the constitute the token DUMP_ASSUMPTIONS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDUMP_ASSUMPTIONS_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DUMP_ASSUMPTIONS_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:94:22: ( 'DUMP_ASSUMPTIONS' )
+    // ../../../../../../src/parser/cvc/Cvc.g:94:24: 'DUMP_ASSUMPTIONS'
+    {
+        MATCHS(lit_53);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDUMP_ASSUMPTIONS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDUMP_ASSUMPTIONS_TOKEx; /* Prevent compiler warnings */
+    ruleDUMP_ASSUMPTIONS_TOKEx: ;
+
+}
+// $ANTLR end DUMP_ASSUMPTIONS_TOK
+
+//   Comes from: 95:24: ( 'DUMP_CLOSURE_PROOF' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DUMP_CLOSURE_PROOF_TOK
+ *
+ * Looks to match the characters the constitute the token DUMP_CLOSURE_PROOF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDUMP_CLOSURE_PROOF_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DUMP_CLOSURE_PROOF_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:95:24: ( 'DUMP_CLOSURE_PROOF' )
+    // ../../../../../../src/parser/cvc/Cvc.g:95:26: 'DUMP_CLOSURE_PROOF'
+    {
+        MATCHS(lit_54);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDUMP_CLOSURE_PROOF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDUMP_CLOSURE_PROOF_TOKEx; /* Prevent compiler warnings */
+    ruleDUMP_CLOSURE_PROOF_TOKEx: ;
+
+}
+// $ANTLR end DUMP_CLOSURE_PROOF_TOK
+
+//   Comes from: 96:18: ( 'DUMP_CLOSURE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DUMP_CLOSURE_TOK
+ *
+ * Looks to match the characters the constitute the token DUMP_CLOSURE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDUMP_CLOSURE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DUMP_CLOSURE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:96:18: ( 'DUMP_CLOSURE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:96:20: 'DUMP_CLOSURE'
+    {
+        MATCHS(lit_55);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDUMP_CLOSURE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDUMP_CLOSURE_TOKEx; /* Prevent compiler warnings */
+    ruleDUMP_CLOSURE_TOKEx: ;
+
+}
+// $ANTLR end DUMP_CLOSURE_TOK
+
+//   Comes from: 97:16: ( 'DUMP_PROOF' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DUMP_PROOF_TOK
+ *
+ * Looks to match the characters the constitute the token DUMP_PROOF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDUMP_PROOF_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DUMP_PROOF_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:97:16: ( 'DUMP_PROOF' )
+    // ../../../../../../src/parser/cvc/Cvc.g:97:18: 'DUMP_PROOF'
+    {
+        MATCHS(lit_56);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDUMP_PROOF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDUMP_PROOF_TOKEx; /* Prevent compiler warnings */
+    ruleDUMP_PROOF_TOKEx: ;
+
+}
+// $ANTLR end DUMP_PROOF_TOK
+
+//   Comes from: 98:14: ( 'DUMP_SIG' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DUMP_SIG_TOK
+ *
+ * Looks to match the characters the constitute the token DUMP_SIG_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDUMP_SIG_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DUMP_SIG_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:98:14: ( 'DUMP_SIG' )
+    // ../../../../../../src/parser/cvc/Cvc.g:98:16: 'DUMP_SIG'
+    {
+        MATCHS(lit_57);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDUMP_SIG_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDUMP_SIG_TOKEx; /* Prevent compiler warnings */
+    ruleDUMP_SIG_TOKEx: ;
+
+}
+// $ANTLR end DUMP_SIG_TOK
+
+//   Comes from: 99:26: ( 'DUMP_TCC_ASSUMPTIONS' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DUMP_TCC_ASSUMPTIONS_TOK
+ *
+ * Looks to match the characters the constitute the token DUMP_TCC_ASSUMPTIONS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDUMP_TCC_ASSUMPTIONS_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DUMP_TCC_ASSUMPTIONS_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:99:26: ( 'DUMP_TCC_ASSUMPTIONS' )
+    // ../../../../../../src/parser/cvc/Cvc.g:99:28: 'DUMP_TCC_ASSUMPTIONS'
+    {
+        MATCHS(lit_58);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDUMP_TCC_ASSUMPTIONS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDUMP_TCC_ASSUMPTIONS_TOKEx; /* Prevent compiler warnings */
+    ruleDUMP_TCC_ASSUMPTIONS_TOKEx: ;
+
+}
+// $ANTLR end DUMP_TCC_ASSUMPTIONS_TOK
+
+//   Comes from: 100:20: ( 'DUMP_TCC_PROOF' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DUMP_TCC_PROOF_TOK
+ *
+ * Looks to match the characters the constitute the token DUMP_TCC_PROOF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDUMP_TCC_PROOF_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DUMP_TCC_PROOF_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:100:20: ( 'DUMP_TCC_PROOF' )
+    // ../../../../../../src/parser/cvc/Cvc.g:100:22: 'DUMP_TCC_PROOF'
+    {
+        MATCHS(lit_59);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDUMP_TCC_PROOF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDUMP_TCC_PROOF_TOKEx; /* Prevent compiler warnings */
+    ruleDUMP_TCC_PROOF_TOKEx: ;
+
+}
+// $ANTLR end DUMP_TCC_PROOF_TOK
+
+//   Comes from: 101:14: ( 'DUMP_TCC' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DUMP_TCC_TOK
+ *
+ * Looks to match the characters the constitute the token DUMP_TCC_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDUMP_TCC_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DUMP_TCC_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:101:14: ( 'DUMP_TCC' )
+    // ../../../../../../src/parser/cvc/Cvc.g:101:16: 'DUMP_TCC'
+    {
+        MATCHS(lit_60);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDUMP_TCC_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDUMP_TCC_TOKEx; /* Prevent compiler warnings */
+    ruleDUMP_TCC_TOKEx: ;
+
+}
+// $ANTLR end DUMP_TCC_TOK
+
+//   Comes from: 102:21: ( 'DUMP_UNSAT_CORE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DUMP_UNSAT_CORE_TOK
+ *
+ * Looks to match the characters the constitute the token DUMP_UNSAT_CORE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDUMP_UNSAT_CORE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DUMP_UNSAT_CORE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:102:21: ( 'DUMP_UNSAT_CORE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:102:23: 'DUMP_UNSAT_CORE'
+    {
+        MATCHS(lit_61);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDUMP_UNSAT_CORE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDUMP_UNSAT_CORE_TOKEx; /* Prevent compiler warnings */
+    ruleDUMP_UNSAT_CORE_TOKEx: ;
+
+}
+// $ANTLR end DUMP_UNSAT_CORE_TOK
+
+//   Comes from: 103:10: ( 'ECHO' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ECHO_TOK
+ *
+ * Looks to match the characters the constitute the token ECHO_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mECHO_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ECHO_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:103:10: ( 'ECHO' )
+    // ../../../../../../src/parser/cvc/Cvc.g:103:12: 'ECHO'
+    {
+        MATCHS(lit_62);
+        if  (HASEXCEPTION())
+        {
+            goto ruleECHO_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleECHO_TOKEx; /* Prevent compiler warnings */
+    ruleECHO_TOKEx: ;
+
+}
+// $ANTLR end ECHO_TOK
+
+//   Comes from: 104:12: ( 'ELSIF' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ELSEIF_TOK
+ *
+ * Looks to match the characters the constitute the token ELSEIF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mELSEIF_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ELSEIF_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:104:12: ( 'ELSIF' )
+    // ../../../../../../src/parser/cvc/Cvc.g:104:14: 'ELSIF'
+    {
+        MATCHS(lit_63);
+        if  (HASEXCEPTION())
+        {
+            goto ruleELSEIF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleELSEIF_TOKEx; /* Prevent compiler warnings */
+    ruleELSEIF_TOKEx: ;
+
+}
+// $ANTLR end ELSEIF_TOK
+
+//   Comes from: 105:10: ( 'ELSE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ELSE_TOK
+ *
+ * Looks to match the characters the constitute the token ELSE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mELSE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ELSE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:105:10: ( 'ELSE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:105:12: 'ELSE'
+    {
+        MATCHS(lit_64);
+        if  (HASEXCEPTION())
+        {
+            goto ruleELSE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleELSE_TOKEx; /* Prevent compiler warnings */
+    ruleELSE_TOKEx: ;
+
+}
+// $ANTLR end ELSE_TOK
+
+//   Comes from: 106:11: ( 'ENDIF' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ENDIF_TOK
+ *
+ * Looks to match the characters the constitute the token ENDIF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mENDIF_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ENDIF_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:106:11: ( 'ENDIF' )
+    // ../../../../../../src/parser/cvc/Cvc.g:106:13: 'ENDIF'
+    {
+        MATCHS(lit_65);
+        if  (HASEXCEPTION())
+        {
+            goto ruleENDIF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleENDIF_TOKEx; /* Prevent compiler warnings */
+    ruleENDIF_TOKEx: ;
+
+}
+// $ANTLR end ENDIF_TOK
+
+//   Comes from: 107:9: ( 'END' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start END_TOK
+ *
+ * Looks to match the characters the constitute the token END_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mEND_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = END_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:107:9: ( 'END' )
+    // ../../../../../../src/parser/cvc/Cvc.g:107:11: 'END'
+    {
+        MATCHS(lit_66);
+        if  (HASEXCEPTION())
+        {
+            goto ruleEND_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleEND_TOKEx; /* Prevent compiler warnings */
+    ruleEND_TOKEx: ;
+
+}
+// $ANTLR end END_TOK
+
+//   Comes from: 108:11: ( '=' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start EQUAL_TOK
+ *
+ * Looks to match the characters the constitute the token EQUAL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mEQUAL_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = EQUAL_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:108:11: ( '=' )
+    // ../../../../../../src/parser/cvc/Cvc.g:108:13: '='
+    {
+        MATCHC('=');
+        if  (HASEXCEPTION())
+        {
+            goto ruleEQUAL_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleEQUAL_TOKEx; /* Prevent compiler warnings */
+    ruleEQUAL_TOKEx: ;
+
+}
+// $ANTLR end EQUAL_TOK
+
+//   Comes from: 109:12: ( 'EXISTS' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start EXISTS_TOK
+ *
+ * Looks to match the characters the constitute the token EXISTS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mEXISTS_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = EXISTS_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:109:12: ( 'EXISTS' )
+    // ../../../../../../src/parser/cvc/Cvc.g:109:14: 'EXISTS'
+    {
+        MATCHS(lit_67);
+        if  (HASEXCEPTION())
+        {
+            goto ruleEXISTS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleEXISTS_TOKEx; /* Prevent compiler warnings */
+    ruleEXISTS_TOKEx: ;
+
+}
+// $ANTLR end EXISTS_TOK
+
+//   Comes from: 110:10: ( 'EXIT' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start EXIT_TOK
+ *
+ * Looks to match the characters the constitute the token EXIT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mEXIT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = EXIT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:110:10: ( 'EXIT' )
+    // ../../../../../../src/parser/cvc/Cvc.g:110:12: 'EXIT'
+    {
+        MATCHS(lit_68);
+        if  (HASEXCEPTION())
+        {
+            goto ruleEXIT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleEXIT_TOKEx; /* Prevent compiler warnings */
+    ruleEXIT_TOKEx: ;
+
+}
+// $ANTLR end EXIT_TOK
+
+//   Comes from: 111:9: ( '^' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start EXP_TOK
+ *
+ * Looks to match the characters the constitute the token EXP_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mEXP_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = EXP_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:111:9: ( '^' )
+    // ../../../../../../src/parser/cvc/Cvc.g:111:11: '^'
+    {
+        MATCHC('^');
+        if  (HASEXCEPTION())
+        {
+            goto ruleEXP_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleEXP_TOKEx; /* Prevent compiler warnings */
+    ruleEXP_TOKEx: ;
+
+}
+// $ANTLR end EXP_TOK
+
+//   Comes from: 112:11: ( 'FALSE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FALSE_TOK
+ *
+ * Looks to match the characters the constitute the token FALSE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFALSE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FALSE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:112:11: ( 'FALSE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:112:13: 'FALSE'
+    {
+        MATCHS(lit_69);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFALSE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFALSE_TOKEx; /* Prevent compiler warnings */
+    ruleFALSE_TOKEx: ;
+
+}
+// $ANTLR end FALSE_TOK
+
+//   Comes from: 113:11: ( 'FLOOR' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FLOOR_TOK
+ *
+ * Looks to match the characters the constitute the token FLOOR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFLOOR_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FLOOR_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:113:11: ( 'FLOOR' )
+    // ../../../../../../src/parser/cvc/Cvc.g:113:13: 'FLOOR'
+    {
+        MATCHS(lit_70);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFLOOR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFLOOR_TOKEx; /* Prevent compiler warnings */
+    ruleFLOOR_TOKEx: ;
+
+}
+// $ANTLR end FLOOR_TOK
+
+//   Comes from: 114:14: ( 'HAS_CARD' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FMF_CARD_TOK
+ *
+ * Looks to match the characters the constitute the token FMF_CARD_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFMF_CARD_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FMF_CARD_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:114:14: ( 'HAS_CARD' )
+    // ../../../../../../src/parser/cvc/Cvc.g:114:16: 'HAS_CARD'
+    {
+        MATCHS(lit_71);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFMF_CARD_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFMF_CARD_TOKEx; /* Prevent compiler warnings */
+    ruleFMF_CARD_TOKEx: ;
+
+}
+// $ANTLR end FMF_CARD_TOK
+
+//   Comes from: 115:12: ( 'FORALL' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FORALL_TOK
+ *
+ * Looks to match the characters the constitute the token FORALL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFORALL_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FORALL_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:115:12: ( 'FORALL' )
+    // ../../../../../../src/parser/cvc/Cvc.g:115:14: 'FORALL'
+    {
+        MATCHS(lit_72);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFORALL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFORALL_TOKEx; /* Prevent compiler warnings */
+    ruleFORALL_TOKEx: ;
+
+}
+// $ANTLR end FORALL_TOK
+
+//   Comes from: 116:12: ( 'FORGET' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FORGET_TOK
+ *
+ * Looks to match the characters the constitute the token FORGET_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFORGET_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FORGET_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:116:12: ( 'FORGET' )
+    // ../../../../../../src/parser/cvc/Cvc.g:116:14: 'FORGET'
+    {
+        MATCHS(lit_73);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFORGET_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFORGET_TOKEx; /* Prevent compiler warnings */
+    ruleFORGET_TOKEx: ;
+
+}
+// $ANTLR end FORGET_TOK
+
+//   Comes from: 117:9: ( '>=' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start GEQ_TOK
+ *
+ * Looks to match the characters the constitute the token GEQ_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mGEQ_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = GEQ_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:117:9: ( '>=' )
+    // ../../../../../../src/parser/cvc/Cvc.g:117:11: '>='
+    {
+        MATCHS(lit_74);
+        if  (HASEXCEPTION())
+        {
+            goto ruleGEQ_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleGEQ_TOKEx; /* Prevent compiler warnings */
+    ruleGEQ_TOKEx: ;
+
+}
+// $ANTLR end GEQ_TOK
+
+//   Comes from: 118:15: ( 'GET_CHILD' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start GET_CHILD_TOK
+ *
+ * Looks to match the characters the constitute the token GET_CHILD_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mGET_CHILD_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = GET_CHILD_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:118:15: ( 'GET_CHILD' )
+    // ../../../../../../src/parser/cvc/Cvc.g:118:17: 'GET_CHILD'
+    {
+        MATCHS(lit_75);
+        if  (HASEXCEPTION())
+        {
+            goto ruleGET_CHILD_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleGET_CHILD_TOKEx; /* Prevent compiler warnings */
+    ruleGET_CHILD_TOKEx: ;
+
+}
+// $ANTLR end GET_CHILD_TOK
+
+//   Comes from: 119:12: ( 'GET_OP' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start GET_OP_TOK
+ *
+ * Looks to match the characters the constitute the token GET_OP_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mGET_OP_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = GET_OP_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:119:12: ( 'GET_OP' )
+    // ../../../../../../src/parser/cvc/Cvc.g:119:14: 'GET_OP'
+    {
+        MATCHS(lit_76);
+        if  (HASEXCEPTION())
+        {
+            goto ruleGET_OP_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleGET_OP_TOKEx; /* Prevent compiler warnings */
+    ruleGET_OP_TOKEx: ;
+
+}
+// $ANTLR end GET_OP_TOK
+
+//   Comes from: 120:14: ( 'GET_TYPE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start GET_TYPE_TOK
+ *
+ * Looks to match the characters the constitute the token GET_TYPE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mGET_TYPE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = GET_TYPE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:120:14: ( 'GET_TYPE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:120:16: 'GET_TYPE'
+    {
+        MATCHS(lit_77);
+        if  (HASEXCEPTION())
+        {
+            goto ruleGET_TYPE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleGET_TYPE_TOKEx; /* Prevent compiler warnings */
+    ruleGET_TYPE_TOKEx: ;
+
+}
+// $ANTLR end GET_TYPE_TOK
+
+//   Comes from: 121:15: ( 'GET_VALUE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start GET_VALUE_TOK
+ *
+ * Looks to match the characters the constitute the token GET_VALUE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mGET_VALUE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = GET_VALUE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:121:15: ( 'GET_VALUE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:121:17: 'GET_VALUE'
+    {
+        MATCHS(lit_78);
+        if  (HASEXCEPTION())
+        {
+            goto ruleGET_VALUE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleGET_VALUE_TOKEx; /* Prevent compiler warnings */
+    ruleGET_VALUE_TOKEx: ;
+
+}
+// $ANTLR end GET_VALUE_TOK
+
+//   Comes from: 122:8: ( '>' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start GT_TOK
+ *
+ * Looks to match the characters the constitute the token GT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mGT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = GT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:122:8: ( '>' )
+    // ../../../../../../src/parser/cvc/Cvc.g:122:10: '>'
+    {
+        MATCHC('>');
+        if  (HASEXCEPTION())
+        {
+            goto ruleGT_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleGT_TOKEx; /* Prevent compiler warnings */
+    ruleGT_TOKEx: ;
+
+}
+// $ANTLR end GT_TOK
+
+//   Comes from: 123:11: ( '#)' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start HASHPAREN
+ *
+ * Looks to match the characters the constitute the token HASHPAREN
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mHASHPAREN(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = HASHPAREN;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:123:11: ( '#)' )
+    // ../../../../../../src/parser/cvc/Cvc.g:123:13: '#)'
+    {
+        MATCHS(lit_79);
+        if  (HASEXCEPTION())
+        {
+            goto ruleHASHPARENEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleHASHPARENEx; /* Prevent compiler warnings */
+    ruleHASHPARENEx: ;
+
+}
+// $ANTLR end HASHPAREN
+
+//   Comes from: 124:8: ( '#]' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start HASHSQ
+ *
+ * Looks to match the characters the constitute the token HASHSQ
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mHASHSQ(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = HASHSQ;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:124:8: ( '#]' )
+    // ../../../../../../src/parser/cvc/Cvc.g:124:10: '#]'
+    {
+        MATCHS(lit_80);
+        if  (HASEXCEPTION())
+        {
+            goto ruleHASHSQEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleHASHSQEx; /* Prevent compiler warnings */
+    ruleHASHSQEx: ;
+
+}
+// $ANTLR end HASHSQ
+
+//   Comes from: 125:10: ( 'HELP' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start HELP_TOK
+ *
+ * Looks to match the characters the constitute the token HELP_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mHELP_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = HELP_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:125:10: ( 'HELP' )
+    // ../../../../../../src/parser/cvc/Cvc.g:125:12: 'HELP'
+    {
+        MATCHS(lit_81);
+        if  (HASEXCEPTION())
+        {
+            goto ruleHELP_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleHELP_TOKEx; /* Prevent compiler warnings */
+    ruleHELP_TOKEx: ;
+
+}
+// $ANTLR end HELP_TOK
+
+//   Comes from: 126:9: ( '<=>' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start IFF_TOK
+ *
+ * Looks to match the characters the constitute the token IFF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mIFF_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = IFF_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:126:9: ( '<=>' )
+    // ../../../../../../src/parser/cvc/Cvc.g:126:11: '<=>'
+    {
+        MATCHS(lit_82);
+        if  (HASEXCEPTION())
+        {
+            goto ruleIFF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleIFF_TOKEx; /* Prevent compiler warnings */
+    ruleIFF_TOKEx: ;
+
+}
+// $ANTLR end IFF_TOK
+
+//   Comes from: 127:8: ( 'IF' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start IF_TOK
+ *
+ * Looks to match the characters the constitute the token IF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mIF_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = IF_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:127:8: ( 'IF' )
+    // ../../../../../../src/parser/cvc/Cvc.g:127:10: 'IF'
+    {
+        MATCHS(lit_83);
+        if  (HASEXCEPTION())
+        {
+            goto ruleIF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleIF_TOKEx; /* Prevent compiler warnings */
+    ruleIF_TOKEx: ;
+
+}
+// $ANTLR end IF_TOK
+
+//   Comes from: 128:13: ( '=>' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start IMPLIES_TOK
+ *
+ * Looks to match the characters the constitute the token IMPLIES_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mIMPLIES_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = IMPLIES_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:128:13: ( '=>' )
+    // ../../../../../../src/parser/cvc/Cvc.g:128:15: '=>'
+    {
+        MATCHS(lit_84);
+        if  (HASEXCEPTION())
+        {
+            goto ruleIMPLIES_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleIMPLIES_TOKEx; /* Prevent compiler warnings */
+    ruleIMPLIES_TOKEx: ;
+
+}
+// $ANTLR end IMPLIES_TOK
+
+//   Comes from: 129:13: ( 'INCLUDE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start INCLUDE_TOK
+ *
+ * Looks to match the characters the constitute the token INCLUDE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mINCLUDE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = INCLUDE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:129:13: ( 'INCLUDE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:129:15: 'INCLUDE'
+    {
+        MATCHS(lit_85);
+        if  (HASEXCEPTION())
+        {
+            goto ruleINCLUDE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleINCLUDE_TOKEx; /* Prevent compiler warnings */
+    ruleINCLUDE_TOKEx: ;
+
+}
+// $ANTLR end INCLUDE_TOK
+
+//   Comes from: 130:12: ( 'DIV' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start INTDIV_TOK
+ *
+ * Looks to match the characters the constitute the token INTDIV_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mINTDIV_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = INTDIV_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:130:12: ( 'DIV' )
+    // ../../../../../../src/parser/cvc/Cvc.g:130:14: 'DIV'
+    {
+        MATCHS(lit_86);
+        if  (HASEXCEPTION())
+        {
+            goto ruleINTDIV_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleINTDIV_TOKEx; /* Prevent compiler warnings */
+    ruleINTDIV_TOKEx: ;
+
+}
+// $ANTLR end INTDIV_TOK
+
+//   Comes from: 131:9: ( 'INT' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start INT_TOK
+ *
+ * Looks to match the characters the constitute the token INT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mINT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = INT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:131:9: ( 'INT' )
+    // ../../../../../../src/parser/cvc/Cvc.g:131:11: 'INT'
+    {
+        MATCHS(lit_87);
+        if  (HASEXCEPTION())
+        {
+            goto ruleINT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleINT_TOKEx; /* Prevent compiler warnings */
+    ruleINT_TOKEx: ;
+
+}
+// $ANTLR end INT_TOK
+
+//   Comes from: 132:8: ( 'IN' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start IN_TOK
+ *
+ * Looks to match the characters the constitute the token IN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mIN_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = IN_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:132:8: ( 'IN' )
+    // ../../../../../../src/parser/cvc/Cvc.g:132:10: 'IN'
+    {
+        MATCHS(lit_88);
+        if  (HASEXCEPTION())
+        {
+            goto ruleIN_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleIN_TOKEx; /* Prevent compiler warnings */
+    ruleIN_TOKEx: ;
+
+}
+// $ANTLR end IN_TOK
+
+//   Comes from: 133:16: ( 'IS_INTEGER' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start IS_INTEGER_TOK
+ *
+ * Looks to match the characters the constitute the token IS_INTEGER_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mIS_INTEGER_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = IS_INTEGER_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:133:16: ( 'IS_INTEGER' )
+    // ../../../../../../src/parser/cvc/Cvc.g:133:18: 'IS_INTEGER'
+    {
+        MATCHS(lit_89);
+        if  (HASEXCEPTION())
+        {
+            goto ruleIS_INTEGER_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleIS_INTEGER_TOKEx; /* Prevent compiler warnings */
+    ruleIS_INTEGER_TOKEx: ;
+
+}
+// $ANTLR end IS_INTEGER_TOK
+
+//   Comes from: 134:10: ( 'JOIN' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start JOIN_TOK
+ *
+ * Looks to match the characters the constitute the token JOIN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mJOIN_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = JOIN_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:134:10: ( 'JOIN' )
+    // ../../../../../../src/parser/cvc/Cvc.g:134:12: 'JOIN'
+    {
+        MATCHS(lit_90);
+        if  (HASEXCEPTION())
+        {
+            goto ruleJOIN_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleJOIN_TOKEx; /* Prevent compiler warnings */
+    ruleJOIN_TOKEx: ;
+
+}
+// $ANTLR end JOIN_TOK
+
+//   Comes from: 135:8: ( 'LAMBDA' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LAMBDA
+ *
+ * Looks to match the characters the constitute the token LAMBDA
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLAMBDA(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LAMBDA;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:135:8: ( 'LAMBDA' )
+    // ../../../../../../src/parser/cvc/Cvc.g:135:10: 'LAMBDA'
+    {
+        MATCHS(lit_91);
+        if  (HASEXCEPTION())
+        {
+            goto ruleLAMBDAEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLAMBDAEx; /* Prevent compiler warnings */
+    ruleLAMBDAEx: ;
+
+}
+// $ANTLR end LAMBDA
+
+//   Comes from: 136:8: ( '{' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LBRACE
+ *
+ * Looks to match the characters the constitute the token LBRACE
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLBRACE(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LBRACE;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:136:8: ( '{' )
+    // ../../../../../../src/parser/cvc/Cvc.g:136:10: '{'
+    {
+        MATCHC('{');
+        if  (HASEXCEPTION())
+        {
+            goto ruleLBRACEEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLBRACEEx; /* Prevent compiler warnings */
+    ruleLBRACEEx: ;
+
+}
+// $ANTLR end LBRACE
+
+//   Comes from: 137:10: ( '[' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LBRACKET
+ *
+ * Looks to match the characters the constitute the token LBRACKET
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLBRACKET(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LBRACKET;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:137:10: ( '[' )
+    // ../../../../../../src/parser/cvc/Cvc.g:137:12: '['
+    {
+        MATCHC('[');
+        if  (HASEXCEPTION())
+        {
+            goto ruleLBRACKETEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLBRACKETEx; /* Prevent compiler warnings */
+    ruleLBRACKETEx: ;
+
+}
+// $ANTLR end LBRACKET
+
+//   Comes from: 138:15: ( '<<' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LEFTSHIFT_TOK
+ *
+ * Looks to match the characters the constitute the token LEFTSHIFT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLEFTSHIFT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LEFTSHIFT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:138:15: ( '<<' )
+    // ../../../../../../src/parser/cvc/Cvc.g:138:17: '<<'
+    {
+        MATCHS(lit_92);
+        if  (HASEXCEPTION())
+        {
+            goto ruleLEFTSHIFT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLEFTSHIFT_TOKEx; /* Prevent compiler warnings */
+    ruleLEFTSHIFT_TOKEx: ;
+
+}
+// $ANTLR end LEFTSHIFT_TOK
+
+//   Comes from: 139:9: ( '<=' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LEQ_TOK
+ *
+ * Looks to match the characters the constitute the token LEQ_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLEQ_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LEQ_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:139:9: ( '<=' )
+    // ../../../../../../src/parser/cvc/Cvc.g:139:11: '<='
+    {
+        MATCHS(lit_93);
+        if  (HASEXCEPTION())
+        {
+            goto ruleLEQ_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLEQ_TOKEx; /* Prevent compiler warnings */
+    ruleLEQ_TOKEx: ;
+
+}
+// $ANTLR end LEQ_TOK
+
+//   Comes from: 140:9: ( 'LET' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LET_TOK
+ *
+ * Looks to match the characters the constitute the token LET_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLET_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LET_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:140:9: ( 'LET' )
+    // ../../../../../../src/parser/cvc/Cvc.g:140:11: 'LET'
+    {
+        MATCHS(lit_94);
+        if  (HASEXCEPTION())
+        {
+            goto ruleLET_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLET_TOKEx; /* Prevent compiler warnings */
+    ruleLET_TOKEx: ;
+
+}
+// $ANTLR end LET_TOK
+
+//   Comes from: 141:8: ( '(' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LPAREN
+ *
+ * Looks to match the characters the constitute the token LPAREN
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLPAREN(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LPAREN;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:141:8: ( '(' )
+    // ../../../../../../src/parser/cvc/Cvc.g:141:10: '('
+    {
+        MATCHC('(');
+        if  (HASEXCEPTION())
+        {
+            goto ruleLPARENEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLPARENEx; /* Prevent compiler warnings */
+    ruleLPARENEx: ;
+
+}
+// $ANTLR end LPAREN
+
+//   Comes from: 142:8: ( '<' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LT_TOK
+ *
+ * Looks to match the characters the constitute the token LT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:142:8: ( '<' )
+    // ../../../../../../src/parser/cvc/Cvc.g:142:10: '<'
+    {
+        MATCHC('<');
+        if  (HASEXCEPTION())
+        {
+            goto ruleLT_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLT_TOKEx; /* Prevent compiler warnings */
+    ruleLT_TOKEx: ;
+
+}
+// $ANTLR end LT_TOK
+
+//   Comes from: 143:12: ( 'IS_IN' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start MEMBER_TOK
+ *
+ * Looks to match the characters the constitute the token MEMBER_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mMEMBER_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = MEMBER_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:143:12: ( 'IS_IN' )
+    // ../../../../../../src/parser/cvc/Cvc.g:143:14: 'IS_IN'
+    {
+        MATCHS(lit_95);
+        if  (HASEXCEPTION())
+        {
+            goto ruleMEMBER_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleMEMBER_TOKEx; /* Prevent compiler warnings */
+    ruleMEMBER_TOKEx: ;
+
+}
+// $ANTLR end MEMBER_TOK
+
+//   Comes from: 144:11: ( '-' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start MINUS_TOK
+ *
+ * Looks to match the characters the constitute the token MINUS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mMINUS_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = MINUS_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:144:11: ( '-' )
+    // ../../../../../../src/parser/cvc/Cvc.g:144:13: '-'
+    {
+        MATCHC('-');
+        if  (HASEXCEPTION())
+        {
+            goto ruleMINUS_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleMINUS_TOKEx; /* Prevent compiler warnings */
+    ruleMINUS_TOKEx: ;
+
+}
+// $ANTLR end MINUS_TOK
+
+//   Comes from: 145:9: ( 'MOD' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start MOD_TOK
+ *
+ * Looks to match the characters the constitute the token MOD_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mMOD_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = MOD_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:145:9: ( 'MOD' )
+    // ../../../../../../src/parser/cvc/Cvc.g:145:11: 'MOD'
+    {
+        MATCHS(lit_96);
+        if  (HASEXCEPTION())
+        {
+            goto ruleMOD_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleMOD_TOKEx; /* Prevent compiler warnings */
+    ruleMOD_TOKEx: ;
+
+}
+// $ANTLR end MOD_TOK
+
+//   Comes from: 146:9: ( 'NOT' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start NOT_TOK
+ *
+ * Looks to match the characters the constitute the token NOT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mNOT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = NOT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:146:9: ( 'NOT' )
+    // ../../../../../../src/parser/cvc/Cvc.g:146:11: 'NOT'
+    {
+        MATCHS(lit_97);
+        if  (HASEXCEPTION())
+        {
+            goto ruleNOT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleNOT_TOKEx; /* Prevent compiler warnings */
+    ruleNOT_TOKEx: ;
+
+}
+// $ANTLR end NOT_TOK
+
+//   Comes from: 147:8: ( 'OF' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start OF_TOK
+ *
+ * Looks to match the characters the constitute the token OF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mOF_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = OF_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:147:8: ( 'OF' )
+    // ../../../../../../src/parser/cvc/Cvc.g:147:10: 'OF'
+    {
+        MATCHS(lit_98);
+        if  (HASEXCEPTION())
+        {
+            goto ruleOF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleOF_TOKEx; /* Prevent compiler warnings */
+    ruleOF_TOKEx: ;
+
+}
+// $ANTLR end OF_TOK
+
+//   Comes from: 148:12: ( 'OPTION' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start OPTION_TOK
+ *
+ * Looks to match the characters the constitute the token OPTION_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mOPTION_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = OPTION_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:148:12: ( 'OPTION' )
+    // ../../../../../../src/parser/cvc/Cvc.g:148:14: 'OPTION'
+    {
+        MATCHS(lit_99);
+        if  (HASEXCEPTION())
+        {
+            goto ruleOPTION_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleOPTION_TOKEx; /* Prevent compiler warnings */
+    ruleOPTION_TOKEx: ;
+
+}
+// $ANTLR end OPTION_TOK
+
+//   Comes from: 149:8: ( 'OR' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start OR_TOK
+ *
+ * Looks to match the characters the constitute the token OR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mOR_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = OR_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:149:8: ( 'OR' )
+    // ../../../../../../src/parser/cvc/Cvc.g:149:10: 'OR'
+    {
+        MATCHS(lit_100);
+        if  (HASEXCEPTION())
+        {
+            goto ruleOR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleOR_TOKEx; /* Prevent compiler warnings */
+    ruleOR_TOKEx: ;
+
+}
+// $ANTLR end OR_TOK
+
+//   Comes from: 150:11: ( '(#' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start PARENHASH
+ *
+ * Looks to match the characters the constitute the token PARENHASH
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPARENHASH(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = PARENHASH;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:150:11: ( '(#' )
+    // ../../../../../../src/parser/cvc/Cvc.g:150:13: '(#'
+    {
+        MATCHS(lit_101);
+        if  (HASEXCEPTION())
+        {
+            goto rulePARENHASHEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePARENHASHEx; /* Prevent compiler warnings */
+    rulePARENHASHEx: ;
+
+}
+// $ANTLR end PARENHASH
+
+//   Comes from: 151:13: ( 'PATTERN' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start PATTERN_TOK
+ *
+ * Looks to match the characters the constitute the token PATTERN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPATTERN_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = PATTERN_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:151:13: ( 'PATTERN' )
+    // ../../../../../../src/parser/cvc/Cvc.g:151:15: 'PATTERN'
+    {
+        MATCHS(lit_102);
+        if  (HASEXCEPTION())
+        {
+            goto rulePATTERN_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePATTERN_TOKEx; /* Prevent compiler warnings */
+    rulePATTERN_TOKEx: ;
+
+}
+// $ANTLR end PATTERN_TOK
+
+//   Comes from: 152:10: ( '+' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start PLUS_TOK
+ *
+ * Looks to match the characters the constitute the token PLUS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPLUS_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = PLUS_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:152:10: ( '+' )
+    // ../../../../../../src/parser/cvc/Cvc.g:152:12: '+'
+    {
+        MATCHC('+');
+        if  (HASEXCEPTION())
+        {
+            goto rulePLUS_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePLUS_TOKEx; /* Prevent compiler warnings */
+    rulePLUS_TOKEx: ;
+
+}
+// $ANTLR end PLUS_TOK
+
+//   Comes from: 153:17: ( 'POPTO_SCOPE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start POPTO_SCOPE_TOK
+ *
+ * Looks to match the characters the constitute the token POPTO_SCOPE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPOPTO_SCOPE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = POPTO_SCOPE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:153:17: ( 'POPTO_SCOPE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:153:19: 'POPTO_SCOPE'
+    {
+        MATCHS(lit_103);
+        if  (HASEXCEPTION())
+        {
+            goto rulePOPTO_SCOPE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePOPTO_SCOPE_TOKEx; /* Prevent compiler warnings */
+    rulePOPTO_SCOPE_TOKEx: ;
+
+}
+// $ANTLR end POPTO_SCOPE_TOK
+
+//   Comes from: 154:11: ( 'POPTO' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start POPTO_TOK
+ *
+ * Looks to match the characters the constitute the token POPTO_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPOPTO_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = POPTO_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:154:11: ( 'POPTO' )
+    // ../../../../../../src/parser/cvc/Cvc.g:154:13: 'POPTO'
+    {
+        MATCHS(lit_104);
+        if  (HASEXCEPTION())
+        {
+            goto rulePOPTO_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePOPTO_TOKEx; /* Prevent compiler warnings */
+    rulePOPTO_TOKEx: ;
+
+}
+// $ANTLR end POPTO_TOK
+
+//   Comes from: 155:15: ( 'POP_SCOPE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start POP_SCOPE_TOK
+ *
+ * Looks to match the characters the constitute the token POP_SCOPE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPOP_SCOPE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = POP_SCOPE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:155:15: ( 'POP_SCOPE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:155:17: 'POP_SCOPE'
+    {
+        MATCHS(lit_105);
+        if  (HASEXCEPTION())
+        {
+            goto rulePOP_SCOPE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePOP_SCOPE_TOKEx; /* Prevent compiler warnings */
+    rulePOP_SCOPE_TOKEx: ;
+
+}
+// $ANTLR end POP_SCOPE_TOK
+
+//   Comes from: 156:9: ( 'POP' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start POP_TOK
+ *
+ * Looks to match the characters the constitute the token POP_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPOP_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = POP_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:156:9: ( 'POP' )
+    // ../../../../../../src/parser/cvc/Cvc.g:156:11: 'POP'
+    {
+        MATCHS(lit_106);
+        if  (HASEXCEPTION())
+        {
+            goto rulePOP_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePOP_TOKEx; /* Prevent compiler warnings */
+    rulePOP_TOKEx: ;
+
+}
+// $ANTLR end POP_TOK
+
+//   Comes from: 157:11: ( 'PRINT' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start PRINT_TOK
+ *
+ * Looks to match the characters the constitute the token PRINT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPRINT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = PRINT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:157:11: ( 'PRINT' )
+    // ../../../../../../src/parser/cvc/Cvc.g:157:13: 'PRINT'
+    {
+        MATCHS(lit_107);
+        if  (HASEXCEPTION())
+        {
+            goto rulePRINT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePRINT_TOKEx; /* Prevent compiler warnings */
+    rulePRINT_TOKEx: ;
+
+}
+// $ANTLR end PRINT_TOK
+
+//   Comes from: 158:16: ( 'PRINT_TYPE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start PRINT_TYPE_TOK
+ *
+ * Looks to match the characters the constitute the token PRINT_TYPE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPRINT_TYPE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = PRINT_TYPE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:158:16: ( 'PRINT_TYPE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:158:18: 'PRINT_TYPE'
+    {
+        MATCHS(lit_108);
+        if  (HASEXCEPTION())
+        {
+            goto rulePRINT_TYPE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePRINT_TYPE_TOKEx; /* Prevent compiler warnings */
+    rulePRINT_TYPE_TOKEx: ;
+
+}
+// $ANTLR end PRINT_TYPE_TOK
+
+//   Comes from: 159:13: ( 'PRODUCT' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start PRODUCT_TOK
+ *
+ * Looks to match the characters the constitute the token PRODUCT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPRODUCT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = PRODUCT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:159:13: ( 'PRODUCT' )
+    // ../../../../../../src/parser/cvc/Cvc.g:159:15: 'PRODUCT'
+    {
+        MATCHS(lit_109);
+        if  (HASEXCEPTION())
+        {
+            goto rulePRODUCT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePRODUCT_TOKEx; /* Prevent compiler warnings */
+    rulePRODUCT_TOKEx: ;
+
+}
+// $ANTLR end PRODUCT_TOK
+
+//   Comes from: 160:16: ( 'PUSH_SCOPE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start PUSH_SCOPE_TOK
+ *
+ * Looks to match the characters the constitute the token PUSH_SCOPE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPUSH_SCOPE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = PUSH_SCOPE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:160:16: ( 'PUSH_SCOPE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:160:18: 'PUSH_SCOPE'
+    {
+        MATCHS(lit_110);
+        if  (HASEXCEPTION())
+        {
+            goto rulePUSH_SCOPE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePUSH_SCOPE_TOKEx; /* Prevent compiler warnings */
+    rulePUSH_SCOPE_TOKEx: ;
+
+}
+// $ANTLR end PUSH_SCOPE_TOK
+
+//   Comes from: 161:10: ( 'PUSH' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start PUSH_TOK
+ *
+ * Looks to match the characters the constitute the token PUSH_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPUSH_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = PUSH_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:161:10: ( 'PUSH' )
+    // ../../../../../../src/parser/cvc/Cvc.g:161:12: 'PUSH'
+    {
+        MATCHS(lit_111);
+        if  (HASEXCEPTION())
+        {
+            goto rulePUSH_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePUSH_TOKEx; /* Prevent compiler warnings */
+    rulePUSH_TOKEx: ;
+
+}
+// $ANTLR end PUSH_TOK
+
+//   Comes from: 162:11: ( 'QUERY' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start QUERY_TOK
+ *
+ * Looks to match the characters the constitute the token QUERY_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mQUERY_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = QUERY_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:162:11: ( 'QUERY' )
+    // ../../../../../../src/parser/cvc/Cvc.g:162:13: 'QUERY'
+    {
+        MATCHS(lit_112);
+        if  (HASEXCEPTION())
+        {
+            goto ruleQUERY_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleQUERY_TOKEx; /* Prevent compiler warnings */
+    ruleQUERY_TOKEx: ;
+
+}
+// $ANTLR end QUERY_TOK
+
+//   Comes from: 163:8: ( '}' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start RBRACE
+ *
+ * Looks to match the characters the constitute the token RBRACE
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mRBRACE(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = RBRACE;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:163:8: ( '}' )
+    // ../../../../../../src/parser/cvc/Cvc.g:163:10: '}'
+    {
+        MATCHC('}');
+        if  (HASEXCEPTION())
+        {
+            goto ruleRBRACEEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleRBRACEEx; /* Prevent compiler warnings */
+    ruleRBRACEEx: ;
+
+}
+// $ANTLR end RBRACE
+
+//   Comes from: 164:10: ( ']' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start RBRACKET
+ *
+ * Looks to match the characters the constitute the token RBRACKET
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mRBRACKET(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = RBRACKET;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:164:10: ( ']' )
+    // ../../../../../../src/parser/cvc/Cvc.g:164:12: ']'
+    {
+        MATCHC(']');
+        if  (HASEXCEPTION())
+        {
+            goto ruleRBRACKETEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleRBRACKETEx; /* Prevent compiler warnings */
+    ruleRBRACKETEx: ;
+
+}
+// $ANTLR end RBRACKET
+
+//   Comes from: 165:10: ( 'REAL' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start REAL_TOK
+ *
+ * Looks to match the characters the constitute the token REAL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mREAL_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = REAL_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:165:10: ( 'REAL' )
+    // ../../../../../../src/parser/cvc/Cvc.g:165:12: 'REAL'
+    {
+        MATCHS(lit_113);
+        if  (HASEXCEPTION())
+        {
+            goto ruleREAL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleREAL_TOKEx; /* Prevent compiler warnings */
+    ruleREAL_TOKEx: ;
+
+}
+// $ANTLR end REAL_TOK
+
+//   Comes from: 166:11: ( 'RESET' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start RESET_TOK
+ *
+ * Looks to match the characters the constitute the token RESET_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mRESET_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = RESET_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:166:11: ( 'RESET' )
+    // ../../../../../../src/parser/cvc/Cvc.g:166:13: 'RESET'
+    {
+        MATCHS(lit_114);
+        if  (HASEXCEPTION())
+        {
+            goto ruleRESET_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleRESET_TOKEx; /* Prevent compiler warnings */
+    ruleRESET_TOKEx: ;
+
+}
+// $ANTLR end RESET_TOK
+
+//   Comes from: 167:13: ( 'RESTART' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start RESTART_TOK
+ *
+ * Looks to match the characters the constitute the token RESTART_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mRESTART_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = RESTART_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:167:13: ( 'RESTART' )
+    // ../../../../../../src/parser/cvc/Cvc.g:167:15: 'RESTART'
+    {
+        MATCHS(lit_115);
+        if  (HASEXCEPTION())
+        {
+            goto ruleRESTART_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleRESTART_TOKEx; /* Prevent compiler warnings */
+    ruleRESTART_TOKEx: ;
+
+}
+// $ANTLR end RESTART_TOK
+
+//   Comes from: 168:16: ( '>>' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start RIGHTSHIFT_TOK
+ *
+ * Looks to match the characters the constitute the token RIGHTSHIFT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mRIGHTSHIFT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = RIGHTSHIFT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:168:16: ( '>>' )
+    // ../../../../../../src/parser/cvc/Cvc.g:168:18: '>>'
+    {
+        MATCHS(lit_116);
+        if  (HASEXCEPTION())
+        {
+            goto ruleRIGHTSHIFT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleRIGHTSHIFT_TOKEx; /* Prevent compiler warnings */
+    ruleRIGHTSHIFT_TOKEx: ;
+
+}
+// $ANTLR end RIGHTSHIFT_TOK
+
+//   Comes from: 169:8: ( ')' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start RPAREN
+ *
+ * Looks to match the characters the constitute the token RPAREN
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mRPAREN(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = RPAREN;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:169:8: ( ')' )
+    // ../../../../../../src/parser/cvc/Cvc.g:169:10: ')'
+    {
+        MATCHC(')');
+        if  (HASEXCEPTION())
+        {
+            goto ruleRPARENEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleRPARENEx; /* Prevent compiler warnings */
+    ruleRPARENEx: ;
+
+}
+// $ANTLR end RPAREN
+
+//   Comes from: 170:11: ( ';' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SEMICOLON
+ *
+ * Looks to match the characters the constitute the token SEMICOLON
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSEMICOLON(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SEMICOLON;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:170:11: ( ';' )
+    // ../../../../../../src/parser/cvc/Cvc.g:170:13: ';'
+    {
+        MATCHC(';');
+        if  (HASEXCEPTION())
+        {
+            goto ruleSEMICOLONEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSEMICOLONEx; /* Prevent compiler warnings */
+    ruleSEMICOLONEx: ;
+
+}
+// $ANTLR end SEMICOLON
+
+//   Comes from: 171:15: ( 'CARD' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SETS_CARD_TOK
+ *
+ * Looks to match the characters the constitute the token SETS_CARD_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSETS_CARD_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SETS_CARD_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:171:15: ( 'CARD' )
+    // ../../../../../../src/parser/cvc/Cvc.g:171:17: 'CARD'
+    {
+        MATCHS(lit_117);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSETS_CARD_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSETS_CARD_TOKEx; /* Prevent compiler warnings */
+    ruleSETS_CARD_TOKEx: ;
+
+}
+// $ANTLR end SETS_CARD_TOK
+
+//   Comes from: 172:9: ( 'SET' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SET_TOK
+ *
+ * Looks to match the characters the constitute the token SET_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSET_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SET_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:172:9: ( 'SET' )
+    // ../../../../../../src/parser/cvc/Cvc.g:172:11: 'SET'
+    {
+        MATCHS(lit_118);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSET_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSET_TOKEx; /* Prevent compiler warnings */
+    ruleSET_TOKEx: ;
+
+}
+// $ANTLR end SET_TOK
+
+//   Comes from: 173:8: ( '[#' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SQHASH
+ *
+ * Looks to match the characters the constitute the token SQHASH
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSQHASH(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SQHASH;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:173:8: ( '[#' )
+    // ../../../../../../src/parser/cvc/Cvc.g:173:10: '[#'
+    {
+        MATCHS(lit_119);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSQHASHEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSQHASHEx; /* Prevent compiler warnings */
+    ruleSQHASHEx: ;
+
+}
+// $ANTLR end SQHASH
+
+//   Comes from: 174:10: ( '*' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STAR_TOK
+ *
+ * Looks to match the characters the constitute the token STAR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTAR_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STAR_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:174:10: ( '*' )
+    // ../../../../../../src/parser/cvc/Cvc.g:174:12: '*'
+    {
+        MATCHC('*');
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTAR_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTAR_TOKEx; /* Prevent compiler warnings */
+    ruleSTAR_TOKEx: ;
+
+}
+// $ANTLR end STAR_TOK
+
+//   Comes from: 175:19: ( 'CHARAT' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STRING_CHARAT_TOK
+ *
+ * Looks to match the characters the constitute the token STRING_CHARAT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTRING_CHARAT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STRING_CHARAT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:175:19: ( 'CHARAT' )
+    // ../../../../../../src/parser/cvc/Cvc.g:175:21: 'CHARAT'
+    {
+        MATCHS(lit_120);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_CHARAT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTRING_CHARAT_TOKEx; /* Prevent compiler warnings */
+    ruleSTRING_CHARAT_TOKEx: ;
+
+}
+// $ANTLR end STRING_CHARAT_TOK
+
+//   Comes from: 176:19: ( 'CONCAT' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STRING_CONCAT_TOK
+ *
+ * Looks to match the characters the constitute the token STRING_CONCAT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTRING_CONCAT_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STRING_CONCAT_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:176:19: ( 'CONCAT' )
+    // ../../../../../../src/parser/cvc/Cvc.g:176:21: 'CONCAT'
+    {
+        MATCHS(lit_121);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_CONCAT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTRING_CONCAT_TOKEx; /* Prevent compiler warnings */
+    ruleSTRING_CONCAT_TOKEx: ;
+
+}
+// $ANTLR end STRING_CONCAT_TOK
+
+//   Comes from: 177:21: ( 'CONTAINS' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STRING_CONTAINS_TOK
+ *
+ * Looks to match the characters the constitute the token STRING_CONTAINS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTRING_CONTAINS_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STRING_CONTAINS_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:177:21: ( 'CONTAINS' )
+    // ../../../../../../src/parser/cvc/Cvc.g:177:23: 'CONTAINS'
+    {
+        MATCHS(lit_122);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_CONTAINS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTRING_CONTAINS_TOKEx; /* Prevent compiler warnings */
+    ruleSTRING_CONTAINS_TOKEx: ;
+
+}
+// $ANTLR end STRING_CONTAINS_TOK
+
+//   Comes from: 178:20: ( 'INDEXOF' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STRING_INDEXOF_TOK
+ *
+ * Looks to match the characters the constitute the token STRING_INDEXOF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTRING_INDEXOF_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STRING_INDEXOF_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:178:20: ( 'INDEXOF' )
+    // ../../../../../../src/parser/cvc/Cvc.g:178:22: 'INDEXOF'
+    {
+        MATCHS(lit_123);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_INDEXOF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTRING_INDEXOF_TOKEx; /* Prevent compiler warnings */
+    ruleSTRING_INDEXOF_TOKEx: ;
+
+}
+// $ANTLR end STRING_INDEXOF_TOK
+
+//   Comes from: 179:17: ( 'INTEGER_TO_STRING' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STRING_ITOS_TOK
+ *
+ * Looks to match the characters the constitute the token STRING_ITOS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTRING_ITOS_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STRING_ITOS_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:179:17: ( 'INTEGER_TO_STRING' )
+    // ../../../../../../src/parser/cvc/Cvc.g:179:19: 'INTEGER_TO_STRING'
+    {
+        MATCHS(lit_124);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_ITOS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTRING_ITOS_TOKEx; /* Prevent compiler warnings */
+    ruleSTRING_ITOS_TOKEx: ;
+
+}
+// $ANTLR end STRING_ITOS_TOK
+
+//   Comes from: 180:19: ( 'LENGTH' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STRING_LENGTH_TOK
+ *
+ * Looks to match the characters the constitute the token STRING_LENGTH_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTRING_LENGTH_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STRING_LENGTH_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:180:19: ( 'LENGTH' )
+    // ../../../../../../src/parser/cvc/Cvc.g:180:21: 'LENGTH'
+    {
+        MATCHS(lit_125);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_LENGTH_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTRING_LENGTH_TOKEx; /* Prevent compiler warnings */
+    ruleSTRING_LENGTH_TOKEx: ;
+
+}
+// $ANTLR end STRING_LENGTH_TOK
+
+//   Comes from: 181:21: ( 'PREFIXOF' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STRING_PREFIXOF_TOK
+ *
+ * Looks to match the characters the constitute the token STRING_PREFIXOF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTRING_PREFIXOF_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STRING_PREFIXOF_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:181:21: ( 'PREFIXOF' )
+    // ../../../../../../src/parser/cvc/Cvc.g:181:23: 'PREFIXOF'
+    {
+        MATCHS(lit_126);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_PREFIXOF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTRING_PREFIXOF_TOKEx; /* Prevent compiler warnings */
+    ruleSTRING_PREFIXOF_TOKEx: ;
+
+}
+// $ANTLR end STRING_PREFIXOF_TOK
+
+//   Comes from: 182:20: ( 'REPLACE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STRING_REPLACE_TOK
+ *
+ * Looks to match the characters the constitute the token STRING_REPLACE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTRING_REPLACE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STRING_REPLACE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:182:20: ( 'REPLACE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:182:22: 'REPLACE'
+    {
+        MATCHS(lit_127);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_REPLACE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTRING_REPLACE_TOKEx; /* Prevent compiler warnings */
+    ruleSTRING_REPLACE_TOKEx: ;
+
+}
+// $ANTLR end STRING_REPLACE_TOK
+
+//   Comes from: 183:17: ( 'STRING_TO_INTEGER' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STRING_STOI_TOK
+ *
+ * Looks to match the characters the constitute the token STRING_STOI_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTRING_STOI_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STRING_STOI_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:183:17: ( 'STRING_TO_INTEGER' )
+    // ../../../../../../src/parser/cvc/Cvc.g:183:19: 'STRING_TO_INTEGER'
+    {
+        MATCHS(lit_128);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_STOI_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTRING_STOI_TOKEx; /* Prevent compiler warnings */
+    ruleSTRING_STOI_TOKEx: ;
+
+}
+// $ANTLR end STRING_STOI_TOK
+
+//   Comes from: 184:19: ( 'STRING_TO_UINT16' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STRING_STOU16_TOK
+ *
+ * Looks to match the characters the constitute the token STRING_STOU16_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTRING_STOU16_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STRING_STOU16_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:184:19: ( 'STRING_TO_UINT16' )
+    // ../../../../../../src/parser/cvc/Cvc.g:184:21: 'STRING_TO_UINT16'
+    {
+        MATCHS(lit_129);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_STOU16_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTRING_STOU16_TOKEx; /* Prevent compiler warnings */
+    ruleSTRING_STOU16_TOKEx: ;
+
+}
+// $ANTLR end STRING_STOU16_TOK
+
+//   Comes from: 185:19: ( 'STRING_TO_UINT32' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STRING_STOU32_TOK
+ *
+ * Looks to match the characters the constitute the token STRING_STOU32_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTRING_STOU32_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STRING_STOU32_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:185:19: ( 'STRING_TO_UINT32' )
+    // ../../../../../../src/parser/cvc/Cvc.g:185:21: 'STRING_TO_UINT32'
+    {
+        MATCHS(lit_130);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_STOU32_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTRING_STOU32_TOKEx; /* Prevent compiler warnings */
+    ruleSTRING_STOU32_TOKEx: ;
+
+}
+// $ANTLR end STRING_STOU32_TOK
+
+//   Comes from: 186:19: ( 'SUBSTR' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STRING_SUBSTR_TOK
+ *
+ * Looks to match the characters the constitute the token STRING_SUBSTR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTRING_SUBSTR_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STRING_SUBSTR_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:186:19: ( 'SUBSTR' )
+    // ../../../../../../src/parser/cvc/Cvc.g:186:21: 'SUBSTR'
+    {
+        MATCHS(lit_131);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_SUBSTR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTRING_SUBSTR_TOKEx; /* Prevent compiler warnings */
+    ruleSTRING_SUBSTR_TOKEx: ;
+
+}
+// $ANTLR end STRING_SUBSTR_TOK
+
+//   Comes from: 187:21: ( 'SUFFIXOF' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STRING_SUFFIXOF_TOK
+ *
+ * Looks to match the characters the constitute the token STRING_SUFFIXOF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTRING_SUFFIXOF_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STRING_SUFFIXOF_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:187:21: ( 'SUFFIXOF' )
+    // ../../../../../../src/parser/cvc/Cvc.g:187:23: 'SUFFIXOF'
+    {
+        MATCHS(lit_132);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_SUFFIXOF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTRING_SUFFIXOF_TOKEx; /* Prevent compiler warnings */
+    ruleSTRING_SUFFIXOF_TOKEx: ;
+
+}
+// $ANTLR end STRING_SUFFIXOF_TOK
+
+//   Comes from: 188:12: ( 'STRING' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STRING_TOK
+ *
+ * Looks to match the characters the constitute the token STRING_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTRING_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STRING_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:188:12: ( 'STRING' )
+    // ../../../../../../src/parser/cvc/Cvc.g:188:14: 'STRING'
+    {
+        MATCHS(lit_133);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTRING_TOKEx; /* Prevent compiler warnings */
+    ruleSTRING_TOKEx: ;
+
+}
+// $ANTLR end STRING_TOK
+
+//   Comes from: 189:19: ( 'UINT16_TO_STRING' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STRING_U16TOS_TOK
+ *
+ * Looks to match the characters the constitute the token STRING_U16TOS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTRING_U16TOS_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STRING_U16TOS_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:189:19: ( 'UINT16_TO_STRING' )
+    // ../../../../../../src/parser/cvc/Cvc.g:189:21: 'UINT16_TO_STRING'
+    {
+        MATCHS(lit_134);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_U16TOS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTRING_U16TOS_TOKEx; /* Prevent compiler warnings */
+    ruleSTRING_U16TOS_TOKEx: ;
+
+}
+// $ANTLR end STRING_U16TOS_TOK
+
+//   Comes from: 190:19: ( 'UINT32_TO_STRING' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STRING_U32TOS_TOK
+ *
+ * Looks to match the characters the constitute the token STRING_U32TOS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTRING_U32TOS_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STRING_U32TOS_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:190:19: ( 'UINT32_TO_STRING' )
+    // ../../../../../../src/parser/cvc/Cvc.g:190:21: 'UINT32_TO_STRING'
+    {
+        MATCHS(lit_135);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_U32TOS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTRING_U32TOS_TOKEx; /* Prevent compiler warnings */
+    ruleSTRING_U32TOS_TOKEx: ;
+
+}
+// $ANTLR end STRING_U32TOS_TOK
+
+//   Comes from: 191:16: ( 'SUBSTITUTE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SUBSTITUTE_TOK
+ *
+ * Looks to match the characters the constitute the token SUBSTITUTE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSUBSTITUTE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SUBSTITUTE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:191:16: ( 'SUBSTITUTE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:191:18: 'SUBSTITUTE'
+    {
+        MATCHS(lit_136);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSUBSTITUTE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSUBSTITUTE_TOKEx; /* Prevent compiler warnings */
+    ruleSUBSTITUTE_TOKEx: ;
+
+}
+// $ANTLR end SUBSTITUTE_TOK
+
+//   Comes from: 192:13: ( 'SUBTYPE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SUBTYPE_TOK
+ *
+ * Looks to match the characters the constitute the token SUBTYPE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSUBTYPE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SUBTYPE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:192:13: ( 'SUBTYPE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:192:15: 'SUBTYPE'
+    {
+        MATCHS(lit_137);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSUBTYPE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSUBTYPE_TOKEx; /* Prevent compiler warnings */
+    ruleSUBTYPE_TOKEx: ;
+
+}
+// $ANTLR end SUBTYPE_TOK
+
+//   Comes from: 193:8: ( 'SX' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SX_TOK
+ *
+ * Looks to match the characters the constitute the token SX_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSX_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SX_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:193:8: ( 'SX' )
+    // ../../../../../../src/parser/cvc/Cvc.g:193:10: 'SX'
+    {
+        MATCHS(lit_138);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSX_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSX_TOKEx; /* Prevent compiler warnings */
+    ruleSX_TOKEx: ;
+
+}
+// $ANTLR end SX_TOK
+
+//   Comes from: 194:10: ( 'THEN' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start THEN_TOK
+ *
+ * Looks to match the characters the constitute the token THEN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mTHEN_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = THEN_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:194:10: ( 'THEN' )
+    // ../../../../../../src/parser/cvc/Cvc.g:194:12: 'THEN'
+    {
+        MATCHS(lit_139);
+        if  (HASEXCEPTION())
+        {
+            goto ruleTHEN_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleTHEN_TOKEx; /* Prevent compiler warnings */
+    ruleTHEN_TOKEx: ;
+
+}
+// $ANTLR end THEN_TOK
+
+//   Comes from: 195:11: ( 'TRACE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start TRACE_TOK
+ *
+ * Looks to match the characters the constitute the token TRACE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mTRACE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = TRACE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:195:11: ( 'TRACE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:195:13: 'TRACE'
+    {
+        MATCHS(lit_140);
+        if  (HASEXCEPTION())
+        {
+            goto ruleTRACE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleTRACE_TOKEx; /* Prevent compiler warnings */
+    ruleTRACE_TOKEx: ;
+
+}
+// $ANTLR end TRACE_TOK
+
+//   Comes from: 196:18: ( 'TCLOSURE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start TRANSCLOSURE_TOK
+ *
+ * Looks to match the characters the constitute the token TRANSCLOSURE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mTRANSCLOSURE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = TRANSCLOSURE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:196:18: ( 'TCLOSURE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:196:20: 'TCLOSURE'
+    {
+        MATCHS(lit_141);
+        if  (HASEXCEPTION())
+        {
+            goto ruleTRANSCLOSURE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleTRANSCLOSURE_TOKEx; /* Prevent compiler warnings */
+    ruleTRANSCLOSURE_TOKEx: ;
+
+}
+// $ANTLR end TRANSCLOSURE_TOK
+
+//   Comes from: 197:15: ( 'TRANSFORM' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start TRANSFORM_TOK
+ *
+ * Looks to match the characters the constitute the token TRANSFORM_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mTRANSFORM_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = TRANSFORM_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:197:15: ( 'TRANSFORM' )
+    // ../../../../../../src/parser/cvc/Cvc.g:197:17: 'TRANSFORM'
+    {
+        MATCHS(lit_142);
+        if  (HASEXCEPTION())
+        {
+            goto ruleTRANSFORM_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleTRANSFORM_TOKEx; /* Prevent compiler warnings */
+    ruleTRANSFORM_TOKEx: ;
+
+}
+// $ANTLR end TRANSFORM_TOK
+
+//   Comes from: 198:15: ( 'TRANSPOSE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start TRANSPOSE_TOK
+ *
+ * Looks to match the characters the constitute the token TRANSPOSE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mTRANSPOSE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = TRANSPOSE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:198:15: ( 'TRANSPOSE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:198:17: 'TRANSPOSE'
+    {
+        MATCHS(lit_143);
+        if  (HASEXCEPTION())
+        {
+            goto ruleTRANSPOSE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleTRANSPOSE_TOKEx; /* Prevent compiler warnings */
+    ruleTRANSPOSE_TOKEx: ;
+
+}
+// $ANTLR end TRANSPOSE_TOK
+
+//   Comes from: 199:10: ( 'TRUE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start TRUE_TOK
+ *
+ * Looks to match the characters the constitute the token TRUE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mTRUE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = TRUE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:199:10: ( 'TRUE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:199:12: 'TRUE'
+    {
+        MATCHS(lit_144);
+        if  (HASEXCEPTION())
+        {
+            goto ruleTRUE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleTRUE_TOKEx; /* Prevent compiler warnings */
+    ruleTRUE_TOKEx: ;
+
+}
+// $ANTLR end TRUE_TOK
+
+//   Comes from: 200:11: ( 'TUPLE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start TUPLE_TOK
+ *
+ * Looks to match the characters the constitute the token TUPLE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mTUPLE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = TUPLE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:200:11: ( 'TUPLE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:200:13: 'TUPLE'
+    {
+        MATCHS(lit_145);
+        if  (HASEXCEPTION())
+        {
+            goto ruleTUPLE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleTUPLE_TOKEx; /* Prevent compiler warnings */
+    ruleTUPLE_TOKEx: ;
+
+}
+// $ANTLR end TUPLE_TOK
+
+//   Comes from: 201:10: ( 'TYPE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start TYPE_TOK
+ *
+ * Looks to match the characters the constitute the token TYPE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mTYPE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = TYPE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:201:10: ( 'TYPE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:201:12: 'TYPE'
+    {
+        MATCHS(lit_146);
+        if  (HASEXCEPTION())
+        {
+            goto ruleTYPE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleTYPE_TOKEx; /* Prevent compiler warnings */
+    ruleTYPE_TOKEx: ;
+
+}
+// $ANTLR end TYPE_TOK
+
+//   Comes from: 202:12: ( '_' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start UNDERSCORE
+ *
+ * Looks to match the characters the constitute the token UNDERSCORE
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mUNDERSCORE(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = UNDERSCORE;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:202:12: ( '_' )
+    // ../../../../../../src/parser/cvc/Cvc.g:202:14: '_'
+    {
+        MATCHC('_');
+        if  (HASEXCEPTION())
+        {
+            goto ruleUNDERSCOREEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleUNDERSCOREEx; /* Prevent compiler warnings */
+    ruleUNDERSCOREEx: ;
+
+}
+// $ANTLR end UNDERSCORE
+
+//   Comes from: 203:13: ( 'UNIVERSE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start UNIVSET_TOK
+ *
+ * Looks to match the characters the constitute the token UNIVSET_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mUNIVSET_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = UNIVSET_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:203:13: ( 'UNIVERSE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:203:15: 'UNIVERSE'
+    {
+        MATCHS(lit_147);
+        if  (HASEXCEPTION())
+        {
+            goto ruleUNIVSET_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleUNIVSET_TOKEx; /* Prevent compiler warnings */
+    ruleUNIVSET_TOKEx: ;
+
+}
+// $ANTLR end UNIVSET_TOK
+
+//   Comes from: 204:13: ( 'UNTRACE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start UNTRACE_TOK
+ *
+ * Looks to match the characters the constitute the token UNTRACE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mUNTRACE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = UNTRACE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:204:13: ( 'UNTRACE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:204:15: 'UNTRACE'
+    {
+        MATCHS(lit_148);
+        if  (HASEXCEPTION())
+        {
+            goto ruleUNTRACE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleUNTRACE_TOKEx; /* Prevent compiler warnings */
+    ruleUNTRACE_TOKEx: ;
+
+}
+// $ANTLR end UNTRACE_TOK
+
+//   Comes from: 205:11: ( 'WHERE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start WHERE_TOK
+ *
+ * Looks to match the characters the constitute the token WHERE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mWHERE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = WHERE_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:205:11: ( 'WHERE' )
+    // ../../../../../../src/parser/cvc/Cvc.g:205:13: 'WHERE'
+    {
+        MATCHS(lit_149);
+        if  (HASEXCEPTION())
+        {
+            goto ruleWHERE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleWHERE_TOKEx; /* Prevent compiler warnings */
+    ruleWHERE_TOKEx: ;
+
+}
+// $ANTLR end WHERE_TOK
+
+//   Comes from: 206:10: ( 'WITH' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start WITH_TOK
+ *
+ * Looks to match the characters the constitute the token WITH_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mWITH_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = WITH_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:206:10: ( 'WITH' )
+    // ../../../../../../src/parser/cvc/Cvc.g:206:12: 'WITH'
+    {
+        MATCHS(lit_150);
+        if  (HASEXCEPTION())
+        {
+            goto ruleWITH_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleWITH_TOKEx; /* Prevent compiler warnings */
+    ruleWITH_TOKEx: ;
+
+}
+// $ANTLR end WITH_TOK
+
+//   Comes from: 207:9: ( 'XOR' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start XOR_TOK
+ *
+ * Looks to match the characters the constitute the token XOR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mXOR_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = XOR_TOK;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:207:9: ( 'XOR' )
+    // ../../../../../../src/parser/cvc/Cvc.g:207:11: 'XOR'
+    {
+        MATCHS(lit_151);
+        if  (HASEXCEPTION())
+        {
+            goto ruleXOR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleXOR_TOKEx; /* Prevent compiler warnings */
+    ruleXOR_TOKEx: ;
+
+}
+// $ANTLR end XOR_TOK
+
+//   Comes from: 2290:12: ( ( ALPHA | '_' ) ( ALPHA | DIGIT | '_' | '\\'' | '\\\\' | '?' | '$' | '~' )* )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start IDENTIFIER
+ *
+ * Looks to match the characters the constitute the token IDENTIFIER
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mIDENTIFIER(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = IDENTIFIER;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:2290:12: ( ( ALPHA | '_' ) ( ALPHA | DIGIT | '_' | '\\'' | '\\\\' | '?' | '$' | '~' )* )
+    // ../../../../../../src/parser/cvc/Cvc.g:2290:14: ( ALPHA | '_' ) ( ALPHA | DIGIT | '_' | '\\'' | '\\\\' | '?' | '$' | '~' )*
+    {
+        if ( ((LA(1) >= 'A') && (LA(1) <= 'Z')) || LA(1) == '_' || ((LA(1) >= 'a') && (LA(1) <= 'z')) )
+        {
+            CONSUME();
+        }
+        else
+        {
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+            LRECOVER();
+            goto ruleIDENTIFIEREx;
+        }
+
+
+        // ../../../../../../src/parser/cvc/Cvc.g:2290:28: ( ALPHA | DIGIT | '_' | '\\'' | '\\\\' | '?' | '$' | '~' )*
+
+        for (;;)
+        {
+            int alt1=2;
+            switch ( LA(1) )
+            {
+            case '$':
+            case '\'':
+            case '0':
+            case '1':
+            case '2':
+            case '3':
+            case '4':
+            case '5':
+            case '6':
+            case '7':
+            case '8':
+            case '9':
+            case '?':
+            case 'A':
+            case 'B':
+            case 'C':
+            case 'D':
+            case 'E':
+            case 'F':
+            case 'G':
+            case 'H':
+            case 'I':
+            case 'J':
+            case 'K':
+            case 'L':
+            case 'M':
+            case 'N':
+            case 'O':
+            case 'P':
+            case 'Q':
+            case 'R':
+            case 'S':
+            case 'T':
+            case 'U':
+            case 'V':
+            case 'W':
+            case 'X':
+            case 'Y':
+            case 'Z':
+            case '\\':
+            case '_':
+            case 'a':
+            case 'b':
+            case 'c':
+            case 'd':
+            case 'e':
+            case 'f':
+            case 'g':
+            case 'h':
+            case 'i':
+            case 'j':
+            case 'k':
+            case 'l':
+            case 'm':
+            case 'n':
+            case 'o':
+            case 'p':
+            case 'q':
+            case 'r':
+            case 's':
+            case 't':
+            case 'u':
+            case 'v':
+            case 'w':
+            case 'x':
+            case 'y':
+            case 'z':
+            case '~':
+            	{
+            		alt1=1;
+            	}
+                break;
+
+            }
+
+            switch (alt1)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:
+        	    {
+        	        if ( LA(1) == '$' || LA(1) == '\'' || ((LA(1) >= '0') && (LA(1) <= '9')) || LA(1) == '?' || ((LA(1) >= 'A') && (LA(1) <= 'Z')) || LA(1) == '\\' || LA(1) == '_' || ((LA(1) >= 'a') && (LA(1) <= 'z')) || LA(1) == '~' )
+        	        {
+        	            CONSUME();
+        	        }
+        	        else
+        	        {
+        	            CONSTRUCTEX();
+        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	            LRECOVER();
+        	            goto ruleIDENTIFIEREx;
+        	        }
+
+
+        	    }
+        	    break;
+
+        	default:
+        	    goto loop1;	/* break out of the loop */
+        	    break;
+            }
+        }
+        loop1: ; /* Jump out to here if this rule does not match */
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleIDENTIFIEREx; /* Prevent compiler warnings */
+    ruleIDENTIFIEREx: ;
+
+}
+// $ANTLR end IDENTIFIER
+
+//   Comes from: 2327:3: ( '0hex' ( HEX_DIGIT )+ )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start HEX_LITERAL
+ *
+ * Looks to match the characters the constitute the token HEX_LITERAL
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mHEX_LITERAL(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = HEX_LITERAL;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:2327:3: ( '0hex' ( HEX_DIGIT )+ )
+    // ../../../../../../src/parser/cvc/Cvc.g:2327:5: '0hex' ( HEX_DIGIT )+
+    {
+        MATCHS(lit_152);
+        if  (HASEXCEPTION())
+        {
+            goto ruleHEX_LITERALEx;
+        }
+
+
+
+
+        // ../../../../../../src/parser/cvc/Cvc.g:2327:12: ( HEX_DIGIT )+
+        {
+            int cnt2=0;
+
+            for (;;)
+            {
+                int alt2=2;
+        	switch ( LA(1) )
+        	{
+        	case '0':
+        	case '1':
+        	case '2':
+        	case '3':
+        	case '4':
+        	case '5':
+        	case '6':
+        	case '7':
+        	case '8':
+        	case '9':
+        	case 'A':
+        	case 'B':
+        	case 'C':
+        	case 'D':
+        	case 'E':
+        	case 'F':
+        	case 'a':
+        	case 'b':
+        	case 'c':
+        	case 'd':
+        	case 'e':
+        	case 'f':
+        		{
+        			alt2=1;
+        		}
+        	    break;
+
+        	}
+
+        	switch (alt2)
+        	{
+        	    case 1:
+        	        // ../../../../../../src/parser/cvc/Cvc.g:
+        	        {
+        	            if ( ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'A') && (LA(1) <= 'F')) || ((LA(1) >= 'a') && (LA(1) <= 'f')) )
+        	            {
+        	                CONSUME();
+        	            }
+        	            else
+        	            {
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	                LRECOVER();
+        	                goto ruleHEX_LITERALEx;
+        	            }
+
+
+        	        }
+        	        break;
+
+        	    default:
+
+        		if ( cnt2 >= 1 )
+        		{
+        		    goto loop2;
+        		}
+        		/* mismatchedSetEx()
+        		 */
+        		CONSTRUCTEX();
+        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        		goto ruleHEX_LITERALEx;
+        	}
+        	cnt2++;
+            }
+            loop2: ;	/* Jump to here if this rule does not match */
+        }
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleHEX_LITERALEx; /* Prevent compiler warnings */
+    ruleHEX_LITERALEx: ;
+
+}
+// $ANTLR end HEX_LITERAL
+
+//   Comes from: 2334:3: ( '0bin' ( '0' | '1' )+ )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BINARY_LITERAL
+ *
+ * Looks to match the characters the constitute the token BINARY_LITERAL
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBINARY_LITERAL(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BINARY_LITERAL;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:2334:3: ( '0bin' ( '0' | '1' )+ )
+    // ../../../../../../src/parser/cvc/Cvc.g:2334:5: '0bin' ( '0' | '1' )+
+    {
+        MATCHS(lit_153);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBINARY_LITERALEx;
+        }
+
+
+
+
+        // ../../../../../../src/parser/cvc/Cvc.g:2334:12: ( '0' | '1' )+
+        {
+            int cnt3=0;
+
+            for (;;)
+            {
+                int alt3=2;
+        	switch ( LA(1) )
+        	{
+        	case '0':
+        	case '1':
+        		{
+        			alt3=1;
+        		}
+        	    break;
+
+        	}
+
+        	switch (alt3)
+        	{
+        	    case 1:
+        	        // ../../../../../../src/parser/cvc/Cvc.g:
+        	        {
+        	            if ( ((LA(1) >= '0') && (LA(1) <= '1')) )
+        	            {
+        	                CONSUME();
+        	            }
+        	            else
+        	            {
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	                LRECOVER();
+        	                goto ruleBINARY_LITERALEx;
+        	            }
+
+
+        	        }
+        	        break;
+
+        	    default:
+
+        		if ( cnt3 >= 1 )
+        		{
+        		    goto loop3;
+        		}
+        		/* mismatchedSetEx()
+        		 */
+        		CONSTRUCTEX();
+        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        		goto ruleBINARY_LITERALEx;
+        	}
+        	cnt3++;
+            }
+            loop3: ;	/* Jump to here if this rule does not match */
+        }
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBINARY_LITERALEx; /* Prevent compiler warnings */
+    ruleBINARY_LITERALEx: ;
+
+}
+// $ANTLR end BINARY_LITERAL
+
+//   Comes from: 2342:15: ( '\"' ( ESCAPE |~ ( '\"' | '\\\\' ) )* '\"' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STRING_LITERAL
+ *
+ * Looks to match the characters the constitute the token STRING_LITERAL
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTRING_LITERAL(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STRING_LITERAL;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:2342:15: ( '\"' ( ESCAPE |~ ( '\"' | '\\\\' ) )* '\"' )
+    // ../../../../../../src/parser/cvc/Cvc.g:2342:17: '\"' ( ESCAPE |~ ( '\"' | '\\\\' ) )* '\"'
+    {
+        MATCHC('"');
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_LITERALEx;
+        }
+
+
+        // ../../../../../../src/parser/cvc/Cvc.g:2342:21: ( ESCAPE |~ ( '\"' | '\\\\' ) )*
+
+        for (;;)
+        {
+            int alt4=3;
+            {
+               /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)
+                */
+                int LA4_0 = LA(1);
+                if ( (LA4_0 == '\\'))
+                {
+                    alt4=1;
+                }
+                else if ( (((LA4_0 >= 0x0000) && (LA4_0 <= '!')) || ((LA4_0 >= '#') && (LA4_0 <= '[')) || ((LA4_0 >= ']') && (LA4_0 <= 0xFFFF))))
+                {
+                    alt4=2;
+                }
+
+            }
+            switch (alt4)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2342:22: ESCAPE
+        	    {
+        	        /* 2342:22: ESCAPE */
+        	        mESCAPE(ctx );
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleSTRING_LITERALEx;
+        	        }
+
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2342:31: ~ ( '\"' | '\\\\' )
+        	    {
+        	        if ( ((LA(1) >= 0x0000) && (LA(1) <= '!')) || ((LA(1) >= '#') && (LA(1) <= '[')) || ((LA(1) >= ']') && (LA(1) <= 0xFFFF)) )
+        	        {
+        	            CONSUME();
+        	        }
+        	        else
+        	        {
+        	            CONSTRUCTEX();
+        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	            LRECOVER();
+        	            goto ruleSTRING_LITERALEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+        	default:
+        	    goto loop4;	/* break out of the loop */
+        	    break;
+            }
+        }
+        loop4: ; /* Jump out to here if this rule does not match */
+
+
+        MATCHC('"');
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_LITERALEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTRING_LITERALEx; /* Prevent compiler warnings */
+    ruleSTRING_LITERALEx: ;
+
+}
+// $ANTLR end STRING_LITERAL
+
+//   Comes from: 2346:16: ( 'a' .. 'z' | 'A' .. 'Z' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ALPHA
+ *
+ * Looks to match the characters the constitute the token ALPHA
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mALPHA(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:2346:16: ( 'a' .. 'z' | 'A' .. 'Z' )
+    // ../../../../../../src/parser/cvc/Cvc.g:
+    {
+        if ( ((LA(1) >= 'A') && (LA(1) <= 'Z')) || ((LA(1) >= 'a') && (LA(1) <= 'z')) )
+        {
+            CONSUME();
+        }
+        else
+        {
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+            LRECOVER();
+            goto ruleALPHAEx;
+        }
+
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleALPHAEx; /* Prevent compiler warnings */
+    ruleALPHAEx: ;
+
+}
+// $ANTLR end ALPHA
+
+//   Comes from: 2351:16: ( '0' .. '9' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DIGIT
+ *
+ * Looks to match the characters the constitute the token DIGIT
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDIGIT(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:2351:16: ( '0' .. '9' )
+    // ../../../../../../src/parser/cvc/Cvc.g:
+    {
+        if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
+        {
+            CONSUME();
+        }
+        else
+        {
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+            LRECOVER();
+            goto ruleDIGITEx;
+        }
+
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleDIGITEx; /* Prevent compiler warnings */
+    ruleDIGITEx: ;
+
+}
+// $ANTLR end DIGIT
+
+//   Comes from: 2365:3: ( ( DIGIT )+ ({...}? => '.' ( DIGIT )* |) | '.' ( '.' |) )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start NUMBER_OR_RANGEOP
+ *
+ * Looks to match the characters the constitute the token NUMBER_OR_RANGEOP
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mNUMBER_OR_RANGEOP(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = NUMBER_OR_RANGEOP;
+
+
+    {
+        //  ../../../../../../src/parser/cvc/Cvc.g:2365:3: ( ( DIGIT )+ ({...}? => '.' ( DIGIT )* |) | '.' ( '.' |) )
+
+        ANTLR3_UINT32 alt9;
+
+        alt9=2;
+
+        switch ( LA(1) )
+        {
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+        case '6':
+        case '7':
+        case '8':
+        case '9':
+        	{
+        		alt9=1;
+        	}
+            break;
+        case '.':
+        	{
+        		alt9=2;
+        	}
+            break;
+
+        default:
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            EXCEPTION->message      = (void *)"";
+            EXCEPTION->decisionNum  = 9;
+            EXCEPTION->state        = 0;
+
+
+            goto ruleNUMBER_OR_RANGEOPEx;
+
+        }
+
+        switch (alt9)
+        {
+    	case 1:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:2365:5: ( DIGIT )+ ({...}? => '.' ( DIGIT )* |)
+    	    {
+    	        // ../../../../../../src/parser/cvc/Cvc.g:2365:5: ( DIGIT )+
+    	        {
+    	            int cnt5=0;
+
+    	            for (;;)
+    	            {
+    	                int alt5=2;
+    	        	switch ( LA(1) )
+    	        	{
+    	        	case '0':
+    	        	case '1':
+    	        	case '2':
+    	        	case '3':
+    	        	case '4':
+    	        	case '5':
+    	        	case '6':
+    	        	case '7':
+    	        	case '8':
+    	        	case '9':
+    	        		{
+    	        			alt5=1;
+    	        		}
+    	        	    break;
+
+    	        	}
+
+    	        	switch (alt5)
+    	        	{
+    	        	    case 1:
+    	        	        // ../../../../../../src/parser/cvc/Cvc.g:
+    	        	        {
+    	        	            if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
+    	        	            {
+    	        	                CONSUME();
+    	        	            }
+    	        	            else
+    	        	            {
+    	        	                CONSTRUCTEX();
+    	        	                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+    	        	                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+    	        	                LRECOVER();
+    	        	                goto ruleNUMBER_OR_RANGEOPEx;
+    	        	            }
+
+
+    	        	        }
+    	        	        break;
+
+    	        	    default:
+
+    	        		if ( cnt5 >= 1 )
+    	        		{
+    	        		    goto loop5;
+    	        		}
+    	        		/* mismatchedSetEx()
+    	        		 */
+    	        		CONSTRUCTEX();
+    	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+    	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+    	        		goto ruleNUMBER_OR_RANGEOPEx;
+    	        	}
+    	        	cnt5++;
+    	            }
+    	            loop5: ;	/* Jump to here if this rule does not match */
+    	        }
+
+    	        // ../../../../../../src/parser/cvc/Cvc.g:2366:5: ({...}? => '.' ( DIGIT )* |)
+    	        {
+    	            int alt7=2;
+    	            {
+    	                int LA7_0 = LA(1);
+    	                if ( (( LA(2) != '.' )) && (LA7_0 == '.'))
+    	                {
+    	                    alt7=1;
+    	                }
+    	                else
+    	                {
+    	                    alt7=2;
+    	                }
+    	            }
+    	            switch (alt7)
+    	            {
+    	        	case 1:
+    	        	    // ../../../../../../src/parser/cvc/Cvc.g:2367:7: {...}? => '.' ( DIGIT )*
+    	        	    {
+    	        	        if ( !(( LA(2) != '.' )) )
+    	        	        {
+    	        	                CONSTRUCTEX();
+    	        	                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+    	        	                EXCEPTION->message      = (void *)" LA(2) != '.' ";
+    	        	                EXCEPTION->ruleName	 = (void *)"NUMBER_OR_RANGEOP";
+
+
+    	        	        }
+
+    	        	        MATCHC('.');
+    	        	        if  (HASEXCEPTION())
+    	        	        {
+    	        	            goto ruleNUMBER_OR_RANGEOPEx;
+    	        	        }
+
+
+    	        	        // ../../../../../../src/parser/cvc/Cvc.g:2367:32: ( DIGIT )*
+
+    	        	        for (;;)
+    	        	        {
+    	        	            int alt6=2;
+    	        	            switch ( LA(1) )
+    	        	            {
+    	        	            case '0':
+    	        	            case '1':
+    	        	            case '2':
+    	        	            case '3':
+    	        	            case '4':
+    	        	            case '5':
+    	        	            case '6':
+    	        	            case '7':
+    	        	            case '8':
+    	        	            case '9':
+    	        	            	{
+    	        	            		alt6=1;
+    	        	            	}
+    	        	                break;
+
+    	        	            }
+
+    	        	            switch (alt6)
+    	        	            {
+    	        	        	case 1:
+    	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:
+    	        	        	    {
+    	        	        	        if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
+    	        	        	        {
+    	        	        	            CONSUME();
+    	        	        	        }
+    	        	        	        else
+    	        	        	        {
+    	        	        	            CONSTRUCTEX();
+    	        	        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+    	        	        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+    	        	        	            LRECOVER();
+    	        	        	            goto ruleNUMBER_OR_RANGEOPEx;
+    	        	        	        }
+
+
+    	        	        	    }
+    	        	        	    break;
+
+    	        	        	default:
+    	        	        	    goto loop6;	/* break out of the loop */
+    	        	        	    break;
+    	        	            }
+    	        	        }
+    	        	        loop6: ; /* Jump out to here if this rule does not match */
+
+
+    	        	        {
+    	        	             _type = DECIMAL_LITERAL; 
+    	        	        }
+
+
+    	        	    }
+    	        	    break;
+    	        	case 2:
+    	        	    // ../../../../../../src/parser/cvc/Cvc.g:2368:9: 
+    	        	    {
+    	        	        {
+    	        	             _type = INTEGER_LITERAL; 
+    	        	        }
+
+
+    	        	    }
+    	        	    break;
+
+    	            }
+    	        }
+
+    	    }
+    	    break;
+    	case 2:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:2370:5: '.' ( '.' |)
+    	    {
+    	        MATCHC('.');
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleNUMBER_OR_RANGEOPEx;
+    	        }
+
+
+    	        // ../../../../../../src/parser/cvc/Cvc.g:2371:5: ( '.' |)
+    	        {
+    	            int alt8=2;
+    	            switch ( LA(1) )
+    	            {
+    	            case '.':
+    	            	{
+    	            		alt8=1;
+    	            	}
+    	                break;
+
+    	            default:
+    	                alt8=2;
+    	            }
+
+    	            switch (alt8)
+    	            {
+    	        	case 1:
+    	        	    // ../../../../../../src/parser/cvc/Cvc.g:2371:7: '.'
+    	        	    {
+    	        	        MATCHC('.');
+    	        	        if  (HASEXCEPTION())
+    	        	        {
+    	        	            goto ruleNUMBER_OR_RANGEOPEx;
+    	        	        }
+
+
+    	        	        {
+    	        	            _type = DOTDOT; 
+    	        	        }
+
+
+    	        	    }
+    	        	    break;
+    	        	case 2:
+    	        	    // ../../../../../../src/parser/cvc/Cvc.g:2372:7: 
+    	        	    {
+    	        	        {
+    	        	            _type = DOT; 
+    	        	        }
+
+
+    	        	    }
+    	        	    break;
+
+    	            }
+    	        }
+
+    	    }
+    	    break;
+
+        }
+    }
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleNUMBER_OR_RANGEOPEx; /* Prevent compiler warnings */
+    ruleNUMBER_OR_RANGEOPEx: ;
+
+}
+// $ANTLR end NUMBER_OR_RANGEOP
+
+//   Comes from: 2377:25: ()
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start INTEGER_LITERAL
+ *
+ * Looks to match the characters the constitute the token INTEGER_LITERAL
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mINTEGER_LITERAL(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:2377:25: ()
+    // ../../../../../../src/parser/cvc/Cvc.g:2377:26: 
+    {
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleINTEGER_LITERALEx; /* Prevent compiler warnings */
+    ruleINTEGER_LITERALEx: ;
+
+}
+// $ANTLR end INTEGER_LITERAL
+
+//   Comes from: 2378:25: ()
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DECIMAL_LITERAL
+ *
+ * Looks to match the characters the constitute the token DECIMAL_LITERAL
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDECIMAL_LITERAL(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:2378:25: ()
+    // ../../../../../../src/parser/cvc/Cvc.g:2378:26: 
+    {
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleDECIMAL_LITERALEx; /* Prevent compiler warnings */
+    ruleDECIMAL_LITERALEx: ;
+
+}
+// $ANTLR end DECIMAL_LITERAL
+
+//   Comes from: 2379:13: ()
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DOT
+ *
+ * Looks to match the characters the constitute the token DOT
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDOT(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:2379:13: ()
+    // ../../../../../../src/parser/cvc/Cvc.g:2379:14: 
+    {
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleDOTEx; /* Prevent compiler warnings */
+    ruleDOTEx: ;
+
+}
+// $ANTLR end DOT
+
+//   Comes from: 2380:16: ()
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DOTDOT
+ *
+ * Looks to match the characters the constitute the token DOTDOT
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDOTDOT(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:2380:16: ()
+    // ../../../../../../src/parser/cvc/Cvc.g:2380:17: 
+    {
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleDOTDOTEx; /* Prevent compiler warnings */
+    ruleDOTDOTEx: ;
+
+}
+// $ANTLR end DOTDOT
+
+//   Comes from: 2388:20: ( DIGIT | 'a' .. 'f' | 'A' .. 'F' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start HEX_DIGIT
+ *
+ * Looks to match the characters the constitute the token HEX_DIGIT
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mHEX_DIGIT(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:2388:20: ( DIGIT | 'a' .. 'f' | 'A' .. 'F' )
+    // ../../../../../../src/parser/cvc/Cvc.g:
+    {
+        if ( ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'A') && (LA(1) <= 'F')) || ((LA(1) >= 'a') && (LA(1) <= 'f')) )
+        {
+            CONSUME();
+        }
+        else
+        {
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+            LRECOVER();
+            goto ruleHEX_DIGITEx;
+        }
+
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleHEX_DIGITEx; /* Prevent compiler warnings */
+    ruleHEX_DIGITEx: ;
+
+}
+// $ANTLR end HEX_DIGIT
+
+//   Comes from: 2393:12: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start WHITESPACE
+ *
+ * Looks to match the characters the constitute the token WHITESPACE
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mWHITESPACE(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = WHITESPACE;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:2393:12: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
+    // ../../../../../../src/parser/cvc/Cvc.g:2393:14: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:2393:14: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
+        {
+            int cnt10=0;
+
+            for (;;)
+            {
+                int alt10=2;
+        	switch ( LA(1) )
+        	{
+        	case '\t':
+        	case '\n':
+        	case '\f':
+        	case '\r':
+        	case ' ':
+        		{
+        			alt10=1;
+        		}
+        	    break;
+
+        	}
+
+        	switch (alt10)
+        	{
+        	    case 1:
+        	        // ../../../../../../src/parser/cvc/Cvc.g:
+        	        {
+        	            if ( ((LA(1) >= '\t') && (LA(1) <= '\n')) || ((LA(1) >= '\f') && (LA(1) <= '\r')) || LA(1) == ' ' )
+        	            {
+        	                CONSUME();
+        	            }
+        	            else
+        	            {
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	                LRECOVER();
+        	                goto ruleWHITESPACEEx;
+        	            }
+
+
+        	        }
+        	        break;
+
+        	    default:
+
+        		if ( cnt10 >= 1 )
+        		{
+        		    goto loop10;
+        		}
+        		/* mismatchedSetEx()
+        		 */
+        		CONSTRUCTEX();
+        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        		goto ruleWHITESPACEEx;
+        	}
+        	cnt10++;
+            }
+            loop10: ;	/* Jump to here if this rule does not match */
+        }
+
+        {
+             SKIP(); 
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleWHITESPACEEx; /* Prevent compiler warnings */
+    ruleWHITESPACEEx: ;
+
+}
+// $ANTLR end WHITESPACE
+
+//   Comes from: 2398:9: ( '%' (~ ( '\\n' | '\\r' ) )* )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start COMMENT
+ *
+ * Looks to match the characters the constitute the token COMMENT
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCOMMENT(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = COMMENT;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:2398:9: ( '%' (~ ( '\\n' | '\\r' ) )* )
+    // ../../../../../../src/parser/cvc/Cvc.g:2398:11: '%' (~ ( '\\n' | '\\r' ) )*
+    {
+        MATCHC('%');
+        if  (HASEXCEPTION())
+        {
+            goto ruleCOMMENTEx;
+        }
+
+
+        // ../../../../../../src/parser/cvc/Cvc.g:2398:15: (~ ( '\\n' | '\\r' ) )*
+
+        for (;;)
+        {
+            int alt11=2;
+            {
+               /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)
+                */
+                int LA11_0 = LA(1);
+                if ( (((LA11_0 >= 0x0000) && (LA11_0 <= '\t')) || ((LA11_0 >= 0x000B) && (LA11_0 <= '\f')) || ((LA11_0 >= 0x000E) && (LA11_0 <= 0xFFFF))))
+                {
+                    alt11=1;
+                }
+
+            }
+            switch (alt11)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:
+        	    {
+        	        if ( ((LA(1) >= 0x0000) && (LA(1) <= '\t')) || ((LA(1) >= 0x000B) && (LA(1) <= '\f')) || ((LA(1) >= 0x000E) && (LA(1) <= 0xFFFF)) )
+        	        {
+        	            CONSUME();
+        	        }
+        	        else
+        	        {
+        	            CONSTRUCTEX();
+        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	            LRECOVER();
+        	            goto ruleCOMMENTEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+        	default:
+        	    goto loop11;	/* break out of the loop */
+        	    break;
+            }
+        }
+        loop11: ; /* Jump out to here if this rule does not match */
+
+
+        {
+             SKIP(); 
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCOMMENTEx; /* Prevent compiler warnings */
+    ruleCOMMENTEx: ;
+
+}
+// $ANTLR end COMMENT
+
+//   Comes from: 2403:17: ( '\\\\' ( '\"' | '\\\\' | 'n' | 't' | 'r' ) )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ESCAPE
+ *
+ * Looks to match the characters the constitute the token ESCAPE
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mESCAPE(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/cvc/Cvc.g:2403:17: ( '\\\\' ( '\"' | '\\\\' | 'n' | 't' | 'r' ) )
+    // ../../../../../../src/parser/cvc/Cvc.g:2403:19: '\\\\' ( '\"' | '\\\\' | 'n' | 't' | 'r' )
+    {
+        MATCHC('\\');
+        if  (HASEXCEPTION())
+        {
+            goto ruleESCAPEEx;
+        }
+
+
+        if ( LA(1) == '"' || LA(1) == '\\' || LA(1) == 'n' || LA(1) == 'r' || LA(1) == 't' )
+        {
+            CONSUME();
+        }
+        else
+        {
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+            LRECOVER();
+            goto ruleESCAPEEx;
+        }
+
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleESCAPEEx; /* Prevent compiler warnings */
+    ruleESCAPEEx: ;
+
+}
+// $ANTLR end ESCAPE
+
+/** This is the entry point in to the lexer from an object that
+ *  wants to generate the next token, such as a pCOMMON_TOKEN_STREAM
+ */
+static void
+mTokens(pCvcLexer ctx)
+{
+    {
+        //  ../../../../../../src/parser/cvc/Cvc.g:1:8: ( ABS_TOK | AND_TOK | ARITH_VAR_ORDER_TOK | ARRAY_TOK | ARROW_TOK | ASSERTIONS_TOK | ASSERT_TOK | ASSIGN_TOK | ASSUMPTIONS_TOK | BAR | BITVECTOR_TOK | BOOLEAN_TOK | BVAND_TOK | BVASHR_TOK | BVCOMP_TOK | BVGE_TOK | BVGT_TOK | BVLE_TOK | BVLSHR_TOK | BVLT_TOK | BVMULT_TOK | BVNAND_TOK | BVNEG_TOK | BVNOR_TOK | BVPLUS_TOK | BVREPEAT_TOK | BVROTL_TOK | BVROTR_TOK | BVSDIV_TOK | BVSGE_TOK | BVSGT_TOK | BVSHL_TOK | BVSLE_TOK | BVSLT_TOK | [...]
+
+        ANTLR3_UINT32 alt12;
+
+        alt12=180;
+
+        switch ( LA(1) )
+        {
+        case 'A':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'B':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'S':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case '$':
+        						case '\'':
+        						case '0':
+        						case '1':
+        						case '2':
+        						case '3':
+        						case '4':
+        						case '5':
+        						case '6':
+        						case '7':
+        						case '8':
+        						case '9':
+        						case '?':
+        						case 'A':
+        						case 'B':
+        						case 'C':
+        						case 'D':
+        						case 'E':
+        						case 'F':
+        						case 'G':
+        						case 'H':
+        						case 'I':
+        						case 'J':
+        						case 'K':
+        						case 'L':
+        						case 'M':
+        						case 'N':
+        						case 'O':
+        						case 'P':
+        						case 'Q':
+        						case 'R':
+        						case 'S':
+        						case 'T':
+        						case 'U':
+        						case 'V':
+        						case 'W':
+        						case 'X':
+        						case 'Y':
+        						case 'Z':
+        						case '\\':
+        						case '_':
+        						case 'a':
+        						case 'b':
+        						case 'c':
+        						case 'd':
+        						case 'e':
+        						case 'f':
+        						case 'g':
+        						case 'h':
+        						case 'i':
+        						case 'j':
+        						case 'k':
+        						case 'l':
+        						case 'm':
+        						case 'n':
+        						case 'o':
+        						case 'p':
+        						case 'q':
+        						case 'r':
+        						case 's':
+        						case 't':
+        						case 'u':
+        						case 'v':
+        						case 'w':
+        						case 'x':
+        						case 'y':
+        						case 'z':
+        						case '~':
+        							{
+        								alt12=174;
+        							}
+        						    break;
+
+        						default:
+        						    alt12=1;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'N':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'D':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case '$':
+        						case '\'':
+        						case '0':
+        						case '1':
+        						case '2':
+        						case '3':
+        						case '4':
+        						case '5':
+        						case '6':
+        						case '7':
+        						case '8':
+        						case '9':
+        						case '?':
+        						case 'A':
+        						case 'B':
+        						case 'C':
+        						case 'D':
+        						case 'E':
+        						case 'F':
+        						case 'G':
+        						case 'H':
+        						case 'I':
+        						case 'J':
+        						case 'K':
+        						case 'L':
+        						case 'M':
+        						case 'N':
+        						case 'O':
+        						case 'P':
+        						case 'Q':
+        						case 'R':
+        						case 'S':
+        						case 'T':
+        						case 'U':
+        						case 'V':
+        						case 'W':
+        						case 'X':
+        						case 'Y':
+        						case 'Z':
+        						case '\\':
+        						case '_':
+        						case 'a':
+        						case 'b':
+        						case 'c':
+        						case 'd':
+        						case 'e':
+        						case 'f':
+        						case 'g':
+        						case 'h':
+        						case 'i':
+        						case 'j':
+        						case 'k':
+        						case 'l':
+        						case 'm':
+        						case 'n':
+        						case 'o':
+        						case 'p':
+        						case 'q':
+        						case 'r':
+        						case 's':
+        						case 't':
+        						case 'u':
+        						case 'v':
+        						case 'w':
+        						case 'x':
+        						case 'y':
+        						case 'z':
+        						case '~':
+        							{
+        								alt12=174;
+        							}
+        						    break;
+
+        						default:
+        						    alt12=2;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'R':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'I':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'T':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'H':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '_':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'V':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'A':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'R':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case '_':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case 'O':
+        																					{
+        																						switch ( LA(12) )
+        																						{
+        																						case 'R':
+        																							{
+        																								switch ( LA(13) )
+        																								{
+        																								case 'D':
+        																									{
+        																										switch ( LA(14) )
+        																										{
+        																										case 'E':
+        																											{
+        																												switch ( LA(15) )
+        																												{
+        																												case 'R':
+        																													{
+        																														switch ( LA(16) )
+        																														{
+        																														case '$':
+        																														case '\'':
+        																														case '0':
+        																														case '1':
+        																														case '2':
+        																														case '3':
+        																														case '4':
+        																														case '5':
+        																														case '6':
+        																														case '7':
+        																														case '8':
+        																														case '9':
+        																														case '?':
+        																														case 'A':
+        																														case 'B':
+        																														case 'C':
+        																														case 'D':
+        																														case 'E':
+        																														case 'F':
+        																														case 'G':
+        																														case 'H':
+        																														case 'I':
+        																														case 'J':
+        																														case 'K':
+        																														case 'L':
+        																														case 'M':
+        																														case 'N':
+        																														case 'O':
+        																														case 'P':
+        																														case 'Q':
+        																														case 'R':
+        																														case 'S':
+        																														case 'T':
+        																														case 'U':
+        																														case 'V':
+        																														case 'W':
+        																														case 'X':
+        																														case 'Y':
+        																														case 'Z':
+        																														case '\\':
+        																														case '_':
+        																														case 'a':
+        																														case 'b':
+        																														case 'c':
+        																														case 'd':
+        																														case 'e':
+        																														case 'f':
+        																														case 'g':
+        																														case 'h':
+        																														case 'i':
+        																														case 'j':
+        																														case 'k':
+        																														case 'l':
+        																														case 'm':
+        																														case 'n':
+        																														case 'o':
+        																														case 'p':
+        																														case 'q':
+        																														case 'r':
+        																														case 's':
+        																														case 't':
+        																														case 'u':
+        																														case 'v':
+        																														case 'w':
+        																														case 'x':
+        																														case 'y':
+        																														case 'z':
+        																														case '~':
+        																															{
+        																																alt12=174;
+        																															}
+        																														    break;
+
+        																														default:
+        																														    alt12=3;
+        																														}
+
+        																													}
+        																												    break;
+
+        																												default:
+        																												    alt12=174;
+        																												}
+
+        																											}
+        																										    break;
+
+        																										default:
+        																										    alt12=174;
+        																										}
+
+        																									}
+        																								    break;
+
+        																								default:
+        																								    alt12=174;
+        																								}
+
+        																							}
+        																						    break;
+
+        																						default:
+        																						    alt12=174;
+        																						}
+
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=174;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'R':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'A':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'Y':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'T':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case '_':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=4;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'S':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'S':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'E':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'R':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'T':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'I':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'O':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'N':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case 'S':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case '$':
+        																				case '\'':
+        																				case '0':
+        																				case '1':
+        																				case '2':
+        																				case '3':
+        																				case '4':
+        																				case '5':
+        																				case '6':
+        																				case '7':
+        																				case '8':
+        																				case '9':
+        																				case '?':
+        																				case 'A':
+        																				case 'B':
+        																				case 'C':
+        																				case 'D':
+        																				case 'E':
+        																				case 'F':
+        																				case 'G':
+        																				case 'H':
+        																				case 'I':
+        																				case 'J':
+        																				case 'K':
+        																				case 'L':
+        																				case 'M':
+        																				case 'N':
+        																				case 'O':
+        																				case 'P':
+        																				case 'Q':
+        																				case 'R':
+        																				case 'S':
+        																				case 'T':
+        																				case 'U':
+        																				case 'V':
+        																				case 'W':
+        																				case 'X':
+        																				case 'Y':
+        																				case 'Z':
+        																				case '\\':
+        																				case '_':
+        																				case 'a':
+        																				case 'b':
+        																				case 'c':
+        																				case 'd':
+        																				case 'e':
+        																				case 'f':
+        																				case 'g':
+        																				case 'h':
+        																				case 'i':
+        																				case 'j':
+        																				case 'k':
+        																				case 'l':
+        																				case 'm':
+        																				case 'n':
+        																				case 'o':
+        																				case 'p':
+        																				case 'q':
+        																				case 'r':
+        																				case 's':
+        																				case 't':
+        																				case 'u':
+        																				case 'v':
+        																				case 'w':
+        																				case 'x':
+        																				case 'y':
+        																				case 'z':
+        																				case '~':
+        																					{
+        																						alt12=174;
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=6;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=7;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case 'U':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'M':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'P':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'T':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'I':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'O':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case 'N':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case 'S':
+        																					{
+        																						switch ( LA(12) )
+        																						{
+        																						case '$':
+        																						case '\'':
+        																						case '0':
+        																						case '1':
+        																						case '2':
+        																						case '3':
+        																						case '4':
+        																						case '5':
+        																						case '6':
+        																						case '7':
+        																						case '8':
+        																						case '9':
+        																						case '?':
+        																						case 'A':
+        																						case 'B':
+        																						case 'C':
+        																						case 'D':
+        																						case 'E':
+        																						case 'F':
+        																						case 'G':
+        																						case 'H':
+        																						case 'I':
+        																						case 'J':
+        																						case 'K':
+        																						case 'L':
+        																						case 'M':
+        																						case 'N':
+        																						case 'O':
+        																						case 'P':
+        																						case 'Q':
+        																						case 'R':
+        																						case 'S':
+        																						case 'T':
+        																						case 'U':
+        																						case 'V':
+        																						case 'W':
+        																						case 'X':
+        																						case 'Y':
+        																						case 'Z':
+        																						case '\\':
+        																						case '_':
+        																						case 'a':
+        																						case 'b':
+        																						case 'c':
+        																						case 'd':
+        																						case 'e':
+        																						case 'f':
+        																						case 'g':
+        																						case 'h':
+        																						case 'i':
+        																						case 'j':
+        																						case 'k':
+        																						case 'l':
+        																						case 'm':
+        																						case 'n':
+        																						case 'o':
+        																						case 'p':
+        																						case 'q':
+        																						case 'r':
+        																						case 's':
+        																						case 't':
+        																						case 'u':
+        																						case 'v':
+        																						case 'w':
+        																						case 'x':
+        																						case 'y':
+        																						case 'z':
+        																						case '~':
+        																							{
+        																								alt12=174;
+        																							}
+        																						    break;
+
+        																						default:
+        																						    alt12=9;
+        																						}
+
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=174;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case '-':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case '>':
+        			{
+        				alt12=5;
+        			}
+        		    break;
+
+        		default:
+        		    alt12=110;
+        		}
+
+        	}
+            break;
+        case ':':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case '=':
+        			{
+        				alt12=8;
+        			}
+        		    break;
+
+        		default:
+        		    alt12=47;
+        		}
+
+        	}
+            break;
+        case '|':
+        	{
+        		alt12=10;
+        	}
+            break;
+        case 'B':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'I':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'T':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'V':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'E':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'C':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'T':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'O':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'R':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case '$':
+        																		case '\'':
+        																		case '0':
+        																		case '1':
+        																		case '2':
+        																		case '3':
+        																		case '4':
+        																		case '5':
+        																		case '6':
+        																		case '7':
+        																		case '8':
+        																		case '9':
+        																		case '?':
+        																		case 'A':
+        																		case 'B':
+        																		case 'C':
+        																		case 'D':
+        																		case 'E':
+        																		case 'F':
+        																		case 'G':
+        																		case 'H':
+        																		case 'I':
+        																		case 'J':
+        																		case 'K':
+        																		case 'L':
+        																		case 'M':
+        																		case 'N':
+        																		case 'O':
+        																		case 'P':
+        																		case 'Q':
+        																		case 'R':
+        																		case 'S':
+        																		case 'T':
+        																		case 'U':
+        																		case 'V':
+        																		case 'W':
+        																		case 'X':
+        																		case 'Y':
+        																		case 'Z':
+        																		case '\\':
+        																		case '_':
+        																		case 'a':
+        																		case 'b':
+        																		case 'c':
+        																		case 'd':
+        																		case 'e':
+        																		case 'f':
+        																		case 'g':
+        																		case 'h':
+        																		case 'i':
+        																		case 'j':
+        																		case 'k':
+        																		case 'l':
+        																		case 'm':
+        																		case 'n':
+        																		case 'o':
+        																		case 'p':
+        																		case 'q':
+        																		case 'r':
+        																		case 's':
+        																		case 't':
+        																		case 'u':
+        																		case 'v':
+        																		case 'w':
+        																		case 'x':
+        																		case 'y':
+        																		case 'z':
+        																		case '~':
+        																			{
+        																				alt12=174;
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=11;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'O':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'O':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'L':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'E':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'A':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'N':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case '$':
+        														case '\'':
+        														case '0':
+        														case '1':
+        														case '2':
+        														case '3':
+        														case '4':
+        														case '5':
+        														case '6':
+        														case '7':
+        														case '8':
+        														case '9':
+        														case '?':
+        														case 'A':
+        														case 'B':
+        														case 'C':
+        														case 'D':
+        														case 'E':
+        														case 'F':
+        														case 'G':
+        														case 'H':
+        														case 'I':
+        														case 'J':
+        														case 'K':
+        														case 'L':
+        														case 'M':
+        														case 'N':
+        														case 'O':
+        														case 'P':
+        														case 'Q':
+        														case 'R':
+        														case 'S':
+        														case 'T':
+        														case 'U':
+        														case 'V':
+        														case 'W':
+        														case 'X':
+        														case 'Y':
+        														case 'Z':
+        														case '\\':
+        														case '_':
+        														case 'a':
+        														case 'b':
+        														case 'c':
+        														case 'd':
+        														case 'e':
+        														case 'f':
+        														case 'g':
+        														case 'h':
+        														case 'i':
+        														case 'j':
+        														case 'k':
+        														case 'l':
+        														case 'm':
+        														case 'n':
+        														case 'o':
+        														case 'p':
+        														case 'q':
+        														case 'r':
+        														case 's':
+        														case 't':
+        														case 'u':
+        														case 'v':
+        														case 'w':
+        														case 'x':
+        														case 'y':
+        														case 'z':
+        														case '~':
+        															{
+        																alt12=174;
+        															}
+        														    break;
+
+        														default:
+        														    alt12=12;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'V':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'A':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'S':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'H':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'R':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=14;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'C':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'O':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'M':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'P':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=15;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'G':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'E':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case '$':
+        								case '\'':
+        								case '0':
+        								case '1':
+        								case '2':
+        								case '3':
+        								case '4':
+        								case '5':
+        								case '6':
+        								case '7':
+        								case '8':
+        								case '9':
+        								case '?':
+        								case 'A':
+        								case 'B':
+        								case 'C':
+        								case 'D':
+        								case 'E':
+        								case 'F':
+        								case 'G':
+        								case 'H':
+        								case 'I':
+        								case 'J':
+        								case 'K':
+        								case 'L':
+        								case 'M':
+        								case 'N':
+        								case 'O':
+        								case 'P':
+        								case 'Q':
+        								case 'R':
+        								case 'S':
+        								case 'T':
+        								case 'U':
+        								case 'V':
+        								case 'W':
+        								case 'X':
+        								case 'Y':
+        								case 'Z':
+        								case '\\':
+        								case '_':
+        								case 'a':
+        								case 'b':
+        								case 'c':
+        								case 'd':
+        								case 'e':
+        								case 'f':
+        								case 'g':
+        								case 'h':
+        								case 'i':
+        								case 'j':
+        								case 'k':
+        								case 'l':
+        								case 'm':
+        								case 'n':
+        								case 'o':
+        								case 'p':
+        								case 'q':
+        								case 'r':
+        								case 's':
+        								case 't':
+        								case 'u':
+        								case 'v':
+        								case 'w':
+        								case 'x':
+        								case 'y':
+        								case 'z':
+        								case '~':
+        									{
+        										alt12=174;
+        									}
+        								    break;
+
+        								default:
+        								    alt12=16;
+        								}
+
+        							}
+        						    break;
+        						case 'T':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case '$':
+        								case '\'':
+        								case '0':
+        								case '1':
+        								case '2':
+        								case '3':
+        								case '4':
+        								case '5':
+        								case '6':
+        								case '7':
+        								case '8':
+        								case '9':
+        								case '?':
+        								case 'A':
+        								case 'B':
+        								case 'C':
+        								case 'D':
+        								case 'E':
+        								case 'F':
+        								case 'G':
+        								case 'H':
+        								case 'I':
+        								case 'J':
+        								case 'K':
+        								case 'L':
+        								case 'M':
+        								case 'N':
+        								case 'O':
+        								case 'P':
+        								case 'Q':
+        								case 'R':
+        								case 'S':
+        								case 'T':
+        								case 'U':
+        								case 'V':
+        								case 'W':
+        								case 'X':
+        								case 'Y':
+        								case 'Z':
+        								case '\\':
+        								case '_':
+        								case 'a':
+        								case 'b':
+        								case 'c':
+        								case 'd':
+        								case 'e':
+        								case 'f':
+        								case 'g':
+        								case 'h':
+        								case 'i':
+        								case 'j':
+        								case 'k':
+        								case 'l':
+        								case 'm':
+        								case 'n':
+        								case 'o':
+        								case 'p':
+        								case 'q':
+        								case 'r':
+        								case 's':
+        								case 't':
+        								case 'u':
+        								case 'v':
+        								case 'w':
+        								case 'x':
+        								case 'y':
+        								case 'z':
+        								case '~':
+        									{
+        										alt12=174;
+        									}
+        								    break;
+
+        								default:
+        								    alt12=17;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'L':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'E':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case '$':
+        								case '\'':
+        								case '0':
+        								case '1':
+        								case '2':
+        								case '3':
+        								case '4':
+        								case '5':
+        								case '6':
+        								case '7':
+        								case '8':
+        								case '9':
+        								case '?':
+        								case 'A':
+        								case 'B':
+        								case 'C':
+        								case 'D':
+        								case 'E':
+        								case 'F':
+        								case 'G':
+        								case 'H':
+        								case 'I':
+        								case 'J':
+        								case 'K':
+        								case 'L':
+        								case 'M':
+        								case 'N':
+        								case 'O':
+        								case 'P':
+        								case 'Q':
+        								case 'R':
+        								case 'S':
+        								case 'T':
+        								case 'U':
+        								case 'V':
+        								case 'W':
+        								case 'X':
+        								case 'Y':
+        								case 'Z':
+        								case '\\':
+        								case '_':
+        								case 'a':
+        								case 'b':
+        								case 'c':
+        								case 'd':
+        								case 'e':
+        								case 'f':
+        								case 'g':
+        								case 'h':
+        								case 'i':
+        								case 'j':
+        								case 'k':
+        								case 'l':
+        								case 'm':
+        								case 'n':
+        								case 'o':
+        								case 'p':
+        								case 'q':
+        								case 'r':
+        								case 's':
+        								case 't':
+        								case 'u':
+        								case 'v':
+        								case 'w':
+        								case 'x':
+        								case 'y':
+        								case 'z':
+        								case '~':
+        									{
+        										alt12=174;
+        									}
+        								    break;
+
+        								default:
+        								    alt12=18;
+        								}
+
+        							}
+        						    break;
+        						case 'S':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'H':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'R':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=19;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case 'T':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case '$':
+        								case '\'':
+        								case '0':
+        								case '1':
+        								case '2':
+        								case '3':
+        								case '4':
+        								case '5':
+        								case '6':
+        								case '7':
+        								case '8':
+        								case '9':
+        								case '?':
+        								case 'A':
+        								case 'B':
+        								case 'C':
+        								case 'D':
+        								case 'E':
+        								case 'F':
+        								case 'G':
+        								case 'H':
+        								case 'I':
+        								case 'J':
+        								case 'K':
+        								case 'L':
+        								case 'M':
+        								case 'N':
+        								case 'O':
+        								case 'P':
+        								case 'Q':
+        								case 'R':
+        								case 'S':
+        								case 'T':
+        								case 'U':
+        								case 'V':
+        								case 'W':
+        								case 'X':
+        								case 'Y':
+        								case 'Z':
+        								case '\\':
+        								case '_':
+        								case 'a':
+        								case 'b':
+        								case 'c':
+        								case 'd':
+        								case 'e':
+        								case 'f':
+        								case 'g':
+        								case 'h':
+        								case 'i':
+        								case 'j':
+        								case 'k':
+        								case 'l':
+        								case 'm':
+        								case 'n':
+        								case 'o':
+        								case 'p':
+        								case 'q':
+        								case 'r':
+        								case 's':
+        								case 't':
+        								case 'u':
+        								case 'v':
+        								case 'w':
+        								case 'x':
+        								case 'y':
+        								case 'z':
+        								case '~':
+        									{
+        										alt12=174;
+        									}
+        								    break;
+
+        								default:
+        								    alt12=20;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'M':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'U':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'L':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'T':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=21;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'N':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'A':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'N':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'D':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=22;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case 'O':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'R':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'T':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case '_':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=24;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'P':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'L':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'U':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'S':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=25;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'R':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'E':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'P':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'E':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'A':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'T':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case '$':
+        																case '\'':
+        																case '0':
+        																case '1':
+        																case '2':
+        																case '3':
+        																case '4':
+        																case '5':
+        																case '6':
+        																case '7':
+        																case '8':
+        																case '9':
+        																case '?':
+        																case 'A':
+        																case 'B':
+        																case 'C':
+        																case 'D':
+        																case 'E':
+        																case 'F':
+        																case 'G':
+        																case 'H':
+        																case 'I':
+        																case 'J':
+        																case 'K':
+        																case 'L':
+        																case 'M':
+        																case 'N':
+        																case 'O':
+        																case 'P':
+        																case 'Q':
+        																case 'R':
+        																case 'S':
+        																case 'T':
+        																case 'U':
+        																case 'V':
+        																case 'W':
+        																case 'X':
+        																case 'Y':
+        																case 'Z':
+        																case '\\':
+        																case '_':
+        																case 'a':
+        																case 'b':
+        																case 'c':
+        																case 'd':
+        																case 'e':
+        																case 'f':
+        																case 'g':
+        																case 'h':
+        																case 'i':
+        																case 'j':
+        																case 'k':
+        																case 'l':
+        																case 'm':
+        																case 'n':
+        																case 'o':
+        																case 'p':
+        																case 'q':
+        																case 'r':
+        																case 's':
+        																case 't':
+        																case 'u':
+        																case 'v':
+        																case 'w':
+        																case 'x':
+        																case 'y':
+        																case 'z':
+        																case '~':
+        																	{
+        																		alt12=174;
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=26;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case 'O':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'T':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'L':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=27;
+        												}
+
+        											}
+        										    break;
+        										case 'R':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=28;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'S':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'D':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'I':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'V':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=29;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case 'G':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'E':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'T':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case '_':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=30;
+        										}
+
+        									}
+        								    break;
+        								case 'T':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'T':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case '_':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=31;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case 'H':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'L':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'T':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case '_':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=32;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case 'L':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'E':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'T':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case '_':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=33;
+        										}
+
+        									}
+        								    break;
+        								case 'T':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'T':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case '_':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=34;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case 'M':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'O':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'D':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=35;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case 'R':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'E':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'M':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=36;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case 'U':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'B':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'T':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case '_':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=37;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'U':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'D':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'I':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'V':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=38;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case 'M':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'I':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'N':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'U':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'S':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case '$':
+        																case '\'':
+        																case '0':
+        																case '1':
+        																case '2':
+        																case '3':
+        																case '4':
+        																case '5':
+        																case '6':
+        																case '7':
+        																case '8':
+        																case '9':
+        																case '?':
+        																case 'A':
+        																case 'B':
+        																case 'C':
+        																case 'D':
+        																case 'E':
+        																case 'F':
+        																case 'G':
+        																case 'H':
+        																case 'I':
+        																case 'J':
+        																case 'K':
+        																case 'L':
+        																case 'M':
+        																case 'N':
+        																case 'O':
+        																case 'P':
+        																case 'Q':
+        																case 'R':
+        																case 'S':
+        																case 'T':
+        																case 'U':
+        																case 'V':
+        																case 'W':
+        																case 'X':
+        																case 'Y':
+        																case 'Z':
+        																case '\\':
+        																case '_':
+        																case 'a':
+        																case 'b':
+        																case 'c':
+        																case 'd':
+        																case 'e':
+        																case 'f':
+        																case 'g':
+        																case 'h':
+        																case 'i':
+        																case 'j':
+        																case 'k':
+        																case 'l':
+        																case 'm':
+        																case 'n':
+        																case 'o':
+        																case 'p':
+        																case 'q':
+        																case 'r':
+        																case 's':
+        																case 't':
+        																case 'u':
+        																case 'v':
+        																case 'w':
+        																case 'x':
+        																case 'y':
+        																case 'z':
+        																case '~':
+        																	{
+        																		alt12=174;
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=39;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case 'R':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'E':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'M':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=40;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'X':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'N':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'O':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'R':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=41;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case 'O':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'R':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'T':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case '_':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=42;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'Z':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'E':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'R':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'O':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'E':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'X':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'T':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case 'E':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case 'N':
+        																					{
+        																						switch ( LA(12) )
+        																						{
+        																						case 'D':
+        																							{
+        																								switch ( LA(13) )
+        																								{
+        																								case '$':
+        																								case '\'':
+        																								case '0':
+        																								case '1':
+        																								case '2':
+        																								case '3':
+        																								case '4':
+        																								case '5':
+        																								case '6':
+        																								case '7':
+        																								case '8':
+        																								case '9':
+        																								case '?':
+        																								case 'A':
+        																								case 'B':
+        																								case 'C':
+        																								case 'D':
+        																								case 'E':
+        																								case 'F':
+        																								case 'G':
+        																								case 'H':
+        																								case 'I':
+        																								case 'J':
+        																								case 'K':
+        																								case 'L':
+        																								case 'M':
+        																								case 'N':
+        																								case 'O':
+        																								case 'P':
+        																								case 'Q':
+        																								case 'R':
+        																								case 'S':
+        																								case 'T':
+        																								case 'U':
+        																								case 'V':
+        																								case 'W':
+        																								case 'X':
+        																								case 'Y':
+        																								case 'Z':
+        																								case '\\':
+        																								case '_':
+        																								case 'a':
+        																								case 'b':
+        																								case 'c':
+        																								case 'd':
+        																								case 'e':
+        																								case 'f':
+        																								case 'g':
+        																								case 'h':
+        																								case 'i':
+        																								case 'j':
+        																								case 'k':
+        																								case 'l':
+        																								case 'm':
+        																								case 'n':
+        																								case 'o':
+        																								case 'p':
+        																								case 'q':
+        																								case 'r':
+        																								case 's':
+        																								case 't':
+        																								case 'u':
+        																								case 'v':
+        																								case 'w':
+        																								case 'x':
+        																								case 'y':
+        																								case 'z':
+        																								case '~':
+        																									{
+        																										alt12=174;
+        																									}
+        																								    break;
+
+        																								default:
+        																								    alt12=43;
+        																								}
+
+        																							}
+        																						    break;
+
+        																						default:
+        																						    alt12=174;
+        																						}
+
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=174;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case '&':
+        	{
+        		alt12=13;
+        	}
+            break;
+        case '~':
+        	{
+        		alt12=23;
+        	}
+            break;
+        case 'C':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'A':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'L':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'L':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case '$':
+        								case '\'':
+        								case '0':
+        								case '1':
+        								case '2':
+        								case '3':
+        								case '4':
+        								case '5':
+        								case '6':
+        								case '7':
+        								case '8':
+        								case '9':
+        								case '?':
+        								case 'A':
+        								case 'B':
+        								case 'C':
+        								case 'D':
+        								case 'E':
+        								case 'F':
+        								case 'G':
+        								case 'H':
+        								case 'I':
+        								case 'J':
+        								case 'K':
+        								case 'L':
+        								case 'M':
+        								case 'N':
+        								case 'O':
+        								case 'P':
+        								case 'Q':
+        								case 'R':
+        								case 'S':
+        								case 'T':
+        								case 'U':
+        								case 'V':
+        								case 'W':
+        								case 'X':
+        								case 'Y':
+        								case 'Z':
+        								case '\\':
+        								case '_':
+        								case 'a':
+        								case 'b':
+        								case 'c':
+        								case 'd':
+        								case 'e':
+        								case 'f':
+        								case 'g':
+        								case 'h':
+        								case 'i':
+        								case 'j':
+        								case 'k':
+        								case 'l':
+        								case 'm':
+        								case 'n':
+        								case 'o':
+        								case 'p':
+        								case 'q':
+        								case 'r':
+        								case 's':
+        								case 't':
+        								case 'u':
+        								case 'v':
+        								case 'w':
+        								case 'x':
+        								case 'y':
+        								case 'z':
+        								case '~':
+        									{
+        										alt12=174;
+        									}
+        								    break;
+
+        								default:
+        								    alt12=44;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'R':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'D':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case '$':
+        								case '\'':
+        								case '0':
+        								case '1':
+        								case '2':
+        								case '3':
+        								case '4':
+        								case '5':
+        								case '6':
+        								case '7':
+        								case '8':
+        								case '9':
+        								case '?':
+        								case 'A':
+        								case 'B':
+        								case 'C':
+        								case 'D':
+        								case 'E':
+        								case 'F':
+        								case 'G':
+        								case 'H':
+        								case 'I':
+        								case 'J':
+        								case 'K':
+        								case 'L':
+        								case 'M':
+        								case 'N':
+        								case 'O':
+        								case 'P':
+        								case 'Q':
+        								case 'R':
+        								case 'S':
+        								case 'T':
+        								case 'U':
+        								case 'V':
+        								case 'W':
+        								case 'X':
+        								case 'Y':
+        								case 'Z':
+        								case '\\':
+        								case '_':
+        								case 'a':
+        								case 'b':
+        								case 'c':
+        								case 'd':
+        								case 'e':
+        								case 'f':
+        								case 'g':
+        								case 'h':
+        								case 'i':
+        								case 'j':
+        								case 'k':
+        								case 'l':
+        								case 'm':
+        								case 'n':
+        								case 'o':
+        								case 'p':
+        								case 'q':
+        								case 'r':
+        								case 's':
+        								case 't':
+        								case 'u':
+        								case 'v':
+        								case 'w':
+        								case 'x':
+        								case 'y':
+        								case 'z':
+        								case '~':
+        									{
+        										alt12=174;
+        									}
+        								    break;
+
+        								default:
+        								    alt12=137;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'H':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'E':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'C':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'K':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'S':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'A':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'T':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case '$':
+        																case '\'':
+        																case '0':
+        																case '1':
+        																case '2':
+        																case '3':
+        																case '4':
+        																case '5':
+        																case '6':
+        																case '7':
+        																case '8':
+        																case '9':
+        																case '?':
+        																case 'A':
+        																case 'B':
+        																case 'C':
+        																case 'D':
+        																case 'E':
+        																case 'F':
+        																case 'G':
+        																case 'H':
+        																case 'I':
+        																case 'J':
+        																case 'K':
+        																case 'L':
+        																case 'M':
+        																case 'N':
+        																case 'O':
+        																case 'P':
+        																case 'Q':
+        																case 'R':
+        																case 'S':
+        																case 'T':
+        																case 'U':
+        																case 'V':
+        																case 'W':
+        																case 'X':
+        																case 'Y':
+        																case 'Z':
+        																case '\\':
+        																case '_':
+        																case 'a':
+        																case 'b':
+        																case 'c':
+        																case 'd':
+        																case 'e':
+        																case 'f':
+        																case 'g':
+        																case 'h':
+        																case 'i':
+        																case 'j':
+        																case 'k':
+        																case 'l':
+        																case 'm':
+        																case 'n':
+        																case 'o':
+        																case 'p':
+        																case 'q':
+        																case 'r':
+        																case 's':
+        																case 't':
+        																case 'u':
+        																case 'v':
+        																case 'w':
+        																case 'x':
+        																case 'y':
+        																case 'z':
+        																case '~':
+        																	{
+        																		alt12=174;
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=45;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+        										case '_':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'T':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'Y':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'P':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case 'E':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case '$':
+        																				case '\'':
+        																				case '0':
+        																				case '1':
+        																				case '2':
+        																				case '3':
+        																				case '4':
+        																				case '5':
+        																				case '6':
+        																				case '7':
+        																				case '8':
+        																				case '9':
+        																				case '?':
+        																				case 'A':
+        																				case 'B':
+        																				case 'C':
+        																				case 'D':
+        																				case 'E':
+        																				case 'F':
+        																				case 'G':
+        																				case 'H':
+        																				case 'I':
+        																				case 'J':
+        																				case 'K':
+        																				case 'L':
+        																				case 'M':
+        																				case 'N':
+        																				case 'O':
+        																				case 'P':
+        																				case 'Q':
+        																				case 'R':
+        																				case 'S':
+        																				case 'T':
+        																				case 'U':
+        																				case 'V':
+        																				case 'W':
+        																				case 'X':
+        																				case 'Y':
+        																				case 'Z':
+        																				case '\\':
+        																				case '_':
+        																				case 'a':
+        																				case 'b':
+        																				case 'c':
+        																				case 'd':
+        																				case 'e':
+        																				case 'f':
+        																				case 'g':
+        																				case 'h':
+        																				case 'i':
+        																				case 'j':
+        																				case 'k':
+        																				case 'l':
+        																				case 'm':
+        																				case 'n':
+        																				case 'o':
+        																				case 'p':
+        																				case 'q':
+        																				case 'r':
+        																				case 's':
+        																				case 't':
+        																				case 'u':
+        																				case 'v':
+        																				case 'w':
+        																				case 'x':
+        																				case 'y':
+        																				case 'z':
+        																				case '~':
+        																					{
+        																						alt12=174;
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=46;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'A':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'R':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'A':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'T':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=141;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'O':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'N':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'T':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'E':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'X':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'T':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case '$':
+        														case '\'':
+        														case '0':
+        														case '1':
+        														case '2':
+        														case '3':
+        														case '4':
+        														case '5':
+        														case '6':
+        														case '7':
+        														case '8':
+        														case '9':
+        														case '?':
+        														case 'A':
+        														case 'B':
+        														case 'C':
+        														case 'D':
+        														case 'E':
+        														case 'F':
+        														case 'G':
+        														case 'H':
+        														case 'I':
+        														case 'J':
+        														case 'K':
+        														case 'L':
+        														case 'M':
+        														case 'N':
+        														case 'O':
+        														case 'P':
+        														case 'Q':
+        														case 'R':
+        														case 'S':
+        														case 'T':
+        														case 'U':
+        														case 'V':
+        														case 'W':
+        														case 'X':
+        														case 'Y':
+        														case 'Z':
+        														case '\\':
+        														case '_':
+        														case 'a':
+        														case 'b':
+        														case 'c':
+        														case 'd':
+        														case 'e':
+        														case 'f':
+        														case 'g':
+        														case 'h':
+        														case 'i':
+        														case 'j':
+        														case 'k':
+        														case 'l':
+        														case 'm':
+        														case 'n':
+        														case 'o':
+        														case 'p':
+        														case 'q':
+        														case 'r':
+        														case 's':
+        														case 't':
+        														case 'u':
+        														case 'v':
+        														case 'w':
+        														case 'x':
+        														case 'y':
+        														case 'z':
+        														case '~':
+        															{
+        																alt12=174;
+        															}
+        														    break;
+
+        														default:
+        														    alt12=50;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+        								case 'I':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'N':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'U':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'E':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case '$':
+        																case '\'':
+        																case '0':
+        																case '1':
+        																case '2':
+        																case '3':
+        																case '4':
+        																case '5':
+        																case '6':
+        																case '7':
+        																case '8':
+        																case '9':
+        																case '?':
+        																case 'A':
+        																case 'B':
+        																case 'C':
+        																case 'D':
+        																case 'E':
+        																case 'F':
+        																case 'G':
+        																case 'H':
+        																case 'I':
+        																case 'J':
+        																case 'K':
+        																case 'L':
+        																case 'M':
+        																case 'N':
+        																case 'O':
+        																case 'P':
+        																case 'Q':
+        																case 'R':
+        																case 'S':
+        																case 'T':
+        																case 'U':
+        																case 'V':
+        																case 'W':
+        																case 'X':
+        																case 'Y':
+        																case 'Z':
+        																case '\\':
+        																case '_':
+        																case 'a':
+        																case 'b':
+        																case 'c':
+        																case 'd':
+        																case 'e':
+        																case 'f':
+        																case 'g':
+        																case 'h':
+        																case 'i':
+        																case 'j':
+        																case 'k':
+        																case 'l':
+        																case 'm':
+        																case 'n':
+        																case 'o':
+        																case 'p':
+        																case 'q':
+        																case 'r':
+        																case 's':
+        																case 't':
+        																case 'u':
+        																case 'v':
+        																case 'w':
+        																case 'x':
+        																case 'y':
+        																case 'z':
+        																case '~':
+        																	{
+        																		alt12=174;
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=51;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+        								case 'A':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'I':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'N':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'S':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case '$':
+        																case '\'':
+        																case '0':
+        																case '1':
+        																case '2':
+        																case '3':
+        																case '4':
+        																case '5':
+        																case '6':
+        																case '7':
+        																case '8':
+        																case '9':
+        																case '?':
+        																case 'A':
+        																case 'B':
+        																case 'C':
+        																case 'D':
+        																case 'E':
+        																case 'F':
+        																case 'G':
+        																case 'H':
+        																case 'I':
+        																case 'J':
+        																case 'K':
+        																case 'L':
+        																case 'M':
+        																case 'N':
+        																case 'O':
+        																case 'P':
+        																case 'Q':
+        																case 'R':
+        																case 'S':
+        																case 'T':
+        																case 'U':
+        																case 'V':
+        																case 'W':
+        																case 'X':
+        																case 'Y':
+        																case 'Z':
+        																case '\\':
+        																case '_':
+        																case 'a':
+        																case 'b':
+        																case 'c':
+        																case 'd':
+        																case 'e':
+        																case 'f':
+        																case 'g':
+        																case 'h':
+        																case 'i':
+        																case 'j':
+        																case 'k':
+        																case 'l':
+        																case 'm':
+        																case 'n':
+        																case 'o':
+        																case 'p':
+        																case 'q':
+        																case 'r':
+        																case 's':
+        																case 't':
+        																case 'u':
+        																case 'v':
+        																case 'w':
+        																case 'x':
+        																case 'y':
+        																case 'z':
+        																case '~':
+        																	{
+        																		alt12=174;
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=143;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case 'C':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'A':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'T':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=142;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'U':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'N':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'T':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'E':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'R':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'E':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'X':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case 'A':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case 'M':
+        																					{
+        																						switch ( LA(12) )
+        																						{
+        																						case 'P':
+        																							{
+        																								switch ( LA(13) )
+        																								{
+        																								case 'L':
+        																									{
+        																										switch ( LA(14) )
+        																										{
+        																										case 'E':
+        																											{
+        																												switch ( LA(15) )
+        																												{
+        																												case '$':
+        																												case '\'':
+        																												case '0':
+        																												case '1':
+        																												case '2':
+        																												case '3':
+        																												case '4':
+        																												case '5':
+        																												case '6':
+        																												case '7':
+        																												case '8':
+        																												case '9':
+        																												case '?':
+        																												case 'A':
+        																												case 'B':
+        																												case 'C':
+        																												case 'D':
+        																												case 'E':
+        																												case 'F':
+        																												case 'G':
+        																												case 'H':
+        																												case 'I':
+        																												case 'J':
+        																												case 'K':
+        																												case 'L':
+        																												case 'M':
+        																												case 'N':
+        																												case 'O':
+        																												case 'P':
+        																												case 'Q':
+        																												case 'R':
+        																												case 'S':
+        																												case 'T':
+        																												case 'U':
+        																												case 'V':
+        																												case 'W':
+        																												case 'X':
+        																												case 'Y':
+        																												case 'Z':
+        																												case '\\':
+        																												case '_':
+        																												case 'a':
+        																												case 'b':
+        																												case 'c':
+        																												case 'd':
+        																												case 'e':
+        																												case 'f':
+        																												case 'g':
+        																												case 'h':
+        																												case 'i':
+        																												case 'j':
+        																												case 'k':
+        																												case 'l':
+        																												case 'm':
+        																												case 'n':
+        																												case 'o':
+        																												case 'p':
+        																												case 'q':
+        																												case 'r':
+        																												case 's':
+        																												case 't':
+        																												case 'u':
+        																												case 'v':
+        																												case 'w':
+        																												case 'x':
+        																												case 'y':
+        																												case 'z':
+        																												case '~':
+        																													{
+        																														alt12=174;
+        																													}
+        																												    break;
+
+        																												default:
+        																												    alt12=52;
+        																												}
+
+        																											}
+        																										    break;
+
+        																										default:
+        																										    alt12=174;
+        																										}
+
+        																									}
+        																								    break;
+
+        																								default:
+        																								    alt12=174;
+        																								}
+
+        																							}
+        																						    break;
+
+        																						default:
+        																						    alt12=174;
+        																						}
+
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=174;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+        														case 'M':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'O':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case 'D':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case 'E':
+        																					{
+        																						switch ( LA(12) )
+        																						{
+        																						case 'L':
+        																							{
+        																								switch ( LA(13) )
+        																								{
+        																								case '$':
+        																								case '\'':
+        																								case '0':
+        																								case '1':
+        																								case '2':
+        																								case '3':
+        																								case '4':
+        																								case '5':
+        																								case '6':
+        																								case '7':
+        																								case '8':
+        																								case '9':
+        																								case '?':
+        																								case 'A':
+        																								case 'B':
+        																								case 'C':
+        																								case 'D':
+        																								case 'E':
+        																								case 'F':
+        																								case 'G':
+        																								case 'H':
+        																								case 'I':
+        																								case 'J':
+        																								case 'K':
+        																								case 'L':
+        																								case 'M':
+        																								case 'N':
+        																								case 'O':
+        																								case 'P':
+        																								case 'Q':
+        																								case 'R':
+        																								case 'S':
+        																								case 'T':
+        																								case 'U':
+        																								case 'V':
+        																								case 'W':
+        																								case 'X':
+        																								case 'Y':
+        																								case 'Z':
+        																								case '\\':
+        																								case '_':
+        																								case 'a':
+        																								case 'b':
+        																								case 'c':
+        																								case 'd':
+        																								case 'e':
+        																								case 'f':
+        																								case 'g':
+        																								case 'h':
+        																								case 'i':
+        																								case 'j':
+        																								case 'k':
+        																								case 'l':
+        																								case 'm':
+        																								case 'n':
+        																								case 'o':
+        																								case 'p':
+        																								case 'q':
+        																								case 'r':
+        																								case 's':
+        																								case 't':
+        																								case 'u':
+        																								case 'v':
+        																								case 'w':
+        																								case 'x':
+        																								case 'y':
+        																								case 'z':
+        																								case '~':
+        																									{
+        																										alt12=174;
+        																									}
+        																								    break;
+
+        																								default:
+        																								    alt12=53;
+        																								}
+
+        																							}
+        																						    break;
+
+        																						default:
+        																						    alt12=174;
+        																						}
+
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=174;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case ',':
+        	{
+        		alt12=48;
+        	}
+            break;
+        case '@':
+        	{
+        		alt12=49;
+        	}
+            break;
+        case 'D':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'A':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'T':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'A':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'T':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'Y':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'P':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'E':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case '$':
+        																case '\'':
+        																case '0':
+        																case '1':
+        																case '2':
+        																case '3':
+        																case '4':
+        																case '5':
+        																case '6':
+        																case '7':
+        																case '8':
+        																case '9':
+        																case '?':
+        																case 'A':
+        																case 'B':
+        																case 'C':
+        																case 'D':
+        																case 'E':
+        																case 'F':
+        																case 'G':
+        																case 'H':
+        																case 'I':
+        																case 'J':
+        																case 'K':
+        																case 'L':
+        																case 'M':
+        																case 'N':
+        																case 'O':
+        																case 'P':
+        																case 'Q':
+        																case 'R':
+        																case 'S':
+        																case 'T':
+        																case 'U':
+        																case 'V':
+        																case 'W':
+        																case 'X':
+        																case 'Y':
+        																case 'Z':
+        																case '\\':
+        																case '_':
+        																case 'a':
+        																case 'b':
+        																case 'c':
+        																case 'd':
+        																case 'e':
+        																case 'f':
+        																case 'g':
+        																case 'h':
+        																case 'i':
+        																case 'j':
+        																case 'k':
+        																case 'l':
+        																case 'm':
+        																case 'n':
+        																case 'o':
+        																case 'p':
+        																case 'q':
+        																case 'r':
+        																case 's':
+        																case 't':
+        																case 'u':
+        																case 'v':
+        																case 'w':
+        																case 'x':
+        																case 'y':
+        																case 'z':
+        																case '~':
+        																	{
+        																		alt12=174;
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=54;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'B':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'G':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case '$':
+        						case '\'':
+        						case '0':
+        						case '1':
+        						case '2':
+        						case '3':
+        						case '4':
+        						case '5':
+        						case '6':
+        						case '7':
+        						case '8':
+        						case '9':
+        						case '?':
+        						case 'A':
+        						case 'B':
+        						case 'C':
+        						case 'D':
+        						case 'E':
+        						case 'F':
+        						case 'G':
+        						case 'H':
+        						case 'I':
+        						case 'J':
+        						case 'K':
+        						case 'L':
+        						case 'M':
+        						case 'N':
+        						case 'O':
+        						case 'P':
+        						case 'Q':
+        						case 'R':
+        						case 'S':
+        						case 'T':
+        						case 'U':
+        						case 'V':
+        						case 'W':
+        						case 'X':
+        						case 'Y':
+        						case 'Z':
+        						case '\\':
+        						case '_':
+        						case 'a':
+        						case 'b':
+        						case 'c':
+        						case 'd':
+        						case 'e':
+        						case 'f':
+        						case 'g':
+        						case 'h':
+        						case 'i':
+        						case 'j':
+        						case 'k':
+        						case 'l':
+        						case 'm':
+        						case 'n':
+        						case 'o':
+        						case 'p':
+        						case 'q':
+        						case 'r':
+        						case 's':
+        						case 't':
+        						case 'u':
+        						case 'v':
+        						case 'w':
+        						case 'x':
+        						case 'y':
+        						case 'z':
+        						case '~':
+        							{
+        								alt12=174;
+        							}
+        						    break;
+
+        						default:
+        						    alt12=55;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'I':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'S':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'T':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'I':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'N':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'C':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'T':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case '$':
+        																case '\'':
+        																case '0':
+        																case '1':
+        																case '2':
+        																case '3':
+        																case '4':
+        																case '5':
+        																case '6':
+        																case '7':
+        																case '8':
+        																case '9':
+        																case '?':
+        																case 'A':
+        																case 'B':
+        																case 'C':
+        																case 'D':
+        																case 'E':
+        																case 'F':
+        																case 'G':
+        																case 'H':
+        																case 'I':
+        																case 'J':
+        																case 'K':
+        																case 'L':
+        																case 'M':
+        																case 'N':
+        																case 'O':
+        																case 'P':
+        																case 'Q':
+        																case 'R':
+        																case 'S':
+        																case 'T':
+        																case 'U':
+        																case 'V':
+        																case 'W':
+        																case 'X':
+        																case 'Y':
+        																case 'Z':
+        																case '\\':
+        																case '_':
+        																case 'a':
+        																case 'b':
+        																case 'c':
+        																case 'd':
+        																case 'e':
+        																case 'f':
+        																case 'g':
+        																case 'h':
+        																case 'i':
+        																case 'j':
+        																case 'k':
+        																case 'l':
+        																case 'm':
+        																case 'n':
+        																case 'o':
+        																case 'p':
+        																case 'q':
+        																case 'r':
+        																case 's':
+        																case 't':
+        																case 'u':
+        																case 'v':
+        																case 'w':
+        																case 'x':
+        																case 'y':
+        																case 'z':
+        																case '~':
+        																	{
+        																		alt12=174;
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=57;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'V':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'I':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'S':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'I':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'B':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'L':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'E':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case '$':
+        																		case '\'':
+        																		case '0':
+        																		case '1':
+        																		case '2':
+        																		case '3':
+        																		case '4':
+        																		case '5':
+        																		case '6':
+        																		case '7':
+        																		case '8':
+        																		case '9':
+        																		case '?':
+        																		case 'A':
+        																		case 'B':
+        																		case 'C':
+        																		case 'D':
+        																		case 'E':
+        																		case 'F':
+        																		case 'G':
+        																		case 'H':
+        																		case 'I':
+        																		case 'J':
+        																		case 'K':
+        																		case 'L':
+        																		case 'M':
+        																		case 'N':
+        																		case 'O':
+        																		case 'P':
+        																		case 'Q':
+        																		case 'R':
+        																		case 'S':
+        																		case 'T':
+        																		case 'U':
+        																		case 'V':
+        																		case 'W':
+        																		case 'X':
+        																		case 'Y':
+        																		case 'Z':
+        																		case '\\':
+        																		case '_':
+        																		case 'a':
+        																		case 'b':
+        																		case 'c':
+        																		case 'd':
+        																		case 'e':
+        																		case 'f':
+        																		case 'g':
+        																		case 'h':
+        																		case 'i':
+        																		case 'j':
+        																		case 'k':
+        																		case 'l':
+        																		case 'm':
+        																		case 'n':
+        																		case 'o':
+        																		case 'p':
+        																		case 'q':
+        																		case 'r':
+        																		case 's':
+        																		case 't':
+        																		case 'u':
+        																		case 'v':
+        																		case 'w':
+        																		case 'x':
+        																		case 'y':
+        																		case 'z':
+        																		case '~':
+        																			{
+        																				alt12=174;
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=58;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case '$':
+        						case '\'':
+        						case '0':
+        						case '1':
+        						case '2':
+        						case '3':
+        						case '4':
+        						case '5':
+        						case '6':
+        						case '7':
+        						case '8':
+        						case '9':
+        						case '?':
+        						case 'A':
+        						case 'B':
+        						case 'C':
+        						case 'D':
+        						case 'E':
+        						case 'F':
+        						case 'G':
+        						case 'H':
+        						case 'J':
+        						case 'K':
+        						case 'L':
+        						case 'M':
+        						case 'N':
+        						case 'O':
+        						case 'P':
+        						case 'Q':
+        						case 'R':
+        						case 'S':
+        						case 'T':
+        						case 'U':
+        						case 'V':
+        						case 'W':
+        						case 'X':
+        						case 'Y':
+        						case 'Z':
+        						case '\\':
+        						case '_':
+        						case 'a':
+        						case 'b':
+        						case 'c':
+        						case 'd':
+        						case 'e':
+        						case 'f':
+        						case 'g':
+        						case 'h':
+        						case 'i':
+        						case 'j':
+        						case 'k':
+        						case 'l':
+        						case 'm':
+        						case 'n':
+        						case 'o':
+        						case 'p':
+        						case 'q':
+        						case 'r':
+        						case 's':
+        						case 't':
+        						case 'u':
+        						case 'v':
+        						case 'w':
+        						case 'x':
+        						case 'y':
+        						case 'z':
+        						case '~':
+        							{
+        								alt12=174;
+        							}
+        						    break;
+
+        						default:
+        						    alt12=96;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'U':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'M':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'P':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case '_':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'A':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'S':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'S':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'U':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case 'M':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case 'P':
+        																					{
+        																						switch ( LA(12) )
+        																						{
+        																						case 'T':
+        																							{
+        																								switch ( LA(13) )
+        																								{
+        																								case 'I':
+        																									{
+        																										switch ( LA(14) )
+        																										{
+        																										case 'O':
+        																											{
+        																												switch ( LA(15) )
+        																												{
+        																												case 'N':
+        																													{
+        																														switch ( LA(16) )
+        																														{
+        																														case 'S':
+        																															{
+        																																switch ( LA(17) )
+        																																{
+        																																case '$':
+        																																case '\'':
+        																																case '0':
+        																																case '1':
+        																																case '2':
+        																																case '3':
+        																																case '4':
+        																																case '5':
+        																																case '6':
+        																																case '7':
+        																																case '8':
+        																																case '9':
+        																																case '?':
+        																																case 'A':
+        																																case 'B':
+        																																case 'C':
+        																																case 'D':
+        																																case 'E':
+        																																case 'F':
+        																																case 'G':
+        																																case 'H':
+        																																case 'I':
+        																																case 'J':
+        																																case 'K':
+        																																case 'L':
+        																																case 'M':
+        																																case 'N':
+        																																case 'O':
+        																																case 'P':
+        																																case 'Q':
+        																																case 'R':
+        																																case 'S':
+        																																case 'T':
+        																																case 'U':
+        																																case 'V':
+        																																case 'W':
+        																																case 'X':
+        																																case 'Y':
+        																																case 'Z':
+        																																case '\\':
+        																																case '_':
+        																																case 'a':
+        																																case 'b':
+        																																case 'c':
+        																																case 'd':
+        																																case 'e':
+        																																case 'f':
+        																																case 'g':
+        																																case 'h':
+        																																case 'i':
+        																																case 'j':
+        																																case 'k':
+        																																case 'l':
+        																																case 'm':
+        																																case 'n':
+        																																case 'o':
+        																																case 'p':
+        																																case 'q':
+        																																case 'r':
+        																																case 's':
+        																																case 't':
+        																																case 'u':
+        																																case 'v':
+        																																case 'w':
+        																																case 'x':
+        																																case 'y':
+        																																case 'z':
+        																																case '~':
+        																																	{
+        																																		alt12=174;
+        																																	}
+        																																    break;
+
+        																																default:
+        																																    alt12=60;
+        																																}
+
+        																															}
+        																														    break;
+
+        																														default:
+        																														    alt12=174;
+        																														}
+
+        																													}
+        																												    break;
+
+        																												default:
+        																												    alt12=174;
+        																												}
+
+        																											}
+        																										    break;
+
+        																										default:
+        																										    alt12=174;
+        																										}
+
+        																									}
+        																								    break;
+
+        																								default:
+        																								    alt12=174;
+        																								}
+
+        																							}
+        																						    break;
+
+        																						default:
+        																						    alt12=174;
+        																						}
+
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=174;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+        										case 'C':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'L':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'O':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'S':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case 'U':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case 'R':
+        																					{
+        																						switch ( LA(12) )
+        																						{
+        																						case 'E':
+        																							{
+        																								switch ( LA(13) )
+        																								{
+        																								case '_':
+        																									{
+        																										switch ( LA(14) )
+        																										{
+        																										case 'P':
+        																											{
+        																												switch ( LA(15) )
+        																												{
+        																												case 'R':
+        																													{
+        																														switch ( LA(16) )
+        																														{
+        																														case 'O':
+        																															{
+        																																switch ( LA(17) )
+        																																{
+        																																case 'O':
+        																																	{
+        																																		switch ( LA(18) )
+        																																		{
+        																																		case 'F':
+        																																			{
+        																																				switch ( LA(19) )
+        																																				{
+        																																				case '$':
+        																																				case '\'':
+        																																				case '0':
+        																																				case '1':
+        																																				case '2':
+        																																				case '3':
+        																																				case '4':
+        																																				case '5':
+        																																				case '6':
+        																																				case '7':
+        																																				case '8':
+        																																				case '9':
+        																																				case '?':
+        																																				case 'A':
+        																																				case 'B':
+        																																				case 'C':
+        																																				case 'D':
+        																																				case 'E':
+        																																				case 'F':
+        																																				case 'G':
+        																																				case 'H':
+        																																				case 'I':
+        																																				case 'J':
+        																																				case 'K':
+        																																				case 'L':
+        																																				case 'M':
+        																																				case 'N':
+        																																				case 'O':
+        																																				case 'P':
+        																																				case 'Q':
+        																																				case 'R':
+        																																				case 'S':
+        																																				case 'T':
+        																																				case 'U':
+        																																				case 'V':
+        																																				case 'W':
+        																																				case 'X':
+        																																				case 'Y':
+        																																				case 'Z':
+        																																				case '\\':
+        																																				case '_':
+        																																				case 'a':
+        																																				case 'b':
+        																																				case 'c':
+        																																				case 'd':
+        																																				case 'e':
+        																																				case 'f':
+        																																				case 'g':
+        																																				case 'h':
+        																																				case 'i':
+        																																				case 'j':
+        																																				case 'k':
+        																																				case 'l':
+        																																				case 'm':
+        																																				case 'n':
+        																																				case 'o':
+        																																				case 'p':
+        																																				case 'q':
+        																																				case 'r':
+        																																				case 's':
+        																																				case 't':
+        																																				case 'u':
+        																																				case 'v':
+        																																				case 'w':
+        																																				case 'x':
+        																																				case 'y':
+        																																				case 'z':
+        																																				case '~':
+        																																					{
+        																																						alt12=174;
+        																																					}
+        																																				    break;
+
+        																																				default:
+        																																				    alt12=61;
+        																																				}
+
+        																																			}
+        																																		    break;
+
+        																																		default:
+        																																		    alt12=174;
+        																																		}
+
+        																																	}
+        																																    break;
+
+        																																default:
+        																																    alt12=174;
+        																																}
+
+        																															}
+        																														    break;
+
+        																														default:
+        																														    alt12=174;
+        																														}
+
+        																													}
+        																												    break;
+
+        																												default:
+        																												    alt12=174;
+        																												}
+
+        																											}
+        																										    break;
+
+        																										default:
+        																										    alt12=174;
+        																										}
+
+        																									}
+        																								    break;
+        																								case '$':
+        																								case '\'':
+        																								case '0':
+        																								case '1':
+        																								case '2':
+        																								case '3':
+        																								case '4':
+        																								case '5':
+        																								case '6':
+        																								case '7':
+        																								case '8':
+        																								case '9':
+        																								case '?':
+        																								case 'A':
+        																								case 'B':
+        																								case 'C':
+        																								case 'D':
+        																								case 'E':
+        																								case 'F':
+        																								case 'G':
+        																								case 'H':
+        																								case 'I':
+        																								case 'J':
+        																								case 'K':
+        																								case 'L':
+        																								case 'M':
+        																								case 'N':
+        																								case 'O':
+        																								case 'P':
+        																								case 'Q':
+        																								case 'R':
+        																								case 'S':
+        																								case 'T':
+        																								case 'U':
+        																								case 'V':
+        																								case 'W':
+        																								case 'X':
+        																								case 'Y':
+        																								case 'Z':
+        																								case '\\':
+        																								case 'a':
+        																								case 'b':
+        																								case 'c':
+        																								case 'd':
+        																								case 'e':
+        																								case 'f':
+        																								case 'g':
+        																								case 'h':
+        																								case 'i':
+        																								case 'j':
+        																								case 'k':
+        																								case 'l':
+        																								case 'm':
+        																								case 'n':
+        																								case 'o':
+        																								case 'p':
+        																								case 'q':
+        																								case 'r':
+        																								case 's':
+        																								case 't':
+        																								case 'u':
+        																								case 'v':
+        																								case 'w':
+        																								case 'x':
+        																								case 'y':
+        																								case 'z':
+        																								case '~':
+        																									{
+        																										alt12=174;
+        																									}
+        																								    break;
+
+        																								default:
+        																								    alt12=62;
+        																								}
+
+        																							}
+        																						    break;
+
+        																						default:
+        																						    alt12=174;
+        																						}
+
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=174;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+        										case 'P':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'R':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'O':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'O':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case 'F':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case '$':
+        																				case '\'':
+        																				case '0':
+        																				case '1':
+        																				case '2':
+        																				case '3':
+        																				case '4':
+        																				case '5':
+        																				case '6':
+        																				case '7':
+        																				case '8':
+        																				case '9':
+        																				case '?':
+        																				case 'A':
+        																				case 'B':
+        																				case 'C':
+        																				case 'D':
+        																				case 'E':
+        																				case 'F':
+        																				case 'G':
+        																				case 'H':
+        																				case 'I':
+        																				case 'J':
+        																				case 'K':
+        																				case 'L':
+        																				case 'M':
+        																				case 'N':
+        																				case 'O':
+        																				case 'P':
+        																				case 'Q':
+        																				case 'R':
+        																				case 'S':
+        																				case 'T':
+        																				case 'U':
+        																				case 'V':
+        																				case 'W':
+        																				case 'X':
+        																				case 'Y':
+        																				case 'Z':
+        																				case '\\':
+        																				case '_':
+        																				case 'a':
+        																				case 'b':
+        																				case 'c':
+        																				case 'd':
+        																				case 'e':
+        																				case 'f':
+        																				case 'g':
+        																				case 'h':
+        																				case 'i':
+        																				case 'j':
+        																				case 'k':
+        																				case 'l':
+        																				case 'm':
+        																				case 'n':
+        																				case 'o':
+        																				case 'p':
+        																				case 'q':
+        																				case 'r':
+        																				case 's':
+        																				case 't':
+        																				case 'u':
+        																				case 'v':
+        																				case 'w':
+        																				case 'x':
+        																				case 'y':
+        																				case 'z':
+        																				case '~':
+        																					{
+        																						alt12=174;
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=63;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+        										case 'S':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'I':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'G':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case '$':
+        																case '\'':
+        																case '0':
+        																case '1':
+        																case '2':
+        																case '3':
+        																case '4':
+        																case '5':
+        																case '6':
+        																case '7':
+        																case '8':
+        																case '9':
+        																case '?':
+        																case 'A':
+        																case 'B':
+        																case 'C':
+        																case 'D':
+        																case 'E':
+        																case 'F':
+        																case 'G':
+        																case 'H':
+        																case 'I':
+        																case 'J':
+        																case 'K':
+        																case 'L':
+        																case 'M':
+        																case 'N':
+        																case 'O':
+        																case 'P':
+        																case 'Q':
+        																case 'R':
+        																case 'S':
+        																case 'T':
+        																case 'U':
+        																case 'V':
+        																case 'W':
+        																case 'X':
+        																case 'Y':
+        																case 'Z':
+        																case '\\':
+        																case '_':
+        																case 'a':
+        																case 'b':
+        																case 'c':
+        																case 'd':
+        																case 'e':
+        																case 'f':
+        																case 'g':
+        																case 'h':
+        																case 'i':
+        																case 'j':
+        																case 'k':
+        																case 'l':
+        																case 'm':
+        																case 'n':
+        																case 'o':
+        																case 'p':
+        																case 'q':
+        																case 'r':
+        																case 's':
+        																case 't':
+        																case 'u':
+        																case 'v':
+        																case 'w':
+        																case 'x':
+        																case 'y':
+        																case 'z':
+        																case '~':
+        																	{
+        																		alt12=174;
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=64;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+        										case 'T':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'C':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'C':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case '_':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case 'A':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case 'S':
+        																					{
+        																						switch ( LA(12) )
+        																						{
+        																						case 'S':
+        																							{
+        																								switch ( LA(13) )
+        																								{
+        																								case 'U':
+        																									{
+        																										switch ( LA(14) )
+        																										{
+        																										case 'M':
+        																											{
+        																												switch ( LA(15) )
+        																												{
+        																												case 'P':
+        																													{
+        																														switch ( LA(16) )
+        																														{
+        																														case 'T':
+        																															{
+        																																switch ( LA(17) )
+        																																{
+        																																case 'I':
+        																																	{
+        																																		switch ( LA(18) )
+        																																		{
+        																																		case 'O':
+        																																			{
+        																																				switch ( LA(19) )
+        																																				{
+        																																				case 'N':
+        																																					{
+        																																						switch ( LA(20) )
+        																																						{
+        																																						case 'S':
+        																																							{
+        																																								switch ( LA(21) )
+        																																								{
+        																																								case '$':
+        																																								case '\'':
+        																																								case '0':
+        																																								case '1':
+        																																								case '2':
+        																																								case '3':
+        																																								case '4':
+        																																								case '5':
+        																																								case '6':
+        																																								case '7':
+        																																								case '8':
+        																																								case '9':
+        																																								case '?':
+        																																								case 'A':
+        																																								case 'B':
+        																																								case 'C':
+        																																								case 'D':
+        																																								case 'E':
+        																																								case 'F':
+        																																								case 'G':
+        																																								case 'H':
+        																																								case 'I':
+        																																								case 'J':
+        																																								case 'K':
+        																																								case 'L':
+        																																								case 'M':
+        																																								case 'N':
+        																																								case 'O':
+        																																								case 'P':
+        																																								case 'Q':
+        																																								case 'R':
+        																																								case 'S':
+        																																								case 'T':
+        																																								case 'U':
+        																																								case 'V':
+        																																								case 'W':
+        																																								case 'X':
+        																																								case 'Y':
+        																																								case 'Z':
+        																																								case '\\':
+        																																								case '_':
+        																																								case 'a':
+        																																								case 'b':
+        																																								case 'c':
+        																																								case 'd':
+        																																								case 'e':
+        																																								case 'f':
+        																																								case 'g':
+        																																								case 'h':
+        																																								case 'i':
+        																																								case 'j':
+        																																								case 'k':
+        																																								case 'l':
+        																																								case 'm':
+        																																								case 'n':
+        																																								case 'o':
+        																																								case 'p':
+        																																								case 'q':
+        																																								case 'r':
+        																																								case 's':
+        																																								case 't':
+        																																								case 'u':
+        																																								case 'v':
+        																																								case 'w':
+        																																								case 'x':
+        																																								case 'y':
+        																																								case 'z':
+        																																								case '~':
+        																																									{
+        																																										alt12=174;
+        																																									}
+        																																								    break;
+
+        																																								default:
+        																																								    alt12=65;
+        																																								}
+
+        																																							}
+        																																						    break;
+
+        																																						default:
+        																																						    alt12=174;
+        																																						}
+
+        																																					}
+        																																				    break;
+
+        																																				default:
+        																																				    alt12=174;
+        																																				}
+
+        																																			}
+        																																		    break;
+
+        																																		default:
+        																																		    alt12=174;
+        																																		}
+
+        																																	}
+        																																    break;
+
+        																																default:
+        																																    alt12=174;
+        																																}
+
+        																															}
+        																														    break;
+
+        																														default:
+        																														    alt12=174;
+        																														}
+
+        																													}
+        																												    break;
+
+        																												default:
+        																												    alt12=174;
+        																												}
+
+        																											}
+        																										    break;
+
+        																										default:
+        																										    alt12=174;
+        																										}
+
+        																									}
+        																								    break;
+
+        																								default:
+        																								    alt12=174;
+        																								}
+
+        																							}
+        																						    break;
+
+        																						default:
+        																						    alt12=174;
+        																						}
+
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=174;
+        																				}
+
+        																			}
+        																		    break;
+        																		case 'P':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case 'R':
+        																					{
+        																						switch ( LA(12) )
+        																						{
+        																						case 'O':
+        																							{
+        																								switch ( LA(13) )
+        																								{
+        																								case 'O':
+        																									{
+        																										switch ( LA(14) )
+        																										{
+        																										case 'F':
+        																											{
+        																												switch ( LA(15) )
+        																												{
+        																												case '$':
+        																												case '\'':
+        																												case '0':
+        																												case '1':
+        																												case '2':
+        																												case '3':
+        																												case '4':
+        																												case '5':
+        																												case '6':
+        																												case '7':
+        																												case '8':
+        																												case '9':
+        																												case '?':
+        																												case 'A':
+        																												case 'B':
+        																												case 'C':
+        																												case 'D':
+        																												case 'E':
+        																												case 'F':
+        																												case 'G':
+        																												case 'H':
+        																												case 'I':
+        																												case 'J':
+        																												case 'K':
+        																												case 'L':
+        																												case 'M':
+        																												case 'N':
+        																												case 'O':
+        																												case 'P':
+        																												case 'Q':
+        																												case 'R':
+        																												case 'S':
+        																												case 'T':
+        																												case 'U':
+        																												case 'V':
+        																												case 'W':
+        																												case 'X':
+        																												case 'Y':
+        																												case 'Z':
+        																												case '\\':
+        																												case '_':
+        																												case 'a':
+        																												case 'b':
+        																												case 'c':
+        																												case 'd':
+        																												case 'e':
+        																												case 'f':
+        																												case 'g':
+        																												case 'h':
+        																												case 'i':
+        																												case 'j':
+        																												case 'k':
+        																												case 'l':
+        																												case 'm':
+        																												case 'n':
+        																												case 'o':
+        																												case 'p':
+        																												case 'q':
+        																												case 'r':
+        																												case 's':
+        																												case 't':
+        																												case 'u':
+        																												case 'v':
+        																												case 'w':
+        																												case 'x':
+        																												case 'y':
+        																												case 'z':
+        																												case '~':
+        																													{
+        																														alt12=174;
+        																													}
+        																												    break;
+
+        																												default:
+        																												    alt12=66;
+        																												}
+
+        																											}
+        																										    break;
+
+        																										default:
+        																										    alt12=174;
+        																										}
+
+        																									}
+        																								    break;
+
+        																								default:
+        																								    alt12=174;
+        																								}
+
+        																							}
+        																						    break;
+
+        																						default:
+        																						    alt12=174;
+        																						}
+
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=174;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+        																case '$':
+        																case '\'':
+        																case '0':
+        																case '1':
+        																case '2':
+        																case '3':
+        																case '4':
+        																case '5':
+        																case '6':
+        																case '7':
+        																case '8':
+        																case '9':
+        																case '?':
+        																case 'A':
+        																case 'B':
+        																case 'C':
+        																case 'D':
+        																case 'E':
+        																case 'F':
+        																case 'G':
+        																case 'H':
+        																case 'I':
+        																case 'J':
+        																case 'K':
+        																case 'L':
+        																case 'M':
+        																case 'N':
+        																case 'O':
+        																case 'P':
+        																case 'Q':
+        																case 'R':
+        																case 'S':
+        																case 'T':
+        																case 'U':
+        																case 'V':
+        																case 'W':
+        																case 'X':
+        																case 'Y':
+        																case 'Z':
+        																case '\\':
+        																case 'a':
+        																case 'b':
+        																case 'c':
+        																case 'd':
+        																case 'e':
+        																case 'f':
+        																case 'g':
+        																case 'h':
+        																case 'i':
+        																case 'j':
+        																case 'k':
+        																case 'l':
+        																case 'm':
+        																case 'n':
+        																case 'o':
+        																case 'p':
+        																case 'q':
+        																case 'r':
+        																case 's':
+        																case 't':
+        																case 'u':
+        																case 'v':
+        																case 'w':
+        																case 'x':
+        																case 'y':
+        																case 'z':
+        																case '~':
+        																	{
+        																		alt12=174;
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=67;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+        										case 'U':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'N':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'S':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'A':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case 'T':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case '_':
+        																					{
+        																						switch ( LA(12) )
+        																						{
+        																						case 'C':
+        																							{
+        																								switch ( LA(13) )
+        																								{
+        																								case 'O':
+        																									{
+        																										switch ( LA(14) )
+        																										{
+        																										case 'R':
+        																											{
+        																												switch ( LA(15) )
+        																												{
+        																												case 'E':
+        																													{
+        																														switch ( LA(16) )
+        																														{
+        																														case '$':
+        																														case '\'':
+        																														case '0':
+        																														case '1':
+        																														case '2':
+        																														case '3':
+        																														case '4':
+        																														case '5':
+        																														case '6':
+        																														case '7':
+        																														case '8':
+        																														case '9':
+        																														case '?':
+        																														case 'A':
+        																														case 'B':
+        																														case 'C':
+        																														case 'D':
+        																														case 'E':
+        																														case 'F':
+        																														case 'G':
+        																														case 'H':
+        																														case 'I':
+        																														case 'J':
+        																														case 'K':
+        																														case 'L':
+        																														case 'M':
+        																														case 'N':
+        																														case 'O':
+        																														case 'P':
+        																														case 'Q':
+        																														case 'R':
+        																														case 'S':
+        																														case 'T':
+        																														case 'U':
+        																														case 'V':
+        																														case 'W':
+        																														case 'X':
+        																														case 'Y':
+        																														case 'Z':
+        																														case '\\':
+        																														case '_':
+        																														case 'a':
+        																														case 'b':
+        																														case 'c':
+        																														case 'd':
+        																														case 'e':
+        																														case 'f':
+        																														case 'g':
+        																														case 'h':
+        																														case 'i':
+        																														case 'j':
+        																														case 'k':
+        																														case 'l':
+        																														case 'm':
+        																														case 'n':
+        																														case 'o':
+        																														case 'p':
+        																														case 'q':
+        																														case 'r':
+        																														case 's':
+        																														case 't':
+        																														case 'u':
+        																														case 'v':
+        																														case 'w':
+        																														case 'x':
+        																														case 'y':
+        																														case 'z':
+        																														case '~':
+        																															{
+        																																alt12=174;
+        																															}
+        																														    break;
+
+        																														default:
+        																														    alt12=68;
+        																														}
+
+        																													}
+        																												    break;
+
+        																												default:
+        																												    alt12=174;
+        																												}
+
+        																											}
+        																										    break;
+
+        																										default:
+        																										    alt12=174;
+        																										}
+
+        																									}
+        																								    break;
+
+        																								default:
+        																								    alt12=174;
+        																								}
+
+        																							}
+        																						    break;
+
+        																						default:
+        																						    alt12=174;
+        																						}
+
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=174;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case '/':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case '=':
+        			{
+        				alt12=56;
+        			}
+        		    break;
+
+        		default:
+        		    alt12=59;
+        		}
+
+        	}
+            break;
+        case 'E':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'C':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'H':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'O':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case '$':
+        								case '\'':
+        								case '0':
+        								case '1':
+        								case '2':
+        								case '3':
+        								case '4':
+        								case '5':
+        								case '6':
+        								case '7':
+        								case '8':
+        								case '9':
+        								case '?':
+        								case 'A':
+        								case 'B':
+        								case 'C':
+        								case 'D':
+        								case 'E':
+        								case 'F':
+        								case 'G':
+        								case 'H':
+        								case 'I':
+        								case 'J':
+        								case 'K':
+        								case 'L':
+        								case 'M':
+        								case 'N':
+        								case 'O':
+        								case 'P':
+        								case 'Q':
+        								case 'R':
+        								case 'S':
+        								case 'T':
+        								case 'U':
+        								case 'V':
+        								case 'W':
+        								case 'X':
+        								case 'Y':
+        								case 'Z':
+        								case '\\':
+        								case '_':
+        								case 'a':
+        								case 'b':
+        								case 'c':
+        								case 'd':
+        								case 'e':
+        								case 'f':
+        								case 'g':
+        								case 'h':
+        								case 'i':
+        								case 'j':
+        								case 'k':
+        								case 'l':
+        								case 'm':
+        								case 'n':
+        								case 'o':
+        								case 'p':
+        								case 'q':
+        								case 'r':
+        								case 's':
+        								case 't':
+        								case 'u':
+        								case 'v':
+        								case 'w':
+        								case 'x':
+        								case 'y':
+        								case 'z':
+        								case '~':
+        									{
+        										alt12=174;
+        									}
+        								    break;
+
+        								default:
+        								    alt12=69;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'L':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'S':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'I':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'F':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'T':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case '_':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=70;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case 'E':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case '$':
+        								case '\'':
+        								case '0':
+        								case '1':
+        								case '2':
+        								case '3':
+        								case '4':
+        								case '5':
+        								case '6':
+        								case '7':
+        								case '8':
+        								case '9':
+        								case '?':
+        								case 'A':
+        								case 'B':
+        								case 'C':
+        								case 'D':
+        								case 'E':
+        								case 'F':
+        								case 'G':
+        								case 'H':
+        								case 'I':
+        								case 'J':
+        								case 'K':
+        								case 'L':
+        								case 'M':
+        								case 'N':
+        								case 'O':
+        								case 'P':
+        								case 'Q':
+        								case 'R':
+        								case 'S':
+        								case 'T':
+        								case 'U':
+        								case 'V':
+        								case 'W':
+        								case 'X':
+        								case 'Y':
+        								case 'Z':
+        								case '\\':
+        								case '_':
+        								case 'a':
+        								case 'b':
+        								case 'c':
+        								case 'd':
+        								case 'e':
+        								case 'f':
+        								case 'g':
+        								case 'h':
+        								case 'i':
+        								case 'j':
+        								case 'k':
+        								case 'l':
+        								case 'm':
+        								case 'n':
+        								case 'o':
+        								case 'p':
+        								case 'q':
+        								case 'r':
+        								case 's':
+        								case 't':
+        								case 'u':
+        								case 'v':
+        								case 'w':
+        								case 'x':
+        								case 'y':
+        								case 'z':
+        								case '~':
+        									{
+        										alt12=174;
+        									}
+        								    break;
+
+        								default:
+        								    alt12=71;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'N':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'D':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'I':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'F':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'T':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case '_':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=72;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case '$':
+        						case '\'':
+        						case '0':
+        						case '1':
+        						case '2':
+        						case '3':
+        						case '4':
+        						case '5':
+        						case '6':
+        						case '7':
+        						case '8':
+        						case '9':
+        						case '?':
+        						case 'A':
+        						case 'B':
+        						case 'C':
+        						case 'D':
+        						case 'E':
+        						case 'F':
+        						case 'G':
+        						case 'H':
+        						case 'J':
+        						case 'K':
+        						case 'L':
+        						case 'M':
+        						case 'N':
+        						case 'O':
+        						case 'P':
+        						case 'Q':
+        						case 'R':
+        						case 'S':
+        						case 'T':
+        						case 'U':
+        						case 'V':
+        						case 'W':
+        						case 'X':
+        						case 'Y':
+        						case 'Z':
+        						case '\\':
+        						case '_':
+        						case 'a':
+        						case 'b':
+        						case 'c':
+        						case 'd':
+        						case 'e':
+        						case 'f':
+        						case 'g':
+        						case 'h':
+        						case 'i':
+        						case 'j':
+        						case 'k':
+        						case 'l':
+        						case 'm':
+        						case 'n':
+        						case 'o':
+        						case 'p':
+        						case 'q':
+        						case 'r':
+        						case 's':
+        						case 't':
+        						case 'u':
+        						case 'v':
+        						case 'w':
+        						case 'x':
+        						case 'y':
+        						case 'z':
+        						case '~':
+        							{
+        								alt12=174;
+        							}
+        						    break;
+
+        						default:
+        						    alt12=73;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'X':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'I':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'S':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'T':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'S':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=75;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case 'T':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case '$':
+        								case '\'':
+        								case '0':
+        								case '1':
+        								case '2':
+        								case '3':
+        								case '4':
+        								case '5':
+        								case '6':
+        								case '7':
+        								case '8':
+        								case '9':
+        								case '?':
+        								case 'A':
+        								case 'B':
+        								case 'C':
+        								case 'D':
+        								case 'E':
+        								case 'F':
+        								case 'G':
+        								case 'H':
+        								case 'I':
+        								case 'J':
+        								case 'K':
+        								case 'L':
+        								case 'M':
+        								case 'N':
+        								case 'O':
+        								case 'P':
+        								case 'Q':
+        								case 'R':
+        								case 'S':
+        								case 'T':
+        								case 'U':
+        								case 'V':
+        								case 'W':
+        								case 'X':
+        								case 'Y':
+        								case 'Z':
+        								case '\\':
+        								case '_':
+        								case 'a':
+        								case 'b':
+        								case 'c':
+        								case 'd':
+        								case 'e':
+        								case 'f':
+        								case 'g':
+        								case 'h':
+        								case 'i':
+        								case 'j':
+        								case 'k':
+        								case 'l':
+        								case 'm':
+        								case 'n':
+        								case 'o':
+        								case 'p':
+        								case 'q':
+        								case 'r':
+        								case 's':
+        								case 't':
+        								case 'u':
+        								case 'v':
+        								case 'w':
+        								case 'x':
+        								case 'y':
+        								case 'z':
+        								case '~':
+        									{
+        										alt12=174;
+        									}
+        								    break;
+
+        								default:
+        								    alt12=76;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case '=':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case '>':
+        			{
+        				alt12=94;
+        			}
+        		    break;
+
+        		default:
+        		    alt12=74;
+        		}
+
+        	}
+            break;
+        case '^':
+        	{
+        		alt12=77;
+        	}
+            break;
+        case 'F':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'A':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'L':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'S':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'E':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'T':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case '_':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=78;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'L':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'O':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'O':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'R':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'T':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case '_':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=79;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'O':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'R':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'A':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'L':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'L':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=81;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case 'G':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'E':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'T':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=82;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case 'H':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'A':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'S':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case '_':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'C':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'A':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'R':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'D':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case '$':
+        																case '\'':
+        																case '0':
+        																case '1':
+        																case '2':
+        																case '3':
+        																case '4':
+        																case '5':
+        																case '6':
+        																case '7':
+        																case '8':
+        																case '9':
+        																case '?':
+        																case 'A':
+        																case 'B':
+        																case 'C':
+        																case 'D':
+        																case 'E':
+        																case 'F':
+        																case 'G':
+        																case 'H':
+        																case 'I':
+        																case 'J':
+        																case 'K':
+        																case 'L':
+        																case 'M':
+        																case 'N':
+        																case 'O':
+        																case 'P':
+        																case 'Q':
+        																case 'R':
+        																case 'S':
+        																case 'T':
+        																case 'U':
+        																case 'V':
+        																case 'W':
+        																case 'X':
+        																case 'Y':
+        																case 'Z':
+        																case '\\':
+        																case '_':
+        																case 'a':
+        																case 'b':
+        																case 'c':
+        																case 'd':
+        																case 'e':
+        																case 'f':
+        																case 'g':
+        																case 'h':
+        																case 'i':
+        																case 'j':
+        																case 'k':
+        																case 'l':
+        																case 'm':
+        																case 'n':
+        																case 'o':
+        																case 'p':
+        																case 'q':
+        																case 'r':
+        																case 's':
+        																case 't':
+        																case 'u':
+        																case 'v':
+        																case 'w':
+        																case 'x':
+        																case 'y':
+        																case 'z':
+        																case '~':
+        																	{
+        																		alt12=174;
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=80;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'E':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'L':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'P':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case '$':
+        								case '\'':
+        								case '0':
+        								case '1':
+        								case '2':
+        								case '3':
+        								case '4':
+        								case '5':
+        								case '6':
+        								case '7':
+        								case '8':
+        								case '9':
+        								case '?':
+        								case 'A':
+        								case 'B':
+        								case 'C':
+        								case 'D':
+        								case 'E':
+        								case 'F':
+        								case 'G':
+        								case 'H':
+        								case 'I':
+        								case 'J':
+        								case 'K':
+        								case 'L':
+        								case 'M':
+        								case 'N':
+        								case 'O':
+        								case 'P':
+        								case 'Q':
+        								case 'R':
+        								case 'S':
+        								case 'T':
+        								case 'U':
+        								case 'V':
+        								case 'W':
+        								case 'X':
+        								case 'Y':
+        								case 'Z':
+        								case '\\':
+        								case '_':
+        								case 'a':
+        								case 'b':
+        								case 'c':
+        								case 'd':
+        								case 'e':
+        								case 'f':
+        								case 'g':
+        								case 'h':
+        								case 'i':
+        								case 'j':
+        								case 'k':
+        								case 'l':
+        								case 'm':
+        								case 'n':
+        								case 'o':
+        								case 'p':
+        								case 'q':
+        								case 'r':
+        								case 's':
+        								case 't':
+        								case 'u':
+        								case 'v':
+        								case 'w':
+        								case 'x':
+        								case 'y':
+        								case 'z':
+        								case '~':
+        									{
+        										alt12=174;
+        									}
+        								    break;
+
+        								default:
+        								    alt12=91;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case '>':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case '=':
+        			{
+        				alt12=83;
+        			}
+        		    break;
+        		case '>':
+        			{
+        				alt12=134;
+        			}
+        		    break;
+
+        		default:
+        		    alt12=88;
+        		}
+
+        	}
+            break;
+        case 'G':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'E':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'T':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case '_':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'C':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'H':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'I':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'L':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'D':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case '$':
+        																		case '\'':
+        																		case '0':
+        																		case '1':
+        																		case '2':
+        																		case '3':
+        																		case '4':
+        																		case '5':
+        																		case '6':
+        																		case '7':
+        																		case '8':
+        																		case '9':
+        																		case '?':
+        																		case 'A':
+        																		case 'B':
+        																		case 'C':
+        																		case 'D':
+        																		case 'E':
+        																		case 'F':
+        																		case 'G':
+        																		case 'H':
+        																		case 'I':
+        																		case 'J':
+        																		case 'K':
+        																		case 'L':
+        																		case 'M':
+        																		case 'N':
+        																		case 'O':
+        																		case 'P':
+        																		case 'Q':
+        																		case 'R':
+        																		case 'S':
+        																		case 'T':
+        																		case 'U':
+        																		case 'V':
+        																		case 'W':
+        																		case 'X':
+        																		case 'Y':
+        																		case 'Z':
+        																		case '\\':
+        																		case '_':
+        																		case 'a':
+        																		case 'b':
+        																		case 'c':
+        																		case 'd':
+        																		case 'e':
+        																		case 'f':
+        																		case 'g':
+        																		case 'h':
+        																		case 'i':
+        																		case 'j':
+        																		case 'k':
+        																		case 'l':
+        																		case 'm':
+        																		case 'n':
+        																		case 'o':
+        																		case 'p':
+        																		case 'q':
+        																		case 'r':
+        																		case 's':
+        																		case 't':
+        																		case 'u':
+        																		case 'v':
+        																		case 'w':
+        																		case 'x':
+        																		case 'y':
+        																		case 'z':
+        																		case '~':
+        																			{
+        																				alt12=174;
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=84;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+        								case 'O':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'P':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=85;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+        								case 'T':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'Y':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'P':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'E':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case '$':
+        																case '\'':
+        																case '0':
+        																case '1':
+        																case '2':
+        																case '3':
+        																case '4':
+        																case '5':
+        																case '6':
+        																case '7':
+        																case '8':
+        																case '9':
+        																case '?':
+        																case 'A':
+        																case 'B':
+        																case 'C':
+        																case 'D':
+        																case 'E':
+        																case 'F':
+        																case 'G':
+        																case 'H':
+        																case 'I':
+        																case 'J':
+        																case 'K':
+        																case 'L':
+        																case 'M':
+        																case 'N':
+        																case 'O':
+        																case 'P':
+        																case 'Q':
+        																case 'R':
+        																case 'S':
+        																case 'T':
+        																case 'U':
+        																case 'V':
+        																case 'W':
+        																case 'X':
+        																case 'Y':
+        																case 'Z':
+        																case '\\':
+        																case '_':
+        																case 'a':
+        																case 'b':
+        																case 'c':
+        																case 'd':
+        																case 'e':
+        																case 'f':
+        																case 'g':
+        																case 'h':
+        																case 'i':
+        																case 'j':
+        																case 'k':
+        																case 'l':
+        																case 'm':
+        																case 'n':
+        																case 'o':
+        																case 'p':
+        																case 'q':
+        																case 'r':
+        																case 's':
+        																case 't':
+        																case 'u':
+        																case 'v':
+        																case 'w':
+        																case 'x':
+        																case 'y':
+        																case 'z':
+        																case '~':
+        																	{
+        																		alt12=174;
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=86;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+        								case 'V':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'A':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'L':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'U':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'E':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case '$':
+        																		case '\'':
+        																		case '0':
+        																		case '1':
+        																		case '2':
+        																		case '3':
+        																		case '4':
+        																		case '5':
+        																		case '6':
+        																		case '7':
+        																		case '8':
+        																		case '9':
+        																		case '?':
+        																		case 'A':
+        																		case 'B':
+        																		case 'C':
+        																		case 'D':
+        																		case 'E':
+        																		case 'F':
+        																		case 'G':
+        																		case 'H':
+        																		case 'I':
+        																		case 'J':
+        																		case 'K':
+        																		case 'L':
+        																		case 'M':
+        																		case 'N':
+        																		case 'O':
+        																		case 'P':
+        																		case 'Q':
+        																		case 'R':
+        																		case 'S':
+        																		case 'T':
+        																		case 'U':
+        																		case 'V':
+        																		case 'W':
+        																		case 'X':
+        																		case 'Y':
+        																		case 'Z':
+        																		case '\\':
+        																		case '_':
+        																		case 'a':
+        																		case 'b':
+        																		case 'c':
+        																		case 'd':
+        																		case 'e':
+        																		case 'f':
+        																		case 'g':
+        																		case 'h':
+        																		case 'i':
+        																		case 'j':
+        																		case 'k':
+        																		case 'l':
+        																		case 'm':
+        																		case 'n':
+        																		case 'o':
+        																		case 'p':
+        																		case 'q':
+        																		case 'r':
+        																		case 's':
+        																		case 't':
+        																		case 'u':
+        																		case 'v':
+        																		case 'w':
+        																		case 'x':
+        																		case 'y':
+        																		case 'z':
+        																		case '~':
+        																			{
+        																				alt12=174;
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=87;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case '#':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case ')':
+        			{
+        				alt12=89;
+        			}
+        		    break;
+        		case ']':
+        			{
+        				alt12=90;
+        			}
+        		    break;
+
+        		default:
+        		    CONSTRUCTEX();
+        		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        		    EXCEPTION->message      = (void *)"";
+        		    EXCEPTION->decisionNum  = 12;
+        		    EXCEPTION->state        = 20;
+
+
+        		    goto ruleTokensEx;
+
+        		}
+
+        	}
+            break;
+        case '<':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case '=':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case '>':
+        					{
+        						alt12=92;
+        					}
+        				    break;
+
+        				default:
+        				    alt12=105;
+        				}
+
+        			}
+        		    break;
+        		case '<':
+        			{
+        				alt12=104;
+        			}
+        		    break;
+
+        		default:
+        		    alt12=108;
+        		}
+
+        	}
+            break;
+        case 'I':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'F':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case '$':
+        				case '\'':
+        				case '0':
+        				case '1':
+        				case '2':
+        				case '3':
+        				case '4':
+        				case '5':
+        				case '6':
+        				case '7':
+        				case '8':
+        				case '9':
+        				case '?':
+        				case 'A':
+        				case 'B':
+        				case 'C':
+        				case 'D':
+        				case 'E':
+        				case 'F':
+        				case 'G':
+        				case 'H':
+        				case 'I':
+        				case 'J':
+        				case 'K':
+        				case 'L':
+        				case 'M':
+        				case 'N':
+        				case 'O':
+        				case 'P':
+        				case 'Q':
+        				case 'R':
+        				case 'S':
+        				case 'T':
+        				case 'U':
+        				case 'V':
+        				case 'W':
+        				case 'X':
+        				case 'Y':
+        				case 'Z':
+        				case '\\':
+        				case '_':
+        				case 'a':
+        				case 'b':
+        				case 'c':
+        				case 'd':
+        				case 'e':
+        				case 'f':
+        				case 'g':
+        				case 'h':
+        				case 'i':
+        				case 'j':
+        				case 'k':
+        				case 'l':
+        				case 'm':
+        				case 'n':
+        				case 'o':
+        				case 'p':
+        				case 'q':
+        				case 'r':
+        				case 's':
+        				case 't':
+        				case 'u':
+        				case 'v':
+        				case 'w':
+        				case 'x':
+        				case 'y':
+        				case 'z':
+        				case '~':
+        					{
+        						alt12=174;
+        					}
+        				    break;
+
+        				default:
+        				    alt12=93;
+        				}
+
+        			}
+        		    break;
+        		case 'N':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'C':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'L':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'U':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'D':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'E':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case '$':
+        														case '\'':
+        														case '0':
+        														case '1':
+        														case '2':
+        														case '3':
+        														case '4':
+        														case '5':
+        														case '6':
+        														case '7':
+        														case '8':
+        														case '9':
+        														case '?':
+        														case 'A':
+        														case 'B':
+        														case 'C':
+        														case 'D':
+        														case 'E':
+        														case 'F':
+        														case 'G':
+        														case 'H':
+        														case 'I':
+        														case 'J':
+        														case 'K':
+        														case 'L':
+        														case 'M':
+        														case 'N':
+        														case 'O':
+        														case 'P':
+        														case 'Q':
+        														case 'R':
+        														case 'S':
+        														case 'T':
+        														case 'U':
+        														case 'V':
+        														case 'W':
+        														case 'X':
+        														case 'Y':
+        														case 'Z':
+        														case '\\':
+        														case '_':
+        														case 'a':
+        														case 'b':
+        														case 'c':
+        														case 'd':
+        														case 'e':
+        														case 'f':
+        														case 'g':
+        														case 'h':
+        														case 'i':
+        														case 'j':
+        														case 'k':
+        														case 'l':
+        														case 'm':
+        														case 'n':
+        														case 'o':
+        														case 'p':
+        														case 'q':
+        														case 'r':
+        														case 's':
+        														case 't':
+        														case 'u':
+        														case 'v':
+        														case 'w':
+        														case 'x':
+        														case 'y':
+        														case 'z':
+        														case '~':
+        															{
+        																alt12=174;
+        															}
+        														    break;
+
+        														default:
+        														    alt12=95;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'T':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'E':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'G':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'E':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'R':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case '_':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'T':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case 'O':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case '_':
+        																					{
+        																						switch ( LA(12) )
+        																						{
+        																						case 'S':
+        																							{
+        																								switch ( LA(13) )
+        																								{
+        																								case 'T':
+        																									{
+        																										switch ( LA(14) )
+        																										{
+        																										case 'R':
+        																											{
+        																												switch ( LA(15) )
+        																												{
+        																												case 'I':
+        																													{
+        																														switch ( LA(16) )
+        																														{
+        																														case 'N':
+        																															{
+        																																switch ( LA(17) )
+        																																{
+        																																case 'G':
+        																																	{
+        																																		switch ( LA(18) )
+        																																		{
+        																																		case '$':
+        																																		case '\'':
+        																																		case '0':
+        																																		case '1':
+        																																		case '2':
+        																																		case '3':
+        																																		case '4':
+        																																		case '5':
+        																																		case '6':
+        																																		case '7':
+        																																		case '8':
+        																																		case '9':
+        																																		case '?':
+        																																		case 'A':
+        																																		case 'B':
+        																																		case 'C':
+        																																		case 'D':
+        																																		case 'E':
+        																																		case 'F':
+        																																		case 'G':
+        																																		case 'H':
+        																																		case 'I':
+        																																		case 'J':
+        																																		case 'K':
+        																																		case 'L':
+        																																		case 'M':
+        																																		case 'N':
+        																																		case 'O':
+        																																		case 'P':
+        																																		case 'Q':
+        																																		case 'R':
+        																																		case 'S':
+        																																		case 'T':
+        																																		case 'U':
+        																																		case 'V':
+        																																		case 'W':
+        																																		case 'X':
+        																																		case 'Y':
+        																																		case 'Z':
+        																																		case '\\':
+        																																		case '_':
+        																																		case 'a':
+        																																		case 'b':
+        																																		case 'c':
+        																																		case 'd':
+        																																		case 'e':
+        																																		case 'f':
+        																																		case 'g':
+        																																		case 'h':
+        																																		case 'i':
+        																																		case 'j':
+        																																		case 'k':
+        																																		case 'l':
+        																																		case 'm':
+        																																		case 'n':
+        																																		case 'o':
+        																																		case 'p':
+        																																		case 'q':
+        																																		case 'r':
+        																																		case 's':
+        																																		case 't':
+        																																		case 'u':
+        																																		case 'v':
+        																																		case 'w':
+        																																		case 'x':
+        																																		case 'y':
+        																																		case 'z':
+        																																		case '~':
+        																																			{
+        																																				alt12=174;
+        																																			}
+        																																		    break;
+
+        																																		default:
+        																																		    alt12=145;
+        																																		}
+
+        																																	}
+        																																    break;
+
+        																																default:
+        																																    alt12=174;
+        																																}
+
+        																															}
+        																														    break;
+
+        																														default:
+        																														    alt12=174;
+        																														}
+
+        																													}
+        																												    break;
+
+        																												default:
+        																												    alt12=174;
+        																												}
+
+        																											}
+        																										    break;
+
+        																										default:
+        																										    alt12=174;
+        																										}
+
+        																									}
+        																								    break;
+
+        																								default:
+        																								    alt12=174;
+        																								}
+
+        																							}
+        																						    break;
+
+        																						default:
+        																						    alt12=174;
+        																						}
+
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=174;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case '$':
+        						case '\'':
+        						case '0':
+        						case '1':
+        						case '2':
+        						case '3':
+        						case '4':
+        						case '5':
+        						case '6':
+        						case '7':
+        						case '8':
+        						case '9':
+        						case '?':
+        						case 'A':
+        						case 'B':
+        						case 'C':
+        						case 'D':
+        						case 'F':
+        						case 'G':
+        						case 'H':
+        						case 'I':
+        						case 'J':
+        						case 'K':
+        						case 'L':
+        						case 'M':
+        						case 'N':
+        						case 'O':
+        						case 'P':
+        						case 'Q':
+        						case 'R':
+        						case 'S':
+        						case 'T':
+        						case 'U':
+        						case 'V':
+        						case 'W':
+        						case 'X':
+        						case 'Y':
+        						case 'Z':
+        						case '\\':
+        						case '_':
+        						case 'a':
+        						case 'b':
+        						case 'c':
+        						case 'd':
+        						case 'e':
+        						case 'f':
+        						case 'g':
+        						case 'h':
+        						case 'i':
+        						case 'j':
+        						case 'k':
+        						case 'l':
+        						case 'm':
+        						case 'n':
+        						case 'o':
+        						case 'p':
+        						case 'q':
+        						case 'r':
+        						case 's':
+        						case 't':
+        						case 'u':
+        						case 'v':
+        						case 'w':
+        						case 'x':
+        						case 'y':
+        						case 'z':
+        						case '~':
+        							{
+        								alt12=174;
+        							}
+        						    break;
+
+        						default:
+        						    alt12=97;
+        						}
+
+        					}
+        				    break;
+        				case 'D':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'E':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'X':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'O':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'F':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case '$':
+        														case '\'':
+        														case '0':
+        														case '1':
+        														case '2':
+        														case '3':
+        														case '4':
+        														case '5':
+        														case '6':
+        														case '7':
+        														case '8':
+        														case '9':
+        														case '?':
+        														case 'A':
+        														case 'B':
+        														case 'C':
+        														case 'D':
+        														case 'E':
+        														case 'F':
+        														case 'G':
+        														case 'H':
+        														case 'I':
+        														case 'J':
+        														case 'K':
+        														case 'L':
+        														case 'M':
+        														case 'N':
+        														case 'O':
+        														case 'P':
+        														case 'Q':
+        														case 'R':
+        														case 'S':
+        														case 'T':
+        														case 'U':
+        														case 'V':
+        														case 'W':
+        														case 'X':
+        														case 'Y':
+        														case 'Z':
+        														case '\\':
+        														case '_':
+        														case 'a':
+        														case 'b':
+        														case 'c':
+        														case 'd':
+        														case 'e':
+        														case 'f':
+        														case 'g':
+        														case 'h':
+        														case 'i':
+        														case 'j':
+        														case 'k':
+        														case 'l':
+        														case 'm':
+        														case 'n':
+        														case 'o':
+        														case 'p':
+        														case 'q':
+        														case 'r':
+        														case 's':
+        														case 't':
+        														case 'u':
+        														case 'v':
+        														case 'w':
+        														case 'x':
+        														case 'y':
+        														case 'z':
+        														case '~':
+        															{
+        																alt12=174;
+        															}
+        														    break;
+
+        														default:
+        														    alt12=144;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case '$':
+        				case '\'':
+        				case '0':
+        				case '1':
+        				case '2':
+        				case '3':
+        				case '4':
+        				case '5':
+        				case '6':
+        				case '7':
+        				case '8':
+        				case '9':
+        				case '?':
+        				case 'A':
+        				case 'B':
+        				case 'E':
+        				case 'F':
+        				case 'G':
+        				case 'H':
+        				case 'I':
+        				case 'J':
+        				case 'K':
+        				case 'L':
+        				case 'M':
+        				case 'N':
+        				case 'O':
+        				case 'P':
+        				case 'Q':
+        				case 'R':
+        				case 'S':
+        				case 'U':
+        				case 'V':
+        				case 'W':
+        				case 'X':
+        				case 'Y':
+        				case 'Z':
+        				case '\\':
+        				case '_':
+        				case 'a':
+        				case 'b':
+        				case 'c':
+        				case 'd':
+        				case 'e':
+        				case 'f':
+        				case 'g':
+        				case 'h':
+        				case 'i':
+        				case 'j':
+        				case 'k':
+        				case 'l':
+        				case 'm':
+        				case 'n':
+        				case 'o':
+        				case 'p':
+        				case 'q':
+        				case 'r':
+        				case 's':
+        				case 't':
+        				case 'u':
+        				case 'v':
+        				case 'w':
+        				case 'x':
+        				case 'y':
+        				case 'z':
+        				case '~':
+        					{
+        						alt12=174;
+        					}
+        				    break;
+
+        				default:
+        				    alt12=98;
+        				}
+
+        			}
+        		    break;
+        		case 'S':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case '_':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'I':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'N':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'T':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'E':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'G':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'E':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case 'R':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case '$':
+        																				case '\'':
+        																				case '0':
+        																				case '1':
+        																				case '2':
+        																				case '3':
+        																				case '4':
+        																				case '5':
+        																				case '6':
+        																				case '7':
+        																				case '8':
+        																				case '9':
+        																				case '?':
+        																				case 'A':
+        																				case 'B':
+        																				case 'C':
+        																				case 'D':
+        																				case 'E':
+        																				case 'F':
+        																				case 'G':
+        																				case 'H':
+        																				case 'I':
+        																				case 'J':
+        																				case 'K':
+        																				case 'L':
+        																				case 'M':
+        																				case 'N':
+        																				case 'O':
+        																				case 'P':
+        																				case 'Q':
+        																				case 'R':
+        																				case 'S':
+        																				case 'T':
+        																				case 'U':
+        																				case 'V':
+        																				case 'W':
+        																				case 'X':
+        																				case 'Y':
+        																				case 'Z':
+        																				case '\\':
+        																				case '_':
+        																				case 'a':
+        																				case 'b':
+        																				case 'c':
+        																				case 'd':
+        																				case 'e':
+        																				case 'f':
+        																				case 'g':
+        																				case 'h':
+        																				case 'i':
+        																				case 'j':
+        																				case 'k':
+        																				case 'l':
+        																				case 'm':
+        																				case 'n':
+        																				case 'o':
+        																				case 'p':
+        																				case 'q':
+        																				case 'r':
+        																				case 's':
+        																				case 't':
+        																				case 'u':
+        																				case 'v':
+        																				case 'w':
+        																				case 'x':
+        																				case 'y':
+        																				case 'z':
+        																				case '~':
+        																					{
+        																						alt12=174;
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=99;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case '_':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=109;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case 'J':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'O':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'I':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'N':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case '$':
+        								case '\'':
+        								case '0':
+        								case '1':
+        								case '2':
+        								case '3':
+        								case '4':
+        								case '5':
+        								case '6':
+        								case '7':
+        								case '8':
+        								case '9':
+        								case '?':
+        								case 'A':
+        								case 'B':
+        								case 'C':
+        								case 'D':
+        								case 'E':
+        								case 'F':
+        								case 'G':
+        								case 'H':
+        								case 'I':
+        								case 'J':
+        								case 'K':
+        								case 'L':
+        								case 'M':
+        								case 'N':
+        								case 'O':
+        								case 'P':
+        								case 'Q':
+        								case 'R':
+        								case 'S':
+        								case 'T':
+        								case 'U':
+        								case 'V':
+        								case 'W':
+        								case 'X':
+        								case 'Y':
+        								case 'Z':
+        								case '\\':
+        								case '_':
+        								case 'a':
+        								case 'b':
+        								case 'c':
+        								case 'd':
+        								case 'e':
+        								case 'f':
+        								case 'g':
+        								case 'h':
+        								case 'i':
+        								case 'j':
+        								case 'k':
+        								case 'l':
+        								case 'm':
+        								case 'n':
+        								case 'o':
+        								case 'p':
+        								case 'q':
+        								case 'r':
+        								case 's':
+        								case 't':
+        								case 'u':
+        								case 'v':
+        								case 'w':
+        								case 'x':
+        								case 'y':
+        								case 'z':
+        								case '~':
+        									{
+        										alt12=174;
+        									}
+        								    break;
+
+        								default:
+        								    alt12=100;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case 'L':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'A':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'M':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'B':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'D':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'A':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=101;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'E':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'T':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case '$':
+        						case '\'':
+        						case '0':
+        						case '1':
+        						case '2':
+        						case '3':
+        						case '4':
+        						case '5':
+        						case '6':
+        						case '7':
+        						case '8':
+        						case '9':
+        						case '?':
+        						case 'A':
+        						case 'B':
+        						case 'C':
+        						case 'D':
+        						case 'E':
+        						case 'F':
+        						case 'G':
+        						case 'H':
+        						case 'I':
+        						case 'J':
+        						case 'K':
+        						case 'L':
+        						case 'M':
+        						case 'N':
+        						case 'O':
+        						case 'P':
+        						case 'Q':
+        						case 'R':
+        						case 'S':
+        						case 'T':
+        						case 'U':
+        						case 'V':
+        						case 'W':
+        						case 'X':
+        						case 'Y':
+        						case 'Z':
+        						case '\\':
+        						case '_':
+        						case 'a':
+        						case 'b':
+        						case 'c':
+        						case 'd':
+        						case 'e':
+        						case 'f':
+        						case 'g':
+        						case 'h':
+        						case 'i':
+        						case 'j':
+        						case 'k':
+        						case 'l':
+        						case 'm':
+        						case 'n':
+        						case 'o':
+        						case 'p':
+        						case 'q':
+        						case 'r':
+        						case 's':
+        						case 't':
+        						case 'u':
+        						case 'v':
+        						case 'w':
+        						case 'x':
+        						case 'y':
+        						case 'z':
+        						case '~':
+        							{
+        								alt12=174;
+        							}
+        						    break;
+
+        						default:
+        						    alt12=106;
+        						}
+
+        					}
+        				    break;
+        				case 'N':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'G':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'T':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'H':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=146;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case '{':
+        	{
+        		alt12=102;
+        	}
+            break;
+        case '[':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case '#':
+        			{
+        				alt12=139;
+        			}
+        		    break;
+
+        		default:
+        		    alt12=103;
+        		}
+
+        	}
+            break;
+        case '(':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case '#':
+        			{
+        				alt12=116;
+        			}
+        		    break;
+
+        		default:
+        		    alt12=107;
+        		}
+
+        	}
+            break;
+        case 'M':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'O':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'D':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case '$':
+        						case '\'':
+        						case '0':
+        						case '1':
+        						case '2':
+        						case '3':
+        						case '4':
+        						case '5':
+        						case '6':
+        						case '7':
+        						case '8':
+        						case '9':
+        						case '?':
+        						case 'A':
+        						case 'B':
+        						case 'C':
+        						case 'D':
+        						case 'E':
+        						case 'F':
+        						case 'G':
+        						case 'H':
+        						case 'I':
+        						case 'J':
+        						case 'K':
+        						case 'L':
+        						case 'M':
+        						case 'N':
+        						case 'O':
+        						case 'P':
+        						case 'Q':
+        						case 'R':
+        						case 'S':
+        						case 'T':
+        						case 'U':
+        						case 'V':
+        						case 'W':
+        						case 'X':
+        						case 'Y':
+        						case 'Z':
+        						case '\\':
+        						case '_':
+        						case 'a':
+        						case 'b':
+        						case 'c':
+        						case 'd':
+        						case 'e':
+        						case 'f':
+        						case 'g':
+        						case 'h':
+        						case 'i':
+        						case 'j':
+        						case 'k':
+        						case 'l':
+        						case 'm':
+        						case 'n':
+        						case 'o':
+        						case 'p':
+        						case 'q':
+        						case 'r':
+        						case 's':
+        						case 't':
+        						case 'u':
+        						case 'v':
+        						case 'w':
+        						case 'x':
+        						case 'y':
+        						case 'z':
+        						case '~':
+        							{
+        								alt12=174;
+        							}
+        						    break;
+
+        						default:
+        						    alt12=111;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case 'N':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'O':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'T':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case '$':
+        						case '\'':
+        						case '0':
+        						case '1':
+        						case '2':
+        						case '3':
+        						case '4':
+        						case '5':
+        						case '6':
+        						case '7':
+        						case '8':
+        						case '9':
+        						case '?':
+        						case 'A':
+        						case 'B':
+        						case 'C':
+        						case 'D':
+        						case 'E':
+        						case 'F':
+        						case 'G':
+        						case 'H':
+        						case 'I':
+        						case 'J':
+        						case 'K':
+        						case 'L':
+        						case 'M':
+        						case 'N':
+        						case 'O':
+        						case 'P':
+        						case 'Q':
+        						case 'R':
+        						case 'S':
+        						case 'T':
+        						case 'U':
+        						case 'V':
+        						case 'W':
+        						case 'X':
+        						case 'Y':
+        						case 'Z':
+        						case '\\':
+        						case '_':
+        						case 'a':
+        						case 'b':
+        						case 'c':
+        						case 'd':
+        						case 'e':
+        						case 'f':
+        						case 'g':
+        						case 'h':
+        						case 'i':
+        						case 'j':
+        						case 'k':
+        						case 'l':
+        						case 'm':
+        						case 'n':
+        						case 'o':
+        						case 'p':
+        						case 'q':
+        						case 'r':
+        						case 's':
+        						case 't':
+        						case 'u':
+        						case 'v':
+        						case 'w':
+        						case 'x':
+        						case 'y':
+        						case 'z':
+        						case '~':
+        							{
+        								alt12=174;
+        							}
+        						    break;
+
+        						default:
+        						    alt12=112;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case 'O':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'F':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case '$':
+        				case '\'':
+        				case '0':
+        				case '1':
+        				case '2':
+        				case '3':
+        				case '4':
+        				case '5':
+        				case '6':
+        				case '7':
+        				case '8':
+        				case '9':
+        				case '?':
+        				case 'A':
+        				case 'B':
+        				case 'C':
+        				case 'D':
+        				case 'E':
+        				case 'F':
+        				case 'G':
+        				case 'H':
+        				case 'I':
+        				case 'J':
+        				case 'K':
+        				case 'L':
+        				case 'M':
+        				case 'N':
+        				case 'O':
+        				case 'P':
+        				case 'Q':
+        				case 'R':
+        				case 'S':
+        				case 'T':
+        				case 'U':
+        				case 'V':
+        				case 'W':
+        				case 'X':
+        				case 'Y':
+        				case 'Z':
+        				case '\\':
+        				case '_':
+        				case 'a':
+        				case 'b':
+        				case 'c':
+        				case 'd':
+        				case 'e':
+        				case 'f':
+        				case 'g':
+        				case 'h':
+        				case 'i':
+        				case 'j':
+        				case 'k':
+        				case 'l':
+        				case 'm':
+        				case 'n':
+        				case 'o':
+        				case 'p':
+        				case 'q':
+        				case 'r':
+        				case 's':
+        				case 't':
+        				case 'u':
+        				case 'v':
+        				case 'w':
+        				case 'x':
+        				case 'y':
+        				case 'z':
+        				case '~':
+        					{
+        						alt12=174;
+        					}
+        				    break;
+
+        				default:
+        				    alt12=113;
+        				}
+
+        			}
+        		    break;
+        		case 'P':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'T':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'I':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'O':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'N':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=114;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'R':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case '$':
+        				case '\'':
+        				case '0':
+        				case '1':
+        				case '2':
+        				case '3':
+        				case '4':
+        				case '5':
+        				case '6':
+        				case '7':
+        				case '8':
+        				case '9':
+        				case '?':
+        				case 'A':
+        				case 'B':
+        				case 'C':
+        				case 'D':
+        				case 'E':
+        				case 'F':
+        				case 'G':
+        				case 'H':
+        				case 'I':
+        				case 'J':
+        				case 'K':
+        				case 'L':
+        				case 'M':
+        				case 'N':
+        				case 'O':
+        				case 'P':
+        				case 'Q':
+        				case 'R':
+        				case 'S':
+        				case 'T':
+        				case 'U':
+        				case 'V':
+        				case 'W':
+        				case 'X':
+        				case 'Y':
+        				case 'Z':
+        				case '\\':
+        				case '_':
+        				case 'a':
+        				case 'b':
+        				case 'c':
+        				case 'd':
+        				case 'e':
+        				case 'f':
+        				case 'g':
+        				case 'h':
+        				case 'i':
+        				case 'j':
+        				case 'k':
+        				case 'l':
+        				case 'm':
+        				case 'n':
+        				case 'o':
+        				case 'p':
+        				case 'q':
+        				case 'r':
+        				case 's':
+        				case 't':
+        				case 'u':
+        				case 'v':
+        				case 'w':
+        				case 'x':
+        				case 'y':
+        				case 'z':
+        				case '~':
+        					{
+        						alt12=174;
+        					}
+        				    break;
+
+        				default:
+        				    alt12=115;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case 'P':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'A':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'T':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'T':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'E':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'R':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'N':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case '$':
+        														case '\'':
+        														case '0':
+        														case '1':
+        														case '2':
+        														case '3':
+        														case '4':
+        														case '5':
+        														case '6':
+        														case '7':
+        														case '8':
+        														case '9':
+        														case '?':
+        														case 'A':
+        														case 'B':
+        														case 'C':
+        														case 'D':
+        														case 'E':
+        														case 'F':
+        														case 'G':
+        														case 'H':
+        														case 'I':
+        														case 'J':
+        														case 'K':
+        														case 'L':
+        														case 'M':
+        														case 'N':
+        														case 'O':
+        														case 'P':
+        														case 'Q':
+        														case 'R':
+        														case 'S':
+        														case 'T':
+        														case 'U':
+        														case 'V':
+        														case 'W':
+        														case 'X':
+        														case 'Y':
+        														case 'Z':
+        														case '\\':
+        														case '_':
+        														case 'a':
+        														case 'b':
+        														case 'c':
+        														case 'd':
+        														case 'e':
+        														case 'f':
+        														case 'g':
+        														case 'h':
+        														case 'i':
+        														case 'j':
+        														case 'k':
+        														case 'l':
+        														case 'm':
+        														case 'n':
+        														case 'o':
+        														case 'p':
+        														case 'q':
+        														case 'r':
+        														case 's':
+        														case 't':
+        														case 'u':
+        														case 'v':
+        														case 'w':
+        														case 'x':
+        														case 'y':
+        														case 'z':
+        														case '~':
+        															{
+        																alt12=174;
+        															}
+        														    break;
+
+        														default:
+        														    alt12=117;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'O':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'P':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'T':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'O':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '_':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'S':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'C':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'O':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case 'P':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case 'E':
+        																					{
+        																						switch ( LA(12) )
+        																						{
+        																						case '$':
+        																						case '\'':
+        																						case '0':
+        																						case '1':
+        																						case '2':
+        																						case '3':
+        																						case '4':
+        																						case '5':
+        																						case '6':
+        																						case '7':
+        																						case '8':
+        																						case '9':
+        																						case '?':
+        																						case 'A':
+        																						case 'B':
+        																						case 'C':
+        																						case 'D':
+        																						case 'E':
+        																						case 'F':
+        																						case 'G':
+        																						case 'H':
+        																						case 'I':
+        																						case 'J':
+        																						case 'K':
+        																						case 'L':
+        																						case 'M':
+        																						case 'N':
+        																						case 'O':
+        																						case 'P':
+        																						case 'Q':
+        																						case 'R':
+        																						case 'S':
+        																						case 'T':
+        																						case 'U':
+        																						case 'V':
+        																						case 'W':
+        																						case 'X':
+        																						case 'Y':
+        																						case 'Z':
+        																						case '\\':
+        																						case '_':
+        																						case 'a':
+        																						case 'b':
+        																						case 'c':
+        																						case 'd':
+        																						case 'e':
+        																						case 'f':
+        																						case 'g':
+        																						case 'h':
+        																						case 'i':
+        																						case 'j':
+        																						case 'k':
+        																						case 'l':
+        																						case 'm':
+        																						case 'n':
+        																						case 'o':
+        																						case 'p':
+        																						case 'q':
+        																						case 'r':
+        																						case 's':
+        																						case 't':
+        																						case 'u':
+        																						case 'v':
+        																						case 'w':
+        																						case 'x':
+        																						case 'y':
+        																						case 'z':
+        																						case '~':
+        																							{
+        																								alt12=174;
+        																							}
+        																						    break;
+
+        																						default:
+        																						    alt12=119;
+        																						}
+
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=174;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'T':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=120;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case '_':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'S':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'C':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'O':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'P':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'E':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case '$':
+        																		case '\'':
+        																		case '0':
+        																		case '1':
+        																		case '2':
+        																		case '3':
+        																		case '4':
+        																		case '5':
+        																		case '6':
+        																		case '7':
+        																		case '8':
+        																		case '9':
+        																		case '?':
+        																		case 'A':
+        																		case 'B':
+        																		case 'C':
+        																		case 'D':
+        																		case 'E':
+        																		case 'F':
+        																		case 'G':
+        																		case 'H':
+        																		case 'I':
+        																		case 'J':
+        																		case 'K':
+        																		case 'L':
+        																		case 'M':
+        																		case 'N':
+        																		case 'O':
+        																		case 'P':
+        																		case 'Q':
+        																		case 'R':
+        																		case 'S':
+        																		case 'T':
+        																		case 'U':
+        																		case 'V':
+        																		case 'W':
+        																		case 'X':
+        																		case 'Y':
+        																		case 'Z':
+        																		case '\\':
+        																		case '_':
+        																		case 'a':
+        																		case 'b':
+        																		case 'c':
+        																		case 'd':
+        																		case 'e':
+        																		case 'f':
+        																		case 'g':
+        																		case 'h':
+        																		case 'i':
+        																		case 'j':
+        																		case 'k':
+        																		case 'l':
+        																		case 'm':
+        																		case 'n':
+        																		case 'o':
+        																		case 'p':
+        																		case 'q':
+        																		case 'r':
+        																		case 's':
+        																		case 't':
+        																		case 'u':
+        																		case 'v':
+        																		case 'w':
+        																		case 'x':
+        																		case 'y':
+        																		case 'z':
+        																		case '~':
+        																			{
+        																				alt12=174;
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=121;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case '$':
+        						case '\'':
+        						case '0':
+        						case '1':
+        						case '2':
+        						case '3':
+        						case '4':
+        						case '5':
+        						case '6':
+        						case '7':
+        						case '8':
+        						case '9':
+        						case '?':
+        						case 'A':
+        						case 'B':
+        						case 'C':
+        						case 'D':
+        						case 'E':
+        						case 'F':
+        						case 'G':
+        						case 'H':
+        						case 'I':
+        						case 'J':
+        						case 'K':
+        						case 'L':
+        						case 'M':
+        						case 'N':
+        						case 'O':
+        						case 'P':
+        						case 'Q':
+        						case 'R':
+        						case 'S':
+        						case 'U':
+        						case 'V':
+        						case 'W':
+        						case 'X':
+        						case 'Y':
+        						case 'Z':
+        						case '\\':
+        						case 'a':
+        						case 'b':
+        						case 'c':
+        						case 'd':
+        						case 'e':
+        						case 'f':
+        						case 'g':
+        						case 'h':
+        						case 'i':
+        						case 'j':
+        						case 'k':
+        						case 'l':
+        						case 'm':
+        						case 'n':
+        						case 'o':
+        						case 'p':
+        						case 'q':
+        						case 'r':
+        						case 's':
+        						case 't':
+        						case 'u':
+        						case 'v':
+        						case 'w':
+        						case 'x':
+        						case 'y':
+        						case 'z':
+        						case '~':
+        							{
+        								alt12=174;
+        							}
+        						    break;
+
+        						default:
+        						    alt12=122;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'R':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'I':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'N':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'T':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '_':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'T':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'Y':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'P':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case 'E':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case '$':
+        																				case '\'':
+        																				case '0':
+        																				case '1':
+        																				case '2':
+        																				case '3':
+        																				case '4':
+        																				case '5':
+        																				case '6':
+        																				case '7':
+        																				case '8':
+        																				case '9':
+        																				case '?':
+        																				case 'A':
+        																				case 'B':
+        																				case 'C':
+        																				case 'D':
+        																				case 'E':
+        																				case 'F':
+        																				case 'G':
+        																				case 'H':
+        																				case 'I':
+        																				case 'J':
+        																				case 'K':
+        																				case 'L':
+        																				case 'M':
+        																				case 'N':
+        																				case 'O':
+        																				case 'P':
+        																				case 'Q':
+        																				case 'R':
+        																				case 'S':
+        																				case 'T':
+        																				case 'U':
+        																				case 'V':
+        																				case 'W':
+        																				case 'X':
+        																				case 'Y':
+        																				case 'Z':
+        																				case '\\':
+        																				case '_':
+        																				case 'a':
+        																				case 'b':
+        																				case 'c':
+        																				case 'd':
+        																				case 'e':
+        																				case 'f':
+        																				case 'g':
+        																				case 'h':
+        																				case 'i':
+        																				case 'j':
+        																				case 'k':
+        																				case 'l':
+        																				case 'm':
+        																				case 'n':
+        																				case 'o':
+        																				case 'p':
+        																				case 'q':
+        																				case 'r':
+        																				case 's':
+        																				case 't':
+        																				case 'u':
+        																				case 'v':
+        																				case 'w':
+        																				case 'x':
+        																				case 'y':
+        																				case 'z':
+        																				case '~':
+        																					{
+        																						alt12=174;
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=124;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'T':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=123;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'O':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'D':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'U':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'C':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'T':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case '$':
+        														case '\'':
+        														case '0':
+        														case '1':
+        														case '2':
+        														case '3':
+        														case '4':
+        														case '5':
+        														case '6':
+        														case '7':
+        														case '8':
+        														case '9':
+        														case '?':
+        														case 'A':
+        														case 'B':
+        														case 'C':
+        														case 'D':
+        														case 'E':
+        														case 'F':
+        														case 'G':
+        														case 'H':
+        														case 'I':
+        														case 'J':
+        														case 'K':
+        														case 'L':
+        														case 'M':
+        														case 'N':
+        														case 'O':
+        														case 'P':
+        														case 'Q':
+        														case 'R':
+        														case 'S':
+        														case 'T':
+        														case 'U':
+        														case 'V':
+        														case 'W':
+        														case 'X':
+        														case 'Y':
+        														case 'Z':
+        														case '\\':
+        														case '_':
+        														case 'a':
+        														case 'b':
+        														case 'c':
+        														case 'd':
+        														case 'e':
+        														case 'f':
+        														case 'g':
+        														case 'h':
+        														case 'i':
+        														case 'j':
+        														case 'k':
+        														case 'l':
+        														case 'm':
+        														case 'n':
+        														case 'o':
+        														case 'p':
+        														case 'q':
+        														case 'r':
+        														case 's':
+        														case 't':
+        														case 'u':
+        														case 'v':
+        														case 'w':
+        														case 'x':
+        														case 'y':
+        														case 'z':
+        														case '~':
+        															{
+        																alt12=174;
+        															}
+        														    break;
+
+        														default:
+        														    alt12=125;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'E':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'F':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'I':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'X':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'O':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'F':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case '$':
+        																case '\'':
+        																case '0':
+        																case '1':
+        																case '2':
+        																case '3':
+        																case '4':
+        																case '5':
+        																case '6':
+        																case '7':
+        																case '8':
+        																case '9':
+        																case '?':
+        																case 'A':
+        																case 'B':
+        																case 'C':
+        																case 'D':
+        																case 'E':
+        																case 'F':
+        																case 'G':
+        																case 'H':
+        																case 'I':
+        																case 'J':
+        																case 'K':
+        																case 'L':
+        																case 'M':
+        																case 'N':
+        																case 'O':
+        																case 'P':
+        																case 'Q':
+        																case 'R':
+        																case 'S':
+        																case 'T':
+        																case 'U':
+        																case 'V':
+        																case 'W':
+        																case 'X':
+        																case 'Y':
+        																case 'Z':
+        																case '\\':
+        																case '_':
+        																case 'a':
+        																case 'b':
+        																case 'c':
+        																case 'd':
+        																case 'e':
+        																case 'f':
+        																case 'g':
+        																case 'h':
+        																case 'i':
+        																case 'j':
+        																case 'k':
+        																case 'l':
+        																case 'm':
+        																case 'n':
+        																case 'o':
+        																case 'p':
+        																case 'q':
+        																case 'r':
+        																case 's':
+        																case 't':
+        																case 'u':
+        																case 'v':
+        																case 'w':
+        																case 'x':
+        																case 'y':
+        																case 'z':
+        																case '~':
+        																	{
+        																		alt12=174;
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=147;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'U':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'S':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'H':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case '_':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'S':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'C':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'O':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'P':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case 'E':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case '$':
+        																				case '\'':
+        																				case '0':
+        																				case '1':
+        																				case '2':
+        																				case '3':
+        																				case '4':
+        																				case '5':
+        																				case '6':
+        																				case '7':
+        																				case '8':
+        																				case '9':
+        																				case '?':
+        																				case 'A':
+        																				case 'B':
+        																				case 'C':
+        																				case 'D':
+        																				case 'E':
+        																				case 'F':
+        																				case 'G':
+        																				case 'H':
+        																				case 'I':
+        																				case 'J':
+        																				case 'K':
+        																				case 'L':
+        																				case 'M':
+        																				case 'N':
+        																				case 'O':
+        																				case 'P':
+        																				case 'Q':
+        																				case 'R':
+        																				case 'S':
+        																				case 'T':
+        																				case 'U':
+        																				case 'V':
+        																				case 'W':
+        																				case 'X':
+        																				case 'Y':
+        																				case 'Z':
+        																				case '\\':
+        																				case '_':
+        																				case 'a':
+        																				case 'b':
+        																				case 'c':
+        																				case 'd':
+        																				case 'e':
+        																				case 'f':
+        																				case 'g':
+        																				case 'h':
+        																				case 'i':
+        																				case 'j':
+        																				case 'k':
+        																				case 'l':
+        																				case 'm':
+        																				case 'n':
+        																				case 'o':
+        																				case 'p':
+        																				case 'q':
+        																				case 'r':
+        																				case 's':
+        																				case 't':
+        																				case 'u':
+        																				case 'v':
+        																				case 'w':
+        																				case 'x':
+        																				case 'y':
+        																				case 'z':
+        																				case '~':
+        																					{
+        																						alt12=174;
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=126;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+        								case '$':
+        								case '\'':
+        								case '0':
+        								case '1':
+        								case '2':
+        								case '3':
+        								case '4':
+        								case '5':
+        								case '6':
+        								case '7':
+        								case '8':
+        								case '9':
+        								case '?':
+        								case 'A':
+        								case 'B':
+        								case 'C':
+        								case 'D':
+        								case 'E':
+        								case 'F':
+        								case 'G':
+        								case 'H':
+        								case 'I':
+        								case 'J':
+        								case 'K':
+        								case 'L':
+        								case 'M':
+        								case 'N':
+        								case 'O':
+        								case 'P':
+        								case 'Q':
+        								case 'R':
+        								case 'S':
+        								case 'T':
+        								case 'U':
+        								case 'V':
+        								case 'W':
+        								case 'X':
+        								case 'Y':
+        								case 'Z':
+        								case '\\':
+        								case 'a':
+        								case 'b':
+        								case 'c':
+        								case 'd':
+        								case 'e':
+        								case 'f':
+        								case 'g':
+        								case 'h':
+        								case 'i':
+        								case 'j':
+        								case 'k':
+        								case 'l':
+        								case 'm':
+        								case 'n':
+        								case 'o':
+        								case 'p':
+        								case 'q':
+        								case 'r':
+        								case 's':
+        								case 't':
+        								case 'u':
+        								case 'v':
+        								case 'w':
+        								case 'x':
+        								case 'y':
+        								case 'z':
+        								case '~':
+        									{
+        										alt12=174;
+        									}
+        								    break;
+
+        								default:
+        								    alt12=127;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case '+':
+        	{
+        		alt12=118;
+        	}
+            break;
+        case 'Q':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'U':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'E':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'R':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'Y':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'T':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case '_':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=128;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case '}':
+        	{
+        		alt12=129;
+        	}
+            break;
+        case ']':
+        	{
+        		alt12=130;
+        	}
+            break;
+        case 'R':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'E':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'A':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'L':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case '$':
+        								case '\'':
+        								case '0':
+        								case '1':
+        								case '2':
+        								case '3':
+        								case '4':
+        								case '5':
+        								case '6':
+        								case '7':
+        								case '8':
+        								case '9':
+        								case '?':
+        								case 'A':
+        								case 'B':
+        								case 'C':
+        								case 'D':
+        								case 'E':
+        								case 'F':
+        								case 'G':
+        								case 'H':
+        								case 'I':
+        								case 'J':
+        								case 'K':
+        								case 'L':
+        								case 'M':
+        								case 'N':
+        								case 'O':
+        								case 'P':
+        								case 'Q':
+        								case 'R':
+        								case 'S':
+        								case 'T':
+        								case 'U':
+        								case 'V':
+        								case 'W':
+        								case 'X':
+        								case 'Y':
+        								case 'Z':
+        								case '\\':
+        								case '_':
+        								case 'a':
+        								case 'b':
+        								case 'c':
+        								case 'd':
+        								case 'e':
+        								case 'f':
+        								case 'g':
+        								case 'h':
+        								case 'i':
+        								case 'j':
+        								case 'k':
+        								case 'l':
+        								case 'm':
+        								case 'n':
+        								case 'o':
+        								case 'p':
+        								case 'q':
+        								case 'r':
+        								case 's':
+        								case 't':
+        								case 'u':
+        								case 'v':
+        								case 'w':
+        								case 'x':
+        								case 'y':
+        								case 'z':
+        								case '~':
+        									{
+        										alt12=174;
+        									}
+        								    break;
+
+        								default:
+        								    alt12=131;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'S':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'E':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'T':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'T':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case '_':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=132;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case 'T':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'A':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'R':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'T':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case '$':
+        														case '\'':
+        														case '0':
+        														case '1':
+        														case '2':
+        														case '3':
+        														case '4':
+        														case '5':
+        														case '6':
+        														case '7':
+        														case '8':
+        														case '9':
+        														case '?':
+        														case 'A':
+        														case 'B':
+        														case 'C':
+        														case 'D':
+        														case 'E':
+        														case 'F':
+        														case 'G':
+        														case 'H':
+        														case 'I':
+        														case 'J':
+        														case 'K':
+        														case 'L':
+        														case 'M':
+        														case 'N':
+        														case 'O':
+        														case 'P':
+        														case 'Q':
+        														case 'R':
+        														case 'S':
+        														case 'T':
+        														case 'U':
+        														case 'V':
+        														case 'W':
+        														case 'X':
+        														case 'Y':
+        														case 'Z':
+        														case '\\':
+        														case '_':
+        														case 'a':
+        														case 'b':
+        														case 'c':
+        														case 'd':
+        														case 'e':
+        														case 'f':
+        														case 'g':
+        														case 'h':
+        														case 'i':
+        														case 'j':
+        														case 'k':
+        														case 'l':
+        														case 'm':
+        														case 'n':
+        														case 'o':
+        														case 'p':
+        														case 'q':
+        														case 'r':
+        														case 's':
+        														case 't':
+        														case 'u':
+        														case 'v':
+        														case 'w':
+        														case 'x':
+        														case 'y':
+        														case 'z':
+        														case '~':
+        															{
+        																alt12=174;
+        															}
+        														    break;
+
+        														default:
+        														    alt12=133;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'P':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'L':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'A':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'C':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'E':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case '$':
+        														case '\'':
+        														case '0':
+        														case '1':
+        														case '2':
+        														case '3':
+        														case '4':
+        														case '5':
+        														case '6':
+        														case '7':
+        														case '8':
+        														case '9':
+        														case '?':
+        														case 'A':
+        														case 'B':
+        														case 'C':
+        														case 'D':
+        														case 'E':
+        														case 'F':
+        														case 'G':
+        														case 'H':
+        														case 'I':
+        														case 'J':
+        														case 'K':
+        														case 'L':
+        														case 'M':
+        														case 'N':
+        														case 'O':
+        														case 'P':
+        														case 'Q':
+        														case 'R':
+        														case 'S':
+        														case 'T':
+        														case 'U':
+        														case 'V':
+        														case 'W':
+        														case 'X':
+        														case 'Y':
+        														case 'Z':
+        														case '\\':
+        														case '_':
+        														case 'a':
+        														case 'b':
+        														case 'c':
+        														case 'd':
+        														case 'e':
+        														case 'f':
+        														case 'g':
+        														case 'h':
+        														case 'i':
+        														case 'j':
+        														case 'k':
+        														case 'l':
+        														case 'm':
+        														case 'n':
+        														case 'o':
+        														case 'p':
+        														case 'q':
+        														case 'r':
+        														case 's':
+        														case 't':
+        														case 'u':
+        														case 'v':
+        														case 'w':
+        														case 'x':
+        														case 'y':
+        														case 'z':
+        														case '~':
+        															{
+        																alt12=174;
+        															}
+        														    break;
+
+        														default:
+        														    alt12=148;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case ')':
+        	{
+        		alt12=135;
+        	}
+            break;
+        case ';':
+        	{
+        		alt12=136;
+        	}
+            break;
+        case 'S':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'E':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'T':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case '$':
+        						case '\'':
+        						case '0':
+        						case '1':
+        						case '2':
+        						case '3':
+        						case '4':
+        						case '5':
+        						case '6':
+        						case '7':
+        						case '8':
+        						case '9':
+        						case '?':
+        						case 'A':
+        						case 'B':
+        						case 'C':
+        						case 'D':
+        						case 'E':
+        						case 'F':
+        						case 'G':
+        						case 'H':
+        						case 'I':
+        						case 'J':
+        						case 'K':
+        						case 'L':
+        						case 'M':
+        						case 'N':
+        						case 'O':
+        						case 'P':
+        						case 'Q':
+        						case 'R':
+        						case 'S':
+        						case 'T':
+        						case 'U':
+        						case 'V':
+        						case 'W':
+        						case 'X':
+        						case 'Y':
+        						case 'Z':
+        						case '\\':
+        						case '_':
+        						case 'a':
+        						case 'b':
+        						case 'c':
+        						case 'd':
+        						case 'e':
+        						case 'f':
+        						case 'g':
+        						case 'h':
+        						case 'i':
+        						case 'j':
+        						case 'k':
+        						case 'l':
+        						case 'm':
+        						case 'n':
+        						case 'o':
+        						case 'p':
+        						case 'q':
+        						case 'r':
+        						case 's':
+        						case 't':
+        						case 'u':
+        						case 'v':
+        						case 'w':
+        						case 'x':
+        						case 'y':
+        						case 'z':
+        						case '~':
+        							{
+        								alt12=174;
+        							}
+        						    break;
+
+        						default:
+        						    alt12=138;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'T':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'R':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'I':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'N':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'G':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '_':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'T':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'O':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case '_':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case 'I':
+        																					{
+        																						switch ( LA(12) )
+        																						{
+        																						case 'N':
+        																							{
+        																								switch ( LA(13) )
+        																								{
+        																								case 'T':
+        																									{
+        																										switch ( LA(14) )
+        																										{
+        																										case 'E':
+        																											{
+        																												switch ( LA(15) )
+        																												{
+        																												case 'G':
+        																													{
+        																														switch ( LA(16) )
+        																														{
+        																														case 'E':
+        																															{
+        																																switch ( LA(17) )
+        																																{
+        																																case 'R':
+        																																	{
+        																																		switch ( LA(18) )
+        																																		{
+        																																		case '$':
+        																																		case '\'':
+        																																		case '0':
+        																																		case '1':
+        																																		case '2':
+        																																		case '3':
+        																																		case '4':
+        																																		case '5':
+        																																		case '6':
+        																																		case '7':
+        																																		case '8':
+        																																		case '9':
+        																																		case '?':
+        																																		case 'A':
+        																																		case 'B':
+        																																		case 'C':
+        																																		case 'D':
+        																																		case 'E':
+        																																		case 'F':
+        																																		case 'G':
+        																																		case 'H':
+        																																		case 'I':
+        																																		case 'J':
+        																																		case 'K':
+        																																		case 'L':
+        																																		case 'M':
+        																																		case 'N':
+        																																		case 'O':
+        																																		case 'P':
+        																																		case 'Q':
+        																																		case 'R':
+        																																		case 'S':
+        																																		case 'T':
+        																																		case 'U':
+        																																		case 'V':
+        																																		case 'W':
+        																																		case 'X':
+        																																		case 'Y':
+        																																		case 'Z':
+        																																		case '\\':
+        																																		case '_':
+        																																		case 'a':
+        																																		case 'b':
+        																																		case 'c':
+        																																		case 'd':
+        																																		case 'e':
+        																																		case 'f':
+        																																		case 'g':
+        																																		case 'h':
+        																																		case 'i':
+        																																		case 'j':
+        																																		case 'k':
+        																																		case 'l':
+        																																		case 'm':
+        																																		case 'n':
+        																																		case 'o':
+        																																		case 'p':
+        																																		case 'q':
+        																																		case 'r':
+        																																		case 's':
+        																																		case 't':
+        																																		case 'u':
+        																																		case 'v':
+        																																		case 'w':
+        																																		case 'x':
+        																																		case 'y':
+        																																		case 'z':
+        																																		case '~':
+        																																			{
+        																																				alt12=174;
+        																																			}
+        																																		    break;
+
+        																																		default:
+        																																		    alt12=149;
+        																																		}
+
+        																																	}
+        																																    break;
+
+        																																default:
+        																																    alt12=174;
+        																																}
+
+        																															}
+        																														    break;
+
+        																														default:
+        																														    alt12=174;
+        																														}
+
+        																													}
+        																												    break;
+
+        																												default:
+        																												    alt12=174;
+        																												}
+
+        																											}
+        																										    break;
+
+        																										default:
+        																										    alt12=174;
+        																										}
+
+        																									}
+        																								    break;
+
+        																								default:
+        																								    alt12=174;
+        																								}
+
+        																							}
+        																						    break;
+
+        																						default:
+        																						    alt12=174;
+        																						}
+
+        																					}
+        																				    break;
+        																				case 'U':
+        																					{
+        																						switch ( LA(12) )
+        																						{
+        																						case 'I':
+        																							{
+        																								switch ( LA(13) )
+        																								{
+        																								case 'N':
+        																									{
+        																										switch ( LA(14) )
+        																										{
+        																										case 'T':
+        																											{
+        																												switch ( LA(15) )
+        																												{
+        																												case '1':
+        																													{
+        																														switch ( LA(16) )
+        																														{
+        																														case '6':
+        																															{
+        																																switch ( LA(17) )
+        																																{
+        																																case '$':
+        																																case '\'':
+        																																case '0':
+        																																case '1':
+        																																case '2':
+        																																case '3':
+        																																case '4':
+        																																case '5':
+        																																case '6':
+        																																case '7':
+        																																case '8':
+        																																case '9':
+        																																case '?':
+        																																case 'A':
+        																																case 'B':
+        																																case 'C':
+        																																case 'D':
+        																																case 'E':
+        																																case 'F':
+        																																case 'G':
+        																																case 'H':
+        																																case 'I':
+        																																case 'J':
+        																																case 'K':
+        																																case 'L':
+        																																case 'M':
+        																																case 'N':
+        																																case 'O':
+        																																case 'P':
+        																																case 'Q':
+        																																case 'R':
+        																																case 'S':
+        																																case 'T':
+        																																case 'U':
+        																																case 'V':
+        																																case 'W':
+        																																case 'X':
+        																																case 'Y':
+        																																case 'Z':
+        																																case '\\':
+        																																case '_':
+        																																case 'a':
+        																																case 'b':
+        																																case 'c':
+        																																case 'd':
+        																																case 'e':
+        																																case 'f':
+        																																case 'g':
+        																																case 'h':
+        																																case 'i':
+        																																case 'j':
+        																																case 'k':
+        																																case 'l':
+        																																case 'm':
+        																																case 'n':
+        																																case 'o':
+        																																case 'p':
+        																																case 'q':
+        																																case 'r':
+        																																case 's':
+        																																case 't':
+        																																case 'u':
+        																																case 'v':
+        																																case 'w':
+        																																case 'x':
+        																																case 'y':
+        																																case 'z':
+        																																case '~':
+        																																	{
+        																																		alt12=174;
+        																																	}
+        																																    break;
+
+        																																default:
+        																																    alt12=150;
+        																																}
+
+        																															}
+        																														    break;
+
+        																														default:
+        																														    alt12=174;
+        																														}
+
+        																													}
+        																												    break;
+        																												case '3':
+        																													{
+        																														switch ( LA(16) )
+        																														{
+        																														case '2':
+        																															{
+        																																switch ( LA(17) )
+        																																{
+        																																case '$':
+        																																case '\'':
+        																																case '0':
+        																																case '1':
+        																																case '2':
+        																																case '3':
+        																																case '4':
+        																																case '5':
+        																																case '6':
+        																																case '7':
+        																																case '8':
+        																																case '9':
+        																																case '?':
+        																																case 'A':
+        																																case 'B':
+        																																case 'C':
+        																																case 'D':
+        																																case 'E':
+        																																case 'F':
+        																																case 'G':
+        																																case 'H':
+        																																case 'I':
+        																																case 'J':
+        																																case 'K':
+        																																case 'L':
+        																																case 'M':
+        																																case 'N':
+        																																case 'O':
+        																																case 'P':
+        																																case 'Q':
+        																																case 'R':
+        																																case 'S':
+        																																case 'T':
+        																																case 'U':
+        																																case 'V':
+        																																case 'W':
+        																																case 'X':
+        																																case 'Y':
+        																																case 'Z':
+        																																case '\\':
+        																																case '_':
+        																																case 'a':
+        																																case 'b':
+        																																case 'c':
+        																																case 'd':
+        																																case 'e':
+        																																case 'f':
+        																																case 'g':
+        																																case 'h':
+        																																case 'i':
+        																																case 'j':
+        																																case 'k':
+        																																case 'l':
+        																																case 'm':
+        																																case 'n':
+        																																case 'o':
+        																																case 'p':
+        																																case 'q':
+        																																case 'r':
+        																																case 's':
+        																																case 't':
+        																																case 'u':
+        																																case 'v':
+        																																case 'w':
+        																																case 'x':
+        																																case 'y':
+        																																case 'z':
+        																																case '~':
+        																																	{
+        																																		alt12=174;
+        																																	}
+        																																    break;
+
+        																																default:
+        																																    alt12=151;
+        																																}
+
+        																															}
+        																														    break;
+
+        																														default:
+        																														    alt12=174;
+        																														}
+
+        																													}
+        																												    break;
+
+        																												default:
+        																												    alt12=174;
+        																												}
+
+        																											}
+        																										    break;
+
+        																										default:
+        																										    alt12=174;
+        																										}
+
+        																									}
+        																								    break;
+
+        																								default:
+        																								    alt12=174;
+        																								}
+
+        																							}
+        																						    break;
+
+        																						default:
+        																						    alt12=174;
+        																						}
+
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=174;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=154;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'U':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'B':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'S':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'T':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'R':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '$':
+        												case '\'':
+        												case '0':
+        												case '1':
+        												case '2':
+        												case '3':
+        												case '4':
+        												case '5':
+        												case '6':
+        												case '7':
+        												case '8':
+        												case '9':
+        												case '?':
+        												case 'A':
+        												case 'B':
+        												case 'C':
+        												case 'D':
+        												case 'E':
+        												case 'F':
+        												case 'G':
+        												case 'H':
+        												case 'I':
+        												case 'J':
+        												case 'K':
+        												case 'L':
+        												case 'M':
+        												case 'N':
+        												case 'O':
+        												case 'P':
+        												case 'Q':
+        												case 'R':
+        												case 'S':
+        												case 'T':
+        												case 'U':
+        												case 'V':
+        												case 'W':
+        												case 'X':
+        												case 'Y':
+        												case 'Z':
+        												case '\\':
+        												case '_':
+        												case 'a':
+        												case 'b':
+        												case 'c':
+        												case 'd':
+        												case 'e':
+        												case 'f':
+        												case 'g':
+        												case 'h':
+        												case 'i':
+        												case 'j':
+        												case 'k':
+        												case 'l':
+        												case 'm':
+        												case 'n':
+        												case 'o':
+        												case 'p':
+        												case 'q':
+        												case 'r':
+        												case 's':
+        												case 't':
+        												case 'u':
+        												case 'v':
+        												case 'w':
+        												case 'x':
+        												case 'y':
+        												case 'z':
+        												case '~':
+        													{
+        														alt12=174;
+        													}
+        												    break;
+
+        												default:
+        												    alt12=152;
+        												}
+
+        											}
+        										    break;
+        										case 'I':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'T':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'U':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'T':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case 'E':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case '$':
+        																				case '\'':
+        																				case '0':
+        																				case '1':
+        																				case '2':
+        																				case '3':
+        																				case '4':
+        																				case '5':
+        																				case '6':
+        																				case '7':
+        																				case '8':
+        																				case '9':
+        																				case '?':
+        																				case 'A':
+        																				case 'B':
+        																				case 'C':
+        																				case 'D':
+        																				case 'E':
+        																				case 'F':
+        																				case 'G':
+        																				case 'H':
+        																				case 'I':
+        																				case 'J':
+        																				case 'K':
+        																				case 'L':
+        																				case 'M':
+        																				case 'N':
+        																				case 'O':
+        																				case 'P':
+        																				case 'Q':
+        																				case 'R':
+        																				case 'S':
+        																				case 'T':
+        																				case 'U':
+        																				case 'V':
+        																				case 'W':
+        																				case 'X':
+        																				case 'Y':
+        																				case 'Z':
+        																				case '\\':
+        																				case '_':
+        																				case 'a':
+        																				case 'b':
+        																				case 'c':
+        																				case 'd':
+        																				case 'e':
+        																				case 'f':
+        																				case 'g':
+        																				case 'h':
+        																				case 'i':
+        																				case 'j':
+        																				case 'k':
+        																				case 'l':
+        																				case 'm':
+        																				case 'n':
+        																				case 'o':
+        																				case 'p':
+        																				case 'q':
+        																				case 'r':
+        																				case 's':
+        																				case 't':
+        																				case 'u':
+        																				case 'v':
+        																				case 'w':
+        																				case 'x':
+        																				case 'y':
+        																				case 'z':
+        																				case '~':
+        																					{
+        																						alt12=174;
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=157;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case 'T':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'Y':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'P':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'E':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case '$':
+        														case '\'':
+        														case '0':
+        														case '1':
+        														case '2':
+        														case '3':
+        														case '4':
+        														case '5':
+        														case '6':
+        														case '7':
+        														case '8':
+        														case '9':
+        														case '?':
+        														case 'A':
+        														case 'B':
+        														case 'C':
+        														case 'D':
+        														case 'E':
+        														case 'F':
+        														case 'G':
+        														case 'H':
+        														case 'I':
+        														case 'J':
+        														case 'K':
+        														case 'L':
+        														case 'M':
+        														case 'N':
+        														case 'O':
+        														case 'P':
+        														case 'Q':
+        														case 'R':
+        														case 'S':
+        														case 'T':
+        														case 'U':
+        														case 'V':
+        														case 'W':
+        														case 'X':
+        														case 'Y':
+        														case 'Z':
+        														case '\\':
+        														case '_':
+        														case 'a':
+        														case 'b':
+        														case 'c':
+        														case 'd':
+        														case 'e':
+        														case 'f':
+        														case 'g':
+        														case 'h':
+        														case 'i':
+        														case 'j':
+        														case 'k':
+        														case 'l':
+        														case 'm':
+        														case 'n':
+        														case 'o':
+        														case 'p':
+        														case 'q':
+        														case 'r':
+        														case 's':
+        														case 't':
+        														case 'u':
+        														case 'v':
+        														case 'w':
+        														case 'x':
+        														case 'y':
+        														case 'z':
+        														case '~':
+        															{
+        																alt12=174;
+        															}
+        														    break;
+
+        														default:
+        														    alt12=158;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'F':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'F':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'I':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'X':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'O':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'F':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case '$':
+        																case '\'':
+        																case '0':
+        																case '1':
+        																case '2':
+        																case '3':
+        																case '4':
+        																case '5':
+        																case '6':
+        																case '7':
+        																case '8':
+        																case '9':
+        																case '?':
+        																case 'A':
+        																case 'B':
+        																case 'C':
+        																case 'D':
+        																case 'E':
+        																case 'F':
+        																case 'G':
+        																case 'H':
+        																case 'I':
+        																case 'J':
+        																case 'K':
+        																case 'L':
+        																case 'M':
+        																case 'N':
+        																case 'O':
+        																case 'P':
+        																case 'Q':
+        																case 'R':
+        																case 'S':
+        																case 'T':
+        																case 'U':
+        																case 'V':
+        																case 'W':
+        																case 'X':
+        																case 'Y':
+        																case 'Z':
+        																case '\\':
+        																case '_':
+        																case 'a':
+        																case 'b':
+        																case 'c':
+        																case 'd':
+        																case 'e':
+        																case 'f':
+        																case 'g':
+        																case 'h':
+        																case 'i':
+        																case 'j':
+        																case 'k':
+        																case 'l':
+        																case 'm':
+        																case 'n':
+        																case 'o':
+        																case 'p':
+        																case 'q':
+        																case 'r':
+        																case 's':
+        																case 't':
+        																case 'u':
+        																case 'v':
+        																case 'w':
+        																case 'x':
+        																case 'y':
+        																case 'z':
+        																case '~':
+        																	{
+        																		alt12=174;
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=153;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'X':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case '$':
+        				case '\'':
+        				case '0':
+        				case '1':
+        				case '2':
+        				case '3':
+        				case '4':
+        				case '5':
+        				case '6':
+        				case '7':
+        				case '8':
+        				case '9':
+        				case '?':
+        				case 'A':
+        				case 'B':
+        				case 'C':
+        				case 'D':
+        				case 'E':
+        				case 'F':
+        				case 'G':
+        				case 'H':
+        				case 'I':
+        				case 'J':
+        				case 'K':
+        				case 'L':
+        				case 'M':
+        				case 'N':
+        				case 'O':
+        				case 'P':
+        				case 'Q':
+        				case 'R':
+        				case 'S':
+        				case 'T':
+        				case 'U':
+        				case 'V':
+        				case 'W':
+        				case 'X':
+        				case 'Y':
+        				case 'Z':
+        				case '\\':
+        				case '_':
+        				case 'a':
+        				case 'b':
+        				case 'c':
+        				case 'd':
+        				case 'e':
+        				case 'f':
+        				case 'g':
+        				case 'h':
+        				case 'i':
+        				case 'j':
+        				case 'k':
+        				case 'l':
+        				case 'm':
+        				case 'n':
+        				case 'o':
+        				case 'p':
+        				case 'q':
+        				case 'r':
+        				case 's':
+        				case 't':
+        				case 'u':
+        				case 'v':
+        				case 'w':
+        				case 'x':
+        				case 'y':
+        				case 'z':
+        				case '~':
+        					{
+        						alt12=174;
+        					}
+        				    break;
+
+        				default:
+        				    alt12=159;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case '*':
+        	{
+        		alt12=140;
+        	}
+            break;
+        case 'U':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'I':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'N':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'T':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case '1':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '6':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '_':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'T':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'O':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case '_':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case 'S':
+        																					{
+        																						switch ( LA(12) )
+        																						{
+        																						case 'T':
+        																							{
+        																								switch ( LA(13) )
+        																								{
+        																								case 'R':
+        																									{
+        																										switch ( LA(14) )
+        																										{
+        																										case 'I':
+        																											{
+        																												switch ( LA(15) )
+        																												{
+        																												case 'N':
+        																													{
+        																														switch ( LA(16) )
+        																														{
+        																														case 'G':
+        																															{
+        																																switch ( LA(17) )
+        																																{
+        																																case '$':
+        																																case '\'':
+        																																case '0':
+        																																case '1':
+        																																case '2':
+        																																case '3':
+        																																case '4':
+        																																case '5':
+        																																case '6':
+        																																case '7':
+        																																case '8':
+        																																case '9':
+        																																case '?':
+        																																case 'A':
+        																																case 'B':
+        																																case 'C':
+        																																case 'D':
+        																																case 'E':
+        																																case 'F':
+        																																case 'G':
+        																																case 'H':
+        																																case 'I':
+        																																case 'J':
+        																																case 'K':
+        																																case 'L':
+        																																case 'M':
+        																																case 'N':
+        																																case 'O':
+        																																case 'P':
+        																																case 'Q':
+        																																case 'R':
+        																																case 'S':
+        																																case 'T':
+        																																case 'U':
+        																																case 'V':
+        																																case 'W':
+        																																case 'X':
+        																																case 'Y':
+        																																case 'Z':
+        																																case '\\':
+        																																case '_':
+        																																case 'a':
+        																																case 'b':
+        																																case 'c':
+        																																case 'd':
+        																																case 'e':
+        																																case 'f':
+        																																case 'g':
+        																																case 'h':
+        																																case 'i':
+        																																case 'j':
+        																																case 'k':
+        																																case 'l':
+        																																case 'm':
+        																																case 'n':
+        																																case 'o':
+        																																case 'p':
+        																																case 'q':
+        																																case 'r':
+        																																case 's':
+        																																case 't':
+        																																case 'u':
+        																																case 'v':
+        																																case 'w':
+        																																case 'x':
+        																																case 'y':
+        																																case 'z':
+        																																case '~':
+        																																	{
+        																																		alt12=174;
+        																																	}
+        																																    break;
+
+        																																default:
+        																																    alt12=155;
+        																																}
+
+        																															}
+        																														    break;
+
+        																														default:
+        																														    alt12=174;
+        																														}
+
+        																													}
+        																												    break;
+
+        																												default:
+        																												    alt12=174;
+        																												}
+
+        																											}
+        																										    break;
+
+        																										default:
+        																										    alt12=174;
+        																										}
+
+        																									}
+        																								    break;
+
+        																								default:
+        																								    alt12=174;
+        																								}
+
+        																							}
+        																						    break;
+
+        																						default:
+        																						    alt12=174;
+        																						}
+
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=174;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+        								case '3':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '2':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case '_':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'T':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'O':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case '_':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case 'S':
+        																					{
+        																						switch ( LA(12) )
+        																						{
+        																						case 'T':
+        																							{
+        																								switch ( LA(13) )
+        																								{
+        																								case 'R':
+        																									{
+        																										switch ( LA(14) )
+        																										{
+        																										case 'I':
+        																											{
+        																												switch ( LA(15) )
+        																												{
+        																												case 'N':
+        																													{
+        																														switch ( LA(16) )
+        																														{
+        																														case 'G':
+        																															{
+        																																switch ( LA(17) )
+        																																{
+        																																case '$':
+        																																case '\'':
+        																																case '0':
+        																																case '1':
+        																																case '2':
+        																																case '3':
+        																																case '4':
+        																																case '5':
+        																																case '6':
+        																																case '7':
+        																																case '8':
+        																																case '9':
+        																																case '?':
+        																																case 'A':
+        																																case 'B':
+        																																case 'C':
+        																																case 'D':
+        																																case 'E':
+        																																case 'F':
+        																																case 'G':
+        																																case 'H':
+        																																case 'I':
+        																																case 'J':
+        																																case 'K':
+        																																case 'L':
+        																																case 'M':
+        																																case 'N':
+        																																case 'O':
+        																																case 'P':
+        																																case 'Q':
+        																																case 'R':
+        																																case 'S':
+        																																case 'T':
+        																																case 'U':
+        																																case 'V':
+        																																case 'W':
+        																																case 'X':
+        																																case 'Y':
+        																																case 'Z':
+        																																case '\\':
+        																																case '_':
+        																																case 'a':
+        																																case 'b':
+        																																case 'c':
+        																																case 'd':
+        																																case 'e':
+        																																case 'f':
+        																																case 'g':
+        																																case 'h':
+        																																case 'i':
+        																																case 'j':
+        																																case 'k':
+        																																case 'l':
+        																																case 'm':
+        																																case 'n':
+        																																case 'o':
+        																																case 'p':
+        																																case 'q':
+        																																case 'r':
+        																																case 's':
+        																																case 't':
+        																																case 'u':
+        																																case 'v':
+        																																case 'w':
+        																																case 'x':
+        																																case 'y':
+        																																case 'z':
+        																																case '~':
+        																																	{
+        																																		alt12=174;
+        																																	}
+        																																    break;
+
+        																																default:
+        																																    alt12=156;
+        																																}
+
+        																															}
+        																														    break;
+
+        																														default:
+        																														    alt12=174;
+        																														}
+
+        																													}
+        																												    break;
+
+        																												default:
+        																												    alt12=174;
+        																												}
+
+        																											}
+        																										    break;
+
+        																										default:
+        																										    alt12=174;
+        																										}
+
+        																									}
+        																								    break;
+
+        																								default:
+        																								    alt12=174;
+        																								}
+
+        																							}
+        																						    break;
+
+        																						default:
+        																						    alt12=174;
+        																						}
+
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=174;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=174;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'N':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'I':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'V':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'E':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'R':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'S':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'E':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case '$':
+        																case '\'':
+        																case '0':
+        																case '1':
+        																case '2':
+        																case '3':
+        																case '4':
+        																case '5':
+        																case '6':
+        																case '7':
+        																case '8':
+        																case '9':
+        																case '?':
+        																case 'A':
+        																case 'B':
+        																case 'C':
+        																case 'D':
+        																case 'E':
+        																case 'F':
+        																case 'G':
+        																case 'H':
+        																case 'I':
+        																case 'J':
+        																case 'K':
+        																case 'L':
+        																case 'M':
+        																case 'N':
+        																case 'O':
+        																case 'P':
+        																case 'Q':
+        																case 'R':
+        																case 'S':
+        																case 'T':
+        																case 'U':
+        																case 'V':
+        																case 'W':
+        																case 'X':
+        																case 'Y':
+        																case 'Z':
+        																case '\\':
+        																case '_':
+        																case 'a':
+        																case 'b':
+        																case 'c':
+        																case 'd':
+        																case 'e':
+        																case 'f':
+        																case 'g':
+        																case 'h':
+        																case 'i':
+        																case 'j':
+        																case 'k':
+        																case 'l':
+        																case 'm':
+        																case 'n':
+        																case 'o':
+        																case 'p':
+        																case 'q':
+        																case 'r':
+        																case 's':
+        																case 't':
+        																case 'u':
+        																case 'v':
+        																case 'w':
+        																case 'x':
+        																case 'y':
+        																case 'z':
+        																case '~':
+        																	{
+        																		alt12=174;
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=169;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'T':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'R':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'A':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'C':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'E':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case '$':
+        														case '\'':
+        														case '0':
+        														case '1':
+        														case '2':
+        														case '3':
+        														case '4':
+        														case '5':
+        														case '6':
+        														case '7':
+        														case '8':
+        														case '9':
+        														case '?':
+        														case 'A':
+        														case 'B':
+        														case 'C':
+        														case 'D':
+        														case 'E':
+        														case 'F':
+        														case 'G':
+        														case 'H':
+        														case 'I':
+        														case 'J':
+        														case 'K':
+        														case 'L':
+        														case 'M':
+        														case 'N':
+        														case 'O':
+        														case 'P':
+        														case 'Q':
+        														case 'R':
+        														case 'S':
+        														case 'T':
+        														case 'U':
+        														case 'V':
+        														case 'W':
+        														case 'X':
+        														case 'Y':
+        														case 'Z':
+        														case '\\':
+        														case '_':
+        														case 'a':
+        														case 'b':
+        														case 'c':
+        														case 'd':
+        														case 'e':
+        														case 'f':
+        														case 'g':
+        														case 'h':
+        														case 'i':
+        														case 'j':
+        														case 'k':
+        														case 'l':
+        														case 'm':
+        														case 'n':
+        														case 'o':
+        														case 'p':
+        														case 'q':
+        														case 'r':
+        														case 's':
+        														case 't':
+        														case 'u':
+        														case 'v':
+        														case 'w':
+        														case 'x':
+        														case 'y':
+        														case 'z':
+        														case '~':
+        															{
+        																alt12=174;
+        															}
+        														    break;
+
+        														default:
+        														    alt12=170;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case 'T':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'H':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'E':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'N':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case '$':
+        								case '\'':
+        								case '0':
+        								case '1':
+        								case '2':
+        								case '3':
+        								case '4':
+        								case '5':
+        								case '6':
+        								case '7':
+        								case '8':
+        								case '9':
+        								case '?':
+        								case 'A':
+        								case 'B':
+        								case 'C':
+        								case 'D':
+        								case 'E':
+        								case 'F':
+        								case 'G':
+        								case 'H':
+        								case 'I':
+        								case 'J':
+        								case 'K':
+        								case 'L':
+        								case 'M':
+        								case 'N':
+        								case 'O':
+        								case 'P':
+        								case 'Q':
+        								case 'R':
+        								case 'S':
+        								case 'T':
+        								case 'U':
+        								case 'V':
+        								case 'W':
+        								case 'X':
+        								case 'Y':
+        								case 'Z':
+        								case '\\':
+        								case '_':
+        								case 'a':
+        								case 'b':
+        								case 'c':
+        								case 'd':
+        								case 'e':
+        								case 'f':
+        								case 'g':
+        								case 'h':
+        								case 'i':
+        								case 'j':
+        								case 'k':
+        								case 'l':
+        								case 'm':
+        								case 'n':
+        								case 'o':
+        								case 'p':
+        								case 'q':
+        								case 'r':
+        								case 's':
+        								case 't':
+        								case 'u':
+        								case 'v':
+        								case 'w':
+        								case 'x':
+        								case 'y':
+        								case 'z':
+        								case '~':
+        									{
+        										alt12=174;
+        									}
+        								    break;
+
+        								default:
+        								    alt12=160;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'R':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'A':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'C':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'E':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'T':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case '_':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=161;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+        						case 'N':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'S':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'F':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'O':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'R':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'M':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case '$':
+        																		case '\'':
+        																		case '0':
+        																		case '1':
+        																		case '2':
+        																		case '3':
+        																		case '4':
+        																		case '5':
+        																		case '6':
+        																		case '7':
+        																		case '8':
+        																		case '9':
+        																		case '?':
+        																		case 'A':
+        																		case 'B':
+        																		case 'C':
+        																		case 'D':
+        																		case 'E':
+        																		case 'F':
+        																		case 'G':
+        																		case 'H':
+        																		case 'I':
+        																		case 'J':
+        																		case 'K':
+        																		case 'L':
+        																		case 'M':
+        																		case 'N':
+        																		case 'O':
+        																		case 'P':
+        																		case 'Q':
+        																		case 'R':
+        																		case 'S':
+        																		case 'T':
+        																		case 'U':
+        																		case 'V':
+        																		case 'W':
+        																		case 'X':
+        																		case 'Y':
+        																		case 'Z':
+        																		case '\\':
+        																		case '_':
+        																		case 'a':
+        																		case 'b':
+        																		case 'c':
+        																		case 'd':
+        																		case 'e':
+        																		case 'f':
+        																		case 'g':
+        																		case 'h':
+        																		case 'i':
+        																		case 'j':
+        																		case 'k':
+        																		case 'l':
+        																		case 'm':
+        																		case 'n':
+        																		case 'o':
+        																		case 'p':
+        																		case 'q':
+        																		case 'r':
+        																		case 's':
+        																		case 't':
+        																		case 'u':
+        																		case 'v':
+        																		case 'w':
+        																		case 'x':
+        																		case 'y':
+        																		case 'z':
+        																		case '~':
+        																			{
+        																				alt12=174;
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=163;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+        										case 'P':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'O':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'S':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'E':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case '$':
+        																		case '\'':
+        																		case '0':
+        																		case '1':
+        																		case '2':
+        																		case '3':
+        																		case '4':
+        																		case '5':
+        																		case '6':
+        																		case '7':
+        																		case '8':
+        																		case '9':
+        																		case '?':
+        																		case 'A':
+        																		case 'B':
+        																		case 'C':
+        																		case 'D':
+        																		case 'E':
+        																		case 'F':
+        																		case 'G':
+        																		case 'H':
+        																		case 'I':
+        																		case 'J':
+        																		case 'K':
+        																		case 'L':
+        																		case 'M':
+        																		case 'N':
+        																		case 'O':
+        																		case 'P':
+        																		case 'Q':
+        																		case 'R':
+        																		case 'S':
+        																		case 'T':
+        																		case 'U':
+        																		case 'V':
+        																		case 'W':
+        																		case 'X':
+        																		case 'Y':
+        																		case 'Z':
+        																		case '\\':
+        																		case '_':
+        																		case 'a':
+        																		case 'b':
+        																		case 'c':
+        																		case 'd':
+        																		case 'e':
+        																		case 'f':
+        																		case 'g':
+        																		case 'h':
+        																		case 'i':
+        																		case 'j':
+        																		case 'k':
+        																		case 'l':
+        																		case 'm':
+        																		case 'n':
+        																		case 'o':
+        																		case 'p':
+        																		case 'q':
+        																		case 'r':
+        																		case 's':
+        																		case 't':
+        																		case 'u':
+        																		case 'v':
+        																		case 'w':
+        																		case 'x':
+        																		case 'y':
+        																		case 'z':
+        																		case '~':
+        																			{
+        																				alt12=174;
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=164;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=174;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+        				case 'U':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'E':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case '$':
+        								case '\'':
+        								case '0':
+        								case '1':
+        								case '2':
+        								case '3':
+        								case '4':
+        								case '5':
+        								case '6':
+        								case '7':
+        								case '8':
+        								case '9':
+        								case '?':
+        								case 'A':
+        								case 'B':
+        								case 'C':
+        								case 'D':
+        								case 'E':
+        								case 'F':
+        								case 'G':
+        								case 'H':
+        								case 'I':
+        								case 'J':
+        								case 'K':
+        								case 'L':
+        								case 'M':
+        								case 'N':
+        								case 'O':
+        								case 'P':
+        								case 'Q':
+        								case 'R':
+        								case 'S':
+        								case 'T':
+        								case 'U':
+        								case 'V':
+        								case 'W':
+        								case 'X':
+        								case 'Y':
+        								case 'Z':
+        								case '\\':
+        								case '_':
+        								case 'a':
+        								case 'b':
+        								case 'c':
+        								case 'd':
+        								case 'e':
+        								case 'f':
+        								case 'g':
+        								case 'h':
+        								case 'i':
+        								case 'j':
+        								case 'k':
+        								case 'l':
+        								case 'm':
+        								case 'n':
+        								case 'o':
+        								case 'p':
+        								case 'q':
+        								case 'r':
+        								case 's':
+        								case 't':
+        								case 'u':
+        								case 'v':
+        								case 'w':
+        								case 'x':
+        								case 'y':
+        								case 'z':
+        								case '~':
+        									{
+        										alt12=174;
+        									}
+        								    break;
+
+        								default:
+        								    alt12=165;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'C':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'L':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'O':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'S':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'U':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'R':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'E':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case '$':
+        																case '\'':
+        																case '0':
+        																case '1':
+        																case '2':
+        																case '3':
+        																case '4':
+        																case '5':
+        																case '6':
+        																case '7':
+        																case '8':
+        																case '9':
+        																case '?':
+        																case 'A':
+        																case 'B':
+        																case 'C':
+        																case 'D':
+        																case 'E':
+        																case 'F':
+        																case 'G':
+        																case 'H':
+        																case 'I':
+        																case 'J':
+        																case 'K':
+        																case 'L':
+        																case 'M':
+        																case 'N':
+        																case 'O':
+        																case 'P':
+        																case 'Q':
+        																case 'R':
+        																case 'S':
+        																case 'T':
+        																case 'U':
+        																case 'V':
+        																case 'W':
+        																case 'X':
+        																case 'Y':
+        																case 'Z':
+        																case '\\':
+        																case '_':
+        																case 'a':
+        																case 'b':
+        																case 'c':
+        																case 'd':
+        																case 'e':
+        																case 'f':
+        																case 'g':
+        																case 'h':
+        																case 'i':
+        																case 'j':
+        																case 'k':
+        																case 'l':
+        																case 'm':
+        																case 'n':
+        																case 'o':
+        																case 'p':
+        																case 'q':
+        																case 'r':
+        																case 's':
+        																case 't':
+        																case 'u':
+        																case 'v':
+        																case 'w':
+        																case 'x':
+        																case 'y':
+        																case 'z':
+        																case '~':
+        																	{
+        																		alt12=174;
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=162;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=174;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=174;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=174;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'U':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'P':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'L':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'E':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'T':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case '_':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=166;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'Y':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'P':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'E':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case '$':
+        								case '\'':
+        								case '0':
+        								case '1':
+        								case '2':
+        								case '3':
+        								case '4':
+        								case '5':
+        								case '6':
+        								case '7':
+        								case '8':
+        								case '9':
+        								case '?':
+        								case 'A':
+        								case 'B':
+        								case 'C':
+        								case 'D':
+        								case 'E':
+        								case 'F':
+        								case 'G':
+        								case 'H':
+        								case 'I':
+        								case 'J':
+        								case 'K':
+        								case 'L':
+        								case 'M':
+        								case 'N':
+        								case 'O':
+        								case 'P':
+        								case 'Q':
+        								case 'R':
+        								case 'S':
+        								case 'T':
+        								case 'U':
+        								case 'V':
+        								case 'W':
+        								case 'X':
+        								case 'Y':
+        								case 'Z':
+        								case '\\':
+        								case '_':
+        								case 'a':
+        								case 'b':
+        								case 'c':
+        								case 'd':
+        								case 'e':
+        								case 'f':
+        								case 'g':
+        								case 'h':
+        								case 'i':
+        								case 'j':
+        								case 'k':
+        								case 'l':
+        								case 'm':
+        								case 'n':
+        								case 'o':
+        								case 'p':
+        								case 'q':
+        								case 'r':
+        								case 's':
+        								case 't':
+        								case 'u':
+        								case 'v':
+        								case 'w':
+        								case 'x':
+        								case 'y':
+        								case 'z':
+        								case '~':
+        									{
+        										alt12=174;
+        									}
+        								    break;
+
+        								default:
+        								    alt12=167;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case '_':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case '$':
+        		case '\'':
+        		case '0':
+        		case '1':
+        		case '2':
+        		case '3':
+        		case '4':
+        		case '5':
+        		case '6':
+        		case '7':
+        		case '8':
+        		case '9':
+        		case '?':
+        		case 'A':
+        		case 'B':
+        		case 'C':
+        		case 'D':
+        		case 'E':
+        		case 'F':
+        		case 'G':
+        		case 'H':
+        		case 'I':
+        		case 'J':
+        		case 'K':
+        		case 'L':
+        		case 'M':
+        		case 'N':
+        		case 'O':
+        		case 'P':
+        		case 'Q':
+        		case 'R':
+        		case 'S':
+        		case 'T':
+        		case 'U':
+        		case 'V':
+        		case 'W':
+        		case 'X':
+        		case 'Y':
+        		case 'Z':
+        		case '\\':
+        		case '_':
+        		case 'a':
+        		case 'b':
+        		case 'c':
+        		case 'd':
+        		case 'e':
+        		case 'f':
+        		case 'g':
+        		case 'h':
+        		case 'i':
+        		case 'j':
+        		case 'k':
+        		case 'l':
+        		case 'm':
+        		case 'n':
+        		case 'o':
+        		case 'p':
+        		case 'q':
+        		case 'r':
+        		case 's':
+        		case 't':
+        		case 'u':
+        		case 'v':
+        		case 'w':
+        		case 'x':
+        		case 'y':
+        		case 'z':
+        		case '~':
+        			{
+        				alt12=174;
+        			}
+        		    break;
+
+        		default:
+        		    alt12=168;
+        		}
+
+        	}
+            break;
+        case 'W':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'H':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'E':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'R':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case 'E':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case '$':
+        										case '\'':
+        										case '0':
+        										case '1':
+        										case '2':
+        										case '3':
+        										case '4':
+        										case '5':
+        										case '6':
+        										case '7':
+        										case '8':
+        										case '9':
+        										case '?':
+        										case 'A':
+        										case 'B':
+        										case 'C':
+        										case 'D':
+        										case 'E':
+        										case 'F':
+        										case 'G':
+        										case 'H':
+        										case 'I':
+        										case 'J':
+        										case 'K':
+        										case 'L':
+        										case 'M':
+        										case 'N':
+        										case 'O':
+        										case 'P':
+        										case 'Q':
+        										case 'R':
+        										case 'S':
+        										case 'T':
+        										case 'U':
+        										case 'V':
+        										case 'W':
+        										case 'X':
+        										case 'Y':
+        										case 'Z':
+        										case '\\':
+        										case '_':
+        										case 'a':
+        										case 'b':
+        										case 'c':
+        										case 'd':
+        										case 'e':
+        										case 'f':
+        										case 'g':
+        										case 'h':
+        										case 'i':
+        										case 'j':
+        										case 'k':
+        										case 'l':
+        										case 'm':
+        										case 'n':
+        										case 'o':
+        										case 'p':
+        										case 'q':
+        										case 'r':
+        										case 's':
+        										case 't':
+        										case 'u':
+        										case 'v':
+        										case 'w':
+        										case 'x':
+        										case 'y':
+        										case 'z':
+        										case '~':
+        											{
+        												alt12=174;
+        											}
+        										    break;
+
+        										default:
+        										    alt12=171;
+        										}
+
+        									}
+        								    break;
+
+        								default:
+        								    alt12=174;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+        		case 'I':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'T':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case 'H':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case '$':
+        								case '\'':
+        								case '0':
+        								case '1':
+        								case '2':
+        								case '3':
+        								case '4':
+        								case '5':
+        								case '6':
+        								case '7':
+        								case '8':
+        								case '9':
+        								case '?':
+        								case 'A':
+        								case 'B':
+        								case 'C':
+        								case 'D':
+        								case 'E':
+        								case 'F':
+        								case 'G':
+        								case 'H':
+        								case 'I':
+        								case 'J':
+        								case 'K':
+        								case 'L':
+        								case 'M':
+        								case 'N':
+        								case 'O':
+        								case 'P':
+        								case 'Q':
+        								case 'R':
+        								case 'S':
+        								case 'T':
+        								case 'U':
+        								case 'V':
+        								case 'W':
+        								case 'X':
+        								case 'Y':
+        								case 'Z':
+        								case '\\':
+        								case '_':
+        								case 'a':
+        								case 'b':
+        								case 'c':
+        								case 'd':
+        								case 'e':
+        								case 'f':
+        								case 'g':
+        								case 'h':
+        								case 'i':
+        								case 'j':
+        								case 'k':
+        								case 'l':
+        								case 'm':
+        								case 'n':
+        								case 'o':
+        								case 'p':
+        								case 'q':
+        								case 'r':
+        								case 's':
+        								case 't':
+        								case 'u':
+        								case 'v':
+        								case 'w':
+        								case 'x':
+        								case 'y':
+        								case 'z':
+        								case '~':
+        									{
+        										alt12=174;
+        									}
+        								    break;
+
+        								default:
+        								    alt12=172;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=174;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case 'X':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'O':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 'R':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case '$':
+        						case '\'':
+        						case '0':
+        						case '1':
+        						case '2':
+        						case '3':
+        						case '4':
+        						case '5':
+        						case '6':
+        						case '7':
+        						case '8':
+        						case '9':
+        						case '?':
+        						case 'A':
+        						case 'B':
+        						case 'C':
+        						case 'D':
+        						case 'E':
+        						case 'F':
+        						case 'G':
+        						case 'H':
+        						case 'I':
+        						case 'J':
+        						case 'K':
+        						case 'L':
+        						case 'M':
+        						case 'N':
+        						case 'O':
+        						case 'P':
+        						case 'Q':
+        						case 'R':
+        						case 'S':
+        						case 'T':
+        						case 'U':
+        						case 'V':
+        						case 'W':
+        						case 'X':
+        						case 'Y':
+        						case 'Z':
+        						case '\\':
+        						case '_':
+        						case 'a':
+        						case 'b':
+        						case 'c':
+        						case 'd':
+        						case 'e':
+        						case 'f':
+        						case 'g':
+        						case 'h':
+        						case 'i':
+        						case 'j':
+        						case 'k':
+        						case 'l':
+        						case 'm':
+        						case 'n':
+        						case 'o':
+        						case 'p':
+        						case 'q':
+        						case 'r':
+        						case 's':
+        						case 't':
+        						case 'u':
+        						case 'v':
+        						case 'w':
+        						case 'x':
+        						case 'y':
+        						case 'z':
+        						case '~':
+        							{
+        								alt12=174;
+        							}
+        						    break;
+
+        						default:
+        						    alt12=173;
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    alt12=174;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=174;
+        		}
+
+        	}
+            break;
+        case 'K':
+        case 'V':
+        case 'Y':
+        case 'Z':
+        case 'a':
+        case 'b':
+        case 'c':
+        case 'd':
+        case 'e':
+        case 'f':
+        case 'g':
+        case 'h':
+        case 'i':
+        case 'j':
+        case 'k':
+        case 'l':
+        case 'm':
+        case 'n':
+        case 'o':
+        case 'p':
+        case 'q':
+        case 'r':
+        case 's':
+        case 't':
+        case 'u':
+        case 'v':
+        case 'w':
+        case 'x':
+        case 'y':
+        case 'z':
+        	{
+        		alt12=174;
+        	}
+            break;
+        case '0':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'h':
+        			{
+        				alt12=175;
+        			}
+        		    break;
+        		case 'b':
+        			{
+        				alt12=176;
+        			}
+        		    break;
+
+        		default:
+        		    alt12=178;
+        		}
+
+        	}
+            break;
+        case '"':
+        	{
+        		alt12=177;
+        	}
+            break;
+        case '.':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+        case '6':
+        case '7':
+        case '8':
+        case '9':
+        	{
+        		alt12=178;
+        	}
+            break;
+        case '\t':
+        case '\n':
+        case '\f':
+        case '\r':
+        case ' ':
+        	{
+        		alt12=179;
+        	}
+            break;
+        case '%':
+        	{
+        		alt12=180;
+        	}
+            break;
+
+        default:
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            EXCEPTION->message      = (void *)"";
+            EXCEPTION->decisionNum  = 12;
+            EXCEPTION->state        = 0;
+
+
+            goto ruleTokensEx;
+
+        }
+
+        switch (alt12)
+        {
+    	case 1:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:10: ABS_TOK
+    	    {
+    	        /* 1:10: ABS_TOK */
+    	        mABS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 2:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:18: AND_TOK
+    	    {
+    	        /* 1:18: AND_TOK */
+    	        mAND_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 3:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:26: ARITH_VAR_ORDER_TOK
+    	    {
+    	        /* 1:26: ARITH_VAR_ORDER_TOK */
+    	        mARITH_VAR_ORDER_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 4:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:46: ARRAY_TOK
+    	    {
+    	        /* 1:46: ARRAY_TOK */
+    	        mARRAY_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 5:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:56: ARROW_TOK
+    	    {
+    	        /* 1:56: ARROW_TOK */
+    	        mARROW_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 6:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:66: ASSERTIONS_TOK
+    	    {
+    	        /* 1:66: ASSERTIONS_TOK */
+    	        mASSERTIONS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 7:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:81: ASSERT_TOK
+    	    {
+    	        /* 1:81: ASSERT_TOK */
+    	        mASSERT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 8:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:92: ASSIGN_TOK
+    	    {
+    	        /* 1:92: ASSIGN_TOK */
+    	        mASSIGN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 9:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:103: ASSUMPTIONS_TOK
+    	    {
+    	        /* 1:103: ASSUMPTIONS_TOK */
+    	        mASSUMPTIONS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 10:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:119: BAR
+    	    {
+    	        /* 1:119: BAR */
+    	        mBAR(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 11:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:123: BITVECTOR_TOK
+    	    {
+    	        /* 1:123: BITVECTOR_TOK */
+    	        mBITVECTOR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 12:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:137: BOOLEAN_TOK
+    	    {
+    	        /* 1:137: BOOLEAN_TOK */
+    	        mBOOLEAN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 13:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:149: BVAND_TOK
+    	    {
+    	        /* 1:149: BVAND_TOK */
+    	        mBVAND_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 14:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:159: BVASHR_TOK
+    	    {
+    	        /* 1:159: BVASHR_TOK */
+    	        mBVASHR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 15:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:170: BVCOMP_TOK
+    	    {
+    	        /* 1:170: BVCOMP_TOK */
+    	        mBVCOMP_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 16:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:181: BVGE_TOK
+    	    {
+    	        /* 1:181: BVGE_TOK */
+    	        mBVGE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 17:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:190: BVGT_TOK
+    	    {
+    	        /* 1:190: BVGT_TOK */
+    	        mBVGT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 18:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:199: BVLE_TOK
+    	    {
+    	        /* 1:199: BVLE_TOK */
+    	        mBVLE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 19:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:208: BVLSHR_TOK
+    	    {
+    	        /* 1:208: BVLSHR_TOK */
+    	        mBVLSHR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 20:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:219: BVLT_TOK
+    	    {
+    	        /* 1:219: BVLT_TOK */
+    	        mBVLT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 21:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:228: BVMULT_TOK
+    	    {
+    	        /* 1:228: BVMULT_TOK */
+    	        mBVMULT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 22:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:239: BVNAND_TOK
+    	    {
+    	        /* 1:239: BVNAND_TOK */
+    	        mBVNAND_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 23:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:250: BVNEG_TOK
+    	    {
+    	        /* 1:250: BVNEG_TOK */
+    	        mBVNEG_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 24:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:260: BVNOR_TOK
+    	    {
+    	        /* 1:260: BVNOR_TOK */
+    	        mBVNOR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 25:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:270: BVPLUS_TOK
+    	    {
+    	        /* 1:270: BVPLUS_TOK */
+    	        mBVPLUS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 26:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:281: BVREPEAT_TOK
+    	    {
+    	        /* 1:281: BVREPEAT_TOK */
+    	        mBVREPEAT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 27:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:294: BVROTL_TOK
+    	    {
+    	        /* 1:294: BVROTL_TOK */
+    	        mBVROTL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 28:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:305: BVROTR_TOK
+    	    {
+    	        /* 1:305: BVROTR_TOK */
+    	        mBVROTR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 29:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:316: BVSDIV_TOK
+    	    {
+    	        /* 1:316: BVSDIV_TOK */
+    	        mBVSDIV_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 30:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:327: BVSGE_TOK
+    	    {
+    	        /* 1:327: BVSGE_TOK */
+    	        mBVSGE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 31:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:337: BVSGT_TOK
+    	    {
+    	        /* 1:337: BVSGT_TOK */
+    	        mBVSGT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 32:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:347: BVSHL_TOK
+    	    {
+    	        /* 1:347: BVSHL_TOK */
+    	        mBVSHL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 33:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:357: BVSLE_TOK
+    	    {
+    	        /* 1:357: BVSLE_TOK */
+    	        mBVSLE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 34:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:367: BVSLT_TOK
+    	    {
+    	        /* 1:367: BVSLT_TOK */
+    	        mBVSLT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 35:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:377: BVSMOD_TOK
+    	    {
+    	        /* 1:377: BVSMOD_TOK */
+    	        mBVSMOD_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 36:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:388: BVSREM_TOK
+    	    {
+    	        /* 1:388: BVSREM_TOK */
+    	        mBVSREM_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 37:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:399: BVSUB_TOK
+    	    {
+    	        /* 1:399: BVSUB_TOK */
+    	        mBVSUB_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 38:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:409: BVUDIV_TOK
+    	    {
+    	        /* 1:409: BVUDIV_TOK */
+    	        mBVUDIV_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 39:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:420: BVUMINUS_TOK
+    	    {
+    	        /* 1:420: BVUMINUS_TOK */
+    	        mBVUMINUS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 40:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:433: BVUREM_TOK
+    	    {
+    	        /* 1:433: BVUREM_TOK */
+    	        mBVUREM_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 41:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:444: BVXNOR_TOK
+    	    {
+    	        /* 1:444: BVXNOR_TOK */
+    	        mBVXNOR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 42:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:455: BVXOR_TOK
+    	    {
+    	        /* 1:455: BVXOR_TOK */
+    	        mBVXOR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 43:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:465: BVZEROEXTEND_TOK
+    	    {
+    	        /* 1:465: BVZEROEXTEND_TOK */
+    	        mBVZEROEXTEND_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 44:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:482: CALL_TOK
+    	    {
+    	        /* 1:482: CALL_TOK */
+    	        mCALL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 45:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:491: CHECKSAT_TOK
+    	    {
+    	        /* 1:491: CHECKSAT_TOK */
+    	        mCHECKSAT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 46:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:504: CHECK_TYPE_TOK
+    	    {
+    	        /* 1:504: CHECK_TYPE_TOK */
+    	        mCHECK_TYPE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 47:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:519: COLON
+    	    {
+    	        /* 1:519: COLON */
+    	        mCOLON(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 48:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:525: COMMA
+    	    {
+    	        /* 1:525: COMMA */
+    	        mCOMMA(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 49:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:531: CONCAT_TOK
+    	    {
+    	        /* 1:531: CONCAT_TOK */
+    	        mCONCAT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 50:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:542: CONTEXT_TOK
+    	    {
+    	        /* 1:542: CONTEXT_TOK */
+    	        mCONTEXT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 51:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:554: CONTINUE_TOK
+    	    {
+    	        /* 1:554: CONTINUE_TOK */
+    	        mCONTINUE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 52:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:567: COUNTEREXAMPLE_TOK
+    	    {
+    	        /* 1:567: COUNTEREXAMPLE_TOK */
+    	        mCOUNTEREXAMPLE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 53:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:586: COUNTERMODEL_TOK
+    	    {
+    	        /* 1:586: COUNTERMODEL_TOK */
+    	        mCOUNTERMODEL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 54:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:603: DATATYPE_TOK
+    	    {
+    	        /* 1:603: DATATYPE_TOK */
+    	        mDATATYPE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 55:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:616: DBG_TOK
+    	    {
+    	        /* 1:616: DBG_TOK */
+    	        mDBG_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 56:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:624: DISEQUAL_TOK
+    	    {
+    	        /* 1:624: DISEQUAL_TOK */
+    	        mDISEQUAL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 57:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:637: DISTINCT_TOK
+    	    {
+    	        /* 1:637: DISTINCT_TOK */
+    	        mDISTINCT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 58:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:650: DIVISIBLE_TOK
+    	    {
+    	        /* 1:650: DIVISIBLE_TOK */
+    	        mDIVISIBLE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 59:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:664: DIV_TOK
+    	    {
+    	        /* 1:664: DIV_TOK */
+    	        mDIV_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 60:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:672: DUMP_ASSUMPTIONS_TOK
+    	    {
+    	        /* 1:672: DUMP_ASSUMPTIONS_TOK */
+    	        mDUMP_ASSUMPTIONS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 61:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:693: DUMP_CLOSURE_PROOF_TOK
+    	    {
+    	        /* 1:693: DUMP_CLOSURE_PROOF_TOK */
+    	        mDUMP_CLOSURE_PROOF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 62:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:716: DUMP_CLOSURE_TOK
+    	    {
+    	        /* 1:716: DUMP_CLOSURE_TOK */
+    	        mDUMP_CLOSURE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 63:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:733: DUMP_PROOF_TOK
+    	    {
+    	        /* 1:733: DUMP_PROOF_TOK */
+    	        mDUMP_PROOF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 64:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:748: DUMP_SIG_TOK
+    	    {
+    	        /* 1:748: DUMP_SIG_TOK */
+    	        mDUMP_SIG_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 65:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:761: DUMP_TCC_ASSUMPTIONS_TOK
+    	    {
+    	        /* 1:761: DUMP_TCC_ASSUMPTIONS_TOK */
+    	        mDUMP_TCC_ASSUMPTIONS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 66:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:786: DUMP_TCC_PROOF_TOK
+    	    {
+    	        /* 1:786: DUMP_TCC_PROOF_TOK */
+    	        mDUMP_TCC_PROOF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 67:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:805: DUMP_TCC_TOK
+    	    {
+    	        /* 1:805: DUMP_TCC_TOK */
+    	        mDUMP_TCC_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 68:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:818: DUMP_UNSAT_CORE_TOK
+    	    {
+    	        /* 1:818: DUMP_UNSAT_CORE_TOK */
+    	        mDUMP_UNSAT_CORE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 69:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:838: ECHO_TOK
+    	    {
+    	        /* 1:838: ECHO_TOK */
+    	        mECHO_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 70:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:847: ELSEIF_TOK
+    	    {
+    	        /* 1:847: ELSEIF_TOK */
+    	        mELSEIF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 71:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:858: ELSE_TOK
+    	    {
+    	        /* 1:858: ELSE_TOK */
+    	        mELSE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 72:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:867: ENDIF_TOK
+    	    {
+    	        /* 1:867: ENDIF_TOK */
+    	        mENDIF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 73:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:877: END_TOK
+    	    {
+    	        /* 1:877: END_TOK */
+    	        mEND_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 74:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:885: EQUAL_TOK
+    	    {
+    	        /* 1:885: EQUAL_TOK */
+    	        mEQUAL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 75:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:895: EXISTS_TOK
+    	    {
+    	        /* 1:895: EXISTS_TOK */
+    	        mEXISTS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 76:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:906: EXIT_TOK
+    	    {
+    	        /* 1:906: EXIT_TOK */
+    	        mEXIT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 77:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:915: EXP_TOK
+    	    {
+    	        /* 1:915: EXP_TOK */
+    	        mEXP_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 78:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:923: FALSE_TOK
+    	    {
+    	        /* 1:923: FALSE_TOK */
+    	        mFALSE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 79:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:933: FLOOR_TOK
+    	    {
+    	        /* 1:933: FLOOR_TOK */
+    	        mFLOOR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 80:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:943: FMF_CARD_TOK
+    	    {
+    	        /* 1:943: FMF_CARD_TOK */
+    	        mFMF_CARD_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 81:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:956: FORALL_TOK
+    	    {
+    	        /* 1:956: FORALL_TOK */
+    	        mFORALL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 82:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:967: FORGET_TOK
+    	    {
+    	        /* 1:967: FORGET_TOK */
+    	        mFORGET_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 83:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:978: GEQ_TOK
+    	    {
+    	        /* 1:978: GEQ_TOK */
+    	        mGEQ_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 84:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:986: GET_CHILD_TOK
+    	    {
+    	        /* 1:986: GET_CHILD_TOK */
+    	        mGET_CHILD_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 85:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1000: GET_OP_TOK
+    	    {
+    	        /* 1:1000: GET_OP_TOK */
+    	        mGET_OP_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 86:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1011: GET_TYPE_TOK
+    	    {
+    	        /* 1:1011: GET_TYPE_TOK */
+    	        mGET_TYPE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 87:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1024: GET_VALUE_TOK
+    	    {
+    	        /* 1:1024: GET_VALUE_TOK */
+    	        mGET_VALUE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 88:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1038: GT_TOK
+    	    {
+    	        /* 1:1038: GT_TOK */
+    	        mGT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 89:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1045: HASHPAREN
+    	    {
+    	        /* 1:1045: HASHPAREN */
+    	        mHASHPAREN(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 90:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1055: HASHSQ
+    	    {
+    	        /* 1:1055: HASHSQ */
+    	        mHASHSQ(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 91:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1062: HELP_TOK
+    	    {
+    	        /* 1:1062: HELP_TOK */
+    	        mHELP_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 92:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1071: IFF_TOK
+    	    {
+    	        /* 1:1071: IFF_TOK */
+    	        mIFF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 93:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1079: IF_TOK
+    	    {
+    	        /* 1:1079: IF_TOK */
+    	        mIF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 94:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1086: IMPLIES_TOK
+    	    {
+    	        /* 1:1086: IMPLIES_TOK */
+    	        mIMPLIES_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 95:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1098: INCLUDE_TOK
+    	    {
+    	        /* 1:1098: INCLUDE_TOK */
+    	        mINCLUDE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 96:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1110: INTDIV_TOK
+    	    {
+    	        /* 1:1110: INTDIV_TOK */
+    	        mINTDIV_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 97:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1121: INT_TOK
+    	    {
+    	        /* 1:1121: INT_TOK */
+    	        mINT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 98:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1129: IN_TOK
+    	    {
+    	        /* 1:1129: IN_TOK */
+    	        mIN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 99:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1136: IS_INTEGER_TOK
+    	    {
+    	        /* 1:1136: IS_INTEGER_TOK */
+    	        mIS_INTEGER_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 100:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1151: JOIN_TOK
+    	    {
+    	        /* 1:1151: JOIN_TOK */
+    	        mJOIN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 101:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1160: LAMBDA
+    	    {
+    	        /* 1:1160: LAMBDA */
+    	        mLAMBDA(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 102:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1167: LBRACE
+    	    {
+    	        /* 1:1167: LBRACE */
+    	        mLBRACE(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 103:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1174: LBRACKET
+    	    {
+    	        /* 1:1174: LBRACKET */
+    	        mLBRACKET(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 104:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1183: LEFTSHIFT_TOK
+    	    {
+    	        /* 1:1183: LEFTSHIFT_TOK */
+    	        mLEFTSHIFT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 105:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1197: LEQ_TOK
+    	    {
+    	        /* 1:1197: LEQ_TOK */
+    	        mLEQ_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 106:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1205: LET_TOK
+    	    {
+    	        /* 1:1205: LET_TOK */
+    	        mLET_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 107:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1213: LPAREN
+    	    {
+    	        /* 1:1213: LPAREN */
+    	        mLPAREN(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 108:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1220: LT_TOK
+    	    {
+    	        /* 1:1220: LT_TOK */
+    	        mLT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 109:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1227: MEMBER_TOK
+    	    {
+    	        /* 1:1227: MEMBER_TOK */
+    	        mMEMBER_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 110:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1238: MINUS_TOK
+    	    {
+    	        /* 1:1238: MINUS_TOK */
+    	        mMINUS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 111:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1248: MOD_TOK
+    	    {
+    	        /* 1:1248: MOD_TOK */
+    	        mMOD_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 112:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1256: NOT_TOK
+    	    {
+    	        /* 1:1256: NOT_TOK */
+    	        mNOT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 113:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1264: OF_TOK
+    	    {
+    	        /* 1:1264: OF_TOK */
+    	        mOF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 114:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1271: OPTION_TOK
+    	    {
+    	        /* 1:1271: OPTION_TOK */
+    	        mOPTION_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 115:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1282: OR_TOK
+    	    {
+    	        /* 1:1282: OR_TOK */
+    	        mOR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 116:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1289: PARENHASH
+    	    {
+    	        /* 1:1289: PARENHASH */
+    	        mPARENHASH(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 117:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1299: PATTERN_TOK
+    	    {
+    	        /* 1:1299: PATTERN_TOK */
+    	        mPATTERN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 118:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1311: PLUS_TOK
+    	    {
+    	        /* 1:1311: PLUS_TOK */
+    	        mPLUS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 119:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1320: POPTO_SCOPE_TOK
+    	    {
+    	        /* 1:1320: POPTO_SCOPE_TOK */
+    	        mPOPTO_SCOPE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 120:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1336: POPTO_TOK
+    	    {
+    	        /* 1:1336: POPTO_TOK */
+    	        mPOPTO_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 121:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1346: POP_SCOPE_TOK
+    	    {
+    	        /* 1:1346: POP_SCOPE_TOK */
+    	        mPOP_SCOPE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 122:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1360: POP_TOK
+    	    {
+    	        /* 1:1360: POP_TOK */
+    	        mPOP_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 123:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1368: PRINT_TOK
+    	    {
+    	        /* 1:1368: PRINT_TOK */
+    	        mPRINT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 124:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1378: PRINT_TYPE_TOK
+    	    {
+    	        /* 1:1378: PRINT_TYPE_TOK */
+    	        mPRINT_TYPE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 125:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1393: PRODUCT_TOK
+    	    {
+    	        /* 1:1393: PRODUCT_TOK */
+    	        mPRODUCT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 126:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1405: PUSH_SCOPE_TOK
+    	    {
+    	        /* 1:1405: PUSH_SCOPE_TOK */
+    	        mPUSH_SCOPE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 127:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1420: PUSH_TOK
+    	    {
+    	        /* 1:1420: PUSH_TOK */
+    	        mPUSH_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 128:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1429: QUERY_TOK
+    	    {
+    	        /* 1:1429: QUERY_TOK */
+    	        mQUERY_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 129:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1439: RBRACE
+    	    {
+    	        /* 1:1439: RBRACE */
+    	        mRBRACE(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 130:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1446: RBRACKET
+    	    {
+    	        /* 1:1446: RBRACKET */
+    	        mRBRACKET(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 131:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1455: REAL_TOK
+    	    {
+    	        /* 1:1455: REAL_TOK */
+    	        mREAL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 132:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1464: RESET_TOK
+    	    {
+    	        /* 1:1464: RESET_TOK */
+    	        mRESET_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 133:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1474: RESTART_TOK
+    	    {
+    	        /* 1:1474: RESTART_TOK */
+    	        mRESTART_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 134:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1486: RIGHTSHIFT_TOK
+    	    {
+    	        /* 1:1486: RIGHTSHIFT_TOK */
+    	        mRIGHTSHIFT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 135:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1501: RPAREN
+    	    {
+    	        /* 1:1501: RPAREN */
+    	        mRPAREN(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 136:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1508: SEMICOLON
+    	    {
+    	        /* 1:1508: SEMICOLON */
+    	        mSEMICOLON(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 137:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1518: SETS_CARD_TOK
+    	    {
+    	        /* 1:1518: SETS_CARD_TOK */
+    	        mSETS_CARD_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 138:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1532: SET_TOK
+    	    {
+    	        /* 1:1532: SET_TOK */
+    	        mSET_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 139:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1540: SQHASH
+    	    {
+    	        /* 1:1540: SQHASH */
+    	        mSQHASH(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 140:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1547: STAR_TOK
+    	    {
+    	        /* 1:1547: STAR_TOK */
+    	        mSTAR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 141:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1556: STRING_CHARAT_TOK
+    	    {
+    	        /* 1:1556: STRING_CHARAT_TOK */
+    	        mSTRING_CHARAT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 142:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1574: STRING_CONCAT_TOK
+    	    {
+    	        /* 1:1574: STRING_CONCAT_TOK */
+    	        mSTRING_CONCAT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 143:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1592: STRING_CONTAINS_TOK
+    	    {
+    	        /* 1:1592: STRING_CONTAINS_TOK */
+    	        mSTRING_CONTAINS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 144:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1612: STRING_INDEXOF_TOK
+    	    {
+    	        /* 1:1612: STRING_INDEXOF_TOK */
+    	        mSTRING_INDEXOF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 145:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1631: STRING_ITOS_TOK
+    	    {
+    	        /* 1:1631: STRING_ITOS_TOK */
+    	        mSTRING_ITOS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 146:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1647: STRING_LENGTH_TOK
+    	    {
+    	        /* 1:1647: STRING_LENGTH_TOK */
+    	        mSTRING_LENGTH_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 147:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1665: STRING_PREFIXOF_TOK
+    	    {
+    	        /* 1:1665: STRING_PREFIXOF_TOK */
+    	        mSTRING_PREFIXOF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 148:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1685: STRING_REPLACE_TOK
+    	    {
+    	        /* 1:1685: STRING_REPLACE_TOK */
+    	        mSTRING_REPLACE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 149:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1704: STRING_STOI_TOK
+    	    {
+    	        /* 1:1704: STRING_STOI_TOK */
+    	        mSTRING_STOI_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 150:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1720: STRING_STOU16_TOK
+    	    {
+    	        /* 1:1720: STRING_STOU16_TOK */
+    	        mSTRING_STOU16_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 151:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1738: STRING_STOU32_TOK
+    	    {
+    	        /* 1:1738: STRING_STOU32_TOK */
+    	        mSTRING_STOU32_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 152:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1756: STRING_SUBSTR_TOK
+    	    {
+    	        /* 1:1756: STRING_SUBSTR_TOK */
+    	        mSTRING_SUBSTR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 153:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1774: STRING_SUFFIXOF_TOK
+    	    {
+    	        /* 1:1774: STRING_SUFFIXOF_TOK */
+    	        mSTRING_SUFFIXOF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 154:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1794: STRING_TOK
+    	    {
+    	        /* 1:1794: STRING_TOK */
+    	        mSTRING_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 155:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1805: STRING_U16TOS_TOK
+    	    {
+    	        /* 1:1805: STRING_U16TOS_TOK */
+    	        mSTRING_U16TOS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 156:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1823: STRING_U32TOS_TOK
+    	    {
+    	        /* 1:1823: STRING_U32TOS_TOK */
+    	        mSTRING_U32TOS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 157:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1841: SUBSTITUTE_TOK
+    	    {
+    	        /* 1:1841: SUBSTITUTE_TOK */
+    	        mSUBSTITUTE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 158:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1856: SUBTYPE_TOK
+    	    {
+    	        /* 1:1856: SUBTYPE_TOK */
+    	        mSUBTYPE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 159:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1868: SX_TOK
+    	    {
+    	        /* 1:1868: SX_TOK */
+    	        mSX_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 160:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1875: THEN_TOK
+    	    {
+    	        /* 1:1875: THEN_TOK */
+    	        mTHEN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 161:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1884: TRACE_TOK
+    	    {
+    	        /* 1:1884: TRACE_TOK */
+    	        mTRACE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 162:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1894: TRANSCLOSURE_TOK
+    	    {
+    	        /* 1:1894: TRANSCLOSURE_TOK */
+    	        mTRANSCLOSURE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 163:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1911: TRANSFORM_TOK
+    	    {
+    	        /* 1:1911: TRANSFORM_TOK */
+    	        mTRANSFORM_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 164:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1925: TRANSPOSE_TOK
+    	    {
+    	        /* 1:1925: TRANSPOSE_TOK */
+    	        mTRANSPOSE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 165:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1939: TRUE_TOK
+    	    {
+    	        /* 1:1939: TRUE_TOK */
+    	        mTRUE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 166:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1948: TUPLE_TOK
+    	    {
+    	        /* 1:1948: TUPLE_TOK */
+    	        mTUPLE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 167:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1958: TYPE_TOK
+    	    {
+    	        /* 1:1958: TYPE_TOK */
+    	        mTYPE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 168:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1967: UNDERSCORE
+    	    {
+    	        /* 1:1967: UNDERSCORE */
+    	        mUNDERSCORE(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 169:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1978: UNIVSET_TOK
+    	    {
+    	        /* 1:1978: UNIVSET_TOK */
+    	        mUNIVSET_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 170:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1990: UNTRACE_TOK
+    	    {
+    	        /* 1:1990: UNTRACE_TOK */
+    	        mUNTRACE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 171:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:2002: WHERE_TOK
+    	    {
+    	        /* 1:2002: WHERE_TOK */
+    	        mWHERE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 172:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:2012: WITH_TOK
+    	    {
+    	        /* 1:2012: WITH_TOK */
+    	        mWITH_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 173:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:2021: XOR_TOK
+    	    {
+    	        /* 1:2021: XOR_TOK */
+    	        mXOR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 174:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:2029: IDENTIFIER
+    	    {
+    	        /* 1:2029: IDENTIFIER */
+    	        mIDENTIFIER(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 175:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:2040: HEX_LITERAL
+    	    {
+    	        /* 1:2040: HEX_LITERAL */
+    	        mHEX_LITERAL(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 176:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:2052: BINARY_LITERAL
+    	    {
+    	        /* 1:2052: BINARY_LITERAL */
+    	        mBINARY_LITERAL(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 177:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:2067: STRING_LITERAL
+    	    {
+    	        /* 1:2067: STRING_LITERAL */
+    	        mSTRING_LITERAL(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 178:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:2082: NUMBER_OR_RANGEOP
+    	    {
+    	        /* 1:2082: NUMBER_OR_RANGEOP */
+    	        mNUMBER_OR_RANGEOP(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 179:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:2100: WHITESPACE
+    	    {
+    	        /* 1:2100: WHITESPACE */
+    	        mWHITESPACE(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 180:
+    	    // ../../../../../../src/parser/cvc/Cvc.g:1:2111: COMMENT
+    	    {
+    	        /* 1:2111: COMMENT */
+    	        mCOMMENT(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+
+        }
+    }
+
+
+    goto ruleTokensEx; /* Prevent compiler warnings */
+ruleTokensEx: ;
+}
+
+/* =========================================================================
+ * Lexer matching rules end.
+ * =========================================================================
+ */
+/* End of Lexer code
+ * ================================================
+ * ================================================
+ */
+
+
+/* End of code
+ * =============================================================================
+ */
diff --git a/src/parser/cvc/CvcLexer.h b/src/parser/cvc/CvcLexer.h
new file mode 100644
index 0000000..dac6417
--- /dev/null
+++ b/src/parser/cvc/CvcLexer.h
@@ -0,0 +1,1523 @@
+/** \file
+ *  This C header file was generated by $ANTLR version 3.4
+ *
+ *     -  From the grammar source file : ../../../../../../src/parser/cvc/Cvc.g
+ *     -                            On : 2017-03-16 01:03:03
+ *     -                 for the lexer : CvcLexerLexer
+ *
+ * Editing it, at least manually, is not wise.
+ *
+ * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws.
+ *
+ *
+ * The lexer 
+CvcLexer
+
+has the callable functions (rules) shown below,
+ * which will invoke the code for the associated rule in the source grammar
+ * assuming that the input stream is pointing to a token/text stream that could begin
+ * this rule.
+ *
+ * For instance if you call the first (topmost) rule in a parser grammar, you will
+ * get the results of a full parse, but calling a rule half way through the grammar will
+ * allow you to pass part of a full token stream to the parser, such as for syntax checking
+ * in editors and so on.
+ *
+ * The parser entry points are called indirectly (by function pointer to function) via
+ * a parser context typedef pCvcLexer, which is returned from a call to CvcLexerNew().
+ *
+ * As this is a generated lexer, it is unlikely you will call it 'manually'. However
+ * the methods are provided anyway.
+ *
+ * The methods in pCvcLexer are  as follows:
+ *
+ *  - 
+ void
+      pCvcLexer->ABS_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->AND_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->ARITH_VAR_ORDER_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->ARRAY_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->ARROW_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->ASSERTIONS_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->ASSERT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->ASSIGN_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->ASSUMPTIONS_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BAR(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BITVECTOR_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BOOLEAN_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVAND_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVASHR_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVCOMP_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVGE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVGT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVLE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVLSHR_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVLT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVMULT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVNAND_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVNEG_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVNOR_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVPLUS_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVREPEAT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVROTL_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVROTR_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVSDIV_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVSGE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVSGT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVSHL_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVSLE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVSLT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVSMOD_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVSREM_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVSUB_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVUDIV_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVUMINUS_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVUREM_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVXNOR_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVXOR_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BVZEROEXTEND_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->CALL_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->CHECKSAT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->CHECK_TYPE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->COLON(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->COMMA(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->CONCAT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->CONTEXT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->CONTINUE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->COUNTEREXAMPLE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->COUNTERMODEL_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->DATATYPE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->DBG_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->DISEQUAL_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->DISTINCT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->DIVISIBLE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->DIV_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->DUMP_ASSUMPTIONS_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->DUMP_CLOSURE_PROOF_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->DUMP_CLOSURE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->DUMP_PROOF_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->DUMP_SIG_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->DUMP_TCC_ASSUMPTIONS_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->DUMP_TCC_PROOF_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->DUMP_TCC_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->DUMP_UNSAT_CORE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->ECHO_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->ELSEIF_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->ELSE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->ENDIF_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->END_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->EQUAL_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->EXISTS_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->EXIT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->EXP_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->FALSE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->FLOOR_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->FMF_CARD_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->FORALL_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->FORGET_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->GEQ_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->GET_CHILD_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->GET_OP_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->GET_TYPE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->GET_VALUE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->GT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->HASHPAREN(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->HASHSQ(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->HELP_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->IFF_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->IF_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->IMPLIES_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->INCLUDE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->INTDIV_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->INT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->IN_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->IS_INTEGER_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->JOIN_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->LAMBDA(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->LBRACE(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->LBRACKET(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->LEFTSHIFT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->LEQ_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->LET_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->LPAREN(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->LT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->MEMBER_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->MINUS_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->MOD_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->NOT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->OF_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->OPTION_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->OR_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->PARENHASH(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->PATTERN_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->PLUS_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->POPTO_SCOPE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->POPTO_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->POP_SCOPE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->POP_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->PRINT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->PRINT_TYPE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->PRODUCT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->PUSH_SCOPE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->PUSH_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->QUERY_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->RBRACE(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->RBRACKET(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->REAL_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->RESET_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->RESTART_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->RIGHTSHIFT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->RPAREN(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->SEMICOLON(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->SETS_CARD_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->SET_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->SQHASH(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->STAR_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->STRING_CHARAT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->STRING_CONCAT_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->STRING_CONTAINS_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->STRING_INDEXOF_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->STRING_ITOS_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->STRING_LENGTH_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->STRING_PREFIXOF_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->STRING_REPLACE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->STRING_STOI_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->STRING_STOU16_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->STRING_STOU32_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->STRING_SUBSTR_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->STRING_SUFFIXOF_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->STRING_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->STRING_U16TOS_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->STRING_U32TOS_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->SUBSTITUTE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->SUBTYPE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->SX_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->THEN_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->TRACE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->TRANSCLOSURE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->TRANSFORM_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->TRANSPOSE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->TRUE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->TUPLE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->TYPE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->UNDERSCORE(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->UNIVSET_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->UNTRACE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->WHERE_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->WITH_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->XOR_TOK(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->IDENTIFIER(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->HEX_LITERAL(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->BINARY_LITERAL(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->STRING_LITERAL(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->ALPHA(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->DIGIT(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->NUMBER_OR_RANGEOP(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->INTEGER_LITERAL(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->DECIMAL_LITERAL(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->DOT(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->DOTDOT(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->HEX_DIGIT(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->WHITESPACE(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->COMMENT(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->ESCAPE(pCvcLexer)
+ *  - 
+ void
+      pCvcLexer->Tokens(pCvcLexer)
+ *
+ * The return type for any particular rule is of course determined by the source
+ * grammar file.
+ */
+// [The "BSD license"]
+// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
+// http://www.temporal-wave.com
+// http://www.linkedin.com/in/jimidle
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+// 3. The name of the author may not be used to endorse or promote products
+//    derived from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef	_CvcLexer_H
+#define _CvcLexer_H
+/* =============================================================================
+ * Standard antlr3 C runtime definitions
+ */
+#include    <antlr3.h>
+
+/* End of standard antlr 3 runtime definitions
+ * =============================================================================
+ */
+
+
+// This should come immediately after #include <antlr3.h> in the generated
+// files. See the documentation in "parser/antlr_undefines.h" for more details.
+#include "parser/antlr_undefines.h"
+
+/** This suppresses warnings about the redefinition of token symbols between different
+  * parsers. The redefinitions should be harmless as long as no client: (a) #include's
+  * the lexer headers for two grammars AND (b) uses the token symbol definitions. */
+#pragma GCC system_header
+
+#if defined(CVC4_COMPETITION_MODE) && !defined(CVC4_SMTCOMP_APPLICATION_TRACK)
+/* This improves performance by ~10 percent on big inputs.
+ * This option is only valid if we know the input is ASCII (or some 8-bit encoding).
+ * If we know the input is UTF-16, we can use ANTLR3_INLINE_INPUT_UTF16.
+ * Otherwise, we have to let the lexer detect the encoding at runtime.
+ */
+#  define ANTLR3_INLINE_INPUT_ASCII
+#  define ANTLR3_INLINE_INPUT_8BIT
+#endif /* CVC4_COMPETITION_MODE && !CVC4_SMTCOMP_APPLICATION_TRACK */
+
+#include "parser/antlr_input.h"
+#include "parser/antlr_tracing.h"
+#include "parser/parser.h"
+#include "util/integer.h"
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Forward declare the context typedef so that we can use it before it is
+// properly defined. Delegators and delegates (from import statements) are
+// interdependent and their context structures contain pointers to each other
+// C only allows such things to be declared if you pre-declare the typedef.
+//
+typedef struct CvcLexer_Ctx_struct CvcLexer, * pCvcLexer;
+
+
+
+#ifdef	ANTLR3_WINDOWS
+// Disable: Unreferenced parameter,							- Rules with parameters that are not used
+//          constant conditional,							- ANTLR realizes that a prediction is always true (synpred usually)
+//          initialized but unused variable					- tree rewrite variables declared but not needed
+//          Unreferenced local variable						- lexer rule declares but does not always use _type
+//          potentially unitialized variable used			- retval always returned from a rule
+//			unreferenced local function has been removed	- susually getTokenNames or freeScope, they can go without warnigns
+//
+// These are only really displayed at warning level /W4 but that is the code ideal I am aiming at
+// and the codegen must generate some of these warnings by necessity, apart from 4100, which is
+// usually generated when a parser rule is given a parameter that it does not use. Mostly though
+// this is a matter of orthogonality hence I disable that one.
+//
+#pragma warning( disable : 4100 )
+#pragma warning( disable : 4101 )
+#pragma warning( disable : 4127 )
+#pragma warning( disable : 4189 )
+#pragma warning( disable : 4505 )
+#pragma warning( disable : 4701 )
+#endif
+
+/** Context tracking structure for 
+CvcLexer
+
+ */
+struct CvcLexer_Ctx_struct
+{
+    /** Built in ANTLR3 context tracker contains all the generic elements
+     *  required for context tracking.
+     */
+    pANTLR3_LEXER    pLexer;
+
+     void
+     (*mABS_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mAND_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mARITH_VAR_ORDER_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mARRAY_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mARROW_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mASSERTIONS_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mASSERT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mASSIGN_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mASSUMPTIONS_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBAR)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBITVECTOR_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBOOLEAN_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVAND_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVASHR_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVCOMP_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVGE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVGT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVLE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVLSHR_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVLT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVMULT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVNAND_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVNEG_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVNOR_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVPLUS_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVREPEAT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVROTL_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVROTR_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVSDIV_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVSGE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVSGT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVSHL_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVSLE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVSLT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVSMOD_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVSREM_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVSUB_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVUDIV_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVUMINUS_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVUREM_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVXNOR_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVXOR_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBVZEROEXTEND_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mCALL_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mCHECKSAT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mCHECK_TYPE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mCOLON)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mCOMMA)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mCONCAT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mCONTEXT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mCONTINUE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mCOUNTEREXAMPLE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mCOUNTERMODEL_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mDATATYPE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mDBG_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mDISEQUAL_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mDISTINCT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mDIVISIBLE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mDIV_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mDUMP_ASSUMPTIONS_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mDUMP_CLOSURE_PROOF_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mDUMP_CLOSURE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mDUMP_PROOF_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mDUMP_SIG_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mDUMP_TCC_ASSUMPTIONS_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mDUMP_TCC_PROOF_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mDUMP_TCC_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mDUMP_UNSAT_CORE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mECHO_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mELSEIF_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mELSE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mENDIF_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mEND_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mEQUAL_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mEXISTS_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mEXIT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mEXP_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mFALSE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mFLOOR_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mFMF_CARD_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mFORALL_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mFORGET_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mGEQ_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mGET_CHILD_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mGET_OP_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mGET_TYPE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mGET_VALUE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mGT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mHASHPAREN)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mHASHSQ)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mHELP_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mIFF_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mIF_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mIMPLIES_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mINCLUDE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mINTDIV_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mINT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mIN_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mIS_INTEGER_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mJOIN_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mLAMBDA)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mLBRACE)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mLBRACKET)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mLEFTSHIFT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mLEQ_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mLET_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mLPAREN)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mLT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mMEMBER_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mMINUS_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mMOD_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mNOT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mOF_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mOPTION_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mOR_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mPARENHASH)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mPATTERN_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mPLUS_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mPOPTO_SCOPE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mPOPTO_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mPOP_SCOPE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mPOP_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mPRINT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mPRINT_TYPE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mPRODUCT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mPUSH_SCOPE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mPUSH_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mQUERY_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mRBRACE)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mRBRACKET)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mREAL_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mRESET_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mRESTART_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mRIGHTSHIFT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mRPAREN)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSEMICOLON)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSETS_CARD_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSET_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSQHASH)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSTAR_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSTRING_CHARAT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSTRING_CONCAT_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSTRING_CONTAINS_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSTRING_INDEXOF_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSTRING_ITOS_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSTRING_LENGTH_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSTRING_PREFIXOF_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSTRING_REPLACE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSTRING_STOI_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSTRING_STOU16_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSTRING_STOU32_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSTRING_SUBSTR_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSTRING_SUFFIXOF_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSTRING_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSTRING_U16TOS_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSTRING_U32TOS_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSUBSTITUTE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSUBTYPE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSX_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mTHEN_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mTRACE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mTRANSCLOSURE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mTRANSFORM_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mTRANSPOSE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mTRUE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mTUPLE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mTYPE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mUNDERSCORE)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mUNIVSET_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mUNTRACE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mWHERE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mWITH_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mXOR_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mIDENTIFIER)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mHEX_LITERAL)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mBINARY_LITERAL)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mSTRING_LITERAL)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mALPHA)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mDIGIT)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mNUMBER_OR_RANGEOP)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mINTEGER_LITERAL)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mDECIMAL_LITERAL)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mDOT)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mDOTDOT)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mHEX_DIGIT)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mWHITESPACE)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mCOMMENT)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mESCAPE)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
+     (*mTokens)	(struct CvcLexer_Ctx_struct * ctx);
+    const char * (*getGrammarFileName)();
+    void            (*reset)  (struct CvcLexer_Ctx_struct * ctx);
+    void	    (*free)   (struct CvcLexer_Ctx_struct * ctx);
+};
+
+// Function protoypes for the constructor functions that external translation units
+// such as delegators and delegates may wish to call.
+//
+ANTLR3_API pCvcLexer CvcLexerNew         (
+pANTLR3_INPUT_STREAM
+ instream);
+ANTLR3_API pCvcLexer CvcLexerNewSSD      (
+pANTLR3_INPUT_STREAM
+ instream, pANTLR3_RECOGNIZER_SHARED_STATE state);
+
+/** Symbolic definitions of all the tokens that the 
+lexer
+ will work with.
+ * \{
+ *
+ * Antlr will define EOF, but we can't use that as it it is too common in
+ * in C header files and that would be confusing. There is no way to filter this out at the moment
+ * so we just undef it here for now. That isn't the value we get back from C recognizers
+ * anyway. We are looking for ANTLR3_TOKEN_EOF.
+ */
+#ifdef	EOF
+#undef	EOF
+#endif
+#ifdef	Tokens
+#undef	Tokens
+#endif
+#define EOF      -1
+#define ABS_TOK      4
+#define ALPHA      5
+#define AND_TOK      6
+#define ARITH_VAR_ORDER_TOK      7
+#define ARRAY_TOK      8
+#define ARROW_TOK      9
+#define ASSERTIONS_TOK      10
+#define ASSERT_TOK      11
+#define ASSIGN_TOK      12
+#define ASSUMPTIONS_TOK      13
+#define BAR      14
+#define BINARY_LITERAL      15
+#define BITVECTOR_TOK      16
+#define BOOLEAN_TOK      17
+#define BVAND_TOK      18
+#define BVASHR_TOK      19
+#define BVCOMP_TOK      20
+#define BVGE_TOK      21
+#define BVGT_TOK      22
+#define BVLE_TOK      23
+#define BVLSHR_TOK      24
+#define BVLT_TOK      25
+#define BVMULT_TOK      26
+#define BVNAND_TOK      27
+#define BVNEG_TOK      28
+#define BVNOR_TOK      29
+#define BVPLUS_TOK      30
+#define BVREPEAT_TOK      31
+#define BVROTL_TOK      32
+#define BVROTR_TOK      33
+#define BVSDIV_TOK      34
+#define BVSGE_TOK      35
+#define BVSGT_TOK      36
+#define BVSHL_TOK      37
+#define BVSLE_TOK      38
+#define BVSLT_TOK      39
+#define BVSMOD_TOK      40
+#define BVSREM_TOK      41
+#define BVSUB_TOK      42
+#define BVUDIV_TOK      43
+#define BVUMINUS_TOK      44
+#define BVUREM_TOK      45
+#define BVXNOR_TOK      46
+#define BVXOR_TOK      47
+#define BVZEROEXTEND_TOK      48
+#define CALL_TOK      49
+#define CHECKSAT_TOK      50
+#define CHECK_TYPE_TOK      51
+#define COLON      52
+#define COMMA      53
+#define COMMENT      54
+#define CONCAT_TOK      55
+#define CONTEXT_TOK      56
+#define CONTINUE_TOK      57
+#define COUNTEREXAMPLE_TOK      58
+#define COUNTERMODEL_TOK      59
+#define DATATYPE_TOK      60
+#define DBG_TOK      61
+#define DECIMAL_LITERAL      62
+#define DIGIT      63
+#define DISEQUAL_TOK      64
+#define DISTINCT_TOK      65
+#define DIVISIBLE_TOK      66
+#define DIV_TOK      67
+#define DOT      68
+#define DOTDOT      69
+#define DUMP_ASSUMPTIONS_TOK      70
+#define DUMP_CLOSURE_PROOF_TOK      71
+#define DUMP_CLOSURE_TOK      72
+#define DUMP_PROOF_TOK      73
+#define DUMP_SIG_TOK      74
+#define DUMP_TCC_ASSUMPTIONS_TOK      75
+#define DUMP_TCC_PROOF_TOK      76
+#define DUMP_TCC_TOK      77
+#define DUMP_UNSAT_CORE_TOK      78
+#define ECHO_TOK      79
+#define ELSEIF_TOK      80
+#define ELSE_TOK      81
+#define ENDIF_TOK      82
+#define END_TOK      83
+#define EQUAL_TOK      84
+#define ESCAPE      85
+#define EXISTS_TOK      86
+#define EXIT_TOK      87
+#define EXP_TOK      88
+#define FALSE_TOK      89
+#define FLOOR_TOK      90
+#define FMF_CARD_TOK      91
+#define FORALL_TOK      92
+#define FORGET_TOK      93
+#define GEQ_TOK      94
+#define GET_CHILD_TOK      95
+#define GET_OP_TOK      96
+#define GET_TYPE_TOK      97
+#define GET_VALUE_TOK      98
+#define GT_TOK      99
+#define HASHPAREN      100
+#define HASHSQ      101
+#define HELP_TOK      102
+#define HEX_DIGIT      103
+#define HEX_LITERAL      104
+#define IDENTIFIER      105
+#define IFF_TOK      106
+#define IF_TOK      107
+#define IMPLIES_TOK      108
+#define INCLUDE_TOK      109
+#define INTDIV_TOK      110
+#define INTEGER_LITERAL      111
+#define INT_TOK      112
+#define IN_TOK      113
+#define IS_INTEGER_TOK      114
+#define JOIN_TOK      115
+#define LAMBDA      116
+#define LBRACE      117
+#define LBRACKET      118
+#define LEFTSHIFT_TOK      119
+#define LEQ_TOK      120
+#define LET_TOK      121
+#define LPAREN      122
+#define LT_TOK      123
+#define MEMBER_TOK      124
+#define MINUS_TOK      125
+#define MOD_TOK      126
+#define NOT_TOK      127
+#define NUMBER_OR_RANGEOP      128
+#define OF_TOK      129
+#define OPTION_TOK      130
+#define OR_TOK      131
+#define PARENHASH      132
+#define PATTERN_TOK      133
+#define PLUS_TOK      134
+#define POPTO_SCOPE_TOK      135
+#define POPTO_TOK      136
+#define POP_SCOPE_TOK      137
+#define POP_TOK      138
+#define PRINT_TOK      139
+#define PRINT_TYPE_TOK      140
+#define PRODUCT_TOK      141
+#define PUSH_SCOPE_TOK      142
+#define PUSH_TOK      143
+#define QUERY_TOK      144
+#define RBRACE      145
+#define RBRACKET      146
+#define REAL_TOK      147
+#define RESET_TOK      148
+#define RESTART_TOK      149
+#define RIGHTSHIFT_TOK      150
+#define RPAREN      151
+#define SEMICOLON      152
+#define SETS_CARD_TOK      153
+#define SET_TOK      154
+#define SQHASH      155
+#define STAR_TOK      156
+#define STRING_CHARAT_TOK      157
+#define STRING_CONCAT_TOK      158
+#define STRING_CONTAINS_TOK      159
+#define STRING_INDEXOF_TOK      160
+#define STRING_ITOS_TOK      161
+#define STRING_LENGTH_TOK      162
+#define STRING_LITERAL      163
+#define STRING_PREFIXOF_TOK      164
+#define STRING_REPLACE_TOK      165
+#define STRING_STOI_TOK      166
+#define STRING_STOU16_TOK      167
+#define STRING_STOU32_TOK      168
+#define STRING_SUBSTR_TOK      169
+#define STRING_SUFFIXOF_TOK      170
+#define STRING_TOK      171
+#define STRING_U16TOS_TOK      172
+#define STRING_U32TOS_TOK      173
+#define SUBSTITUTE_TOK      174
+#define SUBTYPE_TOK      175
+#define SX_TOK      176
+#define THEN_TOK      177
+#define TRACE_TOK      178
+#define TRANSCLOSURE_TOK      179
+#define TRANSFORM_TOK      180
+#define TRANSPOSE_TOK      181
+#define TRUE_TOK      182
+#define TUPLE_TOK      183
+#define TYPE_TOK      184
+#define UNDERSCORE      185
+#define UNIVSET_TOK      186
+#define UNTRACE_TOK      187
+#define WHERE_TOK      188
+#define WHITESPACE      189
+#define WITH_TOK      190
+#define XOR_TOK      191
+#ifdef	EOF
+#undef	EOF
+#define	EOF	ANTLR3_TOKEN_EOF
+#endif
+
+#ifndef TOKENSOURCE
+#define TOKENSOURCE(lxr) lxr->pLexer->rec->state->tokSource
+#endif
+
+/* End of token definitions for CvcLexer
+ * =============================================================================
+ */
+/** } */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* END - Note:Keep extra line feed to satisfy UNIX systems */
diff --git a/src/parser/cvc/CvcParser.c b/src/parser/cvc/CvcParser.c
new file mode 100644
index 0000000..d51da5e
--- /dev/null
+++ b/src/parser/cvc/CvcParser.c
@@ -0,0 +1,27589 @@
+/** \file
+ *  This C source file was generated by $ANTLR version 3.4
+ *
+ *     -  From the grammar source file : ../../../../../../src/parser/cvc/Cvc.g
+ *     -                            On : 2017-03-16 01:03:03
+ *     -                for the parser : CvcParserParser
+ *
+ * Editing it, at least manually, is not wise.
+ *
+ * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws.
+ *
+ *
+*/
+// [The "BSD license"]
+// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
+// http://www.temporal-wave.com
+// http://www.linkedin.com/in/jimidle
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+// 3. The name of the author may not be used to endorse or promote products
+//    derived from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+/* =============================================================================
+ * This is what the grammar programmer asked us to put at the top of every file.
+ */
+
+/**
+ ** This file is part of CVC4.
+ ** Copyright (c) 2009-2014  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.
+ **/
+
+/* End of Header action.
+ * =============================================================================
+ */
+
+/* -----------------------------------------
+ * Include the ANTLR3 generated header file.
+ */
+#include    "CvcParser.h"
+
+
+#include <sstream>
+#include <string>
+#include <vector>
+
+#include "base/output.h"
+#include "base/ptr_closer.h"
+#include "expr/expr.h"
+#include "expr/kind.h"
+#include "expr/type.h"
+#include "parser/antlr_input.h"
+#include "parser/parser.h"
+
+
+#define REPEAT_COMMAND(k, CommandCtor)                      \
+  ({                                                        \
+    unsigned __k = (k);                                     \
+    (__k <= 1)                                              \
+      ? (Command*) new CommandCtor                          \
+      : ({                                                  \
+          CommandSequence* __seq = new CommandSequence();   \
+          while(__k-- > 0) {                                \
+            __seq->addCommand(new CommandCtor);             \
+          }                                                 \
+          (Command*) __seq;                                 \
+        });                                                 \
+  })
+
+using namespace CVC4;
+using namespace CVC4::parser;
+
+/* These need to be macros so they can refer to the PARSER macro, which will be defined
+ * by ANTLR *after* this section. (If they were functions, PARSER would be undefined.) */
+#undef PARSER_STATE
+#define PARSER_STATE ((Parser*)PARSER->super)
+#undef EXPR_MANAGER
+#define EXPR_MANAGER PARSER_STATE->getExprManager()
+#undef MK_EXPR
+#define MK_EXPR EXPR_MANAGER->mkExpr
+#undef MK_CONST
+#define MK_CONST EXPR_MANAGER->mkConst
+#define UNSUPPORTED PARSER_STATE->unimplementedFeature
+
+#define ENSURE_BV_SIZE(k, f)                                   \
+{                                                              \
+  unsigned size = BitVectorType(f.getType()).getSize();        \
+  if(k > size) {                                               \
+    f = MK_EXPR(MK_CONST(BitVectorZeroExtend(k - size)), f);   \
+  } else if (k < size) {                                       \
+    f = MK_EXPR(MK_CONST(BitVectorExtract(k - 1, 0)), f);      \
+  }                                                            \
+}
+
+
+/* ----------------------------------------- */
+
+
+
+
+
+/* MACROS that hide the C interface implementations from the
+ * generated code, which makes it a little more understandable to the human eye.
+ * I am very much against using C pre-processor macros for function calls and bits
+ * of code as you cannot see what is happening when single stepping in debuggers
+ * and so on. The exception (in my book at least) is for generated code, where you are
+ * not maintaining it, but may wish to read and understand it. If you single step it, you know that input()
+ * hides some indirect calls, but is always referring to the input stream. This is
+ * probably more readable than ctx->input->istream->input(snarfle0->blarg) and allows me to rejig
+ * the runtime interfaces without changing the generated code too often, without
+ * confusing the reader of the generated output, who may not wish to know the gory
+ * details of the interface inheritance.
+ */
+
+#define		CTX	ctx
+
+/* Aids in accessing scopes for grammar programmers
+ */
+#undef	SCOPE_TYPE
+#undef	SCOPE_STACK
+#undef	SCOPE_TOP
+#define	SCOPE_TYPE(scope)   pCvcParser_##scope##_SCOPE
+#define SCOPE_STACK(scope)  pCvcParser_##scope##Stack
+#define	SCOPE_TOP(scope)    ctx->pCvcParser_##scope##Top
+#define	SCOPE_SIZE(scope)		ctx->pCvcParser_##scope##Stack_limit
+#define SCOPE_INSTANCE(scope, i)	(ctx->SCOPE_STACK(scope)->get(ctx->SCOPE_STACK(scope),i))
+
+/* Macros for accessing things in the parser
+ */
+
+#undef	    PARSER
+#undef	    RECOGNIZER
+#undef	    HAVEPARSEDRULE
+#undef		MEMOIZE
+#undef	    INPUT
+#undef	    STRSTREAM
+#undef	    HASEXCEPTION
+#undef	    EXCEPTION
+#undef	    MATCHT
+#undef	    MATCHANYT
+#undef	    FOLLOWSTACK
+#undef	    FOLLOWPUSH
+#undef	    FOLLOWPOP
+#undef	    PRECOVER
+#undef	    PREPORTERROR
+#undef	    LA
+#undef	    LT
+#undef	    CONSTRUCTEX
+#undef	    CONSUME
+#undef	    MARK
+#undef	    REWIND
+#undef	    REWINDLAST
+#undef	    PERRORRECOVERY
+#undef	    HASFAILED
+#undef	    FAILEDFLAG
+#undef	    RECOVERFROMMISMATCHEDSET
+#undef	    RECOVERFROMMISMATCHEDELEMENT
+#undef		INDEX
+#undef      ADAPTOR
+#undef		SEEK
+#undef	    RULEMEMO
+#undef		DBG
+
+#define	    PARSER				ctx->pParser
+#define	    RECOGNIZER				PARSER->rec
+#define	    PSRSTATE				RECOGNIZER->state
+#define	    HAVEPARSEDRULE(r)			RECOGNIZER->alreadyParsedRule(RECOGNIZER, r)
+#define	    MEMOIZE(ri,si)			RECOGNIZER->memoize(RECOGNIZER, ri, si)
+#define	    INPUT				PARSER->tstream
+#define	    STRSTREAM				INPUT
+#define	    ISTREAM				INPUT->istream
+#define	    INDEX()				ISTREAM->index(INPUT->istream)
+#define	    HASEXCEPTION()			(PSRSTATE->error == ANTLR3_TRUE)
+#define	    EXCEPTION				PSRSTATE->exception
+#define	    MATCHT(t, fs)			RECOGNIZER->match(RECOGNIZER, t, fs)
+#define	    MATCHANYT()				RECOGNIZER->matchAny(RECOGNIZER)
+#define	    FOLLOWSTACK				PSRSTATE->following
+#ifdef  SKIP_FOLLOW_SETS
+#define	    FOLLOWPUSH(x)
+#define	    FOLLOWPOP()
+#else
+#define	    FOLLOWPUSH(x)			FOLLOWSTACK->push(FOLLOWSTACK, ((void *)(&(x))), NULL)
+#define	    FOLLOWPOP()				FOLLOWSTACK->pop(FOLLOWSTACK)
+#endif
+#define	    PRECOVER()				RECOGNIZER->recover(RECOGNIZER)
+#define	    PREPORTERROR()			RECOGNIZER->reportError(RECOGNIZER)
+#define	    LA(n)				INPUT->istream->_LA(ISTREAM, n)
+#define	    LT(n)				INPUT->_LT(INPUT, n)
+#define	    CONSTRUCTEX()			RECOGNIZER->exConstruct(RECOGNIZER)
+#define	    CONSUME()				ISTREAM->consume(ISTREAM)
+#define	    MARK()				ISTREAM->mark(ISTREAM)
+#define	    REWIND(m)				ISTREAM->rewind(ISTREAM, m)
+#define	    REWINDLAST()			ISTREAM->rewindLast(ISTREAM)
+#define	    SEEK(n)				ISTREAM->seek(ISTREAM, n)
+#define	    PERRORRECOVERY			PSRSTATE->errorRecovery
+#define	    FAILEDFLAG				PSRSTATE->failed
+#define	    HASFAILED()				(FAILEDFLAG == ANTLR3_TRUE)
+#define	    BACKTRACKING			PSRSTATE->backtracking
+#define	    RECOVERFROMMISMATCHEDSET(s)		RECOGNIZER->recoverFromMismatchedSet(RECOGNIZER, s)
+#define	    RECOVERFROMMISMATCHEDELEMENT(e)	RECOGNIZER->recoverFromMismatchedElement(RECOGNIZER, s)
+#define     ADAPTOR                         ctx->adaptor
+#define		RULEMEMO						PSRSTATE->ruleMemo
+#define		DBG								RECOGNIZER->debugger
+
+
+#define		TOKTEXT(tok, txt)				tok, (pANTLR3_UINT8)txt
+
+/* The 4 tokens defined below may well clash with your own #defines or token types. If so
+ * then for the present you must use different names for your defines as these are hard coded
+ * in the code generator. It would be better not to use such names internally, and maybe
+ * we can change this in a forthcoming release. I deliberately do not #undef these
+ * here as this will at least give you a redefined error somewhere if they clash.
+ */
+#define	    UP	    ANTLR3_TOKEN_UP
+#define	    DOWN    ANTLR3_TOKEN_DOWN
+#define	    EOR	    ANTLR3_TOKEN_EOR
+#define	    INVALID ANTLR3_TOKEN_INVALID
+
+
+/* =============================================================================
+ * Functions to create and destroy scopes. First come the rule scopes, followed
+ * by the global declared scopes.
+ */
+
+
+
+/* ============================================================================= */
+
+/* =============================================================================
+ * Start of recognizer
+ */
+
+
+/** \brief Table of all token names in symbolic order, mainly used for
+ *         error reporting.
+ */
+pANTLR3_UINT8   CvcParserTokenNames[188+4]
+     = {
+        (pANTLR3_UINT8) "<invalid>",       /* String to print to indicate an invalid token */
+        (pANTLR3_UINT8) "<EOR>",
+        (pANTLR3_UINT8) "<DOWN>",
+        (pANTLR3_UINT8) "<UP>",
+        (pANTLR3_UINT8) "ABS_TOK",
+        (pANTLR3_UINT8) "ALPHA",
+        (pANTLR3_UINT8) "AND_TOK",
+        (pANTLR3_UINT8) "ARITH_VAR_ORDER_TOK",
+        (pANTLR3_UINT8) "ARRAY_TOK",
+        (pANTLR3_UINT8) "ARROW_TOK",
+        (pANTLR3_UINT8) "ASSERTIONS_TOK",
+        (pANTLR3_UINT8) "ASSERT_TOK",
+        (pANTLR3_UINT8) "ASSIGN_TOK",
+        (pANTLR3_UINT8) "ASSUMPTIONS_TOK",
+        (pANTLR3_UINT8) "BAR",
+        (pANTLR3_UINT8) "BINARY_LITERAL",
+        (pANTLR3_UINT8) "BITVECTOR_TOK",
+        (pANTLR3_UINT8) "BOOLEAN_TOK",
+        (pANTLR3_UINT8) "BVAND_TOK",
+        (pANTLR3_UINT8) "BVASHR_TOK",
+        (pANTLR3_UINT8) "BVCOMP_TOK",
+        (pANTLR3_UINT8) "BVGE_TOK",
+        (pANTLR3_UINT8) "BVGT_TOK",
+        (pANTLR3_UINT8) "BVLE_TOK",
+        (pANTLR3_UINT8) "BVLSHR_TOK",
+        (pANTLR3_UINT8) "BVLT_TOK",
+        (pANTLR3_UINT8) "BVMULT_TOK",
+        (pANTLR3_UINT8) "BVNAND_TOK",
+        (pANTLR3_UINT8) "BVNEG_TOK",
+        (pANTLR3_UINT8) "BVNOR_TOK",
+        (pANTLR3_UINT8) "BVPLUS_TOK",
+        (pANTLR3_UINT8) "BVREPEAT_TOK",
+        (pANTLR3_UINT8) "BVROTL_TOK",
+        (pANTLR3_UINT8) "BVROTR_TOK",
+        (pANTLR3_UINT8) "BVSDIV_TOK",
+        (pANTLR3_UINT8) "BVSGE_TOK",
+        (pANTLR3_UINT8) "BVSGT_TOK",
+        (pANTLR3_UINT8) "BVSHL_TOK",
+        (pANTLR3_UINT8) "BVSLE_TOK",
+        (pANTLR3_UINT8) "BVSLT_TOK",
+        (pANTLR3_UINT8) "BVSMOD_TOK",
+        (pANTLR3_UINT8) "BVSREM_TOK",
+        (pANTLR3_UINT8) "BVSUB_TOK",
+        (pANTLR3_UINT8) "BVUDIV_TOK",
+        (pANTLR3_UINT8) "BVUMINUS_TOK",
+        (pANTLR3_UINT8) "BVUREM_TOK",
+        (pANTLR3_UINT8) "BVXNOR_TOK",
+        (pANTLR3_UINT8) "BVXOR_TOK",
+        (pANTLR3_UINT8) "BVZEROEXTEND_TOK",
+        (pANTLR3_UINT8) "CALL_TOK",
+        (pANTLR3_UINT8) "CHECKSAT_TOK",
+        (pANTLR3_UINT8) "CHECK_TYPE_TOK",
+        (pANTLR3_UINT8) "COLON",
+        (pANTLR3_UINT8) "COMMA",
+        (pANTLR3_UINT8) "COMMENT",
+        (pANTLR3_UINT8) "CONCAT_TOK",
+        (pANTLR3_UINT8) "CONTEXT_TOK",
+        (pANTLR3_UINT8) "CONTINUE_TOK",
+        (pANTLR3_UINT8) "COUNTEREXAMPLE_TOK",
+        (pANTLR3_UINT8) "COUNTERMODEL_TOK",
+        (pANTLR3_UINT8) "DATATYPE_TOK",
+        (pANTLR3_UINT8) "DBG_TOK",
+        (pANTLR3_UINT8) "DECIMAL_LITERAL",
+        (pANTLR3_UINT8) "DIGIT",
+        (pANTLR3_UINT8) "DISEQUAL_TOK",
+        (pANTLR3_UINT8) "DISTINCT_TOK",
+        (pANTLR3_UINT8) "DIVISIBLE_TOK",
+        (pANTLR3_UINT8) "DIV_TOK",
+        (pANTLR3_UINT8) "DOT",
+        (pANTLR3_UINT8) "DOTDOT",
+        (pANTLR3_UINT8) "DUMP_ASSUMPTIONS_TOK",
+        (pANTLR3_UINT8) "DUMP_CLOSURE_PROOF_TOK",
+        (pANTLR3_UINT8) "DUMP_CLOSURE_TOK",
+        (pANTLR3_UINT8) "DUMP_PROOF_TOK",
+        (pANTLR3_UINT8) "DUMP_SIG_TOK",
+        (pANTLR3_UINT8) "DUMP_TCC_ASSUMPTIONS_TOK",
+        (pANTLR3_UINT8) "DUMP_TCC_PROOF_TOK",
+        (pANTLR3_UINT8) "DUMP_TCC_TOK",
+        (pANTLR3_UINT8) "DUMP_UNSAT_CORE_TOK",
+        (pANTLR3_UINT8) "ECHO_TOK",
+        (pANTLR3_UINT8) "ELSEIF_TOK",
+        (pANTLR3_UINT8) "ELSE_TOK",
+        (pANTLR3_UINT8) "ENDIF_TOK",
+        (pANTLR3_UINT8) "END_TOK",
+        (pANTLR3_UINT8) "EQUAL_TOK",
+        (pANTLR3_UINT8) "ESCAPE",
+        (pANTLR3_UINT8) "EXISTS_TOK",
+        (pANTLR3_UINT8) "EXIT_TOK",
+        (pANTLR3_UINT8) "EXP_TOK",
+        (pANTLR3_UINT8) "FALSE_TOK",
+        (pANTLR3_UINT8) "FLOOR_TOK",
+        (pANTLR3_UINT8) "FMF_CARD_TOK",
+        (pANTLR3_UINT8) "FORALL_TOK",
+        (pANTLR3_UINT8) "FORGET_TOK",
+        (pANTLR3_UINT8) "GEQ_TOK",
+        (pANTLR3_UINT8) "GET_CHILD_TOK",
+        (pANTLR3_UINT8) "GET_OP_TOK",
+        (pANTLR3_UINT8) "GET_TYPE_TOK",
+        (pANTLR3_UINT8) "GET_VALUE_TOK",
+        (pANTLR3_UINT8) "GT_TOK",
+        (pANTLR3_UINT8) "HASHPAREN",
+        (pANTLR3_UINT8) "HASHSQ",
+        (pANTLR3_UINT8) "HELP_TOK",
+        (pANTLR3_UINT8) "HEX_DIGIT",
+        (pANTLR3_UINT8) "HEX_LITERAL",
+        (pANTLR3_UINT8) "IDENTIFIER",
+        (pANTLR3_UINT8) "IFF_TOK",
+        (pANTLR3_UINT8) "IF_TOK",
+        (pANTLR3_UINT8) "IMPLIES_TOK",
+        (pANTLR3_UINT8) "INCLUDE_TOK",
+        (pANTLR3_UINT8) "INTDIV_TOK",
+        (pANTLR3_UINT8) "INTEGER_LITERAL",
+        (pANTLR3_UINT8) "INT_TOK",
+        (pANTLR3_UINT8) "IN_TOK",
+        (pANTLR3_UINT8) "IS_INTEGER_TOK",
+        (pANTLR3_UINT8) "JOIN_TOK",
+        (pANTLR3_UINT8) "LAMBDA",
+        (pANTLR3_UINT8) "LBRACE",
+        (pANTLR3_UINT8) "LBRACKET",
+        (pANTLR3_UINT8) "LEFTSHIFT_TOK",
+        (pANTLR3_UINT8) "LEQ_TOK",
+        (pANTLR3_UINT8) "LET_TOK",
+        (pANTLR3_UINT8) "LPAREN",
+        (pANTLR3_UINT8) "LT_TOK",
+        (pANTLR3_UINT8) "MEMBER_TOK",
+        (pANTLR3_UINT8) "MINUS_TOK",
+        (pANTLR3_UINT8) "MOD_TOK",
+        (pANTLR3_UINT8) "NOT_TOK",
+        (pANTLR3_UINT8) "NUMBER_OR_RANGEOP",
+        (pANTLR3_UINT8) "OF_TOK",
+        (pANTLR3_UINT8) "OPTION_TOK",
+        (pANTLR3_UINT8) "OR_TOK",
+        (pANTLR3_UINT8) "PARENHASH",
+        (pANTLR3_UINT8) "PATTERN_TOK",
+        (pANTLR3_UINT8) "PLUS_TOK",
+        (pANTLR3_UINT8) "POPTO_SCOPE_TOK",
+        (pANTLR3_UINT8) "POPTO_TOK",
+        (pANTLR3_UINT8) "POP_SCOPE_TOK",
+        (pANTLR3_UINT8) "POP_TOK",
+        (pANTLR3_UINT8) "PRINT_TOK",
+        (pANTLR3_UINT8) "PRINT_TYPE_TOK",
+        (pANTLR3_UINT8) "PRODUCT_TOK",
+        (pANTLR3_UINT8) "PUSH_SCOPE_TOK",
+        (pANTLR3_UINT8) "PUSH_TOK",
+        (pANTLR3_UINT8) "QUERY_TOK",
+        (pANTLR3_UINT8) "RBRACE",
+        (pANTLR3_UINT8) "RBRACKET",
+        (pANTLR3_UINT8) "REAL_TOK",
+        (pANTLR3_UINT8) "RESET_TOK",
+        (pANTLR3_UINT8) "RESTART_TOK",
+        (pANTLR3_UINT8) "RIGHTSHIFT_TOK",
+        (pANTLR3_UINT8) "RPAREN",
+        (pANTLR3_UINT8) "SEMICOLON",
+        (pANTLR3_UINT8) "SETS_CARD_TOK",
+        (pANTLR3_UINT8) "SET_TOK",
+        (pANTLR3_UINT8) "SQHASH",
+        (pANTLR3_UINT8) "STAR_TOK",
+        (pANTLR3_UINT8) "STRING_CHARAT_TOK",
+        (pANTLR3_UINT8) "STRING_CONCAT_TOK",
+        (pANTLR3_UINT8) "STRING_CONTAINS_TOK",
+        (pANTLR3_UINT8) "STRING_INDEXOF_TOK",
+        (pANTLR3_UINT8) "STRING_ITOS_TOK",
+        (pANTLR3_UINT8) "STRING_LENGTH_TOK",
+        (pANTLR3_UINT8) "STRING_LITERAL",
+        (pANTLR3_UINT8) "STRING_PREFIXOF_TOK",
+        (pANTLR3_UINT8) "STRING_REPLACE_TOK",
+        (pANTLR3_UINT8) "STRING_STOI_TOK",
+        (pANTLR3_UINT8) "STRING_STOU16_TOK",
+        (pANTLR3_UINT8) "STRING_STOU32_TOK",
+        (pANTLR3_UINT8) "STRING_SUBSTR_TOK",
+        (pANTLR3_UINT8) "STRING_SUFFIXOF_TOK",
+        (pANTLR3_UINT8) "STRING_TOK",
+        (pANTLR3_UINT8) "STRING_U16TOS_TOK",
+        (pANTLR3_UINT8) "STRING_U32TOS_TOK",
+        (pANTLR3_UINT8) "SUBSTITUTE_TOK",
+        (pANTLR3_UINT8) "SUBTYPE_TOK",
+        (pANTLR3_UINT8) "SX_TOK",
+        (pANTLR3_UINT8) "THEN_TOK",
+        (pANTLR3_UINT8) "TRACE_TOK",
+        (pANTLR3_UINT8) "TRANSCLOSURE_TOK",
+        (pANTLR3_UINT8) "TRANSFORM_TOK",
+        (pANTLR3_UINT8) "TRANSPOSE_TOK",
+        (pANTLR3_UINT8) "TRUE_TOK",
+        (pANTLR3_UINT8) "TUPLE_TOK",
+        (pANTLR3_UINT8) "TYPE_TOK",
+        (pANTLR3_UINT8) "UNDERSCORE",
+        (pANTLR3_UINT8) "UNIVSET_TOK",
+        (pANTLR3_UINT8) "UNTRACE_TOK",
+        (pANTLR3_UINT8) "WHERE_TOK",
+        (pANTLR3_UINT8) "WHITESPACE",
+        (pANTLR3_UINT8) "WITH_TOK",
+        (pANTLR3_UINT8) "XOR_TOK"
+       };
+
+
+
+// Forward declare the locally static matching functions we have generated.
+//
+static 
+ CVC4::Expr
+	parseExpr    (pCvcParser ctx);
+static 
+ CVC4::Command*
+	parseCommand    (pCvcParser ctx);
+static 
+ void
+	command    (pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+static 
+ void
+	typeOrVarLetDecl    (pCvcParser ctx, CVC4::parser::DeclarationCheck check);
+static 
+ void
+	mainCommand    (pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+static 
+ void
+	simpleSymbolicExpr    (pCvcParser ctx, CVC4::SExpr& sexpr);
+static 
+ void
+	symbolicExpr    (pCvcParser ctx, CVC4::SExpr& sexpr);
+static 
+ void
+	toplevelDeclaration    (pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+static 
+ void
+	boundVarDecl    (pCvcParser ctx, std::vector<std::string>& ids, CVC4::Type& t);
+static 
+ void
+	boundVarDecls    (pCvcParser ctx);
+static 
+ void
+	boundVarDeclsReturn    (pCvcParser ctx, std::vector<CVC4::Expr>& terms, std::vector<CVC4::Type>& types);
+static 
+ void
+	boundVarDeclReturn    (pCvcParser ctx, std::vector<CVC4::Expr>& terms, std::vector<CVC4::Type>& types);
+static 
+ void
+	declareTypes    (pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd, const std::vector<std::string>& idList);
+static 
+ void
+	declareVariables    (pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd, CVC4::Type& t, const std::vector<std::string>& idList, bool topLevel);
+static 
+ void
+	identifierList    (pCvcParser ctx, std::vector<std::string>& idList, CVC4::parser::DeclarationCheck check, CVC4::parser::SymbolType type);
+static 
+ void
+	identifier    (pCvcParser ctx, std::string& id, CVC4::parser::DeclarationCheck check, CVC4::parser::SymbolType type);
+static 
+ void
+	type    (pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check);
+static 
+ void
+	restrictedType    (pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check);
+static 
+ void
+	restrictedTypePossiblyFunctionLHS    (pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check, bool& lhs);
+static 
+ void
+	parameterization    (pCvcParser ctx, CVC4::parser::DeclarationCheck check, std::vector<CVC4::Type>& params);
+static 
+ CVC4::parser::cvc::mySubrangeBound
+	bound    (pCvcParser ctx);
+static 
+ void
+	typeLetDecl    (pCvcParser ctx, CVC4::parser::DeclarationCheck check);
+static 
+ void
+	formula    (pCvcParser ctx, CVC4::Expr& f);
+static 
+ size_t
+	morecomparisons    (pCvcParser ctx, std::vector<CVC4::Expr>& expressions, std::vector<unsigned>& operators);
+static 
+ size_t
+	nots    (pCvcParser ctx);
+static 
+ void
+	prefixFormula    (pCvcParser ctx, CVC4::Expr& f);
+static 
+ void
+	instantiationPatterns    (pCvcParser ctx, CVC4::Expr& expr);
+static 
+ void
+	letDecl    (pCvcParser ctx);
+static 
+ void
+	booleanBinop    (pCvcParser ctx, unsigned& op);
+static 
+ void
+	comparison    (pCvcParser ctx, CVC4::Expr& f);
+static 
+ void
+	comparisonBinop    (pCvcParser ctx, unsigned& op);
+static 
+ void
+	arithmeticBinop    (pCvcParser ctx, unsigned& op);
+static 
+ void
+	term    (pCvcParser ctx, CVC4::Expr& f);
+static 
+ void
+	arrayStore    (pCvcParser ctx, CVC4::Expr& f);
+static 
+ void
+	tupleStore    (pCvcParser ctx, CVC4::Expr& f);
+static 
+ void
+	recordStore    (pCvcParser ctx, CVC4::Expr& f);
+static 
+ void
+	uminusTerm    (pCvcParser ctx, CVC4::Expr& f);
+static 
+ void
+	bvBinaryOpTerm    (pCvcParser ctx, CVC4::Expr& f);
+static 
+ void
+	bvBinop    (pCvcParser ctx, unsigned& op);
+static 
+ void
+	bvNegTerm    (pCvcParser ctx, CVC4::Expr& f);
+static 
+ void
+	postfixTerm    (pCvcParser ctx, CVC4::Expr& f);
+static 
+ void
+	bvTerm    (pCvcParser ctx, CVC4::Expr& f);
+static 
+ void
+	stringTerm    (pCvcParser ctx, CVC4::Expr& f);
+static 
+ void
+	setsTerm    (pCvcParser ctx, CVC4::Expr& f);
+static 
+ void
+	simpleTerm    (pCvcParser ctx, CVC4::Expr& f);
+static 
+ void
+	typeAscription    (pCvcParser ctx, const CVC4::Expr& f, CVC4::Type& t);
+static 
+ void
+	recordEntry    (pCvcParser ctx, std::string& name, CVC4::Expr& ex);
+static 
+ void
+	iteTerm    (pCvcParser ctx, CVC4::Expr& f);
+static 
+ void
+	iteElseTerm    (pCvcParser ctx, CVC4::Expr& f);
+static 
+ void
+	datatypeDef    (pCvcParser ctx, std::vector<CVC4::Datatype>& datatypes);
+static 
+ void
+	constructorDef    (pCvcParser ctx, CVC4::Datatype& type);
+static 
+ void
+	selector    (pCvcParser ctx, CVC4::PtrCloser<CVC4::DatatypeConstructor>* ctor);
+static 
+ unsigned
+	numeral    (pCvcParser ctx);
+static 
+ CVC4::Rational
+	integer    (pCvcParser ctx);
+static 
+ void
+	str    (pCvcParser ctx, std::string& s);
+static 
+ ANTLR3_BOOLEAN
+	synpred1_Cvc    (pCvcParser ctx);
+static void	CvcParserFree(pCvcParser ctx);
+static void     CvcParserReset (pCvcParser ctx);
+
+/* For use in tree output where we are accumulating rule labels via label += ruleRef
+ * we need a function that knows how to free a return scope when the list is destroyed.
+ * We cannot just use ANTLR3_FREE because in debug tracking mode, this is a macro.
+ */
+static	void ANTLR3_CDECL freeScope(void * scope)
+{
+    ANTLR3_FREE(scope);
+}
+
+/** \brief Name of the grammar file that generated this code
+ */
+static const char fileName[] = "../../../../../../src/parser/cvc/Cvc.g";
+
+/** \brief Return the name of the grammar file that generated this code.
+ */
+static const char * getGrammarFileName()
+{
+	return fileName;
+}
+/** \brief Create a new CvcParser parser and return a context for it.
+ *
+ * \param[in] instream Pointer to an input stream interface.
+ *
+ * \return Pointer to new parser context upon success.
+ */
+ANTLR3_API pCvcParser
+CvcParserNew   (pANTLR3_COMMON_TOKEN_STREAM instream)
+{
+	// See if we can create a new parser with the standard constructor
+	//
+	return CvcParserNewSSD(instream, NULL);
+}
+
+/** \brief Create a new CvcParser parser and return a context for it.
+ *
+ * \param[in] instream Pointer to an input stream interface.
+ *
+ * \return Pointer to new parser context upon success.
+ */
+ANTLR3_API pCvcParser
+CvcParserNewSSD   (pANTLR3_COMMON_TOKEN_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state)
+{
+    pCvcParser ctx;	    /* Context structure we will build and return   */
+
+    ctx	= (pCvcParser) ANTLR3_CALLOC(1, sizeof(CvcParser));
+
+    if	(ctx == NULL)
+    {
+		// Failed to allocate memory for parser context
+		//
+        return  NULL;
+    }
+
+    /* -------------------------------------------------------------------
+     * Memory for basic structure is allocated, now to fill in
+     * the base ANTLR3 structures. We initialize the function pointers
+     * for the standard ANTLR3 parser function set, but upon return
+     * from here, the programmer may set the pointers to provide custom
+     * implementations of each function.
+     *
+     * We don't use the macros defined in CvcParser.h here, in order that you can get a sense
+     * of what goes where.
+     */
+
+    /* Create a base parser/recognizer, using the supplied token stream
+     */
+    ctx->pParser	    = antlr3ParserNewStream(ANTLR3_SIZE_HINT, instream->tstream, state);
+    /* Install the implementation of our CvcParser interface
+     */
+    ctx->parseExpr	= parseExpr;
+    ctx->parseCommand	= parseCommand;
+    ctx->command	= command;
+    ctx->typeOrVarLetDecl	= typeOrVarLetDecl;
+    ctx->mainCommand	= mainCommand;
+    ctx->simpleSymbolicExpr	= simpleSymbolicExpr;
+    ctx->symbolicExpr	= symbolicExpr;
+    ctx->toplevelDeclaration	= toplevelDeclaration;
+    ctx->boundVarDecl	= boundVarDecl;
+    ctx->boundVarDecls	= boundVarDecls;
+    ctx->boundVarDeclsReturn	= boundVarDeclsReturn;
+    ctx->boundVarDeclReturn	= boundVarDeclReturn;
+    ctx->declareTypes	= declareTypes;
+    ctx->declareVariables	= declareVariables;
+    ctx->identifierList	= identifierList;
+    ctx->identifier	= identifier;
+    ctx->type	= type;
+    ctx->restrictedType	= restrictedType;
+    ctx->restrictedTypePossiblyFunctionLHS	= restrictedTypePossiblyFunctionLHS;
+    ctx->parameterization	= parameterization;
+    ctx->bound	= bound;
+    ctx->typeLetDecl	= typeLetDecl;
+    ctx->formula	= formula;
+    ctx->morecomparisons	= morecomparisons;
+    ctx->nots	= nots;
+    ctx->prefixFormula	= prefixFormula;
+    ctx->instantiationPatterns	= instantiationPatterns;
+    ctx->letDecl	= letDecl;
+    ctx->booleanBinop	= booleanBinop;
+    ctx->comparison	= comparison;
+    ctx->comparisonBinop	= comparisonBinop;
+    ctx->arithmeticBinop	= arithmeticBinop;
+    ctx->term	= term;
+    ctx->arrayStore	= arrayStore;
+    ctx->tupleStore	= tupleStore;
+    ctx->recordStore	= recordStore;
+    ctx->uminusTerm	= uminusTerm;
+    ctx->bvBinaryOpTerm	= bvBinaryOpTerm;
+    ctx->bvBinop	= bvBinop;
+    ctx->bvNegTerm	= bvNegTerm;
+    ctx->postfixTerm	= postfixTerm;
+    ctx->bvTerm	= bvTerm;
+    ctx->stringTerm	= stringTerm;
+    ctx->setsTerm	= setsTerm;
+    ctx->simpleTerm	= simpleTerm;
+    ctx->typeAscription	= typeAscription;
+    ctx->recordEntry	= recordEntry;
+    ctx->iteTerm	= iteTerm;
+    ctx->iteElseTerm	= iteElseTerm;
+    ctx->datatypeDef	= datatypeDef;
+    ctx->constructorDef	= constructorDef;
+    ctx->selector	= selector;
+    ctx->numeral	= numeral;
+    ctx->integer	= integer;
+    ctx->str	= str;
+    ctx->synpred1_Cvc	= synpred1_Cvc;
+    ctx->free			= CvcParserFree;
+    ctx->reset			= CvcParserReset;
+    ctx->getGrammarFileName	= getGrammarFileName;
+
+    /* Install the scope pushing methods.
+     */
+
+    /* Install the token table
+     */
+    PSRSTATE->tokenNames   = CvcParserTokenNames;
+
+
+    /* Return the newly built parser to the caller
+     */
+    return  ctx;
+}
+
+static void
+CvcParserReset (pCvcParser ctx)
+{
+    RECOGNIZER->reset(RECOGNIZER);
+}
+
+/** Free the parser resources
+ */
+ static void
+ CvcParserFree(pCvcParser ctx)
+ {
+    /* Free any scope memory
+     */
+
+	// Free this parser
+	//
+    ctx->pParser->free(ctx->pParser);
+
+
+    ANTLR3_FREE(ctx);
+
+    /* Everything is released, so we can return
+     */
+    return;
+ }
+
+/** Return token names used by this 
+parser
+
+ *
+ * The returned pointer is used as an index into the token names table (using the token
+ * number as the index).
+ *
+ * \return Pointer to first char * in the table.
+ */
+static pANTLR3_UINT8    *getTokenNames()
+{
+        return CvcParserTokenNames;
+}
+
+
+
+    // Idea and code guidance from Sam Harwell,
+    // http://www.antlr.org/wiki/display/ANTLR3/Operator+precedence+parser
+
+    bool isRightToLeft(int type) {
+      // return true here for any operators that are right-to-left associative
+      switch(type) {
+      case IMPLIES_TOK: return true;
+      default: return false;
+      }
+    }/* isRightToLeft() */
+
+    int getOperatorPrecedence(int type) {
+      switch(type) {
+      case BITVECTOR_TOK: return 1;
+      //case DOT:
+      case LPAREN:
+      case LBRACE: return 2;
+      case LBRACKET: return 3;
+      case ARROW_TOK: return 4;
+      case IS_INTEGER_TOK: return 5;
+      case BVSLT_TOK:
+      case BVSLE_TOK:
+      case BVSGT_TOK:
+      case BVSGE_TOK: return 6;
+      case BVLT_TOK:
+      case BVLE_TOK:
+      case BVGT_TOK:
+      case BVGE_TOK: return 7;
+      case LEFTSHIFT_TOK:
+      case RIGHTSHIFT_TOK: return 8;
+      case SX_TOK:
+      case BVZEROEXTEND_TOK:
+      case BVREPEAT_TOK:
+      case BVROTL_TOK:
+      case BVROTR_TOK: return 9;
+      case BVUDIV_TOK:
+      case BVSDIV_TOK:
+      case BVUREM_TOK:
+      case BVSREM_TOK:
+      case BVSMOD_TOK:
+      case BVSHL_TOK:
+      case BVASHR_TOK:
+      case BVLSHR_TOK: return 10;
+      case BVUMINUS_TOK:
+      case BVPLUS_TOK:
+      case BVSUB_TOK: return 11;
+      case BVNEG_TOK: return 12;
+      case BVXNOR_TOK: return 13;
+      case BVNOR_TOK:
+      case BVCOMP_TOK: return 14;
+      case BVNAND_TOK: return 15;
+      case BVXOR_TOK: return 16;
+      case BVAND_TOK: return 17;
+      case BAR: return 18;
+      case CONCAT_TOK: return 19;
+    //case UMINUS_TOK: return 20;
+      case WITH_TOK: return 21;
+      case EXP_TOK: return 22;
+      case STAR_TOK:
+      case INTDIV_TOK:
+      case DIV_TOK:
+      case TUPLE_TOK:
+      case MOD_TOK: return 23;
+      case PLUS_TOK:
+      case MINUS_TOK:
+      case JOIN_TOK:
+      case TRANSPOSE_TOK:
+      case PRODUCT_TOK:
+      case TRANSCLOSURE_TOK: return 24;
+      case LEQ_TOK:
+      case LT_TOK:
+      case GEQ_TOK:
+      case GT_TOK:
+      case MEMBER_TOK: 
+      case SETS_CARD_TOK:
+      case FMF_CARD_TOK: return 25;
+      case EQUAL_TOK:
+      case DISEQUAL_TOK: return 26;
+      case NOT_TOK: return 27;
+      case AND_TOK: return 28;
+      case OR_TOK:
+      case XOR_TOK: return 29;
+      case IMPLIES_TOK: return 30;// right-to-left
+      case IFF_TOK: return 31;
+      case FORALL_TOK:
+      case EXISTS_TOK: return 32;
+      case ASSIGN_TOK:
+      case IN_TOK: return 33;
+
+      default:
+        std::stringstream ss;
+        ss << "internal error: no entry in precedence table for operator " << CvcParserTokenNames[type];
+        throw ParserException(ss.str());
+      }
+    }/* getOperatorPrecedence() */
+
+    Kind getOperatorKind(int type, bool& negate) {
+      negate = false;
+
+      switch(type) {
+        // booleanBinop
+      case IFF_TOK: return kind::EQUAL;
+      case IMPLIES_TOK: return kind::IMPLIES;
+      case OR_TOK: return kind::OR;
+      case XOR_TOK: return kind::XOR;
+      case AND_TOK: return kind::AND;
+      
+      case PRODUCT_TOK: return kind::PRODUCT;
+      case JOIN_TOK: return kind::JOIN;
+
+        // comparisonBinop
+      case EQUAL_TOK: return kind::EQUAL;
+      case DISEQUAL_TOK: negate = true; return kind::EQUAL;
+      case GT_TOK: return kind::GT;
+      case GEQ_TOK: return kind::GEQ;
+      case LT_TOK: return kind::LT;
+      case LEQ_TOK: return kind::LEQ;
+      case MEMBER_TOK: return kind::MEMBER;
+      case SETS_CARD_TOK: return kind::CARD;
+      case FMF_CARD_TOK: return kind::CARDINALITY_CONSTRAINT;
+
+        // arithmeticBinop
+      case PLUS_TOK: return kind::PLUS;
+      case MINUS_TOK: return kind::MINUS;
+      case STAR_TOK: return kind::MULT;
+      case INTDIV_TOK: return kind::INTS_DIVISION;
+      case MOD_TOK: return kind::INTS_MODULUS;
+      case DIV_TOK: return kind::DIVISION;
+      case EXP_TOK: return kind::POW;
+
+        // bvBinop
+      case CONCAT_TOK: return kind::BITVECTOR_CONCAT;
+      case BAR: return kind::BITVECTOR_OR;
+      case BVAND_TOK: return kind::BITVECTOR_AND;
+      
+      }
+
+      std::stringstream ss;
+      ss << "internal error: no entry in operator-kind table for operator " << CvcParserTokenNames[type];
+      throw ParserException(ss.str());
+
+    }/* getOperatorKind() */
+
+    unsigned findPivot(const std::vector<unsigned>& operators,
+                       unsigned startIndex, unsigned stopIndex) {
+      unsigned pivot = startIndex;
+      unsigned pivotRank = getOperatorPrecedence(operators[pivot]);
+      /*Debug("prec") << "initial pivot at " << pivot
+                    << "(" << CvcParserTokenNames[operators[pivot]] << ") "
+                    << "level " << pivotRank << std::endl;*/
+      for(unsigned i = startIndex + 1; i <= stopIndex; ++i) {
+        unsigned current = getOperatorPrecedence(operators[i]);
+        bool rtl = isRightToLeft(operators[i]);
+        if(current > pivotRank || (current == pivotRank && !rtl)) {
+          /*Debug("prec") << "new pivot at " << i
+                        << "(" << CvcParserTokenNames[operators[i]] << ") "
+                        << "level " << current << " rtl == " << rtl << std::endl;*/
+          pivot = i;
+          pivotRank = current;
+        }
+      }
+      return pivot;
+    }/* findPivot() */
+
+    Expr createPrecedenceTree(Parser* parser, ExprManager* em,
+                              const std::vector<CVC4::Expr>& expressions,
+                              const std::vector<unsigned>& operators,
+                              unsigned startIndex, unsigned stopIndex) {
+      assert(expressions.size() == operators.size() + 1);
+      assert(startIndex < expressions.size());
+      assert(stopIndex < expressions.size());
+      assert(startIndex <= stopIndex);
+
+      if(stopIndex == startIndex) {
+        return expressions[startIndex];
+      }
+
+      unsigned pivot = findPivot(operators, startIndex, stopIndex - 1);
+      //Debug("prec") << "pivot[" << startIndex << "," << stopIndex - 1 << "] at " << pivot << std::endl;
+      bool negate;
+      Kind k = getOperatorKind(operators[pivot], negate);
+      Expr lhs = createPrecedenceTree(parser, em, expressions, operators, startIndex, pivot);
+      Expr rhs = createPrecedenceTree(parser, em, expressions, operators, pivot + 1, stopIndex);
+
+      switch(k) {
+      case kind::LEQ          : if(lhs.getType().isSet()) { k = kind::SUBSET; } break;
+      case kind::MINUS        : if(lhs.getType().isSet()) { k = kind::SETMINUS; } break;
+      case kind::BITVECTOR_AND: if(lhs.getType().isSet()) { k = kind::INTERSECTION; } break;
+      case kind::BITVECTOR_OR : if(lhs.getType().isSet()) { k = kind::UNION; } break;
+      default: break;
+      }
+      Expr e = em->mkExpr(k, lhs, rhs);
+      return negate ? em->mkExpr(e.getType().isSet() ? kind::COMPLEMENT : kind::NOT, e) : e;
+    }/* createPrecedenceTree() recursive variant */
+
+    Expr createPrecedenceTree(Parser* parser, ExprManager* em,
+                              const std::vector<CVC4::Expr>& expressions,
+                              const std::vector<unsigned>& operators) {
+      if(Debug.isOn("prec") && operators.size() > 1) {
+        for(unsigned i = 0; i < expressions.size(); ++i) {
+          Debug("prec") << expressions[i];
+          if(operators.size() > i) {
+            Debug("prec") << ' ' << CvcParserTokenNames[operators[i]] << ' ';
+          }
+        }
+        Debug("prec") << std::endl;
+      }
+
+      Expr e = createPrecedenceTree(parser, em, expressions, operators, 0, expressions.size() - 1);
+      if(Debug.isOn("prec") && operators.size() > 1) {
+        language::SetLanguage::Scope ls(Debug("prec"), language::output::LANG_AST);
+        Debug("prec") << "=> " << e << std::endl;
+      }
+      return e;
+    }/* createPrecedenceTree() base variant */
+
+    /** Add n NOTs to the front of e and return the result. */
+    Expr addNots(ExprManager* em, size_t n, Expr e) {
+      Kind k = e.getType().isSet() ? kind::COMPLEMENT : kind::NOT;
+      while(n-- > 0) {
+        e = em->mkExpr(k, e);
+      }
+      return e;
+    }/* addNots() */
+
+
+
+/* Declare the bitsets
+ */
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_parseExpr1800  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_parseExpr1800_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_parseExpr1800	= { FOLLOW_formula_in_parseExpr1800_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EOF_in_parseExpr1807  */
+static	ANTLR3_BITWORD FOLLOW_EOF_in_parseExpr1807_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_parseExpr1807	= { FOLLOW_EOF_in_parseExpr1807_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_command_in_parseCommand1838  */
+static	ANTLR3_BITWORD FOLLOW_command_in_parseCommand1838_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_command_in_parseCommand1838	= { FOLLOW_command_in_parseCommand1838_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_parseCommand1845  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_parseCommand1845_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_parseCommand1845	= { FOLLOW_LPAREN_in_parseCommand1845_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_parseCommand1847  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_parseCommand1847_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_parseCommand1847	= { FOLLOW_IDENTIFIER_in_parseCommand1847_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EOF_in_parseCommand1859  */
+static	ANTLR3_BITWORD FOLLOW_EOF_in_parseCommand1859_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_parseCommand1859	= { FOLLOW_EOF_in_parseCommand1859_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_mainCommand_in_command1878  */
+static	ANTLR3_BITWORD FOLLOW_mainCommand_in_command1878_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000001000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_mainCommand_in_command1878	= { FOLLOW_mainCommand_in_command1878_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMICOLON_in_command1881  */
+static	ANTLR3_BITWORD FOLLOW_SEMICOLON_in_command1881_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SEMICOLON_in_command1881	= { FOLLOW_SEMICOLON_in_command1881_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMICOLON_in_command1889  */
+static	ANTLR3_BITWORD FOLLOW_SEMICOLON_in_command1889_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SEMICOLON_in_command1889	= { FOLLOW_SEMICOLON_in_command1889_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LET_TOK_in_command1897  */
+static	ANTLR3_BITWORD FOLLOW_LET_TOK_in_command1897_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LET_TOK_in_command1897	= { FOLLOW_LET_TOK_in_command1897_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_typeOrVarLetDecl_in_command1907  */
+static	ANTLR3_BITWORD FOLLOW_typeOrVarLetDecl_in_command1907_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0002000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_typeOrVarLetDecl_in_command1907	= { FOLLOW_typeOrVarLetDecl_in_command1907_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_command1922  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_command1922_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_command1922	= { FOLLOW_COMMA_in_command1922_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_typeOrVarLetDecl_in_command1924  */
+static	ANTLR3_BITWORD FOLLOW_typeOrVarLetDecl_in_command1924_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0002000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_typeOrVarLetDecl_in_command1924	= { FOLLOW_typeOrVarLetDecl_in_command1924_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IN_TOK_in_command1936  */
+static	ANTLR3_BITWORD FOLLOW_IN_TOK_in_command1936_bits[]	= { ANTLR3_UINT64_LIT(0x3F0E000000002C80), ANTLR3_UINT64_LIT(0x02002247A080FFC0), ANTLR3_UINT64_LIT(0x181440000131DF84) };
+static  ANTLR3_BITSET_LIST FOLLOW_IN_TOK_in_command1936	= { FOLLOW_IN_TOK_in_command1936_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_command_in_command1938  */
+static	ANTLR3_BITWORD FOLLOW_command_in_command1938_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_command_in_command1938	= { FOLLOW_command_in_command1938_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_command1965  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_command1965_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000001000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_command1965	= { FOLLOW_IDENTIFIER_in_command1965_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMICOLON_in_command1967  */
+static	ANTLR3_BITWORD FOLLOW_SEMICOLON_in_command1967_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SEMICOLON_in_command1967	= { FOLLOW_SEMICOLON_in_command1967_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_letDecl_in_typeOrVarLetDecl1998  */
+static	ANTLR3_BITWORD FOLLOW_letDecl_in_typeOrVarLetDecl1998_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_letDecl_in_typeOrVarLetDecl1998	= { FOLLOW_letDecl_in_typeOrVarLetDecl1998_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_typeLetDecl_in_typeOrVarLetDecl2002  */
+static	ANTLR3_BITWORD FOLLOW_typeLetDecl_in_typeOrVarLetDecl2002_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_typeLetDecl_in_typeOrVarLetDecl2002	= { FOLLOW_typeLetDecl_in_typeOrVarLetDecl2002_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSERT_TOK_in_mainCommand2028  */
+static	ANTLR3_BITWORD FOLLOW_ASSERT_TOK_in_mainCommand2028_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_ASSERT_TOK_in_mainCommand2028	= { FOLLOW_ASSERT_TOK_in_mainCommand2028_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2030  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2030_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2030	= { FOLLOW_formula_in_mainCommand2030_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_QUERY_TOK_in_mainCommand2040  */
+static	ANTLR3_BITWORD FOLLOW_QUERY_TOK_in_mainCommand2040_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_QUERY_TOK_in_mainCommand2040	= { FOLLOW_QUERY_TOK_in_mainCommand2040_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2042  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2042_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2042	= { FOLLOW_formula_in_mainCommand2042_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CHECKSAT_TOK_in_mainCommand2051  */
+static	ANTLR3_BITWORD FOLLOW_CHECKSAT_TOK_in_mainCommand2051_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C112), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_CHECKSAT_TOK_in_mainCommand2051	= { FOLLOW_CHECKSAT_TOK_in_mainCommand2051_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2053  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2053_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2053	= { FOLLOW_formula_in_mainCommand2053_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_OPTION_TOK_in_mainCommand2073  */
+static	ANTLR3_BITWORD FOLLOW_OPTION_TOK_in_mainCommand2073_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_OPTION_TOK_in_mainCommand2073	= { FOLLOW_OPTION_TOK_in_mainCommand2073_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2081  */
+static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2081_bits[]	= { ANTLR3_UINT64_LIT(0x4000000000008002), ANTLR3_UINT64_LIT(0x2400830002000000), ANTLR3_UINT64_LIT(0x0040000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2081	= { FOLLOW_str_in_mainCommand2081_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2086  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2086_bits[]	= { ANTLR3_UINT64_LIT(0x4000000000008002), ANTLR3_UINT64_LIT(0x2400830002000000), ANTLR3_UINT64_LIT(0x0040000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2086	= { FOLLOW_IDENTIFIER_in_mainCommand2086_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_mainCommand2098  */
+static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_mainCommand2098_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_mainCommand2098	= { FOLLOW_symbolicExpr_in_mainCommand2098_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRUE_TOK_in_mainCommand2115  */
+static	ANTLR3_BITWORD FOLLOW_TRUE_TOK_in_mainCommand2115_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_TRUE_TOK_in_mainCommand2115	= { FOLLOW_TRUE_TOK_in_mainCommand2115_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FALSE_TOK_in_mainCommand2125  */
+static	ANTLR3_BITWORD FOLLOW_FALSE_TOK_in_mainCommand2125_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FALSE_TOK_in_mainCommand2125	= { FOLLOW_FALSE_TOK_in_mainCommand2125_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PUSH_TOK_in_mainCommand2154  */
+static	ANTLR3_BITWORD FOLLOW_PUSH_TOK_in_mainCommand2154_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_PUSH_TOK_in_mainCommand2154	= { FOLLOW_PUSH_TOK_in_mainCommand2154_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2160  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2160_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2160	= { FOLLOW_numeral_in_mainCommand2160_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_POP_TOK_in_mainCommand2189  */
+static	ANTLR3_BITWORD FOLLOW_POP_TOK_in_mainCommand2189_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_POP_TOK_in_mainCommand2189	= { FOLLOW_POP_TOK_in_mainCommand2189_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2195  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2195_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2195	= { FOLLOW_numeral_in_mainCommand2195_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_POPTO_TOK_in_mainCommand2223  */
+static	ANTLR3_BITWORD FOLLOW_POPTO_TOK_in_mainCommand2223_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_POPTO_TOK_in_mainCommand2223	= { FOLLOW_POPTO_TOK_in_mainCommand2223_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2227  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2227_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2227	= { FOLLOW_numeral_in_mainCommand2227_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PUSH_SCOPE_TOK_in_mainCommand2247  */
+static	ANTLR3_BITWORD FOLLOW_PUSH_SCOPE_TOK_in_mainCommand2247_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_PUSH_SCOPE_TOK_in_mainCommand2247	= { FOLLOW_PUSH_SCOPE_TOK_in_mainCommand2247_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2251  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2251_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2251	= { FOLLOW_numeral_in_mainCommand2251_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_POP_SCOPE_TOK_in_mainCommand2264  */
+static	ANTLR3_BITWORD FOLLOW_POP_SCOPE_TOK_in_mainCommand2264_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_POP_SCOPE_TOK_in_mainCommand2264	= { FOLLOW_POP_SCOPE_TOK_in_mainCommand2264_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2268  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2268_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2268	= { FOLLOW_numeral_in_mainCommand2268_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_POPTO_SCOPE_TOK_in_mainCommand2281  */
+static	ANTLR3_BITWORD FOLLOW_POPTO_SCOPE_TOK_in_mainCommand2281_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_POPTO_SCOPE_TOK_in_mainCommand2281	= { FOLLOW_POPTO_SCOPE_TOK_in_mainCommand2281_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2285  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2285_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2285	= { FOLLOW_numeral_in_mainCommand2285_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RESET_TOK_in_mainCommand2299  */
+static	ANTLR3_BITWORD FOLLOW_RESET_TOK_in_mainCommand2299_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RESET_TOK_in_mainCommand2299	= { FOLLOW_RESET_TOK_in_mainCommand2299_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RESET_TOK_in_mainCommand2312  */
+static	ANTLR3_BITWORD FOLLOW_RESET_TOK_in_mainCommand2312_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000400) };
+static  ANTLR3_BITSET_LIST FOLLOW_RESET_TOK_in_mainCommand2312	= { FOLLOW_RESET_TOK_in_mainCommand2312_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSERTIONS_TOK_in_mainCommand2314  */
+static	ANTLR3_BITWORD FOLLOW_ASSERTIONS_TOK_in_mainCommand2314_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_ASSERTIONS_TOK_in_mainCommand2314	= { FOLLOW_ASSERTIONS_TOK_in_mainCommand2314_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DATATYPE_TOK_in_mainCommand2342  */
+static	ANTLR3_BITWORD FOLLOW_DATATYPE_TOK_in_mainCommand2342_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DATATYPE_TOK_in_mainCommand2342	= { FOLLOW_DATATYPE_TOK_in_mainCommand2342_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypeDef_in_mainCommand2354  */
+static	ANTLR3_BITWORD FOLLOW_datatypeDef_in_mainCommand2354_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_datatypeDef_in_mainCommand2354	= { FOLLOW_datatypeDef_in_mainCommand2354_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_mainCommand2363  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_mainCommand2363_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_mainCommand2363	= { FOLLOW_COMMA_in_mainCommand2363_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypeDef_in_mainCommand2365  */
+static	ANTLR3_BITWORD FOLLOW_datatypeDef_in_mainCommand2365_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_datatypeDef_in_mainCommand2365	= { FOLLOW_datatypeDef_in_mainCommand2365_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_END_TOK_in_mainCommand2375  */
+static	ANTLR3_BITWORD FOLLOW_END_TOK_in_mainCommand2375_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_END_TOK_in_mainCommand2375	= { FOLLOW_END_TOK_in_mainCommand2375_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CONTEXT_TOK_in_mainCommand2388  */
+static	ANTLR3_BITWORD FOLLOW_CONTEXT_TOK_in_mainCommand2388_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_CONTEXT_TOK_in_mainCommand2388	= { FOLLOW_CONTEXT_TOK_in_mainCommand2388_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2398  */
+static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2398_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2398	= { FOLLOW_str_in_mainCommand2398_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2403  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2403_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2403	= { FOLLOW_IDENTIFIER_in_mainCommand2403_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FORGET_TOK_in_mainCommand2436  */
+static	ANTLR3_BITWORD FOLLOW_FORGET_TOK_in_mainCommand2436_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FORGET_TOK_in_mainCommand2436	= { FOLLOW_FORGET_TOK_in_mainCommand2436_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_mainCommand2438  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_mainCommand2438_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_mainCommand2438	= { FOLLOW_identifier_in_mainCommand2438_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_TYPE_TOK_in_mainCommand2452  */
+static	ANTLR3_BITWORD FOLLOW_GET_TYPE_TOK_in_mainCommand2452_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_GET_TYPE_TOK_in_mainCommand2452	= { FOLLOW_GET_TYPE_TOK_in_mainCommand2452_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2454  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2454_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2454	= { FOLLOW_formula_in_mainCommand2454_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CHECK_TYPE_TOK_in_mainCommand2468  */
+static	ANTLR3_BITWORD FOLLOW_CHECK_TYPE_TOK_in_mainCommand2468_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_CHECK_TYPE_TOK_in_mainCommand2468	= { FOLLOW_CHECK_TYPE_TOK_in_mainCommand2468_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2470  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2470_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2470	= { FOLLOW_formula_in_mainCommand2470_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_mainCommand2473  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_mainCommand2473_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_mainCommand2473	= { FOLLOW_COLON_in_mainCommand2473_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_mainCommand2475  */
+static	ANTLR3_BITWORD FOLLOW_type_in_mainCommand2475_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_mainCommand2475	= { FOLLOW_type_in_mainCommand2475_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_CHILD_TOK_in_mainCommand2489  */
+static	ANTLR3_BITWORD FOLLOW_GET_CHILD_TOK_in_mainCommand2489_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_GET_CHILD_TOK_in_mainCommand2489	= { FOLLOW_GET_CHILD_TOK_in_mainCommand2489_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2491  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2491_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2491	= { FOLLOW_formula_in_mainCommand2491_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2496  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2496_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2496	= { FOLLOW_numeral_in_mainCommand2496_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_OP_TOK_in_mainCommand2509  */
+static	ANTLR3_BITWORD FOLLOW_GET_OP_TOK_in_mainCommand2509_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_GET_OP_TOK_in_mainCommand2509	= { FOLLOW_GET_OP_TOK_in_mainCommand2509_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2511  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2511_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2511	= { FOLLOW_formula_in_mainCommand2511_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_VALUE_TOK_in_mainCommand2525  */
+static	ANTLR3_BITWORD FOLLOW_GET_VALUE_TOK_in_mainCommand2525_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_GET_VALUE_TOK_in_mainCommand2525	= { FOLLOW_GET_VALUE_TOK_in_mainCommand2525_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2527  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2527_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2527	= { FOLLOW_formula_in_mainCommand2527_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SUBSTITUTE_TOK_in_mainCommand2541  */
+static	ANTLR3_BITWORD FOLLOW_SUBSTITUTE_TOK_in_mainCommand2541_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_SUBSTITUTE_TOK_in_mainCommand2541	= { FOLLOW_SUBSTITUTE_TOK_in_mainCommand2541_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_mainCommand2543  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_mainCommand2543_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_mainCommand2543	= { FOLLOW_identifier_in_mainCommand2543_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_mainCommand2546  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_mainCommand2546_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_mainCommand2546	= { FOLLOW_COLON_in_mainCommand2546_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_mainCommand2552  */
+static	ANTLR3_BITWORD FOLLOW_type_in_mainCommand2552_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_mainCommand2552	= { FOLLOW_type_in_mainCommand2552_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_mainCommand2555  */
+static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_mainCommand2555_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_mainCommand2555	= { FOLLOW_EQUAL_TOK_in_mainCommand2555_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2557  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2557_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0040000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2557	= { FOLLOW_formula_in_mainCommand2557_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_mainCommand2560  */
+static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_mainCommand2560_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_mainCommand2560	= { FOLLOW_LBRACKET_in_mainCommand2560_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_mainCommand2566  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_mainCommand2566_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000001000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_mainCommand2566	= { FOLLOW_identifier_in_mainCommand2566_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSIGN_TOK_in_mainCommand2569  */
+static	ANTLR3_BITWORD FOLLOW_ASSIGN_TOK_in_mainCommand2569_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_ASSIGN_TOK_in_mainCommand2569	= { FOLLOW_ASSIGN_TOK_in_mainCommand2569_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2571  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2571_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2571	= { FOLLOW_formula_in_mainCommand2571_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_mainCommand2574  */
+static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_mainCommand2574_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_mainCommand2574	= { FOLLOW_RBRACKET_in_mainCommand2574_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DBG_TOK_in_mainCommand2593  */
+static	ANTLR3_BITWORD FOLLOW_DBG_TOK_in_mainCommand2593_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DBG_TOK_in_mainCommand2593	= { FOLLOW_DBG_TOK_in_mainCommand2593_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2603  */
+static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2603_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2603	= { FOLLOW_str_in_mainCommand2603_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2608  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2608_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2608	= { FOLLOW_IDENTIFIER_in_mainCommand2608_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRACE_TOK_in_mainCommand2641  */
+static	ANTLR3_BITWORD FOLLOW_TRACE_TOK_in_mainCommand2641_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_TRACE_TOK_in_mainCommand2641	= { FOLLOW_TRACE_TOK_in_mainCommand2641_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2651  */
+static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2651_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2651	= { FOLLOW_str_in_mainCommand2651_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2656  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2656_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2656	= { FOLLOW_IDENTIFIER_in_mainCommand2656_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_UNTRACE_TOK_in_mainCommand2688  */
+static	ANTLR3_BITWORD FOLLOW_UNTRACE_TOK_in_mainCommand2688_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_UNTRACE_TOK_in_mainCommand2688	= { FOLLOW_UNTRACE_TOK_in_mainCommand2688_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2698  */
+static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2698_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2698	= { FOLLOW_str_in_mainCommand2698_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2703  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2703_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2703	= { FOLLOW_IDENTIFIER_in_mainCommand2703_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_HELP_TOK_in_mainCommand2736  */
+static	ANTLR3_BITWORD FOLLOW_HELP_TOK_in_mainCommand2736_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_HELP_TOK_in_mainCommand2736	= { FOLLOW_HELP_TOK_in_mainCommand2736_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2746  */
+static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2746_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2746	= { FOLLOW_str_in_mainCommand2746_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2751  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2751_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2751	= { FOLLOW_IDENTIFIER_in_mainCommand2751_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRANSFORM_TOK_in_mainCommand2792  */
+static	ANTLR3_BITWORD FOLLOW_TRANSFORM_TOK_in_mainCommand2792_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_TRANSFORM_TOK_in_mainCommand2792	= { FOLLOW_TRANSFORM_TOK_in_mainCommand2792_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2794  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2794_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2794	= { FOLLOW_formula_in_mainCommand2794_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PRINT_TOK_in_mainCommand2808  */
+static	ANTLR3_BITWORD FOLLOW_PRINT_TOK_in_mainCommand2808_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_PRINT_TOK_in_mainCommand2808	= { FOLLOW_PRINT_TOK_in_mainCommand2808_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2810  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2810_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2810	= { FOLLOW_formula_in_mainCommand2810_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PRINT_TYPE_TOK_in_mainCommand2823  */
+static	ANTLR3_BITWORD FOLLOW_PRINT_TYPE_TOK_in_mainCommand2823_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_PRINT_TYPE_TOK_in_mainCommand2823	= { FOLLOW_PRINT_TYPE_TOK_in_mainCommand2823_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_mainCommand2825  */
+static	ANTLR3_BITWORD FOLLOW_type_in_mainCommand2825_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_mainCommand2825	= { FOLLOW_type_in_mainCommand2825_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CALL_TOK_in_mainCommand2839  */
+static	ANTLR3_BITWORD FOLLOW_CALL_TOK_in_mainCommand2839_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_CALL_TOK_in_mainCommand2839	= { FOLLOW_CALL_TOK_in_mainCommand2839_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_mainCommand2841  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_mainCommand2841_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_mainCommand2841	= { FOLLOW_identifier_in_mainCommand2841_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2844  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2844_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2844	= { FOLLOW_formula_in_mainCommand2844_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ECHO_TOK_in_mainCommand2858  */
+static	ANTLR3_BITWORD FOLLOW_ECHO_TOK_in_mainCommand2858_bits[]	= { ANTLR3_UINT64_LIT(0x4000000000008002), ANTLR3_UINT64_LIT(0x2000830000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_ECHO_TOK_in_mainCommand2858	= { FOLLOW_ECHO_TOK_in_mainCommand2858_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExpr_in_mainCommand2866  */
+static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExpr_in_mainCommand2866_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleSymbolicExpr_in_mainCommand2866	= { FOLLOW_simpleSymbolicExpr_in_mainCommand2866_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EXIT_TOK_in_mainCommand2896  */
+static	ANTLR3_BITWORD FOLLOW_EXIT_TOK_in_mainCommand2896_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EXIT_TOK_in_mainCommand2896	= { FOLLOW_EXIT_TOK_in_mainCommand2896_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INCLUDE_TOK_in_mainCommand2909  */
+static	ANTLR3_BITWORD FOLLOW_INCLUDE_TOK_in_mainCommand2909_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INCLUDE_TOK_in_mainCommand2909	= { FOLLOW_INCLUDE_TOK_in_mainCommand2909_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2919  */
+static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2919_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2919	= { FOLLOW_str_in_mainCommand2919_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2924  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2924_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2924	= { FOLLOW_IDENTIFIER_in_mainCommand2924_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DUMP_PROOF_TOK_in_mainCommand2957  */
+static	ANTLR3_BITWORD FOLLOW_DUMP_PROOF_TOK_in_mainCommand2957_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DUMP_PROOF_TOK_in_mainCommand2957	= { FOLLOW_DUMP_PROOF_TOK_in_mainCommand2957_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DUMP_UNSAT_CORE_TOK_in_mainCommand2970  */
+static	ANTLR3_BITWORD FOLLOW_DUMP_UNSAT_CORE_TOK_in_mainCommand2970_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DUMP_UNSAT_CORE_TOK_in_mainCommand2970	= { FOLLOW_DUMP_UNSAT_CORE_TOK_in_mainCommand2970_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_mainCommand2983  */
+static	ANTLR3_BITWORD FOLLOW_set_in_mainCommand2983_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_set_in_mainCommand2983	= { FOLLOW_set_in_mainCommand2983_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_mainCommand3054  */
+static	ANTLR3_BITWORD FOLLOW_set_in_mainCommand3054_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_set_in_mainCommand3054	= { FOLLOW_set_in_mainCommand3054_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COUNTEREXAMPLE_TOK_in_mainCommand3079  */
+static	ANTLR3_BITWORD FOLLOW_COUNTEREXAMPLE_TOK_in_mainCommand3079_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_COUNTEREXAMPLE_TOK_in_mainCommand3079	= { FOLLOW_COUNTEREXAMPLE_TOK_in_mainCommand3079_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COUNTERMODEL_TOK_in_mainCommand3091  */
+static	ANTLR3_BITWORD FOLLOW_COUNTERMODEL_TOK_in_mainCommand3091_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_COUNTERMODEL_TOK_in_mainCommand3091	= { FOLLOW_COUNTERMODEL_TOK_in_mainCommand3091_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ARITH_VAR_ORDER_TOK_in_mainCommand3104  */
+static	ANTLR3_BITWORD FOLLOW_ARITH_VAR_ORDER_TOK_in_mainCommand3104_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_ARITH_VAR_ORDER_TOK_in_mainCommand3104	= { FOLLOW_ARITH_VAR_ORDER_TOK_in_mainCommand3104_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_mainCommand3106  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_mainCommand3106_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_mainCommand3106	= { FOLLOW_LPAREN_in_mainCommand3106_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand3108  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand3108_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand3108	= { FOLLOW_formula_in_mainCommand3108_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_mainCommand3113  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_mainCommand3113_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_mainCommand3113	= { FOLLOW_COMMA_in_mainCommand3113_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand3115  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand3115_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand3115	= { FOLLOW_formula_in_mainCommand3115_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_mainCommand3121  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_mainCommand3121_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_mainCommand3121	= { FOLLOW_RPAREN_in_mainCommand3121_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CONTINUE_TOK_in_mainCommand3134  */
+static	ANTLR3_BITWORD FOLLOW_CONTINUE_TOK_in_mainCommand3134_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_CONTINUE_TOK_in_mainCommand3134	= { FOLLOW_CONTINUE_TOK_in_mainCommand3134_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RESTART_TOK_in_mainCommand3146  */
+static	ANTLR3_BITWORD FOLLOW_RESTART_TOK_in_mainCommand3146_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_RESTART_TOK_in_mainCommand3146	= { FOLLOW_RESTART_TOK_in_mainCommand3146_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand3148  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand3148_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand3148	= { FOLLOW_formula_in_mainCommand3148_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_toplevelDeclaration_in_mainCommand3157  */
+static	ANTLR3_BITWORD FOLLOW_toplevelDeclaration_in_mainCommand3157_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_toplevelDeclaration_in_mainCommand3157	= { FOLLOW_toplevelDeclaration_in_mainCommand3157_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3177  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3177_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3177	= { FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3177_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_MINUS_TOK_in_simpleSymbolicExpr3189  */
+static	ANTLR3_BITWORD FOLLOW_MINUS_TOK_in_simpleSymbolicExpr3189_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_MINUS_TOK_in_simpleSymbolicExpr3189	= { FOLLOW_MINUS_TOK_in_simpleSymbolicExpr3189_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3191  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3191_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3191	= { FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3191_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExpr3203  */
+static	ANTLR3_BITWORD FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExpr3203_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExpr3203	= { FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExpr3203_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_HEX_LITERAL_in_simpleSymbolicExpr3215  */
+static	ANTLR3_BITWORD FOLLOW_HEX_LITERAL_in_simpleSymbolicExpr3215_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_HEX_LITERAL_in_simpleSymbolicExpr3215	= { FOLLOW_HEX_LITERAL_in_simpleSymbolicExpr3215_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BINARY_LITERAL_in_simpleSymbolicExpr3227  */
+static	ANTLR3_BITWORD FOLLOW_BINARY_LITERAL_in_simpleSymbolicExpr3227_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BINARY_LITERAL_in_simpleSymbolicExpr3227	= { FOLLOW_BINARY_LITERAL_in_simpleSymbolicExpr3227_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_simpleSymbolicExpr3239  */
+static	ANTLR3_BITWORD FOLLOW_str_in_simpleSymbolicExpr3239_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_simpleSymbolicExpr3239	= { FOLLOW_str_in_simpleSymbolicExpr3239_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_simpleSymbolicExpr3252  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_simpleSymbolicExpr3252_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_simpleSymbolicExpr3252	= { FOLLOW_IDENTIFIER_in_simpleSymbolicExpr3252_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExpr_in_symbolicExpr3277  */
+static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExpr_in_symbolicExpr3277_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleSymbolicExpr_in_symbolicExpr3277	= { FOLLOW_simpleSymbolicExpr_in_symbolicExpr3277_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_symbolicExpr3284  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_symbolicExpr3284_bits[]	= { ANTLR3_UINT64_LIT(0x4000000000008000), ANTLR3_UINT64_LIT(0x2400830000000000), ANTLR3_UINT64_LIT(0x0000000800800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_symbolicExpr3284	= { FOLLOW_LPAREN_in_symbolicExpr3284_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_symbolicExpr3287  */
+static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_symbolicExpr3287_bits[]	= { ANTLR3_UINT64_LIT(0x4000000000008000), ANTLR3_UINT64_LIT(0x2400830000000000), ANTLR3_UINT64_LIT(0x0000000800800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_symbolicExpr3287	= { FOLLOW_symbolicExpr_in_symbolicExpr3287_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_symbolicExpr3295  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_symbolicExpr3295_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_symbolicExpr3295	= { FOLLOW_RPAREN_in_symbolicExpr3295_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifierList_in_toplevelDeclaration3322  */
+static	ANTLR3_BITWORD FOLLOW_identifierList_in_toplevelDeclaration3322_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifierList_in_toplevelDeclaration3322	= { FOLLOW_identifierList_in_toplevelDeclaration3322_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_toplevelDeclaration3325  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_toplevelDeclaration3325_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x010088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_toplevelDeclaration3325	= { FOLLOW_COLON_in_toplevelDeclaration3325_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_declareVariables_in_toplevelDeclaration3333  */
+static	ANTLR3_BITWORD FOLLOW_declareVariables_in_toplevelDeclaration3333_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_declareVariables_in_toplevelDeclaration3333	= { FOLLOW_declareVariables_in_toplevelDeclaration3333_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_declareTypes_in_toplevelDeclaration3342  */
+static	ANTLR3_BITWORD FOLLOW_declareTypes_in_toplevelDeclaration3342_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_declareTypes_in_toplevelDeclaration3342	= { FOLLOW_declareTypes_in_toplevelDeclaration3342_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifierList_in_boundVarDecl3366  */
+static	ANTLR3_BITWORD FOLLOW_identifierList_in_boundVarDecl3366_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifierList_in_boundVarDecl3366	= { FOLLOW_identifierList_in_boundVarDecl3366_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_boundVarDecl3369  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_boundVarDecl3369_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_boundVarDecl3369	= { FOLLOW_COLON_in_boundVarDecl3369_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_declareVariables_in_boundVarDecl3375  */
+static	ANTLR3_BITWORD FOLLOW_declareVariables_in_boundVarDecl3375_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_declareVariables_in_boundVarDecl3375	= { FOLLOW_declareVariables_in_boundVarDecl3375_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDecl_in_boundVarDecls3396  */
+static	ANTLR3_BITWORD FOLLOW_boundVarDecl_in_boundVarDecls3396_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_boundVarDecl_in_boundVarDecls3396	= { FOLLOW_boundVarDecl_in_boundVarDecls3396_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_boundVarDecls3401  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_boundVarDecls3401_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_boundVarDecls3401	= { FOLLOW_COMMA_in_boundVarDecls3401_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDecl_in_boundVarDecls3403  */
+static	ANTLR3_BITWORD FOLLOW_boundVarDecl_in_boundVarDecls3403_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_boundVarDecl_in_boundVarDecls3403	= { FOLLOW_boundVarDecl_in_boundVarDecls3403_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3426  */
+static	ANTLR3_BITWORD FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3426_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3426	= { FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3426_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_boundVarDeclsReturn3431  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_boundVarDeclsReturn3431_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_boundVarDeclsReturn3431	= { FOLLOW_COMMA_in_boundVarDeclsReturn3431_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3433  */
+static	ANTLR3_BITWORD FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3433_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3433	= { FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3433_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifierList_in_boundVarDeclReturn3456  */
+static	ANTLR3_BITWORD FOLLOW_identifierList_in_boundVarDeclReturn3456_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifierList_in_boundVarDeclReturn3456	= { FOLLOW_identifierList_in_boundVarDeclReturn3456_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_boundVarDeclReturn3459  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_boundVarDeclReturn3459_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_boundVarDeclReturn3459	= { FOLLOW_COLON_in_boundVarDeclReturn3459_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_boundVarDeclReturn3461  */
+static	ANTLR3_BITWORD FOLLOW_type_in_boundVarDeclReturn3461_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_boundVarDeclReturn3461	= { FOLLOW_type_in_boundVarDeclReturn3461_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TYPE_TOK_in_declareTypes3495  */
+static	ANTLR3_BITWORD FOLLOW_TYPE_TOK_in_declareTypes3495_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_TYPE_TOK_in_declareTypes3495	= { FOLLOW_TYPE_TOK_in_declareTypes3495_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TYPE_TOK_in_declareTypes3514  */
+static	ANTLR3_BITWORD FOLLOW_TYPE_TOK_in_declareTypes3514_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_TYPE_TOK_in_declareTypes3514	= { FOLLOW_TYPE_TOK_in_declareTypes3514_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_declareTypes3516  */
+static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_declareTypes3516_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_declareTypes3516	= { FOLLOW_EQUAL_TOK_in_declareTypes3516_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_declareTypes3518  */
+static	ANTLR3_BITWORD FOLLOW_type_in_declareTypes3518_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_declareTypes3518	= { FOLLOW_type_in_declareTypes3518_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_declareVariables3552  */
+static	ANTLR3_BITWORD FOLLOW_type_in_declareVariables3552_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_declareVariables3552	= { FOLLOW_type_in_declareVariables3552_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_declareVariables3557  */
+static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_declareVariables3557_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_declareVariables3557	= { FOLLOW_EQUAL_TOK_in_declareVariables3557_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_declareVariables3559  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_declareVariables3559_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_declareVariables3559	= { FOLLOW_formula_in_declareVariables3559_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_identifierList3590  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_identifierList3590_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_identifierList3590	= { FOLLOW_identifier_in_identifierList3590_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_identifierList3601  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_identifierList3601_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_identifierList3601	= { FOLLOW_COMMA_in_identifierList3601_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_identifierList3603  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_identifierList3603_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_identifierList3603	= { FOLLOW_identifier_in_identifierList3603_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_identifier3625  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_identifier3625_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_identifier3625	= { FOLLOW_IDENTIFIER_in_identifier3625_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedTypePossiblyFunctionLHS_in_type3658  */
+static	ANTLR3_BITWORD FOLLOW_restrictedTypePossiblyFunctionLHS_in_type3658_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000202) };
+static  ANTLR3_BITSET_LIST FOLLOW_restrictedTypePossiblyFunctionLHS_in_type3658	= { FOLLOW_restrictedTypePossiblyFunctionLHS_in_type3658_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ARROW_TOK_in_type3673  */
+static	ANTLR3_BITWORD FOLLOW_ARROW_TOK_in_type3673_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_ARROW_TOK_in_type3673	= { FOLLOW_ARROW_TOK_in_type3673_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_type3675  */
+static	ANTLR3_BITWORD FOLLOW_type_in_type3675_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_type3675	= { FOLLOW_type_in_type3675_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LET_TOK_in_type3700  */
+static	ANTLR3_BITWORD FOLLOW_LET_TOK_in_type3700_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LET_TOK_in_type3700	= { FOLLOW_LET_TOK_in_type3700_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_typeLetDecl_in_type3708  */
+static	ANTLR3_BITWORD FOLLOW_typeLetDecl_in_type3708_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0002000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_typeLetDecl_in_type3708	= { FOLLOW_typeLetDecl_in_type3708_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_type3713  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_type3713_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_type3713	= { FOLLOW_COMMA_in_type3713_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_typeLetDecl_in_type3715  */
+static	ANTLR3_BITWORD FOLLOW_typeLetDecl_in_type3715_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0002000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_typeLetDecl_in_type3715	= { FOLLOW_typeLetDecl_in_type3715_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IN_TOK_in_type3721  */
+static	ANTLR3_BITWORD FOLLOW_IN_TOK_in_type3721_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_IN_TOK_in_type3721	= { FOLLOW_IN_TOK_in_type3721_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_type3723  */
+static	ANTLR3_BITWORD FOLLOW_type_in_type3723_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_type3723	= { FOLLOW_type_in_type3723_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedTypePossiblyFunctionLHS_in_restrictedType3759  */
+static	ANTLR3_BITWORD FOLLOW_restrictedTypePossiblyFunctionLHS_in_restrictedType3759_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_restrictedTypePossiblyFunctionLHS_in_restrictedType3759	= { FOLLOW_restrictedTypePossiblyFunctionLHS_in_restrictedType3759_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS3793  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS3793_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0040000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS3793	= { FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS3793_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_parameterization_in_restrictedTypePossiblyFunctionLHS3800  */
+static	ANTLR3_BITWORD FOLLOW_parameterization_in_restrictedTypePossiblyFunctionLHS3800_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_parameterization_in_restrictedTypePossiblyFunctionLHS3800	= { FOLLOW_parameterization_in_restrictedTypePossiblyFunctionLHS3800_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ARRAY_TOK_in_restrictedTypePossiblyFunctionLHS3821  */
+static	ANTLR3_BITWORD FOLLOW_ARRAY_TOK_in_restrictedTypePossiblyFunctionLHS3821_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0441020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_ARRAY_TOK_in_restrictedTypePossiblyFunctionLHS3821	= { FOLLOW_ARRAY_TOK_in_restrictedTypePossiblyFunctionLHS3821_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3823  */
+static	ANTLR3_BITWORD FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3823_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3823	= { FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3823_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3826  */
+static	ANTLR3_BITWORD FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3826_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0441020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3826	= { FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3826_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3828  */
+static	ANTLR3_BITWORD FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3828_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3828	= { FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3828_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SET_TOK_in_restrictedTypePossiblyFunctionLHS3841  */
+static	ANTLR3_BITWORD FOLLOW_SET_TOK_in_restrictedTypePossiblyFunctionLHS3841_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SET_TOK_in_restrictedTypePossiblyFunctionLHS3841	= { FOLLOW_SET_TOK_in_restrictedTypePossiblyFunctionLHS3841_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3843  */
+static	ANTLR3_BITWORD FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3843_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0441020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3843	= { FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3843_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3845  */
+static	ANTLR3_BITWORD FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3845_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3845	= { FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3845_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SUBTYPE_TOK_in_restrictedTypePossiblyFunctionLHS3868  */
+static	ANTLR3_BITWORD FOLLOW_SUBTYPE_TOK_in_restrictedTypePossiblyFunctionLHS3868_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_SUBTYPE_TOK_in_restrictedTypePossiblyFunctionLHS3868	= { FOLLOW_SUBTYPE_TOK_in_restrictedTypePossiblyFunctionLHS3868_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS3870  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS3870_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS3870	= { FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS3870_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3888  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3888_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3888	= { FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3888_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3893  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3893_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3893	= { FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3893_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3895  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3895_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3895	= { FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3895_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS3901  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS3901_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS3901	= { FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS3901_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3920  */
+static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3920_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x2000800000000000), ANTLR3_UINT64_LIT(0x0200000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3920	= { FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3920_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3924  */
+static	ANTLR3_BITWORD FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3924_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000020) };
+static  ANTLR3_BITSET_LIST FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3924	= { FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3924_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOTDOT_in_restrictedTypePossiblyFunctionLHS3926  */
+static	ANTLR3_BITWORD FOLLOW_DOTDOT_in_restrictedTypePossiblyFunctionLHS3926_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x2000800000000000), ANTLR3_UINT64_LIT(0x0200000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOTDOT_in_restrictedTypePossiblyFunctionLHS3926	= { FOLLOW_DOTDOT_in_restrictedTypePossiblyFunctionLHS3926_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3930  */
+static	ANTLR3_BITWORD FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3930_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
+static  ANTLR3_BITSET_LIST FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3930	= { FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3930_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3932  */
+static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3932_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3932	= { FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3932_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3951  */
+static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3951_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C0C0000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3951	= { FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3951_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3955  */
+static	ANTLR3_BITWORD FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3955_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3955	= { FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3955_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3966  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3966_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3966	= { FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3966_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3968  */
+static	ANTLR3_BITWORD FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3968_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3968	= { FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3968_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3979  */
+static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3979_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3979	= { FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3979_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SQHASH_in_restrictedTypePossiblyFunctionLHS3998  */
+static	ANTLR3_BITWORD FOLLOW_SQHASH_in_restrictedTypePossiblyFunctionLHS3998_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000022000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_SQHASH_in_restrictedTypePossiblyFunctionLHS3998	= { FOLLOW_SQHASH_in_restrictedTypePossiblyFunctionLHS3998_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4002  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4002_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4002	= { FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4002_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4005  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4005_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4005	= { FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4005_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4007  */
+static	ANTLR3_BITWORD FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4007_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000002000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4007	= { FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4007_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4018  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4018_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4018	= { FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4018_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4020  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4020_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4020	= { FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4020_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4023  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4023_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4023	= { FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4023_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4025  */
+static	ANTLR3_BITWORD FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4025_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000002000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4025	= { FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4025_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_HASHSQ_in_restrictedTypePossiblyFunctionLHS4036  */
+static	ANTLR3_BITWORD FOLLOW_HASHSQ_in_restrictedTypePossiblyFunctionLHS4036_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_HASHSQ_in_restrictedTypePossiblyFunctionLHS4036	= { FOLLOW_HASHSQ_in_restrictedTypePossiblyFunctionLHS4036_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BITVECTOR_TOK_in_restrictedTypePossiblyFunctionLHS4055  */
+static	ANTLR3_BITWORD FOLLOW_BITVECTOR_TOK_in_restrictedTypePossiblyFunctionLHS4055_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BITVECTOR_TOK_in_restrictedTypePossiblyFunctionLHS4055	= { FOLLOW_BITVECTOR_TOK_in_restrictedTypePossiblyFunctionLHS4055_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4057  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4057_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4057	= { FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4057_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_restrictedTypePossiblyFunctionLHS4061  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_restrictedTypePossiblyFunctionLHS4061_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_restrictedTypePossiblyFunctionLHS4061	= { FOLLOW_numeral_in_restrictedTypePossiblyFunctionLHS4061_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4063  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4063_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4063	= { FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4063_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_TOK_in_restrictedTypePossiblyFunctionLHS4082  */
+static	ANTLR3_BITWORD FOLLOW_STRING_TOK_in_restrictedTypePossiblyFunctionLHS4082_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_TOK_in_restrictedTypePossiblyFunctionLHS4082	= { FOLLOW_STRING_TOK_in_restrictedTypePossiblyFunctionLHS4082_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BOOLEAN_TOK_in_restrictedTypePossiblyFunctionLHS4097  */
+static	ANTLR3_BITWORD FOLLOW_BOOLEAN_TOK_in_restrictedTypePossiblyFunctionLHS4097_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BOOLEAN_TOK_in_restrictedTypePossiblyFunctionLHS4097	= { FOLLOW_BOOLEAN_TOK_in_restrictedTypePossiblyFunctionLHS4097_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_REAL_TOK_in_restrictedTypePossiblyFunctionLHS4105  */
+static	ANTLR3_BITWORD FOLLOW_REAL_TOK_in_restrictedTypePossiblyFunctionLHS4105_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_REAL_TOK_in_restrictedTypePossiblyFunctionLHS4105	= { FOLLOW_REAL_TOK_in_restrictedTypePossiblyFunctionLHS4105_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INT_TOK_in_restrictedTypePossiblyFunctionLHS4113  */
+static	ANTLR3_BITWORD FOLLOW_INT_TOK_in_restrictedTypePossiblyFunctionLHS4113_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INT_TOK_in_restrictedTypePossiblyFunctionLHS4113	= { FOLLOW_INT_TOK_in_restrictedTypePossiblyFunctionLHS4113_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4128  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4128_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4128	= { FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4128_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4130  */
+static	ANTLR3_BITWORD FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4130_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4130	= { FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4130_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4141  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4141_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4141	= { FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4141_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4143  */
+static	ANTLR3_BITWORD FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4143_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4143	= { FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4143_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4151  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4151_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4151	= { FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4151_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_parameterization4176  */
+static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_parameterization4176_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0441020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_parameterization4176	= { FOLLOW_LBRACKET_in_parameterization4176_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_parameterization4178  */
+static	ANTLR3_BITWORD FOLLOW_restrictedType_in_parameterization4178_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
+static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_parameterization4178	= { FOLLOW_restrictedType_in_parameterization4178_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_parameterization4189  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_parameterization4189_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0441020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_parameterization4189	= { FOLLOW_COMMA_in_parameterization4189_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_parameterization4191  */
+static	ANTLR3_BITWORD FOLLOW_restrictedType_in_parameterization4191_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
+static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_parameterization4191	= { FOLLOW_restrictedType_in_parameterization4191_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_parameterization4199  */
+static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_parameterization4199_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_parameterization4199	= { FOLLOW_RBRACKET_in_parameterization4199_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_UNDERSCORE_in_bound4216  */
+static	ANTLR3_BITWORD FOLLOW_UNDERSCORE_in_bound4216_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_UNDERSCORE_in_bound4216	= { FOLLOW_UNDERSCORE_in_bound4216_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_integer_in_bound4226  */
+static	ANTLR3_BITWORD FOLLOW_integer_in_bound4226_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_integer_in_bound4226	= { FOLLOW_integer_in_bound4226_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_typeLetDecl4245  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_typeLetDecl4245_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_typeLetDecl4245	= { FOLLOW_identifier_in_typeLetDecl4245_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_typeLetDecl4249  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_typeLetDecl4249_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_typeLetDecl4249	= { FOLLOW_COLON_in_typeLetDecl4249_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TYPE_TOK_in_typeLetDecl4251  */
+static	ANTLR3_BITWORD FOLLOW_TYPE_TOK_in_typeLetDecl4251_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_TYPE_TOK_in_typeLetDecl4251	= { FOLLOW_TYPE_TOK_in_typeLetDecl4251_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_typeLetDecl4255  */
+static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_typeLetDecl4255_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0441020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_typeLetDecl4255	= { FOLLOW_EQUAL_TOK_in_typeLetDecl4255_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_typeLetDecl4257  */
+static	ANTLR3_BITWORD FOLLOW_restrictedType_in_typeLetDecl4257_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_typeLetDecl4257	= { FOLLOW_restrictedType_in_typeLetDecl4257_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_nots_in_formula4287  */
+static	ANTLR3_BITWORD FOLLOW_nots_in_formula4287_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_nots_in_formula4287	= { FOLLOW_nots_in_formula4287_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_prefixFormula_in_formula4295  */
+static	ANTLR3_BITWORD FOLLOW_prefixFormula_in_formula4295_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_prefixFormula_in_formula4295	= { FOLLOW_prefixFormula_in_formula4295_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_comparison_in_formula4312  */
+static	ANTLR3_BITWORD FOLLOW_comparison_in_formula4312_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000042), ANTLR3_UINT64_LIT(0x0008140000000000), ANTLR3_UINT64_LIT(0x8000000000002008) };
+static  ANTLR3_BITSET_LIST FOLLOW_comparison_in_formula4312	= { FOLLOW_comparison_in_formula4312_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_morecomparisons_in_formula4329  */
+static	ANTLR3_BITWORD FOLLOW_morecomparisons_in_formula4329_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_morecomparisons_in_formula4329	= { FOLLOW_morecomparisons_in_formula4329_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_booleanBinop_in_morecomparisons4368  */
+static	ANTLR3_BITWORD FOLLOW_booleanBinop_in_morecomparisons4368_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_booleanBinop_in_morecomparisons4368	= { FOLLOW_booleanBinop_in_morecomparisons4368_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_nots_in_morecomparisons4379  */
+static	ANTLR3_BITWORD FOLLOW_nots_in_morecomparisons4379_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_nots_in_morecomparisons4379	= { FOLLOW_nots_in_morecomparisons4379_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_prefixFormula_in_morecomparisons4387  */
+static	ANTLR3_BITWORD FOLLOW_prefixFormula_in_morecomparisons4387_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_prefixFormula_in_morecomparisons4387	= { FOLLOW_prefixFormula_in_morecomparisons4387_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_comparison_in_morecomparisons4404  */
+static	ANTLR3_BITWORD FOLLOW_comparison_in_morecomparisons4404_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000042), ANTLR3_UINT64_LIT(0x0008140000000000), ANTLR3_UINT64_LIT(0x8000000000002008) };
+static  ANTLR3_BITSET_LIST FOLLOW_comparison_in_morecomparisons4404	= { FOLLOW_comparison_in_morecomparisons4404_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_morecomparisons_in_morecomparisons4421  */
+static	ANTLR3_BITWORD FOLLOW_morecomparisons_in_morecomparisons4421_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_morecomparisons_in_morecomparisons4421	= { FOLLOW_morecomparisons_in_morecomparisons4421_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NOT_TOK_in_nots4450  */
+static	ANTLR3_BITWORD FOLLOW_NOT_TOK_in_nots4450_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x8000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_NOT_TOK_in_nots4450	= { FOLLOW_NOT_TOK_in_nots4450_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FORALL_TOK_in_prefixFormula4482  */
+static	ANTLR3_BITWORD FOLLOW_FORALL_TOK_in_prefixFormula4482_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FORALL_TOK_in_prefixFormula4482	= { FOLLOW_FORALL_TOK_in_prefixFormula4482_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EXISTS_TOK_in_prefixFormula4488  */
+static	ANTLR3_BITWORD FOLLOW_EXISTS_TOK_in_prefixFormula4488_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_EXISTS_TOK_in_prefixFormula4488	= { FOLLOW_EXISTS_TOK_in_prefixFormula4488_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_prefixFormula4500  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_prefixFormula4500_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_prefixFormula4500	= { FOLLOW_LPAREN_in_prefixFormula4500_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDecl_in_prefixFormula4506  */
+static	ANTLR3_BITWORD FOLLOW_boundVarDecl_in_prefixFormula4506_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_boundVarDecl_in_prefixFormula4506	= { FOLLOW_boundVarDecl_in_prefixFormula4506_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_prefixFormula4521  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_prefixFormula4521_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_prefixFormula4521	= { FOLLOW_COMMA_in_prefixFormula4521_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDecl_in_prefixFormula4523  */
+static	ANTLR3_BITWORD FOLLOW_boundVarDecl_in_prefixFormula4523_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_boundVarDecl_in_prefixFormula4523	= { FOLLOW_boundVarDecl_in_prefixFormula4523_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_prefixFormula4541  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_prefixFormula4541_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_prefixFormula4541	= { FOLLOW_RPAREN_in_prefixFormula4541_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_prefixFormula4549  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_prefixFormula4549_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000030) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_prefixFormula4549	= { FOLLOW_COLON_in_prefixFormula4549_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_instantiationPatterns_in_prefixFormula4551  */
+static	ANTLR3_BITWORD FOLLOW_instantiationPatterns_in_prefixFormula4551_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_instantiationPatterns_in_prefixFormula4551	= { FOLLOW_instantiationPatterns_in_prefixFormula4551_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_prefixFormula4555  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_prefixFormula4555_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_prefixFormula4555	= { FOLLOW_formula_in_prefixFormula4555_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LET_TOK_in_prefixFormula4574  */
+static	ANTLR3_BITWORD FOLLOW_LET_TOK_in_prefixFormula4574_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LET_TOK_in_prefixFormula4574	= { FOLLOW_LET_TOK_in_prefixFormula4574_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_letDecl_in_prefixFormula4582  */
+static	ANTLR3_BITWORD FOLLOW_letDecl_in_prefixFormula4582_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0002000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_letDecl_in_prefixFormula4582	= { FOLLOW_letDecl_in_prefixFormula4582_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_prefixFormula4586  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_prefixFormula4586_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_prefixFormula4586	= { FOLLOW_COMMA_in_prefixFormula4586_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_letDecl_in_prefixFormula4588  */
+static	ANTLR3_BITWORD FOLLOW_letDecl_in_prefixFormula4588_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0002000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_letDecl_in_prefixFormula4588	= { FOLLOW_letDecl_in_prefixFormula4588_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IN_TOK_in_prefixFormula4597  */
+static	ANTLR3_BITWORD FOLLOW_IN_TOK_in_prefixFormula4597_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_IN_TOK_in_prefixFormula4597	= { FOLLOW_IN_TOK_in_prefixFormula4597_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_prefixFormula4599  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_prefixFormula4599_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_prefixFormula4599	= { FOLLOW_formula_in_prefixFormula4599_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LAMBDA_in_prefixFormula4614  */
+static	ANTLR3_BITWORD FOLLOW_LAMBDA_in_prefixFormula4614_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LAMBDA_in_prefixFormula4614	= { FOLLOW_LAMBDA_in_prefixFormula4614_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_prefixFormula4618  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_prefixFormula4618_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_prefixFormula4618	= { FOLLOW_LPAREN_in_prefixFormula4618_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDeclsReturn_in_prefixFormula4624  */
+static	ANTLR3_BITWORD FOLLOW_boundVarDeclsReturn_in_prefixFormula4624_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_boundVarDeclsReturn_in_prefixFormula4624	= { FOLLOW_boundVarDeclsReturn_in_prefixFormula4624_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_prefixFormula4631  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_prefixFormula4631_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_prefixFormula4631	= { FOLLOW_RPAREN_in_prefixFormula4631_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_prefixFormula4633  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_prefixFormula4633_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_prefixFormula4633	= { FOLLOW_COLON_in_prefixFormula4633_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_prefixFormula4635  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_prefixFormula4635_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_prefixFormula4635	= { FOLLOW_formula_in_prefixFormula4635_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PATTERN_TOK_in_instantiationPatterns4663  */
+static	ANTLR3_BITWORD FOLLOW_PATTERN_TOK_in_instantiationPatterns4663_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_PATTERN_TOK_in_instantiationPatterns4663	= { FOLLOW_PATTERN_TOK_in_instantiationPatterns4663_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_instantiationPatterns4665  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_instantiationPatterns4665_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_instantiationPatterns4665	= { FOLLOW_LPAREN_in_instantiationPatterns4665_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_instantiationPatterns4667  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_instantiationPatterns4667_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_instantiationPatterns4667	= { FOLLOW_formula_in_instantiationPatterns4667_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_instantiationPatterns4673  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_instantiationPatterns4673_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_instantiationPatterns4673	= { FOLLOW_COMMA_in_instantiationPatterns4673_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_instantiationPatterns4675  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_instantiationPatterns4675_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_instantiationPatterns4675	= { FOLLOW_formula_in_instantiationPatterns4675_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_instantiationPatterns4683  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_instantiationPatterns4683_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_instantiationPatterns4683	= { FOLLOW_RPAREN_in_instantiationPatterns4683_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_instantiationPatterns4685  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_instantiationPatterns4685_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000020) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_instantiationPatterns4685	= { FOLLOW_COLON_in_instantiationPatterns4685_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_letDecl4722  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_letDecl4722_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_letDecl4722	= { FOLLOW_identifier_in_letDecl4722_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_letDecl4725  */
+static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_letDecl4725_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_letDecl4725	= { FOLLOW_EQUAL_TOK_in_letDecl4725_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_letDecl4727  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_letDecl4727_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_letDecl4727	= { FOLLOW_formula_in_letDecl4727_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_comparison4808  */
+static	ANTLR3_BITWORD FOLLOW_term_in_comparison4808_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x1900000848100001) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_comparison4808	= { FOLLOW_term_in_comparison4808_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_comparisonBinop_in_comparison4819  */
+static	ANTLR3_BITWORD FOLLOW_comparisonBinop_in_comparison4819_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA4248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_comparisonBinop_in_comparison4819	= { FOLLOW_comparisonBinop_in_comparison4819_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_comparison4822  */
+static	ANTLR3_BITWORD FOLLOW_term_in_comparison4822_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x1900000848100001) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_comparison4822	= { FOLLOW_term_in_comparison4822_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_uminusTerm_in_term4977  */
+static	ANTLR3_BITWORD FOLLOW_uminusTerm_in_term4977_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x6000400001000008), ANTLR3_UINT64_LIT(0x4000000010000040) };
+static  ANTLR3_BITSET_LIST FOLLOW_uminusTerm_in_term4977	= { FOLLOW_uminusTerm_in_term4977_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_WITH_TOK_in_term4986  */
+static	ANTLR3_BITWORD FOLLOW_WITH_TOK_in_term4986_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0040000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_WITH_TOK_in_term4986	= { FOLLOW_WITH_TOK_in_term4986_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_arrayStore_in_term4996  */
+static	ANTLR3_BITWORD FOLLOW_arrayStore_in_term4996_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_arrayStore_in_term4996	= { FOLLOW_arrayStore_in_term4996_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_term5001  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_term5001_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0040000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_term5001	= { FOLLOW_COMMA_in_term5001_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_arrayStore_in_term5003  */
+static	ANTLR3_BITWORD FOLLOW_arrayStore_in_term5003_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_arrayStore_in_term5003	= { FOLLOW_arrayStore_in_term5003_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_term5017  */
+static	ANTLR3_BITWORD FOLLOW_DOT_in_term5017_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000820000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_term5017	= { FOLLOW_DOT_in_term5017_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tupleStore_in_term5021  */
+static	ANTLR3_BITWORD FOLLOW_tupleStore_in_term5021_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_tupleStore_in_term5021	= { FOLLOW_tupleStore_in_term5021_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_term5026  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_term5026_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_term5026	= { FOLLOW_COMMA_in_term5026_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_term5028  */
+static	ANTLR3_BITWORD FOLLOW_DOT_in_term5028_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_term5028	= { FOLLOW_DOT_in_term5028_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tupleStore_in_term5030  */
+static	ANTLR3_BITWORD FOLLOW_tupleStore_in_term5030_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_tupleStore_in_term5030	= { FOLLOW_tupleStore_in_term5030_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordStore_in_term5050  */
+static	ANTLR3_BITWORD FOLLOW_recordStore_in_term5050_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_recordStore_in_term5050	= { FOLLOW_recordStore_in_term5050_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_term5055  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_term5055_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_term5055	= { FOLLOW_COMMA_in_term5055_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_term5057  */
+static	ANTLR3_BITWORD FOLLOW_DOT_in_term5057_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_term5057	= { FOLLOW_DOT_in_term5057_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordStore_in_term5059  */
+static	ANTLR3_BITWORD FOLLOW_recordStore_in_term5059_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_recordStore_in_term5059	= { FOLLOW_recordStore_in_term5059_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_arithmeticBinop_in_term5085  */
+static	ANTLR3_BITWORD FOLLOW_arithmeticBinop_in_term5085_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA4248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_arithmeticBinop_in_term5085	= { FOLLOW_arithmeticBinop_in_term5085_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_uminusTerm_in_term5088  */
+static	ANTLR3_BITWORD FOLLOW_uminusTerm_in_term5088_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x6000400001000008), ANTLR3_UINT64_LIT(0x0000000010000040) };
+static  ANTLR3_BITSET_LIST FOLLOW_uminusTerm_in_term5088	= { FOLLOW_uminusTerm_in_term5088_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_arrayStore5129  */
+static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_arrayStore5129_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_arrayStore5129	= { FOLLOW_LBRACKET_in_arrayStore5129_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_arrayStore5131  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_arrayStore5131_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_arrayStore5131	= { FOLLOW_formula_in_arrayStore5131_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_arrayStore5134  */
+static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_arrayStore5134_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000001000), ANTLR3_UINT64_LIT(0x0040000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_arrayStore5134	= { FOLLOW_RBRACKET_in_arrayStore5134_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_arrayStore_in_arrayStore5150  */
+static	ANTLR3_BITWORD FOLLOW_arrayStore_in_arrayStore5150_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_arrayStore_in_arrayStore5150	= { FOLLOW_arrayStore_in_arrayStore5150_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_arrayStore5161  */
+static	ANTLR3_BITWORD FOLLOW_DOT_in_arrayStore5161_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000820000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_arrayStore5161	= { FOLLOW_DOT_in_arrayStore5161_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tupleStore_in_arrayStore5165  */
+static	ANTLR3_BITWORD FOLLOW_tupleStore_in_arrayStore5165_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_tupleStore_in_arrayStore5165	= { FOLLOW_tupleStore_in_arrayStore5165_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordStore_in_arrayStore5182  */
+static	ANTLR3_BITWORD FOLLOW_recordStore_in_arrayStore5182_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_recordStore_in_arrayStore5182	= { FOLLOW_recordStore_in_arrayStore5182_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSIGN_TOK_in_arrayStore5195  */
+static	ANTLR3_BITWORD FOLLOW_ASSIGN_TOK_in_arrayStore5195_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA4248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_ASSIGN_TOK_in_arrayStore5195	= { FOLLOW_ASSIGN_TOK_in_arrayStore5195_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_arrayStore5197  */
+static	ANTLR3_BITWORD FOLLOW_term_in_arrayStore5197_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_arrayStore5197	= { FOLLOW_term_in_arrayStore5197_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_tupleStore5229  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_tupleStore5229_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000001000), ANTLR3_UINT64_LIT(0x0040000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_tupleStore5229	= { FOLLOW_numeral_in_tupleStore5229_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_arrayStore_in_tupleStore5245  */
+static	ANTLR3_BITWORD FOLLOW_arrayStore_in_tupleStore5245_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_arrayStore_in_tupleStore5245	= { FOLLOW_arrayStore_in_tupleStore5245_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_tupleStore5256  */
+static	ANTLR3_BITWORD FOLLOW_DOT_in_tupleStore5256_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000820000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_tupleStore5256	= { FOLLOW_DOT_in_tupleStore5256_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tupleStore_in_tupleStore5260  */
+static	ANTLR3_BITWORD FOLLOW_tupleStore_in_tupleStore5260_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_tupleStore_in_tupleStore5260	= { FOLLOW_tupleStore_in_tupleStore5260_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordStore_in_tupleStore5277  */
+static	ANTLR3_BITWORD FOLLOW_recordStore_in_tupleStore5277_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_recordStore_in_tupleStore5277	= { FOLLOW_recordStore_in_tupleStore5277_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSIGN_TOK_in_tupleStore5290  */
+static	ANTLR3_BITWORD FOLLOW_ASSIGN_TOK_in_tupleStore5290_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA4248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_ASSIGN_TOK_in_tupleStore5290	= { FOLLOW_ASSIGN_TOK_in_tupleStore5290_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_tupleStore5292  */
+static	ANTLR3_BITWORD FOLLOW_term_in_tupleStore5292_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_tupleStore5292	= { FOLLOW_term_in_tupleStore5292_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_recordStore5322  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_recordStore5322_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000001000), ANTLR3_UINT64_LIT(0x0040000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_recordStore5322	= { FOLLOW_identifier_in_recordStore5322_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_arrayStore_in_recordStore5339  */
+static	ANTLR3_BITWORD FOLLOW_arrayStore_in_recordStore5339_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_arrayStore_in_recordStore5339	= { FOLLOW_arrayStore_in_recordStore5339_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_recordStore5350  */
+static	ANTLR3_BITWORD FOLLOW_DOT_in_recordStore5350_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000820000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_recordStore5350	= { FOLLOW_DOT_in_recordStore5350_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tupleStore_in_recordStore5354  */
+static	ANTLR3_BITWORD FOLLOW_tupleStore_in_recordStore5354_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_tupleStore_in_recordStore5354	= { FOLLOW_tupleStore_in_recordStore5354_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordStore_in_recordStore5371  */
+static	ANTLR3_BITWORD FOLLOW_recordStore_in_recordStore5371_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_recordStore_in_recordStore5371	= { FOLLOW_recordStore_in_recordStore5371_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSIGN_TOK_in_recordStore5384  */
+static	ANTLR3_BITWORD FOLLOW_ASSIGN_TOK_in_recordStore5384_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA4248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_ASSIGN_TOK_in_recordStore5384	= { FOLLOW_ASSIGN_TOK_in_recordStore5384_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_recordStore5386  */
+static	ANTLR3_BITWORD FOLLOW_term_in_recordStore5386_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_recordStore5386	= { FOLLOW_term_in_recordStore5386_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_MINUS_TOK_in_uminusTerm5423  */
+static	ANTLR3_BITWORD FOLLOW_MINUS_TOK_in_uminusTerm5423_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA4248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_MINUS_TOK_in_uminusTerm5423	= { FOLLOW_MINUS_TOK_in_uminusTerm5423_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvBinaryOpTerm_in_uminusTerm5429  */
+static	ANTLR3_BITWORD FOLLOW_bvBinaryOpTerm_in_uminusTerm5429_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_bvBinaryOpTerm_in_uminusTerm5429	= { FOLLOW_bvBinaryOpTerm_in_uminusTerm5429_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvBinaryOpTerm_in_uminusTerm5442  */
+static	ANTLR3_BITWORD FOLLOW_bvBinaryOpTerm_in_uminusTerm5442_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_bvBinaryOpTerm_in_uminusTerm5442	= { FOLLOW_bvBinaryOpTerm_in_uminusTerm5442_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvNegTerm_in_bvBinaryOpTerm5464  */
+static	ANTLR3_BITWORD FOLLOW_bvNegTerm_in_bvBinaryOpTerm5464_bits[]	= { ANTLR3_UINT64_LIT(0x0080000000044002) };
+static  ANTLR3_BITSET_LIST FOLLOW_bvNegTerm_in_bvBinaryOpTerm5464	= { FOLLOW_bvNegTerm_in_bvBinaryOpTerm5464_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvBinop_in_bvBinaryOpTerm5475  */
+static	ANTLR3_BITWORD FOLLOW_bvBinop_in_bvBinaryOpTerm5475_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x84248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_bvBinop_in_bvBinaryOpTerm5475	= { FOLLOW_bvBinop_in_bvBinaryOpTerm5475_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvNegTerm_in_bvBinaryOpTerm5478  */
+static	ANTLR3_BITWORD FOLLOW_bvNegTerm_in_bvBinaryOpTerm5478_bits[]	= { ANTLR3_UINT64_LIT(0x0080000000044002) };
+static  ANTLR3_BITSET_LIST FOLLOW_bvNegTerm_in_bvBinaryOpTerm5478	= { FOLLOW_bvNegTerm_in_bvBinaryOpTerm5478_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVNEG_TOK_in_bvNegTerm5541  */
+static	ANTLR3_BITWORD FOLLOW_BVNEG_TOK_in_bvNegTerm5541_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x84248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVNEG_TOK_in_bvNegTerm5541	= { FOLLOW_BVNEG_TOK_in_bvNegTerm5541_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvNegTerm_in_bvNegTerm5543  */
+static	ANTLR3_BITWORD FOLLOW_bvNegTerm_in_bvNegTerm5543_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_bvNegTerm_in_bvNegTerm5543	= { FOLLOW_bvNegTerm_in_bvNegTerm5543_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NOT_TOK_in_bvNegTerm5556  */
+static	ANTLR3_BITWORD FOLLOW_NOT_TOK_in_bvNegTerm5556_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x84248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_NOT_TOK_in_bvNegTerm5556	= { FOLLOW_NOT_TOK_in_bvNegTerm5556_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvNegTerm_in_bvNegTerm5558  */
+static	ANTLR3_BITWORD FOLLOW_bvNegTerm_in_bvNegTerm5558_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_bvNegTerm_in_bvNegTerm5558	= { FOLLOW_bvNegTerm_in_bvNegTerm5558_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRANSPOSE_TOK_in_bvNegTerm5572  */
+static	ANTLR3_BITWORD FOLLOW_TRANSPOSE_TOK_in_bvNegTerm5572_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x84248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_TRANSPOSE_TOK_in_bvNegTerm5572	= { FOLLOW_TRANSPOSE_TOK_in_bvNegTerm5572_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvNegTerm_in_bvNegTerm5574  */
+static	ANTLR3_BITWORD FOLLOW_bvNegTerm_in_bvNegTerm5574_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_bvNegTerm_in_bvNegTerm5574	= { FOLLOW_bvNegTerm_in_bvNegTerm5574_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRANSCLOSURE_TOK_in_bvNegTerm5588  */
+static	ANTLR3_BITWORD FOLLOW_TRANSCLOSURE_TOK_in_bvNegTerm5588_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x84248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_TRANSCLOSURE_TOK_in_bvNegTerm5588	= { FOLLOW_TRANSCLOSURE_TOK_in_bvNegTerm5588_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvNegTerm_in_bvNegTerm5590  */
+static	ANTLR3_BITWORD FOLLOW_bvNegTerm_in_bvNegTerm5590_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_bvNegTerm_in_bvNegTerm5590	= { FOLLOW_bvNegTerm_in_bvNegTerm5590_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TUPLE_TOK_in_bvNegTerm5603  */
+static	ANTLR3_BITWORD FOLLOW_TUPLE_TOK_in_bvNegTerm5603_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_TUPLE_TOK_in_bvNegTerm5603	= { FOLLOW_TUPLE_TOK_in_bvNegTerm5603_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvNegTerm5605  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvNegTerm5605_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x84248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvNegTerm5605	= { FOLLOW_LPAREN_in_bvNegTerm5605_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvNegTerm_in_bvNegTerm5607  */
+static	ANTLR3_BITWORD FOLLOW_bvNegTerm_in_bvNegTerm5607_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_bvNegTerm_in_bvNegTerm5607	= { FOLLOW_bvNegTerm_in_bvNegTerm5607_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvNegTerm5610  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvNegTerm5610_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvNegTerm5610	= { FOLLOW_RPAREN_in_bvNegTerm5610_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_postfixTerm_in_bvNegTerm5635  */
+static	ANTLR3_BITWORD FOLLOW_postfixTerm_in_bvNegTerm5635_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_postfixTerm_in_bvNegTerm5635	= { FOLLOW_postfixTerm_in_bvNegTerm5635_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvTerm_in_postfixTerm5659  */
+static	ANTLR3_BITWORD FOLLOW_bvTerm_in_postfixTerm5659_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002), ANTLR3_UINT64_LIT(0x04C0000000000010), ANTLR3_UINT64_LIT(0x0000000000400000) };
+static  ANTLR3_BITSET_LIST FOLLOW_bvTerm_in_postfixTerm5659	= { FOLLOW_bvTerm_in_postfixTerm5659_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_postfixTerm5676  */
+static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_postfixTerm5676_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_postfixTerm5676	= { FOLLOW_LBRACKET_in_postfixTerm5676_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm5688  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm5688_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm5688	= { FOLLOW_formula_in_postfixTerm5688_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_postfixTerm5705  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_postfixTerm5705_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_postfixTerm5705	= { FOLLOW_numeral_in_postfixTerm5705_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_postfixTerm5707  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_postfixTerm5707_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_postfixTerm5707	= { FOLLOW_COLON_in_postfixTerm5707_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_postfixTerm5711  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_postfixTerm5711_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_postfixTerm5711	= { FOLLOW_numeral_in_postfixTerm5711_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_postfixTerm5723  */
+static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_postfixTerm5723_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002), ANTLR3_UINT64_LIT(0x04C0000000000010), ANTLR3_UINT64_LIT(0x0000000000400000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_postfixTerm5723	= { FOLLOW_RBRACKET_in_postfixTerm5723_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LEFTSHIFT_TOK_in_postfixTerm5749  */
+static	ANTLR3_BITWORD FOLLOW_LEFTSHIFT_TOK_in_postfixTerm5749_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LEFTSHIFT_TOK_in_postfixTerm5749	= { FOLLOW_LEFTSHIFT_TOK_in_postfixTerm5749_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RIGHTSHIFT_TOK_in_postfixTerm5761  */
+static	ANTLR3_BITWORD FOLLOW_RIGHTSHIFT_TOK_in_postfixTerm5761_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RIGHTSHIFT_TOK_in_postfixTerm5761	= { FOLLOW_RIGHTSHIFT_TOK_in_postfixTerm5761_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_postfixTerm5769  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_postfixTerm5769_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002), ANTLR3_UINT64_LIT(0x04C0000000000010), ANTLR3_UINT64_LIT(0x0000000000400000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_postfixTerm5769	= { FOLLOW_numeral_in_postfixTerm5769_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_postfixTerm5794  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_postfixTerm5794_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_postfixTerm5794	= { FOLLOW_LPAREN_in_postfixTerm5794_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm5804  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm5804_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm5804	= { FOLLOW_formula_in_postfixTerm5804_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_postfixTerm5817  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_postfixTerm5817_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_postfixTerm5817	= { FOLLOW_COMMA_in_postfixTerm5817_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm5819  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm5819_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm5819	= { FOLLOW_formula_in_postfixTerm5819_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_postfixTerm5827  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_postfixTerm5827_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002), ANTLR3_UINT64_LIT(0x04C0000000000010), ANTLR3_UINT64_LIT(0x0000000000400000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_postfixTerm5827	= { FOLLOW_RPAREN_in_postfixTerm5827_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_postfixTerm5859  */
+static	ANTLR3_BITWORD FOLLOW_DOT_in_postfixTerm5859_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000820000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_postfixTerm5859	= { FOLLOW_DOT_in_postfixTerm5859_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_postfixTerm5869  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_postfixTerm5869_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002), ANTLR3_UINT64_LIT(0x04C0000000000010), ANTLR3_UINT64_LIT(0x0000000000400000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_postfixTerm5869	= { FOLLOW_identifier_in_postfixTerm5869_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_postfixTerm5892  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_postfixTerm5892_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002), ANTLR3_UINT64_LIT(0x04C0000000000010), ANTLR3_UINT64_LIT(0x0000000000400000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_postfixTerm5892	= { FOLLOW_numeral_in_postfixTerm5892_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FLOOR_TOK_in_postfixTerm5925  */
+static	ANTLR3_BITWORD FOLLOW_FLOOR_TOK_in_postfixTerm5925_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FLOOR_TOK_in_postfixTerm5925	= { FOLLOW_FLOOR_TOK_in_postfixTerm5925_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_postfixTerm5927  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_postfixTerm5927_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_postfixTerm5927	= { FOLLOW_LPAREN_in_postfixTerm5927_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm5929  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm5929_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm5929	= { FOLLOW_formula_in_postfixTerm5929_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_postfixTerm5932  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_postfixTerm5932_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_postfixTerm5932	= { FOLLOW_RPAREN_in_postfixTerm5932_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IS_INTEGER_TOK_in_postfixTerm5948  */
+static	ANTLR3_BITWORD FOLLOW_IS_INTEGER_TOK_in_postfixTerm5948_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_IS_INTEGER_TOK_in_postfixTerm5948	= { FOLLOW_IS_INTEGER_TOK_in_postfixTerm5948_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_postfixTerm5950  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_postfixTerm5950_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_postfixTerm5950	= { FOLLOW_LPAREN_in_postfixTerm5950_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm5952  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm5952_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm5952	= { FOLLOW_formula_in_postfixTerm5952_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_postfixTerm5955  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_postfixTerm5955_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_postfixTerm5955	= { FOLLOW_RPAREN_in_postfixTerm5955_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ABS_TOK_in_postfixTerm5971  */
+static	ANTLR3_BITWORD FOLLOW_ABS_TOK_in_postfixTerm5971_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_ABS_TOK_in_postfixTerm5971	= { FOLLOW_ABS_TOK_in_postfixTerm5971_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_postfixTerm5973  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_postfixTerm5973_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_postfixTerm5973	= { FOLLOW_LPAREN_in_postfixTerm5973_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm5975  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm5975_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm5975	= { FOLLOW_formula_in_postfixTerm5975_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_postfixTerm5978  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_postfixTerm5978_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_postfixTerm5978	= { FOLLOW_RPAREN_in_postfixTerm5978_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DIVISIBLE_TOK_in_postfixTerm5994  */
+static	ANTLR3_BITWORD FOLLOW_DIVISIBLE_TOK_in_postfixTerm5994_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DIVISIBLE_TOK_in_postfixTerm5994	= { FOLLOW_DIVISIBLE_TOK_in_postfixTerm5994_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_postfixTerm5996  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_postfixTerm5996_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_postfixTerm5996	= { FOLLOW_LPAREN_in_postfixTerm5996_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm5998  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm5998_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm5998	= { FOLLOW_formula_in_postfixTerm5998_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_postfixTerm6001  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_postfixTerm6001_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_postfixTerm6001	= { FOLLOW_COMMA_in_postfixTerm6001_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_postfixTerm6005  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_postfixTerm6005_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_postfixTerm6005	= { FOLLOW_numeral_in_postfixTerm6005_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_postfixTerm6007  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_postfixTerm6007_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_postfixTerm6007	= { FOLLOW_RPAREN_in_postfixTerm6007_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DISTINCT_TOK_in_postfixTerm6023  */
+static	ANTLR3_BITWORD FOLLOW_DISTINCT_TOK_in_postfixTerm6023_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DISTINCT_TOK_in_postfixTerm6023	= { FOLLOW_DISTINCT_TOK_in_postfixTerm6023_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_postfixTerm6025  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_postfixTerm6025_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_postfixTerm6025	= { FOLLOW_LPAREN_in_postfixTerm6025_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm6033  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm6033_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm6033	= { FOLLOW_formula_in_postfixTerm6033_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_postfixTerm6046  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_postfixTerm6046_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_postfixTerm6046	= { FOLLOW_COMMA_in_postfixTerm6046_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm6048  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm6048_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm6048	= { FOLLOW_formula_in_postfixTerm6048_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_postfixTerm6056  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_postfixTerm6056_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_postfixTerm6056	= { FOLLOW_RPAREN_in_postfixTerm6056_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_typeAscription_in_postfixTerm6078  */
+static	ANTLR3_BITWORD FOLLOW_typeAscription_in_postfixTerm6078_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_typeAscription_in_postfixTerm6078	= { FOLLOW_typeAscription_in_postfixTerm6078_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVXOR_TOK_in_bvTerm6119  */
+static	ANTLR3_BITWORD FOLLOW_BVXOR_TOK_in_bvTerm6119_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVXOR_TOK_in_bvTerm6119	= { FOLLOW_BVXOR_TOK_in_bvTerm6119_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6121  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6121_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6121	= { FOLLOW_LPAREN_in_bvTerm6121_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6123  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6123_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6123	= { FOLLOW_formula_in_bvTerm6123_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6126  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6126_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6126	= { FOLLOW_COMMA_in_bvTerm6126_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6128  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6128_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6128	= { FOLLOW_formula_in_bvTerm6128_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6131  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6131_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6131	= { FOLLOW_RPAREN_in_bvTerm6131_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVNAND_TOK_in_bvTerm6143  */
+static	ANTLR3_BITWORD FOLLOW_BVNAND_TOK_in_bvTerm6143_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVNAND_TOK_in_bvTerm6143	= { FOLLOW_BVNAND_TOK_in_bvTerm6143_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6145  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6145_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6145	= { FOLLOW_LPAREN_in_bvTerm6145_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6147  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6147_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6147	= { FOLLOW_formula_in_bvTerm6147_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6150  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6150_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6150	= { FOLLOW_COMMA_in_bvTerm6150_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6152  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6152_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6152	= { FOLLOW_formula_in_bvTerm6152_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6155  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6155_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6155	= { FOLLOW_RPAREN_in_bvTerm6155_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVNOR_TOK_in_bvTerm6167  */
+static	ANTLR3_BITWORD FOLLOW_BVNOR_TOK_in_bvTerm6167_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVNOR_TOK_in_bvTerm6167	= { FOLLOW_BVNOR_TOK_in_bvTerm6167_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6169  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6169_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6169	= { FOLLOW_LPAREN_in_bvTerm6169_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6171  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6171_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6171	= { FOLLOW_formula_in_bvTerm6171_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6174  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6174_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6174	= { FOLLOW_COMMA_in_bvTerm6174_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6176  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6176_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6176	= { FOLLOW_formula_in_bvTerm6176_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6179  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6179_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6179	= { FOLLOW_RPAREN_in_bvTerm6179_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVCOMP_TOK_in_bvTerm6191  */
+static	ANTLR3_BITWORD FOLLOW_BVCOMP_TOK_in_bvTerm6191_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVCOMP_TOK_in_bvTerm6191	= { FOLLOW_BVCOMP_TOK_in_bvTerm6191_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6193  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6193_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6193	= { FOLLOW_LPAREN_in_bvTerm6193_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6195  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6195_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6195	= { FOLLOW_formula_in_bvTerm6195_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6198  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6198_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6198	= { FOLLOW_COMMA_in_bvTerm6198_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6200  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6200_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6200	= { FOLLOW_formula_in_bvTerm6200_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6203  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6203_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6203	= { FOLLOW_RPAREN_in_bvTerm6203_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVXNOR_TOK_in_bvTerm6215  */
+static	ANTLR3_BITWORD FOLLOW_BVXNOR_TOK_in_bvTerm6215_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVXNOR_TOK_in_bvTerm6215	= { FOLLOW_BVXNOR_TOK_in_bvTerm6215_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6217  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6217_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6217	= { FOLLOW_LPAREN_in_bvTerm6217_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6219  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6219_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6219	= { FOLLOW_formula_in_bvTerm6219_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6222  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6222_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6222	= { FOLLOW_COMMA_in_bvTerm6222_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6224  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6224_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6224	= { FOLLOW_formula_in_bvTerm6224_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6227  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6227_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6227	= { FOLLOW_RPAREN_in_bvTerm6227_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVUMINUS_TOK_in_bvTerm6246  */
+static	ANTLR3_BITWORD FOLLOW_BVUMINUS_TOK_in_bvTerm6246_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVUMINUS_TOK_in_bvTerm6246	= { FOLLOW_BVUMINUS_TOK_in_bvTerm6246_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6248  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6248_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6248	= { FOLLOW_LPAREN_in_bvTerm6248_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6250  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6250_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6250	= { FOLLOW_formula_in_bvTerm6250_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6253  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6253_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6253	= { FOLLOW_RPAREN_in_bvTerm6253_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVPLUS_TOK_in_bvTerm6271  */
+static	ANTLR3_BITWORD FOLLOW_BVPLUS_TOK_in_bvTerm6271_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVPLUS_TOK_in_bvTerm6271	= { FOLLOW_BVPLUS_TOK_in_bvTerm6271_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6273  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6273_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6273	= { FOLLOW_LPAREN_in_bvTerm6273_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6277  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6277_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6277	= { FOLLOW_numeral_in_bvTerm6277_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6279  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6279_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6279	= { FOLLOW_COMMA_in_bvTerm6279_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6281  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6281_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6281	= { FOLLOW_formula_in_bvTerm6281_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6292  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6292_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6292	= { FOLLOW_COMMA_in_bvTerm6292_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6294  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6294_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6294	= { FOLLOW_formula_in_bvTerm6294_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6302  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6302_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6302	= { FOLLOW_RPAREN_in_bvTerm6302_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSUB_TOK_in_bvTerm6320  */
+static	ANTLR3_BITWORD FOLLOW_BVSUB_TOK_in_bvTerm6320_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSUB_TOK_in_bvTerm6320	= { FOLLOW_BVSUB_TOK_in_bvTerm6320_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6322  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6322_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6322	= { FOLLOW_LPAREN_in_bvTerm6322_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6326  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6326_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6326	= { FOLLOW_numeral_in_bvTerm6326_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6328  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6328_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6328	= { FOLLOW_COMMA_in_bvTerm6328_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6330  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6330_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6330	= { FOLLOW_formula_in_bvTerm6330_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6333  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6333_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6333	= { FOLLOW_COMMA_in_bvTerm6333_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6335  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6335_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6335	= { FOLLOW_formula_in_bvTerm6335_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6338  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6338_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6338	= { FOLLOW_RPAREN_in_bvTerm6338_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVMULT_TOK_in_bvTerm6356  */
+static	ANTLR3_BITWORD FOLLOW_BVMULT_TOK_in_bvTerm6356_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVMULT_TOK_in_bvTerm6356	= { FOLLOW_BVMULT_TOK_in_bvTerm6356_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6358  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6358_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6358	= { FOLLOW_LPAREN_in_bvTerm6358_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6362  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6362_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6362	= { FOLLOW_numeral_in_bvTerm6362_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6364  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6364_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6364	= { FOLLOW_COMMA_in_bvTerm6364_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6366  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6366_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6366	= { FOLLOW_formula_in_bvTerm6366_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6369  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6369_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6369	= { FOLLOW_COMMA_in_bvTerm6369_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6371  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6371_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6371	= { FOLLOW_formula_in_bvTerm6371_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6374  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6374_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6374	= { FOLLOW_RPAREN_in_bvTerm6374_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVUDIV_TOK_in_bvTerm6392  */
+static	ANTLR3_BITWORD FOLLOW_BVUDIV_TOK_in_bvTerm6392_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVUDIV_TOK_in_bvTerm6392	= { FOLLOW_BVUDIV_TOK_in_bvTerm6392_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6394  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6394_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6394	= { FOLLOW_LPAREN_in_bvTerm6394_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6396  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6396_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6396	= { FOLLOW_formula_in_bvTerm6396_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6399  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6399_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6399	= { FOLLOW_COMMA_in_bvTerm6399_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6401  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6401_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6401	= { FOLLOW_formula_in_bvTerm6401_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6404  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6404_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6404	= { FOLLOW_RPAREN_in_bvTerm6404_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSDIV_TOK_in_bvTerm6422  */
+static	ANTLR3_BITWORD FOLLOW_BVSDIV_TOK_in_bvTerm6422_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSDIV_TOK_in_bvTerm6422	= { FOLLOW_BVSDIV_TOK_in_bvTerm6422_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6424  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6424_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6424	= { FOLLOW_LPAREN_in_bvTerm6424_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6426  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6426_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6426	= { FOLLOW_formula_in_bvTerm6426_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6429  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6429_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6429	= { FOLLOW_COMMA_in_bvTerm6429_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6431  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6431_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6431	= { FOLLOW_formula_in_bvTerm6431_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6434  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6434_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6434	= { FOLLOW_RPAREN_in_bvTerm6434_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVUREM_TOK_in_bvTerm6452  */
+static	ANTLR3_BITWORD FOLLOW_BVUREM_TOK_in_bvTerm6452_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVUREM_TOK_in_bvTerm6452	= { FOLLOW_BVUREM_TOK_in_bvTerm6452_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6454  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6454_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6454	= { FOLLOW_LPAREN_in_bvTerm6454_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6456  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6456_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6456	= { FOLLOW_formula_in_bvTerm6456_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6459  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6459_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6459	= { FOLLOW_COMMA_in_bvTerm6459_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6461  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6461_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6461	= { FOLLOW_formula_in_bvTerm6461_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6464  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6464_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6464	= { FOLLOW_RPAREN_in_bvTerm6464_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSREM_TOK_in_bvTerm6482  */
+static	ANTLR3_BITWORD FOLLOW_BVSREM_TOK_in_bvTerm6482_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSREM_TOK_in_bvTerm6482	= { FOLLOW_BVSREM_TOK_in_bvTerm6482_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6484  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6484_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6484	= { FOLLOW_LPAREN_in_bvTerm6484_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6486  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6486_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6486	= { FOLLOW_formula_in_bvTerm6486_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6489  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6489_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6489	= { FOLLOW_COMMA_in_bvTerm6489_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6491  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6491_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6491	= { FOLLOW_formula_in_bvTerm6491_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6494  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6494_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6494	= { FOLLOW_RPAREN_in_bvTerm6494_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSMOD_TOK_in_bvTerm6512  */
+static	ANTLR3_BITWORD FOLLOW_BVSMOD_TOK_in_bvTerm6512_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSMOD_TOK_in_bvTerm6512	= { FOLLOW_BVSMOD_TOK_in_bvTerm6512_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6514  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6514_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6514	= { FOLLOW_LPAREN_in_bvTerm6514_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6516  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6516_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6516	= { FOLLOW_formula_in_bvTerm6516_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6519  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6519_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6519	= { FOLLOW_COMMA_in_bvTerm6519_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6521  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6521_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6521	= { FOLLOW_formula_in_bvTerm6521_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6524  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6524_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6524	= { FOLLOW_RPAREN_in_bvTerm6524_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSHL_TOK_in_bvTerm6542  */
+static	ANTLR3_BITWORD FOLLOW_BVSHL_TOK_in_bvTerm6542_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSHL_TOK_in_bvTerm6542	= { FOLLOW_BVSHL_TOK_in_bvTerm6542_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6544  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6544_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6544	= { FOLLOW_LPAREN_in_bvTerm6544_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6546  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6546_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6546	= { FOLLOW_formula_in_bvTerm6546_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6549  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6549_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6549	= { FOLLOW_COMMA_in_bvTerm6549_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6551  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6551_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6551	= { FOLLOW_formula_in_bvTerm6551_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6554  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6554_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6554	= { FOLLOW_RPAREN_in_bvTerm6554_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVASHR_TOK_in_bvTerm6572  */
+static	ANTLR3_BITWORD FOLLOW_BVASHR_TOK_in_bvTerm6572_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVASHR_TOK_in_bvTerm6572	= { FOLLOW_BVASHR_TOK_in_bvTerm6572_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6574  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6574_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6574	= { FOLLOW_LPAREN_in_bvTerm6574_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6576  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6576_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6576	= { FOLLOW_formula_in_bvTerm6576_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6579  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6579_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6579	= { FOLLOW_COMMA_in_bvTerm6579_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6581  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6581_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6581	= { FOLLOW_formula_in_bvTerm6581_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6584  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6584_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6584	= { FOLLOW_RPAREN_in_bvTerm6584_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVLSHR_TOK_in_bvTerm6602  */
+static	ANTLR3_BITWORD FOLLOW_BVLSHR_TOK_in_bvTerm6602_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVLSHR_TOK_in_bvTerm6602	= { FOLLOW_BVLSHR_TOK_in_bvTerm6602_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6604  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6604_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6604	= { FOLLOW_LPAREN_in_bvTerm6604_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6606  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6606_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6606	= { FOLLOW_formula_in_bvTerm6606_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6609  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6609_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6609	= { FOLLOW_COMMA_in_bvTerm6609_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6611  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6611_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6611	= { FOLLOW_formula_in_bvTerm6611_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6614  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6614_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6614	= { FOLLOW_RPAREN_in_bvTerm6614_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SX_TOK_in_bvTerm6632  */
+static	ANTLR3_BITWORD FOLLOW_SX_TOK_in_bvTerm6632_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_SX_TOK_in_bvTerm6632	= { FOLLOW_SX_TOK_in_bvTerm6632_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6634  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6634_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6634	= { FOLLOW_LPAREN_in_bvTerm6634_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6636  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6636_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6636	= { FOLLOW_formula_in_bvTerm6636_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6639  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6639_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6639	= { FOLLOW_COMMA_in_bvTerm6639_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6643  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6643_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6643	= { FOLLOW_numeral_in_bvTerm6643_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6645  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6645_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6645	= { FOLLOW_RPAREN_in_bvTerm6645_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVZEROEXTEND_TOK_in_bvTerm6663  */
+static	ANTLR3_BITWORD FOLLOW_BVZEROEXTEND_TOK_in_bvTerm6663_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVZEROEXTEND_TOK_in_bvTerm6663	= { FOLLOW_BVZEROEXTEND_TOK_in_bvTerm6663_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6665  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6665_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6665	= { FOLLOW_LPAREN_in_bvTerm6665_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6667  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6667_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6667	= { FOLLOW_formula_in_bvTerm6667_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6670  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6670_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6670	= { FOLLOW_COMMA_in_bvTerm6670_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6674  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6674_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6674	= { FOLLOW_numeral_in_bvTerm6674_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6676  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6676_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6676	= { FOLLOW_RPAREN_in_bvTerm6676_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVREPEAT_TOK_in_bvTerm6694  */
+static	ANTLR3_BITWORD FOLLOW_BVREPEAT_TOK_in_bvTerm6694_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVREPEAT_TOK_in_bvTerm6694	= { FOLLOW_BVREPEAT_TOK_in_bvTerm6694_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6696  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6696_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6696	= { FOLLOW_LPAREN_in_bvTerm6696_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6698  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6698_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6698	= { FOLLOW_formula_in_bvTerm6698_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6701  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6701_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6701	= { FOLLOW_COMMA_in_bvTerm6701_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6705  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6705_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6705	= { FOLLOW_numeral_in_bvTerm6705_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6707  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6707_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6707	= { FOLLOW_RPAREN_in_bvTerm6707_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVROTR_TOK_in_bvTerm6725  */
+static	ANTLR3_BITWORD FOLLOW_BVROTR_TOK_in_bvTerm6725_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVROTR_TOK_in_bvTerm6725	= { FOLLOW_BVROTR_TOK_in_bvTerm6725_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6727  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6727_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6727	= { FOLLOW_LPAREN_in_bvTerm6727_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6729  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6729_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6729	= { FOLLOW_formula_in_bvTerm6729_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6732  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6732_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6732	= { FOLLOW_COMMA_in_bvTerm6732_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6736  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6736_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6736	= { FOLLOW_numeral_in_bvTerm6736_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6738  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6738_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6738	= { FOLLOW_RPAREN_in_bvTerm6738_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVROTL_TOK_in_bvTerm6756  */
+static	ANTLR3_BITWORD FOLLOW_BVROTL_TOK_in_bvTerm6756_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVROTL_TOK_in_bvTerm6756	= { FOLLOW_BVROTL_TOK_in_bvTerm6756_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6758  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6758_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6758	= { FOLLOW_LPAREN_in_bvTerm6758_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6760  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6760_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6760	= { FOLLOW_formula_in_bvTerm6760_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6763  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6763_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6763	= { FOLLOW_COMMA_in_bvTerm6763_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6767  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6767_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6767	= { FOLLOW_numeral_in_bvTerm6767_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6769  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6769_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6769	= { FOLLOW_RPAREN_in_bvTerm6769_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVLT_TOK_in_bvTerm6788  */
+static	ANTLR3_BITWORD FOLLOW_BVLT_TOK_in_bvTerm6788_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVLT_TOK_in_bvTerm6788	= { FOLLOW_BVLT_TOK_in_bvTerm6788_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6790  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6790_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6790	= { FOLLOW_LPAREN_in_bvTerm6790_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6792  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6792_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6792	= { FOLLOW_formula_in_bvTerm6792_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6795  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6795_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6795	= { FOLLOW_COMMA_in_bvTerm6795_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6797  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6797_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6797	= { FOLLOW_formula_in_bvTerm6797_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6800  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6800_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6800	= { FOLLOW_RPAREN_in_bvTerm6800_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVLE_TOK_in_bvTerm6812  */
+static	ANTLR3_BITWORD FOLLOW_BVLE_TOK_in_bvTerm6812_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVLE_TOK_in_bvTerm6812	= { FOLLOW_BVLE_TOK_in_bvTerm6812_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6814  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6814_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6814	= { FOLLOW_LPAREN_in_bvTerm6814_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6816  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6816_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6816	= { FOLLOW_formula_in_bvTerm6816_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6819  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6819_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6819	= { FOLLOW_COMMA_in_bvTerm6819_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6821  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6821_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6821	= { FOLLOW_formula_in_bvTerm6821_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6824  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6824_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6824	= { FOLLOW_RPAREN_in_bvTerm6824_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVGT_TOK_in_bvTerm6836  */
+static	ANTLR3_BITWORD FOLLOW_BVGT_TOK_in_bvTerm6836_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVGT_TOK_in_bvTerm6836	= { FOLLOW_BVGT_TOK_in_bvTerm6836_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6838  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6838_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6838	= { FOLLOW_LPAREN_in_bvTerm6838_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6840  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6840_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6840	= { FOLLOW_formula_in_bvTerm6840_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6843  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6843_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6843	= { FOLLOW_COMMA_in_bvTerm6843_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6845  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6845_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6845	= { FOLLOW_formula_in_bvTerm6845_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6848  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6848_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6848	= { FOLLOW_RPAREN_in_bvTerm6848_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVGE_TOK_in_bvTerm6860  */
+static	ANTLR3_BITWORD FOLLOW_BVGE_TOK_in_bvTerm6860_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVGE_TOK_in_bvTerm6860	= { FOLLOW_BVGE_TOK_in_bvTerm6860_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6862  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6862_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6862	= { FOLLOW_LPAREN_in_bvTerm6862_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6864  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6864_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6864	= { FOLLOW_formula_in_bvTerm6864_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6867  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6867_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6867	= { FOLLOW_COMMA_in_bvTerm6867_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6869  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6869_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6869	= { FOLLOW_formula_in_bvTerm6869_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6872  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6872_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6872	= { FOLLOW_RPAREN_in_bvTerm6872_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSLT_TOK_in_bvTerm6884  */
+static	ANTLR3_BITWORD FOLLOW_BVSLT_TOK_in_bvTerm6884_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSLT_TOK_in_bvTerm6884	= { FOLLOW_BVSLT_TOK_in_bvTerm6884_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6886  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6886_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6886	= { FOLLOW_LPAREN_in_bvTerm6886_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6888  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6888_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6888	= { FOLLOW_formula_in_bvTerm6888_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6891  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6891_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6891	= { FOLLOW_COMMA_in_bvTerm6891_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6893  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6893_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6893	= { FOLLOW_formula_in_bvTerm6893_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6896  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6896_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6896	= { FOLLOW_RPAREN_in_bvTerm6896_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSLE_TOK_in_bvTerm6908  */
+static	ANTLR3_BITWORD FOLLOW_BVSLE_TOK_in_bvTerm6908_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSLE_TOK_in_bvTerm6908	= { FOLLOW_BVSLE_TOK_in_bvTerm6908_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6910  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6910_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6910	= { FOLLOW_LPAREN_in_bvTerm6910_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6912  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6912_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6912	= { FOLLOW_formula_in_bvTerm6912_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6915  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6915_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6915	= { FOLLOW_COMMA_in_bvTerm6915_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6917  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6917_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6917	= { FOLLOW_formula_in_bvTerm6917_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6920  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6920_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6920	= { FOLLOW_RPAREN_in_bvTerm6920_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSGT_TOK_in_bvTerm6932  */
+static	ANTLR3_BITWORD FOLLOW_BVSGT_TOK_in_bvTerm6932_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSGT_TOK_in_bvTerm6932	= { FOLLOW_BVSGT_TOK_in_bvTerm6932_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6934  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6934_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6934	= { FOLLOW_LPAREN_in_bvTerm6934_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6936  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6936_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6936	= { FOLLOW_formula_in_bvTerm6936_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6939  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6939_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6939	= { FOLLOW_COMMA_in_bvTerm6939_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6941  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6941_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6941	= { FOLLOW_formula_in_bvTerm6941_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6944  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6944_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6944	= { FOLLOW_RPAREN_in_bvTerm6944_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSGE_TOK_in_bvTerm6956  */
+static	ANTLR3_BITWORD FOLLOW_BVSGE_TOK_in_bvTerm6956_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSGE_TOK_in_bvTerm6956	= { FOLLOW_BVSGE_TOK_in_bvTerm6956_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6958  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6958_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6958	= { FOLLOW_LPAREN_in_bvTerm6958_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6960  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6960_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6960	= { FOLLOW_formula_in_bvTerm6960_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6963  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6963_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6963	= { FOLLOW_COMMA_in_bvTerm6963_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6965  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6965_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6965	= { FOLLOW_formula_in_bvTerm6965_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6968  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6968_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6968	= { FOLLOW_RPAREN_in_bvTerm6968_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_stringTerm_in_bvTerm6980  */
+static	ANTLR3_BITWORD FOLLOW_stringTerm_in_bvTerm6980_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_stringTerm_in_bvTerm6980	= { FOLLOW_stringTerm_in_bvTerm6980_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_CONCAT_TOK_in_stringTerm7006  */
+static	ANTLR3_BITWORD FOLLOW_STRING_CONCAT_TOK_in_stringTerm7006_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_CONCAT_TOK_in_stringTerm7006	= { FOLLOW_STRING_CONCAT_TOK_in_stringTerm7006_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7008  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7008_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7008	= { FOLLOW_LPAREN_in_stringTerm7008_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7010  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7010_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7010	= { FOLLOW_formula_in_stringTerm7010_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7021  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7021_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7021	= { FOLLOW_COMMA_in_stringTerm7021_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7023  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7023_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7023	= { FOLLOW_formula_in_stringTerm7023_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7031  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7031_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7031	= { FOLLOW_RPAREN_in_stringTerm7031_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_LENGTH_TOK_in_stringTerm7043  */
+static	ANTLR3_BITWORD FOLLOW_STRING_LENGTH_TOK_in_stringTerm7043_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_LENGTH_TOK_in_stringTerm7043	= { FOLLOW_STRING_LENGTH_TOK_in_stringTerm7043_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7045  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7045_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7045	= { FOLLOW_LPAREN_in_stringTerm7045_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7047  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7047_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7047	= { FOLLOW_formula_in_stringTerm7047_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7050  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7050_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7050	= { FOLLOW_RPAREN_in_stringTerm7050_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_CONTAINS_TOK_in_stringTerm7062  */
+static	ANTLR3_BITWORD FOLLOW_STRING_CONTAINS_TOK_in_stringTerm7062_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_CONTAINS_TOK_in_stringTerm7062	= { FOLLOW_STRING_CONTAINS_TOK_in_stringTerm7062_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7064  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7064_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7064	= { FOLLOW_LPAREN_in_stringTerm7064_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7066  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7066_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7066	= { FOLLOW_formula_in_stringTerm7066_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7069  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7069_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7069	= { FOLLOW_COMMA_in_stringTerm7069_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7071  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7071_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7071	= { FOLLOW_formula_in_stringTerm7071_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7074  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7074_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7074	= { FOLLOW_RPAREN_in_stringTerm7074_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_SUBSTR_TOK_in_stringTerm7086  */
+static	ANTLR3_BITWORD FOLLOW_STRING_SUBSTR_TOK_in_stringTerm7086_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_SUBSTR_TOK_in_stringTerm7086	= { FOLLOW_STRING_SUBSTR_TOK_in_stringTerm7086_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7088  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7088_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7088	= { FOLLOW_LPAREN_in_stringTerm7088_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7090  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7090_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7090	= { FOLLOW_formula_in_stringTerm7090_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7093  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7093_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7093	= { FOLLOW_COMMA_in_stringTerm7093_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7095  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7095_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7095	= { FOLLOW_formula_in_stringTerm7095_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7098  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7098_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7098	= { FOLLOW_COMMA_in_stringTerm7098_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7100  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7100_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7100	= { FOLLOW_formula_in_stringTerm7100_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7103  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7103_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7103	= { FOLLOW_RPAREN_in_stringTerm7103_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_INDEXOF_TOK_in_stringTerm7115  */
+static	ANTLR3_BITWORD FOLLOW_STRING_INDEXOF_TOK_in_stringTerm7115_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_INDEXOF_TOK_in_stringTerm7115	= { FOLLOW_STRING_INDEXOF_TOK_in_stringTerm7115_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7117  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7117_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7117	= { FOLLOW_LPAREN_in_stringTerm7117_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7119  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7119_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7119	= { FOLLOW_formula_in_stringTerm7119_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7122  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7122_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7122	= { FOLLOW_COMMA_in_stringTerm7122_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7124  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7124_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7124	= { FOLLOW_formula_in_stringTerm7124_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7127  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7127_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7127	= { FOLLOW_COMMA_in_stringTerm7127_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7129  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7129_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7129	= { FOLLOW_formula_in_stringTerm7129_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7132  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7132_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7132	= { FOLLOW_RPAREN_in_stringTerm7132_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_REPLACE_TOK_in_stringTerm7144  */
+static	ANTLR3_BITWORD FOLLOW_STRING_REPLACE_TOK_in_stringTerm7144_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_REPLACE_TOK_in_stringTerm7144	= { FOLLOW_STRING_REPLACE_TOK_in_stringTerm7144_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7146  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7146_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7146	= { FOLLOW_LPAREN_in_stringTerm7146_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7148  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7148_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7148	= { FOLLOW_formula_in_stringTerm7148_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7151  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7151_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7151	= { FOLLOW_COMMA_in_stringTerm7151_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7153  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7153_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7153	= { FOLLOW_formula_in_stringTerm7153_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7156  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7156_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7156	= { FOLLOW_COMMA_in_stringTerm7156_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7158  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7158_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7158	= { FOLLOW_formula_in_stringTerm7158_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7161  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7161_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7161	= { FOLLOW_RPAREN_in_stringTerm7161_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_PREFIXOF_TOK_in_stringTerm7173  */
+static	ANTLR3_BITWORD FOLLOW_STRING_PREFIXOF_TOK_in_stringTerm7173_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_PREFIXOF_TOK_in_stringTerm7173	= { FOLLOW_STRING_PREFIXOF_TOK_in_stringTerm7173_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7175  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7175_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7175	= { FOLLOW_LPAREN_in_stringTerm7175_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7177  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7177_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7177	= { FOLLOW_formula_in_stringTerm7177_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7180  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7180_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7180	= { FOLLOW_COMMA_in_stringTerm7180_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7182  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7182_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7182	= { FOLLOW_formula_in_stringTerm7182_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7185  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7185_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7185	= { FOLLOW_RPAREN_in_stringTerm7185_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_SUFFIXOF_TOK_in_stringTerm7197  */
+static	ANTLR3_BITWORD FOLLOW_STRING_SUFFIXOF_TOK_in_stringTerm7197_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_SUFFIXOF_TOK_in_stringTerm7197	= { FOLLOW_STRING_SUFFIXOF_TOK_in_stringTerm7197_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7199  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7199_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7199	= { FOLLOW_LPAREN_in_stringTerm7199_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7201  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7201_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7201	= { FOLLOW_formula_in_stringTerm7201_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7204  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7204_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7204	= { FOLLOW_COMMA_in_stringTerm7204_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7206  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7206_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7206	= { FOLLOW_formula_in_stringTerm7206_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7209  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7209_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7209	= { FOLLOW_RPAREN_in_stringTerm7209_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_STOI_TOK_in_stringTerm7221  */
+static	ANTLR3_BITWORD FOLLOW_STRING_STOI_TOK_in_stringTerm7221_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_STOI_TOK_in_stringTerm7221	= { FOLLOW_STRING_STOI_TOK_in_stringTerm7221_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7223  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7223_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7223	= { FOLLOW_LPAREN_in_stringTerm7223_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7225  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7225_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7225	= { FOLLOW_formula_in_stringTerm7225_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7228  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7228_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7228	= { FOLLOW_RPAREN_in_stringTerm7228_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_ITOS_TOK_in_stringTerm7240  */
+static	ANTLR3_BITWORD FOLLOW_STRING_ITOS_TOK_in_stringTerm7240_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_ITOS_TOK_in_stringTerm7240	= { FOLLOW_STRING_ITOS_TOK_in_stringTerm7240_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7242  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7242_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7242	= { FOLLOW_LPAREN_in_stringTerm7242_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7244  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7244_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7244	= { FOLLOW_formula_in_stringTerm7244_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7247  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7247_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7247	= { FOLLOW_RPAREN_in_stringTerm7247_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_U16TOS_TOK_in_stringTerm7259  */
+static	ANTLR3_BITWORD FOLLOW_STRING_U16TOS_TOK_in_stringTerm7259_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_U16TOS_TOK_in_stringTerm7259	= { FOLLOW_STRING_U16TOS_TOK_in_stringTerm7259_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7261  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7261_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7261	= { FOLLOW_LPAREN_in_stringTerm7261_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7263  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7263_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7263	= { FOLLOW_formula_in_stringTerm7263_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7266  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7266_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7266	= { FOLLOW_RPAREN_in_stringTerm7266_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_STOU16_TOK_in_stringTerm7278  */
+static	ANTLR3_BITWORD FOLLOW_STRING_STOU16_TOK_in_stringTerm7278_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_STOU16_TOK_in_stringTerm7278	= { FOLLOW_STRING_STOU16_TOK_in_stringTerm7278_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7280  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7280_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7280	= { FOLLOW_LPAREN_in_stringTerm7280_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7282  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7282_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7282	= { FOLLOW_formula_in_stringTerm7282_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7285  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7285_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7285	= { FOLLOW_RPAREN_in_stringTerm7285_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_U32TOS_TOK_in_stringTerm7297  */
+static	ANTLR3_BITWORD FOLLOW_STRING_U32TOS_TOK_in_stringTerm7297_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_U32TOS_TOK_in_stringTerm7297	= { FOLLOW_STRING_U32TOS_TOK_in_stringTerm7297_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7299  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7299_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7299	= { FOLLOW_LPAREN_in_stringTerm7299_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7301  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7301_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7301	= { FOLLOW_formula_in_stringTerm7301_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7304  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7304_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7304	= { FOLLOW_RPAREN_in_stringTerm7304_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_STOU32_TOK_in_stringTerm7316  */
+static	ANTLR3_BITWORD FOLLOW_STRING_STOU32_TOK_in_stringTerm7316_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_STOU32_TOK_in_stringTerm7316	= { FOLLOW_STRING_STOU32_TOK_in_stringTerm7316_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7318  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7318_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7318	= { FOLLOW_LPAREN_in_stringTerm7318_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7320  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7320_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7320	= { FOLLOW_formula_in_stringTerm7320_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7323  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7323_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7323	= { FOLLOW_RPAREN_in_stringTerm7323_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_stringTerm7346  */
+static	ANTLR3_BITWORD FOLLOW_str_in_stringTerm7346_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_stringTerm7346	= { FOLLOW_str_in_stringTerm7346_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_setsTerm_in_stringTerm7360  */
+static	ANTLR3_BITWORD FOLLOW_setsTerm_in_stringTerm7360_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_setsTerm_in_stringTerm7360	= { FOLLOW_setsTerm_in_stringTerm7360_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SETS_CARD_TOK_in_setsTerm7388  */
+static	ANTLR3_BITWORD FOLLOW_SETS_CARD_TOK_in_setsTerm7388_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_SETS_CARD_TOK_in_setsTerm7388	= { FOLLOW_SETS_CARD_TOK_in_setsTerm7388_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_setsTerm7390  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_setsTerm7390_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_setsTerm7390	= { FOLLOW_LPAREN_in_setsTerm7390_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_setsTerm7392  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_setsTerm7392_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_setsTerm7392	= { FOLLOW_formula_in_setsTerm7392_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_setsTerm7395  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_setsTerm7395_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_setsTerm7395	= { FOLLOW_RPAREN_in_setsTerm7395_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleTerm_in_setsTerm7407  */
+static	ANTLR3_BITWORD FOLLOW_simpleTerm_in_setsTerm7407_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleTerm_in_setsTerm7407	= { FOLLOW_simpleTerm_in_setsTerm7407_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_iteTerm_in_simpleTerm7438  */
+static	ANTLR3_BITWORD FOLLOW_iteTerm_in_simpleTerm7438_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_iteTerm_in_simpleTerm7438	= { FOLLOW_iteTerm_in_simpleTerm7438_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_simpleTerm7461  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_simpleTerm7461_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_simpleTerm7461	= { FOLLOW_LPAREN_in_simpleTerm7461_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_simpleTerm7463  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_simpleTerm7463_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_simpleTerm7463	= { FOLLOW_formula_in_simpleTerm7463_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_simpleTerm7474  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_simpleTerm7474_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_simpleTerm7474	= { FOLLOW_COMMA_in_simpleTerm7474_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_simpleTerm7476  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_simpleTerm7476_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_simpleTerm7476	= { FOLLOW_formula_in_simpleTerm7476_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_simpleTerm7484  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_simpleTerm7484_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_simpleTerm7484	= { FOLLOW_RPAREN_in_simpleTerm7484_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_simpleTerm7507  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_simpleTerm7507_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_simpleTerm7507	= { FOLLOW_LPAREN_in_simpleTerm7507_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_simpleTerm7509  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_simpleTerm7509_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_simpleTerm7509	= { FOLLOW_RPAREN_in_simpleTerm7509_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PARENHASH_in_simpleTerm7553  */
+static	ANTLR3_BITWORD FOLLOW_PARENHASH_in_simpleTerm7553_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000001000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_PARENHASH_in_simpleTerm7553	= { FOLLOW_PARENHASH_in_simpleTerm7553_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_HASHPAREN_in_simpleTerm7555  */
+static	ANTLR3_BITWORD FOLLOW_HASHPAREN_in_simpleTerm7555_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_HASHPAREN_in_simpleTerm7555	= { FOLLOW_HASHPAREN_in_simpleTerm7555_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACE_in_simpleTerm7573  */
+static	ANTLR3_BITWORD FOLLOW_LBRACE_in_simpleTerm7573_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000020000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACE_in_simpleTerm7573	= { FOLLOW_LBRACE_in_simpleTerm7573_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACE_in_simpleTerm7575  */
+static	ANTLR3_BITWORD FOLLOW_RBRACE_in_simpleTerm7575_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACE_in_simpleTerm7575	= { FOLLOW_RBRACE_in_simpleTerm7575_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_UNIVSET_TOK_in_simpleTerm7587  */
+static	ANTLR3_BITWORD FOLLOW_UNIVSET_TOK_in_simpleTerm7587_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_UNIVSET_TOK_in_simpleTerm7587	= { FOLLOW_UNIVSET_TOK_in_simpleTerm7587_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACE_in_simpleTerm7606  */
+static	ANTLR3_BITWORD FOLLOW_LBRACE_in_simpleTerm7606_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACE_in_simpleTerm7606	= { FOLLOW_LBRACE_in_simpleTerm7606_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_simpleTerm7608  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_simpleTerm7608_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000020000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_simpleTerm7608	= { FOLLOW_formula_in_simpleTerm7608_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_simpleTerm7619  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_simpleTerm7619_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_simpleTerm7619	= { FOLLOW_COMMA_in_simpleTerm7619_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_simpleTerm7621  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_simpleTerm7621_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000020000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_simpleTerm7621	= { FOLLOW_formula_in_simpleTerm7621_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACE_in_simpleTerm7629  */
+static	ANTLR3_BITWORD FOLLOW_RBRACE_in_simpleTerm7629_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACE_in_simpleTerm7629	= { FOLLOW_RBRACE_in_simpleTerm7629_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BAR_in_simpleTerm7648  */
+static	ANTLR3_BITWORD FOLLOW_BAR_in_simpleTerm7648_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000004000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BAR_in_simpleTerm7648	= { FOLLOW_BAR_in_simpleTerm7648_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BAR_in_simpleTerm7650  */
+static	ANTLR3_BITWORD FOLLOW_BAR_in_simpleTerm7650_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_BAR_in_simpleTerm7650	= { FOLLOW_BAR_in_simpleTerm7650_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_simpleTerm7652  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_simpleTerm7652_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000004000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_simpleTerm7652	= { FOLLOW_formula_in_simpleTerm7652_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BAR_in_simpleTerm7657  */
+static	ANTLR3_BITWORD FOLLOW_BAR_in_simpleTerm7657_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000004000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BAR_in_simpleTerm7657	= { FOLLOW_BAR_in_simpleTerm7657_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BAR_in_simpleTerm7659  */
+static	ANTLR3_BITWORD FOLLOW_BAR_in_simpleTerm7659_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BAR_in_simpleTerm7659	= { FOLLOW_BAR_in_simpleTerm7659_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ARRAY_TOK_in_simpleTerm7678  */
+static	ANTLR3_BITWORD FOLLOW_ARRAY_TOK_in_simpleTerm7678_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_ARRAY_TOK_in_simpleTerm7678	= { FOLLOW_ARRAY_TOK_in_simpleTerm7678_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_simpleTerm7682  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_simpleTerm7682_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0441020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_simpleTerm7682	= { FOLLOW_LPAREN_in_simpleTerm7682_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_simpleTerm7688  */
+static	ANTLR3_BITWORD FOLLOW_restrictedType_in_simpleTerm7688_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_simpleTerm7688	= { FOLLOW_restrictedType_in_simpleTerm7688_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_OF_TOK_in_simpleTerm7691  */
+static	ANTLR3_BITWORD FOLLOW_OF_TOK_in_simpleTerm7691_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0441020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_OF_TOK_in_simpleTerm7691	= { FOLLOW_OF_TOK_in_simpleTerm7691_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_simpleTerm7693  */
+static	ANTLR3_BITWORD FOLLOW_restrictedType_in_simpleTerm7693_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_simpleTerm7693	= { FOLLOW_restrictedType_in_simpleTerm7693_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_simpleTerm7700  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_simpleTerm7700_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_simpleTerm7700	= { FOLLOW_RPAREN_in_simpleTerm7700_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_simpleTerm7702  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_simpleTerm7702_bits[]	= { ANTLR3_UINT64_LIT(0x400000000000C100), ANTLR3_UINT64_LIT(0x04208B0002000000), ANTLR3_UINT64_LIT(0x0440000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_simpleTerm7702	= { FOLLOW_COLON_in_simpleTerm7702_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleTerm_in_simpleTerm7704  */
+static	ANTLR3_BITWORD FOLLOW_simpleTerm_in_simpleTerm7704_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleTerm_in_simpleTerm7704	= { FOLLOW_simpleTerm_in_simpleTerm7704_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRUE_TOK_in_simpleTerm7724  */
+static	ANTLR3_BITWORD FOLLOW_TRUE_TOK_in_simpleTerm7724_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_TRUE_TOK_in_simpleTerm7724	= { FOLLOW_TRUE_TOK_in_simpleTerm7724_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FALSE_TOK_in_simpleTerm7733  */
+static	ANTLR3_BITWORD FOLLOW_FALSE_TOK_in_simpleTerm7733_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FALSE_TOK_in_simpleTerm7733	= { FOLLOW_FALSE_TOK_in_simpleTerm7733_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECIMAL_LITERAL_in_simpleTerm7753  */
+static	ANTLR3_BITWORD FOLLOW_DECIMAL_LITERAL_in_simpleTerm7753_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECIMAL_LITERAL_in_simpleTerm7753	= { FOLLOW_DECIMAL_LITERAL_in_simpleTerm7753_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_simpleTerm7761  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_simpleTerm7761_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_simpleTerm7761	= { FOLLOW_INTEGER_LITERAL_in_simpleTerm7761_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_HEX_LITERAL_in_simpleTerm7775  */
+static	ANTLR3_BITWORD FOLLOW_HEX_LITERAL_in_simpleTerm7775_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_HEX_LITERAL_in_simpleTerm7775	= { FOLLOW_HEX_LITERAL_in_simpleTerm7775_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BINARY_LITERAL_in_simpleTerm7787  */
+static	ANTLR3_BITWORD FOLLOW_BINARY_LITERAL_in_simpleTerm7787_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BINARY_LITERAL_in_simpleTerm7787	= { FOLLOW_BINARY_LITERAL_in_simpleTerm7787_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PARENHASH_in_simpleTerm7805  */
+static	ANTLR3_BITWORD FOLLOW_PARENHASH_in_simpleTerm7805_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_PARENHASH_in_simpleTerm7805	= { FOLLOW_PARENHASH_in_simpleTerm7805_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordEntry_in_simpleTerm7807  */
+static	ANTLR3_BITWORD FOLLOW_recordEntry_in_simpleTerm7807_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000001000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_recordEntry_in_simpleTerm7807	= { FOLLOW_recordEntry_in_simpleTerm7807_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_simpleTerm7818  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_simpleTerm7818_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_simpleTerm7818	= { FOLLOW_COMMA_in_simpleTerm7818_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordEntry_in_simpleTerm7820  */
+static	ANTLR3_BITWORD FOLLOW_recordEntry_in_simpleTerm7820_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000001000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_recordEntry_in_simpleTerm7820	= { FOLLOW_recordEntry_in_simpleTerm7820_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_HASHPAREN_in_simpleTerm7828  */
+static	ANTLR3_BITWORD FOLLOW_HASHPAREN_in_simpleTerm7828_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_HASHPAREN_in_simpleTerm7828	= { FOLLOW_HASHPAREN_in_simpleTerm7828_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_simpleTerm7847  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_simpleTerm7847_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_simpleTerm7847	= { FOLLOW_identifier_in_simpleTerm7847_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_typeAscription7887  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_typeAscription7887_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_typeAscription7887	= { FOLLOW_COLON_in_typeAscription7887_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_typeAscription7889  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_typeAscription7889_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_typeAscription7889	= { FOLLOW_COLON_in_typeAscription7889_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_typeAscription7891  */
+static	ANTLR3_BITWORD FOLLOW_type_in_typeAscription7891_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_typeAscription7891	= { FOLLOW_type_in_typeAscription7891_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_recordEntry7908  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_recordEntry7908_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000001000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_recordEntry7908	= { FOLLOW_identifier_in_recordEntry7908_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSIGN_TOK_in_recordEntry7911  */
+static	ANTLR3_BITWORD FOLLOW_ASSIGN_TOK_in_recordEntry7911_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_ASSIGN_TOK_in_recordEntry7911	= { FOLLOW_ASSIGN_TOK_in_recordEntry7911_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_recordEntry7913  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_recordEntry7913_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_recordEntry7913	= { FOLLOW_formula_in_recordEntry7913_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IF_TOK_in_iteTerm7935  */
+static	ANTLR3_BITWORD FOLLOW_IF_TOK_in_iteTerm7935_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_IF_TOK_in_iteTerm7935	= { FOLLOW_IF_TOK_in_iteTerm7935_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_iteTerm7937  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_iteTerm7937_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0002000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_iteTerm7937	= { FOLLOW_formula_in_iteTerm7937_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_THEN_TOK_in_iteTerm7946  */
+static	ANTLR3_BITWORD FOLLOW_THEN_TOK_in_iteTerm7946_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_THEN_TOK_in_iteTerm7946	= { FOLLOW_THEN_TOK_in_iteTerm7946_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_iteTerm7948  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_iteTerm7948_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000030000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_iteTerm7948	= { FOLLOW_formula_in_iteTerm7948_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_iteElseTerm_in_iteTerm7957  */
+static	ANTLR3_BITWORD FOLLOW_iteElseTerm_in_iteTerm7957_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
+static  ANTLR3_BITSET_LIST FOLLOW_iteElseTerm_in_iteTerm7957	= { FOLLOW_iteElseTerm_in_iteTerm7957_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ENDIF_TOK_in_iteTerm7966  */
+static	ANTLR3_BITWORD FOLLOW_ENDIF_TOK_in_iteTerm7966_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_ENDIF_TOK_in_iteTerm7966	= { FOLLOW_ENDIF_TOK_in_iteTerm7966_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ELSE_TOK_in_iteElseTerm7993  */
+static	ANTLR3_BITWORD FOLLOW_ELSE_TOK_in_iteElseTerm7993_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_ELSE_TOK_in_iteElseTerm7993	= { FOLLOW_ELSE_TOK_in_iteElseTerm7993_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_iteElseTerm7995  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_iteElseTerm7995_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_iteElseTerm7995	= { FOLLOW_formula_in_iteElseTerm7995_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ELSEIF_TOK_in_iteElseTerm8002  */
+static	ANTLR3_BITWORD FOLLOW_ELSEIF_TOK_in_iteElseTerm8002_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_ELSEIF_TOK_in_iteElseTerm8002	= { FOLLOW_ELSEIF_TOK_in_iteElseTerm8002_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_iteElseTerm8008  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_iteElseTerm8008_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0002000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_iteElseTerm8008	= { FOLLOW_formula_in_iteElseTerm8008_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_THEN_TOK_in_iteElseTerm8017  */
+static	ANTLR3_BITWORD FOLLOW_THEN_TOK_in_iteElseTerm8017_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_THEN_TOK_in_iteElseTerm8017	= { FOLLOW_THEN_TOK_in_iteElseTerm8017_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_iteElseTerm8023  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_iteElseTerm8023_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000030000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_iteElseTerm8023	= { FOLLOW_formula_in_iteElseTerm8023_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_iteElseTerm_in_iteElseTerm8036  */
+static	ANTLR3_BITWORD FOLLOW_iteElseTerm_in_iteElseTerm8036_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_iteElseTerm_in_iteElseTerm8036	= { FOLLOW_iteElseTerm_in_iteElseTerm8036_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_datatypeDef8072  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_datatypeDef8072_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0040000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_datatypeDef8072	= { FOLLOW_identifier_in_datatypeDef8072_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_datatypeDef8083  */
+static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_datatypeDef8083_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_datatypeDef8083	= { FOLLOW_LBRACKET_in_datatypeDef8083_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_datatypeDef8085  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_datatypeDef8085_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_datatypeDef8085	= { FOLLOW_identifier_in_datatypeDef8085_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_datatypeDef8098  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_datatypeDef8098_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_datatypeDef8098	= { FOLLOW_COMMA_in_datatypeDef8098_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_datatypeDef8100  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_datatypeDef8100_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_datatypeDef8100	= { FOLLOW_identifier_in_datatypeDef8100_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_datatypeDef8114  */
+static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_datatypeDef8114_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_datatypeDef8114	= { FOLLOW_RBRACKET_in_datatypeDef8114_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_datatypeDef8133  */
+static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_datatypeDef8133_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_datatypeDef8133	= { FOLLOW_EQUAL_TOK_in_datatypeDef8133_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_constructorDef_in_datatypeDef8135  */
+static	ANTLR3_BITWORD FOLLOW_constructorDef_in_datatypeDef8135_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000004002) };
+static  ANTLR3_BITSET_LIST FOLLOW_constructorDef_in_datatypeDef8135	= { FOLLOW_constructorDef_in_datatypeDef8135_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BAR_in_datatypeDef8144  */
+static	ANTLR3_BITWORD FOLLOW_BAR_in_datatypeDef8144_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BAR_in_datatypeDef8144	= { FOLLOW_BAR_in_datatypeDef8144_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_constructorDef_in_datatypeDef8146  */
+static	ANTLR3_BITWORD FOLLOW_constructorDef_in_datatypeDef8146_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000004002) };
+static  ANTLR3_BITSET_LIST FOLLOW_constructorDef_in_datatypeDef8146	= { FOLLOW_constructorDef_in_datatypeDef8146_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_constructorDef8177  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_constructorDef8177_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_constructorDef8177	= { FOLLOW_identifier_in_constructorDef8177_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_constructorDef8192  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_constructorDef8192_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_constructorDef8192	= { FOLLOW_LPAREN_in_constructorDef8192_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_selector_in_constructorDef8200  */
+static	ANTLR3_BITWORD FOLLOW_selector_in_constructorDef8200_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_selector_in_constructorDef8200	= { FOLLOW_selector_in_constructorDef8200_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_constructorDef8211  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_constructorDef8211_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_constructorDef8211	= { FOLLOW_COMMA_in_constructorDef8211_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_selector_in_constructorDef8213  */
+static	ANTLR3_BITWORD FOLLOW_selector_in_constructorDef8213_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_selector_in_constructorDef8213	= { FOLLOW_selector_in_constructorDef8213_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_constructorDef8225  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_constructorDef8225_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_constructorDef8225	= { FOLLOW_RPAREN_in_constructorDef8225_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_selector8257  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_selector8257_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_selector8257	= { FOLLOW_identifier_in_selector8257_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_selector8260  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_selector8260_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_selector8260	= { FOLLOW_COLON_in_selector8260_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_selector8262  */
+static	ANTLR3_BITWORD FOLLOW_type_in_selector8262_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_selector8262	= { FOLLOW_type_in_selector8262_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_numeral8337  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_numeral8337_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_numeral8337	= { FOLLOW_INTEGER_LITERAL_in_numeral8337_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_integer8362  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_integer8362_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_integer8362	= { FOLLOW_INTEGER_LITERAL_in_integer8362_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_MINUS_TOK_in_integer8374  */
+static	ANTLR3_BITWORD FOLLOW_MINUS_TOK_in_integer8374_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_MINUS_TOK_in_integer8374	= { FOLLOW_MINUS_TOK_in_integer8374_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_integer8376  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_integer8376_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_integer8376	= { FOLLOW_INTEGER_LITERAL_in_integer8376_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_LITERAL_in_str8398  */
+static	ANTLR3_BITWORD FOLLOW_STRING_LITERAL_in_str8398_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_LITERAL_in_str8398	= { FOLLOW_STRING_LITERAL_in_str8398_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_letDecl_in_synpred1_Cvc1998  */
+static	ANTLR3_BITWORD FOLLOW_letDecl_in_synpred1_Cvc1998_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_letDecl_in_synpred1_Cvc1998	= { FOLLOW_letDecl_in_synpred1_Cvc1998_bits, 1	};
+
+
+/* ==============================================
+ * Parsing rules
+ */
+/**
+ * $ANTLR start parseExpr
+ * ../../../../../../src/parser/cvc/Cvc.g:646:1: parseExpr returns [CVC4::Expr expr = CVC4::Expr()] : ( formula[expr] | EOF );
+ */
+static CVC4::Expr
+parseExpr(pCvcParser ctx)
+{
+    CVC4::Expr expr;
+
+
+    /* Initialize rule variables
+     */
+    expr =  CVC4::Expr();
+
+
+    {
+        {
+            //  ../../../../../../src/parser/cvc/Cvc.g:647:3: ( formula[expr] | EOF )
+
+            ANTLR3_UINT32 alt1;
+
+            alt1=2;
+
+            switch ( LA(1) )
+            {
+            case ABS_TOK:
+            case ARRAY_TOK:
+            case BAR:
+            case BINARY_LITERAL:
+            case BVASHR_TOK:
+            case BVCOMP_TOK:
+            case BVGE_TOK:
+            case BVGT_TOK:
+            case BVLE_TOK:
+            case BVLSHR_TOK:
+            case BVLT_TOK:
+            case BVMULT_TOK:
+            case BVNAND_TOK:
+            case BVNEG_TOK:
+            case BVNOR_TOK:
+            case BVPLUS_TOK:
+            case BVREPEAT_TOK:
+            case BVROTL_TOK:
+            case BVROTR_TOK:
+            case BVSDIV_TOK:
+            case BVSGE_TOK:
+            case BVSGT_TOK:
+            case BVSHL_TOK:
+            case BVSLE_TOK:
+            case BVSLT_TOK:
+            case BVSMOD_TOK:
+            case BVSREM_TOK:
+            case BVSUB_TOK:
+            case BVUDIV_TOK:
+            case BVUMINUS_TOK:
+            case BVUREM_TOK:
+            case BVXNOR_TOK:
+            case BVXOR_TOK:
+            case BVZEROEXTEND_TOK:
+            case DECIMAL_LITERAL:
+            case DISTINCT_TOK:
+            case DIVISIBLE_TOK:
+            case EXISTS_TOK:
+            case FALSE_TOK:
+            case FLOOR_TOK:
+            case FORALL_TOK:
+            case HEX_LITERAL:
+            case IDENTIFIER:
+            case IF_TOK:
+            case INTEGER_LITERAL:
+            case IS_INTEGER_TOK:
+            case LAMBDA:
+            case LBRACE:
+            case LET_TOK:
+            case LPAREN:
+            case MINUS_TOK:
+            case NOT_TOK:
+            case PARENHASH:
+            case SETS_CARD_TOK:
+            case STRING_CONCAT_TOK:
+            case STRING_CONTAINS_TOK:
+            case STRING_INDEXOF_TOK:
+            case STRING_ITOS_TOK:
+            case STRING_LENGTH_TOK:
+            case STRING_LITERAL:
+            case STRING_PREFIXOF_TOK:
+            case STRING_REPLACE_TOK:
+            case STRING_STOI_TOK:
+            case STRING_STOU16_TOK:
+            case STRING_STOU32_TOK:
+            case STRING_SUBSTR_TOK:
+            case STRING_SUFFIXOF_TOK:
+            case STRING_U16TOS_TOK:
+            case STRING_U32TOS_TOK:
+            case SX_TOK:
+            case TRANSCLOSURE_TOK:
+            case TRANSPOSE_TOK:
+            case TRUE_TOK:
+            case TUPLE_TOK:
+            case UNIVSET_TOK:
+            	{
+            		alt1=1;
+            	}
+                break;
+            case EOF:
+            	{
+            		alt1=2;
+            	}
+                break;
+
+            default:
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return expr;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 1;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleparseExprEx;
+
+            }
+
+            switch (alt1)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:647:5: formula[expr]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_formula_in_parseExpr1800);
+        	        formula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseExprEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return expr;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:648:5: EOF
+        	    {
+        	         MATCHT(EOF, &FOLLOW_EOF_in_parseExpr1807);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseExprEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return expr;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleparseExprEx; /* Prevent compiler warnings */
+    ruleparseExprEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return expr;
+}
+/* $ANTLR end parseExpr */
+
+/**
+ * $ANTLR start parseCommand
+ * ../../../../../../src/parser/cvc/Cvc.g:655:1: parseCommand returns [CVC4::Command* cmd_return = NULL] : (c= command[&cmd] | LPAREN IDENTIFIER | EOF );
+ */
+static CVC4::Command*
+parseCommand(pCvcParser ctx)
+{
+    CVC4::Command* cmd_return;
+
+
+
+        CVC4::PtrCloser<CVC4::Command> cmd;
+
+    pANTLR3_COMMON_TOKEN    IDENTIFIER1;
+
+    /* Initialize rule variables
+     */
+    cmd_return =  NULL;
+
+
+    IDENTIFIER1       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/cvc/Cvc.g:662:3: (c= command[&cmd] | LPAREN IDENTIFIER | EOF )
+
+            ANTLR3_UINT32 alt2;
+
+            alt2=3;
+
+            switch ( LA(1) )
+            {
+            case ARITH_VAR_ORDER_TOK:
+            case ASSERTIONS_TOK:
+            case ASSERT_TOK:
+            case ASSUMPTIONS_TOK:
+            case CALL_TOK:
+            case CHECKSAT_TOK:
+            case CHECK_TYPE_TOK:
+            case CONTEXT_TOK:
+            case CONTINUE_TOK:
+            case COUNTEREXAMPLE_TOK:
+            case COUNTERMODEL_TOK:
+            case DATATYPE_TOK:
+            case DBG_TOK:
+            case DUMP_ASSUMPTIONS_TOK:
+            case DUMP_CLOSURE_PROOF_TOK:
+            case DUMP_CLOSURE_TOK:
+            case DUMP_PROOF_TOK:
+            case DUMP_SIG_TOK:
+            case DUMP_TCC_ASSUMPTIONS_TOK:
+            case DUMP_TCC_PROOF_TOK:
+            case DUMP_TCC_TOK:
+            case DUMP_UNSAT_CORE_TOK:
+            case ECHO_TOK:
+            case EXIT_TOK:
+            case FORGET_TOK:
+            case GET_CHILD_TOK:
+            case GET_OP_TOK:
+            case GET_TYPE_TOK:
+            case GET_VALUE_TOK:
+            case HELP_TOK:
+            case IDENTIFIER:
+            case INCLUDE_TOK:
+            case LET_TOK:
+            case OPTION_TOK:
+            case POPTO_SCOPE_TOK:
+            case POPTO_TOK:
+            case POP_SCOPE_TOK:
+            case POP_TOK:
+            case PRINT_TOK:
+            case PRINT_TYPE_TOK:
+            case PUSH_SCOPE_TOK:
+            case PUSH_TOK:
+            case QUERY_TOK:
+            case RESET_TOK:
+            case RESTART_TOK:
+            case SEMICOLON:
+            case SUBSTITUTE_TOK:
+            case TRACE_TOK:
+            case TRANSFORM_TOK:
+            case UNTRACE_TOK:
+            case WHERE_TOK:
+            	{
+            		alt2=1;
+            	}
+                break;
+            case LPAREN:
+            	{
+            		alt2=2;
+            	}
+                break;
+            case EOF:
+            	{
+            		alt2=3;
+            	}
+                break;
+
+            default:
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return cmd_return;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 2;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleparseCommandEx;
+
+            }
+
+            switch (alt2)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:662:5: c= command[&cmd]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_command_in_parseCommand1838);
+        	        command(ctx, &cmd);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return cmd_return;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:663:5: LPAREN IDENTIFIER
+        	    {
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_parseCommand1845);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return cmd_return;
+        	        }
+
+
+        	        IDENTIFIER1 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_parseCommand1847);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return cmd_return;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             std::string s = AntlrInput::tokenText(IDENTIFIER1);
+        	                if(s == "benchmark") {
+        	                    PARSER_STATE->parseError(
+        	                        "In CVC4 presentation language mode, but SMT-LIBv1 format "
+        	                        "detected.  Use --lang smt1 for SMT-LIBv1 support.");
+        	                  } else if(s == "set" || s == "get" || s == "declare" ||
+        	                            s == "define" || s == "assert") {
+        	                    PARSER_STATE->parseError(
+        	                        "In CVC4 presentation language mode, but SMT-LIB format detected. "
+        	                        "Use --lang smt for SMT-LIB support.");
+        	                  } else {
+        	                    PARSER_STATE->parseError(
+        	                        "A CVC4 presentation language command cannot begin with a "
+        	                        "parenthesis; expected command name.");
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:680:5: EOF
+        	    {
+        	         MATCHT(EOF, &FOLLOW_EOF_in_parseCommand1859);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return cmd_return;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleparseCommandEx; /* Prevent compiler warnings */
+    ruleparseCommandEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+            else
+            {
+                {
+
+                        cmd_return = cmd.release();
+
+                }
+            }
+
+
+    return cmd_return;
+}
+/* $ANTLR end parseCommand */
+
+/**
+ * $ANTLR start command
+ * ../../../../../../src/parser/cvc/Cvc.g:687:1: command[CVC4::PtrCloser<CVC4::Command>* cmd] : ( ( mainCommand[cmd] SEMICOLON | SEMICOLON | LET_TOK typeOrVarLetDecl[CHECK_DECLARED] ( COMMA typeOrVarLetDecl[CHECK_DECLARED] )* IN_TOK command[cmd] ) | IDENTIFIER SEMICOLON );
+ */
+static void
+command(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
+{
+    pANTLR3_COMMON_TOKEN    IDENTIFIER2;
+
+    /* Initialize rule variables
+     */
+
+    IDENTIFIER2       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/cvc/Cvc.g:688:3: ( ( mainCommand[cmd] SEMICOLON | SEMICOLON | LET_TOK typeOrVarLetDecl[CHECK_DECLARED] ( COMMA typeOrVarLetDecl[CHECK_DECLARED] )* IN_TOK command[cmd] ) | IDENTIFIER SEMICOLON )
+
+            ANTLR3_UINT32 alt5;
+
+            alt5=2;
+
+            switch ( LA(1) )
+            {
+            case ARITH_VAR_ORDER_TOK:
+            case ASSERTIONS_TOK:
+            case ASSERT_TOK:
+            case ASSUMPTIONS_TOK:
+            case CALL_TOK:
+            case CHECKSAT_TOK:
+            case CHECK_TYPE_TOK:
+            case CONTEXT_TOK:
+            case CONTINUE_TOK:
+            case COUNTEREXAMPLE_TOK:
+            case COUNTERMODEL_TOK:
+            case DATATYPE_TOK:
+            case DBG_TOK:
+            case DUMP_ASSUMPTIONS_TOK:
+            case DUMP_CLOSURE_PROOF_TOK:
+            case DUMP_CLOSURE_TOK:
+            case DUMP_PROOF_TOK:
+            case DUMP_SIG_TOK:
+            case DUMP_TCC_ASSUMPTIONS_TOK:
+            case DUMP_TCC_PROOF_TOK:
+            case DUMP_TCC_TOK:
+            case DUMP_UNSAT_CORE_TOK:
+            case ECHO_TOK:
+            case EXIT_TOK:
+            case FORGET_TOK:
+            case GET_CHILD_TOK:
+            case GET_OP_TOK:
+            case GET_TYPE_TOK:
+            case GET_VALUE_TOK:
+            case HELP_TOK:
+            case INCLUDE_TOK:
+            case LET_TOK:
+            case OPTION_TOK:
+            case POPTO_SCOPE_TOK:
+            case POPTO_TOK:
+            case POP_SCOPE_TOK:
+            case POP_TOK:
+            case PRINT_TOK:
+            case PRINT_TYPE_TOK:
+            case PUSH_SCOPE_TOK:
+            case PUSH_TOK:
+            case QUERY_TOK:
+            case RESET_TOK:
+            case RESTART_TOK:
+            case SEMICOLON:
+            case SUBSTITUTE_TOK:
+            case TRACE_TOK:
+            case TRANSFORM_TOK:
+            case UNTRACE_TOK:
+            case WHERE_TOK:
+            	{
+            		alt5=1;
+            	}
+                break;
+            case IDENTIFIER:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case SEMICOLON:
+            			{
+            				alt5=2;
+            			}
+            		    break;
+            		case COLON:
+            		case COMMA:
+            			{
+            				alt5=1;
+            			}
+            		    break;
+
+            		default:
+            		    if (BACKTRACKING>0)
+            		    {
+            		        FAILEDFLAG = ANTLR3_TRUE;
+            		        return ;
+            		    }
+
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 5;
+            		    EXCEPTION->state        = 41;
+
+
+            		    goto rulecommandEx;
+
+            		}
+
+            	}
+                break;
+
+            default:
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 5;
+                EXCEPTION->state        = 0;
+
+
+                goto rulecommandEx;
+
+            }
+
+            switch (alt5)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:688:5: ( mainCommand[cmd] SEMICOLON | SEMICOLON | LET_TOK typeOrVarLetDecl[CHECK_DECLARED] ( COMMA typeOrVarLetDecl[CHECK_DECLARED] )* IN_TOK command[cmd] )
+        	    {
+        	        // ../../../../../../src/parser/cvc/Cvc.g:688:5: ( mainCommand[cmd] SEMICOLON | SEMICOLON | LET_TOK typeOrVarLetDecl[CHECK_DECLARED] ( COMMA typeOrVarLetDecl[CHECK_DECLARED] )* IN_TOK command[cmd] )
+        	        {
+        	            int alt4=3;
+        	            switch ( LA(1) )
+        	            {
+        	            case ARITH_VAR_ORDER_TOK:
+        	            case ASSERTIONS_TOK:
+        	            case ASSERT_TOK:
+        	            case ASSUMPTIONS_TOK:
+        	            case CALL_TOK:
+        	            case CHECKSAT_TOK:
+        	            case CHECK_TYPE_TOK:
+        	            case CONTEXT_TOK:
+        	            case CONTINUE_TOK:
+        	            case COUNTEREXAMPLE_TOK:
+        	            case COUNTERMODEL_TOK:
+        	            case DATATYPE_TOK:
+        	            case DBG_TOK:
+        	            case DUMP_ASSUMPTIONS_TOK:
+        	            case DUMP_CLOSURE_PROOF_TOK:
+        	            case DUMP_CLOSURE_TOK:
+        	            case DUMP_PROOF_TOK:
+        	            case DUMP_SIG_TOK:
+        	            case DUMP_TCC_ASSUMPTIONS_TOK:
+        	            case DUMP_TCC_PROOF_TOK:
+        	            case DUMP_TCC_TOK:
+        	            case DUMP_UNSAT_CORE_TOK:
+        	            case ECHO_TOK:
+        	            case EXIT_TOK:
+        	            case FORGET_TOK:
+        	            case GET_CHILD_TOK:
+        	            case GET_OP_TOK:
+        	            case GET_TYPE_TOK:
+        	            case GET_VALUE_TOK:
+        	            case HELP_TOK:
+        	            case IDENTIFIER:
+        	            case INCLUDE_TOK:
+        	            case OPTION_TOK:
+        	            case POPTO_SCOPE_TOK:
+        	            case POPTO_TOK:
+        	            case POP_SCOPE_TOK:
+        	            case POP_TOK:
+        	            case PRINT_TOK:
+        	            case PRINT_TYPE_TOK:
+        	            case PUSH_SCOPE_TOK:
+        	            case PUSH_TOK:
+        	            case QUERY_TOK:
+        	            case RESET_TOK:
+        	            case RESTART_TOK:
+        	            case SUBSTITUTE_TOK:
+        	            case TRACE_TOK:
+        	            case TRANSFORM_TOK:
+        	            case UNTRACE_TOK:
+        	            case WHERE_TOK:
+        	            	{
+        	            		alt4=1;
+        	            	}
+        	                break;
+        	            case SEMICOLON:
+        	            	{
+        	            		alt4=2;
+        	            	}
+        	                break;
+        	            case LET_TOK:
+        	            	{
+        	            		alt4=3;
+        	            	}
+        	                break;
+
+        	            default:
+        	                if (BACKTRACKING>0)
+        	                {
+        	                    FAILEDFLAG = ANTLR3_TRUE;
+        	                    return ;
+        	                }
+
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 4;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulecommandEx;
+
+        	            }
+
+        	            switch (alt4)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:688:7: mainCommand[cmd] SEMICOLON
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_mainCommand_in_command1878);
+        	        	        mainCommand(ctx, cmd);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulecommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	         MATCHT(SEMICOLON, &FOLLOW_SEMICOLON_in_command1881);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulecommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:689:7: SEMICOLON
+        	        	    {
+        	        	         MATCHT(SEMICOLON, &FOLLOW_SEMICOLON_in_command1889);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulecommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 3:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:690:7: LET_TOK typeOrVarLetDecl[CHECK_DECLARED] ( COMMA typeOrVarLetDecl[CHECK_DECLARED] )* IN_TOK command[cmd]
+        	        	    {
+        	        	         MATCHT(LET_TOK, &FOLLOW_LET_TOK_in_command1897);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulecommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             PARSER_STATE->pushScope(); 
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_typeOrVarLetDecl_in_command1907);
+        	        	        typeOrVarLetDecl(ctx, CHECK_DECLARED);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulecommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        // ../../../../../../src/parser/cvc/Cvc.g:691:40: ( COMMA typeOrVarLetDecl[CHECK_DECLARED] )*
+
+        	        	        for (;;)
+        	        	        {
+        	        	            int alt3=2;
+        	        	            switch ( LA(1) )
+        	        	            {
+        	        	            case COMMA:
+        	        	            	{
+        	        	            		alt3=1;
+        	        	            	}
+        	        	                break;
+
+        	        	            }
+
+        	        	            switch (alt3)
+        	        	            {
+        	        	        	case 1:
+        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:692:11: COMMA typeOrVarLetDecl[CHECK_DECLARED]
+        	        	        	    {
+        	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_command1922);
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto rulecommandEx;
+        	        	        	        }
+        	        	        	        if (HASFAILED())
+        	        	        	        {
+        	        	        	            return ;
+        	        	        	        }
+
+
+        	        	        	        FOLLOWPUSH(FOLLOW_typeOrVarLetDecl_in_command1924);
+        	        	        	        typeOrVarLetDecl(ctx, CHECK_DECLARED);
+
+        	        	        	        FOLLOWPOP();
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto rulecommandEx;
+        	        	        	        }
+        	        	        	        if (HASFAILED())
+        	        	        	        {
+        	        	        	            return ;
+        	        	        	        }
+
+
+        	        	        	    }
+        	        	        	    break;
+
+        	        	        	default:
+        	        	        	    goto loop3;	/* break out of the loop */
+        	        	        	    break;
+        	        	            }
+        	        	        }
+        	        	        loop3: ; /* Jump out to here if this rule does not match */
+
+
+        	        	         MATCHT(IN_TOK, &FOLLOW_IN_TOK_in_command1936);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulecommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_command_in_command1938);
+        	        	        command(ctx, cmd);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulecommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             PARSER_STATE->popScope(); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             if(!(*cmd)) {
+        	                    cmd->reset(new EmptyCommand());
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:700:5: IDENTIFIER SEMICOLON
+        	    {
+        	        IDENTIFIER2 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_command1965);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(SEMICOLON, &FOLLOW_SEMICOLON_in_command1967);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             std::stringstream ss;
+        	                  ss << "Unrecognized command `"
+        	                     << AntlrInput::tokenText(IDENTIFIER2)
+        	                     << "'";
+        	                  PARSER_STATE->parseError(ss.str());
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulecommandEx; /* Prevent compiler warnings */
+    rulecommandEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end command */
+
+/**
+ * $ANTLR start typeOrVarLetDecl
+ * ../../../../../../src/parser/cvc/Cvc.g:709:1: typeOrVarLetDecl[CVC4::parser::DeclarationCheck check] options {backtrack=true; } : ( letDecl | typeLetDecl[check] );
+ */
+static void
+typeOrVarLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/cvc/Cvc.g:711:3: ( letDecl | typeLetDecl[check] )
+
+            ANTLR3_UINT32 alt6;
+
+            alt6=2;
+
+            switch ( LA(1) )
+            {
+            case IDENTIFIER:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case EQUAL_TOK:
+            			{
+            				switch ( LA(3) )
+            				{
+            				case ABS_TOK:
+            				case BAR:
+            				case BINARY_LITERAL:
+            				case BVASHR_TOK:
+            				case BVCOMP_TOK:
+            				case BVGE_TOK:
+            				case BVGT_TOK:
+            				case BVLE_TOK:
+            				case BVLSHR_TOK:
+            				case BVLT_TOK:
+            				case BVMULT_TOK:
+            				case BVNAND_TOK:
+            				case BVNEG_TOK:
+            				case BVNOR_TOK:
+            				case BVPLUS_TOK:
+            				case BVREPEAT_TOK:
+            				case BVROTL_TOK:
+            				case BVROTR_TOK:
+            				case BVSDIV_TOK:
+            				case BVSGE_TOK:
+            				case BVSGT_TOK:
+            				case BVSHL_TOK:
+            				case BVSLE_TOK:
+            				case BVSLT_TOK:
+            				case BVSMOD_TOK:
+            				case BVSREM_TOK:
+            				case BVSUB_TOK:
+            				case BVUDIV_TOK:
+            				case BVUMINUS_TOK:
+            				case BVUREM_TOK:
+            				case BVXNOR_TOK:
+            				case BVXOR_TOK:
+            				case BVZEROEXTEND_TOK:
+            				case DECIMAL_LITERAL:
+            				case DISTINCT_TOK:
+            				case DIVISIBLE_TOK:
+            				case EXISTS_TOK:
+            				case FALSE_TOK:
+            				case FLOOR_TOK:
+            				case FORALL_TOK:
+            				case HEX_LITERAL:
+            				case IF_TOK:
+            				case INTEGER_LITERAL:
+            				case IS_INTEGER_TOK:
+            				case LAMBDA:
+            				case LBRACE:
+            				case LET_TOK:
+            				case MINUS_TOK:
+            				case NOT_TOK:
+            				case PARENHASH:
+            				case SETS_CARD_TOK:
+            				case STRING_CONCAT_TOK:
+            				case STRING_CONTAINS_TOK:
+            				case STRING_INDEXOF_TOK:
+            				case STRING_ITOS_TOK:
+            				case STRING_LENGTH_TOK:
+            				case STRING_LITERAL:
+            				case STRING_PREFIXOF_TOK:
+            				case STRING_REPLACE_TOK:
+            				case STRING_STOI_TOK:
+            				case STRING_STOU16_TOK:
+            				case STRING_STOU32_TOK:
+            				case STRING_SUBSTR_TOK:
+            				case STRING_SUFFIXOF_TOK:
+            				case STRING_U16TOS_TOK:
+            				case STRING_U32TOS_TOK:
+            				case SX_TOK:
+            				case TRANSCLOSURE_TOK:
+            				case TRANSPOSE_TOK:
+            				case TRUE_TOK:
+            				case TUPLE_TOK:
+            				case UNIVSET_TOK:
+            					{
+            						alt6=1;
+            					}
+            				    break;
+            				case LPAREN:
+            					{
+            						{
+            						    int LA6_61 = LA(4);
+            						    if ( (synpred1_Cvc(ctx)))
+            						    {
+            						        alt6=1;
+            						    }
+            						    else if ( (ANTLR3_TRUE))
+            						    {
+            						        alt6=2;
+            						    }
+            						    else
+            						    {
+            						        if (BACKTRACKING>0)
+            						        {
+            						            FAILEDFLAG = ANTLR3_TRUE;
+            						            return ;
+            						        }
+
+
+            						        CONSTRUCTEX();
+            						        EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            						        EXCEPTION->message      = (void *)"";
+            						        EXCEPTION->decisionNum  = 6;
+            						        EXCEPTION->state        = 61;
+
+
+            						        goto ruletypeOrVarLetDeclEx;
+
+            						    }
+            						}
+            					}
+            				    break;
+            				case ARRAY_TOK:
+            					{
+            						{
+            						    int LA6_66 = LA(4);
+            						    if ( (synpred1_Cvc(ctx)))
+            						    {
+            						        alt6=1;
+            						    }
+            						    else if ( (ANTLR3_TRUE))
+            						    {
+            						        alt6=2;
+            						    }
+            						    else
+            						    {
+            						        if (BACKTRACKING>0)
+            						        {
+            						            FAILEDFLAG = ANTLR3_TRUE;
+            						            return ;
+            						        }
+
+
+            						        CONSTRUCTEX();
+            						        EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            						        EXCEPTION->message      = (void *)"";
+            						        EXCEPTION->decisionNum  = 6;
+            						        EXCEPTION->state        = 66;
+
+
+            						        goto ruletypeOrVarLetDeclEx;
+
+            						    }
+            						}
+            					}
+            				    break;
+            				case IDENTIFIER:
+            					{
+            						{
+            						    int LA6_73 = LA(4);
+            						    if ( (synpred1_Cvc(ctx)))
+            						    {
+            						        alt6=1;
+            						    }
+            						    else if ( (ANTLR3_TRUE))
+            						    {
+            						        alt6=2;
+            						    }
+            						    else
+            						    {
+            						        if (BACKTRACKING>0)
+            						        {
+            						            FAILEDFLAG = ANTLR3_TRUE;
+            						            return ;
+            						        }
+
+
+            						        CONSTRUCTEX();
+            						        EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            						        EXCEPTION->message      = (void *)"";
+            						        EXCEPTION->decisionNum  = 6;
+            						        EXCEPTION->state        = 73;
+
+
+            						        goto ruletypeOrVarLetDeclEx;
+
+            						    }
+            						}
+            					}
+            				    break;
+            				case BITVECTOR_TOK:
+            				case BOOLEAN_TOK:
+            				case INT_TOK:
+            				case LBRACKET:
+            				case REAL_TOK:
+            				case SET_TOK:
+            				case SQHASH:
+            				case STRING_TOK:
+            				case SUBTYPE_TOK:
+            					{
+            						alt6=2;
+            					}
+            				    break;
+
+            				default:
+            				    if (BACKTRACKING>0)
+            				    {
+            				        FAILEDFLAG = ANTLR3_TRUE;
+            				        return ;
+            				    }
+
+            				    CONSTRUCTEX();
+            				    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            				    EXCEPTION->message      = (void *)"";
+            				    EXCEPTION->decisionNum  = 6;
+            				    EXCEPTION->state        = 2;
+
+
+            				    goto ruletypeOrVarLetDeclEx;
+
+            				}
+
+            			}
+            		    break;
+            		case COLON:
+            			{
+            				alt6=2;
+            			}
+            		    break;
+
+            		default:
+            		    if (BACKTRACKING>0)
+            		    {
+            		        FAILEDFLAG = ANTLR3_TRUE;
+            		        return ;
+            		    }
+
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 6;
+            		    EXCEPTION->state        = 1;
+
+
+            		    goto ruletypeOrVarLetDeclEx;
+
+            		}
+
+            	}
+                break;
+
+            default:
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 6;
+                EXCEPTION->state        = 0;
+
+
+                goto ruletypeOrVarLetDeclEx;
+
+            }
+
+            switch (alt6)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:711:5: letDecl
+        	    {
+        	        FOLLOWPUSH(FOLLOW_letDecl_in_typeOrVarLetDecl1998);
+        	        letDecl(ctx);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletypeOrVarLetDeclEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:711:15: typeLetDecl[check]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_typeLetDecl_in_typeOrVarLetDecl2002);
+        	        typeLetDecl(ctx, check);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletypeOrVarLetDeclEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletypeOrVarLetDeclEx; /* Prevent compiler warnings */
+    ruletypeOrVarLetDeclEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end typeOrVarLetDecl */
+
+/**
+ * $ANTLR start mainCommand
+ * ../../../../../../src/parser/cvc/Cvc.g:714:1: mainCommand[CVC4::PtrCloser<CVC4::Command>* cmd] : ( ASSERT_TOK formula[f] | QUERY_TOK formula[f] | CHECKSAT_TOK ( formula[f] )? | OPTION_TOK ( str[s] | IDENTIFIER ) ( symbolicExpr[sexpr] | TRUE_TOK | FALSE_TOK |) | PUSH_TOK (k= numeral |) | POP_TOK (k= numeral |) | POPTO_TOK (k= numeral )? | PUSH_SCOPE_TOK (k= numeral )? | POP_SCOPE_TOK (k= numeral )? | POPTO_SCOPE_TOK (k= numeral )? | RESET_TOK | RESET_TOK ASSERTIONS_TOK | DATATYPE_TOK d [...]
+ */
+static void
+mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
+{
+    pANTLR3_COMMON_TOKEN    IDENTIFIER3;
+    pANTLR3_COMMON_TOKEN    IDENTIFIER4;
+    pANTLR3_COMMON_TOKEN    IDENTIFIER5;
+    pANTLR3_COMMON_TOKEN    IDENTIFIER6;
+    pANTLR3_COMMON_TOKEN    IDENTIFIER7;
+    pANTLR3_COMMON_TOKEN    IDENTIFIER8;
+    pANTLR3_COMMON_TOKEN    IDENTIFIER9;
+    unsigned k;
+    #undef	RETURN_TYPE_k
+    #define	RETURN_TYPE_k unsigned
+
+    /* Initialize rule variables
+     */
+
+
+      Expr f;
+      SExpr sexpr;
+      std::string id;
+      Type t;
+      std::vector<CVC4::Datatype> dts;
+      Debug("parser-extra") << "command: " << AntlrInput::tokenText(LT(1)) << std::endl;
+      std::string s;
+
+    IDENTIFIER3       = NULL;
+    IDENTIFIER4       = NULL;
+    IDENTIFIER5       = NULL;
+    IDENTIFIER6       = NULL;
+    IDENTIFIER7       = NULL;
+    IDENTIFIER8       = NULL;
+    IDENTIFIER9       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/cvc/Cvc.g:725:3: ( ASSERT_TOK formula[f] | QUERY_TOK formula[f] | CHECKSAT_TOK ( formula[f] )? | OPTION_TOK ( str[s] | IDENTIFIER ) ( symbolicExpr[sexpr] | TRUE_TOK | FALSE_TOK |) | PUSH_TOK (k= numeral |) | POP_TOK (k= numeral |) | POPTO_TOK (k= numeral )? | PUSH_SCOPE_TOK (k= numeral )? | POP_SCOPE_TOK (k= numeral )? | POPTO_SCOPE_TOK (k= numeral )? | RESET_TOK | RESET_TOK ASSERTIONS_TOK | DATATYPE_TOK datatypeDef[dts] ( COMMA datatypeDef[dt [...]
+
+            ANTLR3_UINT32 alt31;
+
+            alt31=42;
+
+            switch ( LA(1) )
+            {
+            case ASSERT_TOK:
+            	{
+            		alt31=1;
+            	}
+                break;
+            case QUERY_TOK:
+            	{
+            		alt31=2;
+            	}
+                break;
+            case CHECKSAT_TOK:
+            	{
+            		alt31=3;
+            	}
+                break;
+            case OPTION_TOK:
+            	{
+            		alt31=4;
+            	}
+                break;
+            case PUSH_TOK:
+            	{
+            		alt31=5;
+            	}
+                break;
+            case POP_TOK:
+            	{
+            		alt31=6;
+            	}
+                break;
+            case POPTO_TOK:
+            	{
+            		alt31=7;
+            	}
+                break;
+            case PUSH_SCOPE_TOK:
+            	{
+            		alt31=8;
+            	}
+                break;
+            case POP_SCOPE_TOK:
+            	{
+            		alt31=9;
+            	}
+                break;
+            case POPTO_SCOPE_TOK:
+            	{
+            		alt31=10;
+            	}
+                break;
+            case RESET_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case ASSERTIONS_TOK:
+            			{
+            				alt31=12;
+            			}
+            		    break;
+            		case SEMICOLON:
+            			{
+            				alt31=11;
+            			}
+            		    break;
+
+            		default:
+            		    if (BACKTRACKING>0)
+            		    {
+            		        FAILEDFLAG = ANTLR3_TRUE;
+            		        return ;
+            		    }
+
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 31;
+            		    EXCEPTION->state        = 11;
+
+
+            		    goto rulemainCommandEx;
+
+            		}
+
+            	}
+                break;
+            case DATATYPE_TOK:
+            	{
+            		alt31=13;
+            	}
+                break;
+            case CONTEXT_TOK:
+            	{
+            		alt31=14;
+            	}
+                break;
+            case FORGET_TOK:
+            	{
+            		alt31=15;
+            	}
+                break;
+            case GET_TYPE_TOK:
+            	{
+            		alt31=16;
+            	}
+                break;
+            case CHECK_TYPE_TOK:
+            	{
+            		alt31=17;
+            	}
+                break;
+            case GET_CHILD_TOK:
+            	{
+            		alt31=18;
+            	}
+                break;
+            case GET_OP_TOK:
+            	{
+            		alt31=19;
+            	}
+                break;
+            case GET_VALUE_TOK:
+            	{
+            		alt31=20;
+            	}
+                break;
+            case SUBSTITUTE_TOK:
+            	{
+            		alt31=21;
+            	}
+                break;
+            case DBG_TOK:
+            	{
+            		alt31=22;
+            	}
+                break;
+            case TRACE_TOK:
+            	{
+            		alt31=23;
+            	}
+                break;
+            case UNTRACE_TOK:
+            	{
+            		alt31=24;
+            	}
+                break;
+            case HELP_TOK:
+            	{
+            		alt31=25;
+            	}
+                break;
+            case TRANSFORM_TOK:
+            	{
+            		alt31=26;
+            	}
+                break;
+            case PRINT_TOK:
+            	{
+            		alt31=27;
+            	}
+                break;
+            case PRINT_TYPE_TOK:
+            	{
+            		alt31=28;
+            	}
+                break;
+            case CALL_TOK:
+            	{
+            		alt31=29;
+            	}
+                break;
+            case ECHO_TOK:
+            	{
+            		alt31=30;
+            	}
+                break;
+            case EXIT_TOK:
+            	{
+            		alt31=31;
+            	}
+                break;
+            case INCLUDE_TOK:
+            	{
+            		alt31=32;
+            	}
+                break;
+            case DUMP_PROOF_TOK:
+            	{
+            		alt31=33;
+            	}
+                break;
+            case DUMP_UNSAT_CORE_TOK:
+            	{
+            		alt31=34;
+            	}
+                break;
+            case DUMP_ASSUMPTIONS_TOK:
+            case DUMP_CLOSURE_PROOF_TOK:
+            case DUMP_CLOSURE_TOK:
+            case DUMP_SIG_TOK:
+            case DUMP_TCC_ASSUMPTIONS_TOK:
+            case DUMP_TCC_PROOF_TOK:
+            case DUMP_TCC_TOK:
+            	{
+            		alt31=35;
+            	}
+                break;
+            case ASSERTIONS_TOK:
+            case ASSUMPTIONS_TOK:
+            case WHERE_TOK:
+            	{
+            		alt31=36;
+            	}
+                break;
+            case COUNTEREXAMPLE_TOK:
+            	{
+            		alt31=37;
+            	}
+                break;
+            case COUNTERMODEL_TOK:
+            	{
+            		alt31=38;
+            	}
+                break;
+            case ARITH_VAR_ORDER_TOK:
+            	{
+            		alt31=39;
+            	}
+                break;
+            case CONTINUE_TOK:
+            	{
+            		alt31=40;
+            	}
+                break;
+            case RESTART_TOK:
+            	{
+            		alt31=41;
+            	}
+                break;
+            case IDENTIFIER:
+            	{
+            		alt31=42;
+            	}
+                break;
+
+            default:
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 31;
+                EXCEPTION->state        = 0;
+
+
+                goto rulemainCommandEx;
+
+            }
+
+            switch (alt31)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:725:5: ASSERT_TOK formula[f]
+        	    {
+        	         MATCHT(ASSERT_TOK, &FOLLOW_ASSERT_TOK_in_mainCommand2028);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2030);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             cmd->reset(new AssertCommand(f)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:727:5: QUERY_TOK formula[f]
+        	    {
+        	         MATCHT(QUERY_TOK, &FOLLOW_QUERY_TOK_in_mainCommand2040);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2042);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             cmd->reset(new QueryCommand(f)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:728:5: CHECKSAT_TOK ( formula[f] )?
+        	    {
+        	         MATCHT(CHECKSAT_TOK, &FOLLOW_CHECKSAT_TOK_in_mainCommand2051);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:728:18: ( formula[f] )?
+        	        {
+        	            int alt7=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case ABS_TOK:
+        	                case ARRAY_TOK:
+        	                case BAR:
+        	                case BINARY_LITERAL:
+        	                case BVASHR_TOK:
+        	                case BVCOMP_TOK:
+        	                case BVGE_TOK:
+        	                case BVGT_TOK:
+        	                case BVLE_TOK:
+        	                case BVLSHR_TOK:
+        	                case BVLT_TOK:
+        	                case BVMULT_TOK:
+        	                case BVNAND_TOK:
+        	                case BVNEG_TOK:
+        	                case BVNOR_TOK:
+        	                case BVPLUS_TOK:
+        	                case BVREPEAT_TOK:
+        	                case BVROTL_TOK:
+        	                case BVROTR_TOK:
+        	                case BVSDIV_TOK:
+        	                case BVSGE_TOK:
+        	                case BVSGT_TOK:
+        	                case BVSHL_TOK:
+        	                case BVSLE_TOK:
+        	                case BVSLT_TOK:
+        	                case BVSMOD_TOK:
+        	                case BVSREM_TOK:
+        	                case BVSUB_TOK:
+        	                case BVUDIV_TOK:
+        	                case BVUMINUS_TOK:
+        	                case BVUREM_TOK:
+        	                case BVXNOR_TOK:
+        	                case BVXOR_TOK:
+        	                case BVZEROEXTEND_TOK:
+        	                case DECIMAL_LITERAL:
+        	                case DISTINCT_TOK:
+        	                case DIVISIBLE_TOK:
+        	                case EXISTS_TOK:
+        	                case FALSE_TOK:
+        	                case FLOOR_TOK:
+        	                case FORALL_TOK:
+        	                case HEX_LITERAL:
+        	                case IDENTIFIER:
+        	                case IF_TOK:
+        	                case INTEGER_LITERAL:
+        	                case IS_INTEGER_TOK:
+        	                case LAMBDA:
+        	                case LBRACE:
+        	                case LET_TOK:
+        	                case LPAREN:
+        	                case MINUS_TOK:
+        	                case NOT_TOK:
+        	                case PARENHASH:
+        	                case SETS_CARD_TOK:
+        	                case STRING_CONCAT_TOK:
+        	                case STRING_CONTAINS_TOK:
+        	                case STRING_INDEXOF_TOK:
+        	                case STRING_ITOS_TOK:
+        	                case STRING_LENGTH_TOK:
+        	                case STRING_LITERAL:
+        	                case STRING_PREFIXOF_TOK:
+        	                case STRING_REPLACE_TOK:
+        	                case STRING_STOI_TOK:
+        	                case STRING_STOU16_TOK:
+        	                case STRING_STOU32_TOK:
+        	                case STRING_SUBSTR_TOK:
+        	                case STRING_SUFFIXOF_TOK:
+        	                case STRING_U16TOS_TOK:
+        	                case STRING_U32TOS_TOK:
+        	                case SX_TOK:
+        	                case TRANSCLOSURE_TOK:
+        	                case TRANSPOSE_TOK:
+        	                case TRUE_TOK:
+        	                case TUPLE_TOK:
+        	                case UNIVSET_TOK:
+        	                	{
+        	                		alt7=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt7)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:728:18: formula[f]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2053);
+        	        	        formula(ctx, f);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulemainCommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             cmd->reset(f.isNull() ? new CheckSatCommand() : new CheckSatCommand(f)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:731:5: OPTION_TOK ( str[s] | IDENTIFIER ) ( symbolicExpr[sexpr] | TRUE_TOK | FALSE_TOK |)
+        	    {
+        	         MATCHT(OPTION_TOK, &FOLLOW_OPTION_TOK_in_mainCommand2073);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:732:5: ( str[s] | IDENTIFIER )
+        	        {
+        	            int alt8=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case STRING_LITERAL:
+        	            	{
+        	            		alt8=1;
+        	            	}
+        	                break;
+        	            case IDENTIFIER:
+        	            	{
+        	            		alt8=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                if (BACKTRACKING>0)
+        	                {
+        	                    FAILEDFLAG = ANTLR3_TRUE;
+        	                    return ;
+        	                }
+
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 8;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulemainCommandEx;
+
+        	            }
+
+        	            switch (alt8)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:732:7: str[s]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2081);
+        	        	        str(ctx, s);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulemainCommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:732:16: IDENTIFIER
+        	        	    {
+        	        	        IDENTIFIER3 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2086);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulemainCommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             s = AntlrInput::tokenText(IDENTIFIER3); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:733:5: ( symbolicExpr[sexpr] | TRUE_TOK | FALSE_TOK |)
+        	        {
+        	            int alt9=4;
+        	            switch ( LA(1) )
+        	            {
+        	            case BINARY_LITERAL:
+        	            case DECIMAL_LITERAL:
+        	            case HEX_LITERAL:
+        	            case IDENTIFIER:
+        	            case INTEGER_LITERAL:
+        	            case LPAREN:
+        	            case MINUS_TOK:
+        	            case STRING_LITERAL:
+        	            	{
+        	            		alt9=1;
+        	            	}
+        	                break;
+        	            case TRUE_TOK:
+        	            	{
+        	            		alt9=2;
+        	            	}
+        	                break;
+        	            case FALSE_TOK:
+        	            	{
+        	            		alt9=3;
+        	            	}
+        	                break;
+        	            case SEMICOLON:
+        	            	{
+        	            		alt9=4;
+        	            	}
+        	                break;
+
+        	            default:
+        	                if (BACKTRACKING>0)
+        	                {
+        	                    FAILEDFLAG = ANTLR3_TRUE;
+        	                    return ;
+        	                }
+
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 9;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulemainCommandEx;
+
+        	            }
+
+        	            switch (alt9)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:733:7: symbolicExpr[sexpr]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_symbolicExpr_in_mainCommand2098);
+        	        	        symbolicExpr(ctx, sexpr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulemainCommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             if(s == "logic") {
+        	        	                      cmd->reset(new SetBenchmarkLogicCommand(sexpr.getValue()));
+        	        	                    } else {
+        	        	                      cmd->reset(new SetOptionCommand(s, sexpr));
+        	        	                    }
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:740:7: TRUE_TOK
+        	        	    {
+        	        	         MATCHT(TRUE_TOK, &FOLLOW_TRUE_TOK_in_mainCommand2115);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulemainCommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             cmd->reset(new SetOptionCommand(s, SExpr("true"))); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 3:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:741:7: FALSE_TOK
+        	        	    {
+        	        	         MATCHT(FALSE_TOK, &FOLLOW_FALSE_TOK_in_mainCommand2125);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulemainCommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             cmd->reset(new SetOptionCommand(s, SExpr("false"))); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 4:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:742:7: 
+        	        	    {
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             cmd->reset(new SetOptionCommand(s, SExpr("true"))); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:746:5: PUSH_TOK (k= numeral |)
+        	    {
+        	         MATCHT(PUSH_TOK, &FOLLOW_PUSH_TOK_in_mainCommand2154);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:746:14: (k= numeral |)
+        	        {
+        	            int alt10=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case INTEGER_LITERAL:
+        	            	{
+        	            		alt10=1;
+        	            	}
+        	                break;
+        	            case SEMICOLON:
+        	            	{
+        	            		alt10=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                if (BACKTRACKING>0)
+        	                {
+        	                    FAILEDFLAG = ANTLR3_TRUE;
+        	                    return ;
+        	                }
+
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 10;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulemainCommandEx;
+
+        	            }
+
+        	            switch (alt10)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:746:16: k= numeral
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2160);
+        	        	        k=numeral(ctx);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulemainCommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             cmd->reset(REPEAT_COMMAND(k, PushCommand())); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:747:18: 
+        	        	    {
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             cmd->reset(new PushCommand()); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:748:5: POP_TOK (k= numeral |)
+        	    {
+        	         MATCHT(POP_TOK, &FOLLOW_POP_TOK_in_mainCommand2189);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:748:13: (k= numeral |)
+        	        {
+        	            int alt11=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case INTEGER_LITERAL:
+        	            	{
+        	            		alt11=1;
+        	            	}
+        	                break;
+        	            case SEMICOLON:
+        	            	{
+        	            		alt11=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                if (BACKTRACKING>0)
+        	                {
+        	                    FAILEDFLAG = ANTLR3_TRUE;
+        	                    return ;
+        	                }
+
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 11;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulemainCommandEx;
+
+        	            }
+
+        	            switch (alt11)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:748:15: k= numeral
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2195);
+        	        	        k=numeral(ctx);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulemainCommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             cmd->reset(REPEAT_COMMAND(k, PopCommand())); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:749:17: 
+        	        	    {
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             cmd->reset(new PopCommand()); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:750:5: POPTO_TOK (k= numeral )?
+        	    {
+        	         MATCHT(POPTO_TOK, &FOLLOW_POPTO_TOK_in_mainCommand2223);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:750:16: (k= numeral )?
+        	        {
+        	            int alt12=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case INTEGER_LITERAL:
+        	                	{
+        	                		alt12=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt12)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:750:16: k= numeral
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2227);
+        	        	        k=numeral(ctx);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulemainCommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             UNSUPPORTED("POPTO command"); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 8:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:754:5: PUSH_SCOPE_TOK (k= numeral )?
+        	    {
+        	         MATCHT(PUSH_SCOPE_TOK, &FOLLOW_PUSH_SCOPE_TOK_in_mainCommand2247);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:754:21: (k= numeral )?
+        	        {
+        	            int alt13=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case INTEGER_LITERAL:
+        	                	{
+        	                		alt13=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt13)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:754:21: k= numeral
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2251);
+        	        	        k=numeral(ctx);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulemainCommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             UNSUPPORTED("PUSH_SCOPE command"); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 9:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:756:5: POP_SCOPE_TOK (k= numeral )?
+        	    {
+        	         MATCHT(POP_SCOPE_TOK, &FOLLOW_POP_SCOPE_TOK_in_mainCommand2264);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:756:20: (k= numeral )?
+        	        {
+        	            int alt14=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case INTEGER_LITERAL:
+        	                	{
+        	                		alt14=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt14)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:756:20: k= numeral
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2268);
+        	        	        k=numeral(ctx);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulemainCommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             UNSUPPORTED("POP_SCOPE command"); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 10:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:758:5: POPTO_SCOPE_TOK (k= numeral )?
+        	    {
+        	         MATCHT(POPTO_SCOPE_TOK, &FOLLOW_POPTO_SCOPE_TOK_in_mainCommand2281);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:758:22: (k= numeral )?
+        	        {
+        	            int alt15=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case INTEGER_LITERAL:
+        	                	{
+        	                		alt15=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt15)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:758:22: k= numeral
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2285);
+        	        	        k=numeral(ctx);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulemainCommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             UNSUPPORTED("POPTO_SCOPE command"); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 11:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:761:5: RESET_TOK
+        	    {
+        	         MATCHT(RESET_TOK, &FOLLOW_RESET_TOK_in_mainCommand2299);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             cmd->reset(new ResetCommand());
+        	                  PARSER_STATE->reset();
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 12:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:766:5: RESET_TOK ASSERTIONS_TOK
+        	    {
+        	         MATCHT(RESET_TOK, &FOLLOW_RESET_TOK_in_mainCommand2312);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(ASSERTIONS_TOK, &FOLLOW_ASSERTIONS_TOK_in_mainCommand2314);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             cmd->reset(new ResetAssertionsCommand());
+        	                  PARSER_STATE->reset();
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 13:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:774:5: DATATYPE_TOK datatypeDef[dts] ( COMMA datatypeDef[dts] )* END_TOK
+        	    {
+        	         MATCHT(DATATYPE_TOK, &FOLLOW_DATATYPE_TOK_in_mainCommand2342);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             /* open a scope to keep the UnresolvedTypes contained */
+        	                  PARSER_STATE->pushScope(); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_datatypeDef_in_mainCommand2354);
+        	        datatypeDef(ctx, dts);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:778:5: ( COMMA datatypeDef[dts] )*
+
+        	        for (;;)
+        	        {
+        	            int alt16=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case COMMA:
+        	            	{
+        	            		alt16=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt16)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:778:7: COMMA datatypeDef[dts]
+        	        	    {
+        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_mainCommand2363);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulemainCommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_datatypeDef_in_mainCommand2365);
+        	        	        datatypeDef(ctx, dts);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulemainCommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop16;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop16: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(END_TOK, &FOLLOW_END_TOK_in_mainCommand2375);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             PARSER_STATE->popScope();
+        	                  cmd->reset(new DatatypeDeclarationCommand(
+        	                      PARSER_STATE->mkMutualDatatypeTypes(dts)));
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 14:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:785:5: CONTEXT_TOK ( ( str[s] | IDENTIFIER ) |)
+        	    {
+        	         MATCHT(CONTEXT_TOK, &FOLLOW_CONTEXT_TOK_in_mainCommand2388);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:786:5: ( ( str[s] | IDENTIFIER ) |)
+        	        {
+        	            int alt18=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case IDENTIFIER:
+        	            case STRING_LITERAL:
+        	            	{
+        	            		alt18=1;
+        	            	}
+        	                break;
+        	            case SEMICOLON:
+        	            	{
+        	            		alt18=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                if (BACKTRACKING>0)
+        	                {
+        	                    FAILEDFLAG = ANTLR3_TRUE;
+        	                    return ;
+        	                }
+
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 18;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulemainCommandEx;
+
+        	            }
+
+        	            switch (alt18)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:786:7: ( str[s] | IDENTIFIER )
+        	        	    {
+        	        	        // ../../../../../../src/parser/cvc/Cvc.g:786:7: ( str[s] | IDENTIFIER )
+        	        	        {
+        	        	            int alt17=2;
+        	        	            switch ( LA(1) )
+        	        	            {
+        	        	            case STRING_LITERAL:
+        	        	            	{
+        	        	            		alt17=1;
+        	        	            	}
+        	        	                break;
+        	        	            case IDENTIFIER:
+        	        	            	{
+        	        	            		alt17=2;
+        	        	            	}
+        	        	                break;
+
+        	        	            default:
+        	        	                if (BACKTRACKING>0)
+        	        	                {
+        	        	                    FAILEDFLAG = ANTLR3_TRUE;
+        	        	                    return ;
+        	        	                }
+
+        	        	                CONSTRUCTEX();
+        	        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                EXCEPTION->message      = (void *)"";
+        	        	                EXCEPTION->decisionNum  = 17;
+        	        	                EXCEPTION->state        = 0;
+
+
+        	        	                goto rulemainCommandEx;
+
+        	        	            }
+
+        	        	            switch (alt17)
+        	        	            {
+        	        	        	case 1:
+        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:786:9: str[s]
+        	        	        	    {
+        	        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2398);
+        	        	        	        str(ctx, s);
+
+        	        	        	        FOLLOWPOP();
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto rulemainCommandEx;
+        	        	        	        }
+        	        	        	        if (HASFAILED())
+        	        	        	        {
+        	        	        	            return ;
+        	        	        	        }
+
+
+        	        	        	    }
+        	        	        	    break;
+        	        	        	case 2:
+        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:786:18: IDENTIFIER
+        	        	        	    {
+        	        	        	        IDENTIFIER4 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2403);
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto rulemainCommandEx;
+        	        	        	        }
+        	        	        	        if (HASFAILED())
+        	        	        	        {
+        	        	        	            return ;
+        	        	        	        }
+
+
+        	        	        	        if ( BACKTRACKING==0 )
+        	        	        	        {
+        	        	        	             s = AntlrInput::tokenText(IDENTIFIER4); 
+        	        	        	        }
+
+
+        	        	        	    }
+        	        	        	    break;
+
+        	        	            }
+        	        	        }
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             UNSUPPORTED("CONTEXT command"); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:788:7: 
+        	        	    {
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             UNSUPPORTED("CONTEXT command"); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	    }
+        	    break;
+        	case 15:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:791:5: FORGET_TOK identifier[id,CHECK_NONE,SYM_VARIABLE]
+        	    {
+        	         MATCHT(FORGET_TOK, &FOLLOW_FORGET_TOK_in_mainCommand2436);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_identifier_in_mainCommand2438);
+        	        identifier(ctx, id, CHECK_NONE, SYM_VARIABLE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             UNSUPPORTED("FORGET command"); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 16:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:794:5: GET_TYPE_TOK formula[f]
+        	    {
+        	         MATCHT(GET_TYPE_TOK, &FOLLOW_GET_TYPE_TOK_in_mainCommand2452);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2454);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             UNSUPPORTED("GET_TYPE command"); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 17:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:797:5: CHECK_TYPE_TOK formula[f] COLON type[t,CHECK_DECLARED]
+        	    {
+        	         MATCHT(CHECK_TYPE_TOK, &FOLLOW_CHECK_TYPE_TOK_in_mainCommand2468);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2470);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COLON, &FOLLOW_COLON_in_mainCommand2473);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_type_in_mainCommand2475);
+        	        type(ctx, t, CHECK_DECLARED);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             UNSUPPORTED("CHECK_TYPE command"); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 18:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:800:5: GET_CHILD_TOK formula[f] k= numeral
+        	    {
+        	         MATCHT(GET_CHILD_TOK, &FOLLOW_GET_CHILD_TOK_in_mainCommand2489);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2491);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2496);
+        	        k=numeral(ctx);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             UNSUPPORTED("GET_CHILD command"); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 19:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:803:5: GET_OP_TOK formula[f]
+        	    {
+        	         MATCHT(GET_OP_TOK, &FOLLOW_GET_OP_TOK_in_mainCommand2509);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2511);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             UNSUPPORTED("GET_OP command"); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 20:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:806:5: GET_VALUE_TOK formula[f]
+        	    {
+        	         MATCHT(GET_VALUE_TOK, &FOLLOW_GET_VALUE_TOK_in_mainCommand2525);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2527);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             cmd->reset(new GetValueCommand(f)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 21:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:809:5: SUBSTITUTE_TOK identifier[id,CHECK_NONE,SYM_VARIABLE] COLON type[t,CHECK_DECLARED] EQUAL_TOK formula[f] LBRACKET identifier[id,CHECK_NONE,SYM_VARIABLE] ASSIGN_TOK formula[f] RBRACKET
+        	    {
+        	         MATCHT(SUBSTITUTE_TOK, &FOLLOW_SUBSTITUTE_TOK_in_mainCommand2541);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_identifier_in_mainCommand2543);
+        	        identifier(ctx, id, CHECK_NONE, SYM_VARIABLE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COLON, &FOLLOW_COLON_in_mainCommand2546);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_type_in_mainCommand2552);
+        	        type(ctx, t, CHECK_DECLARED);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_mainCommand2555);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2557);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_mainCommand2560);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_identifier_in_mainCommand2566);
+        	        identifier(ctx, id, CHECK_NONE, SYM_VARIABLE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(ASSIGN_TOK, &FOLLOW_ASSIGN_TOK_in_mainCommand2569);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2571);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_mainCommand2574);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             UNSUPPORTED("SUBSTITUTE command"); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 22:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:816:5: DBG_TOK ( ( str[s] | IDENTIFIER ) |)
+        	    {
+        	         MATCHT(DBG_TOK, &FOLLOW_DBG_TOK_in_mainCommand2593);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:817:5: ( ( str[s] | IDENTIFIER ) |)
+        	        {
+        	            int alt20=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case IDENTIFIER:
+        	            case STRING_LITERAL:
+        	            	{
+        	            		alt20=1;
+        	            	}
+        	                break;
+        	            case SEMICOLON:
+        	            	{
+        	            		alt20=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                if (BACKTRACKING>0)
+        	                {
+        	                    FAILEDFLAG = ANTLR3_TRUE;
+        	                    return ;
+        	                }
+
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 20;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulemainCommandEx;
+
+        	            }
+
+        	            switch (alt20)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:817:7: ( str[s] | IDENTIFIER )
+        	        	    {
+        	        	        // ../../../../../../src/parser/cvc/Cvc.g:817:7: ( str[s] | IDENTIFIER )
+        	        	        {
+        	        	            int alt19=2;
+        	        	            switch ( LA(1) )
+        	        	            {
+        	        	            case STRING_LITERAL:
+        	        	            	{
+        	        	            		alt19=1;
+        	        	            	}
+        	        	                break;
+        	        	            case IDENTIFIER:
+        	        	            	{
+        	        	            		alt19=2;
+        	        	            	}
+        	        	                break;
+
+        	        	            default:
+        	        	                if (BACKTRACKING>0)
+        	        	                {
+        	        	                    FAILEDFLAG = ANTLR3_TRUE;
+        	        	                    return ;
+        	        	                }
+
+        	        	                CONSTRUCTEX();
+        	        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                EXCEPTION->message      = (void *)"";
+        	        	                EXCEPTION->decisionNum  = 19;
+        	        	                EXCEPTION->state        = 0;
+
+
+        	        	                goto rulemainCommandEx;
+
+        	        	            }
+
+        	        	            switch (alt19)
+        	        	            {
+        	        	        	case 1:
+        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:817:9: str[s]
+        	        	        	    {
+        	        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2603);
+        	        	        	        str(ctx, s);
+
+        	        	        	        FOLLOWPOP();
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto rulemainCommandEx;
+        	        	        	        }
+        	        	        	        if (HASFAILED())
+        	        	        	        {
+        	        	        	            return ;
+        	        	        	        }
+
+
+        	        	        	    }
+        	        	        	    break;
+        	        	        	case 2:
+        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:817:18: IDENTIFIER
+        	        	        	    {
+        	        	        	        IDENTIFIER5 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2608);
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto rulemainCommandEx;
+        	        	        	        }
+        	        	        	        if (HASFAILED())
+        	        	        	        {
+        	        	        	            return ;
+        	        	        	        }
+
+
+        	        	        	        if ( BACKTRACKING==0 )
+        	        	        	        {
+        	        	        	             s = AntlrInput::tokenText(IDENTIFIER5); 
+        	        	        	        }
+
+
+        	        	        	    }
+        	        	        	    break;
+
+        	        	            }
+        	        	        }
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             Debug.on(s); Trace.on(s); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:819:7: 
+        	        	    {
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             Message() << "Please specify what to debug." << std::endl; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	    }
+        	    break;
+        	case 23:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:822:5: TRACE_TOK ( ( str[s] | IDENTIFIER ) |)
+        	    {
+        	         MATCHT(TRACE_TOK, &FOLLOW_TRACE_TOK_in_mainCommand2641);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:823:5: ( ( str[s] | IDENTIFIER ) |)
+        	        {
+        	            int alt22=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case IDENTIFIER:
+        	            case STRING_LITERAL:
+        	            	{
+        	            		alt22=1;
+        	            	}
+        	                break;
+        	            case SEMICOLON:
+        	            	{
+        	            		alt22=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                if (BACKTRACKING>0)
+        	                {
+        	                    FAILEDFLAG = ANTLR3_TRUE;
+        	                    return ;
+        	                }
+
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 22;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulemainCommandEx;
+
+        	            }
+
+        	            switch (alt22)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:823:7: ( str[s] | IDENTIFIER )
+        	        	    {
+        	        	        // ../../../../../../src/parser/cvc/Cvc.g:823:7: ( str[s] | IDENTIFIER )
+        	        	        {
+        	        	            int alt21=2;
+        	        	            switch ( LA(1) )
+        	        	            {
+        	        	            case STRING_LITERAL:
+        	        	            	{
+        	        	            		alt21=1;
+        	        	            	}
+        	        	                break;
+        	        	            case IDENTIFIER:
+        	        	            	{
+        	        	            		alt21=2;
+        	        	            	}
+        	        	                break;
+
+        	        	            default:
+        	        	                if (BACKTRACKING>0)
+        	        	                {
+        	        	                    FAILEDFLAG = ANTLR3_TRUE;
+        	        	                    return ;
+        	        	                }
+
+        	        	                CONSTRUCTEX();
+        	        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                EXCEPTION->message      = (void *)"";
+        	        	                EXCEPTION->decisionNum  = 21;
+        	        	                EXCEPTION->state        = 0;
+
+
+        	        	                goto rulemainCommandEx;
+
+        	        	            }
+
+        	        	            switch (alt21)
+        	        	            {
+        	        	        	case 1:
+        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:823:9: str[s]
+        	        	        	    {
+        	        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2651);
+        	        	        	        str(ctx, s);
+
+        	        	        	        FOLLOWPOP();
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto rulemainCommandEx;
+        	        	        	        }
+        	        	        	        if (HASFAILED())
+        	        	        	        {
+        	        	        	            return ;
+        	        	        	        }
+
+
+        	        	        	    }
+        	        	        	    break;
+        	        	        	case 2:
+        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:823:18: IDENTIFIER
+        	        	        	    {
+        	        	        	        IDENTIFIER6 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2656);
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto rulemainCommandEx;
+        	        	        	        }
+        	        	        	        if (HASFAILED())
+        	        	        	        {
+        	        	        	            return ;
+        	        	        	        }
+
+
+        	        	        	        if ( BACKTRACKING==0 )
+        	        	        	        {
+        	        	        	             s = AntlrInput::tokenText(IDENTIFIER6); 
+        	        	        	        }
+
+
+        	        	        	    }
+        	        	        	    break;
+
+        	        	            }
+        	        	        }
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             Trace.on(s); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:825:7: 
+        	        	    {
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             Message() << "Please specify something to trace." << std::endl; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	    }
+        	    break;
+        	case 24:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:827:5: UNTRACE_TOK ( ( str[s] | IDENTIFIER ) |)
+        	    {
+        	         MATCHT(UNTRACE_TOK, &FOLLOW_UNTRACE_TOK_in_mainCommand2688);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:828:5: ( ( str[s] | IDENTIFIER ) |)
+        	        {
+        	            int alt24=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case IDENTIFIER:
+        	            case STRING_LITERAL:
+        	            	{
+        	            		alt24=1;
+        	            	}
+        	                break;
+        	            case SEMICOLON:
+        	            	{
+        	            		alt24=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                if (BACKTRACKING>0)
+        	                {
+        	                    FAILEDFLAG = ANTLR3_TRUE;
+        	                    return ;
+        	                }
+
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 24;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulemainCommandEx;
+
+        	            }
+
+        	            switch (alt24)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:828:7: ( str[s] | IDENTIFIER )
+        	        	    {
+        	        	        // ../../../../../../src/parser/cvc/Cvc.g:828:7: ( str[s] | IDENTIFIER )
+        	        	        {
+        	        	            int alt23=2;
+        	        	            switch ( LA(1) )
+        	        	            {
+        	        	            case STRING_LITERAL:
+        	        	            	{
+        	        	            		alt23=1;
+        	        	            	}
+        	        	                break;
+        	        	            case IDENTIFIER:
+        	        	            	{
+        	        	            		alt23=2;
+        	        	            	}
+        	        	                break;
+
+        	        	            default:
+        	        	                if (BACKTRACKING>0)
+        	        	                {
+        	        	                    FAILEDFLAG = ANTLR3_TRUE;
+        	        	                    return ;
+        	        	                }
+
+        	        	                CONSTRUCTEX();
+        	        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                EXCEPTION->message      = (void *)"";
+        	        	                EXCEPTION->decisionNum  = 23;
+        	        	                EXCEPTION->state        = 0;
+
+
+        	        	                goto rulemainCommandEx;
+
+        	        	            }
+
+        	        	            switch (alt23)
+        	        	            {
+        	        	        	case 1:
+        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:828:9: str[s]
+        	        	        	    {
+        	        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2698);
+        	        	        	        str(ctx, s);
+
+        	        	        	        FOLLOWPOP();
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto rulemainCommandEx;
+        	        	        	        }
+        	        	        	        if (HASFAILED())
+        	        	        	        {
+        	        	        	            return ;
+        	        	        	        }
+
+
+        	        	        	    }
+        	        	        	    break;
+        	        	        	case 2:
+        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:828:18: IDENTIFIER
+        	        	        	    {
+        	        	        	        IDENTIFIER7 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2703);
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto rulemainCommandEx;
+        	        	        	        }
+        	        	        	        if (HASFAILED())
+        	        	        	        {
+        	        	        	            return ;
+        	        	        	        }
+
+
+        	        	        	        if ( BACKTRACKING==0 )
+        	        	        	        {
+        	        	        	             s = AntlrInput::tokenText(IDENTIFIER7); 
+        	        	        	        }
+
+
+        	        	        	    }
+        	        	        	    break;
+
+        	        	            }
+        	        	        }
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             Trace.off(s); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:830:7: 
+        	        	    {
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             Message() << "Please specify something to untrace." << std::endl; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	    }
+        	    break;
+        	case 25:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:833:5: HELP_TOK ( ( str[s] | IDENTIFIER ) |)
+        	    {
+        	         MATCHT(HELP_TOK, &FOLLOW_HELP_TOK_in_mainCommand2736);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:834:5: ( ( str[s] | IDENTIFIER ) |)
+        	        {
+        	            int alt26=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case IDENTIFIER:
+        	            case STRING_LITERAL:
+        	            	{
+        	            		alt26=1;
+        	            	}
+        	                break;
+        	            case SEMICOLON:
+        	            	{
+        	            		alt26=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                if (BACKTRACKING>0)
+        	                {
+        	                    FAILEDFLAG = ANTLR3_TRUE;
+        	                    return ;
+        	                }
+
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 26;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulemainCommandEx;
+
+        	            }
+
+        	            switch (alt26)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:834:7: ( str[s] | IDENTIFIER )
+        	        	    {
+        	        	        // ../../../../../../src/parser/cvc/Cvc.g:834:7: ( str[s] | IDENTIFIER )
+        	        	        {
+        	        	            int alt25=2;
+        	        	            switch ( LA(1) )
+        	        	            {
+        	        	            case STRING_LITERAL:
+        	        	            	{
+        	        	            		alt25=1;
+        	        	            	}
+        	        	                break;
+        	        	            case IDENTIFIER:
+        	        	            	{
+        	        	            		alt25=2;
+        	        	            	}
+        	        	                break;
+
+        	        	            default:
+        	        	                if (BACKTRACKING>0)
+        	        	                {
+        	        	                    FAILEDFLAG = ANTLR3_TRUE;
+        	        	                    return ;
+        	        	                }
+
+        	        	                CONSTRUCTEX();
+        	        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                EXCEPTION->message      = (void *)"";
+        	        	                EXCEPTION->decisionNum  = 25;
+        	        	                EXCEPTION->state        = 0;
+
+
+        	        	                goto rulemainCommandEx;
+
+        	        	            }
+
+        	        	            switch (alt25)
+        	        	            {
+        	        	        	case 1:
+        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:834:9: str[s]
+        	        	        	    {
+        	        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2746);
+        	        	        	        str(ctx, s);
+
+        	        	        	        FOLLOWPOP();
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto rulemainCommandEx;
+        	        	        	        }
+        	        	        	        if (HASFAILED())
+        	        	        	        {
+        	        	        	            return ;
+        	        	        	        }
+
+
+        	        	        	    }
+        	        	        	    break;
+        	        	        	case 2:
+        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:834:18: IDENTIFIER
+        	        	        	    {
+        	        	        	        IDENTIFIER8 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2751);
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto rulemainCommandEx;
+        	        	        	        }
+        	        	        	        if (HASFAILED())
+        	        	        	        {
+        	        	        	            return ;
+        	        	        	        }
+
+
+        	        	        	        if ( BACKTRACKING==0 )
+        	        	        	        {
+        	        	        	             s = AntlrInput::tokenText(IDENTIFIER8); 
+        	        	        	        }
+
+
+        	        	        	    }
+        	        	        	    break;
+
+        	        	            }
+        	        	        }
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             Message() << "No help available for `" << s << "'." << std::endl; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:836:7: 
+        	        	    {
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             Message() << "Please use --help at the command line for help."
+        	        	                            << std::endl; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	    }
+        	    break;
+        	case 26:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:840:5: TRANSFORM_TOK formula[f]
+        	    {
+        	         MATCHT(TRANSFORM_TOK, &FOLLOW_TRANSFORM_TOK_in_mainCommand2792);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2794);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             cmd->reset(new SimplifyCommand(f)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 27:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:843:5: PRINT_TOK formula[f]
+        	    {
+        	         MATCHT(PRINT_TOK, &FOLLOW_PRINT_TOK_in_mainCommand2808);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2810);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             UNSUPPORTED("PRINT command"); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 28:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:845:5: PRINT_TYPE_TOK type[t,CHECK_DECLARED]
+        	    {
+        	         MATCHT(PRINT_TYPE_TOK, &FOLLOW_PRINT_TYPE_TOK_in_mainCommand2823);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_type_in_mainCommand2825);
+        	        type(ctx, t, CHECK_DECLARED);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             UNSUPPORTED("PRINT_TYPE command"); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 29:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:848:5: CALL_TOK identifier[id,CHECK_NONE,SYM_VARIABLE] formula[f]
+        	    {
+        	         MATCHT(CALL_TOK, &FOLLOW_CALL_TOK_in_mainCommand2839);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_identifier_in_mainCommand2841);
+        	        identifier(ctx, id, CHECK_NONE, SYM_VARIABLE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2844);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             UNSUPPORTED("CALL command"); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 30:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:851:5: ECHO_TOK ( simpleSymbolicExpr[sexpr] |)
+        	    {
+        	         MATCHT(ECHO_TOK, &FOLLOW_ECHO_TOK_in_mainCommand2858);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:852:5: ( simpleSymbolicExpr[sexpr] |)
+        	        {
+        	            int alt27=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case BINARY_LITERAL:
+        	            case DECIMAL_LITERAL:
+        	            case HEX_LITERAL:
+        	            case IDENTIFIER:
+        	            case INTEGER_LITERAL:
+        	            case MINUS_TOK:
+        	            case STRING_LITERAL:
+        	            	{
+        	            		alt27=1;
+        	            	}
+        	                break;
+        	            case SEMICOLON:
+        	            	{
+        	            		alt27=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                if (BACKTRACKING>0)
+        	                {
+        	                    FAILEDFLAG = ANTLR3_TRUE;
+        	                    return ;
+        	                }
+
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 27;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulemainCommandEx;
+
+        	            }
+
+        	            switch (alt27)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:852:7: simpleSymbolicExpr[sexpr]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExpr_in_mainCommand2866);
+        	        	        simpleSymbolicExpr(ctx, sexpr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulemainCommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             cmd->reset(new EchoCommand(sexpr.getValue())); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:854:7: 
+        	        	    {
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             cmd->reset(new EchoCommand()); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	    }
+        	    break;
+        	case 31:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:857:5: EXIT_TOK
+        	    {
+        	         MATCHT(EXIT_TOK, &FOLLOW_EXIT_TOK_in_mainCommand2896);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             cmd->reset(new QuitCommand()); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 32:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:860:5: INCLUDE_TOK ( ( str[s] | IDENTIFIER ) |)
+        	    {
+        	         MATCHT(INCLUDE_TOK, &FOLLOW_INCLUDE_TOK_in_mainCommand2909);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:861:5: ( ( str[s] | IDENTIFIER ) |)
+        	        {
+        	            int alt29=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case IDENTIFIER:
+        	            case STRING_LITERAL:
+        	            	{
+        	            		alt29=1;
+        	            	}
+        	                break;
+        	            case SEMICOLON:
+        	            	{
+        	            		alt29=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                if (BACKTRACKING>0)
+        	                {
+        	                    FAILEDFLAG = ANTLR3_TRUE;
+        	                    return ;
+        	                }
+
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 29;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulemainCommandEx;
+
+        	            }
+
+        	            switch (alt29)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:861:7: ( str[s] | IDENTIFIER )
+        	        	    {
+        	        	        // ../../../../../../src/parser/cvc/Cvc.g:861:7: ( str[s] | IDENTIFIER )
+        	        	        {
+        	        	            int alt28=2;
+        	        	            switch ( LA(1) )
+        	        	            {
+        	        	            case STRING_LITERAL:
+        	        	            	{
+        	        	            		alt28=1;
+        	        	            	}
+        	        	                break;
+        	        	            case IDENTIFIER:
+        	        	            	{
+        	        	            		alt28=2;
+        	        	            	}
+        	        	                break;
+
+        	        	            default:
+        	        	                if (BACKTRACKING>0)
+        	        	                {
+        	        	                    FAILEDFLAG = ANTLR3_TRUE;
+        	        	                    return ;
+        	        	                }
+
+        	        	                CONSTRUCTEX();
+        	        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                EXCEPTION->message      = (void *)"";
+        	        	                EXCEPTION->decisionNum  = 28;
+        	        	                EXCEPTION->state        = 0;
+
+
+        	        	                goto rulemainCommandEx;
+
+        	        	            }
+
+        	        	            switch (alt28)
+        	        	            {
+        	        	        	case 1:
+        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:861:9: str[s]
+        	        	        	    {
+        	        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2919);
+        	        	        	        str(ctx, s);
+
+        	        	        	        FOLLOWPOP();
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto rulemainCommandEx;
+        	        	        	        }
+        	        	        	        if (HASFAILED())
+        	        	        	        {
+        	        	        	            return ;
+        	        	        	        }
+
+
+        	        	        	    }
+        	        	        	    break;
+        	        	        	case 2:
+        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:861:18: IDENTIFIER
+        	        	        	    {
+        	        	        	        IDENTIFIER9 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2924);
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto rulemainCommandEx;
+        	        	        	        }
+        	        	        	        if (HASFAILED())
+        	        	        	        {
+        	        	        	            return ;
+        	        	        	        }
+
+
+        	        	        	        if ( BACKTRACKING==0 )
+        	        	        	        {
+        	        	        	             s = AntlrInput::tokenText(IDENTIFIER9); 
+        	        	        	        }
+
+
+        	        	        	    }
+        	        	        	    break;
+
+        	        	            }
+        	        	        }
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             UNSUPPORTED("INCLUDE command"); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:863:7: 
+        	        	    {
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             PARSER_STATE->parseError("No filename given to INCLUDE command"); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	    }
+        	    break;
+        	case 33:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:866:5: DUMP_PROOF_TOK
+        	    {
+        	         MATCHT(DUMP_PROOF_TOK, &FOLLOW_DUMP_PROOF_TOK_in_mainCommand2957);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             cmd->reset(new GetProofCommand()); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 34:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:869:5: DUMP_UNSAT_CORE_TOK
+        	    {
+        	         MATCHT(DUMP_UNSAT_CORE_TOK, &FOLLOW_DUMP_UNSAT_CORE_TOK_in_mainCommand2970);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             cmd->reset(new GetUnsatCoreCommand()); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 35:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:872:5: ( DUMP_ASSUMPTIONS_TOK | DUMP_SIG_TOK | DUMP_TCC_TOK | DUMP_TCC_ASSUMPTIONS_TOK | DUMP_TCC_PROOF_TOK | DUMP_CLOSURE_TOK | DUMP_CLOSURE_PROOF_TOK )
+        	    {
+        	        if ( ((LA(1) >= DUMP_ASSUMPTIONS_TOK) && (LA(1) <= DUMP_CLOSURE_TOK)) || ((LA(1) >= DUMP_SIG_TOK) && (LA(1) <= DUMP_TCC_TOK)) )
+        	        {
+        	            CONSUME();
+        	            PERRORRECOVERY=ANTLR3_FALSE;
+        	            FAILEDFLAG=ANTLR3_FALSE;
+
+        	        }
+        	        else
+        	        {
+        	            if (BACKTRACKING>0)
+        	            {
+        	                FAILEDFLAG = ANTLR3_TRUE;
+        	                return ;
+        	            }
+
+        	            CONSTRUCTEX();
+        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+        	            EXCEPTION->expectingSet = NULL;
+
+        	            goto rulemainCommandEx;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             UNSUPPORTED("DUMP* command"); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 36:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:882:5: ( WHERE_TOK | ASSERTIONS_TOK | ASSUMPTIONS_TOK )
+        	    {
+        	        if ( LA(1) == ASSERTIONS_TOK || LA(1) == ASSUMPTIONS_TOK || LA(1) == WHERE_TOK )
+        	        {
+        	            CONSUME();
+        	            PERRORRECOVERY=ANTLR3_FALSE;
+        	            FAILEDFLAG=ANTLR3_FALSE;
+
+        	        }
+        	        else
+        	        {
+        	            if (BACKTRACKING>0)
+        	            {
+        	                FAILEDFLAG = ANTLR3_TRUE;
+        	                return ;
+        	            }
+
+        	            CONSTRUCTEX();
+        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+        	            EXCEPTION->expectingSet = NULL;
+
+        	            goto rulemainCommandEx;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             cmd->reset(new GetAssertionsCommand()); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 37:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:885:5: COUNTEREXAMPLE_TOK
+        	    {
+        	         MATCHT(COUNTEREXAMPLE_TOK, &FOLLOW_COUNTEREXAMPLE_TOK_in_mainCommand3079);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             cmd->reset(new GetModelCommand); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 38:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:887:5: COUNTERMODEL_TOK
+        	    {
+        	         MATCHT(COUNTERMODEL_TOK, &FOLLOW_COUNTERMODEL_TOK_in_mainCommand3091);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             cmd->reset(new GetModelCommand); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 39:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:890:5: ARITH_VAR_ORDER_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN
+        	    {
+        	         MATCHT(ARITH_VAR_ORDER_TOK, &FOLLOW_ARITH_VAR_ORDER_TOK_in_mainCommand3104);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_mainCommand3106);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand3108);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:890:43: ( COMMA formula[f] )*
+
+        	        for (;;)
+        	        {
+        	            int alt30=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case COMMA:
+        	            	{
+        	            		alt30=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt30)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:890:45: COMMA formula[f]
+        	        	    {
+        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_mainCommand3113);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulemainCommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand3115);
+        	        	        formula(ctx, f);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulemainCommandEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop30;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop30: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_mainCommand3121);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             UNSUPPORTED("ARITH_VAR_ORDER command"); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 40:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:893:5: CONTINUE_TOK
+        	    {
+        	         MATCHT(CONTINUE_TOK, &FOLLOW_CONTINUE_TOK_in_mainCommand3134);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             UNSUPPORTED("CONTINUE command"); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 41:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:895:5: RESTART_TOK formula[f]
+        	    {
+        	         MATCHT(RESTART_TOK, &FOLLOW_RESTART_TOK_in_mainCommand3146);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand3148);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             UNSUPPORTED("RESTART command"); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 42:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:896:5: toplevelDeclaration[cmd]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_toplevelDeclaration_in_mainCommand3157);
+        	        toplevelDeclaration(ctx, cmd);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulemainCommandEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulemainCommandEx; /* Prevent compiler warnings */
+    rulemainCommandEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end mainCommand */
+
+/**
+ * $ANTLR start simpleSymbolicExpr
+ * ../../../../../../src/parser/cvc/Cvc.g:899:1: simpleSymbolicExpr[CVC4::SExpr& sexpr] : ( INTEGER_LITERAL | MINUS_TOK INTEGER_LITERAL | DECIMAL_LITERAL | HEX_LITERAL | BINARY_LITERAL | str[s] | IDENTIFIER );
+ */
+static void
+simpleSymbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
+{
+
+      std::string s;
+      CVC4::Rational r;
+
+    pANTLR3_COMMON_TOKEN    INTEGER_LITERAL10;
+    pANTLR3_COMMON_TOKEN    INTEGER_LITERAL11;
+    pANTLR3_COMMON_TOKEN    DECIMAL_LITERAL12;
+    pANTLR3_COMMON_TOKEN    HEX_LITERAL13;
+    pANTLR3_COMMON_TOKEN    BINARY_LITERAL14;
+    pANTLR3_COMMON_TOKEN    IDENTIFIER15;
+
+    /* Initialize rule variables
+     */
+
+    INTEGER_LITERAL10       = NULL;
+    INTEGER_LITERAL11       = NULL;
+    DECIMAL_LITERAL12       = NULL;
+    HEX_LITERAL13       = NULL;
+    BINARY_LITERAL14       = NULL;
+    IDENTIFIER15       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/cvc/Cvc.g:904:3: ( INTEGER_LITERAL | MINUS_TOK INTEGER_LITERAL | DECIMAL_LITERAL | HEX_LITERAL | BINARY_LITERAL | str[s] | IDENTIFIER )
+
+            ANTLR3_UINT32 alt32;
+
+            alt32=7;
+
+            switch ( LA(1) )
+            {
+            case INTEGER_LITERAL:
+            	{
+            		alt32=1;
+            	}
+                break;
+            case MINUS_TOK:
+            	{
+            		alt32=2;
+            	}
+                break;
+            case DECIMAL_LITERAL:
+            	{
+            		alt32=3;
+            	}
+                break;
+            case HEX_LITERAL:
+            	{
+            		alt32=4;
+            	}
+                break;
+            case BINARY_LITERAL:
+            	{
+            		alt32=5;
+            	}
+                break;
+            case STRING_LITERAL:
+            	{
+            		alt32=6;
+            	}
+                break;
+            case IDENTIFIER:
+            	{
+            		alt32=7;
+            	}
+                break;
+
+            default:
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 32;
+                EXCEPTION->state        = 0;
+
+
+                goto rulesimpleSymbolicExprEx;
+
+            }
+
+            switch (alt32)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:904:5: INTEGER_LITERAL
+        	    {
+        	        INTEGER_LITERAL10 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3177);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleSymbolicExprEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             sexpr = SExpr(Integer(AntlrInput::tokenText(INTEGER_LITERAL10))); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:906:5: MINUS_TOK INTEGER_LITERAL
+        	    {
+        	         MATCHT(MINUS_TOK, &FOLLOW_MINUS_TOK_in_simpleSymbolicExpr3189);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleSymbolicExprEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        INTEGER_LITERAL11 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3191);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleSymbolicExprEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             sexpr = SExpr(-Integer(AntlrInput::tokenText(INTEGER_LITERAL11))); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:908:5: DECIMAL_LITERAL
+        	    {
+        	        DECIMAL_LITERAL12 = (pANTLR3_COMMON_TOKEN) MATCHT(DECIMAL_LITERAL, &FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExpr3203);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleSymbolicExprEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             sexpr = SExpr(AntlrInput::tokenToRational(DECIMAL_LITERAL12)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:910:5: HEX_LITERAL
+        	    {
+        	        HEX_LITERAL13 = (pANTLR3_COMMON_TOKEN) MATCHT(HEX_LITERAL, &FOLLOW_HEX_LITERAL_in_simpleSymbolicExpr3215);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleSymbolicExprEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             sexpr = SExpr(AntlrInput::tokenText(HEX_LITERAL13)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:912:5: BINARY_LITERAL
+        	    {
+        	        BINARY_LITERAL14 = (pANTLR3_COMMON_TOKEN) MATCHT(BINARY_LITERAL, &FOLLOW_BINARY_LITERAL_in_simpleSymbolicExpr3227);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleSymbolicExprEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             sexpr = SExpr(AntlrInput::tokenText(BINARY_LITERAL14)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:914:5: str[s]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_str_in_simpleSymbolicExpr3239);
+        	        str(ctx, s);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleSymbolicExprEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             sexpr = SExpr(s); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:916:5: IDENTIFIER
+        	    {
+        	        IDENTIFIER15 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_simpleSymbolicExpr3252);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleSymbolicExprEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             sexpr = SExpr(AntlrInput::tokenText(IDENTIFIER15)); 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesimpleSymbolicExprEx; /* Prevent compiler warnings */
+    rulesimpleSymbolicExprEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end simpleSymbolicExpr */
+
+/**
+ * $ANTLR start symbolicExpr
+ * ../../../../../../src/parser/cvc/Cvc.g:920:1: symbolicExpr[CVC4::SExpr& sexpr] : ( simpleSymbolicExpr[sexpr] | LPAREN ( symbolicExpr[sexpr] )* RPAREN );
+ */
+static void
+symbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
+{
+
+      std::vector<SExpr> children;
+
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/cvc/Cvc.g:924:3: ( simpleSymbolicExpr[sexpr] | LPAREN ( symbolicExpr[sexpr] )* RPAREN )
+
+            ANTLR3_UINT32 alt34;
+
+            alt34=2;
+
+            switch ( LA(1) )
+            {
+            case BINARY_LITERAL:
+            case DECIMAL_LITERAL:
+            case HEX_LITERAL:
+            case IDENTIFIER:
+            case INTEGER_LITERAL:
+            case MINUS_TOK:
+            case STRING_LITERAL:
+            	{
+            		alt34=1;
+            	}
+                break;
+            case LPAREN:
+            	{
+            		alt34=2;
+            	}
+                break;
+
+            default:
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 34;
+                EXCEPTION->state        = 0;
+
+
+                goto rulesymbolicExprEx;
+
+            }
+
+            switch (alt34)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:924:5: simpleSymbolicExpr[sexpr]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExpr_in_symbolicExpr3277);
+        	        simpleSymbolicExpr(ctx, sexpr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesymbolicExprEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:925:5: LPAREN ( symbolicExpr[sexpr] )* RPAREN
+        	    {
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_symbolicExpr3284);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesymbolicExprEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:925:12: ( symbolicExpr[sexpr] )*
+
+        	        for (;;)
+        	        {
+        	            int alt33=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case BINARY_LITERAL:
+        	            case DECIMAL_LITERAL:
+        	            case HEX_LITERAL:
+        	            case IDENTIFIER:
+        	            case INTEGER_LITERAL:
+        	            case LPAREN:
+        	            case MINUS_TOK:
+        	            case STRING_LITERAL:
+        	            	{
+        	            		alt33=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt33)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:925:13: symbolicExpr[sexpr]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_symbolicExpr_in_symbolicExpr3287);
+        	        	        symbolicExpr(ctx, sexpr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesymbolicExprEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             children.push_back(sexpr); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop33;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop33: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_symbolicExpr3295);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesymbolicExprEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             sexpr = SExpr(children); 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesymbolicExprEx; /* Prevent compiler warnings */
+    rulesymbolicExprEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end symbolicExpr */
+
+/**
+ * $ANTLR start toplevelDeclaration
+ * ../../../../../../src/parser/cvc/Cvc.g:932:1: toplevelDeclaration[CVC4::PtrCloser<CVC4::Command>* cmd] : identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON ( declareVariables[cmd,t,ids,true] | declareTypes[cmd,ids] ) ;
+ */
+static void
+toplevelDeclaration(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::vector<std::string> ids;
+      Type t;
+      Debug("parser-extra") << "declaration: " << AntlrInput::tokenText(LT(1))
+                            << std::endl;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:939:3: ( identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON ( declareVariables[cmd,t,ids,true] | declareTypes[cmd,ids] ) )
+        // ../../../../../../src/parser/cvc/Cvc.g:939:5: identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON ( declareVariables[cmd,t,ids,true] | declareTypes[cmd,ids] )
+        {
+            FOLLOWPUSH(FOLLOW_identifierList_in_toplevelDeclaration3322);
+            identifierList(ctx, ids, CHECK_NONE, SYM_VARIABLE);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruletoplevelDeclarationEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+             MATCHT(COLON, &FOLLOW_COLON_in_toplevelDeclaration3325);
+            if  (HASEXCEPTION())
+            {
+                goto ruletoplevelDeclarationEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            // ../../../../../../src/parser/cvc/Cvc.g:940:5: ( declareVariables[cmd,t,ids,true] | declareTypes[cmd,ids] )
+            {
+                int alt35=2;
+                switch ( LA(1) )
+                {
+                case ARRAY_TOK:
+                case BITVECTOR_TOK:
+                case BOOLEAN_TOK:
+                case IDENTIFIER:
+                case INT_TOK:
+                case LBRACKET:
+                case LET_TOK:
+                case LPAREN:
+                case REAL_TOK:
+                case SET_TOK:
+                case SQHASH:
+                case STRING_TOK:
+                case SUBTYPE_TOK:
+                	{
+                		alt35=1;
+                	}
+                    break;
+                case TYPE_TOK:
+                	{
+                		alt35=2;
+                	}
+                    break;
+
+                default:
+                    if (BACKTRACKING>0)
+                    {
+                        FAILEDFLAG = ANTLR3_TRUE;
+                        return ;
+                    }
+
+                    CONSTRUCTEX();
+                    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                    EXCEPTION->message      = (void *)"";
+                    EXCEPTION->decisionNum  = 35;
+                    EXCEPTION->state        = 0;
+
+
+                    goto ruletoplevelDeclarationEx;
+
+                }
+
+                switch (alt35)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:940:7: declareVariables[cmd,t,ids,true]
+            	    {
+            	        FOLLOWPUSH(FOLLOW_declareVariables_in_toplevelDeclaration3333);
+            	        declareVariables(ctx, cmd, t, ids, true);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletoplevelDeclarationEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	    }
+            	    break;
+            	case 2:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:941:7: declareTypes[cmd,ids]
+            	    {
+            	        FOLLOWPUSH(FOLLOW_declareTypes_in_toplevelDeclaration3342);
+            	        declareTypes(ctx, cmd, ids);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletoplevelDeclarationEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	    }
+            	    break;
+
+                }
+            }
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletoplevelDeclarationEx; /* Prevent compiler warnings */
+    ruletoplevelDeclarationEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end toplevelDeclaration */
+
+/**
+ * $ANTLR start boundVarDecl
+ * ../../../../../../src/parser/cvc/Cvc.g:947:1: boundVarDecl[std::vector<std::string>& ids, CVC4::Type& t] : identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON declareVariables[&local_cmd,t,ids,false] ;
+ */
+static void
+boundVarDecl(pCvcParser ctx, std::vector<std::string>& ids, CVC4::Type& t)
+{
+    /* Initialize rule variables
+     */
+
+
+      CVC4::PtrCloser<Command> local_cmd;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:951:3: ( identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON declareVariables[&local_cmd,t,ids,false] )
+        // ../../../../../../src/parser/cvc/Cvc.g:951:5: identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON declareVariables[&local_cmd,t,ids,false]
+        {
+            FOLLOWPUSH(FOLLOW_identifierList_in_boundVarDecl3366);
+            identifierList(ctx, ids, CHECK_NONE, SYM_VARIABLE);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleboundVarDeclEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+             MATCHT(COLON, &FOLLOW_COLON_in_boundVarDecl3369);
+            if  (HASEXCEPTION())
+            {
+                goto ruleboundVarDeclEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_declareVariables_in_boundVarDecl3375);
+            declareVariables(ctx, &local_cmd, t, ids, false);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleboundVarDeclEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleboundVarDeclEx; /* Prevent compiler warnings */
+    ruleboundVarDeclEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end boundVarDecl */
+
+/**
+ * $ANTLR start boundVarDecls
+ * ../../../../../../src/parser/cvc/Cvc.g:958:1: boundVarDecls : boundVarDecl[ids,t] ( COMMA boundVarDecl[ids,t] )* ;
+ */
+static void
+boundVarDecls(pCvcParser ctx)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::vector<std::string> ids;
+      Type t;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:963:3: ( boundVarDecl[ids,t] ( COMMA boundVarDecl[ids,t] )* )
+        // ../../../../../../src/parser/cvc/Cvc.g:963:5: boundVarDecl[ids,t] ( COMMA boundVarDecl[ids,t] )*
+        {
+            FOLLOWPUSH(FOLLOW_boundVarDecl_in_boundVarDecls3396);
+            boundVarDecl(ctx, ids, t);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleboundVarDeclsEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            // ../../../../../../src/parser/cvc/Cvc.g:963:25: ( COMMA boundVarDecl[ids,t] )*
+
+            for (;;)
+            {
+                int alt36=2;
+                switch ( LA(1) )
+                {
+                case COMMA:
+                	{
+                		alt36=1;
+                	}
+                    break;
+
+                }
+
+                switch (alt36)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:963:27: COMMA boundVarDecl[ids,t]
+            	    {
+            	         MATCHT(COMMA, &FOLLOW_COMMA_in_boundVarDecls3401);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleboundVarDeclsEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_boundVarDecl_in_boundVarDecls3403);
+            	        boundVarDecl(ctx, ids, t);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleboundVarDeclsEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	    }
+            	    break;
+
+            	default:
+            	    goto loop36;	/* break out of the loop */
+            	    break;
+                }
+            }
+            loop36: ; /* Jump out to here if this rule does not match */
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleboundVarDeclsEx; /* Prevent compiler warnings */
+    ruleboundVarDeclsEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end boundVarDecls */
+
+/**
+ * $ANTLR start boundVarDeclsReturn
+ * ../../../../../../src/parser/cvc/Cvc.g:966:1: boundVarDeclsReturn[std::vector<CVC4::Expr>& terms,\n std::vector<CVC4::Type>& types] : boundVarDeclReturn[terms,types] ( COMMA boundVarDeclReturn[terms,types] )* ;
+ */
+static void
+boundVarDeclsReturn(pCvcParser ctx, std::vector<CVC4::Expr>& terms, std::vector<CVC4::Type>& types)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::vector<std::string> ids;
+      Type t;
+      terms.clear();
+      types.clear();
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:974:3: ( boundVarDeclReturn[terms,types] ( COMMA boundVarDeclReturn[terms,types] )* )
+        // ../../../../../../src/parser/cvc/Cvc.g:974:5: boundVarDeclReturn[terms,types] ( COMMA boundVarDeclReturn[terms,types] )*
+        {
+            FOLLOWPUSH(FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3426);
+            boundVarDeclReturn(ctx, terms, types);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleboundVarDeclsReturnEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            // ../../../../../../src/parser/cvc/Cvc.g:974:37: ( COMMA boundVarDeclReturn[terms,types] )*
+
+            for (;;)
+            {
+                int alt37=2;
+                switch ( LA(1) )
+                {
+                case COMMA:
+                	{
+                		alt37=1;
+                	}
+                    break;
+
+                }
+
+                switch (alt37)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:974:39: COMMA boundVarDeclReturn[terms,types]
+            	    {
+            	         MATCHT(COMMA, &FOLLOW_COMMA_in_boundVarDeclsReturn3431);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleboundVarDeclsReturnEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3433);
+            	        boundVarDeclReturn(ctx, terms, types);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleboundVarDeclsReturnEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	    }
+            	    break;
+
+            	default:
+            	    goto loop37;	/* break out of the loop */
+            	    break;
+                }
+            }
+            loop37: ; /* Jump out to here if this rule does not match */
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleboundVarDeclsReturnEx; /* Prevent compiler warnings */
+    ruleboundVarDeclsReturnEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end boundVarDeclsReturn */
+
+/**
+ * $ANTLR start boundVarDeclReturn
+ * ../../../../../../src/parser/cvc/Cvc.g:977:1: boundVarDeclReturn[std::vector<CVC4::Expr>& terms,\n std::vector<CVC4::Type>& types] : identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON type[t,CHECK_DECLARED] ;
+ */
+static void
+boundVarDeclReturn(pCvcParser ctx, std::vector<CVC4::Expr>& terms, std::vector<CVC4::Type>& types)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::vector<std::string> ids;
+      Type t;
+      // NOTE: do not clear the vectors here!
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:984:3: ( identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON type[t,CHECK_DECLARED] )
+        // ../../../../../../src/parser/cvc/Cvc.g:984:5: identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON type[t,CHECK_DECLARED]
+        {
+            FOLLOWPUSH(FOLLOW_identifierList_in_boundVarDeclReturn3456);
+            identifierList(ctx, ids, CHECK_NONE, SYM_VARIABLE);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleboundVarDeclReturnEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+             MATCHT(COLON, &FOLLOW_COLON_in_boundVarDeclReturn3459);
+            if  (HASEXCEPTION())
+            {
+                goto ruleboundVarDeclReturnEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_type_in_boundVarDeclReturn3461);
+            type(ctx, t, CHECK_DECLARED);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleboundVarDeclReturnEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 const std::vector<Expr>& vars = PARSER_STATE->mkBoundVars(ids, t);
+                      terms.insert(terms.end(), vars.begin(), vars.end());
+                      for(unsigned i = 0; i < vars.size(); ++i) {
+                        types.push_back(t);
+                      }
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleboundVarDeclReturnEx; /* Prevent compiler warnings */
+    ruleboundVarDeclReturnEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end boundVarDeclReturn */
+
+/**
+ * $ANTLR start declareTypes
+ * ../../../../../../src/parser/cvc/Cvc.g:1000:1: declareTypes[CVC4::PtrCloser<CVC4::Command>* cmd,\n const std::vector<std::string>& idList] : ( TYPE_TOK | TYPE_TOK EQUAL_TOK type[t,CHECK_DECLARED] );
+ */
+static void
+declareTypes(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd, const std::vector<std::string>& idList)
+{
+    /* Initialize rule variables
+     */
+
+
+      Type t;
+
+    {
+        {
+            //  ../../../../../../src/parser/cvc/Cvc.g:1006:3: ( TYPE_TOK | TYPE_TOK EQUAL_TOK type[t,CHECK_DECLARED] )
+
+            ANTLR3_UINT32 alt38;
+
+            alt38=2;
+
+            switch ( LA(1) )
+            {
+            case TYPE_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case EQUAL_TOK:
+            			{
+            				alt38=2;
+            			}
+            		    break;
+            		case SEMICOLON:
+            			{
+            				alt38=1;
+            			}
+            		    break;
+
+            		default:
+            		    if (BACKTRACKING>0)
+            		    {
+            		        FAILEDFLAG = ANTLR3_TRUE;
+            		        return ;
+            		    }
+
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 38;
+            		    EXCEPTION->state        = 1;
+
+
+            		    goto ruledeclareTypesEx;
+
+            		}
+
+            	}
+                break;
+
+            default:
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 38;
+                EXCEPTION->state        = 0;
+
+
+                goto ruledeclareTypesEx;
+
+            }
+
+            switch (alt38)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1006:5: TYPE_TOK
+        	    {
+        	         MATCHT(TYPE_TOK, &FOLLOW_TYPE_TOK_in_declareTypes3495);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledeclareTypesEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             CVC4::PtrCloser<DeclarationSequence> seq(new DeclarationSequence());
+        	                  for(std::vector<std::string>::const_iterator i = idList.begin();
+        	                      i != idList.end(); ++i) {
+        	                    // Don't allow a type variable to clash with a previously
+        	                    // declared type variable, however a type variable and a
+        	                    // non-type variable can clash unambiguously.  Break from CVC3
+        	                    // behavior here.
+        	                    PARSER_STATE->checkDeclaration(*i, CHECK_UNDECLARED, SYM_SORT);
+        	                    Type sort = PARSER_STATE->mkSort(*i);
+        	                    Command* decl = new DeclareTypeCommand(*i, 0, sort);
+        	                    seq->addCommand(decl);
+        	                  }
+        	                  cmd->reset(seq.release());
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1023:5: TYPE_TOK EQUAL_TOK type[t,CHECK_DECLARED]
+        	    {
+        	         MATCHT(TYPE_TOK, &FOLLOW_TYPE_TOK_in_declareTypes3514);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledeclareTypesEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_declareTypes3516);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledeclareTypesEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_type_in_declareTypes3518);
+        	        type(ctx, t, CHECK_DECLARED);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledeclareTypesEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             for(std::vector<std::string>::const_iterator i = idList.begin();
+        	                      i != idList.end();
+        	                      ++i) {
+        	                    PARSER_STATE->checkDeclaration(*i, CHECK_UNDECLARED, SYM_SORT);
+        	                    PARSER_STATE->defineType(*i, t);
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruledeclareTypesEx; /* Prevent compiler warnings */
+    ruledeclareTypesEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end declareTypes */
+
+/**
+ * $ANTLR start declareVariables
+ * ../../../../../../src/parser/cvc/Cvc.g:1042:1: declareVariables[CVC4::PtrCloser<CVC4::Command>* cmd, CVC4::Type& t,\n const std::vector<std::string>& idList, bool topLevel] : type[t,CHECK_DECLARED] ( EQUAL_TOK formula[f] )? ;
+ */
+static void
+declareVariables(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd, CVC4::Type& t, const std::vector<std::string>& idList, bool topLevel)
+{
+    /* Initialize rule variables
+     */
+
+
+      Expr f;
+      Debug("parser-extra") << "declType: " << AntlrInput::tokenText(LT(1)) << std::endl;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1049:3: ( type[t,CHECK_DECLARED] ( EQUAL_TOK formula[f] )? )
+        // ../../../../../../src/parser/cvc/Cvc.g:1049:5: type[t,CHECK_DECLARED] ( EQUAL_TOK formula[f] )?
+        {
+            FOLLOWPUSH(FOLLOW_type_in_declareVariables3552);
+            type(ctx, t, CHECK_DECLARED);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruledeclareVariablesEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            // ../../../../../../src/parser/cvc/Cvc.g:1049:28: ( EQUAL_TOK formula[f] )?
+            {
+                int alt39=2;
+                switch ( LA(1) )
+                {
+                    case EQUAL_TOK:
+                    	{
+                    		alt39=1;
+                    	}
+                        break;
+                }
+
+                switch (alt39)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1049:30: EQUAL_TOK formula[f]
+            	    {
+            	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_declareVariables3557);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruledeclareVariablesEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_formula_in_declareVariables3559);
+            	        formula(ctx, f);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruledeclareVariablesEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	    }
+            	    break;
+
+                }
+            }
+
+            if ( BACKTRACKING==0 )
+            {
+                 CVC4::PtrCloser<DeclarationSequence> seq;
+                      if(topLevel) {
+                        seq.reset(new DeclarationSequence());
+                      }
+                      if(f.isNull()) {
+                        Debug("parser") << "working on " << idList.front() << " : " << t
+                                        << std::endl;
+                        // CVC language allows redeclaration of variables if types are the same
+                        for(std::vector<std::string>::const_iterator i = idList.begin(),
+                              i_end = idList.end();
+                            i != i_end;
+                            ++i) {
+                          if(PARSER_STATE->isDeclared(*i, SYM_VARIABLE)) {
+                            Type oldType = PARSER_STATE->getType(*i);
+                            Debug("parser") << "  " << *i << " was declared previously "
+                                            << "with type " << oldType << std::endl;
+                            if(oldType != t) {
+                              std::stringstream ss;
+                              ss << language::SetLanguage(language::output::LANG_CVC4)
+                                 << "incompatible type for `" << *i << "':" << std::endl
+                                 << "  old type: " << oldType << std::endl
+                                 << "  new type: " << t << std::endl;
+                              PARSER_STATE->parseError(ss.str());
+                            } else {
+                              Debug("parser") << "  types " << t << " and " << oldType
+                                              << " are compatible" << std::endl;
+                            }
+                          } else {
+                            Debug("parser") << "  " << *i << " not declared" << std::endl;
+                            if(topLevel) {
+                              Expr func = PARSER_STATE->mkVar(*i, t, ExprManager::VAR_FLAG_GLOBAL);
+                              Command* decl = new DeclareFunctionCommand(*i, func, t);
+                              seq->addCommand(decl);
+                            } else {
+                              PARSER_STATE->mkBoundVar(*i, t);
+                            }
+                          }
+                        }
+                      } else {
+                        // f is not null-- meaning this is a definition not a declaration
+                        if(!topLevel) {
+                          // must be top-level; doesn't make sense to write something
+                          // like e.g. FORALL(x:INT = 4): [...]
+                          PARSER_STATE->parseError("cannot construct a definition here; maybe you want a LET");
+                        }
+                        assert(!idList.empty());
+                        for(std::vector<std::string>::const_iterator i = idList.begin(),
+                              i_end = idList.end();
+                            i != i_end;
+                            ++i) {
+                          Debug("parser") << "making " << *i << " : " << t << " = " << f << std::endl;
+                          PARSER_STATE->checkDeclaration(*i, CHECK_UNDECLARED, SYM_VARIABLE);
+                          Expr func = EXPR_MANAGER->mkVar(*i, t, ExprManager::VAR_FLAG_GLOBAL | ExprManager::VAR_FLAG_DEFINED);
+                          PARSER_STATE->defineFunction(*i, f);
+                          Command* decl = new DefineFunctionCommand(*i, func, f);
+                          seq->addCommand(decl);
+                        }
+                      }
+                      if(topLevel) {
+                        cmd->reset(new DeclarationSequence());
+                      }
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruledeclareVariablesEx; /* Prevent compiler warnings */
+    ruledeclareVariablesEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end declareVariables */
+
+/**
+ * $ANTLR start identifierList
+ * ../../../../../../src/parser/cvc/Cvc.g:1120:1: identifierList[std::vector<std::string>& idList,\n CVC4::parser::DeclarationCheck check,\n CVC4::parser::SymbolType type] : identifier[id,check,type] ( COMMA identifier[id,check,type] )* ;
+ */
+static void
+identifierList(pCvcParser ctx, std::vector<std::string>& idList, CVC4::parser::DeclarationCheck check, CVC4::parser::SymbolType type)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::string id;
+      idList.clear();
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1127:3: ( identifier[id,check,type] ( COMMA identifier[id,check,type] )* )
+        // ../../../../../../src/parser/cvc/Cvc.g:1127:5: identifier[id,check,type] ( COMMA identifier[id,check,type] )*
+        {
+            FOLLOWPUSH(FOLLOW_identifier_in_identifierList3590);
+            identifier(ctx, id, check, type);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleidentifierListEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 idList.push_back(id); 
+            }
+
+
+            // ../../../../../../src/parser/cvc/Cvc.g:1128:5: ( COMMA identifier[id,check,type] )*
+
+            for (;;)
+            {
+                int alt40=2;
+                switch ( LA(1) )
+                {
+                case COMMA:
+                	{
+                		alt40=1;
+                	}
+                    break;
+
+                }
+
+                switch (alt40)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1128:7: COMMA identifier[id,check,type]
+            	    {
+            	         MATCHT(COMMA, &FOLLOW_COMMA_in_identifierList3601);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleidentifierListEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_identifier_in_identifierList3603);
+            	        identifier(ctx, id, check, type);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleidentifierListEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        if ( BACKTRACKING==0 )
+            	        {
+            	             idList.push_back(id); 
+            	        }
+
+
+            	    }
+            	    break;
+
+            	default:
+            	    goto loop40;	/* break out of the loop */
+            	    break;
+                }
+            }
+            loop40: ; /* Jump out to here if this rule does not match */
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleidentifierListEx; /* Prevent compiler warnings */
+    ruleidentifierListEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end identifierList */
+
+/**
+ * $ANTLR start identifier
+ * ../../../../../../src/parser/cvc/Cvc.g:1134:1: identifier[std::string& id,\n CVC4::parser::DeclarationCheck check,\n CVC4::parser::SymbolType type] : IDENTIFIER ;
+ */
+static void
+identifier(pCvcParser ctx, std::string& id, CVC4::parser::DeclarationCheck check, CVC4::parser::SymbolType type)
+{
+    pANTLR3_COMMON_TOKEN    IDENTIFIER16;
+
+    /* Initialize rule variables
+     */
+
+    IDENTIFIER16       = NULL;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1137:3: ( IDENTIFIER )
+        // ../../../../../../src/parser/cvc/Cvc.g:1137:5: IDENTIFIER
+        {
+            IDENTIFIER16 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_identifier3625);
+            if  (HASEXCEPTION())
+            {
+                goto ruleidentifierEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 id = AntlrInput::tokenText(IDENTIFIER16);
+                      PARSER_STATE->checkDeclaration(id, check, type); 
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleidentifierEx; /* Prevent compiler warnings */
+    ruleidentifierEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end identifier */
+
+/**
+ * $ANTLR start type
+ * ../../../../../../src/parser/cvc/Cvc.g:1154:1: type[CVC4::Type& t,\n CVC4::parser::DeclarationCheck check] : ( restrictedTypePossiblyFunctionLHS[t,check,lhs] ( ARROW_TOK type[t2,check] )? | LET_TOK typeLetDecl[check] ( COMMA typeLetDecl[check] )* IN_TOK type[t,check] );
+ */
+static void
+type(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
+{
+    /* Initialize rule variables
+     */
+
+
+      Type t2;
+      bool lhs;
+      std::vector<Type> args;
+
+    {
+        {
+            //  ../../../../../../src/parser/cvc/Cvc.g:1162:3: ( restrictedTypePossiblyFunctionLHS[t,check,lhs] ( ARROW_TOK type[t2,check] )? | LET_TOK typeLetDecl[check] ( COMMA typeLetDecl[check] )* IN_TOK type[t,check] )
+
+            ANTLR3_UINT32 alt43;
+
+            alt43=2;
+
+            switch ( LA(1) )
+            {
+            case ARRAY_TOK:
+            case BITVECTOR_TOK:
+            case BOOLEAN_TOK:
+            case IDENTIFIER:
+            case INT_TOK:
+            case LBRACKET:
+            case LPAREN:
+            case REAL_TOK:
+            case SET_TOK:
+            case SQHASH:
+            case STRING_TOK:
+            case SUBTYPE_TOK:
+            	{
+            		alt43=1;
+            	}
+                break;
+            case LET_TOK:
+            	{
+            		alt43=2;
+            	}
+                break;
+
+            default:
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 43;
+                EXCEPTION->state        = 0;
+
+
+                goto ruletypeEx;
+
+            }
+
+            switch (alt43)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1162:5: restrictedTypePossiblyFunctionLHS[t,check,lhs] ( ARROW_TOK type[t2,check] )?
+        	    {
+        	        FOLLOWPUSH(FOLLOW_restrictedTypePossiblyFunctionLHS_in_type3658);
+        	        restrictedTypePossiblyFunctionLHS(ctx, t, check, lhs);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletypeEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             if(lhs) {
+        	                    assert(t.isTuple());
+        	                    args = ((DatatypeType)t).getTupleTypes();
+        	                  } else {
+        	                    args.push_back(t);
+        	                  }
+        	                
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:1170:5: ( ARROW_TOK type[t2,check] )?
+        	        {
+        	            int alt41=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case ARROW_TOK:
+        	                	{
+        	                		alt41=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt41)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1170:7: ARROW_TOK type[t2,check]
+        	        	    {
+        	        	         MATCHT(ARROW_TOK, &FOLLOW_ARROW_TOK_in_type3673);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletypeEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_type_in_type3675);
+        	        	        type(ctx, t2, check);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletypeEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             args.push_back(t2); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             if(t2.isNull()) {
+        	                    if(lhs) {
+        	                      PARSER_STATE->parseError("improperly-placed type list; expected `->' after to define a function; or else maybe these parentheses were meant to be square brackets, to define a tuple type?");
+        	                    }
+        	                  } else {
+        	                    t = EXPR_MANAGER->mkFunctionType(args);
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1183:5: LET_TOK typeLetDecl[check] ( COMMA typeLetDecl[check] )* IN_TOK type[t,check]
+        	    {
+        	         MATCHT(LET_TOK, &FOLLOW_LET_TOK_in_type3700);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletypeEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             PARSER_STATE->pushScope(); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_typeLetDecl_in_type3708);
+        	        typeLetDecl(ctx, check);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletypeEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:1184:24: ( COMMA typeLetDecl[check] )*
+
+        	        for (;;)
+        	        {
+        	            int alt42=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case COMMA:
+        	            	{
+        	            		alt42=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt42)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1184:26: COMMA typeLetDecl[check]
+        	        	    {
+        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_type3713);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletypeEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_typeLetDecl_in_type3715);
+        	        	        typeLetDecl(ctx, check);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletypeEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop42;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop42: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(IN_TOK, &FOLLOW_IN_TOK_in_type3721);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletypeEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_type_in_type3723);
+        	        type(ctx, t, check);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletypeEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             PARSER_STATE->popScope(); 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletypeEx; /* Prevent compiler warnings */
+    ruletypeEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end type */
+
+/**
+ * $ANTLR start restrictedType
+ * ../../../../../../src/parser/cvc/Cvc.g:1198:1: restrictedType[CVC4::Type& t,\n CVC4::parser::DeclarationCheck check] : restrictedTypePossiblyFunctionLHS[t,check,lhs] ;
+ */
+static void
+restrictedType(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
+{
+    /* Initialize rule variables
+     */
+
+
+      bool lhs;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1203:3: ( restrictedTypePossiblyFunctionLHS[t,check,lhs] )
+        // ../../../../../../src/parser/cvc/Cvc.g:1203:5: restrictedTypePossiblyFunctionLHS[t,check,lhs]
+        {
+            FOLLOWPUSH(FOLLOW_restrictedTypePossiblyFunctionLHS_in_restrictedType3759);
+            restrictedTypePossiblyFunctionLHS(ctx, t, check, lhs);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulerestrictedTypeEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 if(lhs) { PARSER_STATE->parseError("improperly-placed type list; maybe these parentheses were meant to be square brackets, to define a tuple type?"); } 
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulerestrictedTypeEx; /* Prevent compiler warnings */
+    rulerestrictedTypeEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end restrictedType */
+
+/**
+ * $ANTLR start restrictedTypePossiblyFunctionLHS
+ * ../../../../../../src/parser/cvc/Cvc.g:1211:1: restrictedTypePossiblyFunctionLHS[CVC4::Type& t,\n CVC4::parser::DeclarationCheck check,\n bool& lhs] : ( identifier[id,check,SYM_SORT] ( parameterization[check,types] )? | ARRAY_TOK restrictedType[t,check] OF_TOK restrictedType[t2,check] | SET_TOK OF_TOK restrictedType[t,check] | SUBTYPE_TOK LPAREN formula[f] ( COMMA formula[f2] )? RPAREN | LBRACKET k1= bound DOTDOT k2= bound RBRACKET | LBRACKET ( type[t,check] ( COMMA type[t,check] )* ) [...]
+ */
+static void
+restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check, bool& lhs)
+{
+    CVC4::parser::cvc::mySubrangeBound k1;
+    #undef	RETURN_TYPE_k1
+    #define	RETURN_TYPE_k1 CVC4::parser::cvc::mySubrangeBound
+
+    CVC4::parser::cvc::mySubrangeBound k2;
+    #undef	RETURN_TYPE_k2
+    #define	RETURN_TYPE_k2 CVC4::parser::cvc::mySubrangeBound
+
+    unsigned k;
+    #undef	RETURN_TYPE_k
+    #define	RETURN_TYPE_k unsigned
+
+    /* Initialize rule variables
+     */
+
+
+      Type t2;
+      Expr f, f2;
+      std::string id;
+      std::vector<Type> types;
+      std::vector< std::pair<std::string, Type> > typeIds;
+      //SymbolTable* symtab;
+      Parser* parser;
+      lhs = false;
+
+    {
+        {
+            //  ../../../../../../src/parser/cvc/Cvc.g:1225:3: ( identifier[id,check,SYM_SORT] ( parameterization[check,types] )? | ARRAY_TOK restrictedType[t,check] OF_TOK restrictedType[t2,check] | SET_TOK OF_TOK restrictedType[t,check] | SUBTYPE_TOK LPAREN formula[f] ( COMMA formula[f2] )? RPAREN | LBRACKET k1= bound DOTDOT k2= bound RBRACKET | LBRACKET ( type[t,check] ( COMMA type[t,check] )* )? RBRACKET | SQHASH ( identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] ( COMMA identi [...]
+
+            ANTLR3_UINT32 alt51;
+
+            alt51=13;
+
+            switch ( LA(1) )
+            {
+            case IDENTIFIER:
+            	{
+            		alt51=1;
+            	}
+                break;
+            case ARRAY_TOK:
+            	{
+            		alt51=2;
+            	}
+                break;
+            case SET_TOK:
+            	{
+            		alt51=3;
+            	}
+                break;
+            case SUBTYPE_TOK:
+            	{
+            		alt51=4;
+            	}
+                break;
+            case LBRACKET:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case INTEGER_LITERAL:
+            		case MINUS_TOK:
+            		case UNDERSCORE:
+            			{
+            				alt51=5;
+            			}
+            		    break;
+            		case ARRAY_TOK:
+            		case BITVECTOR_TOK:
+            		case BOOLEAN_TOK:
+            		case IDENTIFIER:
+            		case INT_TOK:
+            		case LBRACKET:
+            		case LET_TOK:
+            		case LPAREN:
+            		case RBRACKET:
+            		case REAL_TOK:
+            		case SET_TOK:
+            		case SQHASH:
+            		case STRING_TOK:
+            		case SUBTYPE_TOK:
+            			{
+            				alt51=6;
+            			}
+            		    break;
+
+            		default:
+            		    if (BACKTRACKING>0)
+            		    {
+            		        FAILEDFLAG = ANTLR3_TRUE;
+            		        return ;
+            		    }
+
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 51;
+            		    EXCEPTION->state        = 5;
+
+
+            		    goto rulerestrictedTypePossiblyFunctionLHSEx;
+
+            		}
+
+            	}
+                break;
+            case SQHASH:
+            	{
+            		alt51=7;
+            	}
+                break;
+            case BITVECTOR_TOK:
+            	{
+            		alt51=8;
+            	}
+                break;
+            case STRING_TOK:
+            	{
+            		alt51=9;
+            	}
+                break;
+            case BOOLEAN_TOK:
+            	{
+            		alt51=10;
+            	}
+                break;
+            case REAL_TOK:
+            	{
+            		alt51=11;
+            	}
+                break;
+            case INT_TOK:
+            	{
+            		alt51=12;
+            	}
+                break;
+            case LPAREN:
+            	{
+            		alt51=13;
+            	}
+                break;
+
+            default:
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 51;
+                EXCEPTION->state        = 0;
+
+
+                goto rulerestrictedTypePossiblyFunctionLHSEx;
+
+            }
+
+            switch (alt51)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1225:5: identifier[id,check,SYM_SORT] ( parameterization[check,types] )?
+        	    {
+        	        FOLLOWPUSH(FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS3793);
+        	        identifier(ctx, id, check, SYM_SORT);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:1226:5: ( parameterization[check,types] )?
+        	        {
+        	            int alt44=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case LBRACKET:
+        	                	{
+        	                		switch ( LA(2) )
+        	                		{
+        	                		    case IDENTIFIER:
+        	                		    	{
+        	                		    		switch ( LA(3) )
+        	                		    		{
+        	                		    		    case COMMA:
+        	                		    		    case LBRACKET:
+        	                		    		    case RBRACKET:
+        	                		    		    	{
+        	                		    		    		alt44=1;
+        	                		    		    	}
+        	                		    		        break;
+        	                		    		}
+
+        	                		    	}
+        	                		        break;
+        	                		    case ARRAY_TOK:
+        	                		    case BITVECTOR_TOK:
+        	                		    case BOOLEAN_TOK:
+        	                		    case INT_TOK:
+        	                		    case LBRACKET:
+        	                		    case LPAREN:
+        	                		    case REAL_TOK:
+        	                		    case SET_TOK:
+        	                		    case SQHASH:
+        	                		    case STRING_TOK:
+        	                		    case SUBTYPE_TOK:
+        	                		    	{
+        	                		    		alt44=1;
+        	                		    	}
+        	                		        break;
+        	                		}
+
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt44)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1226:5: parameterization[check,types]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_parameterization_in_restrictedTypePossiblyFunctionLHS3800);
+        	        	        parameterization(ctx, check, types);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+
+        	                  if(check == CHECK_DECLARED ||
+        	                     PARSER_STATE->isDeclared(id, SYM_SORT)) {
+        	                    Debug("parser-param") << "param: getSort " << id << " " << types.size() << " " << PARSER_STATE->getArity( id )
+        	                                          << " " << PARSER_STATE->isDeclared(id, SYM_SORT) << std::endl;
+        	                    if(types.size() != PARSER_STATE->getArity(id)) {
+        	                      std::stringstream ss;
+        	                      ss << "incorrect arity for symbol `" << id << "': expected "
+        	                         << PARSER_STATE->getArity( id ) << " type arguments, got "
+        	                         << types.size();
+        	                      PARSER_STATE->parseError(ss.str());
+        	                    }
+        	                    if(types.size() > 0) {
+        	                      t = PARSER_STATE->getSort(id, types);
+        	                    }else{
+        	                      t = PARSER_STATE->getSort(id);
+        	                    }
+        	                  } else {
+        	                    if(types.empty()) {
+        	                      t = PARSER_STATE->mkUnresolvedType(id);
+        	                      Debug("parser-param") << "param: make unres type " << id << std::endl;
+        	                    }else{
+        	                      t = PARSER_STATE->mkUnresolvedTypeConstructor(id,types);
+        	                      t = SortConstructorType(t).instantiate( types );
+        	                      Debug("parser-param") << "param: make unres param type " << id << " " << types.size() << " "
+        	                                            << PARSER_STATE->getArity( id ) << std::endl;
+        	                    }
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1258:5: ARRAY_TOK restrictedType[t,check] OF_TOK restrictedType[t2,check]
+        	    {
+        	         MATCHT(ARRAY_TOK, &FOLLOW_ARRAY_TOK_in_restrictedTypePossiblyFunctionLHS3821);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3823);
+        	        restrictedType(ctx, t, check);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(OF_TOK, &FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3826);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3828);
+        	        restrictedType(ctx, t2, check);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             t = EXPR_MANAGER->mkArrayType(t, t2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1260:5: SET_TOK OF_TOK restrictedType[t,check]
+        	    {
+        	         MATCHT(SET_TOK, &FOLLOW_SET_TOK_in_restrictedTypePossiblyFunctionLHS3841);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(OF_TOK, &FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3843);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3845);
+        	        restrictedType(ctx, t, check);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             t = EXPR_MANAGER->mkSetType(t); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1264:5: SUBTYPE_TOK LPAREN formula[f] ( COMMA formula[f2] )? RPAREN
+        	    {
+        	         MATCHT(SUBTYPE_TOK, &FOLLOW_SUBTYPE_TOK_in_restrictedTypePossiblyFunctionLHS3868);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS3870);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             /*symtab = PARSER_STATE->getSymbolTable();
+        	                  PARSER_STATE->useDeclarationsFrom(new SymbolTable());*/ 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3888);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:1271:16: ( COMMA formula[f2] )?
+        	        {
+        	            int alt45=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case COMMA:
+        	                	{
+        	                		alt45=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt45)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1271:18: COMMA formula[f2]
+        	        	    {
+        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3893);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3895);
+        	        	        formula(ctx, f2);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS3901);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             /*SymbolTable* old = PARSER_STATE->getSymbolTable();
+        	                  PARSER_STATE->useDeclarationsFrom(symtab);
+        	                  delete old;*/
+        	                  PARSER_STATE->unimplementedFeature("predicate subtyping not supported in this release");
+        	                  /*t = f2.isNull() ?
+        	                    EXPR_MANAGER->mkPredicateSubtype(f) :
+        	                    EXPR_MANAGER->mkPredicateSubtype(f, f2);
+        	                  */
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1283:5: LBRACKET k1= bound DOTDOT k2= bound RBRACKET
+        	    {
+        	         MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3920);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3924);
+        	        k1=bound(ctx);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(DOTDOT, &FOLLOW_DOTDOT_in_restrictedTypePossiblyFunctionLHS3926);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3930);
+        	        k2=bound(ctx);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3932);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             if(k1.hasBound() && k2.hasBound() &&
+        	                     k1.getBound() > k2.getBound()) {
+        	                    std::stringstream ss;
+        	                    ss << "Subrange [" << k1.getBound() << ".." << k2.getBound()
+        	                       << "] inappropriate: range must be nonempty!";
+        	                    PARSER_STATE->parseError(ss.str());
+        	                  }
+        	                  t = EXPR_MANAGER->mkSubrangeType(SubrangeBounds(k1, k2));
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1295:5: LBRACKET ( type[t,check] ( COMMA type[t,check] )* )? RBRACKET
+        	    {
+        	         MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3951);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:1295:14: ( type[t,check] ( COMMA type[t,check] )* )?
+        	        {
+        	            int alt47=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case ARRAY_TOK:
+        	                case BITVECTOR_TOK:
+        	                case BOOLEAN_TOK:
+        	                case IDENTIFIER:
+        	                case INT_TOK:
+        	                case LBRACKET:
+        	                case LET_TOK:
+        	                case LPAREN:
+        	                case REAL_TOK:
+        	                case SET_TOK:
+        	                case SQHASH:
+        	                case STRING_TOK:
+        	                case SUBTYPE_TOK:
+        	                	{
+        	                		alt47=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt47)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1295:16: type[t,check] ( COMMA type[t,check] )*
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3955);
+        	        	        type(ctx, t, check);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             types.push_back(t); 
+        	        	        }
+
+
+        	        	        // ../../../../../../src/parser/cvc/Cvc.g:1296:5: ( COMMA type[t,check] )*
+
+        	        	        for (;;)
+        	        	        {
+        	        	            int alt46=2;
+        	        	            switch ( LA(1) )
+        	        	            {
+        	        	            case COMMA:
+        	        	            	{
+        	        	            		alt46=1;
+        	        	            	}
+        	        	                break;
+
+        	        	            }
+
+        	        	            switch (alt46)
+        	        	            {
+        	        	        	case 1:
+        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1296:7: COMMA type[t,check]
+        	        	        	    {
+        	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3966);
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        	        	        }
+        	        	        	        if (HASFAILED())
+        	        	        	        {
+        	        	        	            return ;
+        	        	        	        }
+
+
+        	        	        	        FOLLOWPUSH(FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3968);
+        	        	        	        type(ctx, t, check);
+
+        	        	        	        FOLLOWPOP();
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        	        	        }
+        	        	        	        if (HASFAILED())
+        	        	        	        {
+        	        	        	            return ;
+        	        	        	        }
+
+
+        	        	        	        if ( BACKTRACKING==0 )
+        	        	        	        {
+        	        	        	             types.push_back(t); 
+        	        	        	        }
+
+
+        	        	        	    }
+        	        	        	    break;
+
+        	        	        	default:
+        	        	        	    goto loop46;	/* break out of the loop */
+        	        	        	    break;
+        	        	            }
+        	        	        }
+        	        	        loop46: ; /* Jump out to here if this rule does not match */
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	         MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3979);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             if(types.size() == 1 && types.front().isFunction()) {
+        	                    // old style function syntax [ T -> U ]
+        	                    PARSER_STATE->parseError("old-style function type syntax not supported anymore; please use the new syntax");
+        	                  } else {
+        	                    // tuple type [ T, U, V... ]
+        	                    t = EXPR_MANAGER->mkTupleType(types);
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1307:5: SQHASH ( identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] ( COMMA identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] )* )? HASHSQ
+        	    {
+        	         MATCHT(SQHASH, &FOLLOW_SQHASH_in_restrictedTypePossiblyFunctionLHS3998);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:1307:12: ( identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] ( COMMA identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] )* )?
+        	        {
+        	            int alt49=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case IDENTIFIER:
+        	                	{
+        	                		alt49=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt49)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1307:14: identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] ( COMMA identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] )*
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4002);
+        	        	        identifier(ctx, id, CHECK_NONE, SYM_SORT);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	         MATCHT(COLON, &FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4005);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4007);
+        	        	        type(ctx, t, check);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             typeIds.push_back(std::make_pair(id, t)); 
+        	        	        }
+
+
+        	        	        // ../../../../../../src/parser/cvc/Cvc.g:1308:5: ( COMMA identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] )*
+
+        	        	        for (;;)
+        	        	        {
+        	        	            int alt48=2;
+        	        	            switch ( LA(1) )
+        	        	            {
+        	        	            case COMMA:
+        	        	            	{
+        	        	            		alt48=1;
+        	        	            	}
+        	        	                break;
+
+        	        	            }
+
+        	        	            switch (alt48)
+        	        	            {
+        	        	        	case 1:
+        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1308:7: COMMA identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check]
+        	        	        	    {
+        	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4018);
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        	        	        }
+        	        	        	        if (HASFAILED())
+        	        	        	        {
+        	        	        	            return ;
+        	        	        	        }
+
+
+        	        	        	        FOLLOWPUSH(FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4020);
+        	        	        	        identifier(ctx, id, CHECK_NONE, SYM_SORT);
+
+        	        	        	        FOLLOWPOP();
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        	        	        }
+        	        	        	        if (HASFAILED())
+        	        	        	        {
+        	        	        	            return ;
+        	        	        	        }
+
+
+        	        	        	         MATCHT(COLON, &FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4023);
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        	        	        }
+        	        	        	        if (HASFAILED())
+        	        	        	        {
+        	        	        	            return ;
+        	        	        	        }
+
+
+        	        	        	        FOLLOWPUSH(FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4025);
+        	        	        	        type(ctx, t, check);
+
+        	        	        	        FOLLOWPOP();
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        	        	        }
+        	        	        	        if (HASFAILED())
+        	        	        	        {
+        	        	        	            return ;
+        	        	        	        }
+
+
+        	        	        	        if ( BACKTRACKING==0 )
+        	        	        	        {
+        	        	        	             typeIds.push_back(std::make_pair(id, t)); 
+        	        	        	        }
+
+
+        	        	        	    }
+        	        	        	    break;
+
+        	        	        	default:
+        	        	        	    goto loop48;	/* break out of the loop */
+        	        	        	    break;
+        	        	            }
+        	        	        }
+        	        	        loop48: ; /* Jump out to here if this rule does not match */
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	         MATCHT(HASHSQ, &FOLLOW_HASHSQ_in_restrictedTypePossiblyFunctionLHS4036);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             t = EXPR_MANAGER->mkRecordType(typeIds); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 8:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1312:5: BITVECTOR_TOK LPAREN k= numeral RPAREN
+        	    {
+        	         MATCHT(BITVECTOR_TOK, &FOLLOW_BITVECTOR_TOK_in_restrictedTypePossiblyFunctionLHS4055);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4057);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_numeral_in_restrictedTypePossiblyFunctionLHS4061);
+        	        k=numeral(ctx);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4063);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             if(k == 0) {
+        	                    PARSER_STATE->parseError("Illegal bitvector size: 0");
+        	                  }
+        	                  t = EXPR_MANAGER->mkBitVectorType(k);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 9:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1320:5: STRING_TOK
+        	    {
+        	         MATCHT(STRING_TOK, &FOLLOW_STRING_TOK_in_restrictedTypePossiblyFunctionLHS4082);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             t = EXPR_MANAGER->stringType(); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 10:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1323:5: BOOLEAN_TOK
+        	    {
+        	         MATCHT(BOOLEAN_TOK, &FOLLOW_BOOLEAN_TOK_in_restrictedTypePossiblyFunctionLHS4097);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             t = EXPR_MANAGER->booleanType(); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 11:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1324:5: REAL_TOK
+        	    {
+        	         MATCHT(REAL_TOK, &FOLLOW_REAL_TOK_in_restrictedTypePossiblyFunctionLHS4105);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             t = EXPR_MANAGER->realType(); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 12:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1325:5: INT_TOK
+        	    {
+        	         MATCHT(INT_TOK, &FOLLOW_INT_TOK_in_restrictedTypePossiblyFunctionLHS4113);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             t = EXPR_MANAGER->integerType(); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 13:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1330:5: LPAREN type[t,check] ( COMMA type[t,check] )* RPAREN
+        	    {
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4128);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4130);
+        	        type(ctx, t, check);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             types.push_back(t); 
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:1331:5: ( COMMA type[t,check] )*
+
+        	        for (;;)
+        	        {
+        	            int alt50=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case COMMA:
+        	            	{
+        	            		alt50=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt50)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1331:7: COMMA type[t,check]
+        	        	    {
+        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4141);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4143);
+        	        	        type(ctx, t, check);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             lhs = true; types.push_back(t); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop50;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop50: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4151);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             if(lhs) { t = EXPR_MANAGER->mkTupleType(types); }
+        	                  // if !lhs, t is already set up correctly, nothing to do..
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulerestrictedTypePossiblyFunctionLHSEx; /* Prevent compiler warnings */
+    rulerestrictedTypePossiblyFunctionLHSEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end restrictedTypePossiblyFunctionLHS */
+
+/**
+ * $ANTLR start parameterization
+ * ../../../../../../src/parser/cvc/Cvc.g:1337:1: parameterization[CVC4::parser::DeclarationCheck check,\n std::vector<CVC4::Type>& params] : LBRACKET restrictedType[t,check] ( COMMA restrictedType[t,check] )* RBRACKET ;
+ */
+static void
+parameterization(pCvcParser ctx, CVC4::parser::DeclarationCheck check, std::vector<CVC4::Type>& params)
+{
+    /* Initialize rule variables
+     */
+
+
+      Type t;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1342:3: ( LBRACKET restrictedType[t,check] ( COMMA restrictedType[t,check] )* RBRACKET )
+        // ../../../../../../src/parser/cvc/Cvc.g:1342:5: LBRACKET restrictedType[t,check] ( COMMA restrictedType[t,check] )* RBRACKET
+        {
+             MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_parameterization4176);
+            if  (HASEXCEPTION())
+            {
+                goto ruleparameterizationEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_restrictedType_in_parameterization4178);
+            restrictedType(ctx, t, check);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleparameterizationEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 Debug("parser-param") << "t = " << t << std::endl; params.push_back( t ); 
+            }
+
+
+            // ../../../../../../src/parser/cvc/Cvc.g:1343:5: ( COMMA restrictedType[t,check] )*
+
+            for (;;)
+            {
+                int alt52=2;
+                switch ( LA(1) )
+                {
+                case COMMA:
+                	{
+                		alt52=1;
+                	}
+                    break;
+
+                }
+
+                switch (alt52)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1343:7: COMMA restrictedType[t,check]
+            	    {
+            	         MATCHT(COMMA, &FOLLOW_COMMA_in_parameterization4189);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleparameterizationEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_restrictedType_in_parameterization4191);
+            	        restrictedType(ctx, t, check);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleparameterizationEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        if ( BACKTRACKING==0 )
+            	        {
+            	             Debug("parser-param") << "t = " << t << std::endl; params.push_back( t ); 
+            	        }
+
+
+            	    }
+            	    break;
+
+            	default:
+            	    goto loop52;	/* break out of the loop */
+            	    break;
+                }
+            }
+            loop52: ; /* Jump out to here if this rule does not match */
+
+
+             MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_parameterization4199);
+            if  (HASEXCEPTION())
+            {
+                goto ruleparameterizationEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleparameterizationEx; /* Prevent compiler warnings */
+    ruleparameterizationEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end parameterization */
+
+/**
+ * $ANTLR start bound
+ * ../../../../../../src/parser/cvc/Cvc.g:1346:1: bound returns [CVC4::parser::cvc::mySubrangeBound bound] : ( UNDERSCORE |k= integer );
+ */
+static CVC4::parser::cvc::mySubrangeBound
+bound(pCvcParser ctx)
+{
+    CVC4::parser::cvc::mySubrangeBound bound;
+
+
+    CVC4::Rational k;
+    #undef	RETURN_TYPE_k
+    #define	RETURN_TYPE_k CVC4::Rational
+
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/cvc/Cvc.g:1347:3: ( UNDERSCORE |k= integer )
+
+            ANTLR3_UINT32 alt53;
+
+            alt53=2;
+
+            switch ( LA(1) )
+            {
+            case UNDERSCORE:
+            	{
+            		alt53=1;
+            	}
+                break;
+            case INTEGER_LITERAL:
+            case MINUS_TOK:
+            	{
+            		alt53=2;
+            	}
+                break;
+
+            default:
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return bound;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 53;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleboundEx;
+
+            }
+
+            switch (alt53)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1347:5: UNDERSCORE
+        	    {
+        	         MATCHT(UNDERSCORE, &FOLLOW_UNDERSCORE_in_bound4216);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleboundEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return bound;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             bound= SubrangeBound();
+        	             
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1348:5: k= integer
+        	    {
+        	        FOLLOWPUSH(FOLLOW_integer_in_bound4226);
+        	        k=integer(ctx);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleboundEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return bound;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             bound= SubrangeBound(k.getNumerator());
+        	             
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleboundEx; /* Prevent compiler warnings */
+    ruleboundEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return bound;
+}
+/* $ANTLR end bound */
+
+/**
+ * $ANTLR start typeLetDecl
+ * ../../../../../../src/parser/cvc/Cvc.g:1351:1: typeLetDecl[CVC4::parser::DeclarationCheck check] : identifier[id,CHECK_NONE,SYM_SORT] ( COLON TYPE_TOK )? EQUAL_TOK restrictedType[t,check] ;
+ */
+static void
+typeLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
+{
+    /* Initialize rule variables
+     */
+
+
+      Type t;
+      std::string id;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1356:3: ( identifier[id,CHECK_NONE,SYM_SORT] ( COLON TYPE_TOK )? EQUAL_TOK restrictedType[t,check] )
+        // ../../../../../../src/parser/cvc/Cvc.g:1356:5: identifier[id,CHECK_NONE,SYM_SORT] ( COLON TYPE_TOK )? EQUAL_TOK restrictedType[t,check]
+        {
+            FOLLOWPUSH(FOLLOW_identifier_in_typeLetDecl4245);
+            identifier(ctx, id, CHECK_NONE, SYM_SORT);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruletypeLetDeclEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            // ../../../../../../src/parser/cvc/Cvc.g:1356:40: ( COLON TYPE_TOK )?
+            {
+                int alt54=2;
+                switch ( LA(1) )
+                {
+                    case COLON:
+                    	{
+                    		alt54=1;
+                    	}
+                        break;
+                }
+
+                switch (alt54)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1356:41: COLON TYPE_TOK
+            	    {
+            	         MATCHT(COLON, &FOLLOW_COLON_in_typeLetDecl4249);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletypeLetDeclEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	         MATCHT(TYPE_TOK, &FOLLOW_TYPE_TOK_in_typeLetDecl4251);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletypeLetDeclEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	    }
+            	    break;
+
+                }
+            }
+
+             MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_typeLetDecl4255);
+            if  (HASEXCEPTION())
+            {
+                goto ruletypeLetDeclEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_restrictedType_in_typeLetDecl4257);
+            restrictedType(ctx, t, check);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruletypeLetDeclEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 PARSER_STATE->defineType(id, t); 
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletypeLetDeclEx; /* Prevent compiler warnings */
+    ruletypeLetDeclEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end typeLetDecl */
+
+/**
+ * $ANTLR start formula
+ * ../../../../../../src/parser/cvc/Cvc.g:1367:1: formula[CVC4::Expr& f] : n= nots ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? ) ;
+ */
+static void
+formula(pCvcParser ctx, CVC4::Expr& f)
+{
+    size_t n;
+    #undef	RETURN_TYPE_n
+    #define	RETURN_TYPE_n size_t
+
+    /* Initialize rule variables
+     */
+
+
+      Debug("parser-extra") << "formula: " << AntlrInput::tokenText(LT(1)) << std::endl;
+      Expr f2;
+      std::vector<CVC4::Expr> expressions;
+      std::vector<unsigned> operators;
+      unsigned op;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1375:3: (n= nots ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? ) )
+        // ../../../../../../src/parser/cvc/Cvc.g:1375:5: n= nots ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? )
+        {
+            FOLLOWPUSH(FOLLOW_nots_in_formula4287);
+            n=nots(ctx);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleformulaEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            // ../../../../../../src/parser/cvc/Cvc.g:1376:5: ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? )
+            {
+                int alt56=2;
+                switch ( LA(1) )
+                {
+                case EXISTS_TOK:
+                case FORALL_TOK:
+                case LAMBDA:
+                case LET_TOK:
+                	{
+                		alt56=1;
+                	}
+                    break;
+                case ABS_TOK:
+                case ARRAY_TOK:
+                case BAR:
+                case BINARY_LITERAL:
+                case BVASHR_TOK:
+                case BVCOMP_TOK:
+                case BVGE_TOK:
+                case BVGT_TOK:
+                case BVLE_TOK:
+                case BVLSHR_TOK:
+                case BVLT_TOK:
+                case BVMULT_TOK:
+                case BVNAND_TOK:
+                case BVNEG_TOK:
+                case BVNOR_TOK:
+                case BVPLUS_TOK:
+                case BVREPEAT_TOK:
+                case BVROTL_TOK:
+                case BVROTR_TOK:
+                case BVSDIV_TOK:
+                case BVSGE_TOK:
+                case BVSGT_TOK:
+                case BVSHL_TOK:
+                case BVSLE_TOK:
+                case BVSLT_TOK:
+                case BVSMOD_TOK:
+                case BVSREM_TOK:
+                case BVSUB_TOK:
+                case BVUDIV_TOK:
+                case BVUMINUS_TOK:
+                case BVUREM_TOK:
+                case BVXNOR_TOK:
+                case BVXOR_TOK:
+                case BVZEROEXTEND_TOK:
+                case DECIMAL_LITERAL:
+                case DISTINCT_TOK:
+                case DIVISIBLE_TOK:
+                case FALSE_TOK:
+                case FLOOR_TOK:
+                case HEX_LITERAL:
+                case IDENTIFIER:
+                case IF_TOK:
+                case INTEGER_LITERAL:
+                case IS_INTEGER_TOK:
+                case LBRACE:
+                case LPAREN:
+                case MINUS_TOK:
+                case NOT_TOK:
+                case PARENHASH:
+                case SETS_CARD_TOK:
+                case STRING_CONCAT_TOK:
+                case STRING_CONTAINS_TOK:
+                case STRING_INDEXOF_TOK:
+                case STRING_ITOS_TOK:
+                case STRING_LENGTH_TOK:
+                case STRING_LITERAL:
+                case STRING_PREFIXOF_TOK:
+                case STRING_REPLACE_TOK:
+                case STRING_STOI_TOK:
+                case STRING_STOU16_TOK:
+                case STRING_STOU32_TOK:
+                case STRING_SUBSTR_TOK:
+                case STRING_SUFFIXOF_TOK:
+                case STRING_U16TOS_TOK:
+                case STRING_U32TOS_TOK:
+                case SX_TOK:
+                case TRANSCLOSURE_TOK:
+                case TRANSPOSE_TOK:
+                case TRUE_TOK:
+                case TUPLE_TOK:
+                case UNIVSET_TOK:
+                	{
+                		alt56=2;
+                	}
+                    break;
+
+                default:
+                    if (BACKTRACKING>0)
+                    {
+                        FAILEDFLAG = ANTLR3_TRUE;
+                        return ;
+                    }
+
+                    CONSTRUCTEX();
+                    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                    EXCEPTION->message      = (void *)"";
+                    EXCEPTION->decisionNum  = 56;
+                    EXCEPTION->state        = 0;
+
+
+                    goto ruleformulaEx;
+
+                }
+
+                switch (alt56)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1376:7: prefixFormula[f]
+            	    {
+            	        FOLLOWPUSH(FOLLOW_prefixFormula_in_formula4295);
+            	        prefixFormula(ctx, f);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleformulaEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        if ( BACKTRACKING==0 )
+            	        {
+            	             f = addNots(EXPR_MANAGER, n, f); 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 2:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1378:7: comparison[f] ( morecomparisons[expressions,operators] )?
+            	    {
+            	        FOLLOWPUSH(FOLLOW_comparison_in_formula4312);
+            	        comparison(ctx, f);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleformulaEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        if ( BACKTRACKING==0 )
+            	        {
+            	             f = addNots(EXPR_MANAGER, n, f);
+            	                    expressions.push_back(f);
+            	                  
+            	        }
+
+
+            	        // ../../../../../../src/parser/cvc/Cvc.g:1382:7: ( morecomparisons[expressions,operators] )?
+            	        {
+            	            int alt55=2;
+            	            switch ( LA(1) )
+            	            {
+            	                case AND_TOK:
+            	                case IFF_TOK:
+            	                case IMPLIES_TOK:
+            	                case JOIN_TOK:
+            	                case OR_TOK:
+            	                case PRODUCT_TOK:
+            	                case XOR_TOK:
+            	                	{
+            	                		alt55=1;
+            	                	}
+            	                    break;
+            	            }
+
+            	            switch (alt55)
+            	            {
+            	        	case 1:
+            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1382:7: morecomparisons[expressions,operators]
+            	        	    {
+            	        	        FOLLOWPUSH(FOLLOW_morecomparisons_in_formula4329);
+            	        	        morecomparisons(ctx, expressions, operators);
+
+            	        	        FOLLOWPOP();
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto ruleformulaEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	    }
+            	        	    break;
+
+            	            }
+            	        }
+
+            	        if ( BACKTRACKING==0 )
+            	        {
+            	             f = createPrecedenceTree(PARSER_STATE, EXPR_MANAGER, expressions, operators); 
+            	        }
+
+
+            	    }
+            	    break;
+
+                }
+            }
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleformulaEx; /* Prevent compiler warnings */
+    ruleformulaEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end formula */
+
+/**
+ * $ANTLR start morecomparisons
+ * ../../../../../../src/parser/cvc/Cvc.g:1387:1: morecomparisons[std::vector<CVC4::Expr>& expressions,\n std::vector<unsigned>& operators] returns [size_t i = 0] : booleanBinop[op] n= nots ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? ) ;
+ */
+static size_t
+morecomparisons(pCvcParser ctx, std::vector<CVC4::Expr>& expressions, std::vector<unsigned>& operators)
+{
+    size_t i;
+
+
+    size_t n;
+    #undef	RETURN_TYPE_n
+    #define	RETURN_TYPE_n size_t
+
+    /* Initialize rule variables
+     */
+    i =  0;
+
+
+
+      unsigned op;
+      Expr f;
+      i= expressions.size();
+
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1394:3: ( booleanBinop[op] n= nots ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? ) )
+        // ../../../../../../src/parser/cvc/Cvc.g:1394:5: booleanBinop[op] n= nots ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? )
+        {
+            FOLLOWPUSH(FOLLOW_booleanBinop_in_morecomparisons4368);
+            booleanBinop(ctx, op);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulemorecomparisonsEx;
+            }
+            if (HASFAILED())
+            {
+                return i;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 operators.push_back(op); 
+            }
+
+
+            FOLLOWPUSH(FOLLOW_nots_in_morecomparisons4379);
+            n=nots(ctx);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulemorecomparisonsEx;
+            }
+            if (HASFAILED())
+            {
+                return i;
+            }
+
+
+            // ../../../../../../src/parser/cvc/Cvc.g:1396:5: ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? )
+            {
+                int alt58=2;
+                switch ( LA(1) )
+                {
+                case EXISTS_TOK:
+                case FORALL_TOK:
+                case LAMBDA:
+                case LET_TOK:
+                	{
+                		alt58=1;
+                	}
+                    break;
+                case ABS_TOK:
+                case ARRAY_TOK:
+                case BAR:
+                case BINARY_LITERAL:
+                case BVASHR_TOK:
+                case BVCOMP_TOK:
+                case BVGE_TOK:
+                case BVGT_TOK:
+                case BVLE_TOK:
+                case BVLSHR_TOK:
+                case BVLT_TOK:
+                case BVMULT_TOK:
+                case BVNAND_TOK:
+                case BVNEG_TOK:
+                case BVNOR_TOK:
+                case BVPLUS_TOK:
+                case BVREPEAT_TOK:
+                case BVROTL_TOK:
+                case BVROTR_TOK:
+                case BVSDIV_TOK:
+                case BVSGE_TOK:
+                case BVSGT_TOK:
+                case BVSHL_TOK:
+                case BVSLE_TOK:
+                case BVSLT_TOK:
+                case BVSMOD_TOK:
+                case BVSREM_TOK:
+                case BVSUB_TOK:
+                case BVUDIV_TOK:
+                case BVUMINUS_TOK:
+                case BVUREM_TOK:
+                case BVXNOR_TOK:
+                case BVXOR_TOK:
+                case BVZEROEXTEND_TOK:
+                case DECIMAL_LITERAL:
+                case DISTINCT_TOK:
+                case DIVISIBLE_TOK:
+                case FALSE_TOK:
+                case FLOOR_TOK:
+                case HEX_LITERAL:
+                case IDENTIFIER:
+                case IF_TOK:
+                case INTEGER_LITERAL:
+                case IS_INTEGER_TOK:
+                case LBRACE:
+                case LPAREN:
+                case MINUS_TOK:
+                case NOT_TOK:
+                case PARENHASH:
+                case SETS_CARD_TOK:
+                case STRING_CONCAT_TOK:
+                case STRING_CONTAINS_TOK:
+                case STRING_INDEXOF_TOK:
+                case STRING_ITOS_TOK:
+                case STRING_LENGTH_TOK:
+                case STRING_LITERAL:
+                case STRING_PREFIXOF_TOK:
+                case STRING_REPLACE_TOK:
+                case STRING_STOI_TOK:
+                case STRING_STOU16_TOK:
+                case STRING_STOU32_TOK:
+                case STRING_SUBSTR_TOK:
+                case STRING_SUFFIXOF_TOK:
+                case STRING_U16TOS_TOK:
+                case STRING_U32TOS_TOK:
+                case SX_TOK:
+                case TRANSCLOSURE_TOK:
+                case TRANSPOSE_TOK:
+                case TRUE_TOK:
+                case TUPLE_TOK:
+                case UNIVSET_TOK:
+                	{
+                		alt58=2;
+                	}
+                    break;
+
+                default:
+                    if (BACKTRACKING>0)
+                    {
+                        FAILEDFLAG = ANTLR3_TRUE;
+                        return i;
+                    }
+
+                    CONSTRUCTEX();
+                    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                    EXCEPTION->message      = (void *)"";
+                    EXCEPTION->decisionNum  = 58;
+                    EXCEPTION->state        = 0;
+
+
+                    goto rulemorecomparisonsEx;
+
+                }
+
+                switch (alt58)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1396:7: prefixFormula[f]
+            	    {
+            	        FOLLOWPUSH(FOLLOW_prefixFormula_in_morecomparisons4387);
+            	        prefixFormula(ctx, f);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulemorecomparisonsEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return i;
+            	        }
+
+
+            	        if ( BACKTRACKING==0 )
+            	        {
+            	             expressions.push_back(addNots(EXPR_MANAGER, n, f)); 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 2:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1398:7: comparison[f] ( morecomparisons[expressions,operators] )?
+            	    {
+            	        FOLLOWPUSH(FOLLOW_comparison_in_morecomparisons4404);
+            	        comparison(ctx, f);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulemorecomparisonsEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return i;
+            	        }
+
+
+            	        if ( BACKTRACKING==0 )
+            	        {
+            	             f = addNots(EXPR_MANAGER, n, f);
+            	                    expressions.push_back(f);
+            	                  
+            	        }
+
+
+            	        // ../../../../../../src/parser/cvc/Cvc.g:1402:7: ( morecomparisons[expressions,operators] )?
+            	        {
+            	            int alt57=2;
+            	            switch ( LA(1) )
+            	            {
+            	                case AND_TOK:
+            	                case IFF_TOK:
+            	                case IMPLIES_TOK:
+            	                case JOIN_TOK:
+            	                case OR_TOK:
+            	                case PRODUCT_TOK:
+            	                case XOR_TOK:
+            	                	{
+            	                		alt57=1;
+            	                	}
+            	                    break;
+            	            }
+
+            	            switch (alt57)
+            	            {
+            	        	case 1:
+            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1402:7: morecomparisons[expressions,operators]
+            	        	    {
+            	        	        FOLLOWPUSH(FOLLOW_morecomparisons_in_morecomparisons4421);
+            	        	        morecomparisons(ctx, expressions, operators);
+
+            	        	        FOLLOWPOP();
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto rulemorecomparisonsEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return i;
+            	        	        }
+
+
+            	        	    }
+            	        	    break;
+
+            	            }
+            	        }
+
+            	    }
+            	    break;
+
+                }
+            }
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulemorecomparisonsEx; /* Prevent compiler warnings */
+    rulemorecomparisonsEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return i;
+}
+/* $ANTLR end morecomparisons */
+
+/**
+ * $ANTLR start nots
+ * ../../../../../../src/parser/cvc/Cvc.g:1407:1: nots returns [size_t n = 0] : ( NOT_TOK )* ;
+ */
+static size_t
+nots(pCvcParser ctx)
+{
+    size_t n;
+
+
+    /* Initialize rule variables
+     */
+    n =  0;
+
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1408:3: ( ( NOT_TOK )* )
+        // ../../../../../../src/parser/cvc/Cvc.g:1408:5: ( NOT_TOK )*
+        {
+            // ../../../../../../src/parser/cvc/Cvc.g:1408:5: ( NOT_TOK )*
+
+            for (;;)
+            {
+                int alt59=2;
+                switch ( LA(1) )
+                {
+                case NOT_TOK:
+                	{
+                		switch ( LA(2) )
+                		{
+                		case BVNEG_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case BVNEG_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case NOT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRANSPOSE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRANSCLOSURE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TUPLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVXOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVNAND_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVNOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVCOMP_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVXNOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUMINUS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVPLUS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSUB_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVMULT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUDIV_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSDIV_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUREM_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSREM_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSMOD_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSHL_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVASHR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLSHR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case SX_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVZEROEXTEND_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVREPEAT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVROTR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVROTL_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVGT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVGE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSLT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSGT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSGE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_CONCAT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_LENGTH_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_CONTAINS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_SUBSTR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_INDEXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_REPLACE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_PREFIXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_SUFFIXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOI_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_ITOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_U16TOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOU16_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_U32TOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOU32_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case SETS_CARD_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case PARENHASH:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case LBRACE:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case UNIVSET_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BAR:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case ARRAY_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRUE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case FALSE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DECIMAL_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case INTEGER_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case HEX_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BINARY_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IDENTIFIER:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case FLOOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IS_INTEGER_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case ABS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DIVISIBLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DISTINCT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case NOT_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case BVNEG_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case NOT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRANSPOSE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRANSCLOSURE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TUPLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVXOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVNAND_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVNOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVCOMP_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVXNOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUMINUS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVPLUS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSUB_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVMULT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUDIV_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSDIV_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUREM_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSREM_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSMOD_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSHL_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVASHR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLSHR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case SX_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVZEROEXTEND_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVREPEAT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVROTR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVROTL_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVGT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVGE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSLT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSGT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSGE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_CONCAT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_LENGTH_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_CONTAINS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_SUBSTR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_INDEXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_REPLACE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_PREFIXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_SUFFIXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOI_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_ITOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_U16TOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOU16_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_U32TOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOU32_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case SETS_CARD_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case PARENHASH:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case LBRACE:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case UNIVSET_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BAR:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case ARRAY_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRUE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case FALSE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DECIMAL_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case INTEGER_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case HEX_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BINARY_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case EXISTS_TOK:
+                				case FORALL_TOK:
+                				case IDENTIFIER:
+                				case LAMBDA:
+                				case LET_TOK:
+                				case MINUS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case FLOOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IS_INTEGER_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case ABS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DIVISIBLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DISTINCT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case TRANSPOSE_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case BVNEG_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case NOT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRANSPOSE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRANSCLOSURE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TUPLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVXOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVNAND_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVNOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVCOMP_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVXNOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUMINUS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVPLUS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSUB_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVMULT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUDIV_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSDIV_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUREM_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSREM_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSMOD_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSHL_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVASHR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLSHR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case SX_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVZEROEXTEND_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVREPEAT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVROTR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVROTL_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVGT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVGE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSLT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSGT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSGE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_CONCAT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_LENGTH_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_CONTAINS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_SUBSTR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_INDEXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_REPLACE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_PREFIXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_SUFFIXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOI_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_ITOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_U16TOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOU16_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_U32TOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOU32_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case SETS_CARD_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case PARENHASH:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case LBRACE:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case UNIVSET_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BAR:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case ARRAY_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRUE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case FALSE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DECIMAL_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case INTEGER_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case HEX_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BINARY_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IDENTIFIER:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case FLOOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IS_INTEGER_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case ABS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DIVISIBLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DISTINCT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case TRANSCLOSURE_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case BVNEG_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case NOT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRANSPOSE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRANSCLOSURE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TUPLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVXOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVNAND_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVNOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVCOMP_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVXNOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUMINUS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVPLUS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSUB_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVMULT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUDIV_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSDIV_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUREM_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSREM_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSMOD_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSHL_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVASHR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLSHR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case SX_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVZEROEXTEND_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVREPEAT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVROTR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVROTL_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVGT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVGE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSLT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSGT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSGE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_CONCAT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_LENGTH_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_CONTAINS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_SUBSTR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_INDEXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_REPLACE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_PREFIXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_SUFFIXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOI_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_ITOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_U16TOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOU16_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_U32TOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOU32_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case SETS_CARD_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case PARENHASH:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case LBRACE:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case UNIVSET_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BAR:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case ARRAY_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRUE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case FALSE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DECIMAL_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case INTEGER_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case HEX_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BINARY_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IDENTIFIER:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case FLOOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IS_INTEGER_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case ABS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DIVISIBLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DISTINCT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case TUPLE_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVXOR_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVNAND_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVNOR_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVCOMP_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVXNOR_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVUMINUS_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVPLUS_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVSUB_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVMULT_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVUDIV_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVSDIV_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVUREM_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVSREM_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVSMOD_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVSHL_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVASHR_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVLSHR_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case SX_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVZEROEXTEND_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVREPEAT_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVROTR_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVROTL_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVLT_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVLE_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVGT_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVGE_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVSLT_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVSLE_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVSGT_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case BVSGE_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case STRING_CONCAT_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case STRING_LENGTH_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case STRING_CONTAINS_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case STRING_SUBSTR_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case STRING_INDEXOF_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case STRING_REPLACE_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case STRING_PREFIXOF_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case STRING_SUFFIXOF_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case STRING_STOI_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case STRING_ITOS_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case STRING_U16TOS_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case STRING_STOU16_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case STRING_U32TOS_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case STRING_STOU32_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case STRING_LITERAL:
+                			{
+                				alt59=1;
+                			}
+                		    break;
+                		case SETS_CARD_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case IF_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case NOT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case FORALL_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case EXISTS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case LET_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case LAMBDA:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case MINUS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVNEG_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRANSPOSE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRANSCLOSURE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TUPLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVXOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVNAND_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVNOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVCOMP_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVXNOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUMINUS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVPLUS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSUB_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVMULT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUDIV_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSDIV_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUREM_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSREM_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSMOD_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSHL_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVASHR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLSHR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case SX_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVZEROEXTEND_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVREPEAT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVROTR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVROTL_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVGT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVGE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSLT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSGT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSGE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_CONCAT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_LENGTH_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_CONTAINS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_SUBSTR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_INDEXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_REPLACE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_PREFIXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_SUFFIXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOI_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_ITOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_U16TOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOU16_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_U32TOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOU32_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case SETS_CARD_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case PARENHASH:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case LBRACE:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case UNIVSET_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BAR:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case ARRAY_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRUE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case FALSE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DECIMAL_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case INTEGER_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case HEX_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BINARY_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IDENTIFIER:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case FLOOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IS_INTEGER_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case ABS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DIVISIBLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DISTINCT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case LPAREN:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case RPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case NOT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case FORALL_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case EXISTS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case LET_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case LAMBDA:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case MINUS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVNEG_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRANSPOSE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRANSCLOSURE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TUPLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVXOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVNAND_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVNOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVCOMP_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVXNOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUMINUS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVPLUS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSUB_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVMULT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUDIV_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSDIV_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUREM_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSREM_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSMOD_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSHL_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVASHR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLSHR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case SX_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVZEROEXTEND_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVREPEAT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVROTR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVROTL_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVGT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVGE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSLT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSGT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSGE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_CONCAT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_LENGTH_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_CONTAINS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_SUBSTR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_INDEXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_REPLACE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_PREFIXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_SUFFIXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOI_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_ITOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_U16TOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOU16_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_U32TOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOU32_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case SETS_CARD_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case PARENHASH:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case LBRACE:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case UNIVSET_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BAR:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case ARRAY_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRUE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case FALSE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DECIMAL_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case INTEGER_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case HEX_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BINARY_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IDENTIFIER:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case FLOOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IS_INTEGER_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case ABS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DIVISIBLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DISTINCT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case PARENHASH:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case HASHPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IDENTIFIER:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case LBRACE:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case RBRACE:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case NOT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case FORALL_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case EXISTS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case LET_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case LAMBDA:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case MINUS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVNEG_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRANSPOSE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRANSCLOSURE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TUPLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVXOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVNAND_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVNOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVCOMP_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVXNOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUMINUS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVPLUS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSUB_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVMULT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUDIV_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSDIV_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVUREM_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSREM_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSMOD_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSHL_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVASHR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLSHR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case SX_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVZEROEXTEND_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVREPEAT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVROTR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVROTL_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVGT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVGE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSLT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSGT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BVSGE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_CONCAT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_LENGTH_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_CONTAINS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_SUBSTR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_INDEXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_REPLACE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_PREFIXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_SUFFIXOF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOI_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_ITOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_U16TOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOU16_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_U32TOS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_STOU32_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case STRING_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case SETS_CARD_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IF_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case PARENHASH:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case LBRACE:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case UNIVSET_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BAR:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case ARRAY_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case TRUE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case FALSE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DECIMAL_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case INTEGER_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case HEX_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case BINARY_LITERAL:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IDENTIFIER:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case FLOOR_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case IS_INTEGER_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case ABS_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DIVISIBLE_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+                				case DISTINCT_TOK:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case UNIVSET_TOK:
+                			{
+                				alt59=1;
+                			}
+                		    break;
+                		case BAR:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case BAR:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case ARRAY_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case TRUE_TOK:
+                			{
+                				alt59=1;
+                			}
+                		    break;
+                		case FALSE_TOK:
+                			{
+                				alt59=1;
+                			}
+                		    break;
+                		case DECIMAL_LITERAL:
+                			{
+                				alt59=1;
+                			}
+                		    break;
+                		case INTEGER_LITERAL:
+                			{
+                				alt59=1;
+                			}
+                		    break;
+                		case HEX_LITERAL:
+                			{
+                				alt59=1;
+                			}
+                		    break;
+                		case BINARY_LITERAL:
+                			{
+                				alt59=1;
+                			}
+                		    break;
+                		case EXISTS_TOK:
+                		case FORALL_TOK:
+                		case IDENTIFIER:
+                		case LAMBDA:
+                		case LET_TOK:
+                		case MINUS_TOK:
+                			{
+                				alt59=1;
+                			}
+                		    break;
+                		case FLOOR_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case IS_INTEGER_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case ABS_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case DIVISIBLE_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case DISTINCT_TOK:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case LPAREN:
+                					{
+                						alt59=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+
+                		}
+
+                	}
+                    break;
+
+                }
+
+                switch (alt59)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1408:7: NOT_TOK
+            	    {
+            	         MATCHT(NOT_TOK, &FOLLOW_NOT_TOK_in_nots4450);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulenotsEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return n;
+            	        }
+
+
+            	        if ( BACKTRACKING==0 )
+            	        {
+            	             ++n
+            	            ; 
+            	        }
+
+
+            	    }
+            	    break;
+
+            	default:
+            	    goto loop59;	/* break out of the loop */
+            	    break;
+                }
+            }
+            loop59: ; /* Jump out to here if this rule does not match */
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulenotsEx; /* Prevent compiler warnings */
+    rulenotsEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return n;
+}
+/* $ANTLR end nots */
+
+/**
+ * $ANTLR start prefixFormula
+ * ../../../../../../src/parser/cvc/Cvc.g:1411:1: prefixFormula[CVC4::Expr& f] : ( ( FORALL_TOK | EXISTS_TOK ) LPAREN boundVarDecl[ids,t] ( COMMA boundVarDecl[ids,t] )* RPAREN COLON ( instantiationPatterns[ipl] )? formula[f] | LET_TOK letDecl ( COMMA letDecl )* IN_TOK formula[f] | LAMBDA LPAREN boundVarDeclsReturn[terms,types] RPAREN COLON formula[f] );
+ */
+static void
+prefixFormula(pCvcParser ctx, CVC4::Expr& f)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::vector<std::string> ids;
+      std::vector<Expr> terms;
+      std::vector<Type> types;
+      std::vector<Expr> bvs;
+      Type t;
+      Kind k;
+      Expr ipl;
+
+    {
+        {
+            //  ../../../../../../src/parser/cvc/Cvc.g:1422:3: ( ( FORALL_TOK | EXISTS_TOK ) LPAREN boundVarDecl[ids,t] ( COMMA boundVarDecl[ids,t] )* RPAREN COLON ( instantiationPatterns[ipl] )? formula[f] | LET_TOK letDecl ( COMMA letDecl )* IN_TOK formula[f] | LAMBDA LPAREN boundVarDeclsReturn[terms,types] RPAREN COLON formula[f] )
+
+            ANTLR3_UINT32 alt64;
+
+            alt64=3;
+
+            switch ( LA(1) )
+            {
+            case EXISTS_TOK:
+            case FORALL_TOK:
+            	{
+            		alt64=1;
+            	}
+                break;
+            case LET_TOK:
+            	{
+            		alt64=2;
+            	}
+                break;
+            case LAMBDA:
+            	{
+            		alt64=3;
+            	}
+                break;
+
+            default:
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 64;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleprefixFormulaEx;
+
+            }
+
+            switch (alt64)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1422:5: ( FORALL_TOK | EXISTS_TOK ) LPAREN boundVarDecl[ids,t] ( COMMA boundVarDecl[ids,t] )* RPAREN COLON ( instantiationPatterns[ipl] )? formula[f]
+        	    {
+        	        // ../../../../../../src/parser/cvc/Cvc.g:1422:5: ( FORALL_TOK | EXISTS_TOK )
+        	        {
+        	            int alt60=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case FORALL_TOK:
+        	            	{
+        	            		alt60=1;
+        	            	}
+        	                break;
+        	            case EXISTS_TOK:
+        	            	{
+        	            		alt60=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                if (BACKTRACKING>0)
+        	                {
+        	                    FAILEDFLAG = ANTLR3_TRUE;
+        	                    return ;
+        	                }
+
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 60;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto ruleprefixFormulaEx;
+
+        	            }
+
+        	            switch (alt60)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1422:7: FORALL_TOK
+        	        	    {
+        	        	         MATCHT(FORALL_TOK, &FOLLOW_FORALL_TOK_in_prefixFormula4482);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleprefixFormulaEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             k = kind::FORALL; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1422:42: EXISTS_TOK
+        	        	    {
+        	        	         MATCHT(EXISTS_TOK, &FOLLOW_EXISTS_TOK_in_prefixFormula4488);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleprefixFormulaEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             k = kind::EXISTS; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             PARSER_STATE->pushScope(); 
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_prefixFormula4500);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleprefixFormulaEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_boundVarDecl_in_prefixFormula4506);
+        	        boundVarDecl(ctx, ids, t);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleprefixFormulaEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             for(std::vector<std::string>::const_iterator i = ids.begin(); i != ids.end(); ++i) {
+        	                    bvs.push_back(PARSER_STATE->mkBoundVar(*i, t));
+        	                  }
+        	                  ids.clear();
+        	                
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:1430:5: ( COMMA boundVarDecl[ids,t] )*
+
+        	        for (;;)
+        	        {
+        	            int alt61=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case COMMA:
+        	            	{
+        	            		alt61=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt61)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1430:7: COMMA boundVarDecl[ids,t]
+        	        	    {
+        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_prefixFormula4521);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleprefixFormulaEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_boundVarDecl_in_prefixFormula4523);
+        	        	        boundVarDecl(ctx, ids, t);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleprefixFormulaEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+
+        	        	                    for(std::vector<std::string>::const_iterator i = ids.begin(); i != ids.end(); ++i) {
+        	        	                      bvs.push_back(PARSER_STATE->mkBoundVar(*i, t));
+        	        	                    }
+        	        	                    ids.clear();
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop61;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop61: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_prefixFormula4541);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleprefixFormulaEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+
+        	                  terms.push_back( EXPR_MANAGER->mkExpr( kind::BOUND_VAR_LIST, bvs ) ); 
+        	        }
+
+
+        	         MATCHT(COLON, &FOLLOW_COLON_in_prefixFormula4549);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleprefixFormulaEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:1439:11: ( instantiationPatterns[ipl] )?
+        	        {
+        	            int alt62=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case PATTERN_TOK:
+        	                	{
+        	                		alt62=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt62)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1439:11: instantiationPatterns[ipl]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_instantiationPatterns_in_prefixFormula4551);
+        	        	        instantiationPatterns(ctx, ipl);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleprefixFormulaEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_prefixFormula4555);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleprefixFormulaEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             PARSER_STATE->popScope();
+        	                  terms.push_back(f);
+        	                  if(! ipl.isNull()) {
+        	                    terms.push_back(ipl);
+        	                  }
+        	                  f = MK_EXPR(k, terms);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1451:5: LET_TOK letDecl ( COMMA letDecl )* IN_TOK formula[f]
+        	    {
+        	         MATCHT(LET_TOK, &FOLLOW_LET_TOK_in_prefixFormula4574);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleprefixFormulaEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             PARSER_STATE->pushScope(); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_letDecl_in_prefixFormula4582);
+        	        letDecl(ctx);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleprefixFormulaEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:1452:13: ( COMMA letDecl )*
+
+        	        for (;;)
+        	        {
+        	            int alt63=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case COMMA:
+        	            	{
+        	            		alt63=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt63)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1452:15: COMMA letDecl
+        	        	    {
+        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_prefixFormula4586);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleprefixFormulaEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_letDecl_in_prefixFormula4588);
+        	        	        letDecl(ctx);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleprefixFormulaEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop63;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop63: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(IN_TOK, &FOLLOW_IN_TOK_in_prefixFormula4597);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleprefixFormulaEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_prefixFormula4599);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleprefixFormulaEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             PARSER_STATE->popScope(); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1456:5: LAMBDA LPAREN boundVarDeclsReturn[terms,types] RPAREN COLON formula[f]
+        	    {
+        	         MATCHT(LAMBDA, &FOLLOW_LAMBDA_in_prefixFormula4614);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleprefixFormulaEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             PARSER_STATE->pushScope(); 
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_prefixFormula4618);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleprefixFormulaEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_boundVarDeclsReturn_in_prefixFormula4624);
+        	        boundVarDeclsReturn(ctx, terms, types);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleprefixFormulaEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_prefixFormula4631);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleprefixFormulaEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COLON, &FOLLOW_COLON_in_prefixFormula4633);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleprefixFormulaEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_prefixFormula4635);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleprefixFormulaEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             PARSER_STATE->popScope();
+        	                  Type t = EXPR_MANAGER->mkFunctionType(types, f.getType());
+        	                  std::string name = "lambda";
+        	                  Expr func = PARSER_STATE->mkAnonymousFunction(name, t, ExprManager::VAR_FLAG_DEFINED);
+        	                  Command* cmd = new DefineFunctionCommand(name, func, terms, f);
+        	                  PARSER_STATE->preemptCommand(cmd);
+        	                  f = func;
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleprefixFormulaEx; /* Prevent compiler warnings */
+    ruleprefixFormulaEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end prefixFormula */
+
+/**
+ * $ANTLR start instantiationPatterns
+ * ../../../../../../src/parser/cvc/Cvc.g:1469:1: instantiationPatterns[ CVC4::Expr& expr ] : ( PATTERN_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN COLON )+ ;
+ */
+static void
+instantiationPatterns(pCvcParser ctx, CVC4::Expr& expr)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::vector<Expr> args;
+      Expr f;
+      std::vector<Expr> patterns;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1475:3: ( ( PATTERN_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN COLON )+ )
+        // ../../../../../../src/parser/cvc/Cvc.g:1475:5: ( PATTERN_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN COLON )+
+        {
+            // ../../../../../../src/parser/cvc/Cvc.g:1475:5: ( PATTERN_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN COLON )+
+            {
+                int cnt66=0;
+
+                for (;;)
+                {
+                    int alt66=2;
+            	switch ( LA(1) )
+            	{
+            	case PATTERN_TOK:
+            		{
+            			alt66=1;
+            		}
+            	    break;
+
+            	}
+
+            	switch (alt66)
+            	{
+            	    case 1:
+            	        // ../../../../../../src/parser/cvc/Cvc.g:1475:7: PATTERN_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN COLON
+            	        {
+            	             MATCHT(PATTERN_TOK, &FOLLOW_PATTERN_TOK_in_instantiationPatterns4663);
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto ruleinstantiationPatternsEx;
+            	            }
+            	            if (HASFAILED())
+            	            {
+            	                return ;
+            	            }
+
+
+            	             MATCHT(LPAREN, &FOLLOW_LPAREN_in_instantiationPatterns4665);
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto ruleinstantiationPatternsEx;
+            	            }
+            	            if (HASFAILED())
+            	            {
+            	                return ;
+            	            }
+
+
+            	            FOLLOWPUSH(FOLLOW_formula_in_instantiationPatterns4667);
+            	            formula(ctx, f);
+
+            	            FOLLOWPOP();
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto ruleinstantiationPatternsEx;
+            	            }
+            	            if (HASFAILED())
+            	            {
+            	                return ;
+            	            }
+
+
+            	            if ( BACKTRACKING==0 )
+            	            {
+            	                 args.push_back( f ); 
+            	            }
+
+
+            	            // ../../../../../../src/parser/cvc/Cvc.g:1475:62: ( COMMA formula[f] )*
+
+            	            for (;;)
+            	            {
+            	                int alt65=2;
+            	                switch ( LA(1) )
+            	                {
+            	                case COMMA:
+            	                	{
+            	                		alt65=1;
+            	                	}
+            	                    break;
+
+            	                }
+
+            	                switch (alt65)
+            	                {
+            	            	case 1:
+            	            	    // ../../../../../../src/parser/cvc/Cvc.g:1475:63: COMMA formula[f]
+            	            	    {
+            	            	         MATCHT(COMMA, &FOLLOW_COMMA_in_instantiationPatterns4673);
+            	            	        if  (HASEXCEPTION())
+            	            	        {
+            	            	            goto ruleinstantiationPatternsEx;
+            	            	        }
+            	            	        if (HASFAILED())
+            	            	        {
+            	            	            return ;
+            	            	        }
+
+
+            	            	        FOLLOWPUSH(FOLLOW_formula_in_instantiationPatterns4675);
+            	            	        formula(ctx, f);
+
+            	            	        FOLLOWPOP();
+            	            	        if  (HASEXCEPTION())
+            	            	        {
+            	            	            goto ruleinstantiationPatternsEx;
+            	            	        }
+            	            	        if (HASFAILED())
+            	            	        {
+            	            	            return ;
+            	            	        }
+
+
+            	            	        if ( BACKTRACKING==0 )
+            	            	        {
+            	            	             args.push_back( f ); 
+            	            	        }
+
+
+            	            	    }
+            	            	    break;
+
+            	            	default:
+            	            	    goto loop65;	/* break out of the loop */
+            	            	    break;
+            	                }
+            	            }
+            	            loop65: ; /* Jump out to here if this rule does not match */
+
+
+            	             MATCHT(RPAREN, &FOLLOW_RPAREN_in_instantiationPatterns4683);
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto ruleinstantiationPatternsEx;
+            	            }
+            	            if (HASFAILED())
+            	            {
+            	                return ;
+            	            }
+
+
+            	             MATCHT(COLON, &FOLLOW_COLON_in_instantiationPatterns4685);
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto ruleinstantiationPatternsEx;
+            	            }
+            	            if (HASFAILED())
+            	            {
+            	                return ;
+            	            }
+
+
+            	            if ( BACKTRACKING==0 )
+            	            {
+            	                 patterns.push_back( EXPR_MANAGER->mkExpr( kind::INST_PATTERN, args ) );
+            	                        args.clear();
+            	                      
+            	            }
+
+
+            	        }
+            	        break;
+
+            	    default:
+
+            		if ( cnt66 >= 1 )
+            		{
+            		    goto loop66;
+            		}
+            		if (BACKTRACKING>0)
+            		{
+            		    FAILEDFLAG = ANTLR3_TRUE;
+            		    return ;
+            		}
+
+            		/* mismatchedSetEx()
+            		 */
+            		CONSTRUCTEX();
+            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+            		goto ruleinstantiationPatternsEx;
+            	}
+            	cnt66++;
+                }
+                loop66: ;	/* Jump to here if this rule does not match */
+            }
+
+            if ( BACKTRACKING==0 )
+            {
+                 if(! patterns.empty()) {
+                       expr = EXPR_MANAGER->mkExpr( kind::INST_PATTERN_LIST, patterns );
+                       }
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleinstantiationPatternsEx; /* Prevent compiler warnings */
+    ruleinstantiationPatternsEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end instantiationPatterns */
+
+/**
+ * $ANTLR start letDecl
+ * ../../../../../../src/parser/cvc/Cvc.g:1488:1: letDecl : identifier[name,CHECK_NONE,SYM_VARIABLE] EQUAL_TOK formula[e] ;
+ */
+static void
+letDecl(pCvcParser ctx)
+{
+    /* Initialize rule variables
+     */
+
+
+      Expr e;
+      std::string name;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1493:3: ( identifier[name,CHECK_NONE,SYM_VARIABLE] EQUAL_TOK formula[e] )
+        // ../../../../../../src/parser/cvc/Cvc.g:1493:5: identifier[name,CHECK_NONE,SYM_VARIABLE] EQUAL_TOK formula[e]
+        {
+            FOLLOWPUSH(FOLLOW_identifier_in_letDecl4722);
+            identifier(ctx, name, CHECK_NONE, SYM_VARIABLE);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleletDeclEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+             MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_letDecl4725);
+            if  (HASEXCEPTION())
+            {
+                goto ruleletDeclEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_formula_in_letDecl4727);
+            formula(ctx, e);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleletDeclEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 Debug("parser") << language::SetLanguage(language::output::LANG_CVC4) << e.getType() << std::endl;
+                      PARSER_STATE->defineVar(name, e);
+                      Debug("parser") << "LET[" << PARSER_STATE->scopeLevel() << "]: "
+                                      << name << std::endl
+                                      << " ==>" << " " << e << std::endl;
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleletDeclEx; /* Prevent compiler warnings */
+    ruleletDeclEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end letDecl */
+
+/**
+ * $ANTLR start booleanBinop
+ * ../../../../../../src/parser/cvc/Cvc.g:1502:1: booleanBinop[unsigned& op] : ( IFF_TOK | IMPLIES_TOK | OR_TOK | XOR_TOK | AND_TOK | JOIN_TOK | PRODUCT_TOK );
+ */
+static void
+booleanBinop(pCvcParser ctx, unsigned& op)
+{
+    /* Initialize rule variables
+     */
+
+
+      op = LT(1)->getType(LT(1));
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1506:3: ( IFF_TOK | IMPLIES_TOK | OR_TOK | XOR_TOK | AND_TOK | JOIN_TOK | PRODUCT_TOK )
+        // ../../../../../../src/parser/cvc/Cvc.g:
+        {
+            if ( LA(1) == AND_TOK || LA(1) == IFF_TOK || LA(1) == IMPLIES_TOK || LA(1) == JOIN_TOK || LA(1) == OR_TOK || LA(1) == PRODUCT_TOK || LA(1) == XOR_TOK )
+            {
+                CONSUME();
+                PERRORRECOVERY=ANTLR3_FALSE;
+                FAILEDFLAG=ANTLR3_FALSE;
+
+            }
+            else
+            {
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+                EXCEPTION->expectingSet = NULL;
+
+                goto rulebooleanBinopEx;
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulebooleanBinopEx; /* Prevent compiler warnings */
+    rulebooleanBinopEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end booleanBinop */
+
+/**
+ * $ANTLR start comparison
+ * ../../../../../../src/parser/cvc/Cvc.g:1515:1: comparison[CVC4::Expr& f] : term[f] ( comparisonBinop[op] term[f] )* ;
+ */
+static void
+comparison(pCvcParser ctx, CVC4::Expr& f)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::vector<CVC4::Expr> expressions;
+      std::vector<unsigned> operators;
+      unsigned op;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1521:3: ( term[f] ( comparisonBinop[op] term[f] )* )
+        // ../../../../../../src/parser/cvc/Cvc.g:1521:5: term[f] ( comparisonBinop[op] term[f] )*
+        {
+            FOLLOWPUSH(FOLLOW_term_in_comparison4808);
+            term(ctx, f);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulecomparisonEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 expressions.push_back(f); 
+            }
+
+
+            // ../../../../../../src/parser/cvc/Cvc.g:1522:5: ( comparisonBinop[op] term[f] )*
+
+            for (;;)
+            {
+                int alt67=2;
+                switch ( LA(1) )
+                {
+                case DISEQUAL_TOK:
+                case EQUAL_TOK:
+                case FMF_CARD_TOK:
+                case GEQ_TOK:
+                case GT_TOK:
+                case LEQ_TOK:
+                case LT_TOK:
+                case MEMBER_TOK:
+                	{
+                		alt67=1;
+                	}
+                    break;
+
+                }
+
+                switch (alt67)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1522:7: comparisonBinop[op] term[f]
+            	    {
+            	        FOLLOWPUSH(FOLLOW_comparisonBinop_in_comparison4819);
+            	        comparisonBinop(ctx, op);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulecomparisonEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_term_in_comparison4822);
+            	        term(ctx, f);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulecomparisonEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        if ( BACKTRACKING==0 )
+            	        {
+            	             operators.push_back(op); expressions.push_back(f); 
+            	        }
+
+
+            	    }
+            	    break;
+
+            	default:
+            	    goto loop67;	/* break out of the loop */
+            	    break;
+                }
+            }
+            loop67: ; /* Jump out to here if this rule does not match */
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 f = createPrecedenceTree(PARSER_STATE, EXPR_MANAGER, expressions, operators); 
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulecomparisonEx; /* Prevent compiler warnings */
+    rulecomparisonEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end comparison */
+
+/**
+ * $ANTLR start comparisonBinop
+ * ../../../../../../src/parser/cvc/Cvc.g:1527:1: comparisonBinop[unsigned& op] : ( EQUAL_TOK | DISEQUAL_TOK | GT_TOK | GEQ_TOK | LT_TOK | LEQ_TOK | MEMBER_TOK | FMF_CARD_TOK );
+ */
+static void
+comparisonBinop(pCvcParser ctx, unsigned& op)
+{
+    /* Initialize rule variables
+     */
+
+
+      op = LT(1)->getType(LT(1));
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1531:3: ( EQUAL_TOK | DISEQUAL_TOK | GT_TOK | GEQ_TOK | LT_TOK | LEQ_TOK | MEMBER_TOK | FMF_CARD_TOK )
+        // ../../../../../../src/parser/cvc/Cvc.g:
+        {
+            if ( LA(1) == DISEQUAL_TOK || LA(1) == EQUAL_TOK || LA(1) == FMF_CARD_TOK || LA(1) == GEQ_TOK || LA(1) == GT_TOK || LA(1) == LEQ_TOK || ((LA(1) >= LT_TOK) && (LA(1) <= MEMBER_TOK)) )
+            {
+                CONSUME();
+                PERRORRECOVERY=ANTLR3_FALSE;
+                FAILEDFLAG=ANTLR3_FALSE;
+
+            }
+            else
+            {
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+                EXCEPTION->expectingSet = NULL;
+
+                goto rulecomparisonBinopEx;
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulecomparisonBinopEx; /* Prevent compiler warnings */
+    rulecomparisonBinopEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end comparisonBinop */
+
+/**
+ * $ANTLR start arithmeticBinop
+ * ../../../../../../src/parser/cvc/Cvc.g:1541:1: arithmeticBinop[unsigned& op] : ( PLUS_TOK | MINUS_TOK | STAR_TOK | INTDIV_TOK | MOD_TOK | DIV_TOK | EXP_TOK );
+ */
+static void
+arithmeticBinop(pCvcParser ctx, unsigned& op)
+{
+    /* Initialize rule variables
+     */
+
+
+      op = LT(1)->getType(LT(1));
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1545:3: ( PLUS_TOK | MINUS_TOK | STAR_TOK | INTDIV_TOK | MOD_TOK | DIV_TOK | EXP_TOK )
+        // ../../../../../../src/parser/cvc/Cvc.g:
+        {
+            if ( LA(1) == DIV_TOK || LA(1) == EXP_TOK || LA(1) == INTDIV_TOK || ((LA(1) >= MINUS_TOK) && (LA(1) <= MOD_TOK)) || LA(1) == PLUS_TOK || LA(1) == STAR_TOK )
+            {
+                CONSUME();
+                PERRORRECOVERY=ANTLR3_FALSE;
+                FAILEDFLAG=ANTLR3_FALSE;
+
+            }
+            else
+            {
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+                EXCEPTION->expectingSet = NULL;
+
+                goto rulearithmeticBinopEx;
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulearithmeticBinopEx; /* Prevent compiler warnings */
+    rulearithmeticBinopEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end arithmeticBinop */
+
+/**
+ * $ANTLR start term
+ * ../../../../../../src/parser/cvc/Cvc.g:1555:1: term[CVC4::Expr& f] : uminusTerm[f] ( WITH_TOK ( arrayStore[f] ( COMMA arrayStore[f] )* | DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* ) ) | ( arithmeticBinop[op] uminusTerm[f] )* ) ;
+ */
+static void
+term(pCvcParser ctx, CVC4::Expr& f)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::vector<CVC4::Expr> expressions;
+      std::vector<unsigned> operators;
+      unsigned op;
+      Type t;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1562:3: ( uminusTerm[f] ( WITH_TOK ( arrayStore[f] ( COMMA arrayStore[f] )* | DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* ) ) | ( arithmeticBinop[op] uminusTerm[f] )* ) )
+        // ../../../../../../src/parser/cvc/Cvc.g:1562:5: uminusTerm[f] ( WITH_TOK ( arrayStore[f] ( COMMA arrayStore[f] )* | DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* ) ) | ( arithmeticBinop[op] uminusTerm[f] )* )
+        {
+            FOLLOWPUSH(FOLLOW_uminusTerm_in_term4977);
+            uminusTerm(ctx, f);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruletermEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            // ../../../../../../src/parser/cvc/Cvc.g:1563:5: ( WITH_TOK ( arrayStore[f] ( COMMA arrayStore[f] )* | DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* ) ) | ( arithmeticBinop[op] uminusTerm[f] )* )
+            {
+                int alt74=2;
+                switch ( LA(1) )
+                {
+                case WITH_TOK:
+                	{
+                		alt74=1;
+                	}
+                    break;
+                case EOF:
+                case AND_TOK:
+                case BAR:
+                case COLON:
+                case COMMA:
+                case DISEQUAL_TOK:
+                case DIV_TOK:
+                case ELSEIF_TOK:
+                case ELSE_TOK:
+                case ENDIF_TOK:
+                case EQUAL_TOK:
+                case EXP_TOK:
+                case FMF_CARD_TOK:
+                case GEQ_TOK:
+                case GT_TOK:
+                case HASHPAREN:
+                case IFF_TOK:
+                case IMPLIES_TOK:
+                case INTDIV_TOK:
+                case INTEGER_LITERAL:
+                case IN_TOK:
+                case JOIN_TOK:
+                case LBRACKET:
+                case LEQ_TOK:
+                case LT_TOK:
+                case MEMBER_TOK:
+                case MINUS_TOK:
+                case MOD_TOK:
+                case OR_TOK:
+                case PLUS_TOK:
+                case PRODUCT_TOK:
+                case RBRACE:
+                case RBRACKET:
+                case RPAREN:
+                case SEMICOLON:
+                case STAR_TOK:
+                case THEN_TOK:
+                case XOR_TOK:
+                	{
+                		alt74=2;
+                	}
+                    break;
+
+                default:
+                    if (BACKTRACKING>0)
+                    {
+                        FAILEDFLAG = ANTLR3_TRUE;
+                        return ;
+                    }
+
+                    CONSTRUCTEX();
+                    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                    EXCEPTION->message      = (void *)"";
+                    EXCEPTION->decisionNum  = 74;
+                    EXCEPTION->state        = 0;
+
+
+                    goto ruletermEx;
+
+                }
+
+                switch (alt74)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1563:7: WITH_TOK ( arrayStore[f] ( COMMA arrayStore[f] )* | DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* ) )
+            	    {
+            	         MATCHT(WITH_TOK, &FOLLOW_WITH_TOK_in_term4986);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        // ../../../../../../src/parser/cvc/Cvc.g:1564:7: ( arrayStore[f] ( COMMA arrayStore[f] )* | DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* ) )
+            	        {
+            	            int alt72=2;
+            	            switch ( LA(1) )
+            	            {
+            	            case LBRACKET:
+            	            	{
+            	            		alt72=1;
+            	            	}
+            	                break;
+            	            case DOT:
+            	            	{
+            	            		alt72=2;
+            	            	}
+            	                break;
+
+            	            default:
+            	                if (BACKTRACKING>0)
+            	                {
+            	                    FAILEDFLAG = ANTLR3_TRUE;
+            	                    return ;
+            	                }
+
+            	                CONSTRUCTEX();
+            	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            	                EXCEPTION->message      = (void *)"";
+            	                EXCEPTION->decisionNum  = 72;
+            	                EXCEPTION->state        = 0;
+
+
+            	                goto ruletermEx;
+
+            	            }
+
+            	            switch (alt72)
+            	            {
+            	        	case 1:
+            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1564:9: arrayStore[f] ( COMMA arrayStore[f] )*
+            	        	    {
+            	        	        FOLLOWPUSH(FOLLOW_arrayStore_in_term4996);
+            	        	        arrayStore(ctx, f);
+
+            	        	        FOLLOWPOP();
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto ruletermEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	        // ../../../../../../src/parser/cvc/Cvc.g:1564:23: ( COMMA arrayStore[f] )*
+
+            	        	        for (;;)
+            	        	        {
+            	        	            int alt68=2;
+            	        	            switch ( LA(1) )
+            	        	            {
+            	        	            case COMMA:
+            	        	            	{
+            	        	            		alt68=1;
+            	        	            	}
+            	        	                break;
+
+            	        	            }
+
+            	        	            switch (alt68)
+            	        	            {
+            	        	        	case 1:
+            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1564:25: COMMA arrayStore[f]
+            	        	        	    {
+            	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_term5001);
+            	        	        	        if  (HASEXCEPTION())
+            	        	        	        {
+            	        	        	            goto ruletermEx;
+            	        	        	        }
+            	        	        	        if (HASFAILED())
+            	        	        	        {
+            	        	        	            return ;
+            	        	        	        }
+
+
+            	        	        	        FOLLOWPUSH(FOLLOW_arrayStore_in_term5003);
+            	        	        	        arrayStore(ctx, f);
+
+            	        	        	        FOLLOWPOP();
+            	        	        	        if  (HASEXCEPTION())
+            	        	        	        {
+            	        	        	            goto ruletermEx;
+            	        	        	        }
+            	        	        	        if (HASFAILED())
+            	        	        	        {
+            	        	        	            return ;
+            	        	        	        }
+
+
+            	        	        	    }
+            	        	        	    break;
+
+            	        	        	default:
+            	        	        	    goto loop68;	/* break out of the loop */
+            	        	        	    break;
+            	        	            }
+            	        	        }
+            	        	        loop68: ; /* Jump out to here if this rule does not match */
+
+
+            	        	    }
+            	        	    break;
+            	        	case 2:
+            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1565:9: DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* )
+            	        	    {
+            	        	         MATCHT(DOT, &FOLLOW_DOT_in_term5017);
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto ruletermEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	        // ../../../../../../src/parser/cvc/Cvc.g:1565:13: ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* )
+            	        	        {
+            	        	            int alt71=2;
+            	        	            switch ( LA(1) )
+            	        	            {
+            	        	            case INTEGER_LITERAL:
+            	        	            	{
+            	        	            		alt71=1;
+            	        	            	}
+            	        	                break;
+            	        	            case IDENTIFIER:
+            	        	            	{
+            	        	            		alt71=2;
+            	        	            	}
+            	        	                break;
+
+            	        	            default:
+            	        	                if (BACKTRACKING>0)
+            	        	                {
+            	        	                    FAILEDFLAG = ANTLR3_TRUE;
+            	        	                    return ;
+            	        	                }
+
+            	        	                CONSTRUCTEX();
+            	        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            	        	                EXCEPTION->message      = (void *)"";
+            	        	                EXCEPTION->decisionNum  = 71;
+            	        	                EXCEPTION->state        = 0;
+
+
+            	        	                goto ruletermEx;
+
+            	        	            }
+
+            	        	            switch (alt71)
+            	        	            {
+            	        	        	case 1:
+            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1565:15: tupleStore[f] ( COMMA DOT tupleStore[f] )*
+            	        	        	    {
+            	        	        	        FOLLOWPUSH(FOLLOW_tupleStore_in_term5021);
+            	        	        	        tupleStore(ctx, f);
+
+            	        	        	        FOLLOWPOP();
+            	        	        	        if  (HASEXCEPTION())
+            	        	        	        {
+            	        	        	            goto ruletermEx;
+            	        	        	        }
+            	        	        	        if (HASFAILED())
+            	        	        	        {
+            	        	        	            return ;
+            	        	        	        }
+
+
+            	        	        	        // ../../../../../../src/parser/cvc/Cvc.g:1565:29: ( COMMA DOT tupleStore[f] )*
+
+            	        	        	        for (;;)
+            	        	        	        {
+            	        	        	            int alt69=2;
+            	        	        	            switch ( LA(1) )
+            	        	        	            {
+            	        	        	            case COMMA:
+            	        	        	            	{
+            	        	        	            		alt69=1;
+            	        	        	            	}
+            	        	        	                break;
+
+            	        	        	            }
+
+            	        	        	            switch (alt69)
+            	        	        	            {
+            	        	        	        	case 1:
+            	        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1565:31: COMMA DOT tupleStore[f]
+            	        	        	        	    {
+            	        	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_term5026);
+            	        	        	        	        if  (HASEXCEPTION())
+            	        	        	        	        {
+            	        	        	        	            goto ruletermEx;
+            	        	        	        	        }
+            	        	        	        	        if (HASFAILED())
+            	        	        	        	        {
+            	        	        	        	            return ;
+            	        	        	        	        }
+
+
+            	        	        	        	         MATCHT(DOT, &FOLLOW_DOT_in_term5028);
+            	        	        	        	        if  (HASEXCEPTION())
+            	        	        	        	        {
+            	        	        	        	            goto ruletermEx;
+            	        	        	        	        }
+            	        	        	        	        if (HASFAILED())
+            	        	        	        	        {
+            	        	        	        	            return ;
+            	        	        	        	        }
+
+
+            	        	        	        	        FOLLOWPUSH(FOLLOW_tupleStore_in_term5030);
+            	        	        	        	        tupleStore(ctx, f);
+
+            	        	        	        	        FOLLOWPOP();
+            	        	        	        	        if  (HASEXCEPTION())
+            	        	        	        	        {
+            	        	        	        	            goto ruletermEx;
+            	        	        	        	        }
+            	        	        	        	        if (HASFAILED())
+            	        	        	        	        {
+            	        	        	        	            return ;
+            	        	        	        	        }
+
+
+            	        	        	        	    }
+            	        	        	        	    break;
+
+            	        	        	        	default:
+            	        	        	        	    goto loop69;	/* break out of the loop */
+            	        	        	        	    break;
+            	        	        	            }
+            	        	        	        }
+            	        	        	        loop69: ; /* Jump out to here if this rule does not match */
+
+
+            	        	        	    }
+            	        	        	    break;
+            	        	        	case 2:
+            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1566:15: recordStore[f] ( COMMA DOT recordStore[f] )*
+            	        	        	    {
+            	        	        	        FOLLOWPUSH(FOLLOW_recordStore_in_term5050);
+            	        	        	        recordStore(ctx, f);
+
+            	        	        	        FOLLOWPOP();
+            	        	        	        if  (HASEXCEPTION())
+            	        	        	        {
+            	        	        	            goto ruletermEx;
+            	        	        	        }
+            	        	        	        if (HASFAILED())
+            	        	        	        {
+            	        	        	            return ;
+            	        	        	        }
+
+
+            	        	        	        // ../../../../../../src/parser/cvc/Cvc.g:1566:30: ( COMMA DOT recordStore[f] )*
+
+            	        	        	        for (;;)
+            	        	        	        {
+            	        	        	            int alt70=2;
+            	        	        	            switch ( LA(1) )
+            	        	        	            {
+            	        	        	            case COMMA:
+            	        	        	            	{
+            	        	        	            		alt70=1;
+            	        	        	            	}
+            	        	        	                break;
+
+            	        	        	            }
+
+            	        	        	            switch (alt70)
+            	        	        	            {
+            	        	        	        	case 1:
+            	        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1566:32: COMMA DOT recordStore[f]
+            	        	        	        	    {
+            	        	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_term5055);
+            	        	        	        	        if  (HASEXCEPTION())
+            	        	        	        	        {
+            	        	        	        	            goto ruletermEx;
+            	        	        	        	        }
+            	        	        	        	        if (HASFAILED())
+            	        	        	        	        {
+            	        	        	        	            return ;
+            	        	        	        	        }
+
+
+            	        	        	        	         MATCHT(DOT, &FOLLOW_DOT_in_term5057);
+            	        	        	        	        if  (HASEXCEPTION())
+            	        	        	        	        {
+            	        	        	        	            goto ruletermEx;
+            	        	        	        	        }
+            	        	        	        	        if (HASFAILED())
+            	        	        	        	        {
+            	        	        	        	            return ;
+            	        	        	        	        }
+
+
+            	        	        	        	        FOLLOWPUSH(FOLLOW_recordStore_in_term5059);
+            	        	        	        	        recordStore(ctx, f);
+
+            	        	        	        	        FOLLOWPOP();
+            	        	        	        	        if  (HASEXCEPTION())
+            	        	        	        	        {
+            	        	        	        	            goto ruletermEx;
+            	        	        	        	        }
+            	        	        	        	        if (HASFAILED())
+            	        	        	        	        {
+            	        	        	        	            return ;
+            	        	        	        	        }
+
+
+            	        	        	        	    }
+            	        	        	        	    break;
+
+            	        	        	        	default:
+            	        	        	        	    goto loop70;	/* break out of the loop */
+            	        	        	        	    break;
+            	        	        	            }
+            	        	        	        }
+            	        	        	        loop70: ; /* Jump out to here if this rule does not match */
+
+
+            	        	        	    }
+            	        	        	    break;
+
+            	        	            }
+            	        	        }
+
+            	        	    }
+            	        	    break;
+
+            	            }
+            	        }
+
+            	    }
+            	    break;
+            	case 2:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1567:7: ( arithmeticBinop[op] uminusTerm[f] )*
+            	    {
+            	        if ( BACKTRACKING==0 )
+            	        {
+            	             expressions.push_back(f); 
+            	        }
+
+
+            	        // ../../../../../../src/parser/cvc/Cvc.g:1568:7: ( arithmeticBinop[op] uminusTerm[f] )*
+
+            	        for (;;)
+            	        {
+            	            int alt73=2;
+            	            switch ( LA(1) )
+            	            {
+            	            case DIV_TOK:
+            	            case EXP_TOK:
+            	            case INTDIV_TOK:
+            	            case MINUS_TOK:
+            	            case MOD_TOK:
+            	            case PLUS_TOK:
+            	            case STAR_TOK:
+            	            	{
+            	            		alt73=1;
+            	            	}
+            	                break;
+
+            	            }
+
+            	            switch (alt73)
+            	            {
+            	        	case 1:
+            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1568:9: arithmeticBinop[op] uminusTerm[f]
+            	        	    {
+            	        	        FOLLOWPUSH(FOLLOW_arithmeticBinop_in_term5085);
+            	        	        arithmeticBinop(ctx, op);
+
+            	        	        FOLLOWPOP();
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto ruletermEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	        FOLLOWPUSH(FOLLOW_uminusTerm_in_term5088);
+            	        	        uminusTerm(ctx, f);
+
+            	        	        FOLLOWPOP();
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto ruletermEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	        if ( BACKTRACKING==0 )
+            	        	        {
+            	        	             operators.push_back(op); expressions.push_back(f); 
+            	        	        }
+
+
+            	        	    }
+            	        	    break;
+
+            	        	default:
+            	        	    goto loop73;	/* break out of the loop */
+            	        	    break;
+            	            }
+            	        }
+            	        loop73: ; /* Jump out to here if this rule does not match */
+
+
+            	        if ( BACKTRACKING==0 )
+            	        {
+            	             f = createPrecedenceTree(PARSER_STATE, EXPR_MANAGER, expressions, operators); 
+            	        }
+
+
+            	    }
+            	    break;
+
+                }
+            }
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletermEx; /* Prevent compiler warnings */
+    ruletermEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end term */
+
+/**
+ * $ANTLR start arrayStore
+ * ../../../../../../src/parser/cvc/Cvc.g:1577:1: arrayStore[CVC4::Expr& f] : LBRACKET formula[k] RBRACKET ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] ) ;
+ */
+static void
+arrayStore(pCvcParser ctx, CVC4::Expr& f)
+{
+    /* Initialize rule variables
+     */
+
+
+      Expr f2, k;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1581:3: ( LBRACKET formula[k] RBRACKET ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] ) )
+        // ../../../../../../src/parser/cvc/Cvc.g:1581:5: LBRACKET formula[k] RBRACKET ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] )
+        {
+             MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_arrayStore5129);
+            if  (HASEXCEPTION())
+            {
+                goto rulearrayStoreEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_formula_in_arrayStore5131);
+            formula(ctx, k);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulearrayStoreEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+             MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_arrayStore5134);
+            if  (HASEXCEPTION())
+            {
+                goto rulearrayStoreEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 f2 = MK_EXPR(CVC4::kind::SELECT, f, k); 
+            }
+
+
+            // ../../../../../../src/parser/cvc/Cvc.g:1583:5: ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] )
+            {
+                int alt77=2;
+                switch ( LA(1) )
+                {
+                case DOT:
+                case LBRACKET:
+                	{
+                		alt77=1;
+                	}
+                    break;
+                case ASSIGN_TOK:
+                	{
+                		alt77=2;
+                	}
+                    break;
+
+                default:
+                    if (BACKTRACKING>0)
+                    {
+                        FAILEDFLAG = ANTLR3_TRUE;
+                        return ;
+                    }
+
+                    CONSTRUCTEX();
+                    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                    EXCEPTION->message      = (void *)"";
+                    EXCEPTION->decisionNum  = 77;
+                    EXCEPTION->state        = 0;
+
+
+                    goto rulearrayStoreEx;
+
+                }
+
+                switch (alt77)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1583:7: ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) )
+            	    {
+            	        // ../../../../../../src/parser/cvc/Cvc.g:1583:7: ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) )
+            	        {
+            	            int alt76=2;
+            	            switch ( LA(1) )
+            	            {
+            	            case LBRACKET:
+            	            	{
+            	            		alt76=1;
+            	            	}
+            	                break;
+            	            case DOT:
+            	            	{
+            	            		alt76=2;
+            	            	}
+            	                break;
+
+            	            default:
+            	                if (BACKTRACKING>0)
+            	                {
+            	                    FAILEDFLAG = ANTLR3_TRUE;
+            	                    return ;
+            	                }
+
+            	                CONSTRUCTEX();
+            	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            	                EXCEPTION->message      = (void *)"";
+            	                EXCEPTION->decisionNum  = 76;
+            	                EXCEPTION->state        = 0;
+
+
+            	                goto rulearrayStoreEx;
+
+            	            }
+
+            	            switch (alt76)
+            	            {
+            	        	case 1:
+            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1583:9: arrayStore[f2]
+            	        	    {
+            	        	        FOLLOWPUSH(FOLLOW_arrayStore_in_arrayStore5150);
+            	        	        arrayStore(ctx, f2);
+
+            	        	        FOLLOWPOP();
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto rulearrayStoreEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	    }
+            	        	    break;
+            	        	case 2:
+            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1584:9: DOT ( tupleStore[f2] | recordStore[f2] )
+            	        	    {
+            	        	         MATCHT(DOT, &FOLLOW_DOT_in_arrayStore5161);
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto rulearrayStoreEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	        // ../../../../../../src/parser/cvc/Cvc.g:1584:13: ( tupleStore[f2] | recordStore[f2] )
+            	        	        {
+            	        	            int alt75=2;
+            	        	            switch ( LA(1) )
+            	        	            {
+            	        	            case INTEGER_LITERAL:
+            	        	            	{
+            	        	            		alt75=1;
+            	        	            	}
+            	        	                break;
+            	        	            case IDENTIFIER:
+            	        	            	{
+            	        	            		alt75=2;
+            	        	            	}
+            	        	                break;
+
+            	        	            default:
+            	        	                if (BACKTRACKING>0)
+            	        	                {
+            	        	                    FAILEDFLAG = ANTLR3_TRUE;
+            	        	                    return ;
+            	        	                }
+
+            	        	                CONSTRUCTEX();
+            	        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            	        	                EXCEPTION->message      = (void *)"";
+            	        	                EXCEPTION->decisionNum  = 75;
+            	        	                EXCEPTION->state        = 0;
+
+
+            	        	                goto rulearrayStoreEx;
+
+            	        	            }
+
+            	        	            switch (alt75)
+            	        	            {
+            	        	        	case 1:
+            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1584:15: tupleStore[f2]
+            	        	        	    {
+            	        	        	        FOLLOWPUSH(FOLLOW_tupleStore_in_arrayStore5165);
+            	        	        	        tupleStore(ctx, f2);
+
+            	        	        	        FOLLOWPOP();
+            	        	        	        if  (HASEXCEPTION())
+            	        	        	        {
+            	        	        	            goto rulearrayStoreEx;
+            	        	        	        }
+            	        	        	        if (HASFAILED())
+            	        	        	        {
+            	        	        	            return ;
+            	        	        	        }
+
+
+            	        	        	    }
+            	        	        	    break;
+            	        	        	case 2:
+            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1585:15: recordStore[f2]
+            	        	        	    {
+            	        	        	        FOLLOWPUSH(FOLLOW_recordStore_in_arrayStore5182);
+            	        	        	        recordStore(ctx, f2);
+
+            	        	        	        FOLLOWPOP();
+            	        	        	        if  (HASEXCEPTION())
+            	        	        	        {
+            	        	        	            goto rulearrayStoreEx;
+            	        	        	        }
+            	        	        	        if (HASFAILED())
+            	        	        	        {
+            	        	        	            return ;
+            	        	        	        }
+
+
+            	        	        	    }
+            	        	        	    break;
+
+            	        	            }
+            	        	        }
+
+            	        	    }
+            	        	    break;
+
+            	            }
+            	        }
+
+            	    }
+            	    break;
+            	case 2:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1586:7: ASSIGN_TOK term[f2]
+            	    {
+            	         MATCHT(ASSIGN_TOK, &FOLLOW_ASSIGN_TOK_in_arrayStore5195);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulearrayStoreEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_term_in_arrayStore5197);
+            	        term(ctx, f2);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulearrayStoreEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	    }
+            	    break;
+
+                }
+            }
+
+            if ( BACKTRACKING==0 )
+            {
+                 f = MK_EXPR(CVC4::kind::STORE, f, k, f2); 
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulearrayStoreEx; /* Prevent compiler warnings */
+    rulearrayStoreEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end arrayStore */
+
+/**
+ * $ANTLR start tupleStore
+ * ../../../../../../src/parser/cvc/Cvc.g:1594:1: tupleStore[CVC4::Expr& f] : k= numeral ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] ) ;
+ */
+static void
+tupleStore(pCvcParser ctx, CVC4::Expr& f)
+{
+    unsigned k;
+    #undef	RETURN_TYPE_k
+    #define	RETURN_TYPE_k unsigned
+
+    /* Initialize rule variables
+     */
+
+
+      Expr f2;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1598:3: (k= numeral ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] ) )
+        // ../../../../../../src/parser/cvc/Cvc.g:1598:5: k= numeral ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] )
+        {
+            FOLLOWPUSH(FOLLOW_numeral_in_tupleStore5229);
+            k=numeral(ctx);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruletupleStoreEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 Type t = f.getType();
+                      if(! t.isTuple()) {
+                        PARSER_STATE->parseError("tuple-update applied to non-tuple");
+                      }
+                      size_t length = ((DatatypeType)t).getTupleLength();
+                      if(k >= length) {
+                        std::stringstream ss;
+                        ss << "tuple is of length " << length << "; cannot update index " << k;
+                        PARSER_STATE->parseError(ss.str());
+                      }
+                      std::vector<Expr> args;
+                      const Datatype & dt = ((DatatypeType)t).getDatatype();
+                      args.push_back( dt[0][k].getSelector() );
+                      args.push_back( f );
+                      f2 = MK_EXPR(CVC4::kind::APPLY_SELECTOR_TOTAL,args);
+                    
+            }
+
+
+            // ../../../../../../src/parser/cvc/Cvc.g:1615:5: ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] )
+            {
+                int alt80=2;
+                switch ( LA(1) )
+                {
+                case DOT:
+                case LBRACKET:
+                	{
+                		alt80=1;
+                	}
+                    break;
+                case ASSIGN_TOK:
+                	{
+                		alt80=2;
+                	}
+                    break;
+
+                default:
+                    if (BACKTRACKING>0)
+                    {
+                        FAILEDFLAG = ANTLR3_TRUE;
+                        return ;
+                    }
+
+                    CONSTRUCTEX();
+                    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                    EXCEPTION->message      = (void *)"";
+                    EXCEPTION->decisionNum  = 80;
+                    EXCEPTION->state        = 0;
+
+
+                    goto ruletupleStoreEx;
+
+                }
+
+                switch (alt80)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1615:7: ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) )
+            	    {
+            	        // ../../../../../../src/parser/cvc/Cvc.g:1615:7: ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) )
+            	        {
+            	            int alt79=2;
+            	            switch ( LA(1) )
+            	            {
+            	            case LBRACKET:
+            	            	{
+            	            		alt79=1;
+            	            	}
+            	                break;
+            	            case DOT:
+            	            	{
+            	            		alt79=2;
+            	            	}
+            	                break;
+
+            	            default:
+            	                if (BACKTRACKING>0)
+            	                {
+            	                    FAILEDFLAG = ANTLR3_TRUE;
+            	                    return ;
+            	                }
+
+            	                CONSTRUCTEX();
+            	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            	                EXCEPTION->message      = (void *)"";
+            	                EXCEPTION->decisionNum  = 79;
+            	                EXCEPTION->state        = 0;
+
+
+            	                goto ruletupleStoreEx;
+
+            	            }
+
+            	            switch (alt79)
+            	            {
+            	        	case 1:
+            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1615:9: arrayStore[f2]
+            	        	    {
+            	        	        FOLLOWPUSH(FOLLOW_arrayStore_in_tupleStore5245);
+            	        	        arrayStore(ctx, f2);
+
+            	        	        FOLLOWPOP();
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto ruletupleStoreEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	    }
+            	        	    break;
+            	        	case 2:
+            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1616:9: DOT ( tupleStore[f2] | recordStore[f2] )
+            	        	    {
+            	        	         MATCHT(DOT, &FOLLOW_DOT_in_tupleStore5256);
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto ruletupleStoreEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	        // ../../../../../../src/parser/cvc/Cvc.g:1616:13: ( tupleStore[f2] | recordStore[f2] )
+            	        	        {
+            	        	            int alt78=2;
+            	        	            switch ( LA(1) )
+            	        	            {
+            	        	            case INTEGER_LITERAL:
+            	        	            	{
+            	        	            		alt78=1;
+            	        	            	}
+            	        	                break;
+            	        	            case IDENTIFIER:
+            	        	            	{
+            	        	            		alt78=2;
+            	        	            	}
+            	        	                break;
+
+            	        	            default:
+            	        	                if (BACKTRACKING>0)
+            	        	                {
+            	        	                    FAILEDFLAG = ANTLR3_TRUE;
+            	        	                    return ;
+            	        	                }
+
+            	        	                CONSTRUCTEX();
+            	        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            	        	                EXCEPTION->message      = (void *)"";
+            	        	                EXCEPTION->decisionNum  = 78;
+            	        	                EXCEPTION->state        = 0;
+
+
+            	        	                goto ruletupleStoreEx;
+
+            	        	            }
+
+            	        	            switch (alt78)
+            	        	            {
+            	        	        	case 1:
+            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1616:15: tupleStore[f2]
+            	        	        	    {
+            	        	        	        FOLLOWPUSH(FOLLOW_tupleStore_in_tupleStore5260);
+            	        	        	        tupleStore(ctx, f2);
+
+            	        	        	        FOLLOWPOP();
+            	        	        	        if  (HASEXCEPTION())
+            	        	        	        {
+            	        	        	            goto ruletupleStoreEx;
+            	        	        	        }
+            	        	        	        if (HASFAILED())
+            	        	        	        {
+            	        	        	            return ;
+            	        	        	        }
+
+
+            	        	        	    }
+            	        	        	    break;
+            	        	        	case 2:
+            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1617:15: recordStore[f2]
+            	        	        	    {
+            	        	        	        FOLLOWPUSH(FOLLOW_recordStore_in_tupleStore5277);
+            	        	        	        recordStore(ctx, f2);
+
+            	        	        	        FOLLOWPOP();
+            	        	        	        if  (HASEXCEPTION())
+            	        	        	        {
+            	        	        	            goto ruletupleStoreEx;
+            	        	        	        }
+            	        	        	        if (HASFAILED())
+            	        	        	        {
+            	        	        	            return ;
+            	        	        	        }
+
+
+            	        	        	    }
+            	        	        	    break;
+
+            	        	            }
+            	        	        }
+
+            	        	    }
+            	        	    break;
+
+            	            }
+            	        }
+
+            	    }
+            	    break;
+            	case 2:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1618:7: ASSIGN_TOK term[f2]
+            	    {
+            	         MATCHT(ASSIGN_TOK, &FOLLOW_ASSIGN_TOK_in_tupleStore5290);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletupleStoreEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_term_in_tupleStore5292);
+            	        term(ctx, f2);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletupleStoreEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	    }
+            	    break;
+
+                }
+            }
+
+            if ( BACKTRACKING==0 )
+            {
+                 f = MK_EXPR(MK_CONST(TupleUpdate(k)), f, f2); 
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletupleStoreEx; /* Prevent compiler warnings */
+    ruletupleStoreEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end tupleStore */
+
+/**
+ * $ANTLR start recordStore
+ * ../../../../../../src/parser/cvc/Cvc.g:1626:1: recordStore[CVC4::Expr& f] : identifier[id,CHECK_NONE,SYM_VARIABLE] ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] ) ;
+ */
+static void
+recordStore(pCvcParser ctx, CVC4::Expr& f)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::string id;
+      Expr f2;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1631:3: ( identifier[id,CHECK_NONE,SYM_VARIABLE] ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] ) )
+        // ../../../../../../src/parser/cvc/Cvc.g:1631:5: identifier[id,CHECK_NONE,SYM_VARIABLE] ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] )
+        {
+            FOLLOWPUSH(FOLLOW_identifier_in_recordStore5322);
+            identifier(ctx, id, CHECK_NONE, SYM_VARIABLE);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulerecordStoreEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 Type t = f.getType();
+                      if(! t.isRecord()) {
+                        std::stringstream ss;
+                        ss << "record-update applied to non-record term" << std::endl
+                           << "the term: " << f << std::endl
+                           << "its type: " << t;
+                        PARSER_STATE->parseError(ss.str());
+                      }
+                      const Record& rec = ((DatatypeType)t).getRecord();
+                      if(! rec.contains(id)) {
+                        PARSER_STATE->parseError(std::string("no such field `") + id + "' in record");
+                      }
+                      std::vector<Expr> args;
+                      const Datatype & dt = ((DatatypeType)t).getDatatype();
+                      args.push_back( dt[0][id].getSelector() );
+                      args.push_back( f );
+                      f2 = MK_EXPR(CVC4::kind::APPLY_SELECTOR_TOTAL,args);
+                    
+            }
+
+
+            // ../../../../../../src/parser/cvc/Cvc.g:1650:5: ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] )
+            {
+                int alt83=2;
+                switch ( LA(1) )
+                {
+                case DOT:
+                case LBRACKET:
+                	{
+                		alt83=1;
+                	}
+                    break;
+                case ASSIGN_TOK:
+                	{
+                		alt83=2;
+                	}
+                    break;
+
+                default:
+                    if (BACKTRACKING>0)
+                    {
+                        FAILEDFLAG = ANTLR3_TRUE;
+                        return ;
+                    }
+
+                    CONSTRUCTEX();
+                    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                    EXCEPTION->message      = (void *)"";
+                    EXCEPTION->decisionNum  = 83;
+                    EXCEPTION->state        = 0;
+
+
+                    goto rulerecordStoreEx;
+
+                }
+
+                switch (alt83)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1650:7: ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) )
+            	    {
+            	        // ../../../../../../src/parser/cvc/Cvc.g:1650:7: ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) )
+            	        {
+            	            int alt82=2;
+            	            switch ( LA(1) )
+            	            {
+            	            case LBRACKET:
+            	            	{
+            	            		alt82=1;
+            	            	}
+            	                break;
+            	            case DOT:
+            	            	{
+            	            		alt82=2;
+            	            	}
+            	                break;
+
+            	            default:
+            	                if (BACKTRACKING>0)
+            	                {
+            	                    FAILEDFLAG = ANTLR3_TRUE;
+            	                    return ;
+            	                }
+
+            	                CONSTRUCTEX();
+            	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            	                EXCEPTION->message      = (void *)"";
+            	                EXCEPTION->decisionNum  = 82;
+            	                EXCEPTION->state        = 0;
+
+
+            	                goto rulerecordStoreEx;
+
+            	            }
+
+            	            switch (alt82)
+            	            {
+            	        	case 1:
+            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1650:9: arrayStore[f2]
+            	        	    {
+            	        	        FOLLOWPUSH(FOLLOW_arrayStore_in_recordStore5339);
+            	        	        arrayStore(ctx, f2);
+
+            	        	        FOLLOWPOP();
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto rulerecordStoreEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	    }
+            	        	    break;
+            	        	case 2:
+            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1651:9: DOT ( tupleStore[f2] | recordStore[f2] )
+            	        	    {
+            	        	         MATCHT(DOT, &FOLLOW_DOT_in_recordStore5350);
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto rulerecordStoreEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	        // ../../../../../../src/parser/cvc/Cvc.g:1651:13: ( tupleStore[f2] | recordStore[f2] )
+            	        	        {
+            	        	            int alt81=2;
+            	        	            switch ( LA(1) )
+            	        	            {
+            	        	            case INTEGER_LITERAL:
+            	        	            	{
+            	        	            		alt81=1;
+            	        	            	}
+            	        	                break;
+            	        	            case IDENTIFIER:
+            	        	            	{
+            	        	            		alt81=2;
+            	        	            	}
+            	        	                break;
+
+            	        	            default:
+            	        	                if (BACKTRACKING>0)
+            	        	                {
+            	        	                    FAILEDFLAG = ANTLR3_TRUE;
+            	        	                    return ;
+            	        	                }
+
+            	        	                CONSTRUCTEX();
+            	        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            	        	                EXCEPTION->message      = (void *)"";
+            	        	                EXCEPTION->decisionNum  = 81;
+            	        	                EXCEPTION->state        = 0;
+
+
+            	        	                goto rulerecordStoreEx;
+
+            	        	            }
+
+            	        	            switch (alt81)
+            	        	            {
+            	        	        	case 1:
+            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1651:15: tupleStore[f2]
+            	        	        	    {
+            	        	        	        FOLLOWPUSH(FOLLOW_tupleStore_in_recordStore5354);
+            	        	        	        tupleStore(ctx, f2);
+
+            	        	        	        FOLLOWPOP();
+            	        	        	        if  (HASEXCEPTION())
+            	        	        	        {
+            	        	        	            goto rulerecordStoreEx;
+            	        	        	        }
+            	        	        	        if (HASFAILED())
+            	        	        	        {
+            	        	        	            return ;
+            	        	        	        }
+
+
+            	        	        	    }
+            	        	        	    break;
+            	        	        	case 2:
+            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1652:15: recordStore[f2]
+            	        	        	    {
+            	        	        	        FOLLOWPUSH(FOLLOW_recordStore_in_recordStore5371);
+            	        	        	        recordStore(ctx, f2);
+
+            	        	        	        FOLLOWPOP();
+            	        	        	        if  (HASEXCEPTION())
+            	        	        	        {
+            	        	        	            goto rulerecordStoreEx;
+            	        	        	        }
+            	        	        	        if (HASFAILED())
+            	        	        	        {
+            	        	        	            return ;
+            	        	        	        }
+
+
+            	        	        	    }
+            	        	        	    break;
+
+            	        	            }
+            	        	        }
+
+            	        	    }
+            	        	    break;
+
+            	            }
+            	        }
+
+            	    }
+            	    break;
+            	case 2:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1653:7: ASSIGN_TOK term[f2]
+            	    {
+            	         MATCHT(ASSIGN_TOK, &FOLLOW_ASSIGN_TOK_in_recordStore5384);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulerecordStoreEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_term_in_recordStore5386);
+            	        term(ctx, f2);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulerecordStoreEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	    }
+            	    break;
+
+                }
+            }
+
+            if ( BACKTRACKING==0 )
+            {
+                 f = MK_EXPR(MK_CONST(RecordUpdate(id)), f, f2); 
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulerecordStoreEx; /* Prevent compiler warnings */
+    rulerecordStoreEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end recordStore */
+
+/**
+ * $ANTLR start uminusTerm
+ * ../../../../../../src/parser/cvc/Cvc.g:1658:1: uminusTerm[CVC4::Expr& f] : ( ( MINUS_TOK )+ bvBinaryOpTerm[f] | bvBinaryOpTerm[f] );
+ */
+static void
+uminusTerm(pCvcParser ctx, CVC4::Expr& f)
+{
+    /* Initialize rule variables
+     */
+
+
+      unsigned minusCount = 0;
+
+    {
+        {
+            //  ../../../../../../src/parser/cvc/Cvc.g:1663:3: ( ( MINUS_TOK )+ bvBinaryOpTerm[f] | bvBinaryOpTerm[f] )
+
+            ANTLR3_UINT32 alt85;
+
+            alt85=2;
+
+            switch ( LA(1) )
+            {
+            case MINUS_TOK:
+            	{
+            		alt85=1;
+            	}
+                break;
+            case ABS_TOK:
+            case ARRAY_TOK:
+            case BAR:
+            case BINARY_LITERAL:
+            case BVASHR_TOK:
+            case BVCOMP_TOK:
+            case BVGE_TOK:
+            case BVGT_TOK:
+            case BVLE_TOK:
+            case BVLSHR_TOK:
+            case BVLT_TOK:
+            case BVMULT_TOK:
+            case BVNAND_TOK:
+            case BVNEG_TOK:
+            case BVNOR_TOK:
+            case BVPLUS_TOK:
+            case BVREPEAT_TOK:
+            case BVROTL_TOK:
+            case BVROTR_TOK:
+            case BVSDIV_TOK:
+            case BVSGE_TOK:
+            case BVSGT_TOK:
+            case BVSHL_TOK:
+            case BVSLE_TOK:
+            case BVSLT_TOK:
+            case BVSMOD_TOK:
+            case BVSREM_TOK:
+            case BVSUB_TOK:
+            case BVUDIV_TOK:
+            case BVUMINUS_TOK:
+            case BVUREM_TOK:
+            case BVXNOR_TOK:
+            case BVXOR_TOK:
+            case BVZEROEXTEND_TOK:
+            case DECIMAL_LITERAL:
+            case DISTINCT_TOK:
+            case DIVISIBLE_TOK:
+            case FALSE_TOK:
+            case FLOOR_TOK:
+            case HEX_LITERAL:
+            case IDENTIFIER:
+            case IF_TOK:
+            case INTEGER_LITERAL:
+            case IS_INTEGER_TOK:
+            case LBRACE:
+            case LPAREN:
+            case NOT_TOK:
+            case PARENHASH:
+            case SETS_CARD_TOK:
+            case STRING_CONCAT_TOK:
+            case STRING_CONTAINS_TOK:
+            case STRING_INDEXOF_TOK:
+            case STRING_ITOS_TOK:
+            case STRING_LENGTH_TOK:
+            case STRING_LITERAL:
+            case STRING_PREFIXOF_TOK:
+            case STRING_REPLACE_TOK:
+            case STRING_STOI_TOK:
+            case STRING_STOU16_TOK:
+            case STRING_STOU32_TOK:
+            case STRING_SUBSTR_TOK:
+            case STRING_SUFFIXOF_TOK:
+            case STRING_U16TOS_TOK:
+            case STRING_U32TOS_TOK:
+            case SX_TOK:
+            case TRANSCLOSURE_TOK:
+            case TRANSPOSE_TOK:
+            case TRUE_TOK:
+            case TUPLE_TOK:
+            case UNIVSET_TOK:
+            	{
+            		alt85=2;
+            	}
+                break;
+
+            default:
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 85;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleuminusTermEx;
+
+            }
+
+            switch (alt85)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1663:5: ( MINUS_TOK )+ bvBinaryOpTerm[f]
+        	    {
+        	        // ../../../../../../src/parser/cvc/Cvc.g:1663:5: ( MINUS_TOK )+
+        	        {
+        	            int cnt84=0;
+
+        	            for (;;)
+        	            {
+        	                int alt84=2;
+        	        	switch ( LA(1) )
+        	        	{
+        	        	case MINUS_TOK:
+        	        		{
+        	        			alt84=1;
+        	        		}
+        	        	    break;
+
+        	        	}
+
+        	        	switch (alt84)
+        	        	{
+        	        	    case 1:
+        	        	        // ../../../../../../src/parser/cvc/Cvc.g:1663:6: MINUS_TOK
+        	        	        {
+        	        	             MATCHT(MINUS_TOK, &FOLLOW_MINUS_TOK_in_uminusTerm5423);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruleuminusTermEx;
+        	        	            }
+        	        	            if (HASFAILED())
+        	        	            {
+        	        	                return ;
+        	        	            }
+
+
+        	        	            if ( BACKTRACKING==0 )
+        	        	            {
+        	        	                 ++minusCount; 
+        	        	            }
+
+
+        	        	        }
+        	        	        break;
+
+        	        	    default:
+
+        	        		if ( cnt84 >= 1 )
+        	        		{
+        	        		    goto loop84;
+        	        		}
+        	        		if (BACKTRACKING>0)
+        	        		{
+        	        		    FAILEDFLAG = ANTLR3_TRUE;
+        	        		    return ;
+        	        		}
+
+        	        		/* mismatchedSetEx()
+        	        		 */
+        	        		CONSTRUCTEX();
+        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        		goto ruleuminusTermEx;
+        	        	}
+        	        	cnt84++;
+        	            }
+        	            loop84: ;	/* Jump to here if this rule does not match */
+        	        }
+
+        	        FOLLOWPUSH(FOLLOW_bvBinaryOpTerm_in_uminusTerm5429);
+        	        bvBinaryOpTerm(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleuminusTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             while(minusCount > 0) { --minusCount; f = MK_EXPR(CVC4::kind::UMINUS, f); } 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1665:5: bvBinaryOpTerm[f]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_bvBinaryOpTerm_in_uminusTerm5442);
+        	        bvBinaryOpTerm(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleuminusTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleuminusTermEx; /* Prevent compiler warnings */
+    ruleuminusTermEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end uminusTerm */
+
+/**
+ * $ANTLR start bvBinaryOpTerm
+ * ../../../../../../src/parser/cvc/Cvc.g:1669:1: bvBinaryOpTerm[CVC4::Expr& f] : bvNegTerm[f] ( bvBinop[op] bvNegTerm[f] )* ;
+ */
+static void
+bvBinaryOpTerm(pCvcParser ctx, CVC4::Expr& f)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::vector<CVC4::Expr> expressions;
+      std::vector<unsigned> operators;
+      unsigned op;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1675:3: ( bvNegTerm[f] ( bvBinop[op] bvNegTerm[f] )* )
+        // ../../../../../../src/parser/cvc/Cvc.g:1675:5: bvNegTerm[f] ( bvBinop[op] bvNegTerm[f] )*
+        {
+            FOLLOWPUSH(FOLLOW_bvNegTerm_in_bvBinaryOpTerm5464);
+            bvNegTerm(ctx, f);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulebvBinaryOpTermEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 expressions.push_back(f); 
+            }
+
+
+            // ../../../../../../src/parser/cvc/Cvc.g:1676:5: ( bvBinop[op] bvNegTerm[f] )*
+
+            for (;;)
+            {
+                int alt86=2;
+                switch ( LA(1) )
+                {
+                case BAR:
+                	{
+                		switch ( LA(2) )
+                		{
+                		case BAR:
+                			{
+                				switch ( LA(3) )
+                				{
+                				case BAR:
+                					{
+                						alt86=1;
+                					}
+                				    break;
+
+                				}
+
+                			}
+                		    break;
+                		case ABS_TOK:
+                		case ARRAY_TOK:
+                		case BINARY_LITERAL:
+                		case BVASHR_TOK:
+                		case BVCOMP_TOK:
+                		case BVGE_TOK:
+                		case BVGT_TOK:
+                		case BVLE_TOK:
+                		case BVLSHR_TOK:
+                		case BVLT_TOK:
+                		case BVMULT_TOK:
+                		case BVNAND_TOK:
+                		case BVNEG_TOK:
+                		case BVNOR_TOK:
+                		case BVPLUS_TOK:
+                		case BVREPEAT_TOK:
+                		case BVROTL_TOK:
+                		case BVROTR_TOK:
+                		case BVSDIV_TOK:
+                		case BVSGE_TOK:
+                		case BVSGT_TOK:
+                		case BVSHL_TOK:
+                		case BVSLE_TOK:
+                		case BVSLT_TOK:
+                		case BVSMOD_TOK:
+                		case BVSREM_TOK:
+                		case BVSUB_TOK:
+                		case BVUDIV_TOK:
+                		case BVUMINUS_TOK:
+                		case BVUREM_TOK:
+                		case BVXNOR_TOK:
+                		case BVXOR_TOK:
+                		case BVZEROEXTEND_TOK:
+                		case DECIMAL_LITERAL:
+                		case DISTINCT_TOK:
+                		case DIVISIBLE_TOK:
+                		case FALSE_TOK:
+                		case FLOOR_TOK:
+                		case HEX_LITERAL:
+                		case IDENTIFIER:
+                		case IF_TOK:
+                		case INTEGER_LITERAL:
+                		case IS_INTEGER_TOK:
+                		case LBRACE:
+                		case LPAREN:
+                		case NOT_TOK:
+                		case PARENHASH:
+                		case SETS_CARD_TOK:
+                		case STRING_CONCAT_TOK:
+                		case STRING_CONTAINS_TOK:
+                		case STRING_INDEXOF_TOK:
+                		case STRING_ITOS_TOK:
+                		case STRING_LENGTH_TOK:
+                		case STRING_LITERAL:
+                		case STRING_PREFIXOF_TOK:
+                		case STRING_REPLACE_TOK:
+                		case STRING_STOI_TOK:
+                		case STRING_STOU16_TOK:
+                		case STRING_STOU32_TOK:
+                		case STRING_SUBSTR_TOK:
+                		case STRING_SUFFIXOF_TOK:
+                		case STRING_U16TOS_TOK:
+                		case STRING_U32TOS_TOK:
+                		case SX_TOK:
+                		case TRANSCLOSURE_TOK:
+                		case TRANSPOSE_TOK:
+                		case TRUE_TOK:
+                		case TUPLE_TOK:
+                		case UNIVSET_TOK:
+                			{
+                				alt86=1;
+                			}
+                		    break;
+
+                		}
+
+                	}
+                    break;
+                case BVAND_TOK:
+                case CONCAT_TOK:
+                	{
+                		alt86=1;
+                	}
+                    break;
+
+                }
+
+                switch (alt86)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1676:7: bvBinop[op] bvNegTerm[f]
+            	    {
+            	        FOLLOWPUSH(FOLLOW_bvBinop_in_bvBinaryOpTerm5475);
+            	        bvBinop(ctx, op);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulebvBinaryOpTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_bvNegTerm_in_bvBinaryOpTerm5478);
+            	        bvNegTerm(ctx, f);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulebvBinaryOpTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        if ( BACKTRACKING==0 )
+            	        {
+            	             operators.push_back(op); expressions.push_back(f); 
+            	        }
+
+
+            	    }
+            	    break;
+
+            	default:
+            	    goto loop86;	/* break out of the loop */
+            	    break;
+                }
+            }
+            loop86: ; /* Jump out to here if this rule does not match */
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 f = createPrecedenceTree(PARSER_STATE, EXPR_MANAGER, expressions, operators); 
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulebvBinaryOpTermEx; /* Prevent compiler warnings */
+    rulebvBinaryOpTermEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end bvBinaryOpTerm */
+
+/**
+ * $ANTLR start bvBinop
+ * ../../../../../../src/parser/cvc/Cvc.g:1679:1: bvBinop[unsigned& op] : ( CONCAT_TOK | BAR | BVAND_TOK );
+ */
+static void
+bvBinop(pCvcParser ctx, unsigned& op)
+{
+    /* Initialize rule variables
+     */
+
+
+      op = LT(1)->getType(LT(1));
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1683:3: ( CONCAT_TOK | BAR | BVAND_TOK )
+        // ../../../../../../src/parser/cvc/Cvc.g:
+        {
+            if ( LA(1) == BAR || LA(1) == BVAND_TOK || LA(1) == CONCAT_TOK )
+            {
+                CONSUME();
+                PERRORRECOVERY=ANTLR3_FALSE;
+                FAILEDFLAG=ANTLR3_FALSE;
+
+            }
+            else
+            {
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+                EXCEPTION->expectingSet = NULL;
+
+                goto rulebvBinopEx;
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulebvBinopEx; /* Prevent compiler warnings */
+    rulebvBinopEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end bvBinop */
+
+/**
+ * $ANTLR start bvNegTerm
+ * ../../../../../../src/parser/cvc/Cvc.g:1688:1: bvNegTerm[CVC4::Expr& f] : ( BVNEG_TOK bvNegTerm[f] | NOT_TOK bvNegTerm[f] | TRANSPOSE_TOK bvNegTerm[f] | TRANSCLOSURE_TOK bvNegTerm[f] | TUPLE_TOK LPAREN bvNegTerm[f] RPAREN | postfixTerm[f] );
+ */
+static void
+bvNegTerm(pCvcParser ctx, CVC4::Expr& f)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/cvc/Cvc.g:1690:3: ( BVNEG_TOK bvNegTerm[f] | NOT_TOK bvNegTerm[f] | TRANSPOSE_TOK bvNegTerm[f] | TRANSCLOSURE_TOK bvNegTerm[f] | TUPLE_TOK LPAREN bvNegTerm[f] RPAREN | postfixTerm[f] )
+
+            ANTLR3_UINT32 alt87;
+
+            alt87=6;
+
+            switch ( LA(1) )
+            {
+            case BVNEG_TOK:
+            	{
+            		alt87=1;
+            	}
+                break;
+            case NOT_TOK:
+            	{
+            		alt87=2;
+            	}
+                break;
+            case TRANSPOSE_TOK:
+            	{
+            		alt87=3;
+            	}
+                break;
+            case TRANSCLOSURE_TOK:
+            	{
+            		alt87=4;
+            	}
+                break;
+            case TUPLE_TOK:
+            	{
+            		alt87=5;
+            	}
+                break;
+            case ABS_TOK:
+            case ARRAY_TOK:
+            case BAR:
+            case BINARY_LITERAL:
+            case BVASHR_TOK:
+            case BVCOMP_TOK:
+            case BVGE_TOK:
+            case BVGT_TOK:
+            case BVLE_TOK:
+            case BVLSHR_TOK:
+            case BVLT_TOK:
+            case BVMULT_TOK:
+            case BVNAND_TOK:
+            case BVNOR_TOK:
+            case BVPLUS_TOK:
+            case BVREPEAT_TOK:
+            case BVROTL_TOK:
+            case BVROTR_TOK:
+            case BVSDIV_TOK:
+            case BVSGE_TOK:
+            case BVSGT_TOK:
+            case BVSHL_TOK:
+            case BVSLE_TOK:
+            case BVSLT_TOK:
+            case BVSMOD_TOK:
+            case BVSREM_TOK:
+            case BVSUB_TOK:
+            case BVUDIV_TOK:
+            case BVUMINUS_TOK:
+            case BVUREM_TOK:
+            case BVXNOR_TOK:
+            case BVXOR_TOK:
+            case BVZEROEXTEND_TOK:
+            case DECIMAL_LITERAL:
+            case DISTINCT_TOK:
+            case DIVISIBLE_TOK:
+            case FALSE_TOK:
+            case FLOOR_TOK:
+            case HEX_LITERAL:
+            case IDENTIFIER:
+            case IF_TOK:
+            case INTEGER_LITERAL:
+            case IS_INTEGER_TOK:
+            case LBRACE:
+            case LPAREN:
+            case PARENHASH:
+            case SETS_CARD_TOK:
+            case STRING_CONCAT_TOK:
+            case STRING_CONTAINS_TOK:
+            case STRING_INDEXOF_TOK:
+            case STRING_ITOS_TOK:
+            case STRING_LENGTH_TOK:
+            case STRING_LITERAL:
+            case STRING_PREFIXOF_TOK:
+            case STRING_REPLACE_TOK:
+            case STRING_STOI_TOK:
+            case STRING_STOU16_TOK:
+            case STRING_STOU32_TOK:
+            case STRING_SUBSTR_TOK:
+            case STRING_SUFFIXOF_TOK:
+            case STRING_U16TOS_TOK:
+            case STRING_U32TOS_TOK:
+            case SX_TOK:
+            case TRUE_TOK:
+            case UNIVSET_TOK:
+            	{
+            		alt87=6;
+            	}
+                break;
+
+            default:
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 87;
+                EXCEPTION->state        = 0;
+
+
+                goto rulebvNegTermEx;
+
+            }
+
+            switch (alt87)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1690:5: BVNEG_TOK bvNegTerm[f]
+        	    {
+        	         MATCHT(BVNEG_TOK, &FOLLOW_BVNEG_TOK_in_bvNegTerm5541);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvNegTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_bvNegTerm_in_bvNegTerm5543);
+        	        bvNegTerm(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvNegTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_NOT, f); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1692:5: NOT_TOK bvNegTerm[f]
+        	    {
+        	         MATCHT(NOT_TOK, &FOLLOW_NOT_TOK_in_bvNegTerm5556);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvNegTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_bvNegTerm_in_bvNegTerm5558);
+        	        bvNegTerm(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvNegTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::COMPLEMENT, f); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1694:5: TRANSPOSE_TOK bvNegTerm[f]
+        	    {
+        	         MATCHT(TRANSPOSE_TOK, &FOLLOW_TRANSPOSE_TOK_in_bvNegTerm5572);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvNegTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_bvNegTerm_in_bvNegTerm5574);
+        	        bvNegTerm(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvNegTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::TRANSPOSE, f); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1696:5: TRANSCLOSURE_TOK bvNegTerm[f]
+        	    {
+        	         MATCHT(TRANSCLOSURE_TOK, &FOLLOW_TRANSCLOSURE_TOK_in_bvNegTerm5588);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvNegTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_bvNegTerm_in_bvNegTerm5590);
+        	        bvNegTerm(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvNegTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::TCLOSURE, f); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1698:5: TUPLE_TOK LPAREN bvNegTerm[f] RPAREN
+        	    {
+        	         MATCHT(TUPLE_TOK, &FOLLOW_TUPLE_TOK_in_bvNegTerm5603);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvNegTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvNegTerm5605);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvNegTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_bvNegTerm_in_bvNegTerm5607);
+        	        bvNegTerm(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvNegTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvNegTerm5610);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvNegTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             std::vector<Type> types;
+        	                  std::vector<Expr> args;
+        	                  args.push_back(f);
+        	            	  types.push_back(f.getType());
+        	                  DatatypeType t = EXPR_MANAGER->mkTupleType(types);
+        	                  const Datatype& dt = t.getDatatype();
+        	                  args.insert( args.begin(), dt[0].getConstructor() );
+        	                  f = MK_EXPR(kind::APPLY_CONSTRUCTOR, args);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1708:5: postfixTerm[f]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_postfixTerm_in_bvNegTerm5635);
+        	        postfixTerm(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvNegTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulebvNegTermEx; /* Prevent compiler warnings */
+    rulebvNegTermEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end bvNegTerm */
+
+/**
+ * $ANTLR start postfixTerm
+ * ../../../../../../src/parser/cvc/Cvc.g:1720:1: postfixTerm[CVC4::Expr& f] : ( bvTerm[f] ( LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET | ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral ) )* | FLOOR_TOK LPAREN formula[f] RPAREN | IS_INTEGER_TOK LPAREN formula[f] RPAREN | ABS_TOK LPAREN formula[f] RPAREN | DIVISIBLE_TOK LPAREN formula[f] COMMA n= numeral RPAREN | [...]
+ */
+static void
+postfixTerm(pCvcParser ctx, CVC4::Expr& f)
+{
+    unsigned k1;
+    #undef	RETURN_TYPE_k1
+    #define	RETURN_TYPE_k1 unsigned
+
+    unsigned k2;
+    #undef	RETURN_TYPE_k2
+    #define	RETURN_TYPE_k2 unsigned
+
+    unsigned k;
+    #undef	RETURN_TYPE_k
+    #define	RETURN_TYPE_k unsigned
+
+    unsigned n;
+    #undef	RETURN_TYPE_n
+    #define	RETURN_TYPE_n unsigned
+
+    /* Initialize rule variables
+     */
+
+
+      Expr f2;
+      bool extract = false, left = false;
+      std::vector<Expr> args;
+      std::string id;
+      Type t;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:1728:3: ( ( bvTerm[f] ( LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET | ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral ) )* | FLOOR_TOK LPAREN formula[f] RPAREN | IS_INTEGER_TOK LPAREN formula[f] RPAREN | ABS_TOK LPAREN formula[f] RPAREN | DIVISIBLE_TOK LPAREN formula[f] COMMA n= numeral RPAREN | DISTINCT_TOK LPARE [...]
+        // ../../../../../../src/parser/cvc/Cvc.g:1728:5: ( bvTerm[f] ( LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET | ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral ) )* | FLOOR_TOK LPAREN formula[f] RPAREN | IS_INTEGER_TOK LPAREN formula[f] RPAREN | ABS_TOK LPAREN formula[f] RPAREN | DIVISIBLE_TOK LPAREN formula[f] COMMA n= numeral RPAREN | DISTINCT_TOK LPAREN  [...]
+        {
+            // ../../../../../../src/parser/cvc/Cvc.g:1728:5: ( bvTerm[f] ( LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET | ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral ) )* | FLOOR_TOK LPAREN formula[f] RPAREN | IS_INTEGER_TOK LPAREN formula[f] RPAREN | ABS_TOK LPAREN formula[f] RPAREN | DIVISIBLE_TOK LPAREN formula[f] COMMA n= numeral RPAREN | DISTINCT_TOK LPA [...]
+            {
+                int alt94=6;
+                switch ( LA(1) )
+                {
+                case ARRAY_TOK:
+                case BAR:
+                case BINARY_LITERAL:
+                case BVASHR_TOK:
+                case BVCOMP_TOK:
+                case BVGE_TOK:
+                case BVGT_TOK:
+                case BVLE_TOK:
+                case BVLSHR_TOK:
+                case BVLT_TOK:
+                case BVMULT_TOK:
+                case BVNAND_TOK:
+                case BVNOR_TOK:
+                case BVPLUS_TOK:
+                case BVREPEAT_TOK:
+                case BVROTL_TOK:
+                case BVROTR_TOK:
+                case BVSDIV_TOK:
+                case BVSGE_TOK:
+                case BVSGT_TOK:
+                case BVSHL_TOK:
+                case BVSLE_TOK:
+                case BVSLT_TOK:
+                case BVSMOD_TOK:
+                case BVSREM_TOK:
+                case BVSUB_TOK:
+                case BVUDIV_TOK:
+                case BVUMINUS_TOK:
+                case BVUREM_TOK:
+                case BVXNOR_TOK:
+                case BVXOR_TOK:
+                case BVZEROEXTEND_TOK:
+                case DECIMAL_LITERAL:
+                case FALSE_TOK:
+                case HEX_LITERAL:
+                case IDENTIFIER:
+                case IF_TOK:
+                case INTEGER_LITERAL:
+                case LBRACE:
+                case LPAREN:
+                case PARENHASH:
+                case SETS_CARD_TOK:
+                case STRING_CONCAT_TOK:
+                case STRING_CONTAINS_TOK:
+                case STRING_INDEXOF_TOK:
+                case STRING_ITOS_TOK:
+                case STRING_LENGTH_TOK:
+                case STRING_LITERAL:
+                case STRING_PREFIXOF_TOK:
+                case STRING_REPLACE_TOK:
+                case STRING_STOI_TOK:
+                case STRING_STOU16_TOK:
+                case STRING_STOU32_TOK:
+                case STRING_SUBSTR_TOK:
+                case STRING_SUFFIXOF_TOK:
+                case STRING_U16TOS_TOK:
+                case STRING_U32TOS_TOK:
+                case SX_TOK:
+                case TRUE_TOK:
+                case UNIVSET_TOK:
+                	{
+                		alt94=1;
+                	}
+                    break;
+                case FLOOR_TOK:
+                	{
+                		alt94=2;
+                	}
+                    break;
+                case IS_INTEGER_TOK:
+                	{
+                		alt94=3;
+                	}
+                    break;
+                case ABS_TOK:
+                	{
+                		alt94=4;
+                	}
+                    break;
+                case DIVISIBLE_TOK:
+                	{
+                		alt94=5;
+                	}
+                    break;
+                case DISTINCT_TOK:
+                	{
+                		alt94=6;
+                	}
+                    break;
+
+                default:
+                    if (BACKTRACKING>0)
+                    {
+                        FAILEDFLAG = ANTLR3_TRUE;
+                        return ;
+                    }
+
+                    CONSTRUCTEX();
+                    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                    EXCEPTION->message      = (void *)"";
+                    EXCEPTION->decisionNum  = 94;
+                    EXCEPTION->state        = 0;
+
+
+                    goto rulepostfixTermEx;
+
+                }
+
+                switch (alt94)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1728:7: bvTerm[f] ( LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET | ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral ) )*
+            	    {
+            	        FOLLOWPUSH(FOLLOW_bvTerm_in_postfixTerm5659);
+            	        bvTerm(ctx, f);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        // ../../../../../../src/parser/cvc/Cvc.g:1729:5: ( LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET | ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral ) )*
+
+            	        for (;;)
+            	        {
+            	            int alt92=5;
+            	            switch ( LA(1) )
+            	            {
+            	            case LBRACKET:
+            	            	{
+            	            		switch ( LA(2) )
+            	            		{
+            	            		case IDENTIFIER:
+            	            			{
+            	            				switch ( LA(3) )
+            	            				{
+            	            				case AND_TOK:
+            	            				case BAR:
+            	            				case BVAND_TOK:
+            	            				case COLON:
+            	            				case CONCAT_TOK:
+            	            				case DISEQUAL_TOK:
+            	            				case DIV_TOK:
+            	            				case DOT:
+            	            				case EQUAL_TOK:
+            	            				case EXP_TOK:
+            	            				case FMF_CARD_TOK:
+            	            				case GEQ_TOK:
+            	            				case GT_TOK:
+            	            				case IFF_TOK:
+            	            				case IMPLIES_TOK:
+            	            				case INTDIV_TOK:
+            	            				case JOIN_TOK:
+            	            				case LBRACKET:
+            	            				case LEFTSHIFT_TOK:
+            	            				case LEQ_TOK:
+            	            				case LPAREN:
+            	            				case LT_TOK:
+            	            				case MEMBER_TOK:
+            	            				case MINUS_TOK:
+            	            				case MOD_TOK:
+            	            				case OR_TOK:
+            	            				case PLUS_TOK:
+            	            				case PRODUCT_TOK:
+            	            				case RBRACKET:
+            	            				case RIGHTSHIFT_TOK:
+            	            				case STAR_TOK:
+            	            				case WITH_TOK:
+            	            				case XOR_TOK:
+            	            					{
+            	            						alt92=1;
+            	            					}
+            	            				    break;
+
+            	            				}
+
+            	            			}
+            	            		    break;
+            	            		case ABS_TOK:
+            	            		case ARRAY_TOK:
+            	            		case BAR:
+            	            		case BINARY_LITERAL:
+            	            		case BVASHR_TOK:
+            	            		case BVCOMP_TOK:
+            	            		case BVGE_TOK:
+            	            		case BVGT_TOK:
+            	            		case BVLE_TOK:
+            	            		case BVLSHR_TOK:
+            	            		case BVLT_TOK:
+            	            		case BVMULT_TOK:
+            	            		case BVNAND_TOK:
+            	            		case BVNEG_TOK:
+            	            		case BVNOR_TOK:
+            	            		case BVPLUS_TOK:
+            	            		case BVREPEAT_TOK:
+            	            		case BVROTL_TOK:
+            	            		case BVROTR_TOK:
+            	            		case BVSDIV_TOK:
+            	            		case BVSGE_TOK:
+            	            		case BVSGT_TOK:
+            	            		case BVSHL_TOK:
+            	            		case BVSLE_TOK:
+            	            		case BVSLT_TOK:
+            	            		case BVSMOD_TOK:
+            	            		case BVSREM_TOK:
+            	            		case BVSUB_TOK:
+            	            		case BVUDIV_TOK:
+            	            		case BVUMINUS_TOK:
+            	            		case BVUREM_TOK:
+            	            		case BVXNOR_TOK:
+            	            		case BVXOR_TOK:
+            	            		case BVZEROEXTEND_TOK:
+            	            		case DECIMAL_LITERAL:
+            	            		case DISTINCT_TOK:
+            	            		case DIVISIBLE_TOK:
+            	            		case EXISTS_TOK:
+            	            		case FALSE_TOK:
+            	            		case FLOOR_TOK:
+            	            		case FORALL_TOK:
+            	            		case HEX_LITERAL:
+            	            		case IF_TOK:
+            	            		case INTEGER_LITERAL:
+            	            		case IS_INTEGER_TOK:
+            	            		case LAMBDA:
+            	            		case LBRACE:
+            	            		case LET_TOK:
+            	            		case LPAREN:
+            	            		case MINUS_TOK:
+            	            		case NOT_TOK:
+            	            		case PARENHASH:
+            	            		case SETS_CARD_TOK:
+            	            		case STRING_CONCAT_TOK:
+            	            		case STRING_CONTAINS_TOK:
+            	            		case STRING_INDEXOF_TOK:
+            	            		case STRING_ITOS_TOK:
+            	            		case STRING_LENGTH_TOK:
+            	            		case STRING_LITERAL:
+            	            		case STRING_PREFIXOF_TOK:
+            	            		case STRING_REPLACE_TOK:
+            	            		case STRING_STOI_TOK:
+            	            		case STRING_STOU16_TOK:
+            	            		case STRING_STOU32_TOK:
+            	            		case STRING_SUBSTR_TOK:
+            	            		case STRING_SUFFIXOF_TOK:
+            	            		case STRING_U16TOS_TOK:
+            	            		case STRING_U32TOS_TOK:
+            	            		case SX_TOK:
+            	            		case TRANSCLOSURE_TOK:
+            	            		case TRANSPOSE_TOK:
+            	            		case TRUE_TOK:
+            	            		case TUPLE_TOK:
+            	            		case UNIVSET_TOK:
+            	            			{
+            	            				alt92=1;
+            	            			}
+            	            		    break;
+
+            	            		}
+
+            	            	}
+            	                break;
+            	            case LEFTSHIFT_TOK:
+            	            case RIGHTSHIFT_TOK:
+            	            	{
+            	            		alt92=2;
+            	            	}
+            	                break;
+            	            case LPAREN:
+            	            	{
+            	            		alt92=3;
+            	            	}
+            	                break;
+            	            case DOT:
+            	            	{
+            	            		alt92=4;
+            	            	}
+            	                break;
+
+            	            }
+
+            	            switch (alt92)
+            	            {
+            	        	case 1:
+            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1730:7: LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET
+            	        	    {
+            	        	         MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_postfixTerm5676);
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto rulepostfixTermEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	        // ../../../../../../src/parser/cvc/Cvc.g:1731:9: ( formula[f2] |k1= numeral COLON k2= numeral )
+            	        	        {
+            	        	            int alt88=2;
+            	        	            switch ( LA(1) )
+            	        	            {
+            	        	            case ABS_TOK:
+            	        	            case ARRAY_TOK:
+            	        	            case BAR:
+            	        	            case BINARY_LITERAL:
+            	        	            case BVASHR_TOK:
+            	        	            case BVCOMP_TOK:
+            	        	            case BVGE_TOK:
+            	        	            case BVGT_TOK:
+            	        	            case BVLE_TOK:
+            	        	            case BVLSHR_TOK:
+            	        	            case BVLT_TOK:
+            	        	            case BVMULT_TOK:
+            	        	            case BVNAND_TOK:
+            	        	            case BVNEG_TOK:
+            	        	            case BVNOR_TOK:
+            	        	            case BVPLUS_TOK:
+            	        	            case BVREPEAT_TOK:
+            	        	            case BVROTL_TOK:
+            	        	            case BVROTR_TOK:
+            	        	            case BVSDIV_TOK:
+            	        	            case BVSGE_TOK:
+            	        	            case BVSGT_TOK:
+            	        	            case BVSHL_TOK:
+            	        	            case BVSLE_TOK:
+            	        	            case BVSLT_TOK:
+            	        	            case BVSMOD_TOK:
+            	        	            case BVSREM_TOK:
+            	        	            case BVSUB_TOK:
+            	        	            case BVUDIV_TOK:
+            	        	            case BVUMINUS_TOK:
+            	        	            case BVUREM_TOK:
+            	        	            case BVXNOR_TOK:
+            	        	            case BVXOR_TOK:
+            	        	            case BVZEROEXTEND_TOK:
+            	        	            case DECIMAL_LITERAL:
+            	        	            case DISTINCT_TOK:
+            	        	            case DIVISIBLE_TOK:
+            	        	            case EXISTS_TOK:
+            	        	            case FALSE_TOK:
+            	        	            case FLOOR_TOK:
+            	        	            case FORALL_TOK:
+            	        	            case HEX_LITERAL:
+            	        	            case IDENTIFIER:
+            	        	            case IF_TOK:
+            	        	            case IS_INTEGER_TOK:
+            	        	            case LAMBDA:
+            	        	            case LBRACE:
+            	        	            case LET_TOK:
+            	        	            case LPAREN:
+            	        	            case MINUS_TOK:
+            	        	            case NOT_TOK:
+            	        	            case PARENHASH:
+            	        	            case SETS_CARD_TOK:
+            	        	            case STRING_CONCAT_TOK:
+            	        	            case STRING_CONTAINS_TOK:
+            	        	            case STRING_INDEXOF_TOK:
+            	        	            case STRING_ITOS_TOK:
+            	        	            case STRING_LENGTH_TOK:
+            	        	            case STRING_LITERAL:
+            	        	            case STRING_PREFIXOF_TOK:
+            	        	            case STRING_REPLACE_TOK:
+            	        	            case STRING_STOI_TOK:
+            	        	            case STRING_STOU16_TOK:
+            	        	            case STRING_STOU32_TOK:
+            	        	            case STRING_SUBSTR_TOK:
+            	        	            case STRING_SUFFIXOF_TOK:
+            	        	            case STRING_U16TOS_TOK:
+            	        	            case STRING_U32TOS_TOK:
+            	        	            case SX_TOK:
+            	        	            case TRANSCLOSURE_TOK:
+            	        	            case TRANSPOSE_TOK:
+            	        	            case TRUE_TOK:
+            	        	            case TUPLE_TOK:
+            	        	            case UNIVSET_TOK:
+            	        	            	{
+            	        	            		alt88=1;
+            	        	            	}
+            	        	                break;
+            	        	            case INTEGER_LITERAL:
+            	        	            	{
+            	        	            		switch ( LA(2) )
+            	        	            		{
+            	        	            		case AND_TOK:
+            	        	            		case BAR:
+            	        	            		case BVAND_TOK:
+            	        	            		case CONCAT_TOK:
+            	        	            		case DISEQUAL_TOK:
+            	        	            		case DIV_TOK:
+            	        	            		case DOT:
+            	        	            		case EQUAL_TOK:
+            	        	            		case EXP_TOK:
+            	        	            		case FMF_CARD_TOK:
+            	        	            		case GEQ_TOK:
+            	        	            		case GT_TOK:
+            	        	            		case IFF_TOK:
+            	        	            		case IMPLIES_TOK:
+            	        	            		case INTDIV_TOK:
+            	        	            		case JOIN_TOK:
+            	        	            		case LBRACKET:
+            	        	            		case LEFTSHIFT_TOK:
+            	        	            		case LEQ_TOK:
+            	        	            		case LPAREN:
+            	        	            		case LT_TOK:
+            	        	            		case MEMBER_TOK:
+            	        	            		case MINUS_TOK:
+            	        	            		case MOD_TOK:
+            	        	            		case OR_TOK:
+            	        	            		case PLUS_TOK:
+            	        	            		case PRODUCT_TOK:
+            	        	            		case RBRACKET:
+            	        	            		case RIGHTSHIFT_TOK:
+            	        	            		case STAR_TOK:
+            	        	            		case WITH_TOK:
+            	        	            		case XOR_TOK:
+            	        	            			{
+            	        	            				alt88=1;
+            	        	            			}
+            	        	            		    break;
+            	        	            		case COLON:
+            	        	            			{
+            	        	            				switch ( LA(3) )
+            	        	            				{
+            	        	            				case COLON:
+            	        	            					{
+            	        	            						alt88=1;
+            	        	            					}
+            	        	            				    break;
+            	        	            				case INTEGER_LITERAL:
+            	        	            					{
+            	        	            						alt88=2;
+            	        	            					}
+            	        	            				    break;
+
+            	        	            				default:
+            	        	            				    if (BACKTRACKING>0)
+            	        	            				    {
+            	        	            				        FAILEDFLAG = ANTLR3_TRUE;
+            	        	            				        return ;
+            	        	            				    }
+
+            	        	            				    CONSTRUCTEX();
+            	        	            				    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            	        	            				    EXCEPTION->message      = (void *)"";
+            	        	            				    EXCEPTION->decisionNum  = 88;
+            	        	            				    EXCEPTION->state        = 81;
+
+
+            	        	            				    goto rulepostfixTermEx;
+
+            	        	            				}
+
+            	        	            			}
+            	        	            		    break;
+
+            	        	            		default:
+            	        	            		    if (BACKTRACKING>0)
+            	        	            		    {
+            	        	            		        FAILEDFLAG = ANTLR3_TRUE;
+            	        	            		        return ;
+            	        	            		    }
+
+            	        	            		    CONSTRUCTEX();
+            	        	            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            	        	            		    EXCEPTION->message      = (void *)"";
+            	        	            		    EXCEPTION->decisionNum  = 88;
+            	        	            		    EXCEPTION->state        = 67;
+
+
+            	        	            		    goto rulepostfixTermEx;
+
+            	        	            		}
+
+            	        	            	}
+            	        	                break;
+
+            	        	            default:
+            	        	                if (BACKTRACKING>0)
+            	        	                {
+            	        	                    FAILEDFLAG = ANTLR3_TRUE;
+            	        	                    return ;
+            	        	                }
+
+            	        	                CONSTRUCTEX();
+            	        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            	        	                EXCEPTION->message      = (void *)"";
+            	        	                EXCEPTION->decisionNum  = 88;
+            	        	                EXCEPTION->state        = 0;
+
+
+            	        	                goto rulepostfixTermEx;
+
+            	        	            }
+
+            	        	            switch (alt88)
+            	        	            {
+            	        	        	case 1:
+            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1731:11: formula[f2]
+            	        	        	    {
+            	        	        	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm5688);
+            	        	        	        formula(ctx, f2);
+
+            	        	        	        FOLLOWPOP();
+            	        	        	        if  (HASEXCEPTION())
+            	        	        	        {
+            	        	        	            goto rulepostfixTermEx;
+            	        	        	        }
+            	        	        	        if (HASFAILED())
+            	        	        	        {
+            	        	        	            return ;
+            	        	        	        }
+
+
+            	        	        	        if ( BACKTRACKING==0 )
+            	        	        	        {
+            	        	        	             extract = false; 
+            	        	        	        }
+
+
+            	        	        	    }
+            	        	        	    break;
+            	        	        	case 2:
+            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1732:11: k1= numeral COLON k2= numeral
+            	        	        	    {
+            	        	        	        FOLLOWPUSH(FOLLOW_numeral_in_postfixTerm5705);
+            	        	        	        k1=numeral(ctx);
+
+            	        	        	        FOLLOWPOP();
+            	        	        	        if  (HASEXCEPTION())
+            	        	        	        {
+            	        	        	            goto rulepostfixTermEx;
+            	        	        	        }
+            	        	        	        if (HASFAILED())
+            	        	        	        {
+            	        	        	            return ;
+            	        	        	        }
+
+
+            	        	        	         MATCHT(COLON, &FOLLOW_COLON_in_postfixTerm5707);
+            	        	        	        if  (HASEXCEPTION())
+            	        	        	        {
+            	        	        	            goto rulepostfixTermEx;
+            	        	        	        }
+            	        	        	        if (HASFAILED())
+            	        	        	        {
+            	        	        	            return ;
+            	        	        	        }
+
+
+            	        	        	        FOLLOWPUSH(FOLLOW_numeral_in_postfixTerm5711);
+            	        	        	        k2=numeral(ctx);
+
+            	        	        	        FOLLOWPOP();
+            	        	        	        if  (HASEXCEPTION())
+            	        	        	        {
+            	        	        	            goto rulepostfixTermEx;
+            	        	        	        }
+            	        	        	        if (HASFAILED())
+            	        	        	        {
+            	        	        	            return ;
+            	        	        	        }
+
+
+            	        	        	        if ( BACKTRACKING==0 )
+            	        	        	        {
+            	        	        	             extract = true; 
+            	        	        	        }
+
+
+            	        	        	    }
+            	        	        	    break;
+
+            	        	            }
+            	        	        }
+
+            	        	         MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_postfixTerm5723);
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto rulepostfixTermEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	        if ( BACKTRACKING==0 )
+            	        	        {
+            	        	             if(extract) {
+            	        	                      /* bitvector extract */
+            	        	                      f = MK_EXPR(MK_CONST(BitVectorExtract(k1, k2)), f);
+            	        	                    } else {
+            	        	                      /* array select */
+            	        	                      f = MK_EXPR(CVC4::kind::SELECT, f, f2);
+            	        	                    }
+            	        	                  
+            	        	        }
+
+
+            	        	    }
+            	        	    break;
+            	        	case 2:
+            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1743:7: ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral
+            	        	    {
+            	        	        // ../../../../../../src/parser/cvc/Cvc.g:1743:7: ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK )
+            	        	        {
+            	        	            int alt89=2;
+            	        	            switch ( LA(1) )
+            	        	            {
+            	        	            case LEFTSHIFT_TOK:
+            	        	            	{
+            	        	            		alt89=1;
+            	        	            	}
+            	        	                break;
+            	        	            case RIGHTSHIFT_TOK:
+            	        	            	{
+            	        	            		alt89=2;
+            	        	            	}
+            	        	                break;
+
+            	        	            default:
+            	        	                if (BACKTRACKING>0)
+            	        	                {
+            	        	                    FAILEDFLAG = ANTLR3_TRUE;
+            	        	                    return ;
+            	        	                }
+
+            	        	                CONSTRUCTEX();
+            	        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            	        	                EXCEPTION->message      = (void *)"";
+            	        	                EXCEPTION->decisionNum  = 89;
+            	        	                EXCEPTION->state        = 0;
+
+
+            	        	                goto rulepostfixTermEx;
+
+            	        	            }
+
+            	        	            switch (alt89)
+            	        	            {
+            	        	        	case 1:
+            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1743:9: LEFTSHIFT_TOK
+            	        	        	    {
+            	        	        	         MATCHT(LEFTSHIFT_TOK, &FOLLOW_LEFTSHIFT_TOK_in_postfixTerm5749);
+            	        	        	        if  (HASEXCEPTION())
+            	        	        	        {
+            	        	        	            goto rulepostfixTermEx;
+            	        	        	        }
+            	        	        	        if (HASFAILED())
+            	        	        	        {
+            	        	        	            return ;
+            	        	        	        }
+
+
+            	        	        	        if ( BACKTRACKING==0 )
+            	        	        	        {
+            	        	        	             left = true; 
+            	        	        	        }
+
+
+            	        	        	    }
+            	        	        	    break;
+            	        	        	case 2:
+            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1744:9: RIGHTSHIFT_TOK
+            	        	        	    {
+            	        	        	         MATCHT(RIGHTSHIFT_TOK, &FOLLOW_RIGHTSHIFT_TOK_in_postfixTerm5761);
+            	        	        	        if  (HASEXCEPTION())
+            	        	        	        {
+            	        	        	            goto rulepostfixTermEx;
+            	        	        	        }
+            	        	        	        if (HASFAILED())
+            	        	        	        {
+            	        	        	            return ;
+            	        	        	        }
+
+
+            	        	        	        if ( BACKTRACKING==0 )
+            	        	        	        {
+            	        	        	             left = false; 
+            	        	        	        }
+
+
+            	        	        	    }
+            	        	        	    break;
+
+            	        	            }
+            	        	        }
+
+            	        	        FOLLOWPUSH(FOLLOW_numeral_in_postfixTerm5769);
+            	        	        k=numeral(ctx);
+
+            	        	        FOLLOWPOP();
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto rulepostfixTermEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	        if ( BACKTRACKING==0 )
+            	        	        {
+            	        	             // Defined in:
+            	        	                    // http://www.cs.nyu.edu/acsys/cvc3/doc/user_doc.html#user_doc_pres_lang_expr_bit
+            	        	                    if(left) {
+            	        	                      f = MK_EXPR(kind::BITVECTOR_CONCAT, f, MK_CONST(BitVector(k)));
+            	        	                    } else {
+            	        	                      unsigned n = BitVectorType(f.getType()).getSize();
+            	        	                      f = MK_EXPR(kind::BITVECTOR_CONCAT, MK_CONST(BitVector(k)),
+            	        	                                  MK_EXPR(MK_CONST(BitVectorExtract(n - 1, k)), f));
+            	        	                    }
+            	        	                  
+            	        	        }
+
+
+            	        	    }
+            	        	    break;
+            	        	case 3:
+            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1757:7: LPAREN formula[f] ( COMMA formula[f] )* RPAREN
+            	        	    {
+            	        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_postfixTerm5794);
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto rulepostfixTermEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	        if ( BACKTRACKING==0 )
+            	        	        {
+            	        	             args.push_back(f); 
+            	        	        }
+
+
+            	        	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm5804);
+            	        	        formula(ctx, f);
+
+            	        	        FOLLOWPOP();
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto rulepostfixTermEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	        if ( BACKTRACKING==0 )
+            	        	        {
+            	        	             args.push_back(f); 
+            	        	        }
+
+
+            	        	        // ../../../../../../src/parser/cvc/Cvc.g:1759:7: ( COMMA formula[f] )*
+
+            	        	        for (;;)
+            	        	        {
+            	        	            int alt90=2;
+            	        	            switch ( LA(1) )
+            	        	            {
+            	        	            case COMMA:
+            	        	            	{
+            	        	            		alt90=1;
+            	        	            	}
+            	        	                break;
+
+            	        	            }
+
+            	        	            switch (alt90)
+            	        	            {
+            	        	        	case 1:
+            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1759:9: COMMA formula[f]
+            	        	        	    {
+            	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_postfixTerm5817);
+            	        	        	        if  (HASEXCEPTION())
+            	        	        	        {
+            	        	        	            goto rulepostfixTermEx;
+            	        	        	        }
+            	        	        	        if (HASFAILED())
+            	        	        	        {
+            	        	        	            return ;
+            	        	        	        }
+
+
+            	        	        	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm5819);
+            	        	        	        formula(ctx, f);
+
+            	        	        	        FOLLOWPOP();
+            	        	        	        if  (HASEXCEPTION())
+            	        	        	        {
+            	        	        	            goto rulepostfixTermEx;
+            	        	        	        }
+            	        	        	        if (HASFAILED())
+            	        	        	        {
+            	        	        	            return ;
+            	        	        	        }
+
+
+            	        	        	        if ( BACKTRACKING==0 )
+            	        	        	        {
+            	        	        	             args.push_back(f); 
+            	        	        	        }
+
+
+            	        	        	    }
+            	        	        	    break;
+
+            	        	        	default:
+            	        	        	    goto loop90;	/* break out of the loop */
+            	        	        	    break;
+            	        	            }
+            	        	        }
+            	        	        loop90: ; /* Jump out to here if this rule does not match */
+
+
+            	        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_postfixTerm5827);
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto rulepostfixTermEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	        if ( BACKTRACKING==0 )
+            	        	        {
+            	        	             Type t = args.front().getType();
+            	        	                    Debug("parser") << "type is " << t << std::endl;
+            	        	                    Debug("parser") << "expr is " << args.front() << std::endl;
+            	        	                    if(PARSER_STATE->isDefinedFunction(args.front())) {
+            	        	                      f = MK_EXPR(CVC4::kind::APPLY, args);
+            	        	                    } else if(t.isFunction()) {
+            	        	                      f = MK_EXPR(CVC4::kind::APPLY_UF, args);
+            	        	                    } else if(t.isConstructor()) {
+            	        	                      f = MK_EXPR(CVC4::kind::APPLY_CONSTRUCTOR, args);
+            	        	                    } else if(t.isSelector()) {
+            	        	                      f = MK_EXPR(CVC4::kind::APPLY_SELECTOR, args);
+            	        	                    } else if(t.isTester()) {
+            	        	                      f = MK_EXPR(CVC4::kind::APPLY_TESTER, args);
+            	        	                    } else {
+            	        	                      PARSER_STATE->parseError("internal error: unhandled function application kind");
+            	        	                    }
+            	        	                  
+            	        	        }
+
+
+            	        	    }
+            	        	    break;
+            	        	case 4:
+            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1780:7: DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral )
+            	        	    {
+            	        	         MATCHT(DOT, &FOLLOW_DOT_in_postfixTerm5859);
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto rulepostfixTermEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	        // ../../../../../../src/parser/cvc/Cvc.g:1781:7: ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral )
+            	        	        {
+            	        	            int alt91=2;
+            	        	            switch ( LA(1) )
+            	        	            {
+            	        	            case IDENTIFIER:
+            	        	            	{
+            	        	            		alt91=1;
+            	        	            	}
+            	        	                break;
+            	        	            case INTEGER_LITERAL:
+            	        	            	{
+            	        	            		alt91=2;
+            	        	            	}
+            	        	                break;
+
+            	        	            default:
+            	        	                if (BACKTRACKING>0)
+            	        	                {
+            	        	                    FAILEDFLAG = ANTLR3_TRUE;
+            	        	                    return ;
+            	        	                }
+
+            	        	                CONSTRUCTEX();
+            	        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            	        	                EXCEPTION->message      = (void *)"";
+            	        	                EXCEPTION->decisionNum  = 91;
+            	        	                EXCEPTION->state        = 0;
+
+
+            	        	                goto rulepostfixTermEx;
+
+            	        	            }
+
+            	        	            switch (alt91)
+            	        	            {
+            	        	        	case 1:
+            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1781:9: identifier[id,CHECK_NONE,SYM_VARIABLE]
+            	        	        	    {
+            	        	        	        FOLLOWPUSH(FOLLOW_identifier_in_postfixTerm5869);
+            	        	        	        identifier(ctx, id, CHECK_NONE, SYM_VARIABLE);
+
+            	        	        	        FOLLOWPOP();
+            	        	        	        if  (HASEXCEPTION())
+            	        	        	        {
+            	        	        	            goto rulepostfixTermEx;
+            	        	        	        }
+            	        	        	        if (HASFAILED())
+            	        	        	        {
+            	        	        	            return ;
+            	        	        	        }
+
+
+            	        	        	        if ( BACKTRACKING==0 )
+            	        	        	        {
+            	        	        	             Type t = f.getType();
+            	        	        	                      if(! t.isRecord()) {
+            	        	        	                        PARSER_STATE->parseError("record-select applied to non-record");
+            	        	        	                      }
+            	        	        	                      const Record& rec = ((DatatypeType)t).getRecord();
+            	        	        	                      if(!rec.contains(id)){
+            	        	        	                        PARSER_STATE->parseError(std::string("no such field `") + id + "' in record");
+            	        	        	                      }
+            	        	        	                      const Datatype & dt = ((DatatypeType)t).getDatatype();
+            	        	        	                      std::vector<Expr> sargs;
+            	        	        	                      sargs.push_back( dt[0][id].getSelector() );
+            	        	        	                      sargs.push_back( f );
+            	        	        	                      f = MK_EXPR(CVC4::kind::APPLY_SELECTOR_TOTAL,sargs);
+            	        	        	                    
+            	        	        	        }
+
+
+            	        	        	    }
+            	        	        	    break;
+            	        	        	case 2:
+            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1796:9: k= numeral
+            	        	        	    {
+            	        	        	        FOLLOWPUSH(FOLLOW_numeral_in_postfixTerm5892);
+            	        	        	        k=numeral(ctx);
+
+            	        	        	        FOLLOWPOP();
+            	        	        	        if  (HASEXCEPTION())
+            	        	        	        {
+            	        	        	            goto rulepostfixTermEx;
+            	        	        	        }
+            	        	        	        if (HASFAILED())
+            	        	        	        {
+            	        	        	            return ;
+            	        	        	        }
+
+
+            	        	        	        if ( BACKTRACKING==0 )
+            	        	        	        {
+            	        	        	             Type t = f.getType();
+            	        	        	                      if(! t.isTuple()) {
+            	        	        	                        PARSER_STATE->parseError("tuple-select applied to non-tuple");
+            	        	        	                      }
+            	        	        	                      size_t length = ((DatatypeType)t).getTupleLength();
+            	        	        	                      if(k >= length) {
+            	        	        	                        std::stringstream ss;
+            	        	        	                        ss << "tuple is of length " << length << "; cannot access index " << k;
+            	        	        	                        PARSER_STATE->parseError(ss.str());
+            	        	        	                      }
+            	        	        	                      const Datatype & dt = ((DatatypeType)t).getDatatype();
+            	        	        	                      std::vector<Expr> sargs;
+            	        	        	                      sargs.push_back( dt[0][k].getSelector() );
+            	        	        	                      sargs.push_back( f );
+            	        	        	                      f = MK_EXPR(CVC4::kind::APPLY_SELECTOR_TOTAL,sargs);
+            	        	        	                    
+            	        	        	        }
+
+
+            	        	        	    }
+            	        	        	    break;
+
+            	        	            }
+            	        	        }
+
+            	        	    }
+            	        	    break;
+
+            	        	default:
+            	        	    goto loop92;	/* break out of the loop */
+            	        	    break;
+            	            }
+            	        }
+            	        loop92: ; /* Jump out to here if this rule does not match */
+
+
+            	    }
+            	    break;
+            	case 2:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1815:7: FLOOR_TOK LPAREN formula[f] RPAREN
+            	    {
+            	         MATCHT(FLOOR_TOK, &FOLLOW_FLOOR_TOK_in_postfixTerm5925);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_postfixTerm5927);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm5929);
+            	        formula(ctx, f);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_postfixTerm5932);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        if ( BACKTRACKING==0 )
+            	        {
+            	             f = MK_EXPR(CVC4::kind::TO_INTEGER, f); 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 3:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1817:7: IS_INTEGER_TOK LPAREN formula[f] RPAREN
+            	    {
+            	         MATCHT(IS_INTEGER_TOK, &FOLLOW_IS_INTEGER_TOK_in_postfixTerm5948);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_postfixTerm5950);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm5952);
+            	        formula(ctx, f);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_postfixTerm5955);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        if ( BACKTRACKING==0 )
+            	        {
+            	             f = MK_EXPR(CVC4::kind::IS_INTEGER, f); 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 4:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1819:7: ABS_TOK LPAREN formula[f] RPAREN
+            	    {
+            	         MATCHT(ABS_TOK, &FOLLOW_ABS_TOK_in_postfixTerm5971);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_postfixTerm5973);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm5975);
+            	        formula(ctx, f);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_postfixTerm5978);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        if ( BACKTRACKING==0 )
+            	        {
+            	             f = MK_EXPR(CVC4::kind::ABS, f); 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 5:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1821:7: DIVISIBLE_TOK LPAREN formula[f] COMMA n= numeral RPAREN
+            	    {
+            	         MATCHT(DIVISIBLE_TOK, &FOLLOW_DIVISIBLE_TOK_in_postfixTerm5994);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_postfixTerm5996);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm5998);
+            	        formula(ctx, f);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	         MATCHT(COMMA, &FOLLOW_COMMA_in_postfixTerm6001);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_numeral_in_postfixTerm6005);
+            	        n=numeral(ctx);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_postfixTerm6007);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        if ( BACKTRACKING==0 )
+            	        {
+            	             f = MK_EXPR(CVC4::kind::DIVISIBLE, MK_CONST(CVC4::Divisible(n)), f); 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 6:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1823:7: DISTINCT_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN
+            	    {
+            	         MATCHT(DISTINCT_TOK, &FOLLOW_DISTINCT_TOK_in_postfixTerm6023);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_postfixTerm6025);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm6033);
+            	        formula(ctx, f);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        if ( BACKTRACKING==0 )
+            	        {
+            	             args.push_back(f); 
+            	        }
+
+
+            	        // ../../../../../../src/parser/cvc/Cvc.g:1825:7: ( COMMA formula[f] )*
+
+            	        for (;;)
+            	        {
+            	            int alt93=2;
+            	            switch ( LA(1) )
+            	            {
+            	            case COMMA:
+            	            	{
+            	            		alt93=1;
+            	            	}
+            	                break;
+
+            	            }
+
+            	            switch (alt93)
+            	            {
+            	        	case 1:
+            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1825:9: COMMA formula[f]
+            	        	    {
+            	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_postfixTerm6046);
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto rulepostfixTermEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm6048);
+            	        	        formula(ctx, f);
+
+            	        	        FOLLOWPOP();
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto rulepostfixTermEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	        if ( BACKTRACKING==0 )
+            	        	        {
+            	        	             args.push_back(f); 
+            	        	        }
+
+
+            	        	    }
+            	        	    break;
+
+            	        	default:
+            	        	    goto loop93;	/* break out of the loop */
+            	        	    break;
+            	            }
+            	        }
+            	        loop93: ; /* Jump out to here if this rule does not match */
+
+
+            	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_postfixTerm6056);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        if ( BACKTRACKING==0 )
+            	        {
+            	             f = (args.size() == 1) ? MK_CONST(bool(true)) : MK_EXPR(CVC4::kind::DISTINCT, args); 
+            	        }
+
+
+            	    }
+            	    break;
+
+                }
+            }
+
+            // ../../../../../../src/parser/cvc/Cvc.g:1828:5: ( typeAscription[f, t] )?
+            {
+                int alt95=2;
+                switch ( LA(1) )
+                {
+                    case COLON:
+                    	{
+                    		switch ( LA(2) )
+                    		{
+                    		    case COLON:
+                    		    	{
+                    		    		alt95=1;
+                    		    	}
+                    		        break;
+                    		}
+
+                    	}
+                        break;
+                }
+
+                switch (alt95)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:1828:7: typeAscription[f, t]
+            	    {
+            	        FOLLOWPUSH(FOLLOW_typeAscription_in_postfixTerm6078);
+            	        typeAscription(ctx, f, t);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulepostfixTermEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        if ( BACKTRACKING==0 )
+            	        {
+            	             if(f.getKind() == CVC4::kind::APPLY_CONSTRUCTOR && t.isDatatype()) {
+            	                      std::vector<CVC4::Expr> v;
+            	                      Expr e = f.getOperator();
+            	                      const DatatypeConstructor& dtc = Datatype::datatypeOf(e)[Datatype::indexOf(e)];
+            	                      v.push_back(MK_EXPR( CVC4::kind::APPLY_TYPE_ASCRIPTION,
+            	                                           MK_CONST(AscriptionType(dtc.getSpecializedConstructorType(t))), f.getOperator() ));
+            	                      v.insert(v.end(), f.begin(), f.end());
+            	                      f = MK_EXPR(CVC4::kind::APPLY_CONSTRUCTOR, v);
+            	                    } else if(f.getKind() == CVC4::kind::EMPTYSET && t.isSet()) {
+            	                      f = MK_CONST(CVC4::EmptySet(t));
+            	                    } else if(f.getKind() == CVC4::kind::UNIVERSE_SET && t.isSet()) {
+            	                      f = EXPR_MANAGER->mkUniqueVar(t, kind::UNIVERSE_SET);
+            	                    } else {
+            	                      if(f.getType() != t) {
+            	                        PARSER_STATE->parseError("Type ascription not satisfied.");
+            	                      }
+            	                    }
+            	                  
+            	        }
+
+
+            	    }
+            	    break;
+
+                }
+            }
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulepostfixTermEx; /* Prevent compiler warnings */
+    rulepostfixTermEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end postfixTerm */
+
+/**
+ * $ANTLR start bvTerm
+ * ../../../../../../src/parser/cvc/Cvc.g:1850:1: bvTerm[CVC4::Expr& f] : ( BVXOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVNAND_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVCOMP_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVXNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVUMINUS_TOK LPAREN formula[f] RPAREN | BVPLUS_TOK LPAREN k= numeral COMMA formula[f] ( COMMA formula[f2] )+ RPAREN | BVSUB_TOK LPAREN k=  [...]
+ */
+static void
+bvTerm(pCvcParser ctx, CVC4::Expr& f)
+{
+    unsigned k;
+    #undef	RETURN_TYPE_k
+    #define	RETURN_TYPE_k unsigned
+
+    /* Initialize rule variables
+     */
+
+
+      Expr f2;
+      std::vector<Expr> args;
+
+    {
+        {
+            //  ../../../../../../src/parser/cvc/Cvc.g:1856:3: ( BVXOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVNAND_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVCOMP_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVXNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVUMINUS_TOK LPAREN formula[f] RPAREN | BVPLUS_TOK LPAREN k= numeral COMMA formula[f] ( COMMA formula[f2] )+ RPAREN | BVSUB_TOK LPAREN k= numeral COM [...]
+
+            ANTLR3_UINT32 alt97;
+
+            alt97=31;
+
+            switch ( LA(1) )
+            {
+            case BVXOR_TOK:
+            	{
+            		alt97=1;
+            	}
+                break;
+            case BVNAND_TOK:
+            	{
+            		alt97=2;
+            	}
+                break;
+            case BVNOR_TOK:
+            	{
+            		alt97=3;
+            	}
+                break;
+            case BVCOMP_TOK:
+            	{
+            		alt97=4;
+            	}
+                break;
+            case BVXNOR_TOK:
+            	{
+            		alt97=5;
+            	}
+                break;
+            case BVUMINUS_TOK:
+            	{
+            		alt97=6;
+            	}
+                break;
+            case BVPLUS_TOK:
+            	{
+            		alt97=7;
+            	}
+                break;
+            case BVSUB_TOK:
+            	{
+            		alt97=8;
+            	}
+                break;
+            case BVMULT_TOK:
+            	{
+            		alt97=9;
+            	}
+                break;
+            case BVUDIV_TOK:
+            	{
+            		alt97=10;
+            	}
+                break;
+            case BVSDIV_TOK:
+            	{
+            		alt97=11;
+            	}
+                break;
+            case BVUREM_TOK:
+            	{
+            		alt97=12;
+            	}
+                break;
+            case BVSREM_TOK:
+            	{
+            		alt97=13;
+            	}
+                break;
+            case BVSMOD_TOK:
+            	{
+            		alt97=14;
+            	}
+                break;
+            case BVSHL_TOK:
+            	{
+            		alt97=15;
+            	}
+                break;
+            case BVASHR_TOK:
+            	{
+            		alt97=16;
+            	}
+                break;
+            case BVLSHR_TOK:
+            	{
+            		alt97=17;
+            	}
+                break;
+            case SX_TOK:
+            	{
+            		alt97=18;
+            	}
+                break;
+            case BVZEROEXTEND_TOK:
+            	{
+            		alt97=19;
+            	}
+                break;
+            case BVREPEAT_TOK:
+            	{
+            		alt97=20;
+            	}
+                break;
+            case BVROTR_TOK:
+            	{
+            		alt97=21;
+            	}
+                break;
+            case BVROTL_TOK:
+            	{
+            		alt97=22;
+            	}
+                break;
+            case BVLT_TOK:
+            	{
+            		alt97=23;
+            	}
+                break;
+            case BVLE_TOK:
+            	{
+            		alt97=24;
+            	}
+                break;
+            case BVGT_TOK:
+            	{
+            		alt97=25;
+            	}
+                break;
+            case BVGE_TOK:
+            	{
+            		alt97=26;
+            	}
+                break;
+            case BVSLT_TOK:
+            	{
+            		alt97=27;
+            	}
+                break;
+            case BVSLE_TOK:
+            	{
+            		alt97=28;
+            	}
+                break;
+            case BVSGT_TOK:
+            	{
+            		alt97=29;
+            	}
+                break;
+            case BVSGE_TOK:
+            	{
+            		alt97=30;
+            	}
+                break;
+            case ARRAY_TOK:
+            case BAR:
+            case BINARY_LITERAL:
+            case DECIMAL_LITERAL:
+            case FALSE_TOK:
+            case HEX_LITERAL:
+            case IDENTIFIER:
+            case IF_TOK:
+            case INTEGER_LITERAL:
+            case LBRACE:
+            case LPAREN:
+            case PARENHASH:
+            case SETS_CARD_TOK:
+            case STRING_CONCAT_TOK:
+            case STRING_CONTAINS_TOK:
+            case STRING_INDEXOF_TOK:
+            case STRING_ITOS_TOK:
+            case STRING_LENGTH_TOK:
+            case STRING_LITERAL:
+            case STRING_PREFIXOF_TOK:
+            case STRING_REPLACE_TOK:
+            case STRING_STOI_TOK:
+            case STRING_STOU16_TOK:
+            case STRING_STOU32_TOK:
+            case STRING_SUBSTR_TOK:
+            case STRING_SUFFIXOF_TOK:
+            case STRING_U16TOS_TOK:
+            case STRING_U32TOS_TOK:
+            case TRUE_TOK:
+            case UNIVSET_TOK:
+            	{
+            		alt97=31;
+            	}
+                break;
+
+            default:
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 97;
+                EXCEPTION->state        = 0;
+
+
+                goto rulebvTermEx;
+
+            }
+
+            switch (alt97)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1856:5: BVXOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVXOR_TOK, &FOLLOW_BVXOR_TOK_in_bvTerm6119);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6121);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6123);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6126);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6128);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6131);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_XOR, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1858:5: BVNAND_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVNAND_TOK, &FOLLOW_BVNAND_TOK_in_bvTerm6143);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6145);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6147);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6150);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6152);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6155);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_NAND, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1860:5: BVNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVNOR_TOK, &FOLLOW_BVNOR_TOK_in_bvTerm6167);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6169);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6171);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6174);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6176);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6179);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_NOR, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1862:5: BVCOMP_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVCOMP_TOK, &FOLLOW_BVCOMP_TOK_in_bvTerm6191);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6193);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6195);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6198);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6200);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6203);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_COMP, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1864:5: BVXNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVXNOR_TOK, &FOLLOW_BVXNOR_TOK_in_bvTerm6215);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6217);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6219);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6222);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6224);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6227);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_XNOR, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1868:5: BVUMINUS_TOK LPAREN formula[f] RPAREN
+        	    {
+        	         MATCHT(BVUMINUS_TOK, &FOLLOW_BVUMINUS_TOK_in_bvTerm6246);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6248);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6250);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6253);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_NEG, f); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1871:5: BVPLUS_TOK LPAREN k= numeral COMMA formula[f] ( COMMA formula[f2] )+ RPAREN
+        	    {
+        	         MATCHT(BVPLUS_TOK, &FOLLOW_BVPLUS_TOK_in_bvTerm6271);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6273);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6277);
+        	        k=numeral(ctx);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6279);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6281);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             args.push_back(f); 
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:1872:5: ( COMMA formula[f2] )+
+        	        {
+        	            int cnt96=0;
+
+        	            for (;;)
+        	            {
+        	                int alt96=2;
+        	        	switch ( LA(1) )
+        	        	{
+        	        	case COMMA:
+        	        		{
+        	        			alt96=1;
+        	        		}
+        	        	    break;
+
+        	        	}
+
+        	        	switch (alt96)
+        	        	{
+        	        	    case 1:
+        	        	        // ../../../../../../src/parser/cvc/Cvc.g:1872:7: COMMA formula[f2]
+        	        	        {
+        	        	             MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6292);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto rulebvTermEx;
+        	        	            }
+        	        	            if (HASFAILED())
+        	        	            {
+        	        	                return ;
+        	        	            }
+
+
+        	        	            FOLLOWPUSH(FOLLOW_formula_in_bvTerm6294);
+        	        	            formula(ctx, f2);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto rulebvTermEx;
+        	        	            }
+        	        	            if (HASFAILED())
+        	        	            {
+        	        	                return ;
+        	        	            }
+
+
+        	        	            if ( BACKTRACKING==0 )
+        	        	            {
+        	        	                 args.push_back(f2); 
+        	        	            }
+
+
+        	        	        }
+        	        	        break;
+
+        	        	    default:
+
+        	        		if ( cnt96 >= 1 )
+        	        		{
+        	        		    goto loop96;
+        	        		}
+        	        		if (BACKTRACKING>0)
+        	        		{
+        	        		    FAILEDFLAG = ANTLR3_TRUE;
+        	        		    return ;
+        	        		}
+
+        	        		/* mismatchedSetEx()
+        	        		 */
+        	        		CONSTRUCTEX();
+        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        		goto rulebvTermEx;
+        	        	}
+        	        	cnt96++;
+        	            }
+        	            loop96: ;	/* Jump to here if this rule does not match */
+        	        }
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6302);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+
+        	                  if (k <= 0) {
+        	                    PARSER_STATE->parseError("BVPLUS(k,_,_) must have k > 0");
+        	                  }
+        	                  for (unsigned i = 0; i < args.size(); ++ i) {
+        	                    ENSURE_BV_SIZE(k, args[i]);
+        	                  }
+        	                  f = MK_EXPR(CVC4::kind::BITVECTOR_PLUS, args);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 8:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1883:5: BVSUB_TOK LPAREN k= numeral COMMA formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVSUB_TOK, &FOLLOW_BVSUB_TOK_in_bvTerm6320);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6322);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6326);
+        	        k=numeral(ctx);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6328);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6330);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6333);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6335);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6338);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+
+        	                  if (k <= 0) {
+        	                    PARSER_STATE->parseError("BVSUB(k,_,_) must have k > 0");
+        	                  }
+        	                  ENSURE_BV_SIZE(k, f);
+        	                  ENSURE_BV_SIZE(k, f2);
+        	                  f = MK_EXPR(CVC4::kind::BITVECTOR_SUB, f, f2);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 9:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1893:5: BVMULT_TOK LPAREN k= numeral COMMA formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVMULT_TOK, &FOLLOW_BVMULT_TOK_in_bvTerm6356);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6358);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6362);
+        	        k=numeral(ctx);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6364);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6366);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6369);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6371);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6374);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+
+        	                  if (k <= 0) {
+        	                    PARSER_STATE->parseError("BVMULT(k,_,_) must have k > 0");
+        	                  }
+        	                  ENSURE_BV_SIZE(k, f);
+        	                  ENSURE_BV_SIZE(k, f2);
+        	                  f = MK_EXPR(CVC4::kind::BITVECTOR_MULT, f, f2);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 10:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1903:5: BVUDIV_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVUDIV_TOK, &FOLLOW_BVUDIV_TOK_in_bvTerm6392);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6394);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6396);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6399);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6401);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6404);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_UDIV, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 11:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1906:5: BVSDIV_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVSDIV_TOK, &FOLLOW_BVSDIV_TOK_in_bvTerm6422);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6424);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6426);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6429);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6431);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6434);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_SDIV, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 12:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1909:5: BVUREM_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVUREM_TOK, &FOLLOW_BVUREM_TOK_in_bvTerm6452);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6454);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6456);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6459);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6461);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6464);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_UREM, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 13:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1912:5: BVSREM_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVSREM_TOK, &FOLLOW_BVSREM_TOK_in_bvTerm6482);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6484);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6486);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6489);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6491);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6494);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_SREM, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 14:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1915:5: BVSMOD_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVSMOD_TOK, &FOLLOW_BVSMOD_TOK_in_bvTerm6512);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6514);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6516);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6519);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6521);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6524);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_SMOD, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 15:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1918:5: BVSHL_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVSHL_TOK, &FOLLOW_BVSHL_TOK_in_bvTerm6542);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6544);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6546);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6549);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6551);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6554);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_SHL, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 16:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1921:5: BVASHR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVASHR_TOK, &FOLLOW_BVASHR_TOK_in_bvTerm6572);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6574);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6576);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6579);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6581);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6584);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_ASHR, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 17:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1924:5: BVLSHR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVLSHR_TOK, &FOLLOW_BVLSHR_TOK_in_bvTerm6602);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6604);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6606);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6609);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6611);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6614);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_LSHR, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 18:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1927:5: SX_TOK LPAREN formula[f] COMMA k= numeral RPAREN
+        	    {
+        	         MATCHT(SX_TOK, &FOLLOW_SX_TOK_in_bvTerm6632);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6634);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6636);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6639);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6643);
+        	        k=numeral(ctx);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6645);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             unsigned n = BitVectorType(f.getType()).getSize();
+        	                  // Sign extension in TheoryBitVector is defined as in SMT-LIB
+        	                  // which is different than in the CVC language
+        	                  // SX(BITVECTOR(k), n) in CVC language extends to n bits
+        	                  // In SMT-LIB, such a thing expands to k + n bits
+        	                  f = MK_EXPR(MK_CONST(BitVectorSignExtend(k - n)), f); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 19:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1935:5: BVZEROEXTEND_TOK LPAREN formula[f] COMMA k= numeral RPAREN
+        	    {
+        	         MATCHT(BVZEROEXTEND_TOK, &FOLLOW_BVZEROEXTEND_TOK_in_bvTerm6663);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6665);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6667);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6670);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6674);
+        	        k=numeral(ctx);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6676);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             unsigned n = BitVectorType(f.getType()).getSize();
+        	                  // Zero extension in TheoryBitVector is defined as in SMT-LIB
+        	                  // which is the same as in CVC3, but different than SX!
+        	                  // SX(BITVECTOR(k), n) in CVC language extends to n bits
+        	                  // BVZEROEXTEND(BITVECTOR(k), n) in CVC language extends to k + n bits
+        	                  f = MK_EXPR(MK_CONST(BitVectorZeroExtend(k)), f); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 20:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1943:5: BVREPEAT_TOK LPAREN formula[f] COMMA k= numeral RPAREN
+        	    {
+        	         MATCHT(BVREPEAT_TOK, &FOLLOW_BVREPEAT_TOK_in_bvTerm6694);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6696);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6698);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6701);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6705);
+        	        k=numeral(ctx);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6707);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(MK_CONST(BitVectorRepeat(k)), f); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 21:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1946:5: BVROTR_TOK LPAREN formula[f] COMMA k= numeral RPAREN
+        	    {
+        	         MATCHT(BVROTR_TOK, &FOLLOW_BVROTR_TOK_in_bvTerm6725);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6727);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6729);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6732);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6736);
+        	        k=numeral(ctx);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6738);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(MK_CONST(BitVectorRotateRight(k)), f); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 22:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1949:5: BVROTL_TOK LPAREN formula[f] COMMA k= numeral RPAREN
+        	    {
+        	         MATCHT(BVROTL_TOK, &FOLLOW_BVROTL_TOK_in_bvTerm6756);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6758);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6760);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6763);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6767);
+        	        k=numeral(ctx);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6769);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(MK_CONST(BitVectorRotateLeft(k)), f); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 23:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1953:5: BVLT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVLT_TOK, &FOLLOW_BVLT_TOK_in_bvTerm6788);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6790);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6792);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6795);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6797);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6800);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_ULT, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 24:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1955:5: BVLE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVLE_TOK, &FOLLOW_BVLE_TOK_in_bvTerm6812);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6814);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6816);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6819);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6821);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6824);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_ULE, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 25:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1957:5: BVGT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVGT_TOK, &FOLLOW_BVGT_TOK_in_bvTerm6836);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6838);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6840);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6843);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6845);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6848);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_UGT, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 26:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1959:5: BVGE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVGE_TOK, &FOLLOW_BVGE_TOK_in_bvTerm6860);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6862);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6864);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6867);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6869);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6872);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_UGE, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 27:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1961:5: BVSLT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVSLT_TOK, &FOLLOW_BVSLT_TOK_in_bvTerm6884);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6886);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6888);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6891);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6893);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6896);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_SLT, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 28:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1963:5: BVSLE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVSLE_TOK, &FOLLOW_BVSLE_TOK_in_bvTerm6908);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6910);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6912);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6915);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6917);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6920);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_SLE, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 29:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1965:5: BVSGT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVSGT_TOK, &FOLLOW_BVSGT_TOK_in_bvTerm6932);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6934);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6936);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6939);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6941);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6944);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_SGT, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 30:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1967:5: BVSGE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(BVSGE_TOK, &FOLLOW_BVSGE_TOK_in_bvTerm6956);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6958);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6960);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6963);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6965);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6968);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::BITVECTOR_SGE, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 31:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1969:5: stringTerm[f]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_stringTerm_in_bvTerm6980);
+        	        stringTerm(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulebvTermEx; /* Prevent compiler warnings */
+    rulebvTermEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end bvTerm */
+
+/**
+ * $ANTLR start stringTerm
+ * ../../../../../../src/parser/cvc/Cvc.g:1972:1: stringTerm[CVC4::Expr& f] : ( STRING_CONCAT_TOK LPAREN formula[f] ( COMMA formula[f2] )+ RPAREN | STRING_LENGTH_TOK LPAREN formula[f] RPAREN | STRING_CONTAINS_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | STRING_SUBSTR_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN | STRING_INDEXOF_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN | STRING_REPLACE_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3 [...]
+ */
+static void
+stringTerm(pCvcParser ctx, CVC4::Expr& f)
+{
+    /* Initialize rule variables
+     */
+
+
+      Expr f2;
+      Expr f3;
+      std::string s;
+      std::vector<Expr> args;
+
+    {
+        {
+            //  ../../../../../../src/parser/cvc/Cvc.g:1980:3: ( STRING_CONCAT_TOK LPAREN formula[f] ( COMMA formula[f2] )+ RPAREN | STRING_LENGTH_TOK LPAREN formula[f] RPAREN | STRING_CONTAINS_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | STRING_SUBSTR_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN | STRING_INDEXOF_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN | STRING_REPLACE_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN | STRI [...]
+
+            ANTLR3_UINT32 alt99;
+
+            alt99=16;
+
+            switch ( LA(1) )
+            {
+            case STRING_CONCAT_TOK:
+            	{
+            		alt99=1;
+            	}
+                break;
+            case STRING_LENGTH_TOK:
+            	{
+            		alt99=2;
+            	}
+                break;
+            case STRING_CONTAINS_TOK:
+            	{
+            		alt99=3;
+            	}
+                break;
+            case STRING_SUBSTR_TOK:
+            	{
+            		alt99=4;
+            	}
+                break;
+            case STRING_INDEXOF_TOK:
+            	{
+            		alt99=5;
+            	}
+                break;
+            case STRING_REPLACE_TOK:
+            	{
+            		alt99=6;
+            	}
+                break;
+            case STRING_PREFIXOF_TOK:
+            	{
+            		alt99=7;
+            	}
+                break;
+            case STRING_SUFFIXOF_TOK:
+            	{
+            		alt99=8;
+            	}
+                break;
+            case STRING_STOI_TOK:
+            	{
+            		alt99=9;
+            	}
+                break;
+            case STRING_ITOS_TOK:
+            	{
+            		alt99=10;
+            	}
+                break;
+            case STRING_U16TOS_TOK:
+            	{
+            		alt99=11;
+            	}
+                break;
+            case STRING_STOU16_TOK:
+            	{
+            		alt99=12;
+            	}
+                break;
+            case STRING_U32TOS_TOK:
+            	{
+            		alt99=13;
+            	}
+                break;
+            case STRING_STOU32_TOK:
+            	{
+            		alt99=14;
+            	}
+                break;
+            case STRING_LITERAL:
+            	{
+            		alt99=15;
+            	}
+                break;
+            case ARRAY_TOK:
+            case BAR:
+            case BINARY_LITERAL:
+            case DECIMAL_LITERAL:
+            case FALSE_TOK:
+            case HEX_LITERAL:
+            case IDENTIFIER:
+            case IF_TOK:
+            case INTEGER_LITERAL:
+            case LBRACE:
+            case LPAREN:
+            case PARENHASH:
+            case SETS_CARD_TOK:
+            case TRUE_TOK:
+            case UNIVSET_TOK:
+            	{
+            		alt99=16;
+            	}
+                break;
+
+            default:
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 99;
+                EXCEPTION->state        = 0;
+
+
+                goto rulestringTermEx;
+
+            }
+
+            switch (alt99)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1980:5: STRING_CONCAT_TOK LPAREN formula[f] ( COMMA formula[f2] )+ RPAREN
+        	    {
+        	         MATCHT(STRING_CONCAT_TOK, &FOLLOW_STRING_CONCAT_TOK_in_stringTerm7006);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7008);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7010);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             args.push_back(f); 
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:1981:5: ( COMMA formula[f2] )+
+        	        {
+        	            int cnt98=0;
+
+        	            for (;;)
+        	            {
+        	                int alt98=2;
+        	        	switch ( LA(1) )
+        	        	{
+        	        	case COMMA:
+        	        		{
+        	        			alt98=1;
+        	        		}
+        	        	    break;
+
+        	        	}
+
+        	        	switch (alt98)
+        	        	{
+        	        	    case 1:
+        	        	        // ../../../../../../src/parser/cvc/Cvc.g:1981:7: COMMA formula[f2]
+        	        	        {
+        	        	             MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7021);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto rulestringTermEx;
+        	        	            }
+        	        	            if (HASFAILED())
+        	        	            {
+        	        	                return ;
+        	        	            }
+
+
+        	        	            FOLLOWPUSH(FOLLOW_formula_in_stringTerm7023);
+        	        	            formula(ctx, f2);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto rulestringTermEx;
+        	        	            }
+        	        	            if (HASFAILED())
+        	        	            {
+        	        	                return ;
+        	        	            }
+
+
+        	        	            if ( BACKTRACKING==0 )
+        	        	            {
+        	        	                 args.push_back(f2); 
+        	        	            }
+
+
+        	        	        }
+        	        	        break;
+
+        	        	    default:
+
+        	        		if ( cnt98 >= 1 )
+        	        		{
+        	        		    goto loop98;
+        	        		}
+        	        		if (BACKTRACKING>0)
+        	        		{
+        	        		    FAILEDFLAG = ANTLR3_TRUE;
+        	        		    return ;
+        	        		}
+
+        	        		/* mismatchedSetEx()
+        	        		 */
+        	        		CONSTRUCTEX();
+        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        		goto rulestringTermEx;
+        	        	}
+        	        	cnt98++;
+        	            }
+        	            loop98: ;	/* Jump to here if this rule does not match */
+        	        }
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7031);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::STRING_CONCAT, args); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1983:5: STRING_LENGTH_TOK LPAREN formula[f] RPAREN
+        	    {
+        	         MATCHT(STRING_LENGTH_TOK, &FOLLOW_STRING_LENGTH_TOK_in_stringTerm7043);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7045);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7047);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7050);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::STRING_LENGTH, f); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1985:5: STRING_CONTAINS_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(STRING_CONTAINS_TOK, &FOLLOW_STRING_CONTAINS_TOK_in_stringTerm7062);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7064);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7066);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7069);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7071);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7074);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::STRING_STRCTN, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1987:5: STRING_SUBSTR_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN
+        	    {
+        	         MATCHT(STRING_SUBSTR_TOK, &FOLLOW_STRING_SUBSTR_TOK_in_stringTerm7086);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7088);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7090);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7093);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7095);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7098);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7100);
+        	        formula(ctx, f3);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7103);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::STRING_SUBSTR, f, f2, f3); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1989:5: STRING_INDEXOF_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN
+        	    {
+        	         MATCHT(STRING_INDEXOF_TOK, &FOLLOW_STRING_INDEXOF_TOK_in_stringTerm7115);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7117);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7119);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7122);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7124);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7127);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7129);
+        	        formula(ctx, f3);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7132);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::STRING_STRIDOF, f, f2, f3); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1991:5: STRING_REPLACE_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN
+        	    {
+        	         MATCHT(STRING_REPLACE_TOK, &FOLLOW_STRING_REPLACE_TOK_in_stringTerm7144);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7146);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7148);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7151);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7153);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7156);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7158);
+        	        formula(ctx, f3);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7161);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::STRING_STRREPL, f, f2, f3); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1993:5: STRING_PREFIXOF_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(STRING_PREFIXOF_TOK, &FOLLOW_STRING_PREFIXOF_TOK_in_stringTerm7173);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7175);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7177);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7180);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7182);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7185);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::STRING_PREFIX, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 8:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1995:5: STRING_SUFFIXOF_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    {
+        	         MATCHT(STRING_SUFFIXOF_TOK, &FOLLOW_STRING_SUFFIXOF_TOK_in_stringTerm7197);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7199);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7201);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7204);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7206);
+        	        formula(ctx, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7209);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::STRING_SUFFIX, f, f2); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 9:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1997:5: STRING_STOI_TOK LPAREN formula[f] RPAREN
+        	    {
+        	         MATCHT(STRING_STOI_TOK, &FOLLOW_STRING_STOI_TOK_in_stringTerm7221);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7223);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7225);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7228);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::STRING_STOI, f); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 10:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:1999:5: STRING_ITOS_TOK LPAREN formula[f] RPAREN
+        	    {
+        	         MATCHT(STRING_ITOS_TOK, &FOLLOW_STRING_ITOS_TOK_in_stringTerm7240);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7242);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7244);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7247);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::STRING_ITOS, f); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 11:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2001:5: STRING_U16TOS_TOK LPAREN formula[f] RPAREN
+        	    {
+        	         MATCHT(STRING_U16TOS_TOK, &FOLLOW_STRING_U16TOS_TOK_in_stringTerm7259);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7261);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7263);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7266);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::STRING_U16TOS, f); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 12:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2003:5: STRING_STOU16_TOK LPAREN formula[f] RPAREN
+        	    {
+        	         MATCHT(STRING_STOU16_TOK, &FOLLOW_STRING_STOU16_TOK_in_stringTerm7278);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7280);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7282);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7285);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::STRING_STOU16, f); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 13:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2005:5: STRING_U32TOS_TOK LPAREN formula[f] RPAREN
+        	    {
+        	         MATCHT(STRING_U32TOS_TOK, &FOLLOW_STRING_U32TOS_TOK_in_stringTerm7297);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7299);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7301);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7304);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::STRING_U32TOS, f); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 14:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2007:5: STRING_STOU32_TOK LPAREN formula[f] RPAREN
+        	    {
+        	         MATCHT(STRING_STOU32_TOK, &FOLLOW_STRING_STOU32_TOK_in_stringTerm7316);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7318);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7320);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7323);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::STRING_STOU32, f); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 15:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2011:5: str[s]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_str_in_stringTerm7346);
+        	        str(ctx, s);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_CONST(CVC4::String(s)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 16:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2014:5: setsTerm[f]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_setsTerm_in_stringTerm7360);
+        	        setsTerm(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestringTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulestringTermEx; /* Prevent compiler warnings */
+    rulestringTermEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end stringTerm */
+
+/**
+ * $ANTLR start setsTerm
+ * ../../../../../../src/parser/cvc/Cvc.g:2017:1: setsTerm[CVC4::Expr& f] : ( SETS_CARD_TOK LPAREN formula[f] RPAREN | simpleTerm[f] );
+ */
+static void
+setsTerm(pCvcParser ctx, CVC4::Expr& f)
+{
+    /* Initialize rule variables
+     */
+
+
+
+    {
+        {
+            //  ../../../../../../src/parser/cvc/Cvc.g:2021:3: ( SETS_CARD_TOK LPAREN formula[f] RPAREN | simpleTerm[f] )
+
+            ANTLR3_UINT32 alt100;
+
+            alt100=2;
+
+            switch ( LA(1) )
+            {
+            case SETS_CARD_TOK:
+            	{
+            		alt100=1;
+            	}
+                break;
+            case ARRAY_TOK:
+            case BAR:
+            case BINARY_LITERAL:
+            case DECIMAL_LITERAL:
+            case FALSE_TOK:
+            case HEX_LITERAL:
+            case IDENTIFIER:
+            case IF_TOK:
+            case INTEGER_LITERAL:
+            case LBRACE:
+            case LPAREN:
+            case PARENHASH:
+            case TRUE_TOK:
+            case UNIVSET_TOK:
+            	{
+            		alt100=2;
+            	}
+                break;
+
+            default:
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 100;
+                EXCEPTION->state        = 0;
+
+
+                goto rulesetsTermEx;
+
+            }
+
+            switch (alt100)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2021:5: SETS_CARD_TOK LPAREN formula[f] RPAREN
+        	    {
+        	         MATCHT(SETS_CARD_TOK, &FOLLOW_SETS_CARD_TOK_in_setsTerm7388);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesetsTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_setsTerm7390);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesetsTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_setsTerm7392);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesetsTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_setsTerm7395);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesetsTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::CARD, f); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2023:5: simpleTerm[f]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_simpleTerm_in_setsTerm7407);
+        	        simpleTerm(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesetsTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesetsTermEx; /* Prevent compiler warnings */
+    rulesetsTermEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end setsTerm */
+
+/**
+ * $ANTLR start simpleTerm
+ * ../../../../../../src/parser/cvc/Cvc.g:2028:1: simpleTerm[CVC4::Expr& f] : ( iteTerm[f] | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | LPAREN RPAREN | PARENHASH HASHPAREN | LBRACE RBRACE | UNIVSET_TOK | LBRACE formula[f] ( COMMA formula[f] )* RBRACE | BAR BAR formula[f] BAR BAR | ARRAY_TOK LPAREN restrictedType[t, CHECK_DECLARED] OF_TOK restrictedType[t2, CHECK_DECLARED] RPAREN COLON simpleTerm[f] | TRUE_TOK | FALSE_TOK | DECIMAL_LITERAL | INTEGER_LITERAL | HEX_LITERAL | BINARY_LI [...]
+ */
+static void
+simpleTerm(pCvcParser ctx, CVC4::Expr& f)
+{
+    pANTLR3_COMMON_TOKEN    DECIMAL_LITERAL17;
+    pANTLR3_COMMON_TOKEN    INTEGER_LITERAL18;
+    pANTLR3_COMMON_TOKEN    HEX_LITERAL19;
+    pANTLR3_COMMON_TOKEN    BINARY_LITERAL20;
+
+    /* Initialize rule variables
+     */
+
+
+      std::string name;
+      std::vector<Expr> args;
+      std::vector<std::string> names;
+      Expr e;
+      Debug("parser-extra") << "term: " << AntlrInput::tokenText(LT(1)) << std::endl;
+      Type t, t2;
+
+    DECIMAL_LITERAL17       = NULL;
+    INTEGER_LITERAL18       = NULL;
+    HEX_LITERAL19       = NULL;
+    BINARY_LITERAL20       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/cvc/Cvc.g:2038:3: ( iteTerm[f] | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | LPAREN RPAREN | PARENHASH HASHPAREN | LBRACE RBRACE | UNIVSET_TOK | LBRACE formula[f] ( COMMA formula[f] )* RBRACE | BAR BAR formula[f] BAR BAR | ARRAY_TOK LPAREN restrictedType[t, CHECK_DECLARED] OF_TOK restrictedType[t2, CHECK_DECLARED] RPAREN COLON simpleTerm[f] | TRUE_TOK | FALSE_TOK | DECIMAL_LITERAL | INTEGER_LITERAL | HEX_LITERAL | BINARY_LITERAL | PARENHA [...]
+
+            ANTLR3_UINT32 alt104;
+
+            alt104=17;
+
+            switch ( LA(1) )
+            {
+            case IF_TOK:
+            	{
+            		alt104=1;
+            	}
+                break;
+            case LPAREN:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case RPAREN:
+            			{
+            				alt104=3;
+            			}
+            		    break;
+            		case ABS_TOK:
+            		case ARRAY_TOK:
+            		case BAR:
+            		case BINARY_LITERAL:
+            		case BVASHR_TOK:
+            		case BVCOMP_TOK:
+            		case BVGE_TOK:
+            		case BVGT_TOK:
+            		case BVLE_TOK:
+            		case BVLSHR_TOK:
+            		case BVLT_TOK:
+            		case BVMULT_TOK:
+            		case BVNAND_TOK:
+            		case BVNEG_TOK:
+            		case BVNOR_TOK:
+            		case BVPLUS_TOK:
+            		case BVREPEAT_TOK:
+            		case BVROTL_TOK:
+            		case BVROTR_TOK:
+            		case BVSDIV_TOK:
+            		case BVSGE_TOK:
+            		case BVSGT_TOK:
+            		case BVSHL_TOK:
+            		case BVSLE_TOK:
+            		case BVSLT_TOK:
+            		case BVSMOD_TOK:
+            		case BVSREM_TOK:
+            		case BVSUB_TOK:
+            		case BVUDIV_TOK:
+            		case BVUMINUS_TOK:
+            		case BVUREM_TOK:
+            		case BVXNOR_TOK:
+            		case BVXOR_TOK:
+            		case BVZEROEXTEND_TOK:
+            		case DECIMAL_LITERAL:
+            		case DISTINCT_TOK:
+            		case DIVISIBLE_TOK:
+            		case EXISTS_TOK:
+            		case FALSE_TOK:
+            		case FLOOR_TOK:
+            		case FORALL_TOK:
+            		case HEX_LITERAL:
+            		case IDENTIFIER:
+            		case IF_TOK:
+            		case INTEGER_LITERAL:
+            		case IS_INTEGER_TOK:
+            		case LAMBDA:
+            		case LBRACE:
+            		case LET_TOK:
+            		case LPAREN:
+            		case MINUS_TOK:
+            		case NOT_TOK:
+            		case PARENHASH:
+            		case SETS_CARD_TOK:
+            		case STRING_CONCAT_TOK:
+            		case STRING_CONTAINS_TOK:
+            		case STRING_INDEXOF_TOK:
+            		case STRING_ITOS_TOK:
+            		case STRING_LENGTH_TOK:
+            		case STRING_LITERAL:
+            		case STRING_PREFIXOF_TOK:
+            		case STRING_REPLACE_TOK:
+            		case STRING_STOI_TOK:
+            		case STRING_STOU16_TOK:
+            		case STRING_STOU32_TOK:
+            		case STRING_SUBSTR_TOK:
+            		case STRING_SUFFIXOF_TOK:
+            		case STRING_U16TOS_TOK:
+            		case STRING_U32TOS_TOK:
+            		case SX_TOK:
+            		case TRANSCLOSURE_TOK:
+            		case TRANSPOSE_TOK:
+            		case TRUE_TOK:
+            		case TUPLE_TOK:
+            		case UNIVSET_TOK:
+            			{
+            				alt104=2;
+            			}
+            		    break;
+
+            		default:
+            		    if (BACKTRACKING>0)
+            		    {
+            		        FAILEDFLAG = ANTLR3_TRUE;
+            		        return ;
+            		    }
+
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 104;
+            		    EXCEPTION->state        = 2;
+
+
+            		    goto rulesimpleTermEx;
+
+            		}
+
+            	}
+                break;
+            case PARENHASH:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case HASHPAREN:
+            			{
+            				alt104=4;
+            			}
+            		    break;
+            		case IDENTIFIER:
+            			{
+            				alt104=16;
+            			}
+            		    break;
+
+            		default:
+            		    if (BACKTRACKING>0)
+            		    {
+            		        FAILEDFLAG = ANTLR3_TRUE;
+            		        return ;
+            		    }
+
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 104;
+            		    EXCEPTION->state        = 3;
+
+
+            		    goto rulesimpleTermEx;
+
+            		}
+
+            	}
+                break;
+            case LBRACE:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case RBRACE:
+            			{
+            				alt104=5;
+            			}
+            		    break;
+            		case ABS_TOK:
+            		case ARRAY_TOK:
+            		case BAR:
+            		case BINARY_LITERAL:
+            		case BVASHR_TOK:
+            		case BVCOMP_TOK:
+            		case BVGE_TOK:
+            		case BVGT_TOK:
+            		case BVLE_TOK:
+            		case BVLSHR_TOK:
+            		case BVLT_TOK:
+            		case BVMULT_TOK:
+            		case BVNAND_TOK:
+            		case BVNEG_TOK:
+            		case BVNOR_TOK:
+            		case BVPLUS_TOK:
+            		case BVREPEAT_TOK:
+            		case BVROTL_TOK:
+            		case BVROTR_TOK:
+            		case BVSDIV_TOK:
+            		case BVSGE_TOK:
+            		case BVSGT_TOK:
+            		case BVSHL_TOK:
+            		case BVSLE_TOK:
+            		case BVSLT_TOK:
+            		case BVSMOD_TOK:
+            		case BVSREM_TOK:
+            		case BVSUB_TOK:
+            		case BVUDIV_TOK:
+            		case BVUMINUS_TOK:
+            		case BVUREM_TOK:
+            		case BVXNOR_TOK:
+            		case BVXOR_TOK:
+            		case BVZEROEXTEND_TOK:
+            		case DECIMAL_LITERAL:
+            		case DISTINCT_TOK:
+            		case DIVISIBLE_TOK:
+            		case EXISTS_TOK:
+            		case FALSE_TOK:
+            		case FLOOR_TOK:
+            		case FORALL_TOK:
+            		case HEX_LITERAL:
+            		case IDENTIFIER:
+            		case IF_TOK:
+            		case INTEGER_LITERAL:
+            		case IS_INTEGER_TOK:
+            		case LAMBDA:
+            		case LBRACE:
+            		case LET_TOK:
+            		case LPAREN:
+            		case MINUS_TOK:
+            		case NOT_TOK:
+            		case PARENHASH:
+            		case SETS_CARD_TOK:
+            		case STRING_CONCAT_TOK:
+            		case STRING_CONTAINS_TOK:
+            		case STRING_INDEXOF_TOK:
+            		case STRING_ITOS_TOK:
+            		case STRING_LENGTH_TOK:
+            		case STRING_LITERAL:
+            		case STRING_PREFIXOF_TOK:
+            		case STRING_REPLACE_TOK:
+            		case STRING_STOI_TOK:
+            		case STRING_STOU16_TOK:
+            		case STRING_STOU32_TOK:
+            		case STRING_SUBSTR_TOK:
+            		case STRING_SUFFIXOF_TOK:
+            		case STRING_U16TOS_TOK:
+            		case STRING_U32TOS_TOK:
+            		case SX_TOK:
+            		case TRANSCLOSURE_TOK:
+            		case TRANSPOSE_TOK:
+            		case TRUE_TOK:
+            		case TUPLE_TOK:
+            		case UNIVSET_TOK:
+            			{
+            				alt104=7;
+            			}
+            		    break;
+
+            		default:
+            		    if (BACKTRACKING>0)
+            		    {
+            		        FAILEDFLAG = ANTLR3_TRUE;
+            		        return ;
+            		    }
+
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 104;
+            		    EXCEPTION->state        = 4;
+
+
+            		    goto rulesimpleTermEx;
+
+            		}
+
+            	}
+                break;
+            case UNIVSET_TOK:
+            	{
+            		alt104=6;
+            	}
+                break;
+            case BAR:
+            	{
+            		alt104=8;
+            	}
+                break;
+            case ARRAY_TOK:
+            	{
+            		alt104=9;
+            	}
+                break;
+            case TRUE_TOK:
+            	{
+            		alt104=10;
+            	}
+                break;
+            case FALSE_TOK:
+            	{
+            		alt104=11;
+            	}
+                break;
+            case DECIMAL_LITERAL:
+            	{
+            		alt104=12;
+            	}
+                break;
+            case INTEGER_LITERAL:
+            	{
+            		alt104=13;
+            	}
+                break;
+            case HEX_LITERAL:
+            	{
+            		alt104=14;
+            	}
+                break;
+            case BINARY_LITERAL:
+            	{
+            		alt104=15;
+            	}
+                break;
+            case IDENTIFIER:
+            	{
+            		alt104=17;
+            	}
+                break;
+
+            default:
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 104;
+                EXCEPTION->state        = 0;
+
+
+                goto rulesimpleTermEx;
+
+            }
+
+            switch (alt104)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2038:5: iteTerm[f]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_iteTerm_in_simpleTerm7438);
+        	        iteTerm(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2041:5: LPAREN formula[f] ( COMMA formula[f] )* RPAREN
+        	    {
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_simpleTerm7461);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_simpleTerm7463);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             args.push_back(f); 
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:2042:5: ( COMMA formula[f] )*
+
+        	        for (;;)
+        	        {
+        	            int alt101=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case COMMA:
+        	            	{
+        	            		alt101=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt101)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:2042:7: COMMA formula[f]
+        	        	    {
+        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_simpleTerm7474);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesimpleTermEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_formula_in_simpleTerm7476);
+        	        	        formula(ctx, f);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesimpleTermEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             args.push_back(f); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop101;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop101: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_simpleTerm7484);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             if(args.size() > 1) {
+        	                    /* If args has elements, we must be a tuple literal.
+        	                     * Otherwise, f is already the sub-formula, and
+        	                     * there's nothing to do */
+        	                    std::vector<Type> types;
+        	                    for(std::vector<Expr>::const_iterator i = args.begin(); i != args.end(); ++i) {
+        	                      types.push_back((*i).getType());
+        	                    }
+        	                    DatatypeType t = EXPR_MANAGER->mkTupleType(types);
+        	                    const Datatype& dt = t.getDatatype();
+        	                    args.insert( args.begin(), dt[0].getConstructor() );
+        	                    f = MK_EXPR(kind::APPLY_CONSTRUCTOR, args);
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2059:5: LPAREN RPAREN
+        	    {
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_simpleTerm7507);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_simpleTerm7509);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             std::vector<Type> types;
+        	                  DatatypeType t = EXPR_MANAGER->mkTupleType(types);
+        	                  const Datatype& dt = t.getDatatype();
+        	                  f = MK_EXPR(kind::APPLY_CONSTRUCTOR, dt[0].getConstructor()); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2066:5: PARENHASH HASHPAREN
+        	    {
+        	         MATCHT(PARENHASH, &FOLLOW_PARENHASH_in_simpleTerm7553);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(HASHPAREN, &FOLLOW_HASHPAREN_in_simpleTerm7555);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             DatatypeType t = EXPR_MANAGER->mkRecordType(std::vector< std::pair<std::string, Type> >());
+        	                  const Datatype& dt = t.getDatatype();
+        	                  f = MK_EXPR(kind::APPLY_CONSTRUCTOR, dt[0].getConstructor());
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2072:5: LBRACE RBRACE
+        	    {
+        	         MATCHT(LBRACE, &FOLLOW_LBRACE_in_simpleTerm7573);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RBRACE, &FOLLOW_RBRACE_in_simpleTerm7575);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_CONST(EmptySet(Type())); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2074:5: UNIVSET_TOK
+        	    {
+        	         MATCHT(UNIVSET_TOK, &FOLLOW_UNIVSET_TOK_in_simpleTerm7587);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             //booleanType is placeholder
+        	                  f = EXPR_MANAGER->mkUniqueVar(EXPR_MANAGER->booleanType(), kind::UNIVERSE_SET);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2080:5: LBRACE formula[f] ( COMMA formula[f] )* RBRACE
+        	    {
+        	         MATCHT(LBRACE, &FOLLOW_LBRACE_in_simpleTerm7606);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_simpleTerm7608);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             args.push_back(f); 
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:2081:5: ( COMMA formula[f] )*
+
+        	        for (;;)
+        	        {
+        	            int alt102=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case COMMA:
+        	            	{
+        	            		alt102=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt102)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:2081:7: COMMA formula[f]
+        	        	    {
+        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_simpleTerm7619);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesimpleTermEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_formula_in_simpleTerm7621);
+        	        	        formula(ctx, f);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesimpleTermEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             args.push_back(f); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop102;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop102: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(RBRACE, &FOLLOW_RBRACE_in_simpleTerm7629);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(kind::SINGLETON, args[0]);
+        	                  for(size_t i = 1; i < args.size(); ++i) {
+        	                    f = MK_EXPR(kind::UNION, f, MK_EXPR(kind::SINGLETON, args[i]));
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 8:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2089:5: BAR BAR formula[f] BAR BAR
+        	    {
+        	         MATCHT(BAR, &FOLLOW_BAR_in_simpleTerm7648);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(BAR, &FOLLOW_BAR_in_simpleTerm7650);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_simpleTerm7652);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             args.push_back(f); 
+        	        }
+
+
+        	         MATCHT(BAR, &FOLLOW_BAR_in_simpleTerm7657);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(BAR, &FOLLOW_BAR_in_simpleTerm7659);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(kind::CARD, args[0]);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 9:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2094:5: ARRAY_TOK LPAREN restrictedType[t, CHECK_DECLARED] OF_TOK restrictedType[t2, CHECK_DECLARED] RPAREN COLON simpleTerm[f]
+        	    {
+        	         MATCHT(ARRAY_TOK, &FOLLOW_ARRAY_TOK_in_simpleTerm7678);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_simpleTerm7682);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_restrictedType_in_simpleTerm7688);
+        	        restrictedType(ctx, t, CHECK_DECLARED);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(OF_TOK, &FOLLOW_OF_TOK_in_simpleTerm7691);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_restrictedType_in_simpleTerm7693);
+        	        restrictedType(ctx, t2, CHECK_DECLARED);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_simpleTerm7700);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	         MATCHT(COLON, &FOLLOW_COLON_in_simpleTerm7702);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_simpleTerm_in_simpleTerm7704);
+        	        simpleTerm(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             /* Eventually if we support a bound var (like a lambda) for array
+        	                   * literals, we can use the push/pop scope. */
+        	                  /* PARSER_STATE->popScope(); */
+        	                  t = EXPR_MANAGER->mkArrayType(t, t2);
+        	                  if(!f.isConst()) {
+        	                    std::stringstream ss;
+        	                    ss << "expected constant term inside array constant, but found "
+        	                       << "nonconstant term" << std::endl
+        	                       << "the term: " << f;
+        	                    PARSER_STATE->parseError(ss.str());
+        	                  }
+        	                  if(!t2.isComparableTo(f.getType())) {
+        	                    std::stringstream ss;
+        	                    ss << "type mismatch inside array constant term:" << std::endl
+        	                       << "array type:          " << t << std::endl
+        	                       << "expected const type: " << t2 << std::endl
+        	                       << "computed const type: " << f.getType();
+        	                    PARSER_STATE->parseError(ss.str());
+        	                  }
+        	                  f = MK_CONST( ArrayStoreAll(t, f) );
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 10:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2120:5: TRUE_TOK
+        	    {
+        	         MATCHT(TRUE_TOK, &FOLLOW_TRUE_TOK_in_simpleTerm7724);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_CONST(bool(true)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 11:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2121:5: FALSE_TOK
+        	    {
+        	         MATCHT(FALSE_TOK, &FOLLOW_FALSE_TOK_in_simpleTerm7733);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_CONST(bool(false)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 12:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2126:5: DECIMAL_LITERAL
+        	    {
+        	        DECIMAL_LITERAL17 = (pANTLR3_COMMON_TOKEN) MATCHT(DECIMAL_LITERAL, &FOLLOW_DECIMAL_LITERAL_in_simpleTerm7753);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_CONST(AntlrInput::tokenToRational(DECIMAL_LITERAL17)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 13:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2127:5: INTEGER_LITERAL
+        	    {
+        	        INTEGER_LITERAL18 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_simpleTerm7761);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_CONST(AntlrInput::tokenToInteger(INTEGER_LITERAL18)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 14:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2129:5: HEX_LITERAL
+        	    {
+        	        HEX_LITERAL19 = (pANTLR3_COMMON_TOKEN) MATCHT(HEX_LITERAL, &FOLLOW_HEX_LITERAL_in_simpleTerm7775);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             assert( AntlrInput::tokenText(HEX_LITERAL19).find("0hex") == 0 );
+        	                  std::string hexString = AntlrInput::tokenTextSubstr(HEX_LITERAL19, 4);
+        	                  f = MK_CONST( BitVector(hexString, 16) ); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 15:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2133:5: BINARY_LITERAL
+        	    {
+        	        BINARY_LITERAL20 = (pANTLR3_COMMON_TOKEN) MATCHT(BINARY_LITERAL, &FOLLOW_BINARY_LITERAL_in_simpleTerm7787);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             assert( AntlrInput::tokenText(BINARY_LITERAL20).find("0bin") == 0 );
+        	                  std::string binString = AntlrInput::tokenTextSubstr(BINARY_LITERAL20, 4);
+        	                  f = MK_CONST( BitVector(binString, 2) ); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 16:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2138:5: PARENHASH recordEntry[name,e] ( COMMA recordEntry[name,e] )* HASHPAREN
+        	    {
+        	         MATCHT(PARENHASH, &FOLLOW_PARENHASH_in_simpleTerm7805);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_recordEntry_in_simpleTerm7807);
+        	        recordEntry(ctx, name, e);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             names.push_back(name); args.push_back(e); 
+        	        }
+
+
+        	        // ../../../../../../src/parser/cvc/Cvc.g:2139:5: ( COMMA recordEntry[name,e] )*
+
+        	        for (;;)
+        	        {
+        	            int alt103=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case COMMA:
+        	            	{
+        	            		alt103=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt103)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/cvc/Cvc.g:2139:7: COMMA recordEntry[name,e]
+        	        	    {
+        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_simpleTerm7818);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesimpleTermEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_recordEntry_in_simpleTerm7820);
+        	        	        recordEntry(ctx, name, e);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesimpleTermEx;
+        	        	        }
+        	        	        if (HASFAILED())
+        	        	        {
+        	        	            return ;
+        	        	        }
+
+
+        	        	        if ( BACKTRACKING==0 )
+        	        	        {
+        	        	             names.push_back(name); args.push_back(e); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop103;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop103: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(HASHPAREN, &FOLLOW_HASHPAREN_in_simpleTerm7828);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             std::vector< std::pair<std::string, Type> > typeIds;
+        	                  assert(names.size() == args.size());
+        	                  for(unsigned i = 0; i < names.size(); ++i) {
+        	                    typeIds.push_back(std::make_pair(names[i], args[i].getType()));
+        	                  }
+        	                  DatatypeType t = EXPR_MANAGER->mkRecordType(typeIds);
+        	                  const Datatype& dt = t.getDatatype();
+        	                  args.insert( args.begin(), dt[0].getConstructor() );
+        	                  f = MK_EXPR(kind::APPLY_CONSTRUCTOR, args);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 17:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2152:5: identifier[name,CHECK_DECLARED,SYM_VARIABLE]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_identifier_in_simpleTerm7847);
+        	        identifier(ctx, name, CHECK_DECLARED, SYM_VARIABLE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = PARSER_STATE->getVariable(name); 
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             // datatypes: zero-ary constructors
+        	                  Type t2 = PARSER_STATE->getType(name);
+        	                  if(t2.isConstructor() && ConstructorType(t2).getArity() == 0) {
+        	                    // don't require parentheses, immediately turn it into an apply
+        	                    f = MK_EXPR(CVC4::kind::APPLY_CONSTRUCTOR, f);
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesimpleTermEx; /* Prevent compiler warnings */
+    rulesimpleTermEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end simpleTerm */
+
+/**
+ * $ANTLR start typeAscription
+ * ../../../../../../src/parser/cvc/Cvc.g:2168:1: typeAscription[const CVC4::Expr& f, CVC4::Type& t] : COLON COLON type[t,CHECK_DECLARED] ;
+ */
+static void
+typeAscription(pCvcParser ctx, const CVC4::Expr& f, CVC4::Type& t)
+{
+    /* Initialize rule variables
+     */
+
+
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:2171:3: ( COLON COLON type[t,CHECK_DECLARED] )
+        // ../../../../../../src/parser/cvc/Cvc.g:2171:5: COLON COLON type[t,CHECK_DECLARED]
+        {
+             MATCHT(COLON, &FOLLOW_COLON_in_typeAscription7887);
+            if  (HASEXCEPTION())
+            {
+                goto ruletypeAscriptionEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+             MATCHT(COLON, &FOLLOW_COLON_in_typeAscription7889);
+            if  (HASEXCEPTION())
+            {
+                goto ruletypeAscriptionEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_type_in_typeAscription7891);
+            type(ctx, t, CHECK_DECLARED);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruletypeAscriptionEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletypeAscriptionEx; /* Prevent compiler warnings */
+    ruletypeAscriptionEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end typeAscription */
+
+/**
+ * $ANTLR start recordEntry
+ * ../../../../../../src/parser/cvc/Cvc.g:2177:1: recordEntry[std::string& name, CVC4::Expr& ex] : identifier[name,CHECK_NONE,SYM_VARIABLE] ASSIGN_TOK formula[ex] ;
+ */
+static void
+recordEntry(pCvcParser ctx, std::string& name, CVC4::Expr& ex)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:2178:3: ( identifier[name,CHECK_NONE,SYM_VARIABLE] ASSIGN_TOK formula[ex] )
+        // ../../../../../../src/parser/cvc/Cvc.g:2178:5: identifier[name,CHECK_NONE,SYM_VARIABLE] ASSIGN_TOK formula[ex]
+        {
+            FOLLOWPUSH(FOLLOW_identifier_in_recordEntry7908);
+            identifier(ctx, name, CHECK_NONE, SYM_VARIABLE);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulerecordEntryEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+             MATCHT(ASSIGN_TOK, &FOLLOW_ASSIGN_TOK_in_recordEntry7911);
+            if  (HASEXCEPTION())
+            {
+                goto rulerecordEntryEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_formula_in_recordEntry7913);
+            formula(ctx, ex);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulerecordEntryEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulerecordEntryEx; /* Prevent compiler warnings */
+    rulerecordEntryEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end recordEntry */
+
+/**
+ * $ANTLR start iteTerm
+ * ../../../../../../src/parser/cvc/Cvc.g:2184:1: iteTerm[CVC4::Expr& f] : IF_TOK formula[f] THEN_TOK formula[f] iteElseTerm[f] ENDIF_TOK ;
+ */
+static void
+iteTerm(pCvcParser ctx, CVC4::Expr& f)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::vector<Expr> args;
+      Debug("parser-extra") << "ite: " << AntlrInput::tokenText(LT(1)) << std::endl;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:2189:3: ( IF_TOK formula[f] THEN_TOK formula[f] iteElseTerm[f] ENDIF_TOK )
+        // ../../../../../../src/parser/cvc/Cvc.g:2189:5: IF_TOK formula[f] THEN_TOK formula[f] iteElseTerm[f] ENDIF_TOK
+        {
+             MATCHT(IF_TOK, &FOLLOW_IF_TOK_in_iteTerm7935);
+            if  (HASEXCEPTION())
+            {
+                goto ruleiteTermEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_formula_in_iteTerm7937);
+            formula(ctx, f);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleiteTermEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 args.push_back(f); 
+            }
+
+
+             MATCHT(THEN_TOK, &FOLLOW_THEN_TOK_in_iteTerm7946);
+            if  (HASEXCEPTION())
+            {
+                goto ruleiteTermEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_formula_in_iteTerm7948);
+            formula(ctx, f);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleiteTermEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 args.push_back(f); 
+            }
+
+
+            FOLLOWPUSH(FOLLOW_iteElseTerm_in_iteTerm7957);
+            iteElseTerm(ctx, f);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleiteTermEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 args.push_back(f); 
+            }
+
+
+             MATCHT(ENDIF_TOK, &FOLLOW_ENDIF_TOK_in_iteTerm7966);
+            if  (HASEXCEPTION())
+            {
+                goto ruleiteTermEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 f = MK_EXPR(CVC4::kind::ITE, args); 
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleiteTermEx; /* Prevent compiler warnings */
+    ruleiteTermEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end iteTerm */
+
+/**
+ * $ANTLR start iteElseTerm
+ * ../../../../../../src/parser/cvc/Cvc.g:2199:1: iteElseTerm[CVC4::Expr& f] : ( ELSE_TOK formula[f] | ELSEIF_TOK iteCondition= formula[f] THEN_TOK iteThen= formula[f] iteElse= iteElseTerm[f] );
+ */
+static void
+iteElseTerm(pCvcParser ctx, CVC4::Expr& f)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::vector<Expr> args;
+      Debug("parser-extra") << "else: " << AntlrInput::tokenText(LT(1)) << std::endl;
+
+    {
+        {
+            //  ../../../../../../src/parser/cvc/Cvc.g:2204:3: ( ELSE_TOK formula[f] | ELSEIF_TOK iteCondition= formula[f] THEN_TOK iteThen= formula[f] iteElse= iteElseTerm[f] )
+
+            ANTLR3_UINT32 alt105;
+
+            alt105=2;
+
+            switch ( LA(1) )
+            {
+            case ELSE_TOK:
+            	{
+            		alt105=1;
+            	}
+                break;
+            case ELSEIF_TOK:
+            	{
+            		alt105=2;
+            	}
+                break;
+
+            default:
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 105;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleiteElseTermEx;
+
+            }
+
+            switch (alt105)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2204:5: ELSE_TOK formula[f]
+        	    {
+        	         MATCHT(ELSE_TOK, &FOLLOW_ELSE_TOK_in_iteElseTerm7993);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleiteElseTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_iteElseTerm7995);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleiteElseTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2205:5: ELSEIF_TOK iteCondition= formula[f] THEN_TOK iteThen= formula[f] iteElse= iteElseTerm[f]
+        	    {
+        	         MATCHT(ELSEIF_TOK, &FOLLOW_ELSEIF_TOK_in_iteElseTerm8002);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleiteElseTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_iteElseTerm8008);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleiteElseTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             args.push_back(f); 
+        	        }
+
+
+        	         MATCHT(THEN_TOK, &FOLLOW_THEN_TOK_in_iteElseTerm8017);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleiteElseTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formula_in_iteElseTerm8023);
+        	        formula(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleiteElseTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             args.push_back(f); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_iteElseTerm_in_iteElseTerm8036);
+        	        iteElseTerm(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleiteElseTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             args.push_back(f); 
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = MK_EXPR(CVC4::kind::ITE, args); 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleiteElseTermEx; /* Prevent compiler warnings */
+    ruleiteElseTermEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end iteElseTerm */
+
+/**
+ * $ANTLR start datatypeDef
+ * ../../../../../../src/parser/cvc/Cvc.g:2214:1: datatypeDef[std::vector<CVC4::Datatype>& datatypes] : identifier[id,CHECK_NONE,SYM_SORT] ( LBRACKET identifier[id2,CHECK_UNDECLARED,SYM_SORT] ( COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT] )* RBRACKET )? EQUAL_TOK constructorDef[datatypes.back()] ( BAR constructorDef[datatypes.back()] )* ;
+ */
+static void
+datatypeDef(pCvcParser ctx, std::vector<CVC4::Datatype>& datatypes)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::string id, id2;
+      Type t;
+      std::vector< Type > params;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:2224:3: ( identifier[id,CHECK_NONE,SYM_SORT] ( LBRACKET identifier[id2,CHECK_UNDECLARED,SYM_SORT] ( COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT] )* RBRACKET )? EQUAL_TOK constructorDef[datatypes.back()] ( BAR constructorDef[datatypes.back()] )* )
+        // ../../../../../../src/parser/cvc/Cvc.g:2224:5: identifier[id,CHECK_NONE,SYM_SORT] ( LBRACKET identifier[id2,CHECK_UNDECLARED,SYM_SORT] ( COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT] )* RBRACKET )? EQUAL_TOK constructorDef[datatypes.back()] ( BAR constructorDef[datatypes.back()] )*
+        {
+            FOLLOWPUSH(FOLLOW_identifier_in_datatypeDef8072);
+            identifier(ctx, id, CHECK_NONE, SYM_SORT);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruledatatypeDefEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 PARSER_STATE->pushScope(); 
+            }
+
+
+            // ../../../../../../src/parser/cvc/Cvc.g:2225:5: ( LBRACKET identifier[id2,CHECK_UNDECLARED,SYM_SORT] ( COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT] )* RBRACKET )?
+            {
+                int alt107=2;
+                switch ( LA(1) )
+                {
+                    case LBRACKET:
+                    	{
+                    		alt107=1;
+                    	}
+                        break;
+                }
+
+                switch (alt107)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:2225:7: LBRACKET identifier[id2,CHECK_UNDECLARED,SYM_SORT] ( COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT] )* RBRACKET
+            	    {
+            	         MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_datatypeDef8083);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruledatatypeDefEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_identifier_in_datatypeDef8085);
+            	        identifier(ctx, id2, CHECK_UNDECLARED, SYM_SORT);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruledatatypeDefEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        if ( BACKTRACKING==0 )
+            	        {
+
+            	                    t = PARSER_STATE->mkSort(id2, ExprManager::SORT_FLAG_PLACEHOLDER);
+            	                    params.push_back( t );
+            	                  
+            	        }
+
+
+            	        // ../../../../../../src/parser/cvc/Cvc.g:2229:7: ( COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT] )*
+
+            	        for (;;)
+            	        {
+            	            int alt106=2;
+            	            switch ( LA(1) )
+            	            {
+            	            case COMMA:
+            	            	{
+            	            		alt106=1;
+            	            	}
+            	                break;
+
+            	            }
+
+            	            switch (alt106)
+            	            {
+            	        	case 1:
+            	        	    // ../../../../../../src/parser/cvc/Cvc.g:2229:9: COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT]
+            	        	    {
+            	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_datatypeDef8098);
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto ruledatatypeDefEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	        FOLLOWPUSH(FOLLOW_identifier_in_datatypeDef8100);
+            	        	        identifier(ctx, id2, CHECK_UNDECLARED, SYM_SORT);
+
+            	        	        FOLLOWPOP();
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto ruledatatypeDefEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	        if ( BACKTRACKING==0 )
+            	        	        {
+
+            	        	                    t = PARSER_STATE->mkSort(id2, ExprManager::SORT_FLAG_PLACEHOLDER);
+            	        	                    params.push_back( t ); 
+            	        	        }
+
+
+            	        	    }
+            	        	    break;
+
+            	        	default:
+            	        	    goto loop106;	/* break out of the loop */
+            	        	    break;
+            	            }
+            	        }
+            	        loop106: ; /* Jump out to here if this rule does not match */
+
+
+            	         MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_datatypeDef8114);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruledatatypeDefEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	    }
+            	    break;
+
+                }
+            }
+
+            if ( BACKTRACKING==0 )
+            {
+                 datatypes.push_back(Datatype(id, params, false));
+                      if(!PARSER_STATE->isUnresolvedType(id)) {
+                        // if not unresolved, must be undeclared
+                        PARSER_STATE->checkDeclaration(id, CHECK_UNDECLARED, SYM_SORT);
+                      }
+                    
+            }
+
+
+             MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_datatypeDef8133);
+            if  (HASEXCEPTION())
+            {
+                goto ruledatatypeDefEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_constructorDef_in_datatypeDef8135);
+            constructorDef(ctx, datatypes.back());
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruledatatypeDefEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            // ../../../../../../src/parser/cvc/Cvc.g:2241:5: ( BAR constructorDef[datatypes.back()] )*
+
+            for (;;)
+            {
+                int alt108=2;
+                switch ( LA(1) )
+                {
+                case BAR:
+                	{
+                		alt108=1;
+                	}
+                    break;
+
+                }
+
+                switch (alt108)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:2241:7: BAR constructorDef[datatypes.back()]
+            	    {
+            	         MATCHT(BAR, &FOLLOW_BAR_in_datatypeDef8144);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruledatatypeDefEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_constructorDef_in_datatypeDef8146);
+            	        constructorDef(ctx, datatypes.back());
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruledatatypeDefEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	    }
+            	    break;
+
+            	default:
+            	    goto loop108;	/* break out of the loop */
+            	    break;
+                }
+            }
+            loop108: ; /* Jump out to here if this rule does not match */
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 PARSER_STATE->popScope(); 
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruledatatypeDefEx; /* Prevent compiler warnings */
+    ruledatatypeDefEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end datatypeDef */
+
+/**
+ * $ANTLR start constructorDef
+ * ../../../../../../src/parser/cvc/Cvc.g:2248:1: constructorDef[CVC4::Datatype& type] : identifier[id,CHECK_UNDECLARED,SYM_SORT] ( LPAREN selector[&ctor] ( COMMA selector[&ctor] )* RPAREN )? ;
+ */
+static void
+constructorDef(pCvcParser ctx, CVC4::Datatype& type)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::string id;
+      CVC4::PtrCloser<CVC4::DatatypeConstructor> ctor;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:2253:3: ( identifier[id,CHECK_UNDECLARED,SYM_SORT] ( LPAREN selector[&ctor] ( COMMA selector[&ctor] )* RPAREN )? )
+        // ../../../../../../src/parser/cvc/Cvc.g:2253:5: identifier[id,CHECK_UNDECLARED,SYM_SORT] ( LPAREN selector[&ctor] ( COMMA selector[&ctor] )* RPAREN )?
+        {
+            FOLLOWPUSH(FOLLOW_identifier_in_constructorDef8177);
+            identifier(ctx, id, CHECK_UNDECLARED, SYM_SORT);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleconstructorDefEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 // make the tester
+                      std::string testerId("is_");
+                      testerId.append(id);
+                      PARSER_STATE->checkDeclaration(testerId, CHECK_UNDECLARED, SYM_SORT);
+                      ctor.reset(new CVC4::DatatypeConstructor(id, testerId));
+                    
+            }
+
+
+            // ../../../../../../src/parser/cvc/Cvc.g:2260:5: ( LPAREN selector[&ctor] ( COMMA selector[&ctor] )* RPAREN )?
+            {
+                int alt110=2;
+                switch ( LA(1) )
+                {
+                    case LPAREN:
+                    	{
+                    		alt110=1;
+                    	}
+                        break;
+                }
+
+                switch (alt110)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/cvc/Cvc.g:2260:7: LPAREN selector[&ctor] ( COMMA selector[&ctor] )* RPAREN
+            	    {
+            	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_constructorDef8192);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleconstructorDefEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_selector_in_constructorDef8200);
+            	        selector(ctx, &ctor);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleconstructorDefEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	        // ../../../../../../src/parser/cvc/Cvc.g:2262:7: ( COMMA selector[&ctor] )*
+
+            	        for (;;)
+            	        {
+            	            int alt109=2;
+            	            switch ( LA(1) )
+            	            {
+            	            case COMMA:
+            	            	{
+            	            		alt109=1;
+            	            	}
+            	                break;
+
+            	            }
+
+            	            switch (alt109)
+            	            {
+            	        	case 1:
+            	        	    // ../../../../../../src/parser/cvc/Cvc.g:2262:9: COMMA selector[&ctor]
+            	        	    {
+            	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_constructorDef8211);
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto ruleconstructorDefEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	        FOLLOWPUSH(FOLLOW_selector_in_constructorDef8213);
+            	        	        selector(ctx, &ctor);
+
+            	        	        FOLLOWPOP();
+            	        	        if  (HASEXCEPTION())
+            	        	        {
+            	        	            goto ruleconstructorDefEx;
+            	        	        }
+            	        	        if (HASFAILED())
+            	        	        {
+            	        	            return ;
+            	        	        }
+
+
+            	        	    }
+            	        	    break;
+
+            	        	default:
+            	        	    goto loop109;	/* break out of the loop */
+            	        	    break;
+            	            }
+            	        }
+            	        loop109: ; /* Jump out to here if this rule does not match */
+
+
+            	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_constructorDef8225);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleconstructorDefEx;
+            	        }
+            	        if (HASFAILED())
+            	        {
+            	            return ;
+            	        }
+
+
+            	    }
+            	    break;
+
+                }
+            }
+
+            if ( BACKTRACKING==0 )
+            {
+                 // make the constructor
+                      type.addConstructor(*ctor.get());
+                      Debug("parser-idt") << "constructor: " << id.c_str() << std::endl;
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleconstructorDefEx; /* Prevent compiler warnings */
+    ruleconstructorDefEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end constructorDef */
+
+/**
+ * $ANTLR start selector
+ * ../../../../../../src/parser/cvc/Cvc.g:2271:1: selector[CVC4::PtrCloser<CVC4::DatatypeConstructor>* ctor] : identifier[id,CHECK_UNDECLARED,SYM_SORT] COLON type[t,CHECK_NONE] ;
+ */
+static void
+selector(pCvcParser ctx, CVC4::PtrCloser<CVC4::DatatypeConstructor>* ctor)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::string id;
+      Type t, t2;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:2276:3: ( identifier[id,CHECK_UNDECLARED,SYM_SORT] COLON type[t,CHECK_NONE] )
+        // ../../../../../../src/parser/cvc/Cvc.g:2276:5: identifier[id,CHECK_UNDECLARED,SYM_SORT] COLON type[t,CHECK_NONE]
+        {
+            FOLLOWPUSH(FOLLOW_identifier_in_selector8257);
+            identifier(ctx, id, CHECK_UNDECLARED, SYM_SORT);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleselectorEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+             MATCHT(COLON, &FOLLOW_COLON_in_selector8260);
+            if  (HASEXCEPTION())
+            {
+                goto ruleselectorEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_type_in_selector8262);
+            type(ctx, t, CHECK_NONE);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleselectorEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 (*ctor)->addArg(id, t);
+                      Debug("parser-idt") << "selector: " << id.c_str() << std::endl;
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleselectorEx; /* Prevent compiler warnings */
+    ruleselectorEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end selector */
+
+/**
+ * $ANTLR start numeral
+ * ../../../../../../src/parser/cvc/Cvc.g:2294:1: numeral returns [unsigned k = 0] : INTEGER_LITERAL ;
+ */
+static unsigned
+numeral(pCvcParser ctx)
+{
+    unsigned k;
+
+
+    pANTLR3_COMMON_TOKEN    INTEGER_LITERAL21;
+
+    /* Initialize rule variables
+     */
+    k =  0;
+
+
+    INTEGER_LITERAL21       = NULL;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:2295:3: ( INTEGER_LITERAL )
+        // ../../../../../../src/parser/cvc/Cvc.g:2295:5: INTEGER_LITERAL
+        {
+            INTEGER_LITERAL21 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_numeral8337);
+            if  (HASEXCEPTION())
+            {
+                goto rulenumeralEx;
+            }
+            if (HASFAILED())
+            {
+                return k;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 k= AntlrInput::tokenToUnsigned(INTEGER_LITERAL21);
+                 
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulenumeralEx; /* Prevent compiler warnings */
+    rulenumeralEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return k;
+}
+/* $ANTLR end numeral */
+
+/**
+ * $ANTLR start integer
+ * ../../../../../../src/parser/cvc/Cvc.g:2302:1: integer returns [CVC4::Rational k = 0] : ( INTEGER_LITERAL | MINUS_TOK INTEGER_LITERAL );
+ */
+static CVC4::Rational
+integer(pCvcParser ctx)
+{
+    CVC4::Rational k;
+
+
+    pANTLR3_COMMON_TOKEN    INTEGER_LITERAL22;
+    pANTLR3_COMMON_TOKEN    INTEGER_LITERAL23;
+
+    /* Initialize rule variables
+     */
+    k =  0;
+
+
+    INTEGER_LITERAL22       = NULL;
+    INTEGER_LITERAL23       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/cvc/Cvc.g:2303:3: ( INTEGER_LITERAL | MINUS_TOK INTEGER_LITERAL )
+
+            ANTLR3_UINT32 alt111;
+
+            alt111=2;
+
+            switch ( LA(1) )
+            {
+            case INTEGER_LITERAL:
+            	{
+            		alt111=1;
+            	}
+                break;
+            case MINUS_TOK:
+            	{
+            		alt111=2;
+            	}
+                break;
+
+            default:
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return k;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 111;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleintegerEx;
+
+            }
+
+            switch (alt111)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2303:5: INTEGER_LITERAL
+        	    {
+        	        INTEGER_LITERAL22 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_integer8362);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleintegerEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return k;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             k= AntlrInput::tokenToInteger(INTEGER_LITERAL22);
+        	             
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/cvc/Cvc.g:2305:5: MINUS_TOK INTEGER_LITERAL
+        	    {
+        	         MATCHT(MINUS_TOK, &FOLLOW_MINUS_TOK_in_integer8374);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleintegerEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return k;
+        	        }
+
+
+        	        INTEGER_LITERAL23 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_integer8376);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleintegerEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return k;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             k= -AntlrInput::tokenToInteger(INTEGER_LITERAL23);
+        	             
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleintegerEx; /* Prevent compiler warnings */
+    ruleintegerEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return k;
+}
+/* $ANTLR end integer */
+
+/**
+ * $ANTLR start str
+ * ../../../../../../src/parser/cvc/Cvc.g:2312:1: str[std::string& s] : STRING_LITERAL ;
+ */
+static void
+str(pCvcParser ctx, std::string& s)
+{
+    pANTLR3_COMMON_TOKEN    STRING_LITERAL24;
+
+    /* Initialize rule variables
+     */
+
+    STRING_LITERAL24       = NULL;
+
+    {
+        // ../../../../../../src/parser/cvc/Cvc.g:2313:3: ( STRING_LITERAL )
+        // ../../../../../../src/parser/cvc/Cvc.g:2313:5: STRING_LITERAL
+        {
+            STRING_LITERAL24 = (pANTLR3_COMMON_TOKEN) MATCHT(STRING_LITERAL, &FOLLOW_STRING_LITERAL_in_str8398);
+            if  (HASEXCEPTION())
+            {
+                goto rulestrEx;
+            }
+            if (HASFAILED())
+            {
+                return ;
+            }
+
+
+            if ( BACKTRACKING==0 )
+            {
+                 s = AntlrInput::tokenText(STRING_LITERAL24);
+                      /* strip off the quotes */
+                      s = s.substr(1, s.size() - 2);
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulestrEx; /* Prevent compiler warnings */
+    rulestrEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end str */
+
+// $ANTLR start synpred1_Cvc
+static void synpred1_Cvc_fragment(pCvcParser ctx )
+{
+    // ../../../../../../src/parser/cvc/Cvc.g:711:5: ( letDecl )
+    // ../../../../../../src/parser/cvc/Cvc.g:711:5: letDecl
+    {
+        FOLLOWPUSH(FOLLOW_letDecl_in_synpred1_Cvc1998);
+        letDecl(ctx);
+
+        FOLLOWPOP();
+        if  (HASEXCEPTION())
+        {
+            goto rulesynpred1_CvcEx;
+        }
+        if (HASFAILED())
+        {
+            return ;
+        }
+
+
+    }
+
+// This is where rules clean up and exit
+//
+goto rulesynpred1_CvcEx; /* Prevent compiler warnings */
+rulesynpred1_CvcEx: ;
+
+}
+// $ANTLR end synpred1_Cvc
+/* End of parsing rules
+ * ==============================================
+ */
+
+/* ==============================================
+ * Syntactic predicates
+ */
+static ANTLR3_BOOLEAN synpred1_Cvc(pCvcParser ctx)
+{
+    ANTLR3_MARKER   start;
+    ANTLR3_BOOLEAN  success;
+
+    BACKTRACKING++;
+    start	= MARK();
+    synpred1_Cvc_fragment(ctx);	    // can never throw exception
+    success	= !(FAILEDFLAG);
+    REWIND(start);
+    BACKTRACKING--;
+    FAILEDFLAG	= ANTLR3_FALSE;
+    return success;
+}
+
+/* End of syntactic predicates
+ * ==============================================
+ */
+
+
+
+
+
+
+/* End of code
+ * =============================================================================
+ */
diff --git a/src/parser/cvc/CvcParser.h b/src/parser/cvc/CvcParser.h
new file mode 100644
index 0000000..5e0793a
--- /dev/null
+++ b/src/parser/cvc/CvcParser.h
@@ -0,0 +1,771 @@
+/** \file
+ *  This C header file was generated by $ANTLR version 3.4
+ *
+ *     -  From the grammar source file : ../../../../../../src/parser/cvc/Cvc.g
+ *     -                            On : 2017-03-16 01:03:03
+ *     -                for the parser : CvcParserParser
+ *
+ * Editing it, at least manually, is not wise.
+ *
+ * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws.
+ *
+ *
+ * The parser 
+CvcParser
+
+has the callable functions (rules) shown below,
+ * which will invoke the code for the associated rule in the source grammar
+ * assuming that the input stream is pointing to a token/text stream that could begin
+ * this rule.
+ *
+ * For instance if you call the first (topmost) rule in a parser grammar, you will
+ * get the results of a full parse, but calling a rule half way through the grammar will
+ * allow you to pass part of a full token stream to the parser, such as for syntax checking
+ * in editors and so on.
+ *
+ * The parser entry points are called indirectly (by function pointer to function) via
+ * a parser context typedef pCvcParser, which is returned from a call to CvcParserNew().
+ *
+ * The methods in pCvcParser are  as follows:
+ *
+ *  - 
+ CVC4::Expr
+      pCvcParser->parseExpr(pCvcParser)
+ *  - 
+ CVC4::Command*
+      pCvcParser->parseCommand(pCvcParser)
+ *  - 
+ void
+      pCvcParser->command(pCvcParser)
+ *  - 
+ void
+      pCvcParser->typeOrVarLetDecl(pCvcParser)
+ *  - 
+ void
+      pCvcParser->mainCommand(pCvcParser)
+ *  - 
+ void
+      pCvcParser->simpleSymbolicExpr(pCvcParser)
+ *  - 
+ void
+      pCvcParser->symbolicExpr(pCvcParser)
+ *  - 
+ void
+      pCvcParser->toplevelDeclaration(pCvcParser)
+ *  - 
+ void
+      pCvcParser->boundVarDecl(pCvcParser)
+ *  - 
+ void
+      pCvcParser->boundVarDecls(pCvcParser)
+ *  - 
+ void
+      pCvcParser->boundVarDeclsReturn(pCvcParser)
+ *  - 
+ void
+      pCvcParser->boundVarDeclReturn(pCvcParser)
+ *  - 
+ void
+      pCvcParser->declareTypes(pCvcParser)
+ *  - 
+ void
+      pCvcParser->declareVariables(pCvcParser)
+ *  - 
+ void
+      pCvcParser->identifierList(pCvcParser)
+ *  - 
+ void
+      pCvcParser->identifier(pCvcParser)
+ *  - 
+ void
+      pCvcParser->type(pCvcParser)
+ *  - 
+ void
+      pCvcParser->restrictedType(pCvcParser)
+ *  - 
+ void
+      pCvcParser->restrictedTypePossiblyFunctionLHS(pCvcParser)
+ *  - 
+ void
+      pCvcParser->parameterization(pCvcParser)
+ *  - 
+ CVC4::parser::cvc::mySubrangeBound
+      pCvcParser->bound(pCvcParser)
+ *  - 
+ void
+      pCvcParser->typeLetDecl(pCvcParser)
+ *  - 
+ void
+      pCvcParser->formula(pCvcParser)
+ *  - 
+ size_t
+      pCvcParser->morecomparisons(pCvcParser)
+ *  - 
+ size_t
+      pCvcParser->nots(pCvcParser)
+ *  - 
+ void
+      pCvcParser->prefixFormula(pCvcParser)
+ *  - 
+ void
+      pCvcParser->instantiationPatterns(pCvcParser)
+ *  - 
+ void
+      pCvcParser->letDecl(pCvcParser)
+ *  - 
+ void
+      pCvcParser->booleanBinop(pCvcParser)
+ *  - 
+ void
+      pCvcParser->comparison(pCvcParser)
+ *  - 
+ void
+      pCvcParser->comparisonBinop(pCvcParser)
+ *  - 
+ void
+      pCvcParser->arithmeticBinop(pCvcParser)
+ *  - 
+ void
+      pCvcParser->term(pCvcParser)
+ *  - 
+ void
+      pCvcParser->arrayStore(pCvcParser)
+ *  - 
+ void
+      pCvcParser->tupleStore(pCvcParser)
+ *  - 
+ void
+      pCvcParser->recordStore(pCvcParser)
+ *  - 
+ void
+      pCvcParser->uminusTerm(pCvcParser)
+ *  - 
+ void
+      pCvcParser->bvBinaryOpTerm(pCvcParser)
+ *  - 
+ void
+      pCvcParser->bvBinop(pCvcParser)
+ *  - 
+ void
+      pCvcParser->bvNegTerm(pCvcParser)
+ *  - 
+ void
+      pCvcParser->postfixTerm(pCvcParser)
+ *  - 
+ void
+      pCvcParser->bvTerm(pCvcParser)
+ *  - 
+ void
+      pCvcParser->stringTerm(pCvcParser)
+ *  - 
+ void
+      pCvcParser->setsTerm(pCvcParser)
+ *  - 
+ void
+      pCvcParser->simpleTerm(pCvcParser)
+ *  - 
+ void
+      pCvcParser->typeAscription(pCvcParser)
+ *  - 
+ void
+      pCvcParser->recordEntry(pCvcParser)
+ *  - 
+ void
+      pCvcParser->iteTerm(pCvcParser)
+ *  - 
+ void
+      pCvcParser->iteElseTerm(pCvcParser)
+ *  - 
+ void
+      pCvcParser->datatypeDef(pCvcParser)
+ *  - 
+ void
+      pCvcParser->constructorDef(pCvcParser)
+ *  - 
+ void
+      pCvcParser->selector(pCvcParser)
+ *  - 
+ unsigned
+      pCvcParser->numeral(pCvcParser)
+ *  - 
+ CVC4::Rational
+      pCvcParser->integer(pCvcParser)
+ *  - 
+ void
+      pCvcParser->str(pCvcParser)
+ * 
+ *
+ * The return type for any particular rule is of course determined by the source
+ * grammar file.
+ */
+// [The "BSD license"]
+// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
+// http://www.temporal-wave.com
+// http://www.linkedin.com/in/jimidle
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+// 3. The name of the author may not be used to endorse or promote products
+//    derived from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef	_CvcParser_H
+#define _CvcParser_H
+/* =============================================================================
+ * Standard antlr3 C runtime definitions
+ */
+#include    <antlr3.h>
+
+/* End of standard antlr 3 runtime definitions
+ * =============================================================================
+ */
+
+
+// This should come immediately after #include <antlr3.h> in the generated
+// files. See the documentation in "parser/antlr_undefines.h" for more details.
+#include "parser/antlr_undefines.h"
+
+#include <stdint.h>
+#include <cassert>
+
+#include "base/ptr_closer.h"
+#include "options/set_language.h"
+#include "parser/antlr_tracing.h"
+#include "parser/parser.h"
+#include "smt/command.h"
+#include "util/subrange_bound.h"
+
+namespace CVC4 {
+  class Expr;
+
+  namespace parser {
+    namespace cvc {
+      /**
+       * This class is just here to get around an unfortunate bit of Antlr.
+       * We use strings below as return values from rules, which require
+       * them to be constructible by a void*.  So we derive the string
+       * class to provide just such a conversion.
+       */
+      class myString : public std::string {
+      public:
+        myString(const std::string& s) : std::string(s) {}
+        myString(void*) : std::string() {}
+        myString() : std::string() {}
+      };/* class myString */
+
+      /**
+       * Just exists to give us the void* construction that
+       * ANTLR requires.
+       */
+      class mySubrangeBound : public CVC4::SubrangeBound {
+      public:
+        mySubrangeBound() : CVC4::SubrangeBound() {}
+        mySubrangeBound(void*) : CVC4::SubrangeBound() {}
+        mySubrangeBound(const Integer& i) : CVC4::SubrangeBound(i) {}
+        mySubrangeBound(const SubrangeBound& b) : CVC4::SubrangeBound(b) {}
+      };/* class mySubrangeBound */
+
+      /**
+       * Just exists to give us the void* construction that
+       * ANTLR requires.
+       */
+      struct myExpr : public CVC4::Expr {
+        myExpr() : CVC4::Expr() {}
+        myExpr(void*) : CVC4::Expr() {}
+        myExpr(const Expr& e) : CVC4::Expr(e) {}
+        myExpr(const myExpr& e) : CVC4::Expr(e) {}
+      };/* struct myExpr */
+
+    }/* CVC4::parser::cvc namespace */
+  }/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Forward declare the context typedef so that we can use it before it is
+// properly defined. Delegators and delegates (from import statements) are
+// interdependent and their context structures contain pointers to each other
+// C only allows such things to be declared if you pre-declare the typedef.
+//
+typedef struct CvcParser_Ctx_struct CvcParser, * pCvcParser;
+
+
+
+/**
+ ** This file is part of CVC4.
+ ** Copyright (c) 2009-2014  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.
+ **/
+
+
+#ifdef	ANTLR3_WINDOWS
+// Disable: Unreferenced parameter,							- Rules with parameters that are not used
+//          constant conditional,							- ANTLR realizes that a prediction is always true (synpred usually)
+//          initialized but unused variable					- tree rewrite variables declared but not needed
+//          Unreferenced local variable						- lexer rule declares but does not always use _type
+//          potentially unitialized variable used			- retval always returned from a rule
+//			unreferenced local function has been removed	- susually getTokenNames or freeScope, they can go without warnigns
+//
+// These are only really displayed at warning level /W4 but that is the code ideal I am aiming at
+// and the codegen must generate some of these warnings by necessity, apart from 4100, which is
+// usually generated when a parser rule is given a parameter that it does not use. Mostly though
+// this is a matter of orthogonality hence I disable that one.
+//
+#pragma warning( disable : 4100 )
+#pragma warning( disable : 4101 )
+#pragma warning( disable : 4127 )
+#pragma warning( disable : 4189 )
+#pragma warning( disable : 4505 )
+#pragma warning( disable : 4701 )
+#endif
+
+/* ========================
+ * BACKTRACKING IS ENABLED
+ * ========================
+ */
+
+
+/** Context tracking structure for 
+CvcParser
+
+ */
+struct CvcParser_Ctx_struct
+{
+    /** Built in ANTLR3 context tracker contains all the generic elements
+     *  required for context tracking.
+     */
+    pANTLR3_PARSER   pParser;
+
+     CVC4::Expr
+     (*parseExpr)	(struct CvcParser_Ctx_struct * ctx);
+
+     CVC4::Command*
+     (*parseCommand)	(struct CvcParser_Ctx_struct * ctx);
+
+     void
+     (*command)	(struct CvcParser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+
+     void
+     (*typeOrVarLetDecl)	(struct CvcParser_Ctx_struct * ctx, CVC4::parser::DeclarationCheck check);
+
+     void
+     (*mainCommand)	(struct CvcParser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+
+     void
+     (*simpleSymbolicExpr)	(struct CvcParser_Ctx_struct * ctx, CVC4::SExpr& sexpr);
+
+     void
+     (*symbolicExpr)	(struct CvcParser_Ctx_struct * ctx, CVC4::SExpr& sexpr);
+
+     void
+     (*toplevelDeclaration)	(struct CvcParser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+
+     void
+     (*boundVarDecl)	(struct CvcParser_Ctx_struct * ctx, std::vector<std::string>& ids, CVC4::Type& t);
+
+     void
+     (*boundVarDecls)	(struct CvcParser_Ctx_struct * ctx);
+
+     void
+     (*boundVarDeclsReturn)	(struct CvcParser_Ctx_struct * ctx, std::vector<CVC4::Expr>& terms, std::vector<CVC4::Type>& types);
+
+     void
+     (*boundVarDeclReturn)	(struct CvcParser_Ctx_struct * ctx, std::vector<CVC4::Expr>& terms, std::vector<CVC4::Type>& types);
+
+     void
+     (*declareTypes)	(struct CvcParser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::Command>* cmd, const std::vector<std::string>& idList);
+
+     void
+     (*declareVariables)	(struct CvcParser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::Command>* cmd, CVC4::Type& t, const std::vector<std::string>& idList, bool topLevel);
+
+     void
+     (*identifierList)	(struct CvcParser_Ctx_struct * ctx, std::vector<std::string>& idList, CVC4::parser::DeclarationCheck check, CVC4::parser::SymbolType type);
+
+     void
+     (*identifier)	(struct CvcParser_Ctx_struct * ctx, std::string& id, CVC4::parser::DeclarationCheck check, CVC4::parser::SymbolType type);
+
+     void
+     (*type)	(struct CvcParser_Ctx_struct * ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check);
+
+     void
+     (*restrictedType)	(struct CvcParser_Ctx_struct * ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check);
+
+     void
+     (*restrictedTypePossiblyFunctionLHS)	(struct CvcParser_Ctx_struct * ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check, bool& lhs);
+
+     void
+     (*parameterization)	(struct CvcParser_Ctx_struct * ctx, CVC4::parser::DeclarationCheck check, std::vector<CVC4::Type>& params);
+
+     CVC4::parser::cvc::mySubrangeBound
+     (*bound)	(struct CvcParser_Ctx_struct * ctx);
+
+     void
+     (*typeLetDecl)	(struct CvcParser_Ctx_struct * ctx, CVC4::parser::DeclarationCheck check);
+
+     void
+     (*formula)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& f);
+
+     size_t
+     (*morecomparisons)	(struct CvcParser_Ctx_struct * ctx, std::vector<CVC4::Expr>& expressions, std::vector<unsigned>& operators);
+
+     size_t
+     (*nots)	(struct CvcParser_Ctx_struct * ctx);
+
+     void
+     (*prefixFormula)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& f);
+
+     void
+     (*instantiationPatterns)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*letDecl)	(struct CvcParser_Ctx_struct * ctx);
+
+     void
+     (*booleanBinop)	(struct CvcParser_Ctx_struct * ctx, unsigned& op);
+
+     void
+     (*comparison)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& f);
+
+     void
+     (*comparisonBinop)	(struct CvcParser_Ctx_struct * ctx, unsigned& op);
+
+     void
+     (*arithmeticBinop)	(struct CvcParser_Ctx_struct * ctx, unsigned& op);
+
+     void
+     (*term)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& f);
+
+     void
+     (*arrayStore)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& f);
+
+     void
+     (*tupleStore)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& f);
+
+     void
+     (*recordStore)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& f);
+
+     void
+     (*uminusTerm)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& f);
+
+     void
+     (*bvBinaryOpTerm)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& f);
+
+     void
+     (*bvBinop)	(struct CvcParser_Ctx_struct * ctx, unsigned& op);
+
+     void
+     (*bvNegTerm)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& f);
+
+     void
+     (*postfixTerm)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& f);
+
+     void
+     (*bvTerm)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& f);
+
+     void
+     (*stringTerm)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& f);
+
+     void
+     (*setsTerm)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& f);
+
+     void
+     (*simpleTerm)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& f);
+
+     void
+     (*typeAscription)	(struct CvcParser_Ctx_struct * ctx, const CVC4::Expr& f, CVC4::Type& t);
+
+     void
+     (*recordEntry)	(struct CvcParser_Ctx_struct * ctx, std::string& name, CVC4::Expr& ex);
+
+     void
+     (*iteTerm)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& f);
+
+     void
+     (*iteElseTerm)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& f);
+
+     void
+     (*datatypeDef)	(struct CvcParser_Ctx_struct * ctx, std::vector<CVC4::Datatype>& datatypes);
+
+     void
+     (*constructorDef)	(struct CvcParser_Ctx_struct * ctx, CVC4::Datatype& type);
+
+     void
+     (*selector)	(struct CvcParser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::DatatypeConstructor>* ctor);
+
+     unsigned
+     (*numeral)	(struct CvcParser_Ctx_struct * ctx);
+
+     CVC4::Rational
+     (*integer)	(struct CvcParser_Ctx_struct * ctx);
+
+     void
+     (*str)	(struct CvcParser_Ctx_struct * ctx, std::string& s);
+
+     ANTLR3_BOOLEAN
+     (*synpred1_Cvc)	(struct CvcParser_Ctx_struct * ctx);
+    // Delegated rules
+
+    const char * (*getGrammarFileName)();
+    void            (*reset)  (struct CvcParser_Ctx_struct * ctx);
+    void	    (*free)   (struct CvcParser_Ctx_struct * ctx);
+};
+
+// Function protoypes for the constructor functions that external translation units
+// such as delegators and delegates may wish to call.
+//
+ANTLR3_API pCvcParser CvcParserNew         (
+pANTLR3_COMMON_TOKEN_STREAM
+ instream);
+ANTLR3_API pCvcParser CvcParserNewSSD      (
+pANTLR3_COMMON_TOKEN_STREAM
+ instream, pANTLR3_RECOGNIZER_SHARED_STATE state);
+
+/** Symbolic definitions of all the tokens that the 
+parser
+ will work with.
+ * \{
+ *
+ * Antlr will define EOF, but we can't use that as it it is too common in
+ * in C header files and that would be confusing. There is no way to filter this out at the moment
+ * so we just undef it here for now. That isn't the value we get back from C recognizers
+ * anyway. We are looking for ANTLR3_TOKEN_EOF.
+ */
+#ifdef	EOF
+#undef	EOF
+#endif
+#ifdef	Tokens
+#undef	Tokens
+#endif
+#define EOF      -1
+#define ABS_TOK      4
+#define ALPHA      5
+#define AND_TOK      6
+#define ARITH_VAR_ORDER_TOK      7
+#define ARRAY_TOK      8
+#define ARROW_TOK      9
+#define ASSERTIONS_TOK      10
+#define ASSERT_TOK      11
+#define ASSIGN_TOK      12
+#define ASSUMPTIONS_TOK      13
+#define BAR      14
+#define BINARY_LITERAL      15
+#define BITVECTOR_TOK      16
+#define BOOLEAN_TOK      17
+#define BVAND_TOK      18
+#define BVASHR_TOK      19
+#define BVCOMP_TOK      20
+#define BVGE_TOK      21
+#define BVGT_TOK      22
+#define BVLE_TOK      23
+#define BVLSHR_TOK      24
+#define BVLT_TOK      25
+#define BVMULT_TOK      26
+#define BVNAND_TOK      27
+#define BVNEG_TOK      28
+#define BVNOR_TOK      29
+#define BVPLUS_TOK      30
+#define BVREPEAT_TOK      31
+#define BVROTL_TOK      32
+#define BVROTR_TOK      33
+#define BVSDIV_TOK      34
+#define BVSGE_TOK      35
+#define BVSGT_TOK      36
+#define BVSHL_TOK      37
+#define BVSLE_TOK      38
+#define BVSLT_TOK      39
+#define BVSMOD_TOK      40
+#define BVSREM_TOK      41
+#define BVSUB_TOK      42
+#define BVUDIV_TOK      43
+#define BVUMINUS_TOK      44
+#define BVUREM_TOK      45
+#define BVXNOR_TOK      46
+#define BVXOR_TOK      47
+#define BVZEROEXTEND_TOK      48
+#define CALL_TOK      49
+#define CHECKSAT_TOK      50
+#define CHECK_TYPE_TOK      51
+#define COLON      52
+#define COMMA      53
+#define COMMENT      54
+#define CONCAT_TOK      55
+#define CONTEXT_TOK      56
+#define CONTINUE_TOK      57
+#define COUNTEREXAMPLE_TOK      58
+#define COUNTERMODEL_TOK      59
+#define DATATYPE_TOK      60
+#define DBG_TOK      61
+#define DECIMAL_LITERAL      62
+#define DIGIT      63
+#define DISEQUAL_TOK      64
+#define DISTINCT_TOK      65
+#define DIVISIBLE_TOK      66
+#define DIV_TOK      67
+#define DOT      68
+#define DOTDOT      69
+#define DUMP_ASSUMPTIONS_TOK      70
+#define DUMP_CLOSURE_PROOF_TOK      71
+#define DUMP_CLOSURE_TOK      72
+#define DUMP_PROOF_TOK      73
+#define DUMP_SIG_TOK      74
+#define DUMP_TCC_ASSUMPTIONS_TOK      75
+#define DUMP_TCC_PROOF_TOK      76
+#define DUMP_TCC_TOK      77
+#define DUMP_UNSAT_CORE_TOK      78
+#define ECHO_TOK      79
+#define ELSEIF_TOK      80
+#define ELSE_TOK      81
+#define ENDIF_TOK      82
+#define END_TOK      83
+#define EQUAL_TOK      84
+#define ESCAPE      85
+#define EXISTS_TOK      86
+#define EXIT_TOK      87
+#define EXP_TOK      88
+#define FALSE_TOK      89
+#define FLOOR_TOK      90
+#define FMF_CARD_TOK      91
+#define FORALL_TOK      92
+#define FORGET_TOK      93
+#define GEQ_TOK      94
+#define GET_CHILD_TOK      95
+#define GET_OP_TOK      96
+#define GET_TYPE_TOK      97
+#define GET_VALUE_TOK      98
+#define GT_TOK      99
+#define HASHPAREN      100
+#define HASHSQ      101
+#define HELP_TOK      102
+#define HEX_DIGIT      103
+#define HEX_LITERAL      104
+#define IDENTIFIER      105
+#define IFF_TOK      106
+#define IF_TOK      107
+#define IMPLIES_TOK      108
+#define INCLUDE_TOK      109
+#define INTDIV_TOK      110
+#define INTEGER_LITERAL      111
+#define INT_TOK      112
+#define IN_TOK      113
+#define IS_INTEGER_TOK      114
+#define JOIN_TOK      115
+#define LAMBDA      116
+#define LBRACE      117
+#define LBRACKET      118
+#define LEFTSHIFT_TOK      119
+#define LEQ_TOK      120
+#define LET_TOK      121
+#define LPAREN      122
+#define LT_TOK      123
+#define MEMBER_TOK      124
+#define MINUS_TOK      125
+#define MOD_TOK      126
+#define NOT_TOK      127
+#define NUMBER_OR_RANGEOP      128
+#define OF_TOK      129
+#define OPTION_TOK      130
+#define OR_TOK      131
+#define PARENHASH      132
+#define PATTERN_TOK      133
+#define PLUS_TOK      134
+#define POPTO_SCOPE_TOK      135
+#define POPTO_TOK      136
+#define POP_SCOPE_TOK      137
+#define POP_TOK      138
+#define PRINT_TOK      139
+#define PRINT_TYPE_TOK      140
+#define PRODUCT_TOK      141
+#define PUSH_SCOPE_TOK      142
+#define PUSH_TOK      143
+#define QUERY_TOK      144
+#define RBRACE      145
+#define RBRACKET      146
+#define REAL_TOK      147
+#define RESET_TOK      148
+#define RESTART_TOK      149
+#define RIGHTSHIFT_TOK      150
+#define RPAREN      151
+#define SEMICOLON      152
+#define SETS_CARD_TOK      153
+#define SET_TOK      154
+#define SQHASH      155
+#define STAR_TOK      156
+#define STRING_CHARAT_TOK      157
+#define STRING_CONCAT_TOK      158
+#define STRING_CONTAINS_TOK      159
+#define STRING_INDEXOF_TOK      160
+#define STRING_ITOS_TOK      161
+#define STRING_LENGTH_TOK      162
+#define STRING_LITERAL      163
+#define STRING_PREFIXOF_TOK      164
+#define STRING_REPLACE_TOK      165
+#define STRING_STOI_TOK      166
+#define STRING_STOU16_TOK      167
+#define STRING_STOU32_TOK      168
+#define STRING_SUBSTR_TOK      169
+#define STRING_SUFFIXOF_TOK      170
+#define STRING_TOK      171
+#define STRING_U16TOS_TOK      172
+#define STRING_U32TOS_TOK      173
+#define SUBSTITUTE_TOK      174
+#define SUBTYPE_TOK      175
+#define SX_TOK      176
+#define THEN_TOK      177
+#define TRACE_TOK      178
+#define TRANSCLOSURE_TOK      179
+#define TRANSFORM_TOK      180
+#define TRANSPOSE_TOK      181
+#define TRUE_TOK      182
+#define TUPLE_TOK      183
+#define TYPE_TOK      184
+#define UNDERSCORE      185
+#define UNIVSET_TOK      186
+#define UNTRACE_TOK      187
+#define WHERE_TOK      188
+#define WHITESPACE      189
+#define WITH_TOK      190
+#define XOR_TOK      191
+#ifdef	EOF
+#undef	EOF
+#define	EOF	ANTLR3_TOKEN_EOF
+#endif
+
+#ifndef TOKENSOURCE
+#define TOKENSOURCE(lxr) lxr->pLexer->rec->state->tokSource
+#endif
+
+/* End of token definitions for CvcParser
+ * =============================================================================
+ */
+/** } */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* END - Note:Keep extra line feed to satisfy UNIX systems */
diff --git a/src/parser/cvc/Makefile.am b/src/parser/cvc/Makefile.am
new file mode 100644
index 0000000..8f084ba
--- /dev/null
+++ b/src/parser/cvc/Makefile.am
@@ -0,0 +1,67 @@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4PARSERLIB \
+	-I at builddir@/../.. -I at srcdir@/../../include -I at srcdir@/../.. $(ANTLR_INCLUDES)
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN) $(WNO_PARENTHESES) $(WNO_TAUTOLOGICAL_COMPARE) -Wno-unused-function -Wno-unused-variable $(WNO_UNINITIALIZED) $(WNO_CONVERSION_NULL)
+
+# Compile generated C files using C++ compiler
+CC=$(CXX)
+AM_CFLAGS = $(AM_CXXFLAGS)
+
+ANTLR_OPTS =
+
+# hide this included makefile from automake
+ at mk_include@ @srcdir@/../Makefile.antlr_tracing
+
+noinst_LTLIBRARIES = libparsercvc.la
+
+ANTLR_TOKEN_STUFF = \
+	@builddir@/Cvc.tokens
+ANTLR_LEXER_STUFF = \
+	@builddir@/CvcLexer.h \
+	@builddir@/CvcLexer.c \
+	$(ANTLR_TOKEN_STUFF)
+ANTLR_PARSER_STUFF = \
+	@builddir@/CvcParser.h \
+	@builddir@/CvcParser.c
+ANTLR_STUFF = \
+	$(ANTLR_LEXER_STUFF) \
+	$(ANTLR_PARSER_STUFF)
+
+libparsercvc_la_SOURCES = \
+	Cvc.g \
+	cvc_input.h \
+	cvc_input.cpp \
+	$(ANTLR_STUFF)
+
+BUILT_SOURCES = \
+	@builddir@/Cvc.tokens \
+	@builddir@/CvcLexer.h \
+	@builddir@/CvcLexer.c \
+	@builddir@/CvcParser.h \
+	@builddir@/CvcParser.c \
+	stamp-generated
+
+EXTRA_DIST = \
+	README \
+	stamp-generated
+
+DISTCLEANFILES = $(ANTLR_STUFF)
+distclean-local:
+	-$(AM_V_at)rmdir generated
+	-$(AM_V_at)rm -f stamp-generated
+
+stamp-generated:
+	$(AM_V_at)mkdir -p generated
+	$(AM_V_at)touch stamp-generated
+
+# antlr doesn't overwrite output files, it just leaves them.  So we have to delete them first.
+ at builddir@/CvcLexer.h: Cvc.g stamp-generated
+	-$(AM_V_at)rm -f $(ANTLR_STUFF)
+	@if test -z "$(ANTLR)"; then echo "ERROR: antlr parser generator cannot be found, cannot generate the parser" >&2; exit 1; fi
+	$(AM_V_GEN)$(ANTLR) $(ANTLR_OPTS) -fo "@builddir@" "@srcdir@/Cvc.g"
+
+# These don't actually depend on CvcLexer.h, but if we're doing parallel
+# make and the lexer needs to be rebuilt, we have to keep the rules
+# from running in parallel (since the token files will be deleted &
+# recreated)
+ at builddir@/CvcLexer.c @builddir@/CvcParser.h @builddir@/CvcParser.c $(ANTLR_TOKEN_STUFF): @builddir@/CvcLexer.h
diff --git a/src/parser/cvc/Makefile.in b/src/parser/cvc/Makefile.in
new file mode 100644
index 0000000..649ff6d
--- /dev/null
+++ b/src/parser/cvc/Makefile.in
@@ -0,0 +1,869 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = src/parser/cvc
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libparsercvc_la_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_1 =
+am__objects_2 = @builddir@/CvcLexer.lo $(am__objects_1)
+am__objects_3 = @builddir@/CvcParser.lo
+am__objects_4 = $(am__objects_2) $(am__objects_3)
+am_libparsercvc_la_OBJECTS = cvc_input.lo $(am__objects_4)
+libparsercvc_la_OBJECTS = $(am_libparsercvc_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+SOURCES = $(libparsercvc_la_SOURCES)
+DIST_SOURCES = $(libparsercvc_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp \
+	README
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+
+# Compile generated C files using C++ compiler
+CC = $(CXX)
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4PARSERLIB \
+	-I at builddir@/../.. -I at srcdir@/../../include -I at srcdir@/../.. $(ANTLR_INCLUDES)
+
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN) $(WNO_PARENTHESES) $(WNO_TAUTOLOGICAL_COMPARE) -Wno-unused-function -Wno-unused-variable $(WNO_UNINITIALIZED) $(WNO_CONVERSION_NULL)
+AM_CFLAGS = $(AM_CXXFLAGS)
+ANTLR_OPTS = 
+noinst_LTLIBRARIES = libparsercvc.la
+ANTLR_TOKEN_STUFF = \
+	@builddir@/Cvc.tokens
+
+ANTLR_LEXER_STUFF = \
+	@builddir@/CvcLexer.h \
+	@builddir@/CvcLexer.c \
+	$(ANTLR_TOKEN_STUFF)
+
+ANTLR_PARSER_STUFF = \
+	@builddir@/CvcParser.h \
+	@builddir@/CvcParser.c
+
+ANTLR_STUFF = \
+	$(ANTLR_LEXER_STUFF) \
+	$(ANTLR_PARSER_STUFF)
+
+libparsercvc_la_SOURCES = \
+	Cvc.g \
+	cvc_input.h \
+	cvc_input.cpp \
+	$(ANTLR_STUFF)
+
+BUILT_SOURCES = \
+	@builddir@/Cvc.tokens \
+	@builddir@/CvcLexer.h \
+	@builddir@/CvcLexer.c \
+	@builddir@/CvcParser.h \
+	@builddir@/CvcParser.c \
+	stamp-generated
+
+EXTRA_DIST = \
+	README \
+	stamp-generated
+
+DISTCLEANFILES = $(ANTLR_STUFF)
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/parser/cvc/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/parser/cvc/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+ at builddir@/$(am__dirstamp):
+	@$(MKDIR_P) @builddir@
+	@: > @builddir@/$(am__dirstamp)
+ at builddir@/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) @builddir@/$(DEPDIR)
+	@: > @builddir@/$(DEPDIR)/$(am__dirstamp)
+ at builddir@/CvcLexer.lo: @builddir@/$(am__dirstamp) \
+	@builddir@/$(DEPDIR)/$(am__dirstamp)
+ at builddir@/CvcParser.lo: @builddir@/$(am__dirstamp) \
+	@builddir@/$(DEPDIR)/$(am__dirstamp)
+
+libparsercvc.la: $(libparsercvc_la_OBJECTS) $(libparsercvc_la_DEPENDENCIES) $(EXTRA_libparsercvc_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK)  $(libparsercvc_la_OBJECTS) $(libparsercvc_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+	-rm -f @builddir@/*.$(OBJEXT)
+	-rm -f @builddir@/*.lo
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cvc_input.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote@@builddir@/$(DEPDIR)/CvcLexer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote@@builddir@/$(DEPDIR)/CvcParser.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+	-rm -rf @builddir@/.libs @builddir@/_libs
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f @builddir@/$(DEPDIR)/$(am__dirstamp)
+	-rm -f @builddir@/$(am__dirstamp)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR) @builddir@/$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-local distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR) @builddir@/$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-local distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# hide this included makefile from automake
+ at mk_include@ @srcdir@/../Makefile.antlr_tracing
+distclean-local:
+	-$(AM_V_at)rmdir generated
+	-$(AM_V_at)rm -f stamp-generated
+
+stamp-generated:
+	$(AM_V_at)mkdir -p generated
+	$(AM_V_at)touch stamp-generated
+
+# antlr doesn't overwrite output files, it just leaves them.  So we have to delete them first.
+ at builddir@/CvcLexer.h: Cvc.g stamp-generated
+	-$(AM_V_at)rm -f $(ANTLR_STUFF)
+	@if test -z "$(ANTLR)"; then echo "ERROR: antlr parser generator cannot be found, cannot generate the parser" >&2; exit 1; fi
+	$(AM_V_GEN)$(ANTLR) $(ANTLR_OPTS) -fo "@builddir@" "@srcdir@/Cvc.g"
+
+# These don't actually depend on CvcLexer.h, but if we're doing parallel
+# make and the lexer needs to be rebuilt, we have to keep the rules
+# from running in parallel (since the token files will be deleted &
+# recreated)
+ at builddir@/CvcLexer.c @builddir@/CvcParser.h @builddir@/CvcParser.c $(ANTLR_TOKEN_STUFF): @builddir@/CvcLexer.h
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/parser/cvc/README b/src/parser/cvc/README
new file mode 100644
index 0000000..513a8e8
--- /dev/null
+++ b/src/parser/cvc/README
@@ -0,0 +1,98 @@
+Notes on CVC4's CVC language parser.
+
+This language parser attempts to maintain some backward compatibility
+with previous versions of the language.  However, as the language
+evolves, new features need to be supported, and deprecated,
+difficult-to-maintain, or grammar-conflicting syntax and features
+need to be removed.
+
+In order to support our users, we have tried to parse what CVC3 could
+and (at least) offer an error when a feature is unavailable or
+unimplemented.  But this is not always possible.  Please report a
+bug if a particular discrepancy between CVC3 and CVC4 handling of
+the CVC language is a concern to you; we may be able to add a
+compatibility mode, or at least offer better warnings or errors.
+
+Below is a list of the known differences between CVC3's and CVC4's
+version of the CVC language.  This is the list of differences in
+language design and parsing ONLY.  The featureset of CVC4 is
+rapidly expanding, but does not match CVC3's breadth yet.  However,
+CVC4 should tell you of an unimplemented feature if you try to use
+it (rather than giving a cryptic parse or assertion error).
+
+* CVC4 does not add the current assumptions to the scope after
+  SAT/INVALID responses like CVC3 did.
+
+* CVC4 no longer supports the "old" function syntax:
+
+    f : [INT -> INT];
+
+  This syntax was deprecated in CVC3, and will no longer be
+  supported.  Functions are now written as follows:
+
+    unary : INT -> INT;
+    binary : (INT, INT) -> INT;
+    ternary : (INT, INT, INT) -> INT;
+
+* QUERY and CHECKSAT do not add their argument to the current
+  list of assertions like CVC3 did.
+
+* CVC4 allows datatypes to hold complex types that contain self-
+  or mutual references.  For example,
+
+    DATATYPE tree = node(children:ARRAY INT OF tree) | leaf(data:INT) END;
+
+  is permissible in CVC4 but not in CVC3.
+
+* CVC4 supports parameterized types in datatype definitions, e.g.
+
+    DATATYPE list[T] = cons(car:T) | nil END;
+
+  You can then declare "x : list[INT];" or "x : list[list[INT]];",
+  for example.
+
+* CVC4 supports type ascriptions, e.g.
+
+    U : TYPE;
+    f : INT -> U;
+    QUERY f(5) : U = f(6);
+    QUERY f(5) : U = f(6) : U;
+    QUERY ( f(5) = f(6) ) : BOOLEAN;
+    QUERY f(5) : U = f(6) : U : BOOLEAN;
+
+  You probably won't need it that much, but it can be handy for
+  debugging.  If a term (or formula) isn't the same type as its
+  ascription, and it cannot be "up-casted" safely, an error is
+  immediately generated at parse time.  Sometimes this up-cast is
+  necessary; consider the "nil" constructor of list[T] above.
+  To use "nil," you must cast it to something:
+
+    DATATYPE Item = Carrots | Butter | Milk | Bread END;
+    groceries : list[Item] = cons(Butter, cons(Bread, nil:list[INT]));
+
+* CVC4 supports stronger distinction between type and variable names.
+  This means that CVC4 may allow you to declare things that CVC3 does
+  not:
+
+    a : TYPE;
+    a : INT; % CVC3 complains
+    a : a; % CVC4 complains, `a' cannot both be INT and `a'
+    b : a; % No problem, `a' is both the type of `b', and an INT
+
+* CVC4 supports a command-level LET syntax, e.g.:
+
+    LET double = LAMBDA(x:INT) : 2*x IN
+      QUERY double(5) = 10;
+
+  It works for types also, and mixes of the two:
+
+    LET x = INT, y = 5, z = x IN
+      w : x = y;
+    QUERY y = 5; % error: y undefined
+    QUERY w = 5; % valid
+
+  The scope of such a LET is exactly one command (until a semicolon).
+  (It would conflict with POP_SCOPE if it lasted longer.)
+
+-- Morgan Deters <mdeters at cs.nyu.edu>  Wed, 20 Apr 2011 18:32:32 -0400
+
diff --git a/src/parser/cvc/cvc_input.cpp b/src/parser/cvc/cvc_input.cpp
new file mode 100644
index 0000000..9e00567
--- /dev/null
+++ b/src/parser/cvc/cvc_input.cpp
@@ -0,0 +1,78 @@
+/*********************                                                        */
+/*! \file cvc_input.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add file-specific comments here ]].
+ **
+ ** [[ Add file-specific comments here ]]
+ **/
+
+// These headers should be the first two included.
+// See the documentation in "parser/antlr_undefines.h" for more details.
+#include <antlr3.h>
+#include "parser/antlr_undefines.h"
+
+#include "parser/cvc/cvc_input.h"
+
+#include "expr/expr_manager.h"
+#include "parser/antlr_input.h"
+#include "parser/parser_exception.h"
+#include "parser/cvc/CvcLexer.h"
+#include "parser/cvc/CvcParser.h"
+
+namespace CVC4 {
+namespace parser {
+
+/* Use lookahead=3 */
+CvcInput::CvcInput(AntlrInputStream& inputStream) :
+  AntlrInput(inputStream,6) {
+  pANTLR3_INPUT_STREAM input = inputStream.getAntlr3InputStream();
+  assert( input != NULL );
+
+  d_pCvcLexer = CvcLexerNew(input);
+  if( d_pCvcLexer == NULL ) {
+    throw ParserException("Failed to create CVC lexer.");
+  }
+
+  setAntlr3Lexer( d_pCvcLexer->pLexer );
+
+  pANTLR3_COMMON_TOKEN_STREAM tokenStream = getTokenStream();
+  assert( tokenStream != NULL );
+
+  d_pCvcParser = CvcParserNew(tokenStream);
+  if( d_pCvcParser == NULL ) {
+    throw ParserException("Failed to create CVC parser.");
+  }
+
+  setAntlr3Parser(d_pCvcParser->pParser);
+}
+
+
+CvcInput::~CvcInput() {
+  d_pCvcLexer->free(d_pCvcLexer);
+  d_pCvcParser->free(d_pCvcParser);
+}
+
+Command* CvcInput::parseCommand() {
+  return d_pCvcParser->parseCommand(d_pCvcParser);
+}
+
+Expr CvcInput::parseExpr() {
+  return d_pCvcParser->parseExpr(d_pCvcParser);
+}
+
+/*
+pANTLR3_LEXER CvcInput::getLexer() {
+  return d_pCvcLexer->pLexer;
+}
+*/
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
diff --git a/src/parser/cvc/cvc_input.h b/src/parser/cvc/cvc_input.h
new file mode 100644
index 0000000..aff3698
--- /dev/null
+++ b/src/parser/cvc/cvc_input.h
@@ -0,0 +1,86 @@
+/*********************                                                        */
+/*! \file cvc_input.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add file-specific comments here ]].
+ **
+ ** [[ Add file-specific comments here ]]
+ **/
+
+#include "cvc4parser_private.h"
+
+#ifndef __CVC4__PARSER__CVC_INPUT_H
+#define __CVC4__PARSER__CVC_INPUT_H
+
+#include "parser/antlr_input.h"
+#include "parser/cvc/CvcLexer.h"
+#include "parser/cvc/CvcParser.h"
+
+// extern void CvcParserSetAntlrParser(CVC4::parser::AntlrParser* newAntlrParser);
+
+namespace CVC4 {
+
+class Command;
+class Expr;
+class ExprManager;
+
+namespace parser {
+
+class CvcInput : public AntlrInput {
+  /** The ANTLR3 CVC lexer for the input. */
+  pCvcLexer d_pCvcLexer;
+
+  /** The ANTLR3 CVC parser for the input. */
+  pCvcParser d_pCvcParser;
+
+public:
+
+  /** Create an input.
+   *
+   * @param inputStream the input to parse
+   */
+  CvcInput(AntlrInputStream& inputStream);
+
+  /** Destructor. Frees the lexer and the parser. */
+  virtual ~CvcInput();
+
+  /** Get the language that this Input is reading. */
+  InputLanguage getLanguage() const throw() {
+    return language::input::LANG_CVC4;
+  }
+
+protected:
+
+  /** Parse a command from the input. Returns <code>NULL</code> if there is
+   * no command there to parse.
+   *
+   * @throws ParserException if an error is encountered during parsing.
+   */
+  Command* parseCommand();
+
+  /** Parse an expression from the input. Returns a null <code>Expr</code>
+   * if there is no expression there to parse.
+   *
+   * @throws ParserException if an error is encountered during parsing.
+   */
+  Expr parseExpr();
+
+private:
+
+  /** Initialize the class. Called from the constructors once the input stream
+   * is initialized. */
+  void init();
+
+}; // class CvcInput
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PARSER__CVC_INPUT_H */
diff --git a/src/parser/cvc/stamp-generated b/src/parser/cvc/stamp-generated
new file mode 100644
index 0000000..e69de29
diff --git a/src/parser/cvc4parser.i b/src/parser/cvc4parser.i
new file mode 100644
index 0000000..2ad3bf0
--- /dev/null
+++ b/src/parser/cvc4parser.i
@@ -0,0 +1,15 @@
+%import "bindings/swig.h"
+
+%module CVC4Parser
+// nspace completely broken with Java packaging
+//%nspace;
+
+%{
+namespace CVC4 {}
+using namespace CVC4;
+%}
+
+%include "parser/parser_exception.i"
+%include "parser/input.i"
+%include "parser/parser.i"
+%include "parser/parser_builder.i"
diff --git a/src/parser/input.cpp b/src/parser/input.cpp
new file mode 100644
index 0000000..5fadbcc
--- /dev/null
+++ b/src/parser/input.cpp
@@ -0,0 +1,85 @@
+/*********************                                                        */
+/*! \file input.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A super-class for input language parsers.
+ **
+ ** A super-class for input language parsers
+ **/
+
+// This must be included first.
+#include "parser/antlr_input.h"
+
+#include "parser/input.h"
+
+#include "base/output.h"
+#include "expr/type.h"
+#include "parser/parser.h"
+#include "parser/parser_exception.h"
+#include "smt/command.h"
+
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::parser;
+using namespace CVC4::kind;
+
+namespace CVC4 {
+namespace parser {
+
+InputStreamException::InputStreamException(const std::string& msg) :
+  Exception(msg) {
+}
+
+const std::string InputStream::getName() const {
+  return d_name;
+}
+
+Input::Input(InputStream& inputStream) :
+    d_inputStream( &inputStream ) {
+}
+
+Input::~Input() {
+  delete d_inputStream;
+}
+
+InputStream *Input::getInputStream() {
+  return d_inputStream;
+}
+
+Input* Input::newFileInput(InputLanguage lang,
+                           const std::string& filename,
+                           bool useMmap)
+  throw (InputStreamException) {
+  AntlrInputStream *inputStream = 
+    AntlrInputStream::newFileInputStream(filename, useMmap);
+  return AntlrInput::newInput(lang, *inputStream);
+}
+
+Input* Input::newStreamInput(InputLanguage lang,
+                             std::istream& input,
+                             const std::string& name,
+                             bool lineBuffered)
+  throw (InputStreamException) {
+  AntlrInputStream *inputStream =
+    AntlrInputStream::newStreamInputStream(input, name, lineBuffered);
+  return AntlrInput::newInput(lang, *inputStream);
+}
+
+Input* Input::newStringInput(InputLanguage lang,
+                             const std::string& str,
+                             const std::string& name)
+  throw (InputStreamException) {
+  AntlrInputStream *inputStream = AntlrInputStream::newStringInputStream(str, name);
+  return AntlrInput::newInput(lang, *inputStream);
+}
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
diff --git a/src/parser/input.h b/src/parser/input.h
new file mode 100644
index 0000000..7dce369
--- /dev/null
+++ b/src/parser/input.h
@@ -0,0 +1,200 @@
+/*********************                                                        */
+/*! \file input.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Base for parser inputs.
+ **
+ ** Base for parser inputs.
+ **/
+
+#include "cvc4parser_public.h"
+
+#ifndef __CVC4__PARSER__INPUT_H
+#define __CVC4__PARSER__INPUT_H
+
+#include <iostream>
+#include <stdio.h>
+#include <string>
+#include <vector>
+
+#include "options/language.h"
+#include "expr/expr.h"
+#include "expr/expr_manager.h"
+#include "parser/parser_exception.h"
+
+namespace CVC4 {
+
+class Command;
+class Type;
+class FunctionType;
+
+namespace parser {
+
+class CVC4_PUBLIC InputStreamException : public Exception {
+
+public:
+  InputStreamException(const std::string& msg);
+  virtual ~InputStreamException() throw() { }
+};
+
+/** Wrapper around an input stream. */
+class CVC4_PUBLIC InputStream {
+
+  /** The name of this input stream. */
+  std::string d_name;
+
+  /** Indicates whether the input file is a temporary that we should
+    * delete on exit. */
+  bool d_fileIsTemporary;
+
+protected:
+
+  /** Initialize the input stream with a name. */
+  InputStream(std::string name, bool isTemporary=false) :
+    d_name(name),
+    d_fileIsTemporary(isTemporary) {
+  }
+
+public:
+
+  /** Destructor. */
+  virtual ~InputStream() {
+    if( d_fileIsTemporary ) {
+      remove(d_name.c_str());
+    }
+  }
+
+  /** Get the name of this input stream. */
+  const std::string getName() const;
+};/* class InputStream */
+
+class Parser;
+
+/**
+ * An input to be parsed. The static factory methods in this class (e.g.,
+ * <code>newFileInput</code>, <code>newStringInput</code>) create a parser
+ * for the given input language and attach it to an input source of the
+ * appropriate type.
+ */
+class CVC4_PUBLIC Input {
+  friend class Parser; // for parseError, parseCommand, parseExpr
+  friend class ParserBuilder;
+
+  /** The input stream. */
+  InputStream *d_inputStream;
+
+  /* Since we own d_inputStream and it needs to be freed, we need to prevent
+   * copy construction and assignment.  Mark them private and do not define
+   * them.
+   */
+  Input(const Input& input) CVC4_UNDEFINED;
+  Input& operator=(const Input& input) CVC4_UNDEFINED;
+
+public:
+
+  /** Create an input for the given file.
+    *
+    * @param lang the input language
+    * @param filename the input filename
+    * @param useMmap true if the parser should use memory-mapped I/O (default: false)
+    */
+  static Input* newFileInput(InputLanguage lang,
+                             const std::string& filename,
+                             bool useMmap = false)
+    throw (InputStreamException);
+
+  /** Create an input for the given stream.
+   *
+   * @param lang the input language
+   * @param input the input stream
+   * @param name the name of the stream, for use in error messages
+   * @param lineBuffered whether this Input should be line-buffered
+   * (false, the default, means that the entire Input might be read
+   * before being lexed and parsed)
+   */
+  static Input* newStreamInput(InputLanguage lang,
+                               std::istream& input,
+                               const std::string& name,
+                               bool lineBuffered = false)
+    throw (InputStreamException);
+
+  /** Create an input for the given string
+   *
+   * @param lang the input language
+   * @param input the input string
+   * @param name the name of the stream, for use in error messages
+   */
+  static Input* newStringInput(InputLanguage lang,
+                               const std::string& input,
+                               const std::string& name)
+    throw (InputStreamException);
+
+
+  /** Destructor. Frees the input stream and closes the input. */
+  virtual ~Input();
+
+  /** Retrieve the remaining text in this input. */
+  virtual std::string getUnparsedText() = 0;
+
+  /** Get the language that this Input is reading. */
+  virtual InputLanguage getLanguage() const throw() = 0;
+
+  /** Retrieve the name of the input stream */
+  const std::string getInputStreamName(){
+    return getInputStream()->getName();
+  }
+
+protected:
+
+  /** Create an input.
+   *
+   * @param inputStream the input stream
+   */
+  Input(InputStream& inputStream);
+
+  /** Retrieve the input stream for this parser. */
+  InputStream *getInputStream();
+
+  /** Parse a command from the input by invoking the
+   * implementation-specific parsing method.  Returns
+   * <code>NULL</code> if there is no command there to parse.
+   *
+   * @throws ParserException if an error is encountered during parsing.
+   */
+  virtual Command* parseCommand() = 0;
+
+  /**
+   * Issue a warning to the user, with source file, line, and column info.
+   */
+  virtual void warning(const std::string& msg) = 0;
+
+  /**
+   * Throws a <code>ParserException</code> with the given message.
+   */
+  virtual void parseError(const std::string& msg, bool eofException = false)
+    throw (ParserException) = 0;
+
+  /** Parse an expression from the input by invoking the
+   * implementation-specific parsing method. Returns a null
+   * <code>Expr</code> if there is no expression there to parse.
+   *
+   * @throws ParserException if an error is encountered during parsing.
+   */
+  virtual Expr parseExpr() = 0;
+
+  /** Set the Parser object for this input. */
+  virtual void setParser(Parser& parser) = 0;
+
+};/* class Input */
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PARSER__ANTLR_INPUT_H */
diff --git a/src/parser/input.i b/src/parser/input.i
new file mode 100644
index 0000000..2a76e2b
--- /dev/null
+++ b/src/parser/input.i
@@ -0,0 +1,5 @@
+%{
+#include "parser/input.h"
+%}
+
+%include "parser/input.h"
diff --git a/src/parser/memory_mapped_input_buffer.cpp b/src/parser/memory_mapped_input_buffer.cpp
new file mode 100644
index 0000000..1554428
--- /dev/null
+++ b/src/parser/memory_mapped_input_buffer.cpp
@@ -0,0 +1,134 @@
+/*********************                                                        */
+/*! \file memory_mapped_input_buffer.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add file-specific comments here ]].
+ **
+ ** [[ Add file-specific comments here ]]
+ **/
+
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdint.h>
+
+#include <antlr3input.h>
+
+#ifndef _WIN32
+
+#include <cerrno>
+#include <sys/mman.h>
+#include <sys/stat.h>
+
+#endif /* _WIN32 */
+
+#include "base/exception.h"
+#include "parser/memory_mapped_input_buffer.h"
+
+namespace CVC4 {
+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);
+
+void
+UnmapFile(pANTLR3_INPUT_STREAM input);
+
+pANTLR3_INPUT_STREAM MemoryMappedInputBufferNew(const std::string& filename) {
+  // Pointer to the input stream we are going to create
+  //
+  pANTLR3_INPUT_STREAM input;
+  ANTLR3_UINT32 status;
+
+  // Allocate memory for the input stream structure
+  //
+  input = (pANTLR3_INPUT_STREAM) ANTLR3_CALLOC(1, sizeof(ANTLR3_INPUT_STREAM));
+
+  if(input == NULL) {
+    return NULL;
+  }
+
+  // Structure was allocated correctly, now we can read the file.
+  //
+  status = MemoryMapFile(input, filename);
+
+  // Call the common 8 bit ASCII input stream handler
+  // Initializer type thingy doobry function.
+  //
+#ifdef CVC4_ANTLR3_OLD_INPUT_STREAM
+  antlr3AsciiSetupStream(input, ANTLR3_CHARSTREAM);
+#else /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+  antlr38BitSetupStream(input);
+#endif /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+
+  // Now we can set up the file name
+  //
+  input->istream->streamName
+      = input->strFactory->newStr(input->strFactory,
+                                  (uint8_t*) filename.c_str());
+  input->fileName = input->istream->streamName;
+  input->free = UnmapFile;
+
+  if(status != ANTLR3_SUCCESS) {
+    input->close(input);
+    return NULL;
+  }
+
+  return input;
+}
+
+static ANTLR3_UINT32 MemoryMapFile(pANTLR3_INPUT_STREAM input,
+                                   const std::string& filename) {
+  errno = 0;
+  struct stat st;
+  if(stat(filename.c_str(), &st) == -1) {
+    return ANTLR3_ERR_NOFILE;
+  }
+
+  input->sizeBuf = st.st_size;
+
+  int fd = open(filename.c_str(), O_RDONLY);
+  if(fd == -1) {
+    return ANTLR3_ERR_NOFILE;
+  }
+
+  input->data = mmap(0, input->sizeBuf, PROT_READ, MAP_PRIVATE, fd, 0);
+  errno = 0;
+  close(fd);
+  if(intptr_t(input->data) == -1) {
+    return ANTLR3_ERR_NOMEM;
+  }
+
+  return ANTLR3_SUCCESS;
+}
+
+/* This is a bit shady. antlr3AsciiSetupStream has free and close as aliases.
+ * We need to unmap the file somewhere, so we install this function as free and
+ * call the default version of close to de-allocate everything else. */
+void UnmapFile(pANTLR3_INPUT_STREAM input) {
+  munmap((void*) input->data, input->sizeBuf);
+  input->close(input);
+}
+
+#endif /* _WIN32 */
+
+}/* extern "C" */
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
diff --git a/src/parser/memory_mapped_input_buffer.h b/src/parser/memory_mapped_input_buffer.h
new file mode 100644
index 0000000..2a34d11
--- /dev/null
+++ b/src/parser/memory_mapped_input_buffer.h
@@ -0,0 +1,42 @@
+/*********************                                                        */
+/*! \file memory_mapped_input_buffer.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief ANTLR input buffer from a memory-mapped file.
+ **
+ ** ANTLR input buffer from a memory-mapped file.
+ **/
+
+#include "cvc4parser_private.h"
+
+#ifndef __CVC4__PARSER__MEMORY_MAPPED_INPUT_BUFFER_H
+#define __CVC4__PARSER__MEMORY_MAPPED_INPUT_BUFFER_H
+
+#include <antlr3input.h>
+#include <string>
+
+namespace CVC4 {
+namespace parser {
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+pANTLR3_INPUT_STREAM
+MemoryMappedInputBufferNew(const std::string& filename);
+
+#ifdef __cplusplus
+}/* extern "C" */
+#endif
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PARSER__MEMORY_MAPPED_INPUT_BUFFER_H */
diff --git a/src/parser/parser.cpp b/src/parser/parser.cpp
new file mode 100644
index 0000000..2377b8a
--- /dev/null
+++ b/src/parser/parser.cpp
@@ -0,0 +1,535 @@
+/*********************                                                        */
+/*! \file parser.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Christopher L. Conway, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Parser state implementation.
+ **
+ ** Parser state implementation.
+ **/
+
+#include "parser/parser.h"
+
+#include <stdint.h>
+
+#include <cassert>
+#include <fstream>
+#include <iostream>
+#include <iterator>
+#include <sstream>
+
+#include "base/output.h"
+#include "expr/expr.h"
+#include "expr/expr_iomanip.h"
+#include "expr/kind.h"
+#include "expr/type.h"
+#include "options/options.h"
+#include "parser/input.h"
+#include "parser/parser_exception.h"
+#include "smt/command.h"
+#include "util/resource_manager.h"
+
+using namespace std;
+using namespace CVC4::kind;
+
+namespace CVC4 {
+namespace parser {
+
+Parser::Parser(ExprManager* exprManager, Input* input, bool strictMode,
+               bool parseOnly)
+    : d_exprManager(exprManager),
+      d_resourceManager(d_exprManager->getResourceManager()),
+      d_input(input),
+      d_symtabAllocated(),
+      d_symtab(&d_symtabAllocated),
+      d_assertionLevel(0),
+      d_globalDeclarations(false),
+      d_anonymousFunctionCount(0),
+      d_done(false),
+      d_checksEnabled(true),
+      d_strictMode(strictMode),
+      d_parseOnly(parseOnly),
+      d_canIncludeFile(true),
+      d_logicIsForced(false),
+      d_forcedLogic() {
+  d_input->setParser(*this);
+}
+
+Parser::~Parser() {
+  for (std::list<Command*>::iterator iter = d_commandQueue.begin();
+       iter != d_commandQueue.end(); ++iter) {
+    Command* command = *iter;
+    delete command;
+  }
+  d_commandQueue.clear();
+  delete d_input;
+}
+
+Expr Parser::getSymbol(const std::string& name, SymbolType type) {
+  checkDeclaration(name, CHECK_DECLARED, type);
+  assert(isDeclared(name, type));
+
+  if (type == SYM_VARIABLE) {
+    // Functions share var namespace
+    return d_symtab->lookup(name);
+  }
+
+  assert(false);  // Unhandled(type);
+  return Expr();
+}
+
+Expr Parser::getVariable(const std::string& name) {
+  return getSymbol(name, SYM_VARIABLE);
+}
+
+Expr Parser::getFunction(const std::string& name) {
+  return getSymbol(name, SYM_VARIABLE);
+}
+
+Type Parser::getType(const std::string& var_name, SymbolType type) {
+  checkDeclaration(var_name, CHECK_DECLARED, type);
+  assert(isDeclared(var_name, type));
+  Type t = getSymbol(var_name, type).getType();
+  return t;
+}
+
+Type Parser::getSort(const std::string& name) {
+  checkDeclaration(name, CHECK_DECLARED, SYM_SORT);
+  assert(isDeclared(name, SYM_SORT));
+  Type t = d_symtab->lookupType(name);
+  return t;
+}
+
+Type Parser::getSort(const std::string& name, const std::vector<Type>& params) {
+  checkDeclaration(name, CHECK_DECLARED, SYM_SORT);
+  assert(isDeclared(name, SYM_SORT));
+  Type t = d_symtab->lookupType(name, params);
+  return t;
+}
+
+size_t Parser::getArity(const std::string& sort_name) {
+  checkDeclaration(sort_name, CHECK_DECLARED, SYM_SORT);
+  assert(isDeclared(sort_name, SYM_SORT));
+  return d_symtab->lookupArity(sort_name);
+}
+
+/* Returns true if name is bound to a boolean variable. */
+bool Parser::isBoolean(const std::string& name) {
+  return isDeclared(name, SYM_VARIABLE) && getType(name).isBoolean();
+}
+
+/* Returns true if name is bound to a function-like thing (function,
+ * constructor, tester, or selector). */
+bool Parser::isFunctionLike(const std::string& name) {
+  if (!isDeclared(name, SYM_VARIABLE)) {
+    return false;
+  }
+  Type type = getType(name);
+  return type.isFunction() || type.isConstructor() || type.isTester() ||
+         type.isSelector();
+}
+
+/* Returns true if name is bound to a defined function. */
+bool Parser::isDefinedFunction(const std::string& name) {
+  // more permissive in type than isFunction(), because defined
+  // functions can be zero-ary and declared functions cannot.
+  return d_symtab->isBoundDefinedFunction(name);
+}
+
+/* Returns true if the Expr is a defined function. */
+bool Parser::isDefinedFunction(Expr func) {
+  // more permissive in type than isFunction(), because defined
+  // functions can be zero-ary and declared functions cannot.
+  return d_symtab->isBoundDefinedFunction(func);
+}
+
+/* Returns true if name is bound to a function returning boolean. */
+bool Parser::isPredicate(const std::string& name) {
+  return isDeclared(name, SYM_VARIABLE) && getType(name).isPredicate();
+}
+
+Expr Parser::mkVar(const std::string& name, const Type& type, uint32_t flags) {
+  if (d_globalDeclarations) {
+    flags |= ExprManager::VAR_FLAG_GLOBAL;
+  }
+  Debug("parser") << "mkVar(" << name << ", " << type << ")" << std::endl;
+  Expr expr = d_exprManager->mkVar(name, type, flags);
+  defineVar(name, expr, flags & ExprManager::VAR_FLAG_GLOBAL);
+  return expr;
+}
+
+Expr Parser::mkBoundVar(const std::string& name, const Type& type) {
+  Debug("parser") << "mkVar(" << name << ", " << type << ")" << std::endl;
+  Expr expr = d_exprManager->mkBoundVar(name, type);
+  defineVar(name, expr, false);
+  return expr;
+}
+
+Expr Parser::mkFunction(const std::string& name, const Type& type,
+                        uint32_t flags) {
+  if (d_globalDeclarations) {
+    flags |= ExprManager::VAR_FLAG_GLOBAL;
+  }
+  Debug("parser") << "mkVar(" << name << ", " << type << ")" << std::endl;
+  Expr expr = d_exprManager->mkVar(name, type, flags);
+  defineFunction(name, expr, flags & ExprManager::VAR_FLAG_GLOBAL);
+  return expr;
+}
+
+Expr Parser::mkAnonymousFunction(const std::string& prefix, const Type& type,
+                                 uint32_t flags) {
+  if (d_globalDeclarations) {
+    flags |= ExprManager::VAR_FLAG_GLOBAL;
+  }
+  stringstream name;
+  name << prefix << "_anon_" << ++d_anonymousFunctionCount;
+  return d_exprManager->mkVar(name.str(), type, flags);
+}
+
+std::vector<Expr> Parser::mkVars(const std::vector<std::string> names,
+                                 const Type& type, uint32_t flags) {
+  if (d_globalDeclarations) {
+    flags |= ExprManager::VAR_FLAG_GLOBAL;
+  }
+  std::vector<Expr> vars;
+  for (unsigned i = 0; i < names.size(); ++i) {
+    vars.push_back(mkVar(names[i], type, flags));
+  }
+  return vars;
+}
+
+std::vector<Expr> Parser::mkBoundVars(const std::vector<std::string> names,
+                                      const Type& type) {
+  std::vector<Expr> vars;
+  for (unsigned i = 0; i < names.size(); ++i) {
+    vars.push_back(mkBoundVar(names[i], type));
+  }
+  return vars;
+}
+
+void Parser::defineVar(const std::string& name, const Expr& val,
+                       bool levelZero) {
+  Debug("parser") << "defineVar( " << name << " := " << val << ")" << std::endl;
+  d_symtab->bind(name, val, levelZero);
+  assert(isDeclared(name));
+}
+
+void Parser::defineFunction(const std::string& name, const Expr& val,
+                            bool levelZero) {
+  d_symtab->bindDefinedFunction(name, val, levelZero);
+  assert(isDeclared(name));
+}
+
+void Parser::defineType(const std::string& name, const Type& type) {
+  d_symtab->bindType(name, type);
+  assert(isDeclared(name, SYM_SORT));
+}
+
+void Parser::defineType(const std::string& name,
+                        const std::vector<Type>& params, const Type& type) {
+  d_symtab->bindType(name, params, type);
+  assert(isDeclared(name, SYM_SORT));
+}
+
+void Parser::defineParameterizedType(const std::string& name,
+                                     const std::vector<Type>& params,
+                                     const Type& type) {
+  if (Debug.isOn("parser")) {
+    Debug("parser") << "defineParameterizedType(" << name << ", "
+                    << params.size() << ", [";
+    if (params.size() > 0) {
+      copy(params.begin(), params.end() - 1,
+           ostream_iterator<Type>(Debug("parser"), ", "));
+      Debug("parser") << params.back();
+    }
+    Debug("parser") << "], " << type << ")" << std::endl;
+  }
+  defineType(name, params, type);
+}
+
+SortType Parser::mkSort(const std::string& name, uint32_t flags) {
+  if (d_globalDeclarations) {
+    flags |= ExprManager::VAR_FLAG_GLOBAL;
+  }
+  Debug("parser") << "newSort(" << name << ")" << std::endl;
+  Type type = d_exprManager->mkSort(name, flags);
+  defineType(name, type);
+  return type;
+}
+
+SortConstructorType Parser::mkSortConstructor(const std::string& name,
+                                              size_t arity) {
+  Debug("parser") << "newSortConstructor(" << name << ", " << arity << ")"
+                  << std::endl;
+  SortConstructorType type = d_exprManager->mkSortConstructor(name, arity);
+  defineType(name, vector<Type>(arity), type);
+  return type;
+}
+
+SortType Parser::mkUnresolvedType(const std::string& name) {
+  SortType unresolved = mkSort(name, ExprManager::SORT_FLAG_PLACEHOLDER);
+  d_unresolved.insert(unresolved);
+  return unresolved;
+}
+
+SortConstructorType Parser::mkUnresolvedTypeConstructor(const std::string& name,
+                                                        size_t arity) {
+  SortConstructorType unresolved = mkSortConstructor(name, arity);
+  d_unresolved.insert(unresolved);
+  return unresolved;
+}
+
+SortConstructorType Parser::mkUnresolvedTypeConstructor(
+    const std::string& name, const std::vector<Type>& params) {
+  Debug("parser") << "newSortConstructor(P)(" << name << ", " << params.size()
+                  << ")" << std::endl;
+  SortConstructorType unresolved =
+      d_exprManager->mkSortConstructor(name, params.size());
+  defineType(name, params, unresolved);
+  Type t = getSort(name, params);
+  d_unresolved.insert(unresolved);
+  return unresolved;
+}
+
+bool Parser::isUnresolvedType(const std::string& name) {
+  if (!isDeclared(name, SYM_SORT)) {
+    return false;
+  }
+  return d_unresolved.find(getSort(name)) != d_unresolved.end();
+}
+
+std::vector<DatatypeType> Parser::mkMutualDatatypeTypes(
+    std::vector<Datatype>& datatypes) {
+  try {
+    std::vector<DatatypeType> types =
+        d_exprManager->mkMutualDatatypeTypes(datatypes, d_unresolved);
+
+    assert(datatypes.size() == types.size());
+
+    for (unsigned i = 0; i < datatypes.size(); ++i) {
+      DatatypeType t = types[i];
+      const Datatype& dt = t.getDatatype();
+      const std::string& name = dt.getName();
+      Debug("parser-idt") << "define " << name << " as " << t << std::endl;
+      if (isDeclared(name, SYM_SORT)) {
+        throw ParserException(name + " already declared");
+      }
+      if (t.isParametric()) {
+        std::vector<Type> paramTypes = t.getParamTypes();
+        defineType(name, paramTypes, t);
+      } else {
+        defineType(name, t);
+      }
+      for (Datatype::const_iterator j = dt.begin(), j_end = dt.end();
+           j != j_end; ++j) {
+        const DatatypeConstructor& ctor = *j;
+        expr::ExprPrintTypes::Scope pts(Debug("parser-idt"), true);
+        Expr constructor = ctor.getConstructor();
+        Debug("parser-idt") << "+ define " << constructor << std::endl;
+        string constructorName = ctor.getName();
+        if (isDeclared(constructorName, SYM_VARIABLE)) {
+          throw ParserException(constructorName + " already declared");
+        }
+        defineVar(constructorName, constructor);
+        Expr tester = ctor.getTester();
+        Debug("parser-idt") << "+ define " << tester << std::endl;
+        string testerName = ctor.getTesterName();
+        if (isDeclared(testerName, SYM_VARIABLE)) {
+          throw ParserException(testerName + " already declared");
+        }
+        defineVar(testerName, tester);
+        for (DatatypeConstructor::const_iterator k = ctor.begin(),
+                                                 k_end = ctor.end();
+             k != k_end; ++k) {
+          Expr selector = (*k).getSelector();
+          Debug("parser-idt") << "+++ define " << selector << std::endl;
+          string selectorName = (*k).getName();
+          if (isDeclared(selectorName, SYM_VARIABLE)) {
+            throw ParserException(selectorName + " already declared");
+          }
+          defineVar(selectorName, selector);
+        }
+      }
+    }
+
+    // These are no longer used, and the ExprManager would have
+    // complained of a bad substitution if anything is left unresolved.
+    // Clear out the set.
+    d_unresolved.clear();
+
+    // throw exception if any datatype is not well-founded
+    for (unsigned i = 0; i < datatypes.size(); ++i) {
+      const Datatype& dt = types[i].getDatatype();
+      if (!dt.isCodatatype() && !dt.isWellFounded()) {
+        throw ParserException(dt.getName() + " is not well-founded");
+      }
+    }
+
+    return types;
+  } catch (IllegalArgumentException& ie) {
+    throw ParserException(ie.getMessage());
+  }
+}
+
+bool Parser::isDeclared(const std::string& name, SymbolType type) {
+  switch (type) {
+    case SYM_VARIABLE:
+      return d_reservedSymbols.find(name) != d_reservedSymbols.end() ||
+             d_symtab->isBound(name);
+    case SYM_SORT:
+      return d_symtab->isBoundType(name);
+  }
+  assert(false);  // Unhandled(type);
+  return false;
+}
+
+void Parser::reserveSymbolAtAssertionLevel(const std::string& varName) {
+  checkDeclaration(varName, CHECK_UNDECLARED, SYM_VARIABLE);
+  d_reservedSymbols.insert(varName);
+}
+
+void Parser::checkDeclaration(const std::string& varName,
+                              DeclarationCheck check, SymbolType type,
+                              std::string notes) throw(ParserException) {
+  if (!d_checksEnabled) {
+    return;
+  }
+
+  switch (check) {
+    case CHECK_DECLARED:
+      if (!isDeclared(varName, type)) {
+        parseError("Symbol '" + varName + "' not declared as a " +
+                   (type == SYM_VARIABLE ? "variable" : "type") +
+                   (notes.size() == 0 ? notes : "\n" + notes));
+      }
+      break;
+
+    case CHECK_UNDECLARED:
+      if (isDeclared(varName, type)) {
+        parseError("Symbol '" + varName + "' previously declared as a " +
+                   (type == SYM_VARIABLE ? "variable" : "type") +
+                   (notes.size() == 0 ? notes : "\n" + notes));
+      }
+      break;
+
+    case CHECK_NONE:
+      break;
+
+    default:
+      assert(false);  // Unhandled(check);
+  }
+}
+
+void Parser::checkFunctionLike(const std::string& name) throw(ParserException) {
+  if (d_checksEnabled && !isFunctionLike(name)) {
+    parseError("Expecting function-like symbol, found '" + name + "'");
+  }
+}
+
+void Parser::checkArity(Kind kind, unsigned numArgs) throw(ParserException) {
+  if (!d_checksEnabled) {
+    return;
+  }
+
+  unsigned min = d_exprManager->minArity(kind);
+  unsigned max = d_exprManager->maxArity(kind);
+
+  if (numArgs < min || numArgs > max) {
+    stringstream ss;
+    ss << "Expecting ";
+    if (numArgs < min) {
+      ss << "at least " << min << " ";
+    } else {
+      ss << "at most " << max << " ";
+    }
+    ss << "arguments for operator '" << kind << "', ";
+    ss << "found " << numArgs;
+    parseError(ss.str());
+  }
+}
+
+void Parser::checkOperator(Kind kind, unsigned numArgs) throw(ParserException) {
+  if (d_strictMode && d_logicOperators.find(kind) == d_logicOperators.end()) {
+    parseError("Operator is not defined in the current logic: " +
+               kindToString(kind));
+  }
+  checkArity(kind, numArgs);
+}
+
+void Parser::addOperator(Kind kind) { d_logicOperators.insert(kind); }
+
+void Parser::preemptCommand(Command* cmd) { d_commandQueue.push_back(cmd); }
+
+Command* Parser::nextCommand() throw(ParserException,
+                                     UnsafeInterruptException) {
+  Debug("parser") << "nextCommand()" << std::endl;
+  Command* cmd = NULL;
+  if (!d_commandQueue.empty()) {
+    cmd = d_commandQueue.front();
+    d_commandQueue.pop_front();
+    setDone(cmd == NULL);
+  } else {
+    try {
+      cmd = d_input->parseCommand();
+      d_commandQueue.push_back(cmd);
+      cmd = d_commandQueue.front();
+      d_commandQueue.pop_front();
+      setDone(cmd == NULL);
+    } catch (ParserException& e) {
+      setDone();
+      throw;
+    } catch (exception& e) {
+      setDone();
+      parseError(e.what());
+    }
+  }
+  Debug("parser") << "nextCommand() => " << cmd << std::endl;
+  if (cmd != NULL && dynamic_cast<SetOptionCommand*>(cmd) == NULL &&
+      dynamic_cast<QuitCommand*>(cmd) == NULL) {
+    // don't count set-option commands as to not get stuck in an infinite
+    // loop of resourcing out
+    const Options& options = d_exprManager->getOptions();
+    d_resourceManager->spendResource(options.getParseStep());
+  }
+  return cmd;
+}
+
+Expr Parser::nextExpression() throw(ParserException, UnsafeInterruptException) {
+  Debug("parser") << "nextExpression()" << std::endl;
+  const Options& options = d_exprManager->getOptions();
+  d_resourceManager->spendResource(options.getParseStep());
+  Expr result;
+  if (!done()) {
+    try {
+      result = d_input->parseExpr();
+      setDone(result.isNull());
+    } catch (ParserException& e) {
+      setDone();
+      throw;
+    } catch (exception& e) {
+      setDone();
+      parseError(e.what());
+    }
+  }
+  Debug("parser") << "nextExpression() => " << result << std::endl;
+  return result;
+}
+
+void Parser::attributeNotSupported(const std::string& attr) {
+  if (d_attributesWarnedAbout.find(attr) == d_attributesWarnedAbout.end()) {
+    stringstream ss;
+    ss << "warning: Attribute '" << attr
+       << "' not supported (ignoring this and all following uses)";
+    d_input->warning(ss.str());
+    d_attributesWarnedAbout.insert(attr);
+  }
+}
+
+} /* CVC4::parser namespace */
+} /* CVC4 namespace */
diff --git a/src/parser/parser.h b/src/parser/parser.h
new file mode 100644
index 0000000..b310456
--- /dev/null
+++ b/src/parser/parser.h
@@ -0,0 +1,671 @@
+/*********************                                                        */
+/*! \file parser.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Christopher L. Conway, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A collection of state for use by parser implementations.
+ **
+ ** A collection of state for use by parser implementations.
+ **/
+
+#include "cvc4parser_public.h"
+
+#ifndef __CVC4__PARSER__PARSER_STATE_H
+#define __CVC4__PARSER__PARSER_STATE_H
+
+#include <string>
+#include <set>
+#include <list>
+#include <cassert>
+
+#include "parser/input.h"
+#include "parser/parser_exception.h"
+#include "expr/expr.h"
+#include "expr/symbol_table.h"
+#include "expr/kind.h"
+#include "expr/expr_stream.h"
+#include "util/unsafe_interrupt_exception.h"
+
+namespace CVC4 {
+
+// Forward declarations
+class BooleanType;
+class ExprManager;
+class Command;
+class FunctionType;
+class Type;
+class ResourceManager;
+
+//for sygus gterm two-pass parsing
+class CVC4_PUBLIC SygusGTerm {
+public:
+  enum{
+    gterm_op,
+    gterm_let,
+    gterm_constant,
+    gterm_variable,
+    gterm_input_variable,
+    gterm_local_variable,
+    gterm_nested_sort,
+    gterm_unresolved,
+    gterm_ignore,
+  };
+  Type d_type;
+  Expr d_expr;
+  std::vector< Expr > d_let_vars;
+  unsigned d_gterm_type;
+  std::string d_name;
+  std::vector< SygusGTerm > d_children;
+  
+  unsigned getNumChildren() { return d_children.size(); }
+  void addChild(){
+    d_children.push_back( SygusGTerm() );
+  }
+};
+
+namespace parser {
+
+class Input;
+
+/** Types of check for the symols */
+enum DeclarationCheck {
+  /** Enforce that the symbol has been declared */
+  CHECK_DECLARED,
+  /** Enforce that the symbol has not been declared */
+  CHECK_UNDECLARED,
+  /** Don't check anything */
+  CHECK_NONE
+};/* enum DeclarationCheck */
+
+/**
+ * Returns a string representation of the given object (for
+ * debugging).
+ */
+inline std::ostream& operator<<(std::ostream& out, DeclarationCheck check) CVC4_PUBLIC;
+inline std::ostream& operator<<(std::ostream& out, DeclarationCheck check) {
+  switch(check) {
+  case CHECK_NONE:
+    return out << "CHECK_NONE";
+  case CHECK_DECLARED:
+    return out << "CHECK_DECLARED";
+  case CHECK_UNDECLARED:
+    return out << "CHECK_UNDECLARED";
+  default:
+    return out << "DeclarationCheck!UNKNOWN";
+  }
+}
+
+/**
+ * Types of symbols. Used to define namespaces.
+ */
+enum SymbolType {
+  /** Variables */
+  SYM_VARIABLE,
+  /** Sorts */
+  SYM_SORT
+};/* enum SymbolType */
+
+/**
+ * Returns a string representation of the given object (for
+ * debugging).
+ */
+inline std::ostream& operator<<(std::ostream& out, SymbolType type) CVC4_PUBLIC;
+inline std::ostream& operator<<(std::ostream& out, SymbolType type) {
+  switch(type) {
+  case SYM_VARIABLE:
+    return out << "SYM_VARIABLE";
+  case SYM_SORT:
+    return out << "SYM_SORT";
+  default:
+    return out << "SymbolType!UNKNOWN";
+  }
+}
+
+/**
+ * This class encapsulates all of the state of a parser, including the
+ * name of the file, line number and column information, and in-scope
+ * declarations.
+ */
+class CVC4_PUBLIC Parser {
+  friend class ParserBuilder;
+
+  /** The expression manager */
+  ExprManager *d_exprManager;
+  /** The resource manager associated with this expr manager */
+  ResourceManager *d_resourceManager;
+
+  /** The input that we're parsing. */
+  Input *d_input;
+
+  /**
+   * The declaration scope that is "owned" by this parser.  May or
+   * may not be the current declaration scope in use.
+   */
+  SymbolTable d_symtabAllocated;
+
+  /**
+   * This current symbol table used by this parser.  Initially points
+   * to d_symtabAllocated, but can be changed (making this parser
+   * delegate its definitions and lookups to another parser).
+   * See useDeclarationsFrom().
+   */
+  SymbolTable* d_symtab;
+
+  /**
+   * The level of the assertions in the declaration scope.  Things declared
+   * after this level are bindings from e.g. a let, a quantifier, or a
+   * lambda.
+   */
+  size_t d_assertionLevel;
+
+  /**
+   * Whether we're in global declarations mode (all definitions and
+   * declarations are global).
+   */
+  bool d_globalDeclarations;
+
+  /**
+   * Maintains a list of reserved symbols at the assertion level that might
+   * not occur in our symbol table.  This is necessary to e.g. support the
+   * proper behavior of the :named annotation in SMT-LIBv2 when used under
+   * a let or a quantifier, since inside a let/quant body the declaration
+   * scope is that of the let/quant body, but the defined name should be
+   * reserved at the assertion level.
+   */
+  std::set<std::string> d_reservedSymbols;
+
+  /** How many anonymous functions we've created. */
+  size_t d_anonymousFunctionCount;
+
+  /** Are we done */
+  bool d_done;
+
+  /** Are semantic checks enabled during parsing? */
+  bool d_checksEnabled;
+
+  /** Are we parsing in strict mode? */
+  bool d_strictMode;
+
+  /** Are we only parsing? */
+  bool d_parseOnly;
+
+  /**
+   * Can we include files?  (Set to false for security purposes in
+   * e.g. the online version.)
+   */
+  bool d_canIncludeFile;
+
+  /**
+   * Whether the logic has been forced with --force-logic.
+   */
+  bool d_logicIsForced;
+
+  /**
+   * The logic, if d_logicIsForced == true.
+   */
+  std::string d_forcedLogic;
+
+  /** The set of operators available in the current logic. */
+  std::set<Kind> d_logicOperators;
+
+  /** The set of attributes already warned about. */
+  std::set<std::string> d_attributesWarnedAbout;
+
+  /**
+   * The current set of unresolved types.  We can get by with this NOT
+   * being on the scope, because we can only have one DATATYPE
+   * definition going on at one time.  This is a bit hackish; we
+   * depend on mkMutualDatatypeTypes() to check everything and clear
+   * this out.
+   */
+  std::set<Type> d_unresolved;
+
+  /**
+   * "Preemption commands": extra commands implied by subterms that
+   * should be issued before the currently-being-parsed command is
+   * issued.  Used to support SMT-LIBv2 ":named" attribute on terms.
+   *
+   * Owns the memory of the Commands in the queue.
+   */
+  std::list<Command*> d_commandQueue;
+
+  /** Lookup a symbol in the given namespace. */
+  Expr getSymbol(const std::string& var_name, SymbolType type);
+
+protected:
+  /**
+   * Create a parser state.
+   *
+   * @attention The parser takes "ownership" of the given
+   * input and will delete it on destruction.
+   *
+   * @param exprManager the expression manager to use when creating expressions
+   * @param input the parser input
+   * @param strictMode whether to incorporate strict(er) compliance checks
+   * @param parseOnly whether we are parsing only (and therefore certain checks
+   * need not be performed, like those about unimplemented features, @see
+   * unimplementedFeature())
+   */
+  Parser(ExprManager* exprManager, Input* input, bool strictMode = false, bool parseOnly = false);
+
+public:
+
+  virtual ~Parser();
+
+  /** Get the associated <code>ExprManager</code>. */
+  inline ExprManager* getExprManager() const {
+    return d_exprManager;
+  }
+
+  /** Get the associated input. */
+  inline Input* getInput() const {
+    return d_input;
+  }
+
+  /** Deletes and replaces the current parser input. */
+  void setInput(Input* input)  {
+    delete d_input;
+    d_input = input;
+    d_input->setParser(*this);
+    d_done = false;
+  }
+
+  /**
+   * Check if we are done -- either the end of input has been reached, or some
+   * error has been encountered.
+   * @return true if parser is done
+   */
+  inline bool done() const {
+    return d_done;
+  }
+
+  /** Sets the done flag */
+  inline void setDone(bool done = true) {
+    d_done = done;
+  }
+
+  /** Enable semantic checks during parsing. */
+  void enableChecks() { d_checksEnabled = true; }
+
+  /** Disable semantic checks during parsing. Disabling checks may lead to crashes on bad inputs. */
+  void disableChecks() { d_checksEnabled = false; }
+
+  /** Enable strict parsing, according to the language standards. */
+  void enableStrictMode() { d_strictMode = true; }
+
+  /** Disable strict parsing. Allows certain syntactic infelicities to
+      pass without comment. */
+  void disableStrictMode() { d_strictMode = false; }
+
+  bool strictModeEnabled() { return d_strictMode; }
+
+  void allowIncludeFile() { d_canIncludeFile = true; }
+  void disallowIncludeFile() { d_canIncludeFile = false; }
+  bool canIncludeFile() const { return d_canIncludeFile; }
+
+  /** Expose the functionality from SMT/SMT2 parsers, while making
+      implementation optional by returning false by default. */
+  virtual bool logicIsSet() { return false; }
+
+  void forceLogic(const std::string& logic) { assert(!d_logicIsForced); d_logicIsForced = true; d_forcedLogic = logic; }
+  const std::string& getForcedLogic() const { return d_forcedLogic; }
+  bool logicIsForced() const { return d_logicIsForced; }
+
+  /**
+   * Returns a variable, given a name.
+   *
+   * @param name the name of the variable
+   * @return the variable expression
+   */
+  Expr getVariable(const std::string& name);
+
+  /**
+   * Returns a function, given a name.
+   *
+   * @param name the name of the variable
+   * @return the variable expression
+   */
+  Expr getFunction(const std::string& name);
+
+  /**
+   * Returns a sort, given a name.
+   * @param sort_name the name to look up
+   */
+  Type getSort(const std::string& sort_name);
+
+  /**
+   * Returns a (parameterized) sort, given a name and args.
+   */
+  Type getSort(const std::string& sort_name,
+               const std::vector<Type>& params);
+
+  /**
+   * Returns arity of a (parameterized) sort, given a name and args.
+   */
+  size_t getArity(const std::string& sort_name);
+
+  /**
+   * Checks if a symbol has been declared.
+   * @param name the symbol name
+   * @param type the symbol type
+   * @return true iff the symbol has been declared with the given type
+   */
+  bool isDeclared(const std::string& name, SymbolType type = SYM_VARIABLE);
+
+  /**
+   * Checks if the declaration policy we want to enforce holds
+   * for the given symbol.
+   * @param name the symbol to check
+   * @param check the kind of check to perform
+   * @param type the type of the symbol
+   * @param notes notes to add to a parse error (if one is generated)
+   * @throws ParserException if checks are enabled and the check fails
+   */
+  void checkDeclaration(const std::string& name, DeclarationCheck check,
+                        SymbolType type = SYM_VARIABLE,
+                        std::string notes = "") throw(ParserException);
+
+  /**
+   * Reserve a symbol at the assertion level.
+   */
+  void reserveSymbolAtAssertionLevel(const std::string& name);
+
+  /**
+   * Checks whether the given name is bound to a function.
+   * @param name the name to check
+   * @throws ParserException if checks are enabled and name is not
+   * bound to a function
+   */
+  void checkFunctionLike(const std::string& name) throw(ParserException);
+
+  /**
+   * Check that <code>kind</code> can accept <code>numArgs</code> arguments.
+   * @param kind the built-in operator to check
+   * @param numArgs the number of actual arguments
+   * @throws ParserException if checks are enabled and the operator
+   * <code>kind</code> cannot be applied to <code>numArgs</code>
+   * arguments.
+   */
+  void checkArity(Kind kind, unsigned numArgs) throw(ParserException);
+
+  /**
+   * Check that <code>kind</code> is a legal operator in the current
+   * logic and that it can accept <code>numArgs</code> arguments.
+   *
+   * @param kind the built-in operator to check
+   * @param numArgs the number of actual arguments
+   * @throws ParserException if the parser mode is strict and the
+   * operator <code>kind</code> has not been enabled
+   */
+  void checkOperator(Kind kind, unsigned numArgs) throw(ParserException);
+
+  /**
+   * Returns the type for the variable with the given name.
+   *
+   * @param var_name the symbol to lookup
+   * @param type the (namespace) type of the symbol
+   */
+  Type getType(const std::string& var_name, SymbolType type = SYM_VARIABLE);
+
+  /** Create a new CVC4 variable expression of the given type. */
+  Expr mkVar(const std::string& name, const Type& type,
+             uint32_t flags = ExprManager::VAR_FLAG_NONE);
+
+  /**
+   * Create a set of new CVC4 variable expressions of the given type.
+   */
+  std::vector<Expr>
+    mkVars(const std::vector<std::string> names, const Type& type,
+           uint32_t flags = ExprManager::VAR_FLAG_NONE);
+
+  /** Create a new CVC4 bound variable expression of the given type. */
+  Expr mkBoundVar(const std::string& name, const Type& type);
+
+  /**
+   * Create a set of new CVC4 bound variable expressions of the given type.
+   */
+  std::vector<Expr> mkBoundVars(const std::vector<std::string> names, const Type& type);
+
+  /** Create a new CVC4 function expression of the given type. */
+  Expr mkFunction(const std::string& name, const Type& type,
+                  uint32_t flags = ExprManager::VAR_FLAG_NONE);
+
+  /**
+   * Create a new CVC4 function expression of the given type,
+   * appending a unique index to its name.  (That's the ONLY
+   * difference between mkAnonymousFunction() and mkFunction()).
+   */
+  Expr mkAnonymousFunction(const std::string& prefix, const Type& type,
+                           uint32_t flags = ExprManager::VAR_FLAG_NONE);
+
+  /** Create a new variable definition (e.g., from a let binding). */
+  void defineVar(const std::string& name, const Expr& val,
+                 bool levelZero = false);
+
+  /** Create a new function definition (e.g., from a define-fun). */
+  void defineFunction(const std::string& name, const Expr& val,
+                      bool levelZero = false);
+
+  /** Create a new type definition. */
+  void defineType(const std::string& name, const Type& type);
+
+  /** Create a new (parameterized) type definition. */
+  void defineType(const std::string& name,
+                  const std::vector<Type>& params, const Type& type);
+
+  /** Create a new type definition (e.g., from an SMT-LIBv2 define-sort). */
+  void defineParameterizedType(const std::string& name,
+                               const std::vector<Type>& params,
+                               const Type& type);
+
+  /**
+   * Creates a new sort with the given name.
+   */
+  SortType mkSort(const std::string& name,
+                  uint32_t flags = ExprManager::SORT_FLAG_NONE);
+
+  /**
+   * Creates a new sort constructor with the given name and arity.
+   */
+  SortConstructorType mkSortConstructor(const std::string& name, size_t arity);
+
+  /**
+   * Creates a new "unresolved type," used only during parsing.
+   */
+  SortType mkUnresolvedType(const std::string& name);
+
+  /**
+   * Creates a new unresolved (parameterized) type constructor of the given
+   * arity.
+   */
+  SortConstructorType mkUnresolvedTypeConstructor(const std::string& name, 
+                                                  size_t arity);
+  /**
+   * Creates a new unresolved (parameterized) type constructor given the type
+   * parameters.
+   */
+  SortConstructorType mkUnresolvedTypeConstructor(const std::string& name, 
+                                                  const std::vector<Type>& params);
+
+  /**
+   * Returns true IFF name is an unresolved type.
+   */
+  bool isUnresolvedType(const std::string& name);
+
+  /**
+   * Create sorts of mutually-recursive datatypes.
+   */
+  std::vector<DatatypeType>
+  mkMutualDatatypeTypes(std::vector<Datatype>& datatypes);
+
+  /**
+   * Add an operator to the current legal set.
+   *
+   * @param kind the built-in operator to add
+   */
+  void addOperator(Kind kind);
+
+  /**
+   * Preempt the next returned command with other ones; used to
+   * support the :named attribute in SMT-LIBv2, which implicitly
+   * inserts a new command before the current one. Also used in TPTP
+   * because function and predicate symbols are implicitly declared.
+   */
+  void preemptCommand(Command* cmd);
+
+  /** Is the symbol bound to a boolean variable? */
+  bool isBoolean(const std::string& name);
+
+  /** Is the symbol bound to a function (or function-like thing)? */
+  bool isFunctionLike(const std::string& name);
+
+  /** Is the symbol bound to a defined function? */
+  bool isDefinedFunction(const std::string& name);
+
+  /** Is the Expr a defined function? */
+  bool isDefinedFunction(Expr func);
+
+  /** Is the symbol bound to a predicate? */
+  bool isPredicate(const std::string& name);
+
+  /** Parse and return the next command. */
+  Command* nextCommand() throw(ParserException, UnsafeInterruptException);
+
+  /** Parse and return the next expression. */
+  Expr nextExpression() throw(ParserException, UnsafeInterruptException);
+
+  /** Issue a warning to the user. */
+  inline void warning(const std::string& msg) {
+    d_input->warning(msg);
+  }
+
+  /** Issue a warning to the user, but only once per attribute. */
+  void attributeNotSupported(const std::string& attr);
+
+  /** Raise a parse error with the given message. */
+  inline void parseError(const std::string& msg) throw(ParserException) {
+    d_input->parseError(msg);
+  }
+
+  /** Unexpectedly encountered an EOF */
+  inline void unexpectedEOF(const std::string& msg) throw(ParserException) {
+    d_input->parseError(msg, true);
+  }
+
+  /**
+   * If we are parsing only, don't raise an exception; if we are not,
+   * raise a parse error with the given message.  There is no actual
+   * parse error, everything is as expected, but we cannot create the
+   * Expr, Type, or other requested thing yet due to internal
+   * limitations.  Even though it's not a parse error, we throw a
+   * parse error so that the input line and column information is
+   * available.
+   *
+   * Think quantifiers.  We don't have a TheoryQuantifiers yet, so we
+   * have no kind::FORALL or kind::EXISTS.  But we might want to
+   * support parsing quantifiers (just not doing anything with them).
+   * So this mechanism gives you a way to do it with --parse-only.
+   */
+  inline void unimplementedFeature(const std::string& msg) throw(ParserException) {
+    if(!d_parseOnly) {
+      parseError("Unimplemented feature: " + msg);
+    }
+  }
+
+  /**
+   * Gets the current declaration level.
+   */
+  inline size_t scopeLevel() const { return d_symtab->getLevel(); }
+
+  inline void pushScope(bool bindingLevel = false) {
+    d_symtab->pushScope();
+    if(!bindingLevel) {
+      d_assertionLevel = scopeLevel();
+    }
+  }
+
+  inline void popScope() {
+    d_symtab->popScope();
+    if(scopeLevel() < d_assertionLevel) {
+      d_assertionLevel = scopeLevel();
+      d_reservedSymbols.clear();
+    }
+  }
+
+  virtual void reset() {
+    d_symtab->reset();
+  }
+
+  void setGlobalDeclarations(bool flag) {
+    d_globalDeclarations = flag;
+  }
+
+  /**
+   * Set the current symbol table used by this parser.
+   * From now on, this parser will perform its definitions and
+   * lookups in the declaration scope of the "parser" argument
+   * (but doesn't re-delegate if the other parser's declaration scope
+   * changes later).  A NULL argument restores this parser's
+   * "primordial" declaration scope assigned at its creation.  Calling
+   * p->useDeclarationsFrom(p) is a no-op.
+   *
+   * This feature is useful when e.g. reading out-of-band expression data:
+   * 1. Parsing --replay log files produced with --replay-log.
+   * 2. Perhaps a multi-query benchmark file is being single-stepped
+   *    with intervening queries on stdin that must reference the same
+   *    declaration scope(s).
+   *
+   * However, the feature must be used carefully.  Pushes and pops
+   * should be performed with the correct current declaration scope.
+   * Care must be taken to match up declaration scopes, of course;
+   * If variables in the deferred-to parser go out of scope, the
+   * secondary parser will give errors that they are undeclared.
+   * Also, an outer-scope variable shadowed by an inner-scope one of
+   * the same name may be temporarily inaccessible.
+   *
+   * In short, caveat emptor.
+   */
+  inline void useDeclarationsFrom(Parser* parser) {
+    if(parser == NULL) {
+      d_symtab = &d_symtabAllocated;
+    } else {
+      d_symtab = parser->d_symtab;
+    }
+  }
+
+  inline void useDeclarationsFrom(SymbolTable* symtab) {
+    d_symtab = symtab;
+  }
+
+  inline SymbolTable* getSymbolTable() const {
+    return d_symtab;
+  }
+
+  /**
+   * An expression stream interface for a parser.  This stream simply
+   * pulls expressions from the given Parser object.
+   *
+   * Here, the ExprStream base class allows a Parser (from the parser
+   * library) and core components of CVC4 (in the core library) to
+   * communicate without polluting the public interface or having them
+   * reach into private (undocumented) interfaces.
+   */
+  class ExprStream : public CVC4::ExprStream {
+    Parser* d_parser;
+  public:
+    ExprStream(Parser* parser) : d_parser(parser) {}
+    ~ExprStream() { delete d_parser; }
+    Expr nextExpr() { return d_parser->nextExpression(); }
+  };/* class Parser::ExprStream */
+};/* class Parser */
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PARSER__PARSER_STATE_H */
diff --git a/src/parser/parser.i b/src/parser/parser.i
new file mode 100644
index 0000000..37aefb9
--- /dev/null
+++ b/src/parser/parser.i
@@ -0,0 +1,32 @@
+%{
+#include "parser/parser.h"
+%}
+
+namespace CVC4 {
+  namespace parser {
+    enum DeclarationCheck;
+    enum SymbolType;
+    %ignore operator<<(std::ostream&, DeclarationCheck);
+    %ignore operator<<(std::ostream&, SymbolType);
+
+    class ParserExprStream : public CVC4::ExprStream {
+      Parser* d_parser;
+    public:
+      ParserExprStream(Parser* parser) : d_parser(parser) {}
+      ~ParserExprStream() { delete d_parser; }
+      Expr nextExpr() { return d_parser->nextExpression(); }
+    };/* class Parser::ExprStream */
+  }/* namespace CVC4::parser */
+}/* namespace CVC4 */
+
+%ignore CVC4::parser::Parser::ExprStream;
+
+%include "parser/parser.h"
+
+%{
+namespace CVC4 {
+  namespace parser {
+    typedef CVC4::parser::Parser::ExprStream ParserExprStream;
+  }
+}
+%}
diff --git a/src/parser/parser_builder.cpp b/src/parser/parser_builder.cpp
new file mode 100644
index 0000000..8580d56
--- /dev/null
+++ b/src/parser/parser_builder.cpp
@@ -0,0 +1,214 @@
+/*********************                                                        */
+/*! \file parser_builder.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A builder for parsers.
+ **
+ ** A builder for parsers.
+ **/
+
+// This must be included first.
+#include "parser/antlr_input.h"
+
+#include "parser/parser_builder.h"
+
+#include <string>
+
+#include "expr/expr_manager.h"
+#include "parser/input.h"
+#include "parser/parser.h"
+#include "options/options.h"
+#include "smt1/smt1.h"
+#include "smt2/smt2.h"
+#include "tptp/tptp.h"
+
+namespace CVC4 {
+namespace parser {
+
+ParserBuilder::ParserBuilder(ExprManager* exprManager,
+                             const std::string& filename) :
+  d_filename(filename),
+  d_exprManager(exprManager) {
+  init(exprManager, filename);
+}
+
+ParserBuilder::ParserBuilder(ExprManager* exprManager,
+                             const std::string& filename,
+                             const Options& options) :
+  d_filename(filename),
+  d_exprManager(exprManager) {
+  init(exprManager, filename);
+  withOptions(options);
+}
+
+void ParserBuilder::init(ExprManager* exprManager,
+                         const std::string& filename) {
+  d_inputType = FILE_INPUT;
+  d_lang = language::input::LANG_AUTO;
+  d_filename = filename;
+  d_streamInput = NULL;
+  d_exprManager = exprManager;
+  d_checksEnabled = true;
+  d_strictMode = false;
+  d_canIncludeFile = true;
+  d_mmap = false;
+  d_parseOnly = false;
+  d_logicIsForced = false;
+  d_forcedLogic = "";
+}
+
+Parser* ParserBuilder::build()
+  throw (InputStreamException) {
+  Input* input = NULL;
+  switch( d_inputType ) {
+  case FILE_INPUT:
+    input = Input::newFileInput(d_lang, d_filename, d_mmap);
+    break;
+  case LINE_BUFFERED_STREAM_INPUT:
+    assert( d_streamInput != NULL );
+    input = Input::newStreamInput(d_lang, *d_streamInput, d_filename, true);
+    break;
+  case STREAM_INPUT:
+    assert( d_streamInput != NULL );
+    input = Input::newStreamInput(d_lang, *d_streamInput, d_filename);
+    break;
+  case STRING_INPUT:
+    input = Input::newStringInput(d_lang, d_stringInput, d_filename);
+    break;
+  }
+
+  assert(input != NULL);
+
+  Parser* parser = NULL;
+  switch(d_lang) {
+  case language::input::LANG_SMTLIB_V1:
+    parser = new Smt1(d_exprManager, input, d_strictMode, d_parseOnly);
+    break;
+  case language::input::LANG_SMTLIB_V2_0:
+  case language::input::LANG_SMTLIB_V2_5:
+    parser = new Smt2(d_exprManager, input, d_strictMode, d_parseOnly);
+    break;
+  case language::input::LANG_SYGUS:
+    parser = new Smt2(d_exprManager, input, d_strictMode, d_parseOnly);
+    break;
+  case language::input::LANG_TPTP:
+    parser = new Tptp(d_exprManager, input, d_strictMode, d_parseOnly);
+    break;
+  default:
+    parser = new Parser(d_exprManager, input, d_strictMode, d_parseOnly);
+    break;
+  }
+
+  if( d_checksEnabled ) {
+    parser->enableChecks();
+  } else {
+    parser->disableChecks();
+  }
+
+  if( d_canIncludeFile ) {
+    parser->allowIncludeFile();
+  } else {
+    parser->disallowIncludeFile();
+  }
+
+  if( d_logicIsForced ) {
+    parser->forceLogic(d_forcedLogic);
+  }
+
+  return parser;
+}
+
+ParserBuilder& ParserBuilder::withChecks(bool flag) {
+  d_checksEnabled = flag;
+  return *this;
+}
+
+ParserBuilder& ParserBuilder::withExprManager(ExprManager* exprManager) {
+  d_exprManager = exprManager;
+  return *this;
+}
+
+ParserBuilder& ParserBuilder::withFileInput() {
+  d_inputType = FILE_INPUT;
+  return *this;
+}
+
+ParserBuilder& ParserBuilder::withFilename(const std::string& filename) {
+  d_filename = filename;
+  return *this;
+}
+
+ParserBuilder& ParserBuilder::withInputLanguage(InputLanguage lang) {
+  d_lang = lang;
+  return *this;
+}
+
+ParserBuilder& ParserBuilder::withMmap(bool flag) {
+  d_mmap = flag;
+  return *this;
+}
+
+ParserBuilder& ParserBuilder::withParseOnly(bool flag) {
+  d_parseOnly = flag;
+  return *this;
+}
+
+ParserBuilder& ParserBuilder::withOptions(const Options& options) {
+  ParserBuilder& retval = *this;
+  retval =
+      retval.withInputLanguage(options.getInputLanguage())
+      .withMmap(options.getMemoryMap())
+      .withChecks(options.getSemanticChecks())
+      .withStrictMode(options.getStrictParsing())
+      .withParseOnly(options.getParseOnly())
+      .withIncludeFile(options.getFilesystemAccess());
+  if(options.wasSetByUserForceLogicString()) {
+    LogicInfo tmp(options.getForceLogicString());
+    retval = retval.withForcedLogic(tmp.getLogicString());
+  }
+  return retval;
+}
+
+ParserBuilder& ParserBuilder::withStrictMode(bool flag) {
+  d_strictMode = flag;
+  return *this;
+}
+
+ParserBuilder& ParserBuilder::withIncludeFile(bool flag) {
+  d_canIncludeFile = flag;
+  return *this;
+}
+
+ParserBuilder& ParserBuilder::withForcedLogic(const std::string& logic) {
+  d_logicIsForced = true;
+  d_forcedLogic = logic;
+  return *this;
+}
+
+ParserBuilder& ParserBuilder::withStreamInput(std::istream& input) {
+  d_inputType = STREAM_INPUT;
+  d_streamInput = &input;
+  return *this;
+}
+
+ParserBuilder& ParserBuilder::withLineBufferedStreamInput(std::istream& input) {
+  d_inputType = LINE_BUFFERED_STREAM_INPUT;
+  d_streamInput = &input;
+  return *this;
+}
+
+ParserBuilder& ParserBuilder::withStringInput(const std::string& input) {
+  d_inputType = STRING_INPUT;
+  d_stringInput = input;
+  return *this;
+}
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
diff --git a/src/parser/parser_builder.h b/src/parser/parser_builder.h
new file mode 100644
index 0000000..68dd684
--- /dev/null
+++ b/src/parser/parser_builder.h
@@ -0,0 +1,180 @@
+/*********************                                                        */
+/*! \file parser_builder.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A builder for parsers.
+ **
+ ** A builder for parsers.
+ **/
+
+#include "cvc4parser_public.h"
+
+#ifndef __CVC4__PARSER__PARSER_BUILDER_H
+#define __CVC4__PARSER__PARSER_BUILDER_H
+
+#include <string>
+
+#include "options/language.h"
+#include "parser/input.h"
+
+namespace CVC4 {
+
+class ExprManager;
+class Options;
+
+namespace parser {
+
+class Parser;
+
+/**
+ * A builder for input language parsers. <code>build()</code> can be
+ * called any number of times on an instance and will generate a fresh
+ * parser each time.
+ */
+class CVC4_PUBLIC ParserBuilder {
+  enum InputType {
+    FILE_INPUT,
+    LINE_BUFFERED_STREAM_INPUT,
+    STREAM_INPUT,
+    STRING_INPUT
+  };
+
+  /** The input type. */
+  InputType d_inputType;
+
+  /** The input language */
+  InputLanguage d_lang;
+
+  /** The file name (may not exist) */
+  std::string d_filename;
+
+  /** The string input, if any. */
+  std::string d_stringInput;
+
+  /** The stream input, if any. */
+  std::istream* d_streamInput;
+
+  /** The expression manager */
+  ExprManager* d_exprManager;
+
+  /** Should semantic checks be enabled during parsing? */
+  bool d_checksEnabled;
+
+  /** Should we parse in strict mode? */
+  bool d_strictMode;
+
+  /** Should we allow include-file commands? */
+  bool d_canIncludeFile;
+
+  /** Should we memory-map a file input? */
+  bool d_mmap;
+
+  /** Are we parsing only? */
+  bool d_parseOnly;
+
+  /** Is the logic forced by the user? */
+  bool d_logicIsForced;
+
+  /** The forced logic name */
+  std::string d_forcedLogic;
+
+  /** Initialize this parser builder */
+  void init(ExprManager* exprManager, const std::string& filename);
+
+public:
+
+  /** Create a parser builder using the given ExprManager and filename. */
+  ParserBuilder(ExprManager* exprManager, const std::string& filename);
+
+  ParserBuilder(ExprManager* exprManager, const std::string& filename,
+                const Options& options);
+
+  /** Build the parser, using the current settings. */
+  Parser *build() throw (InputStreamException);
+
+  /** Should semantic checks be enabled in the parser? (Default: yes) */
+  ParserBuilder& withChecks(bool flag = true);
+
+  /** Set the ExprManager to use with the parser. */
+  ParserBuilder& withExprManager(ExprManager* exprManager);
+
+  /** Set the parser to read a file for its input. (Default) */
+  ParserBuilder& withFileInput();
+
+  /**
+   * Set the filename for use by the parser. If file input is used,
+   * this file will be opened and read by the parser. Otherwise, the
+   * filename string (possibly a non-existent path) will only be used
+   * in error messages.
+   */
+  ParserBuilder& withFilename(const std::string& filename);
+
+  /**
+   * Set the input language to be used by the parser.
+   *
+   * (Default: LANG_AUTO)
+   */
+  ParserBuilder& withInputLanguage(InputLanguage lang);
+
+  /**
+   * Should the parser memory-map its input? This is only relevant if
+   * the parser will have a file input.
+   *
+   * (Default: no)
+   */
+  ParserBuilder& withMmap(bool flag = true);
+
+  /**
+   * Are we only parsing, or doing something with the resulting
+   * commands and expressions?  This setting affects whether the
+   * parser will raise certain errors about unimplemented features,
+   * even if there isn't a parsing error, because the result of the
+   * parse would otherwise be an incorrect parse tree and the error
+   * would go undetected.  This is specifically for circumstances
+   * where the parser is ahead of the functionality present elsewhere
+   * in CVC4 (such as quantifiers, subtypes, records, etc. in the CVC
+   * language parser).
+   */
+  ParserBuilder& withParseOnly(bool flag = true);
+
+  /** Derive settings from the given options. */
+  ParserBuilder& withOptions(const Options& options);
+
+  /**
+   * Should the parser use strict mode?
+   *
+   * (Default: no)
+   */
+  ParserBuilder& withStrictMode(bool flag = true);
+
+  /**
+   * Should the include-file commands be enabled?
+   *
+   * (Default: yes)
+   */
+  ParserBuilder& withIncludeFile(bool flag = true);
+
+  /** Set the parser to use the given stream for its input. */
+  ParserBuilder& withStreamInput(std::istream& input);
+
+  /** Set the parser to use the given stream for its input. */
+  ParserBuilder& withLineBufferedStreamInput(std::istream& input);
+
+  /** Set the parser to use the given string for its input. */
+  ParserBuilder& withStringInput(const std::string& input);
+
+  /** Set the parser to use the given logic string. */
+  ParserBuilder& withForcedLogic(const std::string& logic);
+};/* class ParserBuilder */
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PARSER__PARSER_BUILDER_H */
diff --git a/src/parser/parser_builder.i b/src/parser/parser_builder.i
new file mode 100644
index 0000000..6b77356
--- /dev/null
+++ b/src/parser/parser_builder.i
@@ -0,0 +1,5 @@
+%{
+#include "parser/parser_builder.h"
+%}
+
+%include "parser/parser_builder.h"
diff --git a/src/parser/parser_exception.h b/src/parser/parser_exception.h
new file mode 100644
index 0000000..d83aab2
--- /dev/null
+++ b/src/parser/parser_exception.h
@@ -0,0 +1,119 @@
+/*********************                                                        */
+/*! \file parser_exception.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Christopher L. Conway, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Exception class for parse errors.
+ **
+ ** Exception class for parse errors.
+ **/
+
+#include "cvc4parser_public.h"
+
+#ifndef __CVC4__PARSER__PARSER_EXCEPTION_H
+#define __CVC4__PARSER__PARSER_EXCEPTION_H
+
+#include <iostream>
+#include <string>
+#include <sstream>
+
+#include "base/exception.h"
+
+namespace CVC4 {
+namespace parser {
+
+class CVC4_PUBLIC ParserException : public Exception {
+public:
+  // Constructors
+  ParserException() throw() :
+    d_filename(),
+    d_line(0),
+    d_column(0) {
+  }
+
+  ParserException(const std::string& msg) throw() :
+    Exception(msg),
+    d_filename(),
+    d_line(0),
+    d_column(0) {
+  }
+
+  ParserException(const char* msg) throw() :
+    Exception(msg),
+    d_filename(),
+    d_line(0),
+    d_column(0) {
+  }
+
+  ParserException(const std::string& msg, const std::string& filename,
+                  unsigned long line, unsigned long column) throw() :
+    Exception(msg),
+    d_filename(filename),
+    d_line(line),
+    d_column(column) {
+  }
+
+  // Destructor
+  virtual ~ParserException() throw() {}
+
+  virtual void toStream(std::ostream& os) const throw() {
+    if( d_line > 0 ) {
+      os <<  "Parse Error: " << d_filename << ":" << d_line << "."
+         << d_column << ": " << d_msg;
+    } else {
+      os << "Parse Error: " << d_msg;
+    }
+  }
+
+  std::string getFilename() const throw() {
+    return d_filename;
+  }
+
+  int getLine() const throw() {
+    return d_line;
+  }
+
+  int getColumn() const throw() {
+    return d_column;
+  }
+
+protected:
+  std::string d_filename;
+  unsigned long d_line;
+  unsigned long d_column;
+};/* class ParserException */
+
+class CVC4_PUBLIC ParserEndOfFileException : public ParserException {
+public:
+
+  // Constructors same as ParserException's
+
+  ParserEndOfFileException() throw() :
+    ParserException() {
+  }
+
+  ParserEndOfFileException(const std::string& msg) throw() :
+    ParserException(msg) {
+  }
+
+  ParserEndOfFileException(const char* msg) throw() :
+    ParserException(msg) {
+  }
+
+  ParserEndOfFileException(const std::string& msg, const std::string& filename,
+                           unsigned long line, unsigned long column) throw() :
+    ParserException(msg, filename, line, column) {
+  }
+
+};/* class ParserEndOfFileException */
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PARSER__PARSER_EXCEPTION_H */
diff --git a/src/parser/parser_exception.i b/src/parser/parser_exception.i
new file mode 100644
index 0000000..39f67e6
--- /dev/null
+++ b/src/parser/parser_exception.i
@@ -0,0 +1,8 @@
+%{
+#include "parser/parser_exception.h"
+%}
+
+%ignore CVC4::parser::ParserException::ParserException(const char*);
+%ignore CVC4::parser::ParserEndOfFileException::ParserEndOfFileException(const char*);
+
+%include "parser/parser_exception.h"
diff --git a/src/parser/smt1/Makefile.am b/src/parser/smt1/Makefile.am
new file mode 100644
index 0000000..ae49d06
--- /dev/null
+++ b/src/parser/smt1/Makefile.am
@@ -0,0 +1,68 @@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4PARSERLIB \
+	-I at builddir@/../.. -I at srcdir@/../../include -I at srcdir@/../.. $(ANTLR_INCLUDES)
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN) $(WNO_PARENTHESES) $(WNO_TAUTOLOGICAL_COMPARE) -Wno-unused-function -Wno-unused-variable
+
+# Compile generated C files using C++ compiler
+AM_CFLAGS = $(AM_CXXFLAGS)
+CC=$(CXX)
+
+ANTLR_OPTS =
+
+# hide this included makefile from automake
+ at mk_include@ @srcdir@/../Makefile.antlr_tracing
+
+noinst_LTLIBRARIES = libparsersmt1.la
+
+ANTLR_TOKEN_STUFF = \
+	@builddir@/Smt1.tokens
+ANTLR_LEXER_STUFF = \
+	@builddir@/Smt1Lexer.h \
+	@builddir@/Smt1Lexer.c \
+	$(ANTLR_TOKEN_STUFF)
+ANTLR_PARSER_STUFF = \
+	@builddir@/Smt1Parser.h \
+	@builddir@/Smt1Parser.c
+ANTLR_STUFF = \
+	$(ANTLR_LEXER_STUFF) \
+	$(ANTLR_PARSER_STUFF)
+
+libparsersmt1_la_SOURCES = \
+	Smt1.g \
+        smt1.h \
+        smt1.cpp \
+	smt1_input.h \
+	smt1_input.cpp \
+	$(ANTLR_STUFF)
+
+BUILT_SOURCES = \
+	@builddir@/Smt1.tokens \
+	@builddir@/Smt1Lexer.h \
+	@builddir@/Smt1Lexer.c \
+	@builddir@/Smt1Parser.h \
+	@builddir@/Smt1Parser.c \
+	stamp-generated
+
+EXTRA_DIST = \
+	stamp-generated
+
+DISTCLEANFILES = $(ANTLR_STUFF)
+distclean-local:
+	-$(AM_V_at)rmdir generated
+	-$(AM_V_at)rm -f stamp-generated
+
+stamp-generated:
+	$(AM_V_at)mkdir -p generated
+	$(AM_V_at)touch stamp-generated
+
+# antlr doesn't overwrite output files, it just leaves them.  So we have to delete them first.
+ at builddir@/Smt1Lexer.h: Smt1.g stamp-generated
+	-$(AM_V_at)rm -f $(ANTLR_STUFF)
+	@if test -z "$(ANTLR)"; then echo "ERROR: antlr parser generator cannot be found, cannot generate the parser" >&2; exit 1; fi
+	$(AM_V_GEN)$(ANTLR) $(ANTLR_OPTS) -fo "@builddir@" "@srcdir@/Smt1.g"
+
+# These don't actually depend on Smt1Lexer.h, but if we're doing parallel
+# make and the lexer needs to be rebuilt, we have to keep the rules
+# from running in parallel (since the token files will be deleted &
+# recreated)
+ at builddir@/Smt1Lexer.c @builddir@/Smt1Parser.h @builddir@/Smt1Parser.c $(ANTLR_TOKEN_STUFF): @builddir@/Smt1Lexer.h
diff --git a/src/parser/smt1/Makefile.in b/src/parser/smt1/Makefile.in
new file mode 100644
index 0000000..5fa65f6
--- /dev/null
+++ b/src/parser/smt1/Makefile.in
@@ -0,0 +1,870 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = src/parser/smt1
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libparsersmt1_la_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_1 =
+am__objects_2 = @builddir@/Smt1Lexer.lo $(am__objects_1)
+am__objects_3 = @builddir@/Smt1Parser.lo
+am__objects_4 = $(am__objects_2) $(am__objects_3)
+am_libparsersmt1_la_OBJECTS = smt1.lo smt1_input.lo $(am__objects_4)
+libparsersmt1_la_OBJECTS = $(am_libparsersmt1_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+SOURCES = $(libparsersmt1_la_SOURCES)
+DIST_SOURCES = $(libparsersmt1_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = $(CXX)
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4PARSERLIB \
+	-I at builddir@/../.. -I at srcdir@/../../include -I at srcdir@/../.. $(ANTLR_INCLUDES)
+
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN) $(WNO_PARENTHESES) $(WNO_TAUTOLOGICAL_COMPARE) -Wno-unused-function -Wno-unused-variable
+
+# Compile generated C files using C++ compiler
+AM_CFLAGS = $(AM_CXXFLAGS)
+ANTLR_OPTS = 
+noinst_LTLIBRARIES = libparsersmt1.la
+ANTLR_TOKEN_STUFF = \
+	@builddir@/Smt1.tokens
+
+ANTLR_LEXER_STUFF = \
+	@builddir@/Smt1Lexer.h \
+	@builddir@/Smt1Lexer.c \
+	$(ANTLR_TOKEN_STUFF)
+
+ANTLR_PARSER_STUFF = \
+	@builddir@/Smt1Parser.h \
+	@builddir@/Smt1Parser.c
+
+ANTLR_STUFF = \
+	$(ANTLR_LEXER_STUFF) \
+	$(ANTLR_PARSER_STUFF)
+
+libparsersmt1_la_SOURCES = \
+	Smt1.g \
+        smt1.h \
+        smt1.cpp \
+	smt1_input.h \
+	smt1_input.cpp \
+	$(ANTLR_STUFF)
+
+BUILT_SOURCES = \
+	@builddir@/Smt1.tokens \
+	@builddir@/Smt1Lexer.h \
+	@builddir@/Smt1Lexer.c \
+	@builddir@/Smt1Parser.h \
+	@builddir@/Smt1Parser.c \
+	stamp-generated
+
+EXTRA_DIST = \
+	stamp-generated
+
+DISTCLEANFILES = $(ANTLR_STUFF)
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/parser/smt1/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/parser/smt1/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+ at builddir@/$(am__dirstamp):
+	@$(MKDIR_P) @builddir@
+	@: > @builddir@/$(am__dirstamp)
+ at builddir@/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) @builddir@/$(DEPDIR)
+	@: > @builddir@/$(DEPDIR)/$(am__dirstamp)
+ at builddir@/Smt1Lexer.lo: @builddir@/$(am__dirstamp) \
+	@builddir@/$(DEPDIR)/$(am__dirstamp)
+ at builddir@/Smt1Parser.lo: @builddir@/$(am__dirstamp) \
+	@builddir@/$(DEPDIR)/$(am__dirstamp)
+
+libparsersmt1.la: $(libparsersmt1_la_OBJECTS) $(libparsersmt1_la_DEPENDENCIES) $(EXTRA_libparsersmt1_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK)  $(libparsersmt1_la_OBJECTS) $(libparsersmt1_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+	-rm -f @builddir@/*.$(OBJEXT)
+	-rm -f @builddir@/*.lo
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/smt1.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/smt1_input.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote@@builddir@/$(DEPDIR)/Smt1Lexer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote@@builddir@/$(DEPDIR)/Smt1Parser.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+	-rm -rf @builddir@/.libs @builddir@/_libs
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f @builddir@/$(DEPDIR)/$(am__dirstamp)
+	-rm -f @builddir@/$(am__dirstamp)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR) @builddir@/$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-local distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR) @builddir@/$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-local distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# hide this included makefile from automake
+ at mk_include@ @srcdir@/../Makefile.antlr_tracing
+distclean-local:
+	-$(AM_V_at)rmdir generated
+	-$(AM_V_at)rm -f stamp-generated
+
+stamp-generated:
+	$(AM_V_at)mkdir -p generated
+	$(AM_V_at)touch stamp-generated
+
+# antlr doesn't overwrite output files, it just leaves them.  So we have to delete them first.
+ at builddir@/Smt1Lexer.h: Smt1.g stamp-generated
+	-$(AM_V_at)rm -f $(ANTLR_STUFF)
+	@if test -z "$(ANTLR)"; then echo "ERROR: antlr parser generator cannot be found, cannot generate the parser" >&2; exit 1; fi
+	$(AM_V_GEN)$(ANTLR) $(ANTLR_OPTS) -fo "@builddir@" "@srcdir@/Smt1.g"
+
+# These don't actually depend on Smt1Lexer.h, but if we're doing parallel
+# make and the lexer needs to be rebuilt, we have to keep the rules
+# from running in parallel (since the token files will be deleted &
+# recreated)
+ at builddir@/Smt1Lexer.c @builddir@/Smt1Parser.h @builddir@/Smt1Parser.c $(ANTLR_TOKEN_STUFF): @builddir@/Smt1Lexer.h
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/parser/smt1/Smt1.g b/src/parser/smt1/Smt1.g
new file mode 100644
index 0000000..28c54fc
--- /dev/null
+++ b/src/parser/smt1/Smt1.g
@@ -0,0 +1,900 @@
+/* *******************                                                        */
+/*! \file Smt1.g
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Morgan Deters, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Parser for SMT-LIB input language.
+ **
+ ** Parser for SMT-LIB input language.
+ **/
+
+grammar Smt1;
+
+options {
+  // C output for antlr
+  language = 'C';
+
+  // Skip the default error handling, just break with exceptions
+  // defaultErrorHandler = false;
+
+  // Only lookahead of <= k requested (disable for LL* parsing)
+  // Note that CVC4's BoundedTokenBuffer requires a fixed k !
+  // If you change this k, change it also in smt1_input.cpp !
+  k = 2;
+}/* options */
+
+ at header {
+/**
+ ** This file is part of CVC4.
+ ** Copyright (c) 2009-2014  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.
+ **/
+}/* @header */
+
+ at lexer::includes {
+
+// This should come immediately after #include <antlr3.h> in the generated
+// files. See the documentation in "parser/antlr_undefines.h" for more details.
+#include "parser/antlr_undefines.h"
+
+/** This suppresses warnings about the redefinition of token symbols between
+  * different parsers. The redefinitions should be harmless as long as no
+  * client: (a) #include's the lexer headers for two grammars AND (b) uses the
+  * token symbol definitions.
+  */
+#pragma GCC system_header
+
+#if defined(CVC4_COMPETITION_MODE) && !defined(CVC4_SMTCOMP_APPLICATION_TRACK)
+/* This improves performance by ~10 percent on big inputs.
+ * This option is only valid if we know the input is ASCII (or some 8-bit encoding).
+ * If we know the input is UTF-16, we can use ANTLR3_INLINE_INPUT_UTF16.
+ * Otherwise, we have to let the lexer detect the encoding at runtime.
+ */
+#  define ANTLR3_INLINE_INPUT_ASCII
+#  define ANTLR3_INLINE_INPUT_8BIT
+#endif /* CVC4_COMPETITION_MODE && !CVC4_SMTCOMP_APPLICATION_TRACK */
+
+#include "parser/antlr_tracing.h"
+}/* @lexer::includes */
+
+ at parser::includes {
+
+// This should come immediately after #include <antlr3.h> in the generated
+// files. See the documentation in "parser/antlr_undefines.h" for more details.
+#include "parser/antlr_undefines.h"
+
+#include <stdint.h>
+
+#include "base/ptr_closer.h"
+#include "smt/command.h"
+#include "parser/parser.h"
+#include "parser/antlr_tracing.h"
+
+namespace CVC4 {
+  class Expr;
+
+  namespace parser {
+    namespace smt1 {
+      /**
+       * Just exists to provide the uintptr_t constructor that ANTLR
+       * requires.
+       */
+      struct myExpr : public CVC4::Expr {
+        myExpr() : CVC4::Expr() {}
+        myExpr(void*) : CVC4::Expr() {}
+        myExpr(const Expr& e) : CVC4::Expr(e) {}
+        myExpr(const myExpr& e) : CVC4::Expr(e) {}
+      };/* struct myExpr */
+
+      /**
+       * Just exists to provide the uintptr_t constructor that ANTLR
+       * requires.
+       */
+      struct myType : public CVC4::Type {
+        myType() : CVC4::Type() {}
+        myType(void*) : CVC4::Type() {}
+        myType(const Type& t) : CVC4::Type(t) {}
+        myType(const myType& t) : CVC4::Type(t) {}
+      };/* struct myType */
+    }/* CVC4::parser::smt1 namespace */
+  }/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+}/* @parser::includes */
+
+ at parser::postinclude {
+
+#include <vector>
+
+#include "base/output.h"
+#include "base/ptr_closer.h"
+#include "expr/expr.h"
+#include "expr/kind.h"
+#include "expr/type.h"
+#include "parser/antlr_input.h"
+#include "parser/parser.h"
+#include "parser/smt1/smt1.h"
+#include "util/integer.h"
+#include "util/rational.h"
+
+using namespace CVC4;
+using namespace CVC4::parser;
+
+/* These need to be macros so they can refer to the PARSER macro, which will be defined
+ * by ANTLR *after* this section. (If they were functions, PARSER would be undefined.) */
+#undef PARSER_STATE
+#define PARSER_STATE ((Smt1*)PARSER->super)
+#undef EXPR_MANAGER
+#define EXPR_MANAGER PARSER_STATE->getExprManager()
+#undef MK_EXPR
+#define MK_EXPR EXPR_MANAGER->mkExpr
+#undef MK_CONST
+#define MK_CONST EXPR_MANAGER->mkConst
+
+}/* @parser::postinclude */
+
+
+/**
+ * Parses an expression.
+ * @return the parsed expression
+ */
+parseExpr returns [CVC4::parser::smt1::myExpr expr]
+  : annotatedFormula[expr]
+  | EOF
+  ;
+
+/**
+ * Parses a command (the whole benchmark)
+ * @return the command of the benchmark
+ */
+parseCommand returns [CVC4::Command* cmd_return = NULL]
+ at declarations {
+  CVC4::PtrCloser<CVC4::Command> cmd;
+}
+ at after {
+  cmd_return = cmd.release();
+}
+  : b = benchmark[&cmd]
+  | LPAREN_TOK c=IDENTIFIER
+    { std::string s = AntlrInput::tokenText($c);
+      if(s == "set" || s == "get") {
+        PARSER_STATE->parseError(std::string("In SMT-LIBv1 mode, expected keyword `benchmark', but it looks like you're writing SMT-LIBv2.  Use --lang smt for SMT-LIBv2."));
+      } else {
+        PARSER_STATE->parseError(std::string("expected keyword `benchmark', got `" + s + "'"));
+      }
+    }
+  ;
+
+/**
+ * Matches the whole SMT-LIB benchmark.
+ * @return the sequence command containing the whole problem
+ */
+benchmark [CVC4::PtrCloser<CVC4::Command>* cmd]
+  : LPAREN_TOK BENCHMARK_TOK IDENTIFIER benchAttributes[cmd] RPAREN_TOK
+  | EOF
+  ;
+
+/**
+ * Matches a sequence of benchmark attributes and returns a pointer to a
+ * command sequence.
+ * @return the command sequence
+ */
+benchAttributes [CVC4::PtrCloser<CVC4::Command>* cmd]
+ at init {
+  CVC4::PtrCloser<CVC4::CommandSequence> cmd_seq(new CommandSequence());
+  CVC4::PtrCloser<CVC4::Command> attribute;
+}
+ at after {
+  cmd->reset(cmd_seq.release());
+}
+  : (benchAttribute[&attribute]
+     { if (attribute) cmd_seq->addCommand(attribute.release()); }
+    )+
+  ;
+
+/**
+ * Matches a benchmark attribute, such as ':logic', ':formula', and returns
+ * a corresponding command
+ * @return a command corresponding to the attribute
+ */
+benchAttribute [CVC4::PtrCloser<CVC4::Command>* smt_command]
+ at declarations {
+  std::string name;
+  BenchmarkStatus b_status;
+  Expr expr;
+  CVC4::PtrCloser<CVC4::CommandSequence> command_seq;
+  CVC4::PtrCloser<CVC4::Command> declaration_command;
+}
+  : LOGIC_TOK identifier[name,CHECK_NONE,SYM_VARIABLE]
+    { PARSER_STATE->preemptCommand(new SetBenchmarkLogicCommand(name));
+      PARSER_STATE->setLogic(name);
+      smt_command->reset(new EmptyCommand());
+    }
+  | ASSUMPTION_TOK annotatedFormula[expr]
+    { smt_command->reset(new AssertCommand(expr)); }
+  | FORMULA_TOK annotatedFormula[expr]
+    { smt_command->reset(new CheckSatCommand(expr)); }
+  | STATUS_TOK status[b_status]
+    { smt_command->reset(new SetBenchmarkStatusCommand(b_status)); }
+  | EXTRAFUNS_TOK LPAREN_TOK
+    { command_seq.reset(new CommandSequence()); }
+    ( functionDeclaration[&declaration_command]
+      { command_seq->addCommand(declaration_command.release()); }
+    )+ RPAREN_TOK
+      { smt_command->reset(command_seq.release()); }
+  | EXTRAPREDS_TOK LPAREN_TOK
+    { command_seq.reset(new CommandSequence()); }
+    ( predicateDeclaration[&declaration_command]
+      { command_seq->addCommand(declaration_command.release()); }
+    )+ RPAREN_TOK
+      { smt_command->reset(command_seq.release()); }
+  | EXTRASORTS_TOK LPAREN_TOK
+      { command_seq.reset(new CommandSequence()); }
+    ( sortDeclaration[&declaration_command]
+      { command_seq->addCommand(declaration_command.release()); }
+    )+ RPAREN_TOK
+      { smt_command->reset(command_seq.release()); }
+  | NOTES_TOK STRING_LITERAL
+    { smt_command->reset(
+          new CommentCommand(AntlrInput::tokenText($STRING_LITERAL))); }
+  | annotation[smt_command]
+  ;
+
+/**
+ * Matches an annotated formula.
+ * @return the expression representing the formula
+ */
+annotatedFormula[CVC4::Expr& expr]
+ at init {
+  Debug("parser") << "annotated formula: " << AntlrInput::tokenText(LT(1)) << std::endl;
+  Kind kind;
+  std::string name;
+  std::vector<Expr> args; /* = getExprVector(); */
+  std::vector<Expr> args2;
+  Expr op; /* Operator expression FIXME: move away kill it */
+}
+  : /* a built-in operator application */
+    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 be the only argument. */
+        assert( expr == args[0] );
+      } else if( CVC4::kind::isAssociative(kind) &&
+                 args.size() > EXPR_MANAGER->maxArity(kind) ) {
+    	/* Special treatment for associative operators with lots of children */
+        expr = EXPR_MANAGER->mkAssociative(kind,args);
+      } else if(!PARSER_STATE->strictModeEnabled() &&
+                kind == CVC4::kind::MINUS && args.size() == 1) {
+        /* Special fix-up for unary minus improperly used in some benchmarks */
+        expr = MK_EXPR(CVC4::kind::UMINUS, args[0]);
+      } else {
+        PARSER_STATE->checkArity(kind, args.size());
+        expr = MK_EXPR(kind, args);
+      }
+    }
+    termAnnotation[expr]* RPAREN_TOK
+
+  | /* A quantifier */
+    LPAREN_TOK
+    ( FORALL_TOK { kind = kind::FORALL; } | EXISTS_TOK { kind = kind::EXISTS; } )
+    { PARSER_STATE->pushScope(); }
+    ( LPAREN_TOK let_identifier[name,CHECK_NONE] t=sortSymbol RPAREN_TOK
+      { args.push_back(PARSER_STATE->mkBoundVar(name, t)); }
+    )+
+    annotatedFormula[expr]
+    { args2.push_back( MK_EXPR( kind::BOUND_VAR_LIST, args ) );
+      args2.push_back(expr);
+      expr = MK_EXPR(kind, args2);
+    }
+    termAnnotation[expr]* RPAREN_TOK
+    { PARSER_STATE->popScope(); }
+
+  | /* A non-built-in function application */
+
+    // Semantic predicate not necessary if parenthesized subexpressions
+    // are disallowed
+    // { isFunction(LT(2)->getText()) }?
+    LPAREN_TOK
+    parameterizedOperator[op]
+    annotatedFormulas[args,expr]
+    // TODO: check arity
+    { expr = MK_EXPR(op,args); }
+    termAnnotation[expr]* RPAREN_TOK
+
+  | /* An ite expression */
+    LPAREN_TOK ITE_TOK
+    annotatedFormula[expr]
+    { args.push_back(expr); }
+    annotatedFormula[expr]
+    { args.push_back(expr); }
+    annotatedFormula[expr]
+    { args.push_back(expr);
+      expr = MK_EXPR(CVC4::kind::ITE, args); }
+    termAnnotation[expr]* RPAREN_TOK
+
+  | /* a let/flet binding */
+    LPAREN_TOK
+    ( LET_TOK LPAREN_TOK let_identifier[name,CHECK_UNDECLARED]
+      | FLET_TOK LPAREN_TOK flet_identifier[name,CHECK_UNDECLARED] )
+    annotatedFormula[expr] RPAREN_TOK
+    { PARSER_STATE->pushScope();
+      PARSER_STATE->defineVar(name,expr); }
+    annotatedFormula[expr]
+    termAnnotation[expr]* RPAREN_TOK
+    { PARSER_STATE->popScope(); }
+
+    /* constants */
+  | TRUE_TOK          { expr = MK_CONST(bool(true)); }
+  | FALSE_TOK         { expr = MK_CONST(bool(false)); }
+  | NUMERAL_TOK
+    { expr = MK_CONST( AntlrInput::tokenToInteger($NUMERAL_TOK) ); }
+  | RATIONAL_TOK
+    { // 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 ']'
+    { expr = MK_CONST( AntlrInput::tokenToBitvector($n, $size) ); }
+  | n = BITVECTOR1_BV_CONST
+    { unsigned int bit = AntlrInput::tokenText($n)[3] - '0';
+      expr = MK_CONST( BitVector(1, bit) );
+    }
+    // NOTE: Theory constants go here
+    /* TODO: quantifiers, arithmetic constants */
+
+  | /* a variable */
+    ( identifier[name,CHECK_DECLARED,SYM_VARIABLE]
+      | let_identifier[name,CHECK_DECLARED]
+      | flet_identifier[name,CHECK_DECLARED] )
+    { expr = PARSER_STATE->getVariable(name); }
+  ;
+
+/**
+ * Matches a sequence of annotated formulas and puts them into the
+ * formulas vector.
+ * @param formulas the vector to fill with formulas
+ * @param expr an Expr reference for the elements of the sequence
+ */
+/* NOTE: We pass an Expr in here just to avoid allocating a fresh Expr every
+ * time through this rule. */
+annotatedFormulas[std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr]
+  : ( annotatedFormula[expr] { formulas.push_back(expr); } )+
+  ;
+
+/**
+* Matches a builtin operator symbol and sets kind to its associated Expr kind.
+*/
+builtinOp[CVC4::Kind& kind]
+ at init {
+  Debug("parser") << "builtin: " << AntlrInput::tokenText(LT(1)) << std::endl;
+}
+  : NOT_TOK      { $kind = CVC4::kind::NOT;     }
+  | IMPLIES_TOK  { $kind = CVC4::kind::IMPLIES; }
+  | AND_TOK      { $kind = CVC4::kind::AND;     }
+  | OR_TOK       { $kind = CVC4::kind::OR;      }
+  | XOR_TOK      { $kind = CVC4::kind::XOR;     }
+  | IFF_TOK      { $kind = CVC4::kind::EQUAL;   }
+  | EQUAL_TOK    { $kind = CVC4::kind::EQUAL;   }
+  | DISTINCT_TOK { $kind = CVC4::kind::DISTINCT; }
+  // Arithmetic
+  | GREATER_THAN_TOK
+                 { $kind = CVC4::kind::GT; }
+  | GREATER_THAN_TOK EQUAL_TOK
+                 { $kind = CVC4::kind::GEQ; }
+  | LESS_THAN_TOK EQUAL_TOK
+                 { $kind = CVC4::kind::LEQ; }
+  | LESS_THAN_TOK
+                 { $kind = CVC4::kind::LT; }
+  | PLUS_TOK     { $kind = CVC4::kind::PLUS; }
+  | STAR_TOK     { $kind = CVC4::kind::MULT; }
+  | TILDE_TOK    { $kind = CVC4::kind::UMINUS; }
+  | MINUS_TOK    { $kind = CVC4::kind::MINUS; }
+  | DIV_TOK      { $kind = CVC4::kind::DIVISION; }
+  // Bit-vectors
+  | CONCAT_TOK   { $kind = CVC4::kind::BITVECTOR_CONCAT; }
+  | BVAND_TOK    { $kind = CVC4::kind::BITVECTOR_AND;    }
+  | BVOR_TOK     { $kind = CVC4::kind::BITVECTOR_OR;     }
+  | BVXOR_TOK    { $kind = CVC4::kind::BITVECTOR_XOR;    }
+  | BVNOT_TOK    { $kind = CVC4::kind::BITVECTOR_NOT;    }
+  | BVNAND_TOK   { $kind = CVC4::kind::BITVECTOR_NAND;   }
+  | BVNOR_TOK    { $kind = CVC4::kind::BITVECTOR_NOR;    }
+  | BVXNOR_TOK   { $kind = CVC4::kind::BITVECTOR_XNOR;   }
+  | BVCOMP_TOK   { $kind = CVC4::kind::BITVECTOR_COMP;   }
+  | BVMUL_TOK    { $kind = CVC4::kind::BITVECTOR_MULT;   }
+  | BVADD_TOK    { $kind = CVC4::kind::BITVECTOR_PLUS;   }
+  | BVSUB_TOK    { $kind = CVC4::kind::BITVECTOR_SUB;    }
+  | BVNEG_TOK    { $kind = CVC4::kind::BITVECTOR_NEG;    }
+  | BVUDIV_TOK   { $kind = CVC4::kind::BITVECTOR_UDIV;   }
+  | BVUREM_TOK   { $kind = CVC4::kind::BITVECTOR_UREM;   }
+  | BVSDIV_TOK   { $kind = CVC4::kind::BITVECTOR_SDIV;   }
+  | BVSREM_TOK   { $kind = CVC4::kind::BITVECTOR_SREM;   }
+  | BVSMOD_TOK   { $kind = CVC4::kind::BITVECTOR_SMOD;   }
+  | BVSHL_TOK    { $kind = CVC4::kind::BITVECTOR_SHL;    }
+  | BVLSHR_TOK   { $kind = CVC4::kind::BITVECTOR_LSHR;   }
+  | BVASHR_TOK   { $kind = CVC4::kind::BITVECTOR_ASHR;   }
+  | BVULT_TOK    { $kind = CVC4::kind::BITVECTOR_ULT;    }
+  | BVULE_TOK    { $kind = CVC4::kind::BITVECTOR_ULE;    }
+  | BVUGT_TOK    { $kind = CVC4::kind::BITVECTOR_UGT;    }
+  | BVUGE_TOK    { $kind = CVC4::kind::BITVECTOR_UGE;    }
+  | BVSLT_TOK    { $kind = CVC4::kind::BITVECTOR_SLT;    }
+  | BVSLE_TOK    { $kind = CVC4::kind::BITVECTOR_SLE;    }
+  | BVSGT_TOK    { $kind = CVC4::kind::BITVECTOR_SGT;    }
+  | BVSGE_TOK    { $kind = CVC4::kind::BITVECTOR_SGE;    }
+  // arrays
+  | SELECT_TOK   { $kind = CVC4::kind::SELECT; }
+  | STORE_TOK    { $kind = CVC4::kind::STORE; }
+  // NOTE: Theory operators go here
+  ;
+
+/**
+ * Matches an operator.
+ */
+parameterizedOperator[CVC4::Expr& op]
+  : functionSymbol[op]
+  | bitVectorOperator[op]
+  ;
+
+/**
+ * Matches a bit-vector operator (the ones parametrized by numbers)
+ */
+bitVectorOperator[CVC4::Expr& op]
+  : EXTRACT_TOK '[' n1 = NUMERAL_TOK ':' n2 = NUMERAL_TOK ']'
+    { op = MK_CONST(BitVectorExtract(AntlrInput::tokenToUnsigned($n1), AntlrInput::tokenToUnsigned($n2))); }
+  | REPEAT_TOK '[' n = NUMERAL_TOK ']'
+    { op = MK_CONST(BitVectorRepeat(AntlrInput::tokenToUnsigned($n))); }
+  | ZERO_EXTEND_TOK '[' n = NUMERAL_TOK ']'
+    { op = MK_CONST(BitVectorZeroExtend(AntlrInput::tokenToUnsigned($n))); }
+  | SIGN_EXTEND_TOK '[' n = NUMERAL_TOK ']'
+    { op = MK_CONST(BitVectorSignExtend(AntlrInput::tokenToUnsigned($n))); }
+  | ROTATE_LEFT_TOK '[' n = NUMERAL_TOK ']'
+    { op = MK_CONST(BitVectorRotateLeft(AntlrInput::tokenToUnsigned($n))); }
+  | ROTATE_RIGHT_TOK '[' n = NUMERAL_TOK ']'
+    { op = MK_CONST(BitVectorRotateRight(AntlrInput::tokenToUnsigned($n))); }
+  ;
+
+/**
+ * Matches a (possibly undeclared) predicate identifier (returning the string).
+ * @param check what kind of check to do with the symbol
+ */
+predicateName[std::string& name, CVC4::parser::DeclarationCheck check]
+  :  functionName[name,check]
+  ;
+
+/**
+ * Matches a (possibly undeclared) function identifier (returning the string)
+ * @param check what kind of check to do with the symbol
+ */
+functionName[std::string& name, CVC4::parser::DeclarationCheck check]
+  :  identifier[name,check,SYM_VARIABLE]
+  ;
+
+/**
+ * Matches an previously declared function symbol (returning an Expr)
+ */
+functionSymbol[CVC4::Expr& fun]
+ at declarations {
+	std::string name;
+}
+  : functionName[name,CHECK_DECLARED]
+    { PARSER_STATE->checkFunctionLike(name);
+      fun = PARSER_STATE->getVariable(name); }
+  ;
+
+/**
+ * Matches an attribute name from the input (:attribute_name).
+ */
+attribute[std::string& s]
+  : ATTR_IDENTIFIER
+    { s = AntlrInput::tokenText($ATTR_IDENTIFIER); }
+  ;
+
+functionDeclaration[CVC4::PtrCloser<CVC4::Command>* smt_command]
+ at declarations {
+  std::string name;
+  std::vector<Type> sorts;
+}
+  : LPAREN_TOK functionName[name,CHECK_UNDECLARED]
+      t = sortSymbol // require at least one sort
+    { sorts.push_back(t); }
+      sortList[sorts] RPAREN_TOK
+    { if( sorts.size() == 1 ) {
+        assert( t == sorts[0] );
+      } else {
+        t = EXPR_MANAGER->mkFunctionType(sorts);
+      }
+      Expr func = PARSER_STATE->mkVar(name, t);
+      smt_command->reset(new DeclareFunctionCommand(name, func, t));
+    }
+  ;
+
+/**
+ * Matches the declaration of a predicate and declares it
+ */
+predicateDeclaration[CVC4::PtrCloser<CVC4::Command>* smt_command]
+ at declarations {
+  std::string name;
+  std::vector<Type> p_sorts;
+}
+  : LPAREN_TOK predicateName[name,CHECK_UNDECLARED] sortList[p_sorts] RPAREN_TOK
+    { Type t;
+      if( p_sorts.empty() ) {
+        t = EXPR_MANAGER->booleanType();
+      } else {
+        t = EXPR_MANAGER->mkPredicateType(p_sorts);
+      }
+      Expr func = PARSER_STATE->mkVar(name, t);
+      smt_command->reset(new DeclareFunctionCommand(name, func, t));
+    }
+  ;
+
+sortDeclaration[CVC4::PtrCloser<CVC4::Command>* smt_command]
+ at declarations {
+  std::string name;
+}
+  : sortName[name,CHECK_UNDECLARED]
+    { Debug("parser") << "sort decl: '" << name << "'" << std::endl;
+      Type type = PARSER_STATE->mkSort(name);
+      smt_command->reset(new DeclareTypeCommand(name, 0, type));
+    }
+  ;
+
+/**
+ * Matches a sequence of sort symbols and fills them into the given vector.
+ */
+sortList[std::vector<CVC4::Type>& sorts]
+  : ( t = sortSymbol { sorts.push_back(t); })*
+  ;
+
+/**
+ * Matches the sort symbol, which can be an arbitrary identifier.
+ * @param check the check to perform on the name
+ */
+sortName[std::string& name, CVC4::parser::DeclarationCheck check]
+  : identifier[name,check,SYM_SORT]
+  ;
+
+sortSymbol returns [CVC4::parser::smt1::myType t]
+ at declarations {
+  std::string name;
+}
+  : sortName[name,CHECK_NONE]
+  	{ $t = PARSER_STATE->getSort(name); }
+  | BITVECTOR_TOK '[' NUMERAL_TOK ']' {
+  	$t = EXPR_MANAGER->mkBitVectorType(AntlrInput::tokenToUnsigned($NUMERAL_TOK));
+    }
+  /* attaching 'Array' to '[' allows us to parse regular 'Array' correctly in
+   * e.g. QF_AX, and also 'Array[m:n]' in e.g. QF_AUFBV */
+  | 'Array[' n1=NUMERAL_TOK ':' n2=NUMERAL_TOK ']' {
+        $t = EXPR_MANAGER->mkArrayType(EXPR_MANAGER->mkBitVectorType(AntlrInput::tokenToUnsigned(n1)),
+                                       EXPR_MANAGER->mkBitVectorType(AntlrInput::tokenToUnsigned(n2)));
+    }
+  ;
+
+/**
+ * Matches the status of the benchmark, one of 'sat', 'unsat' or 'unknown'.
+ */
+status[ CVC4::BenchmarkStatus& status ]
+  : SAT_TOK       { $status = SMT_SATISFIABLE;    }
+  | UNSAT_TOK     { $status = SMT_UNSATISFIABLE;  }
+  | UNKNOWN_TOK   { $status = SMT_UNKNOWN;        }
+  ;
+
+/**
+ * Matches an annotation, which is an attribute name, with an optional user
+ * value.
+ */
+annotation[CVC4::PtrCloser<CVC4::Command>* smt_command]
+ at init {
+  std::string key, value;
+  std::vector<Expr> pats;
+  Expr pat;
+}
+  : PATTERN_ANNOTATION_BEGIN
+    { PARSER_STATE->warning(":pat not supported here; ignored"); }
+    annotatedFormulas[pats,pat] '}'
+  | attribute[key]
+    ( userValue[value]
+      { smt_command->reset(
+            new SetInfoCommand(key.c_str() + 1, SExpr(value))); }
+    | { smt_command->reset(
+            new EmptyCommand(std::string("annotation: ") + key)); }
+    )
+  ;
+
+/**
+ * Matches an annotation, which is an attribute name, with an optional user
+ * value.
+ */
+termAnnotation[CVC4::Expr& expr]
+ at 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); }
+  ;
+
+/**
+ * Matches an identifier and sets the string reference parameter id.
+ * @param id string to hold the identifier
+ * @param check what kinds of check to do on the symbol
+ * @param type the intended namespace for the identifier
+ */
+identifier[std::string& id,
+		   CVC4::parser::DeclarationCheck check,
+           CVC4::parser::SymbolType type]
+  : IDENTIFIER
+    { id = AntlrInput::tokenText($IDENTIFIER);
+      Debug("parser") << "identifier: " << id
+                      << " check? " << check
+                      << " type? " << type << std::endl;
+      PARSER_STATE->checkDeclaration(id, check, type); }
+  ;
+
+/**
+ * Matches a let-bound identifier and sets the string reference parameter id.
+ * @param id string to hold the identifier
+ * @param check what kinds of check to do on the symbol
+ */
+let_identifier[std::string& id,
+    		   CVC4::parser::DeclarationCheck check]
+  : LET_IDENTIFIER
+    { id = AntlrInput::tokenText($LET_IDENTIFIER);
+      Debug("parser") << "let_identifier: " << id
+                      << " check? " << check << std::endl;
+      PARSER_STATE->checkDeclaration(id, check, SYM_VARIABLE); }
+  ;
+
+/**
+ * Matches an flet-bound identifier and sets the string reference parameter id.
+ * @param id string to hold the identifier
+ * @param check what kinds of check to do on the symbol
+ */
+flet_identifier[std::string& id,
+    		    CVC4::parser::DeclarationCheck check]
+  : FLET_IDENTIFIER
+    { id = AntlrInput::tokenText($FLET_IDENTIFIER);
+      Debug("parser") << "flet_identifier: " << id
+                      << " check? " << check << std::endl;
+      PARSER_STATE->checkDeclaration(id, check); }
+  ;
+
+// Base SMT-LIB tokens
+ASSUMPTION_TOK  : ':assumption';
+BENCHMARK_TOK   : 'benchmark';
+EXTRAFUNS_TOK   : ':extrafuns';
+EXTRAPREDS_TOK  : ':extrapreds';
+EXTRASORTS_TOK  : ':extrasorts';
+FALSE_TOK       : 'false';
+FLET_TOK        : 'flet';
+FORMULA_TOK     : ':formula';
+ITE_TOK         : 'ite' | 'if_then_else';
+LET_TOK         : 'let';
+LOGIC_TOK       : ':logic';
+LPAREN_TOK      : '(';
+NOTES_TOK       : ':notes';
+RPAREN_TOK      : ')';
+SAT_TOK         : 'sat';
+STATUS_TOK      : ':status';
+THEORY_TOK      : 'theory';
+TRUE_TOK        : 'true';
+UNKNOWN_TOK     : 'unknown';
+UNSAT_TOK       : 'unsat';
+
+// operators (NOTE: theory symbols go here)
+AMPERSAND_TOK     : '&';
+AND_TOK           : 'and';
+AT_TOK            : '@';
+DISTINCT_TOK      : 'distinct';
+DIV_TOK           : '/';
+EQUAL_TOK         : '=';
+EXISTS_TOK        : 'exists';
+FORALL_TOK        : 'forall';
+GREATER_THAN_TOK  : '>';
+IFF_TOK           : 'iff';
+IMPLIES_TOK       : 'implies';
+LESS_THAN_TOK     : '<';
+MINUS_TOK         : '-';
+NOT_TOK           : 'not';
+OR_TOK            : 'or';
+PERCENT_TOK       : '%';
+PIPE_TOK          : '|';
+PLUS_TOK          : '+';
+POUND_TOK         : '#';
+SELECT_TOK        : 'select';
+STAR_TOK          : '*';
+STORE_TOK         : 'store';
+TILDE_TOK         : '~';
+XOR_TOK           : 'xor';
+
+// Bitvector tokens
+BITVECTOR_TOK     : 'BitVec';
+CONCAT_TOK        : 'concat';
+EXTRACT_TOK       : 'extract';
+BVAND_TOK         : 'bvand';
+BVOR_TOK          : 'bvor';
+BVXOR_TOK         : 'bvxor';
+BVNOT_TOK         : 'bvnot';
+BVNAND_TOK        : 'bvnand';
+BVNOR_TOK         : 'bvnor';
+BVXNOR_TOK        : 'bvxnor';
+BVCOMP_TOK        : 'bvcomp';
+BVMUL_TOK         : 'bvmul';
+BVADD_TOK         : 'bvadd';
+BVSUB_TOK         : 'bvsub';
+BVNEG_TOK         : 'bvneg';
+BVUDIV_TOK        : 'bvudiv';
+BVUREM_TOK        : 'bvurem';
+BVSDIV_TOK        : 'bvsdiv';
+BVSREM_TOK        : 'bvsrem';
+BVSMOD_TOK        : 'bvsmod';
+BVSHL_TOK         : 'bvshl';
+BVLSHR_TOK        : 'bvlshr';
+BVASHR_TOK        : 'bvashr';
+BVULT_TOK         : 'bvult';
+BVULE_TOK         : 'bvule';
+BVUGT_TOK         : 'bvugt';
+BVUGE_TOK         : 'bvuge';
+BVSLT_TOK         : 'bvslt';
+BVSLE_TOK         : 'bvsle';
+BVSGT_TOK         : 'bvsgt';
+BVSGE_TOK         : 'bvsge';
+REPEAT_TOK        : 'repeat';
+ZERO_EXTEND_TOK   : 'zero_extend';
+SIGN_EXTEND_TOK   : 'sign_extend';
+ROTATE_LEFT_TOK   : 'rotate_left';
+ROTATE_RIGHT_TOK  : 'rotate_right';
+
+/**
+ * Matches a bit-vector constant of the form bv123
+ */
+BITVECTOR_BV_CONST
+  : 'bv' DIGIT+
+  ;
+
+/**
+ * Matches a bit-vector constant of the form bit(0|1)
+ */
+BITVECTOR1_BV_CONST
+  : 'bit0' | 'bit1'
+  ;
+
+
+/**
+ * Matches an identifier from the input. An identifier is a sequence of letters,
+ * digits and "_", "'", "." symbols, starting with a letter.
+ */
+IDENTIFIER
+  :  ALPHA (ALPHA | DIGIT | '_' | '\'' | '.')*
+  ;
+
+/**
+ * Matches an identifier starting with a colon.
+ */
+ATTR_IDENTIFIER
+  :  ':' IDENTIFIER
+  ;
+
+/**
+ * Matches an identifier starting with a question mark.
+ */
+LET_IDENTIFIER
+  : '?' IDENTIFIER
+  ;
+
+/**
+ * Matches an identifier starting with a dollar sign.
+ */
+FLET_IDENTIFIER
+  : '$' IDENTIFIER
+  ;
+
+/**
+ * Matches the value of user-defined annotations or attributes. The
+ * 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);
+      assert(*s.begin() == '{');
+      assert(*s.rbegin() == '}');
+      // trim whitespace
+      s.erase(s.begin(), s.begin() + 1);
+      s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun<int, int>(std::isspace))));
+      s.erase(s.end() - 1);
+      s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::ptr_fun<int, int>(std::isspace))).base(), s.end());
+    }
+  ;
+
+PATTERN_ANNOTATION_BEGIN
+  : ':pat' (' ' | '\t' | '\f' | '\r' | '\n')* '{'
+  ;
+
+USER_VALUE
+  : '{' ('\\{' | '\\}' | ~('{' | '}'))* '}'
+  ;
+
+/**
+ * Matches and skips whitespace in the input.
+ */
+WHITESPACE
+  : (' ' | '\t' | '\f' | '\r' | '\n')+
+    { SKIP(); }
+  ;
+
+/**
+ * Matches a numeral from the input (non-empty sequence of digits).
+ */
+NUMERAL_TOK
+  : DIGIT+
+  ;
+
+RATIONAL_TOK
+  : DIGIT+ '.' DIGIT+
+  ;
+
+/**
+ * Matches a double quoted string literal. Escaping is supported, and escape
+ * character '\' has to be escaped.
+ */
+STRING_LITERAL
+  :  '"' (ESCAPE | ~('"'|'\\'))* '"'
+  ;
+
+/**
+ * Matches the comments and ignores them
+ */
+COMMENT
+  : ';' (~('\n' | '\r'))*
+    { SKIP(); }
+  ;
+
+
+/**
+ * Matches any letter ('a'-'z' and 'A'-'Z').
+ */
+fragment
+ALPHA
+  :  'a'..'z'
+  |  'A'..'Z'
+  ;
+
+/**
+ * Matches the digits (0-9)
+ */
+fragment DIGIT :   '0'..'9';
+// fragment NON_ZERO_DIGIT : '1'..'9';
+// fragment NUMERAL_SEQ : '0' | NON_ZERO_DIGIT DIGIT*;
+
+/**
+ * Matches an allowed escaped character.
+ */
+fragment ESCAPE : '\\' ('"' | '\\' | 'n' | 't' | 'r');
+
diff --git a/src/parser/smt1/Smt1.tokens b/src/parser/smt1/Smt1.tokens
new file mode 100644
index 0000000..0e0e713
--- /dev/null
+++ b/src/parser/smt1/Smt1.tokens
@@ -0,0 +1,108 @@
+T__100=100
+T__101=101
+T__102=102
+T__103=103
+T__104=104
+T__105=105
+ALPHA=4
+AMPERSAND_TOK=5
+AND_TOK=6
+ASSUMPTION_TOK=7
+ATTR_IDENTIFIER=8
+AT_TOK=9
+BENCHMARK_TOK=10
+BITVECTOR1_BV_CONST=11
+BITVECTOR_BV_CONST=12
+BITVECTOR_TOK=13
+BVADD_TOK=14
+BVAND_TOK=15
+BVASHR_TOK=16
+BVCOMP_TOK=17
+BVLSHR_TOK=18
+BVMUL_TOK=19
+BVNAND_TOK=20
+BVNEG_TOK=21
+BVNOR_TOK=22
+BVNOT_TOK=23
+BVOR_TOK=24
+BVSDIV_TOK=25
+BVSGE_TOK=26
+BVSGT_TOK=27
+BVSHL_TOK=28
+BVSLE_TOK=29
+BVSLT_TOK=30
+BVSMOD_TOK=31
+BVSREM_TOK=32
+BVSUB_TOK=33
+BVUDIV_TOK=34
+BVUGE_TOK=35
+BVUGT_TOK=36
+BVULE_TOK=37
+BVULT_TOK=38
+BVUREM_TOK=39
+BVXNOR_TOK=40
+BVXOR_TOK=41
+COMMENT=42
+CONCAT_TOK=43
+DIGIT=44
+DISTINCT_TOK=45
+DIV_TOK=46
+EQUAL_TOK=47
+ESCAPE=48
+EXISTS_TOK=49
+EXTRACT_TOK=50
+EXTRAFUNS_TOK=51
+EXTRAPREDS_TOK=52
+EXTRASORTS_TOK=53
+FALSE_TOK=54
+FLET_IDENTIFIER=55
+FLET_TOK=56
+FORALL_TOK=57
+FORMULA_TOK=58
+GREATER_THAN_TOK=59
+IDENTIFIER=60
+IFF_TOK=61
+IMPLIES_TOK=62
+ITE_TOK=63
+LESS_THAN_TOK=64
+LET_IDENTIFIER=65
+LET_TOK=66
+LOGIC_TOK=67
+LPAREN_TOK=68
+MINUS_TOK=69
+NOTES_TOK=70
+NOT_TOK=71
+NUMERAL_TOK=72
+OR_TOK=73
+PATTERN_ANNOTATION_BEGIN=74
+PERCENT_TOK=75
+PIPE_TOK=76
+PLUS_TOK=77
+POUND_TOK=78
+RATIONAL_TOK=79
+REPEAT_TOK=80
+ROTATE_LEFT_TOK=81
+ROTATE_RIGHT_TOK=82
+RPAREN_TOK=83
+SAT_TOK=84
+SELECT_TOK=85
+SIGN_EXTEND_TOK=86
+STAR_TOK=87
+STATUS_TOK=88
+STORE_TOK=89
+STRING_LITERAL=90
+THEORY_TOK=91
+TILDE_TOK=92
+TRUE_TOK=93
+UNKNOWN_TOK=94
+UNSAT_TOK=95
+USER_VALUE=96
+WHITESPACE=97
+XOR_TOK=98
+ZERO_EXTEND_TOK=99
+':'=100
+':pat'=101
+'Array['=102
+'['=103
+']'=104
+'}'=105
diff --git a/src/parser/smt1/Smt1Lexer.c b/src/parser/smt1/Smt1Lexer.c
new file mode 100644
index 0000000..b8a806c
--- /dev/null
+++ b/src/parser/smt1/Smt1Lexer.c
@@ -0,0 +1,9032 @@
+/** \file
+ *  This C source file was generated by $ANTLR version 3.4
+ *
+ *     -  From the grammar source file : ../../../../../../src/parser/smt1/Smt1.g
+ *     -                            On : 2017-03-16 01:03:01
+ *     -                 for the lexer : Smt1LexerLexer
+ *
+ * Editing it, at least manually, is not wise.
+ *
+ * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws.
+ *
+ *
+*/
+// [The "BSD license"]
+// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
+// http://www.temporal-wave.com
+// http://www.linkedin.com/in/jimidle
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+// 3. The name of the author may not be used to endorse or promote products
+//    derived from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/* -----------------------------------------
+ * Include the ANTLR3 generated header file.
+ */
+#include    "Smt1Lexer.h"
+/* ----------------------------------------- */
+
+
+/** String literals used by Smt1Lexer that we must do things like MATCHS() with.
+ *  C will normally just lay down 8 bit characters, and you can use L"xxx" to
+ *  get wchar_t, but wchar_t is 16 bits on Windows, which is not UTF32 and so
+ *  we perform this little trick of defining the literals as arrays of UINT32
+ *  and passing in the address of these.
+ */
+static ANTLR3_UCHAR	lit_1[]  = { 0x3A, 0x70, 0x61, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_2[]  = { 0x41, 0x72, 0x72, 0x61, 0x79, 0x5B,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_3[]  = { 0x3A, 0x61, 0x73, 0x73, 0x75, 0x6D, 0x70, 0x74, 0x69, 0x6F, 0x6E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_4[]  = { 0x62, 0x65, 0x6E, 0x63, 0x68, 0x6D, 0x61, 0x72, 0x6B,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_5[]  = { 0x3A, 0x65, 0x78, 0x74, 0x72, 0x61, 0x66, 0x75, 0x6E, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_6[]  = { 0x3A, 0x65, 0x78, 0x74, 0x72, 0x61, 0x70, 0x72, 0x65, 0x64, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_7[]  = { 0x3A, 0x65, 0x78, 0x74, 0x72, 0x61, 0x73, 0x6F, 0x72, 0x74, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_8[]  = { 0x66, 0x61, 0x6C, 0x73, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_9[]  = { 0x66, 0x6C, 0x65, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_10[]  = { 0x3A, 0x66, 0x6F, 0x72, 0x6D, 0x75, 0x6C, 0x61,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_11[]  = { 0x69, 0x74, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_12[]  = { 0x69, 0x66, 0x5F, 0x74, 0x68, 0x65, 0x6E, 0x5F, 0x65, 0x6C, 0x73, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_13[]  = { 0x6C, 0x65, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_14[]  = { 0x3A, 0x6C, 0x6F, 0x67, 0x69, 0x63,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_15[]  = { 0x3A, 0x6E, 0x6F, 0x74, 0x65, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_16[]  = { 0x73, 0x61, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_17[]  = { 0x3A, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_18[]  = { 0x74, 0x68, 0x65, 0x6F, 0x72, 0x79,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_19[]  = { 0x74, 0x72, 0x75, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_20[]  = { 0x75, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x6E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_21[]  = { 0x75, 0x6E, 0x73, 0x61, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_22[]  = { 0x61, 0x6E, 0x64,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_23[]  = { 0x64, 0x69, 0x73, 0x74, 0x69, 0x6E, 0x63, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_24[]  = { 0x65, 0x78, 0x69, 0x73, 0x74, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_25[]  = { 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_26[]  = { 0x69, 0x66, 0x66,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_27[]  = { 0x69, 0x6D, 0x70, 0x6C, 0x69, 0x65, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_28[]  = { 0x6E, 0x6F, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_29[]  = { 0x6F, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_30[]  = { 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_31[]  = { 0x73, 0x74, 0x6F, 0x72, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_32[]  = { 0x78, 0x6F, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_33[]  = { 0x42, 0x69, 0x74, 0x56, 0x65, 0x63,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_34[]  = { 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_35[]  = { 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_36[]  = { 0x62, 0x76, 0x61, 0x6E, 0x64,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_37[]  = { 0x62, 0x76, 0x6F, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_38[]  = { 0x62, 0x76, 0x78, 0x6F, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_39[]  = { 0x62, 0x76, 0x6E, 0x6F, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_40[]  = { 0x62, 0x76, 0x6E, 0x61, 0x6E, 0x64,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_41[]  = { 0x62, 0x76, 0x6E, 0x6F, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_42[]  = { 0x62, 0x76, 0x78, 0x6E, 0x6F, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_43[]  = { 0x62, 0x76, 0x63, 0x6F, 0x6D, 0x70,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_44[]  = { 0x62, 0x76, 0x6D, 0x75, 0x6C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_45[]  = { 0x62, 0x76, 0x61, 0x64, 0x64,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_46[]  = { 0x62, 0x76, 0x73, 0x75, 0x62,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_47[]  = { 0x62, 0x76, 0x6E, 0x65, 0x67,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_48[]  = { 0x62, 0x76, 0x75, 0x64, 0x69, 0x76,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_49[]  = { 0x62, 0x76, 0x75, 0x72, 0x65, 0x6D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_50[]  = { 0x62, 0x76, 0x73, 0x64, 0x69, 0x76,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_51[]  = { 0x62, 0x76, 0x73, 0x72, 0x65, 0x6D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_52[]  = { 0x62, 0x76, 0x73, 0x6D, 0x6F, 0x64,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_53[]  = { 0x62, 0x76, 0x73, 0x68, 0x6C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_54[]  = { 0x62, 0x76, 0x6C, 0x73, 0x68, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_55[]  = { 0x62, 0x76, 0x61, 0x73, 0x68, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_56[]  = { 0x62, 0x76, 0x75, 0x6C, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_57[]  = { 0x62, 0x76, 0x75, 0x6C, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_58[]  = { 0x62, 0x76, 0x75, 0x67, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_59[]  = { 0x62, 0x76, 0x75, 0x67, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_60[]  = { 0x62, 0x76, 0x73, 0x6C, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_61[]  = { 0x62, 0x76, 0x73, 0x6C, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_62[]  = { 0x62, 0x76, 0x73, 0x67, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_63[]  = { 0x62, 0x76, 0x73, 0x67, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_64[]  = { 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_65[]  = { 0x7A, 0x65, 0x72, 0x6F, 0x5F, 0x65, 0x78, 0x74, 0x65, 0x6E, 0x64,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_66[]  = { 0x73, 0x69, 0x67, 0x6E, 0x5F, 0x65, 0x78, 0x74, 0x65, 0x6E, 0x64,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_67[]  = { 0x72, 0x6F, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x6C, 0x65, 0x66, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_68[]  = { 0x72, 0x6F, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x72, 0x69, 0x67, 0x68, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_69[]  = { 0x62, 0x76,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_70[]  = { 0x62, 0x69, 0x74, 0x30,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_71[]  = { 0x62, 0x69, 0x74, 0x31,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_72[]  = { 0x5C, 0x7B,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_73[]  = { 0x5C, 0x7D,  ANTLR3_STRING_TERMINATOR};
+
+
+
+
+
+/* MACROS that hide the C interface implementations from the
+ * generated code, which makes it a little more understandable to the human eye.
+ * I am very much against using C pre-processor macros for function calls and bits
+ * of code as you cannot see what is happening when single stepping in debuggers
+ * and so on. The exception (in my book at least) is for generated code, where you are
+ * not maintaining it, but may wish to read and understand it. If you single step it, you know that input()
+ * hides some indirect calls, but is always referring to the input stream. This is
+ * probably more readable than ctx->input->istream->input(snarfle0->blarg) and allows me to rejig
+ * the runtime interfaces without changing the generated code too often, without
+ * confusing the reader of the generated output, who may not wish to know the gory
+ * details of the interface inheritance.
+ */
+
+#define		CTX	ctx
+
+/* Aids in accessing scopes for grammar programmers
+ */
+#undef	SCOPE_TYPE
+#undef	SCOPE_STACK
+#undef	SCOPE_TOP
+#define	SCOPE_TYPE(scope)   pSmt1Lexer_##scope##_SCOPE
+#define SCOPE_STACK(scope)  pSmt1Lexer_##scope##Stack
+#define	SCOPE_TOP(scope)    ctx->pSmt1Lexer_##scope##Top
+#define	SCOPE_SIZE(scope)		ctx->pSmt1Lexer_##scope##Stack_limit
+#define SCOPE_INSTANCE(scope, i)	(ctx->SCOPE_STACK(scope)->get(ctx->SCOPE_STACK(scope),i))
+
+
+/* Macros for accessing things in a lexer
+ */
+#undef	    LEXER
+#undef	    RECOGNIZER
+#undef	    RULEMEMO
+#undef	    GETCHARINDEX
+#undef	    GETLINE
+#undef	    GETCHARPOSITIONINLINE
+#undef	    EMIT
+#undef	    EMITNEW
+#undef	    MATCHC
+#undef	    MATCHS
+#undef	    MATCHRANGE
+#undef	    LTOKEN
+#undef	    HASFAILED
+#undef	    FAILEDFLAG
+#undef	    INPUT
+#undef	    STRSTREAM
+#undef	    LA
+#undef	    HASEXCEPTION
+#undef	    EXCEPTION
+#undef	    CONSTRUCTEX
+#undef	    CONSUME
+#undef	    LRECOVER
+#undef	    MARK
+#undef	    REWIND
+#undef	    REWINDLAST
+#undef	    BACKTRACKING
+#undef		MATCHANY
+#undef		MEMOIZE
+#undef		HAVEPARSEDRULE
+#undef		GETTEXT
+#undef		INDEX
+#undef		SEEK
+#undef		PUSHSTREAM
+#undef		POPSTREAM
+#undef		SETTEXT
+#undef		SETTEXT8
+
+#define	    LEXER					ctx->pLexer
+#define	    RECOGNIZER			    LEXER->rec
+#define		LEXSTATE				RECOGNIZER->state
+#define		TOKSOURCE				LEXSTATE->tokSource
+#define	    GETCHARINDEX()			LEXER->getCharIndex(LEXER)
+#define	    GETLINE()				LEXER->getLine(LEXER)
+#define	    GETTEXT()				LEXER->getText(LEXER)
+#define	    GETCHARPOSITIONINLINE() LEXER->getCharPositionInLine(LEXER)
+#define	    EMIT()					LEXSTATE->type = _type; LEXER->emit(LEXER)
+#define	    EMITNEW(t)				LEXER->emitNew(LEXER, t)
+#define	    MATCHC(c)				LEXER->matchc(LEXER, c)
+#define	    MATCHS(s)				LEXER->matchs(LEXER, s)
+#define	    MATCHRANGE(c1,c2)	    LEXER->matchRange(LEXER, c1, c2)
+#define	    MATCHANY()				LEXER->matchAny(LEXER)
+#define	    LTOKEN  				LEXSTATE->token
+#define	    HASFAILED()				(LEXSTATE->failed == ANTLR3_TRUE)
+#define	    BACKTRACKING			LEXSTATE->backtracking
+#define	    FAILEDFLAG				LEXSTATE->failed
+#define	    INPUT					LEXER->input
+#define	    STRSTREAM				INPUT
+#define		ISTREAM					INPUT->istream
+#define		INDEX()					ISTREAM->index(ISTREAM)
+#define		SEEK(n)					ISTREAM->seek(ISTREAM, n)
+#define	    EOF_TOKEN				&(LEXSTATE->tokSource->eofToken)
+#define	    HASEXCEPTION()			(LEXSTATE->error == ANTLR3_TRUE)
+#define	    EXCEPTION				LEXSTATE->exception
+#define	    CONSTRUCTEX()			RECOGNIZER->exConstruct(RECOGNIZER)
+#define	    LRECOVER()				LEXER->recover(LEXER)
+#define	    MARK()					ISTREAM->mark(ISTREAM)
+#define	    REWIND(m)				ISTREAM->rewind(ISTREAM, m)
+#define	    REWINDLAST()			ISTREAM->rewindLast(ISTREAM)
+#define		MEMOIZE(ri,si)			RECOGNIZER->memoize(RECOGNIZER, ri, si)
+#define		HAVEPARSEDRULE(r)		RECOGNIZER->alreadyParsedRule(RECOGNIZER, r)
+#define		PUSHSTREAM(str)			LEXER->pushCharStream(LEXER, str)
+#define		POPSTREAM()				LEXER->popCharStream(LEXER)
+#define		SETTEXT(str)			LEXSTATE->text = str
+#define		SKIP()					LEXSTATE->token = &(TOKSOURCE->skipToken)
+#define		USER1					LEXSTATE->user1
+#define		USER2					LEXSTATE->user2
+#define		USER3					LEXSTATE->user3
+#define		CUSTOM					LEXSTATE->custom
+#define		RULEMEMO				LEXSTATE->ruleMemo
+#define		DBG						RECOGNIZER->debugger
+
+/* If we have been told we can rely on the standard 8 bit or UTF16 input
+ * stream, then we can define our macros to use the direct pointers
+ * in the input object, which is much faster than indirect calls. This
+ * is really only significant to lexers with a lot of fragment rules (which
+ * do not place LA(1) in a temporary at the moment) and even then
+ * only if there is a lot of input (order of say 1M or so).
+ */
+#if	defined(ANTLR3_INLINE_INPUT_8BIT) || defined(ANTLR3_INLINE_INPUT_UTF16)
+
+# ifdef	ANTLR3_INLINE_INPUT_8BIT
+
+/* 8 bit character set */
+
+#  define	    NEXTCHAR	((pANTLR3_UINT8)(INPUT->nextChar))
+#  define	    DATAP	((pANTLR3_UINT8)(INPUT->data))
+
+# else
+
+#  define	    NEXTCHAR	((pANTLR3_UINT16)(INPUT->nextChar))
+#  define	    DATAP	((pANTLR3_UINT16)(INPUT->data))
+
+# endif
+
+# define	    LA(n) ((NEXTCHAR + n) > (DATAP + INPUT->sizeBuf) ? ANTLR3_CHARSTREAM_EOF : (ANTLR3_UCHAR)(*(NEXTCHAR + n - 1)))
+# define            CONSUME()                                           \
+{                                                                       \
+    if        (NEXTCHAR < (DATAP + INPUT->sizeBuf))                     \
+    {                                                                   \
+        INPUT->charPositionInLine++;                                    \
+        if  ((ANTLR3_UCHAR)(*NEXTCHAR) == INPUT->newlineChar)           \
+        {                                                               \
+            INPUT->line++;                                              \
+            INPUT->charPositionInLine        = 0;                       \
+            INPUT->currentLine                = (void *)(NEXTCHAR + 1); \
+        }                                                               \
+        INPUT->nextChar = (void *)(NEXTCHAR + 1);                       \
+    }                                                                   \
+}
+
+#else
+
+// Pick up the input character by calling the input stream implementation.
+//
+#define	    CONSUME()   INPUT->istream->consume(INPUT->istream)
+#define	    LA(n)       INPUT->istream->_LA(INPUT->istream, n)
+
+#endif
+
+#define		TOKTEXT(tok, txt)				tok, (pANTLR3_UINT8)txt
+
+/* The 4 tokens defined below may well clash with your own #defines or token types. If so
+ * then for the present you must use different names for your defines as these are hard coded
+ * in the code generator. It would be better not to use such names internally, and maybe
+ * we can change this in a forthcoming release. I deliberately do not #undef these
+ * here as this will at least give you a redefined error somewhere if they clash.
+ */
+#define	    UP	    ANTLR3_TOKEN_UP
+#define	    DOWN    ANTLR3_TOKEN_DOWN
+#define	    EOR	    ANTLR3_TOKEN_EOR
+#define	    INVALID ANTLR3_TOKEN_INVALID
+
+
+/* =============================================================================
+ * Functions to create and destroy scopes. First come the rule scopes, followed
+ * by the global declared scopes.
+ */
+
+
+
+/* ============================================================================= */
+
+/* =============================================================================
+ * Start of recognizer
+ */
+
+/* Forward declare the locally static matching functions we have generated and any predicate functions.
+ */
+static ANTLR3_INLINE 
+ void
+	mT__100    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__101    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__102    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__103    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__104    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__105    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mASSUMPTION_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBENCHMARK_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mEXTRAFUNS_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mEXTRAPREDS_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mEXTRASORTS_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFALSE_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFLET_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFORMULA_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mITE_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLET_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLOGIC_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLPAREN_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mNOTES_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mRPAREN_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSAT_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTATUS_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTHEORY_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTRUE_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mUNKNOWN_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mUNSAT_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mAMPERSAND_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mAND_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mAT_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDISTINCT_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDIV_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mEQUAL_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mEXISTS_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFORALL_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mGREATER_THAN_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mIFF_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mIMPLIES_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLESS_THAN_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mMINUS_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mNOT_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mOR_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPERCENT_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPIPE_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPLUS_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPOUND_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSELECT_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTAR_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTORE_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTILDE_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mXOR_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBITVECTOR_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCONCAT_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mEXTRACT_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVAND_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVOR_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVXOR_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVNOT_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVNAND_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVNOR_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVXNOR_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVCOMP_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVMUL_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVADD_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVSUB_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVNEG_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVUDIV_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVUREM_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVSDIV_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVSREM_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVSMOD_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVSHL_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVLSHR_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVASHR_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVULT_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVULE_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVUGT_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVUGE_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVSLT_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVSLE_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVSGT_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBVSGE_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mREPEAT_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mZERO_EXTEND_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSIGN_EXTEND_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mROTATE_LEFT_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mROTATE_RIGHT_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBITVECTOR_BV_CONST    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBITVECTOR1_BV_CONST    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mIDENTIFIER    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mATTR_IDENTIFIER    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLET_IDENTIFIER    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFLET_IDENTIFIER    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPATTERN_ANNOTATION_BEGIN    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mUSER_VALUE    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mWHITESPACE    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mNUMERAL_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mRATIONAL_TOK    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTRING_LITERAL    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCOMMENT    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mALPHA    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDIGIT    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mESCAPE    (pSmt1Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTokens    (pSmt1Lexer ctx);
+static void	Smt1LexerFree(pSmt1Lexer ctx);
+
+/* =========================================================================
+ * Lexer matching rules end.
+ * =========================================================================
+ */
+
+
+
+static void
+Smt1LexerFree  (pSmt1Lexer ctx)
+{
+    LEXER->free(LEXER);
+
+    ANTLR3_FREE(ctx);
+}
+
+static void
+Smt1LexerReset (pSmt1Lexer ctx)
+{
+    RECOGNIZER->reset(RECOGNIZER);
+}
+
+/** \brief Name of the grammar file that generated this code
+ */
+static const char fileName[] = "../../../../../../src/parser/smt1/Smt1.g";
+
+/** \brief Return the name of the grammar file that generated this code.
+ */
+static const char * getGrammarFileName()
+{
+	return fileName;
+}
+
+/** \brief Create a new lexer called Smt1Lexer
+ *
+ * \param[in]    instream Pointer to an initialized input stream
+ * \return
+ *     - Success pSmt1Lexer initialized for the lex start
+ *     - Fail NULL
+ */
+ANTLR3_API pSmt1Lexer Smt1LexerNew
+(
+pANTLR3_INPUT_STREAM
+ instream)
+{
+	// See if we can create a new lexer with the standard constructor
+	//
+	return Smt1LexerNewSSD(instream, NULL);
+}
+
+/** \brief Create a new lexer called Smt1Lexer
+ *
+ * \param[in]    instream Pointer to an initialized input stream
+ * \param[state] state Previously created shared recognizer stat
+ * \return
+ *     - Success pSmt1Lexer initialized for the lex start
+ *     - Fail NULL
+ */
+ANTLR3_API pSmt1Lexer Smt1LexerNewSSD
+(pANTLR3_INPUT_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state)
+{
+    pSmt1Lexer ctx; // Context structure we will build and return
+
+    ctx = (pSmt1Lexer) ANTLR3_CALLOC(1, sizeof(Smt1Lexer));
+
+    if  (ctx == NULL)
+    {
+        // Failed to allocate memory for lexer context
+        return  NULL;
+    }
+
+    /* -------------------------------------------------------------------
+     * Memory for basic structure is allocated, now to fill in
+     * in base ANTLR3 structures. We initialize the function pointers
+     * for the standard ANTLR3 lexer function set, but upon return
+     * from here, the programmer may set the pointers to provide custom
+     * implementations of each function.
+     *
+     * We don't use the macros defined in Smt1Lexer.h here so you can get a sense
+     * of what goes where.
+     */
+
+    /* Create a base lexer, using the supplied input stream
+     */
+    ctx->pLexer	= antlr3LexerNewStream(ANTLR3_SIZE_HINT, instream, state);
+
+    /* Check that we allocated the memory correctly
+     */
+    if	(ctx->pLexer == NULL)
+    {
+		ANTLR3_FREE(ctx);
+		return  NULL;
+    }
+    /* Install the implementation of our Smt1Lexer interface
+     */
+    ctx->mT__100	= mT__100;
+    ctx->mT__101	= mT__101;
+    ctx->mT__102	= mT__102;
+    ctx->mT__103	= mT__103;
+    ctx->mT__104	= mT__104;
+    ctx->mT__105	= mT__105;
+    ctx->mASSUMPTION_TOK	= mASSUMPTION_TOK;
+    ctx->mBENCHMARK_TOK	= mBENCHMARK_TOK;
+    ctx->mEXTRAFUNS_TOK	= mEXTRAFUNS_TOK;
+    ctx->mEXTRAPREDS_TOK	= mEXTRAPREDS_TOK;
+    ctx->mEXTRASORTS_TOK	= mEXTRASORTS_TOK;
+    ctx->mFALSE_TOK	= mFALSE_TOK;
+    ctx->mFLET_TOK	= mFLET_TOK;
+    ctx->mFORMULA_TOK	= mFORMULA_TOK;
+    ctx->mITE_TOK	= mITE_TOK;
+    ctx->mLET_TOK	= mLET_TOK;
+    ctx->mLOGIC_TOK	= mLOGIC_TOK;
+    ctx->mLPAREN_TOK	= mLPAREN_TOK;
+    ctx->mNOTES_TOK	= mNOTES_TOK;
+    ctx->mRPAREN_TOK	= mRPAREN_TOK;
+    ctx->mSAT_TOK	= mSAT_TOK;
+    ctx->mSTATUS_TOK	= mSTATUS_TOK;
+    ctx->mTHEORY_TOK	= mTHEORY_TOK;
+    ctx->mTRUE_TOK	= mTRUE_TOK;
+    ctx->mUNKNOWN_TOK	= mUNKNOWN_TOK;
+    ctx->mUNSAT_TOK	= mUNSAT_TOK;
+    ctx->mAMPERSAND_TOK	= mAMPERSAND_TOK;
+    ctx->mAND_TOK	= mAND_TOK;
+    ctx->mAT_TOK	= mAT_TOK;
+    ctx->mDISTINCT_TOK	= mDISTINCT_TOK;
+    ctx->mDIV_TOK	= mDIV_TOK;
+    ctx->mEQUAL_TOK	= mEQUAL_TOK;
+    ctx->mEXISTS_TOK	= mEXISTS_TOK;
+    ctx->mFORALL_TOK	= mFORALL_TOK;
+    ctx->mGREATER_THAN_TOK	= mGREATER_THAN_TOK;
+    ctx->mIFF_TOK	= mIFF_TOK;
+    ctx->mIMPLIES_TOK	= mIMPLIES_TOK;
+    ctx->mLESS_THAN_TOK	= mLESS_THAN_TOK;
+    ctx->mMINUS_TOK	= mMINUS_TOK;
+    ctx->mNOT_TOK	= mNOT_TOK;
+    ctx->mOR_TOK	= mOR_TOK;
+    ctx->mPERCENT_TOK	= mPERCENT_TOK;
+    ctx->mPIPE_TOK	= mPIPE_TOK;
+    ctx->mPLUS_TOK	= mPLUS_TOK;
+    ctx->mPOUND_TOK	= mPOUND_TOK;
+    ctx->mSELECT_TOK	= mSELECT_TOK;
+    ctx->mSTAR_TOK	= mSTAR_TOK;
+    ctx->mSTORE_TOK	= mSTORE_TOK;
+    ctx->mTILDE_TOK	= mTILDE_TOK;
+    ctx->mXOR_TOK	= mXOR_TOK;
+    ctx->mBITVECTOR_TOK	= mBITVECTOR_TOK;
+    ctx->mCONCAT_TOK	= mCONCAT_TOK;
+    ctx->mEXTRACT_TOK	= mEXTRACT_TOK;
+    ctx->mBVAND_TOK	= mBVAND_TOK;
+    ctx->mBVOR_TOK	= mBVOR_TOK;
+    ctx->mBVXOR_TOK	= mBVXOR_TOK;
+    ctx->mBVNOT_TOK	= mBVNOT_TOK;
+    ctx->mBVNAND_TOK	= mBVNAND_TOK;
+    ctx->mBVNOR_TOK	= mBVNOR_TOK;
+    ctx->mBVXNOR_TOK	= mBVXNOR_TOK;
+    ctx->mBVCOMP_TOK	= mBVCOMP_TOK;
+    ctx->mBVMUL_TOK	= mBVMUL_TOK;
+    ctx->mBVADD_TOK	= mBVADD_TOK;
+    ctx->mBVSUB_TOK	= mBVSUB_TOK;
+    ctx->mBVNEG_TOK	= mBVNEG_TOK;
+    ctx->mBVUDIV_TOK	= mBVUDIV_TOK;
+    ctx->mBVUREM_TOK	= mBVUREM_TOK;
+    ctx->mBVSDIV_TOK	= mBVSDIV_TOK;
+    ctx->mBVSREM_TOK	= mBVSREM_TOK;
+    ctx->mBVSMOD_TOK	= mBVSMOD_TOK;
+    ctx->mBVSHL_TOK	= mBVSHL_TOK;
+    ctx->mBVLSHR_TOK	= mBVLSHR_TOK;
+    ctx->mBVASHR_TOK	= mBVASHR_TOK;
+    ctx->mBVULT_TOK	= mBVULT_TOK;
+    ctx->mBVULE_TOK	= mBVULE_TOK;
+    ctx->mBVUGT_TOK	= mBVUGT_TOK;
+    ctx->mBVUGE_TOK	= mBVUGE_TOK;
+    ctx->mBVSLT_TOK	= mBVSLT_TOK;
+    ctx->mBVSLE_TOK	= mBVSLE_TOK;
+    ctx->mBVSGT_TOK	= mBVSGT_TOK;
+    ctx->mBVSGE_TOK	= mBVSGE_TOK;
+    ctx->mREPEAT_TOK	= mREPEAT_TOK;
+    ctx->mZERO_EXTEND_TOK	= mZERO_EXTEND_TOK;
+    ctx->mSIGN_EXTEND_TOK	= mSIGN_EXTEND_TOK;
+    ctx->mROTATE_LEFT_TOK	= mROTATE_LEFT_TOK;
+    ctx->mROTATE_RIGHT_TOK	= mROTATE_RIGHT_TOK;
+    ctx->mBITVECTOR_BV_CONST	= mBITVECTOR_BV_CONST;
+    ctx->mBITVECTOR1_BV_CONST	= mBITVECTOR1_BV_CONST;
+    ctx->mIDENTIFIER	= mIDENTIFIER;
+    ctx->mATTR_IDENTIFIER	= mATTR_IDENTIFIER;
+    ctx->mLET_IDENTIFIER	= mLET_IDENTIFIER;
+    ctx->mFLET_IDENTIFIER	= mFLET_IDENTIFIER;
+    ctx->mPATTERN_ANNOTATION_BEGIN	= mPATTERN_ANNOTATION_BEGIN;
+    ctx->mUSER_VALUE	= mUSER_VALUE;
+    ctx->mWHITESPACE	= mWHITESPACE;
+    ctx->mNUMERAL_TOK	= mNUMERAL_TOK;
+    ctx->mRATIONAL_TOK	= mRATIONAL_TOK;
+    ctx->mSTRING_LITERAL	= mSTRING_LITERAL;
+    ctx->mCOMMENT	= mCOMMENT;
+    ctx->mALPHA	= mALPHA;
+    ctx->mDIGIT	= mDIGIT;
+    ctx->mESCAPE	= mESCAPE;
+    ctx->mTokens	= mTokens;
+
+    /** When the nextToken() call is made to this lexer's pANTLR3_TOKEN_SOURCE
+     *  it will call mTokens() in this generated code, and will pass it the ctx
+     * pointer of this lexer, not the context of the base lexer, so store that now.
+     */
+    ctx->pLexer->ctx	    = ctx;
+
+    /**Install the token matching function
+     */
+    ctx->pLexer->mTokens = (void (*) (void *))(mTokens);
+
+    ctx->getGrammarFileName	= getGrammarFileName;
+    ctx->free		= Smt1LexerFree;
+    ctx->reset          = Smt1LexerReset;
+
+
+    /* Return the newly built lexer to the caller
+     */
+    return  ctx;
+}
+
+/* =========================================================================
+ * DFA tables for the lexer
+ */
+/** Static dfa state tables for Cyclic dfa:
+ *    1:1: Tokens : ( T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | ASSUMPTION_TOK | BENCHMARK_TOK | EXTRAFUNS_TOK | EXTRAPREDS_TOK | EXTRASORTS_TOK | FALSE_TOK | FLET_TOK | FORMULA_TOK | ITE_TOK | LET_TOK | LOGIC_TOK | LPAREN_TOK | NOTES_TOK | RPAREN_TOK | SAT_TOK | STATUS_TOK | THEORY_TOK | TRUE_TOK | UNKNOWN_TOK | UNSAT_TOK | AMPERSAND_TOK | AND_TOK | AT_TOK | DISTINCT_TOK | DIV_TOK | EQUAL_TOK | EXISTS_TOK | FORALL_TOK | GREATER_THAN_TOK | IFF_TOK | IMPLIES_TOK | LESS_THAN_TO [...]
+ */
+static const ANTLR3_INT32 dfa13_eot[398] =
+    {
+	-1, 53, 38, -1, -1, -1, 38, 38, 38, 38, -1, -1, 38, 38, 38, -1, 38, -1, 
+	38, -1, -1, 38, -1, -1, -1, 38, 38, -1, -1, -1, -1, -1, -1, 38, 38, 38, 
+	38, 38, -1, -1, -1, -1, -1, 84, -1, -1, 54, 54, 54, 54, 54, 54, 54, -1, 
+	-1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 
+	38, 38, 38, 38, 38, 127, 38, 38, 38, 38, 38, 38, -1, -1, 54, 54, 54, 54, 
+	54, 54, 54, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 166, 38, 38, 38, 
+	38, 172, 38, 174, 38, 176, 177, 38, 38, 38, 38, 38, 38, 38, 185, 38, 38, 
+	38, 189, -1, 190, 38, 38, 38, 38, 38, 196, 54, 54, 54, 54, 54, 54, 38, 
+	38, 38, 38, 38, 209, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 
+	38, 38, 38, 38, 38, 38, -1, 234, 234, 38, 236, 38, -1, 38, -1, 38, -1, 
+	-1, 38, 38, 38, 38, 244, 38, 38, -1, 38, 38, 38, -1, -1, 38, 38, 38, 38, 
+	38, -1, -1, 54, 54, 54, 54, 54, 54, 38, 38, 263, 264, 38, -1, 266, 38, 
+	268, 269, 38, 271, 38, 273, 274, 38, 38, 38, 278, 279, 280, 281, 282, 38, 
+	38, 285, 286, 287, 288, 38, -1, 290, -1, 38, 38, 38, 38, 295, 38, 38, -1, 
+	38, 299, 38, 38, 38, 38, 38, 38, 38, 38, 54, 54, 54, 313, 314, 54, -1, 
+	38, -1, -1, 317, -1, 318, -1, -1, 319, -1, 320, -1, -1, 321, 322, 323, 
+	-1, -1, -1, -1, -1, 324, 325, -1, -1, -1, -1, 326, -1, 327, 38, 38, 330, 
+	-1, 38, 332, 38, -1, 38, 335, 38, 337, 338, 339, 38, 38, 54, 54, 54, 54, 
+	54, -1, -1, 347, 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, 350, 
+	-1, 38, -1, 352, 38, -1, 354, -1, -1, -1, 38, 38, 54, 54, 54, 54, 362, 
+	-1, 38, 38, -1, 38, -1, 366, -1, 38, 38, 38, 54, 54, 54, 54, -1, 374, 38, 
+	38, -1, 38, 38, 38, 54, 381, 54, 54, -1, 38, 38, 38, 38, 38, 389, -1, 390, 
+	391, 38, 393, 394, 38, 396, -1, -1, -1, 172, -1, -1, 397, -1, -1
+    };
+static const ANTLR3_INT32 dfa13_eof[398] =
+    {
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1
+    };
+static const ANTLR3_INT32 dfa13_min[398] =
+    {
+	9, 65, 114, -1, -1, -1, 101, 97, 102, 101, -1, -1, 97, 104, 110, -1, 110, 
+	-1, 105, -1, -1, 120, -1, -1, -1, 111, 114, -1, -1, -1, -1, -1, -1, 111, 
+	105, 111, 101, 101, -1, -1, -1, -1, -1, 46, -1, -1, 97, 115, 120, 111, 
+	111, 111, 116, -1, -1, 114, 110, 48, 116, 108, 101, 114, 101, 95, 112, 
+	116, 116, 108, 111, 103, 101, 117, 107, 100, 115, 105, 116, 39, 114, 116, 
+	110, 112, 116, 114, -1, -1, 116, 115, 116, 114, 103, 116, 97, 97, 99, 100, 
+	114, 110, 97, 111, 117, 100, 100, 115, 39, 48, 115, 116, 97, 39, 116, 39, 
+	108, 39, 39, 101, 114, 110, 111, 101, 110, 97, 39, 116, 115, 114, 39, -1, 
+	39, 86, 99, 101, 97, 111, 9, 117, 114, 109, 105, 101, 116, 121, 104, 100, 
+	100, 104, 39, 114, 111, 114, 110, 103, 109, 108, 98, 105, 101, 111, 108, 
+	101, 101, 105, 101, 101, 101, 104, -1, 39, 39, 101, 39, 108, -1, 104, -1, 
+	105, -1, -1, 99, 101, 95, 114, 39, 111, 116, -1, 105, 116, 97, -1, -1, 
+	101, 97, 97, 116, 95, -1, -1, 109, 97, 117, 99, 115, 117, 91, 109, 39, 
+	39, 114, -1, 39, 114, 39, 39, 100, 39, 112, 39, 39, 118, 109, 100, 39, 
+	39, 39, 39, 39, 118, 109, 39, 39, 39, 39, 114, -1, 39, -1, 108, 101, 101, 
+	116, 39, 101, 121, -1, 119, 39, 110, 115, 99, 99, 116, 116, 101, 101, 112, 
+	102, 108, 39, 39, 115, -1, 97, -1, -1, 39, -1, 39, -1, -1, 39, -1, 39, 
+	-1, -1, 39, 39, 39, -1, -1, -1, -1, -1, 39, 39, -1, -1, -1, -1, 39, -1, 
+	39, 110, 115, 39, -1, 120, 39, 110, -1, 99, 39, 116, 39, 39, 39, 95, 120, 
+	116, 117, 114, 111, 97, -1, -1, 39, 114, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, 95, 39, -1, 116, -1, 39, 116, -1, 39, -1, -1, -1, 108, 116, 
+	105, 110, 101, 114, 39, -1, 107, 101, -1, 101, -1, 39, -1, 101, 105, 101, 
+	111, 115, 100, 116, -1, 39, 108, 110, -1, 102, 103, 110, 110, 39, 115, 
+	115, -1, 115, 100, 116, 104, 100, 39, -1, 39, 39, 101, 39, 39, 116, 39, 
+	-1, -1, -1, 39, -1, -1, 39, -1, -1
+    };
+static const ANTLR3_INT32 dfa13_max[398] =
+    {
+	126, 122, 114, -1, -1, -1, 118, 111, 116, 101, -1, -1, 116, 114, 110, -1, 
+	110, -1, 105, -1, -1, 120, -1, -1, -1, 111, 114, -1, -1, -1, -1, -1, -1, 
+	111, 105, 111, 111, 101, -1, -1, -1, -1, -1, 57, -1, -1, 97, 115, 120, 
+	111, 111, 111, 116, -1, -1, 114, 110, 120, 116, 108, 101, 114, 101, 102, 
+	112, 116, 116, 108, 111, 103, 101, 117, 115, 100, 115, 116, 116, 122, 114, 
+	116, 110, 112, 116, 114, -1, -1, 116, 115, 116, 114, 103, 116, 97, 97, 
+	99, 115, 114, 111, 111, 111, 117, 117, 114, 115, 122, 49, 115, 116, 97, 
+	122, 116, 122, 108, 122, 122, 101, 114, 110, 111, 101, 110, 97, 122, 116, 
+	115, 114, 122, -1, 122, 86, 99, 101, 97, 111, 123, 117, 114, 109, 105, 
+	101, 116, 121, 104, 100, 100, 104, 122, 114, 111, 116, 110, 103, 109, 108, 
+	98, 105, 101, 111, 108, 116, 116, 105, 101, 116, 116, 104, -1, 122, 122, 
+	101, 122, 108, -1, 104, -1, 105, -1, -1, 99, 101, 95, 114, 122, 111, 116, 
+	-1, 105, 116, 97, -1, -1, 101, 97, 97, 116, 95, -1, -1, 109, 97, 117, 99, 
+	115, 117, 91, 109, 122, 122, 114, -1, 122, 114, 122, 122, 100, 122, 112, 
+	122, 122, 118, 109, 100, 122, 122, 122, 122, 122, 118, 109, 122, 122, 122, 
+	122, 114, -1, 122, -1, 108, 101, 101, 116, 122, 101, 121, -1, 119, 122, 
+	110, 115, 99, 99, 116, 116, 101, 101, 112, 115, 108, 122, 122, 115, -1, 
+	97, -1, -1, 122, -1, 122, -1, -1, 122, -1, 122, -1, -1, 122, 122, 122, 
+	-1, -1, -1, -1, -1, 122, 122, -1, -1, -1, -1, 122, -1, 122, 110, 115, 122, 
+	-1, 120, 122, 110, -1, 99, 122, 116, 122, 122, 122, 95, 120, 116, 117, 
+	114, 111, 97, -1, -1, 122, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, 95, 122, -1, 116, -1, 122, 116, -1, 122, -1, -1, -1, 114, 116, 105, 
+	110, 101, 114, 122, -1, 107, 101, -1, 101, -1, 122, -1, 101, 105, 101, 
+	111, 115, 100, 116, -1, 122, 108, 110, -1, 102, 103, 110, 110, 122, 115, 
+	115, -1, 115, 100, 116, 104, 100, 122, -1, 122, 122, 101, 122, 122, 116, 
+	122, -1, -1, -1, 122, -1, -1, 122, -1, -1
+    };
+static const ANTLR3_INT32 dfa13_accept[398] =
+    {
+	-1, -1, -1, 4, 5, 6, -1, -1, -1, -1, 18, 20, -1, -1, -1, 27, -1, 29, -1, 
+	31, 32, -1, 35, 38, 39, -1, -1, 42, 43, 44, 45, 47, 49, -1, -1, -1, -1, 
+	-1, 89, 91, 92, 94, 95, -1, 98, 99, -1, -1, -1, -1, -1, -1, -1, 1, 90, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 96, 97, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, 87, -1, -1, -1, -1, -1, 15, -1, 36, -1, 16, 21, -1, -1, -1, 
+	-1, -1, -1, -1, 28, -1, -1, -1, 40, 50, -1, -1, -1, -1, -1, 2, 93, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 55, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, 
+	-1, 13, -1, -1, -1, -1, -1, -1, -1, 24, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, 3, -1, 54, 63, -1, 56, -1, 57, 59, -1, 
+	65, -1, 62, 64, -1, -1, -1, 71, 78, 79, 80, 81, -1, -1, 74, 75, 76, 77, 
+	-1, 12, -1, -1, -1, -1, 48, -1, -1, -1, 26, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, 17, 19, -1, -1, 73, 60, 58, 61, 68, 69, 70, 66, 
+	67, 72, 34, -1, -1, 46, -1, 23, -1, -1, 33, -1, 51, 52, 82, -1, -1, -1, 
+	-1, -1, -1, -1, 22, -1, -1, 37, -1, 25, -1, 53, -1, -1, -1, -1, -1, -1, 
+	-1, 14, -1, -1, -1, 30, -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, -1, -1, 
+	-1, -1, 9, -1, -1, -1, -1, -1, -1, -1, 7, 10, 11, -1, 84, 85, -1, 83, 86
+    };
+static const ANTLR3_INT32 dfa13_special[398] =
+    {
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1
+    };
+
+/** Used when there is no transition table entry for a particular state */
+#define dfa13_T_empty	    NULL
+
+static const ANTLR3_INT32 dfa13_T0[] =
+    {
+	333
+    };
+
+static const ANTLR3_INT32 dfa13_T1[] =
+    {
+	184
+    };
+
+static const ANTLR3_INT32 dfa13_T2[] =
+    {
+	246
+    };
+
+static const ANTLR3_INT32 dfa13_T3[] =
+    {
+	135
+    };
+
+static const ANTLR3_INT32 dfa13_T4[] =
+    {
+	198
+    };
+
+static const ANTLR3_INT32 dfa13_T5[] =
+    {
+	255
+    };
+
+static const ANTLR3_INT32 dfa13_T6[] =
+    {
+	38, -1, -1, -1, -1, -1, -1, 38, -1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 
+	38, -1, -1, -1, -1, -1, -1, -1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 
+	38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, -1, -1, 
+	-1, -1, 38, -1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 
+	38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38
+    };
+
+static const ANTLR3_INT32 dfa13_T7[] =
+    {
+	308
+    };
+
+static const ANTLR3_INT32 dfa13_T8[] =
+    {
+	342
+    };
+
+static const ANTLR3_INT32 dfa13_T9[] =
+    {
+	358
+    };
+
+static const ANTLR3_INT32 dfa13_T10[] =
+    {
+	370
+    };
+
+static const ANTLR3_INT32 dfa13_T11[] =
+    {
+	380
+    };
+
+static const ANTLR3_INT32 dfa13_T12[] =
+    {
+	122
+    };
+
+static const ANTLR3_INT32 dfa13_T13[] =
+    {
+	86
+    };
+
+static const ANTLR3_INT32 dfa13_T14[] =
+    {
+	123
+    };
+
+static const ANTLR3_INT32 dfa13_T15[] =
+    {
+	161, -1, -1, 164, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, 162
+    };
+
+static const ANTLR3_INT32 dfa13_T16[] =
+    {
+	186
+    };
+
+static const ANTLR3_INT32 dfa13_T17[] =
+    {
+	247
+    };
+
+static const ANTLR3_INT32 dfa13_T18[] =
+    {
+	300
+    };
+
+static const ANTLR3_INT32 dfa13_T19[] =
+    {
+	334
+    };
+
+static const ANTLR3_INT32 dfa13_T20[] =
+    {
+	353
+    };
+
+static const ANTLR3_INT32 dfa13_T21[] =
+    {
+	343
+    };
+
+static const ANTLR3_INT32 dfa13_T22[] =
+    {
+	359
+    };
+
+static const ANTLR3_INT32 dfa13_T23[] =
+    {
+	371
+    };
+
+static const ANTLR3_INT32 dfa13_T24[] =
+    {
+	65
+    };
+
+static const ANTLR3_INT32 dfa13_T25[] =
+    {
+	187
+    };
+
+static const ANTLR3_INT32 dfa13_T26[] =
+    {
+	248
+    };
+
+static const ANTLR3_INT32 dfa13_T27[] =
+    {
+	301
+    };
+
+static const ANTLR3_INT32 dfa13_T28[] =
+    {
+	344
+    };
+
+static const ANTLR3_INT32 dfa13_T29[] =
+    {
+	360
+    };
+
+static const ANTLR3_INT32 dfa13_T30[] =
+    {
+	372
+    };
+
+static const ANTLR3_INT32 dfa13_T31[] =
+    {
+	108
+    };
+
+static const ANTLR3_INT32 dfa13_T32[] =
+    {
+	382
+    };
+
+static const ANTLR3_INT32 dfa13_T33[] =
+    {
+	171
+    };
+
+static const ANTLR3_INT32 dfa13_T34[] =
+    {
+	237
+    };
+
+static const ANTLR3_INT32 dfa13_T35[] =
+    {
+	291
+    };
+
+static const ANTLR3_INT32 dfa13_T36[] =
+    {
+	345
+    };
+
+static const ANTLR3_INT32 dfa13_T37[] =
+    {
+	361
+    };
+
+static const ANTLR3_INT32 dfa13_T38[] =
+    {
+	38, -1, -1, -1, -1, -1, -1, 38, -1, 104, 104, 104, 104, 104, 104, 104, 
+	104, 104, 104, -1, -1, -1, -1, -1, -1, -1, 38, 38, 38, 38, 38, 38, 38, 
+	38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 
+	38, -1, -1, -1, -1, 38, -1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 
+	38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38
+    };
+
+static const ANTLR3_INT32 dfa13_T39[] =
+    {
+	373
+    };
+
+static const ANTLR3_INT32 dfa13_T40[] =
+    {
+	383
+    };
+
+static const ANTLR3_INT32 dfa13_T41[] =
+    {
+	112
+    };
+
+static const ANTLR3_INT32 dfa13_T42[] =
+    {
+	175
+    };
+
+static const ANTLR3_INT32 dfa13_T43[] =
+    {
+	239
+    };
+
+static const ANTLR3_INT32 dfa13_T44[] =
+    {
+	293
+    };
+
+static const ANTLR3_INT32 dfa13_T45[] =
+    {
+	329
+    };
+
+static const ANTLR3_INT32 dfa13_T46[] =
+    {
+	137
+    };
+
+static const ANTLR3_INT32 dfa13_T47[] =
+    {
+	126
+    };
+
+static const ANTLR3_INT32 dfa13_T48[] =
+    {
+	200
+    };
+
+static const ANTLR3_INT32 dfa13_T49[] =
+    {
+	257
+    };
+
+static const ANTLR3_INT32 dfa13_T50[] =
+    {
+	312
+    };
+
+static const ANTLR3_INT32 dfa13_T51[] =
+    {
+	346
+    };
+
+static const ANTLR3_INT32 dfa13_T52[] =
+    {
+	230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 229
+    };
+
+static const ANTLR3_INT32 dfa13_T53[] =
+    {
+	56, -1, -1, -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57
+    };
+
+static const ANTLR3_INT32 dfa13_T54[] =
+    {
+	115
+    };
+
+static const ANTLR3_INT32 dfa13_T55[] =
+    {
+	178
+    };
+
+static const ANTLR3_INT32 dfa13_T56[] =
+    {
+	240
+    };
+
+static const ANTLR3_INT32 dfa13_T57[] =
+    {
+	294
+    };
+
+static const ANTLR3_INT32 dfa13_T58[] =
+    {
+	87
+    };
+
+static const ANTLR3_INT32 dfa13_T59[] =
+    {
+	150, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, 149
+    };
+
+static const ANTLR3_INT32 dfa13_T60[] =
+    {
+	73
+    };
+
+static const ANTLR3_INT32 dfa13_T61[] =
+    {
+	138
+    };
+
+static const ANTLR3_INT32 dfa13_T62[] =
+    {
+	201
+    };
+
+static const ANTLR3_INT32 dfa13_T63[] =
+    {
+	258
+    };
+
+static const ANTLR3_INT32 dfa13_T64[] =
+    {
+	116
+    };
+
+static const ANTLR3_INT32 dfa13_T65[] =
+    {
+	179
+    };
+
+static const ANTLR3_INT32 dfa13_T66[] =
+    {
+	241
+    };
+
+static const ANTLR3_INT32 dfa13_T67[] =
+    {
+	74
+    };
+
+static const ANTLR3_INT32 dfa13_T68[] =
+    {
+	232, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 231
+    };
+
+static const ANTLR3_INT32 dfa13_T69[] =
+    {
+	139
+    };
+
+static const ANTLR3_INT32 dfa13_T70[] =
+    {
+	202
+    };
+
+static const ANTLR3_INT32 dfa13_T71[] =
+    {
+	128
+    };
+
+static const ANTLR3_INT32 dfa13_T72[] =
+    {
+	259
+    };
+
+static const ANTLR3_INT32 dfa13_T73[] =
+    {
+	129
+    };
+
+static const ANTLR3_INT32 dfa13_T74[] =
+    {
+	191
+    };
+
+static const ANTLR3_INT32 dfa13_T75[] =
+    {
+	250
+    };
+
+static const ANTLR3_INT32 dfa13_T76[] =
+    {
+	303
+    };
+
+static const ANTLR3_INT32 dfa13_T77[] =
+    {
+	130
+    };
+
+static const ANTLR3_INT32 dfa13_T78[] =
+    {
+	192
+    };
+
+static const ANTLR3_INT32 dfa13_T79[] =
+    {
+	140
+    };
+
+static const ANTLR3_INT32 dfa13_T80[] =
+    {
+	251
+    };
+
+static const ANTLR3_INT32 dfa13_T81[] =
+    {
+	203
+    };
+
+static const ANTLR3_INT32 dfa13_T82[] =
+    {
+	304
+    };
+
+static const ANTLR3_INT32 dfa13_T83[] =
+    {
+	260
+    };
+
+static const ANTLR3_INT32 dfa13_T84[] =
+    {
+	315
+    };
+
+static const ANTLR3_INT32 dfa13_T85[] =
+    {
+	188
+    };
+
+static const ANTLR3_INT32 dfa13_T86[] =
+    {
+	224, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 223
+    };
+
+static const ANTLR3_INT32 dfa13_T87[] =
+    {
+	249
+    };
+
+static const ANTLR3_INT32 dfa13_T88[] =
+    {
+	302
+    };
+
+static const ANTLR3_INT32 dfa13_T89[] =
+    {
+	336
+    };
+
+static const ANTLR3_INT32 dfa13_T90[] =
+    {
+	206
+    };
+
+static const ANTLR3_INT32 dfa13_T91[] =
+    {
+	146
+    };
+
+static const ANTLR3_INT32 dfa13_T92[] =
+    {
+	210
+    };
+
+static const ANTLR3_INT32 dfa13_T93[] =
+    {
+	226, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 225
+    };
+
+static const ANTLR3_INT32 dfa13_T94[] =
+    {
+	76
+    };
+
+static const ANTLR3_INT32 dfa13_T95[] =
+    {
+	89
+    };
+
+static const ANTLR3_INT32 dfa13_T96[] =
+    {
+	77
+    };
+
+static const ANTLR3_INT32 dfa13_T97[] =
+    {
+	214
+    };
+
+static const ANTLR3_INT32 dfa13_T98[] =
+    {
+	270
+    };
+
+static const ANTLR3_INT32 dfa13_T99[] =
+    {
+	211
+    };
+
+static const ANTLR3_INT32 dfa13_T100[] =
+    {
+	267
+    };
+
+static const ANTLR3_INT32 dfa13_T101[] =
+    {
+	81, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82
+    };
+
+static const ANTLR3_INT32 dfa13_T102[] =
+    {
+	152
+    };
+
+static const ANTLR3_INT32 dfa13_T103[] =
+    {
+	216
+    };
+
+static const ANTLR3_INT32 dfa13_T104[] =
+    {
+	272
+    };
+
+static const ANTLR3_INT32 dfa13_T105[] =
+    {
+	90
+    };
+
+static const ANTLR3_INT32 dfa13_T106[] =
+    {
+	153
+    };
+
+static const ANTLR3_INT32 dfa13_T107[] =
+    {
+	217
+    };
+
+static const ANTLR3_INT32 dfa13_T108[] =
+    {
+	207
+    };
+
+static const ANTLR3_INT32 dfa13_T109[] =
+    {
+	78
+    };
+
+static const ANTLR3_INT32 dfa13_T110[] =
+    {
+	91
+    };
+
+static const ANTLR3_INT32 dfa13_T111[] =
+    {
+	79
+    };
+
+static const ANTLR3_INT32 dfa13_T112[] =
+    {
+	218
+    };
+
+static const ANTLR3_INT32 dfa13_T113[] =
+    {
+	80
+    };
+
+static const ANTLR3_INT32 dfa13_T114[] =
+    {
+	215
+    };
+
+static const ANTLR3_INT32 dfa13_T115[] =
+    {
+	92
+    };
+
+static const ANTLR3_INT32 dfa13_T116[] =
+    {
+	227
+    };
+
+static const ANTLR3_INT32 dfa13_T117[] =
+    {
+	283
+    };
+
+static const ANTLR3_INT32 dfa13_T118[] =
+    {
+	228
+    };
+
+static const ANTLR3_INT32 dfa13_T119[] =
+    {
+	284
+    };
+
+static const ANTLR3_INT32 dfa13_T120[] =
+    {
+	219
+    };
+
+static const ANTLR3_INT32 dfa13_T121[] =
+    {
+	275
+    };
+
+static const ANTLR3_INT32 dfa13_T122[] =
+    {
+	220
+    };
+
+static const ANTLR3_INT32 dfa13_T123[] =
+    {
+	276
+    };
+
+static const ANTLR3_INT32 dfa13_T124[] =
+    {
+	132
+    };
+
+static const ANTLR3_INT32 dfa13_T125[] =
+    {
+	155, -1, -1, 160, 158, -1, -1, -1, 159, 157, -1, -1, -1, -1, 156, -1, -1, 
+	154
+    };
+
+static const ANTLR3_INT32 dfa13_T126[] =
+    {
+	194
+    };
+
+static const ANTLR3_INT32 dfa13_T127[] =
+    {
+	221
+    };
+
+static const ANTLR3_INT32 dfa13_T128[] =
+    {
+	253
+    };
+
+static const ANTLR3_INT32 dfa13_T129[] =
+    {
+	277
+    };
+
+static const ANTLR3_INT32 dfa13_T130[] =
+    {
+	306
+    };
+
+static const ANTLR3_INT32 dfa13_T131[] =
+    {
+	340
+    };
+
+static const ANTLR3_INT32 dfa13_T132[] =
+    {
+	355, -1, -1, -1, -1, -1, 356
+    };
+
+static const ANTLR3_INT32 dfa13_T133[] =
+    {
+	63, -1, -1, -1, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, 62
+    };
+
+static const ANTLR3_INT32 dfa13_T134[] =
+    {
+	222
+    };
+
+static const ANTLR3_INT32 dfa13_T135[] =
+    {
+	165
+    };
+
+static const ANTLR3_INT32 dfa13_T136[] =
+    {
+	233
+    };
+
+static const ANTLR3_INT32 dfa13_T137[] =
+    {
+	289
+    };
+
+static const ANTLR3_INT32 dfa13_T138[] =
+    {
+	208
+    };
+
+static const ANTLR3_INT32 dfa13_T139[] =
+    {
+	265
+    };
+
+static const ANTLR3_INT32 dfa13_T140[] =
+    {
+	54, -1, -1, -1, -1, -1, -1, 54, -1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 
+	54, -1, -1, -1, -1, -1, -1, -1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 
+	54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, -1, -1, 
+	-1, -1, 54, -1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 
+	54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54
+    };
+
+static const ANTLR3_INT32 dfa13_T141[] =
+    {
+	105
+    };
+
+static const ANTLR3_INT32 dfa13_T142[] =
+    {
+	167, 168
+    };
+
+static const ANTLR3_INT32 dfa13_T143[] =
+    {
+	54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 
+	54, 54, 54, 54, 54, 54, 54, 54, -1, -1, -1, -1, -1, -1, 47, 54, 54, 54, 
+	48, 49, 54, 54, 54, 54, 54, 50, 54, 51, 54, 46, 54, 54, 52, 54, 54, 54, 
+	54, 54, 54, 54
+    };
+
+static const ANTLR3_INT32 dfa13_T144[] =
+    {
+	110, -1, -1, -1, -1, -1, -1, 111
+    };
+
+static const ANTLR3_INT32 dfa13_T145[] =
+    {
+	131
+    };
+
+static const ANTLR3_INT32 dfa13_T146[] =
+    {
+	193
+    };
+
+static const ANTLR3_INT32 dfa13_T147[] =
+    {
+	252
+    };
+
+static const ANTLR3_INT32 dfa13_T148[] =
+    {
+	305
+    };
+
+static const ANTLR3_INT32 dfa13_T149[] =
+    {
+	133
+    };
+
+static const ANTLR3_INT32 dfa13_T150[] =
+    {
+	195
+    };
+
+static const ANTLR3_INT32 dfa13_T151[] =
+    {
+	254
+    };
+
+static const ANTLR3_INT32 dfa13_T152[] =
+    {
+	307
+    };
+
+static const ANTLR3_INT32 dfa13_T153[] =
+    {
+	120, -1, -1, -1, -1, -1, -1, -1, 121
+    };
+
+static const ANTLR3_INT32 dfa13_T154[] =
+    {
+	341
+    };
+
+static const ANTLR3_INT32 dfa13_T155[] =
+    {
+	357
+    };
+
+static const ANTLR3_INT32 dfa13_T156[] =
+    {
+	369
+    };
+
+static const ANTLR3_INT32 dfa13_T157[] =
+    {
+	379
+    };
+
+static const ANTLR3_INT32 dfa13_T158[] =
+    {
+	388
+    };
+
+static const ANTLR3_INT32 dfa13_T159[] =
+    {
+	117
+    };
+
+static const ANTLR3_INT32 dfa13_T160[] =
+    {
+	180
+    };
+
+static const ANTLR3_INT32 dfa13_T161[] =
+    {
+	242
+    };
+
+static const ANTLR3_INT32 dfa13_T162[] =
+    {
+	296
+    };
+
+static const ANTLR3_INT32 dfa13_T163[] =
+    {
+	331
+    };
+
+static const ANTLR3_INT32 dfa13_T164[] =
+    {
+	351
+    };
+
+static const ANTLR3_INT32 dfa13_T165[] =
+    {
+	365
+    };
+
+static const ANTLR3_INT32 dfa13_T166[] =
+    {
+	376
+    };
+
+static const ANTLR3_INT32 dfa13_T167[] =
+    {
+	385
+    };
+
+static const ANTLR3_INT32 dfa13_T168[] =
+    {
+	367
+    };
+
+static const ANTLR3_INT32 dfa13_T169[] =
+    {
+	377
+    };
+
+static const ANTLR3_INT32 dfa13_T170[] =
+    {
+	386
+    };
+
+static const ANTLR3_INT32 dfa13_T171[] =
+    {
+	368
+    };
+
+static const ANTLR3_INT32 dfa13_T172[] =
+    {
+	378
+    };
+
+static const ANTLR3_INT32 dfa13_T173[] =
+    {
+	387
+    };
+
+static const ANTLR3_INT32 dfa13_T174[] =
+    {
+	395
+    };
+
+static const ANTLR3_INT32 dfa13_T175[] =
+    {
+	70, -1, -1, -1, -1, -1, -1, -1, -1, -1, 71
+    };
+
+static const ANTLR3_INT32 dfa13_T176[] =
+    {
+	83
+    };
+
+static const ANTLR3_INT32 dfa13_T177[] =
+    {
+	72
+    };
+
+static const ANTLR3_INT32 dfa13_T178[] =
+    {
+	144, -1, -1, -1, -1, -1, -1, -1, -1, -1, 143, -1, -1, -1, -1, 145
+    };
+
+static const ANTLR3_INT32 dfa13_T179[] =
+    {
+	136
+    };
+
+static const ANTLR3_INT32 dfa13_T180[] =
+    {
+	199
+    };
+
+static const ANTLR3_INT32 dfa13_T181[] =
+    {
+	256
+    };
+
+static const ANTLR3_INT32 dfa13_T182[] =
+    {
+	42, 42, -1, 42, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, 42, -1, 44, 30, 40, 27, 15, -1, 10, 11, 31, 29, -1, 
+	24, -1, 19, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 45, 23, 20, 22, 
+	39, 17, 2, 34, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 
+	38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 3, -1, 4, -1, -1, -1, 16, 6, 35, 
+	18, 21, 7, 38, 38, 8, 38, 38, 9, 38, 25, 26, 38, 38, 36, 12, 13, 14, 38, 
+	38, 33, 38, 37, 41, 28, 5, 32
+    };
+
+static const ANTLR3_INT32 dfa13_T183[] =
+    {
+	309, -1, -1, -1, -1, -1, -1, -1, -1, -1, 310, -1, -1, 311
+    };
+
+static const ANTLR3_INT32 dfa13_T184[] =
+    {
+	124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 125
+    };
+
+static const ANTLR3_INT32 dfa13_T185[] =
+    {
+	88
+    };
+
+static const ANTLR3_INT32 dfa13_T186[] =
+    {
+	75
+    };
+
+static const ANTLR3_INT32 dfa13_T187[] =
+    {
+	104, 104, 104, 104, 104, 104, 104, 104, 104, 104, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 95, -1, 99, 
+	-1, -1, -1, -1, -1, -1, -1, -1, 103, 100, 98, 96, -1, -1, -1, 101, -1, 
+	102, -1, -1, 97
+    };
+
+static const ANTLR3_INT32 dfa13_T188[] =
+    {
+	59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, -1, -1, 61
+    };
+
+static const ANTLR3_INT32 dfa13_T189[] =
+    {
+	93
+    };
+
+static const ANTLR3_INT32 dfa13_T190[] =
+    {
+	141
+    };
+
+static const ANTLR3_INT32 dfa13_T191[] =
+    {
+	204
+    };
+
+static const ANTLR3_INT32 dfa13_T192[] =
+    {
+	261
+    };
+
+static const ANTLR3_INT32 dfa13_T193[] =
+    {
+	148, 147
+    };
+
+static const ANTLR3_INT32 dfa13_T194[] =
+    {
+	213, -1, 212
+    };
+
+static const ANTLR3_INT32 dfa13_T195[] =
+    {
+	94
+    };
+
+static const ANTLR3_INT32 dfa13_T196[] =
+    {
+	142
+    };
+
+static const ANTLR3_INT32 dfa13_T197[] =
+    {
+	205
+    };
+
+static const ANTLR3_INT32 dfa13_T198[] =
+    {
+	262
+    };
+
+static const ANTLR3_INT32 dfa13_T199[] =
+    {
+	316
+    };
+
+static const ANTLR3_INT32 dfa13_T200[] =
+    {
+	348
+    };
+
+static const ANTLR3_INT32 dfa13_T201[] =
+    {
+	363
+    };
+
+static const ANTLR3_INT32 dfa13_T202[] =
+    {
+	85, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43
+    };
+
+static const ANTLR3_INT32 dfa13_T203[] =
+    {
+	197, 197, -1, 197, 197, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, 197, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, 
+	-1, -1, 54, -1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, -1, -1, -1, -1, 
+	-1, -1, -1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 
+	54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, -1, -1, -1, -1, 54, -1, 54, 
+	54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 
+	54, 54, 54, 54, 54, 54, 54, 197
+    };
+
+static const ANTLR3_INT32 dfa13_T204[] =
+    {
+	106
+    };
+
+static const ANTLR3_INT32 dfa13_T205[] =
+    {
+	169
+    };
+
+static const ANTLR3_INT32 dfa13_T206[] =
+    {
+	235
+    };
+
+static const ANTLR3_INT32 dfa13_T207[] =
+    {
+	107
+    };
+
+static const ANTLR3_INT32 dfa13_T208[] =
+    {
+	170
+    };
+
+static const ANTLR3_INT32 dfa13_T209[] =
+    {
+	55
+    };
+
+static const ANTLR3_INT32 dfa13_T210[] =
+    {
+	109
+    };
+
+static const ANTLR3_INT32 dfa13_T211[] =
+    {
+	134
+    };
+
+static const ANTLR3_INT32 dfa13_T212[] =
+    {
+	173
+    };
+
+static const ANTLR3_INT32 dfa13_T213[] =
+    {
+	238
+    };
+
+static const ANTLR3_INT32 dfa13_T214[] =
+    {
+	292
+    };
+
+static const ANTLR3_INT32 dfa13_T215[] =
+    {
+	328
+    };
+
+static const ANTLR3_INT32 dfa13_T216[] =
+    {
+	349
+    };
+
+static const ANTLR3_INT32 dfa13_T217[] =
+    {
+	364
+    };
+
+static const ANTLR3_INT32 dfa13_T218[] =
+    {
+	375
+    };
+
+static const ANTLR3_INT32 dfa13_T219[] =
+    {
+	384
+    };
+
+static const ANTLR3_INT32 dfa13_T220[] =
+    {
+	392
+    };
+
+static const ANTLR3_INT32 dfa13_T221[] =
+    {
+	113
+    };
+
+static const ANTLR3_INT32 dfa13_T222[] =
+    {
+	114
+    };
+
+static const ANTLR3_INT32 dfa13_T223[] =
+    {
+	118
+    };
+
+static const ANTLR3_INT32 dfa13_T224[] =
+    {
+	66, -1, -1, -1, 67, -1, -1, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, 68
+    };
+
+static const ANTLR3_INT32 dfa13_T225[] =
+    {
+	181
+    };
+
+static const ANTLR3_INT32 dfa13_T226[] =
+    {
+	243
+    };
+
+static const ANTLR3_INT32 dfa13_T227[] =
+    {
+	297
+    };
+
+static const ANTLR3_INT32 dfa13_T228[] =
+    {
+	119
+    };
+
+static const ANTLR3_INT32 dfa13_T229[] =
+    {
+	182
+    };
+
+static const ANTLR3_INT32 dfa13_T230[] =
+    {
+	183
+    };
+
+static const ANTLR3_INT32 dfa13_T231[] =
+    {
+	245
+    };
+
+static const ANTLR3_INT32 dfa13_T232[] =
+    {
+	298
+    };
+
+
+/* Transition tables are a table of sub tables, with some tables
+ * reused for efficiency.
+ */
+static const ANTLR3_INT32 * const dfa13_transitions[] =
+{
+    dfa13_T182, dfa13_T143, dfa13_T209, NULL, NULL, NULL, dfa13_T53, dfa13_T188, 
+    dfa13_T133, dfa13_T24, NULL, NULL, dfa13_T224, dfa13_T175, dfa13_T177, 
+    NULL, dfa13_T60, NULL, dfa13_T67, NULL, NULL, dfa13_T186, NULL, NULL, 
+    NULL, dfa13_T94, dfa13_T96, NULL, NULL, NULL, NULL, NULL, NULL, dfa13_T109, 
+    dfa13_T111, dfa13_T113, dfa13_T101, dfa13_T176, NULL, NULL, NULL, NULL, 
+    NULL, dfa13_T202, NULL, NULL, dfa13_T13, dfa13_T58, dfa13_T185, dfa13_T95, 
+    dfa13_T105, dfa13_T110, dfa13_T115, NULL, NULL, dfa13_T189, dfa13_T195, 
+    dfa13_T187, dfa13_T141, dfa13_T204, dfa13_T207, dfa13_T31, dfa13_T210, 
+    dfa13_T144, dfa13_T41, dfa13_T221, dfa13_T222, dfa13_T54, dfa13_T64, 
+    dfa13_T159, dfa13_T223, dfa13_T228, dfa13_T153, dfa13_T12, dfa13_T14, 
+    dfa13_T184, dfa13_T47, dfa13_T6, dfa13_T71, dfa13_T73, dfa13_T77, dfa13_T145, 
+    dfa13_T124, dfa13_T149, NULL, NULL, dfa13_T211, dfa13_T3, dfa13_T179, 
+    dfa13_T46, dfa13_T61, dfa13_T69, dfa13_T79, dfa13_T190, dfa13_T196, 
+    dfa13_T178, dfa13_T91, dfa13_T193, dfa13_T59, dfa13_T102, dfa13_T106, 
+    dfa13_T125, dfa13_T15, dfa13_T135, dfa13_T38, dfa13_T142, dfa13_T205, 
+    dfa13_T208, dfa13_T33, dfa13_T6, dfa13_T212, dfa13_T6, dfa13_T42, dfa13_T6, 
+    dfa13_T6, dfa13_T55, dfa13_T65, dfa13_T160, dfa13_T225, dfa13_T229, 
+    dfa13_T230, dfa13_T1, dfa13_T6, dfa13_T16, dfa13_T25, dfa13_T85, dfa13_T6, 
+    NULL, dfa13_T6, dfa13_T74, dfa13_T78, dfa13_T146, dfa13_T126, dfa13_T150, 
+    dfa13_T203, dfa13_T4, dfa13_T180, dfa13_T48, dfa13_T62, dfa13_T70, dfa13_T81, 
+    dfa13_T191, dfa13_T197, dfa13_T90, dfa13_T108, dfa13_T138, dfa13_T6, 
+    dfa13_T92, dfa13_T99, dfa13_T194, dfa13_T97, dfa13_T114, dfa13_T103, 
+    dfa13_T107, dfa13_T112, dfa13_T120, dfa13_T122, dfa13_T127, dfa13_T134, 
+    dfa13_T86, dfa13_T93, dfa13_T116, dfa13_T118, dfa13_T52, dfa13_T68, 
+    dfa13_T136, NULL, dfa13_T6, dfa13_T6, dfa13_T206, dfa13_T6, dfa13_T34, 
+    NULL, dfa13_T213, NULL, dfa13_T43, NULL, NULL, dfa13_T56, dfa13_T66, 
+    dfa13_T161, dfa13_T226, dfa13_T6, dfa13_T231, dfa13_T2, NULL, dfa13_T17, 
+    dfa13_T26, dfa13_T87, NULL, NULL, dfa13_T75, dfa13_T80, dfa13_T147, 
+    dfa13_T128, dfa13_T151, NULL, NULL, dfa13_T5, dfa13_T181, dfa13_T49, 
+    dfa13_T63, dfa13_T72, dfa13_T83, dfa13_T192, dfa13_T198, dfa13_T6, dfa13_T6, 
+    dfa13_T139, NULL, dfa13_T6, dfa13_T100, dfa13_T6, dfa13_T6, dfa13_T98, 
+    dfa13_T6, dfa13_T104, dfa13_T6, dfa13_T6, dfa13_T121, dfa13_T123, dfa13_T129, 
+    dfa13_T6, dfa13_T6, dfa13_T6, dfa13_T6, dfa13_T6, dfa13_T117, dfa13_T119, 
+    dfa13_T6, dfa13_T6, dfa13_T6, dfa13_T6, dfa13_T137, NULL, dfa13_T6, 
+    NULL, dfa13_T35, dfa13_T214, dfa13_T44, dfa13_T57, dfa13_T6, dfa13_T162, 
+    dfa13_T227, NULL, dfa13_T232, dfa13_T6, dfa13_T18, dfa13_T27, dfa13_T88, 
+    dfa13_T76, dfa13_T82, dfa13_T148, dfa13_T130, dfa13_T152, dfa13_T7, 
+    dfa13_T183, dfa13_T50, dfa13_T140, dfa13_T140, dfa13_T84, NULL, dfa13_T199, 
+    NULL, NULL, dfa13_T6, NULL, dfa13_T6, NULL, NULL, dfa13_T6, NULL, dfa13_T6, 
+    NULL, NULL, dfa13_T6, dfa13_T6, dfa13_T6, NULL, NULL, NULL, NULL, NULL, 
+    dfa13_T6, dfa13_T6, NULL, NULL, NULL, NULL, dfa13_T6, NULL, dfa13_T6, 
+    dfa13_T215, dfa13_T45, dfa13_T6, NULL, dfa13_T163, dfa13_T6, dfa13_T0, 
+    NULL, dfa13_T19, dfa13_T6, dfa13_T89, dfa13_T6, dfa13_T6, dfa13_T6, 
+    dfa13_T131, dfa13_T154, dfa13_T8, dfa13_T21, dfa13_T28, dfa13_T36, dfa13_T51, 
+    NULL, NULL, dfa13_T140, dfa13_T200, NULL, NULL, NULL, NULL, NULL, NULL, 
+    NULL, NULL, NULL, NULL, NULL, dfa13_T216, dfa13_T6, NULL, dfa13_T164, 
+    NULL, dfa13_T6, dfa13_T20, NULL, dfa13_T6, NULL, NULL, NULL, dfa13_T132, 
+    dfa13_T155, dfa13_T9, dfa13_T22, dfa13_T29, dfa13_T37, dfa13_T140, NULL, 
+    dfa13_T201, dfa13_T217, NULL, dfa13_T165, NULL, dfa13_T6, NULL, dfa13_T168, 
+    dfa13_T171, dfa13_T156, dfa13_T10, dfa13_T23, dfa13_T30, dfa13_T39, 
+    NULL, dfa13_T6, dfa13_T218, dfa13_T166, NULL, dfa13_T169, dfa13_T172, 
+    dfa13_T157, dfa13_T11, dfa13_T140, dfa13_T32, dfa13_T40, NULL, dfa13_T219, 
+    dfa13_T167, dfa13_T170, dfa13_T173, dfa13_T158, dfa13_T140, NULL, dfa13_T140, 
+    dfa13_T140, dfa13_T220, dfa13_T6, dfa13_T6, dfa13_T174, dfa13_T6, NULL, 
+    NULL, NULL, dfa13_T6, NULL, NULL, dfa13_T6, NULL, NULL
+};
+
+
+/* Declare tracking structure for Cyclic DFA 13
+ */
+static
+ANTLR3_CYCLIC_DFA cdfa13
+    =	{
+	    13,		    /* Decision number of this dfa	    */
+	    /* Which decision this represents:   */
+	    (const pANTLR3_UCHAR)"1:1: Tokens : ( T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | ASSUMPTION_TOK | BENCHMARK_TOK | EXTRAFUNS_TOK | EXTRAPREDS_TOK | EXTRASORTS_TOK | FALSE_TOK | FLET_TOK | FORMULA_TOK | ITE_TOK | LET_TOK | LOGIC_TOK | LPAREN_TOK | NOTES_TOK | RPAREN_TOK | SAT_TOK | STATUS_TOK | THEORY_TOK | TRUE_TOK | UNKNOWN_TOK | UNSAT_TOK | AMPERSAND_TOK | AND_TOK | AT_TOK | DISTINCT_TOK | DIV_TOK | EQUAL_TOK | EXISTS_TOK | FORALL_TOK | GREATER_THAN_TOK | IFF_TOK | IMPLI [...]
+	    (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition,	/* Default special state transition function	*/
+
+	    antlr3dfaspecialTransition,		/* DFA specialTransition is currently just a default function in the runtime */
+	    antlr3dfapredict,			/* DFA simulator function is in the runtime */
+	    dfa13_eot,	    /* EOT table			    */
+	    dfa13_eof,	    /* EOF table			    */
+	    dfa13_min,	    /* Minimum tokens for each state    */
+	    dfa13_max,	    /* Maximum tokens for each state    */
+	    dfa13_accept,	/* Accept table			    */
+	    dfa13_special,	/* Special transition states	    */
+	    dfa13_transitions	/* Table of transition tables	    */
+
+	};
+/* End of Cyclic DFA 13
+ * ---------------------
+ */ 
+/* =========================================================================
+ * End of DFA tables for the lexer
+ */
+
+/* =========================================================================
+ * Functions to match the lexer grammar defined tokens from the input stream
+ */
+
+//   Comes from: 33:8: ( ':' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__100
+ *
+ * Looks to match the characters the constitute the token T__100
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__100(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__100;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:33:8: ( ':' )
+    // ../../../../../../src/parser/smt1/Smt1.g:33:10: ':'
+    {
+        MATCHC(':');
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__100Ex;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__100Ex; /* Prevent compiler warnings */
+    ruleT__100Ex: ;
+
+}
+// $ANTLR end T__100
+
+//   Comes from: 34:8: ( ':pat' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__101
+ *
+ * Looks to match the characters the constitute the token T__101
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__101(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__101;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:34:8: ( ':pat' )
+    // ../../../../../../src/parser/smt1/Smt1.g:34:10: ':pat'
+    {
+        MATCHS(lit_1);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__101Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__101Ex; /* Prevent compiler warnings */
+    ruleT__101Ex: ;
+
+}
+// $ANTLR end T__101
+
+//   Comes from: 35:8: ( 'Array[' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__102
+ *
+ * Looks to match the characters the constitute the token T__102
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__102(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__102;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:35:8: ( 'Array[' )
+    // ../../../../../../src/parser/smt1/Smt1.g:35:10: 'Array['
+    {
+        MATCHS(lit_2);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__102Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__102Ex; /* Prevent compiler warnings */
+    ruleT__102Ex: ;
+
+}
+// $ANTLR end T__102
+
+//   Comes from: 36:8: ( '[' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__103
+ *
+ * Looks to match the characters the constitute the token T__103
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__103(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__103;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:36:8: ( '[' )
+    // ../../../../../../src/parser/smt1/Smt1.g:36:10: '['
+    {
+        MATCHC('[');
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__103Ex;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__103Ex; /* Prevent compiler warnings */
+    ruleT__103Ex: ;
+
+}
+// $ANTLR end T__103
+
+//   Comes from: 37:8: ( ']' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__104
+ *
+ * Looks to match the characters the constitute the token T__104
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__104(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__104;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:37:8: ( ']' )
+    // ../../../../../../src/parser/smt1/Smt1.g:37:10: ']'
+    {
+        MATCHC(']');
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__104Ex;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__104Ex; /* Prevent compiler warnings */
+    ruleT__104Ex: ;
+
+}
+// $ANTLR end T__104
+
+//   Comes from: 38:8: ( '}' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__105
+ *
+ * Looks to match the characters the constitute the token T__105
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__105(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__105;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:38:8: ( '}' )
+    // ../../../../../../src/parser/smt1/Smt1.g:38:10: '}'
+    {
+        MATCHC('}');
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__105Ex;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__105Ex; /* Prevent compiler warnings */
+    ruleT__105Ex: ;
+
+}
+// $ANTLR end T__105
+
+//   Comes from: 689:17: ( ':assumption' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ASSUMPTION_TOK
+ *
+ * Looks to match the characters the constitute the token ASSUMPTION_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mASSUMPTION_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ASSUMPTION_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:689:17: ( ':assumption' )
+    // ../../../../../../src/parser/smt1/Smt1.g:689:19: ':assumption'
+    {
+        MATCHS(lit_3);
+        if  (HASEXCEPTION())
+        {
+            goto ruleASSUMPTION_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleASSUMPTION_TOKEx; /* Prevent compiler warnings */
+    ruleASSUMPTION_TOKEx: ;
+
+}
+// $ANTLR end ASSUMPTION_TOK
+
+//   Comes from: 690:17: ( 'benchmark' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BENCHMARK_TOK
+ *
+ * Looks to match the characters the constitute the token BENCHMARK_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBENCHMARK_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BENCHMARK_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:690:17: ( 'benchmark' )
+    // ../../../../../../src/parser/smt1/Smt1.g:690:19: 'benchmark'
+    {
+        MATCHS(lit_4);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBENCHMARK_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBENCHMARK_TOKEx; /* Prevent compiler warnings */
+    ruleBENCHMARK_TOKEx: ;
+
+}
+// $ANTLR end BENCHMARK_TOK
+
+//   Comes from: 691:17: ( ':extrafuns' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start EXTRAFUNS_TOK
+ *
+ * Looks to match the characters the constitute the token EXTRAFUNS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mEXTRAFUNS_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = EXTRAFUNS_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:691:17: ( ':extrafuns' )
+    // ../../../../../../src/parser/smt1/Smt1.g:691:19: ':extrafuns'
+    {
+        MATCHS(lit_5);
+        if  (HASEXCEPTION())
+        {
+            goto ruleEXTRAFUNS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleEXTRAFUNS_TOKEx; /* Prevent compiler warnings */
+    ruleEXTRAFUNS_TOKEx: ;
+
+}
+// $ANTLR end EXTRAFUNS_TOK
+
+//   Comes from: 692:17: ( ':extrapreds' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start EXTRAPREDS_TOK
+ *
+ * Looks to match the characters the constitute the token EXTRAPREDS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mEXTRAPREDS_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = EXTRAPREDS_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:692:17: ( ':extrapreds' )
+    // ../../../../../../src/parser/smt1/Smt1.g:692:19: ':extrapreds'
+    {
+        MATCHS(lit_6);
+        if  (HASEXCEPTION())
+        {
+            goto ruleEXTRAPREDS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleEXTRAPREDS_TOKEx; /* Prevent compiler warnings */
+    ruleEXTRAPREDS_TOKEx: ;
+
+}
+// $ANTLR end EXTRAPREDS_TOK
+
+//   Comes from: 693:17: ( ':extrasorts' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start EXTRASORTS_TOK
+ *
+ * Looks to match the characters the constitute the token EXTRASORTS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mEXTRASORTS_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = EXTRASORTS_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:693:17: ( ':extrasorts' )
+    // ../../../../../../src/parser/smt1/Smt1.g:693:19: ':extrasorts'
+    {
+        MATCHS(lit_7);
+        if  (HASEXCEPTION())
+        {
+            goto ruleEXTRASORTS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleEXTRASORTS_TOKEx; /* Prevent compiler warnings */
+    ruleEXTRASORTS_TOKEx: ;
+
+}
+// $ANTLR end EXTRASORTS_TOK
+
+//   Comes from: 694:17: ( 'false' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FALSE_TOK
+ *
+ * Looks to match the characters the constitute the token FALSE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFALSE_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FALSE_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:694:17: ( 'false' )
+    // ../../../../../../src/parser/smt1/Smt1.g:694:19: 'false'
+    {
+        MATCHS(lit_8);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFALSE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFALSE_TOKEx; /* Prevent compiler warnings */
+    ruleFALSE_TOKEx: ;
+
+}
+// $ANTLR end FALSE_TOK
+
+//   Comes from: 695:17: ( 'flet' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FLET_TOK
+ *
+ * Looks to match the characters the constitute the token FLET_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFLET_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FLET_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:695:17: ( 'flet' )
+    // ../../../../../../src/parser/smt1/Smt1.g:695:19: 'flet'
+    {
+        MATCHS(lit_9);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFLET_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFLET_TOKEx; /* Prevent compiler warnings */
+    ruleFLET_TOKEx: ;
+
+}
+// $ANTLR end FLET_TOK
+
+//   Comes from: 696:17: ( ':formula' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FORMULA_TOK
+ *
+ * Looks to match the characters the constitute the token FORMULA_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFORMULA_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FORMULA_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:696:17: ( ':formula' )
+    // ../../../../../../src/parser/smt1/Smt1.g:696:19: ':formula'
+    {
+        MATCHS(lit_10);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFORMULA_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFORMULA_TOKEx; /* Prevent compiler warnings */
+    ruleFORMULA_TOKEx: ;
+
+}
+// $ANTLR end FORMULA_TOK
+
+//   Comes from: 697:17: ( 'ite' | 'if_then_else' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ITE_TOK
+ *
+ * Looks to match the characters the constitute the token ITE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mITE_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ITE_TOK;
+
+
+    {
+        //  ../../../../../../src/parser/smt1/Smt1.g:697:17: ( 'ite' | 'if_then_else' )
+
+        ANTLR3_UINT32 alt1;
+
+        alt1=2;
+
+        switch ( LA(1) )
+        {
+        case 'i':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 't':
+        			{
+        				alt1=1;
+        			}
+        		    break;
+        		case 'f':
+        			{
+        				alt1=2;
+        			}
+        		    break;
+
+        		default:
+        		    CONSTRUCTEX();
+        		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        		    EXCEPTION->message      = (void *)"";
+        		    EXCEPTION->decisionNum  = 1;
+        		    EXCEPTION->state        = 1;
+
+
+        		    goto ruleITE_TOKEx;
+
+        		}
+
+        	}
+            break;
+
+        default:
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            EXCEPTION->message      = (void *)"";
+            EXCEPTION->decisionNum  = 1;
+            EXCEPTION->state        = 0;
+
+
+            goto ruleITE_TOKEx;
+
+        }
+
+        switch (alt1)
+        {
+    	case 1:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:697:19: 'ite'
+    	    {
+    	        MATCHS(lit_11);
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleITE_TOKEx;
+    	        }
+
+
+
+
+    	    }
+    	    break;
+    	case 2:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:697:27: 'if_then_else'
+    	    {
+    	        MATCHS(lit_12);
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleITE_TOKEx;
+    	        }
+
+
+
+
+    	    }
+    	    break;
+
+        }
+    }
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleITE_TOKEx; /* Prevent compiler warnings */
+    ruleITE_TOKEx: ;
+
+}
+// $ANTLR end ITE_TOK
+
+//   Comes from: 698:17: ( 'let' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LET_TOK
+ *
+ * Looks to match the characters the constitute the token LET_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLET_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LET_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:698:17: ( 'let' )
+    // ../../../../../../src/parser/smt1/Smt1.g:698:19: 'let'
+    {
+        MATCHS(lit_13);
+        if  (HASEXCEPTION())
+        {
+            goto ruleLET_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLET_TOKEx; /* Prevent compiler warnings */
+    ruleLET_TOKEx: ;
+
+}
+// $ANTLR end LET_TOK
+
+//   Comes from: 699:17: ( ':logic' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LOGIC_TOK
+ *
+ * Looks to match the characters the constitute the token LOGIC_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLOGIC_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LOGIC_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:699:17: ( ':logic' )
+    // ../../../../../../src/parser/smt1/Smt1.g:699:19: ':logic'
+    {
+        MATCHS(lit_14);
+        if  (HASEXCEPTION())
+        {
+            goto ruleLOGIC_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLOGIC_TOKEx; /* Prevent compiler warnings */
+    ruleLOGIC_TOKEx: ;
+
+}
+// $ANTLR end LOGIC_TOK
+
+//   Comes from: 700:17: ( '(' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LPAREN_TOK
+ *
+ * Looks to match the characters the constitute the token LPAREN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLPAREN_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LPAREN_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:700:17: ( '(' )
+    // ../../../../../../src/parser/smt1/Smt1.g:700:19: '('
+    {
+        MATCHC('(');
+        if  (HASEXCEPTION())
+        {
+            goto ruleLPAREN_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLPAREN_TOKEx; /* Prevent compiler warnings */
+    ruleLPAREN_TOKEx: ;
+
+}
+// $ANTLR end LPAREN_TOK
+
+//   Comes from: 701:17: ( ':notes' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start NOTES_TOK
+ *
+ * Looks to match the characters the constitute the token NOTES_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mNOTES_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = NOTES_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:701:17: ( ':notes' )
+    // ../../../../../../src/parser/smt1/Smt1.g:701:19: ':notes'
+    {
+        MATCHS(lit_15);
+        if  (HASEXCEPTION())
+        {
+            goto ruleNOTES_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleNOTES_TOKEx; /* Prevent compiler warnings */
+    ruleNOTES_TOKEx: ;
+
+}
+// $ANTLR end NOTES_TOK
+
+//   Comes from: 702:17: ( ')' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start RPAREN_TOK
+ *
+ * Looks to match the characters the constitute the token RPAREN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mRPAREN_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = RPAREN_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:702:17: ( ')' )
+    // ../../../../../../src/parser/smt1/Smt1.g:702:19: ')'
+    {
+        MATCHC(')');
+        if  (HASEXCEPTION())
+        {
+            goto ruleRPAREN_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleRPAREN_TOKEx; /* Prevent compiler warnings */
+    ruleRPAREN_TOKEx: ;
+
+}
+// $ANTLR end RPAREN_TOK
+
+//   Comes from: 703:17: ( 'sat' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SAT_TOK
+ *
+ * Looks to match the characters the constitute the token SAT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSAT_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SAT_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:703:17: ( 'sat' )
+    // ../../../../../../src/parser/smt1/Smt1.g:703:19: 'sat'
+    {
+        MATCHS(lit_16);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSAT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSAT_TOKEx; /* Prevent compiler warnings */
+    ruleSAT_TOKEx: ;
+
+}
+// $ANTLR end SAT_TOK
+
+//   Comes from: 704:17: ( ':status' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STATUS_TOK
+ *
+ * Looks to match the characters the constitute the token STATUS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTATUS_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STATUS_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:704:17: ( ':status' )
+    // ../../../../../../src/parser/smt1/Smt1.g:704:19: ':status'
+    {
+        MATCHS(lit_17);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTATUS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTATUS_TOKEx; /* Prevent compiler warnings */
+    ruleSTATUS_TOKEx: ;
+
+}
+// $ANTLR end STATUS_TOK
+
+//   Comes from: 705:17: ( 'theory' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start THEORY_TOK
+ *
+ * Looks to match the characters the constitute the token THEORY_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mTHEORY_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = THEORY_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:705:17: ( 'theory' )
+    // ../../../../../../src/parser/smt1/Smt1.g:705:19: 'theory'
+    {
+        MATCHS(lit_18);
+        if  (HASEXCEPTION())
+        {
+            goto ruleTHEORY_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleTHEORY_TOKEx; /* Prevent compiler warnings */
+    ruleTHEORY_TOKEx: ;
+
+}
+// $ANTLR end THEORY_TOK
+
+//   Comes from: 706:17: ( 'true' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start TRUE_TOK
+ *
+ * Looks to match the characters the constitute the token TRUE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mTRUE_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = TRUE_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:706:17: ( 'true' )
+    // ../../../../../../src/parser/smt1/Smt1.g:706:19: 'true'
+    {
+        MATCHS(lit_19);
+        if  (HASEXCEPTION())
+        {
+            goto ruleTRUE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleTRUE_TOKEx; /* Prevent compiler warnings */
+    ruleTRUE_TOKEx: ;
+
+}
+// $ANTLR end TRUE_TOK
+
+//   Comes from: 707:17: ( 'unknown' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start UNKNOWN_TOK
+ *
+ * Looks to match the characters the constitute the token UNKNOWN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mUNKNOWN_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = UNKNOWN_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:707:17: ( 'unknown' )
+    // ../../../../../../src/parser/smt1/Smt1.g:707:19: 'unknown'
+    {
+        MATCHS(lit_20);
+        if  (HASEXCEPTION())
+        {
+            goto ruleUNKNOWN_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleUNKNOWN_TOKEx; /* Prevent compiler warnings */
+    ruleUNKNOWN_TOKEx: ;
+
+}
+// $ANTLR end UNKNOWN_TOK
+
+//   Comes from: 708:17: ( 'unsat' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start UNSAT_TOK
+ *
+ * Looks to match the characters the constitute the token UNSAT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mUNSAT_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = UNSAT_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:708:17: ( 'unsat' )
+    // ../../../../../../src/parser/smt1/Smt1.g:708:19: 'unsat'
+    {
+        MATCHS(lit_21);
+        if  (HASEXCEPTION())
+        {
+            goto ruleUNSAT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleUNSAT_TOKEx; /* Prevent compiler warnings */
+    ruleUNSAT_TOKEx: ;
+
+}
+// $ANTLR end UNSAT_TOK
+
+//   Comes from: 711:19: ( '&' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start AMPERSAND_TOK
+ *
+ * Looks to match the characters the constitute the token AMPERSAND_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mAMPERSAND_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = AMPERSAND_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:711:19: ( '&' )
+    // ../../../../../../src/parser/smt1/Smt1.g:711:21: '&'
+    {
+        MATCHC('&');
+        if  (HASEXCEPTION())
+        {
+            goto ruleAMPERSAND_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleAMPERSAND_TOKEx; /* Prevent compiler warnings */
+    ruleAMPERSAND_TOKEx: ;
+
+}
+// $ANTLR end AMPERSAND_TOK
+
+//   Comes from: 712:19: ( 'and' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start AND_TOK
+ *
+ * Looks to match the characters the constitute the token AND_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mAND_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = AND_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:712:19: ( 'and' )
+    // ../../../../../../src/parser/smt1/Smt1.g:712:21: 'and'
+    {
+        MATCHS(lit_22);
+        if  (HASEXCEPTION())
+        {
+            goto ruleAND_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleAND_TOKEx; /* Prevent compiler warnings */
+    ruleAND_TOKEx: ;
+
+}
+// $ANTLR end AND_TOK
+
+//   Comes from: 713:19: ( '@' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start AT_TOK
+ *
+ * Looks to match the characters the constitute the token AT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mAT_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = AT_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:713:19: ( '@' )
+    // ../../../../../../src/parser/smt1/Smt1.g:713:21: '@'
+    {
+        MATCHC('@');
+        if  (HASEXCEPTION())
+        {
+            goto ruleAT_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleAT_TOKEx; /* Prevent compiler warnings */
+    ruleAT_TOKEx: ;
+
+}
+// $ANTLR end AT_TOK
+
+//   Comes from: 714:19: ( 'distinct' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DISTINCT_TOK
+ *
+ * Looks to match the characters the constitute the token DISTINCT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDISTINCT_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DISTINCT_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:714:19: ( 'distinct' )
+    // ../../../../../../src/parser/smt1/Smt1.g:714:21: 'distinct'
+    {
+        MATCHS(lit_23);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDISTINCT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDISTINCT_TOKEx; /* Prevent compiler warnings */
+    ruleDISTINCT_TOKEx: ;
+
+}
+// $ANTLR end DISTINCT_TOK
+
+//   Comes from: 715:19: ( '/' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DIV_TOK
+ *
+ * Looks to match the characters the constitute the token DIV_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDIV_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DIV_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:715:19: ( '/' )
+    // ../../../../../../src/parser/smt1/Smt1.g:715:21: '/'
+    {
+        MATCHC('/');
+        if  (HASEXCEPTION())
+        {
+            goto ruleDIV_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDIV_TOKEx; /* Prevent compiler warnings */
+    ruleDIV_TOKEx: ;
+
+}
+// $ANTLR end DIV_TOK
+
+//   Comes from: 716:19: ( '=' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start EQUAL_TOK
+ *
+ * Looks to match the characters the constitute the token EQUAL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mEQUAL_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = EQUAL_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:716:19: ( '=' )
+    // ../../../../../../src/parser/smt1/Smt1.g:716:21: '='
+    {
+        MATCHC('=');
+        if  (HASEXCEPTION())
+        {
+            goto ruleEQUAL_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleEQUAL_TOKEx; /* Prevent compiler warnings */
+    ruleEQUAL_TOKEx: ;
+
+}
+// $ANTLR end EQUAL_TOK
+
+//   Comes from: 717:19: ( 'exists' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start EXISTS_TOK
+ *
+ * Looks to match the characters the constitute the token EXISTS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mEXISTS_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = EXISTS_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:717:19: ( 'exists' )
+    // ../../../../../../src/parser/smt1/Smt1.g:717:21: 'exists'
+    {
+        MATCHS(lit_24);
+        if  (HASEXCEPTION())
+        {
+            goto ruleEXISTS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleEXISTS_TOKEx; /* Prevent compiler warnings */
+    ruleEXISTS_TOKEx: ;
+
+}
+// $ANTLR end EXISTS_TOK
+
+//   Comes from: 718:19: ( 'forall' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FORALL_TOK
+ *
+ * Looks to match the characters the constitute the token FORALL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFORALL_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FORALL_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:718:19: ( 'forall' )
+    // ../../../../../../src/parser/smt1/Smt1.g:718:21: 'forall'
+    {
+        MATCHS(lit_25);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFORALL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFORALL_TOKEx; /* Prevent compiler warnings */
+    ruleFORALL_TOKEx: ;
+
+}
+// $ANTLR end FORALL_TOK
+
+//   Comes from: 719:19: ( '>' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start GREATER_THAN_TOK
+ *
+ * Looks to match the characters the constitute the token GREATER_THAN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mGREATER_THAN_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = GREATER_THAN_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:719:19: ( '>' )
+    // ../../../../../../src/parser/smt1/Smt1.g:719:21: '>'
+    {
+        MATCHC('>');
+        if  (HASEXCEPTION())
+        {
+            goto ruleGREATER_THAN_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleGREATER_THAN_TOKEx; /* Prevent compiler warnings */
+    ruleGREATER_THAN_TOKEx: ;
+
+}
+// $ANTLR end GREATER_THAN_TOK
+
+//   Comes from: 720:19: ( 'iff' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start IFF_TOK
+ *
+ * Looks to match the characters the constitute the token IFF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mIFF_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = IFF_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:720:19: ( 'iff' )
+    // ../../../../../../src/parser/smt1/Smt1.g:720:21: 'iff'
+    {
+        MATCHS(lit_26);
+        if  (HASEXCEPTION())
+        {
+            goto ruleIFF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleIFF_TOKEx; /* Prevent compiler warnings */
+    ruleIFF_TOKEx: ;
+
+}
+// $ANTLR end IFF_TOK
+
+//   Comes from: 721:19: ( 'implies' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start IMPLIES_TOK
+ *
+ * Looks to match the characters the constitute the token IMPLIES_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mIMPLIES_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = IMPLIES_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:721:19: ( 'implies' )
+    // ../../../../../../src/parser/smt1/Smt1.g:721:21: 'implies'
+    {
+        MATCHS(lit_27);
+        if  (HASEXCEPTION())
+        {
+            goto ruleIMPLIES_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleIMPLIES_TOKEx; /* Prevent compiler warnings */
+    ruleIMPLIES_TOKEx: ;
+
+}
+// $ANTLR end IMPLIES_TOK
+
+//   Comes from: 722:19: ( '<' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LESS_THAN_TOK
+ *
+ * Looks to match the characters the constitute the token LESS_THAN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLESS_THAN_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LESS_THAN_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:722:19: ( '<' )
+    // ../../../../../../src/parser/smt1/Smt1.g:722:21: '<'
+    {
+        MATCHC('<');
+        if  (HASEXCEPTION())
+        {
+            goto ruleLESS_THAN_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLESS_THAN_TOKEx; /* Prevent compiler warnings */
+    ruleLESS_THAN_TOKEx: ;
+
+}
+// $ANTLR end LESS_THAN_TOK
+
+//   Comes from: 723:19: ( '-' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start MINUS_TOK
+ *
+ * Looks to match the characters the constitute the token MINUS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mMINUS_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = MINUS_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:723:19: ( '-' )
+    // ../../../../../../src/parser/smt1/Smt1.g:723:21: '-'
+    {
+        MATCHC('-');
+        if  (HASEXCEPTION())
+        {
+            goto ruleMINUS_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleMINUS_TOKEx; /* Prevent compiler warnings */
+    ruleMINUS_TOKEx: ;
+
+}
+// $ANTLR end MINUS_TOK
+
+//   Comes from: 724:19: ( 'not' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start NOT_TOK
+ *
+ * Looks to match the characters the constitute the token NOT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mNOT_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = NOT_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:724:19: ( 'not' )
+    // ../../../../../../src/parser/smt1/Smt1.g:724:21: 'not'
+    {
+        MATCHS(lit_28);
+        if  (HASEXCEPTION())
+        {
+            goto ruleNOT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleNOT_TOKEx; /* Prevent compiler warnings */
+    ruleNOT_TOKEx: ;
+
+}
+// $ANTLR end NOT_TOK
+
+//   Comes from: 725:19: ( 'or' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start OR_TOK
+ *
+ * Looks to match the characters the constitute the token OR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mOR_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = OR_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:725:19: ( 'or' )
+    // ../../../../../../src/parser/smt1/Smt1.g:725:21: 'or'
+    {
+        MATCHS(lit_29);
+        if  (HASEXCEPTION())
+        {
+            goto ruleOR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleOR_TOKEx; /* Prevent compiler warnings */
+    ruleOR_TOKEx: ;
+
+}
+// $ANTLR end OR_TOK
+
+//   Comes from: 726:19: ( '%' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start PERCENT_TOK
+ *
+ * Looks to match the characters the constitute the token PERCENT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPERCENT_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = PERCENT_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:726:19: ( '%' )
+    // ../../../../../../src/parser/smt1/Smt1.g:726:21: '%'
+    {
+        MATCHC('%');
+        if  (HASEXCEPTION())
+        {
+            goto rulePERCENT_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePERCENT_TOKEx; /* Prevent compiler warnings */
+    rulePERCENT_TOKEx: ;
+
+}
+// $ANTLR end PERCENT_TOK
+
+//   Comes from: 727:19: ( '|' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start PIPE_TOK
+ *
+ * Looks to match the characters the constitute the token PIPE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPIPE_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = PIPE_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:727:19: ( '|' )
+    // ../../../../../../src/parser/smt1/Smt1.g:727:21: '|'
+    {
+        MATCHC('|');
+        if  (HASEXCEPTION())
+        {
+            goto rulePIPE_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePIPE_TOKEx; /* Prevent compiler warnings */
+    rulePIPE_TOKEx: ;
+
+}
+// $ANTLR end PIPE_TOK
+
+//   Comes from: 728:19: ( '+' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start PLUS_TOK
+ *
+ * Looks to match the characters the constitute the token PLUS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPLUS_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = PLUS_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:728:19: ( '+' )
+    // ../../../../../../src/parser/smt1/Smt1.g:728:21: '+'
+    {
+        MATCHC('+');
+        if  (HASEXCEPTION())
+        {
+            goto rulePLUS_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePLUS_TOKEx; /* Prevent compiler warnings */
+    rulePLUS_TOKEx: ;
+
+}
+// $ANTLR end PLUS_TOK
+
+//   Comes from: 729:19: ( '#' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start POUND_TOK
+ *
+ * Looks to match the characters the constitute the token POUND_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPOUND_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = POUND_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:729:19: ( '#' )
+    // ../../../../../../src/parser/smt1/Smt1.g:729:21: '#'
+    {
+        MATCHC('#');
+        if  (HASEXCEPTION())
+        {
+            goto rulePOUND_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePOUND_TOKEx; /* Prevent compiler warnings */
+    rulePOUND_TOKEx: ;
+
+}
+// $ANTLR end POUND_TOK
+
+//   Comes from: 730:19: ( 'select' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SELECT_TOK
+ *
+ * Looks to match the characters the constitute the token SELECT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSELECT_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SELECT_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:730:19: ( 'select' )
+    // ../../../../../../src/parser/smt1/Smt1.g:730:21: 'select'
+    {
+        MATCHS(lit_30);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSELECT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSELECT_TOKEx; /* Prevent compiler warnings */
+    ruleSELECT_TOKEx: ;
+
+}
+// $ANTLR end SELECT_TOK
+
+//   Comes from: 731:19: ( '*' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STAR_TOK
+ *
+ * Looks to match the characters the constitute the token STAR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTAR_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STAR_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:731:19: ( '*' )
+    // ../../../../../../src/parser/smt1/Smt1.g:731:21: '*'
+    {
+        MATCHC('*');
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTAR_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTAR_TOKEx; /* Prevent compiler warnings */
+    ruleSTAR_TOKEx: ;
+
+}
+// $ANTLR end STAR_TOK
+
+//   Comes from: 732:19: ( 'store' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STORE_TOK
+ *
+ * Looks to match the characters the constitute the token STORE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTORE_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STORE_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:732:19: ( 'store' )
+    // ../../../../../../src/parser/smt1/Smt1.g:732:21: 'store'
+    {
+        MATCHS(lit_31);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTORE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTORE_TOKEx; /* Prevent compiler warnings */
+    ruleSTORE_TOKEx: ;
+
+}
+// $ANTLR end STORE_TOK
+
+//   Comes from: 733:19: ( '~' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start TILDE_TOK
+ *
+ * Looks to match the characters the constitute the token TILDE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mTILDE_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = TILDE_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:733:19: ( '~' )
+    // ../../../../../../src/parser/smt1/Smt1.g:733:21: '~'
+    {
+        MATCHC('~');
+        if  (HASEXCEPTION())
+        {
+            goto ruleTILDE_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleTILDE_TOKEx; /* Prevent compiler warnings */
+    ruleTILDE_TOKEx: ;
+
+}
+// $ANTLR end TILDE_TOK
+
+//   Comes from: 734:19: ( 'xor' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start XOR_TOK
+ *
+ * Looks to match the characters the constitute the token XOR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mXOR_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = XOR_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:734:19: ( 'xor' )
+    // ../../../../../../src/parser/smt1/Smt1.g:734:21: 'xor'
+    {
+        MATCHS(lit_32);
+        if  (HASEXCEPTION())
+        {
+            goto ruleXOR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleXOR_TOKEx; /* Prevent compiler warnings */
+    ruleXOR_TOKEx: ;
+
+}
+// $ANTLR end XOR_TOK
+
+//   Comes from: 737:19: ( 'BitVec' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BITVECTOR_TOK
+ *
+ * Looks to match the characters the constitute the token BITVECTOR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBITVECTOR_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BITVECTOR_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:737:19: ( 'BitVec' )
+    // ../../../../../../src/parser/smt1/Smt1.g:737:21: 'BitVec'
+    {
+        MATCHS(lit_33);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBITVECTOR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBITVECTOR_TOKEx; /* Prevent compiler warnings */
+    ruleBITVECTOR_TOKEx: ;
+
+}
+// $ANTLR end BITVECTOR_TOK
+
+//   Comes from: 738:19: ( 'concat' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start CONCAT_TOK
+ *
+ * Looks to match the characters the constitute the token CONCAT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCONCAT_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = CONCAT_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:738:19: ( 'concat' )
+    // ../../../../../../src/parser/smt1/Smt1.g:738:21: 'concat'
+    {
+        MATCHS(lit_34);
+        if  (HASEXCEPTION())
+        {
+            goto ruleCONCAT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCONCAT_TOKEx; /* Prevent compiler warnings */
+    ruleCONCAT_TOKEx: ;
+
+}
+// $ANTLR end CONCAT_TOK
+
+//   Comes from: 739:19: ( 'extract' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start EXTRACT_TOK
+ *
+ * Looks to match the characters the constitute the token EXTRACT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mEXTRACT_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = EXTRACT_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:739:19: ( 'extract' )
+    // ../../../../../../src/parser/smt1/Smt1.g:739:21: 'extract'
+    {
+        MATCHS(lit_35);
+        if  (HASEXCEPTION())
+        {
+            goto ruleEXTRACT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleEXTRACT_TOKEx; /* Prevent compiler warnings */
+    ruleEXTRACT_TOKEx: ;
+
+}
+// $ANTLR end EXTRACT_TOK
+
+//   Comes from: 740:19: ( 'bvand' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVAND_TOK
+ *
+ * Looks to match the characters the constitute the token BVAND_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVAND_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVAND_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:740:19: ( 'bvand' )
+    // ../../../../../../src/parser/smt1/Smt1.g:740:21: 'bvand'
+    {
+        MATCHS(lit_36);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVAND_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVAND_TOKEx; /* Prevent compiler warnings */
+    ruleBVAND_TOKEx: ;
+
+}
+// $ANTLR end BVAND_TOK
+
+//   Comes from: 741:19: ( 'bvor' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVOR_TOK
+ *
+ * Looks to match the characters the constitute the token BVOR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVOR_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVOR_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:741:19: ( 'bvor' )
+    // ../../../../../../src/parser/smt1/Smt1.g:741:21: 'bvor'
+    {
+        MATCHS(lit_37);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVOR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVOR_TOKEx; /* Prevent compiler warnings */
+    ruleBVOR_TOKEx: ;
+
+}
+// $ANTLR end BVOR_TOK
+
+//   Comes from: 742:19: ( 'bvxor' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVXOR_TOK
+ *
+ * Looks to match the characters the constitute the token BVXOR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVXOR_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVXOR_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:742:19: ( 'bvxor' )
+    // ../../../../../../src/parser/smt1/Smt1.g:742:21: 'bvxor'
+    {
+        MATCHS(lit_38);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVXOR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVXOR_TOKEx; /* Prevent compiler warnings */
+    ruleBVXOR_TOKEx: ;
+
+}
+// $ANTLR end BVXOR_TOK
+
+//   Comes from: 743:19: ( 'bvnot' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVNOT_TOK
+ *
+ * Looks to match the characters the constitute the token BVNOT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVNOT_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVNOT_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:743:19: ( 'bvnot' )
+    // ../../../../../../src/parser/smt1/Smt1.g:743:21: 'bvnot'
+    {
+        MATCHS(lit_39);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVNOT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVNOT_TOKEx; /* Prevent compiler warnings */
+    ruleBVNOT_TOKEx: ;
+
+}
+// $ANTLR end BVNOT_TOK
+
+//   Comes from: 744:19: ( 'bvnand' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVNAND_TOK
+ *
+ * Looks to match the characters the constitute the token BVNAND_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVNAND_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVNAND_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:744:19: ( 'bvnand' )
+    // ../../../../../../src/parser/smt1/Smt1.g:744:21: 'bvnand'
+    {
+        MATCHS(lit_40);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVNAND_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVNAND_TOKEx; /* Prevent compiler warnings */
+    ruleBVNAND_TOKEx: ;
+
+}
+// $ANTLR end BVNAND_TOK
+
+//   Comes from: 745:19: ( 'bvnor' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVNOR_TOK
+ *
+ * Looks to match the characters the constitute the token BVNOR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVNOR_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVNOR_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:745:19: ( 'bvnor' )
+    // ../../../../../../src/parser/smt1/Smt1.g:745:21: 'bvnor'
+    {
+        MATCHS(lit_41);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVNOR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVNOR_TOKEx; /* Prevent compiler warnings */
+    ruleBVNOR_TOKEx: ;
+
+}
+// $ANTLR end BVNOR_TOK
+
+//   Comes from: 746:19: ( 'bvxnor' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVXNOR_TOK
+ *
+ * Looks to match the characters the constitute the token BVXNOR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVXNOR_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVXNOR_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:746:19: ( 'bvxnor' )
+    // ../../../../../../src/parser/smt1/Smt1.g:746:21: 'bvxnor'
+    {
+        MATCHS(lit_42);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVXNOR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVXNOR_TOKEx; /* Prevent compiler warnings */
+    ruleBVXNOR_TOKEx: ;
+
+}
+// $ANTLR end BVXNOR_TOK
+
+//   Comes from: 747:19: ( 'bvcomp' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVCOMP_TOK
+ *
+ * Looks to match the characters the constitute the token BVCOMP_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVCOMP_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVCOMP_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:747:19: ( 'bvcomp' )
+    // ../../../../../../src/parser/smt1/Smt1.g:747:21: 'bvcomp'
+    {
+        MATCHS(lit_43);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVCOMP_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVCOMP_TOKEx; /* Prevent compiler warnings */
+    ruleBVCOMP_TOKEx: ;
+
+}
+// $ANTLR end BVCOMP_TOK
+
+//   Comes from: 748:19: ( 'bvmul' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVMUL_TOK
+ *
+ * Looks to match the characters the constitute the token BVMUL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVMUL_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVMUL_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:748:19: ( 'bvmul' )
+    // ../../../../../../src/parser/smt1/Smt1.g:748:21: 'bvmul'
+    {
+        MATCHS(lit_44);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVMUL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVMUL_TOKEx; /* Prevent compiler warnings */
+    ruleBVMUL_TOKEx: ;
+
+}
+// $ANTLR end BVMUL_TOK
+
+//   Comes from: 749:19: ( 'bvadd' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVADD_TOK
+ *
+ * Looks to match the characters the constitute the token BVADD_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVADD_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVADD_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:749:19: ( 'bvadd' )
+    // ../../../../../../src/parser/smt1/Smt1.g:749:21: 'bvadd'
+    {
+        MATCHS(lit_45);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVADD_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVADD_TOKEx; /* Prevent compiler warnings */
+    ruleBVADD_TOKEx: ;
+
+}
+// $ANTLR end BVADD_TOK
+
+//   Comes from: 750:19: ( 'bvsub' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVSUB_TOK
+ *
+ * Looks to match the characters the constitute the token BVSUB_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVSUB_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVSUB_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:750:19: ( 'bvsub' )
+    // ../../../../../../src/parser/smt1/Smt1.g:750:21: 'bvsub'
+    {
+        MATCHS(lit_46);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVSUB_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVSUB_TOKEx; /* Prevent compiler warnings */
+    ruleBVSUB_TOKEx: ;
+
+}
+// $ANTLR end BVSUB_TOK
+
+//   Comes from: 751:19: ( 'bvneg' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVNEG_TOK
+ *
+ * Looks to match the characters the constitute the token BVNEG_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVNEG_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVNEG_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:751:19: ( 'bvneg' )
+    // ../../../../../../src/parser/smt1/Smt1.g:751:21: 'bvneg'
+    {
+        MATCHS(lit_47);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVNEG_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVNEG_TOKEx; /* Prevent compiler warnings */
+    ruleBVNEG_TOKEx: ;
+
+}
+// $ANTLR end BVNEG_TOK
+
+//   Comes from: 752:19: ( 'bvudiv' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVUDIV_TOK
+ *
+ * Looks to match the characters the constitute the token BVUDIV_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVUDIV_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVUDIV_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:752:19: ( 'bvudiv' )
+    // ../../../../../../src/parser/smt1/Smt1.g:752:21: 'bvudiv'
+    {
+        MATCHS(lit_48);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVUDIV_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVUDIV_TOKEx; /* Prevent compiler warnings */
+    ruleBVUDIV_TOKEx: ;
+
+}
+// $ANTLR end BVUDIV_TOK
+
+//   Comes from: 753:19: ( 'bvurem' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVUREM_TOK
+ *
+ * Looks to match the characters the constitute the token BVUREM_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVUREM_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVUREM_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:753:19: ( 'bvurem' )
+    // ../../../../../../src/parser/smt1/Smt1.g:753:21: 'bvurem'
+    {
+        MATCHS(lit_49);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVUREM_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVUREM_TOKEx; /* Prevent compiler warnings */
+    ruleBVUREM_TOKEx: ;
+
+}
+// $ANTLR end BVUREM_TOK
+
+//   Comes from: 754:19: ( 'bvsdiv' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVSDIV_TOK
+ *
+ * Looks to match the characters the constitute the token BVSDIV_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVSDIV_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVSDIV_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:754:19: ( 'bvsdiv' )
+    // ../../../../../../src/parser/smt1/Smt1.g:754:21: 'bvsdiv'
+    {
+        MATCHS(lit_50);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVSDIV_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVSDIV_TOKEx; /* Prevent compiler warnings */
+    ruleBVSDIV_TOKEx: ;
+
+}
+// $ANTLR end BVSDIV_TOK
+
+//   Comes from: 755:19: ( 'bvsrem' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVSREM_TOK
+ *
+ * Looks to match the characters the constitute the token BVSREM_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVSREM_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVSREM_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:755:19: ( 'bvsrem' )
+    // ../../../../../../src/parser/smt1/Smt1.g:755:21: 'bvsrem'
+    {
+        MATCHS(lit_51);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVSREM_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVSREM_TOKEx; /* Prevent compiler warnings */
+    ruleBVSREM_TOKEx: ;
+
+}
+// $ANTLR end BVSREM_TOK
+
+//   Comes from: 756:19: ( 'bvsmod' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVSMOD_TOK
+ *
+ * Looks to match the characters the constitute the token BVSMOD_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVSMOD_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVSMOD_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:756:19: ( 'bvsmod' )
+    // ../../../../../../src/parser/smt1/Smt1.g:756:21: 'bvsmod'
+    {
+        MATCHS(lit_52);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVSMOD_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVSMOD_TOKEx; /* Prevent compiler warnings */
+    ruleBVSMOD_TOKEx: ;
+
+}
+// $ANTLR end BVSMOD_TOK
+
+//   Comes from: 757:19: ( 'bvshl' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVSHL_TOK
+ *
+ * Looks to match the characters the constitute the token BVSHL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVSHL_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVSHL_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:757:19: ( 'bvshl' )
+    // ../../../../../../src/parser/smt1/Smt1.g:757:21: 'bvshl'
+    {
+        MATCHS(lit_53);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVSHL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVSHL_TOKEx; /* Prevent compiler warnings */
+    ruleBVSHL_TOKEx: ;
+
+}
+// $ANTLR end BVSHL_TOK
+
+//   Comes from: 758:19: ( 'bvlshr' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVLSHR_TOK
+ *
+ * Looks to match the characters the constitute the token BVLSHR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVLSHR_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVLSHR_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:758:19: ( 'bvlshr' )
+    // ../../../../../../src/parser/smt1/Smt1.g:758:21: 'bvlshr'
+    {
+        MATCHS(lit_54);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVLSHR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVLSHR_TOKEx; /* Prevent compiler warnings */
+    ruleBVLSHR_TOKEx: ;
+
+}
+// $ANTLR end BVLSHR_TOK
+
+//   Comes from: 759:19: ( 'bvashr' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVASHR_TOK
+ *
+ * Looks to match the characters the constitute the token BVASHR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVASHR_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVASHR_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:759:19: ( 'bvashr' )
+    // ../../../../../../src/parser/smt1/Smt1.g:759:21: 'bvashr'
+    {
+        MATCHS(lit_55);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVASHR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVASHR_TOKEx; /* Prevent compiler warnings */
+    ruleBVASHR_TOKEx: ;
+
+}
+// $ANTLR end BVASHR_TOK
+
+//   Comes from: 760:19: ( 'bvult' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVULT_TOK
+ *
+ * Looks to match the characters the constitute the token BVULT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVULT_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVULT_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:760:19: ( 'bvult' )
+    // ../../../../../../src/parser/smt1/Smt1.g:760:21: 'bvult'
+    {
+        MATCHS(lit_56);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVULT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVULT_TOKEx; /* Prevent compiler warnings */
+    ruleBVULT_TOKEx: ;
+
+}
+// $ANTLR end BVULT_TOK
+
+//   Comes from: 761:19: ( 'bvule' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVULE_TOK
+ *
+ * Looks to match the characters the constitute the token BVULE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVULE_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVULE_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:761:19: ( 'bvule' )
+    // ../../../../../../src/parser/smt1/Smt1.g:761:21: 'bvule'
+    {
+        MATCHS(lit_57);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVULE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVULE_TOKEx; /* Prevent compiler warnings */
+    ruleBVULE_TOKEx: ;
+
+}
+// $ANTLR end BVULE_TOK
+
+//   Comes from: 762:19: ( 'bvugt' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVUGT_TOK
+ *
+ * Looks to match the characters the constitute the token BVUGT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVUGT_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVUGT_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:762:19: ( 'bvugt' )
+    // ../../../../../../src/parser/smt1/Smt1.g:762:21: 'bvugt'
+    {
+        MATCHS(lit_58);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVUGT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVUGT_TOKEx; /* Prevent compiler warnings */
+    ruleBVUGT_TOKEx: ;
+
+}
+// $ANTLR end BVUGT_TOK
+
+//   Comes from: 763:19: ( 'bvuge' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVUGE_TOK
+ *
+ * Looks to match the characters the constitute the token BVUGE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVUGE_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVUGE_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:763:19: ( 'bvuge' )
+    // ../../../../../../src/parser/smt1/Smt1.g:763:21: 'bvuge'
+    {
+        MATCHS(lit_59);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVUGE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVUGE_TOKEx; /* Prevent compiler warnings */
+    ruleBVUGE_TOKEx: ;
+
+}
+// $ANTLR end BVUGE_TOK
+
+//   Comes from: 764:19: ( 'bvslt' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVSLT_TOK
+ *
+ * Looks to match the characters the constitute the token BVSLT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVSLT_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVSLT_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:764:19: ( 'bvslt' )
+    // ../../../../../../src/parser/smt1/Smt1.g:764:21: 'bvslt'
+    {
+        MATCHS(lit_60);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVSLT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVSLT_TOKEx; /* Prevent compiler warnings */
+    ruleBVSLT_TOKEx: ;
+
+}
+// $ANTLR end BVSLT_TOK
+
+//   Comes from: 765:19: ( 'bvsle' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVSLE_TOK
+ *
+ * Looks to match the characters the constitute the token BVSLE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVSLE_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVSLE_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:765:19: ( 'bvsle' )
+    // ../../../../../../src/parser/smt1/Smt1.g:765:21: 'bvsle'
+    {
+        MATCHS(lit_61);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVSLE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVSLE_TOKEx; /* Prevent compiler warnings */
+    ruleBVSLE_TOKEx: ;
+
+}
+// $ANTLR end BVSLE_TOK
+
+//   Comes from: 766:19: ( 'bvsgt' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVSGT_TOK
+ *
+ * Looks to match the characters the constitute the token BVSGT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVSGT_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVSGT_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:766:19: ( 'bvsgt' )
+    // ../../../../../../src/parser/smt1/Smt1.g:766:21: 'bvsgt'
+    {
+        MATCHS(lit_62);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVSGT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVSGT_TOKEx; /* Prevent compiler warnings */
+    ruleBVSGT_TOKEx: ;
+
+}
+// $ANTLR end BVSGT_TOK
+
+//   Comes from: 767:19: ( 'bvsge' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BVSGE_TOK
+ *
+ * Looks to match the characters the constitute the token BVSGE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBVSGE_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BVSGE_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:767:19: ( 'bvsge' )
+    // ../../../../../../src/parser/smt1/Smt1.g:767:21: 'bvsge'
+    {
+        MATCHS(lit_63);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBVSGE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBVSGE_TOKEx; /* Prevent compiler warnings */
+    ruleBVSGE_TOKEx: ;
+
+}
+// $ANTLR end BVSGE_TOK
+
+//   Comes from: 768:19: ( 'repeat' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start REPEAT_TOK
+ *
+ * Looks to match the characters the constitute the token REPEAT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mREPEAT_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = REPEAT_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:768:19: ( 'repeat' )
+    // ../../../../../../src/parser/smt1/Smt1.g:768:21: 'repeat'
+    {
+        MATCHS(lit_64);
+        if  (HASEXCEPTION())
+        {
+            goto ruleREPEAT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleREPEAT_TOKEx; /* Prevent compiler warnings */
+    ruleREPEAT_TOKEx: ;
+
+}
+// $ANTLR end REPEAT_TOK
+
+//   Comes from: 769:19: ( 'zero_extend' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ZERO_EXTEND_TOK
+ *
+ * Looks to match the characters the constitute the token ZERO_EXTEND_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mZERO_EXTEND_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ZERO_EXTEND_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:769:19: ( 'zero_extend' )
+    // ../../../../../../src/parser/smt1/Smt1.g:769:21: 'zero_extend'
+    {
+        MATCHS(lit_65);
+        if  (HASEXCEPTION())
+        {
+            goto ruleZERO_EXTEND_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleZERO_EXTEND_TOKEx; /* Prevent compiler warnings */
+    ruleZERO_EXTEND_TOKEx: ;
+
+}
+// $ANTLR end ZERO_EXTEND_TOK
+
+//   Comes from: 770:19: ( 'sign_extend' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SIGN_EXTEND_TOK
+ *
+ * Looks to match the characters the constitute the token SIGN_EXTEND_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSIGN_EXTEND_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SIGN_EXTEND_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:770:19: ( 'sign_extend' )
+    // ../../../../../../src/parser/smt1/Smt1.g:770:21: 'sign_extend'
+    {
+        MATCHS(lit_66);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSIGN_EXTEND_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSIGN_EXTEND_TOKEx; /* Prevent compiler warnings */
+    ruleSIGN_EXTEND_TOKEx: ;
+
+}
+// $ANTLR end SIGN_EXTEND_TOK
+
+//   Comes from: 771:19: ( 'rotate_left' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ROTATE_LEFT_TOK
+ *
+ * Looks to match the characters the constitute the token ROTATE_LEFT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mROTATE_LEFT_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ROTATE_LEFT_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:771:19: ( 'rotate_left' )
+    // ../../../../../../src/parser/smt1/Smt1.g:771:21: 'rotate_left'
+    {
+        MATCHS(lit_67);
+        if  (HASEXCEPTION())
+        {
+            goto ruleROTATE_LEFT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleROTATE_LEFT_TOKEx; /* Prevent compiler warnings */
+    ruleROTATE_LEFT_TOKEx: ;
+
+}
+// $ANTLR end ROTATE_LEFT_TOK
+
+//   Comes from: 772:19: ( 'rotate_right' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ROTATE_RIGHT_TOK
+ *
+ * Looks to match the characters the constitute the token ROTATE_RIGHT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mROTATE_RIGHT_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ROTATE_RIGHT_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:772:19: ( 'rotate_right' )
+    // ../../../../../../src/parser/smt1/Smt1.g:772:21: 'rotate_right'
+    {
+        MATCHS(lit_68);
+        if  (HASEXCEPTION())
+        {
+            goto ruleROTATE_RIGHT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleROTATE_RIGHT_TOKEx; /* Prevent compiler warnings */
+    ruleROTATE_RIGHT_TOKEx: ;
+
+}
+// $ANTLR end ROTATE_RIGHT_TOK
+
+//   Comes from: 781:3: ( 'bv' ( DIGIT )+ )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BITVECTOR_BV_CONST
+ *
+ * Looks to match the characters the constitute the token BITVECTOR_BV_CONST
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBITVECTOR_BV_CONST(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BITVECTOR_BV_CONST;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:781:3: ( 'bv' ( DIGIT )+ )
+    // ../../../../../../src/parser/smt1/Smt1.g:781:5: 'bv' ( DIGIT )+
+    {
+        MATCHS(lit_69);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBITVECTOR_BV_CONSTEx;
+        }
+
+
+
+
+        // ../../../../../../src/parser/smt1/Smt1.g:781:10: ( DIGIT )+
+        {
+            int cnt2=0;
+
+            for (;;)
+            {
+                int alt2=2;
+        	switch ( LA(1) )
+        	{
+        	case '0':
+        	case '1':
+        	case '2':
+        	case '3':
+        	case '4':
+        	case '5':
+        	case '6':
+        	case '7':
+        	case '8':
+        	case '9':
+        		{
+        			alt2=1;
+        		}
+        	    break;
+
+        	}
+
+        	switch (alt2)
+        	{
+        	    case 1:
+        	        // ../../../../../../src/parser/smt1/Smt1.g:
+        	        {
+        	            if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
+        	            {
+        	                CONSUME();
+        	            }
+        	            else
+        	            {
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	                LRECOVER();
+        	                goto ruleBITVECTOR_BV_CONSTEx;
+        	            }
+
+
+        	        }
+        	        break;
+
+        	    default:
+
+        		if ( cnt2 >= 1 )
+        		{
+        		    goto loop2;
+        		}
+        		/* mismatchedSetEx()
+        		 */
+        		CONSTRUCTEX();
+        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        		goto ruleBITVECTOR_BV_CONSTEx;
+        	}
+        	cnt2++;
+            }
+            loop2: ;	/* Jump to here if this rule does not match */
+        }
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBITVECTOR_BV_CONSTEx; /* Prevent compiler warnings */
+    ruleBITVECTOR_BV_CONSTEx: ;
+
+}
+// $ANTLR end BITVECTOR_BV_CONST
+
+//   Comes from: 788:3: ( 'bit0' | 'bit1' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BITVECTOR1_BV_CONST
+ *
+ * Looks to match the characters the constitute the token BITVECTOR1_BV_CONST
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBITVECTOR1_BV_CONST(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BITVECTOR1_BV_CONST;
+
+
+    {
+        //  ../../../../../../src/parser/smt1/Smt1.g:788:3: ( 'bit0' | 'bit1' )
+
+        ANTLR3_UINT32 alt3;
+
+        alt3=2;
+
+        switch ( LA(1) )
+        {
+        case 'b':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case 'i':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case 't':
+        					{
+        						switch ( LA(4) )
+        						{
+        						case '0':
+        							{
+        								alt3=1;
+        							}
+        						    break;
+        						case '1':
+        							{
+        								alt3=2;
+        							}
+        						    break;
+
+        						default:
+        						    CONSTRUCTEX();
+        						    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        						    EXCEPTION->message      = (void *)"";
+        						    EXCEPTION->decisionNum  = 3;
+        						    EXCEPTION->state        = 3;
+
+
+        						    goto ruleBITVECTOR1_BV_CONSTEx;
+
+        						}
+
+        					}
+        				    break;
+
+        				default:
+        				    CONSTRUCTEX();
+        				    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        				    EXCEPTION->message      = (void *)"";
+        				    EXCEPTION->decisionNum  = 3;
+        				    EXCEPTION->state        = 2;
+
+
+        				    goto ruleBITVECTOR1_BV_CONSTEx;
+
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    CONSTRUCTEX();
+        		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        		    EXCEPTION->message      = (void *)"";
+        		    EXCEPTION->decisionNum  = 3;
+        		    EXCEPTION->state        = 1;
+
+
+        		    goto ruleBITVECTOR1_BV_CONSTEx;
+
+        		}
+
+        	}
+            break;
+
+        default:
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            EXCEPTION->message      = (void *)"";
+            EXCEPTION->decisionNum  = 3;
+            EXCEPTION->state        = 0;
+
+
+            goto ruleBITVECTOR1_BV_CONSTEx;
+
+        }
+
+        switch (alt3)
+        {
+    	case 1:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:788:5: 'bit0'
+    	    {
+    	        MATCHS(lit_70);
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleBITVECTOR1_BV_CONSTEx;
+    	        }
+
+
+
+
+    	    }
+    	    break;
+    	case 2:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:788:14: 'bit1'
+    	    {
+    	        MATCHS(lit_71);
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleBITVECTOR1_BV_CONSTEx;
+    	        }
+
+
+
+
+    	    }
+    	    break;
+
+        }
+    }
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBITVECTOR1_BV_CONSTEx; /* Prevent compiler warnings */
+    ruleBITVECTOR1_BV_CONSTEx: ;
+
+}
+// $ANTLR end BITVECTOR1_BV_CONST
+
+//   Comes from: 798:3: ( ALPHA ( ALPHA | DIGIT | '_' | '\\'' | '.' )* )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start IDENTIFIER
+ *
+ * Looks to match the characters the constitute the token IDENTIFIER
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mIDENTIFIER(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = IDENTIFIER;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:798:3: ( ALPHA ( ALPHA | DIGIT | '_' | '\\'' | '.' )* )
+    // ../../../../../../src/parser/smt1/Smt1.g:798:6: ALPHA ( ALPHA | DIGIT | '_' | '\\'' | '.' )*
+    {
+        /* 798:6: ALPHA ( ALPHA | DIGIT | '_' | '\\'' | '.' )* */
+        mALPHA(ctx );
+        if  (HASEXCEPTION())
+        {
+            goto ruleIDENTIFIEREx;
+        }
+
+
+
+        // ../../../../../../src/parser/smt1/Smt1.g:798:12: ( ALPHA | DIGIT | '_' | '\\'' | '.' )*
+
+        for (;;)
+        {
+            int alt4=2;
+            switch ( LA(1) )
+            {
+            case '\'':
+            case '.':
+            case '0':
+            case '1':
+            case '2':
+            case '3':
+            case '4':
+            case '5':
+            case '6':
+            case '7':
+            case '8':
+            case '9':
+            case 'A':
+            case 'B':
+            case 'C':
+            case 'D':
+            case 'E':
+            case 'F':
+            case 'G':
+            case 'H':
+            case 'I':
+            case 'J':
+            case 'K':
+            case 'L':
+            case 'M':
+            case 'N':
+            case 'O':
+            case 'P':
+            case 'Q':
+            case 'R':
+            case 'S':
+            case 'T':
+            case 'U':
+            case 'V':
+            case 'W':
+            case 'X':
+            case 'Y':
+            case 'Z':
+            case '_':
+            case 'a':
+            case 'b':
+            case 'c':
+            case 'd':
+            case 'e':
+            case 'f':
+            case 'g':
+            case 'h':
+            case 'i':
+            case 'j':
+            case 'k':
+            case 'l':
+            case 'm':
+            case 'n':
+            case 'o':
+            case 'p':
+            case 'q':
+            case 'r':
+            case 's':
+            case 't':
+            case 'u':
+            case 'v':
+            case 'w':
+            case 'x':
+            case 'y':
+            case 'z':
+            	{
+            		alt4=1;
+            	}
+                break;
+
+            }
+
+            switch (alt4)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:
+        	    {
+        	        if ( LA(1) == '\'' || LA(1) == '.' || ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'A') && (LA(1) <= 'Z')) || LA(1) == '_' || ((LA(1) >= 'a') && (LA(1) <= 'z')) )
+        	        {
+        	            CONSUME();
+        	        }
+        	        else
+        	        {
+        	            CONSTRUCTEX();
+        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	            LRECOVER();
+        	            goto ruleIDENTIFIEREx;
+        	        }
+
+
+        	    }
+        	    break;
+
+        	default:
+        	    goto loop4;	/* break out of the loop */
+        	    break;
+            }
+        }
+        loop4: ; /* Jump out to here if this rule does not match */
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleIDENTIFIEREx; /* Prevent compiler warnings */
+    ruleIDENTIFIEREx: ;
+
+}
+// $ANTLR end IDENTIFIER
+
+//   Comes from: 804:3: ( ':' IDENTIFIER )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ATTR_IDENTIFIER
+ *
+ * Looks to match the characters the constitute the token ATTR_IDENTIFIER
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mATTR_IDENTIFIER(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ATTR_IDENTIFIER;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:804:3: ( ':' IDENTIFIER )
+    // ../../../../../../src/parser/smt1/Smt1.g:804:6: ':' IDENTIFIER
+    {
+        MATCHC(':');
+        if  (HASEXCEPTION())
+        {
+            goto ruleATTR_IDENTIFIEREx;
+        }
+
+
+        /* 804:6: ':' IDENTIFIER */
+        mIDENTIFIER(ctx );
+        if  (HASEXCEPTION())
+        {
+            goto ruleATTR_IDENTIFIEREx;
+        }
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleATTR_IDENTIFIEREx; /* Prevent compiler warnings */
+    ruleATTR_IDENTIFIEREx: ;
+
+}
+// $ANTLR end ATTR_IDENTIFIER
+
+//   Comes from: 811:3: ( '?' IDENTIFIER )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LET_IDENTIFIER
+ *
+ * Looks to match the characters the constitute the token LET_IDENTIFIER
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLET_IDENTIFIER(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LET_IDENTIFIER;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:811:3: ( '?' IDENTIFIER )
+    // ../../../../../../src/parser/smt1/Smt1.g:811:5: '?' IDENTIFIER
+    {
+        MATCHC('?');
+        if  (HASEXCEPTION())
+        {
+            goto ruleLET_IDENTIFIEREx;
+        }
+
+
+        /* 811:5: '?' IDENTIFIER */
+        mIDENTIFIER(ctx );
+        if  (HASEXCEPTION())
+        {
+            goto ruleLET_IDENTIFIEREx;
+        }
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLET_IDENTIFIEREx; /* Prevent compiler warnings */
+    ruleLET_IDENTIFIEREx: ;
+
+}
+// $ANTLR end LET_IDENTIFIER
+
+//   Comes from: 818:3: ( '$' IDENTIFIER )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FLET_IDENTIFIER
+ *
+ * Looks to match the characters the constitute the token FLET_IDENTIFIER
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFLET_IDENTIFIER(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FLET_IDENTIFIER;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:818:3: ( '$' IDENTIFIER )
+    // ../../../../../../src/parser/smt1/Smt1.g:818:5: '$' IDENTIFIER
+    {
+        MATCHC('$');
+        if  (HASEXCEPTION())
+        {
+            goto ruleFLET_IDENTIFIEREx;
+        }
+
+
+        /* 818:5: '$' IDENTIFIER */
+        mIDENTIFIER(ctx );
+        if  (HASEXCEPTION())
+        {
+            goto ruleFLET_IDENTIFIEREx;
+        }
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFLET_IDENTIFIEREx; /* Prevent compiler warnings */
+    ruleFLET_IDENTIFIEREx: ;
+
+}
+// $ANTLR end FLET_IDENTIFIER
+
+//   Comes from: 837:3: ( ':pat' ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )* '{' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start PATTERN_ANNOTATION_BEGIN
+ *
+ * Looks to match the characters the constitute the token PATTERN_ANNOTATION_BEGIN
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPATTERN_ANNOTATION_BEGIN(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = PATTERN_ANNOTATION_BEGIN;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:837:3: ( ':pat' ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )* '{' )
+    // ../../../../../../src/parser/smt1/Smt1.g:837:5: ':pat' ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )* '{'
+    {
+        MATCHS(lit_1);
+        if  (HASEXCEPTION())
+        {
+            goto rulePATTERN_ANNOTATION_BEGINEx;
+        }
+
+
+
+
+        // ../../../../../../src/parser/smt1/Smt1.g:837:12: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )*
+
+        for (;;)
+        {
+            int alt5=2;
+            switch ( LA(1) )
+            {
+            case '\t':
+            case '\n':
+            case '\f':
+            case '\r':
+            case ' ':
+            	{
+            		alt5=1;
+            	}
+                break;
+
+            }
+
+            switch (alt5)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:
+        	    {
+        	        if ( ((LA(1) >= '\t') && (LA(1) <= '\n')) || ((LA(1) >= '\f') && (LA(1) <= '\r')) || LA(1) == ' ' )
+        	        {
+        	            CONSUME();
+        	        }
+        	        else
+        	        {
+        	            CONSTRUCTEX();
+        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	            LRECOVER();
+        	            goto rulePATTERN_ANNOTATION_BEGINEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+        	default:
+        	    goto loop5;	/* break out of the loop */
+        	    break;
+            }
+        }
+        loop5: ; /* Jump out to here if this rule does not match */
+
+
+        MATCHC('{');
+        if  (HASEXCEPTION())
+        {
+            goto rulePATTERN_ANNOTATION_BEGINEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePATTERN_ANNOTATION_BEGINEx; /* Prevent compiler warnings */
+    rulePATTERN_ANNOTATION_BEGINEx: ;
+
+}
+// $ANTLR end PATTERN_ANNOTATION_BEGIN
+
+//   Comes from: 841:3: ( '{' ( '\\\\{' | '\\\\}' |~ ( '{' | '}' ) )* '}' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start USER_VALUE
+ *
+ * Looks to match the characters the constitute the token USER_VALUE
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mUSER_VALUE(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = USER_VALUE;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:841:3: ( '{' ( '\\\\{' | '\\\\}' |~ ( '{' | '}' ) )* '}' )
+    // ../../../../../../src/parser/smt1/Smt1.g:841:5: '{' ( '\\\\{' | '\\\\}' |~ ( '{' | '}' ) )* '}'
+    {
+        MATCHC('{');
+        if  (HASEXCEPTION())
+        {
+            goto ruleUSER_VALUEEx;
+        }
+
+
+        // ../../../../../../src/parser/smt1/Smt1.g:841:9: ( '\\\\{' | '\\\\}' |~ ( '{' | '}' ) )*
+
+        for (;;)
+        {
+            int alt6=4;
+            {
+               /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)
+                */
+                int LA6_0 = LA(1);
+                if ( (LA6_0 == '\\'))
+                {
+                    {
+                       /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)
+                        */
+                        int LA6_2 = LA(2);
+                        if ( (LA6_2 == '{'))
+                        {
+                            alt6=1;
+                        }
+                        else if ( (LA6_2 == '}'))
+                        {
+                            {
+                               /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)
+                                */
+                                int LA6_5 = LA(3);
+                                if ( (((LA6_5 >= 0x0000) && (LA6_5 <= 'z')) || ((LA6_5 >= '|') && (LA6_5 <= 0xFFFF))))
+                                {
+                                    alt6=2;
+                                }
+
+                                else
+                                {
+                            	alt6=3;
+                                }
+
+                            }
+                        }
+                        else if ( (((LA6_2 >= 0x0000) && (LA6_2 <= 'z')) || LA6_2 == '|' || ((LA6_2 >= '~') && (LA6_2 <= 0xFFFF))))
+                        {
+                            alt6=3;
+                        }
+
+                    }
+                }
+                else if ( (((LA6_0 >= 0x0000) && (LA6_0 <= '[')) || ((LA6_0 >= ']') && (LA6_0 <= 'z')) || LA6_0 == '|' || ((LA6_0 >= '~') && (LA6_0 <= 0xFFFF))))
+                {
+                    alt6=3;
+                }
+
+            }
+            switch (alt6)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:841:10: '\\\\{'
+        	    {
+        	        MATCHS(lit_72);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleUSER_VALUEEx;
+        	        }
+
+
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:841:18: '\\\\}'
+        	    {
+        	        MATCHS(lit_73);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleUSER_VALUEEx;
+        	        }
+
+
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:841:26: ~ ( '{' | '}' )
+        	    {
+        	        if ( ((LA(1) >= 0x0000) && (LA(1) <= 'z')) || LA(1) == '|' || ((LA(1) >= '~') && (LA(1) <= 0xFFFF)) )
+        	        {
+        	            CONSUME();
+        	        }
+        	        else
+        	        {
+        	            CONSTRUCTEX();
+        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	            LRECOVER();
+        	            goto ruleUSER_VALUEEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+        	default:
+        	    goto loop6;	/* break out of the loop */
+        	    break;
+            }
+        }
+        loop6: ; /* Jump out to here if this rule does not match */
+
+
+        MATCHC('}');
+        if  (HASEXCEPTION())
+        {
+            goto ruleUSER_VALUEEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleUSER_VALUEEx; /* Prevent compiler warnings */
+    ruleUSER_VALUEEx: ;
+
+}
+// $ANTLR end USER_VALUE
+
+//   Comes from: 851:3: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start WHITESPACE
+ *
+ * Looks to match the characters the constitute the token WHITESPACE
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mWHITESPACE(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = WHITESPACE;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:851:3: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
+    // ../../../../../../src/parser/smt1/Smt1.g:851:5: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
+    {
+        // ../../../../../../src/parser/smt1/Smt1.g:851:5: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
+        {
+            int cnt7=0;
+
+            for (;;)
+            {
+                int alt7=2;
+        	switch ( LA(1) )
+        	{
+        	case '\t':
+        	case '\n':
+        	case '\f':
+        	case '\r':
+        	case ' ':
+        		{
+        			alt7=1;
+        		}
+        	    break;
+
+        	}
+
+        	switch (alt7)
+        	{
+        	    case 1:
+        	        // ../../../../../../src/parser/smt1/Smt1.g:
+        	        {
+        	            if ( ((LA(1) >= '\t') && (LA(1) <= '\n')) || ((LA(1) >= '\f') && (LA(1) <= '\r')) || LA(1) == ' ' )
+        	            {
+        	                CONSUME();
+        	            }
+        	            else
+        	            {
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	                LRECOVER();
+        	                goto ruleWHITESPACEEx;
+        	            }
+
+
+        	        }
+        	        break;
+
+        	    default:
+
+        		if ( cnt7 >= 1 )
+        		{
+        		    goto loop7;
+        		}
+        		/* mismatchedSetEx()
+        		 */
+        		CONSTRUCTEX();
+        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        		goto ruleWHITESPACEEx;
+        	}
+        	cnt7++;
+            }
+            loop7: ;	/* Jump to here if this rule does not match */
+        }
+
+        {
+             SKIP(); 
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleWHITESPACEEx; /* Prevent compiler warnings */
+    ruleWHITESPACEEx: ;
+
+}
+// $ANTLR end WHITESPACE
+
+//   Comes from: 859:3: ( ( DIGIT )+ )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start NUMERAL_TOK
+ *
+ * Looks to match the characters the constitute the token NUMERAL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mNUMERAL_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = NUMERAL_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:859:3: ( ( DIGIT )+ )
+    // ../../../../../../src/parser/smt1/Smt1.g:859:5: ( DIGIT )+
+    {
+        // ../../../../../../src/parser/smt1/Smt1.g:859:5: ( DIGIT )+
+        {
+            int cnt8=0;
+
+            for (;;)
+            {
+                int alt8=2;
+        	switch ( LA(1) )
+        	{
+        	case '0':
+        	case '1':
+        	case '2':
+        	case '3':
+        	case '4':
+        	case '5':
+        	case '6':
+        	case '7':
+        	case '8':
+        	case '9':
+        		{
+        			alt8=1;
+        		}
+        	    break;
+
+        	}
+
+        	switch (alt8)
+        	{
+        	    case 1:
+        	        // ../../../../../../src/parser/smt1/Smt1.g:
+        	        {
+        	            if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
+        	            {
+        	                CONSUME();
+        	            }
+        	            else
+        	            {
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	                LRECOVER();
+        	                goto ruleNUMERAL_TOKEx;
+        	            }
+
+
+        	        }
+        	        break;
+
+        	    default:
+
+        		if ( cnt8 >= 1 )
+        		{
+        		    goto loop8;
+        		}
+        		/* mismatchedSetEx()
+        		 */
+        		CONSTRUCTEX();
+        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        		goto ruleNUMERAL_TOKEx;
+        	}
+        	cnt8++;
+            }
+            loop8: ;	/* Jump to here if this rule does not match */
+        }
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleNUMERAL_TOKEx; /* Prevent compiler warnings */
+    ruleNUMERAL_TOKEx: ;
+
+}
+// $ANTLR end NUMERAL_TOK
+
+//   Comes from: 860:3: ( ( DIGIT )+ '.' ( DIGIT )+ )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start RATIONAL_TOK
+ *
+ * Looks to match the characters the constitute the token RATIONAL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mRATIONAL_TOK(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = RATIONAL_TOK;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:860:3: ( ( DIGIT )+ '.' ( DIGIT )+ )
+    // ../../../../../../src/parser/smt1/Smt1.g:860:5: ( DIGIT )+ '.' ( DIGIT )+
+    {
+        // ../../../../../../src/parser/smt1/Smt1.g:860:5: ( DIGIT )+
+        {
+            int cnt9=0;
+
+            for (;;)
+            {
+                int alt9=2;
+        	switch ( LA(1) )
+        	{
+        	case '0':
+        	case '1':
+        	case '2':
+        	case '3':
+        	case '4':
+        	case '5':
+        	case '6':
+        	case '7':
+        	case '8':
+        	case '9':
+        		{
+        			alt9=1;
+        		}
+        	    break;
+
+        	}
+
+        	switch (alt9)
+        	{
+        	    case 1:
+        	        // ../../../../../../src/parser/smt1/Smt1.g:
+        	        {
+        	            if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
+        	            {
+        	                CONSUME();
+        	            }
+        	            else
+        	            {
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	                LRECOVER();
+        	                goto ruleRATIONAL_TOKEx;
+        	            }
+
+
+        	        }
+        	        break;
+
+        	    default:
+
+        		if ( cnt9 >= 1 )
+        		{
+        		    goto loop9;
+        		}
+        		/* mismatchedSetEx()
+        		 */
+        		CONSTRUCTEX();
+        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        		goto ruleRATIONAL_TOKEx;
+        	}
+        	cnt9++;
+            }
+            loop9: ;	/* Jump to here if this rule does not match */
+        }
+
+        MATCHC('.');
+        if  (HASEXCEPTION())
+        {
+            goto ruleRATIONAL_TOKEx;
+        }
+
+
+        // ../../../../../../src/parser/smt1/Smt1.g:860:16: ( DIGIT )+
+        {
+            int cnt10=0;
+
+            for (;;)
+            {
+                int alt10=2;
+        	switch ( LA(1) )
+        	{
+        	case '0':
+        	case '1':
+        	case '2':
+        	case '3':
+        	case '4':
+        	case '5':
+        	case '6':
+        	case '7':
+        	case '8':
+        	case '9':
+        		{
+        			alt10=1;
+        		}
+        	    break;
+
+        	}
+
+        	switch (alt10)
+        	{
+        	    case 1:
+        	        // ../../../../../../src/parser/smt1/Smt1.g:
+        	        {
+        	            if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
+        	            {
+        	                CONSUME();
+        	            }
+        	            else
+        	            {
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	                LRECOVER();
+        	                goto ruleRATIONAL_TOKEx;
+        	            }
+
+
+        	        }
+        	        break;
+
+        	    default:
+
+        		if ( cnt10 >= 1 )
+        		{
+        		    goto loop10;
+        		}
+        		/* mismatchedSetEx()
+        		 */
+        		CONSTRUCTEX();
+        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        		goto ruleRATIONAL_TOKEx;
+        	}
+        	cnt10++;
+            }
+            loop10: ;	/* Jump to here if this rule does not match */
+        }
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleRATIONAL_TOKEx; /* Prevent compiler warnings */
+    ruleRATIONAL_TOKEx: ;
+
+}
+// $ANTLR end RATIONAL_TOK
+
+//   Comes from: 872:3: ( '\"' ( ESCAPE |~ ( '\"' | '\\\\' ) )* '\"' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STRING_LITERAL
+ *
+ * Looks to match the characters the constitute the token STRING_LITERAL
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTRING_LITERAL(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STRING_LITERAL;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:872:3: ( '\"' ( ESCAPE |~ ( '\"' | '\\\\' ) )* '\"' )
+    // ../../../../../../src/parser/smt1/Smt1.g:872:6: '\"' ( ESCAPE |~ ( '\"' | '\\\\' ) )* '\"'
+    {
+        MATCHC('"');
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_LITERALEx;
+        }
+
+
+        // ../../../../../../src/parser/smt1/Smt1.g:872:10: ( ESCAPE |~ ( '\"' | '\\\\' ) )*
+
+        for (;;)
+        {
+            int alt11=3;
+            {
+               /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)
+                */
+                int LA11_0 = LA(1);
+                if ( (LA11_0 == '\\'))
+                {
+                    alt11=1;
+                }
+                else if ( (((LA11_0 >= 0x0000) && (LA11_0 <= '!')) || ((LA11_0 >= '#') && (LA11_0 <= '[')) || ((LA11_0 >= ']') && (LA11_0 <= 0xFFFF))))
+                {
+                    alt11=2;
+                }
+
+            }
+            switch (alt11)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:872:11: ESCAPE
+        	    {
+        	        /* 872:11: ESCAPE */
+        	        mESCAPE(ctx );
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleSTRING_LITERALEx;
+        	        }
+
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:872:20: ~ ( '\"' | '\\\\' )
+        	    {
+        	        if ( ((LA(1) >= 0x0000) && (LA(1) <= '!')) || ((LA(1) >= '#') && (LA(1) <= '[')) || ((LA(1) >= ']') && (LA(1) <= 0xFFFF)) )
+        	        {
+        	            CONSUME();
+        	        }
+        	        else
+        	        {
+        	            CONSTRUCTEX();
+        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	            LRECOVER();
+        	            goto ruleSTRING_LITERALEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+        	default:
+        	    goto loop11;	/* break out of the loop */
+        	    break;
+            }
+        }
+        loop11: ; /* Jump out to here if this rule does not match */
+
+
+        MATCHC('"');
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_LITERALEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTRING_LITERALEx; /* Prevent compiler warnings */
+    ruleSTRING_LITERALEx: ;
+
+}
+// $ANTLR end STRING_LITERAL
+
+//   Comes from: 878:3: ( ';' (~ ( '\\n' | '\\r' ) )* )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start COMMENT
+ *
+ * Looks to match the characters the constitute the token COMMENT
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCOMMENT(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = COMMENT;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:878:3: ( ';' (~ ( '\\n' | '\\r' ) )* )
+    // ../../../../../../src/parser/smt1/Smt1.g:878:5: ';' (~ ( '\\n' | '\\r' ) )*
+    {
+        MATCHC(';');
+        if  (HASEXCEPTION())
+        {
+            goto ruleCOMMENTEx;
+        }
+
+
+        // ../../../../../../src/parser/smt1/Smt1.g:878:9: (~ ( '\\n' | '\\r' ) )*
+
+        for (;;)
+        {
+            int alt12=2;
+            {
+               /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)
+                */
+                int LA12_0 = LA(1);
+                if ( (((LA12_0 >= 0x0000) && (LA12_0 <= '\t')) || ((LA12_0 >= 0x000B) && (LA12_0 <= '\f')) || ((LA12_0 >= 0x000E) && (LA12_0 <= 0xFFFF))))
+                {
+                    alt12=1;
+                }
+
+            }
+            switch (alt12)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:
+        	    {
+        	        if ( ((LA(1) >= 0x0000) && (LA(1) <= '\t')) || ((LA(1) >= 0x000B) && (LA(1) <= '\f')) || ((LA(1) >= 0x000E) && (LA(1) <= 0xFFFF)) )
+        	        {
+        	            CONSUME();
+        	        }
+        	        else
+        	        {
+        	            CONSTRUCTEX();
+        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	            LRECOVER();
+        	            goto ruleCOMMENTEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+        	default:
+        	    goto loop12;	/* break out of the loop */
+        	    break;
+            }
+        }
+        loop12: ; /* Jump out to here if this rule does not match */
+
+
+        {
+             SKIP(); 
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCOMMENTEx; /* Prevent compiler warnings */
+    ruleCOMMENTEx: ;
+
+}
+// $ANTLR end COMMENT
+
+//   Comes from: 889:3: ( 'a' .. 'z' | 'A' .. 'Z' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ALPHA
+ *
+ * Looks to match the characters the constitute the token ALPHA
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mALPHA(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:889:3: ( 'a' .. 'z' | 'A' .. 'Z' )
+    // ../../../../../../src/parser/smt1/Smt1.g:
+    {
+        if ( ((LA(1) >= 'A') && (LA(1) <= 'Z')) || ((LA(1) >= 'a') && (LA(1) <= 'z')) )
+        {
+            CONSUME();
+        }
+        else
+        {
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+            LRECOVER();
+            goto ruleALPHAEx;
+        }
+
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleALPHAEx; /* Prevent compiler warnings */
+    ruleALPHAEx: ;
+
+}
+// $ANTLR end ALPHA
+
+//   Comes from: 895:16: ( '0' .. '9' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DIGIT
+ *
+ * Looks to match the characters the constitute the token DIGIT
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDIGIT(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:895:16: ( '0' .. '9' )
+    // ../../../../../../src/parser/smt1/Smt1.g:
+    {
+        if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
+        {
+            CONSUME();
+        }
+        else
+        {
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+            LRECOVER();
+            goto ruleDIGITEx;
+        }
+
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleDIGITEx; /* Prevent compiler warnings */
+    ruleDIGITEx: ;
+
+}
+// $ANTLR end DIGIT
+
+//   Comes from: 902:17: ( '\\\\' ( '\"' | '\\\\' | 'n' | 't' | 'r' ) )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ESCAPE
+ *
+ * Looks to match the characters the constitute the token ESCAPE
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mESCAPE(pSmt1Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/smt1/Smt1.g:902:17: ( '\\\\' ( '\"' | '\\\\' | 'n' | 't' | 'r' ) )
+    // ../../../../../../src/parser/smt1/Smt1.g:902:19: '\\\\' ( '\"' | '\\\\' | 'n' | 't' | 'r' )
+    {
+        MATCHC('\\');
+        if  (HASEXCEPTION())
+        {
+            goto ruleESCAPEEx;
+        }
+
+
+        if ( LA(1) == '"' || LA(1) == '\\' || LA(1) == 'n' || LA(1) == 'r' || LA(1) == 't' )
+        {
+            CONSUME();
+        }
+        else
+        {
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+            LRECOVER();
+            goto ruleESCAPEEx;
+        }
+
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleESCAPEEx; /* Prevent compiler warnings */
+    ruleESCAPEEx: ;
+
+}
+// $ANTLR end ESCAPE
+
+/** This is the entry point in to the lexer from an object that
+ *  wants to generate the next token, such as a pCOMMON_TOKEN_STREAM
+ */
+static void
+mTokens(pSmt1Lexer ctx)
+{
+    {
+        //  ../../../../../../src/parser/smt1/Smt1.g:1:8: ( T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | ASSUMPTION_TOK | BENCHMARK_TOK | EXTRAFUNS_TOK | EXTRAPREDS_TOK | EXTRASORTS_TOK | FALSE_TOK | FLET_TOK | FORMULA_TOK | ITE_TOK | LET_TOK | LOGIC_TOK | LPAREN_TOK | NOTES_TOK | RPAREN_TOK | SAT_TOK | STATUS_TOK | THEORY_TOK | TRUE_TOK | UNKNOWN_TOK | UNSAT_TOK | AMPERSAND_TOK | AND_TOK | AT_TOK | DISTINCT_TOK | DIV_TOK | EQUAL_TOK | EXISTS_TOK | FORALL_TOK | GREATER_THAN_TOK  [...]
+
+        ANTLR3_UINT32 alt13;
+
+        alt13=99;
+
+        alt13 = cdfa13.predict(ctx, RECOGNIZER, ISTREAM, &cdfa13);
+        if  (HASEXCEPTION())
+        {
+            goto ruleTokensEx;
+        }
+
+        switch (alt13)
+        {
+    	case 1:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:10: T__100
+    	    {
+    	        /* 1:10: T__100 */
+    	        mT__100(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 2:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:17: T__101
+    	    {
+    	        /* 1:17: T__101 */
+    	        mT__101(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 3:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:24: T__102
+    	    {
+    	        /* 1:24: T__102 */
+    	        mT__102(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 4:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:31: T__103
+    	    {
+    	        /* 1:31: T__103 */
+    	        mT__103(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 5:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:38: T__104
+    	    {
+    	        /* 1:38: T__104 */
+    	        mT__104(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 6:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:45: T__105
+    	    {
+    	        /* 1:45: T__105 */
+    	        mT__105(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 7:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:52: ASSUMPTION_TOK
+    	    {
+    	        /* 1:52: ASSUMPTION_TOK */
+    	        mASSUMPTION_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 8:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:67: BENCHMARK_TOK
+    	    {
+    	        /* 1:67: BENCHMARK_TOK */
+    	        mBENCHMARK_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 9:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:81: EXTRAFUNS_TOK
+    	    {
+    	        /* 1:81: EXTRAFUNS_TOK */
+    	        mEXTRAFUNS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 10:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:95: EXTRAPREDS_TOK
+    	    {
+    	        /* 1:95: EXTRAPREDS_TOK */
+    	        mEXTRAPREDS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 11:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:110: EXTRASORTS_TOK
+    	    {
+    	        /* 1:110: EXTRASORTS_TOK */
+    	        mEXTRASORTS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 12:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:125: FALSE_TOK
+    	    {
+    	        /* 1:125: FALSE_TOK */
+    	        mFALSE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 13:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:135: FLET_TOK
+    	    {
+    	        /* 1:135: FLET_TOK */
+    	        mFLET_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 14:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:144: FORMULA_TOK
+    	    {
+    	        /* 1:144: FORMULA_TOK */
+    	        mFORMULA_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 15:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:156: ITE_TOK
+    	    {
+    	        /* 1:156: ITE_TOK */
+    	        mITE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 16:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:164: LET_TOK
+    	    {
+    	        /* 1:164: LET_TOK */
+    	        mLET_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 17:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:172: LOGIC_TOK
+    	    {
+    	        /* 1:172: LOGIC_TOK */
+    	        mLOGIC_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 18:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:182: LPAREN_TOK
+    	    {
+    	        /* 1:182: LPAREN_TOK */
+    	        mLPAREN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 19:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:193: NOTES_TOK
+    	    {
+    	        /* 1:193: NOTES_TOK */
+    	        mNOTES_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 20:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:203: RPAREN_TOK
+    	    {
+    	        /* 1:203: RPAREN_TOK */
+    	        mRPAREN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 21:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:214: SAT_TOK
+    	    {
+    	        /* 1:214: SAT_TOK */
+    	        mSAT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 22:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:222: STATUS_TOK
+    	    {
+    	        /* 1:222: STATUS_TOK */
+    	        mSTATUS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 23:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:233: THEORY_TOK
+    	    {
+    	        /* 1:233: THEORY_TOK */
+    	        mTHEORY_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 24:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:244: TRUE_TOK
+    	    {
+    	        /* 1:244: TRUE_TOK */
+    	        mTRUE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 25:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:253: UNKNOWN_TOK
+    	    {
+    	        /* 1:253: UNKNOWN_TOK */
+    	        mUNKNOWN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 26:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:265: UNSAT_TOK
+    	    {
+    	        /* 1:265: UNSAT_TOK */
+    	        mUNSAT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 27:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:275: AMPERSAND_TOK
+    	    {
+    	        /* 1:275: AMPERSAND_TOK */
+    	        mAMPERSAND_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 28:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:289: AND_TOK
+    	    {
+    	        /* 1:289: AND_TOK */
+    	        mAND_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 29:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:297: AT_TOK
+    	    {
+    	        /* 1:297: AT_TOK */
+    	        mAT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 30:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:304: DISTINCT_TOK
+    	    {
+    	        /* 1:304: DISTINCT_TOK */
+    	        mDISTINCT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 31:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:317: DIV_TOK
+    	    {
+    	        /* 1:317: DIV_TOK */
+    	        mDIV_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 32:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:325: EQUAL_TOK
+    	    {
+    	        /* 1:325: EQUAL_TOK */
+    	        mEQUAL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 33:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:335: EXISTS_TOK
+    	    {
+    	        /* 1:335: EXISTS_TOK */
+    	        mEXISTS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 34:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:346: FORALL_TOK
+    	    {
+    	        /* 1:346: FORALL_TOK */
+    	        mFORALL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 35:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:357: GREATER_THAN_TOK
+    	    {
+    	        /* 1:357: GREATER_THAN_TOK */
+    	        mGREATER_THAN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 36:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:374: IFF_TOK
+    	    {
+    	        /* 1:374: IFF_TOK */
+    	        mIFF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 37:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:382: IMPLIES_TOK
+    	    {
+    	        /* 1:382: IMPLIES_TOK */
+    	        mIMPLIES_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 38:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:394: LESS_THAN_TOK
+    	    {
+    	        /* 1:394: LESS_THAN_TOK */
+    	        mLESS_THAN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 39:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:408: MINUS_TOK
+    	    {
+    	        /* 1:408: MINUS_TOK */
+    	        mMINUS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 40:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:418: NOT_TOK
+    	    {
+    	        /* 1:418: NOT_TOK */
+    	        mNOT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 41:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:426: OR_TOK
+    	    {
+    	        /* 1:426: OR_TOK */
+    	        mOR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 42:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:433: PERCENT_TOK
+    	    {
+    	        /* 1:433: PERCENT_TOK */
+    	        mPERCENT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 43:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:445: PIPE_TOK
+    	    {
+    	        /* 1:445: PIPE_TOK */
+    	        mPIPE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 44:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:454: PLUS_TOK
+    	    {
+    	        /* 1:454: PLUS_TOK */
+    	        mPLUS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 45:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:463: POUND_TOK
+    	    {
+    	        /* 1:463: POUND_TOK */
+    	        mPOUND_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 46:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:473: SELECT_TOK
+    	    {
+    	        /* 1:473: SELECT_TOK */
+    	        mSELECT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 47:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:484: STAR_TOK
+    	    {
+    	        /* 1:484: STAR_TOK */
+    	        mSTAR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 48:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:493: STORE_TOK
+    	    {
+    	        /* 1:493: STORE_TOK */
+    	        mSTORE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 49:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:503: TILDE_TOK
+    	    {
+    	        /* 1:503: TILDE_TOK */
+    	        mTILDE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 50:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:513: XOR_TOK
+    	    {
+    	        /* 1:513: XOR_TOK */
+    	        mXOR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 51:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:521: BITVECTOR_TOK
+    	    {
+    	        /* 1:521: BITVECTOR_TOK */
+    	        mBITVECTOR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 52:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:535: CONCAT_TOK
+    	    {
+    	        /* 1:535: CONCAT_TOK */
+    	        mCONCAT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 53:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:546: EXTRACT_TOK
+    	    {
+    	        /* 1:546: EXTRACT_TOK */
+    	        mEXTRACT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 54:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:558: BVAND_TOK
+    	    {
+    	        /* 1:558: BVAND_TOK */
+    	        mBVAND_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 55:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:568: BVOR_TOK
+    	    {
+    	        /* 1:568: BVOR_TOK */
+    	        mBVOR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 56:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:577: BVXOR_TOK
+    	    {
+    	        /* 1:577: BVXOR_TOK */
+    	        mBVXOR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 57:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:587: BVNOT_TOK
+    	    {
+    	        /* 1:587: BVNOT_TOK */
+    	        mBVNOT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 58:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:597: BVNAND_TOK
+    	    {
+    	        /* 1:597: BVNAND_TOK */
+    	        mBVNAND_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 59:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:608: BVNOR_TOK
+    	    {
+    	        /* 1:608: BVNOR_TOK */
+    	        mBVNOR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 60:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:618: BVXNOR_TOK
+    	    {
+    	        /* 1:618: BVXNOR_TOK */
+    	        mBVXNOR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 61:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:629: BVCOMP_TOK
+    	    {
+    	        /* 1:629: BVCOMP_TOK */
+    	        mBVCOMP_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 62:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:640: BVMUL_TOK
+    	    {
+    	        /* 1:640: BVMUL_TOK */
+    	        mBVMUL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 63:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:650: BVADD_TOK
+    	    {
+    	        /* 1:650: BVADD_TOK */
+    	        mBVADD_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 64:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:660: BVSUB_TOK
+    	    {
+    	        /* 1:660: BVSUB_TOK */
+    	        mBVSUB_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 65:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:670: BVNEG_TOK
+    	    {
+    	        /* 1:670: BVNEG_TOK */
+    	        mBVNEG_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 66:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:680: BVUDIV_TOK
+    	    {
+    	        /* 1:680: BVUDIV_TOK */
+    	        mBVUDIV_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 67:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:691: BVUREM_TOK
+    	    {
+    	        /* 1:691: BVUREM_TOK */
+    	        mBVUREM_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 68:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:702: BVSDIV_TOK
+    	    {
+    	        /* 1:702: BVSDIV_TOK */
+    	        mBVSDIV_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 69:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:713: BVSREM_TOK
+    	    {
+    	        /* 1:713: BVSREM_TOK */
+    	        mBVSREM_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 70:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:724: BVSMOD_TOK
+    	    {
+    	        /* 1:724: BVSMOD_TOK */
+    	        mBVSMOD_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 71:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:735: BVSHL_TOK
+    	    {
+    	        /* 1:735: BVSHL_TOK */
+    	        mBVSHL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 72:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:745: BVLSHR_TOK
+    	    {
+    	        /* 1:745: BVLSHR_TOK */
+    	        mBVLSHR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 73:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:756: BVASHR_TOK
+    	    {
+    	        /* 1:756: BVASHR_TOK */
+    	        mBVASHR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 74:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:767: BVULT_TOK
+    	    {
+    	        /* 1:767: BVULT_TOK */
+    	        mBVULT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 75:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:777: BVULE_TOK
+    	    {
+    	        /* 1:777: BVULE_TOK */
+    	        mBVULE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 76:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:787: BVUGT_TOK
+    	    {
+    	        /* 1:787: BVUGT_TOK */
+    	        mBVUGT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 77:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:797: BVUGE_TOK
+    	    {
+    	        /* 1:797: BVUGE_TOK */
+    	        mBVUGE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 78:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:807: BVSLT_TOK
+    	    {
+    	        /* 1:807: BVSLT_TOK */
+    	        mBVSLT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 79:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:817: BVSLE_TOK
+    	    {
+    	        /* 1:817: BVSLE_TOK */
+    	        mBVSLE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 80:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:827: BVSGT_TOK
+    	    {
+    	        /* 1:827: BVSGT_TOK */
+    	        mBVSGT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 81:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:837: BVSGE_TOK
+    	    {
+    	        /* 1:837: BVSGE_TOK */
+    	        mBVSGE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 82:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:847: REPEAT_TOK
+    	    {
+    	        /* 1:847: REPEAT_TOK */
+    	        mREPEAT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 83:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:858: ZERO_EXTEND_TOK
+    	    {
+    	        /* 1:858: ZERO_EXTEND_TOK */
+    	        mZERO_EXTEND_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 84:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:874: SIGN_EXTEND_TOK
+    	    {
+    	        /* 1:874: SIGN_EXTEND_TOK */
+    	        mSIGN_EXTEND_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 85:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:890: ROTATE_LEFT_TOK
+    	    {
+    	        /* 1:890: ROTATE_LEFT_TOK */
+    	        mROTATE_LEFT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 86:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:906: ROTATE_RIGHT_TOK
+    	    {
+    	        /* 1:906: ROTATE_RIGHT_TOK */
+    	        mROTATE_RIGHT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 87:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:923: BITVECTOR_BV_CONST
+    	    {
+    	        /* 1:923: BITVECTOR_BV_CONST */
+    	        mBITVECTOR_BV_CONST(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 88:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:942: BITVECTOR1_BV_CONST
+    	    {
+    	        /* 1:942: BITVECTOR1_BV_CONST */
+    	        mBITVECTOR1_BV_CONST(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 89:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:962: IDENTIFIER
+    	    {
+    	        /* 1:962: IDENTIFIER */
+    	        mIDENTIFIER(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 90:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:973: ATTR_IDENTIFIER
+    	    {
+    	        /* 1:973: ATTR_IDENTIFIER */
+    	        mATTR_IDENTIFIER(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 91:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:989: LET_IDENTIFIER
+    	    {
+    	        /* 1:989: LET_IDENTIFIER */
+    	        mLET_IDENTIFIER(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 92:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:1004: FLET_IDENTIFIER
+    	    {
+    	        /* 1:1004: FLET_IDENTIFIER */
+    	        mFLET_IDENTIFIER(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 93:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:1020: PATTERN_ANNOTATION_BEGIN
+    	    {
+    	        /* 1:1020: PATTERN_ANNOTATION_BEGIN */
+    	        mPATTERN_ANNOTATION_BEGIN(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 94:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:1045: USER_VALUE
+    	    {
+    	        /* 1:1045: USER_VALUE */
+    	        mUSER_VALUE(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 95:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:1056: WHITESPACE
+    	    {
+    	        /* 1:1056: WHITESPACE */
+    	        mWHITESPACE(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 96:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:1067: NUMERAL_TOK
+    	    {
+    	        /* 1:1067: NUMERAL_TOK */
+    	        mNUMERAL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 97:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:1079: RATIONAL_TOK
+    	    {
+    	        /* 1:1079: RATIONAL_TOK */
+    	        mRATIONAL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 98:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:1092: STRING_LITERAL
+    	    {
+    	        /* 1:1092: STRING_LITERAL */
+    	        mSTRING_LITERAL(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 99:
+    	    // ../../../../../../src/parser/smt1/Smt1.g:1:1107: COMMENT
+    	    {
+    	        /* 1:1107: COMMENT */
+    	        mCOMMENT(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+
+        }
+    }
+
+
+    goto ruleTokensEx; /* Prevent compiler warnings */
+ruleTokensEx: ;
+}
+
+/* =========================================================================
+ * Lexer matching rules end.
+ * =========================================================================
+ */
+/* End of Lexer code
+ * ================================================
+ * ================================================
+ */
+
+
+/* End of code
+ * =============================================================================
+ */
diff --git a/src/parser/smt1/Smt1Lexer.h b/src/parser/smt1/Smt1Lexer.h
new file mode 100644
index 0000000..ecbcdcc
--- /dev/null
+++ b/src/parser/smt1/Smt1Lexer.h
@@ -0,0 +1,919 @@
+/** \file
+ *  This C header file was generated by $ANTLR version 3.4
+ *
+ *     -  From the grammar source file : ../../../../../../src/parser/smt1/Smt1.g
+ *     -                            On : 2017-03-16 01:03:01
+ *     -                 for the lexer : Smt1LexerLexer
+ *
+ * Editing it, at least manually, is not wise.
+ *
+ * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws.
+ *
+ *
+ * The lexer 
+Smt1Lexer
+
+has the callable functions (rules) shown below,
+ * which will invoke the code for the associated rule in the source grammar
+ * assuming that the input stream is pointing to a token/text stream that could begin
+ * this rule.
+ *
+ * For instance if you call the first (topmost) rule in a parser grammar, you will
+ * get the results of a full parse, but calling a rule half way through the grammar will
+ * allow you to pass part of a full token stream to the parser, such as for syntax checking
+ * in editors and so on.
+ *
+ * The parser entry points are called indirectly (by function pointer to function) via
+ * a parser context typedef pSmt1Lexer, which is returned from a call to Smt1LexerNew().
+ *
+ * As this is a generated lexer, it is unlikely you will call it 'manually'. However
+ * the methods are provided anyway.
+ *
+ * The methods in pSmt1Lexer are  as follows:
+ *
+ *  - 
+ void
+      pSmt1Lexer->T__100(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->T__101(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->T__102(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->T__103(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->T__104(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->T__105(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->ASSUMPTION_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BENCHMARK_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->EXTRAFUNS_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->EXTRAPREDS_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->EXTRASORTS_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->FALSE_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->FLET_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->FORMULA_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->ITE_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->LET_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->LOGIC_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->LPAREN_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->NOTES_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->RPAREN_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->SAT_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->STATUS_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->THEORY_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->TRUE_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->UNKNOWN_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->UNSAT_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->AMPERSAND_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->AND_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->AT_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->DISTINCT_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->DIV_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->EQUAL_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->EXISTS_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->FORALL_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->GREATER_THAN_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->IFF_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->IMPLIES_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->LESS_THAN_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->MINUS_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->NOT_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->OR_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->PERCENT_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->PIPE_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->PLUS_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->POUND_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->SELECT_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->STAR_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->STORE_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->TILDE_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->XOR_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BITVECTOR_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->CONCAT_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->EXTRACT_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVAND_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVOR_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVXOR_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVNOT_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVNAND_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVNOR_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVXNOR_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVCOMP_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVMUL_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVADD_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVSUB_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVNEG_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVUDIV_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVUREM_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVSDIV_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVSREM_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVSMOD_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVSHL_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVLSHR_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVASHR_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVULT_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVULE_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVUGT_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVUGE_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVSLT_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVSLE_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVSGT_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BVSGE_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->REPEAT_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->ZERO_EXTEND_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->SIGN_EXTEND_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->ROTATE_LEFT_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->ROTATE_RIGHT_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BITVECTOR_BV_CONST(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->BITVECTOR1_BV_CONST(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->IDENTIFIER(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->ATTR_IDENTIFIER(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->LET_IDENTIFIER(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->FLET_IDENTIFIER(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->PATTERN_ANNOTATION_BEGIN(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->USER_VALUE(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->WHITESPACE(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->NUMERAL_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->RATIONAL_TOK(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->STRING_LITERAL(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->COMMENT(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->ALPHA(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->DIGIT(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->ESCAPE(pSmt1Lexer)
+ *  - 
+ void
+      pSmt1Lexer->Tokens(pSmt1Lexer)
+ *
+ * The return type for any particular rule is of course determined by the source
+ * grammar file.
+ */
+// [The "BSD license"]
+// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
+// http://www.temporal-wave.com
+// http://www.linkedin.com/in/jimidle
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+// 3. The name of the author may not be used to endorse or promote products
+//    derived from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef	_Smt1Lexer_H
+#define _Smt1Lexer_H
+/* =============================================================================
+ * Standard antlr3 C runtime definitions
+ */
+#include    <antlr3.h>
+
+/* End of standard antlr 3 runtime definitions
+ * =============================================================================
+ */
+
+
+// This should come immediately after #include <antlr3.h> in the generated
+// files. See the documentation in "parser/antlr_undefines.h" for more details.
+#include "parser/antlr_undefines.h"
+
+/** This suppresses warnings about the redefinition of token symbols between
+  * different parsers. The redefinitions should be harmless as long as no
+  * client: (a) #include's the lexer headers for two grammars AND (b) uses the
+  * token symbol definitions.
+  */
+#pragma GCC system_header
+
+#if defined(CVC4_COMPETITION_MODE) && !defined(CVC4_SMTCOMP_APPLICATION_TRACK)
+/* This improves performance by ~10 percent on big inputs.
+ * This option is only valid if we know the input is ASCII (or some 8-bit encoding).
+ * If we know the input is UTF-16, we can use ANTLR3_INLINE_INPUT_UTF16.
+ * Otherwise, we have to let the lexer detect the encoding at runtime.
+ */
+#  define ANTLR3_INLINE_INPUT_ASCII
+#  define ANTLR3_INLINE_INPUT_8BIT
+#endif /* CVC4_COMPETITION_MODE && !CVC4_SMTCOMP_APPLICATION_TRACK */
+
+#include "parser/antlr_tracing.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Forward declare the context typedef so that we can use it before it is
+// properly defined. Delegators and delegates (from import statements) are
+// interdependent and their context structures contain pointers to each other
+// C only allows such things to be declared if you pre-declare the typedef.
+//
+typedef struct Smt1Lexer_Ctx_struct Smt1Lexer, * pSmt1Lexer;
+
+
+
+#ifdef	ANTLR3_WINDOWS
+// Disable: Unreferenced parameter,							- Rules with parameters that are not used
+//          constant conditional,							- ANTLR realizes that a prediction is always true (synpred usually)
+//          initialized but unused variable					- tree rewrite variables declared but not needed
+//          Unreferenced local variable						- lexer rule declares but does not always use _type
+//          potentially unitialized variable used			- retval always returned from a rule
+//			unreferenced local function has been removed	- susually getTokenNames or freeScope, they can go without warnigns
+//
+// These are only really displayed at warning level /W4 but that is the code ideal I am aiming at
+// and the codegen must generate some of these warnings by necessity, apart from 4100, which is
+// usually generated when a parser rule is given a parameter that it does not use. Mostly though
+// this is a matter of orthogonality hence I disable that one.
+//
+#pragma warning( disable : 4100 )
+#pragma warning( disable : 4101 )
+#pragma warning( disable : 4127 )
+#pragma warning( disable : 4189 )
+#pragma warning( disable : 4505 )
+#pragma warning( disable : 4701 )
+#endif
+
+/** Context tracking structure for 
+Smt1Lexer
+
+ */
+struct Smt1Lexer_Ctx_struct
+{
+    /** Built in ANTLR3 context tracker contains all the generic elements
+     *  required for context tracking.
+     */
+    pANTLR3_LEXER    pLexer;
+
+     void
+     (*mT__100)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mT__101)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mT__102)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mT__103)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mT__104)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mT__105)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mASSUMPTION_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBENCHMARK_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mEXTRAFUNS_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mEXTRAPREDS_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mEXTRASORTS_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFALSE_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFLET_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFORMULA_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mITE_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mLET_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mLOGIC_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mLPAREN_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mNOTES_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mRPAREN_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSAT_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSTATUS_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mTHEORY_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mTRUE_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mUNKNOWN_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mUNSAT_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mAMPERSAND_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mAND_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mAT_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDISTINCT_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDIV_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mEQUAL_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mEXISTS_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFORALL_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mGREATER_THAN_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mIFF_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mIMPLIES_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mLESS_THAN_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mMINUS_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mNOT_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mOR_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mPERCENT_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mPIPE_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mPLUS_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mPOUND_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSELECT_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSTAR_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSTORE_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mTILDE_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mXOR_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBITVECTOR_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mCONCAT_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mEXTRACT_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVAND_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVOR_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVXOR_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVNOT_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVNAND_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVNOR_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVXNOR_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVCOMP_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVMUL_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVADD_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVSUB_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVNEG_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVUDIV_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVUREM_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVSDIV_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVSREM_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVSMOD_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVSHL_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVLSHR_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVASHR_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVULT_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVULE_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVUGT_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVUGE_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVSLT_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVSLE_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVSGT_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBVSGE_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mREPEAT_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mZERO_EXTEND_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSIGN_EXTEND_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mROTATE_LEFT_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mROTATE_RIGHT_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBITVECTOR_BV_CONST)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBITVECTOR1_BV_CONST)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mIDENTIFIER)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mATTR_IDENTIFIER)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mLET_IDENTIFIER)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFLET_IDENTIFIER)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mPATTERN_ANNOTATION_BEGIN)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mUSER_VALUE)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mWHITESPACE)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mNUMERAL_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mRATIONAL_TOK)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSTRING_LITERAL)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mCOMMENT)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mALPHA)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDIGIT)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mESCAPE)	(struct Smt1Lexer_Ctx_struct * ctx);
+
+     void
+     (*mTokens)	(struct Smt1Lexer_Ctx_struct * ctx);
+    const char * (*getGrammarFileName)();
+    void            (*reset)  (struct Smt1Lexer_Ctx_struct * ctx);
+    void	    (*free)   (struct Smt1Lexer_Ctx_struct * ctx);
+};
+
+// Function protoypes for the constructor functions that external translation units
+// such as delegators and delegates may wish to call.
+//
+ANTLR3_API pSmt1Lexer Smt1LexerNew         (
+pANTLR3_INPUT_STREAM
+ instream);
+ANTLR3_API pSmt1Lexer Smt1LexerNewSSD      (
+pANTLR3_INPUT_STREAM
+ instream, pANTLR3_RECOGNIZER_SHARED_STATE state);
+
+/** Symbolic definitions of all the tokens that the 
+lexer
+ will work with.
+ * \{
+ *
+ * Antlr will define EOF, but we can't use that as it it is too common in
+ * in C header files and that would be confusing. There is no way to filter this out at the moment
+ * so we just undef it here for now. That isn't the value we get back from C recognizers
+ * anyway. We are looking for ANTLR3_TOKEN_EOF.
+ */
+#ifdef	EOF
+#undef	EOF
+#endif
+#ifdef	Tokens
+#undef	Tokens
+#endif
+#define EOF      -1
+#define T__100      100
+#define T__101      101
+#define T__102      102
+#define T__103      103
+#define T__104      104
+#define T__105      105
+#define ALPHA      4
+#define AMPERSAND_TOK      5
+#define AND_TOK      6
+#define ASSUMPTION_TOK      7
+#define ATTR_IDENTIFIER      8
+#define AT_TOK      9
+#define BENCHMARK_TOK      10
+#define BITVECTOR1_BV_CONST      11
+#define BITVECTOR_BV_CONST      12
+#define BITVECTOR_TOK      13
+#define BVADD_TOK      14
+#define BVAND_TOK      15
+#define BVASHR_TOK      16
+#define BVCOMP_TOK      17
+#define BVLSHR_TOK      18
+#define BVMUL_TOK      19
+#define BVNAND_TOK      20
+#define BVNEG_TOK      21
+#define BVNOR_TOK      22
+#define BVNOT_TOK      23
+#define BVOR_TOK      24
+#define BVSDIV_TOK      25
+#define BVSGE_TOK      26
+#define BVSGT_TOK      27
+#define BVSHL_TOK      28
+#define BVSLE_TOK      29
+#define BVSLT_TOK      30
+#define BVSMOD_TOK      31
+#define BVSREM_TOK      32
+#define BVSUB_TOK      33
+#define BVUDIV_TOK      34
+#define BVUGE_TOK      35
+#define BVUGT_TOK      36
+#define BVULE_TOK      37
+#define BVULT_TOK      38
+#define BVUREM_TOK      39
+#define BVXNOR_TOK      40
+#define BVXOR_TOK      41
+#define COMMENT      42
+#define CONCAT_TOK      43
+#define DIGIT      44
+#define DISTINCT_TOK      45
+#define DIV_TOK      46
+#define EQUAL_TOK      47
+#define ESCAPE      48
+#define EXISTS_TOK      49
+#define EXTRACT_TOK      50
+#define EXTRAFUNS_TOK      51
+#define EXTRAPREDS_TOK      52
+#define EXTRASORTS_TOK      53
+#define FALSE_TOK      54
+#define FLET_IDENTIFIER      55
+#define FLET_TOK      56
+#define FORALL_TOK      57
+#define FORMULA_TOK      58
+#define GREATER_THAN_TOK      59
+#define IDENTIFIER      60
+#define IFF_TOK      61
+#define IMPLIES_TOK      62
+#define ITE_TOK      63
+#define LESS_THAN_TOK      64
+#define LET_IDENTIFIER      65
+#define LET_TOK      66
+#define LOGIC_TOK      67
+#define LPAREN_TOK      68
+#define MINUS_TOK      69
+#define NOTES_TOK      70
+#define NOT_TOK      71
+#define NUMERAL_TOK      72
+#define OR_TOK      73
+#define PATTERN_ANNOTATION_BEGIN      74
+#define PERCENT_TOK      75
+#define PIPE_TOK      76
+#define PLUS_TOK      77
+#define POUND_TOK      78
+#define RATIONAL_TOK      79
+#define REPEAT_TOK      80
+#define ROTATE_LEFT_TOK      81
+#define ROTATE_RIGHT_TOK      82
+#define RPAREN_TOK      83
+#define SAT_TOK      84
+#define SELECT_TOK      85
+#define SIGN_EXTEND_TOK      86
+#define STAR_TOK      87
+#define STATUS_TOK      88
+#define STORE_TOK      89
+#define STRING_LITERAL      90
+#define THEORY_TOK      91
+#define TILDE_TOK      92
+#define TRUE_TOK      93
+#define UNKNOWN_TOK      94
+#define UNSAT_TOK      95
+#define USER_VALUE      96
+#define WHITESPACE      97
+#define XOR_TOK      98
+#define ZERO_EXTEND_TOK      99
+#ifdef	EOF
+#undef	EOF
+#define	EOF	ANTLR3_TOKEN_EOF
+#endif
+
+#ifndef TOKENSOURCE
+#define TOKENSOURCE(lxr) lxr->pLexer->rec->state->tokSource
+#endif
+
+/* End of token definitions for Smt1Lexer
+ * =============================================================================
+ */
+/** } */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* END - Note:Keep extra line feed to satisfy UNIX systems */
diff --git a/src/parser/smt1/Smt1Parser.c b/src/parser/smt1/Smt1Parser.c
new file mode 100644
index 0000000..cf43810
--- /dev/null
+++ b/src/parser/smt1/Smt1Parser.c
@@ -0,0 +1,6631 @@
+/** \file
+ *  This C source file was generated by $ANTLR version 3.4
+ *
+ *     -  From the grammar source file : ../../../../../../src/parser/smt1/Smt1.g
+ *     -                            On : 2017-03-16 01:03:01
+ *     -                for the parser : Smt1ParserParser
+ *
+ * Editing it, at least manually, is not wise.
+ *
+ * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws.
+ *
+ *
+*/
+// [The "BSD license"]
+// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
+// http://www.temporal-wave.com
+// http://www.linkedin.com/in/jimidle
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+// 3. The name of the author may not be used to endorse or promote products
+//    derived from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+/* =============================================================================
+ * This is what the grammar programmer asked us to put at the top of every file.
+ */
+
+/**
+ ** This file is part of CVC4.
+ ** Copyright (c) 2009-2014  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.
+ **/
+
+/* End of Header action.
+ * =============================================================================
+ */
+
+/* -----------------------------------------
+ * Include the ANTLR3 generated header file.
+ */
+#include    "Smt1Parser.h"
+
+
+#include <vector>
+
+#include "base/output.h"
+#include "base/ptr_closer.h"
+#include "expr/expr.h"
+#include "expr/kind.h"
+#include "expr/type.h"
+#include "parser/antlr_input.h"
+#include "parser/parser.h"
+#include "parser/smt1/smt1.h"
+#include "util/integer.h"
+#include "util/rational.h"
+
+using namespace CVC4;
+using namespace CVC4::parser;
+
+/* These need to be macros so they can refer to the PARSER macro, which will be defined
+ * by ANTLR *after* this section. (If they were functions, PARSER would be undefined.) */
+#undef PARSER_STATE
+#define PARSER_STATE ((Smt1*)PARSER->super)
+#undef EXPR_MANAGER
+#define EXPR_MANAGER PARSER_STATE->getExprManager()
+#undef MK_EXPR
+#define MK_EXPR EXPR_MANAGER->mkExpr
+#undef MK_CONST
+#define MK_CONST EXPR_MANAGER->mkConst
+
+
+/* ----------------------------------------- */
+
+
+
+
+
+/* MACROS that hide the C interface implementations from the
+ * generated code, which makes it a little more understandable to the human eye.
+ * I am very much against using C pre-processor macros for function calls and bits
+ * of code as you cannot see what is happening when single stepping in debuggers
+ * and so on. The exception (in my book at least) is for generated code, where you are
+ * not maintaining it, but may wish to read and understand it. If you single step it, you know that input()
+ * hides some indirect calls, but is always referring to the input stream. This is
+ * probably more readable than ctx->input->istream->input(snarfle0->blarg) and allows me to rejig
+ * the runtime interfaces without changing the generated code too often, without
+ * confusing the reader of the generated output, who may not wish to know the gory
+ * details of the interface inheritance.
+ */
+
+#define		CTX	ctx
+
+/* Aids in accessing scopes for grammar programmers
+ */
+#undef	SCOPE_TYPE
+#undef	SCOPE_STACK
+#undef	SCOPE_TOP
+#define	SCOPE_TYPE(scope)   pSmt1Parser_##scope##_SCOPE
+#define SCOPE_STACK(scope)  pSmt1Parser_##scope##Stack
+#define	SCOPE_TOP(scope)    ctx->pSmt1Parser_##scope##Top
+#define	SCOPE_SIZE(scope)		ctx->pSmt1Parser_##scope##Stack_limit
+#define SCOPE_INSTANCE(scope, i)	(ctx->SCOPE_STACK(scope)->get(ctx->SCOPE_STACK(scope),i))
+
+/* Macros for accessing things in the parser
+ */
+
+#undef	    PARSER
+#undef	    RECOGNIZER
+#undef	    HAVEPARSEDRULE
+#undef		MEMOIZE
+#undef	    INPUT
+#undef	    STRSTREAM
+#undef	    HASEXCEPTION
+#undef	    EXCEPTION
+#undef	    MATCHT
+#undef	    MATCHANYT
+#undef	    FOLLOWSTACK
+#undef	    FOLLOWPUSH
+#undef	    FOLLOWPOP
+#undef	    PRECOVER
+#undef	    PREPORTERROR
+#undef	    LA
+#undef	    LT
+#undef	    CONSTRUCTEX
+#undef	    CONSUME
+#undef	    MARK
+#undef	    REWIND
+#undef	    REWINDLAST
+#undef	    PERRORRECOVERY
+#undef	    HASFAILED
+#undef	    FAILEDFLAG
+#undef	    RECOVERFROMMISMATCHEDSET
+#undef	    RECOVERFROMMISMATCHEDELEMENT
+#undef		INDEX
+#undef      ADAPTOR
+#undef		SEEK
+#undef	    RULEMEMO
+#undef		DBG
+
+#define	    PARSER				ctx->pParser
+#define	    RECOGNIZER				PARSER->rec
+#define	    PSRSTATE				RECOGNIZER->state
+#define	    HAVEPARSEDRULE(r)			RECOGNIZER->alreadyParsedRule(RECOGNIZER, r)
+#define	    MEMOIZE(ri,si)			RECOGNIZER->memoize(RECOGNIZER, ri, si)
+#define	    INPUT				PARSER->tstream
+#define	    STRSTREAM				INPUT
+#define	    ISTREAM				INPUT->istream
+#define	    INDEX()				ISTREAM->index(INPUT->istream)
+#define	    HASEXCEPTION()			(PSRSTATE->error == ANTLR3_TRUE)
+#define	    EXCEPTION				PSRSTATE->exception
+#define	    MATCHT(t, fs)			RECOGNIZER->match(RECOGNIZER, t, fs)
+#define	    MATCHANYT()				RECOGNIZER->matchAny(RECOGNIZER)
+#define	    FOLLOWSTACK				PSRSTATE->following
+#ifdef  SKIP_FOLLOW_SETS
+#define	    FOLLOWPUSH(x)
+#define	    FOLLOWPOP()
+#else
+#define	    FOLLOWPUSH(x)			FOLLOWSTACK->push(FOLLOWSTACK, ((void *)(&(x))), NULL)
+#define	    FOLLOWPOP()				FOLLOWSTACK->pop(FOLLOWSTACK)
+#endif
+#define	    PRECOVER()				RECOGNIZER->recover(RECOGNIZER)
+#define	    PREPORTERROR()			RECOGNIZER->reportError(RECOGNIZER)
+#define	    LA(n)				INPUT->istream->_LA(ISTREAM, n)
+#define	    LT(n)				INPUT->_LT(INPUT, n)
+#define	    CONSTRUCTEX()			RECOGNIZER->exConstruct(RECOGNIZER)
+#define	    CONSUME()				ISTREAM->consume(ISTREAM)
+#define	    MARK()				ISTREAM->mark(ISTREAM)
+#define	    REWIND(m)				ISTREAM->rewind(ISTREAM, m)
+#define	    REWINDLAST()			ISTREAM->rewindLast(ISTREAM)
+#define	    SEEK(n)				ISTREAM->seek(ISTREAM, n)
+#define	    PERRORRECOVERY			PSRSTATE->errorRecovery
+#define	    FAILEDFLAG				PSRSTATE->failed
+#define	    HASFAILED()				(FAILEDFLAG == ANTLR3_TRUE)
+#define	    BACKTRACKING			PSRSTATE->backtracking
+#define	    RECOVERFROMMISMATCHEDSET(s)		RECOGNIZER->recoverFromMismatchedSet(RECOGNIZER, s)
+#define	    RECOVERFROMMISMATCHEDELEMENT(e)	RECOGNIZER->recoverFromMismatchedElement(RECOGNIZER, s)
+#define     ADAPTOR                         ctx->adaptor
+#define		RULEMEMO						PSRSTATE->ruleMemo
+#define		DBG								RECOGNIZER->debugger
+
+
+#define		TOKTEXT(tok, txt)				tok, (pANTLR3_UINT8)txt
+
+/* The 4 tokens defined below may well clash with your own #defines or token types. If so
+ * then for the present you must use different names for your defines as these are hard coded
+ * in the code generator. It would be better not to use such names internally, and maybe
+ * we can change this in a forthcoming release. I deliberately do not #undef these
+ * here as this will at least give you a redefined error somewhere if they clash.
+ */
+#define	    UP	    ANTLR3_TOKEN_UP
+#define	    DOWN    ANTLR3_TOKEN_DOWN
+#define	    EOR	    ANTLR3_TOKEN_EOR
+#define	    INVALID ANTLR3_TOKEN_INVALID
+
+
+/* =============================================================================
+ * Functions to create and destroy scopes. First come the rule scopes, followed
+ * by the global declared scopes.
+ */
+
+
+
+/* ============================================================================= */
+
+/* =============================================================================
+ * Start of recognizer
+ */
+
+
+/** \brief Table of all token names in symbolic order, mainly used for
+ *         error reporting.
+ */
+pANTLR3_UINT8   Smt1ParserTokenNames[102+4]
+     = {
+        (pANTLR3_UINT8) "<invalid>",       /* String to print to indicate an invalid token */
+        (pANTLR3_UINT8) "<EOR>",
+        (pANTLR3_UINT8) "<DOWN>",
+        (pANTLR3_UINT8) "<UP>",
+        (pANTLR3_UINT8) "ALPHA",
+        (pANTLR3_UINT8) "AMPERSAND_TOK",
+        (pANTLR3_UINT8) "AND_TOK",
+        (pANTLR3_UINT8) "ASSUMPTION_TOK",
+        (pANTLR3_UINT8) "ATTR_IDENTIFIER",
+        (pANTLR3_UINT8) "AT_TOK",
+        (pANTLR3_UINT8) "BENCHMARK_TOK",
+        (pANTLR3_UINT8) "BITVECTOR1_BV_CONST",
+        (pANTLR3_UINT8) "BITVECTOR_BV_CONST",
+        (pANTLR3_UINT8) "BITVECTOR_TOK",
+        (pANTLR3_UINT8) "BVADD_TOK",
+        (pANTLR3_UINT8) "BVAND_TOK",
+        (pANTLR3_UINT8) "BVASHR_TOK",
+        (pANTLR3_UINT8) "BVCOMP_TOK",
+        (pANTLR3_UINT8) "BVLSHR_TOK",
+        (pANTLR3_UINT8) "BVMUL_TOK",
+        (pANTLR3_UINT8) "BVNAND_TOK",
+        (pANTLR3_UINT8) "BVNEG_TOK",
+        (pANTLR3_UINT8) "BVNOR_TOK",
+        (pANTLR3_UINT8) "BVNOT_TOK",
+        (pANTLR3_UINT8) "BVOR_TOK",
+        (pANTLR3_UINT8) "BVSDIV_TOK",
+        (pANTLR3_UINT8) "BVSGE_TOK",
+        (pANTLR3_UINT8) "BVSGT_TOK",
+        (pANTLR3_UINT8) "BVSHL_TOK",
+        (pANTLR3_UINT8) "BVSLE_TOK",
+        (pANTLR3_UINT8) "BVSLT_TOK",
+        (pANTLR3_UINT8) "BVSMOD_TOK",
+        (pANTLR3_UINT8) "BVSREM_TOK",
+        (pANTLR3_UINT8) "BVSUB_TOK",
+        (pANTLR3_UINT8) "BVUDIV_TOK",
+        (pANTLR3_UINT8) "BVUGE_TOK",
+        (pANTLR3_UINT8) "BVUGT_TOK",
+        (pANTLR3_UINT8) "BVULE_TOK",
+        (pANTLR3_UINT8) "BVULT_TOK",
+        (pANTLR3_UINT8) "BVUREM_TOK",
+        (pANTLR3_UINT8) "BVXNOR_TOK",
+        (pANTLR3_UINT8) "BVXOR_TOK",
+        (pANTLR3_UINT8) "COMMENT",
+        (pANTLR3_UINT8) "CONCAT_TOK",
+        (pANTLR3_UINT8) "DIGIT",
+        (pANTLR3_UINT8) "DISTINCT_TOK",
+        (pANTLR3_UINT8) "DIV_TOK",
+        (pANTLR3_UINT8) "EQUAL_TOK",
+        (pANTLR3_UINT8) "ESCAPE",
+        (pANTLR3_UINT8) "EXISTS_TOK",
+        (pANTLR3_UINT8) "EXTRACT_TOK",
+        (pANTLR3_UINT8) "EXTRAFUNS_TOK",
+        (pANTLR3_UINT8) "EXTRAPREDS_TOK",
+        (pANTLR3_UINT8) "EXTRASORTS_TOK",
+        (pANTLR3_UINT8) "FALSE_TOK",
+        (pANTLR3_UINT8) "FLET_IDENTIFIER",
+        (pANTLR3_UINT8) "FLET_TOK",
+        (pANTLR3_UINT8) "FORALL_TOK",
+        (pANTLR3_UINT8) "FORMULA_TOK",
+        (pANTLR3_UINT8) "GREATER_THAN_TOK",
+        (pANTLR3_UINT8) "IDENTIFIER",
+        (pANTLR3_UINT8) "IFF_TOK",
+        (pANTLR3_UINT8) "IMPLIES_TOK",
+        (pANTLR3_UINT8) "ITE_TOK",
+        (pANTLR3_UINT8) "LESS_THAN_TOK",
+        (pANTLR3_UINT8) "LET_IDENTIFIER",
+        (pANTLR3_UINT8) "LET_TOK",
+        (pANTLR3_UINT8) "LOGIC_TOK",
+        (pANTLR3_UINT8) "LPAREN_TOK",
+        (pANTLR3_UINT8) "MINUS_TOK",
+        (pANTLR3_UINT8) "NOTES_TOK",
+        (pANTLR3_UINT8) "NOT_TOK",
+        (pANTLR3_UINT8) "NUMERAL_TOK",
+        (pANTLR3_UINT8) "OR_TOK",
+        (pANTLR3_UINT8) "PATTERN_ANNOTATION_BEGIN",
+        (pANTLR3_UINT8) "PERCENT_TOK",
+        (pANTLR3_UINT8) "PIPE_TOK",
+        (pANTLR3_UINT8) "PLUS_TOK",
+        (pANTLR3_UINT8) "POUND_TOK",
+        (pANTLR3_UINT8) "RATIONAL_TOK",
+        (pANTLR3_UINT8) "REPEAT_TOK",
+        (pANTLR3_UINT8) "ROTATE_LEFT_TOK",
+        (pANTLR3_UINT8) "ROTATE_RIGHT_TOK",
+        (pANTLR3_UINT8) "RPAREN_TOK",
+        (pANTLR3_UINT8) "SAT_TOK",
+        (pANTLR3_UINT8) "SELECT_TOK",
+        (pANTLR3_UINT8) "SIGN_EXTEND_TOK",
+        (pANTLR3_UINT8) "STAR_TOK",
+        (pANTLR3_UINT8) "STATUS_TOK",
+        (pANTLR3_UINT8) "STORE_TOK",
+        (pANTLR3_UINT8) "STRING_LITERAL",
+        (pANTLR3_UINT8) "THEORY_TOK",
+        (pANTLR3_UINT8) "TILDE_TOK",
+        (pANTLR3_UINT8) "TRUE_TOK",
+        (pANTLR3_UINT8) "UNKNOWN_TOK",
+        (pANTLR3_UINT8) "UNSAT_TOK",
+        (pANTLR3_UINT8) "USER_VALUE",
+        (pANTLR3_UINT8) "WHITESPACE",
+        (pANTLR3_UINT8) "XOR_TOK",
+        (pANTLR3_UINT8) "ZERO_EXTEND_TOK",
+        (pANTLR3_UINT8) "':'",
+        (pANTLR3_UINT8) "':pat'",
+        (pANTLR3_UINT8) "'Array['",
+        (pANTLR3_UINT8) "'['",
+        (pANTLR3_UINT8) "']'",
+        (pANTLR3_UINT8) "'}'"
+       };
+
+
+
+// Forward declare the locally static matching functions we have generated.
+//
+static 
+ CVC4::parser::smt1::myExpr
+	parseExpr    (pSmt1Parser ctx);
+static 
+ CVC4::Command*
+	parseCommand    (pSmt1Parser ctx);
+static 
+ void
+	benchmark    (pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+static 
+ void
+	benchAttributes    (pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+static 
+ void
+	benchAttribute    (pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command);
+static 
+ void
+	annotatedFormula    (pSmt1Parser ctx, CVC4::Expr& expr);
+static 
+ void
+	annotatedFormulas    (pSmt1Parser ctx, std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr);
+static 
+ void
+	builtinOp    (pSmt1Parser ctx, CVC4::Kind& kind);
+static 
+ void
+	parameterizedOperator    (pSmt1Parser ctx, CVC4::Expr& op);
+static 
+ void
+	bitVectorOperator    (pSmt1Parser ctx, CVC4::Expr& op);
+static 
+ void
+	predicateName    (pSmt1Parser ctx, std::string& name, CVC4::parser::DeclarationCheck check);
+static 
+ void
+	functionName    (pSmt1Parser ctx, std::string& name, CVC4::parser::DeclarationCheck check);
+static 
+ void
+	functionSymbol    (pSmt1Parser ctx, CVC4::Expr& fun);
+static 
+ void
+	attribute    (pSmt1Parser ctx, std::string& s);
+static 
+ void
+	functionDeclaration    (pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command);
+static 
+ void
+	predicateDeclaration    (pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command);
+static 
+ void
+	sortDeclaration    (pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command);
+static 
+ void
+	sortList    (pSmt1Parser ctx, std::vector<CVC4::Type>& sorts);
+static 
+ void
+	sortName    (pSmt1Parser ctx, std::string& name, CVC4::parser::DeclarationCheck check);
+static 
+ CVC4::parser::smt1::myType
+	sortSymbol    (pSmt1Parser ctx);
+static 
+ void
+	status    (pSmt1Parser ctx, CVC4::BenchmarkStatus& status);
+static 
+ void
+	annotation    (pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command);
+static 
+ void
+	termAnnotation    (pSmt1Parser ctx, CVC4::Expr& expr);
+static 
+ void
+	identifier    (pSmt1Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, CVC4::parser::SymbolType type);
+static 
+ void
+	let_identifier    (pSmt1Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check);
+static 
+ void
+	flet_identifier    (pSmt1Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check);
+static 
+ void
+	userValue    (pSmt1Parser ctx, std::string& s);
+static void	Smt1ParserFree(pSmt1Parser ctx);
+static void     Smt1ParserReset (pSmt1Parser ctx);
+
+/* For use in tree output where we are accumulating rule labels via label += ruleRef
+ * we need a function that knows how to free a return scope when the list is destroyed.
+ * We cannot just use ANTLR3_FREE because in debug tracking mode, this is a macro.
+ */
+static	void ANTLR3_CDECL freeScope(void * scope)
+{
+    ANTLR3_FREE(scope);
+}
+
+/** \brief Name of the grammar file that generated this code
+ */
+static const char fileName[] = "../../../../../../src/parser/smt1/Smt1.g";
+
+/** \brief Return the name of the grammar file that generated this code.
+ */
+static const char * getGrammarFileName()
+{
+	return fileName;
+}
+/** \brief Create a new Smt1Parser parser and return a context for it.
+ *
+ * \param[in] instream Pointer to an input stream interface.
+ *
+ * \return Pointer to new parser context upon success.
+ */
+ANTLR3_API pSmt1Parser
+Smt1ParserNew   (pANTLR3_COMMON_TOKEN_STREAM instream)
+{
+	// See if we can create a new parser with the standard constructor
+	//
+	return Smt1ParserNewSSD(instream, NULL);
+}
+
+/** \brief Create a new Smt1Parser parser and return a context for it.
+ *
+ * \param[in] instream Pointer to an input stream interface.
+ *
+ * \return Pointer to new parser context upon success.
+ */
+ANTLR3_API pSmt1Parser
+Smt1ParserNewSSD   (pANTLR3_COMMON_TOKEN_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state)
+{
+    pSmt1Parser ctx;	    /* Context structure we will build and return   */
+
+    ctx	= (pSmt1Parser) ANTLR3_CALLOC(1, sizeof(Smt1Parser));
+
+    if	(ctx == NULL)
+    {
+		// Failed to allocate memory for parser context
+		//
+        return  NULL;
+    }
+
+    /* -------------------------------------------------------------------
+     * Memory for basic structure is allocated, now to fill in
+     * the base ANTLR3 structures. We initialize the function pointers
+     * for the standard ANTLR3 parser function set, but upon return
+     * from here, the programmer may set the pointers to provide custom
+     * implementations of each function.
+     *
+     * We don't use the macros defined in Smt1Parser.h here, in order that you can get a sense
+     * of what goes where.
+     */
+
+    /* Create a base parser/recognizer, using the supplied token stream
+     */
+    ctx->pParser	    = antlr3ParserNewStream(ANTLR3_SIZE_HINT, instream->tstream, state);
+    /* Install the implementation of our Smt1Parser interface
+     */
+    ctx->parseExpr	= parseExpr;
+    ctx->parseCommand	= parseCommand;
+    ctx->benchmark	= benchmark;
+    ctx->benchAttributes	= benchAttributes;
+    ctx->benchAttribute	= benchAttribute;
+    ctx->annotatedFormula	= annotatedFormula;
+    ctx->annotatedFormulas	= annotatedFormulas;
+    ctx->builtinOp	= builtinOp;
+    ctx->parameterizedOperator	= parameterizedOperator;
+    ctx->bitVectorOperator	= bitVectorOperator;
+    ctx->predicateName	= predicateName;
+    ctx->functionName	= functionName;
+    ctx->functionSymbol	= functionSymbol;
+    ctx->attribute	= attribute;
+    ctx->functionDeclaration	= functionDeclaration;
+    ctx->predicateDeclaration	= predicateDeclaration;
+    ctx->sortDeclaration	= sortDeclaration;
+    ctx->sortList	= sortList;
+    ctx->sortName	= sortName;
+    ctx->sortSymbol	= sortSymbol;
+    ctx->status	= status;
+    ctx->annotation	= annotation;
+    ctx->termAnnotation	= termAnnotation;
+    ctx->identifier	= identifier;
+    ctx->let_identifier	= let_identifier;
+    ctx->flet_identifier	= flet_identifier;
+    ctx->userValue	= userValue;
+    ctx->free			= Smt1ParserFree;
+    ctx->reset			= Smt1ParserReset;
+    ctx->getGrammarFileName	= getGrammarFileName;
+
+    /* Install the scope pushing methods.
+     */
+
+    /* Install the token table
+     */
+    PSRSTATE->tokenNames   = Smt1ParserTokenNames;
+
+
+    /* Return the newly built parser to the caller
+     */
+    return  ctx;
+}
+
+static void
+Smt1ParserReset (pSmt1Parser ctx)
+{
+    RECOGNIZER->reset(RECOGNIZER);
+}
+
+/** Free the parser resources
+ */
+ static void
+ Smt1ParserFree(pSmt1Parser ctx)
+ {
+    /* Free any scope memory
+     */
+
+	// Free this parser
+	//
+    ctx->pParser->free(ctx->pParser);
+
+
+    ANTLR3_FREE(ctx);
+
+    /* Everything is released, so we can return
+     */
+    return;
+ }
+
+/** Return token names used by this 
+parser
+
+ *
+ * The returned pointer is used as an index into the token names table (using the token
+ * number as the index).
+ *
+ * \return Pointer to first char * in the table.
+ */
+static pANTLR3_UINT8    *getTokenNames()
+{
+        return Smt1ParserTokenNames;
+}
+
+
+/* Declare the bitsets
+ */
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_annotatedFormula_in_parseExpr105  */
+static	ANTLR3_BITWORD FOLLOW_annotatedFormula_in_parseExpr105_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_annotatedFormula_in_parseExpr105	= { FOLLOW_annotatedFormula_in_parseExpr105_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EOF_in_parseExpr112  */
+static	ANTLR3_BITWORD FOLLOW_EOF_in_parseExpr112_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_parseExpr112	= { FOLLOW_EOF_in_parseExpr112_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_benchmark_in_parseCommand145  */
+static	ANTLR3_BITWORD FOLLOW_benchmark_in_parseCommand145_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_benchmark_in_parseCommand145	= { FOLLOW_benchmark_in_parseCommand145_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_parseCommand152  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_parseCommand152_bits[]	= { ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_parseCommand152	= { FOLLOW_LPAREN_TOK_in_parseCommand152_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_parseCommand156  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_parseCommand156_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_parseCommand156	= { FOLLOW_IDENTIFIER_in_parseCommand156_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_benchmark179  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_benchmark179_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000400) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_benchmark179	= { FOLLOW_LPAREN_TOK_in_benchmark179_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BENCHMARK_TOK_in_benchmark181  */
+static	ANTLR3_BITWORD FOLLOW_BENCHMARK_TOK_in_benchmark181_bits[]	= { ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BENCHMARK_TOK_in_benchmark181	= { FOLLOW_BENCHMARK_TOK_in_benchmark181_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_benchmark183  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_benchmark183_bits[]	= { ANTLR3_UINT64_LIT(0x0438000000000180), ANTLR3_UINT64_LIT(0x0000000001000448) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_benchmark183	= { FOLLOW_IDENTIFIER_in_benchmark183_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_benchAttributes_in_benchmark185  */
+static	ANTLR3_BITWORD FOLLOW_benchAttributes_in_benchmark185_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_benchAttributes_in_benchmark185	= { FOLLOW_benchAttributes_in_benchmark185_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_benchmark188  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_benchmark188_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_benchmark188	= { FOLLOW_RPAREN_TOK_in_benchmark188_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EOF_in_benchmark194  */
+static	ANTLR3_BITWORD FOLLOW_EOF_in_benchmark194_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_benchmark194	= { FOLLOW_EOF_in_benchmark194_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_benchAttribute_in_benchAttributes222  */
+static	ANTLR3_BITWORD FOLLOW_benchAttribute_in_benchAttributes222_bits[]	= { ANTLR3_UINT64_LIT(0x0438000000000182), ANTLR3_UINT64_LIT(0x0000000001000448) };
+static  ANTLR3_BITSET_LIST FOLLOW_benchAttribute_in_benchAttributes222	= { FOLLOW_benchAttribute_in_benchAttributes222_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LOGIC_TOK_in_benchAttribute259  */
+static	ANTLR3_BITWORD FOLLOW_LOGIC_TOK_in_benchAttribute259_bits[]	= { ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LOGIC_TOK_in_benchAttribute259	= { FOLLOW_LOGIC_TOK_in_benchAttribute259_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_benchAttribute261  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_benchAttribute261_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_benchAttribute261	= { FOLLOW_identifier_in_benchAttribute261_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSUMPTION_TOK_in_benchAttribute274  */
+static	ANTLR3_BITWORD FOLLOW_ASSUMPTION_TOK_in_benchAttribute274_bits[]	= { ANTLR3_UINT64_LIT(0x10C0000000001800), ANTLR3_UINT64_LIT(0x0000000020008112) };
+static  ANTLR3_BITSET_LIST FOLLOW_ASSUMPTION_TOK_in_benchAttribute274	= { FOLLOW_ASSUMPTION_TOK_in_benchAttribute274_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_annotatedFormula_in_benchAttribute276  */
+static	ANTLR3_BITWORD FOLLOW_annotatedFormula_in_benchAttribute276_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_annotatedFormula_in_benchAttribute276	= { FOLLOW_annotatedFormula_in_benchAttribute276_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FORMULA_TOK_in_benchAttribute289  */
+static	ANTLR3_BITWORD FOLLOW_FORMULA_TOK_in_benchAttribute289_bits[]	= { ANTLR3_UINT64_LIT(0x10C0000000001800), ANTLR3_UINT64_LIT(0x0000000020008112) };
+static  ANTLR3_BITSET_LIST FOLLOW_FORMULA_TOK_in_benchAttribute289	= { FOLLOW_FORMULA_TOK_in_benchAttribute289_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_annotatedFormula_in_benchAttribute291  */
+static	ANTLR3_BITWORD FOLLOW_annotatedFormula_in_benchAttribute291_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_annotatedFormula_in_benchAttribute291	= { FOLLOW_annotatedFormula_in_benchAttribute291_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STATUS_TOK_in_benchAttribute304  */
+static	ANTLR3_BITWORD FOLLOW_STATUS_TOK_in_benchAttribute304_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x00000000C0100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STATUS_TOK_in_benchAttribute304	= { FOLLOW_STATUS_TOK_in_benchAttribute304_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_status_in_benchAttribute306  */
+static	ANTLR3_BITWORD FOLLOW_status_in_benchAttribute306_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_status_in_benchAttribute306	= { FOLLOW_status_in_benchAttribute306_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EXTRAFUNS_TOK_in_benchAttribute319  */
+static	ANTLR3_BITWORD FOLLOW_EXTRAFUNS_TOK_in_benchAttribute319_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_EXTRAFUNS_TOK_in_benchAttribute319	= { FOLLOW_EXTRAFUNS_TOK_in_benchAttribute319_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_benchAttribute321  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_benchAttribute321_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_benchAttribute321	= { FOLLOW_LPAREN_TOK_in_benchAttribute321_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_functionDeclaration_in_benchAttribute335  */
+static	ANTLR3_BITWORD FOLLOW_functionDeclaration_in_benchAttribute335_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000080010) };
+static  ANTLR3_BITSET_LIST FOLLOW_functionDeclaration_in_benchAttribute335	= { FOLLOW_functionDeclaration_in_benchAttribute335_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_benchAttribute353  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_benchAttribute353_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_benchAttribute353	= { FOLLOW_RPAREN_TOK_in_benchAttribute353_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EXTRAPREDS_TOK_in_benchAttribute367  */
+static	ANTLR3_BITWORD FOLLOW_EXTRAPREDS_TOK_in_benchAttribute367_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_EXTRAPREDS_TOK_in_benchAttribute367	= { FOLLOW_EXTRAPREDS_TOK_in_benchAttribute367_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_benchAttribute369  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_benchAttribute369_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_benchAttribute369	= { FOLLOW_LPAREN_TOK_in_benchAttribute369_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_predicateDeclaration_in_benchAttribute383  */
+static	ANTLR3_BITWORD FOLLOW_predicateDeclaration_in_benchAttribute383_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000080010) };
+static  ANTLR3_BITSET_LIST FOLLOW_predicateDeclaration_in_benchAttribute383	= { FOLLOW_predicateDeclaration_in_benchAttribute383_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_benchAttribute401  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_benchAttribute401_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_benchAttribute401	= { FOLLOW_RPAREN_TOK_in_benchAttribute401_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EXTRASORTS_TOK_in_benchAttribute415  */
+static	ANTLR3_BITWORD FOLLOW_EXTRASORTS_TOK_in_benchAttribute415_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_EXTRASORTS_TOK_in_benchAttribute415	= { FOLLOW_EXTRASORTS_TOK_in_benchAttribute415_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_benchAttribute417  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_benchAttribute417_bits[]	= { ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_benchAttribute417	= { FOLLOW_LPAREN_TOK_in_benchAttribute417_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortDeclaration_in_benchAttribute433  */
+static	ANTLR3_BITWORD FOLLOW_sortDeclaration_in_benchAttribute433_bits[]	= { ANTLR3_UINT64_LIT(0x1000000000000000), ANTLR3_UINT64_LIT(0x0000000000080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortDeclaration_in_benchAttribute433	= { FOLLOW_sortDeclaration_in_benchAttribute433_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_benchAttribute451  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_benchAttribute451_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_benchAttribute451	= { FOLLOW_RPAREN_TOK_in_benchAttribute451_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NOTES_TOK_in_benchAttribute465  */
+static	ANTLR3_BITWORD FOLLOW_NOTES_TOK_in_benchAttribute465_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000004000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_NOTES_TOK_in_benchAttribute465	= { FOLLOW_NOTES_TOK_in_benchAttribute465_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_LITERAL_in_benchAttribute467  */
+static	ANTLR3_BITWORD FOLLOW_STRING_LITERAL_in_benchAttribute467_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_LITERAL_in_benchAttribute467	= { FOLLOW_STRING_LITERAL_in_benchAttribute467_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_annotation_in_benchAttribute479  */
+static	ANTLR3_BITWORD FOLLOW_annotation_in_benchAttribute479_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_annotation_in_benchAttribute479	= { FOLLOW_annotation_in_benchAttribute479_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_annotatedFormula507  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_annotatedFormula507_bits[]	= { ANTLR3_UINT64_LIT(0x6800EBFFFFFFC040), ANTLR3_UINT64_LIT(0x0000000412A022A1) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_annotatedFormula507	= { FOLLOW_LPAREN_TOK_in_annotatedFormula507_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_builtinOp_in_annotatedFormula509  */
+static	ANTLR3_BITWORD FOLLOW_builtinOp_in_annotatedFormula509_bits[]	= { ANTLR3_UINT64_LIT(0x10C0000000001800), ANTLR3_UINT64_LIT(0x0000000020008112) };
+static  ANTLR3_BITSET_LIST FOLLOW_builtinOp_in_annotatedFormula509	= { FOLLOW_builtinOp_in_annotatedFormula509_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_annotatedFormulas_in_annotatedFormula512  */
+static	ANTLR3_BITWORD FOLLOW_annotatedFormulas_in_annotatedFormula512_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100), ANTLR3_UINT64_LIT(0x0000002000080400) };
+static  ANTLR3_BITSET_LIST FOLLOW_annotatedFormulas_in_annotatedFormula512	= { FOLLOW_annotatedFormulas_in_annotatedFormula512_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_termAnnotation_in_annotatedFormula525  */
+static	ANTLR3_BITWORD FOLLOW_termAnnotation_in_annotatedFormula525_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100), ANTLR3_UINT64_LIT(0x0000002000080400) };
+static  ANTLR3_BITSET_LIST FOLLOW_termAnnotation_in_annotatedFormula525	= { FOLLOW_termAnnotation_in_annotatedFormula525_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_annotatedFormula529  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_annotatedFormula529_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_annotatedFormula529	= { FOLLOW_RPAREN_TOK_in_annotatedFormula529_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_annotatedFormula542  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_annotatedFormula542_bits[]	= { ANTLR3_UINT64_LIT(0x0202000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_annotatedFormula542	= { FOLLOW_LPAREN_TOK_in_annotatedFormula542_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FORALL_TOK_in_annotatedFormula550  */
+static	ANTLR3_BITWORD FOLLOW_FORALL_TOK_in_annotatedFormula550_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_FORALL_TOK_in_annotatedFormula550	= { FOLLOW_FORALL_TOK_in_annotatedFormula550_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EXISTS_TOK_in_annotatedFormula556  */
+static	ANTLR3_BITWORD FOLLOW_EXISTS_TOK_in_annotatedFormula556_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_EXISTS_TOK_in_annotatedFormula556	= { FOLLOW_EXISTS_TOK_in_annotatedFormula556_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_annotatedFormula574  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_annotatedFormula574_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_annotatedFormula574	= { FOLLOW_LPAREN_TOK_in_annotatedFormula574_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_let_identifier_in_annotatedFormula576  */
+static	ANTLR3_BITWORD FOLLOW_let_identifier_in_annotatedFormula576_bits[]	= { ANTLR3_UINT64_LIT(0x1000000000002000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_let_identifier_in_annotatedFormula576	= { FOLLOW_let_identifier_in_annotatedFormula576_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_annotatedFormula581  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_annotatedFormula581_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_annotatedFormula581	= { FOLLOW_sortSymbol_in_annotatedFormula581_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_annotatedFormula583  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_annotatedFormula583_bits[]	= { ANTLR3_UINT64_LIT(0x10C0000000001800), ANTLR3_UINT64_LIT(0x0000000020008112) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_annotatedFormula583	= { FOLLOW_RPAREN_TOK_in_annotatedFormula583_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_annotatedFormula_in_annotatedFormula604  */
+static	ANTLR3_BITWORD FOLLOW_annotatedFormula_in_annotatedFormula604_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100), ANTLR3_UINT64_LIT(0x0000002000080400) };
+static  ANTLR3_BITSET_LIST FOLLOW_annotatedFormula_in_annotatedFormula604	= { FOLLOW_annotatedFormula_in_annotatedFormula604_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_termAnnotation_in_annotatedFormula617  */
+static	ANTLR3_BITWORD FOLLOW_termAnnotation_in_annotatedFormula617_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100), ANTLR3_UINT64_LIT(0x0000002000080400) };
+static  ANTLR3_BITSET_LIST FOLLOW_termAnnotation_in_annotatedFormula617	= { FOLLOW_termAnnotation_in_annotatedFormula617_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_annotatedFormula621  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_annotatedFormula621_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_annotatedFormula621	= { FOLLOW_RPAREN_TOK_in_annotatedFormula621_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_annotatedFormula656  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_annotatedFormula656_bits[]	= { ANTLR3_UINT64_LIT(0x1004000000000000), ANTLR3_UINT64_LIT(0x0000000800470000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_annotatedFormula656	= { FOLLOW_LPAREN_TOK_in_annotatedFormula656_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_parameterizedOperator_in_annotatedFormula662  */
+static	ANTLR3_BITWORD FOLLOW_parameterizedOperator_in_annotatedFormula662_bits[]	= { ANTLR3_UINT64_LIT(0x10C0000000001800), ANTLR3_UINT64_LIT(0x0000000020008112) };
+static  ANTLR3_BITSET_LIST FOLLOW_parameterizedOperator_in_annotatedFormula662	= { FOLLOW_parameterizedOperator_in_annotatedFormula662_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_annotatedFormulas_in_annotatedFormula669  */
+static	ANTLR3_BITWORD FOLLOW_annotatedFormulas_in_annotatedFormula669_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100), ANTLR3_UINT64_LIT(0x0000002000080400) };
+static  ANTLR3_BITSET_LIST FOLLOW_annotatedFormulas_in_annotatedFormula669	= { FOLLOW_annotatedFormulas_in_annotatedFormula669_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_termAnnotation_in_annotatedFormula687  */
+static	ANTLR3_BITWORD FOLLOW_termAnnotation_in_annotatedFormula687_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100), ANTLR3_UINT64_LIT(0x0000002000080400) };
+static  ANTLR3_BITSET_LIST FOLLOW_termAnnotation_in_annotatedFormula687	= { FOLLOW_termAnnotation_in_annotatedFormula687_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_annotatedFormula691  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_annotatedFormula691_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_annotatedFormula691	= { FOLLOW_RPAREN_TOK_in_annotatedFormula691_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_annotatedFormula704  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_annotatedFormula704_bits[]	= { ANTLR3_UINT64_LIT(0x8000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_annotatedFormula704	= { FOLLOW_LPAREN_TOK_in_annotatedFormula704_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ITE_TOK_in_annotatedFormula706  */
+static	ANTLR3_BITWORD FOLLOW_ITE_TOK_in_annotatedFormula706_bits[]	= { ANTLR3_UINT64_LIT(0x10C0000000001800), ANTLR3_UINT64_LIT(0x0000000020008112) };
+static  ANTLR3_BITSET_LIST FOLLOW_ITE_TOK_in_annotatedFormula706	= { FOLLOW_ITE_TOK_in_annotatedFormula706_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_annotatedFormula_in_annotatedFormula712  */
+static	ANTLR3_BITWORD FOLLOW_annotatedFormula_in_annotatedFormula712_bits[]	= { ANTLR3_UINT64_LIT(0x10C0000000001800), ANTLR3_UINT64_LIT(0x0000000020008112) };
+static  ANTLR3_BITSET_LIST FOLLOW_annotatedFormula_in_annotatedFormula712	= { FOLLOW_annotatedFormula_in_annotatedFormula712_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_annotatedFormula_in_annotatedFormula725  */
+static	ANTLR3_BITWORD FOLLOW_annotatedFormula_in_annotatedFormula725_bits[]	= { ANTLR3_UINT64_LIT(0x10C0000000001800), ANTLR3_UINT64_LIT(0x0000000020008112) };
+static  ANTLR3_BITSET_LIST FOLLOW_annotatedFormula_in_annotatedFormula725	= { FOLLOW_annotatedFormula_in_annotatedFormula725_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_annotatedFormula_in_annotatedFormula738  */
+static	ANTLR3_BITWORD FOLLOW_annotatedFormula_in_annotatedFormula738_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100), ANTLR3_UINT64_LIT(0x0000002000080400) };
+static  ANTLR3_BITSET_LIST FOLLOW_annotatedFormula_in_annotatedFormula738	= { FOLLOW_annotatedFormula_in_annotatedFormula738_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_termAnnotation_in_annotatedFormula751  */
+static	ANTLR3_BITWORD FOLLOW_termAnnotation_in_annotatedFormula751_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100), ANTLR3_UINT64_LIT(0x0000002000080400) };
+static  ANTLR3_BITSET_LIST FOLLOW_termAnnotation_in_annotatedFormula751	= { FOLLOW_termAnnotation_in_annotatedFormula751_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_annotatedFormula755  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_annotatedFormula755_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_annotatedFormula755	= { FOLLOW_RPAREN_TOK_in_annotatedFormula755_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_annotatedFormula768  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_annotatedFormula768_bits[]	= { ANTLR3_UINT64_LIT(0x0100000000000000), ANTLR3_UINT64_LIT(0x0000000000000004) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_annotatedFormula768	= { FOLLOW_LPAREN_TOK_in_annotatedFormula768_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LET_TOK_in_annotatedFormula776  */
+static	ANTLR3_BITWORD FOLLOW_LET_TOK_in_annotatedFormula776_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_LET_TOK_in_annotatedFormula776	= { FOLLOW_LET_TOK_in_annotatedFormula776_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_annotatedFormula778  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_annotatedFormula778_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_annotatedFormula778	= { FOLLOW_LPAREN_TOK_in_annotatedFormula778_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_let_identifier_in_annotatedFormula780  */
+static	ANTLR3_BITWORD FOLLOW_let_identifier_in_annotatedFormula780_bits[]	= { ANTLR3_UINT64_LIT(0x10C0000000001800), ANTLR3_UINT64_LIT(0x0000000020008112) };
+static  ANTLR3_BITSET_LIST FOLLOW_let_identifier_in_annotatedFormula780	= { FOLLOW_let_identifier_in_annotatedFormula780_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FLET_TOK_in_annotatedFormula791  */
+static	ANTLR3_BITWORD FOLLOW_FLET_TOK_in_annotatedFormula791_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_FLET_TOK_in_annotatedFormula791	= { FOLLOW_FLET_TOK_in_annotatedFormula791_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_annotatedFormula793  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_annotatedFormula793_bits[]	= { ANTLR3_UINT64_LIT(0x0080000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_annotatedFormula793	= { FOLLOW_LPAREN_TOK_in_annotatedFormula793_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_flet_identifier_in_annotatedFormula795  */
+static	ANTLR3_BITWORD FOLLOW_flet_identifier_in_annotatedFormula795_bits[]	= { ANTLR3_UINT64_LIT(0x10C0000000001800), ANTLR3_UINT64_LIT(0x0000000020008112) };
+static  ANTLR3_BITSET_LIST FOLLOW_flet_identifier_in_annotatedFormula795	= { FOLLOW_flet_identifier_in_annotatedFormula795_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_annotatedFormula_in_annotatedFormula804  */
+static	ANTLR3_BITWORD FOLLOW_annotatedFormula_in_annotatedFormula804_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_annotatedFormula_in_annotatedFormula804	= { FOLLOW_annotatedFormula_in_annotatedFormula804_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_annotatedFormula807  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_annotatedFormula807_bits[]	= { ANTLR3_UINT64_LIT(0x10C0000000001800), ANTLR3_UINT64_LIT(0x0000000020008112) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_annotatedFormula807	= { FOLLOW_RPAREN_TOK_in_annotatedFormula807_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_annotatedFormula_in_annotatedFormula819  */
+static	ANTLR3_BITWORD FOLLOW_annotatedFormula_in_annotatedFormula819_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100), ANTLR3_UINT64_LIT(0x0000002000080400) };
+static  ANTLR3_BITSET_LIST FOLLOW_annotatedFormula_in_annotatedFormula819	= { FOLLOW_annotatedFormula_in_annotatedFormula819_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_termAnnotation_in_annotatedFormula826  */
+static	ANTLR3_BITWORD FOLLOW_termAnnotation_in_annotatedFormula826_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100), ANTLR3_UINT64_LIT(0x0000002000080400) };
+static  ANTLR3_BITSET_LIST FOLLOW_termAnnotation_in_annotatedFormula826	= { FOLLOW_termAnnotation_in_annotatedFormula826_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_annotatedFormula830  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_annotatedFormula830_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_annotatedFormula830	= { FOLLOW_RPAREN_TOK_in_annotatedFormula830_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRUE_TOK_in_annotatedFormula849  */
+static	ANTLR3_BITWORD FOLLOW_TRUE_TOK_in_annotatedFormula849_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_TRUE_TOK_in_annotatedFormula849	= { FOLLOW_TRUE_TOK_in_annotatedFormula849_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FALSE_TOK_in_annotatedFormula866  */
+static	ANTLR3_BITWORD FOLLOW_FALSE_TOK_in_annotatedFormula866_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FALSE_TOK_in_annotatedFormula866	= { FOLLOW_FALSE_TOK_in_annotatedFormula866_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NUMERAL_TOK_in_annotatedFormula882  */
+static	ANTLR3_BITWORD FOLLOW_NUMERAL_TOK_in_annotatedFormula882_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_NUMERAL_TOK_in_annotatedFormula882	= { FOLLOW_NUMERAL_TOK_in_annotatedFormula882_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RATIONAL_TOK_in_annotatedFormula894  */
+static	ANTLR3_BITWORD FOLLOW_RATIONAL_TOK_in_annotatedFormula894_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RATIONAL_TOK_in_annotatedFormula894	= { FOLLOW_RATIONAL_TOK_in_annotatedFormula894_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BITVECTOR_BV_CONST_in_annotatedFormula910  */
+static	ANTLR3_BITWORD FOLLOW_BITVECTOR_BV_CONST_in_annotatedFormula910_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000008000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BITVECTOR_BV_CONST_in_annotatedFormula910	= { FOLLOW_BITVECTOR_BV_CONST_in_annotatedFormula910_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_103_in_annotatedFormula912  */
+static	ANTLR3_BITWORD FOLLOW_103_in_annotatedFormula912_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000100) };
+static  ANTLR3_BITSET_LIST FOLLOW_103_in_annotatedFormula912	= { FOLLOW_103_in_annotatedFormula912_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NUMERAL_TOK_in_annotatedFormula918  */
+static	ANTLR3_BITWORD FOLLOW_NUMERAL_TOK_in_annotatedFormula918_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000010000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_NUMERAL_TOK_in_annotatedFormula918	= { FOLLOW_NUMERAL_TOK_in_annotatedFormula918_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_104_in_annotatedFormula920  */
+static	ANTLR3_BITWORD FOLLOW_104_in_annotatedFormula920_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_104_in_annotatedFormula920	= { FOLLOW_104_in_annotatedFormula920_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BITVECTOR1_BV_CONST_in_annotatedFormula936  */
+static	ANTLR3_BITWORD FOLLOW_BITVECTOR1_BV_CONST_in_annotatedFormula936_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BITVECTOR1_BV_CONST_in_annotatedFormula936	= { FOLLOW_BITVECTOR1_BV_CONST_in_annotatedFormula936_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_annotatedFormula968  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_annotatedFormula968_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_annotatedFormula968	= { FOLLOW_identifier_in_annotatedFormula968_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_let_identifier_in_annotatedFormula979  */
+static	ANTLR3_BITWORD FOLLOW_let_identifier_in_annotatedFormula979_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_let_identifier_in_annotatedFormula979	= { FOLLOW_let_identifier_in_annotatedFormula979_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_flet_identifier_in_annotatedFormula990  */
+static	ANTLR3_BITWORD FOLLOW_flet_identifier_in_annotatedFormula990_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_flet_identifier_in_annotatedFormula990	= { FOLLOW_flet_identifier_in_annotatedFormula990_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_annotatedFormula_in_annotatedFormulas1019  */
+static	ANTLR3_BITWORD FOLLOW_annotatedFormula_in_annotatedFormulas1019_bits[]	= { ANTLR3_UINT64_LIT(0x10C0000000001802), ANTLR3_UINT64_LIT(0x0000000020008112) };
+static  ANTLR3_BITSET_LIST FOLLOW_annotatedFormula_in_annotatedFormulas1019	= { FOLLOW_annotatedFormula_in_annotatedFormulas1019_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NOT_TOK_in_builtinOp1046  */
+static	ANTLR3_BITWORD FOLLOW_NOT_TOK_in_builtinOp1046_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_NOT_TOK_in_builtinOp1046	= { FOLLOW_NOT_TOK_in_builtinOp1046_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IMPLIES_TOK_in_builtinOp1059  */
+static	ANTLR3_BITWORD FOLLOW_IMPLIES_TOK_in_builtinOp1059_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IMPLIES_TOK_in_builtinOp1059	= { FOLLOW_IMPLIES_TOK_in_builtinOp1059_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_AND_TOK_in_builtinOp1068  */
+static	ANTLR3_BITWORD FOLLOW_AND_TOK_in_builtinOp1068_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_AND_TOK_in_builtinOp1068	= { FOLLOW_AND_TOK_in_builtinOp1068_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_OR_TOK_in_builtinOp1081  */
+static	ANTLR3_BITWORD FOLLOW_OR_TOK_in_builtinOp1081_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_OR_TOK_in_builtinOp1081	= { FOLLOW_OR_TOK_in_builtinOp1081_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_XOR_TOK_in_builtinOp1095  */
+static	ANTLR3_BITWORD FOLLOW_XOR_TOK_in_builtinOp1095_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_XOR_TOK_in_builtinOp1095	= { FOLLOW_XOR_TOK_in_builtinOp1095_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IFF_TOK_in_builtinOp1108  */
+static	ANTLR3_BITWORD FOLLOW_IFF_TOK_in_builtinOp1108_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IFF_TOK_in_builtinOp1108	= { FOLLOW_IFF_TOK_in_builtinOp1108_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_builtinOp1121  */
+static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_builtinOp1121_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_builtinOp1121	= { FOLLOW_EQUAL_TOK_in_builtinOp1121_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DISTINCT_TOK_in_builtinOp1132  */
+static	ANTLR3_BITWORD FOLLOW_DISTINCT_TOK_in_builtinOp1132_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DISTINCT_TOK_in_builtinOp1132	= { FOLLOW_DISTINCT_TOK_in_builtinOp1132_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GREATER_THAN_TOK_in_builtinOp1143  */
+static	ANTLR3_BITWORD FOLLOW_GREATER_THAN_TOK_in_builtinOp1143_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_GREATER_THAN_TOK_in_builtinOp1143	= { FOLLOW_GREATER_THAN_TOK_in_builtinOp1143_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GREATER_THAN_TOK_in_builtinOp1168  */
+static	ANTLR3_BITWORD FOLLOW_GREATER_THAN_TOK_in_builtinOp1168_bits[]	= { ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_GREATER_THAN_TOK_in_builtinOp1168	= { FOLLOW_GREATER_THAN_TOK_in_builtinOp1168_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_builtinOp1170  */
+static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_builtinOp1170_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_builtinOp1170	= { FOLLOW_EQUAL_TOK_in_builtinOp1170_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LESS_THAN_TOK_in_builtinOp1195  */
+static	ANTLR3_BITWORD FOLLOW_LESS_THAN_TOK_in_builtinOp1195_bits[]	= { ANTLR3_UINT64_LIT(0x0000800000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LESS_THAN_TOK_in_builtinOp1195	= { FOLLOW_LESS_THAN_TOK_in_builtinOp1195_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_builtinOp1197  */
+static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_builtinOp1197_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_builtinOp1197	= { FOLLOW_EQUAL_TOK_in_builtinOp1197_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LESS_THAN_TOK_in_builtinOp1222  */
+static	ANTLR3_BITWORD FOLLOW_LESS_THAN_TOK_in_builtinOp1222_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_LESS_THAN_TOK_in_builtinOp1222	= { FOLLOW_LESS_THAN_TOK_in_builtinOp1222_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PLUS_TOK_in_builtinOp1247  */
+static	ANTLR3_BITWORD FOLLOW_PLUS_TOK_in_builtinOp1247_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_PLUS_TOK_in_builtinOp1247	= { FOLLOW_PLUS_TOK_in_builtinOp1247_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STAR_TOK_in_builtinOp1259  */
+static	ANTLR3_BITWORD FOLLOW_STAR_TOK_in_builtinOp1259_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_STAR_TOK_in_builtinOp1259	= { FOLLOW_STAR_TOK_in_builtinOp1259_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TILDE_TOK_in_builtinOp1271  */
+static	ANTLR3_BITWORD FOLLOW_TILDE_TOK_in_builtinOp1271_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_TILDE_TOK_in_builtinOp1271	= { FOLLOW_TILDE_TOK_in_builtinOp1271_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_MINUS_TOK_in_builtinOp1282  */
+static	ANTLR3_BITWORD FOLLOW_MINUS_TOK_in_builtinOp1282_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_MINUS_TOK_in_builtinOp1282	= { FOLLOW_MINUS_TOK_in_builtinOp1282_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DIV_TOK_in_builtinOp1293  */
+static	ANTLR3_BITWORD FOLLOW_DIV_TOK_in_builtinOp1293_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DIV_TOK_in_builtinOp1293	= { FOLLOW_DIV_TOK_in_builtinOp1293_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CONCAT_TOK_in_builtinOp1309  */
+static	ANTLR3_BITWORD FOLLOW_CONCAT_TOK_in_builtinOp1309_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_CONCAT_TOK_in_builtinOp1309	= { FOLLOW_CONCAT_TOK_in_builtinOp1309_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVAND_TOK_in_builtinOp1319  */
+static	ANTLR3_BITWORD FOLLOW_BVAND_TOK_in_builtinOp1319_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVAND_TOK_in_builtinOp1319	= { FOLLOW_BVAND_TOK_in_builtinOp1319_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVOR_TOK_in_builtinOp1330  */
+static	ANTLR3_BITWORD FOLLOW_BVOR_TOK_in_builtinOp1330_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVOR_TOK_in_builtinOp1330	= { FOLLOW_BVOR_TOK_in_builtinOp1330_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVXOR_TOK_in_builtinOp1342  */
+static	ANTLR3_BITWORD FOLLOW_BVXOR_TOK_in_builtinOp1342_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVXOR_TOK_in_builtinOp1342	= { FOLLOW_BVXOR_TOK_in_builtinOp1342_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVNOT_TOK_in_builtinOp1353  */
+static	ANTLR3_BITWORD FOLLOW_BVNOT_TOK_in_builtinOp1353_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVNOT_TOK_in_builtinOp1353	= { FOLLOW_BVNOT_TOK_in_builtinOp1353_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVNAND_TOK_in_builtinOp1364  */
+static	ANTLR3_BITWORD FOLLOW_BVNAND_TOK_in_builtinOp1364_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVNAND_TOK_in_builtinOp1364	= { FOLLOW_BVNAND_TOK_in_builtinOp1364_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVNOR_TOK_in_builtinOp1374  */
+static	ANTLR3_BITWORD FOLLOW_BVNOR_TOK_in_builtinOp1374_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVNOR_TOK_in_builtinOp1374	= { FOLLOW_BVNOR_TOK_in_builtinOp1374_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVXNOR_TOK_in_builtinOp1385  */
+static	ANTLR3_BITWORD FOLLOW_BVXNOR_TOK_in_builtinOp1385_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVXNOR_TOK_in_builtinOp1385	= { FOLLOW_BVXNOR_TOK_in_builtinOp1385_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVCOMP_TOK_in_builtinOp1395  */
+static	ANTLR3_BITWORD FOLLOW_BVCOMP_TOK_in_builtinOp1395_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVCOMP_TOK_in_builtinOp1395	= { FOLLOW_BVCOMP_TOK_in_builtinOp1395_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVMUL_TOK_in_builtinOp1405  */
+static	ANTLR3_BITWORD FOLLOW_BVMUL_TOK_in_builtinOp1405_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVMUL_TOK_in_builtinOp1405	= { FOLLOW_BVMUL_TOK_in_builtinOp1405_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVADD_TOK_in_builtinOp1416  */
+static	ANTLR3_BITWORD FOLLOW_BVADD_TOK_in_builtinOp1416_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVADD_TOK_in_builtinOp1416	= { FOLLOW_BVADD_TOK_in_builtinOp1416_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSUB_TOK_in_builtinOp1427  */
+static	ANTLR3_BITWORD FOLLOW_BVSUB_TOK_in_builtinOp1427_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSUB_TOK_in_builtinOp1427	= { FOLLOW_BVSUB_TOK_in_builtinOp1427_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVNEG_TOK_in_builtinOp1438  */
+static	ANTLR3_BITWORD FOLLOW_BVNEG_TOK_in_builtinOp1438_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVNEG_TOK_in_builtinOp1438	= { FOLLOW_BVNEG_TOK_in_builtinOp1438_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVUDIV_TOK_in_builtinOp1449  */
+static	ANTLR3_BITWORD FOLLOW_BVUDIV_TOK_in_builtinOp1449_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVUDIV_TOK_in_builtinOp1449	= { FOLLOW_BVUDIV_TOK_in_builtinOp1449_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVUREM_TOK_in_builtinOp1459  */
+static	ANTLR3_BITWORD FOLLOW_BVUREM_TOK_in_builtinOp1459_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVUREM_TOK_in_builtinOp1459	= { FOLLOW_BVUREM_TOK_in_builtinOp1459_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSDIV_TOK_in_builtinOp1469  */
+static	ANTLR3_BITWORD FOLLOW_BVSDIV_TOK_in_builtinOp1469_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSDIV_TOK_in_builtinOp1469	= { FOLLOW_BVSDIV_TOK_in_builtinOp1469_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSREM_TOK_in_builtinOp1479  */
+static	ANTLR3_BITWORD FOLLOW_BVSREM_TOK_in_builtinOp1479_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSREM_TOK_in_builtinOp1479	= { FOLLOW_BVSREM_TOK_in_builtinOp1479_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSMOD_TOK_in_builtinOp1489  */
+static	ANTLR3_BITWORD FOLLOW_BVSMOD_TOK_in_builtinOp1489_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSMOD_TOK_in_builtinOp1489	= { FOLLOW_BVSMOD_TOK_in_builtinOp1489_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSHL_TOK_in_builtinOp1499  */
+static	ANTLR3_BITWORD FOLLOW_BVSHL_TOK_in_builtinOp1499_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSHL_TOK_in_builtinOp1499	= { FOLLOW_BVSHL_TOK_in_builtinOp1499_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVLSHR_TOK_in_builtinOp1510  */
+static	ANTLR3_BITWORD FOLLOW_BVLSHR_TOK_in_builtinOp1510_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVLSHR_TOK_in_builtinOp1510	= { FOLLOW_BVLSHR_TOK_in_builtinOp1510_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVASHR_TOK_in_builtinOp1520  */
+static	ANTLR3_BITWORD FOLLOW_BVASHR_TOK_in_builtinOp1520_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVASHR_TOK_in_builtinOp1520	= { FOLLOW_BVASHR_TOK_in_builtinOp1520_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVULT_TOK_in_builtinOp1530  */
+static	ANTLR3_BITWORD FOLLOW_BVULT_TOK_in_builtinOp1530_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVULT_TOK_in_builtinOp1530	= { FOLLOW_BVULT_TOK_in_builtinOp1530_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVULE_TOK_in_builtinOp1541  */
+static	ANTLR3_BITWORD FOLLOW_BVULE_TOK_in_builtinOp1541_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVULE_TOK_in_builtinOp1541	= { FOLLOW_BVULE_TOK_in_builtinOp1541_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVUGT_TOK_in_builtinOp1552  */
+static	ANTLR3_BITWORD FOLLOW_BVUGT_TOK_in_builtinOp1552_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVUGT_TOK_in_builtinOp1552	= { FOLLOW_BVUGT_TOK_in_builtinOp1552_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVUGE_TOK_in_builtinOp1563  */
+static	ANTLR3_BITWORD FOLLOW_BVUGE_TOK_in_builtinOp1563_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVUGE_TOK_in_builtinOp1563	= { FOLLOW_BVUGE_TOK_in_builtinOp1563_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSLT_TOK_in_builtinOp1574  */
+static	ANTLR3_BITWORD FOLLOW_BVSLT_TOK_in_builtinOp1574_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSLT_TOK_in_builtinOp1574	= { FOLLOW_BVSLT_TOK_in_builtinOp1574_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSLE_TOK_in_builtinOp1585  */
+static	ANTLR3_BITWORD FOLLOW_BVSLE_TOK_in_builtinOp1585_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSLE_TOK_in_builtinOp1585	= { FOLLOW_BVSLE_TOK_in_builtinOp1585_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSGT_TOK_in_builtinOp1596  */
+static	ANTLR3_BITWORD FOLLOW_BVSGT_TOK_in_builtinOp1596_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSGT_TOK_in_builtinOp1596	= { FOLLOW_BVSGT_TOK_in_builtinOp1596_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSGE_TOK_in_builtinOp1607  */
+static	ANTLR3_BITWORD FOLLOW_BVSGE_TOK_in_builtinOp1607_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSGE_TOK_in_builtinOp1607	= { FOLLOW_BVSGE_TOK_in_builtinOp1607_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SELECT_TOK_in_builtinOp1621  */
+static	ANTLR3_BITWORD FOLLOW_SELECT_TOK_in_builtinOp1621_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SELECT_TOK_in_builtinOp1621	= { FOLLOW_SELECT_TOK_in_builtinOp1621_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STORE_TOK_in_builtinOp1631  */
+static	ANTLR3_BITWORD FOLLOW_STORE_TOK_in_builtinOp1631_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_STORE_TOK_in_builtinOp1631	= { FOLLOW_STORE_TOK_in_builtinOp1631_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_functionSymbol_in_parameterizedOperator1655  */
+static	ANTLR3_BITWORD FOLLOW_functionSymbol_in_parameterizedOperator1655_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_functionSymbol_in_parameterizedOperator1655	= { FOLLOW_functionSymbol_in_parameterizedOperator1655_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bitVectorOperator_in_parameterizedOperator1662  */
+static	ANTLR3_BITWORD FOLLOW_bitVectorOperator_in_parameterizedOperator1662_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_bitVectorOperator_in_parameterizedOperator1662	= { FOLLOW_bitVectorOperator_in_parameterizedOperator1662_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EXTRACT_TOK_in_bitVectorOperator1679  */
+static	ANTLR3_BITWORD FOLLOW_EXTRACT_TOK_in_bitVectorOperator1679_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000008000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_EXTRACT_TOK_in_bitVectorOperator1679	= { FOLLOW_EXTRACT_TOK_in_bitVectorOperator1679_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_103_in_bitVectorOperator1681  */
+static	ANTLR3_BITWORD FOLLOW_103_in_bitVectorOperator1681_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000100) };
+static  ANTLR3_BITSET_LIST FOLLOW_103_in_bitVectorOperator1681	= { FOLLOW_103_in_bitVectorOperator1681_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NUMERAL_TOK_in_bitVectorOperator1687  */
+static	ANTLR3_BITWORD FOLLOW_NUMERAL_TOK_in_bitVectorOperator1687_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000001000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_NUMERAL_TOK_in_bitVectorOperator1687	= { FOLLOW_NUMERAL_TOK_in_bitVectorOperator1687_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_100_in_bitVectorOperator1689  */
+static	ANTLR3_BITWORD FOLLOW_100_in_bitVectorOperator1689_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000100) };
+static  ANTLR3_BITSET_LIST FOLLOW_100_in_bitVectorOperator1689	= { FOLLOW_100_in_bitVectorOperator1689_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NUMERAL_TOK_in_bitVectorOperator1695  */
+static	ANTLR3_BITWORD FOLLOW_NUMERAL_TOK_in_bitVectorOperator1695_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000010000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_NUMERAL_TOK_in_bitVectorOperator1695	= { FOLLOW_NUMERAL_TOK_in_bitVectorOperator1695_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_104_in_bitVectorOperator1697  */
+static	ANTLR3_BITWORD FOLLOW_104_in_bitVectorOperator1697_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_104_in_bitVectorOperator1697	= { FOLLOW_104_in_bitVectorOperator1697_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_REPEAT_TOK_in_bitVectorOperator1709  */
+static	ANTLR3_BITWORD FOLLOW_REPEAT_TOK_in_bitVectorOperator1709_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000008000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_REPEAT_TOK_in_bitVectorOperator1709	= { FOLLOW_REPEAT_TOK_in_bitVectorOperator1709_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_103_in_bitVectorOperator1711  */
+static	ANTLR3_BITWORD FOLLOW_103_in_bitVectorOperator1711_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000100) };
+static  ANTLR3_BITSET_LIST FOLLOW_103_in_bitVectorOperator1711	= { FOLLOW_103_in_bitVectorOperator1711_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NUMERAL_TOK_in_bitVectorOperator1717  */
+static	ANTLR3_BITWORD FOLLOW_NUMERAL_TOK_in_bitVectorOperator1717_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000010000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_NUMERAL_TOK_in_bitVectorOperator1717	= { FOLLOW_NUMERAL_TOK_in_bitVectorOperator1717_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_104_in_bitVectorOperator1719  */
+static	ANTLR3_BITWORD FOLLOW_104_in_bitVectorOperator1719_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_104_in_bitVectorOperator1719	= { FOLLOW_104_in_bitVectorOperator1719_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ZERO_EXTEND_TOK_in_bitVectorOperator1731  */
+static	ANTLR3_BITWORD FOLLOW_ZERO_EXTEND_TOK_in_bitVectorOperator1731_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000008000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_ZERO_EXTEND_TOK_in_bitVectorOperator1731	= { FOLLOW_ZERO_EXTEND_TOK_in_bitVectorOperator1731_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_103_in_bitVectorOperator1733  */
+static	ANTLR3_BITWORD FOLLOW_103_in_bitVectorOperator1733_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000100) };
+static  ANTLR3_BITSET_LIST FOLLOW_103_in_bitVectorOperator1733	= { FOLLOW_103_in_bitVectorOperator1733_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NUMERAL_TOK_in_bitVectorOperator1739  */
+static	ANTLR3_BITWORD FOLLOW_NUMERAL_TOK_in_bitVectorOperator1739_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000010000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_NUMERAL_TOK_in_bitVectorOperator1739	= { FOLLOW_NUMERAL_TOK_in_bitVectorOperator1739_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_104_in_bitVectorOperator1741  */
+static	ANTLR3_BITWORD FOLLOW_104_in_bitVectorOperator1741_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_104_in_bitVectorOperator1741	= { FOLLOW_104_in_bitVectorOperator1741_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SIGN_EXTEND_TOK_in_bitVectorOperator1753  */
+static	ANTLR3_BITWORD FOLLOW_SIGN_EXTEND_TOK_in_bitVectorOperator1753_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000008000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_SIGN_EXTEND_TOK_in_bitVectorOperator1753	= { FOLLOW_SIGN_EXTEND_TOK_in_bitVectorOperator1753_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_103_in_bitVectorOperator1755  */
+static	ANTLR3_BITWORD FOLLOW_103_in_bitVectorOperator1755_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000100) };
+static  ANTLR3_BITSET_LIST FOLLOW_103_in_bitVectorOperator1755	= { FOLLOW_103_in_bitVectorOperator1755_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NUMERAL_TOK_in_bitVectorOperator1761  */
+static	ANTLR3_BITWORD FOLLOW_NUMERAL_TOK_in_bitVectorOperator1761_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000010000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_NUMERAL_TOK_in_bitVectorOperator1761	= { FOLLOW_NUMERAL_TOK_in_bitVectorOperator1761_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_104_in_bitVectorOperator1763  */
+static	ANTLR3_BITWORD FOLLOW_104_in_bitVectorOperator1763_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_104_in_bitVectorOperator1763	= { FOLLOW_104_in_bitVectorOperator1763_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ROTATE_LEFT_TOK_in_bitVectorOperator1775  */
+static	ANTLR3_BITWORD FOLLOW_ROTATE_LEFT_TOK_in_bitVectorOperator1775_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000008000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_ROTATE_LEFT_TOK_in_bitVectorOperator1775	= { FOLLOW_ROTATE_LEFT_TOK_in_bitVectorOperator1775_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_103_in_bitVectorOperator1777  */
+static	ANTLR3_BITWORD FOLLOW_103_in_bitVectorOperator1777_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000100) };
+static  ANTLR3_BITSET_LIST FOLLOW_103_in_bitVectorOperator1777	= { FOLLOW_103_in_bitVectorOperator1777_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NUMERAL_TOK_in_bitVectorOperator1783  */
+static	ANTLR3_BITWORD FOLLOW_NUMERAL_TOK_in_bitVectorOperator1783_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000010000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_NUMERAL_TOK_in_bitVectorOperator1783	= { FOLLOW_NUMERAL_TOK_in_bitVectorOperator1783_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_104_in_bitVectorOperator1785  */
+static	ANTLR3_BITWORD FOLLOW_104_in_bitVectorOperator1785_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_104_in_bitVectorOperator1785	= { FOLLOW_104_in_bitVectorOperator1785_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ROTATE_RIGHT_TOK_in_bitVectorOperator1797  */
+static	ANTLR3_BITWORD FOLLOW_ROTATE_RIGHT_TOK_in_bitVectorOperator1797_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000008000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_ROTATE_RIGHT_TOK_in_bitVectorOperator1797	= { FOLLOW_ROTATE_RIGHT_TOK_in_bitVectorOperator1797_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_103_in_bitVectorOperator1799  */
+static	ANTLR3_BITWORD FOLLOW_103_in_bitVectorOperator1799_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000100) };
+static  ANTLR3_BITSET_LIST FOLLOW_103_in_bitVectorOperator1799	= { FOLLOW_103_in_bitVectorOperator1799_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NUMERAL_TOK_in_bitVectorOperator1805  */
+static	ANTLR3_BITWORD FOLLOW_NUMERAL_TOK_in_bitVectorOperator1805_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000010000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_NUMERAL_TOK_in_bitVectorOperator1805	= { FOLLOW_NUMERAL_TOK_in_bitVectorOperator1805_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_104_in_bitVectorOperator1807  */
+static	ANTLR3_BITWORD FOLLOW_104_in_bitVectorOperator1807_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_104_in_bitVectorOperator1807	= { FOLLOW_104_in_bitVectorOperator1807_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_functionName_in_predicateName1830  */
+static	ANTLR3_BITWORD FOLLOW_functionName_in_predicateName1830_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_functionName_in_predicateName1830	= { FOLLOW_functionName_in_predicateName1830_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_functionName1848  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_functionName1848_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_functionName1848	= { FOLLOW_identifier_in_functionName1848_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_functionName_in_functionSymbol1870  */
+static	ANTLR3_BITWORD FOLLOW_functionName_in_functionSymbol1870_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_functionName_in_functionSymbol1870	= { FOLLOW_functionName_in_functionSymbol1870_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTR_IDENTIFIER_in_attribute1893  */
+static	ANTLR3_BITWORD FOLLOW_ATTR_IDENTIFIER_in_attribute1893_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_ATTR_IDENTIFIER_in_attribute1893	= { FOLLOW_ATTR_IDENTIFIER_in_attribute1893_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_functionDeclaration1918  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_functionDeclaration1918_bits[]	= { ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_functionDeclaration1918	= { FOLLOW_LPAREN_TOK_in_functionDeclaration1918_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_functionName_in_functionDeclaration1920  */
+static	ANTLR3_BITWORD FOLLOW_functionName_in_functionDeclaration1920_bits[]	= { ANTLR3_UINT64_LIT(0x1000000000002000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_functionName_in_functionDeclaration1920	= { FOLLOW_functionName_in_functionDeclaration1920_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_functionDeclaration1933  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_functionDeclaration1933_bits[]	= { ANTLR3_UINT64_LIT(0x1000000000002000), ANTLR3_UINT64_LIT(0x0000004000080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_functionDeclaration1933	= { FOLLOW_sortSymbol_in_functionDeclaration1933_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortList_in_functionDeclaration1948  */
+static	ANTLR3_BITWORD FOLLOW_sortList_in_functionDeclaration1948_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortList_in_functionDeclaration1948	= { FOLLOW_sortList_in_functionDeclaration1948_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_functionDeclaration1951  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_functionDeclaration1951_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_functionDeclaration1951	= { FOLLOW_RPAREN_TOK_in_functionDeclaration1951_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_predicateDeclaration1978  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_predicateDeclaration1978_bits[]	= { ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_predicateDeclaration1978	= { FOLLOW_LPAREN_TOK_in_predicateDeclaration1978_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_predicateName_in_predicateDeclaration1980  */
+static	ANTLR3_BITWORD FOLLOW_predicateName_in_predicateDeclaration1980_bits[]	= { ANTLR3_UINT64_LIT(0x1000000000002000), ANTLR3_UINT64_LIT(0x0000004000080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_predicateName_in_predicateDeclaration1980	= { FOLLOW_predicateName_in_predicateDeclaration1980_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortList_in_predicateDeclaration1983  */
+static	ANTLR3_BITWORD FOLLOW_sortList_in_predicateDeclaration1983_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortList_in_predicateDeclaration1983	= { FOLLOW_sortList_in_predicateDeclaration1983_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_predicateDeclaration1986  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_predicateDeclaration1986_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_predicateDeclaration1986	= { FOLLOW_RPAREN_TOK_in_predicateDeclaration1986_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortName_in_sortDeclaration2011  */
+static	ANTLR3_BITWORD FOLLOW_sortName_in_sortDeclaration2011_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortName_in_sortDeclaration2011	= { FOLLOW_sortName_in_sortDeclaration2011_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sortList2040  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sortList2040_bits[]	= { ANTLR3_UINT64_LIT(0x1000000000002002), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sortList2040	= { FOLLOW_sortSymbol_in_sortList2040_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_sortName2060  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_sortName2060_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_sortName2060	= { FOLLOW_identifier_in_sortName2060_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortName_in_sortSymbol2083  */
+static	ANTLR3_BITWORD FOLLOW_sortName_in_sortSymbol2083_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortName_in_sortSymbol2083	= { FOLLOW_sortName_in_sortSymbol2083_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BITVECTOR_TOK_in_sortSymbol2095  */
+static	ANTLR3_BITWORD FOLLOW_BITVECTOR_TOK_in_sortSymbol2095_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000008000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BITVECTOR_TOK_in_sortSymbol2095	= { FOLLOW_BITVECTOR_TOK_in_sortSymbol2095_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_103_in_sortSymbol2097  */
+static	ANTLR3_BITWORD FOLLOW_103_in_sortSymbol2097_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000100) };
+static  ANTLR3_BITSET_LIST FOLLOW_103_in_sortSymbol2097	= { FOLLOW_103_in_sortSymbol2097_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NUMERAL_TOK_in_sortSymbol2099  */
+static	ANTLR3_BITWORD FOLLOW_NUMERAL_TOK_in_sortSymbol2099_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000010000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_NUMERAL_TOK_in_sortSymbol2099	= { FOLLOW_NUMERAL_TOK_in_sortSymbol2099_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_104_in_sortSymbol2101  */
+static	ANTLR3_BITWORD FOLLOW_104_in_sortSymbol2101_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_104_in_sortSymbol2101	= { FOLLOW_104_in_sortSymbol2101_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_102_in_sortSymbol2113  */
+static	ANTLR3_BITWORD FOLLOW_102_in_sortSymbol2113_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000100) };
+static  ANTLR3_BITSET_LIST FOLLOW_102_in_sortSymbol2113	= { FOLLOW_102_in_sortSymbol2113_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NUMERAL_TOK_in_sortSymbol2117  */
+static	ANTLR3_BITWORD FOLLOW_NUMERAL_TOK_in_sortSymbol2117_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000001000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_NUMERAL_TOK_in_sortSymbol2117	= { FOLLOW_NUMERAL_TOK_in_sortSymbol2117_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_100_in_sortSymbol2119  */
+static	ANTLR3_BITWORD FOLLOW_100_in_sortSymbol2119_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000100) };
+static  ANTLR3_BITSET_LIST FOLLOW_100_in_sortSymbol2119	= { FOLLOW_100_in_sortSymbol2119_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NUMERAL_TOK_in_sortSymbol2123  */
+static	ANTLR3_BITWORD FOLLOW_NUMERAL_TOK_in_sortSymbol2123_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000010000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_NUMERAL_TOK_in_sortSymbol2123	= { FOLLOW_NUMERAL_TOK_in_sortSymbol2123_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_104_in_sortSymbol2125  */
+static	ANTLR3_BITWORD FOLLOW_104_in_sortSymbol2125_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_104_in_sortSymbol2125	= { FOLLOW_104_in_sortSymbol2125_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SAT_TOK_in_status2143  */
+static	ANTLR3_BITWORD FOLLOW_SAT_TOK_in_status2143_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SAT_TOK_in_status2143	= { FOLLOW_SAT_TOK_in_status2143_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_UNSAT_TOK_in_status2157  */
+static	ANTLR3_BITWORD FOLLOW_UNSAT_TOK_in_status2157_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_UNSAT_TOK_in_status2157	= { FOLLOW_UNSAT_TOK_in_status2157_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_UNKNOWN_TOK_in_status2169  */
+static	ANTLR3_BITWORD FOLLOW_UNKNOWN_TOK_in_status2169_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_UNKNOWN_TOK_in_status2169	= { FOLLOW_UNKNOWN_TOK_in_status2169_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PATTERN_ANNOTATION_BEGIN_in_annotation2194  */
+static	ANTLR3_BITWORD FOLLOW_PATTERN_ANNOTATION_BEGIN_in_annotation2194_bits[]	= { ANTLR3_UINT64_LIT(0x10C0000000001800), ANTLR3_UINT64_LIT(0x0000000020008112) };
+static  ANTLR3_BITSET_LIST FOLLOW_PATTERN_ANNOTATION_BEGIN_in_annotation2194	= { FOLLOW_PATTERN_ANNOTATION_BEGIN_in_annotation2194_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_annotatedFormulas_in_annotation2206  */
+static	ANTLR3_BITWORD FOLLOW_annotatedFormulas_in_annotation2206_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_annotatedFormulas_in_annotation2206	= { FOLLOW_annotatedFormulas_in_annotation2206_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_105_in_annotation2209  */
+static	ANTLR3_BITWORD FOLLOW_105_in_annotation2209_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_105_in_annotation2209	= { FOLLOW_105_in_annotation2209_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_attribute_in_annotation2215  */
+static	ANTLR3_BITWORD FOLLOW_attribute_in_annotation2215_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000100000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_attribute_in_annotation2215	= { FOLLOW_attribute_in_annotation2215_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_userValue_in_annotation2224  */
+static	ANTLR3_BITWORD FOLLOW_userValue_in_annotation2224_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_userValue_in_annotation2224	= { FOLLOW_userValue_in_annotation2224_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PATTERN_ANNOTATION_BEGIN_in_termAnnotation2268  */
+static	ANTLR3_BITWORD FOLLOW_PATTERN_ANNOTATION_BEGIN_in_termAnnotation2268_bits[]	= { ANTLR3_UINT64_LIT(0x10C0000000001800), ANTLR3_UINT64_LIT(0x0000000020008112) };
+static  ANTLR3_BITSET_LIST FOLLOW_PATTERN_ANNOTATION_BEGIN_in_termAnnotation2268	= { FOLLOW_PATTERN_ANNOTATION_BEGIN_in_termAnnotation2268_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_annotatedFormulas_in_termAnnotation2270  */
+static	ANTLR3_BITWORD FOLLOW_annotatedFormulas_in_termAnnotation2270_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_annotatedFormulas_in_termAnnotation2270	= { FOLLOW_annotatedFormulas_in_termAnnotation2270_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_105_in_termAnnotation2273  */
+static	ANTLR3_BITWORD FOLLOW_105_in_termAnnotation2273_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_105_in_termAnnotation2273	= { FOLLOW_105_in_termAnnotation2273_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_101_in_termAnnotation2285  */
+static	ANTLR3_BITWORD FOLLOW_101_in_termAnnotation2285_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_101_in_termAnnotation2285	= { FOLLOW_101_in_termAnnotation2285_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_attribute_in_termAnnotation2297  */
+static	ANTLR3_BITWORD FOLLOW_attribute_in_termAnnotation2297_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000100000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_attribute_in_termAnnotation2297	= { FOLLOW_attribute_in_termAnnotation2297_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_userValue_in_termAnnotation2300  */
+static	ANTLR3_BITWORD FOLLOW_userValue_in_termAnnotation2300_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_userValue_in_termAnnotation2300	= { FOLLOW_userValue_in_termAnnotation2300_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_identifier2324  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_identifier2324_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_identifier2324	= { FOLLOW_IDENTIFIER_in_identifier2324_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LET_IDENTIFIER_in_let_identifier2346  */
+static	ANTLR3_BITWORD FOLLOW_LET_IDENTIFIER_in_let_identifier2346_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_LET_IDENTIFIER_in_let_identifier2346	= { FOLLOW_LET_IDENTIFIER_in_let_identifier2346_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FLET_IDENTIFIER_in_flet_identifier2368  */
+static	ANTLR3_BITWORD FOLLOW_FLET_IDENTIFIER_in_flet_identifier2368_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FLET_IDENTIFIER_in_flet_identifier2368	= { FOLLOW_FLET_IDENTIFIER_in_flet_identifier2368_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_USER_VALUE_in_userValue3616  */
+static	ANTLR3_BITWORD FOLLOW_USER_VALUE_in_userValue3616_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_USER_VALUE_in_userValue3616	= { FOLLOW_USER_VALUE_in_userValue3616_bits, 1	};
+
+
+/* ==============================================
+ * Parsing rules
+ */
+/**
+ * $ANTLR start parseExpr
+ * ../../../../../../src/parser/smt1/Smt1.g:148:1: parseExpr returns [CVC4::parser::smt1::myExpr expr] : ( annotatedFormula[expr] | EOF );
+ */
+static CVC4::parser::smt1::myExpr
+parseExpr(pSmt1Parser ctx)
+{
+    CVC4::parser::smt1::myExpr expr;
+
+
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/smt1/Smt1.g:149:3: ( annotatedFormula[expr] | EOF )
+
+            ANTLR3_UINT32 alt1;
+
+            alt1=2;
+
+            switch ( LA(1) )
+            {
+            case BITVECTOR1_BV_CONST:
+            case BITVECTOR_BV_CONST:
+            case FALSE_TOK:
+            case FLET_IDENTIFIER:
+            case IDENTIFIER:
+            case LET_IDENTIFIER:
+            case LPAREN_TOK:
+            case NUMERAL_TOK:
+            case RATIONAL_TOK:
+            case TRUE_TOK:
+            	{
+            		alt1=1;
+            	}
+                break;
+            case EOF:
+            	{
+            		alt1=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 1;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleparseExprEx;
+
+            }
+
+            switch (alt1)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:149:5: annotatedFormula[expr]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_annotatedFormula_in_parseExpr105);
+        	        annotatedFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseExprEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:150:5: EOF
+        	    {
+        	         MATCHT(EOF, &FOLLOW_EOF_in_parseExpr112);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseExprEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleparseExprEx; /* Prevent compiler warnings */
+    ruleparseExprEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return expr;
+}
+/* $ANTLR end parseExpr */
+
+/**
+ * $ANTLR start parseCommand
+ * ../../../../../../src/parser/smt1/Smt1.g:157:1: parseCommand returns [CVC4::Command* cmd_return = NULL] : (b= benchmark[&cmd] | LPAREN_TOK c= IDENTIFIER );
+ */
+static CVC4::Command*
+parseCommand(pSmt1Parser ctx)
+{
+    CVC4::Command* cmd_return;
+
+
+
+      CVC4::PtrCloser<CVC4::Command> cmd;
+
+    pANTLR3_COMMON_TOKEN    c;
+
+    /* Initialize rule variables
+     */
+    cmd_return =  NULL;
+
+
+    c       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/smt1/Smt1.g:164:3: (b= benchmark[&cmd] | LPAREN_TOK c= IDENTIFIER )
+
+            ANTLR3_UINT32 alt2;
+
+            alt2=2;
+
+            switch ( LA(1) )
+            {
+            case LPAREN_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case BENCHMARK_TOK:
+            			{
+            				alt2=1;
+            			}
+            		    break;
+            		case IDENTIFIER:
+            			{
+            				alt2=2;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 2;
+            		    EXCEPTION->state        = 1;
+
+
+            		    goto ruleparseCommandEx;
+
+            		}
+
+            	}
+                break;
+            case EOF:
+            	{
+            		alt2=1;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 2;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleparseCommandEx;
+
+            }
+
+            switch (alt2)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:164:5: b= benchmark[&cmd]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_benchmark_in_parseCommand145);
+        	        benchmark(ctx, &cmd);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:165:5: LPAREN_TOK c= IDENTIFIER
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_parseCommand152);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        c = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_parseCommand156);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        {
+        	             std::string s = AntlrInput::tokenText(c);
+        	                  if(s == "set" || s == "get") {
+        	                    PARSER_STATE->parseError(std::string("In SMT-LIBv1 mode, expected keyword `benchmark', but it looks like you're writing SMT-LIBv2.  Use --lang smt for SMT-LIBv2."));
+        	                  } else {
+        	                    PARSER_STATE->parseError(std::string("expected keyword `benchmark', got `" + s + "'"));
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleparseCommandEx; /* Prevent compiler warnings */
+    ruleparseCommandEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+            else
+            {
+                {
+
+                      cmd_return = cmd.release();
+
+                }
+            }
+
+
+    return cmd_return;
+}
+/* $ANTLR end parseCommand */
+
+/**
+ * $ANTLR start benchmark
+ * ../../../../../../src/parser/smt1/Smt1.g:179:1: benchmark[CVC4::PtrCloser<CVC4::Command>* cmd] : ( LPAREN_TOK BENCHMARK_TOK IDENTIFIER benchAttributes[cmd] RPAREN_TOK | EOF );
+ */
+static void
+benchmark(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/smt1/Smt1.g:180:3: ( LPAREN_TOK BENCHMARK_TOK IDENTIFIER benchAttributes[cmd] RPAREN_TOK | EOF )
+
+            ANTLR3_UINT32 alt3;
+
+            alt3=2;
+
+            switch ( LA(1) )
+            {
+            case LPAREN_TOK:
+            	{
+            		alt3=1;
+            	}
+                break;
+            case EOF:
+            	{
+            		alt3=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 3;
+                EXCEPTION->state        = 0;
+
+
+                goto rulebenchmarkEx;
+
+            }
+
+            switch (alt3)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:180:5: LPAREN_TOK BENCHMARK_TOK IDENTIFIER benchAttributes[cmd] RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_benchmark179);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchmarkEx;
+        	        }
+
+
+        	         MATCHT(BENCHMARK_TOK, &FOLLOW_BENCHMARK_TOK_in_benchmark181);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchmarkEx;
+        	        }
+
+
+        	         MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_benchmark183);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchmarkEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_benchAttributes_in_benchmark185);
+        	        benchAttributes(ctx, cmd);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchmarkEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_benchmark188);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchmarkEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:181:5: EOF
+        	    {
+        	         MATCHT(EOF, &FOLLOW_EOF_in_benchmark194);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchmarkEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulebenchmarkEx; /* Prevent compiler warnings */
+    rulebenchmarkEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end benchmark */
+
+/**
+ * $ANTLR start benchAttributes
+ * ../../../../../../src/parser/smt1/Smt1.g:189:1: benchAttributes[CVC4::PtrCloser<CVC4::Command>* cmd] : ( benchAttribute[&attribute] )+ ;
+ */
+static void
+benchAttributes(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
+{
+    /* Initialize rule variables
+     */
+
+
+      CVC4::PtrCloser<CVC4::CommandSequence> cmd_seq(new CommandSequence());
+      CVC4::PtrCloser<CVC4::Command> attribute;
+
+    {
+        // ../../../../../../src/parser/smt1/Smt1.g:197:3: ( ( benchAttribute[&attribute] )+ )
+        // ../../../../../../src/parser/smt1/Smt1.g:197:5: ( benchAttribute[&attribute] )+
+        {
+            // ../../../../../../src/parser/smt1/Smt1.g:197:5: ( benchAttribute[&attribute] )+
+            {
+                int cnt4=0;
+
+                for (;;)
+                {
+                    int alt4=2;
+            	switch ( LA(1) )
+            	{
+            	case ASSUMPTION_TOK:
+            	case ATTR_IDENTIFIER:
+            	case EXTRAFUNS_TOK:
+            	case EXTRAPREDS_TOK:
+            	case EXTRASORTS_TOK:
+            	case FORMULA_TOK:
+            	case LOGIC_TOK:
+            	case NOTES_TOK:
+            	case PATTERN_ANNOTATION_BEGIN:
+            	case STATUS_TOK:
+            		{
+            			alt4=1;
+            		}
+            	    break;
+
+            	}
+
+            	switch (alt4)
+            	{
+            	    case 1:
+            	        // ../../../../../../src/parser/smt1/Smt1.g:197:6: benchAttribute[&attribute]
+            	        {
+            	            FOLLOWPUSH(FOLLOW_benchAttribute_in_benchAttributes222);
+            	            benchAttribute(ctx, &attribute);
+
+            	            FOLLOWPOP();
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto rulebenchAttributesEx;
+            	            }
+
+
+            	            {
+            	                 if (attribute) cmd_seq->addCommand(attribute.release()); 
+            	            }
+
+
+            	        }
+            	        break;
+
+            	    default:
+
+            		if ( cnt4 >= 1 )
+            		{
+            		    goto loop4;
+            		}
+            		/* mismatchedSetEx()
+            		 */
+            		CONSTRUCTEX();
+            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+            		goto rulebenchAttributesEx;
+            	}
+            	cnt4++;
+                }
+                loop4: ;	/* Jump to here if this rule does not match */
+            }
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulebenchAttributesEx; /* Prevent compiler warnings */
+    rulebenchAttributesEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+            else
+            {
+                {
+
+                      cmd->reset(cmd_seq.release());
+
+                }
+            }
+
+
+    return ;
+}
+/* $ANTLR end benchAttributes */
+
+/**
+ * $ANTLR start benchAttribute
+ * ../../../../../../src/parser/smt1/Smt1.g:207:1: benchAttribute[CVC4::PtrCloser<CVC4::Command>* smt_command] : ( LOGIC_TOK identifier[name,CHECK_NONE,SYM_VARIABLE] | ASSUMPTION_TOK annotatedFormula[expr] | FORMULA_TOK annotatedFormula[expr] | STATUS_TOK status[b_status] | EXTRAFUNS_TOK LPAREN_TOK ( functionDeclaration[&declaration_command] )+ RPAREN_TOK | EXTRAPREDS_TOK LPAREN_TOK ( predicateDeclaration[&declaration_command] )+ RPAREN_TOK | EXTRASORTS_TOK LPAREN_TOK ( sortDeclaration[& [...]
+ */
+static void
+benchAttribute(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
+{
+
+      std::string name;
+      BenchmarkStatus b_status;
+      Expr expr;
+      CVC4::PtrCloser<CVC4::CommandSequence> command_seq;
+      CVC4::PtrCloser<CVC4::Command> declaration_command;
+
+    pANTLR3_COMMON_TOKEN    STRING_LITERAL1;
+
+    /* Initialize rule variables
+     */
+
+    STRING_LITERAL1       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/smt1/Smt1.g:215:3: ( LOGIC_TOK identifier[name,CHECK_NONE,SYM_VARIABLE] | ASSUMPTION_TOK annotatedFormula[expr] | FORMULA_TOK annotatedFormula[expr] | STATUS_TOK status[b_status] | EXTRAFUNS_TOK LPAREN_TOK ( functionDeclaration[&declaration_command] )+ RPAREN_TOK | EXTRAPREDS_TOK LPAREN_TOK ( predicateDeclaration[&declaration_command] )+ RPAREN_TOK | EXTRASORTS_TOK LPAREN_TOK ( sortDeclaration[&declaration_command] )+ RPAREN_TOK | NOTES_TOK ST [...]
+
+            ANTLR3_UINT32 alt8;
+
+            alt8=9;
+
+            switch ( LA(1) )
+            {
+            case LOGIC_TOK:
+            	{
+            		alt8=1;
+            	}
+                break;
+            case ASSUMPTION_TOK:
+            	{
+            		alt8=2;
+            	}
+                break;
+            case FORMULA_TOK:
+            	{
+            		alt8=3;
+            	}
+                break;
+            case STATUS_TOK:
+            	{
+            		alt8=4;
+            	}
+                break;
+            case EXTRAFUNS_TOK:
+            	{
+            		alt8=5;
+            	}
+                break;
+            case EXTRAPREDS_TOK:
+            	{
+            		alt8=6;
+            	}
+                break;
+            case EXTRASORTS_TOK:
+            	{
+            		alt8=7;
+            	}
+                break;
+            case NOTES_TOK:
+            	{
+            		alt8=8;
+            	}
+                break;
+            case ATTR_IDENTIFIER:
+            case PATTERN_ANNOTATION_BEGIN:
+            	{
+            		alt8=9;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 8;
+                EXCEPTION->state        = 0;
+
+
+                goto rulebenchAttributeEx;
+
+            }
+
+            switch (alt8)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:215:5: LOGIC_TOK identifier[name,CHECK_NONE,SYM_VARIABLE]
+        	    {
+        	         MATCHT(LOGIC_TOK, &FOLLOW_LOGIC_TOK_in_benchAttribute259);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchAttributeEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_identifier_in_benchAttribute261);
+        	        identifier(ctx, name, CHECK_NONE, SYM_VARIABLE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchAttributeEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->preemptCommand(new SetBenchmarkLogicCommand(name));
+        	                  PARSER_STATE->setLogic(name);
+        	                  smt_command->reset(new EmptyCommand());
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:220:5: ASSUMPTION_TOK annotatedFormula[expr]
+        	    {
+        	         MATCHT(ASSUMPTION_TOK, &FOLLOW_ASSUMPTION_TOK_in_benchAttribute274);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchAttributeEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_annotatedFormula_in_benchAttribute276);
+        	        annotatedFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchAttributeEx;
+        	        }
+
+
+        	        {
+        	             smt_command->reset(new AssertCommand(expr)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:222:5: FORMULA_TOK annotatedFormula[expr]
+        	    {
+        	         MATCHT(FORMULA_TOK, &FOLLOW_FORMULA_TOK_in_benchAttribute289);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchAttributeEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_annotatedFormula_in_benchAttribute291);
+        	        annotatedFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchAttributeEx;
+        	        }
+
+
+        	        {
+        	             smt_command->reset(new CheckSatCommand(expr)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:224:5: STATUS_TOK status[b_status]
+        	    {
+        	         MATCHT(STATUS_TOK, &FOLLOW_STATUS_TOK_in_benchAttribute304);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchAttributeEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_status_in_benchAttribute306);
+        	        status(ctx, b_status);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchAttributeEx;
+        	        }
+
+
+        	        {
+        	             smt_command->reset(new SetBenchmarkStatusCommand(b_status)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:226:5: EXTRAFUNS_TOK LPAREN_TOK ( functionDeclaration[&declaration_command] )+ RPAREN_TOK
+        	    {
+        	         MATCHT(EXTRAFUNS_TOK, &FOLLOW_EXTRAFUNS_TOK_in_benchAttribute319);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchAttributeEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_benchAttribute321);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchAttributeEx;
+        	        }
+
+
+        	        {
+        	             command_seq.reset(new CommandSequence()); 
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt1/Smt1.g:228:5: ( functionDeclaration[&declaration_command] )+
+        	        {
+        	            int cnt5=0;
+
+        	            for (;;)
+        	            {
+        	                int alt5=2;
+        	        	switch ( LA(1) )
+        	        	{
+        	        	case LPAREN_TOK:
+        	        		{
+        	        			alt5=1;
+        	        		}
+        	        	    break;
+
+        	        	}
+
+        	        	switch (alt5)
+        	        	{
+        	        	    case 1:
+        	        	        // ../../../../../../src/parser/smt1/Smt1.g:228:7: functionDeclaration[&declaration_command]
+        	        	        {
+        	        	            FOLLOWPUSH(FOLLOW_functionDeclaration_in_benchAttribute335);
+        	        	            functionDeclaration(ctx, &declaration_command);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto rulebenchAttributeEx;
+        	        	            }
+
+
+        	        	            {
+        	        	                 command_seq->addCommand(declaration_command.release()); 
+        	        	            }
+
+
+        	        	        }
+        	        	        break;
+
+        	        	    default:
+
+        	        		if ( cnt5 >= 1 )
+        	        		{
+        	        		    goto loop5;
+        	        		}
+        	        		/* mismatchedSetEx()
+        	        		 */
+        	        		CONSTRUCTEX();
+        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        		goto rulebenchAttributeEx;
+        	        	}
+        	        	cnt5++;
+        	            }
+        	            loop5: ;	/* Jump to here if this rule does not match */
+        	        }
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_benchAttribute353);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchAttributeEx;
+        	        }
+
+
+        	        {
+        	             smt_command->reset(command_seq.release()); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:232:5: EXTRAPREDS_TOK LPAREN_TOK ( predicateDeclaration[&declaration_command] )+ RPAREN_TOK
+        	    {
+        	         MATCHT(EXTRAPREDS_TOK, &FOLLOW_EXTRAPREDS_TOK_in_benchAttribute367);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchAttributeEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_benchAttribute369);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchAttributeEx;
+        	        }
+
+
+        	        {
+        	             command_seq.reset(new CommandSequence()); 
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt1/Smt1.g:234:5: ( predicateDeclaration[&declaration_command] )+
+        	        {
+        	            int cnt6=0;
+
+        	            for (;;)
+        	            {
+        	                int alt6=2;
+        	        	switch ( LA(1) )
+        	        	{
+        	        	case LPAREN_TOK:
+        	        		{
+        	        			alt6=1;
+        	        		}
+        	        	    break;
+
+        	        	}
+
+        	        	switch (alt6)
+        	        	{
+        	        	    case 1:
+        	        	        // ../../../../../../src/parser/smt1/Smt1.g:234:7: predicateDeclaration[&declaration_command]
+        	        	        {
+        	        	            FOLLOWPUSH(FOLLOW_predicateDeclaration_in_benchAttribute383);
+        	        	            predicateDeclaration(ctx, &declaration_command);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto rulebenchAttributeEx;
+        	        	            }
+
+
+        	        	            {
+        	        	                 command_seq->addCommand(declaration_command.release()); 
+        	        	            }
+
+
+        	        	        }
+        	        	        break;
+
+        	        	    default:
+
+        	        		if ( cnt6 >= 1 )
+        	        		{
+        	        		    goto loop6;
+        	        		}
+        	        		/* mismatchedSetEx()
+        	        		 */
+        	        		CONSTRUCTEX();
+        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        		goto rulebenchAttributeEx;
+        	        	}
+        	        	cnt6++;
+        	            }
+        	            loop6: ;	/* Jump to here if this rule does not match */
+        	        }
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_benchAttribute401);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchAttributeEx;
+        	        }
+
+
+        	        {
+        	             smt_command->reset(command_seq.release()); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:238:5: EXTRASORTS_TOK LPAREN_TOK ( sortDeclaration[&declaration_command] )+ RPAREN_TOK
+        	    {
+        	         MATCHT(EXTRASORTS_TOK, &FOLLOW_EXTRASORTS_TOK_in_benchAttribute415);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchAttributeEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_benchAttribute417);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchAttributeEx;
+        	        }
+
+
+        	        {
+        	             command_seq.reset(new CommandSequence()); 
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt1/Smt1.g:240:5: ( sortDeclaration[&declaration_command] )+
+        	        {
+        	            int cnt7=0;
+
+        	            for (;;)
+        	            {
+        	                int alt7=2;
+        	        	switch ( LA(1) )
+        	        	{
+        	        	case IDENTIFIER:
+        	        		{
+        	        			alt7=1;
+        	        		}
+        	        	    break;
+
+        	        	}
+
+        	        	switch (alt7)
+        	        	{
+        	        	    case 1:
+        	        	        // ../../../../../../src/parser/smt1/Smt1.g:240:7: sortDeclaration[&declaration_command]
+        	        	        {
+        	        	            FOLLOWPUSH(FOLLOW_sortDeclaration_in_benchAttribute433);
+        	        	            sortDeclaration(ctx, &declaration_command);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto rulebenchAttributeEx;
+        	        	            }
+
+
+        	        	            {
+        	        	                 command_seq->addCommand(declaration_command.release()); 
+        	        	            }
+
+
+        	        	        }
+        	        	        break;
+
+        	        	    default:
+
+        	        		if ( cnt7 >= 1 )
+        	        		{
+        	        		    goto loop7;
+        	        		}
+        	        		/* mismatchedSetEx()
+        	        		 */
+        	        		CONSTRUCTEX();
+        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        		goto rulebenchAttributeEx;
+        	        	}
+        	        	cnt7++;
+        	            }
+        	            loop7: ;	/* Jump to here if this rule does not match */
+        	        }
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_benchAttribute451);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchAttributeEx;
+        	        }
+
+
+        	        {
+        	             smt_command->reset(command_seq.release()); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 8:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:244:5: NOTES_TOK STRING_LITERAL
+        	    {
+        	         MATCHT(NOTES_TOK, &FOLLOW_NOTES_TOK_in_benchAttribute465);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchAttributeEx;
+        	        }
+
+
+        	        STRING_LITERAL1 = (pANTLR3_COMMON_TOKEN) MATCHT(STRING_LITERAL, &FOLLOW_STRING_LITERAL_in_benchAttribute467);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchAttributeEx;
+        	        }
+
+
+        	        {
+        	             smt_command->reset(
+        	                      new CommentCommand(AntlrInput::tokenText(STRING_LITERAL1))); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 9:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:247:5: annotation[smt_command]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_annotation_in_benchAttribute479);
+        	        annotation(ctx, smt_command);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebenchAttributeEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulebenchAttributeEx; /* Prevent compiler warnings */
+    rulebenchAttributeEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end benchAttribute */
+
+/**
+ * $ANTLR start annotatedFormula
+ * ../../../../../../src/parser/smt1/Smt1.g:254:1: annotatedFormula[CVC4::Expr& expr] : ( LPAREN_TOK builtinOp[kind] annotatedFormulas[args,expr] ( termAnnotation[expr] )* RPAREN_TOK | LPAREN_TOK ( FORALL_TOK | EXISTS_TOK ) ( LPAREN_TOK let_identifier[name,CHECK_NONE] t= sortSymbol RPAREN_TOK )+ annotatedFormula[expr] ( termAnnotation[expr] )* RPAREN_TOK | LPAREN_TOK parameterizedOperator[op] annotatedFormulas[args,expr] ( termAnnotation[expr] )* RPAREN_TOK | LPAREN_TOK ITE_TOK annotated [...]
+ */
+static void
+annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
+{
+    pANTLR3_COMMON_TOKEN    n;
+    pANTLR3_COMMON_TOKEN    size;
+    pANTLR3_COMMON_TOKEN    NUMERAL_TOK2;
+    pANTLR3_COMMON_TOKEN    RATIONAL_TOK3;
+    CVC4::parser::smt1::myType t;
+    #undef	RETURN_TYPE_t
+    #define	RETURN_TYPE_t CVC4::parser::smt1::myType
+
+    /* Initialize rule variables
+     */
+
+
+      Debug("parser") << "annotated formula: " << AntlrInput::tokenText(LT(1)) << std::endl;
+      Kind kind;
+      std::string name;
+      std::vector<Expr> args; /* = getExprVector(); */
+      std::vector<Expr> args2;
+      Expr op; /* Operator expression FIXME: move away kill it */
+
+    n       = NULL;
+    size       = NULL;
+    NUMERAL_TOK2       = NULL;
+    RATIONAL_TOK3       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/smt1/Smt1.g:263:3: ( LPAREN_TOK builtinOp[kind] annotatedFormulas[args,expr] ( termAnnotation[expr] )* RPAREN_TOK | LPAREN_TOK ( FORALL_TOK | EXISTS_TOK ) ( LPAREN_TOK let_identifier[name,CHECK_NONE] t= sortSymbol RPAREN_TOK )+ annotatedFormula[expr] ( termAnnotation[expr] )* RPAREN_TOK | LPAREN_TOK parameterizedOperator[op] annotatedFormulas[args,expr] ( termAnnotation[expr] )* RPAREN_TOK | LPAREN_TOK ITE_TOK annotatedFormula[expr] annotatedF [...]
+
+            ANTLR3_UINT32 alt18;
+
+            alt18=12;
+
+            switch ( LA(1) )
+            {
+            case LPAREN_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case ITE_TOK:
+            			{
+            				alt18=4;
+            			}
+            		    break;
+            		case AND_TOK:
+            		case BVADD_TOK:
+            		case BVAND_TOK:
+            		case BVASHR_TOK:
+            		case BVCOMP_TOK:
+            		case BVLSHR_TOK:
+            		case BVMUL_TOK:
+            		case BVNAND_TOK:
+            		case BVNEG_TOK:
+            		case BVNOR_TOK:
+            		case BVNOT_TOK:
+            		case BVOR_TOK:
+            		case BVSDIV_TOK:
+            		case BVSGE_TOK:
+            		case BVSGT_TOK:
+            		case BVSHL_TOK:
+            		case BVSLE_TOK:
+            		case BVSLT_TOK:
+            		case BVSMOD_TOK:
+            		case BVSREM_TOK:
+            		case BVSUB_TOK:
+            		case BVUDIV_TOK:
+            		case BVUGE_TOK:
+            		case BVUGT_TOK:
+            		case BVULE_TOK:
+            		case BVULT_TOK:
+            		case BVUREM_TOK:
+            		case BVXNOR_TOK:
+            		case BVXOR_TOK:
+            		case CONCAT_TOK:
+            		case DISTINCT_TOK:
+            		case DIV_TOK:
+            		case EQUAL_TOK:
+            		case GREATER_THAN_TOK:
+            		case IFF_TOK:
+            		case IMPLIES_TOK:
+            		case LESS_THAN_TOK:
+            		case MINUS_TOK:
+            		case NOT_TOK:
+            		case OR_TOK:
+            		case PLUS_TOK:
+            		case SELECT_TOK:
+            		case STAR_TOK:
+            		case STORE_TOK:
+            		case TILDE_TOK:
+            		case XOR_TOK:
+            			{
+            				alt18=1;
+            			}
+            		    break;
+            		case EXISTS_TOK:
+            		case FORALL_TOK:
+            			{
+            				alt18=2;
+            			}
+            		    break;
+            		case EXTRACT_TOK:
+            		case IDENTIFIER:
+            		case REPEAT_TOK:
+            		case ROTATE_LEFT_TOK:
+            		case ROTATE_RIGHT_TOK:
+            		case SIGN_EXTEND_TOK:
+            		case ZERO_EXTEND_TOK:
+            			{
+            				alt18=3;
+            			}
+            		    break;
+            		case FLET_TOK:
+            		case LET_TOK:
+            			{
+            				alt18=5;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 18;
+            		    EXCEPTION->state        = 1;
+
+
+            		    goto ruleannotatedFormulaEx;
+
+            		}
+
+            	}
+                break;
+            case TRUE_TOK:
+            	{
+            		alt18=6;
+            	}
+                break;
+            case FALSE_TOK:
+            	{
+            		alt18=7;
+            	}
+                break;
+            case NUMERAL_TOK:
+            	{
+            		alt18=8;
+            	}
+                break;
+            case RATIONAL_TOK:
+            	{
+            		alt18=9;
+            	}
+                break;
+            case BITVECTOR_BV_CONST:
+            	{
+            		alt18=10;
+            	}
+                break;
+            case BITVECTOR1_BV_CONST:
+            	{
+            		alt18=11;
+            	}
+                break;
+            case FLET_IDENTIFIER:
+            case IDENTIFIER:
+            case LET_IDENTIFIER:
+            	{
+            		alt18=12;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 18;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleannotatedFormulaEx;
+
+            }
+
+            switch (alt18)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:264:5: LPAREN_TOK builtinOp[kind] annotatedFormulas[args,expr] ( termAnnotation[expr] )* RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_annotatedFormula507);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_builtinOp_in_annotatedFormula509);
+        	        builtinOp(ctx, kind);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_annotatedFormulas_in_annotatedFormula512);
+        	        annotatedFormulas(ctx, args, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        {
+        	             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 be the only argument. */
+        	                    assert( expr == args[0] );
+        	                  } else if( CVC4::kind::isAssociative(kind) &&
+        	                             args.size() > EXPR_MANAGER->maxArity(kind) ) {
+        	                	/* Special treatment for associative operators with lots of children */
+        	                    expr = EXPR_MANAGER->mkAssociative(kind,args);
+        	                  } else if(!PARSER_STATE->strictModeEnabled() &&
+        	                            kind == CVC4::kind::MINUS && args.size() == 1) {
+        	                    /* Special fix-up for unary minus improperly used in some benchmarks */
+        	                    expr = MK_EXPR(CVC4::kind::UMINUS, args[0]);
+        	                  } else {
+        	                    PARSER_STATE->checkArity(kind, args.size());
+        	                    expr = MK_EXPR(kind, args);
+        	                  }
+        	                
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt1/Smt1.g:282:5: ( termAnnotation[expr] )*
+
+        	        for (;;)
+        	        {
+        	            int alt9=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case ATTR_IDENTIFIER:
+        	            case PATTERN_ANNOTATION_BEGIN:
+        	            case 101:
+        	            	{
+        	            		alt9=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt9)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt1/Smt1.g:282:5: termAnnotation[expr]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_termAnnotation_in_annotatedFormula525);
+        	        	        termAnnotation(ctx, expr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleannotatedFormulaEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop9;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop9: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_annotatedFormula529);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:285:5: LPAREN_TOK ( FORALL_TOK | EXISTS_TOK ) ( LPAREN_TOK let_identifier[name,CHECK_NONE] t= sortSymbol RPAREN_TOK )+ annotatedFormula[expr] ( termAnnotation[expr] )* RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_annotatedFormula542);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt1/Smt1.g:286:5: ( FORALL_TOK | EXISTS_TOK )
+        	        {
+        	            int alt10=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case FORALL_TOK:
+        	            	{
+        	            		alt10=1;
+        	            	}
+        	                break;
+        	            case EXISTS_TOK:
+        	            	{
+        	            		alt10=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 10;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto ruleannotatedFormulaEx;
+
+        	            }
+
+        	            switch (alt10)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt1/Smt1.g:286:7: FORALL_TOK
+        	        	    {
+        	        	         MATCHT(FORALL_TOK, &FOLLOW_FORALL_TOK_in_annotatedFormula550);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleannotatedFormulaEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             kind = kind::FORALL; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/smt1/Smt1.g:286:45: EXISTS_TOK
+        	        	    {
+        	        	         MATCHT(EXISTS_TOK, &FOLLOW_EXISTS_TOK_in_annotatedFormula556);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleannotatedFormulaEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             kind = kind::EXISTS; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        {
+        	             PARSER_STATE->pushScope(); 
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt1/Smt1.g:288:5: ( LPAREN_TOK let_identifier[name,CHECK_NONE] t= sortSymbol RPAREN_TOK )+
+        	        {
+        	            int cnt11=0;
+
+        	            for (;;)
+        	            {
+        	                int alt11=2;
+        	        	switch ( LA(1) )
+        	        	{
+        	        	case LPAREN_TOK:
+        	        		{
+        	        			switch ( LA(2) )
+        	        			{
+        	        			case LET_IDENTIFIER:
+        	        				{
+        	        					alt11=1;
+        	        				}
+        	        			    break;
+
+        	        			}
+
+        	        		}
+        	        	    break;
+
+        	        	}
+
+        	        	switch (alt11)
+        	        	{
+        	        	    case 1:
+        	        	        // ../../../../../../src/parser/smt1/Smt1.g:288:7: LPAREN_TOK let_identifier[name,CHECK_NONE] t= sortSymbol RPAREN_TOK
+        	        	        {
+        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_annotatedFormula574);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruleannotatedFormulaEx;
+        	        	            }
+
+
+        	        	            FOLLOWPUSH(FOLLOW_let_identifier_in_annotatedFormula576);
+        	        	            let_identifier(ctx, name, CHECK_NONE);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruleannotatedFormulaEx;
+        	        	            }
+
+
+        	        	            FOLLOWPUSH(FOLLOW_sortSymbol_in_annotatedFormula581);
+        	        	            t=sortSymbol(ctx);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruleannotatedFormulaEx;
+        	        	            }
+
+
+        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_annotatedFormula583);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruleannotatedFormulaEx;
+        	        	            }
+
+
+        	        	            {
+        	        	                 args.push_back(PARSER_STATE->mkBoundVar(name, t)); 
+        	        	            }
+
+
+        	        	        }
+        	        	        break;
+
+        	        	    default:
+
+        	        		if ( cnt11 >= 1 )
+        	        		{
+        	        		    goto loop11;
+        	        		}
+        	        		/* mismatchedSetEx()
+        	        		 */
+        	        		CONSTRUCTEX();
+        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        		goto ruleannotatedFormulaEx;
+        	        	}
+        	        	cnt11++;
+        	            }
+        	            loop11: ;	/* Jump to here if this rule does not match */
+        	        }
+
+        	        FOLLOWPUSH(FOLLOW_annotatedFormula_in_annotatedFormula604);
+        	        annotatedFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        {
+        	             args2.push_back( MK_EXPR( kind::BOUND_VAR_LIST, args ) );
+        	                  args2.push_back(expr);
+        	                  expr = MK_EXPR(kind, args2);
+        	                
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt1/Smt1.g:296:5: ( termAnnotation[expr] )*
+
+        	        for (;;)
+        	        {
+        	            int alt12=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case ATTR_IDENTIFIER:
+        	            case PATTERN_ANNOTATION_BEGIN:
+        	            case 101:
+        	            	{
+        	            		alt12=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt12)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt1/Smt1.g:296:5: termAnnotation[expr]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_termAnnotation_in_annotatedFormula617);
+        	        	        termAnnotation(ctx, expr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleannotatedFormulaEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop12;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop12: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_annotatedFormula621);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->popScope(); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:304:5: LPAREN_TOK parameterizedOperator[op] annotatedFormulas[args,expr] ( termAnnotation[expr] )* RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_annotatedFormula656);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_parameterizedOperator_in_annotatedFormula662);
+        	        parameterizedOperator(ctx, op);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_annotatedFormulas_in_annotatedFormula669);
+        	        annotatedFormulas(ctx, args, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_EXPR(op,args); 
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt1/Smt1.g:309:5: ( termAnnotation[expr] )*
+
+        	        for (;;)
+        	        {
+        	            int alt13=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case ATTR_IDENTIFIER:
+        	            case PATTERN_ANNOTATION_BEGIN:
+        	            case 101:
+        	            	{
+        	            		alt13=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt13)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt1/Smt1.g:309:5: termAnnotation[expr]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_termAnnotation_in_annotatedFormula687);
+        	        	        termAnnotation(ctx, expr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleannotatedFormulaEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop13;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop13: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_annotatedFormula691);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:312:5: LPAREN_TOK ITE_TOK annotatedFormula[expr] annotatedFormula[expr] annotatedFormula[expr] ( termAnnotation[expr] )* RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_annotatedFormula704);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	         MATCHT(ITE_TOK, &FOLLOW_ITE_TOK_in_annotatedFormula706);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_annotatedFormula_in_annotatedFormula712);
+        	        annotatedFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        {
+        	             args.push_back(expr); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_annotatedFormula_in_annotatedFormula725);
+        	        annotatedFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        {
+        	             args.push_back(expr); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_annotatedFormula_in_annotatedFormula738);
+        	        annotatedFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        {
+        	             args.push_back(expr);
+        	                  expr = MK_EXPR(CVC4::kind::ITE, args); 
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt1/Smt1.g:320:5: ( termAnnotation[expr] )*
+
+        	        for (;;)
+        	        {
+        	            int alt14=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case ATTR_IDENTIFIER:
+        	            case PATTERN_ANNOTATION_BEGIN:
+        	            case 101:
+        	            	{
+        	            		alt14=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt14)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt1/Smt1.g:320:5: termAnnotation[expr]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_termAnnotation_in_annotatedFormula751);
+        	        	        termAnnotation(ctx, expr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleannotatedFormulaEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop14;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop14: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_annotatedFormula755);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:323:5: LPAREN_TOK ( LET_TOK LPAREN_TOK let_identifier[name,CHECK_UNDECLARED] | FLET_TOK LPAREN_TOK flet_identifier[name,CHECK_UNDECLARED] ) annotatedFormula[expr] RPAREN_TOK annotatedFormula[expr] ( termAnnotation[expr] )* RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_annotatedFormula768);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt1/Smt1.g:324:5: ( LET_TOK LPAREN_TOK let_identifier[name,CHECK_UNDECLARED] | FLET_TOK LPAREN_TOK flet_identifier[name,CHECK_UNDECLARED] )
+        	        {
+        	            int alt15=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case LET_TOK:
+        	            	{
+        	            		alt15=1;
+        	            	}
+        	                break;
+        	            case FLET_TOK:
+        	            	{
+        	            		alt15=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 15;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto ruleannotatedFormulaEx;
+
+        	            }
+
+        	            switch (alt15)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt1/Smt1.g:324:7: LET_TOK LPAREN_TOK let_identifier[name,CHECK_UNDECLARED]
+        	        	    {
+        	        	         MATCHT(LET_TOK, &FOLLOW_LET_TOK_in_annotatedFormula776);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleannotatedFormulaEx;
+        	        	        }
+
+
+        	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_annotatedFormula778);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleannotatedFormulaEx;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_let_identifier_in_annotatedFormula780);
+        	        	        let_identifier(ctx, name, CHECK_UNDECLARED);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleannotatedFormulaEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/smt1/Smt1.g:325:9: FLET_TOK LPAREN_TOK flet_identifier[name,CHECK_UNDECLARED]
+        	        	    {
+        	        	         MATCHT(FLET_TOK, &FOLLOW_FLET_TOK_in_annotatedFormula791);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleannotatedFormulaEx;
+        	        	        }
+
+
+        	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_annotatedFormula793);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleannotatedFormulaEx;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_flet_identifier_in_annotatedFormula795);
+        	        	        flet_identifier(ctx, name, CHECK_UNDECLARED);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleannotatedFormulaEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        FOLLOWPUSH(FOLLOW_annotatedFormula_in_annotatedFormula804);
+        	        annotatedFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_annotatedFormula807);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->pushScope();
+        	                  PARSER_STATE->defineVar(name,expr); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_annotatedFormula_in_annotatedFormula819);
+        	        annotatedFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt1/Smt1.g:330:5: ( termAnnotation[expr] )*
+
+        	        for (;;)
+        	        {
+        	            int alt16=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case ATTR_IDENTIFIER:
+        	            case PATTERN_ANNOTATION_BEGIN:
+        	            case 101:
+        	            	{
+        	            		alt16=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt16)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt1/Smt1.g:330:5: termAnnotation[expr]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_termAnnotation_in_annotatedFormula826);
+        	        	        termAnnotation(ctx, expr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleannotatedFormulaEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop16;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop16: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_annotatedFormula830);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->popScope(); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:334:5: TRUE_TOK
+        	    {
+        	         MATCHT(TRUE_TOK, &FOLLOW_TRUE_TOK_in_annotatedFormula849);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_CONST(bool(true)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:335:5: FALSE_TOK
+        	    {
+        	         MATCHT(FALSE_TOK, &FOLLOW_FALSE_TOK_in_annotatedFormula866);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_CONST(bool(false)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 8:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:336:5: NUMERAL_TOK
+        	    {
+        	        NUMERAL_TOK2 = (pANTLR3_COMMON_TOKEN) MATCHT(NUMERAL_TOK, &FOLLOW_NUMERAL_TOK_in_annotatedFormula882);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_CONST( AntlrInput::tokenToInteger(NUMERAL_TOK2) ); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 9:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:338:5: RATIONAL_TOK
+        	    {
+        	        RATIONAL_TOK3 = (pANTLR3_COMMON_TOKEN) MATCHT(RATIONAL_TOK, &FOLLOW_RATIONAL_TOK_in_annotatedFormula894);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        {
+        	             // FIXME: This doesn't work because an SMT rational is not a
+        	                  // valid GMP rational string
+        	                  expr = MK_CONST( AntlrInput::tokenToRational(RATIONAL_TOK3) ); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 10:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:342:5: n= BITVECTOR_BV_CONST '[' size= NUMERAL_TOK ']'
+        	    {
+        	        n = (pANTLR3_COMMON_TOKEN) MATCHT(BITVECTOR_BV_CONST, &FOLLOW_BITVECTOR_BV_CONST_in_annotatedFormula910);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	         MATCHT(103, &FOLLOW_103_in_annotatedFormula912);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        size = (pANTLR3_COMMON_TOKEN) MATCHT(NUMERAL_TOK, &FOLLOW_NUMERAL_TOK_in_annotatedFormula918);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	         MATCHT(104, &FOLLOW_104_in_annotatedFormula920);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_CONST( AntlrInput::tokenToBitvector(n, size) ); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 11:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:344:5: n= BITVECTOR1_BV_CONST
+        	    {
+        	        n = (pANTLR3_COMMON_TOKEN) MATCHT(BITVECTOR1_BV_CONST, &FOLLOW_BITVECTOR1_BV_CONST_in_annotatedFormula936);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotatedFormulaEx;
+        	        }
+
+
+        	        {
+        	             unsigned int bit = AntlrInput::tokenText(n)[3] - '0';
+        	                  expr = MK_CONST( BitVector(1, bit) );
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 12:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:352:5: ( identifier[name,CHECK_DECLARED,SYM_VARIABLE] | let_identifier[name,CHECK_DECLARED] | flet_identifier[name,CHECK_DECLARED] )
+        	    {
+        	        // ../../../../../../src/parser/smt1/Smt1.g:352:5: ( identifier[name,CHECK_DECLARED,SYM_VARIABLE] | let_identifier[name,CHECK_DECLARED] | flet_identifier[name,CHECK_DECLARED] )
+        	        {
+        	            int alt17=3;
+        	            switch ( LA(1) )
+        	            {
+        	            case IDENTIFIER:
+        	            	{
+        	            		alt17=1;
+        	            	}
+        	                break;
+        	            case LET_IDENTIFIER:
+        	            	{
+        	            		alt17=2;
+        	            	}
+        	                break;
+        	            case FLET_IDENTIFIER:
+        	            	{
+        	            		alt17=3;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 17;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto ruleannotatedFormulaEx;
+
+        	            }
+
+        	            switch (alt17)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt1/Smt1.g:352:7: identifier[name,CHECK_DECLARED,SYM_VARIABLE]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_identifier_in_annotatedFormula968);
+        	        	        identifier(ctx, name, CHECK_DECLARED, SYM_VARIABLE);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleannotatedFormulaEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/smt1/Smt1.g:353:9: let_identifier[name,CHECK_DECLARED]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_let_identifier_in_annotatedFormula979);
+        	        	        let_identifier(ctx, name, CHECK_DECLARED);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleannotatedFormulaEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 3:
+        	        	    // ../../../../../../src/parser/smt1/Smt1.g:354:9: flet_identifier[name,CHECK_DECLARED]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_flet_identifier_in_annotatedFormula990);
+        	        	        flet_identifier(ctx, name, CHECK_DECLARED);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleannotatedFormulaEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        {
+        	             expr = PARSER_STATE->getVariable(name); 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleannotatedFormulaEx; /* Prevent compiler warnings */
+    ruleannotatedFormulaEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end annotatedFormula */
+
+/**
+ * $ANTLR start annotatedFormulas
+ * ../../../../../../src/parser/smt1/Smt1.g:366:1: annotatedFormulas[std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr] : ( annotatedFormula[expr] )+ ;
+ */
+static void
+annotatedFormulas(pSmt1Parser ctx, std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/smt1/Smt1.g:367:3: ( ( annotatedFormula[expr] )+ )
+        // ../../../../../../src/parser/smt1/Smt1.g:367:5: ( annotatedFormula[expr] )+
+        {
+            // ../../../../../../src/parser/smt1/Smt1.g:367:5: ( annotatedFormula[expr] )+
+            {
+                int cnt19=0;
+
+                for (;;)
+                {
+                    int alt19=2;
+            	switch ( LA(1) )
+            	{
+            	case BITVECTOR1_BV_CONST:
+            	case BITVECTOR_BV_CONST:
+            	case FALSE_TOK:
+            	case FLET_IDENTIFIER:
+            	case IDENTIFIER:
+            	case LET_IDENTIFIER:
+            	case LPAREN_TOK:
+            	case NUMERAL_TOK:
+            	case RATIONAL_TOK:
+            	case TRUE_TOK:
+            		{
+            			alt19=1;
+            		}
+            	    break;
+
+            	}
+
+            	switch (alt19)
+            	{
+            	    case 1:
+            	        // ../../../../../../src/parser/smt1/Smt1.g:367:7: annotatedFormula[expr]
+            	        {
+            	            FOLLOWPUSH(FOLLOW_annotatedFormula_in_annotatedFormulas1019);
+            	            annotatedFormula(ctx, expr);
+
+            	            FOLLOWPOP();
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto ruleannotatedFormulasEx;
+            	            }
+
+
+            	            {
+            	                 formulas.push_back(expr); 
+            	            }
+
+
+            	        }
+            	        break;
+
+            	    default:
+
+            		if ( cnt19 >= 1 )
+            		{
+            		    goto loop19;
+            		}
+            		/* mismatchedSetEx()
+            		 */
+            		CONSTRUCTEX();
+            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+            		goto ruleannotatedFormulasEx;
+            	}
+            	cnt19++;
+                }
+                loop19: ;	/* Jump to here if this rule does not match */
+            }
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleannotatedFormulasEx; /* Prevent compiler warnings */
+    ruleannotatedFormulasEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end annotatedFormulas */
+
+/**
+ * $ANTLR start builtinOp
+ * ../../../../../../src/parser/smt1/Smt1.g:373:1: builtinOp[CVC4::Kind& kind] : ( NOT_TOK | IMPLIES_TOK | AND_TOK | OR_TOK | XOR_TOK | IFF_TOK | EQUAL_TOK | DISTINCT_TOK | GREATER_THAN_TOK | GREATER_THAN_TOK EQUAL_TOK | LESS_THAN_TOK EQUAL_TOK | LESS_THAN_TOK | PLUS_TOK | STAR_TOK | TILDE_TOK | MINUS_TOK | DIV_TOK | CONCAT_TOK | BVAND_TOK | BVOR_TOK | BVXOR_TOK | BVNOT_TOK | BVNAND_TOK | BVNOR_TOK | BVXNOR_TOK | BVCOMP_TOK | BVMUL_TOK | BVADD_TOK | BVSUB_TOK | BVNEG_TOK | BVUDIV_TOK | B [...]
+ */
+static void
+builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
+{
+    /* Initialize rule variables
+     */
+
+
+      Debug("parser") << "builtin: " << AntlrInput::tokenText(LT(1)) << std::endl;
+
+    {
+        {
+            //  ../../../../../../src/parser/smt1/Smt1.g:377:3: ( NOT_TOK | IMPLIES_TOK | AND_TOK | OR_TOK | XOR_TOK | IFF_TOK | EQUAL_TOK | DISTINCT_TOK | GREATER_THAN_TOK | GREATER_THAN_TOK EQUAL_TOK | LESS_THAN_TOK EQUAL_TOK | LESS_THAN_TOK | PLUS_TOK | STAR_TOK | TILDE_TOK | MINUS_TOK | DIV_TOK | CONCAT_TOK | BVAND_TOK | BVOR_TOK | BVXOR_TOK | BVNOT_TOK | BVNAND_TOK | BVNOR_TOK | BVXNOR_TOK | BVCOMP_TOK | BVMUL_TOK | BVADD_TOK | BVSUB_TOK | BVNEG_TOK | BVUDIV_TOK | BVUREM_TOK | BVSDI [...]
+
+            ANTLR3_UINT32 alt20;
+
+            alt20=48;
+
+            switch ( LA(1) )
+            {
+            case NOT_TOK:
+            	{
+            		alt20=1;
+            	}
+                break;
+            case IMPLIES_TOK:
+            	{
+            		alt20=2;
+            	}
+                break;
+            case AND_TOK:
+            	{
+            		alt20=3;
+            	}
+                break;
+            case OR_TOK:
+            	{
+            		alt20=4;
+            	}
+                break;
+            case XOR_TOK:
+            	{
+            		alt20=5;
+            	}
+                break;
+            case IFF_TOK:
+            	{
+            		alt20=6;
+            	}
+                break;
+            case EQUAL_TOK:
+            	{
+            		alt20=7;
+            	}
+                break;
+            case DISTINCT_TOK:
+            	{
+            		alt20=8;
+            	}
+                break;
+            case GREATER_THAN_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case EQUAL_TOK:
+            			{
+            				alt20=10;
+            			}
+            		    break;
+            		case BITVECTOR1_BV_CONST:
+            		case BITVECTOR_BV_CONST:
+            		case FALSE_TOK:
+            		case FLET_IDENTIFIER:
+            		case IDENTIFIER:
+            		case LET_IDENTIFIER:
+            		case LPAREN_TOK:
+            		case NUMERAL_TOK:
+            		case RATIONAL_TOK:
+            		case TRUE_TOK:
+            			{
+            				alt20=9;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 20;
+            		    EXCEPTION->state        = 9;
+
+
+            		    goto rulebuiltinOpEx;
+
+            		}
+
+            	}
+                break;
+            case LESS_THAN_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case EQUAL_TOK:
+            			{
+            				alt20=11;
+            			}
+            		    break;
+            		case BITVECTOR1_BV_CONST:
+            		case BITVECTOR_BV_CONST:
+            		case FALSE_TOK:
+            		case FLET_IDENTIFIER:
+            		case IDENTIFIER:
+            		case LET_IDENTIFIER:
+            		case LPAREN_TOK:
+            		case NUMERAL_TOK:
+            		case RATIONAL_TOK:
+            		case TRUE_TOK:
+            			{
+            				alt20=12;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 20;
+            		    EXCEPTION->state        = 10;
+
+
+            		    goto rulebuiltinOpEx;
+
+            		}
+
+            	}
+                break;
+            case PLUS_TOK:
+            	{
+            		alt20=13;
+            	}
+                break;
+            case STAR_TOK:
+            	{
+            		alt20=14;
+            	}
+                break;
+            case TILDE_TOK:
+            	{
+            		alt20=15;
+            	}
+                break;
+            case MINUS_TOK:
+            	{
+            		alt20=16;
+            	}
+                break;
+            case DIV_TOK:
+            	{
+            		alt20=17;
+            	}
+                break;
+            case CONCAT_TOK:
+            	{
+            		alt20=18;
+            	}
+                break;
+            case BVAND_TOK:
+            	{
+            		alt20=19;
+            	}
+                break;
+            case BVOR_TOK:
+            	{
+            		alt20=20;
+            	}
+                break;
+            case BVXOR_TOK:
+            	{
+            		alt20=21;
+            	}
+                break;
+            case BVNOT_TOK:
+            	{
+            		alt20=22;
+            	}
+                break;
+            case BVNAND_TOK:
+            	{
+            		alt20=23;
+            	}
+                break;
+            case BVNOR_TOK:
+            	{
+            		alt20=24;
+            	}
+                break;
+            case BVXNOR_TOK:
+            	{
+            		alt20=25;
+            	}
+                break;
+            case BVCOMP_TOK:
+            	{
+            		alt20=26;
+            	}
+                break;
+            case BVMUL_TOK:
+            	{
+            		alt20=27;
+            	}
+                break;
+            case BVADD_TOK:
+            	{
+            		alt20=28;
+            	}
+                break;
+            case BVSUB_TOK:
+            	{
+            		alt20=29;
+            	}
+                break;
+            case BVNEG_TOK:
+            	{
+            		alt20=30;
+            	}
+                break;
+            case BVUDIV_TOK:
+            	{
+            		alt20=31;
+            	}
+                break;
+            case BVUREM_TOK:
+            	{
+            		alt20=32;
+            	}
+                break;
+            case BVSDIV_TOK:
+            	{
+            		alt20=33;
+            	}
+                break;
+            case BVSREM_TOK:
+            	{
+            		alt20=34;
+            	}
+                break;
+            case BVSMOD_TOK:
+            	{
+            		alt20=35;
+            	}
+                break;
+            case BVSHL_TOK:
+            	{
+            		alt20=36;
+            	}
+                break;
+            case BVLSHR_TOK:
+            	{
+            		alt20=37;
+            	}
+                break;
+            case BVASHR_TOK:
+            	{
+            		alt20=38;
+            	}
+                break;
+            case BVULT_TOK:
+            	{
+            		alt20=39;
+            	}
+                break;
+            case BVULE_TOK:
+            	{
+            		alt20=40;
+            	}
+                break;
+            case BVUGT_TOK:
+            	{
+            		alt20=41;
+            	}
+                break;
+            case BVUGE_TOK:
+            	{
+            		alt20=42;
+            	}
+                break;
+            case BVSLT_TOK:
+            	{
+            		alt20=43;
+            	}
+                break;
+            case BVSLE_TOK:
+            	{
+            		alt20=44;
+            	}
+                break;
+            case BVSGT_TOK:
+            	{
+            		alt20=45;
+            	}
+                break;
+            case BVSGE_TOK:
+            	{
+            		alt20=46;
+            	}
+                break;
+            case SELECT_TOK:
+            	{
+            		alt20=47;
+            	}
+                break;
+            case STORE_TOK:
+            	{
+            		alt20=48;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 20;
+                EXCEPTION->state        = 0;
+
+
+                goto rulebuiltinOpEx;
+
+            }
+
+            switch (alt20)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:377:5: NOT_TOK
+        	    {
+        	         MATCHT(NOT_TOK, &FOLLOW_NOT_TOK_in_builtinOp1046);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::NOT;     
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:378:5: IMPLIES_TOK
+        	    {
+        	         MATCHT(IMPLIES_TOK, &FOLLOW_IMPLIES_TOK_in_builtinOp1059);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::IMPLIES; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:379:5: AND_TOK
+        	    {
+        	         MATCHT(AND_TOK, &FOLLOW_AND_TOK_in_builtinOp1068);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::AND;     
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:380:5: OR_TOK
+        	    {
+        	         MATCHT(OR_TOK, &FOLLOW_OR_TOK_in_builtinOp1081);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::OR;      
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:381:5: XOR_TOK
+        	    {
+        	         MATCHT(XOR_TOK, &FOLLOW_XOR_TOK_in_builtinOp1095);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::XOR;     
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:382:5: IFF_TOK
+        	    {
+        	         MATCHT(IFF_TOK, &FOLLOW_IFF_TOK_in_builtinOp1108);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::EQUAL;   
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:383:5: EQUAL_TOK
+        	    {
+        	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_builtinOp1121);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::EQUAL;   
+        	        }
+
+
+        	    }
+        	    break;
+        	case 8:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:384:5: DISTINCT_TOK
+        	    {
+        	         MATCHT(DISTINCT_TOK, &FOLLOW_DISTINCT_TOK_in_builtinOp1132);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::DISTINCT; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 9:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:386:5: GREATER_THAN_TOK
+        	    {
+        	         MATCHT(GREATER_THAN_TOK, &FOLLOW_GREATER_THAN_TOK_in_builtinOp1143);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::GT; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 10:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:388:5: GREATER_THAN_TOK EQUAL_TOK
+        	    {
+        	         MATCHT(GREATER_THAN_TOK, &FOLLOW_GREATER_THAN_TOK_in_builtinOp1168);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_builtinOp1170);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::GEQ; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 11:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:390:5: LESS_THAN_TOK EQUAL_TOK
+        	    {
+        	         MATCHT(LESS_THAN_TOK, &FOLLOW_LESS_THAN_TOK_in_builtinOp1195);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_builtinOp1197);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::LEQ; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 12:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:392:5: LESS_THAN_TOK
+        	    {
+        	         MATCHT(LESS_THAN_TOK, &FOLLOW_LESS_THAN_TOK_in_builtinOp1222);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::LT; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 13:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:394:5: PLUS_TOK
+        	    {
+        	         MATCHT(PLUS_TOK, &FOLLOW_PLUS_TOK_in_builtinOp1247);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::PLUS; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 14:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:395:5: STAR_TOK
+        	    {
+        	         MATCHT(STAR_TOK, &FOLLOW_STAR_TOK_in_builtinOp1259);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::MULT; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 15:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:396:5: TILDE_TOK
+        	    {
+        	         MATCHT(TILDE_TOK, &FOLLOW_TILDE_TOK_in_builtinOp1271);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::UMINUS; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 16:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:397:5: MINUS_TOK
+        	    {
+        	         MATCHT(MINUS_TOK, &FOLLOW_MINUS_TOK_in_builtinOp1282);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::MINUS; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 17:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:398:5: DIV_TOK
+        	    {
+        	         MATCHT(DIV_TOK, &FOLLOW_DIV_TOK_in_builtinOp1293);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::DIVISION; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 18:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:400:5: CONCAT_TOK
+        	    {
+        	         MATCHT(CONCAT_TOK, &FOLLOW_CONCAT_TOK_in_builtinOp1309);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_CONCAT; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 19:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:401:5: BVAND_TOK
+        	    {
+        	         MATCHT(BVAND_TOK, &FOLLOW_BVAND_TOK_in_builtinOp1319);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_AND;    
+        	        }
+
+
+        	    }
+        	    break;
+        	case 20:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:402:5: BVOR_TOK
+        	    {
+        	         MATCHT(BVOR_TOK, &FOLLOW_BVOR_TOK_in_builtinOp1330);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_OR;     
+        	        }
+
+
+        	    }
+        	    break;
+        	case 21:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:403:5: BVXOR_TOK
+        	    {
+        	         MATCHT(BVXOR_TOK, &FOLLOW_BVXOR_TOK_in_builtinOp1342);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_XOR;    
+        	        }
+
+
+        	    }
+        	    break;
+        	case 22:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:404:5: BVNOT_TOK
+        	    {
+        	         MATCHT(BVNOT_TOK, &FOLLOW_BVNOT_TOK_in_builtinOp1353);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_NOT;    
+        	        }
+
+
+        	    }
+        	    break;
+        	case 23:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:405:5: BVNAND_TOK
+        	    {
+        	         MATCHT(BVNAND_TOK, &FOLLOW_BVNAND_TOK_in_builtinOp1364);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_NAND;   
+        	        }
+
+
+        	    }
+        	    break;
+        	case 24:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:406:5: BVNOR_TOK
+        	    {
+        	         MATCHT(BVNOR_TOK, &FOLLOW_BVNOR_TOK_in_builtinOp1374);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_NOR;    
+        	        }
+
+
+        	    }
+        	    break;
+        	case 25:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:407:5: BVXNOR_TOK
+        	    {
+        	         MATCHT(BVXNOR_TOK, &FOLLOW_BVXNOR_TOK_in_builtinOp1385);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_XNOR;   
+        	        }
+
+
+        	    }
+        	    break;
+        	case 26:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:408:5: BVCOMP_TOK
+        	    {
+        	         MATCHT(BVCOMP_TOK, &FOLLOW_BVCOMP_TOK_in_builtinOp1395);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_COMP;   
+        	        }
+
+
+        	    }
+        	    break;
+        	case 27:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:409:5: BVMUL_TOK
+        	    {
+        	         MATCHT(BVMUL_TOK, &FOLLOW_BVMUL_TOK_in_builtinOp1405);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_MULT;   
+        	        }
+
+
+        	    }
+        	    break;
+        	case 28:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:410:5: BVADD_TOK
+        	    {
+        	         MATCHT(BVADD_TOK, &FOLLOW_BVADD_TOK_in_builtinOp1416);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_PLUS;   
+        	        }
+
+
+        	    }
+        	    break;
+        	case 29:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:411:5: BVSUB_TOK
+        	    {
+        	         MATCHT(BVSUB_TOK, &FOLLOW_BVSUB_TOK_in_builtinOp1427);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_SUB;    
+        	        }
+
+
+        	    }
+        	    break;
+        	case 30:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:412:5: BVNEG_TOK
+        	    {
+        	         MATCHT(BVNEG_TOK, &FOLLOW_BVNEG_TOK_in_builtinOp1438);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_NEG;    
+        	        }
+
+
+        	    }
+        	    break;
+        	case 31:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:413:5: BVUDIV_TOK
+        	    {
+        	         MATCHT(BVUDIV_TOK, &FOLLOW_BVUDIV_TOK_in_builtinOp1449);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_UDIV;   
+        	        }
+
+
+        	    }
+        	    break;
+        	case 32:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:414:5: BVUREM_TOK
+        	    {
+        	         MATCHT(BVUREM_TOK, &FOLLOW_BVUREM_TOK_in_builtinOp1459);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_UREM;   
+        	        }
+
+
+        	    }
+        	    break;
+        	case 33:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:415:5: BVSDIV_TOK
+        	    {
+        	         MATCHT(BVSDIV_TOK, &FOLLOW_BVSDIV_TOK_in_builtinOp1469);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_SDIV;   
+        	        }
+
+
+        	    }
+        	    break;
+        	case 34:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:416:5: BVSREM_TOK
+        	    {
+        	         MATCHT(BVSREM_TOK, &FOLLOW_BVSREM_TOK_in_builtinOp1479);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_SREM;   
+        	        }
+
+
+        	    }
+        	    break;
+        	case 35:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:417:5: BVSMOD_TOK
+        	    {
+        	         MATCHT(BVSMOD_TOK, &FOLLOW_BVSMOD_TOK_in_builtinOp1489);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_SMOD;   
+        	        }
+
+
+        	    }
+        	    break;
+        	case 36:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:418:5: BVSHL_TOK
+        	    {
+        	         MATCHT(BVSHL_TOK, &FOLLOW_BVSHL_TOK_in_builtinOp1499);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_SHL;    
+        	        }
+
+
+        	    }
+        	    break;
+        	case 37:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:419:5: BVLSHR_TOK
+        	    {
+        	         MATCHT(BVLSHR_TOK, &FOLLOW_BVLSHR_TOK_in_builtinOp1510);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_LSHR;   
+        	        }
+
+
+        	    }
+        	    break;
+        	case 38:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:420:5: BVASHR_TOK
+        	    {
+        	         MATCHT(BVASHR_TOK, &FOLLOW_BVASHR_TOK_in_builtinOp1520);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_ASHR;   
+        	        }
+
+
+        	    }
+        	    break;
+        	case 39:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:421:5: BVULT_TOK
+        	    {
+        	         MATCHT(BVULT_TOK, &FOLLOW_BVULT_TOK_in_builtinOp1530);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_ULT;    
+        	        }
+
+
+        	    }
+        	    break;
+        	case 40:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:422:5: BVULE_TOK
+        	    {
+        	         MATCHT(BVULE_TOK, &FOLLOW_BVULE_TOK_in_builtinOp1541);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_ULE;    
+        	        }
+
+
+        	    }
+        	    break;
+        	case 41:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:423:5: BVUGT_TOK
+        	    {
+        	         MATCHT(BVUGT_TOK, &FOLLOW_BVUGT_TOK_in_builtinOp1552);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_UGT;    
+        	        }
+
+
+        	    }
+        	    break;
+        	case 42:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:424:5: BVUGE_TOK
+        	    {
+        	         MATCHT(BVUGE_TOK, &FOLLOW_BVUGE_TOK_in_builtinOp1563);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_UGE;    
+        	        }
+
+
+        	    }
+        	    break;
+        	case 43:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:425:5: BVSLT_TOK
+        	    {
+        	         MATCHT(BVSLT_TOK, &FOLLOW_BVSLT_TOK_in_builtinOp1574);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_SLT;    
+        	        }
+
+
+        	    }
+        	    break;
+        	case 44:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:426:5: BVSLE_TOK
+        	    {
+        	         MATCHT(BVSLE_TOK, &FOLLOW_BVSLE_TOK_in_builtinOp1585);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_SLE;    
+        	        }
+
+
+        	    }
+        	    break;
+        	case 45:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:427:5: BVSGT_TOK
+        	    {
+        	         MATCHT(BVSGT_TOK, &FOLLOW_BVSGT_TOK_in_builtinOp1596);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_SGT;    
+        	        }
+
+
+        	    }
+        	    break;
+        	case 46:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:428:5: BVSGE_TOK
+        	    {
+        	         MATCHT(BVSGE_TOK, &FOLLOW_BVSGE_TOK_in_builtinOp1607);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_SGE;    
+        	        }
+
+
+        	    }
+        	    break;
+        	case 47:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:430:5: SELECT_TOK
+        	    {
+        	         MATCHT(SELECT_TOK, &FOLLOW_SELECT_TOK_in_builtinOp1621);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::SELECT; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 48:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:431:5: STORE_TOK
+        	    {
+        	         MATCHT(STORE_TOK, &FOLLOW_STORE_TOK_in_builtinOp1631);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::STORE; 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulebuiltinOpEx; /* Prevent compiler warnings */
+    rulebuiltinOpEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end builtinOp */
+
+/**
+ * $ANTLR start parameterizedOperator
+ * ../../../../../../src/parser/smt1/Smt1.g:438:1: parameterizedOperator[CVC4::Expr& op] : ( functionSymbol[op] | bitVectorOperator[op] );
+ */
+static void
+parameterizedOperator(pSmt1Parser ctx, CVC4::Expr& op)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/smt1/Smt1.g:439:3: ( functionSymbol[op] | bitVectorOperator[op] )
+
+            ANTLR3_UINT32 alt21;
+
+            alt21=2;
+
+            switch ( LA(1) )
+            {
+            case IDENTIFIER:
+            	{
+            		alt21=1;
+            	}
+                break;
+            case EXTRACT_TOK:
+            case REPEAT_TOK:
+            case ROTATE_LEFT_TOK:
+            case ROTATE_RIGHT_TOK:
+            case SIGN_EXTEND_TOK:
+            case ZERO_EXTEND_TOK:
+            	{
+            		alt21=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 21;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleparameterizedOperatorEx;
+
+            }
+
+            switch (alt21)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:439:5: functionSymbol[op]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_functionSymbol_in_parameterizedOperator1655);
+        	        functionSymbol(ctx, op);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparameterizedOperatorEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:440:5: bitVectorOperator[op]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_bitVectorOperator_in_parameterizedOperator1662);
+        	        bitVectorOperator(ctx, op);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparameterizedOperatorEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleparameterizedOperatorEx; /* Prevent compiler warnings */
+    ruleparameterizedOperatorEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end parameterizedOperator */
+
+/**
+ * $ANTLR start bitVectorOperator
+ * ../../../../../../src/parser/smt1/Smt1.g:446:1: bitVectorOperator[CVC4::Expr& op] : ( EXTRACT_TOK '[' n1= NUMERAL_TOK ':' n2= NUMERAL_TOK ']' | REPEAT_TOK '[' n= NUMERAL_TOK ']' | ZERO_EXTEND_TOK '[' n= NUMERAL_TOK ']' | SIGN_EXTEND_TOK '[' n= NUMERAL_TOK ']' | ROTATE_LEFT_TOK '[' n= NUMERAL_TOK ']' | ROTATE_RIGHT_TOK '[' n= NUMERAL_TOK ']' );
+ */
+static void
+bitVectorOperator(pSmt1Parser ctx, CVC4::Expr& op)
+{
+    pANTLR3_COMMON_TOKEN    n1;
+    pANTLR3_COMMON_TOKEN    n2;
+    pANTLR3_COMMON_TOKEN    n;
+
+    /* Initialize rule variables
+     */
+
+    n1       = NULL;
+    n2       = NULL;
+    n       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/smt1/Smt1.g:447:3: ( EXTRACT_TOK '[' n1= NUMERAL_TOK ':' n2= NUMERAL_TOK ']' | REPEAT_TOK '[' n= NUMERAL_TOK ']' | ZERO_EXTEND_TOK '[' n= NUMERAL_TOK ']' | SIGN_EXTEND_TOK '[' n= NUMERAL_TOK ']' | ROTATE_LEFT_TOK '[' n= NUMERAL_TOK ']' | ROTATE_RIGHT_TOK '[' n= NUMERAL_TOK ']' )
+
+            ANTLR3_UINT32 alt22;
+
+            alt22=6;
+
+            switch ( LA(1) )
+            {
+            case EXTRACT_TOK:
+            	{
+            		alt22=1;
+            	}
+                break;
+            case REPEAT_TOK:
+            	{
+            		alt22=2;
+            	}
+                break;
+            case ZERO_EXTEND_TOK:
+            	{
+            		alt22=3;
+            	}
+                break;
+            case SIGN_EXTEND_TOK:
+            	{
+            		alt22=4;
+            	}
+                break;
+            case ROTATE_LEFT_TOK:
+            	{
+            		alt22=5;
+            	}
+                break;
+            case ROTATE_RIGHT_TOK:
+            	{
+            		alt22=6;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 22;
+                EXCEPTION->state        = 0;
+
+
+                goto rulebitVectorOperatorEx;
+
+            }
+
+            switch (alt22)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:447:5: EXTRACT_TOK '[' n1= NUMERAL_TOK ':' n2= NUMERAL_TOK ']'
+        	    {
+        	         MATCHT(EXTRACT_TOK, &FOLLOW_EXTRACT_TOK_in_bitVectorOperator1679);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	         MATCHT(103, &FOLLOW_103_in_bitVectorOperator1681);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	        n1 = (pANTLR3_COMMON_TOKEN) MATCHT(NUMERAL_TOK, &FOLLOW_NUMERAL_TOK_in_bitVectorOperator1687);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	         MATCHT(100, &FOLLOW_100_in_bitVectorOperator1689);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	        n2 = (pANTLR3_COMMON_TOKEN) MATCHT(NUMERAL_TOK, &FOLLOW_NUMERAL_TOK_in_bitVectorOperator1695);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	         MATCHT(104, &FOLLOW_104_in_bitVectorOperator1697);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	        {
+        	             op = MK_CONST(BitVectorExtract(AntlrInput::tokenToUnsigned(n1), AntlrInput::tokenToUnsigned(n2))); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:449:5: REPEAT_TOK '[' n= NUMERAL_TOK ']'
+        	    {
+        	         MATCHT(REPEAT_TOK, &FOLLOW_REPEAT_TOK_in_bitVectorOperator1709);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	         MATCHT(103, &FOLLOW_103_in_bitVectorOperator1711);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	        n = (pANTLR3_COMMON_TOKEN) MATCHT(NUMERAL_TOK, &FOLLOW_NUMERAL_TOK_in_bitVectorOperator1717);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	         MATCHT(104, &FOLLOW_104_in_bitVectorOperator1719);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	        {
+        	             op = MK_CONST(BitVectorRepeat(AntlrInput::tokenToUnsigned(n))); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:451:5: ZERO_EXTEND_TOK '[' n= NUMERAL_TOK ']'
+        	    {
+        	         MATCHT(ZERO_EXTEND_TOK, &FOLLOW_ZERO_EXTEND_TOK_in_bitVectorOperator1731);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	         MATCHT(103, &FOLLOW_103_in_bitVectorOperator1733);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	        n = (pANTLR3_COMMON_TOKEN) MATCHT(NUMERAL_TOK, &FOLLOW_NUMERAL_TOK_in_bitVectorOperator1739);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	         MATCHT(104, &FOLLOW_104_in_bitVectorOperator1741);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	        {
+        	             op = MK_CONST(BitVectorZeroExtend(AntlrInput::tokenToUnsigned(n))); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:453:5: SIGN_EXTEND_TOK '[' n= NUMERAL_TOK ']'
+        	    {
+        	         MATCHT(SIGN_EXTEND_TOK, &FOLLOW_SIGN_EXTEND_TOK_in_bitVectorOperator1753);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	         MATCHT(103, &FOLLOW_103_in_bitVectorOperator1755);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	        n = (pANTLR3_COMMON_TOKEN) MATCHT(NUMERAL_TOK, &FOLLOW_NUMERAL_TOK_in_bitVectorOperator1761);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	         MATCHT(104, &FOLLOW_104_in_bitVectorOperator1763);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	        {
+        	             op = MK_CONST(BitVectorSignExtend(AntlrInput::tokenToUnsigned(n))); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:455:5: ROTATE_LEFT_TOK '[' n= NUMERAL_TOK ']'
+        	    {
+        	         MATCHT(ROTATE_LEFT_TOK, &FOLLOW_ROTATE_LEFT_TOK_in_bitVectorOperator1775);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	         MATCHT(103, &FOLLOW_103_in_bitVectorOperator1777);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	        n = (pANTLR3_COMMON_TOKEN) MATCHT(NUMERAL_TOK, &FOLLOW_NUMERAL_TOK_in_bitVectorOperator1783);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	         MATCHT(104, &FOLLOW_104_in_bitVectorOperator1785);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	        {
+        	             op = MK_CONST(BitVectorRotateLeft(AntlrInput::tokenToUnsigned(n))); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:457:5: ROTATE_RIGHT_TOK '[' n= NUMERAL_TOK ']'
+        	    {
+        	         MATCHT(ROTATE_RIGHT_TOK, &FOLLOW_ROTATE_RIGHT_TOK_in_bitVectorOperator1797);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	         MATCHT(103, &FOLLOW_103_in_bitVectorOperator1799);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	        n = (pANTLR3_COMMON_TOKEN) MATCHT(NUMERAL_TOK, &FOLLOW_NUMERAL_TOK_in_bitVectorOperator1805);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	         MATCHT(104, &FOLLOW_104_in_bitVectorOperator1807);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebitVectorOperatorEx;
+        	        }
+
+
+        	        {
+        	             op = MK_CONST(BitVectorRotateRight(AntlrInput::tokenToUnsigned(n))); 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulebitVectorOperatorEx; /* Prevent compiler warnings */
+    rulebitVectorOperatorEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end bitVectorOperator */
+
+/**
+ * $ANTLR start predicateName
+ * ../../../../../../src/parser/smt1/Smt1.g:465:1: predicateName[std::string& name, CVC4::parser::DeclarationCheck check] : functionName[name,check] ;
+ */
+static void
+predicateName(pSmt1Parser ctx, std::string& name, CVC4::parser::DeclarationCheck check)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/smt1/Smt1.g:466:3: ( functionName[name,check] )
+        // ../../../../../../src/parser/smt1/Smt1.g:466:6: functionName[name,check]
+        {
+            FOLLOWPUSH(FOLLOW_functionName_in_predicateName1830);
+            functionName(ctx, name, check);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulepredicateNameEx;
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulepredicateNameEx; /* Prevent compiler warnings */
+    rulepredicateNameEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end predicateName */
+
+/**
+ * $ANTLR start functionName
+ * ../../../../../../src/parser/smt1/Smt1.g:473:1: functionName[std::string& name, CVC4::parser::DeclarationCheck check] : identifier[name,check,SYM_VARIABLE] ;
+ */
+static void
+functionName(pSmt1Parser ctx, std::string& name, CVC4::parser::DeclarationCheck check)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/smt1/Smt1.g:474:3: ( identifier[name,check,SYM_VARIABLE] )
+        // ../../../../../../src/parser/smt1/Smt1.g:474:6: identifier[name,check,SYM_VARIABLE]
+        {
+            FOLLOWPUSH(FOLLOW_identifier_in_functionName1848);
+            identifier(ctx, name, check, SYM_VARIABLE);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulefunctionNameEx;
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulefunctionNameEx; /* Prevent compiler warnings */
+    rulefunctionNameEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end functionName */
+
+/**
+ * $ANTLR start functionSymbol
+ * ../../../../../../src/parser/smt1/Smt1.g:480:1: functionSymbol[CVC4::Expr& fun] : functionName[name,CHECK_DECLARED] ;
+ */
+static void
+functionSymbol(pSmt1Parser ctx, CVC4::Expr& fun)
+{
+
+    	std::string name;
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/smt1/Smt1.g:484:3: ( functionName[name,CHECK_DECLARED] )
+        // ../../../../../../src/parser/smt1/Smt1.g:484:5: functionName[name,CHECK_DECLARED]
+        {
+            FOLLOWPUSH(FOLLOW_functionName_in_functionSymbol1870);
+            functionName(ctx, name, CHECK_DECLARED);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulefunctionSymbolEx;
+            }
+
+
+            {
+                 PARSER_STATE->checkFunctionLike(name);
+                      fun = PARSER_STATE->getVariable(name); 
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulefunctionSymbolEx; /* Prevent compiler warnings */
+    rulefunctionSymbolEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end functionSymbol */
+
+/**
+ * $ANTLR start attribute
+ * ../../../../../../src/parser/smt1/Smt1.g:492:1: attribute[std::string& s] : ATTR_IDENTIFIER ;
+ */
+static void
+attribute(pSmt1Parser ctx, std::string& s)
+{
+    pANTLR3_COMMON_TOKEN    ATTR_IDENTIFIER4;
+
+    /* Initialize rule variables
+     */
+
+    ATTR_IDENTIFIER4       = NULL;
+
+    {
+        // ../../../../../../src/parser/smt1/Smt1.g:493:3: ( ATTR_IDENTIFIER )
+        // ../../../../../../src/parser/smt1/Smt1.g:493:5: ATTR_IDENTIFIER
+        {
+            ATTR_IDENTIFIER4 = (pANTLR3_COMMON_TOKEN) MATCHT(ATTR_IDENTIFIER, &FOLLOW_ATTR_IDENTIFIER_in_attribute1893);
+            if  (HASEXCEPTION())
+            {
+                goto ruleattributeEx;
+            }
+
+
+            {
+                 s = AntlrInput::tokenText(ATTR_IDENTIFIER4); 
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleattributeEx; /* Prevent compiler warnings */
+    ruleattributeEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end attribute */
+
+/**
+ * $ANTLR start functionDeclaration
+ * ../../../../../../src/parser/smt1/Smt1.g:497:1: functionDeclaration[CVC4::PtrCloser<CVC4::Command>* smt_command] : LPAREN_TOK functionName[name,CHECK_UNDECLARED] t= sortSymbol sortList[sorts] RPAREN_TOK ;
+ */
+static void
+functionDeclaration(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
+{
+
+      std::string name;
+      std::vector<Type> sorts;
+
+    CVC4::parser::smt1::myType t;
+    #undef	RETURN_TYPE_t
+    #define	RETURN_TYPE_t CVC4::parser::smt1::myType
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/smt1/Smt1.g:502:3: ( LPAREN_TOK functionName[name,CHECK_UNDECLARED] t= sortSymbol sortList[sorts] RPAREN_TOK )
+        // ../../../../../../src/parser/smt1/Smt1.g:502:5: LPAREN_TOK functionName[name,CHECK_UNDECLARED] t= sortSymbol sortList[sorts] RPAREN_TOK
+        {
+             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_functionDeclaration1918);
+            if  (HASEXCEPTION())
+            {
+                goto rulefunctionDeclarationEx;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_functionName_in_functionDeclaration1920);
+            functionName(ctx, name, CHECK_UNDECLARED);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulefunctionDeclarationEx;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_sortSymbol_in_functionDeclaration1933);
+            t=sortSymbol(ctx);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulefunctionDeclarationEx;
+            }
+
+
+            {
+                 sorts.push_back(t); 
+            }
+
+
+            FOLLOWPUSH(FOLLOW_sortList_in_functionDeclaration1948);
+            sortList(ctx, sorts);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulefunctionDeclarationEx;
+            }
+
+
+             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_functionDeclaration1951);
+            if  (HASEXCEPTION())
+            {
+                goto rulefunctionDeclarationEx;
+            }
+
+
+            {
+                 if( sorts.size() == 1 ) {
+                        assert( t == sorts[0] );
+                      } else {
+                        t = EXPR_MANAGER->mkFunctionType(sorts);
+                      }
+                      Expr func = PARSER_STATE->mkVar(name, t);
+                      smt_command->reset(new DeclareFunctionCommand(name, func, t));
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulefunctionDeclarationEx; /* Prevent compiler warnings */
+    rulefunctionDeclarationEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end functionDeclaration */
+
+/**
+ * $ANTLR start predicateDeclaration
+ * ../../../../../../src/parser/smt1/Smt1.g:519:1: predicateDeclaration[CVC4::PtrCloser<CVC4::Command>* smt_command] : LPAREN_TOK predicateName[name,CHECK_UNDECLARED] sortList[p_sorts] RPAREN_TOK ;
+ */
+static void
+predicateDeclaration(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
+{
+
+      std::string name;
+      std::vector<Type> p_sorts;
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/smt1/Smt1.g:524:3: ( LPAREN_TOK predicateName[name,CHECK_UNDECLARED] sortList[p_sorts] RPAREN_TOK )
+        // ../../../../../../src/parser/smt1/Smt1.g:524:5: LPAREN_TOK predicateName[name,CHECK_UNDECLARED] sortList[p_sorts] RPAREN_TOK
+        {
+             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_predicateDeclaration1978);
+            if  (HASEXCEPTION())
+            {
+                goto rulepredicateDeclarationEx;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_predicateName_in_predicateDeclaration1980);
+            predicateName(ctx, name, CHECK_UNDECLARED);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulepredicateDeclarationEx;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_sortList_in_predicateDeclaration1983);
+            sortList(ctx, p_sorts);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulepredicateDeclarationEx;
+            }
+
+
+             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_predicateDeclaration1986);
+            if  (HASEXCEPTION())
+            {
+                goto rulepredicateDeclarationEx;
+            }
+
+
+            {
+                 Type t;
+                      if( p_sorts.empty() ) {
+                        t = EXPR_MANAGER->booleanType();
+                      } else {
+                        t = EXPR_MANAGER->mkPredicateType(p_sorts);
+                      }
+                      Expr func = PARSER_STATE->mkVar(name, t);
+                      smt_command->reset(new DeclareFunctionCommand(name, func, t));
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulepredicateDeclarationEx; /* Prevent compiler warnings */
+    rulepredicateDeclarationEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end predicateDeclaration */
+
+/**
+ * $ANTLR start sortDeclaration
+ * ../../../../../../src/parser/smt1/Smt1.g:536:1: sortDeclaration[CVC4::PtrCloser<CVC4::Command>* smt_command] : sortName[name,CHECK_UNDECLARED] ;
+ */
+static void
+sortDeclaration(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
+{
+
+      std::string name;
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/smt1/Smt1.g:540:3: ( sortName[name,CHECK_UNDECLARED] )
+        // ../../../../../../src/parser/smt1/Smt1.g:540:5: sortName[name,CHECK_UNDECLARED]
+        {
+            FOLLOWPUSH(FOLLOW_sortName_in_sortDeclaration2011);
+            sortName(ctx, name, CHECK_UNDECLARED);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulesortDeclarationEx;
+            }
+
+
+            {
+                 Debug("parser") << "sort decl: '" << name << "'" << std::endl;
+                      Type type = PARSER_STATE->mkSort(name);
+                      smt_command->reset(new DeclareTypeCommand(name, 0, type));
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesortDeclarationEx; /* Prevent compiler warnings */
+    rulesortDeclarationEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end sortDeclaration */
+
+/**
+ * $ANTLR start sortList
+ * ../../../../../../src/parser/smt1/Smt1.g:550:1: sortList[std::vector<CVC4::Type>& sorts] : (t= sortSymbol )* ;
+ */
+static void
+sortList(pSmt1Parser ctx, std::vector<CVC4::Type>& sorts)
+{
+    CVC4::parser::smt1::myType t;
+    #undef	RETURN_TYPE_t
+    #define	RETURN_TYPE_t CVC4::parser::smt1::myType
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/smt1/Smt1.g:551:3: ( (t= sortSymbol )* )
+        // ../../../../../../src/parser/smt1/Smt1.g:551:5: (t= sortSymbol )*
+        {
+            // ../../../../../../src/parser/smt1/Smt1.g:551:5: (t= sortSymbol )*
+
+            for (;;)
+            {
+                int alt23=2;
+                switch ( LA(1) )
+                {
+                case BITVECTOR_TOK:
+                case IDENTIFIER:
+                case 102:
+                	{
+                		alt23=1;
+                	}
+                    break;
+
+                }
+
+                switch (alt23)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/smt1/Smt1.g:551:7: t= sortSymbol
+            	    {
+            	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sortList2040);
+            	        t=sortSymbol(ctx);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulesortListEx;
+            	        }
+
+
+            	        {
+            	             sorts.push_back(t); 
+            	        }
+
+
+            	    }
+            	    break;
+
+            	default:
+            	    goto loop23;	/* break out of the loop */
+            	    break;
+                }
+            }
+            loop23: ; /* Jump out to here if this rule does not match */
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesortListEx; /* Prevent compiler warnings */
+    rulesortListEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end sortList */
+
+/**
+ * $ANTLR start sortName
+ * ../../../../../../src/parser/smt1/Smt1.g:558:1: sortName[std::string& name, CVC4::parser::DeclarationCheck check] : identifier[name,check,SYM_SORT] ;
+ */
+static void
+sortName(pSmt1Parser ctx, std::string& name, CVC4::parser::DeclarationCheck check)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/smt1/Smt1.g:559:3: ( identifier[name,check,SYM_SORT] )
+        // ../../../../../../src/parser/smt1/Smt1.g:559:5: identifier[name,check,SYM_SORT]
+        {
+            FOLLOWPUSH(FOLLOW_identifier_in_sortName2060);
+            identifier(ctx, name, check, SYM_SORT);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulesortNameEx;
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesortNameEx; /* Prevent compiler warnings */
+    rulesortNameEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end sortName */
+
+/**
+ * $ANTLR start sortSymbol
+ * ../../../../../../src/parser/smt1/Smt1.g:562:1: sortSymbol returns [CVC4::parser::smt1::myType t] : ( sortName[name,CHECK_NONE] | BITVECTOR_TOK '[' NUMERAL_TOK ']' | 'Array[' n1= NUMERAL_TOK ':' n2= NUMERAL_TOK ']' );
+ */
+static CVC4::parser::smt1::myType
+sortSymbol(pSmt1Parser ctx)
+{
+    CVC4::parser::smt1::myType t;
+
+
+
+      std::string name;
+
+    pANTLR3_COMMON_TOKEN    n1;
+    pANTLR3_COMMON_TOKEN    n2;
+    pANTLR3_COMMON_TOKEN    NUMERAL_TOK5;
+
+    /* Initialize rule variables
+     */
+
+    n1       = NULL;
+    n2       = NULL;
+    NUMERAL_TOK5       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/smt1/Smt1.g:566:3: ( sortName[name,CHECK_NONE] | BITVECTOR_TOK '[' NUMERAL_TOK ']' | 'Array[' n1= NUMERAL_TOK ':' n2= NUMERAL_TOK ']' )
+
+            ANTLR3_UINT32 alt24;
+
+            alt24=3;
+
+            switch ( LA(1) )
+            {
+            case IDENTIFIER:
+            	{
+            		alt24=1;
+            	}
+                break;
+            case BITVECTOR_TOK:
+            	{
+            		alt24=2;
+            	}
+                break;
+            case 102:
+            	{
+            		alt24=3;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 24;
+                EXCEPTION->state        = 0;
+
+
+                goto rulesortSymbolEx;
+
+            }
+
+            switch (alt24)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:566:5: sortName[name,CHECK_NONE]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_sortName_in_sortSymbol2083);
+        	        sortName(ctx, name, CHECK_NONE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesortSymbolEx;
+        	        }
+
+
+        	        {
+        	             t= PARSER_STATE->getSort(name);
+        	             
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:568:5: BITVECTOR_TOK '[' NUMERAL_TOK ']'
+        	    {
+        	         MATCHT(BITVECTOR_TOK, &FOLLOW_BITVECTOR_TOK_in_sortSymbol2095);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesortSymbolEx;
+        	        }
+
+
+        	         MATCHT(103, &FOLLOW_103_in_sortSymbol2097);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesortSymbolEx;
+        	        }
+
+
+        	        NUMERAL_TOK5 = (pANTLR3_COMMON_TOKEN) MATCHT(NUMERAL_TOK, &FOLLOW_NUMERAL_TOK_in_sortSymbol2099);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesortSymbolEx;
+        	        }
+
+
+        	         MATCHT(104, &FOLLOW_104_in_sortSymbol2101);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesortSymbolEx;
+        	        }
+
+
+        	        {
+
+        	              	t= EXPR_MANAGER->mkBitVectorType(AntlrInput::tokenToUnsigned(NUMERAL_TOK5));
+
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:573:5: 'Array[' n1= NUMERAL_TOK ':' n2= NUMERAL_TOK ']'
+        	    {
+        	         MATCHT(102, &FOLLOW_102_in_sortSymbol2113);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesortSymbolEx;
+        	        }
+
+
+        	        n1 = (pANTLR3_COMMON_TOKEN) MATCHT(NUMERAL_TOK, &FOLLOW_NUMERAL_TOK_in_sortSymbol2117);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesortSymbolEx;
+        	        }
+
+
+        	         MATCHT(100, &FOLLOW_100_in_sortSymbol2119);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesortSymbolEx;
+        	        }
+
+
+        	        n2 = (pANTLR3_COMMON_TOKEN) MATCHT(NUMERAL_TOK, &FOLLOW_NUMERAL_TOK_in_sortSymbol2123);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesortSymbolEx;
+        	        }
+
+
+        	         MATCHT(104, &FOLLOW_104_in_sortSymbol2125);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesortSymbolEx;
+        	        }
+
+
+        	        {
+
+        	                    t= EXPR_MANAGER->mkArrayType(EXPR_MANAGER->mkBitVectorType(AntlrInput::tokenToUnsigned(n1)),
+        	                                                   EXPR_MANAGER->mkBitVectorType(AntlrInput::tokenToUnsigned(n2)));
+
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesortSymbolEx; /* Prevent compiler warnings */
+    rulesortSymbolEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return t;
+}
+/* $ANTLR end sortSymbol */
+
+/**
+ * $ANTLR start status
+ * ../../../../../../src/parser/smt1/Smt1.g:582:1: status[ CVC4::BenchmarkStatus& status ] : ( SAT_TOK | UNSAT_TOK | UNKNOWN_TOK );
+ */
+static void
+status(pSmt1Parser ctx, CVC4::BenchmarkStatus& status)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/smt1/Smt1.g:583:3: ( SAT_TOK | UNSAT_TOK | UNKNOWN_TOK )
+
+            ANTLR3_UINT32 alt25;
+
+            alt25=3;
+
+            switch ( LA(1) )
+            {
+            case SAT_TOK:
+            	{
+            		alt25=1;
+            	}
+                break;
+            case UNSAT_TOK:
+            	{
+            		alt25=2;
+            	}
+                break;
+            case UNKNOWN_TOK:
+            	{
+            		alt25=3;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 25;
+                EXCEPTION->state        = 0;
+
+
+                goto rulestatusEx;
+
+            }
+
+            switch (alt25)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:583:5: SAT_TOK
+        	    {
+        	         MATCHT(SAT_TOK, &FOLLOW_SAT_TOK_in_status2143);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestatusEx;
+        	        }
+
+
+        	        {
+        	             status= SMT_SATISFIABLE;    
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:584:5: UNSAT_TOK
+        	    {
+        	         MATCHT(UNSAT_TOK, &FOLLOW_UNSAT_TOK_in_status2157);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestatusEx;
+        	        }
+
+
+        	        {
+        	             status= SMT_UNSATISFIABLE;  
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:585:5: UNKNOWN_TOK
+        	    {
+        	         MATCHT(UNKNOWN_TOK, &FOLLOW_UNKNOWN_TOK_in_status2169);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestatusEx;
+        	        }
+
+
+        	        {
+        	             status= SMT_UNKNOWN;        
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulestatusEx; /* Prevent compiler warnings */
+    rulestatusEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end status */
+
+/**
+ * $ANTLR start annotation
+ * ../../../../../../src/parser/smt1/Smt1.g:592:1: annotation[CVC4::PtrCloser<CVC4::Command>* smt_command] : ( PATTERN_ANNOTATION_BEGIN annotatedFormulas[pats,pat] '}' | attribute[key] ( userValue[value] |) );
+ */
+static void
+annotation(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::string key, value;
+      std::vector<Expr> pats;
+      Expr pat;
+
+    {
+        {
+            //  ../../../../../../src/parser/smt1/Smt1.g:598:3: ( PATTERN_ANNOTATION_BEGIN annotatedFormulas[pats,pat] '}' | attribute[key] ( userValue[value] |) )
+
+            ANTLR3_UINT32 alt27;
+
+            alt27=2;
+
+            switch ( LA(1) )
+            {
+            case PATTERN_ANNOTATION_BEGIN:
+            	{
+            		alt27=1;
+            	}
+                break;
+            case ATTR_IDENTIFIER:
+            	{
+            		alt27=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 27;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleannotationEx;
+
+            }
+
+            switch (alt27)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:598:5: PATTERN_ANNOTATION_BEGIN annotatedFormulas[pats,pat] '}'
+        	    {
+        	         MATCHT(PATTERN_ANNOTATION_BEGIN, &FOLLOW_PATTERN_ANNOTATION_BEGIN_in_annotation2194);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotationEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->warning(":pat not supported here; ignored"); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_annotatedFormulas_in_annotation2206);
+        	        annotatedFormulas(ctx, pats, pat);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotationEx;
+        	        }
+
+
+        	         MATCHT(105, &FOLLOW_105_in_annotation2209);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotationEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:601:5: attribute[key] ( userValue[value] |)
+        	    {
+        	        FOLLOWPUSH(FOLLOW_attribute_in_annotation2215);
+        	        attribute(ctx, key);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleannotationEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt1/Smt1.g:602:5: ( userValue[value] |)
+        	        {
+        	            int alt26=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case USER_VALUE:
+        	            	{
+        	            		alt26=1;
+        	            	}
+        	                break;
+        	            case ASSUMPTION_TOK:
+        	            case ATTR_IDENTIFIER:
+        	            case EXTRAFUNS_TOK:
+        	            case EXTRAPREDS_TOK:
+        	            case EXTRASORTS_TOK:
+        	            case FORMULA_TOK:
+        	            case LOGIC_TOK:
+        	            case NOTES_TOK:
+        	            case PATTERN_ANNOTATION_BEGIN:
+        	            case RPAREN_TOK:
+        	            case STATUS_TOK:
+        	            	{
+        	            		alt26=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 26;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto ruleannotationEx;
+
+        	            }
+
+        	            switch (alt26)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt1/Smt1.g:602:7: userValue[value]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_userValue_in_annotation2224);
+        	        	        userValue(ctx, value);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleannotationEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             smt_command->reset(
+        	        	                        new SetInfoCommand(key.c_str() + 1, SExpr(value))); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/smt1/Smt1.g:605:7: 
+        	        	    {
+        	        	        {
+        	        	             smt_command->reset(
+        	        	                        new EmptyCommand(std::string("annotation: ") + key)); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleannotationEx; /* Prevent compiler warnings */
+    ruleannotationEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end annotation */
+
+/**
+ * $ANTLR start termAnnotation
+ * ../../../../../../src/parser/smt1/Smt1.g:614:1: termAnnotation[CVC4::Expr& expr] : ( PATTERN_ANNOTATION_BEGIN annotatedFormulas[pats,pat] '}' | ':pat' | attribute[key] ( userValue[value] )? );
+ */
+static void
+termAnnotation(pSmt1Parser ctx, CVC4::Expr& expr)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::string key, value;
+      std::vector<Expr> pats;
+      Expr pat;
+
+    {
+        {
+            //  ../../../../../../src/parser/smt1/Smt1.g:620:3: ( PATTERN_ANNOTATION_BEGIN annotatedFormulas[pats,pat] '}' | ':pat' | attribute[key] ( userValue[value] )? )
+
+            ANTLR3_UINT32 alt29;
+
+            alt29=3;
+
+            switch ( LA(1) )
+            {
+            case PATTERN_ANNOTATION_BEGIN:
+            	{
+            		alt29=1;
+            	}
+                break;
+            case 101:
+            	{
+            		alt29=2;
+            	}
+                break;
+            case ATTR_IDENTIFIER:
+            	{
+            		alt29=3;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 29;
+                EXCEPTION->state        = 0;
+
+
+                goto ruletermAnnotationEx;
+
+            }
+
+            switch (alt29)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:620:5: PATTERN_ANNOTATION_BEGIN annotatedFormulas[pats,pat] '}'
+        	    {
+        	         MATCHT(PATTERN_ANNOTATION_BEGIN, &FOLLOW_PATTERN_ANNOTATION_BEGIN_in_termAnnotation2268);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermAnnotationEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_annotatedFormulas_in_termAnnotation2270);
+        	        annotatedFormulas(ctx, pats, pat);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermAnnotationEx;
+        	        }
+
+
+        	         MATCHT(105, &FOLLOW_105_in_termAnnotation2273);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermAnnotationEx;
+        	        }
+
+
+        	        {
+        	             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");
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:637:5: ':pat'
+        	    {
+        	         MATCHT(101, &FOLLOW_101_in_termAnnotation2285);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermAnnotationEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->warning("expected an instantiation pattern after :pat"); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/smt1/Smt1.g:639:5: attribute[key] ( userValue[value] )?
+        	    {
+        	        FOLLOWPUSH(FOLLOW_attribute_in_termAnnotation2297);
+        	        attribute(ctx, key);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermAnnotationEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt1/Smt1.g:639:20: ( userValue[value] )?
+        	        {
+        	            int alt28=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case USER_VALUE:
+        	                	{
+        	                		alt28=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt28)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt1/Smt1.g:639:20: userValue[value]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_userValue_in_termAnnotation2300);
+        	        	        userValue(ctx, value);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermAnnotationEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        {
+        	             PARSER_STATE->attributeNotSupported(key); 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletermAnnotationEx; /* Prevent compiler warnings */
+    ruletermAnnotationEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end termAnnotation */
+
+/**
+ * $ANTLR start identifier
+ * ../../../../../../src/parser/smt1/Smt1.g:649:1: identifier[std::string& id,\n\t\t CVC4::parser::DeclarationCheck check,\n CVC4::parser::SymbolType type] : IDENTIFIER ;
+ */
+static void
+identifier(pSmt1Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, CVC4::parser::SymbolType type)
+{
+    pANTLR3_COMMON_TOKEN    IDENTIFIER6;
+
+    /* Initialize rule variables
+     */
+
+    IDENTIFIER6       = NULL;
+
+    {
+        // ../../../../../../src/parser/smt1/Smt1.g:652:3: ( IDENTIFIER )
+        // ../../../../../../src/parser/smt1/Smt1.g:652:5: IDENTIFIER
+        {
+            IDENTIFIER6 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_identifier2324);
+            if  (HASEXCEPTION())
+            {
+                goto ruleidentifierEx;
+            }
+
+
+            {
+                 id = AntlrInput::tokenText(IDENTIFIER6);
+                      Debug("parser") << "identifier: " << id
+                                      << " check? " << check
+                                      << " type? " << type << std::endl;
+                      PARSER_STATE->checkDeclaration(id, check, type); 
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleidentifierEx; /* Prevent compiler warnings */
+    ruleidentifierEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end identifier */
+
+/**
+ * $ANTLR start let_identifier
+ * ../../../../../../src/parser/smt1/Smt1.g:665:1: let_identifier[std::string& id,\n \t\t CVC4::parser::DeclarationCheck check] : LET_IDENTIFIER ;
+ */
+static void
+let_identifier(pSmt1Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check)
+{
+    pANTLR3_COMMON_TOKEN    LET_IDENTIFIER7;
+
+    /* Initialize rule variables
+     */
+
+    LET_IDENTIFIER7       = NULL;
+
+    {
+        // ../../../../../../src/parser/smt1/Smt1.g:667:3: ( LET_IDENTIFIER )
+        // ../../../../../../src/parser/smt1/Smt1.g:667:5: LET_IDENTIFIER
+        {
+            LET_IDENTIFIER7 = (pANTLR3_COMMON_TOKEN) MATCHT(LET_IDENTIFIER, &FOLLOW_LET_IDENTIFIER_in_let_identifier2346);
+            if  (HASEXCEPTION())
+            {
+                goto rulelet_identifierEx;
+            }
+
+
+            {
+                 id = AntlrInput::tokenText(LET_IDENTIFIER7);
+                      Debug("parser") << "let_identifier: " << id
+                                      << " check? " << check << std::endl;
+                      PARSER_STATE->checkDeclaration(id, check, SYM_VARIABLE); 
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulelet_identifierEx; /* Prevent compiler warnings */
+    rulelet_identifierEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end let_identifier */
+
+/**
+ * $ANTLR start flet_identifier
+ * ../../../../../../src/parser/smt1/Smt1.g:679:1: flet_identifier[std::string& id,\n \t\t CVC4::parser::DeclarationCheck check] : FLET_IDENTIFIER ;
+ */
+static void
+flet_identifier(pSmt1Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check)
+{
+    pANTLR3_COMMON_TOKEN    FLET_IDENTIFIER8;
+
+    /* Initialize rule variables
+     */
+
+    FLET_IDENTIFIER8       = NULL;
+
+    {
+        // ../../../../../../src/parser/smt1/Smt1.g:681:3: ( FLET_IDENTIFIER )
+        // ../../../../../../src/parser/smt1/Smt1.g:681:5: FLET_IDENTIFIER
+        {
+            FLET_IDENTIFIER8 = (pANTLR3_COMMON_TOKEN) MATCHT(FLET_IDENTIFIER, &FOLLOW_FLET_IDENTIFIER_in_flet_identifier2368);
+            if  (HASEXCEPTION())
+            {
+                goto ruleflet_identifierEx;
+            }
+
+
+            {
+                 id = AntlrInput::tokenText(FLET_IDENTIFIER8);
+                      Debug("parser") << "flet_identifier: " << id
+                                      << " check? " << check << std::endl;
+                      PARSER_STATE->checkDeclaration(id, check); 
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleflet_identifierEx; /* Prevent compiler warnings */
+    ruleflet_identifierEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end flet_identifier */
+
+/**
+ * $ANTLR start userValue
+ * ../../../../../../src/parser/smt1/Smt1.g:823:1: userValue[std::string& s] : USER_VALUE ;
+ */
+static void
+userValue(pSmt1Parser ctx, std::string& s)
+{
+    pANTLR3_COMMON_TOKEN    USER_VALUE9;
+
+    /* Initialize rule variables
+     */
+
+    USER_VALUE9       = NULL;
+
+    {
+        // ../../../../../../src/parser/smt1/Smt1.g:824:3: ( USER_VALUE )
+        // ../../../../../../src/parser/smt1/Smt1.g:824:5: USER_VALUE
+        {
+            USER_VALUE9 = (pANTLR3_COMMON_TOKEN) MATCHT(USER_VALUE, &FOLLOW_USER_VALUE_in_userValue3616);
+            if  (HASEXCEPTION())
+            {
+                goto ruleuserValueEx;
+            }
+
+
+            {
+                 s = AntlrInput::tokenText(USER_VALUE9);
+                      assert(*s.begin() == '{');
+                      assert(*s.rbegin() == '}');
+                      // trim whitespace
+                      s.erase(s.begin(), s.begin() + 1);
+                      s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun<int, int>(std::isspace))));
+                      s.erase(s.end() - 1);
+                      s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::ptr_fun<int, int>(std::isspace))).base(), s.end());
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleuserValueEx; /* Prevent compiler warnings */
+    ruleuserValueEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end userValue */
+/* End of parsing rules
+ * ==============================================
+ */
+
+/* ==============================================
+ * Syntactic predicates
+ */
+/* End of syntactic predicates
+ * ==============================================
+ */
+
+
+
+
+
+
+/* End of code
+ * =============================================================================
+ */
diff --git a/src/parser/smt1/Smt1Parser.h b/src/parser/smt1/Smt1Parser.h
new file mode 100644
index 0000000..d266e93
--- /dev/null
+++ b/src/parser/smt1/Smt1Parser.h
@@ -0,0 +1,489 @@
+/** \file
+ *  This C header file was generated by $ANTLR version 3.4
+ *
+ *     -  From the grammar source file : ../../../../../../src/parser/smt1/Smt1.g
+ *     -                            On : 2017-03-16 01:03:01
+ *     -                for the parser : Smt1ParserParser
+ *
+ * Editing it, at least manually, is not wise.
+ *
+ * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws.
+ *
+ *
+ * The parser 
+Smt1Parser
+
+has the callable functions (rules) shown below,
+ * which will invoke the code for the associated rule in the source grammar
+ * assuming that the input stream is pointing to a token/text stream that could begin
+ * this rule.
+ *
+ * For instance if you call the first (topmost) rule in a parser grammar, you will
+ * get the results of a full parse, but calling a rule half way through the grammar will
+ * allow you to pass part of a full token stream to the parser, such as for syntax checking
+ * in editors and so on.
+ *
+ * The parser entry points are called indirectly (by function pointer to function) via
+ * a parser context typedef pSmt1Parser, which is returned from a call to Smt1ParserNew().
+ *
+ * The methods in pSmt1Parser are  as follows:
+ *
+ *  - 
+ CVC4::parser::smt1::myExpr
+      pSmt1Parser->parseExpr(pSmt1Parser)
+ *  - 
+ CVC4::Command*
+      pSmt1Parser->parseCommand(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->benchmark(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->benchAttributes(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->benchAttribute(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->annotatedFormula(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->annotatedFormulas(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->builtinOp(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->parameterizedOperator(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->bitVectorOperator(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->predicateName(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->functionName(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->functionSymbol(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->attribute(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->functionDeclaration(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->predicateDeclaration(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->sortDeclaration(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->sortList(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->sortName(pSmt1Parser)
+ *  - 
+ CVC4::parser::smt1::myType
+      pSmt1Parser->sortSymbol(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->status(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->annotation(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->termAnnotation(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->identifier(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->let_identifier(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->flet_identifier(pSmt1Parser)
+ *  - 
+ void
+      pSmt1Parser->userValue(pSmt1Parser)
+ *
+ * The return type for any particular rule is of course determined by the source
+ * grammar file.
+ */
+// [The "BSD license"]
+// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
+// http://www.temporal-wave.com
+// http://www.linkedin.com/in/jimidle
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+// 3. The name of the author may not be used to endorse or promote products
+//    derived from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef	_Smt1Parser_H
+#define _Smt1Parser_H
+/* =============================================================================
+ * Standard antlr3 C runtime definitions
+ */
+#include    <antlr3.h>
+
+/* End of standard antlr 3 runtime definitions
+ * =============================================================================
+ */
+
+
+// This should come immediately after #include <antlr3.h> in the generated
+// files. See the documentation in "parser/antlr_undefines.h" for more details.
+#include "parser/antlr_undefines.h"
+
+#include <stdint.h>
+
+#include "base/ptr_closer.h"
+#include "smt/command.h"
+#include "parser/parser.h"
+#include "parser/antlr_tracing.h"
+
+namespace CVC4 {
+  class Expr;
+
+  namespace parser {
+    namespace smt1 {
+      /**
+       * Just exists to provide the uintptr_t constructor that ANTLR
+       * requires.
+       */
+      struct myExpr : public CVC4::Expr {
+        myExpr() : CVC4::Expr() {}
+        myExpr(void*) : CVC4::Expr() {}
+        myExpr(const Expr& e) : CVC4::Expr(e) {}
+        myExpr(const myExpr& e) : CVC4::Expr(e) {}
+      };/* struct myExpr */
+
+      /**
+       * Just exists to provide the uintptr_t constructor that ANTLR
+       * requires.
+       */
+      struct myType : public CVC4::Type {
+        myType() : CVC4::Type() {}
+        myType(void*) : CVC4::Type() {}
+        myType(const Type& t) : CVC4::Type(t) {}
+        myType(const myType& t) : CVC4::Type(t) {}
+      };/* struct myType */
+    }/* CVC4::parser::smt1 namespace */
+  }/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Forward declare the context typedef so that we can use it before it is
+// properly defined. Delegators and delegates (from import statements) are
+// interdependent and their context structures contain pointers to each other
+// C only allows such things to be declared if you pre-declare the typedef.
+//
+typedef struct Smt1Parser_Ctx_struct Smt1Parser, * pSmt1Parser;
+
+
+
+/**
+ ** This file is part of CVC4.
+ ** Copyright (c) 2009-2014  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.
+ **/
+
+
+#ifdef	ANTLR3_WINDOWS
+// Disable: Unreferenced parameter,							- Rules with parameters that are not used
+//          constant conditional,							- ANTLR realizes that a prediction is always true (synpred usually)
+//          initialized but unused variable					- tree rewrite variables declared but not needed
+//          Unreferenced local variable						- lexer rule declares but does not always use _type
+//          potentially unitialized variable used			- retval always returned from a rule
+//			unreferenced local function has been removed	- susually getTokenNames or freeScope, they can go without warnigns
+//
+// These are only really displayed at warning level /W4 but that is the code ideal I am aiming at
+// and the codegen must generate some of these warnings by necessity, apart from 4100, which is
+// usually generated when a parser rule is given a parameter that it does not use. Mostly though
+// this is a matter of orthogonality hence I disable that one.
+//
+#pragma warning( disable : 4100 )
+#pragma warning( disable : 4101 )
+#pragma warning( disable : 4127 )
+#pragma warning( disable : 4189 )
+#pragma warning( disable : 4505 )
+#pragma warning( disable : 4701 )
+#endif
+
+/** Context tracking structure for 
+Smt1Parser
+
+ */
+struct Smt1Parser_Ctx_struct
+{
+    /** Built in ANTLR3 context tracker contains all the generic elements
+     *  required for context tracking.
+     */
+    pANTLR3_PARSER   pParser;
+
+     CVC4::parser::smt1::myExpr
+     (*parseExpr)	(struct Smt1Parser_Ctx_struct * ctx);
+
+     CVC4::Command*
+     (*parseCommand)	(struct Smt1Parser_Ctx_struct * ctx);
+
+     void
+     (*benchmark)	(struct Smt1Parser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+
+     void
+     (*benchAttributes)	(struct Smt1Parser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+
+     void
+     (*benchAttribute)	(struct Smt1Parser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::Command>* smt_command);
+
+     void
+     (*annotatedFormula)	(struct Smt1Parser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*annotatedFormulas)	(struct Smt1Parser_Ctx_struct * ctx, std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr);
+
+     void
+     (*builtinOp)	(struct Smt1Parser_Ctx_struct * ctx, CVC4::Kind& kind);
+
+     void
+     (*parameterizedOperator)	(struct Smt1Parser_Ctx_struct * ctx, CVC4::Expr& op);
+
+     void
+     (*bitVectorOperator)	(struct Smt1Parser_Ctx_struct * ctx, CVC4::Expr& op);
+
+     void
+     (*predicateName)	(struct Smt1Parser_Ctx_struct * ctx, std::string& name, CVC4::parser::DeclarationCheck check);
+
+     void
+     (*functionName)	(struct Smt1Parser_Ctx_struct * ctx, std::string& name, CVC4::parser::DeclarationCheck check);
+
+     void
+     (*functionSymbol)	(struct Smt1Parser_Ctx_struct * ctx, CVC4::Expr& fun);
+
+     void
+     (*attribute)	(struct Smt1Parser_Ctx_struct * ctx, std::string& s);
+
+     void
+     (*functionDeclaration)	(struct Smt1Parser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::Command>* smt_command);
+
+     void
+     (*predicateDeclaration)	(struct Smt1Parser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::Command>* smt_command);
+
+     void
+     (*sortDeclaration)	(struct Smt1Parser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::Command>* smt_command);
+
+     void
+     (*sortList)	(struct Smt1Parser_Ctx_struct * ctx, std::vector<CVC4::Type>& sorts);
+
+     void
+     (*sortName)	(struct Smt1Parser_Ctx_struct * ctx, std::string& name, CVC4::parser::DeclarationCheck check);
+
+     CVC4::parser::smt1::myType
+     (*sortSymbol)	(struct Smt1Parser_Ctx_struct * ctx);
+
+     void
+     (*status)	(struct Smt1Parser_Ctx_struct * ctx, CVC4::BenchmarkStatus& status);
+
+     void
+     (*annotation)	(struct Smt1Parser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::Command>* smt_command);
+
+     void
+     (*termAnnotation)	(struct Smt1Parser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*identifier)	(struct Smt1Parser_Ctx_struct * ctx, std::string& id, CVC4::parser::DeclarationCheck check, CVC4::parser::SymbolType type);
+
+     void
+     (*let_identifier)	(struct Smt1Parser_Ctx_struct * ctx, std::string& id, CVC4::parser::DeclarationCheck check);
+
+     void
+     (*flet_identifier)	(struct Smt1Parser_Ctx_struct * ctx, std::string& id, CVC4::parser::DeclarationCheck check);
+
+     void
+     (*userValue)	(struct Smt1Parser_Ctx_struct * ctx, std::string& s);
+    // Delegated rules
+
+    const char * (*getGrammarFileName)();
+    void            (*reset)  (struct Smt1Parser_Ctx_struct * ctx);
+    void	    (*free)   (struct Smt1Parser_Ctx_struct * ctx);
+};
+
+// Function protoypes for the constructor functions that external translation units
+// such as delegators and delegates may wish to call.
+//
+ANTLR3_API pSmt1Parser Smt1ParserNew         (
+pANTLR3_COMMON_TOKEN_STREAM
+ instream);
+ANTLR3_API pSmt1Parser Smt1ParserNewSSD      (
+pANTLR3_COMMON_TOKEN_STREAM
+ instream, pANTLR3_RECOGNIZER_SHARED_STATE state);
+
+/** Symbolic definitions of all the tokens that the 
+parser
+ will work with.
+ * \{
+ *
+ * Antlr will define EOF, but we can't use that as it it is too common in
+ * in C header files and that would be confusing. There is no way to filter this out at the moment
+ * so we just undef it here for now. That isn't the value we get back from C recognizers
+ * anyway. We are looking for ANTLR3_TOKEN_EOF.
+ */
+#ifdef	EOF
+#undef	EOF
+#endif
+#ifdef	Tokens
+#undef	Tokens
+#endif
+#define EOF      -1
+#define T__100      100
+#define T__101      101
+#define T__102      102
+#define T__103      103
+#define T__104      104
+#define T__105      105
+#define ALPHA      4
+#define AMPERSAND_TOK      5
+#define AND_TOK      6
+#define ASSUMPTION_TOK      7
+#define ATTR_IDENTIFIER      8
+#define AT_TOK      9
+#define BENCHMARK_TOK      10
+#define BITVECTOR1_BV_CONST      11
+#define BITVECTOR_BV_CONST      12
+#define BITVECTOR_TOK      13
+#define BVADD_TOK      14
+#define BVAND_TOK      15
+#define BVASHR_TOK      16
+#define BVCOMP_TOK      17
+#define BVLSHR_TOK      18
+#define BVMUL_TOK      19
+#define BVNAND_TOK      20
+#define BVNEG_TOK      21
+#define BVNOR_TOK      22
+#define BVNOT_TOK      23
+#define BVOR_TOK      24
+#define BVSDIV_TOK      25
+#define BVSGE_TOK      26
+#define BVSGT_TOK      27
+#define BVSHL_TOK      28
+#define BVSLE_TOK      29
+#define BVSLT_TOK      30
+#define BVSMOD_TOK      31
+#define BVSREM_TOK      32
+#define BVSUB_TOK      33
+#define BVUDIV_TOK      34
+#define BVUGE_TOK      35
+#define BVUGT_TOK      36
+#define BVULE_TOK      37
+#define BVULT_TOK      38
+#define BVUREM_TOK      39
+#define BVXNOR_TOK      40
+#define BVXOR_TOK      41
+#define COMMENT      42
+#define CONCAT_TOK      43
+#define DIGIT      44
+#define DISTINCT_TOK      45
+#define DIV_TOK      46
+#define EQUAL_TOK      47
+#define ESCAPE      48
+#define EXISTS_TOK      49
+#define EXTRACT_TOK      50
+#define EXTRAFUNS_TOK      51
+#define EXTRAPREDS_TOK      52
+#define EXTRASORTS_TOK      53
+#define FALSE_TOK      54
+#define FLET_IDENTIFIER      55
+#define FLET_TOK      56
+#define FORALL_TOK      57
+#define FORMULA_TOK      58
+#define GREATER_THAN_TOK      59
+#define IDENTIFIER      60
+#define IFF_TOK      61
+#define IMPLIES_TOK      62
+#define ITE_TOK      63
+#define LESS_THAN_TOK      64
+#define LET_IDENTIFIER      65
+#define LET_TOK      66
+#define LOGIC_TOK      67
+#define LPAREN_TOK      68
+#define MINUS_TOK      69
+#define NOTES_TOK      70
+#define NOT_TOK      71
+#define NUMERAL_TOK      72
+#define OR_TOK      73
+#define PATTERN_ANNOTATION_BEGIN      74
+#define PERCENT_TOK      75
+#define PIPE_TOK      76
+#define PLUS_TOK      77
+#define POUND_TOK      78
+#define RATIONAL_TOK      79
+#define REPEAT_TOK      80
+#define ROTATE_LEFT_TOK      81
+#define ROTATE_RIGHT_TOK      82
+#define RPAREN_TOK      83
+#define SAT_TOK      84
+#define SELECT_TOK      85
+#define SIGN_EXTEND_TOK      86
+#define STAR_TOK      87
+#define STATUS_TOK      88
+#define STORE_TOK      89
+#define STRING_LITERAL      90
+#define THEORY_TOK      91
+#define TILDE_TOK      92
+#define TRUE_TOK      93
+#define UNKNOWN_TOK      94
+#define UNSAT_TOK      95
+#define USER_VALUE      96
+#define WHITESPACE      97
+#define XOR_TOK      98
+#define ZERO_EXTEND_TOK      99
+#ifdef	EOF
+#undef	EOF
+#define	EOF	ANTLR3_TOKEN_EOF
+#endif
+
+#ifndef TOKENSOURCE
+#define TOKENSOURCE(lxr) lxr->pLexer->rec->state->tokSource
+#endif
+
+/* End of token definitions for Smt1Parser
+ * =============================================================================
+ */
+/** } */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* END - Note:Keep extra line feed to satisfy UNIX systems */
diff --git a/src/parser/smt1/smt1.cpp b/src/parser/smt1/smt1.cpp
new file mode 100644
index 0000000..c8d1b77
--- /dev/null
+++ b/src/parser/smt1/smt1.cpp
@@ -0,0 +1,338 @@
+/*********************                                                        */
+/*! \file smt1.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Christopher L. Conway, Clark Barrett
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** Definitions of SMT-LIB (v1) constants.
+ **/
+
+#include <ext/hash_map>
+namespace std {
+  using namespace __gnu_cxx;
+}
+
+#include "expr/type.h"
+#include "smt/command.h"
+#include "parser/parser.h"
+#include "parser/smt1/smt1.h"
+
+namespace CVC4 {
+namespace parser {
+
+std::hash_map<const std::string, Smt1::Logic, CVC4::StringHashFunction> Smt1::newLogicMap() {
+  std::hash_map<const std::string, Smt1::Logic, CVC4::StringHashFunction> logicMap;
+  logicMap["AUFLIA"] = AUFLIA;
+  logicMap["AUFLIRA"] = AUFLIRA;
+  logicMap["AUFNIRA"] = AUFNIRA;
+  logicMap["LRA"] = LRA;
+  logicMap["QF_AX"] = QF_AX;
+  logicMap["QF_BV"] = QF_BV;
+  logicMap["QF_IDL"] = QF_IDL;
+  logicMap["QF_LIA"] = QF_LIA;
+  logicMap["QF_LRA"] = QF_LRA;
+  logicMap["QF_NIA"] = QF_NIA;
+  logicMap["QF_NRA"] = QF_NRA;
+  logicMap["QF_RDL"] = QF_RDL;
+  logicMap["QF_S"] = QF_S;
+  logicMap["QF_SAT"] = QF_SAT;
+  logicMap["QF_UF"] = QF_UF;
+  logicMap["QF_UFIDL"] = QF_UFIDL;
+  logicMap["QF_UFBV"] = QF_UFBV;
+  logicMap["QF_UFLRA"] = QF_UFLRA;
+  logicMap["QF_UFLIA"] = QF_UFLIA;
+  logicMap["QF_UFLIRA"] = QF_UFLIRA;
+  logicMap["QF_UFNIA"] = QF_UFNIA;
+  logicMap["QF_UFNIRA"] = QF_UFNIRA;
+  logicMap["QF_UFNRA"] = QF_UFNRA;
+  logicMap["QF_ABV"] = QF_ABV;
+  logicMap["QF_AUFBV"] = QF_AUFBV;
+  logicMap["QF_AUFBVLIA"] = QF_AUFBVLIA;
+  logicMap["QF_AUFBVLRA"] = QF_AUFBVLRA;
+  logicMap["QF_UFNIRA"] = QF_UFNIRA;
+  logicMap["QF_AUFLIA"] = QF_AUFLIA;
+  logicMap["QF_AUFLIRA"] = QF_AUFLIRA;
+  logicMap["UFNIA"] = UFNIA;
+  logicMap["UFNIRA"] = UFNIRA;
+  logicMap["UFLRA"] = UFLRA;
+  logicMap["QF_ALL_SUPPORTED"] = QF_ALL_SUPPORTED;
+  logicMap["ALL_SUPPORTED"] = ALL_SUPPORTED;
+  logicMap["QF_ALL"] = QF_ALL_SUPPORTED;
+  logicMap["ALL"] = ALL_SUPPORTED;
+  return logicMap;
+}
+
+Smt1::Logic Smt1::toLogic(const std::string& name) {
+  static std::hash_map<const std::string, Smt1::Logic, CVC4::StringHashFunction> logicMap = newLogicMap();
+  return logicMap[name];
+}
+
+Smt1::Smt1(ExprManager* exprManager, Input* input, bool strictMode, bool parseOnly) :
+  Parser(exprManager,input,strictMode,parseOnly),
+  d_logicSet(false) {
+
+  // Boolean symbols are always defined
+  addOperator(kind::AND);
+  addOperator(kind::EQUAL);
+  addOperator(kind::IMPLIES);
+  addOperator(kind::ITE);
+  addOperator(kind::NOT);
+  addOperator(kind::OR);
+  addOperator(kind::XOR);
+
+}
+
+void Smt1::addArithmeticOperators() {
+  addOperator(kind::PLUS);
+  addOperator(kind::MINUS);
+  addOperator(kind::UMINUS);
+  addOperator(kind::MULT);
+  addOperator(kind::LT);
+  addOperator(kind::LEQ);
+  addOperator(kind::GT);
+  addOperator(kind::GEQ);
+}
+
+void Smt1::addTheory(Theory theory) {
+  switch(theory) {
+  case THEORY_ARRAYS:
+  case THEORY_ARRAYS_EX: {
+    Type indexType = mkSort("Index");
+    Type elementType = mkSort("Element");
+    DeclarationSequence* seq = new DeclarationSequence();
+    seq->addCommand(new DeclareTypeCommand("Index", 0, indexType));
+    seq->addCommand(new DeclareTypeCommand("Element", 0, elementType));
+    preemptCommand(seq);
+
+    defineType("Array", getExprManager()->mkArrayType(indexType, elementType));
+
+    addOperator(kind::SELECT);
+    addOperator(kind::STORE);
+    break;
+  }
+
+  case THEORY_BITVECTOR_ARRAYS_EX: {
+    // We don't define the "Array" symbol in this case;
+    // the parser creates the Array[m:n] types on the fly.
+    addOperator(kind::SELECT);
+    addOperator(kind::STORE);
+    break;
+  }
+
+  case THEORY_INT_INT_REAL_ARRAY_ARRAYS_EX: {
+    defineType("Array1", getExprManager()->mkArrayType(getSort("Int"), getSort("Real")));
+    defineType("Array2", getExprManager()->mkArrayType(getSort("Int"), getSort("Array1")));
+    addOperator(kind::SELECT);
+    addOperator(kind::STORE);
+    break;
+  }
+
+  case THEORY_INT_ARRAYS:
+  case THEORY_INT_ARRAYS_EX: {
+    defineType("Array", getExprManager()->mkArrayType(getExprManager()->integerType(), getExprManager()->integerType()));
+    addOperator(kind::SELECT);
+    addOperator(kind::STORE);
+    break;
+  }
+
+  case THEORY_EMPTY: {
+    Type sort = mkSort("U");
+    preemptCommand(new DeclareTypeCommand("U", 0, sort));
+    break;
+  }
+
+  case THEORY_REALS_INTS:
+    defineType("Real", getExprManager()->realType());
+    // falling-through on purpose, to add Ints part of RealsInts
+
+  case THEORY_INTS:
+    defineType("Int", getExprManager()->integerType());
+    addArithmeticOperators();
+    break;
+
+  case THEORY_REALS:
+    defineType("Real", getExprManager()->realType());
+    addArithmeticOperators();
+    break;
+
+  case THEORY_BITVECTORS:
+    break;
+
+  case THEORY_QUANTIFIERS:
+    break;
+
+  default:
+    std::stringstream ss;
+    ss << "internal error: unsupported theory " << theory;
+    throw ParserException(ss.str());
+  }
+}
+
+bool Smt1::logicIsSet() {
+  return d_logicSet;
+}
+
+void Smt1::setLogic(const std::string& name) {
+  d_logicSet = true;
+  if(logicIsForced()) {
+    d_logic = toLogic(getForcedLogic());
+  } else {
+    d_logic = toLogic(name);
+  }
+
+  switch(d_logic) {
+  case QF_S:
+    throw ParserException("Strings theory unsupported in SMT-LIBv1 front-end; try SMT-LIBv2.");
+    break;
+
+  case QF_AX:
+    addTheory(THEORY_ARRAYS_EX);
+    break;
+
+  case QF_IDL:
+  case QF_LIA:
+  case QF_NIA:
+    addTheory(THEORY_INTS);
+    break;
+
+  case QF_RDL:
+  case QF_LRA:
+  case QF_NRA:
+    addTheory(THEORY_REALS);
+    break;
+
+  case QF_SAT:
+    /* no extra symbols needed */
+    break;
+
+  case QF_UFIDL:
+  case QF_UFLIA:
+  case QF_UFNIA:// nonstandard logic
+    addTheory(THEORY_INTS);
+    addOperator(kind::APPLY_UF);
+    break;
+
+  case QF_UFLRA:
+  case QF_UFNRA:
+    addTheory(THEORY_REALS);
+    addOperator(kind::APPLY_UF);
+    break;
+
+  case QF_UFLIRA:// nonstandard logic
+  case QF_UFNIRA:// nonstandard logic
+    addTheory(THEORY_INTS);
+    addTheory(THEORY_REALS);
+    addOperator(kind::APPLY_UF);
+    break;
+
+  case QF_UF:
+    addTheory(THEORY_EMPTY);
+    addOperator(kind::APPLY_UF);
+    break;
+
+  case QF_BV:
+    addTheory(THEORY_BITVECTORS);
+    break;
+
+  case QF_ABV:// nonstandard logic
+    addTheory(THEORY_BITVECTOR_ARRAYS_EX);
+    addTheory(THEORY_BITVECTORS);
+    break;
+
+  case QF_UFBV:
+    addOperator(kind::APPLY_UF);
+    addTheory(THEORY_BITVECTORS);
+    break;
+
+  case QF_AUFBV:
+    addOperator(kind::APPLY_UF);
+    addTheory(THEORY_BITVECTOR_ARRAYS_EX);
+    addTheory(THEORY_BITVECTORS);
+    break;
+
+  case QF_AUFBVLIA:// nonstandard logic
+    addOperator(kind::APPLY_UF);
+    addTheory(THEORY_ARRAYS_EX);
+    addTheory(THEORY_BITVECTORS);
+    addTheory(THEORY_INTS);
+    break;
+
+  case QF_AUFBVLRA:// nonstandard logic
+    addOperator(kind::APPLY_UF);
+    addTheory(THEORY_ARRAYS_EX);
+    addTheory(THEORY_BITVECTORS);
+    addTheory(THEORY_REALS);
+    break;
+
+  case QF_AUFLIA:
+    addTheory(THEORY_INT_ARRAYS_EX);// nonstandard logic
+    addOperator(kind::APPLY_UF);
+    addTheory(THEORY_INTS);
+    break;
+
+  case QF_AUFLIRA:// nonstandard logic
+    addTheory(THEORY_INT_INT_REAL_ARRAY_ARRAYS_EX);
+    addOperator(kind::APPLY_UF);
+    addTheory(THEORY_INTS);
+    addTheory(THEORY_REALS);
+    break;
+
+  case ALL_SUPPORTED:// nonstandard logic
+    addTheory(THEORY_QUANTIFIERS);
+    /* fall through */
+  case QF_ALL_SUPPORTED:// nonstandard logic
+    addTheory(THEORY_ARRAYS_EX);
+    addOperator(kind::APPLY_UF);
+    addTheory(THEORY_INTS);
+    addTheory(THEORY_REALS);
+    addTheory(THEORY_BITVECTORS);
+    break;
+
+  case AUFLIA:
+    addOperator(kind::APPLY_UF);
+    addTheory(THEORY_INTS);
+    addTheory(THEORY_INT_ARRAYS_EX);
+    addTheory(THEORY_QUANTIFIERS);
+    break;
+
+  case AUFLIRA:
+  case AUFNIRA:
+    addOperator(kind::APPLY_UF);
+    addTheory(THEORY_INTS);
+    addTheory(THEORY_REALS);
+    addTheory(THEORY_INT_INT_REAL_ARRAY_ARRAYS_EX);
+    addTheory(THEORY_QUANTIFIERS);
+    break;
+
+  case LRA:
+    addTheory(THEORY_REALS);
+    addTheory(THEORY_QUANTIFIERS);
+    break;
+
+  case UFNIA:
+    addOperator(kind::APPLY_UF);
+    addTheory(THEORY_INTS);
+    addTheory(THEORY_QUANTIFIERS);
+    break;
+  case UFNIRA:
+    addOperator(kind::APPLY_UF);
+    addTheory(THEORY_INTS);
+    addTheory(THEORY_REALS);
+    addTheory(THEORY_QUANTIFIERS);
+    break;
+
+  case UFLRA:
+    addOperator(kind::APPLY_UF);
+    addTheory(THEORY_REALS);
+    addTheory(THEORY_QUANTIFIERS);
+    break;
+  }
+}/* Smt1::setLogic() */
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
diff --git a/src/parser/smt1/smt1.h b/src/parser/smt1/smt1.h
new file mode 100644
index 0000000..45de222
--- /dev/null
+++ b/src/parser/smt1/smt1.h
@@ -0,0 +1,126 @@
+/*********************                                                        */
+/*! \file smt1.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** Definitions of SMT constants.
+ **/
+
+#include "cvc4parser_private.h"
+
+#ifndef __CVC4__PARSER__SMT1_H
+#define __CVC4__PARSER__SMT1_H
+
+#include <ext/hash_map>
+namespace std { using namespace __gnu_cxx; }
+
+#include "util/hash.h"
+#include "parser/parser.h"
+
+namespace CVC4 {
+
+class SExpr;
+
+namespace parser {
+
+class Smt1 : public Parser {
+  friend class ParserBuilder;
+
+public:
+  enum Logic {
+    AUFLIA, // +p and -p?
+    AUFLIRA,
+    AUFNIRA,
+    LRA,
+    QF_ABV,
+    QF_AUFBV,
+    QF_AUFBVLIA,
+    QF_AUFBVLRA,
+    QF_AUFLIA,
+    QF_AUFLIRA,
+    QF_AX,
+    QF_BV,
+    QF_IDL,
+    QF_LIA,
+    QF_LRA,
+    QF_NIA,
+    QF_NRA,
+    QF_RDL,
+    QF_S, // nonstandard (for string theory)
+    QF_SAT,
+    QF_UF,
+    QF_UFIDL,
+    QF_UFBV,
+    QF_UFLIA,
+    QF_UFNIA, // nonstandard
+    QF_UFLRA,
+    QF_UFLIRA, // nonstandard
+    QF_UFNIRA, // nonstandard
+    QF_UFNRA,
+    UFLRA,
+    UFNIRA, // nonstandard
+    UFNIA,
+    QF_ALL_SUPPORTED, // nonstandard
+    ALL_SUPPORTED // nonstandard
+  };
+
+  enum Theory {
+    THEORY_ARRAYS,
+    THEORY_ARRAYS_EX,
+    THEORY_BITVECTORS,
+    THEORY_BITVECTORS_32,
+    THEORY_BITVECTOR_ARRAYS_EX,
+    THEORY_EMPTY,
+    THEORY_INTS,
+    THEORY_INT_ARRAYS,
+    THEORY_INT_ARRAYS_EX,
+    THEORY_INT_INT_REAL_ARRAY_ARRAYS_EX,
+    THEORY_REALS,
+    THEORY_REALS_INTS,
+    THEORY_STRINGS,
+    THEORY_QUANTIFIERS,
+    THEORY_CARDINALITY_CONSTRAINT
+  };
+
+private:
+  bool d_logicSet;
+  Logic d_logic;
+
+protected:
+  Smt1(ExprManager* exprManager, Input* input, bool strictMode = false, bool parseOnly = false);
+
+public:
+  /**
+   * Add theory symbols to the parser state.
+   *
+   * @param theory the theory to open (e.g., Core, Ints)
+   */
+  void addTheory(Theory theory);
+
+  bool logicIsSet();
+
+  /**
+   * Sets the logic for the current benchmark. Declares any logic and theory symbols.
+   *
+   * @param name the name of the logic (e.g., QF_UF, AUFLIA)
+   */
+  void setLogic(const std::string& name);
+
+  static Logic toLogic(const std::string& name);
+
+private:
+
+  void addArithmeticOperators();
+  static std::hash_map<const std::string, Logic, CVC4::StringHashFunction> newLogicMap();
+};/* class Smt1 */
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PARSER__SMT1_H */
diff --git a/src/parser/smt1/smt1_input.cpp b/src/parser/smt1/smt1_input.cpp
new file mode 100644
index 0000000..69801e8
--- /dev/null
+++ b/src/parser/smt1/smt1_input.cpp
@@ -0,0 +1,73 @@
+/*********************                                                        */
+/*! \file smt1_input.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add file-specific comments here ]].
+ **
+ ** [[ Add file-specific comments here ]]
+ **/
+
+// These headers must be the first two included.
+// See the documentation in "parser/antlr_undefines.h" for more details.
+#include <antlr3.h>
+#include "parser/antlr_undefines.h"
+
+#include "parser/smt1/smt1_input.h"
+
+#include "expr/expr_manager.h"
+#include "parser/input.h"
+#include "parser/parser.h"
+#include "parser/parser_exception.h"
+#include "parser/smt1/Smt1Lexer.h"
+#include "parser/smt1/Smt1Parser.h"
+
+namespace CVC4 {
+namespace parser {
+
+/* Use lookahead=2 */
+Smt1Input::Smt1Input(AntlrInputStream& inputStream) :
+  AntlrInput(inputStream, 2) {
+  pANTLR3_INPUT_STREAM input = inputStream.getAntlr3InputStream();
+  assert( input != NULL );
+
+  d_pSmt1Lexer = Smt1LexerNew(input);
+  if( d_pSmt1Lexer == NULL ) {
+    throw ParserException("Failed to create SMT lexer.");
+  }
+
+  setAntlr3Lexer( d_pSmt1Lexer->pLexer );
+
+  pANTLR3_COMMON_TOKEN_STREAM tokenStream = getTokenStream();
+  assert( tokenStream != NULL );
+
+  d_pSmt1Parser = Smt1ParserNew(tokenStream);
+  if( d_pSmt1Parser == NULL ) {
+    throw ParserException("Failed to create SMT parser.");
+  }
+
+  setAntlr3Parser(d_pSmt1Parser->pParser);
+}
+
+
+Smt1Input::~Smt1Input() {
+  d_pSmt1Lexer->free(d_pSmt1Lexer);
+  d_pSmt1Parser->free(d_pSmt1Parser);
+}
+
+Command* Smt1Input::parseCommand() {
+  return d_pSmt1Parser->parseCommand(d_pSmt1Parser);
+}
+
+Expr Smt1Input::parseExpr() {
+  return d_pSmt1Parser->parseExpr(d_pSmt1Parser);
+}
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
diff --git a/src/parser/smt1/smt1_input.h b/src/parser/smt1/smt1_input.h
new file mode 100644
index 0000000..0e719f5
--- /dev/null
+++ b/src/parser/smt1/smt1_input.h
@@ -0,0 +1,92 @@
+/*********************                                                        */
+/*! \file smt1_input.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add file-specific comments here ]].
+ **
+ ** [[ Add file-specific comments here ]]
+ **/
+
+#include "cvc4parser_private.h"
+
+#ifndef __CVC4__PARSER__SMT1_INPUT_H
+#define __CVC4__PARSER__SMT1_INPUT_H
+
+#include "parser/antlr_input.h"
+#include "parser/smt1/Smt1Lexer.h"
+#include "parser/smt1/Smt1Parser.h"
+
+// extern void Smt1ParserSetAntlrParser(CVC4::parser::AntlrParser* newAntlrParser);
+
+namespace CVC4 {
+
+class Command;
+class Expr;
+class ExprManager;
+
+namespace parser {
+
+class Smt1Input : public AntlrInput {
+
+  /** The ANTLR3 SMT lexer for the input. */
+  pSmt1Lexer d_pSmt1Lexer;
+
+  /** The ANTLR3 CVC parser for the input. */
+  pSmt1Parser d_pSmt1Parser;
+
+public:
+
+  /**
+   * Create an input.
+   *
+   * @param inputStream the input stream to use
+   */
+  Smt1Input(AntlrInputStream& inputStream);
+
+  /** Destructor. Frees the lexer and the parser. */
+  virtual ~Smt1Input();
+
+  /** Get the language that this Input is reading. */
+  InputLanguage getLanguage() const throw() {
+    return language::input::LANG_SMTLIB_V1;
+  }
+
+protected:
+
+  /**
+   * Parse a command from the input. Returns <code>NULL</code> if
+   * there is no command there to parse.
+   *
+   * @throws ParserException if an error is encountered during parsing.
+   */
+  Command* parseCommand();
+
+  /**
+   * Parse an expression from the input. Returns a null
+   * <code>Expr</code> if there is no expression there to parse.
+   *
+   * @throws ParserException if an error is encountered during parsing.
+   */
+  Expr parseExpr();
+
+private:
+
+  /**
+   * Initialize the class. Called from the constructors once the input
+   * stream is initialized.
+   */
+  void init();
+
+};/* class Smt1Input */
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PARSER__SMT1_INPUT_H */
diff --git a/src/parser/smt1/stamp-generated b/src/parser/smt1/stamp-generated
new file mode 100644
index 0000000..e69de29
diff --git a/src/parser/smt2/Makefile.am b/src/parser/smt2/Makefile.am
new file mode 100644
index 0000000..fece5e5
--- /dev/null
+++ b/src/parser/smt2/Makefile.am
@@ -0,0 +1,70 @@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4PARSERLIB \
+	-I at builddir@/../.. -I at srcdir@/../../include -I at srcdir@/../.. $(ANTLR_INCLUDES)
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN) $(WNO_PARENTHESES) $(WNO_TAUTOLOGICAL_COMPARE) -Wno-unused-function -Wno-unused-variable
+
+# Compile generated C files using C++ compiler
+AM_CFLAGS = $(AM_CXXFLAGS)
+CC=$(CXX)
+
+ANTLR_OPTS =
+
+# hide this included makefile from automake
+ at mk_include@ @srcdir@/../Makefile.antlr_tracing
+
+noinst_LTLIBRARIES = libparsersmt2.la
+
+ANTLR_TOKEN_STUFF = \
+	@builddir@/Smt2.tokens
+ANTLR_LEXER_STUFF = \
+	@builddir@/Smt2Lexer.h \
+	@builddir@/Smt2Lexer.c \
+	$(ANTLR_TOKEN_STUFF)
+ANTLR_PARSER_STUFF = \
+	@builddir@/Smt2Parser.h \
+	@builddir@/Smt2Parser.c
+ANTLR_STUFF = \
+	$(ANTLR_LEXER_STUFF) \
+	$(ANTLR_PARSER_STUFF)
+
+libparsersmt2_la_SOURCES = \
+	Smt2.g \
+	smt2.h \
+	smt2.cpp \
+	smt2_input.h \
+	smt2_input.cpp \
+	sygus_input.h \
+	sygus_input.cpp \
+	$(ANTLR_STUFF)
+
+BUILT_SOURCES = \
+	@builddir@/Smt2.tokens \
+	@builddir@/Smt2Lexer.h \
+	@builddir@/Smt2Lexer.c \
+	@builddir@/Smt2Parser.h \
+	@builddir@/Smt2Parser.c \
+	stamp-generated
+
+EXTRA_DIST = \
+	stamp-generated
+
+DISTCLEANFILES = $(ANTLR_STUFF)
+distclean-local:
+	-$(AM_V_at)rmdir generated
+	-$(AM_V_at)rm -f stamp-generated
+
+stamp-generated:
+	$(AM_V_at)mkdir -p generated
+	$(AM_V_at)touch stamp-generated
+
+# antlr doesn't overwrite output files, it just leaves them.  So we have to delete them first.
+ at builddir@/Smt2Lexer.h: Smt2.g stamp-generated
+	-$(AM_V_at)rm -f $(ANTLR_STUFF)
+	@if test -z "$(ANTLR)"; then echo "ERROR: antlr parser generator cannot be found, cannot generate the parser" >&2; exit 1; fi
+	$(AM_V_GEN)$(ANTLR) $(ANTLR_OPTS) -fo "@builddir@" "@srcdir@/Smt2.g"
+
+# These don't actually depend on SmtLexer.h, but if we're doing parallel
+# make and the lexer needs to be rebuilt, we have to keep the rules
+# from running in parallel (since the token files will be deleted &
+# recreated)
+ at builddir@/Smt2Lexer.c @builddir@/Smt2Parser.h @builddir@/Smt2Parser.c $(ANTLR_TOKEN_STUFF): @builddir@/Smt2Lexer.h
diff --git a/src/parser/smt2/Makefile.in b/src/parser/smt2/Makefile.in
new file mode 100644
index 0000000..edaaf27
--- /dev/null
+++ b/src/parser/smt2/Makefile.in
@@ -0,0 +1,874 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = src/parser/smt2
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libparsersmt2_la_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_1 =
+am__objects_2 = @builddir@/Smt2Lexer.lo $(am__objects_1)
+am__objects_3 = @builddir@/Smt2Parser.lo
+am__objects_4 = $(am__objects_2) $(am__objects_3)
+am_libparsersmt2_la_OBJECTS = smt2.lo smt2_input.lo sygus_input.lo \
+	$(am__objects_4)
+libparsersmt2_la_OBJECTS = $(am_libparsersmt2_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+SOURCES = $(libparsersmt2_la_SOURCES)
+DIST_SOURCES = $(libparsersmt2_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = $(CXX)
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4PARSERLIB \
+	-I at builddir@/../.. -I at srcdir@/../../include -I at srcdir@/../.. $(ANTLR_INCLUDES)
+
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN) $(WNO_PARENTHESES) $(WNO_TAUTOLOGICAL_COMPARE) -Wno-unused-function -Wno-unused-variable
+
+# Compile generated C files using C++ compiler
+AM_CFLAGS = $(AM_CXXFLAGS)
+ANTLR_OPTS = 
+noinst_LTLIBRARIES = libparsersmt2.la
+ANTLR_TOKEN_STUFF = \
+	@builddir@/Smt2.tokens
+
+ANTLR_LEXER_STUFF = \
+	@builddir@/Smt2Lexer.h \
+	@builddir@/Smt2Lexer.c \
+	$(ANTLR_TOKEN_STUFF)
+
+ANTLR_PARSER_STUFF = \
+	@builddir@/Smt2Parser.h \
+	@builddir@/Smt2Parser.c
+
+ANTLR_STUFF = \
+	$(ANTLR_LEXER_STUFF) \
+	$(ANTLR_PARSER_STUFF)
+
+libparsersmt2_la_SOURCES = \
+	Smt2.g \
+	smt2.h \
+	smt2.cpp \
+	smt2_input.h \
+	smt2_input.cpp \
+	sygus_input.h \
+	sygus_input.cpp \
+	$(ANTLR_STUFF)
+
+BUILT_SOURCES = \
+	@builddir@/Smt2.tokens \
+	@builddir@/Smt2Lexer.h \
+	@builddir@/Smt2Lexer.c \
+	@builddir@/Smt2Parser.h \
+	@builddir@/Smt2Parser.c \
+	stamp-generated
+
+EXTRA_DIST = \
+	stamp-generated
+
+DISTCLEANFILES = $(ANTLR_STUFF)
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/parser/smt2/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/parser/smt2/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+ at builddir@/$(am__dirstamp):
+	@$(MKDIR_P) @builddir@
+	@: > @builddir@/$(am__dirstamp)
+ at builddir@/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) @builddir@/$(DEPDIR)
+	@: > @builddir@/$(DEPDIR)/$(am__dirstamp)
+ at builddir@/Smt2Lexer.lo: @builddir@/$(am__dirstamp) \
+	@builddir@/$(DEPDIR)/$(am__dirstamp)
+ at builddir@/Smt2Parser.lo: @builddir@/$(am__dirstamp) \
+	@builddir@/$(DEPDIR)/$(am__dirstamp)
+
+libparsersmt2.la: $(libparsersmt2_la_OBJECTS) $(libparsersmt2_la_DEPENDENCIES) $(EXTRA_libparsersmt2_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK)  $(libparsersmt2_la_OBJECTS) $(libparsersmt2_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+	-rm -f @builddir@/*.$(OBJEXT)
+	-rm -f @builddir@/*.lo
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/smt2.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/smt2_input.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sygus_input.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote@@builddir@/$(DEPDIR)/Smt2Lexer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote@@builddir@/$(DEPDIR)/Smt2Parser.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+	-rm -rf @builddir@/.libs @builddir@/_libs
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f @builddir@/$(DEPDIR)/$(am__dirstamp)
+	-rm -f @builddir@/$(am__dirstamp)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR) @builddir@/$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-local distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR) @builddir@/$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-local distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# hide this included makefile from automake
+ at mk_include@ @srcdir@/../Makefile.antlr_tracing
+distclean-local:
+	-$(AM_V_at)rmdir generated
+	-$(AM_V_at)rm -f stamp-generated
+
+stamp-generated:
+	$(AM_V_at)mkdir -p generated
+	$(AM_V_at)touch stamp-generated
+
+# antlr doesn't overwrite output files, it just leaves them.  So we have to delete them first.
+ at builddir@/Smt2Lexer.h: Smt2.g stamp-generated
+	-$(AM_V_at)rm -f $(ANTLR_STUFF)
+	@if test -z "$(ANTLR)"; then echo "ERROR: antlr parser generator cannot be found, cannot generate the parser" >&2; exit 1; fi
+	$(AM_V_GEN)$(ANTLR) $(ANTLR_OPTS) -fo "@builddir@" "@srcdir@/Smt2.g"
+
+# These don't actually depend on SmtLexer.h, but if we're doing parallel
+# make and the lexer needs to be rebuilt, we have to keep the rules
+# from running in parallel (since the token files will be deleted &
+# recreated)
+ at builddir@/Smt2Lexer.c @builddir@/Smt2Parser.h @builddir@/Smt2Parser.c $(ANTLR_TOKEN_STUFF): @builddir@/Smt2Lexer.h
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/parser/smt2/Smt2.g b/src/parser/smt2/Smt2.g
new file mode 100644
index 0000000..07ace29
--- /dev/null
+++ b/src/parser/smt2/Smt2.g
@@ -0,0 +1,3091 @@
+/* *******************                                                        */
+/*! \file Smt2.g
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Christopher L. Conway
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Parser for SMT-LIB v2 input language
+ **
+ ** Parser for SMT-LIB v2 input language.
+ **/
+
+grammar Smt2;
+
+options {
+  // C output for antlr
+  language = 'C';
+
+  // Skip the default error handling, just break with exceptions
+  // defaultErrorHandler = false;
+
+  // Only lookahead of <= k requested (disable for LL* parsing)
+  // Note that CVC4's BoundedTokenBuffer requires a fixed k !
+  // If you change this k, change it also in smt2_input.cpp !
+  k = 2;
+}/* options */
+
+ at header {
+/**
+ ** This file is part of CVC4.
+ ** Copyright (c) 2009-2014  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.
+ **/
+}/* @header */
+
+ at lexer::includes {
+
+// This should come immediately after #include <antlr3.h> in the generated
+// files. See the documentation in "parser/antlr_undefines.h" for more details.
+#include "parser/antlr_undefines.h"
+
+/** This suppresses warnings about the redefinition of token symbols between
+  * different parsers. The redefinitions should be harmless as long as no
+  * client: (a) #include's the lexer headers for two grammars AND (b) uses the
+  * token symbol definitions.
+  */
+#pragma GCC system_header
+
+#if defined(CVC4_COMPETITION_MODE) && !defined(CVC4_SMTCOMP_APPLICATION_TRACK)
+/* This improves performance by ~10 percent on big inputs.
+ * This option is only valid if we know the input is ASCII (or some 8-bit encoding).
+ * If we know the input is UTF-16, we can use ANTLR3_INLINE_INPUT_UTF16.
+ * Otherwise, we have to let the lexer detect the encoding at runtime.
+ */
+#  define ANTLR3_INLINE_INPUT_ASCII
+#  define ANTLR3_INLINE_INPUT_8BIT
+#endif /* CVC4_COMPETITION_MODE && !CVC4_SMTCOMP_APPLICATION_TRACK */
+
+#include "parser/antlr_tracing.h"
+
+}/* @lexer::includes */
+
+ at lexer::postinclude {
+#include <stdint.h>
+
+#include "parser/smt2/smt2.h"
+#include "parser/antlr_input.h"
+
+using namespace CVC4;
+using namespace CVC4::parser;
+
+#undef PARSER_STATE
+#define PARSER_STATE ((Smt2*)LEXER->super)
+}/* @lexer::postinclude */
+
+ at parser::includes {
+
+// This should come immediately after #include <antlr3.h> in the generated
+// files. See the documentation in "parser/antlr_undefines.h" for more details.
+#include "parser/antlr_undefines.h"
+
+#include "base/ptr_closer.h"
+#include "parser/parser.h"
+#include "parser/antlr_tracing.h"
+#include "smt/command.h"
+
+namespace CVC4 {
+  class Expr;
+
+  namespace parser {
+    namespace smt2 {
+      /**
+       * Just exists to provide the uintptr_t constructor that ANTLR
+       * requires.
+       */
+      struct myExpr : public CVC4::Expr {
+        myExpr() : CVC4::Expr() {}
+        myExpr(void*) : CVC4::Expr() {}
+        myExpr(const Expr& e) : CVC4::Expr(e) {}
+        myExpr(const myExpr& e) : CVC4::Expr(e) {}
+      };/* struct myExpr */
+    }/* CVC4::parser::smt2 namespace */
+  }/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+}/* @parser::includes */
+
+ at parser::postinclude {
+
+#include <set>
+#include <sstream>
+#include <string>
+#include <vector>
+
+#include "base/output.h"
+#include "expr/expr.h"
+#include "expr/kind.h"
+#include "expr/type.h"
+#include "options/set_language.h"
+#include "parser/antlr_input.h"
+#include "parser/parser.h"
+#include "parser/smt2/smt2.h"
+#include "util/floatingpoint.h"
+#include "util/hash.h"
+#include "util/integer.h"
+#include "util/rational.h"
+// \todo Review the need for this header
+#include "math.h"
+
+using namespace CVC4;
+using namespace CVC4::parser;
+
+/* These need to be macros so they can refer to the PARSER macro, which
+ * will be defined by ANTLR *after* this section. (If they were functions,
+ * PARSER would be undefined.) */
+#undef PARSER_STATE
+#define PARSER_STATE ((Smt2*)PARSER->super)
+#undef EXPR_MANAGER
+#define EXPR_MANAGER PARSER_STATE->getExprManager()
+#undef MK_EXPR
+#define MK_EXPR EXPR_MANAGER->mkExpr
+#undef MK_CONST
+#define MK_CONST EXPR_MANAGER->mkConst
+#define UNSUPPORTED PARSER_STATE->unimplementedFeature
+
+static bool isClosed(const Expr& e, std::set<Expr>& free, std::hash_set<Expr, ExprHashFunction>& closedCache) {
+  if(closedCache.find(e) != closedCache.end()) {
+    return true;
+  }
+
+  if(e.getKind() == kind::FORALL || e.getKind() == kind::EXISTS || e.getKind() == kind::LAMBDA) {
+    isClosed(e[1], free, closedCache);
+    for(Expr::const_iterator i = e[0].begin(); i != e[0].end(); ++i) {
+      free.erase(*i);
+    }
+  } else if(e.getKind() == kind::BOUND_VARIABLE) {
+    free.insert(e);
+    return false;
+  } else {
+    if(e.hasOperator()) {
+      isClosed(e.getOperator(), free, closedCache);
+    }
+    for(Expr::const_iterator i = e.begin(); i != e.end(); ++i) {
+      isClosed(*i, free, closedCache);
+    }
+  }
+
+  if(free.empty()) {
+    closedCache.insert(e);
+    return true;
+  } else {
+    return false;
+  }
+}
+
+static inline bool isClosed(const Expr& e, std::set<Expr>& free) {
+  std::hash_set<Expr, ExprHashFunction> cache;
+  return isClosed(e, free, cache);
+}  
+  
+}/* parser::postinclude */
+
+/**
+ * Parses an expression.
+ * @return the parsed expression, or the Null Expr if we've reached the
+ * end of the input
+ */
+parseExpr returns [CVC4::parser::smt2::myExpr expr]
+ at declarations {
+  Expr expr2;
+}
+  : term[expr, expr2]
+  | EOF
+  ;
+
+/**
+ * Parses a command
+ * @return the parsed command, or NULL if we've reached the end of the input
+ */
+parseCommand returns [CVC4::Command* cmd_return = NULL]
+ at declarations {
+  CVC4::PtrCloser<CVC4::Command> cmd;
+  std::string name;
+}
+ at after {
+  cmd_return = cmd.release();
+}
+  : LPAREN_TOK command[&cmd] RPAREN_TOK
+
+    /* This extended command has to be in the outermost production so that
+     * the RPAREN_TOK is properly eaten and we are in a good state to read
+     * the included file's tokens. */
+  | LPAREN_TOK INCLUDE_TOK str[name,true] RPAREN_TOK
+    { if(!PARSER_STATE->canIncludeFile()) {
+        PARSER_STATE->parseError("include-file feature was disabled for this "
+                                 "run.");
+      }
+      if(PARSER_STATE->strictModeEnabled()) {
+        PARSER_STATE->parseError("Extended commands are not permitted while "
+                                 "operating in strict compliance mode.");
+      }
+      PARSER_STATE->includeFile(name);
+      // The command of the included file will be produced at the next
+      // parseCommand() call
+      cmd.reset(new EmptyCommand("include::" + name));
+    }
+
+  | EOF
+  ;
+
+/**
+ * Parses a SyGuS command.
+ * @return the parsed SyGuS command, or NULL if we've reached the end of the
+ * input
+ */
+parseSygus returns [CVC4::Command* cmd_return = NULL]
+ at declarations {
+  CVC4::PtrCloser<CVC4::Command> cmd;
+  std::string name;
+}
+ at after {
+  cmd_return = cmd.release();
+}
+  : LPAREN_TOK sygusCommand[&cmd] RPAREN_TOK
+  | EOF
+  ;
+
+/**
+ * Parse the internal portion of the command, ignoring the surrounding
+ * parentheses.
+ */
+command [CVC4::PtrCloser<CVC4::Command>* cmd]
+ at declarations {
+  std::string name;
+  std::vector<std::string> names;
+  Expr expr, expr2;
+  Type t;
+  std::vector<Expr> terms;
+  std::vector<Type> sorts;
+  std::vector<std::pair<std::string, Type> > sortedVarNames;
+}
+  : /* set the logic */
+    SET_LOGIC_TOK symbol[name,CHECK_NONE,SYM_SORT]
+    { Debug("parser") << "set logic: '" << name << "'" << std::endl;
+      if( PARSER_STATE->logicIsSet() ) {
+        PARSER_STATE->parseError("Only one set-logic is allowed.");
+      }
+      PARSER_STATE->setLogic(name);
+      if( PARSER_STATE->sygus() ){
+        cmd->reset(new SetBenchmarkLogicCommand("ALL"));
+      }else{
+        cmd->reset(new SetBenchmarkLogicCommand(name));
+      }
+    }
+  | /* set-info */
+    SET_INFO_TOK metaInfoInternal[cmd]
+  | /* get-info */
+    GET_INFO_TOK KEYWORD
+    { cmd->reset(new GetInfoCommand(
+          AntlrInput::tokenText($KEYWORD).c_str() + 1));
+    }
+  | /* set-option */
+    SET_OPTION_TOK setOptionInternal[cmd]
+  | /* get-option */
+    GET_OPTION_TOK KEYWORD
+    { cmd->reset(new GetOptionCommand(
+          AntlrInput::tokenText($KEYWORD).c_str() + 1));
+    }
+  | /* sort declaration */
+    DECLARE_SORT_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    { if(!PARSER_STATE->isTheoryEnabled(Smt2::THEORY_UF) &&
+         !PARSER_STATE->isTheoryEnabled(Smt2::THEORY_ARRAYS) &&
+         !PARSER_STATE->isTheoryEnabled(Smt2::THEORY_DATATYPES) &&
+         !PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS)) {
+          PARSER_STATE->parseErrorLogic("Free sort symbols not allowed in ");
+      }
+    }
+    symbol[name,CHECK_UNDECLARED,SYM_SORT]
+    { PARSER_STATE->checkUserSymbol(name); }
+    n=INTEGER_LITERAL
+    { Debug("parser") << "declare sort: '" << name
+                      << "' arity=" << n << std::endl;
+      unsigned arity = AntlrInput::tokenToUnsigned(n);
+      if(arity == 0) {
+        Type type = PARSER_STATE->mkSort(name);
+        cmd->reset(new DeclareTypeCommand(name, 0, type));
+      } else {
+        Type type = PARSER_STATE->mkSortConstructor(name, arity);
+        cmd->reset(new DeclareTypeCommand(name, arity, type));
+      }
+    }
+  | /* sort definition */
+    DEFINE_SORT_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    symbol[name,CHECK_UNDECLARED,SYM_SORT]
+    { PARSER_STATE->checkUserSymbol(name); }
+    LPAREN_TOK symbolList[names,CHECK_NONE,SYM_SORT] RPAREN_TOK
+    { PARSER_STATE->pushScope(true);
+      for(std::vector<std::string>::const_iterator i = names.begin(),
+            iend = names.end();
+          i != iend;
+          ++i) {
+        sorts.push_back(PARSER_STATE->mkSort(*i));
+      }
+    }
+    sortSymbol[t,CHECK_DECLARED]
+    { PARSER_STATE->popScope();
+      // Do NOT call mkSort, since that creates a new sort!
+      // This name is not its own distinct sort, it's an alias.
+      PARSER_STATE->defineParameterizedType(name, sorts, t);
+      cmd->reset(new DefineTypeCommand(name, sorts, t));
+    }
+  | /* function declaration */
+    DECLARE_FUN_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    symbol[name,CHECK_UNDECLARED,SYM_VARIABLE]
+    { PARSER_STATE->checkUserSymbol(name); }
+    LPAREN_TOK sortList[sorts] RPAREN_TOK
+    sortSymbol[t,CHECK_DECLARED]
+    { Debug("parser") << "declare fun: '" << name << "'" << std::endl;
+      if( sorts.size() > 0 ) {
+        if(!PARSER_STATE->isTheoryEnabled(Smt2::THEORY_UF)) {
+          PARSER_STATE->parseErrorLogic("Functions (of non-zero arity) cannot "
+                                        "be declared in logic ");
+        }
+        t = EXPR_MANAGER->mkFunctionType(sorts, t);
+      }
+      Expr func = PARSER_STATE->mkVar(name, t);
+      cmd->reset(new DeclareFunctionCommand(name, func, t));
+    }
+  | /* function definition */
+    DEFINE_FUN_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    symbol[name,CHECK_UNDECLARED,SYM_VARIABLE]
+    { PARSER_STATE->checkUserSymbol(name); }
+    LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK
+    sortSymbol[t,CHECK_DECLARED]
+    { /* add variables to parser state before parsing term */
+      Debug("parser") << "define fun: '" << name << "'" << std::endl;
+      if( sortedVarNames.size() > 0 ) {
+        std::vector<CVC4::Type> sorts;
+        sorts.reserve(sortedVarNames.size());
+        for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+              sortedVarNames.begin(), iend = sortedVarNames.end();
+            i != iend;
+            ++i) {
+          sorts.push_back((*i).second);
+        }
+        t = EXPR_MANAGER->mkFunctionType(sorts, t);
+      }
+      PARSER_STATE->pushScope(true);
+      for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+            sortedVarNames.begin(), iend = sortedVarNames.end();
+          i != iend;
+          ++i) {
+        terms.push_back(PARSER_STATE->mkBoundVar((*i).first, (*i).second));
+      }
+    }
+    term[expr, expr2]
+    { PARSER_STATE->popScope();
+      // declare the name down here (while parsing term, signature
+      // must not be extended with the name itself; no recursion
+      // permitted)
+      Expr func = PARSER_STATE->mkFunction(name, t,
+                                           ExprManager::VAR_FLAG_DEFINED);
+      cmd->reset(new DefineFunctionCommand(name, func, terms, expr));
+    }
+  | /* value query */
+    GET_VALUE_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    ( LPAREN_TOK termList[terms,expr] RPAREN_TOK
+      { cmd->reset(new GetValueCommand(terms)); }
+    | ~LPAREN_TOK
+      { PARSER_STATE->parseError("The get-value command expects a list of "
+                                 "terms.  Perhaps you forgot a pair of "
+                                 "parentheses?");
+      }
+    )
+  | /* get-assignment */
+    GET_ASSIGNMENT_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    { cmd->reset(new GetAssignmentCommand()); }
+  | /* assertion */
+    ASSERT_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    /* { if( PARSER_STATE->sygus() ){
+     *     PARSER_STATE->parseError("Sygus does not support assert command.");
+     *   }
+     * } */
+    { PARSER_STATE->clearLastNamedTerm(); }
+    term[expr, expr2]
+    { bool inUnsatCore = PARSER_STATE->lastNamedTerm().first == expr;
+      cmd->reset(new AssertCommand(expr, inUnsatCore));
+      if(inUnsatCore) {
+        PARSER_STATE->registerUnsatCoreName(PARSER_STATE->lastNamedTerm());
+      }
+    }
+  | /* check-sat */
+    CHECKSAT_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    { if( PARSER_STATE->sygus() ){
+        PARSER_STATE->parseError("Sygus does not support check-sat command.");
+      }
+    }
+    ( term[expr, expr2]
+      { if(PARSER_STATE->strictModeEnabled()) {
+          PARSER_STATE->parseError(
+              "Extended commands (such as check-sat with an argument) are not "
+              "permitted while operating in strict compliance mode.");
+        }
+      }
+    | { expr = MK_CONST(bool(true)); }
+    )
+    { cmd->reset(new CheckSatCommand(expr)); }
+  | /* get-assertions */
+    GET_ASSERTIONS_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    { cmd->reset(new GetAssertionsCommand()); }
+  | /* get-proof */
+    GET_PROOF_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    { cmd->reset(new GetProofCommand()); }
+  | /* get-unsat-core */
+    GET_UNSAT_CORE_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    { cmd->reset(new GetUnsatCoreCommand(PARSER_STATE->getUnsatCoreNames())); }
+  | /* push */
+    PUSH_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    { if( PARSER_STATE->sygus() ){
+        PARSER_STATE->parseError("Sygus does not support push command.");
+      }
+    }
+    ( k=INTEGER_LITERAL
+      { unsigned n = AntlrInput::tokenToUnsigned(k);
+        if(n == 0) {
+          cmd->reset(new EmptyCommand());
+        } else if(n == 1) {
+          PARSER_STATE->pushScope();
+          PARSER_STATE->pushUnsatCoreNameScope();
+          cmd->reset(new PushCommand());
+        } else {
+          CVC4::PtrCloser<CommandSequence> seq(new CommandSequence());
+          do {
+            PARSER_STATE->pushScope();
+            PARSER_STATE->pushUnsatCoreNameScope();
+            Command* push_cmd = new PushCommand();
+            push_cmd->setMuted(n > 1);
+            seq->addCommand(push_cmd);
+            --n;
+            } while(n > 0);
+          cmd->reset(seq.release());
+        }
+      }
+    | { if(PARSER_STATE->strictModeEnabled()) {
+          PARSER_STATE->parseError(
+              "Strict compliance mode demands an integer to be provided to "
+              "PUSH.  Maybe you want (push 1)?");
+        } else {
+          PARSER_STATE->pushScope();
+          PARSER_STATE->pushUnsatCoreNameScope();
+          cmd->reset(new PushCommand());
+        }
+      } )
+  | POP_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    { if( PARSER_STATE->sygus() ){
+        PARSER_STATE->parseError("Sygus does not support pop command.");
+      }
+    }
+    ( k=INTEGER_LITERAL
+      { unsigned n = AntlrInput::tokenToUnsigned(k);
+        if(n > PARSER_STATE->scopeLevel()) {
+          PARSER_STATE->parseError("Attempted to pop above the top stack "
+                                   "frame.");
+        }
+        if(n == 0) {
+          cmd->reset(new EmptyCommand());
+        } else if(n == 1) {
+          PARSER_STATE->popUnsatCoreNameScope();
+          PARSER_STATE->popScope();
+          cmd->reset(new PopCommand());
+        } else {
+          CVC4::PtrCloser<CommandSequence> seq(new CommandSequence());
+          do {
+            PARSER_STATE->popUnsatCoreNameScope();
+            PARSER_STATE->popScope();
+            Command* pop_command = new PopCommand();
+            pop_command->setMuted(n > 1);
+            seq->addCommand(pop_command);
+            --n;
+          } while(n > 0);
+          cmd->reset(seq.release());
+        }
+      }
+    | { if(PARSER_STATE->strictModeEnabled()) {
+          PARSER_STATE->parseError(
+              "Strict compliance mode demands an integer to be provided to POP."
+              "Maybe you want (pop 1)?");
+        } else {
+          PARSER_STATE->popUnsatCoreNameScope();
+          PARSER_STATE->popScope();
+          cmd->reset(new PopCommand());
+        }
+      }
+    )
+    /* exit */
+  | EXIT_TOK
+    { cmd->reset(new QuitCommand()); }
+
+    /* New SMT-LIB 2.5 command set */
+  | smt25Command[cmd]
+    { if(PARSER_STATE->v2_0() && PARSER_STATE->strictModeEnabled()) {
+        PARSER_STATE->parseError(
+            "SMT-LIB 2.5 commands are not permitted while operating in strict "
+            "compliance mode and in SMT-LIB 2.0 mode.");
+      }
+    }
+
+    /* CVC4-extended SMT-LIB commands */
+  | extendedCommand[cmd]
+    { if(PARSER_STATE->strictModeEnabled()) {
+        PARSER_STATE->parseError(
+            "Extended commands are not permitted while operating in strict "
+            "compliance mode.");
+      }
+    }
+
+    /* error handling */
+  | SIMPLE_SYMBOL
+    { std::string id = AntlrInput::tokenText($SIMPLE_SYMBOL);
+      if(id == "benchmark") {
+        PARSER_STATE->parseError(
+            "In SMT-LIBv2 mode, but got something that looks like SMT-LIBv1. "
+            "Use --lang smt1 for SMT-LIBv1.");
+      } else {
+        PARSER_STATE->parseError("expected SMT-LIBv2 command, got `" + id +
+                                 "'.");
+      }
+    }
+  ;
+
+sygusCommand [CVC4::PtrCloser<CVC4::Command>* cmd]
+ at declarations {
+  std::string name, fun;
+  std::vector<std::string> names;
+  Expr expr, expr2;
+  Type t, range;
+  std::vector<Expr> terms;
+  std::vector<Type> sorts;
+  std::vector<Expr> sygus_vars;
+  std::vector<std::pair<std::string, Type> > sortedVarNames;
+  SExpr sexpr;
+  CVC4::PtrCloser<CVC4::CommandSequence> seq;
+  std::vector< std::vector< CVC4::SygusGTerm > > sgts;
+  std::vector< CVC4::Datatype > datatypes;
+  std::vector< std::vector<Expr> > ops;
+  std::vector< std::vector< std::string > > cnames;
+  std::vector< std::vector< std::vector< CVC4::Type > > > cargs;
+  std::vector< bool > allow_const;
+  std::vector< std::vector< std::string > > unresolved_gterm_sym;
+  bool read_syntax = false;
+  Type sygus_ret;
+  std::map< CVC4::Type, CVC4::Type > sygus_to_builtin;
+  std::map< CVC4::Type, CVC4::Expr > sygus_to_builtin_expr;
+  int startIndex = -1;
+}
+  : /* declare-var */
+    DECLARE_VAR_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    symbol[name,CHECK_UNDECLARED,SYM_VARIABLE]
+    { PARSER_STATE->checkUserSymbol(name); }
+    sortSymbol[t,CHECK_DECLARED]
+    { PARSER_STATE->mkSygusVar(name, t);
+      cmd->reset(new EmptyCommand());
+    }
+  | /* declare-primed-var */
+    DECLARE_PRIMED_VAR_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    symbol[name,CHECK_UNDECLARED,SYM_VARIABLE]
+    { PARSER_STATE->checkUserSymbol(name); }
+    sortSymbol[t,CHECK_DECLARED]
+    { PARSER_STATE->mkSygusVar(name, t, true);
+      cmd->reset(new EmptyCommand());
+    }
+
+  | /* synth-fun */
+    ( SYNTH_FUN_TOK | SYNTH_INV_TOK { range = EXPR_MANAGER->booleanType(); } )
+    { PARSER_STATE->checkThatLogicIsSet(); }
+    symbol[fun,CHECK_UNDECLARED,SYM_VARIABLE]
+    LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK
+    { seq.reset(new CommandSequence());
+      PARSER_STATE->pushScope(true);
+      for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+            sortedVarNames.begin(), iend = sortedVarNames.end(); i != iend;
+          ++i) {
+        Expr v = PARSER_STATE->mkBoundVar((*i).first, (*i).second);
+        terms.push_back( v );
+        sygus_vars.push_back( v );
+      }
+      Expr bvl;
+      if( !terms.empty() ){
+        bvl = MK_EXPR(kind::BOUND_VAR_LIST, terms);
+      }
+      terms.clear();
+      terms.push_back(bvl);
+    }
+    ( sortSymbol[range,CHECK_DECLARED] )? {
+      if( range.isNull() ){
+        PARSER_STATE->parseError("Must supply return type for synth-fun.");
+      }
+    }
+    ( LPAREN_TOK
+    ( LPAREN_TOK
+      symbol[name,CHECK_NONE,SYM_VARIABLE] 
+      sortSymbol[t,CHECK_DECLARED]
+      { std::stringstream ss;
+        ss << fun << "_" << name;
+        if( name=="Start" ){
+          startIndex = datatypes.size();
+        }
+        std::string dname = ss.str();
+        sgts.push_back( std::vector< CVC4::SygusGTerm >() );
+        sgts.back().push_back( CVC4::SygusGTerm() );
+        PARSER_STATE->pushSygusDatatypeDef(
+            t, dname, datatypes, sorts, ops, cnames, cargs, allow_const,
+            unresolved_gterm_sym);
+        Type unres_t;
+        if(!PARSER_STATE->isUnresolvedType(dname)) {
+          // if not unresolved, must be undeclared
+          Debug("parser-sygus") << "Make unresolved type : " << dname
+                                << std::endl;
+          PARSER_STATE->checkDeclaration(dname, CHECK_UNDECLARED, SYM_SORT);
+          unres_t = PARSER_STATE->mkUnresolvedType(dname);
+        }else{
+          Debug("parser-sygus") << "Get sort : " << dname << std::endl;
+          unres_t = PARSER_STATE->getSort(dname);
+        }
+        sygus_to_builtin[unres_t] = t;
+        Debug("parser-sygus") << "--- Read sygus grammar " << name
+                              << " under function " << fun << "..."
+                              << std::endl
+                              << "    type to resolve " << unres_t << std::endl
+                              << "    builtin type " << t << std::endl;
+      }
+      // Note the official spec for NTDef is missing the ( parens )
+      // but they are necessary to parse SyGuS examples
+      LPAREN_TOK ( sygusGTerm[ sgts.back().back(), fun]
+      { sgts.back().push_back( CVC4::SygusGTerm() ); } )+ 
+      RPAREN_TOK { sgts.back().pop_back(); }
+      RPAREN_TOK 
+    )+
+    RPAREN_TOK { read_syntax = true; }
+    )?
+    { 
+      if( !read_syntax ){
+        //create the default grammar
+        Debug("parser-sygus") << "Make default grammar..." << std::endl;
+        PARSER_STATE->mkSygusDefaultGrammar(
+            range, terms[0], fun, datatypes, sorts, ops, sygus_vars,
+            startIndex);
+        //set start index
+        Debug("parser-sygus") << "Set start index " << startIndex << "..."
+                              << std::endl;
+        PARSER_STATE->setSygusStartIndex(fun, startIndex, datatypes, sorts,
+                                         ops);        
+      }else{
+        Debug("parser-sygus") << "--- Process " << sgts.size()
+                              << " sygus gterms..." << std::endl;
+        for( unsigned i=0; i<sgts.size(); i++ ){
+          for( unsigned j=0; j<sgts[i].size(); j++ ){
+            Type sub_ret;
+            PARSER_STATE->processSygusGTerm(
+                sgts[i][j], i, datatypes, sorts, ops, cnames, cargs,
+                allow_const, unresolved_gterm_sym, sygus_vars, sygus_to_builtin,
+                sygus_to_builtin_expr, sub_ret );
+          }
+        }
+        //swap index if necessary
+        Debug("parser-sygus") << "--- Making sygus datatypes..." << std::endl;
+        for( unsigned i=0; i<datatypes.size(); i++ ){
+          Debug("parser-sygus") << "..." << datatypes[i].getName()
+                                << " has builtin sort " << sorts[i]
+                                << std::endl;
+        }
+        for( unsigned i=0; i<datatypes.size(); i++ ){
+          Debug("parser-sygus") << "...make " << datatypes[i].getName()
+                                << " with builtin sort " << sorts[i]
+                                << std::endl;
+          if( sorts[i].isNull() ){
+            PARSER_STATE->parseError("Internal error : could not infer "
+                                     "builtin sort for nested gterm.");
+          }
+          datatypes[i].setSygus( sorts[i], terms[0], allow_const[i], false );
+          PARSER_STATE->mkSygusDatatype(
+              datatypes[i], ops[i], cnames[i], cargs[i],
+              unresolved_gterm_sym[i], sygus_to_builtin );
+        }
+        PARSER_STATE->setSygusStartIndex(fun, startIndex, datatypes, sorts,
+                                         ops);
+      }
+      //only care about datatypes/sorts/ops past here
+      PARSER_STATE->popScope();
+      Debug("parser-sygus") << "--- Make " << datatypes.size()
+                            << " mutual datatypes..." << std::endl;
+      for( unsigned i=0; i<datatypes.size(); i++ ){
+        Debug("parser-sygus") << "  " << i << " : " << datatypes[i].getName()
+                              << std::endl;
+      }
+      std::vector<DatatypeType> datatypeTypes =
+          PARSER_STATE->mkMutualDatatypeTypes(datatypes);
+      seq->addCommand(new DatatypeDeclarationCommand(datatypeTypes));
+      std::map<DatatypeType, Expr> evals;
+      if( sorts[0]!=range ){
+        PARSER_STATE->parseError(std::string("Bad return type in grammar for "
+                                             "SyGuS function ") + fun);
+      }
+      // make all the evals first, since they are mutually referential
+      for(size_t i = 0; i < datatypeTypes.size(); ++i) {
+        DatatypeType dtt = datatypeTypes[i];
+        const Datatype& dt = dtt.getDatatype();
+        name = "eval_" + dt.getName();
+        PARSER_STATE->checkDeclaration(name, CHECK_UNDECLARED, SYM_VARIABLE);
+        std::vector<Type> evalType;
+        evalType.push_back(dtt);
+        if( !terms[0].isNull() ){
+          for(size_t j = 0; j < terms[0].getNumChildren(); ++j) {
+            evalType.push_back(terms[0][j].getType());
+          }
+        }
+        evalType.push_back(sorts[i]);
+        const FunctionType eval_func_type =
+            EXPR_MANAGER->mkFunctionType(evalType);
+        Expr eval = PARSER_STATE->mkVar(name, eval_func_type);
+        Debug("parser-sygus") << "Make eval " << eval << " for " << dt.getName()
+                              << std::endl;
+        evals.insert(std::make_pair(dtt, eval));
+        if(i == 0) {
+          PARSER_STATE->addSygusFun(fun, eval);
+        }
+      }
+      // now go through and settle everything
+      for(size_t i = 0; i < datatypeTypes.size(); ++i) {
+        DatatypeType dtt = datatypeTypes[i];
+        const Datatype& dt = dtt.getDatatype();
+        Expr eval = evals[dtt];
+        Debug("parser-sygus") << "Sygus : process grammar : " << dt
+                              << std::endl;
+        for(size_t j = 0; j < dt.getNumConstructors(); ++j) {
+          Expr assertion = PARSER_STATE->getSygusAssertion(
+              datatypeTypes, ops, evals, terms, eval, dt, i, j );
+          seq->addCommand(new AssertCommand(assertion));
+        }
+      }
+      cmd->reset(seq.release());
+    }
+  | /* constraint */
+    CONSTRAINT_TOK { 
+      PARSER_STATE->checkThatLogicIsSet();
+      Debug("parser-sygus") << "Sygus : define sygus funs..." << std::endl;
+      PARSER_STATE->defineSygusFuns(); 
+      Debug("parser-sygus") << "Sygus : read constraint..." << std::endl;
+    }
+    term[expr, expr2]
+    { Debug("parser-sygus") << "...read constraint " << expr << std::endl;
+      PARSER_STATE->addSygusConstraint(expr);
+      cmd->reset(new EmptyCommand());
+    }
+  | INV_CONSTRAINT_TOK {  
+      PARSER_STATE->checkThatLogicIsSet();
+      Debug("parser-sygus") << "Sygus : define sygus funs..." << std::endl;
+      PARSER_STATE->defineSygusFuns(); 
+      Debug("parser-sygus") << "Sygus : read inv-constraint..." << std::endl;
+    }
+    ( symbol[name,CHECK_NONE,SYM_VARIABLE] { 
+        if( !terms.empty() ){
+          if( !PARSER_STATE->isDefinedFunction(name) ){
+            std::stringstream ss;
+            ss << "Function " << name << " in inv-constraint is not defined.";
+            PARSER_STATE->parseError(ss.str());
+          }
+        }
+        terms.push_back( PARSER_STATE->getVariable(name) );
+      }
+    )+ {
+      if( terms.size()!=4 ){
+        PARSER_STATE->parseError("Bad syntax for inv-constraint: expected 4 "
+                                 "arguments.");
+      }
+      //get primed variables
+      std::vector< Expr > primed[2];
+      std::vector< Expr > all;
+      for( unsigned i=0; i<2; i++ ){
+        PARSER_STATE->getSygusPrimedVars( primed[i], i==1 );
+        all.insert( all.end(), primed[i].begin(), primed[i].end() );
+      }
+      //make relevant terms
+      for( unsigned i=0; i<4; i++ ){
+        Debug("parser-sygus") << "Make inv-constraint term #" << i << "..."
+                              << std::endl;
+        Expr op = terms[i];
+        std::vector< Expr > children;
+        children.push_back( op );
+        if( i==2 ){
+          children.insert( children.end(), all.begin(), all.end() );
+        }else{
+          children.insert( children.end(), primed[0].begin(), primed[0].end() );
+        }
+        terms[i] = EXPR_MANAGER->mkExpr(kind::APPLY,children);
+        if( i==0 ){
+          std::vector< Expr > children2;
+          children2.push_back( op );
+          children2.insert(children2.end(), primed[1].begin(),
+                           primed[1].end());
+          terms.push_back( EXPR_MANAGER->mkExpr(kind::APPLY,children2) );
+        }
+      }
+      //make constraints
+      std::vector< Expr > conj;
+      conj.push_back( EXPR_MANAGER->mkExpr(kind::IMPLIES, terms[1],
+                                           terms[0] ) );
+      const Expr term0_and_2 = EXPR_MANAGER->mkExpr(kind::AND, terms[0],
+                                                    terms[2] );
+      conj.push_back( EXPR_MANAGER->mkExpr(kind::IMPLIES, term0_and_2,
+                                           terms[4] ) );
+      conj.push_back( EXPR_MANAGER->mkExpr(kind::IMPLIES, terms[0], terms[3]) );
+      Expr ic = EXPR_MANAGER->mkExpr( kind::AND, conj );
+      Debug("parser-sygus") << "...read invariant constraint " << ic
+                            << std::endl;
+      PARSER_STATE->addSygusConstraint(ic);
+      cmd->reset(new EmptyCommand());
+    }
+  | /* check-synth */
+    CHECK_SYNTH_TOK
+    { PARSER_STATE->checkThatLogicIsSet(); PARSER_STATE->defineSygusFuns(); }
+    { Expr sygusVar = EXPR_MANAGER->mkVar("sygus", EXPR_MANAGER->booleanType());
+      Expr inst_attr =EXPR_MANAGER->mkExpr(kind::INST_ATTRIBUTE, sygusVar);
+      Expr sygusAttr = EXPR_MANAGER->mkExpr(kind::INST_PATTERN_LIST, inst_attr);
+      std::vector<Expr> bodyv;
+      Debug("parser-sygus") << "Sygus : Constructing sygus constraint..."
+                            << std::endl;
+      Expr body = EXPR_MANAGER->mkExpr(kind::NOT,
+                                       PARSER_STATE->getSygusConstraints());
+      Debug("parser-sygus") << "...constructed sygus constraint " << body
+                            << std::endl;      
+      if( !PARSER_STATE->getSygusVars().empty() ){
+        Expr boundVars = EXPR_MANAGER->mkExpr(kind::BOUND_VAR_LIST,
+                                              PARSER_STATE->getSygusVars());
+        body = EXPR_MANAGER->mkExpr(kind::EXISTS, boundVars, body);
+        Debug("parser-sygus") << "...constructed exists " << body << std::endl;
+      }
+      if( !PARSER_STATE->getSygusFunSymbols().empty() ){
+        Expr boundVars = EXPR_MANAGER->mkExpr(
+            kind::BOUND_VAR_LIST, PARSER_STATE->getSygusFunSymbols());
+        body = EXPR_MANAGER->mkExpr(kind::FORALL, boundVars, body, sygusAttr);
+      }
+      Debug("parser-sygus") << "...constructed forall " << body << std::endl;   
+      Command* c = new SetUserAttributeCommand("sygus", sygusVar);
+      c->setMuted(true);
+      PARSER_STATE->preemptCommand(c);
+      cmd->reset(new CheckSynthCommand(body));
+    }
+  | command[cmd]
+ //   /* error handling */
+ // | (~(CHECK_SYNTH_TOK))=> token=.
+ //   { std::string id = AntlrInput::tokenText($token);
+ //     std::stringstream ss;
+ //     ss << "Not a recognized SyGuS command: `" << id << "'";
+ //     PARSER_STATE->parseError(ss.str());
+ //   }
+  ;
+
+// SyGuS grammar term.
+//
+// fun is the name of the synth-fun this grammar term is for.
+// This method adds N operators to ops[index], N names to cnames[index] and N
+// type argument vectors to cargs[index] (where typically N=1)
+// This method may also add new elements pairwise into
+// datatypes/sorts/ops/cnames/cargs in the case of non-flat gterms.
+sygusGTerm[CVC4::SygusGTerm& sgt, std::string& fun]
+ at declarations {
+  std::string name, name2;
+  bool readEnum = false;
+  Kind k;
+  Type t;
+  CVC4::DatatypeConstructor* ctor = NULL;
+  std::string sname;
+  std::vector< Expr > let_vars;
+  bool readingLet = false;
+  std::string s;
+}
+  : LPAREN_TOK
+    //read operator
+    ( builtinOp[k]{ 
+        Debug("parser-sygus") << "Sygus grammar " << fun << " : builtin op : "
+                              << name << std::endl;
+        // Since we enforce satisfaction completeness, immediately convert to
+        // total version.
+        if( k==CVC4::kind::BITVECTOR_UDIV ){
+          k = CVC4::kind::BITVECTOR_UDIV_TOTAL;
+        }else if( k==CVC4::kind::BITVECTOR_UREM ){
+          k = CVC4::kind::BITVECTOR_UREM_TOTAL;
+        }
+        sgt.d_name = kind::kindToString(k);
+        sgt.d_gterm_type = SygusGTerm::gterm_op;
+        sgt.d_expr = EXPR_MANAGER->operatorOf(k);
+      }
+     | LET_TOK LPAREN_TOK { 
+         sgt.d_name = std::string("let");
+         sgt.d_gterm_type = SygusGTerm::gterm_let;
+         PARSER_STATE->pushScope(true);
+         readingLet = true;
+       }
+       ( LPAREN_TOK 
+        symbol[sname,CHECK_NONE,SYM_VARIABLE] 
+        sortSymbol[t,CHECK_DECLARED] { 
+          Expr v = PARSER_STATE->mkBoundVar(sname,t); 
+          sgt.d_let_vars.push_back( v ); 
+          sgt.addChild();
+        } 
+        sygusGTerm[sgt.d_children.back(), fun]
+        RPAREN_TOK )+ RPAREN_TOK
+    | SYGUS_CONSTANT_TOK sortSymbol[t,CHECK_DECLARED] 
+      { sgt.d_gterm_type = SygusGTerm::gterm_constant;
+        sgt.d_type = t;
+        Debug("parser-sygus") << "Sygus grammar constant." << std::endl;
+      }
+    | SYGUS_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED]
+      { sgt.d_gterm_type = SygusGTerm::gterm_variable;
+        sgt.d_type = t;
+        Debug("parser-sygus") << "Sygus grammar variable." << std::endl;
+      }
+    | SYGUS_LOCAL_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED]
+      { sgt.d_gterm_type = SygusGTerm::gterm_local_variable;
+        sgt.d_type = t;
+        Debug("parser-sygus") << "Sygus grammar local variable...ignore."
+                              << std::endl;
+      }
+    | SYGUS_INPUT_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED]
+      { sgt.d_gterm_type = SygusGTerm::gterm_input_variable;
+        sgt.d_type = t;
+        Debug("parser-sygus") << "Sygus grammar (input) variable."
+                              << std::endl;
+      }
+    | symbol[name,CHECK_NONE,SYM_VARIABLE] { 
+        bool isBuiltinOperator = PARSER_STATE->isOperatorEnabled(name);
+        if(isBuiltinOperator) {
+          Debug("parser-sygus") << "Sygus grammar " << fun << " : builtin op : "
+                                << name << std::endl;
+          k = PARSER_STATE->getOperatorKind(name);
+          if( k==CVC4::kind::BITVECTOR_UDIV ){
+            k = CVC4::kind::BITVECTOR_UDIV_TOTAL;
+          }else if( k==CVC4::kind::BITVECTOR_UREM ){
+            k = CVC4::kind::BITVECTOR_UREM_TOTAL;
+          }
+          sgt.d_name = kind::kindToString(k);
+          sgt.d_gterm_type = SygusGTerm::gterm_op;
+          sgt.d_expr = EXPR_MANAGER->operatorOf(k);
+        }else{
+          // what is this sygus term trying to accomplish here, if the
+          // symbol isn't yet declared?!  probably the following line will
+          // fail, but we need an operator to continue here..
+          Debug("parser-sygus")
+              << "Sygus grammar " << fun << " : op (declare="
+              << PARSER_STATE->isDeclared(name) << ", define="
+              << PARSER_STATE->isDefinedFunction(name) << ") : " << name
+              << std::endl;
+          if(!PARSER_STATE->isDeclared(name) &&
+             !PARSER_STATE->isDefinedFunction(name) ){
+            PARSER_STATE->parseError("Functions in sygus grammars must be "
+                                     "defined.");
+          }
+          sgt.d_name = name;
+          sgt.d_gterm_type = SygusGTerm::gterm_op;
+          sgt.d_expr = PARSER_STATE->getVariable(name) ;
+        }
+      }
+    )
+    //read arguments
+    { Debug("parser-sygus") << "Read arguments under " << sgt.d_name
+                            << std::endl;
+      sgt.addChild();
+    }
+    ( sygusGTerm[sgt.d_children.back(), fun]
+      { Debug("parser-sygus") << "Finished read argument #"
+                              << sgt.d_children.size() << "..." << std::endl;
+        sgt.addChild();
+      }
+    )* 
+    RPAREN_TOK {
+      //pop last child index 
+      sgt.d_children.pop_back();   
+      if( readingLet ){
+        PARSER_STATE->popScope();
+      }
+    }
+  | INTEGER_LITERAL
+    { Debug("parser-sygus") << "Sygus grammar " << fun << " : integer literal "
+                            << AntlrInput::tokenText($INTEGER_LITERAL)
+                            << std::endl;
+      sgt.d_expr = MK_CONST(Rational(AntlrInput::tokenText($INTEGER_LITERAL)));
+      sgt.d_name = AntlrInput::tokenText($INTEGER_LITERAL);
+      sgt.d_gterm_type = SygusGTerm::gterm_op;
+    }
+  | HEX_LITERAL
+    { Debug("parser-sygus") << "Sygus grammar " << fun << " : hex literal "
+                            << AntlrInput::tokenText($HEX_LITERAL) << std::endl;
+      assert( AntlrInput::tokenText($HEX_LITERAL).find("#x") == 0 );
+      std::string hexString = AntlrInput::tokenTextSubstr($HEX_LITERAL, 2);
+      sgt.d_expr = MK_CONST( BitVector(hexString, 16) );
+      sgt.d_name = AntlrInput::tokenText($HEX_LITERAL);
+      sgt.d_gterm_type = SygusGTerm::gterm_op;
+    }
+  | BINARY_LITERAL
+    { Debug("parser-sygus") << "Sygus grammar " << fun << " : binary literal "
+                            << AntlrInput::tokenText($BINARY_LITERAL)
+                            << std::endl;
+      assert( AntlrInput::tokenText($BINARY_LITERAL).find("#b") == 0 );
+      std::string binString = AntlrInput::tokenTextSubstr($BINARY_LITERAL, 2);
+      sgt.d_expr = MK_CONST( BitVector(binString, 2) );
+      sgt.d_name = AntlrInput::tokenText($BINARY_LITERAL);
+      sgt.d_gterm_type = SygusGTerm::gterm_op;
+    }
+  | str[s,false]
+    { Debug("parser-sygus") << "Sygus grammar " << fun << " : string literal \""
+                            << s << "\"" << std::endl;
+      sgt.d_expr = MK_CONST( ::CVC4::String(s) );
+      sgt.d_name = s;
+      sgt.d_gterm_type = SygusGTerm::gterm_op;
+    }
+  | symbol[name,CHECK_NONE,SYM_VARIABLE]
+    ( SYGUS_ENUM_CONS_TOK symbol[name2,CHECK_NONE,SYM_VARIABLE]
+      { readEnum = true; }
+    )?
+    { if( readEnum ){
+        name = name + "__Enum__" + name2;
+        Debug("parser-sygus") << "Sygus grammar " << fun << " : Enum constant "
+                              << name << std::endl;
+        Expr c = PARSER_STATE->getVariable(name);
+        sgt.d_expr = MK_EXPR(kind::APPLY_CONSTRUCTOR,c);
+        sgt.d_name = name;
+        sgt.d_gterm_type = SygusGTerm::gterm_op;
+      }else{
+        if( name[0] == '-' ){  //hack for unary minus
+          Debug("parser-sygus") << "Sygus grammar " << fun
+                                << " : unary minus integer literal " << name
+                                << std::endl;
+          sgt.d_expr = MK_CONST(Rational(name));
+          sgt.d_name = name;
+          sgt.d_gterm_type = SygusGTerm::gterm_op;
+        }else if( PARSER_STATE->isDeclared(name,SYM_VARIABLE) ){
+          Debug("parser-sygus") << "Sygus grammar " << fun << " : symbol "
+                                << name << std::endl;
+          sgt.d_expr = PARSER_STATE->getVariable(name);
+          sgt.d_name = name;
+          sgt.d_gterm_type = SygusGTerm::gterm_op;
+        }else{
+          //prepend function name to base sorts when reading an operator
+          std::stringstream ss;
+          ss << fun << "_" << name;
+          name = ss.str();
+          if( PARSER_STATE->isDeclared(name, SYM_SORT) ){
+            Debug("parser-sygus") << "Sygus grammar " << fun
+                                  << " : nested sort " << name << std::endl;
+            sgt.d_type = PARSER_STATE->getSort(name);
+            sgt.d_gterm_type = SygusGTerm::gterm_nested_sort;
+          }else{
+            Debug("parser-sygus") << "Sygus grammar " << fun
+                                  << " : unresolved symbol " << name
+                                  << std::endl;
+            sgt.d_gterm_type = SygusGTerm::gterm_unresolved;
+            sgt.d_name = name;
+          }
+        }
+      }
+    }
+  ;
+
+// Separate this into its own rule (can be invoked by set-info or meta-info)
+metaInfoInternal[CVC4::PtrCloser<CVC4::Command>* cmd]
+ at declarations {
+  std::string name;
+  SExpr sexpr;
+}
+  : KEYWORD symbolicExpr[sexpr]
+    { name = AntlrInput::tokenText($KEYWORD);
+      if(name == ":cvc4-logic" || name == ":cvc4_logic") {
+        PARSER_STATE->setLogic(sexpr.getValue());
+      } else if(name == ":smt-lib-version") {
+        // if we don't recognize the revision name, just keep the current mode
+        if( (sexpr.isRational() && sexpr.getRationalValue() == Rational(2)) ||
+            sexpr.getValue() == "2" ||
+            sexpr.getValue() == "2.0" ) {
+          PARSER_STATE->setLanguage(language::input::LANG_SMTLIB_V2_0);
+        } else if( (sexpr.isRational() &&
+                    sexpr.getRationalValue() == Rational(5, 2)) ||
+                  sexpr.getValue() == "2.5" ) {
+          PARSER_STATE->setLanguage(language::input::LANG_SMTLIB_V2_5);
+        }
+      }
+      PARSER_STATE->setInfo(name.c_str() + 1, sexpr);
+      cmd->reset(new SetInfoCommand(name.c_str() + 1, sexpr));
+    }
+  ;
+
+setOptionInternal[CVC4::PtrCloser<CVC4::Command>* cmd]
+ at init {
+  std::string name;
+  SExpr sexpr;
+}
+  : keyword[name] symbolicExpr[sexpr]
+    { PARSER_STATE->setOption(name.c_str() + 1, sexpr);
+      cmd->reset(new SetOptionCommand(name.c_str() + 1, sexpr));
+      // Ugly that this changes the state of the parser; but
+      // global-declarations affects parsing, so we can't hold off
+      // on this until some SmtEngine eventually (if ever) executes it.
+      if(name == ":global-declarations") {
+        PARSER_STATE->setGlobalDeclarations(sexpr.getValue() == "true");
+      }
+    }
+  ;
+
+smt25Command[CVC4::PtrCloser<CVC4::Command>* cmd]
+ at declarations {
+  std::string name;
+  std::string fname;
+  Expr expr, expr2;
+  std::vector<std::pair<std::string, Type> > sortedVarNames;
+  SExpr sexpr;
+  Type t;
+  Expr func_app;
+  std::vector<Expr> bvs;
+  std::vector< std::vector<std::pair<std::string, Type> > > sortedVarNamesList;
+  std::vector<Expr> funcs;
+  std::vector<Expr> func_defs;
+  Expr aexpr;
+  CVC4::PtrCloser<CVC4::CommandSequence> seq;
+}
+    /* meta-info */
+  : META_INFO_TOK metaInfoInternal[cmd]
+
+    /* declare-const */
+  | DECLARE_CONST_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    symbol[name,CHECK_UNDECLARED,SYM_VARIABLE]
+    { PARSER_STATE->checkUserSymbol(name); }
+    sortSymbol[t,CHECK_DECLARED]
+    { Expr c = PARSER_STATE->mkVar(name, t);
+      cmd->reset(new DeclareFunctionCommand(name, c, t)); }
+
+    /* get model */
+  | GET_MODEL_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    { cmd->reset(new GetModelCommand()); }
+
+    /* echo */
+  | ECHO_TOK
+    ( simpleSymbolicExpr[sexpr]
+      { cmd->reset(new EchoCommand(sexpr.toString())); }
+    | { cmd->reset(new EchoCommand()); }
+    )
+
+    /* reset: reset everything, returning solver to initial state.
+     * Logic and options must be set again. */
+  | RESET_TOK
+    { cmd->reset(new ResetCommand());
+      PARSER_STATE->reset();
+    }
+    /* reset-assertions: reset assertions, assertion stack, declarations,
+     * etc., but the logic and options remain as they were. */
+  | RESET_ASSERTIONS_TOK
+    { cmd->reset(new ResetAssertionsCommand());
+      PARSER_STATE->resetAssertions();
+    }
+  | DEFINE_FUN_REC_TOK
+    { PARSER_STATE->checkThatLogicIsSet();
+      seq.reset(new CVC4::CommandSequence());
+    }
+    symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE]
+    { PARSER_STATE->checkUserSymbol(fname); }
+    LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK
+    sortSymbol[t,CHECK_DECLARED]
+    { if( sortedVarNames.size() > 0 ) {
+        std::vector<CVC4::Type> sorts;
+        sorts.reserve(sortedVarNames.size());
+        for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+            sortedVarNames.begin(), iend = sortedVarNames.end(); i != iend;
+            ++i) {
+          sorts.push_back((*i).second);
+        }
+        t = EXPR_MANAGER->mkFunctionType(sorts, t);
+      }
+      Expr func = PARSER_STATE->mkVar(fname, t);
+      seq->addCommand(new DeclareFunctionCommand(fname, func, t));
+      if( sortedVarNames.empty() ){
+        func_app = func;
+      }else{
+        std::vector< Expr > f_app;
+        f_app.push_back( func );
+        PARSER_STATE->pushScope(true);
+        for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+              sortedVarNames.begin(), iend = sortedVarNames.end(); i != iend;
+            ++i) {
+          Expr v = PARSER_STATE->mkBoundVar((*i).first, (*i).second);
+          bvs.push_back( v );
+          f_app.push_back( v );
+        }
+        func_app = MK_EXPR( kind::APPLY_UF, f_app );
+      }
+    }
+    term[expr, expr2]
+    { PARSER_STATE->popScope(); 
+      Expr as = MK_EXPR( kind::EQUAL, func_app, expr);
+      if( !bvs.empty() ){
+        std::string attr_name("fun-def");
+        aexpr = MK_EXPR(kind::INST_ATTRIBUTE, func_app);
+        aexpr = MK_EXPR(kind::INST_PATTERN_LIST, aexpr);
+        //set the attribute to denote this is a function definition
+        seq->addCommand( new SetUserAttributeCommand( attr_name, func_app ) );
+        //assert it
+        Expr boundVars = EXPR_MANAGER->mkExpr(kind::BOUND_VAR_LIST, bvs);
+        as = EXPR_MANAGER->mkExpr(kind::FORALL, boundVars, as, aexpr);
+      }
+      seq->addCommand( new AssertCommand(as, false) );
+      cmd->reset(seq.release());
+    }
+  | DEFINE_FUNS_REC_TOK
+    { PARSER_STATE->checkThatLogicIsSet();
+      seq.reset(new CVC4::CommandSequence());
+    }
+    LPAREN_TOK
+    ( LPAREN_TOK
+      symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE]
+      { PARSER_STATE->checkUserSymbol(fname); }
+      LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK
+      sortSymbol[t,CHECK_DECLARED]
+      { sortedVarNamesList.push_back( sortedVarNames );
+        if( sortedVarNamesList[0].size() > 0 ) {
+          if( !sortedVarNames.empty() ){
+            std::vector<CVC4::Type> sorts;
+            for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator
+                    i = sortedVarNames.begin(), iend = sortedVarNames.end();
+                i != iend; ++i) {
+              sorts.push_back((*i).second);
+            }
+            t = EXPR_MANAGER->mkFunctionType(sorts, t);
+          }
+        }
+        sortedVarNames.clear();
+        Expr func = PARSER_STATE->mkVar(fname, t);
+        seq->addCommand(new DeclareFunctionCommand(fname, func, t));
+        funcs.push_back( func );
+      }
+      RPAREN_TOK
+    )+
+    RPAREN_TOK
+    LPAREN_TOK
+    { 
+      //set up the first scope 
+      if( sortedVarNamesList.empty() ){
+        PARSER_STATE->parseError("Must define at least one function in "
+                                 "define-funs-rec");
+      }
+      PARSER_STATE->pushScope(true);
+      bvs.clear();
+      if( sortedVarNamesList[0].empty() ){
+        func_app = funcs[0];
+      }else{
+        std::vector< Expr > f_app;
+        f_app.push_back( funcs[0] );
+        for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator
+              i = sortedVarNamesList[0].begin(),
+              iend = sortedVarNamesList[0].end(); i != iend; ++i) {
+          Expr v = PARSER_STATE->mkBoundVar((*i).first, (*i).second);
+          bvs.push_back( v );
+          f_app.push_back( v );
+        }
+        func_app = MK_EXPR( kind::APPLY_UF, f_app );
+      }
+    }
+    (
+    term[expr,expr2]
+    { 
+      func_defs.push_back( expr );
+      Expr as = MK_EXPR( kind::EQUAL, func_app, expr );
+      if( !bvs.empty() ){
+        std::string attr_name("fun-def");
+        aexpr = MK_EXPR(kind::INST_ATTRIBUTE, func_app);
+        aexpr = MK_EXPR(kind::INST_PATTERN_LIST, aexpr );
+        //set the attribute to denote these are function definitions
+        seq->addCommand( new SetUserAttributeCommand( attr_name, func_app ) );
+        //assert it
+        as = EXPR_MANAGER->mkExpr( kind::FORALL,
+                      EXPR_MANAGER->mkExpr(kind::BOUND_VAR_LIST, bvs),
+                      as, aexpr);
+      }
+      seq->addCommand( new AssertCommand(as, false) );
+      //set up the next scope 
+      PARSER_STATE->popScope();
+      if( func_defs.size()<funcs.size() ){
+        PARSER_STATE->pushScope(true);
+        bvs.clear();
+        unsigned j = func_defs.size();
+        if( sortedVarNamesList[j].empty() ){
+          func_app = funcs[j];
+        }else{
+          std::vector< Expr > f_app;
+          f_app.push_back( funcs[j] );
+          for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator
+                  i = sortedVarNamesList[j].begin(),
+                  iend = sortedVarNamesList[j].end(); i != iend; ++i) {
+            Expr v = PARSER_STATE->mkBoundVar((*i).first, (*i).second);
+            bvs.push_back( v );
+            f_app.push_back( v );
+          }
+          func_app = MK_EXPR( kind::APPLY_UF, f_app );
+        }
+      }
+    }
+    )+
+    RPAREN_TOK
+    { if( funcs.size()!=func_defs.size() ){
+        PARSER_STATE->parseError(std::string(
+            "Number of functions defined does not match number listed in "
+            "define-funs-rec"));
+      }
+      cmd->reset(seq.release());
+    }
+  // CHECK_SAT_ASSUMING still being discussed
+  // GET_UNSAT_ASSUMPTIONS
+  ;
+
+extendedCommand[CVC4::PtrCloser<CVC4::Command>* cmd]
+ at declarations {
+  std::vector<CVC4::Datatype> dts;
+  Expr e, e2;
+  Type t;
+  std::string name;
+  std::vector<std::string> names;
+  std::vector<Expr> terms;
+  std::vector<Type> sorts;
+  std::vector<std::pair<std::string, Type> > sortedVarNames;
+  CVC4::PtrCloser<CVC4::CommandSequence> seq;
+}
+    /* Extended SMT-LIB set of commands syntax, not permitted in
+     * --smtlib2 compliance mode. */
+  : DECLARE_DATATYPES_TOK datatypesDefCommand[false, cmd]
+  | DECLARE_CODATATYPES_TOK datatypesDefCommand[true, cmd]
+  | rewriterulesCommand[cmd]
+
+    /* Support some of Z3's extended SMT-LIB commands */
+
+  | DECLARE_SORTS_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    { if(!PARSER_STATE->isTheoryEnabled(Smt2::THEORY_UF) &&
+         !PARSER_STATE->isTheoryEnabled(Smt2::THEORY_ARRAYS) &&
+         !PARSER_STATE->isTheoryEnabled(Smt2::THEORY_DATATYPES) &&
+         !PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS)) {
+        PARSER_STATE->parseErrorLogic("Free sort symbols not allowed in ");
+      }
+    }
+    { seq.reset(new CVC4::CommandSequence()); }
+    LPAREN_TOK
+    ( symbol[name,CHECK_UNDECLARED,SYM_SORT]
+      { PARSER_STATE->checkUserSymbol(name);
+        Type type = PARSER_STATE->mkSort(name);
+        seq->addCommand(new DeclareTypeCommand(name, 0, type));
+      }
+    )+
+    RPAREN_TOK
+    { cmd->reset(seq.release()); }
+
+  | DECLARE_FUNS_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    { seq.reset(new CVC4::CommandSequence()); }
+    LPAREN_TOK
+    ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE]
+      { PARSER_STATE->checkUserSymbol(name); }
+      nonemptySortList[sorts] RPAREN_TOK
+      { Type t;
+        if(sorts.size() > 1) {
+          if(!PARSER_STATE->isTheoryEnabled(Smt2::THEORY_UF)) {
+            PARSER_STATE->parseErrorLogic("Functions (of non-zero arity) "
+                                          "cannot be declared in logic ");
+          }
+          t = EXPR_MANAGER->mkFunctionType(sorts);
+        } else {
+          t = sorts[0];
+        }
+        Expr func = PARSER_STATE->mkVar(name, t);
+        seq->addCommand(new DeclareFunctionCommand(name, func, t));
+        sorts.clear();
+      }
+    )+
+    RPAREN_TOK
+    { cmd->reset(seq.release()); } 
+  | DECLARE_PREDS_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    { seq.reset(new CVC4::CommandSequence()); }
+    LPAREN_TOK
+    ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE]
+      { PARSER_STATE->checkUserSymbol(name); }
+      sortList[sorts] RPAREN_TOK
+      { Type t = EXPR_MANAGER->booleanType();
+        if(sorts.size() > 0) {
+          if(!PARSER_STATE->isTheoryEnabled(Smt2::THEORY_UF)) {
+            PARSER_STATE->parseErrorLogic("Predicates (of non-zero arity) "
+                                          "cannot be declared in logic ");
+          }
+          t = EXPR_MANAGER->mkFunctionType(sorts, t);
+        }
+        Expr func = PARSER_STATE->mkVar(name, t);
+        seq->addCommand(new DeclareFunctionCommand(name, func, t));
+        sorts.clear();
+      }
+    )+
+    RPAREN_TOK
+    { cmd->reset(seq.release()); }
+
+  | DEFINE_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    ( symbol[name,CHECK_UNDECLARED,SYM_VARIABLE]
+      { PARSER_STATE->checkUserSymbol(name); }
+      term[e,e2]
+      { Expr func = PARSER_STATE->mkFunction(name, e.getType(),
+                                             ExprManager::VAR_FLAG_DEFINED);
+        cmd->reset(new DefineFunctionCommand(name, func, e));
+      }
+    | LPAREN_TOK
+      symbol[name,CHECK_UNDECLARED,SYM_VARIABLE]
+      { PARSER_STATE->checkUserSymbol(name); }
+      sortedVarList[sortedVarNames] RPAREN_TOK
+      { /* add variables to parser state before parsing term */
+        Debug("parser") << "define fun: '" << name << "'" << std::endl;
+        PARSER_STATE->pushScope(true);
+        for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+              sortedVarNames.begin(), iend = sortedVarNames.end(); i != iend;
+            ++i) {
+          terms.push_back(PARSER_STATE->mkBoundVar((*i).first, (*i).second));
+        }
+      }
+      term[e,e2]
+      { PARSER_STATE->popScope();
+        // declare the name down here (while parsing term, signature
+        // must not be extended with the name itself; no recursion
+        // permitted)
+        Type t = e.getType();
+        if( sortedVarNames.size() > 0 ) {
+          std::vector<CVC4::Type> sorts;
+          sorts.reserve(sortedVarNames.size());
+          for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator
+                i = sortedVarNames.begin(), iend = sortedVarNames.end();
+              i != iend; ++i) {
+            sorts.push_back((*i).second);
+          }
+          t = EXPR_MANAGER->mkFunctionType(sorts, t);
+        }
+        Expr func = PARSER_STATE->mkFunction(name, t,
+                                             ExprManager::VAR_FLAG_DEFINED);
+        cmd->reset(new DefineFunctionCommand(name, func, terms, e));
+      }
+    )
+  | DEFINE_CONST_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    symbol[name,CHECK_UNDECLARED,SYM_VARIABLE]
+    { PARSER_STATE->checkUserSymbol(name); }
+    sortSymbol[t,CHECK_DECLARED]
+    { /* add variables to parser state before parsing term */
+      Debug("parser") << "define const: '" << name << "'" << std::endl;
+      PARSER_STATE->pushScope(true);
+      for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+            sortedVarNames.begin(), iend = sortedVarNames.end(); i != iend;
+          ++i) {
+        terms.push_back(PARSER_STATE->mkBoundVar((*i).first, (*i).second));
+      }
+    }
+    term[e, e2]
+    { PARSER_STATE->popScope();
+      // declare the name down here (while parsing term, signature
+      // must not be extended with the name itself; no recursion
+      // permitted)
+      Expr func = PARSER_STATE->mkFunction(name, t,
+                                           ExprManager::VAR_FLAG_DEFINED);
+      cmd->reset(new DefineFunctionCommand(name, func, terms, e));
+    }
+
+  | SIMPLIFY_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    term[e,e2]
+    { cmd->reset(new SimplifyCommand(e)); }
+  | GET_QE_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    term[e,e2]
+    { cmd->reset(new GetQuantifierEliminationCommand(e, true)); }
+  | GET_QE_DISJUNCT_TOK { PARSER_STATE->checkThatLogicIsSet(); }
+    term[e,e2]
+    { cmd->reset(new GetQuantifierEliminationCommand(e, false)); }
+  ;
+
+
+datatypesDefCommand[bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd]
+ at declarations {
+  std::vector<CVC4::Datatype> dts;
+  std::string name;
+  std::vector<Type> sorts;
+}
+  : { PARSER_STATE->checkThatLogicIsSet();
+    /* open a scope to keep the UnresolvedTypes contained */
+    PARSER_STATE->pushScope(true); }
+  LPAREN_TOK /* parametric sorts */
+  ( symbol[name,CHECK_UNDECLARED,SYM_SORT]
+    { sorts.push_back( PARSER_STATE->mkSort(name) ); }
+  )*
+  RPAREN_TOK
+  LPAREN_TOK ( LPAREN_TOK datatypeDef[isCo, dts, sorts] RPAREN_TOK )+ RPAREN_TOK
+  { PARSER_STATE->popScope();
+    cmd->reset(new DatatypeDeclarationCommand(
+        PARSER_STATE->mkMutualDatatypeTypes(dts)));
+  }
+  ;
+
+rewriterulesCommand[CVC4::PtrCloser<CVC4::Command>* cmd]
+ at declarations {
+  std::vector<std::pair<std::string, Type> > sortedVarNames;
+  std::vector<Expr> args, guards, heads, triggers;
+  Expr head, body, expr, expr2, bvl;
+  Kind kind;
+}
+  : /* rewrite rules */
+    REWRITE_RULE_TOK
+    LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK
+    {
+      kind = CVC4::kind::RR_REWRITE;
+      PARSER_STATE->pushScope(true);
+      for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+            sortedVarNames.begin(), iend = sortedVarNames.end();
+          i != iend;
+          ++i) {
+        args.push_back(PARSER_STATE->mkBoundVar((*i).first, (*i).second));
+      }
+      bvl = MK_EXPR(kind::BOUND_VAR_LIST, args);
+    }
+    LPAREN_TOK ( pattern[expr] { triggers.push_back( expr ); } )* RPAREN_TOK
+    LPAREN_TOK (termList[guards,expr])? RPAREN_TOK
+    term[head, expr2] term[body, expr2]
+    {
+      args.clear();
+      args.push_back(head);
+      args.push_back(body);
+      /* triggers */
+      if( !triggers.empty() ){
+        expr2 = MK_EXPR(kind::INST_PATTERN_LIST, triggers);
+        args.push_back(expr2);
+      };
+      expr = MK_EXPR(kind, args);
+      args.clear();
+      args.push_back(bvl);
+      /* guards */
+      switch( guards.size() ){
+      case 0:
+        args.push_back(MK_CONST(bool(true))); break;
+      case 1:
+        args.push_back(guards[0]); break;
+      default:
+        expr2 = MK_EXPR(kind::AND, guards);
+        args.push_back(expr2); break;
+      };
+      args.push_back(expr);
+      expr = MK_EXPR(CVC4::kind::REWRITE_RULE, args);
+      cmd->reset(new AssertCommand(expr, false)); }
+    /* propagation rule */
+  | rewritePropaKind[kind]
+    LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK
+    {
+      PARSER_STATE->pushScope(true);
+      for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+            sortedVarNames.begin(), iend = sortedVarNames.end();
+          i != iend;
+          ++i) {
+        args.push_back(PARSER_STATE->mkBoundVar((*i).first, (*i).second));
+      }
+      bvl = MK_EXPR(kind::BOUND_VAR_LIST, args);
+    }
+    LPAREN_TOK ( pattern[expr] { triggers.push_back( expr ); } )* RPAREN_TOK
+    LPAREN_TOK (termList[guards,expr])? RPAREN_TOK
+    LPAREN_TOK (termList[heads,expr])? RPAREN_TOK
+    term[body, expr2]
+    {
+      args.clear();
+      /* heads */
+      switch( heads.size() ){
+      case 0:
+        args.push_back(MK_CONST(bool(true))); break;
+      case 1:
+        args.push_back(heads[0]); break;
+      default:
+        expr2 = MK_EXPR(kind::AND, heads);
+        args.push_back(expr2); break;
+      };
+      args.push_back(body);
+      /* triggers */
+      if( !triggers.empty() ){
+        expr2 = MK_EXPR(kind::INST_PATTERN_LIST, triggers);
+        args.push_back(expr2);
+      };
+      expr = MK_EXPR(kind, args);
+      args.clear();
+      args.push_back(bvl);
+      /* guards */
+      switch( guards.size() ){
+      case 0:
+        args.push_back(MK_CONST(bool(true))); break;
+      case 1:
+        args.push_back(guards[0]); break;
+      default:
+        expr2 = MK_EXPR(kind::AND, guards);
+        args.push_back(expr2); break;
+      };
+      args.push_back(expr);
+      expr = MK_EXPR(CVC4::kind::REWRITE_RULE, args);
+      cmd->reset(new AssertCommand(expr, false));
+    }
+  ;
+
+rewritePropaKind[CVC4::Kind& kind]
+  : REDUCTION_RULE_TOK    { $kind = CVC4::kind::RR_REDUCTION; }
+  | PROPAGATION_RULE_TOK  { $kind = CVC4::kind::RR_DEDUCTION; }
+  ;
+
+pattern[CVC4::Expr& expr]
+ at declarations {
+  std::vector<Expr> patexpr;
+}
+  : LPAREN_TOK termList[patexpr,expr] RPAREN_TOK
+    {
+      expr = MK_EXPR(kind::INST_PATTERN, patexpr);
+    }
+  ;
+
+simpleSymbolicExprNoKeyword[CVC4::SExpr& sexpr]
+ at declarations {
+  CVC4::Kind k;
+  std::string s;
+  std::vector<unsigned int> s_vec;
+}
+  : INTEGER_LITERAL
+    { sexpr = SExpr(Integer(AntlrInput::tokenText($INTEGER_LITERAL))); }
+  | DECIMAL_LITERAL
+    { sexpr = SExpr(AntlrInput::tokenToRational($DECIMAL_LITERAL)); }
+  | HEX_LITERAL
+    { assert( AntlrInput::tokenText($HEX_LITERAL).find("#x") == 0 );
+      std::string hexString = AntlrInput::tokenTextSubstr($HEX_LITERAL, 2);
+      sexpr = SExpr(Integer(hexString, 16));
+    }
+  | BINARY_LITERAL
+    { assert( AntlrInput::tokenText($BINARY_LITERAL).find("#b") == 0 );
+      std::string binString = AntlrInput::tokenTextSubstr($BINARY_LITERAL, 2);
+      sexpr = SExpr(Integer(binString, 2));
+    }
+  | str[s,false]
+    { sexpr = SExpr(s); }
+//  | LPAREN_TOK STRCST_TOK
+//      ( INTEGER_LITERAL {
+//      s_vec.push_back( atoi( AntlrInput::tokenText($INTEGER_LITERAL) ) + 65 );
+//    } )* RPAREN_TOK
+//   {
+//  sexpr = SExpr( MK_CONST( ::CVC4::String(s_vec) ) );
+//  }
+  | symbol[s,CHECK_NONE,SYM_SORT]
+    { sexpr = SExpr(SExpr::Keyword(s)); }
+  | tok=(ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK
+        | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK
+        | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK
+        | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK
+        | RESET_TOK | RESET_ASSERTIONS_TOK | SET_LOGIC_TOK | SET_INFO_TOK
+        | GET_INFO_TOK | SET_OPTION_TOK | GET_OPTION_TOK | PUSH_TOK | POP_TOK
+        | DECLARE_DATATYPES_TOK | GET_MODEL_TOK | ECHO_TOK | REWRITE_RULE_TOK
+        | REDUCTION_RULE_TOK | PROPAGATION_RULE_TOK | SIMPLIFY_TOK)
+    { sexpr = SExpr(SExpr::Keyword(AntlrInput::tokenText($tok))); }
+  | builtinOp[k]
+    { std::stringstream ss;
+      ss << language::SetLanguage(CVC4::language::output::LANG_SMTLIB_V2_5)
+         << EXPR_MANAGER->mkConst(k);
+      sexpr = SExpr(ss.str());
+    }
+  ;
+
+keyword[std::string& s]
+  : KEYWORD
+    { s = AntlrInput::tokenText($KEYWORD); }
+  ;
+
+simpleSymbolicExpr[CVC4::SExpr& sexpr]
+  : simpleSymbolicExprNoKeyword[sexpr]
+  | KEYWORD
+    { sexpr = SExpr(AntlrInput::tokenText($KEYWORD)); }
+  ;
+
+symbolicExpr[CVC4::SExpr& sexpr]
+ at declarations {
+  std::vector<SExpr> children;
+}
+  : simpleSymbolicExpr[sexpr]
+  | LPAREN_TOK
+    ( symbolicExpr[sexpr] { children.push_back(sexpr); } )* RPAREN_TOK
+    { sexpr = SExpr(children); }
+  ;
+
+/**
+ * Matches a term.
+ * @return the expression representing the formula
+ */
+term[CVC4::Expr& expr, CVC4::Expr& expr2]
+ at init {
+  Debug("parser") << "term: " << AntlrInput::tokenText(LT(1)) << std::endl;
+  Kind kind = kind::NULL_EXPR;
+  Expr op;
+  std::string name, name2;
+  std::vector<Expr> args;
+  std::vector< std::pair<std::string, Type> > sortedVarNames;
+  Expr f, f2, f3, f4;
+  std::string attr;
+  Expr attexpr;
+  std::vector<Expr> patexprs;
+  std::hash_set<std::string, StringHashFunction> names;
+  std::vector< std::pair<std::string, Expr> > binders;
+  Type type;
+  std::string s;
+  bool isBuiltinOperator = false;
+  bool readLetSort = false;
+}
+  : /* a built-in operator application */
+    LPAREN_TOK builtinOp[kind] termList[args,expr] RPAREN_TOK
+    {
+      if( !PARSER_STATE->strictModeEnabled() &&
+          (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 be the only argument. */
+        assert( expr == args[0] );
+      } else if( CVC4::kind::isAssociative(kind) &&
+                 args.size() > EXPR_MANAGER->maxArity(kind) ) {
+        /* Special treatment for associative operators with lots of children */
+        expr = EXPR_MANAGER->mkAssociative(kind, args);
+      } else if( kind == CVC4::kind::MINUS && args.size() == 1 ) {
+        expr = MK_EXPR(CVC4::kind::UMINUS, args[0]);
+      } else if( ( kind == CVC4::kind::XOR || kind == CVC4::kind::MINUS ) &&
+                 args.size() > 2 ) {
+        /* left-associative, but CVC4 internally only supports 2 args */
+        expr = args[0];
+        for(size_t i = 1; i < args.size(); ++i) {
+          expr = MK_EXPR(kind, expr, args[i]);
+        }
+      } else if( kind == CVC4::kind::IMPLIES && args.size() > 2 ) {
+        /* right-associative, but CVC4 internally only supports 2 args */
+        expr = args[args.size() - 1];
+        for(size_t i = args.size() - 1; i > 0;) {
+          expr = MK_EXPR(kind, args[--i], expr);
+        }
+      } else if( ( kind == CVC4::kind::EQUAL ||
+                   kind == CVC4::kind::LT || kind == CVC4::kind::GT ||
+                   kind == CVC4::kind::LEQ || kind == CVC4::kind::GEQ ) &&
+                 args.size() > 2 ) {
+        /* "chainable", but CVC4 internally only supports 2 args */
+        expr = MK_EXPR(MK_CONST(Chain(kind)), args);
+      } else if( PARSER_STATE->strictModeEnabled() && kind == CVC4::kind::ABS &&
+                 args.size() == 1 && !args[0].getType().isInteger() ) {
+        /* first, check that ABS is even defined in this logic */
+        PARSER_STATE->checkOperator(kind, args.size());
+        PARSER_STATE->parseError("abs can only be applied to Int, not Real, "
+                                 "while in strict SMT-LIB compliance mode");
+      } else {
+        PARSER_STATE->checkOperator(kind, args.size());
+        expr = MK_EXPR(kind, args);
+      }
+    }
+  | LPAREN_TOK AS_TOK term[f, f2] sortSymbol[type, CHECK_DECLARED] RPAREN_TOK
+    {
+      if(f.getKind() == CVC4::kind::APPLY_CONSTRUCTOR && type.isDatatype()) {
+        std::vector<CVC4::Expr> v;
+        Expr e = f.getOperator();
+        const DatatypeConstructor& dtc =
+            Datatype::datatypeOf(e)[Datatype::indexOf(e)];
+        v.push_back(MK_EXPR( CVC4::kind::APPLY_TYPE_ASCRIPTION,
+                             MK_CONST(AscriptionType(dtc.getSpecializedConstructorType(type))), f.getOperator() ));
+        v.insert(v.end(), f.begin(), f.end());
+        expr = MK_EXPR(CVC4::kind::APPLY_CONSTRUCTOR, v);
+      } else if(f.getKind() == CVC4::kind::EMPTYSET) {
+        Debug("parser") << "Empty set encountered: " << f << " "
+                          << f2 << " " << type <<  std::endl;
+        expr = MK_CONST( ::CVC4::EmptySet(type) );
+      } else if(f.getKind() == CVC4::kind::UNIVERSE_SET) {
+        expr = EXPR_MANAGER->mkUniqueVar(type, kind::UNIVERSE_SET);
+      } else if(f.getKind() == CVC4::kind::SEP_NIL) {
+        //We don't want the nil reference to be a constant: for instance, it
+        //could be of type Int but is not a const rational. However, the
+        //expression has 0 children. So we convert to a SEP_NIL variable.
+        expr = EXPR_MANAGER->mkUniqueVar(type, kind::SEP_NIL);
+      } else {
+        if(f.getType() != type) {
+          PARSER_STATE->parseError("Type ascription not satisfied.");
+        }
+      }
+    }
+  | LPAREN_TOK quantOp[kind]
+    LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK
+    {
+      PARSER_STATE->pushScope(true);
+      for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+            sortedVarNames.begin(), iend = sortedVarNames.end();
+          i != iend;
+          ++i) {
+        args.push_back(PARSER_STATE->mkBoundVar((*i).first, (*i).second));
+      }
+      Expr bvl = MK_EXPR(kind::BOUND_VAR_LIST, args);
+      args.clear();
+      args.push_back(bvl);
+    }
+    term[f, f2] RPAREN_TOK
+    {
+      PARSER_STATE->popScope();
+      switch(f.getKind()) {
+      case CVC4::kind::RR_REWRITE:
+      case CVC4::kind::RR_REDUCTION:
+      case CVC4::kind::RR_DEDUCTION:
+        if(kind == CVC4::kind::EXISTS) {
+          PARSER_STATE->parseError("Use Exists instead of Forall for a rewrite "
+                                   "rule.");
+        }
+        args.push_back(f2); // guards
+        args.push_back(f); // rule
+        expr = MK_EXPR(CVC4::kind::REWRITE_RULE, args);
+        break;
+      default:
+        args.push_back(f);
+        if(! f2.isNull()){
+          args.push_back(f2);
+        }
+        expr = MK_EXPR(kind, args);
+      }
+    }
+  | LPAREN_TOK functionName[name, CHECK_NONE]
+    { isBuiltinOperator = PARSER_STATE->isOperatorEnabled(name);
+      if(isBuiltinOperator) {
+        /* A built-in operator not already handled by the lexer */
+        kind = PARSER_STATE->getOperatorKind(name);
+      } else {
+        /* A non-built-in function application */
+        PARSER_STATE->checkDeclaration(name, CHECK_DECLARED, SYM_VARIABLE);
+        //hack to allow constants with parentheses (disabled for now)
+        //if( PARSER_STATE->sygus() && !PARSER_STATE->isFunctionLike(name) ){
+        //  op = PARSER_STATE->getVariable(name);
+        //}else{
+        PARSER_STATE->checkFunctionLike(name);
+        const bool isDefinedFunction =
+          PARSER_STATE->isDefinedFunction(name);
+        if(isDefinedFunction) {
+          expr = PARSER_STATE->getFunction(name);
+          kind = CVC4::kind::APPLY;
+        } else {
+          expr = PARSER_STATE->getVariable(name);
+          Type t = expr.getType();
+          if(t.isConstructor()) {
+            kind = CVC4::kind::APPLY_CONSTRUCTOR;
+          } else if(t.isSelector()) {
+            kind = CVC4::kind::APPLY_SELECTOR;
+          } else if(t.isTester()) {
+            kind = CVC4::kind::APPLY_TESTER;
+          } else {
+            kind = CVC4::kind::APPLY_UF;
+          }
+        }
+        args.push_back(expr);
+      }
+        }
+    //(termList[args,expr])? RPAREN_TOK
+    termList[args,expr] RPAREN_TOK
+    { Debug("parser") << "args has size " << args.size() << std::endl
+                      << "expr is " << expr << std::endl;
+      for(std::vector<Expr>::iterator i = args.begin(); i != args.end(); ++i) {
+        Debug("parser") << "++ " << *i << std::endl;
+      }
+      if(isBuiltinOperator) {
+        PARSER_STATE->checkOperator(kind, args.size());
+      }
+      expr = MK_EXPR(kind, args); 
+    }
+
+  | LPAREN_TOK
+    ( /* An indexed function application */
+      indexedFunctionName[op] termList[args,expr] RPAREN_TOK
+      { expr = MK_EXPR(op, args);
+        PARSER_STATE->checkOperator(expr.getKind(), args.size());
+      }
+    | /* Array constant (in Z3 syntax) */
+      LPAREN_TOK AS_TOK CONST_TOK sortSymbol[type, CHECK_DECLARED]
+      RPAREN_TOK term[f, f2] RPAREN_TOK
+      {
+        if(!type.isArray()) {
+          std::stringstream ss;
+          ss << "expected array constant term, but cast is not of array type"
+             << std::endl
+             << "cast type: " << type;
+          PARSER_STATE->parseError(ss.str());
+        }
+        if(!f.isConst()) {
+          std::stringstream ss;
+          ss << "expected constant term inside array constant, but found "
+             << "nonconstant term:" << std::endl
+             << "the term: " << f;
+          PARSER_STATE->parseError(ss.str());
+        }
+        if(!ArrayType(type).getConstituentType().isComparableTo(f.getType())) {
+          std::stringstream ss;
+          ss << "type mismatch inside array constant term:" << std::endl
+             << "array type:          " << type << std::endl
+             << "expected const type: " << ArrayType(type).getConstituentType()
+             << std::endl
+             << "computed const type: " << f.getType();
+          PARSER_STATE->parseError(ss.str());
+        }
+        expr = MK_CONST( ::CVC4::ArrayStoreAll(type, f) );
+      }
+    )
+  | /* a let binding */
+    LPAREN_TOK LET_TOK LPAREN_TOK
+    { PARSER_STATE->pushScope(true); }
+    ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE]
+      (term[expr, f2] | sortSymbol[type,CHECK_DECLARED]
+       { readLetSort = true; } term[expr, f2]
+      )
+      RPAREN_TOK
+      // this is a parallel let, so we have to save up all the contributions
+      // of the let and define them only later on
+      { if( !PARSER_STATE->sygus() && readLetSort ){
+          PARSER_STATE->parseError("Bad syntax for let term.");
+        }else if(names.count(name) == 1) {
+          std::stringstream ss;
+          ss << "warning: symbol `" << name << "' bound multiple times by let;"
+             << " the last binding will be used, shadowing earlier ones";
+          PARSER_STATE->warning(ss.str());
+        } else {
+          names.insert(name);
+        }
+        binders.push_back(std::make_pair(name, expr)); } )+
+    { // now implement these bindings
+      for(std::vector< std::pair<std::string, Expr> >::iterator
+            i = binders.begin(); i != binders.end(); ++i) {
+        PARSER_STATE->defineVar((*i).first, (*i).second);
+      }
+    }
+    RPAREN_TOK
+    term[expr, f2]
+    RPAREN_TOK
+    { PARSER_STATE->popScope(); }
+  | symbol[name,CHECK_NONE,SYM_VARIABLE] SYGUS_ENUM_CONS_TOK
+    symbol[name2,CHECK_NONE,SYM_VARIABLE]
+    { std::string cname = name + "__Enum__" + name2;
+      Debug("parser-sygus") << "Check for enum const " << cname << std::endl;
+      expr = PARSER_STATE->getVariable(cname);
+      // expr.getType().isConstructor() &&
+      // ConstructorType(expr.getType()).getArity()==0;
+      expr = MK_EXPR(CVC4::kind::APPLY_CONSTRUCTOR, expr);
+    }
+    /* a variable */
+  | symbol[name,CHECK_DECLARED,SYM_VARIABLE]
+    { if( PARSER_STATE->sygus() && name[0]=='-' && 
+          name.find_first_not_of("0123456789", 1) == std::string::npos ){
+        //allow unary minus in sygus
+        expr = MK_CONST(Rational(name));
+      }else{
+        const bool isDefinedFunction =
+          PARSER_STATE->isDefinedFunction(name);
+        if(PARSER_STATE->isAbstractValue(name)) {
+          expr = PARSER_STATE->mkAbstractValue(name);
+        } else if(isDefinedFunction) {
+          expr = MK_EXPR(CVC4::kind::APPLY,
+                        PARSER_STATE->getFunction(name));
+        } else {
+          expr = PARSER_STATE->getVariable(name);
+          Type t = PARSER_STATE->getType(name);
+          if(t.isConstructor() && ConstructorType(t).getArity() == 0) {
+            // don't require parentheses, immediately turn it into an apply
+            expr = MK_EXPR(CVC4::kind::APPLY_CONSTRUCTOR, expr);
+          }
+        }
+      }
+    }
+
+    /* attributed expressions */
+  | LPAREN_TOK ATTRIBUTE_TOK term[expr, f2]
+    ( attribute[expr, attexpr, attr]
+      { if( ! attexpr.isNull()) {
+          patexprs.push_back( attexpr );
+        }
+      }
+    )+ RPAREN_TOK
+    {
+      if(attr == ":rewrite-rule") {
+        Expr guard;
+        Expr body;
+        if(expr[1].getKind() == kind::IMPLIES ||
+           expr[1].getKind() == kind::EQUAL) {
+          guard = expr[0];
+          body = expr[1];
+        } else {
+          guard = MK_CONST(bool(true));
+          body = expr;
+        }
+        expr2 = guard;
+        args.push_back(body[0]);
+        args.push_back(body[1]);
+        if(!f2.isNull()) {
+          args.push_back(f2);
+        }
+
+        if( body.getKind()==kind::IMPLIES ){  
+          kind = kind::RR_DEDUCTION;
+        }else if( body.getKind()==kind::EQUAL ){
+          kind = body[0].getType().isBoolean() ? kind::RR_REDUCTION : kind::RR_REWRITE;
+        }else{
+          PARSER_STATE->parseError("Error parsing rewrite rule.");
+        }
+        expr = MK_EXPR( kind, args );
+      } else if(! patexprs.empty()) {
+        if( !f2.isNull() && f2.getKind()==kind::INST_PATTERN_LIST ){
+          for( size_t i=0; i<f2.getNumChildren(); i++ ){
+            if( f2[i].getKind()==kind::INST_PATTERN ){
+              patexprs.push_back( f2[i] );
+            }else{
+              std::stringstream ss;
+              ss << "warning: rewrite rules do not support " << f2[i]
+                 << " within instantiation pattern list";
+              PARSER_STATE->warning(ss.str());
+            }
+          }
+        }
+        expr2 = MK_EXPR(kind::INST_PATTERN_LIST, patexprs);
+      } else {
+        expr2 = f2;
+      }
+    }
+    /* constants */
+  | INTEGER_LITERAL
+    { expr = MK_CONST( AntlrInput::tokenToInteger($INTEGER_LITERAL) ); }
+
+  | DECIMAL_LITERAL
+    { // FIXME: This doesn't work because an SMT rational is not a
+      // valid GMP rational string
+      expr = MK_CONST( AntlrInput::tokenToRational($DECIMAL_LITERAL) ); }
+
+  | LPAREN_TOK INDEX_TOK 
+    ( bvLit=SIMPLE_SYMBOL size=INTEGER_LITERAL 
+      { if(AntlrInput::tokenText($bvLit).find("bv") == 0) {
+           expr = MK_CONST( AntlrInput::tokenToBitvector($bvLit, $size) );
+        } else {
+           PARSER_STATE->parseError("Unexpected symbol `" +
+                                    AntlrInput::tokenText($bvLit) + "'");
+        }
+      }
+    | FP_PINF_TOK eb=INTEGER_LITERAL sb=INTEGER_LITERAL
+      { expr = MK_CONST(FloatingPoint(AntlrInput::tokenToUnsigned($eb),
+                                      AntlrInput::tokenToUnsigned($sb),
+                                      +INFINITY)); }
+    | FP_NINF_TOK eb=INTEGER_LITERAL sb=INTEGER_LITERAL
+      { expr = MK_CONST(FloatingPoint(AntlrInput::tokenToUnsigned($eb),
+                                      AntlrInput::tokenToUnsigned($sb),
+                                     -INFINITY)); }
+    | FP_NAN_TOK eb=INTEGER_LITERAL sb=INTEGER_LITERAL
+      { expr = MK_CONST(FloatingPoint(AntlrInput::tokenToUnsigned($eb),
+                                      AntlrInput::tokenToUnsigned($sb),
+                                      NAN)); }
+    // NOTE: Theory parametric constants go here
+
+    )
+    RPAREN_TOK
+
+  | HEX_LITERAL
+    { assert( AntlrInput::tokenText($HEX_LITERAL).find("#x") == 0 );
+      std::string hexString = AntlrInput::tokenTextSubstr($HEX_LITERAL, 2);
+      expr = MK_CONST( BitVector(hexString, 16) ); }
+
+  | BINARY_LITERAL
+    { assert( AntlrInput::tokenText($BINARY_LITERAL).find("#b") == 0 );
+      std::string binString = AntlrInput::tokenTextSubstr($BINARY_LITERAL, 2);
+      expr = MK_CONST( BitVector(binString, 2) ); }
+
+  | str[s,false]
+    { expr = MK_CONST( ::CVC4::String(s) ); }
+  | FP_RNE_TOK      { expr = MK_CONST(roundNearestTiesToEven); }
+  | FP_RNA_TOK      { expr = MK_CONST(roundNearestTiesToAway); }
+  | FP_RTP_TOK      { expr = MK_CONST(roundTowardPositive); }
+  | FP_RTN_TOK      { expr = MK_CONST(roundTowardNegative); }
+  | FP_RTZ_TOK      { expr = MK_CONST(roundTowardZero); }
+  | FP_RNE_FULL_TOK { expr = MK_CONST(roundNearestTiesToEven); }
+  | FP_RNA_FULL_TOK { expr = MK_CONST(roundNearestTiesToAway); }
+  | FP_RTP_FULL_TOK { expr = MK_CONST(roundTowardPositive); }
+  | FP_RTN_FULL_TOK { expr = MK_CONST(roundTowardNegative); }
+  | FP_RTZ_FULL_TOK { expr = MK_CONST(roundTowardZero); }
+
+  | RENOSTR_TOK
+    { std::vector< Expr > nvec;
+      expr = MK_EXPR( CVC4::kind::REGEXP_EMPTY, nvec );
+    }
+
+  | REALLCHAR_TOK
+    { std::vector< Expr > nvec;
+      expr = MK_EXPR( CVC4::kind::REGEXP_SIGMA, nvec );
+    }
+
+  | EMPTYSET_TOK
+    { expr = MK_CONST( ::CVC4::EmptySet(Type())); }
+
+  | UNIVSET_TOK
+    { //booleanType is placeholder here since we don't have type info without type annotation
+      expr = EXPR_MANAGER->mkUniqueVar(EXPR_MANAGER->booleanType(), kind::UNIVERSE_SET); }
+
+  | NILREF_TOK
+    { //booleanType is placeholder here since we don't have type info without type annotation
+      expr = EXPR_MANAGER->mkUniqueVar(EXPR_MANAGER->booleanType(), kind::SEP_NIL); }
+    // NOTE: Theory constants go here
+  ;
+
+/**
+ * Read attribute
+ */
+attribute[CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& attr]
+ at init {
+  SExpr sexpr;
+  Expr patexpr;
+  std::vector<Expr> patexprs;
+  Expr e2;
+  bool hasValue = false;
+}
+  : KEYWORD ( simpleSymbolicExprNoKeyword[sexpr] { hasValue = true; } )?
+  {
+    attr = AntlrInput::tokenText($KEYWORD);
+    // EXPR_MANAGER->setNamedAttribute( expr, attr );
+    if(attr == ":rewrite-rule") {
+      if(hasValue) {
+        std::stringstream ss;
+        ss << "warning: Attribute " << attr
+           << " does not take a value (ignoring)";
+        PARSER_STATE->warning(ss.str());
+      }
+      // do nothing
+    } else if(attr==":axiom" || attr==":conjecture" || attr==":fun-def" ||
+              attr==":sygus" || attr==":synthesis") {
+      if(hasValue) {
+        std::stringstream ss;
+        ss << "warning: Attribute " << attr
+           << " does not take a value (ignoring)";
+        PARSER_STATE->warning(ss.str());
+      }
+      Expr avar;
+      bool success = true;
+      std::string attr_name = attr;
+      attr_name.erase( attr_name.begin() );
+      if( attr==":fun-def" ){
+        if( expr.getKind()!=kind::EQUAL || expr[0].getKind()!=kind::APPLY_UF ){
+          success = false;
+        }else{
+          FunctionType t = (FunctionType)expr[0].getOperator().getType();
+          for( unsigned i=0; i<expr[0].getNumChildren(); i++ ){
+            if( expr[0][i].getKind() != kind::BOUND_VARIABLE ||
+                expr[0][i].getType() != t.getArgTypes()[i] ){
+              success = false;
+              break;
+            }else{
+              for( unsigned j=0; j<i; j++ ){
+                if( expr[0][j]==expr[0][i] ){
+                  success = false;
+                  break;
+                }
+              }
+            }
+          }
+        }
+        if( !success ){
+          std::stringstream ss;
+          ss << "warning: Function definition should be an equality whose LHS "
+             << "is an uninterpreted function applied to unique variables.";
+          PARSER_STATE->warning(ss.str());
+        }else{
+          avar = expr[0];
+        }
+      }else{
+        Type t = EXPR_MANAGER->booleanType();
+        avar = PARSER_STATE->mkVar(attr_name, t);
+      }
+      if( success ){
+        //Will set the attribute on auxiliary var (preserves attribute on
+        //formula through rewriting).
+        retExpr = MK_EXPR(kind::INST_ATTRIBUTE, avar);
+        Command* c = new SetUserAttributeCommand( attr_name, avar );
+        c->setMuted(true);
+        PARSER_STATE->preemptCommand(c);
+      }
+    } else {
+      PARSER_STATE->attributeNotSupported(attr);
+    }
+  }
+  | ATTRIBUTE_PATTERN_TOK LPAREN_TOK
+    ( term[patexpr, e2]
+      { patexprs.push_back( patexpr ); }
+    )+ RPAREN_TOK
+    {
+      attr = std::string(":pattern");
+      retExpr = MK_EXPR(kind::INST_PATTERN, patexprs);
+    }
+  | ATTRIBUTE_NO_PATTERN_TOK term[patexpr, e2]
+    {
+      attr = std::string(":no-pattern");
+      retExpr = MK_EXPR(kind::INST_NO_PATTERN, patexpr);
+    }
+  | tok=( ATTRIBUTE_INST_LEVEL | ATTRIBUTE_RR_PRIORITY ) INTEGER_LITERAL
+    {
+      Expr n = MK_CONST( AntlrInput::tokenToInteger($INTEGER_LITERAL) );
+      std::vector<Expr> values;
+      values.push_back( n );
+      std::string attr_name(AntlrInput::tokenText($tok));
+      attr_name.erase( attr_name.begin() );
+      Type t = EXPR_MANAGER->booleanType();
+      Expr avar = PARSER_STATE->mkVar(attr_name, t);
+      retExpr = MK_EXPR(kind::INST_ATTRIBUTE, avar);
+      Command* c = new SetUserAttributeCommand( attr_name, avar, values );
+      c->setMuted(true);
+      PARSER_STATE->preemptCommand(c);
+    }
+  | ATTRIBUTE_NAMED_TOK symbolicExpr[sexpr]
+    {
+      attr = std::string(":named");
+      if(!sexpr.isKeyword()) {
+        PARSER_STATE->parseError("improperly formed :named annotation");
+      }
+      std::string name = sexpr.getValue();
+      PARSER_STATE->checkUserSymbol(name);
+      // ensure expr is a closed subterm
+      std::set<Expr> freeVars;
+      if(!isClosed(expr, freeVars)) {
+        assert(!freeVars.empty());
+        std::stringstream ss;
+        ss << ":named annotations can only name terms that are closed; this "
+           << "one contains free variables:";
+        for(std::set<Expr>::const_iterator i = freeVars.begin();
+            i != freeVars.end(); ++i) {
+          ss << " " << *i;
+        }
+        PARSER_STATE->parseError(ss.str());
+      }
+      // check that sexpr is a fresh function symbol, and reserve it
+      PARSER_STATE->reserveSymbolAtAssertionLevel(name);
+      // define it
+      Expr func = PARSER_STATE->mkFunction(name, expr.getType());
+      // remember the last term to have been given a :named attribute
+      PARSER_STATE->setLastNamedTerm(expr, name);
+      // bind name to expr with define-fun
+      Command* c =
+        new DefineNamedFunctionCommand(name, func, std::vector<Expr>(), expr);
+      c->setMuted(true);
+      PARSER_STATE->preemptCommand(c);
+    }
+  ;
+
+/**
+ * Matches a bit-vector operator (the ones parametrized by numbers)
+ */
+indexedFunctionName[CVC4::Expr& op]
+  : LPAREN_TOK INDEX_TOK
+    ( 'extract' n1=INTEGER_LITERAL n2=INTEGER_LITERAL
+      { op = MK_CONST(BitVectorExtract(AntlrInput::tokenToUnsigned($n1),
+                                       AntlrInput::tokenToUnsigned($n2))); }
+    | 'repeat' n=INTEGER_LITERAL
+      { op = MK_CONST(BitVectorRepeat(AntlrInput::tokenToUnsigned($n))); }
+    | 'zero_extend' n=INTEGER_LITERAL
+      { op = MK_CONST(BitVectorZeroExtend(AntlrInput::tokenToUnsigned($n))); }
+    | 'sign_extend' n=INTEGER_LITERAL
+      { op = MK_CONST(BitVectorSignExtend(AntlrInput::tokenToUnsigned($n))); }
+    | 'rotate_left' n=INTEGER_LITERAL
+      { op = MK_CONST(BitVectorRotateLeft(AntlrInput::tokenToUnsigned($n))); }
+    | 'rotate_right' n=INTEGER_LITERAL
+      { op = MK_CONST(BitVectorRotateRight(AntlrInput::tokenToUnsigned($n))); }
+    | DIVISIBLE_TOK n=INTEGER_LITERAL
+      { op = MK_CONST(Divisible(AntlrInput::tokenToUnsigned($n))); }
+    | INT2BV_TOK n=INTEGER_LITERAL
+      { op = MK_CONST(IntToBitVector(AntlrInput::tokenToUnsigned($n)));
+        if(PARSER_STATE->strictModeEnabled()) {
+          PARSER_STATE->parseError(
+              "bv2nat and int2bv are not part of SMT-LIB, and aren't available "
+              "in SMT-LIB strict compliance mode");
+        } }
+    | FP_PINF_TOK eb=INTEGER_LITERAL sb=INTEGER_LITERAL
+      { op = MK_CONST(FloatingPoint(AntlrInput::tokenToUnsigned($eb),
+                                    AntlrInput::tokenToUnsigned($sb),
+                                    +INFINITY)); }
+    | FP_NINF_TOK eb=INTEGER_LITERAL sb=INTEGER_LITERAL
+      { op = MK_CONST(FloatingPoint(AntlrInput::tokenToUnsigned($eb),
+                                    AntlrInput::tokenToUnsigned($sb),
+                                    -INFINITY)); }
+    | FP_NAN_TOK eb=INTEGER_LITERAL sb=INTEGER_LITERAL
+      { op = MK_CONST(FloatingPoint(AntlrInput::tokenToUnsigned($eb),
+                                    AntlrInput::tokenToUnsigned($sb),
+                                    NAN)); }
+    | FP_PZERO_TOK eb=INTEGER_LITERAL sb=INTEGER_LITERAL
+      { op = MK_CONST(FloatingPoint(AntlrInput::tokenToUnsigned($eb),
+                                    AntlrInput::tokenToUnsigned($sb),
+                                    +0.0)); }
+    | FP_NZERO_TOK eb=INTEGER_LITERAL sb=INTEGER_LITERAL
+      { op = MK_CONST(FloatingPoint(AntlrInput::tokenToUnsigned($eb),
+                                    AntlrInput::tokenToUnsigned($sb),
+                                    -0.0)); }
+    | FP_TO_FP_TOK eb=INTEGER_LITERAL sb=INTEGER_LITERAL
+      { op = MK_CONST(FloatingPointToFPGeneric(
+                AntlrInput::tokenToUnsigned($eb),
+                AntlrInput::tokenToUnsigned($sb)));
+      }
+    | FP_TO_FPBV_TOK eb=INTEGER_LITERAL sb=INTEGER_LITERAL
+      { op = MK_CONST(FloatingPointToFPIEEEBitVector(
+                AntlrInput::tokenToUnsigned($eb),
+                AntlrInput::tokenToUnsigned($sb)));
+      }
+    | FP_TO_FPFP_TOK eb=INTEGER_LITERAL sb=INTEGER_LITERAL
+      { op = MK_CONST(FloatingPointToFPFloatingPoint(
+                AntlrInput::tokenToUnsigned($eb),
+                AntlrInput::tokenToUnsigned($sb)));
+      }
+    | FP_TO_FPR_TOK eb=INTEGER_LITERAL sb=INTEGER_LITERAL
+      { op = MK_CONST(FloatingPointToFPReal(AntlrInput::tokenToUnsigned($eb),
+                                            AntlrInput::tokenToUnsigned($sb)));
+      }
+    | FP_TO_FPS_TOK eb=INTEGER_LITERAL sb=INTEGER_LITERAL
+      { op = MK_CONST(FloatingPointToFPSignedBitVector(
+                AntlrInput::tokenToUnsigned($eb),
+                AntlrInput::tokenToUnsigned($sb)));
+      }
+    | FP_TO_FPU_TOK eb=INTEGER_LITERAL sb=INTEGER_LITERAL
+      { op = MK_CONST(FloatingPointToFPUnsignedBitVector(
+                AntlrInput::tokenToUnsigned($eb),
+                AntlrInput::tokenToUnsigned($sb)));
+      }
+    | FP_TO_UBV_TOK m=INTEGER_LITERAL
+      { op = MK_CONST(FloatingPointToUBV(AntlrInput::tokenToUnsigned($m))); }
+    | FP_TO_SBV_TOK m=INTEGER_LITERAL
+      { op = MK_CONST(FloatingPointToSBV(AntlrInput::tokenToUnsigned($m))); }
+    | badIndexedFunctionName
+    )
+    RPAREN_TOK
+  ;
+
+/**
+ * Matches an erroneous indexed function name (and args) for better
+ * error reporting.
+ */
+badIndexedFunctionName
+ at declarations {
+  std::string name;
+}
+  : id=(SIMPLE_SYMBOL | QUOTED_SYMBOL | UNTERMINATED_QUOTED_SYMBOL)
+    { PARSER_STATE->parseError(std::string("Unknown indexed function `") +
+          AntlrInput::tokenText($id) + "'");
+    }
+  ;
+
+/**
+ * Matches a sequence of terms and puts them into the formulas
+ * vector.
+ * @param formulas the vector to fill with terms
+ * @param expr an Expr reference for the elements of the sequence
+ */
+/* NOTE: We pass an Expr in here just to avoid allocating a fresh Expr every
+ * time through this rule. */
+termList[std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr]
+ at declarations {
+  Expr expr2;
+}
+  : ( term[expr, expr2] { formulas.push_back(expr); } )+
+  ;
+
+/**
+ * Matches a string, and strips off the quotes.
+ */
+str[std::string& s, bool fsmtlib]
+  : STRING_LITERAL_2_0
+    { s = AntlrInput::tokenText($STRING_LITERAL_2_0);
+      /* strip off the quotes */
+      s = s.substr(1, s.size() - 2);
+      for(size_t i=0; i<s.size(); i++) {
+        if((unsigned)s[i] > 127 && !isprint(s[i])) {
+          PARSER_STATE->parseError("Extended/unprintable characters are not "
+                                   "part of SMT-LIB, and they must be encoded "
+                                   "as escape sequences");
+        }
+      }
+      if(fsmtlib) {
+        /* handle SMT-LIB standard escapes '\\' and '\"' */
+        char* p_orig = strdup(s.c_str());
+        char *p = p_orig, *q = p_orig;
+        while(*q != '\0') {
+          if(*q == '\\') {
+            ++q;
+            if(*q == '\\' || *q == '"') {
+              *p++ = *q++;
+            } else {
+              assert(*q != '\0');
+              *p++ = '\\';
+              *p++ = *q++;
+            }
+          } else {
+            *p++ = *q++;
+          }
+        }
+        *p = '\0';
+        s = p_orig;
+        free(p_orig);
+      }
+    }
+  | STRING_LITERAL_2_5
+    { s = AntlrInput::tokenText($STRING_LITERAL_2_5);
+      /* strip off the quotes */
+      s = s.substr(1, s.size() - 2);
+      for(size_t i=0; i<s.size(); i++) {
+        if((unsigned)s[i] > 127 && !isprint(s[i])) {
+          PARSER_STATE->parseError("Extended/unprintable characters are not "
+                                   "part of SMT-LIB, and they must be encoded "
+                                   "as escape sequences");
+        }
+      }
+      // In the 2.5 version, always handle escapes (regardless of fsmtlib flag).
+      char* p_orig = strdup(s.c_str());
+      char *p = p_orig, *q = p_orig;
+      while(*q != '\0') {
+        if(*q == '"') {
+          ++q;
+          assert(*q == '"');
+        }
+        *p++ = *q++;
+      }
+      *p = '\0';
+      s = p_orig;
+      free(p_orig);
+    }
+  ;
+
+/**
+ * Matches a builtin operator symbol and sets kind to its associated Expr kind.
+ */
+builtinOp[CVC4::Kind& kind]
+ at init {
+  Debug("parser") << "builtin: " << AntlrInput::tokenText(LT(1)) << std::endl;
+}
+  : NOT_TOK      { $kind = CVC4::kind::NOT;     }
+  | IMPLIES_TOK  { $kind = CVC4::kind::IMPLIES; }
+  | AND_TOK      { $kind = CVC4::kind::AND;     }
+  | OR_TOK       { $kind = CVC4::kind::OR;      }
+  | XOR_TOK      { $kind = CVC4::kind::XOR;     }
+  | EQUAL_TOK    { $kind = CVC4::kind::EQUAL;   }
+  | DISTINCT_TOK { $kind = CVC4::kind::DISTINCT; }
+  | ITE_TOK      { $kind = CVC4::kind::ITE; }
+  | GREATER_THAN_TOK
+                 { $kind = CVC4::kind::GT; }
+  | GREATER_THAN_EQUAL_TOK
+                 { $kind = CVC4::kind::GEQ; }
+  | LESS_THAN_EQUAL_TOK
+                 { $kind = CVC4::kind::LEQ; }
+  | LESS_THAN_TOK
+                 { $kind = CVC4::kind::LT; }
+  | PLUS_TOK     { $kind = CVC4::kind::PLUS; }
+  | MINUS_TOK    { $kind = CVC4::kind::MINUS; }
+  | STAR_TOK     { $kind = CVC4::kind::MULT; }
+  | DIV_TOK      { $kind = CVC4::kind::DIVISION; }
+
+  | BV2NAT_TOK
+    { $kind = CVC4::kind::BITVECTOR_TO_NAT;
+      if(PARSER_STATE->strictModeEnabled()) {
+        PARSER_STATE->parseError("bv2nat and int2bv are not part of SMT-LIB, "
+                                 "and aren't available in SMT-LIB strict "
+                                 "compliance mode");
+      }
+    }
+
+  | DTSIZE_TOK       { $kind = CVC4::kind::DT_SIZE; }
+  | FMFCARD_TOK      { $kind = CVC4::kind::CARDINALITY_CONSTRAINT; }
+  | FMFCARDVAL_TOK   { $kind = CVC4::kind::CARDINALITY_VALUE; }
+  | INST_CLOSURE_TOK { $kind = CVC4::kind::INST_CLOSURE; }
+  
+  // NOTE: Theory operators no longer go here, add to smt2.cpp. Only
+  // special cases may go here. When this comment was written (2015
+  // Apr), the special cases were: core theory operators, arith
+  // operators which start with symbols like * / + >= etc, quantifier
+  // theory operators, and operators which depended on parser's state
+  // to accept or reject.
+  ;
+
+quantOp[CVC4::Kind& kind]
+ at init {
+  Debug("parser") << "quant: " << AntlrInput::tokenText(LT(1)) << std::endl;
+}
+  : EXISTS_TOK    { $kind = CVC4::kind::EXISTS; }
+  | FORALL_TOK    { $kind = CVC4::kind::FORALL; }
+  ;
+
+/**
+ * Matches a (possibly undeclared) function symbol (returning the string)
+ * @param check what kind of check to do with the symbol
+ */
+functionName[std::string& name, CVC4::parser::DeclarationCheck check]
+  : symbol[name,check,SYM_VARIABLE]
+  ;
+
+/**
+ * Matches a sequence of sort symbols and fills them into the given
+ * vector.
+ */
+sortList[std::vector<CVC4::Type>& sorts]
+ at declarations {
+  Type t;
+}
+  : ( sortSymbol[t,CHECK_DECLARED] { sorts.push_back(t); } )*
+  ;
+
+nonemptySortList[std::vector<CVC4::Type>& sorts]
+ at declarations {
+  Type t;
+}
+  : ( sortSymbol[t,CHECK_DECLARED] { sorts.push_back(t); } )+
+  ;
+
+/**
+ * Matches a sequence of (variable,sort) symbol pairs and fills them
+ * into the given vector.
+ */
+sortedVarList[std::vector<std::pair<std::string, CVC4::Type> >& sortedVars]
+ at declarations {
+  std::string name;
+  Type t;
+}
+  : ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE]
+      sortSymbol[t,CHECK_DECLARED] RPAREN_TOK
+      { sortedVars.push_back(make_pair(name, t)); }
+    )*
+  ;
+
+/**
+ * Matches the sort symbol, which can be an arbitrary symbol.
+ * @param check the check to perform on the name
+ */
+sortName[std::string& name, CVC4::parser::DeclarationCheck check]
+  : symbol[name,check,SYM_SORT]
+  ;
+
+sortSymbol[CVC4::Type& t, CVC4::parser::DeclarationCheck check]
+ at declarations {
+  std::string name;
+  std::vector<CVC4::Type> args;
+  std::vector<uint64_t> numerals;
+  bool indexed = false;
+}
+  : sortName[name,CHECK_NONE]
+    {
+      if(check == CHECK_DECLARED || PARSER_STATE->isDeclared(name, SYM_SORT)) {
+        t = PARSER_STATE->getSort(name);
+      } else {
+        t = PARSER_STATE->mkUnresolvedType(name);
+      }
+    }
+  | LPAREN_TOK (INDEX_TOK {indexed = true;} | {indexed = false;})
+    symbol[name,CHECK_NONE,SYM_SORT]
+    ( nonemptyNumeralList[numerals]
+      { // allow sygus inputs to elide the `_'
+        if( !indexed && !PARSER_STATE->sygus() ) {
+          std::stringstream ss;
+          ss << "SMT-LIB requires use of an indexed sort here, e.g. (_ " << name
+             << " ...)";
+          PARSER_STATE->parseError(ss.str());
+        }
+        if( name == "BitVec" ) {
+          if( numerals.size() != 1 ) {
+            PARSER_STATE->parseError("Illegal bitvector type.");
+          }
+          if(numerals.front() == 0) {
+            PARSER_STATE->parseError("Illegal bitvector size: 0");
+          }
+          t = EXPR_MANAGER->mkBitVectorType(numerals.front());
+        } else if ( name == "FloatingPoint" ) {
+          if( numerals.size() != 2 ) {
+            PARSER_STATE->parseError("Illegal floating-point type.");
+          }
+          if(!validExponentSize(numerals[0])) {
+            PARSER_STATE->parseError("Illegal floating-point exponent size");
+          }
+          if(!validSignificandSize(numerals[1])) {
+            PARSER_STATE->parseError("Illegal floating-point significand size");
+          }
+          t = EXPR_MANAGER->mkFloatingPointType(numerals[0],numerals[1]);
+        } else {
+          std::stringstream ss;
+          ss << "unknown indexed sort symbol `" << name << "'";
+          PARSER_STATE->parseError(ss.str());
+        }
+      }
+    | sortList[args]
+      { if( indexed ) {
+          std::stringstream ss;
+          ss << "Unexpected use of indexing operator `_' before `" << name
+             << "', try leaving it out";
+          PARSER_STATE->parseError(ss.str());
+        }
+        if(args.empty()) {
+          PARSER_STATE->parseError("Extra parentheses around sort name not "
+                                   "permitted in SMT-LIB");
+        } else if(name == "Array" &&
+           PARSER_STATE->isTheoryEnabled(Smt2::THEORY_ARRAYS) ) {
+          if(args.size() != 2) {
+            PARSER_STATE->parseError("Illegal array type.");
+          }
+          t = EXPR_MANAGER->mkArrayType( args[0], args[1] );
+        } else if(name == "Set" &&
+                  PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS) ) {
+          if(args.size() != 1) {
+            PARSER_STATE->parseError("Illegal set type.");
+          }
+          t = EXPR_MANAGER->mkSetType( args[0] );
+        } else if(check == CHECK_DECLARED ||
+                  PARSER_STATE->isDeclared(name, SYM_SORT)) {
+          t = PARSER_STATE->getSort(name, args);
+        } else {
+          // make unresolved type
+          if(args.empty()) {
+            t = PARSER_STATE->mkUnresolvedType(name);
+            Debug("parser-param") << "param: make unres type " << name
+                                  << std::endl;
+          } else {
+            t = PARSER_STATE->mkUnresolvedTypeConstructor(name,args);
+            t = SortConstructorType(t).instantiate( args );
+            Debug("parser-param")
+                << "param: make unres param type " << name << " " << args.size()
+                << " " << PARSER_STATE->getArity( name ) << std::endl;
+          }
+        }
+      }
+    ) RPAREN_TOK
+  ;
+
+/**
+ * Matches a list of symbols, with check and type arguments as for the
+ * symbol[] rule below.
+ */
+symbolList[std::vector<std::string>& names,
+           CVC4::parser::DeclarationCheck check,
+           CVC4::parser::SymbolType type]
+ at declarations {
+  std::string id;
+}
+  : ( symbol[id,check,type] { names.push_back(id); } )*
+  ;
+
+/**
+ * Matches an symbol and sets the string reference parameter id.
+ * @param id string to hold the symbol
+ * @param check what kinds of check to do on the symbol
+ * @param type the intended namespace for the symbol
+ */
+symbol[std::string& id,
+       CVC4::parser::DeclarationCheck check,
+       CVC4::parser::SymbolType type]
+  : SIMPLE_SYMBOL
+    { id = AntlrInput::tokenText($SIMPLE_SYMBOL);
+      if(!PARSER_STATE->isAbstractValue(id)) {
+        // if an abstract value, SmtEngine handles declaration
+        PARSER_STATE->checkDeclaration(id, check, type);
+      }
+    }
+  | ( 'repeat' { id = "repeat"; }
+    /* these are keywords in SyGuS but we don't want to inhibit their
+     * use as symbols in SMT-LIB */
+    | SET_OPTIONS_TOK { id = "set-options"; }
+    | DECLARE_VAR_TOK { id = "declare-var"; }
+    | DECLARE_PRIMED_VAR_TOK { id = "declare-primed-var"; }
+    | SYNTH_FUN_TOK { id = "synth-fun"; }
+    | SYNTH_INV_TOK { id = "synth-inv"; }
+    | CONSTRAINT_TOK { id = "constraint"; }
+    | INV_CONSTRAINT_TOK { id = "inv-constraint"; }
+    | CHECK_SYNTH_TOK { id = "check-synth"; }
+    )
+    { PARSER_STATE->checkDeclaration(id, check, type); }
+  | QUOTED_SYMBOL
+    { id = AntlrInput::tokenText($QUOTED_SYMBOL);
+      /* strip off the quotes */
+      id = id.substr(1, id.size() - 2);
+      if(!PARSER_STATE->isAbstractValue(id)) {
+        // if an abstract value, SmtEngine handles declaration
+        PARSER_STATE->checkDeclaration(id, check, type);
+      }
+    }
+  | UNTERMINATED_QUOTED_SYMBOL
+    ( EOF
+      { PARSER_STATE->unexpectedEOF("unterminated |quoted| symbol"); }
+    | '\\'
+      { PARSER_STATE->unexpectedEOF("backslash not permitted in |quoted| "
+                                    "symbol"); }
+    )
+  ;
+
+/**
+ * Matches a nonempty list of numerals.
+ * @param numerals the (empty) vector to house the numerals.
+ */
+nonemptyNumeralList[std::vector<uint64_t>& numerals]
+  : ( INTEGER_LITERAL
+      { numerals.push_back(AntlrInput::tokenToUnsigned($INTEGER_LITERAL)); }
+    )+
+  ;
+
+/**
+ * Parses a datatype definition
+ */
+datatypeDef[bool isCo, std::vector<CVC4::Datatype>& datatypes,
+            std::vector< CVC4::Type >& params]
+ at init {
+  std::string id;
+}
+    /* This really needs to be CHECK_NONE, or mutually-recursive
+     * datatypes won't work, because this type will already be
+     * "defined" as an unresolved type; don't worry, we check
+     * below. */
+  : symbol[id,CHECK_NONE,SYM_SORT] { PARSER_STATE->pushScope(true); }
+   /* ( '[' symbol[id2,CHECK_UNDECLARED,SYM_SORT] {
+        t = PARSER_STATE->mkSort(id2);
+        params.push_back( t );
+      }
+      ( symbol[id2,CHECK_UNDECLARED,SYM_SORT] {
+        t = PARSER_STATE->mkSort(id2);
+        params.push_back( t ); }
+      )* ']'
+    )?*/ //AJR: this isn't necessary if we use z3's style
+    { datatypes.push_back(Datatype(id,params,isCo));
+      if(!PARSER_STATE->isUnresolvedType(id)) {
+        // if not unresolved, must be undeclared
+        PARSER_STATE->checkDeclaration(id, CHECK_UNDECLARED, SYM_SORT);
+      }
+    }
+    ( LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK )+
+    { PARSER_STATE->popScope(); }
+  ;
+
+/**
+ * Parses a constructor defintion for type
+ */
+constructorDef[CVC4::Datatype& type]
+ at init {
+  std::string id;
+  CVC4::DatatypeConstructor* ctor = NULL;
+}
+  : symbol[id,CHECK_UNDECLARED,SYM_VARIABLE]
+    { // make the tester
+      std::string testerId("is-");
+      testerId.append(id);
+      PARSER_STATE->checkDeclaration(testerId, CHECK_UNDECLARED, SYM_VARIABLE);
+      ctor = new CVC4::DatatypeConstructor(id, testerId);
+    }
+    ( LPAREN_TOK selector[*ctor] RPAREN_TOK )*
+    { // make the constructor
+      type.addConstructor(*ctor);
+      Debug("parser-idt") << "constructor: " << id.c_str() << std::endl;
+      delete ctor;
+    }
+  ;
+
+selector[CVC4::DatatypeConstructor& ctor]
+ at init {
+  std::string id;
+  Type t, t2;
+}
+  : symbol[id,CHECK_UNDECLARED,SYM_SORT] sortSymbol[t,CHECK_NONE]
+    { ctor.addArg(id, t);
+      Debug("parser-idt") << "selector: " << id.c_str()
+                          << " of type " << t << std::endl;
+    }
+  ;
+
+// Base SMT-LIB tokens
+ASSERT_TOK : 'assert';
+CHECKSAT_TOK : 'check-sat';
+DECLARE_FUN_TOK : 'declare-fun';
+DECLARE_SORT_TOK : 'declare-sort';
+DEFINE_FUN_TOK : 'define-fun';
+DEFINE_FUN_REC_TOK : 'define-fun-rec';
+DEFINE_FUNS_REC_TOK : 'define-funs-rec';
+DEFINE_SORT_TOK : 'define-sort';
+GET_VALUE_TOK : 'get-value';
+GET_ASSIGNMENT_TOK : 'get-assignment';
+GET_ASSERTIONS_TOK : 'get-assertions';
+GET_PROOF_TOK : 'get-proof';
+GET_UNSAT_CORE_TOK : 'get-unsat-core';
+EXIT_TOK : 'exit';
+RESET_TOK : { PARSER_STATE->v2_5() }? 'reset';
+RESET_ASSERTIONS_TOK : 'reset-assertions';
+ITE_TOK : 'ite';
+LET_TOK : 'let';
+ATTRIBUTE_TOK : '!';
+LPAREN_TOK : '(';
+RPAREN_TOK : ')';
+INDEX_TOK : '_';
+SET_LOGIC_TOK : 'set-logic';
+SET_INFO_TOK : 'set-info';
+META_INFO_TOK : 'meta-info';
+GET_INFO_TOK : 'get-info';
+SET_OPTION_TOK : 'set-option';
+GET_OPTION_TOK : 'get-option';
+PUSH_TOK : 'push';
+POP_TOK : 'pop';
+AS_TOK : 'as';
+CONST_TOK : 'const';
+
+// extended commands
+DECLARE_DATATYPES_TOK : 'declare-datatypes';
+DECLARE_CODATATYPES_TOK : 'declare-codatatypes';
+GET_MODEL_TOK : 'get-model';
+ECHO_TOK : 'echo';
+REWRITE_RULE_TOK : 'assert-rewrite';
+REDUCTION_RULE_TOK : 'assert-reduction';
+PROPAGATION_RULE_TOK : 'assert-propagation';
+DECLARE_SORTS_TOK : 'declare-sorts';
+DECLARE_FUNS_TOK : 'declare-funs';
+DECLARE_PREDS_TOK : 'declare-preds';
+DEFINE_TOK : 'define';
+DECLARE_CONST_TOK : 'declare-const';
+DEFINE_CONST_TOK : 'define-const';
+SIMPLIFY_TOK : 'simplify';
+INCLUDE_TOK : 'include';
+GET_QE_TOK : 'get-qe';
+GET_QE_DISJUNCT_TOK : 'get-qe-disjunct';
+
+// SyGuS commands
+SYNTH_FUN_TOK : 'synth-fun';
+SYNTH_INV_TOK : 'synth-inv';
+CHECK_SYNTH_TOK : 'check-synth';
+DECLARE_VAR_TOK : 'declare-var';
+DECLARE_PRIMED_VAR_TOK : 'declare-primed-var';
+CONSTRAINT_TOK : 'constraint';
+INV_CONSTRAINT_TOK : 'inv-constraint';
+SET_OPTIONS_TOK : 'set-options';
+SYGUS_ENUM_TOK : { PARSER_STATE->sygus() }? 'Enum';
+SYGUS_ENUM_CONS_TOK : { PARSER_STATE->sygus() }? '::';
+SYGUS_CONSTANT_TOK : { PARSER_STATE->sygus() }? 'Constant';
+SYGUS_VARIABLE_TOK : { PARSER_STATE->sygus() }? 'Variable';
+SYGUS_INPUT_VARIABLE_TOK : { PARSER_STATE->sygus() }? 'InputVariable';
+SYGUS_LOCAL_VARIABLE_TOK : { PARSER_STATE->sygus() }? 'LocalVariable';
+
+// attributes
+ATTRIBUTE_PATTERN_TOK : ':pattern';
+ATTRIBUTE_NO_PATTERN_TOK : ':no-pattern';
+ATTRIBUTE_NAMED_TOK : ':named';
+ATTRIBUTE_INST_LEVEL : ':quant-inst-max-level';
+ATTRIBUTE_RR_PRIORITY : ':rr-priority';
+
+// operators (NOTE: theory symbols go here)
+AMPERSAND_TOK     : '&';
+AND_TOK           : 'and';
+AT_TOK            : '@';
+DISTINCT_TOK      : 'distinct';
+DIV_TOK           : '/';
+EQUAL_TOK         : '=';
+EXISTS_TOK        : 'exists';
+FORALL_TOK        : 'forall';
+GREATER_THAN_TOK  : '>';
+GREATER_THAN_EQUAL_TOK  : '>=';
+IMPLIES_TOK       : '=>';
+LESS_THAN_TOK     : '<';
+LESS_THAN_EQUAL_TOK     : '<=';
+MINUS_TOK         : '-';
+NOT_TOK           : 'not';
+OR_TOK            : 'or';
+// PERCENT_TOK       : '%';
+PLUS_TOK          : '+';
+//POUND_TOK         : '#';
+STAR_TOK          : '*';
+// TILDE_TOK         : '~';
+XOR_TOK           : 'xor';
+
+
+DIVISIBLE_TOK : 'divisible';
+
+BV2NAT_TOK : 'bv2nat';
+INT2BV_TOK : 'int2bv';
+
+RENOSTR_TOK : 're.nostr';
+REALLCHAR_TOK : 're.allchar';
+
+DTSIZE_TOK : 'dt.size';
+
+FMFCARD_TOK : 'fmf.card';
+FMFCARDVAL_TOK : 'fmf.card.val';
+
+INST_CLOSURE_TOK : 'inst-closure';
+
+EMPTYSET_TOK: { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS) }? 'emptyset';
+UNIVSET_TOK: { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS) }? 'univset';
+NILREF_TOK: { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SEP) }? 'sep.nil';
+// Other set theory operators are not
+// tokenized and handled directly when
+// processing a term
+
+FP_PINF_TOK : '+oo';
+FP_NINF_TOK : '-oo';
+FP_PZERO_TOK : '+zero';
+FP_NZERO_TOK : '-zero';
+FP_NAN_TOK : 'NaN';
+
+FP_TO_FP_TOK : 'to_fp';
+FP_TO_FPBV_TOK : 'to_fp_bv';
+FP_TO_FPFP_TOK : 'to_fp_fp';
+FP_TO_FPR_TOK : 'to_fp_real';
+FP_TO_FPS_TOK : 'to_fp_signed';
+FP_TO_FPU_TOK : 'to_fp_unsigned';
+FP_TO_UBV_TOK : 'fp.to_ubv';
+FP_TO_SBV_TOK : 'fp.to_sbv';
+FP_RNE_TOK : 'RNE';
+FP_RNA_TOK : 'RNA';
+FP_RTP_TOK : 'RTP';
+FP_RTN_TOK : 'RTN';
+FP_RTZ_TOK : 'RTZ';
+FP_RNE_FULL_TOK : 'roundNearestTiesToEven';
+FP_RNA_FULL_TOK : 'roundNearestTiesToAway';
+FP_RTP_FULL_TOK : 'roundTowardPositive';
+FP_RTN_FULL_TOK : 'roundTowardNegative';
+FP_RTZ_FULL_TOK : 'roundTowardZero';
+
+/**
+ * A sequence of printable ASCII characters (except backslash) that starts
+ * and ends with | and does not otherwise contain |.
+ *
+ * You shouldn't generally use this in parser rules, as the |quoting|
+ * will be part of the token text.  Use the symbol[] parser rule instead.
+ */
+QUOTED_SYMBOL
+  : '|' ~('|' | '\\')* '|'
+  ;
+UNTERMINATED_QUOTED_SYMBOL
+  : '|' ~('|' | '\\')*
+  ;
+
+/**
+ * Matches a keyword from the input. A keyword is a simple symbol prefixed
+ * with a colon.
+ */
+KEYWORD
+  : ':' (ALPHA | DIGIT | SYMBOL_CHAR)+
+  ;
+
+/**
+ * Matches a "simple" symbol: a non-empty sequence of letters, digits and
+ * the characters + - / * = % ? ! . $ ~ & ^ < > @ that does not start with a
+ * digit, and is not the special reserved symbols '!' or '_'.
+ */
+SIMPLE_SYMBOL
+  : (ALPHA | SYMBOL_CHAR) (ALPHA | DIGIT | SYMBOL_CHAR)+
+  | ALPHA
+  | SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE
+  ;
+
+/**
+ * Matches and skips whitespace in the input.
+ */
+WHITESPACE
+  : (' ' | '\t' | '\f' | '\r' | '\n')+ { SKIP(); }
+  ;
+
+/**
+ * Matches an integer constant from the input (non-empty sequence of
+ * digits, with no leading zeroes).
+ */
+INTEGER_LITERAL
+  : NUMERAL
+  ;
+
+/**
+ * Match an integer constant. In non-strict mode, this is any sequence
+ * of digits. In strict mode, non-zero integers can't have leading
+ * zeroes.
+ */
+fragment NUMERAL
+ at init {
+  char *start = (char*) GETCHARINDEX();
+}
+  : DIGIT+
+    { Debug("parser-extra") << "NUMERAL: "
+       << (uintptr_t)start << ".." << GETCHARINDEX()
+       << " strict? " << (bool)(PARSER_STATE->strictModeEnabled())
+       << " ^0? " << (bool)(*start == '0')
+       << " len>1? " << (bool)(start < (char*)(GETCHARINDEX() - 1))
+       << std::endl; }
+    { !PARSER_STATE->strictModeEnabled() ||
+      *start != '0' ||
+      start == (char*)(GETCHARINDEX() - 1) }?
+  ;
+
+/**
+ * Matches a decimal constant from the input.
+ */
+DECIMAL_LITERAL
+  : NUMERAL '.' DIGIT+
+  ;
+
+/**
+ * Matches a hexadecimal constant.
+ */
+HEX_LITERAL
+  : '#x' HEX_DIGIT+
+  ;
+
+/**
+ * Matches a binary constant.
+ */
+BINARY_LITERAL
+  : '#b' ('0' | '1')+
+  ;
+
+/**
+ * Matches a double-quoted string literal from SMT-LIB 2.0.
+ * Escaping is supported, and * escape character '\' has to be escaped.
+ *
+ * You shouldn't generally use this in parser rules, as the quotes
+ * will be part of the token text.  Use the str[] parser rule instead.
+ */
+STRING_LITERAL_2_0
+  : { PARSER_STATE->v2_0() }?=>
+    '"' ('\\' . | ~('\\' | '"'))* '"'
+  ;
+
+/**
+ * Matches a double-quoted string literal from SMT-LIB 2.5.
+ * You escape a double-quote inside the string with "", e.g.,
+ * "This is a string literal with "" a single, embedded double quote."
+ *
+ * You shouldn't generally use this in parser rules, as the quotes
+ * will be part of the token text.  Use the str[] parser rule instead.
+ */
+STRING_LITERAL_2_5
+  : { PARSER_STATE->v2_5() || PARSER_STATE->sygus() }?=>
+    '"' (~('"') | '""')* '"'
+  ;
+
+/**
+ * Matches sygus quoted literal 
+ */
+SYGUS_QUOTED_LITERAL
+ : { PARSER_STATE->sygus() }?=>
+   '"' (ALPHA|DIGIT)* '"'
+  ;
+  
+/**
+ * Matches the comments and ignores them
+ */
+COMMENT
+  : ';' (~('\n' | '\r'))* { SKIP(); }
+  ;
+
+/**
+ * Matches any letter ('a'-'z' and 'A'-'Z').
+ */
+fragment
+ALPHA
+  : 'a'..'z'
+  | 'A'..'Z'
+  ;
+
+/**
+ * Matches the digits (0-9)
+ */
+fragment DIGIT : '0'..'9';
+
+fragment HEX_DIGIT : DIGIT | 'a'..'f' | 'A'..'F';
+
+/**
+ * Matches the characters that may appear as a one-character "symbol"
+ * (which excludes _ and !, which are reserved words in SMT-LIB).
+ */
+fragment SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE
+  : '+' | '-' | '/' | '*' | '=' | '%' | '?' | '.' | '$' | '~'
+  | '&' | '^' | '<' | '>' | '@'
+  ;
+
+/**
+ * Matches the characters that may appear in a "symbol" (i.e., an identifier)
+ */
+fragment SYMBOL_CHAR
+  : SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE | '_' | '!'
+  ;
diff --git a/src/parser/smt2/Smt2.tokens b/src/parser/smt2/Smt2.tokens
new file mode 100644
index 0000000..3f7903e
--- /dev/null
+++ b/src/parser/smt2/Smt2.tokens
@@ -0,0 +1,155 @@
+T__145=145
+T__146=146
+T__147=147
+T__148=148
+T__149=149
+T__150=150
+T__151=151
+ALPHA=4
+AMPERSAND_TOK=5
+AND_TOK=6
+ASSERT_TOK=7
+AS_TOK=8
+ATTRIBUTE_INST_LEVEL=9
+ATTRIBUTE_NAMED_TOK=10
+ATTRIBUTE_NO_PATTERN_TOK=11
+ATTRIBUTE_PATTERN_TOK=12
+ATTRIBUTE_RR_PRIORITY=13
+ATTRIBUTE_TOK=14
+AT_TOK=15
+BINARY_LITERAL=16
+BV2NAT_TOK=17
+CHECKSAT_TOK=18
+CHECK_SYNTH_TOK=19
+COMMENT=20
+CONSTRAINT_TOK=21
+CONST_TOK=22
+DECIMAL_LITERAL=23
+DECLARE_CODATATYPES_TOK=24
+DECLARE_CONST_TOK=25
+DECLARE_DATATYPES_TOK=26
+DECLARE_FUNS_TOK=27
+DECLARE_FUN_TOK=28
+DECLARE_PREDS_TOK=29
+DECLARE_PRIMED_VAR_TOK=30
+DECLARE_SORTS_TOK=31
+DECLARE_SORT_TOK=32
+DECLARE_VAR_TOK=33
+DEFINE_CONST_TOK=34
+DEFINE_FUNS_REC_TOK=35
+DEFINE_FUN_REC_TOK=36
+DEFINE_FUN_TOK=37
+DEFINE_SORT_TOK=38
+DEFINE_TOK=39
+DIGIT=40
+DISTINCT_TOK=41
+DIVISIBLE_TOK=42
+DIV_TOK=43
+DTSIZE_TOK=44
+ECHO_TOK=45
+EMPTYSET_TOK=46
+EQUAL_TOK=47
+EXISTS_TOK=48
+EXIT_TOK=49
+FMFCARDVAL_TOK=50
+FMFCARD_TOK=51
+FORALL_TOK=52
+FP_NAN_TOK=53
+FP_NINF_TOK=54
+FP_NZERO_TOK=55
+FP_PINF_TOK=56
+FP_PZERO_TOK=57
+FP_RNA_FULL_TOK=58
+FP_RNA_TOK=59
+FP_RNE_FULL_TOK=60
+FP_RNE_TOK=61
+FP_RTN_FULL_TOK=62
+FP_RTN_TOK=63
+FP_RTP_FULL_TOK=64
+FP_RTP_TOK=65
+FP_RTZ_FULL_TOK=66
+FP_RTZ_TOK=67
+FP_TO_FPBV_TOK=68
+FP_TO_FPFP_TOK=69
+FP_TO_FPR_TOK=70
+FP_TO_FPS_TOK=71
+FP_TO_FPU_TOK=72
+FP_TO_FP_TOK=73
+FP_TO_SBV_TOK=74
+FP_TO_UBV_TOK=75
+GET_ASSERTIONS_TOK=76
+GET_ASSIGNMENT_TOK=77
+GET_INFO_TOK=78
+GET_MODEL_TOK=79
+GET_OPTION_TOK=80
+GET_PROOF_TOK=81
+GET_QE_DISJUNCT_TOK=82
+GET_QE_TOK=83
+GET_UNSAT_CORE_TOK=84
+GET_VALUE_TOK=85
+GREATER_THAN_EQUAL_TOK=86
+GREATER_THAN_TOK=87
+HEX_DIGIT=88
+HEX_LITERAL=89
+IMPLIES_TOK=90
+INCLUDE_TOK=91
+INDEX_TOK=92
+INST_CLOSURE_TOK=93
+INT2BV_TOK=94
+INTEGER_LITERAL=95
+INV_CONSTRAINT_TOK=96
+ITE_TOK=97
+KEYWORD=98
+LESS_THAN_EQUAL_TOK=99
+LESS_THAN_TOK=100
+LET_TOK=101
+LPAREN_TOK=102
+META_INFO_TOK=103
+MINUS_TOK=104
+NILREF_TOK=105
+NOT_TOK=106
+NUMERAL=107
+OR_TOK=108
+PLUS_TOK=109
+POP_TOK=110
+PROPAGATION_RULE_TOK=111
+PUSH_TOK=112
+QUOTED_SYMBOL=113
+REALLCHAR_TOK=114
+REDUCTION_RULE_TOK=115
+RENOSTR_TOK=116
+RESET_ASSERTIONS_TOK=117
+RESET_TOK=118
+REWRITE_RULE_TOK=119
+RPAREN_TOK=120
+SET_INFO_TOK=121
+SET_LOGIC_TOK=122
+SET_OPTIONS_TOK=123
+SET_OPTION_TOK=124
+SIMPLE_SYMBOL=125
+SIMPLIFY_TOK=126
+STAR_TOK=127
+STRING_LITERAL_2_0=128
+STRING_LITERAL_2_5=129
+SYGUS_CONSTANT_TOK=130
+SYGUS_ENUM_CONS_TOK=131
+SYGUS_ENUM_TOK=132
+SYGUS_INPUT_VARIABLE_TOK=133
+SYGUS_LOCAL_VARIABLE_TOK=134
+SYGUS_QUOTED_LITERAL=135
+SYGUS_VARIABLE_TOK=136
+SYMBOL_CHAR=137
+SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE=138
+SYNTH_FUN_TOK=139
+SYNTH_INV_TOK=140
+UNIVSET_TOK=141
+UNTERMINATED_QUOTED_SYMBOL=142
+WHITESPACE=143
+XOR_TOK=144
+'\\'=145
+'extract'=146
+'repeat'=147
+'rotate_left'=148
+'rotate_right'=149
+'sign_extend'=150
+'zero_extend'=151
diff --git a/src/parser/smt2/Smt2Lexer.c b/src/parser/smt2/Smt2Lexer.c
new file mode 100644
index 0000000..0e0ee9d
--- /dev/null
+++ b/src/parser/smt2/Smt2Lexer.c
@@ -0,0 +1,41774 @@
+/** \file
+ *  This C source file was generated by $ANTLR version 3.4
+ *
+ *     -  From the grammar source file : ../../../../../../src/parser/smt2/Smt2.g
+ *     -                            On : 2017-03-16 01:03:02
+ *     -                 for the lexer : Smt2LexerLexer
+ *
+ * Editing it, at least manually, is not wise.
+ *
+ * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws.
+ *
+ *
+*/
+// [The "BSD license"]
+// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
+// http://www.temporal-wave.com
+// http://www.linkedin.com/in/jimidle
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+// 3. The name of the author may not be used to endorse or promote products
+//    derived from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/* -----------------------------------------
+ * Include the ANTLR3 generated header file.
+ */
+#include    "Smt2Lexer.h"
+
+#include <stdint.h>
+
+#include "parser/smt2/smt2.h"
+#include "parser/antlr_input.h"
+
+using namespace CVC4;
+using namespace CVC4::parser;
+
+#undef PARSER_STATE
+#define PARSER_STATE ((Smt2*)LEXER->super)
+
+/* ----------------------------------------- */
+
+
+/** String literals used by Smt2Lexer that we must do things like MATCHS() with.
+ *  C will normally just lay down 8 bit characters, and you can use L"xxx" to
+ *  get wchar_t, but wchar_t is 16 bits on Windows, which is not UTF32 and so
+ *  we perform this little trick of defining the literals as arrays of UINT32
+ *  and passing in the address of these.
+ */
+static ANTLR3_UCHAR	lit_1[]  = { 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_2[]  = { 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_3[]  = { 0x72, 0x6F, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x6C, 0x65, 0x66, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_4[]  = { 0x72, 0x6F, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x72, 0x69, 0x67, 0x68, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_5[]  = { 0x73, 0x69, 0x67, 0x6E, 0x5F, 0x65, 0x78, 0x74, 0x65, 0x6E, 0x64,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_6[]  = { 0x7A, 0x65, 0x72, 0x6F, 0x5F, 0x65, 0x78, 0x74, 0x65, 0x6E, 0x64,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_7[]  = { 0x61, 0x73, 0x73, 0x65, 0x72, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_8[]  = { 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x73, 0x61, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_9[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x66, 0x75, 0x6E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_10[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x73, 0x6F, 0x72, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_11[]  = { 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x2D, 0x66, 0x75, 0x6E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_12[]  = { 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x2D, 0x66, 0x75, 0x6E, 0x2D, 0x72, 0x65, 0x63,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_13[]  = { 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x2D, 0x66, 0x75, 0x6E, 0x73, 0x2D, 0x72, 0x65, 0x63,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_14[]  = { 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x2D, 0x73, 0x6F, 0x72, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_15[]  = { 0x67, 0x65, 0x74, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_16[]  = { 0x67, 0x65, 0x74, 0x2D, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6E, 0x6D, 0x65, 0x6E, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_17[]  = { 0x67, 0x65, 0x74, 0x2D, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6F, 0x6E, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_18[]  = { 0x67, 0x65, 0x74, 0x2D, 0x70, 0x72, 0x6F, 0x6F, 0x66,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_19[]  = { 0x67, 0x65, 0x74, 0x2D, 0x75, 0x6E, 0x73, 0x61, 0x74, 0x2D, 0x63, 0x6F, 0x72, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_20[]  = { 0x65, 0x78, 0x69, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_21[]  = { 0x72, 0x65, 0x73, 0x65, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_22[]  = { 0x72, 0x65, 0x73, 0x65, 0x74, 0x2D, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6F, 0x6E, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_23[]  = { 0x69, 0x74, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_24[]  = { 0x6C, 0x65, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_25[]  = { 0x73, 0x65, 0x74, 0x2D, 0x6C, 0x6F, 0x67, 0x69, 0x63,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_26[]  = { 0x73, 0x65, 0x74, 0x2D, 0x69, 0x6E, 0x66, 0x6F,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_27[]  = { 0x6D, 0x65, 0x74, 0x61, 0x2D, 0x69, 0x6E, 0x66, 0x6F,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_28[]  = { 0x67, 0x65, 0x74, 0x2D, 0x69, 0x6E, 0x66, 0x6F,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_29[]  = { 0x73, 0x65, 0x74, 0x2D, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_30[]  = { 0x67, 0x65, 0x74, 0x2D, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_31[]  = { 0x70, 0x75, 0x73, 0x68,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_32[]  = { 0x70, 0x6F, 0x70,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_33[]  = { 0x61, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_34[]  = { 0x63, 0x6F, 0x6E, 0x73, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_35[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_36[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x63, 0x6F, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_37[]  = { 0x67, 0x65, 0x74, 0x2D, 0x6D, 0x6F, 0x64, 0x65, 0x6C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_38[]  = { 0x65, 0x63, 0x68, 0x6F,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_39[]  = { 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x2D, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_40[]  = { 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x2D, 0x72, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_41[]  = { 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x2D, 0x70, 0x72, 0x6F, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6F, 0x6E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_42[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x73, 0x6F, 0x72, 0x74, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_43[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x66, 0x75, 0x6E, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_44[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x70, 0x72, 0x65, 0x64, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_45[]  = { 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_46[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x63, 0x6F, 0x6E, 0x73, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_47[]  = { 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x2D, 0x63, 0x6F, 0x6E, 0x73, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_48[]  = { 0x73, 0x69, 0x6D, 0x70, 0x6C, 0x69, 0x66, 0x79,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_49[]  = { 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x64, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_50[]  = { 0x67, 0x65, 0x74, 0x2D, 0x71, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_51[]  = { 0x67, 0x65, 0x74, 0x2D, 0x71, 0x65, 0x2D, 0x64, 0x69, 0x73, 0x6A, 0x75, 0x6E, 0x63, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_52[]  = { 0x73, 0x79, 0x6E, 0x74, 0x68, 0x2D, 0x66, 0x75, 0x6E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_53[]  = { 0x73, 0x79, 0x6E, 0x74, 0x68, 0x2D, 0x69, 0x6E, 0x76,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_54[]  = { 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x73, 0x79, 0x6E, 0x74, 0x68,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_55[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x76, 0x61, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_56[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x70, 0x72, 0x69, 0x6D, 0x65, 0x64, 0x2D, 0x76, 0x61, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_57[]  = { 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6E, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_58[]  = { 0x69, 0x6E, 0x76, 0x2D, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6E, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_59[]  = { 0x73, 0x65, 0x74, 0x2D, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_60[]  = { 0x45, 0x6E, 0x75, 0x6D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_61[]  = { 0x3A, 0x3A,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_62[]  = { 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_63[]  = { 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_64[]  = { 0x49, 0x6E, 0x70, 0x75, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_65[]  = { 0x4C, 0x6F, 0x63, 0x61, 0x6C, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_66[]  = { 0x3A, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_67[]  = { 0x3A, 0x6E, 0x6F, 0x2D, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_68[]  = { 0x3A, 0x6E, 0x61, 0x6D, 0x65, 0x64,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_69[]  = { 0x3A, 0x71, 0x75, 0x61, 0x6E, 0x74, 0x2D, 0x69, 0x6E, 0x73, 0x74, 0x2D, 0x6D, 0x61, 0x78, 0x2D, 0x6C, 0x65, 0x76, 0x65, 0x6C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_70[]  = { 0x3A, 0x72, 0x72, 0x2D, 0x70, 0x72, 0x69, 0x6F, 0x72, 0x69, 0x74, 0x79,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_71[]  = { 0x61, 0x6E, 0x64,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_72[]  = { 0x64, 0x69, 0x73, 0x74, 0x69, 0x6E, 0x63, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_73[]  = { 0x65, 0x78, 0x69, 0x73, 0x74, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_74[]  = { 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_75[]  = { 0x3E, 0x3D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_76[]  = { 0x3D, 0x3E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_77[]  = { 0x3C, 0x3D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_78[]  = { 0x6E, 0x6F, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_79[]  = { 0x6F, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_80[]  = { 0x78, 0x6F, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_81[]  = { 0x64, 0x69, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6C, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_82[]  = { 0x62, 0x76, 0x32, 0x6E, 0x61, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_83[]  = { 0x69, 0x6E, 0x74, 0x32, 0x62, 0x76,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_84[]  = { 0x72, 0x65, 0x2E, 0x6E, 0x6F, 0x73, 0x74, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_85[]  = { 0x72, 0x65, 0x2E, 0x61, 0x6C, 0x6C, 0x63, 0x68, 0x61, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_86[]  = { 0x64, 0x74, 0x2E, 0x73, 0x69, 0x7A, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_87[]  = { 0x66, 0x6D, 0x66, 0x2E, 0x63, 0x61, 0x72, 0x64,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_88[]  = { 0x66, 0x6D, 0x66, 0x2E, 0x63, 0x61, 0x72, 0x64, 0x2E, 0x76, 0x61, 0x6C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_89[]  = { 0x69, 0x6E, 0x73, 0x74, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x75, 0x72, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_90[]  = { 0x65, 0x6D, 0x70, 0x74, 0x79, 0x73, 0x65, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_91[]  = { 0x75, 0x6E, 0x69, 0x76, 0x73, 0x65, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_92[]  = { 0x73, 0x65, 0x70, 0x2E, 0x6E, 0x69, 0x6C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_93[]  = { 0x2B, 0x6F, 0x6F,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_94[]  = { 0x2D, 0x6F, 0x6F,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_95[]  = { 0x2B, 0x7A, 0x65, 0x72, 0x6F,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_96[]  = { 0x2D, 0x7A, 0x65, 0x72, 0x6F,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_97[]  = { 0x4E, 0x61, 0x4E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_98[]  = { 0x74, 0x6F, 0x5F, 0x66, 0x70,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_99[]  = { 0x74, 0x6F, 0x5F, 0x66, 0x70, 0x5F, 0x62, 0x76,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_100[]  = { 0x74, 0x6F, 0x5F, 0x66, 0x70, 0x5F, 0x66, 0x70,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_101[]  = { 0x74, 0x6F, 0x5F, 0x66, 0x70, 0x5F, 0x72, 0x65, 0x61, 0x6C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_102[]  = { 0x74, 0x6F, 0x5F, 0x66, 0x70, 0x5F, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_103[]  = { 0x74, 0x6F, 0x5F, 0x66, 0x70, 0x5F, 0x75, 0x6E, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_104[]  = { 0x66, 0x70, 0x2E, 0x74, 0x6F, 0x5F, 0x75, 0x62, 0x76,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_105[]  = { 0x66, 0x70, 0x2E, 0x74, 0x6F, 0x5F, 0x73, 0x62, 0x76,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_106[]  = { 0x52, 0x4E, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_107[]  = { 0x52, 0x4E, 0x41,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_108[]  = { 0x52, 0x54, 0x50,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_109[]  = { 0x52, 0x54, 0x4E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_110[]  = { 0x52, 0x54, 0x5A,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_111[]  = { 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4E, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, 0x54, 0x69, 0x65, 0x73, 0x54, 0x6F, 0x45, 0x76, 0x65, 0x6E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_112[]  = { 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4E, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, 0x54, 0x69, 0x65, 0x73, 0x54, 0x6F, 0x41, 0x77, 0x61, 0x79,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_113[]  = { 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x54, 0x6F, 0x77, 0x61, 0x72, 0x64, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_114[]  = { 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x54, 0x6F, 0x77, 0x61, 0x72, 0x64, 0x4E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_115[]  = { 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x54, 0x6F, 0x77, 0x61, 0x72, 0x64, 0x5A, 0x65, 0x72, 0x6F,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_116[]  = { 0x23, 0x78,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_117[]  = { 0x23, 0x62,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_118[]  = { 0x22, 0x22,  ANTLR3_STRING_TERMINATOR};
+
+
+
+
+
+/* MACROS that hide the C interface implementations from the
+ * generated code, which makes it a little more understandable to the human eye.
+ * I am very much against using C pre-processor macros for function calls and bits
+ * of code as you cannot see what is happening when single stepping in debuggers
+ * and so on. The exception (in my book at least) is for generated code, where you are
+ * not maintaining it, but may wish to read and understand it. If you single step it, you know that input()
+ * hides some indirect calls, but is always referring to the input stream. This is
+ * probably more readable than ctx->input->istream->input(snarfle0->blarg) and allows me to rejig
+ * the runtime interfaces without changing the generated code too often, without
+ * confusing the reader of the generated output, who may not wish to know the gory
+ * details of the interface inheritance.
+ */
+
+#define		CTX	ctx
+
+/* Aids in accessing scopes for grammar programmers
+ */
+#undef	SCOPE_TYPE
+#undef	SCOPE_STACK
+#undef	SCOPE_TOP
+#define	SCOPE_TYPE(scope)   pSmt2Lexer_##scope##_SCOPE
+#define SCOPE_STACK(scope)  pSmt2Lexer_##scope##Stack
+#define	SCOPE_TOP(scope)    ctx->pSmt2Lexer_##scope##Top
+#define	SCOPE_SIZE(scope)		ctx->pSmt2Lexer_##scope##Stack_limit
+#define SCOPE_INSTANCE(scope, i)	(ctx->SCOPE_STACK(scope)->get(ctx->SCOPE_STACK(scope),i))
+
+
+/* Macros for accessing things in a lexer
+ */
+#undef	    LEXER
+#undef	    RECOGNIZER
+#undef	    RULEMEMO
+#undef	    GETCHARINDEX
+#undef	    GETLINE
+#undef	    GETCHARPOSITIONINLINE
+#undef	    EMIT
+#undef	    EMITNEW
+#undef	    MATCHC
+#undef	    MATCHS
+#undef	    MATCHRANGE
+#undef	    LTOKEN
+#undef	    HASFAILED
+#undef	    FAILEDFLAG
+#undef	    INPUT
+#undef	    STRSTREAM
+#undef	    LA
+#undef	    HASEXCEPTION
+#undef	    EXCEPTION
+#undef	    CONSTRUCTEX
+#undef	    CONSUME
+#undef	    LRECOVER
+#undef	    MARK
+#undef	    REWIND
+#undef	    REWINDLAST
+#undef	    BACKTRACKING
+#undef		MATCHANY
+#undef		MEMOIZE
+#undef		HAVEPARSEDRULE
+#undef		GETTEXT
+#undef		INDEX
+#undef		SEEK
+#undef		PUSHSTREAM
+#undef		POPSTREAM
+#undef		SETTEXT
+#undef		SETTEXT8
+
+#define	    LEXER					ctx->pLexer
+#define	    RECOGNIZER			    LEXER->rec
+#define		LEXSTATE				RECOGNIZER->state
+#define		TOKSOURCE				LEXSTATE->tokSource
+#define	    GETCHARINDEX()			LEXER->getCharIndex(LEXER)
+#define	    GETLINE()				LEXER->getLine(LEXER)
+#define	    GETTEXT()				LEXER->getText(LEXER)
+#define	    GETCHARPOSITIONINLINE() LEXER->getCharPositionInLine(LEXER)
+#define	    EMIT()					LEXSTATE->type = _type; LEXER->emit(LEXER)
+#define	    EMITNEW(t)				LEXER->emitNew(LEXER, t)
+#define	    MATCHC(c)				LEXER->matchc(LEXER, c)
+#define	    MATCHS(s)				LEXER->matchs(LEXER, s)
+#define	    MATCHRANGE(c1,c2)	    LEXER->matchRange(LEXER, c1, c2)
+#define	    MATCHANY()				LEXER->matchAny(LEXER)
+#define	    LTOKEN  				LEXSTATE->token
+#define	    HASFAILED()				(LEXSTATE->failed == ANTLR3_TRUE)
+#define	    BACKTRACKING			LEXSTATE->backtracking
+#define	    FAILEDFLAG				LEXSTATE->failed
+#define	    INPUT					LEXER->input
+#define	    STRSTREAM				INPUT
+#define		ISTREAM					INPUT->istream
+#define		INDEX()					ISTREAM->index(ISTREAM)
+#define		SEEK(n)					ISTREAM->seek(ISTREAM, n)
+#define	    EOF_TOKEN				&(LEXSTATE->tokSource->eofToken)
+#define	    HASEXCEPTION()			(LEXSTATE->error == ANTLR3_TRUE)
+#define	    EXCEPTION				LEXSTATE->exception
+#define	    CONSTRUCTEX()			RECOGNIZER->exConstruct(RECOGNIZER)
+#define	    LRECOVER()				LEXER->recover(LEXER)
+#define	    MARK()					ISTREAM->mark(ISTREAM)
+#define	    REWIND(m)				ISTREAM->rewind(ISTREAM, m)
+#define	    REWINDLAST()			ISTREAM->rewindLast(ISTREAM)
+#define		MEMOIZE(ri,si)			RECOGNIZER->memoize(RECOGNIZER, ri, si)
+#define		HAVEPARSEDRULE(r)		RECOGNIZER->alreadyParsedRule(RECOGNIZER, r)
+#define		PUSHSTREAM(str)			LEXER->pushCharStream(LEXER, str)
+#define		POPSTREAM()				LEXER->popCharStream(LEXER)
+#define		SETTEXT(str)			LEXSTATE->text = str
+#define		SKIP()					LEXSTATE->token = &(TOKSOURCE->skipToken)
+#define		USER1					LEXSTATE->user1
+#define		USER2					LEXSTATE->user2
+#define		USER3					LEXSTATE->user3
+#define		CUSTOM					LEXSTATE->custom
+#define		RULEMEMO				LEXSTATE->ruleMemo
+#define		DBG						RECOGNIZER->debugger
+
+/* If we have been told we can rely on the standard 8 bit or UTF16 input
+ * stream, then we can define our macros to use the direct pointers
+ * in the input object, which is much faster than indirect calls. This
+ * is really only significant to lexers with a lot of fragment rules (which
+ * do not place LA(1) in a temporary at the moment) and even then
+ * only if there is a lot of input (order of say 1M or so).
+ */
+#if	defined(ANTLR3_INLINE_INPUT_8BIT) || defined(ANTLR3_INLINE_INPUT_UTF16)
+
+# ifdef	ANTLR3_INLINE_INPUT_8BIT
+
+/* 8 bit character set */
+
+#  define	    NEXTCHAR	((pANTLR3_UINT8)(INPUT->nextChar))
+#  define	    DATAP	((pANTLR3_UINT8)(INPUT->data))
+
+# else
+
+#  define	    NEXTCHAR	((pANTLR3_UINT16)(INPUT->nextChar))
+#  define	    DATAP	((pANTLR3_UINT16)(INPUT->data))
+
+# endif
+
+# define	    LA(n) ((NEXTCHAR + n) > (DATAP + INPUT->sizeBuf) ? ANTLR3_CHARSTREAM_EOF : (ANTLR3_UCHAR)(*(NEXTCHAR + n - 1)))
+# define            CONSUME()                                           \
+{                                                                       \
+    if        (NEXTCHAR < (DATAP + INPUT->sizeBuf))                     \
+    {                                                                   \
+        INPUT->charPositionInLine++;                                    \
+        if  ((ANTLR3_UCHAR)(*NEXTCHAR) == INPUT->newlineChar)           \
+        {                                                               \
+            INPUT->line++;                                              \
+            INPUT->charPositionInLine        = 0;                       \
+            INPUT->currentLine                = (void *)(NEXTCHAR + 1); \
+        }                                                               \
+        INPUT->nextChar = (void *)(NEXTCHAR + 1);                       \
+    }                                                                   \
+}
+
+#else
+
+// Pick up the input character by calling the input stream implementation.
+//
+#define	    CONSUME()   INPUT->istream->consume(INPUT->istream)
+#define	    LA(n)       INPUT->istream->_LA(INPUT->istream, n)
+
+#endif
+
+#define		TOKTEXT(tok, txt)				tok, (pANTLR3_UINT8)txt
+
+/* The 4 tokens defined below may well clash with your own #defines or token types. If so
+ * then for the present you must use different names for your defines as these are hard coded
+ * in the code generator. It would be better not to use such names internally, and maybe
+ * we can change this in a forthcoming release. I deliberately do not #undef these
+ * here as this will at least give you a redefined error somewhere if they clash.
+ */
+#define	    UP	    ANTLR3_TOKEN_UP
+#define	    DOWN    ANTLR3_TOKEN_DOWN
+#define	    EOR	    ANTLR3_TOKEN_EOR
+#define	    INVALID ANTLR3_TOKEN_INVALID
+
+
+/* =============================================================================
+ * Functions to create and destroy scopes. First come the rule scopes, followed
+ * by the global declared scopes.
+ */
+
+
+
+/* ============================================================================= */
+
+/* =============================================================================
+ * Start of recognizer
+ */
+
+/* Forward declare the locally static matching functions we have generated and any predicate functions.
+ */
+static ANTLR3_INLINE 
+ void
+	mT__145    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__146    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__147    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__148    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__149    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__150    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__151    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mASSERT_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCHECKSAT_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDECLARE_FUN_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDECLARE_SORT_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDEFINE_FUN_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDEFINE_FUN_REC_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDEFINE_FUNS_REC_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDEFINE_SORT_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mGET_VALUE_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mGET_ASSIGNMENT_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mGET_ASSERTIONS_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mGET_PROOF_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mGET_UNSAT_CORE_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mEXIT_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mRESET_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mRESET_ASSERTIONS_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mITE_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLET_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mATTRIBUTE_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLPAREN_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mRPAREN_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mINDEX_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSET_LOGIC_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSET_INFO_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mMETA_INFO_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mGET_INFO_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSET_OPTION_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mGET_OPTION_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPUSH_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPOP_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mAS_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCONST_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDECLARE_DATATYPES_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDECLARE_CODATATYPES_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mGET_MODEL_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mECHO_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mREWRITE_RULE_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mREDUCTION_RULE_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPROPAGATION_RULE_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDECLARE_SORTS_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDECLARE_FUNS_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDECLARE_PREDS_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDEFINE_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDECLARE_CONST_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDEFINE_CONST_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSIMPLIFY_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mINCLUDE_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mGET_QE_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mGET_QE_DISJUNCT_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSYNTH_FUN_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSYNTH_INV_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCHECK_SYNTH_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDECLARE_VAR_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDECLARE_PRIMED_VAR_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCONSTRAINT_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mINV_CONSTRAINT_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSET_OPTIONS_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSYGUS_ENUM_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSYGUS_ENUM_CONS_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSYGUS_CONSTANT_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSYGUS_VARIABLE_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSYGUS_INPUT_VARIABLE_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSYGUS_LOCAL_VARIABLE_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mATTRIBUTE_PATTERN_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mATTRIBUTE_NO_PATTERN_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mATTRIBUTE_NAMED_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mATTRIBUTE_INST_LEVEL    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mATTRIBUTE_RR_PRIORITY    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mAMPERSAND_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mAND_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mAT_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDISTINCT_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDIV_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mEQUAL_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mEXISTS_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFORALL_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mGREATER_THAN_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mGREATER_THAN_EQUAL_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mIMPLIES_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLESS_THAN_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLESS_THAN_EQUAL_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mMINUS_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mNOT_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mOR_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPLUS_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTAR_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mXOR_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDIVISIBLE_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBV2NAT_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mINT2BV_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mRENOSTR_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mREALLCHAR_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDTSIZE_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFMFCARD_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFMFCARDVAL_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mINST_CLOSURE_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mEMPTYSET_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mUNIVSET_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mNILREF_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_PINF_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_NINF_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_PZERO_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_NZERO_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_NAN_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_TO_FP_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_TO_FPBV_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_TO_FPFP_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_TO_FPR_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_TO_FPS_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_TO_FPU_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_TO_UBV_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_TO_SBV_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_RNE_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_RNA_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_RTP_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_RTN_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_RTZ_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_RNE_FULL_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_RNA_FULL_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_RTP_FULL_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_RTN_FULL_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFP_RTZ_FULL_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mQUOTED_SYMBOL    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mUNTERMINATED_QUOTED_SYMBOL    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mKEYWORD    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSIMPLE_SYMBOL    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mWHITESPACE    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mINTEGER_LITERAL    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mNUMERAL    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDECIMAL_LITERAL    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mHEX_LITERAL    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBINARY_LITERAL    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTRING_LITERAL_2_0    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSTRING_LITERAL_2_5    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSYGUS_QUOTED_LITERAL    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCOMMENT    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mALPHA    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDIGIT    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mHEX_DIGIT    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSYMBOL_CHAR    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTokens    (pSmt2Lexer ctx);
+static void	Smt2LexerFree(pSmt2Lexer ctx);
+
+/* =========================================================================
+ * Lexer matching rules end.
+ * =========================================================================
+ */
+
+
+
+static void
+Smt2LexerFree  (pSmt2Lexer ctx)
+{
+    LEXER->free(LEXER);
+
+    ANTLR3_FREE(ctx);
+}
+
+static void
+Smt2LexerReset (pSmt2Lexer ctx)
+{
+    RECOGNIZER->reset(RECOGNIZER);
+}
+
+/** \brief Name of the grammar file that generated this code
+ */
+static const char fileName[] = "../../../../../../src/parser/smt2/Smt2.g";
+
+/** \brief Return the name of the grammar file that generated this code.
+ */
+static const char * getGrammarFileName()
+{
+	return fileName;
+}
+
+/** \brief Create a new lexer called Smt2Lexer
+ *
+ * \param[in]    instream Pointer to an initialized input stream
+ * \return
+ *     - Success pSmt2Lexer initialized for the lex start
+ *     - Fail NULL
+ */
+ANTLR3_API pSmt2Lexer Smt2LexerNew
+(
+pANTLR3_INPUT_STREAM
+ instream)
+{
+	// See if we can create a new lexer with the standard constructor
+	//
+	return Smt2LexerNewSSD(instream, NULL);
+}
+
+/** \brief Create a new lexer called Smt2Lexer
+ *
+ * \param[in]    instream Pointer to an initialized input stream
+ * \param[state] state Previously created shared recognizer stat
+ * \return
+ *     - Success pSmt2Lexer initialized for the lex start
+ *     - Fail NULL
+ */
+ANTLR3_API pSmt2Lexer Smt2LexerNewSSD
+(pANTLR3_INPUT_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state)
+{
+    pSmt2Lexer ctx; // Context structure we will build and return
+
+    ctx = (pSmt2Lexer) ANTLR3_CALLOC(1, sizeof(Smt2Lexer));
+
+    if  (ctx == NULL)
+    {
+        // Failed to allocate memory for lexer context
+        return  NULL;
+    }
+
+    /* -------------------------------------------------------------------
+     * Memory for basic structure is allocated, now to fill in
+     * in base ANTLR3 structures. We initialize the function pointers
+     * for the standard ANTLR3 lexer function set, but upon return
+     * from here, the programmer may set the pointers to provide custom
+     * implementations of each function.
+     *
+     * We don't use the macros defined in Smt2Lexer.h here so you can get a sense
+     * of what goes where.
+     */
+
+    /* Create a base lexer, using the supplied input stream
+     */
+    ctx->pLexer	= antlr3LexerNewStream(ANTLR3_SIZE_HINT, instream, state);
+
+    /* Check that we allocated the memory correctly
+     */
+    if	(ctx->pLexer == NULL)
+    {
+		ANTLR3_FREE(ctx);
+		return  NULL;
+    }
+    /* Install the implementation of our Smt2Lexer interface
+     */
+    ctx->mT__145	= mT__145;
+    ctx->mT__146	= mT__146;
+    ctx->mT__147	= mT__147;
+    ctx->mT__148	= mT__148;
+    ctx->mT__149	= mT__149;
+    ctx->mT__150	= mT__150;
+    ctx->mT__151	= mT__151;
+    ctx->mASSERT_TOK	= mASSERT_TOK;
+    ctx->mCHECKSAT_TOK	= mCHECKSAT_TOK;
+    ctx->mDECLARE_FUN_TOK	= mDECLARE_FUN_TOK;
+    ctx->mDECLARE_SORT_TOK	= mDECLARE_SORT_TOK;
+    ctx->mDEFINE_FUN_TOK	= mDEFINE_FUN_TOK;
+    ctx->mDEFINE_FUN_REC_TOK	= mDEFINE_FUN_REC_TOK;
+    ctx->mDEFINE_FUNS_REC_TOK	= mDEFINE_FUNS_REC_TOK;
+    ctx->mDEFINE_SORT_TOK	= mDEFINE_SORT_TOK;
+    ctx->mGET_VALUE_TOK	= mGET_VALUE_TOK;
+    ctx->mGET_ASSIGNMENT_TOK	= mGET_ASSIGNMENT_TOK;
+    ctx->mGET_ASSERTIONS_TOK	= mGET_ASSERTIONS_TOK;
+    ctx->mGET_PROOF_TOK	= mGET_PROOF_TOK;
+    ctx->mGET_UNSAT_CORE_TOK	= mGET_UNSAT_CORE_TOK;
+    ctx->mEXIT_TOK	= mEXIT_TOK;
+    ctx->mRESET_TOK	= mRESET_TOK;
+    ctx->mRESET_ASSERTIONS_TOK	= mRESET_ASSERTIONS_TOK;
+    ctx->mITE_TOK	= mITE_TOK;
+    ctx->mLET_TOK	= mLET_TOK;
+    ctx->mATTRIBUTE_TOK	= mATTRIBUTE_TOK;
+    ctx->mLPAREN_TOK	= mLPAREN_TOK;
+    ctx->mRPAREN_TOK	= mRPAREN_TOK;
+    ctx->mINDEX_TOK	= mINDEX_TOK;
+    ctx->mSET_LOGIC_TOK	= mSET_LOGIC_TOK;
+    ctx->mSET_INFO_TOK	= mSET_INFO_TOK;
+    ctx->mMETA_INFO_TOK	= mMETA_INFO_TOK;
+    ctx->mGET_INFO_TOK	= mGET_INFO_TOK;
+    ctx->mSET_OPTION_TOK	= mSET_OPTION_TOK;
+    ctx->mGET_OPTION_TOK	= mGET_OPTION_TOK;
+    ctx->mPUSH_TOK	= mPUSH_TOK;
+    ctx->mPOP_TOK	= mPOP_TOK;
+    ctx->mAS_TOK	= mAS_TOK;
+    ctx->mCONST_TOK	= mCONST_TOK;
+    ctx->mDECLARE_DATATYPES_TOK	= mDECLARE_DATATYPES_TOK;
+    ctx->mDECLARE_CODATATYPES_TOK	= mDECLARE_CODATATYPES_TOK;
+    ctx->mGET_MODEL_TOK	= mGET_MODEL_TOK;
+    ctx->mECHO_TOK	= mECHO_TOK;
+    ctx->mREWRITE_RULE_TOK	= mREWRITE_RULE_TOK;
+    ctx->mREDUCTION_RULE_TOK	= mREDUCTION_RULE_TOK;
+    ctx->mPROPAGATION_RULE_TOK	= mPROPAGATION_RULE_TOK;
+    ctx->mDECLARE_SORTS_TOK	= mDECLARE_SORTS_TOK;
+    ctx->mDECLARE_FUNS_TOK	= mDECLARE_FUNS_TOK;
+    ctx->mDECLARE_PREDS_TOK	= mDECLARE_PREDS_TOK;
+    ctx->mDEFINE_TOK	= mDEFINE_TOK;
+    ctx->mDECLARE_CONST_TOK	= mDECLARE_CONST_TOK;
+    ctx->mDEFINE_CONST_TOK	= mDEFINE_CONST_TOK;
+    ctx->mSIMPLIFY_TOK	= mSIMPLIFY_TOK;
+    ctx->mINCLUDE_TOK	= mINCLUDE_TOK;
+    ctx->mGET_QE_TOK	= mGET_QE_TOK;
+    ctx->mGET_QE_DISJUNCT_TOK	= mGET_QE_DISJUNCT_TOK;
+    ctx->mSYNTH_FUN_TOK	= mSYNTH_FUN_TOK;
+    ctx->mSYNTH_INV_TOK	= mSYNTH_INV_TOK;
+    ctx->mCHECK_SYNTH_TOK	= mCHECK_SYNTH_TOK;
+    ctx->mDECLARE_VAR_TOK	= mDECLARE_VAR_TOK;
+    ctx->mDECLARE_PRIMED_VAR_TOK	= mDECLARE_PRIMED_VAR_TOK;
+    ctx->mCONSTRAINT_TOK	= mCONSTRAINT_TOK;
+    ctx->mINV_CONSTRAINT_TOK	= mINV_CONSTRAINT_TOK;
+    ctx->mSET_OPTIONS_TOK	= mSET_OPTIONS_TOK;
+    ctx->mSYGUS_ENUM_TOK	= mSYGUS_ENUM_TOK;
+    ctx->mSYGUS_ENUM_CONS_TOK	= mSYGUS_ENUM_CONS_TOK;
+    ctx->mSYGUS_CONSTANT_TOK	= mSYGUS_CONSTANT_TOK;
+    ctx->mSYGUS_VARIABLE_TOK	= mSYGUS_VARIABLE_TOK;
+    ctx->mSYGUS_INPUT_VARIABLE_TOK	= mSYGUS_INPUT_VARIABLE_TOK;
+    ctx->mSYGUS_LOCAL_VARIABLE_TOK	= mSYGUS_LOCAL_VARIABLE_TOK;
+    ctx->mATTRIBUTE_PATTERN_TOK	= mATTRIBUTE_PATTERN_TOK;
+    ctx->mATTRIBUTE_NO_PATTERN_TOK	= mATTRIBUTE_NO_PATTERN_TOK;
+    ctx->mATTRIBUTE_NAMED_TOK	= mATTRIBUTE_NAMED_TOK;
+    ctx->mATTRIBUTE_INST_LEVEL	= mATTRIBUTE_INST_LEVEL;
+    ctx->mATTRIBUTE_RR_PRIORITY	= mATTRIBUTE_RR_PRIORITY;
+    ctx->mAMPERSAND_TOK	= mAMPERSAND_TOK;
+    ctx->mAND_TOK	= mAND_TOK;
+    ctx->mAT_TOK	= mAT_TOK;
+    ctx->mDISTINCT_TOK	= mDISTINCT_TOK;
+    ctx->mDIV_TOK	= mDIV_TOK;
+    ctx->mEQUAL_TOK	= mEQUAL_TOK;
+    ctx->mEXISTS_TOK	= mEXISTS_TOK;
+    ctx->mFORALL_TOK	= mFORALL_TOK;
+    ctx->mGREATER_THAN_TOK	= mGREATER_THAN_TOK;
+    ctx->mGREATER_THAN_EQUAL_TOK	= mGREATER_THAN_EQUAL_TOK;
+    ctx->mIMPLIES_TOK	= mIMPLIES_TOK;
+    ctx->mLESS_THAN_TOK	= mLESS_THAN_TOK;
+    ctx->mLESS_THAN_EQUAL_TOK	= mLESS_THAN_EQUAL_TOK;
+    ctx->mMINUS_TOK	= mMINUS_TOK;
+    ctx->mNOT_TOK	= mNOT_TOK;
+    ctx->mOR_TOK	= mOR_TOK;
+    ctx->mPLUS_TOK	= mPLUS_TOK;
+    ctx->mSTAR_TOK	= mSTAR_TOK;
+    ctx->mXOR_TOK	= mXOR_TOK;
+    ctx->mDIVISIBLE_TOK	= mDIVISIBLE_TOK;
+    ctx->mBV2NAT_TOK	= mBV2NAT_TOK;
+    ctx->mINT2BV_TOK	= mINT2BV_TOK;
+    ctx->mRENOSTR_TOK	= mRENOSTR_TOK;
+    ctx->mREALLCHAR_TOK	= mREALLCHAR_TOK;
+    ctx->mDTSIZE_TOK	= mDTSIZE_TOK;
+    ctx->mFMFCARD_TOK	= mFMFCARD_TOK;
+    ctx->mFMFCARDVAL_TOK	= mFMFCARDVAL_TOK;
+    ctx->mINST_CLOSURE_TOK	= mINST_CLOSURE_TOK;
+    ctx->mEMPTYSET_TOK	= mEMPTYSET_TOK;
+    ctx->mUNIVSET_TOK	= mUNIVSET_TOK;
+    ctx->mNILREF_TOK	= mNILREF_TOK;
+    ctx->mFP_PINF_TOK	= mFP_PINF_TOK;
+    ctx->mFP_NINF_TOK	= mFP_NINF_TOK;
+    ctx->mFP_PZERO_TOK	= mFP_PZERO_TOK;
+    ctx->mFP_NZERO_TOK	= mFP_NZERO_TOK;
+    ctx->mFP_NAN_TOK	= mFP_NAN_TOK;
+    ctx->mFP_TO_FP_TOK	= mFP_TO_FP_TOK;
+    ctx->mFP_TO_FPBV_TOK	= mFP_TO_FPBV_TOK;
+    ctx->mFP_TO_FPFP_TOK	= mFP_TO_FPFP_TOK;
+    ctx->mFP_TO_FPR_TOK	= mFP_TO_FPR_TOK;
+    ctx->mFP_TO_FPS_TOK	= mFP_TO_FPS_TOK;
+    ctx->mFP_TO_FPU_TOK	= mFP_TO_FPU_TOK;
+    ctx->mFP_TO_UBV_TOK	= mFP_TO_UBV_TOK;
+    ctx->mFP_TO_SBV_TOK	= mFP_TO_SBV_TOK;
+    ctx->mFP_RNE_TOK	= mFP_RNE_TOK;
+    ctx->mFP_RNA_TOK	= mFP_RNA_TOK;
+    ctx->mFP_RTP_TOK	= mFP_RTP_TOK;
+    ctx->mFP_RTN_TOK	= mFP_RTN_TOK;
+    ctx->mFP_RTZ_TOK	= mFP_RTZ_TOK;
+    ctx->mFP_RNE_FULL_TOK	= mFP_RNE_FULL_TOK;
+    ctx->mFP_RNA_FULL_TOK	= mFP_RNA_FULL_TOK;
+    ctx->mFP_RTP_FULL_TOK	= mFP_RTP_FULL_TOK;
+    ctx->mFP_RTN_FULL_TOK	= mFP_RTN_FULL_TOK;
+    ctx->mFP_RTZ_FULL_TOK	= mFP_RTZ_FULL_TOK;
+    ctx->mQUOTED_SYMBOL	= mQUOTED_SYMBOL;
+    ctx->mUNTERMINATED_QUOTED_SYMBOL	= mUNTERMINATED_QUOTED_SYMBOL;
+    ctx->mKEYWORD	= mKEYWORD;
+    ctx->mSIMPLE_SYMBOL	= mSIMPLE_SYMBOL;
+    ctx->mWHITESPACE	= mWHITESPACE;
+    ctx->mINTEGER_LITERAL	= mINTEGER_LITERAL;
+    ctx->mNUMERAL	= mNUMERAL;
+    ctx->mDECIMAL_LITERAL	= mDECIMAL_LITERAL;
+    ctx->mHEX_LITERAL	= mHEX_LITERAL;
+    ctx->mBINARY_LITERAL	= mBINARY_LITERAL;
+    ctx->mSTRING_LITERAL_2_0	= mSTRING_LITERAL_2_0;
+    ctx->mSTRING_LITERAL_2_5	= mSTRING_LITERAL_2_5;
+    ctx->mSYGUS_QUOTED_LITERAL	= mSYGUS_QUOTED_LITERAL;
+    ctx->mCOMMENT	= mCOMMENT;
+    ctx->mALPHA	= mALPHA;
+    ctx->mDIGIT	= mDIGIT;
+    ctx->mHEX_DIGIT	= mHEX_DIGIT;
+    ctx->mSYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE	= mSYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE;
+    ctx->mSYMBOL_CHAR	= mSYMBOL_CHAR;
+    ctx->mTokens	= mTokens;
+
+    /** When the nextToken() call is made to this lexer's pANTLR3_TOKEN_SOURCE
+     *  it will call mTokens() in this generated code, and will pass it the ctx
+     * pointer of this lexer, not the context of the base lexer, so store that now.
+     */
+    ctx->pLexer->ctx	    = ctx;
+
+    /**Install the token matching function
+     */
+    ctx->pLexer->mTokens = (void (*) (void *))(mTokens);
+
+    ctx->getGrammarFileName	= getGrammarFileName;
+    ctx->free		= Smt2LexerFree;
+    ctx->reset          = Smt2LexerReset;
+
+
+    /* Return the newly built lexer to the caller
+     */
+    return  ctx;
+}
+
+/* =========================================================================
+ * DFA tables for the lexer
+ */
+/** Static dfa state tables for Cyclic dfa:
+ *    1:1: Tokens : ( T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | ITE_TOK | LET_TOK | ATTRIBUTE_TOK | LPAREN_TOK | RPAREN_TOK | INDEX_TOK | SET_LOGIC_TOK | SET_INFO_TOK | META_INFO_TOK | GE [...]
+ */
+static const ANTLR3_INT32 dfa15_eot[841] =
+    {
+	-1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 69, -1, -1, 70, 43, 43, 
+	43, -1, 43, 43, 43, 43, 85, 86, 87, 89, 43, 94, 96, 99, 43, 43, 104, 105, 
+	43, 43, 43, 43, 43, 43, 115, -1, -1, 116, -1, -1, -1, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 140, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 
+	43, 43, 43, -1, 80, 80, 80, 80, -1, 43, 43, 43, 43, -1, -1, -1, 169, -1, 
+	43, 43, 43, 173, -1, 174, -1, 43, 43, -1, 43, 178, 43, 43, -1, -1, 43, 
+	43, 43, 43, 43, 43, 43, 115, -1, -1, -1, -1, -1, -1, -1, -1, 194, -1, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -1, 214, 43, 
+	43, 43, 43, 43, 43, 43, 43, 223, 43, 43, 43, 43, 228, 43, 43, 231, 43, 
+	80, 80, 80, 80, 80, 43, 43, 43, 43, -1, 43, 43, 43, -1, -1, 245, 43, 247, 
+	-1, 248, 43, 250, 43, 43, 253, 43, 255, 256, 257, 258, 259, 193, -1, -1, 
+	-1, 263, 43, 265, 43, 267, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, -1, 43, 43, 43, 43, -1, 
+	43, 304, -1, 305, 80, 80, 80, 80, 80, 43, 43, 43, 43, 43, 43, 43, -1, 43, 
+	-1, -1, 43, -1, 43, 43, -1, 43, -1, -1, -1, -1, -1, 261, -1, -1, -1, 43, 
+	-1, 43, -1, 43, 43, 328, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 345, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, -1, -1, 80, 80, 80, 80, 80, 43, 43, 43, 43, 43, 43, 43, 377, 
+	378, 43, 43, 382, 43, 384, 43, 386, 43, -1, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 404, 43, 43, -1, 43, 409, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 421, 43, 43, 424, 43, 43, -1, 80, 80, 429, 80, 80, 43, 
+	43, 43, 43, 436, 43, 43, -1, -1, 440, 43, 43, -1, 447, -1, 43, -1, 43, 
+	-1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 461, 43, 43, 43, 43, -1, 43, 
+	43, 43, 43, -1, 43, 43, 476, 43, 43, 43, 43, 43, 43, 43, 43, -1, 486, 43, 
+	-1, 43, 43, 80, 80, -1, 80, 80, 43, 43, 43, 43, -1, 43, 43, 43, -1, 501, 
+	43, 43, 43, 43, 43, -1, 507, 43, 509, 43, 43, 43, 43, 43, 43, 516, 43, 
+	518, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 538, 43, -1, 
+	43, 43, 43, 43, 43, 545, 43, 43, 43, -1, 43, 43, 43, 552, 80, 80, 80, 556, 
+	557, 43, 43, 561, 43, 43, -1, 565, 566, 43, 43, 43, -1, 43, -1, 43, 43, 
+	43, 43, 43, 43, -1, 578, -1, 43, -1, 580, 581, 43, 43, 43, 586, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, -1, 598, 599, 43, 43, 602, 43, -1, 
+	43, 605, 43, 43, 43, 609, -1, 80, 80, 80, -1, -1, 43, 43, 43, -1, 618, 
+	619, -1, -1, -1, 43, 43, 43, -1, 43, 624, 43, 43, 43, 43, 43, -1, 631, 
+	-1, -1, 43, 43, 43, 43, -1, 43, 637, 43, 43, 43, 43, 43, 43, 648, 43, 43, 
+	-1, -1, 43, 43, -1, 43, 654, -1, 43, 43, 43, -1, 80, 80, 80, -1, -1, 43, 
+	43, 43, -1, -1, 664, 43, 43, 43, -1, 668, 43, 43, 43, 674, 675, -1, 676, 
+	43, 43, 43, 680, -1, 682, 43, 43, 43, 43, 43, 43, 689, 43, 43, -1, 692, 
+	43, 43, 43, 43, -1, 43, 43, 43, 700, 80, 80, 43, 43, 43, -1, 43, 43, 43, 
+	-1, 709, 43, 43, 43, 43, -1, -1, -1, 43, 43, 43, -1, 717, -1, 719, 43, 
+	43, 43, 43, 43, -1, 43, 43, -1, 727, 43, 43, 43, 43, 43, 733, -1, 80, 735, 
+	43, 43, 738, 739, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, -1, 749, -1, 
+	43, 43, 752, 753, 43, 43, 43, -1, 43, 43, 43, 43, 43, -1, 80, -1, 763, 
+	764, -1, -1, 43, 43, 43, 43, 43, 43, 771, 43, 43, -1, 43, 43, -1, -1, 43, 
+	777, 43, 779, 780, 781, 43, 783, 80, -1, -1, 787, 43, 43, 43, 43, 792, 
+	-1, 43, 43, 43, 43, 43, -1, 798, -1, -1, -1, 799, -1, 80, -1, -1, -1, 801, 
+	43, 43, 43, -1, 805, 43, 43, 43, 43, -1, -1, 80, -1, 43, 43, 43, -1, 43, 
+	815, 43, 43, 80, 43, 43, 43, 823, -1, 43, 825, 80, 43, 43, 829, 830, -1, 
+	831, -1, 80, 43, 43, -1, -1, -1, 80, 43, 43, 838, 839, 840, -1, -1, -1
+    };
+static const ANTLR3_INT32 dfa15_eof[841] =
+    {
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
+    };
+static const ANTLR3_INT32 dfa15_min[841] =
+    {
+	9, -1, 99, 101, 101, 101, 110, 104, 101, 101, 110, 101, 33, -1, -1, 33, 
+	101, 111, 110, 33, 111, 97, 110, 111, 33, 33, 33, 33, 109, 33, 33, 33, 
+	111, 114, 33, 33, 111, 118, 110, 97, 111, 78, 0, -1, -1, 46, 98, 0, -1, 
+	105, 104, 112, 46, 116, 103, 112, 110, 114, 33, 100, 101, 110, 99, 115, 
+	46, 116, 101, 99, 116, -1, -1, 116, 115, 112, 117, -1, 97, 97, 117, 114, 
+	-1, 110, 114, 112, 99, -1, -1, -1, 33, -1, 114, 102, 46, 33, -1, 33, -1, 
+	111, 101, -1, 116, 33, 111, 101, -1, -1, 114, 50, 105, 78, 95, 65, 78, 
+	0, -1, -1, -1, -1, -1, -1, 0, 0, 34, 0, 114, 115, 111, 116, 101, 101, 97, 
+	97, 110, 110, 112, 45, 46, 116, 111, 101, -1, 33, 99, 115, 108, 105, 116, 
+	105, 115, 45, 33, 108, 45, 50, 116, 33, 97, 104, 33, 109, 116, 45, 109, 
+	97, 45, 115, 105, 117, 97, -1, 97, 46, 116, -1, -1, 33, 114, 33, -1, 33, 
+	114, 33, 110, 118, 33, 102, 33, 33, 33, 33, 33, 0, 0, -1, 0, 34, 97, 33, 
+	116, 33, 121, 97, 116, 111, 108, 116, 100, 95, 108, 105, 110, 104, 95, 
+	114, -1, 107, 116, 97, 110, 105, 115, 105, 97, -1, 117, 99, 98, 45, -1, 
+	45, 33, -1, 33, 116, 112, 101, 110, 112, 116, 97, 116, 108, 108, 99, 111, 
+	-1, 111, -1, -1, 111, -1, 97, 115, -1, 112, -1, -1, -1, -1, -1, 0, -1, 
+	-1, 0, 99, -1, 115, -1, 115, 116, 33, 115, 108, 101, 78, 101, 105, 111, 
+	110, 112, 105, 45, 101, 116, 45, 33, 114, 101, 110, 105, 122, 97, 115, 
+	114, 110, 110, 112, 111, 101, 100, 111, 118, 99, 105, -1, 0, 101, 97, 100, 
+	116, 114, 97, 98, 86, 86, 108, 97, 95, 33, 33, 116, 101, 33, 116, 33, 101, 
+	33, 97, 0, 116, 99, 95, 101, 111, 120, 102, 103, 102, 116, 108, 102, 120, 
+	33, 115, 97, -1, 101, 33, 99, 98, 101, 108, 115, 111, 115, 102, 116, 100, 
+	33, 101, 110, 33, 108, 110, -1, 114, 116, 33, 45, 105, 110, 108, 97, 97, 
+	33, 114, 115, -1, -1, 33, 116, 98, -1, 33, -1, 116, -1, 115, -1, 114, 104, 
+	108, 97, 119, 116, 121, 105, 111, 105, 33, 117, 110, 116, 112, -1, 97, 
+	105, 45, 99, -1, 116, 108, 33, 117, 101, 111, 97, 111, 105, 101, 100, -1, 
+	33, 115, -1, 111, 102, 110, 116, -1, 105, 111, 116, 101, 114, 114, -1, 
+	100, 98, 98, -1, 33, 118, 112, 101, 105, 110, -1, 33, 115, 33, 97, 101, 
+	105, 114, 97, 101, 33, 99, 33, 111, 0, 110, 118, 101, 101, 114, 116, 110, 
+	110, 99, 117, 111, 111, 33, 101, -1, 101, 103, 114, 102, 116, 33, 111, 
+	108, 105, -1, 116, 115, 111, 33, 101, 110, 114, 33, 33, 105, 105, 33, 118, 
+	118, 0, 33, 33, 97, 103, 115, 0, 101, -1, 114, 102, 103, 101, 114, 110, 
+	-1, 33, -1, 110, -1, 33, 33, 110, 100, 111, 33, 116, 116, 117, 111, 97, 
+	111, 114, 97, 110, 114, 110, -1, 33, 33, 110, 116, 33, 45, -1, 110, 33, 
+	115, 114, 117, 33, -1, 114, 115, 105, 0, 0, 97, 97, 118, -1, 33, 33, -1, 
+	-1, -1, 108, 110, 105, -1, 114, 33, 116, 104, 115, 100, 100, -1, 33, -1, 
+	-1, 100, 114, 117, 112, -1, 104, 33, 110, 114, 116, 100, 101, 114, 33, 
+	116, 115, -1, -1, 109, 105, -1, 99, 33, -1, 106, 97, 114, -1, 110, 116, 
+	116, -1, -1, 98, 98, 97, -1, -1, 33, 101, 103, 116, -1, 33, 116, 116, 78, 
+	33, 33, -1, 33, 105, 99, 97, 33, -1, 33, 116, 97, 97, 115, 100, 109, 33, 
+	114, 45, -1, 33, 116, 101, 111, 111, -1, 117, 105, 101, 33, 45, 121, 108, 
+	108, 108, -1, 100, 110, 105, -1, 33, 84, 111, 101, 101, -1, -1, -1, 116, 
+	116, 103, -1, 33, -1, 33, 116, 116, 116, 115, 101, -1, 101, 114, -1, 33, 
+	110, 110, 114, 110, 110, 33, -1, 109, 33, 101, 101, 33, 33, 101, 111, -1, 
+	105, 115, 103, 114, 101, 105, 97, -1, 33, -1, 121, 97, 33, 33, 100, 99, 
+	101, -1, 116, 115, 101, 99, 116, -1, 97, -1, 33, 33, -1, -1, 100, 110, 
+	101, 105, 97, 111, 33, 111, 116, -1, 112, 116, -1, -1, 45, 33, 99, 33, 
+	33, 33, 116, 33, 120, 0, 0, 33, 115, 115, 116, 116, 33, -1, 110, 105, 101, 
+	121, 118, -1, 33, -1, -1, -1, 33, -1, 45, -1, -1, -1, 33, 84, 105, 105, 
+	-1, 33, 111, 115, 112, 97, -1, -1, 108, -1, 111, 118, 118, -1, 110, 33, 
+	101, 114, 101, 65, 101, 101, 33, -1, 115, 33, 118, 118, 119, 33, 33, -1, 
+	33, -1, 101, 101, 97, -1, -1, -1, 108, 110, 121, 33, 33, 33, -1, -1, -1
+    };
+static const ANTLR3_INT32 dfa15_max[841] =
+    {
+	126, -1, 120, 111, 121, 101, 115, 111, 116, 101, 116, 101, 126, -1, -1, 
+	126, 101, 117, 110, 126, 111, 97, 110, 111, 126, 126, 126, 126, 112, 126, 
+	126, 126, 111, 114, 126, 126, 111, 118, 110, 97, 111, 84, 65535, -1, -1, 
+	57, 120, 65535, -1, 116, 104, 112, 115, 117, 109, 116, 110, 114, 126, 100, 
+	101, 110, 102, 118, 46, 116, 101, 118, 116, -1, -1, 116, 115, 112, 117, 
+	-1, 97, 111, 117, 114, -1, 110, 114, 112, 99, -1, -1, -1, 126, -1, 114, 
+	102, 46, 126, -1, 126, -1, 111, 101, -1, 116, 126, 111, 101, -1, -1, 114, 
+	50, 105, 78, 95, 69, 90, 65535, -1, -1, -1, -1, -1, -1, 65535, 65535, 34, 
+	65535, 114, 116, 111, 116, 101, 101, 110, 97, 110, 110, 112, 45, 46, 116, 
+	111, 101, -1, 126, 99, 115, 108, 105, 116, 105, 115, 45, 126, 108, 45, 
+	50, 116, 126, 97, 104, 126, 109, 116, 45, 109, 97, 45, 115, 105, 117, 97, 
+	-1, 97, 46, 116, -1, -1, 126, 114, 126, -1, 126, 114, 126, 110, 118, 126, 
+	102, 126, 126, 126, 126, 126, 65535, 65535, -1, 0, 34, 97, 126, 116, 126, 
+	121, 97, 116, 111, 108, 116, 100, 95, 108, 111, 110, 104, 95, 114, -1, 
+	107, 116, 97, 110, 105, 115, 105, 118, -1, 117, 99, 98, 45, -1, 45, 126, 
+	-1, 126, 116, 112, 101, 110, 112, 116, 97, 116, 108, 108, 99, 111, -1, 
+	111, -1, -1, 111, -1, 97, 115, -1, 112, -1, -1, -1, -1, -1, 65535, -1, 
+	-1, 0, 99, -1, 115, -1, 115, 116, 126, 115, 108, 101, 84, 101, 105, 111, 
+	110, 112, 105, 45, 101, 116, 45, 126, 114, 101, 110, 105, 122, 97, 115, 
+	114, 110, 110, 112, 111, 101, 100, 111, 118, 99, 105, -1, 0, 101, 97, 100, 
+	116, 114, 97, 98, 86, 86, 108, 97, 95, 126, 126, 116, 101, 126, 116, 126, 
+	101, 126, 97, 0, 116, 99, 95, 101, 111, 120, 102, 103, 102, 116, 108, 105, 
+	120, 126, 115, 97, -1, 101, 126, 99, 98, 101, 108, 115, 111, 115, 102, 
+	116, 100, 126, 101, 110, 126, 108, 110, -1, 114, 116, 126, 45, 105, 110, 
+	108, 97, 97, 126, 114, 117, -1, -1, 126, 116, 117, -1, 126, -1, 116, -1, 
+	115, -1, 114, 104, 114, 97, 119, 116, 121, 105, 111, 105, 126, 117, 110, 
+	116, 114, -1, 121, 105, 45, 115, -1, 116, 108, 126, 117, 105, 111, 97, 
+	111, 105, 101, 100, -1, 126, 115, -1, 111, 102, 110, 116, -1, 105, 111, 
+	116, 101, 114, 114, -1, 100, 98, 98, -1, 126, 118, 112, 101, 105, 110, 
+	-1, 126, 115, 126, 97, 101, 105, 114, 97, 101, 126, 99, 126, 111, 0, 110, 
+	118, 101, 101, 114, 116, 110, 110, 118, 117, 111, 111, 126, 101, -1, 101, 
+	103, 114, 102, 116, 126, 111, 108, 105, -1, 116, 115, 111, 126, 101, 110, 
+	114, 126, 126, 105, 105, 126, 118, 118, 0, 126, 126, 97, 103, 115, 0, 101, 
+	-1, 114, 102, 103, 101, 114, 110, -1, 126, -1, 110, -1, 126, 126, 110, 
+	119, 111, 126, 116, 116, 117, 111, 97, 111, 114, 97, 110, 114, 110, -1, 
+	126, 126, 110, 116, 126, 45, -1, 110, 126, 115, 114, 117, 126, -1, 114, 
+	115, 105, 0, 0, 97, 97, 118, -1, 126, 126, -1, -1, -1, 108, 110, 105, -1, 
+	114, 126, 116, 104, 115, 100, 100, -1, 126, -1, -1, 100, 114, 117, 112, 
+	-1, 104, 126, 110, 114, 116, 110, 105, 114, 126, 116, 115, -1, -1, 109, 
+	105, -1, 99, 126, -1, 106, 97, 114, -1, 110, 116, 116, -1, -1, 98, 98, 
+	97, -1, -1, 126, 101, 103, 116, -1, 126, 116, 116, 90, 126, 126, -1, 126, 
+	105, 99, 97, 126, -1, 126, 116, 97, 97, 115, 100, 109, 126, 114, 45, -1, 
+	126, 116, 101, 111, 111, -1, 117, 105, 101, 126, 45, 121, 108, 108, 108, 
+	-1, 100, 110, 105, -1, 126, 84, 111, 101, 101, -1, -1, -1, 116, 116, 103, 
+	-1, 126, -1, 126, 116, 116, 116, 115, 101, -1, 101, 114, -1, 126, 110, 
+	110, 114, 110, 110, 126, -1, 109, 126, 101, 101, 126, 126, 101, 111, -1, 
+	105, 115, 103, 114, 101, 105, 97, -1, 126, -1, 121, 97, 126, 126, 100, 
+	99, 101, -1, 116, 115, 101, 99, 116, -1, 97, -1, 126, 126, -1, -1, 100, 
+	110, 101, 105, 97, 111, 126, 111, 116, -1, 112, 116, -1, -1, 45, 126, 99, 
+	126, 126, 126, 116, 126, 120, 0, 0, 126, 115, 115, 116, 116, 126, -1, 110, 
+	105, 101, 121, 118, -1, 126, -1, -1, -1, 126, -1, 45, -1, -1, -1, 126, 
+	84, 105, 105, -1, 126, 111, 115, 112, 97, -1, -1, 108, -1, 111, 118, 118, 
+	-1, 110, 126, 101, 114, 101, 69, 101, 101, 126, -1, 115, 126, 118, 118, 
+	119, 126, 126, -1, 126, -1, 101, 101, 97, -1, -1, -1, 108, 110, 121, 126, 
+	126, 126, -1, -1, -1
+    };
+static const ANTLR3_INT32 dfa15_accept[841] =
+    {
+	-1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, 28, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 142, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 26, 29, 
+	-1, -1, -1, -1, 66, -1, -1, -1, -1, 132, -1, -1, -1, -1, 76, 78, 80, -1, 
+	81, -1, -1, -1, -1, 84, -1, 87, -1, -1, 89, -1, -1, -1, -1, 92, 93, -1, 
+	-1, -1, -1, -1, -1, -1, -1, 130, 131, 135, 136, 137, 138, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, 86, -1, -1, -1, 85, 88, -1, -1, -1, 
+	91, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 140, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	77, -1, -1, -1, -1, -1, -1, -1, -1, 24, -1, -1, -1, -1, 25, -1, -1, 37, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 108, -1, 90, 107, -1, 
+	94, -1, -1, 111, -1, 120, 121, 122, 123, 124, -1, 139, 141, -1, -1, 21, 
+	-1, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, 110, 109, -1, -1, -1, 112, -1, 82, -1, 3, -1, 22, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, -1, -1, 50, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 55, -1, -1, 97, -1, -1, -1, 
+	-1, 73, -1, -1, -1, -1, -1, -1, 83, -1, -1, -1, 96, -1, -1, -1, -1, -1, 
+	-1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, 53, -1, 
+	31, -1, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, 79, -1, -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, 71, -1, 
+	-1, -1, -1, -1, -1, -1, -1, 101, -1, -1, 105, 113, 114, -1, -1, -1, 104, 
+	-1, -1, -1, -1, -1, -1, -1, 30, -1, 57, 58, -1, -1, -1, -1, 9, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, 95, 16, -1, -1, 19, -1, -1, 42, -1, 
+	-1, -1, 32, -1, -1, -1, 67, 68, -1, -1, -1, 118, 119, -1, -1, -1, -1, 99, 
+	-1, -1, -1, -1, -1, -1, 34, -1, -1, -1, -1, -1, 62, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, 12, -1, -1, -1, -1, -1, 35, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, 115, -1, -1, -1, 4, -1, -1, -1, -1, -1, 6, 64, 7, -1, -1, -1, 
+	59, -1, 10, -1, -1, -1, -1, -1, -1, 60, -1, -1, 15, -1, -1, -1, -1, -1, 
+	-1, -1, 72, -1, -1, -1, -1, -1, -1, -1, -1, 5, -1, -1, -1, -1, -1, -1, 
+	-1, 48, -1, 11, -1, -1, -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, -1, 103, 
+	-1, 75, -1, -1, 102, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, 
+	51, 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, 44, -1, -1, -1, -1, -1, 13, -1, 17, 18, 20, -1, 63, -1, 69, 70, 117, 
+	-1, -1, -1, -1, 129, -1, -1, -1, -1, -1, 14, 56, -1, 23, -1, -1, -1, 45, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, -1, -1, -1, -1, -1, 46, 
+	-1, 61, -1, -1, -1, 127, 128, 41, -1, -1, -1, -1, -1, -1, 74, 125, 126
+    };
+static const ANTLR3_INT32 dfa15_special[841] =
+    {
+	14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, 4, 18, 16, 21, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, -1, 17, 22, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, 1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 11, -1, -1, -1, 
+	-1, -1, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 6, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1
+    };
+
+/** Used when there is no transition table entry for a particular state */
+#define dfa15_T_empty	    NULL
+
+static const ANTLR3_INT32 dfa15_T0[] =
+    {
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
+    };
+
+static const ANTLR3_INT32 dfa15_T1[] =
+    {
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, -1, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 114, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
+	113
+    };
+
+static const ANTLR3_INT32 dfa15_T2[] =
+    {
+	80, -1, -1, 80, 80, 80, -1, -1, -1, 80, 80, -1, 80, 80, 80, 80, 80, 80, 
+	80, 80, 80, 80, 80, 80, 80, -1, -1, 80, 80, 80, 80, 80, 80, 80, 80, 80, 
+	80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 
+	80, 80, 80, 80, -1, -1, -1, 80, 80, -1, 80, 80, 80, 80, 80, 80, 80, 80, 
+	80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 
+	-1, -1, -1, 80
+    };
+
+static const ANTLR3_INT32 dfa15_T3[] =
+    {
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 408, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
+    };
+
+static const ANTLR3_INT32 dfa15_T4[] =
+    {
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
+	193
+    };
+
+static const ANTLR3_INT32 dfa15_T5[] =
+    {
+	125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124
+    };
+
+static const ANTLR3_INT32 dfa15_T6[] =
+    {
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 630, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
+    };
+
+static const ANTLR3_INT32 dfa15_T7[] =
+    {
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 381, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
+    };
+
+static const ANTLR3_INT32 dfa15_T8[] =
+    {
+	130, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, 129
+    };
+
+static const ANTLR3_INT32 dfa15_T9[] =
+    {
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 344, 43, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
+    };
+
+static const ANTLR3_INT32 dfa15_T10[] =
+    {
+	80, -1, -1, 80, 80, 80, -1, -1, -1, 80, 80, -1, 80, 80, 80, 80, 80, 80, 
+	80, 80, 80, 80, 80, 80, 80, 75, -1, 80, 80, 80, 80, 80, 80, 80, 80, 80, 
+	80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 
+	80, 80, 80, 80, -1, -1, -1, 80, 80, -1, 80, 80, 80, 80, 80, 80, 80, 80, 
+	80, 80, 80, 80, 80, 77, 80, 76, 78, 79, 80, 80, 80, 80, 80, 80, 80, 80, 
+	-1, -1, -1, 80
+    };
+
+static const ANTLR3_INT32 dfa15_T11[] =
+    {
+	196
+    };
+
+static const ANTLR3_INT32 dfa15_T12[] =
+    {
+	264
+    };
+
+static const ANTLR3_INT32 dfa15_T13[] =
+    {
+	323
+    };
+
+static const ANTLR3_INT32 dfa15_T14[] =
+    {
+	383
+    };
+
+static const ANTLR3_INT32 dfa15_T15[] =
+    {
+	111, -1, -1, -1, -1, -1, 112
+    };
+
+static const ANTLR3_INT32 dfa15_T16[] =
+    {
+	201
+    };
+
+static const ANTLR3_INT32 dfa15_T17[] =
+    {
+	269
+    };
+
+static const ANTLR3_INT32 dfa15_T18[] =
+    {
+	326
+    };
+
+static const ANTLR3_INT32 dfa15_T19[] =
+    {
+	511
+    };
+
+static const ANTLR3_INT32 dfa15_T20[] =
+    {
+	573
+    };
+
+static const ANTLR3_INT32 dfa15_T21[] =
+    {
+	625
+    };
+
+static const ANTLR3_INT32 dfa15_T22[] =
+    {
+	512
+    };
+
+static const ANTLR3_INT32 dfa15_T23[] =
+    {
+	574
+    };
+
+static const ANTLR3_INT32 dfa15_T24[] =
+    {
+	626
+    };
+
+static const ANTLR3_INT32 dfa15_T25[] =
+    {
+	669
+    };
+
+static const ANTLR3_INT32 dfa15_T26[] =
+    {
+	206
+    };
+
+static const ANTLR3_INT32 dfa15_T27[] =
+    {
+	207
+    };
+
+static const ANTLR3_INT32 dfa15_T28[] =
+    {
+	274
+    };
+
+static const ANTLR3_INT32 dfa15_T29[] =
+    {
+	275
+    };
+
+static const ANTLR3_INT32 dfa15_T30[] =
+    {
+	334
+    };
+
+static const ANTLR3_INT32 dfa15_T31[] =
+    {
+	394
+    };
+
+static const ANTLR3_INT32 dfa15_T32[] =
+    {
+	456
+    };
+
+static const ANTLR3_INT32 dfa15_T33[] =
+    {
+	332, -1, -1, -1, -1, -1, 333
+    };
+
+static const ANTLR3_INT32 dfa15_T34[] =
+    {
+	515
+    };
+
+static const ANTLR3_INT32 dfa15_T35[] =
+    {
+	577
+    };
+
+static const ANTLR3_INT32 dfa15_T36[] =
+    {
+	629
+    };
+
+static const ANTLR3_INT32 dfa15_T37[] =
+    {
+	138
+    };
+
+static const ANTLR3_INT32 dfa15_T38[] =
+    {
+	212
+    };
+
+static const ANTLR3_INT32 dfa15_T39[] =
+    {
+	282
+    };
+
+static const ANTLR3_INT32 dfa15_T40[] =
+    {
+	341
+    };
+
+static const ANTLR3_INT32 dfa15_T41[] =
+    {
+	402
+    };
+
+static const ANTLR3_INT32 dfa15_T42[] =
+    {
+	464
+    };
+
+static const ANTLR3_INT32 dfa15_T43[] =
+    {
+	523
+    };
+
+static const ANTLR3_INT32 dfa15_T44[] =
+    {
+	582
+    };
+
+static const ANTLR3_INT32 dfa15_T45[] =
+    {
+	632
+    };
+
+static const ANTLR3_INT32 dfa15_T46[] =
+    {
+	466, -1, 465
+    };
+
+static const ANTLR3_INT32 dfa15_T47[] =
+    {
+	526
+    };
+
+static const ANTLR3_INT32 dfa15_T48[] =
+    {
+	136, -1, -1, -1, 135
+    };
+
+static const ANTLR3_INT32 dfa15_T49[] =
+    {
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 420, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
+    };
+
+static const ANTLR3_INT32 dfa15_T50[] =
+    {
+	690
+    };
+
+static const ANTLR3_INT32 dfa15_T51[] =
+    {
+	725
+    };
+
+static const ANTLR3_INT32 dfa15_T52[] =
+    {
+	755
+    };
+
+static const ANTLR3_INT32 dfa15_T53[] =
+    {
+	691
+    };
+
+static const ANTLR3_INT32 dfa15_T54[] =
+    {
+	726
+    };
+
+static const ANTLR3_INT32 dfa15_T55[] =
+    {
+	756
+    };
+
+static const ANTLR3_INT32 dfa15_T56[] =
+    {
+	778
+    };
+
+static const ANTLR3_INT32 dfa15_T57[] =
+    {
+	536
+    };
+
+static const ANTLR3_INT32 dfa15_T58[] =
+    {
+	596
+    };
+
+static const ANTLR3_INT32 dfa15_T59[] =
+    {
+	649
+    };
+
+static const ANTLR3_INT32 dfa15_T60[] =
+    {
+	351
+    };
+
+static const ANTLR3_INT32 dfa15_T61[] =
+    {
+	413
+    };
+
+static const ANTLR3_INT32 dfa15_T62[] =
+    {
+	477
+    };
+
+static const ANTLR3_INT32 dfa15_T63[] =
+    {
+	540
+    };
+
+static const ANTLR3_INT32 dfa15_T64[] =
+    {
+	541
+    };
+
+static const ANTLR3_INT32 dfa15_T65[] =
+    {
+	600
+    };
+
+static const ANTLR3_INT32 dfa15_T66[] =
+    {
+	651
+    };
+
+static const ANTLR3_INT32 dfa15_T67[] =
+    {
+	694
+    };
+
+static const ANTLR3_INT32 dfa15_T68[] =
+    {
+	728
+    };
+
+static const ANTLR3_INT32 dfa15_T69[] =
+    {
+	757
+    };
+
+static const ANTLR3_INT32 dfa15_T70[] =
+    {
+	149
+    };
+
+static const ANTLR3_INT32 dfa15_T71[] =
+    {
+	222
+    };
+
+static const ANTLR3_INT32 dfa15_T72[] =
+    {
+	542
+    };
+
+static const ANTLR3_INT32 dfa15_T73[] =
+    {
+	601
+    };
+
+static const ANTLR3_INT32 dfa15_T74[] =
+    {
+	652
+    };
+
+static const ANTLR3_INT32 dfa15_T75[] =
+    {
+	695
+    };
+
+static const ANTLR3_INT32 dfa15_T76[] =
+    {
+	729
+    };
+
+static const ANTLR3_INT32 dfa15_T77[] =
+    {
+	162, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161
+    };
+
+static const ANTLR3_INT32 dfa15_T78[] =
+    {
+	758
+    };
+
+static const ANTLR3_INT32 dfa15_T79[] =
+    {
+	292, -1, -1, -1, -1, -1, -1, -1, 295, -1, -1, -1, 297, -1, 296, 293, 298, 
+	-1, -1, -1, 294, 291
+    };
+
+static const ANTLR3_INT32 dfa15_T80[] =
+    {
+	353
+    };
+
+static const ANTLR3_INT32 dfa15_T81[] =
+    {
+	415
+    };
+
+static const ANTLR3_INT32 dfa15_T82[] =
+    {
+	480
+    };
+
+static const ANTLR3_INT32 dfa15_T83[] =
+    {
+	543
+    };
+
+static const ANTLR3_INT32 dfa15_T84[] =
+    {
+	354
+    };
+
+static const ANTLR3_INT32 dfa15_T85[] =
+    {
+	416
+    };
+
+static const ANTLR3_INT32 dfa15_T86[] =
+    {
+	481
+    };
+
+static const ANTLR3_INT32 dfa15_T87[] =
+    {
+	544
+    };
+
+static const ANTLR3_INT32 dfa15_T88[] =
+    {
+	603
+    };
+
+static const ANTLR3_INT32 dfa15_T89[] =
+    {
+	653
+    };
+
+static const ANTLR3_INT32 dfa15_T90[] =
+    {
+	696
+    };
+
+static const ANTLR3_INT32 dfa15_T91[] =
+    {
+	730
+    };
+
+static const ANTLR3_INT32 dfa15_T92[] =
+    {
+	759
+    };
+
+static const ANTLR3_INT32 dfa15_T93[] =
+    {
+	146, -1, -1, 147
+    };
+
+static const ANTLR3_INT32 dfa15_T94[] =
+    {
+	387
+    };
+
+static const ANTLR3_INT32 dfa15_T95[] =
+    {
+	449
+    };
+
+static const ANTLR3_INT32 dfa15_T96[] =
+    {
+	508
+    };
+
+static const ANTLR3_INT32 dfa15_T97[] =
+    {
+	571
+    };
+
+static const ANTLR3_INT32 dfa15_T98[] =
+    {
+	623
+    };
+
+static const ANTLR3_INT32 dfa15_T99[] =
+    {
+	667
+    };
+
+static const ANTLR3_INT32 dfa15_T100[] =
+    {
+	708
+    };
+
+static const ANTLR3_INT32 dfa15_T101[] =
+    {
+	741
+    };
+
+static const ANTLR3_INT32 dfa15_T102[] =
+    {
+	766
+    };
+
+static const ANTLR3_INT32 dfa15_T103[] =
+    {
+	788
+    };
+
+static const ANTLR3_INT32 dfa15_T104[] =
+    {
+	150
+    };
+
+static const ANTLR3_INT32 dfa15_T105[] =
+    {
+	50, -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, 49
+    };
+
+static const ANTLR3_INT32 dfa15_T106[] =
+    {
+	155
+    };
+
+static const ANTLR3_INT32 dfa15_T107[] =
+    {
+	336
+    };
+
+static const ANTLR3_INT32 dfa15_T108[] =
+    {
+	396
+    };
+
+static const ANTLR3_INT32 dfa15_T109[] =
+    {
+	458
+    };
+
+static const ANTLR3_INT32 dfa15_T110[] =
+    {
+	517
+    };
+
+static const ANTLR3_INT32 dfa15_T111[] =
+    {
+	337
+    };
+
+static const ANTLR3_INT32 dfa15_T112[] =
+    {
+	397
+    };
+
+static const ANTLR3_INT32 dfa15_T113[] =
+    {
+	459
+    };
+
+static const ANTLR3_INT32 dfa15_T114[] =
+    {
+	156
+    };
+
+static const ANTLR3_INT32 dfa15_T115[] =
+    {
+	229
+    };
+
+static const ANTLR3_INT32 dfa15_T116[] =
+    {
+	303
+    };
+
+static const ANTLR3_INT32 dfa15_T117[] =
+    {
+	363
+    };
+
+static const ANTLR3_INT32 dfa15_T118[] =
+    {
+	426
+    };
+
+static const ANTLR3_INT32 dfa15_T119[] =
+    {
+	489
+    };
+
+static const ANTLR3_INT32 dfa15_T120[] =
+    {
+	551
+    };
+
+static const ANTLR3_INT32 dfa15_T121[] =
+    {
+	205
+    };
+
+static const ANTLR3_INT32 dfa15_T122[] =
+    {
+	273
+    };
+
+static const ANTLR3_INT32 dfa15_T123[] =
+    {
+	331
+    };
+
+static const ANTLR3_INT32 dfa15_T124[] =
+    {
+	355
+    };
+
+static const ANTLR3_INT32 dfa15_T125[] =
+    {
+	391
+    };
+
+static const ANTLR3_INT32 dfa15_T126[] =
+    {
+	417
+    };
+
+static const ANTLR3_INT32 dfa15_T127[] =
+    {
+	452, -1, -1, -1, -1, -1, 453
+    };
+
+static const ANTLR3_INT32 dfa15_T128[] =
+    {
+	482
+    };
+
+static const ANTLR3_INT32 dfa15_T129[] =
+    {
+	57
+    };
+
+static const ANTLR3_INT32 dfa15_T130[] =
+    {
+	356
+    };
+
+static const ANTLR3_INT32 dfa15_T131[] =
+    {
+	418
+    };
+
+static const ANTLR3_INT32 dfa15_T132[] =
+    {
+	483
+    };
+
+static const ANTLR3_INT32 dfa15_T133[] =
+    {
+	546
+    };
+
+static const ANTLR3_INT32 dfa15_T134[] =
+    {
+	604
+    };
+
+static const ANTLR3_INT32 dfa15_T135[] =
+    {
+	157
+    };
+
+static const ANTLR3_INT32 dfa15_T136[] =
+    {
+	230
+    };
+
+static const ANTLR3_INT32 dfa15_T137[] =
+    {
+	158
+    };
+
+static const ANTLR3_INT32 dfa15_T138[] =
+    {
+	473, -1, -1, 471, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 472
+    };
+
+static const ANTLR3_INT32 dfa15_T139[] =
+    {
+	204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 203
+    };
+
+static const ANTLR3_INT32 dfa15_T140[] =
+    {
+	591
+    };
+
+static const ANTLR3_INT32 dfa15_T141[] =
+    {
+	151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 154, 153, 
+	-1, 152
+    };
+
+static const ANTLR3_INT32 dfa15_T142[] =
+    {
+	640
+    };
+
+static const ANTLR3_INT32 dfa15_T143[] =
+    {
+	684
+    };
+
+static const ANTLR3_INT32 dfa15_T144[] =
+    {
+	720
+    };
+
+static const ANTLR3_INT32 dfa15_T145[] =
+    {
+	750
+    };
+
+static const ANTLR3_INT32 dfa15_T146[] =
+    {
+	774
+    };
+
+static const ANTLR3_INT32 dfa15_T147[] =
+    {
+	795
+    };
+
+static const ANTLR3_INT32 dfa15_T148[] =
+    {
+	807
+    };
+
+static const ANTLR3_INT32 dfa15_T149[] =
+    {
+	685
+    };
+
+static const ANTLR3_INT32 dfa15_T150[] =
+    {
+	721
+    };
+
+static const ANTLR3_INT32 dfa15_T151[] =
+    {
+	751
+    };
+
+static const ANTLR3_INT32 dfa15_T152[] =
+    {
+	775
+    };
+
+static const ANTLR3_INT32 dfa15_T153[] =
+    {
+	213
+    };
+
+static const ANTLR3_INT32 dfa15_T154[] =
+    {
+	796
+    };
+
+static const ANTLR3_INT32 dfa15_T155[] =
+    {
+	808
+    };
+
+static const ANTLR3_INT32 dfa15_T156[] =
+    {
+	816
+    };
+
+static const ANTLR3_INT32 dfa15_T157[] =
+    {
+	824
+    };
+
+static const ANTLR3_INT32 dfa15_T158[] =
+    {
+	283
+    };
+
+static const ANTLR3_INT32 dfa15_T159[] =
+    {
+	342
+    };
+
+static const ANTLR3_INT32 dfa15_T160[] =
+    {
+	357
+    };
+
+static const ANTLR3_INT32 dfa15_T161[] =
+    {
+	419
+    };
+
+static const ANTLR3_INT32 dfa15_T162[] =
+    {
+	484
+    };
+
+static const ANTLR3_INT32 dfa15_T163[] =
+    {
+	547
+    };
+
+static const ANTLR3_INT32 dfa15_T164[] =
+    {
+	126
+    };
+
+static const ANTLR3_INT32 dfa15_T165[] =
+    {
+	199
+    };
+
+static const ANTLR3_INT32 dfa15_T166[] =
+    {
+	171
+    };
+
+static const ANTLR3_INT32 dfa15_T167[] =
+    {
+	633
+    };
+
+static const ANTLR3_INT32 dfa15_T168[] =
+    {
+	677
+    };
+
+static const ANTLR3_INT32 dfa15_T169[] =
+    {
+	243
+    };
+
+static const ANTLR3_INT32 dfa15_T170[] =
+    {
+	714
+    };
+
+static const ANTLR3_INT32 dfa15_T171[] =
+    {
+	746
+    };
+
+static const ANTLR3_INT32 dfa15_T172[] =
+    {
+	316
+    };
+
+static const ANTLR3_INT32 dfa15_T173[] =
+    {
+	375
+    };
+
+static const ANTLR3_INT32 dfa15_T174[] =
+    {
+	437
+    };
+
+static const ANTLR3_INT32 dfa15_T175[] =
+    {
+	498
+    };
+
+static const ANTLR3_INT32 dfa15_T176[] =
+    {
+	65
+    };
+
+static const ANTLR3_INT32 dfa15_T177[] =
+    {
+	634
+    };
+
+static const ANTLR3_INT32 dfa15_T178[] =
+    {
+	678
+    };
+
+static const ANTLR3_INT32 dfa15_T179[] =
+    {
+	715
+    };
+
+static const ANTLR3_INT32 dfa15_T180[] =
+    {
+	747
+    };
+
+static const ANTLR3_INT32 dfa15_T181[] =
+    {
+	772
+    };
+
+static const ANTLR3_INT32 dfa15_T182[] =
+    {
+	793
+    };
+
+static const ANTLR3_INT32 dfa15_T183[] =
+    {
+	525
+    };
+
+static const ANTLR3_INT32 dfa15_T184[] =
+    {
+	585
+    };
+
+static const ANTLR3_INT32 dfa15_T185[] =
+    {
+	635
+    };
+
+static const ANTLR3_INT32 dfa15_T186[] =
+    {
+	679
+    };
+
+static const ANTLR3_INT32 dfa15_T187[] =
+    {
+	716
+    };
+
+static const ANTLR3_INT32 dfa15_T188[] =
+    {
+	748
+    };
+
+static const ANTLR3_INT32 dfa15_T189[] =
+    {
+	773
+    };
+
+static const ANTLR3_INT32 dfa15_T190[] =
+    {
+	794
+    };
+
+static const ANTLR3_INT32 dfa15_T191[] =
+    {
+	806
+    };
+
+static const ANTLR3_INT32 dfa15_T192[] =
+    {
+	814
+    };
+
+static const ANTLR3_INT32 dfa15_T193[] =
+    {
+	189, -1, 188, -1, -1, -1, -1, -1, -1, -1, -1, -1, 190
+    };
+
+static const ANTLR3_INT32 dfa15_T194[] =
+    {
+	-1
+    };
+
+static const ANTLR3_INT32 dfa15_T195[] =
+    {
+	687
+    };
+
+static const ANTLR3_INT32 dfa15_T196[] =
+    {
+	723
+    };
+
+static const ANTLR3_INT32 dfa15_T197[] =
+    {
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 191, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
+	192
+    };
+
+static const ANTLR3_INT32 dfa15_T198[] =
+    {
+	686
+    };
+
+static const ANTLR3_INT32 dfa15_T199[] =
+    {
+	722
+    };
+
+static const ANTLR3_INT32 dfa15_T200[] =
+    {
+	68
+    };
+
+static const ANTLR3_INT32 dfa15_T201[] =
+    {
+	537
+    };
+
+static const ANTLR3_INT32 dfa15_T202[] =
+    {
+	597
+    };
+
+static const ANTLR3_INT32 dfa15_T203[] =
+    {
+	650
+    };
+
+static const ANTLR3_INT32 dfa15_T204[] =
+    {
+	693
+    };
+
+static const ANTLR3_INT32 dfa15_T205[] =
+    {
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 122, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 123, 123, 
+	123, 123, 123, 123, 123, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 
+	121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 
+	121, 123, 120, 123, 123, 123, 123, 121, 121, 121, 121, 121, 121, 121, 121, 
+	121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 
+	121, 121, 121, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123
+    };
+
+static const ANTLR3_INT32 dfa15_T206[] =
+    {
+	208
+    };
+
+static const ANTLR3_INT32 dfa15_T207[] =
+    {
+	276
+    };
+
+static const ANTLR3_INT32 dfa15_T208[] =
+    {
+	335
+    };
+
+static const ANTLR3_INT32 dfa15_T209[] =
+    {
+	395
+    };
+
+static const ANTLR3_INT32 dfa15_T210[] =
+    {
+	457
+    };
+
+static const ANTLR3_INT32 dfa15_T211[] =
+    {
+	224
+    };
+
+static const ANTLR3_INT32 dfa15_T212[] =
+    {
+	299
+    };
+
+static const ANTLR3_INT32 dfa15_T213[] =
+    {
+	359
+    };
+
+static const ANTLR3_INT32 dfa15_T214[] =
+    {
+	422
+    };
+
+static const ANTLR3_INT32 dfa15_T215[] =
+    {
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 403, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
+    };
+
+static const ANTLR3_INT32 dfa15_T216[] =
+    {
+	71
+    };
+
+static const ANTLR3_INT32 dfa15_T217[] =
+    {
+	485
+    };
+
+static const ANTLR3_INT32 dfa15_T218[] =
+    {
+	548
+    };
+
+static const ANTLR3_INT32 dfa15_T219[] =
+    {
+	606
+    };
+
+static const ANTLR3_INT32 dfa15_T220[] =
+    {
+	655
+    };
+
+static const ANTLR3_INT32 dfa15_T221[] =
+    {
+	697
+    };
+
+static const ANTLR3_INT32 dfa15_T222[] =
+    {
+	731
+    };
+
+static const ANTLR3_INT32 dfa15_T223[] =
+    {
+	760
+    };
+
+static const ANTLR3_INT32 dfa15_T224[] =
+    {
+	782
+    };
+
+static const ANTLR3_INT32 dfa15_T225[] =
+    {
+	59, -1, -1, -1, -1, 58
+    };
+
+static const ANTLR3_INT32 dfa15_T226[] =
+    {
+	44, 44, -1, 44, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, 44, 12, 47, 46, 43, 43, 24, -1, 13, 14, 35, 34, -1, 
+	31, 43, 26, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 19, 48, 30, 27, 29, 
+	43, 25, 43, 43, 20, 43, 18, 43, 43, 43, 22, 43, 43, 23, 43, 39, 43, 43, 
+	43, 41, 43, 43, 43, 21, 43, 43, 43, 43, -1, 1, -1, 43, 15, -1, 6, 37, 7, 
+	8, 2, 28, 9, 43, 10, 43, 43, 11, 16, 32, 33, 17, 43, 3, 4, 40, 38, 43, 
+	43, 36, 43, 5, -1, 42, -1, 43
+    };
+
+static const ANTLR3_INT32 dfa15_T227[] =
+    {
+	462
+    };
+
+static const ANTLR3_INT32 dfa15_T228[] =
+    {
+	521
+    };
+
+static const ANTLR3_INT32 dfa15_T229[] =
+    {
+	209
+    };
+
+static const ANTLR3_INT32 dfa15_T230[] =
+    {
+	278, -1, -1, 277, -1, -1, 279
+    };
+
+static const ANTLR3_INT32 dfa15_T231[] =
+    {
+	463
+    };
+
+static const ANTLR3_INT32 dfa15_T232[] =
+    {
+	522
+    };
+
+static const ANTLR3_INT32 dfa15_T233[] =
+    {
+	131, 132
+    };
+
+static const ANTLR3_INT32 dfa15_T234[] =
+    {
+	527
+    };
+
+static const ANTLR3_INT32 dfa15_T235[] =
+    {
+	587
+    };
+
+static const ANTLR3_INT32 dfa15_T236[] =
+    {
+	636
+    };
+
+static const ANTLR3_INT32 dfa15_T237[] =
+    {
+	594
+    };
+
+static const ANTLR3_INT32 dfa15_T238[] =
+    {
+	645
+    };
+
+static const ANTLR3_INT32 dfa15_T239[] =
+    {
+	352
+    };
+
+static const ANTLR3_INT32 dfa15_T240[] =
+    {
+	414
+    };
+
+static const ANTLR3_INT32 dfa15_T241[] =
+    {
+	479, -1, -1, -1, 478
+    };
+
+static const ANTLR3_INT32 dfa15_T242[] =
+    {
+	688
+    };
+
+static const ANTLR3_INT32 dfa15_T243[] =
+    {
+	724
+    };
+
+static const ANTLR3_INT32 dfa15_T244[] =
+    {
+	754
+    };
+
+static const ANTLR3_INT32 dfa15_T245[] =
+    {
+	776
+    };
+
+static const ANTLR3_INT32 dfa15_T246[] =
+    {
+	797
+    };
+
+static const ANTLR3_INT32 dfa15_T247[] =
+    {
+	809
+    };
+
+static const ANTLR3_INT32 dfa15_T248[] =
+    {
+	817
+    };
+
+static const ANTLR3_INT32 dfa15_T249[] =
+    {
+	406
+    };
+
+static const ANTLR3_INT32 dfa15_T250[] =
+    {
+	469
+    };
+
+static const ANTLR3_INT32 dfa15_T251[] =
+    {
+	528
+    };
+
+static const ANTLR3_INT32 dfa15_T252[] =
+    {
+	588
+    };
+
+static const ANTLR3_INT32 dfa15_T253[] =
+    {
+	225
+    };
+
+static const ANTLR3_INT32 dfa15_T254[] =
+    {
+	300
+    };
+
+static const ANTLR3_INT32 dfa15_T255[] =
+    {
+	360
+    };
+
+static const ANTLR3_INT32 dfa15_T256[] =
+    {
+	423
+    };
+
+static const ANTLR3_INT32 dfa15_T257[] =
+    {
+	487
+    };
+
+static const ANTLR3_INT32 dfa15_T258[] =
+    {
+	549
+    };
+
+static const ANTLR3_INT32 dfa15_T259[] =
+    {
+	607
+    };
+
+static const ANTLR3_INT32 dfa15_T260[] =
+    {
+	656
+    };
+
+static const ANTLR3_INT32 dfa15_T261[] =
+    {
+	698
+    };
+
+static const ANTLR3_INT32 dfa15_T262[] =
+    {
+	732
+    };
+
+static const ANTLR3_INT32 dfa15_T263[] =
+    {
+	761
+    };
+
+static const ANTLR3_INT32 dfa15_T264[] =
+    {
+	159
+    };
+
+static const ANTLR3_INT32 dfa15_T265[] =
+    {
+	232
+    };
+
+static const ANTLR3_INT32 dfa15_T266[] =
+    {
+	117, -1, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45
+    };
+
+static const ANTLR3_INT32 dfa15_T267[] =
+    {
+	393
+    };
+
+static const ANTLR3_INT32 dfa15_T268[] =
+    {
+	455
+    };
+
+static const ANTLR3_INT32 dfa15_T269[] =
+    {
+	514
+    };
+
+static const ANTLR3_INT32 dfa15_T270[] =
+    {
+	165
+    };
+
+static const ANTLR3_INT32 dfa15_T271[] =
+    {
+	576
+    };
+
+static const ANTLR3_INT32 dfa15_T272[] =
+    {
+	238
+    };
+
+static const ANTLR3_INT32 dfa15_T273[] =
+    {
+	311
+    };
+
+static const ANTLR3_INT32 dfa15_T274[] =
+    {
+	370
+    };
+
+static const ANTLR3_INT32 dfa15_T275[] =
+    {
+	628
+    };
+
+static const ANTLR3_INT32 dfa15_T276[] =
+    {
+	432
+    };
+
+static const ANTLR3_INT32 dfa15_T277[] =
+    {
+	494
+    };
+
+static const ANTLR3_INT32 dfa15_T278[] =
+    {
+	672, -1, 671, -1, -1, -1, -1, -1, -1, -1, -1, -1, 673
+    };
+
+static const ANTLR3_INT32 dfa15_T279[] =
+    {
+	193
+    };
+
+static const ANTLR3_INT32 dfa15_T280[] =
+    {
+	166
+    };
+
+static const ANTLR3_INT32 dfa15_T281[] =
+    {
+	239
+    };
+
+static const ANTLR3_INT32 dfa15_T282[] =
+    {
+	312
+    };
+
+static const ANTLR3_INT32 dfa15_T283[] =
+    {
+	371
+    };
+
+static const ANTLR3_INT32 dfa15_T284[] =
+    {
+	433
+    };
+
+static const ANTLR3_INT32 dfa15_T285[] =
+    {
+	495
+    };
+
+static const ANTLR3_INT32 dfa15_T286[] =
+    {
+	167
+    };
+
+static const ANTLR3_INT32 dfa15_T287[] =
+    {
+	240
+    };
+
+static const ANTLR3_INT32 dfa15_T288[] =
+    {
+	185
+    };
+
+static const ANTLR3_INT32 dfa15_T289[] =
+    {
+	313
+    };
+
+static const ANTLR3_INT32 dfa15_T290[] =
+    {
+	372
+    };
+
+static const ANTLR3_INT32 dfa15_T291[] =
+    {
+	434
+    };
+
+static const ANTLR3_INT32 dfa15_T292[] =
+    {
+	496
+    };
+
+static const ANTLR3_INT32 dfa15_T293[] =
+    {
+	558
+    };
+
+static const ANTLR3_INT32 dfa15_T294[] =
+    {
+	615
+    };
+
+static const ANTLR3_INT32 dfa15_T295[] =
+    {
+	254
+    };
+
+static const ANTLR3_INT32 dfa15_T296[] =
+    {
+	661
+    };
+
+static const ANTLR3_INT32 dfa15_T297[] =
+    {
+	703
+    };
+
+static const ANTLR3_INT32 dfa15_T298[] =
+    {
+	736
+    };
+
+static const ANTLR3_INT32 dfa15_T299[] =
+    {
+	322
+    };
+
+static const ANTLR3_INT32 dfa15_T300[] =
+    {
+	168
+    };
+
+static const ANTLR3_INT32 dfa15_T301[] =
+    {
+	241
+    };
+
+static const ANTLR3_INT32 dfa15_T302[] =
+    {
+	202
+    };
+
+static const ANTLR3_INT32 dfa15_T303[] =
+    {
+	314
+    };
+
+static const ANTLR3_INT32 dfa15_T304[] =
+    {
+	373
+    };
+
+static const ANTLR3_INT32 dfa15_T305[] =
+    {
+	270
+    };
+
+static const ANTLR3_INT32 dfa15_T306[] =
+    {
+	435
+    };
+
+static const ANTLR3_INT32 dfa15_T307[] =
+    {
+	497
+    };
+
+static const ANTLR3_INT32 dfa15_T308[] =
+    {
+	559
+    };
+
+static const ANTLR3_INT32 dfa15_T309[] =
+    {
+	616
+    };
+
+static const ANTLR3_INT32 dfa15_T310[] =
+    {
+	662
+    };
+
+static const ANTLR3_INT32 dfa15_T311[] =
+    {
+	704
+    };
+
+static const ANTLR3_INT32 dfa15_T312[] =
+    {
+	737
+    };
+
+static const ANTLR3_INT32 dfa15_T313[] =
+    {
+	172
+    };
+
+static const ANTLR3_INT32 dfa15_T314[] =
+    {
+	244
+    };
+
+static const ANTLR3_INT32 dfa15_T315[] =
+    {
+	317
+    };
+
+static const ANTLR3_INT32 dfa15_T316[] =
+    {
+	376
+    };
+
+static const ANTLR3_INT32 dfa15_T317[] =
+    {
+	439, -1, 438
+    };
+
+static const ANTLR3_INT32 dfa15_T318[] =
+    {
+	187, -1, -1, -1, 186
+    };
+
+static const ANTLR3_INT32 dfa15_T319[] =
+    {
+	144, -1, -1, 145
+    };
+
+static const ANTLR3_INT32 dfa15_T320[] =
+    {
+	141
+    };
+
+static const ANTLR3_INT32 dfa15_T321[] =
+    {
+	219
+    };
+
+static const ANTLR3_INT32 dfa15_T322[] =
+    {
+	288
+    };
+
+static const ANTLR3_INT32 dfa15_T323[] =
+    {
+	348
+    };
+
+static const ANTLR3_INT32 dfa15_T324[] =
+    {
+	410
+    };
+
+static const ANTLR3_INT32 dfa15_T325[] =
+    {
+	474
+    };
+
+static const ANTLR3_INT32 dfa15_T326[] =
+    {
+	590
+    };
+
+static const ANTLR3_INT32 dfa15_T327[] =
+    {
+	589
+    };
+
+static const ANTLR3_INT32 dfa15_T328[] =
+    {
+	639
+    };
+
+static const ANTLR3_INT32 dfa15_T329[] =
+    {
+	638
+    };
+
+static const ANTLR3_INT32 dfa15_T330[] =
+    {
+	683
+    };
+
+static const ANTLR3_INT32 dfa15_T331[] =
+    {
+	266
+    };
+
+static const ANTLR3_INT32 dfa15_T332[] =
+    {
+	324
+    };
+
+static const ANTLR3_INT32 dfa15_T333[] =
+    {
+	133, -1, -1, -1, -1, -1, 134
+    };
+
+static const ANTLR3_INT32 dfa15_T334[] =
+    {
+	170
+    };
+
+static const ANTLR3_INT32 dfa15_T335[] =
+    {
+	242
+    };
+
+static const ANTLR3_INT32 dfa15_T336[] =
+    {
+	315
+    };
+
+static const ANTLR3_INT32 dfa15_T337[] =
+    {
+	374
+    };
+
+static const ANTLR3_INT32 dfa15_T338[] =
+    {
+	392
+    };
+
+static const ANTLR3_INT32 dfa15_T339[] =
+    {
+	454
+    };
+
+static const ANTLR3_INT32 dfa15_T340[] =
+    {
+	513
+    };
+
+static const ANTLR3_INT32 dfa15_T341[] =
+    {
+	575
+    };
+
+static const ANTLR3_INT32 dfa15_T342[] =
+    {
+	627
+    };
+
+static const ANTLR3_INT32 dfa15_T343[] =
+    {
+	670
+    };
+
+static const ANTLR3_INT32 dfa15_T344[] =
+    {
+	710
+    };
+
+static const ANTLR3_INT32 dfa15_T345[] =
+    {
+	742
+    };
+
+static const ANTLR3_INT32 dfa15_T346[] =
+    {
+	767
+    };
+
+static const ANTLR3_INT32 dfa15_T347[] =
+    {
+	789
+    };
+
+static const ANTLR3_INT32 dfa15_T348[] =
+    {
+	802
+    };
+
+static const ANTLR3_INT32 dfa15_T349[] =
+    {
+	811
+    };
+
+static const ANTLR3_INT32 dfa15_T350[] =
+    {
+	820, -1, -1, -1, 819
+    };
+
+static const ANTLR3_INT32 dfa15_T351[] =
+    {
+	177
+    };
+
+static const ANTLR3_INT32 dfa15_T352[] =
+    {
+	181
+    };
+
+static const ANTLR3_INT32 dfa15_T353[] =
+    {
+	535
+    };
+
+static const ANTLR3_INT32 dfa15_T354[] =
+    {
+	220
+    };
+
+static const ANTLR3_INT32 dfa15_T355[] =
+    {
+	289
+    };
+
+static const ANTLR3_INT32 dfa15_T356[] =
+    {
+	349
+    };
+
+static const ANTLR3_INT32 dfa15_T357[] =
+    {
+	595
+    };
+
+static const ANTLR3_INT32 dfa15_T358[] =
+    {
+	411
+    };
+
+static const ANTLR3_INT32 dfa15_T359[] =
+    {
+	475
+    };
+
+static const ANTLR3_INT32 dfa15_T360[] =
+    {
+	539
+    };
+
+static const ANTLR3_INT32 dfa15_T361[] =
+    {
+	182
+    };
+
+static const ANTLR3_INT32 dfa15_T362[] =
+    {
+	160
+    };
+
+static const ANTLR3_INT32 dfa15_T363[] =
+    {
+	251
+    };
+
+static const ANTLR3_INT32 dfa15_T364[] =
+    {
+	233
+    };
+
+static const ANTLR3_INT32 dfa15_T365[] =
+    {
+	320
+    };
+
+static const ANTLR3_INT32 dfa15_T366[] =
+    {
+	306
+    };
+
+static const ANTLR3_INT32 dfa15_T367[] =
+    {
+	379
+    };
+
+static const ANTLR3_INT32 dfa15_T368[] =
+    {
+	365
+    };
+
+static const ANTLR3_INT32 dfa15_T369[] =
+    {
+	427
+    };
+
+static const ANTLR3_INT32 dfa15_T370[] =
+    {
+	490
+    };
+
+static const ANTLR3_INT32 dfa15_T371[] =
+    {
+	226
+    };
+
+static const ANTLR3_INT32 dfa15_T372[] =
+    {
+	301
+    };
+
+static const ANTLR3_INT32 dfa15_T373[] =
+    {
+	361
+    };
+
+static const ANTLR3_INT32 dfa15_T374[] =
+    {
+	234
+    };
+
+static const ANTLR3_INT32 dfa15_T375[] =
+    {
+	307
+    };
+
+static const ANTLR3_INT32 dfa15_T376[] =
+    {
+	366
+    };
+
+static const ANTLR3_INT32 dfa15_T377[] =
+    {
+	428
+    };
+
+static const ANTLR3_INT32 dfa15_T378[] =
+    {
+	491
+    };
+
+static const ANTLR3_INT32 dfa15_T379[] =
+    {
+	553
+    };
+
+static const ANTLR3_INT32 dfa15_T380[] =
+    {
+	610
+    };
+
+static const ANTLR3_INT32 dfa15_T381[] =
+    {
+	271
+    };
+
+static const ANTLR3_INT32 dfa15_T382[] =
+    {
+	658
+    };
+
+static const ANTLR3_INT32 dfa15_T383[] =
+    {
+	329
+    };
+
+static const ANTLR3_INT32 dfa15_T384[] =
+    {
+	389
+    };
+
+static const ANTLR3_INT32 dfa15_T385[] =
+    {
+	450
+    };
+
+static const ANTLR3_INT32 dfa15_T386[] =
+    {
+	235
+    };
+
+static const ANTLR3_INT32 dfa15_T387[] =
+    {
+	308
+    };
+
+static const ANTLR3_INT32 dfa15_T388[] =
+    {
+	367
+    };
+
+static const ANTLR3_INT32 dfa15_T389[] =
+    {
+	142
+    };
+
+static const ANTLR3_INT32 dfa15_T390[] =
+    {
+	272
+    };
+
+static const ANTLR3_INT32 dfa15_T391[] =
+    {
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 97, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 98, 
+	-1, -1, -1, 43
+    };
+
+static const ANTLR3_INT32 dfa15_T392[] =
+    {
+	330
+    };
+
+static const ANTLR3_INT32 dfa15_T393[] =
+    {
+	215
+    };
+
+static const ANTLR3_INT32 dfa15_T394[] =
+    {
+	390
+    };
+
+static const ANTLR3_INT32 dfa15_T395[] =
+    {
+	451
+    };
+
+static const ANTLR3_INT32 dfa15_T396[] =
+    {
+	163
+    };
+
+static const ANTLR3_INT32 dfa15_T397[] =
+    {
+	284
+    };
+
+static const ANTLR3_INT32 dfa15_T398[] =
+    {
+	510
+    };
+
+static const ANTLR3_INT32 dfa15_T399[] =
+    {
+	236
+    };
+
+static const ANTLR3_INT32 dfa15_T400[] =
+    {
+	572
+    };
+
+static const ANTLR3_INT32 dfa15_T401[] =
+    {
+	309
+    };
+
+static const ANTLR3_INT32 dfa15_T402[] =
+    {
+	343
+    };
+
+static const ANTLR3_INT32 dfa15_T403[] =
+    {
+	368
+    };
+
+static const ANTLR3_INT32 dfa15_T404[] =
+    {
+	405
+    };
+
+static const ANTLR3_INT32 dfa15_T405[] =
+    {
+	430
+    };
+
+static const ANTLR3_INT32 dfa15_T406[] =
+    {
+	492
+    };
+
+static const ANTLR3_INT32 dfa15_T407[] =
+    {
+	467, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, 468
+    };
+
+static const ANTLR3_INT32 dfa15_T408[] =
+    {
+	554
+    };
+
+static const ANTLR3_INT32 dfa15_T409[] =
+    {
+	148
+    };
+
+static const ANTLR3_INT32 dfa15_T410[] =
+    {
+	611
+    };
+
+static const ANTLR3_INT32 dfa15_T411[] =
+    {
+	74
+    };
+
+static const ANTLR3_INT32 dfa15_T412[] =
+    {
+	221
+    };
+
+static const ANTLR3_INT32 dfa15_T413[] =
+    {
+	659
+    };
+
+static const ANTLR3_INT32 dfa15_T414[] =
+    {
+	290
+    };
+
+static const ANTLR3_INT32 dfa15_T415[] =
+    {
+	701
+    };
+
+static const ANTLR3_INT32 dfa15_T416[] =
+    {
+	350
+    };
+
+static const ANTLR3_INT32 dfa15_T417[] =
+    {
+	734
+    };
+
+static const ANTLR3_INT32 dfa15_T418[] =
+    {
+	412
+    };
+
+static const ANTLR3_INT32 dfa15_T419[] =
+    {
+	762
+    };
+
+static const ANTLR3_INT32 dfa15_T420[] =
+    {
+	784
+    };
+
+static const ANTLR3_INT32 dfa15_T421[] =
+    {
+	800
+    };
+
+static const ANTLR3_INT32 dfa15_T422[] =
+    {
+	810
+    };
+
+static const ANTLR3_INT32 dfa15_T423[] =
+    {
+	818
+    };
+
+static const ANTLR3_INT32 dfa15_T424[] =
+    {
+	826
+    };
+
+static const ANTLR3_INT32 dfa15_T425[] =
+    {
+	832
+    };
+
+static const ANTLR3_INT32 dfa15_T426[] =
+    {
+	835
+    };
+
+static const ANTLR3_INT32 dfa15_T427[] =
+    {
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 102, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 103, 
+	-1, -1, -1, 43
+    };
+
+static const ANTLR3_INT32 dfa15_T428[] =
+    {
+	81
+    };
+
+static const ANTLR3_INT32 dfa15_T429[] =
+    {
+	164
+    };
+
+static const ANTLR3_INT32 dfa15_T430[] =
+    {
+	237
+    };
+
+static const ANTLR3_INT32 dfa15_T431[] =
+    {
+	310
+    };
+
+static const ANTLR3_INT32 dfa15_T432[] =
+    {
+	369
+    };
+
+static const ANTLR3_INT32 dfa15_T433[] =
+    {
+	431
+    };
+
+static const ANTLR3_INT32 dfa15_T434[] =
+    {
+	493
+    };
+
+static const ANTLR3_INT32 dfa15_T435[] =
+    {
+	60, -1, -1, -1, -1, -1, -1, 61
+    };
+
+static const ANTLR3_INT32 dfa15_T436[] =
+    {
+	555
+    };
+
+static const ANTLR3_INT32 dfa15_T437[] =
+    {
+	612
+    };
+
+static const ANTLR3_INT32 dfa15_T438[] =
+    {
+	660
+    };
+
+static const ANTLR3_INT32 dfa15_T439[] =
+    {
+	702
+    };
+
+static const ANTLR3_INT32 dfa15_T440[] =
+    {
+	617
+    };
+
+static const ANTLR3_INT32 dfa15_T441[] =
+    {
+	663
+    };
+
+static const ANTLR3_INT32 dfa15_T442[] =
+    {
+	82
+    };
+
+static const ANTLR3_INT32 dfa15_T443[] =
+    {
+	705
+    };
+
+static const ANTLR3_INT32 dfa15_T444[] =
+    {
+	227
+    };
+
+static const ANTLR3_INT32 dfa15_T445[] =
+    {
+	302
+    };
+
+static const ANTLR3_INT32 dfa15_T446[] =
+    {
+	362
+    };
+
+static const ANTLR3_INT32 dfa15_T447[] =
+    {
+	110
+    };
+
+static const ANTLR3_INT32 dfa15_T448[] =
+    {
+	425
+    };
+
+static const ANTLR3_INT32 dfa15_T449[] =
+    {
+	488
+    };
+
+static const ANTLR3_INT32 dfa15_T450[] =
+    {
+	550
+    };
+
+static const ANTLR3_INT32 dfa15_T451[] =
+    {
+	83
+    };
+
+static const ANTLR3_INT32 dfa15_T452[] =
+    {
+	608
+    };
+
+static const ANTLR3_INT32 dfa15_T453[] =
+    {
+	657
+    };
+
+static const ANTLR3_INT32 dfa15_T454[] =
+    {
+	699
+    };
+
+static const ANTLR3_INT32 dfa15_T455[] =
+    {
+	62, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64
+    };
+
+static const ANTLR3_INT32 dfa15_T456[] =
+    {
+	127
+    };
+
+static const ANTLR3_INT32 dfa15_T457[] =
+    {
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 327, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
+    };
+
+static const ANTLR3_INT32 dfa15_T458[] =
+    {
+	52, -1, -1, -1, -1, -1, -1, -1, -1, -1, 53
+    };
+
+static const ANTLR3_INT32 dfa15_T459[] =
+    {
+	200
+    };
+
+static const ANTLR3_INT32 dfa15_T460[] =
+    {
+	268
+    };
+
+static const ANTLR3_INT32 dfa15_T461[] =
+    {
+	325
+    };
+
+static const ANTLR3_INT32 dfa15_T462[] =
+    {
+	385
+    };
+
+static const ANTLR3_INT32 dfa15_T463[] =
+    {
+	448
+    };
+
+static const ANTLR3_INT32 dfa15_T464[] =
+    {
+	84
+    };
+
+static const ANTLR3_INT32 dfa15_T465[] =
+    {
+	183
+    };
+
+static const ANTLR3_INT32 dfa15_T466[] =
+    {
+	252
+    };
+
+static const ANTLR3_INT32 dfa15_T467[] =
+    {
+	321
+    };
+
+static const ANTLR3_INT32 dfa15_T468[] =
+    {
+	380
+    };
+
+static const ANTLR3_INT32 dfa15_T469[] =
+    {
+	441
+    };
+
+static const ANTLR3_INT32 dfa15_T470[] =
+    {
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 681, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
+    };
+
+static const ANTLR3_INT32 dfa15_T471[] =
+    {
+	210
+    };
+
+static const ANTLR3_INT32 dfa15_T472[] =
+    {
+	280
+    };
+
+static const ANTLR3_INT32 dfa15_T473[] =
+    {
+	339
+    };
+
+static const ANTLR3_INT32 dfa15_T474[] =
+    {
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 718, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
+    };
+
+static const ANTLR3_INT32 dfa15_T475[] =
+    {
+	399
+    };
+
+static const ANTLR3_INT32 dfa15_T476[] =
+    {
+	179
+    };
+
+static const ANTLR3_INT32 dfa15_T477[] =
+    {
+	175
+    };
+
+static const ANTLR3_INT32 dfa15_T478[] =
+    {
+	180
+    };
+
+static const ANTLR3_INT32 dfa15_T479[] =
+    {
+	249
+    };
+
+static const ANTLR3_INT32 dfa15_T480[] =
+    {
+	319
+    };
+
+static const ANTLR3_INT32 dfa15_T481[] =
+    {
+	176
+    };
+
+static const ANTLR3_INT32 dfa15_T482[] =
+    {
+	246
+    };
+
+static const ANTLR3_INT32 dfa15_T483[] =
+    {
+	318
+    };
+
+static const ANTLR3_INT32 dfa15_T484[] =
+    {
+	91, -1, 90, 92
+    };
+
+static const ANTLR3_INT32 dfa15_T485[] =
+    {
+	184
+    };
+
+static const ANTLR3_INT32 dfa15_T486[] =
+    {
+	502
+    };
+
+static const ANTLR3_INT32 dfa15_T487[] =
+    {
+	503
+    };
+
+static const ANTLR3_INT32 dfa15_T488[] =
+    {
+	504
+    };
+
+static const ANTLR3_INT32 dfa15_T489[] =
+    {
+	567
+    };
+
+static const ANTLR3_INT32 dfa15_T490[] =
+    {
+	620
+    };
+
+static const ANTLR3_INT32 dfa15_T491[] =
+    {
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 646, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 647, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
+    };
+
+static const ANTLR3_INT32 dfa15_T492[] =
+    {
+	505
+    };
+
+static const ANTLR3_INT32 dfa15_T493[] =
+    {
+	568
+    };
+
+static const ANTLR3_INT32 dfa15_T494[] =
+    {
+	621
+    };
+
+static const ANTLR3_INT32 dfa15_T495[] =
+    {
+	665
+    };
+
+static const ANTLR3_INT32 dfa15_T496[] =
+    {
+	706
+    };
+
+static const ANTLR3_INT32 dfa15_T497[] =
+    {
+	218
+    };
+
+static const ANTLR3_INT32 dfa15_T498[] =
+    {
+	506
+    };
+
+static const ANTLR3_INT32 dfa15_T499[] =
+    {
+	287
+    };
+
+static const ANTLR3_INT32 dfa15_T500[] =
+    {
+	569
+    };
+
+static const ANTLR3_INT32 dfa15_T501[] =
+    {
+	622
+    };
+
+static const ANTLR3_INT32 dfa15_T502[] =
+    {
+	666
+    };
+
+static const ANTLR3_INT32 dfa15_T503[] =
+    {
+	707
+    };
+
+static const ANTLR3_INT32 dfa15_T504[] =
+    {
+	740
+    };
+
+static const ANTLR3_INT32 dfa15_T505[] =
+    {
+	765
+    };
+
+static const ANTLR3_INT32 dfa15_T506[] =
+    {
+	347
+    };
+
+static const ANTLR3_INT32 dfa15_T507[] =
+    {
+	499
+    };
+
+static const ANTLR3_INT32 dfa15_T508[] =
+    {
+	524
+    };
+
+static const ANTLR3_INT32 dfa15_T509[] =
+    {
+	562
+    };
+
+static const ANTLR3_INT32 dfa15_T510[] =
+    {
+	584, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, 583
+    };
+
+static const ANTLR3_INT32 dfa15_T511[] =
+    {
+	500
+    };
+
+static const ANTLR3_INT32 dfa15_T512[] =
+    {
+	563
+    };
+
+static const ANTLR3_INT32 dfa15_T513[] =
+    {
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 88, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
+    };
+
+static const ANTLR3_INT32 dfa15_T514[] =
+    {
+	100
+    };
+
+static const ANTLR3_INT32 dfa15_T515[] =
+    {
+	101
+    };
+
+static const ANTLR3_INT32 dfa15_T516[] =
+    {
+	67, -1, -1, -1, -1, -1, 66
+    };
+
+static const ANTLR3_INT32 dfa15_T517[] =
+    {
+	106
+    };
+
+static const ANTLR3_INT32 dfa15_T518[] =
+    {
+	592
+    };
+
+static const ANTLR3_INT32 dfa15_T519[] =
+    {
+	641, -1, -1, -1, -1, -1, -1, -1, -1, -1, 642
+    };
+
+static const ANTLR3_INT32 dfa15_T520[] =
+    {
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 93, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
+    };
+
+static const ANTLR3_INT32 dfa15_T521[] =
+    {
+	107
+    };
+
+static const ANTLR3_INT32 dfa15_T522[] =
+    {
+	827
+    };
+
+static const ANTLR3_INT32 dfa15_T523[] =
+    {
+	833
+    };
+
+static const ANTLR3_INT32 dfa15_T524[] =
+    {
+	836
+    };
+
+static const ANTLR3_INT32 dfa15_T525[] =
+    {
+	442, -1, -1, -1, 443, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 444, 
+	445, -1, 446
+    };
+
+static const ANTLR3_INT32 dfa15_T526[] =
+    {
+	119, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, 118
+    };
+
+static const ANTLR3_INT32 dfa15_T527[] =
+    {
+	828
+    };
+
+static const ANTLR3_INT32 dfa15_T528[] =
+    {
+	834
+    };
+
+static const ANTLR3_INT32 dfa15_T529[] =
+    {
+	837
+    };
+
+static const ANTLR3_INT32 dfa15_T530[] =
+    {
+	217
+    };
+
+static const ANTLR3_INT32 dfa15_T531[] =
+    {
+	711
+    };
+
+static const ANTLR3_INT32 dfa15_T532[] =
+    {
+	743
+    };
+
+static const ANTLR3_INT32 dfa15_T533[] =
+    {
+	73, -1, -1, -1, -1, -1, 72
+    };
+
+static const ANTLR3_INT32 dfa15_T534[] =
+    {
+	768
+    };
+
+static const ANTLR3_INT32 dfa15_T535[] =
+    {
+	790
+    };
+
+static const ANTLR3_INT32 dfa15_T536[] =
+    {
+	803
+    };
+
+static const ANTLR3_INT32 dfa15_T537[] =
+    {
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 95, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
+    };
+
+static const ANTLR3_INT32 dfa15_T538[] =
+    {
+	812
+    };
+
+static const ANTLR3_INT32 dfa15_T539[] =
+    {
+	286
+    };
+
+static const ANTLR3_INT32 dfa15_T540[] =
+    {
+	821
+    };
+
+static const ANTLR3_INT32 dfa15_T541[] =
+    {
+	346
+    };
+
+static const ANTLR3_INT32 dfa15_T542[] =
+    {
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 560, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
+    };
+
+static const ANTLR3_INT32 dfa15_T543[] =
+    {
+	712
+    };
+
+static const ANTLR3_INT32 dfa15_T544[] =
+    {
+	744
+    };
+
+static const ANTLR3_INT32 dfa15_T545[] =
+    {
+	769
+    };
+
+static const ANTLR3_INT32 dfa15_T546[] =
+    {
+	791
+    };
+
+static const ANTLR3_INT32 dfa15_T547[] =
+    {
+	407
+    };
+
+static const ANTLR3_INT32 dfa15_T548[] =
+    {
+	804
+    };
+
+static const ANTLR3_INT32 dfa15_T549[] =
+    {
+	813
+    };
+
+static const ANTLR3_INT32 dfa15_T550[] =
+    {
+	822
+    };
+
+static const ANTLR3_INT32 dfa15_T551[] =
+    {
+	470
+    };
+
+static const ANTLR3_INT32 dfa15_T552[] =
+    {
+	713
+    };
+
+static const ANTLR3_INT32 dfa15_T553[] =
+    {
+	745
+    };
+
+static const ANTLR3_INT32 dfa15_T554[] =
+    {
+	532, 531, -1, 529, -1, -1, -1, -1, -1, -1, -1, -1, -1, 533, -1, -1, 530, 
+	-1, -1, 534
+    };
+
+static const ANTLR3_INT32 dfa15_T555[] =
+    {
+	770
+    };
+
+static const ANTLR3_INT32 dfa15_T556[] =
+    {
+	338
+    };
+
+static const ANTLR3_INT32 dfa15_T557[] =
+    {
+	398
+    };
+
+static const ANTLR3_INT32 dfa15_T558[] =
+    {
+	460
+    };
+
+static const ANTLR3_INT32 dfa15_T559[] =
+    {
+	519
+    };
+
+static const ANTLR3_INT32 dfa15_T560[] =
+    {
+	143
+    };
+
+static const ANTLR3_INT32 dfa15_T561[] =
+    {
+	579
+    };
+
+static const ANTLR3_INT32 dfa15_T562[] =
+    {
+	216
+    };
+
+static const ANTLR3_INT32 dfa15_T563[] =
+    {
+	108
+    };
+
+static const ANTLR3_INT32 dfa15_T564[] =
+    {
+	285
+    };
+
+static const ANTLR3_INT32 dfa15_T565[] =
+    {
+	109
+    };
+
+static const ANTLR3_INT32 dfa15_T566[] =
+    {
+	198, 197
+    };
+
+static const ANTLR3_INT32 dfa15_T567[] =
+    {
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 260, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
+	261
+    };
+
+static const ANTLR3_INT32 dfa15_T568[] =
+    {
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 139, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
+    };
+
+static const ANTLR3_INT32 dfa15_T569[] =
+    {
+	358
+    };
+
+static const ANTLR3_INT32 dfa15_T570[] =
+    {
+	593
+    };
+
+static const ANTLR3_INT32 dfa15_T571[] =
+    {
+	643, -1, -1, -1, 644
+    };
+
+static const ANTLR3_INT32 dfa15_T572[] =
+    {
+	55, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, 56
+    };
+
+static const ANTLR3_INT32 dfa15_T573[] =
+    {
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 195, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 120, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
+	123
+    };
+
+static const ANTLR3_INT32 dfa15_T574[] =
+    {
+	137
+    };
+
+static const ANTLR3_INT32 dfa15_T575[] =
+    {
+	211
+    };
+
+static const ANTLR3_INT32 dfa15_T576[] =
+    {
+	281
+    };
+
+static const ANTLR3_INT32 dfa15_T577[] =
+    {
+	340
+    };
+
+static const ANTLR3_INT32 dfa15_T578[] =
+    {
+	400, -1, -1, 401
+    };
+
+
+/* Transition tables are a table of sub tables, with some tables
+ * reused for efficiency.
+ */
+static const ANTLR3_INT32 * const dfa15_transitions[] =
+{
+    dfa15_T226, NULL, dfa15_T105, dfa15_T458, dfa15_T572, dfa15_T129, dfa15_T225, 
+    dfa15_T435, dfa15_T455, dfa15_T176, dfa15_T516, dfa15_T200, dfa15_T0, 
+    NULL, NULL, dfa15_T0, dfa15_T216, dfa15_T533, dfa15_T411, dfa15_T10, 
+    dfa15_T428, dfa15_T442, dfa15_T451, dfa15_T464, dfa15_T0, dfa15_T0, 
+    dfa15_T0, dfa15_T513, dfa15_T484, dfa15_T520, dfa15_T537, dfa15_T391, 
+    dfa15_T514, dfa15_T515, dfa15_T427, dfa15_T0, dfa15_T517, dfa15_T521, 
+    dfa15_T563, dfa15_T565, dfa15_T447, dfa15_T15, dfa15_T1, NULL, NULL, 
+    dfa15_T266, dfa15_T526, dfa15_T205, NULL, dfa15_T5, dfa15_T164, dfa15_T456, 
+    dfa15_T8, dfa15_T233, dfa15_T333, dfa15_T48, dfa15_T574, dfa15_T37, 
+    dfa15_T568, dfa15_T320, dfa15_T389, dfa15_T560, dfa15_T319, dfa15_T93, 
+    dfa15_T409, dfa15_T70, dfa15_T104, dfa15_T141, dfa15_T106, NULL, NULL, 
+    dfa15_T114, dfa15_T135, dfa15_T137, dfa15_T264, NULL, dfa15_T362, dfa15_T77, 
+    dfa15_T396, dfa15_T429, NULL, dfa15_T270, dfa15_T280, dfa15_T286, dfa15_T300, 
+    NULL, NULL, NULL, dfa15_T0, NULL, dfa15_T334, dfa15_T166, dfa15_T313, 
+    dfa15_T0, NULL, dfa15_T0, NULL, dfa15_T477, dfa15_T481, NULL, dfa15_T351, 
+    dfa15_T0, dfa15_T476, dfa15_T478, NULL, NULL, dfa15_T352, dfa15_T361, 
+    dfa15_T465, dfa15_T485, dfa15_T288, dfa15_T318, dfa15_T193, dfa15_T1, 
+    NULL, NULL, NULL, NULL, NULL, NULL, dfa15_T197, dfa15_T205, dfa15_T279, 
+    dfa15_T573, dfa15_T11, dfa15_T566, dfa15_T165, dfa15_T459, dfa15_T16, 
+    dfa15_T302, dfa15_T139, dfa15_T121, dfa15_T26, dfa15_T27, dfa15_T206, 
+    dfa15_T229, dfa15_T471, dfa15_T575, dfa15_T38, dfa15_T153, NULL, dfa15_T0, 
+    dfa15_T393, dfa15_T562, dfa15_T530, dfa15_T497, dfa15_T321, dfa15_T354, 
+    dfa15_T412, dfa15_T71, dfa15_T0, dfa15_T211, dfa15_T253, dfa15_T371, 
+    dfa15_T444, dfa15_T0, dfa15_T115, dfa15_T136, dfa15_T0, dfa15_T265, 
+    dfa15_T364, dfa15_T374, dfa15_T386, dfa15_T399, dfa15_T430, dfa15_T272, 
+    dfa15_T281, dfa15_T287, dfa15_T301, NULL, dfa15_T335, dfa15_T169, dfa15_T314, 
+    NULL, NULL, dfa15_T0, dfa15_T482, dfa15_T0, NULL, dfa15_T0, dfa15_T479, 
+    dfa15_T0, dfa15_T363, dfa15_T466, dfa15_T0, dfa15_T295, dfa15_T0, dfa15_T0, 
+    dfa15_T0, dfa15_T0, dfa15_T0, dfa15_T567, dfa15_T573, NULL, dfa15_T194, 
+    dfa15_T279, dfa15_T12, dfa15_T0, dfa15_T331, dfa15_T0, dfa15_T460, dfa15_T17, 
+    dfa15_T305, dfa15_T381, dfa15_T390, dfa15_T122, dfa15_T28, dfa15_T29, 
+    dfa15_T207, dfa15_T230, dfa15_T472, dfa15_T576, dfa15_T39, dfa15_T158, 
+    NULL, dfa15_T397, dfa15_T564, dfa15_T539, dfa15_T499, dfa15_T322, dfa15_T355, 
+    dfa15_T414, dfa15_T79, NULL, dfa15_T212, dfa15_T254, dfa15_T372, dfa15_T445, 
+    NULL, dfa15_T116, dfa15_T0, NULL, dfa15_T0, dfa15_T366, dfa15_T375, 
+    dfa15_T387, dfa15_T401, dfa15_T431, dfa15_T273, dfa15_T282, dfa15_T289, 
+    dfa15_T303, dfa15_T336, dfa15_T172, dfa15_T315, NULL, dfa15_T483, NULL, 
+    NULL, dfa15_T480, NULL, dfa15_T365, dfa15_T467, NULL, dfa15_T299, NULL, 
+    NULL, NULL, NULL, NULL, dfa15_T4, NULL, NULL, dfa15_T194, dfa15_T13, 
+    NULL, dfa15_T332, NULL, dfa15_T461, dfa15_T18, dfa15_T457, dfa15_T383, 
+    dfa15_T392, dfa15_T123, dfa15_T33, dfa15_T30, dfa15_T208, dfa15_T107, 
+    dfa15_T111, dfa15_T556, dfa15_T473, dfa15_T577, dfa15_T40, dfa15_T159, 
+    dfa15_T402, dfa15_T9, dfa15_T541, dfa15_T506, dfa15_T323, dfa15_T356, 
+    dfa15_T416, dfa15_T60, dfa15_T239, dfa15_T80, dfa15_T84, dfa15_T124, 
+    dfa15_T130, dfa15_T160, dfa15_T569, dfa15_T213, dfa15_T255, dfa15_T373, 
+    dfa15_T446, dfa15_T117, NULL, dfa15_T194, dfa15_T368, dfa15_T376, dfa15_T388, 
+    dfa15_T403, dfa15_T432, dfa15_T274, dfa15_T283, dfa15_T290, dfa15_T304, 
+    dfa15_T337, dfa15_T173, dfa15_T316, dfa15_T0, dfa15_T0, dfa15_T367, 
+    dfa15_T468, dfa15_T7, dfa15_T14, dfa15_T0, dfa15_T462, dfa15_T0, dfa15_T94, 
+    dfa15_T194, dfa15_T384, dfa15_T394, dfa15_T125, dfa15_T338, dfa15_T267, 
+    dfa15_T31, dfa15_T209, dfa15_T108, dfa15_T112, dfa15_T557, dfa15_T475, 
+    dfa15_T578, dfa15_T41, dfa15_T215, dfa15_T404, dfa15_T249, NULL, dfa15_T547, 
+    dfa15_T3, dfa15_T324, dfa15_T358, dfa15_T418, dfa15_T61, dfa15_T240, 
+    dfa15_T81, dfa15_T85, dfa15_T126, dfa15_T131, dfa15_T161, dfa15_T49, 
+    dfa15_T214, dfa15_T256, dfa15_T0, dfa15_T448, dfa15_T118, NULL, dfa15_T369, 
+    dfa15_T377, dfa15_T2, dfa15_T405, dfa15_T433, dfa15_T276, dfa15_T284, 
+    dfa15_T291, dfa15_T306, dfa15_T0, dfa15_T174, dfa15_T317, NULL, NULL, 
+    dfa15_T0, dfa15_T469, dfa15_T525, NULL, dfa15_T0, NULL, dfa15_T463, 
+    NULL, dfa15_T95, NULL, dfa15_T385, dfa15_T395, dfa15_T127, dfa15_T339, 
+    dfa15_T268, dfa15_T32, dfa15_T210, dfa15_T109, dfa15_T113, dfa15_T558, 
+    dfa15_T0, dfa15_T227, dfa15_T231, dfa15_T42, dfa15_T46, NULL, dfa15_T407, 
+    dfa15_T250, dfa15_T551, dfa15_T138, NULL, dfa15_T325, dfa15_T359, dfa15_T0, 
+    dfa15_T62, dfa15_T241, dfa15_T82, dfa15_T86, dfa15_T128, dfa15_T132, 
+    dfa15_T162, dfa15_T217, NULL, dfa15_T0, dfa15_T257, NULL, dfa15_T449, 
+    dfa15_T119, dfa15_T370, dfa15_T378, NULL, dfa15_T406, dfa15_T434, dfa15_T277, 
+    dfa15_T285, dfa15_T292, dfa15_T307, NULL, dfa15_T175, dfa15_T507, dfa15_T511, 
+    NULL, dfa15_T0, dfa15_T486, dfa15_T487, dfa15_T488, dfa15_T492, dfa15_T498, 
+    NULL, dfa15_T0, dfa15_T96, dfa15_T0, dfa15_T398, dfa15_T19, dfa15_T22, 
+    dfa15_T340, dfa15_T269, dfa15_T34, dfa15_T0, dfa15_T110, dfa15_T0, dfa15_T559, 
+    dfa15_T194, dfa15_T228, dfa15_T232, dfa15_T43, dfa15_T508, dfa15_T183, 
+    dfa15_T47, dfa15_T234, dfa15_T251, dfa15_T554, dfa15_T353, dfa15_T57, 
+    dfa15_T201, dfa15_T0, dfa15_T360, NULL, dfa15_T63, dfa15_T64, dfa15_T72, 
+    dfa15_T83, dfa15_T87, dfa15_T0, dfa15_T133, dfa15_T163, dfa15_T218, 
+    NULL, dfa15_T258, dfa15_T450, dfa15_T120, dfa15_T2, dfa15_T379, dfa15_T408, 
+    dfa15_T436, dfa15_T0, dfa15_T0, dfa15_T293, dfa15_T308, dfa15_T542, 
+    dfa15_T509, dfa15_T512, dfa15_T194, dfa15_T0, dfa15_T0, dfa15_T489, 
+    dfa15_T493, dfa15_T500, dfa15_T194, dfa15_T97, NULL, dfa15_T400, dfa15_T20, 
+    dfa15_T23, dfa15_T341, dfa15_T271, dfa15_T35, NULL, dfa15_T0, NULL, 
+    dfa15_T561, NULL, dfa15_T0, dfa15_T0, dfa15_T44, dfa15_T510, dfa15_T184, 
+    dfa15_T0, dfa15_T235, dfa15_T252, dfa15_T327, dfa15_T326, dfa15_T140, 
+    dfa15_T518, dfa15_T570, dfa15_T237, dfa15_T357, dfa15_T58, dfa15_T202, 
+    NULL, dfa15_T0, dfa15_T0, dfa15_T65, dfa15_T73, dfa15_T0, dfa15_T88, 
+    NULL, dfa15_T134, dfa15_T0, dfa15_T219, dfa15_T259, dfa15_T452, dfa15_T0, 
+    NULL, dfa15_T380, dfa15_T410, dfa15_T437, dfa15_T194, dfa15_T194, dfa15_T294, 
+    dfa15_T309, dfa15_T440, NULL, dfa15_T0, dfa15_T0, NULL, NULL, NULL, 
+    dfa15_T490, dfa15_T494, dfa15_T501, NULL, dfa15_T98, dfa15_T0, dfa15_T21, 
+    dfa15_T24, dfa15_T342, dfa15_T275, dfa15_T36, NULL, dfa15_T6, NULL, 
+    NULL, dfa15_T45, dfa15_T167, dfa15_T177, dfa15_T185, NULL, dfa15_T236, 
+    dfa15_T0, dfa15_T329, dfa15_T328, dfa15_T142, dfa15_T519, dfa15_T571, 
+    dfa15_T238, dfa15_T491, dfa15_T59, dfa15_T203, NULL, NULL, dfa15_T66, 
+    dfa15_T74, NULL, dfa15_T89, dfa15_T0, NULL, dfa15_T220, dfa15_T260, 
+    dfa15_T453, NULL, dfa15_T382, dfa15_T413, dfa15_T438, NULL, NULL, dfa15_T296, 
+    dfa15_T310, dfa15_T441, NULL, NULL, dfa15_T0, dfa15_T495, dfa15_T502, 
+    dfa15_T99, NULL, dfa15_T0, dfa15_T25, dfa15_T343, dfa15_T278, dfa15_T0, 
+    dfa15_T0, NULL, dfa15_T0, dfa15_T168, dfa15_T178, dfa15_T186, dfa15_T0, 
+    NULL, dfa15_T470, dfa15_T330, dfa15_T143, dfa15_T149, dfa15_T198, dfa15_T195, 
+    dfa15_T242, dfa15_T0, dfa15_T50, dfa15_T53, NULL, dfa15_T0, dfa15_T204, 
+    dfa15_T67, dfa15_T75, dfa15_T90, NULL, dfa15_T221, dfa15_T261, dfa15_T454, 
+    dfa15_T2, dfa15_T415, dfa15_T439, dfa15_T297, dfa15_T311, dfa15_T443, 
+    NULL, dfa15_T496, dfa15_T503, dfa15_T100, NULL, dfa15_T0, dfa15_T344, 
+    dfa15_T531, dfa15_T543, dfa15_T552, NULL, NULL, NULL, dfa15_T170, dfa15_T179, 
+    dfa15_T187, NULL, dfa15_T0, NULL, dfa15_T474, dfa15_T144, dfa15_T150, 
+    dfa15_T199, dfa15_T196, dfa15_T243, NULL, dfa15_T51, dfa15_T54, NULL, 
+    dfa15_T0, dfa15_T68, dfa15_T76, dfa15_T91, dfa15_T222, dfa15_T262, dfa15_T0, 
+    NULL, dfa15_T417, dfa15_T2, dfa15_T298, dfa15_T312, dfa15_T0, dfa15_T0, 
+    dfa15_T504, dfa15_T101, NULL, dfa15_T345, dfa15_T532, dfa15_T544, dfa15_T553, 
+    dfa15_T171, dfa15_T180, dfa15_T188, NULL, dfa15_T0, NULL, dfa15_T145, 
+    dfa15_T151, dfa15_T0, dfa15_T0, dfa15_T244, dfa15_T52, dfa15_T55, NULL, 
+    dfa15_T69, dfa15_T78, dfa15_T92, dfa15_T223, dfa15_T263, NULL, dfa15_T419, 
+    NULL, dfa15_T0, dfa15_T0, NULL, NULL, dfa15_T505, dfa15_T102, dfa15_T346, 
+    dfa15_T534, dfa15_T545, dfa15_T555, dfa15_T0, dfa15_T181, dfa15_T189, 
+    NULL, dfa15_T146, dfa15_T152, NULL, NULL, dfa15_T245, dfa15_T0, dfa15_T56, 
+    dfa15_T0, dfa15_T0, dfa15_T0, dfa15_T224, dfa15_T0, dfa15_T420, dfa15_T194, 
+    dfa15_T194, dfa15_T0, dfa15_T103, dfa15_T347, dfa15_T535, dfa15_T546, 
+    dfa15_T0, NULL, dfa15_T182, dfa15_T190, dfa15_T147, dfa15_T154, dfa15_T246, 
+    NULL, dfa15_T0, NULL, NULL, NULL, dfa15_T0, NULL, dfa15_T421, NULL, 
+    NULL, NULL, dfa15_T0, dfa15_T348, dfa15_T536, dfa15_T548, NULL, dfa15_T0, 
+    dfa15_T191, dfa15_T148, dfa15_T155, dfa15_T247, NULL, NULL, dfa15_T422, 
+    NULL, dfa15_T349, dfa15_T538, dfa15_T549, NULL, dfa15_T192, dfa15_T0, 
+    dfa15_T156, dfa15_T248, dfa15_T423, dfa15_T350, dfa15_T540, dfa15_T550, 
+    dfa15_T0, NULL, dfa15_T157, dfa15_T0, dfa15_T424, dfa15_T522, dfa15_T527, 
+    dfa15_T0, dfa15_T0, NULL, dfa15_T0, NULL, dfa15_T425, dfa15_T523, dfa15_T528, 
+    NULL, NULL, NULL, dfa15_T426, dfa15_T524, dfa15_T529, dfa15_T2, dfa15_T0, 
+    dfa15_T0, NULL, NULL, NULL
+};
+
+static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s)
+{
+    ANTLR3_INT32    _s;
+
+    _s	    = s;
+    switch  (s)
+    {
+        case 0:
+
+    	{
+    	    ANTLR3_UINT32 LA15_42;
+
+    	    ANTLR3_MARKER index15_42;
+
+
+    		LA15_42 = LA(1);
+
+    	    s = -1;
+    	    if ( (((LA15_42 >= 0x0000) && (LA15_42 <= '[')) || ((LA15_42 >= ']') && (LA15_42 <= '{')) || ((LA15_42 >= '}') && (LA15_42 <= 0xFFFF))) )
+    	    {
+    	        s = 113;
+    	    }
+
+    	    else if ( (LA15_42 == '|') )
+    	    {
+    	        s = 114;
+    	    }
+
+    	    else s = 115;
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 1:
+
+    	{
+    	    ANTLR3_UINT32 LA15_260;
+
+    	    ANTLR3_MARKER index15_260;
+
+
+    		LA15_260 = LA(1);
+
+    	     
+    	        index15_260 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )) && (((LA15_260 >= 0x0000) && (LA15_260 <= 0xFFFF))) )
+    	    {
+    	        s = 193;
+    	    }
+
+    	    else s = 261;
+
+    		 
+    			SEEK(index15_260);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 2:
+
+    	{
+    	    ANTLR3_UINT32 LA15_328;
+
+    	    ANTLR3_MARKER index15_328;
+
+
+    		LA15_328 = LA(1);
+
+    	     
+    	        index15_328 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->v2_5() )) )
+    	    {
+    	        s = 388;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_328);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 3:
+
+    	{
+    	    ANTLR3_UINT32 LA15_305;
+
+    	    ANTLR3_MARKER index15_305;
+
+
+    		LA15_305 = LA(1);
+
+    	     
+    	        index15_305 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->sygus() )) )
+    	    {
+    	        s = 364;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_305);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 4:
+
+    	{
+    	    ANTLR3_UINT32 LA15_120;
+
+    	    ANTLR3_MARKER index15_120;
+
+
+    		LA15_120 = LA(1);
+
+    	     
+    	        index15_120 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (LA15_120 == '"') )
+    	    {
+    	        s = 191;
+    	    }
+
+    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (((LA15_120 >= 0x0000) && (LA15_120 <= '!')) || ((LA15_120 >= '#') && (LA15_120 <= 0xFFFF))) )
+    	    {
+    	        s = 192;
+    	    }
+
+    		 
+    			SEEK(index15_120);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 5:
+
+    	{
+    	    ANTLR3_UINT32 LA15_556;
+
+    	    ANTLR3_MARKER index15_556;
+
+
+    		LA15_556 = LA(1);
+
+    	     
+    	        index15_556 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->sygus() )) )
+    	    {
+    	        s = 613;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_556);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 6:
+
+    	{
+    	    ANTLR3_UINT32 LA15_557;
+
+    	    ANTLR3_MARKER index15_557;
+
+
+    		LA15_557 = LA(1);
+
+    	     
+    	        index15_557 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->sygus() )) )
+    	    {
+    	        s = 614;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_557);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 7:
+
+    	{
+    	    ANTLR3_UINT32 LA15_763;
+
+    	    ANTLR3_MARKER index15_763;
+
+
+    		LA15_763 = LA(1);
+
+    	     
+    	        index15_763 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->sygus() )) )
+    	    {
+    	        s = 785;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_763);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 8:
+
+    	{
+    	    ANTLR3_UINT32 LA15_764;
+
+    	    ANTLR3_MARKER index15_764;
+
+
+    		LA15_764 = LA(1);
+
+    	     
+    	        index15_764 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->sygus() )) )
+    	    {
+    	        s = 786;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_764);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 9:
+
+    	{
+    	    ANTLR3_UINT32 LA15_47;
+
+    	    ANTLR3_MARKER index15_47;
+
+
+    		LA15_47 = LA(1);
+
+    	     
+    	        index15_47 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (LA15_47 == '\\') )
+    	    {
+    	        s = 120;
+    	    }
+
+    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() ))||(( PARSER_STATE->sygus() )))) && (((LA15_47 >= '0') && (LA15_47 <= '9')) || ((LA15_47 >= 'A') && (LA15_47 <= 'Z')) || ((LA15_47 >= 'a') && (LA15_47 <= 'z'))) )
+    	    {
+    	        s = 121;
+    	    }
+
+    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() ))||(( PARSER_STATE->sygus() )))) && (LA15_47 == '"') )
+    	    {
+    	        s = 122;
+    	    }
+
+    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (((LA15_47 >= 0x0000) && (LA15_47 <= '!')) || ((LA15_47 >= '#') && (LA15_47 <= '/')) || ((LA15_47 >= ':') && (LA15_47 <= '@')) || LA15_47 == '[' || ((LA15_47 >= ']') && (LA15_47 <= '`')) || ((LA15_47 >= '{') && (LA15_47 <= 0xFFFF))) )
+    	    {
+    	        s = 123;
+    	    }
+
+    		 
+    			SEEK(index15_47);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 10:
+
+    	{
+    	    ANTLR3_UINT32 LA15_507;
+
+    	    ANTLR3_MARKER index15_507;
+
+
+    		LA15_507 = LA(1);
+
+    	     
+    	        index15_507 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS) )) )
+    	    {
+    	        s = 570;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_507);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 11:
+
+    	{
+    	    ANTLR3_UINT32 LA15_501;
+
+    	    ANTLR3_MARKER index15_501;
+
+
+    		LA15_501 = LA(1);
+
+    	     
+    	        index15_501 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS) )) )
+    	    {
+    	        s = 564;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_501);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 12:
+
+    	{
+    	    ANTLR3_UINT32 LA15_461;
+
+    	    ANTLR3_MARKER index15_461;
+
+
+    		LA15_461 = LA(1);
+
+    	     
+    	        index15_461 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SEP) )) )
+    	    {
+    	        s = 520;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_461);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 13:
+
+    	{
+    	    ANTLR3_UINT32 LA15_263;
+
+    	    ANTLR3_MARKER index15_263;
+
+
+    		LA15_263 = LA(1);
+
+    	     
+    	        index15_263 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->v2_0() )) )
+    	    {
+    	        s = 261;
+    	    }
+
+    	    else if ( (( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )) )
+    	    {
+    	        s = 193;
+    	    }
+
+    		 
+    			SEEK(index15_263);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 14:
+
+    	{
+    	    ANTLR3_UINT32 LA15_0;
+
+    	    ANTLR3_MARKER index15_0;
+
+
+    		LA15_0 = LA(1);
+
+    	     
+    	        index15_0 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (LA15_0 == '\\') )
+    	    {
+    	        s = 1;
+    	    }
+
+    	    else if ( (LA15_0 == 'e') )
+    	    {
+    	        s = 2;
+    	    }
+
+    	    else if ( (LA15_0 == 'r') )
+    	    {
+    	        s = 3;
+    	    }
+
+    	    else if ( (LA15_0 == 's') )
+    	    {
+    	        s = 4;
+    	    }
+
+    	    else if ( (LA15_0 == 'z') )
+    	    {
+    	        s = 5;
+    	    }
+
+    	    else if ( (LA15_0 == 'a') )
+    	    {
+    	        s = 6;
+    	    }
+
+    	    else if ( (LA15_0 == 'c') )
+    	    {
+    	        s = 7;
+    	    }
+
+    	    else if ( (LA15_0 == 'd') )
+    	    {
+    	        s = 8;
+    	    }
+
+    	    else if ( (LA15_0 == 'g') )
+    	    {
+    	        s = 9;
+    	    }
+
+    	    else if ( (LA15_0 == 'i') )
+    	    {
+    	        s = 10;
+    	    }
+
+    	    else if ( (LA15_0 == 'l') )
+    	    {
+    	        s = 11;
+    	    }
+
+    	    else if ( (LA15_0 == '!') )
+    	    {
+    	        s = 12;
+    	    }
+
+    	    else if ( (LA15_0 == '(') )
+    	    {
+    	        s = 13;
+    	    }
+
+    	    else if ( (LA15_0 == ')') )
+    	    {
+    	        s = 14;
+    	    }
+
+    	    else if ( (LA15_0 == '_') )
+    	    {
+    	        s = 15;
+    	    }
+
+    	    else if ( (LA15_0 == 'm') )
+    	    {
+    	        s = 16;
+    	    }
+
+    	    else if ( (LA15_0 == 'p') )
+    	    {
+    	        s = 17;
+    	    }
+
+    	    else if ( (LA15_0 == 'E') )
+    	    {
+    	        s = 18;
+    	    }
+
+    	    else if ( (LA15_0 == ':') )
+    	    {
+    	        s = 19;
+    	    }
+
+    	    else if ( (LA15_0 == 'C') )
+    	    {
+    	        s = 20;
+    	    }
+
+    	    else if ( (LA15_0 == 'V') )
+    	    {
+    	        s = 21;
+    	    }
+
+    	    else if ( (LA15_0 == 'I') )
+    	    {
+    	        s = 22;
+    	    }
+
+    	    else if ( (LA15_0 == 'L') )
+    	    {
+    	        s = 23;
+    	    }
+
+    	    else if ( (LA15_0 == '&') )
+    	    {
+    	        s = 24;
+    	    }
+
+    	    else if ( (LA15_0 == '@') )
+    	    {
+    	        s = 25;
+    	    }
+
+    	    else if ( (LA15_0 == '/') )
+    	    {
+    	        s = 26;
+    	    }
+
+    	    else if ( (LA15_0 == '=') )
+    	    {
+    	        s = 27;
+    	    }
+
+    	    else if ( (LA15_0 == 'f') )
+    	    {
+    	        s = 28;
+    	    }
+
+    	    else if ( (LA15_0 == '>') )
+    	    {
+    	        s = 29;
+    	    }
+
+    	    else if ( (LA15_0 == '<') )
+    	    {
+    	        s = 30;
+    	    }
+
+    	    else if ( (LA15_0 == '-') )
+    	    {
+    	        s = 31;
+    	    }
+
+    	    else if ( (LA15_0 == 'n') )
+    	    {
+    	        s = 32;
+    	    }
+
+    	    else if ( (LA15_0 == 'o') )
+    	    {
+    	        s = 33;
+    	    }
+
+    	    else if ( (LA15_0 == '+') )
+    	    {
+    	        s = 34;
+    	    }
+
+    	    else if ( (LA15_0 == '*') )
+    	    {
+    	        s = 35;
+    	    }
+
+    	    else if ( (LA15_0 == 'x') )
+    	    {
+    	        s = 36;
+    	    }
+
+    	    else if ( (LA15_0 == 'b') )
+    	    {
+    	        s = 37;
+    	    }
+
+    	    else if ( (LA15_0 == 'u') )
+    	    {
+    	        s = 38;
+    	    }
+
+    	    else if ( (LA15_0 == 'N') )
+    	    {
+    	        s = 39;
+    	    }
+
+    	    else if ( (LA15_0 == 't') )
+    	    {
+    	        s = 40;
+    	    }
+
+    	    else if ( (LA15_0 == 'R') )
+    	    {
+    	        s = 41;
+    	    }
+
+    	    else if ( (LA15_0 == '|') )
+    	    {
+    	        s = 42;
+    	    }
+
+    	    else if ( (((LA15_0 >= '$') && (LA15_0 <= '%')) || LA15_0 == '.' || LA15_0 == '?' || ((LA15_0 >= 'A') && (LA15_0 <= 'B')) || LA15_0 == 'D' || ((LA15_0 >= 'F') && (LA15_0 <= 'H')) || ((LA15_0 >= 'J') && (LA15_0 <= 'K')) || LA15_0 == 'M' || ((LA15_0 >= 'O') && (LA15_0 <= 'Q')) || ((LA15_0 >= 'S') && (LA15_0 <= 'U')) || ((LA15_0 >= 'W') && (LA15_0 <= 'Z')) || LA15_0 == '^' || LA15_0 == 'h' || ((LA15_0 >= 'j') && (LA15_0 <= 'k')) || LA15_0 == 'q' || ((LA15_0 >= 'v') && (LA15_0 <= 'w [...]
+    	    {
+    	        s = 43;
+    	    }
+
+    	    else if ( (((LA15_0 >= '\t') && (LA15_0 <= '\n')) || ((LA15_0 >= '\f') && (LA15_0 <= '\r')) || LA15_0 == ' ') )
+    	    {
+    	        s = 44;
+    	    }
+
+    	    else if ( (((LA15_0 >= '0') && (LA15_0 <= '9'))) )
+    	    {
+    	        s = 45;
+    	    }
+
+    	    else if ( (LA15_0 == '#') )
+    	    {
+    	        s = 46;
+    	    }
+
+    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() ))||(( PARSER_STATE->sygus() )))) && (LA15_0 == '"') )
+    	    {
+    	        s = 47;
+    	    }
+
+    	    else if ( (LA15_0 == ';') )
+    	    {
+    	        s = 48;
+    	    }
+
+    		 
+    			SEEK(index15_0);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 15:
+
+    	{
+    	    ANTLR3_UINT32 LA15_113;
+
+    	    ANTLR3_MARKER index15_113;
+
+
+    		LA15_113 = LA(1);
+
+    	    s = -1;
+    	    if ( (LA15_113 == '|') )
+    	    {
+    	        s = 114;
+    	    }
+
+    	    else if ( (((LA15_113 >= 0x0000) && (LA15_113 <= '[')) || ((LA15_113 >= ']') && (LA15_113 <= '{')) || ((LA15_113 >= '}') && (LA15_113 <= 0xFFFF))) )
+    	    {
+    	        s = 113;
+    	    }
+
+    	    else s = 115;
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 16:
+
+    	{
+    	    ANTLR3_UINT32 LA15_122;
+
+    	    ANTLR3_MARKER index15_122;
+
+
+    		LA15_122 = LA(1);
+
+    	     
+    	        index15_122 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )) && (LA15_122 == '"') )
+    	    {
+    	        s = 193;
+    	    }
+
+    	    else s = 194;
+
+    		 
+    			SEEK(index15_122);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 17:
+
+    	{
+    	    ANTLR3_UINT32 LA15_194;
+
+    	    ANTLR3_MARKER index15_194;
+
+
+    		LA15_194 = LA(1);
+
+    	     
+    	        index15_194 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->v2_0() )) )
+    	    {
+    	        s = 261;
+    	    }
+
+    	    else if ( (( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )) )
+    	    {
+    	        s = 193;
+    	    }
+
+    	    else if ( (( PARSER_STATE->sygus() )) )
+    	    {
+    	        s = 262;
+    	    }
+
+    		 
+    			SEEK(index15_194);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 18:
+
+    	{
+    	    ANTLR3_UINT32 LA15_121;
+
+    	    ANTLR3_MARKER index15_121;
+
+
+    		LA15_121 = LA(1);
+
+    	     
+    	        index15_121 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() ))||(( PARSER_STATE->sygus() )))) && (LA15_121 == '"') )
+    	    {
+    	        s = 122;
+    	    }
+
+    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (LA15_121 == '\\') )
+    	    {
+    	        s = 120;
+    	    }
+
+    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() ))||(( PARSER_STATE->sygus() )))) && (((LA15_121 >= '0') && (LA15_121 <= '9')) || ((LA15_121 >= 'A') && (LA15_121 <= 'Z')) || ((LA15_121 >= 'a') && (LA15_121 <= 'z'))) )
+    	    {
+    	        s = 121;
+    	    }
+
+    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (((LA15_121 >= 0x0000) && (LA15_121 <= '!')) || ((LA15_121 >= '#') && (LA15_121 <= '/')) || ((LA15_121 >= ':') && (LA15_121 <= '@')) || LA15_121 == '[' || ((LA15_121 >= ']') && (LA15_121 <= '`')) || ((LA15_121 >= '{') && (LA15_121 <= 0xFFFF))) )
+    	    {
+    	        s = 123;
+    	    }
+
+    		 
+    			SEEK(index15_121);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 19:
+
+    	{
+    	    ANTLR3_UINT32 LA15_191;
+
+    	    ANTLR3_MARKER index15_191;
+
+
+    		LA15_191 = LA(1);
+
+    	     
+    	        index15_191 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (((( PARSER_STATE->v2_5() || PARSER_STATE->sygus() ))||(( PARSER_STATE->v2_0() )))) && (LA15_191 == '"') )
+    	    {
+    	        s = 260;
+    	    }
+
+    	    else if ( (( PARSER_STATE->v2_0() )) && (((LA15_191 >= 0x0000) && (LA15_191 <= '!')) || ((LA15_191 >= '#') && (LA15_191 <= 0xFFFF))) )
+    	    {
+    	        s = 261;
+    	    }
+
+    	    else s = 193;
+
+    		 
+    			SEEK(index15_191);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 20:
+
+    	{
+    	    ANTLR3_UINT32 LA15_192;
+
+    	    ANTLR3_MARKER index15_192;
+
+
+    		LA15_192 = LA(1);
+
+    	     
+    	        index15_192 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (LA15_192 == '"') )
+    	    {
+    	        s = 195;
+    	    }
+
+    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (LA15_192 == '\\') )
+    	    {
+    	        s = 120;
+    	    }
+
+    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (((LA15_192 >= 0x0000) && (LA15_192 <= '!')) || ((LA15_192 >= '#') && (LA15_192 <= '[')) || ((LA15_192 >= ']') && (LA15_192 <= 0xFFFF))) )
+    	    {
+    	        s = 123;
+    	    }
+
+    		 
+    			SEEK(index15_192);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 21:
+
+    	{
+    	    ANTLR3_UINT32 LA15_123;
+
+    	    ANTLR3_MARKER index15_123;
+
+
+    		LA15_123 = LA(1);
+
+    	     
+    	        index15_123 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (LA15_123 == '"') )
+    	    {
+    	        s = 195;
+    	    }
+
+    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (LA15_123 == '\\') )
+    	    {
+    	        s = 120;
+    	    }
+
+    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (((LA15_123 >= 0x0000) && (LA15_123 <= '!')) || ((LA15_123 >= '#') && (LA15_123 <= '[')) || ((LA15_123 >= ']') && (LA15_123 <= 0xFFFF))) )
+    	    {
+    	        s = 123;
+    	    }
+
+    		 
+    			SEEK(index15_123);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 22:
+
+    	{
+    	    ANTLR3_UINT32 LA15_195;
+
+    	    ANTLR3_MARKER index15_195;
+
+
+    		LA15_195 = LA(1);
+
+    	     
+    	        index15_195 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )) && (LA15_195 == '"') )
+    	    {
+    	        s = 193;
+    	    }
+
+    	    else s = 263;
+
+    		 
+    			SEEK(index15_195);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+    }
+    CONSTRUCTEX();
+    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+    EXCEPTION->message      = (void *)"1:1: Tokens : ( T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | ITE_TOK | LET_TOK | ATTRIBUTE_TOK | LPAREN_TOK | RPAREN_TOK | INDEX_TOK | SET_LOGIC_TOK |  [...]
+    EXCEPTION->decisionNum  = 15;
+    EXCEPTION->state        = _s;
+    return -1;
+}
+
+
+/* Declare tracking structure for Cyclic DFA 15
+ */
+static
+ANTLR3_CYCLIC_DFA cdfa15
+    =	{
+	    15,		    /* Decision number of this dfa	    */
+	    /* Which decision this represents:   */
+	    (const pANTLR3_UCHAR)"1:1: Tokens : ( T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | ITE_TOK | LET_TOK | ATTRIBUTE_TOK | LPAREN_TOK | RPAREN_TOK | INDEX_TOK | SET_LOGIC_TOK | SET_INFO_TOK [...]
+	    (CDFA_SPECIAL_FUNC) dfa15_sst,
+	    antlr3dfaspecialTransition,		/* DFA specialTransition is currently just a default function in the runtime */
+	    antlr3dfapredict,			/* DFA simulator function is in the runtime */
+	    dfa15_eot,	    /* EOT table			    */
+	    dfa15_eof,	    /* EOF table			    */
+	    dfa15_min,	    /* Minimum tokens for each state    */
+	    dfa15_max,	    /* Maximum tokens for each state    */
+	    dfa15_accept,	/* Accept table			    */
+	    dfa15_special,	/* Special transition states	    */
+	    dfa15_transitions	/* Table of transition tables	    */
+
+	};
+/* End of Cyclic DFA 15
+ * ---------------------
+ */ 
+/* =========================================================================
+ * End of DFA tables for the lexer
+ */
+
+/* =========================================================================
+ * Functions to match the lexer grammar defined tokens from the input stream
+ */
+
+//   Comes from: 46:8: ( '\\\\' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__145
+ *
+ * Looks to match the characters the constitute the token T__145
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__145(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__145;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:46:8: ( '\\\\' )
+    // ../../../../../../src/parser/smt2/Smt2.g:46:10: '\\\\'
+    {
+        MATCHC('\\');
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__145Ex;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__145Ex; /* Prevent compiler warnings */
+    ruleT__145Ex: ;
+
+}
+// $ANTLR end T__145
+
+//   Comes from: 47:8: ( 'extract' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__146
+ *
+ * Looks to match the characters the constitute the token T__146
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__146(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__146;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:47:8: ( 'extract' )
+    // ../../../../../../src/parser/smt2/Smt2.g:47:10: 'extract'
+    {
+        MATCHS(lit_1);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__146Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__146Ex; /* Prevent compiler warnings */
+    ruleT__146Ex: ;
+
+}
+// $ANTLR end T__146
+
+//   Comes from: 48:8: ( 'repeat' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__147
+ *
+ * Looks to match the characters the constitute the token T__147
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__147(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__147;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:48:8: ( 'repeat' )
+    // ../../../../../../src/parser/smt2/Smt2.g:48:10: 'repeat'
+    {
+        MATCHS(lit_2);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__147Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__147Ex; /* Prevent compiler warnings */
+    ruleT__147Ex: ;
+
+}
+// $ANTLR end T__147
+
+//   Comes from: 49:8: ( 'rotate_left' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__148
+ *
+ * Looks to match the characters the constitute the token T__148
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__148(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__148;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:49:8: ( 'rotate_left' )
+    // ../../../../../../src/parser/smt2/Smt2.g:49:10: 'rotate_left'
+    {
+        MATCHS(lit_3);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__148Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__148Ex; /* Prevent compiler warnings */
+    ruleT__148Ex: ;
+
+}
+// $ANTLR end T__148
+
+//   Comes from: 50:8: ( 'rotate_right' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__149
+ *
+ * Looks to match the characters the constitute the token T__149
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__149(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__149;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:50:8: ( 'rotate_right' )
+    // ../../../../../../src/parser/smt2/Smt2.g:50:10: 'rotate_right'
+    {
+        MATCHS(lit_4);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__149Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__149Ex; /* Prevent compiler warnings */
+    ruleT__149Ex: ;
+
+}
+// $ANTLR end T__149
+
+//   Comes from: 51:8: ( 'sign_extend' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__150
+ *
+ * Looks to match the characters the constitute the token T__150
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__150(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__150;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:51:8: ( 'sign_extend' )
+    // ../../../../../../src/parser/smt2/Smt2.g:51:10: 'sign_extend'
+    {
+        MATCHS(lit_5);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__150Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__150Ex; /* Prevent compiler warnings */
+    ruleT__150Ex: ;
+
+}
+// $ANTLR end T__150
+
+//   Comes from: 52:8: ( 'zero_extend' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__151
+ *
+ * Looks to match the characters the constitute the token T__151
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__151(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__151;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:52:8: ( 'zero_extend' )
+    // ../../../../../../src/parser/smt2/Smt2.g:52:10: 'zero_extend'
+    {
+        MATCHS(lit_6);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__151Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__151Ex; /* Prevent compiler warnings */
+    ruleT__151Ex: ;
+
+}
+// $ANTLR end T__151
+
+//   Comes from: 2784:12: ( 'assert' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ASSERT_TOK
+ *
+ * Looks to match the characters the constitute the token ASSERT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mASSERT_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ASSERT_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2784:12: ( 'assert' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2784:14: 'assert'
+    {
+        MATCHS(lit_7);
+        if  (HASEXCEPTION())
+        {
+            goto ruleASSERT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleASSERT_TOKEx; /* Prevent compiler warnings */
+    ruleASSERT_TOKEx: ;
+
+}
+// $ANTLR end ASSERT_TOK
+
+//   Comes from: 2785:14: ( 'check-sat' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start CHECKSAT_TOK
+ *
+ * Looks to match the characters the constitute the token CHECKSAT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCHECKSAT_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = CHECKSAT_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2785:14: ( 'check-sat' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2785:16: 'check-sat'
+    {
+        MATCHS(lit_8);
+        if  (HASEXCEPTION())
+        {
+            goto ruleCHECKSAT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCHECKSAT_TOKEx; /* Prevent compiler warnings */
+    ruleCHECKSAT_TOKEx: ;
+
+}
+// $ANTLR end CHECKSAT_TOK
+
+//   Comes from: 2786:17: ( 'declare-fun' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DECLARE_FUN_TOK
+ *
+ * Looks to match the characters the constitute the token DECLARE_FUN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDECLARE_FUN_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DECLARE_FUN_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2786:17: ( 'declare-fun' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2786:19: 'declare-fun'
+    {
+        MATCHS(lit_9);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDECLARE_FUN_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDECLARE_FUN_TOKEx; /* Prevent compiler warnings */
+    ruleDECLARE_FUN_TOKEx: ;
+
+}
+// $ANTLR end DECLARE_FUN_TOK
+
+//   Comes from: 2787:18: ( 'declare-sort' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DECLARE_SORT_TOK
+ *
+ * Looks to match the characters the constitute the token DECLARE_SORT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDECLARE_SORT_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DECLARE_SORT_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2787:18: ( 'declare-sort' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2787:20: 'declare-sort'
+    {
+        MATCHS(lit_10);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDECLARE_SORT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDECLARE_SORT_TOKEx; /* Prevent compiler warnings */
+    ruleDECLARE_SORT_TOKEx: ;
+
+}
+// $ANTLR end DECLARE_SORT_TOK
+
+//   Comes from: 2788:16: ( 'define-fun' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DEFINE_FUN_TOK
+ *
+ * Looks to match the characters the constitute the token DEFINE_FUN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDEFINE_FUN_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DEFINE_FUN_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2788:16: ( 'define-fun' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2788:18: 'define-fun'
+    {
+        MATCHS(lit_11);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDEFINE_FUN_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDEFINE_FUN_TOKEx; /* Prevent compiler warnings */
+    ruleDEFINE_FUN_TOKEx: ;
+
+}
+// $ANTLR end DEFINE_FUN_TOK
+
+//   Comes from: 2789:20: ( 'define-fun-rec' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DEFINE_FUN_REC_TOK
+ *
+ * Looks to match the characters the constitute the token DEFINE_FUN_REC_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDEFINE_FUN_REC_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DEFINE_FUN_REC_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2789:20: ( 'define-fun-rec' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2789:22: 'define-fun-rec'
+    {
+        MATCHS(lit_12);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDEFINE_FUN_REC_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDEFINE_FUN_REC_TOKEx; /* Prevent compiler warnings */
+    ruleDEFINE_FUN_REC_TOKEx: ;
+
+}
+// $ANTLR end DEFINE_FUN_REC_TOK
+
+//   Comes from: 2790:21: ( 'define-funs-rec' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DEFINE_FUNS_REC_TOK
+ *
+ * Looks to match the characters the constitute the token DEFINE_FUNS_REC_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDEFINE_FUNS_REC_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DEFINE_FUNS_REC_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2790:21: ( 'define-funs-rec' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2790:23: 'define-funs-rec'
+    {
+        MATCHS(lit_13);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDEFINE_FUNS_REC_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDEFINE_FUNS_REC_TOKEx; /* Prevent compiler warnings */
+    ruleDEFINE_FUNS_REC_TOKEx: ;
+
+}
+// $ANTLR end DEFINE_FUNS_REC_TOK
+
+//   Comes from: 2791:17: ( 'define-sort' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DEFINE_SORT_TOK
+ *
+ * Looks to match the characters the constitute the token DEFINE_SORT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDEFINE_SORT_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DEFINE_SORT_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2791:17: ( 'define-sort' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2791:19: 'define-sort'
+    {
+        MATCHS(lit_14);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDEFINE_SORT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDEFINE_SORT_TOKEx; /* Prevent compiler warnings */
+    ruleDEFINE_SORT_TOKEx: ;
+
+}
+// $ANTLR end DEFINE_SORT_TOK
+
+//   Comes from: 2792:15: ( 'get-value' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start GET_VALUE_TOK
+ *
+ * Looks to match the characters the constitute the token GET_VALUE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mGET_VALUE_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = GET_VALUE_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2792:15: ( 'get-value' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2792:17: 'get-value'
+    {
+        MATCHS(lit_15);
+        if  (HASEXCEPTION())
+        {
+            goto ruleGET_VALUE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleGET_VALUE_TOKEx; /* Prevent compiler warnings */
+    ruleGET_VALUE_TOKEx: ;
+
+}
+// $ANTLR end GET_VALUE_TOK
+
+//   Comes from: 2793:20: ( 'get-assignment' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start GET_ASSIGNMENT_TOK
+ *
+ * Looks to match the characters the constitute the token GET_ASSIGNMENT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mGET_ASSIGNMENT_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = GET_ASSIGNMENT_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2793:20: ( 'get-assignment' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2793:22: 'get-assignment'
+    {
+        MATCHS(lit_16);
+        if  (HASEXCEPTION())
+        {
+            goto ruleGET_ASSIGNMENT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleGET_ASSIGNMENT_TOKEx; /* Prevent compiler warnings */
+    ruleGET_ASSIGNMENT_TOKEx: ;
+
+}
+// $ANTLR end GET_ASSIGNMENT_TOK
+
+//   Comes from: 2794:20: ( 'get-assertions' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start GET_ASSERTIONS_TOK
+ *
+ * Looks to match the characters the constitute the token GET_ASSERTIONS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mGET_ASSERTIONS_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = GET_ASSERTIONS_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2794:20: ( 'get-assertions' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2794:22: 'get-assertions'
+    {
+        MATCHS(lit_17);
+        if  (HASEXCEPTION())
+        {
+            goto ruleGET_ASSERTIONS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleGET_ASSERTIONS_TOKEx; /* Prevent compiler warnings */
+    ruleGET_ASSERTIONS_TOKEx: ;
+
+}
+// $ANTLR end GET_ASSERTIONS_TOK
+
+//   Comes from: 2795:15: ( 'get-proof' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start GET_PROOF_TOK
+ *
+ * Looks to match the characters the constitute the token GET_PROOF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mGET_PROOF_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = GET_PROOF_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2795:15: ( 'get-proof' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2795:17: 'get-proof'
+    {
+        MATCHS(lit_18);
+        if  (HASEXCEPTION())
+        {
+            goto ruleGET_PROOF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleGET_PROOF_TOKEx; /* Prevent compiler warnings */
+    ruleGET_PROOF_TOKEx: ;
+
+}
+// $ANTLR end GET_PROOF_TOK
+
+//   Comes from: 2796:20: ( 'get-unsat-core' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start GET_UNSAT_CORE_TOK
+ *
+ * Looks to match the characters the constitute the token GET_UNSAT_CORE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mGET_UNSAT_CORE_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = GET_UNSAT_CORE_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2796:20: ( 'get-unsat-core' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2796:22: 'get-unsat-core'
+    {
+        MATCHS(lit_19);
+        if  (HASEXCEPTION())
+        {
+            goto ruleGET_UNSAT_CORE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleGET_UNSAT_CORE_TOKEx; /* Prevent compiler warnings */
+    ruleGET_UNSAT_CORE_TOKEx: ;
+
+}
+// $ANTLR end GET_UNSAT_CORE_TOK
+
+//   Comes from: 2797:10: ( 'exit' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start EXIT_TOK
+ *
+ * Looks to match the characters the constitute the token EXIT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mEXIT_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = EXIT_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2797:10: ( 'exit' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2797:12: 'exit'
+    {
+        MATCHS(lit_20);
+        if  (HASEXCEPTION())
+        {
+            goto ruleEXIT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleEXIT_TOKEx; /* Prevent compiler warnings */
+    ruleEXIT_TOKEx: ;
+
+}
+// $ANTLR end EXIT_TOK
+
+//   Comes from: 2798:11: ({...}? 'reset' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start RESET_TOK
+ *
+ * Looks to match the characters the constitute the token RESET_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mRESET_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = RESET_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2798:11: ({...}? 'reset' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2798:13: {...}? 'reset'
+    {
+        if ( !(( PARSER_STATE->v2_5() )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->v2_5() ";
+                EXCEPTION->ruleName	 = (void *)"RESET_TOK";
+
+
+        }
+
+        MATCHS(lit_21);
+        if  (HASEXCEPTION())
+        {
+            goto ruleRESET_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleRESET_TOKEx; /* Prevent compiler warnings */
+    ruleRESET_TOKEx: ;
+
+}
+// $ANTLR end RESET_TOK
+
+//   Comes from: 2799:22: ( 'reset-assertions' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start RESET_ASSERTIONS_TOK
+ *
+ * Looks to match the characters the constitute the token RESET_ASSERTIONS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mRESET_ASSERTIONS_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = RESET_ASSERTIONS_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2799:22: ( 'reset-assertions' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2799:24: 'reset-assertions'
+    {
+        MATCHS(lit_22);
+        if  (HASEXCEPTION())
+        {
+            goto ruleRESET_ASSERTIONS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleRESET_ASSERTIONS_TOKEx; /* Prevent compiler warnings */
+    ruleRESET_ASSERTIONS_TOKEx: ;
+
+}
+// $ANTLR end RESET_ASSERTIONS_TOK
+
+//   Comes from: 2800:9: ( 'ite' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ITE_TOK
+ *
+ * Looks to match the characters the constitute the token ITE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mITE_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ITE_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2800:9: ( 'ite' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2800:11: 'ite'
+    {
+        MATCHS(lit_23);
+        if  (HASEXCEPTION())
+        {
+            goto ruleITE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleITE_TOKEx; /* Prevent compiler warnings */
+    ruleITE_TOKEx: ;
+
+}
+// $ANTLR end ITE_TOK
+
+//   Comes from: 2801:9: ( 'let' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LET_TOK
+ *
+ * Looks to match the characters the constitute the token LET_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLET_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LET_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2801:9: ( 'let' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2801:11: 'let'
+    {
+        MATCHS(lit_24);
+        if  (HASEXCEPTION())
+        {
+            goto ruleLET_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLET_TOKEx; /* Prevent compiler warnings */
+    ruleLET_TOKEx: ;
+
+}
+// $ANTLR end LET_TOK
+
+//   Comes from: 2802:15: ( '!' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ATTRIBUTE_TOK
+ *
+ * Looks to match the characters the constitute the token ATTRIBUTE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mATTRIBUTE_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ATTRIBUTE_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2802:15: ( '!' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2802:17: '!'
+    {
+        MATCHC('!');
+        if  (HASEXCEPTION())
+        {
+            goto ruleATTRIBUTE_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleATTRIBUTE_TOKEx; /* Prevent compiler warnings */
+    ruleATTRIBUTE_TOKEx: ;
+
+}
+// $ANTLR end ATTRIBUTE_TOK
+
+//   Comes from: 2803:12: ( '(' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LPAREN_TOK
+ *
+ * Looks to match the characters the constitute the token LPAREN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLPAREN_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LPAREN_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2803:12: ( '(' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2803:14: '('
+    {
+        MATCHC('(');
+        if  (HASEXCEPTION())
+        {
+            goto ruleLPAREN_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLPAREN_TOKEx; /* Prevent compiler warnings */
+    ruleLPAREN_TOKEx: ;
+
+}
+// $ANTLR end LPAREN_TOK
+
+//   Comes from: 2804:12: ( ')' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start RPAREN_TOK
+ *
+ * Looks to match the characters the constitute the token RPAREN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mRPAREN_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = RPAREN_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2804:12: ( ')' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2804:14: ')'
+    {
+        MATCHC(')');
+        if  (HASEXCEPTION())
+        {
+            goto ruleRPAREN_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleRPAREN_TOKEx; /* Prevent compiler warnings */
+    ruleRPAREN_TOKEx: ;
+
+}
+// $ANTLR end RPAREN_TOK
+
+//   Comes from: 2805:11: ( '_' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start INDEX_TOK
+ *
+ * Looks to match the characters the constitute the token INDEX_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mINDEX_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = INDEX_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2805:11: ( '_' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2805:13: '_'
+    {
+        MATCHC('_');
+        if  (HASEXCEPTION())
+        {
+            goto ruleINDEX_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleINDEX_TOKEx; /* Prevent compiler warnings */
+    ruleINDEX_TOKEx: ;
+
+}
+// $ANTLR end INDEX_TOK
+
+//   Comes from: 2806:15: ( 'set-logic' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SET_LOGIC_TOK
+ *
+ * Looks to match the characters the constitute the token SET_LOGIC_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSET_LOGIC_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SET_LOGIC_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2806:15: ( 'set-logic' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2806:17: 'set-logic'
+    {
+        MATCHS(lit_25);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSET_LOGIC_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSET_LOGIC_TOKEx; /* Prevent compiler warnings */
+    ruleSET_LOGIC_TOKEx: ;
+
+}
+// $ANTLR end SET_LOGIC_TOK
+
+//   Comes from: 2807:14: ( 'set-info' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SET_INFO_TOK
+ *
+ * Looks to match the characters the constitute the token SET_INFO_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSET_INFO_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SET_INFO_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2807:14: ( 'set-info' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2807:16: 'set-info'
+    {
+        MATCHS(lit_26);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSET_INFO_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSET_INFO_TOKEx; /* Prevent compiler warnings */
+    ruleSET_INFO_TOKEx: ;
+
+}
+// $ANTLR end SET_INFO_TOK
+
+//   Comes from: 2808:15: ( 'meta-info' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start META_INFO_TOK
+ *
+ * Looks to match the characters the constitute the token META_INFO_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mMETA_INFO_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = META_INFO_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2808:15: ( 'meta-info' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2808:17: 'meta-info'
+    {
+        MATCHS(lit_27);
+        if  (HASEXCEPTION())
+        {
+            goto ruleMETA_INFO_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleMETA_INFO_TOKEx; /* Prevent compiler warnings */
+    ruleMETA_INFO_TOKEx: ;
+
+}
+// $ANTLR end META_INFO_TOK
+
+//   Comes from: 2809:14: ( 'get-info' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start GET_INFO_TOK
+ *
+ * Looks to match the characters the constitute the token GET_INFO_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mGET_INFO_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = GET_INFO_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2809:14: ( 'get-info' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2809:16: 'get-info'
+    {
+        MATCHS(lit_28);
+        if  (HASEXCEPTION())
+        {
+            goto ruleGET_INFO_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleGET_INFO_TOKEx; /* Prevent compiler warnings */
+    ruleGET_INFO_TOKEx: ;
+
+}
+// $ANTLR end GET_INFO_TOK
+
+//   Comes from: 2810:16: ( 'set-option' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SET_OPTION_TOK
+ *
+ * Looks to match the characters the constitute the token SET_OPTION_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSET_OPTION_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SET_OPTION_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2810:16: ( 'set-option' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2810:18: 'set-option'
+    {
+        MATCHS(lit_29);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSET_OPTION_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSET_OPTION_TOKEx; /* Prevent compiler warnings */
+    ruleSET_OPTION_TOKEx: ;
+
+}
+// $ANTLR end SET_OPTION_TOK
+
+//   Comes from: 2811:16: ( 'get-option' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start GET_OPTION_TOK
+ *
+ * Looks to match the characters the constitute the token GET_OPTION_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mGET_OPTION_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = GET_OPTION_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2811:16: ( 'get-option' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2811:18: 'get-option'
+    {
+        MATCHS(lit_30);
+        if  (HASEXCEPTION())
+        {
+            goto ruleGET_OPTION_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleGET_OPTION_TOKEx; /* Prevent compiler warnings */
+    ruleGET_OPTION_TOKEx: ;
+
+}
+// $ANTLR end GET_OPTION_TOK
+
+//   Comes from: 2812:10: ( 'push' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start PUSH_TOK
+ *
+ * Looks to match the characters the constitute the token PUSH_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPUSH_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = PUSH_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2812:10: ( 'push' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2812:12: 'push'
+    {
+        MATCHS(lit_31);
+        if  (HASEXCEPTION())
+        {
+            goto rulePUSH_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePUSH_TOKEx; /* Prevent compiler warnings */
+    rulePUSH_TOKEx: ;
+
+}
+// $ANTLR end PUSH_TOK
+
+//   Comes from: 2813:9: ( 'pop' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start POP_TOK
+ *
+ * Looks to match the characters the constitute the token POP_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPOP_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = POP_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2813:9: ( 'pop' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2813:11: 'pop'
+    {
+        MATCHS(lit_32);
+        if  (HASEXCEPTION())
+        {
+            goto rulePOP_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePOP_TOKEx; /* Prevent compiler warnings */
+    rulePOP_TOKEx: ;
+
+}
+// $ANTLR end POP_TOK
+
+//   Comes from: 2814:8: ( 'as' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start AS_TOK
+ *
+ * Looks to match the characters the constitute the token AS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mAS_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = AS_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2814:8: ( 'as' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2814:10: 'as'
+    {
+        MATCHS(lit_33);
+        if  (HASEXCEPTION())
+        {
+            goto ruleAS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleAS_TOKEx; /* Prevent compiler warnings */
+    ruleAS_TOKEx: ;
+
+}
+// $ANTLR end AS_TOK
+
+//   Comes from: 2815:11: ( 'const' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start CONST_TOK
+ *
+ * Looks to match the characters the constitute the token CONST_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCONST_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = CONST_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2815:11: ( 'const' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2815:13: 'const'
+    {
+        MATCHS(lit_34);
+        if  (HASEXCEPTION())
+        {
+            goto ruleCONST_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCONST_TOKEx; /* Prevent compiler warnings */
+    ruleCONST_TOKEx: ;
+
+}
+// $ANTLR end CONST_TOK
+
+//   Comes from: 2818:23: ( 'declare-datatypes' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DECLARE_DATATYPES_TOK
+ *
+ * Looks to match the characters the constitute the token DECLARE_DATATYPES_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDECLARE_DATATYPES_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DECLARE_DATATYPES_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2818:23: ( 'declare-datatypes' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2818:25: 'declare-datatypes'
+    {
+        MATCHS(lit_35);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDECLARE_DATATYPES_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDECLARE_DATATYPES_TOKEx; /* Prevent compiler warnings */
+    ruleDECLARE_DATATYPES_TOKEx: ;
+
+}
+// $ANTLR end DECLARE_DATATYPES_TOK
+
+//   Comes from: 2819:25: ( 'declare-codatatypes' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DECLARE_CODATATYPES_TOK
+ *
+ * Looks to match the characters the constitute the token DECLARE_CODATATYPES_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDECLARE_CODATATYPES_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DECLARE_CODATATYPES_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2819:25: ( 'declare-codatatypes' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2819:27: 'declare-codatatypes'
+    {
+        MATCHS(lit_36);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDECLARE_CODATATYPES_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDECLARE_CODATATYPES_TOKEx; /* Prevent compiler warnings */
+    ruleDECLARE_CODATATYPES_TOKEx: ;
+
+}
+// $ANTLR end DECLARE_CODATATYPES_TOK
+
+//   Comes from: 2820:15: ( 'get-model' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start GET_MODEL_TOK
+ *
+ * Looks to match the characters the constitute the token GET_MODEL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mGET_MODEL_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = GET_MODEL_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2820:15: ( 'get-model' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2820:17: 'get-model'
+    {
+        MATCHS(lit_37);
+        if  (HASEXCEPTION())
+        {
+            goto ruleGET_MODEL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleGET_MODEL_TOKEx; /* Prevent compiler warnings */
+    ruleGET_MODEL_TOKEx: ;
+
+}
+// $ANTLR end GET_MODEL_TOK
+
+//   Comes from: 2821:10: ( 'echo' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ECHO_TOK
+ *
+ * Looks to match the characters the constitute the token ECHO_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mECHO_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ECHO_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2821:10: ( 'echo' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2821:12: 'echo'
+    {
+        MATCHS(lit_38);
+        if  (HASEXCEPTION())
+        {
+            goto ruleECHO_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleECHO_TOKEx; /* Prevent compiler warnings */
+    ruleECHO_TOKEx: ;
+
+}
+// $ANTLR end ECHO_TOK
+
+//   Comes from: 2822:18: ( 'assert-rewrite' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start REWRITE_RULE_TOK
+ *
+ * Looks to match the characters the constitute the token REWRITE_RULE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mREWRITE_RULE_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = REWRITE_RULE_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2822:18: ( 'assert-rewrite' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2822:20: 'assert-rewrite'
+    {
+        MATCHS(lit_39);
+        if  (HASEXCEPTION())
+        {
+            goto ruleREWRITE_RULE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleREWRITE_RULE_TOKEx; /* Prevent compiler warnings */
+    ruleREWRITE_RULE_TOKEx: ;
+
+}
+// $ANTLR end REWRITE_RULE_TOK
+
+//   Comes from: 2823:20: ( 'assert-reduction' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start REDUCTION_RULE_TOK
+ *
+ * Looks to match the characters the constitute the token REDUCTION_RULE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mREDUCTION_RULE_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = REDUCTION_RULE_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2823:20: ( 'assert-reduction' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2823:22: 'assert-reduction'
+    {
+        MATCHS(lit_40);
+        if  (HASEXCEPTION())
+        {
+            goto ruleREDUCTION_RULE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleREDUCTION_RULE_TOKEx; /* Prevent compiler warnings */
+    ruleREDUCTION_RULE_TOKEx: ;
+
+}
+// $ANTLR end REDUCTION_RULE_TOK
+
+//   Comes from: 2824:22: ( 'assert-propagation' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start PROPAGATION_RULE_TOK
+ *
+ * Looks to match the characters the constitute the token PROPAGATION_RULE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPROPAGATION_RULE_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = PROPAGATION_RULE_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2824:22: ( 'assert-propagation' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2824:24: 'assert-propagation'
+    {
+        MATCHS(lit_41);
+        if  (HASEXCEPTION())
+        {
+            goto rulePROPAGATION_RULE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePROPAGATION_RULE_TOKEx; /* Prevent compiler warnings */
+    rulePROPAGATION_RULE_TOKEx: ;
+
+}
+// $ANTLR end PROPAGATION_RULE_TOK
+
+//   Comes from: 2825:19: ( 'declare-sorts' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DECLARE_SORTS_TOK
+ *
+ * Looks to match the characters the constitute the token DECLARE_SORTS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDECLARE_SORTS_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DECLARE_SORTS_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2825:19: ( 'declare-sorts' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2825:21: 'declare-sorts'
+    {
+        MATCHS(lit_42);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDECLARE_SORTS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDECLARE_SORTS_TOKEx; /* Prevent compiler warnings */
+    ruleDECLARE_SORTS_TOKEx: ;
+
+}
+// $ANTLR end DECLARE_SORTS_TOK
+
+//   Comes from: 2826:18: ( 'declare-funs' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DECLARE_FUNS_TOK
+ *
+ * Looks to match the characters the constitute the token DECLARE_FUNS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDECLARE_FUNS_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DECLARE_FUNS_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2826:18: ( 'declare-funs' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2826:20: 'declare-funs'
+    {
+        MATCHS(lit_43);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDECLARE_FUNS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDECLARE_FUNS_TOKEx; /* Prevent compiler warnings */
+    ruleDECLARE_FUNS_TOKEx: ;
+
+}
+// $ANTLR end DECLARE_FUNS_TOK
+
+//   Comes from: 2827:19: ( 'declare-preds' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DECLARE_PREDS_TOK
+ *
+ * Looks to match the characters the constitute the token DECLARE_PREDS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDECLARE_PREDS_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DECLARE_PREDS_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2827:19: ( 'declare-preds' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2827:21: 'declare-preds'
+    {
+        MATCHS(lit_44);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDECLARE_PREDS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDECLARE_PREDS_TOKEx; /* Prevent compiler warnings */
+    ruleDECLARE_PREDS_TOKEx: ;
+
+}
+// $ANTLR end DECLARE_PREDS_TOK
+
+//   Comes from: 2828:12: ( 'define' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DEFINE_TOK
+ *
+ * Looks to match the characters the constitute the token DEFINE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDEFINE_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DEFINE_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2828:12: ( 'define' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2828:14: 'define'
+    {
+        MATCHS(lit_45);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDEFINE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDEFINE_TOKEx; /* Prevent compiler warnings */
+    ruleDEFINE_TOKEx: ;
+
+}
+// $ANTLR end DEFINE_TOK
+
+//   Comes from: 2829:19: ( 'declare-const' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DECLARE_CONST_TOK
+ *
+ * Looks to match the characters the constitute the token DECLARE_CONST_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDECLARE_CONST_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DECLARE_CONST_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2829:19: ( 'declare-const' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2829:21: 'declare-const'
+    {
+        MATCHS(lit_46);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDECLARE_CONST_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDECLARE_CONST_TOKEx; /* Prevent compiler warnings */
+    ruleDECLARE_CONST_TOKEx: ;
+
+}
+// $ANTLR end DECLARE_CONST_TOK
+
+//   Comes from: 2830:18: ( 'define-const' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DEFINE_CONST_TOK
+ *
+ * Looks to match the characters the constitute the token DEFINE_CONST_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDEFINE_CONST_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DEFINE_CONST_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2830:18: ( 'define-const' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2830:20: 'define-const'
+    {
+        MATCHS(lit_47);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDEFINE_CONST_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDEFINE_CONST_TOKEx; /* Prevent compiler warnings */
+    ruleDEFINE_CONST_TOKEx: ;
+
+}
+// $ANTLR end DEFINE_CONST_TOK
+
+//   Comes from: 2831:14: ( 'simplify' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SIMPLIFY_TOK
+ *
+ * Looks to match the characters the constitute the token SIMPLIFY_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSIMPLIFY_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SIMPLIFY_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2831:14: ( 'simplify' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2831:16: 'simplify'
+    {
+        MATCHS(lit_48);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSIMPLIFY_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSIMPLIFY_TOKEx; /* Prevent compiler warnings */
+    ruleSIMPLIFY_TOKEx: ;
+
+}
+// $ANTLR end SIMPLIFY_TOK
+
+//   Comes from: 2832:13: ( 'include' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start INCLUDE_TOK
+ *
+ * Looks to match the characters the constitute the token INCLUDE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mINCLUDE_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = INCLUDE_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2832:13: ( 'include' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2832:15: 'include'
+    {
+        MATCHS(lit_49);
+        if  (HASEXCEPTION())
+        {
+            goto ruleINCLUDE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleINCLUDE_TOKEx; /* Prevent compiler warnings */
+    ruleINCLUDE_TOKEx: ;
+
+}
+// $ANTLR end INCLUDE_TOK
+
+//   Comes from: 2833:12: ( 'get-qe' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start GET_QE_TOK
+ *
+ * Looks to match the characters the constitute the token GET_QE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mGET_QE_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = GET_QE_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2833:12: ( 'get-qe' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2833:14: 'get-qe'
+    {
+        MATCHS(lit_50);
+        if  (HASEXCEPTION())
+        {
+            goto ruleGET_QE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleGET_QE_TOKEx; /* Prevent compiler warnings */
+    ruleGET_QE_TOKEx: ;
+
+}
+// $ANTLR end GET_QE_TOK
+
+//   Comes from: 2834:21: ( 'get-qe-disjunct' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start GET_QE_DISJUNCT_TOK
+ *
+ * Looks to match the characters the constitute the token GET_QE_DISJUNCT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mGET_QE_DISJUNCT_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = GET_QE_DISJUNCT_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2834:21: ( 'get-qe-disjunct' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2834:23: 'get-qe-disjunct'
+    {
+        MATCHS(lit_51);
+        if  (HASEXCEPTION())
+        {
+            goto ruleGET_QE_DISJUNCT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleGET_QE_DISJUNCT_TOKEx; /* Prevent compiler warnings */
+    ruleGET_QE_DISJUNCT_TOKEx: ;
+
+}
+// $ANTLR end GET_QE_DISJUNCT_TOK
+
+//   Comes from: 2837:15: ( 'synth-fun' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SYNTH_FUN_TOK
+ *
+ * Looks to match the characters the constitute the token SYNTH_FUN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSYNTH_FUN_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SYNTH_FUN_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2837:15: ( 'synth-fun' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2837:17: 'synth-fun'
+    {
+        MATCHS(lit_52);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSYNTH_FUN_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSYNTH_FUN_TOKEx; /* Prevent compiler warnings */
+    ruleSYNTH_FUN_TOKEx: ;
+
+}
+// $ANTLR end SYNTH_FUN_TOK
+
+//   Comes from: 2838:15: ( 'synth-inv' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SYNTH_INV_TOK
+ *
+ * Looks to match the characters the constitute the token SYNTH_INV_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSYNTH_INV_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SYNTH_INV_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2838:15: ( 'synth-inv' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2838:17: 'synth-inv'
+    {
+        MATCHS(lit_53);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSYNTH_INV_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSYNTH_INV_TOKEx; /* Prevent compiler warnings */
+    ruleSYNTH_INV_TOKEx: ;
+
+}
+// $ANTLR end SYNTH_INV_TOK
+
+//   Comes from: 2839:17: ( 'check-synth' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start CHECK_SYNTH_TOK
+ *
+ * Looks to match the characters the constitute the token CHECK_SYNTH_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCHECK_SYNTH_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = CHECK_SYNTH_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2839:17: ( 'check-synth' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2839:19: 'check-synth'
+    {
+        MATCHS(lit_54);
+        if  (HASEXCEPTION())
+        {
+            goto ruleCHECK_SYNTH_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCHECK_SYNTH_TOKEx; /* Prevent compiler warnings */
+    ruleCHECK_SYNTH_TOKEx: ;
+
+}
+// $ANTLR end CHECK_SYNTH_TOK
+
+//   Comes from: 2840:17: ( 'declare-var' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DECLARE_VAR_TOK
+ *
+ * Looks to match the characters the constitute the token DECLARE_VAR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDECLARE_VAR_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DECLARE_VAR_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2840:17: ( 'declare-var' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2840:19: 'declare-var'
+    {
+        MATCHS(lit_55);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDECLARE_VAR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDECLARE_VAR_TOKEx; /* Prevent compiler warnings */
+    ruleDECLARE_VAR_TOKEx: ;
+
+}
+// $ANTLR end DECLARE_VAR_TOK
+
+//   Comes from: 2841:24: ( 'declare-primed-var' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DECLARE_PRIMED_VAR_TOK
+ *
+ * Looks to match the characters the constitute the token DECLARE_PRIMED_VAR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDECLARE_PRIMED_VAR_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DECLARE_PRIMED_VAR_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2841:24: ( 'declare-primed-var' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2841:26: 'declare-primed-var'
+    {
+        MATCHS(lit_56);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDECLARE_PRIMED_VAR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDECLARE_PRIMED_VAR_TOKEx; /* Prevent compiler warnings */
+    ruleDECLARE_PRIMED_VAR_TOKEx: ;
+
+}
+// $ANTLR end DECLARE_PRIMED_VAR_TOK
+
+//   Comes from: 2842:16: ( 'constraint' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start CONSTRAINT_TOK
+ *
+ * Looks to match the characters the constitute the token CONSTRAINT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCONSTRAINT_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = CONSTRAINT_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2842:16: ( 'constraint' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2842:18: 'constraint'
+    {
+        MATCHS(lit_57);
+        if  (HASEXCEPTION())
+        {
+            goto ruleCONSTRAINT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCONSTRAINT_TOKEx; /* Prevent compiler warnings */
+    ruleCONSTRAINT_TOKEx: ;
+
+}
+// $ANTLR end CONSTRAINT_TOK
+
+//   Comes from: 2843:20: ( 'inv-constraint' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start INV_CONSTRAINT_TOK
+ *
+ * Looks to match the characters the constitute the token INV_CONSTRAINT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mINV_CONSTRAINT_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = INV_CONSTRAINT_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2843:20: ( 'inv-constraint' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2843:22: 'inv-constraint'
+    {
+        MATCHS(lit_58);
+        if  (HASEXCEPTION())
+        {
+            goto ruleINV_CONSTRAINT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleINV_CONSTRAINT_TOKEx; /* Prevent compiler warnings */
+    ruleINV_CONSTRAINT_TOKEx: ;
+
+}
+// $ANTLR end INV_CONSTRAINT_TOK
+
+//   Comes from: 2844:17: ( 'set-options' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SET_OPTIONS_TOK
+ *
+ * Looks to match the characters the constitute the token SET_OPTIONS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSET_OPTIONS_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SET_OPTIONS_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2844:17: ( 'set-options' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2844:19: 'set-options'
+    {
+        MATCHS(lit_59);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSET_OPTIONS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSET_OPTIONS_TOKEx; /* Prevent compiler warnings */
+    ruleSET_OPTIONS_TOKEx: ;
+
+}
+// $ANTLR end SET_OPTIONS_TOK
+
+//   Comes from: 2845:16: ({...}? 'Enum' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SYGUS_ENUM_TOK
+ *
+ * Looks to match the characters the constitute the token SYGUS_ENUM_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSYGUS_ENUM_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SYGUS_ENUM_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2845:16: ({...}? 'Enum' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2845:18: {...}? 'Enum'
+    {
+        if ( !(( PARSER_STATE->sygus() )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->sygus() ";
+                EXCEPTION->ruleName	 = (void *)"SYGUS_ENUM_TOK";
+
+
+        }
+
+        MATCHS(lit_60);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSYGUS_ENUM_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSYGUS_ENUM_TOKEx; /* Prevent compiler warnings */
+    ruleSYGUS_ENUM_TOKEx: ;
+
+}
+// $ANTLR end SYGUS_ENUM_TOK
+
+//   Comes from: 2846:21: ({...}? '::' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SYGUS_ENUM_CONS_TOK
+ *
+ * Looks to match the characters the constitute the token SYGUS_ENUM_CONS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSYGUS_ENUM_CONS_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SYGUS_ENUM_CONS_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2846:21: ({...}? '::' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2846:23: {...}? '::'
+    {
+        if ( !(( PARSER_STATE->sygus() )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->sygus() ";
+                EXCEPTION->ruleName	 = (void *)"SYGUS_ENUM_CONS_TOK";
+
+
+        }
+
+        MATCHS(lit_61);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSYGUS_ENUM_CONS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSYGUS_ENUM_CONS_TOKEx; /* Prevent compiler warnings */
+    ruleSYGUS_ENUM_CONS_TOKEx: ;
+
+}
+// $ANTLR end SYGUS_ENUM_CONS_TOK
+
+//   Comes from: 2847:20: ({...}? 'Constant' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SYGUS_CONSTANT_TOK
+ *
+ * Looks to match the characters the constitute the token SYGUS_CONSTANT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSYGUS_CONSTANT_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SYGUS_CONSTANT_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2847:20: ({...}? 'Constant' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2847:22: {...}? 'Constant'
+    {
+        if ( !(( PARSER_STATE->sygus() )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->sygus() ";
+                EXCEPTION->ruleName	 = (void *)"SYGUS_CONSTANT_TOK";
+
+
+        }
+
+        MATCHS(lit_62);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSYGUS_CONSTANT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSYGUS_CONSTANT_TOKEx; /* Prevent compiler warnings */
+    ruleSYGUS_CONSTANT_TOKEx: ;
+
+}
+// $ANTLR end SYGUS_CONSTANT_TOK
+
+//   Comes from: 2848:20: ({...}? 'Variable' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SYGUS_VARIABLE_TOK
+ *
+ * Looks to match the characters the constitute the token SYGUS_VARIABLE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSYGUS_VARIABLE_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SYGUS_VARIABLE_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2848:20: ({...}? 'Variable' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2848:22: {...}? 'Variable'
+    {
+        if ( !(( PARSER_STATE->sygus() )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->sygus() ";
+                EXCEPTION->ruleName	 = (void *)"SYGUS_VARIABLE_TOK";
+
+
+        }
+
+        MATCHS(lit_63);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSYGUS_VARIABLE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSYGUS_VARIABLE_TOKEx; /* Prevent compiler warnings */
+    ruleSYGUS_VARIABLE_TOKEx: ;
+
+}
+// $ANTLR end SYGUS_VARIABLE_TOK
+
+//   Comes from: 2849:26: ({...}? 'InputVariable' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SYGUS_INPUT_VARIABLE_TOK
+ *
+ * Looks to match the characters the constitute the token SYGUS_INPUT_VARIABLE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSYGUS_INPUT_VARIABLE_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SYGUS_INPUT_VARIABLE_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2849:26: ({...}? 'InputVariable' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2849:28: {...}? 'InputVariable'
+    {
+        if ( !(( PARSER_STATE->sygus() )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->sygus() ";
+                EXCEPTION->ruleName	 = (void *)"SYGUS_INPUT_VARIABLE_TOK";
+
+
+        }
+
+        MATCHS(lit_64);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSYGUS_INPUT_VARIABLE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSYGUS_INPUT_VARIABLE_TOKEx; /* Prevent compiler warnings */
+    ruleSYGUS_INPUT_VARIABLE_TOKEx: ;
+
+}
+// $ANTLR end SYGUS_INPUT_VARIABLE_TOK
+
+//   Comes from: 2850:26: ({...}? 'LocalVariable' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SYGUS_LOCAL_VARIABLE_TOK
+ *
+ * Looks to match the characters the constitute the token SYGUS_LOCAL_VARIABLE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSYGUS_LOCAL_VARIABLE_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SYGUS_LOCAL_VARIABLE_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2850:26: ({...}? 'LocalVariable' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2850:28: {...}? 'LocalVariable'
+    {
+        if ( !(( PARSER_STATE->sygus() )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->sygus() ";
+                EXCEPTION->ruleName	 = (void *)"SYGUS_LOCAL_VARIABLE_TOK";
+
+
+        }
+
+        MATCHS(lit_65);
+        if  (HASEXCEPTION())
+        {
+            goto ruleSYGUS_LOCAL_VARIABLE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSYGUS_LOCAL_VARIABLE_TOKEx; /* Prevent compiler warnings */
+    ruleSYGUS_LOCAL_VARIABLE_TOKEx: ;
+
+}
+// $ANTLR end SYGUS_LOCAL_VARIABLE_TOK
+
+//   Comes from: 2853:23: ( ':pattern' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ATTRIBUTE_PATTERN_TOK
+ *
+ * Looks to match the characters the constitute the token ATTRIBUTE_PATTERN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mATTRIBUTE_PATTERN_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ATTRIBUTE_PATTERN_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2853:23: ( ':pattern' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2853:25: ':pattern'
+    {
+        MATCHS(lit_66);
+        if  (HASEXCEPTION())
+        {
+            goto ruleATTRIBUTE_PATTERN_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleATTRIBUTE_PATTERN_TOKEx; /* Prevent compiler warnings */
+    ruleATTRIBUTE_PATTERN_TOKEx: ;
+
+}
+// $ANTLR end ATTRIBUTE_PATTERN_TOK
+
+//   Comes from: 2854:26: ( ':no-pattern' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ATTRIBUTE_NO_PATTERN_TOK
+ *
+ * Looks to match the characters the constitute the token ATTRIBUTE_NO_PATTERN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mATTRIBUTE_NO_PATTERN_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ATTRIBUTE_NO_PATTERN_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2854:26: ( ':no-pattern' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2854:28: ':no-pattern'
+    {
+        MATCHS(lit_67);
+        if  (HASEXCEPTION())
+        {
+            goto ruleATTRIBUTE_NO_PATTERN_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleATTRIBUTE_NO_PATTERN_TOKEx; /* Prevent compiler warnings */
+    ruleATTRIBUTE_NO_PATTERN_TOKEx: ;
+
+}
+// $ANTLR end ATTRIBUTE_NO_PATTERN_TOK
+
+//   Comes from: 2855:21: ( ':named' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ATTRIBUTE_NAMED_TOK
+ *
+ * Looks to match the characters the constitute the token ATTRIBUTE_NAMED_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mATTRIBUTE_NAMED_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ATTRIBUTE_NAMED_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2855:21: ( ':named' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2855:23: ':named'
+    {
+        MATCHS(lit_68);
+        if  (HASEXCEPTION())
+        {
+            goto ruleATTRIBUTE_NAMED_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleATTRIBUTE_NAMED_TOKEx; /* Prevent compiler warnings */
+    ruleATTRIBUTE_NAMED_TOKEx: ;
+
+}
+// $ANTLR end ATTRIBUTE_NAMED_TOK
+
+//   Comes from: 2856:22: ( ':quant-inst-max-level' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ATTRIBUTE_INST_LEVEL
+ *
+ * Looks to match the characters the constitute the token ATTRIBUTE_INST_LEVEL
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mATTRIBUTE_INST_LEVEL(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ATTRIBUTE_INST_LEVEL;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2856:22: ( ':quant-inst-max-level' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2856:24: ':quant-inst-max-level'
+    {
+        MATCHS(lit_69);
+        if  (HASEXCEPTION())
+        {
+            goto ruleATTRIBUTE_INST_LEVELEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleATTRIBUTE_INST_LEVELEx; /* Prevent compiler warnings */
+    ruleATTRIBUTE_INST_LEVELEx: ;
+
+}
+// $ANTLR end ATTRIBUTE_INST_LEVEL
+
+//   Comes from: 2857:23: ( ':rr-priority' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ATTRIBUTE_RR_PRIORITY
+ *
+ * Looks to match the characters the constitute the token ATTRIBUTE_RR_PRIORITY
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mATTRIBUTE_RR_PRIORITY(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = ATTRIBUTE_RR_PRIORITY;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2857:23: ( ':rr-priority' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2857:25: ':rr-priority'
+    {
+        MATCHS(lit_70);
+        if  (HASEXCEPTION())
+        {
+            goto ruleATTRIBUTE_RR_PRIORITYEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleATTRIBUTE_RR_PRIORITYEx; /* Prevent compiler warnings */
+    ruleATTRIBUTE_RR_PRIORITYEx: ;
+
+}
+// $ANTLR end ATTRIBUTE_RR_PRIORITY
+
+//   Comes from: 2860:19: ( '&' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start AMPERSAND_TOK
+ *
+ * Looks to match the characters the constitute the token AMPERSAND_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mAMPERSAND_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = AMPERSAND_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2860:19: ( '&' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2860:21: '&'
+    {
+        MATCHC('&');
+        if  (HASEXCEPTION())
+        {
+            goto ruleAMPERSAND_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleAMPERSAND_TOKEx; /* Prevent compiler warnings */
+    ruleAMPERSAND_TOKEx: ;
+
+}
+// $ANTLR end AMPERSAND_TOK
+
+//   Comes from: 2861:19: ( 'and' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start AND_TOK
+ *
+ * Looks to match the characters the constitute the token AND_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mAND_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = AND_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2861:19: ( 'and' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2861:21: 'and'
+    {
+        MATCHS(lit_71);
+        if  (HASEXCEPTION())
+        {
+            goto ruleAND_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleAND_TOKEx; /* Prevent compiler warnings */
+    ruleAND_TOKEx: ;
+
+}
+// $ANTLR end AND_TOK
+
+//   Comes from: 2862:19: ( '@' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start AT_TOK
+ *
+ * Looks to match the characters the constitute the token AT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mAT_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = AT_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2862:19: ( '@' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2862:21: '@'
+    {
+        MATCHC('@');
+        if  (HASEXCEPTION())
+        {
+            goto ruleAT_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleAT_TOKEx; /* Prevent compiler warnings */
+    ruleAT_TOKEx: ;
+
+}
+// $ANTLR end AT_TOK
+
+//   Comes from: 2863:19: ( 'distinct' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DISTINCT_TOK
+ *
+ * Looks to match the characters the constitute the token DISTINCT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDISTINCT_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DISTINCT_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2863:19: ( 'distinct' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2863:21: 'distinct'
+    {
+        MATCHS(lit_72);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDISTINCT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDISTINCT_TOKEx; /* Prevent compiler warnings */
+    ruleDISTINCT_TOKEx: ;
+
+}
+// $ANTLR end DISTINCT_TOK
+
+//   Comes from: 2864:19: ( '/' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DIV_TOK
+ *
+ * Looks to match the characters the constitute the token DIV_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDIV_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DIV_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2864:19: ( '/' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2864:21: '/'
+    {
+        MATCHC('/');
+        if  (HASEXCEPTION())
+        {
+            goto ruleDIV_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDIV_TOKEx; /* Prevent compiler warnings */
+    ruleDIV_TOKEx: ;
+
+}
+// $ANTLR end DIV_TOK
+
+//   Comes from: 2865:19: ( '=' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start EQUAL_TOK
+ *
+ * Looks to match the characters the constitute the token EQUAL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mEQUAL_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = EQUAL_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2865:19: ( '=' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2865:21: '='
+    {
+        MATCHC('=');
+        if  (HASEXCEPTION())
+        {
+            goto ruleEQUAL_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleEQUAL_TOKEx; /* Prevent compiler warnings */
+    ruleEQUAL_TOKEx: ;
+
+}
+// $ANTLR end EQUAL_TOK
+
+//   Comes from: 2866:19: ( 'exists' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start EXISTS_TOK
+ *
+ * Looks to match the characters the constitute the token EXISTS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mEXISTS_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = EXISTS_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2866:19: ( 'exists' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2866:21: 'exists'
+    {
+        MATCHS(lit_73);
+        if  (HASEXCEPTION())
+        {
+            goto ruleEXISTS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleEXISTS_TOKEx; /* Prevent compiler warnings */
+    ruleEXISTS_TOKEx: ;
+
+}
+// $ANTLR end EXISTS_TOK
+
+//   Comes from: 2867:19: ( 'forall' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FORALL_TOK
+ *
+ * Looks to match the characters the constitute the token FORALL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFORALL_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FORALL_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2867:19: ( 'forall' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2867:21: 'forall'
+    {
+        MATCHS(lit_74);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFORALL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFORALL_TOKEx; /* Prevent compiler warnings */
+    ruleFORALL_TOKEx: ;
+
+}
+// $ANTLR end FORALL_TOK
+
+//   Comes from: 2868:19: ( '>' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start GREATER_THAN_TOK
+ *
+ * Looks to match the characters the constitute the token GREATER_THAN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mGREATER_THAN_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = GREATER_THAN_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2868:19: ( '>' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2868:21: '>'
+    {
+        MATCHC('>');
+        if  (HASEXCEPTION())
+        {
+            goto ruleGREATER_THAN_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleGREATER_THAN_TOKEx; /* Prevent compiler warnings */
+    ruleGREATER_THAN_TOKEx: ;
+
+}
+// $ANTLR end GREATER_THAN_TOK
+
+//   Comes from: 2869:25: ( '>=' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start GREATER_THAN_EQUAL_TOK
+ *
+ * Looks to match the characters the constitute the token GREATER_THAN_EQUAL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mGREATER_THAN_EQUAL_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = GREATER_THAN_EQUAL_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2869:25: ( '>=' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2869:27: '>='
+    {
+        MATCHS(lit_75);
+        if  (HASEXCEPTION())
+        {
+            goto ruleGREATER_THAN_EQUAL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleGREATER_THAN_EQUAL_TOKEx; /* Prevent compiler warnings */
+    ruleGREATER_THAN_EQUAL_TOKEx: ;
+
+}
+// $ANTLR end GREATER_THAN_EQUAL_TOK
+
+//   Comes from: 2870:19: ( '=>' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start IMPLIES_TOK
+ *
+ * Looks to match the characters the constitute the token IMPLIES_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mIMPLIES_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = IMPLIES_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2870:19: ( '=>' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2870:21: '=>'
+    {
+        MATCHS(lit_76);
+        if  (HASEXCEPTION())
+        {
+            goto ruleIMPLIES_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleIMPLIES_TOKEx; /* Prevent compiler warnings */
+    ruleIMPLIES_TOKEx: ;
+
+}
+// $ANTLR end IMPLIES_TOK
+
+//   Comes from: 2871:19: ( '<' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LESS_THAN_TOK
+ *
+ * Looks to match the characters the constitute the token LESS_THAN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLESS_THAN_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LESS_THAN_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2871:19: ( '<' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2871:21: '<'
+    {
+        MATCHC('<');
+        if  (HASEXCEPTION())
+        {
+            goto ruleLESS_THAN_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLESS_THAN_TOKEx; /* Prevent compiler warnings */
+    ruleLESS_THAN_TOKEx: ;
+
+}
+// $ANTLR end LESS_THAN_TOK
+
+//   Comes from: 2872:25: ( '<=' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LESS_THAN_EQUAL_TOK
+ *
+ * Looks to match the characters the constitute the token LESS_THAN_EQUAL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLESS_THAN_EQUAL_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LESS_THAN_EQUAL_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2872:25: ( '<=' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2872:27: '<='
+    {
+        MATCHS(lit_77);
+        if  (HASEXCEPTION())
+        {
+            goto ruleLESS_THAN_EQUAL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLESS_THAN_EQUAL_TOKEx; /* Prevent compiler warnings */
+    ruleLESS_THAN_EQUAL_TOKEx: ;
+
+}
+// $ANTLR end LESS_THAN_EQUAL_TOK
+
+//   Comes from: 2873:19: ( '-' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start MINUS_TOK
+ *
+ * Looks to match the characters the constitute the token MINUS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mMINUS_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = MINUS_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2873:19: ( '-' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2873:21: '-'
+    {
+        MATCHC('-');
+        if  (HASEXCEPTION())
+        {
+            goto ruleMINUS_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleMINUS_TOKEx; /* Prevent compiler warnings */
+    ruleMINUS_TOKEx: ;
+
+}
+// $ANTLR end MINUS_TOK
+
+//   Comes from: 2874:19: ( 'not' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start NOT_TOK
+ *
+ * Looks to match the characters the constitute the token NOT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mNOT_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = NOT_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2874:19: ( 'not' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2874:21: 'not'
+    {
+        MATCHS(lit_78);
+        if  (HASEXCEPTION())
+        {
+            goto ruleNOT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleNOT_TOKEx; /* Prevent compiler warnings */
+    ruleNOT_TOKEx: ;
+
+}
+// $ANTLR end NOT_TOK
+
+//   Comes from: 2875:19: ( 'or' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start OR_TOK
+ *
+ * Looks to match the characters the constitute the token OR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mOR_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = OR_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2875:19: ( 'or' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2875:21: 'or'
+    {
+        MATCHS(lit_79);
+        if  (HASEXCEPTION())
+        {
+            goto ruleOR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleOR_TOKEx; /* Prevent compiler warnings */
+    ruleOR_TOKEx: ;
+
+}
+// $ANTLR end OR_TOK
+
+//   Comes from: 2877:19: ( '+' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start PLUS_TOK
+ *
+ * Looks to match the characters the constitute the token PLUS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPLUS_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = PLUS_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2877:19: ( '+' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2877:21: '+'
+    {
+        MATCHC('+');
+        if  (HASEXCEPTION())
+        {
+            goto rulePLUS_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePLUS_TOKEx; /* Prevent compiler warnings */
+    rulePLUS_TOKEx: ;
+
+}
+// $ANTLR end PLUS_TOK
+
+//   Comes from: 2879:19: ( '*' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STAR_TOK
+ *
+ * Looks to match the characters the constitute the token STAR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTAR_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STAR_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2879:19: ( '*' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2879:21: '*'
+    {
+        MATCHC('*');
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTAR_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTAR_TOKEx; /* Prevent compiler warnings */
+    ruleSTAR_TOKEx: ;
+
+}
+// $ANTLR end STAR_TOK
+
+//   Comes from: 2881:19: ( 'xor' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start XOR_TOK
+ *
+ * Looks to match the characters the constitute the token XOR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mXOR_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = XOR_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2881:19: ( 'xor' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2881:21: 'xor'
+    {
+        MATCHS(lit_80);
+        if  (HASEXCEPTION())
+        {
+            goto ruleXOR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleXOR_TOKEx; /* Prevent compiler warnings */
+    ruleXOR_TOKEx: ;
+
+}
+// $ANTLR end XOR_TOK
+
+//   Comes from: 2884:15: ( 'divisible' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DIVISIBLE_TOK
+ *
+ * Looks to match the characters the constitute the token DIVISIBLE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDIVISIBLE_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DIVISIBLE_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2884:15: ( 'divisible' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2884:17: 'divisible'
+    {
+        MATCHS(lit_81);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDIVISIBLE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDIVISIBLE_TOKEx; /* Prevent compiler warnings */
+    ruleDIVISIBLE_TOKEx: ;
+
+}
+// $ANTLR end DIVISIBLE_TOK
+
+//   Comes from: 2886:12: ( 'bv2nat' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BV2NAT_TOK
+ *
+ * Looks to match the characters the constitute the token BV2NAT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBV2NAT_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BV2NAT_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2886:12: ( 'bv2nat' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2886:14: 'bv2nat'
+    {
+        MATCHS(lit_82);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBV2NAT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBV2NAT_TOKEx; /* Prevent compiler warnings */
+    ruleBV2NAT_TOKEx: ;
+
+}
+// $ANTLR end BV2NAT_TOK
+
+//   Comes from: 2887:12: ( 'int2bv' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start INT2BV_TOK
+ *
+ * Looks to match the characters the constitute the token INT2BV_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mINT2BV_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = INT2BV_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2887:12: ( 'int2bv' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2887:14: 'int2bv'
+    {
+        MATCHS(lit_83);
+        if  (HASEXCEPTION())
+        {
+            goto ruleINT2BV_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleINT2BV_TOKEx; /* Prevent compiler warnings */
+    ruleINT2BV_TOKEx: ;
+
+}
+// $ANTLR end INT2BV_TOK
+
+//   Comes from: 2889:13: ( 're.nostr' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start RENOSTR_TOK
+ *
+ * Looks to match the characters the constitute the token RENOSTR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mRENOSTR_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = RENOSTR_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2889:13: ( 're.nostr' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2889:15: 're.nostr'
+    {
+        MATCHS(lit_84);
+        if  (HASEXCEPTION())
+        {
+            goto ruleRENOSTR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleRENOSTR_TOKEx; /* Prevent compiler warnings */
+    ruleRENOSTR_TOKEx: ;
+
+}
+// $ANTLR end RENOSTR_TOK
+
+//   Comes from: 2890:15: ( 're.allchar' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start REALLCHAR_TOK
+ *
+ * Looks to match the characters the constitute the token REALLCHAR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mREALLCHAR_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = REALLCHAR_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2890:15: ( 're.allchar' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2890:17: 're.allchar'
+    {
+        MATCHS(lit_85);
+        if  (HASEXCEPTION())
+        {
+            goto ruleREALLCHAR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleREALLCHAR_TOKEx; /* Prevent compiler warnings */
+    ruleREALLCHAR_TOKEx: ;
+
+}
+// $ANTLR end REALLCHAR_TOK
+
+//   Comes from: 2892:12: ( 'dt.size' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DTSIZE_TOK
+ *
+ * Looks to match the characters the constitute the token DTSIZE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDTSIZE_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DTSIZE_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2892:12: ( 'dt.size' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2892:14: 'dt.size'
+    {
+        MATCHS(lit_86);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDTSIZE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDTSIZE_TOKEx; /* Prevent compiler warnings */
+    ruleDTSIZE_TOKEx: ;
+
+}
+// $ANTLR end DTSIZE_TOK
+
+//   Comes from: 2894:13: ( 'fmf.card' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FMFCARD_TOK
+ *
+ * Looks to match the characters the constitute the token FMFCARD_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFMFCARD_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FMFCARD_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2894:13: ( 'fmf.card' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2894:15: 'fmf.card'
+    {
+        MATCHS(lit_87);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFMFCARD_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFMFCARD_TOKEx; /* Prevent compiler warnings */
+    ruleFMFCARD_TOKEx: ;
+
+}
+// $ANTLR end FMFCARD_TOK
+
+//   Comes from: 2895:16: ( 'fmf.card.val' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FMFCARDVAL_TOK
+ *
+ * Looks to match the characters the constitute the token FMFCARDVAL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFMFCARDVAL_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FMFCARDVAL_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2895:16: ( 'fmf.card.val' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2895:18: 'fmf.card.val'
+    {
+        MATCHS(lit_88);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFMFCARDVAL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFMFCARDVAL_TOKEx; /* Prevent compiler warnings */
+    ruleFMFCARDVAL_TOKEx: ;
+
+}
+// $ANTLR end FMFCARDVAL_TOK
+
+//   Comes from: 2897:18: ( 'inst-closure' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start INST_CLOSURE_TOK
+ *
+ * Looks to match the characters the constitute the token INST_CLOSURE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mINST_CLOSURE_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = INST_CLOSURE_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2897:18: ( 'inst-closure' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2897:20: 'inst-closure'
+    {
+        MATCHS(lit_89);
+        if  (HASEXCEPTION())
+        {
+            goto ruleINST_CLOSURE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleINST_CLOSURE_TOKEx; /* Prevent compiler warnings */
+    ruleINST_CLOSURE_TOKEx: ;
+
+}
+// $ANTLR end INST_CLOSURE_TOK
+
+//   Comes from: 2899:13: ({...}? 'emptyset' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start EMPTYSET_TOK
+ *
+ * Looks to match the characters the constitute the token EMPTYSET_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mEMPTYSET_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = EMPTYSET_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2899:13: ({...}? 'emptyset' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2899:15: {...}? 'emptyset'
+    {
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS) ";
+                EXCEPTION->ruleName	 = (void *)"EMPTYSET_TOK";
+
+
+        }
+
+        MATCHS(lit_90);
+        if  (HASEXCEPTION())
+        {
+            goto ruleEMPTYSET_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleEMPTYSET_TOKEx; /* Prevent compiler warnings */
+    ruleEMPTYSET_TOKEx: ;
+
+}
+// $ANTLR end EMPTYSET_TOK
+
+//   Comes from: 2900:12: ({...}? 'univset' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start UNIVSET_TOK
+ *
+ * Looks to match the characters the constitute the token UNIVSET_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mUNIVSET_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = UNIVSET_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2900:12: ({...}? 'univset' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2900:14: {...}? 'univset'
+    {
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS) ";
+                EXCEPTION->ruleName	 = (void *)"UNIVSET_TOK";
+
+
+        }
+
+        MATCHS(lit_91);
+        if  (HASEXCEPTION())
+        {
+            goto ruleUNIVSET_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleUNIVSET_TOKEx; /* Prevent compiler warnings */
+    ruleUNIVSET_TOKEx: ;
+
+}
+// $ANTLR end UNIVSET_TOK
+
+//   Comes from: 2901:11: ({...}? 'sep.nil' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start NILREF_TOK
+ *
+ * Looks to match the characters the constitute the token NILREF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mNILREF_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = NILREF_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2901:11: ({...}? 'sep.nil' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2901:13: {...}? 'sep.nil'
+    {
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SEP) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SEP) ";
+                EXCEPTION->ruleName	 = (void *)"NILREF_TOK";
+
+
+        }
+
+        MATCHS(lit_92);
+        if  (HASEXCEPTION())
+        {
+            goto ruleNILREF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleNILREF_TOKEx; /* Prevent compiler warnings */
+    ruleNILREF_TOKEx: ;
+
+}
+// $ANTLR end NILREF_TOK
+
+//   Comes from: 2906:13: ( '+oo' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_PINF_TOK
+ *
+ * Looks to match the characters the constitute the token FP_PINF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_PINF_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_PINF_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2906:13: ( '+oo' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2906:15: '+oo'
+    {
+        MATCHS(lit_93);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_PINF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_PINF_TOKEx; /* Prevent compiler warnings */
+    ruleFP_PINF_TOKEx: ;
+
+}
+// $ANTLR end FP_PINF_TOK
+
+//   Comes from: 2907:13: ( '-oo' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_NINF_TOK
+ *
+ * Looks to match the characters the constitute the token FP_NINF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_NINF_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_NINF_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2907:13: ( '-oo' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2907:15: '-oo'
+    {
+        MATCHS(lit_94);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_NINF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_NINF_TOKEx; /* Prevent compiler warnings */
+    ruleFP_NINF_TOKEx: ;
+
+}
+// $ANTLR end FP_NINF_TOK
+
+//   Comes from: 2908:14: ( '+zero' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_PZERO_TOK
+ *
+ * Looks to match the characters the constitute the token FP_PZERO_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_PZERO_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_PZERO_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2908:14: ( '+zero' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2908:16: '+zero'
+    {
+        MATCHS(lit_95);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_PZERO_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_PZERO_TOKEx; /* Prevent compiler warnings */
+    ruleFP_PZERO_TOKEx: ;
+
+}
+// $ANTLR end FP_PZERO_TOK
+
+//   Comes from: 2909:14: ( '-zero' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_NZERO_TOK
+ *
+ * Looks to match the characters the constitute the token FP_NZERO_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_NZERO_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_NZERO_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2909:14: ( '-zero' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2909:16: '-zero'
+    {
+        MATCHS(lit_96);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_NZERO_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_NZERO_TOKEx; /* Prevent compiler warnings */
+    ruleFP_NZERO_TOKEx: ;
+
+}
+// $ANTLR end FP_NZERO_TOK
+
+//   Comes from: 2910:12: ( 'NaN' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_NAN_TOK
+ *
+ * Looks to match the characters the constitute the token FP_NAN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_NAN_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_NAN_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2910:12: ( 'NaN' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2910:14: 'NaN'
+    {
+        MATCHS(lit_97);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_NAN_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_NAN_TOKEx; /* Prevent compiler warnings */
+    ruleFP_NAN_TOKEx: ;
+
+}
+// $ANTLR end FP_NAN_TOK
+
+//   Comes from: 2912:14: ( 'to_fp' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_TO_FP_TOK
+ *
+ * Looks to match the characters the constitute the token FP_TO_FP_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_TO_FP_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_TO_FP_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2912:14: ( 'to_fp' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2912:16: 'to_fp'
+    {
+        MATCHS(lit_98);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_TO_FP_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_TO_FP_TOKEx; /* Prevent compiler warnings */
+    ruleFP_TO_FP_TOKEx: ;
+
+}
+// $ANTLR end FP_TO_FP_TOK
+
+//   Comes from: 2913:16: ( 'to_fp_bv' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_TO_FPBV_TOK
+ *
+ * Looks to match the characters the constitute the token FP_TO_FPBV_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_TO_FPBV_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_TO_FPBV_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2913:16: ( 'to_fp_bv' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2913:18: 'to_fp_bv'
+    {
+        MATCHS(lit_99);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_TO_FPBV_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_TO_FPBV_TOKEx; /* Prevent compiler warnings */
+    ruleFP_TO_FPBV_TOKEx: ;
+
+}
+// $ANTLR end FP_TO_FPBV_TOK
+
+//   Comes from: 2914:16: ( 'to_fp_fp' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_TO_FPFP_TOK
+ *
+ * Looks to match the characters the constitute the token FP_TO_FPFP_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_TO_FPFP_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_TO_FPFP_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2914:16: ( 'to_fp_fp' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2914:18: 'to_fp_fp'
+    {
+        MATCHS(lit_100);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_TO_FPFP_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_TO_FPFP_TOKEx; /* Prevent compiler warnings */
+    ruleFP_TO_FPFP_TOKEx: ;
+
+}
+// $ANTLR end FP_TO_FPFP_TOK
+
+//   Comes from: 2915:15: ( 'to_fp_real' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_TO_FPR_TOK
+ *
+ * Looks to match the characters the constitute the token FP_TO_FPR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_TO_FPR_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_TO_FPR_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2915:15: ( 'to_fp_real' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2915:17: 'to_fp_real'
+    {
+        MATCHS(lit_101);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_TO_FPR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_TO_FPR_TOKEx; /* Prevent compiler warnings */
+    ruleFP_TO_FPR_TOKEx: ;
+
+}
+// $ANTLR end FP_TO_FPR_TOK
+
+//   Comes from: 2916:15: ( 'to_fp_signed' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_TO_FPS_TOK
+ *
+ * Looks to match the characters the constitute the token FP_TO_FPS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_TO_FPS_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_TO_FPS_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2916:15: ( 'to_fp_signed' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2916:17: 'to_fp_signed'
+    {
+        MATCHS(lit_102);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_TO_FPS_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_TO_FPS_TOKEx; /* Prevent compiler warnings */
+    ruleFP_TO_FPS_TOKEx: ;
+
+}
+// $ANTLR end FP_TO_FPS_TOK
+
+//   Comes from: 2917:15: ( 'to_fp_unsigned' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_TO_FPU_TOK
+ *
+ * Looks to match the characters the constitute the token FP_TO_FPU_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_TO_FPU_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_TO_FPU_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2917:15: ( 'to_fp_unsigned' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2917:17: 'to_fp_unsigned'
+    {
+        MATCHS(lit_103);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_TO_FPU_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_TO_FPU_TOKEx; /* Prevent compiler warnings */
+    ruleFP_TO_FPU_TOKEx: ;
+
+}
+// $ANTLR end FP_TO_FPU_TOK
+
+//   Comes from: 2918:15: ( 'fp.to_ubv' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_TO_UBV_TOK
+ *
+ * Looks to match the characters the constitute the token FP_TO_UBV_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_TO_UBV_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_TO_UBV_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2918:15: ( 'fp.to_ubv' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2918:17: 'fp.to_ubv'
+    {
+        MATCHS(lit_104);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_TO_UBV_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_TO_UBV_TOKEx; /* Prevent compiler warnings */
+    ruleFP_TO_UBV_TOKEx: ;
+
+}
+// $ANTLR end FP_TO_UBV_TOK
+
+//   Comes from: 2919:15: ( 'fp.to_sbv' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_TO_SBV_TOK
+ *
+ * Looks to match the characters the constitute the token FP_TO_SBV_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_TO_SBV_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_TO_SBV_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2919:15: ( 'fp.to_sbv' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2919:17: 'fp.to_sbv'
+    {
+        MATCHS(lit_105);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_TO_SBV_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_TO_SBV_TOKEx; /* Prevent compiler warnings */
+    ruleFP_TO_SBV_TOKEx: ;
+
+}
+// $ANTLR end FP_TO_SBV_TOK
+
+//   Comes from: 2920:12: ( 'RNE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_RNE_TOK
+ *
+ * Looks to match the characters the constitute the token FP_RNE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_RNE_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_RNE_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2920:12: ( 'RNE' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2920:14: 'RNE'
+    {
+        MATCHS(lit_106);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_RNE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_RNE_TOKEx; /* Prevent compiler warnings */
+    ruleFP_RNE_TOKEx: ;
+
+}
+// $ANTLR end FP_RNE_TOK
+
+//   Comes from: 2921:12: ( 'RNA' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_RNA_TOK
+ *
+ * Looks to match the characters the constitute the token FP_RNA_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_RNA_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_RNA_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2921:12: ( 'RNA' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2921:14: 'RNA'
+    {
+        MATCHS(lit_107);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_RNA_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_RNA_TOKEx; /* Prevent compiler warnings */
+    ruleFP_RNA_TOKEx: ;
+
+}
+// $ANTLR end FP_RNA_TOK
+
+//   Comes from: 2922:12: ( 'RTP' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_RTP_TOK
+ *
+ * Looks to match the characters the constitute the token FP_RTP_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_RTP_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_RTP_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2922:12: ( 'RTP' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2922:14: 'RTP'
+    {
+        MATCHS(lit_108);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_RTP_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_RTP_TOKEx; /* Prevent compiler warnings */
+    ruleFP_RTP_TOKEx: ;
+
+}
+// $ANTLR end FP_RTP_TOK
+
+//   Comes from: 2923:12: ( 'RTN' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_RTN_TOK
+ *
+ * Looks to match the characters the constitute the token FP_RTN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_RTN_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_RTN_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2923:12: ( 'RTN' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2923:14: 'RTN'
+    {
+        MATCHS(lit_109);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_RTN_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_RTN_TOKEx; /* Prevent compiler warnings */
+    ruleFP_RTN_TOKEx: ;
+
+}
+// $ANTLR end FP_RTN_TOK
+
+//   Comes from: 2924:12: ( 'RTZ' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_RTZ_TOK
+ *
+ * Looks to match the characters the constitute the token FP_RTZ_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_RTZ_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_RTZ_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2924:12: ( 'RTZ' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2924:14: 'RTZ'
+    {
+        MATCHS(lit_110);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_RTZ_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_RTZ_TOKEx; /* Prevent compiler warnings */
+    ruleFP_RTZ_TOKEx: ;
+
+}
+// $ANTLR end FP_RTZ_TOK
+
+//   Comes from: 2925:17: ( 'roundNearestTiesToEven' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_RNE_FULL_TOK
+ *
+ * Looks to match the characters the constitute the token FP_RNE_FULL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_RNE_FULL_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_RNE_FULL_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2925:17: ( 'roundNearestTiesToEven' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2925:19: 'roundNearestTiesToEven'
+    {
+        MATCHS(lit_111);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_RNE_FULL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_RNE_FULL_TOKEx; /* Prevent compiler warnings */
+    ruleFP_RNE_FULL_TOKEx: ;
+
+}
+// $ANTLR end FP_RNE_FULL_TOK
+
+//   Comes from: 2926:17: ( 'roundNearestTiesToAway' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_RNA_FULL_TOK
+ *
+ * Looks to match the characters the constitute the token FP_RNA_FULL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_RNA_FULL_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_RNA_FULL_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2926:17: ( 'roundNearestTiesToAway' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2926:19: 'roundNearestTiesToAway'
+    {
+        MATCHS(lit_112);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_RNA_FULL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_RNA_FULL_TOKEx; /* Prevent compiler warnings */
+    ruleFP_RNA_FULL_TOKEx: ;
+
+}
+// $ANTLR end FP_RNA_FULL_TOK
+
+//   Comes from: 2927:17: ( 'roundTowardPositive' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_RTP_FULL_TOK
+ *
+ * Looks to match the characters the constitute the token FP_RTP_FULL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_RTP_FULL_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_RTP_FULL_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2927:17: ( 'roundTowardPositive' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2927:19: 'roundTowardPositive'
+    {
+        MATCHS(lit_113);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_RTP_FULL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_RTP_FULL_TOKEx; /* Prevent compiler warnings */
+    ruleFP_RTP_FULL_TOKEx: ;
+
+}
+// $ANTLR end FP_RTP_FULL_TOK
+
+//   Comes from: 2928:17: ( 'roundTowardNegative' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_RTN_FULL_TOK
+ *
+ * Looks to match the characters the constitute the token FP_RTN_FULL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_RTN_FULL_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_RTN_FULL_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2928:17: ( 'roundTowardNegative' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2928:19: 'roundTowardNegative'
+    {
+        MATCHS(lit_114);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_RTN_FULL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_RTN_FULL_TOKEx; /* Prevent compiler warnings */
+    ruleFP_RTN_FULL_TOKEx: ;
+
+}
+// $ANTLR end FP_RTN_FULL_TOK
+
+//   Comes from: 2929:17: ( 'roundTowardZero' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FP_RTZ_FULL_TOK
+ *
+ * Looks to match the characters the constitute the token FP_RTZ_FULL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFP_RTZ_FULL_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FP_RTZ_FULL_TOK;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2929:17: ( 'roundTowardZero' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2929:19: 'roundTowardZero'
+    {
+        MATCHS(lit_115);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFP_RTZ_FULL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFP_RTZ_FULL_TOKEx; /* Prevent compiler warnings */
+    ruleFP_RTZ_FULL_TOKEx: ;
+
+}
+// $ANTLR end FP_RTZ_FULL_TOK
+
+//   Comes from: 2946:3: ( '|' (~ ( '|' | '\\\\' ) )* '|' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start QUOTED_SYMBOL
+ *
+ * Looks to match the characters the constitute the token QUOTED_SYMBOL
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mQUOTED_SYMBOL(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = QUOTED_SYMBOL;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2946:3: ( '|' (~ ( '|' | '\\\\' ) )* '|' )
+    // ../../../../../../src/parser/smt2/Smt2.g:2946:5: '|' (~ ( '|' | '\\\\' ) )* '|'
+    {
+        MATCHC('|');
+        if  (HASEXCEPTION())
+        {
+            goto ruleQUOTED_SYMBOLEx;
+        }
+
+
+        // ../../../../../../src/parser/smt2/Smt2.g:2946:9: (~ ( '|' | '\\\\' ) )*
+
+        for (;;)
+        {
+            int alt1=2;
+            {
+               /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)
+                */
+                int LA1_0 = LA(1);
+                if ( (((LA1_0 >= 0x0000) && (LA1_0 <= '[')) || ((LA1_0 >= ']') && (LA1_0 <= '{')) || ((LA1_0 >= '}') && (LA1_0 <= 0xFFFF))))
+                {
+                    alt1=1;
+                }
+
+            }
+            switch (alt1)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:
+        	    {
+        	        if ( ((LA(1) >= 0x0000) && (LA(1) <= '[')) || ((LA(1) >= ']') && (LA(1) <= '{')) || ((LA(1) >= '}') && (LA(1) <= 0xFFFF)) )
+        	        {
+        	            CONSUME();
+        	        }
+        	        else
+        	        {
+        	            CONSTRUCTEX();
+        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	            LRECOVER();
+        	            goto ruleQUOTED_SYMBOLEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+        	default:
+        	    goto loop1;	/* break out of the loop */
+        	    break;
+            }
+        }
+        loop1: ; /* Jump out to here if this rule does not match */
+
+
+        MATCHC('|');
+        if  (HASEXCEPTION())
+        {
+            goto ruleQUOTED_SYMBOLEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleQUOTED_SYMBOLEx; /* Prevent compiler warnings */
+    ruleQUOTED_SYMBOLEx: ;
+
+}
+// $ANTLR end QUOTED_SYMBOL
+
+//   Comes from: 2942:3: ( '|' (~ ( '|' | '\\\\' ) )* )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start UNTERMINATED_QUOTED_SYMBOL
+ *
+ * Looks to match the characters the constitute the token UNTERMINATED_QUOTED_SYMBOL
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mUNTERMINATED_QUOTED_SYMBOL(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = UNTERMINATED_QUOTED_SYMBOL;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2942:3: ( '|' (~ ( '|' | '\\\\' ) )* )
+    // ../../../../../../src/parser/smt2/Smt2.g:2942:5: '|' (~ ( '|' | '\\\\' ) )*
+    {
+        MATCHC('|');
+        if  (HASEXCEPTION())
+        {
+            goto ruleUNTERMINATED_QUOTED_SYMBOLEx;
+        }
+
+
+        // ../../../../../../src/parser/smt2/Smt2.g:2942:9: (~ ( '|' | '\\\\' ) )*
+
+        for (;;)
+        {
+            int alt2=2;
+            {
+               /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)
+                */
+                int LA2_0 = LA(1);
+                if ( (((LA2_0 >= 0x0000) && (LA2_0 <= '[')) || ((LA2_0 >= ']') && (LA2_0 <= '{')) || ((LA2_0 >= '}') && (LA2_0 <= 0xFFFF))))
+                {
+                    alt2=1;
+                }
+
+            }
+            switch (alt2)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:
+        	    {
+        	        if ( ((LA(1) >= 0x0000) && (LA(1) <= '[')) || ((LA(1) >= ']') && (LA(1) <= '{')) || ((LA(1) >= '}') && (LA(1) <= 0xFFFF)) )
+        	        {
+        	            CONSUME();
+        	        }
+        	        else
+        	        {
+        	            CONSTRUCTEX();
+        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	            LRECOVER();
+        	            goto ruleUNTERMINATED_QUOTED_SYMBOLEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+        	default:
+        	    goto loop2;	/* break out of the loop */
+        	    break;
+            }
+        }
+        loop2: ; /* Jump out to here if this rule does not match */
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleUNTERMINATED_QUOTED_SYMBOLEx; /* Prevent compiler warnings */
+    ruleUNTERMINATED_QUOTED_SYMBOLEx: ;
+
+}
+// $ANTLR end UNTERMINATED_QUOTED_SYMBOL
+
+//   Comes from: 2954:3: ( ':' ( ALPHA | DIGIT | SYMBOL_CHAR )+ )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start KEYWORD
+ *
+ * Looks to match the characters the constitute the token KEYWORD
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mKEYWORD(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = KEYWORD;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2954:3: ( ':' ( ALPHA | DIGIT | SYMBOL_CHAR )+ )
+    // ../../../../../../src/parser/smt2/Smt2.g:2954:5: ':' ( ALPHA | DIGIT | SYMBOL_CHAR )+
+    {
+        MATCHC(':');
+        if  (HASEXCEPTION())
+        {
+            goto ruleKEYWORDEx;
+        }
+
+
+        // ../../../../../../src/parser/smt2/Smt2.g:2954:9: ( ALPHA | DIGIT | SYMBOL_CHAR )+
+        {
+            int cnt3=0;
+
+            for (;;)
+            {
+                int alt3=2;
+        	switch ( LA(1) )
+        	{
+        	case '!':
+        	case '$':
+        	case '%':
+        	case '&':
+        	case '*':
+        	case '+':
+        	case '-':
+        	case '.':
+        	case '/':
+        	case '0':
+        	case '1':
+        	case '2':
+        	case '3':
+        	case '4':
+        	case '5':
+        	case '6':
+        	case '7':
+        	case '8':
+        	case '9':
+        	case '<':
+        	case '=':
+        	case '>':
+        	case '?':
+        	case '@':
+        	case 'A':
+        	case 'B':
+        	case 'C':
+        	case 'D':
+        	case 'E':
+        	case 'F':
+        	case 'G':
+        	case 'H':
+        	case 'I':
+        	case 'J':
+        	case 'K':
+        	case 'L':
+        	case 'M':
+        	case 'N':
+        	case 'O':
+        	case 'P':
+        	case 'Q':
+        	case 'R':
+        	case 'S':
+        	case 'T':
+        	case 'U':
+        	case 'V':
+        	case 'W':
+        	case 'X':
+        	case 'Y':
+        	case 'Z':
+        	case '^':
+        	case '_':
+        	case 'a':
+        	case 'b':
+        	case 'c':
+        	case 'd':
+        	case 'e':
+        	case 'f':
+        	case 'g':
+        	case 'h':
+        	case 'i':
+        	case 'j':
+        	case 'k':
+        	case 'l':
+        	case 'm':
+        	case 'n':
+        	case 'o':
+        	case 'p':
+        	case 'q':
+        	case 'r':
+        	case 's':
+        	case 't':
+        	case 'u':
+        	case 'v':
+        	case 'w':
+        	case 'x':
+        	case 'y':
+        	case 'z':
+        	case '~':
+        		{
+        			alt3=1;
+        		}
+        	    break;
+
+        	}
+
+        	switch (alt3)
+        	{
+        	    case 1:
+        	        // ../../../../../../src/parser/smt2/Smt2.g:
+        	        {
+        	            if ( LA(1) == '!' || ((LA(1) >= '$') && (LA(1) <= '&')) || ((LA(1) >= '*') && (LA(1) <= '+')) || ((LA(1) >= '-') && (LA(1) <= '9')) || ((LA(1) >= '<') && (LA(1) <= 'Z')) || ((LA(1) >= '^') && (LA(1) <= '_')) || ((LA(1) >= 'a') && (LA(1) <= 'z')) || LA(1) == '~' )
+        	            {
+        	                CONSUME();
+        	            }
+        	            else
+        	            {
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	                LRECOVER();
+        	                goto ruleKEYWORDEx;
+        	            }
+
+
+        	        }
+        	        break;
+
+        	    default:
+
+        		if ( cnt3 >= 1 )
+        		{
+        		    goto loop3;
+        		}
+        		/* mismatchedSetEx()
+        		 */
+        		CONSTRUCTEX();
+        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        		goto ruleKEYWORDEx;
+        	}
+        	cnt3++;
+            }
+            loop3: ;	/* Jump to here if this rule does not match */
+        }
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleKEYWORDEx; /* Prevent compiler warnings */
+    ruleKEYWORDEx: ;
+
+}
+// $ANTLR end KEYWORD
+
+//   Comes from: 2964:3: ( ( ALPHA | SYMBOL_CHAR ) ( ALPHA | DIGIT | SYMBOL_CHAR )+ | ALPHA | SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SIMPLE_SYMBOL
+ *
+ * Looks to match the characters the constitute the token SIMPLE_SYMBOL
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSIMPLE_SYMBOL(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SIMPLE_SYMBOL;
+
+
+    {
+        //  ../../../../../../src/parser/smt2/Smt2.g:2964:3: ( ( ALPHA | SYMBOL_CHAR ) ( ALPHA | DIGIT | SYMBOL_CHAR )+ | ALPHA | SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE )
+
+        ANTLR3_UINT32 alt5;
+
+        alt5=3;
+
+        switch ( LA(1) )
+        {
+        case 'A':
+        case 'B':
+        case 'C':
+        case 'D':
+        case 'E':
+        case 'F':
+        case 'G':
+        case 'H':
+        case 'I':
+        case 'J':
+        case 'K':
+        case 'L':
+        case 'M':
+        case 'N':
+        case 'O':
+        case 'P':
+        case 'Q':
+        case 'R':
+        case 'S':
+        case 'T':
+        case 'U':
+        case 'V':
+        case 'W':
+        case 'X':
+        case 'Y':
+        case 'Z':
+        case 'a':
+        case 'b':
+        case 'c':
+        case 'd':
+        case 'e':
+        case 'f':
+        case 'g':
+        case 'h':
+        case 'i':
+        case 'j':
+        case 'k':
+        case 'l':
+        case 'm':
+        case 'n':
+        case 'o':
+        case 'p':
+        case 'q':
+        case 'r':
+        case 's':
+        case 't':
+        case 'u':
+        case 'v':
+        case 'w':
+        case 'x':
+        case 'y':
+        case 'z':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case '!':
+        		case '$':
+        		case '%':
+        		case '&':
+        		case '*':
+        		case '+':
+        		case '-':
+        		case '.':
+        		case '/':
+        		case '0':
+        		case '1':
+        		case '2':
+        		case '3':
+        		case '4':
+        		case '5':
+        		case '6':
+        		case '7':
+        		case '8':
+        		case '9':
+        		case '<':
+        		case '=':
+        		case '>':
+        		case '?':
+        		case '@':
+        		case 'A':
+        		case 'B':
+        		case 'C':
+        		case 'D':
+        		case 'E':
+        		case 'F':
+        		case 'G':
+        		case 'H':
+        		case 'I':
+        		case 'J':
+        		case 'K':
+        		case 'L':
+        		case 'M':
+        		case 'N':
+        		case 'O':
+        		case 'P':
+        		case 'Q':
+        		case 'R':
+        		case 'S':
+        		case 'T':
+        		case 'U':
+        		case 'V':
+        		case 'W':
+        		case 'X':
+        		case 'Y':
+        		case 'Z':
+        		case '^':
+        		case '_':
+        		case 'a':
+        		case 'b':
+        		case 'c':
+        		case 'd':
+        		case 'e':
+        		case 'f':
+        		case 'g':
+        		case 'h':
+        		case 'i':
+        		case 'j':
+        		case 'k':
+        		case 'l':
+        		case 'm':
+        		case 'n':
+        		case 'o':
+        		case 'p':
+        		case 'q':
+        		case 'r':
+        		case 's':
+        		case 't':
+        		case 'u':
+        		case 'v':
+        		case 'w':
+        		case 'x':
+        		case 'y':
+        		case 'z':
+        		case '~':
+        			{
+        				alt5=1;
+        			}
+        		    break;
+
+        		default:
+        		    alt5=2;
+        		}
+
+        	}
+            break;
+        case '$':
+        case '%':
+        case '&':
+        case '*':
+        case '+':
+        case '-':
+        case '.':
+        case '/':
+        case '<':
+        case '=':
+        case '>':
+        case '?':
+        case '@':
+        case '^':
+        case '~':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case '!':
+        		case '$':
+        		case '%':
+        		case '&':
+        		case '*':
+        		case '+':
+        		case '-':
+        		case '.':
+        		case '/':
+        		case '0':
+        		case '1':
+        		case '2':
+        		case '3':
+        		case '4':
+        		case '5':
+        		case '6':
+        		case '7':
+        		case '8':
+        		case '9':
+        		case '<':
+        		case '=':
+        		case '>':
+        		case '?':
+        		case '@':
+        		case 'A':
+        		case 'B':
+        		case 'C':
+        		case 'D':
+        		case 'E':
+        		case 'F':
+        		case 'G':
+        		case 'H':
+        		case 'I':
+        		case 'J':
+        		case 'K':
+        		case 'L':
+        		case 'M':
+        		case 'N':
+        		case 'O':
+        		case 'P':
+        		case 'Q':
+        		case 'R':
+        		case 'S':
+        		case 'T':
+        		case 'U':
+        		case 'V':
+        		case 'W':
+        		case 'X':
+        		case 'Y':
+        		case 'Z':
+        		case '^':
+        		case '_':
+        		case 'a':
+        		case 'b':
+        		case 'c':
+        		case 'd':
+        		case 'e':
+        		case 'f':
+        		case 'g':
+        		case 'h':
+        		case 'i':
+        		case 'j':
+        		case 'k':
+        		case 'l':
+        		case 'm':
+        		case 'n':
+        		case 'o':
+        		case 'p':
+        		case 'q':
+        		case 'r':
+        		case 's':
+        		case 't':
+        		case 'u':
+        		case 'v':
+        		case 'w':
+        		case 'x':
+        		case 'y':
+        		case 'z':
+        		case '~':
+        			{
+        				alt5=1;
+        			}
+        		    break;
+
+        		default:
+        		    alt5=3;
+        		}
+
+        	}
+            break;
+        case '!':
+        case '_':
+        	{
+        		alt5=1;
+        	}
+            break;
+
+        default:
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            EXCEPTION->message      = (void *)"";
+            EXCEPTION->decisionNum  = 5;
+            EXCEPTION->state        = 0;
+
+
+            goto ruleSIMPLE_SYMBOLEx;
+
+        }
+
+        switch (alt5)
+        {
+    	case 1:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:2964:5: ( ALPHA | SYMBOL_CHAR ) ( ALPHA | DIGIT | SYMBOL_CHAR )+
+    	    {
+    	        if ( LA(1) == '!' || ((LA(1) >= '$') && (LA(1) <= '&')) || ((LA(1) >= '*') && (LA(1) <= '+')) || ((LA(1) >= '-') && (LA(1) <= '/')) || ((LA(1) >= '<') && (LA(1) <= 'Z')) || ((LA(1) >= '^') && (LA(1) <= '_')) || ((LA(1) >= 'a') && (LA(1) <= 'z')) || LA(1) == '~' )
+    	        {
+    	            CONSUME();
+    	        }
+    	        else
+    	        {
+    	            CONSTRUCTEX();
+    	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+    	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+    	            LRECOVER();
+    	            goto ruleSIMPLE_SYMBOLEx;
+    	        }
+
+
+    	        // ../../../../../../src/parser/smt2/Smt2.g:2964:27: ( ALPHA | DIGIT | SYMBOL_CHAR )+
+    	        {
+    	            int cnt4=0;
+
+    	            for (;;)
+    	            {
+    	                int alt4=2;
+    	        	switch ( LA(1) )
+    	        	{
+    	        	case '!':
+    	        	case '$':
+    	        	case '%':
+    	        	case '&':
+    	        	case '*':
+    	        	case '+':
+    	        	case '-':
+    	        	case '.':
+    	        	case '/':
+    	        	case '0':
+    	        	case '1':
+    	        	case '2':
+    	        	case '3':
+    	        	case '4':
+    	        	case '5':
+    	        	case '6':
+    	        	case '7':
+    	        	case '8':
+    	        	case '9':
+    	        	case '<':
+    	        	case '=':
+    	        	case '>':
+    	        	case '?':
+    	        	case '@':
+    	        	case 'A':
+    	        	case 'B':
+    	        	case 'C':
+    	        	case 'D':
+    	        	case 'E':
+    	        	case 'F':
+    	        	case 'G':
+    	        	case 'H':
+    	        	case 'I':
+    	        	case 'J':
+    	        	case 'K':
+    	        	case 'L':
+    	        	case 'M':
+    	        	case 'N':
+    	        	case 'O':
+    	        	case 'P':
+    	        	case 'Q':
+    	        	case 'R':
+    	        	case 'S':
+    	        	case 'T':
+    	        	case 'U':
+    	        	case 'V':
+    	        	case 'W':
+    	        	case 'X':
+    	        	case 'Y':
+    	        	case 'Z':
+    	        	case '^':
+    	        	case '_':
+    	        	case 'a':
+    	        	case 'b':
+    	        	case 'c':
+    	        	case 'd':
+    	        	case 'e':
+    	        	case 'f':
+    	        	case 'g':
+    	        	case 'h':
+    	        	case 'i':
+    	        	case 'j':
+    	        	case 'k':
+    	        	case 'l':
+    	        	case 'm':
+    	        	case 'n':
+    	        	case 'o':
+    	        	case 'p':
+    	        	case 'q':
+    	        	case 'r':
+    	        	case 's':
+    	        	case 't':
+    	        	case 'u':
+    	        	case 'v':
+    	        	case 'w':
+    	        	case 'x':
+    	        	case 'y':
+    	        	case 'z':
+    	        	case '~':
+    	        		{
+    	        			alt4=1;
+    	        		}
+    	        	    break;
+
+    	        	}
+
+    	        	switch (alt4)
+    	        	{
+    	        	    case 1:
+    	        	        // ../../../../../../src/parser/smt2/Smt2.g:
+    	        	        {
+    	        	            if ( LA(1) == '!' || ((LA(1) >= '$') && (LA(1) <= '&')) || ((LA(1) >= '*') && (LA(1) <= '+')) || ((LA(1) >= '-') && (LA(1) <= '9')) || ((LA(1) >= '<') && (LA(1) <= 'Z')) || ((LA(1) >= '^') && (LA(1) <= '_')) || ((LA(1) >= 'a') && (LA(1) <= 'z')) || LA(1) == '~' )
+    	        	            {
+    	        	                CONSUME();
+    	        	            }
+    	        	            else
+    	        	            {
+    	        	                CONSTRUCTEX();
+    	        	                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+    	        	                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+    	        	                LRECOVER();
+    	        	                goto ruleSIMPLE_SYMBOLEx;
+    	        	            }
+
+
+    	        	        }
+    	        	        break;
+
+    	        	    default:
+
+    	        		if ( cnt4 >= 1 )
+    	        		{
+    	        		    goto loop4;
+    	        		}
+    	        		/* mismatchedSetEx()
+    	        		 */
+    	        		CONSTRUCTEX();
+    	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+    	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+    	        		goto ruleSIMPLE_SYMBOLEx;
+    	        	}
+    	        	cnt4++;
+    	            }
+    	            loop4: ;	/* Jump to here if this rule does not match */
+    	        }
+
+    	    }
+    	    break;
+    	case 2:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:2965:5: ALPHA
+    	    {
+    	        /* 2965:5: ALPHA */
+    	        mALPHA(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleSIMPLE_SYMBOLEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 3:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:2966:5: SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE
+    	    {
+    	        /* 2966:5: SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE */
+    	        mSYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleSIMPLE_SYMBOLEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+
+        }
+    }
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSIMPLE_SYMBOLEx; /* Prevent compiler warnings */
+    ruleSIMPLE_SYMBOLEx: ;
+
+}
+// $ANTLR end SIMPLE_SYMBOL
+
+//   Comes from: 2971:3: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start WHITESPACE
+ *
+ * Looks to match the characters the constitute the token WHITESPACE
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mWHITESPACE(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = WHITESPACE;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2971:3: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
+    // ../../../../../../src/parser/smt2/Smt2.g:2971:5: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
+    {
+        // ../../../../../../src/parser/smt2/Smt2.g:2971:5: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
+        {
+            int cnt6=0;
+
+            for (;;)
+            {
+                int alt6=2;
+        	switch ( LA(1) )
+        	{
+        	case '\t':
+        	case '\n':
+        	case '\f':
+        	case '\r':
+        	case ' ':
+        		{
+        			alt6=1;
+        		}
+        	    break;
+
+        	}
+
+        	switch (alt6)
+        	{
+        	    case 1:
+        	        // ../../../../../../src/parser/smt2/Smt2.g:
+        	        {
+        	            if ( ((LA(1) >= '\t') && (LA(1) <= '\n')) || ((LA(1) >= '\f') && (LA(1) <= '\r')) || LA(1) == ' ' )
+        	            {
+        	                CONSUME();
+        	            }
+        	            else
+        	            {
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	                LRECOVER();
+        	                goto ruleWHITESPACEEx;
+        	            }
+
+
+        	        }
+        	        break;
+
+        	    default:
+
+        		if ( cnt6 >= 1 )
+        		{
+        		    goto loop6;
+        		}
+        		/* mismatchedSetEx()
+        		 */
+        		CONSTRUCTEX();
+        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        		goto ruleWHITESPACEEx;
+        	}
+        	cnt6++;
+            }
+            loop6: ;	/* Jump to here if this rule does not match */
+        }
+
+        {
+             SKIP(); 
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleWHITESPACEEx; /* Prevent compiler warnings */
+    ruleWHITESPACEEx: ;
+
+}
+// $ANTLR end WHITESPACE
+
+//   Comes from: 2980:3: ( NUMERAL )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start INTEGER_LITERAL
+ *
+ * Looks to match the characters the constitute the token INTEGER_LITERAL
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mINTEGER_LITERAL(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = INTEGER_LITERAL;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2980:3: ( NUMERAL )
+    // ../../../../../../src/parser/smt2/Smt2.g:2980:5: NUMERAL
+    {
+        /* 2980:5: NUMERAL */
+        mNUMERAL(ctx );
+        if  (HASEXCEPTION())
+        {
+            goto ruleINTEGER_LITERALEx;
+        }
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleINTEGER_LITERALEx; /* Prevent compiler warnings */
+    ruleINTEGER_LITERALEx: ;
+
+}
+// $ANTLR end INTEGER_LITERAL
+
+//   Comes from: 2993:3: ( ( DIGIT )+ {...}?)
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start NUMERAL
+ *
+ * Looks to match the characters the constitute the token NUMERAL
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mNUMERAL(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+      char *start = (char*) GETCHARINDEX();
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:2993:3: ( ( DIGIT )+ {...}?)
+    // ../../../../../../src/parser/smt2/Smt2.g:2993:5: ( DIGIT )+ {...}?
+    {
+        // ../../../../../../src/parser/smt2/Smt2.g:2993:5: ( DIGIT )+
+        {
+            int cnt7=0;
+
+            for (;;)
+            {
+                int alt7=2;
+        	switch ( LA(1) )
+        	{
+        	case '0':
+        	case '1':
+        	case '2':
+        	case '3':
+        	case '4':
+        	case '5':
+        	case '6':
+        	case '7':
+        	case '8':
+        	case '9':
+        		{
+        			alt7=1;
+        		}
+        	    break;
+
+        	}
+
+        	switch (alt7)
+        	{
+        	    case 1:
+        	        // ../../../../../../src/parser/smt2/Smt2.g:
+        	        {
+        	            if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
+        	            {
+        	                CONSUME();
+        	            }
+        	            else
+        	            {
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	                LRECOVER();
+        	                goto ruleNUMERALEx;
+        	            }
+
+
+        	        }
+        	        break;
+
+        	    default:
+
+        		if ( cnt7 >= 1 )
+        		{
+        		    goto loop7;
+        		}
+        		/* mismatchedSetEx()
+        		 */
+        		CONSTRUCTEX();
+        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        		goto ruleNUMERALEx;
+        	}
+        	cnt7++;
+            }
+            loop7: ;	/* Jump to here if this rule does not match */
+        }
+
+        {
+             Debug("parser-extra") << "NUMERAL: "
+                   << (uintptr_t)start << ".." << GETCHARINDEX()
+                   << " strict? " << (bool)(PARSER_STATE->strictModeEnabled())
+                   << " ^0? " << (bool)(*start == '0')
+                   << " len>1? " << (bool)(start < (char*)(GETCHARINDEX() - 1))
+                   << std::endl; 
+        }
+
+
+        if ( !(( !PARSER_STATE->strictModeEnabled() ||
+              *start != '0' ||
+              start == (char*)(GETCHARINDEX() - 1) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" !PARSER_STATE->strictModeEnabled() ||\n      *start != '0' ||\n      start == (char*)(GETCHARINDEX() - 1) ";
+                EXCEPTION->ruleName	 = (void *)"NUMERAL";
+
+
+        }
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleNUMERALEx; /* Prevent compiler warnings */
+    ruleNUMERALEx: ;
+
+}
+// $ANTLR end NUMERAL
+
+//   Comes from: 3007:3: ( NUMERAL '.' ( DIGIT )+ )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DECIMAL_LITERAL
+ *
+ * Looks to match the characters the constitute the token DECIMAL_LITERAL
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDECIMAL_LITERAL(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DECIMAL_LITERAL;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:3007:3: ( NUMERAL '.' ( DIGIT )+ )
+    // ../../../../../../src/parser/smt2/Smt2.g:3007:5: NUMERAL '.' ( DIGIT )+
+    {
+        /* 3007:5: NUMERAL '.' ( DIGIT )+ */
+        mNUMERAL(ctx );
+        if  (HASEXCEPTION())
+        {
+            goto ruleDECIMAL_LITERALEx;
+        }
+
+
+
+        MATCHC('.');
+        if  (HASEXCEPTION())
+        {
+            goto ruleDECIMAL_LITERALEx;
+        }
+
+
+        // ../../../../../../src/parser/smt2/Smt2.g:3007:17: ( DIGIT )+
+        {
+            int cnt8=0;
+
+            for (;;)
+            {
+                int alt8=2;
+        	switch ( LA(1) )
+        	{
+        	case '0':
+        	case '1':
+        	case '2':
+        	case '3':
+        	case '4':
+        	case '5':
+        	case '6':
+        	case '7':
+        	case '8':
+        	case '9':
+        		{
+        			alt8=1;
+        		}
+        	    break;
+
+        	}
+
+        	switch (alt8)
+        	{
+        	    case 1:
+        	        // ../../../../../../src/parser/smt2/Smt2.g:
+        	        {
+        	            if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
+        	            {
+        	                CONSUME();
+        	            }
+        	            else
+        	            {
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	                LRECOVER();
+        	                goto ruleDECIMAL_LITERALEx;
+        	            }
+
+
+        	        }
+        	        break;
+
+        	    default:
+
+        		if ( cnt8 >= 1 )
+        		{
+        		    goto loop8;
+        		}
+        		/* mismatchedSetEx()
+        		 */
+        		CONSTRUCTEX();
+        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        		goto ruleDECIMAL_LITERALEx;
+        	}
+        	cnt8++;
+            }
+            loop8: ;	/* Jump to here if this rule does not match */
+        }
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDECIMAL_LITERALEx; /* Prevent compiler warnings */
+    ruleDECIMAL_LITERALEx: ;
+
+}
+// $ANTLR end DECIMAL_LITERAL
+
+//   Comes from: 3014:3: ( '#x' ( HEX_DIGIT )+ )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start HEX_LITERAL
+ *
+ * Looks to match the characters the constitute the token HEX_LITERAL
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mHEX_LITERAL(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = HEX_LITERAL;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:3014:3: ( '#x' ( HEX_DIGIT )+ )
+    // ../../../../../../src/parser/smt2/Smt2.g:3014:5: '#x' ( HEX_DIGIT )+
+    {
+        MATCHS(lit_116);
+        if  (HASEXCEPTION())
+        {
+            goto ruleHEX_LITERALEx;
+        }
+
+
+
+
+        // ../../../../../../src/parser/smt2/Smt2.g:3014:10: ( HEX_DIGIT )+
+        {
+            int cnt9=0;
+
+            for (;;)
+            {
+                int alt9=2;
+        	switch ( LA(1) )
+        	{
+        	case '0':
+        	case '1':
+        	case '2':
+        	case '3':
+        	case '4':
+        	case '5':
+        	case '6':
+        	case '7':
+        	case '8':
+        	case '9':
+        	case 'A':
+        	case 'B':
+        	case 'C':
+        	case 'D':
+        	case 'E':
+        	case 'F':
+        	case 'a':
+        	case 'b':
+        	case 'c':
+        	case 'd':
+        	case 'e':
+        	case 'f':
+        		{
+        			alt9=1;
+        		}
+        	    break;
+
+        	}
+
+        	switch (alt9)
+        	{
+        	    case 1:
+        	        // ../../../../../../src/parser/smt2/Smt2.g:
+        	        {
+        	            if ( ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'A') && (LA(1) <= 'F')) || ((LA(1) >= 'a') && (LA(1) <= 'f')) )
+        	            {
+        	                CONSUME();
+        	            }
+        	            else
+        	            {
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	                LRECOVER();
+        	                goto ruleHEX_LITERALEx;
+        	            }
+
+
+        	        }
+        	        break;
+
+        	    default:
+
+        		if ( cnt9 >= 1 )
+        		{
+        		    goto loop9;
+        		}
+        		/* mismatchedSetEx()
+        		 */
+        		CONSTRUCTEX();
+        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        		goto ruleHEX_LITERALEx;
+        	}
+        	cnt9++;
+            }
+            loop9: ;	/* Jump to here if this rule does not match */
+        }
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleHEX_LITERALEx; /* Prevent compiler warnings */
+    ruleHEX_LITERALEx: ;
+
+}
+// $ANTLR end HEX_LITERAL
+
+//   Comes from: 3021:3: ( '#b' ( '0' | '1' )+ )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BINARY_LITERAL
+ *
+ * Looks to match the characters the constitute the token BINARY_LITERAL
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBINARY_LITERAL(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BINARY_LITERAL;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:3021:3: ( '#b' ( '0' | '1' )+ )
+    // ../../../../../../src/parser/smt2/Smt2.g:3021:5: '#b' ( '0' | '1' )+
+    {
+        MATCHS(lit_117);
+        if  (HASEXCEPTION())
+        {
+            goto ruleBINARY_LITERALEx;
+        }
+
+
+
+
+        // ../../../../../../src/parser/smt2/Smt2.g:3021:10: ( '0' | '1' )+
+        {
+            int cnt10=0;
+
+            for (;;)
+            {
+                int alt10=2;
+        	switch ( LA(1) )
+        	{
+        	case '0':
+        	case '1':
+        		{
+        			alt10=1;
+        		}
+        	    break;
+
+        	}
+
+        	switch (alt10)
+        	{
+        	    case 1:
+        	        // ../../../../../../src/parser/smt2/Smt2.g:
+        	        {
+        	            if ( ((LA(1) >= '0') && (LA(1) <= '1')) )
+        	            {
+        	                CONSUME();
+        	            }
+        	            else
+        	            {
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	                LRECOVER();
+        	                goto ruleBINARY_LITERALEx;
+        	            }
+
+
+        	        }
+        	        break;
+
+        	    default:
+
+        		if ( cnt10 >= 1 )
+        		{
+        		    goto loop10;
+        		}
+        		/* mismatchedSetEx()
+        		 */
+        		CONSTRUCTEX();
+        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        		goto ruleBINARY_LITERALEx;
+        	}
+        	cnt10++;
+            }
+            loop10: ;	/* Jump to here if this rule does not match */
+        }
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBINARY_LITERALEx; /* Prevent compiler warnings */
+    ruleBINARY_LITERALEx: ;
+
+}
+// $ANTLR end BINARY_LITERAL
+
+//   Comes from: 3036:3: ({...}? => '\"' ( '\\\\' . |~ ( '\\\\' | '\"' ) )* '\"' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STRING_LITERAL_2_0
+ *
+ * Looks to match the characters the constitute the token STRING_LITERAL_2_0
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTRING_LITERAL_2_0(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STRING_LITERAL_2_0;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:3036:3: ({...}? => '\"' ( '\\\\' . |~ ( '\\\\' | '\"' ) )* '\"' )
+    // ../../../../../../src/parser/smt2/Smt2.g:3036:5: {...}? => '\"' ( '\\\\' . |~ ( '\\\\' | '\"' ) )* '\"'
+    {
+        if ( !(( PARSER_STATE->v2_0() )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->v2_0() ";
+                EXCEPTION->ruleName	 = (void *)"STRING_LITERAL_2_0";
+
+
+        }
+
+        MATCHC('"');
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_LITERAL_2_0Ex;
+        }
+
+
+        // ../../../../../../src/parser/smt2/Smt2.g:3037:9: ( '\\\\' . |~ ( '\\\\' | '\"' ) )*
+
+        for (;;)
+        {
+            int alt11=3;
+            {
+               /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)
+                */
+                int LA11_0 = LA(1);
+                if ( (LA11_0 == '\\'))
+                {
+                    alt11=1;
+                }
+                else if ( (((LA11_0 >= 0x0000) && (LA11_0 <= '!')) || ((LA11_0 >= '#') && (LA11_0 <= '[')) || ((LA11_0 >= ']') && (LA11_0 <= 0xFFFF))))
+                {
+                    alt11=2;
+                }
+
+            }
+            switch (alt11)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:3037:10: '\\\\' .
+        	    {
+        	        MATCHC('\\');
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleSTRING_LITERAL_2_0Ex;
+        	        }
+
+
+        	        MATCHANY();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleSTRING_LITERAL_2_0Ex;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:3037:19: ~ ( '\\\\' | '\"' )
+        	    {
+        	        if ( ((LA(1) >= 0x0000) && (LA(1) <= '!')) || ((LA(1) >= '#') && (LA(1) <= '[')) || ((LA(1) >= ']') && (LA(1) <= 0xFFFF)) )
+        	        {
+        	            CONSUME();
+        	        }
+        	        else
+        	        {
+        	            CONSTRUCTEX();
+        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	            LRECOVER();
+        	            goto ruleSTRING_LITERAL_2_0Ex;
+        	        }
+
+
+        	    }
+        	    break;
+
+        	default:
+        	    goto loop11;	/* break out of the loop */
+        	    break;
+            }
+        }
+        loop11: ; /* Jump out to here if this rule does not match */
+
+
+        MATCHC('"');
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_LITERAL_2_0Ex;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTRING_LITERAL_2_0Ex; /* Prevent compiler warnings */
+    ruleSTRING_LITERAL_2_0Ex: ;
+
+}
+// $ANTLR end STRING_LITERAL_2_0
+
+//   Comes from: 3050:3: ({...}? => '\"' (~ ( '\"' ) | '\"\"' )* '\"' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start STRING_LITERAL_2_5
+ *
+ * Looks to match the characters the constitute the token STRING_LITERAL_2_5
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSTRING_LITERAL_2_5(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = STRING_LITERAL_2_5;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:3050:3: ({...}? => '\"' (~ ( '\"' ) | '\"\"' )* '\"' )
+    // ../../../../../../src/parser/smt2/Smt2.g:3050:5: {...}? => '\"' (~ ( '\"' ) | '\"\"' )* '\"'
+    {
+        if ( !(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->v2_5() || PARSER_STATE->sygus() ";
+                EXCEPTION->ruleName	 = (void *)"STRING_LITERAL_2_5";
+
+
+        }
+
+        MATCHC('"');
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_LITERAL_2_5Ex;
+        }
+
+
+        // ../../../../../../src/parser/smt2/Smt2.g:3051:9: (~ ( '\"' ) | '\"\"' )*
+
+        for (;;)
+        {
+            int alt12=3;
+            {
+               /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)
+                */
+                int LA12_0 = LA(1);
+                if ( (LA12_0 == '"'))
+                {
+                    switch ( LA(2) )
+                    {
+                    case '"':
+                    	{
+                    		alt12=2;
+                    	}
+                        break;
+
+                    }
+
+                }
+                else if ( (((LA12_0 >= 0x0000) && (LA12_0 <= '!')) || ((LA12_0 >= '#') && (LA12_0 <= 0xFFFF))))
+                {
+                    alt12=1;
+                }
+
+            }
+            switch (alt12)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:3051:10: ~ ( '\"' )
+        	    {
+        	        if ( ((LA(1) >= 0x0000) && (LA(1) <= '!')) || ((LA(1) >= '#') && (LA(1) <= 0xFFFF)) )
+        	        {
+        	            CONSUME();
+        	        }
+        	        else
+        	        {
+        	            CONSTRUCTEX();
+        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	            LRECOVER();
+        	            goto ruleSTRING_LITERAL_2_5Ex;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:3051:19: '\"\"'
+        	    {
+        	        MATCHS(lit_118);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleSTRING_LITERAL_2_5Ex;
+        	        }
+
+
+
+
+        	    }
+        	    break;
+
+        	default:
+        	    goto loop12;	/* break out of the loop */
+        	    break;
+            }
+        }
+        loop12: ; /* Jump out to here if this rule does not match */
+
+
+        MATCHC('"');
+        if  (HASEXCEPTION())
+        {
+            goto ruleSTRING_LITERAL_2_5Ex;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSTRING_LITERAL_2_5Ex; /* Prevent compiler warnings */
+    ruleSTRING_LITERAL_2_5Ex: ;
+
+}
+// $ANTLR end STRING_LITERAL_2_5
+
+//   Comes from: 3053:2: ({...}? => '\"' ( ALPHA | DIGIT )* '\"' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SYGUS_QUOTED_LITERAL
+ *
+ * Looks to match the characters the constitute the token SYGUS_QUOTED_LITERAL
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSYGUS_QUOTED_LITERAL(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SYGUS_QUOTED_LITERAL;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:3053:2: ({...}? => '\"' ( ALPHA | DIGIT )* '\"' )
+    // ../../../../../../src/parser/smt2/Smt2.g:3053:4: {...}? => '\"' ( ALPHA | DIGIT )* '\"'
+    {
+        if ( !(( PARSER_STATE->sygus() )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->sygus() ";
+                EXCEPTION->ruleName	 = (void *)"SYGUS_QUOTED_LITERAL";
+
+
+        }
+
+        MATCHC('"');
+        if  (HASEXCEPTION())
+        {
+            goto ruleSYGUS_QUOTED_LITERALEx;
+        }
+
+
+        // ../../../../../../src/parser/smt2/Smt2.g:3054:8: ( ALPHA | DIGIT )*
+
+        for (;;)
+        {
+            int alt13=2;
+            switch ( LA(1) )
+            {
+            case '0':
+            case '1':
+            case '2':
+            case '3':
+            case '4':
+            case '5':
+            case '6':
+            case '7':
+            case '8':
+            case '9':
+            case 'A':
+            case 'B':
+            case 'C':
+            case 'D':
+            case 'E':
+            case 'F':
+            case 'G':
+            case 'H':
+            case 'I':
+            case 'J':
+            case 'K':
+            case 'L':
+            case 'M':
+            case 'N':
+            case 'O':
+            case 'P':
+            case 'Q':
+            case 'R':
+            case 'S':
+            case 'T':
+            case 'U':
+            case 'V':
+            case 'W':
+            case 'X':
+            case 'Y':
+            case 'Z':
+            case 'a':
+            case 'b':
+            case 'c':
+            case 'd':
+            case 'e':
+            case 'f':
+            case 'g':
+            case 'h':
+            case 'i':
+            case 'j':
+            case 'k':
+            case 'l':
+            case 'm':
+            case 'n':
+            case 'o':
+            case 'p':
+            case 'q':
+            case 'r':
+            case 's':
+            case 't':
+            case 'u':
+            case 'v':
+            case 'w':
+            case 'x':
+            case 'y':
+            case 'z':
+            	{
+            		alt13=1;
+            	}
+                break;
+
+            }
+
+            switch (alt13)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:
+        	    {
+        	        if ( ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'A') && (LA(1) <= 'Z')) || ((LA(1) >= 'a') && (LA(1) <= 'z')) )
+        	        {
+        	            CONSUME();
+        	        }
+        	        else
+        	        {
+        	            CONSTRUCTEX();
+        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	            LRECOVER();
+        	            goto ruleSYGUS_QUOTED_LITERALEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+        	default:
+        	    goto loop13;	/* break out of the loop */
+        	    break;
+            }
+        }
+        loop13: ; /* Jump out to here if this rule does not match */
+
+
+        MATCHC('"');
+        if  (HASEXCEPTION())
+        {
+            goto ruleSYGUS_QUOTED_LITERALEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSYGUS_QUOTED_LITERALEx; /* Prevent compiler warnings */
+    ruleSYGUS_QUOTED_LITERALEx: ;
+
+}
+// $ANTLR end SYGUS_QUOTED_LITERAL
+
+//   Comes from: 3061:3: ( ';' (~ ( '\\n' | '\\r' ) )* )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start COMMENT
+ *
+ * Looks to match the characters the constitute the token COMMENT
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCOMMENT(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = COMMENT;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:3061:3: ( ';' (~ ( '\\n' | '\\r' ) )* )
+    // ../../../../../../src/parser/smt2/Smt2.g:3061:5: ';' (~ ( '\\n' | '\\r' ) )*
+    {
+        MATCHC(';');
+        if  (HASEXCEPTION())
+        {
+            goto ruleCOMMENTEx;
+        }
+
+
+        // ../../../../../../src/parser/smt2/Smt2.g:3061:9: (~ ( '\\n' | '\\r' ) )*
+
+        for (;;)
+        {
+            int alt14=2;
+            {
+               /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)
+                */
+                int LA14_0 = LA(1);
+                if ( (((LA14_0 >= 0x0000) && (LA14_0 <= '\t')) || ((LA14_0 >= 0x000B) && (LA14_0 <= '\f')) || ((LA14_0 >= 0x000E) && (LA14_0 <= 0xFFFF))))
+                {
+                    alt14=1;
+                }
+
+            }
+            switch (alt14)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:
+        	    {
+        	        if ( ((LA(1) >= 0x0000) && (LA(1) <= '\t')) || ((LA(1) >= 0x000B) && (LA(1) <= '\f')) || ((LA(1) >= 0x000E) && (LA(1) <= 0xFFFF)) )
+        	        {
+        	            CONSUME();
+        	        }
+        	        else
+        	        {
+        	            CONSTRUCTEX();
+        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	            LRECOVER();
+        	            goto ruleCOMMENTEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+        	default:
+        	    goto loop14;	/* break out of the loop */
+        	    break;
+            }
+        }
+        loop14: ; /* Jump out to here if this rule does not match */
+
+
+        {
+             SKIP(); 
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCOMMENTEx; /* Prevent compiler warnings */
+    ruleCOMMENTEx: ;
+
+}
+// $ANTLR end COMMENT
+
+//   Comes from: 3070:3: ( 'a' .. 'z' | 'A' .. 'Z' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ALPHA
+ *
+ * Looks to match the characters the constitute the token ALPHA
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mALPHA(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:3070:3: ( 'a' .. 'z' | 'A' .. 'Z' )
+    // ../../../../../../src/parser/smt2/Smt2.g:
+    {
+        if ( ((LA(1) >= 'A') && (LA(1) <= 'Z')) || ((LA(1) >= 'a') && (LA(1) <= 'z')) )
+        {
+            CONSUME();
+        }
+        else
+        {
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+            LRECOVER();
+            goto ruleALPHAEx;
+        }
+
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleALPHAEx; /* Prevent compiler warnings */
+    ruleALPHAEx: ;
+
+}
+// $ANTLR end ALPHA
+
+//   Comes from: 3076:16: ( '0' .. '9' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DIGIT
+ *
+ * Looks to match the characters the constitute the token DIGIT
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDIGIT(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:3076:16: ( '0' .. '9' )
+    // ../../../../../../src/parser/smt2/Smt2.g:
+    {
+        if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
+        {
+            CONSUME();
+        }
+        else
+        {
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+            LRECOVER();
+            goto ruleDIGITEx;
+        }
+
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleDIGITEx; /* Prevent compiler warnings */
+    ruleDIGITEx: ;
+
+}
+// $ANTLR end DIGIT
+
+//   Comes from: 3075:20: ( DIGIT | 'a' .. 'f' | 'A' .. 'F' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start HEX_DIGIT
+ *
+ * Looks to match the characters the constitute the token HEX_DIGIT
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mHEX_DIGIT(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:3075:20: ( DIGIT | 'a' .. 'f' | 'A' .. 'F' )
+    // ../../../../../../src/parser/smt2/Smt2.g:
+    {
+        if ( ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'A') && (LA(1) <= 'F')) || ((LA(1) >= 'a') && (LA(1) <= 'f')) )
+        {
+            CONSUME();
+        }
+        else
+        {
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+            LRECOVER();
+            goto ruleHEX_DIGITEx;
+        }
+
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleHEX_DIGITEx; /* Prevent compiler warnings */
+    ruleHEX_DIGITEx: ;
+
+}
+// $ANTLR end HEX_DIGIT
+
+//   Comes from: 3086:3: ( '+' | '-' | '/' | '*' | '=' | '%' | '?' | '.' | '$' | '~' | '&' | '^' | '<' | '>' | '@' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE
+ *
+ * Looks to match the characters the constitute the token SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:3086:3: ( '+' | '-' | '/' | '*' | '=' | '%' | '?' | '.' | '$' | '~' | '&' | '^' | '<' | '>' | '@' )
+    // ../../../../../../src/parser/smt2/Smt2.g:
+    {
+        if ( ((LA(1) >= '$') && (LA(1) <= '&')) || ((LA(1) >= '*') && (LA(1) <= '+')) || ((LA(1) >= '-') && (LA(1) <= '/')) || ((LA(1) >= '<') && (LA(1) <= '@')) || LA(1) == '^' || LA(1) == '~' )
+        {
+            CONSUME();
+        }
+        else
+        {
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+            LRECOVER();
+            goto ruleSYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTEEx;
+        }
+
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleSYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTEEx; /* Prevent compiler warnings */
+    ruleSYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTEEx: ;
+
+}
+// $ANTLR end SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE
+
+//   Comes from: 3093:3: ( SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE | '_' | '!' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SYMBOL_CHAR
+ *
+ * Looks to match the characters the constitute the token SYMBOL_CHAR
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSYMBOL_CHAR(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/smt2/Smt2.g:3093:3: ( SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE | '_' | '!' )
+    // ../../../../../../src/parser/smt2/Smt2.g:
+    {
+        if ( LA(1) == '!' || ((LA(1) >= '$') && (LA(1) <= '&')) || ((LA(1) >= '*') && (LA(1) <= '+')) || ((LA(1) >= '-') && (LA(1) <= '/')) || ((LA(1) >= '<') && (LA(1) <= '@')) || ((LA(1) >= '^') && (LA(1) <= '_')) || LA(1) == '~' )
+        {
+            CONSUME();
+        }
+        else
+        {
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+            LRECOVER();
+            goto ruleSYMBOL_CHAREx;
+        }
+
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleSYMBOL_CHAREx; /* Prevent compiler warnings */
+    ruleSYMBOL_CHAREx: ;
+
+}
+// $ANTLR end SYMBOL_CHAR
+
+/** This is the entry point in to the lexer from an object that
+ *  wants to generate the next token, such as a pCOMMON_TOKEN_STREAM
+ */
+static void
+mTokens(pSmt2Lexer ctx)
+{
+    {
+        //  ../../../../../../src/parser/smt2/Smt2.g:1:8: ( T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | ITE_TOK | LET_TOK | ATTRIBUTE_TOK | LPAREN_TOK | RPAREN_TOK | INDEX_TOK | SET_LOGIC_T [...]
+
+        ANTLR3_UINT32 alt15;
+
+        alt15=142;
+
+        alt15 = cdfa15.predict(ctx, RECOGNIZER, ISTREAM, &cdfa15);
+        if  (HASEXCEPTION())
+        {
+            goto ruleTokensEx;
+        }
+
+        switch (alt15)
+        {
+    	case 1:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:10: T__145
+    	    {
+    	        /* 1:10: T__145 */
+    	        mT__145(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 2:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:17: T__146
+    	    {
+    	        /* 1:17: T__146 */
+    	        mT__146(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 3:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:24: T__147
+    	    {
+    	        /* 1:24: T__147 */
+    	        mT__147(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 4:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:31: T__148
+    	    {
+    	        /* 1:31: T__148 */
+    	        mT__148(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 5:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:38: T__149
+    	    {
+    	        /* 1:38: T__149 */
+    	        mT__149(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 6:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:45: T__150
+    	    {
+    	        /* 1:45: T__150 */
+    	        mT__150(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 7:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:52: T__151
+    	    {
+    	        /* 1:52: T__151 */
+    	        mT__151(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 8:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:59: ASSERT_TOK
+    	    {
+    	        /* 1:59: ASSERT_TOK */
+    	        mASSERT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 9:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:70: CHECKSAT_TOK
+    	    {
+    	        /* 1:70: CHECKSAT_TOK */
+    	        mCHECKSAT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 10:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:83: DECLARE_FUN_TOK
+    	    {
+    	        /* 1:83: DECLARE_FUN_TOK */
+    	        mDECLARE_FUN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 11:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:99: DECLARE_SORT_TOK
+    	    {
+    	        /* 1:99: DECLARE_SORT_TOK */
+    	        mDECLARE_SORT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 12:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:116: DEFINE_FUN_TOK
+    	    {
+    	        /* 1:116: DEFINE_FUN_TOK */
+    	        mDEFINE_FUN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 13:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:131: DEFINE_FUN_REC_TOK
+    	    {
+    	        /* 1:131: DEFINE_FUN_REC_TOK */
+    	        mDEFINE_FUN_REC_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 14:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:150: DEFINE_FUNS_REC_TOK
+    	    {
+    	        /* 1:150: DEFINE_FUNS_REC_TOK */
+    	        mDEFINE_FUNS_REC_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 15:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:170: DEFINE_SORT_TOK
+    	    {
+    	        /* 1:170: DEFINE_SORT_TOK */
+    	        mDEFINE_SORT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 16:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:186: GET_VALUE_TOK
+    	    {
+    	        /* 1:186: GET_VALUE_TOK */
+    	        mGET_VALUE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 17:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:200: GET_ASSIGNMENT_TOK
+    	    {
+    	        /* 1:200: GET_ASSIGNMENT_TOK */
+    	        mGET_ASSIGNMENT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 18:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:219: GET_ASSERTIONS_TOK
+    	    {
+    	        /* 1:219: GET_ASSERTIONS_TOK */
+    	        mGET_ASSERTIONS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 19:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:238: GET_PROOF_TOK
+    	    {
+    	        /* 1:238: GET_PROOF_TOK */
+    	        mGET_PROOF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 20:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:252: GET_UNSAT_CORE_TOK
+    	    {
+    	        /* 1:252: GET_UNSAT_CORE_TOK */
+    	        mGET_UNSAT_CORE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 21:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:271: EXIT_TOK
+    	    {
+    	        /* 1:271: EXIT_TOK */
+    	        mEXIT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 22:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:280: RESET_TOK
+    	    {
+    	        /* 1:280: RESET_TOK */
+    	        mRESET_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 23:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:290: RESET_ASSERTIONS_TOK
+    	    {
+    	        /* 1:290: RESET_ASSERTIONS_TOK */
+    	        mRESET_ASSERTIONS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 24:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:311: ITE_TOK
+    	    {
+    	        /* 1:311: ITE_TOK */
+    	        mITE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 25:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:319: LET_TOK
+    	    {
+    	        /* 1:319: LET_TOK */
+    	        mLET_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 26:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:327: ATTRIBUTE_TOK
+    	    {
+    	        /* 1:327: ATTRIBUTE_TOK */
+    	        mATTRIBUTE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 27:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:341: LPAREN_TOK
+    	    {
+    	        /* 1:341: LPAREN_TOK */
+    	        mLPAREN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 28:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:352: RPAREN_TOK
+    	    {
+    	        /* 1:352: RPAREN_TOK */
+    	        mRPAREN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 29:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:363: INDEX_TOK
+    	    {
+    	        /* 1:363: INDEX_TOK */
+    	        mINDEX_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 30:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:373: SET_LOGIC_TOK
+    	    {
+    	        /* 1:373: SET_LOGIC_TOK */
+    	        mSET_LOGIC_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 31:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:387: SET_INFO_TOK
+    	    {
+    	        /* 1:387: SET_INFO_TOK */
+    	        mSET_INFO_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 32:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:400: META_INFO_TOK
+    	    {
+    	        /* 1:400: META_INFO_TOK */
+    	        mMETA_INFO_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 33:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:414: GET_INFO_TOK
+    	    {
+    	        /* 1:414: GET_INFO_TOK */
+    	        mGET_INFO_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 34:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:427: SET_OPTION_TOK
+    	    {
+    	        /* 1:427: SET_OPTION_TOK */
+    	        mSET_OPTION_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 35:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:442: GET_OPTION_TOK
+    	    {
+    	        /* 1:442: GET_OPTION_TOK */
+    	        mGET_OPTION_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 36:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:457: PUSH_TOK
+    	    {
+    	        /* 1:457: PUSH_TOK */
+    	        mPUSH_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 37:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:466: POP_TOK
+    	    {
+    	        /* 1:466: POP_TOK */
+    	        mPOP_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 38:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:474: AS_TOK
+    	    {
+    	        /* 1:474: AS_TOK */
+    	        mAS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 39:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:481: CONST_TOK
+    	    {
+    	        /* 1:481: CONST_TOK */
+    	        mCONST_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 40:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:491: DECLARE_DATATYPES_TOK
+    	    {
+    	        /* 1:491: DECLARE_DATATYPES_TOK */
+    	        mDECLARE_DATATYPES_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 41:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:513: DECLARE_CODATATYPES_TOK
+    	    {
+    	        /* 1:513: DECLARE_CODATATYPES_TOK */
+    	        mDECLARE_CODATATYPES_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 42:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:537: GET_MODEL_TOK
+    	    {
+    	        /* 1:537: GET_MODEL_TOK */
+    	        mGET_MODEL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 43:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:551: ECHO_TOK
+    	    {
+    	        /* 1:551: ECHO_TOK */
+    	        mECHO_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 44:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:560: REWRITE_RULE_TOK
+    	    {
+    	        /* 1:560: REWRITE_RULE_TOK */
+    	        mREWRITE_RULE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 45:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:577: REDUCTION_RULE_TOK
+    	    {
+    	        /* 1:577: REDUCTION_RULE_TOK */
+    	        mREDUCTION_RULE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 46:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:596: PROPAGATION_RULE_TOK
+    	    {
+    	        /* 1:596: PROPAGATION_RULE_TOK */
+    	        mPROPAGATION_RULE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 47:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:617: DECLARE_SORTS_TOK
+    	    {
+    	        /* 1:617: DECLARE_SORTS_TOK */
+    	        mDECLARE_SORTS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 48:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:635: DECLARE_FUNS_TOK
+    	    {
+    	        /* 1:635: DECLARE_FUNS_TOK */
+    	        mDECLARE_FUNS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 49:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:652: DECLARE_PREDS_TOK
+    	    {
+    	        /* 1:652: DECLARE_PREDS_TOK */
+    	        mDECLARE_PREDS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 50:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:670: DEFINE_TOK
+    	    {
+    	        /* 1:670: DEFINE_TOK */
+    	        mDEFINE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 51:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:681: DECLARE_CONST_TOK
+    	    {
+    	        /* 1:681: DECLARE_CONST_TOK */
+    	        mDECLARE_CONST_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 52:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:699: DEFINE_CONST_TOK
+    	    {
+    	        /* 1:699: DEFINE_CONST_TOK */
+    	        mDEFINE_CONST_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 53:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:716: SIMPLIFY_TOK
+    	    {
+    	        /* 1:716: SIMPLIFY_TOK */
+    	        mSIMPLIFY_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 54:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:729: INCLUDE_TOK
+    	    {
+    	        /* 1:729: INCLUDE_TOK */
+    	        mINCLUDE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 55:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:741: GET_QE_TOK
+    	    {
+    	        /* 1:741: GET_QE_TOK */
+    	        mGET_QE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 56:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:752: GET_QE_DISJUNCT_TOK
+    	    {
+    	        /* 1:752: GET_QE_DISJUNCT_TOK */
+    	        mGET_QE_DISJUNCT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 57:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:772: SYNTH_FUN_TOK
+    	    {
+    	        /* 1:772: SYNTH_FUN_TOK */
+    	        mSYNTH_FUN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 58:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:786: SYNTH_INV_TOK
+    	    {
+    	        /* 1:786: SYNTH_INV_TOK */
+    	        mSYNTH_INV_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 59:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:800: CHECK_SYNTH_TOK
+    	    {
+    	        /* 1:800: CHECK_SYNTH_TOK */
+    	        mCHECK_SYNTH_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 60:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:816: DECLARE_VAR_TOK
+    	    {
+    	        /* 1:816: DECLARE_VAR_TOK */
+    	        mDECLARE_VAR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 61:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:832: DECLARE_PRIMED_VAR_TOK
+    	    {
+    	        /* 1:832: DECLARE_PRIMED_VAR_TOK */
+    	        mDECLARE_PRIMED_VAR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 62:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:855: CONSTRAINT_TOK
+    	    {
+    	        /* 1:855: CONSTRAINT_TOK */
+    	        mCONSTRAINT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 63:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:870: INV_CONSTRAINT_TOK
+    	    {
+    	        /* 1:870: INV_CONSTRAINT_TOK */
+    	        mINV_CONSTRAINT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 64:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:889: SET_OPTIONS_TOK
+    	    {
+    	        /* 1:889: SET_OPTIONS_TOK */
+    	        mSET_OPTIONS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 65:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:905: SYGUS_ENUM_TOK
+    	    {
+    	        /* 1:905: SYGUS_ENUM_TOK */
+    	        mSYGUS_ENUM_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 66:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:920: SYGUS_ENUM_CONS_TOK
+    	    {
+    	        /* 1:920: SYGUS_ENUM_CONS_TOK */
+    	        mSYGUS_ENUM_CONS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 67:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:940: SYGUS_CONSTANT_TOK
+    	    {
+    	        /* 1:940: SYGUS_CONSTANT_TOK */
+    	        mSYGUS_CONSTANT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 68:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:959: SYGUS_VARIABLE_TOK
+    	    {
+    	        /* 1:959: SYGUS_VARIABLE_TOK */
+    	        mSYGUS_VARIABLE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 69:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:978: SYGUS_INPUT_VARIABLE_TOK
+    	    {
+    	        /* 1:978: SYGUS_INPUT_VARIABLE_TOK */
+    	        mSYGUS_INPUT_VARIABLE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 70:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1003: SYGUS_LOCAL_VARIABLE_TOK
+    	    {
+    	        /* 1:1003: SYGUS_LOCAL_VARIABLE_TOK */
+    	        mSYGUS_LOCAL_VARIABLE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 71:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1028: ATTRIBUTE_PATTERN_TOK
+    	    {
+    	        /* 1:1028: ATTRIBUTE_PATTERN_TOK */
+    	        mATTRIBUTE_PATTERN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 72:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1050: ATTRIBUTE_NO_PATTERN_TOK
+    	    {
+    	        /* 1:1050: ATTRIBUTE_NO_PATTERN_TOK */
+    	        mATTRIBUTE_NO_PATTERN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 73:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1075: ATTRIBUTE_NAMED_TOK
+    	    {
+    	        /* 1:1075: ATTRIBUTE_NAMED_TOK */
+    	        mATTRIBUTE_NAMED_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 74:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1095: ATTRIBUTE_INST_LEVEL
+    	    {
+    	        /* 1:1095: ATTRIBUTE_INST_LEVEL */
+    	        mATTRIBUTE_INST_LEVEL(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 75:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1116: ATTRIBUTE_RR_PRIORITY
+    	    {
+    	        /* 1:1116: ATTRIBUTE_RR_PRIORITY */
+    	        mATTRIBUTE_RR_PRIORITY(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 76:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1138: AMPERSAND_TOK
+    	    {
+    	        /* 1:1138: AMPERSAND_TOK */
+    	        mAMPERSAND_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 77:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1152: AND_TOK
+    	    {
+    	        /* 1:1152: AND_TOK */
+    	        mAND_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 78:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1160: AT_TOK
+    	    {
+    	        /* 1:1160: AT_TOK */
+    	        mAT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 79:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1167: DISTINCT_TOK
+    	    {
+    	        /* 1:1167: DISTINCT_TOK */
+    	        mDISTINCT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 80:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1180: DIV_TOK
+    	    {
+    	        /* 1:1180: DIV_TOK */
+    	        mDIV_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 81:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1188: EQUAL_TOK
+    	    {
+    	        /* 1:1188: EQUAL_TOK */
+    	        mEQUAL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 82:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1198: EXISTS_TOK
+    	    {
+    	        /* 1:1198: EXISTS_TOK */
+    	        mEXISTS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 83:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1209: FORALL_TOK
+    	    {
+    	        /* 1:1209: FORALL_TOK */
+    	        mFORALL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 84:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1220: GREATER_THAN_TOK
+    	    {
+    	        /* 1:1220: GREATER_THAN_TOK */
+    	        mGREATER_THAN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 85:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1237: GREATER_THAN_EQUAL_TOK
+    	    {
+    	        /* 1:1237: GREATER_THAN_EQUAL_TOK */
+    	        mGREATER_THAN_EQUAL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 86:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1260: IMPLIES_TOK
+    	    {
+    	        /* 1:1260: IMPLIES_TOK */
+    	        mIMPLIES_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 87:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1272: LESS_THAN_TOK
+    	    {
+    	        /* 1:1272: LESS_THAN_TOK */
+    	        mLESS_THAN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 88:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1286: LESS_THAN_EQUAL_TOK
+    	    {
+    	        /* 1:1286: LESS_THAN_EQUAL_TOK */
+    	        mLESS_THAN_EQUAL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 89:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1306: MINUS_TOK
+    	    {
+    	        /* 1:1306: MINUS_TOK */
+    	        mMINUS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 90:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1316: NOT_TOK
+    	    {
+    	        /* 1:1316: NOT_TOK */
+    	        mNOT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 91:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1324: OR_TOK
+    	    {
+    	        /* 1:1324: OR_TOK */
+    	        mOR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 92:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1331: PLUS_TOK
+    	    {
+    	        /* 1:1331: PLUS_TOK */
+    	        mPLUS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 93:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1340: STAR_TOK
+    	    {
+    	        /* 1:1340: STAR_TOK */
+    	        mSTAR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 94:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1349: XOR_TOK
+    	    {
+    	        /* 1:1349: XOR_TOK */
+    	        mXOR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 95:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1357: DIVISIBLE_TOK
+    	    {
+    	        /* 1:1357: DIVISIBLE_TOK */
+    	        mDIVISIBLE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 96:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1371: BV2NAT_TOK
+    	    {
+    	        /* 1:1371: BV2NAT_TOK */
+    	        mBV2NAT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 97:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1382: INT2BV_TOK
+    	    {
+    	        /* 1:1382: INT2BV_TOK */
+    	        mINT2BV_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 98:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1393: RENOSTR_TOK
+    	    {
+    	        /* 1:1393: RENOSTR_TOK */
+    	        mRENOSTR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 99:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1405: REALLCHAR_TOK
+    	    {
+    	        /* 1:1405: REALLCHAR_TOK */
+    	        mREALLCHAR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 100:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1419: DTSIZE_TOK
+    	    {
+    	        /* 1:1419: DTSIZE_TOK */
+    	        mDTSIZE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 101:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1430: FMFCARD_TOK
+    	    {
+    	        /* 1:1430: FMFCARD_TOK */
+    	        mFMFCARD_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 102:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1442: FMFCARDVAL_TOK
+    	    {
+    	        /* 1:1442: FMFCARDVAL_TOK */
+    	        mFMFCARDVAL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 103:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1457: INST_CLOSURE_TOK
+    	    {
+    	        /* 1:1457: INST_CLOSURE_TOK */
+    	        mINST_CLOSURE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 104:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1474: EMPTYSET_TOK
+    	    {
+    	        /* 1:1474: EMPTYSET_TOK */
+    	        mEMPTYSET_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 105:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1487: UNIVSET_TOK
+    	    {
+    	        /* 1:1487: UNIVSET_TOK */
+    	        mUNIVSET_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 106:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1499: NILREF_TOK
+    	    {
+    	        /* 1:1499: NILREF_TOK */
+    	        mNILREF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 107:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1510: FP_PINF_TOK
+    	    {
+    	        /* 1:1510: FP_PINF_TOK */
+    	        mFP_PINF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 108:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1522: FP_NINF_TOK
+    	    {
+    	        /* 1:1522: FP_NINF_TOK */
+    	        mFP_NINF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 109:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1534: FP_PZERO_TOK
+    	    {
+    	        /* 1:1534: FP_PZERO_TOK */
+    	        mFP_PZERO_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 110:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1547: FP_NZERO_TOK
+    	    {
+    	        /* 1:1547: FP_NZERO_TOK */
+    	        mFP_NZERO_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 111:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1560: FP_NAN_TOK
+    	    {
+    	        /* 1:1560: FP_NAN_TOK */
+    	        mFP_NAN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 112:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1571: FP_TO_FP_TOK
+    	    {
+    	        /* 1:1571: FP_TO_FP_TOK */
+    	        mFP_TO_FP_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 113:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1584: FP_TO_FPBV_TOK
+    	    {
+    	        /* 1:1584: FP_TO_FPBV_TOK */
+    	        mFP_TO_FPBV_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 114:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1599: FP_TO_FPFP_TOK
+    	    {
+    	        /* 1:1599: FP_TO_FPFP_TOK */
+    	        mFP_TO_FPFP_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 115:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1614: FP_TO_FPR_TOK
+    	    {
+    	        /* 1:1614: FP_TO_FPR_TOK */
+    	        mFP_TO_FPR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 116:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1628: FP_TO_FPS_TOK
+    	    {
+    	        /* 1:1628: FP_TO_FPS_TOK */
+    	        mFP_TO_FPS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 117:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1642: FP_TO_FPU_TOK
+    	    {
+    	        /* 1:1642: FP_TO_FPU_TOK */
+    	        mFP_TO_FPU_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 118:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1656: FP_TO_UBV_TOK
+    	    {
+    	        /* 1:1656: FP_TO_UBV_TOK */
+    	        mFP_TO_UBV_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 119:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1670: FP_TO_SBV_TOK
+    	    {
+    	        /* 1:1670: FP_TO_SBV_TOK */
+    	        mFP_TO_SBV_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 120:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1684: FP_RNE_TOK
+    	    {
+    	        /* 1:1684: FP_RNE_TOK */
+    	        mFP_RNE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 121:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1695: FP_RNA_TOK
+    	    {
+    	        /* 1:1695: FP_RNA_TOK */
+    	        mFP_RNA_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 122:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1706: FP_RTP_TOK
+    	    {
+    	        /* 1:1706: FP_RTP_TOK */
+    	        mFP_RTP_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 123:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1717: FP_RTN_TOK
+    	    {
+    	        /* 1:1717: FP_RTN_TOK */
+    	        mFP_RTN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 124:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1728: FP_RTZ_TOK
+    	    {
+    	        /* 1:1728: FP_RTZ_TOK */
+    	        mFP_RTZ_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 125:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1739: FP_RNE_FULL_TOK
+    	    {
+    	        /* 1:1739: FP_RNE_FULL_TOK */
+    	        mFP_RNE_FULL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 126:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1755: FP_RNA_FULL_TOK
+    	    {
+    	        /* 1:1755: FP_RNA_FULL_TOK */
+    	        mFP_RNA_FULL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 127:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1771: FP_RTP_FULL_TOK
+    	    {
+    	        /* 1:1771: FP_RTP_FULL_TOK */
+    	        mFP_RTP_FULL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 128:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1787: FP_RTN_FULL_TOK
+    	    {
+    	        /* 1:1787: FP_RTN_FULL_TOK */
+    	        mFP_RTN_FULL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 129:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1803: FP_RTZ_FULL_TOK
+    	    {
+    	        /* 1:1803: FP_RTZ_FULL_TOK */
+    	        mFP_RTZ_FULL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 130:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1819: QUOTED_SYMBOL
+    	    {
+    	        /* 1:1819: QUOTED_SYMBOL */
+    	        mQUOTED_SYMBOL(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 131:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1833: UNTERMINATED_QUOTED_SYMBOL
+    	    {
+    	        /* 1:1833: UNTERMINATED_QUOTED_SYMBOL */
+    	        mUNTERMINATED_QUOTED_SYMBOL(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 132:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1860: KEYWORD
+    	    {
+    	        /* 1:1860: KEYWORD */
+    	        mKEYWORD(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 133:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1868: SIMPLE_SYMBOL
+    	    {
+    	        /* 1:1868: SIMPLE_SYMBOL */
+    	        mSIMPLE_SYMBOL(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 134:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1882: WHITESPACE
+    	    {
+    	        /* 1:1882: WHITESPACE */
+    	        mWHITESPACE(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 135:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1893: INTEGER_LITERAL
+    	    {
+    	        /* 1:1893: INTEGER_LITERAL */
+    	        mINTEGER_LITERAL(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 136:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1909: DECIMAL_LITERAL
+    	    {
+    	        /* 1:1909: DECIMAL_LITERAL */
+    	        mDECIMAL_LITERAL(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 137:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1925: HEX_LITERAL
+    	    {
+    	        /* 1:1925: HEX_LITERAL */
+    	        mHEX_LITERAL(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 138:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1937: BINARY_LITERAL
+    	    {
+    	        /* 1:1937: BINARY_LITERAL */
+    	        mBINARY_LITERAL(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 139:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1952: STRING_LITERAL_2_0
+    	    {
+    	        /* 1:1952: STRING_LITERAL_2_0 */
+    	        mSTRING_LITERAL_2_0(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 140:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1971: STRING_LITERAL_2_5
+    	    {
+    	        /* 1:1971: STRING_LITERAL_2_5 */
+    	        mSTRING_LITERAL_2_5(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 141:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1990: SYGUS_QUOTED_LITERAL
+    	    {
+    	        /* 1:1990: SYGUS_QUOTED_LITERAL */
+    	        mSYGUS_QUOTED_LITERAL(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 142:
+    	    // ../../../../../../src/parser/smt2/Smt2.g:1:2011: COMMENT
+    	    {
+    	        /* 1:2011: COMMENT */
+    	        mCOMMENT(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+
+        }
+    }
+
+
+    goto ruleTokensEx; /* Prevent compiler warnings */
+ruleTokensEx: ;
+}
+
+/* =========================================================================
+ * Lexer matching rules end.
+ * =========================================================================
+ */
+/* End of Lexer code
+ * ================================================
+ * ================================================
+ */
+
+
+/* End of code
+ * =============================================================================
+ */
diff --git a/src/parser/smt2/Smt2Lexer.h b/src/parser/smt2/Smt2Lexer.h
new file mode 100644
index 0000000..7b2505d
--- /dev/null
+++ b/src/parser/smt2/Smt2Lexer.h
@@ -0,0 +1,1242 @@
+/** \file
+ *  This C header file was generated by $ANTLR version 3.4
+ *
+ *     -  From the grammar source file : ../../../../../../src/parser/smt2/Smt2.g
+ *     -                            On : 2017-03-16 01:03:02
+ *     -                 for the lexer : Smt2LexerLexer
+ *
+ * Editing it, at least manually, is not wise.
+ *
+ * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws.
+ *
+ *
+ * The lexer 
+Smt2Lexer
+
+has the callable functions (rules) shown below,
+ * which will invoke the code for the associated rule in the source grammar
+ * assuming that the input stream is pointing to a token/text stream that could begin
+ * this rule.
+ *
+ * For instance if you call the first (topmost) rule in a parser grammar, you will
+ * get the results of a full parse, but calling a rule half way through the grammar will
+ * allow you to pass part of a full token stream to the parser, such as for syntax checking
+ * in editors and so on.
+ *
+ * The parser entry points are called indirectly (by function pointer to function) via
+ * a parser context typedef pSmt2Lexer, which is returned from a call to Smt2LexerNew().
+ *
+ * As this is a generated lexer, it is unlikely you will call it 'manually'. However
+ * the methods are provided anyway.
+ *
+ * The methods in pSmt2Lexer are  as follows:
+ *
+ *  - 
+ void
+      pSmt2Lexer->T__145(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->T__146(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->T__147(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->T__148(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->T__149(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->T__150(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->T__151(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->ASSERT_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->CHECKSAT_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DECLARE_FUN_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DECLARE_SORT_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DEFINE_FUN_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DEFINE_FUN_REC_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DEFINE_FUNS_REC_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DEFINE_SORT_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->GET_VALUE_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->GET_ASSIGNMENT_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->GET_ASSERTIONS_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->GET_PROOF_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->GET_UNSAT_CORE_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->EXIT_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->RESET_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->RESET_ASSERTIONS_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->ITE_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->LET_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->ATTRIBUTE_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->LPAREN_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->RPAREN_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->INDEX_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->SET_LOGIC_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->SET_INFO_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->META_INFO_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->GET_INFO_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->SET_OPTION_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->GET_OPTION_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->PUSH_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->POP_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->AS_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->CONST_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DECLARE_DATATYPES_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DECLARE_CODATATYPES_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->GET_MODEL_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->ECHO_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->REWRITE_RULE_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->REDUCTION_RULE_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->PROPAGATION_RULE_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DECLARE_SORTS_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DECLARE_FUNS_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DECLARE_PREDS_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DEFINE_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DECLARE_CONST_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DEFINE_CONST_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->SIMPLIFY_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->INCLUDE_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->GET_QE_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->GET_QE_DISJUNCT_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->SYNTH_FUN_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->SYNTH_INV_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->CHECK_SYNTH_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DECLARE_VAR_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DECLARE_PRIMED_VAR_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->CONSTRAINT_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->INV_CONSTRAINT_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->SET_OPTIONS_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->SYGUS_ENUM_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->SYGUS_ENUM_CONS_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->SYGUS_CONSTANT_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->SYGUS_VARIABLE_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->SYGUS_INPUT_VARIABLE_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->SYGUS_LOCAL_VARIABLE_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->ATTRIBUTE_PATTERN_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->ATTRIBUTE_NO_PATTERN_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->ATTRIBUTE_NAMED_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->ATTRIBUTE_INST_LEVEL(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->ATTRIBUTE_RR_PRIORITY(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->AMPERSAND_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->AND_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->AT_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DISTINCT_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DIV_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->EQUAL_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->EXISTS_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FORALL_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->GREATER_THAN_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->GREATER_THAN_EQUAL_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->IMPLIES_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->LESS_THAN_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->LESS_THAN_EQUAL_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->MINUS_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->NOT_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->OR_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->PLUS_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->STAR_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->XOR_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DIVISIBLE_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->BV2NAT_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->INT2BV_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->RENOSTR_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->REALLCHAR_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DTSIZE_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FMFCARD_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FMFCARDVAL_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->INST_CLOSURE_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->EMPTYSET_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->UNIVSET_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->NILREF_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_PINF_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_NINF_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_PZERO_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_NZERO_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_NAN_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_TO_FP_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_TO_FPBV_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_TO_FPFP_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_TO_FPR_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_TO_FPS_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_TO_FPU_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_TO_UBV_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_TO_SBV_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_RNE_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_RNA_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_RTP_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_RTN_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_RTZ_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_RNE_FULL_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_RNA_FULL_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_RTP_FULL_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_RTN_FULL_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->FP_RTZ_FULL_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->QUOTED_SYMBOL(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->UNTERMINATED_QUOTED_SYMBOL(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->KEYWORD(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->SIMPLE_SYMBOL(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->WHITESPACE(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->INTEGER_LITERAL(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->NUMERAL(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DECIMAL_LITERAL(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->HEX_LITERAL(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->BINARY_LITERAL(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->STRING_LITERAL_2_0(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->STRING_LITERAL_2_5(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->SYGUS_QUOTED_LITERAL(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->COMMENT(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->ALPHA(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DIGIT(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->HEX_DIGIT(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->SYMBOL_CHAR(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->Tokens(pSmt2Lexer)
+ *
+ * The return type for any particular rule is of course determined by the source
+ * grammar file.
+ */
+// [The "BSD license"]
+// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
+// http://www.temporal-wave.com
+// http://www.linkedin.com/in/jimidle
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+// 3. The name of the author may not be used to endorse or promote products
+//    derived from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef	_Smt2Lexer_H
+#define _Smt2Lexer_H
+/* =============================================================================
+ * Standard antlr3 C runtime definitions
+ */
+#include    <antlr3.h>
+
+/* End of standard antlr 3 runtime definitions
+ * =============================================================================
+ */
+
+
+// This should come immediately after #include <antlr3.h> in the generated
+// files. See the documentation in "parser/antlr_undefines.h" for more details.
+#include "parser/antlr_undefines.h"
+
+/** This suppresses warnings about the redefinition of token symbols between
+  * different parsers. The redefinitions should be harmless as long as no
+  * client: (a) #include's the lexer headers for two grammars AND (b) uses the
+  * token symbol definitions.
+  */
+#pragma GCC system_header
+
+#if defined(CVC4_COMPETITION_MODE) && !defined(CVC4_SMTCOMP_APPLICATION_TRACK)
+/* This improves performance by ~10 percent on big inputs.
+ * This option is only valid if we know the input is ASCII (or some 8-bit encoding).
+ * If we know the input is UTF-16, we can use ANTLR3_INLINE_INPUT_UTF16.
+ * Otherwise, we have to let the lexer detect the encoding at runtime.
+ */
+#  define ANTLR3_INLINE_INPUT_ASCII
+#  define ANTLR3_INLINE_INPUT_8BIT
+#endif /* CVC4_COMPETITION_MODE && !CVC4_SMTCOMP_APPLICATION_TRACK */
+
+#include "parser/antlr_tracing.h"
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Forward declare the context typedef so that we can use it before it is
+// properly defined. Delegators and delegates (from import statements) are
+// interdependent and their context structures contain pointers to each other
+// C only allows such things to be declared if you pre-declare the typedef.
+//
+typedef struct Smt2Lexer_Ctx_struct Smt2Lexer, * pSmt2Lexer;
+
+
+
+#ifdef	ANTLR3_WINDOWS
+// Disable: Unreferenced parameter,							- Rules with parameters that are not used
+//          constant conditional,							- ANTLR realizes that a prediction is always true (synpred usually)
+//          initialized but unused variable					- tree rewrite variables declared but not needed
+//          Unreferenced local variable						- lexer rule declares but does not always use _type
+//          potentially unitialized variable used			- retval always returned from a rule
+//			unreferenced local function has been removed	- susually getTokenNames or freeScope, they can go without warnigns
+//
+// These are only really displayed at warning level /W4 but that is the code ideal I am aiming at
+// and the codegen must generate some of these warnings by necessity, apart from 4100, which is
+// usually generated when a parser rule is given a parameter that it does not use. Mostly though
+// this is a matter of orthogonality hence I disable that one.
+//
+#pragma warning( disable : 4100 )
+#pragma warning( disable : 4101 )
+#pragma warning( disable : 4127 )
+#pragma warning( disable : 4189 )
+#pragma warning( disable : 4505 )
+#pragma warning( disable : 4701 )
+#endif
+
+/** Context tracking structure for 
+Smt2Lexer
+
+ */
+struct Smt2Lexer_Ctx_struct
+{
+    /** Built in ANTLR3 context tracker contains all the generic elements
+     *  required for context tracking.
+     */
+    pANTLR3_LEXER    pLexer;
+
+     void
+     (*mT__145)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mT__146)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mT__147)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mT__148)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mT__149)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mT__150)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mT__151)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mASSERT_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mCHECKSAT_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDECLARE_FUN_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDECLARE_SORT_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDEFINE_FUN_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDEFINE_FUN_REC_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDEFINE_FUNS_REC_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDEFINE_SORT_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mGET_VALUE_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mGET_ASSIGNMENT_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mGET_ASSERTIONS_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mGET_PROOF_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mGET_UNSAT_CORE_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mEXIT_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mRESET_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mRESET_ASSERTIONS_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mITE_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mLET_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mATTRIBUTE_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mLPAREN_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mRPAREN_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mINDEX_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSET_LOGIC_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSET_INFO_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mMETA_INFO_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mGET_INFO_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSET_OPTION_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mGET_OPTION_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mPUSH_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mPOP_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mAS_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mCONST_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDECLARE_DATATYPES_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDECLARE_CODATATYPES_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mGET_MODEL_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mECHO_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mREWRITE_RULE_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mREDUCTION_RULE_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mPROPAGATION_RULE_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDECLARE_SORTS_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDECLARE_FUNS_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDECLARE_PREDS_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDEFINE_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDECLARE_CONST_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDEFINE_CONST_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSIMPLIFY_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mINCLUDE_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mGET_QE_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mGET_QE_DISJUNCT_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSYNTH_FUN_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSYNTH_INV_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mCHECK_SYNTH_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDECLARE_VAR_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDECLARE_PRIMED_VAR_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mCONSTRAINT_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mINV_CONSTRAINT_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSET_OPTIONS_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSYGUS_ENUM_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSYGUS_ENUM_CONS_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSYGUS_CONSTANT_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSYGUS_VARIABLE_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSYGUS_INPUT_VARIABLE_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSYGUS_LOCAL_VARIABLE_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mATTRIBUTE_PATTERN_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mATTRIBUTE_NO_PATTERN_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mATTRIBUTE_NAMED_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mATTRIBUTE_INST_LEVEL)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mATTRIBUTE_RR_PRIORITY)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mAMPERSAND_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mAND_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mAT_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDISTINCT_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDIV_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mEQUAL_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mEXISTS_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFORALL_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mGREATER_THAN_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mGREATER_THAN_EQUAL_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mIMPLIES_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mLESS_THAN_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mLESS_THAN_EQUAL_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mMINUS_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mNOT_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mOR_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mPLUS_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSTAR_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mXOR_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDIVISIBLE_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBV2NAT_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mINT2BV_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mRENOSTR_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mREALLCHAR_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDTSIZE_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFMFCARD_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFMFCARDVAL_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mINST_CLOSURE_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mEMPTYSET_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mUNIVSET_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mNILREF_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_PINF_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_NINF_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_PZERO_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_NZERO_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_NAN_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_TO_FP_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_TO_FPBV_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_TO_FPFP_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_TO_FPR_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_TO_FPS_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_TO_FPU_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_TO_UBV_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_TO_SBV_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_RNE_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_RNA_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_RTP_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_RTN_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_RTZ_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_RNE_FULL_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_RNA_FULL_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_RTP_FULL_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_RTN_FULL_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mFP_RTZ_FULL_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mQUOTED_SYMBOL)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mUNTERMINATED_QUOTED_SYMBOL)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mKEYWORD)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSIMPLE_SYMBOL)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mWHITESPACE)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mINTEGER_LITERAL)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mNUMERAL)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDECIMAL_LITERAL)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mHEX_LITERAL)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mBINARY_LITERAL)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSTRING_LITERAL_2_0)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSTRING_LITERAL_2_5)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSYGUS_QUOTED_LITERAL)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mCOMMENT)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mALPHA)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDIGIT)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mHEX_DIGIT)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mSYMBOL_CHAR)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mTokens)	(struct Smt2Lexer_Ctx_struct * ctx);
+    const char * (*getGrammarFileName)();
+    void            (*reset)  (struct Smt2Lexer_Ctx_struct * ctx);
+    void	    (*free)   (struct Smt2Lexer_Ctx_struct * ctx);
+};
+
+// Function protoypes for the constructor functions that external translation units
+// such as delegators and delegates may wish to call.
+//
+ANTLR3_API pSmt2Lexer Smt2LexerNew         (
+pANTLR3_INPUT_STREAM
+ instream);
+ANTLR3_API pSmt2Lexer Smt2LexerNewSSD      (
+pANTLR3_INPUT_STREAM
+ instream, pANTLR3_RECOGNIZER_SHARED_STATE state);
+
+/** Symbolic definitions of all the tokens that the 
+lexer
+ will work with.
+ * \{
+ *
+ * Antlr will define EOF, but we can't use that as it it is too common in
+ * in C header files and that would be confusing. There is no way to filter this out at the moment
+ * so we just undef it here for now. That isn't the value we get back from C recognizers
+ * anyway. We are looking for ANTLR3_TOKEN_EOF.
+ */
+#ifdef	EOF
+#undef	EOF
+#endif
+#ifdef	Tokens
+#undef	Tokens
+#endif
+#define EOF      -1
+#define T__145      145
+#define T__146      146
+#define T__147      147
+#define T__148      148
+#define T__149      149
+#define T__150      150
+#define T__151      151
+#define ALPHA      4
+#define AMPERSAND_TOK      5
+#define AND_TOK      6
+#define ASSERT_TOK      7
+#define AS_TOK      8
+#define ATTRIBUTE_INST_LEVEL      9
+#define ATTRIBUTE_NAMED_TOK      10
+#define ATTRIBUTE_NO_PATTERN_TOK      11
+#define ATTRIBUTE_PATTERN_TOK      12
+#define ATTRIBUTE_RR_PRIORITY      13
+#define ATTRIBUTE_TOK      14
+#define AT_TOK      15
+#define BINARY_LITERAL      16
+#define BV2NAT_TOK      17
+#define CHECKSAT_TOK      18
+#define CHECK_SYNTH_TOK      19
+#define COMMENT      20
+#define CONSTRAINT_TOK      21
+#define CONST_TOK      22
+#define DECIMAL_LITERAL      23
+#define DECLARE_CODATATYPES_TOK      24
+#define DECLARE_CONST_TOK      25
+#define DECLARE_DATATYPES_TOK      26
+#define DECLARE_FUNS_TOK      27
+#define DECLARE_FUN_TOK      28
+#define DECLARE_PREDS_TOK      29
+#define DECLARE_PRIMED_VAR_TOK      30
+#define DECLARE_SORTS_TOK      31
+#define DECLARE_SORT_TOK      32
+#define DECLARE_VAR_TOK      33
+#define DEFINE_CONST_TOK      34
+#define DEFINE_FUNS_REC_TOK      35
+#define DEFINE_FUN_REC_TOK      36
+#define DEFINE_FUN_TOK      37
+#define DEFINE_SORT_TOK      38
+#define DEFINE_TOK      39
+#define DIGIT      40
+#define DISTINCT_TOK      41
+#define DIVISIBLE_TOK      42
+#define DIV_TOK      43
+#define DTSIZE_TOK      44
+#define ECHO_TOK      45
+#define EMPTYSET_TOK      46
+#define EQUAL_TOK      47
+#define EXISTS_TOK      48
+#define EXIT_TOK      49
+#define FMFCARDVAL_TOK      50
+#define FMFCARD_TOK      51
+#define FORALL_TOK      52
+#define FP_NAN_TOK      53
+#define FP_NINF_TOK      54
+#define FP_NZERO_TOK      55
+#define FP_PINF_TOK      56
+#define FP_PZERO_TOK      57
+#define FP_RNA_FULL_TOK      58
+#define FP_RNA_TOK      59
+#define FP_RNE_FULL_TOK      60
+#define FP_RNE_TOK      61
+#define FP_RTN_FULL_TOK      62
+#define FP_RTN_TOK      63
+#define FP_RTP_FULL_TOK      64
+#define FP_RTP_TOK      65
+#define FP_RTZ_FULL_TOK      66
+#define FP_RTZ_TOK      67
+#define FP_TO_FPBV_TOK      68
+#define FP_TO_FPFP_TOK      69
+#define FP_TO_FPR_TOK      70
+#define FP_TO_FPS_TOK      71
+#define FP_TO_FPU_TOK      72
+#define FP_TO_FP_TOK      73
+#define FP_TO_SBV_TOK      74
+#define FP_TO_UBV_TOK      75
+#define GET_ASSERTIONS_TOK      76
+#define GET_ASSIGNMENT_TOK      77
+#define GET_INFO_TOK      78
+#define GET_MODEL_TOK      79
+#define GET_OPTION_TOK      80
+#define GET_PROOF_TOK      81
+#define GET_QE_DISJUNCT_TOK      82
+#define GET_QE_TOK      83
+#define GET_UNSAT_CORE_TOK      84
+#define GET_VALUE_TOK      85
+#define GREATER_THAN_EQUAL_TOK      86
+#define GREATER_THAN_TOK      87
+#define HEX_DIGIT      88
+#define HEX_LITERAL      89
+#define IMPLIES_TOK      90
+#define INCLUDE_TOK      91
+#define INDEX_TOK      92
+#define INST_CLOSURE_TOK      93
+#define INT2BV_TOK      94
+#define INTEGER_LITERAL      95
+#define INV_CONSTRAINT_TOK      96
+#define ITE_TOK      97
+#define KEYWORD      98
+#define LESS_THAN_EQUAL_TOK      99
+#define LESS_THAN_TOK      100
+#define LET_TOK      101
+#define LPAREN_TOK      102
+#define META_INFO_TOK      103
+#define MINUS_TOK      104
+#define NILREF_TOK      105
+#define NOT_TOK      106
+#define NUMERAL      107
+#define OR_TOK      108
+#define PLUS_TOK      109
+#define POP_TOK      110
+#define PROPAGATION_RULE_TOK      111
+#define PUSH_TOK      112
+#define QUOTED_SYMBOL      113
+#define REALLCHAR_TOK      114
+#define REDUCTION_RULE_TOK      115
+#define RENOSTR_TOK      116
+#define RESET_ASSERTIONS_TOK      117
+#define RESET_TOK      118
+#define REWRITE_RULE_TOK      119
+#define RPAREN_TOK      120
+#define SET_INFO_TOK      121
+#define SET_LOGIC_TOK      122
+#define SET_OPTIONS_TOK      123
+#define SET_OPTION_TOK      124
+#define SIMPLE_SYMBOL      125
+#define SIMPLIFY_TOK      126
+#define STAR_TOK      127
+#define STRING_LITERAL_2_0      128
+#define STRING_LITERAL_2_5      129
+#define SYGUS_CONSTANT_TOK      130
+#define SYGUS_ENUM_CONS_TOK      131
+#define SYGUS_ENUM_TOK      132
+#define SYGUS_INPUT_VARIABLE_TOK      133
+#define SYGUS_LOCAL_VARIABLE_TOK      134
+#define SYGUS_QUOTED_LITERAL      135
+#define SYGUS_VARIABLE_TOK      136
+#define SYMBOL_CHAR      137
+#define SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE      138
+#define SYNTH_FUN_TOK      139
+#define SYNTH_INV_TOK      140
+#define UNIVSET_TOK      141
+#define UNTERMINATED_QUOTED_SYMBOL      142
+#define WHITESPACE      143
+#define XOR_TOK      144
+#ifdef	EOF
+#undef	EOF
+#define	EOF	ANTLR3_TOKEN_EOF
+#endif
+
+#ifndef TOKENSOURCE
+#define TOKENSOURCE(lxr) lxr->pLexer->rec->state->tokSource
+#endif
+
+/* End of token definitions for Smt2Lexer
+ * =============================================================================
+ */
+/** } */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* END - Note:Keep extra line feed to satisfy UNIX systems */
diff --git a/src/parser/smt2/Smt2Parser.c b/src/parser/smt2/Smt2Parser.c
new file mode 100644
index 0000000..ca08923
--- /dev/null
+++ b/src/parser/smt2/Smt2Parser.c
@@ -0,0 +1,17502 @@
+/** \file
+ *  This C source file was generated by $ANTLR version 3.4
+ *
+ *     -  From the grammar source file : ../../../../../../src/parser/smt2/Smt2.g
+ *     -                            On : 2017-03-16 01:03:01
+ *     -                for the parser : Smt2ParserParser
+ *
+ * Editing it, at least manually, is not wise.
+ *
+ * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws.
+ *
+ *
+*/
+// [The "BSD license"]
+// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
+// http://www.temporal-wave.com
+// http://www.linkedin.com/in/jimidle
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+// 3. The name of the author may not be used to endorse or promote products
+//    derived from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+/* =============================================================================
+ * This is what the grammar programmer asked us to put at the top of every file.
+ */
+
+/**
+ ** This file is part of CVC4.
+ ** Copyright (c) 2009-2014  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.
+ **/
+
+/* End of Header action.
+ * =============================================================================
+ */
+
+/* -----------------------------------------
+ * Include the ANTLR3 generated header file.
+ */
+#include    "Smt2Parser.h"
+
+
+#include <set>
+#include <sstream>
+#include <string>
+#include <vector>
+
+#include "base/output.h"
+#include "expr/expr.h"
+#include "expr/kind.h"
+#include "expr/type.h"
+#include "options/set_language.h"
+#include "parser/antlr_input.h"
+#include "parser/parser.h"
+#include "parser/smt2/smt2.h"
+#include "util/floatingpoint.h"
+#include "util/hash.h"
+#include "util/integer.h"
+#include "util/rational.h"
+// \todo Review the need for this header
+#include "math.h"
+
+using namespace CVC4;
+using namespace CVC4::parser;
+
+/* These need to be macros so they can refer to the PARSER macro, which
+ * will be defined by ANTLR *after* this section. (If they were functions,
+ * PARSER would be undefined.) */
+#undef PARSER_STATE
+#define PARSER_STATE ((Smt2*)PARSER->super)
+#undef EXPR_MANAGER
+#define EXPR_MANAGER PARSER_STATE->getExprManager()
+#undef MK_EXPR
+#define MK_EXPR EXPR_MANAGER->mkExpr
+#undef MK_CONST
+#define MK_CONST EXPR_MANAGER->mkConst
+#define UNSUPPORTED PARSER_STATE->unimplementedFeature
+
+static bool isClosed(const Expr& e, std::set<Expr>& free, std::hash_set<Expr, ExprHashFunction>& closedCache) {
+  if(closedCache.find(e) != closedCache.end()) {
+    return true;
+  }
+
+  if(e.getKind() == kind::FORALL || e.getKind() == kind::EXISTS || e.getKind() == kind::LAMBDA) {
+    isClosed(e[1], free, closedCache);
+    for(Expr::const_iterator i = e[0].begin(); i != e[0].end(); ++i) {
+      free.erase(*i);
+    }
+  } else if(e.getKind() == kind::BOUND_VARIABLE) {
+    free.insert(e);
+    return false;
+  } else {
+    if(e.hasOperator()) {
+      isClosed(e.getOperator(), free, closedCache);
+    }
+    for(Expr::const_iterator i = e.begin(); i != e.end(); ++i) {
+      isClosed(*i, free, closedCache);
+    }
+  }
+
+  if(free.empty()) {
+    closedCache.insert(e);
+    return true;
+  } else {
+    return false;
+  }
+}
+
+static inline bool isClosed(const Expr& e, std::set<Expr>& free) {
+  std::hash_set<Expr, ExprHashFunction> cache;
+  return isClosed(e, free, cache);
+}  
+  
+
+/* ----------------------------------------- */
+
+
+
+
+
+/* MACROS that hide the C interface implementations from the
+ * generated code, which makes it a little more understandable to the human eye.
+ * I am very much against using C pre-processor macros for function calls and bits
+ * of code as you cannot see what is happening when single stepping in debuggers
+ * and so on. The exception (in my book at least) is for generated code, where you are
+ * not maintaining it, but may wish to read and understand it. If you single step it, you know that input()
+ * hides some indirect calls, but is always referring to the input stream. This is
+ * probably more readable than ctx->input->istream->input(snarfle0->blarg) and allows me to rejig
+ * the runtime interfaces without changing the generated code too often, without
+ * confusing the reader of the generated output, who may not wish to know the gory
+ * details of the interface inheritance.
+ */
+
+#define		CTX	ctx
+
+/* Aids in accessing scopes for grammar programmers
+ */
+#undef	SCOPE_TYPE
+#undef	SCOPE_STACK
+#undef	SCOPE_TOP
+#define	SCOPE_TYPE(scope)   pSmt2Parser_##scope##_SCOPE
+#define SCOPE_STACK(scope)  pSmt2Parser_##scope##Stack
+#define	SCOPE_TOP(scope)    ctx->pSmt2Parser_##scope##Top
+#define	SCOPE_SIZE(scope)		ctx->pSmt2Parser_##scope##Stack_limit
+#define SCOPE_INSTANCE(scope, i)	(ctx->SCOPE_STACK(scope)->get(ctx->SCOPE_STACK(scope),i))
+
+/* Macros for accessing things in the parser
+ */
+
+#undef	    PARSER
+#undef	    RECOGNIZER
+#undef	    HAVEPARSEDRULE
+#undef		MEMOIZE
+#undef	    INPUT
+#undef	    STRSTREAM
+#undef	    HASEXCEPTION
+#undef	    EXCEPTION
+#undef	    MATCHT
+#undef	    MATCHANYT
+#undef	    FOLLOWSTACK
+#undef	    FOLLOWPUSH
+#undef	    FOLLOWPOP
+#undef	    PRECOVER
+#undef	    PREPORTERROR
+#undef	    LA
+#undef	    LT
+#undef	    CONSTRUCTEX
+#undef	    CONSUME
+#undef	    MARK
+#undef	    REWIND
+#undef	    REWINDLAST
+#undef	    PERRORRECOVERY
+#undef	    HASFAILED
+#undef	    FAILEDFLAG
+#undef	    RECOVERFROMMISMATCHEDSET
+#undef	    RECOVERFROMMISMATCHEDELEMENT
+#undef		INDEX
+#undef      ADAPTOR
+#undef		SEEK
+#undef	    RULEMEMO
+#undef		DBG
+
+#define	    PARSER				ctx->pParser
+#define	    RECOGNIZER				PARSER->rec
+#define	    PSRSTATE				RECOGNIZER->state
+#define	    HAVEPARSEDRULE(r)			RECOGNIZER->alreadyParsedRule(RECOGNIZER, r)
+#define	    MEMOIZE(ri,si)			RECOGNIZER->memoize(RECOGNIZER, ri, si)
+#define	    INPUT				PARSER->tstream
+#define	    STRSTREAM				INPUT
+#define	    ISTREAM				INPUT->istream
+#define	    INDEX()				ISTREAM->index(INPUT->istream)
+#define	    HASEXCEPTION()			(PSRSTATE->error == ANTLR3_TRUE)
+#define	    EXCEPTION				PSRSTATE->exception
+#define	    MATCHT(t, fs)			RECOGNIZER->match(RECOGNIZER, t, fs)
+#define	    MATCHANYT()				RECOGNIZER->matchAny(RECOGNIZER)
+#define	    FOLLOWSTACK				PSRSTATE->following
+#ifdef  SKIP_FOLLOW_SETS
+#define	    FOLLOWPUSH(x)
+#define	    FOLLOWPOP()
+#else
+#define	    FOLLOWPUSH(x)			FOLLOWSTACK->push(FOLLOWSTACK, ((void *)(&(x))), NULL)
+#define	    FOLLOWPOP()				FOLLOWSTACK->pop(FOLLOWSTACK)
+#endif
+#define	    PRECOVER()				RECOGNIZER->recover(RECOGNIZER)
+#define	    PREPORTERROR()			RECOGNIZER->reportError(RECOGNIZER)
+#define	    LA(n)				INPUT->istream->_LA(ISTREAM, n)
+#define	    LT(n)				INPUT->_LT(INPUT, n)
+#define	    CONSTRUCTEX()			RECOGNIZER->exConstruct(RECOGNIZER)
+#define	    CONSUME()				ISTREAM->consume(ISTREAM)
+#define	    MARK()				ISTREAM->mark(ISTREAM)
+#define	    REWIND(m)				ISTREAM->rewind(ISTREAM, m)
+#define	    REWINDLAST()			ISTREAM->rewindLast(ISTREAM)
+#define	    SEEK(n)				ISTREAM->seek(ISTREAM, n)
+#define	    PERRORRECOVERY			PSRSTATE->errorRecovery
+#define	    FAILEDFLAG				PSRSTATE->failed
+#define	    HASFAILED()				(FAILEDFLAG == ANTLR3_TRUE)
+#define	    BACKTRACKING			PSRSTATE->backtracking
+#define	    RECOVERFROMMISMATCHEDSET(s)		RECOGNIZER->recoverFromMismatchedSet(RECOGNIZER, s)
+#define	    RECOVERFROMMISMATCHEDELEMENT(e)	RECOGNIZER->recoverFromMismatchedElement(RECOGNIZER, s)
+#define     ADAPTOR                         ctx->adaptor
+#define		RULEMEMO						PSRSTATE->ruleMemo
+#define		DBG								RECOGNIZER->debugger
+
+
+#define		TOKTEXT(tok, txt)				tok, (pANTLR3_UINT8)txt
+
+/* The 4 tokens defined below may well clash with your own #defines or token types. If so
+ * then for the present you must use different names for your defines as these are hard coded
+ * in the code generator. It would be better not to use such names internally, and maybe
+ * we can change this in a forthcoming release. I deliberately do not #undef these
+ * here as this will at least give you a redefined error somewhere if they clash.
+ */
+#define	    UP	    ANTLR3_TOKEN_UP
+#define	    DOWN    ANTLR3_TOKEN_DOWN
+#define	    EOR	    ANTLR3_TOKEN_EOR
+#define	    INVALID ANTLR3_TOKEN_INVALID
+
+
+/* =============================================================================
+ * Functions to create and destroy scopes. First come the rule scopes, followed
+ * by the global declared scopes.
+ */
+
+
+
+/* ============================================================================= */
+
+/* =============================================================================
+ * Start of recognizer
+ */
+
+
+/** \brief Table of all token names in symbolic order, mainly used for
+ *         error reporting.
+ */
+pANTLR3_UINT8   Smt2ParserTokenNames[148+4]
+     = {
+        (pANTLR3_UINT8) "<invalid>",       /* String to print to indicate an invalid token */
+        (pANTLR3_UINT8) "<EOR>",
+        (pANTLR3_UINT8) "<DOWN>",
+        (pANTLR3_UINT8) "<UP>",
+        (pANTLR3_UINT8) "ALPHA",
+        (pANTLR3_UINT8) "AMPERSAND_TOK",
+        (pANTLR3_UINT8) "AND_TOK",
+        (pANTLR3_UINT8) "ASSERT_TOK",
+        (pANTLR3_UINT8) "AS_TOK",
+        (pANTLR3_UINT8) "ATTRIBUTE_INST_LEVEL",
+        (pANTLR3_UINT8) "ATTRIBUTE_NAMED_TOK",
+        (pANTLR3_UINT8) "ATTRIBUTE_NO_PATTERN_TOK",
+        (pANTLR3_UINT8) "ATTRIBUTE_PATTERN_TOK",
+        (pANTLR3_UINT8) "ATTRIBUTE_RR_PRIORITY",
+        (pANTLR3_UINT8) "ATTRIBUTE_TOK",
+        (pANTLR3_UINT8) "AT_TOK",
+        (pANTLR3_UINT8) "BINARY_LITERAL",
+        (pANTLR3_UINT8) "BV2NAT_TOK",
+        (pANTLR3_UINT8) "CHECKSAT_TOK",
+        (pANTLR3_UINT8) "CHECK_SYNTH_TOK",
+        (pANTLR3_UINT8) "COMMENT",
+        (pANTLR3_UINT8) "CONSTRAINT_TOK",
+        (pANTLR3_UINT8) "CONST_TOK",
+        (pANTLR3_UINT8) "DECIMAL_LITERAL",
+        (pANTLR3_UINT8) "DECLARE_CODATATYPES_TOK",
+        (pANTLR3_UINT8) "DECLARE_CONST_TOK",
+        (pANTLR3_UINT8) "DECLARE_DATATYPES_TOK",
+        (pANTLR3_UINT8) "DECLARE_FUNS_TOK",
+        (pANTLR3_UINT8) "DECLARE_FUN_TOK",
+        (pANTLR3_UINT8) "DECLARE_PREDS_TOK",
+        (pANTLR3_UINT8) "DECLARE_PRIMED_VAR_TOK",
+        (pANTLR3_UINT8) "DECLARE_SORTS_TOK",
+        (pANTLR3_UINT8) "DECLARE_SORT_TOK",
+        (pANTLR3_UINT8) "DECLARE_VAR_TOK",
+        (pANTLR3_UINT8) "DEFINE_CONST_TOK",
+        (pANTLR3_UINT8) "DEFINE_FUNS_REC_TOK",
+        (pANTLR3_UINT8) "DEFINE_FUN_REC_TOK",
+        (pANTLR3_UINT8) "DEFINE_FUN_TOK",
+        (pANTLR3_UINT8) "DEFINE_SORT_TOK",
+        (pANTLR3_UINT8) "DEFINE_TOK",
+        (pANTLR3_UINT8) "DIGIT",
+        (pANTLR3_UINT8) "DISTINCT_TOK",
+        (pANTLR3_UINT8) "DIVISIBLE_TOK",
+        (pANTLR3_UINT8) "DIV_TOK",
+        (pANTLR3_UINT8) "DTSIZE_TOK",
+        (pANTLR3_UINT8) "ECHO_TOK",
+        (pANTLR3_UINT8) "EMPTYSET_TOK",
+        (pANTLR3_UINT8) "EQUAL_TOK",
+        (pANTLR3_UINT8) "EXISTS_TOK",
+        (pANTLR3_UINT8) "EXIT_TOK",
+        (pANTLR3_UINT8) "FMFCARDVAL_TOK",
+        (pANTLR3_UINT8) "FMFCARD_TOK",
+        (pANTLR3_UINT8) "FORALL_TOK",
+        (pANTLR3_UINT8) "FP_NAN_TOK",
+        (pANTLR3_UINT8) "FP_NINF_TOK",
+        (pANTLR3_UINT8) "FP_NZERO_TOK",
+        (pANTLR3_UINT8) "FP_PINF_TOK",
+        (pANTLR3_UINT8) "FP_PZERO_TOK",
+        (pANTLR3_UINT8) "FP_RNA_FULL_TOK",
+        (pANTLR3_UINT8) "FP_RNA_TOK",
+        (pANTLR3_UINT8) "FP_RNE_FULL_TOK",
+        (pANTLR3_UINT8) "FP_RNE_TOK",
+        (pANTLR3_UINT8) "FP_RTN_FULL_TOK",
+        (pANTLR3_UINT8) "FP_RTN_TOK",
+        (pANTLR3_UINT8) "FP_RTP_FULL_TOK",
+        (pANTLR3_UINT8) "FP_RTP_TOK",
+        (pANTLR3_UINT8) "FP_RTZ_FULL_TOK",
+        (pANTLR3_UINT8) "FP_RTZ_TOK",
+        (pANTLR3_UINT8) "FP_TO_FPBV_TOK",
+        (pANTLR3_UINT8) "FP_TO_FPFP_TOK",
+        (pANTLR3_UINT8) "FP_TO_FPR_TOK",
+        (pANTLR3_UINT8) "FP_TO_FPS_TOK",
+        (pANTLR3_UINT8) "FP_TO_FPU_TOK",
+        (pANTLR3_UINT8) "FP_TO_FP_TOK",
+        (pANTLR3_UINT8) "FP_TO_SBV_TOK",
+        (pANTLR3_UINT8) "FP_TO_UBV_TOK",
+        (pANTLR3_UINT8) "GET_ASSERTIONS_TOK",
+        (pANTLR3_UINT8) "GET_ASSIGNMENT_TOK",
+        (pANTLR3_UINT8) "GET_INFO_TOK",
+        (pANTLR3_UINT8) "GET_MODEL_TOK",
+        (pANTLR3_UINT8) "GET_OPTION_TOK",
+        (pANTLR3_UINT8) "GET_PROOF_TOK",
+        (pANTLR3_UINT8) "GET_QE_DISJUNCT_TOK",
+        (pANTLR3_UINT8) "GET_QE_TOK",
+        (pANTLR3_UINT8) "GET_UNSAT_CORE_TOK",
+        (pANTLR3_UINT8) "GET_VALUE_TOK",
+        (pANTLR3_UINT8) "GREATER_THAN_EQUAL_TOK",
+        (pANTLR3_UINT8) "GREATER_THAN_TOK",
+        (pANTLR3_UINT8) "HEX_DIGIT",
+        (pANTLR3_UINT8) "HEX_LITERAL",
+        (pANTLR3_UINT8) "IMPLIES_TOK",
+        (pANTLR3_UINT8) "INCLUDE_TOK",
+        (pANTLR3_UINT8) "INDEX_TOK",
+        (pANTLR3_UINT8) "INST_CLOSURE_TOK",
+        (pANTLR3_UINT8) "INT2BV_TOK",
+        (pANTLR3_UINT8) "INTEGER_LITERAL",
+        (pANTLR3_UINT8) "INV_CONSTRAINT_TOK",
+        (pANTLR3_UINT8) "ITE_TOK",
+        (pANTLR3_UINT8) "KEYWORD",
+        (pANTLR3_UINT8) "LESS_THAN_EQUAL_TOK",
+        (pANTLR3_UINT8) "LESS_THAN_TOK",
+        (pANTLR3_UINT8) "LET_TOK",
+        (pANTLR3_UINT8) "LPAREN_TOK",
+        (pANTLR3_UINT8) "META_INFO_TOK",
+        (pANTLR3_UINT8) "MINUS_TOK",
+        (pANTLR3_UINT8) "NILREF_TOK",
+        (pANTLR3_UINT8) "NOT_TOK",
+        (pANTLR3_UINT8) "NUMERAL",
+        (pANTLR3_UINT8) "OR_TOK",
+        (pANTLR3_UINT8) "PLUS_TOK",
+        (pANTLR3_UINT8) "POP_TOK",
+        (pANTLR3_UINT8) "PROPAGATION_RULE_TOK",
+        (pANTLR3_UINT8) "PUSH_TOK",
+        (pANTLR3_UINT8) "QUOTED_SYMBOL",
+        (pANTLR3_UINT8) "REALLCHAR_TOK",
+        (pANTLR3_UINT8) "REDUCTION_RULE_TOK",
+        (pANTLR3_UINT8) "RENOSTR_TOK",
+        (pANTLR3_UINT8) "RESET_ASSERTIONS_TOK",
+        (pANTLR3_UINT8) "RESET_TOK",
+        (pANTLR3_UINT8) "REWRITE_RULE_TOK",
+        (pANTLR3_UINT8) "RPAREN_TOK",
+        (pANTLR3_UINT8) "SET_INFO_TOK",
+        (pANTLR3_UINT8) "SET_LOGIC_TOK",
+        (pANTLR3_UINT8) "SET_OPTIONS_TOK",
+        (pANTLR3_UINT8) "SET_OPTION_TOK",
+        (pANTLR3_UINT8) "SIMPLE_SYMBOL",
+        (pANTLR3_UINT8) "SIMPLIFY_TOK",
+        (pANTLR3_UINT8) "STAR_TOK",
+        (pANTLR3_UINT8) "STRING_LITERAL_2_0",
+        (pANTLR3_UINT8) "STRING_LITERAL_2_5",
+        (pANTLR3_UINT8) "SYGUS_CONSTANT_TOK",
+        (pANTLR3_UINT8) "SYGUS_ENUM_CONS_TOK",
+        (pANTLR3_UINT8) "SYGUS_ENUM_TOK",
+        (pANTLR3_UINT8) "SYGUS_INPUT_VARIABLE_TOK",
+        (pANTLR3_UINT8) "SYGUS_LOCAL_VARIABLE_TOK",
+        (pANTLR3_UINT8) "SYGUS_QUOTED_LITERAL",
+        (pANTLR3_UINT8) "SYGUS_VARIABLE_TOK",
+        (pANTLR3_UINT8) "SYMBOL_CHAR",
+        (pANTLR3_UINT8) "SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE",
+        (pANTLR3_UINT8) "SYNTH_FUN_TOK",
+        (pANTLR3_UINT8) "SYNTH_INV_TOK",
+        (pANTLR3_UINT8) "UNIVSET_TOK",
+        (pANTLR3_UINT8) "UNTERMINATED_QUOTED_SYMBOL",
+        (pANTLR3_UINT8) "WHITESPACE",
+        (pANTLR3_UINT8) "XOR_TOK",
+        (pANTLR3_UINT8) "'\\\\'",
+        (pANTLR3_UINT8) "'extract'",
+        (pANTLR3_UINT8) "'repeat'",
+        (pANTLR3_UINT8) "'rotate_left'",
+        (pANTLR3_UINT8) "'rotate_right'",
+        (pANTLR3_UINT8) "'sign_extend'",
+        (pANTLR3_UINT8) "'zero_extend'"
+       };
+
+
+
+// Forward declare the locally static matching functions we have generated.
+//
+static 
+ CVC4::parser::smt2::myExpr
+	parseExpr    (pSmt2Parser ctx);
+static 
+ CVC4::Command*
+	parseCommand    (pSmt2Parser ctx);
+static 
+ CVC4::Command*
+	parseSygus    (pSmt2Parser ctx);
+static 
+ void
+	command    (pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+static 
+ void
+	sygusCommand    (pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+static 
+ void
+	sygusGTerm    (pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun);
+static 
+ void
+	metaInfoInternal    (pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+static 
+ void
+	setOptionInternal    (pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+static 
+ void
+	smt25Command    (pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+static 
+ void
+	extendedCommand    (pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+static 
+ void
+	datatypesDefCommand    (pSmt2Parser ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd);
+static 
+ void
+	rewriterulesCommand    (pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+static 
+ void
+	rewritePropaKind    (pSmt2Parser ctx, CVC4::Kind& kind);
+static 
+ void
+	pattern    (pSmt2Parser ctx, CVC4::Expr& expr);
+static 
+ void
+	simpleSymbolicExprNoKeyword    (pSmt2Parser ctx, CVC4::SExpr& sexpr);
+static 
+ void
+	keyword    (pSmt2Parser ctx, std::string& s);
+static 
+ void
+	simpleSymbolicExpr    (pSmt2Parser ctx, CVC4::SExpr& sexpr);
+static 
+ void
+	symbolicExpr    (pSmt2Parser ctx, CVC4::SExpr& sexpr);
+static 
+ void
+	term    (pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2);
+static 
+ void
+	attribute    (pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& attr);
+static 
+ void
+	indexedFunctionName    (pSmt2Parser ctx, CVC4::Expr& op);
+static 
+ void
+	badIndexedFunctionName    (pSmt2Parser ctx);
+static 
+ void
+	termList    (pSmt2Parser ctx, std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr);
+static 
+ void
+	str    (pSmt2Parser ctx, std::string& s, bool fsmtlib);
+static 
+ void
+	builtinOp    (pSmt2Parser ctx, CVC4::Kind& kind);
+static 
+ void
+	quantOp    (pSmt2Parser ctx, CVC4::Kind& kind);
+static 
+ void
+	functionName    (pSmt2Parser ctx, std::string& name, CVC4::parser::DeclarationCheck check);
+static 
+ void
+	sortList    (pSmt2Parser ctx, std::vector<CVC4::Type>& sorts);
+static 
+ void
+	nonemptySortList    (pSmt2Parser ctx, std::vector<CVC4::Type>& sorts);
+static 
+ void
+	sortedVarList    (pSmt2Parser ctx, std::vector<std::pair<std::string, CVC4::Type> >& sortedVars);
+static 
+ void
+	sortName    (pSmt2Parser ctx, std::string& name, CVC4::parser::DeclarationCheck check);
+static 
+ void
+	sortSymbol    (pSmt2Parser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check);
+static 
+ void
+	symbolList    (pSmt2Parser ctx, std::vector<std::string>& names, CVC4::parser::DeclarationCheck check, CVC4::parser::SymbolType type);
+static 
+ void
+	symbol    (pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, CVC4::parser::SymbolType type);
+static 
+ void
+	nonemptyNumeralList    (pSmt2Parser ctx, std::vector<uint64_t>& numerals);
+static 
+ void
+	datatypeDef    (pSmt2Parser ctx, bool isCo, std::vector<CVC4::Datatype>& datatypes, std::vector< CVC4::Type >& params);
+static 
+ void
+	constructorDef    (pSmt2Parser ctx, CVC4::Datatype& type);
+static 
+ void
+	selector    (pSmt2Parser ctx, CVC4::DatatypeConstructor& ctor);
+static void	Smt2ParserFree(pSmt2Parser ctx);
+static void     Smt2ParserReset (pSmt2Parser ctx);
+
+/* For use in tree output where we are accumulating rule labels via label += ruleRef
+ * we need a function that knows how to free a return scope when the list is destroyed.
+ * We cannot just use ANTLR3_FREE because in debug tracking mode, this is a macro.
+ */
+static	void ANTLR3_CDECL freeScope(void * scope)
+{
+    ANTLR3_FREE(scope);
+}
+
+/** \brief Name of the grammar file that generated this code
+ */
+static const char fileName[] = "../../../../../../src/parser/smt2/Smt2.g";
+
+/** \brief Return the name of the grammar file that generated this code.
+ */
+static const char * getGrammarFileName()
+{
+	return fileName;
+}
+/** \brief Create a new Smt2Parser parser and return a context for it.
+ *
+ * \param[in] instream Pointer to an input stream interface.
+ *
+ * \return Pointer to new parser context upon success.
+ */
+ANTLR3_API pSmt2Parser
+Smt2ParserNew   (pANTLR3_COMMON_TOKEN_STREAM instream)
+{
+	// See if we can create a new parser with the standard constructor
+	//
+	return Smt2ParserNewSSD(instream, NULL);
+}
+
+/** \brief Create a new Smt2Parser parser and return a context for it.
+ *
+ * \param[in] instream Pointer to an input stream interface.
+ *
+ * \return Pointer to new parser context upon success.
+ */
+ANTLR3_API pSmt2Parser
+Smt2ParserNewSSD   (pANTLR3_COMMON_TOKEN_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state)
+{
+    pSmt2Parser ctx;	    /* Context structure we will build and return   */
+
+    ctx	= (pSmt2Parser) ANTLR3_CALLOC(1, sizeof(Smt2Parser));
+
+    if	(ctx == NULL)
+    {
+		// Failed to allocate memory for parser context
+		//
+        return  NULL;
+    }
+
+    /* -------------------------------------------------------------------
+     * Memory for basic structure is allocated, now to fill in
+     * the base ANTLR3 structures. We initialize the function pointers
+     * for the standard ANTLR3 parser function set, but upon return
+     * from here, the programmer may set the pointers to provide custom
+     * implementations of each function.
+     *
+     * We don't use the macros defined in Smt2Parser.h here, in order that you can get a sense
+     * of what goes where.
+     */
+
+    /* Create a base parser/recognizer, using the supplied token stream
+     */
+    ctx->pParser	    = antlr3ParserNewStream(ANTLR3_SIZE_HINT, instream->tstream, state);
+    /* Install the implementation of our Smt2Parser interface
+     */
+    ctx->parseExpr	= parseExpr;
+    ctx->parseCommand	= parseCommand;
+    ctx->parseSygus	= parseSygus;
+    ctx->command	= command;
+    ctx->sygusCommand	= sygusCommand;
+    ctx->sygusGTerm	= sygusGTerm;
+    ctx->metaInfoInternal	= metaInfoInternal;
+    ctx->setOptionInternal	= setOptionInternal;
+    ctx->smt25Command	= smt25Command;
+    ctx->extendedCommand	= extendedCommand;
+    ctx->datatypesDefCommand	= datatypesDefCommand;
+    ctx->rewriterulesCommand	= rewriterulesCommand;
+    ctx->rewritePropaKind	= rewritePropaKind;
+    ctx->pattern	= pattern;
+    ctx->simpleSymbolicExprNoKeyword	= simpleSymbolicExprNoKeyword;
+    ctx->keyword	= keyword;
+    ctx->simpleSymbolicExpr	= simpleSymbolicExpr;
+    ctx->symbolicExpr	= symbolicExpr;
+    ctx->term	= term;
+    ctx->attribute	= attribute;
+    ctx->indexedFunctionName	= indexedFunctionName;
+    ctx->badIndexedFunctionName	= badIndexedFunctionName;
+    ctx->termList	= termList;
+    ctx->str	= str;
+    ctx->builtinOp	= builtinOp;
+    ctx->quantOp	= quantOp;
+    ctx->functionName	= functionName;
+    ctx->sortList	= sortList;
+    ctx->nonemptySortList	= nonemptySortList;
+    ctx->sortedVarList	= sortedVarList;
+    ctx->sortName	= sortName;
+    ctx->sortSymbol	= sortSymbol;
+    ctx->symbolList	= symbolList;
+    ctx->symbol	= symbol;
+    ctx->nonemptyNumeralList	= nonemptyNumeralList;
+    ctx->datatypeDef	= datatypeDef;
+    ctx->constructorDef	= constructorDef;
+    ctx->selector	= selector;
+    ctx->free			= Smt2ParserFree;
+    ctx->reset			= Smt2ParserReset;
+    ctx->getGrammarFileName	= getGrammarFileName;
+
+    /* Install the scope pushing methods.
+     */
+
+    /* Install the token table
+     */
+    PSRSTATE->tokenNames   = Smt2ParserTokenNames;
+
+
+    /* Return the newly built parser to the caller
+     */
+    return  ctx;
+}
+
+static void
+Smt2ParserReset (pSmt2Parser ctx)
+{
+    RECOGNIZER->reset(RECOGNIZER);
+}
+
+/** Free the parser resources
+ */
+ static void
+ Smt2ParserFree(pSmt2Parser ctx)
+ {
+    /* Free any scope memory
+     */
+
+	// Free this parser
+	//
+    ctx->pParser->free(ctx->pParser);
+
+
+    ANTLR3_FREE(ctx);
+
+    /* Everything is released, so we can return
+     */
+    return;
+ }
+
+/** Return token names used by this 
+parser
+
+ *
+ * The returned pointer is used as an index into the token names table (using the token
+ * number as the index).
+ *
+ * \return Pointer to first char * in the table.
+ */
+static pANTLR3_UINT8    *getTokenNames()
+{
+        return Smt2ParserTokenNames;
+}
+
+
+/* Declare the bitsets
+ */
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_parseExpr119  */
+static	ANTLR3_BITWORD FOLLOW_term_in_parseExpr119_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_parseExpr119	= { FOLLOW_term_in_parseExpr119_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EOF_in_parseExpr126  */
+static	ANTLR3_BITWORD FOLLOW_EOF_in_parseExpr126_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_parseExpr126	= { FOLLOW_EOF_in_parseExpr126_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_parseCommand155  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_parseCommand155_bits[]	= { ANTLR3_UINT64_LIT(0x000220FDBF040080), ANTLR3_UINT64_LIT(0x76E9C080003FF000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_parseCommand155	= { FOLLOW_LPAREN_TOK_in_parseCommand155_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_command_in_parseCommand157  */
+static	ANTLR3_BITWORD FOLLOW_command_in_parseCommand157_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_command_in_parseCommand157	= { FOLLOW_command_in_parseCommand157_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_parseCommand160  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_parseCommand160_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_parseCommand160	= { FOLLOW_RPAREN_TOK_in_parseCommand160_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_parseCommand173  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_parseCommand173_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000008000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_parseCommand173	= { FOLLOW_LPAREN_TOK_in_parseCommand173_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INCLUDE_TOK_in_parseCommand175  */
+static	ANTLR3_BITWORD FOLLOW_INCLUDE_TOK_in_parseCommand175_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000003) };
+static  ANTLR3_BITSET_LIST FOLLOW_INCLUDE_TOK_in_parseCommand175	= { FOLLOW_INCLUDE_TOK_in_parseCommand175_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_parseCommand177  */
+static	ANTLR3_BITWORD FOLLOW_str_in_parseCommand177_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_parseCommand177	= { FOLLOW_str_in_parseCommand177_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_parseCommand180  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_parseCommand180_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_parseCommand180	= { FOLLOW_RPAREN_TOK_in_parseCommand180_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EOF_in_parseCommand193  */
+static	ANTLR3_BITWORD FOLLOW_EOF_in_parseCommand193_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_parseCommand193	= { FOLLOW_EOF_in_parseCommand193_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_parseSygus222  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_parseSygus222_bits[]	= { ANTLR3_UINT64_LIT(0x000220FFFF2C0080), ANTLR3_UINT64_LIT(0x76E9C081003FF000), ANTLR3_UINT64_LIT(0x0000000000001800) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_parseSygus222	= { FOLLOW_LPAREN_TOK_in_parseSygus222_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sygusCommand_in_parseSygus224  */
+static	ANTLR3_BITWORD FOLLOW_sygusCommand_in_parseSygus224_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sygusCommand_in_parseSygus224	= { FOLLOW_sygusCommand_in_parseSygus224_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_parseSygus227  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_parseSygus227_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_parseSygus227	= { FOLLOW_RPAREN_TOK_in_parseSygus227_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EOF_in_parseSygus233  */
+static	ANTLR3_BITWORD FOLLOW_EOF_in_parseSygus233_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_parseSygus233	= { FOLLOW_EOF_in_parseSygus233_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SET_LOGIC_TOK_in_command261  */
+static	ANTLR3_BITWORD FOLLOW_SET_LOGIC_TOK_in_command261_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_SET_LOGIC_TOK_in_command261	= { FOLLOW_SET_LOGIC_TOK_in_command261_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_command263  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_command263_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_command263	= { FOLLOW_symbol_in_command263_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SET_INFO_TOK_in_command282  */
+static	ANTLR3_BITWORD FOLLOW_SET_INFO_TOK_in_command282_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000400000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_SET_INFO_TOK_in_command282	= { FOLLOW_SET_INFO_TOK_in_command282_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_metaInfoInternal_in_command284  */
+static	ANTLR3_BITWORD FOLLOW_metaInfoInternal_in_command284_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_metaInfoInternal_in_command284	= { FOLLOW_metaInfoInternal_in_command284_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_INFO_TOK_in_command297  */
+static	ANTLR3_BITWORD FOLLOW_GET_INFO_TOK_in_command297_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000400000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_GET_INFO_TOK_in_command297	= { FOLLOW_GET_INFO_TOK_in_command297_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_command299  */
+static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_command299_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_command299	= { FOLLOW_KEYWORD_in_command299_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SET_OPTION_TOK_in_command317  */
+static	ANTLR3_BITWORD FOLLOW_SET_OPTION_TOK_in_command317_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000400000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_SET_OPTION_TOK_in_command317	= { FOLLOW_SET_OPTION_TOK_in_command317_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_setOptionInternal_in_command319  */
+static	ANTLR3_BITWORD FOLLOW_setOptionInternal_in_command319_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_setOptionInternal_in_command319	= { FOLLOW_setOptionInternal_in_command319_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_OPTION_TOK_in_command332  */
+static	ANTLR3_BITWORD FOLLOW_GET_OPTION_TOK_in_command332_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000400000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_GET_OPTION_TOK_in_command332	= { FOLLOW_GET_OPTION_TOK_in_command332_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_command334  */
+static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_command334_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_command334	= { FOLLOW_KEYWORD_in_command334_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_SORT_TOK_in_command352  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_SORT_TOK_in_command352_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_SORT_TOK_in_command352	= { FOLLOW_DECLARE_SORT_TOK_in_command352_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_command366  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_command366_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_command366	= { FOLLOW_symbol_in_command366_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_command381  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_command381_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_command381	= { FOLLOW_INTEGER_LITERAL_in_command381_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINE_SORT_TOK_in_command399  */
+static	ANTLR3_BITWORD FOLLOW_DEFINE_SORT_TOK_in_command399_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_DEFINE_SORT_TOK_in_command399	= { FOLLOW_DEFINE_SORT_TOK_in_command399_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_command407  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_command407_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_command407	= { FOLLOW_symbol_in_command407_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_command420  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_command420_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2902000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_command420	= { FOLLOW_LPAREN_TOK_in_command420_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolList_in_command422  */
+static	ANTLR3_BITWORD FOLLOW_symbolList_in_command422_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbolList_in_command422	= { FOLLOW_symbolList_in_command422_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_command425  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_command425_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_command425	= { FOLLOW_RPAREN_TOK_in_command425_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_command437  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_command437_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_command437	= { FOLLOW_sortSymbol_in_command437_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_FUN_TOK_in_command456  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_FUN_TOK_in_command456_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_FUN_TOK_in_command456	= { FOLLOW_DECLARE_FUN_TOK_in_command456_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_command464  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_command464_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_command464	= { FOLLOW_symbol_in_command464_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_command477  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_command477_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2902004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_command477	= { FOLLOW_LPAREN_TOK_in_command477_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortList_in_command479  */
+static	ANTLR3_BITWORD FOLLOW_sortList_in_command479_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortList_in_command479	= { FOLLOW_sortList_in_command479_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_command482  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_command482_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_command482	= { FOLLOW_RPAREN_TOK_in_command482_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_command488  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_command488_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_command488	= { FOLLOW_sortSymbol_in_command488_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINE_FUN_TOK_in_command507  */
+static	ANTLR3_BITWORD FOLLOW_DEFINE_FUN_TOK_in_command507_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_DEFINE_FUN_TOK_in_command507	= { FOLLOW_DEFINE_FUN_TOK_in_command507_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_command515  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_command515_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_command515	= { FOLLOW_symbol_in_command515_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_command528  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_command528_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_command528	= { FOLLOW_LPAREN_TOK_in_command528_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_command530  */
+static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_command530_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_command530	= { FOLLOW_sortedVarList_in_command530_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_command533  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_command533_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_command533	= { FOLLOW_RPAREN_TOK_in_command533_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_command539  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_command539_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_command539	= { FOLLOW_sortSymbol_in_command539_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_command552  */
+static	ANTLR3_BITWORD FOLLOW_term_in_command552_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_command552	= { FOLLOW_term_in_command552_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_VALUE_TOK_in_command571  */
+static	ANTLR3_BITWORD FOLLOW_GET_VALUE_TOK_in_command571_bits[]	= { ANTLR3_UINT64_LIT(0xFFFFFFFFFFFFFFF0), ANTLR3_UINT64_LIT(0xFFFFFFFFFFFFFFFF), ANTLR3_UINT64_LIT(0x0000000000FFFFFF) };
+static  ANTLR3_BITSET_LIST FOLLOW_GET_VALUE_TOK_in_command571	= { FOLLOW_GET_VALUE_TOK_in_command571_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_command581  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_command581_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_command581	= { FOLLOW_LPAREN_TOK_in_command581_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_command583  */
+static	ANTLR3_BITWORD FOLLOW_termList_in_command583_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_termList_in_command583	= { FOLLOW_termList_in_command583_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_command586  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_command586_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_command586	= { FOLLOW_RPAREN_TOK_in_command586_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_command602  */
+static	ANTLR3_BITWORD FOLLOW_set_in_command602_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_set_in_command602	= { FOLLOW_set_in_command602_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_ASSIGNMENT_TOK_in_command629  */
+static	ANTLR3_BITWORD FOLLOW_GET_ASSIGNMENT_TOK_in_command629_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_GET_ASSIGNMENT_TOK_in_command629	= { FOLLOW_GET_ASSIGNMENT_TOK_in_command629_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSERT_TOK_in_command649  */
+static	ANTLR3_BITWORD FOLLOW_ASSERT_TOK_in_command649_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_ASSERT_TOK_in_command649	= { FOLLOW_ASSERT_TOK_in_command649_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_command669  */
+static	ANTLR3_BITWORD FOLLOW_term_in_command669_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_command669	= { FOLLOW_term_in_command669_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CHECKSAT_TOK_in_command688  */
+static	ANTLR3_BITWORD FOLLOW_CHECKSAT_TOK_in_command688_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90002), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_CHECKSAT_TOK_in_command688	= { FOLLOW_CHECKSAT_TOK_in_command688_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_command704  */
+static	ANTLR3_BITWORD FOLLOW_term_in_command704_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_command704	= { FOLLOW_term_in_command704_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_ASSERTIONS_TOK_in_command745  */
+static	ANTLR3_BITWORD FOLLOW_GET_ASSERTIONS_TOK_in_command745_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_GET_ASSERTIONS_TOK_in_command745	= { FOLLOW_GET_ASSERTIONS_TOK_in_command745_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_PROOF_TOK_in_command765  */
+static	ANTLR3_BITWORD FOLLOW_GET_PROOF_TOK_in_command765_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_GET_PROOF_TOK_in_command765	= { FOLLOW_GET_PROOF_TOK_in_command765_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_UNSAT_CORE_TOK_in_command785  */
+static	ANTLR3_BITWORD FOLLOW_GET_UNSAT_CORE_TOK_in_command785_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_GET_UNSAT_CORE_TOK_in_command785	= { FOLLOW_GET_UNSAT_CORE_TOK_in_command785_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PUSH_TOK_in_command805  */
+static	ANTLR3_BITWORD FOLLOW_PUSH_TOK_in_command805_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_PUSH_TOK_in_command805	= { FOLLOW_PUSH_TOK_in_command805_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_command823  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_command823_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_command823	= { FOLLOW_INTEGER_LITERAL_in_command823_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_POP_TOK_in_command847  */
+static	ANTLR3_BITWORD FOLLOW_POP_TOK_in_command847_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_POP_TOK_in_command847	= { FOLLOW_POP_TOK_in_command847_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_command865  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_command865_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_command865	= { FOLLOW_INTEGER_LITERAL_in_command865_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EXIT_TOK_in_command899  */
+static	ANTLR3_BITWORD FOLLOW_EXIT_TOK_in_command899_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EXIT_TOK_in_command899	= { FOLLOW_EXIT_TOK_in_command899_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_smt25Command_in_command918  */
+static	ANTLR3_BITWORD FOLLOW_smt25Command_in_command918_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_smt25Command_in_command918	= { FOLLOW_smt25Command_in_command918_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_extendedCommand_in_command938  */
+static	ANTLR3_BITWORD FOLLOW_extendedCommand_in_command938_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_extendedCommand_in_command938	= { FOLLOW_extendedCommand_in_command938_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SIMPLE_SYMBOL_in_command958  */
+static	ANTLR3_BITWORD FOLLOW_SIMPLE_SYMBOL_in_command958_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SIMPLE_SYMBOL_in_command958	= { FOLLOW_SIMPLE_SYMBOL_in_command958_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_VAR_TOK_in_sygusCommand990  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_VAR_TOK_in_sygusCommand990_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_VAR_TOK_in_sygusCommand990	= { FOLLOW_DECLARE_VAR_TOK_in_sygusCommand990_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusCommand998  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusCommand998_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusCommand998	= { FOLLOW_symbol_in_sygusCommand998_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusCommand1011  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusCommand1011_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusCommand1011	= { FOLLOW_sortSymbol_in_sygusCommand1011_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_PRIMED_VAR_TOK_in_sygusCommand1030  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_PRIMED_VAR_TOK_in_sygusCommand1030_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_PRIMED_VAR_TOK_in_sygusCommand1030	= { FOLLOW_DECLARE_PRIMED_VAR_TOK_in_sygusCommand1030_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusCommand1038  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusCommand1038_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusCommand1038	= { FOLLOW_symbol_in_sygusCommand1038_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusCommand1051  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusCommand1051_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusCommand1051	= { FOLLOW_sortSymbol_in_sygusCommand1051_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SYNTH_FUN_TOK_in_sygusCommand1073  */
+static	ANTLR3_BITWORD FOLLOW_SYNTH_FUN_TOK_in_sygusCommand1073_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_SYNTH_FUN_TOK_in_sygusCommand1073	= { FOLLOW_SYNTH_FUN_TOK_in_sygusCommand1073_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SYNTH_INV_TOK_in_sygusCommand1077  */
+static	ANTLR3_BITWORD FOLLOW_SYNTH_INV_TOK_in_sygusCommand1077_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_SYNTH_INV_TOK_in_sygusCommand1077	= { FOLLOW_SYNTH_INV_TOK_in_sygusCommand1077_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusCommand1093  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusCommand1093_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusCommand1093	= { FOLLOW_symbol_in_sygusCommand1093_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusCommand1100  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusCommand1100_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusCommand1100	= { FOLLOW_LPAREN_TOK_in_sygusCommand1100_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_sygusCommand1102  */
+static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_sygusCommand1102_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_sygusCommand1102	= { FOLLOW_sortedVarList_in_sygusCommand1102_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusCommand1105  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusCommand1105_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280002), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusCommand1105	= { FOLLOW_RPAREN_TOK_in_sygusCommand1105_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusCommand1119  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusCommand1119_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusCommand1119	= { FOLLOW_sortSymbol_in_sygusCommand1119_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusCommand1133  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusCommand1133_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusCommand1133	= { FOLLOW_LPAREN_TOK_in_sygusCommand1133_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusCommand1141  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusCommand1141_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusCommand1141	= { FOLLOW_LPAREN_TOK_in_sygusCommand1141_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusCommand1149  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusCommand1149_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusCommand1149	= { FOLLOW_symbol_in_sygusCommand1149_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusCommand1159  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusCommand1159_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusCommand1159	= { FOLLOW_sortSymbol_in_sygusCommand1159_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusCommand1190  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusCommand1190_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2802004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusCommand1190	= { FOLLOW_LPAREN_TOK_in_sygusCommand1190_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sygusGTerm_in_sygusCommand1194  */
+static	ANTLR3_BITWORD FOLLOW_sygusGTerm_in_sygusCommand1194_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2902004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static  ANTLR3_BITSET_LIST FOLLOW_sygusGTerm_in_sygusCommand1194	= { FOLLOW_sygusGTerm_in_sygusCommand1194_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusCommand1215  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusCommand1215_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusCommand1215	= { FOLLOW_RPAREN_TOK_in_sygusCommand1215_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusCommand1225  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusCommand1225_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusCommand1225	= { FOLLOW_RPAREN_TOK_in_sygusCommand1225_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusCommand1239  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusCommand1239_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusCommand1239	= { FOLLOW_RPAREN_TOK_in_sygusCommand1239_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CONSTRAINT_TOK_in_sygusCommand1266  */
+static	ANTLR3_BITWORD FOLLOW_CONSTRAINT_TOK_in_sygusCommand1266_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_CONSTRAINT_TOK_in_sygusCommand1266	= { FOLLOW_CONSTRAINT_TOK_in_sygusCommand1266_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_sygusCommand1274  */
+static	ANTLR3_BITWORD FOLLOW_term_in_sygusCommand1274_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_sygusCommand1274	= { FOLLOW_term_in_sygusCommand1274_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INV_CONSTRAINT_TOK_in_sygusCommand1287  */
+static	ANTLR3_BITWORD FOLLOW_INV_CONSTRAINT_TOK_in_sygusCommand1287_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_INV_CONSTRAINT_TOK_in_sygusCommand1287	= { FOLLOW_INV_CONSTRAINT_TOK_in_sygusCommand1287_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusCommand1297  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusCommand1297_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280002), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusCommand1297	= { FOLLOW_symbol_in_sygusCommand1297_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CHECK_SYNTH_TOK_in_sygusCommand1321  */
+static	ANTLR3_BITWORD FOLLOW_CHECK_SYNTH_TOK_in_sygusCommand1321_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_CHECK_SYNTH_TOK_in_sygusCommand1321	= { FOLLOW_CHECK_SYNTH_TOK_in_sygusCommand1321_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_command_in_sygusCommand1339  */
+static	ANTLR3_BITWORD FOLLOW_command_in_sygusCommand1339_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_command_in_sygusCommand1339	= { FOLLOW_command_in_sygusCommand1339_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusGTerm1380  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusGTerm1380_bits[]	= { ANTLR3_UINT64_LIT(0x000C9A02402A0040), ANTLR3_UINT64_LIT(0xA802353B24C00000), ANTLR3_UINT64_LIT(0x0000000000095964) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusGTerm1380	= { FOLLOW_LPAREN_TOK_in_sygusGTerm1380_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_builtinOp_in_sygusGTerm1393  */
+static	ANTLR3_BITWORD FOLLOW_builtinOp_in_sygusGTerm1393_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2902004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static  ANTLR3_BITSET_LIST FOLLOW_builtinOp_in_sygusGTerm1393	= { FOLLOW_builtinOp_in_sygusGTerm1393_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LET_TOK_in_sygusGTerm1404  */
+static	ANTLR3_BITWORD FOLLOW_LET_TOK_in_sygusGTerm1404_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LET_TOK_in_sygusGTerm1404	= { FOLLOW_LET_TOK_in_sygusGTerm1404_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusGTerm1406  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusGTerm1406_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusGTerm1406	= { FOLLOW_LPAREN_TOK_in_sygusGTerm1406_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusGTerm1419  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusGTerm1419_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusGTerm1419	= { FOLLOW_LPAREN_TOK_in_sygusGTerm1419_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusGTerm1430  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusGTerm1430_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusGTerm1430	= { FOLLOW_symbol_in_sygusGTerm1430_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusGTerm1442  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusGTerm1442_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2802004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusGTerm1442	= { FOLLOW_sortSymbol_in_sygusGTerm1442_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sygusGTerm_in_sygusGTerm1456  */
+static	ANTLR3_BITWORD FOLLOW_sygusGTerm_in_sygusGTerm1456_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sygusGTerm_in_sygusGTerm1456	= { FOLLOW_sygusGTerm_in_sygusGTerm1456_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusGTerm1467  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusGTerm1467_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusGTerm1467	= { FOLLOW_RPAREN_TOK_in_sygusGTerm1467_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusGTerm1472  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusGTerm1472_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2902004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusGTerm1472	= { FOLLOW_RPAREN_TOK_in_sygusGTerm1472_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SYGUS_CONSTANT_TOK_in_sygusGTerm1480  */
+static	ANTLR3_BITWORD FOLLOW_SYGUS_CONSTANT_TOK_in_sygusGTerm1480_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_SYGUS_CONSTANT_TOK_in_sygusGTerm1480	= { FOLLOW_SYGUS_CONSTANT_TOK_in_sygusGTerm1480_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusGTerm1482  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusGTerm1482_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2902004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusGTerm1482	= { FOLLOW_sortSymbol_in_sygusGTerm1482_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SYGUS_VARIABLE_TOK_in_sygusGTerm1500  */
+static	ANTLR3_BITWORD FOLLOW_SYGUS_VARIABLE_TOK_in_sygusGTerm1500_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_SYGUS_VARIABLE_TOK_in_sygusGTerm1500	= { FOLLOW_SYGUS_VARIABLE_TOK_in_sygusGTerm1500_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusGTerm1502  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusGTerm1502_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2902004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusGTerm1502	= { FOLLOW_sortSymbol_in_sygusGTerm1502_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SYGUS_LOCAL_VARIABLE_TOK_in_sygusGTerm1519  */
+static	ANTLR3_BITWORD FOLLOW_SYGUS_LOCAL_VARIABLE_TOK_in_sygusGTerm1519_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_SYGUS_LOCAL_VARIABLE_TOK_in_sygusGTerm1519	= { FOLLOW_SYGUS_LOCAL_VARIABLE_TOK_in_sygusGTerm1519_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusGTerm1521  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusGTerm1521_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2902004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusGTerm1521	= { FOLLOW_sortSymbol_in_sygusGTerm1521_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SYGUS_INPUT_VARIABLE_TOK_in_sygusGTerm1538  */
+static	ANTLR3_BITWORD FOLLOW_SYGUS_INPUT_VARIABLE_TOK_in_sygusGTerm1538_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_SYGUS_INPUT_VARIABLE_TOK_in_sygusGTerm1538	= { FOLLOW_SYGUS_INPUT_VARIABLE_TOK_in_sygusGTerm1538_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusGTerm1540  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusGTerm1540_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2902004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusGTerm1540	= { FOLLOW_sortSymbol_in_sygusGTerm1540_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusGTerm1557  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusGTerm1557_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2902004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusGTerm1557	= { FOLLOW_symbol_in_sygusGTerm1557_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sygusGTerm_in_sygusGTerm1585  */
+static	ANTLR3_BITWORD FOLLOW_sygusGTerm_in_sygusGTerm1585_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2902004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static  ANTLR3_BITSET_LIST FOLLOW_sygusGTerm_in_sygusGTerm1585	= { FOLLOW_sygusGTerm_in_sygusGTerm1585_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusGTerm1608  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusGTerm1608_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusGTerm1608	= { FOLLOW_RPAREN_TOK_in_sygusGTerm1608_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_sygusGTerm1616  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_sygusGTerm1616_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_sygusGTerm1616	= { FOLLOW_INTEGER_LITERAL_in_sygusGTerm1616_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_HEX_LITERAL_in_sygusGTerm1628  */
+static	ANTLR3_BITWORD FOLLOW_HEX_LITERAL_in_sygusGTerm1628_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_HEX_LITERAL_in_sygusGTerm1628	= { FOLLOW_HEX_LITERAL_in_sygusGTerm1628_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BINARY_LITERAL_in_sygusGTerm1640  */
+static	ANTLR3_BITWORD FOLLOW_BINARY_LITERAL_in_sygusGTerm1640_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BINARY_LITERAL_in_sygusGTerm1640	= { FOLLOW_BINARY_LITERAL_in_sygusGTerm1640_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_sygusGTerm1652  */
+static	ANTLR3_BITWORD FOLLOW_str_in_sygusGTerm1652_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_sygusGTerm1652	= { FOLLOW_str_in_sygusGTerm1652_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusGTerm1665  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusGTerm1665_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000008) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusGTerm1665	= { FOLLOW_symbol_in_sygusGTerm1665_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SYGUS_ENUM_CONS_TOK_in_sygusGTerm1674  */
+static	ANTLR3_BITWORD FOLLOW_SYGUS_ENUM_CONS_TOK_in_sygusGTerm1674_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_SYGUS_ENUM_CONS_TOK_in_sygusGTerm1674	= { FOLLOW_SYGUS_ENUM_CONS_TOK_in_sygusGTerm1674_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusGTerm1676  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusGTerm1676_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusGTerm1676	= { FOLLOW_symbol_in_sygusGTerm1676_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_metaInfoInternal1718  */
+static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_metaInfoInternal1718_bits[]	= { ANTLR3_UINT64_LIT(0x000EBA7B54AF00C0), ANTLR3_UINT64_LIT(0xFEEBF55FA6F3F000), ANTLR3_UINT64_LIT(0x0000000000095803) };
+static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_metaInfoInternal1718	= { FOLLOW_KEYWORD_in_metaInfoInternal1718_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_metaInfoInternal1720  */
+static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_metaInfoInternal1720_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_metaInfoInternal1720	= { FOLLOW_symbolicExpr_in_metaInfoInternal1720_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_keyword_in_setOptionInternal1746  */
+static	ANTLR3_BITWORD FOLLOW_keyword_in_setOptionInternal1746_bits[]	= { ANTLR3_UINT64_LIT(0x000EBA7B54AF00C0), ANTLR3_UINT64_LIT(0xFEEBF55FA6F3F000), ANTLR3_UINT64_LIT(0x0000000000095803) };
+static  ANTLR3_BITSET_LIST FOLLOW_keyword_in_setOptionInternal1746	= { FOLLOW_keyword_in_setOptionInternal1746_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_setOptionInternal1749  */
+static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_setOptionInternal1749_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_setOptionInternal1749	= { FOLLOW_symbolicExpr_in_setOptionInternal1749_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_META_INFO_TOK_in_smt25Command1781  */
+static	ANTLR3_BITWORD FOLLOW_META_INFO_TOK_in_smt25Command1781_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000400000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_META_INFO_TOK_in_smt25Command1781	= { FOLLOW_META_INFO_TOK_in_smt25Command1781_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_metaInfoInternal_in_smt25Command1783  */
+static	ANTLR3_BITWORD FOLLOW_metaInfoInternal_in_smt25Command1783_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_metaInfoInternal_in_smt25Command1783	= { FOLLOW_metaInfoInternal_in_smt25Command1783_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_CONST_TOK_in_smt25Command1797  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_CONST_TOK_in_smt25Command1797_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_CONST_TOK_in_smt25Command1797	= { FOLLOW_DECLARE_CONST_TOK_in_smt25Command1797_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_smt25Command1805  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_smt25Command1805_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_smt25Command1805	= { FOLLOW_symbol_in_smt25Command1805_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_smt25Command1818  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_smt25Command1818_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_smt25Command1818	= { FOLLOW_sortSymbol_in_smt25Command1818_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_MODEL_TOK_in_smt25Command1838  */
+static	ANTLR3_BITWORD FOLLOW_GET_MODEL_TOK_in_smt25Command1838_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_GET_MODEL_TOK_in_smt25Command1838	= { FOLLOW_GET_MODEL_TOK_in_smt25Command1838_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ECHO_TOK_in_smt25Command1859  */
+static	ANTLR3_BITWORD FOLLOW_ECHO_TOK_in_smt25Command1859_bits[]	= { ANTLR3_UINT64_LIT(0x000EBA7B54AF00C2), ANTLR3_UINT64_LIT(0xFEEBF51FA6F3F000), ANTLR3_UINT64_LIT(0x0000000000095803) };
+static  ANTLR3_BITSET_LIST FOLLOW_ECHO_TOK_in_smt25Command1859	= { FOLLOW_ECHO_TOK_in_smt25Command1859_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExpr_in_smt25Command1867  */
+static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExpr_in_smt25Command1867_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleSymbolicExpr_in_smt25Command1867	= { FOLLOW_simpleSymbolicExpr_in_smt25Command1867_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RESET_TOK_in_smt25Command1903  */
+static	ANTLR3_BITWORD FOLLOW_RESET_TOK_in_smt25Command1903_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RESET_TOK_in_smt25Command1903	= { FOLLOW_RESET_TOK_in_smt25Command1903_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RESET_ASSERTIONS_TOK_in_smt25Command1921  */
+static	ANTLR3_BITWORD FOLLOW_RESET_ASSERTIONS_TOK_in_smt25Command1921_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RESET_ASSERTIONS_TOK_in_smt25Command1921	= { FOLLOW_RESET_ASSERTIONS_TOK_in_smt25Command1921_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINE_FUN_REC_TOK_in_smt25Command1933  */
+static	ANTLR3_BITWORD FOLLOW_DEFINE_FUN_REC_TOK_in_smt25Command1933_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_DEFINE_FUN_REC_TOK_in_smt25Command1933	= { FOLLOW_DEFINE_FUN_REC_TOK_in_smt25Command1933_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_smt25Command1945  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_smt25Command1945_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_smt25Command1945	= { FOLLOW_symbol_in_smt25Command1945_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_smt25Command1958  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_smt25Command1958_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_smt25Command1958	= { FOLLOW_LPAREN_TOK_in_smt25Command1958_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_smt25Command1960  */
+static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_smt25Command1960_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_smt25Command1960	= { FOLLOW_sortedVarList_in_smt25Command1960_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_smt25Command1963  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_smt25Command1963_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_smt25Command1963	= { FOLLOW_RPAREN_TOK_in_smt25Command1963_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_smt25Command1969  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_smt25Command1969_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_smt25Command1969	= { FOLLOW_sortSymbol_in_smt25Command1969_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_smt25Command1982  */
+static	ANTLR3_BITWORD FOLLOW_term_in_smt25Command1982_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_smt25Command1982	= { FOLLOW_term_in_smt25Command1982_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINE_FUNS_REC_TOK_in_smt25Command1995  */
+static	ANTLR3_BITWORD FOLLOW_DEFINE_FUNS_REC_TOK_in_smt25Command1995_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DEFINE_FUNS_REC_TOK_in_smt25Command1995	= { FOLLOW_DEFINE_FUNS_REC_TOK_in_smt25Command1995_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_smt25Command2007  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_smt25Command2007_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_smt25Command2007	= { FOLLOW_LPAREN_TOK_in_smt25Command2007_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_smt25Command2015  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_smt25Command2015_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_smt25Command2015	= { FOLLOW_LPAREN_TOK_in_smt25Command2015_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_smt25Command2023  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_smt25Command2023_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_smt25Command2023	= { FOLLOW_symbol_in_smt25Command2023_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_smt25Command2040  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_smt25Command2040_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_smt25Command2040	= { FOLLOW_LPAREN_TOK_in_smt25Command2040_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_smt25Command2042  */
+static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_smt25Command2042_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_smt25Command2042	= { FOLLOW_sortedVarList_in_smt25Command2042_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_smt25Command2045  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_smt25Command2045_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_smt25Command2045	= { FOLLOW_RPAREN_TOK_in_smt25Command2045_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_smt25Command2053  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_smt25Command2053_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_smt25Command2053	= { FOLLOW_sortSymbol_in_smt25Command2053_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_smt25Command2070  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_smt25Command2070_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_smt25Command2070	= { FOLLOW_RPAREN_TOK_in_smt25Command2070_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_smt25Command2083  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_smt25Command2083_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_smt25Command2083	= { FOLLOW_RPAREN_TOK_in_smt25Command2083_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_smt25Command2089  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_smt25Command2089_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_smt25Command2089	= { FOLLOW_LPAREN_TOK_in_smt25Command2089_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_smt25Command2107  */
+static	ANTLR3_BITWORD FOLLOW_term_in_smt25Command2107_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x291602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_smt25Command2107	= { FOLLOW_term_in_smt25Command2107_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_smt25Command2127  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_smt25Command2127_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_smt25Command2127	= { FOLLOW_RPAREN_TOK_in_smt25Command2127_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_DATATYPES_TOK_in_extendedCommand2164  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_DATATYPES_TOK_in_extendedCommand2164_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_DATATYPES_TOK_in_extendedCommand2164	= { FOLLOW_DECLARE_DATATYPES_TOK_in_extendedCommand2164_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypesDefCommand_in_extendedCommand2166  */
+static	ANTLR3_BITWORD FOLLOW_datatypesDefCommand_in_extendedCommand2166_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_datatypesDefCommand_in_extendedCommand2166	= { FOLLOW_datatypesDefCommand_in_extendedCommand2166_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_CODATATYPES_TOK_in_extendedCommand2173  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_CODATATYPES_TOK_in_extendedCommand2173_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_CODATATYPES_TOK_in_extendedCommand2173	= { FOLLOW_DECLARE_CODATATYPES_TOK_in_extendedCommand2173_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypesDefCommand_in_extendedCommand2175  */
+static	ANTLR3_BITWORD FOLLOW_datatypesDefCommand_in_extendedCommand2175_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_datatypesDefCommand_in_extendedCommand2175	= { FOLLOW_datatypesDefCommand_in_extendedCommand2175_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_rewriterulesCommand_in_extendedCommand2182  */
+static	ANTLR3_BITWORD FOLLOW_rewriterulesCommand_in_extendedCommand2182_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_rewriterulesCommand_in_extendedCommand2182	= { FOLLOW_rewriterulesCommand_in_extendedCommand2182_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_SORTS_TOK_in_extendedCommand2197  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_SORTS_TOK_in_extendedCommand2197_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_SORTS_TOK_in_extendedCommand2197	= { FOLLOW_DECLARE_SORTS_TOK_in_extendedCommand2197_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2217  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2217_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2217	= { FOLLOW_LPAREN_TOK_in_extendedCommand2217_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2225  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2225_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2902000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2225	= { FOLLOW_symbol_in_extendedCommand2225_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2247  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2247_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2247	= { FOLLOW_RPAREN_TOK_in_extendedCommand2247_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_FUNS_TOK_in_extendedCommand2260  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_FUNS_TOK_in_extendedCommand2260_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_FUNS_TOK_in_extendedCommand2260	= { FOLLOW_DECLARE_FUNS_TOK_in_extendedCommand2260_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2274  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2274_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2274	= { FOLLOW_LPAREN_TOK_in_extendedCommand2274_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2282  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2282_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2282	= { FOLLOW_LPAREN_TOK_in_extendedCommand2282_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2284  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2284_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2284	= { FOLLOW_symbol_in_extendedCommand2284_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_nonemptySortList_in_extendedCommand2301  */
+static	ANTLR3_BITWORD FOLLOW_nonemptySortList_in_extendedCommand2301_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_nonemptySortList_in_extendedCommand2301	= { FOLLOW_nonemptySortList_in_extendedCommand2301_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2304  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2304_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2304	= { FOLLOW_RPAREN_TOK_in_extendedCommand2304_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2325  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2325_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2325	= { FOLLOW_RPAREN_TOK_in_extendedCommand2325_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_PREDS_TOK_in_extendedCommand2338  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_PREDS_TOK_in_extendedCommand2338_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_PREDS_TOK_in_extendedCommand2338	= { FOLLOW_DECLARE_PREDS_TOK_in_extendedCommand2338_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2352  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2352_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2352	= { FOLLOW_LPAREN_TOK_in_extendedCommand2352_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2360  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2360_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2360	= { FOLLOW_LPAREN_TOK_in_extendedCommand2360_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2362  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2362_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2902004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2362	= { FOLLOW_symbol_in_extendedCommand2362_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortList_in_extendedCommand2379  */
+static	ANTLR3_BITWORD FOLLOW_sortList_in_extendedCommand2379_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortList_in_extendedCommand2379	= { FOLLOW_sortList_in_extendedCommand2379_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2382  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2382_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2382	= { FOLLOW_RPAREN_TOK_in_extendedCommand2382_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2403  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2403_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2403	= { FOLLOW_RPAREN_TOK_in_extendedCommand2403_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINE_TOK_in_extendedCommand2416  */
+static	ANTLR3_BITWORD FOLLOW_DEFINE_TOK_in_extendedCommand2416_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_DEFINE_TOK_in_extendedCommand2416	= { FOLLOW_DEFINE_TOK_in_extendedCommand2416_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2426  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2426_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2426	= { FOLLOW_symbol_in_extendedCommand2426_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2443  */
+static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2443_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2443	= { FOLLOW_term_in_extendedCommand2443_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2460  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2460_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2460	= { FOLLOW_LPAREN_TOK_in_extendedCommand2460_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2468  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2468_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2468	= { FOLLOW_symbol_in_extendedCommand2468_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_extendedCommand2485  */
+static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_extendedCommand2485_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_extendedCommand2485	= { FOLLOW_sortedVarList_in_extendedCommand2485_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2488  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2488_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2488	= { FOLLOW_RPAREN_TOK_in_extendedCommand2488_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2504  */
+static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2504_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2504	= { FOLLOW_term_in_extendedCommand2504_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINE_CONST_TOK_in_extendedCommand2525  */
+static	ANTLR3_BITWORD FOLLOW_DEFINE_CONST_TOK_in_extendedCommand2525_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_DEFINE_CONST_TOK_in_extendedCommand2525	= { FOLLOW_DEFINE_CONST_TOK_in_extendedCommand2525_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2533  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2533_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2533	= { FOLLOW_symbol_in_extendedCommand2533_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_extendedCommand2546  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_extendedCommand2546_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_extendedCommand2546	= { FOLLOW_sortSymbol_in_extendedCommand2546_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2559  */
+static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2559_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2559	= { FOLLOW_term_in_extendedCommand2559_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SIMPLIFY_TOK_in_extendedCommand2573  */
+static	ANTLR3_BITWORD FOLLOW_SIMPLIFY_TOK_in_extendedCommand2573_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_SIMPLIFY_TOK_in_extendedCommand2573	= { FOLLOW_SIMPLIFY_TOK_in_extendedCommand2573_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2581  */
+static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2581_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2581	= { FOLLOW_term_in_extendedCommand2581_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_QE_TOK_in_extendedCommand2594  */
+static	ANTLR3_BITWORD FOLLOW_GET_QE_TOK_in_extendedCommand2594_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_GET_QE_TOK_in_extendedCommand2594	= { FOLLOW_GET_QE_TOK_in_extendedCommand2594_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2602  */
+static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2602_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2602	= { FOLLOW_term_in_extendedCommand2602_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_QE_DISJUNCT_TOK_in_extendedCommand2615  */
+static	ANTLR3_BITWORD FOLLOW_GET_QE_DISJUNCT_TOK_in_extendedCommand2615_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_GET_QE_DISJUNCT_TOK_in_extendedCommand2615	= { FOLLOW_GET_QE_DISJUNCT_TOK_in_extendedCommand2615_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2623  */
+static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2623_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2623	= { FOLLOW_term_in_extendedCommand2623_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDefCommand2654  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDefCommand2654_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2902000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDefCommand2654	= { FOLLOW_LPAREN_TOK_in_datatypesDefCommand2654_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_datatypesDefCommand2662  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_datatypesDefCommand2662_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2902000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_datatypesDefCommand2662	= { FOLLOW_symbol_in_datatypesDefCommand2662_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDefCommand2678  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDefCommand2678_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDefCommand2678	= { FOLLOW_RPAREN_TOK_in_datatypesDefCommand2678_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDefCommand2682  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDefCommand2682_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDefCommand2682	= { FOLLOW_LPAREN_TOK_in_datatypesDefCommand2682_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDefCommand2686  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDefCommand2686_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDefCommand2686	= { FOLLOW_LPAREN_TOK_in_datatypesDefCommand2686_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypeDef_in_datatypesDefCommand2688  */
+static	ANTLR3_BITWORD FOLLOW_datatypeDef_in_datatypesDefCommand2688_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_datatypeDef_in_datatypesDefCommand2688	= { FOLLOW_datatypeDef_in_datatypesDefCommand2688_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDefCommand2691  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDefCommand2691_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDefCommand2691	= { FOLLOW_RPAREN_TOK_in_datatypesDefCommand2691_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDefCommand2696  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDefCommand2696_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDefCommand2696	= { FOLLOW_RPAREN_TOK_in_datatypesDefCommand2696_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_REWRITE_RULE_TOK_in_rewriterulesCommand2725  */
+static	ANTLR3_BITWORD FOLLOW_REWRITE_RULE_TOK_in_rewriterulesCommand2725_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_REWRITE_RULE_TOK_in_rewriterulesCommand2725	= { FOLLOW_REWRITE_RULE_TOK_in_rewriterulesCommand2725_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand2731  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand2731_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand2731	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand2731_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_rewriterulesCommand2733  */
+static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_rewriterulesCommand2733_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_rewriterulesCommand2733	= { FOLLOW_sortedVarList_in_rewriterulesCommand2733_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand2736  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand2736_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand2736	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand2736_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand2748  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand2748_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand2748	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand2748_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_pattern_in_rewriterulesCommand2752  */
+static	ANTLR3_BITWORD FOLLOW_pattern_in_rewriterulesCommand2752_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_pattern_in_rewriterulesCommand2752	= { FOLLOW_pattern_in_rewriterulesCommand2752_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand2760  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand2760_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand2760	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand2760_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand2766  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand2766_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x291602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand2766	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand2766_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_rewriterulesCommand2769  */
+static	ANTLR3_BITWORD FOLLOW_termList_in_rewriterulesCommand2769_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_termList_in_rewriterulesCommand2769	= { FOLLOW_termList_in_rewriterulesCommand2769_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand2774  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand2774_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand2774	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand2774_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_rewriterulesCommand2780  */
+static	ANTLR3_BITWORD FOLLOW_term_in_rewriterulesCommand2780_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_rewriterulesCommand2780	= { FOLLOW_term_in_rewriterulesCommand2780_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_rewriterulesCommand2783  */
+static	ANTLR3_BITWORD FOLLOW_term_in_rewriterulesCommand2783_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_rewriterulesCommand2783	= { FOLLOW_term_in_rewriterulesCommand2783_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_rewritePropaKind_in_rewriterulesCommand2802  */
+static	ANTLR3_BITWORD FOLLOW_rewritePropaKind_in_rewriterulesCommand2802_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_rewritePropaKind_in_rewriterulesCommand2802	= { FOLLOW_rewritePropaKind_in_rewriterulesCommand2802_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand2809  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand2809_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand2809	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand2809_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_rewriterulesCommand2811  */
+static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_rewriterulesCommand2811_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_rewriterulesCommand2811	= { FOLLOW_sortedVarList_in_rewriterulesCommand2811_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand2814  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand2814_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand2814	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand2814_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand2826  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand2826_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand2826	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand2826_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_pattern_in_rewriterulesCommand2830  */
+static	ANTLR3_BITWORD FOLLOW_pattern_in_rewriterulesCommand2830_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_pattern_in_rewriterulesCommand2830	= { FOLLOW_pattern_in_rewriterulesCommand2830_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand2838  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand2838_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand2838	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand2838_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand2844  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand2844_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x291602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand2844	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand2844_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_rewriterulesCommand2847  */
+static	ANTLR3_BITWORD FOLLOW_termList_in_rewriterulesCommand2847_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_termList_in_rewriterulesCommand2847	= { FOLLOW_termList_in_rewriterulesCommand2847_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand2852  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand2852_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand2852	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand2852_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand2858  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand2858_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x291602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand2858	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand2858_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_rewriterulesCommand2861  */
+static	ANTLR3_BITWORD FOLLOW_termList_in_rewriterulesCommand2861_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_termList_in_rewriterulesCommand2861	= { FOLLOW_termList_in_rewriterulesCommand2861_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand2866  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand2866_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand2866	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand2866_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_rewriterulesCommand2872  */
+static	ANTLR3_BITWORD FOLLOW_term_in_rewriterulesCommand2872_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_rewriterulesCommand2872	= { FOLLOW_term_in_rewriterulesCommand2872_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_REDUCTION_RULE_TOK_in_rewritePropaKind2893  */
+static	ANTLR3_BITWORD FOLLOW_REDUCTION_RULE_TOK_in_rewritePropaKind2893_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_REDUCTION_RULE_TOK_in_rewritePropaKind2893	= { FOLLOW_REDUCTION_RULE_TOK_in_rewritePropaKind2893_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PROPAGATION_RULE_TOK_in_rewritePropaKind2904  */
+static	ANTLR3_BITWORD FOLLOW_PROPAGATION_RULE_TOK_in_rewritePropaKind2904_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_PROPAGATION_RULE_TOK_in_rewritePropaKind2904	= { FOLLOW_PROPAGATION_RULE_TOK_in_rewritePropaKind2904_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_pattern2926  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_pattern2926_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_pattern2926	= { FOLLOW_LPAREN_TOK_in_pattern2926_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_pattern2928  */
+static	ANTLR3_BITWORD FOLLOW_termList_in_pattern2928_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_termList_in_pattern2928	= { FOLLOW_termList_in_pattern2928_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_pattern2931  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_pattern2931_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_pattern2931	= { FOLLOW_RPAREN_TOK_in_pattern2931_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExprNoKeyword2956  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExprNoKeyword2956_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExprNoKeyword2956	= { FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExprNoKeyword2956_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExprNoKeyword2968  */
+static	ANTLR3_BITWORD FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExprNoKeyword2968_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExprNoKeyword2968	= { FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExprNoKeyword2968_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_HEX_LITERAL_in_simpleSymbolicExprNoKeyword2980  */
+static	ANTLR3_BITWORD FOLLOW_HEX_LITERAL_in_simpleSymbolicExprNoKeyword2980_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_HEX_LITERAL_in_simpleSymbolicExprNoKeyword2980	= { FOLLOW_HEX_LITERAL_in_simpleSymbolicExprNoKeyword2980_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BINARY_LITERAL_in_simpleSymbolicExprNoKeyword2992  */
+static	ANTLR3_BITWORD FOLLOW_BINARY_LITERAL_in_simpleSymbolicExprNoKeyword2992_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BINARY_LITERAL_in_simpleSymbolicExprNoKeyword2992	= { FOLLOW_BINARY_LITERAL_in_simpleSymbolicExprNoKeyword2992_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_simpleSymbolicExprNoKeyword3004  */
+static	ANTLR3_BITWORD FOLLOW_str_in_simpleSymbolicExprNoKeyword3004_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_simpleSymbolicExprNoKeyword3004	= { FOLLOW_str_in_simpleSymbolicExprNoKeyword3004_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_simpleSymbolicExprNoKeyword3024  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_simpleSymbolicExprNoKeyword3024_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_simpleSymbolicExprNoKeyword3024	= { FOLLOW_symbol_in_simpleSymbolicExprNoKeyword3024_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_simpleSymbolicExprNoKeyword3039  */
+static	ANTLR3_BITWORD FOLLOW_set_in_simpleSymbolicExprNoKeyword3039_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_set_in_simpleSymbolicExprNoKeyword3039	= { FOLLOW_set_in_simpleSymbolicExprNoKeyword3039_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_builtinOp_in_simpleSymbolicExprNoKeyword3225  */
+static	ANTLR3_BITWORD FOLLOW_builtinOp_in_simpleSymbolicExprNoKeyword3225_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_builtinOp_in_simpleSymbolicExprNoKeyword3225	= { FOLLOW_builtinOp_in_simpleSymbolicExprNoKeyword3225_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_keyword3246  */
+static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_keyword3246_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_keyword3246	= { FOLLOW_KEYWORD_in_keyword3246_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExprNoKeyword_in_simpleSymbolicExpr3266  */
+static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExprNoKeyword_in_simpleSymbolicExpr3266_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleSymbolicExprNoKeyword_in_simpleSymbolicExpr3266	= { FOLLOW_simpleSymbolicExprNoKeyword_in_simpleSymbolicExpr3266_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_simpleSymbolicExpr3273  */
+static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_simpleSymbolicExpr3273_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_simpleSymbolicExpr3273	= { FOLLOW_KEYWORD_in_simpleSymbolicExpr3273_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExpr_in_symbolicExpr3298  */
+static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExpr_in_symbolicExpr3298_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleSymbolicExpr_in_symbolicExpr3298	= { FOLLOW_simpleSymbolicExpr_in_symbolicExpr3298_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_symbolicExpr3305  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_symbolicExpr3305_bits[]	= { ANTLR3_UINT64_LIT(0x000EBA7B54AF00C0), ANTLR3_UINT64_LIT(0xFFEBF55FA6F3F000), ANTLR3_UINT64_LIT(0x0000000000095803) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_symbolicExpr3305	= { FOLLOW_LPAREN_TOK_in_symbolicExpr3305_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_symbolicExpr3313  */
+static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_symbolicExpr3313_bits[]	= { ANTLR3_UINT64_LIT(0x000EBA7B54AF00C0), ANTLR3_UINT64_LIT(0xFFEBF55FA6F3F000), ANTLR3_UINT64_LIT(0x0000000000095803) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_symbolicExpr3313	= { FOLLOW_symbolicExpr_in_symbolicExpr3313_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_symbolicExpr3321  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_symbolicExpr3321_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_symbolicExpr3321	= { FOLLOW_RPAREN_TOK_in_symbolicExpr3321_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3354  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3354_bits[]	= { ANTLR3_UINT64_LIT(0x000C9A0000020040), ANTLR3_UINT64_LIT(0x8000351A24C00000), ANTLR3_UINT64_LIT(0x0000000000010000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3354	= { FOLLOW_LPAREN_TOK_in_term3354_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_builtinOp_in_term3356  */
+static	ANTLR3_BITWORD FOLLOW_builtinOp_in_term3356_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_builtinOp_in_term3356	= { FOLLOW_builtinOp_in_term3356_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_term3359  */
+static	ANTLR3_BITWORD FOLLOW_termList_in_term3359_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_termList_in_term3359	= { FOLLOW_termList_in_term3359_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3362  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3362_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3362	= { FOLLOW_RPAREN_TOK_in_term3362_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3374  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3374_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3374	= { FOLLOW_LPAREN_TOK_in_term3374_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_AS_TOK_in_term3376  */
+static	ANTLR3_BITWORD FOLLOW_AS_TOK_in_term3376_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_AS_TOK_in_term3376	= { FOLLOW_AS_TOK_in_term3376_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3378  */
+static	ANTLR3_BITWORD FOLLOW_term_in_term3378_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3378	= { FOLLOW_term_in_term3378_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_term3381  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_term3381_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_term3381	= { FOLLOW_sortSymbol_in_term3381_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3384  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3384_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3384	= { FOLLOW_RPAREN_TOK_in_term3384_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3396  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3396_bits[]	= { ANTLR3_UINT64_LIT(0x0011000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3396	= { FOLLOW_LPAREN_TOK_in_term3396_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_quantOp_in_term3398  */
+static	ANTLR3_BITWORD FOLLOW_quantOp_in_term3398_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_quantOp_in_term3398	= { FOLLOW_quantOp_in_term3398_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3405  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3405_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3405	= { FOLLOW_LPAREN_TOK_in_term3405_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_term3407  */
+static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_term3407_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_term3407	= { FOLLOW_sortedVarList_in_term3407_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3410  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3410_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3410	= { FOLLOW_RPAREN_TOK_in_term3410_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3422  */
+static	ANTLR3_BITWORD FOLLOW_term_in_term3422_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3422	= { FOLLOW_term_in_term3422_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3425  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3425_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3425	= { FOLLOW_RPAREN_TOK_in_term3425_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3437  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3437_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3437	= { FOLLOW_LPAREN_TOK_in_term3437_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_functionName_in_term3439  */
+static	ANTLR3_BITWORD FOLLOW_functionName_in_term3439_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_functionName_in_term3439	= { FOLLOW_functionName_in_term3439_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_term3457  */
+static	ANTLR3_BITWORD FOLLOW_termList_in_term3457_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_termList_in_term3457	= { FOLLOW_termList_in_term3457_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3460  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3460_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3460	= { FOLLOW_RPAREN_TOK_in_term3460_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3473  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3473_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3473	= { FOLLOW_LPAREN_TOK_in_term3473_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_indexedFunctionName_in_term3489  */
+static	ANTLR3_BITWORD FOLLOW_indexedFunctionName_in_term3489_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_indexedFunctionName_in_term3489	= { FOLLOW_indexedFunctionName_in_term3489_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_term3492  */
+static	ANTLR3_BITWORD FOLLOW_termList_in_term3492_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_termList_in_term3492	= { FOLLOW_termList_in_term3492_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3495  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3495_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3495	= { FOLLOW_RPAREN_TOK_in_term3495_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3519  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3519_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3519	= { FOLLOW_LPAREN_TOK_in_term3519_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_AS_TOK_in_term3521  */
+static	ANTLR3_BITWORD FOLLOW_AS_TOK_in_term3521_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000400000) };
+static  ANTLR3_BITSET_LIST FOLLOW_AS_TOK_in_term3521	= { FOLLOW_AS_TOK_in_term3521_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CONST_TOK_in_term3523  */
+static	ANTLR3_BITWORD FOLLOW_CONST_TOK_in_term3523_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_CONST_TOK_in_term3523	= { FOLLOW_CONST_TOK_in_term3523_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_term3525  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_term3525_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_term3525	= { FOLLOW_sortSymbol_in_term3525_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3534  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3534_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3534	= { FOLLOW_RPAREN_TOK_in_term3534_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3536  */
+static	ANTLR3_BITWORD FOLLOW_term_in_term3536_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3536	= { FOLLOW_term_in_term3536_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3539  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3539_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3539	= { FOLLOW_RPAREN_TOK_in_term3539_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3565  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3565_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000002000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3565	= { FOLLOW_LPAREN_TOK_in_term3565_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LET_TOK_in_term3567  */
+static	ANTLR3_BITWORD FOLLOW_LET_TOK_in_term3567_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LET_TOK_in_term3567	= { FOLLOW_LET_TOK_in_term3567_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3569  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3569_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3569	= { FOLLOW_LPAREN_TOK_in_term3569_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3583  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3583_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3583	= { FOLLOW_LPAREN_TOK_in_term3583_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_term3585  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_term3585_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_term3585	= { FOLLOW_symbol_in_term3585_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3595  */
+static	ANTLR3_BITWORD FOLLOW_term_in_term3595_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3595	= { FOLLOW_term_in_term3595_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_term3600  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_term3600_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_term3600	= { FOLLOW_sortSymbol_in_term3600_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3612  */
+static	ANTLR3_BITWORD FOLLOW_term_in_term3612_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3612	= { FOLLOW_term_in_term3612_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3629  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3629_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3629	= { FOLLOW_RPAREN_TOK_in_term3629_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3666  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3666_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3666	= { FOLLOW_RPAREN_TOK_in_term3666_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3672  */
+static	ANTLR3_BITWORD FOLLOW_term_in_term3672_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3672	= { FOLLOW_term_in_term3672_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3679  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3679_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3679	= { FOLLOW_RPAREN_TOK_in_term3679_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_term3691  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_term3691_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000008) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_term3691	= { FOLLOW_symbol_in_term3691_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SYGUS_ENUM_CONS_TOK_in_term3694  */
+static	ANTLR3_BITWORD FOLLOW_SYGUS_ENUM_CONS_TOK_in_term3694_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_SYGUS_ENUM_CONS_TOK_in_term3694	= { FOLLOW_SYGUS_ENUM_CONS_TOK_in_term3694_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_term3700  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_term3700_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_term3700	= { FOLLOW_symbol_in_term3700_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_term3719  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_term3719_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_term3719	= { FOLLOW_symbol_in_term3719_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3739  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3739_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000004000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3739	= { FOLLOW_LPAREN_TOK_in_term3739_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_TOK_in_term3741  */
+static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_TOK_in_term3741_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_TOK_in_term3741	= { FOLLOW_ATTRIBUTE_TOK_in_term3741_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3743  */
+static	ANTLR3_BITWORD FOLLOW_term_in_term3743_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000003E00), ANTLR3_UINT64_LIT(0x0000000400000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3743	= { FOLLOW_term_in_term3743_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_attribute_in_term3752  */
+static	ANTLR3_BITWORD FOLLOW_attribute_in_term3752_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000003E00), ANTLR3_UINT64_LIT(0x0100000400000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_attribute_in_term3752	= { FOLLOW_attribute_in_term3752_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3770  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3770_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3770	= { FOLLOW_RPAREN_TOK_in_term3770_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term3788  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term3788_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term3788	= { FOLLOW_INTEGER_LITERAL_in_term3788_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECIMAL_LITERAL_in_term3801  */
+static	ANTLR3_BITWORD FOLLOW_DECIMAL_LITERAL_in_term3801_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECIMAL_LITERAL_in_term3801	= { FOLLOW_DECIMAL_LITERAL_in_term3801_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3814  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3814_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000010000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3814	= { FOLLOW_LPAREN_TOK_in_term3814_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INDEX_TOK_in_term3816  */
+static	ANTLR3_BITWORD FOLLOW_INDEX_TOK_in_term3816_bits[]	= { ANTLR3_UINT64_LIT(0x0160000000000000), ANTLR3_UINT64_LIT(0x2000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INDEX_TOK_in_term3816	= { FOLLOW_INDEX_TOK_in_term3816_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SIMPLE_SYMBOL_in_term3827  */
+static	ANTLR3_BITWORD FOLLOW_SIMPLE_SYMBOL_in_term3827_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_SIMPLE_SYMBOL_in_term3827	= { FOLLOW_SIMPLE_SYMBOL_in_term3827_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term3831  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term3831_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term3831	= { FOLLOW_INTEGER_LITERAL_in_term3831_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_PINF_TOK_in_term3848  */
+static	ANTLR3_BITWORD FOLLOW_FP_PINF_TOK_in_term3848_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_PINF_TOK_in_term3848	= { FOLLOW_FP_PINF_TOK_in_term3848_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term3852  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term3852_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term3852	= { FOLLOW_INTEGER_LITERAL_in_term3852_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term3856  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term3856_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term3856	= { FOLLOW_INTEGER_LITERAL_in_term3856_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_NINF_TOK_in_term3872  */
+static	ANTLR3_BITWORD FOLLOW_FP_NINF_TOK_in_term3872_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_NINF_TOK_in_term3872	= { FOLLOW_FP_NINF_TOK_in_term3872_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term3876  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term3876_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term3876	= { FOLLOW_INTEGER_LITERAL_in_term3876_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term3880  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term3880_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term3880	= { FOLLOW_INTEGER_LITERAL_in_term3880_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_NAN_TOK_in_term3896  */
+static	ANTLR3_BITWORD FOLLOW_FP_NAN_TOK_in_term3896_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_NAN_TOK_in_term3896	= { FOLLOW_FP_NAN_TOK_in_term3896_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term3900  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term3900_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term3900	= { FOLLOW_INTEGER_LITERAL_in_term3900_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term3904  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term3904_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term3904	= { FOLLOW_INTEGER_LITERAL_in_term3904_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3930  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3930_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3930	= { FOLLOW_RPAREN_TOK_in_term3930_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_HEX_LITERAL_in_term3937  */
+static	ANTLR3_BITWORD FOLLOW_HEX_LITERAL_in_term3937_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_HEX_LITERAL_in_term3937	= { FOLLOW_HEX_LITERAL_in_term3937_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BINARY_LITERAL_in_term3950  */
+static	ANTLR3_BITWORD FOLLOW_BINARY_LITERAL_in_term3950_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BINARY_LITERAL_in_term3950	= { FOLLOW_BINARY_LITERAL_in_term3950_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_term3963  */
+static	ANTLR3_BITWORD FOLLOW_str_in_term3963_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_term3963	= { FOLLOW_str_in_term3963_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RNE_TOK_in_term3976  */
+static	ANTLR3_BITWORD FOLLOW_FP_RNE_TOK_in_term3976_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_RNE_TOK_in_term3976	= { FOLLOW_FP_RNE_TOK_in_term3976_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RNA_TOK_in_term3989  */
+static	ANTLR3_BITWORD FOLLOW_FP_RNA_TOK_in_term3989_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_RNA_TOK_in_term3989	= { FOLLOW_FP_RNA_TOK_in_term3989_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RTP_TOK_in_term4002  */
+static	ANTLR3_BITWORD FOLLOW_FP_RTP_TOK_in_term4002_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_RTP_TOK_in_term4002	= { FOLLOW_FP_RTP_TOK_in_term4002_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RTN_TOK_in_term4015  */
+static	ANTLR3_BITWORD FOLLOW_FP_RTN_TOK_in_term4015_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_RTN_TOK_in_term4015	= { FOLLOW_FP_RTN_TOK_in_term4015_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RTZ_TOK_in_term4028  */
+static	ANTLR3_BITWORD FOLLOW_FP_RTZ_TOK_in_term4028_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_RTZ_TOK_in_term4028	= { FOLLOW_FP_RTZ_TOK_in_term4028_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RNE_FULL_TOK_in_term4041  */
+static	ANTLR3_BITWORD FOLLOW_FP_RNE_FULL_TOK_in_term4041_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_RNE_FULL_TOK_in_term4041	= { FOLLOW_FP_RNE_FULL_TOK_in_term4041_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RNA_FULL_TOK_in_term4049  */
+static	ANTLR3_BITWORD FOLLOW_FP_RNA_FULL_TOK_in_term4049_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_RNA_FULL_TOK_in_term4049	= { FOLLOW_FP_RNA_FULL_TOK_in_term4049_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RTP_FULL_TOK_in_term4057  */
+static	ANTLR3_BITWORD FOLLOW_FP_RTP_FULL_TOK_in_term4057_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_RTP_FULL_TOK_in_term4057	= { FOLLOW_FP_RTP_FULL_TOK_in_term4057_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RTN_FULL_TOK_in_term4065  */
+static	ANTLR3_BITWORD FOLLOW_FP_RTN_FULL_TOK_in_term4065_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_RTN_FULL_TOK_in_term4065	= { FOLLOW_FP_RTN_FULL_TOK_in_term4065_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RTZ_FULL_TOK_in_term4073  */
+static	ANTLR3_BITWORD FOLLOW_FP_RTZ_FULL_TOK_in_term4073_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_RTZ_FULL_TOK_in_term4073	= { FOLLOW_FP_RTZ_FULL_TOK_in_term4073_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RENOSTR_TOK_in_term4082  */
+static	ANTLR3_BITWORD FOLLOW_RENOSTR_TOK_in_term4082_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RENOSTR_TOK_in_term4082	= { FOLLOW_RENOSTR_TOK_in_term4082_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_REALLCHAR_TOK_in_term4095  */
+static	ANTLR3_BITWORD FOLLOW_REALLCHAR_TOK_in_term4095_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_REALLCHAR_TOK_in_term4095	= { FOLLOW_REALLCHAR_TOK_in_term4095_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EMPTYSET_TOK_in_term4108  */
+static	ANTLR3_BITWORD FOLLOW_EMPTYSET_TOK_in_term4108_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EMPTYSET_TOK_in_term4108	= { FOLLOW_EMPTYSET_TOK_in_term4108_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_UNIVSET_TOK_in_term4121  */
+static	ANTLR3_BITWORD FOLLOW_UNIVSET_TOK_in_term4121_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_UNIVSET_TOK_in_term4121	= { FOLLOW_UNIVSET_TOK_in_term4121_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NILREF_TOK_in_term4134  */
+static	ANTLR3_BITWORD FOLLOW_NILREF_TOK_in_term4134_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_NILREF_TOK_in_term4134	= { FOLLOW_NILREF_TOK_in_term4134_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_attribute4166  */
+static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_attribute4166_bits[]	= { ANTLR3_UINT64_LIT(0x000EBA7B54AF00C2), ANTLR3_UINT64_LIT(0xFEEBF51BA6F3F000), ANTLR3_UINT64_LIT(0x0000000000095803) };
+static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_attribute4166	= { FOLLOW_KEYWORD_in_attribute4166_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExprNoKeyword_in_attribute4170  */
+static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExprNoKeyword_in_attribute4170_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleSymbolicExprNoKeyword_in_attribute4170	= { FOLLOW_simpleSymbolicExprNoKeyword_in_attribute4170_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_PATTERN_TOK_in_attribute4186  */
+static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_PATTERN_TOK_in_attribute4186_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_PATTERN_TOK_in_attribute4186	= { FOLLOW_ATTRIBUTE_PATTERN_TOK_in_attribute4186_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_attribute4188  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_attribute4188_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_attribute4188	= { FOLLOW_LPAREN_TOK_in_attribute4188_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_attribute4196  */
+static	ANTLR3_BITWORD FOLLOW_term_in_attribute4196_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x291602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_attribute4196	= { FOLLOW_term_in_attribute4196_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_attribute4214  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_attribute4214_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_attribute4214	= { FOLLOW_RPAREN_TOK_in_attribute4214_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_NO_PATTERN_TOK_in_attribute4226  */
+static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_NO_PATTERN_TOK_in_attribute4226_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_NO_PATTERN_TOK_in_attribute4226	= { FOLLOW_ATTRIBUTE_NO_PATTERN_TOK_in_attribute4226_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_attribute4228  */
+static	ANTLR3_BITWORD FOLLOW_term_in_attribute4228_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_attribute4228	= { FOLLOW_term_in_attribute4228_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_attribute4243  */
+static	ANTLR3_BITWORD FOLLOW_set_in_attribute4243_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_set_in_attribute4243	= { FOLLOW_set_in_attribute4243_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_attribute4253  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_attribute4253_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_attribute4253	= { FOLLOW_INTEGER_LITERAL_in_attribute4253_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_NAMED_TOK_in_attribute4265  */
+static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_NAMED_TOK_in_attribute4265_bits[]	= { ANTLR3_UINT64_LIT(0x000EBA7B54AF00C0), ANTLR3_UINT64_LIT(0xFEEBF55FA6F3F000), ANTLR3_UINT64_LIT(0x0000000000095803) };
+static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_NAMED_TOK_in_attribute4265	= { FOLLOW_ATTRIBUTE_NAMED_TOK_in_attribute4265_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_attribute4267  */
+static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_attribute4267_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_attribute4267	= { FOLLOW_symbolicExpr_in_attribute4267_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_indexedFunctionName4290  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_indexedFunctionName4290_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000010000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_indexedFunctionName4290	= { FOLLOW_LPAREN_TOK_in_indexedFunctionName4290_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INDEX_TOK_in_indexedFunctionName4292  */
+static	ANTLR3_BITWORD FOLLOW_INDEX_TOK_in_indexedFunctionName4292_bits[]	= { ANTLR3_UINT64_LIT(0x03E0040000000000), ANTLR3_UINT64_LIT(0x2002000040000FF0), ANTLR3_UINT64_LIT(0x0000000000FC4000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INDEX_TOK_in_indexedFunctionName4292	= { FOLLOW_INDEX_TOK_in_indexedFunctionName4292_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_146_in_indexedFunctionName4300  */
+static	ANTLR3_BITWORD FOLLOW_146_in_indexedFunctionName4300_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_146_in_indexedFunctionName4300	= { FOLLOW_146_in_indexedFunctionName4300_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4304  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4304_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4304	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4304_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4308  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4308_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4308	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4308_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_147_in_indexedFunctionName4324  */
+static	ANTLR3_BITWORD FOLLOW_147_in_indexedFunctionName4324_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_147_in_indexedFunctionName4324	= { FOLLOW_147_in_indexedFunctionName4324_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4328  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4328_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4328	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4328_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_151_in_indexedFunctionName4344  */
+static	ANTLR3_BITWORD FOLLOW_151_in_indexedFunctionName4344_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_151_in_indexedFunctionName4344	= { FOLLOW_151_in_indexedFunctionName4344_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4348  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4348_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4348	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4348_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_150_in_indexedFunctionName4364  */
+static	ANTLR3_BITWORD FOLLOW_150_in_indexedFunctionName4364_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_150_in_indexedFunctionName4364	= { FOLLOW_150_in_indexedFunctionName4364_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4368  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4368_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4368	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4368_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_148_in_indexedFunctionName4384  */
+static	ANTLR3_BITWORD FOLLOW_148_in_indexedFunctionName4384_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_148_in_indexedFunctionName4384	= { FOLLOW_148_in_indexedFunctionName4384_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4388  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4388_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4388	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4388_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_149_in_indexedFunctionName4404  */
+static	ANTLR3_BITWORD FOLLOW_149_in_indexedFunctionName4404_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_149_in_indexedFunctionName4404	= { FOLLOW_149_in_indexedFunctionName4404_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4408  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4408_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4408	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4408_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DIVISIBLE_TOK_in_indexedFunctionName4424  */
+static	ANTLR3_BITWORD FOLLOW_DIVISIBLE_TOK_in_indexedFunctionName4424_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DIVISIBLE_TOK_in_indexedFunctionName4424	= { FOLLOW_DIVISIBLE_TOK_in_indexedFunctionName4424_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4428  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4428_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4428	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4428_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INT2BV_TOK_in_indexedFunctionName4444  */
+static	ANTLR3_BITWORD FOLLOW_INT2BV_TOK_in_indexedFunctionName4444_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INT2BV_TOK_in_indexedFunctionName4444	= { FOLLOW_INT2BV_TOK_in_indexedFunctionName4444_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4448  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4448_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4448	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4448_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_PINF_TOK_in_indexedFunctionName4464  */
+static	ANTLR3_BITWORD FOLLOW_FP_PINF_TOK_in_indexedFunctionName4464_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_PINF_TOK_in_indexedFunctionName4464	= { FOLLOW_FP_PINF_TOK_in_indexedFunctionName4464_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4468  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4468_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4468	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4468_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4472  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4472_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4472	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4472_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_NINF_TOK_in_indexedFunctionName4488  */
+static	ANTLR3_BITWORD FOLLOW_FP_NINF_TOK_in_indexedFunctionName4488_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_NINF_TOK_in_indexedFunctionName4488	= { FOLLOW_FP_NINF_TOK_in_indexedFunctionName4488_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4492  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4492_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4492	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4492_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4496  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4496_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4496	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4496_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_NAN_TOK_in_indexedFunctionName4512  */
+static	ANTLR3_BITWORD FOLLOW_FP_NAN_TOK_in_indexedFunctionName4512_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_NAN_TOK_in_indexedFunctionName4512	= { FOLLOW_FP_NAN_TOK_in_indexedFunctionName4512_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4516  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4516_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4516	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4516_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4520  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4520_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4520	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4520_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_PZERO_TOK_in_indexedFunctionName4536  */
+static	ANTLR3_BITWORD FOLLOW_FP_PZERO_TOK_in_indexedFunctionName4536_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_PZERO_TOK_in_indexedFunctionName4536	= { FOLLOW_FP_PZERO_TOK_in_indexedFunctionName4536_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4540  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4540_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4540	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4540_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4544  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4544_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4544	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4544_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_NZERO_TOK_in_indexedFunctionName4560  */
+static	ANTLR3_BITWORD FOLLOW_FP_NZERO_TOK_in_indexedFunctionName4560_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_NZERO_TOK_in_indexedFunctionName4560	= { FOLLOW_FP_NZERO_TOK_in_indexedFunctionName4560_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4564  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4564_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4564	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4564_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4568  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4568_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4568	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4568_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_FP_TOK_in_indexedFunctionName4584  */
+static	ANTLR3_BITWORD FOLLOW_FP_TO_FP_TOK_in_indexedFunctionName4584_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_FP_TOK_in_indexedFunctionName4584	= { FOLLOW_FP_TO_FP_TOK_in_indexedFunctionName4584_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4588  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4588_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4588	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4588_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4592  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4592_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4592	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4592_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_FPBV_TOK_in_indexedFunctionName4608  */
+static	ANTLR3_BITWORD FOLLOW_FP_TO_FPBV_TOK_in_indexedFunctionName4608_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_FPBV_TOK_in_indexedFunctionName4608	= { FOLLOW_FP_TO_FPBV_TOK_in_indexedFunctionName4608_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4612  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4612_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4612	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4612_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4616  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4616_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4616	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4616_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_FPFP_TOK_in_indexedFunctionName4632  */
+static	ANTLR3_BITWORD FOLLOW_FP_TO_FPFP_TOK_in_indexedFunctionName4632_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_FPFP_TOK_in_indexedFunctionName4632	= { FOLLOW_FP_TO_FPFP_TOK_in_indexedFunctionName4632_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4636  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4636_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4636	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4636_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4640  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4640_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4640	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4640_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_FPR_TOK_in_indexedFunctionName4656  */
+static	ANTLR3_BITWORD FOLLOW_FP_TO_FPR_TOK_in_indexedFunctionName4656_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_FPR_TOK_in_indexedFunctionName4656	= { FOLLOW_FP_TO_FPR_TOK_in_indexedFunctionName4656_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4660  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4660_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4660	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4660_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4664  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4664_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4664	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4664_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_FPS_TOK_in_indexedFunctionName4680  */
+static	ANTLR3_BITWORD FOLLOW_FP_TO_FPS_TOK_in_indexedFunctionName4680_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_FPS_TOK_in_indexedFunctionName4680	= { FOLLOW_FP_TO_FPS_TOK_in_indexedFunctionName4680_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4684  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4684_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4684	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4684_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4688  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4688_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4688	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4688_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_FPU_TOK_in_indexedFunctionName4704  */
+static	ANTLR3_BITWORD FOLLOW_FP_TO_FPU_TOK_in_indexedFunctionName4704_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_FPU_TOK_in_indexedFunctionName4704	= { FOLLOW_FP_TO_FPU_TOK_in_indexedFunctionName4704_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4708  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4708_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4708	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4708_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4712  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4712_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4712	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4712_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_UBV_TOK_in_indexedFunctionName4728  */
+static	ANTLR3_BITWORD FOLLOW_FP_TO_UBV_TOK_in_indexedFunctionName4728_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_UBV_TOK_in_indexedFunctionName4728	= { FOLLOW_FP_TO_UBV_TOK_in_indexedFunctionName4728_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4732  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4732_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4732	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4732_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_SBV_TOK_in_indexedFunctionName4748  */
+static	ANTLR3_BITWORD FOLLOW_FP_TO_SBV_TOK_in_indexedFunctionName4748_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_SBV_TOK_in_indexedFunctionName4748	= { FOLLOW_FP_TO_SBV_TOK_in_indexedFunctionName4748_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4752  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4752_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4752	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4752_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_badIndexedFunctionName_in_indexedFunctionName4768  */
+static	ANTLR3_BITWORD FOLLOW_badIndexedFunctionName_in_indexedFunctionName4768_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_badIndexedFunctionName_in_indexedFunctionName4768	= { FOLLOW_badIndexedFunctionName_in_indexedFunctionName4768_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_indexedFunctionName4780  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_indexedFunctionName4780_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_indexedFunctionName4780	= { FOLLOW_RPAREN_TOK_in_indexedFunctionName4780_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_badIndexedFunctionName4802  */
+static	ANTLR3_BITWORD FOLLOW_set_in_badIndexedFunctionName4802_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_set_in_badIndexedFunctionName4802	= { FOLLOW_set_in_badIndexedFunctionName4802_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_termList4843  */
+static	ANTLR3_BITWORD FOLLOW_term_in_termList4843_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90002), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_termList4843	= { FOLLOW_term_in_termList4843_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_LITERAL_2_0_in_str4865  */
+static	ANTLR3_BITWORD FOLLOW_STRING_LITERAL_2_0_in_str4865_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_LITERAL_2_0_in_str4865	= { FOLLOW_STRING_LITERAL_2_0_in_str4865_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_LITERAL_2_5_in_str4877  */
+static	ANTLR3_BITWORD FOLLOW_STRING_LITERAL_2_5_in_str4877_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_LITERAL_2_5_in_str4877	= { FOLLOW_STRING_LITERAL_2_5_in_str4877_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NOT_TOK_in_builtinOp4904  */
+static	ANTLR3_BITWORD FOLLOW_NOT_TOK_in_builtinOp4904_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_NOT_TOK_in_builtinOp4904	= { FOLLOW_NOT_TOK_in_builtinOp4904_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IMPLIES_TOK_in_builtinOp4917  */
+static	ANTLR3_BITWORD FOLLOW_IMPLIES_TOK_in_builtinOp4917_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IMPLIES_TOK_in_builtinOp4917	= { FOLLOW_IMPLIES_TOK_in_builtinOp4917_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_AND_TOK_in_builtinOp4926  */
+static	ANTLR3_BITWORD FOLLOW_AND_TOK_in_builtinOp4926_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_AND_TOK_in_builtinOp4926	= { FOLLOW_AND_TOK_in_builtinOp4926_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_OR_TOK_in_builtinOp4939  */
+static	ANTLR3_BITWORD FOLLOW_OR_TOK_in_builtinOp4939_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_OR_TOK_in_builtinOp4939	= { FOLLOW_OR_TOK_in_builtinOp4939_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_XOR_TOK_in_builtinOp4953  */
+static	ANTLR3_BITWORD FOLLOW_XOR_TOK_in_builtinOp4953_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_XOR_TOK_in_builtinOp4953	= { FOLLOW_XOR_TOK_in_builtinOp4953_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_builtinOp4966  */
+static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_builtinOp4966_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_builtinOp4966	= { FOLLOW_EQUAL_TOK_in_builtinOp4966_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DISTINCT_TOK_in_builtinOp4977  */
+static	ANTLR3_BITWORD FOLLOW_DISTINCT_TOK_in_builtinOp4977_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DISTINCT_TOK_in_builtinOp4977	= { FOLLOW_DISTINCT_TOK_in_builtinOp4977_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ITE_TOK_in_builtinOp4985  */
+static	ANTLR3_BITWORD FOLLOW_ITE_TOK_in_builtinOp4985_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_ITE_TOK_in_builtinOp4985	= { FOLLOW_ITE_TOK_in_builtinOp4985_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GREATER_THAN_TOK_in_builtinOp4998  */
+static	ANTLR3_BITWORD FOLLOW_GREATER_THAN_TOK_in_builtinOp4998_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_GREATER_THAN_TOK_in_builtinOp4998	= { FOLLOW_GREATER_THAN_TOK_in_builtinOp4998_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GREATER_THAN_EQUAL_TOK_in_builtinOp5023  */
+static	ANTLR3_BITWORD FOLLOW_GREATER_THAN_EQUAL_TOK_in_builtinOp5023_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_GREATER_THAN_EQUAL_TOK_in_builtinOp5023	= { FOLLOW_GREATER_THAN_EQUAL_TOK_in_builtinOp5023_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LESS_THAN_EQUAL_TOK_in_builtinOp5048  */
+static	ANTLR3_BITWORD FOLLOW_LESS_THAN_EQUAL_TOK_in_builtinOp5048_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_LESS_THAN_EQUAL_TOK_in_builtinOp5048	= { FOLLOW_LESS_THAN_EQUAL_TOK_in_builtinOp5048_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LESS_THAN_TOK_in_builtinOp5073  */
+static	ANTLR3_BITWORD FOLLOW_LESS_THAN_TOK_in_builtinOp5073_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_LESS_THAN_TOK_in_builtinOp5073	= { FOLLOW_LESS_THAN_TOK_in_builtinOp5073_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PLUS_TOK_in_builtinOp5098  */
+static	ANTLR3_BITWORD FOLLOW_PLUS_TOK_in_builtinOp5098_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_PLUS_TOK_in_builtinOp5098	= { FOLLOW_PLUS_TOK_in_builtinOp5098_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_MINUS_TOK_in_builtinOp5110  */
+static	ANTLR3_BITWORD FOLLOW_MINUS_TOK_in_builtinOp5110_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_MINUS_TOK_in_builtinOp5110	= { FOLLOW_MINUS_TOK_in_builtinOp5110_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STAR_TOK_in_builtinOp5121  */
+static	ANTLR3_BITWORD FOLLOW_STAR_TOK_in_builtinOp5121_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_STAR_TOK_in_builtinOp5121	= { FOLLOW_STAR_TOK_in_builtinOp5121_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DIV_TOK_in_builtinOp5133  */
+static	ANTLR3_BITWORD FOLLOW_DIV_TOK_in_builtinOp5133_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DIV_TOK_in_builtinOp5133	= { FOLLOW_DIV_TOK_in_builtinOp5133_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BV2NAT_TOK_in_builtinOp5147  */
+static	ANTLR3_BITWORD FOLLOW_BV2NAT_TOK_in_builtinOp5147_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BV2NAT_TOK_in_builtinOp5147	= { FOLLOW_BV2NAT_TOK_in_builtinOp5147_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DTSIZE_TOK_in_builtinOp5160  */
+static	ANTLR3_BITWORD FOLLOW_DTSIZE_TOK_in_builtinOp5160_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DTSIZE_TOK_in_builtinOp5160	= { FOLLOW_DTSIZE_TOK_in_builtinOp5160_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FMFCARD_TOK_in_builtinOp5174  */
+static	ANTLR3_BITWORD FOLLOW_FMFCARD_TOK_in_builtinOp5174_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FMFCARD_TOK_in_builtinOp5174	= { FOLLOW_FMFCARD_TOK_in_builtinOp5174_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FMFCARDVAL_TOK_in_builtinOp5187  */
+static	ANTLR3_BITWORD FOLLOW_FMFCARDVAL_TOK_in_builtinOp5187_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FMFCARDVAL_TOK_in_builtinOp5187	= { FOLLOW_FMFCARDVAL_TOK_in_builtinOp5187_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INST_CLOSURE_TOK_in_builtinOp5197  */
+static	ANTLR3_BITWORD FOLLOW_INST_CLOSURE_TOK_in_builtinOp5197_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INST_CLOSURE_TOK_in_builtinOp5197	= { FOLLOW_INST_CLOSURE_TOK_in_builtinOp5197_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EXISTS_TOK_in_quantOp5239  */
+static	ANTLR3_BITWORD FOLLOW_EXISTS_TOK_in_quantOp5239_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EXISTS_TOK_in_quantOp5239	= { FOLLOW_EXISTS_TOK_in_quantOp5239_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FORALL_TOK_in_quantOp5250  */
+static	ANTLR3_BITWORD FOLLOW_FORALL_TOK_in_quantOp5250_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FORALL_TOK_in_quantOp5250	= { FOLLOW_FORALL_TOK_in_quantOp5250_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_functionName5271  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_functionName5271_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_functionName5271	= { FOLLOW_symbol_in_functionName5271_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sortList5295  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sortList5295_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280002), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sortList5295	= { FOLLOW_sortSymbol_in_sortList5295_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_nonemptySortList5322  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_nonemptySortList5322_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280002), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_nonemptySortList5322	= { FOLLOW_sortSymbol_in_nonemptySortList5322_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sortedVarList5351  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sortedVarList5351_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sortedVarList5351	= { FOLLOW_LPAREN_TOK_in_sortedVarList5351_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sortedVarList5353  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sortedVarList5353_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sortedVarList5353	= { FOLLOW_symbol_in_sortedVarList5353_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sortedVarList5362  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sortedVarList5362_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sortedVarList5362	= { FOLLOW_sortSymbol_in_sortedVarList5362_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sortedVarList5365  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sortedVarList5365_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sortedVarList5365	= { FOLLOW_RPAREN_TOK_in_sortedVarList5365_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sortName5396  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sortName5396_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sortName5396	= { FOLLOW_symbol_in_sortName5396_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortName_in_sortSymbol5416  */
+static	ANTLR3_BITWORD FOLLOW_sortName_in_sortSymbol5416_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortName_in_sortSymbol5416	= { FOLLOW_sortName_in_sortSymbol5416_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sortSymbol5429  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sortSymbol5429_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000110000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sortSymbol5429	= { FOLLOW_LPAREN_TOK_in_sortSymbol5429_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INDEX_TOK_in_sortSymbol5432  */
+static	ANTLR3_BITWORD FOLLOW_INDEX_TOK_in_sortSymbol5432_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_INDEX_TOK_in_sortSymbol5432	= { FOLLOW_INDEX_TOK_in_sortSymbol5432_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sortSymbol5445  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sortSymbol5445_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2902004180000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sortSymbol5445	= { FOLLOW_symbol_in_sortSymbol5445_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_nonemptyNumeralList_in_sortSymbol5454  */
+static	ANTLR3_BITWORD FOLLOW_nonemptyNumeralList_in_sortSymbol5454_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_nonemptyNumeralList_in_sortSymbol5454	= { FOLLOW_nonemptyNumeralList_in_sortSymbol5454_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortList_in_sortSymbol5471  */
+static	ANTLR3_BITWORD FOLLOW_sortList_in_sortSymbol5471_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortList_in_sortSymbol5471	= { FOLLOW_sortList_in_sortSymbol5471_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sortSymbol5488  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sortSymbol5488_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sortSymbol5488	= { FOLLOW_RPAREN_TOK_in_sortSymbol5488_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_symbolList5511  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_symbolList5511_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280002), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_symbolList5511	= { FOLLOW_symbol_in_symbolList5511_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SIMPLE_SYMBOL_in_symbol5533  */
+static	ANTLR3_BITWORD FOLLOW_SIMPLE_SYMBOL_in_symbol5533_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SIMPLE_SYMBOL_in_symbol5533	= { FOLLOW_SIMPLE_SYMBOL_in_symbol5533_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_147_in_symbol5547  */
+static	ANTLR3_BITWORD FOLLOW_147_in_symbol5547_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_147_in_symbol5547	= { FOLLOW_147_in_symbol5547_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SET_OPTIONS_TOK_in_symbol5563  */
+static	ANTLR3_BITWORD FOLLOW_SET_OPTIONS_TOK_in_symbol5563_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SET_OPTIONS_TOK_in_symbol5563	= { FOLLOW_SET_OPTIONS_TOK_in_symbol5563_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_VAR_TOK_in_symbol5573  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_VAR_TOK_in_symbol5573_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_VAR_TOK_in_symbol5573	= { FOLLOW_DECLARE_VAR_TOK_in_symbol5573_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_PRIMED_VAR_TOK_in_symbol5583  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_PRIMED_VAR_TOK_in_symbol5583_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_PRIMED_VAR_TOK_in_symbol5583	= { FOLLOW_DECLARE_PRIMED_VAR_TOK_in_symbol5583_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SYNTH_FUN_TOK_in_symbol5593  */
+static	ANTLR3_BITWORD FOLLOW_SYNTH_FUN_TOK_in_symbol5593_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SYNTH_FUN_TOK_in_symbol5593	= { FOLLOW_SYNTH_FUN_TOK_in_symbol5593_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SYNTH_INV_TOK_in_symbol5603  */
+static	ANTLR3_BITWORD FOLLOW_SYNTH_INV_TOK_in_symbol5603_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SYNTH_INV_TOK_in_symbol5603	= { FOLLOW_SYNTH_INV_TOK_in_symbol5603_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CONSTRAINT_TOK_in_symbol5613  */
+static	ANTLR3_BITWORD FOLLOW_CONSTRAINT_TOK_in_symbol5613_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_CONSTRAINT_TOK_in_symbol5613	= { FOLLOW_CONSTRAINT_TOK_in_symbol5613_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INV_CONSTRAINT_TOK_in_symbol5623  */
+static	ANTLR3_BITWORD FOLLOW_INV_CONSTRAINT_TOK_in_symbol5623_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INV_CONSTRAINT_TOK_in_symbol5623	= { FOLLOW_INV_CONSTRAINT_TOK_in_symbol5623_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CHECK_SYNTH_TOK_in_symbol5633  */
+static	ANTLR3_BITWORD FOLLOW_CHECK_SYNTH_TOK_in_symbol5633_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_CHECK_SYNTH_TOK_in_symbol5633	= { FOLLOW_CHECK_SYNTH_TOK_in_symbol5633_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_QUOTED_SYMBOL_in_symbol5653  */
+static	ANTLR3_BITWORD FOLLOW_QUOTED_SYMBOL_in_symbol5653_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_QUOTED_SYMBOL_in_symbol5653	= { FOLLOW_QUOTED_SYMBOL_in_symbol5653_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_UNTERMINATED_QUOTED_SYMBOL_in_symbol5665  */
+static	ANTLR3_BITWORD FOLLOW_UNTERMINATED_QUOTED_SYMBOL_in_symbol5665_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000020000) };
+static  ANTLR3_BITSET_LIST FOLLOW_UNTERMINATED_QUOTED_SYMBOL_in_symbol5665	= { FOLLOW_UNTERMINATED_QUOTED_SYMBOL_in_symbol5665_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EOF_in_symbol5673  */
+static	ANTLR3_BITWORD FOLLOW_EOF_in_symbol5673_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_symbol5673	= { FOLLOW_EOF_in_symbol5673_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_145_in_symbol5689  */
+static	ANTLR3_BITWORD FOLLOW_145_in_symbol5689_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_145_in_symbol5689	= { FOLLOW_145_in_symbol5689_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_nonemptyNumeralList5721  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_nonemptyNumeralList5721_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_nonemptyNumeralList5721	= { FOLLOW_INTEGER_LITERAL_in_nonemptyNumeralList5721_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_datatypeDef5763  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_datatypeDef5763_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_datatypeDef5763	= { FOLLOW_symbol_in_datatypeDef5763_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypeDef5786  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypeDef5786_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypeDef5786	= { FOLLOW_LPAREN_TOK_in_datatypeDef5786_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_constructorDef_in_datatypeDef5788  */
+static	ANTLR3_BITWORD FOLLOW_constructorDef_in_datatypeDef5788_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_constructorDef_in_datatypeDef5788	= { FOLLOW_constructorDef_in_datatypeDef5788_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypeDef5791  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypeDef5791_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypeDef5791	= { FOLLOW_RPAREN_TOK_in_datatypeDef5791_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_constructorDef5821  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_constructorDef5821_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_constructorDef5821	= { FOLLOW_symbol_in_constructorDef5821_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_constructorDef5836  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_constructorDef5836_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_constructorDef5836	= { FOLLOW_LPAREN_TOK_in_constructorDef5836_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_selector_in_constructorDef5838  */
+static	ANTLR3_BITWORD FOLLOW_selector_in_constructorDef5838_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_selector_in_constructorDef5838	= { FOLLOW_selector_in_constructorDef5838_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_constructorDef5841  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_constructorDef5841_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_constructorDef5841	= { FOLLOW_RPAREN_TOK_in_constructorDef5841_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_selector5869  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_selector5869_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_selector5869	= { FOLLOW_symbol_in_selector5869_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_selector5872  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_selector5872_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_selector5872	= { FOLLOW_sortSymbol_in_selector5872_bits, 1	};
+
+
+/* ==============================================
+ * Parsing rules
+ */
+/**
+ * $ANTLR start parseExpr
+ * ../../../../../../src/parser/smt2/Smt2.g:193:1: parseExpr returns [CVC4::parser::smt2::myExpr expr] : ( term[expr, expr2] | EOF );
+ */
+static CVC4::parser::smt2::myExpr
+parseExpr(pSmt2Parser ctx)
+{
+    CVC4::parser::smt2::myExpr expr;
+
+
+
+      Expr expr2;
+
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/smt2/Smt2.g:197:3: ( term[expr, expr2] | EOF )
+
+            ANTLR3_UINT32 alt1;
+
+            alt1=2;
+
+            switch ( LA(1) )
+            {
+            case BINARY_LITERAL:
+            case CHECK_SYNTH_TOK:
+            case CONSTRAINT_TOK:
+            case DECIMAL_LITERAL:
+            case DECLARE_PRIMED_VAR_TOK:
+            case DECLARE_VAR_TOK:
+            case EMPTYSET_TOK:
+            case FP_RNA_FULL_TOK:
+            case FP_RNA_TOK:
+            case FP_RNE_FULL_TOK:
+            case FP_RNE_TOK:
+            case FP_RTN_FULL_TOK:
+            case FP_RTN_TOK:
+            case FP_RTP_FULL_TOK:
+            case FP_RTP_TOK:
+            case FP_RTZ_FULL_TOK:
+            case FP_RTZ_TOK:
+            case HEX_LITERAL:
+            case INTEGER_LITERAL:
+            case INV_CONSTRAINT_TOK:
+            case LPAREN_TOK:
+            case NILREF_TOK:
+            case QUOTED_SYMBOL:
+            case REALLCHAR_TOK:
+            case RENOSTR_TOK:
+            case SET_OPTIONS_TOK:
+            case SIMPLE_SYMBOL:
+            case STRING_LITERAL_2_0:
+            case STRING_LITERAL_2_5:
+            case SYNTH_FUN_TOK:
+            case SYNTH_INV_TOK:
+            case UNIVSET_TOK:
+            case UNTERMINATED_QUOTED_SYMBOL:
+            case 147:
+            	{
+            		alt1=1;
+            	}
+                break;
+            case EOF:
+            	{
+            		alt1=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 1;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleparseExprEx;
+
+            }
+
+            switch (alt1)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:197:5: term[expr, expr2]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_term_in_parseExpr119);
+        	        term(ctx, expr, expr2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseExprEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:198:5: EOF
+        	    {
+        	         MATCHT(EOF, &FOLLOW_EOF_in_parseExpr126);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseExprEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleparseExprEx; /* Prevent compiler warnings */
+    ruleparseExprEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return expr;
+}
+/* $ANTLR end parseExpr */
+
+/**
+ * $ANTLR start parseCommand
+ * ../../../../../../src/parser/smt2/Smt2.g:205:1: parseCommand returns [CVC4::Command* cmd_return = NULL] : ( LPAREN_TOK command[&cmd] RPAREN_TOK | LPAREN_TOK INCLUDE_TOK str[name,true] RPAREN_TOK | EOF );
+ */
+static CVC4::Command*
+parseCommand(pSmt2Parser ctx)
+{
+    CVC4::Command* cmd_return;
+
+
+
+      CVC4::PtrCloser<CVC4::Command> cmd;
+      std::string name;
+
+    /* Initialize rule variables
+     */
+    cmd_return =  NULL;
+
+
+    {
+        {
+            //  ../../../../../../src/parser/smt2/Smt2.g:213:3: ( LPAREN_TOK command[&cmd] RPAREN_TOK | LPAREN_TOK INCLUDE_TOK str[name,true] RPAREN_TOK | EOF )
+
+            ANTLR3_UINT32 alt2;
+
+            alt2=3;
+
+            switch ( LA(1) )
+            {
+            case LPAREN_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case INCLUDE_TOK:
+            			{
+            				alt2=2;
+            			}
+            		    break;
+            		case ASSERT_TOK:
+            		case CHECKSAT_TOK:
+            		case DECLARE_CODATATYPES_TOK:
+            		case DECLARE_CONST_TOK:
+            		case DECLARE_DATATYPES_TOK:
+            		case DECLARE_FUNS_TOK:
+            		case DECLARE_FUN_TOK:
+            		case DECLARE_PREDS_TOK:
+            		case DECLARE_SORTS_TOK:
+            		case DECLARE_SORT_TOK:
+            		case DEFINE_CONST_TOK:
+            		case DEFINE_FUNS_REC_TOK:
+            		case DEFINE_FUN_REC_TOK:
+            		case DEFINE_FUN_TOK:
+            		case DEFINE_SORT_TOK:
+            		case DEFINE_TOK:
+            		case ECHO_TOK:
+            		case EXIT_TOK:
+            		case GET_ASSERTIONS_TOK:
+            		case GET_ASSIGNMENT_TOK:
+            		case GET_INFO_TOK:
+            		case GET_MODEL_TOK:
+            		case GET_OPTION_TOK:
+            		case GET_PROOF_TOK:
+            		case GET_QE_DISJUNCT_TOK:
+            		case GET_QE_TOK:
+            		case GET_UNSAT_CORE_TOK:
+            		case GET_VALUE_TOK:
+            		case META_INFO_TOK:
+            		case POP_TOK:
+            		case PROPAGATION_RULE_TOK:
+            		case PUSH_TOK:
+            		case REDUCTION_RULE_TOK:
+            		case RESET_ASSERTIONS_TOK:
+            		case RESET_TOK:
+            		case REWRITE_RULE_TOK:
+            		case SET_INFO_TOK:
+            		case SET_LOGIC_TOK:
+            		case SET_OPTION_TOK:
+            		case SIMPLE_SYMBOL:
+            		case SIMPLIFY_TOK:
+            			{
+            				alt2=1;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 2;
+            		    EXCEPTION->state        = 1;
+
+
+            		    goto ruleparseCommandEx;
+
+            		}
+
+            	}
+                break;
+            case EOF:
+            	{
+            		alt2=3;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 2;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleparseCommandEx;
+
+            }
+
+            switch (alt2)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:213:5: LPAREN_TOK command[&cmd] RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_parseCommand155);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_command_in_parseCommand157);
+        	        command(ctx, &cmd);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_parseCommand160);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:218:5: LPAREN_TOK INCLUDE_TOK str[name,true] RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_parseCommand173);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	         MATCHT(INCLUDE_TOK, &FOLLOW_INCLUDE_TOK_in_parseCommand175);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_str_in_parseCommand177);
+        	        str(ctx, name, true);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_parseCommand180);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        {
+        	             if(!PARSER_STATE->canIncludeFile()) {
+        	                    PARSER_STATE->parseError("include-file feature was disabled for this "
+        	                                             "run.");
+        	                  }
+        	                  if(PARSER_STATE->strictModeEnabled()) {
+        	                    PARSER_STATE->parseError("Extended commands are not permitted while "
+        	                                             "operating in strict compliance mode.");
+        	                  }
+        	                  PARSER_STATE->includeFile(name);
+        	                  // The command of the included file will be produced at the next
+        	                  // parseCommand() call
+        	                  cmd.reset(new EmptyCommand("include::" + name));
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:233:5: EOF
+        	    {
+        	         MATCHT(EOF, &FOLLOW_EOF_in_parseCommand193);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleparseCommandEx; /* Prevent compiler warnings */
+    ruleparseCommandEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+            else
+            {
+                {
+
+                      cmd_return = cmd.release();
+
+                }
+            }
+
+
+    return cmd_return;
+}
+/* $ANTLR end parseCommand */
+
+/**
+ * $ANTLR start parseSygus
+ * ../../../../../../src/parser/smt2/Smt2.g:241:1: parseSygus returns [CVC4::Command* cmd_return = NULL] : ( LPAREN_TOK sygusCommand[&cmd] RPAREN_TOK | EOF );
+ */
+static CVC4::Command*
+parseSygus(pSmt2Parser ctx)
+{
+    CVC4::Command* cmd_return;
+
+
+
+      CVC4::PtrCloser<CVC4::Command> cmd;
+      std::string name;
+
+    /* Initialize rule variables
+     */
+    cmd_return =  NULL;
+
+
+    {
+        {
+            //  ../../../../../../src/parser/smt2/Smt2.g:249:3: ( LPAREN_TOK sygusCommand[&cmd] RPAREN_TOK | EOF )
+
+            ANTLR3_UINT32 alt3;
+
+            alt3=2;
+
+            switch ( LA(1) )
+            {
+            case LPAREN_TOK:
+            	{
+            		alt3=1;
+            	}
+                break;
+            case EOF:
+            	{
+            		alt3=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 3;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleparseSygusEx;
+
+            }
+
+            switch (alt3)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:249:5: LPAREN_TOK sygusCommand[&cmd] RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_parseSygus222);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseSygusEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_sygusCommand_in_parseSygus224);
+        	        sygusCommand(ctx, &cmd);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseSygusEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_parseSygus227);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseSygusEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:250:5: EOF
+        	    {
+        	         MATCHT(EOF, &FOLLOW_EOF_in_parseSygus233);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseSygusEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleparseSygusEx; /* Prevent compiler warnings */
+    ruleparseSygusEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+            else
+            {
+                {
+
+                      cmd_return = cmd.release();
+
+                }
+            }
+
+
+    return cmd_return;
+}
+/* $ANTLR end parseSygus */
+
+/**
+ * $ANTLR start command
+ * ../../../../../../src/parser/smt2/Smt2.g:257:1: command[CVC4::PtrCloser<CVC4::Command>* cmd] : ( SET_LOGIC_TOK symbol[name,CHECK_NONE,SYM_SORT] | SET_INFO_TOK metaInfoInternal[cmd] | GET_INFO_TOK KEYWORD | SET_OPTION_TOK setOptionInternal[cmd] | GET_OPTION_TOK KEYWORD | DECLARE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL | DEFINE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] LPAREN_TOK symbolList[names,CHECK_NONE,SYM_SORT] RPAREN_TOK sortSymbol[t,CHECK_DECLARE [...]
+ */
+static void
+command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
+{
+
+      std::string name;
+      std::vector<std::string> names;
+      Expr expr, expr2;
+      Type t;
+      std::vector<Expr> terms;
+      std::vector<Type> sorts;
+      std::vector<std::pair<std::string, Type> > sortedVarNames;
+
+    pANTLR3_COMMON_TOKEN    n;
+    pANTLR3_COMMON_TOKEN    k;
+    pANTLR3_COMMON_TOKEN    KEYWORD1;
+    pANTLR3_COMMON_TOKEN    KEYWORD2;
+    pANTLR3_COMMON_TOKEN    SIMPLE_SYMBOL3;
+
+    /* Initialize rule variables
+     */
+
+    n       = NULL;
+    k       = NULL;
+    KEYWORD1       = NULL;
+    KEYWORD2       = NULL;
+    SIMPLE_SYMBOL3       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/smt2/Smt2.g:267:3: ( SET_LOGIC_TOK symbol[name,CHECK_NONE,SYM_SORT] | SET_INFO_TOK metaInfoInternal[cmd] | GET_INFO_TOK KEYWORD | SET_OPTION_TOK setOptionInternal[cmd] | GET_OPTION_TOK KEYWORD | DECLARE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL | DEFINE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] LPAREN_TOK symbolList[names,CHECK_NONE,SYM_SORT] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] | DECLARE_FUN_TOK symbol[name,C [...]
+
+            ANTLR3_UINT32 alt8;
+
+            alt8=22;
+
+            switch ( LA(1) )
+            {
+            case SET_LOGIC_TOK:
+            	{
+            		alt8=1;
+            	}
+                break;
+            case SET_INFO_TOK:
+            	{
+            		alt8=2;
+            	}
+                break;
+            case GET_INFO_TOK:
+            	{
+            		alt8=3;
+            	}
+                break;
+            case SET_OPTION_TOK:
+            	{
+            		alt8=4;
+            	}
+                break;
+            case GET_OPTION_TOK:
+            	{
+            		alt8=5;
+            	}
+                break;
+            case DECLARE_SORT_TOK:
+            	{
+            		alt8=6;
+            	}
+                break;
+            case DEFINE_SORT_TOK:
+            	{
+            		alt8=7;
+            	}
+                break;
+            case DECLARE_FUN_TOK:
+            	{
+            		alt8=8;
+            	}
+                break;
+            case DEFINE_FUN_TOK:
+            	{
+            		alt8=9;
+            	}
+                break;
+            case GET_VALUE_TOK:
+            	{
+            		alt8=10;
+            	}
+                break;
+            case GET_ASSIGNMENT_TOK:
+            	{
+            		alt8=11;
+            	}
+                break;
+            case ASSERT_TOK:
+            	{
+            		alt8=12;
+            	}
+                break;
+            case CHECKSAT_TOK:
+            	{
+            		alt8=13;
+            	}
+                break;
+            case GET_ASSERTIONS_TOK:
+            	{
+            		alt8=14;
+            	}
+                break;
+            case GET_PROOF_TOK:
+            	{
+            		alt8=15;
+            	}
+                break;
+            case GET_UNSAT_CORE_TOK:
+            	{
+            		alt8=16;
+            	}
+                break;
+            case PUSH_TOK:
+            	{
+            		alt8=17;
+            	}
+                break;
+            case POP_TOK:
+            	{
+            		alt8=18;
+            	}
+                break;
+            case EXIT_TOK:
+            	{
+            		alt8=19;
+            	}
+                break;
+            case DECLARE_CONST_TOK:
+            case DEFINE_FUNS_REC_TOK:
+            case DEFINE_FUN_REC_TOK:
+            case ECHO_TOK:
+            case GET_MODEL_TOK:
+            case META_INFO_TOK:
+            case RESET_ASSERTIONS_TOK:
+            case RESET_TOK:
+            	{
+            		alt8=20;
+            	}
+                break;
+            case DECLARE_CODATATYPES_TOK:
+            case DECLARE_DATATYPES_TOK:
+            case DECLARE_FUNS_TOK:
+            case DECLARE_PREDS_TOK:
+            case DECLARE_SORTS_TOK:
+            case DEFINE_CONST_TOK:
+            case DEFINE_TOK:
+            case GET_QE_DISJUNCT_TOK:
+            case GET_QE_TOK:
+            case PROPAGATION_RULE_TOK:
+            case REDUCTION_RULE_TOK:
+            case REWRITE_RULE_TOK:
+            case SIMPLIFY_TOK:
+            	{
+            		alt8=21;
+            	}
+                break;
+            case SIMPLE_SYMBOL:
+            	{
+            		alt8=22;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 8;
+                EXCEPTION->state        = 0;
+
+
+                goto rulecommandEx;
+
+            }
+
+            switch (alt8)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:268:5: SET_LOGIC_TOK symbol[name,CHECK_NONE,SYM_SORT]
+        	    {
+        	         MATCHT(SET_LOGIC_TOK, &FOLLOW_SET_LOGIC_TOK_in_command261);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_symbol_in_command263);
+        	        symbol(ctx, name, CHECK_NONE, SYM_SORT);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             Debug("parser") << "set logic: '" << name << "'" << std::endl;
+        	                  if( PARSER_STATE->logicIsSet() ) {
+        	                    PARSER_STATE->parseError("Only one set-logic is allowed.");
+        	                  }
+        	                  PARSER_STATE->setLogic(name);
+        	                  if( PARSER_STATE->sygus() ){
+        	                    cmd->reset(new SetBenchmarkLogicCommand("ALL"));
+        	                  }else{
+        	                    cmd->reset(new SetBenchmarkLogicCommand(name));
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:281:5: SET_INFO_TOK metaInfoInternal[cmd]
+        	    {
+        	         MATCHT(SET_INFO_TOK, &FOLLOW_SET_INFO_TOK_in_command282);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_metaInfoInternal_in_command284);
+        	        metaInfoInternal(ctx, cmd);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:283:5: GET_INFO_TOK KEYWORD
+        	    {
+        	         MATCHT(GET_INFO_TOK, &FOLLOW_GET_INFO_TOK_in_command297);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        KEYWORD1 = (pANTLR3_COMMON_TOKEN) MATCHT(KEYWORD, &FOLLOW_KEYWORD_in_command299);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             cmd->reset(new GetInfoCommand(
+        	                      AntlrInput::tokenText(KEYWORD1).c_str() + 1));
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:288:5: SET_OPTION_TOK setOptionInternal[cmd]
+        	    {
+        	         MATCHT(SET_OPTION_TOK, &FOLLOW_SET_OPTION_TOK_in_command317);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_setOptionInternal_in_command319);
+        	        setOptionInternal(ctx, cmd);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:290:5: GET_OPTION_TOK KEYWORD
+        	    {
+        	         MATCHT(GET_OPTION_TOK, &FOLLOW_GET_OPTION_TOK_in_command332);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        KEYWORD2 = (pANTLR3_COMMON_TOKEN) MATCHT(KEYWORD, &FOLLOW_KEYWORD_in_command334);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             cmd->reset(new GetOptionCommand(
+        	                      AntlrInput::tokenText(KEYWORD2).c_str() + 1));
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:295:5: DECLARE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL
+        	    {
+        	         MATCHT(DECLARE_SORT_TOK, &FOLLOW_DECLARE_SORT_TOK_in_command352);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        {
+        	             if(!PARSER_STATE->isTheoryEnabled(Smt2::THEORY_UF) &&
+        	                     !PARSER_STATE->isTheoryEnabled(Smt2::THEORY_ARRAYS) &&
+        	                     !PARSER_STATE->isTheoryEnabled(Smt2::THEORY_DATATYPES) &&
+        	                     !PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS)) {
+        	                      PARSER_STATE->parseErrorLogic("Free sort symbols not allowed in ");
+        	                  }
+        	                
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_symbol_in_command366);
+        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_SORT);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkUserSymbol(name); 
+        	        }
+
+
+        	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_command381);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             Debug("parser") << "declare sort: '" << name
+        	                                  << "' arity=" << n << std::endl;
+        	                  unsigned arity = AntlrInput::tokenToUnsigned(n);
+        	                  if(arity == 0) {
+        	                    Type type = PARSER_STATE->mkSort(name);
+        	                    cmd->reset(new DeclareTypeCommand(name, 0, type));
+        	                  } else {
+        	                    Type type = PARSER_STATE->mkSortConstructor(name, arity);
+        	                    cmd->reset(new DeclareTypeCommand(name, arity, type));
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:318:5: DEFINE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] LPAREN_TOK symbolList[names,CHECK_NONE,SYM_SORT] RPAREN_TOK sortSymbol[t,CHECK_DECLARED]
+        	    {
+        	         MATCHT(DEFINE_SORT_TOK, &FOLLOW_DEFINE_SORT_TOK_in_command399);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_symbol_in_command407);
+        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_SORT);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkUserSymbol(name); 
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_command420);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_symbolList_in_command422);
+        	        symbolList(ctx, names, CHECK_NONE, SYM_SORT);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_command425);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->pushScope(true);
+        	                  for(std::vector<std::string>::const_iterator i = names.begin(),
+        	                        iend = names.end();
+        	                      i != iend;
+        	                      ++i) {
+        	                    sorts.push_back(PARSER_STATE->mkSort(*i));
+        	                  }
+        	                
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_command437);
+        	        sortSymbol(ctx, t, CHECK_DECLARED);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->popScope();
+        	                  // Do NOT call mkSort, since that creates a new sort!
+        	                  // This name is not its own distinct sort, it's an alias.
+        	                  PARSER_STATE->defineParameterizedType(name, sorts, t);
+        	                  cmd->reset(new DefineTypeCommand(name, sorts, t));
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 8:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:338:5: DECLARE_FUN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortList[sorts] RPAREN_TOK sortSymbol[t,CHECK_DECLARED]
+        	    {
+        	         MATCHT(DECLARE_FUN_TOK, &FOLLOW_DECLARE_FUN_TOK_in_command456);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_symbol_in_command464);
+        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkUserSymbol(name); 
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_command477);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_sortList_in_command479);
+        	        sortList(ctx, sorts);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_command482);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_command488);
+        	        sortSymbol(ctx, t, CHECK_DECLARED);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             Debug("parser") << "declare fun: '" << name << "'" << std::endl;
+        	                  if( sorts.size() > 0 ) {
+        	                    if(!PARSER_STATE->isTheoryEnabled(Smt2::THEORY_UF)) {
+        	                      PARSER_STATE->parseErrorLogic("Functions (of non-zero arity) cannot "
+        	                                                    "be declared in logic ");
+        	                    }
+        	                    t = EXPR_MANAGER->mkFunctionType(sorts, t);
+        	                  }
+        	                  Expr func = PARSER_STATE->mkVar(name, t);
+        	                  cmd->reset(new DeclareFunctionCommand(name, func, t));
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 9:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:355:5: DEFINE_FUN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] term[expr, expr2]
+        	    {
+        	         MATCHT(DEFINE_FUN_TOK, &FOLLOW_DEFINE_FUN_TOK_in_command507);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_symbol_in_command515);
+        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkUserSymbol(name); 
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_command528);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_sortedVarList_in_command530);
+        	        sortedVarList(ctx, sortedVarNames);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_command533);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_command539);
+        	        sortSymbol(ctx, t, CHECK_DECLARED);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             /* add variables to parser state before parsing term */
+        	                  Debug("parser") << "define fun: '" << name << "'" << std::endl;
+        	                  if( sortedVarNames.size() > 0 ) {
+        	                    std::vector<CVC4::Type> sorts;
+        	                    sorts.reserve(sortedVarNames.size());
+        	                    for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+        	                          sortedVarNames.begin(), iend = sortedVarNames.end();
+        	                        i != iend;
+        	                        ++i) {
+        	                      sorts.push_back((*i).second);
+        	                    }
+        	                    t = EXPR_MANAGER->mkFunctionType(sorts, t);
+        	                  }
+        	                  PARSER_STATE->pushScope(true);
+        	                  for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+        	                        sortedVarNames.begin(), iend = sortedVarNames.end();
+        	                      i != iend;
+        	                      ++i) {
+        	                    terms.push_back(PARSER_STATE->mkBoundVar((*i).first, (*i).second));
+        	                  }
+        	                
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_command552);
+        	        term(ctx, expr, expr2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->popScope();
+        	                  // declare the name down here (while parsing term, signature
+        	                  // must not be extended with the name itself; no recursion
+        	                  // permitted)
+        	                  Expr func = PARSER_STATE->mkFunction(name, t,
+        	                                                       ExprManager::VAR_FLAG_DEFINED);
+        	                  cmd->reset(new DefineFunctionCommand(name, func, terms, expr));
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 10:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:391:5: GET_VALUE_TOK ( LPAREN_TOK termList[terms,expr] RPAREN_TOK |~ LPAREN_TOK )
+        	    {
+        	         MATCHT(GET_VALUE_TOK, &FOLLOW_GET_VALUE_TOK_in_command571);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:392:5: ( LPAREN_TOK termList[terms,expr] RPAREN_TOK |~ LPAREN_TOK )
+        	        {
+        	            int alt4=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case LPAREN_TOK:
+        	            	{
+        	            		alt4=1;
+        	            	}
+        	                break;
+        	            case ALPHA:
+        	            case AMPERSAND_TOK:
+        	            case AND_TOK:
+        	            case ASSERT_TOK:
+        	            case AS_TOK:
+        	            case ATTRIBUTE_INST_LEVEL:
+        	            case ATTRIBUTE_NAMED_TOK:
+        	            case ATTRIBUTE_NO_PATTERN_TOK:
+        	            case ATTRIBUTE_PATTERN_TOK:
+        	            case ATTRIBUTE_RR_PRIORITY:
+        	            case ATTRIBUTE_TOK:
+        	            case AT_TOK:
+        	            case BINARY_LITERAL:
+        	            case BV2NAT_TOK:
+        	            case CHECKSAT_TOK:
+        	            case CHECK_SYNTH_TOK:
+        	            case COMMENT:
+        	            case CONSTRAINT_TOK:
+        	            case CONST_TOK:
+        	            case DECIMAL_LITERAL:
+        	            case DECLARE_CODATATYPES_TOK:
+        	            case DECLARE_CONST_TOK:
+        	            case DECLARE_DATATYPES_TOK:
+        	            case DECLARE_FUNS_TOK:
+        	            case DECLARE_FUN_TOK:
+        	            case DECLARE_PREDS_TOK:
+        	            case DECLARE_PRIMED_VAR_TOK:
+        	            case DECLARE_SORTS_TOK:
+        	            case DECLARE_SORT_TOK:
+        	            case DECLARE_VAR_TOK:
+        	            case DEFINE_CONST_TOK:
+        	            case DEFINE_FUNS_REC_TOK:
+        	            case DEFINE_FUN_REC_TOK:
+        	            case DEFINE_FUN_TOK:
+        	            case DEFINE_SORT_TOK:
+        	            case DEFINE_TOK:
+        	            case DIGIT:
+        	            case DISTINCT_TOK:
+        	            case DIVISIBLE_TOK:
+        	            case DIV_TOK:
+        	            case DTSIZE_TOK:
+        	            case ECHO_TOK:
+        	            case EMPTYSET_TOK:
+        	            case EQUAL_TOK:
+        	            case EXISTS_TOK:
+        	            case EXIT_TOK:
+        	            case FMFCARDVAL_TOK:
+        	            case FMFCARD_TOK:
+        	            case FORALL_TOK:
+        	            case FP_NAN_TOK:
+        	            case FP_NINF_TOK:
+        	            case FP_NZERO_TOK:
+        	            case FP_PINF_TOK:
+        	            case FP_PZERO_TOK:
+        	            case FP_RNA_FULL_TOK:
+        	            case FP_RNA_TOK:
+        	            case FP_RNE_FULL_TOK:
+        	            case FP_RNE_TOK:
+        	            case FP_RTN_FULL_TOK:
+        	            case FP_RTN_TOK:
+        	            case FP_RTP_FULL_TOK:
+        	            case FP_RTP_TOK:
+        	            case FP_RTZ_FULL_TOK:
+        	            case FP_RTZ_TOK:
+        	            case FP_TO_FPBV_TOK:
+        	            case FP_TO_FPFP_TOK:
+        	            case FP_TO_FPR_TOK:
+        	            case FP_TO_FPS_TOK:
+        	            case FP_TO_FPU_TOK:
+        	            case FP_TO_FP_TOK:
+        	            case FP_TO_SBV_TOK:
+        	            case FP_TO_UBV_TOK:
+        	            case GET_ASSERTIONS_TOK:
+        	            case GET_ASSIGNMENT_TOK:
+        	            case GET_INFO_TOK:
+        	            case GET_MODEL_TOK:
+        	            case GET_OPTION_TOK:
+        	            case GET_PROOF_TOK:
+        	            case GET_QE_DISJUNCT_TOK:
+        	            case GET_QE_TOK:
+        	            case GET_UNSAT_CORE_TOK:
+        	            case GET_VALUE_TOK:
+        	            case GREATER_THAN_EQUAL_TOK:
+        	            case GREATER_THAN_TOK:
+        	            case HEX_DIGIT:
+        	            case HEX_LITERAL:
+        	            case IMPLIES_TOK:
+        	            case INCLUDE_TOK:
+        	            case INDEX_TOK:
+        	            case INST_CLOSURE_TOK:
+        	            case INT2BV_TOK:
+        	            case INTEGER_LITERAL:
+        	            case INV_CONSTRAINT_TOK:
+        	            case ITE_TOK:
+        	            case KEYWORD:
+        	            case LESS_THAN_EQUAL_TOK:
+        	            case LESS_THAN_TOK:
+        	            case LET_TOK:
+        	            case META_INFO_TOK:
+        	            case MINUS_TOK:
+        	            case NILREF_TOK:
+        	            case NOT_TOK:
+        	            case NUMERAL:
+        	            case OR_TOK:
+        	            case PLUS_TOK:
+        	            case POP_TOK:
+        	            case PROPAGATION_RULE_TOK:
+        	            case PUSH_TOK:
+        	            case QUOTED_SYMBOL:
+        	            case REALLCHAR_TOK:
+        	            case REDUCTION_RULE_TOK:
+        	            case RENOSTR_TOK:
+        	            case RESET_ASSERTIONS_TOK:
+        	            case RESET_TOK:
+        	            case REWRITE_RULE_TOK:
+        	            case RPAREN_TOK:
+        	            case SET_INFO_TOK:
+        	            case SET_LOGIC_TOK:
+        	            case SET_OPTIONS_TOK:
+        	            case SET_OPTION_TOK:
+        	            case SIMPLE_SYMBOL:
+        	            case SIMPLIFY_TOK:
+        	            case STAR_TOK:
+        	            case STRING_LITERAL_2_0:
+        	            case STRING_LITERAL_2_5:
+        	            case SYGUS_CONSTANT_TOK:
+        	            case SYGUS_ENUM_CONS_TOK:
+        	            case SYGUS_ENUM_TOK:
+        	            case SYGUS_INPUT_VARIABLE_TOK:
+        	            case SYGUS_LOCAL_VARIABLE_TOK:
+        	            case SYGUS_QUOTED_LITERAL:
+        	            case SYGUS_VARIABLE_TOK:
+        	            case SYMBOL_CHAR:
+        	            case SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE:
+        	            case SYNTH_FUN_TOK:
+        	            case SYNTH_INV_TOK:
+        	            case UNIVSET_TOK:
+        	            case UNTERMINATED_QUOTED_SYMBOL:
+        	            case WHITESPACE:
+        	            case XOR_TOK:
+        	            case 145:
+        	            case 146:
+        	            case 147:
+        	            case 148:
+        	            case 149:
+        	            case 150:
+        	            case 151:
+        	            	{
+        	            		alt4=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 4;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulecommandEx;
+
+        	            }
+
+        	            switch (alt4)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:392:7: LPAREN_TOK termList[terms,expr] RPAREN_TOK
+        	        	    {
+        	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_command581);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulecommandEx;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_termList_in_command583);
+        	        	        termList(ctx, terms, expr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulecommandEx;
+        	        	        }
+
+
+        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_command586);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulecommandEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             cmd->reset(new GetValueCommand(terms)); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:394:7: ~ LPAREN_TOK
+        	        	    {
+        	        	        if ( ((LA(1) >= ALPHA) && (LA(1) <= LET_TOK)) || ((LA(1) >= META_INFO_TOK) && (LA(1) <= 151)) )
+        	        	        {
+        	        	            CONSUME();
+        	        	            PERRORRECOVERY=ANTLR3_FALSE;
+        	        	        }
+        	        	        else
+        	        	        {
+        	        	            CONSTRUCTEX();
+        	        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+        	        	            EXCEPTION->expectingSet = NULL;
+
+        	        	            goto rulecommandEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             PARSER_STATE->parseError("The get-value command expects a list of "
+        	        	                                             "terms.  Perhaps you forgot a pair of "
+        	        	                                             "parentheses?");
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	    }
+        	    break;
+        	case 11:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:401:5: GET_ASSIGNMENT_TOK
+        	    {
+        	         MATCHT(GET_ASSIGNMENT_TOK, &FOLLOW_GET_ASSIGNMENT_TOK_in_command629);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        {
+        	             cmd->reset(new GetAssignmentCommand()); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 12:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:404:5: ASSERT_TOK term[expr, expr2]
+        	    {
+        	         MATCHT(ASSERT_TOK, &FOLLOW_ASSERT_TOK_in_command649);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->clearLastNamedTerm(); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_command669);
+        	        term(ctx, expr, expr2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             bool inUnsatCore = PARSER_STATE->lastNamedTerm().first == expr;
+        	                  cmd->reset(new AssertCommand(expr, inUnsatCore));
+        	                  if(inUnsatCore) {
+        	                    PARSER_STATE->registerUnsatCoreName(PARSER_STATE->lastNamedTerm());
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 13:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:418:5: CHECKSAT_TOK ( term[expr, expr2] |)
+        	    {
+        	         MATCHT(CHECKSAT_TOK, &FOLLOW_CHECKSAT_TOK_in_command688);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        {
+        	             if( PARSER_STATE->sygus() ){
+        	                    PARSER_STATE->parseError("Sygus does not support check-sat command.");
+        	                  }
+        	                
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:423:5: ( term[expr, expr2] |)
+        	        {
+        	            int alt5=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case BINARY_LITERAL:
+        	            case CHECK_SYNTH_TOK:
+        	            case CONSTRAINT_TOK:
+        	            case DECIMAL_LITERAL:
+        	            case DECLARE_PRIMED_VAR_TOK:
+        	            case DECLARE_VAR_TOK:
+        	            case EMPTYSET_TOK:
+        	            case FP_RNA_FULL_TOK:
+        	            case FP_RNA_TOK:
+        	            case FP_RNE_FULL_TOK:
+        	            case FP_RNE_TOK:
+        	            case FP_RTN_FULL_TOK:
+        	            case FP_RTN_TOK:
+        	            case FP_RTP_FULL_TOK:
+        	            case FP_RTP_TOK:
+        	            case FP_RTZ_FULL_TOK:
+        	            case FP_RTZ_TOK:
+        	            case HEX_LITERAL:
+        	            case INTEGER_LITERAL:
+        	            case INV_CONSTRAINT_TOK:
+        	            case LPAREN_TOK:
+        	            case NILREF_TOK:
+        	            case QUOTED_SYMBOL:
+        	            case REALLCHAR_TOK:
+        	            case RENOSTR_TOK:
+        	            case SET_OPTIONS_TOK:
+        	            case SIMPLE_SYMBOL:
+        	            case STRING_LITERAL_2_0:
+        	            case STRING_LITERAL_2_5:
+        	            case SYNTH_FUN_TOK:
+        	            case SYNTH_INV_TOK:
+        	            case UNIVSET_TOK:
+        	            case UNTERMINATED_QUOTED_SYMBOL:
+        	            case 147:
+        	            	{
+        	            		alt5=1;
+        	            	}
+        	                break;
+        	            case RPAREN_TOK:
+        	            	{
+        	            		alt5=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 5;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulecommandEx;
+
+        	            }
+
+        	            switch (alt5)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:423:7: term[expr, expr2]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_term_in_command704);
+        	        	        term(ctx, expr, expr2);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulecommandEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             if(PARSER_STATE->strictModeEnabled()) {
+        	        	                      PARSER_STATE->parseError(
+        	        	                          "Extended commands (such as check-sat with an argument) are not "
+        	        	                          "permitted while operating in strict compliance mode.");
+        	        	                    }
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:430:7: 
+        	        	    {
+        	        	        {
+        	        	             expr = MK_CONST(bool(true)); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        {
+        	             cmd->reset(new CheckSatCommand(expr)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 14:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:434:5: GET_ASSERTIONS_TOK
+        	    {
+        	         MATCHT(GET_ASSERTIONS_TOK, &FOLLOW_GET_ASSERTIONS_TOK_in_command745);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        {
+        	             cmd->reset(new GetAssertionsCommand()); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 15:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:437:5: GET_PROOF_TOK
+        	    {
+        	         MATCHT(GET_PROOF_TOK, &FOLLOW_GET_PROOF_TOK_in_command765);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        {
+        	             cmd->reset(new GetProofCommand()); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 16:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:440:5: GET_UNSAT_CORE_TOK
+        	    {
+        	         MATCHT(GET_UNSAT_CORE_TOK, &FOLLOW_GET_UNSAT_CORE_TOK_in_command785);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        {
+        	             cmd->reset(new GetUnsatCoreCommand(PARSER_STATE->getUnsatCoreNames())); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 17:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:443:5: PUSH_TOK (k= INTEGER_LITERAL |)
+        	    {
+        	         MATCHT(PUSH_TOK, &FOLLOW_PUSH_TOK_in_command805);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        {
+        	             if( PARSER_STATE->sygus() ){
+        	                    PARSER_STATE->parseError("Sygus does not support push command.");
+        	                  }
+        	                
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:448:5: (k= INTEGER_LITERAL |)
+        	        {
+        	            int alt6=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case INTEGER_LITERAL:
+        	            	{
+        	            		alt6=1;
+        	            	}
+        	                break;
+        	            case RPAREN_TOK:
+        	            	{
+        	            		alt6=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 6;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulecommandEx;
+
+        	            }
+
+        	            switch (alt6)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:448:7: k= INTEGER_LITERAL
+        	        	    {
+        	        	        k = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_command823);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulecommandEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             unsigned n = AntlrInput::tokenToUnsigned(k);
+        	        	                    if(n == 0) {
+        	        	                      cmd->reset(new EmptyCommand());
+        	        	                    } else if(n == 1) {
+        	        	                      PARSER_STATE->pushScope();
+        	        	                      PARSER_STATE->pushUnsatCoreNameScope();
+        	        	                      cmd->reset(new PushCommand());
+        	        	                    } else {
+        	        	                      CVC4::PtrCloser<CommandSequence> seq(new CommandSequence());
+        	        	                      do {
+        	        	                        PARSER_STATE->pushScope();
+        	        	                        PARSER_STATE->pushUnsatCoreNameScope();
+        	        	                        Command* push_cmd = new PushCommand();
+        	        	                        push_cmd->setMuted(n > 1);
+        	        	                        seq->addCommand(push_cmd);
+        	        	                        --n;
+        	        	                        } while(n > 0);
+        	        	                      cmd->reset(seq.release());
+        	        	                    }
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:469:7: 
+        	        	    {
+        	        	        {
+        	        	             if(PARSER_STATE->strictModeEnabled()) {
+        	        	                      PARSER_STATE->parseError(
+        	        	                          "Strict compliance mode demands an integer to be provided to "
+        	        	                          "PUSH.  Maybe you want (push 1)?");
+        	        	                    } else {
+        	        	                      PARSER_STATE->pushScope();
+        	        	                      PARSER_STATE->pushUnsatCoreNameScope();
+        	        	                      cmd->reset(new PushCommand());
+        	        	                    }
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	    }
+        	    break;
+        	case 18:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:479:5: POP_TOK (k= INTEGER_LITERAL |)
+        	    {
+        	         MATCHT(POP_TOK, &FOLLOW_POP_TOK_in_command847);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        {
+        	             if( PARSER_STATE->sygus() ){
+        	                    PARSER_STATE->parseError("Sygus does not support pop command.");
+        	                  }
+        	                
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:484:5: (k= INTEGER_LITERAL |)
+        	        {
+        	            int alt7=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case INTEGER_LITERAL:
+        	            	{
+        	            		alt7=1;
+        	            	}
+        	                break;
+        	            case RPAREN_TOK:
+        	            	{
+        	            		alt7=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 7;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulecommandEx;
+
+        	            }
+
+        	            switch (alt7)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:484:7: k= INTEGER_LITERAL
+        	        	    {
+        	        	        k = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_command865);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulecommandEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             unsigned n = AntlrInput::tokenToUnsigned(k);
+        	        	                    if(n > PARSER_STATE->scopeLevel()) {
+        	        	                      PARSER_STATE->parseError("Attempted to pop above the top stack "
+        	        	                                               "frame.");
+        	        	                    }
+        	        	                    if(n == 0) {
+        	        	                      cmd->reset(new EmptyCommand());
+        	        	                    } else if(n == 1) {
+        	        	                      PARSER_STATE->popUnsatCoreNameScope();
+        	        	                      PARSER_STATE->popScope();
+        	        	                      cmd->reset(new PopCommand());
+        	        	                    } else {
+        	        	                      CVC4::PtrCloser<CommandSequence> seq(new CommandSequence());
+        	        	                      do {
+        	        	                        PARSER_STATE->popUnsatCoreNameScope();
+        	        	                        PARSER_STATE->popScope();
+        	        	                        Command* pop_command = new PopCommand();
+        	        	                        pop_command->setMuted(n > 1);
+        	        	                        seq->addCommand(pop_command);
+        	        	                        --n;
+        	        	                      } while(n > 0);
+        	        	                      cmd->reset(seq.release());
+        	        	                    }
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:509:7: 
+        	        	    {
+        	        	        {
+        	        	             if(PARSER_STATE->strictModeEnabled()) {
+        	        	                      PARSER_STATE->parseError(
+        	        	                          "Strict compliance mode demands an integer to be provided to POP."
+        	        	                          "Maybe you want (pop 1)?");
+        	        	                    } else {
+        	        	                      PARSER_STATE->popUnsatCoreNameScope();
+        	        	                      PARSER_STATE->popScope();
+        	        	                      cmd->reset(new PopCommand());
+        	        	                    }
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	    }
+        	    break;
+        	case 19:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:521:5: EXIT_TOK
+        	    {
+        	         MATCHT(EXIT_TOK, &FOLLOW_EXIT_TOK_in_command899);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             cmd->reset(new QuitCommand()); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 20:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:525:5: smt25Command[cmd]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_smt25Command_in_command918);
+        	        smt25Command(ctx, cmd);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             if(PARSER_STATE->v2_0() && PARSER_STATE->strictModeEnabled()) {
+        	                    PARSER_STATE->parseError(
+        	                        "SMT-LIB 2.5 commands are not permitted while operating in strict "
+        	                        "compliance mode and in SMT-LIB 2.0 mode.");
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 21:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:534:5: extendedCommand[cmd]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_extendedCommand_in_command938);
+        	        extendedCommand(ctx, cmd);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             if(PARSER_STATE->strictModeEnabled()) {
+        	                    PARSER_STATE->parseError(
+        	                        "Extended commands are not permitted while operating in strict "
+        	                        "compliance mode.");
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 22:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:543:5: SIMPLE_SYMBOL
+        	    {
+        	        SIMPLE_SYMBOL3 = (pANTLR3_COMMON_TOKEN) MATCHT(SIMPLE_SYMBOL, &FOLLOW_SIMPLE_SYMBOL_in_command958);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecommandEx;
+        	        }
+
+
+        	        {
+        	             std::string id = AntlrInput::tokenText(SIMPLE_SYMBOL3);
+        	                  if(id == "benchmark") {
+        	                    PARSER_STATE->parseError(
+        	                        "In SMT-LIBv2 mode, but got something that looks like SMT-LIBv1. "
+        	                        "Use --lang smt1 for SMT-LIBv1.");
+        	                  } else {
+        	                    PARSER_STATE->parseError("expected SMT-LIBv2 command, got `" + id +
+        	                                             "'.");
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulecommandEx; /* Prevent compiler warnings */
+    rulecommandEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end command */
+
+/**
+ * $ANTLR start sygusCommand
+ * ../../../../../../src/parser/smt2/Smt2.g:556:1: sygusCommand[CVC4::PtrCloser<CVC4::Command>* cmd] : ( DECLARE_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | DECLARE_PRIMED_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | ( SYNTH_FUN_TOK | SYNTH_INV_TOK ) symbol[fun,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK ( sortSymbol[range,CHECK_DECLARED] )? ( LPAREN_TOK ( LPAREN_TOK symbol[n [...]
+ */
+static void
+sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
+{
+
+      std::string name, fun;
+      std::vector<std::string> names;
+      Expr expr, expr2;
+      Type t, range;
+      std::vector<Expr> terms;
+      std::vector<Type> sorts;
+      std::vector<Expr> sygus_vars;
+      std::vector<std::pair<std::string, Type> > sortedVarNames;
+      SExpr sexpr;
+      CVC4::PtrCloser<CVC4::CommandSequence> seq;
+      std::vector< std::vector< CVC4::SygusGTerm > > sgts;
+      std::vector< CVC4::Datatype > datatypes;
+      std::vector< std::vector<Expr> > ops;
+      std::vector< std::vector< std::string > > cnames;
+      std::vector< std::vector< std::vector< CVC4::Type > > > cargs;
+      std::vector< bool > allow_const;
+      std::vector< std::vector< std::string > > unresolved_gterm_sym;
+      bool read_syntax = false;
+      Type sygus_ret;
+      std::map< CVC4::Type, CVC4::Type > sygus_to_builtin;
+      std::map< CVC4::Type, CVC4::Expr > sygus_to_builtin_expr;
+      int startIndex = -1;
+
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/smt2/Smt2.g:581:3: ( DECLARE_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | DECLARE_PRIMED_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | ( SYNTH_FUN_TOK | SYNTH_INV_TOK ) symbol[fun,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK ( sortSymbol[range,CHECK_DECLARED] )? ( LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol [...]
+
+            ANTLR3_UINT32 alt15;
+
+            alt15=7;
+
+            switch ( LA(1) )
+            {
+            case DECLARE_VAR_TOK:
+            	{
+            		alt15=1;
+            	}
+                break;
+            case DECLARE_PRIMED_VAR_TOK:
+            	{
+            		alt15=2;
+            	}
+                break;
+            case SYNTH_FUN_TOK:
+            case SYNTH_INV_TOK:
+            	{
+            		alt15=3;
+            	}
+                break;
+            case CONSTRAINT_TOK:
+            	{
+            		alt15=4;
+            	}
+                break;
+            case INV_CONSTRAINT_TOK:
+            	{
+            		alt15=5;
+            	}
+                break;
+            case CHECK_SYNTH_TOK:
+            	{
+            		alt15=6;
+            	}
+                break;
+            case ASSERT_TOK:
+            case CHECKSAT_TOK:
+            case DECLARE_CODATATYPES_TOK:
+            case DECLARE_CONST_TOK:
+            case DECLARE_DATATYPES_TOK:
+            case DECLARE_FUNS_TOK:
+            case DECLARE_FUN_TOK:
+            case DECLARE_PREDS_TOK:
+            case DECLARE_SORTS_TOK:
+            case DECLARE_SORT_TOK:
+            case DEFINE_CONST_TOK:
+            case DEFINE_FUNS_REC_TOK:
+            case DEFINE_FUN_REC_TOK:
+            case DEFINE_FUN_TOK:
+            case DEFINE_SORT_TOK:
+            case DEFINE_TOK:
+            case ECHO_TOK:
+            case EXIT_TOK:
+            case GET_ASSERTIONS_TOK:
+            case GET_ASSIGNMENT_TOK:
+            case GET_INFO_TOK:
+            case GET_MODEL_TOK:
+            case GET_OPTION_TOK:
+            case GET_PROOF_TOK:
+            case GET_QE_DISJUNCT_TOK:
+            case GET_QE_TOK:
+            case GET_UNSAT_CORE_TOK:
+            case GET_VALUE_TOK:
+            case META_INFO_TOK:
+            case POP_TOK:
+            case PROPAGATION_RULE_TOK:
+            case PUSH_TOK:
+            case REDUCTION_RULE_TOK:
+            case RESET_ASSERTIONS_TOK:
+            case RESET_TOK:
+            case REWRITE_RULE_TOK:
+            case SET_INFO_TOK:
+            case SET_LOGIC_TOK:
+            case SET_OPTION_TOK:
+            case SIMPLE_SYMBOL:
+            case SIMPLIFY_TOK:
+            	{
+            		alt15=7;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 15;
+                EXCEPTION->state        = 0;
+
+
+                goto rulesygusCommandEx;
+
+            }
+
+            switch (alt15)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:582:5: DECLARE_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED]
+        	    {
+        	         MATCHT(DECLARE_VAR_TOK, &FOLLOW_DECLARE_VAR_TOK_in_sygusCommand990);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusCommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_symbol_in_sygusCommand998);
+        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusCommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkUserSymbol(name); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sygusCommand1011);
+        	        sortSymbol(ctx, t, CHECK_DECLARED);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusCommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->mkSygusVar(name, t);
+        	                  cmd->reset(new EmptyCommand());
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:590:5: DECLARE_PRIMED_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED]
+        	    {
+        	         MATCHT(DECLARE_PRIMED_VAR_TOK, &FOLLOW_DECLARE_PRIMED_VAR_TOK_in_sygusCommand1030);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusCommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_symbol_in_sygusCommand1038);
+        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusCommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkUserSymbol(name); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sygusCommand1051);
+        	        sortSymbol(ctx, t, CHECK_DECLARED);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusCommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->mkSygusVar(name, t, true);
+        	                  cmd->reset(new EmptyCommand());
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:599:5: ( SYNTH_FUN_TOK | SYNTH_INV_TOK ) symbol[fun,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK ( sortSymbol[range,CHECK_DECLARED] )? ( LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] LPAREN_TOK ( sygusGTerm[ sgts.back().back(), fun] )+ RPAREN_TOK RPAREN_TOK )+ RPAREN_TOK )?
+        	    {
+        	        // ../../../../../../src/parser/smt2/Smt2.g:599:5: ( SYNTH_FUN_TOK | SYNTH_INV_TOK )
+        	        {
+        	            int alt9=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case SYNTH_FUN_TOK:
+        	            	{
+        	            		alt9=1;
+        	            	}
+        	                break;
+        	            case SYNTH_INV_TOK:
+        	            	{
+        	            		alt9=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 9;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulesygusCommandEx;
+
+        	            }
+
+        	            switch (alt9)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:599:7: SYNTH_FUN_TOK
+        	        	    {
+        	        	         MATCHT(SYNTH_FUN_TOK, &FOLLOW_SYNTH_FUN_TOK_in_sygusCommand1073);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusCommandEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:599:23: SYNTH_INV_TOK
+        	        	    {
+        	        	         MATCHT(SYNTH_INV_TOK, &FOLLOW_SYNTH_INV_TOK_in_sygusCommand1077);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusCommandEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             range = EXPR_MANAGER->booleanType(); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_symbol_in_sygusCommand1093);
+        	        symbol(ctx, fun, CHECK_UNDECLARED, SYM_VARIABLE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusCommandEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sygusCommand1100);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_sortedVarList_in_sygusCommand1102);
+        	        sortedVarList(ctx, sortedVarNames);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusCommandEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sygusCommand1105);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusCommandEx;
+        	        }
+
+
+        	        {
+        	             seq.reset(new CommandSequence());
+        	                  PARSER_STATE->pushScope(true);
+        	                  for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+        	                        sortedVarNames.begin(), iend = sortedVarNames.end(); i != iend;
+        	                      ++i) {
+        	                    Expr v = PARSER_STATE->mkBoundVar((*i).first, (*i).second);
+        	                    terms.push_back( v );
+        	                    sygus_vars.push_back( v );
+        	                  }
+        	                  Expr bvl;
+        	                  if( !terms.empty() ){
+        	                    bvl = MK_EXPR(kind::BOUND_VAR_LIST, terms);
+        	                  }
+        	                  terms.clear();
+        	                  terms.push_back(bvl);
+        	                
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:619:5: ( sortSymbol[range,CHECK_DECLARED] )?
+        	        {
+        	            int alt10=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case CHECK_SYNTH_TOK:
+        	                case CONSTRAINT_TOK:
+        	                case DECLARE_PRIMED_VAR_TOK:
+        	                case DECLARE_VAR_TOK:
+        	                case INV_CONSTRAINT_TOK:
+        	                case QUOTED_SYMBOL:
+        	                case SET_OPTIONS_TOK:
+        	                case SIMPLE_SYMBOL:
+        	                case SYNTH_FUN_TOK:
+        	                case SYNTH_INV_TOK:
+        	                case UNTERMINATED_QUOTED_SYMBOL:
+        	                case 147:
+        	                	{
+        	                		alt10=1;
+        	                	}
+        	                    break;
+        	                case LPAREN_TOK:
+        	                	{
+        	                		switch ( LA(2) )
+        	                		{
+        	                		    case CHECK_SYNTH_TOK:
+        	                		    case CONSTRAINT_TOK:
+        	                		    case DECLARE_PRIMED_VAR_TOK:
+        	                		    case DECLARE_VAR_TOK:
+        	                		    case INDEX_TOK:
+        	                		    case INV_CONSTRAINT_TOK:
+        	                		    case QUOTED_SYMBOL:
+        	                		    case SET_OPTIONS_TOK:
+        	                		    case SIMPLE_SYMBOL:
+        	                		    case SYNTH_FUN_TOK:
+        	                		    case SYNTH_INV_TOK:
+        	                		    case UNTERMINATED_QUOTED_SYMBOL:
+        	                		    case 147:
+        	                		    	{
+        	                		    		alt10=1;
+        	                		    	}
+        	                		        break;
+        	                		}
+
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt10)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:619:7: sortSymbol[range,CHECK_DECLARED]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sygusCommand1119);
+        	        	        sortSymbol(ctx, range, CHECK_DECLARED);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusCommandEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        {
+
+        	                  if( range.isNull() ){
+        	                    PARSER_STATE->parseError("Must supply return type for synth-fun.");
+        	                  }
+        	                
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:624:5: ( LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] LPAREN_TOK ( sygusGTerm[ sgts.back().back(), fun] )+ RPAREN_TOK RPAREN_TOK )+ RPAREN_TOK )?
+        	        {
+        	            int alt13=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case LPAREN_TOK:
+        	                	{
+        	                		alt13=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt13)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:624:7: LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] LPAREN_TOK ( sygusGTerm[ sgts.back().back(), fun] )+ RPAREN_TOK RPAREN_TOK )+ RPAREN_TOK
+        	        	    {
+        	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sygusCommand1133);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusCommandEx;
+        	        	        }
+
+
+        	        	        // ../../../../../../src/parser/smt2/Smt2.g:625:5: ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] LPAREN_TOK ( sygusGTerm[ sgts.back().back(), fun] )+ RPAREN_TOK RPAREN_TOK )+
+        	        	        {
+        	        	            int cnt12=0;
+
+        	        	            for (;;)
+        	        	            {
+        	        	                int alt12=2;
+        	        	        	switch ( LA(1) )
+        	        	        	{
+        	        	        	case LPAREN_TOK:
+        	        	        		{
+        	        	        			alt12=1;
+        	        	        		}
+        	        	        	    break;
+
+        	        	        	}
+
+        	        	        	switch (alt12)
+        	        	        	{
+        	        	        	    case 1:
+        	        	        	        // ../../../../../../src/parser/smt2/Smt2.g:625:7: LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] LPAREN_TOK ( sygusGTerm[ sgts.back().back(), fun] )+ RPAREN_TOK RPAREN_TOK
+        	        	        	        {
+        	        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sygusCommand1141);
+        	        	        	            if  (HASEXCEPTION())
+        	        	        	            {
+        	        	        	                goto rulesygusCommandEx;
+        	        	        	            }
+
+
+        	        	        	            FOLLOWPUSH(FOLLOW_symbol_in_sygusCommand1149);
+        	        	        	            symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
+
+        	        	        	            FOLLOWPOP();
+        	        	        	            if  (HASEXCEPTION())
+        	        	        	            {
+        	        	        	                goto rulesygusCommandEx;
+        	        	        	            }
+
+
+        	        	        	            FOLLOWPUSH(FOLLOW_sortSymbol_in_sygusCommand1159);
+        	        	        	            sortSymbol(ctx, t, CHECK_DECLARED);
+
+        	        	        	            FOLLOWPOP();
+        	        	        	            if  (HASEXCEPTION())
+        	        	        	            {
+        	        	        	                goto rulesygusCommandEx;
+        	        	        	            }
+
+
+        	        	        	            {
+        	        	        	                 std::stringstream ss;
+        	        	        	                        ss << fun << "_" << name;
+        	        	        	                        if( name=="Start" ){
+        	        	        	                          startIndex = datatypes.size();
+        	        	        	                        }
+        	        	        	                        std::string dname = ss.str();
+        	        	        	                        sgts.push_back( std::vector< CVC4::SygusGTerm >() );
+        	        	        	                        sgts.back().push_back( CVC4::SygusGTerm() );
+        	        	        	                        PARSER_STATE->pushSygusDatatypeDef(
+        	        	        	                            t, dname, datatypes, sorts, ops, cnames, cargs, allow_const,
+        	        	        	                            unresolved_gterm_sym);
+        	        	        	                        Type unres_t;
+        	        	        	                        if(!PARSER_STATE->isUnresolvedType(dname)) {
+        	        	        	                          // if not unresolved, must be undeclared
+        	        	        	                          Debug("parser-sygus") << "Make unresolved type : " << dname
+        	        	        	                                                << std::endl;
+        	        	        	                          PARSER_STATE->checkDeclaration(dname, CHECK_UNDECLARED, SYM_SORT);
+        	        	        	                          unres_t = PARSER_STATE->mkUnresolvedType(dname);
+        	        	        	                        }else{
+        	        	        	                          Debug("parser-sygus") << "Get sort : " << dname << std::endl;
+        	        	        	                          unres_t = PARSER_STATE->getSort(dname);
+        	        	        	                        }
+        	        	        	                        sygus_to_builtin[unres_t] = t;
+        	        	        	                        Debug("parser-sygus") << "--- Read sygus grammar " << name
+        	        	        	                                              << " under function " << fun << "..."
+        	        	        	                                              << std::endl
+        	        	        	                                              << "    type to resolve " << unres_t << std::endl
+        	        	        	                                              << "    builtin type " << t << std::endl;
+        	        	        	                      
+        	        	        	            }
+
+
+        	        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sygusCommand1190);
+        	        	        	            if  (HASEXCEPTION())
+        	        	        	            {
+        	        	        	                goto rulesygusCommandEx;
+        	        	        	            }
+
+
+        	        	        	            // ../../../../../../src/parser/smt2/Smt2.g:659:18: ( sygusGTerm[ sgts.back().back(), fun] )+
+        	        	        	            {
+        	        	        	                int cnt11=0;
+
+        	        	        	                for (;;)
+        	        	        	                {
+        	        	        	                    int alt11=2;
+        	        	        	            	switch ( LA(1) )
+        	        	        	            	{
+        	        	        	            	case BINARY_LITERAL:
+        	        	        	            	case CHECK_SYNTH_TOK:
+        	        	        	            	case CONSTRAINT_TOK:
+        	        	        	            	case DECLARE_PRIMED_VAR_TOK:
+        	        	        	            	case DECLARE_VAR_TOK:
+        	        	        	            	case HEX_LITERAL:
+        	        	        	            	case INTEGER_LITERAL:
+        	        	        	            	case INV_CONSTRAINT_TOK:
+        	        	        	            	case LPAREN_TOK:
+        	        	        	            	case QUOTED_SYMBOL:
+        	        	        	            	case SET_OPTIONS_TOK:
+        	        	        	            	case SIMPLE_SYMBOL:
+        	        	        	            	case STRING_LITERAL_2_0:
+        	        	        	            	case STRING_LITERAL_2_5:
+        	        	        	            	case SYNTH_FUN_TOK:
+        	        	        	            	case SYNTH_INV_TOK:
+        	        	        	            	case UNTERMINATED_QUOTED_SYMBOL:
+        	        	        	            	case 147:
+        	        	        	            		{
+        	        	        	            			alt11=1;
+        	        	        	            		}
+        	        	        	            	    break;
+
+        	        	        	            	}
+
+        	        	        	            	switch (alt11)
+        	        	        	            	{
+        	        	        	            	    case 1:
+        	        	        	            	        // ../../../../../../src/parser/smt2/Smt2.g:659:20: sygusGTerm[ sgts.back().back(), fun]
+        	        	        	            	        {
+        	        	        	            	            FOLLOWPUSH(FOLLOW_sygusGTerm_in_sygusCommand1194);
+        	        	        	            	            sygusGTerm(ctx, sgts.back().back(), fun);
+
+        	        	        	            	            FOLLOWPOP();
+        	        	        	            	            if  (HASEXCEPTION())
+        	        	        	            	            {
+        	        	        	            	                goto rulesygusCommandEx;
+        	        	        	            	            }
+
+
+        	        	        	            	            {
+        	        	        	            	                 sgts.back().push_back( CVC4::SygusGTerm() ); 
+        	        	        	            	            }
+
+
+        	        	        	            	        }
+        	        	        	            	        break;
+
+        	        	        	            	    default:
+
+        	        	        	            		if ( cnt11 >= 1 )
+        	        	        	            		{
+        	        	        	            		    goto loop11;
+        	        	        	            		}
+        	        	        	            		/* mismatchedSetEx()
+        	        	        	            		 */
+        	        	        	            		CONSTRUCTEX();
+        	        	        	            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        	        	            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        	        	            		goto rulesygusCommandEx;
+        	        	        	            	}
+        	        	        	            	cnt11++;
+        	        	        	                }
+        	        	        	                loop11: ;	/* Jump to here if this rule does not match */
+        	        	        	            }
+
+        	        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sygusCommand1215);
+        	        	        	            if  (HASEXCEPTION())
+        	        	        	            {
+        	        	        	                goto rulesygusCommandEx;
+        	        	        	            }
+
+
+        	        	        	            {
+        	        	        	                 sgts.back().pop_back(); 
+        	        	        	            }
+
+
+        	        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sygusCommand1225);
+        	        	        	            if  (HASEXCEPTION())
+        	        	        	            {
+        	        	        	                goto rulesygusCommandEx;
+        	        	        	            }
+
+
+        	        	        	        }
+        	        	        	        break;
+
+        	        	        	    default:
+
+        	        	        		if ( cnt12 >= 1 )
+        	        	        		{
+        	        	        		    goto loop12;
+        	        	        		}
+        	        	        		/* mismatchedSetEx()
+        	        	        		 */
+        	        	        		CONSTRUCTEX();
+        	        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        	        		goto rulesygusCommandEx;
+        	        	        	}
+        	        	        	cnt12++;
+        	        	            }
+        	        	            loop12: ;	/* Jump to here if this rule does not match */
+        	        	        }
+
+        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sygusCommand1239);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusCommandEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             read_syntax = true; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        {
+        	             
+        	                  if( !read_syntax ){
+        	                    //create the default grammar
+        	                    Debug("parser-sygus") << "Make default grammar..." << std::endl;
+        	                    PARSER_STATE->mkSygusDefaultGrammar(
+        	                        range, terms[0], fun, datatypes, sorts, ops, sygus_vars,
+        	                        startIndex);
+        	                    //set start index
+        	                    Debug("parser-sygus") << "Set start index " << startIndex << "..."
+        	                                          << std::endl;
+        	                    PARSER_STATE->setSygusStartIndex(fun, startIndex, datatypes, sorts,
+        	                                                     ops);        
+        	                  }else{
+        	                    Debug("parser-sygus") << "--- Process " << sgts.size()
+        	                                          << " sygus gterms..." << std::endl;
+        	                    for( unsigned i=0; i<sgts.size(); i++ ){
+        	                      for( unsigned j=0; j<sgts[i].size(); j++ ){
+        	                        Type sub_ret;
+        	                        PARSER_STATE->processSygusGTerm(
+        	                            sgts[i][j], i, datatypes, sorts, ops, cnames, cargs,
+        	                            allow_const, unresolved_gterm_sym, sygus_vars, sygus_to_builtin,
+        	                            sygus_to_builtin_expr, sub_ret );
+        	                      }
+        	                    }
+        	                    //swap index if necessary
+        	                    Debug("parser-sygus") << "--- Making sygus datatypes..." << std::endl;
+        	                    for( unsigned i=0; i<datatypes.size(); i++ ){
+        	                      Debug("parser-sygus") << "..." << datatypes[i].getName()
+        	                                            << " has builtin sort " << sorts[i]
+        	                                            << std::endl;
+        	                    }
+        	                    for( unsigned i=0; i<datatypes.size(); i++ ){
+        	                      Debug("parser-sygus") << "...make " << datatypes[i].getName()
+        	                                            << " with builtin sort " << sorts[i]
+        	                                            << std::endl;
+        	                      if( sorts[i].isNull() ){
+        	                        PARSER_STATE->parseError("Internal error : could not infer "
+        	                                                 "builtin sort for nested gterm.");
+        	                      }
+        	                      datatypes[i].setSygus( sorts[i], terms[0], allow_const[i], false );
+        	                      PARSER_STATE->mkSygusDatatype(
+        	                          datatypes[i], ops[i], cnames[i], cargs[i],
+        	                          unresolved_gterm_sym[i], sygus_to_builtin );
+        	                    }
+        	                    PARSER_STATE->setSygusStartIndex(fun, startIndex, datatypes, sorts,
+        	                                                     ops);
+        	                  }
+        	                  //only care about datatypes/sorts/ops past here
+        	                  PARSER_STATE->popScope();
+        	                  Debug("parser-sygus") << "--- Make " << datatypes.size()
+        	                                        << " mutual datatypes..." << std::endl;
+        	                  for( unsigned i=0; i<datatypes.size(); i++ ){
+        	                    Debug("parser-sygus") << "  " << i << " : " << datatypes[i].getName()
+        	                                          << std::endl;
+        	                  }
+        	                  std::vector<DatatypeType> datatypeTypes =
+        	                      PARSER_STATE->mkMutualDatatypeTypes(datatypes);
+        	                  seq->addCommand(new DatatypeDeclarationCommand(datatypeTypes));
+        	                  std::map<DatatypeType, Expr> evals;
+        	                  if( sorts[0]!=range ){
+        	                    PARSER_STATE->parseError(std::string("Bad return type in grammar for "
+        	                                                         "SyGuS function ") + fun);
+        	                  }
+        	                  // make all the evals first, since they are mutually referential
+        	                  for(size_t i = 0; i < datatypeTypes.size(); ++i) {
+        	                    DatatypeType dtt = datatypeTypes[i];
+        	                    const Datatype& dt = dtt.getDatatype();
+        	                    name = "eval_" + dt.getName();
+        	                    PARSER_STATE->checkDeclaration(name, CHECK_UNDECLARED, SYM_VARIABLE);
+        	                    std::vector<Type> evalType;
+        	                    evalType.push_back(dtt);
+        	                    if( !terms[0].isNull() ){
+        	                      for(size_t j = 0; j < terms[0].getNumChildren(); ++j) {
+        	                        evalType.push_back(terms[0][j].getType());
+        	                      }
+        	                    }
+        	                    evalType.push_back(sorts[i]);
+        	                    const FunctionType eval_func_type =
+        	                        EXPR_MANAGER->mkFunctionType(evalType);
+        	                    Expr eval = PARSER_STATE->mkVar(name, eval_func_type);
+        	                    Debug("parser-sygus") << "Make eval " << eval << " for " << dt.getName()
+        	                                          << std::endl;
+        	                    evals.insert(std::make_pair(dtt, eval));
+        	                    if(i == 0) {
+        	                      PARSER_STATE->addSygusFun(fun, eval);
+        	                    }
+        	                  }
+        	                  // now go through and settle everything
+        	                  for(size_t i = 0; i < datatypeTypes.size(); ++i) {
+        	                    DatatypeType dtt = datatypeTypes[i];
+        	                    const Datatype& dt = dtt.getDatatype();
+        	                    Expr eval = evals[dtt];
+        	                    Debug("parser-sygus") << "Sygus : process grammar : " << dt
+        	                                          << std::endl;
+        	                    for(size_t j = 0; j < dt.getNumConstructors(); ++j) {
+        	                      Expr assertion = PARSER_STATE->getSygusAssertion(
+        	                          datatypeTypes, ops, evals, terms, eval, dt, i, j );
+        	                      seq->addCommand(new AssertCommand(assertion));
+        	                    }
+        	                  }
+        	                  cmd->reset(seq.release());
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:769:5: CONSTRAINT_TOK term[expr, expr2]
+        	    {
+        	         MATCHT(CONSTRAINT_TOK, &FOLLOW_CONSTRAINT_TOK_in_sygusCommand1266);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusCommandEx;
+        	        }
+
+
+        	        {
+        	             
+        	                  PARSER_STATE->checkThatLogicIsSet();
+        	                  Debug("parser-sygus") << "Sygus : define sygus funs..." << std::endl;
+        	                  PARSER_STATE->defineSygusFuns(); 
+        	                  Debug("parser-sygus") << "Sygus : read constraint..." << std::endl;
+        	                
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_sygusCommand1274);
+        	        term(ctx, expr, expr2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusCommandEx;
+        	        }
+
+
+        	        {
+        	             Debug("parser-sygus") << "...read constraint " << expr << std::endl;
+        	                  PARSER_STATE->addSygusConstraint(expr);
+        	                  cmd->reset(new EmptyCommand());
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:780:5: INV_CONSTRAINT_TOK ( symbol[name,CHECK_NONE,SYM_VARIABLE] )+
+        	    {
+        	         MATCHT(INV_CONSTRAINT_TOK, &FOLLOW_INV_CONSTRAINT_TOK_in_sygusCommand1287);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusCommandEx;
+        	        }
+
+
+        	        {
+        	              
+        	                  PARSER_STATE->checkThatLogicIsSet();
+        	                  Debug("parser-sygus") << "Sygus : define sygus funs..." << std::endl;
+        	                  PARSER_STATE->defineSygusFuns(); 
+        	                  Debug("parser-sygus") << "Sygus : read inv-constraint..." << std::endl;
+        	                
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:786:5: ( symbol[name,CHECK_NONE,SYM_VARIABLE] )+
+        	        {
+        	            int cnt14=0;
+
+        	            for (;;)
+        	            {
+        	                int alt14=2;
+        	        	switch ( LA(1) )
+        	        	{
+        	        	case CHECK_SYNTH_TOK:
+        	        	case CONSTRAINT_TOK:
+        	        	case DECLARE_PRIMED_VAR_TOK:
+        	        	case DECLARE_VAR_TOK:
+        	        	case INV_CONSTRAINT_TOK:
+        	        	case QUOTED_SYMBOL:
+        	        	case SET_OPTIONS_TOK:
+        	        	case SIMPLE_SYMBOL:
+        	        	case SYNTH_FUN_TOK:
+        	        	case SYNTH_INV_TOK:
+        	        	case UNTERMINATED_QUOTED_SYMBOL:
+        	        	case 147:
+        	        		{
+        	        			alt14=1;
+        	        		}
+        	        	    break;
+
+        	        	}
+
+        	        	switch (alt14)
+        	        	{
+        	        	    case 1:
+        	        	        // ../../../../../../src/parser/smt2/Smt2.g:786:7: symbol[name,CHECK_NONE,SYM_VARIABLE]
+        	        	        {
+        	        	            FOLLOWPUSH(FOLLOW_symbol_in_sygusCommand1297);
+        	        	            symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto rulesygusCommandEx;
+        	        	            }
+
+
+        	        	            {
+        	        	                 
+        	        	                        if( !terms.empty() ){
+        	        	                          if( !PARSER_STATE->isDefinedFunction(name) ){
+        	        	                            std::stringstream ss;
+        	        	                            ss << "Function " << name << " in inv-constraint is not defined.";
+        	        	                            PARSER_STATE->parseError(ss.str());
+        	        	                          }
+        	        	                        }
+        	        	                        terms.push_back( PARSER_STATE->getVariable(name) );
+        	        	                      
+        	        	            }
+
+
+        	        	        }
+        	        	        break;
+
+        	        	    default:
+
+        	        		if ( cnt14 >= 1 )
+        	        		{
+        	        		    goto loop14;
+        	        		}
+        	        		/* mismatchedSetEx()
+        	        		 */
+        	        		CONSTRUCTEX();
+        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        		goto rulesygusCommandEx;
+        	        	}
+        	        	cnt14++;
+        	            }
+        	            loop14: ;	/* Jump to here if this rule does not match */
+        	        }
+
+        	        {
+
+        	                  if( terms.size()!=4 ){
+        	                    PARSER_STATE->parseError("Bad syntax for inv-constraint: expected 4 "
+        	                                             "arguments.");
+        	                  }
+        	                  //get primed variables
+        	                  std::vector< Expr > primed[2];
+        	                  std::vector< Expr > all;
+        	                  for( unsigned i=0; i<2; i++ ){
+        	                    PARSER_STATE->getSygusPrimedVars( primed[i], i==1 );
+        	                    all.insert( all.end(), primed[i].begin(), primed[i].end() );
+        	                  }
+        	                  //make relevant terms
+        	                  for( unsigned i=0; i<4; i++ ){
+        	                    Debug("parser-sygus") << "Make inv-constraint term #" << i << "..."
+        	                                          << std::endl;
+        	                    Expr op = terms[i];
+        	                    std::vector< Expr > children;
+        	                    children.push_back( op );
+        	                    if( i==2 ){
+        	                      children.insert( children.end(), all.begin(), all.end() );
+        	                    }else{
+        	                      children.insert( children.end(), primed[0].begin(), primed[0].end() );
+        	                    }
+        	                    terms[i] = EXPR_MANAGER->mkExpr(kind::APPLY,children);
+        	                    if( i==0 ){
+        	                      std::vector< Expr > children2;
+        	                      children2.push_back( op );
+        	                      children2.insert(children2.end(), primed[1].begin(),
+        	                                       primed[1].end());
+        	                      terms.push_back( EXPR_MANAGER->mkExpr(kind::APPLY,children2) );
+        	                    }
+        	                  }
+        	                  //make constraints
+        	                  std::vector< Expr > conj;
+        	                  conj.push_back( EXPR_MANAGER->mkExpr(kind::IMPLIES, terms[1],
+        	                                                       terms[0] ) );
+        	                  const Expr term0_and_2 = EXPR_MANAGER->mkExpr(kind::AND, terms[0],
+        	                                                                terms[2] );
+        	                  conj.push_back( EXPR_MANAGER->mkExpr(kind::IMPLIES, term0_and_2,
+        	                                                       terms[4] ) );
+        	                  conj.push_back( EXPR_MANAGER->mkExpr(kind::IMPLIES, terms[0], terms[3]) );
+        	                  Expr ic = EXPR_MANAGER->mkExpr( kind::AND, conj );
+        	                  Debug("parser-sygus") << "...read invariant constraint " << ic
+        	                                        << std::endl;
+        	                  PARSER_STATE->addSygusConstraint(ic);
+        	                  cmd->reset(new EmptyCommand());
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:845:5: CHECK_SYNTH_TOK
+        	    {
+        	         MATCHT(CHECK_SYNTH_TOK, &FOLLOW_CHECK_SYNTH_TOK_in_sygusCommand1321);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusCommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); PARSER_STATE->defineSygusFuns(); 
+        	        }
+
+
+        	        {
+        	             Expr sygusVar = EXPR_MANAGER->mkVar("sygus", EXPR_MANAGER->booleanType());
+        	                  Expr inst_attr =EXPR_MANAGER->mkExpr(kind::INST_ATTRIBUTE, sygusVar);
+        	                  Expr sygusAttr = EXPR_MANAGER->mkExpr(kind::INST_PATTERN_LIST, inst_attr);
+        	                  std::vector<Expr> bodyv;
+        	                  Debug("parser-sygus") << "Sygus : Constructing sygus constraint..."
+        	                                        << std::endl;
+        	                  Expr body = EXPR_MANAGER->mkExpr(kind::NOT,
+        	                                                   PARSER_STATE->getSygusConstraints());
+        	                  Debug("parser-sygus") << "...constructed sygus constraint " << body
+        	                                        << std::endl;      
+        	                  if( !PARSER_STATE->getSygusVars().empty() ){
+        	                    Expr boundVars = EXPR_MANAGER->mkExpr(kind::BOUND_VAR_LIST,
+        	                                                          PARSER_STATE->getSygusVars());
+        	                    body = EXPR_MANAGER->mkExpr(kind::EXISTS, boundVars, body);
+        	                    Debug("parser-sygus") << "...constructed exists " << body << std::endl;
+        	                  }
+        	                  if( !PARSER_STATE->getSygusFunSymbols().empty() ){
+        	                    Expr boundVars = EXPR_MANAGER->mkExpr(
+        	                        kind::BOUND_VAR_LIST, PARSER_STATE->getSygusFunSymbols());
+        	                    body = EXPR_MANAGER->mkExpr(kind::FORALL, boundVars, body, sygusAttr);
+        	                  }
+        	                  Debug("parser-sygus") << "...constructed forall " << body << std::endl;   
+        	                  Command* c = new SetUserAttributeCommand("sygus", sygusVar);
+        	                  c->setMuted(true);
+        	                  PARSER_STATE->preemptCommand(c);
+        	                  cmd->reset(new CheckSynthCommand(body));
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:874:5: command[cmd]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_command_in_sygusCommand1339);
+        	        command(ctx, cmd);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusCommandEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesygusCommandEx; /* Prevent compiler warnings */
+    rulesygusCommandEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end sygusCommand */
+
+/**
+ * $ANTLR start sygusGTerm
+ * ../../../../../../src/parser/smt2/Smt2.g:891:1: sygusGTerm[CVC4::SygusGTerm& sgt, std::string& fun] : ( LPAREN_TOK ( builtinOp[k] | LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK )+ RPAREN_TOK | SYGUS_CONSTANT_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_LOCAL_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_INPUT_VARIABLE_TOK sortSymbol[ [...]
+ */
+static void
+sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
+{
+
+      std::string name, name2;
+      bool readEnum = false;
+      Kind k;
+      Type t;
+      CVC4::DatatypeConstructor* ctor = NULL;
+      std::string sname;
+      std::vector< Expr > let_vars;
+      bool readingLet = false;
+      std::string s;
+
+    pANTLR3_COMMON_TOKEN    INTEGER_LITERAL4;
+    pANTLR3_COMMON_TOKEN    HEX_LITERAL5;
+    pANTLR3_COMMON_TOKEN    BINARY_LITERAL6;
+
+    /* Initialize rule variables
+     */
+
+    INTEGER_LITERAL4       = NULL;
+    HEX_LITERAL5       = NULL;
+    BINARY_LITERAL6       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/smt2/Smt2.g:903:3: ( LPAREN_TOK ( builtinOp[k] | LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK )+ RPAREN_TOK | SYGUS_CONSTANT_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_LOCAL_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_INPUT_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | symbol[name,CHECK_NON [...]
+
+            ANTLR3_UINT32 alt20;
+
+            alt20=6;
+
+            switch ( LA(1) )
+            {
+            case LPAREN_TOK:
+            	{
+            		alt20=1;
+            	}
+                break;
+            case INTEGER_LITERAL:
+            	{
+            		alt20=2;
+            	}
+                break;
+            case HEX_LITERAL:
+            	{
+            		alt20=3;
+            	}
+                break;
+            case BINARY_LITERAL:
+            	{
+            		alt20=4;
+            	}
+                break;
+            case STRING_LITERAL_2_0:
+            case STRING_LITERAL_2_5:
+            	{
+            		alt20=5;
+            	}
+                break;
+            case CHECK_SYNTH_TOK:
+            case CONSTRAINT_TOK:
+            case DECLARE_PRIMED_VAR_TOK:
+            case DECLARE_VAR_TOK:
+            case INV_CONSTRAINT_TOK:
+            case QUOTED_SYMBOL:
+            case SET_OPTIONS_TOK:
+            case SIMPLE_SYMBOL:
+            case SYNTH_FUN_TOK:
+            case SYNTH_INV_TOK:
+            case UNTERMINATED_QUOTED_SYMBOL:
+            case 147:
+            	{
+            		alt20=6;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 20;
+                EXCEPTION->state        = 0;
+
+
+                goto rulesygusGTermEx;
+
+            }
+
+            switch (alt20)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:903:5: LPAREN_TOK ( builtinOp[k] | LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK )+ RPAREN_TOK | SYGUS_CONSTANT_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_LOCAL_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_INPUT_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | symbol[name,CHECK_NONE, [...]
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sygusGTerm1380);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusGTermEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:905:5: ( builtinOp[k] | LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK )+ RPAREN_TOK | SYGUS_CONSTANT_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_LOCAL_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_INPUT_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | symbol[name,CHECK_NONE,SYM_VAR [...]
+        	        {
+        	            int alt17=7;
+        	            switch ( LA(1) )
+        	            {
+        	            case AND_TOK:
+        	            case BV2NAT_TOK:
+        	            case DISTINCT_TOK:
+        	            case DIV_TOK:
+        	            case DTSIZE_TOK:
+        	            case EQUAL_TOK:
+        	            case FMFCARDVAL_TOK:
+        	            case FMFCARD_TOK:
+        	            case GREATER_THAN_EQUAL_TOK:
+        	            case GREATER_THAN_TOK:
+        	            case IMPLIES_TOK:
+        	            case INST_CLOSURE_TOK:
+        	            case ITE_TOK:
+        	            case LESS_THAN_EQUAL_TOK:
+        	            case LESS_THAN_TOK:
+        	            case MINUS_TOK:
+        	            case NOT_TOK:
+        	            case OR_TOK:
+        	            case PLUS_TOK:
+        	            case STAR_TOK:
+        	            case XOR_TOK:
+        	            	{
+        	            		alt17=1;
+        	            	}
+        	                break;
+        	            case LET_TOK:
+        	            	{
+        	            		alt17=2;
+        	            	}
+        	                break;
+        	            case SYGUS_CONSTANT_TOK:
+        	            	{
+        	            		alt17=3;
+        	            	}
+        	                break;
+        	            case SYGUS_VARIABLE_TOK:
+        	            	{
+        	            		alt17=4;
+        	            	}
+        	                break;
+        	            case SYGUS_LOCAL_VARIABLE_TOK:
+        	            	{
+        	            		alt17=5;
+        	            	}
+        	                break;
+        	            case SYGUS_INPUT_VARIABLE_TOK:
+        	            	{
+        	            		alt17=6;
+        	            	}
+        	                break;
+        	            case CHECK_SYNTH_TOK:
+        	            case CONSTRAINT_TOK:
+        	            case DECLARE_PRIMED_VAR_TOK:
+        	            case DECLARE_VAR_TOK:
+        	            case INV_CONSTRAINT_TOK:
+        	            case QUOTED_SYMBOL:
+        	            case SET_OPTIONS_TOK:
+        	            case SIMPLE_SYMBOL:
+        	            case SYNTH_FUN_TOK:
+        	            case SYNTH_INV_TOK:
+        	            case UNTERMINATED_QUOTED_SYMBOL:
+        	            case 147:
+        	            	{
+        	            		alt17=7;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 17;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulesygusGTermEx;
+
+        	            }
+
+        	            switch (alt17)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:905:7: builtinOp[k]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_builtinOp_in_sygusGTerm1393);
+        	        	        builtinOp(ctx, k);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusGTermEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             
+        	        	                    Debug("parser-sygus") << "Sygus grammar " << fun << " : builtin op : "
+        	        	                                          << name << std::endl;
+        	        	                    // Since we enforce satisfaction completeness, immediately convert to
+        	        	                    // total version.
+        	        	                    if( k==CVC4::kind::BITVECTOR_UDIV ){
+        	        	                      k = CVC4::kind::BITVECTOR_UDIV_TOTAL;
+        	        	                    }else if( k==CVC4::kind::BITVECTOR_UREM ){
+        	        	                      k = CVC4::kind::BITVECTOR_UREM_TOTAL;
+        	        	                    }
+        	        	                    sgt.d_name = kind::kindToString(k);
+        	        	                    sgt.d_gterm_type = SygusGTerm::gterm_op;
+        	        	                    sgt.d_expr = EXPR_MANAGER->operatorOf(k);
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:919:8: LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK )+ RPAREN_TOK
+        	        	    {
+        	        	         MATCHT(LET_TOK, &FOLLOW_LET_TOK_in_sygusGTerm1404);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusGTermEx;
+        	        	        }
+
+
+        	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sygusGTerm1406);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusGTermEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             
+        	        	                     sgt.d_name = std::string("let");
+        	        	                     sgt.d_gterm_type = SygusGTerm::gterm_let;
+        	        	                     PARSER_STATE->pushScope(true);
+        	        	                     readingLet = true;
+        	        	                   
+        	        	        }
+
+
+        	        	        // ../../../../../../src/parser/smt2/Smt2.g:925:8: ( LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK )+
+        	        	        {
+        	        	            int cnt16=0;
+
+        	        	            for (;;)
+        	        	            {
+        	        	                int alt16=2;
+        	        	        	switch ( LA(1) )
+        	        	        	{
+        	        	        	case LPAREN_TOK:
+        	        	        		{
+        	        	        			alt16=1;
+        	        	        		}
+        	        	        	    break;
+
+        	        	        	}
+
+        	        	        	switch (alt16)
+        	        	        	{
+        	        	        	    case 1:
+        	        	        	        // ../../../../../../src/parser/smt2/Smt2.g:925:10: LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK
+        	        	        	        {
+        	        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sygusGTerm1419);
+        	        	        	            if  (HASEXCEPTION())
+        	        	        	            {
+        	        	        	                goto rulesygusGTermEx;
+        	        	        	            }
+
+
+        	        	        	            FOLLOWPUSH(FOLLOW_symbol_in_sygusGTerm1430);
+        	        	        	            symbol(ctx, sname, CHECK_NONE, SYM_VARIABLE);
+
+        	        	        	            FOLLOWPOP();
+        	        	        	            if  (HASEXCEPTION())
+        	        	        	            {
+        	        	        	                goto rulesygusGTermEx;
+        	        	        	            }
+
+
+        	        	        	            FOLLOWPUSH(FOLLOW_sortSymbol_in_sygusGTerm1442);
+        	        	        	            sortSymbol(ctx, t, CHECK_DECLARED);
+
+        	        	        	            FOLLOWPOP();
+        	        	        	            if  (HASEXCEPTION())
+        	        	        	            {
+        	        	        	                goto rulesygusGTermEx;
+        	        	        	            }
+
+
+        	        	        	            {
+        	        	        	                 
+        	        	        	                          Expr v = PARSER_STATE->mkBoundVar(sname,t); 
+        	        	        	                          sgt.d_let_vars.push_back( v ); 
+        	        	        	                          sgt.addChild();
+        	        	        	                        
+        	        	        	            }
+
+
+        	        	        	            FOLLOWPUSH(FOLLOW_sygusGTerm_in_sygusGTerm1456);
+        	        	        	            sygusGTerm(ctx, sgt.d_children.back(), fun);
+
+        	        	        	            FOLLOWPOP();
+        	        	        	            if  (HASEXCEPTION())
+        	        	        	            {
+        	        	        	                goto rulesygusGTermEx;
+        	        	        	            }
+
+
+        	        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sygusGTerm1467);
+        	        	        	            if  (HASEXCEPTION())
+        	        	        	            {
+        	        	        	                goto rulesygusGTermEx;
+        	        	        	            }
+
+
+        	        	        	        }
+        	        	        	        break;
+
+        	        	        	    default:
+
+        	        	        		if ( cnt16 >= 1 )
+        	        	        		{
+        	        	        		    goto loop16;
+        	        	        		}
+        	        	        		/* mismatchedSetEx()
+        	        	        		 */
+        	        	        		CONSTRUCTEX();
+        	        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        	        		goto rulesygusGTermEx;
+        	        	        	}
+        	        	        	cnt16++;
+        	        	            }
+        	        	            loop16: ;	/* Jump to here if this rule does not match */
+        	        	        }
+
+        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sygusGTerm1472);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusGTermEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 3:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:934:7: SYGUS_CONSTANT_TOK sortSymbol[t,CHECK_DECLARED]
+        	        	    {
+        	        	         MATCHT(SYGUS_CONSTANT_TOK, &FOLLOW_SYGUS_CONSTANT_TOK_in_sygusGTerm1480);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusGTermEx;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sygusGTerm1482);
+        	        	        sortSymbol(ctx, t, CHECK_DECLARED);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusGTermEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             sgt.d_gterm_type = SygusGTerm::gterm_constant;
+        	        	                    sgt.d_type = t;
+        	        	                    Debug("parser-sygus") << "Sygus grammar constant." << std::endl;
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 4:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:939:7: SYGUS_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED]
+        	        	    {
+        	        	         MATCHT(SYGUS_VARIABLE_TOK, &FOLLOW_SYGUS_VARIABLE_TOK_in_sygusGTerm1500);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusGTermEx;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sygusGTerm1502);
+        	        	        sortSymbol(ctx, t, CHECK_DECLARED);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusGTermEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             sgt.d_gterm_type = SygusGTerm::gterm_variable;
+        	        	                    sgt.d_type = t;
+        	        	                    Debug("parser-sygus") << "Sygus grammar variable." << std::endl;
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 5:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:944:7: SYGUS_LOCAL_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED]
+        	        	    {
+        	        	         MATCHT(SYGUS_LOCAL_VARIABLE_TOK, &FOLLOW_SYGUS_LOCAL_VARIABLE_TOK_in_sygusGTerm1519);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusGTermEx;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sygusGTerm1521);
+        	        	        sortSymbol(ctx, t, CHECK_DECLARED);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusGTermEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             sgt.d_gterm_type = SygusGTerm::gterm_local_variable;
+        	        	                    sgt.d_type = t;
+        	        	                    Debug("parser-sygus") << "Sygus grammar local variable...ignore."
+        	        	                                          << std::endl;
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 6:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:950:7: SYGUS_INPUT_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED]
+        	        	    {
+        	        	         MATCHT(SYGUS_INPUT_VARIABLE_TOK, &FOLLOW_SYGUS_INPUT_VARIABLE_TOK_in_sygusGTerm1538);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusGTermEx;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sygusGTerm1540);
+        	        	        sortSymbol(ctx, t, CHECK_DECLARED);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusGTermEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             sgt.d_gterm_type = SygusGTerm::gterm_input_variable;
+        	        	                    sgt.d_type = t;
+        	        	                    Debug("parser-sygus") << "Sygus grammar (input) variable."
+        	        	                                          << std::endl;
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 7:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:956:7: symbol[name,CHECK_NONE,SYM_VARIABLE]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_symbol_in_sygusGTerm1557);
+        	        	        symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusGTermEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             
+        	        	                    bool isBuiltinOperator = PARSER_STATE->isOperatorEnabled(name);
+        	        	                    if(isBuiltinOperator) {
+        	        	                      Debug("parser-sygus") << "Sygus grammar " << fun << " : builtin op : "
+        	        	                                            << name << std::endl;
+        	        	                      k = PARSER_STATE->getOperatorKind(name);
+        	        	                      if( k==CVC4::kind::BITVECTOR_UDIV ){
+        	        	                        k = CVC4::kind::BITVECTOR_UDIV_TOTAL;
+        	        	                      }else if( k==CVC4::kind::BITVECTOR_UREM ){
+        	        	                        k = CVC4::kind::BITVECTOR_UREM_TOTAL;
+        	        	                      }
+        	        	                      sgt.d_name = kind::kindToString(k);
+        	        	                      sgt.d_gterm_type = SygusGTerm::gterm_op;
+        	        	                      sgt.d_expr = EXPR_MANAGER->operatorOf(k);
+        	        	                    }else{
+        	        	                      // what is this sygus term trying to accomplish here, if the
+        	        	                      // symbol isn't yet declared?!  probably the following line will
+        	        	                      // fail, but we need an operator to continue here..
+        	        	                      Debug("parser-sygus")
+        	        	                          << "Sygus grammar " << fun << " : op (declare="
+        	        	                          << PARSER_STATE->isDeclared(name) << ", define="
+        	        	                          << PARSER_STATE->isDefinedFunction(name) << ") : " << name
+        	        	                          << std::endl;
+        	        	                      if(!PARSER_STATE->isDeclared(name) &&
+        	        	                         !PARSER_STATE->isDefinedFunction(name) ){
+        	        	                        PARSER_STATE->parseError("Functions in sygus grammars must be "
+        	        	                                                 "defined.");
+        	        	                      }
+        	        	                      sgt.d_name = name;
+        	        	                      sgt.d_gterm_type = SygusGTerm::gterm_op;
+        	        	                      sgt.d_expr = PARSER_STATE->getVariable(name) ;
+        	        	                    }
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        {
+        	             Debug("parser-sygus") << "Read arguments under " << sgt.d_name
+        	                                        << std::endl;
+        	                  sgt.addChild();
+        	                
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:995:5: ( sygusGTerm[sgt.d_children.back(), fun] )*
+
+        	        for (;;)
+        	        {
+        	            int alt18=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case BINARY_LITERAL:
+        	            case CHECK_SYNTH_TOK:
+        	            case CONSTRAINT_TOK:
+        	            case DECLARE_PRIMED_VAR_TOK:
+        	            case DECLARE_VAR_TOK:
+        	            case HEX_LITERAL:
+        	            case INTEGER_LITERAL:
+        	            case INV_CONSTRAINT_TOK:
+        	            case LPAREN_TOK:
+        	            case QUOTED_SYMBOL:
+        	            case SET_OPTIONS_TOK:
+        	            case SIMPLE_SYMBOL:
+        	            case STRING_LITERAL_2_0:
+        	            case STRING_LITERAL_2_5:
+        	            case SYNTH_FUN_TOK:
+        	            case SYNTH_INV_TOK:
+        	            case UNTERMINATED_QUOTED_SYMBOL:
+        	            case 147:
+        	            	{
+        	            		alt18=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt18)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:995:7: sygusGTerm[sgt.d_children.back(), fun]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_sygusGTerm_in_sygusGTerm1585);
+        	        	        sygusGTerm(ctx, sgt.d_children.back(), fun);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusGTermEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             Debug("parser-sygus") << "Finished read argument #"
+        	        	                                          << sgt.d_children.size() << "..." << std::endl;
+        	        	                    sgt.addChild();
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop18;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop18: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sygusGTerm1608);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusGTermEx;
+        	        }
+
+
+        	        {
+
+        	                  //pop last child index 
+        	                  sgt.d_children.pop_back();   
+        	                  if( readingLet ){
+        	                    PARSER_STATE->popScope();
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1008:5: INTEGER_LITERAL
+        	    {
+        	        INTEGER_LITERAL4 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_sygusGTerm1616);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusGTermEx;
+        	        }
+
+
+        	        {
+        	             Debug("parser-sygus") << "Sygus grammar " << fun << " : integer literal "
+        	                                        << AntlrInput::tokenText(INTEGER_LITERAL4)
+        	                                        << std::endl;
+        	                  sgt.d_expr = MK_CONST(Rational(AntlrInput::tokenText(INTEGER_LITERAL4)));
+        	                  sgt.d_name = AntlrInput::tokenText(INTEGER_LITERAL4);
+        	                  sgt.d_gterm_type = SygusGTerm::gterm_op;
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1016:5: HEX_LITERAL
+        	    {
+        	        HEX_LITERAL5 = (pANTLR3_COMMON_TOKEN) MATCHT(HEX_LITERAL, &FOLLOW_HEX_LITERAL_in_sygusGTerm1628);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusGTermEx;
+        	        }
+
+
+        	        {
+        	             Debug("parser-sygus") << "Sygus grammar " << fun << " : hex literal "
+        	                                        << AntlrInput::tokenText(HEX_LITERAL5) << std::endl;
+        	                  assert( AntlrInput::tokenText(HEX_LITERAL5).find("#x") == 0 );
+        	                  std::string hexString = AntlrInput::tokenTextSubstr(HEX_LITERAL5, 2);
+        	                  sgt.d_expr = MK_CONST( BitVector(hexString, 16) );
+        	                  sgt.d_name = AntlrInput::tokenText(HEX_LITERAL5);
+        	                  sgt.d_gterm_type = SygusGTerm::gterm_op;
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1025:5: BINARY_LITERAL
+        	    {
+        	        BINARY_LITERAL6 = (pANTLR3_COMMON_TOKEN) MATCHT(BINARY_LITERAL, &FOLLOW_BINARY_LITERAL_in_sygusGTerm1640);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusGTermEx;
+        	        }
+
+
+        	        {
+        	             Debug("parser-sygus") << "Sygus grammar " << fun << " : binary literal "
+        	                                        << AntlrInput::tokenText(BINARY_LITERAL6)
+        	                                        << std::endl;
+        	                  assert( AntlrInput::tokenText(BINARY_LITERAL6).find("#b") == 0 );
+        	                  std::string binString = AntlrInput::tokenTextSubstr(BINARY_LITERAL6, 2);
+        	                  sgt.d_expr = MK_CONST( BitVector(binString, 2) );
+        	                  sgt.d_name = AntlrInput::tokenText(BINARY_LITERAL6);
+        	                  sgt.d_gterm_type = SygusGTerm::gterm_op;
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1035:5: str[s,false]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_str_in_sygusGTerm1652);
+        	        str(ctx, s, false);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusGTermEx;
+        	        }
+
+
+        	        {
+        	             Debug("parser-sygus") << "Sygus grammar " << fun << " : string literal \""
+        	                                        << s << "\"" << std::endl;
+        	                  sgt.d_expr = MK_CONST( ::CVC4::String(s) );
+        	                  sgt.d_name = s;
+        	                  sgt.d_gterm_type = SygusGTerm::gterm_op;
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1042:5: symbol[name,CHECK_NONE,SYM_VARIABLE] ( SYGUS_ENUM_CONS_TOK symbol[name2,CHECK_NONE,SYM_VARIABLE] )?
+        	    {
+        	        FOLLOWPUSH(FOLLOW_symbol_in_sygusGTerm1665);
+        	        symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesygusGTermEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:1043:5: ( SYGUS_ENUM_CONS_TOK symbol[name2,CHECK_NONE,SYM_VARIABLE] )?
+        	        {
+        	            int alt19=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case SYGUS_ENUM_CONS_TOK:
+        	                	{
+        	                		alt19=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt19)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1043:7: SYGUS_ENUM_CONS_TOK symbol[name2,CHECK_NONE,SYM_VARIABLE]
+        	        	    {
+        	        	         MATCHT(SYGUS_ENUM_CONS_TOK, &FOLLOW_SYGUS_ENUM_CONS_TOK_in_sygusGTerm1674);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusGTermEx;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_symbol_in_sygusGTerm1676);
+        	        	        symbol(ctx, name2, CHECK_NONE, SYM_VARIABLE);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesygusGTermEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             readEnum = true; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        {
+        	             if( readEnum ){
+        	                    name = name + "__Enum__" + name2;
+        	                    Debug("parser-sygus") << "Sygus grammar " << fun << " : Enum constant "
+        	                                          << name << std::endl;
+        	                    Expr c = PARSER_STATE->getVariable(name);
+        	                    sgt.d_expr = MK_EXPR(kind::APPLY_CONSTRUCTOR,c);
+        	                    sgt.d_name = name;
+        	                    sgt.d_gterm_type = SygusGTerm::gterm_op;
+        	                  }else{
+        	                    if( name[0] == '-' ){  //hack for unary minus
+        	                      Debug("parser-sygus") << "Sygus grammar " << fun
+        	                                            << " : unary minus integer literal " << name
+        	                                            << std::endl;
+        	                      sgt.d_expr = MK_CONST(Rational(name));
+        	                      sgt.d_name = name;
+        	                      sgt.d_gterm_type = SygusGTerm::gterm_op;
+        	                    }else if( PARSER_STATE->isDeclared(name,SYM_VARIABLE) ){
+        	                      Debug("parser-sygus") << "Sygus grammar " << fun << " : symbol "
+        	                                            << name << std::endl;
+        	                      sgt.d_expr = PARSER_STATE->getVariable(name);
+        	                      sgt.d_name = name;
+        	                      sgt.d_gterm_type = SygusGTerm::gterm_op;
+        	                    }else{
+        	                      //prepend function name to base sorts when reading an operator
+        	                      std::stringstream ss;
+        	                      ss << fun << "_" << name;
+        	                      name = ss.str();
+        	                      if( PARSER_STATE->isDeclared(name, SYM_SORT) ){
+        	                        Debug("parser-sygus") << "Sygus grammar " << fun
+        	                                              << " : nested sort " << name << std::endl;
+        	                        sgt.d_type = PARSER_STATE->getSort(name);
+        	                        sgt.d_gterm_type = SygusGTerm::gterm_nested_sort;
+        	                      }else{
+        	                        Debug("parser-sygus") << "Sygus grammar " << fun
+        	                                              << " : unresolved symbol " << name
+        	                                              << std::endl;
+        	                        sgt.d_gterm_type = SygusGTerm::gterm_unresolved;
+        	                        sgt.d_name = name;
+        	                      }
+        	                    }
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesygusGTermEx; /* Prevent compiler warnings */
+    rulesygusGTermEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end sygusGTerm */
+
+/**
+ * $ANTLR start metaInfoInternal
+ * ../../../../../../src/parser/smt2/Smt2.g:1091:1: metaInfoInternal[CVC4::PtrCloser<CVC4::Command>* cmd] : KEYWORD symbolicExpr[sexpr] ;
+ */
+static void
+metaInfoInternal(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
+{
+
+      std::string name;
+      SExpr sexpr;
+
+    pANTLR3_COMMON_TOKEN    KEYWORD7;
+
+    /* Initialize rule variables
+     */
+
+    KEYWORD7       = NULL;
+
+    {
+        // ../../../../../../src/parser/smt2/Smt2.g:1096:3: ( KEYWORD symbolicExpr[sexpr] )
+        // ../../../../../../src/parser/smt2/Smt2.g:1096:5: KEYWORD symbolicExpr[sexpr]
+        {
+            KEYWORD7 = (pANTLR3_COMMON_TOKEN) MATCHT(KEYWORD, &FOLLOW_KEYWORD_in_metaInfoInternal1718);
+            if  (HASEXCEPTION())
+            {
+                goto rulemetaInfoInternalEx;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_symbolicExpr_in_metaInfoInternal1720);
+            symbolicExpr(ctx, sexpr);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulemetaInfoInternalEx;
+            }
+
+
+            {
+                 name = AntlrInput::tokenText(KEYWORD7);
+                      if(name == ":cvc4-logic" || name == ":cvc4_logic") {
+                        PARSER_STATE->setLogic(sexpr.getValue());
+                      } else if(name == ":smt-lib-version") {
+                        // if we don't recognize the revision name, just keep the current mode
+                        if( (sexpr.isRational() && sexpr.getRationalValue() == Rational(2)) ||
+                            sexpr.getValue() == "2" ||
+                            sexpr.getValue() == "2.0" ) {
+                          PARSER_STATE->setLanguage(language::input::LANG_SMTLIB_V2_0);
+                        } else if( (sexpr.isRational() &&
+                                    sexpr.getRationalValue() == Rational(5, 2)) ||
+                                  sexpr.getValue() == "2.5" ) {
+                          PARSER_STATE->setLanguage(language::input::LANG_SMTLIB_V2_5);
+                        }
+                      }
+                      PARSER_STATE->setInfo(name.c_str() + 1, sexpr);
+                      cmd->reset(new SetInfoCommand(name.c_str() + 1, sexpr));
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulemetaInfoInternalEx; /* Prevent compiler warnings */
+    rulemetaInfoInternalEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end metaInfoInternal */
+
+/**
+ * $ANTLR start setOptionInternal
+ * ../../../../../../src/parser/smt2/Smt2.g:1117:1: setOptionInternal[CVC4::PtrCloser<CVC4::Command>* cmd] : keyword[name] symbolicExpr[sexpr] ;
+ */
+static void
+setOptionInternal(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::string name;
+      SExpr sexpr;
+
+    {
+        // ../../../../../../src/parser/smt2/Smt2.g:1122:3: ( keyword[name] symbolicExpr[sexpr] )
+        // ../../../../../../src/parser/smt2/Smt2.g:1122:5: keyword[name] symbolicExpr[sexpr]
+        {
+            FOLLOWPUSH(FOLLOW_keyword_in_setOptionInternal1746);
+            keyword(ctx, name);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulesetOptionInternalEx;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_symbolicExpr_in_setOptionInternal1749);
+            symbolicExpr(ctx, sexpr);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulesetOptionInternalEx;
+            }
+
+
+            {
+                 PARSER_STATE->setOption(name.c_str() + 1, sexpr);
+                      cmd->reset(new SetOptionCommand(name.c_str() + 1, sexpr));
+                      // Ugly that this changes the state of the parser; but
+                      // global-declarations affects parsing, so we can't hold off
+                      // on this until some SmtEngine eventually (if ever) executes it.
+                      if(name == ":global-declarations") {
+                        PARSER_STATE->setGlobalDeclarations(sexpr.getValue() == "true");
+                      }
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesetOptionInternalEx; /* Prevent compiler warnings */
+    rulesetOptionInternalEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end setOptionInternal */
+
+/**
+ * $ANTLR start smt25Command
+ * ../../../../../../src/parser/smt2/Smt2.g:1134:1: smt25Command[CVC4::PtrCloser<CVC4::Command>* cmd] : ( META_INFO_TOK metaInfoInternal[cmd] | DECLARE_CONST_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | GET_MODEL_TOK | ECHO_TOK ( simpleSymbolicExpr[sexpr] |) | RESET_TOK | RESET_ASSERTIONS_TOK | DEFINE_FUN_REC_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] term[expr, expr2] | [...]
+ */
+static void
+smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
+{
+
+      std::string name;
+      std::string fname;
+      Expr expr, expr2;
+      std::vector<std::pair<std::string, Type> > sortedVarNames;
+      SExpr sexpr;
+      Type t;
+      Expr func_app;
+      std::vector<Expr> bvs;
+      std::vector< std::vector<std::pair<std::string, Type> > > sortedVarNamesList;
+      std::vector<Expr> funcs;
+      std::vector<Expr> func_defs;
+      Expr aexpr;
+      CVC4::PtrCloser<CVC4::CommandSequence> seq;
+
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/smt2/Smt2.g:1151:3: ( META_INFO_TOK metaInfoInternal[cmd] | DECLARE_CONST_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | GET_MODEL_TOK | ECHO_TOK ( simpleSymbolicExpr[sexpr] |) | RESET_TOK | RESET_ASSERTIONS_TOK | DEFINE_FUN_REC_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] term[expr, expr2] | DEFINE_FUNS_REC_TOK LPAREN_TOK ( LPARE [...]
+
+            ANTLR3_UINT32 alt24;
+
+            alt24=8;
+
+            switch ( LA(1) )
+            {
+            case META_INFO_TOK:
+            	{
+            		alt24=1;
+            	}
+                break;
+            case DECLARE_CONST_TOK:
+            	{
+            		alt24=2;
+            	}
+                break;
+            case GET_MODEL_TOK:
+            	{
+            		alt24=3;
+            	}
+                break;
+            case ECHO_TOK:
+            	{
+            		alt24=4;
+            	}
+                break;
+            case RESET_TOK:
+            	{
+            		alt24=5;
+            	}
+                break;
+            case RESET_ASSERTIONS_TOK:
+            	{
+            		alt24=6;
+            	}
+                break;
+            case DEFINE_FUN_REC_TOK:
+            	{
+            		alt24=7;
+            	}
+                break;
+            case DEFINE_FUNS_REC_TOK:
+            	{
+            		alt24=8;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 24;
+                EXCEPTION->state        = 0;
+
+
+                goto rulesmt25CommandEx;
+
+            }
+
+            switch (alt24)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1151:5: META_INFO_TOK metaInfoInternal[cmd]
+        	    {
+        	         MATCHT(META_INFO_TOK, &FOLLOW_META_INFO_TOK_in_smt25Command1781);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_metaInfoInternal_in_smt25Command1783);
+        	        metaInfoInternal(ctx, cmd);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1154:5: DECLARE_CONST_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED]
+        	    {
+        	         MATCHT(DECLARE_CONST_TOK, &FOLLOW_DECLARE_CONST_TOK_in_smt25Command1797);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_symbol_in_smt25Command1805);
+        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkUserSymbol(name); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_smt25Command1818);
+        	        sortSymbol(ctx, t, CHECK_DECLARED);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	        {
+        	             Expr c = PARSER_STATE->mkVar(name, t);
+        	                  cmd->reset(new DeclareFunctionCommand(name, c, t)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1162:5: GET_MODEL_TOK
+        	    {
+        	         MATCHT(GET_MODEL_TOK, &FOLLOW_GET_MODEL_TOK_in_smt25Command1838);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        {
+        	             cmd->reset(new GetModelCommand()); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1166:5: ECHO_TOK ( simpleSymbolicExpr[sexpr] |)
+        	    {
+        	         MATCHT(ECHO_TOK, &FOLLOW_ECHO_TOK_in_smt25Command1859);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:1167:5: ( simpleSymbolicExpr[sexpr] |)
+        	        {
+        	            int alt21=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case AND_TOK:
+        	            case ASSERT_TOK:
+        	            case BINARY_LITERAL:
+        	            case BV2NAT_TOK:
+        	            case CHECKSAT_TOK:
+        	            case CHECK_SYNTH_TOK:
+        	            case CONSTRAINT_TOK:
+        	            case DECIMAL_LITERAL:
+        	            case DECLARE_DATATYPES_TOK:
+        	            case DECLARE_FUN_TOK:
+        	            case DECLARE_PRIMED_VAR_TOK:
+        	            case DECLARE_SORT_TOK:
+        	            case DECLARE_VAR_TOK:
+        	            case DEFINE_FUNS_REC_TOK:
+        	            case DEFINE_FUN_REC_TOK:
+        	            case DEFINE_FUN_TOK:
+        	            case DEFINE_SORT_TOK:
+        	            case DISTINCT_TOK:
+        	            case DIV_TOK:
+        	            case DTSIZE_TOK:
+        	            case ECHO_TOK:
+        	            case EQUAL_TOK:
+        	            case EXIT_TOK:
+        	            case FMFCARDVAL_TOK:
+        	            case FMFCARD_TOK:
+        	            case GET_ASSERTIONS_TOK:
+        	            case GET_ASSIGNMENT_TOK:
+        	            case GET_INFO_TOK:
+        	            case GET_MODEL_TOK:
+        	            case GET_OPTION_TOK:
+        	            case GET_PROOF_TOK:
+        	            case GET_UNSAT_CORE_TOK:
+        	            case GET_VALUE_TOK:
+        	            case GREATER_THAN_EQUAL_TOK:
+        	            case GREATER_THAN_TOK:
+        	            case HEX_LITERAL:
+        	            case IMPLIES_TOK:
+        	            case INST_CLOSURE_TOK:
+        	            case INTEGER_LITERAL:
+        	            case INV_CONSTRAINT_TOK:
+        	            case ITE_TOK:
+        	            case KEYWORD:
+        	            case LESS_THAN_EQUAL_TOK:
+        	            case LESS_THAN_TOK:
+        	            case MINUS_TOK:
+        	            case NOT_TOK:
+        	            case OR_TOK:
+        	            case PLUS_TOK:
+        	            case POP_TOK:
+        	            case PROPAGATION_RULE_TOK:
+        	            case PUSH_TOK:
+        	            case QUOTED_SYMBOL:
+        	            case REDUCTION_RULE_TOK:
+        	            case RESET_ASSERTIONS_TOK:
+        	            case RESET_TOK:
+        	            case REWRITE_RULE_TOK:
+        	            case SET_INFO_TOK:
+        	            case SET_LOGIC_TOK:
+        	            case SET_OPTIONS_TOK:
+        	            case SET_OPTION_TOK:
+        	            case SIMPLE_SYMBOL:
+        	            case SIMPLIFY_TOK:
+        	            case STAR_TOK:
+        	            case STRING_LITERAL_2_0:
+        	            case STRING_LITERAL_2_5:
+        	            case SYNTH_FUN_TOK:
+        	            case SYNTH_INV_TOK:
+        	            case UNTERMINATED_QUOTED_SYMBOL:
+        	            case XOR_TOK:
+        	            case 147:
+        	            	{
+        	            		alt21=1;
+        	            	}
+        	                break;
+        	            case RPAREN_TOK:
+        	            	{
+        	            		alt21=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 21;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulesmt25CommandEx;
+
+        	            }
+
+        	            switch (alt21)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1167:7: simpleSymbolicExpr[sexpr]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExpr_in_smt25Command1867);
+        	        	        simpleSymbolicExpr(ctx, sexpr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesmt25CommandEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             cmd->reset(new EchoCommand(sexpr.toString())); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1169:7: 
+        	        	    {
+        	        	        {
+        	        	             cmd->reset(new EchoCommand()); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1174:5: RESET_TOK
+        	    {
+        	         MATCHT(RESET_TOK, &FOLLOW_RESET_TOK_in_smt25Command1903);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	        {
+        	             cmd->reset(new ResetCommand());
+        	                  PARSER_STATE->reset();
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1180:5: RESET_ASSERTIONS_TOK
+        	    {
+        	         MATCHT(RESET_ASSERTIONS_TOK, &FOLLOW_RESET_ASSERTIONS_TOK_in_smt25Command1921);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	        {
+        	             cmd->reset(new ResetAssertionsCommand());
+        	                  PARSER_STATE->resetAssertions();
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1184:5: DEFINE_FUN_REC_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] term[expr, expr2]
+        	    {
+        	         MATCHT(DEFINE_FUN_REC_TOK, &FOLLOW_DEFINE_FUN_REC_TOK_in_smt25Command1933);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet();
+        	                  seq.reset(new CVC4::CommandSequence());
+        	                
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_symbol_in_smt25Command1945);
+        	        symbol(ctx, fname, CHECK_UNDECLARED, SYM_VARIABLE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkUserSymbol(fname); 
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_smt25Command1958);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_sortedVarList_in_smt25Command1960);
+        	        sortedVarList(ctx, sortedVarNames);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_smt25Command1963);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_smt25Command1969);
+        	        sortSymbol(ctx, t, CHECK_DECLARED);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	        {
+        	             if( sortedVarNames.size() > 0 ) {
+        	                    std::vector<CVC4::Type> sorts;
+        	                    sorts.reserve(sortedVarNames.size());
+        	                    for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+        	                        sortedVarNames.begin(), iend = sortedVarNames.end(); i != iend;
+        	                        ++i) {
+        	                      sorts.push_back((*i).second);
+        	                    }
+        	                    t = EXPR_MANAGER->mkFunctionType(sorts, t);
+        	                  }
+        	                  Expr func = PARSER_STATE->mkVar(fname, t);
+        	                  seq->addCommand(new DeclareFunctionCommand(fname, func, t));
+        	                  if( sortedVarNames.empty() ){
+        	                    func_app = func;
+        	                  }else{
+        	                    std::vector< Expr > f_app;
+        	                    f_app.push_back( func );
+        	                    PARSER_STATE->pushScope(true);
+        	                    for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+        	                          sortedVarNames.begin(), iend = sortedVarNames.end(); i != iend;
+        	                        ++i) {
+        	                      Expr v = PARSER_STATE->mkBoundVar((*i).first, (*i).second);
+        	                      bvs.push_back( v );
+        	                      f_app.push_back( v );
+        	                    }
+        	                    func_app = MK_EXPR( kind::APPLY_UF, f_app );
+        	                  }
+        	                
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_smt25Command1982);
+        	        term(ctx, expr, expr2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->popScope(); 
+        	                  Expr as = MK_EXPR( kind::EQUAL, func_app, expr);
+        	                  if( !bvs.empty() ){
+        	                    std::string attr_name("fun-def");
+        	                    aexpr = MK_EXPR(kind::INST_ATTRIBUTE, func_app);
+        	                    aexpr = MK_EXPR(kind::INST_PATTERN_LIST, aexpr);
+        	                    //set the attribute to denote this is a function definition
+        	                    seq->addCommand( new SetUserAttributeCommand( attr_name, func_app ) );
+        	                    //assert it
+        	                    Expr boundVars = EXPR_MANAGER->mkExpr(kind::BOUND_VAR_LIST, bvs);
+        	                    as = EXPR_MANAGER->mkExpr(kind::FORALL, boundVars, as, aexpr);
+        	                  }
+        	                  seq->addCommand( new AssertCommand(as, false) );
+        	                  cmd->reset(seq.release());
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 8:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1236:5: DEFINE_FUNS_REC_TOK LPAREN_TOK ( LPAREN_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )+ RPAREN_TOK LPAREN_TOK ( term[expr,expr2] )+ RPAREN_TOK
+        	    {
+        	         MATCHT(DEFINE_FUNS_REC_TOK, &FOLLOW_DEFINE_FUNS_REC_TOK_in_smt25Command1995);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet();
+        	                  seq.reset(new CVC4::CommandSequence());
+        	                
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_smt25Command2007);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:1241:5: ( LPAREN_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )+
+        	        {
+        	            int cnt22=0;
+
+        	            for (;;)
+        	            {
+        	                int alt22=2;
+        	        	switch ( LA(1) )
+        	        	{
+        	        	case LPAREN_TOK:
+        	        		{
+        	        			alt22=1;
+        	        		}
+        	        	    break;
+
+        	        	}
+
+        	        	switch (alt22)
+        	        	{
+        	        	    case 1:
+        	        	        // ../../../../../../src/parser/smt2/Smt2.g:1241:7: LPAREN_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] RPAREN_TOK
+        	        	        {
+        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_smt25Command2015);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto rulesmt25CommandEx;
+        	        	            }
+
+
+        	        	            FOLLOWPUSH(FOLLOW_symbol_in_smt25Command2023);
+        	        	            symbol(ctx, fname, CHECK_UNDECLARED, SYM_VARIABLE);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto rulesmt25CommandEx;
+        	        	            }
+
+
+        	        	            {
+        	        	                 PARSER_STATE->checkUserSymbol(fname); 
+        	        	            }
+
+
+        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_smt25Command2040);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto rulesmt25CommandEx;
+        	        	            }
+
+
+        	        	            FOLLOWPUSH(FOLLOW_sortedVarList_in_smt25Command2042);
+        	        	            sortedVarList(ctx, sortedVarNames);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto rulesmt25CommandEx;
+        	        	            }
+
+
+        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_smt25Command2045);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto rulesmt25CommandEx;
+        	        	            }
+
+
+        	        	            FOLLOWPUSH(FOLLOW_sortSymbol_in_smt25Command2053);
+        	        	            sortSymbol(ctx, t, CHECK_DECLARED);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto rulesmt25CommandEx;
+        	        	            }
+
+
+        	        	            {
+        	        	                 sortedVarNamesList.push_back( sortedVarNames );
+        	        	                        if( sortedVarNamesList[0].size() > 0 ) {
+        	        	                          if( !sortedVarNames.empty() ){
+        	        	                            std::vector<CVC4::Type> sorts;
+        	        	                            for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator
+        	        	                                    i = sortedVarNames.begin(), iend = sortedVarNames.end();
+        	        	                                i != iend; ++i) {
+        	        	                              sorts.push_back((*i).second);
+        	        	                            }
+        	        	                            t = EXPR_MANAGER->mkFunctionType(sorts, t);
+        	        	                          }
+        	        	                        }
+        	        	                        sortedVarNames.clear();
+        	        	                        Expr func = PARSER_STATE->mkVar(fname, t);
+        	        	                        seq->addCommand(new DeclareFunctionCommand(fname, func, t));
+        	        	                        funcs.push_back( func );
+        	        	                      
+        	        	            }
+
+
+        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_smt25Command2070);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto rulesmt25CommandEx;
+        	        	            }
+
+
+        	        	        }
+        	        	        break;
+
+        	        	    default:
+
+        	        		if ( cnt22 >= 1 )
+        	        		{
+        	        		    goto loop22;
+        	        		}
+        	        		/* mismatchedSetEx()
+        	        		 */
+        	        		CONSTRUCTEX();
+        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        		goto rulesmt25CommandEx;
+        	        	}
+        	        	cnt22++;
+        	            }
+        	            loop22: ;	/* Jump to here if this rule does not match */
+        	        }
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_smt25Command2083);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_smt25Command2089);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	        {
+        	             
+        	                  //set up the first scope 
+        	                  if( sortedVarNamesList.empty() ){
+        	                    PARSER_STATE->parseError("Must define at least one function in "
+        	                                             "define-funs-rec");
+        	                  }
+        	                  PARSER_STATE->pushScope(true);
+        	                  bvs.clear();
+        	                  if( sortedVarNamesList[0].empty() ){
+        	                    func_app = funcs[0];
+        	                  }else{
+        	                    std::vector< Expr > f_app;
+        	                    f_app.push_back( funcs[0] );
+        	                    for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator
+        	                          i = sortedVarNamesList[0].begin(),
+        	                          iend = sortedVarNamesList[0].end(); i != iend; ++i) {
+        	                      Expr v = PARSER_STATE->mkBoundVar((*i).first, (*i).second);
+        	                      bvs.push_back( v );
+        	                      f_app.push_back( v );
+        	                    }
+        	                    func_app = MK_EXPR( kind::APPLY_UF, f_app );
+        	                  }
+        	                
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:1290:5: ( term[expr,expr2] )+
+        	        {
+        	            int cnt23=0;
+
+        	            for (;;)
+        	            {
+        	                int alt23=2;
+        	        	switch ( LA(1) )
+        	        	{
+        	        	case BINARY_LITERAL:
+        	        	case CHECK_SYNTH_TOK:
+        	        	case CONSTRAINT_TOK:
+        	        	case DECIMAL_LITERAL:
+        	        	case DECLARE_PRIMED_VAR_TOK:
+        	        	case DECLARE_VAR_TOK:
+        	        	case EMPTYSET_TOK:
+        	        	case FP_RNA_FULL_TOK:
+        	        	case FP_RNA_TOK:
+        	        	case FP_RNE_FULL_TOK:
+        	        	case FP_RNE_TOK:
+        	        	case FP_RTN_FULL_TOK:
+        	        	case FP_RTN_TOK:
+        	        	case FP_RTP_FULL_TOK:
+        	        	case FP_RTP_TOK:
+        	        	case FP_RTZ_FULL_TOK:
+        	        	case FP_RTZ_TOK:
+        	        	case HEX_LITERAL:
+        	        	case INTEGER_LITERAL:
+        	        	case INV_CONSTRAINT_TOK:
+        	        	case LPAREN_TOK:
+        	        	case NILREF_TOK:
+        	        	case QUOTED_SYMBOL:
+        	        	case REALLCHAR_TOK:
+        	        	case RENOSTR_TOK:
+        	        	case SET_OPTIONS_TOK:
+        	        	case SIMPLE_SYMBOL:
+        	        	case STRING_LITERAL_2_0:
+        	        	case STRING_LITERAL_2_5:
+        	        	case SYNTH_FUN_TOK:
+        	        	case SYNTH_INV_TOK:
+        	        	case UNIVSET_TOK:
+        	        	case UNTERMINATED_QUOTED_SYMBOL:
+        	        	case 147:
+        	        		{
+        	        			alt23=1;
+        	        		}
+        	        	    break;
+
+        	        	}
+
+        	        	switch (alt23)
+        	        	{
+        	        	    case 1:
+        	        	        // ../../../../../../src/parser/smt2/Smt2.g:1291:5: term[expr,expr2]
+        	        	        {
+        	        	            FOLLOWPUSH(FOLLOW_term_in_smt25Command2107);
+        	        	            term(ctx, expr, expr2);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto rulesmt25CommandEx;
+        	        	            }
+
+
+        	        	            {
+        	        	                 
+        	        	                      func_defs.push_back( expr );
+        	        	                      Expr as = MK_EXPR( kind::EQUAL, func_app, expr );
+        	        	                      if( !bvs.empty() ){
+        	        	                        std::string attr_name("fun-def");
+        	        	                        aexpr = MK_EXPR(kind::INST_ATTRIBUTE, func_app);
+        	        	                        aexpr = MK_EXPR(kind::INST_PATTERN_LIST, aexpr );
+        	        	                        //set the attribute to denote these are function definitions
+        	        	                        seq->addCommand( new SetUserAttributeCommand( attr_name, func_app ) );
+        	        	                        //assert it
+        	        	                        as = EXPR_MANAGER->mkExpr( kind::FORALL,
+        	        	                                      EXPR_MANAGER->mkExpr(kind::BOUND_VAR_LIST, bvs),
+        	        	                                      as, aexpr);
+        	        	                      }
+        	        	                      seq->addCommand( new AssertCommand(as, false) );
+        	        	                      //set up the next scope 
+        	        	                      PARSER_STATE->popScope();
+        	        	                      if( func_defs.size()<funcs.size() ){
+        	        	                        PARSER_STATE->pushScope(true);
+        	        	                        bvs.clear();
+        	        	                        unsigned j = func_defs.size();
+        	        	                        if( sortedVarNamesList[j].empty() ){
+        	        	                          func_app = funcs[j];
+        	        	                        }else{
+        	        	                          std::vector< Expr > f_app;
+        	        	                          f_app.push_back( funcs[j] );
+        	        	                          for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator
+        	        	                                  i = sortedVarNamesList[j].begin(),
+        	        	                                  iend = sortedVarNamesList[j].end(); i != iend; ++i) {
+        	        	                            Expr v = PARSER_STATE->mkBoundVar((*i).first, (*i).second);
+        	        	                            bvs.push_back( v );
+        	        	                            f_app.push_back( v );
+        	        	                          }
+        	        	                          func_app = MK_EXPR( kind::APPLY_UF, f_app );
+        	        	                        }
+        	        	                      }
+        	        	                    
+        	        	            }
+
+
+        	        	        }
+        	        	        break;
+
+        	        	    default:
+
+        	        		if ( cnt23 >= 1 )
+        	        		{
+        	        		    goto loop23;
+        	        		}
+        	        		/* mismatchedSetEx()
+        	        		 */
+        	        		CONSTRUCTEX();
+        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        		goto rulesmt25CommandEx;
+        	        	}
+        	        	cnt23++;
+        	            }
+        	            loop23: ;	/* Jump to here if this rule does not match */
+        	        }
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_smt25Command2127);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesmt25CommandEx;
+        	        }
+
+
+        	        {
+        	             if( funcs.size()!=func_defs.size() ){
+        	                    PARSER_STATE->parseError(std::string(
+        	                        "Number of functions defined does not match number listed in "
+        	                        "define-funs-rec"));
+        	                  }
+        	                  cmd->reset(seq.release());
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesmt25CommandEx; /* Prevent compiler warnings */
+    rulesmt25CommandEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end smt25Command */
+
+/**
+ * $ANTLR start extendedCommand
+ * ../../../../../../src/parser/smt2/Smt2.g:1342:1: extendedCommand[CVC4::PtrCloser<CVC4::Command>* cmd] : ( DECLARE_DATATYPES_TOK datatypesDefCommand[false, cmd] | DECLARE_CODATATYPES_TOK datatypesDefCommand[true, cmd] | rewriterulesCommand[cmd] | DECLARE_SORTS_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )+ RPAREN_TOK | DECLARE_FUNS_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] nonemptySortList[sorts] RPAREN_TOK )+ RPAREN_TOK | DECLARE_PREDS_TOK LPAR [...]
+ */
+static void
+extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
+{
+
+      std::vector<CVC4::Datatype> dts;
+      Expr e, e2;
+      Type t;
+      std::string name;
+      std::vector<std::string> names;
+      std::vector<Expr> terms;
+      std::vector<Type> sorts;
+      std::vector<std::pair<std::string, Type> > sortedVarNames;
+      CVC4::PtrCloser<CVC4::CommandSequence> seq;
+
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/smt2/Smt2.g:1356:3: ( DECLARE_DATATYPES_TOK datatypesDefCommand[false, cmd] | DECLARE_CODATATYPES_TOK datatypesDefCommand[true, cmd] | rewriterulesCommand[cmd] | DECLARE_SORTS_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )+ RPAREN_TOK | DECLARE_FUNS_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] nonemptySortList[sorts] RPAREN_TOK )+ RPAREN_TOK | DECLARE_PREDS_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDE [...]
+
+            ANTLR3_UINT32 alt29;
+
+            alt29=11;
+
+            switch ( LA(1) )
+            {
+            case DECLARE_DATATYPES_TOK:
+            	{
+            		alt29=1;
+            	}
+                break;
+            case DECLARE_CODATATYPES_TOK:
+            	{
+            		alt29=2;
+            	}
+                break;
+            case PROPAGATION_RULE_TOK:
+            case REDUCTION_RULE_TOK:
+            case REWRITE_RULE_TOK:
+            	{
+            		alt29=3;
+            	}
+                break;
+            case DECLARE_SORTS_TOK:
+            	{
+            		alt29=4;
+            	}
+                break;
+            case DECLARE_FUNS_TOK:
+            	{
+            		alt29=5;
+            	}
+                break;
+            case DECLARE_PREDS_TOK:
+            	{
+            		alt29=6;
+            	}
+                break;
+            case DEFINE_TOK:
+            	{
+            		alt29=7;
+            	}
+                break;
+            case DEFINE_CONST_TOK:
+            	{
+            		alt29=8;
+            	}
+                break;
+            case SIMPLIFY_TOK:
+            	{
+            		alt29=9;
+            	}
+                break;
+            case GET_QE_TOK:
+            	{
+            		alt29=10;
+            	}
+                break;
+            case GET_QE_DISJUNCT_TOK:
+            	{
+            		alt29=11;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 29;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleextendedCommandEx;
+
+            }
+
+            switch (alt29)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1356:5: DECLARE_DATATYPES_TOK datatypesDefCommand[false, cmd]
+        	    {
+        	         MATCHT(DECLARE_DATATYPES_TOK, &FOLLOW_DECLARE_DATATYPES_TOK_in_extendedCommand2164);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_datatypesDefCommand_in_extendedCommand2166);
+        	        datatypesDefCommand(ctx, false, cmd);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1357:5: DECLARE_CODATATYPES_TOK datatypesDefCommand[true, cmd]
+        	    {
+        	         MATCHT(DECLARE_CODATATYPES_TOK, &FOLLOW_DECLARE_CODATATYPES_TOK_in_extendedCommand2173);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_datatypesDefCommand_in_extendedCommand2175);
+        	        datatypesDefCommand(ctx, true, cmd);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1358:5: rewriterulesCommand[cmd]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_rewriterulesCommand_in_extendedCommand2182);
+        	        rewriterulesCommand(ctx, cmd);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1362:5: DECLARE_SORTS_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )+ RPAREN_TOK
+        	    {
+        	         MATCHT(DECLARE_SORTS_TOK, &FOLLOW_DECLARE_SORTS_TOK_in_extendedCommand2197);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        {
+        	             if(!PARSER_STATE->isTheoryEnabled(Smt2::THEORY_UF) &&
+        	                     !PARSER_STATE->isTheoryEnabled(Smt2::THEORY_ARRAYS) &&
+        	                     !PARSER_STATE->isTheoryEnabled(Smt2::THEORY_DATATYPES) &&
+        	                     !PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS)) {
+        	                    PARSER_STATE->parseErrorLogic("Free sort symbols not allowed in ");
+        	                  }
+        	                
+        	        }
+
+
+        	        {
+        	             seq.reset(new CVC4::CommandSequence()); 
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2217);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:1372:5: ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )+
+        	        {
+        	            int cnt25=0;
+
+        	            for (;;)
+        	            {
+        	                int alt25=2;
+        	        	switch ( LA(1) )
+        	        	{
+        	        	case CHECK_SYNTH_TOK:
+        	        	case CONSTRAINT_TOK:
+        	        	case DECLARE_PRIMED_VAR_TOK:
+        	        	case DECLARE_VAR_TOK:
+        	        	case INV_CONSTRAINT_TOK:
+        	        	case QUOTED_SYMBOL:
+        	        	case SET_OPTIONS_TOK:
+        	        	case SIMPLE_SYMBOL:
+        	        	case SYNTH_FUN_TOK:
+        	        	case SYNTH_INV_TOK:
+        	        	case UNTERMINATED_QUOTED_SYMBOL:
+        	        	case 147:
+        	        		{
+        	        			alt25=1;
+        	        		}
+        	        	    break;
+
+        	        	}
+
+        	        	switch (alt25)
+        	        	{
+        	        	    case 1:
+        	        	        // ../../../../../../src/parser/smt2/Smt2.g:1372:7: symbol[name,CHECK_UNDECLARED,SYM_SORT]
+        	        	        {
+        	        	            FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2225);
+        	        	            symbol(ctx, name, CHECK_UNDECLARED, SYM_SORT);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruleextendedCommandEx;
+        	        	            }
+
+
+        	        	            {
+        	        	                 PARSER_STATE->checkUserSymbol(name);
+        	        	                        Type type = PARSER_STATE->mkSort(name);
+        	        	                        seq->addCommand(new DeclareTypeCommand(name, 0, type));
+        	        	                      
+        	        	            }
+
+
+        	        	        }
+        	        	        break;
+
+        	        	    default:
+
+        	        		if ( cnt25 >= 1 )
+        	        		{
+        	        		    goto loop25;
+        	        		}
+        	        		/* mismatchedSetEx()
+        	        		 */
+        	        		CONSTRUCTEX();
+        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        		goto ruleextendedCommandEx;
+        	        	}
+        	        	cnt25++;
+        	            }
+        	            loop25: ;	/* Jump to here if this rule does not match */
+        	        }
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2247);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        {
+        	             cmd->reset(seq.release()); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1381:5: DECLARE_FUNS_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] nonemptySortList[sorts] RPAREN_TOK )+ RPAREN_TOK
+        	    {
+        	         MATCHT(DECLARE_FUNS_TOK, &FOLLOW_DECLARE_FUNS_TOK_in_extendedCommand2260);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        {
+        	             seq.reset(new CVC4::CommandSequence()); 
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2274);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:1384:5: ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] nonemptySortList[sorts] RPAREN_TOK )+
+        	        {
+        	            int cnt26=0;
+
+        	            for (;;)
+        	            {
+        	                int alt26=2;
+        	        	switch ( LA(1) )
+        	        	{
+        	        	case LPAREN_TOK:
+        	        		{
+        	        			alt26=1;
+        	        		}
+        	        	    break;
+
+        	        	}
+
+        	        	switch (alt26)
+        	        	{
+        	        	    case 1:
+        	        	        // ../../../../../../src/parser/smt2/Smt2.g:1384:7: LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] nonemptySortList[sorts] RPAREN_TOK
+        	        	        {
+        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2282);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruleextendedCommandEx;
+        	        	            }
+
+
+        	        	            FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2284);
+        	        	            symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruleextendedCommandEx;
+        	        	            }
+
+
+        	        	            {
+        	        	                 PARSER_STATE->checkUserSymbol(name); 
+        	        	            }
+
+
+        	        	            FOLLOWPUSH(FOLLOW_nonemptySortList_in_extendedCommand2301);
+        	        	            nonemptySortList(ctx, sorts);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruleextendedCommandEx;
+        	        	            }
+
+
+        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2304);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruleextendedCommandEx;
+        	        	            }
+
+
+        	        	            {
+        	        	                 Type t;
+        	        	                        if(sorts.size() > 1) {
+        	        	                          if(!PARSER_STATE->isTheoryEnabled(Smt2::THEORY_UF)) {
+        	        	                            PARSER_STATE->parseErrorLogic("Functions (of non-zero arity) "
+        	        	                                                          "cannot be declared in logic ");
+        	        	                          }
+        	        	                          t = EXPR_MANAGER->mkFunctionType(sorts);
+        	        	                        } else {
+        	        	                          t = sorts[0];
+        	        	                        }
+        	        	                        Expr func = PARSER_STATE->mkVar(name, t);
+        	        	                        seq->addCommand(new DeclareFunctionCommand(name, func, t));
+        	        	                        sorts.clear();
+        	        	                      
+        	        	            }
+
+
+        	        	        }
+        	        	        break;
+
+        	        	    default:
+
+        	        		if ( cnt26 >= 1 )
+        	        		{
+        	        		    goto loop26;
+        	        		}
+        	        		/* mismatchedSetEx()
+        	        		 */
+        	        		CONSTRUCTEX();
+        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        		goto ruleextendedCommandEx;
+        	        	}
+        	        	cnt26++;
+        	            }
+        	            loop26: ;	/* Jump to here if this rule does not match */
+        	        }
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2325);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        {
+        	             cmd->reset(seq.release()); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1404:5: DECLARE_PREDS_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortList[sorts] RPAREN_TOK )+ RPAREN_TOK
+        	    {
+        	         MATCHT(DECLARE_PREDS_TOK, &FOLLOW_DECLARE_PREDS_TOK_in_extendedCommand2338);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        {
+        	             seq.reset(new CVC4::CommandSequence()); 
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2352);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:1407:5: ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortList[sorts] RPAREN_TOK )+
+        	        {
+        	            int cnt27=0;
+
+        	            for (;;)
+        	            {
+        	                int alt27=2;
+        	        	switch ( LA(1) )
+        	        	{
+        	        	case LPAREN_TOK:
+        	        		{
+        	        			alt27=1;
+        	        		}
+        	        	    break;
+
+        	        	}
+
+        	        	switch (alt27)
+        	        	{
+        	        	    case 1:
+        	        	        // ../../../../../../src/parser/smt2/Smt2.g:1407:7: LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortList[sorts] RPAREN_TOK
+        	        	        {
+        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2360);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruleextendedCommandEx;
+        	        	            }
+
+
+        	        	            FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2362);
+        	        	            symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruleextendedCommandEx;
+        	        	            }
+
+
+        	        	            {
+        	        	                 PARSER_STATE->checkUserSymbol(name); 
+        	        	            }
+
+
+        	        	            FOLLOWPUSH(FOLLOW_sortList_in_extendedCommand2379);
+        	        	            sortList(ctx, sorts);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruleextendedCommandEx;
+        	        	            }
+
+
+        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2382);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruleextendedCommandEx;
+        	        	            }
+
+
+        	        	            {
+        	        	                 Type t = EXPR_MANAGER->booleanType();
+        	        	                        if(sorts.size() > 0) {
+        	        	                          if(!PARSER_STATE->isTheoryEnabled(Smt2::THEORY_UF)) {
+        	        	                            PARSER_STATE->parseErrorLogic("Predicates (of non-zero arity) "
+        	        	                                                          "cannot be declared in logic ");
+        	        	                          }
+        	        	                          t = EXPR_MANAGER->mkFunctionType(sorts, t);
+        	        	                        }
+        	        	                        Expr func = PARSER_STATE->mkVar(name, t);
+        	        	                        seq->addCommand(new DeclareFunctionCommand(name, func, t));
+        	        	                        sorts.clear();
+        	        	                      
+        	        	            }
+
+
+        	        	        }
+        	        	        break;
+
+        	        	    default:
+
+        	        		if ( cnt27 >= 1 )
+        	        		{
+        	        		    goto loop27;
+        	        		}
+        	        		/* mismatchedSetEx()
+        	        		 */
+        	        		CONSTRUCTEX();
+        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        		goto ruleextendedCommandEx;
+        	        	}
+        	        	cnt27++;
+        	            }
+        	            loop27: ;	/* Jump to here if this rule does not match */
+        	        }
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2403);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        {
+        	             cmd->reset(seq.release()); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1426:5: DEFINE_TOK ( symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] term[e,e2] | LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortedVarList[sortedVarNames] RPAREN_TOK term[e,e2] )
+        	    {
+        	         MATCHT(DEFINE_TOK, &FOLLOW_DEFINE_TOK_in_extendedCommand2416);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:1427:5: ( symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] term[e,e2] | LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortedVarList[sortedVarNames] RPAREN_TOK term[e,e2] )
+        	        {
+        	            int alt28=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case CHECK_SYNTH_TOK:
+        	            case CONSTRAINT_TOK:
+        	            case DECLARE_PRIMED_VAR_TOK:
+        	            case DECLARE_VAR_TOK:
+        	            case INV_CONSTRAINT_TOK:
+        	            case QUOTED_SYMBOL:
+        	            case SET_OPTIONS_TOK:
+        	            case SIMPLE_SYMBOL:
+        	            case SYNTH_FUN_TOK:
+        	            case SYNTH_INV_TOK:
+        	            case UNTERMINATED_QUOTED_SYMBOL:
+        	            case 147:
+        	            	{
+        	            		alt28=1;
+        	            	}
+        	                break;
+        	            case LPAREN_TOK:
+        	            	{
+        	            		alt28=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 28;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto ruleextendedCommandEx;
+
+        	            }
+
+        	            switch (alt28)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1427:7: symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] term[e,e2]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2426);
+        	        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleextendedCommandEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             PARSER_STATE->checkUserSymbol(name); 
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2443);
+        	        	        term(ctx, e, e2);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleextendedCommandEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             Expr func = PARSER_STATE->mkFunction(name, e.getType(),
+        	        	                                                         ExprManager::VAR_FLAG_DEFINED);
+        	        	                    cmd->reset(new DefineFunctionCommand(name, func, e));
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1434:7: LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortedVarList[sortedVarNames] RPAREN_TOK term[e,e2]
+        	        	    {
+        	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2460);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleextendedCommandEx;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2468);
+        	        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleextendedCommandEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             PARSER_STATE->checkUserSymbol(name); 
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_sortedVarList_in_extendedCommand2485);
+        	        	        sortedVarList(ctx, sortedVarNames);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleextendedCommandEx;
+        	        	        }
+
+
+        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2488);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleextendedCommandEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             /* add variables to parser state before parsing term */
+        	        	                    Debug("parser") << "define fun: '" << name << "'" << std::endl;
+        	        	                    PARSER_STATE->pushScope(true);
+        	        	                    for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+        	        	                          sortedVarNames.begin(), iend = sortedVarNames.end(); i != iend;
+        	        	                        ++i) {
+        	        	                      terms.push_back(PARSER_STATE->mkBoundVar((*i).first, (*i).second));
+        	        	                    }
+        	        	                  
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2504);
+        	        	        term(ctx, e, e2);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleextendedCommandEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             PARSER_STATE->popScope();
+        	        	                    // declare the name down here (while parsing term, signature
+        	        	                    // must not be extended with the name itself; no recursion
+        	        	                    // permitted)
+        	        	                    Type t = e.getType();
+        	        	                    if( sortedVarNames.size() > 0 ) {
+        	        	                      std::vector<CVC4::Type> sorts;
+        	        	                      sorts.reserve(sortedVarNames.size());
+        	        	                      for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator
+        	        	                            i = sortedVarNames.begin(), iend = sortedVarNames.end();
+        	        	                          i != iend; ++i) {
+        	        	                        sorts.push_back((*i).second);
+        	        	                      }
+        	        	                      t = EXPR_MANAGER->mkFunctionType(sorts, t);
+        	        	                    }
+        	        	                    Expr func = PARSER_STATE->mkFunction(name, t,
+        	        	                                                         ExprManager::VAR_FLAG_DEFINED);
+        	        	                    cmd->reset(new DefineFunctionCommand(name, func, terms, e));
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	    }
+        	    break;
+        	case 8:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1468:5: DEFINE_CONST_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] term[e, e2]
+        	    {
+        	         MATCHT(DEFINE_CONST_TOK, &FOLLOW_DEFINE_CONST_TOK_in_extendedCommand2525);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2533);
+        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkUserSymbol(name); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_extendedCommand2546);
+        	        sortSymbol(ctx, t, CHECK_DECLARED);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        {
+        	             /* add variables to parser state before parsing term */
+        	                  Debug("parser") << "define const: '" << name << "'" << std::endl;
+        	                  PARSER_STATE->pushScope(true);
+        	                  for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+        	                        sortedVarNames.begin(), iend = sortedVarNames.end(); i != iend;
+        	                      ++i) {
+        	                    terms.push_back(PARSER_STATE->mkBoundVar((*i).first, (*i).second));
+        	                  }
+        	                
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2559);
+        	        term(ctx, e, e2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->popScope();
+        	                  // declare the name down here (while parsing term, signature
+        	                  // must not be extended with the name itself; no recursion
+        	                  // permitted)
+        	                  Expr func = PARSER_STATE->mkFunction(name, t,
+        	                                                       ExprManager::VAR_FLAG_DEFINED);
+        	                  cmd->reset(new DefineFunctionCommand(name, func, terms, e));
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 9:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1491:5: SIMPLIFY_TOK term[e,e2]
+        	    {
+        	         MATCHT(SIMPLIFY_TOK, &FOLLOW_SIMPLIFY_TOK_in_extendedCommand2573);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2581);
+        	        term(ctx, e, e2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        {
+        	             cmd->reset(new SimplifyCommand(e)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 10:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1494:5: GET_QE_TOK term[e,e2]
+        	    {
+        	         MATCHT(GET_QE_TOK, &FOLLOW_GET_QE_TOK_in_extendedCommand2594);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2602);
+        	        term(ctx, e, e2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        {
+        	             cmd->reset(new GetQuantifierEliminationCommand(e, true)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 11:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1497:5: GET_QE_DISJUNCT_TOK term[e,e2]
+        	    {
+        	         MATCHT(GET_QE_DISJUNCT_TOK, &FOLLOW_GET_QE_DISJUNCT_TOK_in_extendedCommand2615);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkThatLogicIsSet(); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2623);
+        	        term(ctx, e, e2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        {
+        	             cmd->reset(new GetQuantifierEliminationCommand(e, false)); 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleextendedCommandEx; /* Prevent compiler warnings */
+    ruleextendedCommandEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end extendedCommand */
+
+/**
+ * $ANTLR start datatypesDefCommand
+ * ../../../../../../src/parser/smt2/Smt2.g:1503:1: datatypesDefCommand[bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd] : LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK datatypeDef[isCo, dts, sorts] RPAREN_TOK )+ RPAREN_TOK ;
+ */
+static void
+datatypesDefCommand(pSmt2Parser ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd)
+{
+
+      std::vector<CVC4::Datatype> dts;
+      std::string name;
+      std::vector<Type> sorts;
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/smt2/Smt2.g:1509:3: ( LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK datatypeDef[isCo, dts, sorts] RPAREN_TOK )+ RPAREN_TOK )
+        // ../../../../../../src/parser/smt2/Smt2.g:1509:5: LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK datatypeDef[isCo, dts, sorts] RPAREN_TOK )+ RPAREN_TOK
+        {
+            {
+                 PARSER_STATE->checkThatLogicIsSet();
+                    /* open a scope to keep the UnresolvedTypes contained */
+                    PARSER_STATE->pushScope(true); 
+            }
+
+
+             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDefCommand2654);
+            if  (HASEXCEPTION())
+            {
+                goto ruledatatypesDefCommandEx;
+            }
+
+
+            // ../../../../../../src/parser/smt2/Smt2.g:1513:3: ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )*
+
+            for (;;)
+            {
+                int alt30=2;
+                switch ( LA(1) )
+                {
+                case CHECK_SYNTH_TOK:
+                case CONSTRAINT_TOK:
+                case DECLARE_PRIMED_VAR_TOK:
+                case DECLARE_VAR_TOK:
+                case INV_CONSTRAINT_TOK:
+                case QUOTED_SYMBOL:
+                case SET_OPTIONS_TOK:
+                case SIMPLE_SYMBOL:
+                case SYNTH_FUN_TOK:
+                case SYNTH_INV_TOK:
+                case UNTERMINATED_QUOTED_SYMBOL:
+                case 147:
+                	{
+                		alt30=1;
+                	}
+                    break;
+
+                }
+
+                switch (alt30)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:1513:5: symbol[name,CHECK_UNDECLARED,SYM_SORT]
+            	    {
+            	        FOLLOWPUSH(FOLLOW_symbol_in_datatypesDefCommand2662);
+            	        symbol(ctx, name, CHECK_UNDECLARED, SYM_SORT);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruledatatypesDefCommandEx;
+            	        }
+
+
+            	        {
+            	             sorts.push_back( PARSER_STATE->mkSort(name) ); 
+            	        }
+
+
+            	    }
+            	    break;
+
+            	default:
+            	    goto loop30;	/* break out of the loop */
+            	    break;
+                }
+            }
+            loop30: ; /* Jump out to here if this rule does not match */
+
+
+             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDefCommand2678);
+            if  (HASEXCEPTION())
+            {
+                goto ruledatatypesDefCommandEx;
+            }
+
+
+             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDefCommand2682);
+            if  (HASEXCEPTION())
+            {
+                goto ruledatatypesDefCommandEx;
+            }
+
+
+            // ../../../../../../src/parser/smt2/Smt2.g:1517:14: ( LPAREN_TOK datatypeDef[isCo, dts, sorts] RPAREN_TOK )+
+            {
+                int cnt31=0;
+
+                for (;;)
+                {
+                    int alt31=2;
+            	switch ( LA(1) )
+            	{
+            	case LPAREN_TOK:
+            		{
+            			alt31=1;
+            		}
+            	    break;
+
+            	}
+
+            	switch (alt31)
+            	{
+            	    case 1:
+            	        // ../../../../../../src/parser/smt2/Smt2.g:1517:16: LPAREN_TOK datatypeDef[isCo, dts, sorts] RPAREN_TOK
+            	        {
+            	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDefCommand2686);
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto ruledatatypesDefCommandEx;
+            	            }
+
+
+            	            FOLLOWPUSH(FOLLOW_datatypeDef_in_datatypesDefCommand2688);
+            	            datatypeDef(ctx, isCo, dts, sorts);
+
+            	            FOLLOWPOP();
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto ruledatatypesDefCommandEx;
+            	            }
+
+
+            	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDefCommand2691);
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto ruledatatypesDefCommandEx;
+            	            }
+
+
+            	        }
+            	        break;
+
+            	    default:
+
+            		if ( cnt31 >= 1 )
+            		{
+            		    goto loop31;
+            		}
+            		/* mismatchedSetEx()
+            		 */
+            		CONSTRUCTEX();
+            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+            		goto ruledatatypesDefCommandEx;
+            	}
+            	cnt31++;
+                }
+                loop31: ;	/* Jump to here if this rule does not match */
+            }
+
+             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDefCommand2696);
+            if  (HASEXCEPTION())
+            {
+                goto ruledatatypesDefCommandEx;
+            }
+
+
+            {
+                 PARSER_STATE->popScope();
+                    cmd->reset(new DatatypeDeclarationCommand(
+                        PARSER_STATE->mkMutualDatatypeTypes(dts)));
+                  
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruledatatypesDefCommandEx; /* Prevent compiler warnings */
+    ruledatatypesDefCommandEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end datatypesDefCommand */
+
+/**
+ * $ANTLR start rewriterulesCommand
+ * ../../../../../../src/parser/smt2/Smt2.g:1524:1: rewriterulesCommand[CVC4::PtrCloser<CVC4::Command>* cmd] : ( REWRITE_RULE_TOK LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK LPAREN_TOK ( pattern[expr] )* RPAREN_TOK LPAREN_TOK ( termList[guards,expr] )? RPAREN_TOK term[head, expr2] term[body, expr2] | rewritePropaKind[kind] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK LPAREN_TOK ( pattern[expr] )* RPAREN_TOK LPAREN_TOK ( termList[guards,expr] )? RPAREN_TOK LPAREN_TOK ( term [...]
+ */
+static void
+rewriterulesCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
+{
+
+      std::vector<std::pair<std::string, Type> > sortedVarNames;
+      std::vector<Expr> args, guards, heads, triggers;
+      Expr head, body, expr, expr2, bvl;
+      Kind kind;
+
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/smt2/Smt2.g:1531:3: ( REWRITE_RULE_TOK LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK LPAREN_TOK ( pattern[expr] )* RPAREN_TOK LPAREN_TOK ( termList[guards,expr] )? RPAREN_TOK term[head, expr2] term[body, expr2] | rewritePropaKind[kind] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK LPAREN_TOK ( pattern[expr] )* RPAREN_TOK LPAREN_TOK ( termList[guards,expr] )? RPAREN_TOK LPAREN_TOK ( termList[heads,expr] )? RPAREN_TOK term[body, expr2] )
+
+            ANTLR3_UINT32 alt37;
+
+            alt37=2;
+
+            switch ( LA(1) )
+            {
+            case REWRITE_RULE_TOK:
+            	{
+            		alt37=1;
+            	}
+                break;
+            case PROPAGATION_RULE_TOK:
+            case REDUCTION_RULE_TOK:
+            	{
+            		alt37=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 37;
+                EXCEPTION->state        = 0;
+
+
+                goto rulerewriterulesCommandEx;
+
+            }
+
+            switch (alt37)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1532:5: REWRITE_RULE_TOK LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK LPAREN_TOK ( pattern[expr] )* RPAREN_TOK LPAREN_TOK ( termList[guards,expr] )? RPAREN_TOK term[head, expr2] term[body, expr2]
+        	    {
+        	         MATCHT(REWRITE_RULE_TOK, &FOLLOW_REWRITE_RULE_TOK_in_rewriterulesCommand2725);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand2731);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_sortedVarList_in_rewriterulesCommand2733);
+        	        sortedVarList(ctx, sortedVarNames);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand2736);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	        {
+
+        	                  kind = CVC4::kind::RR_REWRITE;
+        	                  PARSER_STATE->pushScope(true);
+        	                  for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+        	                        sortedVarNames.begin(), iend = sortedVarNames.end();
+        	                      i != iend;
+        	                      ++i) {
+        	                    args.push_back(PARSER_STATE->mkBoundVar((*i).first, (*i).second));
+        	                  }
+        	                  bvl = MK_EXPR(kind::BOUND_VAR_LIST, args);
+        	                
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand2748);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:1545:16: ( pattern[expr] )*
+
+        	        for (;;)
+        	        {
+        	            int alt32=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case LPAREN_TOK:
+        	            	{
+        	            		alt32=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt32)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1545:18: pattern[expr]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_pattern_in_rewriterulesCommand2752);
+        	        	        pattern(ctx, expr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulerewriterulesCommandEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             triggers.push_back( expr ); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop32;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop32: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand2760);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand2766);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:1546:16: ( termList[guards,expr] )?
+        	        {
+        	            int alt33=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case BINARY_LITERAL:
+        	                case CHECK_SYNTH_TOK:
+        	                case CONSTRAINT_TOK:
+        	                case DECIMAL_LITERAL:
+        	                case DECLARE_PRIMED_VAR_TOK:
+        	                case DECLARE_VAR_TOK:
+        	                case EMPTYSET_TOK:
+        	                case FP_RNA_FULL_TOK:
+        	                case FP_RNA_TOK:
+        	                case FP_RNE_FULL_TOK:
+        	                case FP_RNE_TOK:
+        	                case FP_RTN_FULL_TOK:
+        	                case FP_RTN_TOK:
+        	                case FP_RTP_FULL_TOK:
+        	                case FP_RTP_TOK:
+        	                case FP_RTZ_FULL_TOK:
+        	                case FP_RTZ_TOK:
+        	                case HEX_LITERAL:
+        	                case INTEGER_LITERAL:
+        	                case INV_CONSTRAINT_TOK:
+        	                case LPAREN_TOK:
+        	                case NILREF_TOK:
+        	                case QUOTED_SYMBOL:
+        	                case REALLCHAR_TOK:
+        	                case RENOSTR_TOK:
+        	                case SET_OPTIONS_TOK:
+        	                case SIMPLE_SYMBOL:
+        	                case STRING_LITERAL_2_0:
+        	                case STRING_LITERAL_2_5:
+        	                case SYNTH_FUN_TOK:
+        	                case SYNTH_INV_TOK:
+        	                case UNIVSET_TOK:
+        	                case UNTERMINATED_QUOTED_SYMBOL:
+        	                case 147:
+        	                	{
+        	                		alt33=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt33)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1546:17: termList[guards,expr]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_termList_in_rewriterulesCommand2769);
+        	        	        termList(ctx, guards, expr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulerewriterulesCommandEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand2774);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_rewriterulesCommand2780);
+        	        term(ctx, head, expr2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_rewriterulesCommand2783);
+        	        term(ctx, body, expr2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	        {
+
+        	                  args.clear();
+        	                  args.push_back(head);
+        	                  args.push_back(body);
+        	                  /* triggers */
+        	                  if( !triggers.empty() ){
+        	                    expr2 = MK_EXPR(kind::INST_PATTERN_LIST, triggers);
+        	                    args.push_back(expr2);
+        	                  };
+        	                  expr = MK_EXPR(kind, args);
+        	                  args.clear();
+        	                  args.push_back(bvl);
+        	                  /* guards */
+        	                  switch( guards.size() ){
+        	                  case 0:
+        	                    args.push_back(MK_CONST(bool(true))); break;
+        	                  case 1:
+        	                    args.push_back(guards[0]); break;
+        	                  default:
+        	                    expr2 = MK_EXPR(kind::AND, guards);
+        	                    args.push_back(expr2); break;
+        	                  };
+        	                  args.push_back(expr);
+        	                  expr = MK_EXPR(CVC4::kind::REWRITE_RULE, args);
+        	                  cmd->reset(new AssertCommand(expr, false)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1574:5: rewritePropaKind[kind] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK LPAREN_TOK ( pattern[expr] )* RPAREN_TOK LPAREN_TOK ( termList[guards,expr] )? RPAREN_TOK LPAREN_TOK ( termList[heads,expr] )? RPAREN_TOK term[body, expr2]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_rewritePropaKind_in_rewriterulesCommand2802);
+        	        rewritePropaKind(ctx, kind);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand2809);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_sortedVarList_in_rewriterulesCommand2811);
+        	        sortedVarList(ctx, sortedVarNames);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand2814);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	        {
+
+        	                  PARSER_STATE->pushScope(true);
+        	                  for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+        	                        sortedVarNames.begin(), iend = sortedVarNames.end();
+        	                      i != iend;
+        	                      ++i) {
+        	                    args.push_back(PARSER_STATE->mkBoundVar((*i).first, (*i).second));
+        	                  }
+        	                  bvl = MK_EXPR(kind::BOUND_VAR_LIST, args);
+        	                
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand2826);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:1586:16: ( pattern[expr] )*
+
+        	        for (;;)
+        	        {
+        	            int alt34=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case LPAREN_TOK:
+        	            	{
+        	            		alt34=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt34)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1586:18: pattern[expr]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_pattern_in_rewriterulesCommand2830);
+        	        	        pattern(ctx, expr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulerewriterulesCommandEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             triggers.push_back( expr ); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop34;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop34: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand2838);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand2844);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:1587:16: ( termList[guards,expr] )?
+        	        {
+        	            int alt35=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case BINARY_LITERAL:
+        	                case CHECK_SYNTH_TOK:
+        	                case CONSTRAINT_TOK:
+        	                case DECIMAL_LITERAL:
+        	                case DECLARE_PRIMED_VAR_TOK:
+        	                case DECLARE_VAR_TOK:
+        	                case EMPTYSET_TOK:
+        	                case FP_RNA_FULL_TOK:
+        	                case FP_RNA_TOK:
+        	                case FP_RNE_FULL_TOK:
+        	                case FP_RNE_TOK:
+        	                case FP_RTN_FULL_TOK:
+        	                case FP_RTN_TOK:
+        	                case FP_RTP_FULL_TOK:
+        	                case FP_RTP_TOK:
+        	                case FP_RTZ_FULL_TOK:
+        	                case FP_RTZ_TOK:
+        	                case HEX_LITERAL:
+        	                case INTEGER_LITERAL:
+        	                case INV_CONSTRAINT_TOK:
+        	                case LPAREN_TOK:
+        	                case NILREF_TOK:
+        	                case QUOTED_SYMBOL:
+        	                case REALLCHAR_TOK:
+        	                case RENOSTR_TOK:
+        	                case SET_OPTIONS_TOK:
+        	                case SIMPLE_SYMBOL:
+        	                case STRING_LITERAL_2_0:
+        	                case STRING_LITERAL_2_5:
+        	                case SYNTH_FUN_TOK:
+        	                case SYNTH_INV_TOK:
+        	                case UNIVSET_TOK:
+        	                case UNTERMINATED_QUOTED_SYMBOL:
+        	                case 147:
+        	                	{
+        	                		alt35=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt35)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1587:17: termList[guards,expr]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_termList_in_rewriterulesCommand2847);
+        	        	        termList(ctx, guards, expr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulerewriterulesCommandEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand2852);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand2858);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:1588:16: ( termList[heads,expr] )?
+        	        {
+        	            int alt36=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case BINARY_LITERAL:
+        	                case CHECK_SYNTH_TOK:
+        	                case CONSTRAINT_TOK:
+        	                case DECIMAL_LITERAL:
+        	                case DECLARE_PRIMED_VAR_TOK:
+        	                case DECLARE_VAR_TOK:
+        	                case EMPTYSET_TOK:
+        	                case FP_RNA_FULL_TOK:
+        	                case FP_RNA_TOK:
+        	                case FP_RNE_FULL_TOK:
+        	                case FP_RNE_TOK:
+        	                case FP_RTN_FULL_TOK:
+        	                case FP_RTN_TOK:
+        	                case FP_RTP_FULL_TOK:
+        	                case FP_RTP_TOK:
+        	                case FP_RTZ_FULL_TOK:
+        	                case FP_RTZ_TOK:
+        	                case HEX_LITERAL:
+        	                case INTEGER_LITERAL:
+        	                case INV_CONSTRAINT_TOK:
+        	                case LPAREN_TOK:
+        	                case NILREF_TOK:
+        	                case QUOTED_SYMBOL:
+        	                case REALLCHAR_TOK:
+        	                case RENOSTR_TOK:
+        	                case SET_OPTIONS_TOK:
+        	                case SIMPLE_SYMBOL:
+        	                case STRING_LITERAL_2_0:
+        	                case STRING_LITERAL_2_5:
+        	                case SYNTH_FUN_TOK:
+        	                case SYNTH_INV_TOK:
+        	                case UNIVSET_TOK:
+        	                case UNTERMINATED_QUOTED_SYMBOL:
+        	                case 147:
+        	                	{
+        	                		alt36=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt36)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1588:17: termList[heads,expr]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_termList_in_rewriterulesCommand2861);
+        	        	        termList(ctx, heads, expr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulerewriterulesCommandEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand2866);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_rewriterulesCommand2872);
+        	        term(ctx, body, expr2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	        {
+
+        	                  args.clear();
+        	                  /* heads */
+        	                  switch( heads.size() ){
+        	                  case 0:
+        	                    args.push_back(MK_CONST(bool(true))); break;
+        	                  case 1:
+        	                    args.push_back(heads[0]); break;
+        	                  default:
+        	                    expr2 = MK_EXPR(kind::AND, heads);
+        	                    args.push_back(expr2); break;
+        	                  };
+        	                  args.push_back(body);
+        	                  /* triggers */
+        	                  if( !triggers.empty() ){
+        	                    expr2 = MK_EXPR(kind::INST_PATTERN_LIST, triggers);
+        	                    args.push_back(expr2);
+        	                  };
+        	                  expr = MK_EXPR(kind, args);
+        	                  args.clear();
+        	                  args.push_back(bvl);
+        	                  /* guards */
+        	                  switch( guards.size() ){
+        	                  case 0:
+        	                    args.push_back(MK_CONST(bool(true))); break;
+        	                  case 1:
+        	                    args.push_back(guards[0]); break;
+        	                  default:
+        	                    expr2 = MK_EXPR(kind::AND, guards);
+        	                    args.push_back(expr2); break;
+        	                  };
+        	                  args.push_back(expr);
+        	                  expr = MK_EXPR(CVC4::kind::REWRITE_RULE, args);
+        	                  cmd->reset(new AssertCommand(expr, false));
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulerewriterulesCommandEx; /* Prevent compiler warnings */
+    rulerewriterulesCommandEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end rewriterulesCommand */
+
+/**
+ * $ANTLR start rewritePropaKind
+ * ../../../../../../src/parser/smt2/Smt2.g:1627:1: rewritePropaKind[CVC4::Kind& kind] : ( REDUCTION_RULE_TOK | PROPAGATION_RULE_TOK );
+ */
+static void
+rewritePropaKind(pSmt2Parser ctx, CVC4::Kind& kind)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/smt2/Smt2.g:1628:3: ( REDUCTION_RULE_TOK | PROPAGATION_RULE_TOK )
+
+            ANTLR3_UINT32 alt38;
+
+            alt38=2;
+
+            switch ( LA(1) )
+            {
+            case REDUCTION_RULE_TOK:
+            	{
+            		alt38=1;
+            	}
+                break;
+            case PROPAGATION_RULE_TOK:
+            	{
+            		alt38=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 38;
+                EXCEPTION->state        = 0;
+
+
+                goto rulerewritePropaKindEx;
+
+            }
+
+            switch (alt38)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1628:5: REDUCTION_RULE_TOK
+        	    {
+        	         MATCHT(REDUCTION_RULE_TOK, &FOLLOW_REDUCTION_RULE_TOK_in_rewritePropaKind2893);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewritePropaKindEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::RR_REDUCTION; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1629:5: PROPAGATION_RULE_TOK
+        	    {
+        	         MATCHT(PROPAGATION_RULE_TOK, &FOLLOW_PROPAGATION_RULE_TOK_in_rewritePropaKind2904);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewritePropaKindEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::RR_DEDUCTION; 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulerewritePropaKindEx; /* Prevent compiler warnings */
+    rulerewritePropaKindEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end rewritePropaKind */
+
+/**
+ * $ANTLR start pattern
+ * ../../../../../../src/parser/smt2/Smt2.g:1632:1: pattern[CVC4::Expr& expr] : LPAREN_TOK termList[patexpr,expr] RPAREN_TOK ;
+ */
+static void
+pattern(pSmt2Parser ctx, CVC4::Expr& expr)
+{
+
+      std::vector<Expr> patexpr;
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/smt2/Smt2.g:1636:3: ( LPAREN_TOK termList[patexpr,expr] RPAREN_TOK )
+        // ../../../../../../src/parser/smt2/Smt2.g:1636:5: LPAREN_TOK termList[patexpr,expr] RPAREN_TOK
+        {
+             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_pattern2926);
+            if  (HASEXCEPTION())
+            {
+                goto rulepatternEx;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_termList_in_pattern2928);
+            termList(ctx, patexpr, expr);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulepatternEx;
+            }
+
+
+             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_pattern2931);
+            if  (HASEXCEPTION())
+            {
+                goto rulepatternEx;
+            }
+
+
+            {
+
+                      expr = MK_EXPR(kind::INST_PATTERN, patexpr);
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulepatternEx; /* Prevent compiler warnings */
+    rulepatternEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end pattern */
+
+/**
+ * $ANTLR start simpleSymbolicExprNoKeyword
+ * ../../../../../../src/parser/smt2/Smt2.g:1642:1: simpleSymbolicExprNoKeyword[CVC4::SExpr& sexpr] : ( INTEGER_LITERAL | DECIMAL_LITERAL | HEX_LITERAL | BINARY_LITERAL | str[s,false] | symbol[s,CHECK_NONE,SYM_SORT] |tok= ( ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_A [...]
+ */
+static void
+simpleSymbolicExprNoKeyword(pSmt2Parser ctx, CVC4::SExpr& sexpr)
+{
+
+      CVC4::Kind k;
+      std::string s;
+      std::vector<unsigned int> s_vec;
+
+    pANTLR3_COMMON_TOKEN    tok;
+    pANTLR3_COMMON_TOKEN    INTEGER_LITERAL8;
+    pANTLR3_COMMON_TOKEN    DECIMAL_LITERAL9;
+    pANTLR3_COMMON_TOKEN    HEX_LITERAL10;
+    pANTLR3_COMMON_TOKEN    BINARY_LITERAL11;
+
+    /* Initialize rule variables
+     */
+
+    tok       = NULL;
+    INTEGER_LITERAL8       = NULL;
+    DECIMAL_LITERAL9       = NULL;
+    HEX_LITERAL10       = NULL;
+    BINARY_LITERAL11       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/smt2/Smt2.g:1648:3: ( INTEGER_LITERAL | DECIMAL_LITERAL | HEX_LITERAL | BINARY_LITERAL | str[s,false] | symbol[s,CHECK_NONE,SYM_SORT] |tok= ( ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | SET_LOGIC_TOK | SET_I [...]
+
+            ANTLR3_UINT32 alt39;
+
+            alt39=8;
+
+            switch ( LA(1) )
+            {
+            case INTEGER_LITERAL:
+            	{
+            		alt39=1;
+            	}
+                break;
+            case DECIMAL_LITERAL:
+            	{
+            		alt39=2;
+            	}
+                break;
+            case HEX_LITERAL:
+            	{
+            		alt39=3;
+            	}
+                break;
+            case BINARY_LITERAL:
+            	{
+            		alt39=4;
+            	}
+                break;
+            case STRING_LITERAL_2_0:
+            case STRING_LITERAL_2_5:
+            	{
+            		alt39=5;
+            	}
+                break;
+            case CHECK_SYNTH_TOK:
+            case CONSTRAINT_TOK:
+            case DECLARE_PRIMED_VAR_TOK:
+            case DECLARE_VAR_TOK:
+            case INV_CONSTRAINT_TOK:
+            case QUOTED_SYMBOL:
+            case SET_OPTIONS_TOK:
+            case SIMPLE_SYMBOL:
+            case SYNTH_FUN_TOK:
+            case SYNTH_INV_TOK:
+            case UNTERMINATED_QUOTED_SYMBOL:
+            case 147:
+            	{
+            		alt39=6;
+            	}
+                break;
+            case ASSERT_TOK:
+            case CHECKSAT_TOK:
+            case DECLARE_DATATYPES_TOK:
+            case DECLARE_FUN_TOK:
+            case DECLARE_SORT_TOK:
+            case DEFINE_FUNS_REC_TOK:
+            case DEFINE_FUN_REC_TOK:
+            case DEFINE_FUN_TOK:
+            case DEFINE_SORT_TOK:
+            case ECHO_TOK:
+            case EXIT_TOK:
+            case GET_ASSERTIONS_TOK:
+            case GET_ASSIGNMENT_TOK:
+            case GET_INFO_TOK:
+            case GET_MODEL_TOK:
+            case GET_OPTION_TOK:
+            case GET_PROOF_TOK:
+            case GET_UNSAT_CORE_TOK:
+            case GET_VALUE_TOK:
+            case POP_TOK:
+            case PROPAGATION_RULE_TOK:
+            case PUSH_TOK:
+            case REDUCTION_RULE_TOK:
+            case RESET_ASSERTIONS_TOK:
+            case RESET_TOK:
+            case REWRITE_RULE_TOK:
+            case SET_INFO_TOK:
+            case SET_LOGIC_TOK:
+            case SET_OPTION_TOK:
+            case SIMPLIFY_TOK:
+            	{
+            		alt39=7;
+            	}
+                break;
+            case AND_TOK:
+            case BV2NAT_TOK:
+            case DISTINCT_TOK:
+            case DIV_TOK:
+            case DTSIZE_TOK:
+            case EQUAL_TOK:
+            case FMFCARDVAL_TOK:
+            case FMFCARD_TOK:
+            case GREATER_THAN_EQUAL_TOK:
+            case GREATER_THAN_TOK:
+            case IMPLIES_TOK:
+            case INST_CLOSURE_TOK:
+            case ITE_TOK:
+            case LESS_THAN_EQUAL_TOK:
+            case LESS_THAN_TOK:
+            case MINUS_TOK:
+            case NOT_TOK:
+            case OR_TOK:
+            case PLUS_TOK:
+            case STAR_TOK:
+            case XOR_TOK:
+            	{
+            		alt39=8;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 39;
+                EXCEPTION->state        = 0;
+
+
+                goto rulesimpleSymbolicExprNoKeywordEx;
+
+            }
+
+            switch (alt39)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1648:5: INTEGER_LITERAL
+        	    {
+        	        INTEGER_LITERAL8 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExprNoKeyword2956);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleSymbolicExprNoKeywordEx;
+        	        }
+
+
+        	        {
+        	             sexpr = SExpr(Integer(AntlrInput::tokenText(INTEGER_LITERAL8))); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1650:5: DECIMAL_LITERAL
+        	    {
+        	        DECIMAL_LITERAL9 = (pANTLR3_COMMON_TOKEN) MATCHT(DECIMAL_LITERAL, &FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExprNoKeyword2968);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleSymbolicExprNoKeywordEx;
+        	        }
+
+
+        	        {
+        	             sexpr = SExpr(AntlrInput::tokenToRational(DECIMAL_LITERAL9)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1652:5: HEX_LITERAL
+        	    {
+        	        HEX_LITERAL10 = (pANTLR3_COMMON_TOKEN) MATCHT(HEX_LITERAL, &FOLLOW_HEX_LITERAL_in_simpleSymbolicExprNoKeyword2980);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleSymbolicExprNoKeywordEx;
+        	        }
+
+
+        	        {
+        	             assert( AntlrInput::tokenText(HEX_LITERAL10).find("#x") == 0 );
+        	                  std::string hexString = AntlrInput::tokenTextSubstr(HEX_LITERAL10, 2);
+        	                  sexpr = SExpr(Integer(hexString, 16));
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1657:5: BINARY_LITERAL
+        	    {
+        	        BINARY_LITERAL11 = (pANTLR3_COMMON_TOKEN) MATCHT(BINARY_LITERAL, &FOLLOW_BINARY_LITERAL_in_simpleSymbolicExprNoKeyword2992);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleSymbolicExprNoKeywordEx;
+        	        }
+
+
+        	        {
+        	             assert( AntlrInput::tokenText(BINARY_LITERAL11).find("#b") == 0 );
+        	                  std::string binString = AntlrInput::tokenTextSubstr(BINARY_LITERAL11, 2);
+        	                  sexpr = SExpr(Integer(binString, 2));
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1662:5: str[s,false]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_str_in_simpleSymbolicExprNoKeyword3004);
+        	        str(ctx, s, false);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleSymbolicExprNoKeywordEx;
+        	        }
+
+
+        	        {
+        	             sexpr = SExpr(s); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1671:5: symbol[s,CHECK_NONE,SYM_SORT]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_symbol_in_simpleSymbolicExprNoKeyword3024);
+        	        symbol(ctx, s, CHECK_NONE, SYM_SORT);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleSymbolicExprNoKeywordEx;
+        	        }
+
+
+        	        {
+        	             sexpr = SExpr(SExpr::Keyword(s)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1673:5: tok= ( ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | SET_LOGIC_TOK | SET_INFO_TOK | GET_INFO_TOK | SET_OPTION_TOK | GET_OPTION_TOK | PUSH_TOK | POP_TOK | DECLARE_DATATYPES_TOK | GET_MODEL_T [...]
+        	    {
+        	        tok=(pANTLR3_COMMON_TOKEN)LT(1);
+
+        	        if ( LA(1) == ASSERT_TOK || LA(1) == CHECKSAT_TOK || LA(1) == DECLARE_DATATYPES_TOK || LA(1) == DECLARE_FUN_TOK || LA(1) == DECLARE_SORT_TOK || ((LA(1) >= DEFINE_FUNS_REC_TOK) && (LA(1) <= DEFINE_SORT_TOK)) || LA(1) == ECHO_TOK || LA(1) == EXIT_TOK || ((LA(1) >= GET_ASSERTIONS_TOK) && (LA(1) <= GET_PROOF_TOK)) || ((LA(1) >= GET_UNSAT_CORE_TOK) && (LA(1) <= GET_VALUE_TOK)) || ((LA(1) >= POP_TOK) && (LA(1) <= PUSH_TOK)) || LA(1) == REDUCTION_RULE_TOK || ((LA(1) >= RESET_AS [...]
+        	        {
+        	            CONSUME();
+        	            PERRORRECOVERY=ANTLR3_FALSE;
+        	        }
+        	        else
+        	        {
+        	            CONSTRUCTEX();
+        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+        	            EXCEPTION->expectingSet = NULL;
+
+        	            goto rulesimpleSymbolicExprNoKeywordEx;
+        	        }
+
+
+        	        {
+        	             sexpr = SExpr(SExpr::Keyword(AntlrInput::tokenText(tok))); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 8:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1682:5: builtinOp[k]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_builtinOp_in_simpleSymbolicExprNoKeyword3225);
+        	        builtinOp(ctx, k);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleSymbolicExprNoKeywordEx;
+        	        }
+
+
+        	        {
+        	             std::stringstream ss;
+        	                  ss << language::SetLanguage(CVC4::language::output::LANG_SMTLIB_V2_5)
+        	                     << EXPR_MANAGER->mkConst(k);
+        	                  sexpr = SExpr(ss.str());
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesimpleSymbolicExprNoKeywordEx; /* Prevent compiler warnings */
+    rulesimpleSymbolicExprNoKeywordEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end simpleSymbolicExprNoKeyword */
+
+/**
+ * $ANTLR start keyword
+ * ../../../../../../src/parser/smt2/Smt2.g:1690:1: keyword[std::string& s] : KEYWORD ;
+ */
+static void
+keyword(pSmt2Parser ctx, std::string& s)
+{
+    pANTLR3_COMMON_TOKEN    KEYWORD12;
+
+    /* Initialize rule variables
+     */
+
+    KEYWORD12       = NULL;
+
+    {
+        // ../../../../../../src/parser/smt2/Smt2.g:1691:3: ( KEYWORD )
+        // ../../../../../../src/parser/smt2/Smt2.g:1691:5: KEYWORD
+        {
+            KEYWORD12 = (pANTLR3_COMMON_TOKEN) MATCHT(KEYWORD, &FOLLOW_KEYWORD_in_keyword3246);
+            if  (HASEXCEPTION())
+            {
+                goto rulekeywordEx;
+            }
+
+
+            {
+                 s = AntlrInput::tokenText(KEYWORD12); 
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulekeywordEx; /* Prevent compiler warnings */
+    rulekeywordEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end keyword */
+
+/**
+ * $ANTLR start simpleSymbolicExpr
+ * ../../../../../../src/parser/smt2/Smt2.g:1695:1: simpleSymbolicExpr[CVC4::SExpr& sexpr] : ( simpleSymbolicExprNoKeyword[sexpr] | KEYWORD );
+ */
+static void
+simpleSymbolicExpr(pSmt2Parser ctx, CVC4::SExpr& sexpr)
+{
+    pANTLR3_COMMON_TOKEN    KEYWORD13;
+
+    /* Initialize rule variables
+     */
+
+    KEYWORD13       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/smt2/Smt2.g:1696:3: ( simpleSymbolicExprNoKeyword[sexpr] | KEYWORD )
+
+            ANTLR3_UINT32 alt40;
+
+            alt40=2;
+
+            switch ( LA(1) )
+            {
+            case AND_TOK:
+            case ASSERT_TOK:
+            case BINARY_LITERAL:
+            case BV2NAT_TOK:
+            case CHECKSAT_TOK:
+            case CHECK_SYNTH_TOK:
+            case CONSTRAINT_TOK:
+            case DECIMAL_LITERAL:
+            case DECLARE_DATATYPES_TOK:
+            case DECLARE_FUN_TOK:
+            case DECLARE_PRIMED_VAR_TOK:
+            case DECLARE_SORT_TOK:
+            case DECLARE_VAR_TOK:
+            case DEFINE_FUNS_REC_TOK:
+            case DEFINE_FUN_REC_TOK:
+            case DEFINE_FUN_TOK:
+            case DEFINE_SORT_TOK:
+            case DISTINCT_TOK:
+            case DIV_TOK:
+            case DTSIZE_TOK:
+            case ECHO_TOK:
+            case EQUAL_TOK:
+            case EXIT_TOK:
+            case FMFCARDVAL_TOK:
+            case FMFCARD_TOK:
+            case GET_ASSERTIONS_TOK:
+            case GET_ASSIGNMENT_TOK:
+            case GET_INFO_TOK:
+            case GET_MODEL_TOK:
+            case GET_OPTION_TOK:
+            case GET_PROOF_TOK:
+            case GET_UNSAT_CORE_TOK:
+            case GET_VALUE_TOK:
+            case GREATER_THAN_EQUAL_TOK:
+            case GREATER_THAN_TOK:
+            case HEX_LITERAL:
+            case IMPLIES_TOK:
+            case INST_CLOSURE_TOK:
+            case INTEGER_LITERAL:
+            case INV_CONSTRAINT_TOK:
+            case ITE_TOK:
+            case LESS_THAN_EQUAL_TOK:
+            case LESS_THAN_TOK:
+            case MINUS_TOK:
+            case NOT_TOK:
+            case OR_TOK:
+            case PLUS_TOK:
+            case POP_TOK:
+            case PROPAGATION_RULE_TOK:
+            case PUSH_TOK:
+            case QUOTED_SYMBOL:
+            case REDUCTION_RULE_TOK:
+            case RESET_ASSERTIONS_TOK:
+            case RESET_TOK:
+            case REWRITE_RULE_TOK:
+            case SET_INFO_TOK:
+            case SET_LOGIC_TOK:
+            case SET_OPTIONS_TOK:
+            case SET_OPTION_TOK:
+            case SIMPLE_SYMBOL:
+            case SIMPLIFY_TOK:
+            case STAR_TOK:
+            case STRING_LITERAL_2_0:
+            case STRING_LITERAL_2_5:
+            case SYNTH_FUN_TOK:
+            case SYNTH_INV_TOK:
+            case UNTERMINATED_QUOTED_SYMBOL:
+            case XOR_TOK:
+            case 147:
+            	{
+            		alt40=1;
+            	}
+                break;
+            case KEYWORD:
+            	{
+            		alt40=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 40;
+                EXCEPTION->state        = 0;
+
+
+                goto rulesimpleSymbolicExprEx;
+
+            }
+
+            switch (alt40)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1696:5: simpleSymbolicExprNoKeyword[sexpr]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExprNoKeyword_in_simpleSymbolicExpr3266);
+        	        simpleSymbolicExprNoKeyword(ctx, sexpr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleSymbolicExprEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1697:5: KEYWORD
+        	    {
+        	        KEYWORD13 = (pANTLR3_COMMON_TOKEN) MATCHT(KEYWORD, &FOLLOW_KEYWORD_in_simpleSymbolicExpr3273);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleSymbolicExprEx;
+        	        }
+
+
+        	        {
+        	             sexpr = SExpr(AntlrInput::tokenText(KEYWORD13)); 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesimpleSymbolicExprEx; /* Prevent compiler warnings */
+    rulesimpleSymbolicExprEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end simpleSymbolicExpr */
+
+/**
+ * $ANTLR start symbolicExpr
+ * ../../../../../../src/parser/smt2/Smt2.g:1701:1: symbolicExpr[CVC4::SExpr& sexpr] : ( simpleSymbolicExpr[sexpr] | LPAREN_TOK ( symbolicExpr[sexpr] )* RPAREN_TOK );
+ */
+static void
+symbolicExpr(pSmt2Parser ctx, CVC4::SExpr& sexpr)
+{
+
+      std::vector<SExpr> children;
+
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/smt2/Smt2.g:1705:3: ( simpleSymbolicExpr[sexpr] | LPAREN_TOK ( symbolicExpr[sexpr] )* RPAREN_TOK )
+
+            ANTLR3_UINT32 alt42;
+
+            alt42=2;
+
+            switch ( LA(1) )
+            {
+            case AND_TOK:
+            case ASSERT_TOK:
+            case BINARY_LITERAL:
+            case BV2NAT_TOK:
+            case CHECKSAT_TOK:
+            case CHECK_SYNTH_TOK:
+            case CONSTRAINT_TOK:
+            case DECIMAL_LITERAL:
+            case DECLARE_DATATYPES_TOK:
+            case DECLARE_FUN_TOK:
+            case DECLARE_PRIMED_VAR_TOK:
+            case DECLARE_SORT_TOK:
+            case DECLARE_VAR_TOK:
+            case DEFINE_FUNS_REC_TOK:
+            case DEFINE_FUN_REC_TOK:
+            case DEFINE_FUN_TOK:
+            case DEFINE_SORT_TOK:
+            case DISTINCT_TOK:
+            case DIV_TOK:
+            case DTSIZE_TOK:
+            case ECHO_TOK:
+            case EQUAL_TOK:
+            case EXIT_TOK:
+            case FMFCARDVAL_TOK:
+            case FMFCARD_TOK:
+            case GET_ASSERTIONS_TOK:
+            case GET_ASSIGNMENT_TOK:
+            case GET_INFO_TOK:
+            case GET_MODEL_TOK:
+            case GET_OPTION_TOK:
+            case GET_PROOF_TOK:
+            case GET_UNSAT_CORE_TOK:
+            case GET_VALUE_TOK:
+            case GREATER_THAN_EQUAL_TOK:
+            case GREATER_THAN_TOK:
+            case HEX_LITERAL:
+            case IMPLIES_TOK:
+            case INST_CLOSURE_TOK:
+            case INTEGER_LITERAL:
+            case INV_CONSTRAINT_TOK:
+            case ITE_TOK:
+            case KEYWORD:
+            case LESS_THAN_EQUAL_TOK:
+            case LESS_THAN_TOK:
+            case MINUS_TOK:
+            case NOT_TOK:
+            case OR_TOK:
+            case PLUS_TOK:
+            case POP_TOK:
+            case PROPAGATION_RULE_TOK:
+            case PUSH_TOK:
+            case QUOTED_SYMBOL:
+            case REDUCTION_RULE_TOK:
+            case RESET_ASSERTIONS_TOK:
+            case RESET_TOK:
+            case REWRITE_RULE_TOK:
+            case SET_INFO_TOK:
+            case SET_LOGIC_TOK:
+            case SET_OPTIONS_TOK:
+            case SET_OPTION_TOK:
+            case SIMPLE_SYMBOL:
+            case SIMPLIFY_TOK:
+            case STAR_TOK:
+            case STRING_LITERAL_2_0:
+            case STRING_LITERAL_2_5:
+            case SYNTH_FUN_TOK:
+            case SYNTH_INV_TOK:
+            case UNTERMINATED_QUOTED_SYMBOL:
+            case XOR_TOK:
+            case 147:
+            	{
+            		alt42=1;
+            	}
+                break;
+            case LPAREN_TOK:
+            	{
+            		alt42=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 42;
+                EXCEPTION->state        = 0;
+
+
+                goto rulesymbolicExprEx;
+
+            }
+
+            switch (alt42)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1705:5: simpleSymbolicExpr[sexpr]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExpr_in_symbolicExpr3298);
+        	        simpleSymbolicExpr(ctx, sexpr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesymbolicExprEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1706:5: LPAREN_TOK ( symbolicExpr[sexpr] )* RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_symbolicExpr3305);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesymbolicExprEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:1707:5: ( symbolicExpr[sexpr] )*
+
+        	        for (;;)
+        	        {
+        	            int alt41=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case AND_TOK:
+        	            case ASSERT_TOK:
+        	            case BINARY_LITERAL:
+        	            case BV2NAT_TOK:
+        	            case CHECKSAT_TOK:
+        	            case CHECK_SYNTH_TOK:
+        	            case CONSTRAINT_TOK:
+        	            case DECIMAL_LITERAL:
+        	            case DECLARE_DATATYPES_TOK:
+        	            case DECLARE_FUN_TOK:
+        	            case DECLARE_PRIMED_VAR_TOK:
+        	            case DECLARE_SORT_TOK:
+        	            case DECLARE_VAR_TOK:
+        	            case DEFINE_FUNS_REC_TOK:
+        	            case DEFINE_FUN_REC_TOK:
+        	            case DEFINE_FUN_TOK:
+        	            case DEFINE_SORT_TOK:
+        	            case DISTINCT_TOK:
+        	            case DIV_TOK:
+        	            case DTSIZE_TOK:
+        	            case ECHO_TOK:
+        	            case EQUAL_TOK:
+        	            case EXIT_TOK:
+        	            case FMFCARDVAL_TOK:
+        	            case FMFCARD_TOK:
+        	            case GET_ASSERTIONS_TOK:
+        	            case GET_ASSIGNMENT_TOK:
+        	            case GET_INFO_TOK:
+        	            case GET_MODEL_TOK:
+        	            case GET_OPTION_TOK:
+        	            case GET_PROOF_TOK:
+        	            case GET_UNSAT_CORE_TOK:
+        	            case GET_VALUE_TOK:
+        	            case GREATER_THAN_EQUAL_TOK:
+        	            case GREATER_THAN_TOK:
+        	            case HEX_LITERAL:
+        	            case IMPLIES_TOK:
+        	            case INST_CLOSURE_TOK:
+        	            case INTEGER_LITERAL:
+        	            case INV_CONSTRAINT_TOK:
+        	            case ITE_TOK:
+        	            case KEYWORD:
+        	            case LESS_THAN_EQUAL_TOK:
+        	            case LESS_THAN_TOK:
+        	            case LPAREN_TOK:
+        	            case MINUS_TOK:
+        	            case NOT_TOK:
+        	            case OR_TOK:
+        	            case PLUS_TOK:
+        	            case POP_TOK:
+        	            case PROPAGATION_RULE_TOK:
+        	            case PUSH_TOK:
+        	            case QUOTED_SYMBOL:
+        	            case REDUCTION_RULE_TOK:
+        	            case RESET_ASSERTIONS_TOK:
+        	            case RESET_TOK:
+        	            case REWRITE_RULE_TOK:
+        	            case SET_INFO_TOK:
+        	            case SET_LOGIC_TOK:
+        	            case SET_OPTIONS_TOK:
+        	            case SET_OPTION_TOK:
+        	            case SIMPLE_SYMBOL:
+        	            case SIMPLIFY_TOK:
+        	            case STAR_TOK:
+        	            case STRING_LITERAL_2_0:
+        	            case STRING_LITERAL_2_5:
+        	            case SYNTH_FUN_TOK:
+        	            case SYNTH_INV_TOK:
+        	            case UNTERMINATED_QUOTED_SYMBOL:
+        	            case XOR_TOK:
+        	            case 147:
+        	            	{
+        	            		alt41=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt41)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1707:7: symbolicExpr[sexpr]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_symbolicExpr_in_symbolicExpr3313);
+        	        	        symbolicExpr(ctx, sexpr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesymbolicExprEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             children.push_back(sexpr); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop41;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop41: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_symbolicExpr3321);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesymbolicExprEx;
+        	        }
+
+
+        	        {
+        	             sexpr = SExpr(children); 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesymbolicExprEx; /* Prevent compiler warnings */
+    rulesymbolicExprEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end symbolicExpr */
+
+/**
+ * $ANTLR start term
+ * ../../../../../../src/parser/smt2/Smt2.g:1715:1: term[CVC4::Expr& expr, CVC4::Expr& expr2] : ( LPAREN_TOK builtinOp[kind] termList[args,expr] RPAREN_TOK | LPAREN_TOK AS_TOK term[f, f2] sortSymbol[type, CHECK_DECLARED] RPAREN_TOK | LPAREN_TOK quantOp[kind] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK term[f, f2] RPAREN_TOK | LPAREN_TOK functionName[name, CHECK_NONE] termList[args,expr] RPAREN_TOK | LPAREN_TOK ( indexedFunctionName[op] termList[args,expr] RPAREN_TOK | LPAREN_TOK  [...]
+ */
+static void
+term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
+{
+    pANTLR3_COMMON_TOKEN    bvLit;
+    pANTLR3_COMMON_TOKEN    size;
+    pANTLR3_COMMON_TOKEN    eb;
+    pANTLR3_COMMON_TOKEN    sb;
+    pANTLR3_COMMON_TOKEN    INTEGER_LITERAL14;
+    pANTLR3_COMMON_TOKEN    DECIMAL_LITERAL15;
+    pANTLR3_COMMON_TOKEN    HEX_LITERAL16;
+    pANTLR3_COMMON_TOKEN    BINARY_LITERAL17;
+
+    /* Initialize rule variables
+     */
+
+
+      Debug("parser") << "term: " << AntlrInput::tokenText(LT(1)) << std::endl;
+      Kind kind = kind::NULL_EXPR;
+      Expr op;
+      std::string name, name2;
+      std::vector<Expr> args;
+      std::vector< std::pair<std::string, Type> > sortedVarNames;
+      Expr f, f2, f3, f4;
+      std::string attr;
+      Expr attexpr;
+      std::vector<Expr> patexprs;
+      std::hash_set<std::string, StringHashFunction> names;
+      std::vector< std::pair<std::string, Expr> > binders;
+      Type type;
+      std::string s;
+      bool isBuiltinOperator = false;
+      bool readLetSort = false;
+
+    bvLit       = NULL;
+    size       = NULL;
+    eb       = NULL;
+    sb       = NULL;
+    INTEGER_LITERAL14       = NULL;
+    DECIMAL_LITERAL15       = NULL;
+    HEX_LITERAL16       = NULL;
+    BINARY_LITERAL17       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/smt2/Smt2.g:1734:3: ( LPAREN_TOK builtinOp[kind] termList[args,expr] RPAREN_TOK | LPAREN_TOK AS_TOK term[f, f2] sortSymbol[type, CHECK_DECLARED] RPAREN_TOK | LPAREN_TOK quantOp[kind] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK term[f, f2] RPAREN_TOK | LPAREN_TOK functionName[name, CHECK_NONE] termList[args,expr] RPAREN_TOK | LPAREN_TOK ( indexedFunctionName[op] termList[args,expr] RPAREN_TOK | LPAREN_TOK AS_TOK CONST_TOK sortSymbol[typ [...]
+
+            ANTLR3_UINT32 alt48;
+
+            alt48=30;
+
+            switch ( LA(1) )
+            {
+            case LPAREN_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case AS_TOK:
+            			{
+            				alt48=2;
+            			}
+            		    break;
+            		case LET_TOK:
+            			{
+            				alt48=6;
+            			}
+            		    break;
+            		case ATTRIBUTE_TOK:
+            			{
+            				alt48=9;
+            			}
+            		    break;
+            		case INDEX_TOK:
+            			{
+            				alt48=12;
+            			}
+            		    break;
+            		case AND_TOK:
+            		case BV2NAT_TOK:
+            		case DISTINCT_TOK:
+            		case DIV_TOK:
+            		case DTSIZE_TOK:
+            		case EQUAL_TOK:
+            		case FMFCARDVAL_TOK:
+            		case FMFCARD_TOK:
+            		case GREATER_THAN_EQUAL_TOK:
+            		case GREATER_THAN_TOK:
+            		case IMPLIES_TOK:
+            		case INST_CLOSURE_TOK:
+            		case ITE_TOK:
+            		case LESS_THAN_EQUAL_TOK:
+            		case LESS_THAN_TOK:
+            		case MINUS_TOK:
+            		case NOT_TOK:
+            		case OR_TOK:
+            		case PLUS_TOK:
+            		case STAR_TOK:
+            		case XOR_TOK:
+            			{
+            				alt48=1;
+            			}
+            		    break;
+            		case EXISTS_TOK:
+            		case FORALL_TOK:
+            			{
+            				alt48=3;
+            			}
+            		    break;
+            		case CHECK_SYNTH_TOK:
+            		case CONSTRAINT_TOK:
+            		case DECLARE_PRIMED_VAR_TOK:
+            		case DECLARE_VAR_TOK:
+            		case INV_CONSTRAINT_TOK:
+            		case QUOTED_SYMBOL:
+            		case SET_OPTIONS_TOK:
+            		case SIMPLE_SYMBOL:
+            		case SYNTH_FUN_TOK:
+            		case SYNTH_INV_TOK:
+            		case UNTERMINATED_QUOTED_SYMBOL:
+            		case 147:
+            			{
+            				alt48=4;
+            			}
+            		    break;
+            		case LPAREN_TOK:
+            			{
+            				alt48=5;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->state        = 1;
+
+
+            		    goto ruletermEx;
+
+            		}
+
+            	}
+                break;
+            case SIMPLE_SYMBOL:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case SYGUS_ENUM_CONS_TOK:
+            			{
+            				alt48=7;
+            			}
+            		    break;
+            		case EOF:
+            		case ATTRIBUTE_INST_LEVEL:
+            		case ATTRIBUTE_NAMED_TOK:
+            		case ATTRIBUTE_NO_PATTERN_TOK:
+            		case ATTRIBUTE_PATTERN_TOK:
+            		case ATTRIBUTE_RR_PRIORITY:
+            		case BINARY_LITERAL:
+            		case CHECK_SYNTH_TOK:
+            		case CONSTRAINT_TOK:
+            		case DECIMAL_LITERAL:
+            		case DECLARE_PRIMED_VAR_TOK:
+            		case DECLARE_VAR_TOK:
+            		case EMPTYSET_TOK:
+            		case FP_RNA_FULL_TOK:
+            		case FP_RNA_TOK:
+            		case FP_RNE_FULL_TOK:
+            		case FP_RNE_TOK:
+            		case FP_RTN_FULL_TOK:
+            		case FP_RTN_TOK:
+            		case FP_RTP_FULL_TOK:
+            		case FP_RTP_TOK:
+            		case FP_RTZ_FULL_TOK:
+            		case FP_RTZ_TOK:
+            		case HEX_LITERAL:
+            		case INTEGER_LITERAL:
+            		case INV_CONSTRAINT_TOK:
+            		case KEYWORD:
+            		case LPAREN_TOK:
+            		case NILREF_TOK:
+            		case QUOTED_SYMBOL:
+            		case REALLCHAR_TOK:
+            		case RENOSTR_TOK:
+            		case RPAREN_TOK:
+            		case SET_OPTIONS_TOK:
+            		case SIMPLE_SYMBOL:
+            		case STRING_LITERAL_2_0:
+            		case STRING_LITERAL_2_5:
+            		case SYNTH_FUN_TOK:
+            		case SYNTH_INV_TOK:
+            		case UNIVSET_TOK:
+            		case UNTERMINATED_QUOTED_SYMBOL:
+            		case 147:
+            			{
+            				alt48=8;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->state        = 2;
+
+
+            		    goto ruletermEx;
+
+            		}
+
+            	}
+                break;
+            case 147:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case SYGUS_ENUM_CONS_TOK:
+            			{
+            				alt48=7;
+            			}
+            		    break;
+            		case EOF:
+            		case ATTRIBUTE_INST_LEVEL:
+            		case ATTRIBUTE_NAMED_TOK:
+            		case ATTRIBUTE_NO_PATTERN_TOK:
+            		case ATTRIBUTE_PATTERN_TOK:
+            		case ATTRIBUTE_RR_PRIORITY:
+            		case BINARY_LITERAL:
+            		case CHECK_SYNTH_TOK:
+            		case CONSTRAINT_TOK:
+            		case DECIMAL_LITERAL:
+            		case DECLARE_PRIMED_VAR_TOK:
+            		case DECLARE_VAR_TOK:
+            		case EMPTYSET_TOK:
+            		case FP_RNA_FULL_TOK:
+            		case FP_RNA_TOK:
+            		case FP_RNE_FULL_TOK:
+            		case FP_RNE_TOK:
+            		case FP_RTN_FULL_TOK:
+            		case FP_RTN_TOK:
+            		case FP_RTP_FULL_TOK:
+            		case FP_RTP_TOK:
+            		case FP_RTZ_FULL_TOK:
+            		case FP_RTZ_TOK:
+            		case HEX_LITERAL:
+            		case INTEGER_LITERAL:
+            		case INV_CONSTRAINT_TOK:
+            		case KEYWORD:
+            		case LPAREN_TOK:
+            		case NILREF_TOK:
+            		case QUOTED_SYMBOL:
+            		case REALLCHAR_TOK:
+            		case RENOSTR_TOK:
+            		case RPAREN_TOK:
+            		case SET_OPTIONS_TOK:
+            		case SIMPLE_SYMBOL:
+            		case STRING_LITERAL_2_0:
+            		case STRING_LITERAL_2_5:
+            		case SYNTH_FUN_TOK:
+            		case SYNTH_INV_TOK:
+            		case UNIVSET_TOK:
+            		case UNTERMINATED_QUOTED_SYMBOL:
+            		case 147:
+            			{
+            				alt48=8;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->state        = 3;
+
+
+            		    goto ruletermEx;
+
+            		}
+
+            	}
+                break;
+            case SET_OPTIONS_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case SYGUS_ENUM_CONS_TOK:
+            			{
+            				alt48=7;
+            			}
+            		    break;
+            		case EOF:
+            		case ATTRIBUTE_INST_LEVEL:
+            		case ATTRIBUTE_NAMED_TOK:
+            		case ATTRIBUTE_NO_PATTERN_TOK:
+            		case ATTRIBUTE_PATTERN_TOK:
+            		case ATTRIBUTE_RR_PRIORITY:
+            		case BINARY_LITERAL:
+            		case CHECK_SYNTH_TOK:
+            		case CONSTRAINT_TOK:
+            		case DECIMAL_LITERAL:
+            		case DECLARE_PRIMED_VAR_TOK:
+            		case DECLARE_VAR_TOK:
+            		case EMPTYSET_TOK:
+            		case FP_RNA_FULL_TOK:
+            		case FP_RNA_TOK:
+            		case FP_RNE_FULL_TOK:
+            		case FP_RNE_TOK:
+            		case FP_RTN_FULL_TOK:
+            		case FP_RTN_TOK:
+            		case FP_RTP_FULL_TOK:
+            		case FP_RTP_TOK:
+            		case FP_RTZ_FULL_TOK:
+            		case FP_RTZ_TOK:
+            		case HEX_LITERAL:
+            		case INTEGER_LITERAL:
+            		case INV_CONSTRAINT_TOK:
+            		case KEYWORD:
+            		case LPAREN_TOK:
+            		case NILREF_TOK:
+            		case QUOTED_SYMBOL:
+            		case REALLCHAR_TOK:
+            		case RENOSTR_TOK:
+            		case RPAREN_TOK:
+            		case SET_OPTIONS_TOK:
+            		case SIMPLE_SYMBOL:
+            		case STRING_LITERAL_2_0:
+            		case STRING_LITERAL_2_5:
+            		case SYNTH_FUN_TOK:
+            		case SYNTH_INV_TOK:
+            		case UNIVSET_TOK:
+            		case UNTERMINATED_QUOTED_SYMBOL:
+            		case 147:
+            			{
+            				alt48=8;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->state        = 4;
+
+
+            		    goto ruletermEx;
+
+            		}
+
+            	}
+                break;
+            case DECLARE_VAR_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case SYGUS_ENUM_CONS_TOK:
+            			{
+            				alt48=7;
+            			}
+            		    break;
+            		case EOF:
+            		case ATTRIBUTE_INST_LEVEL:
+            		case ATTRIBUTE_NAMED_TOK:
+            		case ATTRIBUTE_NO_PATTERN_TOK:
+            		case ATTRIBUTE_PATTERN_TOK:
+            		case ATTRIBUTE_RR_PRIORITY:
+            		case BINARY_LITERAL:
+            		case CHECK_SYNTH_TOK:
+            		case CONSTRAINT_TOK:
+            		case DECIMAL_LITERAL:
+            		case DECLARE_PRIMED_VAR_TOK:
+            		case DECLARE_VAR_TOK:
+            		case EMPTYSET_TOK:
+            		case FP_RNA_FULL_TOK:
+            		case FP_RNA_TOK:
+            		case FP_RNE_FULL_TOK:
+            		case FP_RNE_TOK:
+            		case FP_RTN_FULL_TOK:
+            		case FP_RTN_TOK:
+            		case FP_RTP_FULL_TOK:
+            		case FP_RTP_TOK:
+            		case FP_RTZ_FULL_TOK:
+            		case FP_RTZ_TOK:
+            		case HEX_LITERAL:
+            		case INTEGER_LITERAL:
+            		case INV_CONSTRAINT_TOK:
+            		case KEYWORD:
+            		case LPAREN_TOK:
+            		case NILREF_TOK:
+            		case QUOTED_SYMBOL:
+            		case REALLCHAR_TOK:
+            		case RENOSTR_TOK:
+            		case RPAREN_TOK:
+            		case SET_OPTIONS_TOK:
+            		case SIMPLE_SYMBOL:
+            		case STRING_LITERAL_2_0:
+            		case STRING_LITERAL_2_5:
+            		case SYNTH_FUN_TOK:
+            		case SYNTH_INV_TOK:
+            		case UNIVSET_TOK:
+            		case UNTERMINATED_QUOTED_SYMBOL:
+            		case 147:
+            			{
+            				alt48=8;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->state        = 5;
+
+
+            		    goto ruletermEx;
+
+            		}
+
+            	}
+                break;
+            case DECLARE_PRIMED_VAR_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case SYGUS_ENUM_CONS_TOK:
+            			{
+            				alt48=7;
+            			}
+            		    break;
+            		case EOF:
+            		case ATTRIBUTE_INST_LEVEL:
+            		case ATTRIBUTE_NAMED_TOK:
+            		case ATTRIBUTE_NO_PATTERN_TOK:
+            		case ATTRIBUTE_PATTERN_TOK:
+            		case ATTRIBUTE_RR_PRIORITY:
+            		case BINARY_LITERAL:
+            		case CHECK_SYNTH_TOK:
+            		case CONSTRAINT_TOK:
+            		case DECIMAL_LITERAL:
+            		case DECLARE_PRIMED_VAR_TOK:
+            		case DECLARE_VAR_TOK:
+            		case EMPTYSET_TOK:
+            		case FP_RNA_FULL_TOK:
+            		case FP_RNA_TOK:
+            		case FP_RNE_FULL_TOK:
+            		case FP_RNE_TOK:
+            		case FP_RTN_FULL_TOK:
+            		case FP_RTN_TOK:
+            		case FP_RTP_FULL_TOK:
+            		case FP_RTP_TOK:
+            		case FP_RTZ_FULL_TOK:
+            		case FP_RTZ_TOK:
+            		case HEX_LITERAL:
+            		case INTEGER_LITERAL:
+            		case INV_CONSTRAINT_TOK:
+            		case KEYWORD:
+            		case LPAREN_TOK:
+            		case NILREF_TOK:
+            		case QUOTED_SYMBOL:
+            		case REALLCHAR_TOK:
+            		case RENOSTR_TOK:
+            		case RPAREN_TOK:
+            		case SET_OPTIONS_TOK:
+            		case SIMPLE_SYMBOL:
+            		case STRING_LITERAL_2_0:
+            		case STRING_LITERAL_2_5:
+            		case SYNTH_FUN_TOK:
+            		case SYNTH_INV_TOK:
+            		case UNIVSET_TOK:
+            		case UNTERMINATED_QUOTED_SYMBOL:
+            		case 147:
+            			{
+            				alt48=8;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->state        = 6;
+
+
+            		    goto ruletermEx;
+
+            		}
+
+            	}
+                break;
+            case SYNTH_FUN_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case SYGUS_ENUM_CONS_TOK:
+            			{
+            				alt48=7;
+            			}
+            		    break;
+            		case EOF:
+            		case ATTRIBUTE_INST_LEVEL:
+            		case ATTRIBUTE_NAMED_TOK:
+            		case ATTRIBUTE_NO_PATTERN_TOK:
+            		case ATTRIBUTE_PATTERN_TOK:
+            		case ATTRIBUTE_RR_PRIORITY:
+            		case BINARY_LITERAL:
+            		case CHECK_SYNTH_TOK:
+            		case CONSTRAINT_TOK:
+            		case DECIMAL_LITERAL:
+            		case DECLARE_PRIMED_VAR_TOK:
+            		case DECLARE_VAR_TOK:
+            		case EMPTYSET_TOK:
+            		case FP_RNA_FULL_TOK:
+            		case FP_RNA_TOK:
+            		case FP_RNE_FULL_TOK:
+            		case FP_RNE_TOK:
+            		case FP_RTN_FULL_TOK:
+            		case FP_RTN_TOK:
+            		case FP_RTP_FULL_TOK:
+            		case FP_RTP_TOK:
+            		case FP_RTZ_FULL_TOK:
+            		case FP_RTZ_TOK:
+            		case HEX_LITERAL:
+            		case INTEGER_LITERAL:
+            		case INV_CONSTRAINT_TOK:
+            		case KEYWORD:
+            		case LPAREN_TOK:
+            		case NILREF_TOK:
+            		case QUOTED_SYMBOL:
+            		case REALLCHAR_TOK:
+            		case RENOSTR_TOK:
+            		case RPAREN_TOK:
+            		case SET_OPTIONS_TOK:
+            		case SIMPLE_SYMBOL:
+            		case STRING_LITERAL_2_0:
+            		case STRING_LITERAL_2_5:
+            		case SYNTH_FUN_TOK:
+            		case SYNTH_INV_TOK:
+            		case UNIVSET_TOK:
+            		case UNTERMINATED_QUOTED_SYMBOL:
+            		case 147:
+            			{
+            				alt48=8;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->state        = 7;
+
+
+            		    goto ruletermEx;
+
+            		}
+
+            	}
+                break;
+            case SYNTH_INV_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case SYGUS_ENUM_CONS_TOK:
+            			{
+            				alt48=7;
+            			}
+            		    break;
+            		case EOF:
+            		case ATTRIBUTE_INST_LEVEL:
+            		case ATTRIBUTE_NAMED_TOK:
+            		case ATTRIBUTE_NO_PATTERN_TOK:
+            		case ATTRIBUTE_PATTERN_TOK:
+            		case ATTRIBUTE_RR_PRIORITY:
+            		case BINARY_LITERAL:
+            		case CHECK_SYNTH_TOK:
+            		case CONSTRAINT_TOK:
+            		case DECIMAL_LITERAL:
+            		case DECLARE_PRIMED_VAR_TOK:
+            		case DECLARE_VAR_TOK:
+            		case EMPTYSET_TOK:
+            		case FP_RNA_FULL_TOK:
+            		case FP_RNA_TOK:
+            		case FP_RNE_FULL_TOK:
+            		case FP_RNE_TOK:
+            		case FP_RTN_FULL_TOK:
+            		case FP_RTN_TOK:
+            		case FP_RTP_FULL_TOK:
+            		case FP_RTP_TOK:
+            		case FP_RTZ_FULL_TOK:
+            		case FP_RTZ_TOK:
+            		case HEX_LITERAL:
+            		case INTEGER_LITERAL:
+            		case INV_CONSTRAINT_TOK:
+            		case KEYWORD:
+            		case LPAREN_TOK:
+            		case NILREF_TOK:
+            		case QUOTED_SYMBOL:
+            		case REALLCHAR_TOK:
+            		case RENOSTR_TOK:
+            		case RPAREN_TOK:
+            		case SET_OPTIONS_TOK:
+            		case SIMPLE_SYMBOL:
+            		case STRING_LITERAL_2_0:
+            		case STRING_LITERAL_2_5:
+            		case SYNTH_FUN_TOK:
+            		case SYNTH_INV_TOK:
+            		case UNIVSET_TOK:
+            		case UNTERMINATED_QUOTED_SYMBOL:
+            		case 147:
+            			{
+            				alt48=8;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->state        = 8;
+
+
+            		    goto ruletermEx;
+
+            		}
+
+            	}
+                break;
+            case CONSTRAINT_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case SYGUS_ENUM_CONS_TOK:
+            			{
+            				alt48=7;
+            			}
+            		    break;
+            		case EOF:
+            		case ATTRIBUTE_INST_LEVEL:
+            		case ATTRIBUTE_NAMED_TOK:
+            		case ATTRIBUTE_NO_PATTERN_TOK:
+            		case ATTRIBUTE_PATTERN_TOK:
+            		case ATTRIBUTE_RR_PRIORITY:
+            		case BINARY_LITERAL:
+            		case CHECK_SYNTH_TOK:
+            		case CONSTRAINT_TOK:
+            		case DECIMAL_LITERAL:
+            		case DECLARE_PRIMED_VAR_TOK:
+            		case DECLARE_VAR_TOK:
+            		case EMPTYSET_TOK:
+            		case FP_RNA_FULL_TOK:
+            		case FP_RNA_TOK:
+            		case FP_RNE_FULL_TOK:
+            		case FP_RNE_TOK:
+            		case FP_RTN_FULL_TOK:
+            		case FP_RTN_TOK:
+            		case FP_RTP_FULL_TOK:
+            		case FP_RTP_TOK:
+            		case FP_RTZ_FULL_TOK:
+            		case FP_RTZ_TOK:
+            		case HEX_LITERAL:
+            		case INTEGER_LITERAL:
+            		case INV_CONSTRAINT_TOK:
+            		case KEYWORD:
+            		case LPAREN_TOK:
+            		case NILREF_TOK:
+            		case QUOTED_SYMBOL:
+            		case REALLCHAR_TOK:
+            		case RENOSTR_TOK:
+            		case RPAREN_TOK:
+            		case SET_OPTIONS_TOK:
+            		case SIMPLE_SYMBOL:
+            		case STRING_LITERAL_2_0:
+            		case STRING_LITERAL_2_5:
+            		case SYNTH_FUN_TOK:
+            		case SYNTH_INV_TOK:
+            		case UNIVSET_TOK:
+            		case UNTERMINATED_QUOTED_SYMBOL:
+            		case 147:
+            			{
+            				alt48=8;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->state        = 9;
+
+
+            		    goto ruletermEx;
+
+            		}
+
+            	}
+                break;
+            case INV_CONSTRAINT_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case SYGUS_ENUM_CONS_TOK:
+            			{
+            				alt48=7;
+            			}
+            		    break;
+            		case EOF:
+            		case ATTRIBUTE_INST_LEVEL:
+            		case ATTRIBUTE_NAMED_TOK:
+            		case ATTRIBUTE_NO_PATTERN_TOK:
+            		case ATTRIBUTE_PATTERN_TOK:
+            		case ATTRIBUTE_RR_PRIORITY:
+            		case BINARY_LITERAL:
+            		case CHECK_SYNTH_TOK:
+            		case CONSTRAINT_TOK:
+            		case DECIMAL_LITERAL:
+            		case DECLARE_PRIMED_VAR_TOK:
+            		case DECLARE_VAR_TOK:
+            		case EMPTYSET_TOK:
+            		case FP_RNA_FULL_TOK:
+            		case FP_RNA_TOK:
+            		case FP_RNE_FULL_TOK:
+            		case FP_RNE_TOK:
+            		case FP_RTN_FULL_TOK:
+            		case FP_RTN_TOK:
+            		case FP_RTP_FULL_TOK:
+            		case FP_RTP_TOK:
+            		case FP_RTZ_FULL_TOK:
+            		case FP_RTZ_TOK:
+            		case HEX_LITERAL:
+            		case INTEGER_LITERAL:
+            		case INV_CONSTRAINT_TOK:
+            		case KEYWORD:
+            		case LPAREN_TOK:
+            		case NILREF_TOK:
+            		case QUOTED_SYMBOL:
+            		case REALLCHAR_TOK:
+            		case RENOSTR_TOK:
+            		case RPAREN_TOK:
+            		case SET_OPTIONS_TOK:
+            		case SIMPLE_SYMBOL:
+            		case STRING_LITERAL_2_0:
+            		case STRING_LITERAL_2_5:
+            		case SYNTH_FUN_TOK:
+            		case SYNTH_INV_TOK:
+            		case UNIVSET_TOK:
+            		case UNTERMINATED_QUOTED_SYMBOL:
+            		case 147:
+            			{
+            				alt48=8;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->state        = 10;
+
+
+            		    goto ruletermEx;
+
+            		}
+
+            	}
+                break;
+            case CHECK_SYNTH_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case SYGUS_ENUM_CONS_TOK:
+            			{
+            				alt48=7;
+            			}
+            		    break;
+            		case EOF:
+            		case ATTRIBUTE_INST_LEVEL:
+            		case ATTRIBUTE_NAMED_TOK:
+            		case ATTRIBUTE_NO_PATTERN_TOK:
+            		case ATTRIBUTE_PATTERN_TOK:
+            		case ATTRIBUTE_RR_PRIORITY:
+            		case BINARY_LITERAL:
+            		case CHECK_SYNTH_TOK:
+            		case CONSTRAINT_TOK:
+            		case DECIMAL_LITERAL:
+            		case DECLARE_PRIMED_VAR_TOK:
+            		case DECLARE_VAR_TOK:
+            		case EMPTYSET_TOK:
+            		case FP_RNA_FULL_TOK:
+            		case FP_RNA_TOK:
+            		case FP_RNE_FULL_TOK:
+            		case FP_RNE_TOK:
+            		case FP_RTN_FULL_TOK:
+            		case FP_RTN_TOK:
+            		case FP_RTP_FULL_TOK:
+            		case FP_RTP_TOK:
+            		case FP_RTZ_FULL_TOK:
+            		case FP_RTZ_TOK:
+            		case HEX_LITERAL:
+            		case INTEGER_LITERAL:
+            		case INV_CONSTRAINT_TOK:
+            		case KEYWORD:
+            		case LPAREN_TOK:
+            		case NILREF_TOK:
+            		case QUOTED_SYMBOL:
+            		case REALLCHAR_TOK:
+            		case RENOSTR_TOK:
+            		case RPAREN_TOK:
+            		case SET_OPTIONS_TOK:
+            		case SIMPLE_SYMBOL:
+            		case STRING_LITERAL_2_0:
+            		case STRING_LITERAL_2_5:
+            		case SYNTH_FUN_TOK:
+            		case SYNTH_INV_TOK:
+            		case UNIVSET_TOK:
+            		case UNTERMINATED_QUOTED_SYMBOL:
+            		case 147:
+            			{
+            				alt48=8;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->state        = 11;
+
+
+            		    goto ruletermEx;
+
+            		}
+
+            	}
+                break;
+            case QUOTED_SYMBOL:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case SYGUS_ENUM_CONS_TOK:
+            			{
+            				alt48=7;
+            			}
+            		    break;
+            		case EOF:
+            		case ATTRIBUTE_INST_LEVEL:
+            		case ATTRIBUTE_NAMED_TOK:
+            		case ATTRIBUTE_NO_PATTERN_TOK:
+            		case ATTRIBUTE_PATTERN_TOK:
+            		case ATTRIBUTE_RR_PRIORITY:
+            		case BINARY_LITERAL:
+            		case CHECK_SYNTH_TOK:
+            		case CONSTRAINT_TOK:
+            		case DECIMAL_LITERAL:
+            		case DECLARE_PRIMED_VAR_TOK:
+            		case DECLARE_VAR_TOK:
+            		case EMPTYSET_TOK:
+            		case FP_RNA_FULL_TOK:
+            		case FP_RNA_TOK:
+            		case FP_RNE_FULL_TOK:
+            		case FP_RNE_TOK:
+            		case FP_RTN_FULL_TOK:
+            		case FP_RTN_TOK:
+            		case FP_RTP_FULL_TOK:
+            		case FP_RTP_TOK:
+            		case FP_RTZ_FULL_TOK:
+            		case FP_RTZ_TOK:
+            		case HEX_LITERAL:
+            		case INTEGER_LITERAL:
+            		case INV_CONSTRAINT_TOK:
+            		case KEYWORD:
+            		case LPAREN_TOK:
+            		case NILREF_TOK:
+            		case QUOTED_SYMBOL:
+            		case REALLCHAR_TOK:
+            		case RENOSTR_TOK:
+            		case RPAREN_TOK:
+            		case SET_OPTIONS_TOK:
+            		case SIMPLE_SYMBOL:
+            		case STRING_LITERAL_2_0:
+            		case STRING_LITERAL_2_5:
+            		case SYNTH_FUN_TOK:
+            		case SYNTH_INV_TOK:
+            		case UNIVSET_TOK:
+            		case UNTERMINATED_QUOTED_SYMBOL:
+            		case 147:
+            			{
+            				alt48=8;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->state        = 12;
+
+
+            		    goto ruletermEx;
+
+            		}
+
+            	}
+                break;
+            case UNTERMINATED_QUOTED_SYMBOL:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case EOF:
+            			{
+            				alt48=7;
+            			}
+            		    break;
+            		case 145:
+            			{
+            				alt48=7;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->state        = 13;
+
+
+            		    goto ruletermEx;
+
+            		}
+
+            	}
+                break;
+            case INTEGER_LITERAL:
+            	{
+            		alt48=10;
+            	}
+                break;
+            case DECIMAL_LITERAL:
+            	{
+            		alt48=11;
+            	}
+                break;
+            case HEX_LITERAL:
+            	{
+            		alt48=13;
+            	}
+                break;
+            case BINARY_LITERAL:
+            	{
+            		alt48=14;
+            	}
+                break;
+            case STRING_LITERAL_2_0:
+            case STRING_LITERAL_2_5:
+            	{
+            		alt48=15;
+            	}
+                break;
+            case FP_RNE_TOK:
+            	{
+            		alt48=16;
+            	}
+                break;
+            case FP_RNA_TOK:
+            	{
+            		alt48=17;
+            	}
+                break;
+            case FP_RTP_TOK:
+            	{
+            		alt48=18;
+            	}
+                break;
+            case FP_RTN_TOK:
+            	{
+            		alt48=19;
+            	}
+                break;
+            case FP_RTZ_TOK:
+            	{
+            		alt48=20;
+            	}
+                break;
+            case FP_RNE_FULL_TOK:
+            	{
+            		alt48=21;
+            	}
+                break;
+            case FP_RNA_FULL_TOK:
+            	{
+            		alt48=22;
+            	}
+                break;
+            case FP_RTP_FULL_TOK:
+            	{
+            		alt48=23;
+            	}
+                break;
+            case FP_RTN_FULL_TOK:
+            	{
+            		alt48=24;
+            	}
+                break;
+            case FP_RTZ_FULL_TOK:
+            	{
+            		alt48=25;
+            	}
+                break;
+            case RENOSTR_TOK:
+            	{
+            		alt48=26;
+            	}
+                break;
+            case REALLCHAR_TOK:
+            	{
+            		alt48=27;
+            	}
+                break;
+            case EMPTYSET_TOK:
+            	{
+            		alt48=28;
+            	}
+                break;
+            case UNIVSET_TOK:
+            	{
+            		alt48=29;
+            	}
+                break;
+            case NILREF_TOK:
+            	{
+            		alt48=30;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 48;
+                EXCEPTION->state        = 0;
+
+
+                goto ruletermEx;
+
+            }
+
+            switch (alt48)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1735:5: LPAREN_TOK builtinOp[kind] termList[args,expr] RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3354);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_builtinOp_in_term3356);
+        	        builtinOp(ctx, kind);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_termList_in_term3359);
+        	        termList(ctx, args, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3362);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+
+        	                  if( !PARSER_STATE->strictModeEnabled() &&
+        	                      (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 be the only argument. */
+        	                    assert( expr == args[0] );
+        	                  } else if( CVC4::kind::isAssociative(kind) &&
+        	                             args.size() > EXPR_MANAGER->maxArity(kind) ) {
+        	                    /* Special treatment for associative operators with lots of children */
+        	                    expr = EXPR_MANAGER->mkAssociative(kind, args);
+        	                  } else if( kind == CVC4::kind::MINUS && args.size() == 1 ) {
+        	                    expr = MK_EXPR(CVC4::kind::UMINUS, args[0]);
+        	                  } else if( ( kind == CVC4::kind::XOR || kind == CVC4::kind::MINUS ) &&
+        	                             args.size() > 2 ) {
+        	                    /* left-associative, but CVC4 internally only supports 2 args */
+        	                    expr = args[0];
+        	                    for(size_t i = 1; i < args.size(); ++i) {
+        	                      expr = MK_EXPR(kind, expr, args[i]);
+        	                    }
+        	                  } else if( kind == CVC4::kind::IMPLIES && args.size() > 2 ) {
+        	                    /* right-associative, but CVC4 internally only supports 2 args */
+        	                    expr = args[args.size() - 1];
+        	                    for(size_t i = args.size() - 1; i > 0;) {
+        	                      expr = MK_EXPR(kind, args[--i], expr);
+        	                    }
+        	                  } else if( ( kind == CVC4::kind::EQUAL ||
+        	                               kind == CVC4::kind::LT || kind == CVC4::kind::GT ||
+        	                               kind == CVC4::kind::LEQ || kind == CVC4::kind::GEQ ) &&
+        	                             args.size() > 2 ) {
+        	                    /* "chainable", but CVC4 internally only supports 2 args */
+        	                    expr = MK_EXPR(MK_CONST(Chain(kind)), args);
+        	                  } else if( PARSER_STATE->strictModeEnabled() && kind == CVC4::kind::ABS &&
+        	                             args.size() == 1 && !args[0].getType().isInteger() ) {
+        	                    /* first, check that ABS is even defined in this logic */
+        	                    PARSER_STATE->checkOperator(kind, args.size());
+        	                    PARSER_STATE->parseError("abs can only be applied to Int, not Real, "
+        	                                             "while in strict SMT-LIB compliance mode");
+        	                  } else {
+        	                    PARSER_STATE->checkOperator(kind, args.size());
+        	                    expr = MK_EXPR(kind, args);
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1779:5: LPAREN_TOK AS_TOK term[f, f2] sortSymbol[type, CHECK_DECLARED] RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3374);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	         MATCHT(AS_TOK, &FOLLOW_AS_TOK_in_term3376);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_term3378);
+        	        term(ctx, f, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_term3381);
+        	        sortSymbol(ctx, type, CHECK_DECLARED);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3384);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+
+        	                  if(f.getKind() == CVC4::kind::APPLY_CONSTRUCTOR && type.isDatatype()) {
+        	                    std::vector<CVC4::Expr> v;
+        	                    Expr e = f.getOperator();
+        	                    const DatatypeConstructor& dtc =
+        	                        Datatype::datatypeOf(e)[Datatype::indexOf(e)];
+        	                    v.push_back(MK_EXPR( CVC4::kind::APPLY_TYPE_ASCRIPTION,
+        	                                         MK_CONST(AscriptionType(dtc.getSpecializedConstructorType(type))), f.getOperator() ));
+        	                    v.insert(v.end(), f.begin(), f.end());
+        	                    expr = MK_EXPR(CVC4::kind::APPLY_CONSTRUCTOR, v);
+        	                  } else if(f.getKind() == CVC4::kind::EMPTYSET) {
+        	                    Debug("parser") << "Empty set encountered: " << f << " "
+        	                                      << f2 << " " << type <<  std::endl;
+        	                    expr = MK_CONST( ::CVC4::EmptySet(type) );
+        	                  } else if(f.getKind() == CVC4::kind::UNIVERSE_SET) {
+        	                    expr = EXPR_MANAGER->mkUniqueVar(type, kind::UNIVERSE_SET);
+        	                  } else if(f.getKind() == CVC4::kind::SEP_NIL) {
+        	                    //We don't want the nil reference to be a constant: for instance, it
+        	                    //could be of type Int but is not a const rational. However, the
+        	                    //expression has 0 children. So we convert to a SEP_NIL variable.
+        	                    expr = EXPR_MANAGER->mkUniqueVar(type, kind::SEP_NIL);
+        	                  } else {
+        	                    if(f.getType() != type) {
+        	                      PARSER_STATE->parseError("Type ascription not satisfied.");
+        	                    }
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1807:5: LPAREN_TOK quantOp[kind] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK term[f, f2] RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3396);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_quantOp_in_term3398);
+        	        quantOp(ctx, kind);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3405);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_sortedVarList_in_term3407);
+        	        sortedVarList(ctx, sortedVarNames);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3410);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+
+        	                  PARSER_STATE->pushScope(true);
+        	                  for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+        	                        sortedVarNames.begin(), iend = sortedVarNames.end();
+        	                      i != iend;
+        	                      ++i) {
+        	                    args.push_back(PARSER_STATE->mkBoundVar((*i).first, (*i).second));
+        	                  }
+        	                  Expr bvl = MK_EXPR(kind::BOUND_VAR_LIST, args);
+        	                  args.clear();
+        	                  args.push_back(bvl);
+        	                
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_term3422);
+        	        term(ctx, f, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3425);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+
+        	                  PARSER_STATE->popScope();
+        	                  switch(f.getKind()) {
+        	                  case CVC4::kind::RR_REWRITE:
+        	                  case CVC4::kind::RR_REDUCTION:
+        	                  case CVC4::kind::RR_DEDUCTION:
+        	                    if(kind == CVC4::kind::EXISTS) {
+        	                      PARSER_STATE->parseError("Use Exists instead of Forall for a rewrite "
+        	                                               "rule.");
+        	                    }
+        	                    args.push_back(f2); // guards
+        	                    args.push_back(f); // rule
+        	                    expr = MK_EXPR(CVC4::kind::REWRITE_RULE, args);
+        	                    break;
+        	                  default:
+        	                    args.push_back(f);
+        	                    if(! f2.isNull()){
+        	                      args.push_back(f2);
+        	                    }
+        	                    expr = MK_EXPR(kind, args);
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1844:5: LPAREN_TOK functionName[name, CHECK_NONE] termList[args,expr] RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3437);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_functionName_in_term3439);
+        	        functionName(ctx, name, CHECK_NONE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             isBuiltinOperator = PARSER_STATE->isOperatorEnabled(name);
+        	                  if(isBuiltinOperator) {
+        	                    /* A built-in operator not already handled by the lexer */
+        	                    kind = PARSER_STATE->getOperatorKind(name);
+        	                  } else {
+        	                    /* A non-built-in function application */
+        	                    PARSER_STATE->checkDeclaration(name, CHECK_DECLARED, SYM_VARIABLE);
+        	                    //hack to allow constants with parentheses (disabled for now)
+        	                    //if( PARSER_STATE->sygus() && !PARSER_STATE->isFunctionLike(name) ){
+        	                    //  op = PARSER_STATE->getVariable(name);
+        	                    //}else{
+        	                    PARSER_STATE->checkFunctionLike(name);
+        	                    const bool isDefinedFunction =
+        	                      PARSER_STATE->isDefinedFunction(name);
+        	                    if(isDefinedFunction) {
+        	                      expr = PARSER_STATE->getFunction(name);
+        	                      kind = CVC4::kind::APPLY;
+        	                    } else {
+        	                      expr = PARSER_STATE->getVariable(name);
+        	                      Type t = expr.getType();
+        	                      if(t.isConstructor()) {
+        	                        kind = CVC4::kind::APPLY_CONSTRUCTOR;
+        	                      } else if(t.isSelector()) {
+        	                        kind = CVC4::kind::APPLY_SELECTOR;
+        	                      } else if(t.isTester()) {
+        	                        kind = CVC4::kind::APPLY_TESTER;
+        	                      } else {
+        	                        kind = CVC4::kind::APPLY_UF;
+        	                      }
+        	                    }
+        	                    args.push_back(expr);
+        	                  }
+        	                    
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_termList_in_term3457);
+        	        termList(ctx, args, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3460);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             Debug("parser") << "args has size " << args.size() << std::endl
+        	                                  << "expr is " << expr << std::endl;
+        	                  for(std::vector<Expr>::iterator i = args.begin(); i != args.end(); ++i) {
+        	                    Debug("parser") << "++ " << *i << std::endl;
+        	                  }
+        	                  if(isBuiltinOperator) {
+        	                    PARSER_STATE->checkOperator(kind, args.size());
+        	                  }
+        	                  expr = MK_EXPR(kind, args); 
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1891:5: LPAREN_TOK ( indexedFunctionName[op] termList[args,expr] RPAREN_TOK | LPAREN_TOK AS_TOK CONST_TOK sortSymbol[type, CHECK_DECLARED] RPAREN_TOK term[f, f2] RPAREN_TOK )
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3473);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:1892:5: ( indexedFunctionName[op] termList[args,expr] RPAREN_TOK | LPAREN_TOK AS_TOK CONST_TOK sortSymbol[type, CHECK_DECLARED] RPAREN_TOK term[f, f2] RPAREN_TOK )
+        	        {
+        	            int alt43=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case LPAREN_TOK:
+        	            	{
+        	            		switch ( LA(2) )
+        	            		{
+        	            		case INDEX_TOK:
+        	            			{
+        	            				alt43=1;
+        	            			}
+        	            		    break;
+        	            		case AS_TOK:
+        	            			{
+        	            				alt43=2;
+        	            			}
+        	            		    break;
+
+        	            		default:
+        	            		    CONSTRUCTEX();
+        	            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	            		    EXCEPTION->message      = (void *)"";
+        	            		    EXCEPTION->decisionNum  = 43;
+        	            		    EXCEPTION->state        = 1;
+
+
+        	            		    goto ruletermEx;
+
+        	            		}
+
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 43;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto ruletermEx;
+
+        	            }
+
+        	            switch (alt43)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1893:7: indexedFunctionName[op] termList[args,expr] RPAREN_TOK
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_indexedFunctionName_in_term3489);
+        	        	        indexedFunctionName(ctx, op);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_termList_in_term3492);
+        	        	        termList(ctx, args, expr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3495);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             expr = MK_EXPR(op, args);
+        	        	                    PARSER_STATE->checkOperator(expr.getKind(), args.size());
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1898:7: LPAREN_TOK AS_TOK CONST_TOK sortSymbol[type, CHECK_DECLARED] RPAREN_TOK term[f, f2] RPAREN_TOK
+        	        	    {
+        	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3519);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	         MATCHT(AS_TOK, &FOLLOW_AS_TOK_in_term3521);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	         MATCHT(CONST_TOK, &FOLLOW_CONST_TOK_in_term3523);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_term3525);
+        	        	        sortSymbol(ctx, type, CHECK_DECLARED);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3534);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_term_in_term3536);
+        	        	        term(ctx, f, f2);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3539);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	        {
+
+        	        	                    if(!type.isArray()) {
+        	        	                      std::stringstream ss;
+        	        	                      ss << "expected array constant term, but cast is not of array type"
+        	        	                         << std::endl
+        	        	                         << "cast type: " << type;
+        	        	                      PARSER_STATE->parseError(ss.str());
+        	        	                    }
+        	        	                    if(!f.isConst()) {
+        	        	                      std::stringstream ss;
+        	        	                      ss << "expected constant term inside array constant, but found "
+        	        	                         << "nonconstant term:" << std::endl
+        	        	                         << "the term: " << f;
+        	        	                      PARSER_STATE->parseError(ss.str());
+        	        	                    }
+        	        	                    if(!ArrayType(type).getConstituentType().isComparableTo(f.getType())) {
+        	        	                      std::stringstream ss;
+        	        	                      ss << "type mismatch inside array constant term:" << std::endl
+        	        	                         << "array type:          " << type << std::endl
+        	        	                         << "expected const type: " << ArrayType(type).getConstituentType()
+        	        	                         << std::endl
+        	        	                         << "computed const type: " << f.getType();
+        	        	                      PARSER_STATE->parseError(ss.str());
+        	        	                    }
+        	        	                    expr = MK_CONST( ::CVC4::ArrayStoreAll(type, f) );
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1928:5: LPAREN_TOK LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] ( term[expr, f2] | sortSymbol[type,CHECK_DECLARED] term[expr, f2] ) RPAREN_TOK )+ RPAREN_TOK term[expr, f2] RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3565);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	         MATCHT(LET_TOK, &FOLLOW_LET_TOK_in_term3567);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3569);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->pushScope(true); 
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:1930:5: ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] ( term[expr, f2] | sortSymbol[type,CHECK_DECLARED] term[expr, f2] ) RPAREN_TOK )+
+        	        {
+        	            int cnt45=0;
+
+        	            for (;;)
+        	            {
+        	                int alt45=2;
+        	        	switch ( LA(1) )
+        	        	{
+        	        	case LPAREN_TOK:
+        	        		{
+        	        			alt45=1;
+        	        		}
+        	        	    break;
+
+        	        	}
+
+        	        	switch (alt45)
+        	        	{
+        	        	    case 1:
+        	        	        // ../../../../../../src/parser/smt2/Smt2.g:1930:7: LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] ( term[expr, f2] | sortSymbol[type,CHECK_DECLARED] term[expr, f2] ) RPAREN_TOK
+        	        	        {
+        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3583);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruletermEx;
+        	        	            }
+
+
+        	        	            FOLLOWPUSH(FOLLOW_symbol_in_term3585);
+        	        	            symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruletermEx;
+        	        	            }
+
+
+        	        	            // ../../../../../../src/parser/smt2/Smt2.g:1931:7: ( term[expr, f2] | sortSymbol[type,CHECK_DECLARED] term[expr, f2] )
+        	        	            {
+        	        	                int alt44=2;
+        	        	                switch ( LA(1) )
+        	        	                {
+        	        	                case LPAREN_TOK:
+        	        	                	{
+        	        	                		switch ( LA(2) )
+        	        	                		{
+        	        	                		case AND_TOK:
+        	        	                		case AS_TOK:
+        	        	                		case ATTRIBUTE_TOK:
+        	        	                		case BV2NAT_TOK:
+        	        	                		case DISTINCT_TOK:
+        	        	                		case DIV_TOK:
+        	        	                		case DTSIZE_TOK:
+        	        	                		case EQUAL_TOK:
+        	        	                		case EXISTS_TOK:
+        	        	                		case FMFCARDVAL_TOK:
+        	        	                		case FMFCARD_TOK:
+        	        	                		case FORALL_TOK:
+        	        	                		case GREATER_THAN_EQUAL_TOK:
+        	        	                		case GREATER_THAN_TOK:
+        	        	                		case IMPLIES_TOK:
+        	        	                		case INST_CLOSURE_TOK:
+        	        	                		case ITE_TOK:
+        	        	                		case LESS_THAN_EQUAL_TOK:
+        	        	                		case LESS_THAN_TOK:
+        	        	                		case LET_TOK:
+        	        	                		case LPAREN_TOK:
+        	        	                		case MINUS_TOK:
+        	        	                		case NOT_TOK:
+        	        	                		case OR_TOK:
+        	        	                		case PLUS_TOK:
+        	        	                		case STAR_TOK:
+        	        	                		case XOR_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case INDEX_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case SIMPLE_SYMBOL:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case 147:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case SET_OPTIONS_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case DECLARE_VAR_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case DECLARE_PRIMED_VAR_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case SYNTH_FUN_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case SYNTH_INV_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case CONSTRAINT_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case INV_CONSTRAINT_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case CHECK_SYNTH_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case QUOTED_SYMBOL:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case UNTERMINATED_QUOTED_SYMBOL:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+
+        	        	                		default:
+        	        	                		    CONSTRUCTEX();
+        	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                		    EXCEPTION->message      = (void *)"";
+        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->state        = 1;
+
+
+        	        	                		    goto ruletermEx;
+
+        	        	                		}
+
+        	        	                	}
+        	        	                    break;
+        	        	                case SIMPLE_SYMBOL:
+        	        	                	{
+        	        	                		switch ( LA(2) )
+        	        	                		{
+        	        	                		case RPAREN_TOK:
+        	        	                		case SYGUS_ENUM_CONS_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case BINARY_LITERAL:
+        	        	                		case CHECK_SYNTH_TOK:
+        	        	                		case CONSTRAINT_TOK:
+        	        	                		case DECIMAL_LITERAL:
+        	        	                		case DECLARE_PRIMED_VAR_TOK:
+        	        	                		case DECLARE_VAR_TOK:
+        	        	                		case EMPTYSET_TOK:
+        	        	                		case FP_RNA_FULL_TOK:
+        	        	                		case FP_RNA_TOK:
+        	        	                		case FP_RNE_FULL_TOK:
+        	        	                		case FP_RNE_TOK:
+        	        	                		case FP_RTN_FULL_TOK:
+        	        	                		case FP_RTN_TOK:
+        	        	                		case FP_RTP_FULL_TOK:
+        	        	                		case FP_RTP_TOK:
+        	        	                		case FP_RTZ_FULL_TOK:
+        	        	                		case FP_RTZ_TOK:
+        	        	                		case HEX_LITERAL:
+        	        	                		case INTEGER_LITERAL:
+        	        	                		case INV_CONSTRAINT_TOK:
+        	        	                		case LPAREN_TOK:
+        	        	                		case NILREF_TOK:
+        	        	                		case QUOTED_SYMBOL:
+        	        	                		case REALLCHAR_TOK:
+        	        	                		case RENOSTR_TOK:
+        	        	                		case SET_OPTIONS_TOK:
+        	        	                		case SIMPLE_SYMBOL:
+        	        	                		case STRING_LITERAL_2_0:
+        	        	                		case STRING_LITERAL_2_5:
+        	        	                		case SYNTH_FUN_TOK:
+        	        	                		case SYNTH_INV_TOK:
+        	        	                		case UNIVSET_TOK:
+        	        	                		case UNTERMINATED_QUOTED_SYMBOL:
+        	        	                		case 147:
+        	        	                			{
+        	        	                				alt44=2;
+        	        	                			}
+        	        	                		    break;
+
+        	        	                		default:
+        	        	                		    CONSTRUCTEX();
+        	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                		    EXCEPTION->message      = (void *)"";
+        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->state        = 2;
+
+
+        	        	                		    goto ruletermEx;
+
+        	        	                		}
+
+        	        	                	}
+        	        	                    break;
+        	        	                case 147:
+        	        	                	{
+        	        	                		switch ( LA(2) )
+        	        	                		{
+        	        	                		case RPAREN_TOK:
+        	        	                		case SYGUS_ENUM_CONS_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case BINARY_LITERAL:
+        	        	                		case CHECK_SYNTH_TOK:
+        	        	                		case CONSTRAINT_TOK:
+        	        	                		case DECIMAL_LITERAL:
+        	        	                		case DECLARE_PRIMED_VAR_TOK:
+        	        	                		case DECLARE_VAR_TOK:
+        	        	                		case EMPTYSET_TOK:
+        	        	                		case FP_RNA_FULL_TOK:
+        	        	                		case FP_RNA_TOK:
+        	        	                		case FP_RNE_FULL_TOK:
+        	        	                		case FP_RNE_TOK:
+        	        	                		case FP_RTN_FULL_TOK:
+        	        	                		case FP_RTN_TOK:
+        	        	                		case FP_RTP_FULL_TOK:
+        	        	                		case FP_RTP_TOK:
+        	        	                		case FP_RTZ_FULL_TOK:
+        	        	                		case FP_RTZ_TOK:
+        	        	                		case HEX_LITERAL:
+        	        	                		case INTEGER_LITERAL:
+        	        	                		case INV_CONSTRAINT_TOK:
+        	        	                		case LPAREN_TOK:
+        	        	                		case NILREF_TOK:
+        	        	                		case QUOTED_SYMBOL:
+        	        	                		case REALLCHAR_TOK:
+        	        	                		case RENOSTR_TOK:
+        	        	                		case SET_OPTIONS_TOK:
+        	        	                		case SIMPLE_SYMBOL:
+        	        	                		case STRING_LITERAL_2_0:
+        	        	                		case STRING_LITERAL_2_5:
+        	        	                		case SYNTH_FUN_TOK:
+        	        	                		case SYNTH_INV_TOK:
+        	        	                		case UNIVSET_TOK:
+        	        	                		case UNTERMINATED_QUOTED_SYMBOL:
+        	        	                		case 147:
+        	        	                			{
+        	        	                				alt44=2;
+        	        	                			}
+        	        	                		    break;
+
+        	        	                		default:
+        	        	                		    CONSTRUCTEX();
+        	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                		    EXCEPTION->message      = (void *)"";
+        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->state        = 3;
+
+
+        	        	                		    goto ruletermEx;
+
+        	        	                		}
+
+        	        	                	}
+        	        	                    break;
+        	        	                case SET_OPTIONS_TOK:
+        	        	                	{
+        	        	                		switch ( LA(2) )
+        	        	                		{
+        	        	                		case RPAREN_TOK:
+        	        	                		case SYGUS_ENUM_CONS_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case BINARY_LITERAL:
+        	        	                		case CHECK_SYNTH_TOK:
+        	        	                		case CONSTRAINT_TOK:
+        	        	                		case DECIMAL_LITERAL:
+        	        	                		case DECLARE_PRIMED_VAR_TOK:
+        	        	                		case DECLARE_VAR_TOK:
+        	        	                		case EMPTYSET_TOK:
+        	        	                		case FP_RNA_FULL_TOK:
+        	        	                		case FP_RNA_TOK:
+        	        	                		case FP_RNE_FULL_TOK:
+        	        	                		case FP_RNE_TOK:
+        	        	                		case FP_RTN_FULL_TOK:
+        	        	                		case FP_RTN_TOK:
+        	        	                		case FP_RTP_FULL_TOK:
+        	        	                		case FP_RTP_TOK:
+        	        	                		case FP_RTZ_FULL_TOK:
+        	        	                		case FP_RTZ_TOK:
+        	        	                		case HEX_LITERAL:
+        	        	                		case INTEGER_LITERAL:
+        	        	                		case INV_CONSTRAINT_TOK:
+        	        	                		case LPAREN_TOK:
+        	        	                		case NILREF_TOK:
+        	        	                		case QUOTED_SYMBOL:
+        	        	                		case REALLCHAR_TOK:
+        	        	                		case RENOSTR_TOK:
+        	        	                		case SET_OPTIONS_TOK:
+        	        	                		case SIMPLE_SYMBOL:
+        	        	                		case STRING_LITERAL_2_0:
+        	        	                		case STRING_LITERAL_2_5:
+        	        	                		case SYNTH_FUN_TOK:
+        	        	                		case SYNTH_INV_TOK:
+        	        	                		case UNIVSET_TOK:
+        	        	                		case UNTERMINATED_QUOTED_SYMBOL:
+        	        	                		case 147:
+        	        	                			{
+        	        	                				alt44=2;
+        	        	                			}
+        	        	                		    break;
+
+        	        	                		default:
+        	        	                		    CONSTRUCTEX();
+        	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                		    EXCEPTION->message      = (void *)"";
+        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->state        = 4;
+
+
+        	        	                		    goto ruletermEx;
+
+        	        	                		}
+
+        	        	                	}
+        	        	                    break;
+        	        	                case DECLARE_VAR_TOK:
+        	        	                	{
+        	        	                		switch ( LA(2) )
+        	        	                		{
+        	        	                		case RPAREN_TOK:
+        	        	                		case SYGUS_ENUM_CONS_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case BINARY_LITERAL:
+        	        	                		case CHECK_SYNTH_TOK:
+        	        	                		case CONSTRAINT_TOK:
+        	        	                		case DECIMAL_LITERAL:
+        	        	                		case DECLARE_PRIMED_VAR_TOK:
+        	        	                		case DECLARE_VAR_TOK:
+        	        	                		case EMPTYSET_TOK:
+        	        	                		case FP_RNA_FULL_TOK:
+        	        	                		case FP_RNA_TOK:
+        	        	                		case FP_RNE_FULL_TOK:
+        	        	                		case FP_RNE_TOK:
+        	        	                		case FP_RTN_FULL_TOK:
+        	        	                		case FP_RTN_TOK:
+        	        	                		case FP_RTP_FULL_TOK:
+        	        	                		case FP_RTP_TOK:
+        	        	                		case FP_RTZ_FULL_TOK:
+        	        	                		case FP_RTZ_TOK:
+        	        	                		case HEX_LITERAL:
+        	        	                		case INTEGER_LITERAL:
+        	        	                		case INV_CONSTRAINT_TOK:
+        	        	                		case LPAREN_TOK:
+        	        	                		case NILREF_TOK:
+        	        	                		case QUOTED_SYMBOL:
+        	        	                		case REALLCHAR_TOK:
+        	        	                		case RENOSTR_TOK:
+        	        	                		case SET_OPTIONS_TOK:
+        	        	                		case SIMPLE_SYMBOL:
+        	        	                		case STRING_LITERAL_2_0:
+        	        	                		case STRING_LITERAL_2_5:
+        	        	                		case SYNTH_FUN_TOK:
+        	        	                		case SYNTH_INV_TOK:
+        	        	                		case UNIVSET_TOK:
+        	        	                		case UNTERMINATED_QUOTED_SYMBOL:
+        	        	                		case 147:
+        	        	                			{
+        	        	                				alt44=2;
+        	        	                			}
+        	        	                		    break;
+
+        	        	                		default:
+        	        	                		    CONSTRUCTEX();
+        	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                		    EXCEPTION->message      = (void *)"";
+        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->state        = 5;
+
+
+        	        	                		    goto ruletermEx;
+
+        	        	                		}
+
+        	        	                	}
+        	        	                    break;
+        	        	                case DECLARE_PRIMED_VAR_TOK:
+        	        	                	{
+        	        	                		switch ( LA(2) )
+        	        	                		{
+        	        	                		case RPAREN_TOK:
+        	        	                		case SYGUS_ENUM_CONS_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case BINARY_LITERAL:
+        	        	                		case CHECK_SYNTH_TOK:
+        	        	                		case CONSTRAINT_TOK:
+        	        	                		case DECIMAL_LITERAL:
+        	        	                		case DECLARE_PRIMED_VAR_TOK:
+        	        	                		case DECLARE_VAR_TOK:
+        	        	                		case EMPTYSET_TOK:
+        	        	                		case FP_RNA_FULL_TOK:
+        	        	                		case FP_RNA_TOK:
+        	        	                		case FP_RNE_FULL_TOK:
+        	        	                		case FP_RNE_TOK:
+        	        	                		case FP_RTN_FULL_TOK:
+        	        	                		case FP_RTN_TOK:
+        	        	                		case FP_RTP_FULL_TOK:
+        	        	                		case FP_RTP_TOK:
+        	        	                		case FP_RTZ_FULL_TOK:
+        	        	                		case FP_RTZ_TOK:
+        	        	                		case HEX_LITERAL:
+        	        	                		case INTEGER_LITERAL:
+        	        	                		case INV_CONSTRAINT_TOK:
+        	        	                		case LPAREN_TOK:
+        	        	                		case NILREF_TOK:
+        	        	                		case QUOTED_SYMBOL:
+        	        	                		case REALLCHAR_TOK:
+        	        	                		case RENOSTR_TOK:
+        	        	                		case SET_OPTIONS_TOK:
+        	        	                		case SIMPLE_SYMBOL:
+        	        	                		case STRING_LITERAL_2_0:
+        	        	                		case STRING_LITERAL_2_5:
+        	        	                		case SYNTH_FUN_TOK:
+        	        	                		case SYNTH_INV_TOK:
+        	        	                		case UNIVSET_TOK:
+        	        	                		case UNTERMINATED_QUOTED_SYMBOL:
+        	        	                		case 147:
+        	        	                			{
+        	        	                				alt44=2;
+        	        	                			}
+        	        	                		    break;
+
+        	        	                		default:
+        	        	                		    CONSTRUCTEX();
+        	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                		    EXCEPTION->message      = (void *)"";
+        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->state        = 6;
+
+
+        	        	                		    goto ruletermEx;
+
+        	        	                		}
+
+        	        	                	}
+        	        	                    break;
+        	        	                case SYNTH_FUN_TOK:
+        	        	                	{
+        	        	                		switch ( LA(2) )
+        	        	                		{
+        	        	                		case RPAREN_TOK:
+        	        	                		case SYGUS_ENUM_CONS_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case BINARY_LITERAL:
+        	        	                		case CHECK_SYNTH_TOK:
+        	        	                		case CONSTRAINT_TOK:
+        	        	                		case DECIMAL_LITERAL:
+        	        	                		case DECLARE_PRIMED_VAR_TOK:
+        	        	                		case DECLARE_VAR_TOK:
+        	        	                		case EMPTYSET_TOK:
+        	        	                		case FP_RNA_FULL_TOK:
+        	        	                		case FP_RNA_TOK:
+        	        	                		case FP_RNE_FULL_TOK:
+        	        	                		case FP_RNE_TOK:
+        	        	                		case FP_RTN_FULL_TOK:
+        	        	                		case FP_RTN_TOK:
+        	        	                		case FP_RTP_FULL_TOK:
+        	        	                		case FP_RTP_TOK:
+        	        	                		case FP_RTZ_FULL_TOK:
+        	        	                		case FP_RTZ_TOK:
+        	        	                		case HEX_LITERAL:
+        	        	                		case INTEGER_LITERAL:
+        	        	                		case INV_CONSTRAINT_TOK:
+        	        	                		case LPAREN_TOK:
+        	        	                		case NILREF_TOK:
+        	        	                		case QUOTED_SYMBOL:
+        	        	                		case REALLCHAR_TOK:
+        	        	                		case RENOSTR_TOK:
+        	        	                		case SET_OPTIONS_TOK:
+        	        	                		case SIMPLE_SYMBOL:
+        	        	                		case STRING_LITERAL_2_0:
+        	        	                		case STRING_LITERAL_2_5:
+        	        	                		case SYNTH_FUN_TOK:
+        	        	                		case SYNTH_INV_TOK:
+        	        	                		case UNIVSET_TOK:
+        	        	                		case UNTERMINATED_QUOTED_SYMBOL:
+        	        	                		case 147:
+        	        	                			{
+        	        	                				alt44=2;
+        	        	                			}
+        	        	                		    break;
+
+        	        	                		default:
+        	        	                		    CONSTRUCTEX();
+        	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                		    EXCEPTION->message      = (void *)"";
+        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->state        = 7;
+
+
+        	        	                		    goto ruletermEx;
+
+        	        	                		}
+
+        	        	                	}
+        	        	                    break;
+        	        	                case SYNTH_INV_TOK:
+        	        	                	{
+        	        	                		switch ( LA(2) )
+        	        	                		{
+        	        	                		case RPAREN_TOK:
+        	        	                		case SYGUS_ENUM_CONS_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case BINARY_LITERAL:
+        	        	                		case CHECK_SYNTH_TOK:
+        	        	                		case CONSTRAINT_TOK:
+        	        	                		case DECIMAL_LITERAL:
+        	        	                		case DECLARE_PRIMED_VAR_TOK:
+        	        	                		case DECLARE_VAR_TOK:
+        	        	                		case EMPTYSET_TOK:
+        	        	                		case FP_RNA_FULL_TOK:
+        	        	                		case FP_RNA_TOK:
+        	        	                		case FP_RNE_FULL_TOK:
+        	        	                		case FP_RNE_TOK:
+        	        	                		case FP_RTN_FULL_TOK:
+        	        	                		case FP_RTN_TOK:
+        	        	                		case FP_RTP_FULL_TOK:
+        	        	                		case FP_RTP_TOK:
+        	        	                		case FP_RTZ_FULL_TOK:
+        	        	                		case FP_RTZ_TOK:
+        	        	                		case HEX_LITERAL:
+        	        	                		case INTEGER_LITERAL:
+        	        	                		case INV_CONSTRAINT_TOK:
+        	        	                		case LPAREN_TOK:
+        	        	                		case NILREF_TOK:
+        	        	                		case QUOTED_SYMBOL:
+        	        	                		case REALLCHAR_TOK:
+        	        	                		case RENOSTR_TOK:
+        	        	                		case SET_OPTIONS_TOK:
+        	        	                		case SIMPLE_SYMBOL:
+        	        	                		case STRING_LITERAL_2_0:
+        	        	                		case STRING_LITERAL_2_5:
+        	        	                		case SYNTH_FUN_TOK:
+        	        	                		case SYNTH_INV_TOK:
+        	        	                		case UNIVSET_TOK:
+        	        	                		case UNTERMINATED_QUOTED_SYMBOL:
+        	        	                		case 147:
+        	        	                			{
+        	        	                				alt44=2;
+        	        	                			}
+        	        	                		    break;
+
+        	        	                		default:
+        	        	                		    CONSTRUCTEX();
+        	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                		    EXCEPTION->message      = (void *)"";
+        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->state        = 8;
+
+
+        	        	                		    goto ruletermEx;
+
+        	        	                		}
+
+        	        	                	}
+        	        	                    break;
+        	        	                case CONSTRAINT_TOK:
+        	        	                	{
+        	        	                		switch ( LA(2) )
+        	        	                		{
+        	        	                		case RPAREN_TOK:
+        	        	                		case SYGUS_ENUM_CONS_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case BINARY_LITERAL:
+        	        	                		case CHECK_SYNTH_TOK:
+        	        	                		case CONSTRAINT_TOK:
+        	        	                		case DECIMAL_LITERAL:
+        	        	                		case DECLARE_PRIMED_VAR_TOK:
+        	        	                		case DECLARE_VAR_TOK:
+        	        	                		case EMPTYSET_TOK:
+        	        	                		case FP_RNA_FULL_TOK:
+        	        	                		case FP_RNA_TOK:
+        	        	                		case FP_RNE_FULL_TOK:
+        	        	                		case FP_RNE_TOK:
+        	        	                		case FP_RTN_FULL_TOK:
+        	        	                		case FP_RTN_TOK:
+        	        	                		case FP_RTP_FULL_TOK:
+        	        	                		case FP_RTP_TOK:
+        	        	                		case FP_RTZ_FULL_TOK:
+        	        	                		case FP_RTZ_TOK:
+        	        	                		case HEX_LITERAL:
+        	        	                		case INTEGER_LITERAL:
+        	        	                		case INV_CONSTRAINT_TOK:
+        	        	                		case LPAREN_TOK:
+        	        	                		case NILREF_TOK:
+        	        	                		case QUOTED_SYMBOL:
+        	        	                		case REALLCHAR_TOK:
+        	        	                		case RENOSTR_TOK:
+        	        	                		case SET_OPTIONS_TOK:
+        	        	                		case SIMPLE_SYMBOL:
+        	        	                		case STRING_LITERAL_2_0:
+        	        	                		case STRING_LITERAL_2_5:
+        	        	                		case SYNTH_FUN_TOK:
+        	        	                		case SYNTH_INV_TOK:
+        	        	                		case UNIVSET_TOK:
+        	        	                		case UNTERMINATED_QUOTED_SYMBOL:
+        	        	                		case 147:
+        	        	                			{
+        	        	                				alt44=2;
+        	        	                			}
+        	        	                		    break;
+
+        	        	                		default:
+        	        	                		    CONSTRUCTEX();
+        	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                		    EXCEPTION->message      = (void *)"";
+        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->state        = 9;
+
+
+        	        	                		    goto ruletermEx;
+
+        	        	                		}
+
+        	        	                	}
+        	        	                    break;
+        	        	                case INV_CONSTRAINT_TOK:
+        	        	                	{
+        	        	                		switch ( LA(2) )
+        	        	                		{
+        	        	                		case RPAREN_TOK:
+        	        	                		case SYGUS_ENUM_CONS_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case BINARY_LITERAL:
+        	        	                		case CHECK_SYNTH_TOK:
+        	        	                		case CONSTRAINT_TOK:
+        	        	                		case DECIMAL_LITERAL:
+        	        	                		case DECLARE_PRIMED_VAR_TOK:
+        	        	                		case DECLARE_VAR_TOK:
+        	        	                		case EMPTYSET_TOK:
+        	        	                		case FP_RNA_FULL_TOK:
+        	        	                		case FP_RNA_TOK:
+        	        	                		case FP_RNE_FULL_TOK:
+        	        	                		case FP_RNE_TOK:
+        	        	                		case FP_RTN_FULL_TOK:
+        	        	                		case FP_RTN_TOK:
+        	        	                		case FP_RTP_FULL_TOK:
+        	        	                		case FP_RTP_TOK:
+        	        	                		case FP_RTZ_FULL_TOK:
+        	        	                		case FP_RTZ_TOK:
+        	        	                		case HEX_LITERAL:
+        	        	                		case INTEGER_LITERAL:
+        	        	                		case INV_CONSTRAINT_TOK:
+        	        	                		case LPAREN_TOK:
+        	        	                		case NILREF_TOK:
+        	        	                		case QUOTED_SYMBOL:
+        	        	                		case REALLCHAR_TOK:
+        	        	                		case RENOSTR_TOK:
+        	        	                		case SET_OPTIONS_TOK:
+        	        	                		case SIMPLE_SYMBOL:
+        	        	                		case STRING_LITERAL_2_0:
+        	        	                		case STRING_LITERAL_2_5:
+        	        	                		case SYNTH_FUN_TOK:
+        	        	                		case SYNTH_INV_TOK:
+        	        	                		case UNIVSET_TOK:
+        	        	                		case UNTERMINATED_QUOTED_SYMBOL:
+        	        	                		case 147:
+        	        	                			{
+        	        	                				alt44=2;
+        	        	                			}
+        	        	                		    break;
+
+        	        	                		default:
+        	        	                		    CONSTRUCTEX();
+        	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                		    EXCEPTION->message      = (void *)"";
+        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->state        = 10;
+
+
+        	        	                		    goto ruletermEx;
+
+        	        	                		}
+
+        	        	                	}
+        	        	                    break;
+        	        	                case CHECK_SYNTH_TOK:
+        	        	                	{
+        	        	                		switch ( LA(2) )
+        	        	                		{
+        	        	                		case RPAREN_TOK:
+        	        	                		case SYGUS_ENUM_CONS_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case BINARY_LITERAL:
+        	        	                		case CHECK_SYNTH_TOK:
+        	        	                		case CONSTRAINT_TOK:
+        	        	                		case DECIMAL_LITERAL:
+        	        	                		case DECLARE_PRIMED_VAR_TOK:
+        	        	                		case DECLARE_VAR_TOK:
+        	        	                		case EMPTYSET_TOK:
+        	        	                		case FP_RNA_FULL_TOK:
+        	        	                		case FP_RNA_TOK:
+        	        	                		case FP_RNE_FULL_TOK:
+        	        	                		case FP_RNE_TOK:
+        	        	                		case FP_RTN_FULL_TOK:
+        	        	                		case FP_RTN_TOK:
+        	        	                		case FP_RTP_FULL_TOK:
+        	        	                		case FP_RTP_TOK:
+        	        	                		case FP_RTZ_FULL_TOK:
+        	        	                		case FP_RTZ_TOK:
+        	        	                		case HEX_LITERAL:
+        	        	                		case INTEGER_LITERAL:
+        	        	                		case INV_CONSTRAINT_TOK:
+        	        	                		case LPAREN_TOK:
+        	        	                		case NILREF_TOK:
+        	        	                		case QUOTED_SYMBOL:
+        	        	                		case REALLCHAR_TOK:
+        	        	                		case RENOSTR_TOK:
+        	        	                		case SET_OPTIONS_TOK:
+        	        	                		case SIMPLE_SYMBOL:
+        	        	                		case STRING_LITERAL_2_0:
+        	        	                		case STRING_LITERAL_2_5:
+        	        	                		case SYNTH_FUN_TOK:
+        	        	                		case SYNTH_INV_TOK:
+        	        	                		case UNIVSET_TOK:
+        	        	                		case UNTERMINATED_QUOTED_SYMBOL:
+        	        	                		case 147:
+        	        	                			{
+        	        	                				alt44=2;
+        	        	                			}
+        	        	                		    break;
+
+        	        	                		default:
+        	        	                		    CONSTRUCTEX();
+        	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                		    EXCEPTION->message      = (void *)"";
+        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->state        = 11;
+
+
+        	        	                		    goto ruletermEx;
+
+        	        	                		}
+
+        	        	                	}
+        	        	                    break;
+        	        	                case QUOTED_SYMBOL:
+        	        	                	{
+        	        	                		switch ( LA(2) )
+        	        	                		{
+        	        	                		case RPAREN_TOK:
+        	        	                		case SYGUS_ENUM_CONS_TOK:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case BINARY_LITERAL:
+        	        	                		case CHECK_SYNTH_TOK:
+        	        	                		case CONSTRAINT_TOK:
+        	        	                		case DECIMAL_LITERAL:
+        	        	                		case DECLARE_PRIMED_VAR_TOK:
+        	        	                		case DECLARE_VAR_TOK:
+        	        	                		case EMPTYSET_TOK:
+        	        	                		case FP_RNA_FULL_TOK:
+        	        	                		case FP_RNA_TOK:
+        	        	                		case FP_RNE_FULL_TOK:
+        	        	                		case FP_RNE_TOK:
+        	        	                		case FP_RTN_FULL_TOK:
+        	        	                		case FP_RTN_TOK:
+        	        	                		case FP_RTP_FULL_TOK:
+        	        	                		case FP_RTP_TOK:
+        	        	                		case FP_RTZ_FULL_TOK:
+        	        	                		case FP_RTZ_TOK:
+        	        	                		case HEX_LITERAL:
+        	        	                		case INTEGER_LITERAL:
+        	        	                		case INV_CONSTRAINT_TOK:
+        	        	                		case LPAREN_TOK:
+        	        	                		case NILREF_TOK:
+        	        	                		case QUOTED_SYMBOL:
+        	        	                		case REALLCHAR_TOK:
+        	        	                		case RENOSTR_TOK:
+        	        	                		case SET_OPTIONS_TOK:
+        	        	                		case SIMPLE_SYMBOL:
+        	        	                		case STRING_LITERAL_2_0:
+        	        	                		case STRING_LITERAL_2_5:
+        	        	                		case SYNTH_FUN_TOK:
+        	        	                		case SYNTH_INV_TOK:
+        	        	                		case UNIVSET_TOK:
+        	        	                		case UNTERMINATED_QUOTED_SYMBOL:
+        	        	                		case 147:
+        	        	                			{
+        	        	                				alt44=2;
+        	        	                			}
+        	        	                		    break;
+
+        	        	                		default:
+        	        	                		    CONSTRUCTEX();
+        	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                		    EXCEPTION->message      = (void *)"";
+        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->state        = 12;
+
+
+        	        	                		    goto ruletermEx;
+
+        	        	                		}
+
+        	        	                	}
+        	        	                    break;
+        	        	                case UNTERMINATED_QUOTED_SYMBOL:
+        	        	                	{
+        	        	                		switch ( LA(2) )
+        	        	                		{
+        	        	                		case EOF:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+        	        	                		case 145:
+        	        	                			{
+        	        	                				alt44=1;
+        	        	                			}
+        	        	                		    break;
+
+        	        	                		default:
+        	        	                		    CONSTRUCTEX();
+        	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                		    EXCEPTION->message      = (void *)"";
+        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->state        = 13;
+
+
+        	        	                		    goto ruletermEx;
+
+        	        	                		}
+
+        	        	                	}
+        	        	                    break;
+        	        	                case BINARY_LITERAL:
+        	        	                case DECIMAL_LITERAL:
+        	        	                case EMPTYSET_TOK:
+        	        	                case FP_RNA_FULL_TOK:
+        	        	                case FP_RNA_TOK:
+        	        	                case FP_RNE_FULL_TOK:
+        	        	                case FP_RNE_TOK:
+        	        	                case FP_RTN_FULL_TOK:
+        	        	                case FP_RTN_TOK:
+        	        	                case FP_RTP_FULL_TOK:
+        	        	                case FP_RTP_TOK:
+        	        	                case FP_RTZ_FULL_TOK:
+        	        	                case FP_RTZ_TOK:
+        	        	                case HEX_LITERAL:
+        	        	                case INTEGER_LITERAL:
+        	        	                case NILREF_TOK:
+        	        	                case REALLCHAR_TOK:
+        	        	                case RENOSTR_TOK:
+        	        	                case STRING_LITERAL_2_0:
+        	        	                case STRING_LITERAL_2_5:
+        	        	                case UNIVSET_TOK:
+        	        	                	{
+        	        	                		alt44=1;
+        	        	                	}
+        	        	                    break;
+
+        	        	                default:
+        	        	                    CONSTRUCTEX();
+        	        	                    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                    EXCEPTION->message      = (void *)"";
+        	        	                    EXCEPTION->decisionNum  = 44;
+        	        	                    EXCEPTION->state        = 0;
+
+
+        	        	                    goto ruletermEx;
+
+        	        	                }
+
+        	        	                switch (alt44)
+        	        	                {
+        	        	            	case 1:
+        	        	            	    // ../../../../../../src/parser/smt2/Smt2.g:1931:8: term[expr, f2]
+        	        	            	    {
+        	        	            	        FOLLOWPUSH(FOLLOW_term_in_term3595);
+        	        	            	        term(ctx, expr, f2);
+
+        	        	            	        FOLLOWPOP();
+        	        	            	        if  (HASEXCEPTION())
+        	        	            	        {
+        	        	            	            goto ruletermEx;
+        	        	            	        }
+
+
+        	        	            	    }
+        	        	            	    break;
+        	        	            	case 2:
+        	        	            	    // ../../../../../../src/parser/smt2/Smt2.g:1931:25: sortSymbol[type,CHECK_DECLARED] term[expr, f2]
+        	        	            	    {
+        	        	            	        FOLLOWPUSH(FOLLOW_sortSymbol_in_term3600);
+        	        	            	        sortSymbol(ctx, type, CHECK_DECLARED);
+
+        	        	            	        FOLLOWPOP();
+        	        	            	        if  (HASEXCEPTION())
+        	        	            	        {
+        	        	            	            goto ruletermEx;
+        	        	            	        }
+
+
+        	        	            	        {
+        	        	            	             readLetSort = true; 
+        	        	            	        }
+
+
+        	        	            	        FOLLOWPUSH(FOLLOW_term_in_term3612);
+        	        	            	        term(ctx, expr, f2);
+
+        	        	            	        FOLLOWPOP();
+        	        	            	        if  (HASEXCEPTION())
+        	        	            	        {
+        	        	            	            goto ruletermEx;
+        	        	            	        }
+
+
+        	        	            	    }
+        	        	            	    break;
+
+        	        	                }
+        	        	            }
+
+        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3629);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruletermEx;
+        	        	            }
+
+
+        	        	            {
+        	        	                 if( !PARSER_STATE->sygus() && readLetSort ){
+        	        	                          PARSER_STATE->parseError("Bad syntax for let term.");
+        	        	                        }else if(names.count(name) == 1) {
+        	        	                          std::stringstream ss;
+        	        	                          ss << "warning: symbol `" << name << "' bound multiple times by let;"
+        	        	                             << " the last binding will be used, shadowing earlier ones";
+        	        	                          PARSER_STATE->warning(ss.str());
+        	        	                        } else {
+        	        	                          names.insert(name);
+        	        	                        }
+        	        	                        binders.push_back(std::make_pair(name, expr)); 
+        	        	            }
+
+
+        	        	        }
+        	        	        break;
+
+        	        	    default:
+
+        	        		if ( cnt45 >= 1 )
+        	        		{
+        	        		    goto loop45;
+        	        		}
+        	        		/* mismatchedSetEx()
+        	        		 */
+        	        		CONSTRUCTEX();
+        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        		goto ruletermEx;
+        	        	}
+        	        	cnt45++;
+        	            }
+        	            loop45: ;	/* Jump to here if this rule does not match */
+        	        }
+
+        	        {
+        	             // now implement these bindings
+        	                  for(std::vector< std::pair<std::string, Expr> >::iterator
+        	                        i = binders.begin(); i != binders.end(); ++i) {
+        	                    PARSER_STATE->defineVar((*i).first, (*i).second);
+        	                  }
+        	                
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3666);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_term3672);
+        	        term(ctx, expr, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3679);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->popScope(); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1958:5: symbol[name,CHECK_NONE,SYM_VARIABLE] SYGUS_ENUM_CONS_TOK symbol[name2,CHECK_NONE,SYM_VARIABLE]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_symbol_in_term3691);
+        	        symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	         MATCHT(SYGUS_ENUM_CONS_TOK, &FOLLOW_SYGUS_ENUM_CONS_TOK_in_term3694);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_symbol_in_term3700);
+        	        symbol(ctx, name2, CHECK_NONE, SYM_VARIABLE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             std::string cname = name + "__Enum__" + name2;
+        	                  Debug("parser-sygus") << "Check for enum const " << cname << std::endl;
+        	                  expr = PARSER_STATE->getVariable(cname);
+        	                  // expr.getType().isConstructor() &&
+        	                  // ConstructorType(expr.getType()).getArity()==0;
+        	                  expr = MK_EXPR(CVC4::kind::APPLY_CONSTRUCTOR, expr);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 8:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1968:5: symbol[name,CHECK_DECLARED,SYM_VARIABLE]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_symbol_in_term3719);
+        	        symbol(ctx, name, CHECK_DECLARED, SYM_VARIABLE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             if( PARSER_STATE->sygus() && name[0]=='-' && 
+        	                      name.find_first_not_of("0123456789", 1) == std::string::npos ){
+        	                    //allow unary minus in sygus
+        	                    expr = MK_CONST(Rational(name));
+        	                  }else{
+        	                    const bool isDefinedFunction =
+        	                      PARSER_STATE->isDefinedFunction(name);
+        	                    if(PARSER_STATE->isAbstractValue(name)) {
+        	                      expr = PARSER_STATE->mkAbstractValue(name);
+        	                    } else if(isDefinedFunction) {
+        	                      expr = MK_EXPR(CVC4::kind::APPLY,
+        	                                    PARSER_STATE->getFunction(name));
+        	                    } else {
+        	                      expr = PARSER_STATE->getVariable(name);
+        	                      Type t = PARSER_STATE->getType(name);
+        	                      if(t.isConstructor() && ConstructorType(t).getArity() == 0) {
+        	                        // don't require parentheses, immediately turn it into an apply
+        	                        expr = MK_EXPR(CVC4::kind::APPLY_CONSTRUCTOR, expr);
+        	                      }
+        	                    }
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 9:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:1993:5: LPAREN_TOK ATTRIBUTE_TOK term[expr, f2] ( attribute[expr, attexpr, attr] )+ RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3739);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	         MATCHT(ATTRIBUTE_TOK, &FOLLOW_ATTRIBUTE_TOK_in_term3741);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_term3743);
+        	        term(ctx, expr, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:1994:5: ( attribute[expr, attexpr, attr] )+
+        	        {
+        	            int cnt46=0;
+
+        	            for (;;)
+        	            {
+        	                int alt46=2;
+        	        	switch ( LA(1) )
+        	        	{
+        	        	case ATTRIBUTE_INST_LEVEL:
+        	        	case ATTRIBUTE_NAMED_TOK:
+        	        	case ATTRIBUTE_NO_PATTERN_TOK:
+        	        	case ATTRIBUTE_PATTERN_TOK:
+        	        	case ATTRIBUTE_RR_PRIORITY:
+        	        	case KEYWORD:
+        	        		{
+        	        			alt46=1;
+        	        		}
+        	        	    break;
+
+        	        	}
+
+        	        	switch (alt46)
+        	        	{
+        	        	    case 1:
+        	        	        // ../../../../../../src/parser/smt2/Smt2.g:1994:7: attribute[expr, attexpr, attr]
+        	        	        {
+        	        	            FOLLOWPUSH(FOLLOW_attribute_in_term3752);
+        	        	            attribute(ctx, expr, attexpr, attr);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruletermEx;
+        	        	            }
+
+
+        	        	            {
+        	        	                 if( ! attexpr.isNull()) {
+        	        	                          patexprs.push_back( attexpr );
+        	        	                        }
+        	        	                      
+        	        	            }
+
+
+        	        	        }
+        	        	        break;
+
+        	        	    default:
+
+        	        		if ( cnt46 >= 1 )
+        	        		{
+        	        		    goto loop46;
+        	        		}
+        	        		/* mismatchedSetEx()
+        	        		 */
+        	        		CONSTRUCTEX();
+        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        		goto ruletermEx;
+        	        	}
+        	        	cnt46++;
+        	            }
+        	            loop46: ;	/* Jump to here if this rule does not match */
+        	        }
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3770);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+
+        	                  if(attr == ":rewrite-rule") {
+        	                    Expr guard;
+        	                    Expr body;
+        	                    if(expr[1].getKind() == kind::IMPLIES ||
+        	                       expr[1].getKind() == kind::EQUAL) {
+        	                      guard = expr[0];
+        	                      body = expr[1];
+        	                    } else {
+        	                      guard = MK_CONST(bool(true));
+        	                      body = expr;
+        	                    }
+        	                    expr2 = guard;
+        	                    args.push_back(body[0]);
+        	                    args.push_back(body[1]);
+        	                    if(!f2.isNull()) {
+        	                      args.push_back(f2);
+        	                    }
+
+        	                    if( body.getKind()==kind::IMPLIES ){  
+        	                      kind = kind::RR_DEDUCTION;
+        	                    }else if( body.getKind()==kind::EQUAL ){
+        	                      kind = body[0].getType().isBoolean() ? kind::RR_REDUCTION : kind::RR_REWRITE;
+        	                    }else{
+        	                      PARSER_STATE->parseError("Error parsing rewrite rule.");
+        	                    }
+        	                    expr = MK_EXPR( kind, args );
+        	                  } else if(! patexprs.empty()) {
+        	                    if( !f2.isNull() && f2.getKind()==kind::INST_PATTERN_LIST ){
+        	                      for( size_t i=0; i<f2.getNumChildren(); i++ ){
+        	                        if( f2[i].getKind()==kind::INST_PATTERN ){
+        	                          patexprs.push_back( f2[i] );
+        	                        }else{
+        	                          std::stringstream ss;
+        	                          ss << "warning: rewrite rules do not support " << f2[i]
+        	                             << " within instantiation pattern list";
+        	                          PARSER_STATE->warning(ss.str());
+        	                        }
+        	                      }
+        	                    }
+        	                    expr2 = MK_EXPR(kind::INST_PATTERN_LIST, patexprs);
+        	                  } else {
+        	                    expr2 = f2;
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 10:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2046:5: INTEGER_LITERAL
+        	    {
+        	        INTEGER_LITERAL14 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term3788);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_CONST( AntlrInput::tokenToInteger(INTEGER_LITERAL14) ); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 11:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2049:5: DECIMAL_LITERAL
+        	    {
+        	        DECIMAL_LITERAL15 = (pANTLR3_COMMON_TOKEN) MATCHT(DECIMAL_LITERAL, &FOLLOW_DECIMAL_LITERAL_in_term3801);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             // FIXME: This doesn't work because an SMT rational is not a
+        	                  // valid GMP rational string
+        	                  expr = MK_CONST( AntlrInput::tokenToRational(DECIMAL_LITERAL15) ); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 12:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2054:5: LPAREN_TOK INDEX_TOK (bvLit= SIMPLE_SYMBOL size= INTEGER_LITERAL | FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NAN_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL ) RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3814);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	         MATCHT(INDEX_TOK, &FOLLOW_INDEX_TOK_in_term3816);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:2055:5: (bvLit= SIMPLE_SYMBOL size= INTEGER_LITERAL | FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NAN_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL )
+        	        {
+        	            int alt47=4;
+        	            switch ( LA(1) )
+        	            {
+        	            case SIMPLE_SYMBOL:
+        	            	{
+        	            		alt47=1;
+        	            	}
+        	                break;
+        	            case FP_PINF_TOK:
+        	            	{
+        	            		alt47=2;
+        	            	}
+        	                break;
+        	            case FP_NINF_TOK:
+        	            	{
+        	            		alt47=3;
+        	            	}
+        	                break;
+        	            case FP_NAN_TOK:
+        	            	{
+        	            		alt47=4;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 47;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto ruletermEx;
+
+        	            }
+
+        	            switch (alt47)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2055:7: bvLit= SIMPLE_SYMBOL size= INTEGER_LITERAL
+        	        	    {
+        	        	        bvLit = (pANTLR3_COMMON_TOKEN) MATCHT(SIMPLE_SYMBOL, &FOLLOW_SIMPLE_SYMBOL_in_term3827);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	        size = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term3831);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             if(AntlrInput::tokenText(bvLit).find("bv") == 0) {
+        	        	                       expr = MK_CONST( AntlrInput::tokenToBitvector(bvLit, size) );
+        	        	                    } else {
+        	        	                       PARSER_STATE->parseError("Unexpected symbol `" +
+        	        	                                                AntlrInput::tokenText(bvLit) + "'");
+        	        	                    }
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2063:7: FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+        	        	    {
+        	        	         MATCHT(FP_PINF_TOK, &FOLLOW_FP_PINF_TOK_in_term3848);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term3852);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term3856);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             expr = MK_CONST(FloatingPoint(AntlrInput::tokenToUnsigned(eb),
+        	        	                                                  AntlrInput::tokenToUnsigned(sb),
+        	        	                                                  +INFINITY)); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 3:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2067:7: FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+        	        	    {
+        	        	         MATCHT(FP_NINF_TOK, &FOLLOW_FP_NINF_TOK_in_term3872);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term3876);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term3880);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             expr = MK_CONST(FloatingPoint(AntlrInput::tokenToUnsigned(eb),
+        	        	                                                  AntlrInput::tokenToUnsigned(sb),
+        	        	                                                 -INFINITY)); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 4:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2071:7: FP_NAN_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+        	        	    {
+        	        	         MATCHT(FP_NAN_TOK, &FOLLOW_FP_NAN_TOK_in_term3896);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term3900);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term3904);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletermEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             expr = MK_CONST(FloatingPoint(AntlrInput::tokenToUnsigned(eb),
+        	        	                                                  AntlrInput::tokenToUnsigned(sb),
+        	        	                                                  NAN)); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3930);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 13:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2080:5: HEX_LITERAL
+        	    {
+        	        HEX_LITERAL16 = (pANTLR3_COMMON_TOKEN) MATCHT(HEX_LITERAL, &FOLLOW_HEX_LITERAL_in_term3937);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             assert( AntlrInput::tokenText(HEX_LITERAL16).find("#x") == 0 );
+        	                  std::string hexString = AntlrInput::tokenTextSubstr(HEX_LITERAL16, 2);
+        	                  expr = MK_CONST( BitVector(hexString, 16) ); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 14:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2085:5: BINARY_LITERAL
+        	    {
+        	        BINARY_LITERAL17 = (pANTLR3_COMMON_TOKEN) MATCHT(BINARY_LITERAL, &FOLLOW_BINARY_LITERAL_in_term3950);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             assert( AntlrInput::tokenText(BINARY_LITERAL17).find("#b") == 0 );
+        	                  std::string binString = AntlrInput::tokenTextSubstr(BINARY_LITERAL17, 2);
+        	                  expr = MK_CONST( BitVector(binString, 2) ); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 15:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2090:5: str[s,false]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_str_in_term3963);
+        	        str(ctx, s, false);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_CONST( ::CVC4::String(s) ); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 16:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2092:5: FP_RNE_TOK
+        	    {
+        	         MATCHT(FP_RNE_TOK, &FOLLOW_FP_RNE_TOK_in_term3976);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_CONST(roundNearestTiesToEven); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 17:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2093:5: FP_RNA_TOK
+        	    {
+        	         MATCHT(FP_RNA_TOK, &FOLLOW_FP_RNA_TOK_in_term3989);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_CONST(roundNearestTiesToAway); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 18:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2094:5: FP_RTP_TOK
+        	    {
+        	         MATCHT(FP_RTP_TOK, &FOLLOW_FP_RTP_TOK_in_term4002);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_CONST(roundTowardPositive); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 19:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2095:5: FP_RTN_TOK
+        	    {
+        	         MATCHT(FP_RTN_TOK, &FOLLOW_FP_RTN_TOK_in_term4015);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_CONST(roundTowardNegative); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 20:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2096:5: FP_RTZ_TOK
+        	    {
+        	         MATCHT(FP_RTZ_TOK, &FOLLOW_FP_RTZ_TOK_in_term4028);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_CONST(roundTowardZero); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 21:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2097:5: FP_RNE_FULL_TOK
+        	    {
+        	         MATCHT(FP_RNE_FULL_TOK, &FOLLOW_FP_RNE_FULL_TOK_in_term4041);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_CONST(roundNearestTiesToEven); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 22:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2098:5: FP_RNA_FULL_TOK
+        	    {
+        	         MATCHT(FP_RNA_FULL_TOK, &FOLLOW_FP_RNA_FULL_TOK_in_term4049);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_CONST(roundNearestTiesToAway); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 23:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2099:5: FP_RTP_FULL_TOK
+        	    {
+        	         MATCHT(FP_RTP_FULL_TOK, &FOLLOW_FP_RTP_FULL_TOK_in_term4057);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_CONST(roundTowardPositive); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 24:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2100:5: FP_RTN_FULL_TOK
+        	    {
+        	         MATCHT(FP_RTN_FULL_TOK, &FOLLOW_FP_RTN_FULL_TOK_in_term4065);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_CONST(roundTowardNegative); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 25:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2101:5: FP_RTZ_FULL_TOK
+        	    {
+        	         MATCHT(FP_RTZ_FULL_TOK, &FOLLOW_FP_RTZ_FULL_TOK_in_term4073);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_CONST(roundTowardZero); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 26:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2103:5: RENOSTR_TOK
+        	    {
+        	         MATCHT(RENOSTR_TOK, &FOLLOW_RENOSTR_TOK_in_term4082);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             std::vector< Expr > nvec;
+        	                  expr = MK_EXPR( CVC4::kind::REGEXP_EMPTY, nvec );
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 27:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2108:5: REALLCHAR_TOK
+        	    {
+        	         MATCHT(REALLCHAR_TOK, &FOLLOW_REALLCHAR_TOK_in_term4095);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             std::vector< Expr > nvec;
+        	                  expr = MK_EXPR( CVC4::kind::REGEXP_SIGMA, nvec );
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 28:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2113:5: EMPTYSET_TOK
+        	    {
+        	         MATCHT(EMPTYSET_TOK, &FOLLOW_EMPTYSET_TOK_in_term4108);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_CONST( ::CVC4::EmptySet(Type())); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 29:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2116:5: UNIVSET_TOK
+        	    {
+        	         MATCHT(UNIVSET_TOK, &FOLLOW_UNIVSET_TOK_in_term4121);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             //booleanType is placeholder here since we don't have type info without type annotation
+        	                  expr = EXPR_MANAGER->mkUniqueVar(EXPR_MANAGER->booleanType(), kind::UNIVERSE_SET); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 30:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2120:5: NILREF_TOK
+        	    {
+        	         MATCHT(NILREF_TOK, &FOLLOW_NILREF_TOK_in_term4134);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             //booleanType is placeholder here since we don't have type info without type annotation
+        	                  expr = EXPR_MANAGER->mkUniqueVar(EXPR_MANAGER->booleanType(), kind::SEP_NIL); 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletermEx; /* Prevent compiler warnings */
+    ruletermEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end term */
+
+/**
+ * $ANTLR start attribute
+ * ../../../../../../src/parser/smt2/Smt2.g:2129:1: attribute[CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& attr] : ( KEYWORD ( simpleSymbolicExprNoKeyword[sexpr] )? | ATTRIBUTE_PATTERN_TOK LPAREN_TOK ( term[patexpr, e2] )+ RPAREN_TOK | ATTRIBUTE_NO_PATTERN_TOK term[patexpr, e2] |tok= ( ATTRIBUTE_INST_LEVEL | ATTRIBUTE_RR_PRIORITY ) INTEGER_LITERAL | ATTRIBUTE_NAMED_TOK symbolicExpr[sexpr] );
+ */
+static void
+attribute(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& attr)
+{
+    pANTLR3_COMMON_TOKEN    tok;
+    pANTLR3_COMMON_TOKEN    KEYWORD18;
+    pANTLR3_COMMON_TOKEN    INTEGER_LITERAL19;
+
+    /* Initialize rule variables
+     */
+
+
+      SExpr sexpr;
+      Expr patexpr;
+      std::vector<Expr> patexprs;
+      Expr e2;
+      bool hasValue = false;
+
+    tok       = NULL;
+    KEYWORD18       = NULL;
+    INTEGER_LITERAL19       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/smt2/Smt2.g:2137:3: ( KEYWORD ( simpleSymbolicExprNoKeyword[sexpr] )? | ATTRIBUTE_PATTERN_TOK LPAREN_TOK ( term[patexpr, e2] )+ RPAREN_TOK | ATTRIBUTE_NO_PATTERN_TOK term[patexpr, e2] |tok= ( ATTRIBUTE_INST_LEVEL | ATTRIBUTE_RR_PRIORITY ) INTEGER_LITERAL | ATTRIBUTE_NAMED_TOK symbolicExpr[sexpr] )
+
+            ANTLR3_UINT32 alt51;
+
+            alt51=5;
+
+            switch ( LA(1) )
+            {
+            case KEYWORD:
+            	{
+            		alt51=1;
+            	}
+                break;
+            case ATTRIBUTE_PATTERN_TOK:
+            	{
+            		alt51=2;
+            	}
+                break;
+            case ATTRIBUTE_NO_PATTERN_TOK:
+            	{
+            		alt51=3;
+            	}
+                break;
+            case ATTRIBUTE_INST_LEVEL:
+            case ATTRIBUTE_RR_PRIORITY:
+            	{
+            		alt51=4;
+            	}
+                break;
+            case ATTRIBUTE_NAMED_TOK:
+            	{
+            		alt51=5;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 51;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleattributeEx;
+
+            }
+
+            switch (alt51)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2137:5: KEYWORD ( simpleSymbolicExprNoKeyword[sexpr] )?
+        	    {
+        	        KEYWORD18 = (pANTLR3_COMMON_TOKEN) MATCHT(KEYWORD, &FOLLOW_KEYWORD_in_attribute4166);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleattributeEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:2137:13: ( simpleSymbolicExprNoKeyword[sexpr] )?
+        	        {
+        	            int alt49=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case AND_TOK:
+        	                case ASSERT_TOK:
+        	                case BINARY_LITERAL:
+        	                case BV2NAT_TOK:
+        	                case CHECKSAT_TOK:
+        	                case CHECK_SYNTH_TOK:
+        	                case CONSTRAINT_TOK:
+        	                case DECIMAL_LITERAL:
+        	                case DECLARE_DATATYPES_TOK:
+        	                case DECLARE_FUN_TOK:
+        	                case DECLARE_PRIMED_VAR_TOK:
+        	                case DECLARE_SORT_TOK:
+        	                case DECLARE_VAR_TOK:
+        	                case DEFINE_FUNS_REC_TOK:
+        	                case DEFINE_FUN_REC_TOK:
+        	                case DEFINE_FUN_TOK:
+        	                case DEFINE_SORT_TOK:
+        	                case DISTINCT_TOK:
+        	                case DIV_TOK:
+        	                case DTSIZE_TOK:
+        	                case ECHO_TOK:
+        	                case EQUAL_TOK:
+        	                case EXIT_TOK:
+        	                case FMFCARDVAL_TOK:
+        	                case FMFCARD_TOK:
+        	                case GET_ASSERTIONS_TOK:
+        	                case GET_ASSIGNMENT_TOK:
+        	                case GET_INFO_TOK:
+        	                case GET_MODEL_TOK:
+        	                case GET_OPTION_TOK:
+        	                case GET_PROOF_TOK:
+        	                case GET_UNSAT_CORE_TOK:
+        	                case GET_VALUE_TOK:
+        	                case GREATER_THAN_EQUAL_TOK:
+        	                case GREATER_THAN_TOK:
+        	                case HEX_LITERAL:
+        	                case IMPLIES_TOK:
+        	                case INST_CLOSURE_TOK:
+        	                case INTEGER_LITERAL:
+        	                case INV_CONSTRAINT_TOK:
+        	                case ITE_TOK:
+        	                case LESS_THAN_EQUAL_TOK:
+        	                case LESS_THAN_TOK:
+        	                case MINUS_TOK:
+        	                case NOT_TOK:
+        	                case OR_TOK:
+        	                case PLUS_TOK:
+        	                case POP_TOK:
+        	                case PROPAGATION_RULE_TOK:
+        	                case PUSH_TOK:
+        	                case QUOTED_SYMBOL:
+        	                case REDUCTION_RULE_TOK:
+        	                case RESET_ASSERTIONS_TOK:
+        	                case RESET_TOK:
+        	                case REWRITE_RULE_TOK:
+        	                case SET_INFO_TOK:
+        	                case SET_LOGIC_TOK:
+        	                case SET_OPTIONS_TOK:
+        	                case SET_OPTION_TOK:
+        	                case SIMPLE_SYMBOL:
+        	                case SIMPLIFY_TOK:
+        	                case STAR_TOK:
+        	                case STRING_LITERAL_2_0:
+        	                case STRING_LITERAL_2_5:
+        	                case SYNTH_FUN_TOK:
+        	                case SYNTH_INV_TOK:
+        	                case UNTERMINATED_QUOTED_SYMBOL:
+        	                case XOR_TOK:
+        	                case 147:
+        	                	{
+        	                		alt49=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt49)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2137:15: simpleSymbolicExprNoKeyword[sexpr]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExprNoKeyword_in_attribute4170);
+        	        	        simpleSymbolicExprNoKeyword(ctx, sexpr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleattributeEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             hasValue = true; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        {
+
+        	                attr = AntlrInput::tokenText(KEYWORD18);
+        	                // EXPR_MANAGER->setNamedAttribute( expr, attr );
+        	                if(attr == ":rewrite-rule") {
+        	                  if(hasValue) {
+        	                    std::stringstream ss;
+        	                    ss << "warning: Attribute " << attr
+        	                       << " does not take a value (ignoring)";
+        	                    PARSER_STATE->warning(ss.str());
+        	                  }
+        	                  // do nothing
+        	                } else if(attr==":axiom" || attr==":conjecture" || attr==":fun-def" ||
+        	                          attr==":sygus" || attr==":synthesis") {
+        	                  if(hasValue) {
+        	                    std::stringstream ss;
+        	                    ss << "warning: Attribute " << attr
+        	                       << " does not take a value (ignoring)";
+        	                    PARSER_STATE->warning(ss.str());
+        	                  }
+        	                  Expr avar;
+        	                  bool success = true;
+        	                  std::string attr_name = attr;
+        	                  attr_name.erase( attr_name.begin() );
+        	                  if( attr==":fun-def" ){
+        	                    if( expr.getKind()!=kind::EQUAL || expr[0].getKind()!=kind::APPLY_UF ){
+        	                      success = false;
+        	                    }else{
+        	                      FunctionType t = (FunctionType)expr[0].getOperator().getType();
+        	                      for( unsigned i=0; i<expr[0].getNumChildren(); i++ ){
+        	                        if( expr[0][i].getKind() != kind::BOUND_VARIABLE ||
+        	                            expr[0][i].getType() != t.getArgTypes()[i] ){
+        	                          success = false;
+        	                          break;
+        	                        }else{
+        	                          for( unsigned j=0; j<i; j++ ){
+        	                            if( expr[0][j]==expr[0][i] ){
+        	                              success = false;
+        	                              break;
+        	                            }
+        	                          }
+        	                        }
+        	                      }
+        	                    }
+        	                    if( !success ){
+        	                      std::stringstream ss;
+        	                      ss << "warning: Function definition should be an equality whose LHS "
+        	                         << "is an uninterpreted function applied to unique variables.";
+        	                      PARSER_STATE->warning(ss.str());
+        	                    }else{
+        	                      avar = expr[0];
+        	                    }
+        	                  }else{
+        	                    Type t = EXPR_MANAGER->booleanType();
+        	                    avar = PARSER_STATE->mkVar(attr_name, t);
+        	                  }
+        	                  if( success ){
+        	                    //Will set the attribute on auxiliary var (preserves attribute on
+        	                    //formula through rewriting).
+        	                    retExpr = MK_EXPR(kind::INST_ATTRIBUTE, avar);
+        	                    Command* c = new SetUserAttributeCommand( attr_name, avar );
+        	                    c->setMuted(true);
+        	                    PARSER_STATE->preemptCommand(c);
+        	                  }
+        	                } else {
+        	                  PARSER_STATE->attributeNotSupported(attr);
+        	                }
+        	              
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2205:5: ATTRIBUTE_PATTERN_TOK LPAREN_TOK ( term[patexpr, e2] )+ RPAREN_TOK
+        	    {
+        	         MATCHT(ATTRIBUTE_PATTERN_TOK, &FOLLOW_ATTRIBUTE_PATTERN_TOK_in_attribute4186);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleattributeEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_attribute4188);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleattributeEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:2206:5: ( term[patexpr, e2] )+
+        	        {
+        	            int cnt50=0;
+
+        	            for (;;)
+        	            {
+        	                int alt50=2;
+        	        	switch ( LA(1) )
+        	        	{
+        	        	case BINARY_LITERAL:
+        	        	case CHECK_SYNTH_TOK:
+        	        	case CONSTRAINT_TOK:
+        	        	case DECIMAL_LITERAL:
+        	        	case DECLARE_PRIMED_VAR_TOK:
+        	        	case DECLARE_VAR_TOK:
+        	        	case EMPTYSET_TOK:
+        	        	case FP_RNA_FULL_TOK:
+        	        	case FP_RNA_TOK:
+        	        	case FP_RNE_FULL_TOK:
+        	        	case FP_RNE_TOK:
+        	        	case FP_RTN_FULL_TOK:
+        	        	case FP_RTN_TOK:
+        	        	case FP_RTP_FULL_TOK:
+        	        	case FP_RTP_TOK:
+        	        	case FP_RTZ_FULL_TOK:
+        	        	case FP_RTZ_TOK:
+        	        	case HEX_LITERAL:
+        	        	case INTEGER_LITERAL:
+        	        	case INV_CONSTRAINT_TOK:
+        	        	case LPAREN_TOK:
+        	        	case NILREF_TOK:
+        	        	case QUOTED_SYMBOL:
+        	        	case REALLCHAR_TOK:
+        	        	case RENOSTR_TOK:
+        	        	case SET_OPTIONS_TOK:
+        	        	case SIMPLE_SYMBOL:
+        	        	case STRING_LITERAL_2_0:
+        	        	case STRING_LITERAL_2_5:
+        	        	case SYNTH_FUN_TOK:
+        	        	case SYNTH_INV_TOK:
+        	        	case UNIVSET_TOK:
+        	        	case UNTERMINATED_QUOTED_SYMBOL:
+        	        	case 147:
+        	        		{
+        	        			alt50=1;
+        	        		}
+        	        	    break;
+
+        	        	}
+
+        	        	switch (alt50)
+        	        	{
+        	        	    case 1:
+        	        	        // ../../../../../../src/parser/smt2/Smt2.g:2206:7: term[patexpr, e2]
+        	        	        {
+        	        	            FOLLOWPUSH(FOLLOW_term_in_attribute4196);
+        	        	            term(ctx, patexpr, e2);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruleattributeEx;
+        	        	            }
+
+
+        	        	            {
+        	        	                 patexprs.push_back( patexpr ); 
+        	        	            }
+
+
+        	        	        }
+        	        	        break;
+
+        	        	    default:
+
+        	        		if ( cnt50 >= 1 )
+        	        		{
+        	        		    goto loop50;
+        	        		}
+        	        		/* mismatchedSetEx()
+        	        		 */
+        	        		CONSTRUCTEX();
+        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        		goto ruleattributeEx;
+        	        	}
+        	        	cnt50++;
+        	            }
+        	            loop50: ;	/* Jump to here if this rule does not match */
+        	        }
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_attribute4214);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleattributeEx;
+        	        }
+
+
+        	        {
+
+        	                  attr = std::string(":pattern");
+        	                  retExpr = MK_EXPR(kind::INST_PATTERN, patexprs);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2213:5: ATTRIBUTE_NO_PATTERN_TOK term[patexpr, e2]
+        	    {
+        	         MATCHT(ATTRIBUTE_NO_PATTERN_TOK, &FOLLOW_ATTRIBUTE_NO_PATTERN_TOK_in_attribute4226);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleattributeEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_attribute4228);
+        	        term(ctx, patexpr, e2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleattributeEx;
+        	        }
+
+
+        	        {
+
+        	                  attr = std::string(":no-pattern");
+        	                  retExpr = MK_EXPR(kind::INST_NO_PATTERN, patexpr);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2218:5: tok= ( ATTRIBUTE_INST_LEVEL | ATTRIBUTE_RR_PRIORITY ) INTEGER_LITERAL
+        	    {
+        	        tok=(pANTLR3_COMMON_TOKEN)LT(1);
+
+        	        if ( LA(1) == ATTRIBUTE_INST_LEVEL || LA(1) == ATTRIBUTE_RR_PRIORITY )
+        	        {
+        	            CONSUME();
+        	            PERRORRECOVERY=ANTLR3_FALSE;
+        	        }
+        	        else
+        	        {
+        	            CONSTRUCTEX();
+        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+        	            EXCEPTION->expectingSet = NULL;
+
+        	            goto ruleattributeEx;
+        	        }
+
+
+        	        INTEGER_LITERAL19 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_attribute4253);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleattributeEx;
+        	        }
+
+
+        	        {
+
+        	                  Expr n = MK_CONST( AntlrInput::tokenToInteger(INTEGER_LITERAL19) );
+        	                  std::vector<Expr> values;
+        	                  values.push_back( n );
+        	                  std::string attr_name(AntlrInput::tokenText(tok));
+        	                  attr_name.erase( attr_name.begin() );
+        	                  Type t = EXPR_MANAGER->booleanType();
+        	                  Expr avar = PARSER_STATE->mkVar(attr_name, t);
+        	                  retExpr = MK_EXPR(kind::INST_ATTRIBUTE, avar);
+        	                  Command* c = new SetUserAttributeCommand( attr_name, avar, values );
+        	                  c->setMuted(true);
+        	                  PARSER_STATE->preemptCommand(c);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2232:5: ATTRIBUTE_NAMED_TOK symbolicExpr[sexpr]
+        	    {
+        	         MATCHT(ATTRIBUTE_NAMED_TOK, &FOLLOW_ATTRIBUTE_NAMED_TOK_in_attribute4265);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleattributeEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_symbolicExpr_in_attribute4267);
+        	        symbolicExpr(ctx, sexpr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleattributeEx;
+        	        }
+
+
+        	        {
+
+        	                  attr = std::string(":named");
+        	                  if(!sexpr.isKeyword()) {
+        	                    PARSER_STATE->parseError("improperly formed :named annotation");
+        	                  }
+        	                  std::string name = sexpr.getValue();
+        	                  PARSER_STATE->checkUserSymbol(name);
+        	                  // ensure expr is a closed subterm
+        	                  std::set<Expr> freeVars;
+        	                  if(!isClosed(expr, freeVars)) {
+        	                    assert(!freeVars.empty());
+        	                    std::stringstream ss;
+        	                    ss << ":named annotations can only name terms that are closed; this "
+        	                       << "one contains free variables:";
+        	                    for(std::set<Expr>::const_iterator i = freeVars.begin();
+        	                        i != freeVars.end(); ++i) {
+        	                      ss << " " << *i;
+        	                    }
+        	                    PARSER_STATE->parseError(ss.str());
+        	                  }
+        	                  // check that sexpr is a fresh function symbol, and reserve it
+        	                  PARSER_STATE->reserveSymbolAtAssertionLevel(name);
+        	                  // define it
+        	                  Expr func = PARSER_STATE->mkFunction(name, expr.getType());
+        	                  // remember the last term to have been given a :named attribute
+        	                  PARSER_STATE->setLastNamedTerm(expr, name);
+        	                  // bind name to expr with define-fun
+        	                  Command* c =
+        	                    new DefineNamedFunctionCommand(name, func, std::vector<Expr>(), expr);
+        	                  c->setMuted(true);
+        	                  PARSER_STATE->preemptCommand(c);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleattributeEx; /* Prevent compiler warnings */
+    ruleattributeEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end attribute */
+
+/**
+ * $ANTLR start indexedFunctionName
+ * ../../../../../../src/parser/smt2/Smt2.g:2270:1: indexedFunctionName[CVC4::Expr& op] : LPAREN_TOK INDEX_TOK ( 'extract' n1= INTEGER_LITERAL n2= INTEGER_LITERAL | 'repeat' n= INTEGER_LITERAL | 'zero_extend' n= INTEGER_LITERAL | 'sign_extend' n= INTEGER_LITERAL | 'rotate_left' n= INTEGER_LITERAL | 'rotate_right' n= INTEGER_LITERAL | DIVISIBLE_TOK n= INTEGER_LITERAL | INT2BV_TOK n= INTEGER_LITERAL | FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NINF_TOK eb= INTEGER_LITERAL sb= [...]
+ */
+static void
+indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
+{
+    pANTLR3_COMMON_TOKEN    n1;
+    pANTLR3_COMMON_TOKEN    n2;
+    pANTLR3_COMMON_TOKEN    n;
+    pANTLR3_COMMON_TOKEN    eb;
+    pANTLR3_COMMON_TOKEN    sb;
+    pANTLR3_COMMON_TOKEN    m;
+
+    /* Initialize rule variables
+     */
+
+    n1       = NULL;
+    n2       = NULL;
+    n       = NULL;
+    eb       = NULL;
+    sb       = NULL;
+    m       = NULL;
+
+    {
+        // ../../../../../../src/parser/smt2/Smt2.g:2271:3: ( LPAREN_TOK INDEX_TOK ( 'extract' n1= INTEGER_LITERAL n2= INTEGER_LITERAL | 'repeat' n= INTEGER_LITERAL | 'zero_extend' n= INTEGER_LITERAL | 'sign_extend' n= INTEGER_LITERAL | 'rotate_left' n= INTEGER_LITERAL | 'rotate_right' n= INTEGER_LITERAL | DIVISIBLE_TOK n= INTEGER_LITERAL | INT2BV_TOK n= INTEGER_LITERAL | FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NAN_TO [...]
+        // ../../../../../../src/parser/smt2/Smt2.g:2271:5: LPAREN_TOK INDEX_TOK ( 'extract' n1= INTEGER_LITERAL n2= INTEGER_LITERAL | 'repeat' n= INTEGER_LITERAL | 'zero_extend' n= INTEGER_LITERAL | 'sign_extend' n= INTEGER_LITERAL | 'rotate_left' n= INTEGER_LITERAL | 'rotate_right' n= INTEGER_LITERAL | DIVISIBLE_TOK n= INTEGER_LITERAL | INT2BV_TOK n= INTEGER_LITERAL | FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NAN_TOK  [...]
+        {
+             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_indexedFunctionName4290);
+            if  (HASEXCEPTION())
+            {
+                goto ruleindexedFunctionNameEx;
+            }
+
+
+             MATCHT(INDEX_TOK, &FOLLOW_INDEX_TOK_in_indexedFunctionName4292);
+            if  (HASEXCEPTION())
+            {
+                goto ruleindexedFunctionNameEx;
+            }
+
+
+            // ../../../../../../src/parser/smt2/Smt2.g:2272:5: ( 'extract' n1= INTEGER_LITERAL n2= INTEGER_LITERAL | 'repeat' n= INTEGER_LITERAL | 'zero_extend' n= INTEGER_LITERAL | 'sign_extend' n= INTEGER_LITERAL | 'rotate_left' n= INTEGER_LITERAL | 'rotate_right' n= INTEGER_LITERAL | DIVISIBLE_TOK n= INTEGER_LITERAL | INT2BV_TOK n= INTEGER_LITERAL | FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NAN_TOK eb= INTEGER_LITER [...]
+            {
+                int alt52=22;
+                switch ( LA(1) )
+                {
+                case 146:
+                	{
+                		alt52=1;
+                	}
+                    break;
+                case 147:
+                	{
+                		alt52=2;
+                	}
+                    break;
+                case 151:
+                	{
+                		alt52=3;
+                	}
+                    break;
+                case 150:
+                	{
+                		alt52=4;
+                	}
+                    break;
+                case 148:
+                	{
+                		alt52=5;
+                	}
+                    break;
+                case 149:
+                	{
+                		alt52=6;
+                	}
+                    break;
+                case DIVISIBLE_TOK:
+                	{
+                		alt52=7;
+                	}
+                    break;
+                case INT2BV_TOK:
+                	{
+                		alt52=8;
+                	}
+                    break;
+                case FP_PINF_TOK:
+                	{
+                		alt52=9;
+                	}
+                    break;
+                case FP_NINF_TOK:
+                	{
+                		alt52=10;
+                	}
+                    break;
+                case FP_NAN_TOK:
+                	{
+                		alt52=11;
+                	}
+                    break;
+                case FP_PZERO_TOK:
+                	{
+                		alt52=12;
+                	}
+                    break;
+                case FP_NZERO_TOK:
+                	{
+                		alt52=13;
+                	}
+                    break;
+                case FP_TO_FP_TOK:
+                	{
+                		alt52=14;
+                	}
+                    break;
+                case FP_TO_FPBV_TOK:
+                	{
+                		alt52=15;
+                	}
+                    break;
+                case FP_TO_FPFP_TOK:
+                	{
+                		alt52=16;
+                	}
+                    break;
+                case FP_TO_FPR_TOK:
+                	{
+                		alt52=17;
+                	}
+                    break;
+                case FP_TO_FPS_TOK:
+                	{
+                		alt52=18;
+                	}
+                    break;
+                case FP_TO_FPU_TOK:
+                	{
+                		alt52=19;
+                	}
+                    break;
+                case FP_TO_UBV_TOK:
+                	{
+                		alt52=20;
+                	}
+                    break;
+                case FP_TO_SBV_TOK:
+                	{
+                		alt52=21;
+                	}
+                    break;
+                case QUOTED_SYMBOL:
+                case SIMPLE_SYMBOL:
+                case UNTERMINATED_QUOTED_SYMBOL:
+                	{
+                		alt52=22;
+                	}
+                    break;
+
+                default:
+                    CONSTRUCTEX();
+                    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                    EXCEPTION->message      = (void *)"";
+                    EXCEPTION->decisionNum  = 52;
+                    EXCEPTION->state        = 0;
+
+
+                    goto ruleindexedFunctionNameEx;
+
+                }
+
+                switch (alt52)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2272:7: 'extract' n1= INTEGER_LITERAL n2= INTEGER_LITERAL
+            	    {
+            	         MATCHT(146, &FOLLOW_146_in_indexedFunctionName4300);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        n1 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4304);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        n2 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4308);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(BitVectorExtract(AntlrInput::tokenToUnsigned(n1),
+            	                                                   AntlrInput::tokenToUnsigned(n2))); 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 2:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2275:7: 'repeat' n= INTEGER_LITERAL
+            	    {
+            	         MATCHT(147, &FOLLOW_147_in_indexedFunctionName4324);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4328);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(BitVectorRepeat(AntlrInput::tokenToUnsigned(n))); 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 3:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2277:7: 'zero_extend' n= INTEGER_LITERAL
+            	    {
+            	         MATCHT(151, &FOLLOW_151_in_indexedFunctionName4344);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4348);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(BitVectorZeroExtend(AntlrInput::tokenToUnsigned(n))); 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 4:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2279:7: 'sign_extend' n= INTEGER_LITERAL
+            	    {
+            	         MATCHT(150, &FOLLOW_150_in_indexedFunctionName4364);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4368);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(BitVectorSignExtend(AntlrInput::tokenToUnsigned(n))); 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 5:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2281:7: 'rotate_left' n= INTEGER_LITERAL
+            	    {
+            	         MATCHT(148, &FOLLOW_148_in_indexedFunctionName4384);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4388);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(BitVectorRotateLeft(AntlrInput::tokenToUnsigned(n))); 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 6:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2283:7: 'rotate_right' n= INTEGER_LITERAL
+            	    {
+            	         MATCHT(149, &FOLLOW_149_in_indexedFunctionName4404);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4408);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(BitVectorRotateRight(AntlrInput::tokenToUnsigned(n))); 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 7:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2285:7: DIVISIBLE_TOK n= INTEGER_LITERAL
+            	    {
+            	         MATCHT(DIVISIBLE_TOK, &FOLLOW_DIVISIBLE_TOK_in_indexedFunctionName4424);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4428);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(Divisible(AntlrInput::tokenToUnsigned(n))); 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 8:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2287:7: INT2BV_TOK n= INTEGER_LITERAL
+            	    {
+            	         MATCHT(INT2BV_TOK, &FOLLOW_INT2BV_TOK_in_indexedFunctionName4444);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4448);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(IntToBitVector(AntlrInput::tokenToUnsigned(n)));
+            	                    if(PARSER_STATE->strictModeEnabled()) {
+            	                      PARSER_STATE->parseError(
+            	                          "bv2nat and int2bv are not part of SMT-LIB, and aren't available "
+            	                          "in SMT-LIB strict compliance mode");
+            	                    } 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 9:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2294:7: FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    {
+            	         MATCHT(FP_PINF_TOK, &FOLLOW_FP_PINF_TOK_in_indexedFunctionName4464);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4468);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4472);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(FloatingPoint(AntlrInput::tokenToUnsigned(eb),
+            	                                                AntlrInput::tokenToUnsigned(sb),
+            	                                                +INFINITY)); 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 10:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2298:7: FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    {
+            	         MATCHT(FP_NINF_TOK, &FOLLOW_FP_NINF_TOK_in_indexedFunctionName4488);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4492);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4496);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(FloatingPoint(AntlrInput::tokenToUnsigned(eb),
+            	                                                AntlrInput::tokenToUnsigned(sb),
+            	                                                -INFINITY)); 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 11:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2302:7: FP_NAN_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    {
+            	         MATCHT(FP_NAN_TOK, &FOLLOW_FP_NAN_TOK_in_indexedFunctionName4512);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4516);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4520);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(FloatingPoint(AntlrInput::tokenToUnsigned(eb),
+            	                                                AntlrInput::tokenToUnsigned(sb),
+            	                                                NAN)); 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 12:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2306:7: FP_PZERO_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    {
+            	         MATCHT(FP_PZERO_TOK, &FOLLOW_FP_PZERO_TOK_in_indexedFunctionName4536);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4540);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4544);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(FloatingPoint(AntlrInput::tokenToUnsigned(eb),
+            	                                                AntlrInput::tokenToUnsigned(sb),
+            	                                                +0.0)); 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 13:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2310:7: FP_NZERO_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    {
+            	         MATCHT(FP_NZERO_TOK, &FOLLOW_FP_NZERO_TOK_in_indexedFunctionName4560);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4564);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4568);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(FloatingPoint(AntlrInput::tokenToUnsigned(eb),
+            	                                                AntlrInput::tokenToUnsigned(sb),
+            	                                                -0.0)); 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 14:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2314:7: FP_TO_FP_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    {
+            	         MATCHT(FP_TO_FP_TOK, &FOLLOW_FP_TO_FP_TOK_in_indexedFunctionName4584);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4588);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4592);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(FloatingPointToFPGeneric(
+            	                            AntlrInput::tokenToUnsigned(eb),
+            	                            AntlrInput::tokenToUnsigned(sb)));
+            	                  
+            	        }
+
+
+            	    }
+            	    break;
+            	case 15:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2319:7: FP_TO_FPBV_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    {
+            	         MATCHT(FP_TO_FPBV_TOK, &FOLLOW_FP_TO_FPBV_TOK_in_indexedFunctionName4608);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4612);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4616);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(FloatingPointToFPIEEEBitVector(
+            	                            AntlrInput::tokenToUnsigned(eb),
+            	                            AntlrInput::tokenToUnsigned(sb)));
+            	                  
+            	        }
+
+
+            	    }
+            	    break;
+            	case 16:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2324:7: FP_TO_FPFP_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    {
+            	         MATCHT(FP_TO_FPFP_TOK, &FOLLOW_FP_TO_FPFP_TOK_in_indexedFunctionName4632);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4636);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4640);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(FloatingPointToFPFloatingPoint(
+            	                            AntlrInput::tokenToUnsigned(eb),
+            	                            AntlrInput::tokenToUnsigned(sb)));
+            	                  
+            	        }
+
+
+            	    }
+            	    break;
+            	case 17:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2329:7: FP_TO_FPR_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    {
+            	         MATCHT(FP_TO_FPR_TOK, &FOLLOW_FP_TO_FPR_TOK_in_indexedFunctionName4656);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4660);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4664);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(FloatingPointToFPReal(AntlrInput::tokenToUnsigned(eb),
+            	                                                        AntlrInput::tokenToUnsigned(sb)));
+            	                  
+            	        }
+
+
+            	    }
+            	    break;
+            	case 18:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2333:7: FP_TO_FPS_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    {
+            	         MATCHT(FP_TO_FPS_TOK, &FOLLOW_FP_TO_FPS_TOK_in_indexedFunctionName4680);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4684);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4688);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(FloatingPointToFPSignedBitVector(
+            	                            AntlrInput::tokenToUnsigned(eb),
+            	                            AntlrInput::tokenToUnsigned(sb)));
+            	                  
+            	        }
+
+
+            	    }
+            	    break;
+            	case 19:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2338:7: FP_TO_FPU_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    {
+            	         MATCHT(FP_TO_FPU_TOK, &FOLLOW_FP_TO_FPU_TOK_in_indexedFunctionName4704);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4708);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4712);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(FloatingPointToFPUnsignedBitVector(
+            	                            AntlrInput::tokenToUnsigned(eb),
+            	                            AntlrInput::tokenToUnsigned(sb)));
+            	                  
+            	        }
+
+
+            	    }
+            	    break;
+            	case 20:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2343:7: FP_TO_UBV_TOK m= INTEGER_LITERAL
+            	    {
+            	         MATCHT(FP_TO_UBV_TOK, &FOLLOW_FP_TO_UBV_TOK_in_indexedFunctionName4728);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        m = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4732);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(FloatingPointToUBV(AntlrInput::tokenToUnsigned(m))); 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 21:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2345:7: FP_TO_SBV_TOK m= INTEGER_LITERAL
+            	    {
+            	         MATCHT(FP_TO_SBV_TOK, &FOLLOW_FP_TO_SBV_TOK_in_indexedFunctionName4748);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        m = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4752);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             op = MK_CONST(FloatingPointToSBV(AntlrInput::tokenToUnsigned(m))); 
+            	        }
+
+
+            	    }
+            	    break;
+            	case 22:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2347:7: badIndexedFunctionName
+            	    {
+            	        FOLLOWPUSH(FOLLOW_badIndexedFunctionName_in_indexedFunctionName4768);
+            	        badIndexedFunctionName(ctx);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	    }
+            	    break;
+
+                }
+            }
+
+             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_indexedFunctionName4780);
+            if  (HASEXCEPTION())
+            {
+                goto ruleindexedFunctionNameEx;
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleindexedFunctionNameEx; /* Prevent compiler warnings */
+    ruleindexedFunctionNameEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end indexedFunctionName */
+
+/**
+ * $ANTLR start badIndexedFunctionName
+ * ../../../../../../src/parser/smt2/Smt2.g:2356:1: badIndexedFunctionName : id= ( SIMPLE_SYMBOL | QUOTED_SYMBOL | UNTERMINATED_QUOTED_SYMBOL ) ;
+ */
+static void
+badIndexedFunctionName(pSmt2Parser ctx)
+{
+
+      std::string name;
+
+    pANTLR3_COMMON_TOKEN    id;
+
+    /* Initialize rule variables
+     */
+
+    id       = NULL;
+
+    {
+        // ../../../../../../src/parser/smt2/Smt2.g:2360:3: (id= ( SIMPLE_SYMBOL | QUOTED_SYMBOL | UNTERMINATED_QUOTED_SYMBOL ) )
+        // ../../../../../../src/parser/smt2/Smt2.g:2360:5: id= ( SIMPLE_SYMBOL | QUOTED_SYMBOL | UNTERMINATED_QUOTED_SYMBOL )
+        {
+            id=(pANTLR3_COMMON_TOKEN)LT(1);
+
+            if ( LA(1) == QUOTED_SYMBOL || LA(1) == SIMPLE_SYMBOL || LA(1) == UNTERMINATED_QUOTED_SYMBOL )
+            {
+                CONSUME();
+                PERRORRECOVERY=ANTLR3_FALSE;
+            }
+            else
+            {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+                EXCEPTION->expectingSet = NULL;
+
+                goto rulebadIndexedFunctionNameEx;
+            }
+
+
+            {
+                 PARSER_STATE->parseError(std::string("Unknown indexed function `") +
+                          AntlrInput::tokenText(id) + "'");
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulebadIndexedFunctionNameEx; /* Prevent compiler warnings */
+    rulebadIndexedFunctionNameEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end badIndexedFunctionName */
+
+/**
+ * $ANTLR start termList
+ * ../../../../../../src/parser/smt2/Smt2.g:2374:1: termList[std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr] : ( term[expr, expr2] )+ ;
+ */
+static void
+termList(pSmt2Parser ctx, std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr)
+{
+
+      Expr expr2;
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/smt2/Smt2.g:2378:3: ( ( term[expr, expr2] )+ )
+        // ../../../../../../src/parser/smt2/Smt2.g:2378:5: ( term[expr, expr2] )+
+        {
+            // ../../../../../../src/parser/smt2/Smt2.g:2378:5: ( term[expr, expr2] )+
+            {
+                int cnt53=0;
+
+                for (;;)
+                {
+                    int alt53=2;
+            	switch ( LA(1) )
+            	{
+            	case BINARY_LITERAL:
+            	case CHECK_SYNTH_TOK:
+            	case CONSTRAINT_TOK:
+            	case DECIMAL_LITERAL:
+            	case DECLARE_PRIMED_VAR_TOK:
+            	case DECLARE_VAR_TOK:
+            	case EMPTYSET_TOK:
+            	case FP_RNA_FULL_TOK:
+            	case FP_RNA_TOK:
+            	case FP_RNE_FULL_TOK:
+            	case FP_RNE_TOK:
+            	case FP_RTN_FULL_TOK:
+            	case FP_RTN_TOK:
+            	case FP_RTP_FULL_TOK:
+            	case FP_RTP_TOK:
+            	case FP_RTZ_FULL_TOK:
+            	case FP_RTZ_TOK:
+            	case HEX_LITERAL:
+            	case INTEGER_LITERAL:
+            	case INV_CONSTRAINT_TOK:
+            	case LPAREN_TOK:
+            	case NILREF_TOK:
+            	case QUOTED_SYMBOL:
+            	case REALLCHAR_TOK:
+            	case RENOSTR_TOK:
+            	case SET_OPTIONS_TOK:
+            	case SIMPLE_SYMBOL:
+            	case STRING_LITERAL_2_0:
+            	case STRING_LITERAL_2_5:
+            	case SYNTH_FUN_TOK:
+            	case SYNTH_INV_TOK:
+            	case UNIVSET_TOK:
+            	case UNTERMINATED_QUOTED_SYMBOL:
+            	case 147:
+            		{
+            			alt53=1;
+            		}
+            	    break;
+
+            	}
+
+            	switch (alt53)
+            	{
+            	    case 1:
+            	        // ../../../../../../src/parser/smt2/Smt2.g:2378:7: term[expr, expr2]
+            	        {
+            	            FOLLOWPUSH(FOLLOW_term_in_termList4843);
+            	            term(ctx, expr, expr2);
+
+            	            FOLLOWPOP();
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto ruletermListEx;
+            	            }
+
+
+            	            {
+            	                 formulas.push_back(expr); 
+            	            }
+
+
+            	        }
+            	        break;
+
+            	    default:
+
+            		if ( cnt53 >= 1 )
+            		{
+            		    goto loop53;
+            		}
+            		/* mismatchedSetEx()
+            		 */
+            		CONSTRUCTEX();
+            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+            		goto ruletermListEx;
+            	}
+            	cnt53++;
+                }
+                loop53: ;	/* Jump to here if this rule does not match */
+            }
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletermListEx; /* Prevent compiler warnings */
+    ruletermListEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end termList */
+
+/**
+ * $ANTLR start str
+ * ../../../../../../src/parser/smt2/Smt2.g:2384:1: str[std::string& s, bool fsmtlib] : ( STRING_LITERAL_2_0 | STRING_LITERAL_2_5 );
+ */
+static void
+str(pSmt2Parser ctx, std::string& s, bool fsmtlib)
+{
+    pANTLR3_COMMON_TOKEN    STRING_LITERAL_2_020;
+    pANTLR3_COMMON_TOKEN    STRING_LITERAL_2_521;
+
+    /* Initialize rule variables
+     */
+
+    STRING_LITERAL_2_020       = NULL;
+    STRING_LITERAL_2_521       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/smt2/Smt2.g:2385:3: ( STRING_LITERAL_2_0 | STRING_LITERAL_2_5 )
+
+            ANTLR3_UINT32 alt54;
+
+            alt54=2;
+
+            switch ( LA(1) )
+            {
+            case STRING_LITERAL_2_0:
+            	{
+            		alt54=1;
+            	}
+                break;
+            case STRING_LITERAL_2_5:
+            	{
+            		alt54=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 54;
+                EXCEPTION->state        = 0;
+
+
+                goto rulestrEx;
+
+            }
+
+            switch (alt54)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2385:5: STRING_LITERAL_2_0
+        	    {
+        	        STRING_LITERAL_2_020 = (pANTLR3_COMMON_TOKEN) MATCHT(STRING_LITERAL_2_0, &FOLLOW_STRING_LITERAL_2_0_in_str4865);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestrEx;
+        	        }
+
+
+        	        {
+        	             s = AntlrInput::tokenText(STRING_LITERAL_2_020);
+        	                  /* strip off the quotes */
+        	                  s = s.substr(1, s.size() - 2);
+        	                  for(size_t i=0; i<s.size(); i++) {
+        	                    if((unsigned)s[i] > 127 && !isprint(s[i])) {
+        	                      PARSER_STATE->parseError("Extended/unprintable characters are not "
+        	                                               "part of SMT-LIB, and they must be encoded "
+        	                                               "as escape sequences");
+        	                    }
+        	                  }
+        	                  if(fsmtlib) {
+        	                    /* handle SMT-LIB standard escapes '\\' and '\"' */
+        	                    char* p_orig = strdup(s.c_str());
+        	                    char *p = p_orig, *q = p_orig;
+        	                    while(*q != '\0') {
+        	                      if(*q == '\\') {
+        	                        ++q;
+        	                        if(*q == '\\' || *q == '"') {
+        	                          *p++ = *q++;
+        	                        } else {
+        	                          assert(*q != '\0');
+        	                          *p++ = '\\';
+        	                          *p++ = *q++;
+        	                        }
+        	                      } else {
+        	                        *p++ = *q++;
+        	                      }
+        	                    }
+        	                    *p = '\0';
+        	                    s = p_orig;
+        	                    free(p_orig);
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2419:5: STRING_LITERAL_2_5
+        	    {
+        	        STRING_LITERAL_2_521 = (pANTLR3_COMMON_TOKEN) MATCHT(STRING_LITERAL_2_5, &FOLLOW_STRING_LITERAL_2_5_in_str4877);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulestrEx;
+        	        }
+
+
+        	        {
+        	             s = AntlrInput::tokenText(STRING_LITERAL_2_521);
+        	                  /* strip off the quotes */
+        	                  s = s.substr(1, s.size() - 2);
+        	                  for(size_t i=0; i<s.size(); i++) {
+        	                    if((unsigned)s[i] > 127 && !isprint(s[i])) {
+        	                      PARSER_STATE->parseError("Extended/unprintable characters are not "
+        	                                               "part of SMT-LIB, and they must be encoded "
+        	                                               "as escape sequences");
+        	                    }
+        	                  }
+        	                  // In the 2.5 version, always handle escapes (regardless of fsmtlib flag).
+        	                  char* p_orig = strdup(s.c_str());
+        	                  char *p = p_orig, *q = p_orig;
+        	                  while(*q != '\0') {
+        	                    if(*q == '"') {
+        	                      ++q;
+        	                      assert(*q == '"');
+        	                    }
+        	                    *p++ = *q++;
+        	                  }
+        	                  *p = '\0';
+        	                  s = p_orig;
+        	                  free(p_orig);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulestrEx; /* Prevent compiler warnings */
+    rulestrEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end str */
+
+/**
+ * $ANTLR start builtinOp
+ * ../../../../../../src/parser/smt2/Smt2.g:2449:1: builtinOp[CVC4::Kind& kind] : ( NOT_TOK | IMPLIES_TOK | AND_TOK | OR_TOK | XOR_TOK | EQUAL_TOK | DISTINCT_TOK | ITE_TOK | GREATER_THAN_TOK | GREATER_THAN_EQUAL_TOK | LESS_THAN_EQUAL_TOK | LESS_THAN_TOK | PLUS_TOK | MINUS_TOK | STAR_TOK | DIV_TOK | BV2NAT_TOK | DTSIZE_TOK | FMFCARD_TOK | FMFCARDVAL_TOK | INST_CLOSURE_TOK );
+ */
+static void
+builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
+{
+    /* Initialize rule variables
+     */
+
+
+      Debug("parser") << "builtin: " << AntlrInput::tokenText(LT(1)) << std::endl;
+
+    {
+        {
+            //  ../../../../../../src/parser/smt2/Smt2.g:2453:3: ( NOT_TOK | IMPLIES_TOK | AND_TOK | OR_TOK | XOR_TOK | EQUAL_TOK | DISTINCT_TOK | ITE_TOK | GREATER_THAN_TOK | GREATER_THAN_EQUAL_TOK | LESS_THAN_EQUAL_TOK | LESS_THAN_TOK | PLUS_TOK | MINUS_TOK | STAR_TOK | DIV_TOK | BV2NAT_TOK | DTSIZE_TOK | FMFCARD_TOK | FMFCARDVAL_TOK | INST_CLOSURE_TOK )
+
+            ANTLR3_UINT32 alt55;
+
+            alt55=21;
+
+            switch ( LA(1) )
+            {
+            case NOT_TOK:
+            	{
+            		alt55=1;
+            	}
+                break;
+            case IMPLIES_TOK:
+            	{
+            		alt55=2;
+            	}
+                break;
+            case AND_TOK:
+            	{
+            		alt55=3;
+            	}
+                break;
+            case OR_TOK:
+            	{
+            		alt55=4;
+            	}
+                break;
+            case XOR_TOK:
+            	{
+            		alt55=5;
+            	}
+                break;
+            case EQUAL_TOK:
+            	{
+            		alt55=6;
+            	}
+                break;
+            case DISTINCT_TOK:
+            	{
+            		alt55=7;
+            	}
+                break;
+            case ITE_TOK:
+            	{
+            		alt55=8;
+            	}
+                break;
+            case GREATER_THAN_TOK:
+            	{
+            		alt55=9;
+            	}
+                break;
+            case GREATER_THAN_EQUAL_TOK:
+            	{
+            		alt55=10;
+            	}
+                break;
+            case LESS_THAN_EQUAL_TOK:
+            	{
+            		alt55=11;
+            	}
+                break;
+            case LESS_THAN_TOK:
+            	{
+            		alt55=12;
+            	}
+                break;
+            case PLUS_TOK:
+            	{
+            		alt55=13;
+            	}
+                break;
+            case MINUS_TOK:
+            	{
+            		alt55=14;
+            	}
+                break;
+            case STAR_TOK:
+            	{
+            		alt55=15;
+            	}
+                break;
+            case DIV_TOK:
+            	{
+            		alt55=16;
+            	}
+                break;
+            case BV2NAT_TOK:
+            	{
+            		alt55=17;
+            	}
+                break;
+            case DTSIZE_TOK:
+            	{
+            		alt55=18;
+            	}
+                break;
+            case FMFCARD_TOK:
+            	{
+            		alt55=19;
+            	}
+                break;
+            case FMFCARDVAL_TOK:
+            	{
+            		alt55=20;
+            	}
+                break;
+            case INST_CLOSURE_TOK:
+            	{
+            		alt55=21;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 55;
+                EXCEPTION->state        = 0;
+
+
+                goto rulebuiltinOpEx;
+
+            }
+
+            switch (alt55)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2453:5: NOT_TOK
+        	    {
+        	         MATCHT(NOT_TOK, &FOLLOW_NOT_TOK_in_builtinOp4904);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::NOT;     
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2454:5: IMPLIES_TOK
+        	    {
+        	         MATCHT(IMPLIES_TOK, &FOLLOW_IMPLIES_TOK_in_builtinOp4917);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::IMPLIES; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2455:5: AND_TOK
+        	    {
+        	         MATCHT(AND_TOK, &FOLLOW_AND_TOK_in_builtinOp4926);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::AND;     
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2456:5: OR_TOK
+        	    {
+        	         MATCHT(OR_TOK, &FOLLOW_OR_TOK_in_builtinOp4939);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::OR;      
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2457:5: XOR_TOK
+        	    {
+        	         MATCHT(XOR_TOK, &FOLLOW_XOR_TOK_in_builtinOp4953);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::XOR;     
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2458:5: EQUAL_TOK
+        	    {
+        	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_builtinOp4966);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::EQUAL;   
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2459:5: DISTINCT_TOK
+        	    {
+        	         MATCHT(DISTINCT_TOK, &FOLLOW_DISTINCT_TOK_in_builtinOp4977);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::DISTINCT; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 8:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2460:5: ITE_TOK
+        	    {
+        	         MATCHT(ITE_TOK, &FOLLOW_ITE_TOK_in_builtinOp4985);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::ITE; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 9:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2461:5: GREATER_THAN_TOK
+        	    {
+        	         MATCHT(GREATER_THAN_TOK, &FOLLOW_GREATER_THAN_TOK_in_builtinOp4998);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::GT; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 10:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2463:5: GREATER_THAN_EQUAL_TOK
+        	    {
+        	         MATCHT(GREATER_THAN_EQUAL_TOK, &FOLLOW_GREATER_THAN_EQUAL_TOK_in_builtinOp5023);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::GEQ; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 11:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2465:5: LESS_THAN_EQUAL_TOK
+        	    {
+        	         MATCHT(LESS_THAN_EQUAL_TOK, &FOLLOW_LESS_THAN_EQUAL_TOK_in_builtinOp5048);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::LEQ; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 12:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2467:5: LESS_THAN_TOK
+        	    {
+        	         MATCHT(LESS_THAN_TOK, &FOLLOW_LESS_THAN_TOK_in_builtinOp5073);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::LT; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 13:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2469:5: PLUS_TOK
+        	    {
+        	         MATCHT(PLUS_TOK, &FOLLOW_PLUS_TOK_in_builtinOp5098);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::PLUS; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 14:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2470:5: MINUS_TOK
+        	    {
+        	         MATCHT(MINUS_TOK, &FOLLOW_MINUS_TOK_in_builtinOp5110);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::MINUS; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 15:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2471:5: STAR_TOK
+        	    {
+        	         MATCHT(STAR_TOK, &FOLLOW_STAR_TOK_in_builtinOp5121);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::MULT; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 16:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2472:5: DIV_TOK
+        	    {
+        	         MATCHT(DIV_TOK, &FOLLOW_DIV_TOK_in_builtinOp5133);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::DIVISION; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 17:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2474:5: BV2NAT_TOK
+        	    {
+        	         MATCHT(BV2NAT_TOK, &FOLLOW_BV2NAT_TOK_in_builtinOp5147);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::BITVECTOR_TO_NAT;
+        	                  if(PARSER_STATE->strictModeEnabled()) {
+        	                    PARSER_STATE->parseError("bv2nat and int2bv are not part of SMT-LIB, "
+        	                                             "and aren't available in SMT-LIB strict "
+        	                                             "compliance mode");
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 18:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2483:5: DTSIZE_TOK
+        	    {
+        	         MATCHT(DTSIZE_TOK, &FOLLOW_DTSIZE_TOK_in_builtinOp5160);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::DT_SIZE; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 19:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2484:5: FMFCARD_TOK
+        	    {
+        	         MATCHT(FMFCARD_TOK, &FOLLOW_FMFCARD_TOK_in_builtinOp5174);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::CARDINALITY_CONSTRAINT; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 20:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2485:5: FMFCARDVAL_TOK
+        	    {
+        	         MATCHT(FMFCARDVAL_TOK, &FOLLOW_FMFCARDVAL_TOK_in_builtinOp5187);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::CARDINALITY_VALUE; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 21:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2486:5: INST_CLOSURE_TOK
+        	    {
+        	         MATCHT(INST_CLOSURE_TOK, &FOLLOW_INST_CLOSURE_TOK_in_builtinOp5197);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebuiltinOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::INST_CLOSURE; 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulebuiltinOpEx; /* Prevent compiler warnings */
+    rulebuiltinOpEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end builtinOp */
+
+/**
+ * $ANTLR start quantOp
+ * ../../../../../../src/parser/smt2/Smt2.g:2496:1: quantOp[CVC4::Kind& kind] : ( EXISTS_TOK | FORALL_TOK );
+ */
+static void
+quantOp(pSmt2Parser ctx, CVC4::Kind& kind)
+{
+    /* Initialize rule variables
+     */
+
+
+      Debug("parser") << "quant: " << AntlrInput::tokenText(LT(1)) << std::endl;
+
+    {
+        {
+            //  ../../../../../../src/parser/smt2/Smt2.g:2500:3: ( EXISTS_TOK | FORALL_TOK )
+
+            ANTLR3_UINT32 alt56;
+
+            alt56=2;
+
+            switch ( LA(1) )
+            {
+            case EXISTS_TOK:
+            	{
+            		alt56=1;
+            	}
+                break;
+            case FORALL_TOK:
+            	{
+            		alt56=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 56;
+                EXCEPTION->state        = 0;
+
+
+                goto rulequantOpEx;
+
+            }
+
+            switch (alt56)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2500:5: EXISTS_TOK
+        	    {
+        	         MATCHT(EXISTS_TOK, &FOLLOW_EXISTS_TOK_in_quantOp5239);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulequantOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::EXISTS; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2501:5: FORALL_TOK
+        	    {
+        	         MATCHT(FORALL_TOK, &FOLLOW_FORALL_TOK_in_quantOp5250);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulequantOpEx;
+        	        }
+
+
+        	        {
+        	             kind= CVC4::kind::FORALL; 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulequantOpEx; /* Prevent compiler warnings */
+    rulequantOpEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end quantOp */
+
+/**
+ * $ANTLR start functionName
+ * ../../../../../../src/parser/smt2/Smt2.g:2508:1: functionName[std::string& name, CVC4::parser::DeclarationCheck check] : symbol[name,check,SYM_VARIABLE] ;
+ */
+static void
+functionName(pSmt2Parser ctx, std::string& name, CVC4::parser::DeclarationCheck check)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/smt2/Smt2.g:2509:3: ( symbol[name,check,SYM_VARIABLE] )
+        // ../../../../../../src/parser/smt2/Smt2.g:2509:5: symbol[name,check,SYM_VARIABLE]
+        {
+            FOLLOWPUSH(FOLLOW_symbol_in_functionName5271);
+            symbol(ctx, name, check, SYM_VARIABLE);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulefunctionNameEx;
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulefunctionNameEx; /* Prevent compiler warnings */
+    rulefunctionNameEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end functionName */
+
+/**
+ * $ANTLR start sortList
+ * ../../../../../../src/parser/smt2/Smt2.g:2516:1: sortList[std::vector<CVC4::Type>& sorts] : ( sortSymbol[t,CHECK_DECLARED] )* ;
+ */
+static void
+sortList(pSmt2Parser ctx, std::vector<CVC4::Type>& sorts)
+{
+
+      Type t;
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/smt2/Smt2.g:2520:3: ( ( sortSymbol[t,CHECK_DECLARED] )* )
+        // ../../../../../../src/parser/smt2/Smt2.g:2520:5: ( sortSymbol[t,CHECK_DECLARED] )*
+        {
+            // ../../../../../../src/parser/smt2/Smt2.g:2520:5: ( sortSymbol[t,CHECK_DECLARED] )*
+
+            for (;;)
+            {
+                int alt57=2;
+                switch ( LA(1) )
+                {
+                case CHECK_SYNTH_TOK:
+                case CONSTRAINT_TOK:
+                case DECLARE_PRIMED_VAR_TOK:
+                case DECLARE_VAR_TOK:
+                case INV_CONSTRAINT_TOK:
+                case LPAREN_TOK:
+                case QUOTED_SYMBOL:
+                case SET_OPTIONS_TOK:
+                case SIMPLE_SYMBOL:
+                case SYNTH_FUN_TOK:
+                case SYNTH_INV_TOK:
+                case UNTERMINATED_QUOTED_SYMBOL:
+                case 147:
+                	{
+                		alt57=1;
+                	}
+                    break;
+
+                }
+
+                switch (alt57)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2520:7: sortSymbol[t,CHECK_DECLARED]
+            	    {
+            	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sortList5295);
+            	        sortSymbol(ctx, t, CHECK_DECLARED);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulesortListEx;
+            	        }
+
+
+            	        {
+            	             sorts.push_back(t); 
+            	        }
+
+
+            	    }
+            	    break;
+
+            	default:
+            	    goto loop57;	/* break out of the loop */
+            	    break;
+                }
+            }
+            loop57: ; /* Jump out to here if this rule does not match */
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesortListEx; /* Prevent compiler warnings */
+    rulesortListEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end sortList */
+
+/**
+ * $ANTLR start nonemptySortList
+ * ../../../../../../src/parser/smt2/Smt2.g:2523:1: nonemptySortList[std::vector<CVC4::Type>& sorts] : ( sortSymbol[t,CHECK_DECLARED] )+ ;
+ */
+static void
+nonemptySortList(pSmt2Parser ctx, std::vector<CVC4::Type>& sorts)
+{
+
+      Type t;
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/smt2/Smt2.g:2527:3: ( ( sortSymbol[t,CHECK_DECLARED] )+ )
+        // ../../../../../../src/parser/smt2/Smt2.g:2527:5: ( sortSymbol[t,CHECK_DECLARED] )+
+        {
+            // ../../../../../../src/parser/smt2/Smt2.g:2527:5: ( sortSymbol[t,CHECK_DECLARED] )+
+            {
+                int cnt58=0;
+
+                for (;;)
+                {
+                    int alt58=2;
+            	switch ( LA(1) )
+            	{
+            	case CHECK_SYNTH_TOK:
+            	case CONSTRAINT_TOK:
+            	case DECLARE_PRIMED_VAR_TOK:
+            	case DECLARE_VAR_TOK:
+            	case INV_CONSTRAINT_TOK:
+            	case LPAREN_TOK:
+            	case QUOTED_SYMBOL:
+            	case SET_OPTIONS_TOK:
+            	case SIMPLE_SYMBOL:
+            	case SYNTH_FUN_TOK:
+            	case SYNTH_INV_TOK:
+            	case UNTERMINATED_QUOTED_SYMBOL:
+            	case 147:
+            		{
+            			alt58=1;
+            		}
+            	    break;
+
+            	}
+
+            	switch (alt58)
+            	{
+            	    case 1:
+            	        // ../../../../../../src/parser/smt2/Smt2.g:2527:7: sortSymbol[t,CHECK_DECLARED]
+            	        {
+            	            FOLLOWPUSH(FOLLOW_sortSymbol_in_nonemptySortList5322);
+            	            sortSymbol(ctx, t, CHECK_DECLARED);
+
+            	            FOLLOWPOP();
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto rulenonemptySortListEx;
+            	            }
+
+
+            	            {
+            	                 sorts.push_back(t); 
+            	            }
+
+
+            	        }
+            	        break;
+
+            	    default:
+
+            		if ( cnt58 >= 1 )
+            		{
+            		    goto loop58;
+            		}
+            		/* mismatchedSetEx()
+            		 */
+            		CONSTRUCTEX();
+            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+            		goto rulenonemptySortListEx;
+            	}
+            	cnt58++;
+                }
+                loop58: ;	/* Jump to here if this rule does not match */
+            }
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulenonemptySortListEx; /* Prevent compiler warnings */
+    rulenonemptySortListEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end nonemptySortList */
+
+/**
+ * $ANTLR start sortedVarList
+ * ../../../../../../src/parser/smt2/Smt2.g:2534:1: sortedVarList[std::vector<std::pair<std::string, CVC4::Type> >& sortedVars] : ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )* ;
+ */
+static void
+sortedVarList(pSmt2Parser ctx, std::vector<std::pair<std::string, CVC4::Type> >& sortedVars)
+{
+
+      std::string name;
+      Type t;
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/smt2/Smt2.g:2539:3: ( ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )* )
+        // ../../../../../../src/parser/smt2/Smt2.g:2539:5: ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )*
+        {
+            // ../../../../../../src/parser/smt2/Smt2.g:2539:5: ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )*
+
+            for (;;)
+            {
+                int alt59=2;
+                switch ( LA(1) )
+                {
+                case LPAREN_TOK:
+                	{
+                		alt59=1;
+                	}
+                    break;
+
+                }
+
+                switch (alt59)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2539:7: LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] RPAREN_TOK
+            	    {
+            	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sortedVarList5351);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulesortedVarListEx;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_symbol_in_sortedVarList5353);
+            	        symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulesortedVarListEx;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sortedVarList5362);
+            	        sortSymbol(ctx, t, CHECK_DECLARED);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulesortedVarListEx;
+            	        }
+
+
+            	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sortedVarList5365);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulesortedVarListEx;
+            	        }
+
+
+            	        {
+            	             sortedVars.push_back(make_pair(name, t)); 
+            	        }
+
+
+            	    }
+            	    break;
+
+            	default:
+            	    goto loop59;	/* break out of the loop */
+            	    break;
+                }
+            }
+            loop59: ; /* Jump out to here if this rule does not match */
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesortedVarListEx; /* Prevent compiler warnings */
+    rulesortedVarListEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end sortedVarList */
+
+/**
+ * $ANTLR start sortName
+ * ../../../../../../src/parser/smt2/Smt2.g:2549:1: sortName[std::string& name, CVC4::parser::DeclarationCheck check] : symbol[name,check,SYM_SORT] ;
+ */
+static void
+sortName(pSmt2Parser ctx, std::string& name, CVC4::parser::DeclarationCheck check)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/smt2/Smt2.g:2550:3: ( symbol[name,check,SYM_SORT] )
+        // ../../../../../../src/parser/smt2/Smt2.g:2550:5: symbol[name,check,SYM_SORT]
+        {
+            FOLLOWPUSH(FOLLOW_symbol_in_sortName5396);
+            symbol(ctx, name, check, SYM_SORT);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulesortNameEx;
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesortNameEx; /* Prevent compiler warnings */
+    rulesortNameEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end sortName */
+
+/**
+ * $ANTLR start sortSymbol
+ * ../../../../../../src/parser/smt2/Smt2.g:2553:1: sortSymbol[CVC4::Type& t, CVC4::parser::DeclarationCheck check] : ( sortName[name,CHECK_NONE] | LPAREN_TOK ( INDEX_TOK |) symbol[name,CHECK_NONE,SYM_SORT] ( nonemptyNumeralList[numerals] | sortList[args] ) RPAREN_TOK );
+ */
+static void
+sortSymbol(pSmt2Parser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
+{
+
+      std::string name;
+      std::vector<CVC4::Type> args;
+      std::vector<uint64_t> numerals;
+      bool indexed = false;
+
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/smt2/Smt2.g:2560:3: ( sortName[name,CHECK_NONE] | LPAREN_TOK ( INDEX_TOK |) symbol[name,CHECK_NONE,SYM_SORT] ( nonemptyNumeralList[numerals] | sortList[args] ) RPAREN_TOK )
+
+            ANTLR3_UINT32 alt62;
+
+            alt62=2;
+
+            switch ( LA(1) )
+            {
+            case CHECK_SYNTH_TOK:
+            case CONSTRAINT_TOK:
+            case DECLARE_PRIMED_VAR_TOK:
+            case DECLARE_VAR_TOK:
+            case INV_CONSTRAINT_TOK:
+            case QUOTED_SYMBOL:
+            case SET_OPTIONS_TOK:
+            case SIMPLE_SYMBOL:
+            case SYNTH_FUN_TOK:
+            case SYNTH_INV_TOK:
+            case UNTERMINATED_QUOTED_SYMBOL:
+            case 147:
+            	{
+            		alt62=1;
+            	}
+                break;
+            case LPAREN_TOK:
+            	{
+            		alt62=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 62;
+                EXCEPTION->state        = 0;
+
+
+                goto rulesortSymbolEx;
+
+            }
+
+            switch (alt62)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2560:5: sortName[name,CHECK_NONE]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_sortName_in_sortSymbol5416);
+        	        sortName(ctx, name, CHECK_NONE);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesortSymbolEx;
+        	        }
+
+
+        	        {
+
+        	                  if(check == CHECK_DECLARED || PARSER_STATE->isDeclared(name, SYM_SORT)) {
+        	                    t = PARSER_STATE->getSort(name);
+        	                  } else {
+        	                    t = PARSER_STATE->mkUnresolvedType(name);
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2568:5: LPAREN_TOK ( INDEX_TOK |) symbol[name,CHECK_NONE,SYM_SORT] ( nonemptyNumeralList[numerals] | sortList[args] ) RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sortSymbol5429);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesortSymbolEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:2568:16: ( INDEX_TOK |)
+        	        {
+        	            int alt60=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case INDEX_TOK:
+        	            	{
+        	            		alt60=1;
+        	            	}
+        	                break;
+        	            case CHECK_SYNTH_TOK:
+        	            case CONSTRAINT_TOK:
+        	            case DECLARE_PRIMED_VAR_TOK:
+        	            case DECLARE_VAR_TOK:
+        	            case INV_CONSTRAINT_TOK:
+        	            case QUOTED_SYMBOL:
+        	            case SET_OPTIONS_TOK:
+        	            case SIMPLE_SYMBOL:
+        	            case SYNTH_FUN_TOK:
+        	            case SYNTH_INV_TOK:
+        	            case UNTERMINATED_QUOTED_SYMBOL:
+        	            case 147:
+        	            	{
+        	            		alt60=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 60;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulesortSymbolEx;
+
+        	            }
+
+        	            switch (alt60)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2568:17: INDEX_TOK
+        	        	    {
+        	        	         MATCHT(INDEX_TOK, &FOLLOW_INDEX_TOK_in_sortSymbol5432);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesortSymbolEx;
+        	        	        }
+
+
+        	        	        {
+        	        	            indexed = true;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2568:47: 
+        	        	    {
+        	        	        {
+        	        	            indexed = false;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        FOLLOWPUSH(FOLLOW_symbol_in_sortSymbol5445);
+        	        symbol(ctx, name, CHECK_NONE, SYM_SORT);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesortSymbolEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:2570:5: ( nonemptyNumeralList[numerals] | sortList[args] )
+        	        {
+        	            int alt61=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case INTEGER_LITERAL:
+        	            	{
+        	            		alt61=1;
+        	            	}
+        	                break;
+        	            case CHECK_SYNTH_TOK:
+        	            case CONSTRAINT_TOK:
+        	            case DECLARE_PRIMED_VAR_TOK:
+        	            case DECLARE_VAR_TOK:
+        	            case INV_CONSTRAINT_TOK:
+        	            case LPAREN_TOK:
+        	            case QUOTED_SYMBOL:
+        	            case RPAREN_TOK:
+        	            case SET_OPTIONS_TOK:
+        	            case SIMPLE_SYMBOL:
+        	            case SYNTH_FUN_TOK:
+        	            case SYNTH_INV_TOK:
+        	            case UNTERMINATED_QUOTED_SYMBOL:
+        	            case 147:
+        	            	{
+        	            		alt61=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 61;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulesortSymbolEx;
+
+        	            }
+
+        	            switch (alt61)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2570:7: nonemptyNumeralList[numerals]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_nonemptyNumeralList_in_sortSymbol5454);
+        	        	        nonemptyNumeralList(ctx, numerals);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesortSymbolEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             // allow sygus inputs to elide the `_'
+        	        	                    if( !indexed && !PARSER_STATE->sygus() ) {
+        	        	                      std::stringstream ss;
+        	        	                      ss << "SMT-LIB requires use of an indexed sort here, e.g. (_ " << name
+        	        	                         << " ...)";
+        	        	                      PARSER_STATE->parseError(ss.str());
+        	        	                    }
+        	        	                    if( name == "BitVec" ) {
+        	        	                      if( numerals.size() != 1 ) {
+        	        	                        PARSER_STATE->parseError("Illegal bitvector type.");
+        	        	                      }
+        	        	                      if(numerals.front() == 0) {
+        	        	                        PARSER_STATE->parseError("Illegal bitvector size: 0");
+        	        	                      }
+        	        	                      t = EXPR_MANAGER->mkBitVectorType(numerals.front());
+        	        	                    } else if ( name == "FloatingPoint" ) {
+        	        	                      if( numerals.size() != 2 ) {
+        	        	                        PARSER_STATE->parseError("Illegal floating-point type.");
+        	        	                      }
+        	        	                      if(!validExponentSize(numerals[0])) {
+        	        	                        PARSER_STATE->parseError("Illegal floating-point exponent size");
+        	        	                      }
+        	        	                      if(!validSignificandSize(numerals[1])) {
+        	        	                        PARSER_STATE->parseError("Illegal floating-point significand size");
+        	        	                      }
+        	        	                      t = EXPR_MANAGER->mkFloatingPointType(numerals[0],numerals[1]);
+        	        	                    } else {
+        	        	                      std::stringstream ss;
+        	        	                      ss << "unknown indexed sort symbol `" << name << "'";
+        	        	                      PARSER_STATE->parseError(ss.str());
+        	        	                    }
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2603:7: sortList[args]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_sortList_in_sortSymbol5471);
+        	        	        sortList(ctx, args);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesortSymbolEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             if( indexed ) {
+        	        	                      std::stringstream ss;
+        	        	                      ss << "Unexpected use of indexing operator `_' before `" << name
+        	        	                         << "', try leaving it out";
+        	        	                      PARSER_STATE->parseError(ss.str());
+        	        	                    }
+        	        	                    if(args.empty()) {
+        	        	                      PARSER_STATE->parseError("Extra parentheses around sort name not "
+        	        	                                               "permitted in SMT-LIB");
+        	        	                    } else if(name == "Array" &&
+        	        	                       PARSER_STATE->isTheoryEnabled(Smt2::THEORY_ARRAYS) ) {
+        	        	                      if(args.size() != 2) {
+        	        	                        PARSER_STATE->parseError("Illegal array type.");
+        	        	                      }
+        	        	                      t = EXPR_MANAGER->mkArrayType( args[0], args[1] );
+        	        	                    } else if(name == "Set" &&
+        	        	                              PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS) ) {
+        	        	                      if(args.size() != 1) {
+        	        	                        PARSER_STATE->parseError("Illegal set type.");
+        	        	                      }
+        	        	                      t = EXPR_MANAGER->mkSetType( args[0] );
+        	        	                    } else if(check == CHECK_DECLARED ||
+        	        	                              PARSER_STATE->isDeclared(name, SYM_SORT)) {
+        	        	                      t = PARSER_STATE->getSort(name, args);
+        	        	                    } else {
+        	        	                      // make unresolved type
+        	        	                      if(args.empty()) {
+        	        	                        t = PARSER_STATE->mkUnresolvedType(name);
+        	        	                        Debug("parser-param") << "param: make unres type " << name
+        	        	                                              << std::endl;
+        	        	                      } else {
+        	        	                        t = PARSER_STATE->mkUnresolvedTypeConstructor(name,args);
+        	        	                        t = SortConstructorType(t).instantiate( args );
+        	        	                        Debug("parser-param")
+        	        	                            << "param: make unres param type " << name << " " << args.size()
+        	        	                            << " " << PARSER_STATE->getArity( name ) << std::endl;
+        	        	                      }
+        	        	                    }
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sortSymbol5488);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesortSymbolEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesortSymbolEx; /* Prevent compiler warnings */
+    rulesortSymbolEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end sortSymbol */
+
+/**
+ * $ANTLR start symbolList
+ * ../../../../../../src/parser/smt2/Smt2.g:2650:1: symbolList[std::vector<std::string>& names,\n CVC4::parser::DeclarationCheck check,\n CVC4::parser::SymbolType type] : ( symbol[id,check,type] )* ;
+ */
+static void
+symbolList(pSmt2Parser ctx, std::vector<std::string>& names, CVC4::parser::DeclarationCheck check, CVC4::parser::SymbolType type)
+{
+
+      std::string id;
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/smt2/Smt2.g:2656:3: ( ( symbol[id,check,type] )* )
+        // ../../../../../../src/parser/smt2/Smt2.g:2656:5: ( symbol[id,check,type] )*
+        {
+            // ../../../../../../src/parser/smt2/Smt2.g:2656:5: ( symbol[id,check,type] )*
+
+            for (;;)
+            {
+                int alt63=2;
+                switch ( LA(1) )
+                {
+                case CHECK_SYNTH_TOK:
+                case CONSTRAINT_TOK:
+                case DECLARE_PRIMED_VAR_TOK:
+                case DECLARE_VAR_TOK:
+                case INV_CONSTRAINT_TOK:
+                case QUOTED_SYMBOL:
+                case SET_OPTIONS_TOK:
+                case SIMPLE_SYMBOL:
+                case SYNTH_FUN_TOK:
+                case SYNTH_INV_TOK:
+                case UNTERMINATED_QUOTED_SYMBOL:
+                case 147:
+                	{
+                		alt63=1;
+                	}
+                    break;
+
+                }
+
+                switch (alt63)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2656:7: symbol[id,check,type]
+            	    {
+            	        FOLLOWPUSH(FOLLOW_symbol_in_symbolList5511);
+            	        symbol(ctx, id, check, type);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulesymbolListEx;
+            	        }
+
+
+            	        {
+            	             names.push_back(id); 
+            	        }
+
+
+            	    }
+            	    break;
+
+            	default:
+            	    goto loop63;	/* break out of the loop */
+            	    break;
+                }
+            }
+            loop63: ; /* Jump out to here if this rule does not match */
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesymbolListEx; /* Prevent compiler warnings */
+    rulesymbolListEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end symbolList */
+
+/**
+ * $ANTLR start symbol
+ * ../../../../../../src/parser/smt2/Smt2.g:2665:1: symbol[std::string& id,\n CVC4::parser::DeclarationCheck check,\n CVC4::parser::SymbolType type] : ( SIMPLE_SYMBOL | ( 'repeat' | SET_OPTIONS_TOK | DECLARE_VAR_TOK | DECLARE_PRIMED_VAR_TOK | SYNTH_FUN_TOK | SYNTH_INV_TOK | CONSTRAINT_TOK | INV_CONSTRAINT_TOK | CHECK_SYNTH_TOK ) | QUOTED_SYMBOL | UNTERMINATED_QUOTED_SYMBOL ( EOF | '\\\\' ) );
+ */
+static void
+symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, CVC4::parser::SymbolType type)
+{
+    pANTLR3_COMMON_TOKEN    SIMPLE_SYMBOL22;
+    pANTLR3_COMMON_TOKEN    QUOTED_SYMBOL23;
+
+    /* Initialize rule variables
+     */
+
+    SIMPLE_SYMBOL22       = NULL;
+    QUOTED_SYMBOL23       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/smt2/Smt2.g:2668:3: ( SIMPLE_SYMBOL | ( 'repeat' | SET_OPTIONS_TOK | DECLARE_VAR_TOK | DECLARE_PRIMED_VAR_TOK | SYNTH_FUN_TOK | SYNTH_INV_TOK | CONSTRAINT_TOK | INV_CONSTRAINT_TOK | CHECK_SYNTH_TOK ) | QUOTED_SYMBOL | UNTERMINATED_QUOTED_SYMBOL ( EOF | '\\\\' ) )
+
+            ANTLR3_UINT32 alt66;
+
+            alt66=4;
+
+            switch ( LA(1) )
+            {
+            case SIMPLE_SYMBOL:
+            	{
+            		alt66=1;
+            	}
+                break;
+            case CHECK_SYNTH_TOK:
+            case CONSTRAINT_TOK:
+            case DECLARE_PRIMED_VAR_TOK:
+            case DECLARE_VAR_TOK:
+            case INV_CONSTRAINT_TOK:
+            case SET_OPTIONS_TOK:
+            case SYNTH_FUN_TOK:
+            case SYNTH_INV_TOK:
+            case 147:
+            	{
+            		alt66=2;
+            	}
+                break;
+            case QUOTED_SYMBOL:
+            	{
+            		alt66=3;
+            	}
+                break;
+            case UNTERMINATED_QUOTED_SYMBOL:
+            	{
+            		alt66=4;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 66;
+                EXCEPTION->state        = 0;
+
+
+                goto rulesymbolEx;
+
+            }
+
+            switch (alt66)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2668:5: SIMPLE_SYMBOL
+        	    {
+        	        SIMPLE_SYMBOL22 = (pANTLR3_COMMON_TOKEN) MATCHT(SIMPLE_SYMBOL, &FOLLOW_SIMPLE_SYMBOL_in_symbol5533);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesymbolEx;
+        	        }
+
+
+        	        {
+        	             id = AntlrInput::tokenText(SIMPLE_SYMBOL22);
+        	                  if(!PARSER_STATE->isAbstractValue(id)) {
+        	                    // if an abstract value, SmtEngine handles declaration
+        	                    PARSER_STATE->checkDeclaration(id, check, type);
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2675:5: ( 'repeat' | SET_OPTIONS_TOK | DECLARE_VAR_TOK | DECLARE_PRIMED_VAR_TOK | SYNTH_FUN_TOK | SYNTH_INV_TOK | CONSTRAINT_TOK | INV_CONSTRAINT_TOK | CHECK_SYNTH_TOK )
+        	    {
+        	        // ../../../../../../src/parser/smt2/Smt2.g:2675:5: ( 'repeat' | SET_OPTIONS_TOK | DECLARE_VAR_TOK | DECLARE_PRIMED_VAR_TOK | SYNTH_FUN_TOK | SYNTH_INV_TOK | CONSTRAINT_TOK | INV_CONSTRAINT_TOK | CHECK_SYNTH_TOK )
+        	        {
+        	            int alt64=9;
+        	            switch ( LA(1) )
+        	            {
+        	            case 147:
+        	            	{
+        	            		alt64=1;
+        	            	}
+        	                break;
+        	            case SET_OPTIONS_TOK:
+        	            	{
+        	            		alt64=2;
+        	            	}
+        	                break;
+        	            case DECLARE_VAR_TOK:
+        	            	{
+        	            		alt64=3;
+        	            	}
+        	                break;
+        	            case DECLARE_PRIMED_VAR_TOK:
+        	            	{
+        	            		alt64=4;
+        	            	}
+        	                break;
+        	            case SYNTH_FUN_TOK:
+        	            	{
+        	            		alt64=5;
+        	            	}
+        	                break;
+        	            case SYNTH_INV_TOK:
+        	            	{
+        	            		alt64=6;
+        	            	}
+        	                break;
+        	            case CONSTRAINT_TOK:
+        	            	{
+        	            		alt64=7;
+        	            	}
+        	                break;
+        	            case INV_CONSTRAINT_TOK:
+        	            	{
+        	            		alt64=8;
+        	            	}
+        	                break;
+        	            case CHECK_SYNTH_TOK:
+        	            	{
+        	            		alt64=9;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 64;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulesymbolEx;
+
+        	            }
+
+        	            switch (alt64)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2675:7: 'repeat'
+        	        	    {
+        	        	         MATCHT(147, &FOLLOW_147_in_symbol5547);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesymbolEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             id = "repeat"; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2678:7: SET_OPTIONS_TOK
+        	        	    {
+        	        	         MATCHT(SET_OPTIONS_TOK, &FOLLOW_SET_OPTIONS_TOK_in_symbol5563);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesymbolEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             id = "set-options"; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 3:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2679:7: DECLARE_VAR_TOK
+        	        	    {
+        	        	         MATCHT(DECLARE_VAR_TOK, &FOLLOW_DECLARE_VAR_TOK_in_symbol5573);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesymbolEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             id = "declare-var"; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 4:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2680:7: DECLARE_PRIMED_VAR_TOK
+        	        	    {
+        	        	         MATCHT(DECLARE_PRIMED_VAR_TOK, &FOLLOW_DECLARE_PRIMED_VAR_TOK_in_symbol5583);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesymbolEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             id = "declare-primed-var"; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 5:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2681:7: SYNTH_FUN_TOK
+        	        	    {
+        	        	         MATCHT(SYNTH_FUN_TOK, &FOLLOW_SYNTH_FUN_TOK_in_symbol5593);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesymbolEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             id = "synth-fun"; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 6:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2682:7: SYNTH_INV_TOK
+        	        	    {
+        	        	         MATCHT(SYNTH_INV_TOK, &FOLLOW_SYNTH_INV_TOK_in_symbol5603);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesymbolEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             id = "synth-inv"; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 7:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2683:7: CONSTRAINT_TOK
+        	        	    {
+        	        	         MATCHT(CONSTRAINT_TOK, &FOLLOW_CONSTRAINT_TOK_in_symbol5613);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesymbolEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             id = "constraint"; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 8:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2684:7: INV_CONSTRAINT_TOK
+        	        	    {
+        	        	         MATCHT(INV_CONSTRAINT_TOK, &FOLLOW_INV_CONSTRAINT_TOK_in_symbol5623);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesymbolEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             id = "inv-constraint"; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 9:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2685:7: CHECK_SYNTH_TOK
+        	        	    {
+        	        	         MATCHT(CHECK_SYNTH_TOK, &FOLLOW_CHECK_SYNTH_TOK_in_symbol5633);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesymbolEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             id = "check-synth"; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        {
+        	             PARSER_STATE->checkDeclaration(id, check, type); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2688:5: QUOTED_SYMBOL
+        	    {
+        	        QUOTED_SYMBOL23 = (pANTLR3_COMMON_TOKEN) MATCHT(QUOTED_SYMBOL, &FOLLOW_QUOTED_SYMBOL_in_symbol5653);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesymbolEx;
+        	        }
+
+
+        	        {
+        	             id = AntlrInput::tokenText(QUOTED_SYMBOL23);
+        	                  /* strip off the quotes */
+        	                  id = id.substr(1, id.size() - 2);
+        	                  if(!PARSER_STATE->isAbstractValue(id)) {
+        	                    // if an abstract value, SmtEngine handles declaration
+        	                    PARSER_STATE->checkDeclaration(id, check, type);
+        	                  }
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/smt2/Smt2.g:2697:5: UNTERMINATED_QUOTED_SYMBOL ( EOF | '\\\\' )
+        	    {
+        	         MATCHT(UNTERMINATED_QUOTED_SYMBOL, &FOLLOW_UNTERMINATED_QUOTED_SYMBOL_in_symbol5665);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesymbolEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/smt2/Smt2.g:2698:5: ( EOF | '\\\\' )
+        	        {
+        	            int alt65=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case EOF:
+        	            	{
+        	            		alt65=1;
+        	            	}
+        	                break;
+        	            case 145:
+        	            	{
+        	            		alt65=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 65;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto rulesymbolEx;
+
+        	            }
+
+        	            switch (alt65)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2698:7: EOF
+        	        	    {
+        	        	         MATCHT(EOF, &FOLLOW_EOF_in_symbol5673);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesymbolEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             PARSER_STATE->unexpectedEOF("unterminated |quoted| symbol"); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2700:7: '\\\\'
+        	        	    {
+        	        	         MATCHT(145, &FOLLOW_145_in_symbol5689);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto rulesymbolEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             PARSER_STATE->unexpectedEOF("backslash not permitted in |quoted| "
+        	        	                                                "symbol"); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesymbolEx; /* Prevent compiler warnings */
+    rulesymbolEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end symbol */
+
+/**
+ * $ANTLR start nonemptyNumeralList
+ * ../../../../../../src/parser/smt2/Smt2.g:2710:1: nonemptyNumeralList[std::vector<uint64_t>& numerals] : ( INTEGER_LITERAL )+ ;
+ */
+static void
+nonemptyNumeralList(pSmt2Parser ctx, std::vector<uint64_t>& numerals)
+{
+    pANTLR3_COMMON_TOKEN    INTEGER_LITERAL24;
+
+    /* Initialize rule variables
+     */
+
+    INTEGER_LITERAL24       = NULL;
+
+    {
+        // ../../../../../../src/parser/smt2/Smt2.g:2711:3: ( ( INTEGER_LITERAL )+ )
+        // ../../../../../../src/parser/smt2/Smt2.g:2711:5: ( INTEGER_LITERAL )+
+        {
+            // ../../../../../../src/parser/smt2/Smt2.g:2711:5: ( INTEGER_LITERAL )+
+            {
+                int cnt67=0;
+
+                for (;;)
+                {
+                    int alt67=2;
+            	switch ( LA(1) )
+            	{
+            	case INTEGER_LITERAL:
+            		{
+            			alt67=1;
+            		}
+            	    break;
+
+            	}
+
+            	switch (alt67)
+            	{
+            	    case 1:
+            	        // ../../../../../../src/parser/smt2/Smt2.g:2711:7: INTEGER_LITERAL
+            	        {
+            	            INTEGER_LITERAL24 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_nonemptyNumeralList5721);
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto rulenonemptyNumeralListEx;
+            	            }
+
+
+            	            {
+            	                 numerals.push_back(AntlrInput::tokenToUnsigned(INTEGER_LITERAL24)); 
+            	            }
+
+
+            	        }
+            	        break;
+
+            	    default:
+
+            		if ( cnt67 >= 1 )
+            		{
+            		    goto loop67;
+            		}
+            		/* mismatchedSetEx()
+            		 */
+            		CONSTRUCTEX();
+            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+            		goto rulenonemptyNumeralListEx;
+            	}
+            	cnt67++;
+                }
+                loop67: ;	/* Jump to here if this rule does not match */
+            }
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulenonemptyNumeralListEx; /* Prevent compiler warnings */
+    rulenonemptyNumeralListEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end nonemptyNumeralList */
+
+/**
+ * $ANTLR start datatypeDef
+ * ../../../../../../src/parser/smt2/Smt2.g:2719:1: datatypeDef[bool isCo, std::vector<CVC4::Datatype>& datatypes,\n std::vector< CVC4::Type >& params] : symbol[id,CHECK_NONE,SYM_SORT] ( LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK )+ ;
+ */
+static void
+datatypeDef(pSmt2Parser ctx, bool isCo, std::vector<CVC4::Datatype>& datatypes, std::vector< CVC4::Type >& params)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::string id;
+
+    {
+        // ../../../../../../src/parser/smt2/Smt2.g:2728:3: ( symbol[id,CHECK_NONE,SYM_SORT] ( LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK )+ )
+        // ../../../../../../src/parser/smt2/Smt2.g:2728:5: symbol[id,CHECK_NONE,SYM_SORT] ( LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK )+
+        {
+            FOLLOWPUSH(FOLLOW_symbol_in_datatypeDef5763);
+            symbol(ctx, id, CHECK_NONE, SYM_SORT);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruledatatypeDefEx;
+            }
+
+
+            {
+                 PARSER_STATE->pushScope(true); 
+            }
+
+
+            {
+                 datatypes.push_back(Datatype(id,params,isCo));
+                      if(!PARSER_STATE->isUnresolvedType(id)) {
+                        // if not unresolved, must be undeclared
+                        PARSER_STATE->checkDeclaration(id, CHECK_UNDECLARED, SYM_SORT);
+                      }
+                    
+            }
+
+
+            // ../../../../../../src/parser/smt2/Smt2.g:2744:5: ( LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK )+
+            {
+                int cnt68=0;
+
+                for (;;)
+                {
+                    int alt68=2;
+            	switch ( LA(1) )
+            	{
+            	case LPAREN_TOK:
+            		{
+            			alt68=1;
+            		}
+            	    break;
+
+            	}
+
+            	switch (alt68)
+            	{
+            	    case 1:
+            	        // ../../../../../../src/parser/smt2/Smt2.g:2744:7: LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK
+            	        {
+            	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypeDef5786);
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto ruledatatypeDefEx;
+            	            }
+
+
+            	            FOLLOWPUSH(FOLLOW_constructorDef_in_datatypeDef5788);
+            	            constructorDef(ctx, datatypes.back());
+
+            	            FOLLOWPOP();
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto ruledatatypeDefEx;
+            	            }
+
+
+            	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypeDef5791);
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto ruledatatypeDefEx;
+            	            }
+
+
+            	        }
+            	        break;
+
+            	    default:
+
+            		if ( cnt68 >= 1 )
+            		{
+            		    goto loop68;
+            		}
+            		/* mismatchedSetEx()
+            		 */
+            		CONSTRUCTEX();
+            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+            		goto ruledatatypeDefEx;
+            	}
+            	cnt68++;
+                }
+                loop68: ;	/* Jump to here if this rule does not match */
+            }
+
+            {
+                 PARSER_STATE->popScope(); 
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruledatatypeDefEx; /* Prevent compiler warnings */
+    ruledatatypeDefEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end datatypeDef */
+
+/**
+ * $ANTLR start constructorDef
+ * ../../../../../../src/parser/smt2/Smt2.g:2751:1: constructorDef[CVC4::Datatype& type] : symbol[id,CHECK_UNDECLARED,SYM_VARIABLE] ( LPAREN_TOK selector[*ctor] RPAREN_TOK )* ;
+ */
+static void
+constructorDef(pSmt2Parser ctx, CVC4::Datatype& type)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::string id;
+      CVC4::DatatypeConstructor* ctor = NULL;
+
+    {
+        // ../../../../../../src/parser/smt2/Smt2.g:2756:3: ( symbol[id,CHECK_UNDECLARED,SYM_VARIABLE] ( LPAREN_TOK selector[*ctor] RPAREN_TOK )* )
+        // ../../../../../../src/parser/smt2/Smt2.g:2756:5: symbol[id,CHECK_UNDECLARED,SYM_VARIABLE] ( LPAREN_TOK selector[*ctor] RPAREN_TOK )*
+        {
+            FOLLOWPUSH(FOLLOW_symbol_in_constructorDef5821);
+            symbol(ctx, id, CHECK_UNDECLARED, SYM_VARIABLE);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleconstructorDefEx;
+            }
+
+
+            {
+                 // make the tester
+                      std::string testerId("is-");
+                      testerId.append(id);
+                      PARSER_STATE->checkDeclaration(testerId, CHECK_UNDECLARED, SYM_VARIABLE);
+                      ctor = new CVC4::DatatypeConstructor(id, testerId);
+                    
+            }
+
+
+            // ../../../../../../src/parser/smt2/Smt2.g:2763:5: ( LPAREN_TOK selector[*ctor] RPAREN_TOK )*
+
+            for (;;)
+            {
+                int alt69=2;
+                switch ( LA(1) )
+                {
+                case LPAREN_TOK:
+                	{
+                		alt69=1;
+                	}
+                    break;
+
+                }
+
+                switch (alt69)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/smt2/Smt2.g:2763:7: LPAREN_TOK selector[*ctor] RPAREN_TOK
+            	    {
+            	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_constructorDef5836);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleconstructorDefEx;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_selector_in_constructorDef5838);
+            	        selector(ctx, *ctor);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleconstructorDefEx;
+            	        }
+
+
+            	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_constructorDef5841);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleconstructorDefEx;
+            	        }
+
+
+            	    }
+            	    break;
+
+            	default:
+            	    goto loop69;	/* break out of the loop */
+            	    break;
+                }
+            }
+            loop69: ; /* Jump out to here if this rule does not match */
+
+
+            {
+                 // make the constructor
+                      type.addConstructor(*ctor);
+                      Debug("parser-idt") << "constructor: " << id.c_str() << std::endl;
+                      delete ctor;
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleconstructorDefEx; /* Prevent compiler warnings */
+    ruleconstructorDefEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end constructorDef */
+
+/**
+ * $ANTLR start selector
+ * ../../../../../../src/parser/smt2/Smt2.g:2771:1: selector[CVC4::DatatypeConstructor& ctor] : symbol[id,CHECK_UNDECLARED,SYM_SORT] sortSymbol[t,CHECK_NONE] ;
+ */
+static void
+selector(pSmt2Parser ctx, CVC4::DatatypeConstructor& ctor)
+{
+    /* Initialize rule variables
+     */
+
+
+      std::string id;
+      Type t, t2;
+
+    {
+        // ../../../../../../src/parser/smt2/Smt2.g:2776:3: ( symbol[id,CHECK_UNDECLARED,SYM_SORT] sortSymbol[t,CHECK_NONE] )
+        // ../../../../../../src/parser/smt2/Smt2.g:2776:5: symbol[id,CHECK_UNDECLARED,SYM_SORT] sortSymbol[t,CHECK_NONE]
+        {
+            FOLLOWPUSH(FOLLOW_symbol_in_selector5869);
+            symbol(ctx, id, CHECK_UNDECLARED, SYM_SORT);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleselectorEx;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_sortSymbol_in_selector5872);
+            sortSymbol(ctx, t, CHECK_NONE);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleselectorEx;
+            }
+
+
+            {
+                 ctor.addArg(id, t);
+                      Debug("parser-idt") << "selector: " << id.c_str()
+                                          << " of type " << t << std::endl;
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleselectorEx; /* Prevent compiler warnings */
+    ruleselectorEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end selector */
+/* End of parsing rules
+ * ==============================================
+ */
+
+/* ==============================================
+ * Syntactic predicates
+ */
+/* End of syntactic predicates
+ * ==============================================
+ */
+
+
+
+
+
+
+/* End of code
+ * =============================================================================
+ */
diff --git a/src/parser/smt2/Smt2Parser.h b/src/parser/smt2/Smt2Parser.h
new file mode 100644
index 0000000..833bffd
--- /dev/null
+++ b/src/parser/smt2/Smt2Parser.h
@@ -0,0 +1,588 @@
+/** \file
+ *  This C header file was generated by $ANTLR version 3.4
+ *
+ *     -  From the grammar source file : ../../../../../../src/parser/smt2/Smt2.g
+ *     -                            On : 2017-03-16 01:03:01
+ *     -                for the parser : Smt2ParserParser
+ *
+ * Editing it, at least manually, is not wise.
+ *
+ * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws.
+ *
+ *
+ * The parser 
+Smt2Parser
+
+has the callable functions (rules) shown below,
+ * which will invoke the code for the associated rule in the source grammar
+ * assuming that the input stream is pointing to a token/text stream that could begin
+ * this rule.
+ *
+ * For instance if you call the first (topmost) rule in a parser grammar, you will
+ * get the results of a full parse, but calling a rule half way through the grammar will
+ * allow you to pass part of a full token stream to the parser, such as for syntax checking
+ * in editors and so on.
+ *
+ * The parser entry points are called indirectly (by function pointer to function) via
+ * a parser context typedef pSmt2Parser, which is returned from a call to Smt2ParserNew().
+ *
+ * The methods in pSmt2Parser are  as follows:
+ *
+ *  - 
+ CVC4::parser::smt2::myExpr
+      pSmt2Parser->parseExpr(pSmt2Parser)
+ *  - 
+ CVC4::Command*
+      pSmt2Parser->parseCommand(pSmt2Parser)
+ *  - 
+ CVC4::Command*
+      pSmt2Parser->parseSygus(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->command(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->sygusCommand(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->sygusGTerm(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->metaInfoInternal(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->setOptionInternal(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->smt25Command(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->extendedCommand(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->datatypesDefCommand(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->rewriterulesCommand(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->rewritePropaKind(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->pattern(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->simpleSymbolicExprNoKeyword(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->keyword(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->simpleSymbolicExpr(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->symbolicExpr(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->term(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->attribute(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->indexedFunctionName(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->badIndexedFunctionName(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->termList(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->str(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->builtinOp(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->quantOp(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->functionName(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->sortList(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->nonemptySortList(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->sortedVarList(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->sortName(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->sortSymbol(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->symbolList(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->symbol(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->nonemptyNumeralList(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->datatypeDef(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->constructorDef(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->selector(pSmt2Parser)
+ *
+ * The return type for any particular rule is of course determined by the source
+ * grammar file.
+ */
+// [The "BSD license"]
+// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
+// http://www.temporal-wave.com
+// http://www.linkedin.com/in/jimidle
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+// 3. The name of the author may not be used to endorse or promote products
+//    derived from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef	_Smt2Parser_H
+#define _Smt2Parser_H
+/* =============================================================================
+ * Standard antlr3 C runtime definitions
+ */
+#include    <antlr3.h>
+
+/* End of standard antlr 3 runtime definitions
+ * =============================================================================
+ */
+
+
+// This should come immediately after #include <antlr3.h> in the generated
+// files. See the documentation in "parser/antlr_undefines.h" for more details.
+#include "parser/antlr_undefines.h"
+
+#include "base/ptr_closer.h"
+#include "parser/parser.h"
+#include "parser/antlr_tracing.h"
+#include "smt/command.h"
+
+namespace CVC4 {
+  class Expr;
+
+  namespace parser {
+    namespace smt2 {
+      /**
+       * Just exists to provide the uintptr_t constructor that ANTLR
+       * requires.
+       */
+      struct myExpr : public CVC4::Expr {
+        myExpr() : CVC4::Expr() {}
+        myExpr(void*) : CVC4::Expr() {}
+        myExpr(const Expr& e) : CVC4::Expr(e) {}
+        myExpr(const myExpr& e) : CVC4::Expr(e) {}
+      };/* struct myExpr */
+    }/* CVC4::parser::smt2 namespace */
+  }/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Forward declare the context typedef so that we can use it before it is
+// properly defined. Delegators and delegates (from import statements) are
+// interdependent and their context structures contain pointers to each other
+// C only allows such things to be declared if you pre-declare the typedef.
+//
+typedef struct Smt2Parser_Ctx_struct Smt2Parser, * pSmt2Parser;
+
+
+
+/**
+ ** This file is part of CVC4.
+ ** Copyright (c) 2009-2014  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.
+ **/
+
+
+#ifdef	ANTLR3_WINDOWS
+// Disable: Unreferenced parameter,							- Rules with parameters that are not used
+//          constant conditional,							- ANTLR realizes that a prediction is always true (synpred usually)
+//          initialized but unused variable					- tree rewrite variables declared but not needed
+//          Unreferenced local variable						- lexer rule declares but does not always use _type
+//          potentially unitialized variable used			- retval always returned from a rule
+//			unreferenced local function has been removed	- susually getTokenNames or freeScope, they can go without warnigns
+//
+// These are only really displayed at warning level /W4 but that is the code ideal I am aiming at
+// and the codegen must generate some of these warnings by necessity, apart from 4100, which is
+// usually generated when a parser rule is given a parameter that it does not use. Mostly though
+// this is a matter of orthogonality hence I disable that one.
+//
+#pragma warning( disable : 4100 )
+#pragma warning( disable : 4101 )
+#pragma warning( disable : 4127 )
+#pragma warning( disable : 4189 )
+#pragma warning( disable : 4505 )
+#pragma warning( disable : 4701 )
+#endif
+
+/** Context tracking structure for 
+Smt2Parser
+
+ */
+struct Smt2Parser_Ctx_struct
+{
+    /** Built in ANTLR3 context tracker contains all the generic elements
+     *  required for context tracking.
+     */
+    pANTLR3_PARSER   pParser;
+
+     CVC4::parser::smt2::myExpr
+     (*parseExpr)	(struct Smt2Parser_Ctx_struct * ctx);
+
+     CVC4::Command*
+     (*parseCommand)	(struct Smt2Parser_Ctx_struct * ctx);
+
+     CVC4::Command*
+     (*parseSygus)	(struct Smt2Parser_Ctx_struct * ctx);
+
+     void
+     (*command)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+
+     void
+     (*sygusCommand)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+
+     void
+     (*sygusGTerm)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::SygusGTerm& sgt, std::string& fun);
+
+     void
+     (*metaInfoInternal)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+
+     void
+     (*setOptionInternal)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+
+     void
+     (*smt25Command)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+
+     void
+     (*extendedCommand)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+
+     void
+     (*datatypesDefCommand)	(struct Smt2Parser_Ctx_struct * ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd);
+
+     void
+     (*rewriterulesCommand)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
+
+     void
+     (*rewritePropaKind)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::Kind& kind);
+
+     void
+     (*pattern)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*simpleSymbolicExprNoKeyword)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::SExpr& sexpr);
+
+     void
+     (*keyword)	(struct Smt2Parser_Ctx_struct * ctx, std::string& s);
+
+     void
+     (*simpleSymbolicExpr)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::SExpr& sexpr);
+
+     void
+     (*symbolicExpr)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::SExpr& sexpr);
+
+     void
+     (*term)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::Expr& expr, CVC4::Expr& expr2);
+
+     void
+     (*attribute)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& attr);
+
+     void
+     (*indexedFunctionName)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::Expr& op);
+
+     void
+     (*badIndexedFunctionName)	(struct Smt2Parser_Ctx_struct * ctx);
+
+     void
+     (*termList)	(struct Smt2Parser_Ctx_struct * ctx, std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr);
+
+     void
+     (*str)	(struct Smt2Parser_Ctx_struct * ctx, std::string& s, bool fsmtlib);
+
+     void
+     (*builtinOp)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::Kind& kind);
+
+     void
+     (*quantOp)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::Kind& kind);
+
+     void
+     (*functionName)	(struct Smt2Parser_Ctx_struct * ctx, std::string& name, CVC4::parser::DeclarationCheck check);
+
+     void
+     (*sortList)	(struct Smt2Parser_Ctx_struct * ctx, std::vector<CVC4::Type>& sorts);
+
+     void
+     (*nonemptySortList)	(struct Smt2Parser_Ctx_struct * ctx, std::vector<CVC4::Type>& sorts);
+
+     void
+     (*sortedVarList)	(struct Smt2Parser_Ctx_struct * ctx, std::vector<std::pair<std::string, CVC4::Type> >& sortedVars);
+
+     void
+     (*sortName)	(struct Smt2Parser_Ctx_struct * ctx, std::string& name, CVC4::parser::DeclarationCheck check);
+
+     void
+     (*sortSymbol)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check);
+
+     void
+     (*symbolList)	(struct Smt2Parser_Ctx_struct * ctx, std::vector<std::string>& names, CVC4::parser::DeclarationCheck check, CVC4::parser::SymbolType type);
+
+     void
+     (*symbol)	(struct Smt2Parser_Ctx_struct * ctx, std::string& id, CVC4::parser::DeclarationCheck check, CVC4::parser::SymbolType type);
+
+     void
+     (*nonemptyNumeralList)	(struct Smt2Parser_Ctx_struct * ctx, std::vector<uint64_t>& numerals);
+
+     void
+     (*datatypeDef)	(struct Smt2Parser_Ctx_struct * ctx, bool isCo, std::vector<CVC4::Datatype>& datatypes, std::vector< CVC4::Type >& params);
+
+     void
+     (*constructorDef)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::Datatype& type);
+
+     void
+     (*selector)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::DatatypeConstructor& ctor);
+    // Delegated rules
+
+    const char * (*getGrammarFileName)();
+    void            (*reset)  (struct Smt2Parser_Ctx_struct * ctx);
+    void	    (*free)   (struct Smt2Parser_Ctx_struct * ctx);
+};
+
+// Function protoypes for the constructor functions that external translation units
+// such as delegators and delegates may wish to call.
+//
+ANTLR3_API pSmt2Parser Smt2ParserNew         (
+pANTLR3_COMMON_TOKEN_STREAM
+ instream);
+ANTLR3_API pSmt2Parser Smt2ParserNewSSD      (
+pANTLR3_COMMON_TOKEN_STREAM
+ instream, pANTLR3_RECOGNIZER_SHARED_STATE state);
+
+/** Symbolic definitions of all the tokens that the 
+parser
+ will work with.
+ * \{
+ *
+ * Antlr will define EOF, but we can't use that as it it is too common in
+ * in C header files and that would be confusing. There is no way to filter this out at the moment
+ * so we just undef it here for now. That isn't the value we get back from C recognizers
+ * anyway. We are looking for ANTLR3_TOKEN_EOF.
+ */
+#ifdef	EOF
+#undef	EOF
+#endif
+#ifdef	Tokens
+#undef	Tokens
+#endif
+#define EOF      -1
+#define T__145      145
+#define T__146      146
+#define T__147      147
+#define T__148      148
+#define T__149      149
+#define T__150      150
+#define T__151      151
+#define ALPHA      4
+#define AMPERSAND_TOK      5
+#define AND_TOK      6
+#define ASSERT_TOK      7
+#define AS_TOK      8
+#define ATTRIBUTE_INST_LEVEL      9
+#define ATTRIBUTE_NAMED_TOK      10
+#define ATTRIBUTE_NO_PATTERN_TOK      11
+#define ATTRIBUTE_PATTERN_TOK      12
+#define ATTRIBUTE_RR_PRIORITY      13
+#define ATTRIBUTE_TOK      14
+#define AT_TOK      15
+#define BINARY_LITERAL      16
+#define BV2NAT_TOK      17
+#define CHECKSAT_TOK      18
+#define CHECK_SYNTH_TOK      19
+#define COMMENT      20
+#define CONSTRAINT_TOK      21
+#define CONST_TOK      22
+#define DECIMAL_LITERAL      23
+#define DECLARE_CODATATYPES_TOK      24
+#define DECLARE_CONST_TOK      25
+#define DECLARE_DATATYPES_TOK      26
+#define DECLARE_FUNS_TOK      27
+#define DECLARE_FUN_TOK      28
+#define DECLARE_PREDS_TOK      29
+#define DECLARE_PRIMED_VAR_TOK      30
+#define DECLARE_SORTS_TOK      31
+#define DECLARE_SORT_TOK      32
+#define DECLARE_VAR_TOK      33
+#define DEFINE_CONST_TOK      34
+#define DEFINE_FUNS_REC_TOK      35
+#define DEFINE_FUN_REC_TOK      36
+#define DEFINE_FUN_TOK      37
+#define DEFINE_SORT_TOK      38
+#define DEFINE_TOK      39
+#define DIGIT      40
+#define DISTINCT_TOK      41
+#define DIVISIBLE_TOK      42
+#define DIV_TOK      43
+#define DTSIZE_TOK      44
+#define ECHO_TOK      45
+#define EMPTYSET_TOK      46
+#define EQUAL_TOK      47
+#define EXISTS_TOK      48
+#define EXIT_TOK      49
+#define FMFCARDVAL_TOK      50
+#define FMFCARD_TOK      51
+#define FORALL_TOK      52
+#define FP_NAN_TOK      53
+#define FP_NINF_TOK      54
+#define FP_NZERO_TOK      55
+#define FP_PINF_TOK      56
+#define FP_PZERO_TOK      57
+#define FP_RNA_FULL_TOK      58
+#define FP_RNA_TOK      59
+#define FP_RNE_FULL_TOK      60
+#define FP_RNE_TOK      61
+#define FP_RTN_FULL_TOK      62
+#define FP_RTN_TOK      63
+#define FP_RTP_FULL_TOK      64
+#define FP_RTP_TOK      65
+#define FP_RTZ_FULL_TOK      66
+#define FP_RTZ_TOK      67
+#define FP_TO_FPBV_TOK      68
+#define FP_TO_FPFP_TOK      69
+#define FP_TO_FPR_TOK      70
+#define FP_TO_FPS_TOK      71
+#define FP_TO_FPU_TOK      72
+#define FP_TO_FP_TOK      73
+#define FP_TO_SBV_TOK      74
+#define FP_TO_UBV_TOK      75
+#define GET_ASSERTIONS_TOK      76
+#define GET_ASSIGNMENT_TOK      77
+#define GET_INFO_TOK      78
+#define GET_MODEL_TOK      79
+#define GET_OPTION_TOK      80
+#define GET_PROOF_TOK      81
+#define GET_QE_DISJUNCT_TOK      82
+#define GET_QE_TOK      83
+#define GET_UNSAT_CORE_TOK      84
+#define GET_VALUE_TOK      85
+#define GREATER_THAN_EQUAL_TOK      86
+#define GREATER_THAN_TOK      87
+#define HEX_DIGIT      88
+#define HEX_LITERAL      89
+#define IMPLIES_TOK      90
+#define INCLUDE_TOK      91
+#define INDEX_TOK      92
+#define INST_CLOSURE_TOK      93
+#define INT2BV_TOK      94
+#define INTEGER_LITERAL      95
+#define INV_CONSTRAINT_TOK      96
+#define ITE_TOK      97
+#define KEYWORD      98
+#define LESS_THAN_EQUAL_TOK      99
+#define LESS_THAN_TOK      100
+#define LET_TOK      101
+#define LPAREN_TOK      102
+#define META_INFO_TOK      103
+#define MINUS_TOK      104
+#define NILREF_TOK      105
+#define NOT_TOK      106
+#define NUMERAL      107
+#define OR_TOK      108
+#define PLUS_TOK      109
+#define POP_TOK      110
+#define PROPAGATION_RULE_TOK      111
+#define PUSH_TOK      112
+#define QUOTED_SYMBOL      113
+#define REALLCHAR_TOK      114
+#define REDUCTION_RULE_TOK      115
+#define RENOSTR_TOK      116
+#define RESET_ASSERTIONS_TOK      117
+#define RESET_TOK      118
+#define REWRITE_RULE_TOK      119
+#define RPAREN_TOK      120
+#define SET_INFO_TOK      121
+#define SET_LOGIC_TOK      122
+#define SET_OPTIONS_TOK      123
+#define SET_OPTION_TOK      124
+#define SIMPLE_SYMBOL      125
+#define SIMPLIFY_TOK      126
+#define STAR_TOK      127
+#define STRING_LITERAL_2_0      128
+#define STRING_LITERAL_2_5      129
+#define SYGUS_CONSTANT_TOK      130
+#define SYGUS_ENUM_CONS_TOK      131
+#define SYGUS_ENUM_TOK      132
+#define SYGUS_INPUT_VARIABLE_TOK      133
+#define SYGUS_LOCAL_VARIABLE_TOK      134
+#define SYGUS_QUOTED_LITERAL      135
+#define SYGUS_VARIABLE_TOK      136
+#define SYMBOL_CHAR      137
+#define SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE      138
+#define SYNTH_FUN_TOK      139
+#define SYNTH_INV_TOK      140
+#define UNIVSET_TOK      141
+#define UNTERMINATED_QUOTED_SYMBOL      142
+#define WHITESPACE      143
+#define XOR_TOK      144
+#ifdef	EOF
+#undef	EOF
+#define	EOF	ANTLR3_TOKEN_EOF
+#endif
+
+#ifndef TOKENSOURCE
+#define TOKENSOURCE(lxr) lxr->pLexer->rec->state->tokSource
+#endif
+
+/* End of token definitions for Smt2Parser
+ * =============================================================================
+ */
+/** } */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* END - Note:Keep extra line feed to satisfy UNIX systems */
diff --git a/src/parser/smt2/smt2.cpp b/src/parser/smt2/smt2.cpp
new file mode 100644
index 0000000..ebe730e
--- /dev/null
+++ b/src/parser/smt2/smt2.cpp
@@ -0,0 +1,1538 @@
+/*********************                                                        */
+/*! \file smt2.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Kshitij Bansal, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Definitions of SMT2 constants.
+ **
+ ** Definitions of SMT2 constants.
+ **/
+#include "parser/smt2/smt2.h"
+
+
+#include "expr/type.h"
+#include "parser/antlr_input.h"
+#include "parser/parser.h"
+#include "parser/smt1/smt1.h"
+#include "parser/smt2/smt2_input.h"
+#include "smt/command.h"
+#include "util/bitvector.h"
+
+// ANTLR defines these, which is really bad!
+#undef true
+#undef false
+
+namespace CVC4 {
+namespace parser {
+
+Smt2::Smt2(ExprManager* exprManager, Input* input, bool strictMode, bool parseOnly) :
+  Parser(exprManager,input,strictMode,parseOnly),
+  d_logicSet(false),
+  d_nextSygusFun(0) {
+  d_unsatCoreNames.push(std::map<Expr, std::string>());
+  if( !strictModeEnabled() ) {
+    addTheory(Smt2::THEORY_CORE);
+  }
+}
+
+void Smt2::setLanguage(InputLanguage lang) {
+  ((Smt2Input*) getInput())->setLanguage(lang);
+}
+
+void Smt2::addArithmeticOperators() {
+  Parser::addOperator(kind::PLUS);
+  Parser::addOperator(kind::MINUS);
+  Parser::addOperator(kind::UMINUS);
+  Parser::addOperator(kind::MULT);
+  Parser::addOperator(kind::LT);
+  Parser::addOperator(kind::LEQ);
+  Parser::addOperator(kind::GT);
+  Parser::addOperator(kind::GEQ);
+}
+
+void Smt2::addBitvectorOperators() {
+  addOperator(kind::BITVECTOR_CONCAT, "concat");
+  addOperator(kind::BITVECTOR_NOT, "bvnot");
+  addOperator(kind::BITVECTOR_AND, "bvand");
+  addOperator(kind::BITVECTOR_OR, "bvor");
+  addOperator(kind::BITVECTOR_NEG, "bvneg");
+  addOperator(kind::BITVECTOR_PLUS, "bvadd");
+  addOperator(kind::BITVECTOR_MULT, "bvmul");
+  addOperator(kind::BITVECTOR_UDIV, "bvudiv");
+  addOperator(kind::BITVECTOR_UREM, "bvurem");
+  addOperator(kind::BITVECTOR_SHL, "bvshl");
+  addOperator(kind::BITVECTOR_LSHR, "bvlshr");
+  addOperator(kind::BITVECTOR_ULT, "bvult");
+  addOperator(kind::BITVECTOR_NAND, "bvnand");
+  addOperator(kind::BITVECTOR_NOR, "bvnor");
+  addOperator(kind::BITVECTOR_XOR, "bvxor");
+  addOperator(kind::BITVECTOR_XNOR, "bvxnor");
+  addOperator(kind::BITVECTOR_COMP, "bvcomp");
+  addOperator(kind::BITVECTOR_SUB, "bvsub");
+  addOperator(kind::BITVECTOR_SDIV, "bvsdiv");
+  addOperator(kind::BITVECTOR_SREM, "bvsrem");
+  addOperator(kind::BITVECTOR_SMOD, "bvsmod");
+  addOperator(kind::BITVECTOR_ASHR, "bvashr");
+  addOperator(kind::BITVECTOR_ULE, "bvule");
+  addOperator(kind::BITVECTOR_UGT, "bvugt");
+  addOperator(kind::BITVECTOR_UGE, "bvuge");
+  addOperator(kind::BITVECTOR_SLT, "bvslt");
+  addOperator(kind::BITVECTOR_SLE, "bvsle");
+  addOperator(kind::BITVECTOR_SGT, "bvsgt");
+  addOperator(kind::BITVECTOR_SGE, "bvsge");
+  addOperator(kind::BITVECTOR_REDOR, "bvredor");
+  addOperator(kind::BITVECTOR_REDAND, "bvredand");
+
+  Parser::addOperator(kind::BITVECTOR_BITOF);
+  Parser::addOperator(kind::BITVECTOR_EXTRACT);
+  Parser::addOperator(kind::BITVECTOR_REPEAT);
+  Parser::addOperator(kind::BITVECTOR_ZERO_EXTEND);
+  Parser::addOperator(kind::BITVECTOR_SIGN_EXTEND);
+  Parser::addOperator(kind::BITVECTOR_ROTATE_LEFT);
+  Parser::addOperator(kind::BITVECTOR_ROTATE_RIGHT);
+
+  Parser::addOperator(kind::INT_TO_BITVECTOR);
+  Parser::addOperator(kind::BITVECTOR_TO_NAT);
+}
+
+void Smt2::addStringOperators() {
+  addOperator(kind::STRING_CONCAT, "str.++");
+  addOperator(kind::STRING_LENGTH, "str.len");
+  addOperator(kind::STRING_SUBSTR, "str.substr" );
+  addOperator(kind::STRING_STRCTN, "str.contains" );
+  addOperator(kind::STRING_CHARAT, "str.at" );
+  addOperator(kind::STRING_STRIDOF, "str.indexof" );
+  addOperator(kind::STRING_STRREPL, "str.replace" );
+  addOperator(kind::STRING_PREFIX, "str.prefixof" );
+  addOperator(kind::STRING_SUFFIX, "str.suffixof" );
+  addOperator(kind::STRING_ITOS, "int.to.str" );
+  addOperator(kind::STRING_STOI, "str.to.int" );
+  addOperator(kind::STRING_U16TOS, "u16.to.str" );
+  addOperator(kind::STRING_STOU16, "str.to.u16" );
+  addOperator(kind::STRING_U32TOS, "u32.to.str" );
+  addOperator(kind::STRING_STOU32, "str.to.u32" );
+  addOperator(kind::STRING_IN_REGEXP, "str.in.re");
+  addOperator(kind::STRING_TO_REGEXP, "str.to.re");
+  addOperator(kind::REGEXP_CONCAT, "re.++");
+  addOperator(kind::REGEXP_UNION, "re.union");
+  addOperator(kind::REGEXP_INTER, "re.inter");
+  addOperator(kind::REGEXP_STAR, "re.*");
+  addOperator(kind::REGEXP_PLUS, "re.+");
+  addOperator(kind::REGEXP_OPT, "re.opt");
+  addOperator(kind::REGEXP_RANGE, "re.range");
+  addOperator(kind::REGEXP_LOOP, "re.loop");
+}
+
+void Smt2::addFloatingPointOperators() {
+  addOperator(kind::FLOATINGPOINT_FP, "fp");
+  addOperator(kind::FLOATINGPOINT_EQ, "fp.eq");
+  addOperator(kind::FLOATINGPOINT_ABS, "fp.abs");
+  addOperator(kind::FLOATINGPOINT_NEG, "fp.neg");
+  addOperator(kind::FLOATINGPOINT_PLUS, "fp.add");
+  addOperator(kind::FLOATINGPOINT_SUB, "fp.sub");
+  addOperator(kind::FLOATINGPOINT_MULT, "fp.mul");
+  addOperator(kind::FLOATINGPOINT_DIV, "fp.div");
+  addOperator(kind::FLOATINGPOINT_FMA, "fp.fma");
+  addOperator(kind::FLOATINGPOINT_SQRT, "fp.sqrt");
+  addOperator(kind::FLOATINGPOINT_REM, "fp.rem");
+  addOperator(kind::FLOATINGPOINT_RTI, "fp.roundToIntegral");
+  addOperator(kind::FLOATINGPOINT_MIN, "fp.min");
+  addOperator(kind::FLOATINGPOINT_MAX, "fp.max");
+  addOperator(kind::FLOATINGPOINT_LEQ, "fp.leq");
+  addOperator(kind::FLOATINGPOINT_LT, "fp.lt");
+  addOperator(kind::FLOATINGPOINT_GEQ, "fp.geq");
+  addOperator(kind::FLOATINGPOINT_GT, "fp.gt");
+  addOperator(kind::FLOATINGPOINT_ISN, "fp.isNormal");
+  addOperator(kind::FLOATINGPOINT_ISSN, "fp.isSubnormal");
+  addOperator(kind::FLOATINGPOINT_ISZ, "fp.isZero");
+  addOperator(kind::FLOATINGPOINT_ISINF, "fp.isInfinite");
+  addOperator(kind::FLOATINGPOINT_ISNAN, "fp.isNaN");
+  addOperator(kind::FLOATINGPOINT_ISNEG, "fp.isNegative");
+  addOperator(kind::FLOATINGPOINT_ISPOS, "fp.isPositive");
+  addOperator(kind::FLOATINGPOINT_TO_REAL, "fp.to_real");
+
+  Parser::addOperator(kind::FLOATINGPOINT_TO_FP_IEEE_BITVECTOR);
+  Parser::addOperator(kind::FLOATINGPOINT_TO_FP_FLOATINGPOINT);
+  Parser::addOperator(kind::FLOATINGPOINT_TO_FP_REAL);
+  Parser::addOperator(kind::FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR);
+  Parser::addOperator(kind::FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR);
+  Parser::addOperator(kind::FLOATINGPOINT_TO_UBV);
+  Parser::addOperator(kind::FLOATINGPOINT_TO_SBV);
+}
+
+void Smt2::addSepOperators() {
+  addOperator(kind::SEP_STAR, "sep");
+  addOperator(kind::SEP_PTO, "pto");
+  addOperator(kind::SEP_WAND, "wand");
+  addOperator(kind::SEP_EMP, "emp");
+  Parser::addOperator(kind::SEP_STAR);
+  Parser::addOperator(kind::SEP_PTO);
+  Parser::addOperator(kind::SEP_WAND);
+  Parser::addOperator(kind::SEP_EMP);
+}
+
+void Smt2::addTheory(Theory theory) {
+  switch(theory) {
+  case THEORY_ARRAYS:
+    addOperator(kind::SELECT, "select");
+    addOperator(kind::STORE, "store");
+    break;
+
+  case THEORY_BITVECTORS:
+    addBitvectorOperators();
+    break;
+
+  case THEORY_CORE:
+    defineType("Bool", getExprManager()->booleanType());
+    defineVar("true", getExprManager()->mkConst(true));
+    defineVar("false", getExprManager()->mkConst(false));
+    Parser::addOperator(kind::AND);
+    Parser::addOperator(kind::DISTINCT);
+    Parser::addOperator(kind::EQUAL);
+    Parser::addOperator(kind::IMPLIES);
+    Parser::addOperator(kind::ITE);
+    Parser::addOperator(kind::NOT);
+    Parser::addOperator(kind::OR);
+    Parser::addOperator(kind::XOR);
+    break;
+
+  case THEORY_REALS_INTS:
+    defineType("Real", getExprManager()->realType());
+    Parser::addOperator(kind::DIVISION);
+    addOperator(kind::TO_INTEGER, "to_int");
+    addOperator(kind::IS_INTEGER, "is_int");
+    addOperator(kind::TO_REAL, "to_real");
+    // falling through on purpose, to add Ints part of Reals_Ints
+  case THEORY_INTS:
+    defineType("Int", getExprManager()->integerType());
+    addArithmeticOperators();
+    addOperator(kind::INTS_DIVISION, "div");
+    addOperator(kind::INTS_MODULUS, "mod");
+    addOperator(kind::ABS, "abs");
+    Parser::addOperator(kind::DIVISIBLE);
+    break;
+
+  case THEORY_REALS:
+    defineType("Real", getExprManager()->realType());
+    addArithmeticOperators();
+    Parser::addOperator(kind::DIVISION);
+    break;
+
+  case THEORY_QUANTIFIERS:
+    break;
+
+  case THEORY_SETS:
+    addOperator(kind::UNION, "union");
+    addOperator(kind::INTERSECTION, "intersection");
+    addOperator(kind::SETMINUS, "setminus");
+    addOperator(kind::SUBSET, "subset");
+    addOperator(kind::MEMBER, "member");
+    addOperator(kind::SINGLETON, "singleton");
+    addOperator(kind::INSERT, "insert");
+    addOperator(kind::CARD, "card");
+    addOperator(kind::COMPLEMENT, "complement");
+    break;
+
+  case THEORY_DATATYPES:
+    Parser::addOperator(kind::APPLY_CONSTRUCTOR);
+    Parser::addOperator(kind::APPLY_TESTER);
+    Parser::addOperator(kind::APPLY_SELECTOR);
+    Parser::addOperator(kind::APPLY_SELECTOR_TOTAL);
+    break;
+
+  case THEORY_STRINGS:
+    defineType("String", getExprManager()->stringType());
+    defineType("Int", getExprManager()->integerType());
+    addStringOperators();
+    break;
+
+  case THEORY_UF:
+    Parser::addOperator(kind::APPLY_UF);
+    break;
+
+  case THEORY_FP:
+    defineType("RoundingMode", getExprManager()->roundingModeType());
+    defineType("Float16", getExprManager()->mkFloatingPointType(5, 11));
+    defineType("Float32", getExprManager()->mkFloatingPointType(8, 24));
+    defineType("Float64", getExprManager()->mkFloatingPointType(11, 53));
+    defineType("Float128", getExprManager()->mkFloatingPointType(15, 113));
+    addFloatingPointOperators();
+    break;
+    
+  case THEORY_SEP:
+    addSepOperators();
+    break;
+    
+  default:
+    std::stringstream ss;
+    ss << "internal error: unsupported theory " << theory;
+    throw ParserException(ss.str());
+  }
+}
+
+void Smt2::addOperator(Kind kind, const std::string& name) {
+  Debug("parser") << "Smt2::addOperator( " << kind << ", " << name << " )"
+                  << std::endl;
+  Parser::addOperator(kind);
+  operatorKindMap[name] = kind;
+}
+
+Kind Smt2::getOperatorKind(const std::string& name) const {
+  // precondition: isOperatorEnabled(name)
+  return operatorKindMap.find(name)->second;
+}
+
+bool Smt2::isOperatorEnabled(const std::string& name) const {
+  return operatorKindMap.find(name) != operatorKindMap.end();
+}
+
+bool Smt2::isTheoryEnabled(Theory theory) const {
+  switch(theory) {
+  case THEORY_ARRAYS:
+    return d_logic.isTheoryEnabled(theory::THEORY_ARRAY);
+  case THEORY_BITVECTORS:
+    return d_logic.isTheoryEnabled(theory::THEORY_BV);
+  case THEORY_CORE:
+    return true;
+  case THEORY_DATATYPES:
+    return d_logic.isTheoryEnabled(theory::THEORY_DATATYPES);
+  case THEORY_INTS:
+    return d_logic.isTheoryEnabled(theory::THEORY_ARITH) &&
+      d_logic.areIntegersUsed() && ( !d_logic.areRealsUsed() );
+  case THEORY_REALS:
+    return d_logic.isTheoryEnabled(theory::THEORY_ARITH) &&
+      ( !d_logic.areIntegersUsed() ) && d_logic.areRealsUsed();
+  case THEORY_REALS_INTS:
+    return d_logic.isTheoryEnabled(theory::THEORY_ARITH) &&
+      d_logic.areIntegersUsed() && d_logic.areRealsUsed();
+  case THEORY_QUANTIFIERS:
+    return d_logic.isQuantified();
+  case THEORY_SETS:
+    return d_logic.isTheoryEnabled(theory::THEORY_SETS);
+  case THEORY_STRINGS:
+    return d_logic.isTheoryEnabled(theory::THEORY_STRINGS);
+  case THEORY_UF:
+    return d_logic.isTheoryEnabled(theory::THEORY_UF);
+  case THEORY_FP:
+    return d_logic.isTheoryEnabled(theory::THEORY_FP);
+  case THEORY_SEP:
+    return d_logic.isTheoryEnabled(theory::THEORY_SEP);
+  default:
+    std::stringstream ss;
+    ss << "internal error: unsupported theory " << theory;
+    throw ParserException(ss.str());
+  }
+}
+
+bool Smt2::logicIsSet() {
+  return d_logicSet;
+}
+
+void Smt2::reset() {
+  d_logicSet = false;
+  d_logic = LogicInfo();
+  operatorKindMap.clear();
+  d_lastNamedTerm = std::pair<Expr, std::string>();
+  d_unsatCoreNames = std::stack< std::map<Expr, std::string> >();
+  this->Parser::reset();
+
+  d_unsatCoreNames.push(std::map<Expr, std::string>());
+  if( !strictModeEnabled() ) {
+    addTheory(Smt2::THEORY_CORE);
+  }
+}
+
+void Smt2::resetAssertions() {
+  this->Parser::reset();
+}
+
+void Smt2::setLogic(std::string name) {
+  if(sygus()) {
+    if(name == "Arrays") {
+      name = "AUF";
+    } else if(name == "Reals") {
+      name = "UFLRA";
+    } else if(name == "LIA") {
+      name = "UFLIA";
+    } else if(name == "LRA") {
+      name = "UFLRA";
+    } else if(name == "LIRA") {
+      name = "UFLIRA";
+    } else if(name == "BV") {
+      name = "UFBV";
+    } else if(name == "SLIA") {
+      name = "UFSLIA";
+    } else if(name == "SAT") {
+      name = "UF";
+    } else if(name == "ALL" || name == "ALL_SUPPORTED") {
+      //no change
+    } else {
+      std::stringstream ss;
+      ss << "Unknown SyGuS background logic `" << name << "'";
+      parseError(ss.str());
+    }
+  }
+
+  d_logicSet = true;
+  if(logicIsForced()) {
+    d_logic = getForcedLogic();
+  } else {
+    d_logic = name;
+  }
+
+  // Core theory belongs to every logic
+  addTheory(THEORY_CORE);
+
+  if(d_logic.isTheoryEnabled(theory::THEORY_UF)) {
+    addTheory(THEORY_UF);
+  }
+
+  if(d_logic.isTheoryEnabled(theory::THEORY_ARITH)) {
+    if(d_logic.areIntegersUsed()) {
+      if(d_logic.areRealsUsed()) {
+        addTheory(THEORY_REALS_INTS);
+      } else {
+        addTheory(THEORY_INTS);
+      }
+    } else if(d_logic.areRealsUsed()) {
+      addTheory(THEORY_REALS);
+    }
+  }
+
+  if(d_logic.isTheoryEnabled(theory::THEORY_ARRAY)) {
+    addTheory(THEORY_ARRAYS);
+  }
+
+  if(d_logic.isTheoryEnabled(theory::THEORY_BV)) {
+    addTheory(THEORY_BITVECTORS);
+  }
+
+  if(d_logic.isTheoryEnabled(theory::THEORY_DATATYPES)) {
+    addTheory(THEORY_DATATYPES);
+  }
+
+  if(d_logic.isTheoryEnabled(theory::THEORY_SETS)) {
+    addTheory(THEORY_SETS);
+  }
+
+  if(d_logic.isTheoryEnabled(theory::THEORY_STRINGS)) {
+    addTheory(THEORY_STRINGS);
+  }
+
+  if(d_logic.isQuantified()) {
+    addTheory(THEORY_QUANTIFIERS);
+  }
+
+  if (d_logic.isTheoryEnabled(theory::THEORY_FP)) {
+    addTheory(THEORY_FP);
+  }
+
+  if (d_logic.isTheoryEnabled(theory::THEORY_SEP)) {
+    addTheory(THEORY_SEP);
+  }
+  
+}/* Smt2::setLogic() */
+
+void Smt2::setInfo(const std::string& flag, const SExpr& sexpr) {
+  // TODO: ???
+}
+
+void Smt2::setOption(const std::string& flag, const SExpr& sexpr) {
+  // TODO: ???
+}
+
+void Smt2::checkThatLogicIsSet() {
+  if( ! logicIsSet() ) {
+    if(strictModeEnabled()) {
+      parseError("set-logic must appear before this point.");
+    } else {
+      if(sygus()) {
+        setLogic("LIA");
+      } else {
+        warning("No set-logic command was given before this point.");
+        warning("CVC4 will make all theories available.");
+        warning("Consider setting a stricter logic for (likely) better performance.");
+        warning("To suppress this warning in the future use (set-logic ALL).");
+
+        setLogic("ALL");
+      }
+
+      Command* c = new SetBenchmarkLogicCommand("ALL");
+      c->setMuted(true);
+      preemptCommand(c);
+    }
+  }
+}
+
+/* The include are managed in the lexer but called in the parser */
+// Inspired by http://www.antlr3.org/api/C/interop.html
+
+static bool newInputStream(const std::string& filename, pANTLR3_LEXER lexer) {
+  Debug("parser") << "Including " << filename << std::endl;
+  // Create a new input stream and take advantage of built in stream stacking
+  // in C target runtime.
+  //
+  pANTLR3_INPUT_STREAM    in;
+#ifdef CVC4_ANTLR3_OLD_INPUT_STREAM
+  in = antlr3AsciiFileStreamNew((pANTLR3_UINT8) filename.c_str());
+#else /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+  in = antlr3FileStreamNew((pANTLR3_UINT8) filename.c_str(), ANTLR3_ENC_8BIT);
+#endif /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+  if( in == NULL ) {
+    Debug("parser") << "Can't open " << filename << std::endl;
+    return false;
+  }
+  // Same thing as the predefined PUSHSTREAM(in);
+  lexer->pushCharStream(lexer, in);
+  // restart it
+  //lexer->rec->state->tokenStartCharIndex      = -10;
+  //lexer->emit(lexer);
+
+  // Note that the input stream is not closed when it EOFs, I don't bother
+  // to do it here, but it is up to you to track streams created like this
+  // and destroy them when the whole parse session is complete. Remember that you
+  // don't want to do this until all tokens have been manipulated all the way through
+  // your tree parsers etc as the token does not store the text it just refers
+  // back to the input stream and trying to get the text for it will abort if you
+  // close the input stream too early.
+
+  //TODO what said before
+  return true;
+}
+
+void Smt2::includeFile(const std::string& filename) {
+  // security for online version
+  if(!canIncludeFile()) {
+    parseError("include-file feature was disabled for this run.");
+  }
+
+  // Get the lexer
+  AntlrInput* ai = static_cast<AntlrInput*>(getInput());
+  pANTLR3_LEXER lexer = ai->getAntlr3Lexer();
+  // get the name of the current stream "Does it work inside an include?"
+  const std::string inputName = ai->getInputStreamName();
+
+  // Find the directory of the current input file
+  std::string path;
+  size_t pos = inputName.rfind('/');
+  if(pos != std::string::npos) {
+    path = std::string(inputName, 0, pos + 1);
+  }
+  path.append(filename);
+  if(!newInputStream(path, lexer)) {
+    parseError("Couldn't open include file `" + path + "'");
+  }
+}
+
+Expr Smt2::mkSygusVar(const std::string& name, const Type& type, bool isPrimed) {
+  Expr e = mkBoundVar(name, type);
+  d_sygusVars.push_back(e);
+  d_sygusVarPrimed[e] = false;
+  if( isPrimed ){
+    std::stringstream ss;
+    ss << name << "'";
+    Expr ep = mkBoundVar(ss.str(), type);
+    d_sygusVars.push_back(ep);
+    d_sygusVarPrimed[ep] = true;
+  }
+  return e;
+}
+
+void collectSygusGrammarTypesFor( Type range, std::vector< Type >& types, std::map< Type, std::vector< DatatypeConstructorArg > >& sels ){
+  if( !range.isBoolean() ){
+    if( std::find( types.begin(), types.end(), range )==types.end() ){
+      Debug("parser-sygus") << "...will make grammar for " << range << std::endl;
+      types.push_back( range );
+      if( range.isDatatype() ){
+        const Datatype& dt = ((DatatypeType)range).getDatatype();
+        for( unsigned i=0; i<dt.getNumConstructors(); i++ ){
+          for( unsigned j=0; j<dt[i].getNumArgs(); j++ ){
+            Type crange = ((SelectorType)dt[i][j].getType()).getRangeType();
+            sels[crange].push_back( dt[i][j] );
+            collectSygusGrammarTypesFor( crange, types, sels );
+          }
+        }
+      }
+    }
+  }
+}
+
+void Smt2::mkSygusDefaultGrammar( const Type& range, Expr& bvl, const std::string& fun, std::vector<CVC4::Datatype>& datatypes,
+                                  std::vector<Type>& sorts, std::vector< std::vector<Expr> >& ops, std::vector<Expr> sygus_vars, int& startIndex ) {
+
+  //if( !range.isBoolean() && !range.isInteger() && !range.isBitVector() && !range.isDatatype() ){
+  //  parseError("No default grammar for type.");
+  //}
+  startIndex = -1;
+  Debug("parser-sygus") << "Construct default grammar for " << fun << " " << range << std::endl;
+  std::map< CVC4::Type, CVC4::Type > sygus_to_builtin;
+
+  std::vector< Type > types;
+  std::map< Type, std::vector< DatatypeConstructorArg > > sels;
+  //types for each of the variables
+  for( unsigned i=0; i<sygus_vars.size(); i++ ){
+    collectSygusGrammarTypesFor( sygus_vars[i].getType(), types, sels );
+  }
+  //types connected to range
+  collectSygusGrammarTypesFor( range, types, sels );
+
+  //name of boolean sort
+  std::stringstream ssb;
+  ssb << fun << "_Bool";
+  std::string dbname = ssb.str();
+  Type unres_bt = mkUnresolvedType(ssb.str());
+
+  std::vector< Type > unres_types;
+  std::map< Type, Type > type_to_unres;
+  for( unsigned i=0; i<types.size(); i++ ){
+    std::stringstream ss;
+    ss << fun << "_" << types[i];
+    std::string dname = ss.str();
+    datatypes.push_back(Datatype(dname));
+    ops.push_back(std::vector<Expr>());
+    //make unresolved type
+    Type unres_t = mkUnresolvedType(dname);
+    unres_types.push_back(unres_t);
+    type_to_unres[types[i]] = unres_t;
+    sygus_to_builtin[unres_t] = types[i];
+  }
+  for( unsigned i=0; i<types.size(); i++ ){
+    Debug("parser-sygus") << "Make grammar for " << types[i] << " " << unres_types[i] << std::endl;
+    std::vector<std::string> cnames;
+    std::vector<std::vector<CVC4::Type> > cargs;
+    std::vector<std::string> unresolved_gterm_sym;
+    Type unres_t = unres_types[i];
+    //add variables
+    for( unsigned j=0; j<sygus_vars.size(); j++ ){
+      if( sygus_vars[j].getType()==types[i] ){
+        std::stringstream ss;
+        ss << sygus_vars[j];
+        Debug("parser-sygus") << "...add for variable " << ss.str() << std::endl;
+        ops[i].push_back( sygus_vars[j] );
+        cnames.push_back( ss.str() );
+        cargs.push_back( std::vector< CVC4::Type >() );
+      }
+    }
+    //add constants
+    std::vector< Expr > consts;
+    mkSygusConstantsForType( types[i], consts );
+    for( unsigned j=0; j<consts.size(); j++ ){
+      std::stringstream ss;
+      ss << consts[j];
+      Debug("parser-sygus") << "...add for constant " << ss.str() << std::endl;
+      ops[i].push_back( consts[j] );
+      cnames.push_back( ss.str() );
+      cargs.push_back( std::vector< CVC4::Type >() );
+    }
+    //ITE
+    CVC4::Kind k = kind::ITE;
+    Debug("parser-sygus") << "...add for " << k << std::endl;
+    ops[i].push_back(getExprManager()->operatorOf(k));
+    cnames.push_back( kind::kindToString(k) );
+    cargs.push_back( std::vector< CVC4::Type >() );
+    cargs.back().push_back(unres_bt);
+    cargs.back().push_back(unres_t);
+    cargs.back().push_back(unres_t);
+
+    if( types[i].isInteger() ){
+      for( unsigned j=0; j<2; j++ ){
+        CVC4::Kind k = j==0 ? kind::PLUS : kind::MINUS;
+        Debug("parser-sygus") << "...add for " << k << std::endl;
+        ops[i].push_back(getExprManager()->operatorOf(k));
+        cnames.push_back(kind::kindToString(k));
+        cargs.push_back( std::vector< CVC4::Type >() );
+        cargs.back().push_back(unres_t);
+        cargs.back().push_back(unres_t);
+      }
+    }else if( types[i].isDatatype() ){
+      Debug("parser-sygus") << "...add for constructors" << std::endl;
+      const Datatype& dt = ((DatatypeType)types[i]).getDatatype();
+      for( unsigned k=0; k<dt.getNumConstructors(); k++ ){
+        Debug("parser-sygus") << "...for " << dt[k].getName() << std::endl;
+        ops[i].push_back( dt[k].getConstructor() );
+        cnames.push_back( dt[k].getName() );
+        cargs.push_back( std::vector< CVC4::Type >() );
+        for( unsigned j=0; j<dt[k].getNumArgs(); j++ ){
+          Type crange = ((SelectorType)dt[k][j].getType()).getRangeType();
+          //Assert( type_to_unres.find(crange)!=type_to_unres.end() );
+          cargs.back().push_back( type_to_unres[crange] );
+        }
+      }
+    }else{
+      std::stringstream sserr;
+      sserr << "No implementation for default Sygus grammar of type " << types[i] << std::endl;
+      warning(sserr.str());
+    }
+    //add for all selectors to this type
+    if( !sels[types[i]].empty() ){
+      Debug("parser-sygus") << "...add for selectors" << std::endl;
+      for( unsigned j=0; j<sels[types[i]].size(); j++ ){
+        Debug("parser-sygus") << "...for " << sels[types[i]][j].getName() << std::endl;
+        Type arg_type = ((SelectorType)sels[types[i]][j].getType()).getDomain();
+        ops[i].push_back( sels[types[i]][j].getSelector() );
+        cnames.push_back( sels[types[i]][j].getName() );
+        cargs.push_back( std::vector< CVC4::Type >() );
+        //Assert( type_to_unres.find(arg_type)!=type_to_unres.end() );
+        cargs.back().push_back( type_to_unres[arg_type] );
+      }
+    }
+    Debug("parser-sygus") << "...make datatype " << datatypes.back() << std::endl;
+    datatypes[i].setSygus( types[i], bvl, true, true );
+    mkSygusDatatype( datatypes[i], ops[i], cnames, cargs, unresolved_gterm_sym, sygus_to_builtin );
+    sorts.push_back( types[i] );
+    //set start index if applicable
+    if( types[i]==range ){
+      startIndex = i;
+    }
+  }
+
+  //make Boolean type
+  Type btype = getExprManager()->booleanType();
+  datatypes.push_back(Datatype(dbname));
+  ops.push_back(std::vector<Expr>());
+  std::vector<std::string> cnames;
+  std::vector<std::vector<CVC4::Type> > cargs;
+  std::vector<std::string> unresolved_gterm_sym;
+  Debug("parser-sygus") << "Make grammar for " << btype << " " << datatypes.back() << std::endl;
+  //add variables
+  for( unsigned i=0; i<sygus_vars.size(); i++ ){
+    if( sygus_vars[i].getType().isBoolean() ){
+      std::stringstream ss;
+      ss << sygus_vars[i];
+      Debug("parser-sygus") << "...add for variable " << ss.str() << std::endl;
+      ops.back().push_back( sygus_vars[i] );
+      cnames.push_back( ss.str() );
+      cargs.push_back( std::vector< CVC4::Type >() );
+    }
+  }
+  //add constants if no variables and no connected types
+  if( ops.back().empty() && types.empty() ){
+    std::vector< Expr > consts;
+    mkSygusConstantsForType( btype, consts );
+    for( unsigned j=0; j<consts.size(); j++ ){
+      std::stringstream ss;
+      ss << consts[j];
+      Debug("parser-sygus") << "...add for constant " << ss.str() << std::endl;
+      ops.back().push_back( consts[j] );
+      cnames.push_back( ss.str() );
+      cargs.push_back( std::vector< CVC4::Type >() );
+    }
+  }
+  //add operators
+  for( unsigned i=0; i<3; i++ ){
+    CVC4::Kind k = i==0 ? kind::NOT : ( i==1 ? kind::AND : kind::OR );
+    Debug("parser-sygus") << "...add for " << k << std::endl;
+    ops.back().push_back(getExprManager()->operatorOf(k));
+    cnames.push_back(kind::kindToString(k));
+    cargs.push_back( std::vector< CVC4::Type >() );
+    if( k==kind::NOT ){
+      cargs.back().push_back(unres_bt);
+    }else if( k==kind::AND || k==kind::OR ){
+      cargs.back().push_back(unres_bt);
+      cargs.back().push_back(unres_bt);
+    }
+  }
+  //add predicates for types
+  for( unsigned i=0; i<types.size(); i++ ){
+    Debug("parser-sygus") << "...add predicates for " << types[i] << std::endl;
+    //add equality per type
+    CVC4::Kind k = kind::EQUAL;
+    Debug("parser-sygus") << "...add for " << k << std::endl;
+    ops.back().push_back(getExprManager()->operatorOf(k));
+    std::stringstream ss;
+    ss << kind::kindToString(k) << "_" << types[i];
+    cnames.push_back(ss.str());
+    cargs.push_back( std::vector< CVC4::Type >() );
+    cargs.back().push_back(unres_types[i]);
+    cargs.back().push_back(unres_types[i]);
+    //type specific predicates
+    if( types[i].isInteger() ){
+      CVC4::Kind k = kind::LEQ;
+      Debug("parser-sygus") << "...add for " << k << std::endl;
+      ops.back().push_back(getExprManager()->operatorOf(k));
+      cnames.push_back(kind::kindToString(k));
+      cargs.push_back( std::vector< CVC4::Type >() );
+      cargs.back().push_back(unres_types[i]);
+      cargs.back().push_back(unres_types[i]);
+    }else if( types[i].isDatatype() ){
+      //add for testers
+      Debug("parser-sygus") << "...add for testers" << std::endl;
+      const Datatype& dt = ((DatatypeType)types[i]).getDatatype();
+      for( unsigned k=0; k<dt.getNumConstructors(); k++ ){
+        Debug("parser-sygus") << "...for " << dt[k].getTesterName() << std::endl;
+        ops.back().push_back(dt[k].getTester());
+        cnames.push_back(dt[k].getTesterName());
+        cargs.push_back( std::vector< CVC4::Type >() );
+        cargs.back().push_back(unres_types[i]);
+      }
+    }
+  }
+  if( range==btype ){
+    startIndex = sorts.size();
+  }
+  Debug("parser-sygus") << "...make datatype " << datatypes.back() << std::endl;
+  datatypes.back().setSygus( btype, bvl, true, true );
+  mkSygusDatatype( datatypes.back(), ops.back(), cnames, cargs, unresolved_gterm_sym, sygus_to_builtin );
+  sorts.push_back( btype );
+
+  Debug("parser-sygus") << "...finished make default grammar for " << fun << " " << range << std::endl;
+}
+
+void Smt2::mkSygusConstantsForType( const Type& type, std::vector<CVC4::Expr>& ops ) {
+  if( type.isInteger() ){
+    ops.push_back(getExprManager()->mkConst(Rational(0)));
+    ops.push_back(getExprManager()->mkConst(Rational(1)));
+  }else if( type.isBitVector() ){
+    unsigned sz = ((BitVectorType)type).getSize();
+    BitVector bval0(sz, (unsigned int)0);
+    ops.push_back( getExprManager()->mkConst(bval0) );
+    BitVector bval1(sz, (unsigned int)1);
+    ops.push_back( getExprManager()->mkConst(bval1) );
+  }else if( type.isBoolean() ){
+    ops.push_back(getExprManager()->mkConst(true));
+    ops.push_back(getExprManager()->mkConst(false));
+  }
+  //TODO : others?
+}
+
+//  This method adds N operators to ops[index], N names to cnames[index] and N type argument vectors to cargs[index] (where typically N=1)
+//  This method may also add new elements pairwise into datatypes/sorts/ops/cnames/cargs in the case of non-flat gterms.
+void Smt2::processSygusGTerm( CVC4::SygusGTerm& sgt, int index,
+                              std::vector< CVC4::Datatype >& datatypes,
+                              std::vector< CVC4::Type>& sorts,
+                              std::vector< std::vector<CVC4::Expr> >& ops,
+                              std::vector< std::vector<std::string> >& cnames,
+                              std::vector< std::vector< std::vector< CVC4::Type > > >& cargs,
+                              std::vector< bool >& allow_const,
+                              std::vector< std::vector< std::string > >& unresolved_gterm_sym,
+                              std::vector<CVC4::Expr>& sygus_vars,
+                              std::map< CVC4::Type, CVC4::Type >& sygus_to_builtin, std::map< CVC4::Type, CVC4::Expr >& sygus_to_builtin_expr,
+                              CVC4::Type& ret, bool isNested ){
+  if( sgt.d_gterm_type==SygusGTerm::gterm_op || sgt.d_gterm_type==SygusGTerm::gterm_let ){
+    Debug("parser-sygus") << "Add " << sgt.d_expr << " to datatype " << index << std::endl;
+    Kind oldKind;
+    Kind newKind = kind::UNDEFINED_KIND;
+    //convert to UMINUS if one child of MINUS
+    if( sgt.d_children.size()==1 && sgt.d_expr==getExprManager()->operatorOf(kind::MINUS) ){
+      oldKind = kind::MINUS;
+      newKind = kind::UMINUS;
+    }
+    /*
+    //convert to IFF if boolean EQUAL
+    if( sgt.d_expr==getExprManager()->operatorOf(kind::EQUAL) ){
+      Type ctn = sgt.d_children[0].d_type;
+      std::map< CVC4::Type, CVC4::Type >::iterator it = sygus_to_builtin.find( ctn );
+      if( it != sygus_to_builtin.end() && it->second.isBoolean() ){
+        oldKind = kind::EQUAL;
+        newKind = kind::IFF;
+      }
+    }
+    */
+    if( newKind!=kind::UNDEFINED_KIND ){
+      Expr newExpr = getExprManager()->operatorOf(newKind);
+      Debug("parser-sygus") << "Replace " << sgt.d_expr << " with " << newExpr << std::endl;
+      sgt.d_expr = newExpr;
+      std::string oldName = kind::kindToString(oldKind);
+      std::string newName = kind::kindToString(newKind);
+      size_t pos = 0;
+      if((pos = sgt.d_name.find(oldName, pos)) != std::string::npos){
+        sgt.d_name.replace(pos, oldName.length(), newName);
+      }
+    }
+    ops[index].push_back( sgt.d_expr );
+    cnames[index].push_back( sgt.d_name );
+    cargs[index].push_back( std::vector< CVC4::Type >() );
+    for( unsigned i=0; i<sgt.d_children.size(); i++ ){
+      std::stringstream ss;
+      ss << datatypes[index].getName() << "_" << ops[index].size() << "_arg_" << i;
+      std::string sub_dname = ss.str();
+      //add datatype for child
+      Type null_type;
+      pushSygusDatatypeDef( null_type, sub_dname, datatypes, sorts, ops, cnames, cargs, allow_const, unresolved_gterm_sym );
+      int sub_dt_index = datatypes.size()-1;
+      //process child
+      Type sub_ret;
+      processSygusGTerm( sgt.d_children[i], sub_dt_index, datatypes, sorts, ops, cnames, cargs, allow_const, unresolved_gterm_sym,
+                         sygus_vars, sygus_to_builtin, sygus_to_builtin_expr, sub_ret, true );
+      //process the nested gterm (either pop the last datatype, or flatten the argument)
+      Type tt = processSygusNestedGTerm( sub_dt_index, sub_dname, datatypes, sorts, ops, cnames, cargs, allow_const, unresolved_gterm_sym,
+                                         sygus_to_builtin, sygus_to_builtin_expr, sub_ret );
+      cargs[index].back().push_back(tt);
+    }
+    //if let, must create operator
+    if( sgt.d_gterm_type==SygusGTerm::gterm_let ){
+      processSygusLetConstructor( sgt.d_let_vars, index, datatypes, sorts, ops, cnames, cargs,
+                                  sygus_vars, sygus_to_builtin, sygus_to_builtin_expr );
+    }
+  }else if( sgt.d_gterm_type==SygusGTerm::gterm_constant ){
+    if( sgt.getNumChildren()!=0 ){
+      parseError("Bad syntax for Sygus Constant.");
+    }
+    std::vector< Expr > consts;
+    mkSygusConstantsForType( sgt.d_type, consts );
+    Debug("parser-sygus") << "...made " << consts.size() << " constants." << std::endl;
+    for( unsigned i=0; i<consts.size(); i++ ){
+      std::stringstream ss;
+      ss << consts[i];
+      Debug("parser-sygus") << "...add for constant " << ss.str() << std::endl;
+      ops[index].push_back( consts[i] );
+      cnames[index].push_back( ss.str() );
+      cargs[index].push_back( std::vector< CVC4::Type >() );
+    }
+    allow_const[index] = true;
+  }else if( sgt.d_gterm_type==SygusGTerm::gterm_variable || sgt.d_gterm_type==SygusGTerm::gterm_input_variable ){
+    if( sgt.getNumChildren()!=0 ){
+      parseError("Bad syntax for Sygus Variable.");
+    }
+    Debug("parser-sygus") << "...process " << sygus_vars.size() << " variables." << std::endl;
+    for( unsigned i=0; i<sygus_vars.size(); i++ ){
+      if( sygus_vars[i].getType()==sgt.d_type ){
+        std::stringstream ss;
+        ss << sygus_vars[i];
+        Debug("parser-sygus") << "...add for variable " << ss.str() << std::endl;
+        ops[index].push_back( sygus_vars[i] );
+        cnames[index].push_back( ss.str() );
+        cargs[index].push_back( std::vector< CVC4::Type >() );
+      }
+    }
+  }else if( sgt.d_gterm_type==SygusGTerm::gterm_nested_sort ){
+    ret = sgt.d_type;
+  }else if( sgt.d_gterm_type==SygusGTerm::gterm_unresolved ){
+    if( isNested ){
+      if( isUnresolvedType(sgt.d_name) ){
+        ret = getSort(sgt.d_name);
+      }else{
+        //nested, unresolved symbol...fail
+        std::stringstream ss;
+        ss << "Cannot handle nested unresolved symbol " << sgt.d_name << std::endl;
+        parseError(ss.str());
+      }
+    }else{
+      //will resolve when adding constructors
+      unresolved_gterm_sym[index].push_back(sgt.d_name);
+    }
+  }else if( sgt.d_gterm_type==SygusGTerm::gterm_ignore ){
+
+  }
+}
+
+bool Smt2::pushSygusDatatypeDef( Type t, std::string& dname,
+                                  std::vector< CVC4::Datatype >& datatypes,
+                                  std::vector< CVC4::Type>& sorts,
+                                  std::vector< std::vector<CVC4::Expr> >& ops,
+                                  std::vector< std::vector<std::string> >& cnames,
+                                  std::vector< std::vector< std::vector< CVC4::Type > > >& cargs,
+                                  std::vector< bool >& allow_const,
+                                  std::vector< std::vector< std::string > >& unresolved_gterm_sym ){
+  sorts.push_back(t);
+  datatypes.push_back(Datatype(dname));
+  ops.push_back(std::vector<Expr>());
+  cnames.push_back(std::vector<std::string>());
+  cargs.push_back(std::vector<std::vector<CVC4::Type> >());
+  allow_const.push_back(false);
+  unresolved_gterm_sym.push_back(std::vector< std::string >());
+  return true;
+}
+
+bool Smt2::popSygusDatatypeDef( std::vector< CVC4::Datatype >& datatypes,
+                                 std::vector< CVC4::Type>& sorts,
+                                 std::vector< std::vector<CVC4::Expr> >& ops,
+                                 std::vector< std::vector<std::string> >& cnames,
+                                 std::vector< std::vector< std::vector< CVC4::Type > > >& cargs,
+                                 std::vector< bool >& allow_const,
+                                 std::vector< std::vector< std::string > >& unresolved_gterm_sym ){
+  sorts.pop_back();
+  datatypes.pop_back();
+  ops.pop_back();
+  cnames.pop_back();
+  cargs.pop_back();
+  allow_const.pop_back();
+  unresolved_gterm_sym.pop_back();
+  return true;
+}
+
+Type Smt2::processSygusNestedGTerm( int sub_dt_index, std::string& sub_dname, std::vector< CVC4::Datatype >& datatypes,
+                                    std::vector< CVC4::Type>& sorts,
+                                    std::vector< std::vector<CVC4::Expr> >& ops,
+                                    std::vector< std::vector<std::string> >& cnames,
+                                    std::vector< std::vector< std::vector< CVC4::Type > > >& cargs,
+                                    std::vector< bool >& allow_const,
+                                    std::vector< std::vector< std::string > >& unresolved_gterm_sym,
+                                    std::map< CVC4::Type, CVC4::Type >& sygus_to_builtin,
+                                    std::map< CVC4::Type, CVC4::Expr >& sygus_to_builtin_expr, Type sub_ret ) {
+  Type t = sub_ret;
+  Debug("parser-sygus") << "Argument is ";
+  if( t.isNull() ){
+    //then, it is the datatype we constructed, which should have a single constructor
+    t = mkUnresolvedType(sub_dname);
+    Debug("parser-sygus") << "inline flattening of (auxiliary, local) datatype " << t << std::endl;
+    Debug("parser-sygus") << ": to compute type, construct ground term witnessing the grammar, #cons=" << cargs[sub_dt_index].size() << std::endl;
+    if( cargs[sub_dt_index].empty() ){
+      parseError(std::string("Internal error : datatype for nested gterm does not have a constructor."));
+    }
+    Expr sop = ops[sub_dt_index][0];
+    Type curr_t;
+    if( sop.getKind() != kind::BUILTIN && ( sop.isConst() || cargs[sub_dt_index][0].empty() ) ){
+      curr_t = sop.getType();
+      Debug("parser-sygus") << ": it is constant/0-arg cons " << sop << " with type " << sop.getType() << ", debug=" << sop.isConst() << " " << cargs[sub_dt_index][0].size() << std::endl;
+      sygus_to_builtin_expr[t] = sop;
+      //store that term sop has dedicated sygus type t
+      if( d_sygus_bound_var_type.find( sop )==d_sygus_bound_var_type.end() ){
+        d_sygus_bound_var_type[sop] = t;
+      }
+    }else{
+      std::vector< Expr > children;
+      if( sop.getKind() != kind::BUILTIN ){
+        children.push_back( sop );
+      }
+      for( unsigned i=0; i<cargs[sub_dt_index][0].size(); i++ ){
+        std::map< CVC4::Type, CVC4::Expr >::iterator it = sygus_to_builtin_expr.find( cargs[sub_dt_index][0][i] );
+        if( it==sygus_to_builtin_expr.end() ){
+          if( sygus_to_builtin.find( cargs[sub_dt_index][0][i] )==sygus_to_builtin.end() ){
+            std::stringstream ss;
+            ss << "Missing builtin type for type " << cargs[sub_dt_index][0][i] << "!" << std::endl;
+            ss << "Builtin types are currently : " << std::endl;
+            for( std::map< CVC4::Type, CVC4::Type >::iterator itb = sygus_to_builtin.begin(); itb != sygus_to_builtin.end(); ++itb ){
+              ss << "  " << itb->first << " -> " << itb->second << std::endl;
+            }
+            parseError(ss.str());
+          }
+          Type bt = sygus_to_builtin[cargs[sub_dt_index][0][i]];
+          Debug("parser-sygus") << ":  child " << i << " introduce type elem for " << cargs[sub_dt_index][0][i] << " " << bt << std::endl;
+          std::stringstream ss;
+          ss << t << "_x_" << i;
+          Expr bv = mkBoundVar(ss.str(), bt);
+          children.push_back( bv );
+          d_sygus_bound_var_type[bv] = cargs[sub_dt_index][0][i];
+        }else{
+          Debug("parser-sygus") << ":  child " << i << " existing sygus to builtin expr : " << it->second << std::endl;
+          children.push_back( it->second );
+        }
+      }
+      Kind sk = sop.getKind() != kind::BUILTIN ? kind::APPLY : getExprManager()->operatorToKind(sop);
+      Debug("parser-sygus") << ": operator " << sop << " with " << sop.getKind() << " " << sk << std::endl;
+      Expr e = getExprManager()->mkExpr( sk, children );
+      Debug("parser-sygus") << ": constructed " << e << ", which has type " << e.getType() << std::endl;
+      curr_t = e.getType();
+      sygus_to_builtin_expr[t] = e;
+    }
+    sorts[sub_dt_index] = curr_t;
+    sygus_to_builtin[t] = curr_t;
+  }else{
+    Debug("parser-sygus") << "simple argument " << t << std::endl;
+    Debug("parser-sygus") << "...removing " << datatypes.back().getName() << std::endl;
+    //otherwise, datatype was unecessary
+    //pop argument datatype definition
+    popSygusDatatypeDef( datatypes, sorts, ops, cnames, cargs, allow_const, unresolved_gterm_sym );
+  }
+  return t;
+}
+
+void Smt2::processSygusLetConstructor( std::vector< CVC4::Expr >& let_vars,
+                                       int index,
+                                       std::vector< CVC4::Datatype >& datatypes,
+                                       std::vector< CVC4::Type>& sorts,
+                                       std::vector< std::vector<CVC4::Expr> >& ops,
+                                       std::vector< std::vector<std::string> >& cnames,
+                                       std::vector< std::vector< std::vector< CVC4::Type > > >& cargs,
+                                       std::vector<CVC4::Expr>& sygus_vars,
+                                       std::map< CVC4::Type, CVC4::Type >& sygus_to_builtin,
+                                       std::map< CVC4::Type, CVC4::Expr >& sygus_to_builtin_expr ) {
+  std::vector< CVC4::Expr > let_define_args;
+  Expr let_body;
+  int dindex = cargs[index].size()-1;
+  Debug("parser-sygus") << "Process let constructor for datatype " << datatypes[index].getName() << ", #subtypes = " << cargs[index][dindex].size() << std::endl;
+  for( unsigned i=0; i<cargs[index][dindex].size(); i++ ){
+    Debug("parser-sygus") << "  " << i << " : " << cargs[index][dindex][i] << std::endl;
+    if( i+1==cargs[index][dindex].size() ){
+      std::map< CVC4::Type, CVC4::Expr >::iterator it = sygus_to_builtin_expr.find( cargs[index][dindex][i] );
+      if( it!=sygus_to_builtin_expr.end() ){
+        let_body = it->second;
+      }else{
+        std::stringstream ss;
+        ss << datatypes[index].getName() << "_body";
+        let_body = mkBoundVar(ss.str(), sygus_to_builtin[cargs[index][dindex][i]]);
+        d_sygus_bound_var_type[let_body] = cargs[index][dindex][i];
+      }
+    }
+  }
+  Debug("parser-sygus") << std::endl;
+  Debug("parser-sygus") << "Body is " << let_body << std::endl;
+  Debug("parser-sygus") << "# let vars = " << let_vars.size() << std::endl;
+  for( unsigned i=0; i<let_vars.size(); i++ ){
+    Debug("parser-sygus") << "  let var " << i << " : " << let_vars[i] << " " << let_vars[i].getType() << std::endl;
+    let_define_args.push_back( let_vars[i] );
+  }
+  /*
+  Debug("parser-sygus") << "index = " << index << ", start index = " << start_index << ", #Current datatypes = " << datatypes.size() << std::endl;
+  for( unsigned i=start_index; i<datatypes.size(); i++ ){
+    Debug("parser-sygus") << "  datatype " << i << " : " << datatypes[i].getName() << ", #cons = " << cargs[i].size() << std::endl;
+    if( !cargs[i].empty() ){
+      Debug("parser-sygus") << "  operator 0 is " << ops[i][0] << std::endl;
+      Debug("parser-sygus") << "  cons 0 has " << cargs[i][0].size() << " sub fields." << std::endl;
+      for( unsigned j=0; j<cargs[i][0].size(); j++ ){
+        Type bt = sygus_to_builtin[cargs[i][0][j]];
+        Debug("parser-sygus") << "    cons 0, selector " << j << " : " << cargs[i][0][j] << " " << bt << std::endl;
+      }
+    }
+  }
+  */
+  //last argument is the return, pop
+  cargs[index][dindex].pop_back();
+  collectSygusLetArgs( let_body, cargs[index][dindex], let_define_args );
+
+  Debug("parser-sygus") << "Make define-fun with " << cargs[index][dindex].size() << " arguments..." << std::endl;
+  std::vector<CVC4::Type> fsorts;
+  for( unsigned i=0; i<cargs[index][dindex].size(); i++ ){
+    Debug("parser-sygus") << "  " << i << " : " << let_define_args[i] << " " << let_define_args[i].getType() << " " << cargs[index][dindex][i] << std::endl;
+    fsorts.push_back(let_define_args[i].getType());
+  }
+
+  Type ft = getExprManager()->mkFunctionType(fsorts, let_body.getType());
+  std::stringstream ss;
+  ss << datatypes[index].getName() << "_let";
+  Expr let_func = mkFunction(ss.str(), ft, ExprManager::VAR_FLAG_DEFINED);
+  d_sygus_defined_funs.push_back( let_func );
+  preemptCommand( new DefineFunctionCommand(ss.str(), let_func, let_define_args, let_body) );
+
+  ops[index].pop_back();
+  ops[index].push_back( let_func );
+  cnames[index].pop_back();
+  cnames[index].push_back(ss.str());
+
+  //mark function as let constructor
+  d_sygus_let_func_to_vars[let_func].insert( d_sygus_let_func_to_vars[let_func].end(), let_define_args.begin(), let_define_args.end() );
+  d_sygus_let_func_to_body[let_func] = let_body;
+  d_sygus_let_func_to_num_input_vars[let_func] = let_vars.size();
+}
+
+
+void Smt2::collectSygusLetArgs( CVC4::Expr e, std::vector< CVC4::Type >& sygusArgs, std::vector< CVC4::Expr >& builtinArgs ) {
+  if( e.getKind()==kind::BOUND_VARIABLE ){
+    if( std::find( builtinArgs.begin(), builtinArgs.end(), e )==builtinArgs.end() ){
+      builtinArgs.push_back( e );
+      sygusArgs.push_back( d_sygus_bound_var_type[e] );
+      if( d_sygus_bound_var_type[e].isNull() ){
+        std::stringstream ss;
+        ss << "While constructing body of let gterm, can't map " << e << " to sygus type." << std::endl;
+        parseError(ss.str());
+      }
+    }
+  }else{
+    for( unsigned i=0; i<e.getNumChildren(); i++ ){
+      collectSygusLetArgs( e[i], sygusArgs, builtinArgs );
+    }
+  }
+}
+
+void Smt2::setSygusStartIndex( std::string& fun, int startIndex,
+                               std::vector< CVC4::Datatype >& datatypes,
+                               std::vector< CVC4::Type>& sorts,
+                               std::vector< std::vector<CVC4::Expr> >& ops ) {
+  if( startIndex>0 ){
+    CVC4::Datatype tmp_dt = datatypes[0];
+    Type tmp_sort = sorts[0];
+    std::vector< Expr > tmp_ops;
+    tmp_ops.insert( tmp_ops.end(), ops[0].begin(), ops[0].end() );
+    datatypes[0] = datatypes[startIndex];
+    sorts[0] = sorts[startIndex];
+    ops[0].clear();
+    ops[0].insert( ops[0].end(), ops[startIndex].begin(), ops[startIndex].end() );
+    datatypes[startIndex] = tmp_dt;
+    sorts[startIndex] = tmp_sort;
+    ops[startIndex].clear();
+    ops[startIndex].insert( ops[startIndex].begin(), tmp_ops.begin(), tmp_ops.end() );
+  }else if( startIndex<0 ){
+    std::stringstream ss;
+    ss << "warning: no symbol named Start for synth-fun " << fun << std::endl;
+    warning(ss.str());
+  }
+}
+
+void Smt2::defineSygusFuns() {
+  // only define each one once
+  while(d_nextSygusFun < d_sygusFuns.size()) {
+    std::pair<std::string, Expr> p = d_sygusFuns[d_nextSygusFun];
+    std::string fun = p.first;
+    Debug("parser-sygus") << "Sygus : define fun " << fun << std::endl;
+    Expr eval = p.second;
+    FunctionType evalType = eval.getType();
+    std::vector<Type> argTypes = evalType.getArgTypes();
+    Type rangeType = evalType.getRangeType();
+    Debug("parser-sygus") << "...eval type : " << evalType << ", #args=" << argTypes.size() << std::endl;
+
+    // first make the function type
+    std::vector<Expr> sygusVars;
+    std::vector<Type> funType;
+    for(size_t j = 1; j < argTypes.size(); ++j) {
+      funType.push_back(argTypes[j]);
+      std::stringstream ss;
+      ss << fun << "_v_" << j;
+      sygusVars.push_back(getExprManager()->mkBoundVar(ss.str(), argTypes[j]));
+    }
+    Type funt;
+    if( !funType.empty() ){
+      funt = getExprManager()->mkFunctionType(funType, rangeType);
+      Debug("parser-sygus") << "...eval function type : " << funt << std::endl;
+
+      // copy the bound vars
+      /*
+      std::vector<Expr> sygusVars;
+      //std::vector<Type> types;
+      for(size_t i = 0; i < d_sygusVars.size(); ++i) {
+        std::stringstream ss;
+        ss << d_sygusVars[i];
+        Type type = d_sygusVars[i].getType();
+        sygusVars.push_back(getExprManager()->mkBoundVar(ss.str(), type));
+        //types.push_back(type);
+      }
+      Debug("parser-sygus") << "...made vars, #vars=" << sygusVars.size() << std::endl;
+      */
+
+      //Type t = getExprManager()->mkFunctionType(types, rangeType);
+      //Debug("parser-sygus") << "...function type : " << t << std::endl;
+    }else{
+      funt = rangeType;
+    }
+    Expr lambda = mkFunction(fun, funt, ExprManager::VAR_FLAG_DEFINED);
+    Debug("parser-sygus") << "...made function : " << lambda << std::endl;
+    std::vector<Expr> applyv;
+    Expr funbv = getExprManager()->mkBoundVar(std::string("f") + fun, argTypes[0]);
+    d_sygusFunSymbols.push_back(funbv);
+    applyv.push_back(eval);
+    applyv.push_back(funbv);
+    for(size_t i = 0; i < sygusVars.size(); ++i) {
+      applyv.push_back(sygusVars[i]);
+    }
+    Expr apply = getExprManager()->mkExpr(kind::APPLY_UF, applyv);
+    Debug("parser-sygus") << "...made apply " << apply << std::endl;
+    Debug("parser-sygus") << "--> Define " << fun << " as " << lambda << " " << apply << std::endl;
+    Command* cmd = new DefineFunctionCommand(fun, lambda, sygusVars, apply);
+    preemptCommand(cmd);
+
+    ++d_nextSygusFun;
+  }
+}
+
+void Smt2::mkSygusDatatype( CVC4::Datatype& dt, std::vector<CVC4::Expr>& ops,
+                            std::vector<std::string>& cnames, std::vector< std::vector< CVC4::Type > >& cargs,
+                            std::vector<std::string>& unresolved_gterm_sym,
+                            std::map< CVC4::Type, CVC4::Type >& sygus_to_builtin ) {
+  Debug("parser-sygus") << "Making sygus datatype " << dt.getName() << std::endl;
+  Debug("parser-sygus") << "  add constructors..." << std::endl;
+  for( int i=0; i<(int)cnames.size(); i++ ){
+    bool is_dup = false;
+    bool is_dup_op = false;
+    Expr let_body;
+    std::vector< Expr > let_args;
+    unsigned let_num_input_args = 0;
+    for( int j=0; j<i; j++ ){
+      if( ops[i]==ops[j] ){
+        is_dup_op = true;
+        if( cargs[i].size()==cargs[j].size() ){
+          is_dup = true;
+          for( unsigned k=0; k<cargs[i].size(); k++ ){
+            if( cargs[i][k]!=cargs[j][k] ){
+              is_dup = false;
+              break;
+            }
+          }
+        }
+        if( is_dup ){
+          break;
+        }
+      }
+    }
+    if( is_dup ){
+      Debug("parser-sygus") << "--> Duplicate gterm : " << ops[i] << " at " << i << std::endl;
+      ops.erase( ops.begin() + i, ops.begin() + i + 1 );
+      cnames.erase( cnames.begin() + i, cnames.begin() + i + 1 );
+      cargs.erase( cargs.begin() + i, cargs.begin() + i + 1 );
+      i--;
+    }else if( is_dup_op ){
+      Debug("parser-sygus") << "--> Duplicate gterm operator : " << ops[i] << " at " << i << std::endl;
+      //make into define-fun
+      std::vector<CVC4::Type> fsorts;
+      for( unsigned j=0; j<cargs[i].size(); j++ ){
+        Type bt = sygus_to_builtin[cargs[i][j]];
+        std::stringstream ss;
+        ss << dt.getName() << "_x_" << i << "_" << j;
+        Expr v = mkBoundVar(ss.str(), bt);
+        let_args.push_back( v );
+        fsorts.push_back( bt );
+        Debug("parser-sygus") << ": var " << i << " " << v << " with type " << bt << " from " << cargs[i][j] << std::endl;
+      }
+      //make the let_body
+      std::vector< Expr > children;
+      if( ops[i].getKind() != kind::BUILTIN ){
+        children.push_back( ops[i] );
+      }
+      children.insert( children.end(), let_args.begin(), let_args.end() );
+      Kind sk = ops[i].getKind() != kind::BUILTIN ? kind::APPLY : getExprManager()->operatorToKind(ops[i]);
+      Debug("parser-sygus") << ": replace " << ops[i] << " " << ops[i].getKind() << " " << sk << std::endl;
+      let_body = getExprManager()->mkExpr( sk, children );
+      Debug("parser-sygus") << ": new body of function is " << let_body << std::endl;
+
+      Type ft = getExprManager()->mkFunctionType(fsorts, let_body.getType());
+      Debug("parser-sygus") << ": function type is " << ft << std::endl;
+      std::stringstream ss;
+      ss << dt.getName() << "_df_" << i;
+      //replace operator and name
+      ops[i] = mkFunction(ss.str(), ft, ExprManager::VAR_FLAG_DEFINED);
+      cnames[i] = ss.str();
+      d_sygus_defined_funs.push_back( ops[i] );
+      preemptCommand( new DefineFunctionCommand(ss.str(), ops[i], let_args, let_body) );
+      addSygusDatatypeConstructor( dt, ops[i], cnames[i], cargs[i], let_body, let_args, 0 );
+    }else{
+      std::map< CVC4::Expr, CVC4::Expr >::iterator it = d_sygus_let_func_to_body.find( ops[i] );
+      if( it!=d_sygus_let_func_to_body.end() ){
+        let_body = it->second;
+        let_args.insert( let_args.end(), d_sygus_let_func_to_vars[ops[i]].begin(), d_sygus_let_func_to_vars[ops[i]].end() );
+        let_num_input_args = d_sygus_let_func_to_num_input_vars[ops[i]];
+      }
+      addSygusDatatypeConstructor( dt, ops[i], cnames[i], cargs[i], let_body, let_args, let_num_input_args );
+    }
+  }
+  Debug("parser-sygus") << "  add constructors for unresolved symbols..." << std::endl;
+  if( !unresolved_gterm_sym.empty() ){
+    std::vector< Type > types;
+    Debug("parser-sygus") << "...resolve " << unresolved_gterm_sym.size() << " symbols..." << std::endl;
+    for( unsigned i=0; i<unresolved_gterm_sym.size(); i++ ){
+      Debug("parser-sygus") << "  resolve : " << unresolved_gterm_sym[i] << std::endl;
+      if( isUnresolvedType(unresolved_gterm_sym[i]) ){
+        Debug("parser-sygus") << "    it is an unresolved type." << std::endl;
+        Type t = getSort(unresolved_gterm_sym[i]);
+        if( std::find( types.begin(), types.end(), t )==types.end() ){
+          types.push_back( t );
+          //identity element
+          Type bt = dt.getSygusType();
+          Debug("parser-sygus") << ":  make identity function for " << bt << ", argument type " << t << std::endl;
+          std::stringstream ss;
+          ss << t << "_x_id";
+          Expr let_body = mkBoundVar(ss.str(), bt);
+          std::vector< Expr > let_args;
+          let_args.push_back( let_body );
+          //make the identity function
+          Type ft = getExprManager()->mkFunctionType(bt, bt);
+          std::stringstream ssid;
+          ssid << unresolved_gterm_sym[i] << "_id";
+          Expr id_op = mkFunction(ss.str(), ft, ExprManager::VAR_FLAG_DEFINED);
+          d_sygus_defined_funs.push_back( id_op );
+          preemptCommand( new DefineFunctionCommand(ssid.str(), id_op, let_args, let_body) );
+          //make the sygus argument list
+          std::vector< Type > id_carg;
+          id_carg.push_back( t );
+          addSygusDatatypeConstructor( dt, id_op, unresolved_gterm_sym[i], id_carg, let_body, let_args, 0 );
+          //add to operators
+          ops.push_back( id_op );
+        }
+      }else{
+        Debug("parser-sygus") << "    ignore. (likely a free let variable)" << std::endl;
+      }
+    }
+  }
+
+}
+
+void Smt2::addSygusDatatypeConstructor( CVC4::Datatype& dt, CVC4::Expr op, std::string& cname, std::vector< CVC4::Type >& cargs,
+                                        CVC4::Expr& let_body, std::vector< CVC4::Expr >& let_args, unsigned let_num_input_args ) {
+  Debug("parser-sygus") << "--> Add constructor " << cname << " to " << dt.getName() << std::endl;
+  if( !let_body.isNull() ){
+    Debug("parser-sygus") << "    let body = " << let_body << ", args = " << let_args.size() << "," << let_num_input_args << std::endl;
+    //TODO : remove arguments not occurring in body
+    //if this is a self identity function, ignore
+    if( let_args.size()==0 && let_args[0]==let_body ){
+      Debug("parser-sygus") << "    identity function " << cargs[0] << " to " << dt.getName() << std::endl;
+      //TODO
+    }
+  }
+  std::string name = dt.getName() + "_" + cname;
+  std::string testerId("is-");
+  testerId.append(name);
+  checkDeclaration(name, CHECK_UNDECLARED, SYM_VARIABLE);
+  checkDeclaration(testerId, CHECK_UNDECLARED, SYM_VARIABLE);
+  CVC4::DatatypeConstructor c(name, testerId );
+  c.setSygus( op, let_body, let_args, let_num_input_args );
+  for( unsigned j=0; j<cargs.size(); j++ ){
+    Debug("parser-sygus-debug") << "  arg " << j << " : " << cargs[j] << std::endl;
+    std::stringstream sname;
+    sname << name << "_" << j;
+    c.addArg(sname.str(), cargs[j]);
+  }
+  dt.addConstructor(c);
+}
+
+
+// i is index in datatypes/ops
+// j is index is datatype
+Expr Smt2::getSygusAssertion( std::vector<DatatypeType>& datatypeTypes, std::vector< std::vector<Expr> >& ops,
+                              std::map<DatatypeType, Expr>& evals, std::vector<Expr>& terms,
+                              Expr eval, const Datatype& dt, size_t i, size_t j ) {
+  const DatatypeConstructor& ctor = dt[j];
+  Debug("parser-sygus") << "Sygus : process constructor " << j << " : " << dt[j] << std::endl;
+  std::vector<Expr> bvs, extraArgs;
+  for(size_t k = 0; k < ctor.getNumArgs(); ++k) {
+    std::string vname = "v_" + ctor[k].getName();
+    Expr bv = getExprManager()->mkBoundVar(vname, SelectorType(ctor[k].getType()).getRangeType());
+    bvs.push_back(bv);
+    extraArgs.push_back(bv);
+  }
+  if( !terms[0].isNull() ){
+    bvs.insert(bvs.end(), terms[0].begin(), terms[0].end());
+  }
+  Expr bvl;
+  if( !bvs.empty() ){
+    bvl = getExprManager()->mkExpr(kind::BOUND_VAR_LIST, bvs);
+  }
+  Debug("parser-sygus") << "...made bv list " << bvl << std::endl;
+  std::vector<Expr> patv;
+  patv.push_back(eval);
+  std::vector<Expr> applyv;
+  applyv.push_back(ctor.getConstructor());
+  applyv.insert(applyv.end(), extraArgs.begin(), extraArgs.end());
+  for(size_t k = 0; k < applyv.size(); ++k) {
+  }
+  Expr cpatv = getExprManager()->mkExpr(kind::APPLY_CONSTRUCTOR, applyv);
+  Debug("parser-sygus") << "...made eval ctor apply " << cpatv << std::endl;
+  patv.push_back(cpatv);
+  if( !terms[0].isNull() ){
+    patv.insert(patv.end(), terms[0].begin(), terms[0].end());
+  }
+  Expr evalApply = getExprManager()->mkExpr(kind::APPLY_UF, patv);
+  Debug("parser-sygus") << "...made eval apply " << evalApply << std::endl;
+  std::vector<Expr> builtApply;
+  for(size_t k = 0; k < extraArgs.size(); ++k) {
+    std::vector<Expr> patvb;
+    patvb.push_back(evals[DatatypeType(extraArgs[k].getType())]);
+    patvb.push_back(extraArgs[k]);
+    if( !terms[0].isNull() ){
+      patvb.insert(patvb.end(), terms[0].begin(), terms[0].end());
+    }
+    Debug("parser-sygus-debug") << "...add to built apply " << evals[DatatypeType(extraArgs[k].getType())] << " " << extraArgs[k] << " " << extraArgs[k].getType() << std::endl;
+    builtApply.push_back(getExprManager()->mkExpr(kind::APPLY_UF, patvb));
+    Debug("parser-sygus-debug") << "...added " << builtApply.back() << std::endl;
+  }
+  for(size_t k = 0; k < builtApply.size(); ++k) {
+  }
+  Expr builtTerm;
+  Debug("parser-sygus") << "...operator is : " << ops[i][j] << ", type = " << ops[i][j].getType() << ", kind = " << ops[i][j].getKind() << ", is defined = " << isDefinedFunction( ops[i][j] ) << std::endl;
+  if( ops[i][j].getKind() != kind::BUILTIN ){
+    Kind ok = kind::UNDEFINED_KIND;
+    if( isDefinedFunction( ops[i][j] ) || std::find( d_sygus_defined_funs.begin(), d_sygus_defined_funs.end(), ops[i][j] )!=d_sygus_defined_funs.end() ){
+      ok = kind::APPLY;
+    }else{
+      Type t = ops[i][j].getType();
+      if( t.isConstructor() ){
+        ok = kind::APPLY_CONSTRUCTOR;
+      }else if( t.isSelector() ){
+        ok = kind::APPLY_SELECTOR;
+      }else if( t.isTester() ){
+        ok = kind::APPLY_TESTER;
+      }else{
+        ok = getExprManager()->operatorToKind( ops[i][j] );
+      }
+    }
+    Debug("parser-sygus") << "...processed operator kind : " << ok << std::endl;
+    if( ok!=kind::UNDEFINED_KIND ){
+      builtTerm = getExprManager()->mkExpr(ok, ops[i][j], builtApply);
+    }else{
+      builtTerm = ops[i][j];
+    }
+  }else{
+    if( !builtApply.empty() ){
+      builtTerm = getExprManager()->mkExpr(ops[i][j], builtApply);
+    }else{
+      builtTerm = ops[i][j];
+    }
+  }
+  Debug("parser-sygus") << "...made built term " << builtTerm << std::endl;
+  Expr assertion = getExprManager()->mkExpr(kind::EQUAL, evalApply, builtTerm);
+  if( !bvl.isNull() ){
+    Expr pattern = getExprManager()->mkExpr(kind::INST_PATTERN, evalApply);
+    pattern = getExprManager()->mkExpr(kind::INST_PATTERN_LIST, pattern);
+    assertion = getExprManager()->mkExpr(kind::FORALL, bvl, assertion, pattern);
+  }
+  Debug("parser-sygus") << "...made assertion " << assertion << std::endl;
+
+  //linearize multiplication if possible
+  if( builtTerm.getKind()==kind::MULT ){
+    for(size_t k = 0; k < ctor.getNumArgs(); ++k) {
+      Type at = SelectorType(ctor[k].getType()).getRangeType();
+      if( at.isDatatype() ){
+        DatatypeType atd = (DatatypeType)SelectorType(ctor[k].getType()).getRangeType();
+        Debug("parser-sygus") << "Argument " << k << " " << atd << std::endl;
+        std::vector<DatatypeType>::iterator itd = std::find( datatypeTypes.begin(), datatypeTypes.end(), atd );
+        if( itd!=datatypeTypes.end() ){
+          Debug("parser-sygus2") << "Exists in datatypeTypes." << std::endl;
+          unsigned index = itd-datatypeTypes.begin();
+          Debug("parser-sygus2") << "index = " << index << std::endl;
+          bool isConst = true;
+          for( unsigned cc = 0; cc < ops[index].size(); cc++ ){
+            Debug("parser-sygus2") << "ops[" << cc << "]=" << ops[index][cc] << std::endl;
+            if( ops[index][cc].getKind() != kind::CONST_RATIONAL ){
+              isConst = false;
+              break;
+            }
+          }
+          if( isConst ){
+            Debug("parser-sygus") << "Linearize multiplication " << ctor << " based on argument " << k << std::endl;
+            const Datatype & atdd = atd.getDatatype();
+            std::vector<Expr> assertions;
+            std::vector<Expr> nbvs;
+            for( unsigned a=0; a<bvl.getNumChildren(); a++ ){
+              if( a!=k ){
+                nbvs.push_back( bvl[a] );
+              }
+            }
+            Expr nbvl = getExprManager()->mkExpr( kind::BOUND_VAR_LIST, nbvs );
+            for( unsigned cc = 0; cc < ops[index].size(); cc++ ){
+              //Make new assertion based on partially instantiating existing
+              applyv[k+1] = getExprManager()->mkExpr(kind::APPLY_CONSTRUCTOR, atdd[cc].getConstructor());
+              Debug("parser-sygus") << "applyv " << applyv[k+1] << std::endl;
+              cpatv = getExprManager()->mkExpr(kind::APPLY_CONSTRUCTOR, applyv);
+              Debug("parser-sygus") << "cpatv " << cpatv << std::endl;
+              patv[1] = cpatv;
+              evalApply = getExprManager()->mkExpr(kind::APPLY_UF, patv);
+              Debug("parser-sygus") << "evalApply " << evalApply << std::endl;
+              builtApply[k] = ops[index][cc];
+              Debug("parser-sygus") << "builtApply " << builtApply[k] << std::endl;
+              builtTerm = getExprManager()->mkExpr(ops[i][j], builtApply);
+              Debug("parser-sygus") << "builtTerm " << builtTerm << std::endl;
+              Expr eassertion = getExprManager()->mkExpr(kind::EQUAL, evalApply, builtTerm);
+              Expr epattern = getExprManager()->mkExpr(kind::INST_PATTERN, evalApply);
+              epattern = getExprManager()->mkExpr(kind::INST_PATTERN_LIST, epattern);
+              eassertion = getExprManager()->mkExpr(kind::FORALL, nbvl, eassertion, epattern);
+              assertions.push_back( eassertion );
+            }
+            assertion = assertions.size()==1 ? assertions[0] : getExprManager()->mkExpr( kind::AND, assertions );
+            Debug("parser-sygus") << "...(linearized) assertion is: " << assertion << std::endl;
+          }
+        }
+      }
+    }
+  }
+  return assertion;
+}
+
+const void Smt2::getSygusPrimedVars( std::vector<Expr>& vars, bool isPrimed ) {
+  for( unsigned i=0; i<d_sygusVars.size(); i++ ){
+    Expr v = d_sygusVars[i];
+    std::map< Expr, bool >::iterator it = d_sygusVarPrimed.find( v );
+    if( it!=d_sygusVarPrimed.end() ){
+      if( it->second==isPrimed ){
+        vars.push_back( v );
+      }
+    }else{
+      //should never happen
+    }
+  }
+}
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
diff --git a/src/parser/smt2/smt2.h b/src/parser/smt2/smt2.h
new file mode 100644
index 0000000..fc930dc
--- /dev/null
+++ b/src/parser/smt2/smt2.h
@@ -0,0 +1,361 @@
+/*********************                                                        */
+/*! \file smt2.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Christopher L. Conway
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Definitions of SMT2 constants.
+ **
+ ** Definitions of SMT2 constants.
+ **/
+
+#include "cvc4parser_private.h"
+
+#ifndef __CVC4__PARSER__SMT2_H
+#define __CVC4__PARSER__SMT2_H
+
+#include <sstream>
+#include <stack>
+#include <string>
+#include <utility>
+
+#include "parser/parser.h"
+#include "parser/smt1/smt1.h"
+#include "theory/logic_info.h"
+#include "util/abstract_value.h"
+
+namespace CVC4 {
+
+class SExpr;
+
+namespace parser {
+
+class Smt2 : public Parser {
+  friend class ParserBuilder;
+
+public:
+  enum Theory {
+    THEORY_ARRAYS,
+    THEORY_BITVECTORS,
+    THEORY_CORE,
+    THEORY_DATATYPES,
+    THEORY_INTS,
+    THEORY_REALS,
+    THEORY_REALS_INTS,
+    THEORY_QUANTIFIERS,
+    THEORY_SETS,
+    THEORY_STRINGS,
+    THEORY_UF,
+    THEORY_FP,
+    THEORY_SEP
+  };
+
+private:
+  bool d_logicSet;
+  LogicInfo d_logic;
+  std::hash_map<std::string, Kind, StringHashFunction> operatorKindMap;
+  std::pair<Expr, std::string> d_lastNamedTerm;
+  // this is a user-context stack
+  std::stack< std::map<Expr, std::string> > d_unsatCoreNames;
+  std::vector<Expr> d_sygusVars, d_sygusConstraints, d_sygusFunSymbols;
+  std::vector< std::pair<std::string, Expr> > d_sygusFuns;
+  std::map< Expr, bool > d_sygusVarPrimed;
+  size_t d_nextSygusFun;
+
+protected:
+  Smt2(ExprManager* exprManager, Input* input, bool strictMode = false, bool parseOnly = false);
+
+public:
+  /**
+   * Add theory symbols to the parser state.
+   *
+   * @param theory the theory to open (e.g., Core, Ints)
+   */
+  void addTheory(Theory theory);
+
+  void addOperator(Kind k, const std::string& name);
+
+  Kind getOperatorKind(const std::string& name) const;
+
+  bool isOperatorEnabled(const std::string& name) const;
+
+  bool isTheoryEnabled(Theory theory) const;
+
+  bool logicIsSet();
+
+  void reset();
+
+  void resetAssertions();
+
+  /**
+   * Sets the logic for the current benchmark. Declares any logic and
+   * theory symbols.
+   *
+   * @param name the name of the logic (e.g., QF_UF, AUFLIA)
+   */
+  void setLogic(std::string name);
+
+  /**
+   * Get the logic.
+   */
+  const LogicInfo& getLogic() const { return d_logic; }
+
+  bool v2_0() const {
+    return getInput()->getLanguage() == language::input::LANG_SMTLIB_V2_0;
+  }
+  bool v2_5() const {
+    return getInput()->getLanguage() == language::input::LANG_SMTLIB_V2_5;
+  }
+  bool sygus() const {
+    return getInput()->getLanguage() == language::input::LANG_SYGUS;
+  }
+
+  void setLanguage(InputLanguage lang);
+
+  void setInfo(const std::string& flag, const SExpr& sexpr);
+
+  void setOption(const std::string& flag, const SExpr& sexpr);
+
+  void checkThatLogicIsSet();
+
+  void checkUserSymbol(const std::string& name) {
+    if(name.length() > 0 && (name[0] == '.' || name[0] == '@')) {
+      std::stringstream ss;
+      ss << "cannot declare or define symbol `" << name << "'; symbols starting with . and @ are reserved in SMT-LIB";
+      parseError(ss.str());
+    }
+  }
+
+  void includeFile(const std::string& filename);
+
+  void setLastNamedTerm(Expr e, std::string name) {
+    d_lastNamedTerm = std::make_pair(e, name);
+  }
+
+  void clearLastNamedTerm() {
+    d_lastNamedTerm = std::make_pair(Expr(), "");
+  }
+
+  std::pair<Expr, std::string> lastNamedTerm() {
+    return d_lastNamedTerm;
+  }
+
+  void pushUnsatCoreNameScope() {
+    d_unsatCoreNames.push(d_unsatCoreNames.top());
+  }
+
+  void popUnsatCoreNameScope() {
+    d_unsatCoreNames.pop();
+  }
+
+  void registerUnsatCoreName(std::pair<Expr, std::string> name) {
+    d_unsatCoreNames.top().insert(name);
+  }
+
+  std::map<Expr, std::string> getUnsatCoreNames() {
+    return d_unsatCoreNames.top();
+  }
+
+  bool isAbstractValue(const std::string& name) {
+    return name.length() >= 2 && name[0] == '@' && name[1] != '0' &&
+      name.find_first_not_of("0123456789", 1) == std::string::npos;
+  }
+
+  Expr mkAbstractValue(const std::string& name) {
+    assert(isAbstractValue(name));
+    return getExprManager()->mkConst(AbstractValue(Integer(name.substr(1))));
+  }
+
+  Expr mkSygusVar(const std::string& name, const Type& type, bool isPrimed = false);
+
+  void mkSygusDefaultGrammar( const Type& range, Expr& bvl, const std::string& fun, std::vector<CVC4::Datatype>& datatypes,
+                              std::vector<Type>& sorts, std::vector< std::vector<Expr> >& ops, std::vector<Expr> sygus_vars, int& startIndex );
+
+  void mkSygusConstantsForType( const Type& type, std::vector<CVC4::Expr>& ops );
+
+  void processSygusGTerm( CVC4::SygusGTerm& sgt, int index,
+                          std::vector< CVC4::Datatype >& datatypes,
+                          std::vector< CVC4::Type>& sorts,
+                          std::vector< std::vector<CVC4::Expr> >& ops,
+                          std::vector< std::vector<std::string> >& cnames,
+                          std::vector< std::vector< std::vector< CVC4::Type > > >& cargs,
+                          std::vector< bool >& allow_const,
+                          std::vector< std::vector< std::string > >& unresolved_gterm_sym,
+                          std::vector<CVC4::Expr>& sygus_vars,
+                          std::map< CVC4::Type, CVC4::Type >& sygus_to_builtin, std::map< CVC4::Type, CVC4::Expr >& sygus_to_builtin_expr,
+                          CVC4::Type& ret, bool isNested = false );
+
+  static bool pushSygusDatatypeDef( Type t, std::string& dname,
+                                    std::vector< CVC4::Datatype >& datatypes,
+                                    std::vector< CVC4::Type>& sorts,
+                                    std::vector< std::vector<CVC4::Expr> >& ops,
+                                    std::vector< std::vector<std::string> >& cnames,
+                                    std::vector< std::vector< std::vector< CVC4::Type > > >& cargs,
+                                    std::vector< bool >& allow_const,
+                                    std::vector< std::vector< std::string > >& unresolved_gterm_sym );
+
+  static bool popSygusDatatypeDef( std::vector< CVC4::Datatype >& datatypes,
+                                   std::vector< CVC4::Type>& sorts,
+                                   std::vector< std::vector<CVC4::Expr> >& ops,
+                                   std::vector< std::vector<std::string> >& cnames,
+                                   std::vector< std::vector< std::vector< CVC4::Type > > >& cargs,
+                                   std::vector< bool >& allow_const,
+                                   std::vector< std::vector< std::string > >& unresolved_gterm_sym );
+
+  void setSygusStartIndex( std::string& fun, int startIndex,
+                           std::vector< CVC4::Datatype >& datatypes,
+                           std::vector< CVC4::Type>& sorts,
+                           std::vector< std::vector<CVC4::Expr> >& ops );
+
+  void addSygusFun(const std::string& fun, Expr eval) {
+    d_sygusFuns.push_back(std::make_pair(fun, eval));
+  }
+
+  void defineSygusFuns();
+
+  void mkSygusDatatype( CVC4::Datatype& dt, std::vector<CVC4::Expr>& ops,
+                        std::vector<std::string>& cnames, std::vector< std::vector< CVC4::Type > >& cargs,
+                        std::vector<std::string>& unresolved_gterm_sym,
+                        std::map< CVC4::Type, CVC4::Type >& sygus_to_builtin );
+
+  // i is index in datatypes/ops
+  // j is index is datatype
+  Expr getSygusAssertion( std::vector<DatatypeType>& datatypeTypes, std::vector< std::vector<Expr> >& ops,
+                          std::map<DatatypeType, Expr>& evals, std::vector<Expr>& terms,
+                          Expr eval, const Datatype& dt, size_t i, size_t j );
+
+
+
+  void addSygusConstraint(Expr constraint) {
+    d_sygusConstraints.push_back(constraint);
+  }
+
+  Expr getSygusConstraints() {
+    switch(d_sygusConstraints.size()) {
+    case 0: return getExprManager()->mkConst(bool(true));
+    case 1: return d_sygusConstraints[0];
+    default: return getExprManager()->mkExpr(kind::AND, d_sygusConstraints);
+    }
+  }
+
+  const std::vector<Expr>& getSygusVars() {
+    return d_sygusVars;
+  }
+  const void getSygusPrimedVars( std::vector<Expr>& vars, bool isPrimed );
+
+  const std::vector<Expr>& getSygusFunSymbols() {
+    return d_sygusFunSymbols;
+  }
+
+  /**
+   * Smt2 parser provides its own checkDeclaration, which does the
+   * same as the base, but with some more helpful errors.
+   */
+  void checkDeclaration(const std::string& name, DeclarationCheck check,
+                        SymbolType type = SYM_VARIABLE,
+                        std::string notes = "") throw(ParserException) {
+    // if the symbol is something like "-1", we'll give the user a helpful
+    // syntax hint.  (-1 is a valid identifier in SMT-LIB, NOT unary minus.)
+    if( check != CHECK_DECLARED ||
+        name[0] != '-' ||
+        name.find_first_not_of("0123456789", 1) != std::string::npos ) {
+      this->Parser::checkDeclaration(name, check, type, notes);
+      return;
+    }else{
+      //it is allowable in sygus
+      if( sygus() && name[0]=='-' ){
+        //do not check anything
+        return;
+      }
+    }
+
+    std::stringstream ss;
+    ss << notes
+       << "You may have intended to apply unary minus: `(- "
+       << name.substr(1)
+       << ")'\n";
+    this->Parser::checkDeclaration(name, check, type, ss.str());
+  }
+
+  void checkOperator(Kind kind, unsigned numArgs) throw(ParserException) {
+    Parser::checkOperator(kind, numArgs);
+    // strict SMT-LIB mode enables extra checks for some bitvector operators
+    // that CVC4 permits as N-ary but the standard requires is binary
+    if(strictModeEnabled()) {
+      switch(kind) {
+      case kind::BITVECTOR_CONCAT:
+      case kind::BITVECTOR_AND:
+      case kind::BITVECTOR_OR:
+      case kind::BITVECTOR_XOR:
+      case kind::BITVECTOR_MULT:
+      case kind::BITVECTOR_PLUS:
+        if(numArgs != 2) {
+          parseError("Operator requires exact 2 arguments in strict SMT-LIB "
+                     "compliance mode: " + kindToString(kind));
+        }
+        break;
+      default:
+        break; /* no problem */
+      }
+    }
+  }
+
+  // Throw a ParserException with msg appended with the current logic.
+  inline void parseErrorLogic(const std::string& msg) throw(ParserException) {
+    const std::string withLogic = msg + getLogic().getLogicString();
+    parseError(withLogic);
+  }
+
+private:
+  std::map< CVC4::Expr, CVC4::Type > d_sygus_bound_var_type;
+  std::map< CVC4::Expr, std::vector< CVC4::Expr > > d_sygus_let_func_to_vars;
+  std::map< CVC4::Expr, CVC4::Expr > d_sygus_let_func_to_body;
+  std::map< CVC4::Expr, unsigned > d_sygus_let_func_to_num_input_vars;
+  //auxiliary define-fun functions introduced for production rules
+  std::vector< CVC4::Expr > d_sygus_defined_funs;
+
+  void collectSygusLetArgs( CVC4::Expr e, std::vector< CVC4::Type >& sygusArgs, std::vector< CVC4::Expr >& builtinArgs );
+
+  void addSygusDatatypeConstructor( CVC4::Datatype& dt, CVC4::Expr op, std::string& cname, std::vector< CVC4::Type >& cargs,
+                                    CVC4::Expr& let_body, std::vector< CVC4::Expr >& let_args, unsigned let_num_input_args );
+
+  Type processSygusNestedGTerm( int sub_dt_index, std::string& sub_dname, std::vector< CVC4::Datatype >& datatypes,
+                                std::vector< CVC4::Type>& sorts,
+                                std::vector< std::vector<CVC4::Expr> >& ops,
+                                std::vector< std::vector<std::string> >& cnames,
+                                std::vector< std::vector< std::vector< CVC4::Type > > >& cargs,
+                                std::vector< bool >& allow_const,
+                                std::vector< std::vector< std::string > >& unresolved_gterm_sym,
+                                std::map< CVC4::Type, CVC4::Type >& sygus_to_builtin,
+                                std::map< CVC4::Type, CVC4::Expr >& sygus_to_builtin_expr, Type sub_ret );
+
+  void processSygusLetConstructor( std::vector< CVC4::Expr >& let_vars, int index,
+                                   std::vector< CVC4::Datatype >& datatypes,
+                                   std::vector< CVC4::Type>& sorts,
+                                   std::vector< std::vector<CVC4::Expr> >& ops,
+                                   std::vector< std::vector<std::string> >& cnames,
+                                   std::vector< std::vector< std::vector< CVC4::Type > > >& cargs,
+                                   std::vector<CVC4::Expr>& sygus_vars,
+                                   std::map< CVC4::Type, CVC4::Type >& sygus_to_builtin,
+                                   std::map< CVC4::Type, CVC4::Expr >& sygus_to_builtin_expr );
+
+  void addArithmeticOperators();
+
+  void addBitvectorOperators();
+
+  void addStringOperators();
+
+  void addFloatingPointOperators();
+
+  void addSepOperators();
+};/* class Smt2 */
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PARSER__SMT2_H */
diff --git a/src/parser/smt2/smt2_input.cpp b/src/parser/smt2/smt2_input.cpp
new file mode 100644
index 0000000..7aa4c34
--- /dev/null
+++ b/src/parser/smt2/smt2_input.cpp
@@ -0,0 +1,83 @@
+/*********************                                                        */
+/*! \file smt2_input.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add file-specific comments here ]].
+ **
+ ** [[ Add file-specific comments here ]]
+ **/
+
+// These headers should be the first two included.
+// See the documentation in "parser/antlr_undefines.h" for more details.
+#include <antlr3.h>
+#include "parser/antlr_undefines.h"
+
+
+#include "parser/smt2/smt2_input.h"
+
+#include "expr/expr_manager.h"
+#include "parser/input.h"
+#include "parser/parser.h"
+#include "parser/parser_exception.h"
+#include "parser/smt2/smt2.h"
+#include "parser/smt2/Smt2Lexer.h"
+#include "parser/smt2/Smt2Parser.h"
+
+namespace CVC4 {
+namespace parser {
+
+/* Use lookahead=2 */
+Smt2Input::Smt2Input(AntlrInputStream& inputStream, InputLanguage lang) :
+  AntlrInput(inputStream, 2) {
+
+  pANTLR3_INPUT_STREAM input = inputStream.getAntlr3InputStream();
+  assert( input != NULL );
+
+  d_pSmt2Lexer = Smt2LexerNew(input);
+  if( d_pSmt2Lexer == NULL ) {
+    throw ParserException("Failed to create SMT2 lexer.");
+  }
+
+  setAntlr3Lexer( d_pSmt2Lexer->pLexer );
+
+  pANTLR3_COMMON_TOKEN_STREAM tokenStream = getTokenStream();
+  assert( tokenStream != NULL );
+
+  d_pSmt2Parser = Smt2ParserNew(tokenStream);
+  if( d_pSmt2Parser == NULL ) {
+    throw ParserException("Failed to create SMT2 parser.");
+  }
+
+  setAntlr3Parser(d_pSmt2Parser->pParser);
+
+  setLanguage(lang);
+}
+
+Smt2Input::~Smt2Input() {
+  d_pSmt2Lexer->free(d_pSmt2Lexer);
+  d_pSmt2Parser->free(d_pSmt2Parser);
+}
+
+void Smt2Input::setLanguage(InputLanguage lang) {
+  CheckArgument(lang == language::input::LANG_SMTLIB_V2_0 ||
+                lang == language::input::LANG_SMTLIB_V2_5, lang);
+  d_lang = lang;
+}
+
+Command* Smt2Input::parseCommand() {
+  return d_pSmt2Parser->parseCommand(d_pSmt2Parser);
+}
+
+Expr Smt2Input::parseExpr() {
+  return d_pSmt2Parser->parseExpr(d_pSmt2Parser);
+}
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
diff --git a/src/parser/smt2/smt2_input.h b/src/parser/smt2/smt2_input.h
new file mode 100644
index 0000000..0ed8839
--- /dev/null
+++ b/src/parser/smt2/smt2_input.h
@@ -0,0 +1,100 @@
+/*********************                                                        */
+/*! \file smt2_input.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add file-specific comments here ]].
+ **
+ ** [[ Add file-specific comments here ]]
+ **/
+
+#include "cvc4parser_private.h"
+
+#ifndef __CVC4__PARSER__SMT2_INPUT_H
+#define __CVC4__PARSER__SMT2_INPUT_H
+
+#include "parser/antlr_input.h"
+#include "parser/smt2/Smt2Lexer.h"
+#include "parser/smt2/Smt2Parser.h"
+
+// extern void Smt2ParserSetAntlrParser(CVC4::parser::AntlrParser* newAntlrParser);
+
+namespace CVC4 {
+
+class Command;
+class Expr;
+class ExprManager;
+
+namespace parser {
+
+class Smt2;
+
+class Smt2Input : public AntlrInput {
+  typedef AntlrInput super;
+
+  /** The ANTLR3 SMT2 lexer for the input. */
+  pSmt2Lexer d_pSmt2Lexer;
+
+  /** The ANTLR3 SMT2 parser for the input. */
+  pSmt2Parser d_pSmt2Parser;
+
+  /** Which (variant of the) input language we're using */
+  InputLanguage d_lang;
+
+  /**
+   * Initialize the class. Called from the constructors once the input
+   * stream is initialized.
+   */
+  void init();
+
+public:
+
+  /**
+   * Create an input.
+   *
+   * @param inputStream the input stream to use
+   */
+  Smt2Input(AntlrInputStream& inputStream,
+            InputLanguage lang = language::input::LANG_SMTLIB_V2_5);
+
+  /** Destructor. Frees the lexer and the parser. */
+  virtual ~Smt2Input();
+
+  /** Get the language that this Input is reading. */
+  InputLanguage getLanguage() const throw() {
+    return d_lang;
+  }
+
+  /** Set the language that this Input is reading. */
+  void setLanguage(InputLanguage);
+
+protected:
+
+  /**
+   * Parse a command from the input. Returns <code>NULL</code> if
+   * there is no command there to parse.
+   *
+   * @throws ParserException if an error is encountered during parsing.
+   */
+  Command* parseCommand();
+
+  /**
+   * Parse an expression from the input. Returns a null
+   * <code>Expr</code> if there is no expression there to parse.
+   *
+   * @throws ParserException if an error is encountered during parsing.
+   */
+  Expr parseExpr();
+
+};/* class Smt2Input */
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PARSER__SMT2_INPUT_H */
diff --git a/src/parser/smt2/stamp-generated b/src/parser/smt2/stamp-generated
new file mode 100644
index 0000000..e69de29
diff --git a/src/parser/smt2/sygus_input.cpp b/src/parser/smt2/sygus_input.cpp
new file mode 100644
index 0000000..5b20e0a
--- /dev/null
+++ b/src/parser/smt2/sygus_input.cpp
@@ -0,0 +1,75 @@
+/*********************                                                        */
+/*! \file sygus_input.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add file-specific comments here ]].
+ **
+ ** [[ Add file-specific comments here ]]
+ **/
+
+// These headers should be the first two included.
+// See the documentation in "parser/antlr_undefines.h" for more details.
+#include <antlr3.h>
+#include "parser/antlr_undefines.h"
+
+
+#include "parser/smt2/sygus_input.h"
+
+#include "expr/expr_manager.h"
+#include "parser/input.h"
+#include "parser/parser.h"
+#include "parser/parser_exception.h"
+#include "parser/smt2/sygus_input.h"
+#include "parser/smt2/Smt2Lexer.h"
+#include "parser/smt2/Smt2Parser.h"
+
+namespace CVC4 {
+namespace parser {
+
+/* Use lookahead=2 */
+SygusInput::SygusInput(AntlrInputStream& inputStream) :
+  AntlrInput(inputStream, 2) {
+
+  pANTLR3_INPUT_STREAM input = inputStream.getAntlr3InputStream();
+  assert( input != NULL );
+
+  d_pSmt2Lexer = Smt2LexerNew(input);
+  if( d_pSmt2Lexer == NULL ) {
+    throw ParserException("Failed to create SMT2 lexer.");
+  }
+
+  setAntlr3Lexer( d_pSmt2Lexer->pLexer );
+
+  pANTLR3_COMMON_TOKEN_STREAM tokenStream = getTokenStream();
+  assert( tokenStream != NULL );
+
+  d_pSmt2Parser = Smt2ParserNew(tokenStream);
+  if( d_pSmt2Parser == NULL ) {
+    throw ParserException("Failed to create SMT2 parser.");
+  }
+
+  setAntlr3Parser(d_pSmt2Parser->pParser);
+}
+
+SygusInput::~SygusInput() {
+  d_pSmt2Lexer->free(d_pSmt2Lexer);
+  d_pSmt2Parser->free(d_pSmt2Parser);
+}
+
+Command* SygusInput::parseCommand() {
+  return d_pSmt2Parser->parseSygus(d_pSmt2Parser);
+}
+
+Expr SygusInput::parseExpr() {
+  return d_pSmt2Parser->parseExpr(d_pSmt2Parser);
+}
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
diff --git a/src/parser/smt2/sygus_input.h b/src/parser/smt2/sygus_input.h
new file mode 100644
index 0000000..50bc973
--- /dev/null
+++ b/src/parser/smt2/sygus_input.h
@@ -0,0 +1,96 @@
+/*********************                                                        */
+/*! \file sygus_input.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add file-specific comments here ]].
+ **
+ ** [[ Add file-specific comments here ]]
+ **/
+
+#include "cvc4parser_private.h"
+
+#ifndef __CVC4__PARSER__SYGUS_INPUT_H
+#define __CVC4__PARSER__SYGUS_INPUT_H
+
+#include "parser/antlr_input.h"
+#include "parser/smt2/Smt2Lexer.h"
+#include "parser/smt2/Smt2Parser.h"
+
+// extern void Smt2ParserSetAntlrParser(CVC4::parser::AntlrParser* newAntlrParser);
+
+namespace CVC4 {
+
+class Command;
+class Expr;
+class ExprManager;
+
+namespace parser {
+
+class Smt2;
+
+class SygusInput : public AntlrInput {
+  typedef AntlrInput super;
+
+  /** The ANTLR3 SMT2 lexer for the input. */
+  pSmt2Lexer d_pSmt2Lexer;
+
+  /** The ANTLR3 SMT2 parser for the input. */
+  pSmt2Parser d_pSmt2Parser;
+
+  /** Which (variant of the) input language we're using */
+  InputLanguage d_lang;
+
+  /**
+   * Initialize the class. Called from the constructors once the input
+   * stream is initialized.
+   */
+  void init();
+
+public:
+
+  /**
+   * Create an input.
+   *
+   * @param inputStream the input stream to use
+   */
+  SygusInput(AntlrInputStream& inputStream);
+
+  /** Destructor. Frees the lexer and the parser. */
+  virtual ~SygusInput();
+
+  /** Get the language that this Input is reading. */
+  InputLanguage getLanguage() const throw() {
+    return language::input::LANG_SYGUS;
+  }
+
+protected:
+
+  /**
+   * Parse a command from the input. Returns <code>NULL</code> if
+   * there is no command there to parse.
+   *
+   * @throws ParserException if an error is encountered during parsing.
+   */
+  Command* parseCommand();
+
+  /**
+   * Parse an expression from the input. Returns a null
+   * <code>Expr</code> if there is no expression there to parse.
+   *
+   * @throws ParserException if an error is encountered during parsing.
+   */
+  Expr parseExpr();
+
+};/* class SygusInput */
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PARSER__SYGUS_INPUT_H */
diff --git a/src/parser/tptp/Makefile.am b/src/parser/tptp/Makefile.am
new file mode 100644
index 0000000..eab0110
--- /dev/null
+++ b/src/parser/tptp/Makefile.am
@@ -0,0 +1,68 @@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4PARSERLIB \
+	-I at builddir@/../.. -I at srcdir@/../../include -I at srcdir@/../.. $(ANTLR_INCLUDES)
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN) $(WNO_PARENTHESES) $(WNO_TAUTOLOGICAL_COMPARE) -Wno-unused-function -Wno-unused-variable
+
+# Compile generated C files using C++ compiler
+AM_CFLAGS = $(AM_CXXFLAGS)
+CC=$(CXX)
+
+ANTLR_OPTS =
+
+# hide this included makefile from automake
+ at mk_include@ @srcdir@/../Makefile.antlr_tracing
+
+noinst_LTLIBRARIES = libparsertptp.la
+
+ANTLR_TOKEN_STUFF = \
+	@builddir@/Tptp.tokens
+ANTLR_LEXER_STUFF = \
+	@builddir@/TptpLexer.h \
+	@builddir@/TptpLexer.c \
+	$(ANTLR_TOKEN_STUFF)
+ANTLR_PARSER_STUFF = \
+	@builddir@/TptpParser.h \
+	@builddir@/TptpParser.c
+ANTLR_STUFF = \
+	$(ANTLR_LEXER_STUFF) \
+	$(ANTLR_PARSER_STUFF)
+
+libparsertptp_la_SOURCES = \
+	Tptp.g \
+	tptp.h \
+	tptp.cpp \
+	tptp_input.h \
+	tptp_input.cpp \
+	$(ANTLR_STUFF)
+
+BUILT_SOURCES = \
+	@builddir@/Tptp.tokens \
+	@builddir@/TptpLexer.h \
+	@builddir@/TptpLexer.c \
+	@builddir@/TptpParser.h \
+	@builddir@/TptpParser.c \
+	stamp-generated
+
+EXTRA_DIST = \
+	stamp-generated
+
+DISTCLEANFILES = $(ANTLR_STUFF)
+distclean-local:
+	-$(AM_V_at)rmdir generated
+	-$(AM_V_at)rm -f stamp-generated
+
+stamp-generated:
+	$(AM_V_at)mkdir -p generated
+	$(AM_V_at)touch stamp-generated
+
+# antlr doesn't overwrite output files, it just leaves them.  So we have to delete them first.
+ at builddir@/TptpLexer.h: Tptp.g stamp-generated
+	-$(AM_V_at)rm -f $(ANTLR_STUFF)
+	@if test -z "$(ANTLR)"; then echo "ERROR: antlr parser generator cannot be found, cannot generate the parser" >&2; exit 1; fi
+	$(AM_V_GEN)$(ANTLR) $(ANTLR_OPTS) -fo "@builddir@" "@srcdir@/Tptp.g"
+
+# These don't actually depend on TptpLexer.h, but if we're doing parallel
+# make and the lexer needs to be rebuilt, we have to keep the rules
+# from running in parallel (since the token files will be deleted &
+# recreated)
+ at builddir@/TptpLexer.c @builddir@/TptpParser.h @builddir@/TptpParser.c $(ANTLR_TOKEN_STUFF): @builddir@/TptpLexer.h
diff --git a/src/parser/tptp/Makefile.in b/src/parser/tptp/Makefile.in
new file mode 100644
index 0000000..e78e4e5
--- /dev/null
+++ b/src/parser/tptp/Makefile.in
@@ -0,0 +1,870 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = src/parser/tptp
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libparsertptp_la_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_1 =
+am__objects_2 = @builddir@/TptpLexer.lo $(am__objects_1)
+am__objects_3 = @builddir@/TptpParser.lo
+am__objects_4 = $(am__objects_2) $(am__objects_3)
+am_libparsertptp_la_OBJECTS = tptp.lo tptp_input.lo $(am__objects_4)
+libparsertptp_la_OBJECTS = $(am_libparsertptp_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+SOURCES = $(libparsertptp_la_SOURCES)
+DIST_SOURCES = $(libparsertptp_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = $(CXX)
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4PARSERLIB \
+	-I at builddir@/../.. -I at srcdir@/../../include -I at srcdir@/../.. $(ANTLR_INCLUDES)
+
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN) $(WNO_PARENTHESES) $(WNO_TAUTOLOGICAL_COMPARE) -Wno-unused-function -Wno-unused-variable
+
+# Compile generated C files using C++ compiler
+AM_CFLAGS = $(AM_CXXFLAGS)
+ANTLR_OPTS = 
+noinst_LTLIBRARIES = libparsertptp.la
+ANTLR_TOKEN_STUFF = \
+	@builddir@/Tptp.tokens
+
+ANTLR_LEXER_STUFF = \
+	@builddir@/TptpLexer.h \
+	@builddir@/TptpLexer.c \
+	$(ANTLR_TOKEN_STUFF)
+
+ANTLR_PARSER_STUFF = \
+	@builddir@/TptpParser.h \
+	@builddir@/TptpParser.c
+
+ANTLR_STUFF = \
+	$(ANTLR_LEXER_STUFF) \
+	$(ANTLR_PARSER_STUFF)
+
+libparsertptp_la_SOURCES = \
+	Tptp.g \
+	tptp.h \
+	tptp.cpp \
+	tptp_input.h \
+	tptp_input.cpp \
+	$(ANTLR_STUFF)
+
+BUILT_SOURCES = \
+	@builddir@/Tptp.tokens \
+	@builddir@/TptpLexer.h \
+	@builddir@/TptpLexer.c \
+	@builddir@/TptpParser.h \
+	@builddir@/TptpParser.c \
+	stamp-generated
+
+EXTRA_DIST = \
+	stamp-generated
+
+DISTCLEANFILES = $(ANTLR_STUFF)
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/parser/tptp/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/parser/tptp/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+ at builddir@/$(am__dirstamp):
+	@$(MKDIR_P) @builddir@
+	@: > @builddir@/$(am__dirstamp)
+ at builddir@/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) @builddir@/$(DEPDIR)
+	@: > @builddir@/$(DEPDIR)/$(am__dirstamp)
+ at builddir@/TptpLexer.lo: @builddir@/$(am__dirstamp) \
+	@builddir@/$(DEPDIR)/$(am__dirstamp)
+ at builddir@/TptpParser.lo: @builddir@/$(am__dirstamp) \
+	@builddir@/$(DEPDIR)/$(am__dirstamp)
+
+libparsertptp.la: $(libparsertptp_la_OBJECTS) $(libparsertptp_la_DEPENDENCIES) $(EXTRA_libparsertptp_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK)  $(libparsertptp_la_OBJECTS) $(libparsertptp_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+	-rm -f @builddir@/*.$(OBJEXT)
+	-rm -f @builddir@/*.lo
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tptp.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tptp_input.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote@@builddir@/$(DEPDIR)/TptpLexer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote@@builddir@/$(DEPDIR)/TptpParser.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+	-rm -rf @builddir@/.libs @builddir@/_libs
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f @builddir@/$(DEPDIR)/$(am__dirstamp)
+	-rm -f @builddir@/$(am__dirstamp)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR) @builddir@/$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-local distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR) @builddir@/$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-local distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# hide this included makefile from automake
+ at mk_include@ @srcdir@/../Makefile.antlr_tracing
+distclean-local:
+	-$(AM_V_at)rmdir generated
+	-$(AM_V_at)rm -f stamp-generated
+
+stamp-generated:
+	$(AM_V_at)mkdir -p generated
+	$(AM_V_at)touch stamp-generated
+
+# antlr doesn't overwrite output files, it just leaves them.  So we have to delete them first.
+ at builddir@/TptpLexer.h: Tptp.g stamp-generated
+	-$(AM_V_at)rm -f $(ANTLR_STUFF)
+	@if test -z "$(ANTLR)"; then echo "ERROR: antlr parser generator cannot be found, cannot generate the parser" >&2; exit 1; fi
+	$(AM_V_GEN)$(ANTLR) $(ANTLR_OPTS) -fo "@builddir@" "@srcdir@/Tptp.g"
+
+# These don't actually depend on TptpLexer.h, but if we're doing parallel
+# make and the lexer needs to be rebuilt, we have to keep the rules
+# from running in parallel (since the token files will be deleted &
+# recreated)
+ at builddir@/TptpLexer.c @builddir@/TptpParser.h @builddir@/TptpParser.c $(ANTLR_TOKEN_STUFF): @builddir@/TptpLexer.h
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/parser/tptp/Tptp.g b/src/parser/tptp/Tptp.g
new file mode 100644
index 0000000..4e73fa6
--- /dev/null
+++ b/src/parser/tptp/Tptp.g
@@ -0,0 +1,1037 @@
+/* *******************                                                        */
+/*! \file Tptp.g
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Francois Bobot, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Parser for TPTP input language.
+ **
+ ** Parser for TPTP input language.
+ ** cf. http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Documents&File=SyntaxBNF
+ **/
+
+grammar Tptp;
+
+options {
+  // C output for antlr
+  language = 'C';
+
+  // Skip the default error handling, just break with exceptions
+  // defaultErrorHandler = false;
+
+  // Only lookahead of <= k requested (disable for LL* parsing)
+  // Note that CVC4's BoundedTokenBuffer requires a fixed k !
+  // If you change this k, change it also in tptp_input.cpp !
+  k = 2;
+}/* options */
+
+ at header {
+/**
+ ** This file is part of CVC4.
+ ** Copyright (c) 2009-2014  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.
+ **/
+}/* @header */
+
+ at lexer::includes {
+
+// This should come immediately after #include <antlr3.h> in the generated
+// files. See the documentation in "parser/antlr_undefines.h" for more details.
+#include "parser/antlr_undefines.h"
+
+/** This suppresses warnings about the redefinition of token symbols between
+  * different parsers. The redefinitions should be harmless as long as no
+  * client: (a) #include's the lexer headers for two grammars AND (b) uses the
+  * token symbol definitions.
+  */
+#pragma GCC system_header
+
+/* This improves performance by ~10 percent on big inputs.
+ * This option is only valid if we know the input is ASCII (or some 8-bit encoding).
+ * If we know the input is UTF-16, we can use ANTLR3_INLINE_INPUT_UTF16.
+ * Otherwise, we have to let the lexer detect the encoding at runtime.
+ */
+#define ANTLR3_INLINE_INPUT_ASCII
+
+#include "parser/antlr_tracing.h"
+
+}/* @lexer::includes */
+
+ at lexer::postinclude {
+#include <stdint.h>
+
+#include "parser/tptp/tptp.h"
+#include "parser/antlr_input.h"
+
+using namespace CVC4;
+using namespace CVC4::parser;
+
+/* These need to be macros so they can refer to the PARSER macro, which will be defined
+ * by ANTLR *after* this section. (If they were functions, PARSER would be undefined.) */
+#undef PARSER_STATE
+#define PARSER_STATE ((Tptp*)LEXER->super)
+#undef EXPR_MANAGER
+#define EXPR_MANAGER PARSER_STATE->getExprManager()
+#undef MK_EXPR
+#define MK_EXPR EXPR_MANAGER->mkExpr
+#undef MK_CONST
+#define MK_CONST EXPR_MANAGER->mkConst
+#define UNSUPPORTED PARSER_STATE->unimplementedFeature
+
+}/* @lexer::postinclude */
+
+ at parser::includes {
+
+// This should come immediately after #include <antlr3.h> in the generated
+// files. See the documentation in "parser/antlr_undefines.h" for more details.
+#include "parser/antlr_undefines.h"
+
+#include "smt/command.h"
+#include "parser/parser.h"
+#include "parser/tptp/tptp.h"
+#include "parser/antlr_tracing.h"
+
+}/* @parser::includes */
+
+ at parser::postinclude {
+
+#include <algorithm>
+#include <iterator>
+#include <vector>
+
+#include "base/output.h"
+#include "expr/expr.h"
+#include "expr/kind.h"
+#include "expr/type.h"
+#include "parser/antlr_input.h"
+#include "parser/parser.h"
+#include "parser/tptp/tptp.h"
+#include "util/integer.h"
+#include "util/rational.h"
+
+using namespace CVC4;
+using namespace CVC4::parser;
+
+/* These need to be macros so they can refer to the PARSER macro, which will be defined
+ * by ANTLR *after* this section. (If they were functions, PARSER would be undefined.) */
+#undef PARSER_STATE
+#define PARSER_STATE ((Tptp*)PARSER->super)
+#undef EXPR_MANAGER
+#define EXPR_MANAGER PARSER_STATE->getExprManager()
+#undef MK_EXPR
+#define MK_EXPR EXPR_MANAGER->mkExpr
+#undef MK_EXPR_ASSOCIATIVE
+#define MK_EXPR_ASSOCIATIVE EXPR_MANAGER->mkAssociative
+#undef MK_CONST
+#define MK_CONST EXPR_MANAGER->mkConst
+#define UNSUPPORTED PARSER_STATE->unimplementedFeature
+
+}/* parser::postinclude */
+
+/**
+ * Parses an expression.
+ * @return the parsed expression, or the Null Expr if we've reached the end of the input
+ */
+parseExpr returns [CVC4::parser::tptp::myExpr expr]
+  : cnfFormula[expr]
+  | EOF
+  ;
+
+/**
+ * Parses a command
+ * @return the parsed command, or NULL if we've reached the end of the input
+ */
+parseCommand returns [CVC4::Command* cmd = NULL]
+ at declarations {
+  Expr expr;
+  Tptp::FormulaRole fr;
+  std::string name, inclSymbol;
+}
+//  : LPAREN_TOK c = command RPAREN_TOK { $cmd = c; }
+  : CNF_TOK LPAREN_TOK nameN[name] COMMA_TOK formulaRole[fr] COMMA_TOK
+  { PARSER_STATE->cnf = true; PARSER_STATE->fof = false; PARSER_STATE->pushScope(); }
+    cnfFormula[expr]
+  { PARSER_STATE->popScope();
+    std::vector<Expr> bvl = PARSER_STATE->getFreeVar();
+    if(!bvl.empty()) {
+      expr = MK_EXPR(kind::FORALL,MK_EXPR(kind::BOUND_VAR_LIST,bvl),expr);
+    };
+  }
+    (COMMA_TOK anything*)? RPAREN_TOK DOT_TOK
+    {
+      cmd = PARSER_STATE->makeCommand(fr, expr, /* cnf == */ true);
+    }
+  | FOF_TOK LPAREN_TOK nameN[name] COMMA_TOK formulaRole[fr] COMMA_TOK
+    { PARSER_STATE->cnf = false; PARSER_STATE->fof = true; }
+    fofFormula[expr] (COMMA_TOK anything*)? RPAREN_TOK DOT_TOK
+    {
+      cmd = PARSER_STATE->makeCommand(fr, expr, /* cnf == */ false);
+    }
+  | TFF_TOK LPAREN_TOK nameN[name] COMMA_TOK
+    ( TYPE_TOK COMMA_TOK tffTypedAtom[cmd]
+    | formulaRole[fr] COMMA_TOK
+      { PARSER_STATE->cnf = false; PARSER_STATE->fof = false; }
+      tffFormula[expr] (COMMA_TOK anything*)?
+      {
+        cmd = PARSER_STATE->makeCommand(fr, expr, /* cnf == */ false);
+      }
+    ) RPAREN_TOK DOT_TOK
+  | INCLUDE_TOK LPAREN_TOK unquotedFileName[name]
+    ( COMMA_TOK LBRACK_TOK nameN[inclSymbol]
+      ( COMMA_TOK nameN[inclSymbol] )* RBRACK_TOK )?
+    RPAREN_TOK DOT_TOK
+    { /* TODO - implement symbol filtering for file inclusion.
+       * the following removes duplicates and "all", just need to pass it
+       * through to includeFile() and implement it there.
+      std::sort(inclArgs.begin(), inclArgs.end());
+      std::vector<std::string>::iterator it =
+        std::unique(inclArgs.begin(), inclArgs.end());
+      inclArgs.resize(std::distance(inclArgs.begin(), it));
+      it = std::lower_bound(inclArgs.begin(), inclArgs.end(), std::string("all"));
+      if(it != inclArgs.end() && *it == "all") {
+        inclArgs.erase(it);
+      }
+      */
+      PARSER_STATE->includeFile(name /* , inclArgs */ );
+      // The command of the included file will be produced at the next parseCommand() call
+      cmd = new EmptyCommand("include::" + name);
+    }
+  | EOF
+    {
+      std::string filename = PARSER_STATE->getInput()->getInputStreamName();
+      size_t i = filename.find_last_of('/');
+      if(i != std::string::npos) {
+        filename = filename.substr(i + 1);
+      }
+      if(filename.substr(filename.length() - 2) == ".p") {
+        filename = filename.substr(0, filename.length() - 2);
+      }
+      CommandSequence* seq = new CommandSequence();
+      seq->addCommand(new SetInfoCommand("name", SExpr(filename)));
+      if(PARSER_STATE->hasConjecture()) {
+        seq->addCommand(new QueryCommand(MK_CONST(bool(false))));
+      } else {
+        seq->addCommand(new CheckSatCommand());
+      }
+      PARSER_STATE->preemptCommand(seq);
+      cmd = NULL;
+    }
+  ;
+
+/* Parse a formula Role */
+formulaRole[CVC4::parser::Tptp::FormulaRole& role]
+  : LOWER_WORD
+    {
+      std::string r = AntlrInput::tokenText($LOWER_WORD);
+      if      (r == "axiom")              role = Tptp::FR_AXIOM;
+      else if (r == "hypothesis")         role = Tptp::FR_HYPOTHESIS;
+      else if (r == "definition")         role = Tptp::FR_DEFINITION;
+      else if (r == "assumption")         role = Tptp::FR_ASSUMPTION;
+      else if (r == "lemma")              role = Tptp::FR_LEMMA;
+      else if (r == "theorem")            role = Tptp::FR_THEOREM;
+      else if (r == "negated_conjecture") role = Tptp::FR_NEGATED_CONJECTURE;
+      else if (r == "conjecture")         role = Tptp::FR_CONJECTURE;
+      else if (r == "unknown")            role = Tptp::FR_UNKNOWN;
+      else if (r == "plain")              role = Tptp::FR_PLAIN;
+      else if (r == "fi_domain")          role = Tptp::FR_FI_DOMAIN;
+      else if (r == "fi_functor")         role = Tptp::FR_FI_FUNCTORS;
+      else if (r == "fi_predicate")       role = Tptp::FR_FI_PREDICATES;
+      else if (r == "type")               role = Tptp::FR_TYPE;
+      else PARSER_STATE->parseError("Invalid formula role: " + r);
+    }
+  ;
+
+/*******/
+/* CNF */
+
+/* It can parse a little more than the cnf grammar: false and true can appear.
+ * Normally only false can appear and only at top level. */
+
+cnfFormula[CVC4::Expr& expr]
+  : LPAREN_TOK cnfDisjunction[expr] RPAREN_TOK
+  | cnfDisjunction[expr]
+//| FALSE_TOK { expr = MK_CONST(bool(false)); }
+;
+
+cnfDisjunction[CVC4::Expr& expr]
+ at declarations {
+  std::vector<Expr> args;
+}
+  : cnfLiteral[expr] { args.push_back(expr); }
+    ( OR_TOK cnfLiteral[expr] { args.push_back(expr); } )*
+    { if(args.size() > 1) {
+        expr = MK_EXPR_ASSOCIATIVE(kind::OR, args);
+      } // else its already in the expr
+    }
+;
+
+cnfLiteral[CVC4::Expr& expr]
+  : atomicFormula[expr]
+  | NOT_TOK atomicFormula[expr] { expr = MK_EXPR(kind::NOT, expr); }
+//| folInfixUnary[expr]
+  ;
+
+atomicFormula[CVC4::Expr& expr]
+ at declarations {
+  Expr expr2;
+  std::string name;
+  std::vector<CVC4::Expr> args;
+  bool equal;
+}
+  : atomicWord[name] (LPAREN_TOK arguments[args] RPAREN_TOK)?
+    ( equalOp[equal] term[expr2]
+      { // equality/disequality between terms
+        PARSER_STATE->makeApplication(expr, name, args, true);
+        expr = MK_EXPR(kind::EQUAL, expr, expr2);
+        if(!equal) expr = MK_EXPR(kind::NOT, expr);
+      }
+    | { // predicate
+        PARSER_STATE->makeApplication(expr, name, args, false);
+      }
+    )
+  | definedFun[expr] LPAREN_TOK arguments[args] RPAREN_TOK
+    equalOp[equal] term[expr2]
+    { expr = EXPR_MANAGER->mkExpr(expr, args);
+      expr = MK_EXPR(kind::EQUAL, expr, expr2);
+      if(!equal) expr = MK_EXPR(kind::NOT, expr);
+    }
+  | (simpleTerm[expr] | letTerm[expr] | conditionalTerm[expr])
+    equalOp[equal] term[expr2]
+    { // equality/disequality between terms
+      expr = MK_EXPR(kind::EQUAL, expr, expr2);
+      if(!equal) expr = MK_EXPR(kind::NOT, expr);
+    }
+  | definedPred[expr] LPAREN_TOK arguments[args] RPAREN_TOK
+    { expr = EXPR_MANAGER->mkExpr(expr, args); }
+  | definedProp[expr]
+  ;
+//%----Using <plain_term> removes a reduce/reduce ambiguity in lex/yacc.
+//%----Note: "defined" means a word starting with one $ and "system" means $$.
+
+definedProp[CVC4::Expr& expr]
+  : TRUE_TOK { expr = MK_CONST(bool(true)); }
+  | FALSE_TOK  { expr = MK_CONST(bool(false)); }
+  ;
+
+definedPred[CVC4::Expr& expr]
+  : '$less' { expr = EXPR_MANAGER->operatorOf(CVC4::kind::LT); }
+  | '$lesseq' { expr = EXPR_MANAGER->operatorOf(CVC4::kind::LEQ); }
+  | '$greater' { expr = EXPR_MANAGER->operatorOf(CVC4::kind::GT); }
+  | '$greatereq' { expr = EXPR_MANAGER->operatorOf(CVC4::kind::GEQ); }
+  | '$is_rat' // all "real" are actually "rat" in CVC4
+    { Expr n = EXPR_MANAGER->mkBoundVar("N", EXPR_MANAGER->realType());
+      n = MK_EXPR(CVC4::kind::BOUND_VAR_LIST, n);
+      expr = MK_EXPR(CVC4::kind::LAMBDA, n, MK_CONST(bool(true)));
+    }
+  | '$is_int' { expr = EXPR_MANAGER->operatorOf(CVC4::kind::IS_INTEGER); }
+  | '$distinct' { expr = EXPR_MANAGER->operatorOf(CVC4::kind::DISTINCT); }
+  ;
+
+definedFun[CVC4::Expr& expr]
+ at declarations {
+  bool remainder = false;
+}
+  : '$uminus' { expr = EXPR_MANAGER->operatorOf(CVC4::kind::UMINUS); }
+  | '$sum' { expr = EXPR_MANAGER->operatorOf(CVC4::kind::PLUS); }
+  | '$difference' { expr = EXPR_MANAGER->operatorOf(CVC4::kind::MINUS); }
+  | '$product' { expr = EXPR_MANAGER->operatorOf(CVC4::kind::MULT); }
+  | '$quotient' { expr = EXPR_MANAGER->operatorOf(CVC4::kind::DIVISION_TOTAL); }
+  | ( '$quotient_e' { remainder = false; }
+    | '$remainder_e' { remainder = true; }
+    )
+    { Expr n = EXPR_MANAGER->mkBoundVar("N", EXPR_MANAGER->realType());
+      Expr d = EXPR_MANAGER->mkBoundVar("D", EXPR_MANAGER->realType());
+      Expr formals = MK_EXPR(CVC4::kind::BOUND_VAR_LIST, n, d);
+      expr = MK_EXPR(CVC4::kind::DIVISION_TOTAL, n, d);
+      expr = MK_EXPR(CVC4::kind::ITE, MK_EXPR(CVC4::kind::GEQ, d, MK_CONST(Rational(0))),
+                                      MK_EXPR(CVC4::kind::TO_INTEGER, expr),
+                                      MK_EXPR(CVC4::kind::UMINUS, MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::UMINUS, expr))));
+      if(remainder) {
+        expr = MK_EXPR(CVC4::kind::MINUS, n, MK_EXPR(CVC4::kind::MULT, expr, d));
+      }
+      expr = MK_EXPR(CVC4::kind::LAMBDA, formals, expr);
+    }
+  | ( '$quotient_t' { remainder = false; }
+    | '$remainder_t' { remainder = true; }
+    )
+    { Expr n = EXPR_MANAGER->mkBoundVar("N", EXPR_MANAGER->realType());
+      Expr d = EXPR_MANAGER->mkBoundVar("D", EXPR_MANAGER->realType());
+      Expr formals = MK_EXPR(CVC4::kind::BOUND_VAR_LIST, n, d);
+      expr = MK_EXPR(CVC4::kind::DIVISION_TOTAL, n, d);
+      expr = MK_EXPR(CVC4::kind::ITE, MK_EXPR(CVC4::kind::GEQ, expr, MK_CONST(Rational(0))),
+                                      MK_EXPR(CVC4::kind::TO_INTEGER, expr),
+                                      MK_EXPR(CVC4::kind::UMINUS, MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::UMINUS, expr))));
+      if(remainder) {
+        expr = MK_EXPR(CVC4::kind::MINUS, n, MK_EXPR(CVC4::kind::MULT, expr, d));
+      }
+      expr = MK_EXPR(CVC4::kind::LAMBDA, formals, expr);
+    }
+  | ( '$quotient_f' { remainder = false; }
+    | '$remainder_f' { remainder = true; }
+    )
+    { Expr n = EXPR_MANAGER->mkBoundVar("N", EXPR_MANAGER->realType());
+      Expr d = EXPR_MANAGER->mkBoundVar("D", EXPR_MANAGER->realType());
+      Expr formals = MK_EXPR(CVC4::kind::BOUND_VAR_LIST, n, d);
+      expr = MK_EXPR(CVC4::kind::DIVISION_TOTAL, n, d);
+      expr = MK_EXPR(CVC4::kind::TO_INTEGER, expr);
+      if(remainder) {
+        expr = MK_EXPR(CVC4::kind::MINUS, n, MK_EXPR(CVC4::kind::MULT, expr, d));
+      }
+      expr = MK_EXPR(CVC4::kind::LAMBDA, formals, expr);
+    }
+  | '$floor' { expr = EXPR_MANAGER->operatorOf(CVC4::kind::TO_INTEGER); }
+  | '$ceiling'
+    { Expr n = EXPR_MANAGER->mkBoundVar("N", EXPR_MANAGER->realType());
+      Expr formals = MK_EXPR(CVC4::kind::BOUND_VAR_LIST, n);
+      expr = MK_EXPR(CVC4::kind::UMINUS, MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::UMINUS, n)));
+      expr = MK_EXPR(CVC4::kind::LAMBDA, formals, expr);
+    }
+  | '$truncate'
+    { Expr n = EXPR_MANAGER->mkBoundVar("N", EXPR_MANAGER->realType());
+      Expr formals = MK_EXPR(CVC4::kind::BOUND_VAR_LIST, n);
+      expr = MK_EXPR(CVC4::kind::ITE, MK_EXPR(CVC4::kind::GEQ, n, MK_CONST(Rational(0))),
+                                      MK_EXPR(CVC4::kind::TO_INTEGER, n),
+                                      MK_EXPR(CVC4::kind::UMINUS, MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::UMINUS, n))));
+      expr = MK_EXPR(CVC4::kind::LAMBDA, formals, expr);
+    }
+  | '$round'
+    { Expr n = EXPR_MANAGER->mkBoundVar("N", EXPR_MANAGER->realType());
+      Expr formals = MK_EXPR(CVC4::kind::BOUND_VAR_LIST, n);
+      Expr decPart = MK_EXPR(CVC4::kind::MINUS, n, MK_EXPR(CVC4::kind::TO_INTEGER, n));
+      expr = MK_EXPR(CVC4::kind::ITE, MK_EXPR(CVC4::kind::LT, decPart, MK_CONST(Rational(1, 2))),
+                                      // if decPart < 0.5, round down
+                                      MK_EXPR(CVC4::kind::TO_INTEGER, n),
+             MK_EXPR(CVC4::kind::ITE, MK_EXPR(CVC4::kind::GT, decPart, MK_CONST(Rational(1, 2))),
+                                      // if decPart > 0.5, round up
+                                      MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::PLUS, n, MK_CONST(Rational(1)))),
+                                      // if decPart == 0.5, round to nearest even integer:
+                                      // result is: to_int(n/2 + .5) * 2
+                                      MK_EXPR(CVC4::kind::MULT, MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::PLUS, MK_EXPR(CVC4::kind::DIVISION_TOTAL, n, MK_CONST(Rational(2))), MK_CONST(Rational(1, 2)))), MK_CONST(Rational(2)))));
+      expr = MK_EXPR(CVC4::kind::LAMBDA, formals, expr);
+    }
+  | '$to_int' { expr = EXPR_MANAGER->operatorOf(CVC4::kind::TO_INTEGER); }
+  | '$to_rat' { expr = EXPR_MANAGER->operatorOf(CVC4::kind::TO_REAL); }
+  | '$to_real' { expr = EXPR_MANAGER->operatorOf(CVC4::kind::TO_REAL); }
+  ;
+
+//%----Pure CNF should not use $true or $false in problems, and use $false only
+//%----at the roots of a refutation.
+
+equalOp[bool& equal]
+  : EQUAL_TOK    { equal = true; }
+  | DISEQUAL_TOK { equal = false; }
+  ;
+
+term[CVC4::Expr& expr]
+  : functionTerm[expr]
+  | conditionalTerm[expr]
+  | simpleTerm[expr]
+  | letTerm[expr]
+  ;
+
+letTerm[CVC4::Expr& expr]
+ at declarations {
+  CVC4::Expr lhs, rhs;
+}
+  : '$let_ft' LPAREN_TOK { PARSER_STATE->pushScope(); }
+    tffLetFormulaDefn[lhs, rhs] COMMA_TOK
+    term[expr]
+    { PARSER_STATE->popScope();
+      expr = expr.substitute(lhs, rhs);
+    }
+    RPAREN_TOK
+  | '$let_tt' LPAREN_TOK { PARSER_STATE->pushScope(); }
+    tffLetTermDefn[lhs, rhs] COMMA_TOK
+    term[expr]
+    { PARSER_STATE->popScope();
+      expr = expr.substitute(lhs, rhs);
+    }
+    RPAREN_TOK
+  ;
+
+/* Not an application */
+simpleTerm[CVC4::Expr& expr]
+  : variable[expr]
+  | NUMBER { expr = PARSER_STATE->d_tmp_expr; }
+  | DISTINCT_OBJECT { expr = PARSER_STATE->convertStrToUnsorted(AntlrInput::tokenText($DISTINCT_OBJECT)); }
+  ;
+
+functionTerm[CVC4::Expr& expr]
+ at declarations {
+  std::vector<CVC4::Expr> args;
+}
+  : plainTerm[expr]
+  | definedFun[expr] LPAREN_TOK arguments[args] RPAREN_TOK
+    { expr = EXPR_MANAGER->mkExpr(expr, args); }
+// | <system_term>
+  ;
+
+conditionalTerm[CVC4::Expr& expr]
+ at declarations {
+  CVC4::Expr expr2, expr3;
+}
+  : '$ite_t' LPAREN_TOK tffLogicFormula[expr] COMMA_TOK term[expr2] COMMA_TOK term[expr3] RPAREN_TOK
+    { expr = EXPR_MANAGER->mkExpr(CVC4::kind::ITE, expr, expr2, expr3); }
+  ;
+
+plainTerm[CVC4::Expr& expr]
+ at declarations {
+  std::string name;
+  std::vector<Expr> args;
+}
+  : atomicWord[name] (LPAREN_TOK arguments[args] RPAREN_TOK)?
+    {
+       PARSER_STATE->makeApplication(expr,name,args,true);
+    }
+  ;
+
+arguments[std::vector<CVC4::Expr>& args]
+ at declarations {
+  Expr expr;
+}
+  :
+  term[expr] { args.push_back(expr); } ( COMMA_TOK term[expr] { args.push_back(expr); } )*
+  ;
+
+variable[CVC4::Expr& expr]
+  : UPPER_WORD
+    {
+      std::string name = AntlrInput::tokenText($UPPER_WORD);
+      if(!PARSER_STATE->cnf || PARSER_STATE->isDeclared(name)) {
+        expr = PARSER_STATE->getVariable(name);
+      } else {
+        expr = PARSER_STATE->mkBoundVar(name, PARSER_STATE->d_unsorted);
+        if(PARSER_STATE->cnf) PARSER_STATE->addFreeVar(expr);
+      }
+    }
+    ;
+
+/*******/
+/* FOF */
+fofFormula[CVC4::Expr& expr] : fofLogicFormula[expr] ;
+
+fofLogicFormula[CVC4::Expr& expr]
+ at declarations {
+  tptp::NonAssoc na;
+  std::vector< Expr > args;
+  Expr expr2;
+}
+  : fofUnitaryFormula[expr]
+    ( // Non-associative: <=> <~> ~& ~|
+      ( fofBinaryNonAssoc[na] fofUnitaryFormula[expr2]
+        { switch(na) {
+           case tptp::NA_IFF:
+             expr = MK_EXPR(kind::EQUAL,expr,expr2);
+             break;
+           case tptp::NA_REVIFF:
+             expr = MK_EXPR(kind::XOR,expr,expr2);
+             break;
+           case tptp::NA_IMPLIES:
+             expr = MK_EXPR(kind::IMPLIES,expr,expr2);
+             break;
+           case tptp::NA_REVIMPLIES:
+             expr = MK_EXPR(kind::IMPLIES,expr2,expr);
+             break;
+           case tptp::NA_REVOR:
+             expr = MK_EXPR(kind::NOT,MK_EXPR(kind::OR,expr,expr2));
+             break;
+           case tptp::NA_REVAND:
+             expr = MK_EXPR(kind::NOT,MK_EXPR(kind::AND,expr,expr2));
+             break;
+          }
+        }
+      )
+    | // N-ary and &
+      ( { args.push_back(expr); }
+        ( AND_TOK fofUnitaryFormula[expr] { args.push_back(expr); } )+
+        { expr = MK_EXPR_ASSOCIATIVE(kind::AND, args); }
+      )
+    | // N-ary or |
+      ( { args.push_back(expr); }
+        ( OR_TOK fofUnitaryFormula[expr] { args.push_back(expr); } )+
+        { expr = MK_EXPR_ASSOCIATIVE(kind::OR, args); }
+      )
+    )?
+  ;
+
+fofUnitaryFormula[CVC4::Expr& expr]
+ at declarations {
+  Kind kind;
+  std::vector< Expr > bv;
+}
+  : atomicFormula[expr]
+  | LPAREN_TOK fofLogicFormula[expr] RPAREN_TOK
+  | NOT_TOK fofUnitaryFormula[expr] { expr = MK_EXPR(kind::NOT,expr); }
+  | // Quantified
+    folQuantifier[kind] LBRACK_TOK {PARSER_STATE->pushScope();}
+    ( bindvariable[expr] { bv.push_back(expr); }
+      ( COMMA_TOK bindvariable[expr] { bv.push_back(expr); } )* ) RBRACK_TOK
+    COLON_TOK fofUnitaryFormula[expr]
+    { PARSER_STATE->popScope();
+      expr = MK_EXPR(kind, MK_EXPR(kind::BOUND_VAR_LIST, bv), expr);
+    }
+  ;
+
+bindvariable[CVC4::Expr& expr]
+  : UPPER_WORD
+    { std::string name = AntlrInput::tokenText($UPPER_WORD);
+      expr = PARSER_STATE->mkBoundVar(name, PARSER_STATE->d_unsorted);
+    }
+  ;
+
+fofBinaryNonAssoc[CVC4::parser::tptp::NonAssoc& na]
+  : IFF_TOK      { na = tptp::NA_IFF; }
+  | REVIFF_TOK   { na = tptp::NA_REVIFF; }
+  | REVOR_TOK    { na = tptp::NA_REVOR; }
+  | REVAND_TOK   { na = tptp::NA_REVAND; }
+  | IMPLIES_TOK    { na = tptp::NA_IMPLIES; }
+  | REVIMPLIES_TOK { na = tptp::NA_REVIMPLIES; }
+  ;
+
+folQuantifier[CVC4::Kind& kind]
+  : BANG_TOK { kind = kind::FORALL; }
+  | MARK_TOK { kind = kind::EXISTS; }
+  ;
+
+/*******/
+/* TFF */
+tffFormula[CVC4::Expr& expr] : tffLogicFormula[expr];
+
+tffTypedAtom[CVC4::Command*& cmd]
+ at declarations {
+  CVC4::Expr expr;
+  CVC4::Type type;
+  std::string name;
+}
+  : LPAREN_TOK tffTypedAtom[cmd] RPAREN_TOK
+  | nameN[name] COLON_TOK
+    ( '$tType'
+      { if(PARSER_STATE->isDeclared(name, SYM_SORT)) {
+          // duplicate declaration is fine, they're compatible
+          cmd = new EmptyCommand("compatible redeclaration of sort " + name);
+        } else if(PARSER_STATE->isDeclared(name, SYM_VARIABLE)) {
+          // error: cannot be both sort and constant
+          PARSER_STATE->parseError("Symbol `" + name + "' previously declared as a constant; cannot also be a sort");
+        } else {
+          // as yet, it's undeclared
+          Type type = PARSER_STATE->mkSort(name);
+          cmd = new DeclareTypeCommand(name, 0, type);
+        }
+      }
+    | parseType[type]
+      { if(PARSER_STATE->isDeclared(name, SYM_SORT)) {
+          // error: cannot be both sort and constant
+          PARSER_STATE->parseError("Symbol `" + name + "' previously declared as a sort");
+          cmd = new EmptyCommand("compatible redeclaration of sort " + name);
+        } else if(PARSER_STATE->isDeclared(name, SYM_VARIABLE)) {
+          if(type == PARSER_STATE->getVariable(name).getType()) {
+            // duplicate declaration is fine, they're compatible
+            cmd = new EmptyCommand("compatible redeclaration of constant " + name);
+          } else {
+            // error: sorts incompatible
+            PARSER_STATE->parseError("Symbol `" + name + "' declared previously with a different sort");
+          }
+        } else {
+          // as yet, it's undeclared
+          CVC4::Expr expr;
+          if(type.isFunction()) {
+            expr = PARSER_STATE->mkFunction(name, type);
+          } else {
+            expr = PARSER_STATE->mkVar(name, type);
+          }
+          cmd = new DeclareFunctionCommand(name, expr, type);
+        }
+      }
+    )
+  ;
+
+tffLogicFormula[CVC4::Expr& expr]
+ at declarations {
+  tptp::NonAssoc na;
+  std::vector< Expr > args;
+  Expr expr2;
+}
+  : tffUnitaryFormula[expr]
+    ( // Non Assoc <=> <~> ~& ~|
+      ( fofBinaryNonAssoc[na] tffUnitaryFormula[expr2]
+        { switch(na) {
+           case tptp::NA_IFF:
+             expr = MK_EXPR(kind::EQUAL,expr,expr2);
+             break;
+           case tptp::NA_REVIFF:
+             expr = MK_EXPR(kind::XOR,expr,expr2);
+             break;
+           case tptp::NA_IMPLIES:
+             expr = MK_EXPR(kind::IMPLIES,expr,expr2);
+             break;
+           case tptp::NA_REVIMPLIES:
+             expr = MK_EXPR(kind::IMPLIES,expr2,expr);
+             break;
+           case tptp::NA_REVOR:
+             expr = MK_EXPR(kind::NOT,MK_EXPR(kind::OR,expr,expr2));
+             break;
+           case tptp::NA_REVAND:
+             expr = MK_EXPR(kind::NOT,MK_EXPR(kind::AND,expr,expr2));
+             break;
+          }
+        }
+      )
+    | // And &
+      ( { args.push_back(expr); }
+        ( AND_TOK tffUnitaryFormula[expr] { args.push_back(expr); } )+
+        { expr = MK_EXPR(kind::AND,args); }
+      )
+    | // Or |
+      ( { args.push_back(expr); }
+        ( OR_TOK tffUnitaryFormula[expr] { args.push_back(expr); } )+
+        { expr = MK_EXPR(kind::OR,args); }
+      )
+    )?
+  ;
+
+tffUnitaryFormula[CVC4::Expr& expr]
+ at declarations {
+  Kind kind;
+  std::vector< Expr > bv;
+  Expr lhs, rhs;
+}
+  : atomicFormula[expr]
+  | LPAREN_TOK tffLogicFormula[expr] RPAREN_TOK
+  | NOT_TOK tffUnitaryFormula[expr] { expr = MK_EXPR(kind::NOT,expr); }
+  | // Quantified
+    folQuantifier[kind] LBRACK_TOK {PARSER_STATE->pushScope();}
+    ( tffbindvariable[expr] { bv.push_back(expr); }
+      ( COMMA_TOK tffbindvariable[expr] { bv.push_back(expr); } )* ) RBRACK_TOK
+    COLON_TOK tffUnitaryFormula[expr]
+    { PARSER_STATE->popScope();
+      expr = MK_EXPR(kind, MK_EXPR(kind::BOUND_VAR_LIST, bv), expr);
+    }
+  | '$ite_f' LPAREN_TOK tffLogicFormula[expr] COMMA_TOK tffLogicFormula[lhs] COMMA_TOK tffLogicFormula[rhs] RPAREN_TOK
+    { expr = EXPR_MANAGER->mkExpr(CVC4::kind::ITE, expr, lhs, rhs); }
+  | '$let_tf' LPAREN_TOK { PARSER_STATE->pushScope(); }
+    tffLetTermDefn[lhs, rhs] COMMA_TOK
+    tffFormula[expr]
+    { PARSER_STATE->popScope();
+      expr = expr.substitute(lhs, rhs);
+    }
+    RPAREN_TOK
+  | '$let_ff' LPAREN_TOK { PARSER_STATE->pushScope(); }
+    tffLetFormulaDefn[lhs, rhs] COMMA_TOK
+    tffFormula[expr]
+    { PARSER_STATE->popScope();
+      expr = expr.substitute(lhs, rhs);
+    }
+    RPAREN_TOK
+  ;
+
+tffLetTermDefn[CVC4::Expr& lhs, CVC4::Expr& rhs]
+ at declarations {
+  std::vector<CVC4::Expr> bvlist;
+}
+  : (BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK)*
+    tffLetTermBinding[bvlist, lhs, rhs]
+  ;
+
+tffLetTermBinding[std::vector<CVC4::Expr>& bvlist, CVC4::Expr& lhs, CVC4::Expr& rhs]
+  : term[lhs] EQUAL_TOK term[rhs]
+    { PARSER_STATE->checkLetBinding(bvlist, lhs, rhs, false);
+      rhs = MK_EXPR(CVC4::kind::LAMBDA, MK_EXPR(CVC4::kind::BOUND_VAR_LIST, lhs.getChildren()), rhs);
+      lhs = lhs.getOperator();
+    }
+  | LPAREN_TOK tffLetTermBinding[bvlist, lhs, rhs] RPAREN_TOK
+  ;
+
+tffLetFormulaDefn[CVC4::Expr& lhs, CVC4::Expr& rhs]
+ at declarations {
+  std::vector<CVC4::Expr> bvlist;
+}
+  : (BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK)*
+    tffLetFormulaBinding[bvlist, lhs, rhs]
+  ;
+
+tffLetFormulaBinding[std::vector<CVC4::Expr>& bvlist, CVC4::Expr& lhs, CVC4::Expr& rhs]
+  : atomicFormula[lhs] IFF_TOK tffUnitaryFormula[rhs]
+    { PARSER_STATE->checkLetBinding(bvlist, lhs, rhs, true);
+      rhs = MK_EXPR(CVC4::kind::LAMBDA, MK_EXPR(CVC4::kind::BOUND_VAR_LIST, lhs.getChildren()), rhs);
+      lhs = lhs.getOperator();
+    }
+  | LPAREN_TOK tffLetFormulaBinding[bvlist, lhs, rhs] RPAREN_TOK
+  ;
+
+tffbindvariable[CVC4::Expr& expr]
+ at declarations {
+  CVC4::Type type = PARSER_STATE->d_unsorted;
+}
+  : UPPER_WORD
+    ( COLON_TOK parseType[type] )?
+    { std::string name = AntlrInput::tokenText($UPPER_WORD);
+      expr = PARSER_STATE->mkBoundVar(name, type);
+    }
+  ;
+
+// bvlist is accumulative; it can already contain elements
+// on the way in, which are left undisturbed
+tffVariableList[std::vector<CVC4::Expr>& bvlist]
+ at declarations {
+  CVC4::Expr e;
+}
+  : tffbindvariable[e] { bvlist.push_back(e); }
+    ( COMMA_TOK tffbindvariable[e] { bvlist.push_back(e); } )*
+  ;
+
+parseType[CVC4::Type& type]
+ at declarations {
+  std::vector<CVC4::Type> v;
+}
+  : simpleType[type]
+  | ( simpleType[type] { v.push_back(type); }
+    | LPAREN_TOK simpleType[type] { v.push_back(type); }
+      ( TIMES_TOK simpleType[type] { v.push_back(type); } )+
+      RPAREN_TOK
+    )
+    GREATER_TOK simpleType[type]
+    { v.push_back(type);
+      type = EXPR_MANAGER->mkFunctionType(v);
+    }
+  ;
+
+// non-function types
+simpleType[CVC4::Type& type]
+ at declarations {
+  std::string name;
+}
+  : DEFINED_SYMBOL
+    { std::string s = AntlrInput::tokenText($DEFINED_SYMBOL);
+      if(s == "\$i") type = PARSER_STATE->d_unsorted;
+      else if(s == "\$o") type = EXPR_MANAGER->booleanType();
+      else if(s == "\$int") type = EXPR_MANAGER->integerType();
+      else if(s == "\$rat") type = EXPR_MANAGER->realType();
+      else if(s == "\$real") type = EXPR_MANAGER->realType();
+      else if(s == "\$tType") PARSER_STATE->parseError("Type of types `\$tType' cannot be used here");
+      else PARSER_STATE->parseError("unknown defined type `" + s + "'");
+    }
+  | atomicWord[name]
+    { type = PARSER_STATE->getSort(name); }
+  ;
+
+/***********************************************/
+/* Anything well parenthesis */
+
+anything
+  : LPAREN_TOK anything* RPAREN_TOK
+  | LBRACK_TOK anything* RBRACK_TOK
+  | COMMA_TOK
+  | DOT_TOK
+  | COLON_TOK
+  | OR_TOK
+  | NOT_TOK
+  | BANG_TOK
+  | MARK_TOK
+  | AND_TOK
+  | IFF_TOK
+  | IMPLIES_TOK
+  | REVIMPLIES_TOK
+  | REVIFF_TOK
+  | REVOR_TOK
+  | REVAND_TOK
+  | TIMES_TOK
+  | PLUS_TOK
+  | MINUS_TOK
+  | TRUE_TOK
+  | FALSE_TOK
+  | EQUAL_TOK
+  | DISEQUAL_TOK
+  | CNF_TOK
+  | FOF_TOK
+  | THF_TOK
+  | TFF_TOK
+  | TYPE_TOK
+  | INCLUDE_TOK
+  | DISTINCT_OBJECT
+  | UPPER_WORD
+  | LOWER_WORD
+  | LOWER_WORD_SINGLE_QUOTED
+  | SINGLE_QUOTED
+  | NUMBER
+  | DEFINED_SYMBOL
+  ;
+/*********/
+
+//punctuation
+COMMA_TOK  : ',';
+DOT_TOK    : '.';
+LPAREN_TOK : '(';
+RPAREN_TOK : ')';
+LBRACK_TOK : '[';
+RBRACK_TOK : ']';
+COLON_TOK  : ':';
+
+GREATER_TOK  : '>';
+
+//operator
+OR_TOK       : '|';
+NOT_TOK      : '~';
+BANG_TOK     : '!';
+MARK_TOK     : '?';
+AND_TOK      : '&';
+IFF_TOK      : '<=>';
+IMPLIES_TOK    : '=>';
+REVIMPLIES_TOK : '<=';
+REVIFF_TOK   : '<~>';
+REVOR_TOK    : '~|';
+REVAND_TOK   : '~&';
+TIMES_TOK    : '*';
+PLUS_TOK     : '+';
+MINUS_TOK    : '-';
+
+//predicate
+TRUE_TOK     : '$true';
+FALSE_TOK    : '$false';
+EQUAL_TOK    : '=';
+DISEQUAL_TOK : '!=';
+
+//KEYWORD
+CNF_TOK     : 'cnf';
+FOF_TOK     : 'fof';
+THF_TOK     : 'thf';
+TFF_TOK     : 'tff';
+TYPE_TOK    : 'type';
+INCLUDE_TOK : 'include';
+
+//Other defined symbols, must be defined after all the other
+DEFINED_SYMBOL : '$' LOWER_WORD;
+
+/*********/
+/* Token */
+
+/*
+ * Matches and skips whitespace in the input.
+ */
+
+WHITESPACE
+  : (' ' | '\t' | '\f' | '\r' | '\n')+ { SKIP(); }
+  ;
+
+
+/**
+ * Matches a double or single quoted string literal. Escaping is supported, and
+ * escape character '\' has to be escaped.
+ */
+DISTINCT_OBJECT : '"' (DO_CHAR)* '"' ;
+fragment DO_CHAR : ' '..'!'| '#'..'[' | ']'..'~' | '\\"' | '\\\\';
+
+//The order of this two rules is important
+LOWER_WORD_SINGLE_QUOTED : '\'' LOWER_WORD '\'' ;
+SINGLE_QUOTED : '\'' (SQ_CHAR)* '\'' ;
+
+fragment SQ_CHAR : ' '..'&' | '('..'[' | ']'..'~' | '\\\'' | '\\\\';
+
+/* Define upper (variable) and lower (everything else) word */
+fragment NUMERIC : '0'..'9';
+fragment LOWER_ALPHA : 'a'..'z';
+fragment UPPER_ALPHA : 'A'..'Z';
+fragment ALPHA_NUMERIC : LOWER_ALPHA | UPPER_ALPHA | NUMERIC | '_';
+UPPER_WORD : UPPER_ALPHA ALPHA_NUMERIC*;
+LOWER_WORD : LOWER_ALPHA ALPHA_NUMERIC*;
+
+/* filename */
+unquotedFileName[std::string& name] /* Beware fileName identifier is used by the backend ... */
+ : (s=LOWER_WORD_SINGLE_QUOTED | s=SINGLE_QUOTED)
+    { name = AntlrInput::tokenText($s);
+      name = name.substr(1, name.size() - 2 );
+    };
+
+/* axiom name */
+nameN[std::string& name]
+ : atomicWord[name]
+ | NUMBER { name = AntlrInput::tokenText($NUMBER); }
+ ;
+
+/* atomic word everything (fof, cnf, thf, tff, include must not be keyword at this position ) */
+atomicWord[std::string& name]
+ : FOF_TOK     { name = "fof"; }
+ | CNF_TOK     { name = "cnf"; }
+ | THF_TOK     { name = "thf"; }
+ | TFF_TOK     { name = "tff"; }
+ | TYPE_TOK    { name = "type"; }
+ | INCLUDE_TOK { name = "include"; }
+ | LOWER_WORD  { name = AntlrInput::tokenText($LOWER_WORD); }
+ | LOWER_WORD_SINGLE_QUOTED // the lower word single quoted are considered without quote
+    { /* strip off the quotes */
+      name = AntlrInput::tokenTextSubstr($LOWER_WORD_SINGLE_QUOTED, 1 ,
+                                         ($LOWER_WORD_SINGLE_QUOTED->stop - $LOWER_WORD_SINGLE_QUOTED->start) - 1);
+    }
+ | SINGLE_QUOTED {name = AntlrInput::tokenText($SINGLE_QUOTED); }; //for the others the quote remains
+
+/** I don't understand how is made the difference between rational and real in SyntaxBNF. So I put all in rational */
+/* Rational */
+
+fragment DOT              : '.';
+fragment EXPONENT         : 'E' | 'e';
+fragment SLASH            : '/';
+
+fragment DECIMAL : NUMERIC+;
+
+/* Currently we put all in the rational type */
+fragment SIGN[bool& pos]
+  : PLUS_TOK { pos = true; }
+  | MINUS_TOK { pos = false; }
+  ;
+
+NUMBER
+ at declarations {
+  bool pos = true;
+  bool posE = true;
+}
+  : ( SIGN[pos]? num=DECIMAL
+      { Integer i(AntlrInput::tokenText($num));
+        Rational r = pos ? i : -i;
+        PARSER_STATE->d_tmp_expr = MK_CONST(r);
+      }
+    | SIGN[pos]? num=DECIMAL DOT den=DECIMAL (EXPONENT SIGN[posE]? e=DECIMAL)?
+      { std::string snum = AntlrInput::tokenText($num);
+        std::string sden = AntlrInput::tokenText($den);
+        /* compute the numerator */
+        Integer inum(snum + sden);
+        // The sign
+        inum = pos ? inum : -inum;
+        // The exponent
+        size_t exp = ($e == NULL ? 0 : AntlrInput::tokenToUnsigned($e));
+        // Decimal part
+        size_t dec = sden.size();
+        /* multiply it by 10 raised to the exponent reduced by the
+         * number of decimal place in den (dec) */
+        Rational r;
+        if(!posE) r = Rational(inum, Integer(10).pow(exp + dec));
+        else if(exp == dec) r = Rational(inum);
+        else if(exp > dec) r = Rational(inum * Integer(10).pow(exp - dec));
+        else r = Rational(inum, Integer(10).pow(dec - exp));
+        PARSER_STATE->d_tmp_expr = MK_CONST(r);
+      }
+    | SIGN[pos]? num=DECIMAL SLASH den=DECIMAL
+      { Integer inum(AntlrInput::tokenText($num));
+        Integer iden(AntlrInput::tokenText($den));
+        PARSER_STATE->d_tmp_expr = MK_CONST(Rational(pos ? inum : -inum, iden));
+      }
+    )
+    { if(PARSER_STATE->cnf || PARSER_STATE->fof) {
+        // We're in an unsorted context, so put a conversion around it
+        PARSER_STATE->d_tmp_expr = PARSER_STATE->convertRatToUnsorted( PARSER_STATE->d_tmp_expr );
+      }
+    }
+  ;
+
+/**
+ * Matches the comments and ignores them
+ */
+COMMENT
+  : '%' (~('\n' | '\r'))*     { SKIP(); }     //comment line
+  | '/*'  ( options {greedy=false;} : . )*  '*/' { SKIP(); } //comment block
+  ;
+
diff --git a/src/parser/tptp/Tptp.tokens b/src/parser/tptp/Tptp.tokens
new file mode 100644
index 0000000..cff43e6
--- /dev/null
+++ b/src/parser/tptp/Tptp.tokens
@@ -0,0 +1,116 @@
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+ALPHA_NUMERIC=4
+AND_TOK=5
+BANG_TOK=6
+CNF_TOK=7
+COLON_TOK=8
+COMMA_TOK=9
+COMMENT=10
+DECIMAL=11
+DEFINED_SYMBOL=12
+DISEQUAL_TOK=13
+DISTINCT_OBJECT=14
+DOT=15
+DOT_TOK=16
+DO_CHAR=17
+EQUAL_TOK=18
+EXPONENT=19
+FALSE_TOK=20
+FOF_TOK=21
+GREATER_TOK=22
+IFF_TOK=23
+IMPLIES_TOK=24
+INCLUDE_TOK=25
+LBRACK_TOK=26
+LOWER_ALPHA=27
+LOWER_WORD=28
+LOWER_WORD_SINGLE_QUOTED=29
+LPAREN_TOK=30
+MARK_TOK=31
+MINUS_TOK=32
+NOT_TOK=33
+NUMBER=34
+NUMERIC=35
+OR_TOK=36
+PLUS_TOK=37
+RBRACK_TOK=38
+REVAND_TOK=39
+REVIFF_TOK=40
+REVIMPLIES_TOK=41
+REVOR_TOK=42
+RPAREN_TOK=43
+SIGN=44
+SINGLE_QUOTED=45
+SLASH=46
+SQ_CHAR=47
+TFF_TOK=48
+THF_TOK=49
+TIMES_TOK=50
+TRUE_TOK=51
+TYPE_TOK=52
+UPPER_ALPHA=53
+UPPER_WORD=54
+WHITESPACE=55
+'$ceiling'=56
+'$difference'=57
+'$distinct'=58
+'$floor'=59
+'$greater'=60
+'$greatereq'=61
+'$is_int'=62
+'$is_rat'=63
+'$ite_f'=64
+'$ite_t'=65
+'$less'=66
+'$lesseq'=67
+'$let_ff'=68
+'$let_ft'=69
+'$let_tf'=70
+'$let_tt'=71
+'$product'=72
+'$quotient'=73
+'$quotient_e'=74
+'$quotient_f'=75
+'$quotient_t'=76
+'$remainder_e'=77
+'$remainder_f'=78
+'$remainder_t'=79
+'$round'=80
+'$sum'=81
+'$tType'=82
+'$to_int'=83
+'$to_rat'=84
+'$to_real'=85
+'$truncate'=86
+'$uminus'=87
diff --git a/src/parser/tptp/TptpLexer.c b/src/parser/tptp/TptpLexer.c
new file mode 100644
index 0000000..f18995c
--- /dev/null
+++ b/src/parser/tptp/TptpLexer.c
@@ -0,0 +1,8064 @@
+/** \file
+ *  This C source file was generated by $ANTLR version 3.4
+ *
+ *     -  From the grammar source file : ../../../../../../src/parser/tptp/Tptp.g
+ *     -                            On : 2017-03-16 01:03:04
+ *     -                 for the lexer : TptpLexerLexer
+ *
+ * Editing it, at least manually, is not wise.
+ *
+ * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws.
+ *
+ *
+*/
+// [The "BSD license"]
+// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
+// http://www.temporal-wave.com
+// http://www.linkedin.com/in/jimidle
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+// 3. The name of the author may not be used to endorse or promote products
+//    derived from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/* -----------------------------------------
+ * Include the ANTLR3 generated header file.
+ */
+#include    "TptpLexer.h"
+
+#include <stdint.h>
+
+#include "parser/tptp/tptp.h"
+#include "parser/antlr_input.h"
+
+using namespace CVC4;
+using namespace CVC4::parser;
+
+/* These need to be macros so they can refer to the PARSER macro, which will be defined
+ * by ANTLR *after* this section. (If they were functions, PARSER would be undefined.) */
+#undef PARSER_STATE
+#define PARSER_STATE ((Tptp*)LEXER->super)
+#undef EXPR_MANAGER
+#define EXPR_MANAGER PARSER_STATE->getExprManager()
+#undef MK_EXPR
+#define MK_EXPR EXPR_MANAGER->mkExpr
+#undef MK_CONST
+#define MK_CONST EXPR_MANAGER->mkConst
+#define UNSUPPORTED PARSER_STATE->unimplementedFeature
+
+
+/* ----------------------------------------- */
+
+
+/** String literals used by TptpLexer that we must do things like MATCHS() with.
+ *  C will normally just lay down 8 bit characters, and you can use L"xxx" to
+ *  get wchar_t, but wchar_t is 16 bits on Windows, which is not UTF32 and so
+ *  we perform this little trick of defining the literals as arrays of UINT32
+ *  and passing in the address of these.
+ */
+static ANTLR3_UCHAR	lit_1[]  = { 0x24, 0x63, 0x65, 0x69, 0x6C, 0x69, 0x6E, 0x67,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_2[]  = { 0x24, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_3[]  = { 0x24, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6E, 0x63, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_4[]  = { 0x24, 0x66, 0x6C, 0x6F, 0x6F, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_5[]  = { 0x24, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_6[]  = { 0x24, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x65, 0x71,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_7[]  = { 0x24, 0x69, 0x73, 0x5F, 0x69, 0x6E, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_8[]  = { 0x24, 0x69, 0x73, 0x5F, 0x72, 0x61, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_9[]  = { 0x24, 0x69, 0x74, 0x65, 0x5F, 0x66,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_10[]  = { 0x24, 0x69, 0x74, 0x65, 0x5F, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_11[]  = { 0x24, 0x6C, 0x65, 0x73, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_12[]  = { 0x24, 0x6C, 0x65, 0x73, 0x73, 0x65, 0x71,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_13[]  = { 0x24, 0x6C, 0x65, 0x74, 0x5F, 0x66, 0x66,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_14[]  = { 0x24, 0x6C, 0x65, 0x74, 0x5F, 0x66, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_15[]  = { 0x24, 0x6C, 0x65, 0x74, 0x5F, 0x74, 0x66,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_16[]  = { 0x24, 0x6C, 0x65, 0x74, 0x5F, 0x74, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_17[]  = { 0x24, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_18[]  = { 0x24, 0x71, 0x75, 0x6F, 0x74, 0x69, 0x65, 0x6E, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_19[]  = { 0x24, 0x71, 0x75, 0x6F, 0x74, 0x69, 0x65, 0x6E, 0x74, 0x5F, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_20[]  = { 0x24, 0x71, 0x75, 0x6F, 0x74, 0x69, 0x65, 0x6E, 0x74, 0x5F, 0x66,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_21[]  = { 0x24, 0x71, 0x75, 0x6F, 0x74, 0x69, 0x65, 0x6E, 0x74, 0x5F, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_22[]  = { 0x24, 0x72, 0x65, 0x6D, 0x61, 0x69, 0x6E, 0x64, 0x65, 0x72, 0x5F, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_23[]  = { 0x24, 0x72, 0x65, 0x6D, 0x61, 0x69, 0x6E, 0x64, 0x65, 0x72, 0x5F, 0x66,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_24[]  = { 0x24, 0x72, 0x65, 0x6D, 0x61, 0x69, 0x6E, 0x64, 0x65, 0x72, 0x5F, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_25[]  = { 0x24, 0x72, 0x6F, 0x75, 0x6E, 0x64,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_26[]  = { 0x24, 0x73, 0x75, 0x6D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_27[]  = { 0x24, 0x74, 0x54, 0x79, 0x70, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_28[]  = { 0x24, 0x74, 0x6F, 0x5F, 0x69, 0x6E, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_29[]  = { 0x24, 0x74, 0x6F, 0x5F, 0x72, 0x61, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_30[]  = { 0x24, 0x74, 0x6F, 0x5F, 0x72, 0x65, 0x61, 0x6C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_31[]  = { 0x24, 0x74, 0x72, 0x75, 0x6E, 0x63, 0x61, 0x74, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_32[]  = { 0x24, 0x75, 0x6D, 0x69, 0x6E, 0x75, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_33[]  = { 0x3C, 0x3D, 0x3E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_34[]  = { 0x3D, 0x3E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_35[]  = { 0x3C, 0x3D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_36[]  = { 0x3C, 0x7E, 0x3E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_37[]  = { 0x7E, 0x7C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_38[]  = { 0x7E, 0x26,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_39[]  = { 0x24, 0x74, 0x72, 0x75, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_40[]  = { 0x24, 0x66, 0x61, 0x6C, 0x73, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_41[]  = { 0x21, 0x3D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_42[]  = { 0x63, 0x6E, 0x66,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_43[]  = { 0x66, 0x6F, 0x66,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_44[]  = { 0x74, 0x68, 0x66,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_45[]  = { 0x74, 0x66, 0x66,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_46[]  = { 0x74, 0x79, 0x70, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_47[]  = { 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x64, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_48[]  = { 0x5C, 0x22,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_49[]  = { 0x5C, 0x5C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_50[]  = { 0x5C, 0x27,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_51[]  = { 0x2F, 0x2A,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_52[]  = { 0x2A, 0x2F,  ANTLR3_STRING_TERMINATOR};
+
+
+
+
+
+/* MACROS that hide the C interface implementations from the
+ * generated code, which makes it a little more understandable to the human eye.
+ * I am very much against using C pre-processor macros for function calls and bits
+ * of code as you cannot see what is happening when single stepping in debuggers
+ * and so on. The exception (in my book at least) is for generated code, where you are
+ * not maintaining it, but may wish to read and understand it. If you single step it, you know that input()
+ * hides some indirect calls, but is always referring to the input stream. This is
+ * probably more readable than ctx->input->istream->input(snarfle0->blarg) and allows me to rejig
+ * the runtime interfaces without changing the generated code too often, without
+ * confusing the reader of the generated output, who may not wish to know the gory
+ * details of the interface inheritance.
+ */
+
+#define		CTX	ctx
+
+/* Aids in accessing scopes for grammar programmers
+ */
+#undef	SCOPE_TYPE
+#undef	SCOPE_STACK
+#undef	SCOPE_TOP
+#define	SCOPE_TYPE(scope)   pTptpLexer_##scope##_SCOPE
+#define SCOPE_STACK(scope)  pTptpLexer_##scope##Stack
+#define	SCOPE_TOP(scope)    ctx->pTptpLexer_##scope##Top
+#define	SCOPE_SIZE(scope)		ctx->pTptpLexer_##scope##Stack_limit
+#define SCOPE_INSTANCE(scope, i)	(ctx->SCOPE_STACK(scope)->get(ctx->SCOPE_STACK(scope),i))
+
+
+/* Macros for accessing things in a lexer
+ */
+#undef	    LEXER
+#undef	    RECOGNIZER
+#undef	    RULEMEMO
+#undef	    GETCHARINDEX
+#undef	    GETLINE
+#undef	    GETCHARPOSITIONINLINE
+#undef	    EMIT
+#undef	    EMITNEW
+#undef	    MATCHC
+#undef	    MATCHS
+#undef	    MATCHRANGE
+#undef	    LTOKEN
+#undef	    HASFAILED
+#undef	    FAILEDFLAG
+#undef	    INPUT
+#undef	    STRSTREAM
+#undef	    LA
+#undef	    HASEXCEPTION
+#undef	    EXCEPTION
+#undef	    CONSTRUCTEX
+#undef	    CONSUME
+#undef	    LRECOVER
+#undef	    MARK
+#undef	    REWIND
+#undef	    REWINDLAST
+#undef	    BACKTRACKING
+#undef		MATCHANY
+#undef		MEMOIZE
+#undef		HAVEPARSEDRULE
+#undef		GETTEXT
+#undef		INDEX
+#undef		SEEK
+#undef		PUSHSTREAM
+#undef		POPSTREAM
+#undef		SETTEXT
+#undef		SETTEXT8
+
+#define	    LEXER					ctx->pLexer
+#define	    RECOGNIZER			    LEXER->rec
+#define		LEXSTATE				RECOGNIZER->state
+#define		TOKSOURCE				LEXSTATE->tokSource
+#define	    GETCHARINDEX()			LEXER->getCharIndex(LEXER)
+#define	    GETLINE()				LEXER->getLine(LEXER)
+#define	    GETTEXT()				LEXER->getText(LEXER)
+#define	    GETCHARPOSITIONINLINE() LEXER->getCharPositionInLine(LEXER)
+#define	    EMIT()					LEXSTATE->type = _type; LEXER->emit(LEXER)
+#define	    EMITNEW(t)				LEXER->emitNew(LEXER, t)
+#define	    MATCHC(c)				LEXER->matchc(LEXER, c)
+#define	    MATCHS(s)				LEXER->matchs(LEXER, s)
+#define	    MATCHRANGE(c1,c2)	    LEXER->matchRange(LEXER, c1, c2)
+#define	    MATCHANY()				LEXER->matchAny(LEXER)
+#define	    LTOKEN  				LEXSTATE->token
+#define	    HASFAILED()				(LEXSTATE->failed == ANTLR3_TRUE)
+#define	    BACKTRACKING			LEXSTATE->backtracking
+#define	    FAILEDFLAG				LEXSTATE->failed
+#define	    INPUT					LEXER->input
+#define	    STRSTREAM				INPUT
+#define		ISTREAM					INPUT->istream
+#define		INDEX()					ISTREAM->index(ISTREAM)
+#define		SEEK(n)					ISTREAM->seek(ISTREAM, n)
+#define	    EOF_TOKEN				&(LEXSTATE->tokSource->eofToken)
+#define	    HASEXCEPTION()			(LEXSTATE->error == ANTLR3_TRUE)
+#define	    EXCEPTION				LEXSTATE->exception
+#define	    CONSTRUCTEX()			RECOGNIZER->exConstruct(RECOGNIZER)
+#define	    LRECOVER()				LEXER->recover(LEXER)
+#define	    MARK()					ISTREAM->mark(ISTREAM)
+#define	    REWIND(m)				ISTREAM->rewind(ISTREAM, m)
+#define	    REWINDLAST()			ISTREAM->rewindLast(ISTREAM)
+#define		MEMOIZE(ri,si)			RECOGNIZER->memoize(RECOGNIZER, ri, si)
+#define		HAVEPARSEDRULE(r)		RECOGNIZER->alreadyParsedRule(RECOGNIZER, r)
+#define		PUSHSTREAM(str)			LEXER->pushCharStream(LEXER, str)
+#define		POPSTREAM()				LEXER->popCharStream(LEXER)
+#define		SETTEXT(str)			LEXSTATE->text = str
+#define		SKIP()					LEXSTATE->token = &(TOKSOURCE->skipToken)
+#define		USER1					LEXSTATE->user1
+#define		USER2					LEXSTATE->user2
+#define		USER3					LEXSTATE->user3
+#define		CUSTOM					LEXSTATE->custom
+#define		RULEMEMO				LEXSTATE->ruleMemo
+#define		DBG						RECOGNIZER->debugger
+
+/* If we have been told we can rely on the standard 8 bit or UTF16 input
+ * stream, then we can define our macros to use the direct pointers
+ * in the input object, which is much faster than indirect calls. This
+ * is really only significant to lexers with a lot of fragment rules (which
+ * do not place LA(1) in a temporary at the moment) and even then
+ * only if there is a lot of input (order of say 1M or so).
+ */
+#if	defined(ANTLR3_INLINE_INPUT_8BIT) || defined(ANTLR3_INLINE_INPUT_UTF16)
+
+# ifdef	ANTLR3_INLINE_INPUT_8BIT
+
+/* 8 bit character set */
+
+#  define	    NEXTCHAR	((pANTLR3_UINT8)(INPUT->nextChar))
+#  define	    DATAP	((pANTLR3_UINT8)(INPUT->data))
+
+# else
+
+#  define	    NEXTCHAR	((pANTLR3_UINT16)(INPUT->nextChar))
+#  define	    DATAP	((pANTLR3_UINT16)(INPUT->data))
+
+# endif
+
+# define	    LA(n) ((NEXTCHAR + n) > (DATAP + INPUT->sizeBuf) ? ANTLR3_CHARSTREAM_EOF : (ANTLR3_UCHAR)(*(NEXTCHAR + n - 1)))
+# define            CONSUME()                                           \
+{                                                                       \
+    if        (NEXTCHAR < (DATAP + INPUT->sizeBuf))                     \
+    {                                                                   \
+        INPUT->charPositionInLine++;                                    \
+        if  ((ANTLR3_UCHAR)(*NEXTCHAR) == INPUT->newlineChar)           \
+        {                                                               \
+            INPUT->line++;                                              \
+            INPUT->charPositionInLine        = 0;                       \
+            INPUT->currentLine                = (void *)(NEXTCHAR + 1); \
+        }                                                               \
+        INPUT->nextChar = (void *)(NEXTCHAR + 1);                       \
+    }                                                                   \
+}
+
+#else
+
+// Pick up the input character by calling the input stream implementation.
+//
+#define	    CONSUME()   INPUT->istream->consume(INPUT->istream)
+#define	    LA(n)       INPUT->istream->_LA(INPUT->istream, n)
+
+#endif
+
+#define		TOKTEXT(tok, txt)				tok, (pANTLR3_UINT8)txt
+
+/* The 4 tokens defined below may well clash with your own #defines or token types. If so
+ * then for the present you must use different names for your defines as these are hard coded
+ * in the code generator. It would be better not to use such names internally, and maybe
+ * we can change this in a forthcoming release. I deliberately do not #undef these
+ * here as this will at least give you a redefined error somewhere if they clash.
+ */
+#define	    UP	    ANTLR3_TOKEN_UP
+#define	    DOWN    ANTLR3_TOKEN_DOWN
+#define	    EOR	    ANTLR3_TOKEN_EOR
+#define	    INVALID ANTLR3_TOKEN_INVALID
+
+
+/* =============================================================================
+ * Functions to create and destroy scopes. First come the rule scopes, followed
+ * by the global declared scopes.
+ */
+
+
+
+/* ============================================================================= */
+
+/* =============================================================================
+ * Start of recognizer
+ */
+
+/* Forward declare the locally static matching functions we have generated and any predicate functions.
+ */
+static ANTLR3_INLINE 
+ void
+	mT__56    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__57    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__58    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__59    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__60    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__61    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__62    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__63    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__64    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__65    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__66    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__67    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__68    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__69    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__70    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__71    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__72    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__73    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__74    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__75    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__76    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__77    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__78    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__79    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__80    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__81    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__82    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__83    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__84    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__85    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__86    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mT__87    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCOMMA_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDOT_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLPAREN_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mRPAREN_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLBRACK_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mRBRACK_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCOLON_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mGREATER_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mOR_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mNOT_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mBANG_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mMARK_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mAND_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mIFF_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mIMPLIES_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mREVIMPLIES_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mREVIFF_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mREVOR_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mREVAND_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTIMES_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mPLUS_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mMINUS_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTRUE_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFALSE_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mEQUAL_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDISEQUAL_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCNF_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mFOF_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTHF_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTFF_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTYPE_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mINCLUDE_TOK    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDEFINED_SYMBOL    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mWHITESPACE    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDISTINCT_OBJECT    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDO_CHAR    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLOWER_WORD_SINGLE_QUOTED    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSINGLE_QUOTED    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSQ_CHAR    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mNUMERIC    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLOWER_ALPHA    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mUPPER_ALPHA    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mALPHA_NUMERIC    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mUPPER_WORD    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mLOWER_WORD    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDOT    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mEXPONENT    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSLASH    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDECIMAL    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mSIGN    (pTptpLexer ctx, bool& pos);
+static ANTLR3_INLINE 
+ void
+	mNUMBER    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mCOMMENT    (pTptpLexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTokens    (pTptpLexer ctx);
+static void	TptpLexerFree(pTptpLexer ctx);
+
+/* =========================================================================
+ * Lexer matching rules end.
+ * =========================================================================
+ */
+
+
+
+static void
+TptpLexerFree  (pTptpLexer ctx)
+{
+    LEXER->free(LEXER);
+
+    ANTLR3_FREE(ctx);
+}
+
+static void
+TptpLexerReset (pTptpLexer ctx)
+{
+    RECOGNIZER->reset(RECOGNIZER);
+}
+
+/** \brief Name of the grammar file that generated this code
+ */
+static const char fileName[] = "../../../../../../src/parser/tptp/Tptp.g";
+
+/** \brief Return the name of the grammar file that generated this code.
+ */
+static const char * getGrammarFileName()
+{
+	return fileName;
+}
+
+/** \brief Create a new lexer called TptpLexer
+ *
+ * \param[in]    instream Pointer to an initialized input stream
+ * \return
+ *     - Success pTptpLexer initialized for the lex start
+ *     - Fail NULL
+ */
+ANTLR3_API pTptpLexer TptpLexerNew
+(
+pANTLR3_INPUT_STREAM
+ instream)
+{
+	// See if we can create a new lexer with the standard constructor
+	//
+	return TptpLexerNewSSD(instream, NULL);
+}
+
+/** \brief Create a new lexer called TptpLexer
+ *
+ * \param[in]    instream Pointer to an initialized input stream
+ * \param[state] state Previously created shared recognizer stat
+ * \return
+ *     - Success pTptpLexer initialized for the lex start
+ *     - Fail NULL
+ */
+ANTLR3_API pTptpLexer TptpLexerNewSSD
+(pANTLR3_INPUT_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state)
+{
+    pTptpLexer ctx; // Context structure we will build and return
+
+    ctx = (pTptpLexer) ANTLR3_CALLOC(1, sizeof(TptpLexer));
+
+    if  (ctx == NULL)
+    {
+        // Failed to allocate memory for lexer context
+        return  NULL;
+    }
+
+    /* -------------------------------------------------------------------
+     * Memory for basic structure is allocated, now to fill in
+     * in base ANTLR3 structures. We initialize the function pointers
+     * for the standard ANTLR3 lexer function set, but upon return
+     * from here, the programmer may set the pointers to provide custom
+     * implementations of each function.
+     *
+     * We don't use the macros defined in TptpLexer.h here so you can get a sense
+     * of what goes where.
+     */
+
+    /* Create a base lexer, using the supplied input stream
+     */
+    ctx->pLexer	= antlr3LexerNewStream(ANTLR3_SIZE_HINT, instream, state);
+
+    /* Check that we allocated the memory correctly
+     */
+    if	(ctx->pLexer == NULL)
+    {
+		ANTLR3_FREE(ctx);
+		return  NULL;
+    }
+    /* Install the implementation of our TptpLexer interface
+     */
+    ctx->mT__56	= mT__56;
+    ctx->mT__57	= mT__57;
+    ctx->mT__58	= mT__58;
+    ctx->mT__59	= mT__59;
+    ctx->mT__60	= mT__60;
+    ctx->mT__61	= mT__61;
+    ctx->mT__62	= mT__62;
+    ctx->mT__63	= mT__63;
+    ctx->mT__64	= mT__64;
+    ctx->mT__65	= mT__65;
+    ctx->mT__66	= mT__66;
+    ctx->mT__67	= mT__67;
+    ctx->mT__68	= mT__68;
+    ctx->mT__69	= mT__69;
+    ctx->mT__70	= mT__70;
+    ctx->mT__71	= mT__71;
+    ctx->mT__72	= mT__72;
+    ctx->mT__73	= mT__73;
+    ctx->mT__74	= mT__74;
+    ctx->mT__75	= mT__75;
+    ctx->mT__76	= mT__76;
+    ctx->mT__77	= mT__77;
+    ctx->mT__78	= mT__78;
+    ctx->mT__79	= mT__79;
+    ctx->mT__80	= mT__80;
+    ctx->mT__81	= mT__81;
+    ctx->mT__82	= mT__82;
+    ctx->mT__83	= mT__83;
+    ctx->mT__84	= mT__84;
+    ctx->mT__85	= mT__85;
+    ctx->mT__86	= mT__86;
+    ctx->mT__87	= mT__87;
+    ctx->mCOMMA_TOK	= mCOMMA_TOK;
+    ctx->mDOT_TOK	= mDOT_TOK;
+    ctx->mLPAREN_TOK	= mLPAREN_TOK;
+    ctx->mRPAREN_TOK	= mRPAREN_TOK;
+    ctx->mLBRACK_TOK	= mLBRACK_TOK;
+    ctx->mRBRACK_TOK	= mRBRACK_TOK;
+    ctx->mCOLON_TOK	= mCOLON_TOK;
+    ctx->mGREATER_TOK	= mGREATER_TOK;
+    ctx->mOR_TOK	= mOR_TOK;
+    ctx->mNOT_TOK	= mNOT_TOK;
+    ctx->mBANG_TOK	= mBANG_TOK;
+    ctx->mMARK_TOK	= mMARK_TOK;
+    ctx->mAND_TOK	= mAND_TOK;
+    ctx->mIFF_TOK	= mIFF_TOK;
+    ctx->mIMPLIES_TOK	= mIMPLIES_TOK;
+    ctx->mREVIMPLIES_TOK	= mREVIMPLIES_TOK;
+    ctx->mREVIFF_TOK	= mREVIFF_TOK;
+    ctx->mREVOR_TOK	= mREVOR_TOK;
+    ctx->mREVAND_TOK	= mREVAND_TOK;
+    ctx->mTIMES_TOK	= mTIMES_TOK;
+    ctx->mPLUS_TOK	= mPLUS_TOK;
+    ctx->mMINUS_TOK	= mMINUS_TOK;
+    ctx->mTRUE_TOK	= mTRUE_TOK;
+    ctx->mFALSE_TOK	= mFALSE_TOK;
+    ctx->mEQUAL_TOK	= mEQUAL_TOK;
+    ctx->mDISEQUAL_TOK	= mDISEQUAL_TOK;
+    ctx->mCNF_TOK	= mCNF_TOK;
+    ctx->mFOF_TOK	= mFOF_TOK;
+    ctx->mTHF_TOK	= mTHF_TOK;
+    ctx->mTFF_TOK	= mTFF_TOK;
+    ctx->mTYPE_TOK	= mTYPE_TOK;
+    ctx->mINCLUDE_TOK	= mINCLUDE_TOK;
+    ctx->mDEFINED_SYMBOL	= mDEFINED_SYMBOL;
+    ctx->mWHITESPACE	= mWHITESPACE;
+    ctx->mDISTINCT_OBJECT	= mDISTINCT_OBJECT;
+    ctx->mDO_CHAR	= mDO_CHAR;
+    ctx->mLOWER_WORD_SINGLE_QUOTED	= mLOWER_WORD_SINGLE_QUOTED;
+    ctx->mSINGLE_QUOTED	= mSINGLE_QUOTED;
+    ctx->mSQ_CHAR	= mSQ_CHAR;
+    ctx->mNUMERIC	= mNUMERIC;
+    ctx->mLOWER_ALPHA	= mLOWER_ALPHA;
+    ctx->mUPPER_ALPHA	= mUPPER_ALPHA;
+    ctx->mALPHA_NUMERIC	= mALPHA_NUMERIC;
+    ctx->mUPPER_WORD	= mUPPER_WORD;
+    ctx->mLOWER_WORD	= mLOWER_WORD;
+    ctx->mDOT	= mDOT;
+    ctx->mEXPONENT	= mEXPONENT;
+    ctx->mSLASH	= mSLASH;
+    ctx->mDECIMAL	= mDECIMAL;
+    ctx->mSIGN	= mSIGN;
+    ctx->mNUMBER	= mNUMBER;
+    ctx->mCOMMENT	= mCOMMENT;
+    ctx->mTokens	= mTokens;
+
+    /** When the nextToken() call is made to this lexer's pANTLR3_TOKEN_SOURCE
+     *  it will call mTokens() in this generated code, and will pass it the ctx
+     * pointer of this lexer, not the context of the base lexer, so store that now.
+     */
+    ctx->pLexer->ctx	    = ctx;
+
+    /**Install the token matching function
+     */
+    ctx->pLexer->mTokens = (void (*) (void *))(mTokens);
+
+    ctx->getGrammarFileName	= getGrammarFileName;
+    ctx->free		= TptpLexerFree;
+    ctx->reset          = TptpLexerReset;
+
+
+    /* Return the newly built lexer to the caller
+     */
+    return  ctx;
+}
+
+/* =========================================================================
+ * DFA tables for the lexer
+ */
+/** Static dfa state tables for Cyclic dfa:
+ *    992:5: ( ( SIGN[pos] )? num= DECIMAL | ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? | ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL )
+ */
+static const ANTLR3_INT32 dfa15_eot[7] =
+    {
+	-1, -1, -1, 4, -1, -1, -1
+    };
+static const ANTLR3_INT32 dfa15_eof[7] =
+    {
+	-1, -1, -1, -1, -1, -1, -1
+    };
+static const ANTLR3_INT32 dfa15_min[7] =
+    {
+	43, 48, 48, 46, -1, -1, -1
+    };
+static const ANTLR3_INT32 dfa15_max[7] =
+    {
+	57, 57, 57, 57, -1, -1, -1
+    };
+static const ANTLR3_INT32 dfa15_accept[7] =
+    {
+	-1, -1, -1, -1, 1, 2, 3
+    };
+static const ANTLR3_INT32 dfa15_special[7] =
+    {
+	-1, -1, -1, -1, -1, -1, -1
+    };
+
+/** Used when there is no transition table entry for a particular state */
+#define dfa15_T_empty	    NULL
+
+static const ANTLR3_INT32 dfa15_T0[] =
+    {
+	1, -1, 2, -1, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
+    };
+
+static const ANTLR3_INT32 dfa15_T1[] =
+    {
+	3, 3, 3, 3, 3, 3, 3, 3, 3, 3
+    };
+
+static const ANTLR3_INT32 dfa15_T2[] =
+    {
+	5, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
+    };
+
+
+/* Transition tables are a table of sub tables, with some tables
+ * reused for efficiency.
+ */
+static const ANTLR3_INT32 * const dfa15_transitions[] =
+{
+    dfa15_T0, dfa15_T1, dfa15_T1, dfa15_T2, NULL, NULL, NULL
+};
+
+
+/* Declare tracking structure for Cyclic DFA 15
+ */
+static
+ANTLR3_CYCLIC_DFA cdfa15
+    =	{
+	    15,		    /* Decision number of this dfa	    */
+	    /* Which decision this represents:   */
+	    (const pANTLR3_UCHAR)"992:5: ( ( SIGN[pos] )? num= DECIMAL | ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? | ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL )",
+	    (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition,	/* Default special state transition function	*/
+
+	    antlr3dfaspecialTransition,		/* DFA specialTransition is currently just a default function in the runtime */
+	    antlr3dfapredict,			/* DFA simulator function is in the runtime */
+	    dfa15_eot,	    /* EOT table			    */
+	    dfa15_eof,	    /* EOF table			    */
+	    dfa15_min,	    /* Minimum tokens for each state    */
+	    dfa15_max,	    /* Maximum tokens for each state    */
+	    dfa15_accept,	/* Accept table			    */
+	    dfa15_special,	/* Special transition states	    */
+	    dfa15_transitions	/* Table of transition tables	    */
+
+	};
+/* End of Cyclic DFA 15
+ * ---------------------
+ *//** Static dfa state tables for Cyclic dfa:
+ *    1:1: Tokens : ( T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | COMMA_TOK | DOT_TOK | LPAREN_TOK | RPAREN_TOK | LBRACK_TOK | RBRACK_TOK | COLON_TOK | GREATER_TOK | OR_TOK | NOT_TOK | BANG_TOK | MARK_TOK | AND_TOK | IFF_TOK | IMPLIES_TOK | REVIMPLIES_TOK | REVIFF_TOK | REVOR_TOK [...]
+ */
+static const ANTLR3_INT32 dfa19_eot[246] =
+    {
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, 48, -1, -1, -1, 52, -1, 
+	53, 54, 28, 28, 28, 28, -1, -1, -1, -1, -1, -1, -1, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, 
+	-1, 28, 28, 28, 28, 28, 28, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, -1, -1, 110, 111, 112, 113, 28, 28, -1, 
+	-1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 132, 43, 
+	43, 43, 43, -1, -1, -1, -1, 139, 28, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 152, 43, 43, 43, 43, 43, -1, 43, 43, 43, 43, 164, 43, -1, 28, 43, 43, 
+	43, 170, 171, 43, 43, 43, 175, 176, 43, -1, 43, 43, 43, 43, 43, 185, 186, 
+	43, 43, 43, 43, -1, 43, 28, 43, 43, 43, -1, -1, 43, 197, 198, -1, -1, 199, 
+	200, 201, 202, 203, 43, 43, 43, -1, -1, 207, 208, 43, 43, 211, 212, 213, 
+	43, 43, 217, -1, -1, -1, -1, -1, -1, -1, 218, 43, 43, -1, -1, 221, 43, 
+	-1, -1, -1, 43, 224, 43, -1, -1, 227, 43, -1, 229, 43, -1, 231, 43, -1, 
+	43, -1, 236, -1, 237, 238, 239, 43, -1, -1, -1, -1, 243, 244, 245, -1, 
+	-1, -1
+    };
+static const ANTLR3_INT32 dfa19_eof[246] =
+    {
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
+    };
+static const ANTLR3_INT32 dfa19_min[246] =
+    {
+	9, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, 61, -1, -1, 61, 62, -1, 
+	48, 48, 110, 111, 102, 110, -1, -1, 32, -1, -1, -1, -1, 101, 105, 97, 114, 
+	115, 101, 114, 117, 101, 117, 84, 109, -1, -1, -1, -1, -1, -1, 62, -1, 
+	-1, -1, -1, -1, 102, 102, 102, 102, 112, 99, 32, -1, 105, 102, 111, 108, 
+	101, 95, 101, 115, 111, 111, 109, 117, 109, 121, 95, 117, 105, -1, -1, 
+	48, 48, 48, 48, 101, 108, 32, -1, 32, 108, 102, 116, 111, 115, 97, 105, 
+	95, 115, 95, 100, 116, 97, 110, 48, 112, 105, 101, 110, -1, -1, -1, -1, 
+	48, 117, -1, 105, 101, 105, 114, 101, 116, 110, 97, 102, 48, 102, 117, 
+	105, 105, 100, -1, 101, 110, 97, 99, 48, 117, -1, 100, 110, 114, 110, 48, 
+	48, 101, 116, 116, 48, 48, 113, -1, 102, 102, 99, 101, 110, 48, 48, 116, 
+	116, 97, 97, -1, 115, 101, 103, 101, 99, -1, -1, 114, 48, 48, -1, -1, 48, 
+	48, 48, 48, 48, 116, 110, 100, -1, -1, 48, 48, 108, 116, 48, 48, 48, 110, 
+	116, 48, -1, -1, -1, -1, -1, -1, -1, 48, 116, 101, -1, -1, 48, 101, -1, 
+	-1, -1, 99, 48, 113, -1, -1, 48, 114, -1, 48, 101, -1, 48, 101, -1, 95, 
+	-1, 48, -1, 48, 48, 48, 101, -1, -1, -1, -1, 48, 48, 48, -1, -1, -1
+    };
+static const ANTLR3_INT32 dfa19_max[246] =
+    {
+	126, 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, 61, -1, -1, 126, 62, 
+	-1, 57, 57, 110, 111, 121, 110, -1, -1, 126, -1, -1, -1, -1, 101, 105, 
+	108, 114, 116, 101, 114, 117, 111, 117, 114, 109, -1, -1, -1, -1, -1, -1, 
+	62, -1, -1, -1, -1, -1, 102, 102, 102, 102, 112, 99, 126, -1, 105, 115, 
+	111, 108, 101, 95, 101, 116, 111, 111, 109, 117, 109, 121, 95, 117, 105, 
+	-1, -1, 122, 122, 122, 122, 101, 108, 126, -1, 126, 108, 102, 116, 111, 
+	115, 97, 114, 95, 115, 95, 100, 116, 97, 110, 122, 112, 114, 110, 110, 
+	-1, -1, -1, -1, 122, 117, -1, 105, 101, 105, 114, 101, 116, 110, 97, 116, 
+	122, 116, 117, 105, 105, 100, -1, 101, 110, 101, 99, 122, 117, -1, 100, 
+	110, 114, 110, 122, 122, 101, 116, 116, 122, 122, 113, -1, 116, 116, 99, 
+	101, 110, 122, 122, 116, 116, 97, 97, -1, 115, 101, 103, 101, 99, -1, -1, 
+	114, 122, 122, -1, -1, 122, 122, 122, 122, 122, 116, 110, 100, -1, -1, 
+	122, 122, 108, 116, 122, 122, 122, 110, 116, 122, -1, -1, -1, -1, -1, -1, 
+	-1, 122, 116, 101, -1, -1, 122, 101, -1, -1, -1, 99, 122, 113, -1, -1, 
+	122, 114, -1, 122, 101, -1, 122, 116, -1, 95, -1, 122, -1, 122, 122, 122, 
+	116, -1, -1, -1, -1, 122, 122, 122, -1, -1, -1
+    };
+static const ANTLR3_INT32 dfa19_accept[246] =
+    {
+	-1, -1, 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, -1, 44, 45, -1, -1, 52, 
+	-1, -1, -1, -1, -1, -1, 66, 67, -1, 70, 71, 72, 73, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, 65, 50, 51, 42, 58, 43, -1, 49, 47, 57, 53, 
+	54, -1, -1, -1, -1, -1, -1, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, 46, 48, -1, -1, -1, -1, -1, -1, -1, 68, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, 59, 60, 61, 62, -1, -1, 68, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, 26, -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, 55, -1, -1, -1, -1, -1, 4, 56, -1, -1, -1, 9, 10, -1, -1, -1, -1, 
+	-1, -1, -1, -1, 25, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7, 8, 12, 
+	13, 14, 15, 16, -1, -1, -1, 28, 29, -1, -1, 32, 64, 1, -1, -1, -1, 5, 17, 
+	-1, -1, 30, -1, -1, 3, -1, -1, 18, -1, 31, -1, 6, -1, -1, -1, -1, 2, 19, 
+	20, 21, -1, -1, -1, 22, 23, 24
+    };
+static const ANTLR3_INT32 dfa19_special[246] =
+    {
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
+    };
+
+/** Used when there is no transition table entry for a particular state */
+#define dfa19_T_empty	    NULL
+
+static const ANTLR3_INT32 dfa19_T0[] =
+    {
+	45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 44
+    };
+
+static const ANTLR3_INT32 dfa19_T1[] =
+    {
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -1, -1, -1, -1, -1, -1, -1, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, -1, -1, 43, -1, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43
+    };
+
+static const ANTLR3_INT32 dfa19_T2[] =
+    {
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -1, -1, -1, -1, -1, -1, -1, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, -1, -1, 43, -1, 43, 43, 43, 43, 151, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43
+    };
+
+static const ANTLR3_INT32 dfa19_T3[] =
+    {
+	178, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179
+    };
+
+static const ANTLR3_INT32 dfa19_T4[] =
+    {
+	108
+    };
+
+static const ANTLR3_INT32 dfa19_T5[] =
+    {
+	137, -1, -1, -1, -1, -1, -1, -1, -1, 136
+    };
+
+static const ANTLR3_INT32 dfa19_T6[] =
+    {
+	95
+    };
+
+static const ANTLR3_INT32 dfa19_T7[] =
+    {
+	121
+    };
+
+static const ANTLR3_INT32 dfa19_T8[] =
+    {
+	145
+    };
+
+static const ANTLR3_INT32 dfa19_T9[] =
+    {
+	232, 233, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 234
+    };
+
+static const ANTLR3_INT32 dfa19_T10[] =
+    {
+	43, 43, 31, 32, 43, 33, 34, 43, 35, 43, 43, 36, 43, 43, 43, 37, 38, 39, 
+	40, 41, 42, 43, 43, 43, 43, 43
+    };
+
+static const ANTLR3_INT32 dfa19_T11[] =
+    {
+	180, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 181
+    };
+
+static const ANTLR3_INT32 dfa19_T12[] =
+    {
+	51
+    };
+
+static const ANTLR3_INT32 dfa19_T13[] =
+    {
+	73, -1, -1, -1, -1, -1, -1, -1, -1, -1, 74
+    };
+
+static const ANTLR3_INT32 dfa19_T14[] =
+    {
+	91
+    };
+
+static const ANTLR3_INT32 dfa19_T15[] =
+    {
+	117
+    };
+
+static const ANTLR3_INT32 dfa19_T16[] =
+    {
+	58, -1, 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, 59
+    };
+
+static const ANTLR3_INT32 dfa19_T17[] =
+    {
+	63
+    };
+
+static const ANTLR3_INT32 dfa19_T18[] =
+    {
+	141
+    };
+
+static const ANTLR3_INT32 dfa19_T19[] =
+    {
+	167
+    };
+
+static const ANTLR3_INT32 dfa19_T20[] =
+    {
+	193
+    };
+
+static const ANTLR3_INT32 dfa19_T21[] =
+    {
+	118
+    };
+
+static const ANTLR3_INT32 dfa19_T22[] =
+    {
+	142
+    };
+
+static const ANTLR3_INT32 dfa19_T23[] =
+    {
+	168
+    };
+
+static const ANTLR3_INT32 dfa19_T24[] =
+    {
+	194
+    };
+
+static const ANTLR3_INT32 dfa19_T25[] =
+    {
+	214
+    };
+
+static const ANTLR3_INT32 dfa19_T26[] =
+    {
+	223
+    };
+
+static const ANTLR3_INT32 dfa19_T27[] =
+    {
+	230
+    };
+
+static const ANTLR3_INT32 dfa19_T28[] =
+    {
+	119
+    };
+
+static const ANTLR3_INT32 dfa19_T29[] =
+    {
+	143
+    };
+
+static const ANTLR3_INT32 dfa19_T30[] =
+    {
+	169
+    };
+
+static const ANTLR3_INT32 dfa19_T31[] =
+    {
+	195
+    };
+
+static const ANTLR3_INT32 dfa19_T32[] =
+    {
+	215
+    };
+
+static const ANTLR3_INT32 dfa19_T33[] =
+    {
+	94
+    };
+
+static const ANTLR3_INT32 dfa19_T34[] =
+    {
+	120
+    };
+
+static const ANTLR3_INT32 dfa19_T35[] =
+    {
+	144
+    };
+
+static const ANTLR3_INT32 dfa19_T36[] =
+    {
+	103
+    };
+
+static const ANTLR3_INT32 dfa19_T37[] =
+    {
+	225
+    };
+
+static const ANTLR3_INT32 dfa19_T38[] =
+    {
+	130
+    };
+
+static const ANTLR3_INT32 dfa19_T39[] =
+    {
+	24, 24, -1, 24, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, 24, 12, 25, -1, 1, 30, 14, 26, 4, 5, 17, 18, 2, 19, 
+	3, 30, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 8, -1, 15, 16, 9, 13, -1, 
+	27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
+	27, 27, 27, 27, 27, 27, 27, 27, 6, -1, 7, -1, -1, -1, 28, 28, 20, 28, 28, 
+	21, 28, 28, 23, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 22, 28, 28, 28, 
+	28, 28, 28, -1, 10, -1, 11
+    };
+
+static const ANTLR3_INT32 dfa19_T40[] =
+    {
+	127
+    };
+
+static const ANTLR3_INT32 dfa19_T41[] =
+    {
+	28, 28, 28, 28, 28, 28, 28, 28, 28, 28, -1, -1, -1, -1, -1, -1, -1, 28, 
+	28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 
+	28, 28, 28, 28, 28, 28, 28, -1, -1, -1, -1, 28, -1, 28, 28, 28, 28, 28, 
+	28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 
+	28, 28, 28
+    };
+
+static const ANTLR3_INT32 dfa19_T42[] =
+    {
+	157
+    };
+
+static const ANTLR3_INT32 dfa19_T43[] =
+    {
+	153, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 154
+    };
+
+static const ANTLR3_INT32 dfa19_T44[] =
+    {
+	184
+    };
+
+static const ANTLR3_INT32 dfa19_T45[] =
+    {
+	147
+    };
+
+static const ANTLR3_INT32 dfa19_T46[] =
+    {
+	173
+    };
+
+static const ANTLR3_INT32 dfa19_T47[] =
+    {
+	206
+    };
+
+static const ANTLR3_INT32 dfa19_T48[] =
+    {
+	220
+    };
+
+static const ANTLR3_INT32 dfa19_T49[] =
+    {
+	228
+    };
+
+static const ANTLR3_INT32 dfa19_T50[] =
+    {
+	148
+    };
+
+static const ANTLR3_INT32 dfa19_T51[] =
+    {
+	174
+    };
+
+static const ANTLR3_INT32 dfa19_T52[] =
+    {
+	235
+    };
+
+static const ANTLR3_INT32 dfa19_T53[] =
+    {
+	240, 241, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 242
+    };
+
+static const ANTLR3_INT32 dfa19_T54[] =
+    {
+	62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 
+	62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 
+	62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 
+	62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 61, 61, 61, 61, 61, 61, 61, 
+	61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 
+	61, 62, 62, 62, 62
+    };
+
+static const ANTLR3_INT32 dfa19_T55[] =
+    {
+	70
+    };
+
+static const ANTLR3_INT32 dfa19_T56[] =
+    {
+	177
+    };
+
+static const ANTLR3_INT32 dfa19_T57[] =
+    {
+	49, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 50
+    };
+
+static const ANTLR3_INT32 dfa19_T58[] =
+    {
+	99, 100
+    };
+
+static const ANTLR3_INT32 dfa19_T59[] =
+    {
+	66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 65
+    };
+
+static const ANTLR3_INT32 dfa19_T60[] =
+    {
+	82
+    };
+
+static const ANTLR3_INT32 dfa19_T61[] =
+    {
+	101
+    };
+
+static const ANTLR3_INT32 dfa19_T62[] =
+    {
+	128
+    };
+
+static const ANTLR3_INT32 dfa19_T63[] =
+    {
+	71
+    };
+
+static const ANTLR3_INT32 dfa19_T64[] =
+    {
+	83
+    };
+
+static const ANTLR3_INT32 dfa19_T65[] =
+    {
+	155
+    };
+
+static const ANTLR3_INT32 dfa19_T66[] =
+    {
+	182
+    };
+
+static const ANTLR3_INT32 dfa19_T67[] =
+    {
+	204
+    };
+
+static const ANTLR3_INT32 dfa19_T68[] =
+    {
+	84
+    };
+
+static const ANTLR3_INT32 dfa19_T69[] =
+    {
+	62, 62, 62, 62, 62, 62, 62, 89, 62, 62, 62, 62, 62, 62, 62, 62, 88, 88, 
+	88, 88, 88, 88, 88, 88, 88, 88, 62, 62, 62, 62, 62, 62, 62, 88, 88, 88, 
+	88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 
+	88, 88, 88, 88, 88, 62, 62, 62, 62, 90, 62, 90, 90, 90, 90, 90, 90, 90, 
+	90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 
+	90, 62, 62, 62, 62
+    };
+
+static const ANTLR3_INT32 dfa19_T70[] =
+    {
+	85
+    };
+
+static const ANTLR3_INT32 dfa19_T71[] =
+    {
+	86
+    };
+
+static const ANTLR3_INT32 dfa19_T72[] =
+    {
+	114
+    };
+
+static const ANTLR3_INT32 dfa19_T73[] =
+    {
+	55
+    };
+
+static const ANTLR3_INT32 dfa19_T74[] =
+    {
+	87
+    };
+
+static const ANTLR3_INT32 dfa19_T75[] =
+    {
+	56
+    };
+
+static const ANTLR3_INT32 dfa19_T76[] =
+    {
+	115
+    };
+
+static const ANTLR3_INT32 dfa19_T77[] =
+    {
+	140
+    };
+
+static const ANTLR3_INT32 dfa19_T78[] =
+    {
+	166
+    };
+
+static const ANTLR3_INT32 dfa19_T79[] =
+    {
+	192
+    };
+
+static const ANTLR3_INT32 dfa19_T80[] =
+    {
+	92, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93
+    };
+
+static const ANTLR3_INT32 dfa19_T81[] =
+    {
+	64
+    };
+
+static const ANTLR3_INT32 dfa19_T82[] =
+    {
+	60
+    };
+
+static const ANTLR3_INT32 dfa19_T83[] =
+    {
+	107
+    };
+
+static const ANTLR3_INT32 dfa19_T84[] =
+    {
+	134, -1, -1, -1, -1, -1, -1, -1, -1, 135
+    };
+
+static const ANTLR3_INT32 dfa19_T85[] =
+    {
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -1, -1, -1, -1, -1, -1, -1, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, -1, -1, 43, -1, 43, 43, 43, 43, 216, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43
+    };
+
+static const ANTLR3_INT32 dfa19_T86[] =
+    {
+	104
+    };
+
+static const ANTLR3_INT32 dfa19_T87[] =
+    {
+	96
+    };
+
+static const ANTLR3_INT32 dfa19_T88[] =
+    {
+	131
+    };
+
+static const ANTLR3_INT32 dfa19_T89[] =
+    {
+	67
+    };
+
+static const ANTLR3_INT32 dfa19_T90[] =
+    {
+	158
+    };
+
+static const ANTLR3_INT32 dfa19_T91[] =
+    {
+	122
+    };
+
+static const ANTLR3_INT32 dfa19_T92[] =
+    {
+	146
+    };
+
+static const ANTLR3_INT32 dfa19_T93[] =
+    {
+	72
+    };
+
+static const ANTLR3_INT32 dfa19_T94[] =
+    {
+	172
+    };
+
+static const ANTLR3_INT32 dfa19_T95[] =
+    {
+	102
+    };
+
+static const ANTLR3_INT32 dfa19_T96[] =
+    {
+	105
+    };
+
+static const ANTLR3_INT32 dfa19_T97[] =
+    {
+	196
+    };
+
+static const ANTLR3_INT32 dfa19_T98[] =
+    {
+	75
+    };
+
+static const ANTLR3_INT32 dfa19_T99[] =
+    {
+	129
+    };
+
+static const ANTLR3_INT32 dfa19_T100[] =
+    {
+	106
+    };
+
+static const ANTLR3_INT32 dfa19_T101[] =
+    {
+	156
+    };
+
+static const ANTLR3_INT32 dfa19_T102[] =
+    {
+	133
+    };
+
+static const ANTLR3_INT32 dfa19_T103[] =
+    {
+	159
+    };
+
+static const ANTLR3_INT32 dfa19_T104[] =
+    {
+	183
+    };
+
+static const ANTLR3_INT32 dfa19_T105[] =
+    {
+	161, -1, -1, -1, 162
+    };
+
+static const ANTLR3_INT32 dfa19_T106[] =
+    {
+	205
+    };
+
+static const ANTLR3_INT32 dfa19_T107[] =
+    {
+	160
+    };
+
+static const ANTLR3_INT32 dfa19_T108[] =
+    {
+	187
+    };
+
+static const ANTLR3_INT32 dfa19_T109[] =
+    {
+	219
+    };
+
+static const ANTLR3_INT32 dfa19_T110[] =
+    {
+	76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, 77, -1, -1, 78
+    };
+
+static const ANTLR3_INT32 dfa19_T111[] =
+    {
+	188
+    };
+
+static const ANTLR3_INT32 dfa19_T112[] =
+    {
+	97
+    };
+
+static const ANTLR3_INT32 dfa19_T113[] =
+    {
+	189
+    };
+
+static const ANTLR3_INT32 dfa19_T114[] =
+    {
+	209
+    };
+
+static const ANTLR3_INT32 dfa19_T115[] =
+    {
+	123, -1, -1, -1, -1, -1, -1, -1, -1, 124
+    };
+
+static const ANTLR3_INT32 dfa19_T116[] =
+    {
+	29, 29, 29, 29, 29, 29, 29, 29, 29, 29
+    };
+
+static const ANTLR3_INT32 dfa19_T117[] =
+    {
+	163
+    };
+
+static const ANTLR3_INT32 dfa19_T118[] =
+    {
+	190
+    };
+
+static const ANTLR3_INT32 dfa19_T119[] =
+    {
+	210
+    };
+
+static const ANTLR3_INT32 dfa19_T120[] =
+    {
+	222
+    };
+
+static const ANTLR3_INT32 dfa19_T121[] =
+    {
+	109
+    };
+
+static const ANTLR3_INT32 dfa19_T122[] =
+    {
+	138
+    };
+
+static const ANTLR3_INT32 dfa19_T123[] =
+    {
+	79
+    };
+
+static const ANTLR3_INT32 dfa19_T124[] =
+    {
+	165
+    };
+
+static const ANTLR3_INT32 dfa19_T125[] =
+    {
+	191
+    };
+
+static const ANTLR3_INT32 dfa19_T126[] =
+    {
+	68, 69
+    };
+
+static const ANTLR3_INT32 dfa19_T127[] =
+    {
+	98
+    };
+
+static const ANTLR3_INT32 dfa19_T128[] =
+    {
+	125
+    };
+
+static const ANTLR3_INT32 dfa19_T129[] =
+    {
+	149, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 150
+    };
+
+static const ANTLR3_INT32 dfa19_T130[] =
+    {
+	47
+    };
+
+static const ANTLR3_INT32 dfa19_T131[] =
+    {
+	80
+    };
+
+static const ANTLR3_INT32 dfa19_T132[] =
+    {
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -1, -1, -1, -1, -1, -1, -1, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, -1, -1, 226, -1, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43
+    };
+
+static const ANTLR3_INT32 dfa19_T133[] =
+    {
+	126
+    };
+
+
+/* Transition tables are a table of sub tables, with some tables
+ * reused for efficiency.
+ */
+static const ANTLR3_INT32 * const dfa19_transitions[] =
+{
+    dfa19_T39, dfa19_T10, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
+    NULL, dfa19_T0, dfa19_T130, NULL, NULL, dfa19_T57, dfa19_T12, NULL, 
+    dfa19_T116, dfa19_T116, dfa19_T73, dfa19_T75, dfa19_T16, dfa19_T82, 
+    NULL, NULL, dfa19_T54, NULL, NULL, NULL, NULL, dfa19_T17, dfa19_T81, 
+    dfa19_T59, dfa19_T89, dfa19_T126, dfa19_T55, dfa19_T63, dfa19_T93, dfa19_T13, 
+    dfa19_T98, dfa19_T110, dfa19_T123, NULL, NULL, NULL, NULL, NULL, NULL, 
+    dfa19_T131, NULL, NULL, NULL, NULL, NULL, dfa19_T60, dfa19_T64, dfa19_T68, 
+    dfa19_T70, dfa19_T71, dfa19_T74, dfa19_T69, NULL, dfa19_T14, dfa19_T80, 
+    dfa19_T33, dfa19_T6, dfa19_T87, dfa19_T112, dfa19_T127, dfa19_T58, dfa19_T61, 
+    dfa19_T95, dfa19_T36, dfa19_T86, dfa19_T96, dfa19_T100, dfa19_T83, dfa19_T4, 
+    dfa19_T121, NULL, NULL, dfa19_T41, dfa19_T41, dfa19_T41, dfa19_T41, 
+    dfa19_T72, dfa19_T76, dfa19_T69, NULL, dfa19_T69, dfa19_T15, dfa19_T21, 
+    dfa19_T28, dfa19_T34, dfa19_T7, dfa19_T91, dfa19_T115, dfa19_T128, dfa19_T133, 
+    dfa19_T40, dfa19_T62, dfa19_T99, dfa19_T38, dfa19_T88, dfa19_T1, dfa19_T102, 
+    dfa19_T84, dfa19_T5, dfa19_T122, NULL, NULL, NULL, NULL, dfa19_T41, 
+    dfa19_T77, NULL, dfa19_T18, dfa19_T22, dfa19_T29, dfa19_T35, dfa19_T8, 
+    dfa19_T92, dfa19_T45, dfa19_T50, dfa19_T129, dfa19_T2, dfa19_T43, dfa19_T65, 
+    dfa19_T101, dfa19_T42, dfa19_T90, NULL, dfa19_T103, dfa19_T107, dfa19_T105, 
+    dfa19_T117, dfa19_T1, dfa19_T124, NULL, dfa19_T78, dfa19_T19, dfa19_T23, 
+    dfa19_T30, dfa19_T1, dfa19_T1, dfa19_T94, dfa19_T46, dfa19_T51, dfa19_T1, 
+    dfa19_T1, dfa19_T56, NULL, dfa19_T3, dfa19_T11, dfa19_T66, dfa19_T104, 
+    dfa19_T44, dfa19_T1, dfa19_T1, dfa19_T108, dfa19_T111, dfa19_T113, dfa19_T118, 
+    NULL, dfa19_T125, dfa19_T79, dfa19_T20, dfa19_T24, dfa19_T31, NULL, 
+    NULL, dfa19_T97, dfa19_T1, dfa19_T1, NULL, NULL, dfa19_T1, dfa19_T1, 
+    dfa19_T1, dfa19_T1, dfa19_T1, dfa19_T67, dfa19_T106, dfa19_T47, NULL, 
+    NULL, dfa19_T1, dfa19_T1, dfa19_T114, dfa19_T119, dfa19_T1, dfa19_T41, 
+    dfa19_T1, dfa19_T25, dfa19_T32, dfa19_T85, NULL, NULL, NULL, NULL, NULL, 
+    NULL, NULL, dfa19_T1, dfa19_T109, dfa19_T48, NULL, NULL, dfa19_T1, dfa19_T120, 
+    NULL, NULL, NULL, dfa19_T26, dfa19_T1, dfa19_T37, NULL, NULL, dfa19_T132, 
+    dfa19_T49, NULL, dfa19_T1, dfa19_T27, NULL, dfa19_T1, dfa19_T9, NULL, 
+    dfa19_T52, NULL, dfa19_T1, NULL, dfa19_T1, dfa19_T1, dfa19_T1, dfa19_T53, 
+    NULL, NULL, NULL, NULL, dfa19_T1, dfa19_T1, dfa19_T1, NULL, NULL, NULL
+};
+
+
+/* Declare tracking structure for Cyclic DFA 19
+ */
+static
+ANTLR3_CYCLIC_DFA cdfa19
+    =	{
+	    19,		    /* Decision number of this dfa	    */
+	    /* Which decision this represents:   */
+	    (const pANTLR3_UCHAR)"1:1: Tokens : ( T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | COMMA_TOK | DOT_TOK | LPAREN_TOK | RPAREN_TOK | LBRACK_TOK | RBRACK_TOK | COLON_TOK | GREATER_TOK | OR_TOK | NOT_TOK | BANG_TOK | MARK_TOK | AND_TOK | IFF_TOK | IMPLIES_TOK | REVIMPLIES_TOK | R [...]
+	    (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition,	/* Default special state transition function	*/
+
+	    antlr3dfaspecialTransition,		/* DFA specialTransition is currently just a default function in the runtime */
+	    antlr3dfapredict,			/* DFA simulator function is in the runtime */
+	    dfa19_eot,	    /* EOT table			    */
+	    dfa19_eof,	    /* EOF table			    */
+	    dfa19_min,	    /* Minimum tokens for each state    */
+	    dfa19_max,	    /* Maximum tokens for each state    */
+	    dfa19_accept,	/* Accept table			    */
+	    dfa19_special,	/* Special transition states	    */
+	    dfa19_transitions	/* Table of transition tables	    */
+
+	};
+/* End of Cyclic DFA 19
+ * ---------------------
+ */ 
+/* =========================================================================
+ * End of DFA tables for the lexer
+ */
+
+/* =========================================================================
+ * Functions to match the lexer grammar defined tokens from the input stream
+ */
+
+//   Comes from: 53:7: ( '$ceiling' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__56
+ *
+ * Looks to match the characters the constitute the token T__56
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__56(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__56;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:53:7: ( '$ceiling' )
+    // ../../../../../../src/parser/tptp/Tptp.g:53:9: '$ceiling'
+    {
+        MATCHS(lit_1);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__56Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__56Ex; /* Prevent compiler warnings */
+    ruleT__56Ex: ;
+
+}
+// $ANTLR end T__56
+
+//   Comes from: 54:7: ( '$difference' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__57
+ *
+ * Looks to match the characters the constitute the token T__57
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__57(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__57;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:54:7: ( '$difference' )
+    // ../../../../../../src/parser/tptp/Tptp.g:54:9: '$difference'
+    {
+        MATCHS(lit_2);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__57Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__57Ex; /* Prevent compiler warnings */
+    ruleT__57Ex: ;
+
+}
+// $ANTLR end T__57
+
+//   Comes from: 55:7: ( '$distinct' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__58
+ *
+ * Looks to match the characters the constitute the token T__58
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__58(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__58;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:55:7: ( '$distinct' )
+    // ../../../../../../src/parser/tptp/Tptp.g:55:9: '$distinct'
+    {
+        MATCHS(lit_3);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__58Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__58Ex; /* Prevent compiler warnings */
+    ruleT__58Ex: ;
+
+}
+// $ANTLR end T__58
+
+//   Comes from: 56:7: ( '$floor' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__59
+ *
+ * Looks to match the characters the constitute the token T__59
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__59(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__59;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:56:7: ( '$floor' )
+    // ../../../../../../src/parser/tptp/Tptp.g:56:9: '$floor'
+    {
+        MATCHS(lit_4);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__59Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__59Ex; /* Prevent compiler warnings */
+    ruleT__59Ex: ;
+
+}
+// $ANTLR end T__59
+
+//   Comes from: 57:7: ( '$greater' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__60
+ *
+ * Looks to match the characters the constitute the token T__60
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__60(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__60;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:57:7: ( '$greater' )
+    // ../../../../../../src/parser/tptp/Tptp.g:57:9: '$greater'
+    {
+        MATCHS(lit_5);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__60Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__60Ex; /* Prevent compiler warnings */
+    ruleT__60Ex: ;
+
+}
+// $ANTLR end T__60
+
+//   Comes from: 58:7: ( '$greatereq' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__61
+ *
+ * Looks to match the characters the constitute the token T__61
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__61(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__61;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:58:7: ( '$greatereq' )
+    // ../../../../../../src/parser/tptp/Tptp.g:58:9: '$greatereq'
+    {
+        MATCHS(lit_6);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__61Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__61Ex; /* Prevent compiler warnings */
+    ruleT__61Ex: ;
+
+}
+// $ANTLR end T__61
+
+//   Comes from: 59:7: ( '$is_int' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__62
+ *
+ * Looks to match the characters the constitute the token T__62
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__62(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__62;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:59:7: ( '$is_int' )
+    // ../../../../../../src/parser/tptp/Tptp.g:59:9: '$is_int'
+    {
+        MATCHS(lit_7);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__62Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__62Ex; /* Prevent compiler warnings */
+    ruleT__62Ex: ;
+
+}
+// $ANTLR end T__62
+
+//   Comes from: 60:7: ( '$is_rat' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__63
+ *
+ * Looks to match the characters the constitute the token T__63
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__63(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__63;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:60:7: ( '$is_rat' )
+    // ../../../../../../src/parser/tptp/Tptp.g:60:9: '$is_rat'
+    {
+        MATCHS(lit_8);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__63Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__63Ex; /* Prevent compiler warnings */
+    ruleT__63Ex: ;
+
+}
+// $ANTLR end T__63
+
+//   Comes from: 61:7: ( '$ite_f' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__64
+ *
+ * Looks to match the characters the constitute the token T__64
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__64(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__64;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:61:7: ( '$ite_f' )
+    // ../../../../../../src/parser/tptp/Tptp.g:61:9: '$ite_f'
+    {
+        MATCHS(lit_9);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__64Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__64Ex; /* Prevent compiler warnings */
+    ruleT__64Ex: ;
+
+}
+// $ANTLR end T__64
+
+//   Comes from: 62:7: ( '$ite_t' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__65
+ *
+ * Looks to match the characters the constitute the token T__65
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__65(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__65;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:62:7: ( '$ite_t' )
+    // ../../../../../../src/parser/tptp/Tptp.g:62:9: '$ite_t'
+    {
+        MATCHS(lit_10);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__65Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__65Ex; /* Prevent compiler warnings */
+    ruleT__65Ex: ;
+
+}
+// $ANTLR end T__65
+
+//   Comes from: 63:7: ( '$less' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__66
+ *
+ * Looks to match the characters the constitute the token T__66
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__66(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__66;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:63:7: ( '$less' )
+    // ../../../../../../src/parser/tptp/Tptp.g:63:9: '$less'
+    {
+        MATCHS(lit_11);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__66Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__66Ex; /* Prevent compiler warnings */
+    ruleT__66Ex: ;
+
+}
+// $ANTLR end T__66
+
+//   Comes from: 64:7: ( '$lesseq' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__67
+ *
+ * Looks to match the characters the constitute the token T__67
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__67(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__67;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:64:7: ( '$lesseq' )
+    // ../../../../../../src/parser/tptp/Tptp.g:64:9: '$lesseq'
+    {
+        MATCHS(lit_12);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__67Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__67Ex; /* Prevent compiler warnings */
+    ruleT__67Ex: ;
+
+}
+// $ANTLR end T__67
+
+//   Comes from: 65:7: ( '$let_ff' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__68
+ *
+ * Looks to match the characters the constitute the token T__68
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__68(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__68;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:65:7: ( '$let_ff' )
+    // ../../../../../../src/parser/tptp/Tptp.g:65:9: '$let_ff'
+    {
+        MATCHS(lit_13);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__68Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__68Ex; /* Prevent compiler warnings */
+    ruleT__68Ex: ;
+
+}
+// $ANTLR end T__68
+
+//   Comes from: 66:7: ( '$let_ft' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__69
+ *
+ * Looks to match the characters the constitute the token T__69
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__69(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__69;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:66:7: ( '$let_ft' )
+    // ../../../../../../src/parser/tptp/Tptp.g:66:9: '$let_ft'
+    {
+        MATCHS(lit_14);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__69Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__69Ex; /* Prevent compiler warnings */
+    ruleT__69Ex: ;
+
+}
+// $ANTLR end T__69
+
+//   Comes from: 67:7: ( '$let_tf' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__70
+ *
+ * Looks to match the characters the constitute the token T__70
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__70(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__70;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:67:7: ( '$let_tf' )
+    // ../../../../../../src/parser/tptp/Tptp.g:67:9: '$let_tf'
+    {
+        MATCHS(lit_15);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__70Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__70Ex; /* Prevent compiler warnings */
+    ruleT__70Ex: ;
+
+}
+// $ANTLR end T__70
+
+//   Comes from: 68:7: ( '$let_tt' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__71
+ *
+ * Looks to match the characters the constitute the token T__71
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__71(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__71;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:68:7: ( '$let_tt' )
+    // ../../../../../../src/parser/tptp/Tptp.g:68:9: '$let_tt'
+    {
+        MATCHS(lit_16);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__71Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__71Ex; /* Prevent compiler warnings */
+    ruleT__71Ex: ;
+
+}
+// $ANTLR end T__71
+
+//   Comes from: 69:7: ( '$product' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__72
+ *
+ * Looks to match the characters the constitute the token T__72
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__72(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__72;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:69:7: ( '$product' )
+    // ../../../../../../src/parser/tptp/Tptp.g:69:9: '$product'
+    {
+        MATCHS(lit_17);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__72Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__72Ex; /* Prevent compiler warnings */
+    ruleT__72Ex: ;
+
+}
+// $ANTLR end T__72
+
+//   Comes from: 70:7: ( '$quotient' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__73
+ *
+ * Looks to match the characters the constitute the token T__73
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__73(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__73;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:70:7: ( '$quotient' )
+    // ../../../../../../src/parser/tptp/Tptp.g:70:9: '$quotient'
+    {
+        MATCHS(lit_18);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__73Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__73Ex; /* Prevent compiler warnings */
+    ruleT__73Ex: ;
+
+}
+// $ANTLR end T__73
+
+//   Comes from: 71:7: ( '$quotient_e' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__74
+ *
+ * Looks to match the characters the constitute the token T__74
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__74(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__74;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:71:7: ( '$quotient_e' )
+    // ../../../../../../src/parser/tptp/Tptp.g:71:9: '$quotient_e'
+    {
+        MATCHS(lit_19);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__74Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__74Ex; /* Prevent compiler warnings */
+    ruleT__74Ex: ;
+
+}
+// $ANTLR end T__74
+
+//   Comes from: 72:7: ( '$quotient_f' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__75
+ *
+ * Looks to match the characters the constitute the token T__75
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__75(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__75;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:72:7: ( '$quotient_f' )
+    // ../../../../../../src/parser/tptp/Tptp.g:72:9: '$quotient_f'
+    {
+        MATCHS(lit_20);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__75Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__75Ex; /* Prevent compiler warnings */
+    ruleT__75Ex: ;
+
+}
+// $ANTLR end T__75
+
+//   Comes from: 73:7: ( '$quotient_t' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__76
+ *
+ * Looks to match the characters the constitute the token T__76
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__76(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__76;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:73:7: ( '$quotient_t' )
+    // ../../../../../../src/parser/tptp/Tptp.g:73:9: '$quotient_t'
+    {
+        MATCHS(lit_21);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__76Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__76Ex; /* Prevent compiler warnings */
+    ruleT__76Ex: ;
+
+}
+// $ANTLR end T__76
+
+//   Comes from: 74:7: ( '$remainder_e' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__77
+ *
+ * Looks to match the characters the constitute the token T__77
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__77(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__77;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:74:7: ( '$remainder_e' )
+    // ../../../../../../src/parser/tptp/Tptp.g:74:9: '$remainder_e'
+    {
+        MATCHS(lit_22);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__77Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__77Ex; /* Prevent compiler warnings */
+    ruleT__77Ex: ;
+
+}
+// $ANTLR end T__77
+
+//   Comes from: 75:7: ( '$remainder_f' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__78
+ *
+ * Looks to match the characters the constitute the token T__78
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__78(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__78;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:75:7: ( '$remainder_f' )
+    // ../../../../../../src/parser/tptp/Tptp.g:75:9: '$remainder_f'
+    {
+        MATCHS(lit_23);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__78Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__78Ex; /* Prevent compiler warnings */
+    ruleT__78Ex: ;
+
+}
+// $ANTLR end T__78
+
+//   Comes from: 76:7: ( '$remainder_t' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__79
+ *
+ * Looks to match the characters the constitute the token T__79
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__79(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__79;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:76:7: ( '$remainder_t' )
+    // ../../../../../../src/parser/tptp/Tptp.g:76:9: '$remainder_t'
+    {
+        MATCHS(lit_24);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__79Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__79Ex; /* Prevent compiler warnings */
+    ruleT__79Ex: ;
+
+}
+// $ANTLR end T__79
+
+//   Comes from: 77:7: ( '$round' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__80
+ *
+ * Looks to match the characters the constitute the token T__80
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__80(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__80;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:77:7: ( '$round' )
+    // ../../../../../../src/parser/tptp/Tptp.g:77:9: '$round'
+    {
+        MATCHS(lit_25);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__80Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__80Ex; /* Prevent compiler warnings */
+    ruleT__80Ex: ;
+
+}
+// $ANTLR end T__80
+
+//   Comes from: 78:7: ( '$sum' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__81
+ *
+ * Looks to match the characters the constitute the token T__81
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__81(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__81;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:78:7: ( '$sum' )
+    // ../../../../../../src/parser/tptp/Tptp.g:78:9: '$sum'
+    {
+        MATCHS(lit_26);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__81Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__81Ex; /* Prevent compiler warnings */
+    ruleT__81Ex: ;
+
+}
+// $ANTLR end T__81
+
+//   Comes from: 79:7: ( '$tType' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__82
+ *
+ * Looks to match the characters the constitute the token T__82
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__82(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__82;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:79:7: ( '$tType' )
+    // ../../../../../../src/parser/tptp/Tptp.g:79:9: '$tType'
+    {
+        MATCHS(lit_27);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__82Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__82Ex; /* Prevent compiler warnings */
+    ruleT__82Ex: ;
+
+}
+// $ANTLR end T__82
+
+//   Comes from: 80:7: ( '$to_int' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__83
+ *
+ * Looks to match the characters the constitute the token T__83
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__83(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__83;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:80:7: ( '$to_int' )
+    // ../../../../../../src/parser/tptp/Tptp.g:80:9: '$to_int'
+    {
+        MATCHS(lit_28);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__83Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__83Ex; /* Prevent compiler warnings */
+    ruleT__83Ex: ;
+
+}
+// $ANTLR end T__83
+
+//   Comes from: 81:7: ( '$to_rat' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__84
+ *
+ * Looks to match the characters the constitute the token T__84
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__84(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__84;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:81:7: ( '$to_rat' )
+    // ../../../../../../src/parser/tptp/Tptp.g:81:9: '$to_rat'
+    {
+        MATCHS(lit_29);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__84Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__84Ex; /* Prevent compiler warnings */
+    ruleT__84Ex: ;
+
+}
+// $ANTLR end T__84
+
+//   Comes from: 82:7: ( '$to_real' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__85
+ *
+ * Looks to match the characters the constitute the token T__85
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__85(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__85;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:82:7: ( '$to_real' )
+    // ../../../../../../src/parser/tptp/Tptp.g:82:9: '$to_real'
+    {
+        MATCHS(lit_30);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__85Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__85Ex; /* Prevent compiler warnings */
+    ruleT__85Ex: ;
+
+}
+// $ANTLR end T__85
+
+//   Comes from: 83:7: ( '$truncate' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__86
+ *
+ * Looks to match the characters the constitute the token T__86
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__86(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__86;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:83:7: ( '$truncate' )
+    // ../../../../../../src/parser/tptp/Tptp.g:83:9: '$truncate'
+    {
+        MATCHS(lit_31);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__86Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__86Ex; /* Prevent compiler warnings */
+    ruleT__86Ex: ;
+
+}
+// $ANTLR end T__86
+
+//   Comes from: 84:7: ( '$uminus' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__87
+ *
+ * Looks to match the characters the constitute the token T__87
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__87(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__87;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:84:7: ( '$uminus' )
+    // ../../../../../../src/parser/tptp/Tptp.g:84:9: '$uminus'
+    {
+        MATCHS(lit_32);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__87Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__87Ex; /* Prevent compiler warnings */
+    ruleT__87Ex: ;
+
+}
+// $ANTLR end T__87
+
+//   Comes from: 870:12: ( ',' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start COMMA_TOK
+ *
+ * Looks to match the characters the constitute the token COMMA_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCOMMA_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = COMMA_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:870:12: ( ',' )
+    // ../../../../../../src/parser/tptp/Tptp.g:870:14: ','
+    {
+        MATCHC(',');
+        if  (HASEXCEPTION())
+        {
+            goto ruleCOMMA_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCOMMA_TOKEx; /* Prevent compiler warnings */
+    ruleCOMMA_TOKEx: ;
+
+}
+// $ANTLR end COMMA_TOK
+
+//   Comes from: 868:12: ( '.' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DOT_TOK
+ *
+ * Looks to match the characters the constitute the token DOT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDOT_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DOT_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:868:12: ( '.' )
+    // ../../../../../../src/parser/tptp/Tptp.g:868:14: '.'
+    {
+        MATCHC('.');
+        if  (HASEXCEPTION())
+        {
+            goto ruleDOT_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDOT_TOKEx; /* Prevent compiler warnings */
+    ruleDOT_TOKEx: ;
+
+}
+// $ANTLR end DOT_TOK
+
+//   Comes from: 869:12: ( '(' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LPAREN_TOK
+ *
+ * Looks to match the characters the constitute the token LPAREN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLPAREN_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LPAREN_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:869:12: ( '(' )
+    // ../../../../../../src/parser/tptp/Tptp.g:869:14: '('
+    {
+        MATCHC('(');
+        if  (HASEXCEPTION())
+        {
+            goto ruleLPAREN_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLPAREN_TOKEx; /* Prevent compiler warnings */
+    ruleLPAREN_TOKEx: ;
+
+}
+// $ANTLR end LPAREN_TOK
+
+//   Comes from: 870:12: ( ')' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start RPAREN_TOK
+ *
+ * Looks to match the characters the constitute the token RPAREN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mRPAREN_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = RPAREN_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:870:12: ( ')' )
+    // ../../../../../../src/parser/tptp/Tptp.g:870:14: ')'
+    {
+        MATCHC(')');
+        if  (HASEXCEPTION())
+        {
+            goto ruleRPAREN_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleRPAREN_TOKEx; /* Prevent compiler warnings */
+    ruleRPAREN_TOKEx: ;
+
+}
+// $ANTLR end RPAREN_TOK
+
+//   Comes from: 871:12: ( '[' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LBRACK_TOK
+ *
+ * Looks to match the characters the constitute the token LBRACK_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLBRACK_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LBRACK_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:871:12: ( '[' )
+    // ../../../../../../src/parser/tptp/Tptp.g:871:14: '['
+    {
+        MATCHC('[');
+        if  (HASEXCEPTION())
+        {
+            goto ruleLBRACK_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLBRACK_TOKEx; /* Prevent compiler warnings */
+    ruleLBRACK_TOKEx: ;
+
+}
+// $ANTLR end LBRACK_TOK
+
+//   Comes from: 872:12: ( ']' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start RBRACK_TOK
+ *
+ * Looks to match the characters the constitute the token RBRACK_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mRBRACK_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = RBRACK_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:872:12: ( ']' )
+    // ../../../../../../src/parser/tptp/Tptp.g:872:14: ']'
+    {
+        MATCHC(']');
+        if  (HASEXCEPTION())
+        {
+            goto ruleRBRACK_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleRBRACK_TOKEx; /* Prevent compiler warnings */
+    ruleRBRACK_TOKEx: ;
+
+}
+// $ANTLR end RBRACK_TOK
+
+//   Comes from: 873:12: ( ':' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start COLON_TOK
+ *
+ * Looks to match the characters the constitute the token COLON_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCOLON_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = COLON_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:873:12: ( ':' )
+    // ../../../../../../src/parser/tptp/Tptp.g:873:14: ':'
+    {
+        MATCHC(':');
+        if  (HASEXCEPTION())
+        {
+            goto ruleCOLON_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCOLON_TOKEx; /* Prevent compiler warnings */
+    ruleCOLON_TOKEx: ;
+
+}
+// $ANTLR end COLON_TOK
+
+//   Comes from: 875:14: ( '>' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start GREATER_TOK
+ *
+ * Looks to match the characters the constitute the token GREATER_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mGREATER_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = GREATER_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:875:14: ( '>' )
+    // ../../../../../../src/parser/tptp/Tptp.g:875:16: '>'
+    {
+        MATCHC('>');
+        if  (HASEXCEPTION())
+        {
+            goto ruleGREATER_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleGREATER_TOKEx; /* Prevent compiler warnings */
+    ruleGREATER_TOKEx: ;
+
+}
+// $ANTLR end GREATER_TOK
+
+//   Comes from: 878:14: ( '|' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start OR_TOK
+ *
+ * Looks to match the characters the constitute the token OR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mOR_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = OR_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:878:14: ( '|' )
+    // ../../../../../../src/parser/tptp/Tptp.g:878:16: '|'
+    {
+        MATCHC('|');
+        if  (HASEXCEPTION())
+        {
+            goto ruleOR_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleOR_TOKEx; /* Prevent compiler warnings */
+    ruleOR_TOKEx: ;
+
+}
+// $ANTLR end OR_TOK
+
+//   Comes from: 879:14: ( '~' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start NOT_TOK
+ *
+ * Looks to match the characters the constitute the token NOT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mNOT_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = NOT_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:879:14: ( '~' )
+    // ../../../../../../src/parser/tptp/Tptp.g:879:16: '~'
+    {
+        MATCHC('~');
+        if  (HASEXCEPTION())
+        {
+            goto ruleNOT_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleNOT_TOKEx; /* Prevent compiler warnings */
+    ruleNOT_TOKEx: ;
+
+}
+// $ANTLR end NOT_TOK
+
+//   Comes from: 880:14: ( '!' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start BANG_TOK
+ *
+ * Looks to match the characters the constitute the token BANG_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mBANG_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = BANG_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:880:14: ( '!' )
+    // ../../../../../../src/parser/tptp/Tptp.g:880:16: '!'
+    {
+        MATCHC('!');
+        if  (HASEXCEPTION())
+        {
+            goto ruleBANG_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleBANG_TOKEx; /* Prevent compiler warnings */
+    ruleBANG_TOKEx: ;
+
+}
+// $ANTLR end BANG_TOK
+
+//   Comes from: 881:14: ( '?' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start MARK_TOK
+ *
+ * Looks to match the characters the constitute the token MARK_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mMARK_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = MARK_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:881:14: ( '?' )
+    // ../../../../../../src/parser/tptp/Tptp.g:881:16: '?'
+    {
+        MATCHC('?');
+        if  (HASEXCEPTION())
+        {
+            goto ruleMARK_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleMARK_TOKEx; /* Prevent compiler warnings */
+    ruleMARK_TOKEx: ;
+
+}
+// $ANTLR end MARK_TOK
+
+//   Comes from: 882:14: ( '&' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start AND_TOK
+ *
+ * Looks to match the characters the constitute the token AND_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mAND_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = AND_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:882:14: ( '&' )
+    // ../../../../../../src/parser/tptp/Tptp.g:882:16: '&'
+    {
+        MATCHC('&');
+        if  (HASEXCEPTION())
+        {
+            goto ruleAND_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleAND_TOKEx; /* Prevent compiler warnings */
+    ruleAND_TOKEx: ;
+
+}
+// $ANTLR end AND_TOK
+
+//   Comes from: 883:14: ( '<=>' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start IFF_TOK
+ *
+ * Looks to match the characters the constitute the token IFF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mIFF_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = IFF_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:883:14: ( '<=>' )
+    // ../../../../../../src/parser/tptp/Tptp.g:883:16: '<=>'
+    {
+        MATCHS(lit_33);
+        if  (HASEXCEPTION())
+        {
+            goto ruleIFF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleIFF_TOKEx; /* Prevent compiler warnings */
+    ruleIFF_TOKEx: ;
+
+}
+// $ANTLR end IFF_TOK
+
+//   Comes from: 884:16: ( '=>' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start IMPLIES_TOK
+ *
+ * Looks to match the characters the constitute the token IMPLIES_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mIMPLIES_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = IMPLIES_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:884:16: ( '=>' )
+    // ../../../../../../src/parser/tptp/Tptp.g:884:18: '=>'
+    {
+        MATCHS(lit_34);
+        if  (HASEXCEPTION())
+        {
+            goto ruleIMPLIES_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleIMPLIES_TOKEx; /* Prevent compiler warnings */
+    ruleIMPLIES_TOKEx: ;
+
+}
+// $ANTLR end IMPLIES_TOK
+
+//   Comes from: 885:16: ( '<=' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start REVIMPLIES_TOK
+ *
+ * Looks to match the characters the constitute the token REVIMPLIES_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mREVIMPLIES_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = REVIMPLIES_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:885:16: ( '<=' )
+    // ../../../../../../src/parser/tptp/Tptp.g:885:18: '<='
+    {
+        MATCHS(lit_35);
+        if  (HASEXCEPTION())
+        {
+            goto ruleREVIMPLIES_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleREVIMPLIES_TOKEx; /* Prevent compiler warnings */
+    ruleREVIMPLIES_TOKEx: ;
+
+}
+// $ANTLR end REVIMPLIES_TOK
+
+//   Comes from: 886:14: ( '<~>' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start REVIFF_TOK
+ *
+ * Looks to match the characters the constitute the token REVIFF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mREVIFF_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = REVIFF_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:886:14: ( '<~>' )
+    // ../../../../../../src/parser/tptp/Tptp.g:886:16: '<~>'
+    {
+        MATCHS(lit_36);
+        if  (HASEXCEPTION())
+        {
+            goto ruleREVIFF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleREVIFF_TOKEx; /* Prevent compiler warnings */
+    ruleREVIFF_TOKEx: ;
+
+}
+// $ANTLR end REVIFF_TOK
+
+//   Comes from: 887:14: ( '~|' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start REVOR_TOK
+ *
+ * Looks to match the characters the constitute the token REVOR_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mREVOR_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = REVOR_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:887:14: ( '~|' )
+    // ../../../../../../src/parser/tptp/Tptp.g:887:16: '~|'
+    {
+        MATCHS(lit_37);
+        if  (HASEXCEPTION())
+        {
+            goto ruleREVOR_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleREVOR_TOKEx; /* Prevent compiler warnings */
+    ruleREVOR_TOKEx: ;
+
+}
+// $ANTLR end REVOR_TOK
+
+//   Comes from: 888:14: ( '~&' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start REVAND_TOK
+ *
+ * Looks to match the characters the constitute the token REVAND_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mREVAND_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = REVAND_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:888:14: ( '~&' )
+    // ../../../../../../src/parser/tptp/Tptp.g:888:16: '~&'
+    {
+        MATCHS(lit_38);
+        if  (HASEXCEPTION())
+        {
+            goto ruleREVAND_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleREVAND_TOKEx; /* Prevent compiler warnings */
+    ruleREVAND_TOKEx: ;
+
+}
+// $ANTLR end REVAND_TOK
+
+//   Comes from: 889:14: ( '*' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start TIMES_TOK
+ *
+ * Looks to match the characters the constitute the token TIMES_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mTIMES_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = TIMES_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:889:14: ( '*' )
+    // ../../../../../../src/parser/tptp/Tptp.g:889:16: '*'
+    {
+        MATCHC('*');
+        if  (HASEXCEPTION())
+        {
+            goto ruleTIMES_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleTIMES_TOKEx; /* Prevent compiler warnings */
+    ruleTIMES_TOKEx: ;
+
+}
+// $ANTLR end TIMES_TOK
+
+//   Comes from: 890:14: ( '+' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start PLUS_TOK
+ *
+ * Looks to match the characters the constitute the token PLUS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mPLUS_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = PLUS_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:890:14: ( '+' )
+    // ../../../../../../src/parser/tptp/Tptp.g:890:16: '+'
+    {
+        MATCHC('+');
+        if  (HASEXCEPTION())
+        {
+            goto rulePLUS_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto rulePLUS_TOKEx; /* Prevent compiler warnings */
+    rulePLUS_TOKEx: ;
+
+}
+// $ANTLR end PLUS_TOK
+
+//   Comes from: 891:14: ( '-' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start MINUS_TOK
+ *
+ * Looks to match the characters the constitute the token MINUS_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mMINUS_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = MINUS_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:891:14: ( '-' )
+    // ../../../../../../src/parser/tptp/Tptp.g:891:16: '-'
+    {
+        MATCHC('-');
+        if  (HASEXCEPTION())
+        {
+            goto ruleMINUS_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleMINUS_TOKEx; /* Prevent compiler warnings */
+    ruleMINUS_TOKEx: ;
+
+}
+// $ANTLR end MINUS_TOK
+
+//   Comes from: 894:14: ( '$true' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start TRUE_TOK
+ *
+ * Looks to match the characters the constitute the token TRUE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mTRUE_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = TRUE_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:894:14: ( '$true' )
+    // ../../../../../../src/parser/tptp/Tptp.g:894:16: '$true'
+    {
+        MATCHS(lit_39);
+        if  (HASEXCEPTION())
+        {
+            goto ruleTRUE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleTRUE_TOKEx; /* Prevent compiler warnings */
+    ruleTRUE_TOKEx: ;
+
+}
+// $ANTLR end TRUE_TOK
+
+//   Comes from: 895:14: ( '$false' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FALSE_TOK
+ *
+ * Looks to match the characters the constitute the token FALSE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFALSE_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FALSE_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:895:14: ( '$false' )
+    // ../../../../../../src/parser/tptp/Tptp.g:895:16: '$false'
+    {
+        MATCHS(lit_40);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFALSE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFALSE_TOKEx; /* Prevent compiler warnings */
+    ruleFALSE_TOKEx: ;
+
+}
+// $ANTLR end FALSE_TOK
+
+//   Comes from: 896:14: ( '=' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start EQUAL_TOK
+ *
+ * Looks to match the characters the constitute the token EQUAL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mEQUAL_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = EQUAL_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:896:14: ( '=' )
+    // ../../../../../../src/parser/tptp/Tptp.g:896:16: '='
+    {
+        MATCHC('=');
+        if  (HASEXCEPTION())
+        {
+            goto ruleEQUAL_TOKEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleEQUAL_TOKEx; /* Prevent compiler warnings */
+    ruleEQUAL_TOKEx: ;
+
+}
+// $ANTLR end EQUAL_TOK
+
+//   Comes from: 897:14: ( '!=' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DISEQUAL_TOK
+ *
+ * Looks to match the characters the constitute the token DISEQUAL_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDISEQUAL_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DISEQUAL_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:897:14: ( '!=' )
+    // ../../../../../../src/parser/tptp/Tptp.g:897:16: '!='
+    {
+        MATCHS(lit_41);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDISEQUAL_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDISEQUAL_TOKEx; /* Prevent compiler warnings */
+    ruleDISEQUAL_TOKEx: ;
+
+}
+// $ANTLR end DISEQUAL_TOK
+
+//   Comes from: 900:13: ( 'cnf' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start CNF_TOK
+ *
+ * Looks to match the characters the constitute the token CNF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCNF_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = CNF_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:900:13: ( 'cnf' )
+    // ../../../../../../src/parser/tptp/Tptp.g:900:15: 'cnf'
+    {
+        MATCHS(lit_42);
+        if  (HASEXCEPTION())
+        {
+            goto ruleCNF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCNF_TOKEx; /* Prevent compiler warnings */
+    ruleCNF_TOKEx: ;
+
+}
+// $ANTLR end CNF_TOK
+
+//   Comes from: 901:13: ( 'fof' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start FOF_TOK
+ *
+ * Looks to match the characters the constitute the token FOF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mFOF_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = FOF_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:901:13: ( 'fof' )
+    // ../../../../../../src/parser/tptp/Tptp.g:901:15: 'fof'
+    {
+        MATCHS(lit_43);
+        if  (HASEXCEPTION())
+        {
+            goto ruleFOF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleFOF_TOKEx; /* Prevent compiler warnings */
+    ruleFOF_TOKEx: ;
+
+}
+// $ANTLR end FOF_TOK
+
+//   Comes from: 902:13: ( 'thf' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start THF_TOK
+ *
+ * Looks to match the characters the constitute the token THF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mTHF_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = THF_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:902:13: ( 'thf' )
+    // ../../../../../../src/parser/tptp/Tptp.g:902:15: 'thf'
+    {
+        MATCHS(lit_44);
+        if  (HASEXCEPTION())
+        {
+            goto ruleTHF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleTHF_TOKEx; /* Prevent compiler warnings */
+    ruleTHF_TOKEx: ;
+
+}
+// $ANTLR end THF_TOK
+
+//   Comes from: 903:13: ( 'tff' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start TFF_TOK
+ *
+ * Looks to match the characters the constitute the token TFF_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mTFF_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = TFF_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:903:13: ( 'tff' )
+    // ../../../../../../src/parser/tptp/Tptp.g:903:15: 'tff'
+    {
+        MATCHS(lit_45);
+        if  (HASEXCEPTION())
+        {
+            goto ruleTFF_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleTFF_TOKEx; /* Prevent compiler warnings */
+    ruleTFF_TOKEx: ;
+
+}
+// $ANTLR end TFF_TOK
+
+//   Comes from: 904:13: ( 'type' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start TYPE_TOK
+ *
+ * Looks to match the characters the constitute the token TYPE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mTYPE_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = TYPE_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:904:13: ( 'type' )
+    // ../../../../../../src/parser/tptp/Tptp.g:904:15: 'type'
+    {
+        MATCHS(lit_46);
+        if  (HASEXCEPTION())
+        {
+            goto ruleTYPE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleTYPE_TOKEx; /* Prevent compiler warnings */
+    ruleTYPE_TOKEx: ;
+
+}
+// $ANTLR end TYPE_TOK
+
+//   Comes from: 905:13: ( 'include' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start INCLUDE_TOK
+ *
+ * Looks to match the characters the constitute the token INCLUDE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mINCLUDE_TOK(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = INCLUDE_TOK;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:905:13: ( 'include' )
+    // ../../../../../../src/parser/tptp/Tptp.g:905:15: 'include'
+    {
+        MATCHS(lit_47);
+        if  (HASEXCEPTION())
+        {
+            goto ruleINCLUDE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleINCLUDE_TOKEx; /* Prevent compiler warnings */
+    ruleINCLUDE_TOKEx: ;
+
+}
+// $ANTLR end INCLUDE_TOK
+
+//   Comes from: 908:16: ( '$' LOWER_WORD )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DEFINED_SYMBOL
+ *
+ * Looks to match the characters the constitute the token DEFINED_SYMBOL
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDEFINED_SYMBOL(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DEFINED_SYMBOL;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:908:16: ( '$' LOWER_WORD )
+    // ../../../../../../src/parser/tptp/Tptp.g:908:18: '$' LOWER_WORD
+    {
+        MATCHC('$');
+        if  (HASEXCEPTION())
+        {
+            goto ruleDEFINED_SYMBOLEx;
+        }
+
+
+        /* 908:18: '$' LOWER_WORD */
+        mLOWER_WORD(ctx );
+        if  (HASEXCEPTION())
+        {
+            goto ruleDEFINED_SYMBOLEx;
+        }
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDEFINED_SYMBOLEx; /* Prevent compiler warnings */
+    ruleDEFINED_SYMBOLEx: ;
+
+}
+// $ANTLR end DEFINED_SYMBOL
+
+//   Comes from: 925:3: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start WHITESPACE
+ *
+ * Looks to match the characters the constitute the token WHITESPACE
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mWHITESPACE(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = WHITESPACE;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:925:3: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
+    // ../../../../../../src/parser/tptp/Tptp.g:925:5: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
+    {
+        // ../../../../../../src/parser/tptp/Tptp.g:925:5: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
+        {
+            int cnt1=0;
+
+            for (;;)
+            {
+                int alt1=2;
+        	switch ( LA(1) )
+        	{
+        	case '\t':
+        	case '\n':
+        	case '\f':
+        	case '\r':
+        	case ' ':
+        		{
+        			alt1=1;
+        		}
+        	    break;
+
+        	}
+
+        	switch (alt1)
+        	{
+        	    case 1:
+        	        // ../../../../../../src/parser/tptp/Tptp.g:
+        	        {
+        	            if ( ((LA(1) >= '\t') && (LA(1) <= '\n')) || ((LA(1) >= '\f') && (LA(1) <= '\r')) || LA(1) == ' ' )
+        	            {
+        	                CONSUME();
+        	            }
+        	            else
+        	            {
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	                LRECOVER();
+        	                goto ruleWHITESPACEEx;
+        	            }
+
+
+        	        }
+        	        break;
+
+        	    default:
+
+        		if ( cnt1 >= 1 )
+        		{
+        		    goto loop1;
+        		}
+        		/* mismatchedSetEx()
+        		 */
+        		CONSTRUCTEX();
+        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        		goto ruleWHITESPACEEx;
+        	}
+        	cnt1++;
+            }
+            loop1: ;	/* Jump to here if this rule does not match */
+        }
+
+        {
+             SKIP(); 
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleWHITESPACEEx; /* Prevent compiler warnings */
+    ruleWHITESPACEEx: ;
+
+}
+// $ANTLR end WHITESPACE
+
+//   Comes from: 930:17: ( '\"' ( DO_CHAR )* '\"' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DISTINCT_OBJECT
+ *
+ * Looks to match the characters the constitute the token DISTINCT_OBJECT
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDISTINCT_OBJECT(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DISTINCT_OBJECT;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:930:17: ( '\"' ( DO_CHAR )* '\"' )
+    // ../../../../../../src/parser/tptp/Tptp.g:930:19: '\"' ( DO_CHAR )* '\"'
+    {
+        MATCHC('"');
+        if  (HASEXCEPTION())
+        {
+            goto ruleDISTINCT_OBJECTEx;
+        }
+
+
+        // ../../../../../../src/parser/tptp/Tptp.g:930:23: ( DO_CHAR )*
+
+        for (;;)
+        {
+            int alt2=2;
+            switch ( LA(1) )
+            {
+            case ' ':
+            case '!':
+            case '#':
+            case '$':
+            case '%':
+            case '&':
+            case '\'':
+            case '(':
+            case ')':
+            case '*':
+            case '+':
+            case ',':
+            case '-':
+            case '.':
+            case '/':
+            case '0':
+            case '1':
+            case '2':
+            case '3':
+            case '4':
+            case '5':
+            case '6':
+            case '7':
+            case '8':
+            case '9':
+            case ':':
+            case ';':
+            case '<':
+            case '=':
+            case '>':
+            case '?':
+            case '@':
+            case 'A':
+            case 'B':
+            case 'C':
+            case 'D':
+            case 'E':
+            case 'F':
+            case 'G':
+            case 'H':
+            case 'I':
+            case 'J':
+            case 'K':
+            case 'L':
+            case 'M':
+            case 'N':
+            case 'O':
+            case 'P':
+            case 'Q':
+            case 'R':
+            case 'S':
+            case 'T':
+            case 'U':
+            case 'V':
+            case 'W':
+            case 'X':
+            case 'Y':
+            case 'Z':
+            case '[':
+            case '\\':
+            case ']':
+            case '^':
+            case '_':
+            case '`':
+            case 'a':
+            case 'b':
+            case 'c':
+            case 'd':
+            case 'e':
+            case 'f':
+            case 'g':
+            case 'h':
+            case 'i':
+            case 'j':
+            case 'k':
+            case 'l':
+            case 'm':
+            case 'n':
+            case 'o':
+            case 'p':
+            case 'q':
+            case 'r':
+            case 's':
+            case 't':
+            case 'u':
+            case 'v':
+            case 'w':
+            case 'x':
+            case 'y':
+            case 'z':
+            case '{':
+            case '|':
+            case '}':
+            case '~':
+            	{
+            		alt2=1;
+            	}
+                break;
+
+            }
+
+            switch (alt2)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:930:24: DO_CHAR
+        	    {
+        	        /* 930:24: DO_CHAR */
+        	        mDO_CHAR(ctx );
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleDISTINCT_OBJECTEx;
+        	        }
+
+
+
+        	    }
+        	    break;
+
+        	default:
+        	    goto loop2;	/* break out of the loop */
+        	    break;
+            }
+        }
+        loop2: ; /* Jump out to here if this rule does not match */
+
+
+        MATCHC('"');
+        if  (HASEXCEPTION())
+        {
+            goto ruleDISTINCT_OBJECTEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDISTINCT_OBJECTEx; /* Prevent compiler warnings */
+    ruleDISTINCT_OBJECTEx: ;
+
+}
+// $ANTLR end DISTINCT_OBJECT
+
+//   Comes from: 927:18: ( ' ' .. '!' | '#' .. '[' | ']' .. '~' | '\\\\\"' | '\\\\\\\\' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DO_CHAR
+ *
+ * Looks to match the characters the constitute the token DO_CHAR
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDO_CHAR(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    {
+        //  ../../../../../../src/parser/tptp/Tptp.g:927:18: ( ' ' .. '!' | '#' .. '[' | ']' .. '~' | '\\\\\"' | '\\\\\\\\' )
+
+        ANTLR3_UINT32 alt3;
+
+        alt3=5;
+
+        switch ( LA(1) )
+        {
+        case ' ':
+        case '!':
+        	{
+        		alt3=1;
+        	}
+            break;
+        case '#':
+        case '$':
+        case '%':
+        case '&':
+        case '\'':
+        case '(':
+        case ')':
+        case '*':
+        case '+':
+        case ',':
+        case '-':
+        case '.':
+        case '/':
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+        case '6':
+        case '7':
+        case '8':
+        case '9':
+        case ':':
+        case ';':
+        case '<':
+        case '=':
+        case '>':
+        case '?':
+        case '@':
+        case 'A':
+        case 'B':
+        case 'C':
+        case 'D':
+        case 'E':
+        case 'F':
+        case 'G':
+        case 'H':
+        case 'I':
+        case 'J':
+        case 'K':
+        case 'L':
+        case 'M':
+        case 'N':
+        case 'O':
+        case 'P':
+        case 'Q':
+        case 'R':
+        case 'S':
+        case 'T':
+        case 'U':
+        case 'V':
+        case 'W':
+        case 'X':
+        case 'Y':
+        case 'Z':
+        case '[':
+        	{
+        		alt3=2;
+        	}
+            break;
+        case ']':
+        case '^':
+        case '_':
+        case '`':
+        case 'a':
+        case 'b':
+        case 'c':
+        case 'd':
+        case 'e':
+        case 'f':
+        case 'g':
+        case 'h':
+        case 'i':
+        case 'j':
+        case 'k':
+        case 'l':
+        case 'm':
+        case 'n':
+        case 'o':
+        case 'p':
+        case 'q':
+        case 'r':
+        case 's':
+        case 't':
+        case 'u':
+        case 'v':
+        case 'w':
+        case 'x':
+        case 'y':
+        case 'z':
+        case '{':
+        case '|':
+        case '}':
+        case '~':
+        	{
+        		alt3=3;
+        	}
+            break;
+        case '\\':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case '"':
+        			{
+        				alt3=4;
+        			}
+        		    break;
+        		case '\\':
+        			{
+        				alt3=5;
+        			}
+        		    break;
+
+        		default:
+        		    CONSTRUCTEX();
+        		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        		    EXCEPTION->message      = (void *)"";
+        		    EXCEPTION->decisionNum  = 3;
+        		    EXCEPTION->state        = 4;
+
+
+        		    goto ruleDO_CHAREx;
+
+        		}
+
+        	}
+            break;
+
+        default:
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            EXCEPTION->message      = (void *)"";
+            EXCEPTION->decisionNum  = 3;
+            EXCEPTION->state        = 0;
+
+
+            goto ruleDO_CHAREx;
+
+        }
+
+        switch (alt3)
+        {
+    	case 1:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:927:20: ' ' .. '!'
+    	    {
+    	        MATCHRANGE(' ', '!');
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleDO_CHAREx;
+    	        }
+
+
+    	    }
+    	    break;
+    	case 2:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:927:30: '#' .. '['
+    	    {
+    	        MATCHRANGE('#', '[');
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleDO_CHAREx;
+    	        }
+
+
+    	    }
+    	    break;
+    	case 3:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:927:41: ']' .. '~'
+    	    {
+    	        MATCHRANGE(']', '~');
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleDO_CHAREx;
+    	        }
+
+
+    	    }
+    	    break;
+    	case 4:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:927:52: '\\\\\"'
+    	    {
+    	        MATCHS(lit_48);
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleDO_CHAREx;
+    	        }
+
+
+
+
+    	    }
+    	    break;
+    	case 5:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:927:60: '\\\\\\\\'
+    	    {
+    	        MATCHS(lit_49);
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleDO_CHAREx;
+    	        }
+
+
+
+
+    	    }
+    	    break;
+
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleDO_CHAREx; /* Prevent compiler warnings */
+    ruleDO_CHAREx: ;
+
+}
+// $ANTLR end DO_CHAR
+
+//   Comes from: 930:26: ( '\\'' LOWER_WORD '\\'' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LOWER_WORD_SINGLE_QUOTED
+ *
+ * Looks to match the characters the constitute the token LOWER_WORD_SINGLE_QUOTED
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLOWER_WORD_SINGLE_QUOTED(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LOWER_WORD_SINGLE_QUOTED;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:930:26: ( '\\'' LOWER_WORD '\\'' )
+    // ../../../../../../src/parser/tptp/Tptp.g:930:28: '\\'' LOWER_WORD '\\''
+    {
+        MATCHC('\'');
+        if  (HASEXCEPTION())
+        {
+            goto ruleLOWER_WORD_SINGLE_QUOTEDEx;
+        }
+
+
+        /* 930:28: '\\'' LOWER_WORD '\\'' */
+        mLOWER_WORD(ctx );
+        if  (HASEXCEPTION())
+        {
+            goto ruleLOWER_WORD_SINGLE_QUOTEDEx;
+        }
+
+
+
+        MATCHC('\'');
+        if  (HASEXCEPTION())
+        {
+            goto ruleLOWER_WORD_SINGLE_QUOTEDEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLOWER_WORD_SINGLE_QUOTEDEx; /* Prevent compiler warnings */
+    ruleLOWER_WORD_SINGLE_QUOTEDEx: ;
+
+}
+// $ANTLR end LOWER_WORD_SINGLE_QUOTED
+
+//   Comes from: 931:15: ( '\\'' ( SQ_CHAR )* '\\'' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SINGLE_QUOTED
+ *
+ * Looks to match the characters the constitute the token SINGLE_QUOTED
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSINGLE_QUOTED(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = SINGLE_QUOTED;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:931:15: ( '\\'' ( SQ_CHAR )* '\\'' )
+    // ../../../../../../src/parser/tptp/Tptp.g:931:17: '\\'' ( SQ_CHAR )* '\\''
+    {
+        MATCHC('\'');
+        if  (HASEXCEPTION())
+        {
+            goto ruleSINGLE_QUOTEDEx;
+        }
+
+
+        // ../../../../../../src/parser/tptp/Tptp.g:931:22: ( SQ_CHAR )*
+
+        for (;;)
+        {
+            int alt4=2;
+            switch ( LA(1) )
+            {
+            case ' ':
+            case '!':
+            case '"':
+            case '#':
+            case '$':
+            case '%':
+            case '&':
+            case '(':
+            case ')':
+            case '*':
+            case '+':
+            case ',':
+            case '-':
+            case '.':
+            case '/':
+            case '0':
+            case '1':
+            case '2':
+            case '3':
+            case '4':
+            case '5':
+            case '6':
+            case '7':
+            case '8':
+            case '9':
+            case ':':
+            case ';':
+            case '<':
+            case '=':
+            case '>':
+            case '?':
+            case '@':
+            case 'A':
+            case 'B':
+            case 'C':
+            case 'D':
+            case 'E':
+            case 'F':
+            case 'G':
+            case 'H':
+            case 'I':
+            case 'J':
+            case 'K':
+            case 'L':
+            case 'M':
+            case 'N':
+            case 'O':
+            case 'P':
+            case 'Q':
+            case 'R':
+            case 'S':
+            case 'T':
+            case 'U':
+            case 'V':
+            case 'W':
+            case 'X':
+            case 'Y':
+            case 'Z':
+            case '[':
+            case '\\':
+            case ']':
+            case '^':
+            case '_':
+            case '`':
+            case 'a':
+            case 'b':
+            case 'c':
+            case 'd':
+            case 'e':
+            case 'f':
+            case 'g':
+            case 'h':
+            case 'i':
+            case 'j':
+            case 'k':
+            case 'l':
+            case 'm':
+            case 'n':
+            case 'o':
+            case 'p':
+            case 'q':
+            case 'r':
+            case 's':
+            case 't':
+            case 'u':
+            case 'v':
+            case 'w':
+            case 'x':
+            case 'y':
+            case 'z':
+            case '{':
+            case '|':
+            case '}':
+            case '~':
+            	{
+            		alt4=1;
+            	}
+                break;
+
+            }
+
+            switch (alt4)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:931:23: SQ_CHAR
+        	    {
+        	        /* 931:23: SQ_CHAR */
+        	        mSQ_CHAR(ctx );
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleSINGLE_QUOTEDEx;
+        	        }
+
+
+
+        	    }
+        	    break;
+
+        	default:
+        	    goto loop4;	/* break out of the loop */
+        	    break;
+            }
+        }
+        loop4: ; /* Jump out to here if this rule does not match */
+
+
+        MATCHC('\'');
+        if  (HASEXCEPTION())
+        {
+            goto ruleSINGLE_QUOTEDEx;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleSINGLE_QUOTEDEx; /* Prevent compiler warnings */
+    ruleSINGLE_QUOTEDEx: ;
+
+}
+// $ANTLR end SINGLE_QUOTED
+
+//   Comes from: 933:18: ( ' ' .. '&' | '(' .. '[' | ']' .. '~' | '\\\\\\'' | '\\\\\\\\' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SQ_CHAR
+ *
+ * Looks to match the characters the constitute the token SQ_CHAR
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSQ_CHAR(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    {
+        //  ../../../../../../src/parser/tptp/Tptp.g:933:18: ( ' ' .. '&' | '(' .. '[' | ']' .. '~' | '\\\\\\'' | '\\\\\\\\' )
+
+        ANTLR3_UINT32 alt5;
+
+        alt5=5;
+
+        switch ( LA(1) )
+        {
+        case ' ':
+        case '!':
+        case '"':
+        case '#':
+        case '$':
+        case '%':
+        case '&':
+        	{
+        		alt5=1;
+        	}
+            break;
+        case '(':
+        case ')':
+        case '*':
+        case '+':
+        case ',':
+        case '-':
+        case '.':
+        case '/':
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+        case '6':
+        case '7':
+        case '8':
+        case '9':
+        case ':':
+        case ';':
+        case '<':
+        case '=':
+        case '>':
+        case '?':
+        case '@':
+        case 'A':
+        case 'B':
+        case 'C':
+        case 'D':
+        case 'E':
+        case 'F':
+        case 'G':
+        case 'H':
+        case 'I':
+        case 'J':
+        case 'K':
+        case 'L':
+        case 'M':
+        case 'N':
+        case 'O':
+        case 'P':
+        case 'Q':
+        case 'R':
+        case 'S':
+        case 'T':
+        case 'U':
+        case 'V':
+        case 'W':
+        case 'X':
+        case 'Y':
+        case 'Z':
+        case '[':
+        	{
+        		alt5=2;
+        	}
+            break;
+        case ']':
+        case '^':
+        case '_':
+        case '`':
+        case 'a':
+        case 'b':
+        case 'c':
+        case 'd':
+        case 'e':
+        case 'f':
+        case 'g':
+        case 'h':
+        case 'i':
+        case 'j':
+        case 'k':
+        case 'l':
+        case 'm':
+        case 'n':
+        case 'o':
+        case 'p':
+        case 'q':
+        case 'r':
+        case 's':
+        case 't':
+        case 'u':
+        case 'v':
+        case 'w':
+        case 'x':
+        case 'y':
+        case 'z':
+        case '{':
+        case '|':
+        case '}':
+        case '~':
+        	{
+        		alt5=3;
+        	}
+            break;
+        case '\\':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case '\'':
+        			{
+        				alt5=4;
+        			}
+        		    break;
+        		case '\\':
+        			{
+        				alt5=5;
+        			}
+        		    break;
+
+        		default:
+        		    CONSTRUCTEX();
+        		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        		    EXCEPTION->message      = (void *)"";
+        		    EXCEPTION->decisionNum  = 5;
+        		    EXCEPTION->state        = 4;
+
+
+        		    goto ruleSQ_CHAREx;
+
+        		}
+
+        	}
+            break;
+
+        default:
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            EXCEPTION->message      = (void *)"";
+            EXCEPTION->decisionNum  = 5;
+            EXCEPTION->state        = 0;
+
+
+            goto ruleSQ_CHAREx;
+
+        }
+
+        switch (alt5)
+        {
+    	case 1:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:933:20: ' ' .. '&'
+    	    {
+    	        MATCHRANGE(' ', '&');
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleSQ_CHAREx;
+    	        }
+
+
+    	    }
+    	    break;
+    	case 2:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:933:31: '(' .. '['
+    	    {
+    	        MATCHRANGE('(', '[');
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleSQ_CHAREx;
+    	        }
+
+
+    	    }
+    	    break;
+    	case 3:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:933:42: ']' .. '~'
+    	    {
+    	        MATCHRANGE(']', '~');
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleSQ_CHAREx;
+    	        }
+
+
+    	    }
+    	    break;
+    	case 4:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:933:53: '\\\\\\''
+    	    {
+    	        MATCHS(lit_50);
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleSQ_CHAREx;
+    	        }
+
+
+
+
+    	    }
+    	    break;
+    	case 5:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:933:62: '\\\\\\\\'
+    	    {
+    	        MATCHS(lit_49);
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleSQ_CHAREx;
+    	        }
+
+
+
+
+    	    }
+    	    break;
+
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleSQ_CHAREx; /* Prevent compiler warnings */
+    ruleSQ_CHAREx: ;
+
+}
+// $ANTLR end SQ_CHAR
+
+//   Comes from: 936:18: ( '0' .. '9' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start NUMERIC
+ *
+ * Looks to match the characters the constitute the token NUMERIC
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mNUMERIC(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:936:18: ( '0' .. '9' )
+    // ../../../../../../src/parser/tptp/Tptp.g:
+    {
+        if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
+        {
+            CONSUME();
+        }
+        else
+        {
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+            LRECOVER();
+            goto ruleNUMERICEx;
+        }
+
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleNUMERICEx; /* Prevent compiler warnings */
+    ruleNUMERICEx: ;
+
+}
+// $ANTLR end NUMERIC
+
+//   Comes from: 937:22: ( 'a' .. 'z' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LOWER_ALPHA
+ *
+ * Looks to match the characters the constitute the token LOWER_ALPHA
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLOWER_ALPHA(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:937:22: ( 'a' .. 'z' )
+    // ../../../../../../src/parser/tptp/Tptp.g:
+    {
+        if ( ((LA(1) >= 'a') && (LA(1) <= 'z')) )
+        {
+            CONSUME();
+        }
+        else
+        {
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+            LRECOVER();
+            goto ruleLOWER_ALPHAEx;
+        }
+
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleLOWER_ALPHAEx; /* Prevent compiler warnings */
+    ruleLOWER_ALPHAEx: ;
+
+}
+// $ANTLR end LOWER_ALPHA
+
+//   Comes from: 938:22: ( 'A' .. 'Z' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start UPPER_ALPHA
+ *
+ * Looks to match the characters the constitute the token UPPER_ALPHA
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mUPPER_ALPHA(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:938:22: ( 'A' .. 'Z' )
+    // ../../../../../../src/parser/tptp/Tptp.g:
+    {
+        if ( ((LA(1) >= 'A') && (LA(1) <= 'Z')) )
+        {
+            CONSUME();
+        }
+        else
+        {
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+            LRECOVER();
+            goto ruleUPPER_ALPHAEx;
+        }
+
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleUPPER_ALPHAEx; /* Prevent compiler warnings */
+    ruleUPPER_ALPHAEx: ;
+
+}
+// $ANTLR end UPPER_ALPHA
+
+//   Comes from: 939:24: ( LOWER_ALPHA | UPPER_ALPHA | NUMERIC | '_' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start ALPHA_NUMERIC
+ *
+ * Looks to match the characters the constitute the token ALPHA_NUMERIC
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mALPHA_NUMERIC(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:939:24: ( LOWER_ALPHA | UPPER_ALPHA | NUMERIC | '_' )
+    // ../../../../../../src/parser/tptp/Tptp.g:
+    {
+        if ( ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'A') && (LA(1) <= 'Z')) || LA(1) == '_' || ((LA(1) >= 'a') && (LA(1) <= 'z')) )
+        {
+            CONSUME();
+        }
+        else
+        {
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+            LRECOVER();
+            goto ruleALPHA_NUMERICEx;
+        }
+
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleALPHA_NUMERICEx; /* Prevent compiler warnings */
+    ruleALPHA_NUMERICEx: ;
+
+}
+// $ANTLR end ALPHA_NUMERIC
+
+//   Comes from: 940:12: ( UPPER_ALPHA ( ALPHA_NUMERIC )* )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start UPPER_WORD
+ *
+ * Looks to match the characters the constitute the token UPPER_WORD
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mUPPER_WORD(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = UPPER_WORD;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:940:12: ( UPPER_ALPHA ( ALPHA_NUMERIC )* )
+    // ../../../../../../src/parser/tptp/Tptp.g:940:14: UPPER_ALPHA ( ALPHA_NUMERIC )*
+    {
+        /* 940:14: UPPER_ALPHA ( ALPHA_NUMERIC )* */
+        mUPPER_ALPHA(ctx );
+        if  (HASEXCEPTION())
+        {
+            goto ruleUPPER_WORDEx;
+        }
+
+
+
+        // ../../../../../../src/parser/tptp/Tptp.g:940:26: ( ALPHA_NUMERIC )*
+
+        for (;;)
+        {
+            int alt6=2;
+            switch ( LA(1) )
+            {
+            case '0':
+            case '1':
+            case '2':
+            case '3':
+            case '4':
+            case '5':
+            case '6':
+            case '7':
+            case '8':
+            case '9':
+            case 'A':
+            case 'B':
+            case 'C':
+            case 'D':
+            case 'E':
+            case 'F':
+            case 'G':
+            case 'H':
+            case 'I':
+            case 'J':
+            case 'K':
+            case 'L':
+            case 'M':
+            case 'N':
+            case 'O':
+            case 'P':
+            case 'Q':
+            case 'R':
+            case 'S':
+            case 'T':
+            case 'U':
+            case 'V':
+            case 'W':
+            case 'X':
+            case 'Y':
+            case 'Z':
+            case '_':
+            case 'a':
+            case 'b':
+            case 'c':
+            case 'd':
+            case 'e':
+            case 'f':
+            case 'g':
+            case 'h':
+            case 'i':
+            case 'j':
+            case 'k':
+            case 'l':
+            case 'm':
+            case 'n':
+            case 'o':
+            case 'p':
+            case 'q':
+            case 'r':
+            case 's':
+            case 't':
+            case 'u':
+            case 'v':
+            case 'w':
+            case 'x':
+            case 'y':
+            case 'z':
+            	{
+            		alt6=1;
+            	}
+                break;
+
+            }
+
+            switch (alt6)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:
+        	    {
+        	        if ( ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'A') && (LA(1) <= 'Z')) || LA(1) == '_' || ((LA(1) >= 'a') && (LA(1) <= 'z')) )
+        	        {
+        	            CONSUME();
+        	        }
+        	        else
+        	        {
+        	            CONSTRUCTEX();
+        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	            LRECOVER();
+        	            goto ruleUPPER_WORDEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+        	default:
+        	    goto loop6;	/* break out of the loop */
+        	    break;
+            }
+        }
+        loop6: ; /* Jump out to here if this rule does not match */
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleUPPER_WORDEx; /* Prevent compiler warnings */
+    ruleUPPER_WORDEx: ;
+
+}
+// $ANTLR end UPPER_WORD
+
+//   Comes from: 941:12: ( LOWER_ALPHA ( ALPHA_NUMERIC )* )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start LOWER_WORD
+ *
+ * Looks to match the characters the constitute the token LOWER_WORD
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mLOWER_WORD(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = LOWER_WORD;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:941:12: ( LOWER_ALPHA ( ALPHA_NUMERIC )* )
+    // ../../../../../../src/parser/tptp/Tptp.g:941:14: LOWER_ALPHA ( ALPHA_NUMERIC )*
+    {
+        /* 941:14: LOWER_ALPHA ( ALPHA_NUMERIC )* */
+        mLOWER_ALPHA(ctx );
+        if  (HASEXCEPTION())
+        {
+            goto ruleLOWER_WORDEx;
+        }
+
+
+
+        // ../../../../../../src/parser/tptp/Tptp.g:941:26: ( ALPHA_NUMERIC )*
+
+        for (;;)
+        {
+            int alt7=2;
+            switch ( LA(1) )
+            {
+            case '0':
+            case '1':
+            case '2':
+            case '3':
+            case '4':
+            case '5':
+            case '6':
+            case '7':
+            case '8':
+            case '9':
+            case 'A':
+            case 'B':
+            case 'C':
+            case 'D':
+            case 'E':
+            case 'F':
+            case 'G':
+            case 'H':
+            case 'I':
+            case 'J':
+            case 'K':
+            case 'L':
+            case 'M':
+            case 'N':
+            case 'O':
+            case 'P':
+            case 'Q':
+            case 'R':
+            case 'S':
+            case 'T':
+            case 'U':
+            case 'V':
+            case 'W':
+            case 'X':
+            case 'Y':
+            case 'Z':
+            case '_':
+            case 'a':
+            case 'b':
+            case 'c':
+            case 'd':
+            case 'e':
+            case 'f':
+            case 'g':
+            case 'h':
+            case 'i':
+            case 'j':
+            case 'k':
+            case 'l':
+            case 'm':
+            case 'n':
+            case 'o':
+            case 'p':
+            case 'q':
+            case 'r':
+            case 's':
+            case 't':
+            case 'u':
+            case 'v':
+            case 'w':
+            case 'x':
+            case 'y':
+            case 'z':
+            	{
+            		alt7=1;
+            	}
+                break;
+
+            }
+
+            switch (alt7)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:
+        	    {
+        	        if ( ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'A') && (LA(1) <= 'Z')) || LA(1) == '_' || ((LA(1) >= 'a') && (LA(1) <= 'z')) )
+        	        {
+        	            CONSUME();
+        	        }
+        	        else
+        	        {
+        	            CONSTRUCTEX();
+        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	            LRECOVER();
+        	            goto ruleLOWER_WORDEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+        	default:
+        	    goto loop7;	/* break out of the loop */
+        	    break;
+            }
+        }
+        loop7: ; /* Jump out to here if this rule does not match */
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleLOWER_WORDEx; /* Prevent compiler warnings */
+    ruleLOWER_WORDEx: ;
+
+}
+// $ANTLR end LOWER_WORD
+
+//   Comes from: 978:27: ( '.' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DOT
+ *
+ * Looks to match the characters the constitute the token DOT
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDOT(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:978:27: ( '.' )
+    // ../../../../../../src/parser/tptp/Tptp.g:978:29: '.'
+    {
+        MATCHC('.');
+        if  (HASEXCEPTION())
+        {
+            goto ruleDOTEx;
+        }
+
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleDOTEx; /* Prevent compiler warnings */
+    ruleDOTEx: ;
+
+}
+// $ANTLR end DOT
+
+//   Comes from: 976:27: ( 'E' | 'e' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start EXPONENT
+ *
+ * Looks to match the characters the constitute the token EXPONENT
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mEXPONENT(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:976:27: ( 'E' | 'e' )
+    // ../../../../../../src/parser/tptp/Tptp.g:
+    {
+        if ( LA(1) == 'E' || LA(1) == 'e' )
+        {
+            CONSUME();
+        }
+        else
+        {
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+            LRECOVER();
+            goto ruleEXPONENTEx;
+        }
+
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleEXPONENTEx; /* Prevent compiler warnings */
+    ruleEXPONENTEx: ;
+
+}
+// $ANTLR end EXPONENT
+
+//   Comes from: 977:27: ( '/' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SLASH
+ *
+ * Looks to match the characters the constitute the token SLASH
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSLASH(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:977:27: ( '/' )
+    // ../../../../../../src/parser/tptp/Tptp.g:977:29: '/'
+    {
+        MATCHC('/');
+        if  (HASEXCEPTION())
+        {
+            goto ruleSLASHEx;
+        }
+
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleSLASHEx; /* Prevent compiler warnings */
+    ruleSLASHEx: ;
+
+}
+// $ANTLR end SLASH
+
+//   Comes from: 979:18: ( ( NUMERIC )+ )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DECIMAL
+ *
+ * Looks to match the characters the constitute the token DECIMAL
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDECIMAL(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:979:18: ( ( NUMERIC )+ )
+    // ../../../../../../src/parser/tptp/Tptp.g:979:20: ( NUMERIC )+
+    {
+        // ../../../../../../src/parser/tptp/Tptp.g:979:20: ( NUMERIC )+
+        {
+            int cnt8=0;
+
+            for (;;)
+            {
+                int alt8=2;
+        	switch ( LA(1) )
+        	{
+        	case '0':
+        	case '1':
+        	case '2':
+        	case '3':
+        	case '4':
+        	case '5':
+        	case '6':
+        	case '7':
+        	case '8':
+        	case '9':
+        		{
+        			alt8=1;
+        		}
+        	    break;
+
+        	}
+
+        	switch (alt8)
+        	{
+        	    case 1:
+        	        // ../../../../../../src/parser/tptp/Tptp.g:
+        	        {
+        	            if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
+        	            {
+        	                CONSUME();
+        	            }
+        	            else
+        	            {
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+        	                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+        	                LRECOVER();
+        	                goto ruleDECIMALEx;
+        	            }
+
+
+        	        }
+        	        break;
+
+        	    default:
+
+        		if ( cnt8 >= 1 )
+        		{
+        		    goto loop8;
+        		}
+        		/* mismatchedSetEx()
+        		 */
+        		CONSTRUCTEX();
+        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        		goto ruleDECIMALEx;
+        	}
+        	cnt8++;
+            }
+            loop8: ;	/* Jump to here if this rule does not match */
+        }
+
+    }
+
+
+    // This is where rules clean up and exit
+    //
+    goto ruleDECIMALEx; /* Prevent compiler warnings */
+    ruleDECIMALEx: ;
+
+}
+// $ANTLR end DECIMAL
+
+//   Comes from: 983:3: ( PLUS_TOK | MINUS_TOK )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start SIGN
+ *
+ * Looks to match the characters the constitute the token SIGN
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mSIGN(pTptpLexer ctx, bool& pos)
+{
+	ANTLR3_UINT32	_type;
+
+
+    {
+        //  ../../../../../../src/parser/tptp/Tptp.g:983:3: ( PLUS_TOK | MINUS_TOK )
+
+        ANTLR3_UINT32 alt9;
+
+        alt9=2;
+
+        switch ( LA(1) )
+        {
+        case '+':
+        	{
+        		alt9=1;
+        	}
+            break;
+        case '-':
+        	{
+        		alt9=2;
+        	}
+            break;
+
+        default:
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            EXCEPTION->message      = (void *)"";
+            EXCEPTION->decisionNum  = 9;
+            EXCEPTION->state        = 0;
+
+
+            goto ruleSIGNEx;
+
+        }
+
+        switch (alt9)
+        {
+    	case 1:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:983:5: PLUS_TOK
+    	    {
+    	        /* 983:5: PLUS_TOK */
+    	        mPLUS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleSIGNEx;
+    	        }
+
+
+
+    	        {
+    	             pos = true; 
+    	        }
+
+
+    	    }
+    	    break;
+    	case 2:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:984:5: MINUS_TOK
+    	    {
+    	        /* 984:5: MINUS_TOK */
+    	        mMINUS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleSIGNEx;
+    	        }
+
+
+
+    	        {
+    	             pos = false; 
+    	        }
+
+
+    	    }
+    	    break;
+
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleSIGNEx; /* Prevent compiler warnings */
+    ruleSIGNEx: ;
+
+}
+// $ANTLR end SIGN
+
+//   Comes from: 992:3: ( ( ( SIGN[pos] )? num= DECIMAL | ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? | ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL ) )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start NUMBER
+ *
+ * Looks to match the characters the constitute the token NUMBER
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mNUMBER(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+      bool pos = true;
+      bool posE = true;
+
+    pANTLR3_COMMON_TOKEN num;
+    pANTLR3_COMMON_TOKEN den;
+    pANTLR3_COMMON_TOKEN e;
+
+
+    num = NULL;
+    den = NULL;
+    e = NULL;
+
+    _type	    = NUMBER;
+
+
+    // ../../../../../../src/parser/tptp/Tptp.g:992:3: ( ( ( SIGN[pos] )? num= DECIMAL | ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? | ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL ) )
+    // ../../../../../../src/parser/tptp/Tptp.g:992:5: ( ( SIGN[pos] )? num= DECIMAL | ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? | ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL )
+    {
+        // ../../../../../../src/parser/tptp/Tptp.g:992:5: ( ( SIGN[pos] )? num= DECIMAL | ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? | ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL )
+        {
+            int alt15=3;
+            alt15 = cdfa15.predict(ctx, RECOGNIZER, ISTREAM, &cdfa15);
+            if  (HASEXCEPTION())
+            {
+                goto ruleNUMBEREx;
+            }
+
+            switch (alt15)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:992:7: ( SIGN[pos] )? num= DECIMAL
+        	    {
+        	        // ../../../../../../src/parser/tptp/Tptp.g:992:7: ( SIGN[pos] )?
+        	        {
+        	            int alt10=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case '+':
+        	                case '-':
+        	                	{
+        	                		alt10=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt10)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:992:7: SIGN[pos]
+        	        	    {
+        	        	        /* 992:7: SIGN[pos] */
+        	        	        mSIGN(ctx , pos);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleNUMBEREx;
+        	        	        }
+
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        /* 992:7: ( SIGN[pos] )? num= DECIMAL */
+        	        {
+        	            ANTLR3_MARKER numStart952 = GETCHARINDEX();
+        	        mDECIMAL(ctx );
+        	            if  (HASEXCEPTION())
+        	            {
+        	                goto ruleNUMBEREx;
+        	            }
+
+        	            num = LEXSTATE->tokFactory->newToken(LEXSTATE->tokFactory);
+        	            num->setType(num, ANTLR3_TOKEN_INVALID);
+        	            num->setStartIndex(num, numStart952);
+        	            num->setStopIndex(num, GETCHARINDEX()-1);
+        	            num->input = INPUT;
+        	        }
+
+
+        	        {
+        	             Integer i(AntlrInput::tokenText(num));
+        	                    Rational r = pos ? i : -i;
+        	                    PARSER_STATE->d_tmp_expr = MK_CONST(r);
+        	                  
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:997:7: ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )?
+        	    {
+        	        // ../../../../../../src/parser/tptp/Tptp.g:997:7: ( SIGN[pos] )?
+        	        {
+        	            int alt11=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case '+':
+        	                case '-':
+        	                	{
+        	                		alt11=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt11)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:997:7: SIGN[pos]
+        	        	    {
+        	        	        /* 997:7: SIGN[pos] */
+        	        	        mSIGN(ctx , pos);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleNUMBEREx;
+        	        	        }
+
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        /* 997:7: ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? */
+        	        {
+        	            ANTLR3_MARKER numStart974 = GETCHARINDEX();
+        	        mDECIMAL(ctx );
+        	            if  (HASEXCEPTION())
+        	            {
+        	                goto ruleNUMBEREx;
+        	            }
+
+        	            num = LEXSTATE->tokFactory->newToken(LEXSTATE->tokFactory);
+        	            num->setType(num, ANTLR3_TOKEN_INVALID);
+        	            num->setStartIndex(num, numStart974);
+        	            num->setStopIndex(num, GETCHARINDEX()-1);
+        	            num->input = INPUT;
+        	        }
+
+
+        	        /* 997:7: ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? */
+        	        mDOT(ctx );
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleNUMBEREx;
+        	        }
+
+
+
+        	        /* 997:7: ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? */
+        	        {
+        	            ANTLR3_MARKER denStart980 = GETCHARINDEX();
+        	        mDECIMAL(ctx );
+        	            if  (HASEXCEPTION())
+        	            {
+        	                goto ruleNUMBEREx;
+        	            }
+
+        	            den = LEXSTATE->tokFactory->newToken(LEXSTATE->tokFactory);
+        	            den->setType(den, ANTLR3_TOKEN_INVALID);
+        	            den->setStartIndex(den, denStart980);
+        	            den->setStopIndex(den, GETCHARINDEX()-1);
+        	            den->input = INPUT;
+        	        }
+
+
+        	        // ../../../../../../src/parser/tptp/Tptp.g:997:46: ( EXPONENT ( SIGN[posE] )? e= DECIMAL )?
+        	        {
+        	            int alt13=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case 'E':
+        	                case 'e':
+        	                	{
+        	                		alt13=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt13)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:997:47: EXPONENT ( SIGN[posE] )? e= DECIMAL
+        	        	    {
+        	        	        /* 997:47: EXPONENT ( SIGN[posE] )? e= DECIMAL */
+        	        	        mEXPONENT(ctx );
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleNUMBEREx;
+        	        	        }
+
+
+
+        	        	        // ../../../../../../src/parser/tptp/Tptp.g:997:56: ( SIGN[posE] )?
+        	        	        {
+        	        	            int alt12=2;
+        	        	            switch ( LA(1) )
+        	        	            {
+        	        	                case '+':
+        	        	                case '-':
+        	        	                	{
+        	        	                		alt12=1;
+        	        	                	}
+        	        	                    break;
+        	        	            }
+
+        	        	            switch (alt12)
+        	        	            {
+        	        	        	case 1:
+        	        	        	    // ../../../../../../src/parser/tptp/Tptp.g:997:56: SIGN[posE]
+        	        	        	    {
+        	        	        	        /* 997:56: SIGN[posE] */
+        	        	        	        mSIGN(ctx , posE);
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto ruleNUMBEREx;
+        	        	        	        }
+
+
+
+        	        	        	    }
+        	        	        	    break;
+
+        	        	            }
+        	        	        }
+
+        	        	        /* 997:47: EXPONENT ( SIGN[posE] )? e= DECIMAL */
+        	        	        {
+        	        	            ANTLR3_MARKER eStart991 = GETCHARINDEX();
+        	        	        mDECIMAL(ctx );
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruleNUMBEREx;
+        	        	            }
+
+        	        	            e = LEXSTATE->tokFactory->newToken(LEXSTATE->tokFactory);
+        	        	            e->setType(e, ANTLR3_TOKEN_INVALID);
+        	        	            e->setStartIndex(e, eStart991);
+        	        	            e->setStopIndex(e, GETCHARINDEX()-1);
+        	        	            e->input = INPUT;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        {
+        	             std::string snum = AntlrInput::tokenText(num);
+        	                    std::string sden = AntlrInput::tokenText(den);
+        	                    /* compute the numerator */
+        	                    Integer inum(snum + sden);
+        	                    // The sign
+        	                    inum = pos ? inum : -inum;
+        	                    // The exponent
+        	                    size_t exp = (e == NULL ? 0 : AntlrInput::tokenToUnsigned(e));
+        	                    // Decimal part
+        	                    size_t dec = sden.size();
+        	                    /* multiply it by 10 raised to the exponent reduced by the
+        	                     * number of decimal place in den (dec) */
+        	                    Rational r;
+        	                    if(!posE) r = Rational(inum, Integer(10).pow(exp + dec));
+        	                    else if(exp == dec) r = Rational(inum);
+        	                    else if(exp > dec) r = Rational(inum * Integer(10).pow(exp - dec));
+        	                    else r = Rational(inum, Integer(10).pow(dec - exp));
+        	                    PARSER_STATE->d_tmp_expr = MK_CONST(r);
+        	                  
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:1017:7: ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL
+        	    {
+        	        // ../../../../../../src/parser/tptp/Tptp.g:1017:7: ( SIGN[pos] )?
+        	        {
+        	            int alt14=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case '+':
+        	                case '-':
+        	                	{
+        	                		alt14=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt14)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:1017:7: SIGN[pos]
+        	        	    {
+        	        	        /* 1017:7: SIGN[pos] */
+        	        	        mSIGN(ctx , pos);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleNUMBEREx;
+        	        	        }
+
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        /* 1017:7: ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL */
+        	        {
+        	            ANTLR3_MARKER numStart1015 = GETCHARINDEX();
+        	        mDECIMAL(ctx );
+        	            if  (HASEXCEPTION())
+        	            {
+        	                goto ruleNUMBEREx;
+        	            }
+
+        	            num = LEXSTATE->tokFactory->newToken(LEXSTATE->tokFactory);
+        	            num->setType(num, ANTLR3_TOKEN_INVALID);
+        	            num->setStartIndex(num, numStart1015);
+        	            num->setStopIndex(num, GETCHARINDEX()-1);
+        	            num->input = INPUT;
+        	        }
+
+
+        	        /* 1017:7: ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL */
+        	        mSLASH(ctx );
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleNUMBEREx;
+        	        }
+
+
+
+        	        /* 1017:7: ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL */
+        	        {
+        	            ANTLR3_MARKER denStart1021 = GETCHARINDEX();
+        	        mDECIMAL(ctx );
+        	            if  (HASEXCEPTION())
+        	            {
+        	                goto ruleNUMBEREx;
+        	            }
+
+        	            den = LEXSTATE->tokFactory->newToken(LEXSTATE->tokFactory);
+        	            den->setType(den, ANTLR3_TOKEN_INVALID);
+        	            den->setStartIndex(den, denStart1021);
+        	            den->setStopIndex(den, GETCHARINDEX()-1);
+        	            den->input = INPUT;
+        	        }
+
+
+        	        {
+        	             Integer inum(AntlrInput::tokenText(num));
+        	                    Integer iden(AntlrInput::tokenText(den));
+        	                    PARSER_STATE->d_tmp_expr = MK_CONST(Rational(pos ? inum : -inum, iden));
+        	                  
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+
+        {
+             if(PARSER_STATE->cnf || PARSER_STATE->fof) {
+                    // We're in an unsorted context, so put a conversion around it
+                    PARSER_STATE->d_tmp_expr = PARSER_STATE->convertRatToUnsorted( PARSER_STATE->d_tmp_expr );
+                  }
+                
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleNUMBEREx; /* Prevent compiler warnings */
+    ruleNUMBEREx: ;
+
+    num = NULL;
+    den = NULL;
+    e = NULL;
+
+}
+// $ANTLR end NUMBER
+
+//   Comes from: 1037:3: ( '%' (~ ( '\\n' | '\\r' ) )* | '/*' ( options {greedy=false; } : . )* '*/' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start COMMENT
+ *
+ * Looks to match the characters the constitute the token COMMENT
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mCOMMENT(pTptpLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = COMMENT;
+
+
+    {
+        //  ../../../../../../src/parser/tptp/Tptp.g:1037:3: ( '%' (~ ( '\\n' | '\\r' ) )* | '/*' ( options {greedy=false; } : . )* '*/' )
+
+        ANTLR3_UINT32 alt18;
+
+        alt18=2;
+
+        switch ( LA(1) )
+        {
+        case '%':
+        	{
+        		alt18=1;
+        	}
+            break;
+        case '/':
+        	{
+        		alt18=2;
+        	}
+            break;
+
+        default:
+            CONSTRUCTEX();
+            EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            EXCEPTION->message      = (void *)"";
+            EXCEPTION->decisionNum  = 18;
+            EXCEPTION->state        = 0;
+
+
+            goto ruleCOMMENTEx;
+
+        }
+
+        switch (alt18)
+        {
+    	case 1:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1037:5: '%' (~ ( '\\n' | '\\r' ) )*
+    	    {
+    	        MATCHC('%');
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleCOMMENTEx;
+    	        }
+
+
+    	        // ../../../../../../src/parser/tptp/Tptp.g:1037:9: (~ ( '\\n' | '\\r' ) )*
+
+    	        for (;;)
+    	        {
+    	            int alt16=2;
+    	            {
+    	               /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)
+    	                */
+    	                int LA16_0 = LA(1);
+    	                if ( (((LA16_0 >= 0x0000) && (LA16_0 <= '\t')) || ((LA16_0 >= 0x000B) && (LA16_0 <= '\f')) || ((LA16_0 >= 0x000E) && (LA16_0 <= 0xFFFF))))
+    	                {
+    	                    alt16=1;
+    	                }
+
+    	            }
+    	            switch (alt16)
+    	            {
+    	        	case 1:
+    	        	    // ../../../../../../src/parser/tptp/Tptp.g:
+    	        	    {
+    	        	        if ( ((LA(1) >= 0x0000) && (LA(1) <= '\t')) || ((LA(1) >= 0x000B) && (LA(1) <= '\f')) || ((LA(1) >= 0x000E) && (LA(1) <= 0xFFFF)) )
+    	        	        {
+    	        	            CONSUME();
+    	        	        }
+    	        	        else
+    	        	        {
+    	        	            CONSTRUCTEX();
+    	        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+    	        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+
+    	        	            LRECOVER();
+    	        	            goto ruleCOMMENTEx;
+    	        	        }
+
+
+    	        	    }
+    	        	    break;
+
+    	        	default:
+    	        	    goto loop16;	/* break out of the loop */
+    	        	    break;
+    	            }
+    	        }
+    	        loop16: ; /* Jump out to here if this rule does not match */
+
+
+    	        {
+    	             SKIP(); 
+    	        }
+
+
+    	    }
+    	    break;
+    	case 2:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1038:5: '/*' ( options {greedy=false; } : . )* '*/'
+    	    {
+    	        MATCHS(lit_51);
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleCOMMENTEx;
+    	        }
+
+
+
+
+    	        // ../../../../../../src/parser/tptp/Tptp.g:1038:11: ( options {greedy=false; } : . )*
+
+    	        for (;;)
+    	        {
+    	            int alt17=2;
+    	            {
+    	               /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)
+    	                */
+    	                int LA17_0 = LA(1);
+    	                if ( (LA17_0 == '*'))
+    	                {
+    	                    {
+    	                       /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState)
+    	                        */
+    	                        int LA17_1 = LA(2);
+    	                        if ( (LA17_1 == '/'))
+    	                        {
+    	                            alt17=2;
+    	                        }
+    	                        else if ( (((LA17_1 >= 0x0000) && (LA17_1 <= '.')) || ((LA17_1 >= '0') && (LA17_1 <= 0xFFFF))))
+    	                        {
+    	                            alt17=1;
+    	                        }
+
+    	                    }
+    	                }
+    	                else if ( (((LA17_0 >= 0x0000) && (LA17_0 <= ')')) || ((LA17_0 >= '+') && (LA17_0 <= 0xFFFF))))
+    	                {
+    	                    alt17=1;
+    	                }
+
+    	            }
+    	            switch (alt17)
+    	            {
+    	        	case 1:
+    	        	    // ../../../../../../src/parser/tptp/Tptp.g:1038:39: .
+    	        	    {
+    	        	        MATCHANY();
+    	        	        if  (HASEXCEPTION())
+    	        	        {
+    	        	            goto ruleCOMMENTEx;
+    	        	        }
+
+
+    	        	    }
+    	        	    break;
+
+    	        	default:
+    	        	    goto loop17;	/* break out of the loop */
+    	        	    break;
+    	            }
+    	        }
+    	        loop17: ; /* Jump out to here if this rule does not match */
+
+
+    	        MATCHS(lit_52);
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleCOMMENTEx;
+    	        }
+
+
+
+
+    	        {
+    	             SKIP(); 
+    	        }
+
+
+    	    }
+    	    break;
+
+        }
+    }
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleCOMMENTEx; /* Prevent compiler warnings */
+    ruleCOMMENTEx: ;
+
+}
+// $ANTLR end COMMENT
+
+/** This is the entry point in to the lexer from an object that
+ *  wants to generate the next token, such as a pCOMMON_TOKEN_STREAM
+ */
+static void
+mTokens(pTptpLexer ctx)
+{
+    {
+        //  ../../../../../../src/parser/tptp/Tptp.g:1:8: ( T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | COMMA_TOK | DOT_TOK | LPAREN_TOK | RPAREN_TOK | LBRACK_TOK | RBRACK_TOK | COLON_TOK | GREATER_TOK | OR_TOK | NOT_TOK | BANG_TOK | MARK_TOK | AND_TOK | IFF_TOK | IMPLIES_TOK | R [...]
+
+        ANTLR3_UINT32 alt19;
+
+        alt19=73;
+
+        alt19 = cdfa19.predict(ctx, RECOGNIZER, ISTREAM, &cdfa19);
+        if  (HASEXCEPTION())
+        {
+            goto ruleTokensEx;
+        }
+
+        switch (alt19)
+        {
+    	case 1:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:10: T__56
+    	    {
+    	        /* 1:10: T__56 */
+    	        mT__56(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 2:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:16: T__57
+    	    {
+    	        /* 1:16: T__57 */
+    	        mT__57(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 3:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:22: T__58
+    	    {
+    	        /* 1:22: T__58 */
+    	        mT__58(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 4:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:28: T__59
+    	    {
+    	        /* 1:28: T__59 */
+    	        mT__59(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 5:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:34: T__60
+    	    {
+    	        /* 1:34: T__60 */
+    	        mT__60(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 6:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:40: T__61
+    	    {
+    	        /* 1:40: T__61 */
+    	        mT__61(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 7:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:46: T__62
+    	    {
+    	        /* 1:46: T__62 */
+    	        mT__62(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 8:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:52: T__63
+    	    {
+    	        /* 1:52: T__63 */
+    	        mT__63(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 9:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:58: T__64
+    	    {
+    	        /* 1:58: T__64 */
+    	        mT__64(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 10:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:64: T__65
+    	    {
+    	        /* 1:64: T__65 */
+    	        mT__65(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 11:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:70: T__66
+    	    {
+    	        /* 1:70: T__66 */
+    	        mT__66(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 12:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:76: T__67
+    	    {
+    	        /* 1:76: T__67 */
+    	        mT__67(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 13:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:82: T__68
+    	    {
+    	        /* 1:82: T__68 */
+    	        mT__68(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 14:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:88: T__69
+    	    {
+    	        /* 1:88: T__69 */
+    	        mT__69(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 15:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:94: T__70
+    	    {
+    	        /* 1:94: T__70 */
+    	        mT__70(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 16:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:100: T__71
+    	    {
+    	        /* 1:100: T__71 */
+    	        mT__71(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 17:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:106: T__72
+    	    {
+    	        /* 1:106: T__72 */
+    	        mT__72(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 18:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:112: T__73
+    	    {
+    	        /* 1:112: T__73 */
+    	        mT__73(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 19:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:118: T__74
+    	    {
+    	        /* 1:118: T__74 */
+    	        mT__74(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 20:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:124: T__75
+    	    {
+    	        /* 1:124: T__75 */
+    	        mT__75(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 21:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:130: T__76
+    	    {
+    	        /* 1:130: T__76 */
+    	        mT__76(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 22:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:136: T__77
+    	    {
+    	        /* 1:136: T__77 */
+    	        mT__77(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 23:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:142: T__78
+    	    {
+    	        /* 1:142: T__78 */
+    	        mT__78(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 24:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:148: T__79
+    	    {
+    	        /* 1:148: T__79 */
+    	        mT__79(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 25:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:154: T__80
+    	    {
+    	        /* 1:154: T__80 */
+    	        mT__80(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 26:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:160: T__81
+    	    {
+    	        /* 1:160: T__81 */
+    	        mT__81(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 27:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:166: T__82
+    	    {
+    	        /* 1:166: T__82 */
+    	        mT__82(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 28:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:172: T__83
+    	    {
+    	        /* 1:172: T__83 */
+    	        mT__83(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 29:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:178: T__84
+    	    {
+    	        /* 1:178: T__84 */
+    	        mT__84(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 30:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:184: T__85
+    	    {
+    	        /* 1:184: T__85 */
+    	        mT__85(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 31:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:190: T__86
+    	    {
+    	        /* 1:190: T__86 */
+    	        mT__86(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 32:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:196: T__87
+    	    {
+    	        /* 1:196: T__87 */
+    	        mT__87(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 33:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:202: COMMA_TOK
+    	    {
+    	        /* 1:202: COMMA_TOK */
+    	        mCOMMA_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 34:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:212: DOT_TOK
+    	    {
+    	        /* 1:212: DOT_TOK */
+    	        mDOT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 35:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:220: LPAREN_TOK
+    	    {
+    	        /* 1:220: LPAREN_TOK */
+    	        mLPAREN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 36:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:231: RPAREN_TOK
+    	    {
+    	        /* 1:231: RPAREN_TOK */
+    	        mRPAREN_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 37:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:242: LBRACK_TOK
+    	    {
+    	        /* 1:242: LBRACK_TOK */
+    	        mLBRACK_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 38:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:253: RBRACK_TOK
+    	    {
+    	        /* 1:253: RBRACK_TOK */
+    	        mRBRACK_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 39:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:264: COLON_TOK
+    	    {
+    	        /* 1:264: COLON_TOK */
+    	        mCOLON_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 40:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:274: GREATER_TOK
+    	    {
+    	        /* 1:274: GREATER_TOK */
+    	        mGREATER_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 41:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:286: OR_TOK
+    	    {
+    	        /* 1:286: OR_TOK */
+    	        mOR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 42:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:293: NOT_TOK
+    	    {
+    	        /* 1:293: NOT_TOK */
+    	        mNOT_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 43:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:301: BANG_TOK
+    	    {
+    	        /* 1:301: BANG_TOK */
+    	        mBANG_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 44:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:310: MARK_TOK
+    	    {
+    	        /* 1:310: MARK_TOK */
+    	        mMARK_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 45:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:319: AND_TOK
+    	    {
+    	        /* 1:319: AND_TOK */
+    	        mAND_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 46:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:327: IFF_TOK
+    	    {
+    	        /* 1:327: IFF_TOK */
+    	        mIFF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 47:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:335: IMPLIES_TOK
+    	    {
+    	        /* 1:335: IMPLIES_TOK */
+    	        mIMPLIES_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 48:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:347: REVIMPLIES_TOK
+    	    {
+    	        /* 1:347: REVIMPLIES_TOK */
+    	        mREVIMPLIES_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 49:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:362: REVIFF_TOK
+    	    {
+    	        /* 1:362: REVIFF_TOK */
+    	        mREVIFF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 50:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:373: REVOR_TOK
+    	    {
+    	        /* 1:373: REVOR_TOK */
+    	        mREVOR_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 51:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:383: REVAND_TOK
+    	    {
+    	        /* 1:383: REVAND_TOK */
+    	        mREVAND_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 52:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:394: TIMES_TOK
+    	    {
+    	        /* 1:394: TIMES_TOK */
+    	        mTIMES_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 53:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:404: PLUS_TOK
+    	    {
+    	        /* 1:404: PLUS_TOK */
+    	        mPLUS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 54:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:413: MINUS_TOK
+    	    {
+    	        /* 1:413: MINUS_TOK */
+    	        mMINUS_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 55:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:423: TRUE_TOK
+    	    {
+    	        /* 1:423: TRUE_TOK */
+    	        mTRUE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 56:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:432: FALSE_TOK
+    	    {
+    	        /* 1:432: FALSE_TOK */
+    	        mFALSE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 57:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:442: EQUAL_TOK
+    	    {
+    	        /* 1:442: EQUAL_TOK */
+    	        mEQUAL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 58:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:452: DISEQUAL_TOK
+    	    {
+    	        /* 1:452: DISEQUAL_TOK */
+    	        mDISEQUAL_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 59:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:465: CNF_TOK
+    	    {
+    	        /* 1:465: CNF_TOK */
+    	        mCNF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 60:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:473: FOF_TOK
+    	    {
+    	        /* 1:473: FOF_TOK */
+    	        mFOF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 61:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:481: THF_TOK
+    	    {
+    	        /* 1:481: THF_TOK */
+    	        mTHF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 62:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:489: TFF_TOK
+    	    {
+    	        /* 1:489: TFF_TOK */
+    	        mTFF_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 63:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:497: TYPE_TOK
+    	    {
+    	        /* 1:497: TYPE_TOK */
+    	        mTYPE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 64:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:506: INCLUDE_TOK
+    	    {
+    	        /* 1:506: INCLUDE_TOK */
+    	        mINCLUDE_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 65:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:518: DEFINED_SYMBOL
+    	    {
+    	        /* 1:518: DEFINED_SYMBOL */
+    	        mDEFINED_SYMBOL(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 66:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:533: WHITESPACE
+    	    {
+    	        /* 1:533: WHITESPACE */
+    	        mWHITESPACE(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 67:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:544: DISTINCT_OBJECT
+    	    {
+    	        /* 1:544: DISTINCT_OBJECT */
+    	        mDISTINCT_OBJECT(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 68:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:560: LOWER_WORD_SINGLE_QUOTED
+    	    {
+    	        /* 1:560: LOWER_WORD_SINGLE_QUOTED */
+    	        mLOWER_WORD_SINGLE_QUOTED(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 69:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:585: SINGLE_QUOTED
+    	    {
+    	        /* 1:585: SINGLE_QUOTED */
+    	        mSINGLE_QUOTED(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 70:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:599: UPPER_WORD
+    	    {
+    	        /* 1:599: UPPER_WORD */
+    	        mUPPER_WORD(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 71:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:610: LOWER_WORD
+    	    {
+    	        /* 1:610: LOWER_WORD */
+    	        mLOWER_WORD(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 72:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:621: NUMBER
+    	    {
+    	        /* 1:621: NUMBER */
+    	        mNUMBER(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 73:
+    	    // ../../../../../../src/parser/tptp/Tptp.g:1:628: COMMENT
+    	    {
+    	        /* 1:628: COMMENT */
+    	        mCOMMENT(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+
+        }
+    }
+
+
+    goto ruleTokensEx; /* Prevent compiler warnings */
+ruleTokensEx: ;
+}
+
+/* =========================================================================
+ * Lexer matching rules end.
+ * =========================================================================
+ */
+/* End of Lexer code
+ * ================================================
+ * ================================================
+ */
+
+
+/* End of code
+ * =============================================================================
+ */
diff --git a/src/parser/tptp/TptpLexer.h b/src/parser/tptp/TptpLexer.h
new file mode 100644
index 0000000..0e42505
--- /dev/null
+++ b/src/parser/tptp/TptpLexer.h
@@ -0,0 +1,791 @@
+/** \file
+ *  This C header file was generated by $ANTLR version 3.4
+ *
+ *     -  From the grammar source file : ../../../../../../src/parser/tptp/Tptp.g
+ *     -                            On : 2017-03-16 01:03:04
+ *     -                 for the lexer : TptpLexerLexer
+ *
+ * Editing it, at least manually, is not wise.
+ *
+ * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws.
+ *
+ *
+ * The lexer 
+TptpLexer
+
+has the callable functions (rules) shown below,
+ * which will invoke the code for the associated rule in the source grammar
+ * assuming that the input stream is pointing to a token/text stream that could begin
+ * this rule.
+ *
+ * For instance if you call the first (topmost) rule in a parser grammar, you will
+ * get the results of a full parse, but calling a rule half way through the grammar will
+ * allow you to pass part of a full token stream to the parser, such as for syntax checking
+ * in editors and so on.
+ *
+ * The parser entry points are called indirectly (by function pointer to function) via
+ * a parser context typedef pTptpLexer, which is returned from a call to TptpLexerNew().
+ *
+ * As this is a generated lexer, it is unlikely you will call it 'manually'. However
+ * the methods are provided anyway.
+ *
+ * The methods in pTptpLexer are  as follows:
+ *
+ *  - 
+ void
+      pTptpLexer->T__56(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__57(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__58(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__59(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__60(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__61(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__62(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__63(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__64(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__65(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__66(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__67(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__68(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__69(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__70(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__71(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__72(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__73(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__74(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__75(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__76(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__77(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__78(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__79(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__80(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__81(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__82(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__83(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__84(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__85(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__86(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->T__87(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->COMMA_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->DOT_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->LPAREN_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->RPAREN_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->LBRACK_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->RBRACK_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->COLON_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->GREATER_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->OR_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->NOT_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->BANG_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->MARK_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->AND_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->IFF_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->IMPLIES_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->REVIMPLIES_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->REVIFF_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->REVOR_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->REVAND_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->TIMES_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->PLUS_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->MINUS_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->TRUE_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->FALSE_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->EQUAL_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->DISEQUAL_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->CNF_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->FOF_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->THF_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->TFF_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->TYPE_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->INCLUDE_TOK(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->DEFINED_SYMBOL(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->WHITESPACE(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->DISTINCT_OBJECT(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->DO_CHAR(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->LOWER_WORD_SINGLE_QUOTED(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->SINGLE_QUOTED(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->SQ_CHAR(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->NUMERIC(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->LOWER_ALPHA(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->UPPER_ALPHA(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->ALPHA_NUMERIC(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->UPPER_WORD(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->LOWER_WORD(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->DOT(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->EXPONENT(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->SLASH(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->DECIMAL(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->SIGN(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->NUMBER(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->COMMENT(pTptpLexer)
+ *  - 
+ void
+      pTptpLexer->Tokens(pTptpLexer)
+ *
+ * The return type for any particular rule is of course determined by the source
+ * grammar file.
+ */
+// [The "BSD license"]
+// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
+// http://www.temporal-wave.com
+// http://www.linkedin.com/in/jimidle
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+// 3. The name of the author may not be used to endorse or promote products
+//    derived from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef	_TptpLexer_H
+#define _TptpLexer_H
+/* =============================================================================
+ * Standard antlr3 C runtime definitions
+ */
+#include    <antlr3.h>
+
+/* End of standard antlr 3 runtime definitions
+ * =============================================================================
+ */
+
+
+// This should come immediately after #include <antlr3.h> in the generated
+// files. See the documentation in "parser/antlr_undefines.h" for more details.
+#include "parser/antlr_undefines.h"
+
+/** This suppresses warnings about the redefinition of token symbols between
+  * different parsers. The redefinitions should be harmless as long as no
+  * client: (a) #include's the lexer headers for two grammars AND (b) uses the
+  * token symbol definitions.
+  */
+#pragma GCC system_header
+
+/* This improves performance by ~10 percent on big inputs.
+ * This option is only valid if we know the input is ASCII (or some 8-bit encoding).
+ * If we know the input is UTF-16, we can use ANTLR3_INLINE_INPUT_UTF16.
+ * Otherwise, we have to let the lexer detect the encoding at runtime.
+ */
+#define ANTLR3_INLINE_INPUT_ASCII
+
+#include "parser/antlr_tracing.h"
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Forward declare the context typedef so that we can use it before it is
+// properly defined. Delegators and delegates (from import statements) are
+// interdependent and their context structures contain pointers to each other
+// C only allows such things to be declared if you pre-declare the typedef.
+//
+typedef struct TptpLexer_Ctx_struct TptpLexer, * pTptpLexer;
+
+
+
+#ifdef	ANTLR3_WINDOWS
+// Disable: Unreferenced parameter,							- Rules with parameters that are not used
+//          constant conditional,							- ANTLR realizes that a prediction is always true (synpred usually)
+//          initialized but unused variable					- tree rewrite variables declared but not needed
+//          Unreferenced local variable						- lexer rule declares but does not always use _type
+//          potentially unitialized variable used			- retval always returned from a rule
+//			unreferenced local function has been removed	- susually getTokenNames or freeScope, they can go without warnigns
+//
+// These are only really displayed at warning level /W4 but that is the code ideal I am aiming at
+// and the codegen must generate some of these warnings by necessity, apart from 4100, which is
+// usually generated when a parser rule is given a parameter that it does not use. Mostly though
+// this is a matter of orthogonality hence I disable that one.
+//
+#pragma warning( disable : 4100 )
+#pragma warning( disable : 4101 )
+#pragma warning( disable : 4127 )
+#pragma warning( disable : 4189 )
+#pragma warning( disable : 4505 )
+#pragma warning( disable : 4701 )
+#endif
+
+/** Context tracking structure for 
+TptpLexer
+
+ */
+struct TptpLexer_Ctx_struct
+{
+    /** Built in ANTLR3 context tracker contains all the generic elements
+     *  required for context tracking.
+     */
+    pANTLR3_LEXER    pLexer;
+
+     void
+     (*mT__56)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__57)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__58)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__59)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__60)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__61)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__62)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__63)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__64)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__65)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__66)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__67)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__68)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__69)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__70)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__71)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__72)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__73)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__74)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__75)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__76)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__77)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__78)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__79)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__80)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__81)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__82)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__83)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__84)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__85)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__86)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mT__87)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mCOMMA_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mDOT_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mLPAREN_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mRPAREN_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mLBRACK_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mRBRACK_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mCOLON_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mGREATER_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mOR_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mNOT_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mBANG_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mMARK_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mAND_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mIFF_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mIMPLIES_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mREVIMPLIES_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mREVIFF_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mREVOR_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mREVAND_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mTIMES_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mPLUS_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mMINUS_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mTRUE_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mFALSE_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mEQUAL_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mDISEQUAL_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mCNF_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mFOF_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mTHF_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mTFF_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mTYPE_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mINCLUDE_TOK)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mDEFINED_SYMBOL)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mWHITESPACE)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mDISTINCT_OBJECT)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mDO_CHAR)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mLOWER_WORD_SINGLE_QUOTED)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mSINGLE_QUOTED)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mSQ_CHAR)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mNUMERIC)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mLOWER_ALPHA)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mUPPER_ALPHA)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mALPHA_NUMERIC)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mUPPER_WORD)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mLOWER_WORD)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mDOT)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mEXPONENT)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mSLASH)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mDECIMAL)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mSIGN)	(struct TptpLexer_Ctx_struct * ctx, bool& pos);
+
+     void
+     (*mNUMBER)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mCOMMENT)	(struct TptpLexer_Ctx_struct * ctx);
+
+     void
+     (*mTokens)	(struct TptpLexer_Ctx_struct * ctx);
+    const char * (*getGrammarFileName)();
+    void            (*reset)  (struct TptpLexer_Ctx_struct * ctx);
+    void	    (*free)   (struct TptpLexer_Ctx_struct * ctx);
+};
+
+// Function protoypes for the constructor functions that external translation units
+// such as delegators and delegates may wish to call.
+//
+ANTLR3_API pTptpLexer TptpLexerNew         (
+pANTLR3_INPUT_STREAM
+ instream);
+ANTLR3_API pTptpLexer TptpLexerNewSSD      (
+pANTLR3_INPUT_STREAM
+ instream, pANTLR3_RECOGNIZER_SHARED_STATE state);
+
+/** Symbolic definitions of all the tokens that the 
+lexer
+ will work with.
+ * \{
+ *
+ * Antlr will define EOF, but we can't use that as it it is too common in
+ * in C header files and that would be confusing. There is no way to filter this out at the moment
+ * so we just undef it here for now. That isn't the value we get back from C recognizers
+ * anyway. We are looking for ANTLR3_TOKEN_EOF.
+ */
+#ifdef	EOF
+#undef	EOF
+#endif
+#ifdef	Tokens
+#undef	Tokens
+#endif
+#define EOF      -1
+#define T__56      56
+#define T__57      57
+#define T__58      58
+#define T__59      59
+#define T__60      60
+#define T__61      61
+#define T__62      62
+#define T__63      63
+#define T__64      64
+#define T__65      65
+#define T__66      66
+#define T__67      67
+#define T__68      68
+#define T__69      69
+#define T__70      70
+#define T__71      71
+#define T__72      72
+#define T__73      73
+#define T__74      74
+#define T__75      75
+#define T__76      76
+#define T__77      77
+#define T__78      78
+#define T__79      79
+#define T__80      80
+#define T__81      81
+#define T__82      82
+#define T__83      83
+#define T__84      84
+#define T__85      85
+#define T__86      86
+#define T__87      87
+#define ALPHA_NUMERIC      4
+#define AND_TOK      5
+#define BANG_TOK      6
+#define CNF_TOK      7
+#define COLON_TOK      8
+#define COMMA_TOK      9
+#define COMMENT      10
+#define DECIMAL      11
+#define DEFINED_SYMBOL      12
+#define DISEQUAL_TOK      13
+#define DISTINCT_OBJECT      14
+#define DOT      15
+#define DOT_TOK      16
+#define DO_CHAR      17
+#define EQUAL_TOK      18
+#define EXPONENT      19
+#define FALSE_TOK      20
+#define FOF_TOK      21
+#define GREATER_TOK      22
+#define IFF_TOK      23
+#define IMPLIES_TOK      24
+#define INCLUDE_TOK      25
+#define LBRACK_TOK      26
+#define LOWER_ALPHA      27
+#define LOWER_WORD      28
+#define LOWER_WORD_SINGLE_QUOTED      29
+#define LPAREN_TOK      30
+#define MARK_TOK      31
+#define MINUS_TOK      32
+#define NOT_TOK      33
+#define NUMBER      34
+#define NUMERIC      35
+#define OR_TOK      36
+#define PLUS_TOK      37
+#define RBRACK_TOK      38
+#define REVAND_TOK      39
+#define REVIFF_TOK      40
+#define REVIMPLIES_TOK      41
+#define REVOR_TOK      42
+#define RPAREN_TOK      43
+#define SIGN      44
+#define SINGLE_QUOTED      45
+#define SLASH      46
+#define SQ_CHAR      47
+#define TFF_TOK      48
+#define THF_TOK      49
+#define TIMES_TOK      50
+#define TRUE_TOK      51
+#define TYPE_TOK      52
+#define UPPER_ALPHA      53
+#define UPPER_WORD      54
+#define WHITESPACE      55
+#ifdef	EOF
+#undef	EOF
+#define	EOF	ANTLR3_TOKEN_EOF
+#endif
+
+#ifndef TOKENSOURCE
+#define TOKENSOURCE(lxr) lxr->pLexer->rec->state->tokSource
+#endif
+
+/* End of token definitions for TptpLexer
+ * =============================================================================
+ */
+/** } */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* END - Note:Keep extra line feed to satisfy UNIX systems */
diff --git a/src/parser/tptp/TptpParser.c b/src/parser/tptp/TptpParser.c
new file mode 100644
index 0000000..ea07fb1
--- /dev/null
+++ b/src/parser/tptp/TptpParser.c
@@ -0,0 +1,10667 @@
+/** \file
+ *  This C source file was generated by $ANTLR version 3.4
+ *
+ *     -  From the grammar source file : ../../../../../../src/parser/tptp/Tptp.g
+ *     -                            On : 2017-03-16 01:03:04
+ *     -                for the parser : TptpParserParser
+ *
+ * Editing it, at least manually, is not wise.
+ *
+ * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws.
+ *
+ *
+*/
+// [The "BSD license"]
+// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
+// http://www.temporal-wave.com
+// http://www.linkedin.com/in/jimidle
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+// 3. The name of the author may not be used to endorse or promote products
+//    derived from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+/* =============================================================================
+ * This is what the grammar programmer asked us to put at the top of every file.
+ */
+
+/**
+ ** This file is part of CVC4.
+ ** Copyright (c) 2009-2014  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.
+ **/
+
+/* End of Header action.
+ * =============================================================================
+ */
+
+/* -----------------------------------------
+ * Include the ANTLR3 generated header file.
+ */
+#include    "TptpParser.h"
+
+
+#include <algorithm>
+#include <iterator>
+#include <vector>
+
+#include "base/output.h"
+#include "expr/expr.h"
+#include "expr/kind.h"
+#include "expr/type.h"
+#include "parser/antlr_input.h"
+#include "parser/parser.h"
+#include "parser/tptp/tptp.h"
+#include "util/integer.h"
+#include "util/rational.h"
+
+using namespace CVC4;
+using namespace CVC4::parser;
+
+/* These need to be macros so they can refer to the PARSER macro, which will be defined
+ * by ANTLR *after* this section. (If they were functions, PARSER would be undefined.) */
+#undef PARSER_STATE
+#define PARSER_STATE ((Tptp*)PARSER->super)
+#undef EXPR_MANAGER
+#define EXPR_MANAGER PARSER_STATE->getExprManager()
+#undef MK_EXPR
+#define MK_EXPR EXPR_MANAGER->mkExpr
+#undef MK_EXPR_ASSOCIATIVE
+#define MK_EXPR_ASSOCIATIVE EXPR_MANAGER->mkAssociative
+#undef MK_CONST
+#define MK_CONST EXPR_MANAGER->mkConst
+#define UNSUPPORTED PARSER_STATE->unimplementedFeature
+
+
+/* ----------------------------------------- */
+
+
+
+
+
+/* MACROS that hide the C interface implementations from the
+ * generated code, which makes it a little more understandable to the human eye.
+ * I am very much against using C pre-processor macros for function calls and bits
+ * of code as you cannot see what is happening when single stepping in debuggers
+ * and so on. The exception (in my book at least) is for generated code, where you are
+ * not maintaining it, but may wish to read and understand it. If you single step it, you know that input()
+ * hides some indirect calls, but is always referring to the input stream. This is
+ * probably more readable than ctx->input->istream->input(snarfle0->blarg) and allows me to rejig
+ * the runtime interfaces without changing the generated code too often, without
+ * confusing the reader of the generated output, who may not wish to know the gory
+ * details of the interface inheritance.
+ */
+
+#define		CTX	ctx
+
+/* Aids in accessing scopes for grammar programmers
+ */
+#undef	SCOPE_TYPE
+#undef	SCOPE_STACK
+#undef	SCOPE_TOP
+#define	SCOPE_TYPE(scope)   pTptpParser_##scope##_SCOPE
+#define SCOPE_STACK(scope)  pTptpParser_##scope##Stack
+#define	SCOPE_TOP(scope)    ctx->pTptpParser_##scope##Top
+#define	SCOPE_SIZE(scope)		ctx->pTptpParser_##scope##Stack_limit
+#define SCOPE_INSTANCE(scope, i)	(ctx->SCOPE_STACK(scope)->get(ctx->SCOPE_STACK(scope),i))
+
+/* Macros for accessing things in the parser
+ */
+
+#undef	    PARSER
+#undef	    RECOGNIZER
+#undef	    HAVEPARSEDRULE
+#undef		MEMOIZE
+#undef	    INPUT
+#undef	    STRSTREAM
+#undef	    HASEXCEPTION
+#undef	    EXCEPTION
+#undef	    MATCHT
+#undef	    MATCHANYT
+#undef	    FOLLOWSTACK
+#undef	    FOLLOWPUSH
+#undef	    FOLLOWPOP
+#undef	    PRECOVER
+#undef	    PREPORTERROR
+#undef	    LA
+#undef	    LT
+#undef	    CONSTRUCTEX
+#undef	    CONSUME
+#undef	    MARK
+#undef	    REWIND
+#undef	    REWINDLAST
+#undef	    PERRORRECOVERY
+#undef	    HASFAILED
+#undef	    FAILEDFLAG
+#undef	    RECOVERFROMMISMATCHEDSET
+#undef	    RECOVERFROMMISMATCHEDELEMENT
+#undef		INDEX
+#undef      ADAPTOR
+#undef		SEEK
+#undef	    RULEMEMO
+#undef		DBG
+
+#define	    PARSER				ctx->pParser
+#define	    RECOGNIZER				PARSER->rec
+#define	    PSRSTATE				RECOGNIZER->state
+#define	    HAVEPARSEDRULE(r)			RECOGNIZER->alreadyParsedRule(RECOGNIZER, r)
+#define	    MEMOIZE(ri,si)			RECOGNIZER->memoize(RECOGNIZER, ri, si)
+#define	    INPUT				PARSER->tstream
+#define	    STRSTREAM				INPUT
+#define	    ISTREAM				INPUT->istream
+#define	    INDEX()				ISTREAM->index(INPUT->istream)
+#define	    HASEXCEPTION()			(PSRSTATE->error == ANTLR3_TRUE)
+#define	    EXCEPTION				PSRSTATE->exception
+#define	    MATCHT(t, fs)			RECOGNIZER->match(RECOGNIZER, t, fs)
+#define	    MATCHANYT()				RECOGNIZER->matchAny(RECOGNIZER)
+#define	    FOLLOWSTACK				PSRSTATE->following
+#ifdef  SKIP_FOLLOW_SETS
+#define	    FOLLOWPUSH(x)
+#define	    FOLLOWPOP()
+#else
+#define	    FOLLOWPUSH(x)			FOLLOWSTACK->push(FOLLOWSTACK, ((void *)(&(x))), NULL)
+#define	    FOLLOWPOP()				FOLLOWSTACK->pop(FOLLOWSTACK)
+#endif
+#define	    PRECOVER()				RECOGNIZER->recover(RECOGNIZER)
+#define	    PREPORTERROR()			RECOGNIZER->reportError(RECOGNIZER)
+#define	    LA(n)				INPUT->istream->_LA(ISTREAM, n)
+#define	    LT(n)				INPUT->_LT(INPUT, n)
+#define	    CONSTRUCTEX()			RECOGNIZER->exConstruct(RECOGNIZER)
+#define	    CONSUME()				ISTREAM->consume(ISTREAM)
+#define	    MARK()				ISTREAM->mark(ISTREAM)
+#define	    REWIND(m)				ISTREAM->rewind(ISTREAM, m)
+#define	    REWINDLAST()			ISTREAM->rewindLast(ISTREAM)
+#define	    SEEK(n)				ISTREAM->seek(ISTREAM, n)
+#define	    PERRORRECOVERY			PSRSTATE->errorRecovery
+#define	    FAILEDFLAG				PSRSTATE->failed
+#define	    HASFAILED()				(FAILEDFLAG == ANTLR3_TRUE)
+#define	    BACKTRACKING			PSRSTATE->backtracking
+#define	    RECOVERFROMMISMATCHEDSET(s)		RECOGNIZER->recoverFromMismatchedSet(RECOGNIZER, s)
+#define	    RECOVERFROMMISMATCHEDELEMENT(e)	RECOGNIZER->recoverFromMismatchedElement(RECOGNIZER, s)
+#define     ADAPTOR                         ctx->adaptor
+#define		RULEMEMO						PSRSTATE->ruleMemo
+#define		DBG								RECOGNIZER->debugger
+
+
+#define		TOKTEXT(tok, txt)				tok, (pANTLR3_UINT8)txt
+
+/* The 4 tokens defined below may well clash with your own #defines or token types. If so
+ * then for the present you must use different names for your defines as these are hard coded
+ * in the code generator. It would be better not to use such names internally, and maybe
+ * we can change this in a forthcoming release. I deliberately do not #undef these
+ * here as this will at least give you a redefined error somewhere if they clash.
+ */
+#define	    UP	    ANTLR3_TOKEN_UP
+#define	    DOWN    ANTLR3_TOKEN_DOWN
+#define	    EOR	    ANTLR3_TOKEN_EOR
+#define	    INVALID ANTLR3_TOKEN_INVALID
+
+
+/* =============================================================================
+ * Functions to create and destroy scopes. First come the rule scopes, followed
+ * by the global declared scopes.
+ */
+
+
+
+/* ============================================================================= */
+
+/* =============================================================================
+ * Start of recognizer
+ */
+
+
+/** \brief Table of all token names in symbolic order, mainly used for
+ *         error reporting.
+ */
+pANTLR3_UINT8   TptpParserTokenNames[84+4]
+     = {
+        (pANTLR3_UINT8) "<invalid>",       /* String to print to indicate an invalid token */
+        (pANTLR3_UINT8) "<EOR>",
+        (pANTLR3_UINT8) "<DOWN>",
+        (pANTLR3_UINT8) "<UP>",
+        (pANTLR3_UINT8) "ALPHA_NUMERIC",
+        (pANTLR3_UINT8) "AND_TOK",
+        (pANTLR3_UINT8) "BANG_TOK",
+        (pANTLR3_UINT8) "CNF_TOK",
+        (pANTLR3_UINT8) "COLON_TOK",
+        (pANTLR3_UINT8) "COMMA_TOK",
+        (pANTLR3_UINT8) "COMMENT",
+        (pANTLR3_UINT8) "DECIMAL",
+        (pANTLR3_UINT8) "DEFINED_SYMBOL",
+        (pANTLR3_UINT8) "DISEQUAL_TOK",
+        (pANTLR3_UINT8) "DISTINCT_OBJECT",
+        (pANTLR3_UINT8) "DOT",
+        (pANTLR3_UINT8) "DOT_TOK",
+        (pANTLR3_UINT8) "DO_CHAR",
+        (pANTLR3_UINT8) "EQUAL_TOK",
+        (pANTLR3_UINT8) "EXPONENT",
+        (pANTLR3_UINT8) "FALSE_TOK",
+        (pANTLR3_UINT8) "FOF_TOK",
+        (pANTLR3_UINT8) "GREATER_TOK",
+        (pANTLR3_UINT8) "IFF_TOK",
+        (pANTLR3_UINT8) "IMPLIES_TOK",
+        (pANTLR3_UINT8) "INCLUDE_TOK",
+        (pANTLR3_UINT8) "LBRACK_TOK",
+        (pANTLR3_UINT8) "LOWER_ALPHA",
+        (pANTLR3_UINT8) "LOWER_WORD",
+        (pANTLR3_UINT8) "LOWER_WORD_SINGLE_QUOTED",
+        (pANTLR3_UINT8) "LPAREN_TOK",
+        (pANTLR3_UINT8) "MARK_TOK",
+        (pANTLR3_UINT8) "MINUS_TOK",
+        (pANTLR3_UINT8) "NOT_TOK",
+        (pANTLR3_UINT8) "NUMBER",
+        (pANTLR3_UINT8) "NUMERIC",
+        (pANTLR3_UINT8) "OR_TOK",
+        (pANTLR3_UINT8) "PLUS_TOK",
+        (pANTLR3_UINT8) "RBRACK_TOK",
+        (pANTLR3_UINT8) "REVAND_TOK",
+        (pANTLR3_UINT8) "REVIFF_TOK",
+        (pANTLR3_UINT8) "REVIMPLIES_TOK",
+        (pANTLR3_UINT8) "REVOR_TOK",
+        (pANTLR3_UINT8) "RPAREN_TOK",
+        (pANTLR3_UINT8) "SIGN",
+        (pANTLR3_UINT8) "SINGLE_QUOTED",
+        (pANTLR3_UINT8) "SLASH",
+        (pANTLR3_UINT8) "SQ_CHAR",
+        (pANTLR3_UINT8) "TFF_TOK",
+        (pANTLR3_UINT8) "THF_TOK",
+        (pANTLR3_UINT8) "TIMES_TOK",
+        (pANTLR3_UINT8) "TRUE_TOK",
+        (pANTLR3_UINT8) "TYPE_TOK",
+        (pANTLR3_UINT8) "UPPER_ALPHA",
+        (pANTLR3_UINT8) "UPPER_WORD",
+        (pANTLR3_UINT8) "WHITESPACE",
+        (pANTLR3_UINT8) "'$ceiling'",
+        (pANTLR3_UINT8) "'$difference'",
+        (pANTLR3_UINT8) "'$distinct'",
+        (pANTLR3_UINT8) "'$floor'",
+        (pANTLR3_UINT8) "'$greater'",
+        (pANTLR3_UINT8) "'$greatereq'",
+        (pANTLR3_UINT8) "'$is_int'",
+        (pANTLR3_UINT8) "'$is_rat'",
+        (pANTLR3_UINT8) "'$ite_f'",
+        (pANTLR3_UINT8) "'$ite_t'",
+        (pANTLR3_UINT8) "'$less'",
+        (pANTLR3_UINT8) "'$lesseq'",
+        (pANTLR3_UINT8) "'$let_ff'",
+        (pANTLR3_UINT8) "'$let_ft'",
+        (pANTLR3_UINT8) "'$let_tf'",
+        (pANTLR3_UINT8) "'$let_tt'",
+        (pANTLR3_UINT8) "'$product'",
+        (pANTLR3_UINT8) "'$quotient'",
+        (pANTLR3_UINT8) "'$quotient_e'",
+        (pANTLR3_UINT8) "'$quotient_f'",
+        (pANTLR3_UINT8) "'$quotient_t'",
+        (pANTLR3_UINT8) "'$remainder_e'",
+        (pANTLR3_UINT8) "'$remainder_f'",
+        (pANTLR3_UINT8) "'$remainder_t'",
+        (pANTLR3_UINT8) "'$round'",
+        (pANTLR3_UINT8) "'$sum'",
+        (pANTLR3_UINT8) "'$tType'",
+        (pANTLR3_UINT8) "'$to_int'",
+        (pANTLR3_UINT8) "'$to_rat'",
+        (pANTLR3_UINT8) "'$to_real'",
+        (pANTLR3_UINT8) "'$truncate'",
+        (pANTLR3_UINT8) "'$uminus'"
+       };
+
+
+
+// Forward declare the locally static matching functions we have generated.
+//
+static 
+ CVC4::parser::tptp::myExpr
+	parseExpr    (pTptpParser ctx);
+static 
+ CVC4::Command*
+	parseCommand    (pTptpParser ctx);
+static 
+ void
+	formulaRole    (pTptpParser ctx, CVC4::parser::Tptp::FormulaRole& role);
+static 
+ void
+	cnfFormula    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	cnfDisjunction    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	cnfLiteral    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	atomicFormula    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	definedProp    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	definedPred    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	definedFun    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	equalOp    (pTptpParser ctx, bool& equal);
+static 
+ void
+	term    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	letTerm    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	simpleTerm    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	functionTerm    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	conditionalTerm    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	plainTerm    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	arguments    (pTptpParser ctx, std::vector<CVC4::Expr>& args);
+static 
+ void
+	variable    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	fofFormula    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	fofLogicFormula    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	fofUnitaryFormula    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	bindvariable    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	fofBinaryNonAssoc    (pTptpParser ctx, CVC4::parser::tptp::NonAssoc& na);
+static 
+ void
+	folQuantifier    (pTptpParser ctx, CVC4::Kind& kind);
+static 
+ void
+	tffFormula    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	tffTypedAtom    (pTptpParser ctx, CVC4::Command*& cmd);
+static 
+ void
+	tffLogicFormula    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	tffUnitaryFormula    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	tffLetTermDefn    (pTptpParser ctx, CVC4::Expr& lhs, CVC4::Expr& rhs);
+static 
+ void
+	tffLetTermBinding    (pTptpParser ctx, std::vector<CVC4::Expr>& bvlist, CVC4::Expr& lhs, CVC4::Expr& rhs);
+static 
+ void
+	tffLetFormulaDefn    (pTptpParser ctx, CVC4::Expr& lhs, CVC4::Expr& rhs);
+static 
+ void
+	tffLetFormulaBinding    (pTptpParser ctx, std::vector<CVC4::Expr>& bvlist, CVC4::Expr& lhs, CVC4::Expr& rhs);
+static 
+ void
+	tffbindvariable    (pTptpParser ctx, CVC4::Expr& expr);
+static 
+ void
+	tffVariableList    (pTptpParser ctx, std::vector<CVC4::Expr>& bvlist);
+static 
+ void
+	parseType    (pTptpParser ctx, CVC4::Type& type);
+static 
+ void
+	simpleType    (pTptpParser ctx, CVC4::Type& type);
+static 
+ void
+	anything    (pTptpParser ctx);
+static 
+ void
+	unquotedFileName    (pTptpParser ctx, std::string& name);
+static 
+ void
+	nameN    (pTptpParser ctx, std::string& name);
+static 
+ void
+	atomicWord    (pTptpParser ctx, std::string& name);
+static void	TptpParserFree(pTptpParser ctx);
+static void     TptpParserReset (pTptpParser ctx);
+
+/* For use in tree output where we are accumulating rule labels via label += ruleRef
+ * we need a function that knows how to free a return scope when the list is destroyed.
+ * We cannot just use ANTLR3_FREE because in debug tracking mode, this is a macro.
+ */
+static	void ANTLR3_CDECL freeScope(void * scope)
+{
+    ANTLR3_FREE(scope);
+}
+
+/** \brief Name of the grammar file that generated this code
+ */
+static const char fileName[] = "../../../../../../src/parser/tptp/Tptp.g";
+
+/** \brief Return the name of the grammar file that generated this code.
+ */
+static const char * getGrammarFileName()
+{
+	return fileName;
+}
+/** \brief Create a new TptpParser parser and return a context for it.
+ *
+ * \param[in] instream Pointer to an input stream interface.
+ *
+ * \return Pointer to new parser context upon success.
+ */
+ANTLR3_API pTptpParser
+TptpParserNew   (pANTLR3_COMMON_TOKEN_STREAM instream)
+{
+	// See if we can create a new parser with the standard constructor
+	//
+	return TptpParserNewSSD(instream, NULL);
+}
+
+/** \brief Create a new TptpParser parser and return a context for it.
+ *
+ * \param[in] instream Pointer to an input stream interface.
+ *
+ * \return Pointer to new parser context upon success.
+ */
+ANTLR3_API pTptpParser
+TptpParserNewSSD   (pANTLR3_COMMON_TOKEN_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state)
+{
+    pTptpParser ctx;	    /* Context structure we will build and return   */
+
+    ctx	= (pTptpParser) ANTLR3_CALLOC(1, sizeof(TptpParser));
+
+    if	(ctx == NULL)
+    {
+		// Failed to allocate memory for parser context
+		//
+        return  NULL;
+    }
+
+    /* -------------------------------------------------------------------
+     * Memory for basic structure is allocated, now to fill in
+     * the base ANTLR3 structures. We initialize the function pointers
+     * for the standard ANTLR3 parser function set, but upon return
+     * from here, the programmer may set the pointers to provide custom
+     * implementations of each function.
+     *
+     * We don't use the macros defined in TptpParser.h here, in order that you can get a sense
+     * of what goes where.
+     */
+
+    /* Create a base parser/recognizer, using the supplied token stream
+     */
+    ctx->pParser	    = antlr3ParserNewStream(ANTLR3_SIZE_HINT, instream->tstream, state);
+    /* Install the implementation of our TptpParser interface
+     */
+    ctx->parseExpr	= parseExpr;
+    ctx->parseCommand	= parseCommand;
+    ctx->formulaRole	= formulaRole;
+    ctx->cnfFormula	= cnfFormula;
+    ctx->cnfDisjunction	= cnfDisjunction;
+    ctx->cnfLiteral	= cnfLiteral;
+    ctx->atomicFormula	= atomicFormula;
+    ctx->definedProp	= definedProp;
+    ctx->definedPred	= definedPred;
+    ctx->definedFun	= definedFun;
+    ctx->equalOp	= equalOp;
+    ctx->term	= term;
+    ctx->letTerm	= letTerm;
+    ctx->simpleTerm	= simpleTerm;
+    ctx->functionTerm	= functionTerm;
+    ctx->conditionalTerm	= conditionalTerm;
+    ctx->plainTerm	= plainTerm;
+    ctx->arguments	= arguments;
+    ctx->variable	= variable;
+    ctx->fofFormula	= fofFormula;
+    ctx->fofLogicFormula	= fofLogicFormula;
+    ctx->fofUnitaryFormula	= fofUnitaryFormula;
+    ctx->bindvariable	= bindvariable;
+    ctx->fofBinaryNonAssoc	= fofBinaryNonAssoc;
+    ctx->folQuantifier	= folQuantifier;
+    ctx->tffFormula	= tffFormula;
+    ctx->tffTypedAtom	= tffTypedAtom;
+    ctx->tffLogicFormula	= tffLogicFormula;
+    ctx->tffUnitaryFormula	= tffUnitaryFormula;
+    ctx->tffLetTermDefn	= tffLetTermDefn;
+    ctx->tffLetTermBinding	= tffLetTermBinding;
+    ctx->tffLetFormulaDefn	= tffLetFormulaDefn;
+    ctx->tffLetFormulaBinding	= tffLetFormulaBinding;
+    ctx->tffbindvariable	= tffbindvariable;
+    ctx->tffVariableList	= tffVariableList;
+    ctx->parseType	= parseType;
+    ctx->simpleType	= simpleType;
+    ctx->anything	= anything;
+    ctx->unquotedFileName	= unquotedFileName;
+    ctx->nameN	= nameN;
+    ctx->atomicWord	= atomicWord;
+    ctx->free			= TptpParserFree;
+    ctx->reset			= TptpParserReset;
+    ctx->getGrammarFileName	= getGrammarFileName;
+
+    /* Install the scope pushing methods.
+     */
+
+    /* Install the token table
+     */
+    PSRSTATE->tokenNames   = TptpParserTokenNames;
+
+
+    /* Return the newly built parser to the caller
+     */
+    return  ctx;
+}
+
+static void
+TptpParserReset (pTptpParser ctx)
+{
+    RECOGNIZER->reset(RECOGNIZER);
+}
+
+/** Free the parser resources
+ */
+ static void
+ TptpParserFree(pTptpParser ctx)
+ {
+    /* Free any scope memory
+     */
+
+	// Free this parser
+	//
+    ctx->pParser->free(ctx->pParser);
+
+
+    ANTLR3_FREE(ctx);
+
+    /* Everything is released, so we can return
+     */
+    return;
+ }
+
+/** Return token names used by this 
+parser
+
+ *
+ * The returned pointer is used as an index into the token names table (using the token
+ * number as the index).
+ *
+ * \return Pointer to first char * in the table.
+ */
+static pANTLR3_UINT8    *getTokenNames()
+{
+        return TptpParserTokenNames;
+}
+
+
+/* Declare the bitsets
+ */
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_cnfFormula_in_parseExpr114  */
+static	ANTLR3_BITWORD FOLLOW_cnfFormula_in_parseExpr114_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_cnfFormula_in_parseExpr114	= { FOLLOW_cnfFormula_in_parseExpr114_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EOF_in_parseExpr121  */
+static	ANTLR3_BITWORD FOLLOW_EOF_in_parseExpr121_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_parseExpr121	= { FOLLOW_EOF_in_parseExpr121_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CNF_TOK_in_parseCommand146  */
+static	ANTLR3_BITWORD FOLLOW_CNF_TOK_in_parseCommand146_bits[]	= { ANTLR3_UINT64_LIT(0x0000000040000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_CNF_TOK_in_parseCommand146	= { FOLLOW_CNF_TOK_in_parseCommand146_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_parseCommand148  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_parseCommand148_bits[]	= { ANTLR3_UINT64_LIT(0x0013200432200080) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_parseCommand148	= { FOLLOW_LPAREN_TOK_in_parseCommand148_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_nameN_in_parseCommand150  */
+static	ANTLR3_BITWORD FOLLOW_nameN_in_parseCommand150_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_nameN_in_parseCommand150	= { FOLLOW_nameN_in_parseCommand150_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_parseCommand153  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_parseCommand153_bits[]	= { ANTLR3_UINT64_LIT(0x0000000010000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_parseCommand153	= { FOLLOW_COMMA_TOK_in_parseCommand153_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formulaRole_in_parseCommand155  */
+static	ANTLR3_BITWORD FOLLOW_formulaRole_in_parseCommand155_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_formulaRole_in_parseCommand155	= { FOLLOW_formulaRole_in_parseCommand155_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_parseCommand158  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_parseCommand158_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B200672304080), ANTLR3_UINT64_LIT(0x0000000000FBFFAE) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_parseCommand158	= { FOLLOW_COMMA_TOK_in_parseCommand158_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_cnfFormula_in_parseCommand168  */
+static	ANTLR3_BITWORD FOLLOW_cnfFormula_in_parseCommand168_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_cnfFormula_in_parseCommand168	= { FOLLOW_cnfFormula_in_parseCommand168_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_parseCommand180  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_parseCommand180_bits[]	= { ANTLR3_UINT64_LIT(0x005F2FB7F7B573E0) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_parseCommand180	= { FOLLOW_COMMA_TOK_in_parseCommand180_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_anything_in_parseCommand182  */
+static	ANTLR3_BITWORD FOLLOW_anything_in_parseCommand182_bits[]	= { ANTLR3_UINT64_LIT(0x005F2FB7F7B573E0) };
+static  ANTLR3_BITSET_LIST FOLLOW_anything_in_parseCommand182	= { FOLLOW_anything_in_parseCommand182_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_parseCommand187  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_parseCommand187_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000010000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_parseCommand187	= { FOLLOW_RPAREN_TOK_in_parseCommand187_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_TOK_in_parseCommand189  */
+static	ANTLR3_BITWORD FOLLOW_DOT_TOK_in_parseCommand189_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOT_TOK_in_parseCommand189	= { FOLLOW_DOT_TOK_in_parseCommand189_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FOF_TOK_in_parseCommand201  */
+static	ANTLR3_BITWORD FOLLOW_FOF_TOK_in_parseCommand201_bits[]	= { ANTLR3_UINT64_LIT(0x0000000040000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FOF_TOK_in_parseCommand201	= { FOLLOW_FOF_TOK_in_parseCommand201_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_parseCommand203  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_parseCommand203_bits[]	= { ANTLR3_UINT64_LIT(0x0013200432200080) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_parseCommand203	= { FOLLOW_LPAREN_TOK_in_parseCommand203_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_nameN_in_parseCommand205  */
+static	ANTLR3_BITWORD FOLLOW_nameN_in_parseCommand205_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_nameN_in_parseCommand205	= { FOLLOW_nameN_in_parseCommand205_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_parseCommand208  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_parseCommand208_bits[]	= { ANTLR3_UINT64_LIT(0x0000000010000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_parseCommand208	= { FOLLOW_COMMA_TOK_in_parseCommand208_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formulaRole_in_parseCommand210  */
+static	ANTLR3_BITWORD FOLLOW_formulaRole_in_parseCommand210_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_formulaRole_in_parseCommand210	= { FOLLOW_formulaRole_in_parseCommand210_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_parseCommand213  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_parseCommand213_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFAE) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_parseCommand213	= { FOLLOW_COMMA_TOK_in_parseCommand213_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_fofFormula_in_parseCommand225  */
+static	ANTLR3_BITWORD FOLLOW_fofFormula_in_parseCommand225_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_fofFormula_in_parseCommand225	= { FOLLOW_fofFormula_in_parseCommand225_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_parseCommand229  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_parseCommand229_bits[]	= { ANTLR3_UINT64_LIT(0x005F2FB7F7B573E0) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_parseCommand229	= { FOLLOW_COMMA_TOK_in_parseCommand229_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_anything_in_parseCommand231  */
+static	ANTLR3_BITWORD FOLLOW_anything_in_parseCommand231_bits[]	= { ANTLR3_UINT64_LIT(0x005F2FB7F7B573E0) };
+static  ANTLR3_BITSET_LIST FOLLOW_anything_in_parseCommand231	= { FOLLOW_anything_in_parseCommand231_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_parseCommand236  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_parseCommand236_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000010000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_parseCommand236	= { FOLLOW_RPAREN_TOK_in_parseCommand236_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_TOK_in_parseCommand238  */
+static	ANTLR3_BITWORD FOLLOW_DOT_TOK_in_parseCommand238_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOT_TOK_in_parseCommand238	= { FOLLOW_DOT_TOK_in_parseCommand238_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TFF_TOK_in_parseCommand250  */
+static	ANTLR3_BITWORD FOLLOW_TFF_TOK_in_parseCommand250_bits[]	= { ANTLR3_UINT64_LIT(0x0000000040000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_TFF_TOK_in_parseCommand250	= { FOLLOW_TFF_TOK_in_parseCommand250_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_parseCommand252  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_parseCommand252_bits[]	= { ANTLR3_UINT64_LIT(0x0013200432200080) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_parseCommand252	= { FOLLOW_LPAREN_TOK_in_parseCommand252_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_nameN_in_parseCommand254  */
+static	ANTLR3_BITWORD FOLLOW_nameN_in_parseCommand254_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_nameN_in_parseCommand254	= { FOLLOW_nameN_in_parseCommand254_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_parseCommand257  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_parseCommand257_bits[]	= { ANTLR3_UINT64_LIT(0x0010000010000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_parseCommand257	= { FOLLOW_COMMA_TOK_in_parseCommand257_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TYPE_TOK_in_parseCommand265  */
+static	ANTLR3_BITWORD FOLLOW_TYPE_TOK_in_parseCommand265_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_TYPE_TOK_in_parseCommand265	= { FOLLOW_TYPE_TOK_in_parseCommand265_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_parseCommand267  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_parseCommand267_bits[]	= { ANTLR3_UINT64_LIT(0x0013200472200080) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_parseCommand267	= { FOLLOW_COMMA_TOK_in_parseCommand267_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffTypedAtom_in_parseCommand269  */
+static	ANTLR3_BITWORD FOLLOW_tffTypedAtom_in_parseCommand269_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffTypedAtom_in_parseCommand269	= { FOLLOW_tffTypedAtom_in_parseCommand269_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formulaRole_in_parseCommand278  */
+static	ANTLR3_BITWORD FOLLOW_formulaRole_in_parseCommand278_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_formulaRole_in_parseCommand278	= { FOLLOW_formulaRole_in_parseCommand278_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_parseCommand281  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_parseCommand281_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFFF) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_parseCommand281	= { FOLLOW_COMMA_TOK_in_parseCommand281_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffFormula_in_parseCommand297  */
+static	ANTLR3_BITWORD FOLLOW_tffFormula_in_parseCommand297_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffFormula_in_parseCommand297	= { FOLLOW_tffFormula_in_parseCommand297_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_parseCommand301  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_parseCommand301_bits[]	= { ANTLR3_UINT64_LIT(0x005F2FB7F7B573E0) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_parseCommand301	= { FOLLOW_COMMA_TOK_in_parseCommand301_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_anything_in_parseCommand303  */
+static	ANTLR3_BITWORD FOLLOW_anything_in_parseCommand303_bits[]	= { ANTLR3_UINT64_LIT(0x005F2FB7F7B573E0) };
+static  ANTLR3_BITSET_LIST FOLLOW_anything_in_parseCommand303	= { FOLLOW_anything_in_parseCommand303_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_parseCommand322  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_parseCommand322_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000010000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_parseCommand322	= { FOLLOW_RPAREN_TOK_in_parseCommand322_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_TOK_in_parseCommand324  */
+static	ANTLR3_BITWORD FOLLOW_DOT_TOK_in_parseCommand324_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOT_TOK_in_parseCommand324	= { FOLLOW_DOT_TOK_in_parseCommand324_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INCLUDE_TOK_in_parseCommand330  */
+static	ANTLR3_BITWORD FOLLOW_INCLUDE_TOK_in_parseCommand330_bits[]	= { ANTLR3_UINT64_LIT(0x0000000040000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INCLUDE_TOK_in_parseCommand330	= { FOLLOW_INCLUDE_TOK_in_parseCommand330_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_parseCommand332  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_parseCommand332_bits[]	= { ANTLR3_UINT64_LIT(0x0000200020000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_parseCommand332	= { FOLLOW_LPAREN_TOK_in_parseCommand332_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_unquotedFileName_in_parseCommand334  */
+static	ANTLR3_BITWORD FOLLOW_unquotedFileName_in_parseCommand334_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_unquotedFileName_in_parseCommand334	= { FOLLOW_unquotedFileName_in_parseCommand334_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_parseCommand343  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_parseCommand343_bits[]	= { ANTLR3_UINT64_LIT(0x0000000004000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_parseCommand343	= { FOLLOW_COMMA_TOK_in_parseCommand343_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACK_TOK_in_parseCommand345  */
+static	ANTLR3_BITWORD FOLLOW_LBRACK_TOK_in_parseCommand345_bits[]	= { ANTLR3_UINT64_LIT(0x0013200432200080) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACK_TOK_in_parseCommand345	= { FOLLOW_LBRACK_TOK_in_parseCommand345_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_nameN_in_parseCommand347  */
+static	ANTLR3_BITWORD FOLLOW_nameN_in_parseCommand347_bits[]	= { ANTLR3_UINT64_LIT(0x0000004000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_nameN_in_parseCommand347	= { FOLLOW_nameN_in_parseCommand347_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_parseCommand358  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_parseCommand358_bits[]	= { ANTLR3_UINT64_LIT(0x0013200432200080) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_parseCommand358	= { FOLLOW_COMMA_TOK_in_parseCommand358_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_nameN_in_parseCommand360  */
+static	ANTLR3_BITWORD FOLLOW_nameN_in_parseCommand360_bits[]	= { ANTLR3_UINT64_LIT(0x0000004000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_nameN_in_parseCommand360	= { FOLLOW_nameN_in_parseCommand360_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACK_TOK_in_parseCommand366  */
+static	ANTLR3_BITWORD FOLLOW_RBRACK_TOK_in_parseCommand366_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACK_TOK_in_parseCommand366	= { FOLLOW_RBRACK_TOK_in_parseCommand366_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_parseCommand375  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_parseCommand375_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000010000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_parseCommand375	= { FOLLOW_RPAREN_TOK_in_parseCommand375_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_TOK_in_parseCommand377  */
+static	ANTLR3_BITWORD FOLLOW_DOT_TOK_in_parseCommand377_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOT_TOK_in_parseCommand377	= { FOLLOW_DOT_TOK_in_parseCommand377_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EOF_in_parseCommand389  */
+static	ANTLR3_BITWORD FOLLOW_EOF_in_parseCommand389_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_parseCommand389	= { FOLLOW_EOF_in_parseCommand389_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LOWER_WORD_in_formulaRole411  */
+static	ANTLR3_BITWORD FOLLOW_LOWER_WORD_in_formulaRole411_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_LOWER_WORD_in_formulaRole411	= { FOLLOW_LOWER_WORD_in_formulaRole411_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_cnfFormula439  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_cnfFormula439_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B200632304080), ANTLR3_UINT64_LIT(0x0000000000FBFFAE) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_cnfFormula439	= { FOLLOW_LPAREN_TOK_in_cnfFormula439_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_cnfDisjunction_in_cnfFormula441  */
+static	ANTLR3_BITWORD FOLLOW_cnfDisjunction_in_cnfFormula441_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_cnfDisjunction_in_cnfFormula441	= { FOLLOW_cnfDisjunction_in_cnfFormula441_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_cnfFormula444  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_cnfFormula444_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_cnfFormula444	= { FOLLOW_RPAREN_TOK_in_cnfFormula444_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_cnfDisjunction_in_cnfFormula450  */
+static	ANTLR3_BITWORD FOLLOW_cnfDisjunction_in_cnfFormula450_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_cnfDisjunction_in_cnfFormula450	= { FOLLOW_cnfDisjunction_in_cnfFormula450_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_cnfLiteral_in_cnfDisjunction469  */
+static	ANTLR3_BITWORD FOLLOW_cnfLiteral_in_cnfDisjunction469_bits[]	= { ANTLR3_UINT64_LIT(0x0000001000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_cnfLiteral_in_cnfDisjunction469	= { FOLLOW_cnfLiteral_in_cnfDisjunction469_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_OR_TOK_in_cnfDisjunction480  */
+static	ANTLR3_BITWORD FOLLOW_OR_TOK_in_cnfDisjunction480_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B200632304080), ANTLR3_UINT64_LIT(0x0000000000FBFFAE) };
+static  ANTLR3_BITSET_LIST FOLLOW_OR_TOK_in_cnfDisjunction480	= { FOLLOW_OR_TOK_in_cnfDisjunction480_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_cnfLiteral_in_cnfDisjunction482  */
+static	ANTLR3_BITWORD FOLLOW_cnfLiteral_in_cnfDisjunction482_bits[]	= { ANTLR3_UINT64_LIT(0x0000001000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_cnfLiteral_in_cnfDisjunction482	= { FOLLOW_cnfLiteral_in_cnfDisjunction482_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_atomicFormula_in_cnfLiteral506  */
+static	ANTLR3_BITWORD FOLLOW_atomicFormula_in_cnfLiteral506_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_atomicFormula_in_cnfLiteral506	= { FOLLOW_atomicFormula_in_cnfLiteral506_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NOT_TOK_in_cnfLiteral513  */
+static	ANTLR3_BITWORD FOLLOW_NOT_TOK_in_cnfLiteral513_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B200432304080), ANTLR3_UINT64_LIT(0x0000000000FBFFAE) };
+static  ANTLR3_BITSET_LIST FOLLOW_NOT_TOK_in_cnfLiteral513	= { FOLLOW_NOT_TOK_in_cnfLiteral513_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_atomicFormula_in_cnfLiteral515  */
+static	ANTLR3_BITWORD FOLLOW_atomicFormula_in_cnfLiteral515_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_atomicFormula_in_cnfLiteral515	= { FOLLOW_atomicFormula_in_cnfLiteral515_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_atomicWord_in_atomicFormula538  */
+static	ANTLR3_BITWORD FOLLOW_atomicWord_in_atomicFormula538_bits[]	= { ANTLR3_UINT64_LIT(0x0000000040042002) };
+static  ANTLR3_BITSET_LIST FOLLOW_atomicWord_in_atomicFormula538	= { FOLLOW_atomicWord_in_atomicFormula538_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_atomicFormula542  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_atomicFormula542_bits[]	= { ANTLR3_UINT64_LIT(0x0B53200432204080), ANTLR3_UINT64_LIT(0x0000000000FBFFA2) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_atomicFormula542	= { FOLLOW_LPAREN_TOK_in_atomicFormula542_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_arguments_in_atomicFormula544  */
+static	ANTLR3_BITWORD FOLLOW_arguments_in_atomicFormula544_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_arguments_in_atomicFormula544	= { FOLLOW_arguments_in_atomicFormula544_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_atomicFormula547  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_atomicFormula547_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000042002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_atomicFormula547	= { FOLLOW_RPAREN_TOK_in_atomicFormula547_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_equalOp_in_atomicFormula557  */
+static	ANTLR3_BITWORD FOLLOW_equalOp_in_atomicFormula557_bits[]	= { ANTLR3_UINT64_LIT(0x0B53200432204080), ANTLR3_UINT64_LIT(0x0000000000FBFFA2) };
+static  ANTLR3_BITSET_LIST FOLLOW_equalOp_in_atomicFormula557	= { FOLLOW_equalOp_in_atomicFormula557_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_atomicFormula560  */
+static	ANTLR3_BITWORD FOLLOW_term_in_atomicFormula560_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_atomicFormula560	= { FOLLOW_term_in_atomicFormula560_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_definedFun_in_atomicFormula589  */
+static	ANTLR3_BITWORD FOLLOW_definedFun_in_atomicFormula589_bits[]	= { ANTLR3_UINT64_LIT(0x0000000040000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_definedFun_in_atomicFormula589	= { FOLLOW_definedFun_in_atomicFormula589_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_atomicFormula592  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_atomicFormula592_bits[]	= { ANTLR3_UINT64_LIT(0x0B53200432204080), ANTLR3_UINT64_LIT(0x0000000000FBFFA2) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_atomicFormula592	= { FOLLOW_LPAREN_TOK_in_atomicFormula592_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_arguments_in_atomicFormula594  */
+static	ANTLR3_BITWORD FOLLOW_arguments_in_atomicFormula594_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_arguments_in_atomicFormula594	= { FOLLOW_arguments_in_atomicFormula594_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_atomicFormula597  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_atomicFormula597_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000042000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_atomicFormula597	= { FOLLOW_RPAREN_TOK_in_atomicFormula597_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_equalOp_in_atomicFormula603  */
+static	ANTLR3_BITWORD FOLLOW_equalOp_in_atomicFormula603_bits[]	= { ANTLR3_UINT64_LIT(0x0B53200432204080), ANTLR3_UINT64_LIT(0x0000000000FBFFA2) };
+static  ANTLR3_BITSET_LIST FOLLOW_equalOp_in_atomicFormula603	= { FOLLOW_equalOp_in_atomicFormula603_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_atomicFormula606  */
+static	ANTLR3_BITWORD FOLLOW_term_in_atomicFormula606_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_atomicFormula606	= { FOLLOW_term_in_atomicFormula606_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleTerm_in_atomicFormula620  */
+static	ANTLR3_BITWORD FOLLOW_simpleTerm_in_atomicFormula620_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000042000) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleTerm_in_atomicFormula620	= { FOLLOW_simpleTerm_in_atomicFormula620_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_letTerm_in_atomicFormula625  */
+static	ANTLR3_BITWORD FOLLOW_letTerm_in_atomicFormula625_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000042000) };
+static  ANTLR3_BITSET_LIST FOLLOW_letTerm_in_atomicFormula625	= { FOLLOW_letTerm_in_atomicFormula625_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_conditionalTerm_in_atomicFormula630  */
+static	ANTLR3_BITWORD FOLLOW_conditionalTerm_in_atomicFormula630_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000042000) };
+static  ANTLR3_BITSET_LIST FOLLOW_conditionalTerm_in_atomicFormula630	= { FOLLOW_conditionalTerm_in_atomicFormula630_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_equalOp_in_atomicFormula638  */
+static	ANTLR3_BITWORD FOLLOW_equalOp_in_atomicFormula638_bits[]	= { ANTLR3_UINT64_LIT(0x0B53200432204080), ANTLR3_UINT64_LIT(0x0000000000FBFFA2) };
+static  ANTLR3_BITSET_LIST FOLLOW_equalOp_in_atomicFormula638	= { FOLLOW_equalOp_in_atomicFormula638_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_atomicFormula641  */
+static	ANTLR3_BITWORD FOLLOW_term_in_atomicFormula641_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_atomicFormula641	= { FOLLOW_term_in_atomicFormula641_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_definedPred_in_atomicFormula654  */
+static	ANTLR3_BITWORD FOLLOW_definedPred_in_atomicFormula654_bits[]	= { ANTLR3_UINT64_LIT(0x0000000040000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_definedPred_in_atomicFormula654	= { FOLLOW_definedPred_in_atomicFormula654_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_atomicFormula657  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_atomicFormula657_bits[]	= { ANTLR3_UINT64_LIT(0x0B53200432204080), ANTLR3_UINT64_LIT(0x0000000000FBFFA2) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_atomicFormula657	= { FOLLOW_LPAREN_TOK_in_atomicFormula657_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_arguments_in_atomicFormula659  */
+static	ANTLR3_BITWORD FOLLOW_arguments_in_atomicFormula659_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_arguments_in_atomicFormula659	= { FOLLOW_arguments_in_atomicFormula659_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_atomicFormula662  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_atomicFormula662_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_atomicFormula662	= { FOLLOW_RPAREN_TOK_in_atomicFormula662_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_definedProp_in_atomicFormula674  */
+static	ANTLR3_BITWORD FOLLOW_definedProp_in_atomicFormula674_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_definedProp_in_atomicFormula674	= { FOLLOW_definedProp_in_atomicFormula674_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRUE_TOK_in_definedProp691  */
+static	ANTLR3_BITWORD FOLLOW_TRUE_TOK_in_definedProp691_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_TRUE_TOK_in_definedProp691	= { FOLLOW_TRUE_TOK_in_definedProp691_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FALSE_TOK_in_definedProp699  */
+static	ANTLR3_BITWORD FOLLOW_FALSE_TOK_in_definedProp699_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FALSE_TOK_in_definedProp699	= { FOLLOW_FALSE_TOK_in_definedProp699_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_66_in_definedPred716  */
+static	ANTLR3_BITWORD FOLLOW_66_in_definedPred716_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_66_in_definedPred716	= { FOLLOW_66_in_definedPred716_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_67_in_definedPred724  */
+static	ANTLR3_BITWORD FOLLOW_67_in_definedPred724_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_67_in_definedPred724	= { FOLLOW_67_in_definedPred724_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_60_in_definedPred732  */
+static	ANTLR3_BITWORD FOLLOW_60_in_definedPred732_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_60_in_definedPred732	= { FOLLOW_60_in_definedPred732_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_61_in_definedPred740  */
+static	ANTLR3_BITWORD FOLLOW_61_in_definedPred740_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_61_in_definedPred740	= { FOLLOW_61_in_definedPred740_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_63_in_definedPred748  */
+static	ANTLR3_BITWORD FOLLOW_63_in_definedPred748_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_63_in_definedPred748	= { FOLLOW_63_in_definedPred748_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_62_in_definedPred761  */
+static	ANTLR3_BITWORD FOLLOW_62_in_definedPred761_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_62_in_definedPred761	= { FOLLOW_62_in_definedPred761_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_58_in_definedPred769  */
+static	ANTLR3_BITWORD FOLLOW_58_in_definedPred769_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_58_in_definedPred769	= { FOLLOW_58_in_definedPred769_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_87_in_definedFun790  */
+static	ANTLR3_BITWORD FOLLOW_87_in_definedFun790_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_87_in_definedFun790	= { FOLLOW_87_in_definedFun790_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_81_in_definedFun798  */
+static	ANTLR3_BITWORD FOLLOW_81_in_definedFun798_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_81_in_definedFun798	= { FOLLOW_81_in_definedFun798_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_57_in_definedFun806  */
+static	ANTLR3_BITWORD FOLLOW_57_in_definedFun806_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_57_in_definedFun806	= { FOLLOW_57_in_definedFun806_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_72_in_definedFun814  */
+static	ANTLR3_BITWORD FOLLOW_72_in_definedFun814_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_72_in_definedFun814	= { FOLLOW_72_in_definedFun814_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_73_in_definedFun822  */
+static	ANTLR3_BITWORD FOLLOW_73_in_definedFun822_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_73_in_definedFun822	= { FOLLOW_73_in_definedFun822_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_74_in_definedFun832  */
+static	ANTLR3_BITWORD FOLLOW_74_in_definedFun832_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_74_in_definedFun832	= { FOLLOW_74_in_definedFun832_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_77_in_definedFun842  */
+static	ANTLR3_BITWORD FOLLOW_77_in_definedFun842_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_77_in_definedFun842	= { FOLLOW_77_in_definedFun842_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_76_in_definedFun864  */
+static	ANTLR3_BITWORD FOLLOW_76_in_definedFun864_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_76_in_definedFun864	= { FOLLOW_76_in_definedFun864_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_79_in_definedFun874  */
+static	ANTLR3_BITWORD FOLLOW_79_in_definedFun874_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_79_in_definedFun874	= { FOLLOW_79_in_definedFun874_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_75_in_definedFun896  */
+static	ANTLR3_BITWORD FOLLOW_75_in_definedFun896_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_75_in_definedFun896	= { FOLLOW_75_in_definedFun896_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_78_in_definedFun906  */
+static	ANTLR3_BITWORD FOLLOW_78_in_definedFun906_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_78_in_definedFun906	= { FOLLOW_78_in_definedFun906_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_59_in_definedFun926  */
+static	ANTLR3_BITWORD FOLLOW_59_in_definedFun926_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_59_in_definedFun926	= { FOLLOW_59_in_definedFun926_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_56_in_definedFun934  */
+static	ANTLR3_BITWORD FOLLOW_56_in_definedFun934_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_56_in_definedFun934	= { FOLLOW_56_in_definedFun934_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_86_in_definedFun946  */
+static	ANTLR3_BITWORD FOLLOW_86_in_definedFun946_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_86_in_definedFun946	= { FOLLOW_86_in_definedFun946_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_80_in_definedFun958  */
+static	ANTLR3_BITWORD FOLLOW_80_in_definedFun958_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_80_in_definedFun958	= { FOLLOW_80_in_definedFun958_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_83_in_definedFun970  */
+static	ANTLR3_BITWORD FOLLOW_83_in_definedFun970_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_83_in_definedFun970	= { FOLLOW_83_in_definedFun970_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_84_in_definedFun978  */
+static	ANTLR3_BITWORD FOLLOW_84_in_definedFun978_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_84_in_definedFun978	= { FOLLOW_84_in_definedFun978_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_85_in_definedFun986  */
+static	ANTLR3_BITWORD FOLLOW_85_in_definedFun986_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_85_in_definedFun986	= { FOLLOW_85_in_definedFun986_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_equalOp1005  */
+static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_equalOp1005_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_equalOp1005	= { FOLLOW_EQUAL_TOK_in_equalOp1005_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DISEQUAL_TOK_in_equalOp1016  */
+static	ANTLR3_BITWORD FOLLOW_DISEQUAL_TOK_in_equalOp1016_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DISEQUAL_TOK_in_equalOp1016	= { FOLLOW_DISEQUAL_TOK_in_equalOp1016_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_functionTerm_in_term1032  */
+static	ANTLR3_BITWORD FOLLOW_functionTerm_in_term1032_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_functionTerm_in_term1032	= { FOLLOW_functionTerm_in_term1032_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_conditionalTerm_in_term1039  */
+static	ANTLR3_BITWORD FOLLOW_conditionalTerm_in_term1039_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_conditionalTerm_in_term1039	= { FOLLOW_conditionalTerm_in_term1039_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleTerm_in_term1046  */
+static	ANTLR3_BITWORD FOLLOW_simpleTerm_in_term1046_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleTerm_in_term1046	= { FOLLOW_simpleTerm_in_term1046_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_letTerm_in_term1053  */
+static	ANTLR3_BITWORD FOLLOW_letTerm_in_term1053_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_letTerm_in_term1053	= { FOLLOW_letTerm_in_term1053_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_69_in_letTerm1073  */
+static	ANTLR3_BITWORD FOLLOW_69_in_letTerm1073_bits[]	= { ANTLR3_UINT64_LIT(0x0000000040000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_69_in_letTerm1073	= { FOLLOW_69_in_letTerm1073_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_letTerm1075  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_letTerm1075_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2004723040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFAE) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_letTerm1075	= { FOLLOW_LPAREN_TOK_in_letTerm1075_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffLetFormulaDefn_in_letTerm1083  */
+static	ANTLR3_BITWORD FOLLOW_tffLetFormulaDefn_in_letTerm1083_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffLetFormulaDefn_in_letTerm1083	= { FOLLOW_tffLetFormulaDefn_in_letTerm1083_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_letTerm1086  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_letTerm1086_bits[]	= { ANTLR3_UINT64_LIT(0x0B53200432204080), ANTLR3_UINT64_LIT(0x0000000000FBFFA2) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_letTerm1086	= { FOLLOW_COMMA_TOK_in_letTerm1086_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_letTerm1092  */
+static	ANTLR3_BITWORD FOLLOW_term_in_letTerm1092_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_letTerm1092	= { FOLLOW_term_in_letTerm1092_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_letTerm1105  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_letTerm1105_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_letTerm1105	= { FOLLOW_RPAREN_TOK_in_letTerm1105_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_71_in_letTerm1111  */
+static	ANTLR3_BITWORD FOLLOW_71_in_letTerm1111_bits[]	= { ANTLR3_UINT64_LIT(0x0000000040000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_71_in_letTerm1111	= { FOLLOW_71_in_letTerm1111_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_letTerm1113  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_letTerm1113_bits[]	= { ANTLR3_UINT64_LIT(0x0B532004722040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFA2) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_letTerm1113	= { FOLLOW_LPAREN_TOK_in_letTerm1113_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffLetTermDefn_in_letTerm1121  */
+static	ANTLR3_BITWORD FOLLOW_tffLetTermDefn_in_letTerm1121_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffLetTermDefn_in_letTerm1121	= { FOLLOW_tffLetTermDefn_in_letTerm1121_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_letTerm1124  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_letTerm1124_bits[]	= { ANTLR3_UINT64_LIT(0x0B53200432204080), ANTLR3_UINT64_LIT(0x0000000000FBFFA2) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_letTerm1124	= { FOLLOW_COMMA_TOK_in_letTerm1124_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_letTerm1130  */
+static	ANTLR3_BITWORD FOLLOW_term_in_letTerm1130_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_letTerm1130	= { FOLLOW_term_in_letTerm1130_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_letTerm1143  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_letTerm1143_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_letTerm1143	= { FOLLOW_RPAREN_TOK_in_letTerm1143_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_variable_in_simpleTerm1159  */
+static	ANTLR3_BITWORD FOLLOW_variable_in_simpleTerm1159_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_variable_in_simpleTerm1159	= { FOLLOW_variable_in_simpleTerm1159_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NUMBER_in_simpleTerm1166  */
+static	ANTLR3_BITWORD FOLLOW_NUMBER_in_simpleTerm1166_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_NUMBER_in_simpleTerm1166	= { FOLLOW_NUMBER_in_simpleTerm1166_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DISTINCT_OBJECT_in_simpleTerm1174  */
+static	ANTLR3_BITWORD FOLLOW_DISTINCT_OBJECT_in_simpleTerm1174_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DISTINCT_OBJECT_in_simpleTerm1174	= { FOLLOW_DISTINCT_OBJECT_in_simpleTerm1174_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_plainTerm_in_functionTerm1195  */
+static	ANTLR3_BITWORD FOLLOW_plainTerm_in_functionTerm1195_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_plainTerm_in_functionTerm1195	= { FOLLOW_plainTerm_in_functionTerm1195_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_definedFun_in_functionTerm1202  */
+static	ANTLR3_BITWORD FOLLOW_definedFun_in_functionTerm1202_bits[]	= { ANTLR3_UINT64_LIT(0x0000000040000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_definedFun_in_functionTerm1202	= { FOLLOW_definedFun_in_functionTerm1202_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_functionTerm1205  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_functionTerm1205_bits[]	= { ANTLR3_UINT64_LIT(0x0B53200432204080), ANTLR3_UINT64_LIT(0x0000000000FBFFA2) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_functionTerm1205	= { FOLLOW_LPAREN_TOK_in_functionTerm1205_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_arguments_in_functionTerm1207  */
+static	ANTLR3_BITWORD FOLLOW_arguments_in_functionTerm1207_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_arguments_in_functionTerm1207	= { FOLLOW_arguments_in_functionTerm1207_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_functionTerm1210  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_functionTerm1210_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_functionTerm1210	= { FOLLOW_RPAREN_TOK_in_functionTerm1210_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_65_in_conditionalTerm1236  */
+static	ANTLR3_BITWORD FOLLOW_65_in_conditionalTerm1236_bits[]	= { ANTLR3_UINT64_LIT(0x0000000040000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_65_in_conditionalTerm1236	= { FOLLOW_65_in_conditionalTerm1236_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_conditionalTerm1238  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_conditionalTerm1238_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFFF) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_conditionalTerm1238	= { FOLLOW_LPAREN_TOK_in_conditionalTerm1238_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffLogicFormula_in_conditionalTerm1240  */
+static	ANTLR3_BITWORD FOLLOW_tffLogicFormula_in_conditionalTerm1240_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffLogicFormula_in_conditionalTerm1240	= { FOLLOW_tffLogicFormula_in_conditionalTerm1240_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_conditionalTerm1243  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_conditionalTerm1243_bits[]	= { ANTLR3_UINT64_LIT(0x0B53200432204080), ANTLR3_UINT64_LIT(0x0000000000FBFFA2) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_conditionalTerm1243	= { FOLLOW_COMMA_TOK_in_conditionalTerm1243_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_conditionalTerm1245  */
+static	ANTLR3_BITWORD FOLLOW_term_in_conditionalTerm1245_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_conditionalTerm1245	= { FOLLOW_term_in_conditionalTerm1245_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_conditionalTerm1248  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_conditionalTerm1248_bits[]	= { ANTLR3_UINT64_LIT(0x0B53200432204080), ANTLR3_UINT64_LIT(0x0000000000FBFFA2) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_conditionalTerm1248	= { FOLLOW_COMMA_TOK_in_conditionalTerm1248_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_conditionalTerm1250  */
+static	ANTLR3_BITWORD FOLLOW_term_in_conditionalTerm1250_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_conditionalTerm1250	= { FOLLOW_term_in_conditionalTerm1250_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_conditionalTerm1253  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_conditionalTerm1253_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_conditionalTerm1253	= { FOLLOW_RPAREN_TOK_in_conditionalTerm1253_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_atomicWord_in_plainTerm1278  */
+static	ANTLR3_BITWORD FOLLOW_atomicWord_in_plainTerm1278_bits[]	= { ANTLR3_UINT64_LIT(0x0000000040000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_atomicWord_in_plainTerm1278	= { FOLLOW_atomicWord_in_plainTerm1278_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_plainTerm1282  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_plainTerm1282_bits[]	= { ANTLR3_UINT64_LIT(0x0B53200432204080), ANTLR3_UINT64_LIT(0x0000000000FBFFA2) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_plainTerm1282	= { FOLLOW_LPAREN_TOK_in_plainTerm1282_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_arguments_in_plainTerm1284  */
+static	ANTLR3_BITWORD FOLLOW_arguments_in_plainTerm1284_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_arguments_in_plainTerm1284	= { FOLLOW_arguments_in_plainTerm1284_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_plainTerm1287  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_plainTerm1287_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_plainTerm1287	= { FOLLOW_RPAREN_TOK_in_plainTerm1287_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_arguments1316  */
+static	ANTLR3_BITWORD FOLLOW_term_in_arguments1316_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000202) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_arguments1316	= { FOLLOW_term_in_arguments1316_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_arguments1323  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_arguments1323_bits[]	= { ANTLR3_UINT64_LIT(0x0B53200432204080), ANTLR3_UINT64_LIT(0x0000000000FBFFA2) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_arguments1323	= { FOLLOW_COMMA_TOK_in_arguments1323_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_arguments1325  */
+static	ANTLR3_BITWORD FOLLOW_term_in_arguments1325_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000202) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_arguments1325	= { FOLLOW_term_in_arguments1325_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_UPPER_WORD_in_variable1345  */
+static	ANTLR3_BITWORD FOLLOW_UPPER_WORD_in_variable1345_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_UPPER_WORD_in_variable1345	= { FOLLOW_UPPER_WORD_in_variable1345_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_fofLogicFormula_in_fofFormula1369  */
+static	ANTLR3_BITWORD FOLLOW_fofLogicFormula_in_fofFormula1369_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_fofLogicFormula_in_fofFormula1369	= { FOLLOW_fofLogicFormula_in_fofFormula1369_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_fofUnitaryFormula_in_fofLogicFormula1387  */
+static	ANTLR3_BITWORD FOLLOW_fofUnitaryFormula_in_fofLogicFormula1387_bits[]	= { ANTLR3_UINT64_LIT(0x0000079001800022) };
+static  ANTLR3_BITSET_LIST FOLLOW_fofUnitaryFormula_in_fofLogicFormula1387	= { FOLLOW_fofUnitaryFormula_in_fofLogicFormula1387_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_fofBinaryNonAssoc_in_fofLogicFormula1405  */
+static	ANTLR3_BITWORD FOLLOW_fofBinaryNonAssoc_in_fofLogicFormula1405_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFAE) };
+static  ANTLR3_BITSET_LIST FOLLOW_fofBinaryNonAssoc_in_fofLogicFormula1405	= { FOLLOW_fofBinaryNonAssoc_in_fofLogicFormula1405_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_fofUnitaryFormula_in_fofLogicFormula1408  */
+static	ANTLR3_BITWORD FOLLOW_fofUnitaryFormula_in_fofLogicFormula1408_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_fofUnitaryFormula_in_fofLogicFormula1408	= { FOLLOW_fofUnitaryFormula_in_fofLogicFormula1408_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_AND_TOK_in_fofLogicFormula1456  */
+static	ANTLR3_BITWORD FOLLOW_AND_TOK_in_fofLogicFormula1456_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFAE) };
+static  ANTLR3_BITSET_LIST FOLLOW_AND_TOK_in_fofLogicFormula1456	= { FOLLOW_AND_TOK_in_fofLogicFormula1456_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_fofUnitaryFormula_in_fofLogicFormula1458  */
+static	ANTLR3_BITWORD FOLLOW_fofUnitaryFormula_in_fofLogicFormula1458_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000022) };
+static  ANTLR3_BITSET_LIST FOLLOW_fofUnitaryFormula_in_fofLogicFormula1458	= { FOLLOW_fofUnitaryFormula_in_fofLogicFormula1458_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_OR_TOK_in_fofLogicFormula1511  */
+static	ANTLR3_BITWORD FOLLOW_OR_TOK_in_fofLogicFormula1511_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFAE) };
+static  ANTLR3_BITSET_LIST FOLLOW_OR_TOK_in_fofLogicFormula1511	= { FOLLOW_OR_TOK_in_fofLogicFormula1511_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_fofUnitaryFormula_in_fofLogicFormula1513  */
+static	ANTLR3_BITWORD FOLLOW_fofUnitaryFormula_in_fofLogicFormula1513_bits[]	= { ANTLR3_UINT64_LIT(0x0000001000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_fofUnitaryFormula_in_fofLogicFormula1513	= { FOLLOW_fofUnitaryFormula_in_fofLogicFormula1513_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_atomicFormula_in_fofUnitaryFormula1563  */
+static	ANTLR3_BITWORD FOLLOW_atomicFormula_in_fofUnitaryFormula1563_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_atomicFormula_in_fofUnitaryFormula1563	= { FOLLOW_atomicFormula_in_fofUnitaryFormula1563_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_fofUnitaryFormula1570  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_fofUnitaryFormula1570_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFAE) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_fofUnitaryFormula1570	= { FOLLOW_LPAREN_TOK_in_fofUnitaryFormula1570_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_fofLogicFormula_in_fofUnitaryFormula1572  */
+static	ANTLR3_BITWORD FOLLOW_fofLogicFormula_in_fofUnitaryFormula1572_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_fofLogicFormula_in_fofUnitaryFormula1572	= { FOLLOW_fofLogicFormula_in_fofUnitaryFormula1572_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_fofUnitaryFormula1575  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_fofUnitaryFormula1575_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_fofUnitaryFormula1575	= { FOLLOW_RPAREN_TOK_in_fofUnitaryFormula1575_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NOT_TOK_in_fofUnitaryFormula1581  */
+static	ANTLR3_BITWORD FOLLOW_NOT_TOK_in_fofUnitaryFormula1581_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFAE) };
+static  ANTLR3_BITSET_LIST FOLLOW_NOT_TOK_in_fofUnitaryFormula1581	= { FOLLOW_NOT_TOK_in_fofUnitaryFormula1581_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_fofUnitaryFormula_in_fofUnitaryFormula1583  */
+static	ANTLR3_BITWORD FOLLOW_fofUnitaryFormula_in_fofUnitaryFormula1583_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_fofUnitaryFormula_in_fofUnitaryFormula1583	= { FOLLOW_fofUnitaryFormula_in_fofUnitaryFormula1583_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_folQuantifier_in_fofUnitaryFormula1597  */
+static	ANTLR3_BITWORD FOLLOW_folQuantifier_in_fofUnitaryFormula1597_bits[]	= { ANTLR3_UINT64_LIT(0x0000000004000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_folQuantifier_in_fofUnitaryFormula1597	= { FOLLOW_folQuantifier_in_fofUnitaryFormula1597_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACK_TOK_in_fofUnitaryFormula1600  */
+static	ANTLR3_BITWORD FOLLOW_LBRACK_TOK_in_fofUnitaryFormula1600_bits[]	= { ANTLR3_UINT64_LIT(0x0040000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACK_TOK_in_fofUnitaryFormula1600	= { FOLLOW_LBRACK_TOK_in_fofUnitaryFormula1600_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bindvariable_in_fofUnitaryFormula1610  */
+static	ANTLR3_BITWORD FOLLOW_bindvariable_in_fofUnitaryFormula1610_bits[]	= { ANTLR3_UINT64_LIT(0x0000004000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_bindvariable_in_fofUnitaryFormula1610	= { FOLLOW_bindvariable_in_fofUnitaryFormula1610_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_fofUnitaryFormula1623  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_fofUnitaryFormula1623_bits[]	= { ANTLR3_UINT64_LIT(0x0040000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_fofUnitaryFormula1623	= { FOLLOW_COMMA_TOK_in_fofUnitaryFormula1623_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bindvariable_in_fofUnitaryFormula1625  */
+static	ANTLR3_BITWORD FOLLOW_bindvariable_in_fofUnitaryFormula1625_bits[]	= { ANTLR3_UINT64_LIT(0x0000004000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_bindvariable_in_fofUnitaryFormula1625	= { FOLLOW_bindvariable_in_fofUnitaryFormula1625_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACK_TOK_in_fofUnitaryFormula1635  */
+static	ANTLR3_BITWORD FOLLOW_RBRACK_TOK_in_fofUnitaryFormula1635_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACK_TOK_in_fofUnitaryFormula1635	= { FOLLOW_RBRACK_TOK_in_fofUnitaryFormula1635_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_TOK_in_fofUnitaryFormula1641  */
+static	ANTLR3_BITWORD FOLLOW_COLON_TOK_in_fofUnitaryFormula1641_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFAE) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_TOK_in_fofUnitaryFormula1641	= { FOLLOW_COLON_TOK_in_fofUnitaryFormula1641_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_fofUnitaryFormula_in_fofUnitaryFormula1643  */
+static	ANTLR3_BITWORD FOLLOW_fofUnitaryFormula_in_fofUnitaryFormula1643_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_fofUnitaryFormula_in_fofUnitaryFormula1643	= { FOLLOW_fofUnitaryFormula_in_fofUnitaryFormula1643_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_UPPER_WORD_in_bindvariable1664  */
+static	ANTLR3_BITWORD FOLLOW_UPPER_WORD_in_bindvariable1664_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_UPPER_WORD_in_bindvariable1664	= { FOLLOW_UPPER_WORD_in_bindvariable1664_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IFF_TOK_in_fofBinaryNonAssoc1684  */
+static	ANTLR3_BITWORD FOLLOW_IFF_TOK_in_fofBinaryNonAssoc1684_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IFF_TOK_in_fofBinaryNonAssoc1684	= { FOLLOW_IFF_TOK_in_fofBinaryNonAssoc1684_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_REVIFF_TOK_in_fofBinaryNonAssoc1697  */
+static	ANTLR3_BITWORD FOLLOW_REVIFF_TOK_in_fofBinaryNonAssoc1697_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_REVIFF_TOK_in_fofBinaryNonAssoc1697	= { FOLLOW_REVIFF_TOK_in_fofBinaryNonAssoc1697_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_REVOR_TOK_in_fofBinaryNonAssoc1707  */
+static	ANTLR3_BITWORD FOLLOW_REVOR_TOK_in_fofBinaryNonAssoc1707_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_REVOR_TOK_in_fofBinaryNonAssoc1707	= { FOLLOW_REVOR_TOK_in_fofBinaryNonAssoc1707_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_REVAND_TOK_in_fofBinaryNonAssoc1718  */
+static	ANTLR3_BITWORD FOLLOW_REVAND_TOK_in_fofBinaryNonAssoc1718_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_REVAND_TOK_in_fofBinaryNonAssoc1718	= { FOLLOW_REVAND_TOK_in_fofBinaryNonAssoc1718_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IMPLIES_TOK_in_fofBinaryNonAssoc1728  */
+static	ANTLR3_BITWORD FOLLOW_IMPLIES_TOK_in_fofBinaryNonAssoc1728_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IMPLIES_TOK_in_fofBinaryNonAssoc1728	= { FOLLOW_IMPLIES_TOK_in_fofBinaryNonAssoc1728_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_REVIMPLIES_TOK_in_fofBinaryNonAssoc1739  */
+static	ANTLR3_BITWORD FOLLOW_REVIMPLIES_TOK_in_fofBinaryNonAssoc1739_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_REVIMPLIES_TOK_in_fofBinaryNonAssoc1739	= { FOLLOW_REVIMPLIES_TOK_in_fofBinaryNonAssoc1739_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BANG_TOK_in_folQuantifier1755  */
+static	ANTLR3_BITWORD FOLLOW_BANG_TOK_in_folQuantifier1755_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BANG_TOK_in_folQuantifier1755	= { FOLLOW_BANG_TOK_in_folQuantifier1755_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_MARK_TOK_in_folQuantifier1763  */
+static	ANTLR3_BITWORD FOLLOW_MARK_TOK_in_folQuantifier1763_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_MARK_TOK_in_folQuantifier1763	= { FOLLOW_MARK_TOK_in_folQuantifier1763_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffLogicFormula_in_tffFormula1781  */
+static	ANTLR3_BITWORD FOLLOW_tffLogicFormula_in_tffFormula1781_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffLogicFormula_in_tffFormula1781	= { FOLLOW_tffLogicFormula_in_tffFormula1781_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_tffTypedAtom1798  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_tffTypedAtom1798_bits[]	= { ANTLR3_UINT64_LIT(0x0013200472200080) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_tffTypedAtom1798	= { FOLLOW_LPAREN_TOK_in_tffTypedAtom1798_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffTypedAtom_in_tffTypedAtom1800  */
+static	ANTLR3_BITWORD FOLLOW_tffTypedAtom_in_tffTypedAtom1800_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffTypedAtom_in_tffTypedAtom1800	= { FOLLOW_tffTypedAtom_in_tffTypedAtom1800_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_tffTypedAtom1803  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_tffTypedAtom1803_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_tffTypedAtom1803	= { FOLLOW_RPAREN_TOK_in_tffTypedAtom1803_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_nameN_in_tffTypedAtom1809  */
+static	ANTLR3_BITWORD FOLLOW_nameN_in_tffTypedAtom1809_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100) };
+static  ANTLR3_BITSET_LIST FOLLOW_nameN_in_tffTypedAtom1809	= { FOLLOW_nameN_in_tffTypedAtom1809_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_TOK_in_tffTypedAtom1812  */
+static	ANTLR3_BITWORD FOLLOW_COLON_TOK_in_tffTypedAtom1812_bits[]	= { ANTLR3_UINT64_LIT(0x0013200072201080), ANTLR3_UINT64_LIT(0x0000000000040000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_TOK_in_tffTypedAtom1812	= { FOLLOW_COLON_TOK_in_tffTypedAtom1812_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_82_in_tffTypedAtom1820  */
+static	ANTLR3_BITWORD FOLLOW_82_in_tffTypedAtom1820_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_82_in_tffTypedAtom1820	= { FOLLOW_82_in_tffTypedAtom1820_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_parseType_in_tffTypedAtom1836  */
+static	ANTLR3_BITWORD FOLLOW_parseType_in_tffTypedAtom1836_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_parseType_in_tffTypedAtom1836	= { FOLLOW_parseType_in_tffTypedAtom1836_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffUnitaryFormula_in_tffLogicFormula1870  */
+static	ANTLR3_BITWORD FOLLOW_tffUnitaryFormula_in_tffLogicFormula1870_bits[]	= { ANTLR3_UINT64_LIT(0x0000079001800022) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffUnitaryFormula_in_tffLogicFormula1870	= { FOLLOW_tffUnitaryFormula_in_tffLogicFormula1870_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_fofBinaryNonAssoc_in_tffLogicFormula1888  */
+static	ANTLR3_BITWORD FOLLOW_fofBinaryNonAssoc_in_tffLogicFormula1888_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFFF) };
+static  ANTLR3_BITSET_LIST FOLLOW_fofBinaryNonAssoc_in_tffLogicFormula1888	= { FOLLOW_fofBinaryNonAssoc_in_tffLogicFormula1888_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffUnitaryFormula_in_tffLogicFormula1891  */
+static	ANTLR3_BITWORD FOLLOW_tffUnitaryFormula_in_tffLogicFormula1891_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffUnitaryFormula_in_tffLogicFormula1891	= { FOLLOW_tffUnitaryFormula_in_tffLogicFormula1891_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_AND_TOK_in_tffLogicFormula1939  */
+static	ANTLR3_BITWORD FOLLOW_AND_TOK_in_tffLogicFormula1939_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFFF) };
+static  ANTLR3_BITSET_LIST FOLLOW_AND_TOK_in_tffLogicFormula1939	= { FOLLOW_AND_TOK_in_tffLogicFormula1939_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffUnitaryFormula_in_tffLogicFormula1941  */
+static	ANTLR3_BITWORD FOLLOW_tffUnitaryFormula_in_tffLogicFormula1941_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000022) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffUnitaryFormula_in_tffLogicFormula1941	= { FOLLOW_tffUnitaryFormula_in_tffLogicFormula1941_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_OR_TOK_in_tffLogicFormula1994  */
+static	ANTLR3_BITWORD FOLLOW_OR_TOK_in_tffLogicFormula1994_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFFF) };
+static  ANTLR3_BITSET_LIST FOLLOW_OR_TOK_in_tffLogicFormula1994	= { FOLLOW_OR_TOK_in_tffLogicFormula1994_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffUnitaryFormula_in_tffLogicFormula1996  */
+static	ANTLR3_BITWORD FOLLOW_tffUnitaryFormula_in_tffLogicFormula1996_bits[]	= { ANTLR3_UINT64_LIT(0x0000001000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffUnitaryFormula_in_tffLogicFormula1996	= { FOLLOW_tffUnitaryFormula_in_tffLogicFormula1996_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_atomicFormula_in_tffUnitaryFormula2046  */
+static	ANTLR3_BITWORD FOLLOW_atomicFormula_in_tffUnitaryFormula2046_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_atomicFormula_in_tffUnitaryFormula2046	= { FOLLOW_atomicFormula_in_tffUnitaryFormula2046_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2053  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2053_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFFF) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2053	= { FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2053_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffLogicFormula_in_tffUnitaryFormula2055  */
+static	ANTLR3_BITWORD FOLLOW_tffLogicFormula_in_tffUnitaryFormula2055_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffLogicFormula_in_tffUnitaryFormula2055	= { FOLLOW_tffLogicFormula_in_tffUnitaryFormula2055_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_tffUnitaryFormula2058  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_tffUnitaryFormula2058_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_tffUnitaryFormula2058	= { FOLLOW_RPAREN_TOK_in_tffUnitaryFormula2058_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NOT_TOK_in_tffUnitaryFormula2064  */
+static	ANTLR3_BITWORD FOLLOW_NOT_TOK_in_tffUnitaryFormula2064_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFFF) };
+static  ANTLR3_BITSET_LIST FOLLOW_NOT_TOK_in_tffUnitaryFormula2064	= { FOLLOW_NOT_TOK_in_tffUnitaryFormula2064_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffUnitaryFormula_in_tffUnitaryFormula2066  */
+static	ANTLR3_BITWORD FOLLOW_tffUnitaryFormula_in_tffUnitaryFormula2066_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffUnitaryFormula_in_tffUnitaryFormula2066	= { FOLLOW_tffUnitaryFormula_in_tffUnitaryFormula2066_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_folQuantifier_in_tffUnitaryFormula2080  */
+static	ANTLR3_BITWORD FOLLOW_folQuantifier_in_tffUnitaryFormula2080_bits[]	= { ANTLR3_UINT64_LIT(0x0000000004000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_folQuantifier_in_tffUnitaryFormula2080	= { FOLLOW_folQuantifier_in_tffUnitaryFormula2080_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACK_TOK_in_tffUnitaryFormula2083  */
+static	ANTLR3_BITWORD FOLLOW_LBRACK_TOK_in_tffUnitaryFormula2083_bits[]	= { ANTLR3_UINT64_LIT(0x0040000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACK_TOK_in_tffUnitaryFormula2083	= { FOLLOW_LBRACK_TOK_in_tffUnitaryFormula2083_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffbindvariable_in_tffUnitaryFormula2093  */
+static	ANTLR3_BITWORD FOLLOW_tffbindvariable_in_tffUnitaryFormula2093_bits[]	= { ANTLR3_UINT64_LIT(0x0000004000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffbindvariable_in_tffUnitaryFormula2093	= { FOLLOW_tffbindvariable_in_tffUnitaryFormula2093_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_tffUnitaryFormula2106  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_tffUnitaryFormula2106_bits[]	= { ANTLR3_UINT64_LIT(0x0040000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_tffUnitaryFormula2106	= { FOLLOW_COMMA_TOK_in_tffUnitaryFormula2106_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffbindvariable_in_tffUnitaryFormula2108  */
+static	ANTLR3_BITWORD FOLLOW_tffbindvariable_in_tffUnitaryFormula2108_bits[]	= { ANTLR3_UINT64_LIT(0x0000004000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffbindvariable_in_tffUnitaryFormula2108	= { FOLLOW_tffbindvariable_in_tffUnitaryFormula2108_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACK_TOK_in_tffUnitaryFormula2118  */
+static	ANTLR3_BITWORD FOLLOW_RBRACK_TOK_in_tffUnitaryFormula2118_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACK_TOK_in_tffUnitaryFormula2118	= { FOLLOW_RBRACK_TOK_in_tffUnitaryFormula2118_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_TOK_in_tffUnitaryFormula2124  */
+static	ANTLR3_BITWORD FOLLOW_COLON_TOK_in_tffUnitaryFormula2124_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFFF) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_TOK_in_tffUnitaryFormula2124	= { FOLLOW_COLON_TOK_in_tffUnitaryFormula2124_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffUnitaryFormula_in_tffUnitaryFormula2126  */
+static	ANTLR3_BITWORD FOLLOW_tffUnitaryFormula_in_tffUnitaryFormula2126_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffUnitaryFormula_in_tffUnitaryFormula2126	= { FOLLOW_tffUnitaryFormula_in_tffUnitaryFormula2126_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_64_in_tffUnitaryFormula2139  */
+static	ANTLR3_BITWORD FOLLOW_64_in_tffUnitaryFormula2139_bits[]	= { ANTLR3_UINT64_LIT(0x0000000040000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_64_in_tffUnitaryFormula2139	= { FOLLOW_64_in_tffUnitaryFormula2139_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2141  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2141_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFFF) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2141	= { FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2141_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffLogicFormula_in_tffUnitaryFormula2143  */
+static	ANTLR3_BITWORD FOLLOW_tffLogicFormula_in_tffUnitaryFormula2143_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffLogicFormula_in_tffUnitaryFormula2143	= { FOLLOW_tffLogicFormula_in_tffUnitaryFormula2143_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_tffUnitaryFormula2146  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_tffUnitaryFormula2146_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFFF) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_tffUnitaryFormula2146	= { FOLLOW_COMMA_TOK_in_tffUnitaryFormula2146_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffLogicFormula_in_tffUnitaryFormula2148  */
+static	ANTLR3_BITWORD FOLLOW_tffLogicFormula_in_tffUnitaryFormula2148_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffLogicFormula_in_tffUnitaryFormula2148	= { FOLLOW_tffLogicFormula_in_tffUnitaryFormula2148_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_tffUnitaryFormula2151  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_tffUnitaryFormula2151_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFFF) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_tffUnitaryFormula2151	= { FOLLOW_COMMA_TOK_in_tffUnitaryFormula2151_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffLogicFormula_in_tffUnitaryFormula2153  */
+static	ANTLR3_BITWORD FOLLOW_tffLogicFormula_in_tffUnitaryFormula2153_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffLogicFormula_in_tffUnitaryFormula2153	= { FOLLOW_tffLogicFormula_in_tffUnitaryFormula2153_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_tffUnitaryFormula2156  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_tffUnitaryFormula2156_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_tffUnitaryFormula2156	= { FOLLOW_RPAREN_TOK_in_tffUnitaryFormula2156_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_70_in_tffUnitaryFormula2168  */
+static	ANTLR3_BITWORD FOLLOW_70_in_tffUnitaryFormula2168_bits[]	= { ANTLR3_UINT64_LIT(0x0000000040000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_70_in_tffUnitaryFormula2168	= { FOLLOW_70_in_tffUnitaryFormula2168_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2170  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2170_bits[]	= { ANTLR3_UINT64_LIT(0x0B532004722040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFA2) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2170	= { FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2170_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffLetTermDefn_in_tffUnitaryFormula2178  */
+static	ANTLR3_BITWORD FOLLOW_tffLetTermDefn_in_tffUnitaryFormula2178_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffLetTermDefn_in_tffUnitaryFormula2178	= { FOLLOW_tffLetTermDefn_in_tffUnitaryFormula2178_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_tffUnitaryFormula2181  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_tffUnitaryFormula2181_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFFF) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_tffUnitaryFormula2181	= { FOLLOW_COMMA_TOK_in_tffUnitaryFormula2181_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffFormula_in_tffUnitaryFormula2187  */
+static	ANTLR3_BITWORD FOLLOW_tffFormula_in_tffUnitaryFormula2187_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffFormula_in_tffUnitaryFormula2187	= { FOLLOW_tffFormula_in_tffUnitaryFormula2187_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_tffUnitaryFormula2200  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_tffUnitaryFormula2200_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_tffUnitaryFormula2200	= { FOLLOW_RPAREN_TOK_in_tffUnitaryFormula2200_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_68_in_tffUnitaryFormula2206  */
+static	ANTLR3_BITWORD FOLLOW_68_in_tffUnitaryFormula2206_bits[]	= { ANTLR3_UINT64_LIT(0x0000000040000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_68_in_tffUnitaryFormula2206	= { FOLLOW_68_in_tffUnitaryFormula2206_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2208  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2208_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2004723040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFAE) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2208	= { FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2208_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffLetFormulaDefn_in_tffUnitaryFormula2216  */
+static	ANTLR3_BITWORD FOLLOW_tffLetFormulaDefn_in_tffUnitaryFormula2216_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffLetFormulaDefn_in_tffUnitaryFormula2216	= { FOLLOW_tffLetFormulaDefn_in_tffUnitaryFormula2216_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_tffUnitaryFormula2219  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_tffUnitaryFormula2219_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFFF) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_tffUnitaryFormula2219	= { FOLLOW_COMMA_TOK_in_tffUnitaryFormula2219_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffFormula_in_tffUnitaryFormula2225  */
+static	ANTLR3_BITWORD FOLLOW_tffFormula_in_tffUnitaryFormula2225_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffFormula_in_tffUnitaryFormula2225	= { FOLLOW_tffFormula_in_tffUnitaryFormula2225_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_tffUnitaryFormula2238  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_tffUnitaryFormula2238_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_tffUnitaryFormula2238	= { FOLLOW_RPAREN_TOK_in_tffUnitaryFormula2238_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BANG_TOK_in_tffLetTermDefn2258  */
+static	ANTLR3_BITWORD FOLLOW_BANG_TOK_in_tffLetTermDefn2258_bits[]	= { ANTLR3_UINT64_LIT(0x0000000004000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BANG_TOK_in_tffLetTermDefn2258	= { FOLLOW_BANG_TOK_in_tffLetTermDefn2258_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACK_TOK_in_tffLetTermDefn2260  */
+static	ANTLR3_BITWORD FOLLOW_LBRACK_TOK_in_tffLetTermDefn2260_bits[]	= { ANTLR3_UINT64_LIT(0x0040000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACK_TOK_in_tffLetTermDefn2260	= { FOLLOW_LBRACK_TOK_in_tffLetTermDefn2260_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffVariableList_in_tffLetTermDefn2262  */
+static	ANTLR3_BITWORD FOLLOW_tffVariableList_in_tffLetTermDefn2262_bits[]	= { ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffVariableList_in_tffLetTermDefn2262	= { FOLLOW_tffVariableList_in_tffLetTermDefn2262_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACK_TOK_in_tffLetTermDefn2265  */
+static	ANTLR3_BITWORD FOLLOW_RBRACK_TOK_in_tffLetTermDefn2265_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACK_TOK_in_tffLetTermDefn2265	= { FOLLOW_RBRACK_TOK_in_tffLetTermDefn2265_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_TOK_in_tffLetTermDefn2267  */
+static	ANTLR3_BITWORD FOLLOW_COLON_TOK_in_tffLetTermDefn2267_bits[]	= { ANTLR3_UINT64_LIT(0x0B532004722040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFA2) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_TOK_in_tffLetTermDefn2267	= { FOLLOW_COLON_TOK_in_tffLetTermDefn2267_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffLetTermBinding_in_tffLetTermDefn2275  */
+static	ANTLR3_BITWORD FOLLOW_tffLetTermBinding_in_tffLetTermDefn2275_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffLetTermBinding_in_tffLetTermDefn2275	= { FOLLOW_tffLetTermBinding_in_tffLetTermDefn2275_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_tffLetTermBinding2290  */
+static	ANTLR3_BITWORD FOLLOW_term_in_tffLetTermBinding2290_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000040000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_tffLetTermBinding2290	= { FOLLOW_term_in_tffLetTermBinding2290_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_tffLetTermBinding2293  */
+static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_tffLetTermBinding2293_bits[]	= { ANTLR3_UINT64_LIT(0x0B53200432204080), ANTLR3_UINT64_LIT(0x0000000000FBFFA2) };
+static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_tffLetTermBinding2293	= { FOLLOW_EQUAL_TOK_in_tffLetTermBinding2293_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_tffLetTermBinding2295  */
+static	ANTLR3_BITWORD FOLLOW_term_in_tffLetTermBinding2295_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_tffLetTermBinding2295	= { FOLLOW_term_in_tffLetTermBinding2295_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_tffLetTermBinding2308  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_tffLetTermBinding2308_bits[]	= { ANTLR3_UINT64_LIT(0x0B53200472204080), ANTLR3_UINT64_LIT(0x0000000000FBFFA2) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_tffLetTermBinding2308	= { FOLLOW_LPAREN_TOK_in_tffLetTermBinding2308_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffLetTermBinding_in_tffLetTermBinding2310  */
+static	ANTLR3_BITWORD FOLLOW_tffLetTermBinding_in_tffLetTermBinding2310_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffLetTermBinding_in_tffLetTermBinding2310	= { FOLLOW_tffLetTermBinding_in_tffLetTermBinding2310_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_tffLetTermBinding2313  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_tffLetTermBinding2313_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_tffLetTermBinding2313	= { FOLLOW_RPAREN_TOK_in_tffLetTermBinding2313_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BANG_TOK_in_tffLetFormulaDefn2333  */
+static	ANTLR3_BITWORD FOLLOW_BANG_TOK_in_tffLetFormulaDefn2333_bits[]	= { ANTLR3_UINT64_LIT(0x0000000004000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BANG_TOK_in_tffLetFormulaDefn2333	= { FOLLOW_BANG_TOK_in_tffLetFormulaDefn2333_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACK_TOK_in_tffLetFormulaDefn2335  */
+static	ANTLR3_BITWORD FOLLOW_LBRACK_TOK_in_tffLetFormulaDefn2335_bits[]	= { ANTLR3_UINT64_LIT(0x0040000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACK_TOK_in_tffLetFormulaDefn2335	= { FOLLOW_LBRACK_TOK_in_tffLetFormulaDefn2335_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffVariableList_in_tffLetFormulaDefn2337  */
+static	ANTLR3_BITWORD FOLLOW_tffVariableList_in_tffLetFormulaDefn2337_bits[]	= { ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffVariableList_in_tffLetFormulaDefn2337	= { FOLLOW_tffVariableList_in_tffLetFormulaDefn2337_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACK_TOK_in_tffLetFormulaDefn2340  */
+static	ANTLR3_BITWORD FOLLOW_RBRACK_TOK_in_tffLetFormulaDefn2340_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACK_TOK_in_tffLetFormulaDefn2340	= { FOLLOW_RBRACK_TOK_in_tffLetFormulaDefn2340_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_TOK_in_tffLetFormulaDefn2342  */
+static	ANTLR3_BITWORD FOLLOW_COLON_TOK_in_tffLetFormulaDefn2342_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2004723040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFAE) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_TOK_in_tffLetFormulaDefn2342	= { FOLLOW_COLON_TOK_in_tffLetFormulaDefn2342_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffLetFormulaBinding_in_tffLetFormulaDefn2350  */
+static	ANTLR3_BITWORD FOLLOW_tffLetFormulaBinding_in_tffLetFormulaDefn2350_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffLetFormulaBinding_in_tffLetFormulaDefn2350	= { FOLLOW_tffLetFormulaBinding_in_tffLetFormulaDefn2350_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_atomicFormula_in_tffLetFormulaBinding2365  */
+static	ANTLR3_BITWORD FOLLOW_atomicFormula_in_tffLetFormulaBinding2365_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000800000) };
+static  ANTLR3_BITSET_LIST FOLLOW_atomicFormula_in_tffLetFormulaBinding2365	= { FOLLOW_atomicFormula_in_tffLetFormulaBinding2365_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IFF_TOK_in_tffLetFormulaBinding2368  */
+static	ANTLR3_BITWORD FOLLOW_IFF_TOK_in_tffLetFormulaBinding2368_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B2006F23040C0), ANTLR3_UINT64_LIT(0x0000000000FBFFFF) };
+static  ANTLR3_BITSET_LIST FOLLOW_IFF_TOK_in_tffLetFormulaBinding2368	= { FOLLOW_IFF_TOK_in_tffLetFormulaBinding2368_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffUnitaryFormula_in_tffLetFormulaBinding2370  */
+static	ANTLR3_BITWORD FOLLOW_tffUnitaryFormula_in_tffLetFormulaBinding2370_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffUnitaryFormula_in_tffLetFormulaBinding2370	= { FOLLOW_tffUnitaryFormula_in_tffLetFormulaBinding2370_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_tffLetFormulaBinding2383  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_tffLetFormulaBinding2383_bits[]	= { ANTLR3_UINT64_LIT(0xFF5B200472304080), ANTLR3_UINT64_LIT(0x0000000000FBFFAE) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_tffLetFormulaBinding2383	= { FOLLOW_LPAREN_TOK_in_tffLetFormulaBinding2383_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffLetFormulaBinding_in_tffLetFormulaBinding2385  */
+static	ANTLR3_BITWORD FOLLOW_tffLetFormulaBinding_in_tffLetFormulaBinding2385_bits[]	= { ANTLR3_UINT64_LIT(0x0000080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffLetFormulaBinding_in_tffLetFormulaBinding2385	= { FOLLOW_tffLetFormulaBinding_in_tffLetFormulaBinding2385_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_tffLetFormulaBinding2388  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_tffLetFormulaBinding2388_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_tffLetFormulaBinding2388	= { FOLLOW_RPAREN_TOK_in_tffLetFormulaBinding2388_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_UPPER_WORD_in_tffbindvariable2407  */
+static	ANTLR3_BITWORD FOLLOW_UPPER_WORD_in_tffbindvariable2407_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000102) };
+static  ANTLR3_BITSET_LIST FOLLOW_UPPER_WORD_in_tffbindvariable2407	= { FOLLOW_UPPER_WORD_in_tffbindvariable2407_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_TOK_in_tffbindvariable2415  */
+static	ANTLR3_BITWORD FOLLOW_COLON_TOK_in_tffbindvariable2415_bits[]	= { ANTLR3_UINT64_LIT(0x0013200072201080) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_TOK_in_tffbindvariable2415	= { FOLLOW_COLON_TOK_in_tffbindvariable2415_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_parseType_in_tffbindvariable2417  */
+static	ANTLR3_BITWORD FOLLOW_parseType_in_tffbindvariable2417_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_parseType_in_tffbindvariable2417	= { FOLLOW_parseType_in_tffbindvariable2417_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffbindvariable_in_tffVariableList2448  */
+static	ANTLR3_BITWORD FOLLOW_tffbindvariable_in_tffVariableList2448_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000202) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffbindvariable_in_tffVariableList2448	= { FOLLOW_tffbindvariable_in_tffVariableList2448_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_tffVariableList2459  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_tffVariableList2459_bits[]	= { ANTLR3_UINT64_LIT(0x0040000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_tffVariableList2459	= { FOLLOW_COMMA_TOK_in_tffVariableList2459_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tffbindvariable_in_tffVariableList2461  */
+static	ANTLR3_BITWORD FOLLOW_tffbindvariable_in_tffVariableList2461_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000202) };
+static  ANTLR3_BITSET_LIST FOLLOW_tffbindvariable_in_tffVariableList2461	= { FOLLOW_tffbindvariable_in_tffVariableList2461_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleType_in_parseType2486  */
+static	ANTLR3_BITWORD FOLLOW_simpleType_in_parseType2486_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleType_in_parseType2486	= { FOLLOW_simpleType_in_parseType2486_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleType_in_parseType2495  */
+static	ANTLR3_BITWORD FOLLOW_simpleType_in_parseType2495_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000400000) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleType_in_parseType2495	= { FOLLOW_simpleType_in_parseType2495_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_parseType2506  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_parseType2506_bits[]	= { ANTLR3_UINT64_LIT(0x0013200032201080) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_parseType2506	= { FOLLOW_LPAREN_TOK_in_parseType2506_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleType_in_parseType2508  */
+static	ANTLR3_BITWORD FOLLOW_simpleType_in_parseType2508_bits[]	= { ANTLR3_UINT64_LIT(0x0004000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleType_in_parseType2508	= { FOLLOW_simpleType_in_parseType2508_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TIMES_TOK_in_parseType2521  */
+static	ANTLR3_BITWORD FOLLOW_TIMES_TOK_in_parseType2521_bits[]	= { ANTLR3_UINT64_LIT(0x0013200032201080) };
+static  ANTLR3_BITSET_LIST FOLLOW_TIMES_TOK_in_parseType2521	= { FOLLOW_TIMES_TOK_in_parseType2521_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleType_in_parseType2523  */
+static	ANTLR3_BITWORD FOLLOW_simpleType_in_parseType2523_bits[]	= { ANTLR3_UINT64_LIT(0x0004080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleType_in_parseType2523	= { FOLLOW_simpleType_in_parseType2523_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_parseType2537  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_parseType2537_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000400000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_parseType2537	= { FOLLOW_RPAREN_TOK_in_parseType2537_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GREATER_TOK_in_parseType2549  */
+static	ANTLR3_BITWORD FOLLOW_GREATER_TOK_in_parseType2549_bits[]	= { ANTLR3_UINT64_LIT(0x0013200032201080) };
+static  ANTLR3_BITSET_LIST FOLLOW_GREATER_TOK_in_parseType2549	= { FOLLOW_GREATER_TOK_in_parseType2549_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleType_in_parseType2551  */
+static	ANTLR3_BITWORD FOLLOW_simpleType_in_parseType2551_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleType_in_parseType2551	= { FOLLOW_simpleType_in_parseType2551_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINED_SYMBOL_in_simpleType2578  */
+static	ANTLR3_BITWORD FOLLOW_DEFINED_SYMBOL_in_simpleType2578_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DEFINED_SYMBOL_in_simpleType2578	= { FOLLOW_DEFINED_SYMBOL_in_simpleType2578_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_atomicWord_in_simpleType2590  */
+static	ANTLR3_BITWORD FOLLOW_atomicWord_in_simpleType2590_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_atomicWord_in_simpleType2590	= { FOLLOW_atomicWord_in_simpleType2590_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_anything2615  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_anything2615_bits[]	= { ANTLR3_UINT64_LIT(0x005F2FB7F7B573E0) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_anything2615	= { FOLLOW_LPAREN_TOK_in_anything2615_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_anything_in_anything2617  */
+static	ANTLR3_BITWORD FOLLOW_anything_in_anything2617_bits[]	= { ANTLR3_UINT64_LIT(0x005F2FB7F7B573E0) };
+static  ANTLR3_BITSET_LIST FOLLOW_anything_in_anything2617	= { FOLLOW_anything_in_anything2617_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_anything2620  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_anything2620_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_anything2620	= { FOLLOW_RPAREN_TOK_in_anything2620_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACK_TOK_in_anything2626  */
+static	ANTLR3_BITWORD FOLLOW_LBRACK_TOK_in_anything2626_bits[]	= { ANTLR3_UINT64_LIT(0x005F27F7F7B573E0) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACK_TOK_in_anything2626	= { FOLLOW_LBRACK_TOK_in_anything2626_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_anything_in_anything2628  */
+static	ANTLR3_BITWORD FOLLOW_anything_in_anything2628_bits[]	= { ANTLR3_UINT64_LIT(0x005F27F7F7B573E0) };
+static  ANTLR3_BITSET_LIST FOLLOW_anything_in_anything2628	= { FOLLOW_anything_in_anything2628_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACK_TOK_in_anything2631  */
+static	ANTLR3_BITWORD FOLLOW_RBRACK_TOK_in_anything2631_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACK_TOK_in_anything2631	= { FOLLOW_RBRACK_TOK_in_anything2631_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_TOK_in_anything2637  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_TOK_in_anything2637_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_TOK_in_anything2637	= { FOLLOW_COMMA_TOK_in_anything2637_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_TOK_in_anything2643  */
+static	ANTLR3_BITWORD FOLLOW_DOT_TOK_in_anything2643_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOT_TOK_in_anything2643	= { FOLLOW_DOT_TOK_in_anything2643_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_TOK_in_anything2649  */
+static	ANTLR3_BITWORD FOLLOW_COLON_TOK_in_anything2649_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_TOK_in_anything2649	= { FOLLOW_COLON_TOK_in_anything2649_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_OR_TOK_in_anything2655  */
+static	ANTLR3_BITWORD FOLLOW_OR_TOK_in_anything2655_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_OR_TOK_in_anything2655	= { FOLLOW_OR_TOK_in_anything2655_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NOT_TOK_in_anything2661  */
+static	ANTLR3_BITWORD FOLLOW_NOT_TOK_in_anything2661_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_NOT_TOK_in_anything2661	= { FOLLOW_NOT_TOK_in_anything2661_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BANG_TOK_in_anything2667  */
+static	ANTLR3_BITWORD FOLLOW_BANG_TOK_in_anything2667_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BANG_TOK_in_anything2667	= { FOLLOW_BANG_TOK_in_anything2667_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_MARK_TOK_in_anything2673  */
+static	ANTLR3_BITWORD FOLLOW_MARK_TOK_in_anything2673_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_MARK_TOK_in_anything2673	= { FOLLOW_MARK_TOK_in_anything2673_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_AND_TOK_in_anything2679  */
+static	ANTLR3_BITWORD FOLLOW_AND_TOK_in_anything2679_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_AND_TOK_in_anything2679	= { FOLLOW_AND_TOK_in_anything2679_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IFF_TOK_in_anything2685  */
+static	ANTLR3_BITWORD FOLLOW_IFF_TOK_in_anything2685_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IFF_TOK_in_anything2685	= { FOLLOW_IFF_TOK_in_anything2685_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IMPLIES_TOK_in_anything2691  */
+static	ANTLR3_BITWORD FOLLOW_IMPLIES_TOK_in_anything2691_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IMPLIES_TOK_in_anything2691	= { FOLLOW_IMPLIES_TOK_in_anything2691_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_REVIMPLIES_TOK_in_anything2697  */
+static	ANTLR3_BITWORD FOLLOW_REVIMPLIES_TOK_in_anything2697_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_REVIMPLIES_TOK_in_anything2697	= { FOLLOW_REVIMPLIES_TOK_in_anything2697_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_REVIFF_TOK_in_anything2703  */
+static	ANTLR3_BITWORD FOLLOW_REVIFF_TOK_in_anything2703_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_REVIFF_TOK_in_anything2703	= { FOLLOW_REVIFF_TOK_in_anything2703_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_REVOR_TOK_in_anything2709  */
+static	ANTLR3_BITWORD FOLLOW_REVOR_TOK_in_anything2709_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_REVOR_TOK_in_anything2709	= { FOLLOW_REVOR_TOK_in_anything2709_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_REVAND_TOK_in_anything2715  */
+static	ANTLR3_BITWORD FOLLOW_REVAND_TOK_in_anything2715_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_REVAND_TOK_in_anything2715	= { FOLLOW_REVAND_TOK_in_anything2715_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TIMES_TOK_in_anything2721  */
+static	ANTLR3_BITWORD FOLLOW_TIMES_TOK_in_anything2721_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_TIMES_TOK_in_anything2721	= { FOLLOW_TIMES_TOK_in_anything2721_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PLUS_TOK_in_anything2727  */
+static	ANTLR3_BITWORD FOLLOW_PLUS_TOK_in_anything2727_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_PLUS_TOK_in_anything2727	= { FOLLOW_PLUS_TOK_in_anything2727_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_MINUS_TOK_in_anything2733  */
+static	ANTLR3_BITWORD FOLLOW_MINUS_TOK_in_anything2733_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_MINUS_TOK_in_anything2733	= { FOLLOW_MINUS_TOK_in_anything2733_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRUE_TOK_in_anything2739  */
+static	ANTLR3_BITWORD FOLLOW_TRUE_TOK_in_anything2739_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_TRUE_TOK_in_anything2739	= { FOLLOW_TRUE_TOK_in_anything2739_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FALSE_TOK_in_anything2745  */
+static	ANTLR3_BITWORD FOLLOW_FALSE_TOK_in_anything2745_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FALSE_TOK_in_anything2745	= { FOLLOW_FALSE_TOK_in_anything2745_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_anything2751  */
+static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_anything2751_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_anything2751	= { FOLLOW_EQUAL_TOK_in_anything2751_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DISEQUAL_TOK_in_anything2757  */
+static	ANTLR3_BITWORD FOLLOW_DISEQUAL_TOK_in_anything2757_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DISEQUAL_TOK_in_anything2757	= { FOLLOW_DISEQUAL_TOK_in_anything2757_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CNF_TOK_in_anything2763  */
+static	ANTLR3_BITWORD FOLLOW_CNF_TOK_in_anything2763_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_CNF_TOK_in_anything2763	= { FOLLOW_CNF_TOK_in_anything2763_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FOF_TOK_in_anything2769  */
+static	ANTLR3_BITWORD FOLLOW_FOF_TOK_in_anything2769_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FOF_TOK_in_anything2769	= { FOLLOW_FOF_TOK_in_anything2769_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_THF_TOK_in_anything2775  */
+static	ANTLR3_BITWORD FOLLOW_THF_TOK_in_anything2775_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_THF_TOK_in_anything2775	= { FOLLOW_THF_TOK_in_anything2775_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TFF_TOK_in_anything2781  */
+static	ANTLR3_BITWORD FOLLOW_TFF_TOK_in_anything2781_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_TFF_TOK_in_anything2781	= { FOLLOW_TFF_TOK_in_anything2781_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TYPE_TOK_in_anything2787  */
+static	ANTLR3_BITWORD FOLLOW_TYPE_TOK_in_anything2787_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_TYPE_TOK_in_anything2787	= { FOLLOW_TYPE_TOK_in_anything2787_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INCLUDE_TOK_in_anything2793  */
+static	ANTLR3_BITWORD FOLLOW_INCLUDE_TOK_in_anything2793_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INCLUDE_TOK_in_anything2793	= { FOLLOW_INCLUDE_TOK_in_anything2793_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DISTINCT_OBJECT_in_anything2799  */
+static	ANTLR3_BITWORD FOLLOW_DISTINCT_OBJECT_in_anything2799_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DISTINCT_OBJECT_in_anything2799	= { FOLLOW_DISTINCT_OBJECT_in_anything2799_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_UPPER_WORD_in_anything2805  */
+static	ANTLR3_BITWORD FOLLOW_UPPER_WORD_in_anything2805_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_UPPER_WORD_in_anything2805	= { FOLLOW_UPPER_WORD_in_anything2805_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LOWER_WORD_in_anything2811  */
+static	ANTLR3_BITWORD FOLLOW_LOWER_WORD_in_anything2811_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_LOWER_WORD_in_anything2811	= { FOLLOW_LOWER_WORD_in_anything2811_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LOWER_WORD_SINGLE_QUOTED_in_anything2817  */
+static	ANTLR3_BITWORD FOLLOW_LOWER_WORD_SINGLE_QUOTED_in_anything2817_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_LOWER_WORD_SINGLE_QUOTED_in_anything2817	= { FOLLOW_LOWER_WORD_SINGLE_QUOTED_in_anything2817_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SINGLE_QUOTED_in_anything2823  */
+static	ANTLR3_BITWORD FOLLOW_SINGLE_QUOTED_in_anything2823_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SINGLE_QUOTED_in_anything2823	= { FOLLOW_SINGLE_QUOTED_in_anything2823_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NUMBER_in_anything2829  */
+static	ANTLR3_BITWORD FOLLOW_NUMBER_in_anything2829_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_NUMBER_in_anything2829	= { FOLLOW_NUMBER_in_anything2829_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINED_SYMBOL_in_anything2835  */
+static	ANTLR3_BITWORD FOLLOW_DEFINED_SYMBOL_in_anything2835_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DEFINED_SYMBOL_in_anything2835	= { FOLLOW_DEFINED_SYMBOL_in_anything2835_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LOWER_WORD_SINGLE_QUOTED_in_unquotedFileName3414  */
+static	ANTLR3_BITWORD FOLLOW_LOWER_WORD_SINGLE_QUOTED_in_unquotedFileName3414_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_LOWER_WORD_SINGLE_QUOTED_in_unquotedFileName3414	= { FOLLOW_LOWER_WORD_SINGLE_QUOTED_in_unquotedFileName3414_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SINGLE_QUOTED_in_unquotedFileName3420  */
+static	ANTLR3_BITWORD FOLLOW_SINGLE_QUOTED_in_unquotedFileName3420_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SINGLE_QUOTED_in_unquotedFileName3420	= { FOLLOW_SINGLE_QUOTED_in_unquotedFileName3420_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_atomicWord_in_nameN3439  */
+static	ANTLR3_BITWORD FOLLOW_atomicWord_in_nameN3439_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_atomicWord_in_nameN3439	= { FOLLOW_atomicWord_in_nameN3439_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NUMBER_in_nameN3445  */
+static	ANTLR3_BITWORD FOLLOW_NUMBER_in_nameN3445_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_NUMBER_in_nameN3445	= { FOLLOW_NUMBER_in_nameN3445_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FOF_TOK_in_atomicWord3461  */
+static	ANTLR3_BITWORD FOLLOW_FOF_TOK_in_atomicWord3461_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FOF_TOK_in_atomicWord3461	= { FOLLOW_FOF_TOK_in_atomicWord3461_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CNF_TOK_in_atomicWord3472  */
+static	ANTLR3_BITWORD FOLLOW_CNF_TOK_in_atomicWord3472_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_CNF_TOK_in_atomicWord3472	= { FOLLOW_CNF_TOK_in_atomicWord3472_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_THF_TOK_in_atomicWord3483  */
+static	ANTLR3_BITWORD FOLLOW_THF_TOK_in_atomicWord3483_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_THF_TOK_in_atomicWord3483	= { FOLLOW_THF_TOK_in_atomicWord3483_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TFF_TOK_in_atomicWord3494  */
+static	ANTLR3_BITWORD FOLLOW_TFF_TOK_in_atomicWord3494_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_TFF_TOK_in_atomicWord3494	= { FOLLOW_TFF_TOK_in_atomicWord3494_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TYPE_TOK_in_atomicWord3505  */
+static	ANTLR3_BITWORD FOLLOW_TYPE_TOK_in_atomicWord3505_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_TYPE_TOK_in_atomicWord3505	= { FOLLOW_TYPE_TOK_in_atomicWord3505_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INCLUDE_TOK_in_atomicWord3515  */
+static	ANTLR3_BITWORD FOLLOW_INCLUDE_TOK_in_atomicWord3515_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INCLUDE_TOK_in_atomicWord3515	= { FOLLOW_INCLUDE_TOK_in_atomicWord3515_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LOWER_WORD_in_atomicWord3522  */
+static	ANTLR3_BITWORD FOLLOW_LOWER_WORD_in_atomicWord3522_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_LOWER_WORD_in_atomicWord3522	= { FOLLOW_LOWER_WORD_in_atomicWord3522_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LOWER_WORD_SINGLE_QUOTED_in_atomicWord3530  */
+static	ANTLR3_BITWORD FOLLOW_LOWER_WORD_SINGLE_QUOTED_in_atomicWord3530_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_LOWER_WORD_SINGLE_QUOTED_in_atomicWord3530	= { FOLLOW_LOWER_WORD_SINGLE_QUOTED_in_atomicWord3530_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SINGLE_QUOTED_in_atomicWord3542  */
+static	ANTLR3_BITWORD FOLLOW_SINGLE_QUOTED_in_atomicWord3542_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SINGLE_QUOTED_in_atomicWord3542	= { FOLLOW_SINGLE_QUOTED_in_atomicWord3542_bits, 1	};
+
+
+/* ==============================================
+ * Parsing rules
+ */
+/**
+ * $ANTLR start parseExpr
+ * ../../../../../../src/parser/tptp/Tptp.g:141:1: parseExpr returns [CVC4::parser::tptp::myExpr expr] : ( cnfFormula[expr] | EOF );
+ */
+static CVC4::parser::tptp::myExpr
+parseExpr(pTptpParser ctx)
+{
+    CVC4::parser::tptp::myExpr expr;
+
+
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:142:3: ( cnfFormula[expr] | EOF )
+
+            ANTLR3_UINT32 alt1;
+
+            alt1=2;
+
+            switch ( LA(1) )
+            {
+            case CNF_TOK:
+            case DISTINCT_OBJECT:
+            case FALSE_TOK:
+            case FOF_TOK:
+            case INCLUDE_TOK:
+            case LOWER_WORD:
+            case LOWER_WORD_SINGLE_QUOTED:
+            case LPAREN_TOK:
+            case NOT_TOK:
+            case NUMBER:
+            case SINGLE_QUOTED:
+            case TFF_TOK:
+            case THF_TOK:
+            case TRUE_TOK:
+            case TYPE_TOK:
+            case UPPER_WORD:
+            case 56:
+            case 57:
+            case 58:
+            case 59:
+            case 60:
+            case 61:
+            case 62:
+            case 63:
+            case 65:
+            case 66:
+            case 67:
+            case 69:
+            case 71:
+            case 72:
+            case 73:
+            case 74:
+            case 75:
+            case 76:
+            case 77:
+            case 78:
+            case 79:
+            case 80:
+            case 81:
+            case 83:
+            case 84:
+            case 85:
+            case 86:
+            case 87:
+            	{
+            		alt1=1;
+            	}
+                break;
+            case EOF:
+            	{
+            		alt1=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 1;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleparseExprEx;
+
+            }
+
+            switch (alt1)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:142:5: cnfFormula[expr]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_cnfFormula_in_parseExpr114);
+        	        cnfFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseExprEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:143:5: EOF
+        	    {
+        	         MATCHT(EOF, &FOLLOW_EOF_in_parseExpr121);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseExprEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleparseExprEx; /* Prevent compiler warnings */
+    ruleparseExprEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return expr;
+}
+/* $ANTLR end parseExpr */
+
+/**
+ * $ANTLR start parseCommand
+ * ../../../../../../src/parser/tptp/Tptp.g:150:1: parseCommand returns [CVC4::Command* cmd = NULL] : ( CNF_TOK LPAREN_TOK nameN[name] COMMA_TOK formulaRole[fr] COMMA_TOK cnfFormula[expr] ( COMMA_TOK ( anything )* )? RPAREN_TOK DOT_TOK | FOF_TOK LPAREN_TOK nameN[name] COMMA_TOK formulaRole[fr] COMMA_TOK fofFormula[expr] ( COMMA_TOK ( anything )* )? RPAREN_TOK DOT_TOK | TFF_TOK LPAREN_TOK nameN[name] COMMA_TOK ( TYPE_TOK COMMA_TOK tffTypedAtom[cmd] | formulaRole[fr] COMMA_TOK tffFormula[e [...]
+ */
+static CVC4::Command*
+parseCommand(pTptpParser ctx)
+{
+    CVC4::Command* cmd;
+
+
+
+      Expr expr;
+      Tptp::FormulaRole fr;
+      std::string name, inclSymbol;
+
+    /* Initialize rule variables
+     */
+    cmd =  NULL;
+
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:157:3: ( CNF_TOK LPAREN_TOK nameN[name] COMMA_TOK formulaRole[fr] COMMA_TOK cnfFormula[expr] ( COMMA_TOK ( anything )* )? RPAREN_TOK DOT_TOK | FOF_TOK LPAREN_TOK nameN[name] COMMA_TOK formulaRole[fr] COMMA_TOK fofFormula[expr] ( COMMA_TOK ( anything )* )? RPAREN_TOK DOT_TOK | TFF_TOK LPAREN_TOK nameN[name] COMMA_TOK ( TYPE_TOK COMMA_TOK tffTypedAtom[cmd] | formulaRole[fr] COMMA_TOK tffFormula[expr] ( COMMA_TOK ( anything )* )? ) RP [...]
+
+            ANTLR3_UINT32 alt11;
+
+            alt11=5;
+
+            switch ( LA(1) )
+            {
+            case CNF_TOK:
+            	{
+            		alt11=1;
+            	}
+                break;
+            case FOF_TOK:
+            	{
+            		alt11=2;
+            	}
+                break;
+            case TFF_TOK:
+            	{
+            		alt11=3;
+            	}
+                break;
+            case INCLUDE_TOK:
+            	{
+            		alt11=4;
+            	}
+                break;
+            case EOF:
+            	{
+            		alt11=5;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 11;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleparseCommandEx;
+
+            }
+
+            switch (alt11)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:157:5: CNF_TOK LPAREN_TOK nameN[name] COMMA_TOK formulaRole[fr] COMMA_TOK cnfFormula[expr] ( COMMA_TOK ( anything )* )? RPAREN_TOK DOT_TOK
+        	    {
+        	         MATCHT(CNF_TOK, &FOLLOW_CNF_TOK_in_parseCommand146);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_parseCommand148);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_nameN_in_parseCommand150);
+        	        nameN(ctx, name);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_parseCommand153);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formulaRole_in_parseCommand155);
+        	        formulaRole(ctx, fr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_parseCommand158);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->cnf = true; PARSER_STATE->fof = false; PARSER_STATE->pushScope(); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_cnfFormula_in_parseCommand168);
+        	        cnfFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->popScope();
+        	                std::vector<Expr> bvl = PARSER_STATE->getFreeVar();
+        	                if(!bvl.empty()) {
+        	                  expr = MK_EXPR(kind::FORALL,MK_EXPR(kind::BOUND_VAR_LIST,bvl),expr);
+        	                };
+        	              
+        	        }
+
+
+        	        // ../../../../../../src/parser/tptp/Tptp.g:166:5: ( COMMA_TOK ( anything )* )?
+        	        {
+        	            int alt3=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case COMMA_TOK:
+        	                	{
+        	                		alt3=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt3)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:166:6: COMMA_TOK ( anything )*
+        	        	    {
+        	        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_parseCommand180);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleparseCommandEx;
+        	        	        }
+
+
+        	        	        // ../../../../../../src/parser/tptp/Tptp.g:166:16: ( anything )*
+
+        	        	        for (;;)
+        	        	        {
+        	        	            int alt2=2;
+        	        	            switch ( LA(1) )
+        	        	            {
+        	        	            case AND_TOK:
+        	        	            case BANG_TOK:
+        	        	            case CNF_TOK:
+        	        	            case COLON_TOK:
+        	        	            case COMMA_TOK:
+        	        	            case DEFINED_SYMBOL:
+        	        	            case DISEQUAL_TOK:
+        	        	            case DISTINCT_OBJECT:
+        	        	            case DOT_TOK:
+        	        	            case EQUAL_TOK:
+        	        	            case FALSE_TOK:
+        	        	            case FOF_TOK:
+        	        	            case IFF_TOK:
+        	        	            case IMPLIES_TOK:
+        	        	            case INCLUDE_TOK:
+        	        	            case LBRACK_TOK:
+        	        	            case LOWER_WORD:
+        	        	            case LOWER_WORD_SINGLE_QUOTED:
+        	        	            case LPAREN_TOK:
+        	        	            case MARK_TOK:
+        	        	            case MINUS_TOK:
+        	        	            case NOT_TOK:
+        	        	            case NUMBER:
+        	        	            case OR_TOK:
+        	        	            case PLUS_TOK:
+        	        	            case REVAND_TOK:
+        	        	            case REVIFF_TOK:
+        	        	            case REVIMPLIES_TOK:
+        	        	            case REVOR_TOK:
+        	        	            case SINGLE_QUOTED:
+        	        	            case TFF_TOK:
+        	        	            case THF_TOK:
+        	        	            case TIMES_TOK:
+        	        	            case TRUE_TOK:
+        	        	            case TYPE_TOK:
+        	        	            case UPPER_WORD:
+        	        	            	{
+        	        	            		alt2=1;
+        	        	            	}
+        	        	                break;
+
+        	        	            }
+
+        	        	            switch (alt2)
+        	        	            {
+        	        	        	case 1:
+        	        	        	    // ../../../../../../src/parser/tptp/Tptp.g:166:16: anything
+        	        	        	    {
+        	        	        	        FOLLOWPUSH(FOLLOW_anything_in_parseCommand182);
+        	        	        	        anything(ctx);
+
+        	        	        	        FOLLOWPOP();
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto ruleparseCommandEx;
+        	        	        	        }
+
+
+        	        	        	    }
+        	        	        	    break;
+
+        	        	        	default:
+        	        	        	    goto loop2;	/* break out of the loop */
+        	        	        	    break;
+        	        	            }
+        	        	        }
+        	        	        loop2: ; /* Jump out to here if this rule does not match */
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_parseCommand187);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	         MATCHT(DOT_TOK, &FOLLOW_DOT_TOK_in_parseCommand189);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        {
+
+        	                  cmd = PARSER_STATE->makeCommand(fr, expr, /* cnf == */ true);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:170:5: FOF_TOK LPAREN_TOK nameN[name] COMMA_TOK formulaRole[fr] COMMA_TOK fofFormula[expr] ( COMMA_TOK ( anything )* )? RPAREN_TOK DOT_TOK
+        	    {
+        	         MATCHT(FOF_TOK, &FOLLOW_FOF_TOK_in_parseCommand201);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_parseCommand203);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_nameN_in_parseCommand205);
+        	        nameN(ctx, name);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_parseCommand208);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_formulaRole_in_parseCommand210);
+        	        formulaRole(ctx, fr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_parseCommand213);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->cnf = false; PARSER_STATE->fof = true; 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_fofFormula_in_parseCommand225);
+        	        fofFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/tptp/Tptp.g:172:22: ( COMMA_TOK ( anything )* )?
+        	        {
+        	            int alt5=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case COMMA_TOK:
+        	                	{
+        	                		alt5=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt5)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:172:23: COMMA_TOK ( anything )*
+        	        	    {
+        	        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_parseCommand229);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleparseCommandEx;
+        	        	        }
+
+
+        	        	        // ../../../../../../src/parser/tptp/Tptp.g:172:33: ( anything )*
+
+        	        	        for (;;)
+        	        	        {
+        	        	            int alt4=2;
+        	        	            switch ( LA(1) )
+        	        	            {
+        	        	            case AND_TOK:
+        	        	            case BANG_TOK:
+        	        	            case CNF_TOK:
+        	        	            case COLON_TOK:
+        	        	            case COMMA_TOK:
+        	        	            case DEFINED_SYMBOL:
+        	        	            case DISEQUAL_TOK:
+        	        	            case DISTINCT_OBJECT:
+        	        	            case DOT_TOK:
+        	        	            case EQUAL_TOK:
+        	        	            case FALSE_TOK:
+        	        	            case FOF_TOK:
+        	        	            case IFF_TOK:
+        	        	            case IMPLIES_TOK:
+        	        	            case INCLUDE_TOK:
+        	        	            case LBRACK_TOK:
+        	        	            case LOWER_WORD:
+        	        	            case LOWER_WORD_SINGLE_QUOTED:
+        	        	            case LPAREN_TOK:
+        	        	            case MARK_TOK:
+        	        	            case MINUS_TOK:
+        	        	            case NOT_TOK:
+        	        	            case NUMBER:
+        	        	            case OR_TOK:
+        	        	            case PLUS_TOK:
+        	        	            case REVAND_TOK:
+        	        	            case REVIFF_TOK:
+        	        	            case REVIMPLIES_TOK:
+        	        	            case REVOR_TOK:
+        	        	            case SINGLE_QUOTED:
+        	        	            case TFF_TOK:
+        	        	            case THF_TOK:
+        	        	            case TIMES_TOK:
+        	        	            case TRUE_TOK:
+        	        	            case TYPE_TOK:
+        	        	            case UPPER_WORD:
+        	        	            	{
+        	        	            		alt4=1;
+        	        	            	}
+        	        	                break;
+
+        	        	            }
+
+        	        	            switch (alt4)
+        	        	            {
+        	        	        	case 1:
+        	        	        	    // ../../../../../../src/parser/tptp/Tptp.g:172:33: anything
+        	        	        	    {
+        	        	        	        FOLLOWPUSH(FOLLOW_anything_in_parseCommand231);
+        	        	        	        anything(ctx);
+
+        	        	        	        FOLLOWPOP();
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto ruleparseCommandEx;
+        	        	        	        }
+
+
+        	        	        	    }
+        	        	        	    break;
+
+        	        	        	default:
+        	        	        	    goto loop4;	/* break out of the loop */
+        	        	        	    break;
+        	        	            }
+        	        	        }
+        	        	        loop4: ; /* Jump out to here if this rule does not match */
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_parseCommand236);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	         MATCHT(DOT_TOK, &FOLLOW_DOT_TOK_in_parseCommand238);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        {
+
+        	                  cmd = PARSER_STATE->makeCommand(fr, expr, /* cnf == */ false);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:176:5: TFF_TOK LPAREN_TOK nameN[name] COMMA_TOK ( TYPE_TOK COMMA_TOK tffTypedAtom[cmd] | formulaRole[fr] COMMA_TOK tffFormula[expr] ( COMMA_TOK ( anything )* )? ) RPAREN_TOK DOT_TOK
+        	    {
+        	         MATCHT(TFF_TOK, &FOLLOW_TFF_TOK_in_parseCommand250);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_parseCommand252);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_nameN_in_parseCommand254);
+        	        nameN(ctx, name);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_parseCommand257);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/tptp/Tptp.g:177:5: ( TYPE_TOK COMMA_TOK tffTypedAtom[cmd] | formulaRole[fr] COMMA_TOK tffFormula[expr] ( COMMA_TOK ( anything )* )? )
+        	        {
+        	            int alt8=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case TYPE_TOK:
+        	            	{
+        	            		alt8=1;
+        	            	}
+        	                break;
+        	            case LOWER_WORD:
+        	            	{
+        	            		alt8=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 8;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto ruleparseCommandEx;
+
+        	            }
+
+        	            switch (alt8)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:177:7: TYPE_TOK COMMA_TOK tffTypedAtom[cmd]
+        	        	    {
+        	        	         MATCHT(TYPE_TOK, &FOLLOW_TYPE_TOK_in_parseCommand265);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleparseCommandEx;
+        	        	        }
+
+
+        	        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_parseCommand267);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleparseCommandEx;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_tffTypedAtom_in_parseCommand269);
+        	        	        tffTypedAtom(ctx, cmd);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleparseCommandEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:178:7: formulaRole[fr] COMMA_TOK tffFormula[expr] ( COMMA_TOK ( anything )* )?
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_formulaRole_in_parseCommand278);
+        	        	        formulaRole(ctx, fr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleparseCommandEx;
+        	        	        }
+
+
+        	        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_parseCommand281);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleparseCommandEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             PARSER_STATE->cnf = false; PARSER_STATE->fof = false; 
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_tffFormula_in_parseCommand297);
+        	        	        tffFormula(ctx, expr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleparseCommandEx;
+        	        	        }
+
+
+        	        	        // ../../../../../../src/parser/tptp/Tptp.g:180:24: ( COMMA_TOK ( anything )* )?
+        	        	        {
+        	        	            int alt7=2;
+        	        	            switch ( LA(1) )
+        	        	            {
+        	        	                case COMMA_TOK:
+        	        	                	{
+        	        	                		alt7=1;
+        	        	                	}
+        	        	                    break;
+        	        	            }
+
+        	        	            switch (alt7)
+        	        	            {
+        	        	        	case 1:
+        	        	        	    // ../../../../../../src/parser/tptp/Tptp.g:180:25: COMMA_TOK ( anything )*
+        	        	        	    {
+        	        	        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_parseCommand301);
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto ruleparseCommandEx;
+        	        	        	        }
+
+
+        	        	        	        // ../../../../../../src/parser/tptp/Tptp.g:180:35: ( anything )*
+
+        	        	        	        for (;;)
+        	        	        	        {
+        	        	        	            int alt6=2;
+        	        	        	            switch ( LA(1) )
+        	        	        	            {
+        	        	        	            case AND_TOK:
+        	        	        	            case BANG_TOK:
+        	        	        	            case CNF_TOK:
+        	        	        	            case COLON_TOK:
+        	        	        	            case COMMA_TOK:
+        	        	        	            case DEFINED_SYMBOL:
+        	        	        	            case DISEQUAL_TOK:
+        	        	        	            case DISTINCT_OBJECT:
+        	        	        	            case DOT_TOK:
+        	        	        	            case EQUAL_TOK:
+        	        	        	            case FALSE_TOK:
+        	        	        	            case FOF_TOK:
+        	        	        	            case IFF_TOK:
+        	        	        	            case IMPLIES_TOK:
+        	        	        	            case INCLUDE_TOK:
+        	        	        	            case LBRACK_TOK:
+        	        	        	            case LOWER_WORD:
+        	        	        	            case LOWER_WORD_SINGLE_QUOTED:
+        	        	        	            case LPAREN_TOK:
+        	        	        	            case MARK_TOK:
+        	        	        	            case MINUS_TOK:
+        	        	        	            case NOT_TOK:
+        	        	        	            case NUMBER:
+        	        	        	            case OR_TOK:
+        	        	        	            case PLUS_TOK:
+        	        	        	            case REVAND_TOK:
+        	        	        	            case REVIFF_TOK:
+        	        	        	            case REVIMPLIES_TOK:
+        	        	        	            case REVOR_TOK:
+        	        	        	            case SINGLE_QUOTED:
+        	        	        	            case TFF_TOK:
+        	        	        	            case THF_TOK:
+        	        	        	            case TIMES_TOK:
+        	        	        	            case TRUE_TOK:
+        	        	        	            case TYPE_TOK:
+        	        	        	            case UPPER_WORD:
+        	        	        	            	{
+        	        	        	            		alt6=1;
+        	        	        	            	}
+        	        	        	                break;
+
+        	        	        	            }
+
+        	        	        	            switch (alt6)
+        	        	        	            {
+        	        	        	        	case 1:
+        	        	        	        	    // ../../../../../../src/parser/tptp/Tptp.g:180:35: anything
+        	        	        	        	    {
+        	        	        	        	        FOLLOWPUSH(FOLLOW_anything_in_parseCommand303);
+        	        	        	        	        anything(ctx);
+
+        	        	        	        	        FOLLOWPOP();
+        	        	        	        	        if  (HASEXCEPTION())
+        	        	        	        	        {
+        	        	        	        	            goto ruleparseCommandEx;
+        	        	        	        	        }
+
+
+        	        	        	        	    }
+        	        	        	        	    break;
+
+        	        	        	        	default:
+        	        	        	        	    goto loop6;	/* break out of the loop */
+        	        	        	        	    break;
+        	        	        	            }
+        	        	        	        }
+        	        	        	        loop6: ; /* Jump out to here if this rule does not match */
+
+
+        	        	        	    }
+        	        	        	    break;
+
+        	        	            }
+        	        	        }
+
+        	        	        {
+
+        	        	                    cmd = PARSER_STATE->makeCommand(fr, expr, /* cnf == */ false);
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_parseCommand322);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	         MATCHT(DOT_TOK, &FOLLOW_DOT_TOK_in_parseCommand324);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:185:5: INCLUDE_TOK LPAREN_TOK unquotedFileName[name] ( COMMA_TOK LBRACK_TOK nameN[inclSymbol] ( COMMA_TOK nameN[inclSymbol] )* RBRACK_TOK )? RPAREN_TOK DOT_TOK
+        	    {
+        	         MATCHT(INCLUDE_TOK, &FOLLOW_INCLUDE_TOK_in_parseCommand330);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_parseCommand332);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_unquotedFileName_in_parseCommand334);
+        	        unquotedFileName(ctx, name);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/tptp/Tptp.g:186:5: ( COMMA_TOK LBRACK_TOK nameN[inclSymbol] ( COMMA_TOK nameN[inclSymbol] )* RBRACK_TOK )?
+        	        {
+        	            int alt10=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case COMMA_TOK:
+        	                	{
+        	                		alt10=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt10)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:186:7: COMMA_TOK LBRACK_TOK nameN[inclSymbol] ( COMMA_TOK nameN[inclSymbol] )* RBRACK_TOK
+        	        	    {
+        	        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_parseCommand343);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleparseCommandEx;
+        	        	        }
+
+
+        	        	         MATCHT(LBRACK_TOK, &FOLLOW_LBRACK_TOK_in_parseCommand345);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleparseCommandEx;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_nameN_in_parseCommand347);
+        	        	        nameN(ctx, inclSymbol);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleparseCommandEx;
+        	        	        }
+
+
+        	        	        // ../../../../../../src/parser/tptp/Tptp.g:187:7: ( COMMA_TOK nameN[inclSymbol] )*
+
+        	        	        for (;;)
+        	        	        {
+        	        	            int alt9=2;
+        	        	            switch ( LA(1) )
+        	        	            {
+        	        	            case COMMA_TOK:
+        	        	            	{
+        	        	            		alt9=1;
+        	        	            	}
+        	        	                break;
+
+        	        	            }
+
+        	        	            switch (alt9)
+        	        	            {
+        	        	        	case 1:
+        	        	        	    // ../../../../../../src/parser/tptp/Tptp.g:187:9: COMMA_TOK nameN[inclSymbol]
+        	        	        	    {
+        	        	        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_parseCommand358);
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto ruleparseCommandEx;
+        	        	        	        }
+
+
+        	        	        	        FOLLOWPUSH(FOLLOW_nameN_in_parseCommand360);
+        	        	        	        nameN(ctx, inclSymbol);
+
+        	        	        	        FOLLOWPOP();
+        	        	        	        if  (HASEXCEPTION())
+        	        	        	        {
+        	        	        	            goto ruleparseCommandEx;
+        	        	        	        }
+
+
+        	        	        	    }
+        	        	        	    break;
+
+        	        	        	default:
+        	        	        	    goto loop9;	/* break out of the loop */
+        	        	        	    break;
+        	        	            }
+        	        	        }
+        	        	        loop9: ; /* Jump out to here if this rule does not match */
+
+
+        	        	         MATCHT(RBRACK_TOK, &FOLLOW_RBRACK_TOK_in_parseCommand366);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleparseCommandEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_parseCommand375);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	         MATCHT(DOT_TOK, &FOLLOW_DOT_TOK_in_parseCommand377);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        {
+        	             /* TODO - implement symbol filtering for file inclusion.
+        	                   * the following removes duplicates and "all", just need to pass it
+        	                   * through to includeFile() and implement it there.
+        	                  std::sort(inclArgs.begin(), inclArgs.end());
+        	                  std::vector<std::string>::iterator it =
+        	                    std::unique(inclArgs.begin(), inclArgs.end());
+        	                  inclArgs.resize(std::distance(inclArgs.begin(), it));
+        	                  it = std::lower_bound(inclArgs.begin(), inclArgs.end(), std::string("all"));
+        	                  if(it != inclArgs.end() && *it == "all") {
+        	                    inclArgs.erase(it);
+        	                  }
+        	                  */
+        	                  PARSER_STATE->includeFile(name /* , inclArgs */ );
+        	                  // The command of the included file will be produced at the next parseCommand() call
+        	                  cmd = new EmptyCommand("include::" + name);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:205:5: EOF
+        	    {
+        	         MATCHT(EOF, &FOLLOW_EOF_in_parseCommand389);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseCommandEx;
+        	        }
+
+
+        	        {
+
+        	                  std::string filename = PARSER_STATE->getInput()->getInputStreamName();
+        	                  size_t i = filename.find_last_of('/');
+        	                  if(i != std::string::npos) {
+        	                    filename = filename.substr(i + 1);
+        	                  }
+        	                  if(filename.substr(filename.length() - 2) == ".p") {
+        	                    filename = filename.substr(0, filename.length() - 2);
+        	                  }
+        	                  CommandSequence* seq = new CommandSequence();
+        	                  seq->addCommand(new SetInfoCommand("name", SExpr(filename)));
+        	                  if(PARSER_STATE->hasConjecture()) {
+        	                    seq->addCommand(new QueryCommand(MK_CONST(bool(false))));
+        	                  } else {
+        	                    seq->addCommand(new CheckSatCommand());
+        	                  }
+        	                  PARSER_STATE->preemptCommand(seq);
+        	                  cmd = NULL;
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleparseCommandEx; /* Prevent compiler warnings */
+    ruleparseCommandEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return cmd;
+}
+/* $ANTLR end parseCommand */
+
+/**
+ * $ANTLR start formulaRole
+ * ../../../../../../src/parser/tptp/Tptp.g:228:1: formulaRole[CVC4::parser::Tptp::FormulaRole& role] : LOWER_WORD ;
+ */
+static void
+formulaRole(pTptpParser ctx, CVC4::parser::Tptp::FormulaRole& role)
+{
+    pANTLR3_COMMON_TOKEN    LOWER_WORD1;
+
+    /* Initialize rule variables
+     */
+
+    LOWER_WORD1       = NULL;
+
+    {
+        // ../../../../../../src/parser/tptp/Tptp.g:229:3: ( LOWER_WORD )
+        // ../../../../../../src/parser/tptp/Tptp.g:229:5: LOWER_WORD
+        {
+            LOWER_WORD1 = (pANTLR3_COMMON_TOKEN) MATCHT(LOWER_WORD, &FOLLOW_LOWER_WORD_in_formulaRole411);
+            if  (HASEXCEPTION())
+            {
+                goto ruleformulaRoleEx;
+            }
+
+
+            {
+
+                      std::string r = AntlrInput::tokenText(LOWER_WORD1);
+                      if      (r == "axiom")              role = Tptp::FR_AXIOM;
+                      else if (r == "hypothesis")         role = Tptp::FR_HYPOTHESIS;
+                      else if (r == "definition")         role = Tptp::FR_DEFINITION;
+                      else if (r == "assumption")         role = Tptp::FR_ASSUMPTION;
+                      else if (r == "lemma")              role = Tptp::FR_LEMMA;
+                      else if (r == "theorem")            role = Tptp::FR_THEOREM;
+                      else if (r == "negated_conjecture") role = Tptp::FR_NEGATED_CONJECTURE;
+                      else if (r == "conjecture")         role = Tptp::FR_CONJECTURE;
+                      else if (r == "unknown")            role = Tptp::FR_UNKNOWN;
+                      else if (r == "plain")              role = Tptp::FR_PLAIN;
+                      else if (r == "fi_domain")          role = Tptp::FR_FI_DOMAIN;
+                      else if (r == "fi_functor")         role = Tptp::FR_FI_FUNCTORS;
+                      else if (r == "fi_predicate")       role = Tptp::FR_FI_PREDICATES;
+                      else if (r == "type")               role = Tptp::FR_TYPE;
+                      else PARSER_STATE->parseError("Invalid formula role: " + r);
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleformulaRoleEx; /* Prevent compiler warnings */
+    ruleformulaRoleEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end formulaRole */
+
+/**
+ * $ANTLR start cnfFormula
+ * ../../../../../../src/parser/tptp/Tptp.g:256:1: cnfFormula[CVC4::Expr& expr] : ( LPAREN_TOK cnfDisjunction[expr] RPAREN_TOK | cnfDisjunction[expr] );
+ */
+static void
+cnfFormula(pTptpParser ctx, CVC4::Expr& expr)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:257:3: ( LPAREN_TOK cnfDisjunction[expr] RPAREN_TOK | cnfDisjunction[expr] )
+
+            ANTLR3_UINT32 alt12;
+
+            alt12=2;
+
+            switch ( LA(1) )
+            {
+            case LPAREN_TOK:
+            	{
+            		alt12=1;
+            	}
+                break;
+            case CNF_TOK:
+            case DISTINCT_OBJECT:
+            case FALSE_TOK:
+            case FOF_TOK:
+            case INCLUDE_TOK:
+            case LOWER_WORD:
+            case LOWER_WORD_SINGLE_QUOTED:
+            case NOT_TOK:
+            case NUMBER:
+            case SINGLE_QUOTED:
+            case TFF_TOK:
+            case THF_TOK:
+            case TRUE_TOK:
+            case TYPE_TOK:
+            case UPPER_WORD:
+            case 56:
+            case 57:
+            case 58:
+            case 59:
+            case 60:
+            case 61:
+            case 62:
+            case 63:
+            case 65:
+            case 66:
+            case 67:
+            case 69:
+            case 71:
+            case 72:
+            case 73:
+            case 74:
+            case 75:
+            case 76:
+            case 77:
+            case 78:
+            case 79:
+            case 80:
+            case 81:
+            case 83:
+            case 84:
+            case 85:
+            case 86:
+            case 87:
+            	{
+            		alt12=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 12;
+                EXCEPTION->state        = 0;
+
+
+                goto rulecnfFormulaEx;
+
+            }
+
+            switch (alt12)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:257:5: LPAREN_TOK cnfDisjunction[expr] RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_cnfFormula439);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecnfFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_cnfDisjunction_in_cnfFormula441);
+        	        cnfDisjunction(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecnfFormulaEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_cnfFormula444);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecnfFormulaEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:258:5: cnfDisjunction[expr]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_cnfDisjunction_in_cnfFormula450);
+        	        cnfDisjunction(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecnfFormulaEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulecnfFormulaEx; /* Prevent compiler warnings */
+    rulecnfFormulaEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end cnfFormula */
+
+/**
+ * $ANTLR start cnfDisjunction
+ * ../../../../../../src/parser/tptp/Tptp.g:262:1: cnfDisjunction[CVC4::Expr& expr] : cnfLiteral[expr] ( OR_TOK cnfLiteral[expr] )* ;
+ */
+static void
+cnfDisjunction(pTptpParser ctx, CVC4::Expr& expr)
+{
+
+      std::vector<Expr> args;
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/tptp/Tptp.g:266:3: ( cnfLiteral[expr] ( OR_TOK cnfLiteral[expr] )* )
+        // ../../../../../../src/parser/tptp/Tptp.g:266:5: cnfLiteral[expr] ( OR_TOK cnfLiteral[expr] )*
+        {
+            FOLLOWPUSH(FOLLOW_cnfLiteral_in_cnfDisjunction469);
+            cnfLiteral(ctx, expr);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulecnfDisjunctionEx;
+            }
+
+
+            {
+                 args.push_back(expr); 
+            }
+
+
+            // ../../../../../../src/parser/tptp/Tptp.g:267:5: ( OR_TOK cnfLiteral[expr] )*
+
+            for (;;)
+            {
+                int alt13=2;
+                switch ( LA(1) )
+                {
+                case OR_TOK:
+                	{
+                		alt13=1;
+                	}
+                    break;
+
+                }
+
+                switch (alt13)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/tptp/Tptp.g:267:7: OR_TOK cnfLiteral[expr]
+            	    {
+            	         MATCHT(OR_TOK, &FOLLOW_OR_TOK_in_cnfDisjunction480);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulecnfDisjunctionEx;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_cnfLiteral_in_cnfDisjunction482);
+            	        cnfLiteral(ctx, expr);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto rulecnfDisjunctionEx;
+            	        }
+
+
+            	        {
+            	             args.push_back(expr); 
+            	        }
+
+
+            	    }
+            	    break;
+
+            	default:
+            	    goto loop13;	/* break out of the loop */
+            	    break;
+                }
+            }
+            loop13: ; /* Jump out to here if this rule does not match */
+
+
+            {
+                 if(args.size() > 1) {
+                        expr = MK_EXPR_ASSOCIATIVE(kind::OR, args);
+                      } // else its already in the expr
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulecnfDisjunctionEx; /* Prevent compiler warnings */
+    rulecnfDisjunctionEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end cnfDisjunction */
+
+/**
+ * $ANTLR start cnfLiteral
+ * ../../../../../../src/parser/tptp/Tptp.g:274:1: cnfLiteral[CVC4::Expr& expr] : ( atomicFormula[expr] | NOT_TOK atomicFormula[expr] );
+ */
+static void
+cnfLiteral(pTptpParser ctx, CVC4::Expr& expr)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:275:3: ( atomicFormula[expr] | NOT_TOK atomicFormula[expr] )
+
+            ANTLR3_UINT32 alt14;
+
+            alt14=2;
+
+            switch ( LA(1) )
+            {
+            case CNF_TOK:
+            case DISTINCT_OBJECT:
+            case FALSE_TOK:
+            case FOF_TOK:
+            case INCLUDE_TOK:
+            case LOWER_WORD:
+            case LOWER_WORD_SINGLE_QUOTED:
+            case NUMBER:
+            case SINGLE_QUOTED:
+            case TFF_TOK:
+            case THF_TOK:
+            case TRUE_TOK:
+            case TYPE_TOK:
+            case UPPER_WORD:
+            case 56:
+            case 57:
+            case 58:
+            case 59:
+            case 60:
+            case 61:
+            case 62:
+            case 63:
+            case 65:
+            case 66:
+            case 67:
+            case 69:
+            case 71:
+            case 72:
+            case 73:
+            case 74:
+            case 75:
+            case 76:
+            case 77:
+            case 78:
+            case 79:
+            case 80:
+            case 81:
+            case 83:
+            case 84:
+            case 85:
+            case 86:
+            case 87:
+            	{
+            		alt14=1;
+            	}
+                break;
+            case NOT_TOK:
+            	{
+            		alt14=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 14;
+                EXCEPTION->state        = 0;
+
+
+                goto rulecnfLiteralEx;
+
+            }
+
+            switch (alt14)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:275:5: atomicFormula[expr]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_atomicFormula_in_cnfLiteral506);
+        	        atomicFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecnfLiteralEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:276:5: NOT_TOK atomicFormula[expr]
+        	    {
+        	         MATCHT(NOT_TOK, &FOLLOW_NOT_TOK_in_cnfLiteral513);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecnfLiteralEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_atomicFormula_in_cnfLiteral515);
+        	        atomicFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulecnfLiteralEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_EXPR(kind::NOT, expr); 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulecnfLiteralEx; /* Prevent compiler warnings */
+    rulecnfLiteralEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end cnfLiteral */
+
+/**
+ * $ANTLR start atomicFormula
+ * ../../../../../../src/parser/tptp/Tptp.g:280:1: atomicFormula[CVC4::Expr& expr] : ( atomicWord[name] ( LPAREN_TOK arguments[args] RPAREN_TOK )? ( equalOp[equal] term[expr2] |) | definedFun[expr] LPAREN_TOK arguments[args] RPAREN_TOK equalOp[equal] term[expr2] | ( simpleTerm[expr] | letTerm[expr] | conditionalTerm[expr] ) equalOp[equal] term[expr2] | definedPred[expr] LPAREN_TOK arguments[args] RPAREN_TOK | definedProp[expr] );
+ */
+static void
+atomicFormula(pTptpParser ctx, CVC4::Expr& expr)
+{
+
+      Expr expr2;
+      std::string name;
+      std::vector<CVC4::Expr> args;
+      bool equal;
+
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:287:3: ( atomicWord[name] ( LPAREN_TOK arguments[args] RPAREN_TOK )? ( equalOp[equal] term[expr2] |) | definedFun[expr] LPAREN_TOK arguments[args] RPAREN_TOK equalOp[equal] term[expr2] | ( simpleTerm[expr] | letTerm[expr] | conditionalTerm[expr] ) equalOp[equal] term[expr2] | definedPred[expr] LPAREN_TOK arguments[args] RPAREN_TOK | definedProp[expr] )
+
+            ANTLR3_UINT32 alt18;
+
+            alt18=5;
+
+            switch ( LA(1) )
+            {
+            case CNF_TOK:
+            case FOF_TOK:
+            case INCLUDE_TOK:
+            case LOWER_WORD:
+            case LOWER_WORD_SINGLE_QUOTED:
+            case SINGLE_QUOTED:
+            case TFF_TOK:
+            case THF_TOK:
+            case TYPE_TOK:
+            	{
+            		alt18=1;
+            	}
+                break;
+            case 56:
+            case 57:
+            case 59:
+            case 72:
+            case 73:
+            case 74:
+            case 75:
+            case 76:
+            case 77:
+            case 78:
+            case 79:
+            case 80:
+            case 81:
+            case 83:
+            case 84:
+            case 85:
+            case 86:
+            case 87:
+            	{
+            		alt18=2;
+            	}
+                break;
+            case DISTINCT_OBJECT:
+            case NUMBER:
+            case UPPER_WORD:
+            case 65:
+            case 69:
+            case 71:
+            	{
+            		alt18=3;
+            	}
+                break;
+            case 58:
+            case 60:
+            case 61:
+            case 62:
+            case 63:
+            case 66:
+            case 67:
+            	{
+            		alt18=4;
+            	}
+                break;
+            case FALSE_TOK:
+            case TRUE_TOK:
+            	{
+            		alt18=5;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 18;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleatomicFormulaEx;
+
+            }
+
+            switch (alt18)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:287:5: atomicWord[name] ( LPAREN_TOK arguments[args] RPAREN_TOK )? ( equalOp[equal] term[expr2] |)
+        	    {
+        	        FOLLOWPUSH(FOLLOW_atomicWord_in_atomicFormula538);
+        	        atomicWord(ctx, name);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicFormulaEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/tptp/Tptp.g:287:22: ( LPAREN_TOK arguments[args] RPAREN_TOK )?
+        	        {
+        	            int alt15=2;
+        	            switch ( LA(1) )
+        	            {
+        	                case LPAREN_TOK:
+        	                	{
+        	                		alt15=1;
+        	                	}
+        	                    break;
+        	            }
+
+        	            switch (alt15)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:287:23: LPAREN_TOK arguments[args] RPAREN_TOK
+        	        	    {
+        	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_atomicFormula542);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleatomicFormulaEx;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_arguments_in_atomicFormula544);
+        	        	        arguments(ctx, args);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleatomicFormulaEx;
+        	        	        }
+
+
+        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_atomicFormula547);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleatomicFormulaEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        // ../../../../../../src/parser/tptp/Tptp.g:288:5: ( equalOp[equal] term[expr2] |)
+        	        {
+        	            int alt16=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case DISEQUAL_TOK:
+        	            case EQUAL_TOK:
+        	            	{
+        	            		alt16=1;
+        	            	}
+        	                break;
+        	            case EOF:
+        	            case AND_TOK:
+        	            case COMMA_TOK:
+        	            case IFF_TOK:
+        	            case IMPLIES_TOK:
+        	            case OR_TOK:
+        	            case REVAND_TOK:
+        	            case REVIFF_TOK:
+        	            case REVIMPLIES_TOK:
+        	            case REVOR_TOK:
+        	            case RPAREN_TOK:
+        	            	{
+        	            		alt16=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 16;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto ruleatomicFormulaEx;
+
+        	            }
+
+        	            switch (alt16)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:288:7: equalOp[equal] term[expr2]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_equalOp_in_atomicFormula557);
+        	        	        equalOp(ctx, equal);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleatomicFormulaEx;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_term_in_atomicFormula560);
+        	        	        term(ctx, expr2);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleatomicFormulaEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             // equality/disequality between terms
+        	        	                    PARSER_STATE->makeApplication(expr, name, args, true);
+        	        	                    expr = MK_EXPR(kind::EQUAL, expr, expr2);
+        	        	                    if(!equal) expr = MK_EXPR(kind::NOT, expr);
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:294:7: 
+        	        	    {
+        	        	        {
+        	        	             // predicate
+        	        	                    PARSER_STATE->makeApplication(expr, name, args, false);
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:298:5: definedFun[expr] LPAREN_TOK arguments[args] RPAREN_TOK equalOp[equal] term[expr2]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_definedFun_in_atomicFormula589);
+        	        definedFun(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicFormulaEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_atomicFormula592);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_arguments_in_atomicFormula594);
+        	        arguments(ctx, args);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicFormulaEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_atomicFormula597);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_equalOp_in_atomicFormula603);
+        	        equalOp(ctx, equal);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_atomicFormula606);
+        	        term(ctx, expr2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicFormulaEx;
+        	        }
+
+
+        	        {
+        	             expr = EXPR_MANAGER->mkExpr(expr, args);
+        	                  expr = MK_EXPR(kind::EQUAL, expr, expr2);
+        	                  if(!equal) expr = MK_EXPR(kind::NOT, expr);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:304:5: ( simpleTerm[expr] | letTerm[expr] | conditionalTerm[expr] ) equalOp[equal] term[expr2]
+        	    {
+        	        // ../../../../../../src/parser/tptp/Tptp.g:304:5: ( simpleTerm[expr] | letTerm[expr] | conditionalTerm[expr] )
+        	        {
+        	            int alt17=3;
+        	            switch ( LA(1) )
+        	            {
+        	            case DISTINCT_OBJECT:
+        	            case NUMBER:
+        	            case UPPER_WORD:
+        	            	{
+        	            		alt17=1;
+        	            	}
+        	                break;
+        	            case 69:
+        	            case 71:
+        	            	{
+        	            		alt17=2;
+        	            	}
+        	                break;
+        	            case 65:
+        	            	{
+        	            		alt17=3;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 17;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto ruleatomicFormulaEx;
+
+        	            }
+
+        	            switch (alt17)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:304:6: simpleTerm[expr]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_simpleTerm_in_atomicFormula620);
+        	        	        simpleTerm(ctx, expr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleatomicFormulaEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:304:25: letTerm[expr]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_letTerm_in_atomicFormula625);
+        	        	        letTerm(ctx, expr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleatomicFormulaEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 3:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:304:41: conditionalTerm[expr]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_conditionalTerm_in_atomicFormula630);
+        	        	        conditionalTerm(ctx, expr);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleatomicFormulaEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        FOLLOWPUSH(FOLLOW_equalOp_in_atomicFormula638);
+        	        equalOp(ctx, equal);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_atomicFormula641);
+        	        term(ctx, expr2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicFormulaEx;
+        	        }
+
+
+        	        {
+        	             // equality/disequality between terms
+        	                  expr = MK_EXPR(kind::EQUAL, expr, expr2);
+        	                  if(!equal) expr = MK_EXPR(kind::NOT, expr);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:310:5: definedPred[expr] LPAREN_TOK arguments[args] RPAREN_TOK
+        	    {
+        	        FOLLOWPUSH(FOLLOW_definedPred_in_atomicFormula654);
+        	        definedPred(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicFormulaEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_atomicFormula657);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_arguments_in_atomicFormula659);
+        	        arguments(ctx, args);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicFormulaEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_atomicFormula662);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicFormulaEx;
+        	        }
+
+
+        	        {
+        	             expr = EXPR_MANAGER->mkExpr(expr, args); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:312:5: definedProp[expr]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_definedProp_in_atomicFormula674);
+        	        definedProp(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicFormulaEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleatomicFormulaEx; /* Prevent compiler warnings */
+    ruleatomicFormulaEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end atomicFormula */
+
+/**
+ * $ANTLR start definedProp
+ * ../../../../../../src/parser/tptp/Tptp.g:317:1: definedProp[CVC4::Expr& expr] : ( TRUE_TOK | FALSE_TOK );
+ */
+static void
+definedProp(pTptpParser ctx, CVC4::Expr& expr)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:318:3: ( TRUE_TOK | FALSE_TOK )
+
+            ANTLR3_UINT32 alt19;
+
+            alt19=2;
+
+            switch ( LA(1) )
+            {
+            case TRUE_TOK:
+            	{
+            		alt19=1;
+            	}
+                break;
+            case FALSE_TOK:
+            	{
+            		alt19=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 19;
+                EXCEPTION->state        = 0;
+
+
+                goto ruledefinedPropEx;
+
+            }
+
+            switch (alt19)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:318:5: TRUE_TOK
+        	    {
+        	         MATCHT(TRUE_TOK, &FOLLOW_TRUE_TOK_in_definedProp691);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedPropEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_CONST(bool(true)); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:319:5: FALSE_TOK
+        	    {
+        	         MATCHT(FALSE_TOK, &FOLLOW_FALSE_TOK_in_definedProp699);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedPropEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_CONST(bool(false)); 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruledefinedPropEx; /* Prevent compiler warnings */
+    ruledefinedPropEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end definedProp */
+
+/**
+ * $ANTLR start definedPred
+ * ../../../../../../src/parser/tptp/Tptp.g:322:1: definedPred[CVC4::Expr& expr] : ( '$less' | '$lesseq' | '$greater' | '$greatereq' | '$is_rat' | '$is_int' | '$distinct' );
+ */
+static void
+definedPred(pTptpParser ctx, CVC4::Expr& expr)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:323:3: ( '$less' | '$lesseq' | '$greater' | '$greatereq' | '$is_rat' | '$is_int' | '$distinct' )
+
+            ANTLR3_UINT32 alt20;
+
+            alt20=7;
+
+            switch ( LA(1) )
+            {
+            case 66:
+            	{
+            		alt20=1;
+            	}
+                break;
+            case 67:
+            	{
+            		alt20=2;
+            	}
+                break;
+            case 60:
+            	{
+            		alt20=3;
+            	}
+                break;
+            case 61:
+            	{
+            		alt20=4;
+            	}
+                break;
+            case 63:
+            	{
+            		alt20=5;
+            	}
+                break;
+            case 62:
+            	{
+            		alt20=6;
+            	}
+                break;
+            case 58:
+            	{
+            		alt20=7;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 20;
+                EXCEPTION->state        = 0;
+
+
+                goto ruledefinedPredEx;
+
+            }
+
+            switch (alt20)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:323:5: '$less'
+        	    {
+        	         MATCHT(66, &FOLLOW_66_in_definedPred716);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedPredEx;
+        	        }
+
+
+        	        {
+        	             expr = EXPR_MANAGER->operatorOf(CVC4::kind::LT); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:324:5: '$lesseq'
+        	    {
+        	         MATCHT(67, &FOLLOW_67_in_definedPred724);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedPredEx;
+        	        }
+
+
+        	        {
+        	             expr = EXPR_MANAGER->operatorOf(CVC4::kind::LEQ); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:325:5: '$greater'
+        	    {
+        	         MATCHT(60, &FOLLOW_60_in_definedPred732);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedPredEx;
+        	        }
+
+
+        	        {
+        	             expr = EXPR_MANAGER->operatorOf(CVC4::kind::GT); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:326:5: '$greatereq'
+        	    {
+        	         MATCHT(61, &FOLLOW_61_in_definedPred740);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedPredEx;
+        	        }
+
+
+        	        {
+        	             expr = EXPR_MANAGER->operatorOf(CVC4::kind::GEQ); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:327:5: '$is_rat'
+        	    {
+        	         MATCHT(63, &FOLLOW_63_in_definedPred748);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedPredEx;
+        	        }
+
+
+        	        {
+        	             Expr n = EXPR_MANAGER->mkBoundVar("N", EXPR_MANAGER->realType());
+        	                  n = MK_EXPR(CVC4::kind::BOUND_VAR_LIST, n);
+        	                  expr = MK_EXPR(CVC4::kind::LAMBDA, n, MK_CONST(bool(true)));
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:332:5: '$is_int'
+        	    {
+        	         MATCHT(62, &FOLLOW_62_in_definedPred761);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedPredEx;
+        	        }
+
+
+        	        {
+        	             expr = EXPR_MANAGER->operatorOf(CVC4::kind::IS_INTEGER); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:333:5: '$distinct'
+        	    {
+        	         MATCHT(58, &FOLLOW_58_in_definedPred769);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedPredEx;
+        	        }
+
+
+        	        {
+        	             expr = EXPR_MANAGER->operatorOf(CVC4::kind::DISTINCT); 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruledefinedPredEx; /* Prevent compiler warnings */
+    ruledefinedPredEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end definedPred */
+
+/**
+ * $ANTLR start definedFun
+ * ../../../../../../src/parser/tptp/Tptp.g:336:1: definedFun[CVC4::Expr& expr] : ( '$uminus' | '$sum' | '$difference' | '$product' | '$quotient' | ( '$quotient_e' | '$remainder_e' ) | ( '$quotient_t' | '$remainder_t' ) | ( '$quotient_f' | '$remainder_f' ) | '$floor' | '$ceiling' | '$truncate' | '$round' | '$to_int' | '$to_rat' | '$to_real' );
+ */
+static void
+definedFun(pTptpParser ctx, CVC4::Expr& expr)
+{
+
+      bool remainder = false;
+
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:340:3: ( '$uminus' | '$sum' | '$difference' | '$product' | '$quotient' | ( '$quotient_e' | '$remainder_e' ) | ( '$quotient_t' | '$remainder_t' ) | ( '$quotient_f' | '$remainder_f' ) | '$floor' | '$ceiling' | '$truncate' | '$round' | '$to_int' | '$to_rat' | '$to_real' )
+
+            ANTLR3_UINT32 alt24;
+
+            alt24=15;
+
+            switch ( LA(1) )
+            {
+            case 87:
+            	{
+            		alt24=1;
+            	}
+                break;
+            case 81:
+            	{
+            		alt24=2;
+            	}
+                break;
+            case 57:
+            	{
+            		alt24=3;
+            	}
+                break;
+            case 72:
+            	{
+            		alt24=4;
+            	}
+                break;
+            case 73:
+            	{
+            		alt24=5;
+            	}
+                break;
+            case 74:
+            case 77:
+            	{
+            		alt24=6;
+            	}
+                break;
+            case 76:
+            case 79:
+            	{
+            		alt24=7;
+            	}
+                break;
+            case 75:
+            case 78:
+            	{
+            		alt24=8;
+            	}
+                break;
+            case 59:
+            	{
+            		alt24=9;
+            	}
+                break;
+            case 56:
+            	{
+            		alt24=10;
+            	}
+                break;
+            case 86:
+            	{
+            		alt24=11;
+            	}
+                break;
+            case 80:
+            	{
+            		alt24=12;
+            	}
+                break;
+            case 83:
+            	{
+            		alt24=13;
+            	}
+                break;
+            case 84:
+            	{
+            		alt24=14;
+            	}
+                break;
+            case 85:
+            	{
+            		alt24=15;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 24;
+                EXCEPTION->state        = 0;
+
+
+                goto ruledefinedFunEx;
+
+            }
+
+            switch (alt24)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:340:5: '$uminus'
+        	    {
+        	         MATCHT(87, &FOLLOW_87_in_definedFun790);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedFunEx;
+        	        }
+
+
+        	        {
+        	             expr = EXPR_MANAGER->operatorOf(CVC4::kind::UMINUS); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:341:5: '$sum'
+        	    {
+        	         MATCHT(81, &FOLLOW_81_in_definedFun798);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedFunEx;
+        	        }
+
+
+        	        {
+        	             expr = EXPR_MANAGER->operatorOf(CVC4::kind::PLUS); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:342:5: '$difference'
+        	    {
+        	         MATCHT(57, &FOLLOW_57_in_definedFun806);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedFunEx;
+        	        }
+
+
+        	        {
+        	             expr = EXPR_MANAGER->operatorOf(CVC4::kind::MINUS); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:343:5: '$product'
+        	    {
+        	         MATCHT(72, &FOLLOW_72_in_definedFun814);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedFunEx;
+        	        }
+
+
+        	        {
+        	             expr = EXPR_MANAGER->operatorOf(CVC4::kind::MULT); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:344:5: '$quotient'
+        	    {
+        	         MATCHT(73, &FOLLOW_73_in_definedFun822);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedFunEx;
+        	        }
+
+
+        	        {
+        	             expr = EXPR_MANAGER->operatorOf(CVC4::kind::DIVISION_TOTAL); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:345:5: ( '$quotient_e' | '$remainder_e' )
+        	    {
+        	        // ../../../../../../src/parser/tptp/Tptp.g:345:5: ( '$quotient_e' | '$remainder_e' )
+        	        {
+        	            int alt21=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case 74:
+        	            	{
+        	            		alt21=1;
+        	            	}
+        	                break;
+        	            case 77:
+        	            	{
+        	            		alt21=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 21;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto ruledefinedFunEx;
+
+        	            }
+
+        	            switch (alt21)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:345:7: '$quotient_e'
+        	        	    {
+        	        	         MATCHT(74, &FOLLOW_74_in_definedFun832);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruledefinedFunEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             remainder = false; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:346:7: '$remainder_e'
+        	        	    {
+        	        	         MATCHT(77, &FOLLOW_77_in_definedFun842);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruledefinedFunEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             remainder = true; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        {
+        	             Expr n = EXPR_MANAGER->mkBoundVar("N", EXPR_MANAGER->realType());
+        	                  Expr d = EXPR_MANAGER->mkBoundVar("D", EXPR_MANAGER->realType());
+        	                  Expr formals = MK_EXPR(CVC4::kind::BOUND_VAR_LIST, n, d);
+        	                  expr = MK_EXPR(CVC4::kind::DIVISION_TOTAL, n, d);
+        	                  expr = MK_EXPR(CVC4::kind::ITE, MK_EXPR(CVC4::kind::GEQ, d, MK_CONST(Rational(0))),
+        	                                                  MK_EXPR(CVC4::kind::TO_INTEGER, expr),
+        	                                                  MK_EXPR(CVC4::kind::UMINUS, MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::UMINUS, expr))));
+        	                  if(remainder) {
+        	                    expr = MK_EXPR(CVC4::kind::MINUS, n, MK_EXPR(CVC4::kind::MULT, expr, d));
+        	                  }
+        	                  expr = MK_EXPR(CVC4::kind::LAMBDA, formals, expr);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:360:5: ( '$quotient_t' | '$remainder_t' )
+        	    {
+        	        // ../../../../../../src/parser/tptp/Tptp.g:360:5: ( '$quotient_t' | '$remainder_t' )
+        	        {
+        	            int alt22=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case 76:
+        	            	{
+        	            		alt22=1;
+        	            	}
+        	                break;
+        	            case 79:
+        	            	{
+        	            		alt22=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 22;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto ruledefinedFunEx;
+
+        	            }
+
+        	            switch (alt22)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:360:7: '$quotient_t'
+        	        	    {
+        	        	         MATCHT(76, &FOLLOW_76_in_definedFun864);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruledefinedFunEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             remainder = false; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:361:7: '$remainder_t'
+        	        	    {
+        	        	         MATCHT(79, &FOLLOW_79_in_definedFun874);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruledefinedFunEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             remainder = true; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        {
+        	             Expr n = EXPR_MANAGER->mkBoundVar("N", EXPR_MANAGER->realType());
+        	                  Expr d = EXPR_MANAGER->mkBoundVar("D", EXPR_MANAGER->realType());
+        	                  Expr formals = MK_EXPR(CVC4::kind::BOUND_VAR_LIST, n, d);
+        	                  expr = MK_EXPR(CVC4::kind::DIVISION_TOTAL, n, d);
+        	                  expr = MK_EXPR(CVC4::kind::ITE, MK_EXPR(CVC4::kind::GEQ, expr, MK_CONST(Rational(0))),
+        	                                                  MK_EXPR(CVC4::kind::TO_INTEGER, expr),
+        	                                                  MK_EXPR(CVC4::kind::UMINUS, MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::UMINUS, expr))));
+        	                  if(remainder) {
+        	                    expr = MK_EXPR(CVC4::kind::MINUS, n, MK_EXPR(CVC4::kind::MULT, expr, d));
+        	                  }
+        	                  expr = MK_EXPR(CVC4::kind::LAMBDA, formals, expr);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 8:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:375:5: ( '$quotient_f' | '$remainder_f' )
+        	    {
+        	        // ../../../../../../src/parser/tptp/Tptp.g:375:5: ( '$quotient_f' | '$remainder_f' )
+        	        {
+        	            int alt23=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case 75:
+        	            	{
+        	            		alt23=1;
+        	            	}
+        	                break;
+        	            case 78:
+        	            	{
+        	            		alt23=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 23;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto ruledefinedFunEx;
+
+        	            }
+
+        	            switch (alt23)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:375:7: '$quotient_f'
+        	        	    {
+        	        	         MATCHT(75, &FOLLOW_75_in_definedFun896);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruledefinedFunEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             remainder = false; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:376:7: '$remainder_f'
+        	        	    {
+        	        	         MATCHT(78, &FOLLOW_78_in_definedFun906);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruledefinedFunEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             remainder = true; 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	        {
+        	             Expr n = EXPR_MANAGER->mkBoundVar("N", EXPR_MANAGER->realType());
+        	                  Expr d = EXPR_MANAGER->mkBoundVar("D", EXPR_MANAGER->realType());
+        	                  Expr formals = MK_EXPR(CVC4::kind::BOUND_VAR_LIST, n, d);
+        	                  expr = MK_EXPR(CVC4::kind::DIVISION_TOTAL, n, d);
+        	                  expr = MK_EXPR(CVC4::kind::TO_INTEGER, expr);
+        	                  if(remainder) {
+        	                    expr = MK_EXPR(CVC4::kind::MINUS, n, MK_EXPR(CVC4::kind::MULT, expr, d));
+        	                  }
+        	                  expr = MK_EXPR(CVC4::kind::LAMBDA, formals, expr);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 9:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:388:5: '$floor'
+        	    {
+        	         MATCHT(59, &FOLLOW_59_in_definedFun926);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedFunEx;
+        	        }
+
+
+        	        {
+        	             expr = EXPR_MANAGER->operatorOf(CVC4::kind::TO_INTEGER); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 10:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:389:5: '$ceiling'
+        	    {
+        	         MATCHT(56, &FOLLOW_56_in_definedFun934);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedFunEx;
+        	        }
+
+
+        	        {
+        	             Expr n = EXPR_MANAGER->mkBoundVar("N", EXPR_MANAGER->realType());
+        	                  Expr formals = MK_EXPR(CVC4::kind::BOUND_VAR_LIST, n);
+        	                  expr = MK_EXPR(CVC4::kind::UMINUS, MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::UMINUS, n)));
+        	                  expr = MK_EXPR(CVC4::kind::LAMBDA, formals, expr);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 11:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:395:5: '$truncate'
+        	    {
+        	         MATCHT(86, &FOLLOW_86_in_definedFun946);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedFunEx;
+        	        }
+
+
+        	        {
+        	             Expr n = EXPR_MANAGER->mkBoundVar("N", EXPR_MANAGER->realType());
+        	                  Expr formals = MK_EXPR(CVC4::kind::BOUND_VAR_LIST, n);
+        	                  expr = MK_EXPR(CVC4::kind::ITE, MK_EXPR(CVC4::kind::GEQ, n, MK_CONST(Rational(0))),
+        	                                                  MK_EXPR(CVC4::kind::TO_INTEGER, n),
+        	                                                  MK_EXPR(CVC4::kind::UMINUS, MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::UMINUS, n))));
+        	                  expr = MK_EXPR(CVC4::kind::LAMBDA, formals, expr);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 12:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:403:5: '$round'
+        	    {
+        	         MATCHT(80, &FOLLOW_80_in_definedFun958);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedFunEx;
+        	        }
+
+
+        	        {
+        	             Expr n = EXPR_MANAGER->mkBoundVar("N", EXPR_MANAGER->realType());
+        	                  Expr formals = MK_EXPR(CVC4::kind::BOUND_VAR_LIST, n);
+        	                  Expr decPart = MK_EXPR(CVC4::kind::MINUS, n, MK_EXPR(CVC4::kind::TO_INTEGER, n));
+        	                  expr = MK_EXPR(CVC4::kind::ITE, MK_EXPR(CVC4::kind::LT, decPart, MK_CONST(Rational(1, 2))),
+        	                                                  // if decPart < 0.5, round down
+        	                                                  MK_EXPR(CVC4::kind::TO_INTEGER, n),
+        	                         MK_EXPR(CVC4::kind::ITE, MK_EXPR(CVC4::kind::GT, decPart, MK_CONST(Rational(1, 2))),
+        	                                                  // if decPart > 0.5, round up
+        	                                                  MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::PLUS, n, MK_CONST(Rational(1)))),
+        	                                                  // if decPart == 0.5, round to nearest even integer:
+        	                                                  // result is: to_int(n/2 + .5) * 2
+        	                                                  MK_EXPR(CVC4::kind::MULT, MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::PLUS, MK_EXPR(CVC4::kind::DIVISION_TOTAL, n, MK_CONST(Rational(2))), MK_CONST(Rational(1, 2)))), MK_CONST(Rational(2)))));
+        	                  expr = MK_EXPR(CVC4::kind::LAMBDA, formals, expr);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 13:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:418:5: '$to_int'
+        	    {
+        	         MATCHT(83, &FOLLOW_83_in_definedFun970);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedFunEx;
+        	        }
+
+
+        	        {
+        	             expr = EXPR_MANAGER->operatorOf(CVC4::kind::TO_INTEGER); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 14:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:419:5: '$to_rat'
+        	    {
+        	         MATCHT(84, &FOLLOW_84_in_definedFun978);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedFunEx;
+        	        }
+
+
+        	        {
+        	             expr = EXPR_MANAGER->operatorOf(CVC4::kind::TO_REAL); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 15:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:420:5: '$to_real'
+        	    {
+        	         MATCHT(85, &FOLLOW_85_in_definedFun986);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruledefinedFunEx;
+        	        }
+
+
+        	        {
+        	             expr = EXPR_MANAGER->operatorOf(CVC4::kind::TO_REAL); 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruledefinedFunEx; /* Prevent compiler warnings */
+    ruledefinedFunEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end definedFun */
+
+/**
+ * $ANTLR start equalOp
+ * ../../../../../../src/parser/tptp/Tptp.g:426:1: equalOp[bool& equal] : ( EQUAL_TOK | DISEQUAL_TOK );
+ */
+static void
+equalOp(pTptpParser ctx, bool& equal)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:427:3: ( EQUAL_TOK | DISEQUAL_TOK )
+
+            ANTLR3_UINT32 alt25;
+
+            alt25=2;
+
+            switch ( LA(1) )
+            {
+            case EQUAL_TOK:
+            	{
+            		alt25=1;
+            	}
+                break;
+            case DISEQUAL_TOK:
+            	{
+            		alt25=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 25;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleequalOpEx;
+
+            }
+
+            switch (alt25)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:427:5: EQUAL_TOK
+        	    {
+        	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_equalOp1005);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleequalOpEx;
+        	        }
+
+
+        	        {
+        	             equal = true; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:428:5: DISEQUAL_TOK
+        	    {
+        	         MATCHT(DISEQUAL_TOK, &FOLLOW_DISEQUAL_TOK_in_equalOp1016);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleequalOpEx;
+        	        }
+
+
+        	        {
+        	             equal = false; 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleequalOpEx; /* Prevent compiler warnings */
+    ruleequalOpEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end equalOp */
+
+/**
+ * $ANTLR start term
+ * ../../../../../../src/parser/tptp/Tptp.g:431:1: term[CVC4::Expr& expr] : ( functionTerm[expr] | conditionalTerm[expr] | simpleTerm[expr] | letTerm[expr] );
+ */
+static void
+term(pTptpParser ctx, CVC4::Expr& expr)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:432:3: ( functionTerm[expr] | conditionalTerm[expr] | simpleTerm[expr] | letTerm[expr] )
+
+            ANTLR3_UINT32 alt26;
+
+            alt26=4;
+
+            switch ( LA(1) )
+            {
+            case CNF_TOK:
+            case FOF_TOK:
+            case INCLUDE_TOK:
+            case LOWER_WORD:
+            case LOWER_WORD_SINGLE_QUOTED:
+            case SINGLE_QUOTED:
+            case TFF_TOK:
+            case THF_TOK:
+            case TYPE_TOK:
+            case 56:
+            case 57:
+            case 59:
+            case 72:
+            case 73:
+            case 74:
+            case 75:
+            case 76:
+            case 77:
+            case 78:
+            case 79:
+            case 80:
+            case 81:
+            case 83:
+            case 84:
+            case 85:
+            case 86:
+            case 87:
+            	{
+            		alt26=1;
+            	}
+                break;
+            case 65:
+            	{
+            		alt26=2;
+            	}
+                break;
+            case DISTINCT_OBJECT:
+            case NUMBER:
+            case UPPER_WORD:
+            	{
+            		alt26=3;
+            	}
+                break;
+            case 69:
+            case 71:
+            	{
+            		alt26=4;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 26;
+                EXCEPTION->state        = 0;
+
+
+                goto ruletermEx;
+
+            }
+
+            switch (alt26)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:432:5: functionTerm[expr]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_functionTerm_in_term1032);
+        	        functionTerm(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:433:5: conditionalTerm[expr]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_conditionalTerm_in_term1039);
+        	        conditionalTerm(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:434:5: simpleTerm[expr]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_simpleTerm_in_term1046);
+        	        simpleTerm(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:435:5: letTerm[expr]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_letTerm_in_term1053);
+        	        letTerm(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletermEx; /* Prevent compiler warnings */
+    ruletermEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end term */
+
+/**
+ * $ANTLR start letTerm
+ * ../../../../../../src/parser/tptp/Tptp.g:438:1: letTerm[CVC4::Expr& expr] : ( '$let_ft' LPAREN_TOK tffLetFormulaDefn[lhs, rhs] COMMA_TOK term[expr] RPAREN_TOK | '$let_tt' LPAREN_TOK tffLetTermDefn[lhs, rhs] COMMA_TOK term[expr] RPAREN_TOK );
+ */
+static void
+letTerm(pTptpParser ctx, CVC4::Expr& expr)
+{
+
+      CVC4::Expr lhs, rhs;
+
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:442:3: ( '$let_ft' LPAREN_TOK tffLetFormulaDefn[lhs, rhs] COMMA_TOK term[expr] RPAREN_TOK | '$let_tt' LPAREN_TOK tffLetTermDefn[lhs, rhs] COMMA_TOK term[expr] RPAREN_TOK )
+
+            ANTLR3_UINT32 alt27;
+
+            alt27=2;
+
+            switch ( LA(1) )
+            {
+            case 69:
+            	{
+            		alt27=1;
+            	}
+                break;
+            case 71:
+            	{
+            		alt27=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 27;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleletTermEx;
+
+            }
+
+            switch (alt27)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:442:5: '$let_ft' LPAREN_TOK tffLetFormulaDefn[lhs, rhs] COMMA_TOK term[expr] RPAREN_TOK
+        	    {
+        	         MATCHT(69, &FOLLOW_69_in_letTerm1073);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleletTermEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_letTerm1075);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleletTermEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->pushScope(); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_tffLetFormulaDefn_in_letTerm1083);
+        	        tffLetFormulaDefn(ctx, lhs, rhs);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleletTermEx;
+        	        }
+
+
+        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_letTerm1086);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleletTermEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_letTerm1092);
+        	        term(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleletTermEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->popScope();
+        	                  expr = expr.substitute(lhs, rhs);
+        	                
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_letTerm1105);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleletTermEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:449:5: '$let_tt' LPAREN_TOK tffLetTermDefn[lhs, rhs] COMMA_TOK term[expr] RPAREN_TOK
+        	    {
+        	         MATCHT(71, &FOLLOW_71_in_letTerm1111);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleletTermEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_letTerm1113);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleletTermEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->pushScope(); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_tffLetTermDefn_in_letTerm1121);
+        	        tffLetTermDefn(ctx, lhs, rhs);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleletTermEx;
+        	        }
+
+
+        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_letTerm1124);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleletTermEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_letTerm1130);
+        	        term(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleletTermEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->popScope();
+        	                  expr = expr.substitute(lhs, rhs);
+        	                
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_letTerm1143);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleletTermEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleletTermEx; /* Prevent compiler warnings */
+    ruleletTermEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end letTerm */
+
+/**
+ * $ANTLR start simpleTerm
+ * ../../../../../../src/parser/tptp/Tptp.g:459:1: simpleTerm[CVC4::Expr& expr] : ( variable[expr] | NUMBER | DISTINCT_OBJECT );
+ */
+static void
+simpleTerm(pTptpParser ctx, CVC4::Expr& expr)
+{
+    pANTLR3_COMMON_TOKEN    DISTINCT_OBJECT2;
+
+    /* Initialize rule variables
+     */
+
+    DISTINCT_OBJECT2       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:460:3: ( variable[expr] | NUMBER | DISTINCT_OBJECT )
+
+            ANTLR3_UINT32 alt28;
+
+            alt28=3;
+
+            switch ( LA(1) )
+            {
+            case UPPER_WORD:
+            	{
+            		alt28=1;
+            	}
+                break;
+            case NUMBER:
+            	{
+            		alt28=2;
+            	}
+                break;
+            case DISTINCT_OBJECT:
+            	{
+            		alt28=3;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 28;
+                EXCEPTION->state        = 0;
+
+
+                goto rulesimpleTermEx;
+
+            }
+
+            switch (alt28)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:460:5: variable[expr]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_variable_in_simpleTerm1159);
+        	        variable(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:461:5: NUMBER
+        	    {
+        	         MATCHT(NUMBER, &FOLLOW_NUMBER_in_simpleTerm1166);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+
+
+        	        {
+        	             expr = PARSER_STATE->d_tmp_expr; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:462:5: DISTINCT_OBJECT
+        	    {
+        	        DISTINCT_OBJECT2 = (pANTLR3_COMMON_TOKEN) MATCHT(DISTINCT_OBJECT, &FOLLOW_DISTINCT_OBJECT_in_simpleTerm1174);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTermEx;
+        	        }
+
+
+        	        {
+        	             expr = PARSER_STATE->convertStrToUnsorted(AntlrInput::tokenText(DISTINCT_OBJECT2)); 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesimpleTermEx; /* Prevent compiler warnings */
+    rulesimpleTermEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end simpleTerm */
+
+/**
+ * $ANTLR start functionTerm
+ * ../../../../../../src/parser/tptp/Tptp.g:465:1: functionTerm[CVC4::Expr& expr] : ( plainTerm[expr] | definedFun[expr] LPAREN_TOK arguments[args] RPAREN_TOK );
+ */
+static void
+functionTerm(pTptpParser ctx, CVC4::Expr& expr)
+{
+
+      std::vector<CVC4::Expr> args;
+
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:469:3: ( plainTerm[expr] | definedFun[expr] LPAREN_TOK arguments[args] RPAREN_TOK )
+
+            ANTLR3_UINT32 alt29;
+
+            alt29=2;
+
+            switch ( LA(1) )
+            {
+            case CNF_TOK:
+            case FOF_TOK:
+            case INCLUDE_TOK:
+            case LOWER_WORD:
+            case LOWER_WORD_SINGLE_QUOTED:
+            case SINGLE_QUOTED:
+            case TFF_TOK:
+            case THF_TOK:
+            case TYPE_TOK:
+            	{
+            		alt29=1;
+            	}
+                break;
+            case 56:
+            case 57:
+            case 59:
+            case 72:
+            case 73:
+            case 74:
+            case 75:
+            case 76:
+            case 77:
+            case 78:
+            case 79:
+            case 80:
+            case 81:
+            case 83:
+            case 84:
+            case 85:
+            case 86:
+            case 87:
+            	{
+            		alt29=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 29;
+                EXCEPTION->state        = 0;
+
+
+                goto rulefunctionTermEx;
+
+            }
+
+            switch (alt29)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:469:5: plainTerm[expr]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_plainTerm_in_functionTerm1195);
+        	        plainTerm(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefunctionTermEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:470:5: definedFun[expr] LPAREN_TOK arguments[args] RPAREN_TOK
+        	    {
+        	        FOLLOWPUSH(FOLLOW_definedFun_in_functionTerm1202);
+        	        definedFun(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefunctionTermEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_functionTerm1205);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefunctionTermEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_arguments_in_functionTerm1207);
+        	        arguments(ctx, args);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefunctionTermEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_functionTerm1210);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefunctionTermEx;
+        	        }
+
+
+        	        {
+        	             expr = EXPR_MANAGER->mkExpr(expr, args); 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulefunctionTermEx; /* Prevent compiler warnings */
+    rulefunctionTermEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end functionTerm */
+
+/**
+ * $ANTLR start conditionalTerm
+ * ../../../../../../src/parser/tptp/Tptp.g:475:1: conditionalTerm[CVC4::Expr& expr] : '$ite_t' LPAREN_TOK tffLogicFormula[expr] COMMA_TOK term[expr2] COMMA_TOK term[expr3] RPAREN_TOK ;
+ */
+static void
+conditionalTerm(pTptpParser ctx, CVC4::Expr& expr)
+{
+
+      CVC4::Expr expr2, expr3;
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/tptp/Tptp.g:479:3: ( '$ite_t' LPAREN_TOK tffLogicFormula[expr] COMMA_TOK term[expr2] COMMA_TOK term[expr3] RPAREN_TOK )
+        // ../../../../../../src/parser/tptp/Tptp.g:479:5: '$ite_t' LPAREN_TOK tffLogicFormula[expr] COMMA_TOK term[expr2] COMMA_TOK term[expr3] RPAREN_TOK
+        {
+             MATCHT(65, &FOLLOW_65_in_conditionalTerm1236);
+            if  (HASEXCEPTION())
+            {
+                goto ruleconditionalTermEx;
+            }
+
+
+             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_conditionalTerm1238);
+            if  (HASEXCEPTION())
+            {
+                goto ruleconditionalTermEx;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_tffLogicFormula_in_conditionalTerm1240);
+            tffLogicFormula(ctx, expr);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleconditionalTermEx;
+            }
+
+
+             MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_conditionalTerm1243);
+            if  (HASEXCEPTION())
+            {
+                goto ruleconditionalTermEx;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_term_in_conditionalTerm1245);
+            term(ctx, expr2);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleconditionalTermEx;
+            }
+
+
+             MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_conditionalTerm1248);
+            if  (HASEXCEPTION())
+            {
+                goto ruleconditionalTermEx;
+            }
+
+
+            FOLLOWPUSH(FOLLOW_term_in_conditionalTerm1250);
+            term(ctx, expr3);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleconditionalTermEx;
+            }
+
+
+             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_conditionalTerm1253);
+            if  (HASEXCEPTION())
+            {
+                goto ruleconditionalTermEx;
+            }
+
+
+            {
+                 expr = EXPR_MANAGER->mkExpr(CVC4::kind::ITE, expr, expr2, expr3); 
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleconditionalTermEx; /* Prevent compiler warnings */
+    ruleconditionalTermEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end conditionalTerm */
+
+/**
+ * $ANTLR start plainTerm
+ * ../../../../../../src/parser/tptp/Tptp.g:483:1: plainTerm[CVC4::Expr& expr] : atomicWord[name] ( LPAREN_TOK arguments[args] RPAREN_TOK )? ;
+ */
+static void
+plainTerm(pTptpParser ctx, CVC4::Expr& expr)
+{
+
+      std::string name;
+      std::vector<Expr> args;
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/tptp/Tptp.g:488:3: ( atomicWord[name] ( LPAREN_TOK arguments[args] RPAREN_TOK )? )
+        // ../../../../../../src/parser/tptp/Tptp.g:488:5: atomicWord[name] ( LPAREN_TOK arguments[args] RPAREN_TOK )?
+        {
+            FOLLOWPUSH(FOLLOW_atomicWord_in_plainTerm1278);
+            atomicWord(ctx, name);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleplainTermEx;
+            }
+
+
+            // ../../../../../../src/parser/tptp/Tptp.g:488:22: ( LPAREN_TOK arguments[args] RPAREN_TOK )?
+            {
+                int alt30=2;
+                switch ( LA(1) )
+                {
+                    case LPAREN_TOK:
+                    	{
+                    		alt30=1;
+                    	}
+                        break;
+                }
+
+                switch (alt30)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/tptp/Tptp.g:488:23: LPAREN_TOK arguments[args] RPAREN_TOK
+            	    {
+            	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_plainTerm1282);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleplainTermEx;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_arguments_in_plainTerm1284);
+            	        arguments(ctx, args);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleplainTermEx;
+            	        }
+
+
+            	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_plainTerm1287);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleplainTermEx;
+            	        }
+
+
+            	    }
+            	    break;
+
+                }
+            }
+
+            {
+
+                       PARSER_STATE->makeApplication(expr,name,args,true);
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleplainTermEx; /* Prevent compiler warnings */
+    ruleplainTermEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end plainTerm */
+
+/**
+ * $ANTLR start arguments
+ * ../../../../../../src/parser/tptp/Tptp.g:494:1: arguments[std::vector<CVC4::Expr>& args] : term[expr] ( COMMA_TOK term[expr] )* ;
+ */
+static void
+arguments(pTptpParser ctx, std::vector<CVC4::Expr>& args)
+{
+
+      Expr expr;
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/tptp/Tptp.g:498:3: ( term[expr] ( COMMA_TOK term[expr] )* )
+        // ../../../../../../src/parser/tptp/Tptp.g:499:3: term[expr] ( COMMA_TOK term[expr] )*
+        {
+            FOLLOWPUSH(FOLLOW_term_in_arguments1316);
+            term(ctx, expr);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruleargumentsEx;
+            }
+
+
+            {
+                 args.push_back(expr); 
+            }
+
+
+            // ../../../../../../src/parser/tptp/Tptp.g:499:40: ( COMMA_TOK term[expr] )*
+
+            for (;;)
+            {
+                int alt31=2;
+                switch ( LA(1) )
+                {
+                case COMMA_TOK:
+                	{
+                		alt31=1;
+                	}
+                    break;
+
+                }
+
+                switch (alt31)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/tptp/Tptp.g:499:42: COMMA_TOK term[expr]
+            	    {
+            	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_arguments1323);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleargumentsEx;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_term_in_arguments1325);
+            	        term(ctx, expr);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleargumentsEx;
+            	        }
+
+
+            	        {
+            	             args.push_back(expr); 
+            	        }
+
+
+            	    }
+            	    break;
+
+            	default:
+            	    goto loop31;	/* break out of the loop */
+            	    break;
+                }
+            }
+            loop31: ; /* Jump out to here if this rule does not match */
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleargumentsEx; /* Prevent compiler warnings */
+    ruleargumentsEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end arguments */
+
+/**
+ * $ANTLR start variable
+ * ../../../../../../src/parser/tptp/Tptp.g:502:1: variable[CVC4::Expr& expr] : UPPER_WORD ;
+ */
+static void
+variable(pTptpParser ctx, CVC4::Expr& expr)
+{
+    pANTLR3_COMMON_TOKEN    UPPER_WORD3;
+
+    /* Initialize rule variables
+     */
+
+    UPPER_WORD3       = NULL;
+
+    {
+        // ../../../../../../src/parser/tptp/Tptp.g:503:3: ( UPPER_WORD )
+        // ../../../../../../src/parser/tptp/Tptp.g:503:5: UPPER_WORD
+        {
+            UPPER_WORD3 = (pANTLR3_COMMON_TOKEN) MATCHT(UPPER_WORD, &FOLLOW_UPPER_WORD_in_variable1345);
+            if  (HASEXCEPTION())
+            {
+                goto rulevariableEx;
+            }
+
+
+            {
+
+                      std::string name = AntlrInput::tokenText(UPPER_WORD3);
+                      if(!PARSER_STATE->cnf || PARSER_STATE->isDeclared(name)) {
+                        expr = PARSER_STATE->getVariable(name);
+                      } else {
+                        expr = PARSER_STATE->mkBoundVar(name, PARSER_STATE->d_unsorted);
+                        if(PARSER_STATE->cnf) PARSER_STATE->addFreeVar(expr);
+                      }
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulevariableEx; /* Prevent compiler warnings */
+    rulevariableEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end variable */
+
+/**
+ * $ANTLR start fofFormula
+ * ../../../../../../src/parser/tptp/Tptp.g:517:1: fofFormula[CVC4::Expr& expr] : fofLogicFormula[expr] ;
+ */
+static void
+fofFormula(pTptpParser ctx, CVC4::Expr& expr)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/tptp/Tptp.g:517:30: ( fofLogicFormula[expr] )
+        // ../../../../../../src/parser/tptp/Tptp.g:517:32: fofLogicFormula[expr]
+        {
+            FOLLOWPUSH(FOLLOW_fofLogicFormula_in_fofFormula1369);
+            fofLogicFormula(ctx, expr);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulefofFormulaEx;
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulefofFormulaEx; /* Prevent compiler warnings */
+    rulefofFormulaEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end fofFormula */
+
+/**
+ * $ANTLR start fofLogicFormula
+ * ../../../../../../src/parser/tptp/Tptp.g:519:1: fofLogicFormula[CVC4::Expr& expr] : fofUnitaryFormula[expr] ( ( fofBinaryNonAssoc[na] fofUnitaryFormula[expr2] ) | ( ( AND_TOK fofUnitaryFormula[expr] )+ ) | ( ( OR_TOK fofUnitaryFormula[expr] )+ ) )? ;
+ */
+static void
+fofLogicFormula(pTptpParser ctx, CVC4::Expr& expr)
+{
+
+      tptp::NonAssoc na;
+      std::vector< Expr > args;
+      Expr expr2;
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/tptp/Tptp.g:525:3: ( fofUnitaryFormula[expr] ( ( fofBinaryNonAssoc[na] fofUnitaryFormula[expr2] ) | ( ( AND_TOK fofUnitaryFormula[expr] )+ ) | ( ( OR_TOK fofUnitaryFormula[expr] )+ ) )? )
+        // ../../../../../../src/parser/tptp/Tptp.g:525:5: fofUnitaryFormula[expr] ( ( fofBinaryNonAssoc[na] fofUnitaryFormula[expr2] ) | ( ( AND_TOK fofUnitaryFormula[expr] )+ ) | ( ( OR_TOK fofUnitaryFormula[expr] )+ ) )?
+        {
+            FOLLOWPUSH(FOLLOW_fofUnitaryFormula_in_fofLogicFormula1387);
+            fofUnitaryFormula(ctx, expr);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto rulefofLogicFormulaEx;
+            }
+
+
+            // ../../../../../../src/parser/tptp/Tptp.g:526:5: ( ( fofBinaryNonAssoc[na] fofUnitaryFormula[expr2] ) | ( ( AND_TOK fofUnitaryFormula[expr] )+ ) | ( ( OR_TOK fofUnitaryFormula[expr] )+ ) )?
+            {
+                int alt34=4;
+                switch ( LA(1) )
+                {
+                    case IFF_TOK:
+                    case IMPLIES_TOK:
+                    case REVAND_TOK:
+                    case REVIFF_TOK:
+                    case REVIMPLIES_TOK:
+                    case REVOR_TOK:
+                    	{
+                    		alt34=1;
+                    	}
+                        break;
+                    case AND_TOK:
+                    	{
+                    		alt34=2;
+                    	}
+                        break;
+                    case OR_TOK:
+                    	{
+                    		alt34=3;
+                    	}
+                        break;
+                }
+
+                switch (alt34)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/tptp/Tptp.g:527:7: ( fofBinaryNonAssoc[na] fofUnitaryFormula[expr2] )
+            	    {
+            	        // ../../../../../../src/parser/tptp/Tptp.g:527:7: ( fofBinaryNonAssoc[na] fofUnitaryFormula[expr2] )
+            	        // ../../../../../../src/parser/tptp/Tptp.g:527:9: fofBinaryNonAssoc[na] fofUnitaryFormula[expr2]
+            	        {
+            	            FOLLOWPUSH(FOLLOW_fofBinaryNonAssoc_in_fofLogicFormula1405);
+            	            fofBinaryNonAssoc(ctx, na);
+
+            	            FOLLOWPOP();
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto rulefofLogicFormulaEx;
+            	            }
+
+
+            	            FOLLOWPUSH(FOLLOW_fofUnitaryFormula_in_fofLogicFormula1408);
+            	            fofUnitaryFormula(ctx, expr2);
+
+            	            FOLLOWPOP();
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto rulefofLogicFormulaEx;
+            	            }
+
+
+            	            {
+            	                 switch(na) {
+            	                           case tptp::NA_IFF:
+            	                             expr = MK_EXPR(kind::EQUAL,expr,expr2);
+            	                             break;
+            	                           case tptp::NA_REVIFF:
+            	                             expr = MK_EXPR(kind::XOR,expr,expr2);
+            	                             break;
+            	                           case tptp::NA_IMPLIES:
+            	                             expr = MK_EXPR(kind::IMPLIES,expr,expr2);
+            	                             break;
+            	                           case tptp::NA_REVIMPLIES:
+            	                             expr = MK_EXPR(kind::IMPLIES,expr2,expr);
+            	                             break;
+            	                           case tptp::NA_REVOR:
+            	                             expr = MK_EXPR(kind::NOT,MK_EXPR(kind::OR,expr,expr2));
+            	                             break;
+            	                           case tptp::NA_REVAND:
+            	                             expr = MK_EXPR(kind::NOT,MK_EXPR(kind::AND,expr,expr2));
+            	                             break;
+            	                          }
+            	                        
+            	            }
+
+
+            	        }
+
+
+            	    }
+            	    break;
+            	case 2:
+            	    // ../../../../../../src/parser/tptp/Tptp.g:551:7: ( ( AND_TOK fofUnitaryFormula[expr] )+ )
+            	    {
+            	        // ../../../../../../src/parser/tptp/Tptp.g:551:7: ( ( AND_TOK fofUnitaryFormula[expr] )+ )
+            	        // ../../../../../../src/parser/tptp/Tptp.g:551:9: ( AND_TOK fofUnitaryFormula[expr] )+
+            	        {
+            	            {
+            	                 args.push_back(expr); 
+            	            }
+
+
+            	            // ../../../../../../src/parser/tptp/Tptp.g:552:9: ( AND_TOK fofUnitaryFormula[expr] )+
+            	            {
+            	                int cnt32=0;
+
+            	                for (;;)
+            	                {
+            	                    int alt32=2;
+            	            	switch ( LA(1) )
+            	            	{
+            	            	case AND_TOK:
+            	            		{
+            	            			alt32=1;
+            	            		}
+            	            	    break;
+
+            	            	}
+
+            	            	switch (alt32)
+            	            	{
+            	            	    case 1:
+            	            	        // ../../../../../../src/parser/tptp/Tptp.g:552:11: AND_TOK fofUnitaryFormula[expr]
+            	            	        {
+            	            	             MATCHT(AND_TOK, &FOLLOW_AND_TOK_in_fofLogicFormula1456);
+            	            	            if  (HASEXCEPTION())
+            	            	            {
+            	            	                goto rulefofLogicFormulaEx;
+            	            	            }
+
+
+            	            	            FOLLOWPUSH(FOLLOW_fofUnitaryFormula_in_fofLogicFormula1458);
+            	            	            fofUnitaryFormula(ctx, expr);
+
+            	            	            FOLLOWPOP();
+            	            	            if  (HASEXCEPTION())
+            	            	            {
+            	            	                goto rulefofLogicFormulaEx;
+            	            	            }
+
+
+            	            	            {
+            	            	                 args.push_back(expr); 
+            	            	            }
+
+
+            	            	        }
+            	            	        break;
+
+            	            	    default:
+
+            	            		if ( cnt32 >= 1 )
+            	            		{
+            	            		    goto loop32;
+            	            		}
+            	            		/* mismatchedSetEx()
+            	            		 */
+            	            		CONSTRUCTEX();
+            	            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+            	            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+            	            		goto rulefofLogicFormulaEx;
+            	            	}
+            	            	cnt32++;
+            	                }
+            	                loop32: ;	/* Jump to here if this rule does not match */
+            	            }
+
+            	            {
+            	                 expr = MK_EXPR_ASSOCIATIVE(kind::AND, args); 
+            	            }
+
+
+            	        }
+
+
+            	    }
+            	    break;
+            	case 3:
+            	    // ../../../../../../src/parser/tptp/Tptp.g:556:7: ( ( OR_TOK fofUnitaryFormula[expr] )+ )
+            	    {
+            	        // ../../../../../../src/parser/tptp/Tptp.g:556:7: ( ( OR_TOK fofUnitaryFormula[expr] )+ )
+            	        // ../../../../../../src/parser/tptp/Tptp.g:556:9: ( OR_TOK fofUnitaryFormula[expr] )+
+            	        {
+            	            {
+            	                 args.push_back(expr); 
+            	            }
+
+
+            	            // ../../../../../../src/parser/tptp/Tptp.g:557:9: ( OR_TOK fofUnitaryFormula[expr] )+
+            	            {
+            	                int cnt33=0;
+
+            	                for (;;)
+            	                {
+            	                    int alt33=2;
+            	            	switch ( LA(1) )
+            	            	{
+            	            	case OR_TOK:
+            	            		{
+            	            			alt33=1;
+            	            		}
+            	            	    break;
+
+            	            	}
+
+            	            	switch (alt33)
+            	            	{
+            	            	    case 1:
+            	            	        // ../../../../../../src/parser/tptp/Tptp.g:557:11: OR_TOK fofUnitaryFormula[expr]
+            	            	        {
+            	            	             MATCHT(OR_TOK, &FOLLOW_OR_TOK_in_fofLogicFormula1511);
+            	            	            if  (HASEXCEPTION())
+            	            	            {
+            	            	                goto rulefofLogicFormulaEx;
+            	            	            }
+
+
+            	            	            FOLLOWPUSH(FOLLOW_fofUnitaryFormula_in_fofLogicFormula1513);
+            	            	            fofUnitaryFormula(ctx, expr);
+
+            	            	            FOLLOWPOP();
+            	            	            if  (HASEXCEPTION())
+            	            	            {
+            	            	                goto rulefofLogicFormulaEx;
+            	            	            }
+
+
+            	            	            {
+            	            	                 args.push_back(expr); 
+            	            	            }
+
+
+            	            	        }
+            	            	        break;
+
+            	            	    default:
+
+            	            		if ( cnt33 >= 1 )
+            	            		{
+            	            		    goto loop33;
+            	            		}
+            	            		/* mismatchedSetEx()
+            	            		 */
+            	            		CONSTRUCTEX();
+            	            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+            	            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+            	            		goto rulefofLogicFormulaEx;
+            	            	}
+            	            	cnt33++;
+            	                }
+            	                loop33: ;	/* Jump to here if this rule does not match */
+            	            }
+
+            	            {
+            	                 expr = MK_EXPR_ASSOCIATIVE(kind::OR, args); 
+            	            }
+
+
+            	        }
+
+
+            	    }
+            	    break;
+
+                }
+            }
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulefofLogicFormulaEx; /* Prevent compiler warnings */
+    rulefofLogicFormulaEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end fofLogicFormula */
+
+/**
+ * $ANTLR start fofUnitaryFormula
+ * ../../../../../../src/parser/tptp/Tptp.g:563:1: fofUnitaryFormula[CVC4::Expr& expr] : ( atomicFormula[expr] | LPAREN_TOK fofLogicFormula[expr] RPAREN_TOK | NOT_TOK fofUnitaryFormula[expr] | folQuantifier[kind] LBRACK_TOK ( bindvariable[expr] ( COMMA_TOK bindvariable[expr] )* ) RBRACK_TOK COLON_TOK fofUnitaryFormula[expr] );
+ */
+static void
+fofUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
+{
+
+      Kind kind;
+      std::vector< Expr > bv;
+
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:568:3: ( atomicFormula[expr] | LPAREN_TOK fofLogicFormula[expr] RPAREN_TOK | NOT_TOK fofUnitaryFormula[expr] | folQuantifier[kind] LBRACK_TOK ( bindvariable[expr] ( COMMA_TOK bindvariable[expr] )* ) RBRACK_TOK COLON_TOK fofUnitaryFormula[expr] )
+
+            ANTLR3_UINT32 alt36;
+
+            alt36=4;
+
+            switch ( LA(1) )
+            {
+            case CNF_TOK:
+            case DISTINCT_OBJECT:
+            case FALSE_TOK:
+            case FOF_TOK:
+            case INCLUDE_TOK:
+            case LOWER_WORD:
+            case LOWER_WORD_SINGLE_QUOTED:
+            case NUMBER:
+            case SINGLE_QUOTED:
+            case TFF_TOK:
+            case THF_TOK:
+            case TRUE_TOK:
+            case TYPE_TOK:
+            case UPPER_WORD:
+            case 56:
+            case 57:
+            case 58:
+            case 59:
+            case 60:
+            case 61:
+            case 62:
+            case 63:
+            case 65:
+            case 66:
+            case 67:
+            case 69:
+            case 71:
+            case 72:
+            case 73:
+            case 74:
+            case 75:
+            case 76:
+            case 77:
+            case 78:
+            case 79:
+            case 80:
+            case 81:
+            case 83:
+            case 84:
+            case 85:
+            case 86:
+            case 87:
+            	{
+            		alt36=1;
+            	}
+                break;
+            case LPAREN_TOK:
+            	{
+            		alt36=2;
+            	}
+                break;
+            case NOT_TOK:
+            	{
+            		alt36=3;
+            	}
+                break;
+            case BANG_TOK:
+            case MARK_TOK:
+            	{
+            		alt36=4;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 36;
+                EXCEPTION->state        = 0;
+
+
+                goto rulefofUnitaryFormulaEx;
+
+            }
+
+            switch (alt36)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:568:5: atomicFormula[expr]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_atomicFormula_in_fofUnitaryFormula1563);
+        	        atomicFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefofUnitaryFormulaEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:569:5: LPAREN_TOK fofLogicFormula[expr] RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_fofUnitaryFormula1570);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefofUnitaryFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_fofLogicFormula_in_fofUnitaryFormula1572);
+        	        fofLogicFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefofUnitaryFormulaEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_fofUnitaryFormula1575);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefofUnitaryFormulaEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:570:5: NOT_TOK fofUnitaryFormula[expr]
+        	    {
+        	         MATCHT(NOT_TOK, &FOLLOW_NOT_TOK_in_fofUnitaryFormula1581);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefofUnitaryFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_fofUnitaryFormula_in_fofUnitaryFormula1583);
+        	        fofUnitaryFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefofUnitaryFormulaEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_EXPR(kind::NOT,expr); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:572:5: folQuantifier[kind] LBRACK_TOK ( bindvariable[expr] ( COMMA_TOK bindvariable[expr] )* ) RBRACK_TOK COLON_TOK fofUnitaryFormula[expr]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_folQuantifier_in_fofUnitaryFormula1597);
+        	        folQuantifier(ctx, kind);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefofUnitaryFormulaEx;
+        	        }
+
+
+        	         MATCHT(LBRACK_TOK, &FOLLOW_LBRACK_TOK_in_fofUnitaryFormula1600);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefofUnitaryFormulaEx;
+        	        }
+
+
+        	        {
+        	            PARSER_STATE->pushScope();
+        	        }
+
+
+        	        // ../../../../../../src/parser/tptp/Tptp.g:573:5: ( bindvariable[expr] ( COMMA_TOK bindvariable[expr] )* )
+        	        // ../../../../../../src/parser/tptp/Tptp.g:573:7: bindvariable[expr] ( COMMA_TOK bindvariable[expr] )*
+        	        {
+        	            FOLLOWPUSH(FOLLOW_bindvariable_in_fofUnitaryFormula1610);
+        	            bindvariable(ctx, expr);
+
+        	            FOLLOWPOP();
+        	            if  (HASEXCEPTION())
+        	            {
+        	                goto rulefofUnitaryFormulaEx;
+        	            }
+
+
+        	            {
+        	                 bv.push_back(expr); 
+        	            }
+
+
+        	            // ../../../../../../src/parser/tptp/Tptp.g:574:7: ( COMMA_TOK bindvariable[expr] )*
+
+        	            for (;;)
+        	            {
+        	                int alt35=2;
+        	                switch ( LA(1) )
+        	                {
+        	                case COMMA_TOK:
+        	                	{
+        	                		alt35=1;
+        	                	}
+        	                    break;
+
+        	                }
+
+        	                switch (alt35)
+        	                {
+        	            	case 1:
+        	            	    // ../../../../../../src/parser/tptp/Tptp.g:574:9: COMMA_TOK bindvariable[expr]
+        	            	    {
+        	            	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_fofUnitaryFormula1623);
+        	            	        if  (HASEXCEPTION())
+        	            	        {
+        	            	            goto rulefofUnitaryFormulaEx;
+        	            	        }
+
+
+        	            	        FOLLOWPUSH(FOLLOW_bindvariable_in_fofUnitaryFormula1625);
+        	            	        bindvariable(ctx, expr);
+
+        	            	        FOLLOWPOP();
+        	            	        if  (HASEXCEPTION())
+        	            	        {
+        	            	            goto rulefofUnitaryFormulaEx;
+        	            	        }
+
+
+        	            	        {
+        	            	             bv.push_back(expr); 
+        	            	        }
+
+
+        	            	    }
+        	            	    break;
+
+        	            	default:
+        	            	    goto loop35;	/* break out of the loop */
+        	            	    break;
+        	                }
+        	            }
+        	            loop35: ; /* Jump out to here if this rule does not match */
+
+
+        	        }
+
+
+        	         MATCHT(RBRACK_TOK, &FOLLOW_RBRACK_TOK_in_fofUnitaryFormula1635);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefofUnitaryFormulaEx;
+        	        }
+
+
+        	         MATCHT(COLON_TOK, &FOLLOW_COLON_TOK_in_fofUnitaryFormula1641);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefofUnitaryFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_fofUnitaryFormula_in_fofUnitaryFormula1643);
+        	        fofUnitaryFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefofUnitaryFormulaEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->popScope();
+        	                  expr = MK_EXPR(kind, MK_EXPR(kind::BOUND_VAR_LIST, bv), expr);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulefofUnitaryFormulaEx; /* Prevent compiler warnings */
+    rulefofUnitaryFormulaEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end fofUnitaryFormula */
+
+/**
+ * $ANTLR start bindvariable
+ * ../../../../../../src/parser/tptp/Tptp.g:581:1: bindvariable[CVC4::Expr& expr] : UPPER_WORD ;
+ */
+static void
+bindvariable(pTptpParser ctx, CVC4::Expr& expr)
+{
+    pANTLR3_COMMON_TOKEN    UPPER_WORD4;
+
+    /* Initialize rule variables
+     */
+
+    UPPER_WORD4       = NULL;
+
+    {
+        // ../../../../../../src/parser/tptp/Tptp.g:582:3: ( UPPER_WORD )
+        // ../../../../../../src/parser/tptp/Tptp.g:582:5: UPPER_WORD
+        {
+            UPPER_WORD4 = (pANTLR3_COMMON_TOKEN) MATCHT(UPPER_WORD, &FOLLOW_UPPER_WORD_in_bindvariable1664);
+            if  (HASEXCEPTION())
+            {
+                goto rulebindvariableEx;
+            }
+
+
+            {
+                 std::string name = AntlrInput::tokenText(UPPER_WORD4);
+                      expr = PARSER_STATE->mkBoundVar(name, PARSER_STATE->d_unsorted);
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulebindvariableEx; /* Prevent compiler warnings */
+    rulebindvariableEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end bindvariable */
+
+/**
+ * $ANTLR start fofBinaryNonAssoc
+ * ../../../../../../src/parser/tptp/Tptp.g:588:1: fofBinaryNonAssoc[CVC4::parser::tptp::NonAssoc& na] : ( IFF_TOK | REVIFF_TOK | REVOR_TOK | REVAND_TOK | IMPLIES_TOK | REVIMPLIES_TOK );
+ */
+static void
+fofBinaryNonAssoc(pTptpParser ctx, CVC4::parser::tptp::NonAssoc& na)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:589:3: ( IFF_TOK | REVIFF_TOK | REVOR_TOK | REVAND_TOK | IMPLIES_TOK | REVIMPLIES_TOK )
+
+            ANTLR3_UINT32 alt37;
+
+            alt37=6;
+
+            switch ( LA(1) )
+            {
+            case IFF_TOK:
+            	{
+            		alt37=1;
+            	}
+                break;
+            case REVIFF_TOK:
+            	{
+            		alt37=2;
+            	}
+                break;
+            case REVOR_TOK:
+            	{
+            		alt37=3;
+            	}
+                break;
+            case REVAND_TOK:
+            	{
+            		alt37=4;
+            	}
+                break;
+            case IMPLIES_TOK:
+            	{
+            		alt37=5;
+            	}
+                break;
+            case REVIMPLIES_TOK:
+            	{
+            		alt37=6;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 37;
+                EXCEPTION->state        = 0;
+
+
+                goto rulefofBinaryNonAssocEx;
+
+            }
+
+            switch (alt37)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:589:5: IFF_TOK
+        	    {
+        	         MATCHT(IFF_TOK, &FOLLOW_IFF_TOK_in_fofBinaryNonAssoc1684);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefofBinaryNonAssocEx;
+        	        }
+
+
+        	        {
+        	             na = tptp::NA_IFF; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:590:5: REVIFF_TOK
+        	    {
+        	         MATCHT(REVIFF_TOK, &FOLLOW_REVIFF_TOK_in_fofBinaryNonAssoc1697);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefofBinaryNonAssocEx;
+        	        }
+
+
+        	        {
+        	             na = tptp::NA_REVIFF; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:591:5: REVOR_TOK
+        	    {
+        	         MATCHT(REVOR_TOK, &FOLLOW_REVOR_TOK_in_fofBinaryNonAssoc1707);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefofBinaryNonAssocEx;
+        	        }
+
+
+        	        {
+        	             na = tptp::NA_REVOR; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:592:5: REVAND_TOK
+        	    {
+        	         MATCHT(REVAND_TOK, &FOLLOW_REVAND_TOK_in_fofBinaryNonAssoc1718);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefofBinaryNonAssocEx;
+        	        }
+
+
+        	        {
+        	             na = tptp::NA_REVAND; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:593:5: IMPLIES_TOK
+        	    {
+        	         MATCHT(IMPLIES_TOK, &FOLLOW_IMPLIES_TOK_in_fofBinaryNonAssoc1728);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefofBinaryNonAssocEx;
+        	        }
+
+
+        	        {
+        	             na = tptp::NA_IMPLIES; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:594:5: REVIMPLIES_TOK
+        	    {
+        	         MATCHT(REVIMPLIES_TOK, &FOLLOW_REVIMPLIES_TOK_in_fofBinaryNonAssoc1739);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefofBinaryNonAssocEx;
+        	        }
+
+
+        	        {
+        	             na = tptp::NA_REVIMPLIES; 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulefofBinaryNonAssocEx; /* Prevent compiler warnings */
+    rulefofBinaryNonAssocEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end fofBinaryNonAssoc */
+
+/**
+ * $ANTLR start folQuantifier
+ * ../../../../../../src/parser/tptp/Tptp.g:597:1: folQuantifier[CVC4::Kind& kind] : ( BANG_TOK | MARK_TOK );
+ */
+static void
+folQuantifier(pTptpParser ctx, CVC4::Kind& kind)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:598:3: ( BANG_TOK | MARK_TOK )
+
+            ANTLR3_UINT32 alt38;
+
+            alt38=2;
+
+            switch ( LA(1) )
+            {
+            case BANG_TOK:
+            	{
+            		alt38=1;
+            	}
+                break;
+            case MARK_TOK:
+            	{
+            		alt38=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 38;
+                EXCEPTION->state        = 0;
+
+
+                goto rulefolQuantifierEx;
+
+            }
+
+            switch (alt38)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:598:5: BANG_TOK
+        	    {
+        	         MATCHT(BANG_TOK, &FOLLOW_BANG_TOK_in_folQuantifier1755);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefolQuantifierEx;
+        	        }
+
+
+        	        {
+        	             kind = kind::FORALL; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:599:5: MARK_TOK
+        	    {
+        	         MATCHT(MARK_TOK, &FOLLOW_MARK_TOK_in_folQuantifier1763);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulefolQuantifierEx;
+        	        }
+
+
+        	        {
+        	             kind = kind::EXISTS; 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulefolQuantifierEx; /* Prevent compiler warnings */
+    rulefolQuantifierEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end folQuantifier */
+
+/**
+ * $ANTLR start tffFormula
+ * ../../../../../../src/parser/tptp/Tptp.g:604:1: tffFormula[CVC4::Expr& expr] : tffLogicFormula[expr] ;
+ */
+static void
+tffFormula(pTptpParser ctx, CVC4::Expr& expr)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/tptp/Tptp.g:604:30: ( tffLogicFormula[expr] )
+        // ../../../../../../src/parser/tptp/Tptp.g:604:32: tffLogicFormula[expr]
+        {
+            FOLLOWPUSH(FOLLOW_tffLogicFormula_in_tffFormula1781);
+            tffLogicFormula(ctx, expr);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruletffFormulaEx;
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletffFormulaEx; /* Prevent compiler warnings */
+    ruletffFormulaEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end tffFormula */
+
+/**
+ * $ANTLR start tffTypedAtom
+ * ../../../../../../src/parser/tptp/Tptp.g:606:1: tffTypedAtom[CVC4::Command*& cmd] : ( LPAREN_TOK tffTypedAtom[cmd] RPAREN_TOK | nameN[name] COLON_TOK ( '$tType' | parseType[type] ) );
+ */
+static void
+tffTypedAtom(pTptpParser ctx, CVC4::Command*& cmd)
+{
+
+      CVC4::Expr expr;
+      CVC4::Type type;
+      std::string name;
+
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:612:3: ( LPAREN_TOK tffTypedAtom[cmd] RPAREN_TOK | nameN[name] COLON_TOK ( '$tType' | parseType[type] ) )
+
+            ANTLR3_UINT32 alt40;
+
+            alt40=2;
+
+            switch ( LA(1) )
+            {
+            case LPAREN_TOK:
+            	{
+            		alt40=1;
+            	}
+                break;
+            case CNF_TOK:
+            case FOF_TOK:
+            case INCLUDE_TOK:
+            case LOWER_WORD:
+            case LOWER_WORD_SINGLE_QUOTED:
+            case NUMBER:
+            case SINGLE_QUOTED:
+            case TFF_TOK:
+            case THF_TOK:
+            case TYPE_TOK:
+            	{
+            		alt40=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 40;
+                EXCEPTION->state        = 0;
+
+
+                goto ruletffTypedAtomEx;
+
+            }
+
+            switch (alt40)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:612:5: LPAREN_TOK tffTypedAtom[cmd] RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_tffTypedAtom1798);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffTypedAtomEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_tffTypedAtom_in_tffTypedAtom1800);
+        	        tffTypedAtom(ctx, cmd);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffTypedAtomEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_tffTypedAtom1803);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffTypedAtomEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:613:5: nameN[name] COLON_TOK ( '$tType' | parseType[type] )
+        	    {
+        	        FOLLOWPUSH(FOLLOW_nameN_in_tffTypedAtom1809);
+        	        nameN(ctx, name);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffTypedAtomEx;
+        	        }
+
+
+        	         MATCHT(COLON_TOK, &FOLLOW_COLON_TOK_in_tffTypedAtom1812);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffTypedAtomEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/tptp/Tptp.g:614:5: ( '$tType' | parseType[type] )
+        	        {
+        	            int alt39=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case 82:
+        	            	{
+        	            		alt39=1;
+        	            	}
+        	                break;
+        	            case CNF_TOK:
+        	            case DEFINED_SYMBOL:
+        	            case FOF_TOK:
+        	            case INCLUDE_TOK:
+        	            case LOWER_WORD:
+        	            case LOWER_WORD_SINGLE_QUOTED:
+        	            case LPAREN_TOK:
+        	            case SINGLE_QUOTED:
+        	            case TFF_TOK:
+        	            case THF_TOK:
+        	            case TYPE_TOK:
+        	            	{
+        	            		alt39=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 39;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto ruletffTypedAtomEx;
+
+        	            }
+
+        	            switch (alt39)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:614:7: '$tType'
+        	        	    {
+        	        	         MATCHT(82, &FOLLOW_82_in_tffTypedAtom1820);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletffTypedAtomEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             if(PARSER_STATE->isDeclared(name, SYM_SORT)) {
+        	        	                      // duplicate declaration is fine, they're compatible
+        	        	                      cmd = new EmptyCommand("compatible redeclaration of sort " + name);
+        	        	                    } else if(PARSER_STATE->isDeclared(name, SYM_VARIABLE)) {
+        	        	                      // error: cannot be both sort and constant
+        	        	                      PARSER_STATE->parseError("Symbol `" + name + "' previously declared as a constant; cannot also be a sort");
+        	        	                    } else {
+        	        	                      // as yet, it's undeclared
+        	        	                      Type type = PARSER_STATE->mkSort(name);
+        	        	                      cmd = new DeclareTypeCommand(name, 0, type);
+        	        	                    }
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:627:7: parseType[type]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_parseType_in_tffTypedAtom1836);
+        	        	        parseType(ctx, type);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruletffTypedAtomEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             if(PARSER_STATE->isDeclared(name, SYM_SORT)) {
+        	        	                      // error: cannot be both sort and constant
+        	        	                      PARSER_STATE->parseError("Symbol `" + name + "' previously declared as a sort");
+        	        	                      cmd = new EmptyCommand("compatible redeclaration of sort " + name);
+        	        	                    } else if(PARSER_STATE->isDeclared(name, SYM_VARIABLE)) {
+        	        	                      if(type == PARSER_STATE->getVariable(name).getType()) {
+        	        	                        // duplicate declaration is fine, they're compatible
+        	        	                        cmd = new EmptyCommand("compatible redeclaration of constant " + name);
+        	        	                      } else {
+        	        	                        // error: sorts incompatible
+        	        	                        PARSER_STATE->parseError("Symbol `" + name + "' declared previously with a different sort");
+        	        	                      }
+        	        	                    } else {
+        	        	                      // as yet, it's undeclared
+        	        	                      CVC4::Expr expr;
+        	        	                      if(type.isFunction()) {
+        	        	                        expr = PARSER_STATE->mkFunction(name, type);
+        	        	                      } else {
+        	        	                        expr = PARSER_STATE->mkVar(name, type);
+        	        	                      }
+        	        	                      cmd = new DeclareFunctionCommand(name, expr, type);
+        	        	                    }
+        	        	                  
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletffTypedAtomEx; /* Prevent compiler warnings */
+    ruletffTypedAtomEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end tffTypedAtom */
+
+/**
+ * $ANTLR start tffLogicFormula
+ * ../../../../../../src/parser/tptp/Tptp.g:654:1: tffLogicFormula[CVC4::Expr& expr] : tffUnitaryFormula[expr] ( ( fofBinaryNonAssoc[na] tffUnitaryFormula[expr2] ) | ( ( AND_TOK tffUnitaryFormula[expr] )+ ) | ( ( OR_TOK tffUnitaryFormula[expr] )+ ) )? ;
+ */
+static void
+tffLogicFormula(pTptpParser ctx, CVC4::Expr& expr)
+{
+
+      tptp::NonAssoc na;
+      std::vector< Expr > args;
+      Expr expr2;
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/tptp/Tptp.g:660:3: ( tffUnitaryFormula[expr] ( ( fofBinaryNonAssoc[na] tffUnitaryFormula[expr2] ) | ( ( AND_TOK tffUnitaryFormula[expr] )+ ) | ( ( OR_TOK tffUnitaryFormula[expr] )+ ) )? )
+        // ../../../../../../src/parser/tptp/Tptp.g:660:5: tffUnitaryFormula[expr] ( ( fofBinaryNonAssoc[na] tffUnitaryFormula[expr2] ) | ( ( AND_TOK tffUnitaryFormula[expr] )+ ) | ( ( OR_TOK tffUnitaryFormula[expr] )+ ) )?
+        {
+            FOLLOWPUSH(FOLLOW_tffUnitaryFormula_in_tffLogicFormula1870);
+            tffUnitaryFormula(ctx, expr);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruletffLogicFormulaEx;
+            }
+
+
+            // ../../../../../../src/parser/tptp/Tptp.g:661:5: ( ( fofBinaryNonAssoc[na] tffUnitaryFormula[expr2] ) | ( ( AND_TOK tffUnitaryFormula[expr] )+ ) | ( ( OR_TOK tffUnitaryFormula[expr] )+ ) )?
+            {
+                int alt43=4;
+                switch ( LA(1) )
+                {
+                    case IFF_TOK:
+                    case IMPLIES_TOK:
+                    case REVAND_TOK:
+                    case REVIFF_TOK:
+                    case REVIMPLIES_TOK:
+                    case REVOR_TOK:
+                    	{
+                    		alt43=1;
+                    	}
+                        break;
+                    case AND_TOK:
+                    	{
+                    		alt43=2;
+                    	}
+                        break;
+                    case OR_TOK:
+                    	{
+                    		alt43=3;
+                    	}
+                        break;
+                }
+
+                switch (alt43)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/tptp/Tptp.g:662:7: ( fofBinaryNonAssoc[na] tffUnitaryFormula[expr2] )
+            	    {
+            	        // ../../../../../../src/parser/tptp/Tptp.g:662:7: ( fofBinaryNonAssoc[na] tffUnitaryFormula[expr2] )
+            	        // ../../../../../../src/parser/tptp/Tptp.g:662:9: fofBinaryNonAssoc[na] tffUnitaryFormula[expr2]
+            	        {
+            	            FOLLOWPUSH(FOLLOW_fofBinaryNonAssoc_in_tffLogicFormula1888);
+            	            fofBinaryNonAssoc(ctx, na);
+
+            	            FOLLOWPOP();
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto ruletffLogicFormulaEx;
+            	            }
+
+
+            	            FOLLOWPUSH(FOLLOW_tffUnitaryFormula_in_tffLogicFormula1891);
+            	            tffUnitaryFormula(ctx, expr2);
+
+            	            FOLLOWPOP();
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto ruletffLogicFormulaEx;
+            	            }
+
+
+            	            {
+            	                 switch(na) {
+            	                           case tptp::NA_IFF:
+            	                             expr = MK_EXPR(kind::EQUAL,expr,expr2);
+            	                             break;
+            	                           case tptp::NA_REVIFF:
+            	                             expr = MK_EXPR(kind::XOR,expr,expr2);
+            	                             break;
+            	                           case tptp::NA_IMPLIES:
+            	                             expr = MK_EXPR(kind::IMPLIES,expr,expr2);
+            	                             break;
+            	                           case tptp::NA_REVIMPLIES:
+            	                             expr = MK_EXPR(kind::IMPLIES,expr2,expr);
+            	                             break;
+            	                           case tptp::NA_REVOR:
+            	                             expr = MK_EXPR(kind::NOT,MK_EXPR(kind::OR,expr,expr2));
+            	                             break;
+            	                           case tptp::NA_REVAND:
+            	                             expr = MK_EXPR(kind::NOT,MK_EXPR(kind::AND,expr,expr2));
+            	                             break;
+            	                          }
+            	                        
+            	            }
+
+
+            	        }
+
+
+            	    }
+            	    break;
+            	case 2:
+            	    // ../../../../../../src/parser/tptp/Tptp.g:686:7: ( ( AND_TOK tffUnitaryFormula[expr] )+ )
+            	    {
+            	        // ../../../../../../src/parser/tptp/Tptp.g:686:7: ( ( AND_TOK tffUnitaryFormula[expr] )+ )
+            	        // ../../../../../../src/parser/tptp/Tptp.g:686:9: ( AND_TOK tffUnitaryFormula[expr] )+
+            	        {
+            	            {
+            	                 args.push_back(expr); 
+            	            }
+
+
+            	            // ../../../../../../src/parser/tptp/Tptp.g:687:9: ( AND_TOK tffUnitaryFormula[expr] )+
+            	            {
+            	                int cnt41=0;
+
+            	                for (;;)
+            	                {
+            	                    int alt41=2;
+            	            	switch ( LA(1) )
+            	            	{
+            	            	case AND_TOK:
+            	            		{
+            	            			alt41=1;
+            	            		}
+            	            	    break;
+
+            	            	}
+
+            	            	switch (alt41)
+            	            	{
+            	            	    case 1:
+            	            	        // ../../../../../../src/parser/tptp/Tptp.g:687:11: AND_TOK tffUnitaryFormula[expr]
+            	            	        {
+            	            	             MATCHT(AND_TOK, &FOLLOW_AND_TOK_in_tffLogicFormula1939);
+            	            	            if  (HASEXCEPTION())
+            	            	            {
+            	            	                goto ruletffLogicFormulaEx;
+            	            	            }
+
+
+            	            	            FOLLOWPUSH(FOLLOW_tffUnitaryFormula_in_tffLogicFormula1941);
+            	            	            tffUnitaryFormula(ctx, expr);
+
+            	            	            FOLLOWPOP();
+            	            	            if  (HASEXCEPTION())
+            	            	            {
+            	            	                goto ruletffLogicFormulaEx;
+            	            	            }
+
+
+            	            	            {
+            	            	                 args.push_back(expr); 
+            	            	            }
+
+
+            	            	        }
+            	            	        break;
+
+            	            	    default:
+
+            	            		if ( cnt41 >= 1 )
+            	            		{
+            	            		    goto loop41;
+            	            		}
+            	            		/* mismatchedSetEx()
+            	            		 */
+            	            		CONSTRUCTEX();
+            	            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+            	            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+            	            		goto ruletffLogicFormulaEx;
+            	            	}
+            	            	cnt41++;
+            	                }
+            	                loop41: ;	/* Jump to here if this rule does not match */
+            	            }
+
+            	            {
+            	                 expr = MK_EXPR(kind::AND,args); 
+            	            }
+
+
+            	        }
+
+
+            	    }
+            	    break;
+            	case 3:
+            	    // ../../../../../../src/parser/tptp/Tptp.g:691:7: ( ( OR_TOK tffUnitaryFormula[expr] )+ )
+            	    {
+            	        // ../../../../../../src/parser/tptp/Tptp.g:691:7: ( ( OR_TOK tffUnitaryFormula[expr] )+ )
+            	        // ../../../../../../src/parser/tptp/Tptp.g:691:9: ( OR_TOK tffUnitaryFormula[expr] )+
+            	        {
+            	            {
+            	                 args.push_back(expr); 
+            	            }
+
+
+            	            // ../../../../../../src/parser/tptp/Tptp.g:692:9: ( OR_TOK tffUnitaryFormula[expr] )+
+            	            {
+            	                int cnt42=0;
+
+            	                for (;;)
+            	                {
+            	                    int alt42=2;
+            	            	switch ( LA(1) )
+            	            	{
+            	            	case OR_TOK:
+            	            		{
+            	            			alt42=1;
+            	            		}
+            	            	    break;
+
+            	            	}
+
+            	            	switch (alt42)
+            	            	{
+            	            	    case 1:
+            	            	        // ../../../../../../src/parser/tptp/Tptp.g:692:11: OR_TOK tffUnitaryFormula[expr]
+            	            	        {
+            	            	             MATCHT(OR_TOK, &FOLLOW_OR_TOK_in_tffLogicFormula1994);
+            	            	            if  (HASEXCEPTION())
+            	            	            {
+            	            	                goto ruletffLogicFormulaEx;
+            	            	            }
+
+
+            	            	            FOLLOWPUSH(FOLLOW_tffUnitaryFormula_in_tffLogicFormula1996);
+            	            	            tffUnitaryFormula(ctx, expr);
+
+            	            	            FOLLOWPOP();
+            	            	            if  (HASEXCEPTION())
+            	            	            {
+            	            	                goto ruletffLogicFormulaEx;
+            	            	            }
+
+
+            	            	            {
+            	            	                 args.push_back(expr); 
+            	            	            }
+
+
+            	            	        }
+            	            	        break;
+
+            	            	    default:
+
+            	            		if ( cnt42 >= 1 )
+            	            		{
+            	            		    goto loop42;
+            	            		}
+            	            		/* mismatchedSetEx()
+            	            		 */
+            	            		CONSTRUCTEX();
+            	            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+            	            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+            	            		goto ruletffLogicFormulaEx;
+            	            	}
+            	            	cnt42++;
+            	                }
+            	                loop42: ;	/* Jump to here if this rule does not match */
+            	            }
+
+            	            {
+            	                 expr = MK_EXPR(kind::OR,args); 
+            	            }
+
+
+            	        }
+
+
+            	    }
+            	    break;
+
+                }
+            }
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletffLogicFormulaEx; /* Prevent compiler warnings */
+    ruletffLogicFormulaEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end tffLogicFormula */
+
+/**
+ * $ANTLR start tffUnitaryFormula
+ * ../../../../../../src/parser/tptp/Tptp.g:698:1: tffUnitaryFormula[CVC4::Expr& expr] : ( atomicFormula[expr] | LPAREN_TOK tffLogicFormula[expr] RPAREN_TOK | NOT_TOK tffUnitaryFormula[expr] | folQuantifier[kind] LBRACK_TOK ( tffbindvariable[expr] ( COMMA_TOK tffbindvariable[expr] )* ) RBRACK_TOK COLON_TOK tffUnitaryFormula[expr] | '$ite_f' LPAREN_TOK tffLogicFormula[expr] COMMA_TOK tffLogicFormula[lhs] COMMA_TOK tffLogicFormula[rhs] RPAREN_TOK | '$let_tf' LPAREN_TOK tffLetTermDefn[lhs,  [...]
+ */
+static void
+tffUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
+{
+
+      Kind kind;
+      std::vector< Expr > bv;
+      Expr lhs, rhs;
+
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:704:3: ( atomicFormula[expr] | LPAREN_TOK tffLogicFormula[expr] RPAREN_TOK | NOT_TOK tffUnitaryFormula[expr] | folQuantifier[kind] LBRACK_TOK ( tffbindvariable[expr] ( COMMA_TOK tffbindvariable[expr] )* ) RBRACK_TOK COLON_TOK tffUnitaryFormula[expr] | '$ite_f' LPAREN_TOK tffLogicFormula[expr] COMMA_TOK tffLogicFormula[lhs] COMMA_TOK tffLogicFormula[rhs] RPAREN_TOK | '$let_tf' LPAREN_TOK tffLetTermDefn[lhs, rhs] COMMA_TOK tffFormula [...]
+
+            ANTLR3_UINT32 alt45;
+
+            alt45=7;
+
+            switch ( LA(1) )
+            {
+            case CNF_TOK:
+            case DISTINCT_OBJECT:
+            case FALSE_TOK:
+            case FOF_TOK:
+            case INCLUDE_TOK:
+            case LOWER_WORD:
+            case LOWER_WORD_SINGLE_QUOTED:
+            case NUMBER:
+            case SINGLE_QUOTED:
+            case TFF_TOK:
+            case THF_TOK:
+            case TRUE_TOK:
+            case TYPE_TOK:
+            case UPPER_WORD:
+            case 56:
+            case 57:
+            case 58:
+            case 59:
+            case 60:
+            case 61:
+            case 62:
+            case 63:
+            case 65:
+            case 66:
+            case 67:
+            case 69:
+            case 71:
+            case 72:
+            case 73:
+            case 74:
+            case 75:
+            case 76:
+            case 77:
+            case 78:
+            case 79:
+            case 80:
+            case 81:
+            case 83:
+            case 84:
+            case 85:
+            case 86:
+            case 87:
+            	{
+            		alt45=1;
+            	}
+                break;
+            case LPAREN_TOK:
+            	{
+            		alt45=2;
+            	}
+                break;
+            case NOT_TOK:
+            	{
+            		alt45=3;
+            	}
+                break;
+            case BANG_TOK:
+            case MARK_TOK:
+            	{
+            		alt45=4;
+            	}
+                break;
+            case 64:
+            	{
+            		alt45=5;
+            	}
+                break;
+            case 70:
+            	{
+            		alt45=6;
+            	}
+                break;
+            case 68:
+            	{
+            		alt45=7;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 45;
+                EXCEPTION->state        = 0;
+
+
+                goto ruletffUnitaryFormulaEx;
+
+            }
+
+            switch (alt45)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:704:5: atomicFormula[expr]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_atomicFormula_in_tffUnitaryFormula2046);
+        	        atomicFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:705:5: LPAREN_TOK tffLogicFormula[expr] RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2053);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_tffLogicFormula_in_tffUnitaryFormula2055);
+        	        tffLogicFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_tffUnitaryFormula2058);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:706:5: NOT_TOK tffUnitaryFormula[expr]
+        	    {
+        	         MATCHT(NOT_TOK, &FOLLOW_NOT_TOK_in_tffUnitaryFormula2064);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_tffUnitaryFormula_in_tffUnitaryFormula2066);
+        	        tffUnitaryFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	        {
+        	             expr = MK_EXPR(kind::NOT,expr); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:708:5: folQuantifier[kind] LBRACK_TOK ( tffbindvariable[expr] ( COMMA_TOK tffbindvariable[expr] )* ) RBRACK_TOK COLON_TOK tffUnitaryFormula[expr]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_folQuantifier_in_tffUnitaryFormula2080);
+        	        folQuantifier(ctx, kind);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	         MATCHT(LBRACK_TOK, &FOLLOW_LBRACK_TOK_in_tffUnitaryFormula2083);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	        {
+        	            PARSER_STATE->pushScope();
+        	        }
+
+
+        	        // ../../../../../../src/parser/tptp/Tptp.g:709:5: ( tffbindvariable[expr] ( COMMA_TOK tffbindvariable[expr] )* )
+        	        // ../../../../../../src/parser/tptp/Tptp.g:709:7: tffbindvariable[expr] ( COMMA_TOK tffbindvariable[expr] )*
+        	        {
+        	            FOLLOWPUSH(FOLLOW_tffbindvariable_in_tffUnitaryFormula2093);
+        	            tffbindvariable(ctx, expr);
+
+        	            FOLLOWPOP();
+        	            if  (HASEXCEPTION())
+        	            {
+        	                goto ruletffUnitaryFormulaEx;
+        	            }
+
+
+        	            {
+        	                 bv.push_back(expr); 
+        	            }
+
+
+        	            // ../../../../../../src/parser/tptp/Tptp.g:710:7: ( COMMA_TOK tffbindvariable[expr] )*
+
+        	            for (;;)
+        	            {
+        	                int alt44=2;
+        	                switch ( LA(1) )
+        	                {
+        	                case COMMA_TOK:
+        	                	{
+        	                		alt44=1;
+        	                	}
+        	                    break;
+
+        	                }
+
+        	                switch (alt44)
+        	                {
+        	            	case 1:
+        	            	    // ../../../../../../src/parser/tptp/Tptp.g:710:9: COMMA_TOK tffbindvariable[expr]
+        	            	    {
+        	            	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_tffUnitaryFormula2106);
+        	            	        if  (HASEXCEPTION())
+        	            	        {
+        	            	            goto ruletffUnitaryFormulaEx;
+        	            	        }
+
+
+        	            	        FOLLOWPUSH(FOLLOW_tffbindvariable_in_tffUnitaryFormula2108);
+        	            	        tffbindvariable(ctx, expr);
+
+        	            	        FOLLOWPOP();
+        	            	        if  (HASEXCEPTION())
+        	            	        {
+        	            	            goto ruletffUnitaryFormulaEx;
+        	            	        }
+
+
+        	            	        {
+        	            	             bv.push_back(expr); 
+        	            	        }
+
+
+        	            	    }
+        	            	    break;
+
+        	            	default:
+        	            	    goto loop44;	/* break out of the loop */
+        	            	    break;
+        	                }
+        	            }
+        	            loop44: ; /* Jump out to here if this rule does not match */
+
+
+        	        }
+
+
+        	         MATCHT(RBRACK_TOK, &FOLLOW_RBRACK_TOK_in_tffUnitaryFormula2118);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	         MATCHT(COLON_TOK, &FOLLOW_COLON_TOK_in_tffUnitaryFormula2124);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_tffUnitaryFormula_in_tffUnitaryFormula2126);
+        	        tffUnitaryFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->popScope();
+        	                  expr = MK_EXPR(kind, MK_EXPR(kind::BOUND_VAR_LIST, bv), expr);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:715:5: '$ite_f' LPAREN_TOK tffLogicFormula[expr] COMMA_TOK tffLogicFormula[lhs] COMMA_TOK tffLogicFormula[rhs] RPAREN_TOK
+        	    {
+        	         MATCHT(64, &FOLLOW_64_in_tffUnitaryFormula2139);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2141);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_tffLogicFormula_in_tffUnitaryFormula2143);
+        	        tffLogicFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_tffUnitaryFormula2146);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_tffLogicFormula_in_tffUnitaryFormula2148);
+        	        tffLogicFormula(ctx, lhs);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_tffUnitaryFormula2151);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_tffLogicFormula_in_tffUnitaryFormula2153);
+        	        tffLogicFormula(ctx, rhs);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_tffUnitaryFormula2156);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	        {
+        	             expr = EXPR_MANAGER->mkExpr(CVC4::kind::ITE, expr, lhs, rhs); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:717:5: '$let_tf' LPAREN_TOK tffLetTermDefn[lhs, rhs] COMMA_TOK tffFormula[expr] RPAREN_TOK
+        	    {
+        	         MATCHT(70, &FOLLOW_70_in_tffUnitaryFormula2168);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2170);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->pushScope(); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_tffLetTermDefn_in_tffUnitaryFormula2178);
+        	        tffLetTermDefn(ctx, lhs, rhs);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_tffUnitaryFormula2181);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_tffFormula_in_tffUnitaryFormula2187);
+        	        tffFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->popScope();
+        	                  expr = expr.substitute(lhs, rhs);
+        	                
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_tffUnitaryFormula2200);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:724:5: '$let_ff' LPAREN_TOK tffLetFormulaDefn[lhs, rhs] COMMA_TOK tffFormula[expr] RPAREN_TOK
+        	    {
+        	         MATCHT(68, &FOLLOW_68_in_tffUnitaryFormula2206);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2208);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->pushScope(); 
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_tffLetFormulaDefn_in_tffUnitaryFormula2216);
+        	        tffLetFormulaDefn(ctx, lhs, rhs);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_tffUnitaryFormula2219);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_tffFormula_in_tffUnitaryFormula2225);
+        	        tffFormula(ctx, expr);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->popScope();
+        	                  expr = expr.substitute(lhs, rhs);
+        	                
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_tffUnitaryFormula2238);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffUnitaryFormulaEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletffUnitaryFormulaEx; /* Prevent compiler warnings */
+    ruletffUnitaryFormulaEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end tffUnitaryFormula */
+
+/**
+ * $ANTLR start tffLetTermDefn
+ * ../../../../../../src/parser/tptp/Tptp.g:733:1: tffLetTermDefn[CVC4::Expr& lhs, CVC4::Expr& rhs] : ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )* tffLetTermBinding[bvlist, lhs, rhs] ;
+ */
+static void
+tffLetTermDefn(pTptpParser ctx, CVC4::Expr& lhs, CVC4::Expr& rhs)
+{
+
+      std::vector<CVC4::Expr> bvlist;
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/tptp/Tptp.g:737:3: ( ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )* tffLetTermBinding[bvlist, lhs, rhs] )
+        // ../../../../../../src/parser/tptp/Tptp.g:737:5: ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )* tffLetTermBinding[bvlist, lhs, rhs]
+        {
+            // ../../../../../../src/parser/tptp/Tptp.g:737:5: ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )*
+
+            for (;;)
+            {
+                int alt46=2;
+                switch ( LA(1) )
+                {
+                case BANG_TOK:
+                	{
+                		alt46=1;
+                	}
+                    break;
+
+                }
+
+                switch (alt46)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/tptp/Tptp.g:737:6: BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK
+            	    {
+            	         MATCHT(BANG_TOK, &FOLLOW_BANG_TOK_in_tffLetTermDefn2258);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletffLetTermDefnEx;
+            	        }
+
+
+            	         MATCHT(LBRACK_TOK, &FOLLOW_LBRACK_TOK_in_tffLetTermDefn2260);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletffLetTermDefnEx;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_tffVariableList_in_tffLetTermDefn2262);
+            	        tffVariableList(ctx, bvlist);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletffLetTermDefnEx;
+            	        }
+
+
+            	         MATCHT(RBRACK_TOK, &FOLLOW_RBRACK_TOK_in_tffLetTermDefn2265);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletffLetTermDefnEx;
+            	        }
+
+
+            	         MATCHT(COLON_TOK, &FOLLOW_COLON_TOK_in_tffLetTermDefn2267);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletffLetTermDefnEx;
+            	        }
+
+
+            	    }
+            	    break;
+
+            	default:
+            	    goto loop46;	/* break out of the loop */
+            	    break;
+                }
+            }
+            loop46: ; /* Jump out to here if this rule does not match */
+
+
+            FOLLOWPUSH(FOLLOW_tffLetTermBinding_in_tffLetTermDefn2275);
+            tffLetTermBinding(ctx, bvlist, lhs, rhs);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruletffLetTermDefnEx;
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletffLetTermDefnEx; /* Prevent compiler warnings */
+    ruletffLetTermDefnEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end tffLetTermDefn */
+
+/**
+ * $ANTLR start tffLetTermBinding
+ * ../../../../../../src/parser/tptp/Tptp.g:741:1: tffLetTermBinding[std::vector<CVC4::Expr>& bvlist, CVC4::Expr& lhs, CVC4::Expr& rhs] : ( term[lhs] EQUAL_TOK term[rhs] | LPAREN_TOK tffLetTermBinding[bvlist, lhs, rhs] RPAREN_TOK );
+ */
+static void
+tffLetTermBinding(pTptpParser ctx, std::vector<CVC4::Expr>& bvlist, CVC4::Expr& lhs, CVC4::Expr& rhs)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:742:3: ( term[lhs] EQUAL_TOK term[rhs] | LPAREN_TOK tffLetTermBinding[bvlist, lhs, rhs] RPAREN_TOK )
+
+            ANTLR3_UINT32 alt47;
+
+            alt47=2;
+
+            switch ( LA(1) )
+            {
+            case CNF_TOK:
+            case DISTINCT_OBJECT:
+            case FOF_TOK:
+            case INCLUDE_TOK:
+            case LOWER_WORD:
+            case LOWER_WORD_SINGLE_QUOTED:
+            case NUMBER:
+            case SINGLE_QUOTED:
+            case TFF_TOK:
+            case THF_TOK:
+            case TYPE_TOK:
+            case UPPER_WORD:
+            case 56:
+            case 57:
+            case 59:
+            case 65:
+            case 69:
+            case 71:
+            case 72:
+            case 73:
+            case 74:
+            case 75:
+            case 76:
+            case 77:
+            case 78:
+            case 79:
+            case 80:
+            case 81:
+            case 83:
+            case 84:
+            case 85:
+            case 86:
+            case 87:
+            	{
+            		alt47=1;
+            	}
+                break;
+            case LPAREN_TOK:
+            	{
+            		alt47=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 47;
+                EXCEPTION->state        = 0;
+
+
+                goto ruletffLetTermBindingEx;
+
+            }
+
+            switch (alt47)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:742:5: term[lhs] EQUAL_TOK term[rhs]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_term_in_tffLetTermBinding2290);
+        	        term(ctx, lhs);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffLetTermBindingEx;
+        	        }
+
+
+        	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_tffLetTermBinding2293);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffLetTermBindingEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_tffLetTermBinding2295);
+        	        term(ctx, rhs);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffLetTermBindingEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkLetBinding(bvlist, lhs, rhs, false);
+        	                  rhs = MK_EXPR(CVC4::kind::LAMBDA, MK_EXPR(CVC4::kind::BOUND_VAR_LIST, lhs.getChildren()), rhs);
+        	                  lhs = lhs.getOperator();
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:747:5: LPAREN_TOK tffLetTermBinding[bvlist, lhs, rhs] RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_tffLetTermBinding2308);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffLetTermBindingEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_tffLetTermBinding_in_tffLetTermBinding2310);
+        	        tffLetTermBinding(ctx, bvlist, lhs, rhs);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffLetTermBindingEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_tffLetTermBinding2313);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffLetTermBindingEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletffLetTermBindingEx; /* Prevent compiler warnings */
+    ruletffLetTermBindingEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end tffLetTermBinding */
+
+/**
+ * $ANTLR start tffLetFormulaDefn
+ * ../../../../../../src/parser/tptp/Tptp.g:750:1: tffLetFormulaDefn[CVC4::Expr& lhs, CVC4::Expr& rhs] : ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )* tffLetFormulaBinding[bvlist, lhs, rhs] ;
+ */
+static void
+tffLetFormulaDefn(pTptpParser ctx, CVC4::Expr& lhs, CVC4::Expr& rhs)
+{
+
+      std::vector<CVC4::Expr> bvlist;
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/tptp/Tptp.g:754:3: ( ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )* tffLetFormulaBinding[bvlist, lhs, rhs] )
+        // ../../../../../../src/parser/tptp/Tptp.g:754:5: ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )* tffLetFormulaBinding[bvlist, lhs, rhs]
+        {
+            // ../../../../../../src/parser/tptp/Tptp.g:754:5: ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )*
+
+            for (;;)
+            {
+                int alt48=2;
+                switch ( LA(1) )
+                {
+                case BANG_TOK:
+                	{
+                		alt48=1;
+                	}
+                    break;
+
+                }
+
+                switch (alt48)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/tptp/Tptp.g:754:6: BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK
+            	    {
+            	         MATCHT(BANG_TOK, &FOLLOW_BANG_TOK_in_tffLetFormulaDefn2333);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletffLetFormulaDefnEx;
+            	        }
+
+
+            	         MATCHT(LBRACK_TOK, &FOLLOW_LBRACK_TOK_in_tffLetFormulaDefn2335);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletffLetFormulaDefnEx;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_tffVariableList_in_tffLetFormulaDefn2337);
+            	        tffVariableList(ctx, bvlist);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletffLetFormulaDefnEx;
+            	        }
+
+
+            	         MATCHT(RBRACK_TOK, &FOLLOW_RBRACK_TOK_in_tffLetFormulaDefn2340);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletffLetFormulaDefnEx;
+            	        }
+
+
+            	         MATCHT(COLON_TOK, &FOLLOW_COLON_TOK_in_tffLetFormulaDefn2342);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletffLetFormulaDefnEx;
+            	        }
+
+
+            	    }
+            	    break;
+
+            	default:
+            	    goto loop48;	/* break out of the loop */
+            	    break;
+                }
+            }
+            loop48: ; /* Jump out to here if this rule does not match */
+
+
+            FOLLOWPUSH(FOLLOW_tffLetFormulaBinding_in_tffLetFormulaDefn2350);
+            tffLetFormulaBinding(ctx, bvlist, lhs, rhs);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruletffLetFormulaDefnEx;
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletffLetFormulaDefnEx; /* Prevent compiler warnings */
+    ruletffLetFormulaDefnEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end tffLetFormulaDefn */
+
+/**
+ * $ANTLR start tffLetFormulaBinding
+ * ../../../../../../src/parser/tptp/Tptp.g:758:1: tffLetFormulaBinding[std::vector<CVC4::Expr>& bvlist, CVC4::Expr& lhs, CVC4::Expr& rhs] : ( atomicFormula[lhs] IFF_TOK tffUnitaryFormula[rhs] | LPAREN_TOK tffLetFormulaBinding[bvlist, lhs, rhs] RPAREN_TOK );
+ */
+static void
+tffLetFormulaBinding(pTptpParser ctx, std::vector<CVC4::Expr>& bvlist, CVC4::Expr& lhs, CVC4::Expr& rhs)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:759:3: ( atomicFormula[lhs] IFF_TOK tffUnitaryFormula[rhs] | LPAREN_TOK tffLetFormulaBinding[bvlist, lhs, rhs] RPAREN_TOK )
+
+            ANTLR3_UINT32 alt49;
+
+            alt49=2;
+
+            switch ( LA(1) )
+            {
+            case CNF_TOK:
+            case DISTINCT_OBJECT:
+            case FALSE_TOK:
+            case FOF_TOK:
+            case INCLUDE_TOK:
+            case LOWER_WORD:
+            case LOWER_WORD_SINGLE_QUOTED:
+            case NUMBER:
+            case SINGLE_QUOTED:
+            case TFF_TOK:
+            case THF_TOK:
+            case TRUE_TOK:
+            case TYPE_TOK:
+            case UPPER_WORD:
+            case 56:
+            case 57:
+            case 58:
+            case 59:
+            case 60:
+            case 61:
+            case 62:
+            case 63:
+            case 65:
+            case 66:
+            case 67:
+            case 69:
+            case 71:
+            case 72:
+            case 73:
+            case 74:
+            case 75:
+            case 76:
+            case 77:
+            case 78:
+            case 79:
+            case 80:
+            case 81:
+            case 83:
+            case 84:
+            case 85:
+            case 86:
+            case 87:
+            	{
+            		alt49=1;
+            	}
+                break;
+            case LPAREN_TOK:
+            	{
+            		alt49=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 49;
+                EXCEPTION->state        = 0;
+
+
+                goto ruletffLetFormulaBindingEx;
+
+            }
+
+            switch (alt49)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:759:5: atomicFormula[lhs] IFF_TOK tffUnitaryFormula[rhs]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_atomicFormula_in_tffLetFormulaBinding2365);
+        	        atomicFormula(ctx, lhs);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffLetFormulaBindingEx;
+        	        }
+
+
+        	         MATCHT(IFF_TOK, &FOLLOW_IFF_TOK_in_tffLetFormulaBinding2368);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffLetFormulaBindingEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_tffUnitaryFormula_in_tffLetFormulaBinding2370);
+        	        tffUnitaryFormula(ctx, rhs);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffLetFormulaBindingEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->checkLetBinding(bvlist, lhs, rhs, true);
+        	                  rhs = MK_EXPR(CVC4::kind::LAMBDA, MK_EXPR(CVC4::kind::BOUND_VAR_LIST, lhs.getChildren()), rhs);
+        	                  lhs = lhs.getOperator();
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:764:5: LPAREN_TOK tffLetFormulaBinding[bvlist, lhs, rhs] RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_tffLetFormulaBinding2383);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffLetFormulaBindingEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_tffLetFormulaBinding_in_tffLetFormulaBinding2385);
+        	        tffLetFormulaBinding(ctx, bvlist, lhs, rhs);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffLetFormulaBindingEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_tffLetFormulaBinding2388);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletffLetFormulaBindingEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletffLetFormulaBindingEx; /* Prevent compiler warnings */
+    ruletffLetFormulaBindingEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end tffLetFormulaBinding */
+
+/**
+ * $ANTLR start tffbindvariable
+ * ../../../../../../src/parser/tptp/Tptp.g:767:1: tffbindvariable[CVC4::Expr& expr] : UPPER_WORD ( COLON_TOK parseType[type] )? ;
+ */
+static void
+tffbindvariable(pTptpParser ctx, CVC4::Expr& expr)
+{
+
+      CVC4::Type type = PARSER_STATE->d_unsorted;
+
+    pANTLR3_COMMON_TOKEN    UPPER_WORD5;
+
+    /* Initialize rule variables
+     */
+
+    UPPER_WORD5       = NULL;
+
+    {
+        // ../../../../../../src/parser/tptp/Tptp.g:771:3: ( UPPER_WORD ( COLON_TOK parseType[type] )? )
+        // ../../../../../../src/parser/tptp/Tptp.g:771:5: UPPER_WORD ( COLON_TOK parseType[type] )?
+        {
+            UPPER_WORD5 = (pANTLR3_COMMON_TOKEN) MATCHT(UPPER_WORD, &FOLLOW_UPPER_WORD_in_tffbindvariable2407);
+            if  (HASEXCEPTION())
+            {
+                goto ruletffbindvariableEx;
+            }
+
+
+            // ../../../../../../src/parser/tptp/Tptp.g:772:5: ( COLON_TOK parseType[type] )?
+            {
+                int alt50=2;
+                switch ( LA(1) )
+                {
+                    case COLON_TOK:
+                    	{
+                    		alt50=1;
+                    	}
+                        break;
+                }
+
+                switch (alt50)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/tptp/Tptp.g:772:7: COLON_TOK parseType[type]
+            	    {
+            	         MATCHT(COLON_TOK, &FOLLOW_COLON_TOK_in_tffbindvariable2415);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletffbindvariableEx;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_parseType_in_tffbindvariable2417);
+            	        parseType(ctx, type);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletffbindvariableEx;
+            	        }
+
+
+            	    }
+            	    break;
+
+                }
+            }
+
+            {
+                 std::string name = AntlrInput::tokenText(UPPER_WORD5);
+                      expr = PARSER_STATE->mkBoundVar(name, type);
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletffbindvariableEx; /* Prevent compiler warnings */
+    ruletffbindvariableEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end tffbindvariable */
+
+/**
+ * $ANTLR start tffVariableList
+ * ../../../../../../src/parser/tptp/Tptp.g:780:1: tffVariableList[std::vector<CVC4::Expr>& bvlist] : tffbindvariable[e] ( COMMA_TOK tffbindvariable[e] )* ;
+ */
+static void
+tffVariableList(pTptpParser ctx, std::vector<CVC4::Expr>& bvlist)
+{
+
+      CVC4::Expr e;
+
+    /* Initialize rule variables
+     */
+
+    {
+        // ../../../../../../src/parser/tptp/Tptp.g:784:3: ( tffbindvariable[e] ( COMMA_TOK tffbindvariable[e] )* )
+        // ../../../../../../src/parser/tptp/Tptp.g:784:5: tffbindvariable[e] ( COMMA_TOK tffbindvariable[e] )*
+        {
+            FOLLOWPUSH(FOLLOW_tffbindvariable_in_tffVariableList2448);
+            tffbindvariable(ctx, e);
+
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
+            {
+                goto ruletffVariableListEx;
+            }
+
+
+            {
+                 bvlist.push_back(e); 
+            }
+
+
+            // ../../../../../../src/parser/tptp/Tptp.g:785:5: ( COMMA_TOK tffbindvariable[e] )*
+
+            for (;;)
+            {
+                int alt51=2;
+                switch ( LA(1) )
+                {
+                case COMMA_TOK:
+                	{
+                		alt51=1;
+                	}
+                    break;
+
+                }
+
+                switch (alt51)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/tptp/Tptp.g:785:7: COMMA_TOK tffbindvariable[e]
+            	    {
+            	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_tffVariableList2459);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletffVariableListEx;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_tffbindvariable_in_tffVariableList2461);
+            	        tffbindvariable(ctx, e);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruletffVariableListEx;
+            	        }
+
+
+            	        {
+            	             bvlist.push_back(e); 
+            	        }
+
+
+            	    }
+            	    break;
+
+            	default:
+            	    goto loop51;	/* break out of the loop */
+            	    break;
+                }
+            }
+            loop51: ; /* Jump out to here if this rule does not match */
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruletffVariableListEx; /* Prevent compiler warnings */
+    ruletffVariableListEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end tffVariableList */
+
+/**
+ * $ANTLR start parseType
+ * ../../../../../../src/parser/tptp/Tptp.g:788:1: parseType[CVC4::Type& type] : ( simpleType[type] | ( simpleType[type] | LPAREN_TOK simpleType[type] ( TIMES_TOK simpleType[type] )+ RPAREN_TOK ) GREATER_TOK simpleType[type] );
+ */
+static void
+parseType(pTptpParser ctx, CVC4::Type& type)
+{
+
+      std::vector<CVC4::Type> v;
+
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:792:3: ( simpleType[type] | ( simpleType[type] | LPAREN_TOK simpleType[type] ( TIMES_TOK simpleType[type] )+ RPAREN_TOK ) GREATER_TOK simpleType[type] )
+
+            ANTLR3_UINT32 alt54;
+
+            alt54=2;
+
+            switch ( LA(1) )
+            {
+            case DEFINED_SYMBOL:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case COMMA_TOK:
+            		case RBRACK_TOK:
+            		case RPAREN_TOK:
+            			{
+            				alt54=1;
+            			}
+            		    break;
+            		case GREATER_TOK:
+            			{
+            				alt54=2;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 54;
+            		    EXCEPTION->state        = 1;
+
+
+            		    goto ruleparseTypeEx;
+
+            		}
+
+            	}
+                break;
+            case FOF_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case COMMA_TOK:
+            		case RBRACK_TOK:
+            		case RPAREN_TOK:
+            			{
+            				alt54=1;
+            			}
+            		    break;
+            		case GREATER_TOK:
+            			{
+            				alt54=2;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 54;
+            		    EXCEPTION->state        = 2;
+
+
+            		    goto ruleparseTypeEx;
+
+            		}
+
+            	}
+                break;
+            case CNF_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case COMMA_TOK:
+            		case RBRACK_TOK:
+            		case RPAREN_TOK:
+            			{
+            				alt54=1;
+            			}
+            		    break;
+            		case GREATER_TOK:
+            			{
+            				alt54=2;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 54;
+            		    EXCEPTION->state        = 3;
+
+
+            		    goto ruleparseTypeEx;
+
+            		}
+
+            	}
+                break;
+            case THF_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case COMMA_TOK:
+            		case RBRACK_TOK:
+            		case RPAREN_TOK:
+            			{
+            				alt54=1;
+            			}
+            		    break;
+            		case GREATER_TOK:
+            			{
+            				alt54=2;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 54;
+            		    EXCEPTION->state        = 4;
+
+
+            		    goto ruleparseTypeEx;
+
+            		}
+
+            	}
+                break;
+            case TFF_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case COMMA_TOK:
+            		case RBRACK_TOK:
+            		case RPAREN_TOK:
+            			{
+            				alt54=1;
+            			}
+            		    break;
+            		case GREATER_TOK:
+            			{
+            				alt54=2;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 54;
+            		    EXCEPTION->state        = 5;
+
+
+            		    goto ruleparseTypeEx;
+
+            		}
+
+            	}
+                break;
+            case TYPE_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case COMMA_TOK:
+            		case RBRACK_TOK:
+            		case RPAREN_TOK:
+            			{
+            				alt54=1;
+            			}
+            		    break;
+            		case GREATER_TOK:
+            			{
+            				alt54=2;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 54;
+            		    EXCEPTION->state        = 6;
+
+
+            		    goto ruleparseTypeEx;
+
+            		}
+
+            	}
+                break;
+            case INCLUDE_TOK:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case COMMA_TOK:
+            		case RBRACK_TOK:
+            		case RPAREN_TOK:
+            			{
+            				alt54=1;
+            			}
+            		    break;
+            		case GREATER_TOK:
+            			{
+            				alt54=2;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 54;
+            		    EXCEPTION->state        = 7;
+
+
+            		    goto ruleparseTypeEx;
+
+            		}
+
+            	}
+                break;
+            case LOWER_WORD:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case COMMA_TOK:
+            		case RBRACK_TOK:
+            		case RPAREN_TOK:
+            			{
+            				alt54=1;
+            			}
+            		    break;
+            		case GREATER_TOK:
+            			{
+            				alt54=2;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 54;
+            		    EXCEPTION->state        = 8;
+
+
+            		    goto ruleparseTypeEx;
+
+            		}
+
+            	}
+                break;
+            case LOWER_WORD_SINGLE_QUOTED:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case COMMA_TOK:
+            		case RBRACK_TOK:
+            		case RPAREN_TOK:
+            			{
+            				alt54=1;
+            			}
+            		    break;
+            		case GREATER_TOK:
+            			{
+            				alt54=2;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 54;
+            		    EXCEPTION->state        = 9;
+
+
+            		    goto ruleparseTypeEx;
+
+            		}
+
+            	}
+                break;
+            case SINGLE_QUOTED:
+            	{
+            		switch ( LA(2) )
+            		{
+            		case COMMA_TOK:
+            		case RBRACK_TOK:
+            		case RPAREN_TOK:
+            			{
+            				alt54=1;
+            			}
+            		    break;
+            		case GREATER_TOK:
+            			{
+            				alt54=2;
+            			}
+            		    break;
+
+            		default:
+            		    CONSTRUCTEX();
+            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            		    EXCEPTION->message      = (void *)"";
+            		    EXCEPTION->decisionNum  = 54;
+            		    EXCEPTION->state        = 10;
+
+
+            		    goto ruleparseTypeEx;
+
+            		}
+
+            	}
+                break;
+            case LPAREN_TOK:
+            	{
+            		alt54=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 54;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleparseTypeEx;
+
+            }
+
+            switch (alt54)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:792:5: simpleType[type]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_simpleType_in_parseType2486);
+        	        simpleType(ctx, type);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseTypeEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:793:5: ( simpleType[type] | LPAREN_TOK simpleType[type] ( TIMES_TOK simpleType[type] )+ RPAREN_TOK ) GREATER_TOK simpleType[type]
+        	    {
+        	        // ../../../../../../src/parser/tptp/Tptp.g:793:5: ( simpleType[type] | LPAREN_TOK simpleType[type] ( TIMES_TOK simpleType[type] )+ RPAREN_TOK )
+        	        {
+        	            int alt53=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case CNF_TOK:
+        	            case DEFINED_SYMBOL:
+        	            case FOF_TOK:
+        	            case INCLUDE_TOK:
+        	            case LOWER_WORD:
+        	            case LOWER_WORD_SINGLE_QUOTED:
+        	            case SINGLE_QUOTED:
+        	            case TFF_TOK:
+        	            case THF_TOK:
+        	            case TYPE_TOK:
+        	            	{
+        	            		alt53=1;
+        	            	}
+        	                break;
+        	            case LPAREN_TOK:
+        	            	{
+        	            		alt53=2;
+        	            	}
+        	                break;
+
+        	            default:
+        	                CONSTRUCTEX();
+        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	                EXCEPTION->message      = (void *)"";
+        	                EXCEPTION->decisionNum  = 53;
+        	                EXCEPTION->state        = 0;
+
+
+        	                goto ruleparseTypeEx;
+
+        	            }
+
+        	            switch (alt53)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:793:7: simpleType[type]
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_simpleType_in_parseType2495);
+        	        	        simpleType(ctx, type);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleparseTypeEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             v.push_back(type); 
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+        	        	case 2:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:794:7: LPAREN_TOK simpleType[type] ( TIMES_TOK simpleType[type] )+ RPAREN_TOK
+        	        	    {
+        	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_parseType2506);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleparseTypeEx;
+        	        	        }
+
+
+        	        	        FOLLOWPUSH(FOLLOW_simpleType_in_parseType2508);
+        	        	        simpleType(ctx, type);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleparseTypeEx;
+        	        	        }
+
+
+        	        	        {
+        	        	             v.push_back(type); 
+        	        	        }
+
+
+        	        	        // ../../../../../../src/parser/tptp/Tptp.g:795:7: ( TIMES_TOK simpleType[type] )+
+        	        	        {
+        	        	            int cnt52=0;
+
+        	        	            for (;;)
+        	        	            {
+        	        	                int alt52=2;
+        	        	        	switch ( LA(1) )
+        	        	        	{
+        	        	        	case TIMES_TOK:
+        	        	        		{
+        	        	        			alt52=1;
+        	        	        		}
+        	        	        	    break;
+
+        	        	        	}
+
+        	        	        	switch (alt52)
+        	        	        	{
+        	        	        	    case 1:
+        	        	        	        // ../../../../../../src/parser/tptp/Tptp.g:795:9: TIMES_TOK simpleType[type]
+        	        	        	        {
+        	        	        	             MATCHT(TIMES_TOK, &FOLLOW_TIMES_TOK_in_parseType2521);
+        	        	        	            if  (HASEXCEPTION())
+        	        	        	            {
+        	        	        	                goto ruleparseTypeEx;
+        	        	        	            }
+
+
+        	        	        	            FOLLOWPUSH(FOLLOW_simpleType_in_parseType2523);
+        	        	        	            simpleType(ctx, type);
+
+        	        	        	            FOLLOWPOP();
+        	        	        	            if  (HASEXCEPTION())
+        	        	        	            {
+        	        	        	                goto ruleparseTypeEx;
+        	        	        	            }
+
+
+        	        	        	            {
+        	        	        	                 v.push_back(type); 
+        	        	        	            }
+
+
+        	        	        	        }
+        	        	        	        break;
+
+        	        	        	    default:
+
+        	        	        		if ( cnt52 >= 1 )
+        	        	        		{
+        	        	        		    goto loop52;
+        	        	        		}
+        	        	        		/* mismatchedSetEx()
+        	        	        		 */
+        	        	        		CONSTRUCTEX();
+        	        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        	        		goto ruleparseTypeEx;
+        	        	        	}
+        	        	        	cnt52++;
+        	        	            }
+        	        	            loop52: ;	/* Jump to here if this rule does not match */
+        	        	        }
+
+        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_parseType2537);
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleparseTypeEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	            }
+        	        }
+
+        	         MATCHT(GREATER_TOK, &FOLLOW_GREATER_TOK_in_parseType2549);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseTypeEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_simpleType_in_parseType2551);
+        	        simpleType(ctx, type);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleparseTypeEx;
+        	        }
+
+
+        	        {
+        	             v.push_back(type);
+        	                  type = EXPR_MANAGER->mkFunctionType(v);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleparseTypeEx; /* Prevent compiler warnings */
+    ruleparseTypeEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end parseType */
+
+/**
+ * $ANTLR start simpleType
+ * ../../../../../../src/parser/tptp/Tptp.g:805:1: simpleType[CVC4::Type& type] : ( DEFINED_SYMBOL | atomicWord[name] );
+ */
+static void
+simpleType(pTptpParser ctx, CVC4::Type& type)
+{
+
+      std::string name;
+
+    pANTLR3_COMMON_TOKEN    DEFINED_SYMBOL6;
+
+    /* Initialize rule variables
+     */
+
+    DEFINED_SYMBOL6       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:809:3: ( DEFINED_SYMBOL | atomicWord[name] )
+
+            ANTLR3_UINT32 alt55;
+
+            alt55=2;
+
+            switch ( LA(1) )
+            {
+            case DEFINED_SYMBOL:
+            	{
+            		alt55=1;
+            	}
+                break;
+            case CNF_TOK:
+            case FOF_TOK:
+            case INCLUDE_TOK:
+            case LOWER_WORD:
+            case LOWER_WORD_SINGLE_QUOTED:
+            case SINGLE_QUOTED:
+            case TFF_TOK:
+            case THF_TOK:
+            case TYPE_TOK:
+            	{
+            		alt55=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 55;
+                EXCEPTION->state        = 0;
+
+
+                goto rulesimpleTypeEx;
+
+            }
+
+            switch (alt55)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:809:5: DEFINED_SYMBOL
+        	    {
+        	        DEFINED_SYMBOL6 = (pANTLR3_COMMON_TOKEN) MATCHT(DEFINED_SYMBOL, &FOLLOW_DEFINED_SYMBOL_in_simpleType2578);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTypeEx;
+        	        }
+
+
+        	        {
+        	             std::string s = AntlrInput::tokenText(DEFINED_SYMBOL6);
+        	                  if(s == "$i") type = PARSER_STATE->d_unsorted;
+        	                  else if(s == "$o") type = EXPR_MANAGER->booleanType();
+        	                  else if(s == "$int") type = EXPR_MANAGER->integerType();
+        	                  else if(s == "$rat") type = EXPR_MANAGER->realType();
+        	                  else if(s == "$real") type = EXPR_MANAGER->realType();
+        	                  else if(s == "$tType") PARSER_STATE->parseError("Type of types `$tType' cannot be used here");
+        	                  else PARSER_STATE->parseError("unknown defined type `" + s + "'");
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:819:5: atomicWord[name]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_atomicWord_in_simpleType2590);
+        	        atomicWord(ctx, name);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulesimpleTypeEx;
+        	        }
+
+
+        	        {
+        	             type = PARSER_STATE->getSort(name); 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulesimpleTypeEx; /* Prevent compiler warnings */
+    rulesimpleTypeEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end simpleType */
+
+/**
+ * $ANTLR start anything
+ * ../../../../../../src/parser/tptp/Tptp.g:826:1: anything : ( LPAREN_TOK ( anything )* RPAREN_TOK | LBRACK_TOK ( anything )* RBRACK_TOK | COMMA_TOK | DOT_TOK | COLON_TOK | OR_TOK | NOT_TOK | BANG_TOK | MARK_TOK | AND_TOK | IFF_TOK | IMPLIES_TOK | REVIMPLIES_TOK | REVIFF_TOK | REVOR_TOK | REVAND_TOK | TIMES_TOK | PLUS_TOK | MINUS_TOK | TRUE_TOK | FALSE_TOK | EQUAL_TOK | DISEQUAL_TOK | CNF_TOK | FOF_TOK | THF_TOK | TFF_TOK | TYPE_TOK | INCLUDE_TOK | DISTINCT_OBJECT | UPPER_WORD | LOWER_W [...]
+ */
+static void
+anything(pTptpParser ctx)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:827:3: ( LPAREN_TOK ( anything )* RPAREN_TOK | LBRACK_TOK ( anything )* RBRACK_TOK | COMMA_TOK | DOT_TOK | COLON_TOK | OR_TOK | NOT_TOK | BANG_TOK | MARK_TOK | AND_TOK | IFF_TOK | IMPLIES_TOK | REVIMPLIES_TOK | REVIFF_TOK | REVOR_TOK | REVAND_TOK | TIMES_TOK | PLUS_TOK | MINUS_TOK | TRUE_TOK | FALSE_TOK | EQUAL_TOK | DISEQUAL_TOK | CNF_TOK | FOF_TOK | THF_TOK | TFF_TOK | TYPE_TOK | INCLUDE_TOK | DISTINCT_OBJECT | UPPER_WORD | LOWER [...]
+
+            ANTLR3_UINT32 alt58;
+
+            alt58=36;
+
+            switch ( LA(1) )
+            {
+            case LPAREN_TOK:
+            	{
+            		alt58=1;
+            	}
+                break;
+            case LBRACK_TOK:
+            	{
+            		alt58=2;
+            	}
+                break;
+            case COMMA_TOK:
+            	{
+            		alt58=3;
+            	}
+                break;
+            case DOT_TOK:
+            	{
+            		alt58=4;
+            	}
+                break;
+            case COLON_TOK:
+            	{
+            		alt58=5;
+            	}
+                break;
+            case OR_TOK:
+            	{
+            		alt58=6;
+            	}
+                break;
+            case NOT_TOK:
+            	{
+            		alt58=7;
+            	}
+                break;
+            case BANG_TOK:
+            	{
+            		alt58=8;
+            	}
+                break;
+            case MARK_TOK:
+            	{
+            		alt58=9;
+            	}
+                break;
+            case AND_TOK:
+            	{
+            		alt58=10;
+            	}
+                break;
+            case IFF_TOK:
+            	{
+            		alt58=11;
+            	}
+                break;
+            case IMPLIES_TOK:
+            	{
+            		alt58=12;
+            	}
+                break;
+            case REVIMPLIES_TOK:
+            	{
+            		alt58=13;
+            	}
+                break;
+            case REVIFF_TOK:
+            	{
+            		alt58=14;
+            	}
+                break;
+            case REVOR_TOK:
+            	{
+            		alt58=15;
+            	}
+                break;
+            case REVAND_TOK:
+            	{
+            		alt58=16;
+            	}
+                break;
+            case TIMES_TOK:
+            	{
+            		alt58=17;
+            	}
+                break;
+            case PLUS_TOK:
+            	{
+            		alt58=18;
+            	}
+                break;
+            case MINUS_TOK:
+            	{
+            		alt58=19;
+            	}
+                break;
+            case TRUE_TOK:
+            	{
+            		alt58=20;
+            	}
+                break;
+            case FALSE_TOK:
+            	{
+            		alt58=21;
+            	}
+                break;
+            case EQUAL_TOK:
+            	{
+            		alt58=22;
+            	}
+                break;
+            case DISEQUAL_TOK:
+            	{
+            		alt58=23;
+            	}
+                break;
+            case CNF_TOK:
+            	{
+            		alt58=24;
+            	}
+                break;
+            case FOF_TOK:
+            	{
+            		alt58=25;
+            	}
+                break;
+            case THF_TOK:
+            	{
+            		alt58=26;
+            	}
+                break;
+            case TFF_TOK:
+            	{
+            		alt58=27;
+            	}
+                break;
+            case TYPE_TOK:
+            	{
+            		alt58=28;
+            	}
+                break;
+            case INCLUDE_TOK:
+            	{
+            		alt58=29;
+            	}
+                break;
+            case DISTINCT_OBJECT:
+            	{
+            		alt58=30;
+            	}
+                break;
+            case UPPER_WORD:
+            	{
+            		alt58=31;
+            	}
+                break;
+            case LOWER_WORD:
+            	{
+            		alt58=32;
+            	}
+                break;
+            case LOWER_WORD_SINGLE_QUOTED:
+            	{
+            		alt58=33;
+            	}
+                break;
+            case SINGLE_QUOTED:
+            	{
+            		alt58=34;
+            	}
+                break;
+            case NUMBER:
+            	{
+            		alt58=35;
+            	}
+                break;
+            case DEFINED_SYMBOL:
+            	{
+            		alt58=36;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 58;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleanythingEx;
+
+            }
+
+            switch (alt58)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:827:5: LPAREN_TOK ( anything )* RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_anything2615);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/tptp/Tptp.g:827:16: ( anything )*
+
+        	        for (;;)
+        	        {
+        	            int alt56=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case AND_TOK:
+        	            case BANG_TOK:
+        	            case CNF_TOK:
+        	            case COLON_TOK:
+        	            case COMMA_TOK:
+        	            case DEFINED_SYMBOL:
+        	            case DISEQUAL_TOK:
+        	            case DISTINCT_OBJECT:
+        	            case DOT_TOK:
+        	            case EQUAL_TOK:
+        	            case FALSE_TOK:
+        	            case FOF_TOK:
+        	            case IFF_TOK:
+        	            case IMPLIES_TOK:
+        	            case INCLUDE_TOK:
+        	            case LBRACK_TOK:
+        	            case LOWER_WORD:
+        	            case LOWER_WORD_SINGLE_QUOTED:
+        	            case LPAREN_TOK:
+        	            case MARK_TOK:
+        	            case MINUS_TOK:
+        	            case NOT_TOK:
+        	            case NUMBER:
+        	            case OR_TOK:
+        	            case PLUS_TOK:
+        	            case REVAND_TOK:
+        	            case REVIFF_TOK:
+        	            case REVIMPLIES_TOK:
+        	            case REVOR_TOK:
+        	            case SINGLE_QUOTED:
+        	            case TFF_TOK:
+        	            case THF_TOK:
+        	            case TIMES_TOK:
+        	            case TRUE_TOK:
+        	            case TYPE_TOK:
+        	            case UPPER_WORD:
+        	            	{
+        	            		alt56=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt56)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:827:16: anything
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_anything_in_anything2617);
+        	        	        anything(ctx);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleanythingEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop56;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop56: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_anything2620);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:828:5: LBRACK_TOK ( anything )* RBRACK_TOK
+        	    {
+        	         MATCHT(LBRACK_TOK, &FOLLOW_LBRACK_TOK_in_anything2626);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	        // ../../../../../../src/parser/tptp/Tptp.g:828:16: ( anything )*
+
+        	        for (;;)
+        	        {
+        	            int alt57=2;
+        	            switch ( LA(1) )
+        	            {
+        	            case AND_TOK:
+        	            case BANG_TOK:
+        	            case CNF_TOK:
+        	            case COLON_TOK:
+        	            case COMMA_TOK:
+        	            case DEFINED_SYMBOL:
+        	            case DISEQUAL_TOK:
+        	            case DISTINCT_OBJECT:
+        	            case DOT_TOK:
+        	            case EQUAL_TOK:
+        	            case FALSE_TOK:
+        	            case FOF_TOK:
+        	            case IFF_TOK:
+        	            case IMPLIES_TOK:
+        	            case INCLUDE_TOK:
+        	            case LBRACK_TOK:
+        	            case LOWER_WORD:
+        	            case LOWER_WORD_SINGLE_QUOTED:
+        	            case LPAREN_TOK:
+        	            case MARK_TOK:
+        	            case MINUS_TOK:
+        	            case NOT_TOK:
+        	            case NUMBER:
+        	            case OR_TOK:
+        	            case PLUS_TOK:
+        	            case REVAND_TOK:
+        	            case REVIFF_TOK:
+        	            case REVIMPLIES_TOK:
+        	            case REVOR_TOK:
+        	            case SINGLE_QUOTED:
+        	            case TFF_TOK:
+        	            case THF_TOK:
+        	            case TIMES_TOK:
+        	            case TRUE_TOK:
+        	            case TYPE_TOK:
+        	            case UPPER_WORD:
+        	            	{
+        	            		alt57=1;
+        	            	}
+        	                break;
+
+        	            }
+
+        	            switch (alt57)
+        	            {
+        	        	case 1:
+        	        	    // ../../../../../../src/parser/tptp/Tptp.g:828:16: anything
+        	        	    {
+        	        	        FOLLOWPUSH(FOLLOW_anything_in_anything2628);
+        	        	        anything(ctx);
+
+        	        	        FOLLOWPOP();
+        	        	        if  (HASEXCEPTION())
+        	        	        {
+        	        	            goto ruleanythingEx;
+        	        	        }
+
+
+        	        	    }
+        	        	    break;
+
+        	        	default:
+        	        	    goto loop57;	/* break out of the loop */
+        	        	    break;
+        	            }
+        	        }
+        	        loop57: ; /* Jump out to here if this rule does not match */
+
+
+        	         MATCHT(RBRACK_TOK, &FOLLOW_RBRACK_TOK_in_anything2631);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:829:5: COMMA_TOK
+        	    {
+        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_anything2637);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:830:5: DOT_TOK
+        	    {
+        	         MATCHT(DOT_TOK, &FOLLOW_DOT_TOK_in_anything2643);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:831:5: COLON_TOK
+        	    {
+        	         MATCHT(COLON_TOK, &FOLLOW_COLON_TOK_in_anything2649);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:832:5: OR_TOK
+        	    {
+        	         MATCHT(OR_TOK, &FOLLOW_OR_TOK_in_anything2655);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:833:5: NOT_TOK
+        	    {
+        	         MATCHT(NOT_TOK, &FOLLOW_NOT_TOK_in_anything2661);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 8:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:834:5: BANG_TOK
+        	    {
+        	         MATCHT(BANG_TOK, &FOLLOW_BANG_TOK_in_anything2667);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 9:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:835:5: MARK_TOK
+        	    {
+        	         MATCHT(MARK_TOK, &FOLLOW_MARK_TOK_in_anything2673);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 10:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:836:5: AND_TOK
+        	    {
+        	         MATCHT(AND_TOK, &FOLLOW_AND_TOK_in_anything2679);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 11:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:837:5: IFF_TOK
+        	    {
+        	         MATCHT(IFF_TOK, &FOLLOW_IFF_TOK_in_anything2685);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 12:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:838:5: IMPLIES_TOK
+        	    {
+        	         MATCHT(IMPLIES_TOK, &FOLLOW_IMPLIES_TOK_in_anything2691);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 13:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:839:5: REVIMPLIES_TOK
+        	    {
+        	         MATCHT(REVIMPLIES_TOK, &FOLLOW_REVIMPLIES_TOK_in_anything2697);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 14:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:840:5: REVIFF_TOK
+        	    {
+        	         MATCHT(REVIFF_TOK, &FOLLOW_REVIFF_TOK_in_anything2703);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 15:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:841:5: REVOR_TOK
+        	    {
+        	         MATCHT(REVOR_TOK, &FOLLOW_REVOR_TOK_in_anything2709);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 16:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:842:5: REVAND_TOK
+        	    {
+        	         MATCHT(REVAND_TOK, &FOLLOW_REVAND_TOK_in_anything2715);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 17:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:843:5: TIMES_TOK
+        	    {
+        	         MATCHT(TIMES_TOK, &FOLLOW_TIMES_TOK_in_anything2721);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 18:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:844:5: PLUS_TOK
+        	    {
+        	         MATCHT(PLUS_TOK, &FOLLOW_PLUS_TOK_in_anything2727);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 19:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:845:5: MINUS_TOK
+        	    {
+        	         MATCHT(MINUS_TOK, &FOLLOW_MINUS_TOK_in_anything2733);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 20:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:846:5: TRUE_TOK
+        	    {
+        	         MATCHT(TRUE_TOK, &FOLLOW_TRUE_TOK_in_anything2739);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 21:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:847:5: FALSE_TOK
+        	    {
+        	         MATCHT(FALSE_TOK, &FOLLOW_FALSE_TOK_in_anything2745);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 22:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:848:5: EQUAL_TOK
+        	    {
+        	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_anything2751);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 23:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:849:5: DISEQUAL_TOK
+        	    {
+        	         MATCHT(DISEQUAL_TOK, &FOLLOW_DISEQUAL_TOK_in_anything2757);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 24:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:850:5: CNF_TOK
+        	    {
+        	         MATCHT(CNF_TOK, &FOLLOW_CNF_TOK_in_anything2763);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 25:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:851:5: FOF_TOK
+        	    {
+        	         MATCHT(FOF_TOK, &FOLLOW_FOF_TOK_in_anything2769);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 26:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:852:5: THF_TOK
+        	    {
+        	         MATCHT(THF_TOK, &FOLLOW_THF_TOK_in_anything2775);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 27:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:853:5: TFF_TOK
+        	    {
+        	         MATCHT(TFF_TOK, &FOLLOW_TFF_TOK_in_anything2781);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 28:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:854:5: TYPE_TOK
+        	    {
+        	         MATCHT(TYPE_TOK, &FOLLOW_TYPE_TOK_in_anything2787);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 29:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:855:5: INCLUDE_TOK
+        	    {
+        	         MATCHT(INCLUDE_TOK, &FOLLOW_INCLUDE_TOK_in_anything2793);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 30:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:856:5: DISTINCT_OBJECT
+        	    {
+        	         MATCHT(DISTINCT_OBJECT, &FOLLOW_DISTINCT_OBJECT_in_anything2799);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 31:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:857:5: UPPER_WORD
+        	    {
+        	         MATCHT(UPPER_WORD, &FOLLOW_UPPER_WORD_in_anything2805);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 32:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:858:5: LOWER_WORD
+        	    {
+        	         MATCHT(LOWER_WORD, &FOLLOW_LOWER_WORD_in_anything2811);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 33:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:859:5: LOWER_WORD_SINGLE_QUOTED
+        	    {
+        	         MATCHT(LOWER_WORD_SINGLE_QUOTED, &FOLLOW_LOWER_WORD_SINGLE_QUOTED_in_anything2817);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 34:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:860:5: SINGLE_QUOTED
+        	    {
+        	         MATCHT(SINGLE_QUOTED, &FOLLOW_SINGLE_QUOTED_in_anything2823);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 35:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:861:5: NUMBER
+        	    {
+        	         MATCHT(NUMBER, &FOLLOW_NUMBER_in_anything2829);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 36:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:862:5: DEFINED_SYMBOL
+        	    {
+        	         MATCHT(DEFINED_SYMBOL, &FOLLOW_DEFINED_SYMBOL_in_anything2835);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleanythingEx;
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleanythingEx; /* Prevent compiler warnings */
+    ruleanythingEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end anything */
+
+/**
+ * $ANTLR start unquotedFileName
+ * ../../../../../../src/parser/tptp/Tptp.g:944:1: unquotedFileName[std::string& name] : (s= LOWER_WORD_SINGLE_QUOTED |s= SINGLE_QUOTED ) ;
+ */
+static void
+unquotedFileName(pTptpParser ctx, std::string& name)
+{
+    pANTLR3_COMMON_TOKEN    s;
+
+    /* Initialize rule variables
+     */
+
+    s       = NULL;
+
+    {
+        // ../../../../../../src/parser/tptp/Tptp.g:945:2: ( (s= LOWER_WORD_SINGLE_QUOTED |s= SINGLE_QUOTED ) )
+        // ../../../../../../src/parser/tptp/Tptp.g:945:4: (s= LOWER_WORD_SINGLE_QUOTED |s= SINGLE_QUOTED )
+        {
+            // ../../../../../../src/parser/tptp/Tptp.g:945:4: (s= LOWER_WORD_SINGLE_QUOTED |s= SINGLE_QUOTED )
+            {
+                int alt59=2;
+                switch ( LA(1) )
+                {
+                case LOWER_WORD_SINGLE_QUOTED:
+                	{
+                		alt59=1;
+                	}
+                    break;
+                case SINGLE_QUOTED:
+                	{
+                		alt59=2;
+                	}
+                    break;
+
+                default:
+                    CONSTRUCTEX();
+                    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                    EXCEPTION->message      = (void *)"";
+                    EXCEPTION->decisionNum  = 59;
+                    EXCEPTION->state        = 0;
+
+
+                    goto ruleunquotedFileNameEx;
+
+                }
+
+                switch (alt59)
+                {
+            	case 1:
+            	    // ../../../../../../src/parser/tptp/Tptp.g:945:5: s= LOWER_WORD_SINGLE_QUOTED
+            	    {
+            	        s = (pANTLR3_COMMON_TOKEN) MATCHT(LOWER_WORD_SINGLE_QUOTED, &FOLLOW_LOWER_WORD_SINGLE_QUOTED_in_unquotedFileName3414);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleunquotedFileNameEx;
+            	        }
+
+
+            	    }
+            	    break;
+            	case 2:
+            	    // ../../../../../../src/parser/tptp/Tptp.g:945:34: s= SINGLE_QUOTED
+            	    {
+            	        s = (pANTLR3_COMMON_TOKEN) MATCHT(SINGLE_QUOTED, &FOLLOW_SINGLE_QUOTED_in_unquotedFileName3420);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleunquotedFileNameEx;
+            	        }
+
+
+            	    }
+            	    break;
+
+                }
+            }
+
+            {
+                 name = AntlrInput::tokenText(s);
+                      name = name.substr(1, name.size() - 2 );
+                    
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleunquotedFileNameEx; /* Prevent compiler warnings */
+    ruleunquotedFileNameEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end unquotedFileName */
+
+/**
+ * $ANTLR start nameN
+ * ../../../../../../src/parser/tptp/Tptp.g:951:1: nameN[std::string& name] : ( atomicWord[name] | NUMBER );
+ */
+static void
+nameN(pTptpParser ctx, std::string& name)
+{
+    pANTLR3_COMMON_TOKEN    NUMBER7;
+
+    /* Initialize rule variables
+     */
+
+    NUMBER7       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:952:2: ( atomicWord[name] | NUMBER )
+
+            ANTLR3_UINT32 alt60;
+
+            alt60=2;
+
+            switch ( LA(1) )
+            {
+            case CNF_TOK:
+            case FOF_TOK:
+            case INCLUDE_TOK:
+            case LOWER_WORD:
+            case LOWER_WORD_SINGLE_QUOTED:
+            case SINGLE_QUOTED:
+            case TFF_TOK:
+            case THF_TOK:
+            case TYPE_TOK:
+            	{
+            		alt60=1;
+            	}
+                break;
+            case NUMBER:
+            	{
+            		alt60=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 60;
+                EXCEPTION->state        = 0;
+
+
+                goto rulenameNEx;
+
+            }
+
+            switch (alt60)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:952:4: atomicWord[name]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_atomicWord_in_nameN3439);
+        	        atomicWord(ctx, name);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulenameNEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:953:4: NUMBER
+        	    {
+        	        NUMBER7 = (pANTLR3_COMMON_TOKEN) MATCHT(NUMBER, &FOLLOW_NUMBER_in_nameN3445);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulenameNEx;
+        	        }
+
+
+        	        {
+        	             name = AntlrInput::tokenText(NUMBER7); 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulenameNEx; /* Prevent compiler warnings */
+    rulenameNEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end nameN */
+
+/**
+ * $ANTLR start atomicWord
+ * ../../../../../../src/parser/tptp/Tptp.g:957:1: atomicWord[std::string& name] : ( FOF_TOK | CNF_TOK | THF_TOK | TFF_TOK | TYPE_TOK | INCLUDE_TOK | LOWER_WORD | LOWER_WORD_SINGLE_QUOTED | SINGLE_QUOTED );
+ */
+static void
+atomicWord(pTptpParser ctx, std::string& name)
+{
+    pANTLR3_COMMON_TOKEN    LOWER_WORD8;
+    pANTLR3_COMMON_TOKEN    LOWER_WORD_SINGLE_QUOTED9;
+    pANTLR3_COMMON_TOKEN    SINGLE_QUOTED10;
+
+    /* Initialize rule variables
+     */
+
+    LOWER_WORD8       = NULL;
+    LOWER_WORD_SINGLE_QUOTED9       = NULL;
+    SINGLE_QUOTED10       = NULL;
+
+    {
+        {
+            //  ../../../../../../src/parser/tptp/Tptp.g:958:2: ( FOF_TOK | CNF_TOK | THF_TOK | TFF_TOK | TYPE_TOK | INCLUDE_TOK | LOWER_WORD | LOWER_WORD_SINGLE_QUOTED | SINGLE_QUOTED )
+
+            ANTLR3_UINT32 alt61;
+
+            alt61=9;
+
+            switch ( LA(1) )
+            {
+            case FOF_TOK:
+            	{
+            		alt61=1;
+            	}
+                break;
+            case CNF_TOK:
+            	{
+            		alt61=2;
+            	}
+                break;
+            case THF_TOK:
+            	{
+            		alt61=3;
+            	}
+                break;
+            case TFF_TOK:
+            	{
+            		alt61=4;
+            	}
+                break;
+            case TYPE_TOK:
+            	{
+            		alt61=5;
+            	}
+                break;
+            case INCLUDE_TOK:
+            	{
+            		alt61=6;
+            	}
+                break;
+            case LOWER_WORD:
+            	{
+            		alt61=7;
+            	}
+                break;
+            case LOWER_WORD_SINGLE_QUOTED:
+            	{
+            		alt61=8;
+            	}
+                break;
+            case SINGLE_QUOTED:
+            	{
+            		alt61=9;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 61;
+                EXCEPTION->state        = 0;
+
+
+                goto ruleatomicWordEx;
+
+            }
+
+            switch (alt61)
+            {
+        	case 1:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:958:4: FOF_TOK
+        	    {
+        	         MATCHT(FOF_TOK, &FOLLOW_FOF_TOK_in_atomicWord3461);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicWordEx;
+        	        }
+
+
+        	        {
+        	             name = "fof"; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:959:4: CNF_TOK
+        	    {
+        	         MATCHT(CNF_TOK, &FOLLOW_CNF_TOK_in_atomicWord3472);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicWordEx;
+        	        }
+
+
+        	        {
+        	             name = "cnf"; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 3:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:960:4: THF_TOK
+        	    {
+        	         MATCHT(THF_TOK, &FOLLOW_THF_TOK_in_atomicWord3483);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicWordEx;
+        	        }
+
+
+        	        {
+        	             name = "thf"; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 4:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:961:4: TFF_TOK
+        	    {
+        	         MATCHT(TFF_TOK, &FOLLOW_TFF_TOK_in_atomicWord3494);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicWordEx;
+        	        }
+
+
+        	        {
+        	             name = "tff"; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:962:4: TYPE_TOK
+        	    {
+        	         MATCHT(TYPE_TOK, &FOLLOW_TYPE_TOK_in_atomicWord3505);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicWordEx;
+        	        }
+
+
+        	        {
+        	             name = "type"; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:963:4: INCLUDE_TOK
+        	    {
+        	         MATCHT(INCLUDE_TOK, &FOLLOW_INCLUDE_TOK_in_atomicWord3515);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicWordEx;
+        	        }
+
+
+        	        {
+        	             name = "include"; 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:964:4: LOWER_WORD
+        	    {
+        	        LOWER_WORD8 = (pANTLR3_COMMON_TOKEN) MATCHT(LOWER_WORD, &FOLLOW_LOWER_WORD_in_atomicWord3522);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicWordEx;
+        	        }
+
+
+        	        {
+        	             name = AntlrInput::tokenText(LOWER_WORD8); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 8:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:965:4: LOWER_WORD_SINGLE_QUOTED
+        	    {
+        	        LOWER_WORD_SINGLE_QUOTED9 = (pANTLR3_COMMON_TOKEN) MATCHT(LOWER_WORD_SINGLE_QUOTED, &FOLLOW_LOWER_WORD_SINGLE_QUOTED_in_atomicWord3530);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicWordEx;
+        	        }
+
+
+        	        {
+        	             /* strip off the quotes */
+        	                  name = AntlrInput::tokenTextSubstr(LOWER_WORD_SINGLE_QUOTED9, 1 ,
+        	                                                     (LOWER_WORD_SINGLE_QUOTED9->stop - LOWER_WORD_SINGLE_QUOTED9->start) - 1);
+        	                
+        	        }
+
+
+        	    }
+        	    break;
+        	case 9:
+        	    // ../../../../../../src/parser/tptp/Tptp.g:970:4: SINGLE_QUOTED
+        	    {
+        	        SINGLE_QUOTED10 = (pANTLR3_COMMON_TOKEN) MATCHT(SINGLE_QUOTED, &FOLLOW_SINGLE_QUOTED_in_atomicWord3542);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleatomicWordEx;
+        	        }
+
+
+        	        {
+        	            name = AntlrInput::tokenText(SINGLE_QUOTED10); 
+        	        }
+
+
+        	    }
+        	    break;
+
+            }
+        }
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruleatomicWordEx; /* Prevent compiler warnings */
+    ruleatomicWordEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end atomicWord */
+/* End of parsing rules
+ * ==============================================
+ */
+
+/* ==============================================
+ * Syntactic predicates
+ */
+/* End of syntactic predicates
+ * ==============================================
+ */
+
+
+
+
+
+
+/* End of code
+ * =============================================================================
+ */
diff --git a/src/parser/tptp/TptpParser.h b/src/parser/tptp/TptpParser.h
new file mode 100644
index 0000000..df98eb5
--- /dev/null
+++ b/src/parser/tptp/TptpParser.h
@@ -0,0 +1,523 @@
+/** \file
+ *  This C header file was generated by $ANTLR version 3.4
+ *
+ *     -  From the grammar source file : ../../../../../../src/parser/tptp/Tptp.g
+ *     -                            On : 2017-03-16 01:03:04
+ *     -                for the parser : TptpParserParser
+ *
+ * Editing it, at least manually, is not wise.
+ *
+ * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws.
+ *
+ *
+ * The parser 
+TptpParser
+
+has the callable functions (rules) shown below,
+ * which will invoke the code for the associated rule in the source grammar
+ * assuming that the input stream is pointing to a token/text stream that could begin
+ * this rule.
+ *
+ * For instance if you call the first (topmost) rule in a parser grammar, you will
+ * get the results of a full parse, but calling a rule half way through the grammar will
+ * allow you to pass part of a full token stream to the parser, such as for syntax checking
+ * in editors and so on.
+ *
+ * The parser entry points are called indirectly (by function pointer to function) via
+ * a parser context typedef pTptpParser, which is returned from a call to TptpParserNew().
+ *
+ * The methods in pTptpParser are  as follows:
+ *
+ *  - 
+ CVC4::parser::tptp::myExpr
+      pTptpParser->parseExpr(pTptpParser)
+ *  - 
+ CVC4::Command*
+      pTptpParser->parseCommand(pTptpParser)
+ *  - 
+ void
+      pTptpParser->formulaRole(pTptpParser)
+ *  - 
+ void
+      pTptpParser->cnfFormula(pTptpParser)
+ *  - 
+ void
+      pTptpParser->cnfDisjunction(pTptpParser)
+ *  - 
+ void
+      pTptpParser->cnfLiteral(pTptpParser)
+ *  - 
+ void
+      pTptpParser->atomicFormula(pTptpParser)
+ *  - 
+ void
+      pTptpParser->definedProp(pTptpParser)
+ *  - 
+ void
+      pTptpParser->definedPred(pTptpParser)
+ *  - 
+ void
+      pTptpParser->definedFun(pTptpParser)
+ *  - 
+ void
+      pTptpParser->equalOp(pTptpParser)
+ *  - 
+ void
+      pTptpParser->term(pTptpParser)
+ *  - 
+ void
+      pTptpParser->letTerm(pTptpParser)
+ *  - 
+ void
+      pTptpParser->simpleTerm(pTptpParser)
+ *  - 
+ void
+      pTptpParser->functionTerm(pTptpParser)
+ *  - 
+ void
+      pTptpParser->conditionalTerm(pTptpParser)
+ *  - 
+ void
+      pTptpParser->plainTerm(pTptpParser)
+ *  - 
+ void
+      pTptpParser->arguments(pTptpParser)
+ *  - 
+ void
+      pTptpParser->variable(pTptpParser)
+ *  - 
+ void
+      pTptpParser->fofFormula(pTptpParser)
+ *  - 
+ void
+      pTptpParser->fofLogicFormula(pTptpParser)
+ *  - 
+ void
+      pTptpParser->fofUnitaryFormula(pTptpParser)
+ *  - 
+ void
+      pTptpParser->bindvariable(pTptpParser)
+ *  - 
+ void
+      pTptpParser->fofBinaryNonAssoc(pTptpParser)
+ *  - 
+ void
+      pTptpParser->folQuantifier(pTptpParser)
+ *  - 
+ void
+      pTptpParser->tffFormula(pTptpParser)
+ *  - 
+ void
+      pTptpParser->tffTypedAtom(pTptpParser)
+ *  - 
+ void
+      pTptpParser->tffLogicFormula(pTptpParser)
+ *  - 
+ void
+      pTptpParser->tffUnitaryFormula(pTptpParser)
+ *  - 
+ void
+      pTptpParser->tffLetTermDefn(pTptpParser)
+ *  - 
+ void
+      pTptpParser->tffLetTermBinding(pTptpParser)
+ *  - 
+ void
+      pTptpParser->tffLetFormulaDefn(pTptpParser)
+ *  - 
+ void
+      pTptpParser->tffLetFormulaBinding(pTptpParser)
+ *  - 
+ void
+      pTptpParser->tffbindvariable(pTptpParser)
+ *  - 
+ void
+      pTptpParser->tffVariableList(pTptpParser)
+ *  - 
+ void
+      pTptpParser->parseType(pTptpParser)
+ *  - 
+ void
+      pTptpParser->simpleType(pTptpParser)
+ *  - 
+ void
+      pTptpParser->anything(pTptpParser)
+ *  - 
+ void
+      pTptpParser->unquotedFileName(pTptpParser)
+ *  - 
+ void
+      pTptpParser->nameN(pTptpParser)
+ *  - 
+ void
+      pTptpParser->atomicWord(pTptpParser)
+ *
+ * The return type for any particular rule is of course determined by the source
+ * grammar file.
+ */
+// [The "BSD license"]
+// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
+// http://www.temporal-wave.com
+// http://www.linkedin.com/in/jimidle
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+// 3. The name of the author may not be used to endorse or promote products
+//    derived from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef	_TptpParser_H
+#define _TptpParser_H
+/* =============================================================================
+ * Standard antlr3 C runtime definitions
+ */
+#include    <antlr3.h>
+
+/* End of standard antlr 3 runtime definitions
+ * =============================================================================
+ */
+
+
+// This should come immediately after #include <antlr3.h> in the generated
+// files. See the documentation in "parser/antlr_undefines.h" for more details.
+#include "parser/antlr_undefines.h"
+
+#include "smt/command.h"
+#include "parser/parser.h"
+#include "parser/tptp/tptp.h"
+#include "parser/antlr_tracing.h"
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Forward declare the context typedef so that we can use it before it is
+// properly defined. Delegators and delegates (from import statements) are
+// interdependent and their context structures contain pointers to each other
+// C only allows such things to be declared if you pre-declare the typedef.
+//
+typedef struct TptpParser_Ctx_struct TptpParser, * pTptpParser;
+
+
+
+/**
+ ** This file is part of CVC4.
+ ** Copyright (c) 2009-2014  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.
+ **/
+
+
+#ifdef	ANTLR3_WINDOWS
+// Disable: Unreferenced parameter,							- Rules with parameters that are not used
+//          constant conditional,							- ANTLR realizes that a prediction is always true (synpred usually)
+//          initialized but unused variable					- tree rewrite variables declared but not needed
+//          Unreferenced local variable						- lexer rule declares but does not always use _type
+//          potentially unitialized variable used			- retval always returned from a rule
+//			unreferenced local function has been removed	- susually getTokenNames or freeScope, they can go without warnigns
+//
+// These are only really displayed at warning level /W4 but that is the code ideal I am aiming at
+// and the codegen must generate some of these warnings by necessity, apart from 4100, which is
+// usually generated when a parser rule is given a parameter that it does not use. Mostly though
+// this is a matter of orthogonality hence I disable that one.
+//
+#pragma warning( disable : 4100 )
+#pragma warning( disable : 4101 )
+#pragma warning( disable : 4127 )
+#pragma warning( disable : 4189 )
+#pragma warning( disable : 4505 )
+#pragma warning( disable : 4701 )
+#endif
+
+/** Context tracking structure for 
+TptpParser
+
+ */
+struct TptpParser_Ctx_struct
+{
+    /** Built in ANTLR3 context tracker contains all the generic elements
+     *  required for context tracking.
+     */
+    pANTLR3_PARSER   pParser;
+
+     CVC4::parser::tptp::myExpr
+     (*parseExpr)	(struct TptpParser_Ctx_struct * ctx);
+
+     CVC4::Command*
+     (*parseCommand)	(struct TptpParser_Ctx_struct * ctx);
+
+     void
+     (*formulaRole)	(struct TptpParser_Ctx_struct * ctx, CVC4::parser::Tptp::FormulaRole& role);
+
+     void
+     (*cnfFormula)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*cnfDisjunction)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*cnfLiteral)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*atomicFormula)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*definedProp)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*definedPred)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*definedFun)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*equalOp)	(struct TptpParser_Ctx_struct * ctx, bool& equal);
+
+     void
+     (*term)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*letTerm)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*simpleTerm)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*functionTerm)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*conditionalTerm)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*plainTerm)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*arguments)	(struct TptpParser_Ctx_struct * ctx, std::vector<CVC4::Expr>& args);
+
+     void
+     (*variable)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*fofFormula)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*fofLogicFormula)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*fofUnitaryFormula)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*bindvariable)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*fofBinaryNonAssoc)	(struct TptpParser_Ctx_struct * ctx, CVC4::parser::tptp::NonAssoc& na);
+
+     void
+     (*folQuantifier)	(struct TptpParser_Ctx_struct * ctx, CVC4::Kind& kind);
+
+     void
+     (*tffFormula)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*tffTypedAtom)	(struct TptpParser_Ctx_struct * ctx, CVC4::Command*& cmd);
+
+     void
+     (*tffLogicFormula)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*tffUnitaryFormula)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*tffLetTermDefn)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& lhs, CVC4::Expr& rhs);
+
+     void
+     (*tffLetTermBinding)	(struct TptpParser_Ctx_struct * ctx, std::vector<CVC4::Expr>& bvlist, CVC4::Expr& lhs, CVC4::Expr& rhs);
+
+     void
+     (*tffLetFormulaDefn)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& lhs, CVC4::Expr& rhs);
+
+     void
+     (*tffLetFormulaBinding)	(struct TptpParser_Ctx_struct * ctx, std::vector<CVC4::Expr>& bvlist, CVC4::Expr& lhs, CVC4::Expr& rhs);
+
+     void
+     (*tffbindvariable)	(struct TptpParser_Ctx_struct * ctx, CVC4::Expr& expr);
+
+     void
+     (*tffVariableList)	(struct TptpParser_Ctx_struct * ctx, std::vector<CVC4::Expr>& bvlist);
+
+     void
+     (*parseType)	(struct TptpParser_Ctx_struct * ctx, CVC4::Type& type);
+
+     void
+     (*simpleType)	(struct TptpParser_Ctx_struct * ctx, CVC4::Type& type);
+
+     void
+     (*anything)	(struct TptpParser_Ctx_struct * ctx);
+
+     void
+     (*unquotedFileName)	(struct TptpParser_Ctx_struct * ctx, std::string& name);
+
+     void
+     (*nameN)	(struct TptpParser_Ctx_struct * ctx, std::string& name);
+
+     void
+     (*atomicWord)	(struct TptpParser_Ctx_struct * ctx, std::string& name);
+    // Delegated rules
+
+    const char * (*getGrammarFileName)();
+    void            (*reset)  (struct TptpParser_Ctx_struct * ctx);
+    void	    (*free)   (struct TptpParser_Ctx_struct * ctx);
+};
+
+// Function protoypes for the constructor functions that external translation units
+// such as delegators and delegates may wish to call.
+//
+ANTLR3_API pTptpParser TptpParserNew         (
+pANTLR3_COMMON_TOKEN_STREAM
+ instream);
+ANTLR3_API pTptpParser TptpParserNewSSD      (
+pANTLR3_COMMON_TOKEN_STREAM
+ instream, pANTLR3_RECOGNIZER_SHARED_STATE state);
+
+/** Symbolic definitions of all the tokens that the 
+parser
+ will work with.
+ * \{
+ *
+ * Antlr will define EOF, but we can't use that as it it is too common in
+ * in C header files and that would be confusing. There is no way to filter this out at the moment
+ * so we just undef it here for now. That isn't the value we get back from C recognizers
+ * anyway. We are looking for ANTLR3_TOKEN_EOF.
+ */
+#ifdef	EOF
+#undef	EOF
+#endif
+#ifdef	Tokens
+#undef	Tokens
+#endif
+#define EOF      -1
+#define T__56      56
+#define T__57      57
+#define T__58      58
+#define T__59      59
+#define T__60      60
+#define T__61      61
+#define T__62      62
+#define T__63      63
+#define T__64      64
+#define T__65      65
+#define T__66      66
+#define T__67      67
+#define T__68      68
+#define T__69      69
+#define T__70      70
+#define T__71      71
+#define T__72      72
+#define T__73      73
+#define T__74      74
+#define T__75      75
+#define T__76      76
+#define T__77      77
+#define T__78      78
+#define T__79      79
+#define T__80      80
+#define T__81      81
+#define T__82      82
+#define T__83      83
+#define T__84      84
+#define T__85      85
+#define T__86      86
+#define T__87      87
+#define ALPHA_NUMERIC      4
+#define AND_TOK      5
+#define BANG_TOK      6
+#define CNF_TOK      7
+#define COLON_TOK      8
+#define COMMA_TOK      9
+#define COMMENT      10
+#define DECIMAL      11
+#define DEFINED_SYMBOL      12
+#define DISEQUAL_TOK      13
+#define DISTINCT_OBJECT      14
+#define DOT      15
+#define DOT_TOK      16
+#define DO_CHAR      17
+#define EQUAL_TOK      18
+#define EXPONENT      19
+#define FALSE_TOK      20
+#define FOF_TOK      21
+#define GREATER_TOK      22
+#define IFF_TOK      23
+#define IMPLIES_TOK      24
+#define INCLUDE_TOK      25
+#define LBRACK_TOK      26
+#define LOWER_ALPHA      27
+#define LOWER_WORD      28
+#define LOWER_WORD_SINGLE_QUOTED      29
+#define LPAREN_TOK      30
+#define MARK_TOK      31
+#define MINUS_TOK      32
+#define NOT_TOK      33
+#define NUMBER      34
+#define NUMERIC      35
+#define OR_TOK      36
+#define PLUS_TOK      37
+#define RBRACK_TOK      38
+#define REVAND_TOK      39
+#define REVIFF_TOK      40
+#define REVIMPLIES_TOK      41
+#define REVOR_TOK      42
+#define RPAREN_TOK      43
+#define SIGN      44
+#define SINGLE_QUOTED      45
+#define SLASH      46
+#define SQ_CHAR      47
+#define TFF_TOK      48
+#define THF_TOK      49
+#define TIMES_TOK      50
+#define TRUE_TOK      51
+#define TYPE_TOK      52
+#define UPPER_ALPHA      53
+#define UPPER_WORD      54
+#define WHITESPACE      55
+#ifdef	EOF
+#undef	EOF
+#define	EOF	ANTLR3_TOKEN_EOF
+#endif
+
+#ifndef TOKENSOURCE
+#define TOKENSOURCE(lxr) lxr->pLexer->rec->state->tokSource
+#endif
+
+/* End of token definitions for TptpParser
+ * =============================================================================
+ */
+/** } */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* END - Note:Keep extra line feed to satisfy UNIX systems */
diff --git a/src/parser/tptp/stamp-generated b/src/parser/tptp/stamp-generated
new file mode 100644
index 0000000..e69de29
diff --git a/src/parser/tptp/tptp.cpp b/src/parser/tptp/tptp.cpp
new file mode 100644
index 0000000..dcb23d3
--- /dev/null
+++ b/src/parser/tptp/tptp.cpp
@@ -0,0 +1,227 @@
+/*********************                                                        */
+/*! \file tptp.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Francois Bobot, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Definitions of TPTP constants.
+ **
+ ** Definitions of TPTP constants.
+ **/
+
+// Do not #include "parser/antlr_input.h" directly. Rely on the header.
+#include "parser/tptp/tptp.h"
+
+#include "expr/type.h"
+#include "parser/parser.h"
+
+// ANTLR defines these, which is really bad!
+#undef true
+#undef false
+
+namespace CVC4 {
+namespace parser {
+
+Tptp::Tptp(ExprManager* exprManager, Input* input, bool strictMode, bool parseOnly) :
+  Parser(exprManager,input,strictMode,parseOnly) {
+  addTheory(Tptp::THEORY_CORE);
+
+  /* Try to find TPTP dir */
+  // From tptp4x FileUtilities
+  //----Try the TPTP directory, and TPTP variations
+  char* home = getenv("TPTP");
+  if(home == NULL) {
+     home = getenv("TPTP_HOME");
+// //----If no TPTP_HOME, try the tptp user (aaargh)
+//         if(home == NULL && (PasswdEntry = getpwnam("tptp")) != NULL) {
+//            home = PasswdEntry->pw_dir;
+//         }
+//----Now look in the TPTP directory from there
+    if(home != NULL) {
+      d_tptpDir = home;
+      d_tptpDir.append("/TPTP/");
+    }
+  } else {
+    d_tptpDir = home;
+    //add trailing "/"
+    if(d_tptpDir[d_tptpDir.size() - 1] != '/') {
+      d_tptpDir.append("/");
+    }
+  }
+  d_hasConjecture = false;
+}
+
+Tptp::~Tptp() {
+  for( unsigned i=0; i<d_in_created.size(); i++ ){
+    d_in_created[i]->free(d_in_created[i]);
+  }
+}
+
+void Tptp::addTheory(Theory theory) {
+  ExprManager * em = getExprManager();
+  switch(theory) {
+  case THEORY_CORE:
+    //TPTP (CNF and FOF) is unsorted so we define this common type
+    {
+      std::string d_unsorted_name = "$$unsorted";
+      d_unsorted = em->mkSort(d_unsorted_name);
+      preemptCommand( new DeclareTypeCommand(d_unsorted_name, 0, d_unsorted) );
+    }
+    // propositionnal
+    defineType("Bool", em->booleanType());
+    defineVar("$true", em->mkConst(true));
+    defineVar("$false", em->mkConst(false));
+    addOperator(kind::AND);
+    addOperator(kind::EQUAL);
+    addOperator(kind::IMPLIES);
+    //addOperator(kind::ITE); //only for tff thf
+    addOperator(kind::NOT);
+    addOperator(kind::OR);
+    addOperator(kind::XOR);
+    addOperator(kind::APPLY_UF);
+    //Add quantifiers?
+    break;
+
+  default:
+    std::stringstream ss;
+    ss << "internal error: Tptp::addTheory(): unhandled theory " << theory;
+    throw ParserException(ss.str());
+  }
+}
+
+
+/* The include are managed in the lexer but called in the parser */
+// Inspired by http://www.antlr3.org/api/C/interop.html
+
+bool newInputStream(std::string fileName, pANTLR3_LEXER lexer, std::vector< pANTLR3_INPUT_STREAM >& inc ) {
+  Debug("parser") << "Including " << fileName << std::endl;
+  // Create a new input stream and take advantage of built in stream stacking
+  // in C target runtime.
+  //
+  pANTLR3_INPUT_STREAM    in;
+#ifdef CVC4_ANTLR3_OLD_INPUT_STREAM
+  in = antlr3AsciiFileStreamNew((pANTLR3_UINT8) fileName.c_str());
+#else /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+  in = antlr3FileStreamNew((pANTLR3_UINT8) fileName.c_str(), ANTLR3_ENC_8BIT);
+#endif /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+  if(in == NULL) {
+    Debug("parser") << "Can't open " << fileName << std::endl;
+    return false;
+  }
+  // Same thing as the predefined PUSHSTREAM(in);
+  lexer->pushCharStream(lexer,in);
+  // restart it
+  //lexer->rec->state->tokenStartCharIndex	= -10;
+  //lexer->emit(lexer);
+
+  // Note that the input stream is not closed when it EOFs, I don't bother
+  // to do it here, but it is up to you to track streams created like this
+  // and destroy them when the whole parse session is complete. Remember that you
+  // don't want to do this until all tokens have been manipulated all the way through
+  // your tree parsers etc as the token does not store the text it just refers
+  // back to the input stream and trying to get the text for it will abort if you
+  // close the input stream too early.
+  //
+  inc.push_back( in );
+
+  //TODO what said before
+  return true;
+}
+
+/* overridden popCharStream for the lexer - necessary if we had symbol
+ * filtering in file inclusion.
+void Tptp::myPopCharStream(pANTLR3_LEXER lexer) {
+  ((Tptp*)lexer->super)->d_oldPopCharStream(lexer);
+  ((Tptp*)lexer->super)->popScope();
+}
+*/
+
+void Tptp::includeFile(std::string fileName) {
+  // security for online version
+  if(!canIncludeFile()) {
+    parseError("include-file feature was disabled for this run.");
+  }
+
+  // Get the lexer
+  AntlrInput * ai = static_cast<AntlrInput *>(getInput());
+  pANTLR3_LEXER lexer = ai->getAntlr3Lexer();
+
+  // set up popCharStream - would be necessary for handling symbol
+  // filtering in inclusions
+  /*
+  if(d_oldPopCharStream == NULL) {
+    d_oldPopCharStream = lexer->popCharStream;
+    lexer->popCharStream = myPopCharStream;
+  }
+  */
+
+  // push the inclusion scope; will be popped by our special popCharStream
+  // would be necessary for handling symbol filtering in inclusions
+  //pushScope();
+
+  // get the name of the current stream "Does it work inside an include?"
+  const std::string inputName = ai->getInputStreamName();
+
+  // Test in the directory of the actual parsed file
+  std::string currentDirFileName;
+  if(inputName != "<stdin>") {
+    // TODO: Use dirname or Boost::filesystem?
+    size_t pos = inputName.rfind('/');
+    if(pos != std::string::npos) {
+      currentDirFileName = std::string(inputName, 0, pos + 1);
+    }
+    currentDirFileName.append(fileName);
+    if(newInputStream(currentDirFileName,lexer, d_in_created)) {
+      return;
+    }
+  } else {
+    currentDirFileName = "<unknown current directory for stdin>";
+  }
+
+  if(d_tptpDir.empty()) {
+    parseError("Couldn't open included file: " + fileName
+               + " at " + currentDirFileName + " and the TPTP directory is not specified (environment variable TPTP)");
+  };
+
+  std::string tptpDirFileName = d_tptpDir + fileName;
+  if(! newInputStream(tptpDirFileName,lexer, d_in_created)) {
+    parseError("Couldn't open included file: " + fileName
+               + " at " + currentDirFileName + " or " + tptpDirFileName);
+  }
+}
+
+void Tptp::checkLetBinding(std::vector<Expr>& bvlist, Expr lhs, Expr rhs, bool formula) {
+  if(lhs.getKind() != CVC4::kind::APPLY_UF) {
+    parseError("malformed let: LHS must be a flat function application");
+  }
+  std::vector<CVC4::Expr> v = lhs.getChildren();
+  if(formula && !lhs.getType().isBoolean()) {
+    parseError("malformed let: LHS must be formula");
+  }
+  for(size_t i = 0; i < v.size(); ++i) {
+    if(v[i].hasOperator()) {
+      parseError("malformed let: LHS must be flat, illegal child: " + v[i].toString());
+    }
+  }
+  std::sort(v.begin(), v.end());
+  std::sort(bvlist.begin(), bvlist.end());
+  // ensure all let-bound variables appear on the LHS, and appear only once
+  for(size_t i = 0; i < bvlist.size(); ++i) {
+    std::vector<CVC4::Expr>::const_iterator found = std::lower_bound(v.begin(), v.end(), bvlist[i]);
+    if(found == v.end() || *found != bvlist[i]) {
+      parseError("malformed let: LHS must make use of all quantified variables, missing `" + bvlist[i].toString() + "'");
+    }
+    std::vector<CVC4::Expr>::const_iterator found2 = found + 1;
+    if(found2 != v.end() && *found2 == *found) {
+      parseError("malformed let: LHS cannot use same bound variable twice: " + (*found).toString());
+    }
+  }
+}
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
diff --git a/src/parser/tptp/tptp.h b/src/parser/tptp/tptp.h
new file mode 100644
index 0000000..2a2a509
--- /dev/null
+++ b/src/parser/tptp/tptp.h
@@ -0,0 +1,267 @@
+/*********************                                                        */
+/*! \file tptp.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Francois Bobot, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Definitions of TPTP constants.
+ **
+ ** Definitions of TPTP constants.
+ **/
+
+#include "parser/antlr_input.h" // Needs to go first.
+
+#include "cvc4parser_private.h"
+
+#ifndef __CVC4__PARSER__TPTP_H
+#define __CVC4__PARSER__TPTP_H
+
+#include <cassert>
+#include <ext/hash_set>
+
+#include "parser/parser.h"
+#include "smt/command.h"
+#include "util/hash.h"
+
+namespace CVC4 {
+
+class SExpr;
+
+namespace parser {
+
+class Tptp : public Parser {
+  friend class ParserBuilder;
+
+  // In CNF variable are implicitly binded
+  // d_freevar collect them
+  std::vector< Expr > d_freeVar;
+  Expr d_rtu_op;
+  Expr d_stu_op;
+  Expr d_utr_op;
+  Expr d_uts_op;
+  // The set of expression that already have a bridge
+  std::hash_set<Expr, ExprHashFunction> d_r_converted;
+  std::hash_map<std::string, Expr, StringHashFunction> d_distinct_objects;
+  
+  std::vector< pANTLR3_INPUT_STREAM > d_in_created;
+
+  // TPTP directory where to find includes;
+  // empty if none could be determined
+  std::string d_tptpDir;
+
+  // hack to make output SZS ontology-compliant
+  bool d_hasConjecture;
+
+  static void myPopCharStream(pANTLR3_LEXER lexer);
+  void (*d_oldPopCharStream)(pANTLR3_LEXER);
+
+public:
+
+  bool cnf; // in a cnf formula
+  bool fof; // in an fof formula
+
+  void addFreeVar(Expr var) {
+    assert(cnf);
+    d_freeVar.push_back(var);
+  }
+  std::vector< Expr > getFreeVar() {
+    assert(cnf);
+    std::vector< Expr > r;
+    r.swap(d_freeVar);
+    return r;
+  }
+
+  inline Expr convertRatToUnsorted(Expr expr) {
+    ExprManager * em = getExprManager();
+
+    // Create the conversion function If they doesn't exists
+    if(d_rtu_op.isNull()) {
+      Type t;
+      // Conversion from rational to unsorted
+      t = em->mkFunctionType(em->realType(), d_unsorted);
+      d_rtu_op = em->mkVar("$$rtu",t);
+      preemptCommand(new DeclareFunctionCommand("$$rtu", d_rtu_op, t));
+      // Conversion from unsorted to rational
+      t = em->mkFunctionType(d_unsorted, em->realType());
+      d_utr_op = em->mkVar("$$utr",t);
+      preemptCommand(new DeclareFunctionCommand("$$utr", d_utr_op, t));
+    }
+    // Add the inverse in order to show that over the elements that
+    // appear in the problem there is a bijection between unsorted and
+    // rational
+    Expr ret = em->mkExpr(kind::APPLY_UF,d_rtu_op,expr);
+    if(d_r_converted.find(expr) == d_r_converted.end()) {
+      d_r_converted.insert(expr);
+      Expr eq = em->mkExpr(kind::EQUAL, expr,
+                           em->mkExpr(kind::APPLY_UF, d_utr_op, ret));
+      preemptCommand(new AssertCommand(eq));
+    }
+    return ret;
+  }
+
+  inline Expr convertStrToUnsorted(std::string str) {
+    Expr& e = d_distinct_objects[str];
+    if(e.isNull()) {
+      e = getExprManager()->mkConst(UninterpretedConstant(d_unsorted, d_distinct_objects.size() - 1));
+    }
+    return e;
+  }
+
+public:
+
+  // CNF and FOF are unsorted so we define this common type.
+  // This is also the Type of $i in TFF.
+  Type d_unsorted;
+
+  enum Theory {
+    THEORY_CORE,
+  };/* enum Theory */
+
+  enum FormulaRole {
+    FR_AXIOM,
+    FR_HYPOTHESIS,
+    FR_DEFINITION,
+    FR_ASSUMPTION,
+    FR_LEMMA,
+    FR_THEOREM,
+    FR_CONJECTURE,
+    FR_NEGATED_CONJECTURE,
+    FR_UNKNOWN,
+    FR_PLAIN,
+    FR_FI_DOMAIN,
+    FR_FI_FUNCTORS,
+    FR_FI_PREDICATES,
+    FR_TYPE,
+  };/* enum FormulaRole */
+
+  bool hasConjecture() const { return d_hasConjecture; }
+
+protected:
+  Tptp(ExprManager* exprManager, Input* input, bool strictMode = false, bool parseOnly = false);
+
+public:
+  ~Tptp();
+  /**
+   * Add theory symbols to the parser state.
+   *
+   * @param theory the theory to open (e.g., Core, Ints)
+   */
+  void addTheory(Theory theory);
+
+  inline void makeApplication(Expr& expr, std::string& name,
+                              std::vector<Expr>& args, bool term);
+
+  inline Command* makeCommand(FormulaRole fr, Expr& expr, bool cnf);
+
+  /** Ugly hack because I don't know how to return an expression from a
+      token */
+  Expr d_tmp_expr;
+
+  /** Push a new stream in the lexer. When EOF is reached the previous stream
+      is reused */
+  void includeFile(std::string fileName);
+
+  /** Check a TPTP let binding for well-formedness. */
+  void checkLetBinding(std::vector<Expr>& bvlist, Expr lhs, Expr rhs, bool formula);
+
+private:
+
+  void addArithmeticOperators();
+};/* class Tptp */
+
+inline void Tptp::makeApplication(Expr& expr, std::string& name,
+                                  std::vector<Expr>& args, bool term) {
+  if(args.empty()) { // Its a constant
+    if(isDeclared(name)) { // already appeared
+      expr = getVariable(name);
+    } else {
+      Type t = term ? d_unsorted : getExprManager()->booleanType();
+      expr = mkVar(name, t, ExprManager::VAR_FLAG_GLOBAL); // levelZero
+      preemptCommand(new DeclareFunctionCommand(name, expr, t));
+    }
+  } else { // Its an application
+    if(isDeclared(name)) { // already appeared
+      expr = getVariable(name);
+    } else {
+      std::vector<Type> sorts(args.size(), d_unsorted);
+      Type t = term ? d_unsorted : getExprManager()->booleanType();
+      t = getExprManager()->mkFunctionType(sorts, t);
+      expr = mkVar(name, t, ExprManager::VAR_FLAG_GLOBAL); // levelZero
+      preemptCommand(new DeclareFunctionCommand(name, expr, t));
+    }
+    // args might be rationals, in which case we need to create
+    // distinct constants of the "unsorted" sort to represent them
+    for(size_t i = 0; i < args.size(); ++i) {
+      if(args[i].getType().isReal() && FunctionType(expr.getType()).getArgTypes()[i] == d_unsorted) {
+        args[i] = convertRatToUnsorted(args[i]);
+      }
+    }
+    expr = getExprManager()->mkExpr(kind::APPLY_UF, expr, args);
+  }
+}
+
+inline Command* Tptp::makeCommand(FormulaRole fr, Expr& expr, bool cnf) {
+  // For SZS ontology compliance.
+  // if we're in cnf() though, conjectures don't result in "Theorem" or
+  // "CounterSatisfiable".
+  if(!cnf && (fr == FR_NEGATED_CONJECTURE || fr == FR_CONJECTURE)) {
+    d_hasConjecture = true;
+  }
+  switch(fr) {
+  case FR_AXIOM:
+  case FR_HYPOTHESIS:
+  case FR_DEFINITION:
+  case FR_ASSUMPTION:
+  case FR_LEMMA:
+  case FR_THEOREM:
+  case FR_NEGATED_CONJECTURE:
+  case FR_PLAIN:
+    // it's a usual assert
+    return new AssertCommand(expr);
+  case FR_CONJECTURE:
+    // something to prove
+    return new AssertCommand(getExprManager()->mkExpr(kind::NOT,expr));
+  case FR_UNKNOWN:
+  case FR_FI_DOMAIN:
+  case FR_FI_FUNCTORS:
+  case FR_FI_PREDICATES:
+  case FR_TYPE:
+    return new EmptyCommand("Untreated role");
+  }
+  assert(false);// unreachable
+  return NULL;
+}
+
+namespace tptp {
+/**
+ * Just exists to provide the uintptr_t constructor that ANTLR
+ * requires.
+ */
+struct myExpr : public CVC4::Expr {
+  myExpr() : CVC4::Expr() {}
+  myExpr(void*) : CVC4::Expr() {}
+  myExpr(const Expr& e) : CVC4::Expr(e) {}
+  myExpr(const myExpr& e) : CVC4::Expr(e) {}
+};/* struct myExpr */
+
+enum NonAssoc {
+  NA_IFF,
+  NA_IMPLIES,
+  NA_REVIMPLIES,
+  NA_REVIFF,
+  NA_REVOR,
+  NA_REVAND,
+};
+
+}/* CVC4::parser::tptp namespace */
+
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PARSER__TPTP_INPUT_H */
diff --git a/src/parser/tptp/tptp_input.cpp b/src/parser/tptp/tptp_input.cpp
new file mode 100644
index 0000000..42337b4
--- /dev/null
+++ b/src/parser/tptp/tptp_input.cpp
@@ -0,0 +1,74 @@
+/*********************                                                        */
+/*! \file tptp_input.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Francois Bobot, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add file-specific comments here ]].
+ **
+ ** [[ Add file-specific comments here ]]
+ **/
+
+// These headers should be the first two included.
+// See the documentation in "parser/antlr_undefines.h" for more details.
+#include <antlr3.h>
+#include "parser/antlr_undefines.h"
+
+
+#include "parser/tptp/tptp_input.h"
+#include "expr/expr_manager.h"
+#include "parser/input.h"
+#include "parser/parser.h"
+#include "parser/parser_exception.h"
+#include "parser/tptp/tptp.h"
+#include "parser/tptp/TptpLexer.h"
+#include "parser/tptp/TptpParser.h"
+
+namespace CVC4 {
+namespace parser {
+
+/* Use lookahead=2 */
+TptpInput::TptpInput(AntlrInputStream& inputStream) :
+  AntlrInput(inputStream, 2) {
+  pANTLR3_INPUT_STREAM input = inputStream.getAntlr3InputStream();
+  assert( input != NULL );
+
+  d_pTptpLexer = TptpLexerNew(input);
+  if( d_pTptpLexer == NULL ) {
+    throw ParserException("Failed to create TPTP lexer.");
+  }
+
+  setAntlr3Lexer( d_pTptpLexer->pLexer );
+
+  pANTLR3_COMMON_TOKEN_STREAM tokenStream = getTokenStream();
+  assert( tokenStream != NULL );
+
+  d_pTptpParser = TptpParserNew(tokenStream);
+  if( d_pTptpParser == NULL ) {
+    throw ParserException("Failed to create TPTP parser.");
+  }
+
+  setAntlr3Parser(d_pTptpParser->pParser);
+}
+
+
+TptpInput::~TptpInput() {
+  d_pTptpLexer->free(d_pTptpLexer);
+  d_pTptpParser->free(d_pTptpParser);
+}
+
+Command* TptpInput::parseCommand() {
+  return d_pTptpParser->parseCommand(d_pTptpParser);
+}
+
+Expr TptpInput::parseExpr() {
+  return d_pTptpParser->parseExpr(d_pTptpParser);
+}
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
diff --git a/src/parser/tptp/tptp_input.h b/src/parser/tptp/tptp_input.h
new file mode 100644
index 0000000..28bf182
--- /dev/null
+++ b/src/parser/tptp/tptp_input.h
@@ -0,0 +1,93 @@
+/*********************                                                        */
+/*! \file tptp_input.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Francois Bobot, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add file-specific comments here ]].
+ **
+ ** [[ Add file-specific comments here ]]
+ **/
+
+#include "cvc4parser_private.h"
+
+#ifndef __CVC4__PARSER__TPTP_INPUT_H
+#define __CVC4__PARSER__TPTP_INPUT_H
+
+#include "parser/antlr_input.h"
+#include "parser/tptp/TptpLexer.h"
+#include "parser/tptp/TptpParser.h"
+
+// extern void TptpParserSetAntlrParser(CVC4::parser::AntlrParser* newAntlrParser);
+
+namespace CVC4 {
+
+class Command;
+class Expr;
+class ExprManager;
+
+namespace parser {
+
+class Tptp;
+
+class TptpInput : public AntlrInput {
+  typedef AntlrInput super;
+
+  /** The ANTLR3 TPTP lexer for the input. */
+  pTptpLexer d_pTptpLexer;
+
+  /** The ANTLR3 CVC parser for the input. */
+  pTptpParser d_pTptpParser;
+
+  /**
+   * Initialize the class. Called from the constructors once the input
+   * stream is initialized.
+   */
+  void init();
+
+public:
+
+  /**
+   * Create an input.
+   *
+   * @param inputStream the input stream to use
+   */
+  TptpInput(AntlrInputStream& inputStream);
+
+  /** Destructor. Frees the lexer and the parser. */
+  virtual ~TptpInput();
+
+  /** Get the language that this Input is reading. */
+  InputLanguage getLanguage() const throw() {
+    return language::input::LANG_TPTP;
+  }
+
+protected:
+
+  /**
+   * Parse a command from the input. Returns <code>NULL</code> if
+   * there is no command there to parse.
+   *
+   * @throws ParserException if an error is encountered during parsing.
+   */
+  Command* parseCommand();
+
+  /**
+   * Parse an expression from the input. Returns a null
+   * <code>Expr</code> if there is no expression there to parse.
+   *
+   * @throws ParserException if an error is encountered during parsing.
+   */
+  Expr parseExpr();
+
+};/* class TptpInput */
+
+}/* CVC4::parser namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PARSER__TPTP_INPUT_H */
diff --git a/src/printer/ast/ast_printer.cpp b/src/printer/ast/ast_printer.cpp
new file mode 100644
index 0000000..e15d876
--- /dev/null
+++ b/src/printer/ast/ast_printer.cpp
@@ -0,0 +1,400 @@
+/*********************                                                        */
+/*! \file ast_printer.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Liana Hadarean
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The pretty-printer interface for the AST output language
+ **
+ ** The pretty-printer interface for the AST output language.
+ **/
+#include "printer/ast/ast_printer.h"
+
+#include <iostream>
+#include <string>
+#include <typeinfo>
+#include <vector>
+
+#include "expr/expr.h" // for ExprSetDepth etc..
+#include "expr/node_manager_attributes.h" // for VarNameAttr
+#include "options/language.h" // for LANG_AST
+#include "printer/dagification_visitor.h"
+#include "smt/command.h"
+#include "smt_util/node_visitor.h"
+#include "theory/substitutions.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace printer {
+namespace ast {
+
+void AstPrinter::toStream(std::ostream& out, TNode n,
+                          int toDepth, bool types, size_t dag) const throw() {
+  if(dag != 0) {
+    DagificationVisitor dv(dag);
+    NodeVisitor<DagificationVisitor> visitor;
+    visitor.run(dv, n);
+    const theory::SubstitutionMap& lets = dv.getLets();
+    if(!lets.empty()) {
+      out << "(LET ";
+      bool first = true;
+      for(theory::SubstitutionMap::const_iterator i = lets.begin();
+          i != lets.end();
+          ++i) {
+        if(! first) {
+          out << ", ";
+        } else {
+          first = false;
+        }
+        toStream(out, (*i).second, toDepth, types, false);
+        out << " := ";
+        toStream(out, (*i).first, toDepth, types, false);
+      }
+      out << " IN ";
+    }
+    Node body = dv.getDagifiedBody();
+    toStream(out, body, toDepth, types);
+    if(!lets.empty()) {
+      out << ')';
+    }
+  } else {
+    toStream(out, n, toDepth, types);
+  }
+}
+
+void AstPrinter::toStream(std::ostream& out, TNode n,
+                          int toDepth, bool types) const throw() {
+  // null
+  if(n.getKind() == kind::NULL_EXPR) {
+    out << "null";
+    return;
+  }
+
+  // variable
+  if(n.getMetaKind() == kind::metakind::VARIABLE) {
+    string s;
+    if(n.getAttribute(expr::VarNameAttr(), s)) {
+      out << s;
+    } else {
+      out << "var_" << n.getId();
+    }
+    if(types) {
+      // print the whole type, but not *its* type
+      out << ":";
+      n.getType().toStream(out, language::output::LANG_AST);
+    }
+
+    return;
+  }
+
+  out << '(' << n.getKind();
+  if(n.getMetaKind() == kind::metakind::CONSTANT) {
+    // constant
+    out << ' ';
+    kind::metakind::NodeValueConstPrinter::toStream(out, n);
+  } else {
+    // operator
+    if(n.getMetaKind() == kind::metakind::PARAMETERIZED) {
+      out << ' ';
+      if(toDepth != 0) {
+        toStream(out, n.getOperator(), toDepth < 0 ? toDepth : toDepth - 1, types);
+      } else {
+        out << "(...)";
+      }
+    }
+    for(TNode::iterator i = n.begin(),
+          iend = n.end();
+        i != iend;
+        ++i) {
+      if(i != iend) {
+        out << ' ';
+      }
+      if(toDepth != 0) {
+        toStream(out, *i, toDepth < 0 ? toDepth : toDepth - 1, types);
+      } else {
+        out << "(...)";
+      }
+    }
+  }
+  out << ')';
+}/* AstPrinter::toStream(TNode) */
+
+template <class T>
+static bool tryToStream(std::ostream& out, const Command* c) throw();
+
+void AstPrinter::toStream(std::ostream& out, const Command* c,
+                          int toDepth, bool types, size_t dag) const throw() {
+  expr::ExprSetDepth::Scope sdScope(out, toDepth);
+  expr::ExprPrintTypes::Scope ptScope(out, types);
+  expr::ExprDag::Scope dagScope(out, dag);
+
+  if(tryToStream<EmptyCommand>(out, c) ||
+     tryToStream<AssertCommand>(out, c) ||
+     tryToStream<PushCommand>(out, c) ||
+     tryToStream<PopCommand>(out, c) ||
+     tryToStream<CheckSatCommand>(out, c) ||
+     tryToStream<QueryCommand>(out, c) ||
+     tryToStream<ResetCommand>(out, c) ||
+     tryToStream<ResetAssertionsCommand>(out, c) ||
+     tryToStream<QuitCommand>(out, c) ||
+     tryToStream<DeclarationSequence>(out, c) ||
+     tryToStream<CommandSequence>(out, c) ||
+     tryToStream<DeclareFunctionCommand>(out, c) ||
+     tryToStream<DeclareTypeCommand>(out, c) ||
+     tryToStream<DefineTypeCommand>(out, c) ||
+     tryToStream<DefineNamedFunctionCommand>(out, c) ||
+     tryToStream<DefineFunctionCommand>(out, c) ||
+     tryToStream<SimplifyCommand>(out, c) ||
+     tryToStream<GetValueCommand>(out, c) ||
+     tryToStream<GetModelCommand>(out, c) ||
+     tryToStream<GetAssignmentCommand>(out, c) ||
+     tryToStream<GetAssertionsCommand>(out, c) ||
+     tryToStream<GetProofCommand>(out, c) ||
+     tryToStream<SetBenchmarkStatusCommand>(out, c) ||
+     tryToStream<SetBenchmarkLogicCommand>(out, c) ||
+     tryToStream<SetInfoCommand>(out, c) ||
+     tryToStream<GetInfoCommand>(out, c) ||
+     tryToStream<SetOptionCommand>(out, c) ||
+     tryToStream<GetOptionCommand>(out, c) ||
+     tryToStream<DatatypeDeclarationCommand>(out, c) ||
+     tryToStream<CommentCommand>(out, c)) {
+    return;
+  }
+
+  out << "ERROR: don't know how to print a Command of class: "
+      << typeid(*c).name() << endl;
+
+}/* AstPrinter::toStream(Command*) */
+
+template <class T>
+static bool tryToStream(std::ostream& out, const CommandStatus* s) throw();
+
+void AstPrinter::toStream(std::ostream& out, const CommandStatus* s) const throw() {
+
+  if(tryToStream<CommandSuccess>(out, s) ||
+     tryToStream<CommandFailure>(out, s) ||
+     tryToStream<CommandUnsupported>(out, s) ||
+     tryToStream<CommandInterrupted>(out, s)) {
+    return;
+  }
+
+  out << "ERROR: don't know how to print a CommandStatus of class: "
+      << typeid(*s).name() << endl;
+
+}/* AstPrinter::toStream(CommandStatus*) */
+
+void AstPrinter::toStream(std::ostream& out, const Model& m) const throw() {
+  out << "Model()";
+}
+
+void AstPrinter::toStream(std::ostream& out, const Model& m, const Command* c) const throw() {
+  // shouldn't be called; only the non-Command* version above should be
+  Unreachable();
+}
+
+static void toStream(std::ostream& out, const EmptyCommand* c)  throw() {
+  out << "EmptyCommand(" << c->getName() << ")";
+}
+
+static void toStream(std::ostream& out, const AssertCommand* c) throw() {
+  out << "Assert(" << c->getExpr() << ")";
+}
+
+static void toStream(std::ostream& out, const PushCommand* c) throw() {
+  out << "Push()";
+}
+
+static void toStream(std::ostream& out, const PopCommand* c) throw() {
+  out << "Pop()";
+}
+
+static void toStream(std::ostream& out, const CheckSatCommand* c) throw() {
+  Expr e = c->getExpr();
+  if(e.isNull()) {
+    out << "CheckSat()";
+  } else {
+    out << "CheckSat(" << e << ")";
+  }
+}
+
+static void toStream(std::ostream& out, const QueryCommand* c) throw() {
+  out << "Query(" << c->getExpr() << ')';
+}
+
+static void toStream(std::ostream& out, const ResetCommand* c) throw() {
+  out << "Reset()";
+}
+
+static void toStream(std::ostream& out, const ResetAssertionsCommand* c) throw() {
+  out << "ResetAssertions()";
+}
+
+static void toStream(std::ostream& out, const QuitCommand* c) throw() {
+  out << "Quit()";
+}
+
+static void toStream(std::ostream& out, const DeclarationSequence* c) throw() {
+  out << "DeclarationSequence[" << endl;
+  for(CommandSequence::const_iterator i = c->begin();
+      i != c->end();
+      ++i) {
+    out << *i << endl;
+  }
+  out << "]";
+}
+
+static void toStream(std::ostream& out, const CommandSequence* c) throw() {
+  out << "CommandSequence[" << endl;
+  for(CommandSequence::const_iterator i = c->begin();
+      i != c->end();
+      ++i) {
+    out << *i << endl;
+  }
+  out << "]";
+}
+
+static void toStream(std::ostream& out, const DeclareFunctionCommand* c) throw() {
+  out << "Declare(" << c->getSymbol() << "," << c->getType() << ")";
+}
+
+static void toStream(std::ostream& out, const DefineFunctionCommand* c) throw() {
+  Expr func = c->getFunction();
+  const std::vector<Expr>& formals = c->getFormals();
+  Expr formula = c->getFormula();
+  out << "DefineFunction( \"" << func << "\", [";
+  if(formals.size() > 0) {
+    copy( formals.begin(), formals.end() - 1,
+          ostream_iterator<Expr>(out, ", ") );
+    out << formals.back();
+  }
+  out << "], << " << formula << " >> )";
+}
+
+static void toStream(std::ostream& out, const DeclareTypeCommand* c) throw() {
+  out << "DeclareType(" << c->getSymbol() << "," << c->getArity() << ","
+      << c->getType() << ")";
+}
+
+static void toStream(std::ostream& out, const DefineTypeCommand* c) throw() {
+  const vector<Type>& params = c->getParameters();
+  out << "DefineType(" << c->getSymbol() << ",[";
+  if(params.size() > 0) {
+    copy( params.begin(), params.end() - 1,
+          ostream_iterator<Type>(out, ", ") );
+    out << params.back();
+  }
+  out << "]," << c->getType() << ")";
+}
+
+static void toStream(std::ostream& out, const DefineNamedFunctionCommand* c) throw() {
+  out << "DefineNamedFunction( ";
+  toStream(out, static_cast<const DefineFunctionCommand*>(c));
+  out << " )";
+}
+
+static void toStream(std::ostream& out, const SimplifyCommand* c) throw() {
+  out << "Simplify( << " << c->getTerm() << " >> )";
+}
+
+static void toStream(std::ostream& out, const GetValueCommand* c) throw() {
+  out << "GetValue( << ";
+  const vector<Expr>& terms = c->getTerms();
+  copy(terms.begin(), terms.end(), ostream_iterator<Expr>(out, ", "));
+  out << " >> )";
+}
+
+static void toStream(std::ostream& out, const GetModelCommand* c) throw() {
+  out << "GetModel()";
+}
+
+static void toStream(std::ostream& out, const GetAssignmentCommand* c) throw() {
+  out << "GetAssignment()";
+}
+static void toStream(std::ostream& out, const GetAssertionsCommand* c) throw() {
+  out << "GetAssertions()";
+}
+static void toStream(std::ostream& out, const GetProofCommand* c) throw() {
+  out << "GetProof()";
+}
+static void toStream(std::ostream& out, const SetBenchmarkStatusCommand* c) throw() {
+  out << "SetBenchmarkStatus(" << c->getStatus() << ")";
+}
+static void toStream(std::ostream& out, const SetBenchmarkLogicCommand* c) throw() {
+  out << "SetBenchmarkLogic(" << c->getLogic() << ")";
+}
+static void toStream(std::ostream& out, const SetInfoCommand* c) throw() {
+  out << "SetInfo(" << c->getFlag() << ", " << c->getSExpr() << ")";
+}
+
+static void toStream(std::ostream& out, const GetInfoCommand* c) throw() {
+  out << "GetInfo(" << c->getFlag() << ")";
+}
+static void toStream(std::ostream& out, const SetOptionCommand* c) throw() {
+  out << "SetOption(" << c->getFlag() << ", " << c->getSExpr() << ")";
+}
+
+static void toStream(std::ostream& out, const GetOptionCommand* c) throw() {
+  out << "GetOption(" << c->getFlag() << ")";
+}
+
+static void toStream(std::ostream& out, const DatatypeDeclarationCommand* c) throw() {
+  const vector<DatatypeType>& datatypes = c->getDatatypes();
+  out << "DatatypeDeclarationCommand([";
+  for(vector<DatatypeType>::const_iterator i = datatypes.begin(),
+        i_end = datatypes.end();
+      i != i_end;
+      ++i) {
+    out << *i << ";" << endl;
+  }
+  out << "])";
+}
+
+static void toStream(std::ostream& out, const CommentCommand* c) throw() {
+  out << "CommentCommand([" << c->getComment() << "])";
+}
+
+template <class T>
+static bool tryToStream(std::ostream& out, const Command* c) throw() {
+  if(typeid(*c) == typeid(T)) {
+    toStream(out, dynamic_cast<const T*>(c));
+    return true;
+  }
+  return false;
+}
+
+static void toStream(std::ostream& out, const CommandSuccess* s) throw() {
+  if(Command::printsuccess::getPrintSuccess(out)) {
+    out << "OK" << endl;
+  }
+}
+
+static void toStream(std::ostream& out, const CommandInterrupted* s) throw() {
+  out << "INTERRUPTED" << endl;
+}
+
+static void toStream(std::ostream& out, const CommandUnsupported* s) throw() {
+  out << "UNSUPPORTED" << endl;
+}
+
+static void toStream(std::ostream& out, const CommandFailure* s) throw() {
+  out << s->getMessage() << endl;
+}
+
+template <class T>
+static bool tryToStream(std::ostream& out, const CommandStatus* s) throw() {
+  if(typeid(*s) == typeid(T)) {
+    toStream(out, dynamic_cast<const T*>(s));
+    return true;
+  }
+  return false;
+}
+
+}/* CVC4::printer::ast namespace */
+}/* CVC4::printer namespace */
+}/* CVC4 namespace */
diff --git a/src/printer/ast/ast_printer.h b/src/printer/ast/ast_printer.h
new file mode 100644
index 0000000..ef123d1
--- /dev/null
+++ b/src/printer/ast/ast_printer.h
@@ -0,0 +1,46 @@
+/*********************                                                        */
+/*! \file ast_printer.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The pretty-printer interface for the AST output language
+ **
+ ** The pretty-printer interface for the AST output language.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__PRINTER__AST_PRINTER_H
+#define __CVC4__PRINTER__AST_PRINTER_H
+
+#include <iostream>
+
+#include "printer/printer.h"
+
+namespace CVC4 {
+namespace printer {
+namespace ast {
+
+class AstPrinter : public CVC4::Printer {
+  void toStream(std::ostream& out, TNode n, int toDepth, bool types) const throw();
+  void toStream(std::ostream& out, const Model& m, const Command* c) const throw();
+public:
+  using CVC4::Printer::toStream;
+  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();
+  void toStream(std::ostream& out, const CommandStatus* s) const throw();
+  void toStream(std::ostream& out, const Model& m) const throw();
+};/* class AstPrinter */
+
+}/* CVC4::printer::ast namespace */
+}/* CVC4::printer namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PRINTER__AST_PRINTER_H */
+
diff --git a/src/printer/cvc/cvc_printer.cpp b/src/printer/cvc/cvc_printer.cpp
new file mode 100644
index 0000000..981e88a
--- /dev/null
+++ b/src/printer/cvc/cvc_printer.cpp
@@ -0,0 +1,1371 @@
+/*********************                                                        */
+/*! \file cvc_printer.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The pretty-printer interface for the CVC output language
+ **
+ ** The pretty-printer interface for the CVC output language.
+ **/
+
+#include "printer/cvc/cvc_printer.h"
+
+#include <algorithm>
+#include <iostream>
+#include <iterator>
+#include <stack>
+#include <string>
+#include <typeinfo>
+#include <vector>
+
+#include "expr/expr.h" // for ExprSetDepth etc..
+#include "expr/node_manager_attributes.h" // for VarNameAttr
+#include "options/language.h" // for LANG_AST
+#include "printer/dagification_visitor.h"
+#include "options/smt_options.h"
+#include "smt/command.h"
+#include "smt/smt_engine.h"
+#include "smt_util/node_visitor.h"
+#include "theory/arrays/theory_arrays_rewriter.h"
+#include "theory/substitutions.h"
+#include "theory/theory_model.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace printer {
+namespace cvc {
+
+void CvcPrinter::toStream(std::ostream& out, TNode n, int toDepth, bool types, size_t dag) const throw() {
+  if(dag != 0) {
+    DagificationVisitor dv(dag);
+    NodeVisitor<DagificationVisitor> visitor;
+    visitor.run(dv, n);
+    const theory::SubstitutionMap& lets = dv.getLets();
+    if(!lets.empty()) {
+      out << "LET ";
+      bool first = true;
+      for(theory::SubstitutionMap::const_iterator i = lets.begin();
+          i != lets.end();
+          ++i) {
+        if(! first) {
+          out << ", ";
+        } else {
+          first = false;
+        }
+        toStream(out, (*i).second, toDepth, types, false);
+        out << " = ";
+        toStream(out, (*i).first, toDepth, types, false);
+      }
+      out << " IN ";
+    }
+    Node body = dv.getDagifiedBody();
+    toStream(out, body, toDepth, types, false);
+  } else {
+    toStream(out, n, toDepth, types, false);
+  }
+}
+
+void CvcPrinter::toStream(std::ostream& out, TNode n, int depth, bool types, bool bracket) const throw() {
+  if (depth == 0) {
+    out << "(...)";
+  } else {
+    --depth;
+  }
+
+  // null
+  if(n.getKind() == kind::NULL_EXPR) {
+    out << "null";
+    return;
+  }
+
+  // variables
+  if(n.isVar()) {
+    string s;
+    if(n.getAttribute(expr::VarNameAttr(), s)) {
+      out << s;
+    }else if( n.getKind() == kind::UNIVERSE_SET ){
+      out << "UNIVERSE :: " << n.getType();
+    } else {
+      if(n.getKind() == kind::VARIABLE) {
+        out << "var_";
+      } else {
+        out << n.getKind() << '_';
+      }
+      out << n.getId();
+    }
+    if(types) {
+      // print the whole type, but not *its* type
+      out << ":";
+      n.getType().toStream(out, language::output::LANG_CVC4);
+    }
+    return;
+  }
+
+  // constants
+  if(n.getMetaKind() == kind::metakind::CONSTANT) {
+    switch(n.getKind()) {
+    case kind::BITVECTOR_TYPE:
+      out << "BITVECTOR(" << n.getConst<BitVectorSize>().size << ")";
+      break;
+    case kind::CONST_BITVECTOR: {
+      const BitVector& bv = n.getConst<BitVector>();
+      const Integer& x = bv.getValue();
+      out << "0bin";
+      unsigned n = bv.getSize();
+      while(n-- > 0) {
+        out << (x.testBit(n) ? '1' : '0');
+      }
+      break;
+    }
+    case kind::CONST_BOOLEAN:
+      // the default would print "1" or "0" for bool, that's not correct
+      // for our purposes
+      out << (n.getConst<bool>() ? "TRUE" : "FALSE");
+      break;
+    case kind::CONST_RATIONAL: {
+      const Rational& rat = n.getConst<Rational>();
+      if(rat.isIntegral()) {
+        out << rat.getNumerator();
+      } else {
+        out << '(' << rat.getNumerator() << '/' << rat.getDenominator() << ')';
+      }
+      break;
+    }
+    case kind::SUBRANGE_TYPE:
+      out << '[' << n.getConst<SubrangeBounds>() << ']';
+      break;
+    case kind::SUBTYPE_TYPE:
+      out << "SUBTYPE(" << n.getConst<Predicate>() << ")";
+      break;
+    case kind::TYPE_CONSTANT:
+      switch(TypeConstant tc = n.getConst<TypeConstant>()) {
+      case REAL_TYPE:
+        out << "REAL";
+        break;
+      case INTEGER_TYPE:
+        out << "INT";
+        break;
+      case BOOLEAN_TYPE:
+        out << "BOOLEAN";
+        break;
+      case STRING_TYPE:
+        out << "STRING";
+        break;
+      default:
+        out << tc;
+        break;
+      }
+      break;
+
+    case kind::DATATYPE_TYPE: {
+      const Datatype& dt = (NodeManager::currentNM()->getDatatypeForIndex( n.getConst< DatatypeIndexConstant >().getIndex() ));
+      if( dt.isTuple() ){
+        out << '[';
+        for (unsigned i = 0; i < dt[0].getNumArgs(); ++ i) {
+          if (i > 0) {
+            out << ", ";
+          }
+          Type t = ((SelectorType)dt[0][i].getSelector().getType()).getRangeType();
+          out << t;
+        }
+        out << ']';
+      }else if( dt.isRecord() ){
+        out << "[# ";
+        for (unsigned i = 0; i < dt[0].getNumArgs(); ++ i) {
+          if (i > 0) {
+            out << ", ";
+          }
+          Type t = ((SelectorType)dt[0][i].getSelector().getType()).getRangeType();
+          out << dt[0][i].getSelector() << ":" << t;
+        }
+        out << " #]";
+      }else{
+        out << dt.getName();
+      }
+    }
+      break;
+
+    case kind::EMPTYSET:
+      out << "{} :: " << n.getConst<EmptySet>().getType();
+      break;
+
+    case kind::STORE_ALL: {
+      const ArrayStoreAll& asa = n.getConst<ArrayStoreAll>();
+      out << "ARRAY(" << asa.getType().getIndexType() << " OF "
+          << asa.getType().getConstituentType() << ") : " << asa.getExpr();
+      break;
+    }
+
+    default:
+      // Fall back to whatever operator<< does on underlying type; we
+      // might luck out and print something reasonable.
+      kind::metakind::NodeValueConstPrinter::toStream(out, n);
+    }
+
+    return;
+  }
+
+  enum OpType {
+    PREFIX,
+    INFIX,
+    POSTFIX
+  } opType;
+
+  //The default operation type is PREFIX
+  opType = PREFIX;
+
+  stringstream op;       // operation (such as '+')
+
+  switch(n.getKind()) {
+
+    // BUILTIN
+    case kind::EQUAL:
+      if( n[0].getType().isBoolean() ){
+        op << "<=>";
+      }else{
+        op << '=';
+      }
+      opType = INFIX;
+      break;
+    case kind::ITE:
+      out << "IF ";
+      toStream(out, n[0], depth, types, true);
+      out << " THEN ";
+      toStream(out, n[1], depth, types, true);
+      out << " ELSE ";
+      toStream(out, n[2], depth, types, true);
+      out << " ENDIF";
+      return;
+      break;
+    case kind::SEXPR_TYPE:
+      out << '[';
+      for (unsigned i = 0; i < n.getNumChildren(); ++ i) {
+        if (i > 0) {
+          out << ", ";
+        }
+        toStream(out, n[i], depth, types, false);
+      }
+      out << ']';
+      return;
+      break;
+    case kind::SEXPR:
+      // no-op
+      break;
+    case kind::LAMBDA:
+      out << "(LAMBDA";
+      toStream(out, n[0], depth, types, true);
+      out << ": ";
+      toStream(out, n[1], depth, types, true);
+      out << ")";
+      return;
+      break;
+    case kind::APPLY:
+      toStream(op, n.getOperator(), depth, types, true);
+      break;
+    case kind::CHAIN:
+    case kind::DISTINCT: // chain and distinct not supported directly in CVC4, blast them away with the rewriter
+      toStream(out, theory::Rewriter::rewrite(n), depth, types, true);
+      return;
+    case kind::SORT_TYPE:
+    {
+      string name;
+      if(n.getAttribute(expr::VarNameAttr(), name)) {
+        out << name;
+        return;
+      }
+    }
+    break;
+
+    // BOOL
+    case kind::AND:
+      op << "AND";
+      opType = INFIX;
+      break;
+    case kind::OR:
+      op << "OR";
+      opType = INFIX;
+      break;
+    case kind::NOT:
+      op << "NOT";
+      opType = PREFIX;
+      break;
+    case kind::XOR:
+      op << "XOR";
+      opType = INFIX;
+      break;
+    case kind::IMPLIES:
+      op << "=>";
+      opType = INFIX;
+      break;
+
+    // UF
+    case kind::APPLY_UF:
+      toStream(op, n.getOperator(), depth, types, false);
+      break;
+    case kind::CARDINALITY_CONSTRAINT:
+    case kind::COMBINED_CARDINALITY_CONSTRAINT:
+      out << "CARDINALITY_CONSTRAINT";
+      break;
+
+    case kind::FUNCTION_TYPE:
+      if (n.getNumChildren() > 1) {
+        if (n.getNumChildren() > 2) {
+          out << '(';
+        }
+        for (unsigned i = 1; i < n.getNumChildren(); ++i) {
+          if (i > 1) {
+            out << ", ";
+          }
+          toStream(out, n[i - 1], depth, types, false);
+        }
+        if (n.getNumChildren() > 2) {
+          out << ')';
+        }
+      }
+      out << " -> ";
+      toStream(out, n[n.getNumChildren() - 1], depth, types, false);
+      return;
+      break;
+
+    // DATATYPES
+    case kind::PARAMETRIC_DATATYPE: {
+        const Datatype & dt = (NodeManager::currentNM()->getDatatypeForIndex( n[0].getConst< DatatypeIndexConstant >().getIndex() ));
+        out << dt.getName() << '[';
+        for(unsigned i = 1; i < n.getNumChildren(); ++i) {
+          if(i > 1) {
+            out << ',';
+          }
+          out << n[i];
+        }
+        out << ']';
+      }
+      return;
+      break;
+    case kind::APPLY_TYPE_ASCRIPTION: {
+        toStream(out, n[0], depth, types, false);
+        out << "::";
+        TypeNode t = TypeNode::fromType(n.getOperator().getConst<AscriptionType>().getType());
+        out << (t.isFunctionLike() ? t.getRangeType() : t);
+      }
+      return;
+      break;
+    case kind::APPLY_CONSTRUCTOR: {
+        TypeNode t = n.getType();
+        if( t.isTuple() ){
+          if( n.getNumChildren()==1 ){
+            out << "TUPLE";
+          }
+        }else if( t.isRecord() ){
+          const Record& rec = t.getRecord();
+          out << "(# ";
+          TNode::iterator i = n.begin();
+          bool first = true;
+          const Record::FieldVector& fields = rec.getFields();
+          for(Record::FieldVector::const_iterator j = fields.begin(); j != fields.end(); ++i, ++j) {
+            if(!first) {
+              out << ", ";
+            }
+            out << (*j).first << " := ";
+            toStream(out, *i, depth, types, false);
+            first = false;
+          }
+          out << " #)";
+          return;
+        }else{
+          toStream(op, n.getOperator(), depth, types, false);
+        }
+      }
+      break;
+    case kind::APPLY_SELECTOR:
+    case kind::APPLY_SELECTOR_TOTAL: {
+        TypeNode t = n.getType();
+        if( t.isTuple() ){
+          toStream(out, n[0], depth, types, true);
+          out << '.' << Datatype::indexOf( n.getOperator().toExpr() );
+        }else if( t.isRecord() ){
+          toStream(out, n[0], depth, types, true);
+          const Record& rec = t.getRecord();
+          unsigned index = Datatype::indexOf( n.getOperator().toExpr() );
+          std::pair<std::string, Type> fld = rec[index];
+          out << '.' << fld.first;
+        }else{
+          toStream(op, n.getOperator(), depth, types, false);
+        }
+      }
+      break;
+    case kind::APPLY_TESTER: {
+      Assert( !n.getType().isTuple() && !n.getType().isRecord() );
+      op << "is_";
+      unsigned cindex = Datatype::indexOf(n.getOperator().toExpr());
+      const Datatype& dt = Datatype::datatypeOf(n.getOperator().toExpr());
+      toStream(op, Node::fromExpr(dt[cindex].getConstructor()), depth, types, false);
+    }
+      break;
+    case kind::CONSTRUCTOR_TYPE:
+    case kind::SELECTOR_TYPE:
+      if(n.getNumChildren() > 1) {
+        if(n.getNumChildren() > 2) {
+          out << '(';
+        }
+        for(unsigned i = 0; i < n.getNumChildren() - 1; ++i) {
+          if(i > 0) {
+            out << ", ";
+          }
+          toStream(out, n[i], depth, types, false);
+        }
+        if(n.getNumChildren() > 2) {
+          out << ')';
+        }
+        out << " -> ";
+      }
+      toStream(out, n[n.getNumChildren() - 1], depth, types, false);
+      return;
+    case kind::TESTER_TYPE:
+      toStream(out, n[0], depth, types, false);
+      out << " -> BOOLEAN";
+      return;
+      break;
+    case kind::TUPLE_UPDATE:
+      toStream(out, n[0], depth, types, true);
+      out << " WITH ." << n.getOperator().getConst<TupleUpdate>().getIndex() << " := ";
+      toStream(out, n[1], depth, types, true);
+      return;
+      break;
+    case kind::RECORD_UPDATE:
+      toStream(out, n[0], depth, types, true);
+      out << " WITH ." << n.getOperator().getConst<RecordUpdate>().getField() << " := ";
+      toStream(out, n[1], depth, types, true);
+      return;
+      break;
+
+    // ARRAYS
+    case kind::ARRAY_TYPE:
+      out << "ARRAY ";
+      toStream(out, n[0], depth, types, false);
+      out << " OF ";
+      toStream(out, n[1], depth, types, false);
+      return;
+      break;
+    case kind::SELECT:
+      toStream(out, n[0], depth, types, true);
+      out << '[';
+      toStream(out, n[1], depth, types, false);
+      out << ']';
+      return;
+      break;
+    case kind::STORE: {
+      stack<TNode> stk;
+      stk.push(n);
+      while(stk.top()[0].getKind() == kind::STORE) {
+        stk.push(stk.top()[0]);
+      }
+      if (bracket) {
+        out << '(';
+      }
+      TNode x = stk.top();
+      toStream(out, x[0], depth, types, false);
+      out << " WITH [";
+      toStream(out, x[1], depth, types, false);
+      out << "] := ";
+      toStream(out, x[2], depth, types, false);
+      stk.pop();
+      while(!stk.empty()) {
+        x = stk.top();
+        out << ", [";
+        toStream(out, x[1], depth, types, false);
+        out << "] := ";
+        toStream(out, x[2], depth, types, false);
+        stk.pop();
+      }
+      if (bracket) {
+        out << ')';
+      }
+      return;
+      break;
+    }
+
+    // ARITHMETIC
+    case kind::PLUS:
+      op << '+';
+      opType = INFIX;
+      break;
+    case kind::MULT:
+      op << '*';
+      opType = INFIX;
+      break;
+    case kind::MINUS:
+      op << '-';
+      opType = INFIX;
+      break;
+    case kind::UMINUS:
+      op << '-';
+      opType = PREFIX;
+      break;
+    case kind::DIVISION:
+    case kind::DIVISION_TOTAL:
+      op << '/';
+      opType = INFIX;
+      break;
+    case kind::INTS_DIVISION:
+    case kind::INTS_DIVISION_TOTAL:
+      op << "DIV";
+      opType = INFIX;
+      break;
+    case kind::INTS_MODULUS:
+    case kind::INTS_MODULUS_TOTAL:
+      op << "MOD";
+      opType = INFIX;
+      break;
+    case kind::LT:
+      op << '<';
+      opType = INFIX;
+      break;
+    case kind::LEQ:
+      op << "<=";
+      opType = INFIX;
+      break;
+    case kind::GT:
+      op << '>';
+      opType = INFIX;
+      break;
+    case kind::GEQ:
+      op << ">=";
+      opType = INFIX;
+      break;
+    case kind::POW:
+      op << '^';
+      opType = INFIX;
+      break;
+    case kind::ABS:
+      op << "ABS";
+      opType = PREFIX;
+      break;
+    case kind::IS_INTEGER:
+      op << "IS_INTEGER";
+      opType = PREFIX;
+      break;
+    case kind::TO_INTEGER:
+      op << "FLOOR";
+      opType = PREFIX;
+      break;
+    case kind::TO_REAL:
+      // ignore, there is no to-real in CVC language
+      toStream(out, n[0], depth, types, false);
+      return;
+    case kind::DIVISIBLE:
+      out << "DIVISIBLE(";
+      toStream(out, n[0], depth, types, false);
+      out << ", " << n.getOperator().getConst<Divisible>().k << ")";
+      return;
+
+    // BITVECTORS
+    case kind::BITVECTOR_XOR:
+      op << "BVXOR";
+      break;
+    case kind::BITVECTOR_NAND:
+      op << "BVNAND";
+      break;
+    case kind::BITVECTOR_NOR:
+      op << "BVNOR";
+      break;
+    case kind::BITVECTOR_XNOR:
+      op << "BVXNOR";
+      break;
+    case kind::BITVECTOR_COMP:
+      op << "BVCOMP";
+      break;
+    case kind::BITVECTOR_UDIV:
+      op << "BVUDIV";
+      break;
+    case kind::BITVECTOR_UDIV_TOTAL:
+      op << "BVUDIV_TOTAL";
+      break;
+    case kind::BITVECTOR_UREM:
+      op << "BVUREM";
+      break;
+    case kind::BITVECTOR_UREM_TOTAL:
+      op << "BVUREM_TOTAL";
+      break;
+    case kind::BITVECTOR_SDIV:
+      op << "BVSDIV";
+      break;
+    case kind::BITVECTOR_SREM:
+      op << "BVSREM";
+      break;
+    case kind::BITVECTOR_SMOD:
+      op << "BVSMOD";
+      break;
+    case kind::BITVECTOR_SHL:
+      op << "BVSHL";
+      break;
+    case kind::BITVECTOR_LSHR:
+      op << "BVLSHR";
+      break;
+    case kind::BITVECTOR_ASHR:
+      op << "BVASHR";
+      break;
+    case kind::BITVECTOR_ULT:
+      op << "BVLT";
+      break;
+    case kind::BITVECTOR_ULE:
+      op << "BVLE";
+      break;
+    case kind::BITVECTOR_UGT:
+      op << "BVGT";
+      break;
+    case kind::BITVECTOR_UGE:
+      op << "BVGE";
+      break;
+    case kind::BITVECTOR_SLT:
+      op << "BVSLT";
+      break;
+    case kind::BITVECTOR_SLE:
+      op << "BVSLE";
+      break;
+    case kind::BITVECTOR_SGT:
+      op << "BVSGT";
+      break;
+    case kind::BITVECTOR_SGE:
+      op << "BVSGE";
+      break;
+    case kind::BITVECTOR_NEG:
+      op << "BVUMINUS";
+      break;
+    case kind::BITVECTOR_NOT:
+      op << "~";
+      break;
+    case kind::BITVECTOR_AND:
+      op << "&";
+      opType = INFIX;
+      break;
+    case kind::BITVECTOR_OR:
+      op << "|";
+      opType = INFIX;
+      break;
+    case kind::BITVECTOR_CONCAT:
+      op << "@";
+      opType = INFIX;
+      break;
+    case kind::BITVECTOR_PLUS: {
+      // This interprets a BITVECTOR_PLUS as a bvadd in SMT-LIB
+      Assert(n.getType().isBitVector());
+      unsigned numc = n.getNumChildren()-2;
+      unsigned child = 0;
+      while (child < numc) {
+        out << "BVPLUS(";
+        out << BitVectorType(n.getType().toType()).getSize();
+        out << ',';
+        toStream(out, n[child], depth, types, false);
+        out << ',';
+        ++child;
+      }
+      out << "BVPLUS(";
+      out << BitVectorType(n.getType().toType()).getSize();
+      out << ',';
+      toStream(out, n[child], depth, types, false);
+      out << ',';
+      toStream(out, n[child + 1], depth, types, false);
+      while (child > 0) {
+        out << ')';
+        --child;
+      }
+      out << ')';
+      return;
+      break;
+    }
+    case kind::BITVECTOR_SUB:
+      out << "BVSUB(";
+      Assert(n.getType().isBitVector());
+      out << BitVectorType(n.getType().toType()).getSize();
+      out << ',';
+      toStream(out, n[0], depth, types, false);
+      out << ',';
+      toStream(out, n[1], depth, types, false);
+      out << ')';
+      return;
+      break;
+    case kind::BITVECTOR_MULT: {
+      Assert(n.getType().isBitVector());
+      unsigned numc = n.getNumChildren()-2;
+      unsigned child = 0;
+      while (child < numc) {
+        out << "BVMULT(";
+        out << BitVectorType(n.getType().toType()).getSize();
+        out << ',';
+        toStream(out, n[child], depth, types, false);
+        out << ',';
+        ++child;
+        }
+      out << "BVMULT(";
+      out << BitVectorType(n.getType().toType()).getSize();
+      out << ',';
+      toStream(out, n[child], depth, types, false);
+      out << ',';
+      toStream(out, n[child + 1], depth, types, false);
+      while (child > 0) {
+        out << ')';
+        --child;
+      }
+      out << ')';
+      return;
+      break;
+    }
+    case kind::BITVECTOR_EXTRACT:
+      op << n.getOperator().getConst<BitVectorExtract>();
+      opType = POSTFIX;
+      break;
+    case kind::BITVECTOR_BITOF:
+      op << n.getOperator().getConst<BitVectorBitOf>();
+      opType = POSTFIX;
+      break;
+    case kind::BITVECTOR_REPEAT:
+      out << "BVREPEAT(";
+      toStream(out, n[0], depth, types, false);
+      out << ", " << n.getOperator().getConst<BitVectorRepeat>() << ')';
+      return;
+      break;
+    case kind::BITVECTOR_ZERO_EXTEND:
+      out << "BVZEROEXTEND(";
+      toStream(out, n[0], depth, types, false);
+      out << ", " << n.getOperator().getConst<BitVectorZeroExtend>() << ')';
+      return;
+      break;
+    case kind::BITVECTOR_SIGN_EXTEND:
+      out << "SX(";
+      toStream(out, n[0], depth, types, false);
+      out << ", " << BitVectorType(n.getType().toType()).getSize() << ')';
+      return;
+      break;
+    case kind::BITVECTOR_ROTATE_LEFT:
+      out << "BVROTL(";
+      toStream(out, n[0], depth, types, false);
+      out << ", " << n.getOperator().getConst<BitVectorRotateLeft>() << ')';
+      return;
+      break;
+    case kind::BITVECTOR_ROTATE_RIGHT:
+      out << "BVROTR(";
+      toStream(out, n[0], depth, types, false);
+      out << ", " << n.getOperator().getConst<BitVectorRotateRight>() << ')';
+      return;
+      break;
+
+    // SETS
+    case kind::SET_TYPE:
+      out << "SET OF ";
+      toStream(out, n[0], depth, types, false);
+      return;
+      break;
+    case kind::UNION:
+      op << '|';
+      opType = INFIX;
+      break;
+    case kind::INTERSECTION:
+      op << '&';
+      opType = INFIX;
+      break;
+    case kind::SETMINUS:
+      op << '-';
+      opType = INFIX;
+      break;
+    case kind::SUBSET:
+      op << "<=";
+      opType = INFIX;
+      break;
+    case kind::MEMBER:
+      op << "IS_IN";
+      opType = INFIX;
+      break;
+    case kind::COMPLEMENT:
+      op << "NOT";
+      opType = PREFIX;
+      break;
+    case kind::PRODUCT:
+      op << "PRODUCT";
+      opType = INFIX;
+      break;
+    case kind::JOIN:
+      op << "JOIN";
+      opType = INFIX;
+      break;
+    case kind::TRANSPOSE:
+      op << "TRANSPOSE";
+      opType = PREFIX;
+      break;
+    case kind::TCLOSURE:
+      op << "TCLOSURE";
+      opType = PREFIX;
+      break;
+    case kind::SINGLETON:
+      out << "{";
+      toStream(out, n[0], depth, types, false);
+      out << "}";
+      return;
+      break;
+    case kind::INSERT: {
+      if(bracket) {
+	out << '(';
+      }
+      out << '{';
+      size_t i = 0;
+      toStream(out, n[i++], depth, types, false);
+      for(;i+1 < n.getNumChildren(); ++i) {
+        out << ", ";
+        toStream(out, n[i], depth, types, false);
+      }
+      out << "} | ";
+      toStream(out, n[i], depth, types, true);
+      if(bracket) {
+	out << ')';
+      }
+      return;
+      break;
+    }
+    case kind::CARD: {
+      out << "CARD(";
+      toStream(out, n[0], depth, types, false);
+      out << ")";
+      return;
+      break;
+    }
+
+    // Quantifiers
+    case kind::FORALL:
+      out << "(FORALL";
+      toStream(out, n[0], depth, types, false);
+      out << " : ";
+      toStream(out, n[1], depth, types, false);
+      out << ')';
+      // TODO: user patterns?
+      return;
+    case kind::EXISTS:
+      out << "(EXISTS";
+      toStream(out, n[0], depth, types, false);
+      out << " : ";
+      toStream(out, n[1], depth, types, false);
+      out << ')';
+      // TODO: user patterns?
+      return;
+    case kind::INST_CONSTANT:
+      out << "INST_CONSTANT";
+      break;
+    case kind::BOUND_VAR_LIST:
+      out << '(';
+      for(size_t i = 0; i < n.getNumChildren(); ++i) {
+        if(i > 0) {
+          out << ", ";
+        }
+        toStream(out, n[i], -1, true, false); // ascribe types
+      }
+      out << ')';
+      return;
+    case kind::INST_PATTERN:
+      out << "INST_PATTERN";
+      break;
+    case kind::INST_PATTERN_LIST:
+      out << "INST_PATTERN_LIST";
+      break;
+
+    default:
+      Warning() << "Kind printing not implemented for the case of " << n.getKind() << endl;
+      break;
+  }
+
+  switch (opType) {
+  case PREFIX:
+    out << op.str() << '(';
+    break;
+  case INFIX:
+    if (bracket) {
+      out << '(';
+    }
+    break;
+  case POSTFIX:
+    out << '(';
+    break;
+  }
+
+  for (unsigned i = 0; i < n.getNumChildren(); ++ i) {
+    if (i > 0) {
+      if (opType == INFIX) {
+        out << ' ' << op.str() << ' ';
+      } else {
+        out << ", ";
+      }
+    }
+    toStream(out, n[i], depth, types, opType == INFIX);
+  }
+
+  switch (opType) {
+    case PREFIX:
+      out << ')';
+      break;
+    case INFIX:
+      if (bracket) {
+        out << ')';
+      }
+      break;
+    case POSTFIX:
+      out << ')' << op.str();
+      break;
+  }
+
+}/* CvcPrinter::toStream(TNode) */
+
+template <class T>
+static bool tryToStream(std::ostream& out, const Command* c, bool cvc3Mode) throw();
+
+void CvcPrinter::toStream(std::ostream& out, const Command* c,
+                           int toDepth, bool types, size_t dag) const throw() {
+  expr::ExprSetDepth::Scope sdScope(out, toDepth);
+  expr::ExprPrintTypes::Scope ptScope(out, types);
+  expr::ExprDag::Scope dagScope(out, dag);
+
+  if(tryToStream<AssertCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<PushCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<PopCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<CheckSatCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<QueryCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<ResetCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<ResetAssertionsCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<QuitCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<DeclarationSequence>(out, c, d_cvc3Mode) ||
+     tryToStream<CommandSequence>(out, c, d_cvc3Mode) ||
+     tryToStream<DeclareFunctionCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<DeclareTypeCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<DefineTypeCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<DefineNamedFunctionCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<DefineFunctionCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<SimplifyCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<GetValueCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<GetModelCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<GetAssignmentCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<GetAssertionsCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<GetProofCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<GetUnsatCoreCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<SetBenchmarkStatusCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<SetBenchmarkLogicCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<SetInfoCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<GetInfoCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<SetOptionCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<GetOptionCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<DatatypeDeclarationCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<CommentCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<EmptyCommand>(out, c, d_cvc3Mode) ||
+     tryToStream<EchoCommand>(out, c, d_cvc3Mode)) {
+    return;
+  }
+
+  out << "ERROR: don't know how to print a Command of class: "
+      << typeid(*c).name() << endl;
+
+}/* CvcPrinter::toStream(Command*) */
+
+template <class T>
+static bool tryToStream(std::ostream& out, const CommandStatus* s, bool cvc3Mode) throw();
+
+void CvcPrinter::toStream(std::ostream& out, const CommandStatus* s) const throw() {
+
+  if(tryToStream<CommandSuccess>(out, s, d_cvc3Mode) ||
+     tryToStream<CommandFailure>(out, s, d_cvc3Mode) ||
+     tryToStream<CommandUnsupported>(out, s, d_cvc3Mode) ||
+     tryToStream<CommandInterrupted>(out, s, d_cvc3Mode)) {
+    return;
+  }
+
+  out << "ERROR: don't know how to print a CommandStatus of class: "
+      << typeid(*s).name() << endl;
+
+}/* CvcPrinter::toStream(CommandStatus*) */
+
+void CvcPrinter::toStream(std::ostream& out, const Model& m, const Command* c) const throw() {
+  const theory::TheoryModel& tm = (const theory::TheoryModel&) m;
+  if(dynamic_cast<const DeclareTypeCommand*>(c) != NULL) {
+    TypeNode tn = TypeNode::fromType( ((const DeclareTypeCommand*)c)->getType() );
+    if( options::modelUninterpDtEnum() && tn.isSort() &&
+        tm.d_rep_set.d_type_reps.find( tn )!=tm.d_rep_set.d_type_reps.end() ){
+      out << "DATATYPE" << std::endl;
+      out << "  " << dynamic_cast<const DeclareTypeCommand*>(c)->getSymbol() << " = ";
+      for( size_t i=0; i<(*tm.d_rep_set.d_type_reps.find(tn)).second.size(); i++ ){
+        if (i>0) {
+          out << "| ";
+        }
+        out << (*tm.d_rep_set.d_type_reps.find(tn)).second[i] << " ";
+      }
+      out << std::endl << "END;" << std::endl;
+    } else {
+      if( tn.isSort() ){
+        // print the cardinality
+        if( tm.d_rep_set.d_type_reps.find( tn )!=tm.d_rep_set.d_type_reps.end() ){
+          out << "% cardinality of " << tn << " is " << (*tm.d_rep_set.d_type_reps.find(tn)).second.size() << std::endl;
+        }
+      }
+      out << c << std::endl;
+      if( tn.isSort() ){
+        // print the representatives
+        if( tm.d_rep_set.d_type_reps.find( tn )!=tm.d_rep_set.d_type_reps.end() ){
+          for( size_t i=0; i<(*tm.d_rep_set.d_type_reps.find(tn)).second.size(); i++ ){
+            if( (*tm.d_rep_set.d_type_reps.find(tn)).second[i].isVar() ){
+              out << (*tm.d_rep_set.d_type_reps.find(tn)).second[i] << " : " << tn << ";" << std::endl;
+            }else{
+              out << "% rep: " << (*tm.d_rep_set.d_type_reps.find(tn)).second[i] << std::endl;
+            }
+          }
+        }
+      }
+    }
+  } else if(dynamic_cast<const DeclareFunctionCommand*>(c) != NULL) {
+    Node n = Node::fromExpr( ((const DeclareFunctionCommand*)c)->getFunction() );
+    if(n.getKind() == kind::SKOLEM) {
+      // don't print out internal stuff
+      return;
+    }
+    TypeNode tn = n.getType();
+    out << n << " : ";
+    if( tn.isFunction() || tn.isPredicate() ){
+      out << "(";
+      for( size_t i=0; i<tn.getNumChildren()-1; i++ ){
+        if( i>0 ) out << ", ";
+        out << tn[i];
+      }
+      out << ") -> " << tn.getRangeType();
+    }else{
+      out << tn;
+    }
+    Node val = Node::fromExpr(tm.getSmtEngine()->getValue(n.toExpr()));
+    if( options::modelUninterpDtEnum() && val.getKind() == kind::STORE ) {
+      TypeNode tn = val[1].getType();
+      if (tn.isSort() && tm.d_rep_set.d_type_reps.find( tn )!=tm.d_rep_set.d_type_reps.end() ){
+        Cardinality indexCard((*tm.d_rep_set.d_type_reps.find(tn)).second.size());
+        val = theory::arrays::TheoryArraysRewriter::normalizeConstant( val, indexCard );
+      }
+    }
+    out << " = " << val << ";" << std::endl;
+
+/*
+    //for table format (work in progress)
+    bool printedModel = false;
+    if( tn.isFunction() ){
+      if( options::modelFormatMode()==MODEL_FORMAT_MODE_TABLE ){
+        //specialized table format for functions
+        RepSetIterator riter( &d_rep_set );
+        riter.setFunctionDomain( n );
+        while( !riter.isFinished() ){
+          std::vector< Node > children;
+          children.push_back( n );
+          for( int i=0; i<riter.getNumTerms(); i++ ){
+            children.push_back( riter.getTerm( i ) );
+          }
+          Node nn = NodeManager::currentNM()->mkNode( APPLY_UF, children );
+          Node val = getValue( nn );
+          out << val << " ";
+          riter.increment();
+        }
+        printedModel = true;
+      }
+    }
+*/
+  }else{
+    out << c << std::endl;
+  }
+}
+
+static void toStream(std::ostream& out, const AssertCommand* c, bool cvc3Mode) throw() {
+  out << "ASSERT " << c->getExpr() << ";";
+}
+
+static void toStream(std::ostream& out, const PushCommand* c, bool cvc3Mode) throw() {
+  out << "PUSH;";
+}
+
+static void toStream(std::ostream& out, const PopCommand* c, bool cvc3Mode) throw() {
+  out << "POP;";
+}
+
+static void toStream(std::ostream& out, const CheckSatCommand* c, bool cvc3Mode) throw() {
+  Expr e = c->getExpr();
+  if(cvc3Mode) {
+    out << "PUSH; ";
+  }
+  if(!e.isNull()) {
+    out << "CHECKSAT " << e << ";";
+  } else {
+    out << "CHECKSAT;";
+  }
+  if(cvc3Mode) {
+    out << " POP;";
+  }
+}
+
+static void toStream(std::ostream& out, const QueryCommand* c, bool cvc3Mode) throw() {
+  Expr e = c->getExpr();
+  if(cvc3Mode) {
+    out << "PUSH; ";
+  }
+  if(!e.isNull()) {
+    out << "QUERY " << e << ";";
+  } else {
+    out << "QUERY TRUE;";
+  }
+  if(cvc3Mode) {
+    out << " POP;";
+  }
+}
+
+static void toStream(std::ostream& out, const ResetCommand* c, bool cvc3Mode) throw() {
+  out << "RESET;";
+}
+
+static void toStream(std::ostream& out, const ResetAssertionsCommand* c, bool cvc3Mode) throw() {
+  out << "RESET ASSERTIONS;";
+}
+
+static void toStream(std::ostream& out, const QuitCommand* c, bool cvc3Mode) throw() {
+  //out << "EXIT;";
+}
+
+static void toStream(std::ostream& out, const CommandSequence* c, bool cvc3Mode) throw() {
+  for(CommandSequence::const_iterator i = c->begin();
+      i != c->end();
+      ++i) {
+    out << *i << endl;
+  }
+}
+
+static void toStream(std::ostream& out, const DeclarationSequence* c, bool cvc3Mode) throw() {
+  DeclarationSequence::const_iterator i = c->begin();
+  for(;;) {
+    DeclarationDefinitionCommand* dd =
+      static_cast<DeclarationDefinitionCommand*>(*i++);
+    if(i != c->end()) {
+      out << dd->getSymbol() << ", ";
+    } else {
+      out << *dd;
+      break;
+    }
+  }
+}
+
+static void toStream(std::ostream& out, const DeclareFunctionCommand* c, bool cvc3Mode) throw() {
+  out << c->getSymbol() << " : " << c->getType() << ";";
+}
+
+static void toStream(std::ostream& out, const DefineFunctionCommand* c, bool cvc3Mode) throw() {
+  Expr func = c->getFunction();
+  const vector<Expr>& formals = c->getFormals();
+  Expr formula = c->getFormula();
+  out << func << " : " << func.getType() << " = ";
+  if(formals.size() > 0) {
+    out << "LAMBDA(";
+    vector<Expr>::const_iterator i = formals.begin();
+    while(i != formals.end()) {
+      out << (*i) << ":" << (*i).getType();
+      if(++i != formals.end()) {
+        out << ", ";
+      }
+    }
+    out << "): ";
+  }
+  out << formula << ";";
+}
+
+static void toStream(std::ostream& out, const DeclareTypeCommand* c, bool cvc3Mode) throw() {
+  if(c->getArity() > 0) {
+    //TODO?
+    out << "ERROR: Don't know how to print parameterized type declaration "
+           "in CVC language." << endl;
+  } else {
+    out << c->getSymbol() << " : TYPE;";
+  }
+}
+
+static void toStream(std::ostream& out, const DefineTypeCommand* c, bool cvc3Mode) throw() {
+  if(c->getParameters().size() > 0) {
+    out << "ERROR: Don't know how to print parameterized type definition "
+           "in CVC language:" << endl << c->toString() << endl;
+  } else {
+    out << c->getSymbol() << " : TYPE = " << c->getType() << ";";
+  }
+}
+
+static void toStream(std::ostream& out, const DefineNamedFunctionCommand* c, bool cvc3Mode) throw() {
+  toStream(out, static_cast<const DefineFunctionCommand*>(c), cvc3Mode);
+}
+
+static void toStream(std::ostream& out, const SimplifyCommand* c, bool cvc3Mode) throw() {
+  out << "TRANSFORM " << c->getTerm() << ";";
+}
+
+static void toStream(std::ostream& out, const GetValueCommand* c, bool cvc3Mode) throw() {
+  const vector<Expr>& terms = c->getTerms();
+  Assert(!terms.empty());
+  out << "GET_VALUE ";
+  copy(terms.begin(), terms.end() - 1, ostream_iterator<Expr>(out, ";\nGET_VALUE "));
+  out << terms.back() << ";";
+}
+
+static void toStream(std::ostream& out, const GetModelCommand* c, bool cvc3Mode) throw() {
+  out << "COUNTERMODEL;";
+}
+
+static void toStream(std::ostream& out, const GetAssignmentCommand* c, bool cvc3Mode) throw() {
+  out << "% (get-assignment)";
+}
+
+static void toStream(std::ostream& out, const GetAssertionsCommand* c, bool cvc3Mode) throw() {
+  out << "WHERE;";
+}
+
+static void toStream(std::ostream& out, const GetProofCommand* c, bool cvc3Mode) throw() {
+  out << "DUMP_PROOF;";
+}
+
+static void toStream(std::ostream& out, const GetUnsatCoreCommand* c, bool cvc3Mode) throw() {
+  out << "DUMP_UNSAT_CORE;";
+}
+
+static void toStream(std::ostream& out, const SetBenchmarkStatusCommand* c, bool cvc3Mode) throw() {
+  out << "% (set-info :status " << c->getStatus() << ")";
+}
+
+static void toStream(std::ostream& out, const SetBenchmarkLogicCommand* c, bool cvc3Mode) throw() {
+  out << "OPTION \"logic\" \"" << c->getLogic() << "\";";
+}
+
+static void toStream(std::ostream& out, const SetInfoCommand* c, bool cvc3Mode) throw() {
+  out << "% (set-info " << c->getFlag() << " ";
+  OutputLanguage language =
+      cvc3Mode ? language::output::LANG_CVC3 : language::output::LANG_CVC4;
+  SExpr::toStream(out, c->getSExpr(), language);
+  out << ")";
+}
+
+static void toStream(std::ostream& out, const GetInfoCommand* c, bool cvc3Mode) throw() {
+  out << "% (get-info " << c->getFlag() << ")";
+}
+
+static void toStream(std::ostream& out, const SetOptionCommand* c, bool cvc3Mode) throw() {
+  out << "OPTION \"" << c->getFlag() << "\" ";
+  SExpr::toStream(out, c->getSExpr(), language::output::LANG_CVC4);
+  out << ";";
+}
+
+static void toStream(std::ostream& out, const GetOptionCommand* c, bool cvc3Mode) throw() {
+  out << "% (get-option " << c->getFlag() << ")";
+}
+
+static void toStream(std::ostream& out, const DatatypeDeclarationCommand* c, bool cvc3Mode) throw() {
+  const vector<DatatypeType>& datatypes = c->getDatatypes();
+  //do not print tuple/datatype internal declarations
+  if( datatypes.size()!=1 || ( !datatypes[0].getDatatype().isTuple() && !datatypes[0].getDatatype().isRecord() ) ){
+    out << "DATATYPE" << endl;
+    bool firstDatatype = true;
+    for(vector<DatatypeType>::const_iterator i = datatypes.begin(),
+          i_end = datatypes.end();
+        i != i_end;
+        ++i) {
+      if(! firstDatatype) {
+        out << ',' << endl;
+      }
+      const Datatype& dt = (*i).getDatatype();
+      out << "  " << dt.getName();
+      if(dt.isParametric()) {
+        out << '[';
+        for(size_t j = 0; j < dt.getNumParameters(); ++j) {
+          if(j > 0) {
+            out << ',';
+          }
+          out << dt.getParameter(j);
+        }
+        out << ']';
+      }
+      out << " = ";
+      bool firstConstructor = true;
+      for(Datatype::const_iterator j = dt.begin(); j != dt.end(); ++j) {
+        if(! firstConstructor) {
+          out << " | ";
+        }
+        firstConstructor = false;
+        const DatatypeConstructor& c = *j;
+        out << c.getName();
+        if(c.getNumArgs() > 0) {
+          out << '(';
+          bool firstSelector = true;
+          for(DatatypeConstructor::const_iterator k = c.begin(); k != c.end(); ++k) {
+            if(! firstSelector) {
+              out << ", ";
+            }
+            firstSelector = false;
+            const DatatypeConstructorArg& selector = *k;
+            Type t = SelectorType(selector.getType()).getRangeType();
+            if( t.isDatatype() ){
+              const Datatype & sdt = ((DatatypeType)t).getDatatype();
+              out << selector.getName() << ": " << sdt.getName();
+            }else{
+              out << selector.getName() << ": " << t;
+            }
+          }
+          out << ')';
+        }
+      }
+    }
+    out << endl << "END;";
+  }
+}
+
+static void toStream(std::ostream& out, const CommentCommand* c, bool cvc3Mode) throw() {
+  out << "% " << c->getComment();
+}
+
+static void toStream(std::ostream& out, const EmptyCommand* c, bool cvc3Mode) throw() {
+}
+
+static void toStream(std::ostream& out, const EchoCommand* c, bool cvc3Mode) throw() {
+  out << "ECHO \"" << c->getOutput() << "\";";
+}
+
+template <class T>
+static bool tryToStream(std::ostream& out, const Command* c, bool cvc3Mode) throw() {
+  if(typeid(*c) == typeid(T)) {
+    toStream(out, dynamic_cast<const T*>(c), cvc3Mode);
+    return true;
+  }
+  return false;
+}
+
+static void toStream(std::ostream& out, const CommandSuccess* s, bool cvc3Mode) throw() {
+  if(Command::printsuccess::getPrintSuccess(out)) {
+    out << "OK" << endl;
+  }
+}
+
+static void toStream(std::ostream& out, const CommandUnsupported* s, bool cvc3Mode) throw() {
+  out << "UNSUPPORTED" << endl;
+}
+
+static void toStream(std::ostream& out, const CommandInterrupted* s, bool cvc3Mode) throw() {
+  out << "INTERRUPTED" << endl;
+}
+
+static void toStream(std::ostream& out, const CommandFailure* s, bool cvc3Mode) throw() {
+  out << s->getMessage() << endl;
+}
+
+template <class T>
+static bool tryToStream(std::ostream& out, const CommandStatus* s, bool cvc3Mode) throw() {
+  if(typeid(*s) == typeid(T)) {
+    toStream(out, dynamic_cast<const T*>(s), cvc3Mode);
+    return true;
+  }
+  return false;
+}
+
+}/* CVC4::printer::cvc namespace */
+}/* CVC4::printer namespace */
+}/* CVC4 namespace */
diff --git a/src/printer/cvc/cvc_printer.h b/src/printer/cvc/cvc_printer.h
new file mode 100644
index 0000000..fd25013
--- /dev/null
+++ b/src/printer/cvc/cvc_printer.h
@@ -0,0 +1,48 @@
+/*********************                                                        */
+/*! \file cvc_printer.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The pretty-printer interface for the CVC output language
+ **
+ ** The pretty-printer interface for the CVC output language.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__PRINTER__CVC_PRINTER_H
+#define __CVC4__PRINTER__CVC_PRINTER_H
+
+#include <iostream>
+
+#include "printer/printer.h"
+
+namespace CVC4 {
+namespace printer {
+namespace cvc {
+
+class CvcPrinter : public CVC4::Printer {
+  bool d_cvc3Mode;
+
+  void toStream(std::ostream& out, TNode n, int toDepth, bool types, bool bracket) const throw();
+  void toStream(std::ostream& out, const Model& m, const Command* c) const throw();
+public:
+  using CVC4::Printer::toStream;
+  CvcPrinter(bool cvc3Mode = false) : d_cvc3Mode(cvc3Mode) { }
+  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();
+  void toStream(std::ostream& out, const CommandStatus* s) const throw();
+};/* class CvcPrinter */
+
+}/* CVC4::printer::cvc namespace */
+}/* CVC4::printer namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PRINTER__CVC_PRINTER_H */
+
diff --git a/src/printer/dagification_visitor.cpp b/src/printer/dagification_visitor.cpp
new file mode 100644
index 0000000..c52f0ed
--- /dev/null
+++ b/src/printer/dagification_visitor.cpp
@@ -0,0 +1,167 @@
+/*********************                                                        */
+/*! \file dagification_visitor.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of a dagifier for CVC4 expressions
+ **
+ ** Implementation of a dagifier for CVC4 expressions.
+ **/
+
+#include "printer/dagification_visitor.h"
+
+#include "context/context.h"
+#include "theory/substitutions.h"
+
+#include <sstream>
+
+namespace CVC4 {
+namespace printer {
+
+DagificationVisitor::DagificationVisitor(unsigned threshold, std::string letVarPrefix) :
+  d_threshold(threshold),
+  d_letVarPrefix(letVarPrefix),
+  d_nodeCount(),
+  d_top(),
+  d_context(new context::Context()),
+  d_substitutions(new theory::SubstitutionMap(d_context)),
+  d_letVar(0),
+  d_done(false),
+  d_uniqueParent(),
+  d_substNodes() {
+
+  // 0 doesn't make sense
+  AlwaysAssertArgument(threshold > 0, threshold);
+}
+
+DagificationVisitor::~DagificationVisitor() {
+  delete d_substitutions;
+  delete d_context;
+}
+
+bool DagificationVisitor::alreadyVisited(TNode current, TNode parent) {
+  // don't visit variables, constants, or those exprs that we've
+  // already seen more than the threshold: if we've increased
+  // the count beyond the threshold already, we've done the same
+  // for all subexpressions, so it isn't useful to traverse and
+  // increment again (they'll be dagified anyway).
+  return current.isVar() ||
+         current.getMetaKind() == kind::metakind::CONSTANT ||
+         current.getNumChildren()==0 ||
+         ( ( current.getKind() == kind::NOT ||
+             current.getKind() == kind::UMINUS ) &&
+           ( current[0].isVar() ||
+             current[0].getMetaKind() == kind::metakind::CONSTANT ) ) ||
+         current.getKind() == kind::SORT_TYPE ||
+         d_nodeCount[current] > d_threshold;
+}
+
+void DagificationVisitor::visit(TNode current, TNode parent) {
+
+#ifdef CVC4_TRACING
+#  ifdef CVC4_DEBUG
+  // turn off dagification for Debug stream while we're doing this work
+  Node::dag::Scope scopeDebug(Debug.getStream(), false);
+#  endif /* CVC4_DEBUG */
+  // turn off dagification for Trace stream while we're doing this work
+  Node::dag::Scope scopeTrace(Trace.getStream(), false);
+#endif /* CVC4_TRACING */
+
+  if(d_uniqueParent.find(current) != d_uniqueParent.end()) {
+    // we've seen this expr before
+
+    TNode& uniqueParent = d_uniqueParent[current];
+
+    if(!uniqueParent.isNull() && uniqueParent != parent) {
+      // there is not a unique parent for this expr, mark it
+      uniqueParent = TNode::null();
+    }
+
+    // increase the count
+    const unsigned count = ++d_nodeCount[current];
+
+    if(count > d_threshold) {
+      // candidate for a let binder
+      d_substNodes.push_back(current);
+    }
+  } else {
+    // we haven't seen this expr before
+    Assert(d_nodeCount[current] == 0);
+    d_nodeCount[current] = 1;
+    d_uniqueParent[current] = parent;
+  }
+}
+
+void DagificationVisitor::start(TNode node) {
+  AlwaysAssert(!d_done, "DagificationVisitor cannot be re-used");
+  d_top = node;
+}
+
+void DagificationVisitor::done(TNode node) {
+  AlwaysAssert(!d_done);
+
+  d_done = true;
+
+#ifdef CVC4_TRACING
+#  ifdef CVC4_DEBUG
+  // turn off dagification for Debug stream while we're doing this work
+  Node::dag::Scope scopeDebug(Debug.getStream(), false);
+#  endif /* CVC4_DEBUG */
+  // turn off dagification for Trace stream while we're doing this work
+  Node::dag::Scope scopeTrace(Trace.getStream(), false);
+#endif /* CVC4_TRACING */
+
+  // letify subexprs before parents (cascading LETs)
+  std::sort(d_substNodes.begin(), d_substNodes.end());
+
+  for(std::vector<TNode>::iterator i = d_substNodes.begin();
+      i != d_substNodes.end();
+      ++i) {
+    Assert(d_nodeCount[*i] > d_threshold);
+    TNode parent = d_uniqueParent[*i];
+    if(!parent.isNull() && d_nodeCount[parent] > d_threshold) {
+      // no need to letify this expr, because it only occurs in
+      // a single super-expression, and that one will be letified
+      continue;
+    }
+
+    // construct the let binder
+    std::stringstream ss;
+    ss << d_letVarPrefix << d_letVar++;
+    Node letvar = NodeManager::currentNM()->mkSkolem(ss.str(), (*i).getType(), "dagification", NodeManager::SKOLEM_NO_NOTIFY | NodeManager::SKOLEM_EXACT_NAME);
+
+    // apply previous substitutions to the rhs, enabling cascading LETs
+    Node n = d_substitutions->apply(*i);
+    Assert(! d_substitutions->hasSubstitution(n));
+    d_substitutions->addSubstitution(n, letvar);
+  }
+}
+
+const theory::SubstitutionMap& DagificationVisitor::getLets() {
+  AlwaysAssert(d_done, "DagificationVisitor must be used as a visitor before getting the dagified version out!");
+  return *d_substitutions;
+}
+
+Node DagificationVisitor::getDagifiedBody() {
+  AlwaysAssert(d_done, "DagificationVisitor must be used as a visitor before getting the dagified version out!");
+
+#ifdef CVC4_TRACING
+#  ifdef CVC4_DEBUG
+  // turn off dagification for Debug stream while we're doing this work
+  Node::dag::Scope scopeDebug(Debug.getStream(), false);
+#  endif /* CVC4_DEBUG */
+  // turn off dagification for Trace stream while we're doing this work
+  Node::dag::Scope scopeTrace(Trace.getStream(), false);
+#endif /* CVC4_TRACING */
+
+  return d_substitutions->apply(d_top);
+}
+
+}/* CVC4::printer namespace */
+}/* CVC4 namespace */
diff --git a/src/printer/dagification_visitor.h b/src/printer/dagification_visitor.h
new file mode 100644
index 0000000..c79ec51
--- /dev/null
+++ b/src/printer/dagification_visitor.h
@@ -0,0 +1,177 @@
+/*********************                                                        */
+/*! \file dagification_visitor.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A dagifier for CVC4 expressions
+ **
+ ** A dagifier for CVC4 expressions.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__PRINTER__DAGIFICATION_VISITOR_H
+#define __CVC4__PRINTER__DAGIFICATION_VISITOR_H
+
+#include "expr/node.h"
+#include "util/hash.h"
+
+#include <vector>
+#include <string>
+
+namespace CVC4 {
+
+namespace context {
+  class Context;
+}/* CVC4::context namespace */
+
+namespace theory {
+  class SubstitutionMap;
+}/* CVC4::theory namespace */
+
+namespace printer {
+
+/**
+ * This is a visitor class (intended to be used with CVC4's NodeVisitor)
+ * that visits an expression looking for common subexpressions that appear
+ * more than N times, where N is a configurable threshold.  Afterward,
+ * let bindings can be extracted from this visitor and applied to the
+ * expression.
+ *
+ * This dagifier never introduces let bindings for variables, constants,
+ * unary-minus exprs over variables or constants, or NOT exprs over
+ * variables or constants.  This dagifier never introduces let bindings
+ * for types.
+ */
+class DagificationVisitor {
+
+  /**
+   * The threshold for dagification.  Subexprs occurring more than this
+   * number of times are dagified.
+   */
+  const unsigned d_threshold;
+
+  /**
+   * The prefix for introduced let bindings.
+   */
+  const std::string d_letVarPrefix;
+
+  /**
+   * A map of subexprs to their occurrence count.
+   */
+  std::hash_map<TNode, unsigned, TNodeHashFunction> d_nodeCount;
+
+  /**
+   * The top-most node we are visiting.
+   */
+  TNode d_top;
+
+  /**
+   * This class doesn't operate in a context-dependent fashion, but
+   * SubstitutionMap does, so we need a context.
+   */
+  context::Context* d_context;
+
+  /**
+   * A map of subexprs to their newly-introduced let bindings.
+   */
+  theory::SubstitutionMap* d_substitutions;
+
+  /**
+   * The current count of let bindings.  Used to build unique names
+   * for the bindings.
+   */
+  unsigned d_letVar;
+
+  /**
+   * Keep track of whether we are done yet (for assertions---this visitor
+   * can only be used one time).
+   */
+  bool d_done;
+
+  /**
+   * If a subexpr occurs uniquely in one parent expr, this map points to
+   * it.  An expr not occurring as a key in this map means we haven't
+   * seen it yet (and its occurrence count should be zero).  If an expr
+   * points to the null expr in this map, it means we've seen more than
+   * one parent, so the subexpr doesn't have a unique parent.
+   *
+   * This information is kept because if a subexpr occurs more than the
+   * threshold, it is normally subject to dagification.  But if it occurs
+   * only in one unique parent expression, and the parent meets the
+   * threshold too, then the parent will be dagified and there's no point
+   * in independently dagifying the child.  (If it is beyond the threshold
+   * and occurs in more than one parent, we'll independently dagify.)
+   */
+  std::hash_map<TNode, TNode, TNodeHashFunction> d_uniqueParent;
+
+  /**
+   * A list of all nodes that meet the occurrence threshold and therefore
+   * *may* be subject to dagification, except for the unique-parent rule
+   * mentioned above.
+   */
+  std::vector<TNode> d_substNodes;
+
+public:
+
+  /** Our visitor doesn't return anything. */
+  typedef void return_type;
+
+  /**
+   * Construct a dagification visitor with the given threshold and let
+   * binding prefix.
+   *
+   * @param threshold the threshold to apply for dagification (must be > 0)
+   * @param letVarPrefix prefix for let bindings (by default, "_let_")
+   */
+  DagificationVisitor(unsigned threshold, std::string letVarPrefix = "_let_");
+
+  /**
+   * Simple destructor, clean up memory.
+   */
+  ~DagificationVisitor();
+
+  /**
+   * Returns true if "current" has already been visited a sufficient
+   * number of times to make it a candidate for dagification, or if
+   * it cannot ever be subject to dagification.
+   */
+  bool alreadyVisited(TNode current, TNode parent);
+
+  /**
+   * Visit the expr "current", it might be a candidate for a let binder.
+   */
+  void visit(TNode current, TNode parent);
+
+  /**
+   * Marks the node as the starting literal.
+   */
+  void start(TNode node);
+
+  /**
+   * Called when we're done with all visitation.  Does postprocessing.
+   */
+  void done(TNode node);
+
+  /**
+   * Get the let substitutions.
+   */
+  const theory::SubstitutionMap& getLets();
+
+  /**
+   * Return the let-substituted expression.
+   */
+  Node getDagifiedBody();
+
+};/* class DagificationVisitor */
+
+}/* CVC4::printer namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PRINTER__DAGIFICATION_VISITOR_H */
diff --git a/src/printer/printer.cpp b/src/printer/printer.cpp
new file mode 100644
index 0000000..c715312
--- /dev/null
+++ b/src/printer/printer.cpp
@@ -0,0 +1,121 @@
+/*********************                                                        */
+/*! \file printer.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Clark Barrett
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Base of the pretty-printer interface
+ **
+ ** Base of the pretty-printer interface.
+ **/
+#include "printer/printer.h"
+
+#include <string>
+
+#include "options/base_options.h"
+#include "options/language.h"
+#include "printer/ast/ast_printer.h"
+#include "printer/cvc/cvc_printer.h"
+#include "printer/smt1/smt1_printer.h"
+#include "printer/smt2/smt2_printer.h"
+#include "printer/tptp/tptp_printer.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+Printer* Printer::d_printers[language::output::LANG_MAX];
+
+Printer* Printer::makePrinter(OutputLanguage lang) throw() {
+  using namespace CVC4::language::output;
+
+  switch(lang) {
+  case LANG_SMTLIB_V1: // TODO the printer
+    return new printer::smt1::Smt1Printer();
+
+  case LANG_SMTLIB_V2_0:
+    return new printer::smt2::Smt2Printer(printer::smt2::smt2_0_variant);
+
+  case LANG_SMTLIB_V2_5:
+    return new printer::smt2::Smt2Printer();
+
+  case LANG_TPTP:
+    return new printer::tptp::TptpPrinter();
+
+  case LANG_CVC4:
+    return new printer::cvc::CvcPrinter();
+
+  case LANG_Z3STR:
+    return new printer::smt2::Smt2Printer(printer::smt2::z3str_variant);
+
+  case LANG_SYGUS:
+    return new printer::smt2::Smt2Printer(printer::smt2::sygus_variant);
+
+  case LANG_AST:
+    return new printer::ast::AstPrinter();
+
+  case LANG_CVC3:
+    return new printer::cvc::CvcPrinter(/* cvc3-mode = */ true);
+
+  default:
+    Unhandled(lang);
+  }
+}/* Printer::makePrinter() */
+
+
+
+void Printer::toStream(std::ostream& out, const Model& m) const throw() {
+  for(size_t i = 0; i < m.getNumCommands(); ++i) {
+    const Command* cmd = m.getCommand(i);
+    const DeclareFunctionCommand* dfc = dynamic_cast<const DeclareFunctionCommand*>(cmd);
+    if (dfc != NULL && m.isDontCare(dfc->getFunction())) {
+      continue;
+    }
+    toStream(out, m, cmd);
+  }
+}/* Printer::toStream(Model) */
+
+void Printer::toStream(std::ostream& out, const UnsatCore& core) const throw() {
+  std::map<Expr, std::string> names;
+  toStream(out, core, names);
+}/* Printer::toStream(UnsatCore) */
+
+void Printer::toStream(std::ostream& out, const UnsatCore& core, const std::map<Expr, std::string>& names) const throw() {
+  for(UnsatCore::iterator i = core.begin(); i != core.end(); ++i) {
+    AssertCommand cmd(*i);
+    toStream(out, &cmd, -1, false, -1);
+    out << std::endl;
+  }
+}/* Printer::toStream(UnsatCore, std::map<Expr, std::string>) */
+
+Printer* Printer::getPrinter(OutputLanguage lang) throw() {
+  if(lang == language::output::LANG_AUTO) {
+  // Infer the language to use for output.
+  //
+  // Options can be null in certain circumstances (e.g., when printing
+  // the singleton "null" expr.  So we guard against segfault
+  if(not Options::isCurrentNull()) {
+    if(options::outputLanguage.wasSetByUser()) {
+      lang = options::outputLanguage();
+    }
+    if(lang == language::output::LANG_AUTO && options::inputLanguage.wasSetByUser()) {
+      lang = language::toOutputLanguage(options::inputLanguage());
+     }
+   }
+   if(lang == language::output::LANG_AUTO) {
+      lang = language::output::LANG_CVC4; // default
+    }
+  }
+  if(d_printers[lang] == NULL) {
+    d_printers[lang] = makePrinter(lang);
+  }
+  return d_printers[lang];
+}
+
+
+}/* CVC4 namespace */
diff --git a/src/printer/printer.h b/src/printer/printer.h
new file mode 100644
index 0000000..a6156ad
--- /dev/null
+++ b/src/printer/printer.h
@@ -0,0 +1,87 @@
+/*********************                                                        */
+/*! \file printer.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Base of the pretty-printer interface
+ **
+ ** Base of the pretty-printer interface.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__PRINTER__PRINTER_H
+#define __CVC4__PRINTER__PRINTER_H
+
+#include <map>
+#include <string>
+
+#include "expr/node.h"
+#include "options/language.h"
+#include "smt/command.h"
+#include "smt/model.h"
+#include "util/sexpr.h"
+
+namespace CVC4 {
+
+class Printer {
+  /** Printers for each OutputLanguage */
+  static Printer* d_printers[language::output::LANG_MAX];
+
+  /** Make a Printer for a given OutputLanguage */
+  static Printer* makePrinter(OutputLanguage lang) throw();
+
+  // disallow copy, assignment
+  Printer(const Printer&) CVC4_UNDEFINED;
+  Printer& operator=(const Printer&) CVC4_UNDEFINED;
+
+protected:
+  // derived classes can construct, but no one else.
+  Printer() throw() {}
+  virtual ~Printer() {}
+
+  /** write model response to command */
+  virtual void toStream(std::ostream& out, const Model& m, const Command* c) const throw() = 0;
+
+  /** write model response to command using another language printer */
+  void toStreamUsing(OutputLanguage lang, std::ostream& out, const Model& m, const Command* c) const throw() {
+    getPrinter(lang)->toStream(out, m, c);
+  }
+
+public:
+  /** Get the Printer for a given OutputLanguage */
+  static Printer* getPrinter(OutputLanguage lang) throw();
+
+  /** Write a Node out to a stream with this Printer. */
+  virtual void toStream(std::ostream& out, TNode n,
+                        int toDepth, bool types, size_t dag) const throw() = 0;
+
+  /** Write a Command out to a stream with this Printer. */
+  virtual void toStream(std::ostream& out, const Command* c,
+                        int toDepth, bool types, size_t dag) const throw() = 0;
+
+  /** Write a CommandStatus out to a stream with this Printer. */
+  virtual void toStream(std::ostream& out, const CommandStatus* s) const throw() = 0;
+
+
+
+  /** Write a Model out to a stream with this Printer. */
+  virtual void toStream(std::ostream& out, const Model& m) const throw();
+
+  /** Write an UnsatCore out to a stream with this Printer. */
+  virtual void toStream(std::ostream& out, const UnsatCore& core) const throw();
+
+  /** Write an UnsatCore out to a stream with this Printer. */
+  virtual void toStream(std::ostream& out, const UnsatCore& core, const std::map<Expr, std::string>& names) const throw();
+
+};/* class Printer */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PRINTER__PRINTER_H */
diff --git a/src/printer/smt1/smt1_printer.cpp b/src/printer/smt1/smt1_printer.cpp
new file mode 100644
index 0000000..7fde074
--- /dev/null
+++ b/src/printer/smt1/smt1_printer.cpp
@@ -0,0 +1,60 @@
+/*********************                                                        */
+/*! \file smt1_printer.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The pretty-printer interface for the SMT output language
+ **
+ ** The pretty-printer interface for the SMT output language.
+ **/
+#include "printer/smt1/smt1_printer.h"
+
+#include <iostream>
+#include <string>
+#include <typeinfo>
+#include <vector>
+
+#include "expr/expr.h" // for ExprSetDepth etc..
+#include "expr/node_manager.h" // for VarNameAttr
+#include "options/language.h" // for LANG_AST
+#include "smt/command.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace printer {
+namespace smt1 {
+
+void Smt1Printer::toStream(std::ostream& out, TNode n,
+                           int toDepth, bool types, size_t dag) const throw() {
+  n.toStream(out, toDepth, types, dag, language::output::LANG_SMTLIB_V2_5);
+}/* Smt1Printer::toStream() */
+
+void Smt1Printer::toStream(std::ostream& out, const Command* c,
+                           int toDepth, bool types, size_t dag) const throw() {
+  c->toStream(out, toDepth, types, dag, language::output::LANG_SMTLIB_V2_5);
+}/* Smt1Printer::toStream() */
+
+void Smt1Printer::toStream(std::ostream& out, const CommandStatus* s) const throw() {
+  s->toStream(out, language::output::LANG_SMTLIB_V2_5);
+}/* Smt1Printer::toStream() */
+
+
+void Smt1Printer::toStream(std::ostream& out, const Model& m) const throw() {
+  Printer::getPrinter(language::output::LANG_SMTLIB_V2_5)->toStream(out, m);
+}
+
+void Smt1Printer::toStream(std::ostream& out, const Model& m, const Command* c) const throw() {
+  // shouldn't be called; only the non-Command* version above should be
+  Unreachable();
+}
+
+}/* CVC4::printer::smt1 namespace */
+}/* CVC4::printer namespace */
+}/* CVC4 namespace */
diff --git a/src/printer/smt1/smt1_printer.h b/src/printer/smt1/smt1_printer.h
new file mode 100644
index 0000000..d8101d9
--- /dev/null
+++ b/src/printer/smt1/smt1_printer.h
@@ -0,0 +1,46 @@
+/*********************                                                        */
+/*! \file smt1_printer.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The pretty-printer interface for the SMT output language
+ **
+ ** The pretty-printer interface for the SMT output language.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__PRINTER__SMT1_PRINTER_H
+#define __CVC4__PRINTER__SMT1_PRINTER_H
+
+#include <iostream>
+
+#include "printer/printer.h"
+
+namespace CVC4 {
+namespace printer {
+namespace smt1 {
+
+class Smt1Printer : public CVC4::Printer {
+  void toStream(std::ostream& out, const Model& m, const Command* c) const throw();
+public:
+  using CVC4::Printer::toStream;
+  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();
+  void toStream(std::ostream& out, const CommandStatus* s) const throw();
+  void toStream(std::ostream& out, const SExpr& sexpr) const throw();
+  void toStream(std::ostream& out, const Model& m) const throw();
+};/* class Smt1Printer */
+
+}/* CVC4::printer::smt1 namespace */
+}/* CVC4::printer namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PRINTER__SMT1_PRINTER_H */
+
diff --git a/src/printer/smt2/smt2_printer.cpp b/src/printer/smt2/smt2_printer.cpp
new file mode 100644
index 0000000..2b7da63
--- /dev/null
+++ b/src/printer/smt2/smt2_printer.cpp
@@ -0,0 +1,1587 @@
+/*********************                                                        */
+/*! \file smt2_printer.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Martin Brain
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The pretty-printer interface for the SMT2 output language
+ **
+ ** The pretty-printer interface for the SMT2 output language.
+ **/
+
+#include "printer/smt2/smt2_printer.h"
+
+#include <iostream>
+#include <string>
+#include <typeinfo>
+#include <vector>
+
+#include "expr/node_manager_attributes.h"
+#include "options/language.h"
+#include "options/smt_options.h"
+#include "printer/dagification_visitor.h"
+#include "smt/smt_engine.h"
+#include "smt_util/boolean_simplification.h"
+#include "smt_util/node_visitor.h"
+#include "theory/arrays/theory_arrays_rewriter.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/substitutions.h"
+#include "theory/theory_model.h"
+#include "util/smt2_quote_string.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace printer {
+namespace smt2 {
+
+static OutputLanguage variantToLanguage(Variant v) throw();
+
+static string smtKindString(Kind k) throw();
+
+static void printBvParameterizedOp(std::ostream& out, TNode n) throw();
+static void printFpParameterizedOp(std::ostream& out, TNode n) throw();
+
+static void toStreamRational(std::ostream& out, const Rational& r, bool decimal) throw();
+
+void Smt2Printer::toStream(std::ostream& out, TNode n,
+                           int toDepth, bool types, size_t dag) const throw() {
+  if(dag != 0) {
+    DagificationVisitor dv(dag);
+    NodeVisitor<DagificationVisitor> visitor;
+    visitor.run(dv, n);
+    const theory::SubstitutionMap& lets = dv.getLets();
+    if(!lets.empty()) {
+      theory::SubstitutionMap::const_iterator i = lets.begin();
+      theory::SubstitutionMap::const_iterator i_end = lets.end();
+      for(; i != i_end; ++ i) {
+        out << "(let ((";
+        toStream(out, (*i).second, toDepth, types);
+        out << ' ';
+        toStream(out, (*i).first, toDepth, types);
+        out << ")) ";
+      }
+    }
+    Node body = dv.getDagifiedBody();
+    toStream(out, body, toDepth, types);
+    if(!lets.empty()) {
+      theory::SubstitutionMap::const_iterator i = lets.begin();
+      theory::SubstitutionMap::const_iterator i_end = lets.end();
+      for(; i != i_end; ++ i) {
+        out << ")";
+      }
+    }
+  } else {
+    toStream(out, n, toDepth, types);
+  }
+}
+
+static std::string maybeQuoteSymbol(const std::string& s) {
+  // this is the set of SMT-LIBv2 permitted characters in "simple" (non-quoted) symbols
+  if(s.find_first_not_of("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789~!@$%^&*_-+=<>.?/") != string::npos) {
+    // need to quote it
+    stringstream ss;
+    ss << '|' << s << '|';
+    return ss.str();
+  }
+  return s;
+}
+
+static bool stringifyRegexp(Node n, stringstream& ss) {
+  if(n.getKind() == kind::STRING_TO_REGEXP) {
+    ss << n[0].getConst<String>().toString();
+  } else if(n.getKind() == kind::REGEXP_CONCAT) {
+    for(unsigned i = 0; i < n.getNumChildren(); ++i) {
+      if(!stringifyRegexp(n[i], ss)) {
+        return false;
+      }
+    }
+  } else {
+    return false;
+  }
+  return true;
+}
+
+void Smt2Printer::toStream(std::ostream& out, TNode n,
+                           int toDepth, bool types) const throw() {
+  // null
+  if(n.getKind() == kind::NULL_EXPR) {
+    out << "null";
+    return;
+  }
+
+  // variable
+  if(n.isVar()) {
+    if( n.getKind() == kind::SEP_NIL ){
+      out << "(as sep.nil " << n.getType() << ")";
+      return;
+    }else if( n.getKind() == kind::UNIVERSE_SET ){
+      out << "(as univset " << n.getType() << ")";
+      return;
+    }else{
+      string s;
+      if(n.getAttribute(expr::VarNameAttr(), s)) {
+        out << maybeQuoteSymbol(s);
+      } else {
+        if(n.getKind() == kind::VARIABLE) {
+          out << "var_";
+        } else {
+          out << n.getKind() << '_';
+        }
+        out << n.getId();
+      }
+      if(types) {
+        // print the whole type, but not *its* type
+        out << ":";
+        n.getType().toStream(out, language::output::LANG_SMTLIB_V2_5);
+      }
+    }
+
+    return;
+  }
+
+  // constant
+  if(n.getMetaKind() == kind::metakind::CONSTANT) {
+    switch(n.getKind()) {
+    case kind::TYPE_CONSTANT:
+      switch(n.getConst<TypeConstant>()) {
+      case BOOLEAN_TYPE: out << "Bool"; break;
+      case REAL_TYPE: out << "Real"; break;
+      case INTEGER_TYPE: out << "Int"; break;
+      case STRING_TYPE: out << "String"; break;
+      case ROUNDINGMODE_TYPE: out << "RoundingMode"; break;
+      default:
+        // fall back on whatever operator<< does on underlying type; we
+        // might luck out and be SMT-LIB v2 compliant
+        kind::metakind::NodeValueConstPrinter::toStream(out, n);
+      }
+      break;
+    case kind::BITVECTOR_TYPE:
+      if(d_variant == sygus_variant ){
+        out << "(BitVec " << n.getConst<BitVectorSize>().size << ")";
+      }else{
+        out << "(_ BitVec " << n.getConst<BitVectorSize>().size << ")";
+      }
+      break;
+    case kind::FLOATINGPOINT_TYPE:
+      out << "(_ FloatingPoint "
+          << n.getConst<FloatingPointSize>().exponent() << " "
+          << n.getConst<FloatingPointSize>().significand()
+          << ")";
+      break;
+    case kind::CONST_BITVECTOR: {
+      const BitVector& bv = n.getConst<BitVector>();
+      const Integer& x = bv.getValue();
+      unsigned n = bv.getSize();
+      if(d_variant == sygus_variant ){
+        out << "#b" << bv.toString();
+      }else{
+        out << "(_ ";
+        out << "bv" << x <<" " << n;
+        out << ")";
+      }
+
+      // //out << "#b";
+
+      // while(n-- > 0) {
+      //   out << (x.testBit(n) ? '1' : '0');
+      // }
+      break;
+    }
+    case kind::CONST_FLOATINGPOINT:
+      out << n.getConst<FloatingPoint>().getLiteral();
+      break;
+    case kind::CONST_ROUNDINGMODE:
+      switch (n.getConst<RoundingMode>()) {
+      case roundNearestTiesToEven : out << "roundNearestTiesToEven"; break;
+      case roundNearestTiesToAway : out << "roundNearestTiesToAway"; break;
+      case roundTowardPositive : out << "roundTowardPositive"; break;
+      case roundTowardNegative : out << "roundTowardNegative"; break;
+      case roundTowardZero : out << "roundTowardZero"; break;
+      default :
+        Unreachable("Invalid value of rounding mode constant (%d)",n.getConst<RoundingMode>());
+      }
+      break;
+    case kind::CONST_BOOLEAN:
+      // the default would print "1" or "0" for bool, that's not correct
+      // for our purposes
+      out << (n.getConst<bool>() ? "true" : "false");
+      break;
+    case kind::BUILTIN:
+      out << smtKindString(n.getConst<Kind>());
+      break;
+    case kind::CHAIN_OP:
+      out << smtKindString(n.getConst<Chain>().getOperator());
+      break;
+    case kind::CONST_RATIONAL: {
+      const Rational& r = n.getConst<Rational>();
+      if(d_variant == sygus_variant ){
+        if(r < 0) {
+          out << "-" << -r;
+        }else{
+          toStreamRational(out, r, false);
+        }
+      }else{
+        toStreamRational(out, r, false);
+      }
+      // Rational r = n.getConst<Rational>();
+      // if(r < 0) {
+      //   if(r.isIntegral()) {
+      //     out << "(- " << -r << ')';
+      //   } else {
+      //     out << "(- (/ " << (-r).getNumerator() << ' ' << (-r).getDenominator() << "))";
+      //   }
+      // } else {
+      //   if(r.isIntegral()) {
+      //     out << r;
+      //   } else {
+      //     out << "(/ " << r.getNumerator() << ' ' << r.getDenominator() << ')';
+      //   }
+      // }
+      break;
+    }
+
+    case kind::CONST_STRING: {
+      //const std::vector<unsigned int>& s = n.getConst<String>().getVec();
+      std::string s = n.getConst<String>().toString();
+      out << '"';
+      for(size_t i = 0; i < s.size(); ++i) {
+        //char c = String::convertUnsignedIntToChar(s[i]);
+        char c = s[i];
+        if(c == '"') {
+          if(d_variant == smt2_0_variant) {
+            out << "\\\"";
+          } else {
+            out << "\"\"";
+          }
+        } else {
+          out << c;
+        }
+      }
+      out << '"';
+      break;
+    }
+
+    case kind::STORE_ALL: {
+      ArrayStoreAll asa = n.getConst<ArrayStoreAll>();
+      out << "((as const " << asa.getType() << ") " << asa.getExpr() << ")";
+      break;
+    }
+
+    case kind::SUBRANGE_TYPE: {
+      const SubrangeBounds& bounds = n.getConst<SubrangeBounds>();
+      // No way to represent subranges in SMT-LIBv2; this is inspired
+      // by yices format (but isn't identical to it).
+      out << "(subrange " << bounds.lower << ' ' << bounds.upper << ')';
+      break;
+    }
+    case kind::SUBTYPE_TYPE:
+      // No way to represent predicate subtypes in SMT-LIBv2; this is
+      // inspired by yices format (but isn't identical to it).
+      out << "(subtype " << n.getConst<Predicate>() << ')';
+      break;
+
+    case kind::DATATYPE_TYPE:
+      {
+        const Datatype & dt = (NodeManager::currentNM()->getDatatypeForIndex( n.getConst< DatatypeIndexConstant >().getIndex() ));
+        out << maybeQuoteSymbol(dt.getName());
+      }
+      break;
+
+    case kind::UNINTERPRETED_CONSTANT: {
+      const UninterpretedConstant& uc = n.getConst<UninterpretedConstant>();
+      out << '@' << uc;
+      break;
+    }
+
+    case kind::EMPTYSET:
+      out << "(as emptyset " << n.getConst<EmptySet>().getType() << ")";
+      break;
+  
+    default:
+      // fall back on whatever operator<< does on underlying type; we
+      // might luck out and be SMT-LIB v2 compliant
+      kind::metakind::NodeValueConstPrinter::toStream(out, n);
+    }
+
+    return;
+  }
+
+  if(n.getKind() == kind::SORT_TYPE) {
+    string name;
+    if(n.getNumChildren() != 0) {
+      out << '(';
+    }
+    if(n.getAttribute(expr::VarNameAttr(), name)) {
+      out << maybeQuoteSymbol(name);
+    }
+    if(n.getNumChildren() != 0) {
+      for(unsigned i = 0; i < n.getNumChildren(); ++i) {
+	out << ' ';
+	toStream(out, n[i], toDepth, types);
+      }
+      out << ')';
+    }
+    return;
+  }
+  
+  bool stillNeedToPrintParams = true;
+  bool forceBinary = false; // force N-ary to binary when outputing children
+  // operator
+  if(n.getNumChildren() != 0 &&
+     n.getKind() != kind::INST_PATTERN_LIST &&
+     n.getKind() != kind::APPLY_TYPE_ASCRIPTION) {
+    out << '(';
+  }
+  switch(Kind k = n.getKind()) {
+    // builtin theory
+  case kind::APPLY: break;
+  case kind::EQUAL:
+  case kind::DISTINCT: out << smtKindString(k) << " "; break;
+  case kind::CHAIN: break;
+  case kind::FUNCTION_TYPE:
+    for(size_t i = 0; i < n.getNumChildren() - 1; ++i) {
+      if(i > 0) {
+        out << ' ';
+      }
+      out << n[i];
+    }
+    out << ") " << n[n.getNumChildren() - 1];
+    return;
+  case kind::SEXPR: break;
+
+    // bool theory
+  case kind::NOT:
+  case kind::AND:
+  case kind::IMPLIES:
+  case kind::OR:
+  case kind::XOR:
+  case kind::ITE: out << smtKindString(k) << " "; break;
+
+    // uf theory
+  case kind::APPLY_UF: break;
+
+    // arith theory
+  case kind::PLUS:
+  case kind::MULT:
+  case kind::MINUS:
+  case kind::UMINUS:
+  case kind::LT:
+  case kind::LEQ:
+  case kind::GT:
+  case kind::GEQ:
+  case kind::DIVISION:
+  case kind::DIVISION_TOTAL:
+  case kind::INTS_DIVISION:
+  case kind::INTS_DIVISION_TOTAL:
+  case kind::INTS_MODULUS:
+  case kind::INTS_MODULUS_TOTAL:
+  case kind::ABS:
+  case kind::IS_INTEGER:
+  case kind::TO_INTEGER:
+  case kind::TO_REAL:
+  case kind::POW: out << smtKindString(k) << " "; break;
+
+  case kind::DIVISIBLE:
+    out << "(_ divisible " << n.getOperator().getConst<Divisible>().k << ")";
+    stillNeedToPrintParams = false;
+    break;
+
+    // arrays theory
+  case kind::SELECT:
+  case kind::STORE:
+  case kind::PARTIAL_SELECT_0:
+  case kind::PARTIAL_SELECT_1:
+  case kind::ARRAY_TYPE: out << smtKindString(k) << " "; break;
+
+    // string theory
+  case kind::STRING_CONCAT:
+    if(d_variant == z3str_variant) {
+      out << "Concat ";
+      for(unsigned i = 0; i < n.getNumChildren(); ++i) {
+        toStream(out, n[i], -1, types);
+        if(i + 1 < n.getNumChildren()) {
+          out << ' ';
+        }
+        if(i + 2 < n.getNumChildren()) {
+          out << "(Concat ";
+        }
+      }
+      for(unsigned i = 0; i < n.getNumChildren() - 1; ++i) {
+        out << ")";
+      }
+      return;
+    }
+    out << "str.++ ";
+    break;
+  case kind::STRING_IN_REGEXP: {
+    stringstream ss;
+    if(d_variant == z3str_variant && stringifyRegexp(n[1], ss)) {
+      out << "= ";
+      toStream(out, n[0], -1, types);
+      out << " ";
+      Node str = NodeManager::currentNM()->mkConst(String(ss.str()));
+      toStream(out, str, -1, types);
+      out << ")";
+      return;
+    }
+    out << "str.in.re ";
+    break;
+  }
+  case kind::STRING_LENGTH: out << (d_variant == z3str_variant ? "Length " : "str.len "); break;
+  case kind::STRING_SUBSTR: out << "str.substr "; break;
+  case kind::STRING_CHARAT: out << "str.at "; break;
+  case kind::STRING_STRCTN: out << "str.contains "; break;
+  case kind::STRING_STRIDOF: out << "str.indexof "; break;
+  case kind::STRING_STRREPL: out << "str.replace "; break;
+  case kind::STRING_PREFIX: out << "str.prefixof "; break;
+  case kind::STRING_SUFFIX: out << "str.suffixof "; break;
+  case kind::STRING_ITOS: out << "int.to.str "; break;
+  case kind::STRING_STOI: out << "str.to.int "; break;
+  case kind::STRING_U16TOS: out << "u16.to.str "; break;
+  case kind::STRING_STOU16: out << "str.to.u16 "; break;
+  case kind::STRING_U32TOS: out << "u32.to.str "; break;
+  case kind::STRING_STOU32: out << "str.to.u32 "; break;
+  case kind::STRING_TO_REGEXP: out << "str.to.re "; break;
+  case kind::REGEXP_CONCAT: out << "re.++ "; break;
+  case kind::REGEXP_UNION: out << "re.union "; break;
+  case kind::REGEXP_INTER: out << "re.inter "; break;
+  case kind::REGEXP_STAR: out << "re.* "; break;
+  case kind::REGEXP_PLUS: out << "re.+ "; break;
+  case kind::REGEXP_OPT: out << "re.opt "; break;
+  case kind::REGEXP_RANGE: out << "re.range "; break;
+  case kind::REGEXP_LOOP: out << "re.loop "; break;
+  case kind::REGEXP_EMPTY: out << "re.nostr "; break;
+  case kind::REGEXP_SIGMA: out << "re.allchar "; break;
+
+  case kind::CARDINALITY_CONSTRAINT: out << "fmf.card "; break;
+  case kind::CARDINALITY_VALUE: out << "fmf.card.val "; break;
+
+    // bv theory
+  case kind::BITVECTOR_CONCAT: out << "concat "; forceBinary = true; break;
+  case kind::BITVECTOR_AND: out << "bvand "; forceBinary = true; break;
+  case kind::BITVECTOR_OR: out << "bvor "; forceBinary = true; break;
+  case kind::BITVECTOR_XOR: out << "bvxor "; forceBinary = true; break;
+  case kind::BITVECTOR_NOT: out << "bvnot "; break;
+  case kind::BITVECTOR_NAND: out << "bvnand "; break;
+  case kind::BITVECTOR_NOR: out << "bvnor "; break;
+  case kind::BITVECTOR_XNOR: out << "bvxnor "; break;
+  case kind::BITVECTOR_COMP: out << "bvcomp "; break;
+  case kind::BITVECTOR_MULT: out << "bvmul "; forceBinary = true; break;
+  case kind::BITVECTOR_PLUS: out << "bvadd "; forceBinary = true; break;
+  case kind::BITVECTOR_SUB: out << "bvsub "; break;
+  case kind::BITVECTOR_NEG: out << "bvneg "; break;
+  case kind::BITVECTOR_UDIV: out << "bvudiv "; break;
+  case kind::BITVECTOR_UDIV_TOTAL: out << "bvudiv_total "; break;
+  case kind::BITVECTOR_UREM: out << "bvurem "; break;
+  case kind::BITVECTOR_UREM_TOTAL: out << "bvurem_total "; break;
+  case kind::BITVECTOR_SDIV: out << "bvsdiv "; break;
+  case kind::BITVECTOR_SREM: out << "bvsrem "; break;
+  case kind::BITVECTOR_SMOD: out << "bvsmod "; break;
+  case kind::BITVECTOR_SHL: out << "bvshl "; break;
+  case kind::BITVECTOR_LSHR: out << "bvlshr "; break;
+  case kind::BITVECTOR_ASHR: out << "bvashr "; break;
+  case kind::BITVECTOR_ULT: out << "bvult "; break;
+  case kind::BITVECTOR_ULE: out << "bvule "; break;
+  case kind::BITVECTOR_UGT: out << "bvugt "; break;
+  case kind::BITVECTOR_UGE: out << "bvuge "; break;
+  case kind::BITVECTOR_SLT: out << "bvslt "; break;
+  case kind::BITVECTOR_SLE: out << "bvsle "; break;
+  case kind::BITVECTOR_SGT: out << "bvsgt "; break;
+  case kind::BITVECTOR_SGE: out << "bvsge "; break;
+  case kind::BITVECTOR_TO_NAT: out << "bv2nat "; break;
+  case kind::BITVECTOR_REDOR: out << "bvredor "; break;
+  case kind::BITVECTOR_REDAND: out << "bvredand "; break;
+
+  case kind::BITVECTOR_EXTRACT:
+  case kind::BITVECTOR_REPEAT:
+  case kind::BITVECTOR_ZERO_EXTEND:
+  case kind::BITVECTOR_SIGN_EXTEND:
+  case kind::BITVECTOR_ROTATE_LEFT:
+  case kind::BITVECTOR_ROTATE_RIGHT:
+  case kind::INT_TO_BITVECTOR:
+    printBvParameterizedOp(out, n);
+    out << ' ';
+    stillNeedToPrintParams = false;
+    break;
+
+    // sets
+  case kind::UNION:
+  case kind::INTERSECTION:
+  case kind::SETMINUS:
+  case kind::SUBSET:
+  case kind::MEMBER:
+  case kind::SET_TYPE:
+  case kind::SINGLETON: 
+  case kind::COMPLEMENT:out << smtKindString(k) << " "; break;
+
+    // fp theory
+  case kind::FLOATINGPOINT_FP:
+  case kind::FLOATINGPOINT_EQ:
+  case kind::FLOATINGPOINT_ABS:
+  case kind::FLOATINGPOINT_NEG:
+  case kind::FLOATINGPOINT_PLUS:
+  case kind::FLOATINGPOINT_SUB:
+  case kind::FLOATINGPOINT_MULT:
+  case kind::FLOATINGPOINT_DIV:
+  case kind::FLOATINGPOINT_FMA:
+  case kind::FLOATINGPOINT_SQRT:
+  case kind::FLOATINGPOINT_REM:
+  case kind::FLOATINGPOINT_RTI:
+  case kind::FLOATINGPOINT_MIN:
+  case kind::FLOATINGPOINT_MAX:
+  case kind::FLOATINGPOINT_LEQ:
+  case kind::FLOATINGPOINT_LT:
+  case kind::FLOATINGPOINT_GEQ:
+  case kind::FLOATINGPOINT_GT:
+  case kind::FLOATINGPOINT_ISN:
+  case kind::FLOATINGPOINT_ISSN:
+  case kind::FLOATINGPOINT_ISZ:
+  case kind::FLOATINGPOINT_ISINF:
+  case kind::FLOATINGPOINT_ISNAN:
+  case kind::FLOATINGPOINT_ISNEG:
+  case kind::FLOATINGPOINT_ISPOS:
+  case kind::FLOATINGPOINT_TO_REAL:
+    out << smtKindString(k) << ' '; break;
+
+  case kind::FLOATINGPOINT_TO_FP_IEEE_BITVECTOR:
+  case kind::FLOATINGPOINT_TO_FP_FLOATINGPOINT:
+  case kind::FLOATINGPOINT_TO_FP_REAL:
+  case kind::FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR:
+  case kind::FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR:
+  case kind::FLOATINGPOINT_TO_FP_GENERIC:
+  case kind::FLOATINGPOINT_TO_UBV:
+  case kind::FLOATINGPOINT_TO_SBV:
+    printFpParameterizedOp(out, n);
+    out << ' ';
+    stillNeedToPrintParams = false;
+    break;
+
+    // datatypes
+  case kind::APPLY_TYPE_ASCRIPTION: {
+      TypeNode t = TypeNode::fromType(n.getOperator().getConst<AscriptionType>().getType());
+      if(t.getKind() == kind::TYPE_CONSTANT &&
+         t.getConst<TypeConstant>() == REAL_TYPE &&
+         n[0].getType().isInteger()) {
+        // Special case, in model output integer constants that should be
+        // Real-sorted are wrapped in a type ascription.  Handle that here.
+
+        // Note: This is Tim making a guess about Morgan's Code.
+        Assert(n[0].getKind() == kind::CONST_RATIONAL);
+        toStreamRational(out, n[0].getConst<Rational>(), true);
+
+        //toStream(out, n[0], -1, false);
+        //out << ".0";
+
+        return;
+      }
+      out << "(as ";
+      toStream(out, n[0], toDepth < 0 ? toDepth : toDepth - 1, types);
+      out << ' ' << (t.isFunctionLike() ? t.getRangeType() : t) << ')';
+      return;
+    }
+    break;
+  case kind::APPLY_CONSTRUCTOR:
+  case kind::APPLY_TESTER:
+  case kind::APPLY_SELECTOR:
+  case kind::APPLY_SELECTOR_TOTAL:
+  case kind::PARAMETRIC_DATATYPE:
+    break;
+    
+  //separation
+  case kind::SEP_EMP:
+  case kind::SEP_PTO:
+  case kind::SEP_STAR:
+  case kind::SEP_WAND:out << smtKindString(k) << " "; break;
+
+    // quantifiers
+  case kind::FORALL:
+  case kind::EXISTS:
+    if( k==kind::FORALL ){
+      out << "forall ";
+    }else{
+      out << "exists ";
+    }
+    for( unsigned i=0; i<2; i++) {
+      out << n[i] << " ";
+      if( i==0 && n.getNumChildren()==3 ){
+        out << "(! ";
+      }
+    }
+    if( n.getNumChildren()==3 ){
+      out << n[2];
+      out << ")";
+    }
+    out << ")";
+    return;
+    break;
+  case kind::BOUND_VAR_LIST:
+    // the left parenthesis is already printed (before the switch)
+    for(TNode::iterator i = n.begin(), iend = n.end();
+        i != iend; ) {
+      out << '(';
+      toStream(out, *i, toDepth < 0 ? toDepth : toDepth - 1, types, 0);
+      out << ' ';
+      out << (*i).getType();
+      // The following code do stange things
+      // (*i).getType().toStream(out, toDepth < 0 ? toDepth : toDepth - 1,
+      //                         false, language::output::LANG_SMTLIB_V2_5);
+      out << ')';
+      if(++i != iend) {
+        out << ' ';
+      }
+    }
+    out << ')';
+    return;
+  case kind::INST_PATTERN:
+    break;
+  case kind::INST_PATTERN_LIST:
+    for(unsigned i=0; i<n.getNumChildren(); i++) {
+      if( n[i].getKind()==kind::INST_ATTRIBUTE ){
+        if( n[i][0].getAttribute(theory::FunDefAttribute()) ){
+          out << ":fun-def";
+        }
+      }else{
+        out << ":pattern " << n[i];
+      }
+    }
+    return;
+    break;
+
+  default:
+    // fall back on however the kind prints itself; this probably
+    // won't be SMT-LIB v2 compliant, but it will be clear from the
+    // output that support for the kind needs to be added here.
+    out << n.getKind() << ' ';
+  }
+  if( n.getMetaKind() == kind::metakind::PARAMETERIZED &&
+      stillNeedToPrintParams ) {
+    if(toDepth != 0) {
+      if( d_variant==sygus_variant && n.getKind()==kind::APPLY_CONSTRUCTOR ){
+        std::stringstream ss;
+        toStream(ss, n.getOperator(), toDepth < 0 ? toDepth : toDepth - 1, types);
+        std::string tmp = ss.str();
+        size_t pos = 0;
+        if((pos = tmp.find("__Enum__", pos)) != std::string::npos){
+           tmp.replace(pos, 8, "::");
+        }
+        out << tmp;
+      }else if( n.getKind()==kind::APPLY_TESTER ){
+        unsigned cindex = Datatype::indexOf(n.getOperator().toExpr());
+        const Datatype& dt = Datatype::datatypeOf(n.getOperator().toExpr());
+        out << "is-";
+        toStream(out, Node::fromExpr(dt[cindex].getConstructor()), toDepth < 0 ? toDepth : toDepth - 1, types);
+      }else{
+        toStream(out, n.getOperator(), toDepth < 0 ? toDepth : toDepth - 1, types);
+      }
+    } else {
+      out << "(...)";
+    }
+    if(n.getNumChildren() > 0) {
+      out << ' ';
+    }
+  }
+  stringstream parens;
+  for(size_t i = 0, c = 1; i < n.getNumChildren(); ) {
+    if(toDepth != 0) {
+      toStream(out, n[i], toDepth < 0 ? toDepth : toDepth - c, types);
+    } else {
+      out << "(...)";
+    }
+    if(++i < n.getNumChildren()) {
+      if(forceBinary && i < n.getNumChildren() - 1) {
+        // not going to work properly for parameterized kinds!
+        Assert(n.getMetaKind() != kind::metakind::PARAMETERIZED);
+        out << " (" << smtKindString(n.getKind()) << ' ';
+        parens << ')';
+        ++c;
+      } else {
+        out << ' ';
+      }
+    }
+  }
+  if(n.getNumChildren() != 0) {
+    out << parens.str() << ')';
+  }
+}/* Smt2Printer::toStream(TNode) */
+
+static string smtKindString(Kind k) throw() {
+  switch(k) {
+    // builtin theory
+  case kind::APPLY: break;
+  case kind::EQUAL: return "=";
+  case kind::DISTINCT: return "distinct";
+  case kind::CHAIN: break;
+  case kind::SEXPR: break;
+
+    // bool theory
+  case kind::NOT: return "not";
+  case kind::AND: return "and";
+  case kind::IMPLIES: return "=>";
+  case kind::OR: return "or";
+  case kind::XOR: return "xor";
+  case kind::ITE: return "ite";
+
+    // uf theory
+  case kind::APPLY_UF: break;
+
+    // arith theory
+  case kind::PLUS: return "+";
+  case kind::MULT: return "*";
+  case kind::MINUS: return "-";
+  case kind::UMINUS: return "-";
+  case kind::LT: return "<";
+  case kind::LEQ: return "<=";
+  case kind::GT: return ">";
+  case kind::GEQ: return ">=";
+  case kind::DIVISION:
+  case kind::DIVISION_TOTAL: return "/";
+  case kind::INTS_DIVISION: return "div";
+  case kind::INTS_DIVISION_TOTAL: return "INTS_DIVISION_TOTAL";
+  case kind::INTS_MODULUS: return "mod";
+  case kind::INTS_MODULUS_TOTAL: return "INTS_MODULUS_TOTAL";
+  case kind::ABS: return "abs";
+  case kind::IS_INTEGER: return "is_int";
+  case kind::TO_INTEGER: return "to_int";
+  case kind::TO_REAL: return "to_real";
+  case kind::POW: return "^";
+
+    // arrays theory
+  case kind::SELECT: return "select";
+  case kind::STORE: return "store";
+  case kind::ARRAY_TYPE: return "Array";
+  case kind::PARTIAL_SELECT_0: return "partial_select_0";
+  case kind::PARTIAL_SELECT_1: return "partial_select_1";
+
+    // bv theory
+  case kind::BITVECTOR_CONCAT: return "concat";
+  case kind::BITVECTOR_AND: return "bvand";
+  case kind::BITVECTOR_OR: return "bvor";
+  case kind::BITVECTOR_XOR: return "bvxor";
+  case kind::BITVECTOR_NOT: return "bvnot";
+  case kind::BITVECTOR_NAND: return "bvnand";
+  case kind::BITVECTOR_NOR: return "bvnor";
+  case kind::BITVECTOR_XNOR: return "bvxnor";
+  case kind::BITVECTOR_COMP: return "bvcomp";
+  case kind::BITVECTOR_MULT: return "bvmul";
+  case kind::BITVECTOR_PLUS: return "bvadd";
+  case kind::BITVECTOR_SUB: return "bvsub";
+  case kind::BITVECTOR_NEG: return "bvneg";
+  case kind::BITVECTOR_UDIV_TOTAL:
+  case kind::BITVECTOR_UDIV: return "bvudiv";
+  case kind::BITVECTOR_UREM: return "bvurem";
+  case kind::BITVECTOR_SDIV: return "bvsdiv";
+  case kind::BITVECTOR_SREM: return "bvsrem";
+  case kind::BITVECTOR_SMOD: return "bvsmod";
+  case kind::BITVECTOR_SHL: return "bvshl";
+  case kind::BITVECTOR_LSHR: return "bvlshr";
+  case kind::BITVECTOR_ASHR: return "bvashr";
+  case kind::BITVECTOR_ULT: return "bvult";
+  case kind::BITVECTOR_ULE: return "bvule";
+  case kind::BITVECTOR_UGT: return "bvugt";
+  case kind::BITVECTOR_UGE: return "bvuge";
+  case kind::BITVECTOR_SLT: return "bvslt";
+  case kind::BITVECTOR_SLE: return "bvsle";
+  case kind::BITVECTOR_SGT: return "bvsgt";
+  case kind::BITVECTOR_SGE: return "bvsge";
+  case kind::BITVECTOR_REDOR: return "bvredor";
+  case kind::BITVECTOR_REDAND: return "bvredand";
+
+  case kind::BITVECTOR_EXTRACT: return "extract";
+  case kind::BITVECTOR_REPEAT: return "repeat";
+  case kind::BITVECTOR_ZERO_EXTEND: return "zero_extend";
+  case kind::BITVECTOR_SIGN_EXTEND: return "sign_extend";
+  case kind::BITVECTOR_ROTATE_LEFT: return "rotate_left";
+  case kind::BITVECTOR_ROTATE_RIGHT: return "rotate_right";
+
+  case kind::UNION: return "union";
+  case kind::INTERSECTION: return "intersection";
+  case kind::SETMINUS: return "setminus";
+  case kind::SUBSET: return "subset";
+  case kind::MEMBER: return "member";
+  case kind::SET_TYPE: return "Set";
+  case kind::SINGLETON: return "singleton";
+  case kind::INSERT: return "insert";
+  case kind::COMPLEMENT: return "complement";
+
+    // fp theory
+  case kind::FLOATINGPOINT_FP: return "fp";
+  case kind::FLOATINGPOINT_EQ: return "fp.eq";
+  case kind::FLOATINGPOINT_ABS: return "fp.abs";
+  case kind::FLOATINGPOINT_NEG: return "fp.neg";
+  case kind::FLOATINGPOINT_PLUS: return "fp.add";
+  case kind::FLOATINGPOINT_SUB: return "fp.sub";
+  case kind::FLOATINGPOINT_MULT: return "fp.mul";
+  case kind::FLOATINGPOINT_DIV: return "fp.div";
+  case kind::FLOATINGPOINT_FMA: return "fp.fma";
+  case kind::FLOATINGPOINT_SQRT: return "fp.sqrt";
+  case kind::FLOATINGPOINT_REM: return "fp.rem";
+  case kind::FLOATINGPOINT_RTI: return "fp.roundToIntegral";
+  case kind::FLOATINGPOINT_MIN: return "fp.min";
+  case kind::FLOATINGPOINT_MAX: return "fp.max";
+
+  case kind::FLOATINGPOINT_LEQ: return "fp.leq";
+  case kind::FLOATINGPOINT_LT: return "fp.lt";
+  case kind::FLOATINGPOINT_GEQ: return "fp.geq";
+  case kind::FLOATINGPOINT_GT: return "fp.gt";
+
+  case kind::FLOATINGPOINT_ISN: return "fp.isNormal";
+  case kind::FLOATINGPOINT_ISSN: return "fp.isSubnormal";
+  case kind::FLOATINGPOINT_ISZ: return "fp.isZero";
+  case kind::FLOATINGPOINT_ISINF: return "fp.isInfinite";
+  case kind::FLOATINGPOINT_ISNAN: return "fp.isNaN";
+  case kind::FLOATINGPOINT_ISNEG: return "fp.isNegative";
+  case kind::FLOATINGPOINT_ISPOS: return "fp.isPositive";
+
+  case kind::FLOATINGPOINT_TO_FP_IEEE_BITVECTOR: return "to_fp";
+  case kind::FLOATINGPOINT_TO_FP_FLOATINGPOINT: return "to_fp";
+  case kind::FLOATINGPOINT_TO_FP_REAL: return "to_fp";
+  case kind::FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR: return "to_fp";
+  case kind::FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR: return "to_fp_unsigned";
+  case kind::FLOATINGPOINT_TO_FP_GENERIC: return "to_fp_unsigned";
+  case kind::FLOATINGPOINT_TO_UBV: return "fp.to_ubv";
+  case kind::FLOATINGPOINT_TO_SBV: return "fp.to_sbv";
+  case kind::FLOATINGPOINT_TO_REAL: return "fp.to_real";
+
+  //string theory
+  case kind::STRING_CONCAT: return "str.++";
+  case kind::STRING_LENGTH: return "str.len";
+  case kind::STRING_SUBSTR: return "str.substr" ;
+  case kind::STRING_STRCTN: return "str.contains" ;
+  case kind::STRING_CHARAT: return "str.at" ;
+  case kind::STRING_STRIDOF: return "str.indexof" ;
+  case kind::STRING_STRREPL: return "str.replace" ;
+  case kind::STRING_PREFIX: return "str.prefixof" ;
+  case kind::STRING_SUFFIX: return "str.suffixof" ;
+  case kind::STRING_ITOS: return "int.to.str" ;
+  case kind::STRING_STOI: return "str.to.int" ;
+  case kind::STRING_U16TOS: return "u16.to.str" ;
+  case kind::STRING_STOU16: return "str.to.u16" ;
+  case kind::STRING_U32TOS: return "u32.to.str" ;
+  case kind::STRING_STOU32: return "str.to.u32" ;
+  case kind::STRING_IN_REGEXP: return "str.in.re";
+  case kind::STRING_TO_REGEXP: return "str.to.re";
+  case kind::REGEXP_CONCAT: return "re.++";
+  case kind::REGEXP_UNION: return "re.union";
+  case kind::REGEXP_INTER: return "re.inter";
+  case kind::REGEXP_STAR: return "re.*";
+  case kind::REGEXP_PLUS: return "re.+";
+  case kind::REGEXP_OPT: return "re.opt";
+  case kind::REGEXP_RANGE: return "re.range";
+  case kind::REGEXP_LOOP: return "re.loop";
+  
+  //sep theory
+  case kind::SEP_STAR: return "sep";
+  case kind::SEP_PTO: return "pto";
+  case kind::SEP_WAND: return "wand";
+  case kind::SEP_EMP: return "emp";
+    
+  default:
+    ; /* fall through */
+  }
+
+  // no SMT way to print these
+  return kind::kindToString(k);
+}
+
+static void printBvParameterizedOp(std::ostream& out, TNode n) throw() {
+  out << "(_ ";
+  switch(n.getKind()) {
+  case kind::BITVECTOR_EXTRACT: {
+    BitVectorExtract p = n.getOperator().getConst<BitVectorExtract>();
+    out << "extract " << p.high << ' ' << p.low;
+    break;
+  }
+  case kind::BITVECTOR_REPEAT:
+    out << "repeat "
+        << n.getOperator().getConst<BitVectorRepeat>().repeatAmount;
+    break;
+  case kind::BITVECTOR_ZERO_EXTEND:
+    out << "zero_extend "
+        << n.getOperator().getConst<BitVectorZeroExtend>().zeroExtendAmount;
+    break;
+  case kind::BITVECTOR_SIGN_EXTEND:
+    out << "sign_extend "
+        << n.getOperator().getConst<BitVectorSignExtend>().signExtendAmount;
+    break;
+  case kind::BITVECTOR_ROTATE_LEFT:
+    out << "rotate_left "
+        << n.getOperator().getConst<BitVectorRotateLeft>().rotateLeftAmount;
+    break;
+  case kind::BITVECTOR_ROTATE_RIGHT:
+    out << "rotate_right "
+        << n.getOperator().getConst<BitVectorRotateRight>().rotateRightAmount;
+    break;
+  case kind::INT_TO_BITVECTOR:
+    out << "int2bv "
+        << n.getOperator().getConst<IntToBitVector>().size;
+    break;
+  default:
+    out << n.getKind();
+  }
+  out << ")";
+}
+
+static void printFpParameterizedOp(std::ostream& out, TNode n) throw() {
+  out << "(_ ";
+  switch(n.getKind()) {
+  case kind::FLOATINGPOINT_TO_FP_IEEE_BITVECTOR:
+    //out << "to_fp_bv "
+    out << "to_fp "
+        << n.getOperator().getConst<FloatingPointToFPIEEEBitVector>().t.exponent() << ' '
+        << n.getOperator().getConst<FloatingPointToFPIEEEBitVector>().t.significand();
+    break;
+  case kind::FLOATINGPOINT_TO_FP_FLOATINGPOINT:
+    //out << "to_fp_fp "
+    out << "to_fp "
+        << n.getOperator().getConst<FloatingPointToFPFloatingPoint>().t.exponent() << ' '
+        << n.getOperator().getConst<FloatingPointToFPFloatingPoint>().t.significand();
+    break;
+  case kind::FLOATINGPOINT_TO_FP_REAL:
+    //out << "to_fp_real "
+    out << "to_fp "
+        << n.getOperator().getConst<FloatingPointToFPReal>().t.exponent() << ' '
+        << n.getOperator().getConst<FloatingPointToFPReal>().t.significand();
+    break;
+  case kind::FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR:
+    //out << "to_fp_signed "
+    out << "to_fp "
+        << n.getOperator().getConst<FloatingPointToFPSignedBitVector>().t.exponent() << ' '
+        << n.getOperator().getConst<FloatingPointToFPSignedBitVector>().t.significand();
+    break;
+  case kind::FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR:
+    out << "to_fp_unsigned "
+        << n.getOperator().getConst<FloatingPointToFPUnsignedBitVector>().t.exponent() << ' '
+        << n.getOperator().getConst<FloatingPointToFPUnsignedBitVector>().t.significand();
+    break;
+  case kind::FLOATINGPOINT_TO_FP_GENERIC:
+    out << "to_fp "
+        << n.getOperator().getConst<FloatingPointToFPGeneric>().t.exponent() << ' '
+        << n.getOperator().getConst<FloatingPointToFPGeneric>().t.significand();
+    break;
+  case kind::FLOATINGPOINT_TO_UBV:
+    out << "fp.to_ubv "
+        << n.getOperator().getConst<FloatingPointToUBV>().bvs.size;
+    break;
+  case kind::FLOATINGPOINT_TO_SBV:
+    out << "fp.to_sbv "
+        << n.getOperator().getConst<FloatingPointToSBV>().bvs.size;
+    break;
+  default:
+    out << n.getKind();
+  }
+  out << ")";
+}
+
+
+template <class T>
+static bool tryToStream(std::ostream& out, const Command* c) throw();
+template <class T>
+static bool tryToStream(std::ostream& out, const Command* c, Variant v) throw();
+
+void Smt2Printer::toStream(std::ostream& out, const Command* c,
+                           int toDepth, bool types, size_t dag) const throw() {
+  expr::ExprSetDepth::Scope sdScope(out, toDepth);
+  expr::ExprPrintTypes::Scope ptScope(out, types);
+  expr::ExprDag::Scope dagScope(out, dag);
+
+  if(tryToStream<AssertCommand>(out, c) ||
+     tryToStream<PushCommand>(out, c) ||
+     tryToStream<PopCommand>(out, c) ||
+     tryToStream<CheckSatCommand>(out, c) ||
+     tryToStream<QueryCommand>(out, c) ||
+     tryToStream<ResetCommand>(out, c) ||
+     tryToStream<ResetAssertionsCommand>(out, c) ||
+     tryToStream<QuitCommand>(out, c) ||
+     tryToStream<DeclarationSequence>(out, c) ||
+     tryToStream<CommandSequence>(out, c) ||
+     tryToStream<DeclareFunctionCommand>(out, c) ||
+     tryToStream<DeclareTypeCommand>(out, c) ||
+     tryToStream<DefineTypeCommand>(out, c) ||
+     tryToStream<DefineNamedFunctionCommand>(out, c) ||
+     tryToStream<DefineFunctionCommand>(out, c) ||
+     tryToStream<SimplifyCommand>(out, c) ||
+     tryToStream<GetValueCommand>(out, c) ||
+     tryToStream<GetModelCommand>(out, c) ||
+     tryToStream<GetAssignmentCommand>(out, c) ||
+     tryToStream<GetAssertionsCommand>(out, c) ||
+     tryToStream<GetProofCommand>(out, c) ||
+     tryToStream<GetUnsatCoreCommand>(out, c) ||
+     tryToStream<SetBenchmarkStatusCommand>(out, c, d_variant) ||
+     tryToStream<SetBenchmarkLogicCommand>(out, c, d_variant) ||
+     tryToStream<SetInfoCommand>(out, c, d_variant) ||
+     tryToStream<GetInfoCommand>(out, c) ||
+     tryToStream<SetOptionCommand>(out, c) ||
+     tryToStream<GetOptionCommand>(out, c) ||
+     tryToStream<DatatypeDeclarationCommand>(out, c) ||
+     tryToStream<CommentCommand>(out, c, d_variant) ||
+     tryToStream<EmptyCommand>(out, c) ||
+     tryToStream<EchoCommand>(out, c, d_variant)) {
+    return;
+  }
+
+  out << "ERROR: don't know how to print a Command of class: "
+      << typeid(*c).name() << endl;
+
+}/* Smt2Printer::toStream(Command*) */
+
+
+static std::string quoteSymbol(TNode n) {
+  // #warning "check the old implementation. It seems off."
+  std::stringstream ss;
+  ss << language::SetLanguage(language::output::LANG_SMTLIB_V2_5);
+  return CVC4::quoteSymbol(ss.str());
+}
+
+
+template <class T>
+static bool tryToStream(std::ostream& out, const CommandStatus* s, Variant v) throw();
+
+void Smt2Printer::toStream(std::ostream& out, const CommandStatus* s) const throw() {
+
+  if(tryToStream<CommandSuccess>(out, s, d_variant) ||
+     tryToStream<CommandFailure>(out, s, d_variant) ||
+     tryToStream<CommandUnsupported>(out, s, d_variant) ||
+     tryToStream<CommandInterrupted>(out, s, d_variant)) {
+    return;
+  }
+
+  out << "ERROR: don't know how to print a CommandStatus of class: "
+      << typeid(*s).name() << endl;
+
+}/* Smt2Printer::toStream(CommandStatus*) */
+
+
+void Smt2Printer::toStream(std::ostream& out, const UnsatCore& core, const std::map<Expr, std::string>& names) const throw() {
+  out << "(" << std::endl;
+  for(UnsatCore::const_iterator i = core.begin(); i != core.end(); ++i) {
+    map<Expr, string>::const_iterator j = names.find(*i);
+    if(j == names.end()) {
+      out << *i << endl;
+    } else {
+      out << (*j).second << endl;
+    }
+  }
+  out << ")" << endl;
+}/* Smt2Printer::toStream(UnsatCore, map<Expr, string>) */
+
+
+void Smt2Printer::toStream(std::ostream& out, const Model& m) const throw() {
+  //print the model comments
+  std::stringstream c;
+  m.getComments( c );
+  std::string ln;
+  while( std::getline( c, ln ) ){
+    out << "; " << ln << std::endl;
+  }
+  //print the model
+  out << "(model" << endl;
+  this->Printer::toStream(out, m);
+  out << ")" << endl;
+  //print the heap model, if it exists
+  Expr h, neq;
+  if( m.getHeapModel( h, neq ) ){
+    // description of the heap+what nil is equal to fully describes model
+    out << "(heap" << endl;
+    out << h << endl;
+    out << neq << endl;
+    out << ")" << std::endl;
+  }
+}
+
+
+void Smt2Printer::toStream(std::ostream& out, const Model& m, const Command* c) const throw() {
+  const theory::TheoryModel& tm = (const theory::TheoryModel&) m;
+  if(dynamic_cast<const DeclareTypeCommand*>(c) != NULL) {
+    TypeNode tn = TypeNode::fromType( ((const DeclareTypeCommand*)c)->getType() );
+    const std::map< TypeNode, std::vector< Node > >& type_reps = tm.d_rep_set.d_type_reps;
+
+    std::map< TypeNode, std::vector< Node > >::const_iterator tn_iterator = type_reps.find( tn );
+    if( options::modelUninterpDtEnum() && tn.isSort() && tn_iterator != type_reps.end() ){
+      out << "(declare-datatypes () ((" << dynamic_cast<const DeclareTypeCommand*>(c)->getSymbol() << " ";
+
+      for( size_t i=0, N = tn_iterator->second.size(); i < N; i++ ){
+        out << "(" << (*tn_iterator).second[i] << ")";
+      }
+      out << ")))" << endl;
+    } else {
+      if( tn.isSort() ){
+        //print the cardinality
+        if( tn_iterator != type_reps.end() ) {
+          out << "; cardinality of " << tn << " is " << tn_iterator->second.size() << endl;
+        }
+      }
+      out << c << endl;
+      if( tn.isSort() ){
+        //print the representatives
+        if( tn_iterator != type_reps.end() ){
+          for( size_t i = 0, N = (*tn_iterator).second.size(); i < N; i++ ){
+            TNode current = (*tn_iterator).second[i];
+            if( current.isVar() ){
+              out << "(declare-fun " << quoteSymbol(current) << " () " << tn << ")" << endl;
+            }else{
+              out << "; rep: " << current << endl;
+            }
+          }
+        }
+      }
+    }
+  } else if(dynamic_cast<const DeclareFunctionCommand*>(c) != NULL) {
+    const DeclareFunctionCommand* dfc = (const DeclareFunctionCommand*)c;
+    Node n = Node::fromExpr( dfc->getFunction() );
+    if(dfc->getPrintInModelSetByUser()) {
+      if(!dfc->getPrintInModel()) {
+        return;
+      }
+    } else if(n.getKind() == kind::SKOLEM) {
+      // don't print out internal stuff
+      return;
+    }
+    Node val = Node::fromExpr(tm.getSmtEngine()->getValue(n.toExpr()));
+    if(val.getKind() == kind::LAMBDA) {
+      out << "(define-fun " << n << " " << val[0]
+          << " " << n.getType().getRangeType()
+          << " " << val[1] << ")" << endl;
+    } else {
+      if( options::modelUninterpDtEnum() && val.getKind() == kind::STORE ) {
+        TypeNode tn = val[1].getType();
+        if (tn.isSort() && tm.d_rep_set.d_type_reps.find( tn )!=tm.d_rep_set.d_type_reps.end() ){
+          Cardinality indexCard((*tm.d_rep_set.d_type_reps.find(tn)).second.size());
+          val = theory::arrays::TheoryArraysRewriter::normalizeConstant( val, indexCard );
+        }
+      }
+      out << "(define-fun " << n << " () "
+          << n.getType() << " ";
+      if(val.getType().isInteger() && n.getType().isReal() && !n.getType().isInteger()) {
+        //toStreamReal(out, val, true);
+        toStreamRational(out, val.getConst<Rational>(), true);
+        //out << val << ".0";
+      } else {
+        out << val;
+      }
+      out << ")" << endl;
+    }
+/*
+    //for table format (work in progress)
+    bool printedModel = false;
+    if( tn.isFunction() ){
+      if( options::modelFormatMode()==MODEL_FORMAT_MODE_TABLE ){
+        //specialized table format for functions
+        RepSetIterator riter( &d_rep_set );
+        riter.setFunctionDomain( n );
+        while( !riter.isFinished() ){
+          std::vector< Node > children;
+          children.push_back( n );
+          for( int i=0; i<riter.getNumTerms(); i++ ){
+            children.push_back( riter.getTerm( i ) );
+          }
+          Node nn = NodeManager::currentNM()->mkNode( APPLY_UF, children );
+          Node val = getValue( nn );
+          out << val << " ";
+          riter.increment();
+        }
+        printedModel = true;
+      }
+    }
+*/
+  } else {
+    out << c << endl;
+  }
+}
+
+
+static void toStream(std::ostream& out, const AssertCommand* c) throw() {
+  out << "(assert " << c->getExpr() << ")";
+}
+
+static void toStream(std::ostream& out, const PushCommand* c) throw() {
+  out << "(push 1)";
+}
+
+static void toStream(std::ostream& out, const PopCommand* c) throw() {
+  out << "(pop 1)";
+}
+
+static void toStream(std::ostream& out, const CheckSatCommand* c) throw() {
+  Expr e = c->getExpr();
+  if(!e.isNull() && !(e.getKind() == kind::CONST_BOOLEAN && e.getConst<bool>())) {
+    out << PushCommand() << endl
+        << AssertCommand(e) << endl
+        << CheckSatCommand() << endl
+        << PopCommand();
+  } else {
+    out << "(check-sat)";
+  }
+}
+
+static void toStream(std::ostream& out, const QueryCommand* c) throw() {
+  Expr e = c->getExpr();
+  if(!e.isNull()) {
+    out << PushCommand() << endl
+        << AssertCommand(BooleanSimplification::negate(e)) << endl
+        << CheckSatCommand() << endl
+        << PopCommand();
+  } else {
+    out << "(check-sat)";
+  }
+}
+
+static void toStream(std::ostream& out, const ResetCommand* c) throw() {
+  out << "(reset)";
+}
+
+static void toStream(std::ostream& out, const ResetAssertionsCommand* c) throw() {
+  out << "(reset-assertions)";
+}
+
+static void toStream(std::ostream& out, const QuitCommand* c) throw() {
+  out << "(exit)";
+}
+
+static void toStream(std::ostream& out, const CommandSequence* c) throw() {
+  CommandSequence::const_iterator i = c->begin();
+  if(i != c->end()) {
+    for(;;) {
+      out << *i;
+      if(++i != c->end()) {
+        out << endl;
+      } else {
+        break;
+      }
+    }
+  }
+}
+
+static void toStream(std::ostream& out, const DeclareFunctionCommand* c) throw() {
+  Type type = c->getType();
+  out << "(declare-fun " << CVC4::quoteSymbol(c->getSymbol()) << " (";
+  if(type.isFunction()) {
+    FunctionType ft = type;
+    const vector<Type> argTypes = ft.getArgTypes();
+    if(argTypes.size() > 0) {
+      copy( argTypes.begin(), argTypes.end() - 1,
+            ostream_iterator<Type>(out, " ") );
+      out << argTypes.back();
+    }
+    type = ft.getRangeType();
+  }
+
+  out << ") " << type << ")";
+}
+
+static void toStream(std::ostream& out, const DefineFunctionCommand* c) throw() {
+  Expr func = c->getFunction();
+  const vector<Expr>* formals = &c->getFormals();
+  out << "(define-fun " << func << " (";
+  Type type = func.getType();
+  Expr formula = c->getFormula();
+  if(type.isFunction()) {
+    vector<Expr> f;
+    if(formals->empty()) {
+      const vector<Type>& params = FunctionType(type).getArgTypes();
+      for(vector<Type>::const_iterator j = params.begin(); j != params.end(); ++j) {
+        f.push_back(NodeManager::currentNM()->mkSkolem("a", TypeNode::fromType(*j), "",
+                                                       NodeManager::SKOLEM_NO_NOTIFY).toExpr());
+      }
+      formula = NodeManager::currentNM()->toExprManager()->mkExpr(kind::APPLY_UF, formula, f);
+      formals = &f;
+    }
+    vector<Expr>::const_iterator i = formals->begin();
+    for(;;) {
+      out << "(" << (*i) << " " << (*i).getType() << ")";
+      ++i;
+      if(i != formals->end()) {
+        out << " ";
+      } else {
+        break;
+      }
+    }
+    type = FunctionType(type).getRangeType();
+  }
+  out << ") " << type << " " << formula << ")";
+}
+
+static void toStreamRational(std::ostream& out, const Rational& r, bool decimal) throw() {
+  bool neg = r.sgn() < 0;
+
+  // TODO:
+  // We are currently printing (- (/ 5 3))
+  // instead of (/ (- 5) 3) which is what is in the SMT-LIB value in the theory definition.
+  // Before switching, I'll keep to what was there and send an email.
+
+  // Tim: Apologies for the ifs on one line but in this case they are cleaner.
+
+  if (neg) { out << "(- "; }
+
+  if(r.isIntegral()) {
+    if (neg) {
+      out << (-r);
+    }else {
+      out << r;
+    }
+    if (decimal) { out << ".0"; }
+  }else{
+    out << "(/ ";
+    if(neg) {
+      Rational abs_r = (-r);
+      out << abs_r.getNumerator();
+      if(decimal) { out << ".0"; }
+      out << ' ' << abs_r.getDenominator();
+      if(decimal) { out << ".0"; }
+    }else{
+      out << r.getNumerator();
+      if(decimal) { out << ".0"; }
+      out << ' ' << r.getDenominator();
+      if(decimal) { out << ".0"; }
+    }
+    out << ')';
+  }
+
+  if (neg) { out << ')';}
+
+  // if(r < 0) {
+  //   Rational abs_r = -r;
+  //   if(r.isIntegral()) {
+  //     out << "(- " << abs_r << ')';
+  //   } else {
+  //     out << "(- (/ " << (-r).getNumerator() << ' ' << (-r).getDenominator() << "))";
+  //   }
+  // } else {
+  //   if(r.isIntegral()) {
+  //         out << r;
+  //       } else {
+  //         out << "(/ " << r.getNumerator() << ' ' << r.getDenominator() << ')';
+  //       }
+  //     }
+}
+
+
+static void toStream(std::ostream& out, const DeclareTypeCommand* c) throw() {
+  out << "(declare-sort " << c->getSymbol() << " " << c->getArity() << ")";
+}
+
+static void toStream(std::ostream& out, const DefineTypeCommand* c) throw() {
+  const vector<Type>& params = c->getParameters();
+  out << "(define-sort " << c->getSymbol() << " (";
+  if(params.size() > 0) {
+    copy( params.begin(), params.end() - 1,
+          ostream_iterator<Type>(out, " ") );
+    out << params.back();
+  }
+  out << ") " << c->getType() << ")";
+}
+
+static void toStream(std::ostream& out, const DefineNamedFunctionCommand* c) throw() {
+  out << "DefineNamedFunction( ";
+  toStream(out, static_cast<const DefineFunctionCommand*>(c));
+  out << " )";
+
+  out << "ERROR: don't know how to output define-named-function command" << endl;
+}
+
+static void toStream(std::ostream& out, const SimplifyCommand* c) throw() {
+  out << "(simplify " << c->getTerm() << ")";
+}
+
+static void toStream(std::ostream& out, const GetValueCommand* c) throw() {
+  out << "(get-value ( ";
+  const vector<Expr>& terms = c->getTerms();
+  copy(terms.begin(), terms.end(), ostream_iterator<Expr>(out, " "));
+  out << "))";
+}
+
+static void toStream(std::ostream& out, const GetModelCommand* c) throw() {
+  out << "(get-model)";
+}
+
+static void toStream(std::ostream& out, const GetAssignmentCommand* c) throw() {
+  out << "(get-assignment)";
+}
+
+static void toStream(std::ostream& out, const GetAssertionsCommand* c) throw() {
+  out << "(get-assertions)";
+}
+
+static void toStream(std::ostream& out, const GetProofCommand* c) throw() {
+  out << "(get-proof)";
+}
+
+static void toStream(std::ostream& out, const GetUnsatCoreCommand* c) throw() {
+  out << "(get-unsat-core)";
+}
+
+static void toStream(std::ostream& out, const SetBenchmarkStatusCommand* c, Variant v) throw() {
+  if(v == z3str_variant || v == smt2_0_variant) {
+    out << "(set-info :status " << c->getStatus() << ")";
+  } else {
+    out << "(meta-info :status " << c->getStatus() << ")";
+  }
+}
+
+static void toStream(std::ostream& out, const SetBenchmarkLogicCommand* c, Variant v) throw() {
+  // Z3-str doesn't have string-specific logic strings(?), so comment it
+  if(v == z3str_variant) {
+    out << "; (set-logic " << c->getLogic() << ")";
+  } else {
+    out << "(set-logic " << c->getLogic() << ")";
+  }
+}
+
+static void toStream(std::ostream& out, const SetInfoCommand* c, Variant v) throw() {
+  if(v == z3str_variant || v == smt2_0_variant) {
+    out << "(set-info :" << c->getFlag() << " ";
+  } else {
+    out << "(meta-info :" << c->getFlag() << " ";
+  }
+
+  SExpr::toStream(out, c->getSExpr(), variantToLanguage(v));
+  out << ")";
+}
+
+static void toStream(std::ostream& out, const GetInfoCommand* c) throw() {
+  out << "(get-info :" << c->getFlag() << ")";
+}
+
+static void toStream(std::ostream& out, const SetOptionCommand* c) throw() {
+  out << "(set-option :" << c->getFlag() << " ";
+  SExpr::toStream(out, c->getSExpr(), language::output::LANG_SMTLIB_V2_5);
+  out << ")";
+}
+
+static void toStream(std::ostream& out, const GetOptionCommand* c) throw() {
+  out << "(get-option :" << c->getFlag() << ")";
+}
+
+static void toStream(std::ostream& out, const DatatypeDeclarationCommand* c) throw() {
+  const vector<DatatypeType>& datatypes = c->getDatatypes();
+  out << "(declare-datatypes () (";
+  for(vector<DatatypeType>::const_iterator i = datatypes.begin(),
+        i_end = datatypes.end();
+      i != i_end;
+      ++i) {
+
+    const Datatype & d = i->getDatatype();
+
+    out << "(" << maybeQuoteSymbol(d.getName()) << " ";
+    for(Datatype::const_iterator ctor = d.begin(), ctor_end = d.end();
+        ctor != ctor_end; ++ctor){
+      if( ctor!=d.begin() ) out << " ";
+      out << "(" << maybeQuoteSymbol(ctor->getName());
+
+      for(DatatypeConstructor::const_iterator arg = ctor->begin(), arg_end = ctor->end();
+          arg != arg_end; ++arg){
+        out << " (" << arg->getSelector() << " "
+            << static_cast<SelectorType>(arg->getType()).getRangeType() << ")";
+      }
+      out << ")";
+    }
+    out << ")" << endl;
+  }
+  out << "))";
+}
+
+static void toStream(std::ostream& out, const CommentCommand* c, Variant v) throw() {
+  string s = c->getComment();
+  size_t pos = 0;
+  while((pos = s.find_first_of('"', pos)) != string::npos) {
+    s.replace(pos, 1, (v == z3str_variant || v == smt2_0_variant) ? "\\\"" : "\"\"");
+    pos += 2;
+  }
+  out << "(set-info :notes \"" << s << "\")";
+}
+
+static void toStream(std::ostream& out, const EmptyCommand* c) throw() {
+}
+
+static void toStream(std::ostream& out, const EchoCommand* c, Variant v) throw() {
+  std::string s = c->getOutput();
+  // escape all double-quotes
+  size_t pos = 0;
+  while((pos = s.find('"', pos)) != string::npos) {
+    s.replace(pos, 1, (v == z3str_variant || v == smt2_0_variant) ? "\\\"" : "\"\"");
+    pos += 2;
+  }
+  out << "(echo \"" << s << "\")";
+}
+
+template <class T>
+static bool tryToStream(std::ostream& out, const Command* c) throw() {
+  if(typeid(*c) == typeid(T)) {
+    toStream(out, dynamic_cast<const T*>(c));
+    return true;
+  }
+  return false;
+}
+
+template <class T>
+static bool tryToStream(std::ostream& out, const Command* c, Variant v) throw() {
+  if(typeid(*c) == typeid(T)) {
+    toStream(out, dynamic_cast<const T*>(c), v);
+    return true;
+  }
+  return false;
+}
+
+static void toStream(std::ostream& out, const CommandSuccess* s, Variant v) throw() {
+  if(Command::printsuccess::getPrintSuccess(out)) {
+    out << "success" << endl;
+  }
+}
+
+static void toStream(std::ostream& out, const CommandInterrupted* s, Variant v) throw() {
+  out << "interrupted" << endl;
+}
+
+static void toStream(std::ostream& out, const CommandUnsupported* s, Variant v) throw() {
+#ifdef CVC4_COMPETITION_MODE
+  // if in competition mode, lie and say we're ok
+  // (we have nothing to lose by saying success, and everything to lose
+  // if we say "unsupported")
+  out << "success" << endl;
+#else /* CVC4_COMPETITION_MODE */
+  out << "unsupported" << endl;
+#endif /* CVC4_COMPETITION_MODE */
+}
+
+static void toStream(std::ostream& out, const CommandFailure* s, Variant v) throw() {
+  string message = s->getMessage();
+  // escape all double-quotes
+  size_t pos = 0;
+  while((pos = message.find('"', pos)) != string::npos) {
+    message.replace(pos, 1, (v == z3str_variant || v == smt2_0_variant) ? "\\\"" : "\"\"");
+    pos += 2;
+  }
+  out << "(error \"" << message << "\")" << endl;
+}
+
+template <class T>
+static bool tryToStream(std::ostream& out, const CommandStatus* s, Variant v) throw() {
+  if(typeid(*s) == typeid(T)) {
+    toStream(out, dynamic_cast<const T*>(s), v);
+    return true;
+  }
+  return false;
+}
+
+static OutputLanguage variantToLanguage(Variant variant) throw() {
+  switch(variant) {
+  case smt2_0_variant:
+    return language::output::LANG_SMTLIB_V2_0;
+  case z3str_variant:
+    return language::output::LANG_Z3STR;
+  case sygus_variant:
+    return language::output::LANG_SYGUS;
+  case no_variant:
+  default:
+    return language::output::LANG_SMTLIB_V2_5;
+  }
+}
+
+}/* CVC4::printer::smt2 namespace */
+}/* CVC4::printer namespace */
+}/* CVC4 namespace */
diff --git a/src/printer/smt2/smt2_printer.h b/src/printer/smt2/smt2_printer.h
new file mode 100644
index 0000000..0354a57
--- /dev/null
+++ b/src/printer/smt2/smt2_printer.h
@@ -0,0 +1,58 @@
+/*********************                                                        */
+/*! \file smt2_printer.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The pretty-printer interface for the SMT2 output language
+ **
+ ** The pretty-printer interface for the SMT2 output language.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__PRINTER__SMT2_PRINTER_H
+#define __CVC4__PRINTER__SMT2_PRINTER_H
+
+#include <iostream>
+
+#include "printer/printer.h"
+
+namespace CVC4 {
+namespace printer {
+namespace smt2 {
+
+enum Variant {
+  no_variant,
+  smt2_0_variant, // old-style 2.0 syntax, when it makes a difference
+  z3str_variant, // old-style 2.0 and also z3str syntax
+  sygus_variant  // variant for sygus
+};/* enum Variant */
+
+class Smt2Printer : public CVC4::Printer {
+  Variant d_variant;
+
+  void toStream(std::ostream& out, TNode n, int toDepth, bool types) const throw();
+  void toStream(std::ostream& out, const Model& m, const Command* c) const throw();
+public:
+  Smt2Printer(Variant variant = no_variant) : d_variant(variant) { }
+  using CVC4::Printer::toStream;
+  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();
+  void toStream(std::ostream& out, const CommandStatus* s) const throw();
+  void toStream(std::ostream& out, const SExpr& sexpr) const throw();
+  void toStream(std::ostream& out, const Model& m) const throw();
+  void toStream(std::ostream& out, const UnsatCore& core, const std::map<Expr, std::string>& names) const throw();
+};/* class Smt2Printer */
+
+}/* CVC4::printer::smt2 namespace */
+}/* CVC4::printer namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PRINTER__SMT2_PRINTER_H */
+
diff --git a/src/printer/tptp/tptp_printer.cpp b/src/printer/tptp/tptp_printer.cpp
new file mode 100644
index 0000000..1be98ff
--- /dev/null
+++ b/src/printer/tptp/tptp_printer.cpp
@@ -0,0 +1,65 @@
+/*********************                                                        */
+/*! \file tptp_printer.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The pretty-printer interface for the TPTP output language
+ **
+ ** The pretty-printer interface for the TPTP output language.
+ **/
+#include "printer/tptp/tptp_printer.h"
+
+#include <iostream>
+#include <string>
+#include <typeinfo>
+#include <vector>
+
+#include "expr/expr.h" // for ExprSetDepth etc..
+#include "expr/node_manager.h" // for VarNameAttr
+#include "options/language.h" // for LANG_AST
+#include "smt/command.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace printer {
+namespace tptp {
+
+void TptpPrinter::toStream(std::ostream& out, TNode n,
+                           int toDepth, bool types, size_t dag) const throw() {
+  n.toStream(out, toDepth, types, dag, language::output::LANG_SMTLIB_V2_5);
+}/* TptpPrinter::toStream() */
+
+void TptpPrinter::toStream(std::ostream& out, const Command* c,
+                           int toDepth, bool types, size_t dag) const throw() {
+  c->toStream(out, toDepth, types, dag, language::output::LANG_SMTLIB_V2_5);
+}/* TptpPrinter::toStream() */
+
+void TptpPrinter::toStream(std::ostream& out, const CommandStatus* s) const throw() {
+  s->toStream(out, language::output::LANG_SMTLIB_V2_5);
+}/* TptpPrinter::toStream() */
+
+
+void TptpPrinter::toStream(std::ostream& out, const Model& m) const throw() {
+  out << "% SZS output start FiniteModel for " << m.getInputName() << endl;
+  for(size_t i = 0; i < m.getNumCommands(); ++i) {
+    this->Printer::toStreamUsing(language::output::LANG_SMTLIB_V2_5, out, m, m.getCommand(i));
+  }
+  out << "% SZS output end FiniteModel for " << m.getInputName() << endl;
+}
+
+void TptpPrinter::toStream(std::ostream& out, const Model& m, const Command* c) const throw() {
+  // shouldn't be called; only the non-Command* version above should be
+  Unreachable();
+}
+
+
+}/* CVC4::printer::tptp namespace */
+}/* CVC4::printer namespace */
+}/* CVC4 namespace */
diff --git a/src/printer/tptp/tptp_printer.h b/src/printer/tptp/tptp_printer.h
new file mode 100644
index 0000000..aac69d0
--- /dev/null
+++ b/src/printer/tptp/tptp_printer.h
@@ -0,0 +1,44 @@
+/*********************                                                        */
+/*! \file tptp_printer.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The pretty-printer interface for the TPTP output language
+ **
+ ** The pretty-printer interface for the TPTP output language.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__PRINTER__TPTP_PRINTER_H
+#define __CVC4__PRINTER__TPTP_PRINTER_H
+
+#include <iostream>
+
+#include "printer/printer.h"
+
+namespace CVC4 {
+namespace printer {
+namespace tptp {
+
+class TptpPrinter : public CVC4::Printer {
+  void toStream(std::ostream& out, const Model& m, const Command* c) const throw();
+public:
+  using CVC4::Printer::toStream;
+  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();
+  void toStream(std::ostream& out, const CommandStatus* s) const throw();
+  void toStream(std::ostream& out, const Model& m) const throw();
+};/* class TptpPrinter */
+
+}/* CVC4::printer::tptp namespace */
+}/* CVC4::printer namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PRINTER__TPTP_PRINTER_H */
diff --git a/src/proof/arith_proof.cpp b/src/proof/arith_proof.cpp
new file mode 100644
index 0000000..0f0c14e
--- /dev/null
+++ b/src/proof/arith_proof.cpp
@@ -0,0 +1,847 @@
+/*********************                                                        */
+/*! \file arith_proof.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Guy Katz
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+
+ ** \todo document this file
+
+**/
+
+#include "proof/theory_proof.h"
+#include "proof/proof_manager.h"
+#include "proof/arith_proof.h"
+#include "theory/arith/theory_arith.h"
+#include <stack>
+
+namespace CVC4 {
+
+inline static Node eqNode(TNode n1, TNode n2) {
+  return NodeManager::currentNM()->mkNode(kind::EQUAL, n1, n2);
+}
+
+// congrence matching term helper
+inline static bool match(TNode n1, TNode n2) {
+  Debug("pf::arith") << "match " << n1 << " " << n2 << std::endl;
+  if(ProofManager::currentPM()->hasOp(n1)) {
+    n1 = ProofManager::currentPM()->lookupOp(n1);
+  }
+  if(ProofManager::currentPM()->hasOp(n2)) {
+    n2 = ProofManager::currentPM()->lookupOp(n2);
+  }
+  Debug("pf::arith") << "+ match " << n1 << " " << n2 << std::endl;
+  if(n1 == n2) {
+    return true;
+  }
+  if(n1.getType().isFunction() && n2.hasOperator()) {
+    if(ProofManager::currentPM()->hasOp(n2.getOperator())) {
+      return n1 == ProofManager::currentPM()->lookupOp(n2.getOperator());
+    } else {
+      return n1 == n2.getOperator();
+    }
+  }
+  if(n2.getType().isFunction() && n1.hasOperator()) {
+    if(ProofManager::currentPM()->hasOp(n1.getOperator())) {
+      return n2 == ProofManager::currentPM()->lookupOp(n1.getOperator());
+    } else {
+      return n2 == n1.getOperator();
+    }
+  }
+  if(n1.hasOperator() && n2.hasOperator() && n1.getOperator() != n2.getOperator()) {
+    return false;
+  }
+  for(size_t i = 0; i < n1.getNumChildren() && i < n2.getNumChildren(); ++i) {
+    if(n1[i] != n2[i]) {
+      return false;
+    }
+  }
+  return true;
+}
+
+
+void ProofArith::toStream(std::ostream& out) {
+  Trace("theory-proof-debug") << "; Print Arith proof..." << std::endl;
+  //AJR : carry this further?
+  ProofLetMap map;
+  toStreamLFSC(out, ProofManager::getArithProof(), d_proof, map);
+}
+
+void ProofArith::toStreamLFSC(std::ostream& out, TheoryProof * tp, theory::eq::EqProof * pf, const ProofLetMap& map) {
+  Debug("lfsc-arith") << "Printing arith proof in LFSC : " << std::endl;
+  pf->debug_print("lfsc-arith");
+  Debug("lfsc-arith") << std::endl;
+  toStreamRecLFSC( out, tp, pf, 0, map );
+}
+
+Node ProofArith::toStreamRecLFSC(std::ostream& out, TheoryProof * tp, theory::eq::EqProof * pf, unsigned tb, const ProofLetMap& map) {
+  Debug("pf::arith") << std::endl << std::endl << "toStreamRecLFSC called. tb = " << tb << " . proof:" << std::endl;
+  pf->debug_print("pf::arith");
+  Debug("pf::arith") << std::endl;
+
+  if(tb == 0) {
+    Assert(pf->d_id == theory::eq::MERGED_THROUGH_TRANS);
+    Assert(!pf->d_node.isNull());
+    Assert(pf->d_children.size() >= 2);
+
+    int neg = -1;
+    theory::eq::EqProof subTrans;
+    subTrans.d_id = theory::eq::MERGED_THROUGH_TRANS;
+    subTrans.d_node = pf->d_node;
+
+    size_t i = 0;
+    while (i < pf->d_children.size()) {
+      // Look for the negative clause, with which we will form a contradiction.
+      if(!pf->d_children[i]->d_node.isNull() && pf->d_children[i]->d_node.getKind() == kind::NOT) {
+        Assert(neg < 0);
+        neg = i;
+        ++i;
+      }
+
+      // Handle congruence closures over equalities.
+      else if (pf->d_children[i]->d_id==theory::eq::MERGED_THROUGH_CONGRUENCE && pf->d_children[i]->d_node.isNull()) {
+        Debug("pf::arith") << "Handling congruence over equalities" << std::endl;
+
+        // Gather the sequence of consecutive congruence closures.
+        std::vector<const theory::eq::EqProof *> congruenceClosures;
+        unsigned count;
+        Debug("pf::arith") << "Collecting congruence sequence" << std::endl;
+        for (count = 0;
+             i + count < pf->d_children.size() &&
+             pf->d_children[i + count]->d_id==theory::eq::MERGED_THROUGH_CONGRUENCE &&
+             pf->d_children[i + count]->d_node.isNull();
+             ++count) {
+          Debug("pf::arith") << "Found a congruence: " << std::endl;
+          pf->d_children[i+count]->debug_print("pf::arith");
+          congruenceClosures.push_back(pf->d_children[i+count]);
+        }
+
+        Debug("pf::arith") << "Total number of congruences found: " << congruenceClosures.size() << std::endl;
+
+        // Determine if the "target" of the congruence sequence appears right before or right after the sequence.
+        bool targetAppearsBefore = true;
+        bool targetAppearsAfter = true;
+
+        if ((i == 0) || (i == 1 && neg == 0)) {
+          Debug("pf::arith") << "Target does not appear before" << std::endl;
+          targetAppearsBefore = false;
+        }
+
+        if ((i + count >= pf->d_children.size()) ||
+            (!pf->d_children[i + count]->d_node.isNull() &&
+             pf->d_children[i + count]->d_node.getKind() == kind::NOT)) {
+          Debug("pf::arith") << "Target does not appear after" << std::endl;
+          targetAppearsAfter = false;
+        }
+
+        // Assert that we have precisely one target clause.
+        Assert(targetAppearsBefore != targetAppearsAfter);
+
+        // Begin breaking up the congruences and ordering the equalities correctly.
+        std::vector<theory::eq::EqProof *> orderedEqualities;
+
+
+        // Insert target clause first.
+        if (targetAppearsBefore) {
+          orderedEqualities.push_back(pf->d_children[i - 1]);
+          // The target has already been added to subTrans; remove it.
+          subTrans.d_children.pop_back();
+        } else {
+          orderedEqualities.push_back(pf->d_children[i + count]);
+        }
+
+        // Start with the congruence closure closest to the target clause, and work our way back/forward.
+        if (targetAppearsBefore) {
+          for (unsigned j = 0; j < count; ++j) {
+            if (pf->d_children[i + j]->d_children[0]->d_id != theory::eq::MERGED_THROUGH_REFLEXIVITY)
+              orderedEqualities.insert(orderedEqualities.begin(), pf->d_children[i + j]->d_children[0]);
+            if (pf->d_children[i + j]->d_children[1]->d_id != theory::eq::MERGED_THROUGH_REFLEXIVITY)
+            orderedEqualities.insert(orderedEqualities.end(), pf->d_children[i + j]->d_children[1]);
+          }
+        } else {
+          for (unsigned j = 0; j < count; ++j) {
+            if (pf->d_children[i + count - 1 - j]->d_children[0]->d_id != theory::eq::MERGED_THROUGH_REFLEXIVITY)
+              orderedEqualities.insert(orderedEqualities.begin(), pf->d_children[i + count - 1 - j]->d_children[0]);
+            if (pf->d_children[i + count - 1 - j]->d_children[1]->d_id != theory::eq::MERGED_THROUGH_REFLEXIVITY)
+              orderedEqualities.insert(orderedEqualities.end(), pf->d_children[i + count - 1 - j]->d_children[1]);
+          }
+        }
+
+        // Copy the result into the main transitivity proof.
+        subTrans.d_children.insert(subTrans.d_children.end(), orderedEqualities.begin(), orderedEqualities.end());
+
+        // Increase i to skip over the children that have been processed.
+        i += count;
+        if (targetAppearsAfter) {
+          ++i;
+        }
+      }
+
+      // Else, just copy the child proof as is
+      else {
+        subTrans.d_children.push_back(pf->d_children[i]);
+        ++i;
+      }
+    }
+    Assert(neg >= 0);
+
+    Node n1;
+    std::stringstream ss;
+    //Assert(subTrans.d_children.size() == pf->d_children.size() - 1);
+    Debug("pf::arith") << "\nsubtrans has " << subTrans.d_children.size() << " children\n";
+    if(pf->d_children.size() > 2) {
+      n1 = toStreamRecLFSC(ss, tp, &subTrans, 1, map);
+    } else {
+      n1 = toStreamRecLFSC(ss, tp, subTrans.d_children[0], 1, map);
+      Debug("pf::arith") << "\nsubTrans unique child " << subTrans.d_children[0]->d_id << " was proven\ngot: " << n1 << std::endl;
+    }
+
+    Node n2 = pf->d_children[neg]->d_node;
+    Assert(n2.getKind() == kind::NOT);
+    out << "(clausify_false (contra _ ";
+    Debug("pf::arith") << "\nhave proven: " << n1 << std::endl;
+    Debug("pf::arith") << "n2 is " << n2[0] << std::endl;
+
+    if (n2[0].getNumChildren() > 0) { Debug("pf::arith") << "\nn2[0]: " << n2[0][0] << std::endl; }
+    if (n1.getNumChildren() > 1) { Debug("pf::arith") << "n1[1]: " << n1[1] << std::endl; }
+
+    if(n2[0].getKind() == kind::APPLY_UF) {
+      out << "(trans _ _ _ _ ";
+      out << "(symm _ _ _ ";
+      out << ss.str();
+      out << ") (pred_eq_f _ " << ProofManager::getLitName(n2[0]) << ")) t_t_neq_f))" << std::endl;
+    } else {
+      Assert((n1[0] == n2[0][0] && n1[1] == n2[0][1]) || (n1[1] == n2[0][0] && n1[0] == n2[0][1]));
+      if(n1[1] == n2[0][0]) {
+        out << "(symm _ _ _ " << ss.str() << ")";
+      } else {
+        out << ss.str();
+      }
+      out << " " << ProofManager::getLitName(n2[0]) << "))" << std::endl;
+    }
+    return Node();
+  }
+
+  switch(pf->d_id) {
+  case theory::eq::MERGED_THROUGH_CONGRUENCE: {
+    Debug("pf::arith") << "\nok, looking at congruence:\n";
+    pf->debug_print("pf::arith");
+    std::stack<const theory::eq::EqProof*> stk;
+    for(const theory::eq::EqProof* pf2 = pf; pf2->d_id == theory::eq::MERGED_THROUGH_CONGRUENCE; pf2 = pf2->d_children[0]) {
+      Assert(!pf2->d_node.isNull());
+      Assert(pf2->d_node.getKind() == kind::PARTIAL_APPLY_UF || pf2->d_node.getKind() == kind::BUILTIN || pf2->d_node.getKind() == kind::APPLY_UF || pf2->d_node.getKind() == kind::SELECT || pf2->d_node.getKind() == kind::STORE);
+      Assert(pf2->d_children.size() == 2);
+      out << "(cong _ _ _ _ _ _ ";
+      stk.push(pf2);
+    }
+    Assert(stk.top()->d_children[0]->d_id != theory::eq::MERGED_THROUGH_CONGRUENCE);
+    NodeBuilder<> b1(kind::PARTIAL_APPLY_UF), b2(kind::PARTIAL_APPLY_UF);
+    const theory::eq::EqProof* pf2 = stk.top();
+    stk.pop();
+    Assert(pf2->d_id == theory::eq::MERGED_THROUGH_CONGRUENCE);
+    Node n1 = toStreamRecLFSC(out, tp, pf2->d_children[0], tb + 1, map);
+    out << " ";
+    std::stringstream ss;
+    Node n2 = toStreamRecLFSC(ss, tp, pf2->d_children[1], tb + 1, map);
+    Debug("pf::arith") << "\nok, in FIRST cong[" << stk.size() << "]" << "\n";
+    pf2->debug_print("pf::arith");
+    Debug("pf::arith") << "looking at " << pf2->d_node << "\n";
+    Debug("pf::arith") << "           " << n1 << "\n";
+    Debug("pf::arith") << "           " << n2 << "\n";
+    int side = 0;
+    if(match(pf2->d_node, n1[0])) {
+      //if(tb == 1) {
+      Debug("pf::arith") << "SIDE IS 0\n";
+      //}
+      side = 0;
+    } else {
+      //if(tb == 1) {
+      Debug("pf::arith") << "SIDE IS 1\n";
+      //}
+      if(!match(pf2->d_node, n1[1])) {
+      Debug("pf::arith") << "IN BAD CASE, our first subproof is\n";
+      pf2->d_children[0]->debug_print("pf::arith");
+      }
+      Assert(match(pf2->d_node, n1[1]));
+      side = 1;
+    }
+    if(n1[side].getKind() == kind::APPLY_UF || n1[side].getKind() == kind::PARTIAL_APPLY_UF || n1[side].getKind() == kind::SELECT || n1[side].getKind() == kind::STORE) {
+      if(n1[side].getKind() == kind::APPLY_UF || n1[side].getKind() == kind::PARTIAL_APPLY_UF) {
+        b1 << n1[side].getOperator();
+      } else {
+        b1 << ProofManager::currentPM()->mkOp(n1[side].getOperator());
+      }
+      b1.append(n1[side].begin(), n1[side].end());
+    } else {
+      b1 << n1[side];
+    }
+    if(n1[1-side].getKind() == kind::PARTIAL_APPLY_UF || n1[1-side].getKind() == kind::APPLY_UF || n1[side].getKind() == kind::SELECT || n1[side].getKind() == kind::STORE) {
+      if(n1[1-side].getKind() == kind::PARTIAL_APPLY_UF || n1[1-side].getKind() == kind::APPLY_UF) {
+        b2 << n1[1-side].getOperator();
+      } else {
+        b2 << ProofManager::currentPM()->mkOp(n1[1-side].getOperator());
+      }
+      b2.append(n1[1-side].begin(), n1[1-side].end());
+    } else {
+      b2 << n1[1-side];
+    }
+    Debug("pf::arith") << "pf2->d_node " << pf2->d_node << std::endl;
+    Debug("pf::arith") << "b1.getNumChildren() " << b1.getNumChildren() << std::endl;
+    Debug("pf::arith") << "n1 " << n1 << std::endl;
+    Debug("pf::arith") << "n2 " << n2 << std::endl;
+    Debug("pf::arith") << "side " << side << std::endl;
+    if(pf2->d_node[b1.getNumChildren() - (pf2->d_node.getMetaKind() == kind::metakind::PARAMETERIZED ? 0 : 1)] == n2[side]) {
+      b1 << n2[side];
+      b2 << n2[1-side];
+      out << ss.str();
+    } else {
+      Assert(pf2->d_node[b1.getNumChildren() - (pf2->d_node.getMetaKind() == kind::metakind::PARAMETERIZED ? 0 : 1)] == n2[1-side]);
+      b1 << n2[1-side];
+      b2 << n2[side];
+      out << "(symm _ _ _ " << ss.str() << ")";
+    }
+    out << ")";
+    while(!stk.empty()) {
+      if(tb == 1) {
+      Debug("pf::arith") << "\nMORE TO DO\n";
+      }
+      pf2 = stk.top();
+      stk.pop();
+      Assert(pf2->d_id == theory::eq::MERGED_THROUGH_CONGRUENCE);
+      out << " ";
+      ss.str("");
+      n2 = toStreamRecLFSC(ss, tp, pf2->d_children[1], tb + 1, map);
+      Debug("pf::arith") << "\nok, in cong[" << stk.size() << "]" << "\n";
+      Debug("pf::arith") << "looking at " << pf2->d_node << "\n";
+      Debug("pf::arith") << "           " << n1 << "\n";
+      Debug("pf::arith") << "           " << n2 << "\n";
+      Debug("pf::arith") << "           " << b1 << "\n";
+      Debug("pf::arith") << "           " << b2 << "\n";
+      if(pf2->d_node[b1.getNumChildren()] == n2[side]) {
+        b1 << n2[side];
+        b2 << n2[1-side];
+        out << ss.str();
+      } else {
+        Assert(pf2->d_node[b1.getNumChildren()] == n2[1-side]);
+        b1 << n2[1-side];
+        b2 << n2[side];
+        out << "(symm _ _ _ " << ss.str() << ")";
+      }
+      out << ")";
+    }
+    n1 = b1;
+    n2 = b2;
+    Debug("pf::arith") << "at end assert, got " << pf2->d_node << "  and  " << n1 << std::endl;
+    if(pf2->d_node.getKind() == kind::PARTIAL_APPLY_UF) {
+      Assert(n1 == pf2->d_node);
+    }
+    if(n1.getOperator().getType().getNumChildren() == n1.getNumChildren() + 1) {
+      if(ProofManager::currentPM()->hasOp(n1.getOperator())) {
+        b1.clear(ProofManager::currentPM()->lookupOp(n2.getOperator()).getConst<Kind>());
+      } else {
+        b1.clear(kind::APPLY_UF);
+        b1 << n1.getOperator();
+      }
+      b1.append(n1.begin(), n1.end());
+      n1 = b1;
+      Debug("pf::arith") << "at[2] end assert, got " << pf2->d_node << "  and  " << n1 << std::endl;
+      if(pf2->d_node.getKind() == kind::APPLY_UF) {
+        Assert(n1 == pf2->d_node);
+      }
+    }
+    if(n2.getOperator().getType().getNumChildren() == n2.getNumChildren() + 1) {
+      if(ProofManager::currentPM()->hasOp(n2.getOperator())) {
+        b2.clear(ProofManager::currentPM()->lookupOp(n2.getOperator()).getConst<Kind>());
+      } else {
+        b2.clear(kind::APPLY_UF);
+        b2 << n2.getOperator();
+      }
+      b2.append(n2.begin(), n2.end());
+      n2 = b2;
+    }
+    Node n = (side == 0 ? eqNode(n1, n2) : eqNode(n2, n1));
+    if(tb == 1) {
+    Debug("pf::arith") << "\ncong proved: " << n << "\n";
+    }
+    return n;
+  }
+
+  case theory::eq::MERGED_THROUGH_REFLEXIVITY:
+    Assert(!pf->d_node.isNull());
+    Assert(pf->d_children.empty());
+    out << "(refl _ ";
+    tp->printTerm(NodeManager::currentNM()->toExpr(pf->d_node), out, map);
+    out << ")";
+    return eqNode(pf->d_node, pf->d_node);
+
+  case theory::eq::MERGED_THROUGH_EQUALITY:
+    Assert(!pf->d_node.isNull());
+    Assert(pf->d_children.empty());
+    out << ProofManager::getLitName(pf->d_node.negate());
+    return pf->d_node;
+
+  case theory::eq::MERGED_THROUGH_TRANS: {
+    Assert(!pf->d_node.isNull());
+    Assert(pf->d_children.size() >= 2);
+    std::stringstream ss;
+    Debug("pf::arith") << "\ndoing trans proof[[\n";
+    pf->debug_print("pf::arith");
+    Debug("pf::arith") << "\n";
+    Node n1 = toStreamRecLFSC(ss, tp, pf->d_children[0], tb + 1, map);
+    Debug("pf::arith") << "\ndoing trans proof, got n1 " << n1 << "\n";
+    if(tb == 1) {
+      Debug("pf::arith") << "\ntrans proof[0], got n1 " << n1 << "\n";
+    }
+
+    bool identicalEqualities = false;
+    bool evenLengthSequence;
+    Node nodeAfterEqualitySequence;
+
+    std::map<size_t, Node> childToStream;
+
+    for(size_t i = 1; i < pf->d_children.size(); ++i) {
+      std::stringstream ss1(ss.str()), ss2;
+      ss.str("");
+
+      // It is possible that we've already converted the i'th child to stream. If so,
+      // use previously stored result. Otherwise, convert and store.
+      Node n2;
+      if (childToStream.find(i) != childToStream.end())
+        n2 = childToStream[i];
+      else {
+        n2 = toStreamRecLFSC(ss2, tp, pf->d_children[i], tb + 1, map);
+        childToStream[i] = n2;
+      }
+
+      // The following branch is dedicated to handling sequences of identical equalities,
+      // i.e. trans[ a=b, a=b, a=b ].
+      //
+      // There are two cases:
+      //    1. The number of equalities is odd. Then, the sequence can be collapsed to just one equality,
+      //       i.e. a=b.
+      //    2. The number of equalities is even. Now, we have two options: a=a or b=b. To determine this,
+      //       we look at the node after the equality sequence. If it needs a, we go for a=a; and if it needs
+      //       b, we go for b=b. If there is no following node, we look at the goal of the transitivity proof,
+      //       and use it to determine which option we need.
+      if(n2.getKind() == kind::EQUAL) {
+        if (((n1[0] == n2[0]) && (n1[1] == n2[1])) || ((n1[0] == n2[1]) && (n1[1] == n2[0]))) {
+          // We are in a sequence of identical equalities
+
+          Debug("pf::arith") << "Detected identical equalities: " << std::endl << "\t" << n1 << std::endl;
+
+          if (!identicalEqualities) {
+            // The sequence of identical equalities has started just now
+            identicalEqualities = true;
+
+            Debug("pf::arith") << "The sequence is just beginning. Determining length..." << std::endl;
+
+            // Determine whether the length of this sequence is odd or even.
+            evenLengthSequence = true;
+            bool sequenceOver = false;
+            size_t j = i + 1;
+
+            while (j < pf->d_children.size() && !sequenceOver) {
+              std::stringstream dontCare;
+              nodeAfterEqualitySequence = toStreamRecLFSC(dontCare, tp, pf->d_children[j], tb + 1, map );
+
+              if (((nodeAfterEqualitySequence[0] == n1[0]) && (nodeAfterEqualitySequence[1] == n1[1])) ||
+                  ((nodeAfterEqualitySequence[0] == n1[1]) && (nodeAfterEqualitySequence[1] == n1[0]))) {
+                evenLengthSequence = !evenLengthSequence;
+              } else {
+                sequenceOver = true;
+              }
+
+              ++j;
+            }
+
+            if (evenLengthSequence) {
+              // If the length is even, we need to apply transitivity for the "correct" hand of the equality.
+
+              Debug("pf::arith") << "Equality sequence of even length" << std::endl;
+              Debug("pf::arith") << "n1 is: " << n1 << std::endl;
+              Debug("pf::arith") << "n2 is: " << n2 << std::endl;
+              Debug("pf::arith") << "pf-d_node is: " << pf->d_node << std::endl;
+              Debug("pf::arith") << "Next node is: " << nodeAfterEqualitySequence << std::endl;
+
+              ss << "(trans _ _ _ _ ";
+
+              // If the sequence is at the very end of the transitivity proof, use pf->d_node to guide us.
+              if (!sequenceOver) {
+                if (match(n1[0], pf->d_node[0])) {
+                  n1 = eqNode(n1[0], n1[0]);
+                  ss << ss1.str() << " (symm _ _ _ " << ss1.str() << ")";
+                } else if (match(n1[1], pf->d_node[1])) {
+                  n1 = eqNode(n1[1], n1[1]);
+                  ss << " (symm _ _ _ " << ss1.str() << ")" << ss1.str();
+                } else {
+                  Debug("pf::arith") << "Error: identical equalities over, but hands don't match what we're proving."
+                                     << std::endl;
+                  Assert(false);
+                }
+              } else {
+                // We have a "next node". Use it to guide us.
+
+                Assert(nodeAfterEqualitySequence.getKind() == kind::EQUAL);
+
+                if ((n1[0] == nodeAfterEqualitySequence[0]) || (n1[0] == nodeAfterEqualitySequence[1])) {
+
+                  // Eliminate n1[1]
+                  ss << ss1.str() << " (symm _ _ _ " << ss1.str() << ")";
+                  n1 = eqNode(n1[0], n1[0]);
+
+                } else if ((n1[1] == nodeAfterEqualitySequence[0]) || (n1[1] == nodeAfterEqualitySequence[1])) {
+
+                  // Eliminate n1[0]
+                  ss << " (symm _ _ _ " << ss1.str() << ")" << ss1.str();
+                  n1 = eqNode(n1[1], n1[1]);
+
+                } else {
+                  Debug("pf::arith") << "Error: even length sequence, but I don't know which hand to keep!" << std::endl;
+                  Assert(false);
+                }
+              }
+
+              ss << ")";
+
+            } else {
+              Debug("pf::arith") << "Equality sequence length is odd!" << std::endl;
+              ss.str(ss1.str());
+            }
+
+            Debug("pf::arith") << "Have proven: " << n1 << std::endl;
+          } else {
+            ss.str(ss1.str());
+          }
+
+          // Ignore the redundancy.
+          continue;
+        }
+      }
+
+      if (identicalEqualities) {
+        // We were in a sequence of identical equalities, but it has now ended. Resume normal operation.
+        identicalEqualities = false;
+      }
+
+      Debug("pf::arith") << "\ndoing trans proof, got n2 " << n2 << "\n";
+      if(tb == 1) {
+        Debug("pf::arith") << "\ntrans proof[" << i << "], got n2 " << n2 << "\n";
+        Debug("pf::arith") << (n2.getKind() == kind::EQUAL) << "\n";
+
+        if ((n1.getNumChildren() >= 2) && (n2.getNumChildren() >= 2)) {
+          Debug("pf::arith") << n1[0].getId() << " " << n1[1].getId() << " / " << n2[0].getId() << " " << n2[1].getId() << "\n";
+          Debug("pf::arith") << n1[0].getId() << " " << n1[0] << "\n";
+          Debug("pf::arith") << n1[1].getId() << " " << n1[1] << "\n";
+          Debug("pf::arith") << n2[0].getId() << " " << n2[0] << "\n";
+          Debug("pf::arith") << n2[1].getId() << " " << n2[1] << "\n";
+          Debug("pf::arith") << (n1[0] == n2[0]) << "\n";
+          Debug("pf::arith") << (n1[1] == n2[1]) << "\n";
+          Debug("pf::arith") << (n1[0] == n2[1]) << "\n";
+          Debug("pf::arith") << (n1[1] == n2[0]) << "\n";
+        }
+      }
+      ss << "(trans _ _ _ _ ";
+
+      if((n2.getKind() == kind::EQUAL) && (n1.getKind() == kind::EQUAL))
+        // Both elements of the transitivity rule are equalities/iffs
+      {
+        if(n1[0] == n2[0]) {
+            if(tb == 1) { Debug("pf::arith") << "case 1\n"; }
+            n1 = eqNode(n1[1], n2[1]);
+            ss << "(symm _ _ _ " << ss1.str() << ") " << ss2.str();
+        } else if(n1[1] == n2[1]) {
+          if(tb == 1) { Debug("pf::arith") << "case 2\n"; }
+          n1 = eqNode(n1[0], n2[0]);
+          ss << ss1.str() << " (symm _ _ _ " << ss2.str() << ")";
+        } else if(n1[0] == n2[1]) {
+            if(tb == 1) { Debug("pf::arith") << "case 3\n"; }
+            n1 = eqNode(n2[0], n1[1]);
+            ss << ss2.str() << " " << ss1.str();
+            if(tb == 1) { Debug("pf::arith") << "++ proved " << n1 << "\n"; }
+        } else if(n1[1] == n2[0]) {
+          if(tb == 1) { Debug("pf::arith") << "case 4\n"; }
+          n1 = eqNode(n1[0], n2[1]);
+          ss << ss1.str() << " " << ss2.str();
+        } else {
+          Warning() << "\n\ntrans proof failure at step " << i << "\n\n";
+          Warning() << "0 proves " << n1 << "\n";
+          Warning() << "1 proves " << n2 << "\n\n";
+          pf->debug_print("pf::arith",0);
+          //toStreamRec(Warning.getStream(), pf, 0);
+          Warning() << "\n\n";
+          Unreachable();
+        }
+        Debug("pf::arith") << "++ trans proof[" << i << "], now have " << n1 << std::endl;
+      } else if(n1.getKind() == kind::EQUAL) {
+        // n1 is an equality/iff, but n2 is a predicate
+        if(n1[0] == n2) {
+          n1 = n1[1];
+          ss << "(symm _ _ _ " << ss1.str() << ") (pred_eq_t _ " << ss2.str() << ")";
+        } else if(n1[1] == n2) {
+          n1 = n1[0];
+          ss << ss1.str() << " (pred_eq_t _ " << ss2.str() << ")";
+        } else {
+          Unreachable();
+        }
+      } else if(n2.getKind() == kind::EQUAL) {
+        // n2 is an equality/iff, but n1 is a predicate
+        if(n2[0] == n1) {
+          n1 = n2[1];
+          ss << "(symm _ _ _ " << ss2.str() << ") (pred_eq_t _ " << ss1.str() << ")";
+        } else if(n2[1] == n1) {
+          n1 = n2[0];
+          ss << ss2.str() << " (pred_eq_t _ " << ss1.str() << ")";
+        } else {
+          Unreachable();
+        }
+      } else {
+        // Both n1 and n2 are prediacates. Don't know what to do...
+        Unreachable();
+      }
+
+      ss << ")";
+    }
+    out << ss.str();
+    Debug("pf::arith") << "\n++ trans proof done, have proven " << n1 << std::endl;
+    return n1;
+  }
+
+  default:
+    Assert(!pf->d_node.isNull());
+    Assert(pf->d_children.empty());
+    Debug("pf::arith") << "theory proof: " << pf->d_node << " by rule " << int(pf->d_id) << std::endl;
+    AlwaysAssert(false);
+    return pf->d_node;
+  }
+}
+
+ArithProof::ArithProof(theory::arith::TheoryArith* arith, TheoryProofEngine* pe)
+  : TheoryProof(arith, pe), d_realMode(false)
+{}
+
+void ArithProof::registerTerm(Expr term) {
+  Debug("pf::arith") << "Arith register term: " << term << ". Kind: " << term.getKind()
+                            << ". Type: " << term.getType() << std::endl;
+
+  if (term.getType().isReal() && !term.getType().isInteger()) {
+    Debug("pf::arith") << "Entering real mode" << std::endl;
+    d_realMode = true;
+  }
+
+  if (term.isVariable() && !ProofManager::getSkolemizationManager()->isSkolem(term)) {
+    d_declarations.insert(term);
+  }
+
+  // recursively declare all other terms
+  for (unsigned i = 0; i < term.getNumChildren(); ++i) {
+    // could belong to other theories
+    d_proofEngine->registerTerm(term[i]);
+  }
+}
+
+void LFSCArithProof::printOwnedTerm(Expr term, std::ostream& os, const ProofLetMap& map) {
+  Debug("pf::arith") << "Arith print term: " << term << ". Kind: " << term.getKind()
+                     << ". Type: " << term.getType()
+                     << ". Number of children: " << term.getNumChildren() << std::endl;
+
+  // !d_realMode <--> term.getType().isInteger()
+
+  Assert (theory::Theory::theoryOf(term) == theory::THEORY_ARITH);
+  switch (term.getKind()) {
+
+  case kind::CONST_RATIONAL: {
+    Assert (term.getNumChildren() == 0);
+    Assert (term.getType().isInteger() || term.getType().isReal());
+
+    const Rational& r = term.getConst<Rational>();
+    bool neg = (r < 0);
+
+    os << (!d_realMode ? "(a_int " : "(a_real ");
+
+    if (neg) {
+      os << "(~ ";
+    }
+
+    if (!d_realMode) {
+      os << r.abs();
+    } else {
+      os << r.abs().getNumerator();
+      os << "/";
+      os << r.getDenominator();
+    }
+
+    if (neg) {
+      os << ") ";
+    }
+
+    os << ") ";
+    return;
+  }
+
+  case kind::UMINUS: {
+    Assert (term.getNumChildren() == 1);
+    Assert (term.getType().isInteger() || term.getType().isReal());
+    os << (!d_realMode ? "(u-_Int " : "(u-_Real ");
+    d_proofEngine->printBoundTerm(term[0], os, map);
+    os << ") ";
+    return;
+  }
+
+  case kind::PLUS: {
+    Assert (term.getNumChildren() >= 2);
+
+    std::stringstream paren;
+    for (unsigned i = 0; i < term.getNumChildren() - 1; ++i) {
+      os << (!d_realMode ? "(+_Int " : "(+_Real ");
+      d_proofEngine->printBoundTerm(term[i], os, map);
+      os << " ";
+      paren << ") ";
+    }
+
+    d_proofEngine->printBoundTerm(term[term.getNumChildren() - 1], os, map);
+    os << paren.str();
+    return;
+  }
+
+  case kind::MINUS: {
+    Assert (term.getNumChildren() >= 2);
+
+    std::stringstream paren;
+    for (unsigned i = 0; i < term.getNumChildren() - 1; ++i) {
+      os << (!d_realMode ? "(-_Int " : "(-_Real ");
+      d_proofEngine->printBoundTerm(term[i], os, map);
+      os << " ";
+      paren << ") ";
+    }
+
+    d_proofEngine->printBoundTerm(term[term.getNumChildren() - 1], os, map);
+    os << paren.str();
+    return;
+  }
+
+  case kind::MULT: {
+    Assert (term.getNumChildren() >= 2);
+
+    std::stringstream paren;
+    for (unsigned i = 0; i < term.getNumChildren() - 1; ++i) {
+      os << (!d_realMode ? "(*_Int " : "(*_Real ");
+      d_proofEngine->printBoundTerm(term[i], os, map);
+      os << " ";
+      paren << ") ";
+    }
+
+    d_proofEngine->printBoundTerm(term[term.getNumChildren() - 1], os, map);
+    os << paren.str();
+    return;
+  }
+
+  case kind::DIVISION:
+  case kind::DIVISION_TOTAL: {
+    Assert (term.getNumChildren() >= 2);
+
+    std::stringstream paren;
+    for (unsigned i = 0; i < term.getNumChildren() - 1; ++i) {
+      os << (!d_realMode ? "(/_Int " : "(/_Real ");
+      d_proofEngine->printBoundTerm(term[i], os, map);
+      os << " ";
+      paren << ") ";
+    }
+
+    d_proofEngine->printBoundTerm(term[term.getNumChildren() - 1], os, map);
+    os << paren.str();
+    return;
+  }
+
+  case kind::GT:
+    Assert (term.getNumChildren() == 2);
+    os << (!d_realMode ? "(>_Int " : "(>_Real ");
+    d_proofEngine->printBoundTerm(term[0], os, map);
+    os << " ";
+    d_proofEngine->printBoundTerm(term[1], os, map);
+    os << ") ";
+    return;
+
+  case kind::GEQ:
+    Assert (term.getNumChildren() == 2);
+    os << (!d_realMode ? "(>=_Int " : "(>=_Real ");
+    d_proofEngine->printBoundTerm(term[0], os, map);
+    os << " ";
+    d_proofEngine->printBoundTerm(term[1], os, map);
+    os << ") ";
+    return;
+
+  case kind::LT:
+    Assert (term.getNumChildren() == 2);
+    os << (!d_realMode ? "(<_Int " : "(<_Real ");
+    d_proofEngine->printBoundTerm(term[0], os, map);
+    os << " ";
+    d_proofEngine->printBoundTerm(term[1], os, map);
+    os << ") ";
+    return;
+
+  case kind::LEQ:
+    Assert (term.getNumChildren() == 2);
+    os << (!d_realMode ? "(<=_Int " : "(<=_Real ");
+    d_proofEngine->printBoundTerm(term[0], os, map);
+    os << " ";
+    d_proofEngine->printBoundTerm(term[1], os, map);
+    os << ") ";
+    return;
+
+  default:
+    Debug("pf::arith") << "Default printing of term: " << term << std::endl;
+    os << term;
+    return;
+  }
+}
+
+void LFSCArithProof::printOwnedSort(Type type, std::ostream& os) {
+  Debug("pf::arith") << "Arith print sort: " << type << std::endl;
+
+  if (type.isInteger() && d_realMode) {
+    // If in "real mode", don't use type Int for, e.g., equality.
+    os << "Real";
+  } else {
+    os << type;
+  }
+}
+
+void LFSCArithProof::printTheoryLemmaProof(std::vector<Expr>& lemma, std::ostream& os, std::ostream& paren, const ProofLetMap& map) {
+  os << " ;; Arith Theory Lemma \n;;";
+  for (unsigned i = 0; i < lemma.size(); ++i) {
+    os << lemma[i] <<" ";
+  }
+  os <<"\n";
+  //os << " (clausify_false trust)";
+  ArithProof::printTheoryLemmaProof(lemma, os, paren, map);
+}
+
+void LFSCArithProof::printSortDeclarations(std::ostream& os, std::ostream& paren) {
+}
+
+void LFSCArithProof::printTermDeclarations(std::ostream& os, std::ostream& paren) {
+  for (ExprSet::const_iterator it = d_declarations.begin(); it != d_declarations.end(); ++it) {
+    Expr term = *it;
+    Assert(term.isVariable());
+    os << "(% " << ProofManager::sanitize(term) << " ";
+    os << "(term ";
+    os << term.getType() << ")\n";
+    paren << ")";
+  }
+}
+
+void LFSCArithProof::printDeferredDeclarations(std::ostream& os, std::ostream& paren) {
+  // Nothing to do here at this point.
+}
+
+void LFSCArithProof::printAliasingDeclarations(std::ostream& os, std::ostream& paren, const ProofLetMap &globalLetMap) {
+  // Nothing to do here at this point.
+}
+
+} /* CVC4  namespace */
diff --git a/src/proof/arith_proof.h b/src/proof/arith_proof.h
new file mode 100644
index 0000000..0898548
--- /dev/null
+++ b/src/proof/arith_proof.h
@@ -0,0 +1,83 @@
+/*********************                                                        */
+/*! \file arith_proof.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Guy Katz, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Arith proof
+ **
+ ** Arith proof
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__ARITH__PROOF_H
+#define __CVC4__ARITH__PROOF_H
+
+#include "expr/expr.h"
+#include "proof/proof_manager.h"
+#include "proof/theory_proof.h"
+#include "theory/uf/equality_engine.h"
+
+namespace CVC4 {
+
+//proof object outputted by TheoryArith
+class ProofArith : public Proof {
+private:
+  static Node toStreamRecLFSC(std::ostream& out, TheoryProof * tp, theory::eq::EqProof * pf, unsigned tb, const ProofLetMap& map);
+public:
+  ProofArith( theory::eq::EqProof * pf ) : d_proof( pf ) {}
+  //it is simply an equality engine proof
+  theory::eq::EqProof * d_proof;
+  void toStream(std::ostream& out);
+  static void toStreamLFSC(std::ostream& out, TheoryProof * tp, theory::eq::EqProof * pf, const ProofLetMap& map);
+};
+
+
+namespace theory {
+namespace arith {
+class TheoryArith;
+}
+}
+
+typedef __gnu_cxx::hash_set<Type, TypeHashFunction > TypeSet;
+
+
+class ArithProof : public TheoryProof {
+protected:
+  // std::map<Expr, std::string> d_constRationalString; // all the variable/function declarations
+
+  //   TypeSet d_sorts;        // all the uninterpreted sorts in this theory
+  ExprSet d_declarations; // all the variable/function declarations
+
+  bool d_realMode;
+
+public:
+  ArithProof(theory::arith::TheoryArith* arith, TheoryProofEngine* proofEngine);
+
+  virtual void registerTerm(Expr term);
+};
+
+class LFSCArithProof : public ArithProof {
+public:
+  LFSCArithProof(theory::arith::TheoryArith* arith, TheoryProofEngine* proofEngine)
+    : ArithProof(arith, proofEngine)
+  {}
+  virtual void printOwnedTerm(Expr term, std::ostream& os, const ProofLetMap& map);
+  virtual void printOwnedSort(Type type, std::ostream& os);
+  virtual void printTheoryLemmaProof(std::vector<Expr>& lemma, std::ostream& os, std::ostream& paren, const ProofLetMap& map);
+  virtual void printSortDeclarations(std::ostream& os, std::ostream& paren);
+  virtual void printTermDeclarations(std::ostream& os, std::ostream& paren);
+  virtual void printDeferredDeclarations(std::ostream& os, std::ostream& paren);
+  virtual void printAliasingDeclarations(std::ostream& os, std::ostream& paren, const ProofLetMap &globalLetMap);
+};
+
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__ARITH__PROOF_H */
diff --git a/src/proof/array_proof.cpp b/src/proof/array_proof.cpp
new file mode 100644
index 0000000..af158f3
--- /dev/null
+++ b/src/proof/array_proof.cpp
@@ -0,0 +1,1401 @@
+/*********************                                                        */
+/*! \file array_proof.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Guy Katz
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+
+ ** \todo document this file
+
+**/
+
+#include "proof/theory_proof.h"
+#include "proof/proof_manager.h"
+#include "proof/array_proof.h"
+#include "theory/arrays/theory_arrays.h"
+#include <stack>
+
+namespace CVC4 {
+
+inline static Node eqNode(TNode n1, TNode n2) {
+  return NodeManager::currentNM()->mkNode(kind::EQUAL, n1, n2);
+}
+
+// congrence matching term helper
+inline static bool match(TNode n1, TNode n2) {
+  Debug("mgd") << "match " << n1 << " " << n2 << std::endl;
+  if(ProofManager::currentPM()->hasOp(n1)) {
+    n1 = ProofManager::currentPM()->lookupOp(n1);
+  }
+  if(ProofManager::currentPM()->hasOp(n2)) {
+    n2 = ProofManager::currentPM()->lookupOp(n2);
+  }
+  Debug("mgd") << "+ match " << n1 << " " << n2 << std::endl;
+  Debug("pf::array") << "+ match: step 1" << std::endl;
+  if(n1 == n2) {
+    return true;
+  }
+
+  if(n1.getType().isFunction() && n2.hasOperator()) {
+    if(ProofManager::currentPM()->hasOp(n2.getOperator())) {
+      return n1 == ProofManager::currentPM()->lookupOp(n2.getOperator());
+    } else {
+      return n1 == n2.getOperator();
+    }
+  }
+
+  if(n2.getType().isFunction() && n1.hasOperator()) {
+    if(ProofManager::currentPM()->hasOp(n1.getOperator())) {
+      return n2 == ProofManager::currentPM()->lookupOp(n1.getOperator());
+    } else {
+      return n2 == n1.getOperator();
+    }
+  }
+
+  if(n1.hasOperator() && n2.hasOperator() && n1.getOperator() != n2.getOperator()) {
+    if (!((n1.getKind() == kind::SELECT && n2.getKind() == kind::PARTIAL_SELECT_0) ||
+          (n1.getKind() == kind::SELECT && n2.getKind() == kind::PARTIAL_SELECT_1) ||
+          (n1.getKind() == kind::PARTIAL_SELECT_1 && n2.getKind() == kind::SELECT) ||
+          (n1.getKind() == kind::PARTIAL_SELECT_1 && n2.getKind() == kind::PARTIAL_SELECT_0) ||
+          (n1.getKind() == kind::PARTIAL_SELECT_0 && n2.getKind() == kind::SELECT) ||
+          (n1.getKind() == kind::PARTIAL_SELECT_0 && n2.getKind() == kind::PARTIAL_SELECT_1)
+          )) {
+      return false;
+    }
+  }
+
+  for(size_t i = 0; i < n1.getNumChildren() && i < n2.getNumChildren(); ++i) {
+    if(n1[i] != n2[i]) {
+      return false;
+    }
+  }
+
+  return true;
+}
+
+void ProofArray::setRowMergeTag(unsigned tag) {
+  d_reasonRow = tag;
+  d_proofPrinter.d_row = tag;
+}
+
+void ProofArray::setRow1MergeTag(unsigned tag) {
+  d_reasonRow1 = tag;
+  d_proofPrinter.d_row1 = tag;
+}
+
+void ProofArray::setExtMergeTag(unsigned tag) {
+  d_reasonExt = tag;
+  d_proofPrinter.d_ext = tag;
+}
+
+unsigned ProofArray::getRowMergeTag() const {
+  return d_reasonRow;
+}
+
+unsigned ProofArray::getRow1MergeTag() const {
+  return d_reasonRow1;
+}
+
+unsigned ProofArray::getExtMergeTag() const {
+  return d_reasonExt;
+}
+
+void ProofArray::toStream(std::ostream& out) {
+  ProofLetMap map;
+  toStream(out, map);
+}
+
+void ProofArray::toStream(std::ostream& out, const ProofLetMap& map) {
+  Trace("pf::array") << "; Print Array proof..." << std::endl;
+  toStreamLFSC(out, ProofManager::getArrayProof(), d_proof, map);
+  Debug("pf::array") << "; Print Array proof done!" << std::endl;
+}
+
+void ProofArray::toStreamLFSC(std::ostream& out, TheoryProof* tp, theory::eq::EqProof* pf, const ProofLetMap& map) {
+  Debug("pf::array") << "Printing array proof in LFSC : " << std::endl;
+  pf->debug_print("pf::array", 0, &d_proofPrinter);
+  Debug("pf::array") << std::endl;
+  toStreamRecLFSC( out, tp, pf, 0, map );
+  Debug("pf::array") << "Printing array proof in LFSC DONE" << std::endl;
+}
+
+Node ProofArray::toStreamRecLFSC(std::ostream& out,
+                                 TheoryProof* tp,
+                                 theory::eq::EqProof* pf,
+                                 unsigned tb,
+                                 const ProofLetMap& map) {
+
+  Debug("pf::array") << std::endl << std::endl << "toStreamRecLFSC called. tb = " << tb << " . proof:" << std::endl;
+  pf->debug_print("pf::array", 0, &d_proofPrinter);
+  Debug("pf::array") << std::endl;
+
+  if(tb == 0) {
+    Assert(pf->d_id == theory::eq::MERGED_THROUGH_TRANS);
+    Assert(!pf->d_node.isNull());
+    Assert(pf->d_children.size() >= 2);
+
+    int neg = -1;
+    theory::eq::EqProof subTrans;
+    subTrans.d_id = theory::eq::MERGED_THROUGH_TRANS;
+    subTrans.d_node = pf->d_node;
+
+    size_t i = 0;
+    while (i < pf->d_children.size()) {
+      // Look for the negative clause, with which we will form a contradiction.
+      if(!pf->d_children[i]->d_node.isNull() && pf->d_children[i]->d_node.getKind() == kind::NOT) {
+        Assert(neg < 0);
+        neg = i;
+        ++i;
+      }
+
+      // Handle congruence closures over equalities.
+      else if (pf->d_children[i]->d_id==theory::eq::MERGED_THROUGH_CONGRUENCE && pf->d_children[i]->d_node.isNull()) {
+        Debug("pf::array") << "Handling congruence over equalities" << std::endl;
+
+        // Gather the sequence of consecutive congruence closures.
+        std::vector<const theory::eq::EqProof *> congruenceClosures;
+        unsigned count;
+        Debug("pf::array") << "Collecting congruence sequence" << std::endl;
+        for (count = 0;
+             i + count < pf->d_children.size() &&
+               pf->d_children[i + count]->d_id==theory::eq::MERGED_THROUGH_CONGRUENCE &&
+               pf->d_children[i + count]->d_node.isNull();
+             ++count) {
+          Debug("pf::array") << "Found a congruence: " << std::endl;
+          pf->d_children[i+count]->debug_print("pf::array", 0, &d_proofPrinter);
+          congruenceClosures.push_back(pf->d_children[i+count]);
+        }
+
+        Debug("pf::array") << "Total number of congruences found: " << congruenceClosures.size() << std::endl;
+
+        // Determine if the "target" of the congruence sequence appears right before or right after the sequence.
+        bool targetAppearsBefore = true;
+        bool targetAppearsAfter = true;
+
+        if ((i == 0) || (i == 1 && neg == 0)) {
+          Debug("pf::array") << "Target does not appear before" << std::endl;
+          targetAppearsBefore = false;
+        }
+
+        if ((i + count >= pf->d_children.size()) ||
+            (!pf->d_children[i + count]->d_node.isNull() &&
+             pf->d_children[i + count]->d_node.getKind() == kind::NOT)) {
+          Debug("pf::array") << "Target does not appear after" << std::endl;
+          targetAppearsAfter = false;
+        }
+
+        // Assert that we have precisely one target clause.
+        Assert(targetAppearsBefore != targetAppearsAfter);
+
+        // Begin breaking up the congruences and ordering the equalities correctly.
+        std::vector<theory::eq::EqProof *> orderedEqualities;
+
+        // Insert target clause first.
+        if (targetAppearsBefore) {
+          orderedEqualities.push_back(pf->d_children[i - 1]);
+          // The target has already been added to subTrans; remove it.
+          subTrans.d_children.pop_back();
+        } else {
+          orderedEqualities.push_back(pf->d_children[i + count]);
+        }
+
+        // Start with the congruence closure closest to the target clause, and work our way back/forward.
+        if (targetAppearsBefore) {
+          for (unsigned j = 0; j < count; ++j) {
+            if (pf->d_children[i + j]->d_children[0]->d_id != theory::eq::MERGED_THROUGH_REFLEXIVITY)
+              orderedEqualities.insert(orderedEqualities.begin(), pf->d_children[i + j]->d_children[0]);
+            if (pf->d_children[i + j]->d_children[1]->d_id != theory::eq::MERGED_THROUGH_REFLEXIVITY)
+              orderedEqualities.insert(orderedEqualities.end(), pf->d_children[i + j]->d_children[1]);
+          }
+        } else {
+          for (unsigned j = 0; j < count; ++j) {
+            if (pf->d_children[i + count - 1 - j]->d_children[0]->d_id != theory::eq::MERGED_THROUGH_REFLEXIVITY)
+              orderedEqualities.insert(orderedEqualities.begin(), pf->d_children[i + count - 1 - j]->d_children[0]);
+            if (pf->d_children[i + count - 1 - j]->d_children[1]->d_id != theory::eq::MERGED_THROUGH_REFLEXIVITY)
+              orderedEqualities.insert(orderedEqualities.end(), pf->d_children[i + count - 1 - j]->d_children[1]);
+          }
+        }
+
+        // Copy the result into the main transitivity proof.
+        subTrans.d_children.insert(subTrans.d_children.end(), orderedEqualities.begin(), orderedEqualities.end());
+
+        // Increase i to skip over the children that have been processed.
+        i += count;
+        if (targetAppearsAfter) {
+          ++i;
+        }
+      }
+
+      // Else, just copy the child proof as is
+      else {
+        subTrans.d_children.push_back(pf->d_children[i]);
+        ++i;
+      }
+    }
+
+    bool disequalityFound = (neg >= 0);
+    if (!disequalityFound) {
+      Debug("pf::array") << "A disequality was NOT found. UNSAT due to merged constants" << std::endl;
+      Debug("pf::array") << "Proof for: " << pf->d_node << std::endl;
+      Assert(pf->d_node.getKind() == kind::EQUAL);
+      Assert(pf->d_node.getNumChildren() == 2);
+      Assert (pf->d_node[0].isConst() && pf->d_node[1].isConst());
+    }
+
+    Node n1;
+    std::stringstream ss, ss2;
+    //Assert(subTrans.d_children.size() == pf->d_children.size() - 1);
+    Debug("mgdx") << "\nsubtrans has " << subTrans.d_children.size() << " children\n";
+    if(!disequalityFound || pf->d_children.size() > 2) {
+      n1 = toStreamRecLFSC(ss, tp, &subTrans, 1, map);
+    } else {
+      n1 = toStreamRecLFSC(ss, tp, subTrans.d_children[0], 1, map);
+      Debug("mgdx") << "\nsubTrans unique child " << subTrans.d_children[0]->d_id << " was proven\ngot: " << n1 << std::endl;
+    }
+
+    out << "(clausify_false (contra _ ";
+
+    if (disequalityFound) {
+      Node n2 = pf->d_children[neg]->d_node;
+      Assert(n2.getKind() == kind::NOT);
+      Debug("mgdx") << "\nhave proven: " << n1 << std::endl;
+      Debug("mgdx") << "n2 is " << n2 << std::endl;
+      Debug("mgdx") << "n2->d_id is " << pf->d_children[neg]->d_id << std::endl;
+      Debug("mgdx") << "n2[0] is " << n2[0] << std::endl;
+
+      if (n2[0].getNumChildren() > 0) { Debug("mgdx") << "\nn2[0]: " << n2[0][0] << std::endl; }
+      if (n1.getNumChildren() > 1) { Debug("mgdx") << "n1[1]: " << n1[1] << std::endl; }
+
+      if ((pf->d_children[neg]->d_id == d_reasonExt) ||
+          (pf->d_children[neg]->d_id == theory::eq::MERGED_THROUGH_TRANS)) {
+        // Ext case: The negative node was created by an EXT rule; e.g. it is a[k]!=b[k], due to a!=b.
+        out << ss.str();
+        out << " ";
+        toStreamRecLFSC(ss2, tp, pf->d_children[neg], 1, map);
+        out << ss2.str();
+      } else if (n2[0].getKind() == kind::APPLY_UF) {
+        out << "(trans _ _ _ _ ";
+        out << "(symm _ _ _ ";
+        out << ss.str();
+        out << ") (pred_eq_f _ " << ProofManager::getLitName(n2[0]) << ")) t_t_neq_f))" << std::endl;
+      } else {
+        Assert((n1[0] == n2[0][0] && n1[1] == n2[0][1]) || (n1[1] == n2[0][0] && n1[0] == n2[0][1]));
+        if(n1[1] == n2[0][0]) {
+          out << "(symm _ _ _ " << ss.str() << ")";
+        } else {
+          out << ss.str();
+        }
+        Debug("pf::array") << "ArrayProof::toStream: getLitName( " << n2[0] << " ) = " <<
+          ProofManager::getLitName(n2[0]) << std::endl;
+
+        out << " " << ProofManager::getLitName(n2[0]);
+      }
+    } else {
+      Node n2 = pf->d_node;
+      Assert(n2.getKind() == kind::EQUAL);
+      Assert((n1[0] == n2[0] && n1[1] == n2[1]) || (n1[1] == n2[0] && n1[0] == n2[1]));
+
+      out << ss.str();
+      out << " ";
+      ProofManager::getTheoryProofEngine()->printConstantDisequalityProof(out,
+                                                                          n1[0].toExpr(),
+                                                                          n1[1].toExpr(),
+                                                                          map);
+    }
+
+    out << "))" << std::endl;
+    return Node();
+  }
+
+  if (pf->d_id == theory::eq::MERGED_THROUGH_CONGRUENCE) {
+    Debug("mgd") << "\nok, looking at congruence:\n";
+    pf->debug_print("mgd", 0, &d_proofPrinter);
+    std::stack<const theory::eq::EqProof*> stk;
+    for(const theory::eq::EqProof* pf2 = pf; pf2->d_id == theory::eq::MERGED_THROUGH_CONGRUENCE; pf2 = pf2->d_children[0]) {
+      Assert(!pf2->d_node.isNull());
+      Assert(pf2->d_node.getKind() == kind::PARTIAL_APPLY_UF ||
+             pf2->d_node.getKind() == kind::BUILTIN ||
+             pf2->d_node.getKind() == kind::APPLY_UF ||
+             pf2->d_node.getKind() == kind::SELECT ||
+             pf2->d_node.getKind() == kind::PARTIAL_SELECT_0 ||
+             pf2->d_node.getKind() == kind::PARTIAL_SELECT_1 ||
+             pf2->d_node.getKind() == kind::STORE);
+
+      Assert(pf2->d_children.size() == 2);
+      out << "(cong _ _ _ _ _ _ ";
+      stk.push(pf2);
+    }
+    Assert(stk.top()->d_children[0]->d_id != theory::eq::MERGED_THROUGH_CONGRUENCE);
+    //    NodeBuilder<> b1(kind::PARTIAL_APPLY_UF), b2(kind::PARTIAL_APPLY_UF);
+    NodeBuilder<> b1, b2;
+
+    const theory::eq::EqProof* pf2 = stk.top();
+    stk.pop();
+    Assert(pf2->d_id == theory::eq::MERGED_THROUGH_CONGRUENCE);
+    Node n1 = toStreamRecLFSC(out, tp, pf2->d_children[0], tb + 1, map);
+    out << " ";
+    std::stringstream ss;
+    Node n2 = toStreamRecLFSC(ss, tp, pf2->d_children[1], tb + 1, map);
+
+
+    Debug("mgd") << "\nok, in FIRST cong[" << stk.size() << "]" << "\n";
+    pf2->debug_print("mgd", 0, &d_proofPrinter);
+    // Temp
+    Debug("mgd") << "n1 is a proof for: " << pf2->d_children[0]->d_node << ". It is: " << n1 << std::endl;
+    Debug("mgd") << "n2 is a proof for: " << pf2->d_children[1]->d_node << ". It is: " << n2 << std::endl;
+    //
+    Debug("mgd") << "looking at " << pf2->d_node << "\n";
+    Debug("mgd") << "           " << n1 << "\n";
+    Debug("mgd") << "           " << n2 << "\n";
+
+    int side = 0;
+    if(match(pf2->d_node, n1[0])) {
+      Debug("mgd") << "SIDE IS 0\n";
+      side = 0;
+    } else {
+      Debug("mgd") << "SIDE IS 1\n";
+      if(!match(pf2->d_node, n1[1])) {
+        Debug("mgd") << "IN BAD CASE, our first subproof is\n";
+        pf2->d_children[0]->debug_print("mgd", 0, &d_proofPrinter);
+      }
+      Assert(match(pf2->d_node, n1[1]));
+      side = 1;
+    }
+
+    if(n1[side].getKind() == kind::APPLY_UF ||
+       n1[side].getKind() == kind::PARTIAL_APPLY_UF ||
+       n1[side].getKind() == kind::SELECT ||
+       n1[side].getKind() == kind::PARTIAL_SELECT_1 ||
+       n1[side].getKind() == kind::STORE) {
+      if(n1[side].getKind() == kind::APPLY_UF || n1[side].getKind() == kind::PARTIAL_APPLY_UF) {
+        b1 << kind::PARTIAL_APPLY_UF;
+        b1 << n1[side].getOperator();
+      } else if (n1[side].getKind() == kind::SELECT || n1[side].getKind() == kind::PARTIAL_SELECT_1) {
+        // b1 << n1[side].getKind();
+        b1 << kind::SELECT;
+      } else {
+        b1 << kind::PARTIAL_APPLY_UF;
+        b1 << ProofManager::currentPM()->mkOp(n1[side].getOperator());
+      }
+      b1.append(n1[side].begin(), n1[side].end());
+    }
+    else if (n1[side].getKind() == kind::PARTIAL_SELECT_0) {
+      b1 << kind::PARTIAL_SELECT_1;
+    } else {
+      b1 << n1[side];
+    }
+
+    if(n1[1-side].getKind() == kind::PARTIAL_APPLY_UF ||
+       n1[1-side].getKind() == kind::APPLY_UF ||
+       n1[1-side].getKind() == kind::SELECT ||
+       n1[1-side].getKind() == kind::PARTIAL_SELECT_1 ||
+       n1[1-side].getKind() == kind::STORE) {
+      if(n1[1-side].getKind() == kind::APPLY_UF ||
+         n1[1-side].getKind() == kind::PARTIAL_APPLY_UF) {
+        b2 << kind::PARTIAL_APPLY_UF;
+        b2 << n1[1-side].getOperator();
+      } else if (n1[1-side].getKind() == kind::SELECT || n1[1-side].getKind() == kind::PARTIAL_SELECT_1) {
+        // b2 << n1[1-side].getKind();
+        b2 << kind::SELECT;
+      } else {
+        b2 << kind::PARTIAL_APPLY_UF;
+        b2 << ProofManager::currentPM()->mkOp(n1[1-side].getOperator());
+      }
+      b2.append(n1[1-side].begin(), n1[1-side].end());
+    } else if (n1[1-side].getKind() == kind::PARTIAL_SELECT_0) {
+      b2 << kind::PARTIAL_SELECT_1;
+    } else {
+      b2 << n1[1-side];
+    }
+    Debug("mgd") << "pf2->d_node " << pf2->d_node << std::endl;
+    Debug("mgd") << "b1.getNumChildren() " << b1.getNumChildren() << std::endl;
+    Debug("mgd") << "n1 " << n1 << std::endl;
+    Debug("mgd") << "n2 " << n2 << std::endl;
+    // These debug prints can cause a problem if we're constructing a SELECT node and it doesn't have enough
+    // children yet.
+    // Debug("mgd") << "b1 " << b1 << std::endl;
+    // Debug("mgd") << "b2 " << b2 << std::endl;
+    Debug("mgd") << "side " << side << std::endl;
+    Debug("mgd") << "pf2->d_node's number of children: " << pf2->d_node.getNumChildren() << std::endl;
+    Debug("mgd") << "pf2->d_node's meta kind: " << pf2->d_node.getMetaKind() << std::endl;
+    Debug("mgd") << "Is this meta kind considered parameterized? " << (pf2->d_node.getMetaKind() == kind::metakind::PARAMETERIZED) << std::endl;
+
+    if(pf2->d_node[b1.getNumChildren() +
+                   (n1[side].getKind() == kind::PARTIAL_SELECT_0 ? 1 : 0) +
+                   (n1[side].getKind() == kind::PARTIAL_SELECT_1 ? 1 : 0) -
+                   (pf2->d_node.getMetaKind() == kind::metakind::PARAMETERIZED ? 0 : 1)] == n2[side]) {
+      b1 << n2[side];
+      b2 << n2[1-side];
+      out << ss.str();
+    } else {
+      Assert(pf2->d_node[b1.getNumChildren() +
+                         (n1[side].getKind() == kind::PARTIAL_SELECT_0 ? 1 : 0) +
+                         (n1[side].getKind() == kind::PARTIAL_SELECT_1 ? 1 : 0) -
+                         (pf2->d_node.getMetaKind() == kind::metakind::PARAMETERIZED ? 0 : 1)] == n2[1-side]);
+      b1 << n2[1-side];
+      b2 << n2[side];
+      out << "(symm _ _ _ " << ss.str() << ")";
+    }
+
+    Debug("mgd") << "After first insertion:" << std::endl;
+    Debug("mgd") << "b1 " << b1 << std::endl;
+    Debug("mgd") << "b2 " << b2 << std::endl;
+
+    out << ")";
+    while(!stk.empty()) {
+
+      Debug("mgd") << "\nMORE TO DO\n";
+
+      pf2 = stk.top();
+      stk.pop();
+      Assert(pf2->d_id == theory::eq::MERGED_THROUGH_CONGRUENCE);
+      out << " ";
+      ss.str("");
+      n2 = toStreamRecLFSC(ss, tp, pf2->d_children[1], tb + 1, map);
+
+      Debug("mgd") << "\nok, in cong[" << stk.size() << "]" << "\n";
+      Debug("mgd") << "looking at " << pf2->d_node << "\n";
+      Debug("mgd") << "           " << n1 << "\n";
+      Debug("mgd") << "           " << n2 << "\n";
+      Debug("mgd") << "           " << b1 << "\n";
+      Debug("mgd") << "           " << b2 << "\n";
+      if(pf2->d_node[b1.getNumChildren()] == n2[side]) {
+        b1 << n2[side];
+        b2 << n2[1-side];
+        out << ss.str();
+      } else {
+        Assert(pf2->d_node[b1.getNumChildren()] == n2[1-side]);
+        b1 << n2[1-side];
+        b2 << n2[side];
+        out << "(symm _ _ _ " << ss.str() << ")";
+      }
+      out << ")";
+    }
+    n1 = b1;
+    n2 = b2;
+
+    Debug("mgd") << "at end assert!" << std::endl
+                 << "pf2->d_node = " << pf2->d_node << std::endl
+                 << "n1 (assigned from b1) = " << n1 << std::endl
+                 << "n2 (assigned from b2) = " << n2 << std::endl;
+
+    if(pf2->d_node.getKind() == kind::PARTIAL_APPLY_UF) {
+      Assert(n1 == pf2->d_node);
+    }
+
+    Debug("mgd") << "n1.getOperator().getType().getNumChildren() = "
+                 << n1.getOperator().getType().getNumChildren() << std::endl;
+    Debug("mgd") << "n1.getNumChildren() + 1 = "
+                 << n1.getNumChildren() + 1 << std::endl;
+
+    Assert(!((n1.getKind() == kind::PARTIAL_SELECT_0 && n1.getNumChildren() == 2)));
+    if (n1.getKind() == kind::PARTIAL_SELECT_1 && n1.getNumChildren() == 2) {
+      Debug("mgd") << "Finished a SELECT. Updating.." << std::endl;
+      b1.clear(kind::SELECT);
+      b1.append(n1.begin(), n1.end());
+      n1 = b1;
+      Debug("mgd") << "New n1: " << n1 << std::endl;
+      // } else if (n1.getKind() == kind::PARTIAL_SELECT_0 && n1.getNumChildren() == 1) {
+      //   Debug("mgd") << "Finished a PARTIAL_SELECT_1. Updating.." << std::endl;
+      //   b1.clear(kind::PARTIAL_SELECT_1);
+      //   b1.append(n1.begin(), n1.end());
+      //   n1 = b1;
+      //   Debug("mgd") << "New n1: " << n1 << std::endl;
+      // } else
+    } else if(n1.getOperator().getType().getNumChildren() == n1.getNumChildren() + 1) {
+      if(ProofManager::currentPM()->hasOp(n1.getOperator())) {
+        b1.clear(ProofManager::currentPM()->lookupOp(n2.getOperator()).getConst<Kind>());
+      } else {
+        b1.clear(kind::APPLY_UF);
+        b1 << n1.getOperator();
+      }
+      b1.append(n1.begin(), n1.end());
+      n1 = b1;
+      Debug("mgd") << "at[2] end assert, got " << pf2->d_node << "  and  " << n1 << std::endl;
+      if(pf2->d_node.getKind() == kind::APPLY_UF) {
+        Assert(n1 == pf2->d_node);
+      }
+    }
+
+    Debug("mgd") << "n2.getOperator().getType().getNumChildren() = "
+                 << n2.getOperator().getType().getNumChildren() << std::endl;
+    Debug("mgd") << "n2.getNumChildren() + 1 = "
+                 << n2.getNumChildren() + 1 << std::endl;
+
+    Assert(!((n2.getKind() == kind::PARTIAL_SELECT_0 && n2.getNumChildren() == 2)));
+    if (n2.getKind() == kind::PARTIAL_SELECT_1 && n2.getNumChildren() == 2) {
+      Debug("mgd") << "Finished a SELECT. Updating.." << std::endl;
+      b2.clear(kind::SELECT);
+      b2.append(n2.begin(), n2.end());
+      n2 = b2;
+      Debug("mgd") << "New n2: " << n2 << std::endl;
+      // } else if (n2.getKind() == kind::PARTIAL_SELECT_0 && n2.getNumChildren() == 1) {
+      //   Debug("mgd") << "Finished a PARTIAL_SELECT_1. Updating.." << std::endl;
+      //   b2.clear(kind::PARTIAL_SELECT_1);
+      //   b2.append(n2.begin(), n2.end());
+      //   n2 = b2;
+      //   Debug("mgd") << "New n2: " << n2 << std::endl;
+      // } else
+    } else if(n2.getOperator().getType().getNumChildren() == n2.getNumChildren() + 1) {
+      if(ProofManager::currentPM()->hasOp(n2.getOperator())) {
+        b2.clear(ProofManager::currentPM()->lookupOp(n2.getOperator()).getConst<Kind>());
+      } else {
+        b2.clear(kind::APPLY_UF);
+        b2 << n2.getOperator();
+      }
+      b2.append(n2.begin(), n2.end());
+      n2 = b2;
+    }
+    Node n = (side == 0 ? eqNode(n1, n2) : eqNode(n2, n1));
+
+    Debug("mgdx") << "\ncong proved: " << n << "\n";
+    return n;
+  }
+
+  else if (pf->d_id == theory::eq::MERGED_THROUGH_REFLEXIVITY) {
+    Assert(!pf->d_node.isNull());
+    Assert(pf->d_children.empty());
+    out << "(refl _ ";
+    tp->printTerm(NodeManager::currentNM()->toExpr(pf->d_node), out, map);
+    out << ")";
+    return eqNode(pf->d_node, pf->d_node);
+  }
+
+  else if (pf->d_id == theory::eq::MERGED_THROUGH_EQUALITY) {
+    Assert(!pf->d_node.isNull());
+    Assert(pf->d_children.empty());
+    Debug("pf::array") << "ArrayProof::toStream: getLitName( " << pf->d_node.negate() << " ) = " <<
+      ProofManager::getLitName(pf->d_node.negate()) << std::endl;
+    out << ProofManager::getLitName(pf->d_node.negate());
+    return pf->d_node;
+  }
+
+  else if (pf->d_id == theory::eq::MERGED_THROUGH_CONSTANTS) {
+    Debug("pf::array") << "Proof for: " << pf->d_node << std::endl;
+    Assert(pf->d_node.getKind() == kind::NOT);
+    Node n = pf->d_node[0];
+    Assert(n.getKind() == kind::EQUAL);
+    Assert(n.getNumChildren() == 2);
+    Assert(n[0].isConst() && n[1].isConst());
+
+    ProofManager::getTheoryProofEngine()->printConstantDisequalityProof(out,
+                                                                        n[0].toExpr(),
+                                                                        n[1].toExpr(),
+                                                                        map);
+    return pf->d_node;
+  }
+
+  else if (pf->d_id == theory::eq::MERGED_THROUGH_TRANS) {
+    bool firstNeg = false;
+    bool secondNeg = false;
+
+    Assert(!pf->d_node.isNull());
+    Assert(pf->d_children.size() >= 2);
+    std::stringstream ss;
+    Debug("mgd") << "\ndoing trans proof[[\n";
+    pf->debug_print("mgd", 0, &d_proofPrinter);
+    Debug("mgd") << "\n";
+    Node n1 = toStreamRecLFSC(ss, tp, pf->d_children[0], tb + 1, map);
+    Debug("mgd") << "\ndoing trans proof, got n1 " << n1 << "\n";
+    if(tb == 1) {
+      Debug("mgdx") << "\ntrans proof[0], got n1 " << n1 << "\n";
+    }
+
+    bool identicalEqualities = false;
+    bool evenLengthSequence;
+    Node nodeAfterEqualitySequence;
+
+    std::map<size_t, Node> childToStream;
+
+    for(size_t i = 1; i < pf->d_children.size(); ++i) {
+      std::stringstream ss1(ss.str()), ss2;
+      ss.str("");
+
+      // It is possible that we've already converted the i'th child to stream. If so,
+      // use previously stored result. Otherwise, convert and store.
+      Node n2;
+      if (childToStream.find(i) != childToStream.end())
+        n2 = childToStream[i];
+      else {
+        n2 = toStreamRecLFSC(ss2, tp, pf->d_children[i], tb + 1, map);
+        childToStream[i] = n2;
+      }
+
+      Debug("mgd") << "\ndoing trans proof, got (first) n2 " << n2 << "\n";
+
+      // The following branch is dedicated to handling sequences of identical equalities,
+      // i.e. trans[ a=b, a=b, a=b ].
+      //
+      // There are two cases:
+      //    1. The number of equalities is odd. Then, the sequence can be collapsed to just one equality,
+      //       i.e. a=b.
+      //    2. The number of equalities is even. Now, we have two options: a=a or b=b. To determine this,
+      //       we look at the node after the equality sequence. If it needs a, we go for a=a; and if it needs
+      //       b, we go for b=b. If there is no following node, we look at the goal of the transitivity proof,
+      //       and use it to determine which option we need.
+
+      if(n2.getKind() == kind::EQUAL) {
+        if (((n1[0] == n2[0]) && (n1[1] == n2[1])) || ((n1[0] == n2[1]) && (n1[1] == n2[0]))) {
+          // We are in a sequence of identical equalities
+
+          Debug("pf::array") << "Detected identical equalities: " << std::endl << "\t" << n1 << std::endl;
+
+          if (!identicalEqualities) {
+            // The sequence of identical equalities has started just now
+            identicalEqualities = true;
+
+            Debug("pf::array") << "The sequence is just beginning. Determining length..." << std::endl;
+
+            // Determine whether the length of this sequence is odd or even.
+            evenLengthSequence = true;
+            bool sequenceOver = false;
+            size_t j = i + 1;
+
+            while (j < pf->d_children.size() && !sequenceOver) {
+              std::stringstream dontCare;
+              nodeAfterEqualitySequence = toStreamRecLFSC(dontCare, tp, pf->d_children[j], tb + 1, map );
+
+              if (((nodeAfterEqualitySequence[0] == n1[0]) && (nodeAfterEqualitySequence[1] == n1[1])) ||
+                  ((nodeAfterEqualitySequence[0] == n1[1]) && (nodeAfterEqualitySequence[1] == n1[0]))) {
+                evenLengthSequence = !evenLengthSequence;
+              } else {
+                sequenceOver = true;
+              }
+
+              ++j;
+            }
+
+            if (evenLengthSequence) {
+              // If the length is even, we need to apply transitivity for the "correct" hand of the equality.
+
+              Debug("pf::array") << "Equality sequence of even length" << std::endl;
+              Debug("pf::array") << "n1 is: " << n1 << std::endl;
+              Debug("pf::array") << "n2 is: " << n2 << std::endl;
+              Debug("pf::array") << "pf-d_node is: " << pf->d_node << std::endl;
+              Debug("pf::array") << "Next node is: " << nodeAfterEqualitySequence << std::endl;
+
+              ss << "(trans _ _ _ _ ";
+
+              // If the sequence is at the very end of the transitivity proof, use pf->d_node to guide us.
+              if (!sequenceOver) {
+                if (match(n1[0], pf->d_node[0])) {
+                  n1 = eqNode(n1[0], n1[0]);
+                  ss << ss1.str() << " (symm _ _ _ " << ss1.str() << ")";
+                } else if (match(n1[1], pf->d_node[1])) {
+                  n1 = eqNode(n1[1], n1[1]);
+                  ss << " (symm _ _ _ " << ss1.str() << ")" << ss1.str();
+                } else {
+                  Debug("pf::array") << "Error: identical equalities over, but hands don't match what we're proving."
+                                     << std::endl;
+                  Assert(false);
+                }
+              } else {
+                // We have a "next node". Use it to guide us.
+                if (nodeAfterEqualitySequence.getKind() == kind::NOT) {
+                  nodeAfterEqualitySequence = nodeAfterEqualitySequence[0];
+                }
+
+                Assert(nodeAfterEqualitySequence.getKind() == kind::EQUAL);
+
+                if ((n1[0] == nodeAfterEqualitySequence[0]) || (n1[0] == nodeAfterEqualitySequence[1])) {
+
+                  // Eliminate n1[1]
+                  ss << ss1.str() << " (symm _ _ _ " << ss1.str() << ")";
+                  n1 = eqNode(n1[0], n1[0]);
+
+                } else if ((n1[1] == nodeAfterEqualitySequence[0]) || (n1[1] == nodeAfterEqualitySequence[1])) {
+
+                  // Eliminate n1[0]
+                  ss << " (symm _ _ _ " << ss1.str() << ")" << ss1.str();
+                  n1 = eqNode(n1[1], n1[1]);
+
+                } else {
+                  Debug("pf::array") << "Error: even length sequence, but I don't know which hand to keep!" << std::endl;
+                  Assert(false);
+                }
+              }
+
+              ss << ")";
+
+            } else {
+              Debug("pf::array") << "Equality sequence length is odd!" << std::endl;
+              ss.str(ss1.str());
+            }
+
+            Debug("pf::array") << "Have proven: " << n1 << std::endl;
+          } else {
+            ss.str(ss1.str());
+          }
+
+          // Ignore the redundancy.
+          continue;
+        }
+      }
+
+      if (identicalEqualities) {
+        // We were in a sequence of identical equalities, but it has now ended. Resume normal operation.
+        identicalEqualities = false;
+      }
+
+      Debug("mgd") << "\ndoing trans proof, got n2 " << n2 << "\n";
+      if(tb == 1) {
+        Debug("mgdx") << "\ntrans proof[" << i << "], got n2 " << n2 << "\n";
+        Debug("mgdx") << (n2.getKind() == kind::EQUAL) << "\n";
+
+        if ((n1.getNumChildren() >= 2) && (n2.getNumChildren() >= 2)) {
+          Debug("mgdx") << n1[0].getId() << " " << n1[1].getId() << " / " << n2[0].getId() << " " << n2[1].getId() << "\n";
+          Debug("mgdx") << n1[0].getId() << " " << n1[0] << "\n";
+          Debug("mgdx") << n1[1].getId() << " " << n1[1] << "\n";
+          Debug("mgdx") << n2[0].getId() << " " << n2[0] << "\n";
+          Debug("mgdx") << n2[1].getId() << " " << n2[1] << "\n";
+          Debug("mgdx") << (n1[0] == n2[0]) << "\n";
+          Debug("mgdx") << (n1[1] == n2[1]) << "\n";
+          Debug("mgdx") << (n1[0] == n2[1]) << "\n";
+          Debug("mgdx") << (n1[1] == n2[0]) << "\n";
+        }
+      }
+
+      // We can hadnle one of the equalities being negative, but not both
+      Assert((n1.getKind() != kind::NOT) || (n2.getKind() != kind::NOT));
+
+      firstNeg = false;
+      secondNeg = false;
+
+      if (n1.getKind() == kind::NOT) {
+        Debug("mgdx") << "n1 is negative" << std::endl;
+        Debug("pf::array") << "n1 = " << n1 << ", n2 = " << n2 << std::endl;
+        firstNeg = true;
+        ss << "(negtrans1 _ _ _ _ ";
+        n1 = n1[0];
+      } else if (n2.getKind() == kind::NOT) {
+        Debug("mgdx") << "n2 is negative" << std::endl;
+        Debug("pf::array") << "n1 = " << n1 << ", n2 = " << n2 << std::endl;
+        secondNeg = true;
+        ss << "(negtrans2 _ _ _ _ ";
+        n2 = n2[0];
+      } else {
+        ss << "(trans _ _ _ _ ";
+      }
+
+      if((n2.getKind() == kind::EQUAL) && (n1.getKind() == kind::EQUAL))
+        // Both elements of the transitivity rule are equalities/iffs
+      {
+        if(n1[0] == n2[0]) {
+          if(tb == 1) { Debug("mgdx") << "case 1\n"; }
+          n1 = eqNode(n1[1], n2[1]);
+          ss << (firstNeg ? "(negsymm _ _ _ " : "(symm _ _ _ ") << ss1.str() << ") " << ss2.str();
+        } else if(n1[1] == n2[1]) {
+          if(tb == 1) { Debug("mgdx") << "case 2\n"; }
+          n1 = eqNode(n1[0], n2[0]);
+          ss << ss1.str() << (secondNeg ? " (negsymm _ _ _ " : " (symm _ _ _ " ) << ss2.str() << ")";
+        } else if(n1[0] == n2[1]) {
+          if(tb == 1) { Debug("mgdx") << "case 3\n"; }
+          if(!firstNeg && !secondNeg) {
+            n1 = eqNode(n2[0], n1[1]);
+            ss << ss2.str() << " " << ss1.str();
+          } else if (firstNeg) {
+            n1 = eqNode(n1[1], n2[0]);
+            ss << " (negsymm _ _ _ " << ss1.str() << ") (symm _ _ _ " << ss2.str() << ")";
+          } else {
+            Assert(secondNeg);
+            n1 = eqNode(n1[1], n2[0]);
+            ss << " (symm _ _ _ " << ss1.str() << ") (negsymm _ _ _ " << ss2.str() << ")";
+          }
+          if(tb == 1) { Debug("mgdx") << "++ proved " << n1 << "\n"; }
+        } else if(n1[1] == n2[0]) {
+          if(tb == 1) { Debug("mgdx") << "case 4\n"; }
+          n1 = eqNode(n1[0], n2[1]);
+          ss << ss1.str() << " " << ss2.str();
+        } else {
+          Warning() << "\n\ntrans proof failure at step " << i << "\n\n";
+          Warning() << "0 proves " << n1 << "\n";
+          Warning() << "1 proves " << n2 << "\n\n";
+          pf->debug_print("mgdx", 0, &d_proofPrinter);
+          //toStreamRec(Warning.getStream(), pf, 0);
+          Warning() << "\n\n";
+          Unreachable();
+        }
+        Debug("mgd") << "++ trans proof[" << i << "], now have " << n1 << std::endl;
+      } else if(n1.getKind() == kind::EQUAL) {
+        // n1 is an equality/iff, but n2 is a predicate
+        if(n1[0] == n2) {
+          n1 = n1[1];
+          ss << (firstNeg ? "(negsymm _ _ _ " : "(symm _ _ _ ")
+             << ss1.str() << ") (pred_eq_t _ " << ss2.str() << ")";
+        } else if(n1[1] == n2) {
+          n1 = n1[0];
+          ss << ss1.str() << " (pred_eq_t _ " << ss2.str() << ")";
+        } else {
+          Unreachable();
+        }
+      } else if(n2.getKind() == kind::EQUAL) {
+        // n2 is an equality/iff, but n1 is a predicate
+        if(n2[0] == n1) {
+          n1 = n2[1];
+          ss << (secondNeg ? "(negsymm _ _ _ " : "(symm _ _ _ ")
+             << ss2.str() << ") (pred_eq_t _ " << ss1.str() << ")";
+        } else if(n2[1] == n1) {
+          n1 = n2[0];
+          ss << ss2.str() << " (pred_eq_t _ " << ss1.str() << ")";
+        } else {
+          Unreachable();
+        }
+      } else {
+        // Both n1 and n2 are prediacates. Don't know what to do...
+        Unreachable();
+      }
+
+      ss << ")";
+
+      if (firstNeg || secondNeg) {
+        n1 = (n1.getKind() == kind::NOT) ? n1[0] : n1.notNode();
+      }
+    }
+
+    out << ss.str();
+    Debug("mgd") << "\n++ trans proof done, have proven " << n1 << std::endl;
+    //return (firstNeg || secondNeg) ? n1.notNode() : n1;
+    return n1;
+  }
+
+  else if (pf->d_id == d_reasonRow) {
+    Debug("mgd") << "row lemma: " << pf->d_node << std::endl;
+    Assert(pf->d_node.getKind() == kind::EQUAL);
+
+
+    if (pf->d_node[1].getKind() == kind::SELECT) {
+      // This is the case where ((a[i]:=t)[k] == a[k]), and the sub-proof explains why (i != k).
+      TNode t1, t2, t3, t4;
+      Node ret;
+      if(pf->d_node[1].getKind() == kind::SELECT &&
+         pf->d_node[1][0].getKind() == kind::STORE &&
+         pf->d_node[0].getKind() == kind::SELECT &&
+         pf->d_node[0][0] == pf->d_node[1][0][0] &&
+         pf->d_node[0][1] == pf->d_node[1][1]) {
+        t2 = pf->d_node[1][0][1];
+        t3 = pf->d_node[1][1];
+        t1 = pf->d_node[0][0];
+        t4 = pf->d_node[1][0][2];
+        ret = pf->d_node[1].eqNode(pf->d_node[0]);
+        Debug("mgd") << "t1 " << t1 << "\nt2 " << t2 << "\nt3 " << t3 << "\nt4 " << t4 << "\n";
+      } else {
+        Assert(pf->d_node[0].getKind() == kind::SELECT &&
+               pf->d_node[0][0].getKind() == kind::STORE &&
+               pf->d_node[1].getKind() == kind::SELECT &&
+               pf->d_node[1][0] == pf->d_node[0][0][0] &&
+               pf->d_node[1][1] == pf->d_node[0][1]);
+        t2 = pf->d_node[0][0][1];
+        t3 = pf->d_node[0][1];
+        t1 = pf->d_node[1][0];
+        t4 = pf->d_node[0][0][2];
+        ret = pf->d_node;
+        Debug("mgd") << "t1 " << t1 << "\nt2 " << t2 << "\nt3 " << t3 << "\nt4 " << t4 << "\n";
+      }
+
+      // inner index != outer index
+      // t3 is the outer index
+
+      Assert(pf->d_children.size() == 1);
+      std::stringstream ss;
+      Node subproof = toStreamRecLFSC(ss, tp, pf->d_children[0], tb + 1, map);
+
+      out << "(row _ _ ";
+      tp->printTerm(t2.toExpr(), out, map);
+      out << " ";
+      tp->printTerm(t3.toExpr(), out, map);
+      out << " ";
+      tp->printTerm(t1.toExpr(), out, map);
+      out << " ";
+      tp->printTerm(t4.toExpr(), out, map);
+      out << " ";
+
+
+      Debug("pf::array") << "pf->d_children[0]->d_node is: " << pf->d_children[0]->d_node
+                         << ". t3 is: " << t3 << std::endl
+                         << "subproof is: " << subproof << std::endl;
+
+      Debug("pf::array") << "Subproof is: " << ss.str() << std::endl;
+
+      // The subproof needs to show that t2 != t3. This can either be a direct disequality,
+      // or, if (wlog) t2 is constant, it can show that t3 is equal to another constant.
+      if (subproof.getKind() == kind::NOT) {
+        // The subproof is for t2 != t3 (or t3 != t2)
+        if (subproof[0][1] == t3) {
+          Debug("pf::array") << "Dont need symmetry!" << std::endl;
+          out << ss.str();
+        } else {
+          Debug("pf::array") << "Need symmetry!" << std::endl;
+          out << "(negsymm _ _ _ " << ss.str() << ")";
+        }
+      } else {
+        // Either t2 or t3 is a constant.
+        Assert(subproof.getKind() == kind::EQUAL);
+        Assert(subproof[0].isConst() || subproof[1].isConst());
+        Assert(t2.isConst() || t3.isConst());
+        Assert(!(t2.isConst() && t3.isConst()));
+
+        bool t2IsConst = t2.isConst();
+        if (subproof[0].isConst()) {
+          if (t2IsConst) {
+            // (t3 == subproof[1]) == subproof[0] != t2
+            // goal is t2 != t3
+            // subproof already shows constant = t3
+            Assert(t3 == subproof[1]);
+            out << "(negtrans _ _ _ _ ";
+            tp->printConstantDisequalityProof(out, t2.toExpr(), subproof[0].toExpr(), map);
+            out << " ";
+            out << ss.str();
+            out << ")";
+          } else {
+            Assert(t2 == subproof[1]);
+            out << "(negsymm _ _ _ ";
+            out << "(negtrans _ _ _ _ ";
+            tp->printConstantDisequalityProof(out, t3.toExpr(), subproof[0].toExpr(), map);
+            out << " ";
+            out << ss.str();
+            out << "))";
+          }
+        } else {
+          if (t2IsConst) {
+            // (t3 == subproof[0]) == subproof[1] != t2
+            // goal is t2 != t3
+            // subproof already shows constant = t3
+            Assert(t3 == subproof[0]);
+            out << "(negtrans _ _ _ _ ";
+            tp->printConstantDisequalityProof(out, t2.toExpr(), subproof[1].toExpr(), map);
+            out << " ";
+            out << "(symm _ _ _ " << ss.str() << ")";
+            out << ")";
+          } else {
+            Assert(t2 == subproof[0]);
+            out << "(negsymm _ _ _ ";
+            out << "(negtrans _ _ _ _ ";
+            tp->printConstantDisequalityProof(out, t3.toExpr(), subproof[1].toExpr(), map);
+            out << " ";
+            out << "(symm _ _ _ " << ss.str() << ")";
+            out << "))";
+          }
+        }
+      }
+
+      out << ")";
+      return ret;
+    } else {
+      Debug("pf::array") << "In the case of NEGATIVE ROW" << std::endl;
+
+      Debug("pf::array") << "pf->d_children[0]->d_node is: " << pf->d_children[0]->d_node << std::endl;
+
+      // This is the case where (i == k), and the sub-proof explains why ((a[i]:=t)[k] != a[k])
+
+      // If we wanted to remove the need for "negativerow", we would need to prove i==k using a new satlem. We would:
+      // 1. Create a new satlem.
+      // 2. Assume that i != k
+      // 3. Apply ROW to show that ((a[i]:=t)[k] == a[k])
+      // 4. Contradict this with the fact that ((a[i]:=t)[k] != a[k]), obtaining our contradiction
+
+      TNode t1, t2, t3, t4;
+      Node ret;
+
+      // pf->d_node is an equality, i==k.
+      t1 = pf->d_node[0];
+      t2 = pf->d_node[1];
+
+      // pf->d_children[0]->d_node will have the form: (not (= (select (store a_565 i7 e_566) i1) (select a_565 i1))),
+      // or its symmetrical version.
+
+      unsigned side;
+      if (pf->d_children[0]->d_node[0][0].getKind() == kind::SELECT &&
+          pf->d_children[0]->d_node[0][0][0].getKind() == kind::STORE) {
+        side = 0;
+      } else if (pf->d_children[0]->d_node[0][1].getKind() == kind::SELECT &&
+                 pf->d_children[0]->d_node[0][1][0].getKind() == kind::STORE) {
+        side = 1;
+      }
+      else {
+        Unreachable();
+      }
+
+      Debug("pf::array") << "Side is: " << side << std::endl;
+
+      // The array's index and element types will come from the subproof...
+      t3 = pf->d_children[0]->d_node[0][side][0][0];
+      t4 = pf->d_children[0]->d_node[0][side][0][2];
+      ret = pf->d_node;
+
+      // The order of indices needs to match; we might have to swap t1 and t2 and then apply symmetry.
+      bool swap = (t2 == pf->d_children[0]->d_node[0][side][0][1]);
+
+      Debug("mgd") << "t1 " << t1 << "\nt2 " << t2 << "\nt3 " << t3 << "\nt4 " << t4 << "\n";
+
+      Assert(pf->d_children.size() == 1);
+      std::stringstream ss;
+      Node subproof = toStreamRecLFSC(ss, tp, pf->d_children[0], tb + 1, map);
+
+      Debug("pf::array") << "Subproof is: " << ss.str() << std::endl;
+
+      if (swap) {
+        out << "(symm _ _ _ ";
+      }
+
+      out << "(negativerow _ _ ";
+      tp->printTerm(swap ? t2.toExpr() : t1.toExpr(), out, map);
+      out << " ";
+      tp->printTerm(swap ? t1.toExpr() : t2.toExpr(), out, map);
+      out << " ";
+      tp->printTerm(t3.toExpr(), out, map);
+      out << " ";
+      tp->printTerm(t4.toExpr(), out, map);
+      out << " ";
+
+      if (side != 0) {
+        out << "(negsymm _ _ _ " << ss.str() << ")";
+      } else {
+        out << ss.str();
+      }
+
+      out << ")";
+
+      if (swap) {
+        out << ") ";
+      }
+
+      return ret;
+    }
+  }
+
+  else if (pf->d_id == d_reasonRow1) {
+    Debug("mgd") << "row1 lemma: " << pf->d_node << std::endl;
+    Assert(pf->d_node.getKind() == kind::EQUAL);
+    TNode t1, t2, t3;
+    Node ret;
+    if(pf->d_node[1].getKind() == kind::SELECT &&
+       pf->d_node[1][0].getKind() == kind::STORE &&
+       pf->d_node[1][0][1] == pf->d_node[1][1] &&
+       pf->d_node[1][0][2] == pf->d_node[0]) {
+      t1 = pf->d_node[1][0][0];
+      t2 = pf->d_node[1][0][1];
+      t3 = pf->d_node[0];
+      ret = pf->d_node[1].eqNode(pf->d_node[0]);
+      Debug("mgd") << "t1 " << t1 << "\nt2 " << t2 << "\nt3 " << t3 << "\n";
+    } else {
+      Assert(pf->d_node[0].getKind() == kind::SELECT &&
+             pf->d_node[0][0].getKind() == kind::STORE &&
+             pf->d_node[0][0][1] == pf->d_node[0][1] &&
+             pf->d_node[0][0][2] == pf->d_node[1]);
+      t1 = pf->d_node[0][0][0];
+      t2 = pf->d_node[0][0][1];
+      t3 = pf->d_node[1];
+      ret = pf->d_node;
+      Debug("mgd") << "t1 " << t1 << "\nt2 " << t2 << "\nt3 " << t3 << "\n";
+    }
+    out << "(row1 _ _ ";
+    tp->printTerm(t1.toExpr(), out, map);
+    out << " ";
+    tp->printTerm(t2.toExpr(), out, map);
+    out << " ";
+    tp->printTerm(t3.toExpr(), out, map);
+    out << ")";
+    return ret;
+  }
+
+  else if (pf->d_id == d_reasonExt) {
+    theory::eq::EqProof *child_proof;
+
+    Assert(pf->d_node.getKind() == kind::NOT);
+    Assert(pf->d_node[0].getKind() == kind::EQUAL);
+    Assert(pf->d_children.size() == 1);
+
+    child_proof = pf->d_children[0];
+    Assert(child_proof->d_node.getKind() == kind::NOT);
+    Assert(child_proof->d_node[0].getKind() == kind::EQUAL);
+
+    Debug("mgd") << "EXT lemma: " << pf->d_node << std::endl;
+
+    TNode t1, t2, t3;
+    t1 = child_proof->d_node[0][0];
+    t2 = child_proof->d_node[0][1];
+    t3 = pf->d_node[0][0][1];
+
+    Debug("mgd") << "t1 " << t1 << "\nt2 " << t2 << "\nt3 " << t3 << "\n";
+
+    out << "(or_elim_1 _ _ ";
+    out << ProofManager::getLitName(child_proof->d_node[0]);
+    out << " ";
+    out << ProofManager::getArrayProof()->skolemToLiteral(t3.toExpr());
+    out << ")";
+
+    return pf->d_node;
+  }
+
+  else {
+    Assert(!pf->d_node.isNull());
+    Assert(pf->d_children.empty());
+    Debug("mgd") << "theory proof: " << pf->d_node << " by rule " << int(pf->d_id) << std::endl;
+    AlwaysAssert(false);
+    return pf->d_node;
+  }
+}
+
+ArrayProof::ArrayProof(theory::arrays::TheoryArrays* arrays, TheoryProofEngine* pe)
+  : TheoryProof(arrays, pe)
+{}
+
+void ArrayProof::registerTerm(Expr term) {
+  // already registered
+  if (d_declarations.find(term) != d_declarations.end())
+    return;
+
+  Type type = term.getType();
+  if (type.isSort()) {
+    // declare uninterpreted sorts
+    d_sorts.insert(type);
+  }
+
+  if (term.getKind() == kind::APPLY_UF) {
+    Expr function = term.getOperator();
+    d_declarations.insert(function);
+  }
+
+  if (term.isVariable()) {
+    d_declarations.insert(term);
+  }
+
+  // recursively declare all other terms
+  for (unsigned i = 0; i < term.getNumChildren(); ++i) {
+    // could belong to other theories
+    d_proofEngine->registerTerm(term[i]);
+  }
+}
+
+std::string ArrayProof::skolemToLiteral(Expr skolem) {
+  Debug("pf::array") << "ArrayProof::skolemToLiteral( " << skolem << ")" << std::endl;
+  Assert(d_skolemToLiteral.find(skolem) != d_skolemToLiteral.end());
+  return d_skolemToLiteral[skolem];
+}
+
+void LFSCArrayProof::printOwnedTerm(Expr term, std::ostream& os, const ProofLetMap& map) {
+  Assert (theory::Theory::theoryOf(term) == theory::THEORY_ARRAY);
+
+  if (theory::Theory::theoryOf(term) != theory::THEORY_ARRAY) {
+    // We can get here, for instance, if there's a (select ite ...), e.g. a non-array term
+    // hiding as a subterm of an array term. In that case, send it back to the dispatcher.
+    d_proofEngine->printBoundTerm(term, os, map);
+    return;
+  }
+
+  if (term.getKind() == kind::VARIABLE || term.getKind() == kind::SKOLEM) {
+    os << term;
+    return;
+  }
+
+  Assert ((term.getKind() == kind::SELECT) || (term.getKind() == kind::PARTIAL_SELECT_0) || (term.getKind() == kind::PARTIAL_SELECT_1) || (term.getKind() == kind::STORE));
+
+  switch (term.getKind()) {
+  case kind::SELECT: {
+    Assert(term.getNumChildren() == 2);
+
+    bool convertToBool = (term[1].getType().isBoolean() && !d_proofEngine->printsAsBool(term[1]));
+
+    os << "(apply _ _ (apply _ _ (read ";
+    printSort(ArrayType(term[0].getType()).getIndexType(), os);
+    os << " ";
+    printSort(ArrayType(term[0].getType()).getConstituentType(), os);
+    os << ") ";
+    printTerm(term[0], os, map);
+    os << ") ";
+    if (convertToBool) os << "(f_to_b ";
+    printTerm(term[1], os, map);
+    if (convertToBool) os << ")";
+    os << ") ";
+    return;
+  }
+
+  case kind::PARTIAL_SELECT_0:
+    Assert(term.getNumChildren() == 1);
+    os << "(read ";
+    printSort(ArrayType(term[0].getType()).getIndexType(), os);
+    os << " ";
+    printSort(ArrayType(term[0].getType()).getConstituentType(), os);
+    os << ") ";
+    return;
+
+  case kind::PARTIAL_SELECT_1:
+    Debug("pf::array") << "This branch has not beed tested yet." << std::endl;
+    Unreachable();
+
+    Assert(term.getNumChildren() == 1);
+    os << "(apply _ _ (read ";
+    printSort(ArrayType(term[0].getType()).getIndexType(), os);
+    os << " ";
+    printSort(ArrayType(term[0].getType()).getConstituentType(), os);
+    os << ") ";
+    printTerm(term[0], os, map);
+    os << ") ";
+    return;
+
+  case kind::STORE:
+    os << "(apply _ _ (apply _ _ (apply _ _ (write ";
+    printSort(ArrayType(term[0].getType()).getIndexType(), os);
+    os << " ";
+    printSort(ArrayType(term[0].getType()).getConstituentType(), os);
+    os << ") ";
+    printTerm(term[0], os, map);
+    os << ") ";
+    printTerm(term[1], os, map);
+    os << ") ";
+    printTerm(term[2], os, map);
+    os << ") ";
+    return;
+
+  default:
+    Unreachable();
+    return;
+  }
+}
+
+void LFSCArrayProof::printOwnedSort(Type type, std::ostream& os) {
+  Debug("pf::array") << std::endl << "(pf::array) LFSCArrayProof::printOwnedSort: type is: " << type << std::endl;
+  Assert (type.isArray() || type.isSort());
+  if (type.isArray()){
+    ArrayType array_type(type);
+
+    Debug("pf::array") << "LFSCArrayProof::printOwnedSort: type is an array. Index type: "
+                       << array_type.getIndexType()
+                       << ", element type: " << array_type.getConstituentType() << std::endl;
+
+    os << "(Array ";
+    printSort(array_type.getIndexType(), os);
+    os << " ";
+    printSort(array_type.getConstituentType(), os);
+    os << ")";
+  } else {
+    os << type;
+  }
+}
+
+void LFSCArrayProof::printTheoryLemmaProof(std::vector<Expr>& lemma, std::ostream& os, std::ostream& paren, const ProofLetMap& map) {
+  os << " ;; Array Theory Lemma \n;;";
+  for (unsigned i = 0; i < lemma.size(); ++i) {
+    os << lemma[i] <<" ";
+  }
+  os <<"\n";
+  //os << " (clausify_false trust)";
+  ArrayProof::printTheoryLemmaProof(lemma, os, paren, map);
+}
+
+void LFSCArrayProof::printSortDeclarations(std::ostream& os, std::ostream& paren) {
+  // declaring the sorts
+  for (TypeSet::const_iterator it = d_sorts.begin(); it != d_sorts.end(); ++it) {
+    if (!ProofManager::currentPM()->wasPrinted(*it)) {
+      os << "(% " << *it << " sort\n";
+      paren << ")";
+      ProofManager::currentPM()->markPrinted(*it);
+    }
+  }
+}
+
+void LFSCArrayProof::printTermDeclarations(std::ostream& os, std::ostream& paren) {
+  Debug("pf::array") << "Arrays declaring terms..." << std::endl;
+
+  for (ExprSet::const_iterator it = d_declarations.begin(); it != d_declarations.end(); ++it) {
+    Expr term = *it;
+
+    Assert(term.getType().isArray() || term.isVariable());
+
+    Debug("pf::array") << "LFSCArrayProof::printDeclarations: term is: " << term
+                       << ". It's type is: " << term.getType()
+                       << std::endl;
+
+    if (term.getType().isArray()){
+      ArrayType array_type(term.getType());
+
+      Debug("pf::array") << "LFSCArrayProof::printDeclarations: term is an array. Index type: "
+                         << array_type.getIndexType()
+                         << ", element type: " << array_type.getConstituentType() << std::endl;
+
+      os << "(% " << ProofManager::sanitize(term) << " ";
+      os << "(term ";
+      os << "(Array ";
+
+      printSort(array_type.getIndexType(), os);
+      os << " ";
+      printSort(array_type.getConstituentType(), os);
+
+      os << "))\n";
+      paren << ")";
+    } else {
+      Assert(term.isVariable());
+      if (ProofManager::getSkolemizationManager()->isSkolem(*it)) {
+        Debug("pf::array") << "This term is a skoelm!" << std::endl;
+        d_skolemDeclarations.insert(*it);
+      } else {
+        os << "(% " << ProofManager::sanitize(term) << " ";
+        os << "(term ";
+        os << term.getType() << ")\n";
+        paren << ")";
+      }
+    }
+  }
+
+  Debug("pf::array") << "Declaring terms done!" << std::endl;
+}
+
+void LFSCArrayProof::printDeferredDeclarations(std::ostream& os, std::ostream& paren) {
+  Debug("pf::array") << "Array: print deferred declarations called" << std::endl;
+
+  unsigned count = 1;
+  for (ExprSet::const_iterator it = d_skolemDeclarations.begin(); it != d_skolemDeclarations.end(); ++it) {
+    Expr term = *it;
+    Node equality = ProofManager::getSkolemizationManager()->getDisequality(*it);
+
+    Debug("pf::array") << "LFSCArrayProof::printDeferredDeclarations: term is: " << *it << std::endl
+                       << "It is a witness for: " << equality << std::endl;
+
+    std::ostringstream newSkolemLiteral;
+    newSkolemLiteral << ".sl" << count++;
+    std::string skolemLiteral = newSkolemLiteral.str();
+
+    d_skolemToLiteral[*it] = skolemLiteral;
+
+    Debug("pf::array") << "LFSCArrayProof::printDeferredDeclarations: new skolem literal is: " << skolemLiteral << std::endl;
+
+    Assert(equality.getKind() == kind::NOT);
+    Assert(equality[0].getKind() == kind::EQUAL);
+
+    Node array_one = equality[0][0];
+    Node array_two = equality[0][1];
+
+    ProofLetMap map;
+    os << "(ext _ _ ";
+    printTerm(array_one.toExpr(), os, map);
+    os << " ";
+    printTerm(array_two.toExpr(), os, map);
+    os << " (\\ ";
+    os << ProofManager::sanitize(*it);
+    os << " (\\ ";
+    os << skolemLiteral.c_str();
+    os << "\n";
+
+    paren << ")))";
+  }
+}
+
+void LFSCArrayProof::printAliasingDeclarations(std::ostream& os, std::ostream& paren, const ProofLetMap &globalLetMap) {
+  // Nothing to do here at this point.
+}
+
+bool LFSCArrayProof::printsAsBool(const Node &n)
+{
+  if (n.getKind() == kind::SELECT)
+    return true;
+
+  return false;
+}
+
+} /* CVC4  namespace */
diff --git a/src/proof/array_proof.h b/src/proof/array_proof.h
new file mode 100644
index 0000000..eaf2f47
--- /dev/null
+++ b/src/proof/array_proof.h
@@ -0,0 +1,135 @@
+/*********************                                                        */
+/*! \file array_proof.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Guy Katz, Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Arrray proof
+ **
+ ** Arrau proof
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__ARRAY__PROOF_H
+#define __CVC4__ARRAY__PROOF_H
+
+#include "expr/expr.h"
+#include "proof/proof_manager.h"
+#include "proof/theory_proof.h"
+#include "theory/arrays/theory_arrays.h"
+#include "theory/uf/equality_engine.h"
+
+namespace CVC4 {
+
+//proof object outputted by TheoryARRAY
+class ProofArray : public Proof {
+private:
+  class ArrayProofPrinter : public theory::eq::EqProof::PrettyPrinter {
+  public:
+    ArrayProofPrinter() : d_row(0), d_row1(0), d_ext(0) {
+    }
+
+    std::string printTag(unsigned tag) {
+      if (tag == theory::eq::MERGED_THROUGH_CONGRUENCE) return "Congruence";
+      if (tag == theory::eq::MERGED_THROUGH_EQUALITY) return "Pure Equality";
+      if (tag == theory::eq::MERGED_THROUGH_REFLEXIVITY) return "Reflexivity";
+      if (tag == theory::eq::MERGED_THROUGH_CONSTANTS) return "Constants";
+      if (tag == theory::eq::MERGED_THROUGH_TRANS) return "Transitivity";
+
+      if (tag == d_row) return "Read Over Write";
+      if (tag == d_row1) return "Read Over Write (1)";
+      if (tag == d_ext) return "Extensionality";
+
+      std::ostringstream result;
+      result << tag;
+      return result.str();
+    }
+
+    unsigned d_row;
+    unsigned d_row1;
+    unsigned d_ext;
+  };
+
+  Node toStreamRecLFSC(std::ostream& out, TheoryProof* tp,
+                       theory::eq::EqProof* pf,
+                       unsigned tb,
+                       const ProofLetMap& map);
+
+  /** Merge tag for ROW applications */
+  unsigned d_reasonRow;
+  /** Merge tag for ROW1 applications */
+  unsigned d_reasonRow1;
+  /** Merge tag for EXT applications */
+  unsigned d_reasonExt;
+
+  ArrayProofPrinter d_proofPrinter;
+public:
+  ProofArray(theory::eq::EqProof* pf) : d_proof(pf) {}
+  //it is simply an equality engine proof
+  theory::eq::EqProof *d_proof;
+  void toStream(std::ostream& out);
+  void toStream(std::ostream& out, const ProofLetMap& map);
+  void toStreamLFSC(std::ostream& out, TheoryProof* tp, theory::eq::EqProof* pf, const ProofLetMap& map);
+
+  void registerSkolem(Node equality, Node skolem);
+
+  void setRowMergeTag(unsigned tag);
+  void setRow1MergeTag(unsigned tag);
+  void setExtMergeTag(unsigned tag);
+
+  unsigned getRowMergeTag() const;
+  unsigned getRow1MergeTag() const;
+  unsigned getExtMergeTag() const;
+};
+
+namespace theory {
+namespace arrays{
+class TheoryArrays;
+} /* namespace CVC4::theory::arrays */
+} /* namespace CVC4::theory */
+
+typedef __gnu_cxx::hash_set<Type, TypeHashFunction > TypeSet;
+
+class ArrayProof : public TheoryProof {
+  // TODO: whatever goes in this theory
+protected:
+  TypeSet d_sorts;        // all the uninterpreted sorts in this theory
+  ExprSet d_declarations; // all the variable/function declarations
+  ExprSet d_skolemDeclarations; // all the skolem variable declarations
+  std::map<Expr, std::string> d_skolemToLiteral;
+
+public:
+  ArrayProof(theory::arrays::TheoryArrays* arrays, TheoryProofEngine* proofEngine);
+
+  std::string skolemToLiteral(Expr skolem);
+
+  virtual void registerTerm(Expr term);
+};
+
+class LFSCArrayProof : public ArrayProof {
+public:
+  LFSCArrayProof(theory::arrays::TheoryArrays* arrays, TheoryProofEngine* proofEngine)
+    : ArrayProof(arrays, proofEngine)
+  {}
+
+  virtual void printOwnedTerm(Expr term, std::ostream& os, const ProofLetMap& map);
+  virtual void printOwnedSort(Type type, std::ostream& os);
+  virtual void printTheoryLemmaProof(std::vector<Expr>& lemma, std::ostream& os, std::ostream& paren, const ProofLetMap& map);
+  virtual void printSortDeclarations(std::ostream& os, std::ostream& paren);
+  virtual void printTermDeclarations(std::ostream& os, std::ostream& paren);
+  virtual void printDeferredDeclarations(std::ostream& os, std::ostream& paren);
+  virtual void printAliasingDeclarations(std::ostream& os, std::ostream& paren, const ProofLetMap &globalLetMap);
+
+  bool printsAsBool(const Node &n);
+};
+
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__ARRAY__PROOF_H */
diff --git a/src/proof/bitvector_proof.cpp b/src/proof/bitvector_proof.cpp
new file mode 100644
index 0000000..926dae9
--- /dev/null
+++ b/src/proof/bitvector_proof.cpp
@@ -0,0 +1,1096 @@
+/*********************                                                        */
+/*! \file bitvector_proof.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Guy Katz, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+
+ ** \todo document this file
+
+**/
+
+#include "options/bv_options.h"
+#include "options/proof_options.h"
+#include "proof/array_proof.h"
+#include "proof/bitvector_proof.h"
+#include "proof/clause_id.h"
+#include "proof/proof_output_channel.h"
+#include "proof/proof_utils.h"
+#include "proof/sat_proof_implementation.h"
+#include "prop/bvminisat/bvminisat.h"
+#include "theory/bv/bitblaster_template.h"
+#include "theory/bv/theory_bv.h"
+#include "theory/bv/theory_bv_rewrite_rules.h"
+
+using namespace CVC4::theory;
+using namespace CVC4::theory::bv;
+
+namespace CVC4 {
+
+BitVectorProof::BitVectorProof(theory::bv::TheoryBV* bv, TheoryProofEngine* proofEngine)
+  : TheoryProof(bv, proofEngine)
+  , d_declarations()
+  , d_seenBBTerms()
+  , d_bbTerms()
+  , d_bbAtoms()
+  , d_resolutionProof(NULL)
+  , d_cnfProof(NULL)
+  , d_bitblaster(NULL)
+  , d_useConstantLetification(false)
+{}
+
+void BitVectorProof::initSatProof(CVC4::BVMinisat::Solver* solver) {
+  Assert (d_resolutionProof == NULL);
+  d_resolutionProof = new LFSCBVSatProof(solver, "bb", true);
+}
+
+void BitVectorProof::initCnfProof(prop::CnfStream* cnfStream,
+                                  context::Context* cnf) {
+  Assert (d_cnfProof == NULL);
+  d_cnfProof = new LFSCCnfProof(cnfStream, cnf, "bb");
+  Assert (d_resolutionProof != NULL);
+  d_resolutionProof->setCnfProof(d_cnfProof);
+
+  // true and false have to be setup in a special way
+  Node true_node = NodeManager::currentNM()->mkConst<bool>(true);
+  Node false_node = NodeManager::currentNM()->mkConst<bool>(false).notNode();
+
+  d_cnfProof->pushCurrentAssertion(true_node);
+  d_cnfProof->pushCurrentDefinition(true_node);
+  d_cnfProof->registerConvertedClause(d_resolutionProof->getTrueUnit());
+  d_cnfProof->popCurrentAssertion();
+  d_cnfProof->popCurrentDefinition();
+
+  d_cnfProof->pushCurrentAssertion(false_node);
+  d_cnfProof->pushCurrentDefinition(false_node);
+  d_cnfProof->registerConvertedClause(d_resolutionProof->getFalseUnit());
+  d_cnfProof->popCurrentAssertion();
+  d_cnfProof->popCurrentDefinition();
+}
+
+void BitVectorProof::setBitblaster(bv::TBitblaster<Node>* bb) {
+  Assert (d_bitblaster == NULL);
+  d_bitblaster = bb;
+}
+
+BVSatProof* BitVectorProof::getSatProof() {
+  Assert (d_resolutionProof != NULL);
+  return d_resolutionProof;
+}
+
+void BitVectorProof::registerTermBB(Expr term) {
+  Debug("pf::bv") << "BitVectorProof::registerTermBB( " << term << " )" << std::endl;
+
+  if (d_seenBBTerms.find(term) != d_seenBBTerms.end())
+    return;
+
+  d_seenBBTerms.insert(term);
+  d_bbTerms.push_back(term);
+
+  // If this term gets used in the final proof, we will want to register it. However,
+  // we don't know this at this point; and when the theory proof engine sees it, if it belongs
+  // to another theory, it won't register it with this proof. So, we need to tell the
+  // engine to inform us.
+
+  if (theory::Theory::theoryOf(term) != theory::THEORY_BV) {
+    Debug("pf::bv") << "\tMarking term " << term << " for future BV registration" << std::endl;
+    d_proofEngine->markTermForFutureRegistration(term, theory::THEORY_BV);
+  }
+}
+
+void BitVectorProof::registerAtomBB(Expr atom, Expr atom_bb) {
+  Debug("pf::bv") << "BitVectorProof::registerAtomBB( " << atom << ", " << atom_bb << " )" << std::endl;
+
+  Expr def = atom.iffExpr(atom_bb);
+  d_bbAtoms.insert(std::make_pair(atom, def));
+  registerTerm(atom);
+
+  // Register the atom's terms for bitblasting
+  registerTermBB(atom[0]);
+  registerTermBB(atom[1]);
+}
+
+void BitVectorProof::registerTerm(Expr term) {
+  Debug("pf::bv") << "BitVectorProof::registerTerm( " << term << " )" << std::endl;
+
+  if (options::lfscLetification() && term.isConst()) {
+    if (d_constantLetMap.find(term) == d_constantLetMap.end()) {
+      std::ostringstream name;
+      name << "letBvc" << d_constantLetMap.size();
+      d_constantLetMap[term] = name.str();
+    }
+  }
+
+  d_usedBB.insert(term);
+
+  if (Theory::isLeafOf(term, theory::THEORY_BV) &&
+      !term.isConst()) {
+    d_declarations.insert(term);
+  }
+
+  Debug("pf::bv") << "Going to register children: " << std::endl;
+  for (unsigned i = 0; i < term.getNumChildren(); ++i) {
+    Debug("pf::bv") << "\t" << term[i] << std::endl;
+  }
+
+  // don't care about parametric operators for bv?
+  for (unsigned i = 0; i < term.getNumChildren(); ++i) {
+     d_proofEngine->registerTerm(term[i]);
+  }
+}
+
+std::string BitVectorProof::getBBTermName(Expr expr) {
+  Debug("pf::bv") << "BitVectorProof::getBBTermName( " << expr << " ) = bt" << expr.getId() << std::endl;
+  std::ostringstream os;
+  os << "bt"<< expr.getId();
+  return os.str();
+}
+
+void BitVectorProof::startBVConflict(CVC4::BVMinisat::Solver::TCRef cr) {
+  d_resolutionProof->startResChain(cr);
+}
+
+void BitVectorProof::startBVConflict(CVC4::BVMinisat::Solver::TLit lit) {
+  d_resolutionProof->startResChain(lit);
+}
+
+void BitVectorProof::endBVConflict(const CVC4::BVMinisat::Solver::TLitVec& confl) {
+  Debug("pf::bv") << "BitVectorProof::endBVConflict called" << std::endl;
+
+  std::vector<Expr> expr_confl;
+  for (int i = 0; i < confl.size(); ++i) {
+    prop::SatLiteral lit = prop::BVMinisatSatSolver::toSatLiteral(confl[i]);
+    Expr atom = d_cnfProof->getAtom(lit.getSatVariable()).toExpr();
+    Expr expr_lit = lit.isNegated() ? atom.notExpr() : atom;
+    expr_confl.push_back(expr_lit);
+  }
+
+  Expr conflict = utils::mkSortedExpr(kind::OR, expr_confl);
+  Debug("pf::bv") << "Make conflict for " << conflict << std::endl;
+
+  if (d_bbConflictMap.find(conflict) != d_bbConflictMap.end()) {
+    Debug("pf::bv") << "Abort...already conflict for " << conflict << std::endl;
+    // This can only happen when we have eager explanations in the bv solver
+    // if we don't get to propagate p before ~p is already asserted
+    d_resolutionProof->cancelResChain();
+    return;
+  }
+
+  // we don't need to check for uniqueness in the sat solver then
+  ClauseId clause_id = d_resolutionProof->registerAssumptionConflict(confl);
+  d_bbConflictMap[conflict] = clause_id;
+  d_resolutionProof->endResChain(clause_id);
+  Debug("pf::bv") << "BitVectorProof::endBVConflict id" <<clause_id<< " => " << conflict << "\n";
+  d_isAssumptionConflict = false;
+}
+
+void BitVectorProof::finalizeConflicts(std::vector<Expr>& conflicts) {
+
+  if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER) {
+    Debug("pf::bv") << "Construct full proof." << std::endl;
+    d_resolutionProof->constructProof();
+    return;
+  }
+
+  for (unsigned i = 0; i < conflicts.size(); ++i) {
+    Expr confl = conflicts[i];
+    Debug("pf::bv") << "Finalize conflict #" << i << ": " << confl << std::endl;
+
+    // Special case: if the conflict has a (true) or a (not false) in it, it is trivial...
+    bool ignoreConflict = false;
+    if ((confl.isConst() && confl.getConst<bool>()) ||
+        (confl.getKind() == kind::NOT && confl[0].isConst() && !confl[0].getConst<bool>())) {
+      ignoreConflict = true;
+    } else if (confl.getKind() == kind::OR) {
+      for (unsigned k = 0; k < confl.getNumChildren(); ++k) {
+        if ((confl[k].isConst() && confl[k].getConst<bool>()) ||
+            (confl[k].getKind() == kind::NOT && confl[k][0].isConst() && !confl[k][0].getConst<bool>())) {
+          ignoreConflict = true;
+        }
+      }
+    }
+    if (ignoreConflict) {
+      Debug("pf::bv") << "Ignoring conflict due to (true) or (not false)" << std::endl;
+      continue;
+    }
+
+    if (d_bbConflictMap.find(confl) != d_bbConflictMap.end()) {
+      ClauseId id = d_bbConflictMap[confl];
+      d_resolutionProof->collectClauses(id);
+    } else {
+      // There is no exact match for our conflict, but maybe it is a subset of another conflict
+      ExprToClauseId::const_iterator it;
+      bool matchFound = false;
+      for (it = d_bbConflictMap.begin(); it != d_bbConflictMap.end(); ++it) {
+        Expr possibleMatch = it->first;
+        if (possibleMatch.getKind() != kind::OR) {
+          // This is a single-node conflict. If this node is in the conflict we're trying to prove,
+          // we have a match.
+          for (unsigned k = 0; k < confl.getNumChildren(); ++k) {
+            if (confl[k] == possibleMatch) {
+              matchFound = true;
+              d_resolutionProof->collectClauses(it->second);
+              break;
+            }
+          }
+        } else {
+          if (possibleMatch.getNumChildren() > confl.getNumChildren())
+            continue;
+
+          unsigned k = 0;
+          bool matching = true;
+          for (unsigned j = 0; j < possibleMatch.getNumChildren(); ++j) {
+            // j is the index in possibleMatch
+            // k is the index in confl
+            while (k < confl.getNumChildren() && confl[k] != possibleMatch[j]) {
+              ++k;
+            }
+            if (k == confl.getNumChildren()) {
+              // We couldn't find a match for possibleMatch[j], so not a match
+              matching = false;
+              break;
+            }
+          }
+
+          if (matching) {
+            Debug("pf::bv") << "Collecting info from a sub-conflict" << std::endl;
+            d_resolutionProof->collectClauses(it->second);
+            matchFound = true;
+            break;
+          }
+        }
+      }
+
+      if (!matchFound) {
+        Debug("pf::bv") << "Do not collect clauses for " << confl << std::endl
+                        << "Dumping existing conflicts:" << std::endl;
+
+        i = 0;
+        for (it = d_bbConflictMap.begin(); it != d_bbConflictMap.end(); ++it) {
+          ++i;
+          Debug("pf::bv") << "\tConflict #" << i << ": " << it->first << std::endl;
+        }
+
+        Unreachable();
+      }
+    }
+  }
+}
+
+void LFSCBitVectorProof::printOwnedTerm(Expr term, std::ostream& os, const ProofLetMap& map) {
+  Debug("pf::bv") << std::endl << "(pf::bv) LFSCBitVectorProof::printOwnedTerm( " << term << " ), theory is: "
+                  << Theory::theoryOf(term) << std::endl;
+
+  Assert (Theory::theoryOf(term) == THEORY_BV);
+
+  // peel off eager bit-blasting trick
+  if (term.getKind() == kind::BITVECTOR_EAGER_ATOM) {
+    d_proofEngine->printBoundTerm(term[0], os, map);
+    return;
+  }
+
+  switch (term.getKind()) {
+  case kind::CONST_BITVECTOR : {
+    printConstant(term, os);
+    return;
+  }
+  case kind::BITVECTOR_AND :
+  case kind::BITVECTOR_OR :
+  case kind::BITVECTOR_XOR :
+  case kind::BITVECTOR_NAND :
+  case kind::BITVECTOR_NOR :
+  case kind::BITVECTOR_XNOR :
+  case kind::BITVECTOR_COMP :
+  case kind::BITVECTOR_MULT :
+  case kind::BITVECTOR_PLUS :
+  case kind::BITVECTOR_SUB :
+  case kind::BITVECTOR_UDIV :
+  case kind::BITVECTOR_UREM :
+  case kind::BITVECTOR_UDIV_TOTAL :
+  case kind::BITVECTOR_UREM_TOTAL :
+  case kind::BITVECTOR_SDIV :
+  case kind::BITVECTOR_SREM :
+  case kind::BITVECTOR_SMOD :
+  case kind::BITVECTOR_SHL :
+  case kind::BITVECTOR_LSHR :
+  case kind::BITVECTOR_ASHR :
+  case kind::BITVECTOR_CONCAT : {
+    printOperatorNary(term, os, map);
+    return;
+  }
+  case kind::BITVECTOR_NEG :
+  case kind::BITVECTOR_NOT :
+  case kind::BITVECTOR_ROTATE_LEFT :
+  case kind::BITVECTOR_ROTATE_RIGHT : {
+    printOperatorUnary(term, os, map);
+    return;
+  }
+  case kind::EQUAL :
+  case kind::BITVECTOR_ULT :
+  case kind::BITVECTOR_ULE :
+  case kind::BITVECTOR_UGT :
+  case kind::BITVECTOR_UGE :
+  case kind::BITVECTOR_SLT :
+  case kind::BITVECTOR_SLE :
+  case kind::BITVECTOR_SGT :
+  case kind::BITVECTOR_SGE : {
+    printPredicate(term, os, map);
+    return;
+  }
+  case kind::BITVECTOR_EXTRACT :
+  case kind::BITVECTOR_REPEAT :
+  case kind::BITVECTOR_ZERO_EXTEND :
+  case kind::BITVECTOR_SIGN_EXTEND : {
+    printOperatorParametric(term, os, map);
+    return;
+  }
+  case kind::BITVECTOR_BITOF : {
+    printBitOf(term, os, map);
+    return;
+  }
+
+  case kind::VARIABLE: {
+    os << "(a_var_bv " << utils::getSize(term)<< " " << ProofManager::sanitize(term) << ")";
+    return;
+  }
+
+  case kind::SKOLEM: {
+
+    // TODO: we need to distinguish between "real" skolems (e.g. from array) and "fake" skolems,
+    // like ITE terms. Is there a more elegant way?
+
+    if (ProofManager::getSkolemizationManager()->isSkolem(term)) {
+      os << ProofManager::sanitize(term);
+    } else {
+      os << "(a_var_bv " << utils::getSize(term)<< " " << ProofManager::sanitize(term) << ")";
+    }
+    return;
+  }
+
+  default:
+    Unreachable();
+  }
+}
+
+void LFSCBitVectorProof::printBitOf(Expr term, std::ostream& os, const ProofLetMap& map) {
+  Assert (term.getKind() == kind::BITVECTOR_BITOF);
+  unsigned bit = term.getOperator().getConst<BitVectorBitOf>().bitIndex;
+  Expr var = term[0];
+
+  Debug("pf::bv") << "LFSCBitVectorProof::printBitOf( " << term << " ), "
+                  << "bit = " << bit
+                  << ", var = " << var << std::endl;
+
+  os << "(bitof ";
+  os << d_exprToVariableName[var];
+  os << " " << bit << ")";
+}
+
+void LFSCBitVectorProof::printConstant(Expr term, std::ostream& os) {
+  Assert (term.isConst());
+  os << "(a_bv " << utils::getSize(term) << " ";
+
+  if (d_useConstantLetification) {
+    os << d_constantLetMap[term] << ")";
+  } else {
+    std::ostringstream paren;
+    int size = utils::getSize(term);
+    for (int i = size - 1; i >= 0; --i) {
+      os << "(bvc ";
+      os << (utils::getBit(term, i) ? "b1" : "b0") <<" ";
+      paren << ")";
+    }
+    os << " bvn)";
+    os << paren.str();
+  }
+}
+
+void LFSCBitVectorProof::printOperatorNary(Expr term, std::ostream& os, const ProofLetMap& map) {
+  std::string op = utils::toLFSCKindTerm(term);
+  std::ostringstream paren;
+  std::string holes = term.getKind() == kind::BITVECTOR_CONCAT ? "_ _ " : "";
+  unsigned size = term.getKind() == kind::BITVECTOR_CONCAT? utils::getSize(term) :
+                                                            utils::getSize(term[0]); // cause of COMP
+
+  for (unsigned i = 0; i < term.getNumChildren() - 1; ++i) {
+    os <<"("<< op <<" " <<  size <<" " << holes;
+  }
+  d_proofEngine->printBoundTerm(term[0], os, map);
+  os <<" ";
+  for (unsigned i = 1; i < term.getNumChildren(); ++i) {
+    d_proofEngine->printBoundTerm(term[i], os, map);
+    os << ")";
+  }
+}
+
+void LFSCBitVectorProof::printOperatorUnary(Expr term, std::ostream& os, const ProofLetMap& map) {
+  os <<"(";
+  os << utils::toLFSCKindTerm(term) << " " << utils::getSize(term) <<" ";
+  os << " ";
+  d_proofEngine->printBoundTerm(term[0], os, map);
+  os <<")";
+}
+
+void LFSCBitVectorProof::printPredicate(Expr term, std::ostream& os, const ProofLetMap& map) {
+  os <<"(";
+  os << utils::toLFSCKindTerm(term) << " " << utils::getSize(term[0]) <<" ";
+  os << " ";
+  d_proofEngine->printBoundTerm(term[0], os, map);
+  os << " ";
+  d_proofEngine->printBoundTerm(term[1], os, map);
+  os <<")";
+}
+
+void LFSCBitVectorProof::printOperatorParametric(Expr term, std::ostream& os, const ProofLetMap& map) {
+  os <<"(";
+  os << utils::toLFSCKindTerm(term) << " " << utils::getSize(term) <<" ";
+  os <<" ";
+  if (term.getKind() == kind::BITVECTOR_REPEAT) {
+    unsigned amount = term.getOperator().getConst<BitVectorRepeat>().repeatAmount;
+    os << amount <<" _ ";
+  }
+  if (term.getKind() == kind::BITVECTOR_SIGN_EXTEND) {
+    unsigned amount = term.getOperator().getConst<BitVectorSignExtend>().signExtendAmount;
+    os << amount <<" _ ";
+  }
+
+  if (term.getKind() == kind::BITVECTOR_ZERO_EXTEND) {
+    unsigned amount = term.getOperator().getConst<BitVectorZeroExtend>().zeroExtendAmount;
+    os << amount<<" _ ";
+  }
+  if (term.getKind() == kind::BITVECTOR_EXTRACT) {
+    unsigned low = utils::getExtractLow(term);
+    unsigned high = utils::getExtractHigh(term);
+    os << high <<" " << low << " " << utils::getSize(term[0]);
+  }
+  os <<" ";
+  Assert (term.getNumChildren() == 1);
+  d_proofEngine->printBoundTerm(term[0], os, map);
+  os <<")";
+}
+
+void LFSCBitVectorProof::printOwnedSort(Type type, std::ostream& os) {
+  Debug("pf::bv") << std::endl << "(pf::bv) LFSCBitVectorProof::printOwnedSort( " << type << " )" << std::endl;
+  Assert (type.isBitVector());
+  unsigned width = utils::getSize(type);
+  os << "(BitVec " << width << ")";
+}
+
+void LFSCBitVectorProof::printTheoryLemmaProof(std::vector<Expr>& lemma, std::ostream& os, std::ostream& paren, const ProofLetMap& map) {
+  Debug("pf::bv") << "(pf::bv) LFSCBitVectorProof::printTheoryLemmaProof called" << std::endl;
+  Expr conflict = utils::mkSortedExpr(kind::OR, lemma);
+  Debug("pf::bv") << "\tconflict = " << conflict << std::endl;
+
+  if (d_bbConflictMap.find(conflict) != d_bbConflictMap.end()) {
+    std::ostringstream lemma_paren;
+    for (unsigned i = 0; i < lemma.size(); ++i) {
+      Expr lit = lemma[i];
+
+      if (lit.getKind() == kind::NOT) {
+        os << "(intro_assump_t _ _ _ ";
+      } else {
+        os << "(intro_assump_f _ _ _ ";
+      }
+      lemma_paren <<")";
+      // print corresponding literal in main sat solver
+      ProofManager* pm = ProofManager::currentPM();
+      CnfProof* cnf = pm->getCnfProof();
+      prop::SatLiteral main_lit = cnf->getLiteral(lit);
+      os << pm->getLitName(main_lit);
+      os <<" ";
+      // print corresponding literal in bv sat solver
+      prop::SatVariable bb_var = d_cnfProof->getLiteral(lit).getSatVariable();
+      os << pm->getAtomName(bb_var, "bb");
+      os <<"(\\ unit"<<bb_var<<"\n";
+      lemma_paren <<")";
+    }
+    Expr lem = utils::mkOr(lemma);
+    Assert (d_bbConflictMap.find(lem) != d_bbConflictMap.end());
+    ClauseId lemma_id = d_bbConflictMap[lem];
+    d_resolutionProof->printAssumptionsResolution(lemma_id, os, lemma_paren);
+    os <<lemma_paren.str();
+  } else {
+
+    Debug("pf::bv") << "Found a non-recorded conflict. Looking for a matching sub-conflict..."
+                    << std::endl;
+
+    bool matching;
+
+    ExprToClauseId::const_iterator it;
+    unsigned i = 0;
+    for (it = d_bbConflictMap.begin(); it != d_bbConflictMap.end(); ++it) {
+      // Our conflict is sorted, and the records are also sorted.
+      ++i;
+      Expr possibleMatch = it->first;
+
+      if (possibleMatch.getKind() != kind::OR) {
+        // This is a single-node conflict. If this node is in the conflict we're trying to prove,
+        // we have a match.
+        matching = false;
+
+        for (unsigned k = 0; k < conflict.getNumChildren(); ++k) {
+          if (conflict[k] == possibleMatch) {
+            matching = true;
+            break;
+          }
+        }
+      } else {
+        if (possibleMatch.getNumChildren() > conflict.getNumChildren())
+          continue;
+
+        unsigned k = 0;
+
+        matching = true;
+        for (unsigned j = 0; j < possibleMatch.getNumChildren(); ++j) {
+          // j is the index in possibleMatch
+          // k is the index in conflict
+          while (k < conflict.getNumChildren() && conflict[k] != possibleMatch[j]) {
+            ++k;
+          }
+          if (k == conflict.getNumChildren()) {
+            // We couldn't find a match for possibleMatch[j], so not a match
+            matching = false;
+            break;
+          }
+        }
+      }
+
+      if (matching) {
+        Debug("pf::bv") << "Found a match with conflict #" << i << ": " << std::endl << possibleMatch << std::endl;
+        // The rest is just a copy of the usual handling, if a precise match is found.
+        // We only use the literals that appear in the matching conflict, though, and not in the
+        // original lemma - as these may not have even been bit blasted!
+        std::ostringstream lemma_paren;
+
+        if (possibleMatch.getKind() == kind::OR) {
+          for (unsigned i = 0; i < possibleMatch.getNumChildren(); ++i) {
+            Expr lit = possibleMatch[i];
+
+            if (lit.getKind() == kind::NOT) {
+              os << "(intro_assump_t _ _ _ ";
+            } else {
+              os << "(intro_assump_f _ _ _ ";
+            }
+            lemma_paren <<")";
+            // print corresponding literal in main sat solver
+            ProofManager* pm = ProofManager::currentPM();
+            CnfProof* cnf = pm->getCnfProof();
+            prop::SatLiteral main_lit = cnf->getLiteral(lit);
+            os << pm->getLitName(main_lit);
+            os <<" ";
+            // print corresponding literal in bv sat solver
+            prop::SatVariable bb_var = d_cnfProof->getLiteral(lit).getSatVariable();
+            os << pm->getAtomName(bb_var, "bb");
+            os <<"(\\ unit"<<bb_var<<"\n";
+            lemma_paren <<")";
+          }
+        } else {
+          // The conflict only consists of one node, either positive or negative.
+          Expr lit = possibleMatch;
+          if (lit.getKind() == kind::NOT) {
+            os << "(intro_assump_t _ _ _ ";
+          } else {
+            os << "(intro_assump_f _ _ _ ";
+          }
+          lemma_paren <<")";
+          // print corresponding literal in main sat solver
+          ProofManager* pm = ProofManager::currentPM();
+          CnfProof* cnf = pm->getCnfProof();
+          prop::SatLiteral main_lit = cnf->getLiteral(lit);
+          os << pm->getLitName(main_lit);
+          os <<" ";
+          // print corresponding literal in bv sat solver
+          prop::SatVariable bb_var = d_cnfProof->getLiteral(lit).getSatVariable();
+          os << pm->getAtomName(bb_var, "bb");
+          os <<"(\\ unit"<<bb_var<<"\n";
+          lemma_paren <<")";
+        }
+
+        ClauseId lemma_id = it->second;
+        d_resolutionProof->printAssumptionsResolution(lemma_id, os, lemma_paren);
+        os <<lemma_paren.str();
+
+        return;
+      }
+    }
+
+    // We failed to find a matching sub conflict. The last hope is that the
+    // conflict has a FALSE assertion in it; this can happen in some corner cases,
+    // where the FALSE is the result of a rewrite.
+
+    for (unsigned i = 0; i < lemma.size(); ++i) {
+      if (lemma[i].getKind() == kind::NOT && lemma[i][0] == utils::mkFalse()) {
+        Debug("pf::bv") << "Lemma has a (not false) literal" << std::endl;
+        os << "(clausify_false ";
+        os << ProofManager::getLitName(lemma[i]);
+        os << ")";
+        return;
+      }
+    }
+
+    Debug("pf::bv") << "Failed to find a matching sub-conflict..." << std::endl
+                    << "Dumping existing conflicts:" << std::endl;
+
+    i = 0;
+    for (it = d_bbConflictMap.begin(); it != d_bbConflictMap.end(); ++it) {
+      ++i;
+      Debug("pf::bv") << "\tConflict #" << i << ": " << it->first << std::endl;
+    }
+
+    Unreachable();
+  }
+}
+
+void LFSCBitVectorProof::printSortDeclarations(std::ostream& os, std::ostream& paren) {
+  // Nothing to do here at this point.
+}
+
+void LFSCBitVectorProof::printTermDeclarations(std::ostream& os, std::ostream& paren) {
+  ExprSet::const_iterator it = d_declarations.begin();
+  ExprSet::const_iterator end = d_declarations.end();
+  for (; it != end; ++it) {
+    if ((it->isVariable() || it->isConst()) && !ProofManager::getSkolemizationManager()->isSkolem(*it)) {
+      d_exprToVariableName[*it] = ProofManager::sanitize(*it);
+    } else {
+      std::string newAlias = assignAlias(*it);
+      d_exprToVariableName[*it] = newAlias;
+    }
+
+    os << "(% " << d_exprToVariableName[*it] <<" var_bv" << "\n";
+    paren <<")";
+  }
+}
+
+void LFSCBitVectorProof::printDeferredDeclarations(std::ostream& os, std::ostream& paren) {
+  if (options::lfscLetification()) {
+    os << std::endl << ";; BV const letification\n" << std::endl;
+    std::map<Expr,std::string>::const_iterator it;
+    for (it = d_constantLetMap.begin(); it != d_constantLetMap.end(); ++it) {
+      os << "\n(@ " << it->second << " ";
+      std::ostringstream localParen;
+      int size = utils::getSize(it->first);
+      for (int i = size - 1; i >= 0; --i) {
+        os << "(bvc ";
+        os << (utils::getBit(it->first, i) ? "b1" : "b0") << " ";
+        localParen << ")";
+      }
+      os << "bvn";
+      os << localParen.str();
+      paren << ")";
+    }
+    os << std::endl;
+
+    d_useConstantLetification = true;
+  }
+}
+
+void LFSCBitVectorProof::printAliasingDeclarations(std::ostream& os, std::ostream& paren, const ProofLetMap &globalLetMap) {
+  // Print "trust" statements to bind complex bv variables to their associated terms
+
+  ExprToString::const_iterator it = d_assignedAliases.begin();
+  ExprToString::const_iterator end = d_assignedAliases.end();
+
+  for (; it != end; ++it) {
+    Debug("pf::bv") << "Printing aliasing declaration for: " << *it << std::endl;
+    std::stringstream declaration;
+    declaration << ".fbvd" << d_aliasToBindDeclaration.size();
+    d_aliasToBindDeclaration[it->second] = declaration.str();
+
+    os << "(th_let_pf _ ";
+
+    os << "(trust_f ";
+    os << "(= (BitVec " << utils::getSize(it->first) << ") ";
+    os << "(a_var_bv " << utils::getSize(it->first) << " " << it->second << ") ";
+    d_proofEngine->printBoundTerm(it->first, os, globalLetMap);
+    os << ")) ";
+    os << "(\\ "<< d_aliasToBindDeclaration[it->second] << "\n";
+    paren << "))";
+  }
+
+  os << "\n";
+}
+
+void LFSCBitVectorProof::printTermBitblasting(Expr term, std::ostream& os) {
+  // TODO: once we have the operator elimination rules remove those that we
+  // eliminated
+  Assert (term.getType().isBitVector());
+  Kind kind = term.getKind();
+
+  if (Theory::isLeafOf(term, theory::THEORY_BV) && !term.isConst()) {
+    // A term is a leaf if it has no children, or if it belongs to another theory
+    os << "(bv_bbl_var " << utils::getSize(term) << " " << d_exprToVariableName[term];
+    os << " _)";
+    return;
+  }
+
+  switch(kind) {
+  case kind::CONST_BITVECTOR : {
+    os << "(bv_bbl_const "<< utils::getSize(term) <<" _ ";
+    std::ostringstream paren;
+    int size = utils::getSize(term);
+    if (d_useConstantLetification) {
+      os << d_constantLetMap[term] << ")";
+    } else {
+      for (int i = size - 1; i>= 0; --i) {
+        os << "(bvc ";
+        os << (utils::getBit(term, i) ? "b1" : "b0") <<" ";
+        paren << ")";
+      }
+      os << " bvn)";
+      os << paren.str();
+    }
+    return;
+  }
+
+  case kind::BITVECTOR_AND :
+  case kind::BITVECTOR_OR :
+  case kind::BITVECTOR_XOR :
+  case kind::BITVECTOR_NAND :
+  case kind::BITVECTOR_NOR :
+  case kind::BITVECTOR_XNOR :
+  case kind::BITVECTOR_COMP :
+  case kind::BITVECTOR_MULT :
+  case kind::BITVECTOR_PLUS :
+  case kind::BITVECTOR_SUB :
+  case kind::BITVECTOR_CONCAT : {
+    Debug("pf::bv") << "Bitblasing kind = " << kind << std::endl;
+
+    for (int i = term.getNumChildren() - 1; i > 0; --i) {
+      os <<"(bv_bbl_"<< utils::toLFSCKind(kind);
+
+      if (kind == kind::BITVECTOR_CONCAT) {
+        os << " " << utils::getSize(term) << " _";
+      }
+      os << " _ _ _ _ _ _ ";
+    }
+
+    os << getBBTermName(term[0]) << " ";
+
+    for (unsigned i = 1; i < term.getNumChildren(); ++i) {
+      os << getBBTermName(term[i]);
+      os << ") ";
+    }
+    return;
+  }
+
+  case kind::BITVECTOR_NEG :
+  case kind::BITVECTOR_NOT :
+  case kind::BITVECTOR_ROTATE_LEFT :
+  case kind::BITVECTOR_ROTATE_RIGHT : {
+    os << "(bv_bbl_"<<utils::toLFSCKind(kind);
+    os << " _ _ _ _ ";
+    os << getBBTermName(term[0]);
+    os << ")";
+    return;
+  }
+  case kind::BITVECTOR_EXTRACT : {
+    os <<"(bv_bbl_"<<utils::toLFSCKind(kind);
+
+    os << " " << utils::getSize(term) << " ";
+    os << utils::getExtractHigh(term) << " ";
+    os << utils::getExtractLow(term) << " ";
+    os << " _ _ _ _ ";
+
+    os << getBBTermName(term[0]);
+    os <<")";
+    return;
+  }
+  case kind::BITVECTOR_REPEAT :
+  case kind::BITVECTOR_ZERO_EXTEND :
+  case kind::BITVECTOR_SIGN_EXTEND : {
+    os << "(bv_bbl_" << utils::toLFSCKind(kind) << " ";
+    os << utils::getSize(term) << " ";
+    if (term.getKind() == kind::BITVECTOR_REPEAT) {
+      unsigned amount = term.getOperator().getConst<BitVectorRepeat>().repeatAmount;
+      os << amount;
+    }
+    if (term.getKind() == kind::BITVECTOR_SIGN_EXTEND) {
+      unsigned amount = term.getOperator().getConst<BitVectorSignExtend>().signExtendAmount;
+      os << amount;
+    }
+
+    if (term.getKind() == kind::BITVECTOR_ZERO_EXTEND) {
+      unsigned amount = term.getOperator().getConst<BitVectorZeroExtend>().zeroExtendAmount;
+      os << amount;
+    }
+
+    os <<" _ _ _ _ ";
+    os << getBBTermName(term[0]);
+    os <<")";
+    return;
+  }
+  case kind::BITVECTOR_UDIV :
+  case kind::BITVECTOR_UREM :
+  case kind::BITVECTOR_UDIV_TOTAL :
+  case kind::BITVECTOR_UREM_TOTAL :
+  case kind::BITVECTOR_SDIV :
+  case kind::BITVECTOR_SREM :
+  case kind::BITVECTOR_SMOD :
+  case kind::BITVECTOR_SHL :
+  case kind::BITVECTOR_LSHR :
+  case kind::BITVECTOR_ASHR : {
+ 	// these are terms for which bit-blasting is not supported yet
+    std::ostringstream paren;
+    os <<"(trust_bblast_term _ ";
+    paren <<")";
+    d_proofEngine->printLetTerm(term, os);
+    os <<" ";
+    std::vector<Node> bits;
+    d_bitblaster->bbTerm(term, bits);
+
+    for (int i = utils::getSize(term) - 1; i >= 0; --i) {
+      os << "(bbltc ";
+      d_proofEngine->printLetTerm((bits[i]).toExpr(), os);
+      paren << ")";
+    }
+    os << "bbltn" << paren.str();
+    return;
+  }
+
+  default:
+    Unreachable("LFSCBitVectorProof Unknown operator");
+  }
+}
+
+void LFSCBitVectorProof::printAtomBitblasting(Expr atom, std::ostream& os, bool swap) {
+  Kind kind = atom.getKind();
+  switch(kind) {
+  case kind::BITVECTOR_ULT :
+  case kind::BITVECTOR_ULE :
+  case kind::BITVECTOR_UGT :
+  case kind::BITVECTOR_UGE :
+  case kind::BITVECTOR_SLT :
+  case kind::BITVECTOR_SLE :
+  case kind::BITVECTOR_SGT :
+  case kind::BITVECTOR_SGE :
+  case kind::EQUAL: {
+    Debug("pf::bv") << "Bitblasing kind = " << kind << std::endl;
+
+    os << "(bv_bbl_" << utils::toLFSCKindTerm(atom);
+
+    if (swap) {os << "_swap";}
+
+    os << " _ _ _ _ _ _ ";
+    os << getBBTermName(atom[0]);
+    os << " ";
+    os << getBBTermName(atom[1]);
+    os << ")";
+
+    return;
+  }
+  default:
+    Unreachable("LFSCBitVectorProof Unknown atom kind");
+  }
+}
+
+void LFSCBitVectorProof::printAtomBitblastingToFalse(Expr atom, std::ostream& os) {
+  Assert(atom.getKind() == kind::EQUAL);
+
+  os << "(bv_bbl_=_false";
+  os << " _ _ _ _ _ _ ";
+  os << getBBTermName(atom[0]);
+
+  os << " ";
+
+  os << getBBTermName(atom[1]);
+
+  os << ")";
+}
+
+void LFSCBitVectorProof::printBitblasting(std::ostream& os, std::ostream& paren) {
+  // bit-blast terms
+  {
+    Debug("pf::bv") << "LFSCBitVectorProof::printBitblasting: the bitblasted terms are: " << std::endl;
+    std::vector<Expr>::const_iterator it = d_bbTerms.begin();
+    std::vector<Expr>::const_iterator end = d_bbTerms.end();
+
+    Assert(options::bitblastMode() != theory::bv::BITBLAST_MODE_EAGER);
+
+    for (; it != end; ++it) {
+      if (d_usedBB.find(*it) == d_usedBB.end()) {
+        Debug("pf::bv") << "\t" << *it << "\t(UNUSED)" << std::endl;
+      } else {
+        Debug("pf::bv") << "\t" << *it << std::endl;
+      }
+    }
+
+    Debug("pf::bv") << std::endl;
+  }
+
+  std::vector<Expr>::const_iterator it = d_bbTerms.begin();
+  std::vector<Expr>::const_iterator end = d_bbTerms.end();
+  for (; it != end; ++it) {
+    if (d_usedBB.find(*it) == d_usedBB.end() &&
+        options::bitblastMode() != theory::bv::BITBLAST_MODE_EAGER)
+      continue;
+
+    // Is this term has an alias, we inject it through the decl_bblast statement
+    if (hasAlias(*it)) {
+      os << "(decl_bblast_with_alias _ _ _ _ ";
+      printTermBitblasting(*it, os);
+      os << " " << d_aliasToBindDeclaration[d_assignedAliases[*it]] << " ";
+      os << "(\\ "<< getBBTermName(*it);
+      os << "\n";
+      paren <<"))";
+    } else {
+      os << "(decl_bblast _ _ _ ";
+      printTermBitblasting(*it, os);
+      os << "(\\ "<< getBBTermName(*it);
+      os << "\n";
+      paren <<"))";
+    }
+  }
+  // bit-blast atoms
+  ExprToExpr::const_iterator ait = d_bbAtoms.begin();
+  ExprToExpr::const_iterator aend = d_bbAtoms.end();
+  for (; ait != aend; ++ait) {
+    if (d_usedBB.find(ait->first) == d_usedBB.end() &&
+        options::bitblastMode() != theory::bv::BITBLAST_MODE_EAGER)
+      continue;
+
+    os << "(th_let_pf _ ";
+    if (ait->first.getKind() == kind::CONST_BOOLEAN) {
+      bool val = ait->first.getConst<bool>();
+      os << "(iff_symm " << (val ? "true" : "false" ) << ")";
+    } else {
+      Assert(ait->first == ait->second[0]);
+
+      bool swap = false;
+      if (ait->first.getKind() == kind::EQUAL) {
+        Expr bitwiseEquivalence = ait->second[1];
+        if ((bitwiseEquivalence.getKind() == kind::CONST_BOOLEAN) && !bitwiseEquivalence.getConst<bool>()) {
+          printAtomBitblastingToFalse(ait->first, os);
+        } else {
+          if (bitwiseEquivalence.getKind() != kind::AND) {
+            // Just one bit
+            if (bitwiseEquivalence.getNumChildren() > 0 && bitwiseEquivalence[0].getKind() == kind::BITVECTOR_BITOF) {
+              swap = (ait->first[1] == bitwiseEquivalence[0][0]);
+            }
+          } else {
+            // Multiple bits
+            if (bitwiseEquivalence[0].getNumChildren() > 0 &&
+                bitwiseEquivalence[0][0].getKind() == kind::BITVECTOR_BITOF) {
+              swap = (ait->first[1] == bitwiseEquivalence[0][0][0]);
+            } else if (bitwiseEquivalence[0].getNumChildren() > 0 &&
+                       bitwiseEquivalence[0][1].getKind() == kind::BITVECTOR_BITOF) {
+              swap = (ait->first[0] == bitwiseEquivalence[0][1][0]);
+            }
+          }
+
+          printAtomBitblasting(ait->first, os, swap);
+        }
+      } else {
+        printAtomBitblasting(ait->first, os, swap);
+      }
+    }
+
+    os <<"(\\ " << ProofManager::getPreprocessedAssertionName(ait->second) <<"\n";
+    paren <<"))";
+  }
+}
+
+void LFSCBitVectorProof::calculateAtomsInBitblastingProof() {
+  // Collect the input clauses used
+  IdToSatClause used_lemmas;
+  IdToSatClause used_inputs;
+  d_resolutionProof->collectClausesUsed(used_inputs, used_lemmas);
+  d_cnfProof->collectAtomsForClauses(used_inputs, d_atomsInBitblastingProof);
+  Assert(used_lemmas.empty());
+}
+
+const std::set<Node>* LFSCBitVectorProof::getAtomsInBitblastingProof() {
+  return &d_atomsInBitblastingProof;
+}
+
+void LFSCBitVectorProof::printResolutionProof(std::ostream& os,
+                                              std::ostream& paren,
+                                              ProofLetMap& letMap) {
+  // print mapping between theory atoms and internal SAT variables
+  os << std::endl << ";; BB atom mapping\n" << std::endl;
+
+  std::set<Node>::iterator atomIt;
+  Debug("pf::bv") << std::endl << "BV Dumping atoms from inputs: " << std::endl << std::endl;
+  for (atomIt = d_atomsInBitblastingProof.begin(); atomIt != d_atomsInBitblastingProof.end(); ++atomIt) {
+    Debug("pf::bv") << "\tAtom: " << *atomIt << std::endl;
+  }
+  Debug("pf::bv") << std::endl;
+
+  // first print bit-blasting
+  printBitblasting(os, paren);
+
+  // print CNF conversion proof for bit-blasted facts
+  IdToSatClause used_lemmas;
+  IdToSatClause used_inputs;
+  d_resolutionProof->collectClausesUsed(used_inputs, used_lemmas);
+
+  d_cnfProof->printAtomMapping(d_atomsInBitblastingProof, os, paren, letMap);
+  os << std::endl << ";; Bit-blasting definitional clauses \n" << std::endl;
+  for (IdToSatClause::iterator it = used_inputs.begin();
+       it != used_inputs.end(); ++it) {
+    d_cnfProof->printCnfProofForClause(it->first, it->second, os, paren);
+  }
+
+  os << std::endl << " ;; Bit-blasting learned clauses \n" << std::endl;
+  d_resolutionProof->printResolutions(os, paren);
+}
+
+std::string LFSCBitVectorProof::assignAlias(Expr expr) {
+  Assert(d_exprToVariableName.find(expr) == d_exprToVariableName.end());
+
+  std::stringstream ss;
+  ss << "fbv" << d_assignedAliases.size();
+  Debug("pf::bv") << "assignAlias( " << expr << ") = " << ss.str() << std::endl;
+  d_assignedAliases[expr] = ss.str();
+  return ss.str();
+}
+
+bool LFSCBitVectorProof::hasAlias(Expr expr) {
+  return d_assignedAliases.find(expr) != d_assignedAliases.end();
+}
+
+void LFSCBitVectorProof::printConstantDisequalityProof(std::ostream& os, Expr c1, Expr c2, const ProofLetMap &globalLetMap) {
+  Assert (c1.isConst());
+  Assert (c2.isConst());
+  Assert (utils::getSize(c1) == utils::getSize(c2));
+
+  os << "(bv_disequal_constants " << utils::getSize(c1) << " ";
+
+  std::ostringstream paren;
+
+  for (int i = utils::getSize(c1) - 1; i >= 0; --i) {
+    os << "(bvc ";
+    os << (utils::getBit(c1, i) ? "b1" : "b0") << " ";
+    paren << ")";
+  }
+  os << "bvn";
+  os << paren.str();
+
+  os << " ";
+
+  for (int i = utils::getSize(c2) - 1; i >= 0; --i) {
+    os << "(bvc ";
+    os << (utils::getBit(c2, i) ? "b1" : "b0") << " ";
+
+  }
+  os << "bvn";
+  os << paren.str();
+
+  os << ")";
+}
+
+void LFSCBitVectorProof::printRewriteProof(std::ostream& os, const Node &n1, const Node &n2) {
+  ProofLetMap emptyMap;
+  os << "(rr_bv_default ";
+  d_proofEngine->printBoundTerm(n2.toExpr(), os, emptyMap);
+  os << " ";
+  d_proofEngine->printBoundTerm(n1.toExpr(), os, emptyMap);
+  os << ")";
+}
+
+} /* namespace CVC4 */
diff --git a/src/proof/bitvector_proof.h b/src/proof/bitvector_proof.h
new file mode 100644
index 0000000..6b952e3
--- /dev/null
+++ b/src/proof/bitvector_proof.h
@@ -0,0 +1,166 @@
+/*********************                                                        */
+/*! \file bitvector_proof.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Guy Katz, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Bitvector proof
+ **
+ ** Bitvector proof
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__BITVECTOR__PROOF_H
+#define __CVC4__BITVECTOR__PROOF_H
+
+//#include <cstdint>
+#include <ext/hash_map>
+#include <ext/hash_set>
+#include <iostream>
+#include <set>
+#include <sstream>
+#include <vector>
+
+#include "expr/expr.h"
+#include "proof/theory_proof.h"
+#include "prop/bvminisat/core/Solver.h"
+
+
+namespace CVC4 {
+
+namespace prop {
+class CnfStream;
+} /* namespace CVC4::prop */
+
+namespace theory {
+namespace bv {
+class TheoryBV;
+template <class T> class TBitblaster;
+} /* namespace CVC4::theory::bv */
+} /* namespace CVC4::theory */
+
+class CnfProof;
+} /* namespace CVC4 */
+
+namespace CVC4 {
+
+template <class Solver> class TSatProof;
+typedef TSatProof< CVC4::BVMinisat::Solver> BVSatProof;
+
+template <class Solver> class LFSCSatProof;
+typedef LFSCSatProof< CVC4::BVMinisat::Solver> LFSCBVSatProof;
+
+typedef __gnu_cxx::hash_set<Expr, ExprHashFunction> ExprSet;
+typedef __gnu_cxx::hash_map<Expr, ClauseId, ExprHashFunction> ExprToClauseId;
+typedef __gnu_cxx::hash_map<Expr, unsigned, ExprHashFunction> ExprToId;
+typedef __gnu_cxx::hash_map<Expr, Expr, ExprHashFunction> ExprToExpr;
+typedef __gnu_cxx::hash_map<Expr, std::string, ExprHashFunction> ExprToString;
+
+class BitVectorProof : public TheoryProof {
+protected:
+  ExprSet d_declarations;
+
+  ExprSet d_usedBB; // terms and formulas that are actually relevant to the proof
+
+  ExprSet d_seenBBTerms; // terms that need to be bit-blasted
+  std::vector<Expr> d_bbTerms; // order of bit-blasting
+  ExprToExpr d_bbAtoms; // atoms that need to be bit-blasted
+
+  // map from Expr representing normalized lemma to ClauseId in SAT solver
+  ExprToClauseId d_bbConflictMap;
+  BVSatProof* d_resolutionProof;
+
+  CnfProof* d_cnfProof;
+
+  bool d_isAssumptionConflict;
+  theory::bv::TBitblaster<Node>* d_bitblaster;
+  std::string getBBTermName(Expr expr);
+
+  std::map<Expr,std::string> d_constantLetMap;
+  bool d_useConstantLetification;
+
+public:
+  BitVectorProof(theory::bv::TheoryBV* bv, TheoryProofEngine* proofEngine);
+
+  void initSatProof(CVC4::BVMinisat::Solver* solver);
+  void initCnfProof(prop::CnfStream* cnfStream, context::Context* ctx);
+  void setBitblaster(theory::bv::TBitblaster<Node>* bb);
+
+  BVSatProof* getSatProof();
+  CnfProof* getCnfProof() {return d_cnfProof; }
+  void finalizeConflicts(std::vector<Expr>& conflicts);
+
+  void startBVConflict(CVC4::BVMinisat::Solver::TCRef cr);
+  void startBVConflict(CVC4::BVMinisat::Solver::TLit lit);
+  /**
+   * All the
+   *
+   * @param confl an inconsistent set of bv literals
+   */
+  void endBVConflict(const BVMinisat::Solver::TLitVec& confl);
+  void markAssumptionConflict() { d_isAssumptionConflict = true; }
+  bool isAssumptionConflict() { return d_isAssumptionConflict; }
+
+  void registerTermBB(Expr term);
+  void registerAtomBB(Expr atom, Expr atom_bb);
+
+  virtual void registerTerm(Expr term);
+
+  virtual void printTermBitblasting(Expr term, std::ostream& os) = 0;
+  virtual void printAtomBitblasting(Expr term, std::ostream& os, bool swap) = 0;
+  virtual void printAtomBitblastingToFalse(Expr term, std::ostream& os) = 0;
+
+  virtual void printBitblasting(std::ostream& os, std::ostream& paren) = 0;
+  virtual void printResolutionProof(std::ostream& os, std::ostream& paren, ProofLetMap& letMap) = 0;
+  virtual const std::set<Node>* getAtomsInBitblastingProof() = 0;
+  virtual void calculateAtomsInBitblastingProof() = 0;
+};
+
+class LFSCBitVectorProof: public BitVectorProof {
+
+  void printConstant(Expr term, std::ostream& os);
+  void printOperatorNary(Expr term, std::ostream& os, const ProofLetMap& map);
+  void printOperatorUnary(Expr term, std::ostream& os, const ProofLetMap& map);
+  void printPredicate(Expr term, std::ostream& os, const ProofLetMap& map);
+  void printOperatorParametric(Expr term, std::ostream& os, const ProofLetMap& map);
+  void printBitOf(Expr term, std::ostream& os, const ProofLetMap& map);
+
+  ExprToString d_exprToVariableName;
+  ExprToString d_assignedAliases;
+  std::map<std::string, std::string> d_aliasToBindDeclaration;
+  std::string assignAlias(Expr expr);
+  bool hasAlias(Expr expr);
+
+  std::set<Node> d_atomsInBitblastingProof;
+
+public:
+  LFSCBitVectorProof(theory::bv::TheoryBV* bv, TheoryProofEngine* proofEngine)
+    :BitVectorProof(bv, proofEngine)
+  {}
+  virtual void printOwnedTerm(Expr term, std::ostream& os, const ProofLetMap& map);
+  virtual void printOwnedSort(Type type, std::ostream& os);
+  virtual void printTermBitblasting(Expr term, std::ostream& os);
+  virtual void printAtomBitblasting(Expr term, std::ostream& os, bool swap);
+  virtual void printAtomBitblastingToFalse(Expr term, std::ostream& os);
+  virtual void printTheoryLemmaProof(std::vector<Expr>& lemma, std::ostream& os, std::ostream& paren, const ProofLetMap& map);
+  virtual void printSortDeclarations(std::ostream& os, std::ostream& paren);
+  virtual void printTermDeclarations(std::ostream& os, std::ostream& paren);
+  virtual void printDeferredDeclarations(std::ostream& os, std::ostream& paren);
+  virtual void printAliasingDeclarations(std::ostream& os, std::ostream& paren, const ProofLetMap &globalLetMap);
+  virtual void printBitblasting(std::ostream& os, std::ostream& paren);
+  virtual void printResolutionProof(std::ostream& os, std::ostream& paren, ProofLetMap& letMap);
+  void calculateAtomsInBitblastingProof();
+  const std::set<Node>* getAtomsInBitblastingProof();
+  void printConstantDisequalityProof(std::ostream& os, Expr c1, Expr c2, const ProofLetMap &globalLetMap);
+  void printRewriteProof(std::ostream& os, const Node &n1, const Node &n2);
+};
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__BITVECTOR__PROOF_H */
diff --git a/src/proof/clause_id.h b/src/proof/clause_id.h
new file mode 100644
index 0000000..c66f8c9
--- /dev/null
+++ b/src/proof/clause_id.h
@@ -0,0 +1,33 @@
+/*********************                                                        */
+/*! \file clause_id.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Definition of ClauseId
+ **
+ ** A ClauseId is a shared identifier between the proofs module and the sat
+ ** solver for a clause.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__PROOF__CLAUSE_ID_H
+#define __CVC4__PROOF__CLAUSE_ID_H
+
+namespace CVC4 {
+
+/**
+ * A ClauseId is a shared identifier between the proofs module and the sat
+ * solver for a clause.
+ */
+typedef unsigned ClauseId;
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PROOF__CLAUSE_ID_H */
diff --git a/src/proof/cnf_proof.cpp b/src/proof/cnf_proof.cpp
new file mode 100644
index 0000000..d1a228e
--- /dev/null
+++ b/src/proof/cnf_proof.cpp
@@ -0,0 +1,846 @@
+/*********************                                                        */
+/*! \file cnf_proof.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Guy Katz, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "proof/cnf_proof.h"
+
+#include "proof/clause_id.h"
+#include "proof/proof_manager.h"
+#include "proof/proof_utils.h"
+#include "proof/theory_proof.h"
+#include "prop/cnf_stream.h"
+#include "prop/minisat/minisat.h"
+#include "prop/sat_solver_types.h"
+
+namespace CVC4 {
+
+CnfProof::CnfProof(prop::CnfStream* stream,
+                   context::Context* ctx,
+                   const std::string& name)
+  : d_cnfStream(stream)
+  , d_clauseToAssertion(ctx)
+  , d_assertionToProofRule(ctx)
+  , d_currentAssertionStack()
+  , d_currentDefinitionStack()
+  , d_clauseToDefinition(ctx)
+  , d_definitions()
+  , d_cnfDeps()
+  , d_name(name)
+{
+  // Setting the proof object for the CnfStream
+  d_cnfStream->setProof(this);
+}
+
+CnfProof::~CnfProof() {}
+
+bool CnfProof::isAssertion(Node node) {
+  return d_assertionToProofRule.find(node) !=
+         d_assertionToProofRule.end();
+}
+
+bool CnfProof::isDefinition(Node node) {
+  return d_definitions.find(node) !=
+         d_definitions.end();
+}
+
+ProofRule CnfProof::getProofRule(Node node) {
+  Assert (isAssertion(node));
+  NodeToProofRule::iterator it = d_assertionToProofRule.find(node);
+  return (*it).second;
+}
+
+ProofRule CnfProof::getProofRule(ClauseId clause) {
+  TNode assertion = getAssertionForClause(clause);
+  return getProofRule(assertion);
+}
+
+Node CnfProof::getAssertionForClause(ClauseId clause) {
+  ClauseIdToNode::const_iterator it = d_clauseToAssertion.find(clause);
+  Assert (it != d_clauseToAssertion.end());
+  return (*it).second;
+}
+
+Node CnfProof::getDefinitionForClause(ClauseId clause) {
+  ClauseIdToNode::const_iterator it = d_clauseToDefinition.find(clause);
+  Assert (it != d_clauseToDefinition.end());
+  return (*it).second;
+}
+
+void CnfProof::registerConvertedClause(ClauseId clause, bool explanation) {
+  Assert (clause != ClauseIdUndef &&
+          clause != ClauseIdError &&
+          clause != ClauseIdEmpty);
+
+  // Explanations do not need a CNF conversion proof since they are in CNF
+  // (they will only need a theory proof as they are theory valid)
+  if (explanation) {
+    Debug("proof:cnf") << "CnfProof::registerConvertedClause "
+                       << clause << " explanation? " << explanation << std::endl;
+    Assert (d_explanations.find(clause) == d_explanations.end());
+    d_explanations.insert(clause);
+    return;
+  }
+
+  Node current_assertion = getCurrentAssertion();
+  Node current_expr = getCurrentDefinition();
+
+  Debug("proof:cnf") << "CnfProof::registerConvertedClause "
+                     << clause << " assertion = " << current_assertion
+                     << clause << " definition = " << current_expr << std::endl;
+
+  setClauseAssertion(clause, current_assertion);
+  setClauseDefinition(clause, current_expr);
+}
+
+void CnfProof::setClauseAssertion(ClauseId clause, Node expr) {
+  Debug("proof:cnf") << "CnfProof::setClauseAssertion "
+                     << clause << " assertion " << expr << std::endl;
+  // We can add the same clause from different assertions.  In this
+  // case we keep the first assertion. For example asserting a /\ b
+  // and then b /\ c where b is an atom, would assert b twice (note
+  // that since b is top level, it is not cached by the CnfStream)
+  if (d_clauseToAssertion.find(clause) != d_clauseToAssertion.end())
+    return;
+
+  d_clauseToAssertion.insert (clause, expr);
+}
+
+void CnfProof::setClauseDefinition(ClauseId clause, Node definition) {
+  Debug("proof:cnf") << "CnfProof::setClauseDefinition "
+                     << clause << " definition " << definition << std::endl;
+  // We keep the first definition
+  if (d_clauseToDefinition.find(clause) != d_clauseToDefinition.end())
+    return;
+
+  d_clauseToDefinition.insert(clause, definition);
+  d_definitions.insert(definition);
+}
+
+void CnfProof::registerAssertion(Node assertion, ProofRule reason) {
+  Debug("proof:cnf") << "CnfProof::registerAssertion "
+                     << assertion << " reason " << reason << std::endl;
+  // We can obtain the assertion from different reasons (e.g. if the
+  // assertion is a lemma over shared terms both theories can generate
+  // the same lemma) We only need to prove the lemma in one way, so we
+  // keep the first reason.
+  if (isAssertion(assertion)) {
+    return;
+  }
+  d_assertionToProofRule.insert(assertion, reason);
+}
+
+LemmaProofRecipe CnfProof::getProofRecipe(const std::set<Node> &lemma) {
+  Assert(d_lemmaToProofRecipe.find(lemma) != d_lemmaToProofRecipe.end());
+  return d_lemmaToProofRecipe[lemma];
+}
+
+bool CnfProof::haveProofRecipe(const std::set<Node> &lemma) {
+  return d_lemmaToProofRecipe.find(lemma) != d_lemmaToProofRecipe.end();
+}
+
+void CnfProof::setCnfDependence(Node from, Node to) {
+  Debug("proof:cnf") << "CnfProof::setCnfDependence "
+                     << "from " << from  << std::endl
+                     << "     to " << to << std::endl;
+
+  Assert (from != to);
+  d_cnfDeps.insert(std::make_pair(from, to));
+}
+
+void CnfProof::pushCurrentAssertion(Node assertion) {
+  Debug("proof:cnf") << "CnfProof::pushCurrentAssertion "
+                     << assertion  << std::endl;
+
+  d_currentAssertionStack.push_back(assertion);
+}
+
+void CnfProof::popCurrentAssertion() {
+  Assert (d_currentAssertionStack.size());
+
+  Debug("proof:cnf") << "CnfProof::popCurrentAssertion "
+                     << d_currentAssertionStack.back() << std::endl;
+
+  d_currentAssertionStack.pop_back();
+}
+
+Node CnfProof::getCurrentAssertion() {
+  Assert (d_currentAssertionStack.size());
+  return d_currentAssertionStack.back();
+}
+
+void CnfProof::setProofRecipe(LemmaProofRecipe* proofRecipe) {
+  Assert(proofRecipe);
+  Assert(proofRecipe->getNumSteps() > 0);
+  d_lemmaToProofRecipe[proofRecipe->getBaseAssertions()] = *proofRecipe;
+}
+
+void CnfProof::pushCurrentDefinition(Node definition) {
+  Debug("proof:cnf") << "CnfProof::pushCurrentDefinition "
+                     << definition  << std::endl;
+
+  d_currentDefinitionStack.push_back(definition);
+}
+
+void CnfProof::popCurrentDefinition() {
+  Assert (d_currentDefinitionStack.size());
+
+  Debug("proof:cnf") << "CnfProof::popCurrentDefinition "
+                     << d_currentDefinitionStack.back() << std::endl;
+
+  d_currentDefinitionStack.pop_back();
+}
+
+Node CnfProof::getCurrentDefinition() {
+  Assert (d_currentDefinitionStack.size());
+  return d_currentDefinitionStack.back();
+}
+
+Node CnfProof::getAtom(prop::SatVariable var) {
+  prop::SatLiteral lit (var);
+  Node node = d_cnfStream->getNode(lit);
+  return node;
+}
+
+void CnfProof::collectAtoms(const prop::SatClause* clause,
+                            std::set<Node>& atoms) {
+  for (unsigned i = 0; i < clause->size(); ++i) {
+    prop::SatLiteral lit = clause->operator[](i);
+    prop::SatVariable var = lit.getSatVariable();
+    TNode atom = getAtom(var);
+    if (atoms.find(atom) == atoms.end()) {
+      atoms.insert(atom);
+    }
+  }
+}
+
+prop::SatLiteral CnfProof::getLiteral(TNode atom) {
+  return d_cnfStream->getLiteral(atom);
+}
+
+bool CnfProof::hasLiteral(TNode atom) {
+  return d_cnfStream->hasLiteral(atom);
+}
+
+void CnfProof::ensureLiteral(TNode atom, bool noPreregistration) {
+  d_cnfStream->ensureLiteral(atom, noPreregistration);
+}
+
+void CnfProof::collectAtomsForClauses(const IdToSatClause& clauses,
+                                      std::set<Node>& atoms) {
+  IdToSatClause::const_iterator it = clauses.begin();
+  for (; it != clauses.end(); ++it) {
+    const prop::SatClause* clause = it->second;
+    collectAtoms(clause, atoms);
+  }
+}
+
+void CnfProof::collectAtomsAndRewritesForLemmas(const IdToSatClause& lemmaClauses,
+                                                std::set<Node>& atoms,
+                                                NodePairSet& rewrites) {
+  IdToSatClause::const_iterator it = lemmaClauses.begin();
+  for (; it != lemmaClauses.end(); ++it) {
+    const prop::SatClause* clause = it->second;
+
+    // TODO: just calculate the map from ID to recipe once,
+    // instead of redoing this over and over again
+    std::vector<Expr> clause_expr;
+    std::set<Node> clause_expr_nodes;
+    for(unsigned i = 0; i < clause->size(); ++i) {
+      prop::SatLiteral lit = (*clause)[i];
+      Node node = getAtom(lit.getSatVariable());
+      Expr atom = node.toExpr();
+      if (atom.isConst()) {
+        Assert (atom == utils::mkTrue());
+        continue;
+      }
+      clause_expr_nodes.insert(lit.isNegated() ? node.notNode() : node);
+    }
+
+    LemmaProofRecipe recipe = getProofRecipe(clause_expr_nodes);
+
+    for (unsigned i = 0; i < recipe.getNumSteps(); ++i) {
+      const LemmaProofRecipe::ProofStep* proofStep = recipe.getStep(i);
+      Node atom = proofStep->getLiteral();
+
+      if (atom == Node()) {
+        // The last proof step always has the empty node as its target...
+        continue;
+      }
+
+      if (atom.getKind() == kind::NOT) {
+        atom = atom[0];
+      }
+
+      atoms.insert(atom);
+    }
+
+    LemmaProofRecipe::RewriteIterator rewriteIt;
+    for (rewriteIt = recipe.rewriteBegin(); rewriteIt != recipe.rewriteEnd(); ++rewriteIt) {
+      rewrites.insert(NodePair(rewriteIt->first, rewriteIt->second));
+
+      // The unrewritten terms also need to have literals, so insert them into atoms
+      Node rewritten = rewriteIt->first;
+      if (rewritten.getKind() == kind::NOT) {
+        rewritten = rewritten[0];
+      }
+      atoms.insert(rewritten);
+    }
+  }
+}
+
+void CnfProof::collectAssertionsForClauses(const IdToSatClause& clauses,
+                                           NodeSet& assertions) {
+  IdToSatClause::const_iterator it = clauses.begin();
+  for (; it != clauses.end(); ++it) {
+    TNode used_assertion =  getAssertionForClause(it->first);
+    assertions.insert(used_assertion);
+    // it can be the case that a definition for a clause is an assertion
+    // but it is not the assertion for the clause
+    // e.g. the assertions [(and a b), a]
+    TNode used_definition = getDefinitionForClause(it->first);
+    if (isAssertion(used_definition)) {
+      assertions.insert(used_definition);
+    }
+  }
+}
+
+void LFSCCnfProof::printAtomMapping(const std::set<Node>& atoms,
+                                    std::ostream& os,
+                                    std::ostream& paren) {
+  std::set<Node>::const_iterator it = atoms.begin();
+  std::set<Node>::const_iterator end = atoms.end();
+
+  for (;it != end; ++it) {
+    os << "(decl_atom ";
+    Node atom = *it;
+    prop::SatVariable var = getLiteral(atom).getSatVariable();
+    //FIXME hideous
+    LFSCTheoryProofEngine* pe = (LFSCTheoryProofEngine*)ProofManager::currentPM()->getTheoryProofEngine();
+    pe->printLetTerm(atom.toExpr(), os);
+
+    os << " (\\ " << ProofManager::getVarName(var, d_name);
+    os << " (\\ " << ProofManager::getAtomName(var, d_name) << "\n";
+    paren << ")))";
+  }
+}
+
+void LFSCCnfProof::printAtomMapping(const std::set<Node>& atoms,
+                                    std::ostream& os,
+                                    std::ostream& paren,
+                                    ProofLetMap &letMap) {
+  std::set<Node>::const_iterator it = atoms.begin();
+  std::set<Node>::const_iterator end = atoms.end();
+
+  for (;it != end; ++it) {
+    os << "(decl_atom ";
+    Node atom = *it;
+    prop::SatVariable var = getLiteral(atom).getSatVariable();
+    //FIXME hideous
+    LFSCTheoryProofEngine* pe = (LFSCTheoryProofEngine*)ProofManager::currentPM()->getTheoryProofEngine();
+    if (pe->printsAsBool(atom.toExpr())) os << "(p_app ";
+    pe->printBoundTerm(atom.toExpr(), os, letMap);
+    if (pe->printsAsBool(atom.toExpr())) os << ")";
+
+    os << " (\\ " << ProofManager::getVarName(var, d_name);
+    os << " (\\ " << ProofManager::getAtomName(var, d_name) << "\n";
+    paren << ")))";
+  }
+}
+
+// maps each expr to the position it had in the clause and the polarity it had
+Node LFSCCnfProof::clauseToNode(const prop::SatClause& clause,
+                                std::map<Node, unsigned>& childIndex,
+                                std::map<Node, bool>& childPol ) {
+  std::vector< Node > children;
+  for (unsigned i = 0; i < clause.size(); ++i) {
+    prop::SatLiteral lit = clause[i];
+    prop::SatVariable var = lit.getSatVariable();
+    Node atom = getAtom(var);
+    children.push_back( lit.isNegated() ? atom.negate() : atom );
+    childIndex[atom] = i;
+    childPol[atom] = !lit.isNegated();
+  }
+  return children.size()==1 ? children[0] :
+         NodeManager::currentNM()->mkNode(kind::OR, children );
+}
+
+void LFSCCnfProof::printCnfProofForClause(ClauseId id,
+                                          const prop::SatClause* clause,
+                                          std::ostream& os,
+                                          std::ostream& paren) {
+  Debug("cnf-pf") << std::endl << std::endl << "LFSCCnfProof::printCnfProofForClause( " << id << " ) starting "
+                  << std::endl;
+
+  os << "(satlem _ _ ";
+  std::ostringstream clause_paren;
+  printClause(*clause, os, clause_paren);
+  os << "(clausify_false ";
+
+  // FIXMEEEEEEEEEEEE
+  // os <<"trust)";
+  // os << clause_paren.str()
+  //    << " (\\ " << ProofManager::getInputClauseName(id, d_name) << "\n";
+  // paren << "))";
+
+  // return;
+
+  Assert( clause->size()>0 );
+
+  Node base_assertion = getDefinitionForClause(id);
+
+  //get the assertion for the clause id
+  std::map<Node, unsigned > childIndex;
+  std::map<Node, bool > childPol;
+  Node assertion = clauseToNode( *clause, childIndex, childPol );
+  //if there is no reason, construct assertion directly.   This can happen for unit clauses.
+  if( base_assertion.isNull() ){
+    base_assertion = assertion;
+  }
+  //os_base is proof of base_assertion
+  std::stringstream os_base;
+
+  // checks if tautological definitional clause or top-level clause
+  // and prints the proof of the top-level formula
+  bool is_input = printProofTopLevel(base_assertion, os_base);
+
+  if (is_input) {
+    Debug("cnf-pf") << std::endl << "; base assertion is input. proof: " << os_base.str() << std::endl;
+  }
+
+  //get base assertion with polarity
+  bool base_pol = base_assertion.getKind()!=kind::NOT;
+  base_assertion = base_assertion.getKind()==kind::NOT ? base_assertion[0] : base_assertion;
+
+  std::map< Node, unsigned >::iterator itci = childIndex.find( base_assertion );
+  bool is_in_clause = itci!=childIndex.end();
+  unsigned base_index = is_in_clause ? itci->second : 0;
+  Trace("cnf-pf") << std::endl;
+  Trace("cnf-pf") << "; input = " << is_input << ", is_in_clause = " << is_in_clause << ", id = " << id << ", assertion = " << assertion << ", base assertion = " << base_assertion << std::endl;
+  if (!is_input){
+    Assert(is_in_clause);
+    prop::SatLiteral blit = (*clause)[ base_index ];
+    os_base << ProofManager::getLitName(blit, d_name);
+    base_pol = !childPol[base_assertion]; // WHY? if the case is =>
+  }
+  Trace("cnf-pf") << "; polarity of base assertion = " << base_pol << std::endl;
+  Trace("cnf-pf") << "; proof of base : " << os_base.str() << std::endl;
+
+  bool success = false;
+  if( is_input &&
+      is_in_clause &&
+      childPol[base_assertion]==base_pol ){
+    //if both in input and in clause, the proof is trivial.  this is the case for unit clauses.
+    Trace("cnf-pf") << "; trivial" << std::endl;
+    os << "(contra _ ";
+    success = true;
+    prop::SatLiteral lit = (*clause)[itci->second];
+    if( base_pol ){
+      os << os_base.str() << " " << ProofManager::getLitName(lit, d_name);
+    }else{
+      os << ProofManager::getLitName(lit, d_name) << " " << os_base.str();
+    }
+    os << ")";
+  } else if ((base_assertion.getKind()==kind::AND && !base_pol) ||
+           ((base_assertion.getKind()==kind::OR ||
+             base_assertion.getKind()==kind::IMPLIES) && base_pol)) {
+    Trace("cnf-pf") << "; and/or case 1" << std::endl;
+    success = true;
+    std::stringstream os_main;
+    std::stringstream os_paren;
+    //eliminate each one
+    for (int j = base_assertion.getNumChildren()-2; j >= 0; j--) {
+      Trace("cnf-pf-debug") << "; base_assertion[" << j << "] is: " << base_assertion[j]
+                            << ", and its kind is: " << base_assertion[j].getKind() << std::endl ;
+
+      Node child_base = base_assertion[j].getKind()==kind::NOT ?
+                        base_assertion[j][0] : base_assertion[j];
+      bool child_pol = base_assertion[j].getKind()!=kind::NOT;
+
+      Trace("cnf-pf-debug") << "; child " << j << " "
+                            << ", child base: " << child_base
+                            << ", child pol: " << child_pol
+                            << ", childPol[child_base] "
+                            << childPol[child_base] << ", base pol: " << base_pol << std::endl;
+
+      std::map< Node, unsigned >::iterator itcic = childIndex.find( child_base );
+
+      if( itcic!=childIndex.end() ){
+        //Assert( child_pol==childPol[child_base] );
+        os_main << "(or_elim_1 _ _ ";
+        prop::SatLiteral lit = (*clause)[itcic->second];
+        // Should be if in the original formula it was negated
+        // if( childPol[child_base] && base_pol ){
+
+        // Adding the below to catch a specific case where the first child of an IMPLIES is negative,
+        // in which case we need not_not introduction.
+        if (base_assertion.getKind() == kind::IMPLIES && !child_pol && base_pol) {
+          os_main << "(not_not_intro _ " << ProofManager::getLitName(lit, d_name) << ") ";
+        } else if (childPol[child_base] && base_pol) {
+          os_main << ProofManager::getLitName(lit, d_name) << " ";
+        }else{
+          os_main << "(not_not_intro _ " << ProofManager::getLitName(lit, d_name) << ") ";
+        }
+        if( base_assertion.getKind()==kind::AND ){
+          os_main << "(not_and_elim _ _ ";
+          os_paren << ")";
+        }
+        os_paren << ")";
+      }else{
+        success = false;
+      }
+    }
+
+    if( success ){
+      if( base_assertion.getKind()==kind::IMPLIES ){
+        os_main << "(impl_elim _ _ ";
+      }
+      os_main << os_base.str();
+      if( base_assertion.getKind()==kind::IMPLIES ){
+        os_main << ")";
+      }
+      os_main << os_paren.str();
+      int last_index = base_assertion.getNumChildren()-1;
+      Node child_base = base_assertion[last_index].getKind()==kind::NOT ? base_assertion[last_index][0] : base_assertion[last_index];
+      //bool child_pol = base_assertion[last_index].getKind()!=kind::NOT;
+      std::map< Node, unsigned >::iterator itcic = childIndex.find( child_base );
+      if( itcic!=childIndex.end() ){
+        os << "(contra _ ";
+        prop::SatLiteral lit = (*clause)[itcic->second];
+        if( childPol[child_base] && base_pol){
+          os << os_main.str() << " " << ProofManager::getLitName(lit, d_name);
+        }else{
+          os << ProofManager::getLitName(lit, d_name) << " " << os_main.str();
+        }
+        os << ")";
+      }else{
+        success = false;
+      }
+    }
+  }else if ((base_assertion.getKind()==kind::AND && base_pol) ||
+            ((base_assertion.getKind()==kind::OR ||
+              base_assertion.getKind()==kind::IMPLIES) && !base_pol)) {
+
+    std::stringstream os_main;
+
+    Node iatom;
+    if (is_in_clause) {
+      Assert( assertion.getNumChildren()==2 );
+      iatom = assertion[ base_index==0 ? 1 : 0];
+    } else {
+      Assert( assertion.getNumChildren()==1 );
+      iatom = assertion[0];
+    }
+
+    Trace("cnf-pf") << "; and/or case 2, iatom = " << iatom << std::endl;
+    Node e_base = iatom.getKind()==kind::NOT ? iatom[0] : iatom;
+    bool e_pol = iatom.getKind()!=kind::NOT;
+    std::map< Node, unsigned >::iterator itcic = childIndex.find( e_base );
+    if( itcic!=childIndex.end() ){
+      prop::SatLiteral lit = (*clause)[itcic->second];
+      //eliminate until we find iatom
+      for( unsigned j=0; j<base_assertion.getNumChildren(); j++ ){
+        Node child_base = base_assertion[j].getKind()==kind::NOT ? base_assertion[j][0] : base_assertion[j];
+        bool child_pol = base_assertion[j].getKind()!=kind::NOT;
+        if( j==0 && base_assertion.getKind()==kind::IMPLIES ){
+          child_pol = !child_pol;
+        }
+        if( e_base==child_base && (e_pol==child_pol)==(base_assertion.getKind()==kind::AND) ){
+          success = true;
+          bool elimNn =( ( base_assertion.getKind()==kind::OR || ( base_assertion.getKind()==kind::IMPLIES && j==1 ) ) && e_pol );
+          if( elimNn ){
+            os_main << "(not_not_elim _ ";
+          }
+          std::stringstream os_paren;
+          if( j+1<base_assertion.getNumChildren() ){
+            os_main << "(and_elim_1 _ _ ";
+            if( base_assertion.getKind()==kind::OR || base_assertion.getKind()==kind::IMPLIES ){
+              os_main << "(not_" << ( base_assertion.getKind()==kind::OR ? "or" : "impl" ) << "_elim _ _ ";
+              os_paren << ")";
+            }
+            os_paren << ")";
+          }
+          for( unsigned k=0; k<j; k++ ){
+            os_main << "(and_elim_2 _ _ ";
+            if( base_assertion.getKind()==kind::OR || base_assertion.getKind()==kind::IMPLIES ){
+              os_main << "(not_" << ( base_assertion.getKind()==kind::OR ? "or" : "impl" ) << "_elim _ _ ";
+              os_paren << ")";
+            }
+            os_paren << ")";
+          }
+          os_main << os_base.str() << os_paren.str();
+          if( elimNn ){
+            os_main << ")";
+          }
+          break;
+        }
+      }
+      if( success ){
+        os << "(contra _ ";
+        if( !e_pol ){
+          os << ProofManager::getLitName(lit, d_name) << " " << os_main.str();
+        }else{
+          os << os_main.str() << " " << ProofManager::getLitName(lit, d_name);
+        }
+        os << ")";
+      }
+    }
+  }else if( base_assertion.getKind()==kind::XOR || ( base_assertion.getKind()==kind::EQUAL && base_assertion[0].getType().isBoolean() ) ){
+    //eliminate negation
+    int num_nots_2 = 0;
+    int num_nots_1 = 0;
+    Kind k;
+    if( !base_pol ){
+      if( base_assertion.getKind()==kind::EQUAL ){
+        num_nots_2 = 1;
+      }
+      k = kind::EQUAL;
+    }else{
+      k = base_assertion.getKind();
+    }
+    std::vector< unsigned > indices;
+    std::vector< bool > pols;
+    success = true;
+    int elimNum = 0;
+    for( unsigned i=0; i<2; i++ ){
+      Node child_base = base_assertion[i].getKind()==kind::NOT ? base_assertion[i][0] : base_assertion[i];
+      bool child_pol = base_assertion[i].getKind()!=kind::NOT;
+      std::map< Node, unsigned >::iterator itcic = childIndex.find( child_base );
+      if( itcic!=childIndex.end() ){
+        indices.push_back( itcic->second );
+        pols.push_back( childPol[child_base] );
+        if( i==0 ){
+          //figure out which way to elim
+          elimNum = child_pol==childPol[child_base] ? 2 : 1;
+          if( (elimNum==2)==(k==kind::EQUAL) ){
+            num_nots_2++;
+          }
+          if( elimNum==1 ){
+            num_nots_1++;
+          }
+        }
+      }else{
+        success = false;
+        break;
+      }
+    }
+    Trace("cnf-pf") << std::endl << "; num nots = " << num_nots_2 << std::endl;
+    if( success ){
+      os << "(contra _ ";
+      std::stringstream os_base_n;
+      if( num_nots_2==2 ){
+        os_base_n << "(not_not_elim _ ";
+      }
+      os_base_n << "(or_elim_1 _ _ ";
+      prop::SatLiteral lit1 = (*clause)[indices[0]];
+      if( !pols[0] || num_nots_1==1 ){
+        os_base_n << "(not_not_intro _ " << ProofManager::getLitName(lit1, d_name) << ") ";
+      }else{
+        Trace("cnf-pf-debug") << "CALLING getlitname" << std::endl;
+        os_base_n << ProofManager::getLitName(lit1, d_name) << " ";
+      }
+      Assert( elimNum!=0 );
+      os_base_n << "(" << ( k==kind::EQUAL ? "iff" : "xor" ) << "_elim_" << elimNum << " _ _ ";
+      if( !base_pol ){
+        os_base_n << "(not_" << ( base_assertion.getKind()==kind::EQUAL ? "iff" : "xor" ) << "_elim _ _ " << os_base.str() << ")";
+      }else{
+        os_base_n << os_base.str();
+      }
+      os_base_n << "))";
+      if( num_nots_2==2 ){
+        os_base_n << ")";
+        num_nots_2 = 0;
+      }
+      prop::SatLiteral lit2 = (*clause)[indices[1]];
+      if( pols[1]==(num_nots_2==0) ){
+        os << os_base_n.str() << " ";
+        if( num_nots_2==1 ){
+          os << "(not_not_intro _ " << ProofManager::getLitName(lit2, d_name) << ")";
+        }else{
+          os << ProofManager::getLitName(lit2, d_name);
+        }
+      }else{
+        os << ProofManager::getLitName(lit2, d_name) << " " << os_base_n.str();
+      }
+      os << ")";
+    }
+  }else if( base_assertion.getKind()==kind::ITE ){
+    std::map< unsigned, unsigned > appears;
+    std::map< unsigned, Node > appears_expr;
+    unsigned appears_count = 0;
+    for( unsigned r=0; r<3; r++ ){
+      Node child_base = base_assertion[r].getKind()==kind::NOT ? base_assertion[r][0] : base_assertion[r];
+      std::map< Node, unsigned >::iterator itcic = childIndex.find( child_base );
+      if( itcic!=childIndex.end() ){
+        appears[r] = itcic->second;
+        appears_expr[r] = child_base;
+        appears_count++;
+      }
+    }
+    if( appears_count==2 ){
+      success = true;
+      int elimNum = 1;
+      unsigned index1 = 0;
+      unsigned index2 = 1;
+      if( appears.find( 0 )==appears.end() ){
+        elimNum = 3;
+        index1 = 1;
+        index2 = 2;
+      }else if( appears.find( 1 )==appears.end() ){
+        elimNum = 2;
+        index1 = 0;
+        index2 = 2;
+      }
+      std::stringstream os_main;
+      os_main << "(or_elim_1 _ _ ";
+      prop::SatLiteral lit1 = (*clause)[appears[index1]];
+      if( !childPol[appears_expr[index1]] || elimNum==1 || ( elimNum==3 && !base_pol ) ){
+        os_main << "(not_not_intro _ " << ProofManager::getLitName(lit1, d_name) << ") ";
+      }else{
+        os_main << ProofManager::getLitName(lit1, d_name) << " ";
+      }
+      os_main << "(" << ( base_pol ? "" : "not_" ) << "ite_elim_" << elimNum << " _ _ _ ";
+      os_main << os_base.str() << "))";
+      os << "(contra _ ";
+      prop::SatLiteral lit2 = (*clause)[appears[index2]];
+      if( !childPol[appears_expr[index2]] || !base_pol ){
+        os << ProofManager::getLitName(lit2, d_name) << " " << os_main.str();
+      }else{
+        os << os_main.str() << " " << ProofManager::getLitName(lit2, d_name);
+      }
+      os << ")";
+    }
+  }else if( base_assertion.isConst() ){
+    bool pol = base_assertion==NodeManager::currentNM()->mkConst( true );
+    if( pol!=base_pol ){
+      success = true;
+      if( pol ){
+        os << "(contra _ truth " << os_base.str() << ")";
+      }else{
+        os << os_base.str();
+      }
+    }
+  }
+
+  if( !success ){
+    Trace("cnf-pf") << std::endl;
+    Trace("cnf-pf") << ";!!!!!!!!! CnfProof : Can't process " << assertion << ", base = " << base_assertion << ", id = " << id << std::endl;
+    Trace("cnf-pf") << ";!!!!!!!!! Clause is : ";
+    for (unsigned i = 0; i < clause->size(); ++i) {
+      Trace("cnf-pf") << (*clause)[i] << " ";
+    }
+    Trace("cnf-pf") << std::endl;
+    os << "trust-bad";
+  }
+
+  os << ")" << clause_paren.str()
+     << " (\\ " << ProofManager::getInputClauseName(id, d_name) << "\n";
+
+  paren << "))";
+}
+
+void LFSCCnfProof::printClause(const prop::SatClause& clause,
+                               std::ostream& os,
+                               std::ostream& paren) {
+  for (unsigned i = 0; i < clause.size(); ++i) {
+    prop::SatLiteral lit = clause[i];
+    prop::SatVariable var = lit.getSatVariable();
+    if (lit.isNegated()) {
+      os << "(ast _ _ _ " << ProofManager::getAtomName(var, d_name) <<" (\\ " << ProofManager::getLitName(lit, d_name) << " ";
+      paren << "))";
+    } else {
+      os << "(asf _ _ _ " << ProofManager::getAtomName(var, d_name) <<" (\\ " << ProofManager::getLitName(lit, d_name) << " ";
+      paren << "))";
+    }
+  }
+}
+
+// print a proof of the top-level formula e, based on the input assertions
+bool LFSCCnfProof::printProofTopLevel(Node e, std::ostream& out) {
+  if (!isAssertion(e)) {
+    // check if deduced by CNF
+    // dependence on top level fact i.e. a depends on (a and b)
+    NodeToNode::const_iterator itd = d_cnfDeps.find(e);
+    if (itd != d_cnfDeps.end()) {
+      TNode parent = itd->second;
+      //check if parent is an input assertion
+      std::stringstream out_parent;
+      if (printProofTopLevel(parent, out_parent)) {
+        if(parent.getKind()==kind::AND ||
+           (parent.getKind()==kind::NOT && (parent[0].getKind()==kind::IMPLIES ||
+                                            parent[0].getKind()==kind::OR))) {
+          Node parent_base = parent.getKind()==kind::NOT ? parent[0] : parent;
+          Node e_base = e.getKind()==kind::NOT ? e[0] : e;
+          bool e_pol = e.getKind()!=kind::NOT;
+          for( unsigned i=0; i<parent_base.getNumChildren(); i++ ){
+            Node child_base = parent_base[i].getKind()==kind::NOT ? parent_base[i][0] : parent_base[i];
+            bool child_pol = parent_base[i].getKind()!=kind::NOT;
+            if( parent_base.getKind()==kind::IMPLIES && i==0 ){
+              child_pol = !child_pol;
+            }
+            if (e_base==child_base &&
+                (e_pol==child_pol)==(parent_base.getKind()==kind::AND)) {
+              bool elimNn = ((parent_base.getKind()==kind::OR ||
+                              (parent_base.getKind()==kind::IMPLIES && i==1)) && e_pol);
+              if (elimNn) {
+                out << "(not_not_elim _ ";
+              }
+              std::stringstream out_paren;
+              if (i+1 < parent_base.getNumChildren()) {
+                out << "(and_elim_1 _ _ ";
+                if( parent_base.getKind()==kind::OR ||
+                    parent_base.getKind()==kind::IMPLIES  ){
+                  out << "(not_" << ( parent_base.getKind()==kind::OR ? "or" : "impl" )
+                      << "_elim _ _ ";
+                  out_paren << ")";
+                }
+                out_paren << ")";
+              }
+              for( unsigned j=0; j<i; j++ ){
+                out << "(and_elim_2 _ _ ";
+                if( parent_base.getKind()==kind::OR || parent_base.getKind()==kind::IMPLIES ){
+                  out << "(not_" << ( parent_base.getKind()==kind::OR ? "or" : "impl" ) << "_elim _ _ ";
+                  out_paren << ")";
+                }
+                out_paren << ")";
+              }
+              out << out_parent.str();
+              out << out_paren.str();
+              if( elimNn ){
+                out << ")";
+              }
+              return true;
+            }
+          }
+        } else {
+          Trace("cnf-pf-debug") << "; isInputAssertion : parent of " << e
+                                << " is not correct type (" << parent << ")" << std::endl;
+        }
+      } else {
+        Trace("cnf-pf-debug") << "; isInputAssertion : parent of " << e
+                              << " is not input" << std::endl;
+      }
+    } else {
+      Trace("cnf-pf-debug") << "; isInputAssertion : " << e
+                            << " has no parent" << std::endl;
+    }
+    return false;
+  } else {
+    out << ProofManager::getPreprocessedAssertionName(e);
+    return true;
+  }
+}
+
+} /* CVC4 namespace */
diff --git a/src/proof/cnf_proof.h b/src/proof/cnf_proof.h
new file mode 100644
index 0000000..788526b
--- /dev/null
+++ b/src/proof/cnf_proof.h
@@ -0,0 +1,192 @@
+/*********************                                                        */
+/*! \file cnf_proof.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Guy Katz, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A manager for CnfProofs.
+ **
+ ** A manager for CnfProofs.
+ **
+ **
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__CNF_PROOF_H
+#define __CVC4__CNF_PROOF_H
+
+#include <ext/hash_map>
+#include <ext/hash_set>
+#include <iosfwd>
+
+#include "context/cdhashmap.h"
+#include "proof/clause_id.h"
+#include "proof/lemma_proof.h"
+#include "proof/sat_proof.h"
+#include "util/proof.h"
+
+namespace CVC4 {
+namespace prop {
+  class CnfStream;
+}/* CVC4::prop namespace */
+
+class CnfProof;
+
+typedef __gnu_cxx::hash_map<prop::SatVariable, Expr> SatVarToExpr;
+typedef __gnu_cxx::hash_map<Node, Node, NodeHashFunction> NodeToNode;
+typedef __gnu_cxx::hash_set<ClauseId> ClauseIdSet;
+
+typedef context::CDHashMap<ClauseId, Node> ClauseIdToNode;
+typedef context::CDHashMap<Node, ProofRule, NodeHashFunction> NodeToProofRule;
+typedef std::map<std::set<Node>, LemmaProofRecipe> LemmaToRecipe;
+typedef std::pair<Node, Node> NodePair;
+typedef std::set<NodePair> NodePairSet;
+
+class CnfProof {
+protected:
+  CVC4::prop::CnfStream* d_cnfStream;
+
+  /** Map from ClauseId to the assertion that lead to adding this clause **/
+  ClauseIdToNode d_clauseToAssertion;
+
+  /** Map from assertion to reason for adding assertion  **/
+  NodeToProofRule d_assertionToProofRule;
+
+  /** Map from lemma to the recipe for proving it **/
+  LemmaToRecipe d_lemmaToProofRecipe;
+
+  /** Top of stack is assertion currently being converted to CNF **/
+  std::vector<Node> d_currentAssertionStack;
+
+  /** Top of stack is top-level fact currently being converted to CNF **/
+  std::vector<Node> d_currentDefinitionStack;
+
+  /** Map from ClauseId to the top-level fact that lead to adding this clause **/
+  ClauseIdToNode d_clauseToDefinition;
+
+  /** Top-level facts that follow from assertions during convertAndAssert **/
+  NodeSet d_definitions;
+
+  /** Map from top-level fact to facts/assertion that it follows from **/
+  NodeToNode d_cnfDeps;
+
+  ClauseIdSet d_explanations;
+
+  bool isDefinition(Node node);
+
+  Node getDefinitionForClause(ClauseId clause);
+
+  std::string d_name;
+public:
+  CnfProof(CVC4::prop::CnfStream* cnfStream,
+           context::Context* ctx,
+           const std::string& name);
+
+
+  Node getAtom(prop::SatVariable var);
+  prop::SatLiteral getLiteral(TNode node);
+  bool hasLiteral(TNode node);
+  void ensureLiteral(TNode node, bool noPreregistration = false);
+
+  void collectAtoms(const prop::SatClause* clause,
+                    std::set<Node>& atoms);
+  void collectAtomsForClauses(const IdToSatClause& clauses,
+                              std::set<Node>& atoms);
+  void collectAtomsAndRewritesForLemmas(const IdToSatClause& lemmaClauses,
+                                        std::set<Node>& atoms,
+                                        NodePairSet& rewrites);
+  void collectAssertionsForClauses(const IdToSatClause& clauses,
+                                   NodeSet& assertions);
+
+  /** Methods for logging what the CnfStream does **/
+  // map the clause back to the current assertion where it came from
+  // if it is an explanation, it does not have a CNF proof since it is
+  // already in CNF
+  void registerConvertedClause(ClauseId clause, bool explanation=false);
+
+  /** Clause is one of the clauses defining the node expression*/
+  void setClauseDefinition(ClauseId clause, Node node);
+
+  /** Clause is one of the clauses defining top-level assertion node*/
+  void setClauseAssertion(ClauseId clause, Node node);
+
+  void registerAssertion(Node assertion, ProofRule reason);
+  void setCnfDependence(Node from, Node to);
+
+  void pushCurrentAssertion(Node assertion); // the current assertion being converted
+  void popCurrentAssertion();
+  Node getCurrentAssertion();
+
+  void pushCurrentDefinition(Node assertion); // the current Tseitin definition being converted
+  void popCurrentDefinition();
+  Node getCurrentDefinition();
+
+  void setProofRecipe(LemmaProofRecipe* proofRecipe);
+  LemmaProofRecipe getProofRecipe(const std::set<Node> &lemma);
+  bool haveProofRecipe(const std::set<Node> &lemma);
+
+  // accessors for the leaf assertions that are being converted to CNF
+  bool isAssertion(Node node);
+  ProofRule getProofRule(Node assertion);
+  ProofRule getProofRule(ClauseId clause);
+  Node getAssertionForClause(ClauseId clause);
+
+  /** Virtual methods for printing things **/
+  virtual void printAtomMapping(const std::set<Node>& atoms,
+                                std::ostream& os,
+                                std::ostream& paren) = 0;
+  virtual void printAtomMapping(const std::set<Node>& atoms,
+                           std::ostream& os,
+                           std::ostream& paren,
+                           ProofLetMap &letMap) = 0;
+
+  virtual void printClause(const prop::SatClause& clause,
+                           std::ostream& os,
+                           std::ostream& paren) = 0;
+  virtual void printCnfProofForClause(ClauseId id,
+                                      const prop::SatClause* clause,
+                                      std::ostream& os,
+                                      std::ostream& paren) = 0;
+  virtual ~CnfProof();
+};/* class CnfProof */
+
+class LFSCCnfProof : public CnfProof {
+  Node clauseToNode( const prop::SatClause& clause,
+                     std::map<Node, unsigned>& childIndex,
+                     std::map<Node, bool>& childPol );
+  bool printProofTopLevel(Node e, std::ostream& out);
+public:
+  LFSCCnfProof(CVC4::prop::CnfStream* cnfStream,
+               context::Context* ctx,
+               const std::string& name)
+    : CnfProof(cnfStream, ctx, name)
+  {}
+  ~LFSCCnfProof() {}
+
+  void printAtomMapping(const std::set<Node>& atoms,
+                        std::ostream& os,
+                        std::ostream& paren);
+
+  void printAtomMapping(const std::set<Node>& atoms,
+                        std::ostream& os,
+                        std::ostream& paren,
+                        ProofLetMap &letMap);
+
+  void printClause(const prop::SatClause& clause,
+                   std::ostream& os,
+                   std::ostream& paren);
+  void printCnfProofForClause(ClauseId id,
+                              const prop::SatClause* clause,
+                              std::ostream& os,
+                              std::ostream& paren);
+};/* class LFSCCnfProof */
+
+} /* CVC4 namespace */
+
+#endif /* __CVC4__CNF_PROOF_H */
diff --git a/src/proof/lemma_proof.cpp b/src/proof/lemma_proof.cpp
new file mode 100644
index 0000000..fb7df45
--- /dev/null
+++ b/src/proof/lemma_proof.cpp
@@ -0,0 +1,205 @@
+/*********************                                                        */
+/*! \file lemma_proof.h
+** \verbatim
+**
+** \brief A class for recoding the steps required in order to prove a theory lemma.
+**
+** A class for recoding the steps required in order to prove a theory lemma.
+**
+**/
+
+#include "proof/lemma_proof.h"
+#include "theory/rewriter.h"
+
+namespace CVC4 {
+
+LemmaProofRecipe::ProofStep::ProofStep(theory::TheoryId theory, Node literalToProve) :
+  d_theory(theory), d_literalToProve(literalToProve) {
+}
+
+theory::TheoryId LemmaProofRecipe::ProofStep::getTheory() const {
+  return d_theory;
+}
+
+Node LemmaProofRecipe::ProofStep::getLiteral() const {
+  return d_literalToProve;
+}
+
+void LemmaProofRecipe::ProofStep::addAssertion(const Node& assertion) {
+  d_assertions.insert(assertion);
+}
+
+std::set<Node> LemmaProofRecipe::ProofStep::getAssertions() const {
+  return d_assertions;
+}
+
+void LemmaProofRecipe::addStep(ProofStep& proofStep) {
+  d_proofSteps.push_front(proofStep);
+}
+
+std::set<Node> LemmaProofRecipe::getMissingAssertionsForStep(unsigned index) const {
+  Assert(index < d_proofSteps.size());
+
+  std::set<Node> existingAssertions = getBaseAssertions();
+
+  std::list<ProofStep>::const_iterator step = d_proofSteps.begin();
+  while (index != 0) {
+    existingAssertions.insert(step->getLiteral().negate());
+    ++step;
+    --index;
+  }
+
+  std::set<Node> neededAssertions = step->getAssertions();
+
+  std::set<Node> result;
+  std::set_difference(neededAssertions.begin(), neededAssertions.end(),
+                      existingAssertions.begin(), existingAssertions.end(),
+                      std::inserter(result, result.begin()));
+  return result;
+}
+
+void LemmaProofRecipe::dump(const char *tag) const {
+
+  if (d_proofSteps.size() == 1) {
+    Debug(tag) << std::endl << "[Simple lemma]" << std::endl << std::endl;
+  }
+
+  if (d_originalLemma != Node()) {
+    Debug(tag) << std::endl << "Original lemma: " << d_originalLemma << std::endl << std::endl;
+  }
+
+  unsigned count = 1;
+  Debug(tag) << "Base assertions:" << std::endl;
+  for (std::set<Node>::iterator baseIt = d_baseAssertions.begin();
+       baseIt != d_baseAssertions.end();
+       ++baseIt) {
+    Debug(tag) << "\t#" << count << ": " << "\t" << *baseIt << std::endl;
+    ++count;
+  }
+
+  Debug(tag) << std::endl << std::endl << "Proof steps:" << std::endl;
+
+  count = 1;
+  for (std::list<ProofStep>::const_iterator step = d_proofSteps.begin(); step != d_proofSteps.end(); ++step) {
+    Debug(tag) << "\tStep #" << count << ": " << "\t[" << step->getTheory() << "] ";
+    if (step->getLiteral() == Node()) {
+      Debug(tag) << "Contradiction";
+    } else {
+      Debug(tag) << step->getLiteral();
+    }
+
+    Debug(tag) << std::endl;
+
+    std::set<Node> missingAssertions = getMissingAssertionsForStep(count - 1);
+    for (std::set<Node>::const_iterator it = missingAssertions.begin(); it != missingAssertions.end(); ++it) {
+      Debug(tag) << "\t\t\tMissing assertion for step: " << *it << std::endl;
+    }
+
+    Debug(tag) << std::endl;
+    ++count;
+  }
+
+  if (!d_assertionToExplanation.empty()) {
+    Debug(tag) << std::endl << "Rewrites used:" << std::endl;
+    count = 1;
+    for (std::map<Node, Node>::const_iterator rewrite = d_assertionToExplanation.begin();
+         rewrite != d_assertionToExplanation.end();
+         ++rewrite) {
+      Debug(tag) << "\tRewrite #" << count << ":" << std::endl
+                 << "\t\t" << rewrite->first
+                 << std::endl << "\t\trewritten into" << std::endl
+                 << "\t\t" << rewrite->second
+                 << std::endl << std::endl;
+      ++count;
+    }
+  }
+}
+
+void LemmaProofRecipe::addBaseAssertion(Node baseAssertion) {
+  d_baseAssertions.insert(baseAssertion);
+}
+
+std::set<Node> LemmaProofRecipe::getBaseAssertions() const {
+  return d_baseAssertions;
+}
+
+theory::TheoryId LemmaProofRecipe::getTheory() const {
+  Assert(d_proofSteps.size() > 0);
+  return d_proofSteps.back().getTheory();
+}
+
+void LemmaProofRecipe::addRewriteRule(Node assertion, Node explanation) {
+  if (d_assertionToExplanation.find(assertion) != d_assertionToExplanation.end()) {
+    Assert(d_assertionToExplanation[assertion] == explanation);
+  }
+
+  d_assertionToExplanation[assertion] = explanation;
+}
+
+bool LemmaProofRecipe::wasRewritten(Node assertion) const {
+  return d_assertionToExplanation.find(assertion) != d_assertionToExplanation.end();
+}
+
+Node LemmaProofRecipe::getExplanation(Node assertion) const {
+  Assert(d_assertionToExplanation.find(assertion) != d_assertionToExplanation.end());
+  return d_assertionToExplanation.find(assertion)->second;
+}
+
+LemmaProofRecipe::RewriteIterator LemmaProofRecipe::rewriteBegin() const {
+  return d_assertionToExplanation.begin();
+}
+
+LemmaProofRecipe::RewriteIterator LemmaProofRecipe::rewriteEnd() const {
+  return d_assertionToExplanation.end();
+}
+
+bool LemmaProofRecipe::operator<(const LemmaProofRecipe& other) const {
+    return d_baseAssertions < other.d_baseAssertions;
+  }
+
+bool LemmaProofRecipe::simpleLemma() const {
+  return d_proofSteps.size() == 1;
+}
+
+bool LemmaProofRecipe::compositeLemma() const {
+  return !simpleLemma();
+}
+
+const LemmaProofRecipe::ProofStep* LemmaProofRecipe::getStep(unsigned index) const {
+  Assert(index < d_proofSteps.size());
+
+  std::list<ProofStep>::const_iterator it = d_proofSteps.begin();
+  while (index != 0) {
+    ++it;
+    --index;
+  }
+
+  return &(*it);
+}
+
+LemmaProofRecipe::ProofStep* LemmaProofRecipe::getStep(unsigned index) {
+  Assert(index < d_proofSteps.size());
+
+  std::list<ProofStep>::iterator it = d_proofSteps.begin();
+  while (index != 0) {
+    ++it;
+    --index;
+  }
+
+  return &(*it);
+}
+
+unsigned LemmaProofRecipe::getNumSteps() const {
+  return d_proofSteps.size();
+}
+
+void LemmaProofRecipe::setOriginalLemma(Node lemma) {
+  d_originalLemma = lemma;
+}
+
+Node LemmaProofRecipe::getOriginalLemma() const {
+  return d_originalLemma;
+}
+
+
+} /* namespace CVC4 */
diff --git a/src/proof/lemma_proof.h b/src/proof/lemma_proof.h
new file mode 100644
index 0000000..9c838ce
--- /dev/null
+++ b/src/proof/lemma_proof.h
@@ -0,0 +1,86 @@
+/*********************                                                        */
+/*! \file lemma_proof.h
+** \verbatim
+**
+** \brief A class for recoding the steps required in order to prove a theory lemma.
+**
+** A class for recoding the steps required in order to prove a theory lemma.
+**
+**/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__LEMMA_PROOF_H
+#define __CVC4__LEMMA_PROOF_H
+
+#include "expr/expr.h"
+#include "proof/clause_id.h"
+#include "prop/sat_solver_types.h"
+#include "util/proof.h"
+#include "expr/node.h"
+
+namespace CVC4 {
+
+class LemmaProofRecipe {
+public:
+  class ProofStep {
+  public:
+    ProofStep(theory::TheoryId theory, Node literalToProve);
+    theory::TheoryId getTheory() const;
+    Node getLiteral() const;
+    void addAssertion(const Node& assertion);
+    std::set<Node> getAssertions() const;
+
+  private:
+    theory::TheoryId d_theory;
+    Node d_literalToProve;
+    std::set<Node> d_assertions;
+  };
+
+  //* The lemma assertions and owner */
+  void addBaseAssertion(Node baseAssertion);
+  std::set<Node> getBaseAssertions() const;
+  theory::TheoryId getTheory() const;
+
+  //* Rewrite rules */
+  typedef std::map<Node, Node>::const_iterator RewriteIterator;
+  RewriteIterator rewriteBegin() const;
+  RewriteIterator rewriteEnd() const;
+
+  void addRewriteRule(Node assertion, Node explanation);
+  bool wasRewritten(Node assertion) const;
+  Node getExplanation(Node assertion) const;
+
+  //* Original lemma */
+  void setOriginalLemma(Node lemma);
+  Node getOriginalLemma() const;
+
+  //* Proof Steps */
+  void addStep(ProofStep& proofStep);
+  const ProofStep* getStep(unsigned index) const;
+  ProofStep* getStep(unsigned index);
+  unsigned getNumSteps() const;
+  std::set<Node> getMissingAssertionsForStep(unsigned index) const;
+  bool simpleLemma() const;
+  bool compositeLemma() const;
+
+  void dump(const char *tag) const;
+  bool operator<(const LemmaProofRecipe& other) const;
+
+private:
+  //* The list of assertions for this lemma */
+  std::set<Node> d_baseAssertions;
+
+  //* The various steps needed to derive the empty clause */
+  std::list<ProofStep> d_proofSteps;
+
+  //* A map from assertions to their rewritten explanations (toAssert --> toExplain) */
+  std::map<Node, Node> d_assertionToExplanation;
+
+  //* The original lemma, as asserted by the owner theory solver */
+  Node d_originalLemma;
+};
+
+} /* CVC4 namespace */
+
+#endif /* __CVC4__LEMMA_PROOF_H */
diff --git a/src/proof/proof.h b/src/proof/proof.h
new file mode 100644
index 0000000..af72ccf
--- /dev/null
+++ b/src/proof/proof.h
@@ -0,0 +1,70 @@
+/*********************                                                        */
+/*! \file proof.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Proof macros
+ **
+ ** Proof macros
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__PROOF__PROOF_H
+#define __CVC4__PROOF__PROOF_H
+
+#include "options/smt_options.h"
+
+
+/* Do NOT use #ifdef CVC4_PROOF to check if proofs are enabled.
+ * We cannot assume users will use -DCVC4_PROOFS if they have a proofs build.
+ * The preferred way of checking that proofs are enabled is to use:
+ * #if IS_PROOFS_BUILD
+ * ...
+ * #endif
+ *
+ * The macro IS_PROOFS_BUILD is defined in base/configuration_private.h
+ *
+ * This has the effect of forcing that location to have included this header
+ * *before* performing this test. This includes C preprocessing expansion.
+ * This forces the inclusion of "cvc4_private.h". This is intentional!
+ *
+ * See bug 688 for more details:
+ * http://cvc4.cs.nyu.edu/bugs/show_bug.cgi?id=688
+ *
+ * If you want to check CVC4_PROOF, you should have a very good reason
+ * and should list the exceptions here:
+ * - Makefile.am
+ * - proof/proofs.h
+ * - base/configuration_private.h
+ */
+
+#ifdef CVC4_PROOF
+#  define PROOF(x) if(CVC4::options::proof() || CVC4::options::unsatCores()) { x; }
+#  define NULLPROOF(x) (CVC4::options::proof() || CVC4::options::unsatCores()) ? x : NULL
+#  define PROOF_ON() (CVC4::options::proof() || CVC4::options::unsatCores())
+#  define THEORY_PROOF(x) if(CVC4::options::proof()) { x; }
+#  define THEORY_NULLPROOF(x) CVC4::options::proof() ? x : NULL
+#  define THEORY_PROOF_ON() CVC4::options::proof()
+#else /* CVC4_PROOF */
+#  define PROOF(x)
+#  define NULLPROOF(x) NULL
+#  define PROOF_ON() false
+#  define THEORY_PROOF(x) 
+#  define THEORY_NULLPROOF(x) NULL
+#  define THEORY_PROOF_ON() false
+#endif /* CVC4_PROOF */
+
+#ifdef CVC4_PROOF_STATS /* CVC4_PROOF_STATS */
+# define PSTATS(x) { x; }
+#else
+# define PSTATS(x)
+#endif /* CVC4_PROOF_STATS */
+
+#endif /* __CVC4__PROOF__PROOF_H */
diff --git a/src/proof/proof_manager.cpp b/src/proof/proof_manager.cpp
new file mode 100644
index 0000000..ddd2029
--- /dev/null
+++ b/src/proof/proof_manager.cpp
@@ -0,0 +1,1005 @@
+/*********************                                                        */
+/*! \file proof_manager.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Guy Katz, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+
+ ** \todo document this file
+
+**/
+
+#include "proof/proof_manager.h"
+
+#include "base/cvc4_assert.h"
+#include "context/context.h"
+#include "options/bv_options.h"
+#include "options/proof_options.h"
+#include "proof/bitvector_proof.h"
+#include "proof/clause_id.h"
+#include "proof/cnf_proof.h"
+#include "proof/proof_utils.h"
+#include "proof/sat_proof_implementation.h"
+#include "proof/theory_proof.h"
+#include "smt/smt_engine.h"
+#include "smt/smt_engine_scope.h"
+#include "smt_util/node_visitor.h"
+#include "theory/arrays/theory_arrays.h"
+#include "theory/output_channel.h"
+#include "theory/term_registration_visitor.h"
+#include "theory/uf/equality_engine.h"
+#include "theory/uf/theory_uf.h"
+#include "theory/valuation.h"
+#include "util/hash.h"
+#include "util/proof.h"
+
+namespace CVC4 {
+
+std::string nodeSetToString(const std::set<Node>& nodes) {
+  std::ostringstream os;
+  std::set<Node>::const_iterator it;
+  for (it = nodes.begin(); it != nodes.end(); ++it) {
+    os << *it << " ";
+  }
+  return os.str();
+}
+
+std::string append(const std::string& str, uint64_t num) {
+  std::ostringstream os;
+  os << str << num;
+  return os.str();
+}
+
+ProofManager::ProofManager(ProofFormat format):
+  d_satProof(NULL),
+  d_cnfProof(NULL),
+  d_theoryProof(NULL),
+  d_inputFormulas(),
+  d_inputCoreFormulas(),
+  d_outputCoreFormulas(),
+  d_nextId(0),
+  d_fullProof(NULL),
+  d_format(format),
+  d_deps()
+{
+}
+
+ProofManager::~ProofManager() {
+  if (d_satProof) delete d_satProof;
+  if (d_cnfProof) delete d_cnfProof;
+  if (d_theoryProof) delete d_theoryProof;
+  if (d_fullProof) delete d_fullProof;
+}
+
+ProofManager* ProofManager::currentPM() {
+  return smt::currentProofManager();
+}
+
+Proof* ProofManager::getProof(SmtEngine* smt) {
+  if (currentPM()->d_fullProof != NULL) {
+    return currentPM()->d_fullProof;
+  }
+  Assert (currentPM()->d_format == LFSC);
+
+  currentPM()->d_fullProof = new LFSCProof(smt,
+                                           (LFSCCoreSatProof*)getSatProof(),
+                                           (LFSCCnfProof*)getCnfProof(),
+                                           (LFSCTheoryProofEngine*)getTheoryProofEngine());
+  return currentPM()->d_fullProof;
+}
+
+CoreSatProof* ProofManager::getSatProof() {
+  Assert (currentPM()->d_satProof);
+  return currentPM()->d_satProof;
+}
+
+CnfProof* ProofManager::getCnfProof() {
+  Assert (currentPM()->d_cnfProof);
+  return currentPM()->d_cnfProof;
+}
+
+TheoryProofEngine* ProofManager::getTheoryProofEngine() {
+  Assert (currentPM()->d_theoryProof != NULL);
+  return currentPM()->d_theoryProof;
+}
+
+UFProof* ProofManager::getUfProof() {
+  Assert (options::proof());
+  TheoryProof* pf = getTheoryProofEngine()->getTheoryProof(theory::THEORY_UF);
+  return (UFProof*)pf;
+}
+
+BitVectorProof* ProofManager::getBitVectorProof() {
+  Assert (options::proof());
+  TheoryProof* pf = getTheoryProofEngine()->getTheoryProof(theory::THEORY_BV);
+  return (BitVectorProof*)pf;
+}
+
+ArrayProof* ProofManager::getArrayProof() {
+  Assert (options::proof());
+  TheoryProof* pf = getTheoryProofEngine()->getTheoryProof(theory::THEORY_ARRAY);
+  return (ArrayProof*)pf;
+}
+
+ArithProof* ProofManager::getArithProof() {
+  Assert (options::proof());
+  TheoryProof* pf = getTheoryProofEngine()->getTheoryProof(theory::THEORY_ARITH);
+  return (ArithProof*)pf;
+}
+
+SkolemizationManager* ProofManager::getSkolemizationManager() {
+  Assert (options::proof());
+  return &(currentPM()->d_skolemizationManager);
+}
+
+void ProofManager::initSatProof(Minisat::Solver* solver) {
+  Assert (currentPM()->d_satProof == NULL);
+  Assert(currentPM()->d_format == LFSC);
+  currentPM()->d_satProof = new LFSCCoreSatProof(solver, "");
+}
+
+void ProofManager::initCnfProof(prop::CnfStream* cnfStream,
+                                context::Context* ctx) {
+  ProofManager* pm = currentPM();
+  Assert (pm->d_cnfProof == NULL);
+  Assert (pm->d_format == LFSC);
+  CnfProof* cnf = new LFSCCnfProof(cnfStream, ctx, "");
+  pm->d_cnfProof = cnf;
+  Assert(pm-> d_satProof != NULL);
+  pm->d_satProof->setCnfProof(cnf);
+
+  // true and false have to be setup in a special way
+  Node true_node = NodeManager::currentNM()->mkConst<bool>(true);
+  Node false_node = NodeManager::currentNM()->mkConst<bool>(false).notNode();
+
+  pm->d_cnfProof->pushCurrentAssertion(true_node);
+  pm->d_cnfProof->pushCurrentDefinition(true_node);
+  pm->d_cnfProof->registerConvertedClause(pm->d_satProof->getTrueUnit());
+  pm->d_cnfProof->popCurrentAssertion();
+  pm->d_cnfProof->popCurrentDefinition();
+
+  pm->d_cnfProof->pushCurrentAssertion(false_node);
+  pm->d_cnfProof->pushCurrentDefinition(false_node);
+  pm->d_cnfProof->registerConvertedClause(pm->d_satProof->getFalseUnit());
+  pm->d_cnfProof->popCurrentAssertion();
+  pm->d_cnfProof->popCurrentDefinition();
+
+}
+
+void ProofManager::initTheoryProofEngine() {
+  Assert (currentPM()->d_theoryProof == NULL);
+  Assert (currentPM()->d_format == LFSC);
+  currentPM()->d_theoryProof = new LFSCTheoryProofEngine();
+}
+
+std::string ProofManager::getInputClauseName(ClauseId id,
+                                             const std::string& prefix) {
+  return append(prefix+".pb", id);
+}
+
+std::string ProofManager::getLemmaClauseName(ClauseId id,
+                                             const std::string& prefix) {
+  return append(prefix+".lemc", id);
+}
+
+std::string ProofManager::getLemmaName(ClauseId id, const std::string& prefix) {
+  return append(prefix+"lem", id);
+}
+
+std::string ProofManager::getLearntClauseName(ClauseId id,
+                                              const std::string& prefix) {
+  return append(prefix+".cl", id);
+}
+std::string ProofManager::getVarName(prop::SatVariable var,
+                                     const std::string& prefix) {
+  return append(prefix+".v", var);
+}
+std::string ProofManager::getAtomName(prop::SatVariable var,
+                                      const std::string& prefix) {
+  return append(prefix+".a", var);
+}
+std::string ProofManager::getLitName(prop::SatLiteral lit,
+                                     const std::string& prefix) {
+  return append(prefix+".l", lit.toInt());
+}
+
+std::string ProofManager::getPreprocessedAssertionName(Node node,
+                                                       const std::string& prefix) {
+  if (currentPM()->d_assertionFilters.find(node) != currentPM()->d_assertionFilters.end()) {
+    return currentPM()->d_assertionFilters[node];
+  }
+
+  node = node.getKind() == kind::BITVECTOR_EAGER_ATOM ? node[0] : node;
+  return append(prefix+".PA", node.getId());
+}
+std::string ProofManager::getAssertionName(Node node,
+                                           const std::string& prefix) {
+  return append(prefix+".A", node.getId());
+}
+std::string ProofManager::getInputFormulaName(const Expr& expr) {
+  return currentPM()->d_inputFormulaToName[expr];
+}
+
+std::string ProofManager::getAtomName(TNode atom,
+                                      const std::string& prefix) {
+  prop::SatLiteral lit = currentPM()->d_cnfProof->getLiteral(atom);
+  Assert(!lit.isNegated());
+  return getAtomName(lit.getSatVariable(), prefix);
+}
+
+std::string ProofManager::getLitName(TNode lit,
+                                     const std::string& prefix) {
+  std::string litName = getLitName(currentPM()->d_cnfProof->getLiteral(lit), prefix);
+  if (currentPM()->d_rewriteFilters.find(litName) != currentPM()->d_rewriteFilters.end()) {
+    return currentPM()->d_rewriteFilters[litName];
+  }
+
+  return litName;
+}
+
+std::string ProofManager::sanitize(TNode node) {
+  Assert (node.isVar() || node.isConst());
+
+  std::string name = node.toString();
+  if (node.isVar()) {
+    std::replace(name.begin(), name.end(), ' ', '_');
+  } else if (node.isConst()) {
+    name.erase(std::remove(name.begin(), name.end(), '('), name.end());
+    name.erase(std::remove(name.begin(), name.end(), ')'), name.end());
+    name.erase(std::remove(name.begin(), name.end(), ' '), name.end());
+    name = "const" + name;
+  }
+
+  return name;
+}
+
+void ProofManager::traceDeps(TNode n, ExprSet* coreAssertions) {
+  Debug("cores") << "trace deps " << n << std::endl;
+  if ((n.isConst() && n == NodeManager::currentNM()->mkConst<bool>(true)) ||
+      (n.getKind() == kind::NOT && n[0] == NodeManager::currentNM()->mkConst<bool>(false))) {
+    return;
+  }
+  if(d_inputCoreFormulas.find(n.toExpr()) != d_inputCoreFormulas.end()) {
+    // originating formula was in core set
+    Debug("cores") << " -- IN INPUT CORE LIST!" << std::endl;
+    coreAssertions->insert(n.toExpr());
+  } else {
+    Debug("cores") << " -- NOT IN INPUT CORE LIST!" << std::endl;
+    if(d_deps.find(n) == d_deps.end()) {
+      if (options::allowEmptyDependencies()) {
+        Debug("cores") << " -- Could not track cause assertion. Failing silently." << std::endl;
+        return;
+      }
+      InternalError("Cannot trace dependence information back to input assertion:\n`%s'", n.toString().c_str());
+    }
+    Assert(d_deps.find(n) != d_deps.end());
+    std::vector<Node> deps = (*d_deps.find(n)).second;
+    for(std::vector<Node>::const_iterator i = deps.begin(); i != deps.end(); ++i) {
+      Debug("cores") << " + tracing deps: " << n << " -deps-on- " << *i << std::endl;
+      if( !(*i).isNull() ){
+        traceDeps(*i, coreAssertions);
+      }
+    }
+  }
+}
+
+void ProofManager::traceUnsatCore() {
+  Assert (options::unsatCores());
+  constructSatProof();
+  IdToSatClause used_lemmas;
+  IdToSatClause used_inputs;
+  d_satProof->collectClausesUsed(used_inputs,
+                                 used_lemmas);
+  IdToSatClause::const_iterator it = used_inputs.begin();
+  for(; it != used_inputs.end(); ++it) {
+    Node node = d_cnfProof->getAssertionForClause(it->first);
+    ProofRule rule = d_cnfProof->getProofRule(node);
+
+    Debug("cores") << "core input assertion " << node << std::endl;
+    Debug("cores") << "with proof rule " << rule << std::endl;
+    if (rule == RULE_TSEITIN ||
+        rule == RULE_GIVEN) {
+      // trace dependences back to actual assertions
+      // (this adds them to the unsat core)
+      traceDeps(node, &d_outputCoreFormulas);
+    }
+  }
+}
+
+bool ProofManager::unsatCoreAvailable() const {
+  return d_satProof->derivedEmptyClause();
+}
+
+void ProofManager::constructSatProof() {
+  if (!d_satProof->proofConstructed()) {
+    d_satProof->constructProof();
+  }
+}
+
+void ProofManager::getLemmasInUnsatCore(theory::TheoryId theory, std::vector<Node> &lemmas) {
+  Assert(PROOF_ON(), "Cannot compute unsat core when proofs are off");
+  Assert(unsatCoreAvailable(), "Cannot get unsat core at this time. Mabye the input is SAT?" );
+
+  constructSatProof();
+
+  IdToSatClause used_lemmas;
+  IdToSatClause used_inputs;
+  d_satProof->collectClausesUsed(used_inputs, used_lemmas);
+
+  IdToSatClause::const_iterator it;
+  std::set<Node> seen;
+
+  Debug("pf::lemmasUnsatCore") << "Dumping all lemmas in unsat core" << std::endl;
+  for (it = used_lemmas.begin(); it != used_lemmas.end(); ++it) {
+    std::set<Node> lemma = satClauseToNodeSet(it->second);
+    Debug("pf::lemmasUnsatCore") << nodeSetToString(lemma);
+
+    // TODO: we should be able to drop the "haveProofRecipe" check.
+    // however, there are some rewrite issues with the arith solver, resulting
+    // in non-registered recipes. For now we assume no one is requesting arith lemmas.
+    LemmaProofRecipe recipe;
+    if (!getCnfProof()->haveProofRecipe(lemma)) {
+      Debug("pf::lemmasUnsatCore") << "\t[no recipe]" << std::endl;
+      continue;
+    }
+
+    recipe = getCnfProof()->getProofRecipe(lemma);
+    Debug("pf::lemmasUnsatCore") << "\t[owner = " << recipe.getTheory()
+                                 << ", original = " << recipe.getOriginalLemma() << "]" << std::endl;
+    if (recipe.simpleLemma() && recipe.getTheory() == theory && seen.find(recipe.getOriginalLemma()) == seen.end()) {
+      lemmas.push_back(recipe.getOriginalLemma());
+      seen.insert(recipe.getOriginalLemma());
+    }
+  }
+}
+
+std::set<Node> ProofManager::satClauseToNodeSet(prop::SatClause* clause) {
+  std::set<Node> result;
+  for (unsigned i = 0; i < clause->size(); ++i) {
+    prop::SatLiteral lit = (*clause)[i];
+    Node node = getCnfProof()->getAtom(lit.getSatVariable());
+    Expr atom = node.toExpr();
+    if (atom != utils::mkTrue())
+      result.insert(lit.isNegated() ? node.notNode() : node);
+  }
+
+  return result;
+}
+
+Node ProofManager::getWeakestImplicantInUnsatCore(Node lemma) {
+  Assert(PROOF_ON(), "Cannot compute unsat core when proofs are off");
+  Assert(unsatCoreAvailable(), "Cannot get unsat core at this time. Mabye the input is SAT?" );
+
+  // If we're doing aggressive minimization, work on all lemmas, not just conjunctions.
+  if (!options::aggressiveCoreMin() && (lemma.getKind() != kind::AND))
+    return lemma;
+
+  constructSatProof();
+
+  NodeBuilder<> builder(kind::AND);
+
+  IdToSatClause used_lemmas;
+  IdToSatClause used_inputs;
+  d_satProof->collectClausesUsed(used_inputs, used_lemmas);
+
+  IdToSatClause::const_iterator it;
+  std::set<Node>::iterator lemmaIt;
+
+  if (!options::aggressiveCoreMin()) {
+    for (it = used_lemmas.begin(); it != used_lemmas.end(); ++it) {
+      std::set<Node> currentLemma = satClauseToNodeSet(it->second);
+
+      // TODO: we should be able to drop the "haveProofRecipe" check.
+      // however, there are some rewrite issues with the arith solver, resulting
+      // in non-registered recipes. For now we assume no one is requesting arith lemmas.
+      LemmaProofRecipe recipe;
+      if (!getCnfProof()->haveProofRecipe(currentLemma))
+        continue;
+
+      recipe = getCnfProof()->getProofRecipe(currentLemma);
+      if (recipe.getOriginalLemma() == lemma) {
+        for (lemmaIt = currentLemma.begin(); lemmaIt != currentLemma.end(); ++lemmaIt) {
+          builder << *lemmaIt;
+
+          // Check that each conjunct appears in the original lemma.
+          bool found = false;
+          for (unsigned i = 0; i < lemma.getNumChildren(); ++i) {
+            if (lemma[i] == *lemmaIt)
+              found = true;
+          }
+
+          if (!found)
+            return lemma;
+        }
+      }
+    }
+  } else {
+    // Aggressive mode
+    for (it = used_lemmas.begin(); it != used_lemmas.end(); ++it) {
+      std::set<Node> currentLemma = satClauseToNodeSet(it->second);
+
+      // TODO: we should be able to drop the "haveProofRecipe" check.
+      // however, there are some rewrite issues with the arith solver, resulting
+      // in non-registered recipes. For now we assume no one is requesting arith lemmas.
+      LemmaProofRecipe recipe;
+      if (!getCnfProof()->haveProofRecipe(currentLemma))
+        continue;
+
+      recipe = getCnfProof()->getProofRecipe(currentLemma);
+      if (recipe.getOriginalLemma() == lemma) {
+        NodeBuilder<> disjunction(kind::OR);
+        for (lemmaIt = currentLemma.begin(); lemmaIt != currentLemma.end(); ++lemmaIt) {
+          disjunction << *lemmaIt;
+        }
+
+        Node conjunct = (disjunction.getNumChildren() == 1) ? disjunction[0] : disjunction;
+        builder << conjunct;
+      }
+    }
+  }
+
+  AlwaysAssert(builder.getNumChildren() != 0);
+
+  if (builder.getNumChildren() == 1)
+    return builder[0];
+
+  return builder;
+}
+
+void ProofManager::addAssertion(Expr formula) {
+  Debug("proof:pm") << "assert: " << formula << std::endl;
+  d_inputFormulas.insert(formula);
+  std::ostringstream name;
+  name << "A" << d_inputFormulaToName.size();
+  d_inputFormulaToName[formula] = name.str();
+}
+
+void ProofManager::addCoreAssertion(Expr formula) {
+  Debug("cores") << "assert: " << formula << std::endl;
+  d_deps[Node::fromExpr(formula)]; // empty vector of deps
+  d_inputCoreFormulas.insert(formula);
+}
+
+void ProofManager::addDependence(TNode n, TNode dep) {
+  if(dep != n) {
+    Debug("cores") << "dep: " << n << " : " << dep << std::endl;
+    if( !dep.isNull() && d_deps.find(dep) == d_deps.end()) {
+      Debug("cores") << "WHERE DID " << dep << " come from ??" << std::endl;
+    }
+    //Assert(d_deps.find(dep) != d_deps.end());
+    d_deps[n].push_back(dep);
+  }
+}
+
+void ProofManager::addUnsatCore(Expr formula) {
+  Assert (d_inputCoreFormulas.find(formula) != d_inputCoreFormulas.end());
+  d_outputCoreFormulas.insert(formula);
+}
+
+void ProofManager::addAssertionFilter(const Node& node, const std::string& rewritten) {
+  d_assertionFilters[node] = rewritten;
+}
+
+void ProofManager::setLogic(const LogicInfo& logic) {
+  d_logic = logic;
+}
+
+
+
+LFSCProof::LFSCProof(SmtEngine* smtEngine,
+                     LFSCCoreSatProof* sat,
+                     LFSCCnfProof* cnf,
+                     LFSCTheoryProofEngine* theory)
+  : d_satProof(sat)
+  , d_cnfProof(cnf)
+  , d_theoryProof(theory)
+  , d_smtEngine(smtEngine)
+{}
+
+void LFSCProof::toStream(std::ostream& out, const ProofLetMap& map) {
+  Unreachable();
+}
+
+void LFSCProof::toStream(std::ostream& out) {
+
+  Assert(options::bitblastMode() != theory::bv::BITBLAST_MODE_EAGER);
+
+  Assert(!d_satProof->proofConstructed());
+  d_satProof->constructProof();
+
+  // collecting leaf clauses in resolution proof
+  IdToSatClause used_lemmas;
+  IdToSatClause used_inputs;
+  d_satProof->collectClausesUsed(used_inputs,
+                                 used_lemmas);
+
+  IdToSatClause::iterator it2;
+  Debug("pf::pm") << std::endl << "Used inputs: " << std::endl;
+  for (it2 = used_inputs.begin(); it2 != used_inputs.end(); ++it2) {
+    Debug("pf::pm") << "\t input = " << *(it2->second) << std::endl;
+  }
+  Debug("pf::pm") << std::endl;
+
+  // Debug("pf::pm") << std::endl << "Used lemmas: " << std::endl;
+  // for (it2 = used_lemmas.begin(); it2 != used_lemmas.end(); ++it2) {
+  //   Debug("pf::pm") << "\t lemma = " << *(it2->second) << std::endl;
+  // }
+  // Debug("pf::pm") << std::endl;
+  Debug("pf::pm") << std::endl << "Used lemmas: " << std::endl;
+  for (it2 = used_lemmas.begin(); it2 != used_lemmas.end(); ++it2) {
+
+    std::vector<Expr> clause_expr;
+    for(unsigned i = 0; i < it2->second->size(); ++i) {
+      prop::SatLiteral lit = (*(it2->second))[i];
+      Expr atom = d_cnfProof->getAtom(lit.getSatVariable()).toExpr();
+      if (atom.isConst()) {
+        Assert (atom == utils::mkTrue());
+        continue;
+      }
+      Expr expr_lit = lit.isNegated() ? atom.notExpr(): atom;
+      clause_expr.push_back(expr_lit);
+    }
+
+    Debug("pf::pm") << "\t lemma " << it2->first << " = " << *(it2->second) << std::endl;
+    Debug("pf::pm") << "\t";
+    for (unsigned i = 0; i < clause_expr.size(); ++i) {
+      Debug("pf::pm") << clause_expr[i] << " ";
+    }
+    Debug("pf::pm") << std::endl;
+  }
+  Debug("pf::pm") << std::endl;
+
+  // collecting assertions that lead to the clauses being asserted
+  NodeSet used_assertions;
+  d_cnfProof->collectAssertionsForClauses(used_inputs, used_assertions);
+
+  NodeSet::iterator it3;
+  Debug("pf::pm") << std::endl << "Used assertions: " << std::endl;
+  for (it3 = used_assertions.begin(); it3 != used_assertions.end(); ++it3)
+    Debug("pf::pm") << "\t assertion = " << *it3 << std::endl;
+
+  std::set<Node> atoms;
+
+  NodePairSet rewrites;
+  // collects the atoms in the clauses
+  d_cnfProof->collectAtomsAndRewritesForLemmas(used_lemmas, atoms, rewrites);
+
+  if (!rewrites.empty()) {
+    Debug("pf::pm") << std::endl << "Rewrites used in lemmas: " << std::endl;
+    NodePairSet::const_iterator rewriteIt;
+    for (rewriteIt = rewrites.begin(); rewriteIt != rewrites.end(); ++rewriteIt) {
+      Debug("pf::pm") << "\t" << rewriteIt->first << " --> " << rewriteIt->second << std::endl;
+    }
+    Debug("pf::pm") << std::endl << "Rewrite printing done" << std::endl;
+  } else {
+    Debug("pf::pm") << "No rewrites in lemmas found" << std::endl;
+  }
+
+  // The derived/unrewritten atoms may not have CNF literals required later on.
+  // If they don't, add them.
+  std::set<Node>::const_iterator it;
+  for (it = atoms.begin(); it != atoms.end(); ++it) {
+    Debug("pf::pm") << "Ensure literal for atom: " << *it << std::endl;
+    if (!d_cnfProof->hasLiteral(*it)) {
+      // For arithmetic: these literals are not normalized, causing an error in Arith.
+      if (theory::Theory::theoryOf(*it) == theory::THEORY_ARITH) {
+        d_cnfProof->ensureLiteral(*it, true); // This disables preregistration with the theory solver.
+      } else {
+        d_cnfProof->ensureLiteral(*it); // Normal method, with theory solver preregisteration.
+      }
+    }
+  }
+
+  d_cnfProof->collectAtomsForClauses(used_inputs, atoms);
+  d_cnfProof->collectAtomsForClauses(used_lemmas, atoms);
+
+  // collects the atoms in the assertions
+  for (NodeSet::const_iterator it = used_assertions.begin();
+       it != used_assertions.end(); ++it) {
+    utils::collectAtoms(*it, atoms);
+    // utils::collectAtoms(*it, newAtoms);
+  }
+
+  std::set<Node>::iterator atomIt;
+  Debug("pf::pm") << std::endl << "Dumping atoms from lemmas, inputs and assertions: "
+                  << std::endl << std::endl;
+  for (atomIt = atoms.begin(); atomIt != atoms.end(); ++atomIt) {
+    Debug("pf::pm") << "\tAtom: " << *atomIt << std::endl;
+  }
+  smt::SmtScope scope(d_smtEngine);
+  std::ostringstream paren;
+  out << "(check\n";
+  paren << ")";
+  out << " ;; Declarations\n";
+
+  // declare the theory atoms
+  Debug("pf::pm") << "LFSCProof::toStream: registering terms:" << std::endl;
+  for(it = atoms.begin(); it != atoms.end(); ++it) {
+    Debug("pf::pm") << "\tTerm: " << (*it).toExpr() << std::endl;
+    d_theoryProof->registerTerm((*it).toExpr());
+  }
+
+  Debug("pf::pm") << std::endl << "Term registration done!" << std::endl << std::endl;
+
+  Debug("pf::pm") << std::endl << "LFSCProof::toStream: starting to print assertions" << std::endl;
+
+  // print out all the original assertions
+  d_theoryProof->registerTermsFromAssertions();
+  d_theoryProof->printSortDeclarations(out, paren);
+  d_theoryProof->printTermDeclarations(out, paren);
+  d_theoryProof->printAssertions(out, paren);
+
+  Debug("pf::pm") << std::endl << "LFSCProof::toStream: print assertions DONE" << std::endl;
+
+  out << "(: (holds cln)\n\n";
+  paren << ")";
+
+  // Have the theory proofs print deferred declarations, e.g. for skolem variables.
+  out << " ;; Printing deferred declarations \n\n";
+  d_theoryProof->printDeferredDeclarations(out, paren);
+
+  out << "\n ;; Printing the global let map";
+  d_theoryProof->finalizeBvConflicts(used_lemmas, out);
+  ProofManager::getBitVectorProof()->calculateAtomsInBitblastingProof();
+  ProofLetMap globalLetMap;
+  if (options::lfscLetification()) {
+    ProofManager::currentPM()->printGlobalLetMap(atoms, globalLetMap, out, paren);
+  }
+
+  out << " ;; Printing aliasing declarations \n\n";
+  d_theoryProof->printAliasingDeclarations(out, paren, globalLetMap);
+
+  out << " ;; Rewrites for Lemmas \n";
+  d_theoryProof->printLemmaRewrites(rewrites, out, paren);
+
+  // print trust that input assertions are their preprocessed form
+  printPreprocessedAssertions(used_assertions, out, paren, globalLetMap);
+
+  // print mapping between theory atoms and internal SAT variables
+  out << ";; Printing mapping from preprocessed assertions into atoms \n";
+  d_cnfProof->printAtomMapping(atoms, out, paren, globalLetMap);
+
+  Debug("pf::pm") << std::endl << "Printing cnf proof for clauses" << std::endl;
+
+  IdToSatClause::const_iterator cl_it = used_inputs.begin();
+  // print CNF conversion proof for each clause
+  for (; cl_it != used_inputs.end(); ++cl_it) {
+    d_cnfProof->printCnfProofForClause(cl_it->first, cl_it->second, out, paren);
+  }
+
+  Debug("pf::pm") << std::endl << "Printing cnf proof for clauses DONE" << std::endl;
+
+  Debug("pf::pm") << "Proof manager: printing theory lemmas" << std::endl;
+  d_theoryProof->printTheoryLemmas(used_lemmas, out, paren, globalLetMap);
+  Debug("pf::pm") << "Proof manager: printing theory lemmas DONE!" << std::endl;
+
+  if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER && ProofManager::getBitVectorProof()) {
+    ProofManager::getBitVectorProof()->getSatProof()->printResolutionEmptyClause(out, paren);
+  } else {
+    // print actual resolution proof
+    d_satProof->printResolutions(out, paren);
+    d_satProof->printResolutionEmptyClause(out, paren);
+  }
+
+  out << paren.str();
+  out << "\n;;\n";
+}
+
+void LFSCProof::printPreprocessedAssertions(const NodeSet& assertions,
+                                            std::ostream& os,
+                                            std::ostream& paren,
+                                            ProofLetMap& globalLetMap) {
+  os << "\n ;; In the preprocessor we trust \n";
+  NodeSet::const_iterator it = assertions.begin();
+  NodeSet::const_iterator end = assertions.end();
+
+  Debug("pf::pm") << "LFSCProof::printPreprocessedAssertions starting" << std::endl;
+
+  if (options::fewerPreprocessingHoles()) {
+    // Check for assertions that did not get rewritten, and update the printing filter.
+    checkUnrewrittenAssertion(assertions);
+
+    // For the remaining assertions, bind them to input assertions.
+    for (; it != end; ++it) {
+      // Rewrite preprocessing step if it cannot be eliminated
+      if (!ProofManager::currentPM()->have_input_assertion((*it).toExpr())) {
+        os << "(th_let_pf _ (trust_f (iff ";
+
+        Expr inputAssertion;
+
+        if (((*it).isConst() && *it == NodeManager::currentNM()->mkConst<bool>(true)) ||
+            ((*it).getKind() == kind::NOT && (*it)[0] == NodeManager::currentNM()->mkConst<bool>(false))) {
+          inputAssertion = NodeManager::currentNM()->mkConst<bool>(true).toExpr();
+        } else {
+          // Figure out which input assertion led to this assertion
+          ExprSet inputAssertions;
+          ProofManager::currentPM()->traceDeps(*it, &inputAssertions);
+
+          Debug("pf::pm") << "Original assertions for " << *it << " are: " << std::endl;
+
+          ProofManager::assertions_iterator assertionIt;
+          for (assertionIt = inputAssertions.begin(); assertionIt != inputAssertions.end(); ++assertionIt) {
+            Debug("pf::pm") << "\t" << *assertionIt << std::endl;
+          }
+
+          if (inputAssertions.size() == 0) {
+            Debug("pf::pm") << "LFSCProof::printPreprocessedAssertions: Count NOT find the assertion that caused this PA. Picking an arbitrary one..." << std::endl;
+            // For now just use the first assertion...
+            inputAssertion = *(ProofManager::currentPM()->begin_assertions());
+          } else {
+            if (inputAssertions.size() != 1) {
+              Debug("pf::pm") << "LFSCProof::printPreprocessedAssertions: Attention: more than one original assertion was found. Picking just one." << std::endl;
+            }
+            inputAssertion = *inputAssertions.begin();
+          }
+        }
+
+        if (!ProofManager::currentPM()->have_input_assertion(inputAssertion)) {
+          // The thing returned by traceDeps does not appear in the input assertions...
+          Debug("pf::pm") << "LFSCProof::printPreprocessedAssertions: Count NOT find the assertion that caused this PA. Picking an arbitrary one..." << std::endl;
+          // For now just use the first assertion...
+          inputAssertion = *(ProofManager::currentPM()->begin_assertions());
+        }
+
+        Debug("pf::pm") << "Original assertion for " << *it
+                        << " is: "
+                        << inputAssertion
+                        << ", AKA "
+                        << ProofManager::currentPM()->getInputFormulaName(inputAssertion)
+                        << std::endl;
+
+        ProofManager::currentPM()->getTheoryProofEngine()->printTheoryTerm(inputAssertion, os, globalLetMap);
+        os << " ";
+        ProofManager::currentPM()->getTheoryProofEngine()->printTheoryTerm((*it).toExpr(), os, globalLetMap);
+
+        os << "))";
+        os << "(\\ "<< ProofManager::getPreprocessedAssertionName(*it, "") << "\n";
+        paren << "))";
+
+        std::ostringstream rewritten;
+
+        rewritten << "(or_elim_1 _ _ ";
+        rewritten << "(not_not_intro _ ";
+        rewritten << ProofManager::currentPM()->getInputFormulaName(inputAssertion);
+        rewritten << ") (iff_elim_1 _ _ ";
+        rewritten << ProofManager::getPreprocessedAssertionName(*it, "");
+        rewritten << "))";
+
+        ProofManager::currentPM()->addAssertionFilter(*it, rewritten.str());
+      }
+    }
+  } else {
+    for (; it != end; ++it) {
+      os << "(th_let_pf _ ";
+
+      //TODO
+      os << "(trust_f ";
+      if (ProofManager::currentPM()->getTheoryProofEngine()->printsAsBool(*it)) os << "(p_app ";
+      ProofManager::currentPM()->getTheoryProofEngine()->printTheoryTerm((*it).toExpr(), os, globalLetMap);
+      if (ProofManager::currentPM()->getTheoryProofEngine()->printsAsBool(*it)) os << ")";
+      os << ") ";
+
+      os << "(\\ "<< ProofManager::getPreprocessedAssertionName(*it, "") << "\n";
+      paren << "))";
+    }
+  }
+
+  os << "\n";
+}
+
+void LFSCProof::checkUnrewrittenAssertion(const NodeSet& rewrites) {
+  Debug("pf::pm") << "LFSCProof::checkUnrewrittenAssertion starting" << std::endl;
+
+  NodeSet::const_iterator rewrite;
+  for (rewrite = rewrites.begin(); rewrite != rewrites.end(); ++rewrite) {
+    Debug("pf::pm") << "LFSCProof::checkUnrewrittenAssertion: handling " << *rewrite << std::endl;
+    if (ProofManager::currentPM()->have_input_assertion((*rewrite).toExpr())) {
+      Assert(ProofManager::currentPM()->have_input_assertion((*rewrite).toExpr()));
+      Debug("pf::pm") << "LFSCProof::checkUnrewrittenAssertion: this assertion was NOT rewritten!" << std::endl
+                      << "\tAdding filter: "
+                      << ProofManager::getPreprocessedAssertionName(*rewrite, "")
+                      << " --> "
+                      << ProofManager::currentPM()->getInputFormulaName((*rewrite).toExpr())
+                      << std::endl;
+      ProofManager::currentPM()->addAssertionFilter(*rewrite,
+        ProofManager::currentPM()->getInputFormulaName((*rewrite).toExpr()));
+    } else {
+      Debug("pf::pm") << "LFSCProof::checkUnrewrittenAssertion: this assertion WAS rewritten! " << *rewrite << std::endl;
+    }
+  }
+}
+
+//---from Morgan---
+
+bool ProofManager::hasOp(TNode n) const {
+  return d_bops.find(n) != d_bops.end();
+}
+
+Node ProofManager::lookupOp(TNode n) const {
+  std::map<Node, Node>::const_iterator i = d_bops.find(n);
+  Assert(i != d_bops.end());
+  return (*i).second;
+}
+
+Node ProofManager::mkOp(TNode n) {
+  Trace("mgd-pm-mkop") << "MkOp : " << n << " " << n.getKind() << std::endl;
+  if(n.getKind() != kind::BUILTIN) {
+    return n;
+  }
+
+  Node& op = d_ops[n];
+  if(op.isNull()) {
+    Assert((n.getConst<Kind>() == kind::SELECT) || (n.getConst<Kind>() == kind::STORE));
+
+    Debug("mgd-pm-mkop") << "making an op for " << n << "\n";
+
+    std::stringstream ss;
+    ss << n;
+    std::string s = ss.str();
+    Debug("mgd-pm-mkop") << " : " << s << std::endl;
+    std::vector<TypeNode> v;
+    v.push_back(NodeManager::currentNM()->integerType());
+    if(n.getConst<Kind>() == kind::SELECT) {
+      v.push_back(NodeManager::currentNM()->integerType());
+      v.push_back(NodeManager::currentNM()->integerType());
+    } else if(n.getConst<Kind>() == kind::STORE) {
+      v.push_back(NodeManager::currentNM()->integerType());
+      v.push_back(NodeManager::currentNM()->integerType());
+      v.push_back(NodeManager::currentNM()->integerType());
+    }
+    TypeNode type = NodeManager::currentNM()->mkFunctionType(v);
+    Debug("mgd-pm-mkop") << "typenode is: " << type << "\n";
+    op = NodeManager::currentNM()->mkSkolem(s, type, " ignore", NodeManager::SKOLEM_NO_NOTIFY);
+    d_bops[op] = n;
+  }
+  Debug("mgd-pm-mkop") << "returning the op: " << op << "\n";
+  return op;
+}
+//---end from Morgan---
+
+bool ProofManager::wasPrinted(const Type& type) const {
+  return d_printedTypes.find(type) != d_printedTypes.end();
+}
+
+void ProofManager::markPrinted(const Type& type) {
+  d_printedTypes.insert(type);
+}
+
+void ProofManager::addRewriteFilter(const std::string &original, const std::string &substitute) {
+  d_rewriteFilters[original] = substitute;
+}
+
+void ProofManager::clearRewriteFilters() {
+  d_rewriteFilters.clear();
+}
+
+std::ostream& operator<<(std::ostream& out, CVC4::ProofRule k) {
+  switch(k) {
+  case RULE_GIVEN:
+    out << "RULE_GIVEN";
+    break;
+  case RULE_DERIVED:
+    out << "RULE_DERIVED";
+    break;
+  case RULE_RECONSTRUCT:
+    out << "RULE_RECONSTRUCT";
+    break;
+  case RULE_TRUST:
+    out << "RULE_TRUST";
+    break;
+  case RULE_INVALID:
+    out << "RULE_INVALID";
+    break;
+  case RULE_CONFLICT:
+    out << "RULE_CONFLICT";
+    break;
+  case RULE_TSEITIN:
+    out << "RULE_TSEITIN";
+    break;
+  case RULE_SPLIT:
+    out << "RULE_SPLIT";
+    break;
+  case RULE_ARRAYS_EXT:
+    out << "RULE_ARRAYS";
+    break;
+  case RULE_ARRAYS_ROW:
+    out << "RULE_ARRAYS";
+    break;
+  default:
+    out << "ProofRule Unknown! [" << unsigned(k) << "]";
+  }
+
+  return out;
+}
+
+void ProofManager::registerRewrite(unsigned ruleId, Node original, Node result){
+  Assert (currentPM()->d_theoryProof != NULL);
+  currentPM()->d_rewriteLog.push_back(RewriteLogEntry(ruleId, original, result));
+}
+
+void ProofManager::clearRewriteLog() {
+  Assert (currentPM()->d_theoryProof != NULL);
+  currentPM()->d_rewriteLog.clear();
+}
+
+std::vector<RewriteLogEntry> ProofManager::getRewriteLog() {
+  return currentPM()->d_rewriteLog;
+}
+
+void ProofManager::dumpRewriteLog() const {
+  Debug("pf::rr") << "Dumpign rewrite log:" << std::endl;
+
+  for (unsigned i = 0; i < d_rewriteLog.size(); ++i) {
+    Debug("pf::rr") << "\tRule " << d_rewriteLog[i].getRuleId()
+                    << ": "
+                    << d_rewriteLog[i].getOriginal()
+                    << " --> "
+                    << d_rewriteLog[i].getResult() << std::endl;
+  }
+}
+
+void bind(Expr term, ProofLetMap& map, Bindings& letOrder) {
+  ProofLetMap::iterator it = map.find(term);
+  if (it != map.end())
+    return;
+
+  for (unsigned i = 0; i < term.getNumChildren(); ++i)
+    bind(term[i], map, letOrder);
+
+  // Special case: chain operators. If we have and(a,b,c), it will be prineted as and(a,and(b,c)).
+  // The subterm and(b,c) may repeat elsewhere, so we need to bind it, too.
+  Kind k = term.getKind();
+  if (((k == kind::OR) || (k == kind::AND)) && term.getNumChildren() > 2) {
+    Node currentExpression = term[term.getNumChildren() - 1];
+    for (int i = term.getNumChildren() - 2; i >= 0; --i) {
+      NodeBuilder<> builder(k);
+      builder << term[i];
+      builder << currentExpression.toExpr();
+      currentExpression = builder;
+      bind(currentExpression.toExpr(), map, letOrder);
+    }
+  } else {
+    unsigned newId = ProofLetCount::newId();
+    ProofLetCount letCount(newId);
+    map[term] = letCount;
+    letOrder.push_back(LetOrderElement(term, newId));
+  }
+}
+
+void ProofManager::printGlobalLetMap(std::set<Node>& atoms,
+                                     ProofLetMap& letMap,
+                                     std::ostream& out,
+                                     std::ostringstream& paren) {
+  Bindings letOrder;
+  std::set<Node>::const_iterator atom;
+  for (atom = atoms.begin(); atom != atoms.end(); ++atom) {
+    bind(atom->toExpr(), letMap, letOrder);
+  }
+
+  // TODO: give each theory a chance to add atoms. For now, just query BV directly...
+  const std::set<Node>* additionalAtoms = ProofManager::getBitVectorProof()->getAtomsInBitblastingProof();
+  for (atom = additionalAtoms->begin(); atom != additionalAtoms->end(); ++atom) {
+    bind(atom->toExpr(), letMap, letOrder);
+  }
+
+  for (unsigned i = 0; i < letOrder.size(); ++i) {
+    Expr currentExpr = letOrder[i].expr;
+    unsigned letId = letOrder[i].id;
+    ProofLetMap::iterator it = letMap.find(currentExpr);
+    Assert(it != letMap.end());
+    out << "\n(@ let" << letId << " ";
+    d_theoryProof->printBoundTerm(currentExpr, out, letMap);
+    paren << ")";
+    it->second.increment();
+  }
+
+  out << std::endl << std::endl;
+}
+
+} /* CVC4  namespace */
diff --git a/src/proof/proof_manager.h b/src/proof/proof_manager.h
new file mode 100644
index 0000000..fa7224d
--- /dev/null
+++ b/src/proof/proof_manager.h
@@ -0,0 +1,316 @@
+/*********************                                                        */
+/*! \file proof_manager.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Morgan Deters, Guy Katz
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A manager for Proofs
+ **
+ ** A manager for Proofs.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__PROOF_MANAGER_H
+#define __CVC4__PROOF_MANAGER_H
+
+#include <iosfwd>
+#include <map>
+#include "expr/node.h"
+#include "proof/clause_id.h"
+#include "proof/proof.h"
+#include "proof/proof_utils.h"
+#include "proof/skolemization_manager.h"
+#include "theory/logic_info.h"
+#include "theory/substitutions.h"
+#include "util/proof.h"
+
+
+namespace CVC4 {
+
+class SmtGlobals;
+
+// forward declarations
+namespace Minisat {
+  class Solver;
+}/* Minisat namespace */
+
+namespace BVMinisat {
+  class Solver;
+}/* BVMinisat namespace */
+
+namespace prop {
+  class CnfStream;
+}/* CVC4::prop namespace */
+
+class SmtEngine;
+
+const ClauseId ClauseIdEmpty(-1);
+const ClauseId ClauseIdUndef(-2);
+const ClauseId ClauseIdError(-3);
+
+class Proof;
+template <class Solver> class TSatProof;
+typedef TSatProof< CVC4::Minisat::Solver> CoreSatProof;
+
+class CnfProof;
+class RewriterProof;
+class TheoryProofEngine;
+class TheoryProof;
+class UFProof;
+class ArithProof;
+class ArrayProof;
+class BitVectorProof;
+
+template <class Solver> class LFSCSatProof;
+typedef LFSCSatProof< CVC4::Minisat::Solver> LFSCCoreSatProof;
+
+class LFSCCnfProof;
+class LFSCTheoryProofEngine;
+class LFSCUFProof;
+class LFSCBitVectorProof;
+class LFSCRewriterProof;
+
+template <class Solver> class ProofProxy;
+typedef ProofProxy< CVC4::Minisat::Solver> CoreProofProxy;
+typedef ProofProxy< CVC4::BVMinisat::Solver> BVProofProxy;
+
+namespace prop {
+  typedef uint64_t SatVariable;
+  class SatLiteral;
+  typedef std::vector<SatLiteral> SatClause;
+}/* CVC4::prop namespace */
+
+// different proof modes
+enum ProofFormat {
+  LFSC,
+  NATIVE
+};/* enum ProofFormat */
+
+std::string append(const std::string& str, uint64_t num);
+
+typedef __gnu_cxx::hash_map < ClauseId, prop::SatClause* > IdToSatClause;
+typedef __gnu_cxx::hash_set<Expr, ExprHashFunction > ExprSet;
+typedef __gnu_cxx::hash_set<Node, NodeHashFunction > NodeSet;
+typedef __gnu_cxx::hash_map<Node, std::vector<Node>, NodeHashFunction > NodeToNodes;
+typedef std::hash_set<ClauseId> IdHashSet;
+
+enum ProofRule {
+  RULE_GIVEN,       /* input assertion */
+  RULE_DERIVED,     /* a "macro" rule */
+  RULE_RECONSTRUCT, /* prove equivalence using another method */
+  RULE_TRUST,       /* trust without evidence (escape hatch until proofs are fully supported) */
+  RULE_INVALID,     /* assert-fail if this is ever needed in proof; use e.g. for split lemmas */
+  RULE_CONFLICT,    /* re-construct as a conflict */
+  RULE_TSEITIN,     /* Tseitin CNF transformation */
+  RULE_SPLIT,       /* A splitting lemma of the form a v ~ a*/
+
+  RULE_ARRAYS_EXT,  /* arrays, extensional */
+  RULE_ARRAYS_ROW,  /* arrays, read-over-write */
+};/* enum ProofRules */
+
+class RewriteLogEntry {
+public:
+  RewriteLogEntry(unsigned ruleId, Node original, Node result)
+    : d_ruleId(ruleId), d_original(original), d_result(result) {
+  }
+
+  unsigned getRuleId() const {
+    return d_ruleId;
+  }
+
+  Node getOriginal() const {
+    return d_original;
+  }
+
+  Node getResult() const {
+    return d_result;
+  }
+
+private:
+  unsigned d_ruleId;
+  Node d_original;
+  Node d_result;
+};
+
+class ProofManager {
+  CoreSatProof*  d_satProof;
+  CnfProof*      d_cnfProof;
+  TheoryProofEngine* d_theoryProof;
+
+  // information that will need to be shared across proofs
+  ExprSet    d_inputFormulas;
+  std::map<Expr, std::string> d_inputFormulaToName;
+  ExprSet    d_inputCoreFormulas;
+  ExprSet    d_outputCoreFormulas;
+
+  SkolemizationManager d_skolemizationManager;
+
+  int d_nextId;
+
+  Proof* d_fullProof;
+  ProofFormat d_format; // used for now only in debug builds
+
+  NodeToNodes d_deps;
+
+  std::set<Type> d_printedTypes;
+
+  std::map<std::string, std::string> d_rewriteFilters;
+  std::map<Node, std::string> d_assertionFilters;
+
+  std::vector<RewriteLogEntry> d_rewriteLog;
+
+protected:
+  LogicInfo d_logic;
+
+public:
+  ProofManager(ProofFormat format = LFSC);
+  ~ProofManager();
+
+  static ProofManager* currentPM();
+
+  // initialization
+  static void         initSatProof(Minisat::Solver* solver);
+  static void         initCnfProof(CVC4::prop::CnfStream* cnfStream,
+                                   context::Context* ctx);
+  static void         initTheoryProofEngine();
+
+  // getting various proofs
+  static Proof*         getProof(SmtEngine* smt);
+  static CoreSatProof*  getSatProof();
+  static CnfProof*      getCnfProof();
+  static TheoryProofEngine* getTheoryProofEngine();
+  static TheoryProof* getTheoryProof( theory::TheoryId id );
+  static UFProof* getUfProof();
+  static BitVectorProof* getBitVectorProof();
+  static ArrayProof* getArrayProof();
+  static ArithProof* getArithProof();
+
+  static SkolemizationManager *getSkolemizationManager();
+
+  // iterators over data shared by proofs
+  typedef ExprSet::const_iterator assertions_iterator;
+
+  // iterate over the assertions (these are arbitrary boolean formulas)
+  assertions_iterator begin_assertions() const {
+    return d_inputFormulas.begin();
+  }
+  assertions_iterator end_assertions() const { return d_inputFormulas.end(); }
+  size_t num_assertions() const { return d_inputFormulas.size(); }
+  bool have_input_assertion(const Expr& assertion) {
+    return d_inputFormulas.find(assertion) != d_inputFormulas.end();
+  }
+
+//---from Morgan---
+  Node mkOp(TNode n);
+  Node lookupOp(TNode n) const;
+  bool hasOp(TNode n) const;
+
+  std::map<Node, Node> d_ops;
+  std::map<Node, Node> d_bops;
+//---end from Morgan---
+
+
+  // variable prefixes
+  static std::string getInputClauseName(ClauseId id, const std::string& prefix = "");
+  static std::string getLemmaClauseName(ClauseId id, const std::string& prefix = "");
+  static std::string getLemmaName(ClauseId id, const std::string& prefix = "");
+  static std::string getLearntClauseName(ClauseId id, const std::string& prefix = "");
+  static std::string getPreprocessedAssertionName(Node node, const std::string& prefix = "");
+  static std::string getAssertionName(Node node, const std::string& prefix = "");
+  static std::string getInputFormulaName(const Expr& expr);
+
+  static std::string getVarName(prop::SatVariable var, const std::string& prefix = "");
+  static std::string getAtomName(prop::SatVariable var, const std::string& prefix = "");
+  static std::string getAtomName(TNode atom, const std::string& prefix = "");
+  static std::string getLitName(prop::SatLiteral lit, const std::string& prefix = "");
+  static std::string getLitName(TNode lit, const std::string& prefix = "");
+
+  // for SMT variable names that have spaces and other things
+  static std::string sanitize(TNode var);
+
+  /** Add proof assertion - unlike addCoreAssertion this is post definition expansion **/
+  void addAssertion(Expr formula);
+
+  /** Public unsat core methods **/
+  void addCoreAssertion(Expr formula);
+
+  void addDependence(TNode n, TNode dep);
+  void addUnsatCore(Expr formula);
+
+  // trace dependences back to unsat core
+  void traceDeps(TNode n, ExprSet* coreAssertions);
+  void traceUnsatCore();
+  assertions_iterator begin_unsat_core() const { return d_outputCoreFormulas.begin(); }
+  assertions_iterator end_unsat_core() const { return d_outputCoreFormulas.end(); }
+  size_t size_unsat_core() const { return d_outputCoreFormulas.size(); }
+
+  bool unsatCoreAvailable() const;
+  void getLemmasInUnsatCore(theory::TheoryId theory, std::vector<Node> &lemmas);
+  Node getWeakestImplicantInUnsatCore(Node lemma);
+
+  int nextId() { return d_nextId++; }
+
+  void setLogic(const LogicInfo& logic);
+  const std::string getLogic() const { return d_logic.getLogicString(); }
+  LogicInfo & getLogicInfo() { return d_logic; }
+
+  void markPrinted(const Type& type);
+  bool wasPrinted(const Type& type) const;
+
+  void addRewriteFilter(const std::string &original, const std::string &substitute);
+  void clearRewriteFilters();
+
+  void addAssertionFilter(const Node& node, const std::string& rewritten);
+
+  static void registerRewrite(unsigned ruleId, Node original, Node result);
+  static void clearRewriteLog();
+
+  std::vector<RewriteLogEntry> getRewriteLog();
+  void dumpRewriteLog() const;
+
+  void printGlobalLetMap(std::set<Node>& atoms,
+                         ProofLetMap& letMap,
+                         std::ostream& out,
+                         std::ostringstream& paren);
+
+private:
+  void constructSatProof();
+  std::set<Node> satClauseToNodeSet(prop::SatClause* clause);
+};/* class ProofManager */
+
+class LFSCProof : public Proof {
+  LFSCCoreSatProof* d_satProof;
+  LFSCCnfProof* d_cnfProof;
+  LFSCTheoryProofEngine* d_theoryProof;
+  SmtEngine* d_smtEngine;
+
+  // FIXME: hack until we get preprocessing
+  void printPreprocessedAssertions(const NodeSet& assertions,
+                                   std::ostream& os,
+                                   std::ostream& paren,
+                                   ProofLetMap& globalLetMap);
+
+  void checkUnrewrittenAssertion(const NodeSet& assertions);
+
+public:
+  LFSCProof(SmtEngine* smtEngine,
+            LFSCCoreSatProof* sat,
+            LFSCCnfProof* cnf,
+            LFSCTheoryProofEngine* theory);
+  virtual void toStream(std::ostream& out);
+  virtual void toStream(std::ostream& out, const ProofLetMap& map);
+  virtual ~LFSCProof() {}
+};/* class LFSCProof */
+
+std::ostream& operator<<(std::ostream& out, CVC4::ProofRule k);
+}/* CVC4 namespace */
+
+
+
+#endif /* __CVC4__PROOF_MANAGER_H */
diff --git a/src/proof/proof_output_channel.cpp b/src/proof/proof_output_channel.cpp
new file mode 100644
index 0000000..c87ccd3
--- /dev/null
+++ b/src/proof/proof_output_channel.cpp
@@ -0,0 +1,84 @@
+/*********************                                                        */
+/*! \file proof_output_channel.cpp
+** \verbatim
+** \brief [[ Add one-line brief description here ]]
+**
+** [[ Add lengthier description here ]]
+** \todo document this file
+**/
+
+#include "base/cvc4_assert.h"
+#include "proof_output_channel.h"
+#include "theory/term_registration_visitor.h"
+#include "theory/valuation.h"
+
+namespace CVC4 {
+
+ProofOutputChannel::ProofOutputChannel() : d_conflict(), d_proof(NULL) {}
+
+void ProofOutputChannel::conflict(TNode n, Proof* pf) throw() {
+  Trace("pf::tp") << "ProofOutputChannel: CONFLICT: " << n << std::endl;
+  Assert(d_conflict.isNull());
+  Assert(!n.isNull());
+  d_conflict = n;
+  Assert(pf != NULL);
+  d_proof = pf;
+}
+
+bool ProofOutputChannel::propagate(TNode x) throw() {
+  Trace("pf::tp") << "ProofOutputChannel: got a propagation: " << x
+                  << std::endl;
+  d_propagations.insert(x);
+  return true;
+}
+
+theory::LemmaStatus ProofOutputChannel::lemma(TNode n, ProofRule rule, bool,
+                                              bool, bool) {
+  Trace("pf::tp") << "ProofOutputChannel: new lemma: " << n << std::endl;
+  d_lemma = n;
+  return theory::LemmaStatus(TNode::null(), 0);
+}
+
+theory::LemmaStatus ProofOutputChannel::splitLemma(TNode, bool) {
+  AlwaysAssert(false);
+  return theory::LemmaStatus(TNode::null(), 0);
+}
+
+void ProofOutputChannel::requirePhase(TNode n, bool b) throw() {
+  Debug("pf::tp") << "ProofOutputChannel::requirePhase called" << std::endl;
+  Trace("pf::tp") << "requirePhase " << n << " " << b << std::endl;
+}
+
+bool ProofOutputChannel::flipDecision() throw() {
+  Debug("pf::tp") << "ProofOutputChannel::flipDecision called" << std::endl;
+  AlwaysAssert(false);
+  return false;
+}
+
+void ProofOutputChannel::setIncomplete() throw() {
+  Debug("pf::tp") << "ProofOutputChannel::setIncomplete called" << std::endl;
+  AlwaysAssert(false);
+}
+
+
+MyPreRegisterVisitor::MyPreRegisterVisitor(theory::Theory* theory)
+  : d_theory(theory)
+  , d_visited() {
+}
+
+bool MyPreRegisterVisitor::alreadyVisited(TNode current, TNode parent) {
+  return d_visited.find(current) != d_visited.end();
+}
+
+void MyPreRegisterVisitor::visit(TNode current, TNode parent) {
+  d_theory->preRegisterTerm(current);
+  d_visited.insert(current);
+}
+
+void MyPreRegisterVisitor::start(TNode node) {
+}
+
+void MyPreRegisterVisitor::done(TNode node) {
+}
+
+} /* namespace CVC4 */
diff --git a/src/proof/proof_output_channel.h b/src/proof/proof_output_channel.h
new file mode 100644
index 0000000..b44689f
--- /dev/null
+++ b/src/proof/proof_output_channel.h
@@ -0,0 +1,50 @@
+/*********************                                                        */
+/*! \file proof_output_channel.h
+ ** \verbatim
+ **
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__PROOF_OUTPUT_CHANNEL_H
+#define __CVC4__PROOF_OUTPUT_CHANNEL_H
+
+#include "theory/output_channel.h"
+
+namespace CVC4 {
+
+class ProofOutputChannel : public theory::OutputChannel {
+public:
+  Node d_conflict;
+  Proof* d_proof;
+  Node d_lemma;
+  std::set<Node> d_propagations;
+
+  ProofOutputChannel();
+
+  virtual ~ProofOutputChannel() throw() {}
+
+  virtual void conflict(TNode n, Proof* pf) throw();
+  virtual bool propagate(TNode x) throw();
+  virtual theory::LemmaStatus lemma(TNode n, ProofRule rule, bool, bool, bool);
+  virtual theory::LemmaStatus splitLemma(TNode, bool);
+  virtual void requirePhase(TNode n, bool b) throw();
+  virtual bool flipDecision() throw();
+  virtual void setIncomplete() throw();
+};/* class ProofOutputChannel */
+
+class MyPreRegisterVisitor {
+  theory::Theory* d_theory;
+  __gnu_cxx::hash_set<TNode, TNodeHashFunction> d_visited;
+public:
+  typedef void return_type;
+  MyPreRegisterVisitor(theory::Theory* theory);
+  bool alreadyVisited(TNode current, TNode parent);
+  void visit(TNode current, TNode parent);
+  void start(TNode node);
+  void done(TNode node);
+}; /* class MyPreRegisterVisitor */
+
+} /* CVC4 namespace */
+
+#endif /* __CVC4__PROOF_OUTPUT_CHANNEL_H */
diff --git a/src/proof/proof_utils.cpp b/src/proof/proof_utils.cpp
new file mode 100644
index 0000000..3ace236
--- /dev/null
+++ b/src/proof/proof_utils.cpp
@@ -0,0 +1,139 @@
+/*********************                                                        */
+/*! \file proof_utils.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+
+ ** \todo document this file
+
+**/
+
+#include "proof/proof_utils.h"
+#include "theory/theory.h"
+
+namespace CVC4 {
+namespace utils {
+
+void collectAtoms(TNode node, std::set<Node>& seen) {
+  if (seen.find(node) != seen.end())
+    return;
+  if (theory::Theory::theoryOf(node) != theory::THEORY_BOOL || node.isVar()) {
+      seen.insert(node);
+      return;
+  }
+
+  for (unsigned i = 0; i < node.getNumChildren(); ++i) {
+    collectAtoms(node[i], seen);
+  }
+}
+
+std::string toLFSCKind(Kind kind) {
+  switch(kind) {
+    // core kinds
+  case kind::OR : return "or";
+  case kind::AND: return "and";
+  case kind::XOR: return "xor";
+  case kind::EQUAL: return "=";
+  case kind::IMPLIES: return "impl";
+  case kind::NOT: return "not";
+
+    // bit-vector kinds
+  case kind::BITVECTOR_AND :
+    return "bvand";
+  case kind::BITVECTOR_OR :
+    return "bvor";
+  case kind::BITVECTOR_XOR :
+    return "bvxor";
+  case kind::BITVECTOR_NAND :
+    return "bvnand";
+  case kind::BITVECTOR_NOR :
+    return "bvnor";
+  case kind::BITVECTOR_XNOR :
+    return "bvxnor";
+  case kind::BITVECTOR_COMP :
+    return "bvcomp";
+  case kind::BITVECTOR_MULT :
+    return "bvmul";
+  case kind::BITVECTOR_PLUS :
+    return "bvadd";
+  case kind::BITVECTOR_SUB :
+    return "bvsub";
+  case kind::BITVECTOR_UDIV :
+  case kind::BITVECTOR_UDIV_TOTAL :
+    return "bvudiv";
+  case kind::BITVECTOR_UREM :
+  case kind::BITVECTOR_UREM_TOTAL :
+    return "bvurem";
+  case kind::BITVECTOR_SDIV :
+    return "bvsdiv";
+  case kind::BITVECTOR_SREM :
+    return "bvsrem";
+  case kind::BITVECTOR_SMOD :
+    return "bvsmod";
+  case kind::BITVECTOR_SHL :
+    return "bvshl";
+  case kind::BITVECTOR_LSHR :
+    return "bvlshr";
+  case kind::BITVECTOR_ASHR :
+    return "bvashr";
+  case kind::BITVECTOR_CONCAT :
+    return "concat";
+  case kind::BITVECTOR_NEG :
+    return "bvneg";
+  case kind::BITVECTOR_NOT :
+    return "bvnot";
+  case kind::BITVECTOR_ROTATE_LEFT :
+    return "rotate_left";
+  case kind::BITVECTOR_ROTATE_RIGHT :
+    return "rotate_right";
+  case kind::BITVECTOR_ULT :
+    return "bvult";
+  case kind::BITVECTOR_ULE :
+    return "bvule";
+  case kind::BITVECTOR_UGT :
+    return "bvugt";
+  case kind::BITVECTOR_UGE :
+    return "bvuge";
+  case kind::BITVECTOR_SLT :
+    return "bvslt";
+  case kind::BITVECTOR_SLE :
+    return "bvsle";
+  case kind::BITVECTOR_SGT :
+    return "bvsgt";
+  case kind::BITVECTOR_SGE :
+    return "bvsge";
+  case kind::BITVECTOR_EXTRACT :
+    return "extract";
+  case kind::BITVECTOR_REPEAT :
+    return "repeat";
+  case kind::BITVECTOR_ZERO_EXTEND :
+    return "zero_extend";
+  case kind::BITVECTOR_SIGN_EXTEND :
+    return "sign_extend";
+  default:
+    Unreachable();
+  }
+}
+
+std::string toLFSCKindTerm(Expr node) {
+  Kind k = node.getKind();
+  if( k==kind::EQUAL ){
+    if( node[0].getType().isBoolean() ){
+      return "iff";
+    }else{
+      return "=";
+    }
+  }else{
+    return toLFSCKind( k );
+  }
+}
+
+} /* namespace CVC4::utils */
+} /* namespace CVC4 */
diff --git a/src/proof/proof_utils.h b/src/proof/proof_utils.h
new file mode 100644
index 0000000..a759045
--- /dev/null
+++ b/src/proof/proof_utils.h
@@ -0,0 +1,235 @@
+/*********************                                                        */
+/*! \file proof_utils.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+
+ ** \todo document this file
+
+**/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <set>
+#include <vector>
+#include <sstream>
+#include "expr/node_manager.h"
+
+namespace CVC4 {
+
+typedef __gnu_cxx::hash_set<Expr, ExprHashFunction> ExprSet;
+typedef __gnu_cxx::hash_set<Node, NodeHashFunction> NodeSet;
+
+typedef std::pair<Node, Node> NodePair;
+typedef std::set<NodePair> NodePairSet;
+
+
+class ProofLetCount {
+public:
+  static unsigned counter;
+  static void resetCounter() { counter = 0; }
+  static unsigned newId() { return ++counter; }
+
+  unsigned count;
+  unsigned id;
+  ProofLetCount()
+    : count(0)
+    , id(-1)
+  {}
+
+  void increment() { ++count; }
+  ProofLetCount(unsigned i)
+    : count(1)
+    , id(i)
+  {}
+
+  ProofLetCount(const ProofLetCount& other)
+    : count(other.count)
+    , id (other.id)
+  {}
+
+  bool operator==(const ProofLetCount &other) const {
+    return other.id == id && other.count == count;
+  }
+
+  ProofLetCount& operator=(const ProofLetCount &rhs) {
+    if (&rhs == this) return *this;
+    id = rhs.id;
+    count = rhs.count;
+    return *this;
+  }
+};
+
+struct LetOrderElement {
+  Expr expr;
+  unsigned id;
+  LetOrderElement(Expr e, unsigned i)
+    : expr(e)
+    , id(i)
+  {}
+
+  LetOrderElement()
+    : expr()
+    , id(-1)
+  {}
+};
+
+typedef std::vector<LetOrderElement> Bindings;
+
+namespace utils {
+
+std::string toLFSCKind(Kind kind);
+std::string toLFSCKindTerm(Expr node);
+
+inline unsigned getExtractHigh(Expr node) {
+  return node.getOperator().getConst<BitVectorExtract>().high;
+}
+
+inline unsigned getExtractLow(Expr node) {
+  return node.getOperator().getConst<BitVectorExtract>().low;
+}
+
+inline unsigned getSize(Type type) {
+  BitVectorType bv(type);
+  return bv.getSize();
+}
+
+
+inline unsigned getSize(Expr node) {
+  Assert (node.getType().isBitVector());
+  return getSize(node.getType());
+}
+
+inline Expr mkTrue() {
+  return NodeManager::currentNM()->toExprManager()->mkConst<bool>(true);
+}
+
+inline Expr mkFalse() {
+  return NodeManager::currentNM()->toExprManager()->mkConst<bool>(false);
+}
+inline BitVector mkBitVectorOnes(unsigned size) {
+  Assert(size > 0);
+  return BitVector(1, Integer(1)).signExtend(size - 1);
+}
+
+inline Expr mkExpr(Kind k , Expr expr) {
+  return NodeManager::currentNM()->toExprManager()->mkExpr(k, expr);
+}
+inline Expr mkExpr(Kind k , Expr e1, Expr e2) {
+  return NodeManager::currentNM()->toExprManager()->mkExpr(k, e1, e2);
+}
+inline Expr mkExpr(Kind k , std::vector<Expr>& children) {
+  return NodeManager::currentNM()->toExprManager()->mkExpr(k, children);
+}
+
+
+inline Expr mkOnes(unsigned size) {
+  BitVector val = mkBitVectorOnes(size);
+  return NodeManager::currentNM()->toExprManager()->mkConst<BitVector>(val);
+}
+
+inline Expr mkConst(unsigned size, unsigned int value) {
+  BitVector val(size, value);
+  return NodeManager::currentNM()->toExprManager()->mkConst<BitVector>(val);
+}
+
+inline Expr mkConst(const BitVector& value) {
+  return NodeManager::currentNM()->toExprManager()->mkConst<BitVector>(value);
+}
+
+inline Expr mkOr(const std::vector<Expr>& nodes) {
+  std::set<Expr> all;
+  all.insert(nodes.begin(), nodes.end());
+  Assert(all.size() != 0 );
+
+  if (all.size() == 1) {
+    // All the same, or just one
+    return nodes[0];
+  }
+
+
+  NodeBuilder<> disjunction(kind::OR);
+  std::set<Expr>::const_iterator it = all.begin();
+  std::set<Expr>::const_iterator it_end = all.end();
+  while (it != it_end) {
+    disjunction << Node::fromExpr(*it);
+    ++ it;
+  }
+
+  Node res = disjunction;
+  return res.toExpr();
+}/* mkOr() */
+
+
+inline Expr mkAnd(const std::vector<Expr>& conjunctions) {
+  std::set<Expr> all;
+  all.insert(conjunctions.begin(), conjunctions.end());
+
+  if (all.size() == 0) {
+    return mkTrue();
+  }
+
+  if (all.size() == 1) {
+    // All the same, or just one
+    return conjunctions[0];
+  }
+
+
+  NodeBuilder<> conjunction(kind::AND);
+  std::set<Expr>::const_iterator it = all.begin();
+  std::set<Expr>::const_iterator it_end = all.end();
+  while (it != it_end) {
+    conjunction << Node::fromExpr(*it);
+    ++ it;
+  }
+
+  Node res = conjunction;
+  return res.toExpr();
+}/* mkAnd() */
+
+inline Expr mkSortedExpr(Kind kind, const std::vector<Expr>& children) {
+  std::set<Expr> all;
+  all.insert(children.begin(), children.end());
+
+  if (all.size() == 0) {
+    return mkTrue();
+  }
+
+  if (all.size() == 1) {
+    // All the same, or just one
+    return children[0];
+  }
+
+
+  NodeBuilder<> res(kind);
+  std::set<Expr>::const_iterator it = all.begin();
+  std::set<Expr>::const_iterator it_end = all.end();
+  while (it != it_end) {
+    res << Node::fromExpr(*it);
+    ++ it;
+  }
+
+  return ((Node)res).toExpr();
+}/* mkSortedNode() */
+
+inline const bool getBit(Expr expr, unsigned i) {
+  Assert (i < utils::getSize(expr) &&
+          expr.isConst());
+  Integer bit = expr.getConst<BitVector>().extract(i, i).getValue();
+  return (bit == 1u);
+}
+
+void collectAtoms(TNode node, std::set<Node>& seen);
+
+
+}
+}
diff --git a/src/proof/sat_proof.h b/src/proof/sat_proof.h
new file mode 100644
index 0000000..52e059e
--- /dev/null
+++ b/src/proof/sat_proof.h
@@ -0,0 +1,419 @@
+/*********************                                                        */
+/*! \file sat_proof.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Resolution proof
+ **
+ ** Resolution proof
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__SAT__PROOF_H
+#define __CVC4__SAT__PROOF_H
+
+#include <stdint.h>
+
+#include <ext/hash_map>
+#include <ext/hash_set>
+#include <iosfwd>
+#include <set>
+#include <sstream>
+#include <vector>
+
+#include "expr/expr.h"
+#include "proof/clause_id.h"
+#include "proof/proof_manager.h"
+#include "util/proof.h"
+#include "util/statistics_registry.h"
+
+// Forward declarations.
+namespace CVC4 {
+class CnfProof;
+template <class Solver>
+class ProofProxy;
+} /* namespace CVC4 */
+
+namespace CVC4 {
+/**
+ * Helper debugging functions
+ */
+template <class Solver>
+void printDebug(typename Solver::TLit l);
+template <class Solver>
+void printDebug(typename Solver::TClause& c);
+
+enum ClauseKind {
+  INPUT,
+  THEORY_LEMMA,  // we need to distinguish because we must reprove deleted
+                 // theory lemmas
+  LEARNT
+}; /* enum ClauseKind */
+
+template <class Solver>
+struct ResStep {
+  typename Solver::TLit lit;
+  ClauseId id;
+  bool sign;
+  ResStep(typename Solver::TLit l, ClauseId i, bool s)
+      : lit(l), id(i), sign(s) {}
+}; /* struct ResStep */
+
+template <class Solver>
+class ResChain {
+ public:
+  typedef std::vector<ResStep<Solver> > ResSteps;
+  typedef std::set<typename Solver::TLit> LitSet;
+
+  ResChain(ClauseId start);
+  ~ResChain();
+
+  void addStep(typename Solver::TLit, ClauseId, bool);
+  bool redundantRemoved() {
+    return (d_redundantLits == NULL || d_redundantLits->empty());
+  }
+  void addRedundantLit(typename Solver::TLit lit);
+
+  // accessor methods
+  ClauseId getStart() const { return d_start; }
+  const ResSteps& getSteps() const { return d_steps; }
+  LitSet* getRedundant() const { return d_redundantLits; }
+
+ private:
+  ClauseId d_start;
+  ResSteps d_steps;
+  LitSet* d_redundantLits;
+}; /* class ResChain */
+
+template <class Solver>
+class TSatProof {
+ protected:
+  typedef ResChain<Solver> ResolutionChain;
+
+  typedef std::set<typename Solver::TLit> LitSet;
+  typedef std::set<typename Solver::TVar> VarSet;
+  typedef std::hash_map<ClauseId, typename Solver::TCRef> IdCRefMap;
+  typedef std::hash_map<typename Solver::TCRef, ClauseId> ClauseIdMap;
+  typedef std::hash_map<ClauseId, typename Solver::TLit> IdUnitMap;
+  typedef std::hash_map<int, ClauseId> UnitIdMap;
+  typedef std::hash_map<ClauseId, ResolutionChain*> IdResMap;
+  typedef std::hash_map<ClauseId, uint64_t> IdProofRuleMap;
+  typedef std::vector<ResolutionChain*> ResStack;
+  typedef std::set<ClauseId> IdSet;
+  typedef std::vector<typename Solver::TLit> LitVector;
+  typedef __gnu_cxx::hash_map<ClauseId, typename Solver::TClause&>
+      IdToMinisatClause;
+  typedef __gnu_cxx::hash_map<ClauseId, LitVector*> IdToConflicts;
+
+ public:
+  TSatProof(Solver* solver, const std::string& name, bool checkRes = false);
+  virtual ~TSatProof();
+  void setCnfProof(CnfProof* cnf_proof);
+
+  void startResChain(typename Solver::TLit start);
+  void startResChain(typename Solver::TCRef start);
+  void addResolutionStep(typename Solver::TLit lit,
+                         typename Solver::TCRef clause, bool sign);
+  /**
+   * Pops the current resolution of the stack and stores it
+   * in the resolution map. Also registers the 'clause' parameter
+   * @param clause the clause the resolution is proving
+   */
+  // void endResChain(typename Solver::TCRef clause);
+  void endResChain(typename Solver::TLit lit);
+  void endResChain(ClauseId id);
+
+  /**
+   * Pops the current resolution of the stack *without* storing it.
+   */
+  void cancelResChain();
+
+  /**
+   * Stores in the current derivation the redundant literals that were
+   * eliminated from the conflict clause during conflict clause minimization.
+   * @param lit the eliminated literal
+   */
+  void storeLitRedundant(typename Solver::TLit lit);
+
+  /// update the CRef Id maps when Minisat does memory reallocation x
+  void updateCRef(typename Solver::TCRef old_ref,
+                  typename Solver::TCRef new_ref);
+  void finishUpdateCRef();
+
+  /**
+   * Constructs the empty clause resolution from the final conflict
+   *
+   * @param conflict
+   */
+  void finalizeProof(typename Solver::TCRef conflict);
+
+  /// clause registration methods
+
+  ClauseId registerClause(const typename Solver::TCRef clause, ClauseKind kind);
+  ClauseId registerUnitClause(const typename Solver::TLit lit, ClauseKind kind);
+  void registerTrueLit(const typename Solver::TLit lit);
+  void registerFalseLit(const typename Solver::TLit lit);
+
+  ClauseId getTrueUnit() const;
+  ClauseId getFalseUnit() const;
+
+  void registerAssumption(const typename Solver::TVar var);
+  ClauseId registerAssumptionConflict(const typename Solver::TLitVec& confl);
+
+  ClauseId storeUnitConflict(typename Solver::TLit lit, ClauseKind kind);
+
+  /**
+   * Marks the deleted clauses as deleted. Note we may still use them in the
+   * final
+   * resolution.
+   * @param clause
+   */
+  void markDeleted(typename Solver::TCRef clause);
+  bool isDeleted(ClauseId id) { return d_deleted.find(id) != d_deleted.end(); }
+  /**
+   * Constructs the resolution of ~q and resolves it with the current
+   * resolution thus eliminating q from the current clause
+   * @param q the literal to be resolved out
+   */
+  void resolveOutUnit(typename Solver::TLit q);
+  /**
+   * Constructs the resolution of the literal lit. Called when a clause
+   * containing lit becomes satisfied and is removed.
+   * @param lit
+   */
+  void storeUnitResolution(typename Solver::TLit lit);
+
+  ProofProxy<Solver>* getProxy() { return d_proxy; }
+  /**
+   * Constructs the SAT proof for the given clause,
+   * by collecting the needed clauses in the d_seen
+   * data-structures, also notifying the proofmanager.
+   */
+  void constructProof(ClauseId id);
+  void constructProof() { constructProof(d_emptyClauseId); }
+  bool proofConstructed() const;
+  void collectClauses(ClauseId id);
+  bool derivedEmptyClause() const;
+  prop::SatClause* buildClause(ClauseId id);
+
+  virtual void printResolution(ClauseId id, std::ostream& out,
+                               std::ostream& paren) = 0;
+  virtual void printResolutions(std::ostream& out, std::ostream& paren) = 0;
+  virtual void printResolutionEmptyClause(std::ostream& out,
+                                          std::ostream& paren) = 0;
+  virtual void printAssumptionsResolution(ClauseId id, std::ostream& out,
+                                          std::ostream& paren) = 0;
+
+  void collectClausesUsed(IdToSatClause& inputs, IdToSatClause& lemmas);
+
+  void storeClauseGlue(ClauseId clause, int glue);
+
+ protected:
+  void print(ClauseId id) const;
+  void printRes(ClauseId id) const;
+  void printRes(const ResolutionChain& res) const;
+
+  bool isInputClause(ClauseId id) const;
+  bool isLemmaClause(ClauseId id) const;
+  bool isAssumptionConflict(ClauseId id) const;
+
+  bool isUnit(ClauseId id) const;
+  typename Solver::TLit getUnit(ClauseId id) const;
+
+  bool isUnit(typename Solver::TLit lit) const;
+  ClauseId getUnitId(typename Solver::TLit lit) const;
+
+
+
+  bool hasResolutionChain(ClauseId id) const;
+
+  /** Returns the resolution chain associated with id. Assert fails if
+   * hasResolution(id) does not hold. */
+  const ResolutionChain& getResolutionChain(ClauseId id) const;
+
+  /** Returns a mutable pointer to the resolution chain associated with id.
+   * Assert fails if hasResolution(id) does not hold. */
+  ResolutionChain* getMutableResolutionChain(ClauseId id);
+
+  void createLitSet(ClauseId id, LitSet& set);
+
+  /**
+   * Registers a ClauseId with a resolution chain res.
+   * Takes ownership of the memory associated with res.
+   */
+  void registerResolution(ClauseId id, ResolutionChain* res);
+
+
+  bool hasClauseIdForCRef(typename Solver::TCRef clause) const;
+  ClauseId getClauseIdForCRef(typename Solver::TCRef clause) const;
+
+  bool hasClauseIdForLiteral(typename Solver::TLit lit) const;
+  ClauseId getClauseIdForLiteral(typename Solver::TLit lit) const;
+
+  bool hasClauseRef(ClauseId id) const;
+  typename Solver::TCRef getClauseRef(ClauseId id) const;
+
+
+  const typename Solver::TClause& getClause(typename Solver::TCRef ref) const;
+  typename Solver::TClause* getMutableClause(typename Solver::TCRef ref);
+
+  void getLitVec(ClauseId id, LitVector& vec);
+  virtual void toStream(std::ostream& out);
+
+  bool checkResolution(ClauseId id);
+
+  /**
+   * Constructs a resolution tree that proves lit
+   * and returns the ClauseId for the unit clause lit
+   * @param lit the literal we are proving
+   *
+   * @return
+   */
+  ClauseId resolveUnit(typename Solver::TLit lit);
+
+  /**
+   * Does a depth first search on removed literals and adds the literals
+   * to be removed in the proper order to the stack.
+   *
+   * @param lit the literal we are recursing on
+   * @param removedSet the previously computed set of redundant literals
+   * @param removeStack the stack of literals in reverse order of resolution
+   */
+  void removedDfs(typename Solver::TLit lit, LitSet* removedSet,
+                  LitVector& removeStack, LitSet& inClause, LitSet& seen);
+  void removeRedundantFromRes(ResChain<Solver>* res, ClauseId id);
+
+  std::string varName(typename Solver::TLit lit);
+  std::string clauseName(ClauseId id);
+
+  void addToProofManager(ClauseId id, ClauseKind kind);
+  void addToCnfProof(ClauseId id);
+
+  // Internal data.
+  typename Solver::Solver* d_solver;
+  CnfProof* d_cnfProof;
+
+  // clauses
+  IdCRefMap d_idClause;
+  ClauseIdMap d_clauseId;
+  IdUnitMap d_idUnit;
+  UnitIdMap d_unitId;
+  IdHashSet d_deleted;
+  IdToSatClause d_deletedTheoryLemmas;
+
+  IdHashSet d_inputClauses;
+  IdHashSet d_lemmaClauses;
+  VarSet d_assumptions;             // assumption literals for bv solver
+  IdHashSet d_assumptionConflicts;  // assumption conflicts not actually added
+                                    // to SAT solver
+  IdToConflicts d_assumptionConflictsDebug;
+
+  // Resolutions.
+
+  /**
+   * Map from ClauseId to resolution chain corresponding proving the
+   * clause corresponding to the ClauseId. d_resolutionChains owns the
+   * memory of the ResChain* it contains.
+   */
+  IdResMap d_resolutionChains;
+
+   /*
+   * Stack containting current ResChain* we are working on. d_resStack
+   * owns the memory for the ResChain* it contains. Invariant: no
+   * ResChain* pointer can be both in d_resStack and
+   * d_resolutionChains. Memory ownership is transfered from
+   * d_resStack to d_resolutionChains via registerResolution.
+   */
+  ResStack d_resStack;
+  bool d_checkRes;
+
+  const ClauseId d_emptyClauseId;
+  const ClauseId d_nullId;
+  // proxy class to break circular dependencies
+  ProofProxy<Solver>* d_proxy;
+
+  // temporary map for updating CRefs
+  ClauseIdMap d_temp_clauseId;
+  IdCRefMap d_temp_idClause;
+
+  // unit conflict
+  ClauseId d_unitConflictId;
+  bool d_storedUnitConflict;
+
+  ClauseId d_trueLit;
+  ClauseId d_falseLit;
+
+  std::string d_name;
+
+  IdSet d_seenLearnt;
+  IdToSatClause d_seenInputs;
+  IdToSatClause d_seenLemmas;
+
+   private:
+  __gnu_cxx::hash_map<ClauseId, int> d_glueMap;
+  struct Statistics {
+    IntStat d_numLearnedClauses;
+    IntStat d_numLearnedInProof;
+    IntStat d_numLemmasInProof;
+    AverageStat d_avgChainLength;
+    HistogramStat<uint64_t> d_resChainLengths;
+    HistogramStat<uint64_t> d_usedResChainLengths;
+    HistogramStat<uint64_t> d_clauseGlue;
+    HistogramStat<uint64_t> d_usedClauseGlue;
+    Statistics(const std::string& name);
+    ~Statistics();
+  };
+
+  bool d_satProofConstructed;
+  Statistics d_statistics;
+}; /* class TSatProof */
+
+template <class S>
+class ProofProxy {
+ private:
+  TSatProof<S>* d_proof;
+
+ public:
+  ProofProxy(TSatProof<S>* pf);
+  void updateCRef(typename S::TCRef oldref, typename S::TCRef newref);
+}; /* class ProofProxy */
+
+template <class SatSolver>
+class LFSCSatProof : public TSatProof<SatSolver> {
+ private:
+ public:
+  LFSCSatProof(SatSolver* solver, const std::string& name,
+               bool checkRes = false)
+      : TSatProof<SatSolver>(solver, name, checkRes) {}
+  virtual void printResolution(ClauseId id, std::ostream& out,
+                               std::ostream& paren);
+  virtual void printResolutions(std::ostream& out, std::ostream& paren);
+  virtual void printResolutionEmptyClause(std::ostream& out,
+                                          std::ostream& paren);
+  virtual void printAssumptionsResolution(ClauseId id, std::ostream& out,
+                                          std::ostream& paren);
+}; /* class LFSCSatProof */
+
+template <class Solver>
+prop::SatLiteral toSatLiteral(typename Solver::TLit lit);
+
+/**
+ * Convert from minisat clause to SatClause
+ *
+ * @param minisat_cl
+ * @param sat_cl
+ */
+template <class Solver>
+void toSatClause(const typename Solver::TClause& minisat_cl,
+                 prop::SatClause& sat_cl);
+
+} /* CVC4 namespace */
+
+#endif /* __CVC4__SAT__PROOF_H */
diff --git a/src/proof/sat_proof_implementation.h b/src/proof/sat_proof_implementation.h
new file mode 100644
index 0000000..603559d
--- /dev/null
+++ b/src/proof/sat_proof_implementation.h
@@ -0,0 +1,1197 @@
+/*********************                                                        */
+/*! \file sat_proof_implementation.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Guy Katz, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Resolution proof
+ **
+ ** Resolution proof
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__SAT__PROOF_IMPLEMENTATION_H
+#define __CVC4__SAT__PROOF_IMPLEMENTATION_H
+
+#include "proof/clause_id.h"
+#include "proof/cnf_proof.h"
+#include "proof/sat_proof.h"
+#include "prop/bvminisat/bvminisat.h"
+#include "prop/bvminisat/core/Solver.h"
+#include "prop/minisat/core/Solver.h"
+#include "prop/minisat/minisat.h"
+#include "prop/sat_solver_types.h"
+#include "smt/smt_statistics_registry.h"
+
+namespace CVC4 {
+
+template <class Solver>
+void printLit(typename Solver::TLit l) {
+  Debug("proof:sat") << (sign(l) ? "-" : "") << var(l) + 1;
+}
+
+template <class Solver>
+void printClause(const typename Solver::TClause& c) {
+  for (int i = 0; i < c.size(); i++) {
+    Debug("proof:sat") << (sign(c[i]) ? "-" : "") << var(c[i]) + 1 << " ";
+  }
+}
+
+template <class Solver>
+void printClause(const std::vector<typename Solver::TLit>& c) {
+  for (unsigned i = 0; i < c.size(); i++) {
+    Debug("proof:sat") << (sign(c[i]) ? "-" : "") << var(c[i]) + 1 << " ";
+  }
+}
+
+template <class Solver>
+void printLitSet(const std::set<typename Solver::TLit>& s) {
+  typename std::set<typename Solver::TLit>::const_iterator it = s.begin();
+  for (; it != s.end(); ++it) {
+    printLit<Solver>(*it);
+    Debug("proof:sat") << " ";
+  }
+  Debug("proof:sat") << std::endl;
+}
+
+// purely debugging functions
+template <class Solver>
+void printDebug(typename Solver::TLit l) {
+  Debug("proof:sat") << (sign(l) ? "-" : "") << var(l) + 1 << std::endl;
+}
+template <class Solver>
+void printDebug(typename Solver::TClause& c) {
+  for (int i = 0; i < c.size(); i++) {
+    Debug("proof:sat") << (sign(c[i]) ? "-" : "") << var(c[i]) + 1 << " ";
+  }
+  Debug("proof:sat") << std::endl;
+}
+
+/**
+ * Converts the clause associated to id to a set of literals
+ *
+ * @param id the clause id
+ * @param set the clause converted to a set of literals
+ */
+template <class Solver>
+void TSatProof<Solver>::createLitSet(ClauseId id, LitSet& set) {
+  Assert(set.empty());
+  if (isUnit(id)) {
+    set.insert(getUnit(id));
+    return;
+  }
+  if (id == d_emptyClauseId) {
+    return;
+  }
+  // if it's an assumption
+  if (d_assumptionConflictsDebug.find(id) != d_assumptionConflictsDebug.end()) {
+    LitVector* clause = d_assumptionConflictsDebug[id];
+    for (unsigned i = 0; i < clause->size(); ++i) {
+      set.insert(clause->operator[](i));
+    }
+    return;
+  }
+
+  typename Solver::TCRef ref = getClauseRef(id);
+  const typename Solver::TClause& c = getClause(ref);
+  for (int i = 0; i < c.size(); i++) {
+    set.insert(c[i]);
+  }
+}
+
+/**
+ * Resolves clause1 and clause2 on variable var and stores the
+ * result in clause1
+ * @param v
+ * @param clause1
+ * @param clause2
+ */
+template <class Solver>
+bool resolve(const typename Solver::TLit v,
+             std::set<typename Solver::TLit>& clause1,
+             std::set<typename Solver::TLit>& clause2, bool s) {
+  Assert(!clause1.empty());
+  Assert(!clause2.empty());
+  typename Solver::TLit var = sign(v) ? ~v : v;
+  if (s) {
+    // literal appears positive in the first clause
+    if (!clause2.count(~var)) {
+      if (Debug.isOn("proof:sat")) {
+        Debug("proof:sat") << "proof:resolve: Missing literal ";
+        printLit<Solver>(var);
+        Debug("proof:sat") << std::endl;
+      }
+      return false;
+    }
+    clause1.erase(var);
+    clause2.erase(~var);
+    typename std::set<typename Solver::TLit>::iterator it = clause2.begin();
+    for (; it != clause2.end(); ++it) {
+      clause1.insert(*it);
+    }
+  } else {
+    // literal appears negative in the first clause
+    if (!clause1.count(~var) || !clause2.count(var)) {
+      if (Debug.isOn("proof:sat")) {
+        Debug("proof:sat") << "proof:resolve: Missing literal ";
+        printLit<Solver>(var);
+        Debug("proof:sat") << std::endl;
+      }
+      return false;
+    }
+    clause1.erase(~var);
+    clause2.erase(var);
+    typename std::set<typename Solver::TLit>::iterator it = clause2.begin();
+    for (; it != clause2.end(); ++it) {
+      clause1.insert(*it);
+    }
+  }
+  return true;
+}
+
+/// ResChain
+template <class Solver>
+ResChain<Solver>::ResChain(ClauseId start)
+    : d_start(start), d_steps(), d_redundantLits(NULL) {}
+
+template <class Solver>
+ResChain<Solver>::~ResChain() {
+  if (d_redundantLits != NULL) {
+    delete d_redundantLits;
+  }
+}
+
+template <class Solver>
+void ResChain<Solver>::addStep(typename Solver::TLit lit, ClauseId id,
+                               bool sign) {
+  ResStep<Solver> step(lit, id, sign);
+  d_steps.push_back(step);
+}
+
+template <class Solver>
+void ResChain<Solver>::addRedundantLit(typename Solver::TLit lit) {
+  if (d_redundantLits) {
+    d_redundantLits->insert(lit);
+  } else {
+    d_redundantLits = new LitSet();
+    d_redundantLits->insert(lit);
+  }
+}
+
+/// ProxyProof
+template <class Solver>
+ProofProxy<Solver>::ProofProxy(TSatProof<Solver>* proof) : d_proof(proof) {}
+
+template <class Solver>
+void ProofProxy<Solver>::updateCRef(typename Solver::TCRef oldref,
+                                    typename Solver::TCRef newref) {
+  d_proof->updateCRef(oldref, newref);
+}
+
+/// SatProof
+template <class Solver>
+TSatProof<Solver>::TSatProof(Solver* solver, const std::string& name,
+                             bool checkRes)
+    : d_solver(solver),
+      d_cnfProof(NULL),
+      d_idClause(),
+      d_clauseId(),
+      d_idUnit(),
+      d_deleted(),
+      d_inputClauses(),
+      d_lemmaClauses(),
+      d_assumptions(),
+      d_assumptionConflicts(),
+      d_assumptionConflictsDebug(),
+      d_resolutionChains(),
+      d_resStack(),
+      d_checkRes(checkRes),
+      d_emptyClauseId(ClauseIdEmpty),
+      d_nullId(-2),
+      d_temp_clauseId(),
+      d_temp_idClause(),
+      d_unitConflictId(),
+      d_storedUnitConflict(false),
+      d_trueLit(ClauseIdUndef),
+      d_falseLit(ClauseIdUndef),
+      d_name(name),
+      d_seenLearnt(),
+      d_seenInputs(),
+      d_seenLemmas(),
+      d_satProofConstructed(false),
+      d_statistics(name) {
+  d_proxy = new ProofProxy<Solver>(this);
+}
+
+template <class Solver>
+TSatProof<Solver>::~TSatProof() {
+  delete d_proxy;
+
+  // FIXME: double free if deleted clause also appears in d_seenLemmas?
+  IdToSatClause::const_iterator it = d_deletedTheoryLemmas.begin();
+  IdToSatClause::const_iterator end = d_deletedTheoryLemmas.end();
+
+  for (; it != end; ++it) {
+    ClauseId id = it->first;
+    // otherwise deleted in next loop
+    if (d_seenLemmas.find(id) == d_seenLemmas.end()) {
+      delete it->second;
+    }
+  }
+
+  IdToSatClause::const_iterator seen_lemma_it = d_seenLemmas.begin();
+  IdToSatClause::const_iterator seen_lemma_end = d_seenLemmas.end();
+
+  for (; seen_lemma_it != seen_lemma_end; ++seen_lemma_it) {
+    delete seen_lemma_it->second;
+  }
+
+  IdToSatClause::const_iterator seen_input_it = d_seenInputs.begin();
+  IdToSatClause::const_iterator seen_input_end = d_seenInputs.end();
+
+  for (; seen_input_it != seen_input_end; ++seen_input_it) {
+    delete seen_input_it->second;
+  }
+
+  typedef typename IdResMap::const_iterator ResolutionChainIterator;
+  ResolutionChainIterator resolution_it = d_resolutionChains.begin();
+  ResolutionChainIterator resolution_it_end = d_resolutionChains.end();
+  for (; resolution_it != resolution_it_end; ++resolution_it) {
+    ResChain<Solver>* current = resolution_it->second;
+    delete current;
+  }
+
+  // It could be the case that d_resStack is not empty at destruction time
+  // (for example in the SAT case).
+  typename ResStack::const_iterator resolution_stack_it = d_resStack.begin();
+  typename ResStack::const_iterator resolution_stack_it_end = d_resStack.end();
+  for (; resolution_stack_it != resolution_stack_it_end;
+       ++resolution_stack_it) {
+    ResChain<Solver>* current = *resolution_stack_it;
+    delete current;
+  }
+}
+
+template <class Solver>
+void TSatProof<Solver>::setCnfProof(CnfProof* cnf_proof) {
+  Assert(d_cnfProof == NULL);
+  d_cnfProof = cnf_proof;
+}
+
+/**
+ * Returns true if the resolution chain corresponding to id
+ * does resolve to the clause associated to id
+ * @param id
+ *
+ * @return
+ */
+template <class Solver>
+bool TSatProof<Solver>::checkResolution(ClauseId id) {
+  if (d_checkRes) {
+    bool validRes = true;
+    Assert(hasResolutionChain(id));
+    const ResolutionChain& res = getResolutionChain(id);
+    LitSet clause1;
+    createLitSet(res.getStart(), clause1);
+    const typename ResolutionChain::ResSteps& steps = res.getSteps();
+    for (unsigned i = 0; i < steps.size(); i++) {
+      typename Solver::TLit var = steps[i].lit;
+      LitSet clause2;
+      createLitSet(steps[i].id, clause2);
+      bool res = resolve<Solver>(var, clause1, clause2, steps[i].sign);
+      if (res == false) {
+        validRes = false;
+        break;
+      }
+    }
+    // compare clause we claimed to prove with the resolution result
+    if (isUnit(id)) {
+      // special case if it was a unit clause
+      typename Solver::TLit unit = getUnit(id);
+      validRes = clause1.size() == clause1.count(unit) && !clause1.empty();
+      return validRes;
+    }
+    if (id == d_emptyClauseId) {
+      return clause1.empty();
+    }
+
+    LitVector c;
+    getLitVec(id, c);
+
+    for (unsigned i = 0; i < c.size(); ++i) {
+      int count = clause1.erase(c[i]);
+      if (count == 0) {
+        if (Debug.isOn("proof:sat")) {
+          Debug("proof:sat")
+              << "proof:checkResolution::literal not in computed result ";
+          printLit<Solver>(c[i]);
+          Debug("proof:sat") << "\n";
+        }
+        validRes = false;
+      }
+    }
+    validRes = clause1.empty();
+    if (!validRes) {
+      if (Debug.isOn("proof:sat")) {
+        Debug("proof:sat") << "proof:checkResolution::Invalid Resolution, "
+                              "unremoved literals: \n";
+        printLitSet<Solver>(clause1);
+        Debug("proof:sat") << "proof:checkResolution:: result should be: \n";
+        printClause<Solver>(c);
+      }
+    }
+    return validRes;
+
+  } else {
+    return true;
+  }
+}
+
+/// helper methods
+template <class Solver>
+bool TSatProof<Solver>::hasClauseIdForCRef(typename Solver::TCRef ref) const {
+  return d_clauseId.find(ref) != d_clauseId.end();
+}
+
+template <class Solver>
+ClauseId TSatProof<Solver>::getClauseIdForCRef(
+    typename Solver::TCRef ref) const {
+  if (d_clauseId.find(ref) == d_clauseId.end()) {
+    Debug("proof:sat") << "Missing clause \n";
+  }
+  Assert(hasClauseIdForCRef(ref));
+  return d_clauseId.find(ref)->second;
+}
+
+template <class Solver>
+bool TSatProof<Solver>::hasClauseIdForLiteral(typename Solver::TLit lit) const {
+  return d_unitId.find(toInt(lit)) != d_unitId.end();
+}
+
+template <class Solver>
+ClauseId TSatProof<Solver>::getClauseIdForLiteral(
+    typename Solver::TLit lit) const {
+  Assert(hasClauseIdForLiteral(lit));
+  return d_unitId.find(toInt(lit))->second;
+}
+
+template <class Solver>
+bool TSatProof<Solver>::hasClauseRef(ClauseId id) const {
+  return d_idClause.find(id) != d_idClause.end();
+}
+
+template <class Solver>
+typename Solver::TCRef TSatProof<Solver>::getClauseRef(ClauseId id) const {
+  if (!hasClauseRef(id)) {
+    Debug("proof:sat") << "proof:getClauseRef cannot find clause " << id << " "
+                       << ((d_deleted.find(id) != d_deleted.end()) ? "deleted"
+                                                                   : "")
+                       << (isUnit(id) ? "Unit" : "") << std::endl;
+  }
+  Assert(hasClauseRef(id));
+  return d_idClause.find(id)->second;
+}
+
+template <class Solver>
+const typename Solver::TClause& TSatProof<Solver>::getClause(
+    typename Solver::TCRef ref) const {
+  Assert(ref != Solver::TCRef_Undef);
+  Assert(ref >= 0 && ref < d_solver->ca.size());
+  return d_solver->ca[ref];
+}
+
+template <class Solver>
+void TSatProof<Solver>::getLitVec(ClauseId id, LitVector& vec) {
+  if (isUnit(id)) {
+    typename Solver::TLit lit = getUnit(id);
+    vec.push_back(lit);
+    return;
+  }
+  if (isAssumptionConflict(id)) {
+    vec = *(d_assumptionConflictsDebug[id]);
+    return;
+  }
+  typename Solver::TCRef cref = getClauseRef(id);
+  const typename Solver::TClause& cl = getClause(cref);
+  for (int i = 0; i < cl.size(); ++i) {
+    vec.push_back(cl[i]);
+  }
+}
+
+template <class Solver>
+bool TSatProof<Solver>::isUnit(ClauseId id) const {
+  return d_idUnit.find(id) != d_idUnit.end();
+}
+
+template <class Solver>
+typename Solver::TLit TSatProof<Solver>::getUnit(ClauseId id) const {
+  Assert(isUnit(id));
+  return d_idUnit.find(id)->second;
+}
+
+template <class Solver>
+bool TSatProof<Solver>::isUnit(typename Solver::TLit lit) const {
+  return d_unitId.find(toInt(lit)) != d_unitId.end();
+}
+
+template <class Solver>
+ClauseId TSatProof<Solver>::getUnitId(typename Solver::TLit lit) const {
+  Assert(isUnit(lit));
+  return d_unitId.find(toInt(lit))->second;
+}
+
+template <class Solver>
+bool TSatProof<Solver>::hasResolutionChain(ClauseId id) const {
+  return d_resolutionChains.find(id) != d_resolutionChains.end();
+}
+
+template <class Solver>
+const typename TSatProof<Solver>::ResolutionChain&
+TSatProof<Solver>::getResolutionChain(ClauseId id) const {
+  Assert(hasResolutionChain(id));
+  const ResolutionChain* chain = d_resolutionChains.find(id)->second;
+  return *chain;
+}
+
+template <class Solver>
+typename TSatProof<Solver>::ResolutionChain*
+TSatProof<Solver>::getMutableResolutionChain(ClauseId id) {
+  Assert(hasResolutionChain(id));
+  ResolutionChain* chain = d_resolutionChains.find(id)->second;
+  return chain;
+}
+
+template <class Solver>
+bool TSatProof<Solver>::isInputClause(ClauseId id) const {
+  return d_inputClauses.find(id) != d_inputClauses.end();
+}
+
+template <class Solver>
+bool TSatProof<Solver>::isLemmaClause(ClauseId id) const {
+  return d_lemmaClauses.find(id) != d_lemmaClauses.end();
+}
+
+template <class Solver>
+bool TSatProof<Solver>::isAssumptionConflict(ClauseId id) const {
+  return d_assumptionConflicts.find(id) != d_assumptionConflicts.end();
+}
+
+template <class Solver>
+void TSatProof<Solver>::print(ClauseId id) const {
+  if (d_deleted.find(id) != d_deleted.end()) {
+    Debug("proof:sat") << "del" << id;
+  } else if (isUnit(id)) {
+    printLit<Solver>(getUnit(id));
+  } else if (id == d_emptyClauseId) {
+    Debug("proof:sat") << "empty " << std::endl;
+  } else {
+    typename Solver::TCRef ref = getClauseRef(id);
+    printClause<Solver>(getClause(ref));
+  }
+}
+
+template <class Solver>
+void TSatProof<Solver>::printRes(ClauseId id) const {
+  Assert(hasResolutionChain(id));
+  Debug("proof:sat") << "id " << id << ": ";
+  printRes(getResolutionChain(id));
+}
+
+template <class Solver>
+void TSatProof<Solver>::printRes(const ResolutionChain& res) const {
+  ClauseId start_id = res.getStart();
+
+  if (Debug.isOn("proof:sat")) {
+    Debug("proof:sat") << "(";
+    print(start_id);
+  }
+
+  const typename ResolutionChain::ResSteps& steps = res.getSteps();
+  for (unsigned i = 0; i < steps.size(); i++) {
+    typename Solver::TLit v = steps[i].lit;
+    ClauseId id = steps[i].id;
+
+    if (Debug.isOn("proof:sat")) {
+      Debug("proof:sat") << "[";
+      printLit<Solver>(v);
+      Debug("proof:sat") << "] ";
+      print(id);
+    }
+  }
+  Debug("proof:sat") << ") \n";
+}
+
+/// registration methods
+template <class Solver>
+ClauseId TSatProof<Solver>::registerClause(typename Solver::TCRef clause,
+                                           ClauseKind kind) {
+  Assert(clause != Solver::TCRef_Undef);
+  typename ClauseIdMap::iterator it = d_clauseId.find(clause);
+  if (it == d_clauseId.end()) {
+    ClauseId newId = ProofManager::currentPM()->nextId();
+    d_clauseId.insert(std::make_pair(clause, newId));
+    d_idClause.insert(std::make_pair(newId, clause));
+    if (kind == INPUT) {
+      Assert(d_inputClauses.find(newId) == d_inputClauses.end());
+      d_inputClauses.insert(newId);
+    }
+    if (kind == THEORY_LEMMA) {
+      Assert(d_lemmaClauses.find(newId) == d_lemmaClauses.end());
+      d_lemmaClauses.insert(newId);
+      Debug("pf::sat") << "TSatProof::registerClause registering a new lemma clause: "
+                       << newId << " = " << *buildClause(newId)
+                       << std::endl;
+    }
+  }
+
+  ClauseId id = d_clauseId[clause];
+  Assert(kind != INPUT || d_inputClauses.count(id));
+  Assert(kind != THEORY_LEMMA || d_lemmaClauses.count(id));
+
+  Debug("proof:sat:detailed") << "registerClause CRef: " << clause
+                              << " id: " << d_clauseId[clause]
+                              << "                kind: " << kind << "\n";
+  // ProofManager::currentPM()->setRegisteredClauseId( d_clauseId[clause] );
+  return id;
+}
+
+template <class Solver>
+ClauseId TSatProof<Solver>::registerUnitClause(typename Solver::TLit lit,
+                                               ClauseKind kind) {
+  Debug("cores") << "registerUnitClause " << kind << std::endl;
+  typename UnitIdMap::iterator it = d_unitId.find(toInt(lit));
+  if (it == d_unitId.end()) {
+    ClauseId newId = ProofManager::currentPM()->nextId();
+    d_unitId.insert(std::make_pair(toInt(lit), newId));
+    d_idUnit.insert(std::make_pair(newId, lit));
+
+    if (kind == INPUT) {
+      Assert(d_inputClauses.find(newId) == d_inputClauses.end());
+      d_inputClauses.insert(newId);
+    }
+    if (kind == THEORY_LEMMA) {
+      Assert(d_lemmaClauses.find(newId) == d_lemmaClauses.end());
+      Debug("pf::sat") << "TSatProof::registerUnitClause: registering a new lemma (UNIT CLAUSE): "
+                       << lit
+                       << std::endl;
+      d_lemmaClauses.insert(newId);
+    }
+  }
+  ClauseId id = d_unitId[toInt(lit)];
+  Assert(kind != INPUT || d_inputClauses.count(id));
+  Assert(kind != THEORY_LEMMA || d_lemmaClauses.count(id));
+  Debug("proof:sat:detailed") << "registerUnitClause id: " << id
+                              << " kind: " << kind << "\n";
+  // ProofManager::currentPM()->setRegisteredClauseId( d_unitId[toInt(lit)] );
+  return id;
+}
+template <class Solver>
+void TSatProof<Solver>::registerTrueLit(const typename Solver::TLit lit) {
+  Assert(d_trueLit == ClauseIdUndef);
+  d_trueLit = registerUnitClause(lit, INPUT);
+}
+
+template <class Solver>
+void TSatProof<Solver>::registerFalseLit(const typename Solver::TLit lit) {
+  Assert(d_falseLit == ClauseIdUndef);
+  d_falseLit = registerUnitClause(lit, INPUT);
+}
+
+template <class Solver>
+ClauseId TSatProof<Solver>::getTrueUnit() const {
+  Assert(d_trueLit != ClauseIdUndef);
+  return d_trueLit;
+}
+
+template <class Solver>
+ClauseId TSatProof<Solver>::getFalseUnit() const {
+  Assert(d_falseLit != ClauseIdUndef);
+  return d_falseLit;
+}
+
+template <class Solver>
+void TSatProof<Solver>::registerAssumption(const typename Solver::TVar var) {
+  Assert(d_assumptions.find(var) == d_assumptions.end());
+  d_assumptions.insert(var);
+}
+
+template <class Solver>
+ClauseId TSatProof<Solver>::registerAssumptionConflict(
+    const typename Solver::TLitVec& confl) {
+  Debug("proof:sat:detailed") << "registerAssumptionConflict " << std::endl;
+  // Uniqueness is checked in the bit-vector proof
+  // should be vars
+  for (int i = 0; i < confl.size(); ++i) {
+    Assert(d_assumptions.find(var(confl[i])) != d_assumptions.end());
+  }
+  ClauseId new_id = ProofManager::currentPM()->nextId();
+  d_assumptionConflicts.insert(new_id);
+  LitVector* vec_confl = new LitVector(confl.size());
+  for (int i = 0; i < confl.size(); ++i) {
+    vec_confl->operator[](i) = confl[i];
+  }
+  if (Debug.isOn("proof:sat:detailed")) {
+    printClause<Solver>(*vec_confl);
+    Debug("proof:sat:detailed") << "\n";
+  }
+
+  d_assumptionConflictsDebug[new_id] = vec_confl;
+  return new_id;
+}
+
+template <class Solver>
+void TSatProof<Solver>::removedDfs(typename Solver::TLit lit,
+                                   LitSet* removedSet, LitVector& removeStack,
+                                   LitSet& inClause, LitSet& seen) {
+  // if we already added the literal return
+  if (seen.count(lit)) {
+    return;
+  }
+
+  typename Solver::TCRef reason_ref = d_solver->reason(var(lit));
+  if (reason_ref == Solver::TCRef_Undef) {
+    seen.insert(lit);
+    removeStack.push_back(lit);
+    return;
+  }
+
+  int size = getClause(reason_ref).size();
+  for (int i = 1; i < size; i++) {
+    typename Solver::TLit v = getClause(reason_ref)[i];
+    if (inClause.count(v) == 0 && seen.count(v) == 0) {
+      removedDfs(v, removedSet, removeStack, inClause, seen);
+    }
+  }
+  if (seen.count(lit) == 0) {
+    seen.insert(lit);
+    removeStack.push_back(lit);
+  }
+}
+
+template <class Solver>
+void TSatProof<Solver>::removeRedundantFromRes(ResChain<Solver>* res,
+                                               ClauseId id) {
+  LitSet* removed = res->getRedundant();
+  if (removed == NULL) {
+    return;
+  }
+
+  LitSet inClause;
+  createLitSet(id, inClause);
+
+  LitVector removeStack;
+  LitSet seen;
+  for (typename LitSet::iterator it = removed->begin(); it != removed->end();
+       ++it) {
+    removedDfs(*it, removed, removeStack, inClause, seen);
+  }
+
+  for (int i = removeStack.size() - 1; i >= 0; --i) {
+    typename Solver::TLit lit = removeStack[i];
+    typename Solver::TCRef reason_ref = d_solver->reason(var(lit));
+    ClauseId reason_id;
+
+    if (reason_ref == Solver::TCRef_Undef) {
+      Assert(isUnit(~lit));
+      reason_id = getUnitId(~lit);
+    } else {
+      reason_id = registerClause(reason_ref, LEARNT);
+    }
+    res->addStep(lit, reason_id, !sign(lit));
+  }
+  removed->clear();
+}
+
+template <class Solver>
+void TSatProof<Solver>::registerResolution(ClauseId id, ResChain<Solver>* res) {
+  Assert(res != NULL);
+
+  removeRedundantFromRes(res, id);
+  Assert(res->redundantRemoved());
+
+  // Because the SAT solver can add the same clause multiple times, it
+  // could be the case that a resolution chain for this clause already
+  // exists (e.g. when removing units in addClause).
+  if (hasResolutionChain(id)) {
+    ResChain<Solver>* current = d_resolutionChains.find(id)->second;
+    delete current;
+    d_resolutionChains.erase(id);
+  }
+  Assert(!hasResolutionChain(id));
+
+  d_resolutionChains.insert(std::make_pair(id, res));
+  if (Debug.isOn("proof:sat")) {
+    printRes(id);
+  }
+  if (d_checkRes) {
+    Assert(checkResolution(id));
+  }
+
+  PSTATS(uint64_t resolutionSteps =
+             static_cast<uint64_t>(res.getSteps().size());
+         d_statistics.d_resChainLengths << resolutionSteps;
+         d_statistics.d_avgChainLength.addEntry(resolutionSteps);
+         ++(d_statistics.d_numLearnedClauses);)
+}
+
+/// recording resolutions
+template <class Solver>
+void TSatProof<Solver>::startResChain(typename Solver::TCRef start) {
+  ClauseId id = getClauseIdForCRef(start);
+  ResolutionChain* res = new ResolutionChain(id);
+  d_resStack.push_back(res);
+}
+
+template <class Solver>
+void TSatProof<Solver>::startResChain(typename Solver::TLit start) {
+  ClauseId id = getUnitId(start);
+  ResolutionChain* res = new ResolutionChain(id);
+  d_resStack.push_back(res);
+}
+
+template <class Solver>
+void TSatProof<Solver>::addResolutionStep(typename Solver::TLit lit,
+                                          typename Solver::TCRef clause,
+                                          bool sign) {
+  ClauseId id = registerClause(clause, LEARNT);
+  ResChain<Solver>* res = d_resStack.back();
+  res->addStep(lit, id, sign);
+}
+
+template <class Solver>
+void TSatProof<Solver>::endResChain(ClauseId id) {
+  Debug("proof:sat:detailed") << "endResChain " << id << "\n";
+  Assert(d_resStack.size() > 0);
+  ResChain<Solver>* res = d_resStack.back();
+  registerResolution(id, res);
+  d_resStack.pop_back();
+}
+
+// template <class Solver>
+// void TSatProof<Solver>::endResChain(typename Solver::TCRef clause) {
+//   Assert(d_resStack.size() > 0);
+//   ClauseId id = registerClause(clause, LEARNT);
+//   ResChain<Solver>* res = d_resStack.back();
+//   registerResolution(id, res);
+//   d_resStack.pop_back();
+// }
+
+template <class Solver>
+void TSatProof<Solver>::endResChain(typename Solver::TLit lit) {
+  Assert(d_resStack.size() > 0);
+  ClauseId id = registerUnitClause(lit, LEARNT);
+  Debug("proof:sat:detailed") << "endResChain unit " << id << "\n";
+  ResolutionChain* res = d_resStack.back();
+  d_glueMap[id] = 1;
+  registerResolution(id, res);
+  d_resStack.pop_back();
+}
+
+template <class Solver>
+void TSatProof<Solver>::cancelResChain() {
+  Assert(d_resStack.size() > 0);
+  ResolutionChain* back = d_resStack.back();
+  delete back;
+  d_resStack.pop_back();
+}
+
+template <class Solver>
+void TSatProof<Solver>::storeLitRedundant(typename Solver::TLit lit) {
+  Assert(d_resStack.size() > 0);
+  ResolutionChain* res = d_resStack.back();
+  res->addRedundantLit(lit);
+}
+
+/// constructing resolutions
+template <class Solver>
+void TSatProof<Solver>::resolveOutUnit(typename Solver::TLit lit) {
+  ClauseId id = resolveUnit(~lit);
+  ResChain<Solver>* res = d_resStack.back();
+  res->addStep(lit, id, !sign(lit));
+}
+template <class Solver>
+void TSatProof<Solver>::storeUnitResolution(typename Solver::TLit lit) {
+  Debug("cores") << "STORE UNIT RESOLUTION" << std::endl;
+  resolveUnit(lit);
+}
+template <class Solver>
+ClauseId TSatProof<Solver>::resolveUnit(typename Solver::TLit lit) {
+  // first check if we already have a resolution for lit
+  if (isUnit(lit)) {
+    ClauseId id = getClauseIdForLiteral(lit);
+    Assert(hasResolutionChain(id) || isInputClause(id) || isLemmaClause(id));
+    return id;
+  }
+  typename Solver::TCRef reason_ref = d_solver->reason(var(lit));
+  Assert(reason_ref != Solver::TCRef_Undef);
+
+  ClauseId reason_id = registerClause(reason_ref, LEARNT);
+
+  ResChain<Solver>* res = new ResChain<Solver>(reason_id);
+  // Here, the call to resolveUnit() can reallocate memory in the
+  // clause allocator.  So reload reason ptr each time.
+  const typename Solver::TClause& initial_reason = getClause(reason_ref);
+  size_t current_reason_size = initial_reason.size();
+  for (size_t i = 0; i < current_reason_size; i++) {
+    const typename Solver::TClause& current_reason = getClause(reason_ref);
+    current_reason_size = current_reason.size();
+    typename Solver::TLit l = current_reason[i];
+    if (lit != l) {
+      ClauseId res_id = resolveUnit(~l);
+      res->addStep(l, res_id, !sign(l));
+    }
+  }
+  ClauseId unit_id = registerUnitClause(lit, LEARNT);
+  registerResolution(unit_id, res);
+  return unit_id;
+}
+template <class Solver>
+void TSatProof<Solver>::toStream(std::ostream& out) {
+  Debug("proof:sat") << "TSatProof<Solver>::printProof\n";
+  Unimplemented("native proof printing not supported yet");
+}
+
+template <class Solver>
+ClauseId TSatProof<Solver>::storeUnitConflict(
+    typename Solver::TLit conflict_lit, ClauseKind kind) {
+  Debug("cores") << "STORE UNIT CONFLICT" << std::endl;
+  Assert(!d_storedUnitConflict);
+  d_unitConflictId = registerUnitClause(conflict_lit, kind);
+  d_storedUnitConflict = true;
+  Debug("proof:sat:detailed") << "storeUnitConflict " << d_unitConflictId
+                              << "\n";
+  return d_unitConflictId;
+}
+
+template <class Solver>
+void TSatProof<Solver>::finalizeProof(typename Solver::TCRef conflict_ref) {
+  Assert(d_resStack.size() == 0);
+  Assert(conflict_ref != Solver::TCRef_Undef);
+  ClauseId conflict_id;
+  if (conflict_ref == Solver::TCRef_Lazy) {
+    Assert(d_storedUnitConflict);
+    conflict_id = d_unitConflictId;
+
+    ResChain<Solver>* res = new ResChain<Solver>(conflict_id);
+    typename Solver::TLit lit = d_idUnit[conflict_id];
+    ClauseId res_id = resolveUnit(~lit);
+    res->addStep(lit, res_id, !sign(lit));
+
+    registerResolution(d_emptyClauseId, res);
+
+    return;
+  } else {
+    Assert(!d_storedUnitConflict);
+    conflict_id = registerClause(conflict_ref, LEARNT);  // FIXME
+  }
+
+  if (Debug.isOn("proof:sat")) {
+    Debug("proof:sat") << "proof::finalizeProof Final Conflict ";
+    print(conflict_id);
+  }
+
+  ResChain<Solver>* res = new ResChain<Solver>(conflict_id);
+  // Here, the call to resolveUnit() can reallocate memory in the
+  // clause allocator.  So reload conflict ptr each time.
+  size_t conflict_size = getClause(conflict_ref).size();
+  for (size_t i = 0; i < conflict_size; ++i) {
+    const typename Solver::TClause& conflict = getClause(conflict_ref);
+    typename Solver::TLit lit = conflict[i];
+    ClauseId res_id = resolveUnit(~lit);
+    res->addStep(lit, res_id, !sign(lit));
+    conflict_size = conflict.size();
+  }
+  registerResolution(d_emptyClauseId, res);
+}
+
+/// CRef manager
+template <class Solver>
+void TSatProof<Solver>::updateCRef(typename Solver::TCRef oldref,
+                                   typename Solver::TCRef newref) {
+  if (d_clauseId.find(oldref) == d_clauseId.end()) {
+    return;
+  }
+  ClauseId id = getClauseIdForCRef(oldref);
+  Assert(d_temp_clauseId.find(newref) == d_temp_clauseId.end());
+  Assert(d_temp_idClause.find(id) == d_temp_idClause.end());
+  d_temp_clauseId[newref] = id;
+  d_temp_idClause[id] = newref;
+}
+
+template <class Solver>
+void TSatProof<Solver>::finishUpdateCRef() {
+  d_clauseId.swap(d_temp_clauseId);
+  d_temp_clauseId.clear();
+
+  d_idClause.swap(d_temp_idClause);
+  d_temp_idClause.clear();
+}
+
+template <class Solver>
+void TSatProof<Solver>::markDeleted(typename Solver::TCRef clause) {
+  if (hasClauseIdForCRef(clause)) {
+    ClauseId id = getClauseIdForCRef(clause);
+    Assert(d_deleted.find(id) == d_deleted.end());
+    d_deleted.insert(id);
+    if (isLemmaClause(id)) {
+      const typename Solver::TClause& minisat_cl = getClause(clause);
+      prop::SatClause* sat_cl = new prop::SatClause();
+      toSatClause<Solver>(minisat_cl, *sat_cl);
+      d_deletedTheoryLemmas.insert(std::make_pair(id, sat_cl));
+    }
+  }
+}
+
+// template<>
+// void toSatClause< ::BVMinisat::Solver> (const BVMinisat::Solver::TClause&
+// minisat_cl,
+//                                         prop::SatClause& sat_cl) {
+
+//   prop::BVMinisatSatSolver::toSatClause(minisat_cl, sat_cl);
+// }
+
+template <class Solver>
+void TSatProof<Solver>::constructProof(ClauseId conflict) {
+  d_satProofConstructed = true;
+  collectClauses(conflict);
+}
+
+template <class Solver>
+bool TSatProof<Solver>::proofConstructed() const {
+  return d_satProofConstructed;
+}
+
+template <class Solver>
+std::string TSatProof<Solver>::clauseName(ClauseId id) {
+  std::ostringstream os;
+  if (isInputClause(id)) {
+    os << ProofManager::getInputClauseName(id, d_name);
+    return os.str();
+  } else if (isLemmaClause(id)) {
+    os << ProofManager::getLemmaClauseName(id, d_name);
+    return os.str();
+  } else {
+    os << ProofManager::getLearntClauseName(id, d_name);
+    return os.str();
+  }
+}
+
+template <class Solver>
+prop::SatClause* TSatProof<Solver>::buildClause(ClauseId id) {
+  if (isUnit(id)) {
+    typename Solver::TLit lit = getUnit(id);
+    prop::SatLiteral sat_lit = toSatLiteral<Solver>(lit);
+    prop::SatClause* clause = new prop::SatClause();
+    clause->push_back(sat_lit);
+    return clause;
+  }
+
+  if (isDeleted(id)) {
+    prop::SatClause* clause = d_deletedTheoryLemmas.find(id)->second;
+    return clause;
+  }
+
+  typename Solver::TCRef ref = getClauseRef(id);
+  const typename Solver::TClause& minisat_cl = getClause(ref);
+  prop::SatClause* clause = new prop::SatClause();
+  toSatClause<Solver>(minisat_cl, *clause);
+  return clause;
+}
+
+template <class Solver>
+bool TSatProof<Solver>::derivedEmptyClause() const {
+  return hasResolutionChain(d_emptyClauseId);
+}
+
+template <class Solver>
+void TSatProof<Solver>::collectClauses(ClauseId id) {
+  if (d_seenInputs.find(id) != d_seenInputs.end() ||
+      d_seenLemmas.find(id) != d_seenLemmas.end() ||
+      d_seenLearnt.find(id) != d_seenLearnt.end()) {
+    return;
+  }
+
+  if (isInputClause(id)) {
+    d_seenInputs.insert(std::make_pair(id, buildClause(id)));
+    return;
+  } else if (isLemmaClause(id)) {
+    d_seenLemmas.insert(std::make_pair(id, buildClause(id)));
+    return;
+  } else if (!isAssumptionConflict(id)) {
+    d_seenLearnt.insert(id);
+  }
+
+  const ResolutionChain& res = getResolutionChain(id);
+  const typename ResolutionChain::ResSteps& steps = res.getSteps();
+  PSTATS(d_statistics.d_usedResChainLengths
+             << ((uint64_t)steps.size());
+         d_statistics.d_usedClauseGlue << ((uint64_t)d_glueMap[id]););
+  ClauseId start = res.getStart();
+  collectClauses(start);
+
+  for (size_t i = 0; i < steps.size(); i++) {
+    collectClauses(steps[i].id);
+  }
+}
+
+template <class Solver>
+void TSatProof<Solver>::collectClausesUsed(IdToSatClause& inputs,
+                                           IdToSatClause& lemmas) {
+  inputs = d_seenInputs;
+  lemmas = d_seenLemmas;
+  PSTATS(d_statistics.d_numLearnedInProof.setData(d_seenLearnt.size());
+         d_statistics.d_numLemmasInProof.setData(d_seenLemmas.size()););
+}
+
+template <class Solver>
+void TSatProof<Solver>::storeClauseGlue(ClauseId clause, int glue) {
+  Assert(d_glueMap.find(clause) == d_glueMap.end());
+  d_glueMap.insert(std::make_pair(clause, glue));
+}
+
+template <class Solver>
+TSatProof<Solver>::Statistics::Statistics(const std::string& prefix)
+    : d_numLearnedClauses("satproof::" + prefix + "::NumLearnedClauses", 0),
+      d_numLearnedInProof("satproof::" + prefix + "::NumLearnedInProof", 0),
+      d_numLemmasInProof("satproof::" + prefix + "::NumLemmasInProof", 0),
+      d_avgChainLength("satproof::" + prefix + "::AvgResChainLength"),
+      d_resChainLengths("satproof::" + prefix + "::ResChainLengthsHist"),
+      d_usedResChainLengths("satproof::" + prefix +
+                            "::UsedResChainLengthsHist"),
+      d_clauseGlue("satproof::" + prefix + "::ClauseGlueHist"),
+      d_usedClauseGlue("satproof::" + prefix + "::UsedClauseGlueHist") {
+  smtStatisticsRegistry()->registerStat(&d_numLearnedClauses);
+  smtStatisticsRegistry()->registerStat(&d_numLearnedInProof);
+  smtStatisticsRegistry()->registerStat(&d_numLemmasInProof);
+  smtStatisticsRegistry()->registerStat(&d_avgChainLength);
+  smtStatisticsRegistry()->registerStat(&d_resChainLengths);
+  smtStatisticsRegistry()->registerStat(&d_usedResChainLengths);
+  smtStatisticsRegistry()->registerStat(&d_clauseGlue);
+  smtStatisticsRegistry()->registerStat(&d_usedClauseGlue);
+}
+
+template <class Solver>
+TSatProof<Solver>::Statistics::~Statistics() {
+  smtStatisticsRegistry()->unregisterStat(&d_numLearnedClauses);
+  smtStatisticsRegistry()->unregisterStat(&d_numLearnedInProof);
+  smtStatisticsRegistry()->unregisterStat(&d_numLemmasInProof);
+  smtStatisticsRegistry()->unregisterStat(&d_avgChainLength);
+  smtStatisticsRegistry()->unregisterStat(&d_resChainLengths);
+  smtStatisticsRegistry()->unregisterStat(&d_usedResChainLengths);
+  smtStatisticsRegistry()->unregisterStat(&d_clauseGlue);
+  smtStatisticsRegistry()->unregisterStat(&d_usedClauseGlue);
+}
+
+/// LFSCSatProof class
+template <class Solver>
+void LFSCSatProof<Solver>::printResolution(ClauseId id, std::ostream& out,
+                                           std::ostream& paren) {
+  out << "(satlem_simplify _ _ _";
+  paren << ")";
+
+  const ResChain<Solver>& res = this->getResolutionChain(id);
+  const typename ResChain<Solver>::ResSteps& steps = res.getSteps();
+
+  for (int i = steps.size() - 1; i >= 0; i--) {
+    out << " (";
+    out << (steps[i].sign ? "R" : "Q") << " _ _";
+  }
+
+  ClauseId start_id = res.getStart();
+  out << " " << this->clauseName(start_id);
+
+  for (unsigned i = 0; i < steps.size(); i++) {
+    prop::SatVariable v =
+        prop::MinisatSatSolver::toSatVariable(var(steps[i].lit));
+    out << " " << this->clauseName(steps[i].id) << " "
+        << ProofManager::getVarName(v, this->d_name) << ")";
+  }
+
+  if (id == this->d_emptyClauseId) {
+    out <<" (\\ empty empty)";
+    return;
+  }
+
+  out << " (\\ " << this->clauseName(id) << "\n";   // bind to lemma name
+  paren << ")";
+}
+
+/// LFSCSatProof class
+template <class Solver>
+void LFSCSatProof<Solver>::printAssumptionsResolution(ClauseId id,
+                                                      std::ostream& out,
+                                                      std::ostream& paren) {
+  Assert(this->isAssumptionConflict(id));
+  // print the resolution proving the assumption conflict
+  printResolution(id, out, paren);
+  // resolve out assumptions to prove empty clause
+  out << "(satlem_simplify _ _ _ ";
+  std::vector<typename Solver::TLit>& confl =
+      *(this->d_assumptionConflictsDebug[id]);
+
+  Assert(confl.size());
+
+  for (unsigned i = 0; i < confl.size(); ++i) {
+    prop::SatLiteral lit = toSatLiteral<Solver>(confl[i]);
+    out << "(";
+    out << (lit.isNegated() ? "Q" : "R") << " _ _ ";
+  }
+
+  out << this->clauseName(id) << " ";
+  for (int i = confl.size() - 1; i >= 0; --i) {
+    prop::SatLiteral lit = toSatLiteral<Solver>(confl[i]);
+    prop::SatVariable v = lit.getSatVariable();
+    out << "unit" << v << " ";
+    out << ProofManager::getVarName(v, this->d_name) << ")";
+  }
+  out << "(\\ e e)\n";
+  paren << ")";
+}
+
+template <class Solver>
+void LFSCSatProof<Solver>::printResolutions(std::ostream& out,
+                                            std::ostream& paren) {
+  Debug("bv-proof") << "; print resolutions" << std::endl;
+  std::set<ClauseId>::iterator it = this->d_seenLearnt.begin();
+  for (; it != this->d_seenLearnt.end(); ++it) {
+    if (*it != this->d_emptyClauseId) {
+      Debug("bv-proof") << "; print resolution for " << *it << std::endl;
+      printResolution(*it, out, paren);
+    }
+  }
+  Debug("bv-proof") << "; done print resolutions" << std::endl;
+}
+
+template <class Solver>
+void LFSCSatProof<Solver>::printResolutionEmptyClause(std::ostream& out,
+                                                      std::ostream& paren) {
+  printResolution(this->d_emptyClauseId, out, paren);
+}
+
+inline std::ostream& operator<<(std::ostream& out, CVC4::ClauseKind k) {
+  switch (k) {
+    case CVC4::INPUT:
+      out << "INPUT";
+      break;
+    case CVC4::THEORY_LEMMA:
+      out << "THEORY_LEMMA";
+      break;
+    case CVC4::LEARNT:
+      out << "LEARNT";
+      break;
+    default:
+      out << "ClauseKind Unknown! [" << unsigned(k) << "]";
+  }
+
+  return out;
+}
+
+} /* CVC4 namespace */
+
+#endif /* __CVC4__SAT__PROOF_IMPLEMENTATION_H */
diff --git a/src/proof/skolemization_manager.cpp b/src/proof/skolemization_manager.cpp
new file mode 100644
index 0000000..12fea82
--- /dev/null
+++ b/src/proof/skolemization_manager.cpp
@@ -0,0 +1,68 @@
+/*********************                                                        */
+/*! \file skolemization_manager.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Guy Katz
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+
+ ** \todo document this file
+
+ **/
+
+#include "proof/skolemization_manager.h"
+
+namespace CVC4 {
+
+void SkolemizationManager::registerSkolem(Node disequality, Node skolem) {
+  Debug("pf::pm") << "SkolemizationManager: registerSkolem: disequality = " << disequality << ", skolem = " << skolem << std::endl;
+
+  if (isSkolem(skolem)) {
+    Assert(d_skolemToDisequality[skolem] == disequality);
+    return;
+  }
+
+  d_disequalityToSkolem[disequality] = skolem;
+  d_skolemToDisequality[skolem] = disequality;
+}
+
+bool SkolemizationManager::hasSkolem(Node disequality) {
+  return (d_disequalityToSkolem.find(disequality) != d_disequalityToSkolem.end());
+}
+
+Node SkolemizationManager::getSkolem(Node disequality) {
+  Debug("pf::pm") << "SkolemizationManager: getSkolem( ";
+  Assert (d_disequalityToSkolem.find(disequality) != d_disequalityToSkolem.end());
+  Debug("pf::pm") << disequality << " ) = " << d_disequalityToSkolem[disequality] << std::endl;
+  return d_disequalityToSkolem[disequality];
+}
+
+Node SkolemizationManager::getDisequality(Node skolem) {
+  Assert (d_skolemToDisequality.find(skolem) != d_skolemToDisequality.end());
+  return d_skolemToDisequality[skolem];
+}
+
+bool SkolemizationManager::isSkolem(Node skolem) {
+  return (d_skolemToDisequality.find(skolem) != d_skolemToDisequality.end());
+}
+
+void SkolemizationManager::clear() {
+  Debug("pf::pm") << "SkolemizationManager: clear" << std::endl;
+  d_disequalityToSkolem.clear();
+  d_skolemToDisequality.clear();
+}
+
+std::hash_map<Node, Node, NodeHashFunction>::const_iterator SkolemizationManager::begin() {
+  return d_disequalityToSkolem.begin();
+}
+
+std::hash_map<Node, Node, NodeHashFunction>::const_iterator SkolemizationManager::end() {
+  return d_disequalityToSkolem.end();
+}
+
+} /* CVC4  namespace */
diff --git a/src/proof/skolemization_manager.h b/src/proof/skolemization_manager.h
new file mode 100644
index 0000000..b026e21
--- /dev/null
+++ b/src/proof/skolemization_manager.h
@@ -0,0 +1,54 @@
+/*********************                                                        */
+/*! \file skolemization_manager.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Guy Katz
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+
+ ** \todo document this file
+
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__SKOLEMIZATION_MANAGER_H
+#define __CVC4__SKOLEMIZATION_MANAGER_H
+
+#include <iostream>
+#include <map>
+#include "proof/proof.h"
+#include "util/proof.h"
+#include "expr/node.h"
+#include "theory/logic_info.h"
+#include "theory/substitutions.h"
+
+namespace CVC4 {
+
+class SkolemizationManager {
+public:
+  void registerSkolem(Node disequality, Node skolem);
+  bool hasSkolem(Node disequality);
+  Node getSkolem(Node disequality);
+  Node getDisequality(Node skolem);
+  bool isSkolem(Node skolem);
+  void clear();
+
+  std::hash_map<Node, Node, NodeHashFunction>::const_iterator begin();
+  std::hash_map<Node, Node, NodeHashFunction>::const_iterator end();
+
+private:
+  std::hash_map<Node, Node, NodeHashFunction> d_disequalityToSkolem;
+  std::hash_map<Node, Node, NodeHashFunction> d_skolemToDisequality;
+};
+
+}/* CVC4 namespace */
+
+
+
+#endif /* __CVC4__SKOLEMIZATION_MANAGER_H */
diff --git a/src/proof/theory_proof.cpp b/src/proof/theory_proof.cpp
new file mode 100644
index 0000000..e245117
--- /dev/null
+++ b/src/proof/theory_proof.cpp
@@ -0,0 +1,1246 @@
+/*********************                                                        */
+/*! \file theory_proof.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Guy Katz, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+#include "proof/theory_proof.h"
+
+#include "base/cvc4_assert.h"
+#include "context/context.h"
+#include "options/bv_options.h"
+#include "options/proof_options.h"
+#include "proof/arith_proof.h"
+#include "proof/array_proof.h"
+#include "proof/bitvector_proof.h"
+#include "proof/clause_id.h"
+#include "proof/cnf_proof.h"
+#include "proof/proof_manager.h"
+#include "proof/proof_output_channel.h"
+#include "proof/proof_utils.h"
+#include "proof/sat_proof.h"
+#include "proof/uf_proof.h"
+#include "prop/sat_solver_types.h"
+#include "smt/smt_engine.h"
+#include "smt/smt_engine_scope.h"
+#include "smt_util/node_visitor.h"
+#include "theory/arrays/theory_arrays.h"
+#include "theory/bv/theory_bv.h"
+#include "theory/output_channel.h"
+#include "theory/term_registration_visitor.h"
+#include "theory/uf/equality_engine.h"
+#include "theory/uf/theory_uf.h"
+#include "theory/valuation.h"
+#include "util/hash.h"
+#include "util/proof.h"
+
+
+namespace CVC4 {
+
+unsigned CVC4::ProofLetCount::counter = 0;
+static unsigned LET_COUNT = 1;
+
+TheoryProofEngine::TheoryProofEngine()
+  : d_registrationCache()
+  , d_theoryProofTable()
+{
+  d_theoryProofTable[theory::THEORY_BOOL] = new LFSCBooleanProof(this);
+}
+
+TheoryProofEngine::~TheoryProofEngine() {
+  TheoryProofTable::iterator it = d_theoryProofTable.begin();
+  TheoryProofTable::iterator end = d_theoryProofTable.end();
+  for (; it != end; ++it) {
+    delete it->second;
+  }
+}
+
+void TheoryProofEngine::registerTheory(theory::Theory* th) {
+  if (th) {
+    theory::TheoryId id = th->getId();
+    if(d_theoryProofTable.find(id) == d_theoryProofTable.end()) {
+
+      Trace("pf::tp") << "TheoryProofEngine::registerTheory: " << id << std::endl;
+
+      if (id == theory::THEORY_UF) {
+        d_theoryProofTable[id] = new LFSCUFProof((theory::uf::TheoryUF*)th, this);
+        return;
+      }
+
+      if (id == theory::THEORY_BV) {
+        BitVectorProof * bvp = new LFSCBitVectorProof((theory::bv::TheoryBV*)th, this);
+        d_theoryProofTable[id] = bvp;
+        return;
+      }
+
+      if (id == theory::THEORY_ARRAY) {
+        d_theoryProofTable[id] = new LFSCArrayProof((theory::arrays::TheoryArrays*)th, this);
+        return;
+      }
+
+      if (id == theory::THEORY_ARITH) {
+        d_theoryProofTable[id] = new LFSCArithProof((theory::arith::TheoryArith*)th, this);
+        return;
+      }
+
+      // TODO other theories
+    }
+  }
+}
+
+void TheoryProofEngine::finishRegisterTheory(theory::Theory* th) {
+  if (th) {
+    theory::TheoryId id = th->getId();
+    if (id == theory::THEORY_BV) {
+      Assert(d_theoryProofTable.find(id) != d_theoryProofTable.end());
+
+      BitVectorProof *bvp = (BitVectorProof *)d_theoryProofTable[id];
+      ((theory::bv::TheoryBV*)th)->setProofLog( bvp );
+      return;
+    }
+  }
+}
+
+TheoryProof* TheoryProofEngine::getTheoryProof(theory::TheoryId id) {
+  // The UF theory handles queries for the Builtin theory.
+  if (id == theory::THEORY_BUILTIN) {
+    Debug("pf::tp") << "TheoryProofEngine::getTheoryProof: BUILTIN --> UF" << std::endl;
+    id = theory::THEORY_UF;
+  }
+
+  Assert (d_theoryProofTable.find(id) != d_theoryProofTable.end());
+  return d_theoryProofTable[id];
+}
+
+void TheoryProofEngine::markTermForFutureRegistration(Expr term, theory::TheoryId id) {
+  d_exprToTheoryIds[term].insert(id);
+}
+
+void TheoryProofEngine::printConstantDisequalityProof(std::ostream& os, Expr c1, Expr c2, const ProofLetMap &globalLetMap) {
+  Assert(c1.isConst());
+  Assert(c2.isConst());
+
+  Assert(theory::Theory::theoryOf(c1) == theory::Theory::theoryOf(c2));
+  getTheoryProof(theory::Theory::theoryOf(c1))->printConstantDisequalityProof(os, c1, c2, globalLetMap);
+}
+
+void TheoryProofEngine::registerTerm(Expr term) {
+  Debug("pf::tp::register") << "TheoryProofEngine::registerTerm: registering term: " << term << std::endl;
+
+  if (d_registrationCache.count(term)) {
+    return;
+  }
+
+  Debug("pf::tp::register") << "TheoryProofEngine::registerTerm: registering NEW term: " << term << std::endl;
+
+  theory::TheoryId theory_id = theory::Theory::theoryOf(term);
+
+  Debug("pf::tp::register") << "Term's theory( " << term << " ) = " << theory_id << std::endl;
+
+  // don't need to register boolean terms
+  if (theory_id == theory::THEORY_BUILTIN ||
+      term.getKind() == kind::ITE) {
+    for (unsigned i = 0; i < term.getNumChildren(); ++i) {
+      registerTerm(term[i]);
+    }
+    d_registrationCache.insert(term);
+    return;
+  }
+
+  if (!supportedTheory(theory_id)) return;
+
+  // Register the term with its owner theory
+  getTheoryProof(theory_id)->registerTerm(term);
+
+  // A special case: the array theory needs to know of every skolem, even if
+  // it belongs to another theory (e.g., a BV skolem)
+  if (ProofManager::getSkolemizationManager()->isSkolem(term) && theory_id != theory::THEORY_ARRAY) {
+    Debug("pf::tp::register") << "TheoryProofEngine::registerTerm: registering a non-array skolem: " << term << std::endl;
+    getTheoryProof(theory::THEORY_ARRAY)->registerTerm(term);
+  }
+
+  d_registrationCache.insert(term);
+}
+
+theory::TheoryId TheoryProofEngine::getTheoryForLemma(const prop::SatClause* clause) {
+  ProofManager* pm = ProofManager::currentPM();
+
+  std::set<Node> nodes;
+  for(unsigned i = 0; i < clause->size(); ++i) {
+    prop::SatLiteral lit = (*clause)[i];
+    Node node = pm->getCnfProof()->getAtom(lit.getSatVariable());
+    Expr atom = node.toExpr();
+    if (atom.isConst()) {
+      Assert (atom == utils::mkTrue());
+      continue;
+    }
+
+    nodes.insert(lit.isNegated() ? node.notNode() : node);
+  }
+
+  // Ensure that the lemma is in the database.
+  Assert (pm->getCnfProof()->haveProofRecipe(nodes));
+  return pm->getCnfProof()->getProofRecipe(nodes).getTheory();
+}
+
+void LFSCTheoryProofEngine::bind(Expr term, ProofLetMap& map, Bindings& let_order) {
+  ProofLetMap::iterator it = map.find(term);
+  if (it != map.end()) {
+    ProofLetCount& count = it->second;
+    count.increment();
+    return;
+  }
+  for (unsigned i = 0; i < term.getNumChildren(); ++i) {
+    bind(term[i], map, let_order);
+  }
+  unsigned new_id = ProofLetCount::newId();
+  map[term] = ProofLetCount(new_id);
+  let_order.push_back(LetOrderElement(term, new_id));
+}
+
+void LFSCTheoryProofEngine::printLetTerm(Expr term, std::ostream& os) {
+  ProofLetMap map;
+  Bindings let_order;
+  bind(term, map, let_order);
+  std::ostringstream paren;
+  for (unsigned i = 0; i < let_order.size(); ++i) {
+    Expr current_expr = let_order[i].expr;
+    unsigned let_id = let_order[i].id;
+    ProofLetMap::const_iterator it = map.find(current_expr);
+    Assert (it != map.end());
+    unsigned let_count = it->second.count;
+    Assert(let_count);
+    // skip terms that only appear once
+    if (let_count <= LET_COUNT) {
+      continue;
+    }
+
+    os << "(@ let" <<let_id << " ";
+    printTheoryTerm(current_expr, os, map);
+    paren <<")";
+  }
+  unsigned last_let_id = let_order.back().id;
+  Expr last = let_order.back().expr;
+  unsigned last_count = map.find(last)->second.count;
+  if (last_count <= LET_COUNT) {
+    printTheoryTerm(last, os, map);
+  }
+  else {
+    os << " let" << last_let_id;
+  }
+  os << paren.str();
+}
+
+void LFSCTheoryProofEngine::printTheoryTerm(Expr term, std::ostream& os, const ProofLetMap& map) {
+  theory::TheoryId theory_id = theory::Theory::theoryOf(term);
+
+  // boolean terms and ITEs are special because they
+  // are common to all theories
+  if (theory_id == theory::THEORY_BUILTIN ||
+      term.getKind() == kind::ITE ||
+      term.getKind() == kind::EQUAL) {
+    printCoreTerm(term, os, map);
+    return;
+  }
+  // dispatch to proper theory
+  getTheoryProof(theory_id)->printOwnedTerm(term, os, map);
+}
+
+void LFSCTheoryProofEngine::printSort(Type type, std::ostream& os) {
+  if (type.isSort()) {
+    getTheoryProof(theory::THEORY_UF)->printOwnedSort(type, os);
+    return;
+  }
+  if (type.isBitVector()) {
+    getTheoryProof(theory::THEORY_BV)->printOwnedSort(type, os);
+    return;
+  }
+
+  if (type.isArray()) {
+    getTheoryProof(theory::THEORY_ARRAY)->printOwnedSort(type, os);
+    return;
+  }
+
+  if (type.isInteger() || type.isReal()) {
+    getTheoryProof(theory::THEORY_ARITH)->printOwnedSort(type, os);
+    return;
+  }
+
+  if (type.isBoolean()) {
+    getTheoryProof(theory::THEORY_BOOL)->printOwnedSort(type, os);
+    return;
+  }
+
+  Unreachable();
+}
+
+void LFSCTheoryProofEngine::performExtraRegistrations() {
+  ExprToTheoryIds::const_iterator it;
+  for (it = d_exprToTheoryIds.begin(); it != d_exprToTheoryIds.end(); ++it) {
+    if (d_registrationCache.count(it->first)) { // Only register if the term appeared
+      TheoryIdSet::const_iterator theoryIt;
+      for (theoryIt = it->second.begin(); theoryIt != it->second.end(); ++theoryIt) {
+        Debug("pf::tp") << "\tExtra registration of term " << it->first
+                        << " with theory: " << *theoryIt << std::endl;
+        Assert(supportedTheory(*theoryIt));
+        getTheoryProof(*theoryIt)->registerTerm(it->first);
+      }
+    }
+  }
+}
+
+void LFSCTheoryProofEngine::registerTermsFromAssertions() {
+  ProofManager::assertions_iterator it = ProofManager::currentPM()->begin_assertions();
+  ProofManager::assertions_iterator end = ProofManager::currentPM()->end_assertions();
+
+  for(; it != end; ++it) {
+    registerTerm(*it);
+  }
+
+  performExtraRegistrations();
+}
+
+void LFSCTheoryProofEngine::printAssertions(std::ostream& os, std::ostream& paren) {
+  Debug("pf::tp") << "LFSCTheoryProofEngine::printAssertions called" << std::endl << std::endl;
+
+  ProofManager::assertions_iterator it = ProofManager::currentPM()->begin_assertions();
+  ProofManager::assertions_iterator end = ProofManager::currentPM()->end_assertions();
+
+  for (; it != end; ++it) {
+    Debug("pf::tp") << "printAssertions: assertion is: " << *it << std::endl;
+    os << "(% " << ProofManager::currentPM()->getInputFormulaName(*it) << " (th_holds ";
+
+    // Assertions appear before the global let map, so we use a dummpMap to avoid letification here.
+    ProofLetMap dummyMap;
+
+    bool convertFromBool = (it->getType().isBoolean() && printsAsBool(*it));
+    if (convertFromBool) os << "(p_app ";
+    printBoundTerm(*it, os, dummyMap);
+    if (convertFromBool) os << ")";
+
+    os << ")\n";
+    paren << ")";
+  }
+
+  Debug("pf::tp") << "LFSCTheoryProofEngine::printAssertions done" << std::endl << std::endl;
+}
+
+void LFSCTheoryProofEngine::printLemmaRewrites(NodePairSet& rewrites,
+                                               std::ostream& os,
+                                               std::ostream& paren) {
+  Debug("pf::tp") << "LFSCTheoryProofEngine::printLemmaRewrites called" << std::endl << std::endl;
+
+  NodePairSet::const_iterator it;
+
+  for (it = rewrites.begin(); it != rewrites.end(); ++it) {
+    Debug("pf::tp") << "printLemmaRewrites: " << it->first << " --> " << it->second << std::endl;
+
+    Node n1 = it->first;
+    Node n2 = it->second;
+    Assert(n1.toExpr() == utils::mkFalse() ||
+           theory::Theory::theoryOf(n1) == theory::Theory::theoryOf(n2));
+
+    std::ostringstream rewriteRule;
+    rewriteRule << ".lrr" << d_assertionToRewrite.size();
+
+    os << "(th_let_pf _ ";
+    getTheoryProof(theory::Theory::theoryOf(n1))->printRewriteProof(os, n1, n2);
+    os << "(\\ " << rewriteRule.str() << "\n";
+
+    d_assertionToRewrite[it->first] = rewriteRule.str();
+    Debug("pf::tp") << "d_assertionToRewrite[" << it->first << "] = " << rewriteRule.str() << std::endl;
+    paren << "))";
+  }
+
+  Debug("pf::tp") << "LFSCTheoryProofEngine::printLemmaRewrites done" << std::endl << std::endl;
+}
+
+void LFSCTheoryProofEngine::printSortDeclarations(std::ostream& os, std::ostream& paren) {
+  Debug("pf::tp") << "LFSCTheoryProofEngine::printSortDeclarations called" << std::endl << std::endl;
+
+  TheoryProofTable::const_iterator it = d_theoryProofTable.begin();
+  TheoryProofTable::const_iterator end = d_theoryProofTable.end();
+  for (; it != end; ++it) {
+    it->second->printSortDeclarations(os, paren);
+  }
+
+  Debug("pf::tp") << "LFSCTheoryProofEngine::printSortDeclarations done" << std::endl << std::endl;
+}
+
+void LFSCTheoryProofEngine::printTermDeclarations(std::ostream& os, std::ostream& paren) {
+  Debug("pf::tp") << "LFSCTheoryProofEngine::printTermDeclarations called" << std::endl << std::endl;
+
+  TheoryProofTable::const_iterator it = d_theoryProofTable.begin();
+  TheoryProofTable::const_iterator end = d_theoryProofTable.end();
+  for (; it != end; ++it) {
+    it->second->printTermDeclarations(os, paren);
+  }
+
+  Debug("pf::tp") << "LFSCTheoryProofEngine::printTermDeclarations done" << std::endl << std::endl;
+}
+
+void LFSCTheoryProofEngine::printDeferredDeclarations(std::ostream& os, std::ostream& paren) {
+  Debug("pf::tp") << "LFSCTheoryProofEngine::printDeferredDeclarations called" << std::endl;
+
+  TheoryProofTable::const_iterator it = d_theoryProofTable.begin();
+  TheoryProofTable::const_iterator end = d_theoryProofTable.end();
+  for (; it != end; ++it) {
+    it->second->printDeferredDeclarations(os, paren);
+  }
+}
+
+void LFSCTheoryProofEngine::printAliasingDeclarations(std::ostream& os, std::ostream& paren, const ProofLetMap &globalLetMap) {
+  Debug("pf::tp") << "LFSCTheoryProofEngine::printAliasingDeclarations called" << std::endl;
+
+  TheoryProofTable::const_iterator it = d_theoryProofTable.begin();
+  TheoryProofTable::const_iterator end = d_theoryProofTable.end();
+  for (; it != end; ++it) {
+    it->second->printAliasingDeclarations(os, paren, globalLetMap);
+  }
+}
+
+void LFSCTheoryProofEngine::dumpTheoryLemmas(const IdToSatClause& lemmas) {
+  Debug("pf::dumpLemmas") << "Dumping ALL theory lemmas" << std::endl << std::endl;
+
+  ProofManager* pm = ProofManager::currentPM();
+  for (IdToSatClause::const_iterator it = lemmas.begin(); it != lemmas.end(); ++it) {
+    ClauseId id = it->first;
+    Debug("pf::dumpLemmas") << "**** \tLemma ID = " << id << std::endl;
+    const prop::SatClause* clause = it->second;
+    std::set<Node> nodes;
+    for(unsigned i = 0; i < clause->size(); ++i) {
+      prop::SatLiteral lit = (*clause)[i];
+      Node node = pm->getCnfProof()->getAtom(lit.getSatVariable());
+      if (node.isConst()) {
+        Assert (node.toExpr() == utils::mkTrue());
+        continue;
+      }
+      nodes.insert(lit.isNegated() ? node.notNode() : node);
+    }
+
+    LemmaProofRecipe recipe = pm->getCnfProof()->getProofRecipe(nodes);
+    recipe.dump("pf::dumpLemmas");
+  }
+
+  Debug("pf::dumpLemmas") << "Theory lemma printing DONE" << std::endl << std::endl;
+}
+
+// TODO: this function should be moved into the BV prover.
+void LFSCTheoryProofEngine::finalizeBvConflicts(const IdToSatClause& lemmas, std::ostream& os) {
+  // BitVector theory is special case: must know all conflicts needed
+  // ahead of time for resolution proof lemmas
+  std::vector<Expr> bv_lemmas;
+
+  for (IdToSatClause::const_iterator it = lemmas.begin(); it != lemmas.end(); ++it) {
+    const prop::SatClause* clause = it->second;
+
+    std::vector<Expr> conflict;
+    std::set<Node> conflictNodes;
+    for(unsigned i = 0; i < clause->size(); ++i) {
+      prop::SatLiteral lit = (*clause)[i];
+      Node node = ProofManager::currentPM()->getCnfProof()->getAtom(lit.getSatVariable());
+      Expr atom = node.toExpr();
+
+      // The literals (true) and (not false) are omitted from conflicts
+      if (atom.isConst()) {
+        Assert (atom == utils::mkTrue() ||
+                (atom == utils::mkFalse() && lit.isNegated()));
+        continue;
+      }
+
+      Expr expr_lit = lit.isNegated() ? atom.notExpr() : atom;
+      conflict.push_back(expr_lit);
+      conflictNodes.insert(lit.isNegated() ? node.notNode() : node);
+    }
+
+    LemmaProofRecipe recipe = ProofManager::currentPM()->getCnfProof()->getProofRecipe(conflictNodes);
+
+    unsigned numberOfSteps = recipe.getNumSteps();
+
+    prop::SatClause currentClause = *clause;
+    std::vector<Expr> currentClauseExpr = conflict;
+
+    for (unsigned i = 0; i < numberOfSteps; ++i) {
+      const LemmaProofRecipe::ProofStep* currentStep = recipe.getStep(i);
+
+      if (currentStep->getTheory() != theory::THEORY_BV) {
+        continue;
+      }
+
+      // If any rewrites took place, we need to update the conflict clause accordingly
+      std::set<Node> missingAssertions = recipe.getMissingAssertionsForStep(i);
+      std::map<Node, Node> explanationToMissingAssertion;
+      std::set<Node>::iterator assertionIt;
+      for (assertionIt = missingAssertions.begin();
+           assertionIt != missingAssertions.end();
+           ++assertionIt) {
+        Node negated = (*assertionIt).negate();
+        explanationToMissingAssertion[recipe.getExplanation(negated)] = negated;
+      }
+
+      currentClause = *clause;
+      currentClauseExpr = conflict;
+
+      for (unsigned j = 0; j < i; ++j) {
+        // Literals already used in previous steps need to be negated
+        Node previousLiteralNode = recipe.getStep(j)->getLiteral();
+
+        // If this literal is the result of a rewrite, we need to translate it
+        if (explanationToMissingAssertion.find(previousLiteralNode) !=
+            explanationToMissingAssertion.end()) {
+          previousLiteralNode = explanationToMissingAssertion[previousLiteralNode];
+        }
+
+        Node previousLiteralNodeNegated = previousLiteralNode.negate();
+        prop::SatLiteral previousLiteralNegated =
+          ProofManager::currentPM()->getCnfProof()->getLiteral(previousLiteralNodeNegated);
+
+        currentClause.push_back(previousLiteralNegated);
+        currentClauseExpr.push_back(previousLiteralNodeNegated.toExpr());
+      }
+
+      // If we're in the final step, the last literal is Null and should not be added.
+      // Otherwise, the current literal does NOT need to be negated
+      Node currentLiteralNode = currentStep->getLiteral();
+
+      if (currentLiteralNode != Node()) {
+        prop::SatLiteral currentLiteral =
+          ProofManager::currentPM()->getCnfProof()->getLiteral(currentLiteralNode);
+
+        currentClause.push_back(currentLiteral);
+        currentClauseExpr.push_back(currentLiteralNode.toExpr());
+      }
+
+      bv_lemmas.push_back(utils::mkSortedExpr(kind::OR, currentClauseExpr));
+    }
+  }
+
+  BitVectorProof* bv = ProofManager::getBitVectorProof();
+  bv->finalizeConflicts(bv_lemmas);
+  //  bv->printResolutionProof(os, paren, letMap);
+}
+
+void LFSCTheoryProofEngine::printTheoryLemmas(const IdToSatClause& lemmas,
+                                              std::ostream& os,
+                                              std::ostream& paren,
+                                              ProofLetMap& map) {
+  os << " ;; Theory Lemmas \n";
+  Debug("pf::tp") << "LFSCTheoryProofEngine::printTheoryLemmas: starting" << std::endl;
+
+  if (Debug.isOn("pf::dumpLemmas")) {
+    dumpTheoryLemmas(lemmas);
+  }
+
+  //  finalizeBvConflicts(lemmas, os, paren, map);
+  ProofManager::getBitVectorProof()->printResolutionProof(os, paren, map);
+
+  if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER) {
+    Assert (lemmas.size() == 1);
+    // nothing more to do (no combination with eager so far)
+    return;
+  }
+
+  ProofManager* pm = ProofManager::currentPM();
+  Debug("pf::tp") << "LFSCTheoryProofEngine::printTheoryLemmas: printing lemmas..." << std::endl;
+
+  for (IdToSatClause::const_iterator it = lemmas.begin(); it != lemmas.end(); ++it) {
+    ClauseId id = it->first;
+    const prop::SatClause* clause = it->second;
+
+    Debug("pf::tp") << "LFSCTheoryProofEngine::printTheoryLemmas: printing lemma. ID = "
+                    << id << std::endl;
+
+    std::vector<Expr> clause_expr;
+    std::set<Node> clause_expr_nodes;
+    for(unsigned i = 0; i < clause->size(); ++i) {
+      prop::SatLiteral lit = (*clause)[i];
+      Node node = pm->getCnfProof()->getAtom(lit.getSatVariable());
+      Expr atom = node.toExpr();
+      if (atom.isConst()) {
+        Assert (atom == utils::mkTrue());
+        continue;
+      }
+      Expr expr_lit = lit.isNegated() ? atom.notExpr(): atom;
+      clause_expr.push_back(expr_lit);
+      clause_expr_nodes.insert(lit.isNegated() ? node.notNode() : node);
+    }
+
+    LemmaProofRecipe recipe = pm->getCnfProof()->getProofRecipe(clause_expr_nodes);
+
+    if (recipe.simpleLemma()) {
+      // In a simple lemma, there will be no propositional resolution in the end
+
+      Debug("pf::tp") << "Simple lemma" << std::endl;
+      // Printing the clause as it appears in resolution proof
+      os << "(satlem _ _ ";
+      std::ostringstream clause_paren;
+      pm->getCnfProof()->printClause(*clause, os, clause_paren);
+
+      // Find and handle missing assertions, due to rewrites
+      std::set<Node> missingAssertions = recipe.getMissingAssertionsForStep(0);
+      if (!missingAssertions.empty()) {
+        Debug("pf::tp") << "Have missing assertions for this simple lemma!" << std::endl;
+      }
+
+      std::set<Node>::const_iterator missingAssertion;
+      for (missingAssertion = missingAssertions.begin();
+           missingAssertion != missingAssertions.end();
+           ++missingAssertion) {
+
+        Debug("pf::tp") << "Working on missing assertion: " << *missingAssertion << std::endl;
+        Assert(recipe.wasRewritten(missingAssertion->negate()));
+        Node explanation = recipe.getExplanation(missingAssertion->negate()).negate();
+        Debug("pf::tp") << "Found explanation: " << explanation << std::endl;
+
+        // We have a missing assertion.
+        //     rewriteIt->first is the assertion after the rewrite (the explanation),
+        //     rewriteIt->second is the original assertion that needs to be fed into the theory.
+
+        bool found = false;
+        unsigned k;
+        for (k = 0; k < clause_expr.size(); ++k) {
+          if (clause_expr[k] == explanation.toExpr()) {
+            found = true;
+            break;
+          }
+        }
+
+        AlwaysAssert(found);
+        Debug("pf::tp") << "Replacing theory assertion "
+                        << clause_expr[k]
+                        << " with "
+                        << *missingAssertion
+                        << std::endl;
+
+        clause_expr[k] = missingAssertion->toExpr();
+
+        std::ostringstream rewritten;
+
+        if (missingAssertion->getKind() == kind::NOT && (*missingAssertion)[0].toExpr() == utils::mkFalse()) {
+          rewritten << "(or_elim_2 _ _ ";
+          rewritten << "(not_not_intro _ ";
+          rewritten << pm->getLitName(explanation);
+          rewritten << ") (iff_elim_2 _ _ ";
+          rewritten << d_assertionToRewrite[missingAssertion->negate()];
+          rewritten << "))";
+        }
+        else {
+          rewritten << "(or_elim_1 _ _ ";
+          rewritten << "(not_not_intro _ ";
+          rewritten << pm->getLitName(explanation);
+          rewritten << ") (iff_elim_1 _ _ ";
+          rewritten << d_assertionToRewrite[missingAssertion->negate()];
+          rewritten << "))";
+        }
+
+        Debug("pf::tp") << "Setting a rewrite filter for this proof: " << std::endl
+                        << pm->getLitName(*missingAssertion) << " --> " << rewritten.str()
+                        << ", explanation = " << explanation
+                        << std::endl << std::endl;
+
+        pm->addRewriteFilter(pm->getLitName(*missingAssertion), rewritten.str());
+      }
+
+      // Query the appropriate theory for a proof of this clause
+      theory::TheoryId theory_id = getTheoryForLemma(clause);
+      Debug("pf::tp") << "Get theory lemma from " << theory_id << "..." << std::endl;
+      getTheoryProof(theory_id)->printTheoryLemmaProof(clause_expr, os, paren, map);
+
+      // Turn rewrite filter OFF
+      pm->clearRewriteFilters();
+
+      Debug("pf::tp") << "Get theory lemma from " << theory_id << "... DONE!" << std::endl;
+      os << clause_paren.str();
+      os << "( \\ " << pm->getLemmaClauseName(id) <<"\n";
+      paren << "))";
+    } else { // This is a composite lemma
+
+      unsigned numberOfSteps = recipe.getNumSteps();
+      prop::SatClause currentClause = *clause;
+      std::vector<Expr> currentClauseExpr = clause_expr;
+
+      for (unsigned i = 0; i < numberOfSteps; ++i) {
+        const LemmaProofRecipe::ProofStep* currentStep = recipe.getStep(i);
+
+        currentClause = *clause;
+        currentClauseExpr = clause_expr;
+
+        for (unsigned j = 0; j < i; ++j) {
+          // Literals already used in previous steps need to be negated
+          Node previousLiteralNode = recipe.getStep(j)->getLiteral();
+          Node previousLiteralNodeNegated = previousLiteralNode.negate();
+          prop::SatLiteral previousLiteralNegated =
+            ProofManager::currentPM()->getCnfProof()->getLiteral(previousLiteralNodeNegated);
+          currentClause.push_back(previousLiteralNegated);
+          currentClauseExpr.push_back(previousLiteralNodeNegated.toExpr());
+        }
+
+        // If the current literal is NULL, can ignore (final step)
+        // Otherwise, the current literal does NOT need to be negated
+        Node currentLiteralNode = currentStep->getLiteral();
+        if (currentLiteralNode != Node()) {
+          prop::SatLiteral currentLiteral =
+            ProofManager::currentPM()->getCnfProof()->getLiteral(currentLiteralNode);
+
+          currentClause.push_back(currentLiteral);
+          currentClauseExpr.push_back(currentLiteralNode.toExpr());
+        }
+
+        os << "(satlem _ _ ";
+        std::ostringstream clause_paren;
+
+        pm->getCnfProof()->printClause(currentClause, os, clause_paren);
+
+        // query appropriate theory for proof of clause
+        theory::TheoryId theory_id = currentStep->getTheory();
+        Debug("pf::tp") << "Get theory lemma from " << theory_id << "..." << std::endl;
+
+        std::set<Node> missingAssertions = recipe.getMissingAssertionsForStep(i);
+        if (!missingAssertions.empty()) {
+          Debug("pf::tp") << "Have missing assertions for this step!" << std::endl;
+        }
+
+        // Turn rewrite filter ON
+        std::set<Node>::const_iterator missingAssertion;
+        for (missingAssertion = missingAssertions.begin();
+             missingAssertion != missingAssertions.end();
+             ++missingAssertion) {
+
+          Debug("pf::tp") << "Working on missing assertion: " << *missingAssertion << std::endl;
+
+          Assert(recipe.wasRewritten(missingAssertion->negate()));
+          Node explanation = recipe.getExplanation(missingAssertion->negate()).negate();
+
+          Debug("pf::tp") << "Found explanation: " << explanation << std::endl;
+
+          // We have a missing assertion.
+          //     rewriteIt->first is the assertion after the rewrite (the explanation),
+          //     rewriteIt->second is the original assertion that needs to be fed into the theory.
+
+          bool found = false;
+          unsigned k;
+          for (k = 0; k < currentClauseExpr.size(); ++k) {
+            if (currentClauseExpr[k] == explanation.toExpr()) {
+              found = true;
+              break;
+            }
+          }
+
+          AlwaysAssert(found);
+
+          Debug("pf::tp") << "Replacing theory assertion "
+                          << currentClauseExpr[k]
+                          << " with "
+                          << *missingAssertion
+                          << std::endl;
+
+          currentClauseExpr[k] = missingAssertion->toExpr();
+
+          std::ostringstream rewritten;
+
+          if (missingAssertion->getKind() == kind::NOT && (*missingAssertion)[0].toExpr() == utils::mkFalse()) {
+            rewritten << "(or_elim_2 _ _ ";
+            rewritten << "(not_not_intro _ ";
+            rewritten << pm->getLitName(explanation);
+            rewritten << ") (iff_elim_2 _ _ ";
+            rewritten << d_assertionToRewrite[missingAssertion->negate()];
+            rewritten << "))";
+          }
+          else {
+            rewritten << "(or_elim_1 _ _ ";
+            rewritten << "(not_not_intro _ ";
+            rewritten << pm->getLitName(explanation);
+            rewritten << ") (iff_elim_1 _ _ ";
+            rewritten << d_assertionToRewrite[missingAssertion->negate()];
+            rewritten << "))";
+          }
+
+          Debug("pf::tp") << "Setting a rewrite filter for this proof: " << std::endl
+                          << pm->getLitName(*missingAssertion) << " --> " << rewritten.str()
+                          << "explanation = " << explanation
+                          << std::endl << std::endl;
+
+          pm->addRewriteFilter(pm->getLitName(*missingAssertion), rewritten.str());
+        }
+
+        getTheoryProof(theory_id)->printTheoryLemmaProof(currentClauseExpr, os, paren, map);
+
+        // Turn rewrite filter OFF
+        pm->clearRewriteFilters();
+
+        Debug("pf::tp") << "Get theory lemma from " << theory_id << "... DONE!" << std::endl;
+        os << clause_paren.str();
+        os << "( \\ " << pm->getLemmaClauseName(id) << "s" << i <<"\n";
+        paren << "))";
+      }
+
+      Assert(numberOfSteps >= 2);
+
+      os << "(satlem_simplify _ _ _ ";
+      for (unsigned i = 0; i < numberOfSteps - 1; ++i) {
+        // Resolve step i with step i + 1
+        if (recipe.getStep(i)->getLiteral().getKind() == kind::NOT) {
+          os << "(Q _ _ ";
+        } else {
+          os << "(R _ _ ";
+        }
+
+        os << pm->getLemmaClauseName(id) << "s" << i;
+        os << " ";
+      }
+
+      os << pm->getLemmaClauseName(id) << "s" << numberOfSteps - 1 << " ";
+
+      prop::SatLiteral v;
+      for (int i = numberOfSteps - 2; i >= 0; --i) {
+        v = ProofManager::currentPM()->getCnfProof()->getLiteral(recipe.getStep(i)->getLiteral());
+        os << ProofManager::getVarName(v.getSatVariable(), "") << ") ";
+      }
+
+      os << "( \\ " << pm->getLemmaClauseName(id) << "\n";
+      paren << "))";
+    }
+  }
+}
+
+void LFSCTheoryProofEngine::printBoundTerm(Expr term, std::ostream& os, const ProofLetMap& map) {
+  Debug("pf::tp") << "LFSCTheoryProofEngine::printBoundTerm( " << term << " ) " << std::endl;
+
+  ProofLetMap::const_iterator it = map.find(term);
+  if (it != map.end()) {
+    unsigned id = it->second.id;
+    unsigned count = it->second.count;
+
+    if (count > LET_COUNT) {
+      os << "let" << id;
+      return;
+    }
+  }
+
+  printTheoryTerm(term, os, map);
+}
+
+void LFSCTheoryProofEngine::printCoreTerm(Expr term, std::ostream& os, const ProofLetMap& map) {
+  if (term.isVariable()) {
+    os << ProofManager::sanitize(term);
+    return;
+  }
+
+  Kind k = term.getKind();
+
+  switch(k) {
+  case kind::ITE: {
+    os << (term.getType().isBoolean() ? "(ifte ": "(ite _ ");
+
+    bool booleanCase = term[0].getType().isBoolean();
+    if (booleanCase && printsAsBool(term[0])) os << "(p_app ";
+    printBoundTerm(term[0], os, map);
+    if (booleanCase && printsAsBool(term[0])) os << ")";
+
+    os << " ";
+    printBoundTerm(term[1], os, map);
+    os << " ";
+    printBoundTerm(term[2], os, map);
+    os << ")";
+    return;
+  }
+
+  case kind::EQUAL: {
+    bool booleanCase = term[0].getType().isBoolean();
+
+    os << "(";
+    if (booleanCase) {
+      os << "iff ";
+    } else {
+      os << "= ";
+      printSort(term[0].getType(), os);
+      os << " ";
+    }
+
+    if (booleanCase && printsAsBool(term[0])) os << "(p_app ";
+    printBoundTerm(term[0], os, map);
+    if (booleanCase && printsAsBool(term[0])) os << ")";
+
+    os << " ";
+
+    if (booleanCase && printsAsBool(term[1])) os << "(p_app ";
+    printBoundTerm(term[1], os, map);
+    if (booleanCase && printsAsBool(term[1])) os << ") ";
+    os << ")";
+
+    return;
+  }
+
+  case kind::DISTINCT:
+    // Distinct nodes can have any number of chidlren.
+    Assert (term.getNumChildren() >= 2);
+
+    if (term.getNumChildren() == 2) {
+      os << "(not (= ";
+      printSort(term[0].getType(), os);
+      os << " ";
+      printBoundTerm(term[0], os, map);
+      os << " ";
+      printBoundTerm(term[1], os, map);
+      os << "))";
+    } else {
+      unsigned numOfPairs = term.getNumChildren() * (term.getNumChildren() - 1) / 2;
+      for (unsigned i = 1; i < numOfPairs; ++i) {
+        os << "(and ";
+      }
+
+      for (unsigned i = 0; i < term.getNumChildren(); ++i) {
+        for (unsigned j = i + 1; j < term.getNumChildren(); ++j) {
+          if ((i != 0) || (j != 1)) {
+            os << "(not (= ";
+            printSort(term[0].getType(), os);
+            os << " ";
+            printBoundTerm(term[i], os, map);
+            os << " ";
+            printBoundTerm(term[j], os, map);
+            os << ")))";
+          } else {
+            os << "(not (= ";
+            printSort(term[0].getType(), os);
+            os << " ";
+            printBoundTerm(term[0], os, map);
+            os << " ";
+            printBoundTerm(term[1], os, map);
+            os << "))";
+          }
+        }
+      }
+    }
+
+    return;
+
+  case kind::CHAIN: {
+    // LFSC doesn't allow declarations with variable numbers of
+    // arguments, so we have to flatten chained operators, like =.
+    Kind op = term.getOperator().getConst<Chain>().getOperator();
+    std::string op_str;
+    bool booleanCase = false;
+    if (op==kind::EQUAL && term[0].getType().isBoolean()) {
+      booleanCase = term[0].getType().isBoolean();
+      op_str = "iff";
+    } else {
+      op_str = utils::toLFSCKind(op);
+    }
+    size_t n = term.getNumChildren();
+    std::ostringstream paren;
+    for(size_t i = 1; i < n; ++i) {
+      if(i + 1 < n) {
+        os << "(" << utils::toLFSCKind(kind::AND) << " ";
+        paren << ")";
+      }
+      os << "(" << op_str << " ";
+      if (booleanCase && printsAsBool(term[i - 1])) os << "(p_app ";
+      printBoundTerm(term[i - 1], os, map);
+      if (booleanCase && printsAsBool(term[i - 1])) os << ")";
+      os << " ";
+      if (booleanCase && printsAsBool(term[i])) os << "(p_app ";
+      printBoundTerm(term[i], os, map);
+      if (booleanCase && printsAsBool(term[i])) os << ")";
+      os << ")";
+      if(i + 1 < n) {
+        os << " ";
+      }
+    }
+    os << paren.str();
+    return;
+  }
+
+  default:
+    Unhandled(k);
+  }
+
+}
+
+void TheoryProof::printTheoryLemmaProof(std::vector<Expr>& lemma,
+                                        std::ostream& os,
+                                        std::ostream& paren,
+                                        const ProofLetMap& map) {
+  // Default method for replaying proofs: assert (negated) literals back to a fresh copy of the theory
+  Assert(d_theory!=NULL);
+
+  context::UserContext fakeContext;
+  ProofOutputChannel oc;
+  theory::Valuation v(NULL);
+  //make new copy of theory
+  theory::Theory* th;
+  Trace("pf::tp") << ";; Print theory lemma proof, theory id = " << d_theory->getId() << std::endl;
+
+  if (d_theory->getId()==theory::THEORY_UF) {
+    th = new theory::uf::TheoryUF(&fakeContext, &fakeContext, oc, v,
+                                  ProofManager::currentPM()->getLogicInfo(),
+                                  "replay::");
+  } else if (d_theory->getId()==theory::THEORY_ARRAY) {
+    th = new theory::arrays::TheoryArrays(&fakeContext, &fakeContext, oc, v,
+                                          ProofManager::currentPM()->getLogicInfo(),
+                                          "replay::");
+  } else if (d_theory->getId() == theory::THEORY_ARITH) {
+    Trace("theory-proof-debug") << "Arith proofs currently not supported. Use 'trust'" << std::endl;
+    os << " (clausify_false trust)";
+    return;
+  } else {
+    InternalError(std::string("can't generate theory-proof for ") + ProofManager::currentPM()->getLogic());
+  }
+
+  Debug("pf::tp") << "TheoryProof::printTheoryLemmaProof - calling th->ProduceProofs()" << std::endl;
+  th->produceProofs();
+  Debug("pf::tp") << "TheoryProof::printTheoryLemmaProof - th->ProduceProofs() DONE" << std::endl;
+
+  MyPreRegisterVisitor preRegVisitor(th);
+  for (unsigned i=0; i<lemma.size(); i++) {
+    Node strippedLit = (lemma[i].getKind() == kind::NOT) ? lemma[i][0] : lemma[i];
+    if (strippedLit.getKind() == kind::EQUAL ||
+        d_theory->getId() == theory::Theory::theoryOf(strippedLit)) {
+      Node lit = Node::fromExpr( lemma[i] ).negate();
+      Trace("pf::tp") << "; preregistering and asserting " << lit << std::endl;
+      NodeVisitor<MyPreRegisterVisitor>::run(preRegVisitor, lit);
+      th->assertFact(lit, false);
+    }
+  }
+
+  Debug("pf::tp") << "TheoryProof::printTheoryLemmaProof - calling th->check()" << std::endl;
+  th->check(theory::Theory::EFFORT_FULL);
+  Debug("pf::tp") << "TheoryProof::printTheoryLemmaProof - th->check() DONE" << std::endl;
+
+  if(oc.d_conflict.isNull()) {
+    Trace("pf::tp") << "; conflict is null" << std::endl;
+    Assert(!oc.d_lemma.isNull());
+    Trace("pf::tp") << "; ++ but got lemma: " << oc.d_lemma << std::endl;
+
+    if (oc.d_lemma.getKind() == kind::OR) {
+      Debug("pf::tp") << "OR lemma. Negating each child separately" << std::endl;
+      for (unsigned i = 0; i < oc.d_lemma.getNumChildren(); ++i) {
+        if (oc.d_lemma[i].getKind() == kind::NOT) {
+          Trace("pf::tp") << ";     asserting fact: " << oc.d_lemma[i][0] << std::endl;
+          th->assertFact(oc.d_lemma[i][0], false);
+        }
+        else {
+          Trace("pf::tp") << ";     asserting fact: " << oc.d_lemma[i].notNode() << std::endl;
+          th->assertFact(oc.d_lemma[i].notNode(), false);
+        }
+      }
+    }
+    else {
+      Unreachable();
+
+      Assert(oc.d_lemma.getKind() == kind::NOT);
+      Debug("pf::tp") << "NOT lemma" << std::endl;
+      Trace("pf::tp") << ";     asserting fact: " << oc.d_lemma[0] << std::endl;
+      th->assertFact(oc.d_lemma[0], false);
+    }
+
+    // Trace("pf::tp") << "; ++ but got lemma: " << oc.d_lemma << std::endl;
+    // Trace("pf::tp") << "; asserting " << oc.d_lemma[1].negate() << std::endl;
+    // th->assertFact(oc.d_lemma[1].negate(), false);
+
+    //
+    th->check(theory::Theory::EFFORT_FULL);
+  }
+  Debug("pf::tp") << "Calling   oc.d_proof->toStream(os)" << std::endl;
+  oc.d_proof->toStream(os, map);
+  Debug("pf::tp") << "Calling   oc.d_proof->toStream(os) -- DONE!" << std::endl;
+
+  Debug("pf::tp") << "About to delete the theory solver used for proving the lemma... " << std::endl;
+  delete th;
+  Debug("pf::tp") << "About to delete the theory solver used for proving the lemma: DONE! " << std::endl;
+}
+
+bool TheoryProofEngine::supportedTheory(theory::TheoryId id) {
+  return (id == theory::THEORY_ARRAY ||
+          id == theory::THEORY_ARITH ||
+          id == theory::THEORY_BV ||
+          id == theory::THEORY_UF ||
+          id == theory::THEORY_BOOL);
+}
+
+bool TheoryProofEngine::printsAsBool(const Node &n) {
+  if (!n.getType().isBoolean()) {
+    return false;
+  }
+
+  theory::TheoryId theory_id = theory::Theory::theoryOf(n);
+  return getTheoryProof(theory_id)->printsAsBool(n);
+}
+
+BooleanProof::BooleanProof(TheoryProofEngine* proofEngine)
+  : TheoryProof(NULL, proofEngine)
+{}
+
+void BooleanProof::registerTerm(Expr term) {
+  Assert (term.getType().isBoolean());
+
+  if (term.isVariable() && d_declarations.find(term) == d_declarations.end()) {
+    d_declarations.insert(term);
+    return;
+  }
+  for (unsigned i = 0; i < term.getNumChildren(); ++i) {
+    d_proofEngine->registerTerm(term[i]);
+  }
+}
+
+void LFSCBooleanProof::printOwnedTerm(Expr term, std::ostream& os, const ProofLetMap& map) {
+  Assert (term.getType().isBoolean());
+  if (term.isVariable()) {
+    os << ProofManager::sanitize(term);
+    return;
+  }
+
+  Kind k = term.getKind();
+  switch(k) {
+  case kind::OR:
+  case kind::AND:
+    if (options::lfscLetification() && term.getNumChildren() > 2) {
+      // If letification is on, the entire term is probably a let expression.
+      // However, we need to transform it from (and a b c) into (and a (and b c)) form first.
+      Node currentExpression = term[term.getNumChildren() - 1];
+      for (int i = term.getNumChildren() - 2; i >= 0; --i) {
+        NodeBuilder<> builder(k);
+        builder << term[i];
+        builder << currentExpression.toExpr();
+        currentExpression = builder;
+      }
+
+      // The let map should already have the current expression.
+      ProofLetMap::const_iterator it = map.find(currentExpression.toExpr());
+      if (it != map.end()) {
+        unsigned id = it->second.id;
+        unsigned count = it->second.count;
+
+        if (count > LET_COUNT) {
+          os << "let" << id;
+          break;
+        }
+      }
+    }
+
+    // If letification is off or there were 2 children, same treatment as the other cases.
+    // (No break is intentional).
+  case kind::XOR:
+  case kind::IMPLIES:
+  case kind::NOT:
+    // print the Boolean operators
+    os << "(" << utils::toLFSCKind(k);
+    if(term.getNumChildren() > 2) {
+      // LFSC doesn't allow declarations with variable numbers of
+      // arguments, so we have to flatten these N-ary versions.
+      std::ostringstream paren;
+      os << " ";
+      for (unsigned i = 0; i < term.getNumChildren(); ++i) {
+
+        if (printsAsBool(term[i])) os << "(p_app ";
+        d_proofEngine->printBoundTerm(term[i], os, map);
+        if (printsAsBool(term[i])) os << ")";
+
+        os << " ";
+        if(i < term.getNumChildren() - 2) {
+          os << "(" << utils::toLFSCKind(k) << " ";
+          paren << ")";
+        }
+      }
+      os << paren.str() << ")";
+    } else {
+      // this is for binary and unary operators
+      for (unsigned i = 0; i < term.getNumChildren(); ++i) {
+        os << " ";
+        if (printsAsBool(term[i])) os << "(p_app ";
+        d_proofEngine->printBoundTerm(term[i], os, map);
+        if (printsAsBool(term[i])) os << ")";
+      }
+      os << ")";
+    }
+    return;
+
+  case kind::CONST_BOOLEAN:
+    os << (term.getConst<bool>() ? "true" : "false");
+    return;
+
+  default:
+    Unhandled(k);
+  }
+
+}
+
+void LFSCBooleanProof::printOwnedSort(Type type, std::ostream& os) {
+  Assert (type.isBoolean());
+  os << "Bool";
+}
+
+void LFSCBooleanProof::printSortDeclarations(std::ostream& os, std::ostream& paren) {
+  // Nothing to do here at this point.
+}
+
+void LFSCBooleanProof::printTermDeclarations(std::ostream& os, std::ostream& paren) {
+  for (ExprSet::const_iterator it = d_declarations.begin(); it != d_declarations.end(); ++it) {
+    Expr term = *it;
+
+    os << "(% " << ProofManager::sanitize(term) << " (term ";
+    printSort(term.getType(), os);
+    os <<")\n";
+    paren <<")";
+  }
+}
+
+void LFSCBooleanProof::printDeferredDeclarations(std::ostream& os, std::ostream& paren) {
+  // Nothing to do here at this point.
+}
+
+void LFSCBooleanProof::printAliasingDeclarations(std::ostream& os, std::ostream& paren, const ProofLetMap &globalLetMap) {
+  // Nothing to do here at this point.
+}
+
+void LFSCBooleanProof::printTheoryLemmaProof(std::vector<Expr>& lemma,
+                                             std::ostream& os,
+                                             std::ostream& paren,
+                                             const ProofLetMap& map) {
+  Unreachable("No boolean lemmas yet!");
+}
+
+bool LFSCBooleanProof::printsAsBool(const Node &n)
+{
+  Kind k = n.getKind();
+  switch (k) {
+  case kind::BOOLEAN_TERM_VARIABLE:
+  case kind::VARIABLE:
+    return true;
+
+  default:
+    return false;
+  }
+}
+
+void TheoryProof::printConstantDisequalityProof(std::ostream& os, Expr c1, Expr c2, const ProofLetMap &globalLetMap) {
+  // By default, we just print a trust statement. Specific theories can implement
+  // better proofs.
+
+  os << "(trust_f (not (= _ ";
+  d_proofEngine->printBoundTerm(c1, os, globalLetMap);
+  os << " ";
+  d_proofEngine->printBoundTerm(c2, os, globalLetMap);
+  os << ")))";
+}
+
+void TheoryProof::printRewriteProof(std::ostream& os, const Node &n1, const Node &n2) {
+  // This is the default for a rewrite proof: just a trust statement.
+  ProofLetMap emptyMap;
+  os << "(trust_f (iff ";
+  d_proofEngine->printBoundTerm(n1.toExpr(), os, emptyMap);
+  os << " ";
+  d_proofEngine->printBoundTerm(n2.toExpr(), os, emptyMap);
+  os << "))";
+}
+
+} /* namespace CVC4 */
diff --git a/src/proof/theory_proof.h b/src/proof/theory_proof.h
new file mode 100644
index 0000000..bbdb7d6
--- /dev/null
+++ b/src/proof/theory_proof.h
@@ -0,0 +1,339 @@
+/*********************                                                        */
+/*! \file theory_proof.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Guy Katz, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+
+ ** \todo document this file
+
+**/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY_PROOF_H
+#define __CVC4__THEORY_PROOF_H
+
+#include <ext/hash_set>
+#include <iosfwd>
+
+#include "expr/expr.h"
+#include "proof/clause_id.h"
+#include "prop/sat_solver_types.h"
+#include "util/proof.h"
+#include "proof/proof_utils.h"
+
+namespace CVC4 {
+
+namespace theory {
+class Theory;
+} /* namespace CVC4::theory */
+
+typedef __gnu_cxx::hash_map < ClauseId, prop::SatClause* > IdToSatClause;
+
+class TheoryProof;
+
+typedef __gnu_cxx::hash_set<Expr, ExprHashFunction > ExprSet;
+typedef std::map<theory::TheoryId, TheoryProof* > TheoryProofTable;
+
+typedef std::set<theory::TheoryId> TheoryIdSet;
+typedef std::map<Expr, TheoryIdSet> ExprToTheoryIds;
+
+class TheoryProofEngine {
+protected:
+  ExprSet d_registrationCache;
+  TheoryProofTable d_theoryProofTable;
+  ExprToTheoryIds d_exprToTheoryIds;
+
+  /**
+   * Returns whether the theory is currently supported in proof
+   * production mode.
+   */
+  bool supportedTheory(theory::TheoryId id);
+public:
+
+  TheoryProofEngine();
+  virtual ~TheoryProofEngine();
+
+  /**
+   * Print the theory term (could be an atom) by delegating to the proper theory.
+   *
+   * @param term
+   * @param os
+   */
+  virtual void printLetTerm(Expr term, std::ostream& os) = 0;
+  virtual void printBoundTerm(Expr term, std::ostream& os,
+                              const ProofLetMap& map) = 0;
+
+  /**
+   * Print the proof representation of the given sort.
+   *
+   * @param os
+   */
+  virtual void printSort(Type type, std::ostream& os) = 0;
+
+  /**
+   * Go over the assertions and register all terms with the theories.
+   *
+   * @param os
+   * @param paren closing parenthesis
+   */
+  virtual void registerTermsFromAssertions() = 0;
+
+  /**
+   * Print the theory assertions (arbitrary formulas over
+   * theory atoms)
+   *
+   * @param os
+   * @param paren closing parenthesis
+   */
+  virtual void printAssertions(std::ostream& os, std::ostream& paren) = 0;
+  /**
+   * Print variable declarations that need to appear within the proof,
+   * e.g. skolemized variables.
+   *
+   * @param os
+   * @param paren closing parenthesis
+   */
+  virtual void printDeferredDeclarations(std::ostream& os, std::ostream& paren) = 0;
+
+  /**
+   * Print aliasing declarations.
+   *
+   * @param os
+   * @param paren closing parenthesis
+   */
+  virtual void printAliasingDeclarations(std::ostream& os, std::ostream& paren, const ProofLetMap &globalLetMap) = 0;
+
+  /**
+   * Print proofs of all the theory lemmas (must prove
+   * actual clause used in resolution proof).
+   *
+   * @param os
+   * @param paren
+   */
+  virtual void printTheoryLemmas(const IdToSatClause& lemmas, std::ostream& os,
+                                 std::ostream& paren, ProofLetMap& map) = 0;
+
+  /**
+   * Register theory atom (ensures all terms and atoms are declared).
+   *
+   * @param atom
+   */
+  void registerTerm(Expr atom);
+
+  /**
+   * Ensures that a theory proof class for the given theory is created.
+   * This method can be invoked regardless of whether the "proof" option
+   * has been set.
+   *
+   * @param theory
+   */
+  void registerTheory(theory::Theory* theory);
+  /**
+   * Additional configuration of the theory proof class for the given theory.
+   * This method should only be invoked when the "proof" option has been set.
+   *
+   * @param theory
+   */
+  void finishRegisterTheory(theory::Theory* theory);
+
+  theory::TheoryId getTheoryForLemma(const prop::SatClause* clause);
+  TheoryProof* getTheoryProof(theory::TheoryId id);
+
+  void markTermForFutureRegistration(Expr term, theory::TheoryId id);
+
+  void printConstantDisequalityProof(std::ostream& os, Expr c1, Expr c2, const ProofLetMap &globalLetMap);
+
+  virtual void printTheoryTerm(Expr term, std::ostream& os, const ProofLetMap& map) = 0;
+
+  bool printsAsBool(const Node &n);
+};
+
+class LFSCTheoryProofEngine : public TheoryProofEngine {
+  void bind(Expr term, ProofLetMap& map, Bindings& let_order);
+public:
+  LFSCTheoryProofEngine()
+    : TheoryProofEngine() {}
+
+  void printTheoryTerm(Expr term, std::ostream& os, const ProofLetMap& map);
+
+  void registerTermsFromAssertions();
+  void printSortDeclarations(std::ostream& os, std::ostream& paren);
+  void printTermDeclarations(std::ostream& os, std::ostream& paren);
+  virtual void printCoreTerm(Expr term, std::ostream& os, const ProofLetMap& map);
+  virtual void printLetTerm(Expr term, std::ostream& os);
+  virtual void printBoundTerm(Expr term, std::ostream& os, const ProofLetMap& map);
+  virtual void printAssertions(std::ostream& os, std::ostream& paren);
+  virtual void printLemmaRewrites(NodePairSet& rewrites, std::ostream& os, std::ostream& paren);
+  virtual void printDeferredDeclarations(std::ostream& os, std::ostream& paren);
+  virtual void printAliasingDeclarations(std::ostream& os, std::ostream& paren, const ProofLetMap &globalLetMap);
+  virtual void printTheoryLemmas(const IdToSatClause& lemmas,
+                                 std::ostream& os,
+                                 std::ostream& paren,
+                                 ProofLetMap& map);
+  virtual void printSort(Type type, std::ostream& os);
+
+  void performExtraRegistrations();
+
+  void finalizeBvConflicts(const IdToSatClause& lemmas, std::ostream& os);
+
+private:
+  static void dumpTheoryLemmas(const IdToSatClause& lemmas);
+
+  // TODO: this function should be moved into the BV prover.
+
+  std::map<Node, std::string> d_assertionToRewrite;
+};
+
+class TheoryProof {
+protected:
+  // Pointer to the theory for this proof
+  theory::Theory* d_theory;
+  TheoryProofEngine* d_proofEngine;
+public:
+  TheoryProof(theory::Theory* th, TheoryProofEngine* proofEngine)
+    : d_theory(th)
+    , d_proofEngine(proofEngine)
+  {}
+  virtual ~TheoryProof() {};
+  /**
+   * Print a term belonging some theory, not necessarily this one.
+   *
+   * @param term expresion representing term
+   * @param os output stream
+   */
+  void printTerm(Expr term, std::ostream& os, const ProofLetMap& map) {
+    d_proofEngine->printBoundTerm(term, os, map);
+  }
+  /**
+   * Print a term belonging to THIS theory.
+   *
+   * @param term expression representing term
+   * @param os output stream
+   */
+  virtual void printOwnedTerm(Expr term, std::ostream& os, const ProofLetMap& map) = 0;
+  /**
+   * Print the proof representation of the given type that belongs to some theory.
+   *
+   * @param type
+   * @param os
+   */
+  void printSort(Type type, std::ostream& os) {
+    d_proofEngine->printSort(type, os);
+  }
+  /**
+   * Print the proof representation of the given type that belongs to THIS theory.
+   *
+   * @param type
+   * @param os
+   */
+  virtual void printOwnedSort(Type type, std::ostream& os) = 0;
+  /**
+   * Print a proof for the theory lemmas. Must prove
+   * clause representing lemmas to be used in resolution proof.
+   *
+   * @param os output stream
+   */
+  virtual void printTheoryLemmaProof(std::vector<Expr>& lemma,
+                                     std::ostream& os,
+                                     std::ostream& paren,
+                                     const ProofLetMap& map);
+  /**
+   * Print the sorts declarations for this theory.
+   *
+   * @param os
+   * @param paren
+   */
+  virtual void printSortDeclarations(std::ostream& os, std::ostream& paren) = 0;
+  /**
+   * Print the term declarations for this theory.
+   *
+   * @param os
+   * @param paren
+   */
+  virtual void printTermDeclarations(std::ostream& os, std::ostream& paren) = 0;
+  /**
+   * Print any deferred variable/sorts declarations for this theory
+   * (those that need to appear inside the actual proof).
+   *
+   * @param os
+   * @param paren
+   */
+  virtual void printDeferredDeclarations(std::ostream& os, std::ostream& paren) = 0;
+  /**
+   * Print any aliasing declarations.
+   *
+   * @param os
+   * @param paren
+   */
+  virtual void printAliasingDeclarations(std::ostream& os, std::ostream& paren, const ProofLetMap &globalLetMap) = 0;
+  /**
+   * Register a term of this theory that appears in the proof.
+   *
+   * @param term
+   */
+  virtual void registerTerm(Expr term) = 0;
+  /**
+   * Print a proof for the disequality of two constants that belong to this theory.
+   *
+   * @param term
+   */
+  virtual void printConstantDisequalityProof(std::ostream& os, Expr c1, Expr c2, const ProofLetMap &globalLetMap);
+  /**
+   * Print a proof for the equivalence of n1 and n2.
+   *
+   * @param term
+   */
+  virtual void printRewriteProof(std::ostream& os, const Node &n1, const Node &n2);
+
+  // Return true if node prints as bool, false if it prints as a formula.
+  virtual bool printsAsBool(const Node &n) {
+    // Most nodes print as formulas, so this is the default.
+    return false;
+  }
+};
+
+class BooleanProof : public TheoryProof {
+protected:
+  ExprSet d_declarations; // all the boolean variables
+public:
+  BooleanProof(TheoryProofEngine* proofEngine);
+
+  virtual void registerTerm(Expr term);
+
+  virtual void printOwnedTerm(Expr term, std::ostream& os, const ProofLetMap& map) = 0;
+
+  virtual void printOwnedSort(Type type, std::ostream& os) = 0;
+  virtual void printTheoryLemmaProof(std::vector<Expr>& lemma, std::ostream& os, std::ostream& paren, const ProofLetMap& map) = 0;
+  virtual void printSortDeclarations(std::ostream& os, std::ostream& paren) = 0;
+  virtual void printTermDeclarations(std::ostream& os, std::ostream& paren) = 0;
+  virtual void printDeferredDeclarations(std::ostream& os, std::ostream& paren) = 0;
+  virtual void printAliasingDeclarations(std::ostream& os, std::ostream& paren, const ProofLetMap &globalLetMap) = 0;
+};
+
+class LFSCBooleanProof : public BooleanProof {
+public:
+  LFSCBooleanProof(TheoryProofEngine* proofEngine)
+    : BooleanProof(proofEngine)
+  {}
+  virtual void printOwnedTerm(Expr term, std::ostream& os, const ProofLetMap& map);
+  virtual void printOwnedSort(Type type, std::ostream& os);
+  virtual void printTheoryLemmaProof(std::vector<Expr>& lemma, std::ostream& os, std::ostream& paren, const ProofLetMap& map);
+  virtual void printSortDeclarations(std::ostream& os, std::ostream& paren);
+  virtual void printTermDeclarations(std::ostream& os, std::ostream& paren);
+  virtual void printDeferredDeclarations(std::ostream& os, std::ostream& paren);
+  virtual void printAliasingDeclarations(std::ostream& os, std::ostream& paren, const ProofLetMap &globalLetMap);
+
+  bool printsAsBool(const Node &n);
+};
+
+} /* CVC4 namespace */
+
+#endif /* __CVC4__THEORY_PROOF_H */
diff --git a/src/proof/uf_proof.cpp b/src/proof/uf_proof.cpp
new file mode 100644
index 0000000..c38fa14
--- /dev/null
+++ b/src/proof/uf_proof.cpp
@@ -0,0 +1,851 @@
+/*********************                                                        */
+/*! \file uf_proof.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Guy Katz
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+
+ ** \todo document this file
+
+**/
+
+#include "proof/theory_proof.h"
+#include "proof/proof_manager.h"
+#include "proof/uf_proof.h"
+#include "theory/uf/theory_uf.h"
+#include <stack>
+
+namespace CVC4 {
+
+inline static Node eqNode(TNode n1, TNode n2) {
+  return NodeManager::currentNM()->mkNode(kind::EQUAL, n1, n2);
+}
+
+// congrence matching term helper
+inline static bool match(TNode n1, TNode n2) {
+  Debug("pf::uf") << "match " << n1 << " " << n2 << std::endl;
+  if(ProofManager::currentPM()->hasOp(n1)) {
+    n1 = ProofManager::currentPM()->lookupOp(n1);
+  }
+  if(ProofManager::currentPM()->hasOp(n2)) {
+    n2 = ProofManager::currentPM()->lookupOp(n2);
+  }
+  Debug("pf::uf") << "+ match " << n1 << " " << n2 << std::endl;
+  if(n1 == n2) {
+    return true;
+  }
+  if(n1.getType().isFunction() && n2.hasOperator()) {
+    if(ProofManager::currentPM()->hasOp(n2.getOperator())) {
+      return n1 == ProofManager::currentPM()->lookupOp(n2.getOperator());
+    } else {
+      return n1 == n2.getOperator();
+    }
+  }
+  if(n2.getType().isFunction() && n1.hasOperator()) {
+    if(ProofManager::currentPM()->hasOp(n1.getOperator())) {
+      return n2 == ProofManager::currentPM()->lookupOp(n1.getOperator());
+    } else {
+      return n2 == n1.getOperator();
+    }
+  }
+  if(n1.hasOperator() && n2.hasOperator() && n1.getOperator() != n2.getOperator()) {
+    return false;
+  }
+  for(size_t i = 0; i < n1.getNumChildren() && i < n2.getNumChildren(); ++i) {
+    if(n1[i] != n2[i]) {
+      return false;
+    }
+  }
+  return true;
+}
+
+
+void ProofUF::toStream(std::ostream& out) {
+  ProofLetMap map;
+  toStream(out, map);
+}
+
+void ProofUF::toStream(std::ostream& out, const ProofLetMap& map) {
+  Trace("theory-proof-debug") << "; Print UF proof..." << std::endl;
+  //AJR : carry this further?
+  toStreamLFSC(out, ProofManager::getUfProof(), d_proof, map);
+}
+
+void ProofUF::toStreamLFSC(std::ostream& out, TheoryProof * tp, theory::eq::EqProof * pf, const ProofLetMap& map) {
+  Debug("pf::uf") << "ProofUF::toStreamLFSC starting" << std::endl;
+  Debug("lfsc-uf") << "Printing uf proof in LFSC : " << std::endl;
+  pf->debug_print("lfsc-uf");
+  Debug("lfsc-uf") << std::endl;
+  toStreamRecLFSC( out, tp, pf, 0, map );
+}
+
+Node ProofUF::toStreamRecLFSC(std::ostream& out, TheoryProof * tp, theory::eq::EqProof * pf, unsigned tb, const ProofLetMap& map) {
+  Debug("pf::uf") << std::endl << std::endl << "toStreamRecLFSC called. tb = " << tb << " . proof:" << std::endl;
+  pf->debug_print("pf::uf");
+  Debug("pf::uf") << std::endl;
+
+  if (tb == 0) {
+    // Special case: false was an input, so the proof is just "false".
+    if (pf->d_id == theory::eq::MERGED_THROUGH_EQUALITY &&
+        pf->d_node == NodeManager::currentNM()->mkConst(false)) {
+      out << "(clausify_false ";
+      out << ProofManager::getLitName(NodeManager::currentNM()->mkConst(false).notNode());
+      out << ")" << std::endl;
+      return Node();
+    }
+
+    Assert(pf->d_id == theory::eq::MERGED_THROUGH_TRANS);
+    Assert(!pf->d_node.isNull());
+    Assert(pf->d_children.size() >= 2);
+
+    int neg = -1;
+    theory::eq::EqProof subTrans;
+    subTrans.d_id = theory::eq::MERGED_THROUGH_TRANS;
+    subTrans.d_node = pf->d_node;
+
+    size_t i = 0;
+    while (i < pf->d_children.size()) {
+      // Look for the negative clause, with which we will form a contradiction.
+      if(!pf->d_children[i]->d_node.isNull() && pf->d_children[i]->d_node.getKind() == kind::NOT) {
+        Assert(neg < 0);
+        neg = i;
+        ++i;
+      }
+
+      // Handle congruence closures over equalities.
+      else if (pf->d_children[i]->d_id==theory::eq::MERGED_THROUGH_CONGRUENCE && pf->d_children[i]->d_node.isNull()) {
+        Debug("pf::uf") << "Handling congruence over equalities" << std::endl;
+
+        // Gather the sequence of consecutive congruence closures.
+        std::vector<const theory::eq::EqProof *> congruenceClosures;
+        unsigned count;
+        Debug("pf::uf") << "Collecting congruence sequence" << std::endl;
+        for (count = 0;
+             i + count < pf->d_children.size() &&
+             pf->d_children[i + count]->d_id==theory::eq::MERGED_THROUGH_CONGRUENCE &&
+             pf->d_children[i + count]->d_node.isNull();
+             ++count) {
+          Debug("pf::uf") << "Found a congruence: " << std::endl;
+          pf->d_children[i+count]->debug_print("pf::uf");
+          congruenceClosures.push_back(pf->d_children[i+count]);
+        }
+
+        Debug("pf::uf") << "Total number of congruences found: " << congruenceClosures.size() << std::endl;
+
+        // Determine if the "target" of the congruence sequence appears right before or right after the sequence.
+        bool targetAppearsBefore = true;
+        bool targetAppearsAfter = true;
+
+        if ((i == 0) || (i == 1 && neg == 0)) {
+          Debug("pf::uf") << "Target does not appear before" << std::endl;
+          targetAppearsBefore = false;
+        }
+
+        if ((i + count >= pf->d_children.size()) ||
+            (!pf->d_children[i + count]->d_node.isNull() &&
+             pf->d_children[i + count]->d_node.getKind() == kind::NOT)) {
+          Debug("pf::uf") << "Target does not appear after" << std::endl;
+          targetAppearsAfter = false;
+        }
+
+        // Assert that we have precisely one target clause.
+        Assert(targetAppearsBefore != targetAppearsAfter);
+
+        // Begin breaking up the congruences and ordering the equalities correctly.
+        std::vector<theory::eq::EqProof *> orderedEqualities;
+
+
+        // Insert target clause first.
+        if (targetAppearsBefore) {
+          orderedEqualities.push_back(pf->d_children[i - 1]);
+          // The target has already been added to subTrans; remove it.
+          subTrans.d_children.pop_back();
+        } else {
+          orderedEqualities.push_back(pf->d_children[i + count]);
+        }
+
+        // Start with the congruence closure closest to the target clause, and work our way back/forward.
+        if (targetAppearsBefore) {
+          for (unsigned j = 0; j < count; ++j) {
+            if (pf->d_children[i + j]->d_children[0]->d_id != theory::eq::MERGED_THROUGH_REFLEXIVITY)
+              orderedEqualities.insert(orderedEqualities.begin(), pf->d_children[i + j]->d_children[0]);
+            if (pf->d_children[i + j]->d_children[1]->d_id != theory::eq::MERGED_THROUGH_REFLEXIVITY)
+            orderedEqualities.insert(orderedEqualities.end(), pf->d_children[i + j]->d_children[1]);
+          }
+        } else {
+          for (unsigned j = 0; j < count; ++j) {
+            if (pf->d_children[i + count - 1 - j]->d_children[0]->d_id != theory::eq::MERGED_THROUGH_REFLEXIVITY)
+              orderedEqualities.insert(orderedEqualities.begin(), pf->d_children[i + count - 1 - j]->d_children[0]);
+            if (pf->d_children[i + count - 1 - j]->d_children[1]->d_id != theory::eq::MERGED_THROUGH_REFLEXIVITY)
+              orderedEqualities.insert(orderedEqualities.end(), pf->d_children[i + count - 1 - j]->d_children[1]);
+          }
+        }
+
+        // Copy the result into the main transitivity proof.
+        subTrans.d_children.insert(subTrans.d_children.end(), orderedEqualities.begin(), orderedEqualities.end());
+
+        // Increase i to skip over the children that have been processed.
+        i += count;
+        if (targetAppearsAfter) {
+          ++i;
+        }
+      }
+
+      // Else, just copy the child proof as is
+      else {
+        subTrans.d_children.push_back(pf->d_children[i]);
+        ++i;
+      }
+    }
+
+    bool disequalityFound = (neg >= 0);
+    if (!disequalityFound) {
+      Debug("pf::uf") << "A disequality was NOT found. UNSAT due to merged constants" << std::endl;
+      Debug("pf::uf") << "Proof for: " << pf->d_node << std::endl;
+      Assert(pf->d_node.getKind() == kind::EQUAL);
+      Assert(pf->d_node.getNumChildren() == 2);
+      Assert (pf->d_node[0].isConst() && pf->d_node[1].isConst());
+    }
+
+    Node n1;
+    std::stringstream ss;
+    Debug("pf::uf") << "\nsubtrans has " << subTrans.d_children.size() << " children\n";
+
+    if(!disequalityFound || subTrans.d_children.size() >= 2) {
+      n1 = toStreamRecLFSC(ss, tp, &subTrans, 1, map);
+    } else {
+      n1 = toStreamRecLFSC(ss, tp, subTrans.d_children[0], 1, map);
+      Debug("pf::uf") << "\nsubTrans unique child " << subTrans.d_children[0]->d_id << " was proven\ngot: " << n1 << std::endl;
+    }
+
+    Debug("pf::uf") << "\nhave proven: " << n1 << std::endl;
+
+    out << "(clausify_false (contra _ ";
+
+    if (disequalityFound) {
+      Node n2 = pf->d_children[neg]->d_node;
+      Assert(n2.getKind() == kind::NOT);
+      Debug("pf::uf") << "n2 is " << n2[0] << std::endl;
+
+      if (n2[0].getNumChildren() > 0) { Debug("pf::uf") << "\nn2[0]: " << n2[0][0] << std::endl; }
+      if (n1.getNumChildren() > 1) { Debug("pf::uf") << "n1[1]: " << n1[1] << std::endl; }
+
+      if(n2[0].getKind() == kind::APPLY_UF) {
+        out << "(trans _ _ _ _ ";
+
+        if (n1[0] == n2[0]) {
+          out << "(symm _ _ _ ";
+          out << ss.str();
+          out << ") ";
+        } else {
+          Assert(n1[1] == n2[0]);
+          out << ss.str();
+        }
+        out << "(pred_eq_f _ " << ProofManager::getLitName(n2[0]) << ")) t_t_neq_f))" << std::endl;
+      } else {
+        Assert((n1[0] == n2[0][0] && n1[1] == n2[0][1]) || (n1[1] == n2[0][0] && n1[0] == n2[0][1]));
+        if(n1[1] == n2[0][0]) {
+          out << "(symm _ _ _ " << ss.str() << ")";
+        } else {
+          out << ss.str();
+        }
+        out << " " << ProofManager::getLitName(n2[0]) << "))" << std::endl;
+      }
+    } else {
+      Node n2 = pf->d_node;
+      Assert(n2.getKind() == kind::EQUAL);
+      Assert((n1[0] == n2[0] && n1[1] == n2[1]) || (n1[1] == n2[0] && n1[0] == n2[1]));
+
+      out << ss.str();
+      out << " ";
+      ProofManager::getTheoryProofEngine()->printConstantDisequalityProof(out, n1[0].toExpr(), n1[1].toExpr(), map);
+      out << "))" << std::endl;
+    }
+
+    return Node();
+  }
+
+  switch(pf->d_id) {
+  case theory::eq::MERGED_THROUGH_CONGRUENCE: {
+    Debug("pf::uf") << "\nok, looking at congruence:\n";
+    pf->debug_print("pf::uf");
+    std::stack<const theory::eq::EqProof*> stk;
+    for(const theory::eq::EqProof* pf2 = pf; pf2->d_id == theory::eq::MERGED_THROUGH_CONGRUENCE; pf2 = pf2->d_children[0]) {
+      Assert(!pf2->d_node.isNull());
+      Assert(pf2->d_node.getKind() == kind::PARTIAL_APPLY_UF || pf2->d_node.getKind() == kind::BUILTIN || pf2->d_node.getKind() == kind::APPLY_UF || pf2->d_node.getKind() == kind::SELECT || pf2->d_node.getKind() == kind::STORE);
+      Assert(pf2->d_children.size() == 2);
+      out << "(cong _ _ _ _ _ _ ";
+      stk.push(pf2);
+    }
+    Assert(stk.top()->d_children[0]->d_id != theory::eq::MERGED_THROUGH_CONGRUENCE);
+    NodeBuilder<> b1(kind::PARTIAL_APPLY_UF), b2(kind::PARTIAL_APPLY_UF);
+    const theory::eq::EqProof* pf2 = stk.top();
+    stk.pop();
+    Assert(pf2->d_id == theory::eq::MERGED_THROUGH_CONGRUENCE);
+    Node n1 = toStreamRecLFSC(out, tp, pf2->d_children[0], tb + 1, map);
+    out << " ";
+    std::stringstream ss;
+    Node n2 = toStreamRecLFSC(ss, tp, pf2->d_children[1], tb + 1, map);
+    Debug("pf::uf") << "\nok, in FIRST cong[" << stk.size() << "]" << "\n";
+    pf2->debug_print("pf::uf");
+    Debug("pf::uf") << "looking at " << pf2->d_node << "\n";
+    Debug("pf::uf") << "           " << n1 << "\n";
+    Debug("pf::uf") << "           " << n2 << "\n";
+    int side = 0;
+    if(match(pf2->d_node, n1[0])) {
+      //if(tb == 1) {
+      Debug("pf::uf") << "SIDE IS 0\n";
+      //}
+      side = 0;
+    } else {
+      //if(tb == 1) {
+      Debug("pf::uf") << "SIDE IS 1\n";
+      //}
+      if(!match(pf2->d_node, n1[1])) {
+      Debug("pf::uf") << "IN BAD CASE, our first subproof is\n";
+      pf2->d_children[0]->debug_print("pf::uf");
+      }
+      Assert(match(pf2->d_node, n1[1]));
+      side = 1;
+    }
+    if(n1[side].getKind() == kind::APPLY_UF || n1[side].getKind() == kind::PARTIAL_APPLY_UF || n1[side].getKind() == kind::SELECT || n1[side].getKind() == kind::STORE) {
+      if(n1[side].getKind() == kind::APPLY_UF || n1[side].getKind() == kind::PARTIAL_APPLY_UF) {
+        b1 << n1[side].getOperator();
+      } else {
+        b1 << ProofManager::currentPM()->mkOp(n1[side].getOperator());
+      }
+      b1.append(n1[side].begin(), n1[side].end());
+    } else {
+      b1 << n1[side];
+    }
+    if(n1[1-side].getKind() == kind::PARTIAL_APPLY_UF || n1[1-side].getKind() == kind::APPLY_UF || n1[side].getKind() == kind::SELECT || n1[side].getKind() == kind::STORE) {
+      if(n1[1-side].getKind() == kind::PARTIAL_APPLY_UF || n1[1-side].getKind() == kind::APPLY_UF) {
+        b2 << n1[1-side].getOperator();
+      } else {
+        b2 << ProofManager::currentPM()->mkOp(n1[1-side].getOperator());
+      }
+      b2.append(n1[1-side].begin(), n1[1-side].end());
+    } else {
+      b2 << n1[1-side];
+    }
+    Debug("pf::uf") << "pf2->d_node " << pf2->d_node << std::endl;
+    Debug("pf::uf") << "b1.getNumChildren() " << b1.getNumChildren() << std::endl;
+    Debug("pf::uf") << "n1 " << n1 << std::endl;
+    Debug("pf::uf") << "n2 " << n2 << std::endl;
+    Debug("pf::uf") << "side " << side << std::endl;
+    if(pf2->d_node[b1.getNumChildren() - (pf2->d_node.getMetaKind() == kind::metakind::PARAMETERIZED ? 0 : 1)] == n2[side]) {
+      b1 << n2[side];
+      b2 << n2[1-side];
+      out << ss.str();
+    } else {
+      Assert(pf2->d_node[b1.getNumChildren() - (pf2->d_node.getMetaKind() == kind::metakind::PARAMETERIZED ? 0 : 1)] == n2[1-side]);
+      b1 << n2[1-side];
+      b2 << n2[side];
+      out << "(symm _ _ _ " << ss.str() << ")";
+    }
+    out << ")";
+    while(!stk.empty()) {
+      if(tb == 1) {
+      Debug("pf::uf") << "\nMORE TO DO\n";
+      }
+      pf2 = stk.top();
+      stk.pop();
+      Assert(pf2->d_id == theory::eq::MERGED_THROUGH_CONGRUENCE);
+      out << " ";
+      ss.str("");
+      n2 = toStreamRecLFSC(ss, tp, pf2->d_children[1], tb + 1, map);
+      Debug("pf::uf") << "\nok, in cong[" << stk.size() << "]" << "\n";
+      Debug("pf::uf") << "looking at " << pf2->d_node << "\n";
+      Debug("pf::uf") << "           " << n1 << "\n";
+      Debug("pf::uf") << "           " << n2 << "\n";
+      Debug("pf::uf") << "           " << b1 << "\n";
+      Debug("pf::uf") << "           " << b2 << "\n";
+      if(pf2->d_node[b1.getNumChildren()] == n2[side]) {
+        b1 << n2[side];
+        b2 << n2[1-side];
+        out << ss.str();
+      } else {
+        Assert(pf2->d_node[b1.getNumChildren()] == n2[1-side]);
+        b1 << n2[1-side];
+        b2 << n2[side];
+        out << "(symm _ _ _ " << ss.str() << ")";
+      }
+      out << ")";
+    }
+    n1 = b1;
+    n2 = b2;
+    Debug("pf::uf") << "at end assert, got " << pf2->d_node << "  and  " << n1 << std::endl;
+    if(pf2->d_node.getKind() == kind::PARTIAL_APPLY_UF) {
+      Assert(n1 == pf2->d_node);
+    }
+    if(n1.getOperator().getType().getNumChildren() == n1.getNumChildren() + 1) {
+      if(ProofManager::currentPM()->hasOp(n1.getOperator())) {
+        b1.clear(ProofManager::currentPM()->lookupOp(n2.getOperator()).getConst<Kind>());
+      } else {
+        b1.clear(kind::APPLY_UF);
+        b1 << n1.getOperator();
+      }
+      b1.append(n1.begin(), n1.end());
+      n1 = b1;
+      Debug("pf::uf") << "at[2] end assert, got " << pf2->d_node << "  and  " << n1 << std::endl;
+      if(pf2->d_node.getKind() == kind::APPLY_UF) {
+        Assert(n1 == pf2->d_node);
+      }
+    }
+    if(n2.getOperator().getType().getNumChildren() == n2.getNumChildren() + 1) {
+      if(ProofManager::currentPM()->hasOp(n2.getOperator())) {
+        b2.clear(ProofManager::currentPM()->lookupOp(n2.getOperator()).getConst<Kind>());
+      } else {
+        b2.clear(kind::APPLY_UF);
+        b2 << n2.getOperator();
+      }
+      b2.append(n2.begin(), n2.end());
+      n2 = b2;
+    }
+    Node n = (side == 0 ? eqNode(n1, n2) : eqNode(n2, n1));
+    if(tb == 1) {
+    Debug("pf::uf") << "\ncong proved: " << n << "\n";
+    }
+    return n;
+  }
+
+  case theory::eq::MERGED_THROUGH_REFLEXIVITY:
+    Assert(!pf->d_node.isNull());
+    Assert(pf->d_children.empty());
+    out << "(refl _ ";
+    tp->printTerm(NodeManager::currentNM()->toExpr(pf->d_node), out, map);
+    out << ")";
+    return eqNode(pf->d_node, pf->d_node);
+
+  case theory::eq::MERGED_THROUGH_EQUALITY:
+    Assert(!pf->d_node.isNull());
+    Assert(pf->d_children.empty());
+    out << ProofManager::getLitName(pf->d_node.negate());
+    return pf->d_node;
+
+  case theory::eq::MERGED_THROUGH_TRANS: {
+    Assert(!pf->d_node.isNull());
+    Assert(pf->d_children.size() >= 2);
+    std::stringstream ss;
+    Debug("pf::uf") << "\ndoing trans proof[[\n";
+    pf->debug_print("pf::uf");
+    Debug("pf::uf") << "\n";
+    Node n1 = toStreamRecLFSC(ss, tp, pf->d_children[0], tb + 1, map);
+    Debug("pf::uf") << "\ndoing trans proof, got n1 " << n1 << "\n";
+    if(tb == 1) {
+      Debug("pf::uf") << "\ntrans proof[0], got n1 " << n1 << "\n";
+    }
+
+    bool identicalEqualities = false;
+    bool evenLengthSequence;
+    Node nodeAfterEqualitySequence;
+
+    std::map<size_t, Node> childToStream;
+
+    for(size_t i = 1; i < pf->d_children.size(); ++i) {
+      std::stringstream ss1(ss.str()), ss2;
+      ss.str("");
+
+      // It is possible that we've already converted the i'th child to stream. If so,
+      // use previously stored result. Otherwise, convert and store.
+      Node n2;
+      if (childToStream.find(i) != childToStream.end())
+        n2 = childToStream[i];
+      else {
+        n2 = toStreamRecLFSC(ss2, tp, pf->d_children[i], tb + 1, map);
+        childToStream[i] = n2;
+      }
+
+      // The following branch is dedicated to handling sequences of identical equalities,
+      // i.e. trans[ a=b, a=b, a=b ].
+      //
+      // There are two cases:
+      //    1. The number of equalities is odd. Then, the sequence can be collapsed to just one equality,
+      //       i.e. a=b.
+      //    2. The number of equalities is even. Now, we have two options: a=a or b=b. To determine this,
+      //       we look at the node after the equality sequence. If it needs a, we go for a=a; and if it needs
+      //       b, we go for b=b. If there is no following node, we look at the goal of the transitivity proof,
+      //       and use it to determine which option we need.
+      if(n2.getKind() == kind::EQUAL) {
+        if (((n1[0] == n2[0]) && (n1[1] == n2[1])) || ((n1[0] == n2[1]) && (n1[1] == n2[0]))) {
+          // We are in a sequence of identical equalities
+
+          Debug("pf::uf") << "Detected identical equalities: " << std::endl << "\t" << n1 << std::endl;
+
+          if (!identicalEqualities) {
+            // The sequence of identical equalities has started just now
+            identicalEqualities = true;
+
+            Debug("pf::uf") << "The sequence is just beginning. Determining length..." << std::endl;
+
+            // Determine whether the length of this sequence is odd or even.
+            evenLengthSequence = true;
+            bool sequenceOver = false;
+            size_t j = i + 1;
+
+            while (j < pf->d_children.size() && !sequenceOver) {
+              std::stringstream dontCare;
+              nodeAfterEqualitySequence = toStreamRecLFSC(dontCare, tp, pf->d_children[j], tb + 1, map );
+
+              if (((nodeAfterEqualitySequence[0] == n1[0]) && (nodeAfterEqualitySequence[1] == n1[1])) ||
+                  ((nodeAfterEqualitySequence[0] == n1[1]) && (nodeAfterEqualitySequence[1] == n1[0]))) {
+                evenLengthSequence = !evenLengthSequence;
+              } else {
+                sequenceOver = true;
+              }
+
+              ++j;
+            }
+
+            if (evenLengthSequence) {
+              // If the length is even, we need to apply transitivity for the "correct" hand of the equality.
+
+              Debug("pf::uf") << "Equality sequence of even length" << std::endl;
+              Debug("pf::uf") << "n1 is: " << n1 << std::endl;
+              Debug("pf::uf") << "n2 is: " << n2 << std::endl;
+              Debug("pf::uf") << "pf-d_node is: " << pf->d_node << std::endl;
+              Debug("pf::uf") << "Next node is: " << nodeAfterEqualitySequence << std::endl;
+
+              ss << "(trans _ _ _ _ ";
+
+              // If the sequence is at the very end of the transitivity proof, use pf->d_node to guide us.
+              if (!sequenceOver) {
+                if (match(n1[0], pf->d_node[0])) {
+                  n1 = eqNode(n1[0], n1[0]);
+                  ss << ss1.str() << " (symm _ _ _ " << ss1.str() << ")";
+                } else if (match(n1[1], pf->d_node[1])) {
+                  n1 = eqNode(n1[1], n1[1]);
+                  ss << " (symm _ _ _ " << ss1.str() << ")" << ss1.str();
+                } else {
+                  Debug("pf::uf") << "Error: identical equalities over, but hands don't match what we're proving."
+                                     << std::endl;
+                  Assert(false);
+                }
+              } else {
+                // We have a "next node". Use it to guide us.
+
+                Assert(nodeAfterEqualitySequence.getKind() == kind::EQUAL);
+
+                if ((n1[0] == nodeAfterEqualitySequence[0]) || (n1[0] == nodeAfterEqualitySequence[1])) {
+
+                  // Eliminate n1[1]
+                  ss << ss1.str() << " (symm _ _ _ " << ss1.str() << ")";
+                  n1 = eqNode(n1[0], n1[0]);
+
+                } else if ((n1[1] == nodeAfterEqualitySequence[0]) || (n1[1] == nodeAfterEqualitySequence[1])) {
+
+                  // Eliminate n1[0]
+                  ss << " (symm _ _ _ " << ss1.str() << ")" << ss1.str();
+                  n1 = eqNode(n1[1], n1[1]);
+
+                } else {
+                  Debug("pf::uf") << "Error: even length sequence, but I don't know which hand to keep!" << std::endl;
+                  Assert(false);
+                }
+              }
+
+              ss << ")";
+
+            } else {
+              Debug("pf::uf") << "Equality sequence length is odd!" << std::endl;
+              ss.str(ss1.str());
+            }
+
+            Debug("pf::uf") << "Have proven: " << n1 << std::endl;
+          } else {
+            ss.str(ss1.str());
+          }
+
+          // Ignore the redundancy.
+          continue;
+        }
+      }
+
+      if (identicalEqualities) {
+        // We were in a sequence of identical equalities, but it has now ended. Resume normal operation.
+        identicalEqualities = false;
+      }
+
+      Debug("pf::uf") << "\ndoing trans proof, got n2 " << n2 << "\n";
+      if(tb == 1) {
+        Debug("pf::uf") << "\ntrans proof[" << i << "], got n2 " << n2 << "\n";
+        Debug("pf::uf") << (n2.getKind() == kind::EQUAL) << "\n";
+
+        if ((n1.getNumChildren() >= 2) && (n2.getNumChildren() >= 2)) {
+          Debug("pf::uf") << n1[0].getId() << " " << n1[1].getId() << " / " << n2[0].getId() << " " << n2[1].getId() << "\n";
+          Debug("pf::uf") << n1[0].getId() << " " << n1[0] << "\n";
+          Debug("pf::uf") << n1[1].getId() << " " << n1[1] << "\n";
+          Debug("pf::uf") << n2[0].getId() << " " << n2[0] << "\n";
+          Debug("pf::uf") << n2[1].getId() << " " << n2[1] << "\n";
+          Debug("pf::uf") << (n1[0] == n2[0]) << "\n";
+          Debug("pf::uf") << (n1[1] == n2[1]) << "\n";
+          Debug("pf::uf") << (n1[0] == n2[1]) << "\n";
+          Debug("pf::uf") << (n1[1] == n2[0]) << "\n";
+        }
+      }
+      ss << "(trans _ _ _ _ ";
+
+      if(n2.getKind() == kind::EQUAL && n1.getKind() == kind::EQUAL)
+        // Both elements of the transitivity rule are equalities/iffs
+      {
+        if(n1[0] == n2[0]) {
+            if(tb == 1) { Debug("pf::uf") << "case 1\n"; }
+            n1 = eqNode(n1[1], n2[1]);
+            ss << "(symm _ _ _ " << ss1.str() << ") " << ss2.str();
+        } else if(n1[1] == n2[1]) {
+          if(tb == 1) { Debug("pf::uf") << "case 2\n"; }
+          n1 = eqNode(n1[0], n2[0]);
+          ss << ss1.str() << " (symm _ _ _ " << ss2.str() << ")";
+        } else if(n1[0] == n2[1]) {
+            if(tb == 1) { Debug("pf::uf") << "case 3\n"; }
+            n1 = eqNode(n2[0], n1[1]);
+            ss << ss2.str() << " " << ss1.str();
+            if(tb == 1) { Debug("pf::uf") << "++ proved " << n1 << "\n"; }
+        } else if(n1[1] == n2[0]) {
+          if(tb == 1) { Debug("pf::uf") << "case 4\n"; }
+          n1 = eqNode(n1[0], n2[1]);
+          ss << ss1.str() << " " << ss2.str();
+        } else {
+          Warning() << "\n\ntrans proof failure at step " << i << "\n\n";
+          Warning() << "0 proves " << n1 << "\n";
+          Warning() << "1 proves " << n2 << "\n\n";
+          pf->debug_print("pf::uf",0);
+          //toStreamRec(Warning.getStream(), pf, 0);
+          Warning() << "\n\n";
+          Unreachable();
+        }
+        Debug("pf::uf") << "++ trans proof[" << i << "], now have " << n1 << std::endl;
+      } else if(n1.getKind() == kind::EQUAL) {
+        // n1 is an equality/iff, but n2 is a predicate
+        if(n1[0] == n2) {
+          n1 = n1[1].eqNode(NodeManager::currentNM()->mkConst(true));
+          ss << "(symm _ _ _ " << ss1.str() << ") (pred_eq_t _ " << ss2.str() << ")";
+        } else if(n1[1] == n2) {
+          n1 = n1[0].eqNode(NodeManager::currentNM()->mkConst(true));
+          ss << ss1.str() << " (pred_eq_t _ " << ss2.str() << ")";
+        } else {
+          Unreachable();
+        }
+      } else if(n2.getKind() == kind::EQUAL) {
+        // n2 is an equality/iff, but n1 is a predicate
+        if(n2[0] == n1) {
+          n1 = n2[1].eqNode(NodeManager::currentNM()->mkConst(true));
+          ss << "(symm _ _ _ " << ss2.str() << ") (pred_eq_t _ " << ss1.str() << ")";
+        } else if(n2[1] == n1) {
+          n1 = n2[0].eqNode(NodeManager::currentNM()->mkConst(true));
+          ss << ss2.str() << " (pred_eq_t _ " << ss1.str() << ")";
+        } else {
+          Unreachable();
+        }
+      } else {
+        // Both n1 and n2 are predicates.
+        // We want to prove b1 = b2, and we know that ((b1), (b2)) or ((not b1), (not b2))
+        Debug("gk::temp") << "Two-predicate case. pf->d_node = " << pf->d_node
+                          << ", n1 = " << n1 << ", n2 = " << n2 << std::endl;
+
+        if (n1.getKind() == kind::NOT) {
+          Assert(n2.getKind() == kind::NOT);
+          Assert(pf->d_node[0] == n1[0] || pf->d_node[0] == n2[0]);
+          Assert(pf->d_node[1] == n1[0] || pf->d_node[1] == n2[0]);
+          Assert(n1[0].getKind() == kind::BOOLEAN_TERM_VARIABLE);
+          Assert(n2[0].getKind() == kind::BOOLEAN_TERM_VARIABLE);
+
+          if (pf->d_node[0] == n1[0]) {
+            ss << "(false_preds_equal _ _ " << ss1.str() << " " << ss2.str() << ") ";
+            ss << "(pred_refl_neg _ " << ss2.str() << ")";
+          } else {
+            ss << "(false_preds_equal _ _ " << ss2.str() << " " << ss1.str() << ") ";
+            ss << "(pred_refl_neg _ " << ss1.str() << ")";
+          }
+          n1 = pf->d_node;
+
+        } else if (n1.getKind() == kind::BOOLEAN_TERM_VARIABLE) {
+          Assert(n2.getKind() == kind::BOOLEAN_TERM_VARIABLE);
+          Assert(pf->d_node[0] == n1 || pf->d_node[0] == n2);
+          Assert(pf->d_node[1] == n1 || pf->d_node[2] == n2);
+
+          if (pf->d_node[0] == n1) {
+            ss << "(true_preds_equal _ _ " << ss1.str() << " " << ss2.str() << ") ";
+            ss << "(pred_refl_pos _ " << ss2.str() << ")";
+          } else {
+            ss << "(true_preds_equal _ _ " << ss2.str() << " " << ss1.str() << ") ";
+            ss << "(pred_refl_pos _ " << ss1.str() << ")";
+          }
+          n1 = pf->d_node;
+
+        } else {
+
+          Unreachable();
+        }
+      }
+
+      ss << ")";
+    }
+
+    out << ss.str();
+    Debug("pf::uf") << "\n++ trans proof done, have proven " << n1 << std::endl;
+    return n1;
+  }
+
+  default:
+    Assert(!pf->d_node.isNull());
+    Assert(pf->d_children.empty());
+    Debug("pf::uf") << "theory proof: " << pf->d_node << " by rule " << int(pf->d_id) << std::endl;
+    AlwaysAssert(false);
+    return pf->d_node;
+  }
+}
+
+UFProof::UFProof(theory::uf::TheoryUF* uf, TheoryProofEngine* pe)
+  : TheoryProof(uf, pe)
+{}
+
+void UFProof::registerTerm(Expr term) {
+  // already registered
+  if (d_declarations.find(term) != d_declarations.end())
+    return;
+
+  Type type = term.getType();
+  if (type.isSort()) {
+    // declare uninterpreted sorts
+    d_sorts.insert(type);
+  }
+
+  if (term.getKind() == kind::APPLY_UF) {
+    Expr function = term.getOperator();
+    d_declarations.insert(function);
+  }
+
+  if (term.isVariable()) {
+    d_declarations.insert(term);
+  }
+
+  // recursively declare all other terms
+  for (unsigned i = 0; i < term.getNumChildren(); ++i) {
+    // could belong to other theories
+    d_proofEngine->registerTerm(term[i]);
+  }
+}
+
+void LFSCUFProof::printOwnedTerm(Expr term, std::ostream& os, const ProofLetMap& map) {
+  Debug("pf::uf") << std::endl << "(pf::uf) LFSCUfProof::printOwnedTerm: term = " << term << std::endl;
+
+  Assert (theory::Theory::theoryOf(term) == theory::THEORY_UF);
+
+  if (term.getKind() == kind::VARIABLE ||
+      term.getKind() == kind::SKOLEM ||
+      term.getKind() == kind::BOOLEAN_TERM_VARIABLE) {
+    os << term;
+    return;
+  }
+
+  Assert (term.getKind() == kind::APPLY_UF);
+
+  if(term.getType().isBoolean()) {
+    os << "(p_app ";
+  }
+  Expr func = term.getOperator();
+  for (unsigned i = 0; i < term.getNumChildren(); ++i) {
+    os << "(apply _ _ ";
+  }
+  os << func << " ";
+  for (unsigned i = 0; i < term.getNumChildren(); ++i) {
+    bool convertToBool = (term[i].getType().isBoolean() && !d_proofEngine->printsAsBool(term[i]));
+    if (convertToBool) os << "(f_to_b ";
+    d_proofEngine->printBoundTerm(term[i], os, map);
+    if (convertToBool) os << ")";
+    os << ")";
+  }
+  if(term.getType().isBoolean()) {
+    os << ")";
+  }
+}
+
+void LFSCUFProof::printOwnedSort(Type type, std::ostream& os) {
+  Debug("pf::uf") << std::endl << "(pf::uf) LFSCArrayProof::printOwnedSort: type is: " << type << std::endl;
+
+  Assert (type.isSort());
+  os << type;
+}
+
+void LFSCUFProof::printTheoryLemmaProof(std::vector<Expr>& lemma, std::ostream& os, std::ostream& paren, const ProofLetMap& map) {
+  os << " ;; UF Theory Lemma \n;;";
+  for (unsigned i = 0; i < lemma.size(); ++i) {
+    os << lemma[i] <<" ";
+  }
+  os <<"\n";
+  //os << " (clausify_false trust)";
+  UFProof::printTheoryLemmaProof(lemma, os, paren, map);
+}
+
+void LFSCUFProof::printSortDeclarations(std::ostream& os, std::ostream& paren) {
+  for (TypeSet::const_iterator it = d_sorts.begin(); it != d_sorts.end(); ++it) {
+    if (!ProofManager::currentPM()->wasPrinted(*it)) {
+      os << "(% " << *it << " sort\n";
+      paren << ")";
+      ProofManager::currentPM()->markPrinted(*it);
+    }
+  }
+}
+
+void LFSCUFProof::printTermDeclarations(std::ostream& os, std::ostream& paren) {
+  // declaring the terms
+  Debug("pf::uf") << "LFSCUFProof::printTermDeclarations called" << std::endl;
+
+  for (ExprSet::const_iterator it = d_declarations.begin(); it != d_declarations.end(); ++it) {
+    Expr term = *it;
+
+    os << "(% " << ProofManager::sanitize(term) << " ";
+    os << "(term ";
+
+    Type type = term.getType();
+    if (type.isFunction()) {
+      std::ostringstream fparen;
+      FunctionType ftype = (FunctionType)type;
+      std::vector<Type> args = ftype.getArgTypes();
+      args.push_back(ftype.getRangeType());
+      os << "(arrow";
+      for (unsigned i = 0; i < args.size(); i++) {
+        Type arg_type = args[i];
+        os << " ";
+        d_proofEngine->printSort(arg_type, os);
+        if (i < args.size() - 2) {
+          os << " (arrow";
+          fparen << ")";
+        }
+      }
+      os << fparen.str() << "))\n";
+    } else {
+      Assert (term.isVariable());
+      os << type << ")\n";
+    }
+    paren << ")";
+  }
+
+  Debug("pf::uf") << "LFSCUFProof::printTermDeclarations done" << std::endl;
+}
+
+void LFSCUFProof::printDeferredDeclarations(std::ostream& os, std::ostream& paren) {
+  // Nothing to do here at this point.
+}
+
+void LFSCUFProof::printAliasingDeclarations(std::ostream& os, std::ostream& paren, const ProofLetMap &globalLetMap) {
+  // Nothing to do here at this point.
+}
+
+bool LFSCUFProof::printsAsBool(const Node &n)
+{
+  Debug("gk::temp") << "\nUF printsAsBool: " << n << std::endl;
+  if (n.getKind() == kind::BOOLEAN_TERM_VARIABLE)
+    return true;
+
+  return false;
+}
+
+} /* namespace CVC4 */
diff --git a/src/proof/uf_proof.h b/src/proof/uf_proof.h
new file mode 100644
index 0000000..221a50f
--- /dev/null
+++ b/src/proof/uf_proof.h
@@ -0,0 +1,81 @@
+/*********************                                                        */
+/*! \file uf_proof.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Guy Katz, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief UF proof
+ **
+ ** UF proof
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__UF__PROOF_H
+#define __CVC4__UF__PROOF_H
+
+#include "expr/expr.h"
+#include "proof/proof_manager.h"
+#include "theory/uf/equality_engine.h"
+
+namespace CVC4 {
+
+//proof object outputted by TheoryUF
+class ProofUF : public Proof {
+private:
+  static Node toStreamRecLFSC(std::ostream& out, TheoryProof * tp, theory::eq::EqProof * pf, unsigned tb, const ProofLetMap& map);
+public:
+  ProofUF( theory::eq::EqProof * pf ) : d_proof( pf ) {}
+  //it is simply an equality engine proof
+  theory::eq::EqProof * d_proof;
+  void toStream(std::ostream& out);
+  void toStream(std::ostream& out, const ProofLetMap& map);
+  static void toStreamLFSC(std::ostream& out, TheoryProof * tp, theory::eq::EqProof * pf, const ProofLetMap& map);
+};
+
+
+namespace theory {
+namespace uf {
+class TheoryUF;
+}
+}
+
+typedef __gnu_cxx::hash_set<Type, TypeHashFunction > TypeSet;
+
+
+class UFProof : public TheoryProof {
+protected:
+  TypeSet d_sorts;        // all the uninterpreted sorts in this theory
+  ExprSet d_declarations; // all the variable/function declarations
+
+public:
+  UFProof(theory::uf::TheoryUF* uf, TheoryProofEngine* proofEngine);
+
+  virtual void registerTerm(Expr term);
+};
+
+class LFSCUFProof : public UFProof {
+public:
+  LFSCUFProof(theory::uf::TheoryUF* uf, TheoryProofEngine* proofEngine)
+    : UFProof(uf, proofEngine)
+  {}
+  virtual void printOwnedTerm(Expr term, std::ostream& os, const ProofLetMap& map);
+  virtual void printOwnedSort(Type type, std::ostream& os);
+  virtual void printTheoryLemmaProof(std::vector<Expr>& lemma, std::ostream& os, std::ostream& paren, const ProofLetMap& map);
+  virtual void printSortDeclarations(std::ostream& os, std::ostream& paren);
+  virtual void printTermDeclarations(std::ostream& os, std::ostream& paren);
+  virtual void printDeferredDeclarations(std::ostream& os, std::ostream& paren);
+  virtual void printAliasingDeclarations(std::ostream& os, std::ostream& paren, const ProofLetMap &globalLetMap);
+
+  bool printsAsBool(const Node &n);
+};
+
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__UF__PROOF_H */
diff --git a/src/proof/unsat_core.cpp b/src/proof/unsat_core.cpp
new file mode 100644
index 0000000..4c940e4
--- /dev/null
+++ b/src/proof/unsat_core.cpp
@@ -0,0 +1,56 @@
+/*********************                                                        */
+/*! \file unsat_core.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Clark Barrett
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Representation of unsat cores
+ **
+ ** Representation of unsat cores.
+ **/
+
+#include "proof/unsat_core.h"
+
+#include "expr/expr_iomanip.h"
+#include "options/base_options.h"
+#include "printer/printer.h"
+#include "smt/command.h"
+#include "smt/smt_engine_scope.h"
+
+namespace CVC4 {
+
+void UnsatCore::initMessage() const {
+  Debug("core") << "UnsatCore size " << d_core.size() << std::endl;
+}
+
+UnsatCore::const_iterator UnsatCore::begin() const {
+  return d_core.begin();
+}
+
+UnsatCore::const_iterator UnsatCore::end() const {
+  return d_core.end();
+}
+
+void UnsatCore::toStream(std::ostream& out) const {
+  smt::SmtScope smts(d_smt);
+  expr::ExprDag::Scope scope(out, false);
+  Printer::getPrinter(options::outputLanguage())->toStream(out, *this);
+}
+
+void UnsatCore::toStream(std::ostream& out, const std::map<Expr, std::string>& names) const {
+  smt::SmtScope smts(d_smt);
+  expr::ExprDag::Scope scope(out, false);
+  Printer::getPrinter(options::outputLanguage())->toStream(out, *this, names);
+}
+
+std::ostream& operator<<(std::ostream& out, const UnsatCore& core) {
+  core.toStream(out);
+  return out;
+}
+
+}/* CVC4 namespace */
diff --git a/src/proof/unsat_core.h b/src/proof/unsat_core.h
new file mode 100644
index 0000000..a238f0a
--- /dev/null
+++ b/src/proof/unsat_core.h
@@ -0,0 +1,73 @@
+/*********************                                                        */
+/*! \file unsat_core.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Liana Hadarean
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__UNSAT_CORE_H
+#define __CVC4__UNSAT_CORE_H
+
+#include <iosfwd>
+#include <vector>
+
+#include "expr/expr.h"
+
+namespace CVC4 {
+
+class SmtEngine;
+class UnsatCore;
+
+std::ostream& operator<<(std::ostream& out, const UnsatCore& core) CVC4_PUBLIC;
+
+class CVC4_PUBLIC UnsatCore {
+  friend std::ostream& operator<<(std::ostream&, const UnsatCore&);
+
+  /** The SmtEngine we're associated with */
+  SmtEngine* d_smt;
+
+  std::vector<Expr> d_core;
+
+  void initMessage() const;
+
+public:
+  UnsatCore() : d_smt(NULL) {}
+
+  template <class T>
+  UnsatCore(SmtEngine* smt, T begin, T end) : d_smt(smt), d_core(begin, end) {
+    initMessage();
+  }
+
+  ~UnsatCore() {}
+
+  /** get the smt engine that this unsat core is hooked up to */
+  SmtEngine* getSmtEngine() { return d_smt; }
+
+  size_t size() const { return d_core.size(); }
+
+  typedef std::vector<Expr>::const_iterator iterator;
+  typedef std::vector<Expr>::const_iterator const_iterator;
+
+  const_iterator begin() const;
+  const_iterator end() const;
+
+  void toStream(std::ostream& out) const;
+  void toStream(std::ostream& out, const std::map<Expr, std::string>& names) const;
+
+};/* class UnsatCore */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__UNSAT_CORE_H */
diff --git a/src/proof/unsat_core.i b/src/proof/unsat_core.i
new file mode 100644
index 0000000..cee78da
--- /dev/null
+++ b/src/proof/unsat_core.i
@@ -0,0 +1,69 @@
+%{
+#include "proof/unsat_core.h"
+
+#ifdef SWIGJAVA
+
+#include "bindings/java_iterator_adapter.h"
+#include "bindings/java_stream_adapters.h"
+
+#endif /* SWIGJAVA */
+%}
+
+%ignore CVC4::operator<<(std::ostream&, const UnsatCore&);
+
+#ifdef SWIGJAVA
+
+// Instead of UnsatCore::begin() and end(), create an
+// iterator() method on the Java side that returns a Java-style
+// Iterator.
+%ignore CVC4::UnsatCore::begin();
+%ignore CVC4::UnsatCore::end();
+%ignore CVC4::UnsatCore::begin() const;
+%ignore CVC4::UnsatCore::end() const;
+%extend CVC4::UnsatCore {
+  CVC4::JavaIteratorAdapter<CVC4::UnsatCore> iterator() {
+    return CVC4::JavaIteratorAdapter<CVC4::UnsatCore>(*$self);
+  }
+}
+
+// UnsatCore is "iterable" on the Java side
+%typemap(javainterfaces) CVC4::UnsatCore "java.lang.Iterable<edu.nyu.acsys.CVC4.Expr>";
+
+// the JavaIteratorAdapter should not be public, and implements Iterator
+%typemap(javaclassmodifiers) CVC4::JavaIteratorAdapter<CVC4::UnsatCore> "class";
+%typemap(javainterfaces) CVC4::JavaIteratorAdapter<CVC4::UnsatCore> "java.util.Iterator<edu.nyu.acsys.CVC4.Expr>";
+// add some functions to the Java side (do it here because there's no way to do these in C++)
+%typemap(javacode) CVC4::JavaIteratorAdapter<CVC4::UnsatCore> "
+  public void remove() {
+    throw new java.lang.UnsupportedOperationException();
+  }
+
+  public edu.nyu.acsys.CVC4.Expr next() {
+    if(hasNext()) {
+      return getNext();
+    } else {
+      throw new java.util.NoSuchElementException();
+    }
+  }
+"
+// getNext() just allows C++ iterator access from Java-side next(), make it private
+%javamethodmodifiers CVC4::JavaIteratorAdapter<CVC4::UnsatCore>::getNext() "private";
+
+// map the types appropriately
+%typemap(jni) CVC4::UnsatCore::const_iterator::value_type "jobject";
+%typemap(jtype) CVC4::UnsatCore::const_iterator::value_type "edu.nyu.acsys.CVC4.Expr";
+%typemap(jstype) CVC4::UnsatCore::const_iterator::value_type "edu.nyu.acsys.CVC4.Expr";
+%typemap(javaout) CVC4::UnsatCore::const_iterator::value_type { return $jnicall; }
+
+#endif /* SWIGJAVA */
+
+%include "proof/unsat_core.h"
+
+#ifdef SWIGJAVA
+
+%include "bindings/java_iterator_adapter.h"
+%include "bindings/java_stream_adapters.h"
+
+%template(JavaIteratorAdapter_UnsatCore) CVC4::JavaIteratorAdapter<CVC4::UnsatCore>;
+
+#endif /* SWIGJAVA */
diff --git a/src/prop/bvminisat/LICENSE b/src/prop/bvminisat/LICENSE
new file mode 100644
index 0000000..22816ff
--- /dev/null
+++ b/src/prop/bvminisat/LICENSE
@@ -0,0 +1,21 @@
+MiniSat -- Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+           Copyright (c) 2007-2010  Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/src/prop/bvminisat/Makefile b/src/prop/bvminisat/Makefile
new file mode 100644
index 0000000..972a2e6
--- /dev/null
+++ b/src/prop/bvminisat/Makefile
@@ -0,0 +1,848 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# src/prop/bvminisat/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+VPATH = ../../../../../../src/prop/bvminisat
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/cvc4
+pkgincludedir = $(includedir)/cvc4
+pkglibdir = $(libdir)/cvc4
+pkglibexecdir = $(libexecdir)/cvc4
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-pc-linux-gnu
+host_triplet = x86_64-pc-linux-gnu
+target_triplet = x86_64-pc-linux-gnu
+subdir = src/prop/bvminisat
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libbvminisat_la_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am_libbvminisat_la_OBJECTS = core/Solver.lo simp/SimpSolver.lo \
+	bvminisat.lo
+libbvminisat_la_OBJECTS = $(am_libbvminisat_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_$(V))
+am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_$(V))
+am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(libbvminisat_la_SOURCES)
+DIST_SOURCES = $(libbvminisat_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp \
+	README
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = 
+ABC_LDFLAGS = 
+ABC_LIBS = 
+ACLOCAL = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/missing aclocal-1.15
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 0
+ANTLR = /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/antlr-3.4/bin/antlr3
+ANTLR_HOME = 
+ANTLR_INCLUDES = -I/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/antlr-3.4/include
+ANTLR_LDFLAGS = -L/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/antlr-3.4/lib -lantlr3c
+AR = ar
+AUTOCONF = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/missing autoconf
+AUTOHEADER = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/missing autoheader
+AUTOMAKE = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/missing automake-1.15
+AWK = mawk
+BOOST_CPPFLAGS =  -pthread
+BOOST_LDPATH = /usr/local/lib
+BOOST_ROOT = 
+BOOST_SYSTEM_LDFLAGS = -L/usr/local/lib -Wl,-rpath -Wl,/usr/local/lib
+BOOST_SYSTEM_LDPATH = /usr/local/lib
+BOOST_SYSTEM_LIBS = -lboost_system
+BOOST_THREAD_LDFLAGS = -L/usr/local/lib -Wl,-rpath -Wl,/usr/local/lib
+BOOST_THREAD_LDPATH = /usr/local/lib
+BOOST_THREAD_LIBS = -lboost_thread -lboost_system -pthread
+BOOST_THREAD_WIN32_LDFLAGS = 
+BOOST_THREAD_WIN32_LDPATH = 
+BOOST_THREAD_WIN32_LIBS = 
+BUILDING_SHARED = 1
+BUILDING_STATIC = 0
+CAMLP4O = 
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -O3 -ggdb3 -Wno-deprecated -fexceptions
+CLN_CFLAGS = 
+CLN_LIBS = 
+CPP = gcc -E
+CPPFLAGS =  -pthread -DCVC4_PROOF -DCVC4_STATISTICS_ON -DNDEBUG -DCVC4_DUMPING
+CRYPTOMINISAT_HOME = 
+CRYPTOMINISAT_LDFLAGS = 
+CRYPTOMINISAT_LIBS = 
+CSHARP_CPPFLAGS = 
+CVC4_BINDINGS_LIBRARY_VERSION = 3:0:0
+CVC4_BUILD_LIBCOMPAT = yes
+CVC4_COMPAT_LIBRARY_VERSION = 3:0:0
+CVC4_HAS_THREADS = 1
+CVC4_JAVA_MODULE_EXT = .so
+CVC4_LANGUAGE_BINDINGS = 
+CVC4_LIBRARY_VERSION = 3:0:0
+CVC4_NEED_INT64_T_OVERLOADS = 0
+CVC4_PARSER_LIBRARY_VERSION = 3:0:0
+CVC4_TLS = __thread
+CVC4_TLS_SUPPORTED = 1
+CVC4_USE_CLN_IMP = 0
+CVC4_USE_GMP_IMP = 1
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -O3 -ggdb3 -Wno-deprecated
+CXXTEST = /usr/bin
+CXXTESTGEN = /usr/bin/cxxtestgen
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DISTCHECK_CONFIGURE_FLAGS =  '--with-boost='
+DLLTOOL = false
+DOXYGEN_EXTRACT_PRIVATE = NO
+DOXYGEN_EXTRACT_STATIC = NO
+DOXYGEN_PAPER_SIZE = 
+DSYMUTIL = 
+DUMPBIN = 
+DX_CONFIG = config/doxygen.cfg
+DX_DOCDIR = ../../../doc/doxygen
+DX_DOT = /usr/bin/dot
+DX_DOXYGEN = /usr/bin/doxygen
+DX_DVIPS = 
+DX_EGREP = /bin/egrep
+DX_ENV =  SRCDIR='../../..' PROJECT='cvc4' DOCDIR='../../../doc/doxygen' VERSION='1.5-prerelease' PERL_PATH='/usr/bin/perl' HAVE_DOT='YES' DOT_PATH='/usr/bin' GENERATE_MAN='NO' GENERATE_RTF='NO' GENERATE_XML='NO' GENERATE_HTMLHELP='NO' GENERATE_CHI='NO' GENERATE_HTML='YES' GENERATE_LATEX='YES'
+DX_FLAG_DX_CURRENT_FEATURE = 
+DX_FLAG_chi = 0
+DX_FLAG_chm = 0
+DX_FLAG_doc = 1
+DX_FLAG_dot = 1
+DX_FLAG_html = 1
+DX_FLAG_man = 0
+DX_FLAG_pdf = 1
+DX_FLAG_ps = 0
+DX_FLAG_rtf = 0
+DX_FLAG_xml = 0
+DX_HHC = 
+DX_LATEX = 
+DX_MAKEINDEX = /usr/bin/makeindex
+DX_PDFLATEX = /usr/bin/pdflatex
+DX_PERL = /usr/bin/perl
+DX_PROJECT = cvc4
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+FGREP = /bin/grep -F
+FLAG_VISIBILITY_HIDDEN = -fvisibility=hidden
+FNO_STRICT_ALIASING = -fno-strict-aliasing
+GLPK_HOME = 
+GLPK_LDFLAGS = 
+GLPK_LIBS = 
+GREP = /bin/grep
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+JAR = jar
+JAVA = java
+JAVAC = javac
+JAVAH = javah
+JAVA_CPPFLAGS = 
+LD = /usr/bin/ld -m elf_x86_64
+LDFLAGS = 
+LIBOBJS =  ${LIBOBJDIR}strtok_r$U.o ${LIBOBJDIR}ffs$U.o
+LIBS = -lgmp 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LIPO = 
+LN_S = ln -s
+LTLIBOBJS =  ${LIBOBJDIR}strtok_r$U.lo ${LIBOBJDIR}ffs$U.lo
+LT_SYS_LIBRARY_PATH = 
+MAINT = 
+MAKEINFO = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/missing makeinfo
+MANIFEST_TOOL = :
+MAN_DATE = March 2017
+MKDIR_P = /bin/mkdir -p
+NM = /usr/bin/nm -B
+NMEDIT = 
+OBJDUMP = objdump
+OBJEXT = o
+OCAMLC = 
+OCAMLFIND = 
+OCAMLMKTOP = 
+OTOOL = 
+OTOOL64 = 
+PACKAGE = cvc4
+PACKAGE_BUGREPORT = cvc-bugs at cs.nyu.edu
+PACKAGE_NAME = cvc4
+PACKAGE_STRING = cvc4 1.5-prerelease
+PACKAGE_TARNAME = cvc4
+PACKAGE_URL = 
+PACKAGE_VERSION = 1.5-prerelease
+PATH_SEPARATOR = :
+PERL = perl
+PERL_CPPFLAGS = 
+PHP_CPPFLAGS = 
+PKG_CONFIG = 
+PYTHON = python
+PYTHON_CONFIG = 
+PYTHON_CXXFLAGS = 
+PYTHON_EXEC_PREFIX = 
+PYTHON_INCLUDE = 
+PYTHON_PLATFORM = 
+PYTHON_PREFIX = 
+PYTHON_VERSION = 
+RANLIB = ranlib
+READLINE_LIBS = 
+RUBY_CPPFLAGS = 
+RUN_REGRESSION_ARGS = --proof
+SED = /bin/sed
+SET_MAKE = 
+SHELL = /bin/bash
+STATIC_BINARY = 0
+STRIP = strip
+SWIG = swig
+TCL_CPPFLAGS = 
+TESTS_ENVIRONMENT = 
+TEST_CPPFLAGS = 
+TEST_CXXFLAGS = 
+TEST_LDFLAGS = 
+VERSION = 1.5-prerelease
+WERROR = -Werror
+WNO_CONVERSION_NULL = -Wno-conversion-null
+WNO_PARENTHESES = -Wno-parentheses
+WNO_TAUTOLOGICAL_COMPARE = -Wno-tautological-compare
+WNO_UNINITIALIZED = -Wno-uninitialized
+WNO_UNUSED_VARIABLE = -Wno-unused-variable
+abs_builddir = /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/builds/x86_64-pc-linux-gnu/production/src/prop/bvminisat
+abs_srcdir = /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/builds/x86_64-pc-linux-gnu/production/../../../src/prop/bvminisat
+abs_top_builddir = /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/builds/x86_64-pc-linux-gnu/production
+abs_top_srcdir = /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/builds/x86_64-pc-linux-gnu/production/../../..
+ac_ct_AR = ar
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DUMPBIN = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = tar --format=posix -chf - "$$tardir"
+am__untar = tar -xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-pc-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = pc
+builddir = .
+cvc4_LDFLAGS = 
+cvc4_config_cmdline = --with-antlr-dir=/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/antlr-3.4 ANTLR=/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/antlr-3.4/bin/antlr3
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-pc-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = pc
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mk_empty = 
+mk_if = if
+mk_include = include
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pcvc4_LDFLAGS = 
+pdfdir = ${docdir}
+pkgpyexecdir = 
+pkgpythondir = 
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+pyexecdir = 
+pythondir = 
+runstatedir = ${localstatedir}/run
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = ../../../../../../src/prop/bvminisat
+subdirs =  proofs/lfsc_checker
+sysconfdir = ${prefix}/etc
+target = x86_64-pc-linux-gnu
+target_alias = 
+target_cpu = x86_64
+target_os = linux-gnu
+target_vendor = pc
+top_build_prefix = ../../../
+top_builddir = ../../..
+top_srcdir = ../../../../../..
+zz_cvc4_use_personal_make_rules = 
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4LIB \
+	-D __STDC_LIMIT_MACROS \
+	-D __STDC_FORMAT_MACROS \
+	-I./../.. -I../../../../../../src/prop/bvminisat/../../include -I../../../../../../src/prop/bvminisat/ -I../../../../../../src/prop/bvminisat/../..
+
+AM_CXXFLAGS = -Wall -Wno-parentheses -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
+noinst_LTLIBRARIES = libbvminisat.la
+libbvminisat_la_SOURCES = \
+	core/Dimacs.h \
+	core/Solver.cc \
+	core/Solver.h \
+	core/SolverTypes.h \
+	simp/SimpSolver.cc \
+	simp/SimpSolver.h \
+	mtl/Alg.h \
+	mtl/Alloc.h \
+	mtl/Heap.h \
+	mtl/IntTypes.h \
+	mtl/Map.h \
+	mtl/Queue.h \
+	mtl/Sort.h \
+	mtl/Vec.h \
+	mtl/XAlloc.h \
+	utils/Options.h \
+	bvminisat.h \
+	bvminisat.cpp
+
+EXTRA_DIST = \
+	core/Main.cc \
+	core/Makefile \
+	doc/ReleaseNotes-2.2.0.txt \
+	simp/Main.cc \
+	simp/Makefile \
+	README \
+	LICENSE \
+	mtl/config.mk \
+	mtl/template.mk \
+	utils/Options.cc \
+	utils/ParseUtils.h \
+	utils/System.h \
+	utils/System.cc \
+	Makefile
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cc .cpp .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/prop/bvminisat/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/prop/bvminisat/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+core/$(am__dirstamp):
+	@$(MKDIR_P) core
+	@: > core/$(am__dirstamp)
+core/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) core/$(DEPDIR)
+	@: > core/$(DEPDIR)/$(am__dirstamp)
+core/Solver.lo: core/$(am__dirstamp) core/$(DEPDIR)/$(am__dirstamp)
+simp/$(am__dirstamp):
+	@$(MKDIR_P) simp
+	@: > simp/$(am__dirstamp)
+simp/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) simp/$(DEPDIR)
+	@: > simp/$(DEPDIR)/$(am__dirstamp)
+simp/SimpSolver.lo: simp/$(am__dirstamp) \
+	simp/$(DEPDIR)/$(am__dirstamp)
+
+libbvminisat.la: $(libbvminisat_la_OBJECTS) $(libbvminisat_la_DEPENDENCIES) $(EXTRA_libbvminisat_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK)  $(libbvminisat_la_OBJECTS) $(libbvminisat_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+	-rm -f core/*.$(OBJEXT)
+	-rm -f core/*.lo
+	-rm -f simp/*.$(OBJEXT)
+	-rm -f simp/*.lo
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/bvminisat.Plo
+include core/$(DEPDIR)/Solver.Plo
+include simp/$(DEPDIR)/SimpSolver.Plo
+
+.cc.o:
+	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cc.lo:
+	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Plo
+#	$(AM_V_CXX)source='$<' object='$@' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(LTCXXCOMPILE) -c -o $@ $<
+
+.cpp.o:
+	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Plo
+#	$(AM_V_CXX)source='$<' object='$@' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+	-rm -rf core/.libs core/_libs
+	-rm -rf simp/.libs simp/_libs
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f core/$(DEPDIR)/$(am__dirstamp)
+	-rm -f core/$(am__dirstamp)
+	-rm -f simp/$(DEPDIR)/$(am__dirstamp)
+	-rm -f simp/$(am__dirstamp)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR) core/$(DEPDIR) simp/$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR) core/$(DEPDIR) simp/$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/prop/bvminisat/Makefile.am b/src/prop/bvminisat/Makefile.am
new file mode 100644
index 0000000..d34a4c1
--- /dev/null
+++ b/src/prop/bvminisat/Makefile.am
@@ -0,0 +1,44 @@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4LIB \
+	-D __STDC_LIMIT_MACROS \
+	-D __STDC_FORMAT_MACROS \
+	-I at builddir@/../.. -I at srcdir@/../../include -I at srcdir@/ -I at srcdir@/../..
+AM_CXXFLAGS = -Wall -Wno-parentheses -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
+
+noinst_LTLIBRARIES = libbvminisat.la
+libbvminisat_la_SOURCES = \
+	core/Dimacs.h \
+	core/Solver.cc \
+	core/Solver.h \
+	core/SolverTypes.h \
+	simp/SimpSolver.cc \
+	simp/SimpSolver.h \
+	mtl/Alg.h \
+	mtl/Alloc.h \
+	mtl/Heap.h \
+	mtl/IntTypes.h \
+	mtl/Map.h \
+	mtl/Queue.h \
+	mtl/Sort.h \
+	mtl/Vec.h \
+	mtl/XAlloc.h \
+	utils/Options.h \
+	bvminisat.h \
+	bvminisat.cpp
+
+EXTRA_DIST = \
+	core/Main.cc \
+	core/Makefile \
+	doc/ReleaseNotes-2.2.0.txt \
+	simp/Main.cc \
+	simp/Makefile \
+	README \
+	LICENSE \
+	mtl/config.mk \
+	mtl/template.mk \
+	utils/Options.cc \
+	utils/ParseUtils.h \
+	utils/System.h \
+	utils/System.cc \
+	Makefile
+
diff --git a/src/prop/bvminisat/Makefile.in b/src/prop/bvminisat/Makefile.in
new file mode 100644
index 0000000..0de3903
--- /dev/null
+++ b/src/prop/bvminisat/Makefile.in
@@ -0,0 +1,848 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = src/prop/bvminisat
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libbvminisat_la_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am_libbvminisat_la_OBJECTS = core/Solver.lo simp/SimpSolver.lo \
+	bvminisat.lo
+libbvminisat_la_OBJECTS = $(am_libbvminisat_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(libbvminisat_la_SOURCES)
+DIST_SOURCES = $(libbvminisat_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp \
+	README
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4LIB \
+	-D __STDC_LIMIT_MACROS \
+	-D __STDC_FORMAT_MACROS \
+	-I at builddir@/../.. -I at srcdir@/../../include -I at srcdir@/ -I at srcdir@/../..
+
+AM_CXXFLAGS = -Wall -Wno-parentheses -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
+noinst_LTLIBRARIES = libbvminisat.la
+libbvminisat_la_SOURCES = \
+	core/Dimacs.h \
+	core/Solver.cc \
+	core/Solver.h \
+	core/SolverTypes.h \
+	simp/SimpSolver.cc \
+	simp/SimpSolver.h \
+	mtl/Alg.h \
+	mtl/Alloc.h \
+	mtl/Heap.h \
+	mtl/IntTypes.h \
+	mtl/Map.h \
+	mtl/Queue.h \
+	mtl/Sort.h \
+	mtl/Vec.h \
+	mtl/XAlloc.h \
+	utils/Options.h \
+	bvminisat.h \
+	bvminisat.cpp
+
+EXTRA_DIST = \
+	core/Main.cc \
+	core/Makefile \
+	doc/ReleaseNotes-2.2.0.txt \
+	simp/Main.cc \
+	simp/Makefile \
+	README \
+	LICENSE \
+	mtl/config.mk \
+	mtl/template.mk \
+	utils/Options.cc \
+	utils/ParseUtils.h \
+	utils/System.h \
+	utils/System.cc \
+	Makefile
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cc .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/prop/bvminisat/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/prop/bvminisat/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+core/$(am__dirstamp):
+	@$(MKDIR_P) core
+	@: > core/$(am__dirstamp)
+core/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) core/$(DEPDIR)
+	@: > core/$(DEPDIR)/$(am__dirstamp)
+core/Solver.lo: core/$(am__dirstamp) core/$(DEPDIR)/$(am__dirstamp)
+simp/$(am__dirstamp):
+	@$(MKDIR_P) simp
+	@: > simp/$(am__dirstamp)
+simp/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) simp/$(DEPDIR)
+	@: > simp/$(DEPDIR)/$(am__dirstamp)
+simp/SimpSolver.lo: simp/$(am__dirstamp) \
+	simp/$(DEPDIR)/$(am__dirstamp)
+
+libbvminisat.la: $(libbvminisat_la_OBJECTS) $(libbvminisat_la_DEPENDENCIES) $(EXTRA_libbvminisat_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK)  $(libbvminisat_la_OBJECTS) $(libbvminisat_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+	-rm -f core/*.$(OBJEXT)
+	-rm -f core/*.lo
+	-rm -f simp/*.$(OBJEXT)
+	-rm -f simp/*.lo
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bvminisat.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at core/$(DEPDIR)/Solver.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at simp/$(DEPDIR)/SimpSolver.Plo at am__quote@
+
+.cc.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cc.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+	-rm -rf core/.libs core/_libs
+	-rm -rf simp/.libs simp/_libs
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f core/$(DEPDIR)/$(am__dirstamp)
+	-rm -f core/$(am__dirstamp)
+	-rm -f simp/$(DEPDIR)/$(am__dirstamp)
+	-rm -f simp/$(am__dirstamp)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR) core/$(DEPDIR) simp/$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR) core/$(DEPDIR) simp/$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/prop/bvminisat/README b/src/prop/bvminisat/README
new file mode 100644
index 0000000..e5e5617
--- /dev/null
+++ b/src/prop/bvminisat/README
@@ -0,0 +1,24 @@
+================================================================================
+DIRECTORY OVERVIEW:
+
+mtl/            Mini Template Library
+utils/          Generic helper code (I/O, Parsing, CPU-time, etc)
+core/           A core version of the solver
+simp/           An extended solver with simplification capabilities
+README
+LICENSE
+
+================================================================================
+BUILDING: (release version: without assertions, statically linked, etc)
+
+export MROOT=<minisat-dir>              (or setenv in cshell)
+cd { core | simp }
+gmake rs
+cp minisat_static <install-dir>/minisat
+
+================================================================================
+EXAMPLES:
+
+Run minisat with same heuristics as version 2.0:
+
+> minisat <cnf-file> -no-luby -rinc=1.5 -phase-saving=0 -rnd-freq=0.02
diff --git a/src/prop/bvminisat/bvminisat.cpp b/src/prop/bvminisat/bvminisat.cpp
new file mode 100644
index 0000000..368a79b
--- /dev/null
+++ b/src/prop/bvminisat/bvminisat.cpp
@@ -0,0 +1,311 @@
+/*********************                                                        */
+/*! \file bvminisat.cpp
+ ** \verbatim
+ ** Original author: dejan
+ ** Major contributors:
+ ** Minor contributors (to current version):
+ ** This file is part of the CVC4 prototype.
+ ** Copyright (c) 2009-2014  The Analysis of Computer Systems Group (ACSys)
+ ** Courant Institute of Mathematical Sciences
+ ** New York University
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.\endverbatim
+ **
+ ** \brief SAT Solver.
+ **
+ ** Implementation of the minisat for cvc4 (bitvectors).
+ **/
+
+#include "prop/bvminisat/bvminisat.h"
+
+#include "prop/bvminisat/simp/SimpSolver.h"
+#include "proof/clause_id.h"
+#include "proof/sat_proof.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace prop {
+
+BVMinisatSatSolver::BVMinisatSatSolver(StatisticsRegistry* registry, context::Context* mainSatContext, const std::string& name)
+: context::ContextNotifyObj(mainSatContext, false),
+  d_minisat(new BVMinisat::SimpSolver(mainSatContext)),
+  d_minisatNotify(0),
+  d_assertionsCount(0),
+  d_assertionsRealCount(mainSatContext, 0),
+  d_lastPropagation(mainSatContext, 0),
+  d_statistics(registry, name)
+{
+  d_statistics.init(d_minisat);
+}
+
+
+BVMinisatSatSolver::~BVMinisatSatSolver() {
+  delete d_minisat;
+  delete d_minisatNotify;
+}
+
+void BVMinisatSatSolver::setNotify(Notify* notify) {
+  d_minisatNotify = new MinisatNotify(notify);
+  d_minisat->setNotify(d_minisatNotify);
+}
+
+ClauseId BVMinisatSatSolver::addClause(SatClause& clause,
+                                       bool removable) {
+  Debug("sat::minisat") << "Add clause " << clause <<"\n";
+  BVMinisat::vec<BVMinisat::Lit> minisat_clause;
+  toMinisatClause(clause, minisat_clause);
+  // for(unsigned i = 0; i < minisat_clause.size(); ++i) {
+  //   d_minisat->setFrozen(BVMinisat::var(minisat_clause[i]), true);
+  // }
+  ClauseId clause_id = ClauseIdError;
+  d_minisat->addClause(minisat_clause, clause_id);
+  THEORY_PROOF(Assert (clause_id != ClauseIdError););
+  return clause_id;
+}
+
+SatValue BVMinisatSatSolver::propagate() {
+  return toSatLiteralValue(d_minisat->propagateAssumptions());
+}
+
+void BVMinisatSatSolver::addMarkerLiteral(SatLiteral lit) {
+  d_minisat->addMarkerLiteral(BVMinisat::var(toMinisatLit(lit)));
+  markUnremovable(lit); 
+}
+
+void BVMinisatSatSolver::explain(SatLiteral lit, std::vector<SatLiteral>& explanation) {
+  std::vector<BVMinisat::Lit> minisat_explanation;
+  d_minisat->explain(toMinisatLit(lit), minisat_explanation);
+  for (unsigned i = 0; i < minisat_explanation.size(); ++i) {
+    explanation.push_back(toSatLiteral(minisat_explanation[i])); 
+  }
+}
+
+SatValue BVMinisatSatSolver::assertAssumption(SatLiteral lit, bool propagate) {
+  d_assertionsCount ++;
+  d_assertionsRealCount = d_assertionsRealCount + 1;
+  return toSatLiteralValue(d_minisat->assertAssumption(toMinisatLit(lit), propagate));
+}
+
+void BVMinisatSatSolver::contextNotifyPop() {
+  while (d_assertionsCount > d_assertionsRealCount) {
+    popAssumption();
+    d_assertionsCount --;
+  }
+}
+
+void BVMinisatSatSolver::popAssumption() {
+  d_minisat->popAssumption();
+}
+
+void BVMinisatSatSolver::setProofLog( BitVectorProof * bvp ) {
+  d_minisat->setProofLog( bvp );
+}
+
+SatVariable BVMinisatSatSolver::newVar(bool isTheoryAtom, bool preRegister, bool canErase){
+  return d_minisat->newVar(true, true, !canErase);
+}
+
+void BVMinisatSatSolver::markUnremovable(SatLiteral lit){
+  d_minisat->setFrozen(BVMinisat::var(toMinisatLit(lit)), true);
+}
+
+
+void BVMinisatSatSolver::interrupt(){
+  d_minisat->interrupt();
+}
+
+SatValue BVMinisatSatSolver::solve(){
+  ++d_statistics.d_statCallsToSolve;
+  return toSatLiteralValue(d_minisat->solve());
+}
+
+SatValue BVMinisatSatSolver::solve(long unsigned int& resource){
+  Trace("limit") << "MinisatSatSolver::solve(): have limit of " << resource << " conflicts" << std::endl;
+  ++d_statistics.d_statCallsToSolve;
+  if(resource == 0) {
+    d_minisat->budgetOff();
+  } else {
+    d_minisat->setConfBudget(resource);
+  }
+  //  BVMinisat::vec<BVMinisat::Lit> empty;
+  unsigned long conflictsBefore = d_minisat->conflicts;
+  SatValue result = toSatLiteralValue(d_minisat->solveLimited());
+  d_minisat->clearInterrupt();
+  resource = d_minisat->conflicts - conflictsBefore;
+  Trace("limit") << "<MinisatSatSolver::solve(): it took " << resource << " conflicts" << std::endl;
+  return result;
+}
+
+bool BVMinisatSatSolver::ok() const {
+  return d_minisat->okay(); 
+}
+
+void BVMinisatSatSolver::getUnsatCore(SatClause& unsatCore) {
+  // TODO add assertion to check the call was after an unsat call
+  for (int i = 0; i < d_minisat->conflict.size(); ++i) {
+    unsatCore.push_back(toSatLiteral(d_minisat->conflict[i]));
+  }
+}
+
+SatValue BVMinisatSatSolver::value(SatLiteral l){
+	return toSatLiteralValue(d_minisat->value(toMinisatLit(l)));
+}
+
+SatValue BVMinisatSatSolver::modelValue(SatLiteral l){
+	return toSatLiteralValue(d_minisat->modelValue(toMinisatLit(l)));
+}
+
+void BVMinisatSatSolver::unregisterVar(SatLiteral lit) {
+  // this should only be called when user context is implemented
+  // in the BVSatSolver
+  Unreachable();
+}
+
+void BVMinisatSatSolver::renewVar(SatLiteral lit, int level) {
+  // this should only be called when user context is implemented
+  // in the BVSatSolver
+
+  Unreachable();
+}
+
+unsigned BVMinisatSatSolver::getAssertionLevel() const {
+  // we have no user context implemented so far
+  return 0;
+}
+
+// converting from internal Minisat representation
+
+SatVariable BVMinisatSatSolver::toSatVariable(BVMinisat::Var var) {
+  if (var == var_Undef) {
+    return undefSatVariable;
+  }
+  return SatVariable(var);
+}
+
+BVMinisat::Lit BVMinisatSatSolver::toMinisatLit(SatLiteral lit) {
+  if (lit == undefSatLiteral) {
+    return BVMinisat::lit_Undef;
+  }
+  return BVMinisat::mkLit(lit.getSatVariable(), lit.isNegated());
+}
+
+SatLiteral BVMinisatSatSolver::toSatLiteral(BVMinisat::Lit lit) {
+  if (lit == BVMinisat::lit_Undef) {
+    return undefSatLiteral;
+  }
+
+  return SatLiteral(SatVariable(BVMinisat::var(lit)),
+                    BVMinisat::sign(lit));
+}
+
+SatValue BVMinisatSatSolver::toSatLiteralValue(BVMinisat::lbool res) {
+  if(res == (BVMinisat::lbool((uint8_t)0))) return SAT_VALUE_TRUE;
+  if(res == (BVMinisat::lbool((uint8_t)2))) return SAT_VALUE_UNKNOWN;
+  Assert(res == (BVMinisat::lbool((uint8_t)1)));
+  return SAT_VALUE_FALSE;
+}
+
+void BVMinisatSatSolver::toMinisatClause(SatClause& clause,
+                                           BVMinisat::vec<BVMinisat::Lit>& minisat_clause) {
+  for (unsigned i = 0; i < clause.size(); ++i) {
+    minisat_clause.push(toMinisatLit(clause[i]));
+  }
+  Assert(clause.size() == (unsigned)minisat_clause.size());
+}
+
+void BVMinisatSatSolver::toSatClause(const BVMinisat::Clause& clause,
+                                     SatClause& sat_clause) {
+  for (int i = 0; i < clause.size(); ++i) {
+    sat_clause.push_back(toSatLiteral(clause[i]));
+  }
+  Assert((unsigned)clause.size() == sat_clause.size());
+}
+
+
+// Satistics for BVMinisatSatSolver
+
+BVMinisatSatSolver::Statistics::Statistics(StatisticsRegistry* registry, const std::string& prefix)
+    : d_registry(registry),
+      d_statStarts("theory::bv::"+prefix+"bvminisat::starts"),
+      d_statDecisions("theory::bv::"+prefix+"bvminisat::decisions"),
+      d_statRndDecisions("theory::bv::"+prefix+"bvminisat::rnd_decisions"),
+      d_statPropagations("theory::bv::"+prefix+"bvminisat::propagations"),
+      d_statConflicts("theory::bv::"+prefix+"bvminisat::conflicts"),
+      d_statClausesLiterals("theory::bv::"+prefix+"bvminisat::clauses_literals"),
+      d_statLearntsLiterals("theory::bv::"+prefix+"bvminisat::learnts_literals"),
+      d_statMaxLiterals("theory::bv::"+prefix+"bvminisat::max_literals"),
+      d_statTotLiterals("theory::bv::"+prefix+"bvminisat::tot_literals"),
+      d_statEliminatedVars("theory::bv::"+prefix+"bvminisat::eliminated_vars"),
+      d_statCallsToSolve("theory::bv::"+prefix+"bvminisat::calls_to_solve", 0),
+      d_statSolveTime("theory::bv::"+prefix+"bvminisat::solve_time", 0),
+      d_registerStats(!prefix.empty())
+{
+  if (!d_registerStats){
+    return;
+  }
+
+  d_registry->registerStat(&d_statStarts);
+  d_registry->registerStat(&d_statDecisions);
+  d_registry->registerStat(&d_statRndDecisions);
+  d_registry->registerStat(&d_statPropagations);
+  d_registry->registerStat(&d_statConflicts);
+  d_registry->registerStat(&d_statClausesLiterals);
+  d_registry->registerStat(&d_statLearntsLiterals);
+  d_registry->registerStat(&d_statMaxLiterals);
+  d_registry->registerStat(&d_statTotLiterals);
+  d_registry->registerStat(&d_statEliminatedVars);
+  d_registry->registerStat(&d_statCallsToSolve);
+  d_registry->registerStat(&d_statSolveTime);
+}
+
+BVMinisatSatSolver::Statistics::~Statistics() {
+  if (!d_registerStats){
+    return;
+  }
+  d_registry->unregisterStat(&d_statStarts);
+  d_registry->unregisterStat(&d_statDecisions);
+  d_registry->unregisterStat(&d_statRndDecisions);
+  d_registry->unregisterStat(&d_statPropagations);
+  d_registry->unregisterStat(&d_statConflicts);
+  d_registry->unregisterStat(&d_statClausesLiterals);
+  d_registry->unregisterStat(&d_statLearntsLiterals);
+  d_registry->unregisterStat(&d_statMaxLiterals);
+  d_registry->unregisterStat(&d_statTotLiterals);
+  d_registry->unregisterStat(&d_statEliminatedVars);
+  d_registry->unregisterStat(&d_statCallsToSolve);
+  d_registry->unregisterStat(&d_statSolveTime);
+}
+
+void BVMinisatSatSolver::Statistics::init(BVMinisat::SimpSolver* minisat){
+  if (!d_registerStats){
+    return;
+  }
+
+  d_statStarts.setData(minisat->starts);
+  d_statDecisions.setData(minisat->decisions);
+  d_statRndDecisions.setData(minisat->rnd_decisions);
+  d_statPropagations.setData(minisat->propagations);
+  d_statConflicts.setData(minisat->conflicts);
+  d_statClausesLiterals.setData(minisat->clauses_literals);
+  d_statLearntsLiterals.setData(minisat->learnts_literals);
+  d_statMaxLiterals.setData(minisat->max_literals);
+  d_statTotLiterals.setData(minisat->tot_literals);
+  d_statEliminatedVars.setData(minisat->eliminated_vars);
+}
+
+} /* namespace CVC4::prop */
+} /* namespace CVC4 */
+
+namespace CVC4 {
+template<>
+prop::SatLiteral toSatLiteral< BVMinisat::Solver>(BVMinisat::Solver::TLit lit) {
+  return prop::BVMinisatSatSolver::toSatLiteral(lit);
+} 
+
+template<>
+void toSatClause< BVMinisat::Solver> (const BVMinisat::Solver::TClause& minisat_cl,
+                                        prop::SatClause& sat_cl) {
+  prop::BVMinisatSatSolver::toSatClause(minisat_cl, sat_cl);
+}
+
+}
diff --git a/src/prop/bvminisat/bvminisat.h b/src/prop/bvminisat/bvminisat.h
new file mode 100644
index 0000000..732bd03
--- /dev/null
+++ b/src/prop/bvminisat/bvminisat.h
@@ -0,0 +1,153 @@
+/*********************                                                        */
+/*! \file bvminisat.h
+ ** \verbatim
+ ** Original author: dejan
+ ** Major contributors:
+ ** Minor contributors (to current version):
+ ** This file is part of the CVC4 prototype.
+ ** Copyright (c) 2009-2014  The Analysis of Computer Systems Group (ACSys)
+ ** Courant Institute of Mathematical Sciences
+ ** New York University
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.\endverbatim
+ **
+ ** \brief SAT Solver.
+ **
+ ** Implementation of the minisat for cvc4 (bitvectors).
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "context/cdo.h"
+#include "proof/clause_id.h"
+#include "prop/bvminisat/simp/SimpSolver.h"
+#include "prop/sat_solver.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace prop {
+
+class BVMinisatSatSolver : public BVSatSolverInterface, public context::ContextNotifyObj {
+
+private:
+
+  class MinisatNotify : public BVMinisat::Notify {
+    BVSatSolverInterface::Notify* d_notify;
+  public:
+    MinisatNotify(BVSatSolverInterface::Notify* notify)
+    : d_notify(notify)
+    {}
+    bool notify(BVMinisat::Lit lit) {
+      return d_notify->notify(toSatLiteral(lit));
+    }
+    void notify(BVMinisat::vec<BVMinisat::Lit>& clause) {
+      SatClause satClause;
+      for (int i = 0; i < clause.size(); ++i) {
+        satClause.push_back(toSatLiteral(clause[i])); 
+      }
+      d_notify->notify(satClause);
+    }
+
+    void spendResource(unsigned ammount) {
+      d_notify->spendResource(ammount);
+    }
+    void safePoint(unsigned ammount) {
+      d_notify->safePoint(ammount);
+    }
+  };
+
+  BVMinisat::SimpSolver* d_minisat;
+  MinisatNotify* d_minisatNotify;
+
+  unsigned d_assertionsCount;
+  context::CDO<unsigned> d_assertionsRealCount;
+  context::CDO<unsigned> d_lastPropagation;
+
+protected:
+
+  void contextNotifyPop();
+
+public:
+
+  BVMinisatSatSolver(StatisticsRegistry* registry, context::Context* mainSatContext, const std::string& name = "");
+  virtual ~BVMinisatSatSolver();
+
+  void setNotify(Notify* notify);
+
+  ClauseId addClause(SatClause& clause, bool removable);
+
+  ClauseId addXorClause(SatClause& clause, bool rhs, bool removable) {
+    Unreachable("Minisat does not support native XOR reasoning");
+  }
+  
+  SatValue propagate();
+
+  SatVariable newVar(bool isTheoryAtom = false, bool preRegister = false, bool canErase = true);
+
+  SatVariable trueVar() { return d_minisat->trueVar(); }
+  SatVariable falseVar() { return d_minisat->falseVar(); }
+
+  void markUnremovable(SatLiteral lit);
+
+  void interrupt();
+
+  SatValue solve();
+  SatValue solve(long unsigned int&);
+  bool ok() const; 
+  void getUnsatCore(SatClause& unsatCore);
+
+  SatValue value(SatLiteral l);
+  SatValue modelValue(SatLiteral l);
+
+  void unregisterVar(SatLiteral lit);
+  void renewVar(SatLiteral lit, int level = -1);
+  unsigned getAssertionLevel() const;
+
+
+  // helper methods for converting from the internal Minisat representation
+
+  static SatVariable     toSatVariable(BVMinisat::Var var);
+  static BVMinisat::Lit    toMinisatLit(SatLiteral lit);
+  static SatLiteral      toSatLiteral(BVMinisat::Lit lit);
+  static SatValue toSatLiteralValue(BVMinisat::lbool res);
+
+  static void  toMinisatClause(SatClause& clause, BVMinisat::vec<BVMinisat::Lit>& minisat_clause);
+  static void  toSatClause    (const BVMinisat::Clause& clause, SatClause& sat_clause);
+  void addMarkerLiteral(SatLiteral lit);
+
+  void explain(SatLiteral lit, std::vector<SatLiteral>& explanation);
+
+  SatValue assertAssumption(SatLiteral lit, bool propagate);
+
+  void popAssumption();
+  
+  void setProofLog( BitVectorProof * bvp );
+
+private:
+  /* Disable the default constructor. */
+  BVMinisatSatSolver() CVC4_UNDEFINED;
+
+  class Statistics {
+  public:
+    StatisticsRegistry* d_registry;
+    ReferenceStat<uint64_t> d_statStarts, d_statDecisions;
+    ReferenceStat<uint64_t> d_statRndDecisions, d_statPropagations;
+    ReferenceStat<uint64_t> d_statConflicts, d_statClausesLiterals;
+    ReferenceStat<uint64_t> d_statLearntsLiterals,  d_statMaxLiterals;
+    ReferenceStat<uint64_t> d_statTotLiterals;
+    ReferenceStat<int> d_statEliminatedVars;
+    IntStat d_statCallsToSolve;
+    BackedStat<double> d_statSolveTime;
+    bool d_registerStats;
+    Statistics(StatisticsRegistry* registry, const std::string& prefix);
+    ~Statistics();
+    void init(BVMinisat::SimpSolver* minisat);
+  };
+
+  Statistics d_statistics;
+};
+
+} /* CVC4::prop namespace */
+} /* CVC4 namespace */
diff --git a/src/prop/bvminisat/core/Dimacs.h b/src/prop/bvminisat/core/Dimacs.h
new file mode 100644
index 0000000..46451d4
--- /dev/null
+++ b/src/prop/bvminisat/core/Dimacs.h
@@ -0,0 +1,91 @@
+/****************************************************************************************[Dimacs.h]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef BVMinisat_Dimacs_h
+#define BVMinisat_Dimacs_h
+
+#include <stdio.h>
+
+#include "utils/ParseUtils.h"
+#include "core/SolverTypes.h"
+
+namespace CVC4 {
+namespace BVMinisat {
+
+//=================================================================================================
+// DIMACS Parser:
+
+template<class B, class Solver>
+static void readClause(B& in, Solver& S, vec<Lit>& lits) {
+    int     parsed_lit, var;
+    lits.clear();
+    for (;;){
+        parsed_lit = parseInt(in);
+        if (parsed_lit == 0) break;
+        var = abs(parsed_lit)-1;
+        while (var >= S.nVars()) S.newVar();
+        lits.push( (parsed_lit > 0) ? mkLit(var) : ~mkLit(var) );
+    }
+}
+
+template<class B, class Solver>
+static void parse_DIMACS_main(B& in, Solver& S) {
+    vec<Lit> lits;
+    int vars    = 0;
+    int clauses = 0;
+    int cnt     = 0;
+    for (;;){
+        skipWhitespace(in);
+        if (*in == EOF) break;
+        else if (*in == 'p'){
+            if (eagerMatch(in, "p cnf")){
+                vars    = parseInt(in);
+                clauses = parseInt(in);
+                // SATRACE'06 hack
+                // if (clauses > 4000000)
+                //     S.eliminate(true);
+            }else{
+                printf("PARSE ERROR! Unexpected char: %c\n", *in), exit(3);
+            }
+        } else if (*in == 'c' || *in == 'p')
+            skipLine(in);
+        else{
+            cnt++;
+            readClause(in, S, lits);
+            S.addClause_(lits); }
+    }
+    if (vars != S.nVars())
+        fprintf(stderr, "WARNING! DIMACS header mismatch: wrong number of variables.\n");
+    if (cnt  != clauses)
+        fprintf(stderr, "WARNING! DIMACS header mismatch: wrong number of clauses.\n");
+}
+
+// Inserts problem into solver.
+//
+template<class Solver>
+static void parse_DIMACS(gzFile input_stream, Solver& S) {
+    StreamBuffer in(input_stream);
+    parse_DIMACS_main(in, S); }
+
+//=================================================================================================
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
+
+#endif
diff --git a/src/prop/bvminisat/core/Main.cc b/src/prop/bvminisat/core/Main.cc
new file mode 100644
index 0000000..74cc9cd
--- /dev/null
+++ b/src/prop/bvminisat/core/Main.cc
@@ -0,0 +1,199 @@
+/*****************************************************************************************[Main.cc]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#include <errno.h>
+
+#include <signal.h>
+#include <zlib.h>
+
+#include "utils/System.h"
+#include "utils/ParseUtils.h"
+#include "utils/Options.h"
+#include "core/Dimacs.h"
+#include "core/Solver.h"
+
+
+namespace CVC4 {
+namespace BVMinisat {
+
+//=================================================================================================
+
+
+void printStats(Solver& solver)
+{
+    double cpu_time = cpuTime();
+    double mem_used = memUsedPeak();
+    printf("restarts              : %"PRIu64"\n", solver.starts);
+    printf("conflicts             : %-12"PRIu64"   (%.0f /sec)\n", solver.conflicts   , solver.conflicts   /cpu_time);
+    printf("decisions             : %-12"PRIu64"   (%4.2f %% random) (%.0f /sec)\n", solver.decisions, (float)solver.rnd_decisions*100 / (float)solver.decisions, solver.decisions   /cpu_time);
+    printf("propagations          : %-12"PRIu64"   (%.0f /sec)\n", solver.propagations, solver.propagations/cpu_time);
+    printf("conflict literals     : %-12"PRIu64"   (%4.2f %% deleted)\n", solver.tot_literals, (solver.max_literals - solver.tot_literals)*100 / (double)solver.max_literals);
+    if (mem_used != 0) printf("Memory used           : %.2f MB\n", mem_used);
+    printf("CPU time              : %g s\n", cpu_time);
+}
+
+
+static Solver* solver;
+// Terminate by notifying the solver and back out gracefully. This is mainly to have a test-case
+// for this feature of the Solver as it may take longer than an immediate call to '_exit()'.
+static void SIGINT_interrupt(int signum) { solver->interrupt(); }
+
+// Note that '_exit()' rather than 'exit()' has to be used. The reason is that 'exit()' calls
+// destructors and may cause deadlocks if a malloc/free function happens to be running (these
+// functions are guarded by locks for multithreaded use).
+static void SIGINT_exit(int signum) {
+    printf("\n"); printf("*** INTERRUPTED ***\n");
+    if (solver->verbosity > 0){
+        printStats(*solver);
+        printf("\n"); printf("*** INTERRUPTED ***\n"); }
+    _exit(1); }
+
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
+
+//=================================================================================================
+// Main:
+
+
+int main(int argc, char** argv)
+{
+  using namespace CVC4;
+  using namespace CVC4::BVMinisat;
+
+    try {
+        setUsageHelp("USAGE: %s [options] <input-file> <result-output-file>\n\n  where input may be either in plain or gzipped DIMACS.\n");
+        // printf("This is MiniSat 2.0 beta\n");
+        
+#if defined(__linux__)
+        fpu_control_t oldcw, newcw;
+        _FPU_GETCW(oldcw); newcw = (oldcw & ~_FPU_EXTENDED) | _FPU_DOUBLE; _FPU_SETCW(newcw);
+        printf("WARNING: for repeatability, setting FPU to use double precision\n");
+#endif
+        // Extra options:
+        //
+        IntOption    verb   ("MAIN", "verb",   "Verbosity level (0=silent, 1=some, 2=more).", 1, IntRange(0, 2));
+        IntOption    cpu_lim("MAIN", "cpu-lim","Limit on CPU time allowed in seconds.\n", INT32_MAX, IntRange(0, INT32_MAX));
+        IntOption    mem_lim("MAIN", "mem-lim","Limit on memory usage in megabytes.\n", INT32_MAX, IntRange(0, INT32_MAX));
+        
+        parseOptions(argc, argv, true);
+
+        Solver S;
+        double initial_time = cpuTime();
+
+        S.verbosity = verb;
+        
+        solver = &S;
+        // Use signal handlers that forcibly quit until the solver will be able to respond to
+        // interrupts:
+        signal(SIGINT, SIGINT_exit);
+        signal(SIGXCPU,SIGINT_exit);
+
+        // Set limit on CPU-time:
+        if (cpu_lim != INT32_MAX){
+            rlimit rl;
+            getrlimit(RLIMIT_CPU, &rl);
+            if (rl.rlim_max == RLIM_INFINITY || (rlim_t)cpu_lim < rl.rlim_max){
+                rl.rlim_cur = cpu_lim;
+                if (setrlimit(RLIMIT_CPU, &rl) == -1)
+                    printf("WARNING! Could not set resource limit: CPU-time.\n");
+            } }
+
+        // Set limit on virtual memory:
+        if (mem_lim != INT32_MAX){
+            rlim_t new_mem_lim = (rlim_t)mem_lim * 1024*1024;
+            rlimit rl;
+            getrlimit(RLIMIT_AS, &rl);
+            if (rl.rlim_max == RLIM_INFINITY || new_mem_lim < rl.rlim_max){
+                rl.rlim_cur = new_mem_lim;
+                if (setrlimit(RLIMIT_AS, &rl) == -1)
+                    printf("WARNING! Could not set resource limit: Virtual memory.\n");
+            } }
+        
+        if (argc == 1)
+            printf("Reading from standard input... Use '--help' for help.\n");
+        
+        gzFile in = (argc == 1) ? gzdopen(0, "rb") : gzopen(argv[1], "rb");
+        if (in == NULL)
+            printf("ERROR! Could not open file: %s\n", argc == 1 ? "<stdin>" : argv[1]), exit(1);
+        
+        if (S.verbosity > 0){
+            printf("============================[ Problem Statistics ]=============================\n");
+            printf("|                                                                             |\n"); }
+        
+        parse_DIMACS(in, S);
+        gzclose(in);
+        FILE* res = (argc >= 3) ? fopen(argv[2], "wb") : NULL;
+        
+        if (S.verbosity > 0){
+            printf("|  Number of variables:  %12d                                         |\n", S.nVars());
+            printf("|  Number of clauses:    %12d                                         |\n", S.nClauses()); }
+        
+        double parsed_time = cpuTime();
+        if (S.verbosity > 0){
+            printf("|  Parse time:           %12.2f s                                       |\n", parsed_time - initial_time);
+            printf("|                                                                             |\n"); }
+ 
+        // Change to signal-handlers that will only notify the solver and allow it to terminate
+        // voluntarily:
+        signal(SIGINT, SIGINT_interrupt);
+        signal(SIGXCPU,SIGINT_interrupt);
+       
+        if (!S.simplify()){
+            if (res != NULL) fprintf(res, "UNSAT\n"), fclose(res);
+            if (S.verbosity > 0){
+                printf("===============================================================================\n");
+                printf("Solved by unit propagation\n");
+                printStats(S);
+                printf("\n"); }
+            printf("UNSATISFIABLE\n");
+            exit(20);
+        }
+        
+        vec<Lit> dummy;
+        lbool ret = S.solveLimited(dummy);
+        if (S.verbosity > 0){
+            printStats(S);
+            printf("\n"); }
+        printf(ret == l_True ? "SATISFIABLE\n" : ret == l_False ? "UNSATISFIABLE\n" : "INDETERMINATE\n");
+        if (res != NULL){
+            if (ret == l_True){
+                fprintf(res, "SAT\n");
+                for (int i = 0; i < S.nVars(); i++)
+                    if (S.model[i] != l_Undef)
+                        fprintf(res, "%s%s%d", (i==0)?"":" ", (S.model[i]==l_True)?"":"-", i+1);
+                fprintf(res, " 0\n");
+            }else if (ret == l_False)
+                fprintf(res, "UNSAT\n");
+            else
+                fprintf(res, "INDET\n");
+            fclose(res);
+        }
+        
+#ifdef NDEBUG
+        exit(ret == l_True ? 10 : ret == l_False ? 20 : 0);     // (faster than "return", which will invoke the destructor for 'Solver')
+#else
+        return (ret == l_True ? 10 : ret == l_False ? 20 : 0);
+#endif
+    } catch (OutOfMemoryException&){
+        printf("===============================================================================\n");
+        printf("INDETERMINATE\n");
+        exit(0);
+    }
+}
diff --git a/src/prop/bvminisat/core/Makefile b/src/prop/bvminisat/core/Makefile
new file mode 100644
index 0000000..5de1f72
--- /dev/null
+++ b/src/prop/bvminisat/core/Makefile
@@ -0,0 +1,4 @@
+EXEC      = minisat
+DEPDIR    = mtl utils
+
+include $(MROOT)/mtl/template.mk
diff --git a/src/prop/bvminisat/core/Solver.cc b/src/prop/bvminisat/core/Solver.cc
new file mode 100644
index 0000000..d626a5d
--- /dev/null
+++ b/src/prop/bvminisat/core/Solver.cc
@@ -0,0 +1,1470 @@
+/***************************************************************************************[Solver.cc]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#include "core/Solver.h"
+
+#include <math.h>
+
+#include <vector>
+#include <iostream>
+
+#include "base/exception.h"
+#include "base/output.h"
+#include "mtl/Sort.h"
+#include "options/bv_options.h"
+#include "options/smt_options.h"
+#include "proof/bitvector_proof.h"
+#include "proof/clause_id.h"
+#include "proof/proof_manager.h"
+#include "proof/sat_proof.h"
+#include "proof/sat_proof_implementation.h"
+#include "theory/interrupted.h"
+#include "util/utility.h"
+
+namespace CVC4 {
+namespace BVMinisat {
+
+#define OUTPUT_TAG "bvminisat: [a=" << assumptions.size() << ",l=" << decisionLevel() << "] "
+
+std::ostream& operator << (std::ostream& out, const BVMinisat::Lit& l) {
+  out << (sign(l) ? "-" : "") << var(l) + 1;
+  return out;
+}
+
+std::ostream& operator << (std::ostream& out, const BVMinisat::Clause& c) {
+  for (int i = 0; i < c.size(); i++) {
+    if (i > 0) {
+      out << " ";
+    }
+    out << c[i];
+  }
+  return out;
+}
+
+
+//=================================================================================================
+// Options:
+
+
+static const char* _cat = "CORE";
+
+static DoubleOption  opt_var_decay         (_cat, "var-decay",   "The variable activity decay factor",            0.95,     DoubleRange(0, false, 1, false));
+static DoubleOption  opt_clause_decay      (_cat, "cla-decay",   "The clause activity decay factor",              0.999,    DoubleRange(0, false, 1, false));
+static DoubleOption  opt_random_var_freq   (_cat, "rnd-freq",    "The frequency with which the decision heuristic tries to choose a random variable", 0, DoubleRange(0, true, 1, true));
+static DoubleOption  opt_random_seed       (_cat, "rnd-seed",    "Used by the random variable selection",         91648253, DoubleRange(0, false, HUGE_VAL, false));
+static IntOption     opt_ccmin_mode        (_cat, "ccmin-mode",  "Controls conflict clause minimization (0=none, 1=basic, 2=deep)", 2, IntRange(0, 2));
+static IntOption     opt_phase_saving      (_cat, "phase-saving", "Controls the level of phase saving (0=none, 1=limited, 2=full)", 2, IntRange(0, 2));
+static BoolOption    opt_rnd_init_act      (_cat, "rnd-init",    "Randomize the initial activity", false);
+static BoolOption    opt_luby_restart      (_cat, "luby",        "Use the Luby restart sequence", true);
+static IntOption     opt_restart_first     (_cat, "rfirst",      "The base restart interval", 25, IntRange(1, INT32_MAX));
+static DoubleOption  opt_restart_inc       (_cat, "rinc",        "Restart interval increase factor", 3, DoubleRange(1, false, HUGE_VAL, false));
+static DoubleOption  opt_garbage_frac      (_cat, "gc-frac",     "The fraction of wasted memory allowed before a garbage collection is triggered",  0.20, DoubleRange(0, false, HUGE_VAL, false));
+
+//=================================================================================================
+// Proof declarations
+CRef Solver::TCRef_Undef = CRef_Undef;
+CRef Solver::TCRef_Lazy = CRef_Undef - 1; // no real lazy ref here
+
+
+//=================================================================================================
+// Constructor/Destructor:
+
+
+Solver::Solver(CVC4::context::Context* c) :
+
+    // Parameters (user settable):
+    //
+    c(c)
+  , verbosity        (0)
+  , var_decay        (opt_var_decay)
+  , clause_decay     (opt_clause_decay)
+  , random_var_freq  (opt_random_var_freq)
+  , random_seed      (opt_random_seed)
+  , luby_restart     (opt_luby_restart)
+  , ccmin_mode       (opt_ccmin_mode)
+  , phase_saving     (opt_phase_saving)
+  , rnd_pol          (false)
+  , rnd_init_act     (opt_rnd_init_act)
+  , garbage_frac     (opt_garbage_frac)
+  , restart_first    (opt_restart_first)
+  , restart_inc      (opt_restart_inc)
+
+    // Parameters (the rest):
+    //
+  , learntsize_factor((double)1/(double)3), learntsize_inc(1.5)
+
+    // Parameters (experimental):
+    //
+  , learntsize_adjust_start_confl (100)
+  , learntsize_adjust_inc         (1.5)
+
+    // Statistics: (formerly in 'SolverStats')
+    //
+  , solves(0), starts(0), decisions(0), rnd_decisions(0), propagations(0), conflicts(0)
+  , dec_vars(0), clauses_literals(0), learnts_literals(0), max_literals(0), tot_literals(0)
+
+  , need_to_propagate(false)
+  , only_bcp(false)
+  , clause_added(false)
+  , ok                 (true)
+  , cla_inc            (1)
+  , var_inc            (1)
+  , watches            (WatcherDeleted(ca))
+  , qhead              (0)
+  , simpDB_assigns     (-1)
+  , simpDB_props       (0)
+  , order_heap         (VarOrderLt(activity))
+  , progress_estimate  (0)
+  , remove_satisfied   (true)
+
+  , ca                 ()
+
+  // even though these are temporaries and technically should be set
+  // before calling, lets intialize them. this will reduces chances of
+  // non-determinism in portfolio (parallel) solver if variables are
+  // being (incorrectly) used without initialization.
+  , seen(),  analyze_stack(), analyze_toclear(), add_tmp()
+  , max_learnts(0.0), learntsize_adjust_confl(0.0), learntsize_adjust_cnt(0)
+
+    // Resource constraints:
+    //
+  , conflict_budget    (-1)
+  , propagation_budget (-1)
+  , asynch_interrupt   (false)
+  , d_bvp              (NULL)
+{
+  // Create the constant variables
+  varTrue = newVar(true, false);
+  varFalse = newVar(false, false);
+
+  // Assert the constants
+  uncheckedEnqueue(mkLit(varTrue, false));
+  uncheckedEnqueue(mkLit(varFalse, true));
+}
+
+
+Solver::~Solver()
+{
+}
+
+
+//=================================================================================================
+// Minor methods:
+
+
+// Creates a new SAT variable in the solver. If 'decision' is cleared, variable will not be
+// used as a decision variable (NOTE! This has effects on the meaning of a SATISFIABLE result).
+//
+Var Solver::newVar(bool sign, bool dvar)
+{
+    int v = nVars();
+    watches  .init(mkLit(v, false));
+    watches  .init(mkLit(v, true ));
+    assigns  .push(l_Undef);
+    vardata  .push(mkVarData(CRef_Undef, 0));
+    marker   .push(0);
+    //activity .push(0);
+    activity .push(rnd_init_act ? drand(random_seed) * 0.00001 : 0);
+    seen     .push(0);
+    polarity .push(sign);
+    decision .push();
+    trail    .capacity(v+1);
+    setDecisionVar(v, dvar);
+
+    return v;
+}
+
+
+bool Solver::addClause_(vec<Lit>& ps, ClauseId& id)
+{
+    if (decisionLevel() > 0) {
+      cancelUntil(0);
+    }
+    
+    if (!ok) {
+      id = ClauseIdUndef;
+      return false;
+    }
+
+    // Check if clause is satisfied and remove false/duplicate literals:
+    // TODO proof for duplicate literals removal?
+    sort(ps);
+    Lit p; int i, j;
+    int falseLiteralsCount = 0;
+    
+    for (i = j = 0, p = lit_Undef; i < ps.size(); i++) {
+      // tautologies are ignored
+      if (value(ps[i]) == l_True || ps[i] == ~p) {
+        id = ClauseIdUndef;
+        return true;
+      }
+
+      // Ignore repeated literals
+      if (ps[i] == p) {
+        continue;
+      }
+
+      if (value(ps[i]) == l_False) {
+        if (!THEORY_PROOF_ON())
+          continue;
+        ++falseLiteralsCount;
+      }
+      ps[j++] = p = ps[i];
+    }
+    
+    ps.shrink(i - j);
+
+    clause_added = true;
+
+    Assert(falseLiteralsCount == 0 || THEORY_PROOF_ON());
+    
+    if(falseLiteralsCount == 0) {
+      if (ps.size() == 0) {
+        Assert (!THEORY_PROOF_ON());
+        return ok = false;
+      }
+      else if (ps.size() == 1){
+        if(d_bvp){ id = d_bvp->getSatProof()->registerUnitClause(ps[0], INPUT);}
+        uncheckedEnqueue(ps[0]);
+        CRef confl_ref = propagate();
+        ok = (confl_ref == CRef_Undef);
+        if(d_bvp){ if (!ok) d_bvp->getSatProof()->finalizeProof(confl_ref); }
+        return ok;
+      } else {
+        CRef cr = ca.alloc(ps, false);
+        clauses.push(cr);
+        attachClause(cr);
+        if(d_bvp){ id = d_bvp->getSatProof()->registerClause(cr, INPUT);}
+      }
+      return ok; 
+    }
+    
+    if (falseLiteralsCount != 0 && THEORY_PROOF_ON()) {
+      // we are in a conflicting state
+      if (ps.size() == falseLiteralsCount && falseLiteralsCount == 1) {
+        if(d_bvp){ id = d_bvp->getSatProof()->storeUnitConflict(ps[0], INPUT); }
+        if(d_bvp){ d_bvp->getSatProof()->finalizeProof(CVC4::BVMinisat::CRef_Lazy); }
+        return ok = false;
+      }
+
+      assign_lt lt(*this);
+      sort(ps, lt);
+      
+      CRef cr = ca.alloc(ps, false);
+      clauses.push(cr);
+      attachClause(cr);
+      
+      if(d_bvp){id = d_bvp->getSatProof()->registerClause(cr, INPUT);}
+
+      if(ps.size() == falseLiteralsCount) {
+        if(d_bvp){ d_bvp->getSatProof()->finalizeProof(cr); }
+        return ok = false;
+      }
+      
+      // Check if it propagates
+      if (ps.size() == falseLiteralsCount + 1) {
+        Clause& cl = ca[cr];
+        
+        Assert (value(cl[0]) == l_Undef);
+        uncheckedEnqueue(cl[0], cr);
+        Assert (cl.size() > 1);
+        CRef confl = propagate();
+        ok = (confl == CRef_Undef);
+        if(!ok) {
+          if(d_bvp){
+            if(ca[confl].size() == 1) {
+              id = d_bvp->getSatProof()->storeUnitConflict(ca[confl][0], LEARNT);
+              d_bvp->getSatProof()->finalizeProof(CVC4::BVMinisat::CRef_Lazy);
+            } else {
+              d_bvp->getSatProof()->finalizeProof(confl);
+            }
+          }
+        }
+      }
+    }
+    return ok;
+}
+
+void Solver::attachClause(CRef cr) {
+    const Clause& c = ca[cr];
+    assert(c.size() > 1);
+    watches[~c[0]].push(Watcher(cr, c[1]));
+    watches[~c[1]].push(Watcher(cr, c[0]));
+    if (c.learnt()) learnts_literals += c.size();
+    else            clauses_literals += c.size(); }
+
+
+void Solver::detachClause(CRef cr, bool strict) {
+    const Clause& c = ca[cr];
+    if(d_bvp){ d_bvp->getSatProof()->markDeleted(cr); }
+    
+    assert(c.size() > 1);
+    
+    if (strict){
+        remove(watches[~c[0]], Watcher(cr, c[1]));
+        remove(watches[~c[1]], Watcher(cr, c[0]));
+    }else{
+        // Lazy detaching: (NOTE! Must clean all watcher lists before garbage collecting this clause)
+        watches.smudge(~c[0]);
+        watches.smudge(~c[1]);
+    }
+
+    if (c.learnt()) learnts_literals -= c.size();
+    else            clauses_literals -= c.size(); }
+
+
+void Solver::removeClause(CRef cr) {
+    Clause& c = ca[cr];
+    detachClause(cr);
+    // Don't leave pointers to free'd memory!
+    if (locked(c)) vardata[var(c[0])].reason = CRef_Undef;
+    c.mark(1); 
+    ca.free(cr);
+}
+
+
+bool Solver::satisfied(const Clause& c) const {
+    for (int i = 0; i < c.size(); i++)
+        if (value(c[i]) == l_True)
+            return true;
+    return false; }
+
+
+// Revert to the state at given level (keeping all assignment at 'level' but not beyond).
+//
+void Solver::cancelUntil(int level) {
+    if (decisionLevel() > level){
+      Debug("bvminisat::explain") << OUTPUT_TAG << " backtracking to " << level << std::endl;
+      for (int c = trail.size()-1; c >= trail_lim[level]; c--){
+            Var      x  = var(trail[c]);
+            assigns [x] = l_Undef;
+            if (marker[x] == 2) marker[x] = 1;
+            if (phase_saving > 1 || (phase_saving == 1) && c > trail_lim.last())
+                polarity[x] = sign(trail[c]);
+            insertVarOrder(x); }
+        qhead = trail_lim[level];
+        trail.shrink(trail.size() - trail_lim[level]);
+        trail_lim.shrink(trail_lim.size() - level);
+    }
+}
+
+
+//=================================================================================================
+// Major methods:
+
+
+Lit Solver::pickBranchLit()
+{
+    Var next = var_Undef;
+
+    // Random decision:
+    if (drand(random_seed) < random_var_freq && !order_heap.empty()){
+        next = order_heap[irand(random_seed,order_heap.size())];
+        if (value(next) == l_Undef && decision[next])
+            rnd_decisions++; }
+
+    // Activity based decision:
+    while (next == var_Undef || value(next) != l_Undef || !decision[next])
+        if (order_heap.empty()){
+            next = var_Undef;
+            break;
+        }else
+            next = order_heap.removeMin();
+
+    return next == var_Undef ? lit_Undef : mkLit(next, rnd_pol ? drand(random_seed) < 0.5 : polarity[next]);
+}
+
+
+/*_________________________________________________________________________________________________
+|
+|  analyze : (confl : Clause*) (out_learnt : vec<Lit>&) (out_btlevel : int&)  ->  [void]
+|  
+|  Description:
+|    Analyze conflict and produce a reason clause.
+|  
+|    Pre-conditions:
+|      * 'out_learnt' is assumed to be cleared.
+|      * Current decision level must be greater than root level.
+|  
+|    Post-conditions:
+|      * 'out_learnt[0]' is the asserting literal at level 'out_btlevel'.
+|      * If out_learnt.size() > 1 then 'out_learnt[1]' has the greatest decision level of the 
+|        rest of literals. There may be others from the same level though.
+|  
+|________________________________________________________________________________________________@*/
+void Solver::analyze(CRef confl, vec<Lit>& out_learnt, int& out_btlevel, UIP uip)
+{
+    int pathC = 0;
+    Lit p     = lit_Undef;
+
+    // Generate conflict clause:
+    //
+    out_learnt.push();      // (leave room for the asserting literal)
+    int index   = trail.size() - 1;
+
+    bool done = false;
+    
+    if(d_bvp){ d_bvp->getSatProof()->startResChain(confl); }
+
+    do{
+        assert(confl != CRef_Undef); // (otherwise should be UIP)
+        Clause& c = ca[confl];
+
+        if (c.learnt())
+            claBumpActivity(c);
+
+        for (int j = (p == lit_Undef) ? 0 : 1; j < c.size(); j++){
+            Lit q = c[j];
+
+            if (!seen[var(q)] && level(var(q)) > 0) {
+                varBumpActivity(var(q));
+                seen[var(q)] = 1;
+                if (level(var(q)) >= decisionLevel())
+                    pathC++;
+                else
+                    out_learnt.push(q);
+            }
+            
+            if (level(var(q)) == 0) {
+              if(d_bvp){ d_bvp->getSatProof()->resolveOutUnit(q); }
+            }
+        }
+        
+        // Select next clause to look at:
+        while (!seen[var(trail[index--])]);
+        p     = trail[index+1];
+        confl = reason(var(p));
+        seen[var(p)] = 0;
+        pathC--;
+
+        if ( pathC > 0 && confl != CRef_Undef ) {
+          if(d_bvp){ d_bvp->getSatProof()->addResolutionStep(p, confl, sign(p));}
+        }
+
+        switch (uip) {
+        case UIP_FIRST:
+          done = pathC == 0;
+          break;
+        case UIP_LAST:
+          done = confl == CRef_Undef || (pathC == 0 && marker[var(p)] == 2);
+          break;
+        default:
+          Unreachable();
+          break;
+        }
+    } while (!done);
+    out_learnt[0] = ~p;
+
+    // Simplify conflict clause:
+    //
+    int i, j;
+    out_learnt.copyTo(analyze_toclear);
+    if (ccmin_mode == 2){
+        uint32_t abstract_level = 0;
+        for (i = 1; i < out_learnt.size(); i++)
+            abstract_level |= abstractLevel(var(out_learnt[i])); // (maintain an abstraction of levels involved in conflict)
+
+        for (i = j = 1; i < out_learnt.size(); i++) {
+            if (reason(var(out_learnt[i])) == CRef_Undef) {
+                out_learnt[j++] = out_learnt[i];
+            } else {
+              // Check if the literal is redundant
+              if (!litRedundant(out_learnt[i], abstract_level)) {
+                // Literal is not redundant
+                out_learnt[j++] = out_learnt[i];
+              } else {
+                if(d_bvp){ d_bvp->getSatProof()->storeLitRedundant(out_learnt[i]); }
+              }
+            }
+        }
+        
+    }else if (ccmin_mode == 1){
+        Unreachable();
+        for (i = j = 1; i < out_learnt.size(); i++){
+            Var x = var(out_learnt[i]);
+
+            if (reason(x) == CRef_Undef)
+                out_learnt[j++] = out_learnt[i];
+            else{
+                Clause& c = ca[reason(var(out_learnt[i]))];
+                for (int k = 1; k < c.size(); k++)
+                    if (!seen[var(c[k])] && level(var(c[k])) > 0){
+                        out_learnt[j++] = out_learnt[i];
+                        break; }
+            }
+        }
+    }else
+        i = j = out_learnt.size();
+
+    max_literals += out_learnt.size();
+    out_learnt.shrink(i - j);
+    tot_literals += out_learnt.size();
+
+    for (int i = 0; i < out_learnt.size(); ++ i) {
+      if (marker[var(out_learnt[i])] == 0) {
+        break;
+      }
+    }
+
+    // Find correct backtrack level:
+    //
+    if (out_learnt.size() == 1) {
+      out_btlevel = 0;
+    }
+    else{
+        int max_i = 1;
+        // Find the first literal assigned at the next-highest level:
+        for (int i = 2; i < out_learnt.size(); i++)
+            if (level(var(out_learnt[i])) > level(var(out_learnt[max_i])))
+                max_i = i;
+        // Swap-in this literal at index 1:
+        Lit p             = out_learnt[max_i];
+        out_learnt[max_i] = out_learnt[1];
+        out_learnt[1]     = p;
+        out_btlevel       = level(var(p));
+    }
+
+    for (int j = 0; j < analyze_toclear.size(); j++) seen[var(analyze_toclear[j])] = 0;    // ('seen[]' is now cleared)
+}
+
+
+// Check if 'p' can be removed. 'abstract_levels' is used to abort early if the algorithm is
+// visiting literals at levels that cannot be removed later.
+bool Solver::litRedundant(Lit p, uint32_t abstract_levels)
+{
+    analyze_stack.clear(); analyze_stack.push(p);
+    int top = analyze_toclear.size();
+    while (analyze_stack.size() > 0){
+        CRef c_reason = reason(var(analyze_stack.last()));
+        assert(c_reason != CRef_Undef);
+        Clause& c = ca[c_reason];
+        int c_size = c.size();
+        analyze_stack.pop();
+
+        for (int i = 1; i < c_size; i++){
+            Lit p  = c[i];
+            if (!seen[var(p)] && level(var(p)) > 0){
+                if (reason(var(p)) != CRef_Undef && (abstractLevel(var(p)) & abstract_levels) != 0){
+                    seen[var(p)] = 1;
+                    analyze_stack.push(p);
+                    analyze_toclear.push(p);
+                }else{
+                    for (int j = top; j < analyze_toclear.size(); j++)
+                        seen[var(analyze_toclear[j])] = 0;
+                    analyze_toclear.shrink(analyze_toclear.size() - top);
+                    return false;
+                }
+            }
+        }
+    }
+
+    return true;
+}
+
+/** 
+ * Specialized analyzeFinal procedure where we test the consistency
+ * of the assumptions before backtracking bellow the assumption level.
+ * 
+ * @param p the original uip (may be unit)
+ * @param confl_clause the conflict clause
+ * @param out_conflict the conflict in terms of assumptions we are building
+ */
+void Solver::analyzeFinal2(Lit p, CRef confl_clause, vec<Lit>& out_conflict) {
+  assert (confl_clause != CRef_Undef);
+  assert (decisionLevel() == assumptions.size());
+  assert (level(var(p)) == assumptions.size());
+
+  out_conflict.clear(); 
+  
+  Clause& cl = ca[confl_clause];
+  for (int i = 0; i < cl.size(); ++i) {
+    seen[var(cl[i])] = 1;
+  }
+
+  int end = options::proof() ? 0 :  trail_lim[0];
+  for (int i = trail.size() - 1; i >= end; i--) {
+    Var x = var(trail[i]);
+    if (seen[x]) {
+      if (reason(x) == CRef_Undef) {
+        // we skip p if was a learnt unit
+        if (x != var(p)) {
+          if (marker[x] == 2) {
+            assert (level(x) > 0);
+            out_conflict.push(~trail[i]);
+          } else {
+            if(d_bvp){d_bvp->getSatProof()->resolveOutUnit(~(trail[i])); }
+          }
+        } else {
+          if(d_bvp){d_bvp->getSatProof()->resolveOutUnit(~p);} 
+        }
+      } else {
+        Clause& c = ca[reason(x)];
+        if(d_bvp){d_bvp->getSatProof()->addResolutionStep(trail[i],reason(x), sign(trail[i]));}
+
+        for (int j = 1; j < c.size(); j++) {
+          if (level(var(c[j])) > 0)
+            seen[var(c[j])] = 1;
+          if(d_bvp){
+            if (level(var(c[j])) == 0) {
+              d_bvp->getSatProof()->resolveOutUnit(c[j]);
+              seen[var(c[j])] = 0; // we don't need to resolve it out again
+            }
+          }
+        }
+      }
+      seen[x] = 0;
+    }
+    assert (seen[x] == 0); 
+  }
+  assert (out_conflict.size()); 
+}
+
+/*_________________________________________________________________________________________________
+|
+|  analyzeFinal : (p : Lit)  ->  [void]
+|  
+|  Description:
+|    Specialized analysis procedure to express the final conflict in terms of assumptions.
+|    Calculates the (possibly empty) set of assumptions that led to the assignment of 'p', and
+|    stores the result in 'out_conflict'.
+|________________________________________________________________________________________________@*/
+void Solver::analyzeFinal(Lit p, vec<Lit>& out_conflict)
+{
+    out_conflict.clear();
+    if (marker[var(p)] == 2) {
+      out_conflict.push(p);
+    }
+
+    if(d_bvp){
+      if (level(var(p)) == 0 && d_bvp->isAssumptionConflict()) {
+        Assert ( marker[var(p)] == 2);
+        if (reason(var(p)) == CRef_Undef) {
+          d_bvp->startBVConflict(p);
+        }
+      }
+    }
+    
+    if (decisionLevel() == 0 && !options::proof()) {
+      return;
+    }
+
+    seen[var(p)] = 1;
+    int end = options::proof() ? 0 : trail_lim[0];
+    
+    for (int i = trail.size()-1; i >= end; i--){
+        Var x = var(trail[i]);
+        if (seen[x]) {
+            if (reason(x) == CRef_Undef) {
+              assert(marker[x] == 2);
+              assert(level(x) > 0);
+              out_conflict.push(~trail[i]);
+            } else {
+              Clause& c = ca[reason(x)];
+              if(d_bvp){
+                    if (d_bvp->isAssumptionConflict() &&
+                        trail[i] == p) {
+                      d_bvp->startBVConflict(reason(x));
+                    } else {
+                      d_bvp->getSatProof()->addResolutionStep(trail[i], reason(x), sign(trail[i]));
+                    }
+              }
+              for (int j = 1; j < c.size(); j++) {
+                if (level(var(c[j])) > 0) {
+                  seen[var(c[j])] = 1;
+                }
+                if(d_bvp){
+                  if (level(var(c[j])) == 0) {
+                    d_bvp->getSatProof()->resolveOutUnit(c[j]);
+                  }
+                }
+              }
+            }
+            seen[x] = 0;
+        }
+    }
+
+    seen[var(p)] = 0;
+    assert (out_conflict.size());
+}
+
+
+void Solver::uncheckedEnqueue(Lit p, CRef from)
+{
+    assert(value(p) == l_Undef);
+    assigns[var(p)] = lbool(!sign(p));
+    vardata[var(p)] = mkVarData(from, decisionLevel());
+    trail.push_(p);
+    if (decisionLevel() <= assumptions.size() && marker[var(p)] == 1) {
+      if (notify) {
+        Debug("bvminisat::explain") << OUTPUT_TAG << "propagating " << p << std::endl;
+        notify->notify(p);
+      }
+    }
+}
+
+void Solver::popAssumption() {
+    assumptions.pop();
+    conflict.clear();
+    cancelUntil(assumptions.size());
+}
+
+lbool Solver::propagateAssumptions() {
+  only_bcp = true;
+  ccmin_mode = 0;
+  return search(-1);
+}
+
+lbool Solver::assertAssumption(Lit p, bool propagate) {
+  // TODO need to somehow mark the assumption as unit in the current context?
+  // it's not always unit though, but this would be useful for debugging
+  
+  // assert(marker[var(p)] == 1);
+
+ 
+  if (decisionLevel() > assumptions.size()) {
+    cancelUntil(assumptions.size());
+  }
+
+  conflict.clear();
+
+  // add to the assumptions
+  if (c->getLevel() > 0) {
+    assumptions.push(p);
+  } else {
+    ClauseId id;
+    if (!addClause(p, id)) {
+      conflict.push(~p);
+      return l_False;
+    }
+  }
+
+  // run the propagation
+  if (propagate) {
+    only_bcp = true;
+    ccmin_mode = 0; 
+    lbool result = search(-1);
+    return result; 
+  } else {
+    return l_True;
+  }
+}
+
+void Solver::addMarkerLiteral(Var var) {
+  // make sure it wasn't already marked 
+  Assert(marker[var] == 0); 
+  marker[var] = 1;
+  if(d_bvp){d_bvp->getSatProof()->registerAssumption(var);}
+}
+
+
+/*_________________________________________________________________________________________________
+|
+|  propagate : [void]  ->  [Clause*]
+|  
+|  Description:
+|    Propagates all enqueued facts. If a conflict arises, the conflicting clause is returned,
+|    otherwise CRef_Undef.
+|  
+|    Post-conditions:
+|      * the propagation queue is empty, even if there was a conflict.
+|________________________________________________________________________________________________@*/
+CRef Solver::propagate()
+{
+    CRef    confl     = CRef_Undef;
+    int     num_props = 0;
+    watches.cleanAll();
+
+    while (qhead < trail.size()){
+        Lit            p   = trail[qhead++];     // 'p' is enqueued fact to propagate.
+        vec<Watcher>&  ws  = watches[p];
+        Watcher        *i, *j, *end;
+        num_props++;
+
+        for (i = j = (Watcher*)ws, end = i + ws.size();  i != end;){
+            // Try to avoid inspecting the clause:
+            Lit blocker = i->blocker;
+            if (value(blocker) == l_True){
+                *j++ = *i++; continue; }
+
+            // Make sure the false literal is data[1]:
+            CRef     cr        = i->cref;
+            Clause&  c         = ca[cr];
+            Lit      false_lit = ~p;
+            if (c[0] == false_lit)
+                c[0] = c[1], c[1] = false_lit;
+            assert(c[1] == false_lit);
+            i++;
+
+            // If 0th watch is true, then clause is already satisfied.
+            Lit     first = c[0];
+            Watcher w     = Watcher(cr, first);
+            if (first != blocker && value(first) == l_True){
+                *j++ = w; continue; }
+
+            // Look for new watch:
+            for (int k = 2; k < c.size(); k++)
+                if (value(c[k]) != l_False){
+                    c[1] = c[k]; c[k] = false_lit;
+                    watches[~c[1]].push(w);
+                    goto NextClause; }
+
+            // Did not find watch -- clause is unit under assignment:
+            *j++ = w;
+            if (value(first) == l_False){
+                confl = cr;
+                qhead = trail.size();
+                // Copy the remaining watches:
+                while (i < end)
+                    *j++ = *i++;
+            }else
+                uncheckedEnqueue(first, cr);
+
+        NextClause:;
+        }
+        ws.shrink(i - j);
+    }
+    propagations += num_props;
+    simpDB_props -= num_props;
+
+    return confl;
+}
+
+
+/*_________________________________________________________________________________________________
+|
+|  reduceDB : ()  ->  [void]
+|  
+|  Description:
+|    Remove half of the learnt clauses, minus the clauses locked by the current assignment. Locked
+|    clauses are clauses that are reason to some assignment. Binary clauses are never removed.
+|________________________________________________________________________________________________@*/
+struct reduceDB_lt { 
+    ClauseAllocator& ca;
+    reduceDB_lt(ClauseAllocator& ca_) : ca(ca_) {}
+    bool operator () (CRef x, CRef y) { 
+        return ca[x].size() > 2 && (ca[y].size() == 2 || ca[x].activity() < ca[y].activity()); } 
+};
+void Solver::reduceDB()
+{
+    int     i, j;
+    double  extra_lim = cla_inc / learnts.size();    // Remove any clause below this activity
+
+    sort(learnts, reduceDB_lt(ca));
+    // Don't delete binary or locked clauses. From the rest, delete clauses from the first half
+    // and clauses with activity smaller than 'extra_lim':
+    for (i = j = 0; i < learnts.size(); i++){
+        Clause& c = ca[learnts[i]];
+        if (c.size() > 2 && !locked(c) && (i < learnts.size() / 2 || c.activity() < extra_lim))
+            removeClause(learnts[i]);
+        else
+            learnts[j++] = learnts[i];
+    }
+    learnts.shrink(i - j);
+    checkGarbage();
+}
+
+
+void Solver::removeSatisfied(vec<CRef>& cs)
+{
+    int i, j;
+    for (i = j = 0; i < cs.size(); i++){
+        Clause& c = ca[cs[i]];
+        if (satisfied(c)) {
+          if (locked(c)) {
+            // store a resolution of the literal c propagated
+            if(d_bvp){ d_bvp->getSatProof()->storeUnitResolution(c[0]); }
+          }
+            removeClause(cs[i]);
+        }
+        else
+            cs[j++] = cs[i];
+    }
+    cs.shrink(i - j);
+}
+
+
+void Solver::rebuildOrderHeap()
+{
+    vec<Var> vs;
+    for (Var v = 0; v < nVars(); v++)
+        if (decision[v] && value(v) == l_Undef)
+            vs.push(v);
+    order_heap.build(vs);
+}
+
+
+/*_________________________________________________________________________________________________
+|
+|  simplify : [void]  ->  [bool]
+|  
+|  Description:
+|    Simplify the clause database according to the current top-level assigment. Currently, the only
+|    thing done here is the removal of satisfied clauses, but more things can be put here.
+|________________________________________________________________________________________________@*/
+bool Solver::simplify()
+{
+    assert(decisionLevel() == 0);
+
+    if (!ok || propagate() != CRef_Undef)
+        return ok = false;
+
+    if (nAssigns() == simpDB_assigns || (simpDB_props > 0))
+        return true;
+
+    // Remove satisfied clauses:
+    removeSatisfied(learnts);
+    if (remove_satisfied)        // Can be turned off.
+        removeSatisfied(clauses);
+    checkGarbage();
+    rebuildOrderHeap();
+
+    simpDB_assigns = nAssigns();
+    simpDB_props   = clauses_literals + learnts_literals;   // (shouldn't depend on stats really, but it will do for now)
+
+    return true;
+}
+
+
+/*_________________________________________________________________________________________________
+|
+|  search : (nof_conflicts : int) (params : const SearchParams&)  ->  [lbool]
+|  
+|  Description:
+|    Search for a model the specified number of conflicts. 
+|    NOTE! Use negative value for 'nof_conflicts' indicate infinity.
+|  
+|  Output:
+|    'l_True' if a partial assigment that is consistent with respect to the clauseset is found. If
+|    all variables are decision variables, this means that the clause set is satisfiable. 'l_False'
+|    if the clause set is unsatisfiable. 'l_Undef' if the bound on number of conflicts is reached.
+|________________________________________________________________________________________________@*/
+lbool Solver::search(int nof_conflicts, UIP uip)
+{
+    assert(ok);
+    int         backtrack_level;
+    int         conflictC = 0;
+    vec<Lit>    learnt_clause;
+    starts++;
+
+    for (;;){
+        CRef confl = propagate();
+        if (confl != CRef_Undef){
+            // CONFLICT
+            conflicts++; conflictC++;
+
+            if (decisionLevel() == 0) {
+              // can this happen for bv?
+              if(d_bvp){ d_bvp->getSatProof()->finalizeProof(confl);}
+              return l_False;
+            }
+
+            learnt_clause.clear();
+            analyze(confl, learnt_clause, backtrack_level, uip);
+
+            Lit p = learnt_clause[0];
+            //bool assumption = marker[var(p)] == 2;
+
+            CRef cr = CRef_Undef;
+            if (learnt_clause.size() > 1) {
+              cr = ca.alloc(learnt_clause, true);
+              learnts.push(cr);
+              attachClause(cr);
+              claBumpActivity(ca[cr]);
+              if(d_bvp){
+                 ClauseId id = d_bvp->getSatProof()->registerClause(cr, LEARNT);
+                 PSTATS(
+                 __gnu_cxx::hash_set<int> cl_levels;
+                 for (int i = 0; i < learnt_clause.size(); ++i) {
+                   cl_levels.insert(level(var(learnt_clause[i])));
+                 }
+                 if( d_bvp ){ d_bvp->getSatProof()->storeClauseGlue(id, cl_levels.size()); }
+                       )
+                 d_bvp->getSatProof()->endResChain(id);
+              }
+            }
+            
+            if (learnt_clause.size() == 1) {
+              // learning a unit clause
+              if(d_bvp){ d_bvp->getSatProof()->endResChain(learnt_clause[0]);}
+            }
+            
+            //  if the uip was an assumption we are unsat
+            if (level(var(p)) <= assumptions.size()) {
+              for (int i = 0; i < learnt_clause.size(); ++i) {
+                assert (level(var(learnt_clause[i])) <= decisionLevel()); 
+                seen[var(learnt_clause[i])] = 1;
+              }
+
+              // Starting new resolution chain for bit-vector proof
+              if( d_bvp ){
+                if (cr == CRef_Undef) {
+                  d_bvp->startBVConflict(learnt_clause[0]);
+                }
+                else { 
+                  d_bvp->startBVConflict(cr);
+                }
+              }
+              analyzeFinal(p, conflict);
+              if(d_bvp){ d_bvp->endBVConflict(conflict); }
+              Debug("bvminisat::search") << OUTPUT_TAG << " conflict on assumptions " << std::endl;
+              return l_False;
+            }
+
+            if (!CVC4::options::bvEagerExplanations()) {
+              // check if uip leads to a conflict 
+              if (backtrack_level < assumptions.size()) {
+                cancelUntil(assumptions.size());
+                uncheckedEnqueue(p, cr);
+              
+                CRef new_confl = propagate();
+                if (new_confl != CRef_Undef) {
+                  // we have a conflict we now need to explain it
+                  // TODO: proof for analyzeFinal2
+                  if(d_bvp){ d_bvp->startBVConflict(new_confl); }
+                  analyzeFinal2(p, new_confl, conflict);
+                  if(d_bvp){ d_bvp->endBVConflict(conflict); }
+                  return l_False;
+                }
+              }
+            }
+
+            cancelUntil(backtrack_level);
+            uncheckedEnqueue(p, cr);
+    
+         
+            varDecayActivity();
+            claDecayActivity();
+
+            if (--learntsize_adjust_cnt == 0){
+                learntsize_adjust_confl *= learntsize_adjust_inc;
+                learntsize_adjust_cnt    = (int)learntsize_adjust_confl;
+                max_learnts             *= learntsize_inc;
+
+                if (verbosity >= 1)
+                    printf("| %9d | %7d %8d %8d | %8d %8d %6.0f | %6.3f %% |\n", 
+                           (int)conflicts, 
+                           (int)dec_vars - (trail_lim.size() == 0 ? trail.size() : trail_lim[0]), nClauses(), (int)clauses_literals, 
+                           (int)max_learnts, nLearnts(), (double)learnts_literals/nLearnts(), progressEstimate()*100);
+            }
+
+        }else{
+            // NO CONFLICT
+            bool isWithinBudget;
+            try {
+              isWithinBudget = withinBudget(CVC4::options::bvSatConflictStep()); 
+            }
+            catch (const CVC4::theory::Interrupted& e) {
+              // do some clean-up and rethrow 
+              cancelUntil(assumptions.size()); 
+              throw e; 
+            }
+            
+            if (decisionLevel() > assumptions.size() && nof_conflicts >= 0 && conflictC >= nof_conflicts ||
+                !isWithinBudget) {
+                // Reached bound on number of conflicts:
+                Debug("bvminisat::search") << OUTPUT_TAG << " restarting " << std::endl;
+                progress_estimate = progressEstimate();
+                cancelUntil(assumptions.size());
+                return l_Undef;
+            }
+ 
+            // Simplify the set of problem clauses:
+            if (decisionLevel() == 0 && !simplify()) {
+                Debug("bvminisat::search") << OUTPUT_TAG << " base level conflict, we're unsat" << std::endl;
+                return l_False;
+            }
+
+            // We can't erase clauses if there is unprocessed assumptions, there might be some
+            // propagationg we need to redu
+            if (decisionLevel() >= assumptions.size() && learnts.size()-nAssigns() >= max_learnts) {
+                // Reduce the set of learnt clauses:
+                Debug("bvminisat::search") << OUTPUT_TAG << " cleaning up database" << std::endl;
+                reduceDB();
+            }
+
+            Lit next = lit_Undef;
+            while (decisionLevel() < assumptions.size()){
+                // Perform user provided assumption:
+                Lit p = assumptions[decisionLevel()];
+                if (value(p) == l_True){
+                    // Dummy decision level:
+                    newDecisionLevel();
+                }else if (value(p) == l_False){
+                    marker[var(p)] = 2;
+                    
+                    if(d_bvp){  d_bvp->markAssumptionConflict(); }
+                    analyzeFinal(~p, conflict);
+                    if(d_bvp){ d_bvp->endBVConflict(conflict); }
+                    Debug("bvminisat::search") << OUTPUT_TAG << " assumption false, we're unsat" << std::endl;
+                    return l_False;
+                }else{
+                    marker[var(p)] = 2;
+                    next = p;
+                    break;
+                }
+            }
+
+            if (next == lit_Undef){
+
+                if (only_bcp) {
+                  Debug("bvminisat::search") << OUTPUT_TAG << " only bcp, skipping rest of the problem" << std::endl;
+                  return l_True;
+                }
+
+                // New variable decision:
+                decisions++;
+                next = pickBranchLit();
+
+                if (next == lit_Undef) {
+                    Debug("bvminisat::search") << OUTPUT_TAG << " satisfiable" << std::endl;
+                    // Model found:
+                    return l_True;
+                }
+            }
+
+            // Increase decision level and enqueue 'next'
+            newDecisionLevel();
+            uncheckedEnqueue(next);
+        }
+    }
+}
+
+
+double Solver::progressEstimate() const
+{
+    double  progress = 0;
+    double  F = 1.0 / nVars();
+
+    for (int i = 0; i <= decisionLevel(); i++){
+        int beg = i == 0 ? 0 : trail_lim[i - 1];
+        int end = i == decisionLevel() ? trail.size() : trail_lim[i];
+        progress += pow(F, i) * (end - beg);
+    }
+
+    return progress / nVars();
+}
+
+/*
+  Finite subsequences of the Luby-sequence:
+
+  0: 1
+  1: 1 1 2
+  2: 1 1 2 1 1 2 4
+  3: 1 1 2 1 1 2 4 1 1 2 1 1 2 4 8
+  ...
+
+
+ */
+
+static double luby(double y, int x){
+
+    // Find the finite subsequence that contains index 'x', and the
+    // size of that subsequence:
+    int size, seq;
+    for (size = 1, seq = 0; size < x+1; seq++, size = 2*size+1);
+
+    while (size-1 != x){
+        size = (size-1)>>1;
+        seq--;
+        x = x % size;
+    }
+
+    return pow(y, seq);
+}
+
+// NOTE: assumptions passed in member-variable 'assumptions'.
+lbool Solver::solve_()
+{
+    Debug("bvminisat") <<"BVMinisat::Solving learned clauses " << learnts.size() <<"\n";
+    Debug("bvminisat") <<"BVMinisat::Solving assumptions " << assumptions.size() <<"\n";
+
+    model.clear();
+    conflict.clear();
+
+    ccmin_mode = 0;
+    
+    if (!ok) return l_False;
+
+    solves++;
+
+    max_learnts               = nClauses() * learntsize_factor;
+    learntsize_adjust_confl   = learntsize_adjust_start_confl;
+    learntsize_adjust_cnt     = (int)learntsize_adjust_confl;
+    lbool   status            = l_Undef;
+
+    if (verbosity >= 1){
+        printf("============================[ Search Statistics ]==============================\n");
+        printf("| Conflicts |          ORIGINAL         |          LEARNT          | Progress |\n");
+        printf("|           |    Vars  Clauses Literals |    Limit  Clauses Lit/Cl |          |\n");
+        printf("===============================================================================\n");
+    }
+
+    // Search:
+    int curr_restarts = 0;
+    while (status == l_Undef){
+        double rest_base = luby_restart ? luby(restart_inc, curr_restarts) : pow(restart_inc, curr_restarts);
+        status = search(rest_base * restart_first);
+        if (!withinBudget(CVC4::options::bvSatConflictStep())) break;
+        curr_restarts++;
+    }
+
+    if (verbosity >= 1)
+        printf("===============================================================================\n");
+
+    if (status == l_True){
+        // Extend & copy model:
+        // model.growTo(nVars());
+        // for (int i = 0; i < nVars(); i++) model[i] = value(i);
+    }else if (status == l_False && conflict.size() == 0)
+        ok = false;
+
+    return status;
+}
+
+//=================================================================================================
+// Bitvector propagations
+// 
+
+void Solver::explain(Lit p, std::vector<Lit>& explanation) {
+  Debug("bvminisat::explain") << OUTPUT_TAG << "starting explain of " << p << std::endl;
+
+  // top level fact, no explanation necessary
+  if (level(var(p)) == 0) {
+    if(d_bvp){
+          // the only way a marker variable is 
+       if (reason(var(p)) == CRef_Undef) {
+          d_bvp->startBVConflict(p);
+          vec<Lit> confl;
+          confl.push(p);
+          d_bvp->endBVConflict(confl);
+          return;
+       }
+    }
+    if (!THEORY_PROOF_ON())
+      return;
+  }
+  
+  seen[var(p)] = 1;
+
+  // if we are called at decisionLevel = 0 trail_lim is empty
+  int bottom = options::proof() ? 0 : trail_lim[0];
+  for (int i = trail.size()-1; i >= bottom; i--){
+    Var x = var(trail[i]);
+    if (seen[x]) {
+      if (reason(x) == CRef_Undef) {
+        if (marker[x] == 2) {
+          assert(level(x) > 0);
+          explanation.push_back(trail[i]);
+        } else {
+          Assert (level(x) == 0);
+          if(d_bvp){ d_bvp->getSatProof()->resolveOutUnit(~(trail[i])); }
+         }
+        
+      } else {
+        Clause& c = ca[reason(x)];
+        if(d_bvp){
+          if (p == trail[i]) {
+            d_bvp->startBVConflict(reason(var(p)));
+          } else {
+            d_bvp->getSatProof()->addResolutionStep(trail[i], reason(x), sign(trail[i]));
+          }
+        }
+        for (int j = 1; j < c.size(); j++) {
+          if (level(var(c[j])) > 0 || options::proof()) {
+            seen[var(c[j])] = 1;
+          }
+        }
+      }
+      seen[x] = 0;
+    }
+  }
+  seen[var(p)] = 0;
+
+  if(d_bvp){
+    vec<Lit> conflict_clause;
+    conflict_clause.push(p);
+    for(unsigned i = 0; i < explanation.size(); ++i) {
+      conflict_clause.push(~explanation[i]);
+    }
+    d_bvp->endBVConflict(conflict_clause);
+  }
+}
+
+void Solver::setProofLog( BitVectorProof * bvp ) {
+  d_bvp = bvp;
+  d_bvp->initSatProof(this);
+  d_bvp->getSatProof()->registerTrueLit(mkLit(varTrue, false));
+  d_bvp->getSatProof()->registerFalseLit(mkLit(varFalse, true));
+}
+
+//=================================================================================================
+// Writing CNF to DIMACS:
+// 
+// FIXME: this needs to be rewritten completely.
+
+static Var mapVar(Var x, vec<Var>& map, Var& max)
+{
+    if (map.size() <= x || map[x] == -1){
+        map.growTo(x+1, -1);
+        map[x] = max++;
+    }
+    return map[x];
+}
+
+
+void Solver::toDimacs(FILE* f, Clause& c, vec<Var>& map, Var& max)
+{
+    if (satisfied(c)) return;
+
+    for (int i = 0; i < c.size(); i++)
+        if (value(c[i]) != l_False)
+            fprintf(f, "%s%d ", sign(c[i]) ? "-" : "", mapVar(var(c[i]), map, max)+1);
+    fprintf(f, "0\n");
+}
+
+
+void Solver::toDimacs(const char *file, const vec<Lit>& assumps)
+{
+    FILE* f = fopen(file, "wr");
+    if (f == NULL)
+        fprintf(stderr, "could not open file %s\n", file), exit(1);
+    toDimacs(f, assumps);
+    fclose(f);
+}
+
+
+void Solver::toDimacs(FILE* f, const vec<Lit>& assumps)
+{
+    // Handle case when solver is in contradictory state:
+    if (!ok){
+        fprintf(f, "p cnf 1 2\n1 0\n-1 0\n");
+        return; }
+
+    vec<Var> map; Var max = 0;
+
+    // Cannot use removeClauses here because it is not safe
+    // to deallocate them at this point. Could be improved.
+    int cnt = 0;
+    for (int i = 0; i < clauses.size(); i++)
+        if (!satisfied(ca[clauses[i]]))
+            cnt++;
+        
+    for (int i = 0; i < clauses.size(); i++)
+        if (!satisfied(ca[clauses[i]])){
+            Clause& c = ca[clauses[i]];
+            for (int j = 0; j < c.size(); j++)
+                if (value(c[j]) != l_False)
+                    mapVar(var(c[j]), map, max);
+        }
+
+    // Assumptions are added as unit clauses:
+    cnt += assumps.size();
+
+    fprintf(f, "p cnf %d %d\n", max, cnt);
+
+    for (int i = 0; i < assumps.size(); i++){
+        assert(value(assumps[i]) != l_False);
+        fprintf(f, "%s%d 0\n", sign(assumps[i]) ? "-" : "", mapVar(var(assumps[i]), map, max)+1);
+    }
+
+    for (int i = 0; i < clauses.size(); i++)
+        toDimacs(f, ca[clauses[i]], map, max);
+
+    if (verbosity > 0)
+        printf("Wrote %d clauses with %d variables.\n", cnt, max);
+}
+
+
+//=================================================================================================
+// Garbage Collection methods:
+
+void Solver::relocAll(ClauseAllocator& to)
+{
+    // All watchers:
+    //
+    // for (int i = 0; i < watches.size(); i++)
+    watches.cleanAll();
+    for (int v = 0; v < nVars(); v++)
+        for (int s = 0; s < 2; s++){
+            Lit p = mkLit(v, s);
+            // printf(" >>> RELOCING: %s%d\n", sign(p)?"-":"", var(p)+1);
+            vec<Watcher>& ws = watches[p];
+            for (int j = 0; j < ws.size(); j++)
+              ca.reloc(ws[j].cref, to, d_bvp ?  d_bvp->getSatProof()->getProxy() : NULL);
+        }
+
+    // All reasons:
+    //
+    for (int i = 0; i < trail.size(); i++){
+        Var v = var(trail[i]);
+
+        if (reason(v) != CRef_Undef && (ca[reason(v)].reloced() || locked(ca[reason(v)])))
+            ca.reloc(vardata[v].reason, to, d_bvp ?  d_bvp->getSatProof()->getProxy() : NULL);
+    }
+
+    // All learnt:
+    //
+    for (int i = 0; i < learnts.size(); i++)
+        ca.reloc(learnts[i], to, d_bvp ?  d_bvp->getSatProof()->getProxy() : NULL);
+
+    // All original:
+    //
+    for (int i = 0; i < clauses.size(); i++)
+        ca.reloc(clauses[i], to, d_bvp ?  d_bvp->getSatProof()->getProxy() : NULL);
+	
+    if(d_bvp){ d_bvp->getSatProof()->finishUpdateCRef(); }
+}
+
+
+void Solver::garbageCollect()
+{
+    // Initialize the next region to a size corresponding to the estimated utilization degree. This
+    // is not precise but should avoid some unnecessary reallocations for the new region:
+    ClauseAllocator to(ca.size() - ca.wasted()); 
+    Debug("bvminisat") << " BVMinisat::Garbage collection \n"; 
+    relocAll(to);
+    if (verbosity >= 2)
+        printf("|  Garbage collection:   %12d bytes => %12d bytes             |\n", 
+               ca.size()*ClauseAllocator::Unit_Size, to.size()*ClauseAllocator::Unit_Size);
+    to.moveTo(ca);
+}
+
+void ClauseAllocator::reloc(CRef& cr, ClauseAllocator& to, CVC4::BVProofProxy* proxy)
+{
+  CRef old = cr;  // save the old reference
+
+  Clause& c = operator[](cr);
+  if (c.reloced()) { cr = c.relocation(); return; }
+  
+  cr = to.alloc(c, c.learnt());
+  c.relocate(cr);
+  if (proxy) {
+    proxy->updateCRef(old, cr); 
+  }
+  
+  // Copy extra data-fields: 
+  // (This could be cleaned-up. Generalize Clause-constructor to be applicable here instead?)
+  to[cr].mark(c.mark());
+  if (to[cr].learnt())         to[cr].activity() = c.activity();
+  else if (to[cr].has_extra()) to[cr].calcAbstraction();
+}
+
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
diff --git a/src/prop/bvminisat/core/Solver.h b/src/prop/bvminisat/core/Solver.h
new file mode 100644
index 0000000..5554951
--- /dev/null
+++ b/src/prop/bvminisat/core/Solver.h
@@ -0,0 +1,497 @@
+/****************************************************************************************[Solver.h]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef BVMinisat_Solver_h
+#define BVMinisat_Solver_h
+
+#include <ext/hash_set>
+#include <vector>
+
+#include "context/context.h"
+#include "proof/clause_id.h"
+#include "proof/sat_proof.h"
+#include "prop/bvminisat/core/SolverTypes.h"
+#include "prop/bvminisat/mtl/Alg.h"
+#include "prop/bvminisat/mtl/Heap.h"
+#include "prop/bvminisat/mtl/Vec.h"
+#include "prop/bvminisat/utils/Options.h"
+
+
+namespace CVC4 {
+
+namespace BVMinisat {
+class Solver;
+}
+
+class BitVectorProof;
+
+namespace BVMinisat {
+
+/** Interface for minisat callbacks */
+class Notify {
+
+public:
+
+  virtual ~Notify() {}
+
+  /**
+   * If the notify returns false, the solver will break out of whatever it's currently doing
+   * with an "unknown" answer.
+   */
+  virtual bool notify(Lit lit) = 0;
+
+  /**
+   * Notify about a new learnt clause with marked literals only.
+   */
+  virtual void notify(vec<Lit>& learnt) = 0;
+
+  virtual void spendResource(unsigned ammount) = 0;
+  virtual void safePoint(unsigned ammount) = 0;
+};
+
+//=================================================================================================
+// Solver -- the main class:
+class Solver {
+    friend class CVC4::TSatProof< CVC4::BVMinisat::Solver>;
+public:
+    typedef Var TVar;
+    typedef Lit TLit;
+    typedef Clause TClause; 
+    typedef CRef TCRef;
+    typedef vec<Lit> TLitVec;
+
+    static CRef TCRef_Undef;
+    static CRef TCRef_Lazy;
+private:
+    /** To notify */
+    Notify* notify;
+
+    /** Cvc4 context */
+    CVC4::context::Context* c;
+
+    /** True constant */
+    Var varTrue;
+
+    /** False constant */
+    Var varFalse;
+
+public:
+
+    // Constructor/Destructor:
+    //
+    Solver(CVC4::context::Context* c);
+    virtual ~Solver();
+
+    void setNotify(Notify* toNotify) { notify = toNotify; }
+
+    // Problem specification:
+    //
+    Var     newVar    (bool polarity = true, bool dvar = true); // Add a new variable with parameters specifying variable mode.
+    Var     trueVar() const { return varTrue; }
+    Var     falseVar() const { return varFalse; }
+
+
+    bool    addClause (const vec<Lit>& ps, ClauseId& id);                     // Add a clause to the solver. 
+    bool    addEmptyClause();                                   // Add the empty clause, making the solver contradictory.
+    bool    addClause (Lit p, ClauseId& id);                                  // Add a unit clause to the solver. 
+    bool    addClause (Lit p, Lit q, ClauseId& id);                           // Add a binary clause to the solver. 
+    bool    addClause (Lit p, Lit q, Lit r, ClauseId& id);                    // Add a ternary clause to the solver. 
+    bool    addClause_(      vec<Lit>& ps, ClauseId& id);                     // Add a clause to the solver without making superflous internal copy. Will
+                                                                // change the passed vector 'ps'.
+
+    // Solving:
+    //
+    bool    simplify     ();                        // Removes already satisfied clauses.
+    lbool    solve        (const vec<Lit>& assumps); // Search for a model that respects a given set of assumptions.
+    lbool   solveLimited (const vec<Lit>& assumps); // Search for a model that respects a given set of assumptions (With resource constraints).
+    lbool    solve        ();                        // Search without assumptions.
+    lbool    solve        (Lit p);                   // Search for a model that respects a single assumption.
+    lbool    solve        (Lit p, Lit q);            // Search for a model that respects two assumptions.
+    lbool    solve        (Lit p, Lit q, Lit r);     // Search for a model that respects three assumptions.
+    bool    okay         () const;                  // FALSE means solver is in a conflicting state
+    lbool   assertAssumption(Lit p, bool propagate);  // Assert a new assumption, start BCP if propagate = true
+    lbool   propagateAssumptions();                   // Do BCP over asserted assumptions
+    void    popAssumption();                          // Pop an assumption
+
+    void    toDimacs     (FILE* f, const vec<Lit>& assumps);            // Write CNF to file in DIMACS-format.
+    void    toDimacs     (const char *file, const vec<Lit>& assumps);
+    void    toDimacs     (FILE* f, Clause& c, vec<Var>& map, Var& max);
+
+    // Convenience versions of 'toDimacs()':
+    void    toDimacs     (const char* file);
+    void    toDimacs     (const char* file, Lit p);
+    void    toDimacs     (const char* file, Lit p, Lit q);
+    void    toDimacs     (const char* file, Lit p, Lit q, Lit r);
+    
+    // Variable mode:
+    // 
+    void    setPolarity    (Var v, bool b); // Declare which polarity the decision heuristic should use for a variable. Requires mode 'polarity_user'.
+    void    setDecisionVar (Var v, bool b); // Declare if a variable should be eligible for selection in the decision heuristic.
+
+    // Read state:
+    //
+    lbool   value      (Var x) const;       // The current value of a variable.
+    lbool   value      (Lit p) const;       // The current value of a literal.
+    lbool   modelValue (Var x) const;       // The value of a variable in the last model. The last call to solve must have been satisfiable.
+    lbool   modelValue (Lit p) const;       // The value of a literal in the last model. The last call to solve must have been satisfiable.
+    int     nAssigns   ()      const;       // The current number of assigned literals.
+    int     nClauses   ()      const;       // The current number of original clauses.
+    int     nLearnts   ()      const;       // The current number of learnt clauses.
+    int     nVars      ()      const;       // The current number of variables.
+    int     nFreeVars  ()      const;
+
+    // Resource contraints:
+    //
+    void    setConfBudget(int64_t x);
+    void    setPropBudget(int64_t x);
+    void    budgetOff();
+    void    interrupt();          // Trigger a (potentially asynchronous) interruption of the solver.
+    void    clearInterrupt();     // Clear interrupt indicator flag.
+
+    // Memory managment:
+    //
+    virtual void garbageCollect();
+    void    checkGarbage(double gf);
+    void    checkGarbage();
+
+    // Extra results: (read-only member variable)
+    //
+    vec<lbool> model;             // If problem is satisfiable, this vector contains the model (if any).
+    vec<Lit>   conflict;          // If problem is unsatisfiable (possibly under assumptions),
+                                  // this vector represent the final conflict clause expressed in the assumptions.
+
+    // Mode of operation:
+    //
+    int       verbosity;
+    double    var_decay;
+    double    clause_decay;
+    double    random_var_freq;
+    double    random_seed;
+    bool      luby_restart;
+    int       ccmin_mode;         // Controls conflict clause minimization (0=none, 1=basic, 2=deep).
+    int       phase_saving;       // Controls the level of phase saving (0=none, 1=limited, 2=full).
+    bool      rnd_pol;            // Use random polarities for branching heuristics.
+    bool      rnd_init_act;       // Initialize variable activities with a small random value.
+    double    garbage_frac;       // The fraction of wasted memory allowed before a garbage collection is triggered.
+
+    int       restart_first;      // The initial restart limit.                                                                (default 100)
+    double    restart_inc;        // The factor with which the restart limit is multiplied in each restart.                    (default 1.5)
+    double    learntsize_factor;  // The intitial limit for learnt clauses is a factor of the original clauses.                (default 1 / 3)
+    double    learntsize_inc;     // The limit for learnt clauses is multiplied with this factor each restart.                 (default 1.1)
+
+    int       learntsize_adjust_start_confl;
+    double    learntsize_adjust_inc;
+
+    // Statistics: (read-only member variable)
+    //
+    uint64_t solves, starts, decisions, rnd_decisions, propagations, conflicts;
+    uint64_t dec_vars, clauses_literals, learnts_literals, max_literals, tot_literals;
+
+    // Bitvector Propagations
+    //
+
+    void addMarkerLiteral(Var var);
+
+    bool need_to_propagate;             // true if we added new clauses, set to true in propagation 
+    bool only_bcp;                      // solving mode in which only boolean constraint propagation is done
+    void setOnlyBCP (bool val) { only_bcp = val;}
+    void explain(Lit l, std::vector<Lit>& explanation);
+    
+    void setProofLog( CVC4::BitVectorProof * bvp );
+
+protected:
+
+    // has a clause been added
+    bool                clause_added;
+
+    // Helper structures:
+    //
+    struct VarData { CRef reason; int level; };
+    static inline VarData mkVarData(CRef cr, int l){ VarData d = {cr, l}; return d; }
+
+    struct Watcher {
+        CRef cref;
+        Lit  blocker;
+        Watcher(CRef cr, Lit p) : cref(cr), blocker(p) {}
+        bool operator==(const Watcher& w) const { return cref == w.cref; }
+        bool operator!=(const Watcher& w) const { return cref != w.cref; }
+    };
+
+    struct WatcherDeleted
+    {
+        const ClauseAllocator& ca;
+        WatcherDeleted(const ClauseAllocator& _ca) : ca(_ca) {}
+        bool operator()(const Watcher& w) const { return ca[w.cref].mark() == 1; }
+    };
+
+    struct VarOrderLt {
+        const vec<double>&  activity;
+        bool operator () (Var x, Var y) const { return activity[x] > activity[y]; }
+        VarOrderLt(const vec<double>&  act) : activity(act) { }
+    };
+
+    // Solver state:
+    //
+    bool                ok;               // If FALSE, the constraints are already unsatisfiable. No part of the solver state may be used!
+    vec<CRef>           clauses;          // List of problem clauses.
+    vec<CRef>           learnts;          // List of learnt clauses.
+    double              cla_inc;          // Amount to bump next clause with.
+    vec<double>         activity;         // A heuristic measurement of the activity of a variable.
+    double              var_inc;          // Amount to bump next variable with.
+    OccLists<Lit, vec<Watcher>, WatcherDeleted>
+                        watches;          // 'watches[lit]' is a list of constraints watching 'lit' (will go there if literal becomes true).
+    vec<lbool>          assigns;          // The current assignments.
+    vec<char>           polarity;         // The preferred polarity of each variable.
+    vec<char>           marker;           // Is the variable a marker literal
+    vec<char>           decision;         // Declares if a variable is eligible for selection in the decision heuristic.
+    vec<Lit>            trail;            // Assignment stack; stores all assigments made in the order they were made.
+    vec<int>            trail_lim;        // Separator indices for different decision levels in 'trail'.
+    vec<VarData>        vardata;          // Stores reason and level for each variable.
+    int                 qhead;            // Head of queue (as index into the trail -- no more explicit propagation queue in MiniSat).
+    int                 simpDB_assigns;   // Number of top-level assignments since last execution of 'simplify()'.
+    int64_t             simpDB_props;     // Remaining number of propagations that must be made before next execution of 'simplify()'.
+    vec<Lit>            assumptions;      // Current set of assumptions provided to solve by the user.
+    Heap<VarOrderLt>    order_heap;       // A priority queue of variables ordered with respect to the variable activity.
+    double              progress_estimate;// Set by 'search()'.
+    bool                remove_satisfied; // Indicates whether possibly inefficient linear scan for satisfied clauses should be performed in 'simplify'.
+
+    ClauseAllocator     ca;
+
+    // Temporaries (to reduce allocation overhead). Each variable is prefixed by the method in which it is
+    // used, exept 'seen' wich is used in several places.
+    //
+    vec<char>           seen;
+    vec<Lit>            analyze_stack;
+    vec<Lit>            analyze_toclear;
+    vec<Lit>            add_tmp;
+
+    double              max_learnts;
+    double              learntsize_adjust_confl;
+    int                 learntsize_adjust_cnt;
+
+    // Resource contraints:
+    //
+    int64_t             conflict_budget;    // -1 means no budget.
+    int64_t             propagation_budget; // -1 means no budget.
+    bool                asynch_interrupt;
+    
+    //proof log
+    CVC4::BitVectorProof * d_bvp;
+
+    // Main internal methods:
+    //
+    void     insertVarOrder   (Var x);                                                 // Insert a variable in the decision order priority queue.
+    Lit      pickBranchLit    ();                                                      // Return the next decision variable.
+    void     newDecisionLevel ();                                                      // Begins a new decision level.
+    void     uncheckedEnqueue (Lit p, CRef from = CRef_Undef);                         // Enqueue a literal. Assumes value of literal is undefined.
+    bool     enqueue          (Lit p, CRef from = CRef_Undef);                         // Test if fact 'p' contradicts current state, enqueue otherwise.
+    CRef     propagate        ();                                                      // Perform unit propagation. Returns possibly conflicting clause.
+    void     cancelUntil      (int level);                                             // Backtrack until a certain level.
+
+    enum UIP {
+      UIP_FIRST,
+      UIP_LAST
+    };
+
+    void     analyze          (CRef confl, vec<Lit>& out_learnt, int& out_btlevel, UIP uip = UIP_FIRST);    // (bt = backtrack)
+    void     analyzeFinal     (Lit p, vec<Lit>& out_conflict);                         // COULD THIS BE IMPLEMENTED BY THE ORDINARIY "analyze" BY SOME REASONABLE GENERALIZATION?
+    void     analyzeFinal2(Lit p, CRef confl_clause, vec<Lit>& out_conflict);
+    bool     litRedundant     (Lit p, uint32_t abstract_levels);                       // (helper method for 'analyze()')
+    lbool    search           (int nof_conflicts, UIP uip = UIP_FIRST);                // Search for a given number of conflicts.
+    lbool    solve_           ();                                                      // Main solve method (assumptions given in 'assumptions').
+    void     reduceDB         ();                                                      // Reduce the set of learnt clauses.
+    void     removeSatisfied  (vec<CRef>& cs);                                         // Shrink 'cs' to contain only non-satisfied clauses.
+    void     rebuildOrderHeap ();
+
+    // Maintaining Variable/Clause activity:
+    //
+    void     varDecayActivity ();                      // Decay all variables with the specified factor. Implemented by increasing the 'bump' value instead.
+    void     varBumpActivity  (Var v, double inc);     // Increase a variable with the current 'bump' value.
+    void     varBumpActivity  (Var v);                 // Increase a variable with the current 'bump' value.
+    void     claDecayActivity ();                      // Decay all clauses with the specified factor. Implemented by increasing the 'bump' value instead.
+    void     claBumpActivity  (Clause& c);             // Increase a clause with the current 'bump' value.
+
+    // Operations on clauses:
+    //
+    void     attachClause     (CRef cr);               // Attach a clause to watcher lists.
+    void     detachClause     (CRef cr, bool strict = false); // Detach a clause to watcher lists.
+    void     removeClause     (CRef cr);               // Detach and free a clause.
+    bool     locked           (const Clause& c) const; // Returns TRUE if a clause is a reason for some implication in the current state.
+    bool     satisfied        (const Clause& c) const; // Returns TRUE if a clause is satisfied in the current state.
+
+    void     relocAll         (ClauseAllocator& to);
+
+    // Misc:
+    //
+    int      decisionLevel    ()      const; // Gives the current decisionlevel.
+    uint32_t abstractLevel    (Var x) const; // Used to represent an abstraction of sets of decision levels.
+    CRef     reason           (Var x) const;
+    int      level            (Var x) const;
+    double   progressEstimate ()      const; // DELETE THIS ?? IT'S NOT VERY USEFUL ...
+    bool     withinBudget     (uint64_t ammount)      const;
+
+    // Static helpers:
+    //
+
+    // Returns a random float 0 <= x < 1. Seed must never be 0.
+    static inline double drand(double& seed) {
+        seed *= 1389796;
+        int q = (int)(seed / 2147483647);
+        seed -= (double)q * 2147483647;
+        return seed / 2147483647; }
+
+    // Returns a random integer 0 <= x < size. Seed must never be 0.
+    static inline int irand(double& seed, int size) {
+        return (int)(drand(seed) * size); }
+
+  // Less than for literals in an added clause when proofs are on.
+  struct assign_lt {
+    Solver& solver;
+    assign_lt(Solver& solver) : solver(solver) {}
+    bool operator () (Lit x, Lit y) {
+      lbool x_value = solver.value(x);
+      lbool y_value = solver.value(y);
+      // Two unassigned literals are sorted arbitrarily
+      if (x_value == l_Undef && y_value == l_Undef) {
+        return x < y;
+      }
+      // Unassigned literals are put to front
+      if (x_value == l_Undef) return true;
+      if (y_value == l_Undef) return false;
+      // Literals of the same value are sorted by decreasing levels
+      if (x_value == y_value) {
+        return solver.level(var(x)) > solver.level(var(y));
+      } else {
+        // True literals go up front
+        if (x_value == l_True) {
+          return true;
+        } else {
+          return false;
+        }
+      }
+    }
+  };
+
+};
+
+
+//=================================================================================================
+// Implementation of inline methods:
+
+inline CRef Solver::reason(Var x) const { assert(x < vardata.size()); return vardata[x].reason; }
+inline int  Solver::level (Var x) const { assert(x < vardata.size()); return vardata[x].level; }
+
+inline void Solver::insertVarOrder(Var x) {
+    if (!order_heap.inHeap(x) && decision[x]) order_heap.insert(x); }
+
+inline void Solver::varDecayActivity() { var_inc *= (1 / var_decay); }
+inline void Solver::varBumpActivity(Var v) { varBumpActivity(v, var_inc); }
+inline void Solver::varBumpActivity(Var v, double inc) {
+    if ( (activity[v] += inc) > 1e100 ) {
+        // Rescale:
+        for (int i = 0; i < nVars(); i++)
+            activity[i] *= 1e-100;
+        var_inc *= 1e-100; }
+
+    // Update order_heap with respect to new activity:
+    if (order_heap.inHeap(v))
+        order_heap.decrease(v); }
+
+inline void Solver::claDecayActivity() { cla_inc *= (1 / clause_decay); }
+inline void Solver::claBumpActivity (Clause& c) {
+        if ( (c.activity() += cla_inc) > 1e20 ) {
+            // Rescale:
+            for (int i = 0; i < learnts.size(); i++)
+                ca[learnts[i]].activity() *= 1e-20;
+            cla_inc *= 1e-20; } }
+
+inline void Solver::checkGarbage(void){ return checkGarbage(garbage_frac); }
+inline void Solver::checkGarbage(double gf){
+    if (ca.wasted() > ca.size() * gf)
+        garbageCollect(); }
+
+// NOTE: enqueue does not set the ok flag! (only public methods do)
+inline bool     Solver::enqueue         (Lit p, CRef from)      { return value(p) != l_Undef ? value(p) != l_False : (uncheckedEnqueue(p, from), true); }
+inline bool     Solver::addClause       (const vec<Lit>& ps, ClauseId& id)    { ps.copyTo(add_tmp); return addClause_(add_tmp, id); }
+inline bool     Solver::addEmptyClause  ()                      { add_tmp.clear(); ClauseId tmp; return addClause_(add_tmp, tmp); }
+inline bool     Solver::addClause       (Lit p, ClauseId& id)                 { add_tmp.clear(); add_tmp.push(p); return addClause_(add_tmp, id); }
+inline bool     Solver::addClause       (Lit p, Lit q, ClauseId& id)          { add_tmp.clear(); add_tmp.push(p); add_tmp.push(q); return addClause_(add_tmp, id); }
+inline bool     Solver::addClause       (Lit p, Lit q, Lit r, ClauseId& id)   { add_tmp.clear(); add_tmp.push(p); add_tmp.push(q); add_tmp.push(r); return addClause_(add_tmp, id); }
+inline bool     Solver::locked          (const Clause& c) const { return value(c[0]) == l_True && reason(var(c[0])) != CRef_Undef && ca.lea(reason(var(c[0]))) == &c; }
+inline void     Solver::newDecisionLevel()                      { trail_lim.push(trail.size()); }
+
+inline int      Solver::decisionLevel ()      const   { return trail_lim.size(); }
+inline uint32_t Solver::abstractLevel (Var x) const   { return 1 << (level(x) & 31); }
+inline lbool    Solver::value         (Var x) const   { return assigns[x]; }
+inline lbool    Solver::value         (Lit p) const   { return assigns[var(p)] ^ sign(p); }
+inline lbool    Solver::modelValue    (Var x) const   { return model[x]; }
+inline lbool    Solver::modelValue    (Lit p) const   { return model[var(p)] ^ sign(p); }
+inline int      Solver::nAssigns      ()      const   { return trail.size(); }
+inline int      Solver::nClauses      ()      const   { return clauses.size(); }
+inline int      Solver::nLearnts      ()      const   { return learnts.size(); }
+inline int      Solver::nVars         ()      const   { return vardata.size(); }
+inline int      Solver::nFreeVars     ()      const   { return (int)dec_vars - (trail_lim.size() == 0 ? trail.size() : trail_lim[0]); }
+inline void     Solver::setPolarity   (Var v, bool b) { polarity[v] = b; }
+inline void     Solver::setDecisionVar(Var v, bool b) 
+{ 
+    if      ( b && !decision[v]) dec_vars++;
+    else if (!b &&  decision[v]) dec_vars--;
+
+    decision[v] = b;
+    insertVarOrder(v);
+}
+inline void     Solver::setConfBudget(int64_t x){ conflict_budget    = conflicts    + x; }
+inline void     Solver::setPropBudget(int64_t x){ propagation_budget = propagations + x; }
+inline void     Solver::interrupt(){ asynch_interrupt = true; }
+inline void     Solver::clearInterrupt(){ asynch_interrupt = false; }
+inline void     Solver::budgetOff(){ conflict_budget = propagation_budget = -1; }
+inline bool     Solver::withinBudget(uint64_t ammount) const {
+    Assert (notify);
+    notify->spendResource(ammount);
+    notify->safePoint(0);
+
+    return !asynch_interrupt &&
+           (conflict_budget    < 0 || conflicts < (uint64_t)conflict_budget) &&
+           (propagation_budget < 0 || propagations < (uint64_t)propagation_budget); }
+
+inline lbool     Solver::solve         ()                    { budgetOff(); return solve_(); }
+inline lbool     Solver::solve         (Lit p)               { budgetOff(); assumptions.push(p); return solve_(); }
+inline lbool     Solver::solve         (Lit p, Lit q)        { budgetOff(); assumptions.push(p); assumptions.push(q); return solve_(); }
+inline lbool     Solver::solve         (Lit p, Lit q, Lit r) { budgetOff(); assumptions.push(p); assumptions.push(q); assumptions.push(r); return solve_(); }
+inline lbool     Solver::solve         (const vec<Lit>& assumps){ budgetOff(); assumps.copyTo(assumptions); return solve_(); }
+inline lbool    Solver::solveLimited  (const vec<Lit>& assumps){ assumps.copyTo(assumptions); return solve_(); }
+inline bool     Solver::okay          ()      const   { return ok; }
+
+inline void     Solver::toDimacs     (const char* file){ vec<Lit> as; toDimacs(file, as); }
+inline void     Solver::toDimacs     (const char* file, Lit p){ vec<Lit> as; as.push(p); toDimacs(file, as); }
+inline void     Solver::toDimacs     (const char* file, Lit p, Lit q){ vec<Lit> as; as.push(p); as.push(q); toDimacs(file, as); }
+inline void     Solver::toDimacs     (const char* file, Lit p, Lit q, Lit r){ vec<Lit> as; as.push(p); as.push(q); as.push(r); toDimacs(file, as); }
+
+
+//=================================================================================================
+// Debug etc:
+
+
+//=================================================================================================
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
+
+
+#endif
diff --git a/src/prop/bvminisat/core/SolverTypes.h b/src/prop/bvminisat/core/SolverTypes.h
new file mode 100644
index 0000000..1fd7ac5
--- /dev/null
+++ b/src/prop/bvminisat/core/SolverTypes.h
@@ -0,0 +1,421 @@
+/***********************************************************************************[SolverTypes.h]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef BVMinisat_SolverTypes_h
+#define BVMinisat_SolverTypes_h
+
+#include <assert.h>
+
+#include "prop/bvminisat/mtl/IntTypes.h"
+#include "prop/bvminisat/mtl/Alg.h"
+#include "prop/bvminisat/mtl/Vec.h"
+#include "prop/bvminisat/mtl/Map.h"
+#include "prop/bvminisat/mtl/Alloc.h"
+
+namespace CVC4 {
+namespace BVMinisat {
+class Solver;
+}
+template <class Solver> class ProofProxy;
+typedef ProofProxy<BVMinisat::Solver> BVProofProxy;
+}
+
+namespace CVC4 {
+
+namespace BVMinisat {
+
+//=================================================================================================
+// Variables, literals, lifted booleans, clauses:
+
+
+// NOTE! Variables are just integers. No abstraction here. They should be chosen from 0..N,
+// so that they can be used as array indices.
+
+typedef int Var;
+#define var_Undef (-1)
+
+
+struct Lit {
+    int     x;
+
+    // Use this as a constructor:
+    friend Lit mkLit(Var var, bool sign);
+
+    bool operator == (Lit p) const { return x == p.x; }
+    bool operator != (Lit p) const { return x != p.x; }
+    bool operator <  (Lit p) const { return x < p.x;  } // '<' makes p, ~p adjacent in the ordering.
+};
+
+inline  Lit  mkLit     (Var var, bool sign = false) { Lit p; p.x = var + var + (int)sign; return p; }
+inline  Lit  operator ~(Lit p)              { Lit q; q.x = p.x ^ 1; return q; }
+inline  Lit  operator ^(Lit p, bool b)      { Lit q; q.x = p.x ^ (unsigned int)b; return q; }
+inline  bool sign      (Lit p)              { return p.x & 1; }
+inline  int  var       (Lit p)              { return p.x >> 1; }
+
+// Mapping Literals to and from compact integers suitable for array indexing:
+inline  int  toInt     (Var v)              { return v; }
+inline  int  toInt     (Lit p)              { return p.x; }
+inline  Lit  toLit     (int i)              { Lit p; p.x = i; return p; }
+
+struct LitHashFunction {
+  size_t operator () (const Lit& l) const {
+    return toInt(l);
+  }
+};
+
+//const Lit lit_Undef = mkLit(var_Undef, false);  // }- Useful special constants.
+//const Lit lit_Error = mkLit(var_Undef, true );  // }
+
+const Lit lit_Undef = { -2 };  // }- Useful special constants.
+const Lit lit_Error = { -1 };  // }
+
+
+//=================================================================================================
+// Lifted booleans:
+//
+// NOTE: this implementation is optimized for the case when comparisons between values are mostly
+//       between one variable and one constant. Some care had to be taken to make sure that gcc 
+//       does enough constant propagation to produce sensible code, and this appears to be somewhat
+//       fragile unfortunately.
+
+
+#ifndef l_True
+#define l_True  (lbool((uint8_t)0)) // gcc does not do constant propagation if these are real constants.
+#endif
+
+#ifndef l_False
+#define l_False (lbool((uint8_t)1))
+#endif
+
+#ifndef l_Undef
+#define l_Undef (lbool((uint8_t)2))
+#endif
+
+class lbool {
+    uint8_t value;
+
+public:
+    explicit lbool(uint8_t v) : value(v) { }
+
+    lbool()       : value(0) { }
+    explicit lbool(bool x) : value(!x) { }
+
+    bool  operator == (lbool b) const { return ((b.value&2) & (value&2)) | (!(b.value&2)&(value == b.value)); }
+    bool  operator != (lbool b) const { return !(*this == b); }
+    lbool operator ^  (bool  b) const { return lbool((uint8_t)(value^(uint8_t)b)); }
+
+    lbool operator && (lbool b) const { 
+        uint8_t sel = (this->value << 1) | (b.value << 3);
+        uint8_t v   = (0xF7F755F4 >> sel) & 3;
+        return lbool(v); }
+
+    lbool operator || (lbool b) const {
+        uint8_t sel = (this->value << 1) | (b.value << 3);
+        uint8_t v   = (0xFCFCF400 >> sel) & 3;
+        return lbool(v); }
+
+    friend int   toInt  (lbool l);
+    friend lbool toLbool(int   v);
+};
+inline int   toInt  (lbool l) { return l.value; }
+inline lbool toLbool(int   v) { return lbool((uint8_t)v);  }
+
+//=================================================================================================
+// Clause -- a simple class for representing a clause:
+
+class Clause;
+typedef RegionAllocator<uint32_t>::Ref CRef;
+
+class Clause {
+    struct {
+        unsigned mark      : 2;
+        unsigned learnt    : 1;
+        unsigned has_extra : 1;
+        unsigned reloced   : 1;
+        unsigned size      : 27; }                            header;
+    union { Lit lit; float act; uint32_t abs; CRef rel; } data[0];
+
+    friend class ClauseAllocator;
+
+    // NOTE: This constructor cannot be used directly (doesn't allocate enough memory).
+    template<class V>
+    Clause(const V& ps, bool use_extra, bool learnt) {
+        header.mark      = 0;
+        header.learnt    = learnt;
+        header.has_extra = use_extra;
+        header.reloced   = 0;
+        header.size      = ps.size();
+
+        for (int i = 0; i < ps.size(); i++) 
+            data[i].lit = ps[i];
+
+        if (header.has_extra){
+            if (header.learnt)
+                data[header.size].act = 0; 
+            else 
+                calcAbstraction(); }
+    }
+
+public:
+    void calcAbstraction() {
+        assert(header.has_extra);
+        uint32_t abstraction = 0;
+        for (int i = 0; i < size(); i++)
+            abstraction |= 1 << (var(data[i].lit) & 31);
+        data[header.size].abs = abstraction;  }
+
+
+    int          size        ()      const   { return header.size; }
+    void         shrink      (int i)         { assert(i <= size()); if (header.has_extra) data[header.size-i] = data[header.size]; header.size -= i; }
+    void         pop         ()              { shrink(1); }
+    bool         learnt      ()      const   { return header.learnt; }
+    bool         has_extra   ()      const   { return header.has_extra; }
+    uint32_t     mark        ()      const   { return header.mark; }
+    void         mark        (uint32_t m)    { header.mark = m; }
+    const Lit&   last        ()      const   { return data[header.size-1].lit; }
+
+    bool         reloced     ()      const   { return header.reloced; }
+    CRef         relocation  ()      const   { return data[0].rel; }
+    void         relocate    (CRef c)        { header.reloced = 1; data[0].rel = c; }
+
+    // NOTE: somewhat unsafe to change the clause in-place! Must manually call 'calcAbstraction' afterwards for
+    //       subsumption operations to behave correctly.
+    Lit&         operator [] (int i)         { return data[i].lit; }
+    Lit          operator [] (int i) const   { return data[i].lit; }
+    operator const Lit* (void) const         { return (Lit*)data; }
+
+    float&       activity    ()              { assert(header.has_extra); return data[header.size].act; }
+    uint32_t     abstraction () const        { assert(header.has_extra); return data[header.size].abs; }
+
+    Lit          subsumes    (const Clause& other) const;
+    void         strengthen  (Lit p);
+};
+
+
+//=================================================================================================
+// ClauseAllocator -- a simple class for allocating memory for clauses:
+
+
+const CRef CRef_Undef = RegionAllocator<uint32_t>::Ref_Undef;
+const CRef CRef_Lazy  = RegionAllocator<uint32_t>::Ref_Undef - 1;
+
+class ClauseAllocator : public RegionAllocator<uint32_t>
+{
+    static int clauseWord32Size(int size, bool has_extra){
+        return (sizeof(Clause) + (sizeof(Lit) * (size + (int)has_extra))) / sizeof(uint32_t); }
+ public:
+    bool extra_clause_field;
+
+    ClauseAllocator(uint32_t start_cap) : RegionAllocator<uint32_t>(start_cap), extra_clause_field(false){}
+    ClauseAllocator() : extra_clause_field(false){}
+
+    void moveTo(ClauseAllocator& to){
+        to.extra_clause_field = extra_clause_field;
+        RegionAllocator<uint32_t>::moveTo(to); }
+
+    template<class Lits>
+    CRef alloc(const Lits& ps, bool learnt = false)
+    {
+        assert(sizeof(Lit)      == sizeof(uint32_t));
+        assert(sizeof(float)    == sizeof(uint32_t));
+        bool use_extra = learnt | extra_clause_field;
+
+        CRef cid = RegionAllocator<uint32_t>::alloc(clauseWord32Size(ps.size(), use_extra));
+        new (lea(cid)) Clause(ps, use_extra, learnt);
+
+        return cid;
+    }
+
+    // Deref, Load Effective Address (LEA), Inverse of LEA (AEL):
+    Clause&       operator[](Ref r)       { return (Clause&)RegionAllocator<uint32_t>::operator[](r); }
+    const Clause& operator[](Ref r) const { return (Clause&)RegionAllocator<uint32_t>::operator[](r); }
+    Clause*       lea       (Ref r)       { return (Clause*)RegionAllocator<uint32_t>::lea(r); }
+    const Clause* lea       (Ref r) const { return (Clause*)RegionAllocator<uint32_t>::lea(r); }
+    Ref           ael       (const Clause* t){ return RegionAllocator<uint32_t>::ael((uint32_t*)t); }
+
+    void free(CRef cid)
+    {
+        Clause& c = operator[](cid);
+        RegionAllocator<uint32_t>::free(clauseWord32Size(c.size(), c.has_extra()));
+    }
+
+  void reloc(CRef& cr, ClauseAllocator& to, CVC4::BVProofProxy* proxy = NULL);
+};
+
+
+//=================================================================================================
+// OccLists -- a class for maintaining occurence lists with lazy deletion:
+
+template<class Idx, class Vec, class Deleted>
+class OccLists
+{
+    vec<Vec>  occs;
+    vec<char> dirty;
+    vec<Idx>  dirties;
+    Deleted   deleted;
+
+ public:
+    OccLists(const Deleted& d) : deleted(d) {}
+    
+    void  init      (const Idx& idx){ occs.growTo(toInt(idx)+1); dirty.growTo(toInt(idx)+1, 0); }
+    // Vec&  operator[](const Idx& idx){ return occs[toInt(idx)]; }
+    Vec&  operator[](const Idx& idx){ return occs[toInt(idx)]; }
+    Vec&  lookup    (const Idx& idx){ if (dirty[toInt(idx)]) clean(idx); return occs[toInt(idx)]; }
+
+    void  cleanAll  ();
+    void  clean     (const Idx& idx);
+    void  smudge    (const Idx& idx){
+        if (dirty[toInt(idx)] == 0){
+            dirty[toInt(idx)] = 1;
+            dirties.push(idx);
+        }
+    }
+
+    void  clear(bool free = true){
+        occs   .clear(free);
+        dirty  .clear(free);
+        dirties.clear(free);
+    }
+};
+
+
+template<class Idx, class Vec, class Deleted>
+void OccLists<Idx,Vec,Deleted>::cleanAll()
+{
+    for (int i = 0; i < dirties.size(); i++)
+        // Dirties may contain duplicates so check here if a variable is already cleaned:
+        if (dirty[toInt(dirties[i])])
+            clean(dirties[i]);
+    dirties.clear();
+}
+
+
+template<class Idx, class Vec, class Deleted>
+void OccLists<Idx,Vec,Deleted>::clean(const Idx& idx)
+{
+    Vec& vec = occs[toInt(idx)];
+    int  i, j;
+    for (i = j = 0; i < vec.size(); i++)
+        if (!deleted(vec[i]))
+            vec[j++] = vec[i];
+    vec.shrink(i - j);
+    dirty[toInt(idx)] = 0;
+}
+
+
+//=================================================================================================
+// CMap -- a class for mapping clauses to values:
+
+
+template<class T>
+class CMap
+{
+    struct CRefHash {
+        uint32_t operator()(CRef cr) const { return (uint32_t)cr; } };
+
+    typedef Map<CRef, T, CRefHash> HashTable;
+    HashTable map;
+        
+ public:
+    // Size-operations:
+    void     clear       ()                           { map.clear(); }
+    int      size        ()                const      { return map.elems(); }
+
+    
+    // Insert/Remove/Test mapping:
+    void     insert      (CRef cr, const T& t){ map.insert(cr, t); }
+    void     growTo      (CRef cr, const T& t){ map.insert(cr, t); } // NOTE: for compatibility
+    void     remove      (CRef cr)            { map.remove(cr); }
+    bool     has         (CRef cr, T& t)      { return map.peek(cr, t); }
+
+    // Vector interface (the clause 'c' must already exist):
+    const T& operator [] (CRef cr) const      { return map[cr]; }
+    T&       operator [] (CRef cr)            { return map[cr]; }
+
+    // Iteration (not transparent at all at the moment):
+    int  bucket_count() const { return map.bucket_count(); }
+    const vec<typename HashTable::Pair>& bucket(int i) const { return map.bucket(i); }
+
+    // Move contents to other map:
+    void moveTo(CMap& other){ map.moveTo(other.map); }
+
+    // TMP debug:
+    void debug(){
+        printf(" --- size = %d, bucket_count = %d\n", size(), map.bucket_count()); }
+};
+
+
+/*_________________________________________________________________________________________________
+|
+|  subsumes : (other : const Clause&)  ->  Lit
+|  
+|  Description:
+|       Checks if clause subsumes 'other', and at the same time, if it can be used to simplify 'other'
+|       by subsumption resolution.
+|  
+|    Result:
+|       lit_Error  - No subsumption or simplification
+|       lit_Undef  - Clause subsumes 'other'
+|       p          - The literal p can be deleted from 'other'
+|________________________________________________________________________________________________@*/
+inline Lit Clause::subsumes(const Clause& other) const
+{
+    //if (other.size() < size() || (extra.abst & ~other.extra.abst) != 0)
+    //if (other.size() < size() || (!learnt() && !other.learnt() && (extra.abst & ~other.extra.abst) != 0))
+    assert(!header.learnt);   assert(!other.header.learnt);
+    assert(header.has_extra); assert(other.header.has_extra);
+    if (other.header.size < header.size || (data[header.size].abs & ~other.data[other.header.size].abs) != 0)
+        return lit_Error;
+
+    Lit        ret = lit_Undef;
+    const Lit* c   = (const Lit*)(*this);
+    const Lit* d   = (const Lit*)other;
+
+    for (unsigned i = 0; i < header.size; i++) {
+        // search for c[i] or ~c[i]
+        for (unsigned j = 0; j < other.header.size; j++)
+            if (c[i] == d[j])
+                goto ok;
+            else if (ret == lit_Undef && c[i] == ~d[j]){
+                ret = c[i];
+                goto ok;
+            }
+
+        // did not find it
+        return lit_Error;
+    ok:;
+    }
+
+    return ret;
+}
+
+inline void Clause::strengthen(Lit p)
+{
+    remove(*this, p);
+    calcAbstraction();
+}
+
+
+
+//=================================================================================================
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
+
+#endif
diff --git a/src/prop/bvminisat/doc/ReleaseNotes-2.2.0.txt b/src/prop/bvminisat/doc/ReleaseNotes-2.2.0.txt
new file mode 100644
index 0000000..7f084de
--- /dev/null
+++ b/src/prop/bvminisat/doc/ReleaseNotes-2.2.0.txt
@@ -0,0 +1,79 @@
+Release Notes for MiniSat 2.2.0
+===============================
+
+Changes since version 2.0:
+
+ * Started using a more standard release numbering.
+
+ * Includes some now well-known heuristics: phase-saving and luby
+   restarts. The old heuristics are still present and can be activated
+   if needed.
+
+ * Detection/Handling of out-of-memory and vector capacity
+   overflow. This is fairly new and relatively untested.
+
+ * Simple resource controls: CPU-time, memory, number of
+   conflicts/decisions.
+
+ * CPU-time limiting is implemented by a more general, but simple,
+   asynchronous interruption feature. This means that the solving
+   procedure can be interrupted from another thread or in a signal
+   handler.
+
+ * Improved portability with respect to building on Solaris and with
+   Visual Studio. This is not regularly tested and chances are that
+   this have been broken since, but should be fairly easy to fix if
+   so.
+
+ * Changed C++ file-extention to the less problematic ".cc".
+
+ * Source code is now namespace-protected
+
+ * Introducing a new Clause Memory Allocator that brings reduced
+   memory consumption on 64-bit architechtures and improved
+   performance (to some extent). The allocator uses a region-based
+   approach were all references to clauses are represented as a 32-bit
+   index into a global memory region that contains all clauses. To
+   free up and compact memory it uses a simple copying garbage
+   collector.
+
+ * Improved unit-propagation by Blocking Literals. For each entry in
+   the watcher lists, pair the pointer to a clause with some
+   (arbitrary) literal from the clause. The idea is that if the
+   literal is currently true (i.e. the clause is satisfied) the
+   watchers of the clause does not need to be altered. This can thus
+   be detected without touching the clause's memory at all. As often
+   as can be done cheaply, the blocking literal for entries to the
+   watcher list of a literal 'p' is set to the other literal watched
+   in the corresponding clause.
+
+ * Basic command-line/option handling system. Makes it easy to specify
+   options in the class that they affect, and whenever that class is
+   used in an executable, parsing of options and help messages are
+   brought in automatically.
+
+ * General clean-up and various minor bug-fixes.
+
+ * Changed implementation of variable-elimination/model-extension:
+    
+     - The interface is changed so that arbitrary remembering is no longer
+       possible. If you need to mention some variable again in the future,
+       this variable has to be frozen.
+    
+     - When eliminating a variable, only clauses that contain the variable
+       with one sign is necessary to store. Thereby making the other sign
+       a "default" value when extending models.
+    
+     - The memory consumption for eliminated clauses is further improved
+       by storing all eliminated clauses in a single contiguous vector.
+
+  * Some common utility code (I/O, Parsing, CPU-time, etc) is ripped
+    out and placed in a separate "utils" directory.
+
+  * The DIMACS parse is refactored so that it can be reused in other
+    applications (not very elegant, but at least possible).
+
+  * Some simple improvements to scalability of preprocessing, using
+    more lazy clause removal from data-structures and a couple of
+    ad-hoc limits (the longest clause that can be produced in variable
+    elimination, and the longest clause used in backward subsumption).
diff --git a/src/prop/bvminisat/mtl/Alg.h b/src/prop/bvminisat/mtl/Alg.h
new file mode 100644
index 0000000..e61dbb4
--- /dev/null
+++ b/src/prop/bvminisat/mtl/Alg.h
@@ -0,0 +1,86 @@
+/*******************************************************************************************[Alg.h]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef BVMinisat_Alg_h
+#define BVMinisat_Alg_h
+
+#include "prop/bvminisat/mtl/Vec.h"
+
+namespace CVC4 {
+namespace BVMinisat {
+
+//=================================================================================================
+// Useful functions on vector-like types:
+
+//=================================================================================================
+// Removing and searching for elements:
+//
+
+template<class V, class T>
+static inline void remove(V& ts, const T& t)
+{
+    int j = 0;
+    for (; j < ts.size() && ts[j] != t; j++);
+    assert(j < ts.size());
+    for (; j < ts.size()-1; j++) ts[j] = ts[j+1];
+    ts.pop();
+}
+
+
+template<class V, class T>
+static inline bool find(V& ts, const T& t)
+{
+    int j = 0;
+    for (; j < ts.size() && ts[j] != t; j++);
+    return j < ts.size();
+}
+
+
+//=================================================================================================
+// Copying vectors with support for nested vector types:
+//
+
+// Base case:
+template<class T>
+static inline void copy(const T& from, T& to)
+{
+    to = from;
+}
+
+// Recursive case:
+template<class T>
+static inline void copy(const vec<T>& from, vec<T>& to, bool append = false)
+{
+    if (!append)
+        to.clear();
+    for (int i = 0; i < from.size(); i++){
+        to.push();
+        copy(from[i], to.last());
+    }
+}
+
+template<class T>
+static inline void append(const vec<T>& from, vec<T>& to){ copy(from, to, true); }
+
+//=================================================================================================
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
+
+#endif
diff --git a/src/prop/bvminisat/mtl/Alloc.h b/src/prop/bvminisat/mtl/Alloc.h
new file mode 100644
index 0000000..4e58ab1
--- /dev/null
+++ b/src/prop/bvminisat/mtl/Alloc.h
@@ -0,0 +1,133 @@
+/*****************************************************************************************[Alloc.h]
+Copyright (c) 2008-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+
+#ifndef BVMinisat_Alloc_h
+#define BVMinisat_Alloc_h
+
+#include "prop/bvminisat/mtl/XAlloc.h"
+#include "prop/bvminisat/mtl/Vec.h"
+
+namespace CVC4 {
+namespace BVMinisat {
+
+//=================================================================================================
+// Simple Region-based memory allocator:
+
+template<class T>
+class RegionAllocator
+{
+    T*        memory;
+    uint32_t  sz;
+    uint32_t  cap;
+    uint32_t  wasted_;
+
+    void capacity(uint32_t min_cap);
+
+ public:
+    // TODO: make this a class for better type-checking?
+    typedef uint32_t Ref;
+    enum { Ref_Undef = UINT32_MAX };
+    enum { Unit_Size = sizeof(uint32_t) };
+
+    explicit RegionAllocator(uint32_t start_cap = 1024*1024) : memory(NULL), sz(0), cap(0), wasted_(0){ capacity(start_cap); }
+    ~RegionAllocator()
+    {
+        if (memory != NULL)
+            ::free(memory);
+    }
+
+
+    uint32_t size      () const      { return sz; }
+    uint32_t wasted    () const      { return wasted_; }
+
+    Ref      alloc     (int size); 
+    void     free      (int size)    { wasted_ += size; }
+
+    // Deref, Load Effective Address (LEA), Inverse of LEA (AEL):
+    T&       operator[](Ref r)       { assert(r >= 0 && r < sz); return memory[r]; }
+    const T& operator[](Ref r) const { assert(r >= 0 && r < sz); return memory[r]; }
+
+    T*       lea       (Ref r)       { assert(r >= 0 && r < sz); return &memory[r]; }
+    const T* lea       (Ref r) const { assert(r >= 0 && r < sz); return &memory[r]; }
+    Ref      ael       (const T* t)  { assert((void*)t >= (void*)&memory[0] && (void*)t < (void*)&memory[sz-1]);
+        return  (Ref)(t - &memory[0]); }
+
+    void     moveTo(RegionAllocator& to) {
+        if (to.memory != NULL) ::free(to.memory);
+        to.memory = memory;
+        to.sz = sz;
+        to.cap = cap;
+        to.wasted_ = wasted_;
+
+        memory = NULL;
+        sz = cap = wasted_ = 0;
+    }
+
+
+};
+
+template<class T>
+void RegionAllocator<T>::capacity(uint32_t min_cap)
+{
+    if (cap >= min_cap) return;
+
+    uint32_t prev_cap = cap;
+    while (cap < min_cap){
+        // NOTE: Multiply by a factor (13/8) without causing overflow, then add 2 and make the
+        // result even by clearing the least significant bit. The resulting sequence of capacities
+        // is carefully chosen to hit a maximum capacity that is close to the '2^32-1' limit when
+        // using 'uint32_t' as indices so that as much as possible of this space can be used.
+        uint32_t delta = ((cap >> 1) + (cap >> 3) + 2) & ~1;
+        cap += delta;
+
+        if (cap <= prev_cap)
+            throw OutOfMemoryException();
+    }
+    // printf(" .. (%p) cap = %u\n", this, cap);
+
+    assert(cap > 0);
+    memory = (T*)xrealloc(memory, sizeof(T)*cap);
+}
+
+
+template<class T>
+typename RegionAllocator<T>::Ref
+RegionAllocator<T>::alloc(int size)
+{ 
+    // printf("ALLOC called (this = %p, size = %d)\n", this, size); fflush(stdout);
+    assert(size > 0);
+    capacity(sz + size);
+
+    uint32_t prev_sz = sz;
+    sz += size;
+    
+    // Handle overflow:
+    if (sz < prev_sz)
+        throw OutOfMemoryException();
+
+    return prev_sz;
+}
+
+
+//=================================================================================================
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
+
+#endif
diff --git a/src/prop/bvminisat/mtl/Heap.h b/src/prop/bvminisat/mtl/Heap.h
new file mode 100644
index 0000000..2d7ee01
--- /dev/null
+++ b/src/prop/bvminisat/mtl/Heap.h
@@ -0,0 +1,151 @@
+/******************************************************************************************[Heap.h]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef BVMinisat_Heap_h
+#define BVMinisat_Heap_h
+
+#include "prop/bvminisat/mtl/Vec.h"
+
+namespace CVC4 {
+namespace BVMinisat {
+
+//=================================================================================================
+// A heap implementation with support for decrease/increase key.
+
+
+template<class Comp>
+class Heap {
+    Comp     lt;       // The heap is a minimum-heap with respect to this comparator
+    vec<int> heap;     // Heap of integers
+    vec<int> indices;  // Each integers position (index) in the Heap
+
+    // Index "traversal" functions
+    static inline int left  (int i) { return i*2+1; }
+    static inline int right (int i) { return (i+1)*2; }
+    static inline int parent(int i) { return (i-1) >> 1; }
+
+
+    void percolateUp(int i)
+    {
+        int x  = heap[i];
+        int p  = parent(i);
+        
+        while (i != 0 && lt(x, heap[p])){
+            heap[i]          = heap[p];
+            indices[heap[p]] = i;
+            i                = p;
+            p                = parent(p);
+        }
+        heap   [i] = x;
+        indices[x] = i;
+    }
+
+
+    void percolateDown(int i)
+    {
+        int x = heap[i];
+        while (left(i) < heap.size()){
+            int child = right(i) < heap.size() && lt(heap[right(i)], heap[left(i)]) ? right(i) : left(i);
+            if (!lt(heap[child], x)) break;
+            heap[i]          = heap[child];
+            indices[heap[i]] = i;
+            i                = child;
+        }
+        heap   [i] = x;
+        indices[x] = i;
+    }
+
+
+  public:
+    Heap(const Comp& c) : lt(c) { }
+
+    int  size      ()          const { return heap.size(); }
+    bool empty     ()          const { return heap.size() == 0; }
+    bool inHeap    (int n)     const { return n < indices.size() && indices[n] >= 0; }
+    int  operator[](int index) const { assert(index < heap.size()); return heap[index]; }
+
+
+    void decrease  (int n) { assert(inHeap(n)); percolateUp  (indices[n]); }
+    void increase  (int n) { assert(inHeap(n)); percolateDown(indices[n]); }
+
+
+    // Safe variant of insert/decrease/increase:
+    void update(int n)
+    {
+        if (!inHeap(n))
+            insert(n);
+        else {
+            percolateUp(indices[n]);
+            percolateDown(indices[n]); }
+    }
+
+
+    void insert(int n)
+    {
+        indices.growTo(n+1, -1);
+        assert(!inHeap(n));
+
+        indices[n] = heap.size();
+        heap.push(n);
+        percolateUp(indices[n]); 
+    }
+
+
+    int  removeMin()
+    {
+        int x            = heap[0];
+        heap[0]          = heap.last();
+        indices[heap[0]] = 0;
+        indices[x]       = -1;
+        heap.pop();
+        if (heap.size() > 1) percolateDown(0);
+        return x; 
+    }
+
+
+    // Rebuild the heap from scratch, using the elements in 'ns':
+    void build(vec<int>& ns) {
+        for (int i = 0; i < heap.size(); i++)
+            indices[heap[i]] = -1;
+        heap.clear();
+
+        for (int i = 0; i < ns.size(); i++){
+            indices[ns[i]] = i;
+            heap.push(ns[i]); }
+
+        for (int i = heap.size() / 2 - 1; i >= 0; i--)
+            percolateDown(i);
+    }
+
+    void clear(bool dealloc = false) 
+    { 
+        for (int i = 0; i < heap.size(); i++)
+            indices[heap[i]] = -1;
+        heap.clear(dealloc); 
+    }
+};
+
+
+//=================================================================================================
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
+
+
+#endif
diff --git a/src/prop/bvminisat/mtl/IntTypes.h b/src/prop/bvminisat/mtl/IntTypes.h
new file mode 100644
index 0000000..19ca38b
--- /dev/null
+++ b/src/prop/bvminisat/mtl/IntTypes.h
@@ -0,0 +1,42 @@
+/**************************************************************************************[IntTypes.h]
+Copyright (c) 2009-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef BVMinisat_IntTypes_h
+#define BVMinisat_IntTypes_h
+
+#ifdef __sun
+    // Not sure if there are newer versions that support C99 headers. The
+    // needed features are implemented in the headers below though:
+
+#   include <sys/int_types.h>
+#   include <sys/int_fmtio.h>
+#   include <sys/int_limits.h>
+
+#else
+
+#   include <stdint.h>
+#   include <inttypes.h>
+
+#endif
+
+#include <limits.h>
+
+//=================================================================================================
+
+#endif
diff --git a/src/prop/bvminisat/mtl/Map.h b/src/prop/bvminisat/mtl/Map.h
new file mode 100644
index 0000000..ee68a21
--- /dev/null
+++ b/src/prop/bvminisat/mtl/Map.h
@@ -0,0 +1,196 @@
+/*******************************************************************************************[Map.h]
+Copyright (c) 2006-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef BVMinisat_Map_h
+#define BVMinisat_Map_h
+
+#include "prop/bvminisat/mtl/IntTypes.h"
+#include "prop/bvminisat/mtl/Vec.h"
+
+namespace CVC4 {
+namespace BVMinisat {
+
+//=================================================================================================
+// Default hash/equals functions
+//
+
+static inline uint32_t hash(uint32_t x){ return x; }
+static inline uint32_t hash(uint64_t x){ return (uint32_t)x; }
+static inline uint32_t hash(int32_t x) { return (uint32_t)x; }
+static inline uint32_t hash(int64_t x) { return (uint32_t)x; }
+
+template<class K> struct Hash  { uint32_t operator()(const K& k)               const { return hash(k);  } };
+template<class K> struct Equal { bool     operator()(const K& k1, const K& k2) const { return k1 == k2; } };
+
+template<class K> struct DeepHash  { uint32_t operator()(const K* k)               const { return hash(*k);  } };
+template<class K> struct DeepEqual { bool     operator()(const K* k1, const K* k2) const { return *k1 == *k2; } };
+
+
+
+//=================================================================================================
+// Some primes
+//
+
+static const int nprimes          = 25;
+static const int primes [nprimes] = { 31, 73, 151, 313, 643, 1291, 2593, 5233, 10501, 21013, 42073, 84181, 168451, 337219, 674701, 1349473, 2699299, 5398891, 10798093, 21596719, 43193641, 86387383, 172775299, 345550609, 691101253 };
+
+//=================================================================================================
+// Hash table implementation of Maps
+//
+
+template<class K, class D, class H = Hash<K>, class E = Equal<K> >
+class Map {
+ public:
+    struct Pair { K key; D data; };
+
+ private:
+    H          hash;
+    E          equals;
+
+    vec<Pair>* table;
+    int        cap;
+    int        size;
+
+    // Don't allow copying (error prone):
+    Map<K,D,H,E>&  operator = (Map<K,D,H,E>& other) { assert(0); }
+                   Map        (Map<K,D,H,E>& other) { assert(0); }
+
+    bool    checkCap(int new_size) const { return new_size > cap; }
+
+    int32_t index  (const K& k) const { return hash(k) % cap; }
+    void   _insert (const K& k, const D& d) { 
+        vec<Pair>& ps = table[index(k)];
+        ps.push(); ps.last().key = k; ps.last().data = d; }
+
+    void    rehash () {
+        const vec<Pair>* old = table;
+
+        int old_cap = cap;
+        int newsize = primes[0];
+        for (int i = 1; newsize <= cap && i < nprimes; i++)
+           newsize = primes[i];
+
+        table = new vec<Pair>[newsize];
+        cap   = newsize;
+
+        for (int i = 0; i < old_cap; i++){
+            for (int j = 0; j < old[i].size(); j++){
+                _insert(old[i][j].key, old[i][j].data); }}
+
+        delete [] old;
+
+        // printf(" --- rehashing, old-cap=%d, new-cap=%d\n", cap, newsize);
+    }
+
+    
+ public:
+
+    Map () : table(NULL), cap(0), size(0) {}
+    Map (const H& h, const E& e) : hash(h), equals(e), table(NULL), cap(0), size(0){}
+    ~Map () { delete [] table; }
+
+    // PRECONDITION: the key must already exist in the map.
+    const D& operator [] (const K& k) const
+    {
+        assert(size != 0);
+        const D*         res = NULL;
+        const vec<Pair>& ps  = table[index(k)];
+        for (int i = 0; i < ps.size(); i++)
+            if (equals(ps[i].key, k))
+                res = &ps[i].data;
+        assert(res != NULL);
+        return *res;
+    }
+
+    // PRECONDITION: the key must already exist in the map.
+    D& operator [] (const K& k)
+    {
+        assert(size != 0);
+        D*         res = NULL;
+        vec<Pair>& ps  = table[index(k)];
+        for (int i = 0; i < ps.size(); i++)
+            if (equals(ps[i].key, k))
+                res = &ps[i].data;
+        assert(res != NULL);
+        return *res;
+    }
+
+    // PRECONDITION: the key must *NOT* exist in the map.
+    void insert (const K& k, const D& d) { if (checkCap(size+1)) rehash(); _insert(k, d); size++; }
+    bool peek   (const K& k, D& d) const {
+        if (size == 0) return false;
+        const vec<Pair>& ps = table[index(k)];
+        for (int i = 0; i < ps.size(); i++)
+            if (equals(ps[i].key, k)){
+                d = ps[i].data;
+                return true; } 
+        return false;
+    }
+
+    bool has   (const K& k) const {
+        if (size == 0) return false;
+        const vec<Pair>& ps = table[index(k)];
+        for (int i = 0; i < ps.size(); i++)
+            if (equals(ps[i].key, k))
+                return true;
+        return false;
+    }
+
+    // PRECONDITION: the key must exist in the map.
+    void remove(const K& k) {
+        assert(table != NULL);
+        vec<Pair>& ps = table[index(k)];
+        int j = 0;
+        for (; j < ps.size() && !equals(ps[j].key, k); j++);
+        assert(j < ps.size());
+        ps[j] = ps.last();
+        ps.pop();
+        size--;
+    }
+
+    void clear  () {
+        cap = size = 0;
+        delete [] table;
+        table = NULL;
+    }
+
+    int  elems() const { return size; }
+    int  bucket_count() const { return cap; }
+
+    // NOTE: the hash and equality objects are not moved by this method:
+    void moveTo(Map& other){
+        delete [] other.table;
+
+        other.table = table;
+        other.cap   = cap;
+        other.size  = size;
+
+        table = NULL;
+        size = cap = 0;
+    }
+
+    // NOTE: given a bit more time, I could make a more C++-style iterator out of this:
+    const vec<Pair>& bucket(int i) const { return table[i]; }
+};
+
+//=================================================================================================
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
+
+#endif
diff --git a/src/prop/bvminisat/mtl/Queue.h b/src/prop/bvminisat/mtl/Queue.h
new file mode 100644
index 0000000..c40f232
--- /dev/null
+++ b/src/prop/bvminisat/mtl/Queue.h
@@ -0,0 +1,71 @@
+/*****************************************************************************************[Queue.h]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef BVMinisat_Queue_h
+#define BVMinisat_Queue_h
+
+#include "prop/bvminisat/mtl/Vec.h"
+
+namespace CVC4 {
+namespace BVMinisat {
+
+//=================================================================================================
+
+template<class T>
+class Queue {
+    vec<T>  buf;
+    int     first;
+    int     end;
+
+public:
+    typedef T Key;
+
+    Queue() : buf(1), first(0), end(0) {}
+
+    void clear (bool dealloc = false) { buf.clear(dealloc); buf.growTo(1); first = end = 0; }
+    int  size  () const { return (end >= first) ? end - first : end - first + buf.size(); }
+
+    const T& operator [] (int index) const  { assert(index >= 0); assert(index < size()); return buf[(first + index) % buf.size()]; }
+    T&       operator [] (int index)        { assert(index >= 0); assert(index < size()); return buf[(first + index) % buf.size()]; }
+
+    T    peek  () const { assert(first != end); return buf[first]; }
+    void pop   () { assert(first != end); first++; if (first == buf.size()) first = 0; }
+    void insert(T elem) {   // INVARIANT: buf[end] is always unused
+        buf[end++] = elem;
+        if (end == buf.size()) end = 0;
+        if (first == end){  // Resize:
+            vec<T>  tmp((buf.size()*3 + 1) >> 1);
+            //**/printf("queue alloc: %d elems (%.1f MB)\n", tmp.size(), tmp.size() * sizeof(T) / 1000000.0);
+            int     i = 0;
+            for (int j = first; j < buf.size(); j++) tmp[i++] = buf[j];
+            for (int j = 0    ; j < end       ; j++) tmp[i++] = buf[j];
+            first = 0;
+            end   = buf.size();
+            tmp.moveTo(buf);
+        }
+    }
+};
+
+
+//=================================================================================================
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
+
+#endif
diff --git a/src/prop/bvminisat/mtl/Sort.h b/src/prop/bvminisat/mtl/Sort.h
new file mode 100644
index 0000000..f668aa8
--- /dev/null
+++ b/src/prop/bvminisat/mtl/Sort.h
@@ -0,0 +1,100 @@
+/******************************************************************************************[Sort.h]
+Copyright (c) 2003-2007, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef BVMinisat_Sort_h
+#define BVMinisat_Sort_h
+
+#include "mtl/Vec.h"
+
+//=================================================================================================
+// Some sorting algorithms for vec's
+
+
+namespace CVC4 {
+namespace BVMinisat {
+
+template<class T>
+struct LessThan_default {
+    bool operator () (T x, T y) { return x < y; }
+};
+
+
+template <class T, class LessThan>
+void selectionSort(T* array, int size, LessThan lt)
+{
+    int     i, j, best_i;
+    T       tmp;
+
+    for (i = 0; i < size-1; i++){
+        best_i = i;
+        for (j = i+1; j < size; j++){
+            if (lt(array[j], array[best_i]))
+                best_i = j;
+        }
+        tmp = array[i]; array[i] = array[best_i]; array[best_i] = tmp;
+    }
+}
+template <class T> static inline void selectionSort(T* array, int size) {
+    selectionSort(array, size, LessThan_default<T>()); }
+
+template <class T, class LessThan>
+void sort(T* array, int size, LessThan lt)
+{
+    if (size <= 15)
+        selectionSort(array, size, lt);
+
+    else{
+        T           pivot = array[size / 2];
+        T           tmp;
+        int         i = -1;
+        int         j = size;
+
+        for(;;){
+            do i++; while(lt(array[i], pivot));
+            do j--; while(lt(pivot, array[j]));
+
+            if (i >= j) break;
+
+            tmp = array[i]; array[i] = array[j]; array[j] = tmp;
+        }
+
+        sort(array    , i     , lt);
+        sort(&array[i], size-i, lt);
+    }
+}
+template <class T> static inline void sort(T* array, int size) {
+    sort(array, size, LessThan_default<T>()); }
+
+
+//=================================================================================================
+// For 'vec's:
+
+
+template <class T, class LessThan> void sort(vec<T>& v, LessThan lt) {
+    sort((T*)v, v.size(), lt); }
+template <class T> void sort(vec<T>& v) {
+    sort(v, LessThan_default<T>()); }
+
+
+//=================================================================================================
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
+
+#endif
diff --git a/src/prop/bvminisat/mtl/Vec.h b/src/prop/bvminisat/mtl/Vec.h
new file mode 100644
index 0000000..8ee2a82
--- /dev/null
+++ b/src/prop/bvminisat/mtl/Vec.h
@@ -0,0 +1,132 @@
+/*******************************************************************************************[Vec.h]
+Copyright (c) 2003-2007, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef BVMinisat_Vec_h
+#define BVMinisat_Vec_h
+
+#include <assert.h>
+#include <new>
+
+#include "prop/bvminisat/mtl/IntTypes.h"
+#include "prop/bvminisat/mtl/XAlloc.h"
+
+namespace CVC4 {
+namespace BVMinisat {
+
+//=================================================================================================
+// Automatically resizable arrays
+//
+// NOTE! Don't use this vector on datatypes that cannot be re-located in memory (with realloc)
+
+template<class T>
+class vec {
+    T*  data;
+    int sz;
+    int cap;
+
+    // Don't allow copying (error prone):
+    vec<T>&  operator = (vec<T>& other) { assert(0); return *this; }
+             vec        (vec<T>& other) { assert(0); }
+             
+    // Helpers for calculating next capacity:
+    static inline int  imax   (int x, int y) { int mask = (y-x) >> (sizeof(int)*8-1); return (x&mask) + (y&(~mask)); }
+    //static inline void nextCap(int& cap){ cap += ((cap >> 1) + 2) & ~1; }
+    static inline void nextCap(int& cap){ cap += ((cap >> 1) + 2) & ~1; }
+
+public:
+    // Constructors:
+    vec()                       : data(NULL) , sz(0)   , cap(0)    { }
+    explicit vec(int size)      : data(NULL) , sz(0)   , cap(0)    { growTo(size); }
+    vec(int size, const T& pad) : data(NULL) , sz(0)   , cap(0)    { growTo(size, pad); }
+   ~vec()                                                          { clear(true); }
+
+    // Pointer to first element:
+    operator T*       (void)           { return data; }
+
+    // Size operations:
+    int      size     (void) const     { return sz; }
+    void     shrink   (int nelems)     { assert(nelems <= sz); for (int i = 0; i < nelems; i++) sz--, data[sz].~T(); }
+    void     shrink_  (int nelems)     { assert(nelems <= sz); sz -= nelems; }
+    int      capacity (void) const     { return cap; }
+    void     capacity (int min_cap);
+    void     growTo   (int size);
+    void     growTo   (int size, const T& pad);
+    void     clear    (bool dealloc = false);
+
+    // Stack interface:
+    void     push  (void)              { if (sz == cap) capacity(sz+1); new (&data[sz]) T(); sz++; }
+    void     push  (const T& elem)     { if (sz == cap) capacity(sz+1); data[sz++] = elem; }
+    void     push_ (const T& elem)     { assert(sz < cap); data[sz++] = elem; }
+    void     pop   (void)              { assert(sz > 0); sz--, data[sz].~T(); }
+    // NOTE: it seems possible that overflow can happen in the 'sz+1' expression of 'push()', but
+    // in fact it can not since it requires that 'cap' is equal to INT_MAX. This in turn can not
+    // happen given the way capacities are calculated (below). Essentially, all capacities are
+    // even, but INT_MAX is odd.
+
+    const T& last  (void) const        { return data[sz-1]; }
+    T&       last  (void)              { return data[sz-1]; }
+
+    // Vector interface:
+    const T& operator [] (int index) const { return data[index]; }
+    T&       operator [] (int index)       { return data[index]; }
+
+    // Duplicatation (preferred instead):
+    void copyTo(vec<T>& copy) const { copy.clear(); copy.growTo(sz); for (int i = 0; i < sz; i++) copy[i] = data[i]; }
+    void moveTo(vec<T>& dest) { dest.clear(true); dest.data = data; dest.sz = sz; dest.cap = cap; data = NULL; sz = 0; cap = 0; }
+};
+
+
+template<class T>
+void vec<T>::capacity(int min_cap) {
+    if (cap >= min_cap) return;
+    int add = imax((min_cap - cap + 1) & ~1, ((cap >> 1) + 2) & ~1);   // NOTE: grow by approximately 3/2
+    if (add > INT_MAX - cap || (((data = (T*)::realloc(data, (cap += add) * sizeof(T))) == NULL) && errno == ENOMEM))
+        throw OutOfMemoryException();
+ }
+
+
+template<class T>
+void vec<T>::growTo(int size, const T& pad) {
+    if (sz >= size) return;
+    capacity(size);
+    for (int i = sz; i < size; i++) data[i] = pad;
+    sz = size; }
+
+
+template<class T>
+void vec<T>::growTo(int size) {
+    if (sz >= size) return;
+    capacity(size);
+    for (int i = sz; i < size; i++) new (&data[i]) T();
+    sz = size; }
+
+
+template<class T>
+void vec<T>::clear(bool dealloc) {
+    if (data != NULL){
+        for (int i = 0; i < sz; i++) data[i].~T();
+        sz = 0;
+        if (dealloc) free(data), data = NULL, cap = 0; } }
+
+//=================================================================================================
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
+
+#endif
diff --git a/src/prop/bvminisat/mtl/XAlloc.h b/src/prop/bvminisat/mtl/XAlloc.h
new file mode 100644
index 0000000..9e469a6
--- /dev/null
+++ b/src/prop/bvminisat/mtl/XAlloc.h
@@ -0,0 +1,48 @@
+/****************************************************************************************[XAlloc.h]
+Copyright (c) 2009-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+
+#ifndef BVMinisat_XAlloc_h
+#define BVMinisat_XAlloc_h
+
+#include <errno.h>
+#include <stdlib.h>
+
+namespace CVC4 {
+namespace BVMinisat {
+
+//=================================================================================================
+// Simple layer on top of malloc/realloc to catch out-of-memory situtaions and provide some typing:
+
+class OutOfMemoryException{};
+static inline void* xrealloc(void *ptr, size_t size)
+{
+    void* mem = realloc(ptr, size);
+    if (mem == NULL && errno == ENOMEM){
+        throw OutOfMemoryException();
+    }else
+        return mem;
+}
+
+//=================================================================================================
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
+
+
+#endif
diff --git a/src/prop/bvminisat/mtl/config.mk b/src/prop/bvminisat/mtl/config.mk
new file mode 100644
index 0000000..b5c36fc
--- /dev/null
+++ b/src/prop/bvminisat/mtl/config.mk
@@ -0,0 +1,6 @@
+##
+##  This file is for system specific configurations. For instance, on
+##  some systems the path to zlib needs to be added. Example:
+##
+##  CFLAGS += -I/usr/local/include
+##  LFLAGS += -L/usr/local/lib
diff --git a/src/prop/bvminisat/mtl/template.mk b/src/prop/bvminisat/mtl/template.mk
new file mode 100644
index 0000000..3f443fc
--- /dev/null
+++ b/src/prop/bvminisat/mtl/template.mk
@@ -0,0 +1,107 @@
+##
+##  Template makefile for Standard, Profile, Debug, Release, and Release-static versions
+##
+##    eg: "make rs" for a statically linked release version.
+##        "make d"  for a debug version (no optimizations).
+##        "make"    for the standard version (optimized, but with debug information and assertions active)
+
+PWD        = $(shell pwd)
+EXEC      ?= $(notdir $(PWD))
+
+CSRCS      = $(wildcard $(PWD)/*.cc) 
+DSRCS      = $(foreach dir, $(DEPDIR), $(filter-out $(MROOT)/$(dir)/Main.cc, $(wildcard $(MROOT)/$(dir)/*.cc)))
+CHDRS      = $(wildcard $(PWD)/*.h)
+COBJS      = $(CSRCS:.cc=.o) $(DSRCS:.cc=.o)
+
+PCOBJS     = $(addsuffix p,  $(COBJS))
+DCOBJS     = $(addsuffix d,  $(COBJS))
+RCOBJS     = $(addsuffix r,  $(COBJS))
+
+
+CXX       ?= g++
+CFLAGS    ?= -Wall -Wno-parentheses
+LFLAGS    ?= -Wall
+
+COPTIMIZE ?= -O3
+
+CFLAGS    += -I$(MROOT) -D __STDC_LIMIT_MACROS -D __STDC_FORMAT_MACROS
+LFLAGS    += -lz
+
+.PHONY : s p d r rs clean 
+
+s:	$(EXEC)
+p:	$(EXEC)_profile
+d:	$(EXEC)_debug
+r:	$(EXEC)_release
+rs:	$(EXEC)_static
+
+libs:	lib$(LIB)_standard.a
+libp:	lib$(LIB)_profile.a
+libd:	lib$(LIB)_debug.a
+libr:	lib$(LIB)_release.a
+
+## Compile options
+%.o:			CFLAGS +=$(COPTIMIZE) -g -D DEBUG
+%.op:			CFLAGS +=$(COPTIMIZE) -pg -g -D NDEBUG
+%.od:			CFLAGS +=-O0 -g -D DEBUG
+%.or:			CFLAGS +=$(COPTIMIZE) -g -D NDEBUG
+
+## Link options
+$(EXEC):		LFLAGS += -g
+$(EXEC)_profile:	LFLAGS += -g -pg
+$(EXEC)_debug:		LFLAGS += -g
+#$(EXEC)_release:	LFLAGS += ...
+$(EXEC)_static:		LFLAGS += --static
+
+## Dependencies
+$(EXEC):		$(COBJS)
+$(EXEC)_profile:	$(PCOBJS)
+$(EXEC)_debug:		$(DCOBJS)
+$(EXEC)_release:	$(RCOBJS)
+$(EXEC)_static:		$(RCOBJS)
+
+lib$(LIB)_standard.a:	$(filter-out */Main.o,  $(COBJS))
+lib$(LIB)_profile.a:	$(filter-out */Main.op, $(PCOBJS))
+lib$(LIB)_debug.a:	$(filter-out */Main.od, $(DCOBJS))
+lib$(LIB)_release.a:	$(filter-out */Main.or, $(RCOBJS))
+
+
+## Build rule
+%.o %.op %.od %.or:	%.cc
+	@echo Compiling: $(subst $(MROOT)/,,$@)
+	@$(CXX) $(CFLAGS) -c -o $@ $<
+
+## Linking rules (standard/profile/debug/release)
+$(EXEC) $(EXEC)_profile $(EXEC)_debug $(EXEC)_release $(EXEC)_static:
+	@echo Linking: "$@ ( $(foreach f,$^,$(subst $(MROOT)/,,$f)) )"
+	@$(CXX) $^ $(LFLAGS) -o $@
+
+## Library rules (standard/profile/debug/release)
+lib$(LIB)_standard.a lib$(LIB)_profile.a lib$(LIB)_release.a lib$(LIB)_debug.a:
+	@echo Making library: "$@ ( $(foreach f,$^,$(subst $(MROOT)/,,$f)) )"
+	@$(AR) -rcsv $@ $^
+
+## Library Soft Link rule:
+libs libp libd libr:
+	@echo "Making Soft Link: $^ -> lib$(LIB).a"
+	@ln -sf $^ lib$(LIB).a
+
+## Clean rule
+clean:
+	@rm -f $(EXEC) $(EXEC)_profile $(EXEC)_debug $(EXEC)_release $(EXEC)_static \
+	  $(COBJS) $(PCOBJS) $(DCOBJS) $(RCOBJS) *.core depend.mk 
+
+## Make dependencies
+depend.mk: $(CSRCS) $(CHDRS)
+	@echo Making dependencies
+	@$(CXX) $(CFLAGS) -I$(MROOT) \
+	   $(CSRCS) -MM | sed 's|\(.*\):|$(PWD)/\1 $(PWD)/\1r $(PWD)/\1d $(PWD)/\1p:|' > depend.mk
+	@for dir in $(DEPDIR); do \
+	      if [ -r $(MROOT)/$${dir}/depend.mk ]; then \
+		  echo Depends on: $${dir}; \
+		  cat $(MROOT)/$${dir}/depend.mk >> depend.mk; \
+	      fi; \
+	  done
+
+-include $(MROOT)/mtl/config.mk
+-include depend.mk
diff --git a/src/prop/bvminisat/simp/Main.cc b/src/prop/bvminisat/simp/Main.cc
new file mode 100644
index 0000000..96e318e
--- /dev/null
+++ b/src/prop/bvminisat/simp/Main.cc
@@ -0,0 +1,218 @@
+/*****************************************************************************************[Main.cc]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007,      Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#include <errno.h>
+
+#include <signal.h>
+#include <zlib.h>
+#include <sys/resource.h>
+
+#include "utils/System.h"
+#include "utils/ParseUtils.h"
+#include "utils/Options.h"
+#include "core/Dimacs.h"
+#include "simp/SimpSolver.h"
+
+
+//=================================================================================================
+
+
+namespace CVC4 {
+namespace BVMinisat {
+
+void printStats(Solver& solver)
+{
+    double cpu_time = cpuTime();
+    double mem_used = memUsedPeak();
+    printf("restarts              : %"PRIu64"\n", solver.starts);
+    printf("conflicts             : %-12"PRIu64"   (%.0f /sec)\n", solver.conflicts   , solver.conflicts   /cpu_time);
+    printf("decisions             : %-12"PRIu64"   (%4.2f %% random) (%.0f /sec)\n", solver.decisions, (float)solver.rnd_decisions*100 / (float)solver.decisions, solver.decisions   /cpu_time);
+    printf("propagations          : %-12"PRIu64"   (%.0f /sec)\n", solver.propagations, solver.propagations/cpu_time);
+    printf("conflict literals     : %-12"PRIu64"   (%4.2f %% deleted)\n", solver.tot_literals, (solver.max_literals - solver.tot_literals)*100 / (double)solver.max_literals);
+    if (mem_used != 0) printf("Memory used           : %.2f MB\n", mem_used);
+    printf("CPU time              : %g s\n", cpu_time);
+}
+
+
+static Solver* solver;
+// Terminate by notifying the solver and back out gracefully. This is mainly to have a test-case
+// for this feature of the Solver as it may take longer than an immediate call to '_exit()'.
+static void SIGINT_interrupt(int signum) { solver->interrupt(); }
+
+// Note that '_exit()' rather than 'exit()' has to be used. The reason is that 'exit()' calls
+// destructors and may cause deadlocks if a malloc/free function happens to be running (these
+// functions are guarded by locks for multithreaded use).
+static void SIGINT_exit(int signum) {
+    printf("\n"); printf("*** INTERRUPTED ***\n");
+    if (solver->verbosity > 0){
+        printStats(*solver);
+        printf("\n"); printf("*** INTERRUPTED ***\n"); }
+    _exit(1); }
+
+
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
+
+//=================================================================================================
+// Main:
+
+int main(int argc, char** argv)
+{
+  using namespace CVC4;
+  using namespace CVC4::BVMinisat;
+    try {
+        setUsageHelp("USAGE: %s [options] <input-file> <result-output-file>\n\n  where input may be either in plain or gzipped DIMACS.\n");
+        // printf("This is MiniSat 2.0 beta\n");
+        
+#if defined(__linux__)
+        fpu_control_t oldcw, newcw;
+        _FPU_GETCW(oldcw); newcw = (oldcw & ~_FPU_EXTENDED) | _FPU_DOUBLE; _FPU_SETCW(newcw);
+        printf("WARNING: for repeatability, setting FPU to use double precision\n");
+#endif
+        // Extra options:
+        //
+        IntOption    verb   ("MAIN", "verb",   "Verbosity level (0=silent, 1=some, 2=more).", 1, IntRange(0, 2));
+        BoolOption   pre    ("MAIN", "pre",    "Completely turn on/off any preprocessing.", true);
+        StringOption dimacs ("MAIN", "dimacs", "If given, stop after preprocessing and write the result to this file.");
+        IntOption    cpu_lim("MAIN", "cpu-lim","Limit on CPU time allowed in seconds.\n", INT32_MAX, IntRange(0, INT32_MAX));
+        IntOption    mem_lim("MAIN", "mem-lim","Limit on memory usage in megabytes.\n", INT32_MAX, IntRange(0, INT32_MAX));
+
+        parseOptions(argc, argv, true);
+        
+        SimpSolver  S;
+        double      initial_time = cpuTime();
+
+        if (!pre) S.eliminate(true);
+
+        S.verbosity = verb;
+        
+        solver = &S;
+        // Use signal handlers that forcibly quit until the solver will be able to respond to
+        // interrupts:
+        signal(SIGINT, SIGINT_exit);
+        signal(SIGXCPU,SIGINT_exit);
+
+        // Set limit on CPU-time:
+        if (cpu_lim != INT32_MAX){
+            rlimit rl;
+            getrlimit(RLIMIT_CPU, &rl);
+            if (rl.rlim_max == RLIM_INFINITY || (rlim_t)cpu_lim < rl.rlim_max){
+                rl.rlim_cur = cpu_lim;
+                if (setrlimit(RLIMIT_CPU, &rl) == -1)
+                    printf("WARNING! Could not set resource limit: CPU-time.\n");
+            } }
+
+        // Set limit on virtual memory:
+        if (mem_lim != INT32_MAX){
+            rlim_t new_mem_lim = (rlim_t)mem_lim * 1024*1024;
+            rlimit rl;
+            getrlimit(RLIMIT_AS, &rl);
+            if (rl.rlim_max == RLIM_INFINITY || new_mem_lim < rl.rlim_max){
+                rl.rlim_cur = new_mem_lim;
+                if (setrlimit(RLIMIT_AS, &rl) == -1)
+                    printf("WARNING! Could not set resource limit: Virtual memory.\n");
+            } }
+        
+        if (argc == 1)
+            printf("Reading from standard input... Use '--help' for help.\n");
+
+        gzFile in = (argc == 1) ? gzdopen(0, "rb") : gzopen(argv[1], "rb");
+        if (in == NULL)
+            printf("ERROR! Could not open file: %s\n", argc == 1 ? "<stdin>" : argv[1]), exit(1);
+        
+        if (S.verbosity > 0){
+            printf("============================[ Problem Statistics ]=============================\n");
+            printf("|                                                                             |\n"); }
+        
+        parse_DIMACS(in, S);
+        gzclose(in);
+        FILE* res = (argc >= 3) ? fopen(argv[2], "wb") : NULL;
+
+        if (S.verbosity > 0){
+            printf("|  Number of variables:  %12d                                         |\n", S.nVars());
+            printf("|  Number of clauses:    %12d                                         |\n", S.nClauses()); }
+        
+        double parsed_time = cpuTime();
+        if (S.verbosity > 0)
+            printf("|  Parse time:           %12.2f s                                       |\n", parsed_time - initial_time);
+
+        // Change to signal-handlers that will only notify the solver and allow it to terminate
+        // voluntarily:
+        signal(SIGINT, SIGINT_interrupt);
+        signal(SIGXCPU,SIGINT_interrupt);
+
+        S.eliminate(true);
+        double simplified_time = cpuTime();
+        if (S.verbosity > 0){
+            printf("|  Simplification time:  %12.2f s                                       |\n", simplified_time - parsed_time);
+            printf("|                                                                             |\n"); }
+
+        if (!S.okay()){
+            if (res != NULL) fprintf(res, "UNSAT\n"), fclose(res);
+            if (S.verbosity > 0){
+                printf("===============================================================================\n");
+                printf("Solved by simplification\n");
+                printStats(S);
+                printf("\n"); }
+            printf("UNSATISFIABLE\n");
+            exit(20);
+        }
+
+        if (dimacs){
+            if (S.verbosity > 0)
+                printf("==============================[ Writing DIMACS ]===============================\n");
+            S.toDimacs((const char*)dimacs);
+            if (S.verbosity > 0)
+                printStats(S);
+            exit(0);
+        }
+
+        vec<Lit> dummy;
+        lbool ret = S.solveLimited(dummy);
+        
+        if (S.verbosity > 0){
+            printStats(S);
+            printf("\n"); }
+        printf(ret == l_True ? "SATISFIABLE\n" : ret == l_False ? "UNSATISFIABLE\n" : "INDETERMINATE\n");
+        if (res != NULL){
+            if (ret == l_True){
+                fprintf(res, "SAT\n");
+                for (int i = 0; i < S.nVars(); i++)
+                    if (S.model[i] != l_Undef)
+                        fprintf(res, "%s%s%d", (i==0)?"":" ", (S.model[i]==l_True)?"":"-", i+1);
+                fprintf(res, " 0\n");
+            }else if (ret == l_False)
+                fprintf(res, "UNSAT\n");
+            else
+                fprintf(res, "INDET\n");
+            fclose(res);
+        }
+
+#ifdef NDEBUG
+        exit(ret == l_True ? 10 : ret == l_False ? 20 : 0);     // (faster than "return", which will invoke the destructor for 'Solver')
+#else
+        return (ret == l_True ? 10 : ret == l_False ? 20 : 0);
+#endif
+    } catch (OutOfMemoryException&){
+        printf("===============================================================================\n");
+        printf("INDETERMINATE\n");
+        exit(0);
+    }
+}
diff --git a/src/prop/bvminisat/simp/Makefile b/src/prop/bvminisat/simp/Makefile
new file mode 100644
index 0000000..27b45f4
--- /dev/null
+++ b/src/prop/bvminisat/simp/Makefile
@@ -0,0 +1,4 @@
+EXEC      = minisat
+DEPDIR    = mtl utils core
+
+include $(MROOT)/mtl/template.mk
diff --git a/src/prop/bvminisat/simp/SimpSolver.cc b/src/prop/bvminisat/simp/SimpSolver.cc
new file mode 100644
index 0000000..cb59293
--- /dev/null
+++ b/src/prop/bvminisat/simp/SimpSolver.cc
@@ -0,0 +1,762 @@
+/***********************************************************************************[SimpSolver.cc]
+Copyright (c) 2006,      Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#include "simp/SimpSolver.h"
+
+#include "mtl/Sort.h"
+#include "options/bv_options.h"
+#include "options/smt_options.h"
+#include "proof/clause_id.h"
+#include "proof/proof.h"
+#include "utils/System.h"
+
+namespace CVC4 {
+namespace BVMinisat {
+
+//=================================================================================================
+// Options:
+
+
+static const char* _cat = "SIMP";
+
+static BoolOption   opt_use_asymm        (_cat, "asymm",        "Shrink clauses by asymmetric branching.", false);
+static BoolOption   opt_use_rcheck       (_cat, "rcheck",       "Check if a clause is already implied. (costly)", false);
+static BoolOption   opt_use_elim         (_cat, "elim",         "Perform variable elimination.", true);
+static IntOption    opt_grow             (_cat, "grow",         "Allow a variable elimination step to grow by a number of clauses.", 0);
+static IntOption    opt_clause_lim       (_cat, "cl-lim",       "Variables are not eliminated if it produces a resolvent with a length above this limit. -1 means no limit", 20,   IntRange(-1, INT32_MAX));
+static IntOption    opt_subsumption_lim  (_cat, "sub-lim",      "Do not check if subsumption against a clause larger than this. -1 means no limit.", 1000, IntRange(-1, INT32_MAX));
+static DoubleOption opt_simp_garbage_frac(_cat, "simp-gc-frac", "The fraction of wasted memory allowed before a garbage collection is triggered during simplification.",  0.5, DoubleRange(0, false, HUGE_VAL, false));
+
+
+//=================================================================================================
+// Constructor/Destructor:
+
+
+SimpSolver::SimpSolver(CVC4::context::Context* c) :
+    Solver(c)
+  , grow               (opt_grow)
+  , clause_lim         (opt_clause_lim)
+  , subsumption_lim    (opt_subsumption_lim)
+  , simp_garbage_frac  (opt_simp_garbage_frac)
+  , use_asymm          (opt_use_asymm)
+  , use_rcheck         (opt_use_rcheck)
+  , use_elim           (opt_use_elim &&
+                        CVC4::options::bitblastMode() == CVC4::theory::bv::BITBLAST_MODE_EAGER &&
+                        !CVC4::options::produceModels())
+  , merges             (0)
+  , asymm_lits         (0)
+  , eliminated_vars    (0)
+  , elimorder          (1)
+  , use_simplification (!PROOF_ON())
+  , occurs             (ClauseDeleted(ca))
+  , elim_heap          (ElimLt(n_occ))
+  , bwdsub_assigns     (0)
+  , n_touched          (0)
+{
+
+    vec<Lit> dummy(1,lit_Undef);
+    ca.extra_clause_field = true; // NOTE: must happen before allocating the dummy clause below.
+    bwdsub_tmpunit        = ca.alloc(dummy);
+    remove_satisfied      = false;
+
+    // add the initialization for all the internal variables
+    for (int i = frozen.size(); i < vardata.size(); ++ i) {
+      frozen    .push(1);
+      eliminated.push(0);
+      if (use_simplification){
+          n_occ     .push(0);
+          n_occ     .push(0);
+          occurs    .init(i);
+          touched   .push(0);
+          elim_heap .insert(i);
+      }
+    }
+
+}
+
+
+SimpSolver::~SimpSolver()
+{
+  //  CVC4::StatisticsRegistry::unregisterStat(&total_eliminate_time); 
+}
+
+
+Var SimpSolver::newVar(bool sign, bool dvar, bool freeze) {
+    Var v = Solver::newVar(sign, dvar);
+
+    frozen    .push((char)false);
+    eliminated.push((char)false);
+
+    if (use_simplification){
+        n_occ     .push(0);
+        n_occ     .push(0);
+        occurs    .init(v);
+        touched   .push(0);
+        elim_heap .insert(v);
+        if (freeze) {
+          setFrozen(v, true); 
+        }
+    }
+    return v;
+}
+
+
+
+lbool SimpSolver::solve_(bool do_simp, bool turn_off_simp)
+{
+    only_bcp = false;
+  
+    vec<Var> extra_frozen;
+    lbool    result = l_True;
+
+    do_simp &= use_simplification;
+
+    if (do_simp) {
+        // Assumptions must be temporarily frozen to run variable elimination:
+        for (int i = 0; i < assumptions.size(); i++){
+            Var v = var(assumptions[i]);
+
+            // If an assumption has been eliminated, remember it.
+            assert(!isEliminated(v));
+
+            if (!frozen[v]){
+                // Freeze and store.
+                setFrozen(v, true);
+                extra_frozen.push(v);
+            } }
+
+        if (do_simp && clause_added) {
+          cancelUntil(0);
+          result = lbool(eliminate(turn_off_simp));
+          clause_added = false;
+        }
+    }
+
+    if (result == l_True)
+        result = Solver::solve_();
+    else if (verbosity >= 1)
+        printf("===============================================================================\n");
+
+    if (do_simp)
+        // Unfreeze the assumptions that were frozen:
+        for (int i = 0; i < extra_frozen.size(); i++)
+            setFrozen(extra_frozen[i], false);
+
+    return result;
+}
+
+
+
+bool SimpSolver::addClause_(vec<Lit>& ps, ClauseId& id)
+{
+#ifndef NDEBUG
+    for (int i = 0; i < ps.size(); i++)
+        assert(!isEliminated(var(ps[i])));
+#endif
+
+    int nclauses = clauses.size();
+
+    if (use_rcheck && implied(ps))
+        return true;
+
+    if (!Solver::addClause_(ps, id))
+        return false;
+
+    if (use_simplification && clauses.size() == nclauses + 1){
+        CRef          cr = clauses.last();
+        const Clause& c  = ca[cr];
+
+        // NOTE: the clause is added to the queue immediately and then
+        // again during 'gatherTouchedClauses()'. If nothing happens
+        // in between, it will only be checked once. Otherwise, it may
+        // be checked twice unnecessarily. This is an unfortunate
+        // consequence of how backward subsumption is used to mimic
+        // forward subsumption.
+        subsumption_queue.insert(cr);
+        for (int i = 0; i < c.size(); i++){
+            occurs[var(c[i])].push(cr);
+            n_occ[toInt(c[i])]++;
+            touched[var(c[i])] = 1;
+            n_touched++;
+            if (elim_heap.inHeap(var(c[i])))
+                elim_heap.increase(var(c[i]));
+        }
+    }
+
+    return true;
+}
+
+
+void SimpSolver::removeClause(CRef cr)
+{
+    const Clause& c = ca[cr];
+
+    if (use_simplification)
+        for (int i = 0; i < c.size(); i++){
+            n_occ[toInt(c[i])]--;
+            updateElimHeap(var(c[i]));
+            occurs.smudge(var(c[i]));
+        }
+
+    Solver::removeClause(cr);
+}
+
+
+bool SimpSolver::strengthenClause(CRef cr, Lit l)
+{
+    Clause& c = ca[cr];
+    assert(decisionLevel() == 0);
+    assert(use_simplification);
+
+    // FIX: this is too inefficient but would be nice to have (properly implemented)
+    // if (!find(subsumption_queue, &c))
+    subsumption_queue.insert(cr);
+
+    if (c.size() == 2){
+        removeClause(cr);
+        c.strengthen(l);
+    }else{
+        detachClause(cr, true);
+        c.strengthen(l);
+        attachClause(cr);
+        remove(occurs[var(l)], cr);
+        n_occ[toInt(l)]--;
+        updateElimHeap(var(l));
+    }
+
+    return c.size() == 1 ? enqueue(c[0]) && propagate() == CRef_Undef : true;
+}
+
+
+// Returns FALSE if clause is always satisfied ('out_clause' should not be used).
+bool SimpSolver::merge(const Clause& _ps, const Clause& _qs, Var v, vec<Lit>& out_clause)
+{
+    merges++;
+    out_clause.clear();
+
+    bool  ps_smallest = _ps.size() < _qs.size();
+    const Clause& ps  =  ps_smallest ? _qs : _ps;
+    const Clause& qs  =  ps_smallest ? _ps : _qs;
+
+    for (int i = 0; i < qs.size(); i++){
+        if (var(qs[i]) != v){
+            for (int j = 0; j < ps.size(); j++)
+                if (var(ps[j]) == var(qs[i]))
+                    if (ps[j] == ~qs[i])
+                        return false;
+                    else
+                        goto next;
+            out_clause.push(qs[i]);
+        }
+        next:;
+    }
+
+    for (int i = 0; i < ps.size(); i++)
+        if (var(ps[i]) != v)
+            out_clause.push(ps[i]);
+
+    return true;
+}
+
+
+// Returns FALSE if clause is always satisfied.
+bool SimpSolver::merge(const Clause& _ps, const Clause& _qs, Var v, int& size)
+{
+    merges++;
+
+    bool  ps_smallest = _ps.size() < _qs.size();
+    const Clause& ps  =  ps_smallest ? _qs : _ps;
+    const Clause& qs  =  ps_smallest ? _ps : _qs;
+    const Lit*  __ps  = (const Lit*)ps;
+    const Lit*  __qs  = (const Lit*)qs;
+
+    size = ps.size()-1;
+
+    for (int i = 0; i < qs.size(); i++){
+        if (var(__qs[i]) != v){
+            for (int j = 0; j < ps.size(); j++)
+                if (var(__ps[j]) == var(__qs[i]))
+                    if (__ps[j] == ~__qs[i])
+                        return false;
+                    else
+                        goto next;
+            size++;
+        }
+        next:;
+    }
+
+    return true;
+}
+
+
+void SimpSolver::gatherTouchedClauses()
+{
+    if (n_touched == 0) return;
+
+    int i,j;
+    for (i = j = 0; i < subsumption_queue.size(); i++)
+        if (ca[subsumption_queue[i]].mark() == 0)
+            ca[subsumption_queue[i]].mark(2);
+
+    for (i = 0; i < touched.size(); i++)
+        if (touched[i]){
+            const vec<CRef>& cs = occurs.lookup(i);
+            for (j = 0; j < cs.size(); j++)
+                if (ca[cs[j]].mark() == 0){
+                    subsumption_queue.insert(cs[j]);
+                    ca[cs[j]].mark(2);
+                }
+            touched[i] = 0;
+        }
+
+    for (i = 0; i < subsumption_queue.size(); i++)
+        if (ca[subsumption_queue[i]].mark() == 2)
+            ca[subsumption_queue[i]].mark(0);
+
+    n_touched = 0;
+}
+
+
+bool SimpSolver::implied(const vec<Lit>& c)
+{
+    assert(decisionLevel() == 0);
+
+    trail_lim.push(trail.size());
+    for (int i = 0; i < c.size(); i++)
+        if (value(c[i]) == l_True){
+            cancelUntil(0);
+            return false;
+        }else if (value(c[i]) != l_False){
+            assert(value(c[i]) == l_Undef);
+            uncheckedEnqueue(~c[i]);
+        }
+
+    bool result = propagate() != CRef_Undef;
+    cancelUntil(0);
+    return result;
+}
+
+
+// Backward subsumption + backward subsumption resolution
+bool SimpSolver::backwardSubsumptionCheck(bool verbose)
+{
+    int cnt = 0;
+    int subsumed = 0;
+    int deleted_literals = 0;
+    assert(decisionLevel() == 0);
+
+    while (subsumption_queue.size() > 0 || bwdsub_assigns < trail.size()){
+
+        // Empty subsumption queue and return immediately on user-interrupt:
+        if (asynch_interrupt){
+            subsumption_queue.clear();
+            bwdsub_assigns = trail.size();
+            break; }
+
+        // Check top-level assignments by creating a dummy clause and placing it in the queue:
+        if (subsumption_queue.size() == 0 && bwdsub_assigns < trail.size()){
+            Lit l = trail[bwdsub_assigns++];
+            ca[bwdsub_tmpunit][0] = l;
+            ca[bwdsub_tmpunit].calcAbstraction();
+            subsumption_queue.insert(bwdsub_tmpunit); }
+
+        CRef    cr = subsumption_queue.peek(); subsumption_queue.pop();
+        Clause& c  = ca[cr];
+
+        if (c.mark()) continue;
+
+        if (verbose && verbosity >= 2 && cnt++ % 1000 == 0)
+            printf("subsumption left: %10d (%10d subsumed, %10d deleted literals)\r", subsumption_queue.size(), subsumed, deleted_literals);
+
+        assert(c.size() > 1 || value(c[0]) == l_True);    // Unit-clauses should have been propagated before this point.
+
+        // Find best variable to scan:
+        Var best = var(c[0]);
+        for (int i = 1; i < c.size(); i++)
+            if (occurs[var(c[i])].size() < occurs[best].size())
+                best = var(c[i]);
+
+        // Search all candidates:
+        vec<CRef>& _cs = occurs.lookup(best);
+        CRef*       cs = (CRef*)_cs;
+
+        for (int j = 0; j < _cs.size(); j++)
+            if (c.mark())
+                break;
+            else if (!ca[cs[j]].mark() &&  cs[j] != cr && (subsumption_lim == -1 || ca[cs[j]].size() < subsumption_lim)){
+                Lit l = c.subsumes(ca[cs[j]]);
+
+                if (l == lit_Undef)
+                    subsumed++, removeClause(cs[j]);
+                else if (l != lit_Error){
+                    deleted_literals++;
+
+                    if (!strengthenClause(cs[j], ~l))
+                        return false;
+
+                    // Did current candidate get deleted from cs? Then check candidate at index j again:
+                    if (var(l) == best)
+                        j--;
+                }
+            }
+    }
+
+    return true;
+}
+
+
+bool SimpSolver::asymm(Var v, CRef cr)
+{
+    Clause& c = ca[cr];
+    assert(decisionLevel() == 0);
+
+    if (c.mark() || satisfied(c)) return true;
+
+    trail_lim.push(trail.size());
+    Lit l = lit_Undef;
+    for (int i = 0; i < c.size(); i++)
+        if (var(c[i]) != v && value(c[i]) != l_False)
+            uncheckedEnqueue(~c[i]);
+        else
+            l = c[i];
+
+    if (propagate() != CRef_Undef){
+        cancelUntil(0);
+        asymm_lits++;
+        if (!strengthenClause(cr, l))
+            return false;
+    }else
+        cancelUntil(0);
+
+    return true;
+}
+
+
+bool SimpSolver::asymmVar(Var v)
+{
+    assert(use_simplification);
+
+    const vec<CRef>& cls = occurs.lookup(v);
+
+    if (value(v) != l_Undef || cls.size() == 0)
+        return true;
+
+    for (int i = 0; i < cls.size(); i++)
+        if (!asymm(v, cls[i]))
+            return false;
+
+    return backwardSubsumptionCheck();
+}
+
+
+static void mkElimClause(vec<uint32_t>& elimclauses, Lit x)
+{
+    elimclauses.push(toInt(x));
+    elimclauses.push(1);
+}
+
+
+static void mkElimClause(vec<uint32_t>& elimclauses, Var v, Clause& c)
+{
+    int first = elimclauses.size();
+    int v_pos = -1;
+
+    // Copy clause to elimclauses-vector. Remember position where the
+    // variable 'v' occurs:
+    for (int i = 0; i < c.size(); i++){
+        elimclauses.push(toInt(c[i]));
+        if (var(c[i]) == v)
+            v_pos = i + first;
+    }
+    assert(v_pos != -1);
+
+    // Swap the first literal with the 'v' literal, so that the literal
+    // containing 'v' will occur first in the clause:
+    uint32_t tmp = elimclauses[v_pos];
+    elimclauses[v_pos] = elimclauses[first];
+    elimclauses[first] = tmp;
+
+    // Store the length of the clause last:
+    elimclauses.push(c.size());
+}
+
+
+
+bool SimpSolver::eliminateVar(Var v)
+{
+
+    assert(!frozen[v]);
+    assert(!isEliminated(v));
+    assert(value(v) == l_Undef);
+
+    // Split the occurrences into positive and negative:
+    //
+    const vec<CRef>& cls = occurs.lookup(v);
+    vec<CRef>        pos, neg;
+    for (int i = 0; i < cls.size(); i++)
+        (find(ca[cls[i]], mkLit(v)) ? pos : neg).push(cls[i]);
+
+    // Check wether the increase in number of clauses stays within the allowed ('grow'). Moreover, no
+    // clause must exceed the limit on the maximal clause size (if it is set):
+    //
+    int cnt         = 0;
+    int clause_size = 0;
+
+    for (int i = 0; i < pos.size(); i++)
+        for (int j = 0; j < neg.size(); j++)
+            if (merge(ca[pos[i]], ca[neg[j]], v, clause_size) && 
+                (++cnt > cls.size() + grow || (clause_lim != -1 && clause_size > clause_lim)))
+                return true;
+
+    // Delete and store old clauses:
+    eliminated[v] = true;
+    setDecisionVar(v, false);
+    eliminated_vars++;
+
+    if (pos.size() > neg.size()){
+        for (int i = 0; i < neg.size(); i++)
+            mkElimClause(elimclauses, v, ca[neg[i]]);
+        mkElimClause(elimclauses, mkLit(v));
+    }else{
+        for (int i = 0; i < pos.size(); i++)
+            mkElimClause(elimclauses, v, ca[pos[i]]);
+        mkElimClause(elimclauses, ~mkLit(v));
+    }
+
+    for (int i = 0; i < cls.size(); i++)
+        removeClause(cls[i]); 
+
+    // Produce clauses in cross product:
+    vec<Lit>& resolvent = add_tmp;
+    for (int i = 0; i < pos.size(); i++)
+      for (int j = 0; j < neg.size(); j++) {
+        ClauseId id = -1;
+        if (merge(ca[pos[i]], ca[neg[j]], v, resolvent) &&
+            !addClause_(resolvent, id))
+          return false;
+      }
+
+    // Free occurs list for this variable:
+    occurs[v].clear(true);
+    
+    // Free watchers lists for this variable, if possible:
+    if (watches[ mkLit(v)].size() == 0) watches[ mkLit(v)].clear(true);
+    if (watches[~mkLit(v)].size() == 0) watches[~mkLit(v)].clear(true);
+
+    return backwardSubsumptionCheck();
+}
+
+
+bool SimpSolver::substitute(Var v, Lit x)
+{
+    assert(!frozen[v]);
+    assert(!isEliminated(v));
+    assert(value(v) == l_Undef);
+
+    if (!ok) return false;
+
+    eliminated[v] = true;
+    setDecisionVar(v, false);
+    const vec<CRef>& cls = occurs.lookup(v);
+    
+    vec<Lit>& subst_clause = add_tmp;
+    for (int i = 0; i < cls.size(); i++){
+        Clause& c = ca[cls[i]];
+
+        subst_clause.clear();
+        for (int j = 0; j < c.size(); j++){
+            Lit p = c[j];
+            subst_clause.push(var(p) == v ? x ^ sign(p) : p);
+        }
+
+        removeClause(cls[i]);
+        ClauseId id;
+        if (!addClause_(subst_clause, id))
+            return ok = false;
+    }
+
+    return true;
+}
+
+
+void SimpSolver::extendModel()
+{
+    int i, j;
+    Lit x;
+
+    for (i = elimclauses.size()-1; i > 0; i -= j){
+        for (j = elimclauses[i--]; j > 1; j--, i--)
+            if (modelValue(toLit(elimclauses[i])) != l_False)
+                goto next;
+
+        x = toLit(elimclauses[i]);
+        model[var(x)] = lbool(!sign(x));
+    next:;
+    }
+}
+
+
+bool SimpSolver::eliminate(bool turn_off_elim)
+{
+
+  //  CVC4::TimerStat::CodeTimer codeTimer(total_eliminate_time);
+  
+    if (!simplify())
+        return false;
+    else if (!use_simplification)
+        return true;
+
+    // Main simplification loop:
+    //
+    while (n_touched > 0 || bwdsub_assigns < trail.size() || elim_heap.size() > 0){
+
+        gatherTouchedClauses();
+        // printf("  ## (time = %6.2f s) BWD-SUB: queue = %d, trail = %d\n", cpuTime(), subsumption_queue.size(), trail.size() - bwdsub_assigns);
+        if ((subsumption_queue.size() > 0 || bwdsub_assigns < trail.size()) && 
+            !backwardSubsumptionCheck(true)){
+            ok = false; goto cleanup; }
+
+        // Empty elim_heap and return immediately on user-interrupt:
+        if (asynch_interrupt){
+            assert(bwdsub_assigns == trail.size());
+            assert(subsumption_queue.size() == 0);
+            assert(n_touched == 0);
+            elim_heap.clear();
+            goto cleanup; }
+
+        // printf("  ## (time = %6.2f s) ELIM: vars = %d\n", cpuTime(), elim_heap.size());
+        for (int cnt = 0; !elim_heap.empty(); cnt++){
+            Var elim = elim_heap.removeMin();
+            
+            if (asynch_interrupt) break;
+
+            if (isEliminated(elim) || value(elim) != l_Undef) continue;
+
+            if (verbosity >= 2 && cnt % 100 == 0)
+                printf("elimination left: %10d\r", elim_heap.size());
+
+            if (use_asymm){
+                // Temporarily freeze variable. Otherwise, it would immediately end up on the queue again:
+                bool was_frozen = frozen[elim];
+                frozen[elim] = true;
+                if (!asymmVar(elim)){
+                    ok = false; goto cleanup; }
+                frozen[elim] = was_frozen; }
+
+            // At this point, the variable may have been set by assymetric branching, so check it
+            // again. Also, don't eliminate frozen variables:
+            if (use_elim && value(elim) == l_Undef && !frozen[elim] && !eliminateVar(elim)){
+                ok = false; goto cleanup; }
+
+            checkGarbage(simp_garbage_frac);
+        }
+
+        assert(subsumption_queue.size() == 0);
+    }
+ cleanup:
+
+    // If no more simplification is needed, free all simplification-related data structures:
+    if (turn_off_elim){
+        touched  .clear(true);
+        occurs   .clear(true);
+        n_occ    .clear(true);
+        elim_heap.clear(true);
+        subsumption_queue.clear(true);
+
+        use_simplification    = false;
+        remove_satisfied      = true;
+        ca.extra_clause_field = false;
+
+        // Force full cleanup (this is safe and desirable since it only happens once):
+        rebuildOrderHeap();
+        garbageCollect();
+    }else{
+        // Cheaper cleanup:
+        cleanUpClauses(); // TODO: can we make 'cleanUpClauses()' not be linear in the problem size somehow?
+        checkGarbage();
+    }
+
+    if (verbosity >= 1 && elimclauses.size() > 0)
+        printf("|  Eliminated clauses:     %10.2f Mb                                      |\n", 
+               double(elimclauses.size() * sizeof(uint32_t)) / (1024*1024));
+
+    return ok;
+
+
+
+}
+
+
+void SimpSolver::cleanUpClauses()
+{
+    occurs.cleanAll();
+    int i,j;
+    for (i = j = 0; i < clauses.size(); i++)
+        if (ca[clauses[i]].mark() == 0)
+            clauses[j++] = clauses[i];
+    clauses.shrink(i - j);
+}
+
+
+//=================================================================================================
+// Garbage Collection methods:
+
+
+void SimpSolver::relocAll(ClauseAllocator& to)
+{
+    if (!use_simplification) return;
+
+    // All occurs lists:
+    //
+    for (int i = 0; i < nVars(); i++){
+        vec<CRef>& cs = occurs[i];
+        for (int j = 0; j < cs.size(); j++)
+            ca.reloc(cs[j], to);
+    }
+
+    // Subsumption queue:
+    //
+    for (int i = 0; i < subsumption_queue.size(); i++)
+        ca.reloc(subsumption_queue[i], to);
+
+    // Temporary clause:
+    //
+    ca.reloc(bwdsub_tmpunit, to);
+}
+
+
+void SimpSolver::garbageCollect()
+{
+    // Initialize the next region to a size corresponding to the estimated utilization degree. This
+    // is not precise but should avoid some unnecessary reallocations for the new region:
+    ClauseAllocator to(ca.size() - ca.wasted()); 
+
+    cleanUpClauses();
+    to.extra_clause_field = ca.extra_clause_field; // NOTE: this is important to keep (or lose) the extra fields.
+    relocAll(to);
+    Solver::relocAll(to);
+    if (verbosity >= 2)
+        printf("|  Garbage collection:   %12d bytes => %12d bytes             |\n", 
+               ca.size()*ClauseAllocator::Unit_Size, to.size()*ClauseAllocator::Unit_Size);
+    to.moveTo(ca);
+}
+
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
diff --git a/src/prop/bvminisat/simp/SimpSolver.h b/src/prop/bvminisat/simp/SimpSolver.h
new file mode 100644
index 0000000..9854bf7
--- /dev/null
+++ b/src/prop/bvminisat/simp/SimpSolver.h
@@ -0,0 +1,227 @@
+/************************************************************************************[SimpSolver.h]
+Copyright (c) 2006,      Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef BVMinisat_SimpSolver_h
+#define BVMinisat_SimpSolver_h
+
+#include "context/context.h"
+#include "proof/clause_id.h"
+#include "prop/bvminisat/core/Solver.h"
+#include "prop/bvminisat/mtl/Queue.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace BVMinisat {
+
+//=================================================================================================
+
+
+class SimpSolver : public Solver {
+ public:
+    // Constructor/Destructor:
+    //
+    SimpSolver(CVC4::context::Context* c);
+    ~SimpSolver();
+
+    // Problem specification:
+    //
+    Var     newVar    (bool polarity = true, bool dvar = true, bool freeze = false);
+    bool    addClause (const vec<Lit>& ps, ClauseId& id);
+    bool    addEmptyClause();                // Add the empty clause to the solver.
+    bool    addClause (Lit p, ClauseId& id);               // Add a unit clause to the solver.
+    bool    addClause (Lit p, Lit q, ClauseId& id);        // Add a binary clause to the solver.
+    bool    addClause (Lit p, Lit q, Lit r, ClauseId& id); // Add a ternary clause to the solver.
+    bool    addClause_( vec<Lit>& ps, ClauseId& id);
+    bool    substitute(Var v, Lit x);  // Replace all occurences of v with x (may cause a contradiction).
+
+    // Variable mode:
+    // 
+    void    setFrozen (Var v, bool b); // If a variable is frozen it will not be eliminated.
+    bool    isEliminated(Var v) const;
+
+    // Solving:
+    //
+    lbool    solve       (const vec<Lit>& assumps, bool do_simp = true, bool turn_off_simp = false);
+    lbool    solveLimited(const vec<Lit>& assumps, bool do_simp = true, bool turn_off_simp = false);
+    lbool    solveLimited(bool do_simp = true, bool turn_off_simp = false);
+    lbool    solve       (                     bool do_simp = true, bool turn_off_simp = false);
+    lbool    solve       (Lit p       ,        bool do_simp = true, bool turn_off_simp = false);       
+    lbool    solve       (Lit p, Lit q,        bool do_simp = true, bool turn_off_simp = false);
+    lbool    solve       (Lit p, Lit q, Lit r, bool do_simp = true, bool turn_off_simp = false);
+    bool    eliminate   (bool turn_off_elim = false);  // Perform variable elimination based simplification. 
+
+    // Memory managment:
+    //
+    virtual void garbageCollect();
+
+
+    // Generate a (possibly simplified) DIMACS file:
+    //
+#if 0
+    void    toDimacs  (const char* file, const vec<Lit>& assumps);
+    void    toDimacs  (const char* file);
+    void    toDimacs  (const char* file, Lit p);
+    void    toDimacs  (const char* file, Lit p, Lit q);
+    void    toDimacs  (const char* file, Lit p, Lit q, Lit r);
+#endif
+
+    // Mode of operation:
+    //
+    int     grow;              // Allow a variable elimination step to grow by a number of clauses (default to zero).
+    int     clause_lim;        // Variables are not eliminated if it produces a resolvent with a length above this limit.
+                               // -1 means no limit.
+    int     subsumption_lim;   // Do not check if subsumption against a clause larger than this. -1 means no limit.
+    double  simp_garbage_frac; // A different limit for when to issue a GC during simplification (Also see 'garbage_frac').
+
+    bool    use_asymm;         // Shrink clauses by asymmetric branching.
+    bool    use_rcheck;        // Check if a clause is already implied. Prett costly, and subsumes subsumptions :)
+    bool    use_elim;          // Perform variable elimination.
+
+    // Statistics:
+    //
+    int     merges;
+    int     asymm_lits;
+    int     eliminated_vars;
+  //    CVC4::TimerStat total_eliminate_time;
+
+ protected:
+
+    // Helper structures:
+    //
+    struct ElimLt {
+        const vec<int>& n_occ;
+        explicit ElimLt(const vec<int>& no) : n_occ(no) {}
+
+        // TODO: are 64-bit operations here noticably bad on 32-bit platforms? Could use a saturating
+        // 32-bit implementation instead then, but this will have to do for now.
+        uint64_t cost  (Var x)        const { return (uint64_t)n_occ[toInt(mkLit(x))] * (uint64_t)n_occ[toInt(~mkLit(x))]; }
+        bool operator()(Var x, Var y) const { return cost(x) < cost(y); }
+        
+        // TODO: investigate this order alternative more.
+        // bool operator()(Var x, Var y) const { 
+        //     int c_x = cost(x);
+        //     int c_y = cost(y);
+        //     return c_x < c_y || c_x == c_y && x < y; }
+    };
+
+    struct ClauseDeleted {
+        const ClauseAllocator& ca;
+        explicit ClauseDeleted(const ClauseAllocator& _ca) : ca(_ca) {}
+        bool operator()(const CRef& cr) const { return ca[cr].mark() == 1; } };
+
+    // Solver state:
+    //
+    int                 elimorder;
+    bool                use_simplification;
+    vec<uint32_t>       elimclauses;
+    vec<char>           touched;
+    OccLists<Var, vec<CRef>, ClauseDeleted>
+                        occurs;
+    vec<int>            n_occ;
+    Heap<ElimLt>        elim_heap;
+    Queue<CRef>         subsumption_queue;
+    vec<char>           frozen;
+    vec<char>           eliminated;
+    int                 bwdsub_assigns;
+    int                 n_touched;
+
+    // Temporaries:
+    //
+    CRef                bwdsub_tmpunit;
+
+    // Main internal methods:
+    //
+    lbool         solve_                   (bool do_simp = true, bool turn_off_simp = false);
+    bool          asymm                    (Var v, CRef cr);
+    bool          asymmVar                 (Var v);
+    void          updateElimHeap           (Var v);
+    void          gatherTouchedClauses     ();
+    bool          merge                    (const Clause& _ps, const Clause& _qs, Var v, vec<Lit>& out_clause);
+    bool          merge                    (const Clause& _ps, const Clause& _qs, Var v, int& size);
+    bool          backwardSubsumptionCheck (bool verbose = false);
+    bool          eliminateVar             (Var v);
+    void          extendModel              ();
+
+    void          removeClause             (CRef cr);
+    bool          strengthenClause         (CRef cr, Lit l);
+    void          cleanUpClauses           ();
+    bool          implied                  (const vec<Lit>& c);
+    void          relocAll                 (ClauseAllocator& to);
+};
+
+
+//=================================================================================================
+// Implementation of inline methods:
+
+
+inline bool SimpSolver::isEliminated (Var v) const { return eliminated[v]; }
+inline void SimpSolver::updateElimHeap(Var v) {
+    assert(use_simplification);
+    // if (!frozen[v] && !isEliminated(v) && value(v) == l_Undef)
+    if (elim_heap.inHeap(v) || (!frozen[v] && !isEliminated(v) && value(v) == l_Undef))
+        elim_heap.update(v); }
+
+
+inline bool SimpSolver::addClause    (const vec<Lit>& ps, ClauseId& id)    { ps.copyTo(add_tmp); return addClause_(add_tmp, id); }
+inline bool SimpSolver::addEmptyClause()                     { add_tmp.clear(); ClauseId id; return addClause_(add_tmp, id); }
+inline bool SimpSolver::addClause    (Lit p, ClauseId& id)                 { add_tmp.clear(); add_tmp.push(p); return addClause_(add_tmp, id); }
+inline bool SimpSolver::addClause    (Lit p, Lit q, ClauseId& id)          { add_tmp.clear(); add_tmp.push(p); add_tmp.push(q); return addClause_(add_tmp, id); }
+inline bool SimpSolver::addClause    (Lit p, Lit q, Lit r, ClauseId& id)   { add_tmp.clear(); add_tmp.push(p); add_tmp.push(q); add_tmp.push(r); return addClause_(add_tmp, id); }
+inline void SimpSolver::setFrozen    (Var v, bool b) { frozen[v] = (char)b; if (use_simplification && !b) { updateElimHeap(v); } }
+
+inline lbool SimpSolver::solve        (                     bool do_simp, bool turn_off_simp)  {
+  budgetOff();
+  return solve_(do_simp, turn_off_simp);
+ }
+inline lbool SimpSolver::solve        (Lit p       ,        bool do_simp, bool turn_off_simp)  {
+  budgetOff();
+  assumptions.push(p);
+  return solve_(do_simp, turn_off_simp);
+ }
+inline lbool SimpSolver::solve        (Lit p, Lit q,        bool do_simp, bool turn_off_simp)  {
+  budgetOff();
+  assumptions.push(p);
+  assumptions.push(q);
+  return solve_(do_simp, turn_off_simp);
+ }
+inline lbool SimpSolver::solve        (Lit p, Lit q, Lit r, bool do_simp, bool turn_off_simp)  {
+  budgetOff();
+  assumptions.push(p);
+  assumptions.push(q);
+  assumptions.push(r);
+  return solve_(do_simp, turn_off_simp);
+ }
+inline lbool SimpSolver::solve        (const vec<Lit>& assumps, bool do_simp, bool turn_off_simp){
+  budgetOff(); assumps.copyTo(assumptions);
+  return solve_(do_simp, turn_off_simp);
+}
+
+inline lbool SimpSolver::solveLimited (const vec<Lit>& assumps, bool do_simp, bool turn_off_simp){ 
+    assumps.copyTo(assumptions); return solve_(do_simp, turn_off_simp); }
+
+inline lbool SimpSolver::solveLimited (bool do_simp, bool turn_off_simp){ 
+    return solve_(do_simp, turn_off_simp); }
+
+//=================================================================================================
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
+
+
+#endif
diff --git a/src/prop/bvminisat/utils/Options.cc b/src/prop/bvminisat/utils/Options.cc
new file mode 100644
index 0000000..b2094d4
--- /dev/null
+++ b/src/prop/bvminisat/utils/Options.cc
@@ -0,0 +1,95 @@
+/**************************************************************************************[Options.cc]
+Copyright (c) 2008-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#include "mtl/Sort.h"
+#include "utils/Options.h"
+#include "utils/ParseUtils.h"
+
+namespace CVC4 {
+namespace BVMinisat {
+
+void BVMinisat::parseOptions(int& argc, char** argv, bool strict)
+{
+    int i, j;
+    for (i = j = 1; i < argc; i++){
+        const char* str = argv[i];
+        if (match(str, "--") && match(str, Option::getHelpPrefixString()) && match(str, "help")){
+            if (*str == '\0')
+                printUsageAndExit(argc, argv);
+            else if (match(str, "-verb"))
+                printUsageAndExit(argc, argv, true);
+        } else {
+            bool parsed_ok = false;
+        
+            for (int k = 0; !parsed_ok && k < Option::getOptionList().size(); k++){
+                parsed_ok = Option::getOptionList()[k]->parse(argv[i]);
+
+                // fprintf(stderr, "checking %d: %s against flag <%s> (%s)\n", i, argv[i], Option::getOptionList()[k]->name, parsed_ok ? "ok" : "skip");
+            }
+
+            if (!parsed_ok)
+                if (strict && match(argv[i], "-"))
+                    fprintf(stderr, "ERROR! Unknown flag \"%s\". Use '--%shelp' for help.\n", argv[i], Option::getHelpPrefixString()), exit(1);
+                else
+                    argv[j++] = argv[i];
+        }
+    }
+
+    argc -= (i - j);
+}
+
+
+void BVMinisat::setUsageHelp      (const char* str){ Option::getUsageString() = str; }
+void BVMinisat::setHelpPrefixStr  (const char* str){ Option::getHelpPrefixString() = str; }
+void BVMinisat::printUsageAndExit (int argc, char** argv, bool verbose)
+{
+    const char* usage = Option::getUsageString();
+    if (usage != NULL)
+        fprintf(stderr, usage, argv[0]);
+
+    sort(Option::getOptionList(), Option::OptionLt());
+
+    const char* prev_cat  = NULL;
+    const char* prev_type = NULL;
+
+    for (int i = 0; i < Option::getOptionList().size(); i++){
+        const char* cat  = Option::getOptionList()[i]->category;
+        const char* type = Option::getOptionList()[i]->type_name;
+
+        if (cat != prev_cat)
+            fprintf(stderr, "\n%s OPTIONS:\n\n", cat);
+        else if (type != prev_type)
+            fprintf(stderr, "\n");
+
+        Option::getOptionList()[i]->help(verbose);
+
+        prev_cat  = Option::getOptionList()[i]->category;
+        prev_type = Option::getOptionList()[i]->type_name;
+    }
+
+    fprintf(stderr, "\nHELP OPTIONS:\n\n");
+    fprintf(stderr, "  --%shelp        Print help message.\n", Option::getHelpPrefixString());
+    fprintf(stderr, "  --%shelp-verb   Print verbose help message.\n", Option::getHelpPrefixString());
+    fprintf(stderr, "\n");
+    exit(0);
+}
+
+
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
diff --git a/src/prop/bvminisat/utils/Options.h b/src/prop/bvminisat/utils/Options.h
new file mode 100644
index 0000000..12321cb
--- /dev/null
+++ b/src/prop/bvminisat/utils/Options.h
@@ -0,0 +1,388 @@
+/***************************************************************************************[Options.h]
+Copyright (c) 2008-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef BVMinisat_Options_h
+#define BVMinisat_Options_h
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+
+#include "prop/bvminisat/mtl/IntTypes.h"
+#include "prop/bvminisat/mtl/Vec.h"
+#include "prop/bvminisat/utils/ParseUtils.h"
+
+namespace CVC4 {
+namespace BVMinisat {
+
+//==================================================================================================
+// Top-level option parse/help functions:
+
+
+extern void parseOptions     (int& argc, char** argv, bool strict = false);
+extern void printUsageAndExit(int  argc, char** argv, bool verbose = false);
+extern void setUsageHelp     (const char* str);
+extern void setHelpPrefixStr (const char* str);
+
+
+//==================================================================================================
+// Options is an abstract class that gives the interface for all types options:
+
+
+class Option
+{
+ protected:
+    const char* name;
+    const char* description;
+    const char* category;
+    const char* type_name;
+
+    static vec<Option*>& getOptionList () { static vec<Option*> options; return options; }
+    static const char*&  getUsageString() { static const char* usage_str; return usage_str; }
+    static const char*&  getHelpPrefixString() { static const char* help_prefix_str = ""; return help_prefix_str; }
+
+    struct OptionLt {
+        bool operator()(const Option* x, const Option* y) {
+            int test1 = strcmp(x->category, y->category);
+            return test1 < 0 || (test1 == 0 && strcmp(x->type_name, y->type_name) < 0);
+        }
+    };
+
+    Option(const char* name_, 
+           const char* desc_,
+           const char* cate_,
+           const char* type_) : 
+      name       (name_)
+    , description(desc_)
+    , category   (cate_)
+    , type_name  (type_)
+    { 
+        getOptionList().push(this); 
+    }
+
+ public:
+    virtual ~Option() {}
+
+    virtual bool parse             (const char* str)      = 0;
+    virtual void help              (bool verbose = false) = 0;
+
+    friend  void parseOptions      (int& argc, char** argv, bool strict);
+    friend  void printUsageAndExit (int  argc, char** argv, bool verbose);
+    friend  void setUsageHelp      (const char* str);
+    friend  void setHelpPrefixStr  (const char* str);
+};
+
+
+//==================================================================================================
+// Range classes with specialization for floating types:
+
+
+struct IntRange {
+    int begin;
+    int end;
+    IntRange(int b, int e) : begin(b), end(e) {}
+};
+
+struct Int64Range {
+    int64_t begin;
+    int64_t end;
+    Int64Range(int64_t b, int64_t e) : begin(b), end(e) {}
+};
+
+struct DoubleRange {
+    double begin;
+    double end;
+    bool  begin_inclusive;
+    bool  end_inclusive;
+    DoubleRange(double b, bool binc, double e, bool einc) : begin(b), end(e), begin_inclusive(binc), end_inclusive(einc) {}
+};
+
+
+//==================================================================================================
+// Double options:
+
+
+class DoubleOption : public Option
+{
+ protected:
+    DoubleRange range;
+    double      value;
+
+ public:
+    DoubleOption(const char* c, const char* n, const char* d, double def = double(), DoubleRange r = DoubleRange(-HUGE_VAL, false, HUGE_VAL, false))
+        : Option(n, d, c, "<double>"), range(r), value(def) {
+        // FIXME: set LC_NUMERIC to "C" to make sure that strtof/strtod parses decimal point correctly.
+    }
+
+    operator      double   (void) const { return value; }
+    operator      double&  (void)       { return value; }
+    DoubleOption& operator=(double x)   { value = x; return *this; }
+
+    virtual bool parse(const char* str){
+        const char* span = str; 
+
+        if (!match(span, "-") || !match(span, name) || !match(span, "="))
+            return false;
+
+        char*  end;
+        double tmp = strtod(span, &end);
+
+        if (end == NULL) 
+            return false;
+        else if (tmp >= range.end && (!range.end_inclusive || tmp != range.end)){
+            fprintf(stderr, "ERROR! value <%s> is too large for option \"%s\".\n", span, name);
+            exit(1);
+        }else if (tmp <= range.begin && (!range.begin_inclusive || tmp != range.begin)){
+            fprintf(stderr, "ERROR! value <%s> is too small for option \"%s\".\n", span, name);
+            exit(1); }
+
+        value = tmp;
+        // fprintf(stderr, "READ VALUE: %g\n", value);
+
+        return true;
+    }
+
+    virtual void help (bool verbose = false){
+        fprintf(stderr, "  -%-12s = %-8s %c%4.2g .. %4.2g%c (default: %g)\n", 
+                name, type_name, 
+                range.begin_inclusive ? '[' : '(', 
+                range.begin,
+                range.end,
+                range.end_inclusive ? ']' : ')', 
+                value);
+        if (verbose){
+            fprintf(stderr, "\n        %s\n", description);
+            fprintf(stderr, "\n");
+        }
+    }
+};
+
+
+//==================================================================================================
+// Int options:
+
+
+class IntOption : public Option
+{
+ protected:
+    IntRange range;
+    int32_t  value;
+
+ public:
+    IntOption(const char* c, const char* n, const char* d, int32_t def = int32_t(), IntRange r = IntRange(INT32_MIN, INT32_MAX))
+        : Option(n, d, c, "<int32>"), range(r), value(def) {}
+ 
+    operator   int32_t   (void) const { return value; }
+    operator   int32_t&  (void)       { return value; }
+    IntOption& operator= (int32_t x)  { value = x; return *this; }
+
+    virtual bool parse(const char* str){
+        const char* span = str; 
+
+        if (!match(span, "-") || !match(span, name) || !match(span, "="))
+            return false;
+
+        char*   end;
+        int32_t tmp = strtol(span, &end, 10);
+
+        if (end == NULL) 
+            return false;
+        else if (tmp > range.end){
+            fprintf(stderr, "ERROR! value <%s> is too large for option \"%s\".\n", span, name);
+            exit(1);
+        }else if (tmp < range.begin){
+            fprintf(stderr, "ERROR! value <%s> is too small for option \"%s\".\n", span, name);
+            exit(1); }
+
+        value = tmp;
+
+        return true;
+    }
+
+    virtual void help (bool verbose = false){
+        fprintf(stderr, "  -%-12s = %-8s [", name, type_name);
+        if (range.begin == INT32_MIN)
+            fprintf(stderr, "imin");
+        else
+            fprintf(stderr, "%4d", range.begin);
+
+        fprintf(stderr, " .. ");
+        if (range.end == INT32_MAX)
+            fprintf(stderr, "imax");
+        else
+            fprintf(stderr, "%4d", range.end);
+
+        fprintf(stderr, "] (default: %d)\n", value);
+        if (verbose){
+            fprintf(stderr, "\n        %s\n", description);
+            fprintf(stderr, "\n");
+        }
+    }
+};
+
+
+// Leave this out for visual C++ until Microsoft implements C99 and gets support for strtoll.
+#ifndef _MSC_VER
+
+class Int64Option : public Option
+{
+ protected:
+    Int64Range range;
+    int64_t  value;
+
+ public:
+    Int64Option(const char* c, const char* n, const char* d, int64_t def = int64_t(), Int64Range r = Int64Range(INT64_MIN, INT64_MAX))
+        : Option(n, d, c, "<int64>"), range(r), value(def) {}
+ 
+    operator     int64_t   (void) const { return value; }
+    operator     int64_t&  (void)       { return value; }
+    Int64Option& operator= (int64_t x)  { value = x; return *this; }
+
+    virtual bool parse(const char* str){
+        const char* span = str; 
+
+        if (!match(span, "-") || !match(span, name) || !match(span, "="))
+            return false;
+
+        char*   end;
+        int64_t tmp = strtoll(span, &end, 10);
+
+        if (end == NULL) 
+            return false;
+        else if (tmp > range.end){
+            fprintf(stderr, "ERROR! value <%s> is too large for option \"%s\".\n", span, name);
+            exit(1);
+        }else if (tmp < range.begin){
+            fprintf(stderr, "ERROR! value <%s> is too small for option \"%s\".\n", span, name);
+            exit(1); }
+
+        value = tmp;
+
+        return true;
+    }
+
+    virtual void help (bool verbose = false){
+        fprintf(stderr, "  -%-12s = %-8s [", name, type_name);
+        if (range.begin == INT64_MIN)
+            fprintf(stderr, "imin");
+        else
+            fprintf(stderr, "%4" PRIi64, range.begin);
+
+        fprintf(stderr, " .. ");
+        if (range.end == INT64_MAX)
+            fprintf(stderr, "imax");
+        else
+            fprintf(stderr, "%4" PRIi64, range.end);
+
+        fprintf(stderr, "] (default: %" PRIi64")\n", value);
+        if (verbose){
+            fprintf(stderr, "\n        %s\n", description);
+            fprintf(stderr, "\n");
+        }
+    }
+};
+#endif
+
+//==================================================================================================
+// String option:
+
+
+class StringOption : public Option
+{
+    const char* value;
+ public:
+    StringOption(const char* c, const char* n, const char* d, const char* def = NULL) 
+        : Option(n, d, c, "<string>"), value(def) {}
+
+    operator      const char*  (void) const     { return value; }
+    operator      const char*& (void)           { return value; }
+    StringOption& operator=    (const char* x)  { value = x; return *this; }
+
+    virtual bool parse(const char* str){
+        const char* span = str; 
+
+        if (!match(span, "-") || !match(span, name) || !match(span, "="))
+            return false;
+
+        value = span;
+        return true;
+    }
+
+    virtual void help (bool verbose = false){
+        fprintf(stderr, "  -%-10s = %8s\n", name, type_name);
+        if (verbose){
+            fprintf(stderr, "\n        %s\n", description);
+            fprintf(stderr, "\n");
+        }
+    }    
+};
+
+
+//==================================================================================================
+// Bool option:
+
+
+class BoolOption : public Option
+{
+    bool value;
+
+ public:
+    BoolOption(const char* c, const char* n, const char* d, bool v) 
+        : Option(n, d, c, "<bool>"), value(v) {}
+
+    operator    bool     (void) const { return value; }
+    operator    bool&    (void)       { return value; }
+    BoolOption& operator=(bool b)     { value = b; return *this; }
+
+    virtual bool parse(const char* str){
+        const char* span = str; 
+        
+        if (match(span, "-")){
+            bool b = !match(span, "no-");
+
+            if (strcmp(span, name) == 0){
+                value = b;
+                return true; }
+        }
+
+        return false;
+    }
+
+    virtual void help (bool verbose = false){
+
+        fprintf(stderr, "  -%s, -no-%s", name, name);
+
+        for (uint32_t i = 0; i < 32 - strlen(name)*2; i++)
+            fprintf(stderr, " ");
+
+        fprintf(stderr, " ");
+        fprintf(stderr, "(default: %s)\n", value ? "on" : "off");
+        if (verbose){
+            fprintf(stderr, "\n        %s\n", description);
+            fprintf(stderr, "\n");
+        }
+    }
+};
+
+//=================================================================================================
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
+
+#endif
diff --git a/src/prop/bvminisat/utils/ParseUtils.h b/src/prop/bvminisat/utils/ParseUtils.h
new file mode 100644
index 0000000..46f404c
--- /dev/null
+++ b/src/prop/bvminisat/utils/ParseUtils.h
@@ -0,0 +1,125 @@
+/************************************************************************************[ParseUtils.h]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef BVMinisat_ParseUtils_h
+#define BVMinisat_ParseUtils_h
+
+#include <stdlib.h>
+#include <stdio.h>
+
+//#include <zlib.h>
+#include <unistd.h>
+
+namespace CVC4 {
+namespace BVMinisat {
+
+//-------------------------------------------------------------------------------------------------
+// A simple buffered character stream class:
+
+static const int buffer_size = 1048576;
+
+
+class StreamBuffer {
+    int           in;
+    unsigned char buf[buffer_size];
+    int           pos;
+    int           size;
+
+    void assureLookahead() {
+        if (pos >= size) {
+            pos  = 0;
+            size = read(in, buf, sizeof(buf)); } }
+
+public:
+    explicit StreamBuffer(int i) : in(i), pos(0), size(0) { assureLookahead(); }
+
+    int  operator *  () const { return (pos >= size) ? EOF : buf[pos]; }
+    void operator ++ ()       { pos++; assureLookahead(); }
+    int  position    () const { return pos; }
+};
+
+
+//-------------------------------------------------------------------------------------------------
+// End-of-file detection functions for StreamBuffer and char*:
+
+
+static inline bool isEof(StreamBuffer& in) { return *in == EOF;  }
+static inline bool isEof(const char*   in) { return *in == '\0'; }
+
+//-------------------------------------------------------------------------------------------------
+// Generic parse functions parametrized over the input-stream type.
+
+
+template<class B>
+static void skipWhitespace(B& in) {
+    while ((*in >= 9 && *in <= 13) || *in == 32)
+        ++in; }
+
+
+template<class B>
+static void skipLine(B& in) {
+    for (;;){
+        if (isEof(in)) return;
+        if (*in == '\n') { ++in; return; }
+        ++in; } }
+
+
+template<class B>
+static int parseInt(B& in) {
+    int     val = 0;
+    bool    neg = false;
+    skipWhitespace(in);
+    if      (*in == '-') neg = true, ++in;
+    else if (*in == '+') ++in;
+    if (*in < '0' || *in > '9') fprintf(stderr, "PARSE ERROR! Unexpected char: %c\n", *in), exit(3);
+    while (*in >= '0' && *in <= '9')
+        val = val*10 + (*in - '0'),
+        ++in;
+    return neg ? -val : val; }
+
+
+// String matching: in case of a match the input iterator will be advanced the corresponding
+// number of characters.
+template<class B>
+static bool match(B& in, const char* str) {
+    int i;
+    for (i = 0; str[i] != '\0'; i++)
+        if (in[i] != str[i])
+            return false;
+
+    in += i;
+
+    return true; 
+}
+
+// String matching: consumes characters eagerly, but does not require random access iterator.
+template<class B>
+static bool eagerMatch(B& in, const char* str) {
+    for (; *str != '\0'; ++str, ++in)
+        if (*str != *in)
+            return false;
+    return true; }
+
+
+//=================================================================================================
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
+
+#endif
diff --git a/src/prop/bvminisat/utils/System.cc b/src/prop/bvminisat/utils/System.cc
new file mode 100644
index 0000000..dab33af
--- /dev/null
+++ b/src/prop/bvminisat/utils/System.cc
@@ -0,0 +1,100 @@
+/***************************************************************************************[System.cc]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#include "utils/System.h"
+
+#if defined(__linux__)
+
+#include <stdio.h>
+#include <stdlib.h>
+
+namespace CVC4 {
+namespace BVMinisat {
+
+// TODO: split the memory reading functions into two: one for reading high-watermark of RSS, and
+// one for reading the current virtual memory size.
+
+static inline int memReadStat(int field)
+{
+    char  name[256];
+    pid_t pid = getpid();
+    int   value;
+
+    sprintf(name, "/proc/%d/statm", pid);
+    FILE* in = fopen(name, "rb");
+    if (in == NULL) return 0;
+
+    for (; field >= 0; field--)
+        if (fscanf(in, "%d", &value) != 1)
+            printf("ERROR! Failed to parse memory statistics from \"/proc\".\n"), exit(1);
+    fclose(in);
+    return value;
+}
+
+
+static inline int memReadPeak(void)
+{
+    char  name[256];
+    pid_t pid = getpid();
+
+    sprintf(name, "/proc/%d/status", pid);
+    FILE* in = fopen(name, "rb");
+    if (in == NULL) return 0;
+
+    // Find the correct line, beginning with "VmPeak:":
+    int peak_kb = 0;
+    while (!feof(in) && fscanf(in, "VmPeak: %d kB", &peak_kb) != 1)
+        while (!feof(in) && fgetc(in) != '\n')
+            ;
+    fclose(in);
+
+    return peak_kb;
+}
+
+double BVMinisat::memUsed() { return (double)memReadStat(0) * (double)getpagesize() / (1024*1024); }
+double BVMinisat::memUsedPeak() { 
+    double peak = memReadPeak() / 1024;
+    return peak == 0 ? memUsed() : peak; }
+
+#elif defined(__FreeBSD__)
+
+double BVMinisat::memUsed(void) {
+    struct rusage ru;
+    getrusage(RUSAGE_SELF, &ru);
+    return (double)ru.ru_maxrss / 1024; }
+double MiniSat::memUsedPeak(void) { return memUsed(); }
+
+
+#elif defined(__APPLE__)
+#include <malloc/malloc.h>
+
+double BVMinisat::memUsed(void) {
+    malloc_statistics_t t;
+    malloc_zone_statistics(NULL, &t);
+    return (double)t.max_size_in_use / (1024*1024); }
+
+#else
+double BVMinisat::memUsed() { 
+    return 0; }
+#endif
+
+
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
diff --git a/src/prop/bvminisat/utils/System.h b/src/prop/bvminisat/utils/System.h
new file mode 100644
index 0000000..a065ef9
--- /dev/null
+++ b/src/prop/bvminisat/utils/System.h
@@ -0,0 +1,62 @@
+/****************************************************************************************[System.h]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef BVMinisat_System_h
+#define BVMinisat_System_h
+
+#if defined(__linux__)
+#include <fpu_control.h>
+#endif
+
+#include "mtl/IntTypes.h"
+
+//-------------------------------------------------------------------------------------------------
+
+namespace CVC4 {
+namespace BVMinisat {
+
+static inline double cpuTime(void); // CPU-time in seconds.
+extern double memUsed();            // Memory in mega bytes (returns 0 for unsupported architectures).
+extern double memUsedPeak();        // Peak-memory in mega bytes (returns 0 for unsupported architectures).
+
+} /* CVC4::BVMinisat namespace */
+} /* CVC4 namespace */
+
+//-------------------------------------------------------------------------------------------------
+// Implementation of inline functions:
+
+#if defined(_MSC_VER) || defined(__MINGW32__)
+#include <time.h>
+
+static inline double CVC4::BVMinisat::cpuTime(void) { return (double)clock() / CLOCKS_PER_SEC; }
+
+#else
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <unistd.h>
+
+static inline double CVC4::BVMinisat::cpuTime(void) {
+    struct rusage ru;
+    getrusage(RUSAGE_SELF, &ru);
+    return (double)ru.ru_utime.tv_sec + (double)ru.ru_utime.tv_usec / 1000000; }
+
+#endif
+
+#endif
diff --git a/src/prop/cnf_stream.cpp b/src/prop/cnf_stream.cpp
new file mode 100644
index 0000000..bc81980
--- /dev/null
+++ b/src/prop/cnf_stream.cpp
@@ -0,0 +1,752 @@
+/*********************                                                        */
+/*! \file cnf_stream.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A CNF converter that takes in asserts and has the side effect
+ ** of given an equisatisfiable stream of assertions to PropEngine.
+ **
+ ** A CNF converter that takes in asserts and has the side effect
+ ** of given an equisatisfiable stream of assertions to PropEngine.
+ **/
+#include "prop/cnf_stream.h"
+
+#include <queue>
+
+#include "base/cvc4_assert.h"
+#include "base/output.h"
+#include "expr/expr.h"
+#include "expr/node.h"
+#include "options/bv_options.h"
+#include "proof/clause_id.h"
+#include "proof/cnf_proof.h"
+#include "proof/proof_manager.h"
+#include "proof/sat_proof.h"
+#include "prop/minisat/minisat.h"
+#include "prop/prop_engine.h"
+#include "prop/theory_proxy.h"
+#include "smt/command.h"
+#include "smt/smt_engine_scope.h"
+#include "theory/theory.h"
+#include "theory/theory_engine.h"
+
+using namespace std;
+using namespace CVC4::kind;
+
+namespace CVC4 {
+namespace prop {
+
+CnfStream::CnfStream(SatSolver* satSolver, Registrar* registrar,
+                     context::Context* context, bool fullLitToNodeMap,
+                     std::string name)
+    : d_satSolver(satSolver),
+      d_booleanVariables(context),
+      d_nodeToLiteralMap(context),
+      d_literalToNodeMap(context),
+      d_fullLitToNodeMap(fullLitToNodeMap),
+      d_convertAndAssertCounter(0),
+      d_registrar(registrar),
+      d_name(name),
+      d_cnfProof(NULL),
+      d_removable(false) {
+}
+
+TseitinCnfStream::TseitinCnfStream(SatSolver* satSolver, Registrar* registrar,
+                                   context::Context* context,
+                                   bool fullLitToNodeMap, std::string name)
+  : CnfStream(satSolver, registrar, context, fullLitToNodeMap, name)
+{}
+
+void CnfStream::assertClause(TNode node, SatClause& c) {
+  Debug("cnf") << "Inserting into stream " << c << " node = " << node << endl;
+  if(Dump.isOn("clauses")) {
+    if(c.size() == 1) {
+      Dump("clauses") << AssertCommand(Expr(getNode(c[0]).toExpr()));
+    } else {
+      Assert(c.size() > 1);
+      NodeBuilder<> b(kind::OR);
+      for(unsigned i = 0; i < c.size(); ++i) {
+        b << getNode(c[i]);
+      }
+      Node n = b;
+      Dump("clauses") << AssertCommand(Expr(n.toExpr()));
+    }
+  }
+
+  PROOF(if (d_cnfProof) d_cnfProof->pushCurrentDefinition(node););
+
+  ClauseId clause_id = d_satSolver->addClause(c, d_removable);
+  if (clause_id == ClauseIdUndef) return; // nothing to store (no clause was added)
+
+  PROOF
+    (
+     if (d_cnfProof) {
+       Assert (clause_id != ClauseIdError);
+       d_cnfProof->registerConvertedClause(clause_id);
+       d_cnfProof->popCurrentDefinition();
+     }
+    );
+}
+
+void CnfStream::assertClause(TNode node, SatLiteral a) {
+  SatClause clause(1);
+  clause[0] = a;
+  assertClause(node, clause);
+}
+
+void CnfStream::assertClause(TNode node, SatLiteral a, SatLiteral b) {
+  SatClause clause(2);
+  clause[0] = a;
+  clause[1] = b;
+  assertClause(node, clause);
+}
+
+void CnfStream::assertClause(TNode node, SatLiteral a, SatLiteral b, SatLiteral c) {
+  SatClause clause(3);
+  clause[0] = a;
+  clause[1] = b;
+  clause[2] = c;
+  assertClause(node, clause);
+}
+
+bool CnfStream::hasLiteral(TNode n) const {
+  NodeToLiteralMap::const_iterator find = d_nodeToLiteralMap.find(n);
+  return find != d_nodeToLiteralMap.end();
+}
+
+void TseitinCnfStream::ensureLiteral(TNode n, bool noPreregistration) {
+  // These are not removable and have no proof ID
+  d_removable = false;
+
+  Debug("cnf") << "ensureLiteral(" << n << ")" << endl;
+  if(hasLiteral(n)) {
+    SatLiteral lit = getLiteral(n);
+    if(!d_literalToNodeMap.contains(lit)){
+      // Store backward-mappings
+      d_literalToNodeMap.insert(lit, n);
+      d_literalToNodeMap.insert(~lit, n.notNode());
+    }
+    return;
+  }
+
+  AlwaysAssertArgument(n.getType().isBoolean(), n,
+                       "CnfStream::ensureLiteral() requires a node of Boolean type.\n"
+                       "got node: %s\n"
+                       "its type: %s\n",
+                       n.toString().c_str(),
+                       n.getType().toString().c_str());
+
+  bool negated CVC4_UNUSED = false;
+  SatLiteral lit;
+
+  if(n.getKind() == kind::NOT) {
+    negated = true;
+    n = n[0];
+  }
+
+  if( theory::Theory::theoryOf(n) == theory::THEORY_BOOL &&
+      !n.isVar() ) {
+    // If we were called with something other than a theory atom (or
+    // Boolean variable), we get a SatLiteral that is definitionally
+    // equal to it.
+    lit = toCNF(n, false);
+
+    // Store backward-mappings
+    // 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, noPreregistration);
+  }
+
+  Assert(hasLiteral(n) && getNode(lit) == n);
+  Debug("ensureLiteral") << "CnfStream::ensureLiteral(): out lit is " << lit << std::endl;
+}
+
+SatLiteral CnfStream::newLiteral(TNode node, bool isTheoryAtom, bool preRegister, bool canEliminate) {
+  Debug("cnf") << d_name << "::newLiteral(" << node << ", " << isTheoryAtom << ")" << endl;
+  Assert(node.getKind() != kind::NOT);
+
+  // Get the literal for this node
+  SatLiteral lit;
+  if (!hasLiteral(node)) {
+    // If no literal, we'll make one
+    if (node.getKind() == kind::CONST_BOOLEAN) {
+      if (node.getConst<bool>()) {
+        lit = SatLiteral(d_satSolver->trueVar());
+      } else {
+        lit = SatLiteral(d_satSolver->falseVar());
+      }
+    } else {
+      lit = SatLiteral(d_satSolver->newVar(isTheoryAtom, preRegister, canEliminate));
+    }
+    d_nodeToLiteralMap.insert(node, lit);
+    d_nodeToLiteralMap.insert(node.notNode(), ~lit);
+  } else {
+    lit = getLiteral(node);
+  }
+
+  // If it's a theory literal, need to store it for back queries
+  if ( isTheoryAtom || d_fullLitToNodeMap || (Dump.isOn("clauses")) ) {
+    d_literalToNodeMap.insert_safe(lit, node);
+    d_literalToNodeMap.insert_safe(~lit, node.notNode());
+  }
+
+  // If a theory literal, we pre-register it
+  if (preRegister) {
+    // In case we are re-entered due to lemmas, save our state
+    bool backupRemovable = d_removable;
+    // Should be fine since cnfProof current assertion is stack based.
+    d_registrar->preRegister(node);
+    d_removable = backupRemovable;
+  }
+
+  // Here, you can have it
+  Debug("cnf") << "newLiteral(" << node << ") => " << lit << endl;
+
+  return lit;
+}
+
+TNode CnfStream::getNode(const SatLiteral& literal) {
+  Debug("cnf") << "getNode(" << literal << ")" << endl;
+  Debug("cnf") << "getNode(" << literal << ") => " << d_literalToNodeMap[literal] << endl;
+  return d_literalToNodeMap[literal];
+}
+
+void CnfStream::getBooleanVariables(std::vector<TNode>& outputVariables) const {
+  context::CDList<TNode>::const_iterator it, it_end;
+  for (it = d_booleanVariables.begin(); it != d_booleanVariables.end(); ++ it) {
+    outputVariables.push_back(*it);
+  }
+}
+
+void CnfStream::setProof(CnfProof* proof) {
+  Assert (d_cnfProof == NULL);
+  d_cnfProof = proof;
+}
+
+SatLiteral CnfStream::convertAtom(TNode node, bool noPreregistration) {
+  Debug("cnf") << "convertAtom(" << node << ")" << endl;
+
+  Assert(!hasLiteral(node), "atom already mapped!");
+
+  bool theoryLiteral = false;
+  bool canEliminate = true;
+  bool preRegister = false;
+
+  // Is this a variable add it to the list
+  if (node.isVar() && node.getKind()!=BOOLEAN_TERM_VARIABLE) {
+    d_booleanVariables.push_back(node);
+  } else {
+    theoryLiteral = true;
+    canEliminate = false;
+    preRegister = !noPreregistration;
+  }
+
+  // Make a new literal (variables are not considered theory literals)
+  SatLiteral lit = newLiteral(node, theoryLiteral, preRegister, canEliminate);
+  // Return the resulting literal
+  return lit;
+}
+
+SatLiteral CnfStream::getLiteral(TNode node) {
+  Assert(!node.isNull(), "CnfStream: can't getLiteral() of null node");
+
+  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;
+}
+
+SatLiteral TseitinCnfStream::handleXor(TNode xorNode) {
+  Assert(!hasLiteral(xorNode), "Atom already mapped!");
+  Assert(xorNode.getKind() == XOR, "Expecting an XOR expression!");
+  Assert(xorNode.getNumChildren() == 2, "Expecting exactly 2 children!");
+  Assert(!d_removable, "Removable clauses can not contain Boolean structure");
+
+  SatLiteral a = toCNF(xorNode[0]);
+  SatLiteral b = toCNF(xorNode[1]);
+
+  SatLiteral xorLit = newLiteral(xorNode);
+
+  assertClause(xorNode.negate(), a, b, ~xorLit);
+  assertClause(xorNode.negate(), ~a, ~b, ~xorLit);
+  assertClause(xorNode, a, ~b, xorLit);
+  assertClause(xorNode, ~a, b, xorLit);
+
+  return xorLit;
+}
+
+SatLiteral TseitinCnfStream::handleOr(TNode orNode) {
+  Assert(!hasLiteral(orNode), "Atom already mapped!");
+  Assert(orNode.getKind() == OR, "Expecting an OR expression!");
+  Assert(orNode.getNumChildren() > 1, "Expecting more then 1 child!");
+  Assert(!d_removable, "Removable clauses can not contain Boolean structure");
+
+  // Number of children
+  unsigned n_children = orNode.getNumChildren();
+
+  // Transform all the children first
+  TNode::const_iterator node_it = orNode.begin();
+  TNode::const_iterator node_it_end = orNode.end();
+  SatClause clause(n_children + 1);
+  for(int i = 0; node_it != node_it_end; ++node_it, ++i) {
+    clause[i] = toCNF(*node_it);
+  }
+
+  // Get the literal for this node
+  SatLiteral orLit = newLiteral(orNode);
+
+  // lit <- (a_1 | a_2 | a_3 | ... | a_n)
+  // lit | ~(a_1 | a_2 | a_3 | ... | a_n)
+  // (lit | ~a_1) & (lit | ~a_2) & (lit & ~a_3) & ... & (lit & ~a_n)
+  for(unsigned i = 0; i < n_children; ++i) {
+    assertClause(orNode, orLit, ~clause[i]);
+  }
+
+  // lit -> (a_1 | a_2 | a_3 | ... | a_n)
+  // ~lit | a_1 | a_2 | a_3 | ... | a_n
+  clause[n_children] = ~orLit;
+  // This needs to go last, as the clause might get modified by the SAT solver
+  assertClause(orNode.negate(), clause);
+
+  // Return the literal
+  return orLit;
+}
+
+SatLiteral TseitinCnfStream::handleAnd(TNode andNode) {
+  Assert(!hasLiteral(andNode), "Atom already mapped!");
+  Assert(andNode.getKind() == AND, "Expecting an AND expression!");
+  Assert(andNode.getNumChildren() > 1, "Expecting more than 1 child!");
+  Assert(!d_removable, "Removable clauses can not contain Boolean structure");
+
+  // Number of children
+  unsigned n_children = andNode.getNumChildren();
+
+  // Transform all the children first (remembering the negation)
+  TNode::const_iterator node_it = andNode.begin();
+  TNode::const_iterator node_it_end = andNode.end();
+  SatClause clause(n_children + 1);
+  for(int i = 0; node_it != node_it_end; ++node_it, ++i) {
+    clause[i] = ~toCNF(*node_it);
+  }
+
+  // Get the literal for this node
+  SatLiteral andLit = newLiteral(andNode);
+
+  // lit -> (a_1 & a_2 & a_3 & ... & a_n)
+  // ~lit | (a_1 & a_2 & a_3 & ... & a_n)
+  // (~lit | a_1) & (~lit | a_2) & ... & (~lit | a_n)
+  for(unsigned i = 0; i < n_children; ++i) {
+    assertClause(andNode.negate(), ~andLit, ~clause[i]);
+  }
+
+  // lit <- (a_1 & a_2 & a_3 & ... a_n)
+  // lit | ~(a_1 & a_2 & a_3 & ... & a_n)
+  // lit | ~a_1 | ~a_2 | ~a_3 | ... | ~a_n
+  clause[n_children] = andLit;
+  // This needs to go last, as the clause might get modified by the SAT solver
+  assertClause(andNode, clause);
+
+  return andLit;
+}
+
+SatLiteral TseitinCnfStream::handleImplies(TNode impliesNode) {
+  Assert(!hasLiteral(impliesNode), "Atom already mapped!");
+  Assert(impliesNode.getKind() == IMPLIES, "Expecting an IMPLIES expression!");
+  Assert(impliesNode.getNumChildren() == 2, "Expecting exactly 2 children!");
+  Assert(!d_removable, "Removable clauses can not contain Boolean structure");
+
+  // Convert the children to cnf
+  SatLiteral a = toCNF(impliesNode[0]);
+  SatLiteral b = toCNF(impliesNode[1]);
+
+  SatLiteral impliesLit = newLiteral(impliesNode);
+
+  // lit -> (a->b)
+  // ~lit | ~ a | b
+  assertClause(impliesNode.negate(), ~impliesLit, ~a, b);
+
+  // (a->b) -> lit
+  // ~(~a | b) | lit
+  // (a | l) & (~b | l)
+  assertClause(impliesNode, a, impliesLit);
+  assertClause(impliesNode, ~b, impliesLit);
+
+  return impliesLit;
+}
+
+
+SatLiteral TseitinCnfStream::handleIff(TNode iffNode) {
+  Assert(!hasLiteral(iffNode), "Atom already mapped!");
+  Assert(iffNode.getKind() == EQUAL, "Expecting an EQUAL expression!");
+  Assert(iffNode.getNumChildren() == 2, "Expecting exactly 2 children!");
+
+  Debug("cnf") << "handleIff(" << iffNode << ")" << endl;
+
+  // Convert the children to CNF
+  SatLiteral a = toCNF(iffNode[0]);
+  SatLiteral b = toCNF(iffNode[1]);
+
+  // Get the now literal
+  SatLiteral iffLit = newLiteral(iffNode);
+
+  // lit -> ((a-> b) & (b->a))
+  // ~lit | ((~a | b) & (~b | a))
+  // (~a | b | ~lit) & (~b | a | ~lit)
+  assertClause(iffNode.negate(), ~a, b, ~iffLit);
+  assertClause(iffNode.negate(), a, ~b, ~iffLit);
+
+  // (a<->b) -> lit
+  // ~((a & b) | (~a & ~b)) | lit
+  // (~(a & b)) & (~(~a & ~b)) | lit
+  // ((~a | ~b) & (a | b)) | lit
+  // (~a | ~b | lit) & (a | b | lit)
+  assertClause(iffNode, ~a, ~b, iffLit);
+  assertClause(iffNode, a, b, iffLit);
+
+  return iffLit;
+}
+
+
+SatLiteral TseitinCnfStream::handleNot(TNode notNode) {
+  Assert(!hasLiteral(notNode), "Atom already mapped!");
+  Assert(notNode.getKind() == NOT, "Expecting a NOT expression!");
+  Assert(notNode.getNumChildren() == 1, "Expecting exactly 1 child!");
+
+  SatLiteral notLit = ~toCNF(notNode[0]);
+
+  return notLit;
+}
+
+SatLiteral TseitinCnfStream::handleIte(TNode iteNode) {
+  Assert(iteNode.getKind() == ITE);
+  Assert(iteNode.getNumChildren() == 3);
+  Assert(!d_removable, "Removable clauses can not contain Boolean structure");
+
+  Debug("cnf") << "handleIte(" << iteNode[0] << " " << iteNode[1] << " " << iteNode[2] << ")" << endl;
+
+  SatLiteral condLit = toCNF(iteNode[0]);
+  SatLiteral thenLit = toCNF(iteNode[1]);
+  SatLiteral elseLit = toCNF(iteNode[2]);
+
+  SatLiteral iteLit = newLiteral(iteNode);
+
+  // If ITE is true then one of the branches is true and the condition
+  // implies which one
+  // lit -> (ite b t e)
+  // lit -> (t | e) & (b -> t) & (!b -> e)
+  // lit -> (t | e) & (!b | t) & (b | e)
+  // (!lit | t | e) & (!lit | !b | t) & (!lit | b | e)
+  assertClause(iteNode.negate(), ~iteLit, thenLit, elseLit);
+  assertClause(iteNode.negate(), ~iteLit, ~condLit, thenLit);
+  assertClause(iteNode.negate(), ~iteLit, condLit, elseLit);
+
+  // If ITE is false then one of the branches is false and the condition
+  // implies which one
+  // !lit -> !(ite b t e)
+  // !lit -> (!t | !e) & (b -> !t) & (!b -> !e)
+  // !lit -> (!t | !e) & (!b | !t) & (b | !e)
+  // (lit | !t | !e) & (lit | !b | !t) & (lit | b | !e)
+  assertClause(iteNode, iteLit, ~thenLit, ~elseLit);
+  assertClause(iteNode, iteLit, ~condLit, ~thenLit);
+  assertClause(iteNode, iteLit, condLit, ~elseLit);
+
+  return iteLit;
+}
+
+
+SatLiteral TseitinCnfStream::toCNF(TNode node, bool negated) {
+  Debug("cnf") << "toCNF(" << node << ", negated = " << (negated ? "true" : "false") << ")" << endl;
+
+  SatLiteral nodeLit;
+  Node negatedNode = node.notNode();
+
+  // If the non-negated node has already been translated, get the translation
+  if(hasLiteral(node)) {
+    Debug("cnf") << "toCNF(): already translated" << endl;
+    nodeLit = getLiteral(node);
+  } else {
+    // Handle each Boolean operator case
+    switch(node.getKind()) {
+    case NOT:
+      nodeLit = handleNot(node);
+      break;
+    case XOR:
+      nodeLit = handleXor(node);
+      break;
+    case ITE:
+      nodeLit = handleIte(node);
+      break;
+    case IMPLIES:
+      nodeLit = handleImplies(node);
+      break;
+    case OR:
+      nodeLit = handleOr(node);
+      break;
+    case AND:
+      nodeLit = handleAnd(node);
+      break;
+    case EQUAL:
+      if(node[0].getType().isBoolean()) {
+        nodeLit = handleIff(node);
+      } else {
+        nodeLit = convertAtom(node);
+      }
+      break;
+    default:
+      {
+        //TODO make sure this does not contain any boolean substructure
+        nodeLit = convertAtom(node);
+        //Unreachable();
+        //Node atomic = handleNonAtomicNode(node);
+        //return isCached(atomic) ? lookupInCache(atomic) : convertAtom(atomic);
+      }
+      break;
+    }
+  }
+
+  // Return the appropriate (negated) literal
+  if (!negated) return nodeLit;
+  else return ~nodeLit;
+}
+
+void TseitinCnfStream::convertAndAssertAnd(TNode node, bool negated) {
+  Assert(node.getKind() == AND);
+  if (!negated) {
+    // If the node is a conjunction, we handle each conjunct separately
+    for(TNode::const_iterator conjunct = node.begin(), node_end = node.end();
+        conjunct != node_end; ++conjunct ) {
+      PROOF(if (d_cnfProof) d_cnfProof->setCnfDependence(*conjunct, node););
+      convertAndAssert(*conjunct, false);
+    }
+  } else {
+    // If the node is a disjunction, we construct a clause and assert it
+    int nChildren = node.getNumChildren();
+    SatClause clause(nChildren);
+    TNode::const_iterator disjunct = node.begin();
+    for(int i = 0; i < nChildren; ++ disjunct, ++ i) {
+      Assert( disjunct != node.end() );
+      clause[i] = toCNF(*disjunct, true);
+    }
+    Assert(disjunct == node.end());
+    assertClause(node.negate(), clause);
+  }
+}
+
+void TseitinCnfStream::convertAndAssertOr(TNode node, bool negated) {
+  Assert(node.getKind() == OR);
+  if (!negated) {
+    // If the node is a disjunction, we construct a clause and assert it
+    int nChildren = node.getNumChildren();
+    SatClause clause(nChildren);
+    TNode::const_iterator disjunct = node.begin();
+    for(int i = 0; i < nChildren; ++ disjunct, ++ i) {
+      Assert( disjunct != node.end() );
+      clause[i] = toCNF(*disjunct, false);
+    }
+    Assert(disjunct == node.end());
+    assertClause(node, clause);
+  } else {
+    // If the node is a conjunction, we handle each conjunct separately
+    for(TNode::const_iterator conjunct = node.begin(), node_end = node.end();
+        conjunct != node_end; ++conjunct ) {
+      PROOF(if (d_cnfProof) d_cnfProof->setCnfDependence((*conjunct).negate(), node.negate()););
+      convertAndAssert(*conjunct, true);
+    }
+  }
+}
+
+void TseitinCnfStream::convertAndAssertXor(TNode node, bool negated) {
+  if (!negated) {
+    // p XOR q
+    SatLiteral p = toCNF(node[0], false);
+    SatLiteral q = toCNF(node[1], false);
+    // Construct the clauses (p => !q) and (!q => p)
+    SatClause clause1(2);
+    clause1[0] = ~p;
+    clause1[1] = ~q;
+    assertClause(node, clause1);
+    SatClause clause2(2);
+    clause2[0] = p;
+    clause2[1] = q;
+    assertClause(node, clause2);
+  } else {
+    // !(p XOR q) is the same as p <=> q
+    SatLiteral p = toCNF(node[0], false);
+    SatLiteral q = toCNF(node[1], false);
+    // Construct the clauses (p => q) and (q => p)
+    SatClause clause1(2);
+    clause1[0] = ~p;
+    clause1[1] = q;
+    assertClause(node.negate(), clause1);
+    SatClause clause2(2);
+    clause2[0] = p;
+    clause2[1] = ~q;
+    assertClause(node.negate(), clause2);
+  }
+}
+
+void TseitinCnfStream::convertAndAssertIff(TNode node, bool negated) {
+  if (!negated) {
+    // p <=> q
+    SatLiteral p = toCNF(node[0], false);
+    SatLiteral q = toCNF(node[1], false);
+    // Construct the clauses (p => q) and (q => p)
+    SatClause clause1(2);
+    clause1[0] = ~p;
+    clause1[1] = q;
+    assertClause(node, clause1);
+    SatClause clause2(2);
+    clause2[0] = p;
+    clause2[1] = ~q;
+    assertClause(node, clause2);
+  } else {
+    // !(p <=> q) is the same as p XOR q
+    SatLiteral p = toCNF(node[0], false);
+    SatLiteral q = toCNF(node[1], false);
+    // Construct the clauses (p => !q) and (!q => p)
+    SatClause clause1(2);
+    clause1[0] = ~p;
+    clause1[1] = ~q;
+    assertClause(node.negate(), clause1);
+    SatClause clause2(2);
+    clause2[0] = p;
+    clause2[1] = q;
+    assertClause(node.negate(), clause2);
+  }
+}
+
+void TseitinCnfStream::convertAndAssertImplies(TNode node, bool negated) {
+  if (!negated) {
+    // p => q
+    SatLiteral p = toCNF(node[0], false);
+    SatLiteral q = toCNF(node[1], false);
+    // Construct the clause ~p || q
+    SatClause clause(2);
+    clause[0] = ~p;
+    clause[1] = q;
+    assertClause(node, clause);
+  } else {// Construct the
+    PROOF(if (d_cnfProof) d_cnfProof->setCnfDependence(node[0], node.negate()););
+    PROOF(if (d_cnfProof) d_cnfProof->setCnfDependence(node[1].negate(), node.negate()););
+    // !(p => q) is the same as (p && ~q)
+    convertAndAssert(node[0], false);
+    convertAndAssert(node[1], true);
+  }
+}
+
+void TseitinCnfStream::convertAndAssertIte(TNode node, bool negated) {
+  // ITE(p, q, r)
+  SatLiteral p = toCNF(node[0], false);
+  SatLiteral q = toCNF(node[1], negated);
+  SatLiteral r = toCNF(node[2], negated);
+  // Construct the clauses:
+  // (p => q) and (!p => r)
+  Node nnode = node;
+  if( negated ){
+    nnode = node.negate();
+  }
+  SatClause clause1(2);
+  clause1[0] = ~p;
+  clause1[1] = q;
+  assertClause(nnode, clause1);
+  SatClause clause2(2);
+  clause2[0] = p;
+  clause2[1] = r;
+  assertClause(nnode, clause2);
+}
+
+// At the top level we must ensure that all clauses that are asserted are
+// not unit, except for the direct assertions. This allows us to remove the
+// clauses later when they are not needed anymore (lemmas for example).
+void TseitinCnfStream::convertAndAssert(TNode node,
+                                        bool removable,
+                                        bool negated,
+                                        ProofRule proof_id,
+                                        TNode from) {
+  Debug("cnf") << "convertAndAssert(" << node
+               << ", removable = " << (removable ? "true" : "false")
+               << ", negated = " << (negated ? "true" : "false") << ")" << endl;
+  d_removable = removable;
+  PROOF
+    (if (d_cnfProof) {
+      Node assertion = negated ? node.notNode() : (Node)node;
+      Node from_assertion = negated? from.notNode() : (Node) from;
+
+      if (proof_id != RULE_INVALID) {
+        d_cnfProof->pushCurrentAssertion(from.isNull() ? assertion : from_assertion);
+        d_cnfProof->registerAssertion(from.isNull() ? assertion : from_assertion, proof_id);
+      }
+      else {
+        d_cnfProof->pushCurrentAssertion(assertion);
+        d_cnfProof->registerAssertion(assertion, proof_id);
+      }
+    });
+
+  convertAndAssert(node, negated);
+  PROOF
+    (if (d_cnfProof) {
+      d_cnfProof->popCurrentAssertion();
+    });
+}
+
+void TseitinCnfStream::convertAndAssert(TNode node, bool negated) {
+  Debug("cnf") << "convertAndAssert(" << node
+               << ", negated = " << (negated ? "true" : "false") << ")" << endl;
+
+  if (d_convertAndAssertCounter % ResourceManager::getFrequencyCount() == 0) {
+    NodeManager::currentResourceManager()->spendResource(options::cnfStep());
+    d_convertAndAssertCounter = 0;
+  }
+  ++d_convertAndAssertCounter;
+
+  switch(node.getKind()) {
+  case AND:
+    convertAndAssertAnd(node, negated);
+    break;
+  case OR:
+    convertAndAssertOr(node, negated);
+    break;
+  case XOR:
+    convertAndAssertXor(node, negated);
+    break;
+  case IMPLIES:
+    convertAndAssertImplies(node, negated);
+    break;
+  case ITE:
+    convertAndAssertIte(node, negated);
+    break;
+  case NOT:
+    convertAndAssert(node[0], !negated);
+    break;
+  case EQUAL:
+    if( node[0].getType().isBoolean() ){
+      convertAndAssertIff(node, negated);
+      break;
+    }
+  default:
+  {
+    Node nnode = node;
+    if( negated ){
+      nnode = node.negate();
+    }
+    // Atoms
+    assertClause(nnode, toCNF(node, negated));
+  }
+    break;
+  }
+}
+
+}/* CVC4::prop namespace */
+}/* CVC4 namespace */
diff --git a/src/prop/cnf_stream.h b/src/prop/cnf_stream.h
new file mode 100644
index 0000000..a965018
--- /dev/null
+++ b/src/prop/cnf_stream.h
@@ -0,0 +1,340 @@
+/*********************                                                        */
+/*! \file cnf_stream.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This class transforms a sequence of formulas into clauses.
+ **
+ ** This class takes a sequence of formulas.
+ ** It outputs a stream of clauses that is propositionally
+ ** equi-satisfiable with the conjunction of the formulas.
+ ** This stream is maintained in an online fashion.
+ **
+ ** Unlike other parts of the system it is aware of the PropEngine's
+ ** internals such as the representation and translation of [??? -Chris]
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__PROP__CNF_STREAM_H
+#define __CVC4__PROP__CNF_STREAM_H
+
+#include <ext/hash_map>
+
+#include "context/cdinsert_hashmap.h"
+#include "context/cdlist.h"
+#include "expr/node.h"
+#include "proof/proof_manager.h"
+#include "prop/registrar.h"
+#include "prop/theory_proxy.h"
+#include "smt_util/lemma_channels.h"
+
+namespace CVC4 {
+
+namespace prop {
+
+class PropEngine;
+
+/**
+ * Comments for the behavior of the whole class... [??? -Chris]
+ * @author Tim King <taking at cs.nyu.edu>
+ */
+class CnfStream {
+ public:
+  /** Cache of what nodes have been registered to a literal. */
+  typedef context::CDInsertHashMap<SatLiteral, TNode, SatLiteralHashFunction>
+      LiteralToNodeMap;
+
+  /** Cache of what literals have been registered to a node. */
+  typedef context::CDInsertHashMap<Node, SatLiteral, NodeHashFunction>
+      NodeToLiteralMap;
+
+ protected:
+  /** The SAT solver we will be using */
+  SatSolver* d_satSolver;
+
+  /** Boolean variables that we translated */
+  context::CDList<TNode> d_booleanVariables;
+
+  /** Map from nodes to literals */
+  NodeToLiteralMap d_nodeToLiteralMap;
+
+  /** Map from literals to nodes */
+  LiteralToNodeMap d_literalToNodeMap;
+
+  /**
+   * True if the lit-to-Node map should be kept for all lits, not just
+   * theory lits.  This is true if e.g. replay logging is on, which
+   * dumps the Nodes corresponding to decision literals.
+   */
+  const bool d_fullLitToNodeMap;
+
+  /**
+   * Counter for resource limiting that is used to spend a resource
+   * every ResourceManager::resourceCounter calls to convertAndAssert.
+   */
+  unsigned long d_convertAndAssertCounter;
+
+  /** The "registrar" for pre-registration of terms */
+  Registrar* d_registrar;
+
+  /** The name of this CNF stream*/
+  std::string d_name;
+
+  /** Pointer to the proof corresponding to this CnfStream */
+  CnfProof* d_cnfProof;
+
+  /**
+   * How many literals were already mapped at the top-level when we
+   * tried to convertAndAssert() something.  This
+   * achieves early detection of units and leads to fewer
+   * clauses.  It's motivated by the following pattern:
+   *
+   *   ASSERT  BIG FORMULA => x
+   *   (and then later...)
+   *   ASSERT  BIG FORMULA
+   *
+   * With the first assert, BIG FORMULA is clausified, and a literal
+   * is assigned for the top level so that the final clause for the
+   * implication is "lit => x".  But without "fortunate literal
+   * detection," when BIG FORMULA is later asserted, it is clausified
+   * separately, and "lit" is never asserted as a unit clause.
+   */
+  // KEEP_STATISTIC(IntStat, d_fortunateLiterals,
+  //               "prop::CnfStream::fortunateLiterals", 0);
+
+  /** Remove nots from the node */
+  TNode stripNot(TNode node) {
+    while (node.getKind() == kind::NOT) {
+      node = node[0];
+    }
+    return node;
+  }
+
+  /**
+   * Are we asserting a removable clause (true) or a permanent clause (false).
+   * This is set at the beginning of convertAndAssert so that it doesn't
+   * need to be passed on over the stack.  Only pure clauses can be asserted
+   * as removable.
+   */
+  bool d_removable;
+
+  /**
+   * Asserts the given clause to the sat solver.
+   * @param node the node giving rise to this clause
+   * @param clause the clause to assert
+   */
+  void assertClause(TNode node, SatClause& clause);
+
+  /**
+   * Asserts the unit clause to the sat solver.
+   * @param node the node giving rise to this clause
+   * @param a the unit literal of the clause
+   */
+  void assertClause(TNode node, SatLiteral a);
+
+  /**
+   * Asserts the binary clause to the sat solver.
+   * @param node the node giving rise to this clause
+   * @param a the first literal in the clause
+   * @param b the second literal in the clause
+   */
+  void assertClause(TNode node, SatLiteral a, SatLiteral b);
+
+  /**
+   * Asserts the ternary clause to the sat solver.
+   * @param node the node giving rise to this clause
+   * @param a the first literal in the clause
+   * @param b the second literal in the clause
+   * @param c the thirs literal in the clause
+   */
+  void assertClause(TNode node, SatLiteral a, SatLiteral b, SatLiteral c);
+
+  /**
+   * Acquires a new variable from the SAT solver to represent the node
+   * and inserts the necessary data it into the mapping tables.
+   * @param node a formula
+   * @param isTheoryAtom is this a theory atom that needs to be asserted to
+   * theory.
+   * @param preRegister whether to preregister the atom with the theory
+   * @param canEliminate whether the sat solver can safely eliminate this
+   * variable.
+   * @return the literal corresponding to the formula
+   */
+  SatLiteral newLiteral(TNode node, bool isTheoryAtom = false,
+                        bool preRegister = false, bool canEliminate = true);
+
+  /**
+   * Constructs a new literal for an atom and returns it.  Calls
+   * newLiteral().
+   *
+   * @param node the node to convert; there should be no boolean
+   * structure in this expression.  Assumed to not be in the
+   * translation cache.
+   */
+  SatLiteral convertAtom(TNode node, bool noPreprocessing = false);
+
+ public:
+  /**
+   * Constructs a CnfStream that sends constructs an equi-satisfiable
+   * set of clauses and sends them to the given sat solver. This does not take
+   * ownership of satSolver, registrar, or context.
+   * @param satSolver the sat solver to use.
+   * @param registrar the entity that takes care of preregistration of Nodes.
+   * @param context the context that the CNF should respect.
+   * @param fullLitToNodeMap maintain a full SAT-literal-to-Node mapping.
+   * @param name string identifier to distinguish between different instances
+   * even for non-theory literals.
+   */
+  CnfStream(SatSolver* satSolver, Registrar* registrar,
+            context::Context* context, bool fullLitToNodeMap = false,
+            std::string name = "");
+
+  /**
+   * Destructs a CnfStream.  This implementation does nothing, but we
+   * need a virtual destructor for safety in case subclasses have a
+   * destructor.
+   */
+  virtual ~CnfStream() {}
+
+  /**
+   * Converts and asserts a formula.
+   * @param node node to convert and assert
+   * @param removable whether the sat solver can choose to remove the clauses
+   * @param negated whether we are asserting the node negated
+   */
+  virtual void convertAndAssert(TNode node, bool removable, bool negated,
+                                ProofRule proof_id,
+                                TNode from = TNode::null()) = 0;
+
+  /**
+   * Get the node that is represented by the given SatLiteral.
+   * @param literal the literal from the sat solver
+   * @return the actual node
+   */
+  TNode getNode(const SatLiteral& literal);
+
+  /**
+   * Returns true iff the node has an assigned literal (it might not be
+   * translated).
+   * @param node the node
+   */
+  bool hasLiteral(TNode node) const;
+
+  /**
+   * Ensure that the given node will have a designated SAT literal that is
+   * definitionally equal to it.  The result of this function is that the Node
+   * can be queried via getSatValue(). Essentially, this is like a "convert-but-
+   * don't-assert" version of convertAndAssert().
+   */
+  virtual void ensureLiteral(TNode n, bool noPreregistration = false) = 0;
+
+  /**
+   * Returns the literal that represents the given node in the SAT CNF
+   * representation.
+   * @param node [Presumably there are some constraints on the kind of
+   * node? E.g., it needs to be a boolean? -Chris]
+   */
+  SatLiteral getLiteral(TNode node);
+
+  /**
+   * Returns the Boolean variables from the input problem.
+   */
+  void getBooleanVariables(std::vector<TNode>& outputVariables) const;
+
+  const NodeToLiteralMap& getTranslationCache() const {
+    return d_nodeToLiteralMap;
+  }
+
+  const LiteralToNodeMap& getNodeCache() const { return d_literalToNodeMap; }
+
+  void setProof(CnfProof* proof);
+}; /* class CnfStream */
+
+/**
+ * TseitinCnfStream is based on the following recursive algorithm
+ * http://people.inf.ethz.ch/daniekro/classes/251-0247-00/f2007/readings/Tseitin70.pdf
+ * The general idea is to introduce a new literal that
+ * will be equivalent to each subexpression in the constructed equi-satisfiable
+ * formula, then substitute the new literal for the formula, and so on,
+ * recursively.
+ *
+ * This implementation does this in a single recursive pass. [??? -Chris]
+ */
+class TseitinCnfStream : public CnfStream {
+ public:
+  /**
+   * Constructs the stream to use the given sat solver.  This does not take
+   * ownership of satSolver, registrar, or context.
+   * @param satSolver the sat solver to use
+   * @param registrar the entity that takes care of pre-registration of Nodes
+   * @param context the context that the CNF should respect.
+   * @param fullLitToNodeMap maintain a full SAT-literal-to-Node mapping,
+   * even for non-theory literals
+   */
+  TseitinCnfStream(SatSolver* satSolver, Registrar* registrar,
+                   context::Context* context, bool fullLitToNodeMap = false,
+                   std::string name = "");
+
+  /**
+   * Convert a given formula to CNF and assert it to the SAT solver.
+   * @param node the formula to assert
+   * @param removable is this something that can be erased
+   * @param negated true if negated
+   */
+  void convertAndAssert(TNode node, bool removable, bool negated,
+                        ProofRule rule, TNode from = TNode::null());
+
+ private:
+  /**
+   * Same as above, except that removable is remembered.
+   */
+  void convertAndAssert(TNode node, bool negated);
+
+  // Each of these formulas handles takes care of a Node of each Kind.
+  //
+  // Each handleX(Node &n) is responsible for:
+  //   - constructing a new literal, l (if necessary)
+  //   - calling registerNode(n,l)
+  //   - adding clauses assure that l is equivalent to the Node
+  //   - calling toCNF on its children (if necessary)
+  //   - returning l
+  //
+  // handleX( n ) can assume that n is not in d_translationCache
+  SatLiteral handleNot(TNode node);
+  SatLiteral handleXor(TNode node);
+  SatLiteral handleImplies(TNode node);
+  SatLiteral handleIff(TNode node);
+  SatLiteral handleIte(TNode node);
+  SatLiteral handleAnd(TNode node);
+  SatLiteral handleOr(TNode node);
+
+  void convertAndAssertAnd(TNode node, bool negated);
+  void convertAndAssertOr(TNode node, bool negated);
+  void convertAndAssertXor(TNode node, bool negated);
+  void convertAndAssertIff(TNode node, bool negated);
+  void convertAndAssertImplies(TNode node, bool negated);
+  void convertAndAssertIte(TNode node, bool negated);
+
+  /**
+   * Transforms the node into CNF recursively.
+   * @param node the formula to transform
+   * @param negated whether the literal is negated
+   * @return the literal representing the root of the formula
+   */
+  SatLiteral toCNF(TNode node, bool negated = false);
+
+  void ensureLiteral(TNode n, bool noPreregistration = false);
+
+}; /* class TseitinCnfStream */
+
+} /* CVC4::prop namespace */
+} /* CVC4 namespace */
+
+#endif /* __CVC4__PROP__CNF_STREAM_H */
diff --git a/src/prop/cryptominisat.cpp b/src/prop/cryptominisat.cpp
new file mode 100644
index 0000000..eff079c
--- /dev/null
+++ b/src/prop/cryptominisat.cpp
@@ -0,0 +1,230 @@
+/*********************                                                        */
+/*! \file cryptominisat.cpp
+ ** \verbatim
+ ** Original author: lianah
+ ** Major contributors:
+ ** Minor contributors (to current version):
+ ** This file is part of the CVC4 prototype.
+ ** Copyright (c) 2009-2014  The Analysis of Computer Systems Group (ACSys)
+ ** Courant Institute of Mathematical Sciences
+ ** New York University
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.\endverbatim
+ **
+ ** \brief SAT Solver.
+ **
+ ** Implementation of the cryptominisat for cvc4 (bitvectors).
+ **/
+
+#include "prop/cryptominisat.h"
+
+#include "proof/clause_id.h"
+#include "proof/sat_proof.h"
+
+using namespace CVC4;
+using namespace prop;
+
+#ifdef CVC4_USE_CRYPTOMINISAT
+
+CryptoMinisatSolver::CryptoMinisatSolver(StatisticsRegistry* registry,
+                                         const std::string& name)
+: d_solver(new CMSat::SATSolver())
+, d_numVariables(0)
+, d_okay(true)
+, d_statistics(registry, name)
+{
+  d_true = newVar();
+  d_false = newVar();
+
+  std::vector<CMSat::Lit> clause(1);
+  clause[0] = CMSat::Lit(d_true, false);
+  d_solver->add_clause(clause);
+  
+  clause[0] = CMSat::Lit(d_false, true);
+  d_solver->add_clause(clause);
+}
+
+
+CryptoMinisatSolver::~CryptoMinisatSolver() {
+  delete d_solver;
+}
+
+ClauseId CryptoMinisatSolver::addXorClause(SatClause& clause,
+				       bool rhs,
+				       bool removable) {
+  Debug("sat::cryptominisat") << "Add xor clause " << clause <<" = " << rhs << "\n";
+
+  if (!d_okay) {
+    Debug("sat::cryptominisat") << "Solver unsat: not adding clause.\n";
+    return ClauseIdError;
+  }
+
+  ++(d_statistics.d_xorClausesAdded);
+  
+  // ensure all sat literals have positive polarity by pushing
+  // the negation on the result
+  std::vector<CMSat::Var> xor_clause;
+  for (unsigned i = 0; i < clause.size(); ++i) {
+    xor_clause.push_back(toInternalLit(clause[i]).var());
+    rhs ^= clause[i].isNegated();
+  }
+  bool res = d_solver->add_xor_clause(xor_clause, rhs);
+  d_okay &= res;
+  return ClauseIdError;
+}
+
+ClauseId CryptoMinisatSolver::addClause(SatClause& clause, bool removable){
+  Debug("sat::cryptominisat") << "Add clause " << clause <<"\n";
+
+  if (!d_okay) {
+    Debug("sat::cryptominisat") << "Solver unsat: not adding clause.\n";
+    return ClauseIdError;
+  }
+
+  ++(d_statistics.d_clausesAdded);
+  
+  std::vector<CMSat::Lit> internal_clause;
+  toInternalClause(clause, internal_clause);
+  bool res = d_solver->add_clause(internal_clause);
+  d_okay &= res;
+  return ClauseIdError;
+}
+
+bool CryptoMinisatSolver::ok() const {
+  return d_okay; 
+}
+
+
+SatVariable  CryptoMinisatSolver::newVar(bool isTheoryAtom, bool preRegister, bool canErase){
+  d_solver->new_var();
+  ++d_numVariables;
+  Assert (d_numVariables == d_solver->nVars());
+  return d_numVariables - 1;
+}
+
+SatVariable CryptoMinisatSolver::trueVar() {
+  return d_true;
+}
+
+SatVariable CryptoMinisatSolver::falseVar() {
+  return d_false;
+}
+
+void CryptoMinisatSolver::markUnremovable(SatLiteral lit) {
+  // cryptominisat supports dynamically adding back variables (?)
+  // so this is a no-op
+  return;
+}
+
+void CryptoMinisatSolver::interrupt(){
+  d_solver->interrupt_asap();
+}
+
+SatValue CryptoMinisatSolver::solve(){
+  TimerStat::CodeTimer codeTimer(d_statistics.d_solveTime);
+  ++d_statistics.d_statCallsToSolve;
+  return toSatLiteralValue(d_solver->solve());
+}
+
+SatValue CryptoMinisatSolver::solve(long unsigned int& resource) {
+  // CMSat::SalverConf conf = d_solver->getConf();
+  Unreachable("Not sure how to set different limits for calls to solve in Cryptominisat"); 
+  return solve();
+}
+
+SatValue CryptoMinisatSolver::value(SatLiteral l){
+  const std::vector<CMSat::lbool> model = d_solver->get_model();
+  CMSat::Var var = l.getSatVariable();
+  Assert (var < model.size());
+  CMSat::lbool value = model[var];
+  return toSatLiteralValue(value);
+}
+
+SatValue CryptoMinisatSolver::modelValue(SatLiteral l){
+  return value(l); 
+}
+
+unsigned CryptoMinisatSolver::getAssertionLevel() const {
+  Unreachable("No interface to get assertion level in Cryptominisat");
+  return -1; 
+}
+
+// converting from internal sat solver representation
+
+SatVariable CryptoMinisatSolver::toSatVariable(CMSat::Var var) {
+  if (var == CMSat::var_Undef) {
+    return undefSatVariable;
+  }
+  return SatVariable(var);
+}
+
+CMSat::Lit CryptoMinisatSolver::toInternalLit(SatLiteral lit) {
+  if (lit == undefSatLiteral) {
+    return CMSat::lit_Undef;
+  }
+  return CMSat::Lit(lit.getSatVariable(), lit.isNegated());
+}
+
+SatLiteral CryptoMinisatSolver::toSatLiteral(CMSat::Lit lit) {
+  Assert (lit != CMSat::lit_Error);
+  if (lit == CMSat::lit_Undef) {
+    return undefSatLiteral;
+  }
+
+  return SatLiteral(SatVariable(lit.var()),
+                    lit.sign());
+}
+
+SatValue CryptoMinisatSolver::toSatLiteralValue(CMSat::lbool res) {
+  if(res == CMSat::l_True) return SAT_VALUE_TRUE;
+  if(res == CMSat::l_Undef) return SAT_VALUE_UNKNOWN;
+  Assert(res == CMSat::l_False);
+  return SAT_VALUE_FALSE;
+}
+
+void CryptoMinisatSolver::toInternalClause(SatClause& clause,
+                                           std::vector<CMSat::Lit>& internal_clause) {
+  for (unsigned i = 0; i < clause.size(); ++i) {
+    internal_clause.push_back(toInternalLit(clause[i]));
+  }
+  Assert(clause.size() == internal_clause.size());
+}
+
+void CryptoMinisatSolver::toSatClause(std::vector<CMSat::Lit>& clause,
+                                       SatClause& sat_clause) {
+  for (unsigned i = 0; i < clause.size(); ++i) {
+    sat_clause.push_back(toSatLiteral(clause[i]));
+  }
+  Assert(clause.size() == sat_clause.size());
+}
+
+
+// Satistics for CryptoMinisatSolver
+
+CryptoMinisatSolver::Statistics::Statistics(StatisticsRegistry* registry,
+                                            const std::string& prefix) :
+  d_registry(registry),
+  d_statCallsToSolve("theory::bv::"+prefix+"::cryptominisat::calls_to_solve", 0),
+  d_xorClausesAdded("theory::bv::"+prefix+"::cryptominisat::xor_clauses", 0),
+  d_clausesAdded("theory::bv::"+prefix+"::cryptominisat::clauses", 0),
+  d_solveTime("theory::bv::"+prefix+"::cryptominisat::solve_time"),
+  d_registerStats(!prefix.empty())
+{
+  if (!d_registerStats)
+    return;
+
+  d_registry->registerStat(&d_statCallsToSolve);
+  d_registry->registerStat(&d_xorClausesAdded);
+  d_registry->registerStat(&d_clausesAdded);
+  d_registry->registerStat(&d_solveTime);
+}
+
+CryptoMinisatSolver::Statistics::~Statistics() {
+  if (!d_registerStats)
+    return;
+  d_registry->unregisterStat(&d_statCallsToSolve);
+  d_registry->unregisterStat(&d_xorClausesAdded);
+  d_registry->unregisterStat(&d_clausesAdded);
+  d_registry->unregisterStat(&d_solveTime);
+}
+#endif
diff --git a/src/prop/cryptominisat.h b/src/prop/cryptominisat.h
new file mode 100644
index 0000000..7ad861d
--- /dev/null
+++ b/src/prop/cryptominisat.h
@@ -0,0 +1,134 @@
+/*********************                                                        */
+/*! \file cryptominisat.h
+ ** \verbatim
+ ** Original author: lianah
+ ** Major contributors:
+ ** Minor contributors (to current version):
+ ** This file is part of the CVC4 prototype.
+ ** Copyright (c) 2009-2014  The Analysis of Computer Systems Group (ACSys)
+ ** Courant Institute of Mathematical Sciences
+ ** New York University
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.\endverbatim
+ **
+ ** \brief SAT Solver.
+ **
+ ** Implementation of the cryptominisat sat solver for cvc4 (bitvectors).
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "prop/sat_solver.h"
+
+#ifdef CVC4_USE_CRYPTOMINISAT
+#include <cryptominisat4/cryptominisat.h>
+namespace CVC4 {
+namespace prop {
+
+class CryptoMinisatSolver : public SatSolver {
+
+private:
+  CMSat::SATSolver* d_solver;
+  unsigned d_numVariables;
+  bool d_okay;
+  SatVariable d_true;
+  SatVariable d_false;
+public:
+  CryptoMinisatSolver(StatisticsRegistry* registry,
+                      const std::string& name = "");
+  virtual ~CryptoMinisatSolver();
+
+  ClauseId addClause(SatClause& clause, bool removable);
+  ClauseId addXorClause(SatClause& clause, bool rhs, bool removable);
+
+  bool nativeXor() { return true; }
+  
+  SatVariable newVar(bool isTheoryAtom = false, bool preRegister = false, bool canErase = true);
+
+  SatVariable trueVar();
+  SatVariable falseVar();
+
+  void markUnremovable(SatLiteral lit);
+
+  void interrupt();
+  
+  SatValue solve();
+  SatValue solve(long unsigned int&);
+  bool ok() const;
+  SatValue value(SatLiteral l);
+  SatValue modelValue(SatLiteral l);
+
+  unsigned getAssertionLevel() const;
+
+
+  // helper methods for converting from the internal Minisat representation
+
+  static SatVariable toSatVariable(CMSat::Var var);
+  static CMSat::Lit toInternalLit(SatLiteral lit);
+  static SatLiteral toSatLiteral(CMSat::Lit lit);
+  static SatValue toSatLiteralValue(bool res);
+  static SatValue toSatLiteralValue(CMSat::lbool res);
+
+  static void  toInternalClause(SatClause& clause, std::vector<CMSat::Lit>& internal_clause);
+  static void  toSatClause (std::vector<CMSat::Lit>& clause, SatClause& sat_clause);
+
+  class Statistics {
+  public:
+    StatisticsRegistry* d_registry;
+    IntStat d_statCallsToSolve;
+    IntStat d_xorClausesAdded;
+    IntStat d_clausesAdded;
+    TimerStat d_solveTime;
+    bool d_registerStats;
+    Statistics(StatisticsRegistry* registry,
+               const std::string& prefix);
+    ~Statistics();
+  };
+
+  Statistics d_statistics;
+};
+} // CVC4::prop
+} // CVC4
+
+#else // CVC4_USE_CRYPTOMINISAT
+
+namespace CVC4 {
+namespace prop {
+
+class CryptoMinisatSolver : public SatSolver {
+
+public:
+  CryptoMinisatSolver(StatisticsRegistry* registry,
+                      const std::string& name = "") { Unreachable(); }
+  /** Assert a clause in the solver. */
+  ClauseId addClause(SatClause& clause, bool removable) {
+    Unreachable();
+  }
+
+  /** Return true if the solver supports native xor resoning */
+  bool nativeXor() { Unreachable(); }
+
+  /** Add a clause corresponding to rhs = l1 xor .. xor ln  */
+  ClauseId addXorClause(SatClause& clause, bool rhs, bool removable) {
+    Unreachable();
+  }
+  
+  SatVariable newVar(bool isTheoryAtom, bool preRegister, bool canErase) { Unreachable(); }
+  SatVariable trueVar() { Unreachable(); }
+  SatVariable falseVar() { Unreachable(); }
+  SatValue solve() { Unreachable(); }
+  SatValue solve(long unsigned int&) { Unreachable(); }
+  void interrupt() { Unreachable(); }
+  SatValue value(SatLiteral l) { Unreachable(); }
+  SatValue modelValue(SatLiteral l) { Unreachable(); }
+  unsigned getAssertionLevel() const { Unreachable(); }
+  bool ok() const { return false;};
+  
+
+};/* class CryptoMinisatSolver */
+} // CVC4::prop
+} // CVC4
+
+#endif // CVC4_USE_CRYPTOMINISAT
diff --git a/src/prop/minisat/LICENSE b/src/prop/minisat/LICENSE
new file mode 100644
index 0000000..22816ff
--- /dev/null
+++ b/src/prop/minisat/LICENSE
@@ -0,0 +1,21 @@
+MiniSat -- Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+           Copyright (c) 2007-2010  Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/src/prop/minisat/Makefile b/src/prop/minisat/Makefile
new file mode 100644
index 0000000..3561cbc
--- /dev/null
+++ b/src/prop/minisat/Makefile
@@ -0,0 +1,848 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# src/prop/minisat/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+VPATH = ../../../../../../src/prop/minisat
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/cvc4
+pkgincludedir = $(includedir)/cvc4
+pkglibdir = $(libdir)/cvc4
+pkglibexecdir = $(libexecdir)/cvc4
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-pc-linux-gnu
+host_triplet = x86_64-pc-linux-gnu
+target_triplet = x86_64-pc-linux-gnu
+subdir = src/prop/minisat
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libminisat_la_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am_libminisat_la_OBJECTS = core/Solver.lo simp/SimpSolver.lo \
+	minisat.lo
+libminisat_la_OBJECTS = $(am_libminisat_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_$(V))
+am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_$(V))
+am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(libminisat_la_SOURCES)
+DIST_SOURCES = $(libminisat_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp \
+	README
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = 
+ABC_LDFLAGS = 
+ABC_LIBS = 
+ACLOCAL = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/missing aclocal-1.15
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 0
+ANTLR = /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/antlr-3.4/bin/antlr3
+ANTLR_HOME = 
+ANTLR_INCLUDES = -I/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/antlr-3.4/include
+ANTLR_LDFLAGS = -L/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/antlr-3.4/lib -lantlr3c
+AR = ar
+AUTOCONF = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/missing autoconf
+AUTOHEADER = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/missing autoheader
+AUTOMAKE = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/missing automake-1.15
+AWK = mawk
+BOOST_CPPFLAGS =  -pthread
+BOOST_LDPATH = /usr/local/lib
+BOOST_ROOT = 
+BOOST_SYSTEM_LDFLAGS = -L/usr/local/lib -Wl,-rpath -Wl,/usr/local/lib
+BOOST_SYSTEM_LDPATH = /usr/local/lib
+BOOST_SYSTEM_LIBS = -lboost_system
+BOOST_THREAD_LDFLAGS = -L/usr/local/lib -Wl,-rpath -Wl,/usr/local/lib
+BOOST_THREAD_LDPATH = /usr/local/lib
+BOOST_THREAD_LIBS = -lboost_thread -lboost_system -pthread
+BOOST_THREAD_WIN32_LDFLAGS = 
+BOOST_THREAD_WIN32_LDPATH = 
+BOOST_THREAD_WIN32_LIBS = 
+BUILDING_SHARED = 1
+BUILDING_STATIC = 0
+CAMLP4O = 
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -O3 -ggdb3 -Wno-deprecated -fexceptions
+CLN_CFLAGS = 
+CLN_LIBS = 
+CPP = gcc -E
+CPPFLAGS =  -pthread -DCVC4_PROOF -DCVC4_STATISTICS_ON -DNDEBUG -DCVC4_DUMPING
+CRYPTOMINISAT_HOME = 
+CRYPTOMINISAT_LDFLAGS = 
+CRYPTOMINISAT_LIBS = 
+CSHARP_CPPFLAGS = 
+CVC4_BINDINGS_LIBRARY_VERSION = 3:0:0
+CVC4_BUILD_LIBCOMPAT = yes
+CVC4_COMPAT_LIBRARY_VERSION = 3:0:0
+CVC4_HAS_THREADS = 1
+CVC4_JAVA_MODULE_EXT = .so
+CVC4_LANGUAGE_BINDINGS = 
+CVC4_LIBRARY_VERSION = 3:0:0
+CVC4_NEED_INT64_T_OVERLOADS = 0
+CVC4_PARSER_LIBRARY_VERSION = 3:0:0
+CVC4_TLS = __thread
+CVC4_TLS_SUPPORTED = 1
+CVC4_USE_CLN_IMP = 0
+CVC4_USE_GMP_IMP = 1
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -O3 -ggdb3 -Wno-deprecated
+CXXTEST = /usr/bin
+CXXTESTGEN = /usr/bin/cxxtestgen
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DISTCHECK_CONFIGURE_FLAGS =  '--with-boost='
+DLLTOOL = false
+DOXYGEN_EXTRACT_PRIVATE = NO
+DOXYGEN_EXTRACT_STATIC = NO
+DOXYGEN_PAPER_SIZE = 
+DSYMUTIL = 
+DUMPBIN = 
+DX_CONFIG = config/doxygen.cfg
+DX_DOCDIR = ../../../doc/doxygen
+DX_DOT = /usr/bin/dot
+DX_DOXYGEN = /usr/bin/doxygen
+DX_DVIPS = 
+DX_EGREP = /bin/egrep
+DX_ENV =  SRCDIR='../../..' PROJECT='cvc4' DOCDIR='../../../doc/doxygen' VERSION='1.5-prerelease' PERL_PATH='/usr/bin/perl' HAVE_DOT='YES' DOT_PATH='/usr/bin' GENERATE_MAN='NO' GENERATE_RTF='NO' GENERATE_XML='NO' GENERATE_HTMLHELP='NO' GENERATE_CHI='NO' GENERATE_HTML='YES' GENERATE_LATEX='YES'
+DX_FLAG_DX_CURRENT_FEATURE = 
+DX_FLAG_chi = 0
+DX_FLAG_chm = 0
+DX_FLAG_doc = 1
+DX_FLAG_dot = 1
+DX_FLAG_html = 1
+DX_FLAG_man = 0
+DX_FLAG_pdf = 1
+DX_FLAG_ps = 0
+DX_FLAG_rtf = 0
+DX_FLAG_xml = 0
+DX_HHC = 
+DX_LATEX = 
+DX_MAKEINDEX = /usr/bin/makeindex
+DX_PDFLATEX = /usr/bin/pdflatex
+DX_PERL = /usr/bin/perl
+DX_PROJECT = cvc4
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+FGREP = /bin/grep -F
+FLAG_VISIBILITY_HIDDEN = -fvisibility=hidden
+FNO_STRICT_ALIASING = -fno-strict-aliasing
+GLPK_HOME = 
+GLPK_LDFLAGS = 
+GLPK_LIBS = 
+GREP = /bin/grep
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+JAR = jar
+JAVA = java
+JAVAC = javac
+JAVAH = javah
+JAVA_CPPFLAGS = 
+LD = /usr/bin/ld -m elf_x86_64
+LDFLAGS = 
+LIBOBJS =  ${LIBOBJDIR}strtok_r$U.o ${LIBOBJDIR}ffs$U.o
+LIBS = -lgmp 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LIPO = 
+LN_S = ln -s
+LTLIBOBJS =  ${LIBOBJDIR}strtok_r$U.lo ${LIBOBJDIR}ffs$U.lo
+LT_SYS_LIBRARY_PATH = 
+MAINT = 
+MAKEINFO = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/missing makeinfo
+MANIFEST_TOOL = :
+MAN_DATE = March 2017
+MKDIR_P = /bin/mkdir -p
+NM = /usr/bin/nm -B
+NMEDIT = 
+OBJDUMP = objdump
+OBJEXT = o
+OCAMLC = 
+OCAMLFIND = 
+OCAMLMKTOP = 
+OTOOL = 
+OTOOL64 = 
+PACKAGE = cvc4
+PACKAGE_BUGREPORT = cvc-bugs at cs.nyu.edu
+PACKAGE_NAME = cvc4
+PACKAGE_STRING = cvc4 1.5-prerelease
+PACKAGE_TARNAME = cvc4
+PACKAGE_URL = 
+PACKAGE_VERSION = 1.5-prerelease
+PATH_SEPARATOR = :
+PERL = perl
+PERL_CPPFLAGS = 
+PHP_CPPFLAGS = 
+PKG_CONFIG = 
+PYTHON = python
+PYTHON_CONFIG = 
+PYTHON_CXXFLAGS = 
+PYTHON_EXEC_PREFIX = 
+PYTHON_INCLUDE = 
+PYTHON_PLATFORM = 
+PYTHON_PREFIX = 
+PYTHON_VERSION = 
+RANLIB = ranlib
+READLINE_LIBS = 
+RUBY_CPPFLAGS = 
+RUN_REGRESSION_ARGS = --proof
+SED = /bin/sed
+SET_MAKE = 
+SHELL = /bin/bash
+STATIC_BINARY = 0
+STRIP = strip
+SWIG = swig
+TCL_CPPFLAGS = 
+TESTS_ENVIRONMENT = 
+TEST_CPPFLAGS = 
+TEST_CXXFLAGS = 
+TEST_LDFLAGS = 
+VERSION = 1.5-prerelease
+WERROR = -Werror
+WNO_CONVERSION_NULL = -Wno-conversion-null
+WNO_PARENTHESES = -Wno-parentheses
+WNO_TAUTOLOGICAL_COMPARE = -Wno-tautological-compare
+WNO_UNINITIALIZED = -Wno-uninitialized
+WNO_UNUSED_VARIABLE = -Wno-unused-variable
+abs_builddir = /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/builds/x86_64-pc-linux-gnu/production/src/prop/minisat
+abs_srcdir = /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/builds/x86_64-pc-linux-gnu/production/../../../src/prop/minisat
+abs_top_builddir = /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/builds/x86_64-pc-linux-gnu/production
+abs_top_srcdir = /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/builds/x86_64-pc-linux-gnu/production/../../..
+ac_ct_AR = ar
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DUMPBIN = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = tar --format=posix -chf - "$$tardir"
+am__untar = tar -xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-pc-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = pc
+builddir = .
+cvc4_LDFLAGS = 
+cvc4_config_cmdline = --with-antlr-dir=/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/antlr-3.4 ANTLR=/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/antlr-3.4/bin/antlr3
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-pc-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = pc
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mk_empty = 
+mk_if = if
+mk_include = include
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pcvc4_LDFLAGS = 
+pdfdir = ${docdir}
+pkgpyexecdir = 
+pkgpythondir = 
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+pyexecdir = 
+pythondir = 
+runstatedir = ${localstatedir}/run
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = ../../../../../../src/prop/minisat
+subdirs =  proofs/lfsc_checker
+sysconfdir = ${prefix}/etc
+target = x86_64-pc-linux-gnu
+target_alias = 
+target_cpu = x86_64
+target_os = linux-gnu
+target_vendor = pc
+top_build_prefix = ../../../
+top_builddir = ../../..
+top_srcdir = ../../../../../..
+zz_cvc4_use_personal_make_rules = 
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4LIB \
+	-D __STDC_LIMIT_MACROS \
+	-D __STDC_FORMAT_MACROS \
+	-I./../.. -I../../../../../../src/prop/minisat/../../include -I../../../../../../src/prop/minisat/ -I../../../../../../src/prop/minisat/../..
+
+AM_CXXFLAGS = -Wall -Wno-parentheses -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
+noinst_LTLIBRARIES = libminisat.la
+libminisat_la_SOURCES = \
+	core/Dimacs.h \
+	core/Solver.cc \
+	core/Solver.h \
+	core/SolverTypes.h \
+	simp/SimpSolver.cc \
+	simp/SimpSolver.h \
+	mtl/Alg.h \
+	mtl/Alloc.h \
+	mtl/Heap.h \
+	mtl/IntTypes.h \
+	mtl/Map.h \
+	mtl/Queue.h \
+	mtl/Sort.h \
+	mtl/Vec.h \
+	mtl/XAlloc.h \
+	utils/Options.h \
+	minisat.cpp \
+	minisat.h
+
+EXTRA_DIST = \
+	core/Main.cc \
+	core/Makefile \
+	doc/ReleaseNotes-2.2.0.txt \
+	simp/Main.cc \
+	simp/Makefile \
+	README \
+	LICENSE \
+	mtl/config.mk \
+	mtl/template.mk \
+	utils/Options.cc \
+	utils/ParseUtils.h \
+	utils/System.h \
+	utils/System.cc \
+	Makefile
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cc .cpp .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/prop/minisat/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/prop/minisat/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+core/$(am__dirstamp):
+	@$(MKDIR_P) core
+	@: > core/$(am__dirstamp)
+core/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) core/$(DEPDIR)
+	@: > core/$(DEPDIR)/$(am__dirstamp)
+core/Solver.lo: core/$(am__dirstamp) core/$(DEPDIR)/$(am__dirstamp)
+simp/$(am__dirstamp):
+	@$(MKDIR_P) simp
+	@: > simp/$(am__dirstamp)
+simp/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) simp/$(DEPDIR)
+	@: > simp/$(DEPDIR)/$(am__dirstamp)
+simp/SimpSolver.lo: simp/$(am__dirstamp) \
+	simp/$(DEPDIR)/$(am__dirstamp)
+
+libminisat.la: $(libminisat_la_OBJECTS) $(libminisat_la_DEPENDENCIES) $(EXTRA_libminisat_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK)  $(libminisat_la_OBJECTS) $(libminisat_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+	-rm -f core/*.$(OBJEXT)
+	-rm -f core/*.lo
+	-rm -f simp/*.$(OBJEXT)
+	-rm -f simp/*.lo
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/minisat.Plo
+include core/$(DEPDIR)/Solver.Plo
+include simp/$(DEPDIR)/SimpSolver.Plo
+
+.cc.o:
+	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cc.lo:
+	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Plo
+#	$(AM_V_CXX)source='$<' object='$@' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(LTCXXCOMPILE) -c -o $@ $<
+
+.cpp.o:
+	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Plo
+#	$(AM_V_CXX)source='$<' object='$@' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+	-rm -rf core/.libs core/_libs
+	-rm -rf simp/.libs simp/_libs
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f core/$(DEPDIR)/$(am__dirstamp)
+	-rm -f core/$(am__dirstamp)
+	-rm -f simp/$(DEPDIR)/$(am__dirstamp)
+	-rm -f simp/$(am__dirstamp)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR) core/$(DEPDIR) simp/$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR) core/$(DEPDIR) simp/$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/prop/minisat/Makefile.am b/src/prop/minisat/Makefile.am
new file mode 100644
index 0000000..4c11098
--- /dev/null
+++ b/src/prop/minisat/Makefile.am
@@ -0,0 +1,44 @@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4LIB \
+	-D __STDC_LIMIT_MACROS \
+	-D __STDC_FORMAT_MACROS \
+	-I at builddir@/../.. -I at srcdir@/../../include -I at srcdir@/ -I at srcdir@/../..
+AM_CXXFLAGS = -Wall -Wno-parentheses -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
+
+noinst_LTLIBRARIES = libminisat.la
+libminisat_la_SOURCES = \
+	core/Dimacs.h \
+	core/Solver.cc \
+	core/Solver.h \
+	core/SolverTypes.h \
+	simp/SimpSolver.cc \
+	simp/SimpSolver.h \
+	mtl/Alg.h \
+	mtl/Alloc.h \
+	mtl/Heap.h \
+	mtl/IntTypes.h \
+	mtl/Map.h \
+	mtl/Queue.h \
+	mtl/Sort.h \
+	mtl/Vec.h \
+	mtl/XAlloc.h \
+	utils/Options.h \
+	minisat.cpp \
+	minisat.h
+
+EXTRA_DIST = \
+	core/Main.cc \
+	core/Makefile \
+	doc/ReleaseNotes-2.2.0.txt \
+	simp/Main.cc \
+	simp/Makefile \
+	README \
+	LICENSE \
+	mtl/config.mk \
+	mtl/template.mk \
+	utils/Options.cc \
+	utils/ParseUtils.h \
+	utils/System.h \
+	utils/System.cc \
+	Makefile
+
diff --git a/src/prop/minisat/Makefile.in b/src/prop/minisat/Makefile.in
new file mode 100644
index 0000000..f896bc0
--- /dev/null
+++ b/src/prop/minisat/Makefile.in
@@ -0,0 +1,848 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = src/prop/minisat
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libminisat_la_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am_libminisat_la_OBJECTS = core/Solver.lo simp/SimpSolver.lo \
+	minisat.lo
+libminisat_la_OBJECTS = $(am_libminisat_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(libminisat_la_SOURCES)
+DIST_SOURCES = $(libminisat_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp \
+	README
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4LIB \
+	-D __STDC_LIMIT_MACROS \
+	-D __STDC_FORMAT_MACROS \
+	-I at builddir@/../.. -I at srcdir@/../../include -I at srcdir@/ -I at srcdir@/../..
+
+AM_CXXFLAGS = -Wall -Wno-parentheses -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
+noinst_LTLIBRARIES = libminisat.la
+libminisat_la_SOURCES = \
+	core/Dimacs.h \
+	core/Solver.cc \
+	core/Solver.h \
+	core/SolverTypes.h \
+	simp/SimpSolver.cc \
+	simp/SimpSolver.h \
+	mtl/Alg.h \
+	mtl/Alloc.h \
+	mtl/Heap.h \
+	mtl/IntTypes.h \
+	mtl/Map.h \
+	mtl/Queue.h \
+	mtl/Sort.h \
+	mtl/Vec.h \
+	mtl/XAlloc.h \
+	utils/Options.h \
+	minisat.cpp \
+	minisat.h
+
+EXTRA_DIST = \
+	core/Main.cc \
+	core/Makefile \
+	doc/ReleaseNotes-2.2.0.txt \
+	simp/Main.cc \
+	simp/Makefile \
+	README \
+	LICENSE \
+	mtl/config.mk \
+	mtl/template.mk \
+	utils/Options.cc \
+	utils/ParseUtils.h \
+	utils/System.h \
+	utils/System.cc \
+	Makefile
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cc .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/prop/minisat/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/prop/minisat/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+core/$(am__dirstamp):
+	@$(MKDIR_P) core
+	@: > core/$(am__dirstamp)
+core/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) core/$(DEPDIR)
+	@: > core/$(DEPDIR)/$(am__dirstamp)
+core/Solver.lo: core/$(am__dirstamp) core/$(DEPDIR)/$(am__dirstamp)
+simp/$(am__dirstamp):
+	@$(MKDIR_P) simp
+	@: > simp/$(am__dirstamp)
+simp/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) simp/$(DEPDIR)
+	@: > simp/$(DEPDIR)/$(am__dirstamp)
+simp/SimpSolver.lo: simp/$(am__dirstamp) \
+	simp/$(DEPDIR)/$(am__dirstamp)
+
+libminisat.la: $(libminisat_la_OBJECTS) $(libminisat_la_DEPENDENCIES) $(EXTRA_libminisat_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK)  $(libminisat_la_OBJECTS) $(libminisat_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+	-rm -f core/*.$(OBJEXT)
+	-rm -f core/*.lo
+	-rm -f simp/*.$(OBJEXT)
+	-rm -f simp/*.lo
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/minisat.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at core/$(DEPDIR)/Solver.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at simp/$(DEPDIR)/SimpSolver.Plo at am__quote@
+
+.cc.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cc.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+	-rm -rf core/.libs core/_libs
+	-rm -rf simp/.libs simp/_libs
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f core/$(DEPDIR)/$(am__dirstamp)
+	-rm -f core/$(am__dirstamp)
+	-rm -f simp/$(DEPDIR)/$(am__dirstamp)
+	-rm -f simp/$(am__dirstamp)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR) core/$(DEPDIR) simp/$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR) core/$(DEPDIR) simp/$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/prop/minisat/README b/src/prop/minisat/README
new file mode 100644
index 0000000..e5e5617
--- /dev/null
+++ b/src/prop/minisat/README
@@ -0,0 +1,24 @@
+================================================================================
+DIRECTORY OVERVIEW:
+
+mtl/            Mini Template Library
+utils/          Generic helper code (I/O, Parsing, CPU-time, etc)
+core/           A core version of the solver
+simp/           An extended solver with simplification capabilities
+README
+LICENSE
+
+================================================================================
+BUILDING: (release version: without assertions, statically linked, etc)
+
+export MROOT=<minisat-dir>              (or setenv in cshell)
+cd { core | simp }
+gmake rs
+cp minisat_static <install-dir>/minisat
+
+================================================================================
+EXAMPLES:
+
+Run minisat with same heuristics as version 2.0:
+
+> minisat <cnf-file> -no-luby -rinc=1.5 -phase-saving=0 -rnd-freq=0.02
diff --git a/src/prop/minisat/core/Dimacs.h b/src/prop/minisat/core/Dimacs.h
new file mode 100644
index 0000000..e4728f6
--- /dev/null
+++ b/src/prop/minisat/core/Dimacs.h
@@ -0,0 +1,91 @@
+/****************************************************************************************[Dimacs.h]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef Minisat_Dimacs_h
+#define Minisat_Dimacs_h
+
+#include <stdio.h>
+
+#include "prop/minisat/utils/ParseUtils.h"
+#include "prop/minisat/core/SolverTypes.h"
+
+namespace CVC4 {
+namespace Minisat {
+
+//=================================================================================================
+// DIMACS Parser:
+
+template<class B, class Solver>
+static void readClause(B& in, Solver& S, vec<Lit>& lits) {
+    int     parsed_lit, var;
+    lits.clear();
+    for (;;){
+        parsed_lit = parseInt(in);
+        if (parsed_lit == 0) break;
+        var = abs(parsed_lit)-1;
+        while (var >= S.nVars()) S.newVar();
+        lits.push( (parsed_lit > 0) ? mkLit(var) : ~mkLit(var) );
+    }
+}
+
+template<class B, class Solver>
+static void parse_DIMACS_main(B& in, Solver& S) {
+    vec<Lit> lits;
+    int vars    = 0;
+    int clauses = 0;
+    int cnt     = 0;
+    for (;;){
+        skipWhitespace(in);
+        if (*in == EOF) break;
+        else if (*in == 'p'){
+            if (eagerMatch(in, "p cnf")){
+                vars    = parseInt(in);
+                clauses = parseInt(in);
+                // SATRACE'06 hack
+                // if (clauses > 4000000)
+                //     S.eliminate(true);
+            }else{
+                printf("PARSE ERROR! Unexpected char: %c\n", *in), exit(3);
+            }
+        } else if (*in == 'c' || *in == 'p')
+            skipLine(in);
+        else{
+            cnt++;
+            readClause(in, S, lits);
+            S.addClause_(lits); }
+    }
+    if (vars != S.nVars())
+        fprintf(stderr, "WARNING! DIMACS header mismatch: wrong number of variables.\n");
+    if (cnt  != clauses)
+        fprintf(stderr, "WARNING! DIMACS header mismatch: wrong number of clauses.\n");
+}
+
+// Inserts problem into solver.
+//
+template<class Solver>
+static void parse_DIMACS(gzFile input_stream, Solver& S) {
+    StreamBuffer in(input_stream);
+    parse_DIMACS_main(in, S); }
+
+//=================================================================================================
+}
+}
+
+#endif
diff --git a/src/prop/minisat/core/Main.cc b/src/prop/minisat/core/Main.cc
new file mode 100644
index 0000000..64a2a1c
--- /dev/null
+++ b/src/prop/minisat/core/Main.cc
@@ -0,0 +1,197 @@
+/*****************************************************************************************[Main.cc]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#include <errno.h>
+
+#include <signal.h>
+#include <zlib.h>
+
+#include "prop/minisat/utils/System.h"
+#include "prop/minisat/utils/ParseUtils.h"
+#include "prop/minisat/utils/Options.h"
+#include "prop/minisat/core/Dimacs.h"
+#include "prop/minisat/core/Solver.h"
+
+//=================================================================================================
+
+
+namespace CVC4 {
+namespace Minisat {
+void printStats(Solver& solver)
+{
+    double cpu_time = cpuTime();
+    double mem_used = memUsedPeak();
+    printf("restarts              : %"PRIu64"\n", solver.starts);
+    printf("conflicts             : %-12"PRIu64"   (%.0f /sec)\n", solver.conflicts   , solver.conflicts   /cpu_time);
+    printf("decisions             : %-12"PRIu64"   (%4.2f %% random) (%.0f /sec)\n", solver.decisions, (float)solver.rnd_decisions*100 / (float)solver.decisions, solver.decisions   /cpu_time);
+    printf("propagations          : %-12"PRIu64"   (%.0f /sec)\n", solver.propagations, solver.propagations/cpu_time);
+    printf("conflict literals     : %-12"PRIu64"   (%4.2f %% deleted)\n", solver.tot_literals, (solver.max_literals - solver.tot_literals)*100 / (double)solver.max_literals);
+    if (mem_used != 0) printf("Memory used           : %.2f MB\n", mem_used);
+    printf("CPU time              : %g s\n", cpu_time);
+}
+
+
+static Solver* solver;
+// Terminate by notifying the solver and back out gracefully. This is mainly to have a test-case
+// for this feature of the Solver as it may take longer than an immediate call to '_exit()'.
+static void SIGINT_interrupt(int signum) { solver->interrupt(); }
+
+// Note that '_exit()' rather than 'exit()' has to be used. The reason is that 'exit()' calls
+// destructors and may cause deadlocks if a malloc/free function happens to be running (these
+// functions are guarded by locks for multithreaded use).
+static void SIGINT_exit(int signum) {
+    printf("\n"); printf("*** INTERRUPTED ***\n");
+    if (solver->verbosity > 0){
+        printStats(*solver);
+        printf("\n"); printf("*** INTERRUPTED ***\n"); }
+    _exit(1); }
+
+} /* CVC4::Minisat namespace */
+} /* CVC4 namespace */
+
+
+//=================================================================================================
+// Main:
+
+
+int main(int argc, char** argv)
+{
+  using namespace CVC4;
+  using namespace CVC4::Minisat;
+    try {
+        setUsageHelp("USAGE: %s [options] <input-file> <result-output-file>\n\n  where input may be either in plain or gzipped DIMACS.\n");
+        // printf("This is MiniSat 2.0 beta\n");
+        
+#if defined(__linux__)
+        fpu_control_t oldcw, newcw;
+        _FPU_GETCW(oldcw); newcw = (oldcw & ~_FPU_EXTENDED) | _FPU_DOUBLE; _FPU_SETCW(newcw);
+        printf("WARNING: for repeatability, setting FPU to use double precision\n");
+#endif
+        // Extra options:
+        //
+        IntOption    verb   ("MAIN", "verb",   "Verbosity level (0=silent, 1=some, 2=more).", 1, IntRange(0, 2));
+        IntOption    cpu_lim("MAIN", "cpu-lim","Limit on CPU time allowed in seconds.\n", INT32_MAX, IntRange(0, INT32_MAX));
+        IntOption    mem_lim("MAIN", "mem-lim","Limit on memory usage in megabytes.\n", INT32_MAX, IntRange(0, INT32_MAX));
+        
+        parseOptions(argc, argv, true);
+
+        Solver S;
+        double initial_time = cpuTime();
+
+        S.verbosity = verb;
+        
+        solver = &S;
+        // Use signal handlers that forcibly quit until the solver will be able to respond to
+        // interrupts:
+        signal(SIGINT, SIGINT_exit);
+        signal(SIGXCPU,SIGINT_exit);
+
+        // Set limit on CPU-time:
+        if (cpu_lim != INT32_MAX){
+            rlimit rl;
+            getrlimit(RLIMIT_CPU, &rl);
+            if (rl.rlim_max == RLIM_INFINITY || (rlim_t)cpu_lim < rl.rlim_max){
+                rl.rlim_cur = cpu_lim;
+                if (setrlimit(RLIMIT_CPU, &rl) == -1)
+                    printf("WARNING! Could not set resource limit: CPU-time.\n");
+            } }
+
+        // Set limit on virtual memory:
+        if (mem_lim != INT32_MAX){
+            rlim_t new_mem_lim = (rlim_t)mem_lim * 1024*1024;
+            rlimit rl;
+            getrlimit(RLIMIT_AS, &rl);
+            if (rl.rlim_max == RLIM_INFINITY || new_mem_lim < rl.rlim_max){
+                rl.rlim_cur = new_mem_lim;
+                if (setrlimit(RLIMIT_AS, &rl) == -1)
+                    printf("WARNING! Could not set resource limit: Virtual memory.\n");
+            } }
+        
+        if (argc == 1)
+            printf("Reading from standard input... Use '--help' for help.\n");
+        
+        gzFile in = (argc == 1) ? gzdopen(0, "rb") : gzopen(argv[1], "rb");
+        if (in == NULL)
+            printf("ERROR! Could not open file: %s\n", argc == 1 ? "<stdin>" : argv[1]), exit(1);
+        
+        if (S.verbosity > 0){
+            printf("============================[ Problem Statistics ]=============================\n");
+            printf("|                                                                             |\n"); }
+        
+        parse_DIMACS(in, S);
+        gzclose(in);
+        FILE* res = (argc >= 3) ? fopen(argv[2], "wb") : NULL;
+        
+        if (S.verbosity > 0){
+            printf("|  Number of variables:  %12d                                         |\n", S.nVars());
+            printf("|  Number of clauses:    %12d                                         |\n", S.nClauses()); }
+        
+        double parsed_time = cpuTime();
+        if (S.verbosity > 0){
+            printf("|  Parse time:           %12.2f s                                       |\n", parsed_time - initial_time);
+            printf("|                                                                             |\n"); }
+ 
+        // Change to signal-handlers that will only notify the solver and allow it to terminate
+        // voluntarily:
+        signal(SIGINT, SIGINT_interrupt);
+        signal(SIGXCPU,SIGINT_interrupt);
+       
+        if (!S.simplify()){
+            if (res != NULL) fprintf(res, "UNSAT\n"), fclose(res);
+            if (S.verbosity > 0){
+                printf("===============================================================================\n");
+                printf("Solved by unit propagation\n");
+                printStats(S);
+                printf("\n"); }
+            printf("UNSATISFIABLE\n");
+            exit(20);
+        }
+        
+        vec<Lit> dummy;
+        lbool ret = S.solveLimited(dummy);
+        if (S.verbosity > 0){
+            printStats(S);
+            printf("\n"); }
+        printf(ret == l_True ? "SATISFIABLE\n" : ret == l_False ? "UNSATISFIABLE\n" : "INDETERMINATE\n");
+        if (res != NULL){
+            if (ret == l_True){
+                fprintf(res, "SAT\n");
+                for (int i = 0; i < S.nVars(); i++)
+                    if (S.model[i] != l_Undef)
+                        fprintf(res, "%s%s%d", (i==0)?"":" ", (S.model[i]==l_True)?"":"-", i+1);
+                fprintf(res, " 0\n");
+            }else if (ret == l_False)
+                fprintf(res, "UNSAT\n");
+            else
+                fprintf(res, "INDET\n");
+            fclose(res);
+        }
+        
+#ifdef NDEBUG
+        exit(ret == l_True ? 10 : ret == l_False ? 20 : 0);     // (faster than "return", which will invoke the destructor for 'Solver')
+#else
+        return (ret == l_True ? 10 : ret == l_False ? 20 : 0);
+#endif
+    } catch (OutOfMemoryException&){
+        printf("===============================================================================\n");
+        printf("INDETERMINATE\n");
+        exit(0);
+    }
+}
diff --git a/src/prop/minisat/core/Makefile b/src/prop/minisat/core/Makefile
new file mode 100644
index 0000000..5de1f72
--- /dev/null
+++ b/src/prop/minisat/core/Makefile
@@ -0,0 +1,4 @@
+EXEC      = minisat
+DEPDIR    = mtl utils
+
+include $(MROOT)/mtl/template.mk
diff --git a/src/prop/minisat/core/Solver.cc b/src/prop/minisat/core/Solver.cc
new file mode 100644
index 0000000..d898b66
--- /dev/null
+++ b/src/prop/minisat/core/Solver.cc
@@ -0,0 +1,1846 @@
+/***************************************************************************************[Solver.cc]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#include "prop/minisat/core/Solver.h"
+
+#include <math.h>
+
+#include <iostream>
+
+#include "base/output.h"
+#include "options/prop_options.h"
+#include "proof/clause_id.h"
+#include "proof/proof_manager.h"
+#include "proof/sat_proof_implementation.h"
+#include "proof/sat_proof.h"
+#include "prop/minisat/minisat.h"
+#include "prop/minisat/mtl/Sort.h"
+#include "prop/theory_proxy.h"
+
+using namespace CVC4::prop;
+
+namespace CVC4 {
+namespace Minisat {
+
+//=================================================================================================
+// Options:
+
+static const char* _cat = "CORE";
+
+static DoubleOption  opt_var_decay         (_cat, "var-decay",   "The variable activity decay factor",            0.95,     DoubleRange(0, false, 1, false));
+static DoubleOption  opt_clause_decay      (_cat, "cla-decay",   "The clause activity decay factor",              0.999,    DoubleRange(0, false, 1, false));
+static DoubleOption  opt_random_var_freq   (_cat, "rnd-freq",    "The frequency with which the decision heuristic tries to choose a random variable", 0, DoubleRange(0, true, 1, true));
+static DoubleOption  opt_random_seed       (_cat, "rnd-seed",    "Used by the random variable selection",         91648253, DoubleRange(0, false, HUGE_VAL, false));
+static IntOption     opt_ccmin_mode        (_cat, "ccmin-mode",  "Controls conflict clause minimization (0=none, 1=basic, 2=deep)", 2, IntRange(0, 2));
+static IntOption     opt_phase_saving      (_cat, "phase-saving", "Controls the level of phase saving (0=none, 1=limited, 2=full)", 2, IntRange(0, 2));
+static BoolOption    opt_rnd_init_act      (_cat, "rnd-init",    "Randomize the initial activity", false);
+static BoolOption    opt_luby_restart      (_cat, "luby",        "Use the Luby restart sequence", true);
+static IntOption     opt_restart_first     (_cat, "rfirst",      "The base restart interval", 25, IntRange(1, INT32_MAX));
+static DoubleOption  opt_restart_inc       (_cat, "rinc",        "Restart interval increase factor", 3, DoubleRange(1, false, HUGE_VAL, false));
+static DoubleOption  opt_garbage_frac      (_cat, "gc-frac",     "The fraction of wasted memory allowed before a garbage collection is triggered",  0.20, DoubleRange(0, false, HUGE_VAL, false));
+
+//=================================================================================================
+// Proof declarations
+CRef Solver::TCRef_Undef = CRef_Undef;
+CRef Solver::TCRef_Lazy = CRef_Lazy;
+
+class ScopedBool {
+  bool& watch;
+  bool oldValue;
+public:
+  ScopedBool(bool& watch, bool newValue)
+  : watch(watch), oldValue(watch) {
+    watch = newValue;
+  }
+  ~ScopedBool() {
+    watch = oldValue;
+  }
+};
+
+
+//=================================================================================================
+// Constructor/Destructor:
+
+Solver::Solver(CVC4::prop::TheoryProxy* proxy, CVC4::context::Context* context, bool enable_incremental) :
+    proxy(proxy)
+  , context(context)
+  , assertionLevel(0)
+  , enable_incremental(enable_incremental)
+  , minisat_busy(false)
+    // Parameters (user settable):
+    //
+  , verbosity        (0)
+  , var_decay        (opt_var_decay)
+  , clause_decay     (opt_clause_decay)
+  , random_var_freq  (opt_random_var_freq)
+  , random_seed      (opt_random_seed)
+  , luby_restart     (opt_luby_restart)
+  , ccmin_mode       (opt_ccmin_mode)
+  , phase_saving     (opt_phase_saving)
+  , rnd_pol          (false)
+  , rnd_init_act     (opt_rnd_init_act)
+  , garbage_frac     (opt_garbage_frac)
+  , restart_first    (opt_restart_first)
+  , restart_inc      (opt_restart_inc)
+
+    // Parameters (the rest):
+    //
+  , learntsize_factor(1), learntsize_inc(1.5)
+
+    // Parameters (experimental):
+    //
+  , learntsize_adjust_start_confl (100)
+  , learntsize_adjust_inc         (1.5)
+
+    // Statistics: (formerly in 'SolverStats')
+    //
+  , solves(0), starts(0), decisions(0), rnd_decisions(0), propagations(0), conflicts(0), resources_consumed(0)
+  , dec_vars(0), clauses_literals(0), learnts_literals(0), max_literals(0), tot_literals(0)
+
+  , ok                 (true)
+  , cla_inc            (1)
+  , var_inc            (1)
+  , watches            (WatcherDeleted(ca))
+  , qhead              (0)
+  , simpDB_assigns     (-1)
+  , simpDB_props       (0)
+  , order_heap         (VarOrderLt(activity))
+  , progress_estimate  (0)
+  , remove_satisfied   (!enable_incremental)
+
+    // Resource constraints:
+    //
+  , conflict_budget    (-1)
+  , propagation_budget (-1)
+  , asynch_interrupt   (false)
+{
+  PROOF(ProofManager::initSatProof(this);)
+
+  // Create the constant variables
+  varTrue = newVar(true, false, false);
+  varFalse = newVar(false, false, false);
+
+  // Assert the constants
+  uncheckedEnqueue(mkLit(varTrue, false));
+  uncheckedEnqueue(mkLit(varFalse, true));
+  // FIXME: these should be axioms I believe
+  PROOF
+    (
+     ProofManager::getSatProof()->registerTrueLit(mkLit(varTrue, false));
+     ProofManager::getSatProof()->registerFalseLit(mkLit(varFalse, true));
+     );
+}
+
+
+Solver::~Solver()
+{
+}
+
+
+//=================================================================================================
+// Minor methods:
+
+
+// Creates a new SAT variable in the solver. If 'decision_var' is cleared, variable will not be
+// used as a decision variable (NOTE! This has effects on the meaning of a SATISFIABLE result).
+//
+Var Solver::newVar(bool sign, bool dvar, bool isTheoryAtom, bool preRegister, bool canErase)
+{
+    int v = nVars();
+
+    watches  .init(mkLit(v, false));
+    watches  .init(mkLit(v, true ));
+    assigns  .push(l_Undef);
+    vardata  .push(VarData(CRef_Undef, -1, -1, assertionLevel, -1));
+    activity .push(rnd_init_act ? drand(random_seed) * 0.00001 : 0);
+    seen     .push(0);
+    polarity .push(sign);
+    decision .push();
+    trail    .capacity(v+1);
+    theory   .push(isTheoryAtom);
+
+    setDecisionVar(v, dvar);
+
+    // If the variable is introduced at non-zero level, we need to reintroduce it on backtracks
+    if (preRegister) {
+      variables_to_register.push(VarIntroInfo(v, decisionLevel()));
+    }
+
+    Debug("minisat") << "new var " << v << std::endl;
+
+    return v;
+}
+
+void Solver::resizeVars(int newSize) {
+  assert(enable_incremental);
+  assert(decisionLevel() == 0);
+  Assert(newSize >= 2, "always keep true/false");
+  if (newSize < nVars()) {
+    int shrinkSize = nVars() - newSize;
+
+    // Resize watches up to the negated last literal
+    watches.resizeTo(mkLit(newSize-1, true));
+
+    // Resize all info arrays
+    assigns.shrink(shrinkSize);
+    vardata.shrink(shrinkSize);
+    activity.shrink(shrinkSize);
+    seen.shrink(shrinkSize);
+    polarity.shrink(shrinkSize);
+    decision.shrink(shrinkSize);
+    theory.shrink(shrinkSize);
+
+  }
+
+  if (Debug.isOn("minisat::pop")) {
+    for (int i = 0; i < trail.size(); ++ i) {
+      assert(var(trail[i]) < nVars());
+    }
+  }
+}
+
+CRef Solver::reason(Var x) {
+
+    // If we already have a reason, just return it
+    if (vardata[x].reason != CRef_Lazy) return vardata[x].reason;
+
+    // What's the literal we are trying to explain
+    Lit l = mkLit(x, value(x) != l_True);
+
+    // Get the explanation from the theory
+    SatClause explanation_cl;
+    // FIXME: at some point return a tag with the theory that spawned you
+    proxy->explainPropagation(MinisatSatSolver::toSatLiteral(l),
+                              explanation_cl);
+    vec<Lit> explanation;
+    MinisatSatSolver::toMinisatClause(explanation_cl, explanation);
+
+    Debug("pf::sat") << "Solver::reason: explanation_cl = " << explanation_cl << std::endl;
+
+    // Sort the literals by trail index level
+    lemma_lt lt(*this);
+    sort(explanation, lt);
+    Assert(explanation[0] == l);
+
+    // Compute the assertion level for this clause
+    int explLevel = 0;
+    int i, j;
+    Lit prev = lit_Undef;
+    for (i = 0, j = 0; i < explanation.size(); ++ i) {
+      // This clause is valid theory propagation, so its level is the level of the top literal
+      explLevel = std::max(explLevel, intro_level(var(explanation[i])));
+
+      Assert(value(explanation[i]) != l_Undef);
+      Assert(i == 0 || trail_index(var(explanation[0])) > trail_index(var(explanation[i])));
+
+      // Always keep the first literal
+      if (i == 0) {
+        prev = explanation[j++] = explanation[i];
+        continue;
+      }
+      // Ignore duplicate literals
+      if (explanation[i] == prev) {
+        continue;
+      }
+      // Ignore zero level literals
+      if (level(var(explanation[i])) == 0 && user_level(var(explanation[i]) == 0)) {
+        continue;
+      }
+      // Keep this literal
+      prev = explanation[j++] = explanation[i];
+    }
+    explanation.shrink(i - j);
+
+    Debug("pf::sat") << "Solver::reason: explanation = " ;
+    for (int i = 0; i < explanation.size(); ++i) {
+      Debug("pf::sat") << explanation[i] << " ";
+    }
+    Debug("pf::sat") << std::endl;
+
+    // We need an explanation clause so we add a fake literal
+    if (j == 1) {
+      // Add not TRUE to the clause
+      explanation.push(mkLit(varTrue, true));
+    }
+
+    // Construct the reason
+    CRef real_reason = ca.alloc(explLevel, explanation, true);
+    // FIXME: at some point will need more information about where this explanation
+    // came from (ie. the theory/sharing)
+    Debug("pf::sat") << "Minisat::Solver registering a THEORY_LEMMA (1)" << std::endl;
+    PROOF (ClauseId id = ProofManager::getSatProof()->registerClause(real_reason, THEORY_LEMMA);
+           ProofManager::getCnfProof()->registerConvertedClause(id, true);
+           // no need to pop current assertion as this is not converted to cnf
+           );
+    vardata[x] = VarData(real_reason, level(x), user_level(x), intro_level(x), trail_index(x));
+    clauses_removable.push(real_reason);
+    attachClause(real_reason);
+
+    return real_reason;
+}
+
+bool Solver::addClause_(vec<Lit>& ps, bool removable, ClauseId& id)
+{
+    if (!ok) return false;
+
+    // Check if clause is satisfied and remove false/duplicate literals:
+    sort(ps);
+    Lit p; int i, j;
+
+    // Which user-level to assert this clause at
+    int clauseLevel = removable ? 0 : assertionLevel;
+
+    // Check the clause for tautologies and similar
+    int falseLiteralsCount = 0;
+    for (i = j = 0, p = lit_Undef; i < ps.size(); i++) {
+      // Update the level
+      clauseLevel = std::max(clauseLevel, intro_level(var(ps[i])));
+      // Tautologies are ignored
+      if (ps[i] == ~p) {
+        id = ClauseIdUndef;
+        // Clause can be ignored
+        return true;
+      }
+      // Clauses with 0-level true literals are also ignored
+      if (value(ps[i]) == l_True && level(var(ps[i])) == 0 && user_level(var(ps[i])) == 0) {
+        id = ClauseIdUndef;
+        return true;
+      }
+      // Ignore repeated literals
+      if (ps[i] == p) {
+        continue;
+      }
+      // If a literal is false at 0 level (both sat and user level) we also ignore it
+      if (value(ps[i]) == l_False) {
+        if (!PROOF_ON() && level(var(ps[i])) == 0 && user_level(var(ps[i])) == 0) {
+          continue;
+        } else {
+          // If we decide to keep it, we count it into the false literals
+          falseLiteralsCount ++;
+        }
+      }
+      // This literal is a keeper
+      ps[j++] = p = ps[i];
+    }
+
+    // Fit to size
+    ps.shrink(i - j);
+
+    // If we are in solve or decision level > 0
+    if (minisat_busy || decisionLevel() > 0) {
+      Debug("pf::sat") << "Add clause adding a new lemma: ";
+      for (int k = 0; k < ps.size(); ++k) {
+        Debug("pf::sat") << ps[k] << " ";
+      }
+      Debug("pf::sat") << std::endl;
+
+      lemmas.push();
+      ps.copyTo(lemmas.last());
+      lemmas_removable.push(removable);
+      PROOF(
+            // Store the expression being converted to CNF until
+            // the clause is actually created
+            Node assertion = ProofManager::getCnfProof()->getCurrentAssertion();
+            Node def = ProofManager::getCnfProof()->getCurrentDefinition();
+            lemmas_cnf_assertion.push_back(std::make_pair(assertion, def));
+            id = ClauseIdUndef;
+        );
+      // does it have to always be a lemma?
+      // PROOF(id = ProofManager::getSatProof()->registerUnitClause(ps[0], THEORY_LEMMA););
+      // PROOF(id = ProofManager::getSatProof()->registerTheoryLemma(ps););
+      // Debug("cores") << "lemma push " << proof_id << " " << (proof_id & 0xffffffff) << std::endl;
+      // lemmas_proof_id.push(proof_id);
+    } else {
+      // If all false, we're in conflict
+      if (ps.size() == falseLiteralsCount) {
+        if(PROOF_ON()) {
+          // Take care of false units here; otherwise, we need to
+          // construct the clause below to give to the proof manager
+          // as the final conflict.
+          if(falseLiteralsCount == 1) {
+            PROOF( id = ProofManager::getSatProof()->storeUnitConflict(ps[0], INPUT); )
+            PROOF( ProofManager::getSatProof()->finalizeProof(CVC4::Minisat::CRef_Lazy); )
+            return ok = false;
+          }
+        } else {
+          return ok = false;
+        }
+      }
+
+      CRef cr = CRef_Undef;
+
+      // If not unit, add the clause
+      if (ps.size() > 1) {
+
+        lemma_lt lt(*this);
+        sort(ps, lt);
+
+        cr = ca.alloc(clauseLevel, ps, false);
+        clauses_persistent.push(cr);
+	attachClause(cr);
+
+        if(PROOF_ON()) {
+          PROOF(
+                id = ProofManager::getSatProof()->registerClause(cr, INPUT);
+                )
+          if(ps.size() == falseLiteralsCount) {
+            PROOF( ProofManager::getSatProof()->finalizeProof(cr); )
+            return ok = false;
+          }
+        }
+      }
+
+      // Check if it propagates
+      if (ps.size() == falseLiteralsCount + 1) {
+        if(assigns[var(ps[0])] == l_Undef) {
+          assert(assigns[var(ps[0])] != l_False);
+          uncheckedEnqueue(ps[0], cr);
+          Debug("cores") << "i'm registering a unit clause, input" << std::endl;
+          PROOF(
+                if(ps.size() == 1) {
+                  id = ProofManager::getSatProof()->registerUnitClause(ps[0], INPUT);
+                }
+                );
+          CRef confl = propagate(CHECK_WITHOUT_THEORY);
+          if(! (ok = (confl == CRef_Undef)) ) {
+            if(ca[confl].size() == 1) {
+              PROOF( id = ProofManager::getSatProof()->storeUnitConflict(ca[confl][0], LEARNT); );
+              PROOF( ProofManager::getSatProof()->finalizeProof(CVC4::Minisat::CRef_Lazy); )
+            } else {
+              PROOF( ProofManager::getSatProof()->finalizeProof(confl); );
+            }
+          }
+          return ok;
+        } else return ok;
+      }
+    }
+
+    return true;
+}
+
+
+void Solver::attachClause(CRef cr) {
+    const Clause& c = ca[cr];
+    Debug("minisat") << "Solver::attachClause(" << c << "): level " << c.level() << std::endl;
+    Assert(c.size() > 1);
+    watches[~c[0]].push(Watcher(cr, c[1]));
+    watches[~c[1]].push(Watcher(cr, c[0]));
+    if (c.removable()) learnts_literals += c.size();
+    else            clauses_literals += c.size();
+}
+
+
+void Solver::detachClause(CRef cr, bool strict) {
+    const Clause& c = ca[cr];
+    PROOF( ProofManager::getSatProof()->markDeleted(cr); );
+    Debug("minisat") << "Solver::detachClause(" << c << ")" << std::endl;
+    assert(c.size() > 1);
+
+    if (strict){
+        remove(watches[~c[0]], Watcher(cr, c[1]));
+        remove(watches[~c[1]], Watcher(cr, c[0]));
+    }else{
+        // Lazy detaching: (NOTE! Must clean all watcher lists before garbage collecting this clause)
+        watches.smudge(~c[0]);
+        watches.smudge(~c[1]);
+    }
+
+    if (c.removable()) learnts_literals -= c.size();
+    else            clauses_literals -= c.size(); }
+
+
+void Solver::removeClause(CRef cr) {
+    Clause& c = ca[cr];
+    Debug("minisat::remove-clause") << "Solver::removeClause(" << c << ")" << std::endl;
+    detachClause(cr);
+    // Don't leave pointers to free'd memory!
+    if (locked(c)) vardata[var(c[0])].reason = CRef_Undef;
+    c.mark(1);
+    ca.free(cr);
+}
+
+
+bool Solver::satisfied(const Clause& c) const {
+    for (int i = 0; i < c.size(); i++)
+        if (value(c[i]) == l_True)
+            return true;
+    return false; }
+
+
+// Revert to the state at given level (keeping all assignment at 'level' but not beyond).
+//
+void Solver::cancelUntil(int level) {
+    Debug("minisat") << "minisat::cancelUntil(" << level << ")" << std::endl;
+
+    if (decisionLevel() > level){
+        // Pop the SMT context
+        for (int l = trail_lim.size() - level; l > 0; --l) {
+          context->pop();
+          if(Dump.isOn("state")) {
+            proxy->dumpStatePop();
+          }
+        }
+        for (int c = trail.size()-1; c >= trail_lim[level]; c--){
+            Var      x  = var(trail[c]);
+            assigns [x] = l_Undef;
+            vardata[x].trail_index = -1;
+            if ((phase_saving > 1 ||
+                 ((phase_saving == 1) && c > trail_lim.last())
+                 ) && ((polarity[x] & 0x2) == 0)) {
+              polarity[x] = sign(trail[c]);
+            }
+            insertVarOrder(x);
+        }
+        qhead = trail_lim[level];
+        trail.shrink(trail.size() - trail_lim[level]);
+        trail_lim.shrink(trail_lim.size() - level);
+        flipped.shrink(flipped.size() - level);
+
+        // Register variables that have not been registered yet
+        int currentLevel = decisionLevel();
+        for(int i = variables_to_register.size() - 1; i >= 0 && variables_to_register[i].level > currentLevel; --i) {
+          variables_to_register[i].level = currentLevel;
+          proxy->variableNotify(MinisatSatSolver::toSatVariable(variables_to_register[i].var));
+        }
+    }
+}
+
+void Solver::popTrail() {
+  cancelUntil(0);
+}
+
+//=================================================================================================
+// Major methods:
+
+
+Lit Solver::pickBranchLit()
+{
+    Lit nextLit;
+
+#ifdef CVC4_REPLAY
+
+    nextLit = MinisatSatSolver::toMinisatLit(proxy->getNextReplayDecision());
+
+    if (nextLit != lit_Undef) {
+      return nextLit;
+    }
+#endif /* CVC4_REPLAY */
+
+    // Theory requests
+    nextLit = MinisatSatSolver::toMinisatLit(proxy->getNextTheoryDecisionRequest());
+    while (nextLit != lit_Undef) {
+      if(value(var(nextLit)) == l_Undef) {
+        Debug("propagateAsDecision") << "propagateAsDecision(): now deciding on " << nextLit << std::endl;
+        decisions++;
+        return nextLit;
+      } else {
+        Debug("propagateAsDecision") << "propagateAsDecision(): would decide on " << nextLit << " but it already has an assignment" << std::endl;
+      }
+      nextLit = MinisatSatSolver::toMinisatLit(proxy->getNextTheoryDecisionRequest());
+    }
+    Debug("propagateAsDecision") << "propagateAsDecision(): decide on another literal" << std::endl;
+
+    // DE requests
+    bool stopSearch = false;
+    nextLit = MinisatSatSolver::toMinisatLit(proxy->getNextDecisionEngineRequest(stopSearch));
+    if(stopSearch) {
+      return lit_Undef;
+    }
+    if(nextLit != lit_Undef) {
+      Assert(value(var(nextLit)) == l_Undef, "literal to decide already has value");
+      decisions++;
+      Var next = var(nextLit);
+      if(polarity[next] & 0x2) {
+        return mkLit(next, polarity[next] & 0x1);
+      } else {
+        return nextLit;
+      }
+    }
+
+    Var next = var_Undef;
+
+    // Random decision:
+    if (drand(random_seed) < random_var_freq && !order_heap.empty()){
+        next = order_heap[irand(random_seed,order_heap.size())];
+        if (value(next) == l_Undef && decision[next])
+            rnd_decisions++; }
+
+    // Activity based decision:
+    while (next >= nVars() || next == var_Undef || value(next) != l_Undef || !decision[next]) {
+        if (order_heap.empty()){
+            next = var_Undef;
+            break;
+        }else {
+            next = order_heap.removeMin();
+        }
+
+        if(!decision[next]) continue;
+        // Check with decision engine about relevancy
+        if(proxy->isDecisionRelevant(MinisatSatSolver::toSatVariable(next)) == false ) {
+          next = var_Undef;
+        }
+    }
+
+    if(next == var_Undef) {
+      return lit_Undef;
+    } else {
+      decisions++;
+      // Check with decision engine if it can tell polarity
+      lbool dec_pol = MinisatSatSolver::toMinisatlbool
+        (proxy->getDecisionPolarity(MinisatSatSolver::toSatVariable(next)));
+      if(dec_pol != l_Undef) {
+        Assert(dec_pol == l_True || dec_pol == l_False);
+        return mkLit(next, (dec_pol == l_True) );
+      }
+      // If it can't use internal heuristic to do that
+      return mkLit(next, rnd_pol ? drand(random_seed) < 0.5 : (polarity[next] & 0x1));
+    }
+}
+
+
+/*_________________________________________________________________________________________________
+|
+|  analyze : (confl : Clause*) (out_learnt : vec<Lit>&) (out_btlevel : int&)  ->  [void]
+|
+|  Description:
+|    Analyze conflict and produce a reason clause.
+|
+|    Pre-conditions:
+|      * 'out_learnt' is assumed to be cleared.
+|      * Current decision level must be greater than root level.
+|
+|    Post-conditions:
+|      * 'out_learnt[0]' is the asserting literal at level 'out_btlevel'.
+|      * If out_learnt.size() > 1 then 'out_learnt[1]' has the greatest decision level of the
+|        rest of literals. There may be others from the same level though.
+|      * returns the maximal level of the resolved clauses
+|
+|________________________________________________________________________________________________@*/
+int Solver::analyze(CRef confl, vec<Lit>& out_learnt, int& out_btlevel)
+{
+    int pathC = 0;
+    Lit p     = lit_Undef;
+
+    // Generate conflict clause:
+    //
+    out_learnt.push();      // (leave room for the asserting literal)
+    int index   = trail.size() - 1;
+
+    int max_resolution_level = 0; // Maximal level of the resolved clauses
+
+    PROOF( ProofManager::getSatProof()->startResChain(confl); )
+    do{
+        assert(confl != CRef_Undef); // (otherwise should be UIP)
+        Clause& c = ca[confl];
+        max_resolution_level = std::max(max_resolution_level, c.level());
+
+        if (c.removable())
+            claBumpActivity(c);
+
+        for (int j = (p == lit_Undef) ? 0 : 1; j < c.size(); j++){
+            Lit q = c[j];
+
+            if (!seen[var(q)] && level(var(q)) > 0) {
+                varBumpActivity(var(q));
+                seen[var(q)] = 1;
+                if (level(var(q)) >= decisionLevel())
+                    pathC++;
+                else
+                    out_learnt.push(q);
+            } else {
+              // We could be resolving a literal propagated by a clause/theory using
+              // information from a higher level
+              if (!seen[var(q)] && level(var(q)) == 0) {
+                max_resolution_level = std::max(max_resolution_level, user_level(var(q)));
+              }
+
+              // FIXME: can we do it lazily if we actually need the proof?
+              if (level(var(q)) == 0) {
+                PROOF( ProofManager::getSatProof()->resolveOutUnit(q); )
+              }
+            }
+        }
+
+        // Select next clause to look at:
+        while (!seen[var(trail[index--])]);
+        p     = trail[index+1];
+        confl = reason(var(p));
+        seen[var(p)] = 0;
+        pathC--;
+
+        if ( pathC > 0 && confl != CRef_Undef ) {
+          PROOF( ProofManager::getSatProof()->addResolutionStep(p, confl, sign(p)); )
+        }
+
+    }while (pathC > 0);
+    out_learnt[0] = ~p;
+
+    // Simplify conflict clause:
+    int i, j;
+    out_learnt.copyTo(analyze_toclear);
+    if (ccmin_mode == 2){
+        uint32_t abstract_level = 0;
+        for (i = 1; i < out_learnt.size(); i++)
+            abstract_level |= abstractLevel(var(out_learnt[i])); // (maintain an abstraction of levels involved in conflict)
+
+        for (i = j = 1; i < out_learnt.size(); i++) {
+            if (reason(var(out_learnt[i])) == CRef_Undef) {
+                out_learnt[j++] = out_learnt[i];
+            } else {
+              // Check if the literal is redundant
+              if (!litRedundant(out_learnt[i], abstract_level)) {
+                // Literal is not redundant
+                out_learnt[j++] = out_learnt[i];
+              } else {
+                PROOF( ProofManager::getSatProof()->storeLitRedundant(out_learnt[i]); )
+                // Literal is redundant, to be safe, mark the level as current assertion level
+                // TODO: maybe optimize
+                max_resolution_level = std::max(max_resolution_level, user_level(var(out_learnt[i])));
+              }
+            }
+        }
+
+    }else if (ccmin_mode == 1){
+        Unreachable();
+        for (i = j = 1; i < out_learnt.size(); i++){
+            Var x = var(out_learnt[i]);
+
+            if (reason(x) == CRef_Undef)
+                out_learnt[j++] = out_learnt[i];
+            else{
+                Clause& c = ca[reason(var(out_learnt[i]))];
+                for (int k = 1; k < c.size(); k++)
+                    if (!seen[var(c[k])] && level(var(c[k])) > 0){
+                        out_learnt[j++] = out_learnt[i];
+                        break; }
+            }
+        }
+    }else
+        i = j = out_learnt.size();
+
+    max_literals += out_learnt.size();
+    out_learnt.shrink(i - j);
+    tot_literals += out_learnt.size();
+
+    // Find correct backtrack level:
+    //
+    if (out_learnt.size() == 1)
+        out_btlevel = 0;
+    else{
+        int max_i = 1;
+        // Find the first literal assigned at the next-highest level:
+        for (int i = 2; i < out_learnt.size(); i++)
+            if (level(var(out_learnt[i])) > level(var(out_learnt[max_i])))
+                max_i = i;
+        // Swap-in this literal at index 1:
+        Lit p             = out_learnt[max_i];
+        out_learnt[max_i] = out_learnt[1];
+        out_learnt[1]     = p;
+        out_btlevel       = level(var(p));
+    }
+
+    for (int j = 0; j < analyze_toclear.size(); j++) seen[var(analyze_toclear[j])] = 0;    // ('seen[]' is now cleared)
+
+    // Return the maximal resolution level
+    return max_resolution_level;
+}
+
+
+// Check if 'p' can be removed. 'abstract_levels' is used to abort early if the algorithm is
+// visiting literals at levels that cannot be removed later.
+bool Solver::litRedundant(Lit p, uint32_t abstract_levels)
+{
+    analyze_stack.clear(); analyze_stack.push(p);
+    int top = analyze_toclear.size();
+    while (analyze_stack.size() > 0){
+        CRef c_reason = reason(var(analyze_stack.last()));
+        assert(c_reason != CRef_Undef);
+        Clause& c = ca[c_reason];
+        int c_size = c.size();
+        analyze_stack.pop();
+
+        // Since calling reason might relocate to resize, c is not necesserily the right reference, we must
+        // use the allocator each time
+        for (int i = 1; i < c_size; i++){
+            Lit p  = ca[c_reason][i];
+            if (!seen[var(p)] && level(var(p)) > 0){
+                if (reason(var(p)) != CRef_Undef && (abstractLevel(var(p)) & abstract_levels) != 0){
+                    seen[var(p)] = 1;
+                    analyze_stack.push(p);
+                    analyze_toclear.push(p);
+                }else{
+                    for (int j = top; j < analyze_toclear.size(); j++)
+                        seen[var(analyze_toclear[j])] = 0;
+                    analyze_toclear.shrink(analyze_toclear.size() - top);
+                    return false;
+                }
+            }
+        }
+    }
+
+    return true;
+}
+
+
+/*_________________________________________________________________________________________________
+|
+|  analyzeFinal : (p : Lit)  ->  [void]
+|
+|  Description:
+|    Specialized analysis procedure to express the final conflict in terms of assumptions.
+|    Calculates the (possibly empty) set of assumptions that led to the assignment of 'p', and
+|    stores the result in 'out_conflict'.
+|________________________________________________________________________________________________@*/
+void Solver::analyzeFinal(Lit p, vec<Lit>& out_conflict)
+{
+    out_conflict.clear();
+    out_conflict.push(p);
+
+    if (decisionLevel() == 0)
+        return;
+
+    seen[var(p)] = 1;
+
+    for (int i = trail.size()-1; i >= trail_lim[0]; i--){
+        Var x = var(trail[i]);
+        if (seen[x]){
+            if (reason(x) == CRef_Undef){
+                assert(level(x) > 0);
+                out_conflict.push(~trail[i]);
+            }else{
+                Clause& c = ca[reason(x)];
+                for (int j = 1; j < c.size(); j++)
+                    if (level(var(c[j])) > 0)
+                        seen[var(c[j])] = 1;
+            }
+            seen[x] = 0;
+        }
+    }
+
+    seen[var(p)] = 0;
+}
+
+
+void Solver::uncheckedEnqueue(Lit p, CRef from)
+{
+    Debug("minisat") << "unchecked enqueue of " << p << " (" << trail_index(var(p)) << ") trail size is " << trail.size() << " cap is " << trail.capacity() << std::endl;
+    assert(value(p) == l_Undef);
+    assert(var(p) < nVars());
+    assigns[var(p)] = lbool(!sign(p));
+    vardata[var(p)] = VarData(from, decisionLevel(), assertionLevel, intro_level(var(p)), trail.size());
+    trail.push_(p);
+    if (theory[var(p)]) {
+      // Enqueue to the theory
+      proxy->enqueueTheoryLiteral(MinisatSatSolver::toSatLiteral(p));
+    }
+}
+
+
+CRef Solver::propagate(TheoryCheckType type)
+{
+    CRef confl = CRef_Undef;
+    recheck = false;
+    theoryConflict = false;
+
+    ScopedBool scoped_bool(minisat_busy, true);
+
+    // Add lemmas that we're left behind
+    if (lemmas.size() > 0) {
+      confl = updateLemmas();
+      if (confl != CRef_Undef) {
+        return confl;
+      }
+    }
+
+    // If this is the final check, no need for Boolean propagation and
+    // theory propagation
+    if (type == CHECK_FINAL) {
+      // Do the theory check
+      theoryCheck(CVC4::theory::Theory::EFFORT_FULL);
+      // Pick up the theory propagated literals (there could be some,
+      // if new lemmas are added)
+      propagateTheory();
+      // If there are lemmas (or conflicts) update them
+      if (lemmas.size() > 0) {
+        recheck = true;
+        confl = updateLemmas();
+        return confl;
+      } else {
+        recheck = proxy->theoryNeedCheck();
+        return confl;
+      }
+    }
+
+    // Keep running until we have checked everything, we
+    // have no conflict and no new literals have been asserted
+    do {
+        // Propagate on the clauses
+        confl = propagateBool();
+        // If no conflict, do the theory check
+        if (confl == CRef_Undef && type != CHECK_WITHOUT_THEORY) {
+            // Do the theory check
+            if (type == CHECK_FINAL_FAKE) {
+              theoryCheck(CVC4::theory::Theory::EFFORT_FULL);
+            } else {
+              theoryCheck(CVC4::theory::Theory::EFFORT_STANDARD);
+            }
+            // Pick up the theory propagated literals
+            propagateTheory();
+            // If there are lemmas (or conflicts) update them
+            if (lemmas.size() > 0) {
+              confl = updateLemmas();
+            }
+        } else {
+          // Even though in conflict, we still need to discharge the lemmas
+          if (lemmas.size() > 0) {
+            // Remember the trail size
+            int oldLevel = decisionLevel();
+            // Update the lemmas
+            CRef lemmaConflict = updateLemmas();
+            // If we get a conflict, we prefer it since it's earlier in the trail
+            if (lemmaConflict != CRef_Undef) {
+              // Lemma conflict takes precedence, since it's earlier in the trail
+              confl = lemmaConflict;
+            } else {
+              // Otherwise, the Boolean conflict is canceled in the case we popped the trail
+              if (oldLevel > decisionLevel()) {
+                confl = CRef_Undef;
+              }
+            }
+          }
+        }
+    } while (confl == CRef_Undef && qhead < trail.size());
+    return confl;
+}
+
+void Solver::propagateTheory() {
+  SatClause propagatedLiteralsClause;
+  // Doesn't actually call propagate(); that's done in theoryCheck() now that combination
+  // is online.  This just incorporates those propagations previously discovered.
+  proxy->theoryPropagate(propagatedLiteralsClause);
+
+  vec<Lit> propagatedLiterals;
+  MinisatSatSolver::toMinisatClause(propagatedLiteralsClause, propagatedLiterals);
+
+  int oldTrailSize = trail.size();
+  Debug("minisat") << "old trail size is " << oldTrailSize << ", propagating " << propagatedLiterals.size() << " lits..." << std::endl;
+  for (unsigned i = 0, i_end = propagatedLiterals.size(); i < i_end; ++ i) {
+    Debug("minisat") << "Theory propagated: " << propagatedLiterals[i] << std::endl;
+    // multiple theories can propagate the same literal
+    Lit p = propagatedLiterals[i];
+    if (value(p) == l_Undef) {
+      uncheckedEnqueue(p, CRef_Lazy);
+    } else {
+      if (value(p) == l_False) {
+        Debug("minisat") << "Conflict in theory propagation" << std::endl;
+        SatClause explanation_cl;
+        proxy->explainPropagation(MinisatSatSolver::toSatLiteral(p), explanation_cl);
+        vec<Lit> explanation;
+        MinisatSatSolver::toMinisatClause(explanation_cl, explanation);
+        ClauseId id; // FIXME: mark it as explanation here somehow?
+        addClause(explanation, true, id);
+      }
+    }
+  }
+}
+
+/*_________________________________________________________________________________________________
+|
+|  theoryCheck: [void]  ->  [Clause*]
+|
+|  Description:
+|    Checks all enqueued theory facts for satisfiability. If a conflict arises, the conflicting
+|    clause is returned, otherwise NULL.
+|
+|    Note: the propagation queue might be NOT empty
+|________________________________________________________________________________________________@*/
+void Solver::theoryCheck(CVC4::theory::Theory::Effort effort)
+{
+  proxy->theoryCheck(effort);
+}
+
+/*_________________________________________________________________________________________________
+|
+|  propagateBool : [void]  ->  [Clause*]
+|
+|  Description:
+|    Propagates all enqueued facts. If a conflict arises, the conflicting clause is returned,
+|    otherwise CRef_Undef.
+|
+|    Post-conditions:
+|      * the propagation queue is empty, even if there was a conflict.
+|________________________________________________________________________________________________@*/
+CRef Solver::propagateBool()
+{
+    CRef    confl     = CRef_Undef;
+    int     num_props = 0;
+    watches.cleanAll();
+
+    while (qhead < trail.size()){
+        Lit            p   = trail[qhead++];     // 'p' is enqueued fact to propagate.
+        vec<Watcher>&  ws  = watches[p];
+        Watcher        *i, *j, *end;
+        num_props++;
+
+        for (i = j = (Watcher*)ws, end = i + ws.size();  i != end;){
+            // Try to avoid inspecting the clause:
+            Lit blocker = i->blocker;
+            if (value(blocker) == l_True){
+                *j++ = *i++; continue; }
+
+            // Make sure the false literal is data[1]:
+            CRef     cr        = i->cref;
+            Clause&  c         = ca[cr];
+            Lit      false_lit = ~p;
+            if (c[0] == false_lit)
+                c[0] = c[1], c[1] = false_lit;
+            assert(c[1] == false_lit);
+            i++;
+
+            // If 0th watch is true, then clause is already satisfied.
+            Lit     first = c[0];
+            Watcher w     = Watcher(cr, first);
+            if (first != blocker && value(first) == l_True){
+                *j++ = w; continue; }
+
+            // Look for new watch:
+            Assert(c.size() >= 2);
+            for (int k = 2; k < c.size(); k++)
+                if (value(c[k]) != l_False){
+                    c[1] = c[k]; c[k] = false_lit;
+                    watches[~c[1]].push(w);
+                    goto NextClause; }
+
+            // Did not find watch -- clause is unit under assignment:
+            *j++ = w;
+            if (value(first) == l_False){
+                confl = cr;
+                qhead = trail.size();
+                // Copy the remaining watches:
+                while (i < end)
+                    *j++ = *i++;
+            }else
+                uncheckedEnqueue(first, cr);
+
+        NextClause:;
+        }
+        ws.shrink(i - j);
+    }
+    propagations += num_props;
+    simpDB_props -= num_props;
+
+    return confl;
+}
+
+
+/*_________________________________________________________________________________________________
+|
+|  reduceDB : ()  ->  [void]
+|
+|  Description:
+|    Remove half of the learnt clauses, minus the clauses locked by the current assignment. Locked
+|    clauses are clauses that are reason to some assignment. Binary clauses are never removed.
+|________________________________________________________________________________________________@*/
+struct reduceDB_lt {
+    ClauseAllocator& ca;
+    reduceDB_lt(ClauseAllocator& ca_) : ca(ca_) {}
+    bool operator () (CRef x, CRef y) {
+        return ca[x].size() > 2 && (ca[y].size() == 2 || ca[x].activity() < ca[y].activity()); }
+};
+void Solver::reduceDB()
+{
+    int     i, j;
+    double  extra_lim = cla_inc / clauses_removable.size();    // Remove any clause below this activity
+
+    sort(clauses_removable, reduceDB_lt(ca));
+    // Don't delete binary or locked clauses. From the rest, delete clauses from the first half
+    // and clauses with activity smaller than 'extra_lim':
+    for (i = j = 0; i < clauses_removable.size(); i++){
+        Clause& c = ca[clauses_removable[i]];
+        if (c.size() > 2 && !locked(c) && (i < clauses_removable.size() / 2 || c.activity() < extra_lim))
+            removeClause(clauses_removable[i]);
+        else
+            clauses_removable[j++] = clauses_removable[i];
+    }
+    clauses_removable.shrink(i - j);
+    checkGarbage();
+}
+
+
+void Solver::removeSatisfied(vec<CRef>& cs)
+{
+    int i, j;
+    for (i = j = 0; i < cs.size(); i++){
+        Clause& c = ca[cs[i]];
+        if (satisfied(c)) {
+          if (locked(c)) {
+            // store a resolution of the literal c propagated
+            PROOF( ProofManager::getSatProof()->storeUnitResolution(c[0]); )
+          }
+            removeClause(cs[i]);
+        }
+        else
+            cs[j++] = cs[i];
+    }
+    cs.shrink(i - j);
+}
+
+void Solver::removeClausesAboveLevel(vec<CRef>& cs, int level)
+{
+    int i, j;
+    for (i = j = 0; i < cs.size(); i++){
+        Clause& c = ca[cs[i]];
+        if (c.level() > level) {
+            assert(!locked(c));
+            removeClause(cs[i]);
+        } else {
+            cs[j++] = cs[i];
+        }
+    }
+    cs.shrink(i - j);
+}
+
+void Solver::rebuildOrderHeap()
+{
+    vec<Var> vs;
+    for (Var v = 0; v < nVars(); v++)
+        if (decision[v] && value(v) == l_Undef)
+            vs.push(v);
+    order_heap.build(vs);
+}
+
+
+/*_________________________________________________________________________________________________
+|
+|  simplify : [void]  ->  [bool]
+|
+|  Description:
+|    Simplify the clause database according to the current top-level assigment. Currently, the only
+|    thing done here is the removal of satisfied clauses, but more things can be put here.
+|________________________________________________________________________________________________@*/
+bool Solver::simplify()
+{
+    assert(decisionLevel() == 0);
+
+    if (!ok || propagate(CHECK_WITHOUT_THEORY) != CRef_Undef)
+        return ok = false;
+
+    if (nAssigns() == simpDB_assigns || (simpDB_props > 0))
+        return true;
+
+    // Remove satisfied clauses:
+    removeSatisfied(clauses_removable);
+    if (remove_satisfied)        // Can be turned off.
+        removeSatisfied(clauses_persistent);
+    checkGarbage();
+    rebuildOrderHeap();
+
+    simpDB_assigns = nAssigns();
+    simpDB_props   = clauses_literals + learnts_literals;   // (shouldn't depend on stats really, but it will do for now)
+
+    return true;
+}
+
+
+/*_________________________________________________________________________________________________
+|
+|  search : (nof_conflicts : int) (params : const SearchParams&)  ->  [lbool]
+|
+|  Description:
+|    Search for a model the specified number of conflicts.
+|    NOTE! Use negative value for 'nof_conflicts' indicate infinity.
+|
+|  Output:
+|    'l_True' if a partial assigment that is consistent with respect to the clauseset is found. If
+|    all variables are decision variables, this means that the clause set is satisfiable. 'l_False'
+|    if the clause set is unsatisfiable. 'l_Undef' if the bound on number of conflicts is reached.
+|________________________________________________________________________________________________@*/
+lbool Solver::search(int nof_conflicts)
+{
+    assert(ok);
+    int         backtrack_level;
+    int         conflictC = 0;
+    vec<Lit>    learnt_clause;
+    starts++;
+
+    TheoryCheckType check_type = CHECK_WITH_THEORY;
+    for (;;) {
+
+        // Propagate and call the theory solvers
+        CRef confl = propagate(check_type);
+        Assert(lemmas.size() == 0);
+
+        if (confl != CRef_Undef) {
+
+            conflicts++; conflictC++;
+
+            if (decisionLevel() == 0) {
+                PROOF( ProofManager::getSatProof()->finalizeProof(confl); )
+                return l_False;
+            }
+
+            // Analyze the conflict
+            learnt_clause.clear();
+            int max_level = analyze(confl, learnt_clause, backtrack_level);
+            cancelUntil(backtrack_level);
+
+            // Assert the conflict clause and the asserting literal
+            if (learnt_clause.size() == 1) {
+                uncheckedEnqueue(learnt_clause[0]);
+
+                PROOF( ProofManager::getSatProof()->endResChain(learnt_clause[0]); )
+
+            } else {
+                CRef cr = ca.alloc(max_level, learnt_clause, true);
+                clauses_removable.push(cr);
+                attachClause(cr);
+                claBumpActivity(ca[cr]);
+                uncheckedEnqueue(learnt_clause[0], cr);
+                PROOF(
+                      ClauseId id = ProofManager::getSatProof()->registerClause(cr, LEARNT);
+                      PSTATS(
+                      __gnu_cxx::hash_set<int> cl_levels;
+                      for (int i = 0; i < learnt_clause.size(); ++i) {
+                        cl_levels.insert(level(var(learnt_clause[i])));
+                      }
+                      ProofManager::getSatProof()->storeClauseGlue(id, cl_levels.size());
+                            )
+                      ProofManager::getSatProof()->endResChain(id);
+                      );
+            }
+
+            varDecayActivity();
+            claDecayActivity();
+
+            if (--learntsize_adjust_cnt == 0){
+                learntsize_adjust_confl *= learntsize_adjust_inc;
+                learntsize_adjust_cnt    = (int)learntsize_adjust_confl;
+                max_learnts             *= learntsize_inc;
+
+                if (verbosity >= 1)
+                    printf("| %9d | %7d %8d %8d | %8d %8d %6.0f | %6.3f %% |\n",
+                           (int)conflicts,
+                           (int)dec_vars - (trail_lim.size() == 0 ? trail.size() : trail_lim[0]), nClauses(), (int)clauses_literals,
+                           (int)max_learnts, nLearnts(), (double)learnts_literals/nLearnts(), progressEstimate()*100);
+            }
+
+            if (theoryConflict && options::sat_refine_conflicts()) {
+              check_type = CHECK_FINAL_FAKE;
+            } else {
+              check_type = CHECK_WITH_THEORY;
+            }
+
+        } else {
+
+	    // If this was a final check, we are satisfiable
+            if (check_type == CHECK_FINAL) {
+	      bool decisionEngineDone = proxy->isDecisionEngineDone();
+              // Unless a lemma has added more stuff to the queues
+              if (!decisionEngineDone  &&
+		  (!order_heap.empty() || qhead < trail.size()) ) {
+                check_type = CHECK_WITH_THEORY;
+                continue;
+              } else if (recheck) {
+                // There some additional stuff added, so we go for another full-check
+                continue;
+              } else {
+                // Yes, we're truly satisfiable
+                return l_True;
+              }
+            } else if (check_type == CHECK_FINAL_FAKE) {
+              check_type = CHECK_WITH_THEORY;
+            }
+
+            if (nof_conflicts >= 0 && conflictC >= nof_conflicts ||
+                !withinBudget(options::satConflictStep())) {
+                // Reached bound on number of conflicts:
+                progress_estimate = progressEstimate();
+                cancelUntil(0);
+                // [mdeters] notify theory engine of restarts for deferred
+                // theory processing
+                proxy->notifyRestart();
+                return l_Undef;
+            }
+
+            // Simplify the set of problem clauses:
+            if (decisionLevel() == 0 && !simplify()) {
+                return l_False;
+            }
+
+            if (clauses_removable.size()-nAssigns() >= max_learnts) {
+                // Reduce the set of learnt clauses:
+                reduceDB();
+            }
+
+            Lit next = lit_Undef;
+            while (decisionLevel() < assumptions.size()) {
+                // Perform user provided assumption:
+                Lit p = assumptions[decisionLevel()];
+                if (value(p) == l_True) {
+                    // Dummy decision level:
+                    newDecisionLevel();
+                } else if (value(p) == l_False) {
+                    analyzeFinal(~p, conflict);
+                    return l_False;
+                } else {
+                    next = p;
+                    break;
+                }
+            }
+
+            if (next == lit_Undef) {
+                // New variable decision:
+                next = pickBranchLit();
+
+                if (next == lit_Undef) {
+                    // We need to do a full theory check to confirm
+                  Debug("minisat::search") << "Doing a full theory check..."
+                                           << std::endl;
+                    check_type = CHECK_FINAL;
+                    continue;
+                }
+
+#ifdef CVC4_REPLAY
+                proxy->logDecision(MinisatSatSolver::toSatLiteral(next));
+#endif /* CVC4_REPLAY */
+            }
+
+            // Increase decision level and enqueue 'next'
+            newDecisionLevel();
+            uncheckedEnqueue(next);
+        }
+    }
+}
+
+
+double Solver::progressEstimate() const
+{
+    double  progress = 0;
+    double  F = 1.0 / nVars();
+
+    for (int i = 0; i <= decisionLevel(); i++){
+        int beg = i == 0 ? 0 : trail_lim[i - 1];
+        int end = i == decisionLevel() ? trail.size() : trail_lim[i];
+        progress += pow(F, i) * (end - beg);
+    }
+
+    return progress / nVars();
+}
+
+/*
+  Finite subsequences of the Luby-sequence:
+
+  0: 1
+  1: 1 1 2
+  2: 1 1 2 1 1 2 4
+  3: 1 1 2 1 1 2 4 1 1 2 1 1 2 4 8
+  ...
+
+
+ */
+
+static double luby(double y, int x){
+
+    // Find the finite subsequence that contains index 'x', and the
+    // size of that subsequence:
+    int size, seq;
+    for (size = 1, seq = 0; size < x+1; seq++, size = 2*size+1);
+
+    while (size-1 != x){
+        size = (size-1)>>1;
+        seq--;
+        x = x % size;
+    }
+
+    return pow(y, seq);
+}
+
+// NOTE: assumptions passed in member-variable 'assumptions'.
+lbool Solver::solve_()
+{
+    Debug("minisat") << "nvars = " << nVars() << std::endl;
+
+    ScopedBool scoped_bool(minisat_busy, true);
+
+    popTrail();
+
+    model.clear();
+    conflict.clear();
+    if (!ok){
+      minisat_busy = false;
+      return l_False;
+    }
+
+    solves++;
+
+    max_learnts               = nClauses() * learntsize_factor;
+    learntsize_adjust_confl   = learntsize_adjust_start_confl;
+    learntsize_adjust_cnt     = (int)learntsize_adjust_confl;
+    lbool   status            = l_Undef;
+
+    if (verbosity >= 1){
+        printf("============================[ Search Statistics ]==============================\n");
+        printf("| Conflicts |          ORIGINAL         |          LEARNT          | Progress |\n");
+        printf("|           |    Vars  Clauses Literals |    Limit  Clauses Lit/Cl |          |\n");
+        printf("===============================================================================\n");
+    }
+
+    // Search:
+    int curr_restarts = 0;
+    while (status == l_Undef){
+        double rest_base = luby_restart ? luby(restart_inc, curr_restarts) : pow(restart_inc, curr_restarts);
+        status = search(rest_base * restart_first);
+        if (!withinBudget(options::satConflictStep())) break; // FIXME add restart option?
+        curr_restarts++;
+    }
+
+    if(!withinBudget(options::satConflictStep()))
+        status = l_Undef;
+
+    if (verbosity >= 1)
+        printf("===============================================================================\n");
+
+
+    if (status == l_True){
+        // Extend & copy model:
+        model.growTo(nVars());
+        for (int i = 0; i < nVars(); i++) {
+          model[i] = value(i);
+          Debug("minisat") << i << " = " << model[i] << std::endl;
+        }
+    }else if (status == l_False && conflict.size() == 0)
+        ok = false;
+
+    return status;
+}
+
+//=================================================================================================
+// Writing CNF to DIMACS:
+//
+// FIXME: this needs to be rewritten completely.
+
+static Var mapVar(Var x, vec<Var>& map, Var& max)
+{
+    if (map.size() <= x || map[x] == -1){
+        map.growTo(x+1, -1);
+        map[x] = max++;
+    }
+    return map[x];
+}
+
+
+void Solver::toDimacs(FILE* f, Clause& c, vec<Var>& map, Var& max)
+{
+    if (satisfied(c)) return;
+
+    for (int i = 0; i < c.size(); i++)
+        if (value(c[i]) != l_False)
+            fprintf(f, "%s%d ", sign(c[i]) ? "-" : "", mapVar(var(c[i]), map, max)+1);
+    fprintf(f, "0\n");
+}
+
+
+void Solver::toDimacs(const char *file, const vec<Lit>& assumps)
+{
+    FILE* f = fopen(file, "wr");
+    if (f == NULL)
+        fprintf(stderr, "could not open file %s\n", file), exit(1);
+    toDimacs(f, assumps);
+    fclose(f);
+}
+
+
+void Solver::toDimacs(FILE* f, const vec<Lit>& assumps)
+{
+    // Handle case when solver is in contradictory state:
+    if (!ok){
+        fprintf(f, "p cnf 1 2\n1 0\n-1 0\n");
+        return; }
+
+    vec<Var> map; Var max = 0;
+
+    // Cannot use removeClauses here because it is not safe
+    // to deallocate them at this point. Could be improved.
+    int cnt = 0;
+    for (int i = 0; i < clauses_persistent.size(); i++)
+        if (!satisfied(ca[clauses_persistent[i]]))
+            cnt++;
+
+    for (int i = 0; i < clauses_persistent.size(); i++)
+        if (!satisfied(ca[clauses_persistent[i]])){
+            Clause& c = ca[clauses_persistent[i]];
+            for (int j = 0; j < c.size(); j++)
+                if (value(c[j]) != l_False)
+                    mapVar(var(c[j]), map, max);
+        }
+
+    // Assumptions are added as unit clauses:
+    cnt += assumptions.size();
+
+    fprintf(f, "p cnf %d %d\n", max, cnt);
+
+    for (int i = 0; i < assumptions.size(); i++){
+        assert(value(assumptions[i]) != l_False);
+        fprintf(f, "%s%d 0\n", sign(assumptions[i]) ? "-" : "", mapVar(var(assumptions[i]), map, max)+1);
+    }
+
+    for (int i = 0; i < clauses_persistent.size(); i++)
+        toDimacs(f, ca[clauses_persistent[i]], map, max);
+
+    if (verbosity > 0)
+        printf("Wrote %d clauses with %d variables.\n", cnt, max);
+}
+
+
+//=================================================================================================
+// Garbage Collection methods:
+
+void Solver::relocAll(ClauseAllocator& to)
+{
+    // All watchers:
+    //
+    // for (int i = 0; i < watches.size(); i++)
+    watches.cleanAll();
+    for (int v = 0; v < nVars(); v++)
+        for (int s = 0; s < 2; s++){
+            Lit p = mkLit(v, s);
+            // printf(" >>> RELOCING: %s%d\n", sign(p)?"-":"", var(p)+1);
+            vec<Watcher>& ws = watches[p];
+            for (int j = 0; j < ws.size(); j++)
+              ca.reloc(ws[j].cref, to,   NULLPROOF( ProofManager::getSatProof()->getProxy() ));
+        }
+
+    // All reasons:
+    //
+    for (int i = 0; i < trail.size(); i++){
+        Var v = var(trail[i]);
+
+        if (hasReasonClause(v) && (ca[reason(v)].reloced() || locked(ca[reason(v)])))
+          ca.reloc(vardata[v].reason, to, NULLPROOF( ProofManager::getSatProof()->getProxy() ));
+    }
+    // All learnt:
+    //
+    for (int i = 0; i < clauses_removable.size(); i++)
+      ca.reloc(clauses_removable[i], to,  NULLPROOF( ProofManager::getSatProof()->getProxy() ));
+
+    // All original:
+    //
+    for (int i = 0; i < clauses_persistent.size(); i++)
+      ca.reloc(clauses_persistent[i], to,  NULLPROOF( ProofManager::getSatProof()->getProxy() ));
+
+      PROOF( ProofManager::getSatProof()->finishUpdateCRef(); )
+}
+
+
+void Solver::garbageCollect()
+{
+    // Initialize the next region to a size corresponding to the estimated utilization degree. This
+    // is not precise but should avoid some unnecessary reallocations for the new region:
+    ClauseAllocator to(ca.size() - ca.wasted());
+
+    relocAll(to);
+    if (verbosity >= 2)
+        printf("|  Garbage collection:   %12d bytes => %12d bytes             |\n",
+               ca.size()*ClauseAllocator::Unit_Size, to.size()*ClauseAllocator::Unit_Size);
+    to.moveTo(ca);
+}
+
+void Solver::push()
+{
+  assert(enable_incremental);
+
+  popTrail();
+  ++assertionLevel;
+  Debug("minisat") << "in user push, increasing assertion level to " << assertionLevel << std::endl;
+  trail_ok.push(ok);
+  assigns_lim.push(assigns.size());
+
+  context->push(); // SAT context for CVC4
+
+  Debug("minisat") << "MINISAT PUSH assertionLevel is " << assertionLevel << ", trail.size is " << trail.size() << std::endl;
+}
+
+void Solver::pop()
+{
+  assert(enable_incremental);
+
+  // Pop the trail to 0 level
+  popTrail();
+  assert(decisionLevel() == 0);
+
+  // Pop the trail below the user level
+  --assertionLevel;
+  while (true) {
+    Debug("minisat") << "== unassigning " << trail.last() << std::endl;
+    Var      x  = var(trail.last());
+    if (user_level(x) > assertionLevel) {
+      assigns[x] = l_Undef;
+      vardata[x] = VarData(CRef_Undef, -1, -1, intro_level(x), -1);
+      if(phase_saving >= 1 && (polarity[x] & 0x2) == 0)
+        polarity[x] = sign(trail.last());
+      insertVarOrder(x);
+      trail.pop();
+    } else {
+      break;
+    }
+  }
+  // The head should be at the trail top
+  qhead = trail.size();
+
+  // Remove the clauses
+  removeClausesAboveLevel(clauses_persistent, assertionLevel);
+  removeClausesAboveLevel(clauses_removable, assertionLevel);
+
+  // Pop the SAT context to notify everyone
+  context->pop(); // SAT context for CVC4
+
+  // Pop the created variables
+  resizeVars(assigns_lim.last());
+  assigns_lim.pop();
+  variables_to_register.clear();
+
+  // Pop the OK
+  ok = trail_ok.last();
+  trail_ok.pop();
+}
+
+bool Solver::flipDecision() {
+  Debug("flipdec") << "FLIP: decision level is " << decisionLevel() << std::endl;
+  if(decisionLevel() == 0) {
+    Debug("flipdec") << "FLIP: no decisions, returning false" << std::endl;
+    return false;
+  }
+
+  // find the level to cancel until
+  int level = trail_lim.size() - 1;
+  Debug("flipdec") << "FLIP: looking at level " << level << " dec is " << trail[trail_lim[level]] << " flippable?" << ((polarity[var(trail[trail_lim[level]])] & 0x2) == 0 ? 1 : 0) << " flipped?" << flipped[level] << std::endl;
+  while(level > 0 && (flipped[level] || /* phase-locked */ (polarity[var(trail[trail_lim[level]])] & 0x2) != 0)) {
+    --level;
+    Debug("flipdec") << "FLIP: looking at level " << level << " dec is " << trail[trail_lim[level]] << " flippable?" << ((polarity[var(trail[trail_lim[level]])] & 0x2) == 0 ? 2 : 0) << " flipped?" << flipped[level] << std::endl;
+  }
+  if(level < 0) {
+    Lit l = trail[trail_lim[0]];
+    Debug("flipdec") << "FLIP: canceling everything, flipping root decision " << l << std::endl;
+    cancelUntil(0);
+    newDecisionLevel();
+    Debug("flipdec") << "FLIP: enqueuing " << ~l << std::endl;
+    uncheckedEnqueue(~l);
+    flipped[0] = true;
+    Debug("flipdec") << "FLIP: returning false" << std::endl;
+    return false;
+  }
+  Lit l = trail[trail_lim[level]];
+  Debug("flipdec") << "FLIP: canceling to level " << level << ", flipping decision " << l << std::endl;
+  cancelUntil(level);
+  newDecisionLevel();
+  Debug("flipdec") << "FLIP: enqueuing " << ~l << std::endl;
+  uncheckedEnqueue(~l);
+  flipped[level] = true;
+  Debug("flipdec") << "FLIP: returning true" << std::endl;
+  return true;
+}
+
+
+CRef Solver::updateLemmas() {
+
+  Debug("minisat::lemmas") << "Solver::updateLemmas() begin" << std::endl;
+
+  // Avoid adding lemmas indefinitely without resource-out
+  proxy->spendResource(options::lemmaStep());
+
+  CRef conflict = CRef_Undef;
+
+  // Decision level to backtrack to
+  int backtrackLevel = decisionLevel();
+
+  // We use this comparison operator
+  lemma_lt lt(*this);
+
+  // Check for propagation and level to backtrack to
+  int i = 0;
+  while (i < lemmas.size()) {
+    // We need this loop as when we backtrack, due to registration more lemmas could be added
+    for (; i < lemmas.size(); ++ i)
+    {
+      // The current lemma
+      vec<Lit>& lemma = lemmas[i];
+
+      Debug("pf::sat") << "Solver::updateLemmas: working on lemma: ";
+      for (int k = 0; k < lemma.size(); ++k) {
+        Debug("pf::sat") << lemma[k] << " ";
+      }
+      Debug("pf::sat") << std::endl;
+
+      // If it's an empty lemma, we have a conflict at zero level
+      if (lemma.size() == 0) {
+        Assert (! PROOF_ON());
+        conflict = CRef_Lazy;
+        backtrackLevel = 0;
+        Debug("minisat::lemmas") << "Solver::updateLemmas(): found empty clause" << std::endl;
+        continue;
+      }
+      // Sort the lemma to be able to attach
+      sort(lemma, lt);
+      // See if the lemma propagates something
+      if (lemma.size() == 1 || value(lemma[1]) == l_False) {
+        Debug("minisat::lemmas") << "found unit " << lemma.size() << std::endl;
+        // This lemma propagates, see which level we need to backtrack to
+        int currentBacktrackLevel = lemma.size() == 1 ? 0 : level(var(lemma[1]));
+        // Even if the first literal is true, we should propagate it at this level (unless it's set at a lower level)
+        if (value(lemma[0]) != l_True || level(var(lemma[0])) > currentBacktrackLevel) {
+          if (currentBacktrackLevel < backtrackLevel) {
+            backtrackLevel = currentBacktrackLevel;
+          }
+        }
+      }
+    }
+
+    // Pop so that propagation would be current
+    Debug("minisat::lemmas") << "Solver::updateLemmas(): backtracking to " << backtrackLevel << " from " << decisionLevel() << std::endl;
+    cancelUntil(backtrackLevel);
+  }
+
+  // Last index in the trail
+  int backtrack_index = trail.size();
+
+  PROOF(Assert (lemmas.size() == (int)lemmas_cnf_assertion.size()););
+
+  // Attach all the clauses and enqueue all the propagations
+  for (int i = 0; i < lemmas.size(); ++ i)
+  {
+    // The current lemma
+    vec<Lit>& lemma = lemmas[i];
+    bool removable = lemmas_removable[i];
+
+    // Attach it if non-unit
+    CRef lemma_ref = CRef_Undef;
+    if (lemma.size() > 1) {
+      // If the lemmas is removable, we can compute its level by the level
+      int clauseLevel = assertionLevel;
+      if (removable) {
+        clauseLevel = 0;
+        for (int i = 0; i < lemma.size(); ++ i) {
+          clauseLevel = std::max(clauseLevel, intro_level(var(lemma[i])));
+        }
+      }
+
+      lemma_ref = ca.alloc(clauseLevel, lemma, removable);
+      PROOF
+        (
+         TNode cnf_assertion = lemmas_cnf_assertion[i].first;
+         TNode cnf_def = lemmas_cnf_assertion[i].second;
+
+         Debug("pf::sat") << "Minisat::Solver registering a THEORY_LEMMA (2)" << std::endl;
+         ClauseId id = ProofManager::getSatProof()->registerClause(lemma_ref, THEORY_LEMMA);
+         ProofManager::getCnfProof()->setClauseAssertion(id, cnf_assertion);
+         ProofManager::getCnfProof()->setClauseDefinition(id, cnf_def);
+         );
+      if (removable) {
+        clauses_removable.push(lemma_ref);
+      } else {
+        clauses_persistent.push(lemma_ref);
+      }
+      attachClause(lemma_ref);
+    } else {
+      PROOF
+        (
+         Node cnf_assertion = lemmas_cnf_assertion[i].first;
+         Node cnf_def = lemmas_cnf_assertion[i].second;
+
+         Debug("pf::sat") << "Minisat::Solver registering a THEORY_LEMMA (3)" << std::endl;
+         ClauseId id = ProofManager::getSatProof()->registerUnitClause(lemma[0], THEORY_LEMMA);
+         ProofManager::getCnfProof()->setClauseAssertion(id, cnf_assertion);
+         ProofManager::getCnfProof()->setClauseDefinition(id, cnf_def);
+         );
+    }
+
+    // If the lemma is propagating enqueue its literal (or set the conflict)
+    if (conflict == CRef_Undef && value(lemma[0]) != l_True) {
+      if (lemma.size() == 1 || (value(lemma[1]) == l_False && trail_index(var(lemma[1])) < backtrack_index)) {
+        if (value(lemma[0]) == l_False) {
+          // We have a conflict
+          if (lemma.size() > 1) {
+            Debug("minisat::lemmas") << "Solver::updateLemmas(): conflict" << std::endl;
+            conflict = lemma_ref;
+          } else {
+            Debug("minisat::lemmas") << "Solver::updateLemmas(): unit conflict or empty clause" << std::endl;
+            conflict = CRef_Lazy;
+            PROOF( ProofManager::getSatProof()->storeUnitConflict(lemma[0], LEARNT); );
+          }
+        } else {
+          Debug("minisat::lemmas") << "lemma size is " << lemma.size() << std::endl;
+          uncheckedEnqueue(lemma[0], lemma_ref);
+        }
+      }
+    }
+  }
+
+  PROOF(Assert (lemmas.size() == (int)lemmas_cnf_assertion.size()););
+  // Clear the lemmas
+  lemmas.clear();
+  lemmas_cnf_assertion.clear();
+  lemmas_removable.clear();
+
+  if (conflict != CRef_Undef) {
+    theoryConflict = true;
+  }
+
+  Debug("minisat::lemmas") << "Solver::updateLemmas() end" << std::endl;
+
+  return conflict;
+}
+
+void ClauseAllocator::reloc(CRef& cr, ClauseAllocator& to, CVC4::CoreProofProxy* proxy)
+{
+
+  // FIXME what is this CRef_lazy
+  if (cr == CRef_Lazy) return;
+
+  CRef old = cr;  // save the old reference
+  Clause& c = operator[](cr);
+  if (c.reloced()) { cr = c.relocation(); return; }
+
+  cr = to.alloc(c.level(), c, c.removable());
+  c.relocate(cr);
+  if (proxy) {
+    proxy->updateCRef(old, cr);
+  }
+  // Copy extra data-fields:
+  // (This could be cleaned-up. Generalize Clause-constructor to be applicable here instead?)
+  to[cr].mark(c.mark());
+  if (to[cr].removable())         to[cr].activity() = c.activity();
+  else if (to[cr].has_extra()) to[cr].calcAbstraction();
+}
+
+inline bool Solver::withinBudget(uint64_t ammount) const {
+  Assert (proxy);
+  // spendResource sets async_interrupt or throws UnsafeInterruptException
+  // depending on whether hard-limit is enabled
+  proxy->spendResource(ammount);
+
+  bool within_budget =  !asynch_interrupt &&
+    (conflict_budget    < 0 || conflicts < (uint64_t)conflict_budget) &&
+    (propagation_budget < 0 || propagations < (uint64_t)propagation_budget);
+  return within_budget;
+}
+
+
+} /* CVC4::Minisat namespace */
+} /* CVC4 namespace */
diff --git a/src/prop/minisat/core/Solver.h b/src/prop/minisat/core/Solver.h
new file mode 100644
index 0000000..99c47e0
--- /dev/null
+++ b/src/prop/minisat/core/Solver.h
@@ -0,0 +1,575 @@
+/****************************************************************************************[Solver.h]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef Minisat_Solver_h
+#define Minisat_Solver_h
+
+#include "cvc4_private.h"
+
+#include <iosfwd>
+
+#include "base/output.h"
+#include "context/context.h"
+#include "proof/clause_id.h"
+#include "prop/minisat/core/SolverTypes.h"
+#include "prop/minisat/mtl/Alg.h"
+#include "prop/minisat/mtl/Heap.h"
+#include "prop/minisat/mtl/Vec.h"
+#include "prop/minisat/utils/Options.h"
+#include "theory/theory.h"
+
+
+namespace CVC4 {
+template <class Solver> class TSatProof;
+
+namespace prop {
+  class TheoryProxy;
+}/* CVC4::prop namespace */
+}/* CVC4 namespace */
+
+
+namespace CVC4 {
+namespace Minisat {
+
+//=================================================================================================
+// Solver -- the main class:
+
+class Solver {
+
+  /** The only two CVC4 entry points to the private solver data */
+  friend class CVC4::prop::TheoryProxy;
+  friend class CVC4::TSatProof<Minisat::Solver>;
+
+public:
+  static CRef TCRef_Undef;
+  static CRef TCRef_Lazy;
+
+  typedef Var TVar;
+  typedef Lit TLit;
+  typedef Clause TClause; 
+  typedef CRef TCRef;
+  typedef vec<Lit> TLitVec;
+  
+protected:
+
+  /** The pointer to the proxy that provides interfaces to the SMT engine */
+  CVC4::prop::TheoryProxy* proxy;
+
+  /** The context from the SMT solver */
+  CVC4::context::Context* context;
+
+  /** The current assertion level (user) */
+  int assertionLevel;
+
+  /** Variable representing true */
+  Var varTrue;
+
+  /** Variable representing false */
+  Var varFalse;
+
+public:
+  /** Returns the current user assertion level */
+  int getAssertionLevel() const { return assertionLevel; }
+protected:
+  /** Do we allow incremental solving */
+  bool enable_incremental;
+
+  /** Literals propagated by lemmas */
+  vec< vec<Lit> > lemmas;
+
+  /** Is the lemma removable */
+  vec<bool> lemmas_removable;
+
+  /** Nodes being converted to CNF */
+  std::vector< std::pair<CVC4::Node, CVC4::Node > >lemmas_cnf_assertion;
+
+  /** Do a another check if FULL_EFFORT was the last one */
+  bool recheck;
+
+  /** Shrink 'cs' to contain only clauses below given level */
+  void removeClausesAboveLevel(vec<CRef>& cs, int level);
+
+  /** True if we are currently solving. */
+  bool minisat_busy;
+
+  // Information about registration of variables
+  struct VarIntroInfo {
+    Var var;
+    int level;
+    VarIntroInfo(Var var, int level)
+    : var(var), level(level) {}
+  };
+
+  /** Variables to re-register with theory solvers on backtracks */
+  vec<VarIntroInfo> variables_to_register;
+
+  /** Keep only newSize variables */
+  void resizeVars(int newSize);
+
+public:
+
+    // Constructor/Destructor:
+    //
+    Solver(CVC4::prop::TheoryProxy* proxy, CVC4::context::Context* context, bool enableIncremental = false);
+    CVC4_PUBLIC virtual ~Solver();
+
+    // Problem specification:
+    //
+    Var     newVar    (bool polarity = true, bool dvar = true, bool isTheoryAtom = false, bool preRegister = false, bool canErase = true); // Add a new variable with parameters specifying variable mode.
+    Var     trueVar() const { return varTrue; }
+    Var     falseVar() const { return varFalse; }
+
+    // Less than for literals in a lemma
+    struct lemma_lt {
+        Solver& solver;
+        lemma_lt(Solver& solver) : solver(solver) {}
+        bool operator () (Lit x, Lit y) {
+          lbool x_value = solver.value(x);
+          lbool y_value = solver.value(y);
+          // Two unassigned literals are sorted arbitrarily
+          if (x_value == l_Undef && y_value == l_Undef) {
+            return x < y;
+          }
+          // Unassigned literals are put to front
+          if (x_value == l_Undef) return true;
+          if (y_value == l_Undef) return false;
+          // Literals of the same value are sorted by decreasing levels
+          if (x_value == y_value) {
+            return solver.trail_index(var(x)) > solver.trail_index(var(y));
+          } else {
+            // True literals go up front
+            if (x_value == l_True) {
+              return true;
+            } else {
+              return false;
+            }
+          }
+        }
+    };
+
+
+    // CVC4 context push/pop
+    void          push                     ();
+    void          pop                      ();
+
+    // addClause returns the ClauseId corresponding to the clause added in the
+    // reference parameter id.
+    bool    addClause (const vec<Lit>& ps, bool removable, ClauseId& id);  // Add a clause to the solver.
+    bool    addEmptyClause(bool removable);                                // Add the empty clause, making the solver contradictory.
+    bool    addClause (Lit p, bool removable, ClauseId& id);               // Add a unit clause to the solver.
+    bool    addClause (Lit p, Lit q, bool removable, ClauseId& id);        // Add a binary clause to the solver.
+    bool    addClause (Lit p, Lit q, Lit r, bool removable, ClauseId& id); // Add a ternary clause to the solver.
+    bool    addClause_(      vec<Lit>& ps, bool removable, ClauseId& id);  // Add a clause to the solver without making superflous internal copy. Will
+                                                                                 // change the passed vector 'ps'.
+
+    // Solving:
+    //
+    bool    simplify     ();                        // Removes already satisfied clauses.
+    lbool    solve        (const vec<Lit>& assumps); // Search for a model that respects a given set of assumptions.
+    lbool   solveLimited (const vec<Lit>& assumps); // Search for a model that respects a given set of assumptions (With resource constraints).
+    lbool    solve        ();                        // Search without assumptions.
+    lbool    solve        (Lit p);                   // Search for a model that respects a single assumption.
+    lbool    solve        (Lit p, Lit q);            // Search for a model that respects two assumptions.
+    lbool    solve        (Lit p, Lit q, Lit r);     // Search for a model that respects three assumptions.
+    bool    okay         () const;                  // FALSE means solver is in a conflicting state
+
+    void    toDimacs     (); 
+    void    toDimacs     (FILE* f, const vec<Lit>& assumps);            // Write CNF to file in DIMACS-format.
+    void    toDimacs     (const char *file, const vec<Lit>& assumps);
+    void    toDimacs     (FILE* f, Clause& c, vec<Var>& map, Var& max);
+
+    // Convenience versions of 'toDimacs()':
+    void    toDimacs     (const char* file);
+    void    toDimacs     (const char* file, Lit p);
+    void    toDimacs     (const char* file, Lit p, Lit q);
+    void    toDimacs     (const char* file, Lit p, Lit q, Lit r);
+
+    // Variable mode:
+    //
+    void    setPolarity    (Var v, bool b); // Declare which polarity the decision heuristic should use for a variable. Requires mode 'polarity_user'.
+    void    freezePolarity (Var v, bool b); // Declare which polarity the decision heuristic MUST ALWAYS use for a variable. Requires mode 'polarity_user'.
+    void    setDecisionVar (Var v, bool b); // Declare if a variable should be eligible for selection in the decision heuristic.
+    bool    flipDecision   ();              // Backtrack and flip most recent decision
+
+    // Read state:
+    //
+    lbool   value      (Var x) const;       // The current value of a variable.
+    lbool   value      (Lit p) const;       // The current value of a literal.
+    lbool   modelValue (Var x) const;       // The value of a variable in the last model. The last call to solve must have been satisfiable.
+    lbool   modelValue (Lit p) const;       // The value of a literal in the last model. The last call to solve must have been satisfiable.
+    int     nAssigns   ()      const;       // The current number of assigned literals.
+    int     nClauses   ()      const;       // The current number of original clauses.
+    int     nLearnts   ()      const;       // The current number of learnt clauses.
+    int     nVars      ()      const;       // The current number of variables.
+    int     nFreeVars  ()      const;
+    bool    isDecision (Var x) const;       // is the given var a decision?
+
+    // Debugging SMT explanations
+    //
+    bool    properExplanation(Lit l, Lit expl) const; // returns true if expl can be used to explain l---i.e., both assigned and trail_index(expl) < trail_index(l)
+
+    // Resource contraints:
+    //
+    void    setConfBudget(int64_t x);
+    void    setPropBudget(int64_t x);
+    void    budgetOff();
+    void    interrupt();          // Trigger a (potentially asynchronous) interruption of the solver.
+    void    clearInterrupt();     // Clear interrupt indicator flag.
+
+    // Memory managment:
+    //
+    virtual void garbageCollect();
+    void    checkGarbage(double gf);
+    void    checkGarbage();
+
+    // Extra results: (read-only member variable)
+    //
+    vec<lbool> model;             // If problem is satisfiable, this vector contains the model (if any).
+    vec<Lit>   conflict;          // If problem is unsatisfiable (possibly under assumptions),
+                                  // this vector represent the final conflict clause expressed in the assumptions.
+
+    // Mode of operation:
+    //
+    int       verbosity;
+    double    var_decay;
+    double    clause_decay;
+    double    random_var_freq;
+    double    random_seed;
+    bool      luby_restart;
+    int       ccmin_mode;         // Controls conflict clause minimization (0=none, 1=basic, 2=deep).
+    int       phase_saving;       // Controls the level of phase saving (0=none, 1=limited, 2=full).
+    bool      rnd_pol;            // Use random polarities for branching heuristics.
+    bool      rnd_init_act;       // Initialize variable activities with a small random value.
+    double    garbage_frac;       // The fraction of wasted memory allowed before a garbage collection is triggered.
+
+    int       restart_first;      // The initial restart limit.                                                                (default 100)
+    double    restart_inc;        // The factor with which the restart limit is multiplied in each restart.                    (default 1.5)
+    double    learntsize_factor;  // The intitial limit for learnt clauses is a factor of the original clauses.                (default 1 / 3)
+    double    learntsize_inc;     // The limit for learnt clauses is multiplied with this factor each restart.                 (default 1.1)
+
+    int       learntsize_adjust_start_confl;
+    double    learntsize_adjust_inc;
+
+    // Statistics: (read-only member variable)
+    //
+    uint64_t solves, starts, decisions, rnd_decisions, propagations, conflicts, resources_consumed;
+    uint64_t dec_vars, clauses_literals, learnts_literals, max_literals, tot_literals;
+
+protected:
+
+    // Helper structures:
+    //
+    struct VarData {
+      // Reason for the literal being in the trail
+      CRef reason;
+      // Sat level when the literal was added to the trail
+      int level;
+      // User level when the literal was added to the trail
+      int user_level;
+      // User level at which this literal was introduced
+      int intro_level;
+      // The index in the trail
+      int trail_index;
+
+      VarData(CRef reason, int level, int user_level, int intro_level, int trail_index)
+      : reason(reason)
+      , level(level)
+      , user_level(user_level)
+      , intro_level(intro_level)
+      , trail_index(trail_index)
+      {}
+    };
+
+    struct Watcher {
+        CRef cref;
+        Lit  blocker;
+        Watcher(CRef cr, Lit p) : cref(cr), blocker(p) {}
+        bool operator==(const Watcher& w) const { return cref == w.cref; }
+        bool operator!=(const Watcher& w) const { return cref != w.cref; }
+    };
+
+    struct WatcherDeleted
+    {
+        const ClauseAllocator& ca;
+        WatcherDeleted(const ClauseAllocator& _ca) : ca(_ca) {}
+        bool operator()(const Watcher& w) const { return ca[w.cref].mark() == 1; }
+    };
+
+    struct VarOrderLt {
+        const vec<double>&  activity;
+        bool operator () (Var x, Var y) const { return activity[x] > activity[y]; }
+        VarOrderLt(const vec<double>&  act) : activity(act) { }
+    };
+
+    // Solver state:
+    //
+    bool                ok;                 // If FALSE, the constraints are already unsatisfiable. No part of the solver state may be used!
+    vec<CRef>           clauses_persistent; // List of problem clauses.
+    vec<CRef>           clauses_removable;  // List of learnt clauses.
+    double              cla_inc;            // Amount to bump next clause with.
+    vec<double>         activity;           // A heuristic measurement of the activity of a variable.
+    double              var_inc;            // Amount to bump next variable with.
+    OccLists<Lit, vec<Watcher>, WatcherDeleted>
+                        watches;            // 'watches[lit]' is a list of constraints watching 'lit' (will go there if literal becomes true).
+    vec<lbool>          assigns;            // The current assignments.
+    vec<int>            assigns_lim;        // The size by levels of the current assignment
+    vec<char>           polarity;           // The preferred polarity of each variable (bit 0) and whether it's locked (bit 1).
+    vec<char>           decision;           // Declares if a variable is eligible for selection in the decision heuristic.
+    vec<int>            flipped;            // Which trail_lim decisions have been flipped in this context.
+    vec<Lit>            trail;              // Assignment stack; stores all assigments made in the order they were made.
+    vec<int>            trail_lim;          // Separator indices for different decision levels in 'trail'.
+    vec<bool>           trail_ok;           // Stack of "whether we're in conflict" flags.
+    vec<VarData>        vardata;            // Stores reason and level for each variable.
+    int                 qhead;              // Head of queue (as index into the trail -- no more explicit propagation queue in MiniSat).
+    int                 simpDB_assigns;     // Number of top-level assignments since last execution of 'simplify()'.
+    int64_t             simpDB_props;       // Remaining number of propagations that must be made before next execution of 'simplify()'.
+    vec<Lit>            assumptions;        // Current set of assumptions provided to solve by the user.
+    Heap<VarOrderLt>    order_heap;         // A priority queue of variables ordered with respect to the variable activity.
+    double              progress_estimate;  // Set by 'search()'.
+    bool                remove_satisfied;   // Indicates whether possibly inefficient linear scan for satisfied clauses should be performed in 'simplify'.
+
+    ClauseAllocator     ca;
+
+    // CVC4 Stuff
+    vec<bool>           theory;           // Is the variable representing a theory atom
+
+    enum TheoryCheckType {
+      // Quick check, but don't perform theory reasoning
+      CHECK_WITHOUT_THEORY,
+      // Check and perform theory reasoning
+      CHECK_WITH_THEORY,
+      // The SAT abstraction of the problem is satisfiable, perform a full theory check
+      CHECK_FINAL,
+      // Perform a full theory check even if not done with everything
+      CHECK_FINAL_FAKE
+    };
+
+    // Temporaries (to reduce allocation overhead). Each variable is prefixed by the method in which it is
+    // used, exept 'seen' wich is used in several places.
+    //
+    vec<char>           seen;
+    vec<Lit>            analyze_stack;
+    vec<Lit>            analyze_toclear;
+    vec<Lit>            add_tmp;
+
+    double              max_learnts;
+    double              learntsize_adjust_confl;
+    int                 learntsize_adjust_cnt;
+
+    // Resource contraints:
+    //
+    int64_t             conflict_budget;    // -1 means no budget.
+    int64_t             propagation_budget; // -1 means no budget.
+    bool                asynch_interrupt;
+
+    // Main internal methods:
+    //
+    void     insertVarOrder   (Var x);                                                 // Insert a variable in the decision order priority queue.
+    Lit      pickBranchLit    ();                                                      // Return the next decision variable.
+    void     newDecisionLevel ();                                                      // Begins a new decision level.
+    void     uncheckedEnqueue (Lit p, CRef from = CRef_Undef);                         // Enqueue a literal. Assumes value of literal is undefined.
+    bool     enqueue          (Lit p, CRef from = CRef_Undef);                         // Test if fact 'p' contradicts current state, enqueue otherwise.
+    bool     theoryConflict;                                                           // Was the last conflict a theory conflict
+    CRef     propagate        (TheoryCheckType type);                                  // Perform Boolean and Theory. Returns possibly conflicting clause.
+    CRef     propagateBool    ();                                                      // Perform Boolean propagation. Returns possibly conflicting clause.
+    void     propagateTheory  ();                                                      // Perform Theory propagation.
+    void     theoryCheck      (CVC4::theory::Theory::Effort effort);                   // Perform a theory satisfiability check. Adds lemmas.
+    CRef     updateLemmas     ();                                                      // Add the lemmas, backtraking if necessary and return a conflict if there is one
+    void     cancelUntil      (int level);                                             // Backtrack until a certain level.
+    void     popTrail         ();                                                      // Backtrack the trail to the previous push position
+    int      analyze          (CRef confl, vec<Lit>& out_learnt, int& out_btlevel);    // (bt = backtrack)
+    void     analyzeFinal     (Lit p, vec<Lit>& out_conflict);                         // COULD THIS BE IMPLEMENTED BY THE ORDINARIY "analyze" BY SOME REASONABLE GENERALIZATION?
+    bool     litRedundant     (Lit p, uint32_t abstract_levels);                       // (helper method for 'analyze()') - true if p is redundant
+    lbool    search           (int nof_conflicts);                                     // Search for a given number of conflicts.
+    lbool    solve_           ();                                                      // Main solve method (assumptions given in 'assumptions').
+    void     reduceDB         ();                                                      // Reduce the set of learnt clauses.
+    void     removeSatisfied  (vec<CRef>& cs);                                         // Shrink 'cs' to contain only non-satisfied clauses.
+    void     rebuildOrderHeap ();
+
+    // Maintaining Variable/Clause activity:
+    //
+    void     varDecayActivity ();                      // Decay all variables with the specified factor. Implemented by increasing the 'bump' value instead.
+    void     varBumpActivity  (Var v, double inc);     // Increase a variable with the current 'bump' value.
+    void     varBumpActivity  (Var v);                 // Increase a variable with the current 'bump' value.
+    void     claDecayActivity ();                      // Decay all clauses with the specified factor. Implemented by increasing the 'bump' value instead.
+    void     claBumpActivity  (Clause& c);             // Increase a clause with the current 'bump' value.
+
+    // Operations on clauses:
+    //
+    void     attachClause     (CRef cr);               // Attach a clause to watcher lists.
+    void     detachClause     (CRef cr, bool strict = false); // Detach a clause to watcher lists.
+    void     removeClause     (CRef cr);               // Detach and free a clause.
+    bool     locked           (const Clause& c) const; // Returns TRUE if a clause is a reason for some implication in the current state.
+    bool     satisfied        (const Clause& c) const; // Returns TRUE if a clause is satisfied in the current state.
+
+    void     relocAll         (ClauseAllocator& to);
+
+    // Misc:
+    //
+    int      decisionLevel    ()      const; // Gives the current decisionlevel.
+    uint32_t abstractLevel    (Var x) const; // Used to represent an abstraction of sets of decision levels.
+    CRef     reason           (Var x); // Get the reason of the variable (non const as it might create the explanation on the fly)
+    bool     hasReasonClause  (Var x) const; // Does the variable have a reason
+    bool     isPropagated     (Var x) const; // Does the variable have a propagated variables
+    bool     isPropagatedBy   (Var x, const Clause& c) const; // Is the value of the variable propagated by the clause Clause C
+
+    int      level            (Var x) const;
+    int      user_level       (Var x) const; // User level at which this variable was asserted
+    int      intro_level      (Var x) const; // User level at which this variable was created
+    int      trail_index      (Var x) const; // Index in the trail
+    double   progressEstimate ()      const; // DELETE THIS ?? IT'S NOT VERY USEFUL ...
+public:
+    bool     withinBudget     (uint64_t amount)      const;
+protected:
+
+    // Static helpers:
+    //
+
+    // Returns a random float 0 <= x < 1. Seed must never be 0.
+    static inline double drand(double& seed) {
+        seed *= 1389796;
+        int q = (int)(seed / 2147483647);
+        seed -= (double)q * 2147483647;
+        return seed / 2147483647; }
+
+    // Returns a random integer 0 <= x < size. Seed must never be 0.
+    static inline int irand(double& seed, int size) {
+        return (int)(drand(seed) * size); }
+};
+
+
+
+//=================================================================================================
+// Implementation of inline methods:
+
+inline bool Solver::hasReasonClause(Var x) const { return vardata[x].reason != CRef_Undef && vardata[x].reason != CRef_Lazy; }
+
+inline bool Solver::isPropagated(Var x) const { return vardata[x].reason != CRef_Undef; }
+
+inline bool Solver::isPropagatedBy(Var x, const Clause& c) const { return vardata[x].reason != CRef_Undef && vardata[x].reason != CRef_Lazy && ca.lea(vardata[var(c[0])].reason) == &c; }
+
+inline bool Solver::isDecision(Var x) const { Debug("minisat") << "var " << x << " is a decision iff " << (vardata[x].reason == CRef_Undef) << " && " << level(x) << " > 0" << std::endl; return vardata[x].reason == CRef_Undef && level(x) > 0; }
+
+inline int  Solver::level (Var x) const { assert(x < vardata.size()); return vardata[x].level; }
+
+inline int  Solver::user_level(Var x) const { assert(x < vardata.size()); return vardata[x].user_level; }
+
+inline int  Solver::intro_level(Var x) const { assert(x < vardata.size()); return vardata[x].intro_level; }
+
+inline int  Solver::trail_index(Var x) const { assert(x < vardata.size()); return vardata[x].trail_index; }
+
+inline void Solver::insertVarOrder(Var x) {
+    assert(x < vardata.size());
+    if (!order_heap.inHeap(x) && decision[x]) order_heap.insert(x); }
+
+inline void Solver::varDecayActivity() { var_inc *= (1 / var_decay); }
+inline void Solver::varBumpActivity(Var v) { varBumpActivity(v, var_inc); }
+inline void Solver::varBumpActivity(Var v, double inc) {
+    if ( (activity[v] += inc) > 1e100 ) {
+        // Rescale:
+        for (int i = 0; i < nVars(); i++)
+            activity[i] *= 1e-100;
+        var_inc *= 1e-100; }
+
+    // Update order_heap with respect to new activity:
+    if (order_heap.inHeap(v))
+        order_heap.decrease(v); }
+
+inline void Solver::claDecayActivity() { cla_inc *= (1 / clause_decay); }
+inline void Solver::claBumpActivity (Clause& c) {
+        if ( (c.activity() += cla_inc) > 1e20 ) {
+            // Rescale:
+            for (int i = 0; i < clauses_removable.size(); i++)
+                ca[clauses_removable[i]].activity() *= 1e-20;
+            cla_inc *= 1e-20; } }
+
+inline void Solver::checkGarbage(void){ return checkGarbage(garbage_frac); }
+inline void Solver::checkGarbage(double gf){
+    if (ca.wasted() > ca.size() * gf)
+        garbageCollect(); }
+
+// NOTE: enqueue does not set the ok flag! (only public methods do)
+inline bool     Solver::enqueue         (Lit p, CRef from)      { return value(p) != l_Undef ? value(p) != l_False : (uncheckedEnqueue(p, from), true); }
+inline bool     Solver::addClause       (const vec<Lit>& ps, bool removable, ClauseId& id)
+                                                                { ps.copyTo(add_tmp); return addClause_(add_tmp, removable, id); }
+inline bool     Solver::addEmptyClause  (bool removable)        { add_tmp.clear(); ClauseId tmp; return addClause_(add_tmp, removable, tmp); }
+inline bool     Solver::addClause       (Lit p, bool removable, ClauseId& id)
+                                                                { add_tmp.clear(); add_tmp.push(p); return addClause_(add_tmp, removable, id); }
+inline bool     Solver::addClause       (Lit p, Lit q, bool removable, ClauseId& id)
+                                                                { add_tmp.clear(); add_tmp.push(p); add_tmp.push(q); return addClause_(add_tmp, removable, id); }
+inline bool     Solver::addClause       (Lit p, Lit q, Lit r, bool removable, ClauseId& id)
+                                                                { add_tmp.clear(); add_tmp.push(p); add_tmp.push(q); add_tmp.push(r); return addClause_(add_tmp, removable, id); }
+inline bool     Solver::locked          (const Clause& c) const { return value(c[0]) == l_True && isPropagatedBy(var(c[0]), c); }
+inline void     Solver::newDecisionLevel()                      { trail_lim.push(trail.size()); flipped.push(false); context->push(); if(Dump.isOn("state")) { Dump("state") << CVC4::PushCommand(); } }
+
+inline int      Solver::decisionLevel ()      const   { return trail_lim.size(); }
+inline uint32_t Solver::abstractLevel (Var x) const   { return 1 << (level(x) & 31); }
+inline lbool    Solver::value         (Var x) const   { assert(x < nVars()); return assigns[x]; }
+inline lbool    Solver::value         (Lit p) const   { assert(var(p) < nVars()); return assigns[var(p)] ^ sign(p); }
+inline lbool    Solver::modelValue    (Var x) const   { return model[x]; }
+inline lbool    Solver::modelValue    (Lit p) const   { return model[var(p)] ^ sign(p); }
+inline int      Solver::nAssigns      ()      const   { return trail.size(); }
+inline int      Solver::nClauses      ()      const   { return clauses_persistent.size(); }
+inline int      Solver::nLearnts      ()      const   { return clauses_removable.size(); }
+inline int      Solver::nVars         ()      const   { return vardata.size(); }
+inline int      Solver::nFreeVars     ()      const   { return (int)dec_vars - (trail_lim.size() == 0 ? trail.size() : trail_lim[0]); }
+inline bool     Solver::properExplanation(Lit l, Lit expl) const { return value(l) == l_True && value(expl) == l_True && trail_index(var(expl)) < trail_index(var(l)); }
+inline void     Solver::setPolarity   (Var v, bool b) { polarity[v] = b; }
+inline void     Solver::freezePolarity(Var v, bool b) { polarity[v] = int(b) | 0x2; }
+inline void     Solver::setDecisionVar(Var v, bool b)
+{
+    if      ( b && !decision[v] ) dec_vars++;
+    else if (!b &&  decision[v] ) dec_vars--;
+
+    decision[v] = b;
+    insertVarOrder(v);
+}
+
+inline void     Solver::setConfBudget(int64_t x){ conflict_budget    = conflicts    + x; }
+inline void     Solver::setPropBudget(int64_t x){ propagation_budget = propagations + x; }
+inline void     Solver::interrupt(){ asynch_interrupt = true; }
+inline void     Solver::clearInterrupt(){ asynch_interrupt = false; }
+inline void     Solver::budgetOff(){ conflict_budget = propagation_budget = -1; }
+
+inline lbool     Solver::solve         ()                    { budgetOff(); assumptions.clear(); return solve_(); }
+inline lbool     Solver::solve         (Lit p)               { budgetOff(); assumptions.clear(); assumptions.push(p); return solve_(); }
+inline lbool     Solver::solve         (Lit p, Lit q)        { budgetOff(); assumptions.clear(); assumptions.push(p); assumptions.push(q); return solve_(); }
+inline lbool     Solver::solve         (Lit p, Lit q, Lit r) { budgetOff(); assumptions.clear(); assumptions.push(p); assumptions.push(q); assumptions.push(r); return solve_(); }
+inline lbool     Solver::solve         (const vec<Lit>& assumps){ budgetOff(); assumps.copyTo(assumptions); return solve_(); }
+inline lbool    Solver::solveLimited  (const vec<Lit>& assumps){ assumps.copyTo(assumptions); return solve_(); }
+inline bool     Solver::okay          ()      const   { return ok; }
+
+inline void     Solver::toDimacs     () { vec<Lit> as; toDimacs(stdout, as); }
+inline void     Solver::toDimacs     (const char* file){ vec<Lit> as; toDimacs(file, as); }
+inline void     Solver::toDimacs     (const char* file, Lit p){ vec<Lit> as; as.push(p); toDimacs(file, as); }
+inline void     Solver::toDimacs     (const char* file, Lit p, Lit q){ vec<Lit> as; as.push(p); as.push(q); toDimacs(file, as); }
+inline void     Solver::toDimacs     (const char* file, Lit p, Lit q, Lit r){ vec<Lit> as; as.push(p); as.push(q); as.push(r); toDimacs(file, as); }
+
+
+
+//=================================================================================================
+// Debug etc:
+
+
+//=================================================================================================
+} /* CVC4::Minisat namespace */
+} /* CVC4 namespace */
+
+#endif
diff --git a/src/prop/minisat/core/SolverTypes.h b/src/prop/minisat/core/SolverTypes.h
new file mode 100644
index 0000000..116a39a
--- /dev/null
+++ b/src/prop/minisat/core/SolverTypes.h
@@ -0,0 +1,490 @@
+/***********************************************************************************[SolverTypes.h]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#include "cvc4_private.h"
+
+#ifndef Minisat_SolverTypes_h
+#define Minisat_SolverTypes_h
+
+#include <assert.h>
+#include "base/output.h"
+#include "prop/minisat/mtl/IntTypes.h"
+#include "prop/minisat/mtl/Alg.h"
+#include "prop/minisat/mtl/Vec.h"
+#include "prop/minisat/mtl/Map.h"
+#include "prop/minisat/mtl/Alloc.h"
+
+namespace CVC4 {
+namespace Minisat {
+
+//=================================================================================================
+// Variables, literals, lifted booleans, clauses:
+
+
+// NOTE! Variables are just integers. No abstraction here. They should be chosen from 0..N,
+// so that they can be used as array indices.
+
+typedef int Var;
+#define var_Undef (-1)
+
+
+
+struct Lit {
+    int     x;
+
+    // Use this as a constructor:
+    friend Lit mkLit(Var var, bool sign);
+
+    bool operator == (Lit p) const { return x == p.x; }
+    bool operator != (Lit p) const { return x != p.x; }
+    bool operator <  (Lit p) const { return x < p.x;  } // '<' makes p, ~p adjacent in the ordering.
+};
+
+
+inline  Lit  mkLit     (Var var, bool sign = false) { Lit p; p.x = var + var + (int)sign; return p; }
+inline  Lit  operator ~(Lit p)              { Lit q; q.x = p.x ^ 1; return q; }
+inline  Lit  operator ^(Lit p, bool b)      { Lit q; q.x = p.x ^ (unsigned int)b; return q; }
+inline  bool sign      (Lit p)              { return p.x & 1; }
+inline  int  var       (Lit p)              { return p.x >> 1; }
+
+// Mapping Literals to and from compact integers suitable for array indexing:
+inline  int  toInt     (Var v)              { return v; } 
+inline  int  toInt     (Lit p)              { return p.x; } 
+inline  Lit  toLit     (int i)              { Lit p; p.x = i; return p; } 
+
+//const Lit lit_Undef = mkLit(var_Undef, false);  // }- Useful special constants.
+//const Lit lit_Error = mkLit(var_Undef, true );  // }
+
+const Lit lit_Undef = { -2 };  // }- Useful special constants.
+const Lit lit_Error = { -1 };  // }
+
+
+//=================================================================================================
+// Lifted booleans:
+//
+// NOTE: this implementation is optimized for the case when comparisons between values are mostly
+//       between one variable and one constant. Some care had to be taken to make sure that gcc 
+//       does enough constant propagation to produce sensible code, and this appears to be somewhat
+//       fragile unfortunately.
+
+/*
+  This is to avoid multiple definitions of l_True, l_False and l_Undef if using multiple copies of
+  Minisat.
+  IMPORTANT: if we you change the value of the constants so that it is not the same in all copies
+  of Minisat this breaks! 
+ */
+
+#ifndef l_True
+#define l_True  (lbool((uint8_t)0)) // gcc does not do constant propagation if these are real constants.
+#endif
+
+#ifndef l_False
+#define l_False (lbool((uint8_t)1))
+#endif
+
+#ifndef l_Undef
+#define l_Undef (lbool((uint8_t)2))
+#endif
+
+class lbool {
+    uint8_t value;
+
+public:
+    explicit lbool(uint8_t v) : value(v) { }
+
+    lbool()       : value(0) { }
+    explicit lbool(bool x) : value(!x) { }
+
+    bool  operator == (lbool b) const { return ((b.value&2) & (value&2)) | (!(b.value&2)&(value == b.value)); }
+    bool  operator != (lbool b) const { return !(*this == b); }
+    lbool operator ^  (bool  b) const { return lbool((uint8_t)(value^(uint8_t)b)); }
+
+    lbool operator && (lbool b) const { 
+        uint8_t sel = (this->value << 1) | (b.value << 3);
+        uint8_t v   = (0xF7F755F4 >> sel) & 3;
+        return lbool(v); }
+
+    lbool operator || (lbool b) const {
+        uint8_t sel = (this->value << 1) | (b.value << 3);
+        uint8_t v   = (0xFCFCF400 >> sel) & 3;
+        return lbool(v); }
+
+    friend int   toInt  (lbool l);
+    friend lbool toLbool(int   v);
+};
+inline int   toInt  (lbool l) { return l.value; }
+inline lbool toLbool(int   v) { return lbool((uint8_t)v);  }
+
+
+class Clause;
+typedef RegionAllocator<uint32_t>::Ref CRef;
+
+/* convenience printing functions */
+
+
+inline std::ostream& operator <<(std::ostream& out, Minisat::Lit lit) {
+  const char * s = (Minisat::sign(lit)) ? "~" : " ";
+  out << s << Minisat::var(lit);
+  return out;
+}
+
+inline std::ostream& operator <<(std::ostream& out, Minisat::vec<Minisat::Lit>& clause) {
+  out << "clause:";
+  for(int i = 0; i < clause.size(); ++i) {
+    out << " " << clause[i];
+  }
+  out << ";";
+  return out;
+}
+
+inline std::ostream& operator <<(std::ostream& out, Minisat::lbool val) {
+  std::string val_str; 
+  if( val == l_False ) {
+    val_str = "0";
+  } else if (val == l_True ) {
+    val_str = "1";
+  } else { // unknown
+    val_str = "_";
+  }
+
+  out << val_str;
+  return out;
+}
+
+
+class Solver;
+
+class ProofProxyAbstract {
+public:
+  virtual ~ProofProxyAbstract() {}
+  virtual void updateCRef(Minisat::CRef oldref, Minisat::CRef newref) = 0; 
+};
+
+} /* namespace CVC4::Minisat */
+} /* namespace CVC4 */
+
+
+namespace CVC4 {
+template <class Solver> class ProofProxy;
+typedef ProofProxy<CVC4::Minisat::Solver> CoreProofProxy;
+} 
+
+namespace CVC4 {
+namespace Minisat{
+
+//=================================================================================================
+// Clause -- a simple class for representing a clause:
+
+class Clause {
+    struct {
+        unsigned mark      : 2;
+        unsigned removable : 1;
+        unsigned has_extra : 1;
+        unsigned reloced   : 1;
+        unsigned size      : 27;
+        unsigned level     : 32; }                            header;
+    union { Lit lit; float act; uint32_t abs; CRef rel; } data[0];
+
+    friend class ClauseAllocator;
+
+    // NOTE: This constructor cannot be used directly (doesn't allocate enough memory).
+    template<class V>
+    Clause(const V& ps, bool use_extra, bool removable, int level) {
+        header.mark      = 0;
+        header.removable = removable;
+        header.has_extra = use_extra;
+        header.reloced   = 0;
+        header.size      = ps.size();
+        header.level     = level;
+
+        for (int i = 0; i < ps.size(); i++) 
+            data[i].lit = ps[i];
+
+        if (header.has_extra){
+            if (header.removable)
+                data[header.size].act = 0; 
+            else 
+                calcAbstraction(); }
+    }
+
+public:
+    void calcAbstraction() {
+        assert(header.has_extra);
+        uint32_t abstraction = 0;
+        for (int i = 0; i < size(); i++)
+            abstraction |= 1 << (var(data[i].lit) & 31);
+        data[header.size].abs = abstraction;  }
+
+
+    int          level       ()      const   { return header.level; }
+    int          size        ()      const   { return header.size; }
+    void         shrink      (int i)         { assert(i <= size()); if (header.has_extra) data[header.size-i] = data[header.size]; header.size -= i; }
+    void         pop         ()              { shrink(1); }
+    bool         removable   ()      const   { return header.removable; }
+    bool         has_extra   ()      const   { return header.has_extra; }
+    uint32_t     mark        ()      const   { return header.mark; }
+    void         mark        (uint32_t m)    { header.mark = m; }
+    const Lit&   last        ()      const   { return data[header.size-1].lit; }
+
+    bool         reloced     ()      const   { return header.reloced; }
+    CRef         relocation  ()      const   { return data[0].rel; }
+    void         relocate    (CRef c)        { header.reloced = 1; data[0].rel = c; }
+
+    // NOTE: somewhat unsafe to change the clause in-place! Must manually call 'calcAbstraction' afterwards for
+    //       subsumption operations to behave correctly.
+    Lit&         operator [] (int i)         { return data[i].lit; }
+    Lit          operator [] (int i) const   { return data[i].lit; }
+    operator const Lit* (void) const         { return (Lit*)data; }
+
+    float&       activity    ()              { assert(header.has_extra); return data[header.size].act; }
+    uint32_t     abstraction () const        { assert(header.has_extra); return data[header.size].abs; }
+
+    Lit          subsumes    (const Clause& other) const;
+    void         strengthen  (Lit p);
+};
+
+
+//=================================================================================================
+// ClauseAllocator -- a simple class for allocating memory for clauses:
+
+
+const CRef CRef_Undef = RegionAllocator<uint32_t>::Ref_Undef;
+const CRef CRef_Lazy  = RegionAllocator<uint32_t>::Ref_Undef - 1;
+class ClauseAllocator : public RegionAllocator<uint32_t>
+{
+    static int clauseWord32Size(int size, bool has_extra){
+        return (sizeof(Clause) + (sizeof(Lit) * (size + (int)has_extra))) / sizeof(uint32_t); }
+ public:
+    bool extra_clause_field;
+
+    ClauseAllocator(uint32_t start_cap) : RegionAllocator<uint32_t>(start_cap), extra_clause_field(false){}
+    ClauseAllocator() : extra_clause_field(false){}
+
+    void moveTo(ClauseAllocator& to){
+        to.extra_clause_field = extra_clause_field;
+        RegionAllocator<uint32_t>::moveTo(to); }
+
+    template<class Lits>
+    CRef alloc(int level, const Lits& ps, bool removable = false)
+    {
+        assert(sizeof(Lit)      == sizeof(uint32_t));
+        assert(sizeof(float)    == sizeof(uint32_t));
+        bool use_extra = removable | extra_clause_field;
+
+        CRef cid = RegionAllocator<uint32_t>::alloc(clauseWord32Size(ps.size(), use_extra));
+        new (lea(cid)) Clause(ps, use_extra, removable, level);
+
+        return cid;
+    }
+
+    // Deref, Load Effective Address (LEA), Inverse of LEA (AEL):
+    Clause&       operator[](Ref r)       { return (Clause&)RegionAllocator<uint32_t>::operator[](r); }
+    const Clause& operator[](Ref r) const { return (Clause&)RegionAllocator<uint32_t>::operator[](r); }
+    Clause*       lea       (Ref r)       { return (Clause*)RegionAllocator<uint32_t>::lea(r); }
+    const Clause* lea       (Ref r) const { return (Clause*)RegionAllocator<uint32_t>::lea(r); }
+    Ref           ael       (const Clause* t){ return RegionAllocator<uint32_t>::ael((uint32_t*)t); }
+
+    void free(CRef cid)
+    {
+        Clause& c = operator[](cid);
+        RegionAllocator<uint32_t>::free(clauseWord32Size(c.size(), c.has_extra()));
+    }
+
+  void reloc(CRef& cr, ClauseAllocator& to, CVC4::CoreProofProxy* proxy = NULL);
+  // Implementation moved to Solver.cc.
+};
+
+
+//=================================================================================================
+// OccLists -- a class for maintaining occurence lists with lazy deletion:
+
+template<class Idx, class Vec, class Deleted>
+class OccLists
+{
+    vec<Vec>  occs;
+    vec<char> dirty;
+    vec<Idx>  dirties;
+    Deleted   deleted;
+
+ public:
+    OccLists(const Deleted& d) : deleted(d) {}
+    
+    void  init      (const Idx& idx){ occs.growTo(toInt(idx)+1); dirty.growTo(toInt(idx)+1, 0); }
+    void  resizeTo  (const Idx& idx);
+    // Vec&  operator[](const Idx& idx){ return occs[toInt(idx)]; }
+    Vec&  operator[](const Idx& idx){ return occs[toInt(idx)]; }
+    Vec&  lookup    (const Idx& idx){ if (dirty[toInt(idx)]) clean(idx); return occs[toInt(idx)]; }
+
+    void  cleanAll  ();
+    void  clean     (const Idx& idx);
+    void  smudge    (const Idx& idx){
+        if (dirty[toInt(idx)] == 0){
+            dirty[toInt(idx)] = 1;
+            dirties.push(idx);
+        }
+    }
+
+    void  clear(bool free = true){
+        occs   .clear(free);
+        dirty  .clear(free);
+        dirties.clear(free);
+    }
+};
+
+
+template<class Idx, class Vec, class Deleted>
+void OccLists<Idx,Vec,Deleted>::cleanAll()
+{
+    for (int i = 0; i < dirties.size(); i++)
+        // Dirties may contain duplicates so check here if a variable is already cleaned:
+        if (dirty[toInt(dirties[i])])
+            clean(dirties[i]);
+    dirties.clear();
+}
+
+template<class Idx, class Vec, class Deleted>
+void OccLists<Idx,Vec,Deleted>::resizeTo(const Idx& idx)
+{
+    int shrinkSize = occs.size() - (toInt(idx) + 1);
+    occs.shrink(shrinkSize);
+    dirty.shrink(shrinkSize);
+    // Remove out-of-bound indices from dirties
+    int  i, j;
+    for (i = j = 0; i < dirties.size(); i++)
+        if (toInt(dirties[i]) < occs.size())
+            dirties[j++] = dirties[i];
+    dirties.shrink(i - j);
+}
+
+template<class Idx, class Vec, class Deleted>
+void OccLists<Idx,Vec,Deleted>::clean(const Idx& idx)
+{
+    Vec& vec = occs[toInt(idx)];
+    int  i, j;
+    for (i = j = 0; i < vec.size(); i++)
+        if (!deleted(vec[i]))
+            vec[j++] = vec[i];
+    vec.shrink(i - j);
+    dirty[toInt(idx)] = 0;
+}
+
+
+//=================================================================================================
+// CMap -- a class for mapping clauses to values:
+
+
+template<class T>
+class CMap
+{
+    struct CRefHash {
+        uint32_t operator()(CRef cr) const { return (uint32_t)cr; } };
+
+    typedef Map<CRef, T, CRefHash> HashTable;
+    HashTable map;
+        
+ public:
+    // Size-operations:
+    void     clear       ()                           { map.clear(); }
+    int      size        ()                const      { return map.elems(); }
+
+    
+    // Insert/Remove/Test mapping:
+    void     insert      (CRef cr, const T& t){ map.insert(cr, t); }
+    void     growTo      (CRef cr, const T& t){ map.insert(cr, t); } // NOTE: for compatibility
+    void     remove      (CRef cr)            { map.remove(cr); }
+    bool     has         (CRef cr, T& t)      { return map.peek(cr, t); }
+
+    // Vector interface (the clause 'c' must already exist):
+    const T& operator [] (CRef cr) const      { return map[cr]; }
+    T&       operator [] (CRef cr)            { return map[cr]; }
+
+    // Iteration (not transparent at all at the moment):
+    int  bucket_count() const { return map.bucket_count(); }
+    const vec<typename HashTable::Pair>& bucket(int i) const { return map.bucket(i); }
+
+    // Move contents to other map:
+    void moveTo(CMap& other){ map.moveTo(other.map); }
+
+    // TMP debug:
+    void debug(){
+        printf(" --- size = %d, bucket_count = %d\n", size(), map.bucket_count()); }
+};
+
+
+/*_________________________________________________________________________________________________
+|
+|  subsumes : (other : const Clause&)  ->  Lit
+|  
+|  Description:
+|       Checks if clause subsumes 'other', and at the same time, if it can be used to simplify 'other'
+|       by subsumption resolution.
+|  
+|    Result:
+|       lit_Error  - No subsumption or simplification
+|       lit_Undef  - Clause subsumes 'other'
+|       p          - The literal p can be deleted from 'other'
+|________________________________________________________________________________________________@*/
+inline Lit Clause::subsumes(const Clause& other) const
+{
+    // We restrict subsumtion to clauses at higher levels (if !enable_incremantal this should always be false)
+    if (level() > other.level()) {
+      return lit_Error;
+    }
+
+    //if (other.size() < size() || (extra.abst & ~other.extra.abst) != 0)
+    //if (other.size() < size() || (!learnt() && !other.learnt() && (extra.abst & ~other.extra.abst) != 0))
+    assert(!header.removable);   assert(!other.header.removable);
+    assert(header.has_extra); assert(other.header.has_extra);
+    if (other.header.size < header.size || (data[header.size].abs & ~other.data[other.header.size].abs) != 0)
+        return lit_Error;
+
+    Lit        ret = lit_Undef;
+    const Lit* c   = (const Lit*)(*this);
+    const Lit* d   = (const Lit*)other;
+
+    for (unsigned i = 0; i < header.size; i++) {
+        // search for c[i] or ~c[i]
+        for (unsigned j = 0; j < other.header.size; j++)
+            if (c[i] == d[j])
+                goto ok;
+            else if (ret == lit_Undef && c[i] == ~d[j]){
+                ret = c[i];
+                goto ok;
+            }
+
+        // did not find it
+        return lit_Error;
+    ok:;
+    }
+
+    return ret;
+}
+
+inline void Clause::strengthen(Lit p)
+{
+    remove(*this, p);
+    calcAbstraction();
+}
+
+//=================================================================================================
+}
+}
+
+#endif
diff --git a/src/prop/minisat/doc/ReleaseNotes-2.2.0.txt b/src/prop/minisat/doc/ReleaseNotes-2.2.0.txt
new file mode 100644
index 0000000..7f084de
--- /dev/null
+++ b/src/prop/minisat/doc/ReleaseNotes-2.2.0.txt
@@ -0,0 +1,79 @@
+Release Notes for MiniSat 2.2.0
+===============================
+
+Changes since version 2.0:
+
+ * Started using a more standard release numbering.
+
+ * Includes some now well-known heuristics: phase-saving and luby
+   restarts. The old heuristics are still present and can be activated
+   if needed.
+
+ * Detection/Handling of out-of-memory and vector capacity
+   overflow. This is fairly new and relatively untested.
+
+ * Simple resource controls: CPU-time, memory, number of
+   conflicts/decisions.
+
+ * CPU-time limiting is implemented by a more general, but simple,
+   asynchronous interruption feature. This means that the solving
+   procedure can be interrupted from another thread or in a signal
+   handler.
+
+ * Improved portability with respect to building on Solaris and with
+   Visual Studio. This is not regularly tested and chances are that
+   this have been broken since, but should be fairly easy to fix if
+   so.
+
+ * Changed C++ file-extention to the less problematic ".cc".
+
+ * Source code is now namespace-protected
+
+ * Introducing a new Clause Memory Allocator that brings reduced
+   memory consumption on 64-bit architechtures and improved
+   performance (to some extent). The allocator uses a region-based
+   approach were all references to clauses are represented as a 32-bit
+   index into a global memory region that contains all clauses. To
+   free up and compact memory it uses a simple copying garbage
+   collector.
+
+ * Improved unit-propagation by Blocking Literals. For each entry in
+   the watcher lists, pair the pointer to a clause with some
+   (arbitrary) literal from the clause. The idea is that if the
+   literal is currently true (i.e. the clause is satisfied) the
+   watchers of the clause does not need to be altered. This can thus
+   be detected without touching the clause's memory at all. As often
+   as can be done cheaply, the blocking literal for entries to the
+   watcher list of a literal 'p' is set to the other literal watched
+   in the corresponding clause.
+
+ * Basic command-line/option handling system. Makes it easy to specify
+   options in the class that they affect, and whenever that class is
+   used in an executable, parsing of options and help messages are
+   brought in automatically.
+
+ * General clean-up and various minor bug-fixes.
+
+ * Changed implementation of variable-elimination/model-extension:
+    
+     - The interface is changed so that arbitrary remembering is no longer
+       possible. If you need to mention some variable again in the future,
+       this variable has to be frozen.
+    
+     - When eliminating a variable, only clauses that contain the variable
+       with one sign is necessary to store. Thereby making the other sign
+       a "default" value when extending models.
+    
+     - The memory consumption for eliminated clauses is further improved
+       by storing all eliminated clauses in a single contiguous vector.
+
+  * Some common utility code (I/O, Parsing, CPU-time, etc) is ripped
+    out and placed in a separate "utils" directory.
+
+  * The DIMACS parse is refactored so that it can be reused in other
+    applications (not very elegant, but at least possible).
+
+  * Some simple improvements to scalability of preprocessing, using
+    more lazy clause removal from data-structures and a couple of
+    ad-hoc limits (the longest clause that can be produced in variable
+    elimination, and the longest clause used in backward subsumption).
diff --git a/src/prop/minisat/minisat.cpp b/src/prop/minisat/minisat.cpp
new file mode 100644
index 0000000..a88a872
--- /dev/null
+++ b/src/prop/minisat/minisat.cpp
@@ -0,0 +1,302 @@
+/*********************                                                        */
+/*! \file minisat.cpp
+ ** \verbatim
+ ** Original author: dejan
+ ** Major contributors:
+ ** Minor contributors (to current version):
+ ** This file is part of the CVC4 prototype.
+ ** Copyright (c) 2009-2014  The Analysis of Computer Systems Group (ACSys)
+ ** Courant Institute of Mathematical Sciences
+ ** New York University
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.\endverbatim
+ **
+ ** \brief SAT Solver.
+ **
+ ** Implementation of the minisat interface for cvc4.
+ **/
+
+#include "prop/minisat/minisat.h"
+
+#include "options/base_options.h"
+#include "options/decision_options.h"
+#include "options/prop_options.h"
+#include "options/smt_options.h"
+#include "prop/minisat/simp/SimpSolver.h"
+#include "proof/clause_id.h"
+#include "proof/sat_proof.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace prop {
+
+//// DPllMinisatSatSolver
+
+MinisatSatSolver::MinisatSatSolver(StatisticsRegistry* registry) :
+  d_minisat(NULL),
+  d_context(NULL),
+  d_statistics(registry)
+{}
+
+MinisatSatSolver::~MinisatSatSolver()
+{
+  delete d_minisat;
+}
+
+SatVariable MinisatSatSolver::toSatVariable(Minisat::Var var) {
+  if (var == var_Undef) {
+    return undefSatVariable;
+  }
+  return SatVariable(var);
+}
+
+Minisat::Lit MinisatSatSolver::toMinisatLit(SatLiteral lit) {
+  if (lit == undefSatLiteral) {
+    return Minisat::lit_Undef;
+  }
+  return Minisat::mkLit(lit.getSatVariable(), lit.isNegated());
+}
+
+SatLiteral MinisatSatSolver::toSatLiteral(Minisat::Lit lit) {
+  if (lit == Minisat::lit_Undef) {
+    return undefSatLiteral;
+  }
+
+  return SatLiteral(SatVariable(Minisat::var(lit)),
+                    Minisat::sign(lit));
+}
+
+SatValue MinisatSatSolver::toSatLiteralValue(Minisat::lbool res) {
+  if(res == (Minisat::lbool((uint8_t)0))) return SAT_VALUE_TRUE;
+  if(res == (Minisat::lbool((uint8_t)2))) return SAT_VALUE_UNKNOWN;
+  Assert(res == (Minisat::lbool((uint8_t)1)));
+  return SAT_VALUE_FALSE;
+}
+
+Minisat::lbool MinisatSatSolver::toMinisatlbool(SatValue val)
+{
+  if(val == SAT_VALUE_TRUE) return Minisat::lbool((uint8_t)0);
+  if(val == SAT_VALUE_UNKNOWN) return Minisat::lbool((uint8_t)2);
+  Assert(val == SAT_VALUE_FALSE);
+  return Minisat::lbool((uint8_t)1);
+}
+
+/*bool MinisatSatSolver::tobool(SatValue val)
+{
+  if(val == SAT_VALUE_TRUE) return true;
+  Assert(val == SAT_VALUE_FALSE);
+  return false;
+  }*/
+
+void MinisatSatSolver::toMinisatClause(SatClause& clause,
+                                           Minisat::vec<Minisat::Lit>& minisat_clause) {
+  for (unsigned i = 0; i < clause.size(); ++i) {
+    minisat_clause.push(toMinisatLit(clause[i]));
+  }
+  Assert(clause.size() == (unsigned)minisat_clause.size());
+}
+
+void MinisatSatSolver::toSatClause(const Minisat::Clause& clause,
+                                       SatClause& sat_clause) {
+  for (int i = 0; i < clause.size(); ++i) {
+    sat_clause.push_back(toSatLiteral(clause[i]));
+  }
+  Assert((unsigned)clause.size() == sat_clause.size());
+}
+
+void MinisatSatSolver::initialize(context::Context* context, TheoryProxy* theoryProxy) {
+
+  d_context = context;
+
+  if( options::decisionMode() != decision::DECISION_STRATEGY_INTERNAL ) {
+    Notice() << "minisat: Incremental solving is forced on (to avoid variable elimination)"
+             << " unless using internal decision strategy." << std::endl;
+  }
+
+  // Create the solver
+  d_minisat = new Minisat::SimpSolver(theoryProxy, d_context,
+                                      options::incrementalSolving() ||
+                                      options::decisionMode() != decision::DECISION_STRATEGY_INTERNAL );
+
+  d_statistics.init(d_minisat);
+}
+
+// Like initialize() above, but called just before each search when in
+// incremental mode
+void MinisatSatSolver::setupOptions() {
+  // Copy options from CVC4 options structure into minisat, as appropriate
+
+  // Set up the verbosity
+  d_minisat->verbosity = (options::verbosity() > 0) ? 1 : -1;
+
+  // Set up the random decision parameters
+  d_minisat->random_var_freq = options::satRandomFreq();
+  // If 0, we use whatever we like (here, the Minisat default seed)
+  if(options::satRandomSeed() != 0) {
+    d_minisat->random_seed = double(options::satRandomSeed());
+  }
+
+  // Give access to all possible options in the sat solver
+  d_minisat->var_decay = options::satVarDecay();
+  d_minisat->clause_decay = options::satClauseDecay();
+  d_minisat->restart_first = options::satRestartFirst();
+  d_minisat->restart_inc = options::satRestartInc();
+}
+
+ClauseId MinisatSatSolver::addClause(SatClause& clause, bool removable) {
+  Minisat::vec<Minisat::Lit> minisat_clause;
+  toMinisatClause(clause, minisat_clause);
+  ClauseId clause_id = ClauseIdError;
+  // FIXME: This relies on the invariant that when ok() is false
+  // the SAT solver does not add the clause (which is what Minisat currently does)
+  if (!ok()) {
+    return ClauseIdUndef;
+  }
+  d_minisat->addClause(minisat_clause, removable, clause_id);
+  PROOF( Assert (clause_id != ClauseIdError););
+  return clause_id;
+}
+
+SatVariable MinisatSatSolver::newVar(bool isTheoryAtom, bool preRegister, bool canErase) {
+  return d_minisat->newVar(true, true, isTheoryAtom, preRegister, canErase);
+}
+
+SatValue MinisatSatSolver::solve(unsigned long& resource) {
+  Trace("limit") << "SatSolver::solve(): have limit of " << resource << " conflicts" << std::endl;
+  setupOptions();
+  if(resource == 0) {
+    d_minisat->budgetOff();
+  } else {
+    d_minisat->setConfBudget(resource);
+  }
+  Minisat::vec<Minisat::Lit> empty;
+  unsigned long conflictsBefore = d_minisat->conflicts + d_minisat->resources_consumed;
+  SatValue result = toSatLiteralValue(d_minisat->solveLimited(empty));
+  d_minisat->clearInterrupt();
+  resource = d_minisat->conflicts + d_minisat->resources_consumed - conflictsBefore;
+  Trace("limit") << "SatSolver::solve(): it took " << resource << " conflicts" << std::endl;
+  return result;
+}
+
+SatValue MinisatSatSolver::solve() {
+  setupOptions();
+  d_minisat->budgetOff();
+  return toSatLiteralValue(d_minisat->solve());
+}
+
+bool MinisatSatSolver::ok() const {
+  return d_minisat->okay();
+}
+
+void MinisatSatSolver::interrupt() {
+  d_minisat->interrupt();
+}
+
+SatValue MinisatSatSolver::value(SatLiteral l) {
+  return toSatLiteralValue(d_minisat->value(toMinisatLit(l)));
+}
+
+SatValue MinisatSatSolver::modelValue(SatLiteral l){
+  return toSatLiteralValue(d_minisat->modelValue(toMinisatLit(l)));
+}
+
+bool MinisatSatSolver::properExplanation(SatLiteral lit, SatLiteral expl) const {
+  return true;
+}
+
+void MinisatSatSolver::requirePhase(SatLiteral lit) {
+  Assert(!d_minisat->rnd_pol);
+  Debug("minisat") << "requirePhase(" << lit << ")" << " " <<  lit.getSatVariable() << " " << lit.isNegated() << std::endl;
+  SatVariable v = lit.getSatVariable();
+  d_minisat->freezePolarity(v, lit.isNegated());
+}
+
+bool MinisatSatSolver::flipDecision() {
+  Debug("minisat") << "flipDecision()" << std::endl;
+  return d_minisat->flipDecision();
+}
+
+bool MinisatSatSolver::isDecision(SatVariable decn) const {
+  return d_minisat->isDecision( decn );
+}
+
+/** Incremental interface */
+
+unsigned MinisatSatSolver::getAssertionLevel() const {
+  return d_minisat->getAssertionLevel();
+}
+
+void MinisatSatSolver::push() {
+  d_minisat->push();
+}
+
+void MinisatSatSolver::pop() {
+  d_minisat->pop();
+}
+
+/// Statistics for MinisatSatSolver
+
+MinisatSatSolver::Statistics::Statistics(StatisticsRegistry* registry) :
+    d_registry(registry),
+    d_statStarts("sat::starts"),
+    d_statDecisions("sat::decisions"),
+    d_statRndDecisions("sat::rnd_decisions"),
+    d_statPropagations("sat::propagations"),
+    d_statConflicts("sat::conflicts"),
+    d_statClausesLiterals("sat::clauses_literals"),
+    d_statLearntsLiterals("sat::learnts_literals"),
+    d_statMaxLiterals("sat::max_literals"),
+    d_statTotLiterals("sat::tot_literals")
+{
+  d_registry->registerStat(&d_statStarts);
+  d_registry->registerStat(&d_statDecisions);
+  d_registry->registerStat(&d_statRndDecisions);
+  d_registry->registerStat(&d_statPropagations);
+  d_registry->registerStat(&d_statConflicts);
+  d_registry->registerStat(&d_statClausesLiterals);
+  d_registry->registerStat(&d_statLearntsLiterals);
+  d_registry->registerStat(&d_statMaxLiterals);
+  d_registry->registerStat(&d_statTotLiterals);
+}
+
+MinisatSatSolver::Statistics::~Statistics() {
+  d_registry->unregisterStat(&d_statStarts);
+  d_registry->unregisterStat(&d_statDecisions);
+  d_registry->unregisterStat(&d_statRndDecisions);
+  d_registry->unregisterStat(&d_statPropagations);
+  d_registry->unregisterStat(&d_statConflicts);
+  d_registry->unregisterStat(&d_statClausesLiterals);
+  d_registry->unregisterStat(&d_statLearntsLiterals);
+  d_registry->unregisterStat(&d_statMaxLiterals);
+  d_registry->unregisterStat(&d_statTotLiterals);
+}
+
+void MinisatSatSolver::Statistics::init(Minisat::SimpSolver* d_minisat){
+  d_statStarts.setData(d_minisat->starts);
+  d_statDecisions.setData(d_minisat->decisions);
+  d_statRndDecisions.setData(d_minisat->rnd_decisions);
+  d_statPropagations.setData(d_minisat->propagations);
+  d_statConflicts.setData(d_minisat->conflicts);
+  d_statClausesLiterals.setData(d_minisat->clauses_literals);
+  d_statLearntsLiterals.setData(d_minisat->learnts_literals);
+  d_statMaxLiterals.setData(d_minisat->max_literals);
+  d_statTotLiterals.setData(d_minisat->tot_literals);
+}
+
+} /* namespace CVC4::prop */
+} /* namespace CVC4 */
+
+
+namespace CVC4 {
+template<>
+prop::SatLiteral toSatLiteral< CVC4::Minisat::Solver>(Minisat::Solver::TLit lit) {
+  return prop::MinisatSatSolver::toSatLiteral(lit);
+}
+
+template<>
+void toSatClause< CVC4::Minisat::Solver> (const CVC4::Minisat::Solver::TClause& minisat_cl,
+                                      prop::SatClause& sat_cl) {
+  prop::MinisatSatSolver::toSatClause(minisat_cl, sat_cl);
+}
+
+} /* namespace CVC4 */
diff --git a/src/prop/minisat/minisat.h b/src/prop/minisat/minisat.h
new file mode 100644
index 0000000..1627a65
--- /dev/null
+++ b/src/prop/minisat/minisat.h
@@ -0,0 +1,110 @@
+/*********************                                                        */
+/*! \file minisat.h
+ ** \verbatim
+ ** Original author: dejan
+ ** Major contributors:
+ ** Minor contributors (to current version):
+ ** This file is part of the CVC4 prototype.
+ ** Copyright (c) 2009-2014  The Analysis of Computer Systems Group (ACSys)
+ ** Courant Institute of Mathematical Sciences
+ ** New York University
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.\endverbatim
+ **
+ ** \brief SAT Solver.
+ **
+ ** Implementation of the minisat interface for cvc4.
+ **/
+
+#pragma once
+
+#include "prop/sat_solver.h"
+#include "prop/minisat/simp/SimpSolver.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace prop {
+
+class MinisatSatSolver : public DPLLSatSolverInterface {
+public:
+
+  MinisatSatSolver(StatisticsRegistry* registry);
+  virtual ~MinisatSatSolver();
+;
+
+  static SatVariable     toSatVariable(Minisat::Var var);
+  static Minisat::Lit    toMinisatLit(SatLiteral lit);
+  static SatLiteral      toSatLiteral(Minisat::Lit lit);
+  static SatValue        toSatLiteralValue(Minisat::lbool res);
+  static Minisat::lbool  toMinisatlbool(SatValue val);
+  //(Commented because not in use) static bool            tobool(SatValue val);
+
+  static void  toMinisatClause(SatClause& clause, Minisat::vec<Minisat::Lit>& minisat_clause);
+  static void  toSatClause    (const Minisat::Clause& clause, SatClause& sat_clause);
+  void initialize(context::Context* context, TheoryProxy* theoryProxy);
+
+  ClauseId addClause(SatClause& clause, bool removable);
+  ClauseId addXorClause(SatClause& clause, bool rhs, bool removable) {
+    Unreachable("Minisat does not support native XOR reasoning");
+  }
+
+  SatVariable newVar(bool isTheoryAtom, bool preRegister, bool canErase);
+  SatVariable trueVar() { return d_minisat->trueVar(); }
+  SatVariable falseVar() { return d_minisat->falseVar(); }
+
+  SatValue solve();
+  SatValue solve(long unsigned int&);
+
+  bool ok() const;
+  
+  void interrupt();
+
+  SatValue value(SatLiteral l);
+
+  SatValue modelValue(SatLiteral l);
+
+  bool properExplanation(SatLiteral lit, SatLiteral expl) const;
+
+  /** Incremental interface */
+
+  unsigned getAssertionLevel() const;
+
+  void push();
+
+  void pop();
+
+  void requirePhase(SatLiteral lit);
+
+  bool flipDecision();
+
+  bool isDecision(SatVariable decn) const;
+
+private:
+
+  /** The SatSolver used */
+  Minisat::SimpSolver* d_minisat;
+
+  /** Context we will be using to synchronize the sat solver */
+  context::Context* d_context;
+
+  void setupOptions();
+
+  class Statistics {
+  private:
+    StatisticsRegistry* d_registry;
+    ReferenceStat<uint64_t> d_statStarts, d_statDecisions;
+    ReferenceStat<uint64_t> d_statRndDecisions, d_statPropagations;
+    ReferenceStat<uint64_t> d_statConflicts, d_statClausesLiterals;
+    ReferenceStat<uint64_t> d_statLearntsLiterals,  d_statMaxLiterals;
+    ReferenceStat<uint64_t> d_statTotLiterals;
+  public:
+    Statistics(StatisticsRegistry* registry);
+    ~Statistics();
+    void init(Minisat::SimpSolver* d_minisat);
+  };/* class MinisatSatSolver::Statistics */
+  Statistics d_statistics;
+
+};/* class MinisatSatSolver */
+
+}/* CVC4::prop namespace */
+}/* CVC4 namespace */
diff --git a/src/prop/minisat/mtl/Alg.h b/src/prop/minisat/mtl/Alg.h
new file mode 100644
index 0000000..365b2d5
--- /dev/null
+++ b/src/prop/minisat/mtl/Alg.h
@@ -0,0 +1,86 @@
+/*******************************************************************************************[Alg.h]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef Minisat_Alg_h
+#define Minisat_Alg_h
+
+#include "prop/minisat/mtl/Vec.h"
+
+namespace CVC4 {
+namespace Minisat {
+
+//=================================================================================================
+// Useful functions on vector-like types:
+
+//=================================================================================================
+// Removing and searching for elements:
+//
+
+template<class V, class T>
+static inline void remove(V& ts, const T& t)
+{
+    int j = 0;
+    for (; j < ts.size() && ts[j] != t; j++);
+    assert(j < ts.size());
+    for (; j < ts.size()-1; j++) ts[j] = ts[j+1];
+    ts.pop();
+}
+
+
+template<class V, class T>
+static inline bool find(V& ts, const T& t)
+{
+    int j = 0;
+    for (; j < ts.size() && ts[j] != t; j++);
+    return j < ts.size();
+}
+
+
+//=================================================================================================
+// Copying vectors with support for nested vector types:
+//
+
+// Base case:
+template<class T>
+static inline void copy(const T& from, T& to)
+{
+    to = from;
+}
+
+// Recursive case:
+template<class T>
+static inline void copy(const vec<T>& from, vec<T>& to, bool append = false)
+{
+    if (!append)
+        to.clear();
+    for (int i = 0; i < from.size(); i++){
+        to.push();
+        copy(from[i], to.last());
+    }
+}
+
+template<class T>
+static inline void append(const vec<T>& from, vec<T>& to){ copy(from, to, true); }
+
+//=================================================================================================
+}
+}
+
+#endif
diff --git a/src/prop/minisat/mtl/Alloc.h b/src/prop/minisat/mtl/Alloc.h
new file mode 100644
index 0000000..e5b171b
--- /dev/null
+++ b/src/prop/minisat/mtl/Alloc.h
@@ -0,0 +1,133 @@
+/*****************************************************************************************[Alloc.h]
+Copyright (c) 2008-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+
+#ifndef Minisat_Alloc_h
+#define Minisat_Alloc_h
+
+#include "prop/minisat/mtl/XAlloc.h"
+#include "prop/minisat/mtl/Vec.h"
+
+namespace CVC4 {
+namespace Minisat {
+
+//=================================================================================================
+// Simple Region-based memory allocator:
+
+template<class T>
+class RegionAllocator
+{
+    T*        memory;
+    uint32_t  sz;
+    uint32_t  cap;
+    uint32_t  wasted_;
+
+    void capacity(uint32_t min_cap);
+
+ public:
+    // TODO: make this a class for better type-checking?
+    typedef uint32_t Ref;
+    enum { Ref_Undef = UINT32_MAX };
+    enum { Unit_Size = sizeof(uint32_t) };
+
+    explicit RegionAllocator(uint32_t start_cap = 1024*1024) : memory(NULL), sz(0), cap(0), wasted_(0){ capacity(start_cap); }
+    ~RegionAllocator()
+    {
+        if (memory != NULL)
+            ::free(memory);
+    }
+
+
+    uint32_t size      () const      { return sz; }
+    uint32_t wasted    () const      { return wasted_; }
+
+    Ref      alloc     (int size); 
+    void     free      (int size)    { wasted_ += size; }
+
+    // Deref, Load Effective Address (LEA), Inverse of LEA (AEL):
+    T&       operator[](Ref r)       { assert(r >= 0 && r < sz); return memory[r]; }
+    const T& operator[](Ref r) const { assert(r >= 0 && r < sz); return memory[r]; }
+
+    T*       lea       (Ref r)       { assert(r >= 0 && r < sz); return &memory[r]; }
+    const T* lea       (Ref r) const { assert(r >= 0 && r < sz); return &memory[r]; }
+    Ref      ael       (const T* t)  { assert((void*)t >= (void*)&memory[0] && (void*)t < (void*)&memory[sz-1]);
+        return  (Ref)(t - &memory[0]); }
+
+    void     moveTo(RegionAllocator& to) {
+        if (to.memory != NULL) ::free(to.memory);
+        to.memory = memory;
+        to.sz = sz;
+        to.cap = cap;
+        to.wasted_ = wasted_;
+
+        memory = NULL;
+        sz = cap = wasted_ = 0;
+    }
+
+
+};
+
+template<class T>
+void RegionAllocator<T>::capacity(uint32_t min_cap)
+{
+    if (cap >= min_cap) return;
+
+    uint32_t prev_cap = cap;
+    while (cap < min_cap){
+        // NOTE: Multiply by a factor (13/8) without causing overflow, then add 2 and make the
+        // result even by clearing the least significant bit. The resulting sequence of capacities
+        // is carefully chosen to hit a maximum capacity that is close to the '2^32-1' limit when
+        // using 'uint32_t' as indices so that as much as possible of this space can be used.
+        uint32_t delta = ((cap >> 1) + (cap >> 3) + 2) & ~1;
+        cap += delta;
+
+        if (cap <= prev_cap)
+            throw OutOfMemoryException();
+    }
+    // printf(" .. (%p) cap = %u\n", this, cap);
+
+    assert(cap > 0);
+    memory = (T*)xrealloc(memory, sizeof(T)*cap);
+}
+
+
+template<class T>
+typename RegionAllocator<T>::Ref
+RegionAllocator<T>::alloc(int size)
+{ 
+    // printf("ALLOC called (this = %p, size = %d)\n", this, size); fflush(stdout);
+    assert(size > 0);
+    capacity(sz + size);
+
+    uint32_t prev_sz = sz;
+    sz += size;
+    
+    // Handle overflow:
+    if (sz < prev_sz)
+        throw OutOfMemoryException();
+
+    return prev_sz;
+}
+
+
+//=================================================================================================
+}
+}
+
+#endif
diff --git a/src/prop/minisat/mtl/Heap.h b/src/prop/minisat/mtl/Heap.h
new file mode 100644
index 0000000..c990f9a
--- /dev/null
+++ b/src/prop/minisat/mtl/Heap.h
@@ -0,0 +1,150 @@
+/******************************************************************************************[Heap.h]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef Minisat_Heap_h
+#define Minisat_Heap_h
+
+#include "prop/minisat/mtl/Vec.h"
+
+namespace CVC4 {
+namespace Minisat {
+
+//=================================================================================================
+// A heap implementation with support for decrease/increase key.
+
+
+template<class Comp>
+class Heap {
+    Comp     lt;       // The heap is a minimum-heap with respect to this comparator
+    vec<int> heap;     // Heap of integers
+    vec<int> indices;  // Each integers position (index) in the Heap
+
+    // Index "traversal" functions
+    static inline int left  (int i) { return i*2+1; }
+    static inline int right (int i) { return (i+1)*2; }
+    static inline int parent(int i) { return (i-1) >> 1; }
+
+
+    void percolateUp(int i)
+    {
+        int x  = heap[i];
+        int p  = parent(i);
+        
+        while (i != 0 && lt(x, heap[p])){
+            heap[i]          = heap[p];
+            indices[heap[p]] = i;
+            i                = p;
+            p                = parent(p);
+        }
+        heap   [i] = x;
+        indices[x] = i;
+    }
+
+
+    void percolateDown(int i)
+    {
+        int x = heap[i];
+        while (left(i) < heap.size()){
+            int child = right(i) < heap.size() && lt(heap[right(i)], heap[left(i)]) ? right(i) : left(i);
+            if (!lt(heap[child], x)) break;
+            heap[i]          = heap[child];
+            indices[heap[i]] = i;
+            i                = child;
+        }
+        heap   [i] = x;
+        indices[x] = i;
+    }
+
+
+  public:
+    Heap(const Comp& c) : lt(c) { }
+
+    int  size      ()          const { return heap.size(); }
+    bool empty     ()          const { return heap.size() == 0; }
+    bool inHeap    (int n)     const { return n < indices.size() && indices[n] >= 0; }
+    int  operator[](int index) const { assert(index < heap.size()); return heap[index]; }
+
+
+    void decrease  (int n) { assert(inHeap(n)); percolateUp  (indices[n]); }
+    void increase  (int n) { assert(inHeap(n)); percolateDown(indices[n]); }
+
+
+    // Safe variant of insert/decrease/increase:
+    void update(int n)
+    {
+        if (!inHeap(n))
+            insert(n);
+        else {
+            percolateUp(indices[n]);
+            percolateDown(indices[n]); }
+    }
+
+
+    void insert(int n)
+    {
+        indices.growTo(n+1, -1);
+        assert(!inHeap(n));
+
+        indices[n] = heap.size();
+        heap.push(n);
+        percolateUp(indices[n]); 
+    }
+
+
+    int  removeMin()
+    {
+        int x            = heap[0];
+        heap[0]          = heap.last();
+        indices[heap[0]] = 0;
+        indices[x]       = -1;
+        heap.pop();
+        if (heap.size() > 1) percolateDown(0);
+        return x; 
+    }
+
+
+    // Rebuild the heap from scratch, using the elements in 'ns':
+    void build(vec<int>& ns) {
+        for (int i = 0; i < heap.size(); i++)
+            indices[heap[i]] = -1;
+        heap.clear();
+
+        for (int i = 0; i < ns.size(); i++){
+            indices[ns[i]] = i;
+            heap.push(ns[i]); }
+
+        for (int i = heap.size() / 2 - 1; i >= 0; i--)
+            percolateDown(i);
+    }
+
+    void clear(bool dealloc = false) 
+    { 
+        for (int i = 0; i < heap.size(); i++)
+            indices[heap[i]] = -1;
+        heap.clear(dealloc); 
+    }
+};
+
+
+//=================================================================================================
+}
+}
+
+#endif
diff --git a/src/prop/minisat/mtl/IntTypes.h b/src/prop/minisat/mtl/IntTypes.h
new file mode 100644
index 0000000..c488162
--- /dev/null
+++ b/src/prop/minisat/mtl/IntTypes.h
@@ -0,0 +1,42 @@
+/**************************************************************************************[IntTypes.h]
+Copyright (c) 2009-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef Minisat_IntTypes_h
+#define Minisat_IntTypes_h
+
+#ifdef __sun
+    // Not sure if there are newer versions that support C99 headers. The
+    // needed features are implemented in the headers below though:
+
+#   include <sys/int_types.h>
+#   include <sys/int_fmtio.h>
+#   include <sys/int_limits.h>
+
+#else
+
+#   include <stdint.h>
+#   include <inttypes.h>
+
+#endif
+
+#include <limits.h>
+
+//=================================================================================================
+
+#endif
diff --git a/src/prop/minisat/mtl/Map.h b/src/prop/minisat/mtl/Map.h
new file mode 100644
index 0000000..1757271
--- /dev/null
+++ b/src/prop/minisat/mtl/Map.h
@@ -0,0 +1,196 @@
+/*******************************************************************************************[Map.h]
+Copyright (c) 2006-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef Minisat_Map_h
+#define Minisat_Map_h
+
+#include "prop/minisat/mtl/IntTypes.h"
+#include "prop/minisat/mtl/Vec.h"
+
+namespace CVC4 {
+namespace Minisat {
+
+//=================================================================================================
+// Default hash/equals functions
+//
+
+static inline uint32_t hash(uint32_t x){ return x; }
+static inline uint32_t hash(uint64_t x){ return (uint32_t)x; }
+static inline uint32_t hash(int32_t x) { return (uint32_t)x; }
+static inline uint32_t hash(int64_t x) { return (uint32_t)x; }
+
+template<class K> struct Hash  { uint32_t operator()(const K& k)               const { return hash(k);  } };
+template<class K> struct Equal { bool     operator()(const K& k1, const K& k2) const { return k1 == k2; } };
+
+template<class K> struct DeepHash  { uint32_t operator()(const K* k)               const { return hash(*k);  } };
+template<class K> struct DeepEqual { bool     operator()(const K* k1, const K* k2) const { return *k1 == *k2; } };
+
+
+
+//=================================================================================================
+// Some primes
+//
+
+static const int nprimes          = 25;
+static const int primes [nprimes] = { 31, 73, 151, 313, 643, 1291, 2593, 5233, 10501, 21013, 42073, 84181, 168451, 337219, 674701, 1349473, 2699299, 5398891, 10798093, 21596719, 43193641, 86387383, 172775299, 345550609, 691101253 };
+
+//=================================================================================================
+// Hash table implementation of Maps
+//
+
+template<class K, class D, class H = Hash<K>, class E = Equal<K> >
+class Map {
+ public:
+    struct Pair { K key; D data; };
+
+ private:
+    H          hash;
+    E          equals;
+
+    vec<Pair>* table;
+    int        cap;
+    int        size;
+
+    // Don't allow copying (error prone):
+    Map<K,D,H,E>&  operator = (Map<K,D,H,E>& other) { assert(0); }
+                   Map        (Map<K,D,H,E>& other) { assert(0); }
+
+    bool    checkCap(int new_size) const { return new_size > cap; }
+
+    int32_t index  (const K& k) const { return hash(k) % cap; }
+    void   _insert (const K& k, const D& d) { 
+        vec<Pair>& ps = table[index(k)];
+        ps.push(); ps.last().key = k; ps.last().data = d; }
+
+    void    rehash () {
+        const vec<Pair>* old = table;
+
+        int old_cap = cap;
+        int newsize = primes[0];
+        for (int i = 1; newsize <= cap && i < nprimes; i++)
+           newsize = primes[i];
+
+        table = new vec<Pair>[newsize];
+        cap   = newsize;
+
+        for (int i = 0; i < old_cap; i++){
+            for (int j = 0; j < old[i].size(); j++){
+                _insert(old[i][j].key, old[i][j].data); }}
+
+        delete [] old;
+
+        // printf(" --- rehashing, old-cap=%d, new-cap=%d\n", cap, newsize);
+    }
+
+    
+ public:
+
+    Map () : table(NULL), cap(0), size(0) {}
+    Map (const H& h, const E& e) : hash(h), equals(e), table(NULL), cap(0), size(0){}
+    ~Map () { delete [] table; }
+
+    // PRECONDITION: the key must already exist in the map.
+    const D& operator [] (const K& k) const
+    {
+        assert(size != 0);
+        const D*         res = NULL;
+        const vec<Pair>& ps  = table[index(k)];
+        for (int i = 0; i < ps.size(); i++)
+            if (equals(ps[i].key, k))
+                res = &ps[i].data;
+        assert(res != NULL);
+        return *res;
+    }
+
+    // PRECONDITION: the key must already exist in the map.
+    D& operator [] (const K& k)
+    {
+        assert(size != 0);
+        D*         res = NULL;
+        vec<Pair>& ps  = table[index(k)];
+        for (int i = 0; i < ps.size(); i++)
+            if (equals(ps[i].key, k))
+                res = &ps[i].data;
+        assert(res != NULL);
+        return *res;
+    }
+
+    // PRECONDITION: the key must *NOT* exist in the map.
+    void insert (const K& k, const D& d) { if (checkCap(size+1)) rehash(); _insert(k, d); size++; }
+    bool peek   (const K& k, D& d) const {
+        if (size == 0) return false;
+        const vec<Pair>& ps = table[index(k)];
+        for (int i = 0; i < ps.size(); i++)
+            if (equals(ps[i].key, k)){
+                d = ps[i].data;
+                return true; } 
+        return false;
+    }
+
+    bool has   (const K& k) const {
+        if (size == 0) return false;
+        const vec<Pair>& ps = table[index(k)];
+        for (int i = 0; i < ps.size(); i++)
+            if (equals(ps[i].key, k))
+                return true;
+        return false;
+    }
+
+    // PRECONDITION: the key must exist in the map.
+    void remove(const K& k) {
+        assert(table != NULL);
+        vec<Pair>& ps = table[index(k)];
+        int j = 0;
+        for (; j < ps.size() && !equals(ps[j].key, k); j++);
+        assert(j < ps.size());
+        ps[j] = ps.last();
+        ps.pop();
+        size--;
+    }
+
+    void clear  () {
+        cap = size = 0;
+        delete [] table;
+        table = NULL;
+    }
+
+    int  elems() const { return size; }
+    int  bucket_count() const { return cap; }
+
+    // NOTE: the hash and equality objects are not moved by this method:
+    void moveTo(Map& other){
+        delete [] other.table;
+
+        other.table = table;
+        other.cap   = cap;
+        other.size  = size;
+
+        table = NULL;
+        size = cap = 0;
+    }
+
+    // NOTE: given a bit more time, I could make a more C++-style iterator out of this:
+    const vec<Pair>& bucket(int i) const { return table[i]; }
+};
+
+//=================================================================================================
+}
+}
+
+#endif
diff --git a/src/prop/minisat/mtl/Queue.h b/src/prop/minisat/mtl/Queue.h
new file mode 100644
index 0000000..ca20144
--- /dev/null
+++ b/src/prop/minisat/mtl/Queue.h
@@ -0,0 +1,71 @@
+/*****************************************************************************************[Queue.h]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef Minisat_Queue_h
+#define Minisat_Queue_h
+
+#include "prop/minisat/mtl/Vec.h"
+
+namespace CVC4 {
+namespace Minisat {
+
+//=================================================================================================
+
+template<class T>
+class Queue {
+    vec<T>  buf;
+    int     first;
+    int     end;
+
+public:
+    typedef T Key;
+
+    Queue() : buf(1), first(0), end(0) {}
+
+    void clear (bool dealloc = false) { buf.clear(dealloc); buf.growTo(1); first = end = 0; }
+    int  size  () const { return (end >= first) ? end - first : end - first + buf.size(); }
+
+    const T& operator [] (int index) const  { assert(index >= 0); assert(index < size()); return buf[(first + index) % buf.size()]; }
+    T&       operator [] (int index)        { assert(index >= 0); assert(index < size()); return buf[(first + index) % buf.size()]; }
+
+    T    peek  () const { assert(first != end); return buf[first]; }
+    void pop   () { assert(first != end); first++; if (first == buf.size()) first = 0; }
+    void insert(T elem) {   // INVARIANT: buf[end] is always unused
+        buf[end++] = elem;
+        if (end == buf.size()) end = 0;
+        if (first == end){  // Resize:
+            vec<T>  tmp((buf.size()*3 + 1) >> 1);
+            //**/printf("queue alloc: %d elems (%.1f MB)\n", tmp.size(), tmp.size() * sizeof(T) / 1000000.0);
+            int     i = 0;
+            for (int j = first; j < buf.size(); j++) tmp[i++] = buf[j];
+            for (int j = 0    ; j < end       ; j++) tmp[i++] = buf[j];
+            first = 0;
+            end   = buf.size();
+            tmp.moveTo(buf);
+        }
+    }
+};
+
+
+//=================================================================================================
+}
+}
+
+#endif
diff --git a/src/prop/minisat/mtl/Sort.h b/src/prop/minisat/mtl/Sort.h
new file mode 100644
index 0000000..2c3454a
--- /dev/null
+++ b/src/prop/minisat/mtl/Sort.h
@@ -0,0 +1,100 @@
+/******************************************************************************************[Sort.h]
+Copyright (c) 2003-2007, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef Minisat_Sort_h
+#define Minisat_Sort_h
+
+#include "prop/minisat/mtl/Vec.h"
+
+//=================================================================================================
+// Some sorting algorithms for vec's
+
+
+namespace CVC4 {
+namespace Minisat {
+
+template<class T>
+struct LessThan_default {
+    bool operator () (T x, T y) { return x < y; }
+};
+
+
+template <class T, class LessThan>
+void selectionSort(T* array, int size, LessThan lt)
+{
+    int     i, j, best_i;
+    T       tmp;
+
+    for (i = 0; i < size-1; i++){
+        best_i = i;
+        for (j = i+1; j < size; j++){
+            if (lt(array[j], array[best_i]))
+                best_i = j;
+        }
+        tmp = array[i]; array[i] = array[best_i]; array[best_i] = tmp;
+    }
+}
+template <class T> static inline void selectionSort(T* array, int size) {
+    selectionSort(array, size, LessThan_default<T>()); }
+
+template <class T, class LessThan>
+void sort(T* array, int size, LessThan lt)
+{
+    if (size <= 15)
+        selectionSort(array, size, lt);
+
+    else{
+        T           pivot = array[size / 2];
+        T           tmp;
+        int         i = -1;
+        int         j = size;
+
+        for(;;){
+            do i++; while(lt(array[i], pivot));
+            do j--; while(lt(pivot, array[j]));
+
+            if (i >= j) break;
+
+            tmp = array[i]; array[i] = array[j]; array[j] = tmp;
+        }
+
+        sort(array    , i     , lt);
+        sort(&array[i], size-i, lt);
+    }
+}
+template <class T> static inline void sort(T* array, int size) {
+    sort(array, size, LessThan_default<T>()); }
+
+
+//=================================================================================================
+// For 'vec's:
+
+
+template <class T, class LessThan> void sort(vec<T>& v, LessThan lt) {
+    sort((T*)v, v.size(), lt); }
+template <class T> void sort(vec<T>& v) {
+    sort(v, LessThan_default<T>()); }
+
+
+//=================================================================================================
+}
+}
+
+#endif
diff --git a/src/prop/minisat/mtl/Vec.h b/src/prop/minisat/mtl/Vec.h
new file mode 100644
index 0000000..cb81ee5
--- /dev/null
+++ b/src/prop/minisat/mtl/Vec.h
@@ -0,0 +1,132 @@
+/*******************************************************************************************[Vec.h]
+Copyright (c) 2003-2007, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef Minisat_Vec_h
+#define Minisat_Vec_h
+
+#include <assert.h>
+#include <new>
+
+#include "prop/minisat/mtl/IntTypes.h"
+#include "prop/minisat/mtl/XAlloc.h"
+
+namespace CVC4 {
+namespace Minisat {
+
+//=================================================================================================
+// Automatically resizable arrays
+//
+// NOTE! Don't use this vector on datatypes that cannot be re-located in memory (with realloc)
+
+template<class T>
+class vec {
+    T*  data;
+    int sz;
+    int cap;
+
+    // Don't allow copying (error prone):
+    vec<T>&  operator = (vec<T>& other) { assert(0); return *this; }
+             vec        (vec<T>& other) { assert(0); }
+             
+    // Helpers for calculating next capacity:
+    static inline int  imax   (int x, int y) { int mask = (y-x) >> (sizeof(int)*8-1); return (x&mask) + (y&(~mask)); }
+    //static inline void nextCap(int& cap){ cap += ((cap >> 1) + 2) & ~1; }
+    static inline void nextCap(int& cap){ cap += ((cap >> 1) + 2) & ~1; }
+
+public:
+    // Constructors:
+    vec()                       : data(NULL) , sz(0)   , cap(0)    { }
+    explicit vec(int size)      : data(NULL) , sz(0)   , cap(0)    { growTo(size); }
+    vec(int size, const T& pad) : data(NULL) , sz(0)   , cap(0)    { growTo(size, pad); }
+   ~vec()                                                          { clear(true); }
+
+    // Pointer to first element:
+    operator T*       (void)           { return data; }
+
+    // Size operations:
+    int      size     (void) const     { return sz; }
+    void     shrink   (int nelems)     { assert(nelems <= sz); for (int i = 0; i < nelems; i++) sz--, data[sz].~T(); }
+    void     shrink_  (int nelems)     { assert(nelems <= sz); sz -= nelems; }
+    int      capacity (void) const     { return cap; }
+    void     capacity (int min_cap);
+    void     growTo   (int size);
+    void     growTo   (int size, const T& pad);
+    void     clear    (bool dealloc = false);
+
+    // Stack interface:
+    void     push  (void)              { if (sz == cap) capacity(sz+1); new (&data[sz]) T(); sz++; }
+    void     push  (const T& elem)     { if (sz == cap) capacity(sz+1); data[sz++] = elem; }
+    void     push_ (const T& elem)     { assert(sz < cap); data[sz++] = elem; }
+    void     pop   (void)              { assert(sz > 0); sz--, data[sz].~T(); }
+    // NOTE: it seems possible that overflow can happen in the 'sz+1' expression of 'push()', but
+    // in fact it can not since it requires that 'cap' is equal to INT_MAX. This in turn can not
+    // happen given the way capacities are calculated (below). Essentially, all capacities are
+    // even, but INT_MAX is odd.
+
+    const T& last  (void) const        { return data[sz-1]; }
+    T&       last  (void)              { return data[sz-1]; }
+
+    // Vector interface:
+    const T& operator [] (int index) const { return data[index]; }
+    T&       operator [] (int index)       { return data[index]; }
+
+    // Duplication (preferred instead):
+    void copyTo(vec<T>& copy) const { copy.clear(); copy.growTo(sz); for (int i = 0; i < sz; i++) copy[i] = data[i]; }
+    void moveTo(vec<T>& dest) { dest.clear(true); dest.data = data; dest.sz = sz; dest.cap = cap; data = NULL; sz = 0; cap = 0; }
+};
+
+
+template<class T>
+void vec<T>::capacity(int min_cap) {
+    if (cap >= min_cap) return;
+    int add = imax((min_cap - cap + 1) & ~1, ((cap >> 1) + 2) & ~1);   // NOTE: grow by approximately 3/2
+    if (add > INT_MAX - cap || (((data = (T*)::realloc(data, (cap += add) * sizeof(T))) == NULL) && errno == ENOMEM))
+        throw OutOfMemoryException();
+ }
+
+
+template<class T>
+void vec<T>::growTo(int size, const T& pad) {
+    if (sz >= size) return;
+    capacity(size);
+    for (int i = sz; i < size; i++) data[i] = pad;
+    sz = size; }
+
+
+template<class T>
+void vec<T>::growTo(int size) {
+    if (sz >= size) return;
+    capacity(size);
+    for (int i = sz; i < size; i++) new (&data[i]) T();
+    sz = size; }
+
+
+template<class T>
+void vec<T>::clear(bool dealloc) {
+    if (data != NULL){
+        for (int i = 0; i < sz; i++) data[i].~T();
+        sz = 0;
+        if (dealloc) free(data), data = NULL, cap = 0; } }
+
+//=================================================================================================
+}
+}
+
+#endif
diff --git a/src/prop/minisat/mtl/XAlloc.h b/src/prop/minisat/mtl/XAlloc.h
new file mode 100644
index 0000000..f1221f9
--- /dev/null
+++ b/src/prop/minisat/mtl/XAlloc.h
@@ -0,0 +1,47 @@
+/****************************************************************************************[XAlloc.h]
+Copyright (c) 2009-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+
+#ifndef Minisat_XAlloc_h
+#define Minisat_XAlloc_h
+
+#include <errno.h>
+#include <stdlib.h>
+
+namespace CVC4 {
+namespace Minisat {
+
+//=================================================================================================
+// Simple layer on top of malloc/realloc to catch out-of-memory situtaions and provide some typing:
+
+class OutOfMemoryException{};
+static inline void* xrealloc(void *ptr, size_t size)
+{
+    void* mem = realloc(ptr, size);
+    if (mem == NULL && errno == ENOMEM){
+        throw OutOfMemoryException();
+    }else
+        return mem;
+}
+
+//=================================================================================================
+}
+}
+
+#endif
diff --git a/src/prop/minisat/mtl/config.mk b/src/prop/minisat/mtl/config.mk
new file mode 100644
index 0000000..b5c36fc
--- /dev/null
+++ b/src/prop/minisat/mtl/config.mk
@@ -0,0 +1,6 @@
+##
+##  This file is for system specific configurations. For instance, on
+##  some systems the path to zlib needs to be added. Example:
+##
+##  CFLAGS += -I/usr/local/include
+##  LFLAGS += -L/usr/local/lib
diff --git a/src/prop/minisat/mtl/template.mk b/src/prop/minisat/mtl/template.mk
new file mode 100644
index 0000000..3f443fc
--- /dev/null
+++ b/src/prop/minisat/mtl/template.mk
@@ -0,0 +1,107 @@
+##
+##  Template makefile for Standard, Profile, Debug, Release, and Release-static versions
+##
+##    eg: "make rs" for a statically linked release version.
+##        "make d"  for a debug version (no optimizations).
+##        "make"    for the standard version (optimized, but with debug information and assertions active)
+
+PWD        = $(shell pwd)
+EXEC      ?= $(notdir $(PWD))
+
+CSRCS      = $(wildcard $(PWD)/*.cc) 
+DSRCS      = $(foreach dir, $(DEPDIR), $(filter-out $(MROOT)/$(dir)/Main.cc, $(wildcard $(MROOT)/$(dir)/*.cc)))
+CHDRS      = $(wildcard $(PWD)/*.h)
+COBJS      = $(CSRCS:.cc=.o) $(DSRCS:.cc=.o)
+
+PCOBJS     = $(addsuffix p,  $(COBJS))
+DCOBJS     = $(addsuffix d,  $(COBJS))
+RCOBJS     = $(addsuffix r,  $(COBJS))
+
+
+CXX       ?= g++
+CFLAGS    ?= -Wall -Wno-parentheses
+LFLAGS    ?= -Wall
+
+COPTIMIZE ?= -O3
+
+CFLAGS    += -I$(MROOT) -D __STDC_LIMIT_MACROS -D __STDC_FORMAT_MACROS
+LFLAGS    += -lz
+
+.PHONY : s p d r rs clean 
+
+s:	$(EXEC)
+p:	$(EXEC)_profile
+d:	$(EXEC)_debug
+r:	$(EXEC)_release
+rs:	$(EXEC)_static
+
+libs:	lib$(LIB)_standard.a
+libp:	lib$(LIB)_profile.a
+libd:	lib$(LIB)_debug.a
+libr:	lib$(LIB)_release.a
+
+## Compile options
+%.o:			CFLAGS +=$(COPTIMIZE) -g -D DEBUG
+%.op:			CFLAGS +=$(COPTIMIZE) -pg -g -D NDEBUG
+%.od:			CFLAGS +=-O0 -g -D DEBUG
+%.or:			CFLAGS +=$(COPTIMIZE) -g -D NDEBUG
+
+## Link options
+$(EXEC):		LFLAGS += -g
+$(EXEC)_profile:	LFLAGS += -g -pg
+$(EXEC)_debug:		LFLAGS += -g
+#$(EXEC)_release:	LFLAGS += ...
+$(EXEC)_static:		LFLAGS += --static
+
+## Dependencies
+$(EXEC):		$(COBJS)
+$(EXEC)_profile:	$(PCOBJS)
+$(EXEC)_debug:		$(DCOBJS)
+$(EXEC)_release:	$(RCOBJS)
+$(EXEC)_static:		$(RCOBJS)
+
+lib$(LIB)_standard.a:	$(filter-out */Main.o,  $(COBJS))
+lib$(LIB)_profile.a:	$(filter-out */Main.op, $(PCOBJS))
+lib$(LIB)_debug.a:	$(filter-out */Main.od, $(DCOBJS))
+lib$(LIB)_release.a:	$(filter-out */Main.or, $(RCOBJS))
+
+
+## Build rule
+%.o %.op %.od %.or:	%.cc
+	@echo Compiling: $(subst $(MROOT)/,,$@)
+	@$(CXX) $(CFLAGS) -c -o $@ $<
+
+## Linking rules (standard/profile/debug/release)
+$(EXEC) $(EXEC)_profile $(EXEC)_debug $(EXEC)_release $(EXEC)_static:
+	@echo Linking: "$@ ( $(foreach f,$^,$(subst $(MROOT)/,,$f)) )"
+	@$(CXX) $^ $(LFLAGS) -o $@
+
+## Library rules (standard/profile/debug/release)
+lib$(LIB)_standard.a lib$(LIB)_profile.a lib$(LIB)_release.a lib$(LIB)_debug.a:
+	@echo Making library: "$@ ( $(foreach f,$^,$(subst $(MROOT)/,,$f)) )"
+	@$(AR) -rcsv $@ $^
+
+## Library Soft Link rule:
+libs libp libd libr:
+	@echo "Making Soft Link: $^ -> lib$(LIB).a"
+	@ln -sf $^ lib$(LIB).a
+
+## Clean rule
+clean:
+	@rm -f $(EXEC) $(EXEC)_profile $(EXEC)_debug $(EXEC)_release $(EXEC)_static \
+	  $(COBJS) $(PCOBJS) $(DCOBJS) $(RCOBJS) *.core depend.mk 
+
+## Make dependencies
+depend.mk: $(CSRCS) $(CHDRS)
+	@echo Making dependencies
+	@$(CXX) $(CFLAGS) -I$(MROOT) \
+	   $(CSRCS) -MM | sed 's|\(.*\):|$(PWD)/\1 $(PWD)/\1r $(PWD)/\1d $(PWD)/\1p:|' > depend.mk
+	@for dir in $(DEPDIR); do \
+	      if [ -r $(MROOT)/$${dir}/depend.mk ]; then \
+		  echo Depends on: $${dir}; \
+		  cat $(MROOT)/$${dir}/depend.mk >> depend.mk; \
+	      fi; \
+	  done
+
+-include $(MROOT)/mtl/config.mk
+-include depend.mk
diff --git a/src/prop/minisat/simp/Main.cc b/src/prop/minisat/simp/Main.cc
new file mode 100644
index 0000000..675d0ed
--- /dev/null
+++ b/src/prop/minisat/simp/Main.cc
@@ -0,0 +1,218 @@
+/*****************************************************************************************[Main.cc]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007,      Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#include <errno.h>
+
+#include <signal.h>
+#include <zlib.h>
+#include <sys/resource.h>
+
+#include "prop/minisat/utils/System.h"
+#include "prop/minisat/utils/ParseUtils.h"
+#include "prop/minisat/utils/Options.h"
+#include "prop/minisat/core/Dimacs.h"
+#include "prop/minisat/simp/SimpSolver.h"
+
+//=================================================================================================
+
+
+namespace CVC4 {
+namespace Minisat {
+
+void printStats(Solver& solver)
+{
+    double cpu_time = cpuTime();
+    double mem_used = memUsedPeak();
+    printf("restarts              : %"PRIu64"\n", solver.starts);
+    printf("conflicts             : %-12"PRIu64"   (%.0f /sec)\n", solver.conflicts   , solver.conflicts   /cpu_time);
+    printf("decisions             : %-12"PRIu64"   (%4.2f %% random) (%.0f /sec)\n", solver.decisions, (float)solver.rnd_decisions*100 / (float)solver.decisions, solver.decisions   /cpu_time);
+    printf("propagations          : %-12"PRIu64"   (%.0f /sec)\n", solver.propagations, solver.propagations/cpu_time);
+    printf("conflict literals     : %-12"PRIu64"   (%4.2f %% deleted)\n", solver.tot_literals, (solver.max_literals - solver.tot_literals)*100 / (double)solver.max_literals);
+    if (mem_used != 0) printf("Memory used           : %.2f MB\n", mem_used);
+    printf("CPU time              : %g s\n", cpu_time);
+}
+
+
+
+
+static Solver* solver;
+// Terminate by notifying the solver and back out gracefully. This is mainly to have a test-case
+// for this feature of the Solver as it may take longer than an immediate call to '_exit()'.
+static void SIGINT_interrupt(int signum) { solver->interrupt(); }
+
+// Note that '_exit()' rather than 'exit()' has to be used. The reason is that 'exit()' calls
+// destructors and may cause deadlocks if a malloc/free function happens to be running (these
+// functions are guarded by locks for multithreaded use).
+static void SIGINT_exit(int signum) {
+    printf("\n"); printf("*** INTERRUPTED ***\n");
+    if (solver->verbosity > 0){
+        printStats(*solver);
+        printf("\n"); printf("*** INTERRUPTED ***\n"); }
+    _exit(1); }
+
+} /* CVC4::Minisat namespace */
+} /* CVC4 namespace */
+
+//=================================================================================================
+// Main:
+
+int main(int argc, char** argv)
+{
+  using namespace CVC4;
+  using namespace CVC4::Minisat;
+    try {
+        setUsageHelp("USAGE: %s [options] <input-file> <result-output-file>\n\n  where input may be either in plain or gzipped DIMACS.\n");
+        // printf("This is MiniSat 2.0 beta\n");
+        
+#if defined(__linux__)
+        fpu_control_t oldcw, newcw;
+        _FPU_GETCW(oldcw); newcw = (oldcw & ~_FPU_EXTENDED) | _FPU_DOUBLE; _FPU_SETCW(newcw);
+        printf("WARNING: for repeatability, setting FPU to use double precision\n");
+#endif
+        // Extra options:
+        //
+        IntOption    verb   ("MAIN", "verb",   "Verbosity level (0=silent, 1=some, 2=more).", 1, IntRange(0, 2));
+        BoolOption   pre    ("MAIN", "pre",    "Completely turn on/off any preprocessing.", true);
+        StringOption dimacs ("MAIN", "dimacs", "If given, stop after preprocessing and write the result to this file.");
+        IntOption    cpu_lim("MAIN", "cpu-lim","Limit on CPU time allowed in seconds.\n", INT32_MAX, IntRange(0, INT32_MAX));
+        IntOption    mem_lim("MAIN", "mem-lim","Limit on memory usage in megabytes.\n", INT32_MAX, IntRange(0, INT32_MAX));
+
+        parseOptions(argc, argv, true);
+        
+        SimpSolver  S;
+        double      initial_time = cpuTime();
+
+        if (!pre) S.eliminate(true);
+
+        S.verbosity = verb;
+        
+        solver = &S;
+        // Use signal handlers that forcibly quit until the solver will be able to respond to
+        // interrupts:
+        signal(SIGINT, SIGINT_exit);
+        signal(SIGXCPU,SIGINT_exit);
+
+        // Set limit on CPU-time:
+        if (cpu_lim != INT32_MAX){
+            rlimit rl;
+            getrlimit(RLIMIT_CPU, &rl);
+            if (rl.rlim_max == RLIM_INFINITY || (rlim_t)cpu_lim < rl.rlim_max){
+                rl.rlim_cur = cpu_lim;
+                if (setrlimit(RLIMIT_CPU, &rl) == -1)
+                    printf("WARNING! Could not set resource limit: CPU-time.\n");
+            } }
+
+        // Set limit on virtual memory:
+        if (mem_lim != INT32_MAX){
+            rlim_t new_mem_lim = (rlim_t)mem_lim * 1024*1024;
+            rlimit rl;
+            getrlimit(RLIMIT_AS, &rl);
+            if (rl.rlim_max == RLIM_INFINITY || new_mem_lim < rl.rlim_max){
+                rl.rlim_cur = new_mem_lim;
+                if (setrlimit(RLIMIT_AS, &rl) == -1)
+                    printf("WARNING! Could not set resource limit: Virtual memory.\n");
+            } }
+        
+        if (argc == 1)
+            printf("Reading from standard input... Use '--help' for help.\n");
+
+        gzFile in = (argc == 1) ? gzdopen(0, "rb") : gzopen(argv[1], "rb");
+        if (in == NULL)
+            printf("ERROR! Could not open file: %s\n", argc == 1 ? "<stdin>" : argv[1]), exit(1);
+        
+        if (S.verbosity > 0){
+            printf("============================[ Problem Statistics ]=============================\n");
+            printf("|                                                                             |\n"); }
+        
+        parse_DIMACS(in, S);
+        gzclose(in);
+        FILE* res = (argc >= 3) ? fopen(argv[2], "wb") : NULL;
+
+        if (S.verbosity > 0){
+            printf("|  Number of variables:  %12d                                         |\n", S.nVars());
+            printf("|  Number of clauses:    %12d                                         |\n", S.nClauses()); }
+        
+        double parsed_time = cpuTime();
+        if (S.verbosity > 0)
+            printf("|  Parse time:           %12.2f s                                       |\n", parsed_time - initial_time);
+
+        // Change to signal-handlers that will only notify the solver and allow it to terminate
+        // voluntarily:
+        signal(SIGINT, SIGINT_interrupt);
+        signal(SIGXCPU,SIGINT_interrupt);
+
+        S.eliminate(true);
+        double simplified_time = cpuTime();
+        if (S.verbosity > 0){
+            printf("|  Simplification time:  %12.2f s                                       |\n", simplified_time - parsed_time);
+            printf("|                                                                             |\n"); }
+
+        if (!S.okay()){
+            if (res != NULL) fprintf(res, "UNSAT\n"), fclose(res);
+            if (S.verbosity > 0){
+                printf("===============================================================================\n");
+                printf("Solved by simplification\n");
+                printStats(S);
+                printf("\n"); }
+            printf("UNSATISFIABLE\n");
+            exit(20);
+        }
+
+        if (dimacs){
+            if (S.verbosity > 0)
+                printf("==============================[ Writing DIMACS ]===============================\n");
+            S.toDimacs((const char*)dimacs);
+            if (S.verbosity > 0)
+                printStats(S);
+            exit(0);
+        }
+
+        vec<Lit> dummy;
+        lbool ret = S.solveLimited(dummy);
+        
+        if (S.verbosity > 0){
+            printStats(S);
+            printf("\n"); }
+        printf(ret == l_True ? "SATISFIABLE\n" : ret == l_False ? "UNSATISFIABLE\n" : "INDETERMINATE\n");
+        if (res != NULL){
+            if (ret == l_True){
+                fprintf(res, "SAT\n");
+                for (int i = 0; i < S.nVars(); i++)
+                    if (S.model[i] != l_Undef)
+                        fprintf(res, "%s%s%d", (i==0)?"":" ", (S.model[i]==l_True)?"":"-", i+1);
+                fprintf(res, " 0\n");
+            }else if (ret == l_False)
+                fprintf(res, "UNSAT\n");
+            else
+                fprintf(res, "INDET\n");
+            fclose(res);
+        }
+
+#ifdef NDEBUG
+        exit(ret == l_True ? 10 : ret == l_False ? 20 : 0);     // (faster than "return", which will invoke the destructor for 'Solver')
+#else
+        return (ret == l_True ? 10 : ret == l_False ? 20 : 0);
+#endif
+    } catch (OutOfMemoryException&){
+        printf("===============================================================================\n");
+        printf("INDETERMINATE\n");
+        exit(0);
+    }
+}
diff --git a/src/prop/minisat/simp/Makefile b/src/prop/minisat/simp/Makefile
new file mode 100644
index 0000000..27b45f4
--- /dev/null
+++ b/src/prop/minisat/simp/Makefile
@@ -0,0 +1,4 @@
+EXEC      = minisat
+DEPDIR    = mtl utils core
+
+include $(MROOT)/mtl/template.mk
diff --git a/src/prop/minisat/simp/SimpSolver.cc b/src/prop/minisat/simp/SimpSolver.cc
new file mode 100644
index 0000000..9b551fa
--- /dev/null
+++ b/src/prop/minisat/simp/SimpSolver.cc
@@ -0,0 +1,758 @@
+/***********************************************************************************[SimpSolver.cc]
+Copyright (c) 2006,      Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#include "prop/minisat/simp/SimpSolver.h"
+
+#include "options/prop_options.h"
+#include "proof/clause_id.h"
+#include "proof/proof.h"
+#include "prop/minisat/mtl/Sort.h"
+#include "prop/minisat/utils/System.h"
+
+using namespace CVC4;
+using namespace CVC4::Minisat;
+
+//=================================================================================================
+// Options:
+
+
+static const char* _cat = "SIMP";
+
+static BoolOption   opt_use_asymm        (_cat, "asymm",        "Shrink clauses by asymmetric branching.", false);
+static BoolOption   opt_use_rcheck       (_cat, "rcheck",       "Check if a clause is already implied. (costly)", false);
+static BoolOption   opt_use_elim         (_cat, "elim",         "Perform variable elimination.", true);
+static IntOption    opt_grow             (_cat, "grow",         "Allow a variable elimination step to grow by a number of clauses.", 0);
+static IntOption    opt_clause_lim       (_cat, "cl-lim",       "Variables are not eliminated if it produces a resolvent with a length above this limit. -1 means no limit", 20,   IntRange(-1, INT32_MAX));
+static IntOption    opt_subsumption_lim  (_cat, "sub-lim",      "Do not check if subsumption against a clause larger than this. -1 means no limit.", 1000, IntRange(-1, INT32_MAX));
+static DoubleOption opt_simp_garbage_frac(_cat, "simp-gc-frac", "The fraction of wasted memory allowed before a garbage collection is triggered during simplification.",  0.5, DoubleRange(0, false, HUGE_VAL, false));
+
+
+//=================================================================================================
+// Constructor/Destructor:
+
+
+SimpSolver::SimpSolver(CVC4::prop::TheoryProxy* proxy, CVC4::context::Context* context, bool enableIncremental) :
+    Solver(proxy, context, enableIncremental)
+  , grow               (opt_grow)
+  , clause_lim         (opt_clause_lim)
+  , subsumption_lim    (opt_subsumption_lim)
+  , simp_garbage_frac  (opt_simp_garbage_frac)
+  , use_asymm          (opt_use_asymm)
+  , use_rcheck         (opt_use_rcheck)
+  , use_elim           (options::minisatUseElim() && !enableIncremental)
+  , merges             (0)
+  , asymm_lits         (0)
+  , eliminated_vars    (0)
+  , elimorder          (1)
+  , use_simplification (!enableIncremental && !PROOF_ON()) // TODO: turn off simplifications if proofs are on initially
+  , occurs             (ClauseDeleted(ca))
+  , elim_heap          (ElimLt(n_occ))
+  , bwdsub_assigns     (0)
+  , n_touched          (0)
+{
+    if(options::minisatUseElim() &&
+       options::minisatUseElim.wasSetByUser() &&
+       enableIncremental) {
+        WarningOnce() << "Incremental mode incompatible with --minisat-elim" << std::endl;
+    }
+
+    vec<Lit> dummy(1,lit_Undef);
+    ca.extra_clause_field = true; // NOTE: must happen before allocating the dummy clause below.
+    bwdsub_tmpunit        = ca.alloc(0, dummy);
+    remove_satisfied      = false;
+
+    // add the initialization for all the internal variables
+    for (int i = frozen.size(); i < vardata.size(); ++ i) {
+      frozen    .push(1);
+      eliminated.push(0);
+      if (use_simplification){
+          n_occ     .push(0);
+          n_occ     .push(0);
+          occurs    .init(i);
+          touched   .push(0);
+          elim_heap .insert(i);
+      }
+    }
+}
+
+
+SimpSolver::~SimpSolver()
+{
+}
+
+
+Var SimpSolver::newVar(bool sign, bool dvar, bool isTheoryAtom, bool preRegister, bool canErase) {
+    Var v = Solver::newVar(sign, dvar, isTheoryAtom, preRegister, canErase);
+
+    if (use_simplification){
+        frozen    .push((char)(!canErase));
+        eliminated.push((char)false);
+        n_occ     .push(0);
+        n_occ     .push(0);
+        occurs    .init(v);
+        touched   .push(0);
+        elim_heap .insert(v);
+    }
+    return v; }
+
+
+
+lbool SimpSolver::solve_(bool do_simp, bool turn_off_simp)
+{
+    if (options::minisatDumpDimacs()) {
+      toDimacs(); 
+      return l_Undef; 
+    }
+    popTrail();
+
+    vec<Var> extra_frozen;
+    lbool    result = l_True;
+
+    do_simp &= use_simplification;
+
+    if (do_simp){
+        // Assumptions must be temporarily frozen to run variable elimination:
+        for (int i = 0; i < assumptions.size(); i++){
+            Var v = var(assumptions[i]);
+
+            // If an assumption has been eliminated, remember it.
+            assert(!isEliminated(v));
+
+            if (!frozen[v]){
+                // Freeze and store.
+                setFrozen(v, true);
+                extra_frozen.push(v);
+            } }
+
+        result = lbool(eliminate(turn_off_simp));
+    }
+
+    if (result == l_True)
+        result = Solver::solve_();
+    else if (verbosity >= 1)
+        printf("===============================================================================\n");
+
+    if (result == l_True)
+        extendModel();
+
+    if (do_simp)
+        // Unfreeze the assumptions that were frozen:
+        for (int i = 0; i < extra_frozen.size(); i++)
+            setFrozen(extra_frozen[i], false);
+
+    return result;
+}
+
+
+
+bool SimpSolver::addClause_(vec<Lit>& ps, bool removable, ClauseId& id)
+{
+#ifndef NDEBUG
+    if (use_simplification) {
+      for (int i = 0; i < ps.size(); i++)
+        assert(!isEliminated(var(ps[i])));
+    }
+#endif
+
+    int nclauses = clauses_persistent.size();
+
+    if (use_rcheck && implied(ps))
+        return true;
+
+    if (!Solver::addClause_(ps, removable, id))
+        return false;
+
+    if (use_simplification && clauses_persistent.size() == nclauses + 1){
+        CRef          cr = clauses_persistent.last();
+        const Clause& c  = ca[cr];
+
+        // NOTE: the clause is added to the queue immediately and then
+        // again during 'gatherTouchedClauses()'. If nothing happens
+        // in between, it will only be checked once. Otherwise, it may
+        // be checked twice unnecessarily. This is an unfortunate
+        // consequence of how backward subsumption is used to mimic
+        // forward subsumption.
+        subsumption_queue.insert(cr);
+        for (int i = 0; i < c.size(); i++){
+            occurs[var(c[i])].push(cr);
+            n_occ[toInt(c[i])]++;
+            touched[var(c[i])] = 1;
+            n_touched++;
+            if (elim_heap.inHeap(var(c[i])))
+                elim_heap.increase(var(c[i]));
+        }
+    }
+
+    return true;
+}
+
+
+void SimpSolver::removeClause(CRef cr)
+{
+    const Clause& c = ca[cr];
+    Debug("minisat") << "SimpSolver::removeClause(" << c << ")" << std::endl;
+
+    if (use_simplification)
+        for (int i = 0; i < c.size(); i++){
+            n_occ[toInt(c[i])]--;
+            updateElimHeap(var(c[i]));
+            occurs.smudge(var(c[i]));
+        }
+
+    Solver::removeClause(cr);
+}
+
+
+bool SimpSolver::strengthenClause(CRef cr, Lit l)
+{
+    Clause& c = ca[cr];
+    assert(decisionLevel() == 0);
+    assert(use_simplification);
+
+    // FIX: this is too inefficient but would be nice to have (properly implemented)
+    // if (!find(subsumption_queue, &c))
+    subsumption_queue.insert(cr);
+
+    if (c.size() == 2){
+        removeClause(cr);
+        c.strengthen(l);
+    }else{
+        detachClause(cr, true);
+        c.strengthen(l);
+        attachClause(cr);
+        remove(occurs[var(l)], cr);
+        n_occ[toInt(l)]--;
+        updateElimHeap(var(l));
+    }
+
+    return c.size() == 1 ? enqueue(c[0]) && propagate(CHECK_WITHOUT_THEORY) == CRef_Undef : true;
+}
+
+
+// Returns FALSE if clause is always satisfied ('out_clause' should not be used).
+bool SimpSolver::merge(const Clause& _ps, const Clause& _qs, Var v, vec<Lit>& out_clause)
+{
+    merges++;
+    out_clause.clear();
+
+    bool  ps_smallest = _ps.size() < _qs.size();
+    const Clause& ps  =  ps_smallest ? _qs : _ps;
+    const Clause& qs  =  ps_smallest ? _ps : _qs;
+
+    for (int i = 0; i < qs.size(); i++){
+        if (var(qs[i]) != v){
+            for (int j = 0; j < ps.size(); j++)
+                if (var(ps[j]) == var(qs[i]))
+                    if (ps[j] == ~qs[i])
+                        return false;
+                    else
+                        goto next;
+            out_clause.push(qs[i]);
+        }
+        next:;
+    }
+
+    for (int i = 0; i < ps.size(); i++)
+        if (var(ps[i]) != v)
+            out_clause.push(ps[i]);
+
+    return true;
+}
+
+
+// Returns FALSE if clause is always satisfied.
+bool SimpSolver::merge(const Clause& _ps, const Clause& _qs, Var v, int& size)
+{
+    merges++;
+
+    bool  ps_smallest = _ps.size() < _qs.size();
+    const Clause& ps  =  ps_smallest ? _qs : _ps;
+    const Clause& qs  =  ps_smallest ? _ps : _qs;
+    const Lit*  __ps  = (const Lit*)ps;
+    const Lit*  __qs  = (const Lit*)qs;
+
+    size = ps.size()-1;
+
+    for (int i = 0; i < qs.size(); i++){
+        if (var(__qs[i]) != v){
+            for (int j = 0; j < ps.size(); j++)
+                if (var(__ps[j]) == var(__qs[i]))
+                    if (__ps[j] == ~__qs[i])
+                        return false;
+                    else
+                        goto next;
+            size++;
+        }
+        next:;
+    }
+
+    return true;
+}
+
+
+void SimpSolver::gatherTouchedClauses()
+{
+    if (n_touched == 0) return;
+
+    int i,j;
+    for (i = j = 0; i < subsumption_queue.size(); i++)
+        if (ca[subsumption_queue[i]].mark() == 0)
+            ca[subsumption_queue[i]].mark(2);
+
+    for (i = 0; i < touched.size(); i++)
+        if (touched[i]){
+            const vec<CRef>& cs = occurs.lookup(i);
+            for (j = 0; j < cs.size(); j++)
+                if (ca[cs[j]].mark() == 0){
+                    subsumption_queue.insert(cs[j]);
+                    ca[cs[j]].mark(2);
+                }
+            touched[i] = 0;
+        }
+
+    for (i = 0; i < subsumption_queue.size(); i++)
+        if (ca[subsumption_queue[i]].mark() == 2)
+            ca[subsumption_queue[i]].mark(0);
+
+    n_touched = 0;
+}
+
+
+bool SimpSolver::implied(const vec<Lit>& c)
+{
+    assert(decisionLevel() == 0);
+
+    trail_lim.push(trail.size());
+    for (int i = 0; i < c.size(); i++)
+        if (value(c[i]) == l_True){
+            cancelUntil(0);
+            return false;
+        }else if (value(c[i]) != l_False){
+            assert(value(c[i]) == l_Undef);
+            uncheckedEnqueue(~c[i]);
+        }
+
+    bool result = propagate(CHECK_WITHOUT_THEORY) != CRef_Undef;
+    cancelUntil(0);
+    return result;
+}
+
+
+// Backward subsumption + backward subsumption resolution
+bool SimpSolver::backwardSubsumptionCheck(bool verbose)
+{
+    int cnt = 0;
+    int subsumed = 0;
+    int deleted_literals = 0;
+    assert(decisionLevel() == 0);
+
+    while (subsumption_queue.size() > 0 || bwdsub_assigns < trail.size()){
+
+        // Empty subsumption queue and return immediately on user-interrupt:
+        if (asynch_interrupt){
+            subsumption_queue.clear();
+            bwdsub_assigns = trail.size();
+            break; }
+
+        // Check top-level assignments by creating a dummy clause and placing it in the queue:
+        if (subsumption_queue.size() == 0 && bwdsub_assigns < trail.size()){
+            Lit l = trail[bwdsub_assigns++];
+            ca[bwdsub_tmpunit][0] = l;
+            ca[bwdsub_tmpunit].calcAbstraction();
+            subsumption_queue.insert(bwdsub_tmpunit); }
+
+        CRef    cr = subsumption_queue.peek(); subsumption_queue.pop();
+        Clause& c  = ca[cr];
+
+        if (c.mark()) continue;
+
+        if (verbose && verbosity >= 2 && cnt++ % 1000 == 0)
+            printf("subsumption left: %10d (%10d subsumed, %10d deleted literals)\r", subsumption_queue.size(), subsumed, deleted_literals);
+
+        assert(c.size() > 1 || value(c[0]) == l_True);    // Unit-clauses should have been propagated before this point.
+
+        // Find best variable to scan:
+        Var best = var(c[0]);
+        for (int i = 1; i < c.size(); i++)
+            if (occurs[var(c[i])].size() < occurs[best].size())
+                best = var(c[i]);
+
+        // Search all candidates:
+        vec<CRef>& _cs = occurs.lookup(best);
+        CRef*       cs = (CRef*)_cs;
+
+        for (int j = 0; j < _cs.size(); j++)
+            if (c.mark())
+                break;
+            else if (!ca[cs[j]].mark() &&  cs[j] != cr && (subsumption_lim == -1 || ca[cs[j]].size() < subsumption_lim)){
+                Lit l = c.subsumes(ca[cs[j]]);
+
+                if (l == lit_Undef)
+                    subsumed++, removeClause(cs[j]);
+                else if (l != lit_Error){
+                    deleted_literals++;
+
+                    if (!strengthenClause(cs[j], ~l))
+                        return false;
+
+                    // Did current candidate get deleted from cs? Then check candidate at index j again:
+                    if (var(l) == best)
+                        j--;
+                }
+            }
+    }
+
+    return true;
+}
+
+
+bool SimpSolver::asymm(Var v, CRef cr)
+{
+    Clause& c = ca[cr];
+    assert(decisionLevel() == 0);
+
+    if (c.mark() || satisfied(c)) return true;
+
+    trail_lim.push(trail.size());
+    Lit l = lit_Undef;
+    for (int i = 0; i < c.size(); i++)
+        if (var(c[i]) != v && value(c[i]) != l_False)
+            uncheckedEnqueue(~c[i]);
+        else
+            l = c[i];
+
+    if (propagate(CHECK_WITHOUT_THEORY) != CRef_Undef){
+        cancelUntil(0);
+        asymm_lits++;
+        if (!strengthenClause(cr, l))
+            return false;
+    }else
+        cancelUntil(0);
+
+    return true;
+}
+
+
+bool SimpSolver::asymmVar(Var v)
+{
+    assert(use_simplification);
+
+    const vec<CRef>& cls = occurs.lookup(v);
+
+    if (value(v) != l_Undef || cls.size() == 0)
+        return true;
+
+    for (int i = 0; i < cls.size(); i++)
+        if (!asymm(v, cls[i]))
+            return false;
+
+    return backwardSubsumptionCheck();
+}
+
+
+static void mkElimClause(vec<uint32_t>& elimclauses, Lit x)
+{
+    elimclauses.push(toInt(x));
+    elimclauses.push(1);
+}
+
+
+static void mkElimClause(vec<uint32_t>& elimclauses, Var v, Clause& c)
+{
+    int first = elimclauses.size();
+    int v_pos = -1;
+
+    // Copy clause to elimclauses-vector. Remember position where the
+    // variable 'v' occurs:
+    for (int i = 0; i < c.size(); i++){
+        elimclauses.push(toInt(c[i]));
+        if (var(c[i]) == v)
+            v_pos = i + first;
+    }
+    assert(v_pos != -1);
+
+    // Swap the first literal with the 'v' literal, so that the literal
+    // containing 'v' will occur first in the clause:
+    uint32_t tmp = elimclauses[v_pos];
+    elimclauses[v_pos] = elimclauses[first];
+    elimclauses[first] = tmp;
+
+    // Store the length of the clause last:
+    elimclauses.push(c.size());
+}
+
+
+
+bool SimpSolver::eliminateVar(Var v)
+{
+    assert(!frozen[v]);
+    assert(!isEliminated(v));
+    assert(value(v) == l_Undef);
+
+    // Split the occurrences into positive and negative:
+    //
+    const vec<CRef>& cls = occurs.lookup(v);
+    vec<CRef>        pos, neg;
+    for (int i = 0; i < cls.size(); i++)
+        (find(ca[cls[i]], mkLit(v)) ? pos : neg).push(cls[i]);
+
+    // Check wether the increase in number of clauses stays within the allowed ('grow'). Moreover, no
+    // clause must exceed the limit on the maximal clause size (if it is set):
+    //
+    int cnt         = 0;
+    int clause_size = 0;
+
+    for (int i = 0; i < pos.size(); i++)
+        for (int j = 0; j < neg.size(); j++)
+            if (merge(ca[pos[i]], ca[neg[j]], v, clause_size) && 
+                (++cnt > cls.size() + grow || (clause_lim != -1 && clause_size > clause_lim)))
+                return true;
+
+    // Delete and store old clauses:
+    eliminated[v] = true;
+    setDecisionVar(v, false);
+    eliminated_vars++;
+
+    if (pos.size() > neg.size()){
+        for (int i = 0; i < neg.size(); i++)
+            mkElimClause(elimclauses, v, ca[neg[i]]);
+        mkElimClause(elimclauses, mkLit(v));
+    }else{
+        for (int i = 0; i < pos.size(); i++)
+            mkElimClause(elimclauses, v, ca[pos[i]]);
+        mkElimClause(elimclauses, ~mkLit(v));
+    }
+
+    for (int i = 0; i < cls.size(); i++)
+        removeClause(cls[i]); 
+
+    ClauseId id = ClauseIdUndef; 
+    // Produce clauses in cross product:
+    vec<Lit>& resolvent = add_tmp;
+    for (int i = 0; i < pos.size(); i++)
+        for (int j = 0; j < neg.size(); j++) {
+            bool removable = ca[pos[i]].removable() && ca[pos[neg[j]]].removable();
+            if (merge(ca[pos[i]], ca[neg[j]], v, resolvent) &&
+                !addClause_(resolvent, removable, id)) {
+                return false;
+            }
+        }
+
+    // Free occurs list for this variable:
+    occurs[v].clear(true);
+    
+    // Free watchers lists for this variable, if possible:
+    if (watches[ mkLit(v)].size() == 0) watches[ mkLit(v)].clear(true);
+    if (watches[~mkLit(v)].size() == 0) watches[~mkLit(v)].clear(true);
+
+    return backwardSubsumptionCheck();
+}
+
+
+bool SimpSolver::substitute(Var v, Lit x)
+{
+    assert(!frozen[v]);
+    assert(!isEliminated(v));
+    assert(value(v) == l_Undef);
+
+    if (!ok) return false;
+
+    eliminated[v] = true;
+    setDecisionVar(v, false);
+    const vec<CRef>& cls = occurs.lookup(v);
+    
+    vec<Lit>& subst_clause = add_tmp;
+    for (int i = 0; i < cls.size(); i++){
+        Clause& c = ca[cls[i]];
+
+        subst_clause.clear();
+        for (int j = 0; j < c.size(); j++){
+            Lit p = c[j];
+            subst_clause.push(var(p) == v ? x ^ sign(p) : p);
+        }
+
+        removeClause(cls[i]);
+        ClauseId id = ClauseIdUndef;
+        if (!addClause_(subst_clause, c.removable(), id)) {
+            return ok = false;
+        }
+    }
+
+    return true;
+}
+
+
+void SimpSolver::extendModel()
+{
+    int i, j;
+    Lit x;
+
+    for (i = elimclauses.size()-1; i > 0; i -= j){
+        for (j = elimclauses[i--]; j > 1; j--, i--)
+            if (modelValue(toLit(elimclauses[i])) != l_False)
+                goto next;
+
+        x = toLit(elimclauses[i]);
+        model[var(x)] = lbool(!sign(x));
+    next:;
+    }
+}
+
+
+bool SimpSolver::eliminate(bool turn_off_elim)
+{
+    if (!simplify())
+        return false;
+    else if (!use_simplification)
+        return true;
+
+    // Main simplification loop:
+    //
+    while (n_touched > 0 || bwdsub_assigns < trail.size() || elim_heap.size() > 0){
+
+        gatherTouchedClauses();
+        // printf("  ## (time = %6.2f s) BWD-SUB: queue = %d, trail = %d\n", cpuTime(), subsumption_queue.size(), trail.size() - bwdsub_assigns);
+        if ((subsumption_queue.size() > 0 || bwdsub_assigns < trail.size()) && 
+            !backwardSubsumptionCheck(true)){
+            ok = false; goto cleanup; }
+
+        // Empty elim_heap and return immediately on user-interrupt:
+        if (asynch_interrupt){
+            assert(bwdsub_assigns == trail.size());
+            assert(subsumption_queue.size() == 0);
+            assert(n_touched == 0);
+            elim_heap.clear();
+            goto cleanup; }
+
+        // printf("  ## (time = %6.2f s) ELIM: vars = %d\n", cpuTime(), elim_heap.size());
+        for (int cnt = 0; !elim_heap.empty(); cnt++){
+            Var elim = elim_heap.removeMin();
+            
+            if (asynch_interrupt) break;
+
+            if (isEliminated(elim) || value(elim) != l_Undef) continue;
+
+            if (verbosity >= 2 && cnt % 100 == 0)
+                printf("elimination left: %10d\r", elim_heap.size());
+
+            if (use_asymm){
+                // Temporarily freeze variable. Otherwise, it would immediately end up on the queue again:
+                bool was_frozen = frozen[elim];
+                frozen[elim] = true;
+                if (!asymmVar(elim)){
+                    ok = false; goto cleanup; }
+                frozen[elim] = was_frozen; }
+
+            // At this point, the variable may have been set by assymetric branching, so check it
+            // again. Also, don't eliminate frozen variables:
+            if (use_elim && value(elim) == l_Undef && !frozen[elim] && !eliminateVar(elim)){
+                ok = false; goto cleanup; }
+
+            checkGarbage(simp_garbage_frac);
+        }
+
+        assert(subsumption_queue.size() == 0);
+    }
+ cleanup:
+
+    // If no more simplification is needed, free all simplification-related data structures:
+    if (turn_off_elim){
+        touched  .clear(true);
+        occurs   .clear(true);
+        n_occ    .clear(true);
+        elim_heap.clear(true);
+        subsumption_queue.clear(true);
+
+        use_simplification    = false;
+        remove_satisfied      = true;
+        ca.extra_clause_field = false;
+
+        // Force full cleanup (this is safe and desirable since it only happens once):
+        rebuildOrderHeap();
+        garbageCollect();
+    }else{
+        // Cheaper cleanup:
+        cleanUpClauses(); // TODO: can we make 'cleanUpClauses()' not be linear in the problem size somehow?
+        checkGarbage();
+    }
+
+    if (verbosity >= 1 && elimclauses.size() > 0)
+        printf("|  Eliminated clauses:     %10.2f Mb                                      |\n", 
+               double(elimclauses.size() * sizeof(uint32_t)) / (1024*1024));
+
+    return ok;
+}
+
+
+void SimpSolver::cleanUpClauses()
+{
+    occurs.cleanAll();
+    int i,j;
+    for (i = j = 0; i < clauses_persistent.size(); i++)
+        if (ca[clauses_persistent[i]].mark() == 0)
+            clauses_persistent[j++] = clauses_persistent[i];
+    clauses_persistent.shrink(i - j);
+}
+
+
+//=================================================================================================
+// Garbage Collection methods:
+
+
+void SimpSolver::relocAll(ClauseAllocator& to)
+{
+    if (!use_simplification) return;
+
+    // All occurs lists:
+    //
+    for (int i = 0; i < nVars(); i++){
+        vec<CRef>& cs = occurs[i];
+        for (int j = 0; j < cs.size(); j++)
+            ca.reloc(cs[j], to);
+    }
+
+    // Subsumption queue:
+    //
+    for (int i = 0; i < subsumption_queue.size(); i++)
+        ca.reloc(subsumption_queue[i], to);
+        // TODO reloc now takes the proof form the core solver 
+    // Temporary clause:
+    //
+    ca.reloc(bwdsub_tmpunit, to);
+    // TODO reloc now takes the proof form the core solver 
+}
+
+
+void SimpSolver::garbageCollect()
+{
+    // Initialize the next region to a size corresponding to the estimated utilization degree. This
+    // is not precise but should avoid some unnecessary reallocations for the new region:
+    ClauseAllocator to(ca.size() - ca.wasted()); 
+
+    cleanUpClauses();
+    to.extra_clause_field = ca.extra_clause_field; // NOTE: this is important to keep (or lose) the extra fields.
+    relocAll(to);
+    Solver::relocAll(to);
+    if (verbosity >= 2)
+        printf("|  Garbage collection:   %12d bytes => %12d bytes             |\n", 
+               ca.size()*ClauseAllocator::Unit_Size, to.size()*ClauseAllocator::Unit_Size);
+    to.moveTo(ca);
+    // TODO: proof.finalizeUpdateId(); 
+}
diff --git a/src/prop/minisat/simp/SimpSolver.h b/src/prop/minisat/simp/SimpSolver.h
new file mode 100644
index 0000000..a995c13
--- /dev/null
+++ b/src/prop/minisat/simp/SimpSolver.h
@@ -0,0 +1,242 @@
+/************************************************************************************[SimpSolver.h]
+Copyright (c) 2006,      Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef Minisat_SimpSolver_h
+#define Minisat_SimpSolver_h
+
+#include "cvc4_private.h"
+
+#include "proof/clause_id.h"
+#include "prop/minisat/mtl/Queue.h"
+#include "prop/minisat/core/Solver.h"
+
+
+namespace CVC4 {
+namespace prop {
+  class TheoryProxy;
+}
+}
+
+namespace CVC4 {
+namespace Minisat {
+
+//=================================================================================================
+
+class SimpSolver : public Solver {
+ public:
+    // Constructor/Destructor:
+    //
+    SimpSolver(CVC4::prop::TheoryProxy* proxy, CVC4::context::Context* context, bool enableIncremental = false);
+    CVC4_PUBLIC ~SimpSolver();
+
+    // Problem specification:
+    //
+    Var     newVar    (bool polarity = true, bool dvar = true, bool isTheoryAtom = false, bool preRegister = false, bool canErase = true);
+    bool    addClause (const vec<Lit>& ps, bool removable, ClauseId& id);
+    bool    addEmptyClause(bool removable); // Add the empty clause to the solver.
+    bool    addClause (Lit p, bool removable, ClauseId& id); // Add a unit clause to the solver.
+    bool    addClause (Lit p, Lit q, bool removable, ClauseId& id); // Add a binary clause to the solver.
+    bool    addClause (Lit p, Lit q, Lit r, bool removable, ClauseId& id); // Add a ternary clause to the solver.
+    bool    addClause_(vec<Lit>& ps, bool removable, ClauseId& id);
+    bool    substitute(Var v, Lit x);  // Replace all occurences of v with x (may cause a contradiction).
+
+    // Variable mode:
+    // 
+    void    setFrozen (Var v, bool b); // If a variable is frozen it will not be eliminated.
+    bool    isEliminated(Var v) const;
+
+    // Solving:
+    //
+    lbool    solve       (const vec<Lit>& assumps, bool do_simp = true, bool turn_off_simp = false);
+    lbool    solveLimited(const vec<Lit>& assumps, bool do_simp = true, bool turn_off_simp = false);
+    lbool    solve       (                     bool do_simp = true, bool turn_off_simp = false);
+    lbool    solve       (Lit p       ,        bool do_simp = true, bool turn_off_simp = false);       
+    lbool    solve       (Lit p, Lit q,        bool do_simp = true, bool turn_off_simp = false);
+    lbool    solve       (Lit p, Lit q, Lit r, bool do_simp = true, bool turn_off_simp = false);
+    bool    eliminate   (bool turn_off_elim = false);  // Perform variable elimination based simplification. 
+
+    // Memory managment:
+    //
+    virtual void garbageCollect();
+
+
+    // Generate a (possibly simplified) DIMACS file:
+    //
+#if 0
+    void    toDimacs  (const char* file, const vec<Lit>& assumps);
+    void    toDimacs  (const char* file);
+    void    toDimacs  (const char* file, Lit p);
+    void    toDimacs  (const char* file, Lit p, Lit q);
+    void    toDimacs  (const char* file, Lit p, Lit q, Lit r);
+#endif
+
+    // Mode of operation:
+    //
+    int     grow;              // Allow a variable elimination step to grow by a number of clauses (default to zero).
+    int     clause_lim;        // Variables are not eliminated if it produces a resolvent with a length above this limit.
+                               // -1 means no limit.
+    int     subsumption_lim;   // Do not check if subsumption against a clause larger than this. -1 means no limit.
+    double  simp_garbage_frac; // A different limit for when to issue a GC during simplification (Also see 'garbage_frac').
+
+    bool    use_asymm;         // Shrink clauses by asymmetric branching.
+    bool    use_rcheck;        // Check if a clause is already implied. Prett costly, and subsumes subsumptions :)
+    bool    use_elim;          // Perform variable elimination.
+
+    // Statistics:
+    //
+    int     merges;
+    int     asymm_lits;
+    int     eliminated_vars;
+
+ protected:
+
+    // Helper structures:
+    //
+    struct ElimLt {
+        const vec<int>& n_occ;
+        explicit ElimLt(const vec<int>& no) : n_occ(no) {}
+
+        // TODO: are 64-bit operations here noticably bad on 32-bit platforms? Could use a saturating
+        // 32-bit implementation instead then, but this will have to do for now.
+        uint64_t cost  (Var x)        const { return (uint64_t)n_occ[toInt(mkLit(x))] * (uint64_t)n_occ[toInt(~mkLit(x))]; }
+
+        // old ordering function
+        // bool operator()(Var x, Var y) const { return cost(x) < cost(y); }
+        
+         bool operator()(Var x, Var y) const { 
+             int c_x = cost(x);
+             int c_y = cost(y);
+             return c_x < c_y || (c_x == c_y && x < y); }
+    };
+
+    struct ClauseDeleted {
+        const ClauseAllocator& ca;
+        explicit ClauseDeleted(const ClauseAllocator& _ca) : ca(_ca) {}
+        bool operator()(const CRef& cr) const { return ca[cr].mark() == 1; } };
+
+    // Solver state:
+    //
+    int                 elimorder;
+    bool                use_simplification;
+    vec<uint32_t>       elimclauses;
+    vec<char>           touched;
+    OccLists<Var, vec<CRef>, ClauseDeleted>
+                        occurs;
+    vec<int>            n_occ;
+    Heap<ElimLt>        elim_heap;
+    Queue<CRef>         subsumption_queue;
+    vec<char>           frozen;
+    vec<char>           eliminated;
+    int                 bwdsub_assigns;
+    int                 n_touched;
+
+    // Temporaries:
+    //
+    CRef                bwdsub_tmpunit;
+
+    // Main internal methods:
+    //
+    lbool         solve_                   (bool do_simp = true, bool turn_off_simp = false);
+    bool          asymm                    (Var v, CRef cr);
+    bool          asymmVar                 (Var v);
+    void          updateElimHeap           (Var v);
+    void          gatherTouchedClauses     ();
+    bool          merge                    (const Clause& _ps, const Clause& _qs, Var v, vec<Lit>& out_clause);
+    bool          merge                    (const Clause& _ps, const Clause& _qs, Var v, int& size);
+    bool          backwardSubsumptionCheck (bool verbose = false);
+    bool          eliminateVar             (Var v);
+    void          extendModel              ();
+
+    void          removeClause             (CRef cr);
+    bool          strengthenClause         (CRef cr, Lit l);
+    void          cleanUpClauses           ();
+    bool          implied                  (const vec<Lit>& c);
+    void          relocAll                 (ClauseAllocator& to);
+};
+
+
+//=================================================================================================
+// Implementation of inline methods:
+
+
+inline bool SimpSolver::isEliminated (Var v) const { return eliminated[v]; }
+inline void SimpSolver::updateElimHeap(Var v) {
+    assert(use_simplification);
+    // if (!frozen[v] && !isEliminated(v) && value(v) == l_Undef)
+    if (elim_heap.inHeap(v) || (!frozen[v] && !isEliminated(v) && value(v) == l_Undef))
+        elim_heap.update(v); }
+
+
+inline bool SimpSolver::addClause(const vec<Lit>& ps, bool removable, ClauseId& id)
+{ ps.copyTo(add_tmp); return addClause_(add_tmp, removable, id); }
+inline bool SimpSolver::addEmptyClause(bool removable)    { add_tmp.clear(); ClauseId id=-1; return addClause_(add_tmp, removable, id); }
+inline bool SimpSolver::addClause    (Lit p, bool removable, ClauseId& id)
+                                                                             { add_tmp.clear(); add_tmp.push(p); return addClause_(add_tmp, removable, id); }
+inline bool SimpSolver::addClause    (Lit p, Lit q, bool removable, ClauseId& id)
+                                                                             { add_tmp.clear(); add_tmp.push(p); add_tmp.push(q); return addClause_(add_tmp, removable, id); }
+inline bool SimpSolver::addClause    (Lit p, Lit q, Lit r, bool removable, ClauseId& id)
+                                                                             { add_tmp.clear(); add_tmp.push(p); add_tmp.push(q); add_tmp.push(r); return addClause_(add_tmp, removable, id); }
+inline void SimpSolver::setFrozen    (Var v, bool b) { frozen[v] = (char)b; if (use_simplification && !b) { updateElimHeap(v); } }
+
+// the solver can always return unknown due to resource limiting
+inline lbool SimpSolver::solve        (                     bool do_simp, bool turn_off_simp)  {
+  budgetOff();
+  assumptions.clear();
+  return solve_(do_simp, turn_off_simp);
+ }
+ 
+inline lbool SimpSolver::solve        (Lit p       ,        bool do_simp, bool turn_off_simp)  {
+  budgetOff();
+  assumptions.clear();
+  assumptions.push(p);
+  return solve_(do_simp, turn_off_simp);
+ }
+ 
+inline lbool SimpSolver::solve        (Lit p, Lit q,        bool do_simp, bool turn_off_simp)  {
+  budgetOff();
+  assumptions.clear();
+  assumptions.push(p);
+  assumptions.push(q);
+  return solve_(do_simp, turn_off_simp);
+ }
+ 
+inline lbool SimpSolver::solve        (Lit p, Lit q, Lit r, bool do_simp, bool turn_off_simp)  {
+  budgetOff();
+  assumptions.clear();
+  assumptions.push(p);
+  assumptions.push(q);
+  assumptions.push(r);
+  return solve_(do_simp, turn_off_simp);
+ }
+
+ inline lbool SimpSolver::solve        (const vec<Lit>& assumps, bool do_simp, bool turn_off_simp){ 
+   budgetOff();
+    assumps.copyTo(assumptions);
+    return solve_(do_simp, turn_off_simp);
+ }
+
+inline lbool SimpSolver::solveLimited (const vec<Lit>& assumps, bool do_simp, bool turn_off_simp){ 
+    assumps.copyTo(assumptions); return solve_(do_simp, turn_off_simp); }
+
+//=================================================================================================
+} /* CVC4::Minisat namespace */
+} /* CVC4 namespace */
+
+#endif
diff --git a/src/prop/minisat/utils/Options.cc b/src/prop/minisat/utils/Options.cc
new file mode 100644
index 0000000..94c6719
--- /dev/null
+++ b/src/prop/minisat/utils/Options.cc
@@ -0,0 +1,91 @@
+/**************************************************************************************[Options.cc]
+Copyright (c) 2008-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#include "prop/minisat/mtl/Sort.h"
+#include "prop/minisat/utils/Options.h"
+#include "prop/minisat/utils/ParseUtils.h"
+
+using namespace Minisat;
+
+void Minisat::parseOptions(int& argc, char** argv, bool strict)
+{
+    int i, j;
+    for (i = j = 1; i < argc; i++){
+        const char* str = argv[i];
+        if (match(str, "--") && match(str, Option::getHelpPrefixString()) && match(str, "help")){
+            if (*str == '\0')
+                printUsageAndExit(argc, argv);
+            else if (match(str, "-verb"))
+                printUsageAndExit(argc, argv, true);
+        } else {
+            bool parsed_ok = false;
+        
+            for (int k = 0; !parsed_ok && k < Option::getOptionList().size(); k++){
+                parsed_ok = Option::getOptionList()[k]->parse(argv[i]);
+
+                // fprintf(stderr, "checking %d: %s against flag <%s> (%s)\n", i, argv[i], Option::getOptionList()[k]->name, parsed_ok ? "ok" : "skip");
+            }
+
+            if (!parsed_ok)
+                if (strict && match(argv[i], "-"))
+                    fprintf(stderr, "ERROR! Unknown flag \"%s\". Use '--%shelp' for help.\n", argv[i], Option::getHelpPrefixString()), exit(1);
+                else
+                    argv[j++] = argv[i];
+        }
+    }
+
+    argc -= (i - j);
+}
+
+
+void Minisat::setUsageHelp      (const char* str){ Option::getUsageString() = str; }
+void Minisat::setHelpPrefixStr  (const char* str){ Option::getHelpPrefixString() = str; }
+void Minisat::printUsageAndExit (int argc, char** argv, bool verbose)
+{
+    const char* usage = Option::getUsageString();
+    if (usage != NULL)
+        fprintf(stderr, usage, argv[0]);
+
+    sort(Option::getOptionList(), Option::OptionLt());
+
+    const char* prev_cat  = NULL;
+    const char* prev_type = NULL;
+
+    for (int i = 0; i < Option::getOptionList().size(); i++){
+        const char* cat  = Option::getOptionList()[i]->category;
+        const char* type = Option::getOptionList()[i]->type_name;
+
+        if (cat != prev_cat)
+            fprintf(stderr, "\n%s OPTIONS:\n\n", cat);
+        else if (type != prev_type)
+            fprintf(stderr, "\n");
+
+        Option::getOptionList()[i]->help(verbose);
+
+        prev_cat  = Option::getOptionList()[i]->category;
+        prev_type = Option::getOptionList()[i]->type_name;
+    }
+
+    fprintf(stderr, "\nHELP OPTIONS:\n\n");
+    fprintf(stderr, "  --%shelp        Print help message.\n", Option::getHelpPrefixString());
+    fprintf(stderr, "  --%shelp-verb   Print verbose help message.\n", Option::getHelpPrefixString());
+    fprintf(stderr, "\n");
+    exit(0);
+}
+
diff --git a/src/prop/minisat/utils/Options.h b/src/prop/minisat/utils/Options.h
new file mode 100644
index 0000000..0577cbb
--- /dev/null
+++ b/src/prop/minisat/utils/Options.h
@@ -0,0 +1,388 @@
+/***************************************************************************************[Options.h]
+Copyright (c) 2008-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef Minisat_Options_h
+#define Minisat_Options_h
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+
+#include "prop/minisat/mtl/IntTypes.h"
+#include "prop/minisat/mtl/Vec.h"
+#include "prop/minisat/utils/ParseUtils.h"
+
+namespace CVC4 {
+namespace Minisat {
+
+//==================================================================================================
+// Top-level option parse/help functions:
+
+
+extern void parseOptions     (int& argc, char** argv, bool strict = false);
+extern void printUsageAndExit(int  argc, char** argv, bool verbose = false);
+extern void setUsageHelp     (const char* str);
+extern void setHelpPrefixStr (const char* str);
+
+
+//==================================================================================================
+// Options is an abstract class that gives the interface for all types options:
+
+
+class Option
+{
+ protected:
+    const char* name;
+    const char* description;
+    const char* category;
+    const char* type_name;
+
+    static vec<Option*>& getOptionList () { static vec<Option*> options; return options; }
+    static const char*&  getUsageString() { static const char* usage_str; return usage_str; }
+    static const char*&  getHelpPrefixString() { static const char* help_prefix_str = ""; return help_prefix_str; }
+
+    struct OptionLt {
+        bool operator()(const Option* x, const Option* y) {
+            int test1 = strcmp(x->category, y->category);
+            return test1 < 0 || (test1 == 0 && strcmp(x->type_name, y->type_name) < 0);
+        }
+    };
+
+    Option(const char* name_, 
+           const char* desc_,
+           const char* cate_,
+           const char* type_) : 
+      name       (name_)
+    , description(desc_)
+    , category   (cate_)
+    , type_name  (type_)
+    { 
+        getOptionList().push(this); 
+    }
+
+ public:
+    virtual ~Option() {}
+
+    virtual bool parse             (const char* str)      = 0;
+    virtual void help              (bool verbose = false) = 0;
+
+    friend  void parseOptions      (int& argc, char** argv, bool strict);
+    friend  void printUsageAndExit (int  argc, char** argv, bool verbose);
+    friend  void setUsageHelp      (const char* str);
+    friend  void setHelpPrefixStr  (const char* str);
+};
+
+
+//==================================================================================================
+// Range classes with specialization for floating types:
+
+
+struct IntRange {
+    int begin;
+    int end;
+    IntRange(int b, int e) : begin(b), end(e) {}
+};
+
+struct Int64Range {
+    int64_t begin;
+    int64_t end;
+    Int64Range(int64_t b, int64_t e) : begin(b), end(e) {}
+};
+
+struct DoubleRange {
+    double begin;
+    double end;
+    bool  begin_inclusive;
+    bool  end_inclusive;
+    DoubleRange(double b, bool binc, double e, bool einc) : begin(b), end(e), begin_inclusive(binc), end_inclusive(einc) {}
+};
+
+
+//==================================================================================================
+// Double options:
+
+
+class DoubleOption : public Option
+{
+ protected:
+    DoubleRange range;
+    double      value;
+
+ public:
+    DoubleOption(const char* c, const char* n, const char* d, double def = double(), DoubleRange r = DoubleRange(-HUGE_VAL, false, HUGE_VAL, false))
+        : Option(n, d, c, "<double>"), range(r), value(def) {
+        // FIXME: set LC_NUMERIC to "C" to make sure that strtof/strtod parses decimal point correctly.
+    }
+
+    operator      double   (void) const { return value; }
+    operator      double&  (void)       { return value; }
+    DoubleOption& operator=(double x)   { value = x; return *this; }
+
+    virtual bool parse(const char* str){
+        const char* span = str; 
+
+        if (!match(span, "-") || !match(span, name) || !match(span, "="))
+            return false;
+
+        char*  end;
+        double tmp = strtod(span, &end);
+
+        if (end == NULL) 
+            return false;
+        else if (tmp >= range.end && (!range.end_inclusive || tmp != range.end)){
+            fprintf(stderr, "ERROR! value <%s> is too large for option \"%s\".\n", span, name);
+            exit(1);
+        }else if (tmp <= range.begin && (!range.begin_inclusive || tmp != range.begin)){
+            fprintf(stderr, "ERROR! value <%s> is too small for option \"%s\".\n", span, name);
+            exit(1); }
+
+        value = tmp;
+        // fprintf(stderr, "READ VALUE: %g\n", value);
+
+        return true;
+    }
+
+    virtual void help (bool verbose = false){
+        fprintf(stderr, "  -%-12s = %-8s %c%4.2g .. %4.2g%c (default: %g)\n", 
+                name, type_name, 
+                range.begin_inclusive ? '[' : '(', 
+                range.begin,
+                range.end,
+                range.end_inclusive ? ']' : ')', 
+                value);
+        if (verbose){
+            fprintf(stderr, "\n        %s\n", description);
+            fprintf(stderr, "\n");
+        }
+    }
+};
+
+
+//==================================================================================================
+// Int options:
+
+
+class IntOption : public Option
+{
+ protected:
+    IntRange range;
+    int32_t  value;
+
+ public:
+    IntOption(const char* c, const char* n, const char* d, int32_t def = int32_t(), IntRange r = IntRange(INT32_MIN, INT32_MAX))
+        : Option(n, d, c, "<int32>"), range(r), value(def) {}
+ 
+    operator   int32_t   (void) const { return value; }
+    operator   int32_t&  (void)       { return value; }
+    IntOption& operator= (int32_t x)  { value = x; return *this; }
+
+    virtual bool parse(const char* str){
+        const char* span = str; 
+
+        if (!match(span, "-") || !match(span, name) || !match(span, "="))
+            return false;
+
+        char*   end;
+        int32_t tmp = strtol(span, &end, 10);
+
+        if (end == NULL) 
+            return false;
+        else if (tmp > range.end){
+            fprintf(stderr, "ERROR! value <%s> is too large for option \"%s\".\n", span, name);
+            exit(1);
+        }else if (tmp < range.begin){
+            fprintf(stderr, "ERROR! value <%s> is too small for option \"%s\".\n", span, name);
+            exit(1); }
+
+        value = tmp;
+
+        return true;
+    }
+
+    virtual void help (bool verbose = false){
+        fprintf(stderr, "  -%-12s = %-8s [", name, type_name);
+        if (range.begin == INT32_MIN)
+            fprintf(stderr, "imin");
+        else
+            fprintf(stderr, "%4d", range.begin);
+
+        fprintf(stderr, " .. ");
+        if (range.end == INT32_MAX)
+            fprintf(stderr, "imax");
+        else
+            fprintf(stderr, "%4d", range.end);
+
+        fprintf(stderr, "] (default: %d)\n", value);
+        if (verbose){
+            fprintf(stderr, "\n        %s\n", description);
+            fprintf(stderr, "\n");
+        }
+    }
+};
+
+
+// Leave this out for visual C++ until Microsoft implements C99 and gets support for strtoll.
+#ifndef _MSC_VER
+
+class Int64Option : public Option
+{
+ protected:
+    Int64Range range;
+    int64_t  value;
+
+ public:
+    Int64Option(const char* c, const char* n, const char* d, int64_t def = int64_t(), Int64Range r = Int64Range(INT64_MIN, INT64_MAX))
+        : Option(n, d, c, "<int64>"), range(r), value(def) {}
+ 
+    operator     int64_t   (void) const { return value; }
+    operator     int64_t&  (void)       { return value; }
+    Int64Option& operator= (int64_t x)  { value = x; return *this; }
+
+    virtual bool parse(const char* str){
+        const char* span = str; 
+
+        if (!match(span, "-") || !match(span, name) || !match(span, "="))
+            return false;
+
+        char*   end;
+        int64_t tmp = strtoll(span, &end, 10);
+
+        if (end == NULL) 
+            return false;
+        else if (tmp > range.end){
+            fprintf(stderr, "ERROR! value <%s> is too large for option \"%s\".\n", span, name);
+            exit(1);
+        }else if (tmp < range.begin){
+            fprintf(stderr, "ERROR! value <%s> is too small for option \"%s\".\n", span, name);
+            exit(1); }
+
+        value = tmp;
+
+        return true;
+    }
+
+    virtual void help (bool verbose = false){
+        fprintf(stderr, "  -%-12s = %-8s [", name, type_name);
+        if (range.begin == INT64_MIN)
+            fprintf(stderr, "imin");
+        else
+            fprintf(stderr, "%4" PRIi64, range.begin);
+
+        fprintf(stderr, " .. ");
+        if (range.end == INT64_MAX)
+            fprintf(stderr, "imax");
+        else
+            fprintf(stderr, "%4" PRIi64, range.end);
+
+        fprintf(stderr, "] (default: %" PRIi64")\n", value);
+        if (verbose){
+            fprintf(stderr, "\n        %s\n", description);
+            fprintf(stderr, "\n");
+        }
+    }
+};
+#endif
+
+//==================================================================================================
+// String option:
+
+
+class StringOption : public Option
+{
+    const char* value;
+ public:
+    StringOption(const char* c, const char* n, const char* d, const char* def = NULL) 
+        : Option(n, d, c, "<string>"), value(def) {}
+
+    operator      const char*  (void) const     { return value; }
+    operator      const char*& (void)           { return value; }
+    StringOption& operator=    (const char* x)  { value = x; return *this; }
+
+    virtual bool parse(const char* str){
+        const char* span = str; 
+
+        if (!match(span, "-") || !match(span, name) || !match(span, "="))
+            return false;
+
+        value = span;
+        return true;
+    }
+
+    virtual void help (bool verbose = false){
+        fprintf(stderr, "  -%-10s = %8s\n", name, type_name);
+        if (verbose){
+            fprintf(stderr, "\n        %s\n", description);
+            fprintf(stderr, "\n");
+        }
+    }    
+};
+
+
+//==================================================================================================
+// Bool option:
+
+
+class BoolOption : public Option
+{
+    bool value;
+
+ public:
+    BoolOption(const char* c, const char* n, const char* d, bool v) 
+        : Option(n, d, c, "<bool>"), value(v) {}
+
+    operator    bool     (void) const { return value; }
+    operator    bool&    (void)       { return value; }
+    BoolOption& operator=(bool b)     { value = b; return *this; }
+
+    virtual bool parse(const char* str){
+        const char* span = str; 
+        
+        if (match(span, "-")){
+            bool b = !match(span, "no-");
+
+            if (strcmp(span, name) == 0){
+                value = b;
+                return true; }
+        }
+
+        return false;
+    }
+
+    virtual void help (bool verbose = false){
+
+        fprintf(stderr, "  -%s, -no-%s", name, name);
+
+        for (uint32_t i = 0; i < 32 - strlen(name)*2; i++)
+            fprintf(stderr, " ");
+
+        fprintf(stderr, " ");
+        fprintf(stderr, "(default: %s)\n", value ? "on" : "off");
+        if (verbose){
+            fprintf(stderr, "\n        %s\n", description);
+            fprintf(stderr, "\n");
+        }
+    }
+};
+
+//=================================================================================================
+}
+}
+
+#endif
diff --git a/src/prop/minisat/utils/ParseUtils.h b/src/prop/minisat/utils/ParseUtils.h
new file mode 100644
index 0000000..1282059
--- /dev/null
+++ b/src/prop/minisat/utils/ParseUtils.h
@@ -0,0 +1,125 @@
+/************************************************************************************[ParseUtils.h]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef Minisat_ParseUtils_h
+#define Minisat_ParseUtils_h
+
+#include <stdlib.h>
+#include <stdio.h>
+
+//#include <zlib.h>
+#include <unistd.h>
+
+namespace CVC4 {
+namespace Minisat {
+
+//-------------------------------------------------------------------------------------------------
+// A simple buffered character stream class:
+
+static const int buffer_size = 1048576;
+
+
+class StreamBuffer {
+    int           in;
+    unsigned char buf[buffer_size];
+    int           pos;
+    int           size;
+
+    void assureLookahead() {
+        if (pos >= size) {
+            pos  = 0;
+            size = read(in, buf, sizeof(buf)); } }
+
+public:
+    explicit StreamBuffer(int i) : in(i), pos(0), size(0) { assureLookahead(); }
+
+    int  operator *  () const { return (pos >= size) ? EOF : buf[pos]; }
+    void operator ++ ()       { pos++; assureLookahead(); }
+    int  position    () const { return pos; }
+};
+
+
+//-------------------------------------------------------------------------------------------------
+// End-of-file detection functions for StreamBuffer and char*:
+
+
+static inline bool isEof(StreamBuffer& in) { return *in == EOF;  }
+static inline bool isEof(const char*   in) { return *in == '\0'; }
+
+//-------------------------------------------------------------------------------------------------
+// Generic parse functions parametrized over the input-stream type.
+
+
+template<class B>
+static void skipWhitespace(B& in) {
+    while ((*in >= 9 && *in <= 13) || *in == 32)
+        ++in; }
+
+
+template<class B>
+static void skipLine(B& in) {
+    for (;;){
+        if (isEof(in)) return;
+        if (*in == '\n') { ++in; return; }
+        ++in; } }
+
+
+template<class B>
+static int parseInt(B& in) {
+    int     val = 0;
+    bool    neg = false;
+    skipWhitespace(in);
+    if      (*in == '-') neg = true, ++in;
+    else if (*in == '+') ++in;
+    if (*in < '0' || *in > '9') fprintf(stderr, "PARSE ERROR! Unexpected char: %c\n", *in), exit(3);
+    while (*in >= '0' && *in <= '9')
+        val = val*10 + (*in - '0'),
+        ++in;
+    return neg ? -val : val; }
+
+
+// String matching: in case of a match the input iterator will be advanced the corresponding
+// number of characters.
+template<class B>
+static bool match(B& in, const char* str) {
+    int i;
+    for (i = 0; str[i] != '\0'; i++)
+        if (in[i] != str[i])
+            return false;
+
+    in += i;
+
+    return true; 
+}
+
+// String matching: consumes characters eagerly, but does not require random access iterator.
+template<class B>
+static bool eagerMatch(B& in, const char* str) {
+    for (; *str != '\0'; ++str, ++in)
+        if (*str != *in)
+            return false;
+    return true; }
+
+
+//=================================================================================================
+}
+}
+
+#endif
diff --git a/src/prop/minisat/utils/System.cc b/src/prop/minisat/utils/System.cc
new file mode 100644
index 0000000..5856e48
--- /dev/null
+++ b/src/prop/minisat/utils/System.cc
@@ -0,0 +1,95 @@
+/***************************************************************************************[System.cc]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#include "prop/minisat/utils/System.h"
+
+#if defined(__linux__)
+
+#include <stdio.h>
+#include <stdlib.h>
+
+using namespace Minisat;
+
+// TODO: split the memory reading functions into two: one for reading high-watermark of RSS, and
+// one for reading the current virtual memory size.
+
+static inline int memReadStat(int field)
+{
+    char  name[256];
+    pid_t pid = getpid();
+    int   value;
+
+    sprintf(name, "/proc/%d/statm", pid);
+    FILE* in = fopen(name, "rb");
+    if (in == NULL) return 0;
+
+    for (; field >= 0; field--)
+        if (fscanf(in, "%d", &value) != 1)
+            printf("ERROR! Failed to parse memory statistics from \"/proc\".\n"), exit(1);
+    fclose(in);
+    return value;
+}
+
+
+static inline int memReadPeak(void)
+{
+    char  name[256];
+    pid_t pid = getpid();
+
+    sprintf(name, "/proc/%d/status", pid);
+    FILE* in = fopen(name, "rb");
+    if (in == NULL) return 0;
+
+    // Find the correct line, beginning with "VmPeak:":
+    int peak_kb = 0;
+    while (!feof(in) && fscanf(in, "VmPeak: %d kB", &peak_kb) != 1)
+        while (!feof(in) && fgetc(in) != '\n')
+            ;
+    fclose(in);
+
+    return peak_kb;
+}
+
+double Minisat::memUsed() { return (double)memReadStat(0) * (double)getpagesize() / (1024*1024); }
+double Minisat::memUsedPeak() { 
+    double peak = memReadPeak() / 1024;
+    return peak == 0 ? memUsed() : peak; }
+
+#elif defined(__FreeBSD__)
+
+double Minisat::memUsed(void) {
+    struct rusage ru;
+    getrusage(RUSAGE_SELF, &ru);
+    return (double)ru.ru_maxrss / 1024; }
+double MiniSat::memUsedPeak(void) { return memUsed(); }
+
+
+#elif defined(__APPLE__)
+#include <malloc/malloc.h>
+
+double Minisat::memUsed(void) {
+    malloc_statistics_t t;
+    malloc_zone_statistics(NULL, &t);
+    return (double)t.max_size_in_use / (1024*1024); }
+
+#else
+double Minisat::memUsed() { 
+    return 0; }
+#endif
diff --git a/src/prop/minisat/utils/System.h b/src/prop/minisat/utils/System.h
new file mode 100644
index 0000000..f5381e5
--- /dev/null
+++ b/src/prop/minisat/utils/System.h
@@ -0,0 +1,60 @@
+/****************************************************************************************[System.h]
+Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+Copyright (c) 2007-2010, Niklas Sorensson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**************************************************************************************************/
+
+#ifndef Minisat_System_h
+#define Minisat_System_h
+
+#if defined(__linux__)
+#include <fpu_control.h>
+#endif
+
+#include "prop/minisat/mtl/IntTypes.h"
+
+//-------------------------------------------------------------------------------------------------
+
+namespace Minisat {
+
+static inline double cpuTime(void); // CPU-time in seconds.
+extern double memUsed();            // Memory in mega bytes (returns 0 for unsupported architectures).
+extern double memUsedPeak();        // Peak-memory in mega bytes (returns 0 for unsupported architectures).
+
+}
+
+//-------------------------------------------------------------------------------------------------
+// Implementation of inline functions:
+
+#if defined(_MSC_VER) || defined(__MINGW32__)
+#include <time.h>
+
+static inline double Minisat::cpuTime(void) { return (double)clock() / CLOCKS_PER_SEC; }
+
+#else
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <unistd.h>
+
+static inline double Minisat::cpuTime(void) {
+    struct rusage ru;
+    getrusage(RUSAGE_SELF, &ru);
+    return (double)ru.ru_utime.tv_sec + (double)ru.ru_utime.tv_usec / 1000000; }
+
+#endif
+
+#endif
diff --git a/src/prop/prop_engine.cpp b/src/prop/prop_engine.cpp
new file mode 100644
index 0000000..6cdf17f
--- /dev/null
+++ b/src/prop/prop_engine.cpp
@@ -0,0 +1,351 @@
+/*********************                                                        */
+/*! \file prop_engine.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of the propositional engine of CVC4
+ **
+ ** Implementation of the propositional engine of CVC4.
+ **/
+
+#include "prop/prop_engine.h"
+
+#include <iomanip>
+#include <map>
+#include <utility>
+
+#include "base/cvc4_assert.h"
+#include "base/output.h"
+#include "decision/decision_engine.h"
+#include "expr/expr.h"
+#include "options/base_options.h"
+#include "options/decision_options.h"
+#include "options/main_options.h"
+#include "options/options.h"
+#include "options/smt_options.h"
+#include "proof/proof_manager.h"
+#include "proof/proof_manager.h"
+#include "prop/cnf_stream.h"
+#include "prop/sat_solver.h"
+#include "prop/sat_solver_factory.h"
+#include "prop/theory_proxy.h"
+#include "smt/smt_statistics_registry.h"
+#include "smt/command.h"
+#include "theory/theory_engine.h"
+#include "theory/theory_registrar.h"
+#include "util/resource_manager.h"
+#include "util/result.h"
+
+using namespace std;
+using namespace CVC4::context;
+
+
+#ifdef CVC4_REPLAY
+#  define CVC4_USE_REPLAY true
+#else /* CVC4_REPLAY */
+#  define CVC4_USE_REPLAY false
+#endif /* CVC4_REPLAY */
+
+namespace CVC4 {
+namespace prop {
+
+/** Keeps a boolean flag scoped */
+class ScopedBool {
+
+private:
+
+  bool d_original;
+  bool& d_reference;
+
+public:
+
+  ScopedBool(bool& reference) :
+    d_reference(reference) {
+    d_original = reference;
+  }
+
+  ~ScopedBool() {
+    d_reference = d_original;
+  }
+};
+
+PropEngine::PropEngine(TheoryEngine* te, DecisionEngine *de, Context* satContext,
+                       Context* userContext, std::ostream* replayLog,
+                       ExprStream* replayStream, LemmaChannels* channels) :
+  d_inCheckSat(false),
+  d_theoryEngine(te),
+  d_decisionEngine(de),
+  d_context(satContext),
+  d_theoryProxy(NULL),
+  d_satSolver(NULL),
+  d_registrar(NULL),
+  d_cnfStream(NULL),
+  d_interrupted(false),
+  d_resourceManager(NodeManager::currentResourceManager())
+{
+
+  Debug("prop") << "Constructing the PropEngine" << endl;
+
+  d_satSolver = SatSolverFactory::createDPLLMinisat(smtStatisticsRegistry());
+
+  d_registrar = new theory::TheoryRegistrar(d_theoryEngine);
+  d_cnfStream = new CVC4::prop::TseitinCnfStream
+    (d_satSolver, d_registrar, userContext,
+     // fullLitToNode Map =
+     options::threads() > 1 ||
+     options::decisionMode() == decision::DECISION_STRATEGY_RELEVANCY ||
+     ( CVC4_USE_REPLAY && replayLog != NULL ));
+
+  d_theoryProxy = new TheoryProxy(
+      this, d_theoryEngine, d_decisionEngine, d_context, d_cnfStream, replayLog,
+      replayStream, channels);
+  d_satSolver->initialize(d_context, d_theoryProxy);
+
+  d_decisionEngine->setSatSolver(d_satSolver);
+  d_decisionEngine->setCnfStream(d_cnfStream);
+  PROOF (
+         ProofManager::currentPM()->initCnfProof(d_cnfStream, userContext);
+         );
+}
+
+PropEngine::~PropEngine() {
+  Debug("prop") << "Destructing the PropEngine" << endl;
+  delete d_cnfStream;
+  delete d_registrar;
+  delete d_satSolver;
+  delete d_theoryProxy;
+}
+
+void PropEngine::assertFormula(TNode node) {
+  Assert(!d_inCheckSat, "Sat solver in solve()!");
+  Debug("prop") << "assertFormula(" << node << ")" << endl;
+  // Assert as non-removable
+  d_cnfStream->convertAndAssert(node, false, false, RULE_GIVEN);
+}
+
+void PropEngine::assertLemma(TNode node, bool negated,
+                             bool removable,
+                             ProofRule rule,
+                             TNode from) {
+  //Assert(d_inCheckSat, "Sat solver should be in solve()!");
+  Debug("prop::lemmas") << "assertLemma(" << node << ")" << endl;
+
+  // Assert as (possibly) removable
+  d_cnfStream->convertAndAssert(node, removable, negated, rule, from);
+}
+
+void PropEngine::requirePhase(TNode n, bool phase) {
+  Debug("prop") << "requirePhase(" << n << ", " << phase << ")" << endl;
+
+  Assert(n.getType().isBoolean());
+  SatLiteral lit = d_cnfStream->getLiteral(n);
+  d_satSolver->requirePhase(phase ? lit : ~lit);
+}
+
+bool PropEngine::flipDecision() {
+  Debug("prop") << "flipDecision()" << endl;
+  return d_satSolver->flipDecision();
+}
+
+bool PropEngine::isDecision(Node lit) const {
+  Assert(isSatLiteral(lit));
+  return d_satSolver->isDecision(d_cnfStream->getLiteral(lit).getSatVariable());
+}
+
+void PropEngine::printSatisfyingAssignment(){
+  const CnfStream::NodeToLiteralMap& transCache =
+    d_cnfStream->getTranslationCache();
+  Debug("prop-value") << "Literal | Value | Expr" << endl
+                      << "----------------------------------------"
+                      << "-----------------" << endl;
+  for(CnfStream::NodeToLiteralMap::const_iterator i = transCache.begin(),
+      end = transCache.end();
+      i != end;
+      ++i) {
+    pair<Node, SatLiteral> curr = *i;
+    SatLiteral l = curr.second;
+    if(!l.isNegated()) {
+      Node n = curr.first;
+      SatValue value = d_satSolver->modelValue(l);
+      Debug("prop-value") << "'" << l << "' " << value << " " << n << endl;
+    }
+  }
+}
+
+Result PropEngine::checkSat() {
+  Assert(!d_inCheckSat, "Sat solver in solve()!");
+  Debug("prop") << "PropEngine::checkSat()" << endl;
+
+  // Mark that we are in the checkSat
+  ScopedBool scopedBool(d_inCheckSat);
+  d_inCheckSat = true;
+
+  // TODO This currently ignores conflicts (a dangerous practice).
+  d_theoryEngine->presolve();
+
+  if(options::preprocessOnly()) {
+    return Result(Result::SAT_UNKNOWN, Result::REQUIRES_FULL_CHECK);
+  }
+
+  // Reset the interrupted flag
+  d_interrupted = false;
+
+  // Check the problem
+  SatValue result = d_satSolver->solve();
+
+  if( result == SAT_VALUE_UNKNOWN ) {
+
+    Result::UnknownExplanation why = Result::INTERRUPTED;
+    if (d_resourceManager->outOfTime())
+      why = Result::TIMEOUT;
+    if (d_resourceManager->outOfResources())
+      why = Result::RESOURCEOUT;
+
+    return Result(Result::SAT_UNKNOWN, why);
+  }
+
+  if( result == SAT_VALUE_TRUE && Debug.isOn("prop") ) {
+    printSatisfyingAssignment();
+  }
+
+  Debug("prop") << "PropEngine::checkSat() => " << result << endl;
+  if(result == SAT_VALUE_TRUE && d_theoryEngine->isIncomplete()) {
+    return Result(Result::SAT_UNKNOWN, Result::INCOMPLETE);
+  }
+  return Result(result == SAT_VALUE_TRUE ? Result::SAT : Result::UNSAT);
+}
+
+Node PropEngine::getValue(TNode node) const {
+  Assert(node.getType().isBoolean());
+  Assert(d_cnfStream->hasLiteral(node));
+
+  SatLiteral lit = d_cnfStream->getLiteral(node);
+
+  SatValue v = d_satSolver->value(lit);
+  if(v == SAT_VALUE_TRUE) {
+    return NodeManager::currentNM()->mkConst(true);
+  } else if(v == SAT_VALUE_FALSE) {
+    return NodeManager::currentNM()->mkConst(false);
+  } else {
+    Assert(v == SAT_VALUE_UNKNOWN);
+    return Node::null();
+  }
+}
+
+bool PropEngine::isSatLiteral(TNode node) const {
+  return d_cnfStream->hasLiteral(node);
+}
+
+bool PropEngine::hasValue(TNode node, bool& value) const {
+  Assert(node.getType().isBoolean());
+  Assert(d_cnfStream->hasLiteral(node));
+
+  SatLiteral lit = d_cnfStream->getLiteral(node);
+
+  SatValue v = d_satSolver->value(lit);
+  if(v == SAT_VALUE_TRUE) {
+    value = true;
+    return true;
+  } else if(v == SAT_VALUE_FALSE) {
+    value = false;
+    return true;
+  } else {
+    Assert(v == SAT_VALUE_UNKNOWN);
+    return false;
+  }
+}
+
+void PropEngine::getBooleanVariables(std::vector<TNode>& outputVariables) const {
+  d_cnfStream->getBooleanVariables(outputVariables);
+}
+
+void PropEngine::ensureLiteral(TNode n) {
+  d_cnfStream->ensureLiteral(n);
+}
+
+void PropEngine::push() {
+  Assert(!d_inCheckSat, "Sat solver in solve()!");
+  d_satSolver->push();
+  Debug("prop") << "push()" << endl;
+}
+
+void PropEngine::pop() {
+  Assert(!d_inCheckSat, "Sat solver in solve()!");
+  d_satSolver->pop();
+  Debug("prop") << "pop()" << endl;
+}
+
+unsigned PropEngine::getAssertionLevel() const {
+  return d_satSolver->getAssertionLevel();
+}
+
+bool PropEngine::isRunning() const {
+  return d_inCheckSat;
+}
+
+void PropEngine::interrupt() throw(ModalException) {
+  if(! d_inCheckSat) {
+    return;
+  }
+
+  d_interrupted = true;
+  d_satSolver->interrupt();
+  Debug("prop") << "interrupt()" << endl;
+}
+
+void PropEngine::spendResource(unsigned ammount) throw (UnsafeInterruptException) {
+  d_resourceManager->spendResource(ammount);
+}
+
+bool PropEngine::properExplanation(TNode node, TNode expl) const {
+  if(! d_cnfStream->hasLiteral(node)) {
+    Trace("properExplanation") << "properExplanation(): Failing because node "
+                               << "being explained doesn't have a SAT literal ?!" << std::endl
+                               << "properExplanation(): The node is: " << node << std::endl;
+    return false;
+  }
+
+  SatLiteral nodeLit = d_cnfStream->getLiteral(node);
+
+  for(TNode::kinded_iterator i = expl.begin(kind::AND),
+        i_end = expl.end(kind::AND);
+      i != i_end;
+      ++i) {
+    if(! d_cnfStream->hasLiteral(*i)) {
+      Trace("properExplanation") << "properExplanation(): Failing because one of explanation "
+                                 << "nodes doesn't have a SAT literal" << std::endl
+                                 << "properExplanation(): The explanation node is: " << *i << std::endl;
+      return false;
+    }
+
+    SatLiteral iLit = d_cnfStream->getLiteral(*i);
+
+    if(iLit == nodeLit) {
+      Trace("properExplanation") << "properExplanation(): Failing because the node" << std::endl
+                                 << "properExplanation(): " << node << std::endl
+                                 << "properExplanation(): cannot be made to explain itself!" << std::endl;
+      return false;
+    }
+
+    if(! d_satSolver->properExplanation(nodeLit, iLit)) {
+      Trace("properExplanation") << "properExplanation(): SAT solver told us that node" << std::endl
+                                 << "properExplanation(): " << *i << std::endl
+                                 << "properExplanation(): is not part of a proper explanation node for" << std::endl
+                                 << "properExplanation(): " << node << std::endl
+                                 << "properExplanation(): Perhaps it one of the two isn't assigned or the explanation" << std::endl
+                                 << "properExplanation(): node wasn't propagated before the node being explained" << std::endl;
+      return false;
+    }
+  }
+
+  return true;
+}
+
+}/* CVC4::prop namespace */
+}/* CVC4 namespace */
diff --git a/src/prop/prop_engine.h b/src/prop/prop_engine.h
new file mode 100644
index 0000000..f966def
--- /dev/null
+++ b/src/prop/prop_engine.h
@@ -0,0 +1,256 @@
+/*********************                                                        */
+/*! \file prop_engine.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The PropEngine (propositional engine); main interface point
+ ** between CVC4's SMT infrastructure and the SAT solver
+ **
+ ** The PropEngine (propositional engine); main interface point
+ ** between CVC4's SMT infrastructure and the SAT solver.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__PROP_ENGINE_H
+#define __CVC4__PROP_ENGINE_H
+
+#include <sys/time.h>
+
+#include "base/modal_exception.h"
+#include "expr/expr_stream.h"
+#include "expr/node.h"
+#include "options/options.h"
+#include "proof/proof_manager.h"
+#include "smt_util/lemma_channels.h"
+#include "util/result.h"
+#include "util/unsafe_interrupt_exception.h"
+
+namespace CVC4 {
+
+class ResourceManager;
+class DecisionEngine;
+class TheoryEngine;
+
+namespace theory {
+  class TheoryRegistrar;
+}/* CVC4::theory namespace */
+
+namespace prop {
+
+class CnfStream;
+class DPLLSatSolverInterface;
+
+class PropEngine;
+
+/**
+ * PropEngine is the abstraction of a Sat Solver, providing methods for
+ * solving the SAT problem and conversion to CNF (via the CnfStream).
+ */
+class PropEngine {
+
+  /**
+   * Indicates that the SAT solver is currently solving something and we should
+   * not mess with it's internal state.
+   */
+  bool d_inCheckSat;
+
+  /** The theory engine we will be using */
+  TheoryEngine *d_theoryEngine;
+
+  /** The decision engine we will be using */
+  DecisionEngine *d_decisionEngine;
+
+  /** The context */
+  context::Context* d_context;
+
+  /** SAT solver's proxy back to theories; kept around for dtor cleanup */
+  TheoryProxy* d_theoryProxy;
+
+  /** The SAT solver proxy */
+  DPLLSatSolverInterface* d_satSolver;
+
+  /** List of all of the assertions that need to be made */
+  std::vector<Node> d_assertionList;
+
+  /** Theory registrar; kept around for destructor cleanup */
+  theory::TheoryRegistrar* d_registrar;
+
+  /** The CNF converter in use */
+  CnfStream* d_cnfStream;
+
+  /** Whether we were just interrupted (or not) */
+  bool d_interrupted;
+  /** Pointer to resource manager for associated SmtEngine */
+  ResourceManager* d_resourceManager;
+
+  /** Dump out the satisfying assignment (after SAT result) */
+  void printSatisfyingAssignment();
+
+public:
+
+  /**
+   * Create a PropEngine with a particular decision and theory engine.
+   */
+  PropEngine(TheoryEngine*, DecisionEngine*, context::Context* satContext,
+             context::Context* userContext, std::ostream* replayLog,
+             ExprStream* replayStream, LemmaChannels* channels);
+
+  /**
+   * Destructor.
+   */
+  CVC4_PUBLIC ~PropEngine();
+
+  /**
+   * 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 (notably between
+   * PropEngine and Theory).  For now, there's nothing to do here in
+   * the PropEngine.
+   */
+  void shutdown() { }
+
+  /**
+   * Converts the given formula to CNF and assert the CNF to the SAT solver.
+   * The formula is asserted permanently for the current context.
+   * @param node the formula to assert
+   */
+  void assertFormula(TNode node);
+
+  /**
+   * Converts the given formula to CNF and assert the CNF to the SAT solver.
+   * The formula can be removed by the SAT solver after backtracking lower
+   * than the (SAT and SMT) level at which it was asserted.
+   *
+   * @param node the formula to assert
+   * @param negated whether the node should be considered to be negated
+   * at the top level (or not)
+   * @param removable whether this lemma can be quietly removed based
+   * on an activity heuristic (or not)
+   */
+  void assertLemma(TNode node, bool negated, bool removable, ProofRule rule, TNode from = TNode::null());
+
+  /**
+   * If ever n is decided upon, it must be in the given phase.  This
+   * occurs *globally*, i.e., even if the literal is untranslated by
+   * user pop and retranslated, it keeps this phase.  The associated
+   * variable will _always_ be phase-locked.
+   *
+   * @param n the node in question; must have an associated SAT literal
+   * @param phase the phase to use
+   */
+  void requirePhase(TNode n, bool phase);
+
+  /**
+   * Backtracks to and flips the most recent unflipped decision, and
+   * returns TRUE.  If the decision stack is nonempty but all
+   * decisions have been flipped already, the state is backtracked to
+   * the root decision, which is re-flipped to the original phase (and
+   * FALSE is returned).  If the decision stack is empty, the state is
+   * unchanged and FALSE is returned.
+   *
+   * @return true if a decision was flipped as requested; false if the
+   * root decision was reflipped, or if no decisions are on the stack.
+   */
+  bool flipDecision();
+
+  /**
+   * Return whether the given literal is a SAT decision.  Either phase
+   * is permitted; that is, if "lit" is a SAT decision, this function
+   * returns true for both lit and the negation of lit.
+   */
+  bool isDecision(Node lit) const;
+
+  /**
+   * Checks the current context for satisfiability.
+   *
+   */
+  Result checkSat();
+
+  /**
+   * Get the value of a boolean variable.
+   *
+   * @return mkConst<true>, mkConst<false>, or Node::null() if
+   * unassigned.
+   */
+  Node getValue(TNode node) const;
+
+  /**
+   * Return true if node has an associated SAT literal.
+   */
+  bool isSatLiteral(TNode node) const;
+
+  /**
+   * Check if the node has a value and return it if yes.
+   */
+  bool hasValue(TNode node, bool& value) const;
+
+  /**
+   * Returns the Boolean variables known to the SAT solver.
+   */
+  void getBooleanVariables(std::vector<TNode>& outputVariables) const;
+
+  /**
+   * Ensure that the given node will have a designated SAT literal
+   * that is definitionally equal to it.  The result of this function
+   * is that the Node can be queried via getSatValue().
+   */
+  void ensureLiteral(TNode n);
+
+  /**
+   * Push the context level.
+   */
+  void push();
+
+  /**
+   * Pop the context level.
+   */
+  void pop();
+
+  /**
+   * Get the assertion level of the SAT solver.
+   */
+  unsigned getAssertionLevel() const;
+
+  /**
+   * Return true if we are currently searching (either in this or
+   * another thread).
+   */
+  bool isRunning() const;
+
+  /**
+   * Interrupt a running solver (cause a timeout).
+   */
+  void interrupt() throw(ModalException);
+
+  /**
+   * Informs the ResourceManager that a resource has been spent.  If out of
+   * resources, can throw an UnsafeInterruptException exception.
+   */
+  void spendResource(unsigned ammount) throw (UnsafeInterruptException);
+
+  /**
+   * For debugging.  Return true if "expl" is a well-formed
+   * explanation for "node," meaning:
+   *
+   * 1. expl is either a SAT literal or an AND of SAT literals
+   *    currently assigned true;
+   * 2. node is assigned true;
+   * 3. node does not appear in expl; and
+   * 4. node was assigned after all of the literals in expl
+   */
+  bool properExplanation(TNode node, TNode expl) const;
+
+};/* class PropEngine */
+
+
+}/* CVC4::prop namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PROP_ENGINE_H */
diff --git a/src/prop/registrar.h b/src/prop/registrar.h
new file mode 100644
index 0000000..bd80889
--- /dev/null
+++ b/src/prop/registrar.h
@@ -0,0 +1,45 @@
+/*********************                                                        */
+/*! \file registrar.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Liana Hadarean
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Class to encapsulate preregistration duties
+ **
+ ** Class to encapsulate preregistration duties.  This class permits the
+ ** CNF stream implementation to reach into the theory engine to
+ ** preregister only those terms with an associated SAT literal (at the
+ ** point when they get the SAT literal), without having to refer to the
+ ** TheoryEngine class directly.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__PROP__REGISTRAR_H
+#define __CVC4__PROP__REGISTRAR_H
+
+namespace CVC4 {
+namespace prop {
+
+class Registrar {
+public:
+  virtual ~Registrar() {}
+  virtual void preRegister(Node n) = 0;
+
+};/* class Registrar */
+
+class NullRegistrar : public Registrar {
+public:
+  void preRegister(Node n) {}
+
+};/* class NullRegistrar */
+
+}/* CVC4::prop namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PROP__REGISTRAR_H */
diff --git a/src/prop/sat_solver.h b/src/prop/sat_solver.h
new file mode 100644
index 0000000..4afaea5
--- /dev/null
+++ b/src/prop/sat_solver.h
@@ -0,0 +1,204 @@
+/*********************                                                        */
+/*! \file sat_solver.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Dejan Jovanovic, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief SAT Solver.
+ **
+ ** SAT Solver.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__PROP__SAT_SOLVER_H
+#define __CVC4__PROP__SAT_SOLVER_H
+
+#include <stdint.h>
+
+#include <string>
+
+#include "context/cdlist.h"
+#include "context/context.h"
+#include "expr/node.h"
+#include "proof/clause_id.h"
+#include "prop/sat_solver_types.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+  
+class BitVectorProof;
+
+namespace prop {
+
+class TheoryProxy;
+
+class SatSolver {
+
+public:
+
+  /** Virtual destructor */
+  virtual ~SatSolver() { }
+
+  /** Assert a clause in the solver. */
+  virtual ClauseId addClause(SatClause& clause,
+                             bool removable) = 0;
+
+  /** Return true if the solver supports native xor resoning */
+  virtual bool nativeXor() { return false; }
+
+  /** Add a clause corresponding to rhs = l1 xor .. xor ln  */
+  virtual ClauseId addXorClause(SatClause& clause, bool rhs, bool removable) = 0;
+  
+  /**
+   * Create a new boolean variable in the solver.
+   * @param isTheoryAtom is this a theory atom that needs to be asserted to theory
+   * @param preRegister whether to preregister the atom with the theory
+   * @param canErase whether the sat solver can safely eliminate this variable
+   *
+   */
+  virtual SatVariable newVar(bool isTheoryAtom, bool preRegister, bool canErase) = 0;
+
+  /** Create a new (or return an existing) boolean variable representing the constant true */
+  virtual SatVariable trueVar() = 0;
+
+  /** Create a new (or return an existing) boolean variable representing the constant false */
+  virtual SatVariable falseVar() = 0;
+
+  /** Check the satisfiability of the added clauses */
+  virtual SatValue solve() = 0;
+
+  /** Check the satisfiability of the added clauses */
+  virtual SatValue solve(long unsigned int&) = 0;
+
+  /** Interrupt the solver */
+  virtual void interrupt() = 0;
+
+  /** Call value() during the search.*/
+  virtual SatValue value(SatLiteral l) = 0;
+
+  /** Call modelValue() when the search is done.*/
+  virtual SatValue modelValue(SatLiteral l) = 0;
+
+  /** Get the current assertion level */
+  virtual unsigned getAssertionLevel() const = 0;
+
+  /** Check if the solver is in an inconsistent state */
+  virtual bool ok() const = 0;
+  
+  virtual void setProofLog( BitVectorProof * bvp ) {}
+  
+};/* class SatSolver */
+
+
+class BVSatSolverInterface: public SatSolver {
+public:
+
+  virtual ~BVSatSolverInterface() {}
+  /** Interface for notifications */
+  class Notify {
+  public:
+
+    virtual ~Notify() {};
+
+    /**
+     * If the notify returns false, the solver will break out of whatever it's currently doing
+     * with an "unknown" answer.
+     */
+    virtual bool notify(SatLiteral lit) = 0;
+
+    /**
+     * Notify about a learnt clause.
+     */
+    virtual void notify(SatClause& clause) = 0;
+    virtual void spendResource(unsigned ammount) = 0;
+    virtual void safePoint(unsigned ammount) = 0;
+
+  };/* class BVSatSolverInterface::Notify */
+
+  virtual void setNotify(Notify* notify) = 0;
+
+  virtual void markUnremovable(SatLiteral lit) = 0;
+
+  virtual void getUnsatCore(SatClause& unsatCore) = 0;
+
+  virtual void addMarkerLiteral(SatLiteral lit) = 0;
+
+  virtual SatValue propagate() = 0;
+
+  virtual void explain(SatLiteral lit, std::vector<SatLiteral>& explanation) = 0;
+
+  virtual SatValue assertAssumption(SatLiteral lit, bool propagate = false) = 0;
+
+  virtual void popAssumption() = 0;
+
+  virtual bool ok() const = 0;
+  
+  virtual void setProofLog( BitVectorProof * bvp ) {}
+
+};/* class BVSatSolverInterface */
+
+
+class DPLLSatSolverInterface: public SatSolver {
+public:
+  virtual void initialize(context::Context* context, prop::TheoryProxy* theoryProxy) = 0;
+
+  virtual void push() = 0;
+
+  virtual void pop() = 0;
+
+  virtual bool properExplanation(SatLiteral lit, SatLiteral expl) const = 0;
+
+  virtual void requirePhase(SatLiteral lit) = 0;
+
+  virtual bool flipDecision() = 0;
+
+  virtual bool isDecision(SatVariable decn) const = 0;
+  
+  virtual bool ok() const = 0;
+};/* class DPLLSatSolverInterface */
+
+inline std::ostream& operator <<(std::ostream& out, prop::SatLiteral lit) {
+  out << lit.toString();
+  return out;
+}
+
+inline std::ostream& operator <<(std::ostream& out, const prop::SatClause& clause) {
+  out << "clause:";
+  for(unsigned i = 0; i < clause.size(); ++i) {
+    out << " " << clause[i];
+  }
+  out << ";";
+  return out;
+}
+
+inline std::ostream& operator <<(std::ostream& out, prop::SatValue val) {
+  std::string str;
+  switch(val) {
+  case prop::SAT_VALUE_UNKNOWN:
+    str = "_";
+    break;
+  case prop::SAT_VALUE_TRUE:
+    str = "1";
+    break;
+  case prop::SAT_VALUE_FALSE:
+    str = "0";
+    break;
+  default:
+    str = "Error";
+    break;
+  }
+
+  out << str;
+  return out;
+}
+
+}/* CVC4::prop namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PROP__SAT_MODULE_H */
diff --git a/src/prop/sat_solver_factory.cpp b/src/prop/sat_solver_factory.cpp
new file mode 100644
index 0000000..7fdc44e
--- /dev/null
+++ b/src/prop/sat_solver_factory.cpp
@@ -0,0 +1,41 @@
+/*********************                                                        */
+/*! \file sat_solver_factory.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief SAT Solver creation facility.
+ **
+ ** SAT Solver.
+ **/
+
+#include "prop/sat_solver_factory.h"
+
+#include "prop/cryptominisat.h"
+#include "prop/minisat/minisat.h"
+#include "prop/bvminisat/bvminisat.h"
+
+namespace CVC4 {
+namespace prop {
+
+BVSatSolverInterface* SatSolverFactory::createMinisat(context::Context* mainSatContext, StatisticsRegistry* registry, const std::string& name) {
+  return new BVMinisatSatSolver(registry, mainSatContext, name);
+}
+
+SatSolver* SatSolverFactory::createCryptoMinisat(StatisticsRegistry* registry,
+                                                   const std::string& name) {
+return new CryptoMinisatSolver(registry, name);
+}
+  
+
+DPLLSatSolverInterface* SatSolverFactory::createDPLLMinisat(StatisticsRegistry* registry) {
+  return new MinisatSatSolver(registry);
+}
+
+} /* CVC4::prop namespace */
+} /* CVC4 namespace */
diff --git a/src/prop/sat_solver_factory.h b/src/prop/sat_solver_factory.h
new file mode 100644
index 0000000..a04bcaa
--- /dev/null
+++ b/src/prop/sat_solver_factory.h
@@ -0,0 +1,44 @@
+/*********************                                                        */
+/*! \file sat_solver_factory.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief SAT Solver.
+ **
+ ** SAT Solver creation facility
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <string>
+#include <vector>
+
+#include "context/context.h"
+#include "prop/sat_solver.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace prop {
+
+class SatSolverFactory {
+public:
+
+  static BVSatSolverInterface* createMinisat(context::Context* mainSatContext,
+                                             StatisticsRegistry* registry,
+                                             const std::string& name = "");
+  static DPLLSatSolverInterface* createDPLLMinisat(StatisticsRegistry* registry);
+  static SatSolver* createCryptoMinisat(StatisticsRegistry* registry,
+                                        const std::string& name = "");
+
+};/* class SatSolverFactory */
+
+}/* CVC4::prop namespace */
+}/* CVC4 namespace */
diff --git a/src/prop/sat_solver_types.h b/src/prop/sat_solver_types.h
new file mode 100644
index 0000000..557f9af
--- /dev/null
+++ b/src/prop/sat_solver_types.h
@@ -0,0 +1,208 @@
+/*********************                                                        */
+/*! \file sat_solver_types.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Kshitij Bansal, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This class transforms a sequence of formulas into clauses.
+ **
+ ** This class takes a sequence of formulas.
+ ** It outputs a stream of clauses that is propositionally
+ ** equi-satisfiable with the conjunction of the formulas.
+ ** This stream is maintained in an online fashion.
+ **
+ ** Unlike other parts of the system it is aware of the PropEngine's
+ ** internals such as the representation and translation of [??? -Chris]
+ **/
+
+#pragma once
+
+#include "cvc4_private.h"
+
+#include <string>
+#include <sstream>
+
+namespace CVC4 {
+namespace prop {
+
+/**
+ * Boolean values of the SAT solver.
+ */
+enum SatValue {
+  SAT_VALUE_UNKNOWN,
+  SAT_VALUE_TRUE,
+  SAT_VALUE_FALSE
+};
+
+/** Helper function for inverting a SatValue */
+inline SatValue invertValue(SatValue v)
+{
+  if(v == SAT_VALUE_UNKNOWN) return SAT_VALUE_UNKNOWN;
+  else if(v == SAT_VALUE_TRUE) return SAT_VALUE_FALSE;
+  else return SAT_VALUE_TRUE;
+}
+
+
+/**
+ * A variable of the SAT solver.
+ */
+typedef uint64_t SatVariable;
+
+/**
+ * Undefined SAT solver variable.
+ */
+const SatVariable undefSatVariable = SatVariable(-1);
+
+/**
+ * A SAT literal is a variable or an negated variable.
+ */
+class SatLiteral {
+
+  /**
+   * The value holds the variable and a bit noting if the variable is negated.
+   */
+  uint64_t d_value;
+
+public:
+
+  /**
+   * Construct an undefined SAT literal.
+   */
+  SatLiteral()
+  : d_value(undefSatVariable)
+  {}
+
+  /**
+   * Construct a literal given a possible negated variable.
+   */
+  SatLiteral(SatVariable var, bool negated = false) {
+    d_value = var + var + (int)negated;
+  }
+
+  /**
+   * Returns the variable of the literal.
+   */
+  SatVariable getSatVariable() const {
+    return d_value >> 1;
+  }
+
+  /**
+   * Returns true if the literal is a negated variable.
+   */
+  bool isNegated() const {
+    return d_value & 1;
+  }
+
+  /**
+   * Negate the given literal.
+   */
+  SatLiteral operator ~ () const {
+    return SatLiteral(getSatVariable(), !isNegated());
+  }
+
+  /**
+   * Compare two literals for equality.
+   */
+  bool operator == (const SatLiteral& other) const {
+    return d_value == other.d_value;
+  }
+
+  /**
+   * Compare two literals for dis-equality.
+   */
+  bool operator != (const SatLiteral& other) const {
+    return !(*this == other);
+  }
+
+  /**
+   * Returns a string representation of the literal.
+   */
+  std::string toString() const {
+    std::ostringstream os;
+    os << (isNegated()? "~" : "") << getSatVariable() << " ";
+    return os.str();
+  }
+
+  /**
+   * Returns the hash value of a literal.
+   */
+  size_t hash() const {
+    return (size_t)d_value;
+  }
+
+  uint64_t toInt() const {
+    return d_value; 
+  }
+  
+  /**
+   * Returns true if the literal is undefined.
+   */
+  bool isNull() const {
+    return getSatVariable() == undefSatVariable;
+  }
+};
+
+/**
+ * A constant representing a undefined literal.
+ */
+const SatLiteral undefSatLiteral = SatLiteral(undefSatVariable);
+
+/**
+ * Helper for hashing the literals.
+ */
+struct SatLiteralHashFunction {
+  inline size_t operator() (const SatLiteral& literal) const {
+    return literal.hash();
+  }
+};
+
+/**
+ * A SAT clause is a vector of literals.
+ */
+typedef std::vector<SatLiteral> SatClause;
+
+/**
+ * Each object in the SAT solver, such as as variables and clauses, can be assigned a life span,
+ * so that the SAT solver can (or should) remove them when the lifespan is over.
+ */
+enum SatSolverLifespan
+{
+  /**
+   * The object should stay forever and never be removed
+   */
+  SAT_LIFESPAN_PERMANENT,
+  /**
+   * The object can be removed at any point when it becomes unnecessary.
+   */
+  SAT_LIFESPAN_REMOVABLE,
+  /**
+   * The object must be removed as soon as the SAT solver exits the search context
+   * where the object got introduced.
+   */
+  SAT_LIFESPAN_SEARCH_CONTEXT_STRICT,
+  /**
+   * The object can be removed when SAT solver exits the search context where the object
+   * got introduced, but can be kept at the solver discretion.
+   */
+  SAT_LIFESPAN_SEARCH_CONTEXT_LENIENT,
+  /**
+   * The object must be removed as soon as the SAT solver exits the user-level context where
+   * the object got introduced.
+   */
+  SAT_LIFESPAN_USER_CONTEXT_STRICT,
+  /**
+   * The object can be removed when the SAT solver exits the user-level context where
+   * the object got introduced.
+   */
+  SAT_LIFESPAN_USER_CONTEXT_LENIENT
+};
+
+}
+}
+
+
diff --git a/src/prop/theory_proxy.cpp b/src/prop/theory_proxy.cpp
new file mode 100644
index 0000000..5f5eac7
--- /dev/null
+++ b/src/prop/theory_proxy.cpp
@@ -0,0 +1,264 @@
+/*********************                                                        */
+/*! \file theory_proxy.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Liana Hadarean
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+#include "prop/theory_proxy.h"
+
+#include "context/context.h"
+#include "decision/decision_engine.h"
+#include "expr/expr_stream.h"
+#include "options/decision_options.h"
+#include "prop/cnf_stream.h"
+#include "prop/prop_engine.h"
+#include "proof/cnf_proof.h"
+#include "smt/command.h"
+#include "smt/smt_statistics_registry.h"
+#include "smt_util/lemma_input_channel.h"
+#include "smt_util/lemma_output_channel.h"
+#include "theory/rewriter.h"
+#include "theory/theory_engine.h"
+#include "util/statistics_registry.h"
+
+
+namespace CVC4 {
+namespace prop {
+
+TheoryProxy::TheoryProxy(PropEngine* propEngine,
+                         TheoryEngine* theoryEngine,
+                         DecisionEngine* decisionEngine,
+                         context::Context* context,
+                         CnfStream* cnfStream,
+                         std::ostream* replayLog,
+                         ExprStream* replayStream,
+                         LemmaChannels* channels)
+    : d_propEngine(propEngine),
+      d_cnfStream(cnfStream),
+      d_decisionEngine(decisionEngine),
+      d_theoryEngine(theoryEngine),
+      d_channels(channels),
+      d_replayLog(replayLog),
+      d_replayStream(replayStream),
+      d_queue(context),
+      d_replayedDecisions("prop::theoryproxy::replayedDecisions", 0)
+{
+  smtStatisticsRegistry()->registerStat(&d_replayedDecisions);
+}
+
+TheoryProxy::~TheoryProxy() {
+  /* nothing to do for now */
+  smtStatisticsRegistry()->unregisterStat(&d_replayedDecisions);
+}
+
+/** The lemma input channel we are using. */
+LemmaInputChannel* TheoryProxy::inputChannel() {
+  return d_channels->getLemmaInputChannel();
+}
+
+/** The lemma output channel we are using. */
+LemmaOutputChannel* TheoryProxy::outputChannel() {
+  return d_channels->getLemmaOutputChannel();
+}
+
+
+void TheoryProxy::variableNotify(SatVariable var) {
+  d_theoryEngine->preRegister(getNode(SatLiteral(var)));
+}
+
+void TheoryProxy::theoryCheck(theory::Theory::Effort effort) {
+  while (!d_queue.empty()) {
+    TNode assertion = d_queue.front();
+    d_queue.pop();
+    d_theoryEngine->assertFact(assertion);
+  }
+  d_theoryEngine->check(effort);
+}
+
+void TheoryProxy::theoryPropagate(std::vector<SatLiteral>& output) {
+  // Get the propagated literals
+  std::vector<TNode> outputNodes;
+  d_theoryEngine->getPropagatedLiterals(outputNodes);
+  for (unsigned i = 0, i_end = outputNodes.size(); i < i_end; ++ i) {
+    Debug("prop-explain") << "theoryPropagate() => " << outputNodes[i] << std::endl;
+    output.push_back(d_cnfStream->getLiteral(outputNodes[i]));
+  }
+}
+
+void TheoryProxy::explainPropagation(SatLiteral l, SatClause& explanation) {
+  TNode lNode = d_cnfStream->getNode(l);
+  Debug("prop-explain") << "explainPropagation(" << lNode << ")" << std::endl;
+
+  LemmaProofRecipe* proofRecipe = NULL;
+  PROOF(proofRecipe = new LemmaProofRecipe;);
+
+  Node theoryExplanation = d_theoryEngine->getExplanationAndRecipe(lNode, proofRecipe);
+
+  PROOF({
+      ProofManager::getCnfProof()->pushCurrentAssertion(theoryExplanation);
+      ProofManager::getCnfProof()->setProofRecipe(proofRecipe);
+
+      Debug("pf::sat") << "TheoryProxy::explainPropagation: setting lemma recipe to: "
+                       << std::endl;
+      proofRecipe->dump("pf::sat");
+
+      delete proofRecipe;
+      proofRecipe = NULL;
+    });
+
+  Debug("prop-explain") << "explainPropagation() => " << theoryExplanation << std::endl;
+  if (theoryExplanation.getKind() == kind::AND) {
+    Node::const_iterator it = theoryExplanation.begin();
+    Node::const_iterator it_end = theoryExplanation.end();
+    explanation.push_back(l);
+    for (; it != it_end; ++ it) {
+      explanation.push_back(~d_cnfStream->getLiteral(*it));
+    }
+  } else {
+    explanation.push_back(l);
+    explanation.push_back(~d_cnfStream->getLiteral(theoryExplanation));
+  }
+}
+
+void TheoryProxy::enqueueTheoryLiteral(const SatLiteral& l) {
+  Node literalNode = d_cnfStream->getNode(l);
+  Debug("prop") << "enqueueing theory literal " << l << " " << literalNode << std::endl;
+  Assert(!literalNode.isNull());
+  d_queue.push(literalNode);
+}
+
+SatLiteral TheoryProxy::getNextTheoryDecisionRequest() {
+  TNode n = d_theoryEngine->getNextDecisionRequest();
+  return n.isNull() ? undefSatLiteral : d_cnfStream->getLiteral(n);
+}
+
+SatLiteral TheoryProxy::getNextDecisionEngineRequest(bool &stopSearch) {
+  Assert(d_decisionEngine != NULL);
+  Assert(stopSearch != true);
+  SatLiteral ret = d_decisionEngine->getNext(stopSearch);
+  if(stopSearch) {
+    Trace("decision") << "  ***  Decision Engine stopped search *** " << std::endl;
+  }
+  return options::decisionStopOnly() ? undefSatLiteral : ret;
+}
+
+bool TheoryProxy::theoryNeedCheck() const {
+  return d_theoryEngine->needCheck();
+}
+
+TNode TheoryProxy::getNode(SatLiteral lit) {
+  return d_cnfStream->getNode(lit);
+}
+
+void TheoryProxy::notifyRestart() {
+  d_propEngine->spendResource(options::restartStep());
+  d_theoryEngine->notifyRestart();
+
+  static uint32_t lemmaCount = 0;
+
+  if(inputChannel() != NULL) {
+    while(inputChannel()->hasNewLemma()) {
+      Debug("shared") << "shared" << std::endl;
+      Expr lemma = inputChannel()->getNewLemma();
+      Node asNode = lemma.getNode();
+      asNode = theory::Rewriter::rewrite(asNode);
+
+      if(d_shared.find(asNode) == d_shared.end()) {
+        d_shared.insert(asNode);
+        if(asNode.getKind() == kind::OR) {
+          ++lemmaCount;
+          if(lemmaCount % 1 == 0) {
+            Debug("shared") << "=) " << asNode << std::endl;
+          }
+
+          d_propEngine->assertLemma(d_theoryEngine->preprocess(asNode), false, true, RULE_INVALID);
+        } else {
+          Debug("shared") << "=(" << asNode << std::endl;
+        }
+      } else {
+        Debug("shared") <<"drop shared " << asNode << std::endl;
+      }
+    }
+  }
+}
+
+void TheoryProxy::notifyNewLemma(SatClause& lemma) {
+  Assert(lemma.size() > 0);
+  if(outputChannel() != NULL) {
+    if(lemma.size() == 1) {
+      // cannot share units yet
+      //options::lemmaOutputChannel()->notifyNewLemma(d_cnfStream->getNode(lemma[0]).toExpr());
+    } else {
+      NodeBuilder<> b(kind::OR);
+      for(unsigned i = 0, i_end = lemma.size(); i < i_end; ++i) {
+        b << d_cnfStream->getNode(lemma[i]);
+      }
+      Node n = b;
+
+      if(d_shared.find(n) == d_shared.end()) {
+        d_shared.insert(n);
+        outputChannel()->notifyNewLemma(n.toExpr());
+      } else {
+        Debug("shared") <<"drop new " << n << std::endl;
+      }
+    }
+  }
+}
+
+SatLiteral TheoryProxy::getNextReplayDecision() {
+#ifdef CVC4_REPLAY
+  if(d_replayStream != NULL) {
+    Expr e = d_replayStream->nextExpr();
+    if(!e.isNull()) { // we get null node when out of decisions to replay
+      // convert & return
+      ++d_replayedDecisions;
+      return d_cnfStream->getLiteral(e);
+    }
+  }
+#endif /* CVC4_REPLAY */
+  return undefSatLiteral;
+}
+
+void TheoryProxy::logDecision(SatLiteral lit) {
+#ifdef CVC4_REPLAY
+  if(d_replayLog != NULL) {
+    Assert(lit != undefSatLiteral, "logging an `undef' decision ?!");
+    (*d_replayLog) << d_cnfStream->getNode(lit) << std::endl;
+  }
+#endif /* CVC4_REPLAY */
+}
+
+void TheoryProxy::spendResource(unsigned ammount) {
+  d_theoryEngine->spendResource(ammount);
+}
+
+bool TheoryProxy::isDecisionRelevant(SatVariable var) {
+  return d_decisionEngine->isRelevant(var);
+}
+
+bool TheoryProxy::isDecisionEngineDone() {
+  return d_decisionEngine->isDone();
+}
+
+SatValue TheoryProxy::getDecisionPolarity(SatVariable var) {
+  return d_decisionEngine->getPolarity(var);
+}
+
+void TheoryProxy::dumpStatePop() {
+  if(Dump.isOn("state")) {
+    Dump("state") << PopCommand();
+  }
+}
+
+}/* CVC4::prop namespace */
+}/* CVC4 namespace */
diff --git a/src/prop/theory_proxy.h b/src/prop/theory_proxy.h
new file mode 100644
index 0000000..88c6ca9
--- /dev/null
+++ b/src/prop/theory_proxy.h
@@ -0,0 +1,154 @@
+/*********************                                                        */
+/*! \file theory_proxy.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief SAT Solver.
+ **
+ ** SAT Solver.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__PROP__SAT_H
+#define __CVC4__PROP__SAT_H
+
+// Just defining this for now, since there's no other SAT solver bindings.
+// Optional blocks below will be unconditionally included
+#define __CVC4_USE_MINISAT
+
+#include <iosfwd>
+
+#include "context/cdqueue.h"
+#include "expr/expr_stream.h"
+#include "expr/node.h"
+#include "prop/sat_solver.h"
+#include "smt_util/lemma_channels.h"
+#include "smt_util/lemma_input_channel.h"
+#include "smt_util/lemma_output_channel.h"
+#include "theory/theory.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+
+class DecisionEngine;
+class TheoryEngine;
+
+namespace prop {
+
+class PropEngine;
+class CnfStream;
+
+/**
+ * The proxy class that allows the SatSolver to communicate with the theories
+ */
+class TheoryProxy {
+public:
+  TheoryProxy(PropEngine* propEngine,
+              TheoryEngine* theoryEngine,
+              DecisionEngine* decisionEngine,
+              context::Context* context,
+              CnfStream* cnfStream,
+              std::ostream* replayLog,
+              ExprStream* replayStream,
+              LemmaChannels* globals);
+
+  ~TheoryProxy();
+
+
+  void theoryCheck(theory::Theory::Effort effort);
+
+  void explainPropagation(SatLiteral l, SatClause& explanation);
+
+  void theoryPropagate(SatClause& output);
+
+  void enqueueTheoryLiteral(const SatLiteral& l);
+
+  SatLiteral getNextTheoryDecisionRequest();
+
+  SatLiteral getNextDecisionEngineRequest(bool& stopSearch);
+
+  bool theoryNeedCheck() const;
+
+  /**
+   * Notifies of a new variable at a decision level.
+   */
+  void variableNotify(SatVariable var);
+
+  TNode getNode(SatLiteral lit);
+
+  void notifyRestart();
+
+  void notifyNewLemma(SatClause& lemma);
+
+  SatLiteral getNextReplayDecision();
+
+  void logDecision(SatLiteral lit);
+
+  void spendResource(unsigned ammount);
+
+  bool isDecisionEngineDone();
+
+  bool isDecisionRelevant(SatVariable var);
+
+  SatValue getDecisionPolarity(SatVariable var);
+
+  /** Shorthand for Dump("state") << PopCommand() */
+  void dumpStatePop();
+
+ private:
+  /** The prop engine we are using. */
+  PropEngine* d_propEngine;
+
+  /** The CNF engine we are using. */
+  CnfStream* d_cnfStream;
+
+  /** The decision engine we are using. */
+  DecisionEngine* d_decisionEngine;
+
+  /** The theory engine we are using. */
+  TheoryEngine* d_theoryEngine;
+
+
+  /** Container for inputChannel() and outputChannel(). */
+  LemmaChannels* d_channels;
+
+  /** Stream on which to log replay events. */
+  std::ostream* d_replayLog;
+
+  /** Stream for replaying decisions. */
+  ExprStream* d_replayStream;
+
+  /** The lemma input channel we are using. */
+  LemmaInputChannel* inputChannel();
+
+  /** The lemma output channel we are using. */
+  LemmaOutputChannel* outputChannel();
+
+  /** Queue of asserted facts */
+  context::CDQueue<TNode> d_queue;
+
+  /**
+   * Set of all lemmas that have been "shared" in the portfolio---i.e.,
+   * all imported and exported lemmas.
+   */
+  std::hash_set<Node, NodeHashFunction> d_shared;
+
+  /**
+   * Statistic: the number of replayed decisions (via --replay).
+   */
+  IntStat d_replayedDecisions;
+
+};/* class SatSolver */
+
+}/* CVC4::prop namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PROP__SAT_H */
diff --git a/src/smt/command.cpp b/src/smt/command.cpp
new file mode 100644
index 0000000..bd514e2
--- /dev/null
+++ b/src/smt/command.cpp
@@ -0,0 +1,1962 @@
+/*********************                                                        */
+/*! \file command.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Francois Bobot
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of command objects.
+ **
+ ** Implementation of command objects.
+ **/
+
+#include "smt/command.h"
+
+#include <exception>
+#include <iostream>
+#include <iterator>
+#include <sstream>
+#include <utility>
+#include <vector>
+
+#include "base/cvc4_assert.h"
+#include "base/output.h"
+#include "expr/expr_iomanip.h"
+#include "expr/node.h"
+#include "options/options.h"
+#include "options/smt_options.h"
+#include "printer/printer.h"
+#include "smt/dump.h"
+#include "smt/model.h"
+#include "smt/smt_engine.h"
+#include "smt/smt_engine_scope.h"
+#include "util/sexpr.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+const int CommandPrintSuccess::s_iosIndex = std::ios_base::xalloc();
+const CommandSuccess* CommandSuccess::s_instance = new CommandSuccess();
+const CommandInterrupted* CommandInterrupted::s_instance = new CommandInterrupted();
+
+std::ostream& operator<<(std::ostream& out, const Command& c) throw() {
+  c.toStream(out,
+             Node::setdepth::getDepth(out),
+             Node::printtypes::getPrintTypes(out),
+             Node::dag::getDag(out),
+             Node::setlanguage::getLanguage(out));
+  return out;
+}
+
+ostream& operator<<(ostream& out, const Command* c) throw() {
+  if(c == NULL) {
+    out << "null";
+  } else {
+    out << *c;
+  }
+  return out;
+}
+
+std::ostream& operator<<(std::ostream& out, const CommandStatus& s) throw() {
+  s.toStream(out, Node::setlanguage::getLanguage(out));
+  return out;
+}
+
+ostream& operator<<(ostream& out, const CommandStatus* s) throw() {
+  if(s == NULL) {
+    out << "null";
+  } else {
+    out << *s;
+  }
+  return out;
+}
+
+/* class Command */
+
+Command::Command() throw() : d_commandStatus(NULL), d_muted(false) {
+}
+
+Command::Command(const Command& cmd) {
+  d_commandStatus = (cmd.d_commandStatus == NULL) ? NULL : &cmd.d_commandStatus->clone();
+  d_muted = cmd.d_muted;
+}
+
+Command::~Command() throw() {
+  if(d_commandStatus != NULL && d_commandStatus != CommandSuccess::instance()) {
+    delete d_commandStatus;
+  }
+}
+
+bool Command::ok() const throw() {
+  // either we haven't run the command yet, or it ran successfully
+  return d_commandStatus == NULL || dynamic_cast<const CommandSuccess*>(d_commandStatus) != NULL;
+}
+
+bool Command::fail() const throw() {
+  return d_commandStatus != NULL && dynamic_cast<const CommandFailure*>(d_commandStatus) != NULL;
+}
+
+bool Command::interrupted() const throw() {
+  return d_commandStatus != NULL && dynamic_cast<const CommandInterrupted*>(d_commandStatus) != NULL;
+}
+
+void Command::invoke(SmtEngine* smtEngine, std::ostream& out) throw() {
+  invoke(smtEngine);
+  if(!(isMuted() && ok())) {
+    printResult(out, smtEngine->getOption("command-verbosity:" + getCommandName()).getIntegerValue().toUnsignedInt());
+  }
+}
+
+std::string Command::toString() const throw() {
+  std::stringstream ss;
+  toStream(ss);
+  return ss.str();
+}
+
+void Command::toStream(std::ostream& out, int toDepth, bool types, size_t dag,
+                       OutputLanguage language) const throw() {
+  Printer::getPrinter(language)->toStream(out, this, toDepth, types, dag);
+}
+
+void CommandStatus::toStream(std::ostream& out, OutputLanguage language) const throw() {
+  Printer::getPrinter(language)->toStream(out, this);
+}
+
+void Command::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+  if(d_commandStatus != NULL) {
+    if((!ok() && verbosity >= 1) || verbosity >= 2) {
+      out << *d_commandStatus;
+    }
+  }
+}
+
+/* class EmptyCommand */
+
+EmptyCommand::EmptyCommand(std::string name) throw() :
+  d_name(name) {
+}
+
+std::string EmptyCommand::getName() const throw() {
+  return d_name;
+}
+
+void EmptyCommand::invoke(SmtEngine* smtEngine) throw() {
+  /* empty commands have no implementation */
+  d_commandStatus = CommandSuccess::instance();
+}
+
+Command* EmptyCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  return new EmptyCommand(d_name);
+}
+
+Command* EmptyCommand::clone() const {
+  return new EmptyCommand(d_name);
+}
+
+std::string EmptyCommand::getCommandName() const throw() {
+  return "empty";
+}
+
+/* class EchoCommand */
+
+EchoCommand::EchoCommand(std::string output) throw() :
+  d_output(output) {
+}
+
+std::string EchoCommand::getOutput() const throw() {
+  return d_output;
+}
+
+void EchoCommand::invoke(SmtEngine* smtEngine) throw() {
+  /* we don't have an output stream here, nothing to do */
+  d_commandStatus = CommandSuccess::instance();
+}
+
+void EchoCommand::invoke(SmtEngine* smtEngine, std::ostream& out) throw() {
+  out << d_output << std::endl;
+  d_commandStatus = CommandSuccess::instance();
+  printResult(out, smtEngine->getOption("command-verbosity:" + getCommandName()).getIntegerValue().toUnsignedInt());
+}
+
+Command* EchoCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  return new EchoCommand(d_output);
+}
+
+Command* EchoCommand::clone() const {
+  return new EchoCommand(d_output);
+}
+
+std::string EchoCommand::getCommandName() const throw() {
+  return "echo";
+}
+
+/* class AssertCommand */
+
+AssertCommand::AssertCommand(const Expr& e, bool inUnsatCore) throw() :
+  d_expr(e), d_inUnsatCore(inUnsatCore) {
+}
+
+Expr AssertCommand::getExpr() const throw() {
+  return d_expr;
+}
+
+void AssertCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    smtEngine->assertFormula(d_expr, d_inUnsatCore);
+    d_commandStatus = CommandSuccess::instance();
+  } catch(UnsafeInterruptException& e) {
+    d_commandStatus = new CommandInterrupted();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+Command* AssertCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  return new AssertCommand(d_expr.exportTo(exprManager, variableMap), d_inUnsatCore);
+}
+
+Command* AssertCommand::clone() const {
+  return new AssertCommand(d_expr, d_inUnsatCore);
+}
+
+std::string AssertCommand::getCommandName() const throw() {
+  return "assert";
+}
+
+/* class PushCommand */
+
+void PushCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    smtEngine->push();
+    d_commandStatus = CommandSuccess::instance();
+  } catch(UnsafeInterruptException& e) {
+    d_commandStatus = new CommandInterrupted();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+Command* PushCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  return new PushCommand();
+}
+
+Command* PushCommand::clone() const {
+  return new PushCommand();
+}
+
+std::string PushCommand::getCommandName() const throw() {
+  return "push";
+}
+
+/* class PopCommand */
+
+void PopCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    smtEngine->pop();
+    d_commandStatus = CommandSuccess::instance();
+  } catch(UnsafeInterruptException& e) {
+    d_commandStatus = new CommandInterrupted();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+Command* PopCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  return new PopCommand();
+}
+
+Command* PopCommand::clone() const {
+  return new PopCommand();
+}
+
+std::string PopCommand::getCommandName() const throw() {
+  return "pop";
+}
+
+/* class CheckSatCommand */
+
+CheckSatCommand::CheckSatCommand() throw() :
+  d_expr() {
+}
+
+CheckSatCommand::CheckSatCommand(const Expr& expr, bool inUnsatCore) throw() :
+  d_expr(expr), d_inUnsatCore(inUnsatCore) {
+}
+
+Expr CheckSatCommand::getExpr() const throw() {
+  return d_expr;
+}
+
+void CheckSatCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    d_result = smtEngine->checkSat(d_expr);
+    d_commandStatus = CommandSuccess::instance();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+Result CheckSatCommand::getResult() const throw() {
+  return d_result;
+}
+
+void CheckSatCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+  if(! ok()) {
+    this->Command::printResult(out, verbosity);
+  } else {
+    out << d_result << endl;
+  }
+}
+
+Command* CheckSatCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  CheckSatCommand* c = new CheckSatCommand(d_expr.exportTo(exprManager, variableMap), d_inUnsatCore);
+  c->d_result = d_result;
+  return c;
+}
+
+Command* CheckSatCommand::clone() const {
+  CheckSatCommand* c = new CheckSatCommand(d_expr, d_inUnsatCore);
+  c->d_result = d_result;
+  return c;
+}
+
+std::string CheckSatCommand::getCommandName() const throw() {
+  return "check-sat";
+}
+
+/* class QueryCommand */
+
+QueryCommand::QueryCommand(const Expr& e, bool inUnsatCore) throw() :
+  d_expr(e), d_inUnsatCore(inUnsatCore) {
+}
+
+Expr QueryCommand::getExpr() const throw() {
+  return d_expr;
+}
+
+void QueryCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    d_result = smtEngine->query(d_expr);
+    d_commandStatus = CommandSuccess::instance();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+Result QueryCommand::getResult() const throw() {
+  return d_result;
+}
+
+void QueryCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+  if(! ok()) {
+    this->Command::printResult(out, verbosity);
+  } else {
+    out << d_result << endl;
+  }
+}
+
+Command* QueryCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  QueryCommand* c = new QueryCommand(d_expr.exportTo(exprManager, variableMap), d_inUnsatCore);
+  c->d_result = d_result;
+  return c;
+}
+
+Command* QueryCommand::clone() const {
+  QueryCommand* c = new QueryCommand(d_expr, d_inUnsatCore);
+  c->d_result = d_result;
+  return c;
+}
+
+std::string QueryCommand::getCommandName() const throw() {
+  return "query";
+}
+
+
+/* class CheckSynthCommand */
+
+CheckSynthCommand::CheckSynthCommand() throw() :
+  d_expr() {
+}
+
+CheckSynthCommand::CheckSynthCommand(const Expr& expr, bool inUnsatCore) throw() :
+  d_expr(expr), d_inUnsatCore(inUnsatCore) {
+}
+
+Expr CheckSynthCommand::getExpr() const throw() {
+  return d_expr;
+}
+
+void CheckSynthCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    d_result = smtEngine->checkSynth(d_expr);
+    d_commandStatus = CommandSuccess::instance();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+Result CheckSynthCommand::getResult() const throw() {
+  return d_result;
+}
+
+void CheckSynthCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+  if(! ok()) {
+    this->Command::printResult(out, verbosity);
+  } else {
+    out << d_result << endl;
+  }
+}
+
+Command* CheckSynthCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  CheckSynthCommand* c = new CheckSynthCommand(d_expr.exportTo(exprManager, variableMap), d_inUnsatCore);
+  c->d_result = d_result;
+  return c;
+}
+
+Command* CheckSynthCommand::clone() const {
+  CheckSynthCommand* c = new CheckSynthCommand(d_expr, d_inUnsatCore);
+  c->d_result = d_result;
+  return c;
+}
+
+std::string CheckSynthCommand::getCommandName() const throw() {
+  return "check-synth";
+}
+
+
+/* class ResetCommand */
+
+void ResetCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    smtEngine->reset();
+    d_commandStatus = CommandSuccess::instance();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+Command* ResetCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  return new ResetCommand();
+}
+
+Command* ResetCommand::clone() const {
+  return new ResetCommand();
+}
+
+std::string ResetCommand::getCommandName() const throw() {
+  return "reset";
+}
+
+/* class ResetAssertionsCommand */
+
+void ResetAssertionsCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    smtEngine->resetAssertions();
+    d_commandStatus = CommandSuccess::instance();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+Command* ResetAssertionsCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  return new ResetAssertionsCommand();
+}
+
+Command* ResetAssertionsCommand::clone() const {
+  return new ResetAssertionsCommand();
+}
+
+std::string ResetAssertionsCommand::getCommandName() const throw() {
+  return "reset-assertions";
+}
+
+/* class QuitCommand */
+
+void QuitCommand::invoke(SmtEngine* smtEngine) throw() {
+  Dump("benchmark") << *this;
+  d_commandStatus = CommandSuccess::instance();
+}
+
+Command* QuitCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  return new QuitCommand();
+}
+
+Command* QuitCommand::clone() const {
+  return new QuitCommand();
+}
+
+std::string QuitCommand::getCommandName() const throw() {
+  return "exit";
+}
+
+/* class CommentCommand */
+
+CommentCommand::CommentCommand(std::string comment) throw() : d_comment(comment) {
+}
+
+std::string CommentCommand::getComment() const throw() {
+  return d_comment;
+}
+
+void CommentCommand::invoke(SmtEngine* smtEngine) throw() {
+  Dump("benchmark") << *this;
+  d_commandStatus = CommandSuccess::instance();
+}
+
+Command* CommentCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  return new CommentCommand(d_comment);
+}
+
+Command* CommentCommand::clone() const {
+  return new CommentCommand(d_comment);
+}
+
+std::string CommentCommand::getCommandName() const throw() {
+  return "comment";
+}
+
+/* class CommandSequence */
+
+CommandSequence::CommandSequence() throw() :
+  d_index(0) {
+}
+
+CommandSequence::~CommandSequence() throw() {
+  for(unsigned i = d_index; i < d_commandSequence.size(); ++i) {
+    delete d_commandSequence[i];
+  }
+}
+
+void CommandSequence::addCommand(Command* cmd) throw() {
+  d_commandSequence.push_back(cmd);
+}
+
+void CommandSequence::clear() throw() {
+  d_commandSequence.clear();
+}
+
+void CommandSequence::invoke(SmtEngine* smtEngine) throw() {
+  for(; d_index < d_commandSequence.size(); ++d_index) {
+    d_commandSequence[d_index]->invoke(smtEngine);
+    if(! d_commandSequence[d_index]->ok()) {
+      // abort execution
+      d_commandStatus = d_commandSequence[d_index]->getCommandStatus();
+      return;
+    }
+    delete d_commandSequence[d_index];
+  }
+
+  AlwaysAssert(d_commandStatus == NULL);
+  d_commandStatus = CommandSuccess::instance();
+}
+
+void CommandSequence::invoke(SmtEngine* smtEngine, std::ostream& out) throw() {
+  for(; d_index < d_commandSequence.size(); ++d_index) {
+    d_commandSequence[d_index]->invoke(smtEngine, out);
+    if(! d_commandSequence[d_index]->ok()) {
+      // abort execution
+      d_commandStatus = d_commandSequence[d_index]->getCommandStatus();
+      return;
+    }
+    delete d_commandSequence[d_index];
+  }
+
+  AlwaysAssert(d_commandStatus == NULL);
+  d_commandStatus = CommandSuccess::instance();
+}
+
+Command* CommandSequence::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  CommandSequence* seq = new CommandSequence();
+  for(iterator i = begin(); i != end(); ++i) {
+    Command* cmd_to_export = *i;
+    Command* cmd = cmd_to_export->exportTo(exprManager, variableMap);
+    seq->addCommand(cmd);
+    Debug("export") << "[export] so far converted: " << seq << endl;
+  }
+  seq->d_index = d_index;
+  return seq;
+}
+
+Command* CommandSequence::clone() const {
+  CommandSequence* seq = new CommandSequence();
+  for(const_iterator i = begin(); i != end(); ++i) {
+    seq->addCommand((*i)->clone());
+  }
+  seq->d_index = d_index;
+  return seq;
+}
+
+CommandSequence::const_iterator CommandSequence::begin() const throw() {
+  return d_commandSequence.begin();
+}
+
+CommandSequence::const_iterator CommandSequence::end() const throw() {
+  return d_commandSequence.end();
+}
+
+CommandSequence::iterator CommandSequence::begin() throw() {
+  return d_commandSequence.begin();
+}
+
+CommandSequence::iterator CommandSequence::end() throw() {
+  return d_commandSequence.end();
+}
+
+std::string CommandSequence::getCommandName() const throw() {
+  return "sequence";
+}
+
+/* class DeclarationSequenceCommand */
+
+/* class DeclarationDefinitionCommand */
+
+DeclarationDefinitionCommand::DeclarationDefinitionCommand(const std::string& id) throw() :
+  d_symbol(id) {
+}
+
+std::string DeclarationDefinitionCommand::getSymbol() const throw() {
+  return d_symbol;
+}
+
+/* class DeclareFunctionCommand */
+
+DeclareFunctionCommand::DeclareFunctionCommand(const std::string& id, Expr func, Type t) throw() :
+  DeclarationDefinitionCommand(id),
+  d_func(func),
+  d_type(t),
+  d_printInModel(true),
+  d_printInModelSetByUser(false){
+}
+
+Expr DeclareFunctionCommand::getFunction() const throw() {
+  return d_func;
+}
+
+Type DeclareFunctionCommand::getType() const throw() {
+  return d_type;
+}
+
+bool DeclareFunctionCommand::getPrintInModel() const throw() {
+  return d_printInModel;
+}
+
+bool DeclareFunctionCommand::getPrintInModelSetByUser() const throw() {
+  return d_printInModelSetByUser;
+}
+
+void DeclareFunctionCommand::setPrintInModel( bool p ) {
+  d_printInModel = p;
+  d_printInModelSetByUser = true;
+}
+
+void DeclareFunctionCommand::invoke(SmtEngine* smtEngine) throw() {
+  d_commandStatus = CommandSuccess::instance();
+}
+
+Command* DeclareFunctionCommand::exportTo(ExprManager* exprManager,
+                                          ExprManagerMapCollection& variableMap) {
+  DeclareFunctionCommand * dfc = new DeclareFunctionCommand(d_symbol, d_func.exportTo(exprManager, variableMap),
+                                                            d_type.exportTo(exprManager, variableMap));
+  dfc->d_printInModel = d_printInModel;
+  dfc->d_printInModelSetByUser = d_printInModelSetByUser;
+  return dfc;
+}
+
+Command* DeclareFunctionCommand::clone() const {
+  DeclareFunctionCommand * dfc = new DeclareFunctionCommand(d_symbol, d_func, d_type);
+  dfc->d_printInModel = d_printInModel;
+  dfc->d_printInModelSetByUser = d_printInModelSetByUser;
+  return dfc;
+}
+
+std::string DeclareFunctionCommand::getCommandName() const throw() {
+  return "declare-fun";
+}
+
+/* class DeclareTypeCommand */
+
+DeclareTypeCommand::DeclareTypeCommand(const std::string& id, size_t arity, Type t) throw() :
+  DeclarationDefinitionCommand(id),
+  d_arity(arity),
+  d_type(t) {
+}
+
+size_t DeclareTypeCommand::getArity() const throw() {
+  return d_arity;
+}
+
+Type DeclareTypeCommand::getType() const throw() {
+  return d_type;
+}
+
+void DeclareTypeCommand::invoke(SmtEngine* smtEngine) throw() {
+  d_commandStatus = CommandSuccess::instance();
+}
+
+Command* DeclareTypeCommand::exportTo(ExprManager* exprManager,
+                                      ExprManagerMapCollection& variableMap) {
+  return new DeclareTypeCommand(d_symbol, d_arity,
+                                d_type.exportTo(exprManager, variableMap));
+}
+
+Command* DeclareTypeCommand::clone() const {
+  return new DeclareTypeCommand(d_symbol, d_arity, d_type);
+}
+
+std::string DeclareTypeCommand::getCommandName() const throw() {
+  return "declare-sort";
+}
+
+/* class DefineTypeCommand */
+
+DefineTypeCommand::DefineTypeCommand(const std::string& id,
+                                     Type t) throw() :
+  DeclarationDefinitionCommand(id),
+  d_params(),
+  d_type(t) {
+}
+
+DefineTypeCommand::DefineTypeCommand(const std::string& id,
+                                     const std::vector<Type>& params,
+                                     Type t) throw() :
+  DeclarationDefinitionCommand(id),
+  d_params(params),
+  d_type(t) {
+}
+
+const std::vector<Type>& DefineTypeCommand::getParameters() const throw() {
+  return d_params;
+}
+
+Type DefineTypeCommand::getType() const throw() {
+  return d_type;
+}
+
+void DefineTypeCommand::invoke(SmtEngine* smtEngine) throw() {
+  d_commandStatus = CommandSuccess::instance();
+}
+
+Command* DefineTypeCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  vector<Type> params;
+  transform(d_params.begin(), d_params.end(), back_inserter(params),
+            ExportTransformer(exprManager, variableMap));
+  Type type = d_type.exportTo(exprManager, variableMap);
+  return new DefineTypeCommand(d_symbol, params, type);
+}
+
+Command* DefineTypeCommand::clone() const {
+  return new DefineTypeCommand(d_symbol, d_params, d_type);
+}
+
+std::string DefineTypeCommand::getCommandName() const throw() {
+  return "define-sort";
+}
+
+/* class DefineFunctionCommand */
+
+DefineFunctionCommand::DefineFunctionCommand(const std::string& id,
+                                             Expr func,
+                                             Expr formula) throw() :
+  DeclarationDefinitionCommand(id),
+  d_func(func),
+  d_formals(),
+  d_formula(formula) {
+}
+
+DefineFunctionCommand::DefineFunctionCommand(const std::string& id,
+                                             Expr func,
+                                             const std::vector<Expr>& formals,
+                                             Expr formula) throw() :
+  DeclarationDefinitionCommand(id),
+  d_func(func),
+  d_formals(formals),
+  d_formula(formula) {
+}
+
+Expr DefineFunctionCommand::getFunction() const throw() {
+  return d_func;
+}
+
+const std::vector<Expr>& DefineFunctionCommand::getFormals() const throw() {
+  return d_formals;
+}
+
+Expr DefineFunctionCommand::getFormula() const throw() {
+  return d_formula;
+}
+
+void DefineFunctionCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    if(!d_func.isNull()) {
+      smtEngine->defineFunction(d_func, d_formals, d_formula);
+    }
+    d_commandStatus = CommandSuccess::instance();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+Command* DefineFunctionCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  Expr func = d_func.exportTo(exprManager, variableMap, /* flags = */ ExprManager::VAR_FLAG_DEFINED);
+  vector<Expr> formals;
+  transform(d_formals.begin(), d_formals.end(), back_inserter(formals),
+            ExportTransformer(exprManager, variableMap));
+  Expr formula = d_formula.exportTo(exprManager, variableMap);
+  return new DefineFunctionCommand(d_symbol, func, formals, formula);
+}
+
+Command* DefineFunctionCommand::clone() const {
+  return new DefineFunctionCommand(d_symbol, d_func, d_formals, d_formula);
+}
+
+std::string DefineFunctionCommand::getCommandName() const throw() {
+  return "define-fun";
+}
+
+/* class DefineNamedFunctionCommand */
+
+DefineNamedFunctionCommand::DefineNamedFunctionCommand(const std::string& id,
+                                                       Expr func,
+                                                       const std::vector<Expr>& formals,
+                                                       Expr formula) throw() :
+  DefineFunctionCommand(id, func, formals, formula) {
+}
+
+void DefineNamedFunctionCommand::invoke(SmtEngine* smtEngine) throw() {
+  this->DefineFunctionCommand::invoke(smtEngine);
+  if(!d_func.isNull() && d_func.getType().isBoolean()) {
+    smtEngine->addToAssignment(d_func.getExprManager()->mkExpr(kind::APPLY, d_func));
+  }
+  d_commandStatus = CommandSuccess::instance();
+}
+
+Command* DefineNamedFunctionCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  Expr func = d_func.exportTo(exprManager, variableMap);
+  vector<Expr> formals;
+  transform(d_formals.begin(), d_formals.end(), back_inserter(formals),
+            ExportTransformer(exprManager, variableMap));
+  Expr formula = d_formula.exportTo(exprManager, variableMap);
+  return new DefineNamedFunctionCommand(d_symbol, func, formals, formula);
+}
+
+Command* DefineNamedFunctionCommand::clone() const {
+  return new DefineNamedFunctionCommand(d_symbol, d_func, d_formals, d_formula);
+}
+
+/* class SetUserAttribute */
+
+SetUserAttributeCommand::SetUserAttributeCommand( const std::string& attr, Expr expr ) throw() :
+  d_attr( attr ), d_expr( expr ){
+}
+
+SetUserAttributeCommand::SetUserAttributeCommand( const std::string& attr, Expr expr,
+                                                  std::vector<Expr>& values ) throw() :
+  d_attr( attr ), d_expr( expr ){
+  d_expr_values.insert( d_expr_values.begin(), values.begin(), values.end() );
+}
+
+SetUserAttributeCommand::SetUserAttributeCommand( const std::string& attr, Expr expr,
+                                                  const std::string& value ) throw() :
+  d_attr( attr ), d_expr( expr ), d_str_value( value ){
+}
+
+void SetUserAttributeCommand::invoke(SmtEngine* smtEngine) throw(){
+  try {
+    if(!d_expr.isNull()) {
+      smtEngine->setUserAttribute( d_attr, d_expr, d_expr_values, d_str_value );
+    }
+    d_commandStatus = CommandSuccess::instance();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+Command* SetUserAttributeCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap){
+  Expr expr = d_expr.exportTo(exprManager, variableMap);
+  SetUserAttributeCommand * c = new SetUserAttributeCommand( d_attr, expr, d_str_value );
+  c->d_expr_values.insert( c->d_expr_values.end(), d_expr_values.begin(), d_expr_values.end() );
+  return c;
+}
+
+Command* SetUserAttributeCommand::clone() const{
+  SetUserAttributeCommand * c = new SetUserAttributeCommand( d_attr, d_expr, d_str_value );
+  c->d_expr_values.insert( c->d_expr_values.end(), d_expr_values.begin(), d_expr_values.end() );
+  return c;
+}
+
+std::string SetUserAttributeCommand::getCommandName() const throw() {
+  return "set-user-attribute";
+}
+
+/* class SimplifyCommand */
+
+SimplifyCommand::SimplifyCommand(Expr term) throw() :
+  d_term(term) {
+}
+
+Expr SimplifyCommand::getTerm() const throw() {
+  return d_term;
+}
+
+void SimplifyCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    d_result = smtEngine->simplify(d_term);
+    d_commandStatus = CommandSuccess::instance();
+  } catch(UnsafeInterruptException& e) {
+    d_commandStatus = new CommandInterrupted();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+Expr SimplifyCommand::getResult() const throw() {
+  return d_result;
+}
+
+void SimplifyCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+  if(! ok()) {
+    this->Command::printResult(out, verbosity);
+  } else {
+    out << d_result << endl;
+  }
+}
+
+Command* SimplifyCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  SimplifyCommand* c = new SimplifyCommand(d_term.exportTo(exprManager, variableMap));
+  c->d_result = d_result.exportTo(exprManager, variableMap);
+  return c;
+}
+
+Command* SimplifyCommand::clone() const {
+  SimplifyCommand* c = new SimplifyCommand(d_term);
+  c->d_result = d_result;
+  return c;
+}
+
+std::string SimplifyCommand::getCommandName() const throw() {
+  return "simplify";
+}
+
+/* class ExpandDefinitionsCommand */
+
+ExpandDefinitionsCommand::ExpandDefinitionsCommand(Expr term) throw() :
+  d_term(term) {
+}
+
+Expr ExpandDefinitionsCommand::getTerm() const throw() {
+  return d_term;
+}
+
+void ExpandDefinitionsCommand::invoke(SmtEngine* smtEngine) throw() {
+  d_result = smtEngine->expandDefinitions(d_term);
+  d_commandStatus = CommandSuccess::instance();
+}
+
+Expr ExpandDefinitionsCommand::getResult() const throw() {
+  return d_result;
+}
+
+void ExpandDefinitionsCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+  if(! ok()) {
+    this->Command::printResult(out, verbosity);
+  } else {
+    out << d_result << endl;
+  }
+}
+
+Command* ExpandDefinitionsCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  ExpandDefinitionsCommand* c = new ExpandDefinitionsCommand(d_term.exportTo(exprManager, variableMap));
+  c->d_result = d_result.exportTo(exprManager, variableMap);
+  return c;
+}
+
+Command* ExpandDefinitionsCommand::clone() const {
+  ExpandDefinitionsCommand* c = new ExpandDefinitionsCommand(d_term);
+  c->d_result = d_result;
+  return c;
+}
+
+std::string ExpandDefinitionsCommand::getCommandName() const throw() {
+  return "expand-definitions";
+}
+
+/* class GetValueCommand */
+
+GetValueCommand::GetValueCommand(Expr term) throw() :
+  d_terms() {
+  d_terms.push_back(term);
+}
+
+GetValueCommand::GetValueCommand(const std::vector<Expr>& terms) throw() :
+  d_terms(terms) {
+  PrettyCheckArgument(terms.size() >= 1, terms,
+                      "cannot get-value of an empty set of terms");
+}
+
+const std::vector<Expr>& GetValueCommand::getTerms() const throw() {
+  return d_terms;
+}
+
+void GetValueCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    vector<Expr> result;
+    ExprManager* em = smtEngine->getExprManager();
+    NodeManager* nm = NodeManager::fromExprManager(em);
+    for(std::vector<Expr>::const_iterator i = d_terms.begin(); i != d_terms.end(); ++i) {
+      Assert(nm == NodeManager::fromExprManager((*i).getExprManager()));
+      smt::SmtScope scope(smtEngine);
+      Node request = Node::fromExpr(options::expandDefinitions() ? smtEngine->expandDefinitions(*i) : *i);
+      Node value = Node::fromExpr(smtEngine->getValue(*i));
+      if(value.getType().isInteger() && request.getType() == nm->realType()) {
+        // Need to wrap in special marker so that output printers know this
+        // is an integer-looking constant that really should be output as
+        // a rational.  Necessary for SMT-LIB standards compliance, but ugly.
+        value = nm->mkNode(kind::APPLY_TYPE_ASCRIPTION,
+                           nm->mkConst(AscriptionType(em->realType())), value);
+      }
+      result.push_back(nm->mkNode(kind::SEXPR, request, value).toExpr());
+    }
+    d_result = em->mkExpr(kind::SEXPR, result);
+    d_commandStatus = CommandSuccess::instance();
+  } catch(UnsafeInterruptException& e) {
+    d_commandStatus = new CommandInterrupted();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+Expr GetValueCommand::getResult() const throw() {
+  return d_result;
+}
+
+void GetValueCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+  if(! ok()) {
+    this->Command::printResult(out, verbosity);
+  } else {
+    expr::ExprDag::Scope scope(out, false);
+    out << d_result << endl;
+  }
+}
+
+Command* GetValueCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  vector<Expr> exportedTerms;
+  for(std::vector<Expr>::const_iterator i = d_terms.begin(); i != d_terms.end(); ++i) {
+    exportedTerms.push_back((*i).exportTo(exprManager, variableMap));
+  }
+  GetValueCommand* c = new GetValueCommand(exportedTerms);
+  c->d_result = d_result.exportTo(exprManager, variableMap);
+  return c;
+}
+
+Command* GetValueCommand::clone() const {
+  GetValueCommand* c = new GetValueCommand(d_terms);
+  c->d_result = d_result;
+  return c;
+}
+
+std::string GetValueCommand::getCommandName() const throw() {
+  return "get-value";
+}
+
+/* class GetAssignmentCommand */
+
+GetAssignmentCommand::GetAssignmentCommand() throw() {
+}
+
+void GetAssignmentCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    d_result = smtEngine->getAssignment();
+    d_commandStatus = CommandSuccess::instance();
+  } catch(UnsafeInterruptException& e) {
+    d_commandStatus = new CommandInterrupted();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+SExpr GetAssignmentCommand::getResult() const throw() {
+  return d_result;
+}
+
+void GetAssignmentCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+  if(! ok()) {
+    this->Command::printResult(out, verbosity);
+  } else {
+    out << d_result << endl;
+  }
+}
+
+Command* GetAssignmentCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  GetAssignmentCommand* c = new GetAssignmentCommand();
+  c->d_result = d_result;
+  return c;
+}
+
+Command* GetAssignmentCommand::clone() const {
+  GetAssignmentCommand* c = new GetAssignmentCommand();
+  c->d_result = d_result;
+  return c;
+}
+
+std::string GetAssignmentCommand::getCommandName() const throw() {
+  return "get-assignment";
+}
+
+/* class GetModelCommand */
+
+GetModelCommand::GetModelCommand() throw() {
+}
+
+void GetModelCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    d_result = smtEngine->getModel();
+    d_smtEngine = smtEngine;
+    d_commandStatus = CommandSuccess::instance();
+  } catch(UnsafeInterruptException& e) {
+    d_commandStatus = new CommandInterrupted();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+/* Model is private to the library -- for now
+Model* GetModelCommand::getResult() const throw() {
+  return d_result;
+}
+*/
+
+void GetModelCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+  if(! ok()) {
+    this->Command::printResult(out, verbosity);
+  } else {
+    out << *d_result;
+  }
+}
+
+Command* GetModelCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  GetModelCommand* c = new GetModelCommand();
+  c->d_result = d_result;
+  c->d_smtEngine = d_smtEngine;
+  return c;
+}
+
+Command* GetModelCommand::clone() const {
+  GetModelCommand* c = new GetModelCommand();
+  c->d_result = d_result;
+  c->d_smtEngine = d_smtEngine;
+  return c;
+}
+
+std::string GetModelCommand::getCommandName() const throw() {
+  return "get-model";
+}
+
+/* class GetProofCommand */
+
+GetProofCommand::GetProofCommand() throw() {
+}
+
+void GetProofCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    d_smtEngine = smtEngine;
+    d_result = smtEngine->getProof();
+    d_commandStatus = CommandSuccess::instance();
+  } catch(UnsafeInterruptException& e) {
+    d_commandStatus = new CommandInterrupted();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+Proof* GetProofCommand::getResult() const throw() {
+  return d_result;
+}
+
+void GetProofCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+  if(! ok()) {
+    this->Command::printResult(out, verbosity);
+  } else {
+    smt::SmtScope scope(d_smtEngine);
+    d_result->toStream(out);
+  }
+}
+
+Command* GetProofCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  GetProofCommand* c = new GetProofCommand();
+  c->d_result = d_result;
+  c->d_smtEngine = d_smtEngine;
+  return c;
+}
+
+Command* GetProofCommand::clone() const {
+  GetProofCommand* c = new GetProofCommand();
+  c->d_result = d_result;
+  c->d_smtEngine = d_smtEngine;
+  return c;
+}
+
+std::string GetProofCommand::getCommandName() const throw() {
+  return "get-proof";
+}
+
+/* class GetInstantiationsCommand */
+
+GetInstantiationsCommand::GetInstantiationsCommand() throw() {
+}
+
+void GetInstantiationsCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    d_smtEngine = smtEngine;
+    d_commandStatus = CommandSuccess::instance();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+//Instantiations* GetInstantiationsCommand::getResult() const throw() {
+//  return d_result;
+//}
+
+void GetInstantiationsCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+  if(! ok()) {
+    this->Command::printResult(out, verbosity);
+  } else {
+    d_smtEngine->printInstantiations(out);
+  }
+}
+
+Command* GetInstantiationsCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  GetInstantiationsCommand* c = new GetInstantiationsCommand();
+  //c->d_result = d_result;
+  c->d_smtEngine = d_smtEngine;
+  return c;
+}
+
+Command* GetInstantiationsCommand::clone() const {
+  GetInstantiationsCommand* c = new GetInstantiationsCommand();
+  //c->d_result = d_result;
+  c->d_smtEngine = d_smtEngine;
+  return c;
+}
+
+std::string GetInstantiationsCommand::getCommandName() const throw() {
+  return "get-instantiations";
+}
+
+/* class GetSynthSolutionCommand */
+
+GetSynthSolutionCommand::GetSynthSolutionCommand() throw() {
+}
+
+void GetSynthSolutionCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    d_smtEngine = smtEngine;
+    d_commandStatus = CommandSuccess::instance();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+void GetSynthSolutionCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+  if(! ok()) {
+    this->Command::printResult(out, verbosity);
+  } else {
+    d_smtEngine->printSynthSolution(out);
+  }
+}
+
+Command* GetSynthSolutionCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  GetSynthSolutionCommand* c = new GetSynthSolutionCommand();
+  c->d_smtEngine = d_smtEngine;
+  return c;
+}
+
+Command* GetSynthSolutionCommand::clone() const {
+  GetSynthSolutionCommand* c = new GetSynthSolutionCommand();
+  c->d_smtEngine = d_smtEngine;
+  return c;
+}
+
+std::string GetSynthSolutionCommand::getCommandName() const throw() {
+  return "get-instantiations";
+}
+
+/* class GetQuantifierEliminationCommand */
+
+GetQuantifierEliminationCommand::GetQuantifierEliminationCommand() throw() :
+  d_expr() {
+}
+
+GetQuantifierEliminationCommand::GetQuantifierEliminationCommand(const Expr& expr, bool doFull) throw() :
+  d_expr(expr), d_doFull(doFull) {
+}
+
+Expr GetQuantifierEliminationCommand::getExpr() const throw() {
+  return d_expr;
+}
+bool GetQuantifierEliminationCommand::getDoFull() const throw() {
+  return d_doFull;
+}
+
+void GetQuantifierEliminationCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    d_result = smtEngine->doQuantifierElimination(d_expr, d_doFull);
+    d_commandStatus = CommandSuccess::instance();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+Expr GetQuantifierEliminationCommand::getResult() const throw() {
+  return d_result;
+}
+
+void GetQuantifierEliminationCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+  if(! ok()) {
+    this->Command::printResult(out, verbosity);
+  } else {
+    out << d_result << endl;
+  }
+}
+
+Command* GetQuantifierEliminationCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  GetQuantifierEliminationCommand* c = new GetQuantifierEliminationCommand(d_expr.exportTo(exprManager, variableMap), d_doFull);
+  c->d_result = d_result;
+  return c;
+}
+
+Command* GetQuantifierEliminationCommand::clone() const {
+  GetQuantifierEliminationCommand* c = new GetQuantifierEliminationCommand(d_expr, d_doFull);
+  c->d_result = d_result;
+  return c;
+}
+
+std::string GetQuantifierEliminationCommand::getCommandName() const throw() {
+  return d_doFull ? "get-qe" : "get-qe-disjunct";
+}
+
+/* class GetUnsatCoreCommand */
+
+GetUnsatCoreCommand::GetUnsatCoreCommand() throw() {
+}
+
+GetUnsatCoreCommand::GetUnsatCoreCommand(const std::map<Expr, std::string>& names) throw() : d_names(names) {
+}
+
+void GetUnsatCoreCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    d_result = smtEngine->getUnsatCore();
+    d_commandStatus = CommandSuccess::instance();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+void GetUnsatCoreCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+  if(! ok()) {
+    this->Command::printResult(out, verbosity);
+  } else {
+    d_result.toStream(out, d_names);
+  }
+}
+
+const UnsatCore& GetUnsatCoreCommand::getUnsatCore() const throw() {
+  // of course, this will be empty if the command hasn't been invoked yet
+  return d_result;
+}
+
+Command* GetUnsatCoreCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  GetUnsatCoreCommand* c = new GetUnsatCoreCommand(d_names);
+  c->d_result = d_result;
+  return c;
+}
+
+Command* GetUnsatCoreCommand::clone() const {
+  GetUnsatCoreCommand* c = new GetUnsatCoreCommand(d_names);
+  c->d_result = d_result;
+  return c;
+}
+
+std::string GetUnsatCoreCommand::getCommandName() const throw() {
+  return "get-unsat-core";
+}
+
+/* class GetAssertionsCommand */
+
+GetAssertionsCommand::GetAssertionsCommand() throw() {
+}
+
+void GetAssertionsCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    stringstream ss;
+    const vector<Expr> v = smtEngine->getAssertions();
+    ss << "(\n";
+    copy( v.begin(), v.end(), ostream_iterator<Expr>(ss, "\n") );
+    ss << ")\n";
+    d_result = ss.str();
+    d_commandStatus = CommandSuccess::instance();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+std::string GetAssertionsCommand::getResult() const throw() {
+  return d_result;
+}
+
+void GetAssertionsCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+  if(! ok()) {
+    this->Command::printResult(out, verbosity);
+  } else {
+    out << d_result;
+  }
+}
+
+Command* GetAssertionsCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  GetAssertionsCommand* c = new GetAssertionsCommand();
+  c->d_result = d_result;
+  return c;
+}
+
+Command* GetAssertionsCommand::clone() const {
+  GetAssertionsCommand* c = new GetAssertionsCommand();
+  c->d_result = d_result;
+  return c;
+}
+
+std::string GetAssertionsCommand::getCommandName() const throw() {
+  return "get-assertions";
+}
+
+/* class SetBenchmarkStatusCommand */
+
+SetBenchmarkStatusCommand::SetBenchmarkStatusCommand(BenchmarkStatus status) throw() :
+  d_status(status) {
+}
+
+BenchmarkStatus SetBenchmarkStatusCommand::getStatus() const throw() {
+  return d_status;
+}
+
+void SetBenchmarkStatusCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    stringstream ss;
+    ss << d_status;
+    SExpr status = SExpr(ss.str());
+    smtEngine->setInfo("status", status);
+    d_commandStatus = CommandSuccess::instance();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+Command* SetBenchmarkStatusCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  return new SetBenchmarkStatusCommand(d_status);
+}
+
+Command* SetBenchmarkStatusCommand::clone() const {
+  return new SetBenchmarkStatusCommand(d_status);
+}
+
+std::string SetBenchmarkStatusCommand::getCommandName() const throw() {
+  return "set-info";
+}
+
+/* class SetBenchmarkLogicCommand */
+
+SetBenchmarkLogicCommand::SetBenchmarkLogicCommand(std::string logic) throw() :
+  d_logic(logic) {
+}
+
+std::string SetBenchmarkLogicCommand::getLogic() const throw() {
+  return d_logic;
+}
+
+void SetBenchmarkLogicCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    smtEngine->setLogic(d_logic);
+    d_commandStatus = CommandSuccess::instance();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+Command* SetBenchmarkLogicCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  return new SetBenchmarkLogicCommand(d_logic);
+}
+
+Command* SetBenchmarkLogicCommand::clone() const {
+  return new SetBenchmarkLogicCommand(d_logic);
+}
+
+std::string SetBenchmarkLogicCommand::getCommandName() const throw() {
+  return "set-logic";
+}
+
+/* class SetInfoCommand */
+
+SetInfoCommand::SetInfoCommand(std::string flag, const SExpr& sexpr) throw() :
+  d_flag(flag),
+  d_sexpr(sexpr) {
+}
+
+std::string SetInfoCommand::getFlag() const throw() {
+  return d_flag;
+}
+
+SExpr SetInfoCommand::getSExpr() const throw() {
+  return d_sexpr;
+}
+
+void SetInfoCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    smtEngine->setInfo(d_flag, d_sexpr);
+    d_commandStatus = CommandSuccess::instance();
+  } catch(UnrecognizedOptionException&) {
+    // As per SMT-LIB spec, silently accept unknown set-info keys
+    d_commandStatus = CommandSuccess::instance();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+Command* SetInfoCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  return new SetInfoCommand(d_flag, d_sexpr);
+}
+
+Command* SetInfoCommand::clone() const {
+  return new SetInfoCommand(d_flag, d_sexpr);
+}
+
+std::string SetInfoCommand::getCommandName() const throw() {
+  return "set-info";
+}
+
+/* class GetInfoCommand */
+
+GetInfoCommand::GetInfoCommand(std::string flag) throw() :
+  d_flag(flag) {
+}
+
+std::string GetInfoCommand::getFlag() const throw() {
+  return d_flag;
+}
+
+void GetInfoCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    vector<SExpr> v;
+    v.push_back(SExpr(SExpr::Keyword(string(":") + d_flag)));
+    v.push_back(smtEngine->getInfo(d_flag));
+    stringstream ss;
+    if(d_flag == "all-options" || d_flag == "all-statistics") {
+      ss << PrettySExprs(true);
+    }
+    ss << SExpr(v);
+    d_result = ss.str();
+    d_commandStatus = CommandSuccess::instance();
+  } catch(UnrecognizedOptionException&) {
+    d_commandStatus = new CommandUnsupported();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+std::string GetInfoCommand::getResult() const throw() {
+  return d_result;
+}
+
+void GetInfoCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+  if(! ok()) {
+    this->Command::printResult(out, verbosity);
+  } else if(d_result != "") {
+    out << d_result << endl;
+  }
+}
+
+Command* GetInfoCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  GetInfoCommand* c = new GetInfoCommand(d_flag);
+  c->d_result = d_result;
+  return c;
+}
+
+Command* GetInfoCommand::clone() const {
+  GetInfoCommand* c = new GetInfoCommand(d_flag);
+  c->d_result = d_result;
+  return c;
+}
+
+std::string GetInfoCommand::getCommandName() const throw() {
+  return "get-info";
+}
+
+/* class SetOptionCommand */
+
+SetOptionCommand::SetOptionCommand(std::string flag, const SExpr& sexpr) throw() :
+  d_flag(flag),
+  d_sexpr(sexpr) {
+}
+
+std::string SetOptionCommand::getFlag() const throw() {
+  return d_flag;
+}
+
+SExpr SetOptionCommand::getSExpr() const throw() {
+  return d_sexpr;
+}
+
+void SetOptionCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    smtEngine->setOption(d_flag, d_sexpr);
+    d_commandStatus = CommandSuccess::instance();
+  } catch(UnrecognizedOptionException&) {
+    d_commandStatus = new CommandUnsupported();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+Command* SetOptionCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  return new SetOptionCommand(d_flag, d_sexpr);
+}
+
+Command* SetOptionCommand::clone() const {
+  return new SetOptionCommand(d_flag, d_sexpr);
+}
+
+std::string SetOptionCommand::getCommandName() const throw() {
+  return "set-option";
+}
+
+/* class GetOptionCommand */
+
+GetOptionCommand::GetOptionCommand(std::string flag) throw() :
+  d_flag(flag) {
+}
+
+std::string GetOptionCommand::getFlag() const throw() {
+  return d_flag;
+}
+
+void GetOptionCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    SExpr res = smtEngine->getOption(d_flag);
+    d_result = res.toString();
+    d_commandStatus = CommandSuccess::instance();
+  } catch(UnrecognizedOptionException&) {
+    d_commandStatus = new CommandUnsupported();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+std::string GetOptionCommand::getResult() const throw() {
+  return d_result;
+}
+
+void GetOptionCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+  if(! ok()) {
+    this->Command::printResult(out, verbosity);
+  } else if(d_result != "") {
+    out << d_result << endl;
+  }
+}
+
+Command* GetOptionCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  GetOptionCommand* c = new GetOptionCommand(d_flag);
+  c->d_result = d_result;
+  return c;
+}
+
+Command* GetOptionCommand::clone() const {
+  GetOptionCommand* c = new GetOptionCommand(d_flag);
+  c->d_result = d_result;
+  return c;
+}
+
+std::string GetOptionCommand::getCommandName() const throw() {
+  return "get-option";
+}
+
+/* class DatatypeDeclarationCommand */
+
+DatatypeDeclarationCommand::DatatypeDeclarationCommand(const DatatypeType& datatype) throw() :
+  d_datatypes() {
+  d_datatypes.push_back(datatype);
+}
+
+DatatypeDeclarationCommand::DatatypeDeclarationCommand(const std::vector<DatatypeType>& datatypes) throw() :
+  d_datatypes(datatypes) {
+}
+
+const std::vector<DatatypeType>&
+DatatypeDeclarationCommand::getDatatypes() const throw() {
+  return d_datatypes;
+}
+
+void DatatypeDeclarationCommand::invoke(SmtEngine* smtEngine) throw() {
+  d_commandStatus = CommandSuccess::instance();
+}
+
+Command* DatatypeDeclarationCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  throw ExportUnsupportedException
+          ("export of DatatypeDeclarationCommand unsupported");
+}
+
+Command* DatatypeDeclarationCommand::clone() const {
+  return new DatatypeDeclarationCommand(d_datatypes);
+}
+
+std::string DatatypeDeclarationCommand::getCommandName() const throw() {
+  return "declare-datatypes";
+}
+
+/* class RewriteRuleCommand */
+
+RewriteRuleCommand::RewriteRuleCommand(const std::vector<Expr>& vars,
+                                       const std::vector<Expr>& guards,
+                                       Expr head, Expr body,
+                                       const Triggers& triggers) throw() :
+  d_vars(vars), d_guards(guards), d_head(head), d_body(body), d_triggers(triggers) {
+}
+
+RewriteRuleCommand::RewriteRuleCommand(const std::vector<Expr>& vars,
+                                       Expr head, Expr body) throw() :
+  d_vars(vars), d_head(head), d_body(body) {
+}
+
+const std::vector<Expr>& RewriteRuleCommand::getVars() const throw() {
+  return d_vars;
+}
+
+const std::vector<Expr>& RewriteRuleCommand::getGuards() const throw() {
+  return d_guards;
+}
+
+Expr RewriteRuleCommand::getHead() const throw() {
+  return d_head;
+}
+
+Expr RewriteRuleCommand::getBody() const throw() {
+  return d_body;
+}
+
+const RewriteRuleCommand::Triggers& RewriteRuleCommand::getTriggers() const throw() {
+  return d_triggers;
+}
+
+void RewriteRuleCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    ExprManager* em = smtEngine->getExprManager();
+    /** build vars list */
+    Expr vars = em->mkExpr(kind::BOUND_VAR_LIST, d_vars);
+    /** build guards list */
+    Expr guards;
+    if(d_guards.size() == 0) guards = em->mkConst<bool>(true);
+    else if(d_guards.size() == 1) guards = d_guards[0];
+    else guards = em->mkExpr(kind::AND,d_guards);
+    /** build expression */
+    Expr expr;
+    if( d_triggers.empty() ){
+      expr = em->mkExpr(kind::RR_REWRITE,vars,guards,d_head,d_body);
+    } else {
+      /** build triggers list */
+      std::vector<Expr> vtriggers;
+      vtriggers.reserve(d_triggers.size());
+      for(Triggers::const_iterator i = d_triggers.begin(),
+            end = d_triggers.end(); i != end; ++i){
+        vtriggers.push_back(em->mkExpr(kind::INST_PATTERN,*i));
+      }
+      Expr triggers = em->mkExpr(kind::INST_PATTERN_LIST,vtriggers);
+      expr = em->mkExpr(kind::RR_REWRITE,vars,guards,d_head,d_body,triggers);
+    }
+    smtEngine->assertFormula(expr);
+    d_commandStatus = CommandSuccess::instance();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+Command* RewriteRuleCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  /** Convert variables */
+  VExpr vars; vars.reserve(d_vars.size());
+  for(VExpr::iterator i = d_vars.begin(), end = d_vars.end();
+      i == end; ++i){
+    vars.push_back(i->exportTo(exprManager, variableMap));
+  };
+  /** Convert guards */
+  VExpr guards; guards.reserve(d_guards.size());
+  for(VExpr::iterator i = d_guards.begin(), end = d_guards.end();
+      i == end; ++i){
+    guards.push_back(i->exportTo(exprManager, variableMap));
+  };
+  /** Convert triggers */
+  Triggers triggers; triggers.resize(d_triggers.size());
+  for(size_t i = 0, end = d_triggers.size();
+      i < end; ++i){
+    triggers[i].reserve(d_triggers[i].size());
+    for(VExpr::iterator j = d_triggers[i].begin(), jend = d_triggers[i].end();
+        j == jend; ++i){
+      triggers[i].push_back(j->exportTo(exprManager, variableMap));
+    };
+  };
+  /** Convert head and body */
+  Expr head = d_head.exportTo(exprManager, variableMap);
+  Expr body = d_body.exportTo(exprManager, variableMap);
+  /** Create the converted rules */
+  return new RewriteRuleCommand(vars, guards, head, body, triggers);
+}
+
+Command* RewriteRuleCommand::clone() const {
+  return new RewriteRuleCommand(d_vars, d_guards, d_head, d_body, d_triggers);
+}
+
+std::string RewriteRuleCommand::getCommandName() const throw() {
+  return "rewrite-rule";
+}
+
+/* class PropagateRuleCommand */
+
+PropagateRuleCommand::PropagateRuleCommand(const std::vector<Expr>& vars,
+                                           const std::vector<Expr>& guards,
+                                           const std::vector<Expr>& heads,
+                                           Expr body,
+                                           const Triggers& triggers,
+                                           bool deduction) throw() :
+  d_vars(vars), d_guards(guards), d_heads(heads), d_body(body), d_triggers(triggers), d_deduction(deduction) {
+}
+
+PropagateRuleCommand::PropagateRuleCommand(const std::vector<Expr>& vars,
+                                           const std::vector<Expr>& heads,
+                                           Expr body,
+                                           bool deduction) throw() :
+  d_vars(vars), d_heads(heads), d_body(body), d_deduction(deduction) {
+}
+
+const std::vector<Expr>& PropagateRuleCommand::getVars() const throw() {
+  return d_vars;
+}
+
+const std::vector<Expr>& PropagateRuleCommand::getGuards() const throw() {
+  return d_guards;
+}
+
+const std::vector<Expr>& PropagateRuleCommand::getHeads() const throw() {
+  return d_heads;
+}
+
+Expr PropagateRuleCommand::getBody() const throw() {
+  return d_body;
+}
+
+const PropagateRuleCommand::Triggers& PropagateRuleCommand::getTriggers() const throw() {
+  return d_triggers;
+}
+
+bool PropagateRuleCommand::isDeduction() const throw() {
+  return d_deduction;
+}
+
+void PropagateRuleCommand::invoke(SmtEngine* smtEngine) throw() {
+  try {
+    ExprManager* em = smtEngine->getExprManager();
+    /** build vars list */
+    Expr vars = em->mkExpr(kind::BOUND_VAR_LIST, d_vars);
+    /** build guards list */
+    Expr guards;
+    if(d_guards.size() == 0) guards = em->mkConst<bool>(true);
+    else if(d_guards.size() == 1) guards = d_guards[0];
+    else guards = em->mkExpr(kind::AND,d_guards);
+    /** build heads list */
+    Expr heads;
+    if(d_heads.size() == 1) heads = d_heads[0];
+    else heads = em->mkExpr(kind::AND,d_heads);
+    /** build expression */
+    Expr expr;
+    if( d_triggers.empty() ){
+      expr = em->mkExpr(kind::RR_REWRITE,vars,guards,heads,d_body);
+    } else {
+      /** build triggers list */
+      std::vector<Expr> vtriggers;
+      vtriggers.reserve(d_triggers.size());
+      for(Triggers::const_iterator i = d_triggers.begin(),
+            end = d_triggers.end(); i != end; ++i){
+        vtriggers.push_back(em->mkExpr(kind::INST_PATTERN,*i));
+      }
+      Expr triggers = em->mkExpr(kind::INST_PATTERN_LIST,vtriggers);
+      expr = em->mkExpr(kind::RR_REWRITE,vars,guards,heads,d_body,triggers);
+    }
+    smtEngine->assertFormula(expr);
+    d_commandStatus = CommandSuccess::instance();
+  } catch(exception& e) {
+    d_commandStatus = new CommandFailure(e.what());
+  }
+}
+
+Command* PropagateRuleCommand::exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap) {
+  /** Convert variables */
+  VExpr vars; vars.reserve(d_vars.size());
+  for(VExpr::iterator i = d_vars.begin(), end = d_vars.end();
+      i == end; ++i){
+    vars.push_back(i->exportTo(exprManager, variableMap));
+  };
+  /** Convert guards */
+  VExpr guards; guards.reserve(d_guards.size());
+  for(VExpr::iterator i = d_guards.begin(), end = d_guards.end();
+      i == end; ++i){
+    guards.push_back(i->exportTo(exprManager, variableMap));
+  };
+  /** Convert heads */
+  VExpr heads; heads.reserve(d_heads.size());
+  for(VExpr::iterator i = d_heads.begin(), end = d_heads.end();
+      i == end; ++i){
+    heads.push_back(i->exportTo(exprManager, variableMap));
+  };
+  /** Convert triggers */
+  Triggers triggers; triggers.resize(d_triggers.size());
+  for(size_t i = 0, end = d_triggers.size();
+      i < end; ++i){
+    triggers[i].reserve(d_triggers[i].size());
+    for(VExpr::iterator j = d_triggers[i].begin(), jend = d_triggers[i].end();
+        j == jend; ++i){
+      triggers[i].push_back(j->exportTo(exprManager, variableMap));
+    };
+  };
+  /** Convert head and body */
+  Expr body = d_body.exportTo(exprManager, variableMap);
+  /** Create the converted rules */
+  return new PropagateRuleCommand(vars, guards, heads, body, triggers);
+}
+
+Command* PropagateRuleCommand::clone() const {
+  return new PropagateRuleCommand(d_vars, d_guards, d_heads, d_body, d_triggers);
+}
+
+std::string PropagateRuleCommand::getCommandName() const throw() {
+  return "propagate-rule";
+}
+
+/* output stream insertion operator for benchmark statuses */
+std::ostream& operator<<(std::ostream& out,
+                         BenchmarkStatus status) throw() {
+  switch(status) {
+
+  case SMT_SATISFIABLE:
+    return out << "sat";
+
+  case SMT_UNSATISFIABLE:
+    return out << "unsat";
+
+  case SMT_UNKNOWN:
+    return out << "unknown";
+
+  default:
+    return out << "BenchmarkStatus::[UNKNOWNSTATUS!]";
+  }
+}
+
+}/* CVC4 namespace */
diff --git a/src/smt/command.h b/src/smt/command.h
new file mode 100644
index 0000000..db4efd8
--- /dev/null
+++ b/src/smt/command.h
@@ -0,0 +1,942 @@
+/*********************                                                        */
+/*! \file command.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Francois Bobot
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of the command pattern on SmtEngines.
+ **
+ ** Implementation of the command pattern on SmtEngines.  Command
+ ** objects are generated by the parser (typically) to implement the
+ ** commands in parsed input (see Parser::parseNextCommand()), or by
+ ** client code.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__COMMAND_H
+#define __CVC4__COMMAND_H
+
+#include <iosfwd>
+#include <map>
+#include <sstream>
+#include <string>
+#include <vector>
+
+#include "expr/datatype.h"
+#include "expr/expr.h"
+#include "expr/type.h"
+#include "expr/variable_type_map.h"
+#include "proof/unsat_core.h"
+#include "util/proof.h"
+#include "util/result.h"
+#include "util/sexpr.h"
+
+namespace CVC4 {
+
+class SmtEngine;
+class Command;
+class CommandStatus;
+class Model;
+
+std::ostream& operator<<(std::ostream&, const Command&) throw() CVC4_PUBLIC;
+std::ostream& operator<<(std::ostream&, const Command*) throw() CVC4_PUBLIC;
+std::ostream& operator<<(std::ostream&, const CommandStatus&) throw() CVC4_PUBLIC;
+std::ostream& operator<<(std::ostream&, const CommandStatus*) throw() CVC4_PUBLIC;
+
+/** The status an SMT benchmark can have */
+enum BenchmarkStatus {
+  /** Benchmark is satisfiable */
+  SMT_SATISFIABLE,
+  /** Benchmark is unsatisfiable */
+  SMT_UNSATISFIABLE,
+  /** The status of the benchmark is unknown */
+  SMT_UNKNOWN
+};/* enum BenchmarkStatus */
+
+std::ostream& operator<<(std::ostream& out,
+                         BenchmarkStatus status) throw() CVC4_PUBLIC;
+
+/**
+ * IOStream manipulator to print success messages or not.
+ *
+ *   out << Command::printsuccess(false) << CommandSuccess();
+ *
+ * prints nothing, but
+ *
+ *   out << Command::printsuccess(true) << CommandSuccess();
+ *
+ * prints a success message (in a manner appropriate for the current
+ * output language).
+ */
+class CVC4_PUBLIC CommandPrintSuccess {
+  /**
+   * The allocated index in ios_base for our depth setting.
+   */
+  static const int s_iosIndex;
+
+  /**
+   * The default setting, for ostreams that haven't yet had a
+   * setdepth() applied to them.
+   */
+  static const int s_defaultPrintSuccess = false;
+
+  /**
+   * When this manipulator is used, the setting is stored here.
+   */
+  bool d_printSuccess;
+
+public:
+  /**
+   * Construct a CommandPrintSuccess with the given setting.
+   */
+  CommandPrintSuccess(bool printSuccess) throw() : d_printSuccess(printSuccess) {}
+
+  inline void applyPrintSuccess(std::ostream& out) throw() {
+    out.iword(s_iosIndex) = d_printSuccess;
+  }
+
+  static inline bool getPrintSuccess(std::ostream& out) throw() {
+    return out.iword(s_iosIndex);
+  }
+
+  static inline void setPrintSuccess(std::ostream& out, bool printSuccess) throw() {
+    out.iword(s_iosIndex) = printSuccess;
+  }
+
+  /**
+   * Set the print-success state on the output stream for the current
+   * stack scope.  This makes sure the old state is reset on the
+   * stream after normal OR exceptional exit from the scope, using the
+   * RAII C++ idiom.
+   */
+  class Scope {
+    std::ostream& d_out;
+    bool d_oldPrintSuccess;
+
+  public:
+
+    inline Scope(std::ostream& out, bool printSuccess) throw() :
+      d_out(out),
+      d_oldPrintSuccess(CommandPrintSuccess::getPrintSuccess(out)) {
+      CommandPrintSuccess::setPrintSuccess(out, printSuccess);
+    }
+
+    inline ~Scope() throw() {
+      CommandPrintSuccess::setPrintSuccess(d_out, d_oldPrintSuccess);
+    }
+
+  };/* class CommandPrintSuccess::Scope */
+
+};/* class CommandPrintSuccess */
+
+/**
+ * Sets the default print-success setting when pretty-printing an Expr
+ * to an ostream.  Use like this:
+ *
+ *   // let out be an ostream, e an Expr
+ *   out << Expr::setdepth(n) << e << endl;
+ *
+ * The depth stays permanently (until set again) with the stream.
+ */
+inline std::ostream& operator<<(std::ostream& out, CommandPrintSuccess cps) throw() CVC4_PUBLIC;
+inline std::ostream& operator<<(std::ostream& out, CommandPrintSuccess cps) throw() {
+  cps.applyPrintSuccess(out);
+  return out;
+}
+
+class CVC4_PUBLIC CommandStatus {
+protected:
+  // shouldn't construct a CommandStatus (use a derived class)
+  CommandStatus() throw() {}
+public:
+  virtual ~CommandStatus() throw() {}
+  void toStream(std::ostream& out,
+                OutputLanguage language = language::output::LANG_AUTO) const throw();
+  virtual CommandStatus& clone() const = 0;
+};/* class CommandStatus */
+
+class CVC4_PUBLIC CommandSuccess : public CommandStatus {
+  static const CommandSuccess* s_instance;
+public:
+  static const CommandSuccess* instance() throw() { return s_instance; }
+  CommandStatus& clone() const { return const_cast<CommandSuccess&>(*this); }
+};/* class CommandSuccess */
+
+class CVC4_PUBLIC CommandInterrupted : public CommandStatus {
+  static const CommandInterrupted* s_instance;
+public:
+  static const CommandInterrupted* instance() throw() { return s_instance; }
+  CommandStatus& clone() const { return const_cast<CommandInterrupted&>(*this); }
+};/* class CommandInterrupted */
+
+class CVC4_PUBLIC CommandUnsupported : public CommandStatus {
+public:
+  CommandStatus& clone() const { return *new CommandUnsupported(*this); }
+};/* class CommandSuccess */
+
+class CVC4_PUBLIC CommandFailure : public CommandStatus {
+  std::string d_message;
+public:
+  CommandFailure(std::string message) throw() : d_message(message) {}
+  CommandFailure& clone() const { return *new CommandFailure(*this); }
+  ~CommandFailure() throw() {}
+  std::string getMessage() const throw() { return d_message; }
+};/* class CommandFailure */
+
+class CVC4_PUBLIC Command {
+protected:
+  /**
+   * This field contains a command status if the command has been
+   * invoked, or NULL if it has not.  This field is either a
+   * dynamically-allocated pointer, or it's a pointer to the singleton
+   * CommandSuccess instance.  Doing so is somewhat asymmetric, but
+   * it avoids the need to dynamically allocate memory in the common
+   * case of a successful command.
+   */
+  const CommandStatus* d_commandStatus;
+
+  /**
+   * True if this command is "muted"---i.e., don't print "success" on
+   * successful execution.
+   */
+  bool d_muted;
+
+public:
+  typedef CommandPrintSuccess printsuccess;
+
+  Command() throw();
+  Command(const Command& cmd);
+
+  virtual ~Command() throw();
+
+  virtual void invoke(SmtEngine* smtEngine) throw() = 0;
+  virtual void invoke(SmtEngine* smtEngine, std::ostream& out) throw();
+
+  virtual void toStream(std::ostream& out, int toDepth = -1, bool types = false, size_t dag = 1,
+                        OutputLanguage language = language::output::LANG_AUTO) const throw();
+
+  std::string toString() const throw();
+
+  virtual std::string getCommandName() const throw() = 0;
+
+  /**
+   * If false, instruct this Command not to print a success message.
+   */
+  void setMuted(bool muted) throw() { d_muted = muted; }
+
+  /**
+   * Determine whether this Command will print a success message.
+   */
+  bool isMuted() throw() { return d_muted; }
+
+  /**
+   * Either the command hasn't run yet, or it completed successfully
+   * (CommandSuccess, not CommandUnsupported or CommandFailure).
+   */
+  bool ok() const throw();
+
+  /**
+   * The command completed in a failure state (CommandFailure, not
+   * CommandSuccess or CommandUnsupported).
+   */
+  bool fail() const throw();
+
+  /**
+   * The command was ran but was interrupted due to resource limiting.
+   */
+  bool interrupted() const throw();
+
+  /** Get the command status (it's NULL if we haven't run yet). */
+  const CommandStatus* getCommandStatus() const throw() { return d_commandStatus; }
+
+  virtual void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+
+  /**
+   * Maps this Command into one for a different ExprManager, using
+   * variableMap for the translation and extending it with any new
+   * mappings.
+   */
+  virtual Command* exportTo(ExprManager* exprManager,
+                            ExprManagerMapCollection& variableMap) = 0;
+
+  /**
+   * Clone this Command (make a shallow copy).
+   */
+  virtual Command* clone() const = 0;
+
+protected:
+  class ExportTransformer {
+    ExprManager* d_exprManager;
+    ExprManagerMapCollection& d_variableMap;
+  public:
+    ExportTransformer(ExprManager* exprManager, ExprManagerMapCollection& variableMap) :
+      d_exprManager(exprManager),
+      d_variableMap(variableMap) {
+    }
+    Expr operator()(Expr e) {
+      return e.exportTo(d_exprManager, d_variableMap);
+    }
+    Type operator()(Type t) {
+      return t.exportTo(d_exprManager, d_variableMap);
+    }
+  };/* class Command::ExportTransformer */
+};/* class Command */
+
+/**
+ * EmptyCommands are the residue of a command after the parser handles
+ * them (and there's nothing left to do).
+ */
+class CVC4_PUBLIC EmptyCommand : public Command {
+protected:
+  std::string d_name;
+public:
+  EmptyCommand(std::string name = "") throw();
+  ~EmptyCommand() throw() {}
+  std::string getName() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class EmptyCommand */
+
+class CVC4_PUBLIC EchoCommand : public Command {
+protected:
+  std::string d_output;
+public:
+  EchoCommand(std::string output = "") throw();
+  ~EchoCommand() throw() {}
+  std::string getOutput() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine, std::ostream& out) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class EchoCommand */
+
+class CVC4_PUBLIC AssertCommand : public Command {
+protected:
+  Expr d_expr;
+  bool d_inUnsatCore;
+public:
+  AssertCommand(const Expr& e, bool inUnsatCore = true) throw();
+  ~AssertCommand() throw() {}
+  Expr getExpr() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class AssertCommand */
+
+class CVC4_PUBLIC PushCommand : public Command {
+public:
+  ~PushCommand() throw() {}
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class PushCommand */
+
+class CVC4_PUBLIC PopCommand : public Command {
+public:
+  ~PopCommand() throw() {}
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class PopCommand */
+
+class CVC4_PUBLIC DeclarationDefinitionCommand : public Command {
+protected:
+  std::string d_symbol;
+public:
+  DeclarationDefinitionCommand(const std::string& id) throw();
+  ~DeclarationDefinitionCommand() throw() {}
+  virtual void invoke(SmtEngine* smtEngine) throw() = 0;
+  std::string getSymbol() const throw();
+};/* class DeclarationDefinitionCommand */
+
+class CVC4_PUBLIC DeclareFunctionCommand : public DeclarationDefinitionCommand {
+protected:
+  Expr d_func;
+  Type d_type;
+  bool d_printInModel;
+  bool d_printInModelSetByUser;
+public:
+  DeclareFunctionCommand(const std::string& id, Expr func, Type type) throw();
+  ~DeclareFunctionCommand() throw() {}
+  Expr getFunction() const throw();
+  Type getType() const throw();
+  bool getPrintInModel() const throw();
+  bool getPrintInModelSetByUser() const throw();
+  void setPrintInModel( bool p );
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class DeclareFunctionCommand */
+
+class CVC4_PUBLIC DeclareTypeCommand : public DeclarationDefinitionCommand {
+protected:
+  size_t d_arity;
+  Type d_type;
+public:
+  DeclareTypeCommand(const std::string& id, size_t arity, Type t) throw();
+  ~DeclareTypeCommand() throw() {}
+  size_t getArity() const throw();
+  Type getType() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class DeclareTypeCommand */
+
+class CVC4_PUBLIC DefineTypeCommand : public DeclarationDefinitionCommand {
+protected:
+  std::vector<Type> d_params;
+  Type d_type;
+public:
+  DefineTypeCommand(const std::string& id, Type t) throw();
+  DefineTypeCommand(const std::string& id, const std::vector<Type>& params, Type t) throw();
+  ~DefineTypeCommand() throw() {}
+  const std::vector<Type>& getParameters() const throw();
+  Type getType() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class DefineTypeCommand */
+
+class CVC4_PUBLIC DefineFunctionCommand : public DeclarationDefinitionCommand {
+protected:
+  Expr d_func;
+  std::vector<Expr> d_formals;
+  Expr d_formula;
+public:
+  DefineFunctionCommand(const std::string& id, Expr func, Expr formula) throw();
+  DefineFunctionCommand(const std::string& id, Expr func,
+                        const std::vector<Expr>& formals, Expr formula) throw();
+  ~DefineFunctionCommand() throw() {}
+  Expr getFunction() const throw();
+  const std::vector<Expr>& getFormals() const throw();
+  Expr getFormula() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class DefineFunctionCommand */
+
+/**
+ * This differs from DefineFunctionCommand only in that it instructs
+ * the SmtEngine to "remember" this function for later retrieval with
+ * getAssignment().  Used for :named attributes in SMT-LIBv2.
+ */
+class CVC4_PUBLIC DefineNamedFunctionCommand : public DefineFunctionCommand {
+public:
+  DefineNamedFunctionCommand(const std::string& id, Expr func,
+                             const std::vector<Expr>& formals, Expr formula) throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+};/* class DefineNamedFunctionCommand */
+
+/**
+ * The command when an attribute is set by a user.  In SMT-LIBv2 this is done
+ *  via the syntax (! expr :attr)
+ */
+class CVC4_PUBLIC SetUserAttributeCommand : public Command {
+protected:
+  std::string d_attr;
+  Expr d_expr;
+  std::vector<Expr> d_expr_values;
+  std::string d_str_value;
+public:
+  SetUserAttributeCommand( const std::string& attr, Expr expr ) throw();
+  SetUserAttributeCommand( const std::string& attr, Expr expr, std::vector<Expr>& values ) throw();
+  SetUserAttributeCommand( const std::string& attr, Expr expr, const std::string& value ) throw();
+  ~SetUserAttributeCommand() throw() {}
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class SetUserAttributeCommand */
+
+class CVC4_PUBLIC CheckSatCommand : public Command {
+protected:
+  Expr d_expr;
+  Result d_result;
+  bool d_inUnsatCore;
+public:
+  CheckSatCommand() throw();
+  CheckSatCommand(const Expr& expr, bool inUnsatCore = true) throw();
+  ~CheckSatCommand() throw() {}
+  Expr getExpr() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Result getResult() const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class CheckSatCommand */
+
+class CVC4_PUBLIC QueryCommand : public Command {
+protected:
+  Expr d_expr;
+  Result d_result;
+  bool d_inUnsatCore;
+public:
+  QueryCommand(const Expr& e, bool inUnsatCore = true) throw();
+  ~QueryCommand() throw() {}
+  Expr getExpr() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Result getResult() const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class QueryCommand */
+
+class CVC4_PUBLIC CheckSynthCommand : public Command {
+protected:
+  Expr d_expr;
+  Result d_result;
+  bool d_inUnsatCore;
+public:
+  CheckSynthCommand() throw();
+  CheckSynthCommand(const Expr& expr, bool inUnsatCore = true) throw();
+  ~CheckSynthCommand() throw() {}
+  Expr getExpr() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Result getResult() const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class CheckSynthCommand */
+
+// this is TRANSFORM in the CVC presentation language
+class CVC4_PUBLIC SimplifyCommand : public Command {
+protected:
+  Expr d_term;
+  Expr d_result;
+public:
+  SimplifyCommand(Expr term) throw();
+  ~SimplifyCommand() throw() {}
+  Expr getTerm() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Expr getResult() const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class SimplifyCommand */
+
+class CVC4_PUBLIC ExpandDefinitionsCommand : public Command {
+protected:
+  Expr d_term;
+  Expr d_result;
+public:
+  ExpandDefinitionsCommand(Expr term) throw();
+  ~ExpandDefinitionsCommand() throw() {}
+  Expr getTerm() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Expr getResult() const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class ExpandDefinitionsCommand */
+
+class CVC4_PUBLIC GetValueCommand : public Command {
+protected:
+  std::vector<Expr> d_terms;
+  Expr d_result;
+public:
+  GetValueCommand(Expr term) throw();
+  GetValueCommand(const std::vector<Expr>& terms) throw();
+  ~GetValueCommand() throw() {}
+  const std::vector<Expr>& getTerms() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Expr getResult() const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class GetValueCommand */
+
+class CVC4_PUBLIC GetAssignmentCommand : public Command {
+protected:
+  SExpr d_result;
+public:
+  GetAssignmentCommand() throw();
+  ~GetAssignmentCommand() throw() {}
+  void invoke(SmtEngine* smtEngine) throw();
+  SExpr getResult() const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class GetAssignmentCommand */
+
+class CVC4_PUBLIC GetModelCommand : public Command {
+protected:
+  Model* d_result;
+  SmtEngine* d_smtEngine;
+public:
+  GetModelCommand() throw();
+  ~GetModelCommand() throw() {}
+  void invoke(SmtEngine* smtEngine) throw();
+  // Model is private to the library -- for now
+  //Model* getResult() const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class GetModelCommand */
+
+class CVC4_PUBLIC GetProofCommand : public Command {
+protected:
+  Proof* d_result;
+  SmtEngine* d_smtEngine;
+public:
+  GetProofCommand() throw();
+  ~GetProofCommand() throw() {}
+  void invoke(SmtEngine* smtEngine) throw();
+  Proof* getResult() const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class GetProofCommand */
+
+class CVC4_PUBLIC GetInstantiationsCommand : public Command {
+protected:
+  //Instantiations* d_result;
+  SmtEngine* d_smtEngine;
+public:
+  GetInstantiationsCommand() throw();
+  ~GetInstantiationsCommand() throw() {}
+  void invoke(SmtEngine* smtEngine) throw();
+  //Instantiations* getResult() const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class GetInstantiationsCommand */
+
+class CVC4_PUBLIC GetSynthSolutionCommand : public Command {
+protected:
+  SmtEngine* d_smtEngine;
+public:
+  GetSynthSolutionCommand() throw();
+  ~GetSynthSolutionCommand() throw() {}
+  void invoke(SmtEngine* smtEngine) throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class GetSynthSolutionCommand */
+
+class CVC4_PUBLIC GetQuantifierEliminationCommand : public Command {
+protected:
+  Expr d_expr;
+  bool d_doFull;
+  Expr d_result;
+public:
+  GetQuantifierEliminationCommand() throw();
+  GetQuantifierEliminationCommand(const Expr& expr, bool doFull) throw();
+  ~GetQuantifierEliminationCommand() throw() {}
+  Expr getExpr() const throw();
+  bool getDoFull() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Expr getResult() const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class GetQuantifierEliminationCommand */
+
+class CVC4_PUBLIC GetUnsatCoreCommand : public Command {
+protected:
+  UnsatCore d_result;
+  std::map<Expr, std::string> d_names;
+public:
+  GetUnsatCoreCommand() throw();
+  GetUnsatCoreCommand(const std::map<Expr, std::string>& names) throw();
+  ~GetUnsatCoreCommand() throw() {}
+  void invoke(SmtEngine* smtEngine) throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  const UnsatCore& getUnsatCore() const throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class GetUnsatCoreCommand */
+
+class CVC4_PUBLIC GetAssertionsCommand : public Command {
+protected:
+  std::string d_result;
+public:
+  GetAssertionsCommand() throw();
+  ~GetAssertionsCommand() throw() {}
+  void invoke(SmtEngine* smtEngine) throw();
+  std::string getResult() const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class GetAssertionsCommand */
+
+class CVC4_PUBLIC SetBenchmarkStatusCommand : public Command {
+protected:
+  BenchmarkStatus d_status;
+public:
+  SetBenchmarkStatusCommand(BenchmarkStatus status) throw();
+  ~SetBenchmarkStatusCommand() throw() {}
+  BenchmarkStatus getStatus() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class SetBenchmarkStatusCommand */
+
+class CVC4_PUBLIC SetBenchmarkLogicCommand : public Command {
+protected:
+  std::string d_logic;
+public:
+  SetBenchmarkLogicCommand(std::string logic) throw();
+  ~SetBenchmarkLogicCommand() throw() {}
+  std::string getLogic() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class SetBenchmarkLogicCommand */
+
+class CVC4_PUBLIC SetInfoCommand : public Command {
+protected:
+  std::string d_flag;
+  SExpr d_sexpr;
+public:
+  SetInfoCommand(std::string flag, const SExpr& sexpr) throw();
+  ~SetInfoCommand() throw() {}
+  std::string getFlag() const throw();
+  SExpr getSExpr() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class SetInfoCommand */
+
+class CVC4_PUBLIC GetInfoCommand : public Command {
+protected:
+  std::string d_flag;
+  std::string d_result;
+public:
+  GetInfoCommand(std::string flag) throw();
+  ~GetInfoCommand() throw() {}
+  std::string getFlag() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  std::string getResult() const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class GetInfoCommand */
+
+class CVC4_PUBLIC SetOptionCommand : public Command {
+protected:
+  std::string d_flag;
+  SExpr d_sexpr;
+public:
+  SetOptionCommand(std::string flag, const SExpr& sexpr) throw();
+  ~SetOptionCommand() throw() {}
+  std::string getFlag() const throw();
+  SExpr getSExpr() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class SetOptionCommand */
+
+class CVC4_PUBLIC GetOptionCommand : public Command {
+protected:
+  std::string d_flag;
+  std::string d_result;
+public:
+  GetOptionCommand(std::string flag) throw();
+  ~GetOptionCommand() throw() {}
+  std::string getFlag() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  std::string getResult() const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class GetOptionCommand */
+
+class CVC4_PUBLIC DatatypeDeclarationCommand : public Command {
+private:
+  std::vector<DatatypeType> d_datatypes;
+public:
+  DatatypeDeclarationCommand(const DatatypeType& datatype) throw();
+  ~DatatypeDeclarationCommand() throw() {}
+  DatatypeDeclarationCommand(const std::vector<DatatypeType>& datatypes) throw();
+  const std::vector<DatatypeType>& getDatatypes() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class DatatypeDeclarationCommand */
+
+class CVC4_PUBLIC RewriteRuleCommand : public Command {
+public:
+  typedef std::vector< std::vector< Expr > > Triggers;
+protected:
+  typedef std::vector< Expr > VExpr;
+  VExpr d_vars;
+  VExpr d_guards;
+  Expr d_head;
+  Expr d_body;
+  Triggers d_triggers;
+public:
+  RewriteRuleCommand(const std::vector<Expr>& vars,
+                     const std::vector<Expr>& guards,
+                     Expr head,
+                     Expr body,
+                     const Triggers& d_triggers) throw();
+  RewriteRuleCommand(const std::vector<Expr>& vars,
+                     Expr head,
+                     Expr body) throw();
+  ~RewriteRuleCommand() throw() {}
+  const std::vector<Expr>& getVars() const throw();
+  const std::vector<Expr>& getGuards() const throw();
+  Expr getHead() const throw();
+  Expr getBody() const throw();
+  const Triggers& getTriggers() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class RewriteRuleCommand */
+
+class CVC4_PUBLIC PropagateRuleCommand : public Command {
+public:
+  typedef std::vector< std::vector< Expr > > Triggers;
+protected:
+  typedef std::vector< Expr > VExpr;
+  VExpr d_vars;
+  VExpr d_guards;
+  VExpr d_heads;
+  Expr d_body;
+  Triggers d_triggers;
+  bool d_deduction;
+public:
+  PropagateRuleCommand(const std::vector<Expr>& vars,
+                       const std::vector<Expr>& guards,
+                       const std::vector<Expr>& heads,
+                       Expr body,
+                       const Triggers& d_triggers,
+                       /* true if we want a deduction rule */
+                       bool d_deduction = false) throw();
+  PropagateRuleCommand(const std::vector<Expr>& vars,
+                       const std::vector<Expr>& heads,
+                       Expr body,
+                       bool d_deduction = false) throw();
+  ~PropagateRuleCommand() throw() {}
+  const std::vector<Expr>& getVars() const throw();
+  const std::vector<Expr>& getGuards() const throw();
+  const std::vector<Expr>& getHeads() const throw();
+  Expr getBody() const throw();
+  const Triggers& getTriggers() const throw();
+  bool isDeduction() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class PropagateRuleCommand */
+
+class CVC4_PUBLIC ResetCommand : public Command {
+public:
+  ResetCommand() throw() {}
+  ~ResetCommand() throw() {}
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class ResetCommand */
+
+class CVC4_PUBLIC ResetAssertionsCommand : public Command {
+public:
+  ResetAssertionsCommand() throw() {}
+  ~ResetAssertionsCommand() throw() {}
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class ResetAssertionsCommand */
+
+class CVC4_PUBLIC QuitCommand : public Command {
+public:
+  QuitCommand() throw() {}
+  ~QuitCommand() throw() {}
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class QuitCommand */
+
+class CVC4_PUBLIC CommentCommand : public Command {
+  std::string d_comment;
+public:
+  CommentCommand(std::string comment) throw();
+  ~CommentCommand() throw() {}
+  std::string getComment() const throw();
+  void invoke(SmtEngine* smtEngine) throw();
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class CommentCommand */
+
+class CVC4_PUBLIC CommandSequence : public Command {
+private:
+  /** All the commands to be executed (in sequence) */
+  std::vector<Command*> d_commandSequence;
+  /** Next command to be executed */
+  unsigned int d_index;
+public:
+  CommandSequence() throw();
+  ~CommandSequence() throw();
+
+  void addCommand(Command* cmd) throw();
+  void clear() throw();
+
+  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine, std::ostream& out) throw();
+
+  typedef std::vector<Command*>::iterator iterator;
+  typedef std::vector<Command*>::const_iterator const_iterator;
+
+  const_iterator begin() const throw();
+  const_iterator end() const throw();
+
+  iterator begin() throw();
+  iterator end() throw();
+
+  Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
+  Command* clone() const;
+  std::string getCommandName() const throw();
+};/* class CommandSequence */
+
+class CVC4_PUBLIC DeclarationSequence : public CommandSequence {
+public:
+  ~DeclarationSequence() throw() {}
+};/* class DeclarationSequence */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__COMMAND_H */
diff --git a/src/smt/command.i b/src/smt/command.i
new file mode 100644
index 0000000..0c05020
--- /dev/null
+++ b/src/smt/command.i
@@ -0,0 +1,77 @@
+%{
+#include "smt/command.h"
+
+#ifdef SWIGJAVA
+
+#include "bindings/java_iterator_adapter.h"
+#include "bindings/java_stream_adapters.h"
+
+#endif /* SWIGJAVA */
+%}
+
+%ignore CVC4::operator<<(std::ostream&, const Command&) throw();
+%ignore CVC4::operator<<(std::ostream&, const Command*) throw();
+%ignore CVC4::operator<<(std::ostream&, const CommandStatus&) throw();
+%ignore CVC4::operator<<(std::ostream&, const CommandStatus*) throw();
+%ignore CVC4::operator<<(std::ostream&, BenchmarkStatus status) throw();
+%ignore CVC4::operator<<(std::ostream&, CommandPrintSuccess) throw();
+
+%ignore CVC4::GetProofCommand;
+%ignore CVC4::CommandPrintSuccess::Scope;
+
+#ifdef SWIGJAVA
+
+// Instead of CommandSequence::begin() and end(), create an
+// iterator() method on the Java side that returns a Java-style
+// Iterator.
+%ignore CVC4::CommandSequence::begin();
+%ignore CVC4::CommandSequence::end();
+%ignore CVC4::CommandSequence::begin() const;
+%ignore CVC4::CommandSequence::end() const;
+%extend CVC4::CommandSequence {
+  CVC4::JavaIteratorAdapter<CVC4::CommandSequence> iterator() {
+    return CVC4::JavaIteratorAdapter<CVC4::CommandSequence>(*$self);
+  }
+}
+
+// CommandSequence is "iterable" on the Java side
+%typemap(javainterfaces) CVC4::CommandSequence "java.lang.Iterable<edu.nyu.acsys.CVC4.Command>";
+
+// the JavaIteratorAdapter should not be public, and implements Iterator
+%typemap(javaclassmodifiers) CVC4::JavaIteratorAdapter<CVC4::CommandSequence> "class";
+%typemap(javainterfaces) CVC4::JavaIteratorAdapter<CVC4::CommandSequence> "java.util.Iterator<edu.nyu.acsys.CVC4.Command>";
+// add some functions to the Java side (do it here because there's no way to do these in C++)
+%typemap(javacode) CVC4::JavaIteratorAdapter<CVC4::CommandSequence> "
+  public void remove() {
+    throw new java.lang.UnsupportedOperationException();
+  }
+
+  public edu.nyu.acsys.CVC4.Command next() {
+    if(hasNext()) {
+      return getNext();
+    } else {
+      throw new java.util.NoSuchElementException();
+    }
+  }
+"
+// getNext() just allows C++ iterator access from Java-side next(), make it private
+%javamethodmodifiers CVC4::JavaIteratorAdapter<CVC4::CommandSequence>::getNext() "private";
+
+// map the types appropriately
+%typemap(jni) CVC4::CommandSequence::const_iterator::value_type "jobject";
+%typemap(jtype) CVC4::CommandSequence::const_iterator::value_type "edu.nyu.acsys.CVC4.Command";
+%typemap(jstype) CVC4::CommandSequence::const_iterator::value_type "edu.nyu.acsys.CVC4.Command";
+%typemap(javaout) CVC4::CommandSequence::const_iterator::value_type { return $jnicall; }
+
+#endif /* SWIGJAVA */
+
+%include "smt/command.h"
+
+#ifdef SWIGJAVA
+
+%include "bindings/java_iterator_adapter.h"
+%include "bindings/java_stream_adapters.h"
+
+%template(JavaIteratorAdapter_CommandSequence) CVC4::JavaIteratorAdapter<CVC4::CommandSequence>;
+
+#endif /* SWIGJAVA */
diff --git a/src/smt/command_list.cpp b/src/smt/command_list.cpp
new file mode 100644
index 0000000..78e5914
--- /dev/null
+++ b/src/smt/command_list.cpp
@@ -0,0 +1,30 @@
+/*********************                                                        */
+/*! \file command_list.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A context-sensitive list of Commands, and their cleanup
+ **
+ ** A context-sensitive list of Commands, and their cleanup.
+ **/
+
+// we include both of these to make sure they agree on the typedef
+#include "smt/command.h"
+#include "smt/command_list.h"
+#include "smt/smt_engine.h"
+
+namespace CVC4 {
+namespace smt {
+
+void CommandCleanup::operator()(Command** c) {
+  delete *c;
+}
+
+}/* CVC4::smt namespace */
+}/* CVC4 namespace */
diff --git a/src/smt/command_list.h b/src/smt/command_list.h
new file mode 100644
index 0000000..ea6b649
--- /dev/null
+++ b/src/smt/command_list.h
@@ -0,0 +1,39 @@
+/*********************                                                        */
+/*! \file command_list.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A context-sensitive list of Commands, and their cleanup
+ **
+ ** A context-sensitive list of Commands, and their cleanup.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__SMT__COMMAND_LIST_H
+#define __CVC4__SMT__COMMAND_LIST_H
+
+#include "context/cdlist.h"
+
+namespace CVC4 {
+
+class Command;
+
+namespace smt {
+
+struct CommandCleanup {
+  void operator()(Command** c);
+};/* struct CommandCleanup */
+
+typedef context::CDList<Command*, CommandCleanup> CommandList;
+
+}/* CVC4::smt namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__SMT__COMMAND_LIST_H */
diff --git a/src/smt/dump.cpp b/src/smt/dump.cpp
new file mode 100644
index 0000000..ce146da
--- /dev/null
+++ b/src/smt/dump.cpp
@@ -0,0 +1,230 @@
+/*********************                                                        */
+/*! \file dump.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Kshitij Bansal
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Dump utility classes and functions
+ **
+ ** Dump utility classes and functions.
+ **/
+
+#include "smt/dump.h"
+#include "lib/strtok_r.h"
+#include "base/output.h"
+
+namespace CVC4 {
+
+DumpC DumpChannel CVC4_PUBLIC;
+
+std::ostream& DumpC::setStream(std::ostream* os) {
+  ::CVC4::DumpOutChannel.setStream(os);
+  return *os;
+}
+std::ostream& DumpC::getStream() { return ::CVC4::DumpOutChannel.getStream(); }
+std::ostream* DumpC::getStreamPointer() { return ::CVC4::DumpOutChannel.getStreamPointer(); }
+
+
+void DumpC::setDumpFromString(const std::string& optarg) {
+#ifdef CVC4_DUMPING
+  // Make a copy of optarg for strtok_r to use.
+  std::string optargCopy = optarg;
+  char* optargPtr = const_cast<char*>(optargCopy.c_str());
+  char* tokstr = optargPtr;
+  char* toksave;
+  while((optargPtr = strtok_r(tokstr, ",", &toksave)) != NULL) {
+    tokstr = NULL;
+    if(!strcmp(optargPtr, "raw-benchmark")) {
+    } else if(!strcmp(optargPtr, "benchmark")) {
+    } else if(!strcmp(optargPtr, "declarations")) {
+    } else if(!strcmp(optargPtr, "assertions")) {
+      Dump.on("assertions:post-everything");
+    } else if(!strncmp(optargPtr, "assertions:", 11)) {
+      const char* p = optargPtr + 11;
+      if(!strncmp(p, "pre-", 4)) {
+        p += 4;
+      } else if(!strncmp(p, "post-", 5)) {
+        p += 5;
+      } else {
+        throw OptionException(std::string("don't know how to dump `") +
+                              optargPtr + "'.  Please consult --dump help.");
+      }
+      if(!strcmp(p, "everything")) {
+      } else if(!strcmp(p, "definition-expansion")) {
+      } else if(!strcmp(p, "boolean-terms")) {
+      } else if(!strcmp(p, "constrain-subtypes")) {
+      } else if(!strcmp(p, "substitution")) {
+      } else if(!strcmp(p, "bv-to-bool")) {
+      } else if(!strcmp(p, "bool-to-bv")) {
+      } else if(!strcmp(p, "strings-pp")) {
+      } else if(!strcmp(p, "skolem-quant")) {
+      } else if(!strcmp(p, "simplify")) {
+      } else if(!strcmp(p, "static-learning")) {
+      } else if(!strcmp(p, "ite-removal")) {
+      } else if(!strcmp(p, "repeat-simplify")) {
+      } else if(!strcmp(p, "rewrite-apply-to-const")) {
+      } else if(!strcmp(p, "theory-preprocessing")) {
+      } else if(!strcmp(p, "nonclausal")) {
+      } else if(!strcmp(p, "theorypp")) {
+      } else if(!strcmp(p, "itesimp")) {
+      } else if(!strcmp(p, "unconstrained")) {
+      } else if(!strcmp(p, "repeatsimp")) {
+      } else {
+        throw OptionException(std::string("don't know how to dump `") +
+                              optargPtr + "'.  Please consult --dump help.");
+      }
+      Dump.on("assertions");
+    } else if(!strcmp(optargPtr, "skolems")) {
+    } else if(!strcmp(optargPtr, "clauses")) {
+    } else if(!strcmp(optargPtr, "t-conflicts") ||
+              !strcmp(optargPtr, "t-lemmas") ||
+              !strcmp(optargPtr, "t-explanations") ||
+              !strcmp(optargPtr, "bv-rewrites") ||
+              !strcmp(optargPtr, "theory::fullcheck")) {
+      // These are "non-state-dumping" modes.  If state (SAT decisions,
+      // propagations, etc.) is dumped, it will interfere with the validity
+      // of these generated queries.
+      if(Dump.isOn("state")) {
+        throw OptionException(std::string("dump option `") + optargPtr +
+                              "' conflicts with a previous, "
+                              "state-dumping dump option.  You cannot "
+                              "mix stateful and non-stateful dumping modes; "
+                              "see --dump help.");
+      } else {
+        Dump.on("no-permit-state");
+      }
+    } else if(!strcmp(optargPtr, "state") ||
+              !strcmp(optargPtr, "missed-t-conflicts") ||
+              !strcmp(optargPtr, "t-propagations") ||
+              !strcmp(optargPtr, "missed-t-propagations")) {
+      // These are "state-dumping" modes.  If state (SAT decisions,
+      // propagations, etc.) is not dumped, it will interfere with the
+      // validity of these generated queries.
+      if(Dump.isOn("no-permit-state")) {
+        throw OptionException(std::string("dump option `") + optargPtr +
+                              "' conflicts with a previous, "
+                              "non-state-dumping dump option.  You cannot "
+                              "mix stateful and non-stateful dumping modes; "
+                              "see --dump help.");
+      } else {
+        Dump.on("state");
+      }
+    } else if(!strcmp(optargPtr, "help")) {
+      puts(s_dumpHelp.c_str());
+      exit(1);
+    } else if(!strcmp(optargPtr, "bv-abstraction")) {
+      Dump.on("bv-abstraction");
+    } else if(!strcmp(optargPtr, "bv-algebraic")) {
+      Dump.on("bv-algebraic");
+    } else {
+      throw OptionException(std::string("unknown option for --dump: `") +
+                            optargPtr + "'.  Try --dump help.");
+    }
+
+    Dump.on(optargPtr);
+    Dump.on("benchmark");
+    if(strcmp(optargPtr, "benchmark")) {
+      Dump.on("declarations");
+      if(strcmp(optargPtr, "declarations") && strcmp(optargPtr, "raw-benchmark")) {
+        Dump.on("skolems");
+      }
+    }
+  }
+#else /* CVC4_DUMPING */
+  throw OptionException("The dumping feature was disabled in this build of CVC4.");
+#endif /* CVC4_DUMPING */
+}
+
+
+const std::string DumpC::s_dumpHelp = "\
+Dump modes currently supported by the --dump option:\n\
+\n\
+benchmark\n\
++ Dump the benchmark structure (set-logic, push/pop, queries, etc.), but\n\
+  does not include any declarations or assertions.  Implied by all following\n\
+  modes.\n\
+\n\
+declarations\n\
++ Dump user declarations.  Implied by all following modes.\n\
+\n\
+raw-benchmark\n\
++ Dump all user-commands as they are received (including assertions) without\n\
+  any preprocessing and without any internally-created commands.\n\
+\n\
+skolems\n\
++ Dump internally-created skolem variable declarations.  These can\n\
+  arise from preprocessing simplifications, existential elimination,\n\
+  and a number of other things.  Implied by all following modes.\n\
+\n\
+assertions\n\
++ Output the assertions after preprocessing and before clausification.\n\
+  Can also specify \"assertions:pre-PASS\" or \"assertions:post-PASS\",\n\
+  where PASS is one of the preprocessing passes: definition-expansion\n\
+  boolean-terms constrain-subtypes substitution bv-to-bool bool-to-bv\n\
+  strings-pp skolem-quant simplify static-learning ite-removal\n\
+  repeat-simplify rewrite-apply-to-const theory-preprocessing.\n\
+  PASS can also be the special value \"everything\", in which case the\n\
+  assertions are printed before any preprocessing (with\n\
+  \"assertions:pre-everything\") or after all preprocessing completes\n\
+  (with \"assertions:post-everything\").\n\
+\n\
+clauses\n\
++ Do all the preprocessing outlined above, and dump the CNF-converted\n\
+  output\n\
+\n\
+state\n\
++ Dump all contextual assertions (e.g., SAT decisions, propagations..).\n\
+  Implied by all \"stateful\" modes below and conflicts with all\n\
+  non-stateful modes below.\n\
+\n\
+t-conflicts [non-stateful]\n\
++ Output correctness queries for all theory conflicts\n\
+\n\
+missed-t-conflicts [stateful]\n\
++ Output completeness queries for theory conflicts\n\
+\n\
+t-propagations [stateful]\n\
++ Output correctness queries for all theory propagations\n\
+\n\
+missed-t-propagations [stateful]\n\
++ Output completeness queries for theory propagations (LARGE and EXPENSIVE)\n\
+\n\
+t-lemmas [non-stateful]\n\
++ Output correctness queries for all theory lemmas\n\
+\n\
+t-explanations [non-stateful]\n\
++ Output correctness queries for all theory explanations\n\
+\n\
+bv-rewrites [non-stateful]\n\
++ Output correctness queries for all bitvector rewrites\n\
+\n\
+bv-abstraction [non-stateful]\n\
++ Output correctness queries for all bv abstraction \n\
+\n\
+bv-algebraic [non-stateful]\n\
++ Output correctness queries for bv algebraic solver. \n\
+\n\
+theory::fullcheck [non-stateful]\n\
++ Output completeness queries for all full-check effort-level theory checks\n\
+\n\
+Dump modes can be combined with multiple uses of --dump.  Generally you want\n\
+raw-benchmark or, alternatively, one from the assertions category (either\n\
+assertions or clauses), and perhaps one or more stateful or non-stateful modes\n\
+for checking correctness and completeness of decision procedure implementations.\n\
+Stateful modes dump the contextual assertions made by the core solver (all\n\
+decisions and propagations as assertions); this affects the validity of the\n\
+resulting correctness and completeness queries, so of course stateful and\n\
+non-stateful modes cannot be mixed in the same run.\n\
+\n\
+The --output-language option controls the language used for dumping, and\n\
+this allows you to connect CVC4 to another solver implementation via a UNIX\n\
+pipe to perform on-line checking.  The --dump-to option can be used to dump\n\
+to a file.\n\
+";
+
+}/* CVC4 namespace */
diff --git a/src/smt/dump.h b/src/smt/dump.h
new file mode 100644
index 0000000..2abfe54
--- /dev/null
+++ b/src/smt/dump.h
@@ -0,0 +1,123 @@
+/*********************                                                        */
+/*! \file dump.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Dump utility classes and functions
+ **
+ ** Dump utility classes and functions.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__DUMP_H
+#define __CVC4__DUMP_H
+
+#include "base/output.h"
+#include "smt/command.h"
+
+namespace CVC4 {
+
+class CVC4_PUBLIC CVC4dumpstream {
+
+#if defined(CVC4_DUMPING) && !defined(CVC4_MUZZLE)
+  std::ostream* d_os;
+#endif /* CVC4_DUMPING && !CVC4_MUZZLE */
+
+#ifdef CVC4_PORTFOLIO
+  CommandSequence* d_commands;
+#endif /* CVC4_PORTFOLIO */
+
+public:
+  CVC4dumpstream() throw()
+#if defined(CVC4_DUMPING) && !defined(CVC4_MUZZLE) && defined(CVC4_PORTFOLIO)
+    : d_os(NULL), d_commands(NULL)
+#elif defined(CVC4_DUMPING) && !defined(CVC4_MUZZLE)
+    : d_os(NULL)
+#elif defined(CVC4_PORTFOLIO)
+    : d_commands(NULL)
+#endif /* CVC4_PORTFOLIO */
+  { }
+
+  CVC4dumpstream(std::ostream& os, CommandSequence& commands) throw()
+#if defined(CVC4_DUMPING) && !defined(CVC4_MUZZLE) && defined(CVC4_PORTFOLIO)
+    : d_os(&os), d_commands(&commands)
+#elif defined(CVC4_DUMPING) && !defined(CVC4_MUZZLE)
+    : d_os(&os)
+#elif defined(CVC4_PORTFOLIO)
+    : d_commands(&commands)
+#endif /* CVC4_PORTFOLIO */
+  { }
+
+  CVC4dumpstream& operator<<(const Command& c) {
+#if defined(CVC4_DUMPING) && !defined(CVC4_MUZZLE)
+    if(d_os != NULL) {
+      (*d_os) << c << std::endl;
+    }
+#endif
+#if defined(CVC4_PORTFOLIO)
+    if(d_commands != NULL) {
+      d_commands->addCommand(c.clone());
+    }
+#endif
+    return *this;
+  }
+};/* class CVC4dumpstream */
+
+/** The dump class */
+class CVC4_PUBLIC DumpC {
+  std::set<std::string> d_tags;
+  CommandSequence d_commands;
+
+  static const std::string s_dumpHelp;
+
+public:
+  CVC4dumpstream operator()(const char* tag) {
+    if(!d_tags.empty() && d_tags.find(std::string(tag)) != d_tags.end()) {
+      return CVC4dumpstream(getStream(), d_commands);
+    } else {
+      return CVC4dumpstream();
+    }
+  }
+
+  CVC4dumpstream operator()(std::string tag) {
+    if(!d_tags.empty() && d_tags.find(tag) != d_tags.end()) {
+      return CVC4dumpstream(getStream(), d_commands);
+    } else {
+      return CVC4dumpstream();
+    }
+  }
+
+  void clear() { d_commands.clear(); }
+  const CommandSequence& getCommands() const { return d_commands; }
+
+  bool on (const char* tag) { d_tags.insert(std::string(tag)); return true; }
+  bool on (std::string tag) { d_tags.insert(tag); return true; }
+  bool off(const char* tag) { d_tags.erase (std::string(tag)); return false; }
+  bool off(std::string tag) { d_tags.erase (tag); return false; }
+  bool off()                { d_tags.clear(); return false; }
+
+  bool isOn(const char* tag) { return d_tags.find(std::string(tag)) != d_tags.end(); }
+  bool isOn(std::string tag) { return d_tags.find(tag) != d_tags.end(); }
+
+  std::ostream& setStream(std::ostream* os);
+  std::ostream& getStream();
+  std::ostream* getStreamPointer();
+
+  void setDumpFromString(const std::string& optarg);
+};/* class DumpC */
+
+/** The dump singleton */
+extern DumpC DumpChannel CVC4_PUBLIC;
+
+#define Dump ::CVC4::DumpChannel
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__DUMP_H */
diff --git a/src/smt/logic_exception.h b/src/smt/logic_exception.h
new file mode 100644
index 0000000..93db29a
--- /dev/null
+++ b/src/smt/logic_exception.h
@@ -0,0 +1,47 @@
+/*********************                                                        */
+/*! \file logic_exception.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An exception that is thrown when a feature is used outside
+ ** the logic that CVC4 is currently using
+ **
+ ** \brief An exception that is thrown when a feature is used outside
+ ** the logic that CVC4 is currently using (for example, a quantifier
+ ** is used while running in a quantifier-free logic).
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__SMT__LOGIC_EXCEPTION_H
+#define __CVC4__SMT__LOGIC_EXCEPTION_H
+
+#include "base/exception.h"
+
+namespace CVC4 {
+
+class CVC4_PUBLIC LogicException : public CVC4::Exception {
+public:
+  LogicException() :
+    Exception("Feature used while operating in "
+              "incorrect state") {
+  }
+
+  LogicException(const std::string& msg) :
+    Exception(msg) {
+  }
+
+  LogicException(const char* msg) :
+    Exception(msg) {
+  }
+};/* class LogicException */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__SMT__LOGIC_EXCEPTION_H */
diff --git a/src/smt/logic_exception.i b/src/smt/logic_exception.i
new file mode 100644
index 0000000..0c4ab50
--- /dev/null
+++ b/src/smt/logic_exception.i
@@ -0,0 +1,7 @@
+%{
+#include "smt/logic_exception.h"
+%}
+
+%ignore CVC4::LogicException::LogicException(const char*);
+
+%include "smt/logic_exception.h"
diff --git a/src/smt/logic_request.cpp b/src/smt/logic_request.cpp
new file mode 100644
index 0000000..dc6a2d6
--- /dev/null
+++ b/src/smt/logic_request.cpp
@@ -0,0 +1,34 @@
+/*********************                                                        */
+/*! \file logic_request.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+
+
+#include "smt/logic_request.h"
+#include "smt/smt_engine.h"
+
+
+namespace CVC4 {
+
+/** Widen the logic to include the given theory. */
+void LogicRequest::widenLogic(theory::TheoryId id) {
+  d_smt.d_logic.getUnlockedCopy();
+  d_smt.d_logic = d_smt.d_logic.getUnlockedCopy();
+  d_smt.d_logic.enableTheory(id);
+  d_smt.d_logic.lock();
+}
+
+}/* CVC4 namespace */
diff --git a/src/smt/logic_request.h b/src/smt/logic_request.h
new file mode 100644
index 0000000..7b41886
--- /dev/null
+++ b/src/smt/logic_request.h
@@ -0,0 +1,49 @@
+/*********************                                                        */
+/*! \file logic_request.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Martin Brain, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An object to request logic widening in the running SmtEngine
+ **
+ ** An object to request logic widening in the running SmtEngine.  This
+ ** class exists as a proxy between theory code and the SmtEngine, allowing
+ ** a theory to enable another theory in the SmtEngine after initialization
+ ** (thus the usual, public setLogic() cannot be used).  This is mainly to
+ ** support features like uninterpreted divide-by-zero (to support the
+ ** partial function DIVISION), where during theory expansion, the theory
+ ** of uninterpreted functions needs to be added to the logic to support
+ ** partial functions.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__LOGIC_REQUEST_H
+#define __CVC4__LOGIC_REQUEST_H
+
+#include "expr/kind.h"
+
+namespace CVC4 {
+
+class SmtEngine;
+
+class LogicRequest {
+  /** The SmtEngine at play. */
+  SmtEngine& d_smt;
+
+public:
+  LogicRequest(SmtEngine& smt) : d_smt(smt) { }
+
+  /** Widen the logic to include the given theory. */
+  void widenLogic(theory::TheoryId id);
+
+};/* class LogicRequest */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__LOGIC_REQUEST_H */
diff --git a/src/smt/managed_ostreams.cpp b/src/smt/managed_ostreams.cpp
new file mode 100644
index 0000000..cae6ac6
--- /dev/null
+++ b/src/smt/managed_ostreams.cpp
@@ -0,0 +1,192 @@
+/*********************                                                        */
+/*! \file managed_ostreams.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Wrappers to handle memory management of ostreams.
+ **
+ ** This file contains wrappers to handle special cases of managing memory
+ ** related to ostreams.
+ **/
+
+#include "smt/managed_ostreams.h"
+
+#include <ostream>
+
+#include "options/open_ostream.h"
+#include "options/smt_options.h"
+#include "smt/update_ostream.h"
+
+namespace CVC4 {
+
+ManagedOstream::ManagedOstream() : d_managed(NULL) {}
+
+ManagedOstream::~ManagedOstream() {
+  manage(NULL);
+  Assert(d_managed == NULL);
+}
+
+void ManagedOstream::set(const std::string& filename) {
+  std::pair<bool, std::ostream*> pair = open(filename);
+  initialize(pair.second);
+  manage(pair.first ? pair.second : NULL);
+}
+
+std::pair<bool, std::ostream*> ManagedOstream::open(const std::string& filename)
+    const {
+  OstreamOpener opener(getName());
+  addSpecialCases(&opener);
+  return opener.open(filename);
+}
+
+void ManagedOstream::manage(std::ostream* new_managed_value) {
+  if(d_managed == new_managed_value){
+    // This is a no-op.
+  } else {
+    Assert(d_managed != new_managed_value);
+    std::ostream* old_managed_value = d_managed;
+    d_managed = new_managed_value;
+    if(old_managed_value != NULL){
+      delete old_managed_value;
+    }
+  }
+}
+
+ManagedDumpOStream::~ManagedDumpOStream() {
+  if(Dump.getStreamPointer() == getManagedOstream()) {
+    Dump.setStream(&null_os);
+  }
+}
+
+std::string ManagedDumpOStream::defaultSource() const{
+  return options::dumpToFileName();
+}
+
+
+void ManagedDumpOStream::initialize(std::ostream* outStream) {
+#ifdef CVC4_DUMPING
+  DumpOstreamUpdate dumpGetStream;
+  dumpGetStream.apply(outStream);
+#else /* CVC4_DUMPING */
+  throw OptionException(
+      "The dumping feature was disabled in this build of CVC4.");
+#endif /* CVC4_DUMPING */
+}
+
+void ManagedDumpOStream::addSpecialCases(OstreamOpener* opener) const {
+  opener->addSpecialCase("-", &DumpOutC::dump_cout);
+}
+
+ManagedRegularOutputChannel::~ManagedRegularOutputChannel() {
+  // Set all ostream that may still be using the old value of this channel
+  // to null_os. Consult RegularOutputChannelListener for the list of
+  // channels.
+  if(options::err() == getManagedOstream()){
+    options::err.set(&null_os);
+  }
+}
+
+std::string ManagedRegularOutputChannel::defaultSource() const {
+  return options::regularChannelName();
+}
+
+void ManagedRegularOutputChannel::initialize(std::ostream* outStream) {
+  OptionsErrOstreamUpdate optionsErrOstreamUpdate;
+  optionsErrOstreamUpdate.apply(outStream);
+}
+
+void ManagedRegularOutputChannel::addSpecialCases(OstreamOpener* opener)
+    const {
+  opener->addSpecialCase("stdout", &std::cout);
+  opener->addSpecialCase("stderr", &std::cerr);
+}
+
+ManagedDiagnosticOutputChannel::~ManagedDiagnosticOutputChannel() {
+  // Set all ostreams that may still be using the old value of this channel
+  // to null_os. Consult DiagnosticOutputChannelListener for the list of
+  // channels.
+  if(options::err() == getManagedOstream()){
+    options::err.set(&null_os);
+  }
+
+  if(Debug.getStreamPointer() == getManagedOstream()) {
+    Debug.setStream(&null_os);
+  }
+  if(Warning.getStreamPointer() == getManagedOstream()){
+    Warning.setStream(&null_os);
+  }
+  if(Message.getStreamPointer() == getManagedOstream()){
+    Message.setStream(&null_os);
+  }
+  if(Notice.getStreamPointer() == getManagedOstream()){
+    Notice.setStream(&null_os);
+  }
+  if(Chat.getStreamPointer() == getManagedOstream()){
+    Chat.setStream(&null_os);
+  }
+  if(Trace.getStreamPointer() == getManagedOstream()){
+    Trace.setStream(&null_os);
+  }
+}
+
+
+std::string ManagedDiagnosticOutputChannel::defaultSource() const {
+  return options::diagnosticChannelName();
+}
+void ManagedDiagnosticOutputChannel::initialize(std::ostream* outStream) {
+  DebugOstreamUpdate debugOstreamUpdate;
+  debugOstreamUpdate.apply(outStream);
+  WarningOstreamUpdate warningOstreamUpdate;
+  warningOstreamUpdate.apply(outStream);
+  MessageOstreamUpdate messageOstreamUpdate;
+  messageOstreamUpdate.apply(outStream);
+  NoticeOstreamUpdate noticeOstreamUpdate;
+  noticeOstreamUpdate.apply(outStream);
+  ChatOstreamUpdate chatOstreamUpdate;
+  chatOstreamUpdate.apply(outStream);
+  TraceOstreamUpdate traceOstreamUpdate;
+  traceOstreamUpdate.apply(outStream);
+  OptionsErrOstreamUpdate optionsErrOstreamUpdate;
+  optionsErrOstreamUpdate.apply(outStream);
+}
+
+void ManagedDiagnosticOutputChannel::addSpecialCases(OstreamOpener* opener)
+    const {
+  opener->addSpecialCase("stdout", &std::cout);
+  opener->addSpecialCase("stderr", &std::cerr);
+}
+
+
+ManagedReplayLogOstream::ManagedReplayLogOstream() : d_replayLog(NULL) {}
+ManagedReplayLogOstream::~ManagedReplayLogOstream(){
+  if(d_replayLog != NULL) {
+    (*d_replayLog) << std::flush;
+  }
+}
+
+std::string ManagedReplayLogOstream::defaultSource() const {
+  return options::replayLogFilename();
+}
+
+void ManagedReplayLogOstream::initialize(std::ostream* outStream) {
+  if(outStream != NULL){
+    *outStream << language::SetLanguage(options::outputLanguage())
+               << expr::ExprSetDepth(-1);
+  }
+  /* Do this regardless of managing the memory. */
+  d_replayLog = outStream;
+}
+
+/** Adds special cases to an ostreamopener. */
+void ManagedReplayLogOstream::addSpecialCases(OstreamOpener* opener) const {
+  opener->addSpecialCase("-", &std::cout);
+}
+
+
+}/* CVC4 namespace */
diff --git a/src/smt/managed_ostreams.h b/src/smt/managed_ostreams.h
new file mode 100644
index 0000000..56c517a
--- /dev/null
+++ b/src/smt/managed_ostreams.h
@@ -0,0 +1,181 @@
+/*********************                                                        */
+/*! \file managed_ostreams.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Wrappers to handle memory management of ostreams.
+ **
+ ** This file contains wrappers to handle special cases of managing memory
+ ** related to ostreams.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__MANAGED_OSTREAMS_H
+#define __CVC4__MANAGED_OSTREAMS_H
+
+#include <ostream>
+
+#include "options/open_ostream.h"
+#include "smt/update_ostream.h"
+
+namespace CVC4 {
+
+/** This abstracts the management of ostream memory and initialization. */
+class ManagedOstream {
+ public:
+  /** Initially getManagedOstream() == NULL. */
+  ManagedOstream();
+  virtual ~ManagedOstream();
+
+  /** Returns the pointer to the managed ostream. */
+  std::ostream* getManagedOstream() const { return d_managed; }
+
+  /** Returns the name of the ostream geing managed. */
+  virtual const char* getName() const = 0;
+
+  /**
+   * Set opens a file with filename, initializes the stream.
+   * If the opened ostream is marked as managed, this calls manage(stream).
+   * If the opened ostream is not marked as managed, this calls manage(NULL).
+   */
+  void set(const std::string& filename);
+
+  /** If this is associated with an option, return the string value. */
+  virtual std::string defaultSource() const { return ""; }
+
+ protected:
+
+  /**
+   * Opens an ostream using OstreamOpener with the name getName() with the
+   * special cases added by addSpecialCases().
+   */
+  std::pair<bool, std::ostream*> open(const std::string& filename) const;
+
+  /**
+   * Updates the value of managed pointer. Whenever this changes,
+   * beforeRelease() is called on the old value.
+   */
+  void manage(std::ostream* new_managed_value);
+
+  /** Initializes an output stream. Not necessarily managed. */
+  virtual void initialize(std::ostream* outStream) {}
+
+  /** Adds special cases to an ostreamopener. */
+  virtual void addSpecialCases(OstreamOpener* opener) const {}
+
+ private:
+  std::ostream* d_managed;
+}; /* class ManagedOstream */
+
+class SetToDefaultSourceListener : public Listener {
+ public:
+  SetToDefaultSourceListener(ManagedOstream* managedOstream)
+      : d_managedOstream(managedOstream){}
+
+  virtual void notify() {
+    d_managedOstream->set(d_managedOstream->defaultSource());
+  }
+
+ private:
+  ManagedOstream* d_managedOstream;
+};
+
+/**
+ * This controls the memory associated with --dump-to.
+ * This is is assumed to recieve a set whenever diagnosticChannelName
+ * is updated.
+ */
+class ManagedDumpOStream : public ManagedOstream {
+ public:
+  ManagedDumpOStream(){}
+  ~ManagedDumpOStream();
+
+  virtual const char* getName() const { return "dump-to"; }
+  virtual std::string defaultSource() const;
+
+ protected:
+  /** Initializes an output stream. Not necessarily managed. */
+  virtual void initialize(std::ostream* outStream);
+
+  /** Adds special cases to an ostreamopener. */
+  virtual void addSpecialCases(OstreamOpener* opener) const;
+};/* class ManagedDumpOStream */
+
+/**
+ * When d_managedRegularChannel is non-null, it owns the memory allocated
+ * with the regular-output-channel. This is set when
+ * options::regularChannelName is set.
+ */
+class ManagedRegularOutputChannel : public ManagedOstream {
+ public:
+  ManagedRegularOutputChannel(){}
+
+  /** Assumes Options are in scope. */
+  ~ManagedRegularOutputChannel();
+
+  virtual const char* getName() const { return "regular-output-channel"; }
+  virtual std::string defaultSource() const;
+
+ protected:
+  /** Initializes an output stream. Not necessarily managed. */
+  virtual void initialize(std::ostream* outStream);
+
+  /** Adds special cases to an ostreamopener. */
+  virtual void addSpecialCases(OstreamOpener* opener) const;
+};/* class ManagedRegularOutputChannel */
+
+
+/**
+ * This controls the memory associated with diagnostic-output-channel.
+ * This is is assumed to recieve a set whenever options::diagnosticChannelName
+ * is updated.
+ */
+class ManagedDiagnosticOutputChannel : public ManagedOstream {
+ public:
+  ManagedDiagnosticOutputChannel(){}
+
+  /** Assumes Options are in scope. */
+  ~ManagedDiagnosticOutputChannel();
+
+  virtual const char* getName() const { return "diagnostic-output-channel"; }
+  virtual std::string defaultSource() const;
+
+ protected:
+  /** Initializes an output stream. Not necessarily managed. */
+  virtual void initialize(std::ostream* outStream);
+
+  /** Adds special cases to an ostreamopener. */
+  virtual void addSpecialCases(OstreamOpener* opener) const;
+};/* class ManagedRegularOutputChannel */
+
+/** This controls the memory associated with replay-log. */
+class ManagedReplayLogOstream : public ManagedOstream {
+ public:
+  ManagedReplayLogOstream();
+  ~ManagedReplayLogOstream();
+
+  std::ostream* getReplayLog() const { return d_replayLog; }
+  virtual const char* getName() const { return "replay-log"; }
+  virtual std::string defaultSource() const;
+
+ protected:
+  /** Initializes an output stream. Not necessarily managed. */
+  virtual void initialize(std::ostream* outStream);
+
+  /** Adds special cases to an ostreamopener. */
+  virtual void addSpecialCases(OstreamOpener* opener) const;
+
+ private:
+  std::ostream* d_replayLog;
+};/* class ManagedRegularOutputChannel */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__MANAGED_OSTREAMS_H */
diff --git a/src/smt/model.cpp b/src/smt/model.cpp
new file mode 100644
index 0000000..a388623
--- /dev/null
+++ b/src/smt/model.cpp
@@ -0,0 +1,55 @@
+/*********************                                                        */
+/*! \file model.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief implementation of Model class
+ **/
+
+#include "smt/model.h"
+
+#include <vector>
+
+#include "expr/expr_iomanip.h"
+#include "options/base_options.h"
+#include "printer/printer.h"
+#include "smt/command.h"
+#include "smt/command_list.h"
+#include "smt/smt_engine_scope.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+std::ostream& operator<<(std::ostream& out, const Model& m) {
+  smt::SmtScope smts(&m.d_smt);
+  expr::ExprDag::Scope scope(out, false);
+  Printer::getPrinter(options::outputLanguage())->toStream(out, m);
+  return out;
+}
+
+Model::Model() :
+  d_smt(*smt::currentSmtEngine()) {
+}
+
+size_t Model::getNumCommands() const {
+  return d_smt.d_modelCommands->size() + d_smt.d_modelGlobalCommands.size();
+}
+
+const Command* Model::getCommand(size_t i) const {
+  Assert(i < getNumCommands());
+  // index the global commands first, then the locals
+  if(i < d_smt.d_modelGlobalCommands.size()) {
+    return d_smt.d_modelGlobalCommands[i];
+  } else {
+    return (*d_smt.d_modelCommands)[i - d_smt.d_modelGlobalCommands.size()];
+  }
+}
+
+}/* CVC4 namespace */
diff --git a/src/smt/model.h b/src/smt/model.h
new file mode 100644
index 0000000..fd31655
--- /dev/null
+++ b/src/smt/model.h
@@ -0,0 +1,83 @@
+/*********************                                                        */
+/*! \file model.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Model class
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__MODEL_H
+#define __CVC4__MODEL_H
+
+#include <iosfwd>
+#include <vector>
+
+#include "expr/expr.h"
+#include "util/cardinality.h"
+
+namespace CVC4 {
+
+class Command;
+class SmtEngine;
+class Model;
+
+std::ostream& operator<<(std::ostream&, const Model&);
+
+class Model {
+  friend std::ostream& operator<<(std::ostream&, const Model&);
+  friend class SmtEngine;
+
+  /** the input name (file name, etc.) this model is associated to */
+  std::string d_inputName;
+
+protected:
+  /** The SmtEngine we're associated with */
+  SmtEngine& d_smt;
+
+  /** construct the base class; users cannot do this, only CVC4 internals */
+  Model();
+
+public:
+  /** virtual destructor */
+  virtual ~Model() { }
+  /** get number of commands to report */
+  size_t getNumCommands() const;
+  /** get command */
+  const Command* getCommand(size_t i) const;
+  /** get the smt engine that this model is hooked up to */
+  SmtEngine* getSmtEngine() { return &d_smt; }
+  /** get the smt engine (as a pointer-to-const) that this model is hooked up to */
+  const SmtEngine* getSmtEngine() const { return &d_smt; }
+  /** get the input name (file name, etc.) this model is associated to */
+  std::string getInputName() const { return d_inputName; }
+public:
+  /** Check whether this expr is a don't-care in the model */
+  virtual bool isDontCare(Expr expr) const { return false; }
+  /** get value for expression */
+  virtual Expr getValue(Expr expr) const = 0;
+  /** get cardinality for sort */
+  virtual Cardinality getCardinality(Type t) const = 0;
+  /** print comments */
+  virtual void getComments(std::ostream& out) const {}
+  /** get heap model (for separation logic) */
+  virtual bool getHeapModel( Expr& h, Expr& ne ) const { return false; }
+};/* class Model */
+
+class ModelBuilder {
+public:
+  ModelBuilder() { }
+  virtual ~ModelBuilder() { }
+  virtual void buildModel(Model* m, bool fullModel) = 0;
+};/* class ModelBuilder */
+
+}/* CVC4 namespace */
+
+#endif  /* __CVC4__MODEL_H */
diff --git a/src/smt/smt_engine.cpp b/src/smt/smt_engine.cpp
new file mode 100644
index 0000000..2aaf435
--- /dev/null
+++ b/src/smt/smt_engine.cpp
@@ -0,0 +1,5520 @@
+/*********************                                                        */
+/*! \file smt_engine.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Clark Barrett, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The main entry point into the CVC4 library's SMT interface
+ **
+ ** The main entry point into the CVC4 library's SMT interface.
+ **/
+
+#include "smt/smt_engine.h"
+
+#include <algorithm>
+#include <cctype>
+#include <ext/hash_map>
+#include <iterator>
+#include <sstream>
+#include <stack>
+#include <string>
+#include <utility>
+#include <vector>
+
+#include "base/configuration.h"
+#include "base/configuration_private.h"
+#include "base/exception.h"
+#include "base/listener.h"
+#include "base/modal_exception.h"
+#include "base/output.h"
+#include "context/cdhashset.h"
+#include "context/cdlist.h"
+#include "context/context.h"
+#include "decision/decision_engine.h"
+#include "expr/attribute.h"
+#include "expr/expr.h"
+#include "expr/kind.h"
+#include "expr/metakind.h"
+#include "expr/node.h"
+#include "expr/node_builder.h"
+#include "expr/node_self_iterator.h"
+#include "options/arith_options.h"
+#include "options/arrays_options.h"
+#include "options/base_options.h"
+#include "options/booleans_options.h"
+#include "options/bv_options.h"
+#include "options/datatypes_options.h"
+#include "options/decision_mode.h"
+#include "options/decision_options.h"
+#include "options/main_options.h"
+#include "options/open_ostream.h"
+#include "options/option_exception.h"
+#include "options/printer_options.h"
+#include "options/proof_options.h"
+#include "options/prop_options.h"
+#include "options/quantifiers_options.h"
+#include "options/set_language.h"
+#include "options/smt_options.h"
+#include "options/strings_options.h"
+#include "options/theory_options.h"
+#include "options/uf_options.h"
+#include "printer/printer.h"
+#include "proof/proof.h"
+#include "proof/proof_manager.h"
+#include "proof/proof_manager.h"
+#include "proof/theory_proof.h"
+#include "proof/unsat_core.h"
+#include "prop/prop_engine.h"
+#include "smt/command.h"
+#include "smt/command_list.h"
+#include "smt/term_formula_removal.h"
+#include "smt/logic_request.h"
+#include "smt/managed_ostreams.h"
+#include "smt/smt_engine_scope.h"
+#include "smt/update_ostream.h"
+#include "smt_util/boolean_simplification.h"
+#include "smt_util/nary_builder.h"
+#include "smt_util/node_visitor.h"
+#include "theory/arith/pseudoboolean_proc.h"
+#include "theory/booleans/circuit_propagator.h"
+#include "theory/bv/bvintropow2.h"
+#include "theory/bv/theory_bv_rewriter.h"
+#include "theory/logic_info.h"
+#include "theory/quantifiers/ce_guided_instantiation.h"
+#include "theory/quantifiers/fun_def_process.h"
+#include "theory/quantifiers/macros.h"
+#include "theory/quantifiers/quantifiers_rewriter.h"
+#include "theory/sort_inference.h"
+#include "theory/strings/theory_strings.h"
+#include "theory/substitutions.h"
+#include "theory/theory_engine.h"
+#include "theory/theory_model.h"
+#include "theory/theory_traits.h"
+#include "util/hash.h"
+#include "util/proof.h"
+#include "util/resource_manager.h"
+#include "options/sep_options.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::smt;
+using namespace CVC4::prop;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+
+namespace CVC4 {
+namespace smt {
+
+struct DeleteCommandFunction : public std::unary_function<const Command*, void>
+{
+  void operator()(const Command* command) { delete command; }
+};
+
+void DeleteAndClearCommandVector(std::vector<Command*>& commands) {
+  std::for_each(commands.begin(), commands.end(), DeleteCommandFunction());
+  commands.clear();
+}
+
+/** Useful for counting the number of recursive calls. */
+class ScopeCounter {
+private:
+  unsigned& d_depth;
+public:
+  ScopeCounter(unsigned& d) : d_depth(d) {
+    ++d_depth;
+  }
+  ~ScopeCounter(){
+    --d_depth;
+  }
+};
+
+/**
+ * Representation of a defined function.  We keep these around in
+ * SmtEngine to permit expanding definitions late (and lazily), to
+ * support getValue() over defined functions, to support user output
+ * in terms of defined functions, etc.
+ */
+class DefinedFunction {
+  Node d_func;
+  vector<Node> d_formals;
+  Node d_formula;
+public:
+  DefinedFunction() {}
+  DefinedFunction(Node func, vector<Node> formals, Node formula) :
+    d_func(func),
+    d_formals(formals),
+    d_formula(formula) {
+  }
+  Node getFunction() const { return d_func; }
+  vector<Node> getFormals() const { return d_formals; }
+  Node getFormula() const { return d_formula; }
+};/* class DefinedFunction */
+
+class AssertionPipeline {
+  vector<Node> d_nodes;
+
+public:
+
+  size_t size() const { return d_nodes.size(); }
+
+  void resize(size_t n) { d_nodes.resize(n); }
+  void clear() { d_nodes.clear(); }
+
+  Node& operator[](size_t i) { return d_nodes[i]; }
+  const Node& operator[](size_t i) const { return d_nodes[i]; }
+  void push_back(Node n) { d_nodes.push_back(n); }
+
+  vector<Node>& ref() { return d_nodes; }
+  const vector<Node>& ref() const { return d_nodes; }
+
+  void replace(size_t i, Node n) {
+    PROOF( ProofManager::currentPM()->addDependence(n, d_nodes[i]); );
+    d_nodes[i] = n;
+  }
+};/* class AssertionPipeline */
+
+struct SmtEngineStatistics {
+  /** time spent in definition-expansion */
+  TimerStat d_definitionExpansionTime;
+  /** time spent in non-clausal simplification */
+  TimerStat d_nonclausalSimplificationTime;
+  /** 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;
+  /** time spent in simplifying ITEs */
+  TimerStat d_simpITETime;
+  /** time spent in simplifying ITEs */
+  TimerStat d_unconstrainedSimpTime;
+  /** time spent removing ITEs */
+  TimerStat d_iteRemovalTime;
+  /** time spent in theory preprocessing */
+  TimerStat d_theoryPreprocessTime;
+  /** time spent in theory preprocessing */
+  TimerStat d_rewriteApplyToConstTime;
+  /** time spent converting to CNF */
+  TimerStat d_cnfConversionTime;
+  /** Num of assertions before ite removal */
+  IntStat d_numAssertionsPre;
+  /** Num of assertions after ite removal */
+  IntStat d_numAssertionsPost;
+  /** time spent in checkModel() */
+  TimerStat d_checkModelTime;
+  /** time spent in checkProof() */
+  TimerStat d_checkProofTime;
+  /** time spent in checkUnsatCore() */
+  TimerStat d_checkUnsatCoreTime;
+  /** time spent in PropEngine::checkSat() */
+  TimerStat d_solveTime;
+  /** time spent in pushing/popping */
+  TimerStat d_pushPopTime;
+  /** time spent in processAssertions() */
+  TimerStat d_processAssertionsTime;
+
+  /** Has something simplified to false? */
+  IntStat d_simplifiedToFalse;
+  /** Number of resource units spent. */
+  ReferenceStat<uint64_t> d_resourceUnitsUsed;
+
+  SmtEngineStatistics() :
+    d_definitionExpansionTime("smt::SmtEngine::definitionExpansionTime"),
+    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"),
+    d_unconstrainedSimpTime("smt::SmtEngine::unconstrainedSimpTime"),
+    d_iteRemovalTime("smt::SmtEngine::iteRemovalTime"),
+    d_theoryPreprocessTime("smt::SmtEngine::theoryPreprocessTime"),
+    d_rewriteApplyToConstTime("smt::SmtEngine::rewriteApplyToConstTime"),
+    d_cnfConversionTime("smt::SmtEngine::cnfConversionTime"),
+    d_numAssertionsPre("smt::SmtEngine::numAssertionsPreITERemoval", 0),
+    d_numAssertionsPost("smt::SmtEngine::numAssertionsPostITERemoval", 0),
+    d_checkModelTime("smt::SmtEngine::checkModelTime"),
+    d_checkProofTime("smt::SmtEngine::checkProofTime"),
+    d_checkUnsatCoreTime("smt::SmtEngine::checkUnsatCoreTime"),
+    d_solveTime("smt::SmtEngine::solveTime"),
+    d_pushPopTime("smt::SmtEngine::pushPopTime"),
+    d_processAssertionsTime("smt::SmtEngine::processAssertionsTime"),
+    d_simplifiedToFalse("smt::SmtEngine::simplifiedToFalse", 0),
+    d_resourceUnitsUsed("smt::SmtEngine::resourceUnitsUsed")
+ {
+
+    smtStatisticsRegistry()->registerStat(&d_definitionExpansionTime);
+    smtStatisticsRegistry()->registerStat(&d_nonclausalSimplificationTime);
+    smtStatisticsRegistry()->registerStat(&d_miplibPassTime);
+    smtStatisticsRegistry()->registerStat(&d_numMiplibAssertionsRemoved);
+    smtStatisticsRegistry()->registerStat(&d_numConstantProps);
+    smtStatisticsRegistry()->registerStat(&d_staticLearningTime);
+    smtStatisticsRegistry()->registerStat(&d_simpITETime);
+    smtStatisticsRegistry()->registerStat(&d_unconstrainedSimpTime);
+    smtStatisticsRegistry()->registerStat(&d_iteRemovalTime);
+    smtStatisticsRegistry()->registerStat(&d_theoryPreprocessTime);
+    smtStatisticsRegistry()->registerStat(&d_rewriteApplyToConstTime);
+    smtStatisticsRegistry()->registerStat(&d_cnfConversionTime);
+    smtStatisticsRegistry()->registerStat(&d_numAssertionsPre);
+    smtStatisticsRegistry()->registerStat(&d_numAssertionsPost);
+    smtStatisticsRegistry()->registerStat(&d_checkModelTime);
+    smtStatisticsRegistry()->registerStat(&d_checkProofTime);
+    smtStatisticsRegistry()->registerStat(&d_checkUnsatCoreTime);
+    smtStatisticsRegistry()->registerStat(&d_solveTime);
+    smtStatisticsRegistry()->registerStat(&d_pushPopTime);
+    smtStatisticsRegistry()->registerStat(&d_processAssertionsTime);
+    smtStatisticsRegistry()->registerStat(&d_simplifiedToFalse);
+    smtStatisticsRegistry()->registerStat(&d_resourceUnitsUsed);
+  }
+
+  ~SmtEngineStatistics() {
+    smtStatisticsRegistry()->unregisterStat(&d_definitionExpansionTime);
+    smtStatisticsRegistry()->unregisterStat(&d_nonclausalSimplificationTime);
+    smtStatisticsRegistry()->unregisterStat(&d_miplibPassTime);
+    smtStatisticsRegistry()->unregisterStat(&d_numMiplibAssertionsRemoved);
+    smtStatisticsRegistry()->unregisterStat(&d_numConstantProps);
+    smtStatisticsRegistry()->unregisterStat(&d_staticLearningTime);
+    smtStatisticsRegistry()->unregisterStat(&d_simpITETime);
+    smtStatisticsRegistry()->unregisterStat(&d_unconstrainedSimpTime);
+    smtStatisticsRegistry()->unregisterStat(&d_iteRemovalTime);
+    smtStatisticsRegistry()->unregisterStat(&d_theoryPreprocessTime);
+    smtStatisticsRegistry()->unregisterStat(&d_rewriteApplyToConstTime);
+    smtStatisticsRegistry()->unregisterStat(&d_cnfConversionTime);
+    smtStatisticsRegistry()->unregisterStat(&d_numAssertionsPre);
+    smtStatisticsRegistry()->unregisterStat(&d_numAssertionsPost);
+    smtStatisticsRegistry()->unregisterStat(&d_checkModelTime);
+    smtStatisticsRegistry()->unregisterStat(&d_checkProofTime);
+    smtStatisticsRegistry()->unregisterStat(&d_checkUnsatCoreTime);
+    smtStatisticsRegistry()->unregisterStat(&d_solveTime);
+    smtStatisticsRegistry()->unregisterStat(&d_pushPopTime);
+    smtStatisticsRegistry()->unregisterStat(&d_processAssertionsTime);
+    smtStatisticsRegistry()->unregisterStat(&d_simplifiedToFalse);
+    smtStatisticsRegistry()->unregisterStat(&d_resourceUnitsUsed);
+  }
+};/* struct SmtEngineStatistics */
+
+
+class SoftResourceOutListener : public Listener {
+ public:
+  SoftResourceOutListener(SmtEngine& smt) : d_smt(&smt) {}
+  virtual void notify() {
+    SmtScope scope(d_smt);
+    Assert(smt::smtEngineInScope());
+    d_smt->interrupt();
+  }
+ private:
+  SmtEngine* d_smt;
+}; /* class SoftResourceOutListener */
+
+
+class HardResourceOutListener : public Listener {
+ public:
+  HardResourceOutListener(SmtEngine& smt) : d_smt(&smt) {}
+  virtual void notify() {
+    SmtScope scope(d_smt);
+    theory::Rewriter::clearCaches();
+  }
+ private:
+  SmtEngine* d_smt;
+}; /* class HardResourceOutListener */
+
+class SetLogicListener : public Listener {
+ public:
+  SetLogicListener(SmtEngine& smt) : d_smt(&smt) {}
+  virtual void notify() {
+    LogicInfo inOptions(options::forceLogicString());
+    d_smt->setLogic(inOptions);
+  }
+ private:
+  SmtEngine* d_smt;
+}; /* class SetLogicListener */
+
+class BeforeSearchListener : public Listener {
+ public:
+  BeforeSearchListener(SmtEngine& smt) : d_smt(&smt) {}
+  virtual void notify() {
+    d_smt->beforeSearch();
+  }
+ private:
+  SmtEngine* d_smt;
+}; /* class BeforeSearchListener */
+
+class UseTheoryListListener : public Listener {
+ public:
+  UseTheoryListListener(TheoryEngine* theoryEngine)
+      : d_theoryEngine(theoryEngine)
+  {}
+
+  void notify() {
+    std::stringstream commaList(options::useTheoryList());
+    std::string token;
+
+    Debug("UseTheoryListListener") << "UseTheoryListListener::notify() "
+                                   << options::useTheoryList() << std::endl;
+
+    while(std::getline(commaList, token, ',')){
+      if(token == "help") {
+        puts(theory::useTheoryHelp);
+        exit(1);
+      }
+      if(theory::useTheoryValidate(token)) {
+        d_theoryEngine->enableTheoryAlternative(token);
+      } else {
+        throw OptionException(
+            std::string("unknown option for --use-theory : `") + token +
+            "'.  Try --use-theory=help.");
+      }
+    }
+  }
+
+ private:
+  TheoryEngine* d_theoryEngine;
+}; /* class UseTheoryListListener */
+
+
+class SetDefaultExprDepthListener : public Listener {
+ public:
+  virtual void notify() {
+    int depth = options::defaultExprDepth();
+    Debug.getStream() << expr::ExprSetDepth(depth);
+    Trace.getStream() << expr::ExprSetDepth(depth);
+    Notice.getStream() << expr::ExprSetDepth(depth);
+    Chat.getStream() << expr::ExprSetDepth(depth);
+    Message.getStream() << expr::ExprSetDepth(depth);
+    Warning.getStream() << expr::ExprSetDepth(depth);
+    // intentionally exclude Dump stream from this list
+  }
+};
+
+class SetDefaultExprDagListener : public Listener {
+ public:
+  virtual void notify() {
+    int dag = options::defaultDagThresh();
+    Debug.getStream() << expr::ExprDag(dag);
+    Trace.getStream() << expr::ExprDag(dag);
+    Notice.getStream() << expr::ExprDag(dag);
+    Chat.getStream() << expr::ExprDag(dag);
+    Message.getStream() << expr::ExprDag(dag);
+    Warning.getStream() << expr::ExprDag(dag);
+    Dump.getStream() << expr::ExprDag(dag);
+  }
+};
+
+class SetPrintExprTypesListener : public Listener {
+ public:
+  virtual void notify() {
+    bool value = options::printExprTypes();
+    Debug.getStream() << expr::ExprPrintTypes(value);
+    Trace.getStream() << expr::ExprPrintTypes(value);
+    Notice.getStream() << expr::ExprPrintTypes(value);
+    Chat.getStream() << expr::ExprPrintTypes(value);
+    Message.getStream() << expr::ExprPrintTypes(value);
+    Warning.getStream() << expr::ExprPrintTypes(value);
+    // intentionally exclude Dump stream from this list
+  }
+};
+
+class DumpModeListener : public Listener {
+ public:
+  virtual void notify() {
+    const std::string& value = options::dumpModeString();
+    Dump.setDumpFromString(value);
+  }
+};
+
+class PrintSuccessListener : public Listener {
+ public:
+  virtual void notify() {
+    bool value = options::printSuccess();
+    Debug.getStream() << Command::printsuccess(value);
+    Trace.getStream() << Command::printsuccess(value);
+    Notice.getStream() << Command::printsuccess(value);
+    Chat.getStream() << Command::printsuccess(value);
+    Message.getStream() << Command::printsuccess(value);
+    Warning.getStream() << Command::printsuccess(value);
+    *options::out() << Command::printsuccess(value);
+  }
+};
+
+
+
+/**
+ * This is an inelegant solution, but for the present, it will work.
+ * The point of this is to separate the public and private portions of
+ * the SmtEngine class, so that smt_engine.h doesn't
+ * include "expr/node.h", which is a private CVC4 header (and can lead
+ * to linking errors due to the improper inlining of non-visible symbols
+ * into user code!).
+ *
+ * The "real" solution (that which is usually implemented) is to move
+ * ALL the implementation to SmtEnginePrivate and maintain a
+ * heap-allocated instance of it in SmtEngine.  SmtEngine (the public
+ * one) becomes an "interface shell" which simply acts as a forwarder
+ * of method calls.
+ */
+class SmtEnginePrivate : public NodeManagerListener {
+  SmtEngine& d_smt;
+
+  typedef hash_map<Node, Node, NodeHashFunction> NodeToNodeHashMap;
+  typedef hash_map<Node, bool, NodeHashFunction> NodeToBoolHashMap;
+
+  /**
+   * Manager for limiting time and abstract resource usage.
+   */
+  ResourceManager* d_resourceManager;
+
+  /** Manager for the memory of regular-output-channel. */
+  ManagedRegularOutputChannel d_managedRegularChannel;
+
+  /** Manager for the memory of diagnostic-output-channel. */
+  ManagedDiagnosticOutputChannel d_managedDiagnosticChannel;
+
+  /** Manager for the memory of --dump-to. */
+  ManagedDumpOStream d_managedDumpChannel;
+
+  /** Manager for --replay-log. */
+  ManagedReplayLogOstream d_managedReplayLog;
+
+  /**
+   * This list contains:
+   *  softResourceOut
+   *  hardResourceOut
+   *  setForceLogic
+   *  beforeSearchListener
+   *  UseTheoryListListener
+   *
+   * This needs to be deleted before both NodeManager's Options,
+   * SmtEngine, d_resourceManager, and TheoryEngine.
+   */
+  ListenerRegistrationList* d_listenerRegistrations;
+
+  /** Learned literals */
+  vector<Node> d_nonClausalLearnedLiterals;
+
+  /** Size of assertions array when preprocessing starts */
+  unsigned d_realAssertionsEnd;
+
+  /** A circuit propagator for non-clausal propositional deduction */
+  booleans::CircuitPropagator d_propagator;
+  bool d_propagatorNeedsFinish;
+  std::vector<Node> d_boolVars;
+
+  /** Assertions in the preprocessing pipeline */
+  AssertionPipeline d_assertions;
+
+  /** Whether any assertions have been processed */
+  CDO<bool> d_assertionsProcessed;
+
+  /** Index for where to store substitutions */
+  CDO<unsigned> d_substitutionsIndex;
+
+  // Cached true value
+  Node d_true;
+
+  /**
+   * A context that never pushes/pops, for use by CD structures (like
+   * SubstitutionMaps) that should be "global".
+   */
+  context::Context d_fakeContext;
+
+  /**
+   * A map of AbsractValues to their actual constants.  Only used if
+   * options::abstractValues() is on.
+   */
+  SubstitutionMap d_abstractValueMap;
+
+  /**
+   * A mapping of all abstract values (actual value |-> abstract) that
+   * we've handed out.  This is necessary to ensure that we give the
+   * same AbstractValues for the same real constants.  Only used if
+   * options::abstractValues() is on.
+   */
+  NodeToNodeHashMap d_abstractValues;
+
+  /** Number of calls of simplify assertions active.
+   */
+  unsigned d_simplifyAssertionsDepth;
+
+  /** TODO: whether certain preprocess steps are necessary */
+  //bool d_needsExpandDefs;
+  //bool d_needsRewriteBoolTerms;
+  //bool d_needsConstrainSubTypes;
+
+public:
+  /**
+   * Map from skolem variables to index in d_assertions containing
+   * corresponding introduced Boolean ite
+   */
+  IteSkolemMap d_iteSkolemMap;
+
+  /** Instance of the ITE remover */
+  RemoveTermFormulas d_iteRemover;
+
+private:
+
+  theory::arith::PseudoBooleanProcessor d_pbsProcessor;
+
+  /** The top level substitutions */
+  SubstitutionMap d_topLevelSubstitutions;
+
+  static const bool d_doConstantProp = true;
+
+  /**
+   * Runs the nonclausal solver and tries to solve all the assigned
+   * theory literals.
+   *
+   * Returns false if the formula simplifies to "false"
+   */
+  bool nonClausalSimplify();
+
+  /**
+   * Performs static learning on the assertions.
+   */
+  void staticLearning();
+
+  /**
+   * Remove ITEs from the assertions.
+   */
+  void removeITEs();
+
+  Node intToBV(TNode n, NodeToNodeHashMap& cache);
+  Node intToBVMakeBinary(TNode n, NodeToNodeHashMap& cache);
+
+  /**
+   * Helper function to fix up assertion list to restore invariants needed after
+   * ite removal.
+   */
+  void collectSkolems(TNode n, set<TNode>& skolemSet, NodeToBoolHashMap& cache);
+
+  /**
+   * Helper function to fix up assertion list to restore invariants needed after
+   * ite removal.
+   */
+  bool checkForBadSkolems(TNode n, TNode skolem, NodeToBoolHashMap& cache);
+
+  // Lift bit-vectors of size 1 to booleans
+  void bvToBool();
+
+  // Convert booleans to bit-vectors of size 1
+  void boolToBv();
+  
+  // Abstract common structure over small domains to UF
+  // return true if changes were made.
+  void bvAbstraction();
+
+  // Simplify ITE structure
+  bool simpITE();
+
+  // Simplify based on unconstrained values
+  void unconstrainedSimp();
+
+  /**
+   * Ensures the assertions asserted after before now effectively come before
+   * d_realAssertionsEnd.
+   */
+  void compressBeforeRealAssertions(size_t before);
+
+  /**
+   * Any variable in an assertion that is declared as a subtype type
+   * (predicate subtype or integer subrange type) must be constrained
+   * to be in that type.
+   */
+  void constrainSubtypes(TNode n, AssertionPipeline& 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 long>& 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
+   * any way.
+   *
+   * Returns false if the formula simplifies to "false"
+   */
+  bool simplifyAssertions() throw(TypeCheckingException, LogicException,
+                                  UnsafeInterruptException);
+
+public:
+
+  SmtEnginePrivate(SmtEngine& smt) :
+    d_smt(smt),
+    d_managedRegularChannel(),
+    d_managedDiagnosticChannel(),
+    d_managedDumpChannel(),
+    d_managedReplayLog(),
+    d_listenerRegistrations(new ListenerRegistrationList()),
+    d_nonClausalLearnedLiterals(),
+    d_realAssertionsEnd(0),
+    d_propagator(d_nonClausalLearnedLiterals, true, true),
+    d_propagatorNeedsFinish(false),
+    d_assertions(),
+    d_assertionsProcessed(smt.d_userContext, false),
+    d_substitutionsIndex(smt.d_userContext, 0),
+    d_fakeContext(),
+    d_abstractValueMap(&d_fakeContext),
+    d_abstractValues(),
+    d_simplifyAssertionsDepth(0),
+    //d_needsExpandDefs(true),
+    //d_needsRewriteBoolTerms(true),
+    //d_needsConstrainSubTypes(true), //TODO
+    d_iteSkolemMap(),
+    d_iteRemover(smt.d_userContext),
+    d_pbsProcessor(smt.d_userContext),
+    d_topLevelSubstitutions(smt.d_userContext)
+  {
+    d_smt.d_nodeManager->subscribeEvents(this);
+    d_true = NodeManager::currentNM()->mkConst(true);
+    d_resourceManager = NodeManager::currentResourceManager();
+
+    d_listenerRegistrations->add(d_resourceManager->registerSoftListener(
+        new SoftResourceOutListener(d_smt)));
+
+    d_listenerRegistrations->add(d_resourceManager->registerHardListener(
+        new HardResourceOutListener(d_smt)));
+
+    Options& nodeManagerOptions = NodeManager::currentNM()->getOptions();
+    d_listenerRegistrations->add(
+        nodeManagerOptions.registerForceLogicListener(
+            new SetLogicListener(d_smt), true));
+
+    // Multiple options reuse BeforeSearchListener so registration requires an
+    // extra bit of care.
+    // We can safely not call notify on this before search listener at
+    // registration time. This d_smt cannot be beforeSearch at construction
+    // time. Therefore the BeforeSearchListener is a no-op. Therefore it does
+    // not have to be called.
+    d_listenerRegistrations->add(
+        nodeManagerOptions.registerBeforeSearchListener(
+            new BeforeSearchListener(d_smt)));
+
+    // These do need registration calls.
+    d_listenerRegistrations->add(
+        nodeManagerOptions.registerSetDefaultExprDepthListener(
+            new SetDefaultExprDepthListener(), true));
+    d_listenerRegistrations->add(
+        nodeManagerOptions.registerSetDefaultExprDagListener(
+            new SetDefaultExprDagListener(), true));
+    d_listenerRegistrations->add(
+        nodeManagerOptions.registerSetPrintExprTypesListener(
+            new SetPrintExprTypesListener(), true));
+    d_listenerRegistrations->add(
+        nodeManagerOptions.registerSetDumpModeListener(
+            new DumpModeListener(), true));
+    d_listenerRegistrations->add(
+        nodeManagerOptions.registerSetPrintSuccessListener(
+            new PrintSuccessListener(), true));
+    d_listenerRegistrations->add(
+        nodeManagerOptions.registerSetRegularOutputChannelListener(
+            new SetToDefaultSourceListener(&d_managedRegularChannel), true));
+    d_listenerRegistrations->add(
+        nodeManagerOptions.registerSetDiagnosticOutputChannelListener(
+            new SetToDefaultSourceListener(&d_managedDiagnosticChannel), true));
+    d_listenerRegistrations->add(
+        nodeManagerOptions.registerDumpToFileNameListener(
+            new SetToDefaultSourceListener(&d_managedDumpChannel), true));
+    d_listenerRegistrations->add(
+        nodeManagerOptions.registerSetReplayLogFilename(
+            new SetToDefaultSourceListener(&d_managedReplayLog), true));
+  }
+
+  ~SmtEnginePrivate() throw() {
+    delete d_listenerRegistrations;
+
+    if(d_propagatorNeedsFinish) {
+      d_propagator.finish();
+      d_propagatorNeedsFinish = false;
+    }
+    d_smt.d_nodeManager->unsubscribeEvents(this);
+  }
+
+  ResourceManager* getResourceManager() { return d_resourceManager; }
+  void spendResource(unsigned ammount) throw(UnsafeInterruptException) {
+    d_resourceManager->spendResource(ammount);
+  }
+
+  void nmNotifyNewSort(TypeNode tn, uint32_t flags) {
+    DeclareTypeCommand c(tn.getAttribute(expr::VarNameAttr()),
+                         0,
+                         tn.toType());
+    if((flags & ExprManager::SORT_FLAG_PLACEHOLDER) == 0) {
+      d_smt.addToModelCommandAndDump(c, flags);
+    }
+  }
+
+  void nmNotifyNewSortConstructor(TypeNode tn) {
+    DeclareTypeCommand c(tn.getAttribute(expr::VarNameAttr()),
+                         tn.getAttribute(expr::SortArityAttr()),
+                         tn.toType());
+    d_smt.addToModelCommandAndDump(c);
+  }
+
+  void nmNotifyNewDatatypes(const std::vector<DatatypeType>& dtts) {
+    DatatypeDeclarationCommand c(dtts);
+    d_smt.addToModelCommandAndDump(c);
+  }
+
+  void nmNotifyNewVar(TNode n, uint32_t flags) {
+    DeclareFunctionCommand c(n.getAttribute(expr::VarNameAttr()),
+                             n.toExpr(),
+                             n.getType().toType());
+    if((flags & ExprManager::VAR_FLAG_DEFINED) == 0) {
+      d_smt.addToModelCommandAndDump(c, flags);
+    }
+    if(n.getType().isBoolean() && !options::incrementalSolving()) {
+      d_boolVars.push_back(n);
+    }
+  }
+
+  void nmNotifyNewSkolem(TNode n, const std::string& comment, uint32_t flags) {
+    string id = n.getAttribute(expr::VarNameAttr());
+    DeclareFunctionCommand c(id,
+                             n.toExpr(),
+                             n.getType().toType());
+    if(Dump.isOn("skolems") && comment != "") {
+      Dump("skolems") << CommentCommand(id + " is " + comment);
+    }
+    if((flags & ExprManager::VAR_FLAG_DEFINED) == 0) {
+      d_smt.addToModelCommandAndDump(c, flags, false, "skolems");
+    }
+    if(n.getType().isBoolean() && !options::incrementalSolving()) {
+      d_boolVars.push_back(n);
+    }
+  }
+
+  void nmNotifyDeleteNode(TNode n) {
+    d_smt.d_smtAttributes->deleteAllAttributes(n);
+  }
+
+  Node applySubstitutions(TNode node) const {
+    return Rewriter::rewrite(d_topLevelSubstitutions.apply(node));
+  }
+
+  /**
+   * Process the assertions that have been asserted.
+   */
+  void processAssertions();
+
+  /**
+   * Process a user pop.  Clears out the non-context-dependent stuff in this
+   * SmtEnginePrivate.  Necessary to clear out our assertion vectors in case
+   * someone does a push-assert-pop without a check-sat.
+   */
+  void notifyPop() {
+    d_assertions.clear();
+    d_nonClausalLearnedLiterals.clear();
+    d_realAssertionsEnd = 0;
+    d_iteSkolemMap.clear();
+  }
+
+  /**
+   * Adds a formula to the current context.  Action here depends on
+   * the SimplificationMode (in the current Options scope); the
+   * formula might be pushed out to the propositional layer
+   * immediately, or it might be simplified and kept, or it might not
+   * even be simplified.
+   * the 2nd and 3rd arguments added for bookkeeping for proofs
+   */
+  void addFormula(TNode n, bool inUnsatCore, bool inInput = true)
+    throw(TypeCheckingException, LogicException);
+
+  /** Expand definitions in n. */
+  Node expandDefinitions(TNode n, NodeToNodeHashMap& cache,
+                         bool expandOnly = false)
+      throw(TypeCheckingException, LogicException, UnsafeInterruptException);
+
+  /**
+   * Simplify node "in" by expanding definitions and applying any
+   * substitutions learned from preprocessing.
+   */
+  Node simplify(TNode in) {
+    // Substitute out any abstract values in ex.
+    // Expand definitions.
+    NodeToNodeHashMap cache;
+    Node n = expandDefinitions(in, cache).toExpr();
+    // Make sure we've done all preprocessing, etc.
+    Assert(d_assertions.size() == 0);
+    return applySubstitutions(n).toExpr();
+  }
+
+  /**
+   * Substitute away all AbstractValues in a node.
+   */
+  Node substituteAbstractValues(TNode n) {
+    // We need to do this even if options::abstractValues() is off,
+    // since the setting might have changed after we already gave out
+    // some abstract values.
+    return d_abstractValueMap.apply(n);
+  }
+
+  /**
+   * Make a new (or return an existing) abstract value for a node.
+   * Can only use this if options::abstractValues() is on.
+   */
+  Node mkAbstractValue(TNode n) {
+    Assert(options::abstractValues());
+    Node& val = d_abstractValues[n];
+    if(val.isNull()) {
+      val = d_smt.d_nodeManager->mkAbstractValue(n.getType());
+      d_abstractValueMap.addSubstitution(val, n);
+    }
+    // We are supposed to ascribe types to all abstract values that go out.
+    NodeManager* current = d_smt.d_nodeManager;
+    Node ascription = current->mkConst(AscriptionType(n.getType().toType()));
+    Node retval = current->mkNode(kind::APPLY_TYPE_ASCRIPTION, ascription, val);
+    return retval;
+  }
+
+  NodeToNodeHashMap d_rewriteApplyToConstCache;
+  Node rewriteApplyToConst(TNode n) {
+    Trace("rewriteApplyToConst") << "rewriteApplyToConst :: " << n << std::endl;
+
+    if(n.getMetaKind() == kind::metakind::CONSTANT ||
+       n.getMetaKind() == kind::metakind::VARIABLE)
+    {
+      return n;
+    }
+
+    if(d_rewriteApplyToConstCache.find(n) != d_rewriteApplyToConstCache.end()) {
+      Trace("rewriteApplyToConst") << "in cache :: "
+                                   << d_rewriteApplyToConstCache[n]
+                                   << std::endl;
+      return d_rewriteApplyToConstCache[n];
+    }
+
+    if(n.getKind() == kind::APPLY_UF) {
+      if(n.getNumChildren() == 1 && n[0].isConst() &&
+         n[0].getType().isInteger())
+      {
+        stringstream ss;
+        ss << n.getOperator() << "_";
+        if(n[0].getConst<Rational>() < 0) {
+          ss << "m" << -n[0].getConst<Rational>();
+        } else {
+          ss << n[0];
+        }
+        Node newvar = NodeManager::currentNM()->mkSkolem(
+            ss.str(), n.getType(), "rewriteApplyToConst skolem",
+            NodeManager::SKOLEM_EXACT_NAME);
+        d_rewriteApplyToConstCache[n] = newvar;
+        Trace("rewriteApplyToConst") << "made :: " << newvar << std::endl;
+        return newvar;
+      } else {
+        stringstream ss;
+        ss << "The rewrite-apply-to-const preprocessor is currently limited;"
+           << std::endl
+           << "it only works if all function symbols are unary and with Integer"
+           << std::endl
+           << "domain, and all applications are to integer values." << std::endl
+           << "Found application: " << n;
+        Unhandled(ss.str());
+      }
+    }
+
+    NodeBuilder<> builder(n.getKind());
+    if(n.getMetaKind() == kind::metakind::PARAMETERIZED) {
+      builder << n.getOperator();
+    }
+    for(unsigned i = 0; i < n.getNumChildren(); ++i) {
+      builder << rewriteApplyToConst(n[i]);
+    }
+    Node rewr = builder;
+    d_rewriteApplyToConstCache[n] = rewr;
+    Trace("rewriteApplyToConst") << "built :: " << rewr << std::endl;
+    return rewr;
+  }
+
+  void addUseTheoryListListener(TheoryEngine* theoryEngine){
+    Options& nodeManagerOptions = NodeManager::currentNM()->getOptions();
+    d_listenerRegistrations->add(
+        nodeManagerOptions.registerUseTheoryListListener(
+            new UseTheoryListListener(theoryEngine), true));
+  }
+
+  std::ostream* getReplayLog() const {
+    return d_managedReplayLog.getReplayLog();
+  }
+
+};/* class SmtEnginePrivate */
+
+}/* namespace CVC4::smt */
+
+SmtEngine::SmtEngine(ExprManager* em) throw() :
+  d_context(new Context()),
+  d_userLevels(),
+  d_userContext(new UserContext()),
+  d_exprManager(em),
+  d_nodeManager(d_exprManager->getNodeManager()),
+  d_decisionEngine(NULL),
+  d_theoryEngine(NULL),
+  d_propEngine(NULL),
+  d_proofManager(NULL),
+  d_definedFunctions(NULL),
+  d_fmfRecFunctionsDefined(NULL),
+  d_assertionList(NULL),
+  d_assignments(NULL),
+  d_modelGlobalCommands(),
+  d_modelCommands(NULL),
+  d_dumpCommands(),
+  d_defineCommands(),
+  d_logic(),
+  d_originalOptions(),
+  d_pendingPops(0),
+  d_fullyInited(false),
+  d_problemExtended(false),
+  d_queryMade(false),
+  d_needPostsolve(false),
+  d_earlyTheoryPP(true),
+  d_status(),
+  d_replayStream(NULL),
+  d_private(NULL),
+  d_smtAttributes(NULL),
+  d_statisticsRegistry(NULL),
+  d_stats(NULL),
+  d_channels(new LemmaChannels())
+{
+  SmtScope smts(this);
+  d_originalOptions.copyValues(em->getOptions());
+  d_smtAttributes = new expr::attr::SmtAttributes(d_context);
+  d_private = new smt::SmtEnginePrivate(*this);
+  d_statisticsRegistry = new StatisticsRegistry();
+  d_stats = new SmtEngineStatistics();
+  d_stats->d_resourceUnitsUsed.setData(
+      d_private->getResourceManager()->getResourceUsage());
+
+  // The ProofManager is constructed before any other proof objects such as
+  // SatProof and TheoryProofs. The TheoryProofEngine and the SatProof are
+  // initialized in TheoryEngine and PropEngine respectively.
+  Assert(d_proofManager == NULL);
+
+  // d_proofManager must be created before Options has been finished
+  // being parsed from the input file. Because of this, we cannot trust
+  // that options::proof() is set correctly yet.
+#ifdef CVC4_PROOF
+  d_proofManager = new ProofManager();
+#endif
+
+  // We have mutual dependency here, so we add the prop engine to the theory
+  // engine later (it is non-essential there)
+  d_theoryEngine = new TheoryEngine(d_context, d_userContext,
+                                    d_private->d_iteRemover,
+                                    const_cast<const LogicInfo&>(d_logic),
+                                    d_channels);
+
+  // Add the theories
+  for(TheoryId id = theory::THEORY_FIRST; id < theory::THEORY_LAST; ++id) {
+    TheoryConstructor::addTheory(d_theoryEngine, id);
+    //register with proof engine if applicable
+#ifdef CVC4_PROOF
+    ProofManager::currentPM()->getTheoryProofEngine()->registerTheory(d_theoryEngine->theoryOf(id));
+#endif
+  }
+
+  d_private->addUseTheoryListListener(d_theoryEngine);
+
+  // global push/pop around everything, to ensure proper destruction
+  // of context-dependent data structures
+  d_userContext->push();
+  d_context->push();
+
+  d_definedFunctions = new(true) DefinedFunctionMap(d_userContext);
+  if( options::fmfFunWellDefined() || options::fmfFunWellDefinedRelevant() ){
+    d_fmfRecFunctionsDefined = new(true) NodeList(d_userContext);
+  }
+  d_modelCommands = new(true) smt::CommandList(d_userContext);
+}
+
+void SmtEngine::finishInit() {
+  Trace("smt-debug") << "SmtEngine::finishInit" << std::endl;
+  // ensure that our heuristics are properly set up
+  setDefaults();
+
+  Trace("smt-debug") << "Making decision engine..." << std::endl;
+
+  d_decisionEngine = new DecisionEngine(d_context, d_userContext);
+  d_decisionEngine->init();   // enable appropriate strategies
+
+  Trace("smt-debug") << "Making prop engine..." << std::endl;
+  d_propEngine = new PropEngine(d_theoryEngine, d_decisionEngine, d_context,
+                                d_userContext, d_private->getReplayLog(),
+                                d_replayStream, d_channels);
+
+  Trace("smt-debug") << "Setting up theory engine..." << std::endl;
+  d_theoryEngine->setPropEngine(d_propEngine);
+  d_theoryEngine->setDecisionEngine(d_decisionEngine);
+  Trace("smt-debug") << "Finishing init for theory engine..." << std::endl;
+  d_theoryEngine->finishInit();
+
+  Trace("smt-debug") << "Set up assertion list..." << std::endl;
+  // [MGD 10/20/2011] keep around in incremental mode, due to a
+  // cleanup ordering issue and Nodes/TNodes.  If SAT is popped
+  // first, some user-context-dependent TNodes might still exist
+  // with rc == 0.
+  if(options::produceAssertions() ||
+     options::incrementalSolving()) {
+    // In the case of incremental solving, we appear to need these to
+    // ensure the relevant Nodes remain live.
+    d_assertionList = new(true) AssertionList(d_userContext);
+  }
+
+  // dump out a set-logic command
+  if(Dump.isOn("benchmark")) {
+    if (Dump.isOn("raw-benchmark")) {
+      Dump("raw-benchmark") << SetBenchmarkLogicCommand(d_logic.getLogicString());
+    } else {
+      LogicInfo everything;
+      everything.lock();
+      Dump("benchmark") << CommentCommand("CVC4 always dumps the most general, all-supported logic (below), as some internals might require the use of a logic more general than the input.")
+                        << SetBenchmarkLogicCommand(everything.getLogicString());
+    }
+  }
+
+  Trace("smt-debug") << "Dump declaration commands..." << std::endl;
+  // dump out any pending declaration commands
+  for(unsigned i = 0; i < d_dumpCommands.size(); ++i) {
+    Dump("declarations") << *d_dumpCommands[i];
+    delete d_dumpCommands[i];
+  }
+  d_dumpCommands.clear();
+
+  PROOF( ProofManager::currentPM()->setLogic(d_logic); );
+  PROOF({
+      for(TheoryId id = theory::THEORY_FIRST; id < theory::THEORY_LAST; ++id) {
+        ProofManager::currentPM()->getTheoryProofEngine()->
+          finishRegisterTheory(d_theoryEngine->theoryOf(id));
+      }
+    });
+
+  Trace("smt-debug") << "SmtEngine::finishInit done" << std::endl;
+}
+
+void SmtEngine::finalOptionsAreSet() {
+  if(d_fullyInited) {
+    return;
+  }
+
+  if(! d_logic.isLocked()) {
+    setLogicInternal();
+  }
+
+  // finish initialization, create the prop engine, etc.
+  finishInit();
+
+  AlwaysAssert( d_propEngine->getAssertionLevel() == 0,
+                "The PropEngine has pushed but the SmtEngine "
+                "hasn't finished initializing!" );
+
+  d_fullyInited = true;
+  Assert(d_logic.isLocked());
+
+  d_propEngine->assertFormula(NodeManager::currentNM()->mkConst<bool>(true));
+  d_propEngine->assertFormula(NodeManager::currentNM()->mkConst<bool>(false).notNode());
+}
+
+void SmtEngine::shutdown() {
+  doPendingPops();
+
+  while(options::incrementalSolving() && d_userContext->getLevel() > 1) {
+    internalPop(true);
+  }
+
+  // check to see if a postsolve() is pending
+  if(d_needPostsolve) {
+    d_theoryEngine->postsolve();
+    d_needPostsolve = false;
+  }
+
+  if(d_propEngine != NULL) {
+    d_propEngine->shutdown();
+  }
+  if(d_theoryEngine != NULL) {
+    d_theoryEngine->shutdown();
+  }
+  if(d_decisionEngine != NULL) {
+    d_decisionEngine->shutdown();
+  }
+}
+
+SmtEngine::~SmtEngine() throw() {
+  SmtScope smts(this);
+
+  try {
+    shutdown();
+
+    // global push/pop around everything, to ensure proper destruction
+    // of context-dependent data structures
+    d_context->popto(0);
+    d_userContext->popto(0);
+
+    if(d_assignments != NULL) {
+      d_assignments->deleteSelf();
+    }
+
+    if(d_assertionList != NULL) {
+      d_assertionList->deleteSelf();
+    }
+
+    for(unsigned i = 0; i < d_dumpCommands.size(); ++i) {
+      delete d_dumpCommands[i];
+      d_dumpCommands[i] = NULL;
+    }
+    d_dumpCommands.clear();
+
+    DeleteAndClearCommandVector(d_modelGlobalCommands);
+
+    if(d_modelCommands != NULL) {
+      d_modelCommands->deleteSelf();
+    }
+
+    d_definedFunctions->deleteSelf();
+
+    if( d_fmfRecFunctionsDefined != NULL ){
+      d_fmfRecFunctionsDefined->deleteSelf();
+    }
+
+    delete d_theoryEngine;
+    d_theoryEngine = NULL;
+    delete d_propEngine;
+    d_propEngine = NULL;
+    delete d_decisionEngine;
+    d_decisionEngine = NULL;
+
+
+// d_proofManager is always created when proofs are enabled at configure time.
+// Becuase of this, this code should not be wrapped in PROOF() which
+// additionally checks flags such as options::proof().
+#ifdef CVC4_PROOF
+    delete d_proofManager;
+    d_proofManager = NULL;
+#endif
+
+    delete d_stats;
+    d_stats = NULL;
+    delete d_statisticsRegistry;
+    d_statisticsRegistry = NULL;
+
+    delete d_private;
+    d_private = NULL;
+
+    delete d_smtAttributes;
+    d_smtAttributes = NULL;
+
+    delete d_userContext;
+    d_userContext = NULL;
+    delete d_context;
+    d_context = NULL;
+
+    delete d_channels;
+    d_channels = NULL;
+
+  } catch(Exception& e) {
+    Warning() << "CVC4 threw an exception during cleanup." << endl
+              << e << endl;
+  }
+}
+
+void SmtEngine::setLogic(const LogicInfo& logic) throw(ModalException) {
+  SmtScope smts(this);
+  if(d_fullyInited) {
+    throw ModalException("Cannot set logic in SmtEngine after the engine has "
+                         "finished initializing.");
+  }
+  d_logic = logic;
+  setLogicInternal();
+}
+
+void SmtEngine::setLogic(const std::string& s)
+    throw(ModalException, LogicException) {
+  SmtScope smts(this);
+  try {
+    setLogic(LogicInfo(s));
+  } catch(IllegalArgumentException& e) {
+    throw LogicException(e.what());
+  }
+}
+
+void SmtEngine::setLogic(const char* logic)
+    throw(ModalException, LogicException) {
+  setLogic(string(logic));
+}
+
+LogicInfo SmtEngine::getLogicInfo() const {
+  return d_logic;
+}
+
+void SmtEngine::setLogicInternal() throw() {
+  Assert(!d_fullyInited, "setting logic in SmtEngine but the engine has already"
+         " finished initializing for this run");
+  d_logic.lock();
+}
+
+void SmtEngine::setDefaults() {
+  if(options::forceLogicString.wasSetByUser()) {
+    d_logic = LogicInfo(options::forceLogicString());
+  }
+  else if (options::solveIntAsBV() > 0) {
+    d_logic = LogicInfo("QF_BV");
+  } else if ((d_logic.getLogicString() == "QF_UFBV" ||
+              d_logic.getLogicString() == "QF_ABV") &&
+             options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER) {
+    d_logic = LogicInfo("QF_BV");
+  }
+
+  // set strings-exp
+  /* - disabled for 1.4 release [MGD 2014.06.25]
+  if(!d_logic.hasEverything() && d_logic.isTheoryEnabled(THEORY_STRINGS) ) {
+    if(! options::stringExp.wasSetByUser()) {
+      options::stringExp.set( true );
+      Trace("smt") << "turning on strings-exp, for the theory of strings" << std::endl;
+    }
+  }
+  */
+  // for strings
+  if(options::stringExp()) {
+    if( !d_logic.isQuantified() ) {
+      d_logic = d_logic.getUnlockedCopy();
+      d_logic.enableQuantifiers();
+      d_logic.lock();
+      Trace("smt") << "turning on quantifier logic, for strings-exp"
+                   << std::endl;
+    }
+    if(! options::fmfBound.wasSetByUser()) {
+      options::fmfBound.set( true );
+      Trace("smt") << "turning on fmf-bound-int, for strings-exp" << std::endl;
+    }
+    if(! options::fmfInstEngine.wasSetByUser()) {
+      options::fmfInstEngine.set( true );
+      Trace("smt") << "turning on fmf-inst-engine, for strings-exp" << std::endl;
+    }
+    /*
+    if(! options::rewriteDivk.wasSetByUser()) {
+      options::rewriteDivk.set( true );
+      Trace("smt") << "turning on rewrite-divk, for strings-exp" << std::endl;
+    }*/
+    /*
+    if(! options::stringFMF.wasSetByUser()) {
+      options::stringFMF.set( true );
+      Trace("smt") << "turning on strings-fmf, for strings-exp" << std::endl;
+    }
+    */
+  }
+
+  if(options::checkModels()) {
+    if(! options::produceAssertions()) {
+      Notice() << "SmtEngine: turning on produce-assertions to support "
+               << "check-models." << endl;
+      setOption("produce-assertions", SExpr("true"));
+    }
+  }
+
+  if(options::unsatCores()) {
+    if(options::simplificationMode() != SIMPLIFICATION_MODE_NONE) {
+      if(options::simplificationMode.wasSetByUser()) {
+        throw OptionException("simplification not supported with unsat cores");
+      }
+      Notice() << "SmtEngine: turning off simplification to support unsat-cores"
+               << endl;
+      options::simplificationMode.set(SIMPLIFICATION_MODE_NONE);
+    }
+
+    if(options::unconstrainedSimp()) {
+      if(options::unconstrainedSimp.wasSetByUser()) {
+        throw OptionException("unconstrained simplification not supported with unsat cores");
+      }
+      Notice() << "SmtEngine: turning off unconstrained simplification to support unsat-cores" << endl;
+      options::unconstrainedSimp.set(false);
+    }
+
+    if(options::pbRewrites()) {
+      if(options::pbRewrites.wasSetByUser()) {
+        throw OptionException("pseudoboolean rewrites not supported with unsat cores");
+      }
+      Notice() << "SmtEngine: turning off pseudoboolean rewrites to support unsat-cores" << endl;
+      setOption("pb-rewrites", false);
+    }
+
+    if(options::sortInference()) {
+      if(options::sortInference.wasSetByUser()) {
+        throw OptionException("sort inference not supported with unsat cores");
+      }
+      Notice() << "SmtEngine: turning off sort inference to support unsat-cores" << endl;
+      options::sortInference.set(false);
+    }
+
+    if(options::preSkolemQuant()) {
+      if(options::preSkolemQuant.wasSetByUser()) {
+        throw OptionException("pre-skolemization not supported with unsat cores");
+      }
+      Notice() << "SmtEngine: turning off pre-skolemization to support unsat-cores" << endl;
+      options::preSkolemQuant.set(false);
+    }
+
+    if(options::bitvectorToBool()) {
+      if(options::bitvectorToBool.wasSetByUser()) {
+        throw OptionException("bv-to-bool not supported with unsat cores");
+      }
+      Notice() << "SmtEngine: turning off bitvector-to-bool to support unsat-cores" << endl;
+      options::bitvectorToBool.set(false);
+    }
+
+    if(options::boolToBitvector()) {
+      if(options::boolToBitvector.wasSetByUser()) {
+        throw OptionException("bool-to-bv not supported with unsat cores");
+      }
+      Notice() << "SmtEngine: turning off bool-to-bitvector to support unsat-cores" << endl;
+      options::boolToBitvector.set(false);
+    }
+
+    if(options::bvIntroducePow2()) {
+      if(options::bvIntroducePow2.wasSetByUser()) {
+        throw OptionException("bv-intro-pow2 not supported with unsat cores");
+      }
+      Notice() << "SmtEngine: turning off bv-introduce-pow2 to support unsat-cores" << endl;
+      setOption("bv-intro-pow2", false);
+    }
+    if(options::repeatSimp()) {
+      if(options::repeatSimp.wasSetByUser()) {
+        throw OptionException("repeat-simp not supported with unsat cores");
+      }
+      Notice() << "SmtEngine: turning off repeat-simp to support unsat-cores" << endl;
+      setOption("repeat-simp", false);
+    }
+
+  }
+
+  if(options::produceAssignments() && !options::produceModels()) {
+    Notice() << "SmtEngine: turning on produce-models to support produce-assignments" << endl;
+    setOption("produce-models", SExpr("true"));
+  }
+
+  // Set the options for the theoryOf
+  if(!options::theoryOfMode.wasSetByUser()) {
+    if(d_logic.isSharingEnabled() &&
+       !d_logic.isTheoryEnabled(THEORY_BV) &&
+       !d_logic.isTheoryEnabled(THEORY_STRINGS) &&
+       !d_logic.isTheoryEnabled(THEORY_SETS) ) {
+      Trace("smt") << "setting theoryof-mode to term-based" << endl;
+      options::theoryOfMode.set(THEORY_OF_TERM_BASED);
+    }
+  }
+
+  // strings require LIA, UF; widen the logic
+  if(d_logic.isTheoryEnabled(THEORY_STRINGS)) {
+    LogicInfo log(d_logic.getUnlockedCopy());
+    // Strings requires arith for length constraints, and also UF
+    if(!d_logic.isTheoryEnabled(THEORY_UF)) {
+      Trace("smt") << "because strings are enabled, also enabling UF" << endl;
+      log.enableTheory(THEORY_UF);
+    }
+    if(!d_logic.isTheoryEnabled(THEORY_ARITH) || d_logic.isDifferenceLogic() || !d_logic.areIntegersUsed()) {
+      Trace("smt") << "because strings are enabled, also enabling linear integer arithmetic" << endl;
+      log.enableTheory(THEORY_ARITH);
+      log.enableIntegers();
+      log.arithOnlyLinear();
+    }
+    d_logic = log;
+    d_logic.lock();
+  }
+  if(d_logic.isTheoryEnabled(THEORY_ARRAY) || d_logic.isTheoryEnabled(THEORY_DATATYPES) || d_logic.isTheoryEnabled(THEORY_SETS)) {
+    if(!d_logic.isTheoryEnabled(THEORY_UF)) {
+      LogicInfo log(d_logic.getUnlockedCopy());
+      Trace("smt") << "because a theory that permits Boolean terms is enabled, also enabling UF" << endl;
+      log.enableTheory(THEORY_UF);
+      d_logic = log;
+      d_logic.lock();
+    }
+  }
+
+  // by default, symmetry breaker is on only for QF_UF
+  if(! options::ufSymmetryBreaker.wasSetByUser()) {
+    bool qf_uf = d_logic.isPure(THEORY_UF) && !d_logic.isQuantified() && !options::proof();
+    Trace("smt") << "setting uf symmetry breaker to " << qf_uf << endl;
+    options::ufSymmetryBreaker.set(qf_uf);
+  }
+  // by default, nonclausal simplification is off for QF_SAT
+  if(! options::simplificationMode.wasSetByUser()) {
+    bool qf_sat = d_logic.isPure(THEORY_BOOL) && !d_logic.isQuantified();
+    Trace("smt") << "setting simplification mode to <" << d_logic.getLogicString() << "> " << (!qf_sat) << endl;
+    //simplification=none works better for SMT LIB benchmarks with quantifiers, not others
+    //options::simplificationMode.set(qf_sat || quantifiers ? SIMPLIFICATION_MODE_NONE : SIMPLIFICATION_MODE_BATCH);
+    options::simplificationMode.set(qf_sat ? SIMPLIFICATION_MODE_NONE : SIMPLIFICATION_MODE_BATCH);
+  }
+
+  // If in arrays, set the UF handler to arrays
+  if(d_logic.isTheoryEnabled(THEORY_ARRAY) && ( !d_logic.isQuantified() ||
+     (d_logic.isQuantified() && !d_logic.isTheoryEnabled(THEORY_UF)))) {
+    Theory::setUninterpretedSortOwner(THEORY_ARRAY);
+  } else {
+    Theory::setUninterpretedSortOwner(THEORY_UF);
+  }
+
+  // Turn on ite simplification for QF_LIA and QF_AUFBV
+  // WARNING: These checks match much more than just QF_AUFBV and
+  // QF_LIA logics. --K [2014/10/15]
+  if(! options::doITESimp.wasSetByUser()) {
+    bool qf_aufbv = !d_logic.isQuantified() &&
+      d_logic.isTheoryEnabled(THEORY_ARRAY) &&
+      d_logic.isTheoryEnabled(THEORY_UF) &&
+      d_logic.isTheoryEnabled(THEORY_BV);
+    bool qf_lia = !d_logic.isQuantified() &&
+      d_logic.isPure(THEORY_ARITH) &&
+      d_logic.isLinear() &&
+      !d_logic.isDifferenceLogic() &&
+      !d_logic.areRealsUsed();
+
+    bool iteSimp = (qf_aufbv || qf_lia);
+    Trace("smt") << "setting ite simplification to " << iteSimp << endl;
+    options::doITESimp.set(iteSimp);
+  }
+  if(! options::compressItes.wasSetByUser() ){
+    bool qf_lia = !d_logic.isQuantified() &&
+      d_logic.isPure(THEORY_ARITH) &&
+      d_logic.isLinear() &&
+      !d_logic.isDifferenceLogic() &&
+      !d_logic.areRealsUsed();
+
+    bool compressIte = qf_lia;
+    Trace("smt") << "setting ite compression to " << compressIte << endl;
+    options::compressItes.set(compressIte);
+  }
+  if(! options::simplifyWithCareEnabled.wasSetByUser() ){
+    bool qf_aufbv = !d_logic.isQuantified() &&
+      d_logic.isTheoryEnabled(THEORY_ARRAY) &&
+      d_logic.isTheoryEnabled(THEORY_UF) &&
+      d_logic.isTheoryEnabled(THEORY_BV);
+
+    bool withCare = qf_aufbv;
+    Trace("smt") << "setting ite simplify with care to " << withCare << endl;
+    options::simplifyWithCareEnabled.set(withCare);
+  }
+  // Turn off array eager index splitting for QF_AUFLIA
+  if(! options::arraysEagerIndexSplitting.wasSetByUser()) {
+    if (not d_logic.isQuantified() &&
+        d_logic.isTheoryEnabled(THEORY_ARRAY) &&
+        d_logic.isTheoryEnabled(THEORY_UF) &&
+        d_logic.isTheoryEnabled(THEORY_ARITH)) {
+      Trace("smt") << "setting array eager index splitting to false" << endl;
+      options::arraysEagerIndexSplitting.set(false);
+    }
+  }
+  // Turn on model-based arrays for QF_AX (unless models are enabled)
+  // if(! options::arraysModelBased.wasSetByUser()) {
+  //   if (not d_logic.isQuantified() &&
+  //       d_logic.isTheoryEnabled(THEORY_ARRAY) &&
+  //       d_logic.isPure(THEORY_ARRAY) &&
+  //       !options::produceModels() &&
+  //       !options::checkModels()) {
+  //     Trace("smt") << "turning on model-based array solver" << endl;
+  //     options::arraysModelBased.set(true);
+  //   }
+  // }
+  // Turn on multiple-pass non-clausal simplification for QF_AUFBV
+  if(! options::repeatSimp.wasSetByUser()) {
+    bool repeatSimp = !d_logic.isQuantified() &&
+                      (d_logic.isTheoryEnabled(THEORY_ARRAY) &&
+                      d_logic.isTheoryEnabled(THEORY_UF) &&
+                      d_logic.isTheoryEnabled(THEORY_BV)) &&
+                      !options::unsatCores();
+    Trace("smt") << "setting repeat simplification to " << repeatSimp << endl;
+    options::repeatSimp.set(repeatSimp);
+  }
+  // Turn on unconstrained simplification for QF_AUFBV
+  if(!options::unconstrainedSimp.wasSetByUser() ||
+      options::incrementalSolving()) {
+    //    bool qf_sat = d_logic.isPure(THEORY_BOOL) && !d_logic.isQuantified();
+    //    bool uncSimp = false && !qf_sat && !options::incrementalSolving();
+    bool uncSimp = !options::incrementalSolving() &&
+                   !d_logic.isQuantified() &&
+                   !options::produceModels() &&
+                   !options::produceAssignments() &&
+                   !options::checkModels() &&
+                   !options::unsatCores() &&
+                   (d_logic.isTheoryEnabled(THEORY_ARRAY) && d_logic.isTheoryEnabled(THEORY_BV));
+    Trace("smt") << "setting unconstrained simplification to " << uncSimp << endl;
+    options::unconstrainedSimp.set(uncSimp);
+  }
+  // Unconstrained simp currently does *not* support model generation
+  if (options::unconstrainedSimp.wasSetByUser() && options::unconstrainedSimp()) {
+    if (options::produceModels()) {
+      if (options::produceModels.wasSetByUser()) {
+        throw OptionException("Cannot use unconstrained-simp with model generation.");
+      }
+      Notice() << "SmtEngine: turning off produce-models to support unconstrainedSimp" << endl;
+      setOption("produce-models", SExpr("false"));
+    }
+    if (options::produceAssignments()) {
+      if (options::produceAssignments.wasSetByUser()) {
+        throw OptionException("Cannot use unconstrained-simp with model generation (produce-assignments).");
+      }
+      Notice() << "SmtEngine: turning off produce-assignments to support unconstrainedSimp" << endl;
+      setOption("produce-assignments", SExpr("false"));
+    }
+    if (options::checkModels()) {
+      if (options::checkModels.wasSetByUser()) {
+        throw OptionException("Cannot use unconstrained-simp with model generation (check-models).");
+      }
+      Notice() << "SmtEngine: turning off check-models to support unconstrainedSimp" << endl;
+      setOption("check-models", SExpr("false"));
+    }
+  }
+
+
+  if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER &&
+      options::incrementalSolving()) {
+    if (options::incrementalSolving.wasSetByUser()) {
+      throw OptionException(std::string("Eager bit-blasting does not currently support incremental mode. \n\
+                                         Try --bitblast=lazy"));
+    }
+    Notice() << "SmtEngine: turning off incremental to support eager bit-blasting" << endl;
+    setOption("incremental", SExpr("false"));
+  }
+
+  if (! options::bvEagerExplanations.wasSetByUser() &&
+      d_logic.isTheoryEnabled(THEORY_ARRAY) &&
+      d_logic.isTheoryEnabled(THEORY_BV)) {
+    Trace("smt") << "enabling eager bit-vector explanations " << endl;
+    options::bvEagerExplanations.set(true);
+  }
+
+  if( !options::bitvectorEqualitySolver() ){
+    Trace("smt") << "disabling bvLazyRewriteExtf since equality solver is disabled" << endl;
+    options::bvLazyRewriteExtf.set(false);
+  }
+
+  // Turn on arith rewrite equalities only for pure arithmetic
+  if(! options::arithRewriteEq.wasSetByUser()) {
+    bool arithRewriteEq = d_logic.isPure(THEORY_ARITH) && !d_logic.isQuantified();
+    Trace("smt") << "setting arith rewrite equalities " << arithRewriteEq << endl;
+    options::arithRewriteEq.set(arithRewriteEq);
+  }
+  if(!  options::arithHeuristicPivots.wasSetByUser()) {
+    int16_t heuristicPivots = 5;
+    if(d_logic.isPure(THEORY_ARITH) && !d_logic.isQuantified()) {
+      if(d_logic.isDifferenceLogic()) {
+        heuristicPivots = -1;
+      } else if(!d_logic.areIntegersUsed()) {
+        heuristicPivots = 0;
+      }
+    }
+    Trace("smt") << "setting arithHeuristicPivots  " << heuristicPivots << endl;
+    options::arithHeuristicPivots.set(heuristicPivots);
+  }
+  if(! options::arithPivotThreshold.wasSetByUser()){
+    uint16_t pivotThreshold = 2;
+    if(d_logic.isPure(THEORY_ARITH) && !d_logic.isQuantified()){
+      if(d_logic.isDifferenceLogic()){
+        pivotThreshold = 16;
+      }
+    }
+    Trace("smt") << "setting arith arithPivotThreshold  " << pivotThreshold << endl;
+    options::arithPivotThreshold.set(pivotThreshold);
+  }
+  if(! options::arithStandardCheckVarOrderPivots.wasSetByUser()){
+    int16_t varOrderPivots = -1;
+    if(d_logic.isPure(THEORY_ARITH) && !d_logic.isQuantified()){
+      varOrderPivots = 200;
+    }
+    Trace("smt") << "setting arithStandardCheckVarOrderPivots  " << varOrderPivots << endl;
+    options::arithStandardCheckVarOrderPivots.set(varOrderPivots);
+  }
+  // Turn off early theory preprocessing if arithRewriteEq is on
+  if (options::arithRewriteEq()) {
+    d_earlyTheoryPP = false;
+  }
+
+  // Set decision mode based on logic (if not set by user)
+  if(!options::decisionMode.wasSetByUser()) {
+    decision::DecisionMode decMode =
+      // ALL
+      d_logic.hasEverything() ? decision::DECISION_STRATEGY_JUSTIFICATION :
+      ( // QF_BV
+        (not d_logic.isQuantified() &&
+          d_logic.isPure(THEORY_BV)
+          ) ||
+        // QF_AUFBV or QF_ABV or QF_UFBV
+        (not d_logic.isQuantified() &&
+         (d_logic.isTheoryEnabled(THEORY_ARRAY) ||
+          d_logic.isTheoryEnabled(THEORY_UF)) &&
+         d_logic.isTheoryEnabled(THEORY_BV)
+         ) ||
+        // QF_AUFLIA (and may be ends up enabling QF_AUFLRA?)
+        (not d_logic.isQuantified() &&
+         d_logic.isTheoryEnabled(THEORY_ARRAY) &&
+         d_logic.isTheoryEnabled(THEORY_UF) &&
+         d_logic.isTheoryEnabled(THEORY_ARITH)
+         ) ||
+        // QF_LRA
+        (not d_logic.isQuantified() &&
+         d_logic.isPure(THEORY_ARITH) && d_logic.isLinear() && !d_logic.isDifferenceLogic() &&  !d_logic.areIntegersUsed()
+         ) ||
+        // Quantifiers
+        d_logic.isQuantified() ||
+        // Strings
+        d_logic.isTheoryEnabled(THEORY_STRINGS)
+        ? decision::DECISION_STRATEGY_JUSTIFICATION
+        : decision::DECISION_STRATEGY_INTERNAL
+      );
+
+    bool stoponly =
+      // ALL
+      d_logic.hasEverything() || d_logic.isTheoryEnabled(THEORY_STRINGS) ? false :
+      ( // QF_AUFLIA
+        (not d_logic.isQuantified() &&
+         d_logic.isTheoryEnabled(THEORY_ARRAY) &&
+         d_logic.isTheoryEnabled(THEORY_UF) &&
+         d_logic.isTheoryEnabled(THEORY_ARITH)
+         ) ||
+        // QF_LRA
+        (not d_logic.isQuantified() &&
+         d_logic.isPure(THEORY_ARITH) && d_logic.isLinear() && !d_logic.isDifferenceLogic() &&  !d_logic.areIntegersUsed()
+         )
+        ? true : false
+      );
+
+    Trace("smt") << "setting decision mode to " << decMode << endl;
+    options::decisionMode.set(decMode);
+    options::decisionStopOnly.set(stoponly);
+  }
+  if( options::incrementalSolving() ){
+    //disable modes not supported by incremental
+    options::sortInference.set( false );
+    options::ufssFairnessMonotone.set( false );
+    options::quantEpr.set( false );
+  }
+  if( d_logic.hasCardinalityConstraints() ){
+    //must have finite model finding on
+    options::finiteModelFind.set( true );
+  }
+
+  //if it contains a theory with non-termination, do not strictly enforce that quantifiers and theory combination must be interleaved
+  if( d_logic.isTheoryEnabled(THEORY_STRINGS) || (d_logic.isTheoryEnabled(THEORY_ARITH) && !d_logic.isLinear()) ){
+    if( !options::instWhenStrictInterleave.wasSetByUser() ){
+      options::instWhenStrictInterleave.set( false );
+    }
+  }
+
+  //local theory extensions
+  if( options::localTheoryExt() ){
+    if( !options::instMaxLevel.wasSetByUser() ){
+      options::instMaxLevel.set( 0 );
+    }
+  }
+  if( options::instMaxLevel()!=-1 ){
+    Notice() << "SmtEngine: turning off cbqi to support instMaxLevel" << endl;
+    options::cbqi.set(false);
+  }
+  //track instantiations?
+  if( options::cbqiNestedQE() || ( options::proof() && !options::trackInstLemmas.wasSetByUser() ) ){
+    options::trackInstLemmas.set( true );
+  }
+
+  if( ( options::fmfBoundLazy.wasSetByUser() && options::fmfBoundLazy() ) ||
+      ( options::fmfBoundInt.wasSetByUser() && options::fmfBoundInt() ) ) {
+    options::fmfBound.set( true );
+  }
+  //now have determined whether fmfBoundInt is on/off
+  //apply fmfBoundInt options
+  if( options::fmfBound() ){
+    //must have finite model finding on
+    options::finiteModelFind.set( true );
+    if( ! options::mbqiMode.wasSetByUser() ||
+        ( options::mbqiMode()!=quantifiers::MBQI_NONE &&
+          options::mbqiMode()!=quantifiers::MBQI_FMC &&
+          options::mbqiMode()!=quantifiers::MBQI_FMC_INTERVAL ) ){
+      //if bounded integers are set, use no MBQI by default
+      options::mbqiMode.set( quantifiers::MBQI_NONE );
+    }
+    if( ! options::prenexQuant.wasSetByUser() ){
+      options::prenexQuant.set( quantifiers::PRENEX_QUANT_NONE );
+    }
+  }
+  if( options::ufssSymBreak() ){
+    options::sortInference.set( true );
+  }
+  if( options::fmfFunWellDefinedRelevant() ){
+    if( !options::fmfFunWellDefined.wasSetByUser() ){
+      options::fmfFunWellDefined.set( true );
+    }
+  }
+  if( options::fmfFunWellDefined() ){
+    if( !options::finiteModelFind.wasSetByUser() ){
+      options::finiteModelFind.set( true );
+    }
+  }
+  //EPR
+  if( options::quantEpr() ){
+    if( !options::preSkolemQuant.wasSetByUser() ){
+      options::preSkolemQuant.set( true );
+    }
+  }
+
+  //now, have determined whether finite model find is on/off
+  //apply finite model finding options
+  if( options::finiteModelFind() ){
+    //apply conservative quantifiers splitting
+    if( !options::quantDynamicSplit.wasSetByUser() ){
+      options::quantDynamicSplit.set( quantifiers::QUANT_DSPLIT_MODE_DEFAULT );
+    }
+    if( !options::eMatching.wasSetByUser() ){
+      options::eMatching.set( options::fmfInstEngine() );
+    }
+    if( !options::instWhenMode.wasSetByUser() ){
+      //instantiate only on last call  FIXME: remove?
+      if( options::eMatching() ){
+        options::instWhenMode.set( quantifiers::INST_WHEN_LAST_CALL );
+      }
+    }
+    if( options::mbqiMode()==quantifiers::MBQI_ABS ){
+      if( !options::preSkolemQuant.wasSetByUser() ){
+        options::preSkolemQuant.set( true );
+      }
+      if( !options::preSkolemQuantNested.wasSetByUser() ){
+        options::preSkolemQuantNested.set( true );
+      }
+      if( !options::fmfOneInstPerRound.wasSetByUser() ){
+        options::fmfOneInstPerRound.set( true );
+      }
+    }
+  }
+
+  //apply counterexample guided instantiation options
+  if( options::cegqiSingleInvMode()!=quantifiers::CEGQI_SI_MODE_NONE ){
+    if( !options::ceGuidedInst.wasSetByUser() ){
+      options::ceGuidedInst.set( true );
+    }
+  }
+  if( options::ceGuidedInst() ){
+    //counterexample-guided instantiation for sygus
+    if( !options::cegqiSingleInvMode.wasSetByUser() ){
+      options::cegqiSingleInvMode.set( quantifiers::CEGQI_SI_MODE_USE );
+    }
+    if( !options::quantConflictFind.wasSetByUser() ){
+      options::quantConflictFind.set( false );
+    }
+    if( !options::instNoEntail.wasSetByUser() ){
+      options::instNoEntail.set( false );
+    }
+    //do not allow partial functions
+    if( !options::bitvectorDivByZeroConst.wasSetByUser() ){
+      options::bitvectorDivByZeroConst.set( true );
+    }
+    if( !options::dtRewriteErrorSel.wasSetByUser() ){
+      options::dtRewriteErrorSel.set( true );
+    }
+    //do not miniscope
+    if( !options::miniscopeQuant.wasSetByUser() ){
+      options::miniscopeQuant.set( false );
+    }
+    if( !options::miniscopeQuantFreeVar.wasSetByUser() ){
+      options::miniscopeQuantFreeVar.set( false );
+    }
+    //rewrite divk
+    if( !options::rewriteDivk.wasSetByUser()) {
+      options::rewriteDivk.set( true );
+    }
+    //do not do macros
+    if( !options::macrosQuant.wasSetByUser()) {
+      options::macrosQuant.set( false );
+    }
+    if( !options::cbqiPreRegInst.wasSetByUser()) {
+      options::cbqiPreRegInst.set( true );
+    }
+  }
+  //counterexample-guided instantiation for non-sygus
+  // enable if any possible quantifiers with arithmetic, datatypes or bitvectors
+  if( ( d_logic.isQuantified() && ( d_logic.isTheoryEnabled(THEORY_ARITH) || d_logic.isTheoryEnabled(THEORY_DATATYPES) || d_logic.isTheoryEnabled(THEORY_BV) ) ) ||
+      options::cbqiAll() ){
+    if( !options::cbqi.wasSetByUser() ){
+      options::cbqi.set( true );
+    }
+  }
+  if( options::cbqi() ){
+    //must rewrite divk
+    if( !options::rewriteDivk.wasSetByUser()) {
+      options::rewriteDivk.set( true );
+    }
+    if( d_logic.isPure(THEORY_ARITH) ){
+      options::cbqiAll.set( false );
+      if( !options::quantConflictFind.wasSetByUser() ){
+        options::quantConflictFind.set( false );
+      }
+      if( !options::instNoEntail.wasSetByUser() ){
+        options::instNoEntail.set( false );
+      }
+      if( !options::instWhenMode.wasSetByUser() && options::cbqiModel() ){
+        //only instantiation should happen at last call when model is avaiable
+        options::instWhenMode.set( quantifiers::INST_WHEN_LAST_CALL );
+      }
+    }
+  }
+  //implied options...
+  if( options::strictTriggers() ){
+    if( !options::userPatternsQuant.wasSetByUser() ){
+      options::userPatternsQuant.set( quantifiers::USER_PAT_MODE_TRUST );
+    }
+  }
+  if( options::qcfMode.wasSetByUser() || options::qcfTConstraint() ){
+    options::quantConflictFind.set( true );
+  }
+  if( options::cbqiNestedQE() ){
+    //only sound with prenex = disj_normal or normal
+    if( options::prenexQuant()<=quantifiers::PRENEX_QUANT_DISJ_NORMAL ){
+      options::prenexQuant.set( quantifiers::PRENEX_QUANT_DISJ_NORMAL );
+    }
+    options::prenexQuantUser.set( true );
+    if( !options::preSkolemQuant.wasSetByUser() ){
+      options::preSkolemQuant.set( true );
+    }
+  }
+  //for induction techniques
+  if( options::quantInduction() ){
+    if( !options::dtStcInduction.wasSetByUser() ){
+      options::dtStcInduction.set( true );
+    }
+    if( !options::intWfInduction.wasSetByUser() ){
+      options::intWfInduction.set( true );
+    }
+  }
+  if( options::dtStcInduction() ){
+    //leads to unfairness FIXME
+    if( !options::dtForceAssignment.wasSetByUser() ){
+      options::dtForceAssignment.set( true );
+    }
+    //try to remove ITEs from quantified formulas
+    if( !options::iteDtTesterSplitQuant.wasSetByUser() ){
+      options::iteDtTesterSplitQuant.set( true );
+    }
+    if( !options::iteLiftQuant.wasSetByUser() ){
+      options::iteLiftQuant.set( quantifiers::ITE_LIFT_QUANT_MODE_ALL );
+    }
+  }
+  if( options::intWfInduction() ){
+    if( !options::purifyTriggers.wasSetByUser() ){
+      options::purifyTriggers.set( true );
+    }
+  }
+  if( options::conjectureNoFilter() ){
+    if( !options::conjectureFilterActiveTerms.wasSetByUser() ){
+      options::conjectureFilterActiveTerms.set( false );
+    }
+    if( !options::conjectureFilterCanonical.wasSetByUser() ){
+      options::conjectureFilterCanonical.set( false );
+    }
+    if( !options::conjectureFilterModel.wasSetByUser() ){
+      options::conjectureFilterModel.set( false );
+    }
+  }
+  if( options::conjectureGenPerRound.wasSetByUser() ){
+    if( options::conjectureGenPerRound()>0 ){
+      options::conjectureGen.set( true );
+    }else{
+      options::conjectureGen.set( false );
+    }
+  }
+  //can't pre-skolemize nested quantifiers without UF theory
+  if( !d_logic.isTheoryEnabled(THEORY_UF) && options::preSkolemQuant() ){
+    if( !options::preSkolemQuantNested.wasSetByUser() ){
+      options::preSkolemQuantNested.set( false );
+    }
+  }
+  if( !d_logic.isTheoryEnabled(THEORY_DATATYPES) ){
+    options::quantDynamicSplit.set( quantifiers::QUANT_DSPLIT_MODE_NONE );
+  }
+
+  //until bugs 371,431 are fixed
+  if( ! options::minisatUseElim.wasSetByUser()){
+    //AJR: cannot use minisat elim for new implementation of sets TODO: why?
+    if( d_logic.isTheoryEnabled(THEORY_SETS) || d_logic.isQuantified() || options::produceModels() || options::produceAssignments() || options::checkModels() ){
+      options::minisatUseElim.set( false );
+    }
+  }
+  else if (options::minisatUseElim()) {
+    if (options::produceModels()) {
+      Notice() << "SmtEngine: turning off produce-models to support minisatUseElim" << endl;
+      setOption("produce-models", SExpr("false"));
+    }
+    if (options::produceAssignments()) {
+      Notice() << "SmtEngine: turning off produce-assignments to support minisatUseElim" << endl;
+      setOption("produce-assignments", SExpr("false"));
+    }
+    if (options::checkModels()) {
+      Notice() << "SmtEngine: turning off check-models to support minisatUseElim" << endl;
+      setOption("check-models", SExpr("false"));
+    }
+  }
+
+  // For now, these array theory optimizations do not support model-building
+  if (options::produceModels() || options::produceAssignments() || options::checkModels()) {
+    options::arraysOptimizeLinear.set(false);
+    options::arraysLazyRIntro1.set(false);
+  }
+
+  // Non-linear arithmetic does not support models
+  if (d_logic.isTheoryEnabled(THEORY_ARITH) &&
+      !d_logic.isLinear()) {
+    if (options::produceModels()) {
+      if(options::produceModels.wasSetByUser()) {
+        throw OptionException("produce-model not supported with nonlinear arith");
+      }
+      Warning() << "SmtEngine: turning off produce-models because unsupported for nonlinear arith" << endl;
+      setOption("produce-models", SExpr("false"));
+    }
+    if (options::produceAssignments()) {
+      if(options::produceAssignments.wasSetByUser()) {
+        throw OptionException("produce-assignments not supported with nonlinear arith");
+      }
+      Warning() << "SmtEngine: turning off produce-assignments because unsupported for nonlinear arith" << endl;
+      setOption("produce-assignments", SExpr("false"));
+    }
+    if (options::checkModels()) {
+      if(options::checkModels.wasSetByUser()) {
+        throw OptionException("check-models not supported with nonlinear arith");
+      }
+      Warning() << "SmtEngine: turning off check-models because unsupported for nonlinear arith" << endl;
+      setOption("check-models", SExpr("false"));
+    }
+  }
+
+  if(options::incrementalSolving() && (options::proof() || options::unsatCores())) {
+    Warning() << "SmtEngine: turning off incremental solving mode (not yet supported with --proof or --produce-unsat-cores, try --tear-down-incremental instead)" << endl;
+    setOption("incremental", SExpr("false"));
+  }
+}
+
+void SmtEngine::setInfo(const std::string& key, const CVC4::SExpr& value)
+  throw(OptionException, ModalException) {
+
+  SmtScope smts(this);
+
+  Trace("smt") << "SMT setInfo(" << key << ", " << value << ")" << endl;
+
+  if(Dump.isOn("benchmark")) {
+    if(key == "status") {
+      string s = value.getValue();
+      BenchmarkStatus status =
+        (s == "sat") ? SMT_SATISFIABLE :
+          ((s == "unsat") ? SMT_UNSATISFIABLE : SMT_UNKNOWN);
+      Dump("benchmark") << SetBenchmarkStatusCommand(status);
+    } else {
+      Dump("benchmark") << SetInfoCommand(key, value);
+    }
+  }
+
+  // Check for CVC4-specific info keys (prefixed with "cvc4-" or "cvc4_")
+  if(key.length() > 5) {
+    string prefix = key.substr(0, 5);
+    if(prefix == "cvc4-" || prefix == "cvc4_") {
+      string cvc4key = key.substr(5);
+      if(cvc4key == "logic") {
+        if(! value.isAtom()) {
+          throw OptionException("argument to (set-info :cvc4-logic ..) must be a string");
+        }
+        SmtScope smts(this);
+        d_logic = value.getValue();
+        setLogicInternal();
+        return;
+      } else {
+        throw UnrecognizedOptionException();
+      }
+    }
+  }
+
+  // Check for standard info keys (SMT-LIB v1, SMT-LIB v2, ...)
+  if(key == "source" ||
+     key == "category" ||
+     key == "difficulty" ||
+     key == "notes") {
+    // ignore these
+    return;
+  } else if(key == "name") {
+    d_filename = value.getValue();
+    return;
+  } else if(key == "smt-lib-version") {
+    if( (value.isInteger() && value.getIntegerValue() == Integer(2)) ||
+        (value.isRational() && value.getRationalValue() == Rational(2)) ||
+        value.getValue() == "2" ||
+        value.getValue() == "2.0" ) {
+      // supported SMT-LIB version
+      if(!options::outputLanguage.wasSetByUser() &&
+         options::outputLanguage() == language::output::LANG_SMTLIB_V2_5) {
+        options::outputLanguage.set(language::output::LANG_SMTLIB_V2_0);
+        *options::out() << language::SetLanguage(language::output::LANG_SMTLIB_V2_0);
+      }
+      return;
+    } else if( (value.isRational() && value.getRationalValue() == Rational(5, 2)) ||
+               value.getValue() == "2.5" ) {
+      // supported SMT-LIB version
+      if(!options::outputLanguage.wasSetByUser() &&
+         options::outputLanguage() == language::output::LANG_SMTLIB_V2_0) {
+        options::outputLanguage.set(language::output::LANG_SMTLIB_V2_5);
+        *options::out() << language::SetLanguage(language::output::LANG_SMTLIB_V2_5);
+      }
+      return;
+    }
+    Warning() << "Warning: unsupported smt-lib-version: " << value << endl;
+    throw UnrecognizedOptionException();
+  } else if(key == "status") {
+    string s;
+    if(value.isAtom()) {
+      s = value.getValue();
+    }
+    if(s != "sat" && s != "unsat" && s != "unknown") {
+      throw OptionException("argument to (set-info :status ..) must be "
+                            "`sat' or `unsat' or `unknown'");
+    }
+    d_status = Result(s, d_filename);
+    return;
+  }
+  throw UnrecognizedOptionException();
+}
+
+CVC4::SExpr SmtEngine::getInfo(const std::string& key) const
+  throw(OptionException, ModalException) {
+
+  SmtScope smts(this);
+
+  Trace("smt") << "SMT getInfo(" << key << ")" << endl;
+  if(key == "all-statistics") {
+    vector<SExpr> stats;
+    for(StatisticsRegistry::const_iterator i = NodeManager::fromExprManager(d_exprManager)->getStatisticsRegistry()->begin();
+        i != NodeManager::fromExprManager(d_exprManager)->getStatisticsRegistry()->end();
+        ++i) {
+      vector<SExpr> v;
+      v.push_back((*i).first);
+      v.push_back((*i).second);
+      stats.push_back(v);
+    }
+    for(StatisticsRegistry::const_iterator i = d_statisticsRegistry->begin();
+        i != d_statisticsRegistry->end();
+        ++i) {
+      vector<SExpr> v;
+      v.push_back((*i).first);
+      v.push_back((*i).second);
+      stats.push_back(v);
+    }
+    return SExpr(stats);
+  } else if(key == "error-behavior") {
+    // immediate-exit | continued-execution
+    if( options::continuedExecution() || options::interactive() ) {
+      return SExpr(SExpr::Keyword("continued-execution"));
+    } else {
+      return SExpr(SExpr::Keyword("immediate-exit"));
+    }
+  } else if(key == "name") {
+    return SExpr(Configuration::getName());
+  } else if(key == "version") {
+    return SExpr(Configuration::getVersionString());
+  } else if(key == "authors") {
+    return SExpr(Configuration::about());
+  } else if(key == "status") {
+    // sat | unsat | unknown
+    switch(d_status.asSatisfiabilityResult().isSat()) {
+    case Result::SAT:
+      return SExpr(SExpr::Keyword("sat"));
+    case Result::UNSAT:
+      return SExpr(SExpr::Keyword("unsat"));
+    default:
+      return SExpr(SExpr::Keyword("unknown"));
+    }
+  } else if(key == "reason-unknown") {
+    if(!d_status.isNull() && d_status.isUnknown()) {
+      stringstream ss;
+      ss << d_status.whyUnknown();
+      string s = ss.str();
+      transform(s.begin(), s.end(), s.begin(), ::tolower);
+      return SExpr(SExpr::Keyword(s));
+    } else {
+      throw ModalException("Can't get-info :reason-unknown when the "
+                           "last result wasn't unknown!");
+    }
+  } else if(key == "assertion-stack-levels") {
+    AlwaysAssert(d_userLevels.size() <=
+                 std::numeric_limits<unsigned long int>::max());
+    return SExpr(static_cast<unsigned long int>(d_userLevels.size()));
+  } else if(key == "all-options") {
+    // get the options, like all-statistics
+    std::vector< std::vector<std::string> > current_options =
+      Options::current()->getOptions();
+    return SExpr::parseListOfListOfAtoms(current_options);
+  } else {
+    throw UnrecognizedOptionException();
+  }
+}
+
+void SmtEngine::defineFunction(Expr func,
+                               const std::vector<Expr>& formals,
+                               Expr formula) {
+  SmtScope smts(this);
+  doPendingPops();
+  Trace("smt") << "SMT defineFunction(" << func << ")" << endl;
+  for(std::vector<Expr>::const_iterator i = formals.begin(); i != formals.end(); ++i) {
+    if((*i).getKind() != kind::BOUND_VARIABLE) {
+      stringstream ss;
+      ss << "All formal arguments to defined functions must be BOUND_VARIABLEs, but in the\n"
+         << "definition of function " << func << ", formal\n"
+         << "  " << *i << "\n"
+         << "has kind " << (*i).getKind();
+      throw TypeCheckingException(func, ss.str());
+    }
+  }
+
+  stringstream ss;
+  ss << language::SetLanguage(language::SetLanguage::getLanguage(Dump.getStream()))
+     << func;
+  DefineFunctionCommand c(ss.str(), func, formals, formula);
+  addToModelCommandAndDump(c, ExprManager::VAR_FLAG_DEFINED, true, "declarations");
+
+
+  PROOF( if (options::checkUnsatCores()) {
+      d_defineCommands.push_back(c.clone());
+    });
+
+
+  // Substitute out any abstract values in formula
+  Expr form = d_private->substituteAbstractValues(Node::fromExpr(formula)).toExpr();
+
+  // type check body
+  Type formulaType = form.getType(options::typeChecking());
+
+  Type funcType = func.getType();
+  // We distinguish here between definitions of constants and functions,
+  // because the type checking for them is subtly different.  Perhaps we
+  // should instead have SmtEngine::defineFunction() and
+  // SmtEngine::defineConstant() for better clarity, although then that
+  // doesn't match the SMT-LIBv2 standard...
+  if(formals.size() > 0) {
+    Type rangeType = FunctionType(funcType).getRangeType();
+    if(! formulaType.isComparableTo(rangeType)) {
+      stringstream ss;
+      ss << "Type of defined function does not match its declaration\n"
+         << "The function  : " << func << "\n"
+         << "Declared type : " << rangeType << "\n"
+         << "The body      : " << formula << "\n"
+         << "Body type     : " << formulaType;
+      throw TypeCheckingException(func, ss.str());
+    }
+  } else {
+    if(! formulaType.isComparableTo(funcType)) {
+      stringstream ss;
+      ss << "Declared type of defined constant does not match its definition\n"
+         << "The constant   : " << func << "\n"
+         << "Declared type  : " << funcType << " " << Type::getTypeNode(funcType)->getId() << "\n"
+         << "The definition : " << formula << "\n"
+         << "Definition type: " << formulaType << " " << Type::getTypeNode(formulaType)->getId();
+      throw TypeCheckingException(func, ss.str());
+    }
+  }
+  TNode funcNode = func.getTNode();
+  vector<Node> formalsNodes;
+  for(vector<Expr>::const_iterator i = formals.begin(),
+        iend = formals.end();
+      i != iend;
+      ++i) {
+    formalsNodes.push_back((*i).getNode());
+  }
+  TNode formNode = form.getTNode();
+  DefinedFunction def(funcNode, formalsNodes, formNode);
+  // Permit (check-sat) (define-fun ...) (get-value ...) sequences.
+  // Otherwise, (check-sat) (get-value ((! foo :named bar))) breaks
+  // d_haveAdditions = true;
+  Debug("smt") << "definedFunctions insert " << funcNode << " " << formNode << endl;
+  d_definedFunctions->insert(funcNode, def);
+}
+
+bool SmtEngine::isDefinedFunction( Expr func ){
+  Node nf = Node::fromExpr( func );
+  Debug("smt") << "isDefined function " << nf << "?" << std::endl;
+  return d_definedFunctions->find(nf) != d_definedFunctions->end();
+}
+
+Node SmtEnginePrivate::expandDefinitions(TNode n, hash_map<Node, Node, NodeHashFunction>& cache, bool expandOnly)
+  throw(TypeCheckingException, LogicException, UnsafeInterruptException) {
+
+  stack< triple<Node, Node, bool> > worklist;
+  stack<Node> result;
+  worklist.push(make_triple(Node(n), Node(n), false));
+  // The worklist is made of triples, each is input / original node then the output / rewritten node
+  // and finally a flag tracking whether the children have been explored (i.e. if this is a downward
+  // or upward pass).
+
+  do {
+    spendResource(options::preprocessStep());
+    n = worklist.top().first;                      // n is the input / original
+    Node node = worklist.top().second;             // node is the output / result
+    bool childrenPushed = worklist.top().third;
+    worklist.pop();
+
+    // Working downwards
+    if(!childrenPushed) {
+      Kind k = n.getKind();
+
+      // Apart from apply, we can short circuit leaves
+      if(k != kind::APPLY && n.getNumChildren() == 0) {
+        SmtEngine::DefinedFunctionMap::const_iterator i = d_smt.d_definedFunctions->find(n);
+        if(i != d_smt.d_definedFunctions->end()) {
+          // replacement must be closed
+          if((*i).second.getFormals().size() > 0) {
+            result.push(d_smt.d_nodeManager->mkNode(kind::LAMBDA, d_smt.d_nodeManager->mkNode(kind::BOUND_VAR_LIST, (*i).second.getFormals()), (*i).second.getFormula()));
+            continue;
+          }
+          // don't bother putting in the cache
+          result.push((*i).second.getFormula());
+          continue;
+        }
+        // don't bother putting in the cache
+        result.push(n);
+        continue;
+      }
+
+      // maybe it's in the cache
+      hash_map<Node, Node, NodeHashFunction>::iterator cacheHit = cache.find(n);
+      if(cacheHit != cache.end()) {
+        TNode ret = (*cacheHit).second;
+        result.push(ret.isNull() ? n : ret);
+        continue;
+      }
+
+      // otherwise expand it
+      bool doExpand = ( k == kind::APPLY && n.getOperator().getKind() != kind::LAMBDA );
+      if( !doExpand ){
+        if( options::macrosQuant() ){
+          //expand if we have inferred an operator corresponds to a defined function
+          doExpand = k==kind::APPLY_UF && d_smt.isDefinedFunction( n.getOperator().toExpr() );
+        }
+      }
+      if (doExpand) {
+        // application of a user-defined symbol
+        TNode func = n.getOperator();
+        SmtEngine::DefinedFunctionMap::const_iterator i = d_smt.d_definedFunctions->find(func);
+        if(i == d_smt.d_definedFunctions->end()) {
+          throw TypeCheckingException(n.toExpr(), string("Undefined function: `") + func.toString() + "'");
+        }
+        DefinedFunction def = (*i).second;
+        vector<Node> formals = def.getFormals();
+
+        if(Debug.isOn("expand")) {
+          Debug("expand") << "found: " << n << endl;
+          Debug("expand") << " func: " << func << endl;
+          string name = func.getAttribute(expr::VarNameAttr());
+          Debug("expand") << "     : \"" << name << "\"" << endl;
+        }
+        if(Debug.isOn("expand")) {
+          Debug("expand") << " defn: " << def.getFunction() << endl
+                          << "       [";
+          if(formals.size() > 0) {
+            copy( formals.begin(), formals.end() - 1,
+                  ostream_iterator<Node>(Debug("expand"), ", ") );
+            Debug("expand") << formals.back();
+          }
+          Debug("expand") << "]" << endl
+                          << "       " << def.getFunction().getType() << endl
+                          << "       " << def.getFormula() << endl;
+        }
+
+        TNode fm = def.getFormula();
+        Node instance = fm.substitute(formals.begin(), formals.end(),
+                                      n.begin(), n.end());
+        Debug("expand") << "made : " << instance << endl;
+
+        Node expanded = expandDefinitions(instance, cache, expandOnly);
+        cache[n] = (n == expanded ? Node::null() : expanded);
+        result.push(expanded);
+        continue;
+
+      } else if(! expandOnly) {
+        // do not do any theory stuff if expandOnly is true
+
+        theory::Theory* t = d_smt.d_theoryEngine->theoryOf(node);
+
+        Assert(t != NULL);
+        LogicRequest req(d_smt);
+        node = t->expandDefinition(req, n);
+      }
+
+      // there should be children here, otherwise we short-circuited a result-push/continue, above
+      if (node.getNumChildren() == 0) {
+        Debug("expand") << "Unexpectedly no children..." << node << endl;
+      }
+      // This invariant holds at the moment but it is concievable that a new theory
+      // might introduce a kind which can have children before definition expansion but doesn't
+      // afterwards.  If this happens, remove this assertion.
+      Assert(node.getNumChildren() > 0);
+
+      // the partial functions can fall through, in which case we still
+      // consider their children
+      worklist.push(make_triple(Node(n), node, true));            // Original and rewritten result
+
+      for(size_t i = 0; i < node.getNumChildren(); ++i) {
+        worklist.push(make_triple(node[i], node[i], false));      // Rewrite the children of the result only
+      }
+
+    } else {
+      // Working upwards
+      // Reconstruct the node from it's (now rewritten) children on the stack
+
+      Debug("expand") << "cons : " << node << endl;
+      //cout << "cons : " << node << endl;
+      NodeBuilder<> nb(node.getKind());
+      if(node.getMetaKind() == kind::metakind::PARAMETERIZED) {
+        Debug("expand") << "op   : " << node.getOperator() << endl;
+        //cout << "op   : " << node.getOperator() << endl;
+        nb << node.getOperator();
+      }
+      for(size_t i = 0; i < node.getNumChildren(); ++i) {
+        Assert(!result.empty());
+        Node expanded = result.top();
+        result.pop();
+        //cout << "exchld : " << expanded << endl;
+        Debug("expand") << "exchld : " << expanded << endl;
+        nb << expanded;
+      }
+      node = nb;
+      cache[n] = n == node ? Node::null() : node;           // Only cache once all subterms are expanded
+      result.push(node);
+    }
+  } while(!worklist.empty());
+
+  AlwaysAssert(result.size() == 1);
+
+  return result.top();
+}
+
+//TODO: clean this up
+struct intToBV_stack_element {
+  TNode node;
+  bool children_added;
+  intToBV_stack_element(TNode node)
+  : node(node), children_added(false) {}
+};/* struct intToBV_stack_element */
+
+typedef std::hash_map<Node, Node, NodeHashFunction> NodeMap;
+
+Node SmtEnginePrivate::intToBVMakeBinary(TNode n, NodeMap& cache) {
+  // Do a topological sort of the subexpressions and substitute them
+  vector<intToBV_stack_element> toVisit;
+  toVisit.push_back(n);
+
+  while (!toVisit.empty())
+  {
+    // The current node we are processing
+    intToBV_stack_element& stackHead = toVisit.back();
+    TNode current = stackHead.node;
+
+    NodeMap::iterator find = cache.find(current);
+    if (find != cache.end()) {
+      toVisit.pop_back();
+      continue;
+    }
+    if (stackHead.children_added) {
+      // Children have been processed, so rebuild this node
+      Node result;
+      NodeManager* nm = NodeManager::currentNM();
+      if (current.getNumChildren() > 2 && (current.getKind() == kind::PLUS || current.getKind() == kind::MULT)) {
+        Assert(cache.find(current[0]) != cache.end());
+        result = cache[current[0]];
+        for (unsigned i = 1; i < current.getNumChildren(); ++ i) {
+          Assert(cache.find(current[i]) != cache.end());
+          Node child = current[i];
+          Node childRes = cache[current[i]];
+          result = nm->mkNode(current.getKind(), result, childRes);
+        }
+      }
+      else {
+        NodeBuilder<> builder(current.getKind());
+        for (unsigned i = 0; i < current.getNumChildren(); ++ i) {
+          Assert(cache.find(current[i]) != cache.end());
+          builder << cache[current[i]];
+        }
+        result = builder;
+      }
+      cache[current] = result;
+      toVisit.pop_back();
+    } else {
+      // Mark that we have added the children if any
+      if (current.getNumChildren() > 0) {
+        stackHead.children_added = true;
+        // We need to add the children
+        for(TNode::iterator child_it = current.begin(); child_it != current.end(); ++ child_it) {
+          TNode childNode = *child_it;
+          NodeMap::iterator childFind = cache.find(childNode);
+          if (childFind == cache.end()) {
+            toVisit.push_back(childNode);
+          }
+        }
+      } else {
+        cache[current] = current;
+        toVisit.pop_back();
+      }
+    }
+  }
+  return cache[n];
+}
+
+Node SmtEnginePrivate::intToBV(TNode n, NodeMap& cache) {
+  int size = options::solveIntAsBV();
+  AlwaysAssert(size > 0);
+  AlwaysAssert(!options::incrementalSolving());
+
+  vector<intToBV_stack_element> toVisit;
+  NodeMap binaryCache;
+  Node n_binary = intToBVMakeBinary(n, binaryCache);
+  toVisit.push_back(TNode(n_binary));
+
+  while (!toVisit.empty())
+  {
+    // The current node we are processing
+    intToBV_stack_element& stackHead = toVisit.back();
+    TNode current = stackHead.node;
+
+    // If node is already in the cache we're done, pop from the stack
+    NodeMap::iterator find = cache.find(current);
+    if (find != cache.end()) {
+      toVisit.pop_back();
+      continue;
+    }
+
+    // Not yet substituted, so process
+    NodeManager* nm = NodeManager::currentNM();
+    if (stackHead.children_added) {
+      // Children have been processed, so rebuild this node
+      vector<Node> children;
+      unsigned max = 0;
+      for (unsigned i = 0; i < current.getNumChildren(); ++ i) {
+        Assert(cache.find(current[i]) != cache.end());
+        TNode childRes = cache[current[i]];
+        TypeNode type = childRes.getType();
+        if (type.isBitVector()) {
+          unsigned bvsize = type.getBitVectorSize();
+          if (bvsize > max) {
+            max = bvsize;
+          }
+        }
+        children.push_back(childRes);
+      }
+
+      kind::Kind_t newKind = current.getKind();
+      if (max > 0) {
+        switch (newKind) {
+          case kind::PLUS:
+            Assert(children.size() == 2);
+            newKind = kind::BITVECTOR_PLUS;
+            max = max + 1;
+            break;
+          case kind::MULT:
+            Assert(children.size() == 2);
+            newKind = kind::BITVECTOR_MULT;
+            max = max * 2;
+            break;
+          case kind::MINUS:
+            Assert(children.size() == 2);
+            newKind = kind::BITVECTOR_SUB;
+            max = max + 1;
+            break;
+          case kind::UMINUS:
+            Assert(children.size() == 1);
+            newKind = kind::BITVECTOR_NEG;
+            max = max + 1;
+            break;
+          case kind::LT:
+            newKind = kind::BITVECTOR_SLT;
+            break;
+          case kind::LEQ:
+            newKind = kind::BITVECTOR_SLE;
+            break;
+          case kind::GT:
+            newKind = kind::BITVECTOR_SGT;
+            break;
+          case kind::GEQ:
+            newKind = kind::BITVECTOR_SGE;
+            break;
+          case kind::EQUAL:
+          case kind::ITE:
+            break;
+          default:
+            if (Theory::theoryOf(current) == THEORY_BOOL) {
+              break;
+            }
+            throw TypeCheckingException(current.toExpr(), string("Cannot translate to BV: ") + current.toString());
+        }
+        for (unsigned i = 0; i < children.size(); ++i) {
+          TypeNode type = children[i].getType();
+          if (!type.isBitVector()) {
+            continue;
+          }
+          unsigned bvsize = type.getBitVectorSize();
+          if (bvsize < max) {
+            // sign extend
+            Node signExtendOp = nm->mkConst<BitVectorSignExtend>(BitVectorSignExtend(max - bvsize));
+            children[i] = nm->mkNode(signExtendOp, children[i]);
+          }
+        }
+      }
+      NodeBuilder<> builder(newKind);
+      for (unsigned i = 0; i < children.size(); ++i) {
+        builder << children[i];
+      }
+      // Mark the substitution and continue
+      Node result = builder;
+
+      result = Rewriter::rewrite(result);
+      cache[current] = result;
+      toVisit.pop_back();
+    } else {
+      // Mark that we have added the children if any
+      if (current.getNumChildren() > 0) {
+        stackHead.children_added = true;
+        // We need to add the children
+        for(TNode::iterator child_it = current.begin(); child_it != current.end(); ++ child_it) {
+          TNode childNode = *child_it;
+          NodeMap::iterator childFind = cache.find(childNode);
+          if (childFind == cache.end()) {
+            toVisit.push_back(childNode);
+          }
+        }
+      } else {
+        // It's a leaf: could be a variable or a numeral
+        Node result = current;
+        if (current.isVar()) {
+          if (current.getType() == nm->integerType()) {
+            result = nm->mkSkolem("__intToBV_var", nm->mkBitVectorType(size),
+                                  "Variable introduced in intToBV pass");
+          }
+          else {
+            AlwaysAssert(current.getType() == nm->booleanType());
+          }
+        }
+        else if (current.isConst()) {
+          switch (current.getKind()) {
+            case kind::CONST_RATIONAL: {
+              Rational constant = current.getConst<Rational>();
+              AlwaysAssert(constant.isIntegral());
+              AlwaysAssert(constant >= 0);
+              BitVector bv(size, constant.getNumerator());
+              if (bv.toSignedInt() != constant.getNumerator()) {
+                throw TypeCheckingException(current.toExpr(), string("Not enough bits for constant in intToBV: ") + current.toString());
+              }
+              result = nm->mkConst(bv);
+              break;
+            }
+            case kind::CONST_BOOLEAN:
+              break;
+            default:
+              throw TypeCheckingException(current.toExpr(), string("Cannot translate const to BV: ") + current.toString());
+          }
+        }
+        else {
+          throw TypeCheckingException(current.toExpr(), string("Cannot translate to BV: ") + current.toString());
+        }
+        cache[current] = result;
+        toVisit.pop_back();
+      }
+    }
+  }
+  return cache[n_binary];
+}
+
+void SmtEnginePrivate::removeITEs() {
+  d_smt.finalOptionsAreSet();
+  spendResource(options::preprocessStep());
+  Trace("simplify") << "SmtEnginePrivate::removeITEs()" << endl;
+
+  // Remove all of the ITE occurrences and normalize
+  d_iteRemover.run(d_assertions.ref(), d_iteSkolemMap, true);
+  for (unsigned i = 0; i < d_assertions.size(); ++ i) {
+    d_assertions.replace(i, Rewriter::rewrite(d_assertions[i]));
+  }
+}
+
+void SmtEnginePrivate::staticLearning() {
+  d_smt.finalOptionsAreSet();
+  spendResource(options::preprocessStep());
+
+  TimerStat::CodeTimer staticLearningTimer(d_smt.d_stats->d_staticLearningTime);
+
+  Trace("simplify") << "SmtEnginePrivate::staticLearning()" << endl;
+
+  for (unsigned i = 0; i < d_assertions.size(); ++ i) {
+
+    NodeBuilder<> learned(kind::AND);
+    learned << d_assertions[i];
+    d_smt.d_theoryEngine->ppStaticLearn(d_assertions[i], learned);
+    if(learned.getNumChildren() == 1) {
+      learned.clear();
+    } else {
+      d_assertions.replace(i, learned);
+    }
+  }
+}
+
+// do dumping (before/after any preprocessing pass)
+static void dumpAssertions(const char* key, const AssertionPipeline& assertionList) {
+  if( Dump.isOn("assertions") &&
+      Dump.isOn(string("assertions:") + key) ) {
+    // Push the simplified assertions to the dump output stream
+    for(unsigned i = 0; i < assertionList.size(); ++ i) {
+      TNode n = assertionList[i];
+      Dump("assertions") << AssertCommand(Expr(n.toExpr()));
+    }
+  }
+}
+
+// returns false if it learns a conflict
+bool SmtEnginePrivate::nonClausalSimplify() {
+  spendResource(options::preprocessStep());
+  d_smt.finalOptionsAreSet();
+
+  if(options::unsatCores() || options::fewerPreprocessingHoles()) {
+    return true;
+  }
+
+  TimerStat::CodeTimer nonclausalTimer(d_smt.d_stats->d_nonclausalSimplificationTime);
+
+  Trace("simplify") << "SmtEnginePrivate::nonClausalSimplify()" << endl;
+  for (unsigned i = 0; i < d_assertions.size(); ++ i) {
+    Trace("simplify") << "Assertion #" << i << " : " << d_assertions[i] << std::endl;
+  }
+
+  if(d_propagatorNeedsFinish) {
+    d_propagator.finish();
+    d_propagatorNeedsFinish = false;
+  }
+  d_propagator.initialize();
+
+  // Assert all the assertions to the propagator
+  Trace("simplify") << "SmtEnginePrivate::nonClausalSimplify(): "
+                    << "asserting to propagator" << endl;
+  for (unsigned i = 0; i < d_assertions.size(); ++ i) {
+    Assert(Rewriter::rewrite(d_assertions[i]) == d_assertions[i]);
+    // Don't reprocess substitutions
+    if (d_substitutionsIndex > 0 && i == d_substitutionsIndex) {
+      continue;
+    }
+    Trace("simplify") << "SmtEnginePrivate::nonClausalSimplify(): asserting " << d_assertions[i] << endl;
+    Debug("cores") << "d_propagator assertTrue: " << d_assertions[i] << std::endl;
+    d_propagator.assertTrue(d_assertions[i]);
+  }
+
+  Trace("simplify") << "SmtEnginePrivate::nonClausalSimplify(): "
+                    << "propagating" << endl;
+  if (d_propagator.propagate()) {
+    // If in conflict, just return false
+    Trace("simplify") << "SmtEnginePrivate::nonClausalSimplify(): "
+                      << "conflict in non-clausal propagation" << endl;
+    Node falseNode = NodeManager::currentNM()->mkConst<bool>(false);
+    Assert(!options::unsatCores() && !options::fewerPreprocessingHoles());
+    d_assertions.clear();
+    addFormula(falseNode, false, false);
+    d_propagatorNeedsFinish = true;
+    return false;
+  }
+
+
+  Trace("simplify") << "Iterate through " << d_nonClausalLearnedLiterals.size() << " learned literals." << std::endl;
+  // No conflict, go through the literals and solve them
+  SubstitutionMap constantPropagations(d_smt.d_context);
+  SubstitutionMap newSubstitutions(d_smt.d_context);
+  SubstitutionMap::iterator pos;
+  unsigned j = 0;
+  for(unsigned i = 0, i_end = d_nonClausalLearnedLiterals.size(); i < i_end; ++ i) {
+    // Simplify the literal we learned wrt previous substitutions
+    Node learnedLiteral = d_nonClausalLearnedLiterals[i];
+    Assert(Rewriter::rewrite(learnedLiteral) == learnedLiteral);
+    Assert(d_topLevelSubstitutions.apply(learnedLiteral) == learnedLiteral);
+    Trace("simplify") << "Process learnedLiteral : " << learnedLiteral << std::endl;
+    Node learnedLiteralNew = newSubstitutions.apply(learnedLiteral);
+    if (learnedLiteral != learnedLiteralNew) {
+      learnedLiteral = Rewriter::rewrite(learnedLiteralNew);
+    }
+    Trace("simplify") << "Process learnedLiteral, after newSubs : " << learnedLiteral << std::endl;
+    for (;;) {
+      learnedLiteralNew = constantPropagations.apply(learnedLiteral);
+      if (learnedLiteralNew == learnedLiteral) {
+        break;
+      }
+      ++d_smt.d_stats->d_numConstantProps;
+      learnedLiteral = Rewriter::rewrite(learnedLiteralNew);
+    }
+    Trace("simplify") << "Process learnedLiteral, after constProp : " << learnedLiteral << std::endl;
+    // It might just simplify to a constant
+    if (learnedLiteral.isConst()) {
+      if (learnedLiteral.getConst<bool>()) {
+        // If the learned literal simplifies to true, it's redundant
+        continue;
+      } else {
+        // If the learned literal simplifies to false, we're in conflict
+        Trace("simplify") << "SmtEnginePrivate::nonClausalSimplify(): "
+                          << "conflict with "
+                          << d_nonClausalLearnedLiterals[i] << endl;
+        Assert(!options::unsatCores());
+        d_assertions.clear();
+        addFormula(NodeManager::currentNM()->mkConst<bool>(false), false, false);
+        d_propagatorNeedsFinish = true;
+        return false;
+      }
+    }
+
+    // Solve it with the corresponding theory, possibly adding new
+    // substitutions to newSubstitutions
+    Trace("simplify") << "SmtEnginePrivate::nonClausalSimplify(): "
+                      << "solving " << learnedLiteral << endl;
+
+    Theory::PPAssertStatus solveStatus =
+      d_smt.d_theoryEngine->solve(learnedLiteral, newSubstitutions);
+
+    switch (solveStatus) {
+      case Theory::PP_ASSERT_STATUS_SOLVED: {
+        // The literal should rewrite to true
+        Trace("simplify") << "SmtEnginePrivate::nonClausalSimplify(): "
+                          << "solved " << learnedLiteral << endl;
+        Assert(Rewriter::rewrite(newSubstitutions.apply(learnedLiteral)).isConst());
+        //        vector<pair<Node, Node> > equations;
+        //        constantPropagations.simplifyLHS(d_topLevelSubstitutions, equations, true);
+        //        if (equations.empty()) {
+        //          break;
+        //        }
+        //        Assert(equations[0].first.isConst() && equations[0].second.isConst() && equations[0].first != equations[0].second);
+        // else fall through
+        break;
+      }
+      case Theory::PP_ASSERT_STATUS_CONFLICT:
+        // If in conflict, we return false
+        Trace("simplify") << "SmtEnginePrivate::nonClausalSimplify(): "
+                          << "conflict while solving "
+                          << learnedLiteral << endl;
+        Assert(!options::unsatCores());
+        d_assertions.clear();
+        addFormula(NodeManager::currentNM()->mkConst<bool>(false), false, false);
+        d_propagatorNeedsFinish = true;
+        return false;
+      default:
+        if (d_doConstantProp && learnedLiteral.getKind() == kind::EQUAL && (learnedLiteral[0].isConst() || learnedLiteral[1].isConst())) {
+          // constant propagation
+          TNode t;
+          TNode c;
+          if (learnedLiteral[0].isConst()) {
+            t = learnedLiteral[1];
+            c = learnedLiteral[0];
+          }
+          else {
+            t = learnedLiteral[0];
+            c = learnedLiteral[1];
+          }
+          Assert(!t.isConst());
+          Assert(constantPropagations.apply(t) == t);
+          Assert(d_topLevelSubstitutions.apply(t) == t);
+          Assert(newSubstitutions.apply(t) == t);
+          constantPropagations.addSubstitution(t, c);
+          // vector<pair<Node,Node> > equations;
+          // constantPropagations.simplifyLHS(t, c, equations, true);
+          // if (!equations.empty()) {
+          //   Assert(equations[0].first.isConst() && equations[0].second.isConst() && equations[0].first != equations[0].second);
+          //   d_assertions.clear();
+          //   addFormula(NodeManager::currentNM()->mkConst<bool>(false), false, false);
+          //   return;
+          // }
+          // d_topLevelSubstitutions.simplifyRHS(constantPropagations);
+        }
+        else {
+          // Keep the literal
+          d_nonClausalLearnedLiterals[j++] = d_nonClausalLearnedLiterals[i];
+        }
+        break;
+    }
+
+#ifdef CVC4_ASSERTIONS
+    // Check data structure invariants:
+    // 1. for each lhs of d_topLevelSubstitutions, does not appear anywhere in rhs of d_topLevelSubstitutions or anywhere in constantPropagations
+    // 2. each lhs of constantPropagations rewrites to itself
+    // 3. if l -> r is a constant propagation and l is a subterm of l' with l' -> r' another constant propagation, then l'[l/r] -> r' should be a
+    //    constant propagation too
+    // 4. each lhs of constantPropagations is different from each rhs
+    for (pos = newSubstitutions.begin(); pos != newSubstitutions.end(); ++pos) {
+      Assert((*pos).first.isVar());
+      Assert(d_topLevelSubstitutions.apply((*pos).first) == (*pos).first);
+      Assert(d_topLevelSubstitutions.apply((*pos).second) == (*pos).second);
+      Assert(newSubstitutions.apply(newSubstitutions.apply((*pos).second)) == newSubstitutions.apply((*pos).second));
+    }
+    for (pos = constantPropagations.begin(); pos != constantPropagations.end(); ++pos) {
+      Assert((*pos).second.isConst());
+      Assert(Rewriter::rewrite((*pos).first) == (*pos).first);
+      // Node newLeft = d_topLevelSubstitutions.apply((*pos).first);
+      // if (newLeft != (*pos).first) {
+      //   newLeft = Rewriter::rewrite(newLeft);
+      //   Assert(newLeft == (*pos).second ||
+      //          (constantPropagations.hasSubstitution(newLeft) && constantPropagations.apply(newLeft) == (*pos).second));
+      // }
+      // newLeft = constantPropagations.apply((*pos).first);
+      // if (newLeft != (*pos).first) {
+      //   newLeft = Rewriter::rewrite(newLeft);
+      //   Assert(newLeft == (*pos).second ||
+      //          (constantPropagations.hasSubstitution(newLeft) && constantPropagations.apply(newLeft) == (*pos).second));
+      // }
+      Assert(constantPropagations.apply((*pos).second) == (*pos).second);
+    }
+#endif /* CVC4_ASSERTIONS */
+  }
+  // Resize the learnt
+  Trace("simplify") << "Resize non-clausal learned literals to " << j << std::endl;
+  d_nonClausalLearnedLiterals.resize(j);
+
+  hash_set<TNode, TNodeHashFunction> s;
+  Trace("debugging") << "NonClausal simplify pre-preprocess\n";
+  for (unsigned i = 0; i < d_assertions.size(); ++ i) {
+    Node assertion = d_assertions[i];
+    Node assertionNew = newSubstitutions.apply(assertion);
+    Trace("debugging") << "assertion = " << assertion << endl;
+    Trace("debugging") << "assertionNew = " << assertionNew << endl;
+    if (assertion != assertionNew) {
+      assertion = Rewriter::rewrite(assertionNew);
+      Trace("debugging") << "rewrite(assertion) = " << assertion << endl;
+    }
+    Assert(Rewriter::rewrite(assertion) == assertion);
+    for (;;) {
+      assertionNew = constantPropagations.apply(assertion);
+      if (assertionNew == assertion) {
+        break;
+      }
+      ++d_smt.d_stats->d_numConstantProps;
+      Trace("debugging") << "assertionNew = " << assertionNew << endl;
+      assertion = Rewriter::rewrite(assertionNew);
+      Trace("debugging") << "assertionNew = " << assertionNew << endl;
+    }
+    Trace("debugging") << "\n";
+    s.insert(assertion);
+    d_assertions.replace(i, assertion);
+    Trace("simplify") << "SmtEnginePrivate::nonClausalSimplify(): "
+                      << "non-clausal preprocessed: "
+                      << assertion << endl;
+  }
+
+  // If in incremental mode, add substitutions to the list of assertions
+  if (d_substitutionsIndex > 0) {
+    NodeBuilder<> substitutionsBuilder(kind::AND);
+    substitutionsBuilder << d_assertions[d_substitutionsIndex];
+    pos = newSubstitutions.begin();
+    for (; pos != newSubstitutions.end(); ++pos) {
+      // Add back this substitution as an assertion
+      TNode lhs = (*pos).first, rhs = newSubstitutions.apply((*pos).second);
+      Node n = NodeManager::currentNM()->mkNode(kind::EQUAL, lhs, rhs);
+      substitutionsBuilder << n;
+      Trace("simplify") << "SmtEnginePrivate::nonClausalSimplify(): will notify SAT layer of substitution: " << n << endl;
+    }
+    if (substitutionsBuilder.getNumChildren() > 1) {
+      d_assertions.replace(d_substitutionsIndex,
+        Rewriter::rewrite(Node(substitutionsBuilder)));
+    }
+  } else {
+    // If not in incremental mode, must add substitutions to model
+    TheoryModel* m = d_smt.d_theoryEngine->getModel();
+    if(m != NULL) {
+      for(pos = newSubstitutions.begin(); pos != newSubstitutions.end(); ++pos) {
+        Node n = (*pos).first;
+        Node v = newSubstitutions.apply((*pos).second);
+        Trace("model") << "Add substitution : " << n << " " << v << endl;
+        m->addSubstitution( n, v );
+      }
+    }
+  }
+
+  NodeBuilder<> learnedBuilder(kind::AND);
+  Assert(d_realAssertionsEnd <= d_assertions.size());
+  learnedBuilder << d_assertions[d_realAssertionsEnd - 1];
+
+  for (unsigned i = 0; i < d_nonClausalLearnedLiterals.size(); ++ i) {
+    Node learned = d_nonClausalLearnedLiterals[i];
+    Assert(d_topLevelSubstitutions.apply(learned) == learned);
+    Node learnedNew = newSubstitutions.apply(learned);
+    if (learned != learnedNew) {
+      learned = Rewriter::rewrite(learnedNew);
+    }
+    Assert(Rewriter::rewrite(learned) == learned);
+    for (;;) {
+      learnedNew = constantPropagations.apply(learned);
+      if (learnedNew == learned) {
+        break;
+      }
+      ++d_smt.d_stats->d_numConstantProps;
+      learned = Rewriter::rewrite(learnedNew);
+    }
+    if (s.find(learned) != s.end()) {
+      continue;
+    }
+    s.insert(learned);
+    learnedBuilder << learned;
+    Trace("simplify") << "SmtEnginePrivate::nonClausalSimplify(): "
+                      << "non-clausal learned : "
+                      << learned << endl;
+  }
+  d_nonClausalLearnedLiterals.clear();
+
+  for (pos = constantPropagations.begin(); pos != constantPropagations.end(); ++pos) {
+    Node cProp = (*pos).first.eqNode((*pos).second);
+    Assert(d_topLevelSubstitutions.apply(cProp) == cProp);
+    Node cPropNew = newSubstitutions.apply(cProp);
+    if (cProp != cPropNew) {
+      cProp = Rewriter::rewrite(cPropNew);
+      Assert(Rewriter::rewrite(cProp) == cProp);
+    }
+    if (s.find(cProp) != s.end()) {
+      continue;
+    }
+    s.insert(cProp);
+    learnedBuilder << cProp;
+    Trace("simplify") << "SmtEnginePrivate::nonClausalSimplify(): "
+                      << "non-clausal constant propagation : "
+                      << cProp << endl;
+  }
+
+  // Add new substitutions to topLevelSubstitutions
+  // Note that we don't have to keep rhs's in full solved form
+  // because SubstitutionMap::apply does a fixed-point iteration when substituting
+  d_topLevelSubstitutions.addSubstitutions(newSubstitutions);
+
+  if(learnedBuilder.getNumChildren() > 1) {
+    d_assertions.replace(d_realAssertionsEnd - 1,
+      Rewriter::rewrite(Node(learnedBuilder)));
+  }
+
+  d_propagatorNeedsFinish = true;
+  return true;
+}
+
+void SmtEnginePrivate::bvAbstraction() {
+  Trace("bv-abstraction") << "SmtEnginePrivate::bvAbstraction()" << endl;
+  std::vector<Node> new_assertions;
+  bool changed = d_smt.d_theoryEngine->ppBvAbstraction(d_assertions.ref(), new_assertions);
+  for (unsigned i = 0; i < d_assertions.size(); ++ i) {
+    d_assertions.replace(i, Rewriter::rewrite(new_assertions[i]));
+  }
+  // if we are using the lazy solver and the abstraction
+  // applies, then UF symbols were introduced
+  if (options::bitblastMode() == theory::bv::BITBLAST_MODE_LAZY &&
+      changed) {
+    LogicRequest req(d_smt);
+    req.widenLogic(THEORY_UF);
+  }
+}
+
+
+void SmtEnginePrivate::bvToBool() {
+  Trace("bv-to-bool") << "SmtEnginePrivate::bvToBool()" << endl;
+  spendResource(options::preprocessStep());
+  std::vector<Node> new_assertions;
+  d_smt.d_theoryEngine->ppBvToBool(d_assertions.ref(), new_assertions);
+  for (unsigned i = 0; i < d_assertions.size(); ++ i) {
+    d_assertions.replace(i, Rewriter::rewrite(new_assertions[i]));
+  }
+}
+
+void SmtEnginePrivate::boolToBv() {
+  Trace("bool-to-bv") << "SmtEnginePrivate::boolToBv()" << endl;
+  spendResource(options::preprocessStep());
+  std::vector<Node> new_assertions;
+  d_smt.d_theoryEngine->ppBoolToBv(d_assertions.ref(), new_assertions);
+  for (unsigned i = 0; i < d_assertions.size(); ++ i) {
+    d_assertions.replace(i, Rewriter::rewrite(new_assertions[i]));
+  }
+}
+
+bool SmtEnginePrivate::simpITE() {
+  TimerStat::CodeTimer simpITETimer(d_smt.d_stats->d_simpITETime);
+
+  spendResource(options::preprocessStep());
+
+  Trace("simplify") << "SmtEnginePrivate::simpITE()" << endl;
+
+  unsigned numAssertionOnEntry = d_assertions.size();
+  for (unsigned i = 0; i < d_assertions.size(); ++i) {
+    spendResource(options::preprocessStep());
+    Node result = d_smt.d_theoryEngine->ppSimpITE(d_assertions[i]);
+    d_assertions.replace(i, result);
+    if(result.isConst() && !result.getConst<bool>()){
+      return false;
+    }
+  }
+  bool result = d_smt.d_theoryEngine->donePPSimpITE(d_assertions.ref());
+  if(numAssertionOnEntry < d_assertions.size()){
+    compressBeforeRealAssertions(numAssertionOnEntry);
+  }
+  return result;
+}
+
+void SmtEnginePrivate::compressBeforeRealAssertions(size_t before){
+  size_t curr = d_assertions.size();
+  if(before >= curr ||
+     d_realAssertionsEnd <= 0 ||
+     d_realAssertionsEnd >= curr){
+    return;
+  }
+
+  // assertions
+  // original: [0 ... d_realAssertionsEnd)
+  //  can be modified
+  // ites skolems [d_realAssertionsEnd, before)
+  //  cannot be moved
+  // added [before, curr)
+  //  can be modified
+  Assert(0 < d_realAssertionsEnd);
+  Assert(d_realAssertionsEnd <= before);
+  Assert(before < curr);
+
+  std::vector<Node> intoConjunction;
+  for(size_t i = before; i<curr; ++i){
+    intoConjunction.push_back(d_assertions[i]);
+  }
+  d_assertions.resize(before);
+  size_t lastBeforeItes = d_realAssertionsEnd - 1;
+  intoConjunction.push_back(d_assertions[lastBeforeItes]);
+  Node newLast = util::NaryBuilder::mkAssoc(kind::AND, intoConjunction);
+  d_assertions.replace(lastBeforeItes, newLast);
+  Assert(d_assertions.size() == before);
+}
+
+void SmtEnginePrivate::unconstrainedSimp() {
+  TimerStat::CodeTimer unconstrainedSimpTimer(d_smt.d_stats->d_unconstrainedSimpTime);
+  spendResource(options::preprocessStep());
+  Trace("simplify") << "SmtEnginePrivate::unconstrainedSimp()" << endl;
+  d_smt.d_theoryEngine->ppUnconstrainedSimp(d_assertions.ref());
+}
+
+
+void SmtEnginePrivate::constrainSubtypes(TNode top, AssertionPipeline& assertions)
+  throw() {
+
+  Trace("constrainSubtypes") << "constrainSubtypes(): looking at " << top << endl;
+
+  set<TNode> done;
+  stack<TNode> worklist;
+  worklist.push(top);
+  done.insert(top);
+
+  do {
+    TNode n = worklist.top();
+    worklist.pop();
+
+    TypeNode t = n.getType();
+    if(t.isPredicateSubtype()) {
+      WarningOnce() << "Warning: CVC4 doesn't yet do checking that predicate subtypes are nonempty domains" << endl;
+      Node pred = t.getSubtypePredicate();
+      Kind k;
+      // pred can be a LAMBDA, a function constant, or a datatype tester
+      Trace("constrainSubtypes") << "constrainSubtypes(): pred.getType() == " << pred.getType() << endl;
+      if(d_smt.d_definedFunctions->find(pred) != d_smt.d_definedFunctions->end()) {
+        k = kind::APPLY;
+      } else if(pred.getType().isTester()) {
+        k = kind::APPLY_TESTER;
+      } else {
+        k = kind::APPLY_UF;
+      }
+      Node app = NodeManager::currentNM()->mkNode(k, pred, n);
+      Trace("constrainSubtypes") << "constrainSubtypes(): assert(" << k << ") " << app << endl;
+      assertions.push_back(app);
+    } else if(t.isSubrange()) {
+      SubrangeBounds bounds = t.getSubrangeBounds();
+      Trace("constrainSubtypes") << "constrainSubtypes(): got bounds " << bounds << endl;
+      if(bounds.lower.hasBound()) {
+        Node c = NodeManager::currentNM()->mkConst(Rational(bounds.lower.getBound()));
+        Node lb = NodeManager::currentNM()->mkNode(kind::LEQ, c, n);
+        Trace("constrainSubtypes") << "constrainSubtypes(): assert " << lb << endl;
+        assertions.push_back(lb);
+      }
+      if(bounds.upper.hasBound()) {
+        Node c = NodeManager::currentNM()->mkConst(Rational(bounds.upper.getBound()));
+        Node ub = NodeManager::currentNM()->mkNode(kind::LEQ, n, c);
+        Trace("constrainSubtypes") << "constrainSubtypes(): assert " << ub << endl;
+        assertions.push_back(ub);
+      }
+    }
+
+    for(TNode::iterator i = n.begin(); i != n.end(); ++i) {
+      if(done.find(*i) == done.end()) {
+        worklist.push(*i);
+        done.insert(*i);
+      }
+    }
+  } 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 long>& toRemove) {
+  Assert(n.getKind() == kind::AND);
+  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 = d_true;
+        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_realAssertionsEnd == d_assertions.size());
+  Assert(!options::incrementalSolving());
+
+  const booleans::CircuitPropagator::BackEdgesMap& backEdges = d_propagator.getBackEdges();
+  hash_set<unsigned long> 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);
+          if(coef[pos_var].size() <= thepos) {
+            coef[pos_var].resize(thepos + 1);
+          }
+          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;
+        }
+        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(mark != 3) { // exclude single-var case; nothing to check there
+            uint64_t sz = (uint64_t(1) << checks[pos_var].size()) - 1;
+            sz = (sz == 0) ? -1 : sz; // fix for overflow
+            Assert(sz == mark, "expected size %u == mark %u", sz, mark);
+            for(size_t k = 0; k < checks[pos_var].size(); ++k) {
+              if((k & (k - 1)) != 0) {
+                Rational sum = 0;
+                Debug("miplib") << k << " => " << checks[pos_var][k] << endl;
+                for(size_t v = 1, kk = k; kk != 0; ++v, kk >>= 1) {
+                  if((kk & 0x1) == 1) {
+                    Assert(pos.getKind() == kind::AND);
+                    Debug("miplib") << "var " << v << " : " << pos[v - 1] << " coef:" << coef[pos_var][v - 1] << endl;
+                    sum += coef[pos_var][v - 1];
+                  }
+                }
+                Debug("miplib") << "checkSum is " << sum << " input says " << checks[pos_var][k] << endl;
+                if(sum != checks[pos_var][k]) {
+                  eligible = false;
+                  Debug("miplib") << "  -- INELIGIBLE " << pos << " -- (nonlinear combination)" << endl;
+                  break;
+                }
+              } else {
+                Assert(checks[pos_var][k] == 0, "checks[(%s,%s)][%u] should be 0, but it's %s", pos.toString().c_str(), var.toString().c_str(), k, checks[pos_var][k].toString().c_str()); // we never set for single-positive-var
+              }
+            }
+          }
+          if(!eligible) {
+            eligible = true; // next is still eligible
+            continue;
+          }
+
+          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));
+              addFormula(Rewriter::rewrite(geq.andNode(leq)), false, false);
+              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;
+          addFormula(newAssertion, false, false);
+          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;
+    for(size_t i = 0; i < d_realAssertionsEnd; ++i) {
+      if(removeAssertions.find(d_assertions[i].getId()) != removeAssertions.end()) {
+        Debug("miplib") << "SmtEnginePrivate::simplify(): - removing " << d_assertions[i] << endl;
+        d_assertions[i] = d_true;
+        ++d_smt.d_stats->d_numMiplibAssertionsRemoved;
+      } else if(d_assertions[i].getKind() == kind::AND) {
+        size_t removals = removeFromConjunction(d_assertions[i], removeAssertions);
+        if(removals > 0) {
+          Debug("miplib") << "SmtEnginePrivate::simplify(): - reduced " << d_assertions[i] << endl;
+          Debug("miplib") << "SmtEnginePrivate::simplify(): -      by " << removals << " conjuncts" << endl;
+          d_smt.d_stats->d_numMiplibAssertionsRemoved += removals;
+        }
+      }
+      Debug("miplib") << "had: " << d_assertions[i] << endl;
+      d_assertions[i] = Rewriter::rewrite(d_topLevelSubstitutions.apply(d_assertions[i]));
+      Debug("miplib") << "now: " << d_assertions[i] << endl;
+    }
+  } else {
+    Debug("miplib") << "SmtEnginePrivate::simplify(): miplib pass found nothing." << endl;
+  }
+  d_realAssertionsEnd = d_assertions.size();
+}
+
+
+// returns false if simplification led to "false"
+bool SmtEnginePrivate::simplifyAssertions()
+  throw(TypeCheckingException, LogicException, UnsafeInterruptException) {
+  spendResource(options::preprocessStep());
+  Assert(d_smt.d_pendingPops == 0);
+  try {
+    ScopeCounter depth(d_simplifyAssertionsDepth);
+
+    Trace("simplify") << "SmtEnginePrivate::simplify()" << endl;
+
+    dumpAssertions("pre-nonclausal", d_assertions);
+
+    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;
+      }
+
+      // 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_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_assertions.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;
+      }
+    }
+
+    dumpAssertions("post-nonclausal", d_assertions);
+    Trace("smt") << "POST nonClausalSimplify" << endl;
+    Debug("smt") << " d_assertions     : " << d_assertions.size() << endl;
+
+    // before ppRewrite check if only core theory for BV theory
+    d_smt.d_theoryEngine->staticInitializeBVOptions(d_assertions.ref());
+
+    dumpAssertions("pre-theorypp", d_assertions);
+
+    // 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();
+      for (unsigned i = 0; i < d_assertions.size(); ++ i) {
+        Assert(Rewriter::rewrite(d_assertions[i]) == d_assertions[i]);
+        d_assertions.replace(i, d_smt.d_theoryEngine->preprocess(d_assertions[i]));
+        Assert(Rewriter::rewrite(d_assertions[i]) == d_assertions[i]);
+      }
+    }
+
+    dumpAssertions("post-theorypp", d_assertions);
+    Trace("smt") << "POST theoryPP" << endl;
+    Debug("smt") << " d_assertions     : " << d_assertions.size() << endl;
+
+    // ITE simplification
+    if(options::doITESimp() &&
+       (d_simplifyAssertionsDepth <= 1 || options::doITESimpOnRepeat())) {
+      Chat() << "...doing ITE simplification..." << endl;
+      bool noConflict = simpITE();
+      if(!noConflict){
+        Chat() << "...ITE simplification found unsat..." << endl;
+        return false;
+      }
+    }
+
+    dumpAssertions("post-itesimp", d_assertions);
+    Trace("smt") << "POST iteSimp" << endl;
+    Debug("smt") << " d_assertions     : " << d_assertions.size() << endl;
+
+    // Unconstrained simplification
+    if(options::unconstrainedSimp()) {
+      Chat() << "...doing unconstrained simplification..." << endl;
+      unconstrainedSimp();
+    }
+
+    dumpAssertions("post-unconstrained", d_assertions);
+    Trace("smt") << "POST unconstrainedSimp" << endl;
+    Debug("smt") << " d_assertions     : " << d_assertions.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" << endl;
+      bool noConflict = nonClausalSimplify();
+      if(!noConflict) {
+        return false;
+      }
+    }
+
+    dumpAssertions("post-repeatsimp", d_assertions);
+    Trace("smt") << "POST repeatSimp" << endl;
+    Debug("smt") << " d_assertions     : " << d_assertions.size() << endl;
+
+  } catch(TypeCheckingExceptionPrivate& tcep) {
+    // Calls to this function should have already weeded out any
+    // typechecking exceptions via (e.g.) ensureBoolean().  But a
+    // theory could still create a new expression that isn't
+    // well-typed, and we don't want the C++ runtime to abort our
+    // process without any error notice.
+    stringstream ss;
+    ss << "A bad expression was produced.  Original exception follows:\n"
+       << tcep;
+    InternalError(ss.str().c_str());
+  }
+  return true;
+}
+
+Result SmtEngine::check() {
+  Assert(d_fullyInited);
+  Assert(d_pendingPops == 0);
+
+  Trace("smt") << "SmtEngine::check()" << endl;
+
+  ResourceManager* resourceManager = d_private->getResourceManager();
+
+  resourceManager->beginCall();
+
+  // Only way we can be out of resource is if cumulative budget is on
+  if (resourceManager->cumulativeLimitOn() &&
+      resourceManager->out()) {
+    Result::UnknownExplanation why = resourceManager->outOfResources() ?
+                             Result::RESOURCEOUT : Result::TIMEOUT;
+    return Result(Result::VALIDITY_UNKNOWN, why, d_filename);
+  }
+
+  // Make sure the prop layer has all of the assertions
+  Trace("smt") << "SmtEngine::check(): processing assertions" << endl;
+  d_private->processAssertions();
+  Trace("smt") << "SmtEngine::check(): done processing assertions" << endl;
+
+  // Turn off stop only for QF_LRA
+  // TODO: Bring up in a meeting where to put this
+  if(options::decisionStopOnly() && !options::decisionMode.wasSetByUser() ){
+    if( // QF_LRA
+       (not d_logic.isQuantified() &&
+        d_logic.isPure(THEORY_ARITH) && d_logic.isLinear() && !d_logic.isDifferenceLogic() &&  !d_logic.areIntegersUsed()
+        )){
+      if(d_private->d_iteSkolemMap.empty()){
+        options::decisionStopOnly.set(false);
+        d_decisionEngine->clearStrategies();
+        Trace("smt") << "SmtEngine::check(): turning off stop only" << endl;
+      }
+    }
+  }
+
+  TimerStat::CodeTimer solveTimer(d_stats->d_solveTime);
+
+  Chat() << "solving..." << endl;
+  Trace("smt") << "SmtEngine::check(): running check" << endl;
+  Result result = d_propEngine->checkSat();
+
+  resourceManager->endCall();
+  Trace("limit") << "SmtEngine::check(): cumulative millis " << resourceManager->getTimeUsage()
+                 << ", resources " << resourceManager->getResourceUsage() << endl;
+
+
+  return Result(result, d_filename);
+}
+
+Result SmtEngine::quickCheck() {
+  Assert(d_fullyInited);
+  Trace("smt") << "SMT quickCheck()" << endl;
+  return Result(Result::VALIDITY_UNKNOWN, Result::REQUIRES_FULL_CHECK, d_filename);
+}
+
+
+void SmtEnginePrivate::collectSkolems(TNode n, set<TNode>& skolemSet, hash_map<Node, bool, NodeHashFunction>& cache)
+{
+  hash_map<Node, bool, NodeHashFunction>::iterator it;
+  it = cache.find(n);
+  if (it != cache.end()) {
+    return;
+  }
+
+  size_t sz = n.getNumChildren();
+  if (sz == 0) {
+    IteSkolemMap::iterator it = d_iteSkolemMap.find(n);
+    if (it != d_iteSkolemMap.end()) {
+      skolemSet.insert(n);
+    }
+    cache[n] = true;
+    return;
+  }
+
+  size_t k = 0;
+  for (; k < sz; ++k) {
+    collectSkolems(n[k], skolemSet, cache);
+  }
+  cache[n] = true;
+}
+
+
+bool SmtEnginePrivate::checkForBadSkolems(TNode n, TNode skolem, hash_map<Node, bool, NodeHashFunction>& cache)
+{
+  hash_map<Node, bool, NodeHashFunction>::iterator it;
+  it = cache.find(n);
+  if (it != cache.end()) {
+    return (*it).second;
+  }
+
+  size_t sz = n.getNumChildren();
+  if (sz == 0) {
+    IteSkolemMap::iterator it = d_iteSkolemMap.find(n);
+    bool bad = false;
+    if (it != d_iteSkolemMap.end()) {
+      if (!((*it).first < n)) {
+        bad = true;
+      }
+    }
+    cache[n] = bad;
+    return bad;
+  }
+
+  size_t k = 0;
+  for (; k < sz; ++k) {
+    if (checkForBadSkolems(n[k], skolem, cache)) {
+      cache[n] = true;
+      return true;
+    }
+  }
+
+  cache[n] = false;
+  return false;
+}
+
+void SmtEnginePrivate::processAssertions() {
+  TimerStat::CodeTimer paTimer(d_smt.d_stats->d_processAssertionsTime);
+  spendResource(options::preprocessStep());
+  Assert(d_smt.d_fullyInited);
+  Assert(d_smt.d_pendingPops == 0);
+
+  // Dump the assertions
+  dumpAssertions("pre-everything", d_assertions);
+
+  Trace("smt-proc") << "SmtEnginePrivate::processAssertions() begin" << endl;
+  Trace("smt") << "SmtEnginePrivate::processAssertions()" << endl;
+
+  Debug("smt") << " d_assertions     : " << d_assertions.size() << endl;
+
+  if (d_assertions.size() == 0) {
+    // nothing to do
+    return;
+  }
+
+  if (d_assertionsProcessed && options::incrementalSolving()) {
+    // Placeholder for storing substitutions
+    d_substitutionsIndex = d_assertions.size();
+    d_assertions.push_back(NodeManager::currentNM()->mkConst<bool>(true));
+  }
+
+  // Add dummy assertion in last position - to be used as a
+  // placeholder for any new assertions to get added
+  d_assertions.push_back(NodeManager::currentNM()->mkConst<bool>(true));
+  // any assertions added beyond realAssertionsEnd must NOT affect the
+  // equisatisfiability
+  d_realAssertionsEnd = d_assertions.size();
+
+  // Assertions are NOT guaranteed to be rewritten by this point
+
+  Trace("smt-proc") << "SmtEnginePrivate::processAssertions() : pre-definition-expansion" << endl;
+  dumpAssertions("pre-definition-expansion", d_assertions);
+  {
+    Chat() << "expanding definitions..." << endl;
+    Trace("simplify") << "SmtEnginePrivate::simplify(): expanding definitions" << endl;
+    TimerStat::CodeTimer codeTimer(d_smt.d_stats->d_definitionExpansionTime);
+    hash_map<Node, Node, NodeHashFunction> cache;
+    for(unsigned i = 0; i < d_assertions.size(); ++ i) {
+      d_assertions.replace(i, expandDefinitions(d_assertions[i], cache));
+    }
+  }
+  Trace("smt-proc") << "SmtEnginePrivate::processAssertions() : post-definition-expansion" << endl;
+  dumpAssertions("post-definition-expansion", d_assertions);
+
+  // save the assertions now
+  THEORY_PROOF
+    (
+     for (unsigned i = 0; i < d_assertions.size(); ++i) {
+       ProofManager::currentPM()->addAssertion(d_assertions[i].toExpr());
+     }
+     );
+
+  Debug("smt") << " d_assertions     : " << d_assertions.size() << endl;
+
+  if( options::ceGuidedInst() ){
+    //register sygus conjecture pre-rewrite (motivated by solution reconstruction)
+    for (unsigned i = 0; i < d_assertions.size(); ++ i) {
+      d_smt.d_theoryEngine->getQuantifiersEngine()->getCegInstantiation()->preregisterAssertion( d_assertions[i] );
+    }
+  }
+
+  if (options::solveIntAsBV() > 0) {
+    Chat() << "converting ints to bit-vectors..." << endl;
+    hash_map<Node, Node, NodeHashFunction> cache;
+    for(unsigned i = 0; i < d_assertions.size(); ++ i) {
+      d_assertions.replace(i, intToBV(d_assertions[i], cache));
+    }
+  }
+
+  if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER &&
+      !d_smt.d_logic.isPure(THEORY_BV) &&
+      d_smt.d_logic.getLogicString() != "QF_UFBV" &&
+      d_smt.d_logic.getLogicString() != "QF_ABV") {
+    throw ModalException("Eager bit-blasting does not currently support theory combination. "
+                         "Note that in a QF_BV problem UF symbols can be introduced for division. "
+                         "Try --bv-div-zero-const to interpret division by zero as a constant.");
+  }
+
+  if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER) {
+    d_smt.d_theoryEngine->mkAckermanizationAsssertions(d_assertions.ref());
+  }
+
+  if ( options::bvAbstraction() &&
+      !options::incrementalSolving()) {
+    dumpAssertions("pre-bv-abstraction", d_assertions);
+    bvAbstraction();
+    dumpAssertions("post-bv-abstraction", d_assertions);
+  }
+
+  Debug("smt") << " d_assertions     : " << d_assertions.size() << endl;
+
+  dumpAssertions("pre-constrain-subtypes", d_assertions);
+  {
+    // Any variables of subtype types need to be constrained properly.
+    // Careful, here: constrainSubtypes() adds to the back of
+    // d_assertions, but we don't need to reprocess those.
+    // We also can't use an iterator, because the vector may be moved in
+    // memory during this loop.
+    Chat() << "constraining subtypes..." << endl;
+    for(unsigned i = 0, i_end = d_assertions.size(); i != i_end; ++i) {
+      constrainSubtypes(d_assertions[i], d_assertions);
+    }
+  }
+  dumpAssertions("post-constrain-subtypes", d_assertions);
+
+  Debug("smt") << " d_assertions     : " << d_assertions.size() << endl;
+
+  bool noConflict = true;
+
+  // Unconstrained simplification
+  if(options::unconstrainedSimp()) {
+    Trace("smt-proc") << "SmtEnginePrivate::processAssertions() : pre-unconstrained-simp" << endl;
+    dumpAssertions("pre-unconstrained-simp", d_assertions);
+    Chat() << "...doing unconstrained simplification..." << endl;
+    for (unsigned i = 0; i < d_assertions.size(); ++ i) {
+      d_assertions.replace(i, Rewriter::rewrite(d_assertions[i]));
+    }
+    unconstrainedSimp();
+    Trace("smt-proc") << "SmtEnginePrivate::processAssertions() : post-unconstrained-simp" << endl;
+    dumpAssertions("post-unconstrained-simp", d_assertions);
+  }
+
+  if(options::bvIntroducePow2()){
+    theory::bv::BVIntroducePow2::pow2Rewrite(d_assertions.ref());
+  }
+
+  Trace("smt-proc") << "SmtEnginePrivate::processAssertions() : pre-substitution" << endl;
+  dumpAssertions("pre-substitution", d_assertions);
+
+  if(options::unsatCores()) {
+    // special rewriting pass for unsat cores, since many of the passes below are skipped
+    for (unsigned i = 0; i < d_assertions.size(); ++ i) {
+      d_assertions.replace(i, Rewriter::rewrite(d_assertions[i]));
+    }
+  } else {
+    // Apply the substitutions we already have, and normalize
+    if(!options::unsatCores()) {
+      Chat() << "applying substitutions..." << endl;
+      Trace("simplify") << "SmtEnginePrivate::nonClausalSimplify(): "
+                        << "applying substitutions" << endl;
+      for (unsigned i = 0; i < d_assertions.size(); ++ i) {
+        Trace("simplify") << "applying to " << d_assertions[i] << endl;
+        spendResource(options::preprocessStep());
+        d_assertions.replace(i, Rewriter::rewrite(d_topLevelSubstitutions.apply(d_assertions[i])));
+        Trace("simplify") << "  got " << d_assertions[i] << endl;
+      }
+    }
+  }
+  Trace("smt-proc") << "SmtEnginePrivate::processAssertions() : post-substitution" << endl;
+  dumpAssertions("post-substitution", d_assertions);
+
+  // Assertions ARE guaranteed to be rewritten by this point
+
+  // Lift bit-vectors of size 1 to bool
+  if(options::bitvectorToBool()) {
+    dumpAssertions("pre-bv-to-bool", d_assertions);
+    Chat() << "...doing bvToBool..." << endl;
+    bvToBool();
+    dumpAssertions("post-bv-to-bool", d_assertions);
+    Trace("smt") << "POST bvToBool" << endl;
+  }
+  // Convert non-top-level Booleans to bit-vectors of size 1
+  if(options::boolToBitvector()) {
+    dumpAssertions("pre-bool-to-bv", d_assertions);
+    Chat() << "...doing boolToBv..." << endl;
+    boolToBv();
+    dumpAssertions("post-bool-to-bv", d_assertions);
+    Trace("smt") << "POST boolToBv" << endl;
+  }
+  if(options::sepPreSkolemEmp()) {
+    for (unsigned i = 0; i < d_assertions.size(); ++ i) {
+      Node prev = d_assertions[i];
+      Node next = sep::TheorySepRewriter::preprocess( prev );
+      if( next!=prev ){
+        d_assertions.replace( i, Rewriter::rewrite( next ) );
+        Trace("sep-preprocess") << "*** Preprocess sep " << prev << endl;
+        Trace("sep-preprocess") << "   ...got " << d_assertions[i] << endl;
+      }
+    }
+  }
+
+  if( d_smt.d_logic.isQuantified() ){
+    Trace("smt-proc") << "SmtEnginePrivate::processAssertions() : pre-quant-preprocess" << endl;
+
+    dumpAssertions("pre-skolem-quant", d_assertions);
+    //remove rewrite rules, apply pre-skolemization to existential quantifiers
+    for (unsigned i = 0; i < d_assertions.size(); ++ i) {
+      Node prev = d_assertions[i];
+      Node next = quantifiers::QuantifiersRewriter::preprocess( prev );
+      if( next!=prev ){
+        d_assertions.replace( i, Rewriter::rewrite( next ) );
+        Trace("quantifiers-preprocess") << "*** Pre-skolemize " << prev << endl;
+        Trace("quantifiers-preprocess") << "   ...got " << d_assertions[i] << endl;
+      }
+    }
+    dumpAssertions("post-skolem-quant", d_assertions);
+    if( options::macrosQuant() ){
+      //quantifiers macro expansion
+      quantifiers::QuantifierMacros qm( d_smt.d_theoryEngine->getQuantifiersEngine() );
+      bool success;
+      do{
+        success = qm.simplify( d_assertions.ref(), true );
+      }while( success );
+      //finalize the definitions
+      qm.finalizeDefinitions();
+    }
+
+    //fmf-fun : assume admissible functions, applying preprocessing reduction to FMF
+    if( options::fmfFunWellDefined() ){
+      quantifiers::FunDefFmf fdf;
+      //must carry over current definitions (for incremental)
+      for( context::CDList<Node>::const_iterator fit = d_smt.d_fmfRecFunctionsDefined->begin();
+           fit != d_smt.d_fmfRecFunctionsDefined->end(); ++fit ) {
+        Node f = (*fit);
+        Assert( d_smt.d_fmfRecFunctionsAbs.find( f )!=d_smt.d_fmfRecFunctionsAbs.end() );
+        TypeNode ft = d_smt.d_fmfRecFunctionsAbs[f];
+        fdf.d_sorts[f] = ft;
+        std::map< Node, std::vector< Node > >::iterator fcit = d_smt.d_fmfRecFunctionsConcrete.find( f );
+        Assert( fcit!=d_smt.d_fmfRecFunctionsConcrete.end() );
+        for( unsigned j=0; j<fcit->second.size(); j++ ){
+          fdf.d_input_arg_inj[f].push_back( fcit->second[j] );
+        }
+      }
+      fdf.simplify( d_assertions.ref() );
+      //must store new definitions (for incremental)
+      for( unsigned i=0; i<fdf.d_funcs.size(); i++ ){
+        Node f = fdf.d_funcs[i];
+        d_smt.d_fmfRecFunctionsAbs[f] = fdf.d_sorts[f];
+        d_smt.d_fmfRecFunctionsConcrete[f].clear();
+        for( unsigned j=0; j<fdf.d_input_arg_inj[f].size(); j++ ){
+          d_smt.d_fmfRecFunctionsConcrete[f].push_back( fdf.d_input_arg_inj[f][j] );
+        }
+        d_smt.d_fmfRecFunctionsDefined->push_back( f );
+      }
+    }
+    Trace("smt-proc") << "SmtEnginePrivate::processAssertions() : post-quant-preprocess" << endl;
+  }
+
+  if( options::sortInference() || options::ufssFairnessMonotone() ){
+    //sort inference technique
+    SortInference * si = d_smt.d_theoryEngine->getSortInference();
+    si->simplify( d_assertions.ref(), options::sortInference(), options::ufssFairnessMonotone() );
+    for( std::map< Node, Node >::iterator it = si->d_model_replace_f.begin(); it != si->d_model_replace_f.end(); ++it ){
+      d_smt.setPrintFuncInModel( it->first.toExpr(), false );
+      d_smt.setPrintFuncInModel( it->second.toExpr(), true );
+    }
+  }
+
+  if( options::pbRewrites() ){
+    d_pbsProcessor.learn(d_assertions.ref());
+    if(d_pbsProcessor.likelyToHelp()){
+      d_pbsProcessor.applyReplacements(d_assertions.ref());
+    }
+  }
+
+  Trace("smt-proc") << "SmtEnginePrivate::processAssertions() : pre-simplify" << endl;
+  dumpAssertions("pre-simplify", d_assertions);
+  Chat() << "simplifying assertions..." << endl;
+  noConflict = simplifyAssertions();
+  if(!noConflict){
+    ++(d_smt.d_stats->d_simplifiedToFalse);
+  }
+  Trace("smt-proc") << "SmtEnginePrivate::processAssertions() : post-simplify" << endl;
+  dumpAssertions("post-simplify", d_assertions);
+
+  dumpAssertions("pre-static-learning", d_assertions);
+  if(options::doStaticLearning()) {
+    Trace("smt-proc") << "SmtEnginePrivate::processAssertions() : pre-static-learning" << endl;
+    // Perform static learning
+    Chat() << "doing static learning..." << endl;
+    Trace("simplify") << "SmtEnginePrivate::simplify(): "
+                      << "performing static learning" << endl;
+    staticLearning();
+    Trace("smt-proc") << "SmtEnginePrivate::processAssertions() : post-static-learning" << endl;
+  }
+  dumpAssertions("post-static-learning", d_assertions);
+
+  Debug("smt") << " d_assertions     : " << d_assertions.size() << endl;
+
+
+  Trace("smt-proc") << "SmtEnginePrivate::processAssertions() : pre-ite-removal" << endl;
+  dumpAssertions("pre-ite-removal", d_assertions);
+  {
+    Chat() << "removing term ITEs..." << endl;
+    TimerStat::CodeTimer codeTimer(d_smt.d_stats->d_iteRemovalTime);
+    // Remove ITEs, updating d_iteSkolemMap
+    d_smt.d_stats->d_numAssertionsPre += d_assertions.size();
+    removeITEs();
+    d_smt.d_stats->d_numAssertionsPost += d_assertions.size();
+  }
+  Trace("smt-proc") << "SmtEnginePrivate::processAssertions() : post-ite-removal" << endl;
+  dumpAssertions("post-ite-removal", d_assertions);
+
+  dumpAssertions("pre-repeat-simplify", d_assertions);
+  if(options::repeatSimp()) {
+    Trace("smt-proc") << "SmtEnginePrivate::processAssertions() : pre-repeat-simplify" << endl;
+    Chat() << "re-simplifying assertions..." << endl;
+    ScopeCounter depth(d_simplifyAssertionsDepth);
+    noConflict &= simplifyAssertions();
+    if (noConflict) {
+      // Need to fix up assertion list to maintain invariants:
+      // Let Sk be the set of Skolem variables introduced by ITE's.  Let <_sk be the order in which these variables were introduced
+      // during ite removal.
+      // For each skolem variable sk, let iteExpr = iteMap(sk) be the ite expr mapped to by sk.
+
+      // cache for expression traversal
+      hash_map<Node, bool, NodeHashFunction> cache;
+
+      // First, find all skolems that appear in the substitution map - their associated iteExpr will need
+      // to be moved to the main assertion set
+      set<TNode> skolemSet;
+      SubstitutionMap::iterator pos = d_topLevelSubstitutions.begin();
+      for (; pos != d_topLevelSubstitutions.end(); ++pos) {
+        collectSkolems((*pos).first, skolemSet, cache);
+        collectSkolems((*pos).second, skolemSet, cache);
+      }
+
+      // We need to ensure:
+      // 1. iteExpr has the form (ite cond (sk = t) (sk = e))
+      // 2. if some sk' in Sk appears in cond, t, or e, then sk' <_sk sk
+      // If either of these is violated, we must add iteExpr as a proper assertion
+      IteSkolemMap::iterator it = d_iteSkolemMap.begin();
+      IteSkolemMap::iterator iend = d_iteSkolemMap.end();
+      NodeBuilder<> builder(kind::AND);
+      builder << d_assertions[d_realAssertionsEnd - 1];
+      vector<TNode> toErase;
+      for (; it != iend; ++it) {
+        if (skolemSet.find((*it).first) == skolemSet.end()) {
+          TNode iteExpr = d_assertions[(*it).second];
+          if (iteExpr.getKind() == kind::ITE &&
+              iteExpr[1].getKind() == kind::EQUAL &&
+              iteExpr[1][0] == (*it).first &&
+              iteExpr[2].getKind() == kind::EQUAL &&
+              iteExpr[2][0] == (*it).first) {
+            cache.clear();
+            bool bad = checkForBadSkolems(iteExpr[0], (*it).first, cache);
+            bad = bad || checkForBadSkolems(iteExpr[1][1], (*it).first, cache);
+            bad = bad || checkForBadSkolems(iteExpr[2][1], (*it).first, cache);
+            if (!bad) {
+              continue;
+            }
+          }
+        }
+        // Move this iteExpr into the main assertions
+        builder << d_assertions[(*it).second];
+        d_assertions[(*it).second] = NodeManager::currentNM()->mkConst<bool>(true);
+        toErase.push_back((*it).first);
+      }
+      if(builder.getNumChildren() > 1) {
+        while (!toErase.empty()) {
+          d_iteSkolemMap.erase(toErase.back());
+          toErase.pop_back();
+        }
+        d_assertions[d_realAssertionsEnd - 1] = Rewriter::rewrite(Node(builder));
+      }
+      // For some reason this is needed for some benchmarks, such as
+      // http://cvc4.cs.nyu.edu/benchmarks/smtlib2/QF_AUFBV/dwp_formulas/try5_small_difret_functions_dwp_tac.re_node_set_remove_at.il.dwp.smt2
+      // Figure it out later
+      removeITEs();
+      //      Assert(iteRewriteAssertionsEnd == d_assertions.size());
+    }
+    Trace("smt-proc") << "SmtEnginePrivate::processAssertions() : post-repeat-simplify" << endl;
+  }
+  dumpAssertions("post-repeat-simplify", d_assertions);
+
+  dumpAssertions("pre-rewrite-apply-to-const", d_assertions);
+  if(options::rewriteApplyToConst()) {
+    Chat() << "Rewriting applies to constants..." << endl;
+    TimerStat::CodeTimer codeTimer(d_smt.d_stats->d_rewriteApplyToConstTime);
+    for (unsigned i = 0; i < d_assertions.size(); ++ i) {
+      d_assertions[i] = Rewriter::rewrite(rewriteApplyToConst(d_assertions[i]));
+    }
+  }
+  dumpAssertions("post-rewrite-apply-to-const", d_assertions);
+
+  // begin: INVARIANT to maintain: no reordering of assertions or
+  // introducing new ones
+#ifdef CVC4_ASSERTIONS
+  unsigned iteRewriteAssertionsEnd = d_assertions.size();
+#endif
+
+  Debug("smt") << " d_assertions     : " << d_assertions.size() << endl;
+
+  Debug("smt") << "SmtEnginePrivate::processAssertions() POST SIMPLIFICATION" << endl;
+  Debug("smt") << " d_assertions     : " << d_assertions.size() << endl;
+
+  Trace("smt-proc") << "SmtEnginePrivate::processAssertions() : pre-theory-preprocessing" << endl;
+  dumpAssertions("pre-theory-preprocessing", d_assertions);
+  {
+    Chat() << "theory preprocessing..." << endl;
+    TimerStat::CodeTimer codeTimer(d_smt.d_stats->d_theoryPreprocessTime);
+    // Call the theory preprocessors
+    d_smt.d_theoryEngine->preprocessStart();
+    for (unsigned i = 0; i < d_assertions.size(); ++ i) {
+      d_assertions.replace(i, d_smt.d_theoryEngine->preprocess(d_assertions[i]));
+    }
+  }
+  Trace("smt-proc") << "SmtEnginePrivate::processAssertions() : post-theory-preprocessing" << endl;
+  dumpAssertions("post-theory-preprocessing", d_assertions);
+
+  // If we are using eager bit-blasting wrap assertions in fake atom so that
+  // everything gets bit-blasted to internal SAT solver
+  if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER) {
+    for (unsigned i = 0; i < d_assertions.size(); ++i) {
+      TNode atom = d_assertions[i];
+      Node eager_atom = NodeManager::currentNM()->mkNode(kind::BITVECTOR_EAGER_ATOM, atom);
+      d_assertions.replace(i, eager_atom);
+      TheoryModel* m = d_smt.d_theoryEngine->getModel();
+      m->addSubstitution(eager_atom, atom);
+    }
+  }
+
+  //notify theory engine new preprocessed assertions
+  d_smt.d_theoryEngine->notifyPreprocessedAssertions( d_assertions.ref() );
+
+  // Push the formula to decision engine
+  if(noConflict) {
+    Chat() << "pushing to decision engine..." << endl;
+    Assert(iteRewriteAssertionsEnd == d_assertions.size());
+    d_smt.d_decisionEngine->addAssertions
+      (d_assertions.ref(), d_realAssertionsEnd, d_iteSkolemMap);
+  }
+
+  // end: INVARIANT to maintain: no reordering of assertions or
+  // introducing new ones
+
+  Trace("smt-proc") << "SmtEnginePrivate::processAssertions() end" << endl;
+  dumpAssertions("post-everything", d_assertions);
+
+  // Push the formula to SAT
+  {
+    Chat() << "converting to CNF..." << endl;
+    TimerStat::CodeTimer codeTimer(d_smt.d_stats->d_cnfConversionTime);
+    for (unsigned i = 0; i < d_assertions.size(); ++ i) {
+      Chat() << "+ " << d_assertions[i] << std::endl;
+      d_smt.d_propEngine->assertFormula(d_assertions[i]);
+    }
+  }
+
+  d_assertionsProcessed = true;
+
+  d_assertions.clear();
+  d_iteSkolemMap.clear();
+}
+
+void SmtEnginePrivate::addFormula(TNode n, bool inUnsatCore, bool inInput)
+  throw(TypeCheckingException, LogicException) {
+
+  if (n == d_true) {
+    // nothing to do
+    return;
+  }
+
+  Trace("smt") << "SmtEnginePrivate::addFormula(" << n << "), inUnsatCore = " << inUnsatCore << ", inInput = " << inInput << endl;
+  // Give it to proof manager
+  PROOF(
+    if( inInput ){
+      // n is an input assertion
+      if (inUnsatCore || options::dumpUnsatCores() || options::checkUnsatCores() || options::fewerPreprocessingHoles()) {
+
+        ProofManager::currentPM()->addCoreAssertion(n.toExpr());
+      }
+    }else{
+      // n is the result of an unknown preprocessing step, add it to dependency map to null
+      ProofManager::currentPM()->addDependence(n, Node::null());
+    }
+    // rewrite rules are by default in the unsat core because
+    // they need to be applied until saturation
+    if(options::unsatCores() &&
+       n.getKind() == kind::REWRITE_RULE ){
+      ProofManager::currentPM()->addUnsatCore(n.toExpr());
+    }
+  );
+
+  // Add the normalized formula to the queue
+  d_assertions.push_back(n);
+  //d_assertions.push_back(Rewriter::rewrite(n));
+}
+
+void SmtEngine::ensureBoolean(const Expr& e) throw(TypeCheckingException) {
+  Type type = e.getType(options::typeChecking());
+  Type boolType = d_exprManager->booleanType();
+  if(type != boolType) {
+    stringstream ss;
+    ss << "Expected " << boolType << "\n"
+       << "The assertion : " << e << "\n"
+       << "Its type      : " << type;
+    throw TypeCheckingException(e, ss.str());
+  }
+}
+
+Result SmtEngine::checkSat(const Expr& ex, bool inUnsatCore) throw(TypeCheckingException, ModalException, LogicException) {
+  return checkSatisfiability( ex, inUnsatCore, false );
+}/* SmtEngine::checkSat() */
+
+Result SmtEngine::query(const Expr& ex, bool inUnsatCore) throw(TypeCheckingException, ModalException, LogicException) {
+  Assert(!ex.isNull());
+  return checkSatisfiability( ex, inUnsatCore, true );
+}/* SmtEngine::query() */
+
+Result SmtEngine::checkSatisfiability(const Expr& ex, bool inUnsatCore, bool isQuery) {
+  try {
+    Assert(ex.isNull() || ex.getExprManager() == d_exprManager);
+    SmtScope smts(this);
+    finalOptionsAreSet();
+    doPendingPops();
+
+    Trace("smt") << "SmtEngine::" << (isQuery ? "query" : "checkSat") << "(" << ex << ")" << endl;
+
+    if(d_queryMade && !options::incrementalSolving()) {
+      throw ModalException("Cannot make multiple queries unless "
+                           "incremental solving is enabled "
+                           "(try --incremental)");
+    }
+
+    Expr e;
+    if(!ex.isNull()) {
+      // Substitute out any abstract values in ex.
+      e = d_private->substituteAbstractValues(Node::fromExpr(ex)).toExpr();
+      // Ensure expr is type-checked at this point.
+      ensureBoolean(e);
+    }
+
+    // check to see if a postsolve() is pending
+    if(d_needPostsolve) {
+      d_theoryEngine->postsolve();
+      d_needPostsolve = false;
+    }
+
+    // Push the context
+    internalPush();
+
+    // Note that a query has been made
+    d_queryMade = true;
+
+    // Add the formula
+    if(!e.isNull()) {
+      d_problemExtended = true;
+      Expr ea = isQuery ? e.notExpr() : e;
+      if(d_assertionList != NULL) {
+        d_assertionList->push_back(ea);
+      }
+      d_private->addFormula(ea.getNode(), inUnsatCore);
+    }
+
+    Result r(Result::SAT_UNKNOWN, Result::UNKNOWN_REASON);
+    r = isQuery ? check().asValidityResult() : check().asSatisfiabilityResult();
+
+    if (options::solveIntAsBV() > 0 &&r.asSatisfiabilityResult().isSat() == Result::UNSAT) {
+      r = Result(Result::SAT_UNKNOWN, Result::UNKNOWN_REASON);
+    }
+
+    d_needPostsolve = true;
+
+    // Dump the query if requested
+    if(Dump.isOn("benchmark")) {
+      // the expr already got dumped out if assertion-dumping is on
+      if( isQuery ){
+        Dump("benchmark") << QueryCommand(ex);
+      }else{
+        Dump("benchmark") << CheckSatCommand(ex);
+      }
+    }
+
+    // Pop the context
+    internalPop();
+
+    // Remember the status
+    d_status = r;
+
+    d_problemExtended = false;
+
+    Trace("smt") << "SmtEngine::" << (isQuery ? "query" : "checkSat") << "(" << e << ") => " << r << endl;
+
+    // Check that SAT results generate a model correctly.
+    if(options::checkModels()) {
+      if(r.asSatisfiabilityResult().isSat() == Result::SAT ||
+         (r.isUnknown() && r.whyUnknown() == Result::INCOMPLETE) ){
+        checkModel(/* hard failure iff */ ! r.isUnknown());
+      }
+    }
+    // Check that UNSAT results generate a proof correctly.
+    if(options::checkProofs()) {
+      if(r.asSatisfiabilityResult().isSat() == Result::UNSAT) {
+        TimerStat::CodeTimer checkProofTimer(d_stats->d_checkProofTime);
+        checkProof();
+      }
+    }
+    // Check that UNSAT results generate an unsat core correctly.
+    if(options::checkUnsatCores()) {
+      if(r.asSatisfiabilityResult().isSat() == Result::UNSAT) {
+        TimerStat::CodeTimer checkUnsatCoreTimer(d_stats->d_checkUnsatCoreTime);
+        checkUnsatCore();
+      }
+    }
+
+    return r;
+  } catch (UnsafeInterruptException& e) {
+    AlwaysAssert(d_private->getResourceManager()->out());
+    Result::UnknownExplanation why = d_private->getResourceManager()->outOfResources() ?
+      Result::RESOURCEOUT : Result::TIMEOUT;
+    return Result(Result::SAT_UNKNOWN, why, d_filename);
+  }
+}
+
+
+Result SmtEngine::checkSynth(const Expr& e) throw(TypeCheckingException, ModalException, LogicException) {
+  SmtScope smts(this);
+  Trace("smt") << "Check synth: " << e << std::endl;
+  Trace("smt-synth") << "Check synthesis conjecture: " << e << std::endl;
+  Expr e_check = e;
+  Node conj = Node::fromExpr( e );
+  if( conj.getKind()==kind::FORALL ){
+    //possibly run quantifier elimination to make formula into single invocation
+    if( conj[1].getKind()==kind::EXISTS ){
+      Node conj_se = conj[1][1];
+
+      Trace("smt-synth") << "Compute single invocation for " << conj_se << "..." << std::endl;
+      quantifiers::SingleInvocationPartition sip( kind::APPLY );
+      sip.init( conj_se );
+      Trace("smt-synth") << "...finished, got:" << std::endl;
+      sip.debugPrint("smt-synth");
+
+      if( !sip.isPurelySingleInvocation() && sip.isNonGroundSingleInvocation() ){
+        //We are in the case where our synthesis conjecture is exists f. forall xy. P( f( x ), x, y ), P does not contain f.
+        //The following will run QE on (exists z x.) exists y. P( z, x, y ) to obtain Q( z, x ),
+        //  and then constructs exists f. forall x. Q( f( x ), x ), where Q does not contain f.  We invoke synthesis solver on this result.
+
+        //create new smt engine to do quantifier elimination
+        SmtEngine smt_qe( d_exprManager );
+        smt_qe.setLogic(getLogicInfo());
+        Trace("smt-synth") << "Property is non-ground single invocation, run QE to obtain single invocation." << std::endl;
+        //partition variables
+        std::vector< Node > qe_vars;
+        std::vector< Node > nqe_vars;
+        for( unsigned i=0; i<sip.d_all_vars.size(); i++ ){
+          Node v = sip.d_all_vars[i];
+          if( std::find( sip.d_si_vars.begin(), sip.d_si_vars.end(), v )==sip.d_si_vars.end() ){
+            qe_vars.push_back( v );
+          }else{
+            nqe_vars.push_back( v );
+          }
+        }
+        std::vector< Node > orig;
+        std::vector< Node > subs;
+        //skolemize non-qe variables
+        for( unsigned i=0; i<nqe_vars.size(); i++ ){
+          Node k = NodeManager::currentNM()->mkSkolem( "k", nqe_vars[i].getType(), "qe for non-ground single invocation" );
+          orig.push_back( nqe_vars[i] );
+          subs.push_back( k );
+          Trace("smt-synth") << "  subs : " << nqe_vars[i] << " -> " << k << std::endl;
+        }
+        for( std::map< Node, bool >::iterator it = sip.d_funcs.begin(); it != sip.d_funcs.end(); ++it ){
+          orig.push_back( sip.d_func_inv[it->first] );
+          Node k = NodeManager::currentNM()->mkSkolem( "k", sip.d_func_fo_var[it->first].getType(), "qe for function in non-ground single invocation" );
+          subs.push_back( k );
+          Trace("smt-synth") << "  subs : " << sip.d_func_inv[it->first] << " -> " << k << std::endl;
+        }
+        Node conj_se_ngsi = sip.getFullSpecification();
+        Node conj_se_ngsi_subs = conj_se_ngsi.substitute( orig.begin(), orig.end(), subs.begin(), subs.end() );
+        Assert( !qe_vars.empty() );
+        conj_se_ngsi_subs = NodeManager::currentNM()->mkNode( kind::EXISTS, NodeManager::currentNM()->mkNode( kind::BOUND_VAR_LIST, qe_vars ), conj_se_ngsi_subs );
+
+        Trace("smt-synth") << "Run quantifier elimination on " << conj_se_ngsi_subs << std::endl;
+        Expr qe_res = smt_qe.doQuantifierElimination( conj_se_ngsi_subs.toExpr(), true, false );
+        Trace("smt-synth") << "Result : " << qe_res << std::endl;
+
+        //create single invocation conjecture
+        Node qe_res_n = Node::fromExpr( qe_res );
+        qe_res_n = qe_res_n.substitute( subs.begin(), subs.end(), orig.begin(), orig.end() );
+        if( !nqe_vars.empty() ){
+          qe_res_n = NodeManager::currentNM()->mkNode( kind::EXISTS, NodeManager::currentNM()->mkNode( kind::BOUND_VAR_LIST, nqe_vars ), qe_res_n );
+        }
+        Assert( conj.getNumChildren()==3 );
+        qe_res_n = NodeManager::currentNM()->mkNode( kind::FORALL, conj[0], qe_res_n, conj[2] );
+        Trace("smt-synth") << "Converted conjecture after QE : " << qe_res_n << std::endl;
+        e_check = qe_res_n.toExpr();
+      }
+    }
+  }
+
+  return checkSatisfiability( e_check, true, false );
+}
+
+Result SmtEngine::assertFormula(const Expr& ex, bool inUnsatCore) throw(TypeCheckingException, LogicException, UnsafeInterruptException) {
+  Assert(ex.getExprManager() == d_exprManager);
+  SmtScope smts(this);
+  finalOptionsAreSet();
+  doPendingPops();
+
+  Trace("smt") << "SmtEngine::assertFormula(" << ex << ")" << endl;
+
+  if (Dump.isOn("raw-benchmark")) {
+    Dump("raw-benchmark") << AssertCommand(ex);
+  }
+
+  // Substitute out any abstract values in ex
+  Expr e = d_private->substituteAbstractValues(Node::fromExpr(ex)).toExpr();
+
+  ensureBoolean(e);
+  if(d_assertionList != NULL) {
+    d_assertionList->push_back(e);
+  }
+  d_private->addFormula(e.getNode(), inUnsatCore);
+  return quickCheck().asValidityResult();
+}/* SmtEngine::assertFormula() */
+
+Node SmtEngine::postprocess(TNode node, TypeNode expectedType) const {
+  return node;
+}
+
+Expr SmtEngine::simplify(const Expr& ex) throw(TypeCheckingException, LogicException, UnsafeInterruptException) {
+  Assert(ex.getExprManager() == d_exprManager);
+  SmtScope smts(this);
+  finalOptionsAreSet();
+  doPendingPops();
+  Trace("smt") << "SMT simplify(" << ex << ")" << endl;
+
+  if(Dump.isOn("benchmark")) {
+    Dump("benchmark") << SimplifyCommand(ex);
+  }
+
+  Expr e = d_private->substituteAbstractValues(Node::fromExpr(ex)).toExpr();
+  if( options::typeChecking() ) {
+    e.getType(true); // ensure expr is type-checked at this point
+  }
+
+  // Make sure all preprocessing is done
+  d_private->processAssertions();
+  Node n = d_private->simplify(Node::fromExpr(e));
+  n = postprocess(n, TypeNode::fromType(e.getType()));
+  return n.toExpr();
+}
+
+Expr SmtEngine::expandDefinitions(const Expr& ex) throw(TypeCheckingException, LogicException, UnsafeInterruptException) {
+  d_private->spendResource(options::preprocessStep());
+
+  Assert(ex.getExprManager() == d_exprManager);
+  SmtScope smts(this);
+  finalOptionsAreSet();
+  doPendingPops();
+  Trace("smt") << "SMT expandDefinitions(" << ex << ")" << endl;
+
+  // Substitute out any abstract values in ex.
+  Expr e = d_private->substituteAbstractValues(Node::fromExpr(ex)).toExpr();
+  if(options::typeChecking()) {
+    // Ensure expr is type-checked at this point.
+    e.getType(true);
+  }
+  if(Dump.isOn("benchmark")) {
+    Dump("benchmark") << ExpandDefinitionsCommand(e);
+  }
+  hash_map<Node, Node, NodeHashFunction> cache;
+  Node n = d_private->expandDefinitions(Node::fromExpr(e), cache, /* expandOnly = */ true);
+  n = postprocess(n, TypeNode::fromType(e.getType()));
+
+  return n.toExpr();
+}
+
+Expr SmtEngine::getValue(const Expr& ex) const throw(ModalException, TypeCheckingException, LogicException, UnsafeInterruptException) {
+  Assert(ex.getExprManager() == d_exprManager);
+  SmtScope smts(this);
+
+  Trace("smt") << "SMT getValue(" << ex << ")" << endl;
+  if(Dump.isOn("benchmark")) {
+    Dump("benchmark") << GetValueCommand(ex);
+  }
+
+  if(!options::produceModels()) {
+    const char* msg =
+      "Cannot get value when produce-models options is off.";
+    throw ModalException(msg);
+  }
+  if(d_status.isNull() ||
+     d_status.asSatisfiabilityResult() == Result::UNSAT ||
+     d_problemExtended) {
+    const char* msg =
+      "Cannot get value unless immediately preceded by SAT/INVALID or UNKNOWN response.";
+    throw ModalException(msg);
+  }
+
+  // Substitute out any abstract values in ex.
+  Expr e = d_private->substituteAbstractValues(Node::fromExpr(ex)).toExpr();
+
+  // Ensure expr is type-checked at this point.
+  e.getType(options::typeChecking());
+
+  // do not need to apply preprocessing substitutions (should be recorded
+  // in model already)
+
+  Node n = Node::fromExpr(e);
+  Trace("smt") << "--- getting value of " << n << endl;
+  TypeNode expectedType = n.getType();
+
+  // Expand, then normalize
+  hash_map<Node, Node, NodeHashFunction> cache;
+  n = d_private->expandDefinitions(n, cache);
+  // There are two ways model values for terms are computed (for historical
+  // reasons).  One way is that used in check-model; the other is that
+  // used by the Model classes.  It's not clear to me exactly how these
+  // two are different, but they need to be unified.  This ugly hack here
+  // is to fix bug 554 until we can revamp boolean-terms and models [MGD]
+  
+  //AJR : necessary?
+  if(!n.getType().isFunction()) {
+    n = Rewriter::rewrite(n);
+  }
+
+  Trace("smt") << "--- getting value of " << n << endl;
+  TheoryModel* m = d_theoryEngine->getModel();
+  Node resultNode;
+  if(m != NULL) {
+    resultNode = m->getValue(n);
+  }
+  Trace("smt") << "--- got value " << n << " = " << resultNode << endl;
+  resultNode = postprocess(resultNode, expectedType);
+  Trace("smt") << "--- model-post returned " << resultNode << endl;
+  Trace("smt") << "--- model-post returned " << resultNode.getType() << endl;
+  Trace("smt") << "--- model-post expected " << expectedType << endl;
+
+  // type-check the result we got
+  Assert(resultNode.isNull() || resultNode.getType().isSubtypeOf(expectedType),
+         "Run with -t smt for details.");
+
+  // ensure it's a constant
+  Assert(resultNode.getKind() == kind::LAMBDA || resultNode.isConst());
+
+  if(options::abstractValues() && resultNode.getType().isArray()) {
+    resultNode = d_private->mkAbstractValue(resultNode);
+    Trace("smt") << "--- abstract value >> " << resultNode << endl;
+  }
+
+  return resultNode.toExpr();
+}
+
+bool SmtEngine::addToAssignment(const Expr& ex) throw() {
+  SmtScope smts(this);
+  finalOptionsAreSet();
+  doPendingPops();
+  // Substitute out any abstract values in ex
+  Expr e = d_private->substituteAbstractValues(Node::fromExpr(ex)).toExpr();
+  Type type = e.getType(options::typeChecking());
+  // must be Boolean
+  PrettyCheckArgument(
+      type.isBoolean(), e,
+      "expected Boolean-typed variable or function application "
+      "in addToAssignment()" );
+  Node n = e.getNode();
+  // must be an APPLY of a zero-ary defined function, or a variable
+  PrettyCheckArgument(
+      ( ( n.getKind() == kind::APPLY &&
+          ( d_definedFunctions->find(n.getOperator()) !=
+            d_definedFunctions->end() ) &&
+          n.getNumChildren() == 0 ) ||
+        n.isVar() ), e,
+      "expected variable or defined-function application "
+      "in addToAssignment(),\ngot %s", e.toString().c_str() );
+  if(!options::produceAssignments()) {
+    return false;
+  }
+  if(d_assignments == NULL) {
+    d_assignments = new(true) AssignmentSet(d_context);
+  }
+  d_assignments->insert(n);
+
+  return true;
+}
+
+CVC4::SExpr SmtEngine::getAssignment() throw(ModalException, UnsafeInterruptException) {
+  Trace("smt") << "SMT getAssignment()" << endl;
+  SmtScope smts(this);
+  finalOptionsAreSet();
+  if(Dump.isOn("benchmark")) {
+    Dump("benchmark") << GetAssignmentCommand();
+  }
+  if(!options::produceAssignments()) {
+    const char* msg =
+      "Cannot get the current assignment when "
+      "produce-assignments option is off.";
+    throw ModalException(msg);
+  }
+  if(d_status.isNull() ||
+     d_status.asSatisfiabilityResult() == Result::UNSAT  ||
+     d_problemExtended) {
+    const char* msg =
+      "Cannot get the current assignment unless immediately "
+      "preceded by SAT/INVALID or UNKNOWN response.";
+    throw ModalException(msg);
+  }
+
+  if(d_assignments == NULL) {
+    return SExpr(vector<SExpr>());
+  }
+
+  vector<SExpr> sexprs;
+  TypeNode boolType = d_nodeManager->booleanType();
+  TheoryModel* m = d_theoryEngine->getModel();
+  for(AssignmentSet::key_iterator i = d_assignments->key_begin(),
+        iend = d_assignments->key_end();
+      i != iend;
+      ++i) {
+    Assert((*i).getType() == boolType);
+
+    Trace("smt") << "--- getting value of " << *i << endl;
+
+    // Expand, then normalize
+    hash_map<Node, Node, NodeHashFunction> cache;
+    Node n = d_private->expandDefinitions(*i, cache);
+    n = Rewriter::rewrite(n);
+
+    Trace("smt") << "--- getting value of " << n << endl;
+    Node resultNode;
+    if(m != NULL) {
+      resultNode = m->getValue(n);
+    }
+
+    // type-check the result we got
+    Assert(resultNode.isNull() || resultNode.getType() == boolType);
+
+    // ensure it's a constant
+    Assert(resultNode.isConst());
+
+    vector<SExpr> v;
+    if((*i).getKind() == kind::APPLY) {
+      Assert((*i).getNumChildren() == 0);
+      v.push_back(SExpr(SExpr::Keyword((*i).getOperator().toString())));
+    } else {
+      Assert((*i).isVar());
+      v.push_back(SExpr(SExpr::Keyword((*i).toString())));
+    }
+    v.push_back(SExpr(SExpr::Keyword(resultNode.toString())));
+    sexprs.push_back(SExpr(v));
+  }
+  return SExpr(sexprs);
+}
+
+void SmtEngine::addToModelCommandAndDump(const Command& c, uint32_t flags, bool userVisible, const char* dumpTag) {
+  Trace("smt") << "SMT addToModelCommandAndDump(" << c << ")" << endl;
+  SmtScope smts(this);
+  // If we aren't yet fully inited, the user might still turn on
+  // produce-models.  So let's keep any commands around just in
+  // case.  This is useful in two cases: (1) SMT-LIBv1 auto-declares
+  // sort "U" in QF_UF before setLogic() is run and we still want to
+  // support finding card(U) with --finite-model-find, and (2) to
+  // decouple SmtEngine and ExprManager if the user does a few
+  // ExprManager::mkSort() before SmtEngine::setOption("produce-models")
+  // and expects to find their cardinalities in the model.
+  if(/* userVisible && */
+     (!d_fullyInited || options::produceModels()) &&
+     (flags & ExprManager::VAR_FLAG_DEFINED) == 0) {
+    doPendingPops();
+    if(flags & ExprManager::VAR_FLAG_GLOBAL) {
+      d_modelGlobalCommands.push_back(c.clone());
+    } else {
+      d_modelCommands->push_back(c.clone());
+    }
+  }
+  if(Dump.isOn(dumpTag)) {
+    if(d_fullyInited) {
+      Dump(dumpTag) << c;
+    } else {
+      d_dumpCommands.push_back(c.clone());
+    }
+  }
+}
+
+Model* SmtEngine::getModel() throw(ModalException, UnsafeInterruptException) {
+  Trace("smt") << "SMT getModel()" << endl;
+  SmtScope smts(this);
+
+  finalOptionsAreSet();
+
+  if(Dump.isOn("benchmark")) {
+    Dump("benchmark") << GetModelCommand();
+  }
+
+  if(d_status.isNull() ||
+     d_status.asSatisfiabilityResult() == Result::UNSAT ||
+     d_problemExtended) {
+    const char* msg =
+      "Cannot get the current model unless immediately "
+      "preceded by SAT/INVALID or UNKNOWN response.";
+    throw ModalException(msg);
+  }
+  if(!options::produceModels()) {
+    const char* msg =
+      "Cannot get model when produce-models options is off.";
+    throw ModalException(msg);
+  }
+  TheoryModel* m = d_theoryEngine->getModel();
+  m->d_inputName = d_filename;
+  return m;
+}
+
+void SmtEngine::checkUnsatCore() {
+  Assert(options::unsatCores(), "cannot check unsat core if unsat cores are turned off");
+
+  Notice() << "SmtEngine::checkUnsatCore(): generating unsat core" << endl;
+  UnsatCore core = getUnsatCore();
+
+  SmtEngine coreChecker(d_exprManager);
+  coreChecker.setLogic(getLogicInfo());
+
+  PROOF(
+  std::vector<Command*>::const_iterator itg = d_defineCommands.begin();
+  for (; itg != d_defineCommands.end();  ++itg) {
+    (*itg)->invoke(&coreChecker);
+  }
+  );
+
+  Notice() << "SmtEngine::checkUnsatCore(): pushing core assertions (size == " << core.size() << ")" << endl;
+  for(UnsatCore::iterator i = core.begin(); i != core.end(); ++i) {
+    Notice() << "SmtEngine::checkUnsatCore(): pushing core member " << *i << endl;
+    coreChecker.assertFormula(*i);
+  }
+  const bool checkUnsatCores = options::checkUnsatCores();
+  Result r;
+  try {
+    options::checkUnsatCores.set(false);
+    options::checkProofs.set(false);
+    r = coreChecker.checkSat();
+  } catch(...) {
+    options::checkUnsatCores.set(checkUnsatCores);
+    throw;
+  }
+  Notice() << "SmtEngine::checkUnsatCore(): result is " << r << endl;
+  if(r.asSatisfiabilityResult().isUnknown()) {
+    InternalError("SmtEngine::checkUnsatCore(): could not check core result unknown.");
+  }
+
+  if(r.asSatisfiabilityResult().isSat()) {
+    InternalError("SmtEngine::checkUnsatCore(): produced core was satisfiable.");
+  }
+}
+
+void SmtEngine::checkModel(bool hardFailure) {
+  // --check-model implies --produce-assertions, which enables the
+  // assertion list, so we should be ok.
+  Assert(d_assertionList != NULL, "don't have an assertion list to check in SmtEngine::checkModel()");
+
+  TimerStat::CodeTimer checkModelTimer(d_stats->d_checkModelTime);
+
+  // Throughout, we use Notice() to give diagnostic output.
+  //
+  // If this function is running, the user gave --check-model (or equivalent),
+  // and if Notice() is on, the user gave --verbose (or equivalent).
+
+  Notice() << "SmtEngine::checkModel(): generating model" << endl;
+  TheoryModel* m = d_theoryEngine->getModel();
+
+  // Check individual theory assertions
+  d_theoryEngine->checkTheoryAssertionsWithModel();
+
+  // Output the model
+  Notice() << *m;
+
+  // We have a "fake context" for the substitution map (we don't need it
+  // to be context-dependent)
+  context::Context fakeContext;
+  SubstitutionMap substitutions(&fakeContext, /* substituteUnderQuantifiers = */ false);
+
+  for(size_t k = 0; k < m->getNumCommands(); ++k) {
+    const DeclareFunctionCommand* c = dynamic_cast<const DeclareFunctionCommand*>(m->getCommand(k));
+    Notice() << "SmtEngine::checkModel(): model command " << k << " : " << m->getCommand(k) << endl;
+    if(c == NULL) {
+      // we don't care about DECLARE-DATATYPES, DECLARE-SORT, ...
+      Notice() << "SmtEngine::checkModel(): skipping..." << endl;
+    } else {
+      // We have a DECLARE-FUN:
+      //
+      // We'll first do some checks, then add to our substitution map
+      // the mapping: function symbol |-> value
+
+      Expr func = c->getFunction();
+      Node val = m->getValue(func);
+
+      Notice() << "SmtEngine::checkModel(): adding substitution: " << func << " |-> " << val << endl;
+
+      // (1) if the value is a lambda, ensure the lambda doesn't contain the
+      // function symbol (since then the definition is recursive)
+      if (val.getKind() == kind::LAMBDA) {
+        // first apply the model substitutions we have so far
+        Debug("boolean-terms") << "applying subses to " << val[1] << endl;
+        Node n = substitutions.apply(val[1]);
+        Debug("boolean-terms") << "++ got " << n << endl;
+        // now check if n contains func by doing a substitution
+        // [func->func2] and checking equality of the Nodes.
+        // (this just a way to check if func is in n.)
+        SubstitutionMap subs(&fakeContext);
+        Node func2 = NodeManager::currentNM()->mkSkolem("", TypeNode::fromType(func.getType()), "", NodeManager::SKOLEM_NO_NOTIFY);
+        subs.addSubstitution(func, func2);
+        if(subs.apply(n) != n) {
+          Notice() << "SmtEngine::checkModel(): *** PROBLEM: MODEL VALUE DEFINED IN TERMS OF ITSELF ***" << endl;
+          stringstream ss;
+          ss << "SmtEngine::checkModel(): ERRORS SATISFYING ASSERTIONS WITH MODEL:" << endl
+             << "considering model value for " << func << endl
+             << "body of lambda is:   " << val << endl;
+          if(n != val[1]) {
+            ss << "body substitutes to: " << n << endl;
+          }
+          ss << "so " << func << " is defined in terms of itself." << endl
+             << "Run with `--check-models -v' for additional diagnostics.";
+          InternalError(ss.str());
+        }
+      }
+
+      // (2) check that the value is actually a value
+      else if (!val.isConst()) {
+        Notice() << "SmtEngine::checkModel(): *** PROBLEM: MODEL VALUE NOT A CONSTANT ***" << endl;
+        stringstream ss;
+        ss << "SmtEngine::checkModel(): ERRORS SATISFYING ASSERTIONS WITH MODEL:" << endl
+           << "model value for " << func << endl
+           << "             is " << val << endl
+           << "and that is not a constant (.isConst() == false)." << endl
+           << "Run with `--check-models -v' for additional diagnostics.";
+        InternalError(ss.str());
+      }
+
+      // (3) check that it's the correct (sub)type
+      // This was intended to be a more general check, but for now we can't do that because
+      // e.g. "1" is an INT, which isn't a subrange type [1..10] (etc.).
+      else if(func.getType().isInteger() && !val.getType().isInteger()) {
+        Notice() << "SmtEngine::checkModel(): *** PROBLEM: MODEL VALUE NOT CORRECT TYPE ***" << endl;
+        stringstream ss;
+        ss << "SmtEngine::checkModel(): ERRORS SATISFYING ASSERTIONS WITH MODEL:" << endl
+           << "model value for " << func << endl
+           << "             is " << val << endl
+           << "value type is     " << val.getType() << endl
+           << "should be of type " << func.getType() << endl
+           << "Run with `--check-models -v' for additional diagnostics.";
+        InternalError(ss.str());
+      }
+
+      // (4) checks complete, add the substitution
+      Debug("boolean-terms") << "cm: adding subs " << func << " :=> " << val << endl;
+      substitutions.addSubstitution(func, val);
+    }
+  }
+
+  // Now go through all our user assertions checking if they're satisfied.
+  for(AssertionList::const_iterator i = d_assertionList->begin(); i != d_assertionList->end(); ++i) {
+    Notice() << "SmtEngine::checkModel(): checking assertion " << *i << endl;
+    Node n = Node::fromExpr(*i);
+
+    // Apply any define-funs from the problem.
+    {
+      hash_map<Node, Node, NodeHashFunction> cache;
+      n = d_private->expandDefinitions(n, cache);
+    }
+    Notice() << "SmtEngine::checkModel(): -- expands to " << n << endl;
+
+    // Apply our model value substitutions.
+    Debug("boolean-terms") << "applying subses to " << n << endl;
+    n = substitutions.apply(n);
+    Debug("boolean-terms") << "++ got " << n << endl;
+    Notice() << "SmtEngine::checkModel(): -- substitutes to " << n << endl;
+
+    if( n.getKind() != kind::REWRITE_RULE ){
+      // In case it's a quantifier (or contains one), look up its value before
+      // simplifying, or the quantifier might be irreparably altered.
+      n = m->getValue(n);
+      Notice() << "SmtEngine::checkModel(): -- get value : " << n << std::endl;
+    } else {
+      // Note this "skip" is done here, rather than above.  This is
+      // because (1) the quantifier could in principle simplify to false,
+      // which should be reported, and (2) checking for the quantifier
+      // above, before simplification, doesn't catch buried quantifiers
+      // anyway (those not at the top-level).
+      Notice() << "SmtEngine::checkModel(): -- skipping rewrite-rules assertion"
+               << endl;
+      continue;
+    }
+
+    // Simplify the result.
+    n = d_private->simplify(n);
+    Notice() << "SmtEngine::checkModel(): -- simplifies to  " << n << endl;
+
+    // Replace the already-known ITEs (this is important for ground ITEs under quantifiers).
+    n = d_private->d_iteRemover.replace(n);
+    Notice() << "SmtEngine::checkModel(): -- ite replacement gives " << n << endl;
+
+    // Apply our model value substitutions (again), as things may have been simplified.
+    Debug("boolean-terms") << "applying subses to " << n << endl;
+    n = substitutions.apply(n);
+    Debug("boolean-terms") << "++ got " << n << endl;
+    Notice() << "SmtEngine::checkModel(): -- re-substitutes to " << n << endl;
+
+    // As a last-ditch effort, ask model to simplify it.
+    // Presently, this is only an issue for quantifiers, which can have a value
+    // but don't show up in our substitution map above.
+    n = m->getValue(n);
+    Notice() << "SmtEngine::checkModel(): -- model-substitutes to " << n << endl;
+
+    if( d_logic.isQuantified() ){
+      // AJR: since quantified formulas are not checkable, we assign them to true/false based on the satisfying assignment.
+      // however, quantified formulas can be modified during preprocess, so they may not correspond to those in the satisfying assignment.
+      // hence we use a relaxed version of check model here.
+      // this is necessary until preprocessing passes explicitly record how they rewrite quantified formulas
+      if( hardFailure && !n.isConst() && n.getKind() != kind::LAMBDA ){
+        Notice() << "SmtEngine::checkModel(): -- relax check model wrt quantified formulas..." << endl;
+        AlwaysAssert( quantifiers::QuantifiersRewriter::containsQuantifiers( n ) );
+        Warning() << "Warning : SmtEngine::checkModel(): cannot check simplified assertion : " << n << endl;
+        continue;
+      }
+    }else{
+      AlwaysAssert(!hardFailure || n.isConst() || n.getKind() == kind::LAMBDA);
+    }
+    // The result should be == true.
+    if(n != NodeManager::currentNM()->mkConst(true)) {
+      Notice() << "SmtEngine::checkModel(): *** PROBLEM: EXPECTED `TRUE' ***"
+               << endl;
+      stringstream ss;
+      ss << "SmtEngine::checkModel(): "
+         << "ERRORS SATISFYING ASSERTIONS WITH MODEL:" << endl
+         << "assertion:     " << *i << endl
+         << "simplifies to: " << n << endl
+         << "expected `true'." << endl
+         << "Run with `--check-models -v' for additional diagnostics.";
+      if(hardFailure) {
+        InternalError(ss.str());
+      } else {
+        Warning() << ss.str() << endl;
+      }
+    }
+  }
+  Notice() << "SmtEngine::checkModel(): all assertions checked out OK !" << endl;
+}
+
+UnsatCore SmtEngine::getUnsatCore() throw(ModalException, UnsafeInterruptException) {
+  Trace("smt") << "SMT getUnsatCore()" << endl;
+  SmtScope smts(this);
+  finalOptionsAreSet();
+  if(Dump.isOn("benchmark")) {
+    Dump("benchmark") << GetUnsatCoreCommand();
+  }
+#if IS_PROOFS_BUILD
+  if(!options::unsatCores()) {
+    throw ModalException("Cannot get an unsat core when produce-unsat-cores option is off.");
+  }
+  if(d_status.isNull() ||
+     d_status.asSatisfiabilityResult() != Result::UNSAT ||
+     d_problemExtended) {
+    throw ModalException("Cannot get an unsat core unless immediately preceded by UNSAT/VALID response.");
+  }
+
+  d_proofManager->traceUnsatCore();// just to trigger core creation
+  return UnsatCore(this, d_proofManager->begin_unsat_core(), d_proofManager->end_unsat_core());
+#else /* IS_PROOFS_BUILD */
+  throw ModalException("This build of CVC4 doesn't have proof support (required for unsat cores).");
+#endif /* IS_PROOFS_BUILD */
+}
+
+Proof* SmtEngine::getProof() throw(ModalException, UnsafeInterruptException) {
+  Trace("smt") << "SMT getProof()" << endl;
+  SmtScope smts(this);
+  finalOptionsAreSet();
+  if(Dump.isOn("benchmark")) {
+    Dump("benchmark") << GetProofCommand();
+  }
+#if IS_PROOFS_BUILD
+  if(!options::proof()) {
+    throw ModalException("Cannot get a proof when produce-proofs option is off.");
+  }
+  if(d_status.isNull() ||
+     d_status.asSatisfiabilityResult() != Result::UNSAT ||
+     d_problemExtended) {
+    throw ModalException("Cannot get a proof unless immediately preceded by UNSAT/VALID response.");
+  }
+
+  return ProofManager::getProof(this);
+#else /* IS_PROOFS_BUILD */
+  throw ModalException("This build of CVC4 doesn't have proof support.");
+#endif /* IS_PROOFS_BUILD */
+}
+
+void SmtEngine::printInstantiations( std::ostream& out ) {
+  SmtScope smts(this);
+  if( options::instFormatMode()==INST_FORMAT_MODE_SZS ){
+    out << "% SZS output start Proof for " << d_filename.c_str() << std::endl;
+  }
+  if( d_theoryEngine ){
+    d_theoryEngine->printInstantiations( out );
+  }else{
+    Assert( false );
+  }
+  if( options::instFormatMode()==INST_FORMAT_MODE_SZS ){
+    out << "% SZS output end Proof for " << d_filename.c_str() << std::endl;
+  }
+}
+
+void SmtEngine::printSynthSolution( std::ostream& out ) {
+  SmtScope smts(this);
+  if( d_theoryEngine ){
+    d_theoryEngine->printSynthSolution( out );
+  }else{
+    Assert( false );
+  }
+}
+
+Expr SmtEngine::doQuantifierElimination(const Expr& e, bool doFull, bool strict) throw(TypeCheckingException, ModalException, LogicException) {
+  SmtScope smts(this);
+  if(!d_logic.isPure(THEORY_ARITH) && strict){
+    Warning() << "Unexpected logic for quantifier elimination " << d_logic << endl;
+  }
+  Trace("smt-qe") << "Do quantifier elimination " << e << std::endl;
+  Node n_e = Node::fromExpr( e );
+  if( n_e.getKind()!=kind::EXISTS ){
+    throw ModalException("Expecting an existentially quantified formula as argument to get-qe.");
+  }
+  //tag the quantified formula with the quant-elim attribute
+  TypeNode t = NodeManager::currentNM()->booleanType();
+  Node n_attr = NodeManager::currentNM()->mkSkolem("qe", t, "Auxiliary variable for qe attr.");
+  std::vector< Node > node_values;
+  d_theoryEngine->setUserAttribute( doFull ? "quant-elim" : "quant-elim-partial", n_attr, node_values, "");
+  n_attr = NodeManager::currentNM()->mkNode(kind::INST_ATTRIBUTE, n_attr);
+  n_attr = NodeManager::currentNM()->mkNode(kind::INST_PATTERN_LIST, n_attr);
+  std::vector< Node > e_children;
+  e_children.push_back( n_e[0] );
+  e_children.push_back( n_e[1] );
+  e_children.push_back( n_attr );
+  Node nn_e = NodeManager::currentNM()->mkNode( kind::EXISTS, e_children );
+  Trace("smt-qe-debug") << "Query for quantifier elimination : " << nn_e << std::endl;
+  Assert( nn_e.getNumChildren()==3 );
+  Result r = checkSatisfiability(nn_e.toExpr(), true, true);
+  Trace("smt-qe") << "Query returned " << r << std::endl;
+  if(r.asSatisfiabilityResult().isSat() != Result::UNSAT ) {
+    if( r.asSatisfiabilityResult().isSat() != Result::SAT && doFull ){
+      stringstream ss;
+      ss << "While performing quantifier elimination, unexpected result : " << r << " for query.";
+      InternalError(ss.str().c_str());
+    }
+
+    Node top_q = Rewriter::rewrite( nn_e ).negate();
+    Assert( top_q.getKind()==kind::FORALL );
+    Trace("smt-qe") << "Get qe for " << top_q << std::endl;
+    Node ret_n = d_theoryEngine->getInstantiatedConjunction( top_q );
+    Trace("smt-qe") << "Returned : " << ret_n << std::endl;
+    ret_n = Rewriter::rewrite( ret_n.negate() );
+    return ret_n.toExpr();
+  }else {
+    return NodeManager::currentNM()->mkConst(true).toExpr();
+  }
+}
+
+void SmtEngine::getInstantiatedQuantifiedFormulas( std::vector< Expr >& qs ) {
+  SmtScope smts(this);
+  if( d_theoryEngine ){
+    std::vector< Node > qs_n;
+    d_theoryEngine->getInstantiatedQuantifiedFormulas( qs_n );
+    for( unsigned i=0; i<qs_n.size(); i++ ){
+      qs.push_back( qs_n[i].toExpr() );
+    }
+  }else{
+    Assert( false );
+  }
+}
+
+void SmtEngine::getInstantiations( Expr q, std::vector< Expr >& insts ) {
+  SmtScope smts(this);
+  if( d_theoryEngine ){
+    std::vector< Node > insts_n;
+    d_theoryEngine->getInstantiations( Node::fromExpr( q ), insts_n );
+    for( unsigned i=0; i<insts_n.size(); i++ ){
+      insts.push_back( insts_n[i].toExpr() );
+    }
+  }else{
+    Assert( false );
+  }
+}
+
+void SmtEngine::getInstantiationTermVectors( Expr q, std::vector< std::vector< Expr > >& tvecs ) {
+  SmtScope smts(this);
+  Assert(options::trackInstLemmas());
+  if( d_theoryEngine ){
+    std::vector< std::vector< Node > > tvecs_n;
+    d_theoryEngine->getInstantiationTermVectors( Node::fromExpr( q ), tvecs_n );
+    for( unsigned i=0; i<tvecs_n.size(); i++ ){
+      std::vector< Expr > tvec;
+      for( unsigned j=0; j<tvecs_n[i].size(); j++ ){
+        tvec.push_back( tvecs_n[i][j].toExpr() );
+      }
+      tvecs.push_back( tvec );
+    }
+  }else{
+    Assert( false );
+  }
+}
+
+vector<Expr> SmtEngine::getAssertions() throw(ModalException) {
+  SmtScope smts(this);
+  finalOptionsAreSet();
+  doPendingPops();
+  if(Dump.isOn("benchmark")) {
+    Dump("benchmark") << GetAssertionsCommand();
+  }
+  Trace("smt") << "SMT getAssertions()" << endl;
+  if(!options::produceAssertions()) {
+    const char* msg =
+      "Cannot query the current assertion list when not in produce-assertions mode.";
+    throw ModalException(msg);
+  }
+  Assert(d_assertionList != NULL);
+  // copy the result out
+  return vector<Expr>(d_assertionList->begin(), d_assertionList->end());
+}
+
+void SmtEngine::push() throw(ModalException, LogicException, UnsafeInterruptException) {
+  SmtScope smts(this);
+  finalOptionsAreSet();
+  doPendingPops();
+  Trace("smt") << "SMT push()" << endl;
+  d_private->processAssertions();
+  if(Dump.isOn("benchmark")) {
+    Dump("benchmark") << PushCommand();
+  }
+  if(!options::incrementalSolving()) {
+    throw ModalException("Cannot push when not solving incrementally (use --incremental)");
+  }
+
+  // check to see if a postsolve() is pending
+  if(d_needPostsolve) {
+    d_theoryEngine->postsolve();
+    d_needPostsolve = false;
+  }
+
+  // The problem isn't really "extended" yet, but this disallows
+  // get-model after a push, simplifying our lives somewhat and
+  // staying symmtric with pop.
+  d_problemExtended = true;
+
+  d_userLevels.push_back(d_userContext->getLevel());
+  internalPush();
+  Trace("userpushpop") << "SmtEngine: pushed to level "
+                       << d_userContext->getLevel() << endl;
+}
+
+void SmtEngine::pop() throw(ModalException, UnsafeInterruptException) {
+  SmtScope smts(this);
+  finalOptionsAreSet();
+  Trace("smt") << "SMT pop()" << endl;
+  if(Dump.isOn("benchmark")) {
+    Dump("benchmark") << PopCommand();
+  }
+  if(!options::incrementalSolving()) {
+    throw ModalException("Cannot pop when not solving incrementally (use --incremental)");
+  }
+  if(d_userLevels.size() == 0) {
+    throw ModalException("Cannot pop beyond the first user frame");
+  }
+
+  // check to see if a postsolve() is pending
+  if(d_needPostsolve) {
+    d_theoryEngine->postsolve();
+    d_needPostsolve = false;
+  }
+
+  // The problem isn't really "extended" yet, but this disallows
+  // get-model after a pop, simplifying our lives somewhat.  It might
+  // not be strictly necessary to do so, since the pops occur lazily,
+  // but also it would be weird to have a legally-executed (get-model)
+  // that only returns a subset of the assignment (because the rest
+  // is no longer in scope!).
+  d_problemExtended = true;
+
+  AlwaysAssert(d_userContext->getLevel() > 0);
+  AlwaysAssert(d_userLevels.back() < d_userContext->getLevel());
+  while (d_userLevels.back() < d_userContext->getLevel()) {
+    internalPop(true);
+  }
+  d_userLevels.pop_back();
+
+  // Clear out assertion queues etc., in case anything is still in there
+  d_private->notifyPop();
+
+  Trace("userpushpop") << "SmtEngine: popped to level "
+                       << d_userContext->getLevel() << endl;
+  // FIXME: should we reset d_status here?
+  // SMT-LIBv2 spec seems to imply no, but it would make sense to..
+}
+
+void SmtEngine::internalPush() {
+  Assert(d_fullyInited);
+  Trace("smt") << "SmtEngine::internalPush()" << endl;
+  doPendingPops();
+  if(options::incrementalSolving()) {
+    d_private->processAssertions();
+    TimerStat::CodeTimer pushPopTimer(d_stats->d_pushPopTime);
+    d_userContext->push();
+    // the d_context push is done inside of the SAT solver
+    d_propEngine->push();
+  }
+}
+
+void SmtEngine::internalPop(bool immediate) {
+  Assert(d_fullyInited);
+  Trace("smt") << "SmtEngine::internalPop()" << endl;
+  if(options::incrementalSolving()) {
+    ++d_pendingPops;
+  }
+  if(immediate) {
+    doPendingPops();
+  }
+}
+
+void SmtEngine::doPendingPops() {
+  Assert(d_pendingPops == 0 || options::incrementalSolving());
+  while(d_pendingPops > 0) {
+    TimerStat::CodeTimer pushPopTimer(d_stats->d_pushPopTime);
+    d_propEngine->pop();
+    // the d_context pop is done inside of the SAT solver
+    d_userContext->pop();
+    --d_pendingPops;
+  }
+}
+
+void SmtEngine::reset() throw() {
+  SmtScope smts(this);
+  ExprManager *em = d_exprManager;
+  Trace("smt") << "SMT reset()" << endl;
+  if(Dump.isOn("benchmark")) {
+    Dump("benchmark") << ResetCommand();
+  }
+  Options opts;
+  opts.copyValues(d_originalOptions);
+  this->~SmtEngine();
+  NodeManager::fromExprManager(em)->getOptions().copyValues(opts);
+  new(this) SmtEngine(em);
+}
+
+void SmtEngine::resetAssertions() throw() {
+  SmtScope smts(this);
+
+  Trace("smt") << "SMT resetAssertions()" << endl;
+  if(Dump.isOn("benchmark")) {
+    Dump("benchmark") << ResetAssertionsCommand();
+  }
+
+  while(!d_userLevels.empty()) {
+    pop();
+  }
+
+  // Also remember the global push/pop around everything.
+  Assert(d_userLevels.size() == 0 && d_userContext->getLevel() == 1);
+  d_context->popto(0);
+  d_userContext->popto(0);
+  DeleteAndClearCommandVector(d_modelGlobalCommands);
+  d_userContext->push();
+  d_context->push();
+}
+
+void SmtEngine::interrupt() throw(ModalException) {
+  if(!d_fullyInited) {
+    return;
+  }
+  d_propEngine->interrupt();
+  d_theoryEngine->interrupt();
+}
+
+void SmtEngine::setResourceLimit(unsigned long units, bool cumulative) {
+  d_private->getResourceManager()->setResourceLimit(units, cumulative);
+}
+void SmtEngine::setTimeLimit(unsigned long milis, bool cumulative) {
+  d_private->getResourceManager()->setTimeLimit(milis, cumulative);
+}
+
+unsigned long SmtEngine::getResourceUsage() const {
+  return d_private->getResourceManager()->getResourceUsage();
+}
+
+unsigned long SmtEngine::getTimeUsage() const {
+  return d_private->getResourceManager()->getTimeUsage();
+}
+
+unsigned long SmtEngine::getResourceRemaining() const throw(ModalException) {
+  return d_private->getResourceManager()->getResourceRemaining();
+}
+
+unsigned long SmtEngine::getTimeRemaining() const throw(ModalException) {
+  return d_private->getResourceManager()->getTimeRemaining();
+}
+
+Statistics SmtEngine::getStatistics() const throw() {
+  return Statistics(*d_statisticsRegistry);
+}
+
+SExpr SmtEngine::getStatistic(std::string name) const throw() {
+  return d_statisticsRegistry->getStatistic(name);
+}
+
+void SmtEngine::setUserAttribute(const std::string& attr, Expr expr, std::vector<Expr> expr_values, std::string str_value) {
+  SmtScope smts(this);
+  std::vector<Node> node_values;
+  for( unsigned i=0; i<expr_values.size(); i++ ){
+    node_values.push_back( expr_values[i].getNode() );
+  }
+  d_theoryEngine->setUserAttribute(attr, expr.getNode(), node_values, str_value);
+}
+
+void SmtEngine::setPrintFuncInModel(Expr f, bool p) {
+  Trace("setp-model") << "Set printInModel " << f << " to " << p << std::endl;
+  for( unsigned i=0; i<d_modelGlobalCommands.size(); i++ ){
+    Command * c = d_modelGlobalCommands[i];
+    DeclareFunctionCommand* dfc = dynamic_cast<DeclareFunctionCommand*>(c);
+    if(dfc != NULL) {
+      if( dfc->getFunction()==f ){
+        dfc->setPrintInModel( p );
+      }
+    }
+  }
+  for( unsigned i=0; i<d_modelCommands->size(); i++ ){
+    Command * c = (*d_modelCommands)[i];
+    DeclareFunctionCommand* dfc = dynamic_cast<DeclareFunctionCommand*>(c);
+    if(dfc != NULL) {
+      if( dfc->getFunction()==f ){
+        dfc->setPrintInModel( p );
+      }
+    }
+  }
+}
+
+
+
+void SmtEngine::beforeSearch() throw(ModalException) {
+  if(d_fullyInited) {
+    throw ModalException(
+        "SmtEngine::beforeSearch called after initialization.");
+  }
+}
+
+
+void SmtEngine::setOption(const std::string& key, const CVC4::SExpr& value)
+  throw(OptionException, ModalException) {
+
+  NodeManagerScope nms(d_nodeManager);
+  Trace("smt") << "SMT setOption(" << key << ", " << value << ")" << endl;
+
+  if(Dump.isOn("benchmark")) {
+    Dump("benchmark") << SetOptionCommand(key, value);
+  }
+
+  if(key == "command-verbosity") {
+    if(!value.isAtom()) {
+      const vector<SExpr>& cs = value.getChildren();
+      if(cs.size() == 2 &&
+         (cs[0].isKeyword() || cs[0].isString()) &&
+         cs[1].isInteger()) {
+        string c = cs[0].getValue();
+        const Integer& v = cs[1].getIntegerValue();
+        if(v < 0 || v > 2) {
+          throw OptionException("command-verbosity must be 0, 1, or 2");
+        }
+        d_commandVerbosity[c] = v;
+        return;
+      }
+    }
+    throw OptionException("command-verbosity value must be a tuple (command-name, integer)");
+  }
+
+  if(!value.isAtom()) {
+    throw OptionException("bad value for :" + key);
+  }
+
+  string optionarg = value.getValue();
+  Options& nodeManagerOptions = NodeManager::currentNM()->getOptions();
+  nodeManagerOptions.setOption(key, optionarg);
+}
+
+CVC4::SExpr SmtEngine::getOption(const std::string& key) const
+  throw(OptionException) {
+
+  NodeManagerScope nms(d_nodeManager);
+
+  Trace("smt") << "SMT getOption(" << key << ")" << endl;
+
+  if(key.length() >= 18 &&
+     key.compare(0, 18, "command-verbosity:") == 0) {
+    map<string, Integer>::const_iterator i = d_commandVerbosity.find(key.c_str() + 18);
+    if(i != d_commandVerbosity.end()) {
+      return SExpr((*i).second);
+    }
+    i = d_commandVerbosity.find("*");
+    if(i != d_commandVerbosity.end()) {
+      return SExpr((*i).second);
+    }
+    return SExpr(Integer(2));
+  }
+
+  if(Dump.isOn("benchmark")) {
+    Dump("benchmark") << GetOptionCommand(key);
+  }
+
+  if(key == "command-verbosity") {
+    vector<SExpr> result;
+    SExpr defaultVerbosity;
+    for(map<string, Integer>::const_iterator i = d_commandVerbosity.begin();
+        i != d_commandVerbosity.end();
+        ++i) {
+      vector<SExpr> v;
+      v.push_back(SExpr((*i).first));
+      v.push_back(SExpr((*i).second));
+      if((*i).first == "*") {
+        // put the default at the end of the SExpr
+        defaultVerbosity = SExpr(v);
+      } else {
+        result.push_back(SExpr(v));
+      }
+    }
+    // put the default at the end of the SExpr
+    if(!defaultVerbosity.isAtom()) {
+      result.push_back(defaultVerbosity);
+    } else {
+      // ensure the default is always listed
+      vector<SExpr> v;
+      v.push_back(SExpr("*"));
+      v.push_back(SExpr(Integer(2)));
+      result.push_back(SExpr(v));
+    }
+    return SExpr(result);
+  }
+
+  Options& nodeManagerOptions = NodeManager::currentNM()->getOptions();
+  return SExpr::parseAtom(nodeManagerOptions.getOption(key));
+}
+
+void SmtEngine::setReplayStream(ExprStream* replayStream) {
+  AlwaysAssert(!d_fullyInited,
+               "Cannot set replay stream once fully initialized");
+  d_replayStream = replayStream;
+}
+
+}/* CVC4 namespace */
diff --git a/src/smt/smt_engine.h b/src/smt/smt_engine.h
new file mode 100644
index 0000000..f1ce2e0
--- /dev/null
+++ b/src/smt/smt_engine.h
@@ -0,0 +1,767 @@
+/*********************                                                        */
+/*! \file smt_engine.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief SmtEngine: the main public entry point of libcvc4.
+ **
+ ** SmtEngine: the main public entry point of libcvc4.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__SMT_ENGINE_H
+#define __CVC4__SMT_ENGINE_H
+
+#include <string>
+#include <vector>
+
+#include "base/modal_exception.h"
+#include "context/cdhashmap_forward.h"
+#include "context/cdhashset_forward.h"
+#include "context/cdlist_forward.h"
+#include "expr/expr.h"
+#include "expr/expr_manager.h"
+#include "expr/expr_stream.h"
+#include "options/options.h"
+#include "proof/unsat_core.h"
+#include "smt/logic_exception.h"
+#include "smt_util/lemma_channels.h"
+#include "theory/logic_info.h"
+#include "util/hash.h"
+#include "util/proof.h"
+#include "util/result.h"
+#include "util/sexpr.h"
+#include "util/statistics.h"
+#include "util/unsafe_interrupt_exception.h"
+
+// In terms of abstraction, this is below (and provides services to)
+// ValidityChecker and above (and requires the services of)
+// PropEngine.
+
+namespace CVC4 {
+
+template <bool ref_count> class NodeTemplate;
+typedef NodeTemplate<true> Node;
+typedef NodeTemplate<false> TNode;
+struct NodeHashFunction;
+
+class Command;
+class GetModelCommand;
+
+class SmtEngine;
+class DecisionEngine;
+class TheoryEngine;
+
+class ProofManager;
+
+class Model;
+class LogicRequest;
+class StatisticsRegistry;
+
+namespace context {
+  class Context;
+  class UserContext;
+}/* CVC4::context namespace */
+
+namespace prop {
+  class PropEngine;
+}/* CVC4::prop namespace */
+
+namespace expr {
+  namespace attr {
+    class AttributeManager;
+    struct SmtAttributes;
+  }/* CVC4::expr::attr namespace */
+}/* CVC4::expr namespace */
+
+namespace smt {
+  /**
+   * Representation of a defined function.  We keep these around in
+   * SmtEngine to permit expanding definitions late (and lazily), to
+   * support getValue() over defined functions, to support user output
+   * in terms of defined functions, etc.
+   */
+  class DefinedFunction;
+
+  struct SmtEngineStatistics;
+  class SmtEnginePrivate;
+  class SmtScope;
+  class BooleanTermConverter;
+
+  ProofManager* currentProofManager();
+
+  struct CommandCleanup;
+  typedef context::CDList<Command*, CommandCleanup> CommandList;
+}/* CVC4::smt namespace */
+
+namespace theory {
+  class TheoryModel;
+}/* CVC4::theory namespace */
+
+namespace stats {
+  StatisticsRegistry* getStatisticsRegistry(SmtEngine*);
+}/* CVC4::stats namespace */
+
+// TODO: SAT layer (esp. CNF- versus non-clausal solvers under the
+// hood): use a type parameter and have check() delegate, or subclass
+// SmtEngine and override check()?
+//
+// Probably better than that is to have a configuration object that
+// indicates which passes are desired.  The configuration occurs
+// elsewhere (and can even occur at runtime).  A simple "pass manager"
+// of sorts determines check()'s behavior.
+//
+// The CNF conversion can go on in PropEngine.
+
+class CVC4_PUBLIC SmtEngine {
+
+  /** The type of our internal map of defined functions */
+  typedef context::CDHashMap<Node, smt::DefinedFunction, NodeHashFunction>
+    DefinedFunctionMap;
+  /** The type of our internal assertion list */
+  typedef context::CDList<Expr> AssertionList;
+  /** The type of our internal assignment set */
+  typedef context::CDHashSet<Node, NodeHashFunction> AssignmentSet;
+  /** The types for the recursive function definitions */
+  typedef context::CDList<Node> NodeList;
+
+  /** Expr manager context */
+  context::Context* d_context;
+
+  /** The context levels of user pushes */
+  std::vector<int> d_userLevels;
+  /** User level context */
+  context::UserContext* d_userContext;
+
+  /** Our expression manager */
+  ExprManager* d_exprManager;
+  /** Our internal expression/node manager */
+  NodeManager* d_nodeManager;
+  /** The decision engine */
+  DecisionEngine* d_decisionEngine;
+  /** The theory engine */
+  TheoryEngine* d_theoryEngine;
+  /** The propositional engine */
+  prop::PropEngine* d_propEngine;
+  /** The proof manager */
+  ProofManager* d_proofManager;
+  /** An index of our defined functions */
+  DefinedFunctionMap* d_definedFunctions;
+  /** recursive function definition abstractions for --fmf-fun */
+  std::map< Node, TypeNode > d_fmfRecFunctionsAbs;
+  std::map< Node, std::vector< Node > > d_fmfRecFunctionsConcrete;
+  NodeList* d_fmfRecFunctionsDefined;
+
+  /**
+   * The assertion list (before any conversion) for supporting
+   * getAssertions().  Only maintained if in interactive mode.
+   */
+  AssertionList* d_assertionList;
+
+  /**
+   * List of items for which to retrieve values using getAssignment().
+   */
+  AssignmentSet* d_assignments;
+
+  /**
+   * A list of commands that should be in the Model globally (i.e.,
+   * regardless of push/pop).  Only maintained if produce-models option
+   * is on.
+   */
+  std::vector<Command*> d_modelGlobalCommands;
+
+  /**
+   * A list of commands that should be in the Model locally (i.e.,
+   * it is context-dependent on push/pop).  Only maintained if
+   * produce-models option is on.
+   */
+  smt::CommandList* d_modelCommands;
+
+  /**
+   * A vector of declaration commands waiting to be dumped out.
+   * Once the SmtEngine is fully initialized, we'll dump them.
+   * This ensures the declarations come after the set-logic and
+   * any necessary set-option commands are dumped.
+   */
+  std::vector<Command*> d_dumpCommands;
+
+  /**
+   *A vector of command definitions to be imported in the new
+   *SmtEngine when checking unsat-cores.
+   */
+  std::vector<Command*> d_defineCommands;
+
+  /**
+   * The logic we're in.
+   */
+  LogicInfo d_logic;
+
+  /**
+   * Keep a copy of the original option settings (for reset()).
+   */
+  Options d_originalOptions;
+
+  /**
+   * Number of internal pops that have been deferred.
+   */
+  unsigned d_pendingPops;
+
+  /**
+   * Whether or not this SmtEngine has been fully initialized (that is,
+   * the ).  This post-construction initialization is automatically
+   * triggered by the use of the SmtEngine; e.g. when setLogic() is
+   * called, or the first assertion is made, etc.
+   */
+  bool d_fullyInited;
+
+  /**
+   * Whether or not we have added any assertions/declarations/definitions,
+   * or done push/pop, since the last checkSat/query, and therefore we're
+   * not responsible for models or proofs.
+   */
+  bool d_problemExtended;
+
+  /**
+   * Whether or not a query() or checkSat() has already been made through
+   * this SmtEngine.  If true, and incrementalSolving is false, then
+   * attempting an additional query() or checkSat() will fail with a
+   * ModalException.
+   */
+  bool d_queryMade;
+
+  /**
+   * Internal status flag to indicate whether we've sent a theory
+   * presolve() notification and need to match it with a postsolve().
+   */
+  bool d_needPostsolve;
+
+  /*
+   * Whether to call theory preprocessing during simplification - on
+   * by default* but gets turned off if arithRewriteEq is on
+   */
+  bool d_earlyTheoryPP;
+
+  /**
+   * Most recent result of last checkSat/query or (set-info :status).
+   */
+  Result d_status;
+
+  /**
+   * The name of the input (if any).
+   */
+  std::string d_filename;
+
+  /**
+   * Verbosity of various commands.
+   */
+  std::map<std::string, Integer> d_commandVerbosity;
+
+  /** ReplayStream for the solver. */
+  ExprStream* d_replayStream;
+
+  /**
+   * A private utility class to SmtEngine.
+   */
+  smt::SmtEnginePrivate* d_private;
+
+  /**
+   * Check that a generated proof (via getProof()) checks.
+   */
+  void checkProof();
+
+  /**
+   * Check that an unsatisfiable core is indeed unsatisfiable.
+   */
+  void checkUnsatCore();
+
+  /**
+   * Check that a generated Model (via getModel()) actually satisfies
+   * all user assertions.
+   */
+  void checkModel(bool hardFailure = true);
+
+  /**
+   * Postprocess a value for output to the user.  Involves doing things
+   * like turning datatypes back into tuples, length-1-bitvectors back
+   * into booleans, etc.
+   */
+  Node postprocess(TNode n, TypeNode expectedType) const;
+
+  /**
+   * This is something of an "init" procedure, but is idempotent; call
+   * as often as you like.  Should be called whenever the final options
+   * and logic for the problem are set (at least, those options that are
+   * not permitted to change after assertions and queries are made).
+   */
+  void finalOptionsAreSet();
+
+  /**
+   * Apply heuristics settings and other defaults.  Done once, at
+   * finishInit() time.
+   */
+  void setDefaults();
+
+  /**
+   * Create theory engine, prop engine, decision engine. Called by
+   * finalOptionsAreSet()
+   */
+  void finishInit();
+
+  /**
+   * This is called by the destructor, just before destroying the
+   * PropEngine, TheoryEngine, and DecisionEngine (in that order).  It
+   * is important because there are destruction ordering issues
+   * between PropEngine and Theory.
+   */
+  void shutdown();
+
+  /**
+   * Full check of consistency in current context.  Returns true iff
+   * consistent.
+   */
+  Result check();
+
+  /**
+   * Quick check of consistency in current context: calls
+   * processAssertionList() then look for inconsistency (based only on
+   * that).
+   */
+  Result quickCheck();
+
+  /**
+   * Fully type-check the argument, and also type-check that it's
+   * actually Boolean.
+   */
+  void ensureBoolean(const Expr& e) throw(TypeCheckingException);
+
+  void internalPush();
+
+  void internalPop(bool immediate = false);
+
+  void doPendingPops();
+
+  /**
+   * Internally handle the setting of a logic.  This function should always
+   * be called when d_logic is updated.
+   */
+  void setLogicInternal() throw();
+
+  friend class ::CVC4::smt::SmtEnginePrivate;
+  friend class ::CVC4::smt::SmtScope;
+  friend class ::CVC4::smt::BooleanTermConverter;
+  friend ::CVC4::StatisticsRegistry* ::CVC4::stats::getStatisticsRegistry(SmtEngine*);
+  friend ProofManager* ::CVC4::smt::currentProofManager();
+  friend class ::CVC4::LogicRequest;
+  // to access d_modelCommands
+  friend class ::CVC4::Model;
+  friend class ::CVC4::theory::TheoryModel;
+  // to access SmtAttributes
+  friend class expr::attr::AttributeManager;
+  // to access getModel(), which is private (for now)
+  friend class GetModelCommand;
+
+  /**
+   * There's something of a handshake between the expr package's
+   * AttributeManager and the SmtEngine because the expr package
+   * doesn't have a Context on its own (that's owned by the
+   * SmtEngine).  Thus all context-dependent attributes are stored
+   * here.
+   */
+  expr::attr::SmtAttributes* d_smtAttributes;
+
+  StatisticsRegistry* d_statisticsRegistry;
+
+  smt::SmtEngineStatistics* d_stats;
+
+  /** Container for the lemma input and output channels for this SmtEngine.*/
+  LemmaChannels* d_channels;
+
+  /**
+   * Add to Model command.  This is used for recording a command
+   * that should be reported during a get-model call.
+   */
+  void addToModelCommandAndDump(const Command& c, uint32_t flags = 0, bool userVisible = true, const char* dumpTag = "declarations");
+
+  /**
+   * Get the model (only if immediately preceded by a SAT
+   * or INVALID query).  Only permitted if CVC4 was built with model
+   * support and produce-models is on.
+   */
+  Model* getModel() throw(ModalException, UnsafeInterruptException);
+
+  // disallow copy/assignment
+  SmtEngine(const SmtEngine&) CVC4_UNDEFINED;
+  SmtEngine& operator=(const SmtEngine&) CVC4_UNDEFINED;
+
+  //check satisfiability (for query and check-sat)
+  Result checkSatisfiability(const Expr& e, bool inUnsatCore, bool isQuery);
+public:
+
+  /**
+   * Construct an SmtEngine with the given expression manager.
+   */
+  SmtEngine(ExprManager* em) throw();
+
+  /**
+   * Destruct the SMT engine.
+   */
+  ~SmtEngine() throw();
+
+  /**
+   * Set the logic of the script.
+   */
+  void setLogic(const std::string& logic) throw(ModalException, LogicException);
+
+  /**
+   * Set the logic of the script.
+   */
+  void setLogic(const char* logic) throw(ModalException, LogicException);
+
+  /**
+   * Set the logic of the script.
+   */
+  void setLogic(const LogicInfo& logic) throw(ModalException);
+
+  /**
+   * Get the logic information currently set
+   */
+  LogicInfo getLogicInfo() const;
+
+  /**
+   * Set information about the script executing.
+   */
+  void setInfo(const std::string& key, const CVC4::SExpr& value)
+    throw(OptionException, ModalException);
+
+  /**
+   * Query information about the SMT environment.
+   */
+  CVC4::SExpr getInfo(const std::string& key) const
+    throw(OptionException, ModalException);
+
+  /**
+   * Set an aspect of the current SMT execution environment.
+   */
+  void setOption(const std::string& key, const CVC4::SExpr& value)
+    throw(OptionException, ModalException);
+
+  /**
+   * Get an aspect of the current SMT execution environment.
+   */
+  CVC4::SExpr getOption(const std::string& key) const
+    throw(OptionException);
+
+  /**
+   * Add a formula to the current context: preprocess, do per-theory
+   * setup, use processAssertionList(), asserting to T-solver for
+   * literals and conjunction of literals.  Returns false if
+   * immediately determined to be inconsistent.
+   */
+  void defineFunction(Expr func,
+                      const std::vector<Expr>& formals,
+                      Expr formula);
+
+  /** is defined function */
+  bool isDefinedFunction(Expr func);
+
+  /**
+   * Add a formula to the current context: preprocess, do per-theory
+   * setup, use processAssertionList(), asserting to T-solver for
+   * literals and conjunction of literals.  Returns false if
+   * immediately determined to be inconsistent.  This version
+   * takes a Boolean flag to determine whether to include this asserted
+   * formula in an unsat core (if one is later requested).
+   */
+  Result assertFormula(const Expr& e, bool inUnsatCore = true) throw(TypeCheckingException, LogicException, UnsafeInterruptException);
+
+  /**
+   * Check validity of an expression with respect to the current set
+   * of assertions by asserting the query expression's negation and
+   * calling check().  Returns valid, invalid, or unknown result.
+   */
+  Result query(const Expr& e, bool inUnsatCore = true) throw(TypeCheckingException, ModalException, LogicException);
+
+  /**
+   * Assert a formula (if provided) to the current context and call
+   * check().  Returns sat, unsat, or unknown result.
+   */
+  Result checkSat(const Expr& e = Expr(), bool inUnsatCore = true) throw(TypeCheckingException, ModalException, LogicException);
+
+  /**
+   * Assert a synthesis conjecture to the current context and call
+   * check().  Returns sat, unsat, or unknown result.
+   */
+  Result checkSynth(const Expr& e) throw(TypeCheckingException, ModalException, LogicException);
+
+  /**
+   * Simplify a formula without doing "much" work.  Does not involve
+   * the SAT Engine in the simplification, but uses the current
+   * definitions, assertions, and the current partial model, if one
+   * has been constructed.  It also involves theory normalization.
+   *
+   * @todo (design) is this meant to give an equivalent or an
+   * equisatisfiable formula?
+   */
+  Expr simplify(const Expr& e) throw(TypeCheckingException, LogicException, UnsafeInterruptException);
+
+  /**
+   * Expand the definitions in a term or formula.  No other
+   * simplification or normalization is done.
+   */
+  Expr expandDefinitions(const Expr& e) throw(TypeCheckingException, LogicException, UnsafeInterruptException);
+
+  /**
+   * Get the assigned value of an expr (only if immediately preceded
+   * by a SAT or INVALID query).  Only permitted if the SmtEngine is
+   * set to operate interactively and produce-models is on.
+   */
+  Expr getValue(const Expr& e) const throw(ModalException, TypeCheckingException, LogicException, UnsafeInterruptException);
+
+  /**
+   * Add a function to the set of expressions whose value is to be
+   * later returned by a call to getAssignment().  The expression
+   * should be a Boolean zero-ary defined function or a Boolean
+   * variable.  Rather than throwing a ModalException on modal
+   * failures (not in interactive mode or not producing assignments),
+   * this function returns true if the expression was added and false
+   * if this request was ignored.
+   */
+  bool addToAssignment(const Expr& e) throw();
+
+  /**
+   * Get the assignment (only if immediately preceded by a SAT or
+   * INVALID query).  Only permitted if the SmtEngine is set to
+   * operate interactively and produce-assignments is on.
+   */
+  CVC4::SExpr getAssignment() throw(ModalException, UnsafeInterruptException);
+
+  /**
+   * Get the last proof (only if immediately preceded by an UNSAT
+   * or VALID query).  Only permitted if CVC4 was built with proof
+   * support and produce-proofs is on.
+   */
+  Proof* getProof() throw(ModalException, UnsafeInterruptException);
+
+  /**
+   * Print all instantiations made by the quantifiers module.
+   */
+  void printInstantiations( std::ostream& out );
+
+  /**
+   * Print solution for synthesis conjectures found by ce_guided_instantiation module
+   */
+  void printSynthSolution( std::ostream& out );
+
+  /**
+   * Do quantifier elimination, doFull false means just output one disjunct, strict is whether to output warnings.
+   */
+  Expr doQuantifierElimination(const Expr& e, bool doFull, bool strict=true) throw(TypeCheckingException, ModalException, LogicException);
+
+  /**
+   * Get list of quantified formulas that were instantiated
+   */
+  void getInstantiatedQuantifiedFormulas( std::vector< Expr >& qs );
+   
+  /**
+   * Get instantiations
+   */
+  void getInstantiations( Expr q, std::vector< Expr >& insts );
+  void getInstantiationTermVectors( Expr q, std::vector< std::vector< Expr > >& tvecs );
+
+  /**
+   * Get an unsatisfiable core (only if immediately preceded by an
+   * UNSAT or VALID query).  Only permitted if CVC4 was built with
+   * unsat-core support and produce-unsat-cores is on.
+   */
+  UnsatCore getUnsatCore() throw(ModalException, UnsafeInterruptException);
+
+  /**
+   * Get the current set of assertions.  Only permitted if the
+   * SmtEngine is set to operate interactively.
+   */
+  std::vector<Expr> getAssertions() throw(ModalException);
+
+  /**
+   * Push a user-level context.
+   */
+  void push() throw(ModalException, LogicException, UnsafeInterruptException);
+
+  /**
+   * Pop a user-level context.  Throws an exception if nothing to pop.
+   */
+  void pop() throw(ModalException, UnsafeInterruptException);
+
+  /**
+   * Completely reset the state of the solver, as though destroyed and
+   * recreated.  The result is as if newly constructed (so it still
+   * retains the same options structure and ExprManager).
+   */
+  void reset() throw();
+
+  /**
+   * Reset all assertions, global declarations, etc.
+   */
+  void resetAssertions() throw();
+
+  /**
+   * Interrupt a running query.  This can be called from another thread
+   * or from a signal handler.  Throws a ModalException if the SmtEngine
+   * isn't currently in a query.
+   */
+  void interrupt() throw(ModalException);
+
+  /**
+   * Set a resource limit for SmtEngine operations.  This is like a time
+   * limit, but it's deterministic so that reproducible results can be
+   * obtained.  Currently, it's based on the number of conflicts.
+   * However, please note that the definition may change between different
+   * versions of CVC4 (as may the number of conflicts required, anyway),
+   * and it might even be different between instances of the same version
+   * of CVC4 on different platforms.
+   *
+   * A cumulative and non-cumulative (per-call) resource limit can be
+   * set at the same time.  A call to setResourceLimit() with
+   * cumulative==true replaces any cumulative resource limit currently
+   * in effect; a call with cumulative==false replaces any per-call
+   * resource limit currently in effect.  Time limits can be set in
+   * addition to resource limits; the SmtEngine obeys both.  That means
+   * that up to four independent limits can control the SmtEngine
+   * at the same time.
+   *
+   * When an SmtEngine is first created, it has no time or resource
+   * limits.
+   *
+   * Currently, these limits only cause the SmtEngine to stop what its
+   * doing when the limit expires (or very shortly thereafter); no
+   * heuristics are altered by the limits or the threat of them expiring.
+   * We reserve the right to change this in the future.
+   *
+   * @param units the resource limit, or 0 for no limit
+   * @param cumulative whether this resource limit is to be a cumulative
+   * resource limit for all remaining calls into the SmtEngine (true), or
+   * whether it's a per-call resource limit (false); the default is false
+   */
+  void setResourceLimit(unsigned long units, bool cumulative = false);
+
+  /**
+   * Set a time limit for SmtEngine operations.
+   *
+   * A cumulative and non-cumulative (per-call) time limit can be
+   * set at the same time.  A call to setTimeLimit() with
+   * cumulative==true replaces any cumulative time limit currently
+   * in effect; a call with cumulative==false replaces any per-call
+   * time limit currently in effect.  Resource limits can be set in
+   * addition to time limits; the SmtEngine obeys both.  That means
+   * that up to four independent limits can control the SmtEngine
+   * at the same time.
+   *
+   * Note that the cumulative timer only ticks away when one of the
+   * SmtEngine's workhorse functions (things like assertFormula(),
+   * query(), checkSat(), and simplify()) are running.  Between calls,
+   * the timer is still.
+   *
+   * When an SmtEngine is first created, it has no time or resource
+   * limits.
+   *
+   * Currently, these limits only cause the SmtEngine to stop what its
+   * doing when the limit expires (or very shortly thereafter); no
+   * heuristics are altered by the limits or the threat of them expiring.
+   * We reserve the right to change this in the future.
+   *
+   * @param millis the time limit in milliseconds, or 0 for no limit
+   * @param cumulative whether this time limit is to be a cumulative
+   * time limit for all remaining calls into the SmtEngine (true), or
+   * whether it's a per-call time limit (false); the default is false
+   */
+  void setTimeLimit(unsigned long millis, bool cumulative = false);
+
+  /**
+   * Get the current resource usage count for this SmtEngine.  This
+   * function can be used to ascertain reasonable values to pass as
+   * resource limits to setResourceLimit().
+   */
+  unsigned long getResourceUsage() const;
+
+  /**
+   * Get the current millisecond count for this SmtEngine.
+   */
+  unsigned long getTimeUsage() const;
+
+  /**
+   * Get the remaining resources that can be consumed by this SmtEngine
+   * according to the currently-set cumulative resource limit.  If there
+   * is not a cumulative resource limit set, this function throws a
+   * ModalException.
+   */
+  unsigned long getResourceRemaining() const throw(ModalException);
+
+  /**
+   * Get the remaining number of milliseconds that can be consumed by
+   * this SmtEngine according to the currently-set cumulative time limit.
+   * If there is not a cumulative resource limit set, this function
+   * throws a ModalException.
+   */
+  unsigned long getTimeRemaining() const throw(ModalException);
+
+  /**
+   * Permit access to the underlying ExprManager.
+   */
+  ExprManager* getExprManager() const {
+    return d_exprManager;
+  }
+
+  /**
+   * Export statistics from this SmtEngine.
+   */
+  Statistics getStatistics() const throw();
+
+  /**
+   * Get the value of one named statistic from this SmtEngine.
+   */
+  SExpr getStatistic(std::string name) const throw();
+
+  /**
+   * Returns the most recent result of checkSat/query or (set-info :status).
+   */
+  Result getStatusOfLastCommand() const throw() {
+    return d_status;
+  }
+
+  /**
+   * Set user attribute.
+   * This function is called when an attribute is set by a user.
+   * In SMT-LIBv2 this is done via the syntax (! expr :attr)
+   */
+  void setUserAttribute(const std::string& attr, Expr expr, std::vector<Expr> expr_values, std::string str_value);
+
+  /**
+   * Set print function in model
+   */
+  void setPrintFuncInModel(Expr f, bool p);
+
+
+  /** Throws a ModalException if the SmtEngine has been fully initialized. */
+  void beforeSearch() throw(ModalException);
+
+  LemmaChannels* channels() { return d_channels; }
+
+
+  /**
+   * Expermintal feature: Sets the sequence of decisions.
+   * This currently requires very fine grained knowledge about literal
+   * translation.
+   */
+  void setReplayStream(ExprStream* exprStream);
+
+};/* class SmtEngine */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__SMT_ENGINE_H */
diff --git a/src/smt/smt_engine.i b/src/smt/smt_engine.i
new file mode 100644
index 0000000..443e4cc
--- /dev/null
+++ b/src/smt/smt_engine.i
@@ -0,0 +1,51 @@
+%{
+#include "smt/smt_engine.h"
+%}
+
+#ifdef SWIGJAVA
+%typemap(javacode) CVC4::SmtEngine %{
+  // a ref is kept here to keep Java GC from collecting the EM
+  // before the SmtEngine
+  private Object emRef;
+  static final native Object mkRef(Object obj);
+  static final native void dlRef(Object obj);
+%}
+%native (mkRef) jobject SmtEngine::mkRef(jobject);
+%native (dlRef) void SmtEngine::dlRef(jobject);
+%{
+extern "C" {
+SWIGEXPORT jobject JNICALL Java_edu_nyu_acsys_CVC4_SmtEngine_mkRef(JNIEnv* jenv, jclass jcls, jobject o) {
+  if(o == NULL) {
+    return NULL;
+  }
+  return jenv->NewGlobalRef(o);
+}
+SWIGEXPORT void JNICALL Java_edu_nyu_acsys_CVC4_SmtEngine_dlRef(JNIEnv* jenv, jclass jcls, jobject o) {
+  if(o != NULL) {
+    jenv->DeleteGlobalRef(o);
+  }
+}
+}
+%}
+%typemap(javaconstruct) SmtEngine {
+    this($imcall, true);
+    emRef = mkRef(em); // keep ref to expr manager in SWIG proxy class
+  }
+%typemap(javadestruct, methodname="delete", methodmodifiers="public synchronized") CVC4::SmtEngine {
+    dlRef(emRef);
+    emRef = null;
+    if (swigCPtr != 0) {
+      if (swigCMemOwn) {
+        swigCMemOwn = false;
+        CVC4JNI.delete_SmtEngine(swigCPtr);
+      }
+      swigCPtr = 0;
+    }
+  }
+#endif // SWIGJAVA
+
+%ignore CVC4::SmtEngine::setLogic(const char*);
+%ignore CVC4::stats::getStatisticsRegistry(SmtEngine*);
+%ignore CVC4::smt::currentProofManager();
+
+%include "smt/smt_engine.h"
diff --git a/src/smt/smt_engine_check_proof.cpp b/src/smt/smt_engine_check_proof.cpp
new file mode 100644
index 0000000..808f516
--- /dev/null
+++ b/src/smt/smt_engine_check_proof.cpp
@@ -0,0 +1,120 @@
+/*********************                                                        */
+/*! \file smt_engine_check_proof.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Guy Katz
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include <unistd.h>
+
+#include <cstdlib>
+#include <cstring>
+#include <fstream>
+#include <string>
+
+// #warning "TODO: Why is lfsc's check.h being included like this?"
+#include "check.h"
+
+#include "base/configuration_private.h"
+#include "base/cvc4_assert.h"
+#include "base/output.h"
+#include "smt/smt_engine.h"
+#include "util/statistics_registry.h"
+
+using namespace CVC4;
+using namespace std;
+
+namespace CVC4 {
+
+namespace proof {
+  extern const char *const plf_signatures;
+}/* CVC4::proof namespace */
+
+namespace smt {
+
+class UnlinkProofFile {
+  string d_filename;
+public:
+  UnlinkProofFile(const char* filename) : d_filename(filename) {}
+  ~UnlinkProofFile() { unlink(d_filename.c_str()); }
+};/* class UnlinkProofFile */
+
+}/* CVC4::smt namespace */
+
+}/* CVC4 namespace */
+
+void SmtEngine::checkProof() {
+
+#if IS_PROOFS_BUILD
+
+  Chat() << "generating proof..." << endl;
+
+  Proof* pf = getProof();
+
+  Chat() << "checking proof..." << endl;
+
+  std::string logicString = d_logic.getLogicString();
+
+  if (!(
+        // Pure logics
+        logicString == "QF_UF" ||
+        logicString == "QF_AX" ||
+        logicString == "QF_BV" ||
+        // Non-pure logics
+        logicString == "QF_AUF" ||
+        logicString == "QF_UFBV" ||
+        logicString == "QF_ABV" ||
+        logicString == "QF_AUFBV"
+        )) {
+    // This logic is not yet supported
+    Notice() << "Notice: no proof-checking for " << logicString << " proofs yet" << endl;
+    return;
+  }
+
+  char const* tempDir = getenv("TMPDIR");
+  if (!tempDir) {
+    tempDir = "/tmp";
+  }
+
+  stringstream pfPath;
+  pfPath << tempDir << "/cvc4_proof.XXXXXX";
+
+  char* pfFile = strdup(pfPath.str().c_str());
+  int fd = mkstemp(pfFile);
+
+  // ensure this temp file is removed after
+  smt::UnlinkProofFile unlinker(pfFile);
+
+  ofstream pfStream(pfFile);
+  pfStream << proof::plf_signatures << endl;
+  pf->toStream(pfStream);
+  pfStream.close();
+  args a;
+  a.show_runs = false;
+  a.no_tail_calls = false;
+  a.compile_scc = false;
+  a.compile_scc_debug = false;
+  a.run_scc = false;
+  a.use_nested_app = false;
+  a.compile_lib = false;
+  init();
+  check_file(pfFile, a);
+  close(fd);
+
+#else /* IS_PROOFS_BUILD */
+
+  Unreachable("This version of CVC4 was built without proof support; cannot check proofs.");
+
+#endif /* IS_PROOFS_BUILD */
+
+}
diff --git a/src/smt/smt_engine_scope.cpp b/src/smt/smt_engine_scope.cpp
new file mode 100644
index 0000000..c31ea57
--- /dev/null
+++ b/src/smt/smt_engine_scope.cpp
@@ -0,0 +1,27 @@
+/*********************                                                        */
+/*! \file smt_engine_scope.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "smt/smt_engine.h"
+#include "smt/smt_engine_scope.h"
+
+namespace CVC4 {
+namespace smt {
+
+CVC4_THREADLOCAL(SmtEngine*) s_smtEngine_current = NULL;
+
+}/* CVC4::smt namespace */
+}/* CVC4 namespace */
diff --git a/src/smt/smt_engine_scope.h b/src/smt/smt_engine_scope.h
new file mode 100644
index 0000000..9407ff4
--- /dev/null
+++ b/src/smt/smt_engine_scope.h
@@ -0,0 +1,92 @@
+/*********************                                                        */
+/*! \file smt_engine_scope.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Liana Hadarean
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "base/configuration_private.h"
+#include "base/cvc4_assert.h"
+#include "base/output.h"
+#include "base/tls.h"
+#include "expr/node_manager.h"
+#include "proof/proof.h"
+#include "proof/proof_manager.h"
+#include "options/smt_options.h"
+#include "smt/smt_engine.h"
+
+
+namespace CVC4 {
+
+class ProofManager;
+
+namespace smt {
+
+extern CVC4_THREADLOCAL(SmtEngine*) s_smtEngine_current;
+
+inline SmtEngine* currentSmtEngine() {
+  Assert(s_smtEngine_current != NULL);
+  return s_smtEngine_current;
+}
+inline bool smtEngineInScope() {
+  return s_smtEngine_current != NULL;
+}
+
+// FIXME: Maybe move into SmtScope?
+inline ProofManager* currentProofManager() {
+#if IS_PROOFS_BUILD
+  Assert(s_smtEngine_current != NULL);
+  return s_smtEngine_current->d_proofManager;
+#else /* IS_PROOFS_BUILD */
+  InternalError("proofs/unsat cores are not on, but ProofManager requested");
+  return NULL;
+#endif /* IS_PROOFS_BUILD */
+}
+
+class SmtScope : public NodeManagerScope {
+  /** The old NodeManager, to be restored on destruction. */
+  SmtEngine* d_oldSmtEngine;
+
+public:
+
+  SmtScope(const SmtEngine* smt) :
+    NodeManagerScope(smt->d_nodeManager),
+    d_oldSmtEngine(s_smtEngine_current) {
+    Assert(smt != NULL);
+    s_smtEngine_current = const_cast<SmtEngine*>(smt);
+    Debug("current") << "smt scope: " << s_smtEngine_current << std::endl;
+  }
+
+  ~SmtScope() {
+    s_smtEngine_current = d_oldSmtEngine;
+    Debug("current") << "smt scope: returning to " << s_smtEngine_current << std::endl;
+  }
+
+  /**
+   * This returns the StatisticsRegistry attached to the currently in scope
+   * SmtEngine.
+   */
+  static StatisticsRegistry* currentStatisticsRegistry() {
+    Assert(smtEngineInScope());
+    return s_smtEngine_current->d_statisticsRegistry;
+  }
+
+};/* class SmtScope */
+
+
+}/* CVC4::smt namespace */
+}/* CVC4 namespace */
diff --git a/src/smt/smt_statistics_registry.cpp b/src/smt/smt_statistics_registry.cpp
new file mode 100644
index 0000000..d344986
--- /dev/null
+++ b/src/smt/smt_statistics_registry.cpp
@@ -0,0 +1,29 @@
+/*********************                                                        */
+/*! \file smt_statistics_registry.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Accessor for the SmtEngine's StatisticsRegistry.
+ **
+ ** Accessor for the SmtEngine's StatisticsRegistry.
+ **/
+
+
+#include "smt/smt_statistics_registry.h"
+
+#include "smt/smt_engine_scope.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+
+StatisticsRegistry* smtStatisticsRegistry() {
+  return smt::SmtScope::currentStatisticsRegistry();
+}
+
+}/* CVC4 namespace */
diff --git a/src/smt/smt_statistics_registry.h b/src/smt/smt_statistics_registry.h
new file mode 100644
index 0000000..7483e82
--- /dev/null
+++ b/src/smt/smt_statistics_registry.h
@@ -0,0 +1,61 @@
+/*********************                                                        */
+/*! \file smt_statistics_registry.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Accessor for the SmtEngine's StatisticsRegistry.
+ **
+ ** Accessor for the SmtEngine's StatisticsRegistry.
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+
+/**
+ * This returns the StatisticsRegistry attached to the currently in scope
+ * SmtEngine. This is a synonym for smt::SmtScope::currentStatisticsRegistry().
+ */
+StatisticsRegistry* smtStatisticsRegistry();
+
+
+/**
+ * To use a statistic, you need to declare it, initialize it in your
+ * constructor, register it in your constructor, and deregister it in
+ * your destructor.  Instead, this macro does it all for you (and
+ * therefore also keeps the statistic type, field name, and output
+ * string all in the same place in your class's header.  Its use is
+ * like in this example, which takes the place of the declaration of a
+ * statistics field "d_checkTimer":
+ *
+ *   KEEP_STATISTIC(TimerStat, d_checkTimer, "theory::uf::checkTime");
+ *
+ * If any args need to be passed to the constructor, you can specify
+ * them after the string.
+ *
+ * The macro works by creating a nested class type, derived from the
+ * statistic type you give it, which declares a registry-aware
+ * constructor/destructor pair.
+ */
+#define KEEP_STATISTIC(_StatType, _StatField, _StatName, _CtorArgs...)  \
+  struct Statistic_##_StatField : public _StatType {                    \
+    Statistic_##_StatField() : _StatType(_StatName, ## _CtorArgs) {     \
+      smtStatisticsRegistry()->registerStat(this);                 \
+    }                                                                   \
+    ~Statistic_##_StatField() {                                         \
+      smtStatisticsRegistry()->unregisterStat(this);                         \
+    }                                                                   \
+  } _StatField
+
+
+}/* CVC4 namespace */
diff --git a/src/smt/term_formula_removal.cpp b/src/smt/term_formula_removal.cpp
new file mode 100644
index 0000000..3fd333c
--- /dev/null
+++ b/src/smt/term_formula_removal.cpp
@@ -0,0 +1,235 @@
+/*********************                                                        */
+/*! \file term_formula_removal.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Removal of term formulas
+ **
+ ** Removal of term formulas.
+ **/
+#include "smt/term_formula_removal.h"
+
+#include <vector>
+
+#include "options/proof_options.h"
+#include "proof/proof_manager.h"
+#include "theory/ite_utilities.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+RemoveTermFormulas::RemoveTermFormulas(context::UserContext* u)
+  : d_iteCache(u)
+{
+  d_containsVisitor = new theory::ContainsTermITEVisitor();
+}
+
+RemoveTermFormulas::~RemoveTermFormulas(){
+  delete d_containsVisitor;
+}
+
+void RemoveTermFormulas::garbageCollect(){
+  d_containsVisitor->garbageCollect();
+}
+
+theory::ContainsTermITEVisitor* RemoveTermFormulas::getContainsVisitor() {
+  return d_containsVisitor;
+}
+
+size_t RemoveTermFormulas::collectedCacheSizes() const{
+  return d_containsVisitor->cache_size() + d_iteCache.size();
+}
+
+void RemoveTermFormulas::run(std::vector<Node>& output, IteSkolemMap& iteSkolemMap, bool reportDeps)
+{
+  size_t n = output.size();
+  for (unsigned i = 0, i_end = output.size(); i < i_end; ++ i) {
+    // Do this in two steps to avoid Node problems(?)
+    // Appears related to bug 512, splitting this into two lines
+    // fixes the bug on clang on Mac OS
+    Node itesRemoved = run(output[i], output, iteSkolemMap, false, false);
+    // In some calling contexts, not necessary to report dependence information.
+    if (reportDeps &&
+        (options::unsatCores() || options::fewerPreprocessingHoles())) {
+      // new assertions have a dependence on the node
+      PROOF( ProofManager::currentPM()->addDependence(itesRemoved, output[i]); )
+      while(n < output.size()) {
+        PROOF( ProofManager::currentPM()->addDependence(output[n], output[i]); )
+        ++n;
+      }
+    }
+    output[i] = itesRemoved;
+  }
+}
+
+bool RemoveTermFormulas::containsTermITE(TNode e) const {
+  return d_containsVisitor->containsTermITE(e);
+}
+
+Node RemoveTermFormulas::run(TNode node, std::vector<Node>& output,
+                    IteSkolemMap& iteSkolemMap, bool inQuant, bool inTerm) {
+  // Current node
+  Debug("ite") << "removeITEs(" << node << ")" << " " << inQuant << " " << inTerm << endl;
+
+  //if(node.isVar() || node.isConst()){
+  //   (options::biasedITERemoval() && !containsTermITE(node))){
+  //if(node.isVar()){
+  //  return Node(node);
+  //}
+  if( node.getKind()==kind::INST_PATTERN_LIST ){
+    return Node(node);
+  }
+
+  // The result may be cached already
+  int cv = cacheVal( inQuant, inTerm );
+  std::pair<Node, int> cacheKey(node, cv);
+  NodeManager *nodeManager = NodeManager::currentNM();
+  ITECache::const_iterator i = d_iteCache.find(cacheKey);
+  if(i != d_iteCache.end()) {
+    Node cached = (*i).second;
+    Debug("ite") << "removeITEs: in-cache: " << cached << endl;
+    return cached.isNull() ? Node(node) : cached;
+  }
+
+
+  // If an ITE, replace it
+  TypeNode nodeType = node.getType();
+  if(node.getKind() == kind::ITE) {
+    if(!nodeType.isBoolean() && (!inQuant || !node.hasBoundVar())) {
+      Node skolem;
+      // Make the skolem to represent the ITE
+      skolem = nodeManager->mkSkolem("termITE", nodeType, "a variable introduced due to term-level ITE removal");
+
+      // The new assertion
+      Node newAssertion =
+        nodeManager->mkNode(kind::ITE, node[0], skolem.eqNode(node[1]),
+                            skolem.eqNode(node[2]));
+      Debug("ite") << "removeITEs(" << node << ") => " << newAssertion << endl;
+
+      // Attach the skolem
+      d_iteCache.insert(cacheKey, skolem);
+
+      // Remove ITEs from the new assertion, rewrite it and push it to the output
+      newAssertion = run(newAssertion, output, iteSkolemMap, false, false);
+
+      iteSkolemMap[skolem] = output.size();
+      output.push_back(newAssertion);
+
+      // The representation is now the skolem
+      return skolem;
+    }
+  }
+  //if a non-variable Boolean term, replace it
+  if(node.getKind()!=kind::BOOLEAN_TERM_VARIABLE && nodeType.isBoolean() && inTerm && !inQuant ){//(!inQuant || !node.hasBoundVar())){
+    Node skolem;
+    // Make the skolem to represent the Boolean term
+    //skolem = nodeManager->mkSkolem("termBT", nodeType, "a variable introduced due to Boolean term removal");
+    skolem = nodeManager->mkBooleanTermVariable();
+
+    // The new assertion
+    Node newAssertion = skolem.eqNode( node );
+    Debug("ite") << "removeITEs(" << node << ") => " << newAssertion << endl;
+
+    // Attach the skolem
+    d_iteCache.insert(cacheKey, skolem);
+
+    // Remove ITEs from the new assertion, rewrite it and push it to the output
+    newAssertion = run(newAssertion, output, iteSkolemMap, false, false);
+
+    iteSkolemMap[skolem] = output.size();
+    output.push_back(newAssertion);
+
+    // The representation is now the skolem
+    return skolem;
+  }
+  
+  if(node.getKind() == kind::FORALL || node.getKind() == kind::EXISTS) {
+    // Remember if we're inside a quantifier
+    inQuant = true;
+  }else if( theory::kindToTheoryId(node.getKind())!=theory::THEORY_BOOL && 
+            node.getKind()!=kind::EQUAL && node.getKind()!=kind::SEP_STAR && 
+            node.getKind()!=kind::SEP_WAND && node.getKind()!=kind::SEP_LABEL ){
+    // Remember if we're inside a term
+    Debug("ite") << "In term because of " << node << " " << node.getKind() << std::endl;
+    inTerm = true;
+  }
+
+  // If not an ITE, go deep
+  vector<Node> newChildren;
+  bool somethingChanged = false;
+  if(node.getMetaKind() == kind::metakind::PARAMETERIZED) {
+    newChildren.push_back(node.getOperator());
+  }
+  // Remove the ITEs from the children
+  for(TNode::const_iterator it = node.begin(), end = node.end(); it != end; ++it) {
+    Node newChild = run(*it, output, iteSkolemMap, inQuant, inTerm);
+    somethingChanged |= (newChild != *it);
+    newChildren.push_back(newChild);
+  }
+
+  // If changes, we rewrite
+  if(somethingChanged) {
+    Node cached = nodeManager->mkNode(node.getKind(), newChildren);
+    d_iteCache.insert(cacheKey, cached);
+    return cached;
+  } else {
+    d_iteCache.insert(cacheKey, Node::null());
+    return node;
+  }
+}
+
+Node RemoveTermFormulas::replace(TNode node, bool inQuant, bool inTerm) const {
+  //if(node.isVar() || node.isConst()){
+  //   (options::biasedITERemoval() && !containsTermITE(node))){
+  //if(node.isVar()){
+  //  return Node(node);
+  //}
+  if( node.getKind()==kind::INST_PATTERN_LIST ){
+    return Node(node);
+  }
+
+  // Check the cache
+  NodeManager *nodeManager = NodeManager::currentNM();
+  int cv = cacheVal( inQuant, inTerm );
+  ITECache::const_iterator i = d_iteCache.find(make_pair(node, cv));
+  if(i != d_iteCache.end()) {
+    Node cached = (*i).second;
+    return cached.isNull() ? Node(node) : cached;
+  }
+
+  if(node.getKind() == kind::FORALL || node.getKind() == kind::EXISTS) {
+    // Remember if we're inside a quantifier
+    inQuant = true;
+  }else if( theory::kindToTheoryId(node.getKind())!=theory::THEORY_BOOL && node.getKind()!=kind::EQUAL ){
+    // Remember if we're inside a term
+    inTerm = true;
+  }  
+
+  vector<Node> newChildren;
+  bool somethingChanged = false;
+  if(node.getMetaKind() == kind::metakind::PARAMETERIZED) {
+    newChildren.push_back(node.getOperator());
+  }
+  // Replace in children
+  for(TNode::const_iterator it = node.begin(), end = node.end(); it != end; ++it) {
+    Node newChild = replace(*it, inQuant, inTerm);
+    somethingChanged |= (newChild != *it);
+    newChildren.push_back(newChild);
+  }
+
+  // If changes, we rewrite
+  if(somethingChanged) {
+    return nodeManager->mkNode(node.getKind(), newChildren);
+  } else {
+    return node;
+  }
+}
+
+}/* CVC4 namespace */
diff --git a/src/smt/term_formula_removal.h b/src/smt/term_formula_removal.h
new file mode 100644
index 0000000..09991c5
--- /dev/null
+++ b/src/smt/term_formula_removal.h
@@ -0,0 +1,93 @@
+/*********************                                                        */
+/*! \file term_formula_removal.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Removal of term formulas
+ **
+ ** Removal of term formulas.
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <vector>
+
+#include "context/cdinsert_hashmap.h"
+#include "context/context.h"
+#include "expr/node.h"
+#include "smt/dump.h"
+#include "util/bool.h"
+#include "util/hash.h"
+
+namespace CVC4 {
+
+namespace theory {
+  class ContainsTermITEVisitor;
+}/* CVC4::theory namespace */
+
+typedef std::hash_map<Node, unsigned, NodeHashFunction> IteSkolemMap;
+
+class RemoveTermFormulas {
+  typedef context::CDInsertHashMap< std::pair<Node, int>, Node, PairHashFunction<Node, int, NodeHashFunction, BoolHashFunction> > ITECache;
+  ITECache d_iteCache;
+
+  static inline int cacheVal( bool inQuant, bool inTerm ) { return (inQuant ? 1 : 0) + 2*(inTerm ? 1 : 0); }
+public:
+
+  RemoveTermFormulas(context::UserContext* u);
+  ~RemoveTermFormulas();
+
+  /**
+   * Removes the ITE nodes by introducing skolem variables. All
+   * additional assertions are pushed into assertions. iteSkolemMap
+   * contains a map from introduced skolem variables to the index in
+   * assertions containing the new Boolean ite created in conjunction
+   * with that skolem variable.
+   *
+   * With reportDeps true, report reasoning dependences to the proof
+   * manager (for unsat cores).
+   */
+  void run(std::vector<Node>& assertions, IteSkolemMap& iteSkolemMap, bool reportDeps = false);
+
+  /**
+   * Removes the ITE from the node by introducing skolem
+   * variables. All additional assertions are pushed into
+   * assertions. iteSkolemMap contains a map from introduced skolem
+   * variables to the index in assertions containing the new Boolean
+   * ite created in conjunction with that skolem variable.
+   */
+  Node run(TNode node, std::vector<Node>& additionalAssertions,
+           IteSkolemMap& iteSkolemMap, bool inQuant, bool inTerm);
+
+  /**
+   * Substitute under node using pre-existing cache.  Do not remove
+   * any ITEs not seen during previous runs.
+   */
+  Node replace(TNode node, bool inQuant = false, bool inTerm = false) const;
+
+  /** Returns true if e contains a term ite. */
+  bool containsTermITE(TNode e) const;
+
+  /** Returns the collected size of the caches. */
+  size_t collectedCacheSizes() const;
+
+  /** Garbage collects non-context dependent data-structures. */
+  void garbageCollect();
+
+  /** Return the RemoveTermFormulas's containsVisitor. */
+  theory::ContainsTermITEVisitor* getContainsVisitor();
+
+private:
+  theory::ContainsTermITEVisitor* d_containsVisitor;
+
+};/* class RemoveTTE */
+
+}/* CVC4 namespace */
diff --git a/src/smt/update_ostream.h b/src/smt/update_ostream.h
new file mode 100644
index 0000000..9574c54
--- /dev/null
+++ b/src/smt/update_ostream.h
@@ -0,0 +1,124 @@
+/*********************                                                        */
+/*! \file update_ostream.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__UPDATE_OSTREAM_H
+#define __CVC4__UPDATE_OSTREAM_H
+
+#include <ostream>
+
+#include "base/cvc4_assert.h"
+#include "base/output.h"
+#include "expr/expr_iomanip.h"
+#include "options/language.h"
+#include "options/set_language.h"
+#include "options/base_options.h"
+#include "smt/dump.h"
+
+namespace CVC4 {
+
+class ChannelSettings {
+ public:
+  ChannelSettings(std::ostream& out)
+      : d_dagSetting(expr::ExprDag::getDag(out)),
+        d_exprDepthSetting(expr::ExprSetDepth::getDepth(out)),
+        d_printtypesSetting(expr::ExprPrintTypes::getPrintTypes(out)),
+        d_languageSetting(language::SetLanguage::getLanguage(out))
+  {}
+
+  void apply(std::ostream& out) {
+    out << expr::ExprDag(d_dagSetting);
+    out << expr::ExprSetDepth(d_exprDepthSetting);
+    out << expr::ExprPrintTypes(d_printtypesSetting);
+    out << language::SetLanguage(d_languageSetting);
+  }
+
+ private:
+  const int d_dagSetting;
+  const size_t d_exprDepthSetting;
+  const bool d_printtypesSetting;
+  const OutputLanguage d_languageSetting;
+}; /* class ChannelSettings */
+
+class OstreamUpdate {
+public:
+  virtual ~OstreamUpdate(){}
+
+  virtual std::ostream& get() = 0;
+  virtual void set(std::ostream* setTo) = 0;
+
+  void apply(std::ostream* setTo) {
+    PrettyCheckArgument(setTo != NULL, setTo);
+
+    ChannelSettings initialSettings(get());
+    set(setTo);
+    initialSettings.apply(get());
+  }
+}; /* class OstreamUpdate */
+
+class OptionsErrOstreamUpdate : public OstreamUpdate {
+ public:
+  virtual std::ostream& get() { return *(options::err()); }
+  virtual void set(std::ostream* setTo) { return options::err.set(setTo); }
+};  /* class OptionsErrOstreamUpdate */
+
+class DumpOstreamUpdate : public OstreamUpdate {
+ public:
+  virtual std::ostream& get() { return Dump.getStream(); }
+  virtual void set(std::ostream* setTo) { Dump.setStream(setTo); }
+};  /* class DumpOstreamUpdate */
+
+class DebugOstreamUpdate : public OstreamUpdate {
+ public:
+  virtual std::ostream& get() { return Debug.getStream(); }
+  virtual void set(std::ostream* setTo) { Debug.setStream(setTo); }
+};  /* class DebugOstreamUpdate */
+
+class WarningOstreamUpdate : public OstreamUpdate {
+ public:
+  virtual std::ostream& get() { return Warning.getStream(); }
+  virtual void set(std::ostream* setTo) { Warning.setStream(setTo); }
+};  /* class WarningOstreamUpdate */
+
+class MessageOstreamUpdate : public OstreamUpdate {
+ public:
+  virtual std::ostream& get() { return Message.getStream(); }
+  virtual void set(std::ostream* setTo) { Message.setStream(setTo); }
+};  /* class MessageOstreamUpdate */
+
+class NoticeOstreamUpdate : public OstreamUpdate {
+ public:
+  virtual std::ostream& get() { return Notice.getStream(); }
+  virtual void set(std::ostream* setTo) { Notice.setStream(setTo); }
+};  /* class NoticeOstreamUpdate */
+
+class ChatOstreamUpdate : public OstreamUpdate {
+ public:
+  virtual std::ostream& get() { return Chat.getStream(); }
+  virtual void set(std::ostream* setTo) { Chat.setStream(setTo); }
+};  /* class ChatOstreamUpdate */
+
+class TraceOstreamUpdate : public OstreamUpdate {
+ public:
+  virtual std::ostream& get() { return Trace.getStream(); }
+  virtual void set(std::ostream* setTo) { Trace.setStream(setTo); }
+};  /* class TraceOstreamUpdate */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__UPDATE_OSTREAM_H */
diff --git a/src/smt_util/Makefile.am b/src/smt_util/Makefile.am
new file mode 100644
index 0000000..46f6493
--- /dev/null
+++ b/src/smt_util/Makefile.am
@@ -0,0 +1,20 @@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4LIB \
+	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
+
+noinst_LTLIBRARIES = libsmtutil.la
+
+libsmtutil_la_SOURCES = \
+	Makefile.am \
+	Makefile.in \
+	boolean_simplification.cpp \
+	boolean_simplification.h \
+	lemma_channels.cpp \
+	lemma_channels.h \
+	lemma_input_channel.h \
+	lemma_output_channel.h \
+	nary_builder.cpp \
+	nary_builder.h \
+	node_visitor.h
+
diff --git a/src/smt_util/Makefile.in b/src/smt_util/Makefile.in
new file mode 100644
index 0000000..fc942cb
--- /dev/null
+++ b/src/smt_util/Makefile.in
@@ -0,0 +1,772 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = src/smt_util
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libsmtutil_la_LIBADD =
+am_libsmtutil_la_OBJECTS = boolean_simplification.lo lemma_channels.lo \
+	nary_builder.lo
+libsmtutil_la_OBJECTS = $(am_libsmtutil_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(libsmtutil_la_SOURCES)
+DIST_SOURCES = $(libsmtutil_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4LIB \
+	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..
+
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
+noinst_LTLIBRARIES = libsmtutil.la
+libsmtutil_la_SOURCES = \
+	Makefile.am \
+	Makefile.in \
+	boolean_simplification.cpp \
+	boolean_simplification.h \
+	lemma_channels.cpp \
+	lemma_channels.h \
+	lemma_input_channel.h \
+	lemma_output_channel.h \
+	nary_builder.cpp \
+	nary_builder.h \
+	node_visitor.h
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/smt_util/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/smt_util/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+libsmtutil.la: $(libsmtutil_la_OBJECTS) $(libsmtutil_la_DEPENDENCIES) $(EXTRA_libsmtutil_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK)  $(libsmtutil_la_OBJECTS) $(libsmtutil_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/boolean_simplification.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/lemma_channels.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nary_builder.Plo at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/smt_util/boolean_simplification.cpp b/src/smt_util/boolean_simplification.cpp
new file mode 100644
index 0000000..c5c1693
--- /dev/null
+++ b/src/smt_util/boolean_simplification.cpp
@@ -0,0 +1,65 @@
+/*********************                                                        */
+/*! \file boolean_simplification.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Simple routines for Boolean simplification
+ **
+ ** Simple, commonly-used routines for Boolean simplification.
+ **/
+
+#include "smt_util/boolean_simplification.h"
+
+namespace CVC4 {
+
+bool
+BooleanSimplification::push_back_associative_commute_recursive
+    (Node n, std::vector<Node>& buffer, Kind k, Kind notK, bool negateNode)
+    throw(AssertionException) {
+  Node::iterator i = n.begin(), end = n.end();
+  for(; i != end; ++i){
+    Node child = *i;
+    if(child.getKind() == k){
+      if(! push_back_associative_commute_recursive(child, buffer, k, notK, negateNode)) {
+        return false;
+      }
+    }else if(child.getKind() == kind::NOT && child[0].getKind() == notK){
+      if(! push_back_associative_commute_recursive(child[0], buffer, notK, k, !negateNode)) {
+        return false;
+      }
+    }else{
+      if(negateNode){
+        if(child.isConst()) {
+          if((k == kind::AND && child.getConst<bool>()) ||
+             (k == kind::OR && !child.getConst<bool>())) {
+            buffer.clear();
+            buffer.push_back(negate(child));
+            return false;
+          }
+        } else {
+          buffer.push_back(negate(child));
+        }
+      }else{
+        if(child.isConst()) {
+          if((k == kind::OR && child.getConst<bool>()) ||
+             (k == kind::AND && !child.getConst<bool>())) {
+            buffer.clear();
+            buffer.push_back(child);
+            return false;
+          }
+        } else {
+          buffer.push_back(child);
+        }
+      }
+    }
+  }
+  return true;
+}/* BooleanSimplification::push_back_associative_commute_recursive() */
+
+}/* CVC4 namespace */
diff --git a/src/smt_util/boolean_simplification.h b/src/smt_util/boolean_simplification.h
new file mode 100644
index 0000000..7207dc3
--- /dev/null
+++ b/src/smt_util/boolean_simplification.h
@@ -0,0 +1,234 @@
+/*********************                                                        */
+/*! \file boolean_simplification.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Simple routines for Boolean simplification
+ **
+ ** Simple, commonly-used routines for Boolean simplification.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__BOOLEAN_SIMPLIFICATION_H
+#define __CVC4__BOOLEAN_SIMPLIFICATION_H
+
+#include <vector>
+#include <algorithm>
+
+#include "base/cvc4_assert.h"
+#include "expr/expr_manager_scope.h"
+#include "expr/node.h"
+
+namespace CVC4 {
+
+/**
+ * A class to contain a number of useful functions for simple
+ * simplification of nodes.  One never uses it as an object (and
+ * it cannot be constructed).  It is used as a namespace.
+ */
+class BooleanSimplification {
+  // cannot construct one of these
+  BooleanSimplification() CVC4_UNDEFINED;
+  BooleanSimplification(const BooleanSimplification&) CVC4_UNDEFINED;
+
+  static bool push_back_associative_commute_recursive
+    (Node n, std::vector<Node>& buffer, Kind k, Kind notK, bool negateNode)
+    throw(AssertionException) CVC4_WARN_UNUSED_RESULT;
+
+public:
+
+  /**
+   * The threshold for removing duplicates.  (See removeDuplicates().)
+   */
+  static const uint32_t DUPLICATE_REMOVAL_THRESHOLD = 10;
+
+  /**
+   * Remove duplicate nodes from a vector, modifying it in-place.
+   * If the vector has size >= DUPLICATE_REMOVAL_THRESHOLD, this
+   * function is a no-op.
+   */
+  static void removeDuplicates(std::vector<Node>& buffer)
+      throw(AssertionException) {
+    if(buffer.size() < DUPLICATE_REMOVAL_THRESHOLD) {
+      std::sort(buffer.begin(), buffer.end());
+      std::vector<Node>::iterator new_end =
+        std::unique(buffer.begin(), buffer.end());
+      buffer.erase(new_end, buffer.end());
+    }
+  }
+
+  /**
+   * Takes a node with kind AND, collapses all AND and (NOT OR)-kinded
+   * children of it (as far as possible---see
+   * push_back_associative_commute()), removes duplicates, and returns
+   * the resulting Node.
+   */
+  static Node simplifyConflict(Node andNode) throw(AssertionException) {
+    AssertArgument(!andNode.isNull(), andNode);
+    AssertArgument(andNode.getKind() == kind::AND, andNode);
+
+    std::vector<Node> buffer;
+    push_back_associative_commute(andNode, buffer, kind::AND, kind::OR);
+
+    removeDuplicates(buffer);
+
+    if(buffer.size() == 1) {
+      return buffer[0];
+    }
+
+    NodeBuilder<> nb(kind::AND);
+    nb.append(buffer);
+    return nb;
+  }
+
+  /**
+   * Takes a node with kind OR, collapses all OR and (NOT AND)-kinded
+   * children of it (as far as possible---see
+   * push_back_associative_commute()), removes duplicates, and returns
+   * the resulting Node.
+   */
+  static Node simplifyClause(Node orNode) throw(AssertionException) {
+    AssertArgument(!orNode.isNull(), orNode);
+    AssertArgument(orNode.getKind() == kind::OR, orNode);
+
+    std::vector<Node> buffer;
+    push_back_associative_commute(orNode, buffer, kind::OR, kind::AND);
+
+    removeDuplicates(buffer);
+
+    Assert(buffer.size() > 0);
+    if(buffer.size() == 1) {
+      return buffer[0];
+    }
+
+    NodeBuilder<> nb(kind::OR);
+    nb.append(buffer);
+    return nb;
+  }
+
+  /**
+   * Takes a node with kind IMPLIES, converts it to an OR, then
+   * simplifies the result with simplifyClause().
+   *
+   * The input doesn't actually have to be Horn, it seems, but that's
+   * the common case(?), hence the name.
+   */
+  static Node simplifyHornClause(Node implication) throw(AssertionException) {
+    AssertArgument(implication.getKind() == kind::IMPLIES, implication);
+
+    TNode left = implication[0];
+    TNode right = implication[1];
+
+    Node notLeft = negate(left);
+    Node clause = NodeBuilder<2>(kind::OR) << notLeft << right;
+
+    return simplifyClause(clause);
+  }
+
+  /**
+   * Aids in reforming a node.  Takes a node of (N-ary) kind k and
+   * copies its children into an output vector, collapsing its k-kinded
+   * children into it.  Also collapses negations of notK.  For example:
+   *
+   *   push_back_associative_commute( [OR [OR a b] [OR b c d] [NOT [AND e f]]],
+   *                                  buffer, kind::OR, kind::AND )
+   *   yields a "buffer" vector of [a b b c d e f]
+   *
+   * @param n the node to operate upon
+   * @param buffer the output vector (must be empty on entry)
+   * @param k the kind to collapse (should equal the kind of node n)
+   * @param notK the "negation" of kind k (e.g. OR's negation is AND),
+   * or kind::UNDEFINED_KIND if none.
+   * @param negateChildren true if the children of the resulting node
+   * (that is, the elements in buffer) should all be negated; you want
+   * this if e.g. you're simplifying the (OR...) in (NOT (OR...)),
+   * intending to make the result an AND.
+   */
+  static inline void
+  push_back_associative_commute(Node n, std::vector<Node>& buffer,
+                                Kind k, Kind notK, bool negateChildren = false)
+      throw(AssertionException) {
+    AssertArgument(buffer.empty(), buffer);
+    AssertArgument(!n.isNull(), n);
+    AssertArgument(k != kind::UNDEFINED_KIND && k != kind::NULL_EXPR, k);
+    AssertArgument(notK != kind::NULL_EXPR, notK);
+    AssertArgument(n.getKind() == k, n,
+                   "expected node to have kind %s", kindToString(k).c_str());
+
+    bool b CVC4_UNUSED =
+      push_back_associative_commute_recursive(n, buffer, k, notK, false);
+
+    if(buffer.size() == 0) {
+      // all the TRUEs for an AND (resp FALSEs for an OR) were simplified away
+      buffer.push_back(NodeManager::currentNM()->mkConst(k == kind::AND ? true : false));
+    }
+  }/* push_back_associative_commute() */
+
+  /**
+   * Negates a node, doing all the double-negation elimination
+   * that's possible.
+   *
+   * @param n the node to negate (cannot be the null node)
+   */
+  static Node negate(TNode n) throw(AssertionException) {
+    AssertArgument(!n.isNull(), n);
+
+    bool polarity = true;
+    TNode base = n;
+    while(base.getKind() == kind::NOT){
+      base = base[0];
+      polarity = !polarity;
+    }
+    if(n.isConst()) {
+      return NodeManager::currentNM()->mkConst(!n.getConst<bool>());
+    }
+    if(polarity){
+      return base.notNode();
+    }else{
+      return base;
+    }
+  }
+
+  /**
+   * Negates an Expr, doing all the double-negation elimination that's
+   * possible.
+   *
+   * @param e the Expr to negate (cannot be the null Expr)
+   */
+  static Expr negate(Expr e) throw(AssertionException) {
+    ExprManagerScope ems(e);
+    return negate(Node::fromExpr(e)).toExpr();
+  }
+
+  /**
+   * Simplify an OR, AND, or IMPLIES.  This function is the identity
+   * for all other kinds.
+   */
+  inline static Node simplify(TNode n) throw(AssertionException) {
+    switch(n.getKind()) {
+    case kind::AND:
+      return simplifyConflict(n);
+
+    case kind::OR:
+      return simplifyClause(n);
+
+    case kind::IMPLIES:
+      return simplifyHornClause(n);
+
+    default:
+      return n;
+    }
+  }
+
+};/* class BooleanSimplification */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__BOOLEAN_SIMPLIFICATION_H */
diff --git a/src/smt_util/lemma_channels.cpp b/src/smt_util/lemma_channels.cpp
new file mode 100644
index 0000000..083c4ad
--- /dev/null
+++ b/src/smt_util/lemma_channels.cpp
@@ -0,0 +1,54 @@
+/*********************                                                        */
+/*! \file lemma_channels.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This class is a light container for globals that used to live
+ ** in options. This is NOT a good long term solution, but is a reasonable
+ ** stop gap.
+ **
+ ** This class is a light container for globals that used to live
+ ** in options. This is NOT a good long term solution, but is a reasonable
+ ** stop gap.
+ **/
+
+#include "smt_util/lemma_channels.h"
+
+#include <cerrno>
+#include <iostream>
+#include <string>
+#include <utility>
+
+#include "cvc4autoconfig.h" // Needed for CVC4_REPLAY
+#include "expr/expr_stream.h"
+#include "options/open_ostream.h"
+#include "options/option_exception.h"
+#include "options/parser_options.h"
+#include "smt_util/lemma_input_channel.h"
+#include "smt_util/lemma_output_channel.h"
+
+namespace CVC4 {
+
+LemmaChannels::LemmaChannels()
+    : d_lemmaInputChannel(NULL)
+    , d_lemmaOutputChannel(NULL)
+{}
+
+LemmaChannels::~LemmaChannels(){}
+
+void LemmaChannels::setLemmaInputChannel(LemmaInputChannel* in) {
+  d_lemmaInputChannel = in;
+}
+
+void LemmaChannels::setLemmaOutputChannel(LemmaOutputChannel* out) {
+  d_lemmaOutputChannel = out;
+}
+
+
+} /* namespace CVC4 */
diff --git a/src/smt_util/lemma_channels.h b/src/smt_util/lemma_channels.h
new file mode 100644
index 0000000..54a9db1
--- /dev/null
+++ b/src/smt_util/lemma_channels.h
@@ -0,0 +1,77 @@
+/*********************                                                        */
+/*! \file lemma_channels.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief LemmaChannels is a light container for a pair of input and output
+ ** lemma channels.
+ **
+ ** LemmaChannels is a light container for a pair of input and output
+ ** lemma channels. These contain paramaters for the infrequently
+ ** used Portfolio mode. There should be exactly one of these per SmtEngine
+ ** with the same lifetime as the SmtEngine. The user directly passes these as
+ ** pointers and is resonsible for cleaning up the memory.
+ **
+ ** Basically, the problem this class is solving is that previously these were
+ ** using smt_options.h and the Options class as globals for these same
+ ** datastructures.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__SMT_UTIL__LEMMA_CHANNELS_H
+#define __CVC4__SMT_UTIL__LEMMA_CHANNELS_H
+
+#include <iosfwd>
+#include <string>
+#include <utility>
+
+#include "options/option_exception.h"
+#include "smt_util/lemma_input_channel.h"
+#include "smt_util/lemma_output_channel.h"
+
+namespace CVC4 {
+
+/**
+ * LemmaChannels is a wrapper around two pointers:
+ * - getLemmaInputChannel()
+ * - getLemmaOutputChannel()
+ *
+ * The user can directly set these and is responsible for handling the
+ * memory for these. These datastructures are used for Portfolio mode.
+ */
+class CVC4_PUBLIC LemmaChannels {
+ public:
+  /** Creates an empty LemmaChannels with all 4 pointers initially NULL. */
+  LemmaChannels();
+  ~LemmaChannels();
+
+  void setLemmaInputChannel(LemmaInputChannel* in);
+  LemmaInputChannel* getLemmaInputChannel() { return d_lemmaInputChannel; }
+
+  void setLemmaOutputChannel(LemmaOutputChannel* out);
+  LemmaOutputChannel* getLemmaOutputChannel() { return d_lemmaOutputChannel; }
+
+ private:
+  // Disable copy constructor.
+  LemmaChannels(const LemmaChannels&) CVC4_UNDEFINED;
+
+  // Disable assignment operator.
+  LemmaChannels& operator=(const LemmaChannels&) CVC4_UNDEFINED;
+
+  /** This captures the old options::lemmaInputChannel .*/
+  LemmaInputChannel* d_lemmaInputChannel;
+
+  /** This captures the old options::lemmaOutputChannel .*/
+  LemmaOutputChannel* d_lemmaOutputChannel;
+}; /* class LemmaChannels */
+
+} /* namespace CVC4 */
+
+#endif /* __CVC4__SMT_UTIL__LEMMA_CHANNELS_H */
diff --git a/src/smt_util/lemma_input_channel.h b/src/smt_util/lemma_input_channel.h
new file mode 100644
index 0000000..5d2b092
--- /dev/null
+++ b/src/smt_util/lemma_input_channel.h
@@ -0,0 +1,38 @@
+/*********************                                                        */
+/*! \file lemma_input_channel.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__LEMMA_INPUT_CHANNEL_H
+#define __CVC4__LEMMA_INPUT_CHANNEL_H
+
+#include "expr/expr.h"
+
+namespace CVC4 {
+
+class CVC4_PUBLIC LemmaInputChannel {
+public:
+  virtual ~LemmaInputChannel() throw() { }
+
+  virtual bool hasNewLemma() = 0;
+  virtual Expr getNewLemma() = 0;
+
+};/* class LemmaOutputChannel */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__LEMMA_INPUT_CHANNEL_H */
diff --git a/src/smt_util/lemma_output_channel.h b/src/smt_util/lemma_output_channel.h
new file mode 100644
index 0000000..6664b0d
--- /dev/null
+++ b/src/smt_util/lemma_output_channel.h
@@ -0,0 +1,46 @@
+/*********************                                                        */
+/*! \file lemma_output_channel.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Mechanism for communication about new lemmas
+ **
+ ** This file defines an interface for use by the theory and propositional
+ ** engines to communicate new lemmas to the "outside world," for example
+ ** for lemma sharing between threads.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__LEMMA_OUTPUT_CHANNEL_H
+#define __CVC4__LEMMA_OUTPUT_CHANNEL_H
+
+#include "expr/expr.h"
+
+namespace CVC4 {
+
+/**
+ * This interface describes a mechanism for the propositional and theory
+ * engines to communicate with the "outside world" about new lemmas being
+ * discovered.
+ */
+class CVC4_PUBLIC LemmaOutputChannel {
+public:
+  virtual ~LemmaOutputChannel() throw() { }
+
+  /**
+   * Notifies this output channel that there's a new lemma.
+   * The lemma may or may not be in CNF.
+   */
+  virtual void notifyNewLemma(Expr lemma) = 0;
+};/* class LemmaOutputChannel */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__LEMMA_OUTPUT_CHANNEL_H */
diff --git a/src/smt_util/nary_builder.cpp b/src/smt_util/nary_builder.cpp
new file mode 100644
index 0000000..686dcf5
--- /dev/null
+++ b/src/smt_util/nary_builder.cpp
@@ -0,0 +1,200 @@
+/*********************                                                        */
+/*! \file nary_builder.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+#include "smt_util/nary_builder.h"
+
+#include "expr/metakind.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace util {
+
+Node NaryBuilder::mkAssoc(Kind kind, const std::vector<Node>& children){
+  if(children.size() == 0){
+    return zeroArity(kind);
+  }else if(children.size() == 1){
+    return children[0];
+  }else{
+    const unsigned int max = kind::metakind::getUpperBoundForKind(kind);
+    const unsigned int min = kind::metakind::getLowerBoundForKind(kind);
+
+    Assert(min <= children.size());
+
+    unsigned int numChildren = children.size();
+    NodeManager* nm = NodeManager::currentNM();
+    if( numChildren <= max ) {
+      return nm->mkNode(kind,children);
+    }
+
+    typedef std::vector<Node>::const_iterator const_iterator;
+    const_iterator it = children.begin() ;
+    const_iterator end = children.end() ;
+
+    /* The new top-level children and the children of each sub node */
+    std::vector<Node> newChildren;
+    std::vector<Node> subChildren;
+
+    while( it != end && numChildren > max ) {
+      /* Grab the next max children and make a node for them. */
+      for(const_iterator next = it + max; it != next; ++it, --numChildren ) {
+        subChildren.push_back(*it);
+      }
+      Node subNode = nm->mkNode(kind,subChildren);
+      newChildren.push_back(subNode);
+      subChildren.clear();
+    }
+
+    /* If there's children left, "top off" the Expr. */
+    if(numChildren > 0) {
+      /* If the leftovers are too few, just copy them into newChildren;
+       * otherwise make a new sub-node  */
+      if(numChildren < min) {
+        for(; it != end; ++it) {
+          newChildren.push_back(*it);
+        }
+      } else {
+        for(; it != end; ++it) {
+          subChildren.push_back(*it);
+        }
+        Node subNode = nm->mkNode(kind, subChildren);
+        newChildren.push_back(subNode);
+      }
+    }
+
+    /* It's inconceivable we could have enough children for this to fail
+     * (more than 2^32, in most cases?). */
+    AlwaysAssert( newChildren.size() <= max,
+                  "Too many new children in mkAssociative" );
+
+    /* It would be really weird if this happened (it would require
+     * min > 2, for one thing), but let's make sure. */
+    AlwaysAssert( newChildren.size() >= min,
+                  "Too few new children in mkAssociative" );
+
+    return nm->mkNode(kind,newChildren);
+  }
+}
+
+Node NaryBuilder::zeroArity(Kind k){
+  using namespace kind;
+  NodeManager* nm = NodeManager::currentNM();
+  switch(k){
+  case AND:
+    return nm->mkConst(true);
+  case OR:
+    return nm->mkConst(false);
+  case PLUS:
+    return nm->mkConst(Rational(0));
+  case MULT:
+    return nm->mkConst(Rational(1));
+  default:
+    return Node::null();
+  }
+}
+
+
+RePairAssocCommutativeOperators::RePairAssocCommutativeOperators()
+  : d_cache()
+{}
+RePairAssocCommutativeOperators::~RePairAssocCommutativeOperators(){}
+size_t RePairAssocCommutativeOperators::size() const{ return d_cache.size(); }
+void RePairAssocCommutativeOperators::clear(){ d_cache.clear(); }
+
+bool RePairAssocCommutativeOperators::isAssociateCommutative(Kind k){
+  using namespace kind;
+  switch(k){
+  case BITVECTOR_CONCAT:
+  case BITVECTOR_AND:
+  case BITVECTOR_OR:
+  case BITVECTOR_XOR:
+  case BITVECTOR_MULT:
+  case BITVECTOR_PLUS:
+  case DISTINCT:
+  case PLUS:
+  case MULT:
+  case AND:
+  case OR:
+    return true;
+  default:
+    return false;
+  }
+}
+
+Node RePairAssocCommutativeOperators::rePairAssocCommutativeOperators(TNode n){
+  if(d_cache.find(n) != d_cache.end()){
+    return d_cache[n];
+  }
+  Node result =
+    isAssociateCommutative(n.getKind()) ?
+    case_assoccomm(n) : case_other(n);
+
+  d_cache[n] = result;
+  return result;
+}
+
+Node RePairAssocCommutativeOperators::case_assoccomm(TNode n){
+  Kind k = n.getKind();
+  Assert(isAssociateCommutative(k));
+  Assert(n.getMetaKind() != kind::metakind::PARAMETERIZED);
+  unsigned N = n.getNumChildren();
+  Assert(N >= 2);
+
+
+  Node last = rePairAssocCommutativeOperators( n[N-1]);
+  Node nextToLast = rePairAssocCommutativeOperators(n[N-2]);
+
+  NodeManager* nm = NodeManager::currentNM();
+  Node last2 = nm->mkNode(k, nextToLast, last);
+
+  if(N <= 2){
+    return last2;
+  } else{
+    Assert(N > 2);
+    Node prevRound = last2;
+    for(unsigned prevPos = N-2; prevPos > 0; --prevPos){
+      unsigned currPos = prevPos-1;
+      Node curr = rePairAssocCommutativeOperators(n[currPos]);
+      Node round = nm->mkNode(k, curr, prevRound);
+      prevRound = round;
+    }
+    return prevRound;
+  }
+}
+
+Node RePairAssocCommutativeOperators::case_other(TNode n){
+  if(n.isConst() || n.isVar()){
+    return n;
+  }
+
+  NodeBuilder<> nb(n.getKind());
+
+  if(n.getMetaKind() == kind::metakind::PARAMETERIZED) {
+    nb << n.getOperator();
+  }
+
+  // Remove the ITEs from the children
+  for(TNode::const_iterator i = n.begin(), end = n.end(); i != end; ++i) {
+    Node newChild = rePairAssocCommutativeOperators(*i);
+    nb << newChild;
+  }
+
+  Node result = (Node)nb;
+  return result;
+}
+
+}/* util namespace */
+}/* CVC4 namespace */
diff --git a/src/smt_util/nary_builder.h b/src/smt_util/nary_builder.h
new file mode 100644
index 0000000..d8201fb
--- /dev/null
+++ b/src/smt_util/nary_builder.h
@@ -0,0 +1,55 @@
+/*********************                                                        */
+/*! \file nary_builder.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <vector>
+#include "expr/node.h"
+
+namespace CVC4{
+namespace util {
+
+class NaryBuilder {
+public:
+  static Node mkAssoc(Kind k, const std::vector<Node>& children);
+  static Node zeroArity(Kind k);
+};/* class NaryBuilder */
+
+class RePairAssocCommutativeOperators {
+public:
+  RePairAssocCommutativeOperators();
+  ~RePairAssocCommutativeOperators();
+
+  Node rePairAssocCommutativeOperators(TNode n);
+
+  static bool isAssociateCommutative(Kind k);
+
+  size_t size() const;
+  void clear();
+private:
+  Node case_assoccomm(TNode n);
+  Node case_other(TNode n);
+
+  typedef std::hash_map<Node, Node, NodeHashFunction> NodeMap;
+  NodeMap d_cache;
+};/* class RePairAssocCommutativeOperators */
+
+}/* util namespace */
+}/* CVC4 namespace */
diff --git a/src/smt_util/node_visitor.h b/src/smt_util/node_visitor.h
new file mode 100644
index 0000000..1906124
--- /dev/null
+++ b/src/smt_util/node_visitor.h
@@ -0,0 +1,120 @@
+/*********************                                                        */
+/*! \file node_visitor.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Liana Hadarean
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A simple visitor for nodes
+ **
+ ** A simple visitor for nodes.
+ **/
+
+#pragma once
+
+#include "cvc4_private.h"
+
+#include <vector>
+
+#include "expr/node.h"
+
+namespace CVC4 {
+
+/**
+ * Traverses the nodes reverse-topologically (children before parents),
+ * calling the visitor in order.
+ */
+template<typename Visitor>
+class NodeVisitor {
+
+  /** For re-entry checking */
+  static CVC4_THREADLOCAL(bool) s_inRun;
+
+  /**
+   * Guard against NodeVisitor<> being re-entrant.
+   */
+  template <class T>
+  class GuardReentry {
+    T& d_guard;
+  public:
+    GuardReentry(T& guard)
+    : d_guard(guard) {
+      Assert(!d_guard);
+      d_guard = true;
+    }
+    ~GuardReentry() {
+      Assert(d_guard);
+      d_guard = false;
+    }
+  };/* class NodeVisitor<>::GuardReentry */
+
+public:
+
+  /**
+   * Element of the stack.
+   */
+  struct stack_element {
+    /** The node to be visited */
+    TNode node;
+    /** The parent of the node */
+    TNode parent;
+    /** Have the children been queued up for visitation */
+    bool children_added;
+    stack_element(TNode node, TNode parent)
+    : node(node), parent(parent), children_added(false) {}
+  };/* struct preprocess_stack_element */
+
+  /**
+   * Performs the traversal.
+   */
+  static typename Visitor::return_type run(Visitor& visitor, TNode node) {
+
+    GuardReentry<CVC4_THREADLOCAL_TYPE(bool)> guard(s_inRun);
+
+    // Notify of a start
+    visitor.start(node);
+
+    // Do a reverse-topological sort of the subexpressions
+    std::vector<stack_element> toVisit;
+    toVisit.push_back(stack_element(node, node));
+    while (!toVisit.empty()) {
+      stack_element& stackHead = toVisit.back();
+      // The current node we are processing
+      TNode current = stackHead.node;
+      TNode parent = stackHead.parent;
+
+      if (visitor.alreadyVisited(current, parent)) {
+        // If already visited, we're done
+        toVisit.pop_back();
+      } else if (stackHead.children_added) {
+        // Call the visitor
+        visitor.visit(current, parent);
+        // Done with this node, remove from the stack
+        toVisit.pop_back();
+      } else {
+        // Mark that we have added the children
+        stackHead.children_added = true;
+        // We need to add the children
+        for(TNode::iterator child_it = current.begin(); child_it != current.end(); ++ child_it) {
+          TNode childNode = *child_it;
+          if (!visitor.alreadyVisited(childNode, current)) {
+            toVisit.push_back(stack_element(childNode, current));
+          }
+        }
+      }
+    }
+
+    // Notify that we're done
+    return visitor.done(node);
+  }
+
+};/* class NodeVisitor<> */
+
+template <typename Visitor>
+CVC4_THREADLOCAL(bool) NodeVisitor<Visitor>::s_inRun = false;
+
+}/* CVC4 namespace */
diff --git a/src/svn_versioninfo.cpp b/src/svn_versioninfo.cpp
new file mode 100644
index 0000000..a8c9a1e
--- /dev/null
+++ b/src/svn_versioninfo.cpp
@@ -0,0 +1,5 @@
+#include "base/configuration.h"
+const bool ::CVC4::Configuration::IS_SUBVERSION_BUILD = true;
+const char* const ::CVC4::Configuration::SUBVERSION_BRANCH_NAME = "URL: https://github.com/CVC4/CVC4/trunk";
+const unsigned ::CVC4::Configuration::SUBVERSION_REVISION = 6068;
+const bool ::CVC4::Configuration::SUBVERSION_HAS_MODIFICATIONS = true;
diff --git a/src/theory/arith/approx_simplex.cpp b/src/theory/arith/approx_simplex.cpp
new file mode 100644
index 0000000..9b8efb7
--- /dev/null
+++ b/src/theory/arith/approx_simplex.cpp
@@ -0,0 +1,3214 @@
+/*********************                                                        */
+/*! \file approx_simplex.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+#include "theory/arith/approx_simplex.h"
+
+#include <cfloat>
+#include <cmath>
+#include <map>
+#include <math.h>
+
+#include "base/output.h"
+#include "cvc4autoconfig.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/arith/constraint.h"
+#include "theory/arith/cut_log.h"
+#include "theory/arith/matrix.h"
+#include "theory/arith/normal_form.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+struct AuxInfo {
+  TreeLog* tl;
+  int pivotLimit;
+  int branchLimit;
+  int branchDepth;
+  MipResult term; /* terminatation */
+};
+
+enum SlackReplace { SlackUndef=0, SlackLB, SlackUB, SlackVLB, SlackVUB };
+
+std::ostream& operator<<(std::ostream& out, MipResult res){
+  switch(res){
+  case MipUnknown:
+    out << "MipUnknown"; break;
+  case MipBingo:
+    out << "MipBingo"; break;
+  case MipClosed:
+    out << "MipClosed"; break;
+  case BranchesExhausted:
+    out << "BranchesExhausted"; break;
+  case PivotsExhauasted:
+    out << "PivotsExhauasted"; break;
+  case ExecExhausted:
+    out << "ExecExhausted"; break;
+  default:
+    out << "Unexpected Mip Value!"; break;
+  }
+  return out;
+}
+struct VirtualBound {
+  // Either x <= d * y or x >= d * y
+  ArithVar x; // variable being bounded
+  Kind k; // either LEQ or GEQ
+  Rational d; // the multiple on y
+  ArithVar y; // the variable that is the upper bound
+  ConstraintP c; // the original constraint relating x and y
+
+  VirtualBound()
+    : x(ARITHVAR_SENTINEL)
+    , k(kind::UNDEFINED_KIND)
+    , d()
+    , y(ARITHVAR_SENTINEL)
+    , c(NullConstraint)
+  {}
+  VirtualBound(ArithVar toBound, Kind rel, const Rational& coeff, ArithVar bounding, ConstraintP orig)
+    : x(toBound)
+    , k(rel)
+    , d(coeff)
+    , y(bounding)
+    , c(orig)
+  { Assert(k == kind::LEQ || k == kind::GEQ); }
+};
+
+struct CutScratchPad {
+  bool d_failure; // if the construction was unsuccessful
+
+  /* GOMORY CUTS Datastructures */
+  ArithVar d_basic; // a variable that is basic in the approximate solver
+  DenseVector d_tabRow;           // a row in the tableau not including d_basic, equal to 0
+  DenseMap<ConstraintP> d_toBound; // each variable in toBound maps each variable in tabRow to either an upper/lower bound
+
+  /* MIR CUTS Datastructures */
+  DenseMap<SlackReplace> d_slacks;// The x'[i] selected for x[i]
+  DenseMap<VirtualBound> d_vub;   // Virtual upper bounds.
+  DenseMap<VirtualBound> d_vlb;   // Virtual lower bounds.
+  DenseMap<Rational> d_compRanges;
+
+  // a sum of rows in the tableau, with possible replacements for fixed
+  // sum aggLhs[i] x[i] = aggRhs;
+  DenseVector d_agg;
+  // Takes agg and replaces x[i] with a slack variable x'[i]
+  // Takes agg and replaces x[i] with a slack variable x'[i]
+  // sum modLhs[i] x'[i] = modRhs;
+  DenseVector d_mod;
+
+  // Takes mod, and performs c-Mir on it
+  // sum alpha[i] x'[i] <= beta
+  DenseVector d_alpha;
+
+  /* The constructed cut */
+  // sum cut[i] x[i] <= cutRhs
+  DenseVector d_cut;
+  Kind d_cutKind;
+
+  /* The constraints used throughout construction. */
+  std::set<ConstraintP> d_explanation; // use pointer equality
+  CutScratchPad(){
+    clear();
+  }
+  void clear(){
+    d_failure = false;
+    d_basic = ARITHVAR_SENTINEL;
+    d_tabRow.purge();
+    d_toBound.purge();
+
+    d_slacks.purge();
+    d_vub.purge();
+    d_vlb.purge();
+    d_compRanges.purge();
+
+    d_agg.purge();
+    d_mod.purge();
+    d_alpha.purge();
+
+    d_cut.purge();
+    d_cutKind = kind::UNDEFINED_KIND;
+    d_explanation.clear();
+  }
+};
+ApproximateStatistics::ApproximateStatistics()
+  // : d_relaxCalls("z::approx::relaxCalls",0)
+  // ,  d_relaxUnknowns("z::approx::relaxUnknowns",0)
+  // ,  d_relaxFeasible("z::approx::relaxFeasible",0)
+  // ,  d_relaxInfeasible("z::approx::relaxInfeasible",0)
+  // ,  d_relaxPivotsExhausted("z::approx::relaxPivotsExhausted",0)
+  // ,  d_mipCalls("z::approx::mipCalls",0)
+  // ,  d_mipUnknowns("z::approx::mipUnknowns",0)
+  // ,  d_mipBingo("z::approx::mipBingo",0)
+  // ,  d_mipClosed("z::approx::mipClosed",0)
+  // ,  d_mipBranchesExhausted("z::approx::mipBranchesExhausted",0)
+  // ,  d_mipPivotsExhausted("z::approx::mipPivotsExhausted",0)
+  // ,  d_mipExecExhausted("z::approx::mipExecExhausted",0)
+  // ,  d_gmiGen("z::approx::gmiGen",0)
+  // ,  d_gmiReplay("z::approx::gmiReplay",0)
+  // ,  d_mipGen("z::approx::mipGen",0)
+  // ,  d_mipReplay("z::approx::mipReplay",0)
+  :  d_branchMaxDepth("z::approx::branchMaxDepth",0)
+  ,  d_branchesMaxOnAVar("z::approx::branchesMaxOnAVar",0)
+  //,  d_branchTotal("z::approx::branchTotal",0)
+  //,  d_branchCuts("z::approx::branchCuts",0)
+
+  ,  d_gaussianElimConstructTime("z::approx::gaussianElimConstruct::time")
+  ,  d_gaussianElimConstruct("z::approx::gaussianElimConstruct::calls",0)
+  ,  d_averageGuesses("z::approx::averageGuesses")
+{
+  // smtStatisticsRegistry()->registerStat(&d_relaxCalls);
+  // smtStatisticsRegistry()->registerStat(&d_relaxUnknowns);
+  // smtStatisticsRegistry()->registerStat(&d_relaxFeasible);
+  // smtStatisticsRegistry()->registerStat(&d_relaxInfeasible);
+  // smtStatisticsRegistry()->registerStat(&d_relaxPivotsExhausted);
+
+  // smtStatisticsRegistry()->registerStat(&d_mipCalls);
+  // smtStatisticsRegistry()->registerStat(&d_mipUnknowns);
+  // smtStatisticsRegistry()->registerStat(&d_mipBingo);
+  // smtStatisticsRegistry()->registerStat(&d_mipClosed);
+  // smtStatisticsRegistry()->registerStat(&d_mipBranchesExhausted);
+  // smtStatisticsRegistry()->registerStat(&d_mipPivotsExhausted);
+  // smtStatisticsRegistry()->registerStat(&d_mipExecExhausted);
+
+
+  // smtStatisticsRegistry()->registerStat(&d_gmiGen);
+  // smtStatisticsRegistry()->registerStat(&d_gmiReplay);
+  // smtStatisticsRegistry()->registerStat(&d_mipGen);
+  // smtStatisticsRegistry()->registerStat(&d_mipReplay);
+
+  smtStatisticsRegistry()->registerStat(&d_branchMaxDepth);
+  //smtStatisticsRegistry()->registerStat(&d_branchTotal);
+  //smtStatisticsRegistry()->registerStat(&d_branchCuts);
+  smtStatisticsRegistry()->registerStat(&d_branchesMaxOnAVar);
+
+  smtStatisticsRegistry()->registerStat(&d_gaussianElimConstructTime);
+  smtStatisticsRegistry()->registerStat(&d_gaussianElimConstruct);
+
+  smtStatisticsRegistry()->registerStat(&d_averageGuesses);
+}
+
+ApproximateStatistics::~ApproximateStatistics(){
+  // smtStatisticsRegistry()->unregisterStat(&d_relaxCalls);
+  // smtStatisticsRegistry()->unregisterStat(&d_relaxUnknowns);
+  // smtStatisticsRegistry()->unregisterStat(&d_relaxFeasible);
+  // smtStatisticsRegistry()->unregisterStat(&d_relaxInfeasible);
+  // smtStatisticsRegistry()->unregisterStat(&d_relaxPivotsExhausted);
+
+  // smtStatisticsRegistry()->unregisterStat(&d_mipCalls);
+  // smtStatisticsRegistry()->unregisterStat(&d_mipUnknowns);
+  // smtStatisticsRegistry()->unregisterStat(&d_mipBingo);
+  // smtStatisticsRegistry()->unregisterStat(&d_mipClosed);
+  // smtStatisticsRegistry()->unregisterStat(&d_mipBranchesExhausted);
+  // smtStatisticsRegistry()->unregisterStat(&d_mipPivotsExhausted);
+  // smtStatisticsRegistry()->unregisterStat(&d_mipExecExhausted);
+
+
+  // smtStatisticsRegistry()->unregisterStat(&d_gmiGen);
+  // smtStatisticsRegistry()->unregisterStat(&d_gmiReplay);
+  // smtStatisticsRegistry()->unregisterStat(&d_mipGen);
+  // smtStatisticsRegistry()->unregisterStat(&d_mipReplay);
+
+  smtStatisticsRegistry()->unregisterStat(&d_branchMaxDepth);
+  //smtStatisticsRegistry()->unregisterStat(&d_branchTotal);
+  //smtStatisticsRegistry()->unregisterStat(&d_branchCuts);
+  smtStatisticsRegistry()->unregisterStat(&d_branchesMaxOnAVar);
+
+  smtStatisticsRegistry()->unregisterStat(&d_gaussianElimConstructTime);
+  smtStatisticsRegistry()->unregisterStat(&d_gaussianElimConstruct);
+
+  smtStatisticsRegistry()->unregisterStat(&d_averageGuesses);
+}
+
+Integer ApproximateSimplex::s_defaultMaxDenom(1<<26);
+
+ApproximateSimplex::ApproximateSimplex(const ArithVariables& v, TreeLog& l,
+                                       ApproximateStatistics& s)
+  : d_vars(v)
+  , d_log(l)
+  , d_stats(s)
+  , d_pivotLimit(std::numeric_limits<int>::max())
+  , d_branchLimit(std::numeric_limits<int>::max())
+  , d_maxDepth(std::numeric_limits<int>::max())
+{}
+
+void ApproximateSimplex::setPivotLimit(int pl){
+  Assert(pl >= 0);
+  d_pivotLimit = pl;
+}
+
+void ApproximateSimplex::setBranchingDepth(int bd){
+  Assert(bd >= 0);
+  d_maxDepth = bd;
+}
+
+void ApproximateSimplex::setBranchOnVariableLimit(int bl){
+  Assert(bl >= 0);
+  d_branchLimit = bl;
+}
+
+const double ApproximateSimplex::SMALL_FIXED_DELTA = .000000001;
+const double ApproximateSimplex::TOLERENCE = 1 + .000000001;
+
+bool ApproximateSimplex::roughlyEqual(double a, double b){
+  if (a == 0){
+    return -SMALL_FIXED_DELTA <= b && b <= SMALL_FIXED_DELTA;
+  }else if (b == 0){
+    return -SMALL_FIXED_DELTA <= a && a <= SMALL_FIXED_DELTA;
+  }else{
+    return std::abs(b/a) <= TOLERENCE && std::abs(a/b) <= TOLERENCE;
+  }
+}
+
+Rational ApproximateSimplex::cfeToRational(const vector<Integer>& exp){
+  if(exp.empty()){
+    return Rational(0);
+  }else{
+    Rational result = exp.back();
+    vector<Integer>::const_reverse_iterator exp_iter = exp.rbegin();
+    vector<Integer>::const_reverse_iterator exp_end = exp.rend();
+    ++exp_iter;
+    while(exp_iter != exp_end){
+      result = result.inverse();
+      const Integer& i = *exp_iter;
+      result += i;
+      ++exp_iter;
+    }
+    return result;
+  }
+}
+std::vector<Integer> ApproximateSimplex::rationalToCfe(const Rational& q, int depth){
+  vector<Integer> mods;
+  if(!q.isZero()){
+    Rational carry = q;
+    for(int i = 0; i <= depth; ++i){
+      Assert(!carry.isZero());
+      mods.push_back(Integer());
+      Integer& back = mods.back();
+      back = carry.floor();
+      Debug("rationalToCfe") << "  cfe["<<i<<"]: " << back << endl;
+      carry -= back;
+      if(carry.isZero()){
+        break;
+      }else if(ApproximateSimplex::roughlyEqual(carry.getDouble(), 0.0)){
+        break;
+      }else{
+        carry = carry.inverse();
+      }
+    }
+  }
+  return mods;
+}
+
+
+Rational ApproximateSimplex::estimateWithCFE(const Rational& r, const Integer& K){
+  Debug("estimateWithCFE") << "estimateWithCFE(" << r << ", " << K << ")" <<endl;
+  // references
+  // page 4: http://carlossicoli.free.fr/C/Cassels_J.W.S.-An_introduction_to_diophantine_approximation-University_Press(1965).pdf
+  // http://en.wikipedia.org/wiki/Continued_fraction
+  Assert(K >= Integer(1));
+  if( r.getDenominator() <= K ){
+    return r;
+  }
+
+  // current numerator and denominator that has not been resolved in the cfe
+  Integer num = r.getNumerator(), den = r.getDenominator();
+  Integer quot,rem;
+
+  unsigned t = 0;
+  // For a sequence of candidate solutions q_t/p_t
+  // we keep only 3 time steps: 0[prev], 1[current], 2[next]
+  // timesteps with a fake timestep 0 (p is 0 and q is 1)
+  // at timestep 1
+  Integer p[3]; // h
+  Integer q[3]; // k
+  // load the first 3 time steps manually
+  p[0] =    0; q[0] = 1; // timestep -2
+  p[1] =    1; q[1] = 0; // timestep -1
+
+  Integer::floorQR(quot, rem, num, den);
+  num = den; den = rem;
+
+  q[2] = q[0] + quot*q[1];
+  p[2] = p[0] + quot*p[1];
+  Debug("estimateWithCFE") <<  "  cfe["<<t<<"]: " << p[2] <<"/"<< q[2] << endl;
+  while( q[2] <= K ){
+    p[0] = p[1]; p[1] = p[2];
+    q[0] = q[1]; q[1] = q[2];
+
+
+    Integer::floorQR(quot, rem, num, den);
+    num = den; den = rem;
+
+    p[2] = p[0]+quot*p[1];
+    q[2] = q[0]+quot*q[1];
+    ++t;
+    Debug("estimateWithCFE") << "  cfe["<<t<<"]: " << p[2] <<"/"<< q[2] << endl;
+  }
+
+  Integer k = (K-q[0]).floorDivideQuotient(q[1]);
+  Rational cand_prev(p[0]+k*p[1], q[0]+k*q[1]);
+  Rational cand_curr(p[1], q[1]);
+  Rational dist_prev = (cand_prev - r).abs();
+  Rational dist_curr = (cand_curr - r).abs();
+  if(dist_prev <= dist_curr){
+    Debug("estimateWithCFE") << cand_prev << " is closer than " << cand_curr << endl;
+    return cand_prev;
+  }else{
+    Debug("estimateWithCFE") << cand_curr << " is closer than " << cand_prev << endl;
+    return cand_curr;
+  }
+}
+
+Rational ApproximateSimplex::estimateWithCFE(double d, const Integer& D) throw (RationalFromDoubleException){
+  return estimateWithCFE(Rational::fromDouble(d), D);
+}
+
+Rational ApproximateSimplex::estimateWithCFE(double d) throw (RationalFromDoubleException){
+  return estimateWithCFE(d, s_defaultMaxDenom);
+}
+
+class ApproxNoOp : public ApproximateSimplex {
+public:
+  ApproxNoOp(const ArithVariables& v, TreeLog& l, ApproximateStatistics& s)
+  : ApproximateSimplex(v,l,s)
+  {}
+  ~ApproxNoOp(){}
+
+  virtual LinResult solveRelaxation(){
+    return LinUnknown;
+  }
+  virtual Solution extractRelaxation() const throw (RationalFromDoubleException){
+    return Solution();
+  }
+
+  virtual ArithRatPairVec heuristicOptCoeffs() const{
+    return ArithRatPairVec();
+  }
+
+  virtual MipResult solveMIP(bool al){
+    return MipUnknown;
+  }
+  virtual Solution extractMIP() const throw (RationalFromDoubleException){
+    return Solution();
+  }
+
+  virtual void setOptCoeffs(const ArithRatPairVec& ref){}
+  virtual std::vector<const CutInfo*> getValidCuts(const std::set<const NodeLog*>& nodes){
+    return std::vector<const CutInfo*>();
+  }
+
+  virtual void tryCut(int nid, CutInfo& cut) throw (RationalFromDoubleException){}
+
+  virtual std::vector<const CutInfo*> getValidCuts(const NodeLog& node) throw(RationalFromDoubleException){
+    return std::vector<const CutInfo*>();
+  }
+
+  virtual ArithVar getBranchVar(const NodeLog& nl) const{
+    return ARITHVAR_SENTINEL;
+  }
+
+  virtual double sumInfeasibilities(bool mip) const{
+    return 0.0;
+  }
+};
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+/* Begin the declaration of GLPK specific code. */
+#ifdef CVC4_USE_GLPK
+extern "C" {
+#include <glpk.h>
+}/* extern "C" */
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+Kind glpk_type_to_kind(int glpk_cut_type){
+  switch(glpk_cut_type){
+  case GLP_LO: return kind::GEQ;
+  case GLP_UP: return kind::LEQ;
+  case GLP_FX: return kind::EQUAL;
+  case GLP_DB:
+  case GLP_FR:
+  default:     return kind::UNDEFINED_KIND;
+  }
+}
+
+class GmiInfo;
+class MirInfo;
+class BranchCutInfo;
+
+class ApproxGLPK : public ApproximateSimplex {
+private:
+  glp_prob* d_inputProb; /* a copy of the input prob */
+  glp_prob* d_realProb;  /* a copy of the real relaxation output */
+  glp_prob* d_mipProb;   /* a copy of the integer prob */
+
+  DenseMap<int> d_colIndices;
+  DenseMap<int> d_rowIndices;
+
+  NodeLog::RowIdMap d_rootRowIds;
+  //DenseMap<ArithVar> d_rowToArithVar;
+  DenseMap<ArithVar> d_colToArithVar;
+
+  int d_instanceID;
+
+  bool d_solvedRelaxation;
+  bool d_solvedMIP;
+
+  static int s_verbosity;
+
+  CutScratchPad d_pad;
+
+  std::vector<Integer> d_denomGuesses;
+
+public:
+  ApproxGLPK(const ArithVariables& v, TreeLog& l, ApproximateStatistics& s);
+  ~ApproxGLPK();
+
+  virtual LinResult solveRelaxation();
+  virtual Solution extractRelaxation() const throw (RationalFromDoubleException){
+    return extractSolution(false);
+  }
+
+  virtual ArithRatPairVec heuristicOptCoeffs() const;
+
+  virtual MipResult solveMIP(bool al);
+  virtual Solution extractMIP() const throw (RationalFromDoubleException){
+    return extractSolution(true);
+  }
+  virtual void setOptCoeffs(const ArithRatPairVec& ref);
+  //void getValidCuts(const NodeLog& con, std::vector<const CutInfo*>& out);
+  virtual std::vector<const CutInfo*> getValidCuts(const NodeLog& nodes) throw (RationalFromDoubleException);
+  //virtual std::vector<const NodeLog*> getBranches();
+
+  //Node downBranchLiteral(const NodeLog& con) const;
+  ArithVar getBranchVar(const NodeLog& con) const;
+
+  static void printGLPKStatus(int status, std::ostream& out);
+
+
+private:
+  Solution extractSolution(bool mip) const throw (RationalFromDoubleException);
+  int guessDir(ArithVar v) const;
+
+  // get this stuff out of here
+  void tryCut(int nid, CutInfo& cut) throw (RationalFromDoubleException);
+
+  ArithVar _getArithVar(int nid, int M, int ind) const;
+  ArithVar getArithVarFromRow(int nid, int ind) const {
+    if(ind >= 0){
+      const NodeLog& nl = d_log.getNode(nid);
+      return nl.lookupRowId(ind);
+    }
+    return ARITHVAR_SENTINEL;
+  }
+
+  // virtual void mapRowId(int nid, int ind, ArithVar v){
+  //   NodeLog& nl = d_log.getNode(nid);
+  //   nl.mapRowId(ind, v);
+  // }
+  // virtual void applyRowsDeleted(int nid, const RowsDeleted& rd){
+  //   NodeLog& nl = d_log.getNode(nid);
+  //   nl.applyRowsDeleted(rd);
+  // }
+
+  ArithVar getArithVarFromStructural(int ind) const{
+    if(ind >= 0){
+      unsigned u = (unsigned) ind;
+      if(d_colToArithVar.isKey(u)){
+        return d_colToArithVar[u];
+      }
+    }
+    return ARITHVAR_SENTINEL;
+  }
+
+  /**
+   * Attempts to make the row vector vec on the pad.
+   * If this is not in the row span of the original tableau this
+   * raises the failure flag.
+   */
+  bool attemptConstructTableRow(int node, int M, const PrimitiveVec& vec);
+  bool guessCoefficientsConstructTableRow(int node, int M, const PrimitiveVec& vec);
+  bool guessCoefficientsConstructTableRow(int node, int M, const PrimitiveVec& vec, const Integer& D);
+  bool gaussianElimConstructTableRow(int node, int M, const PrimitiveVec& vec);
+
+  /* This is a guess of a vector in the row span of the tableau.
+   * Attempt to cancel out all of the variables.
+   * returns true if this is constructable.
+   */
+  bool guessIsConstructable(const DenseMap<Rational>& guess) const;
+
+  /**
+   * Loads a vector of statuses into a dense map over bounds.
+   * returns true on failure.
+   */
+  bool loadToBound(int node, int M, int len, int* inds, int* statuses,
+                   DenseMap<ConstraintP>& toBound) const;
+
+  /** checks the cut on the pad for whether it is sufficiently similar to cut. */
+  bool checkCutOnPad(int nid, const CutInfo& cut) const;
+
+
+  /** turns the pad into a node and creates an explanation. */
+  //std::pair<Node, Node> makeCutNodes(int nid, const CutInfo& cut) const;
+
+  // true means failure!
+  // BRANCH CUTS
+  bool attemptBranchCut(int nid, const BranchCutInfo& br);
+
+  // GOMORY CUTS
+  bool attemptGmi(int nid, const GmiInfo& gmi);
+  /** tries to turn the information on the pad into a cut. */
+  bool constructGmiCut();
+
+  // MIR CUTS
+  bool attemptMir(int nid, const MirInfo& mir);
+  bool applyCMIRRule(int nid, const MirInfo& mir);
+  bool makeRangeForComplemented(int nid, const MirInfo& mir);
+  bool loadSlacksIntoPad(int nid, const MirInfo& mir);
+  bool loadVirtualBoundsIntoPad(int nid, const MirInfo& mir);
+  bool loadRowSumIntoAgg(int nid, int M, const PrimitiveVec& mir);
+  bool buildModifiedRow(int nid, const MirInfo& mir);
+  bool constructMixedKnapsack();
+  bool replaceSlacksOnCuts();
+  bool loadVB(int nid, int M, int j, int ri, bool wantUb, VirtualBound& tmp);
+
+
+  double sumInfeasibilities(bool mip) const{
+    return sumInfeasibilities(mip? d_mipProb : d_realProb);
+  }
+  double sumInfeasibilities(glp_prob* prob, bool mip) const;
+};
+
+int ApproxGLPK::s_verbosity = 0;
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+#endif /*#ifdef CVC4_USE_GLPK */
+/* End the declaration of GLPK specific code. */
+
+/* Begin GPLK/NOGLPK Glue code. */
+namespace CVC4 {
+namespace theory {
+namespace arith {
+ApproximateSimplex* ApproximateSimplex::mkApproximateSimplexSolver(const ArithVariables& vars, TreeLog& l, ApproximateStatistics& s){
+#ifdef CVC4_USE_GLPK
+  return new ApproxGLPK(vars, l, s);
+#else
+  return new ApproxNoOp(vars, l, s);
+#endif
+}
+bool ApproximateSimplex::enabled() {
+#ifdef CVC4_USE_GLPK
+  return true;
+#else
+  return false;
+#endif
+}
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+/* End GPLK/NOGLPK Glue code. */
+
+
+/* Begin GPLK implementation. */
+#ifdef CVC4_USE_GLPK
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+static CutInfoKlass fromGlpkClass(int klass){
+  switch(klass){
+  case GLP_RF_GMI: return GmiCutKlass;
+  case GLP_RF_MIR: return MirCutKlass;
+  case GLP_RF_COV:
+  case GLP_RF_CLQ:
+  default:         return UnknownKlass;
+  }
+}
+
+ApproxGLPK::ApproxGLPK(const ArithVariables& v, TreeLog& l, ApproximateStatistics& s)
+  : ApproximateSimplex(v, l, s)
+  , d_inputProb(NULL)
+  , d_realProb(NULL)
+  , d_mipProb(NULL)
+  , d_solvedRelaxation(false)
+  , d_solvedMIP(false)
+{
+  static int instance = 0;
+  ++instance;
+  d_instanceID = instance;
+
+  d_denomGuesses.push_back(Integer(1<<22));
+  d_denomGuesses.push_back(ApproximateSimplex::s_defaultMaxDenom);
+  d_denomGuesses.push_back(Integer(1ul<<29));
+  d_denomGuesses.push_back(Integer(1ul<<31));
+
+  d_inputProb = glp_create_prob();
+  d_realProb = glp_create_prob();
+  d_mipProb = glp_create_prob();
+  glp_set_obj_dir(d_inputProb, GLP_MAX);
+  glp_set_prob_name(d_inputProb, "ApproximateSimplex::approximateFindModel");
+
+  int numRows = 0;
+  int numCols = 0;
+
+  // Assign each variable to a row and column variable as it appears in the input
+  for(ArithVariables::var_iterator vi = d_vars.var_begin(), vi_end = d_vars.var_end(); vi != vi_end; ++vi){
+    ArithVar v = *vi;
+
+    if(d_vars.isAuxiliary(v)){
+      ++numRows;
+      d_rowIndices.set(v, numRows);
+      //mapRowId(d_log.getRootId(), numRows, v);
+      d_rootRowIds.insert(make_pair(numRows, v));
+      //d_rowToArithVar.set(numRows, v);
+      Debug("approx") << "Row vars: " << v << "<->" << numRows << endl;
+    }else{
+      ++numCols;
+      d_colIndices.set(v, numCols);
+      d_colToArithVar.set(numCols, v);
+      Debug("approx") << "Col vars: " << v << "<->" << numCols << endl;
+    }
+  }
+  Assert(numRows > 0);
+  Assert(numCols > 0);
+
+
+
+  glp_add_rows(d_inputProb, numRows);
+  glp_add_cols(d_inputProb, numCols);
+
+  // Assign the upper/lower bounds and types to each variable
+  for(ArithVariables::var_iterator vi = d_vars.var_begin(), vi_end = d_vars.var_end(); vi != vi_end; ++vi){
+    ArithVar v = *vi;
+
+    if(s_verbosity >= 2){
+      //Message() << v  << " ";
+      //d_vars.printModel(v, Message());
+    }
+
+    int type;
+    double lb = 0.0;
+    double ub = 0.0;
+    if(d_vars.hasUpperBound(v) && d_vars.hasLowerBound(v)){
+      if(d_vars.boundsAreEqual(v)){
+        type = GLP_FX;
+      }else{
+        type = GLP_DB;
+      }
+      lb = d_vars.getLowerBound(v).approx(SMALL_FIXED_DELTA);
+      ub = d_vars.getUpperBound(v).approx(SMALL_FIXED_DELTA);
+    }else if(d_vars.hasUpperBound(v) && !d_vars.hasLowerBound(v)){
+      type = GLP_UP;
+      ub = d_vars.getUpperBound(v).approx(SMALL_FIXED_DELTA);
+    }else if(!d_vars.hasUpperBound(v) && d_vars.hasLowerBound(v)){
+      type = GLP_LO;
+      lb = d_vars.getLowerBound(v).approx(SMALL_FIXED_DELTA);
+    }else{
+      type = GLP_FR;
+    }
+
+    if(d_vars.isAuxiliary(v)){
+      int rowIndex = d_rowIndices[v];
+      glp_set_row_bnds(d_inputProb, rowIndex, type, lb, ub);
+    }else{
+      int colIndex = d_colIndices[v];
+      // is input is correct here
+      int kind = d_vars.isInteger(v) ? GLP_IV : GLP_CV;
+      glp_set_col_kind(d_inputProb, colIndex, kind);
+      glp_set_col_bnds(d_inputProb, colIndex, type, lb, ub);
+    }
+  }
+
+  // Count the number of entries
+  int numEntries = 0;
+  for(DenseMap<int>::const_iterator i = d_rowIndices.begin(), i_end = d_rowIndices.end(); i != i_end; ++i){
+    ArithVar v = *i;
+    Polynomial p = Polynomial::parsePolynomial(d_vars.asNode(v));
+    for(Polynomial::iterator i = p.begin(), end = p.end(); i != end; ++i){
+      ++numEntries;
+    }
+  }
+
+  int* ia = new int[numEntries+1];
+  int* ja = new int[numEntries+1];
+  double* ar = new double[numEntries+1];
+
+  int entryCounter = 0;
+  for(DenseMap<int>::const_iterator i = d_rowIndices.begin(), i_end = d_rowIndices.end(); i != i_end; ++i){
+    ArithVar v = *i;
+    int rowIndex = d_rowIndices[v];
+
+    Polynomial p = Polynomial::parsePolynomial(d_vars.asNode(v));
+
+    for(Polynomial::iterator i = p.begin(), end = p.end(); i != end; ++i){
+
+      const Monomial& mono = *i;
+      const Constant& constant = mono.getConstant();
+      const VarList& variable = mono.getVarList();
+
+      Node n = variable.getNode();
+
+      Assert(d_vars.hasArithVar(n));
+      ArithVar av = d_vars.asArithVar(n);
+      int colIndex = d_colIndices[av];
+      double coeff = constant.getValue().getDouble();
+
+      ++entryCounter;
+      ia[entryCounter] = rowIndex;
+      ja[entryCounter] = colIndex;
+      ar[entryCounter] = coeff;
+    }
+  }
+  glp_load_matrix(d_inputProb, numEntries, ia, ja, ar);
+
+  delete[] ia;
+  delete[] ja;
+  delete[] ar;
+}
+int ApproxGLPK::guessDir(ArithVar v) const{
+  if(d_vars.hasUpperBound(v) && !d_vars.hasLowerBound(v)){
+    return -1;
+  }else if(!d_vars.hasUpperBound(v) && d_vars.hasLowerBound(v)){
+    return 1;
+  }else if(!d_vars.hasUpperBound(v) && !d_vars.hasLowerBound(v)){
+    return 0;
+  }else{
+    int ubSgn = d_vars.getUpperBound(v).sgn();
+    int lbSgn = d_vars.getLowerBound(v).sgn();
+
+    if(ubSgn != 0 && lbSgn == 0){
+      return -1;
+    }else if(ubSgn == 0 && lbSgn != 0){
+      return 1;
+    }
+
+    return 1;
+  }
+}
+
+ArithRatPairVec ApproxGLPK::heuristicOptCoeffs() const{
+  ArithRatPairVec ret;
+
+  // Strategies are guess:
+  // 1 simple shared "ceiling" variable: danoint, pk1
+  //  x1 >= c, x1 >= tmp1, x1 >= tmp2, ...
+  // 1 large row: fixnet, vpm2, pp08a
+  //  (+ .......... ) <= c
+  // Not yet supported:
+  // 1 complex shared "ceiling" variable: opt1217
+  //  x1 >= c, x1 >= (+ ..... ), x1 >= (+ ..... )
+  //  and all of the ... are the same sign
+
+
+  // Candidates:
+  // 1) Upper and lower bounds are not equal.
+  // 2) The variable is not integer
+  // 3a) For columns look for a ceiling variable
+  // 3B) For rows look for a large row with
+
+  DenseMap<BoundCounts> d_colCandidates;
+  DenseMap<uint32_t> d_rowCandidates;
+
+  double sumRowLength = 0.0;
+  uint32_t maxRowLength = 0;
+  for(ArithVariables::var_iterator vi = d_vars.var_begin(), vi_end = d_vars.var_end(); vi != vi_end; ++vi){
+    ArithVar v = *vi;
+
+    if(s_verbosity >= 2){
+      Message() << v  << " ";
+      d_vars.printModel(v, Message());
+    }
+
+    int type;
+    if(d_vars.hasUpperBound(v) && d_vars.hasLowerBound(v)){
+      if(d_vars.boundsAreEqual(v)){
+        type = GLP_FX;
+      }else{
+        type = GLP_DB;
+      }
+    }else if(d_vars.hasUpperBound(v) && !d_vars.hasLowerBound(v)){
+      type = GLP_UP;
+    }else if(!d_vars.hasUpperBound(v) && d_vars.hasLowerBound(v)){
+      type = GLP_LO;
+    }else{
+      type = GLP_FR;
+    }
+
+    if(type != GLP_FX && type != GLP_FR){
+
+      if(d_vars.isAuxiliary(v)){
+        Polynomial p = Polynomial::parsePolynomial(d_vars.asNode(v));
+        uint32_t len = p.size();
+        d_rowCandidates.set(v, len);
+        sumRowLength += len;
+        maxRowLength = std::max(maxRowLength, len);
+      }else if(!d_vars.isInteger(v)){
+        d_colCandidates.set(v, BoundCounts());
+      }
+    }
+  }
+
+  uint32_t maxCount = 0;
+  for(DenseMap<int>::const_iterator i = d_rowIndices.begin(), i_end = d_rowIndices.end(); i != i_end; ++i){
+    ArithVar v = *i;
+
+    bool lbCap = d_vars.hasLowerBound(v) && !d_vars.hasUpperBound(v);
+    bool ubCap = !d_vars.hasLowerBound(v) && d_vars.hasUpperBound(v);
+
+    if(lbCap || ubCap){
+      ConstraintP b = lbCap ? d_vars.getLowerBoundConstraint(v)
+        : d_vars.getUpperBoundConstraint(v);
+
+      if(!(b->getValue()).noninfinitesimalIsZero()){ continue; }
+
+      Polynomial poly = Polynomial::parsePolynomial(d_vars.asNode(v));
+      if(poly.size() != 2) { continue; }
+
+      Polynomial::iterator j = poly.begin();
+      Monomial first = *j;
+      ++j;
+      Monomial second = *j;
+
+      bool firstIsPos = first.constantIsPositive();
+      bool secondIsPos = second.constantIsPositive();
+
+      if(firstIsPos == secondIsPos){ continue; }
+
+      Monomial pos = firstIsPos == lbCap ? first : second;
+      Monomial neg = firstIsPos != lbCap ? first : second;
+      // pos >= neg
+      VarList p = pos.getVarList();
+      VarList n = neg.getVarList();
+      if(d_vars.hasArithVar(p.getNode())){
+        ArithVar ap = d_vars.asArithVar(p.getNode());
+        if( d_colCandidates.isKey(ap)){
+          BoundCounts bc = d_colCandidates.get(ap);
+          bc = BoundCounts(bc.lowerBoundCount(), bc.upperBoundCount()+1);
+          maxCount = std::max(maxCount, bc.upperBoundCount());
+          d_colCandidates.set(ap, bc);
+        }
+      }
+      if(d_vars.hasArithVar(n.getNode())){
+        ArithVar an = d_vars.asArithVar(n.getNode());
+        if( d_colCandidates.isKey(an)){
+          BoundCounts bc = d_colCandidates.get(an);
+          bc = BoundCounts(bc.lowerBoundCount()+1, bc.upperBoundCount());
+          maxCount = std::max(maxCount, bc.lowerBoundCount());
+          d_colCandidates.set(an, bc);
+        }
+      }
+    }
+  }
+
+  // Attempt row
+  double avgRowLength = d_rowCandidates.size() >= 1 ?
+    ( sumRowLength / d_rowCandidates.size() ) : 0.0;
+
+  // There is a large row among the candidates
+  bool guessARowCandidate = maxRowLength >= (10.0 * avgRowLength);
+
+  double rowLengthReq = (maxRowLength * .9);
+
+  if(guessARowCandidate){
+    for(DenseMap<uint32_t>::const_iterator i = d_rowCandidates.begin(), iend =d_rowCandidates.end(); i != iend; ++i ){
+      ArithVar r = *i;
+      uint32_t len = d_rowCandidates[r];
+
+      int dir = guessDir(r);
+      if(len >= rowLengthReq){
+        if(s_verbosity >= 1){
+          Message() << "high row " << r << " " << len << " " << avgRowLength << " " << dir<< endl;
+          d_vars.printModel(r, Message());
+        }
+        ret.push_back(ArithRatPair(r, Rational(dir)));
+      }
+    }
+  }
+
+  // Attempt columns
+  bool guessAColCandidate = maxCount >= 4;
+  if(guessAColCandidate){
+    for(DenseMap<BoundCounts>::const_iterator i = d_colCandidates.begin(), iend = d_colCandidates.end(); i != iend; ++i ){
+      ArithVar c = *i;
+      BoundCounts bc = d_colCandidates[c];
+
+      int dir = guessDir(c);
+      double ubScore = double(bc.upperBoundCount()) / maxCount;
+      double lbScore = double(bc.lowerBoundCount()) / maxCount;
+      if(ubScore  >= .9 || lbScore >= .9){
+        if(s_verbosity >= 1){
+          Message() << "high col " << c << " " << bc << " " << ubScore << " " << lbScore << " " << dir << endl;
+          d_vars.printModel(c, Message());
+        }
+        ret.push_back(ArithRatPair(c, Rational(c)));
+      }
+    }
+  }
+
+
+  return ret;
+}
+
+void ApproxGLPK::setOptCoeffs(const ArithRatPairVec& ref){
+  DenseMap<double> nbCoeffs;
+
+  for(ArithRatPairVec::const_iterator i = ref.begin(), iend = ref.end(); i != iend; ++i){
+    ArithVar v = (*i).first;
+    const Rational& q = (*i).second;
+
+    if(d_vars.isAuxiliary(v)){
+      // replace the variable by its definition and multiply by q
+      Polynomial p = Polynomial::parsePolynomial(d_vars.asNode(v));
+      Polynomial pq = p * q;
+
+      for(Polynomial::iterator j = pq.begin(), jend = pq.end(); j != jend; ++j){
+        const Monomial& mono = *j;
+        const Constant& constant = mono.getConstant();
+        const VarList& variable = mono.getVarList();
+
+        Node n = variable.getNode();
+
+        Assert(d_vars.hasArithVar(n));
+        ArithVar av = d_vars.asArithVar(n);
+        int colIndex = d_colIndices[av];
+        double coeff = constant.getValue().getDouble();
+        if(!nbCoeffs.isKey(colIndex)){
+          nbCoeffs.set(colIndex, 0.0);
+        }
+        nbCoeffs.set(colIndex, nbCoeffs[colIndex]+coeff);
+      }
+    }else{
+      int colIndex = d_colIndices[v];
+      double coeff = q.getDouble();
+      if(!nbCoeffs.isKey(colIndex)){
+        nbCoeffs.set(colIndex, 0.0);
+      }
+      nbCoeffs.set(colIndex, nbCoeffs[colIndex]+coeff);
+    }
+  }
+  for(DenseMap<double>::const_iterator ci =nbCoeffs.begin(), ciend = nbCoeffs.end(); ci != ciend; ++ci){
+    Index colIndex = *ci;
+    double coeff = nbCoeffs[colIndex];
+    glp_set_obj_coef(d_inputProb, colIndex, coeff);
+  }
+}
+
+
+/*
+ * rough strategy:
+ *  real relaxation
+ *   try approximate real optimization of error function
+ *   pivot in its basis
+ *   update to its assignment
+ *   check with FCSimplex
+ *  check integer solution
+ *   try approximate mixed integer problem
+ *   stop at the first feasible point
+ *   pivot in its basis
+ *   update to its assignment
+ *   check with FCSimplex
+ */
+
+void ApproxGLPK::printGLPKStatus(int status, std::ostream& out){
+  switch(status){
+  case GLP_OPT:
+    out << "GLP_OPT" << endl;
+    break;
+  case GLP_FEAS:
+    out << "GLP_FEAS" << endl;
+    break;
+  case GLP_INFEAS:
+    out << "GLP_INFEAS" << endl;
+    break;
+  case GLP_NOFEAS:
+    out << "GLP_NOFEAS" << endl;
+    break;
+  case GLP_UNBND:
+    out << "GLP_UNBND" << endl;
+    break;
+  case GLP_UNDEF:
+    out << "GLP_UNDEF" << endl;
+    break;
+  default:
+    out << "Status unknown" << endl;
+    break;
+  }
+}
+
+ApproxGLPK::~ApproxGLPK(){
+  glp_delete_prob(d_inputProb);
+  glp_delete_prob(d_realProb);
+  glp_delete_prob(d_mipProb);
+
+}
+
+
+ApproximateSimplex::Solution ApproxGLPK::extractSolution(bool mip) const throw (RationalFromDoubleException){
+  Assert(d_solvedRelaxation);
+  Assert(!mip  || d_solvedMIP);
+
+  ApproximateSimplex::Solution sol;
+  DenseSet& newBasis = sol.newBasis;
+  DenseMap<DeltaRational>& newValues = sol.newValues;
+
+  glp_prob* prob = mip ? d_mipProb : d_realProb;
+
+  for(ArithVariables::var_iterator i = d_vars.var_begin(), i_end = d_vars.var_end(); i != i_end; ++i){
+    ArithVar vi = *i;
+    bool isAux = d_vars.isAuxiliary(vi);
+    int glpk_index = isAux ? d_rowIndices[vi] : d_colIndices[vi];
+
+    int status = isAux ? glp_get_row_stat(prob, glpk_index)
+      : glp_get_col_stat(prob, glpk_index);
+    if(s_verbosity >= 2){
+      Message() << "assignment " << vi << endl;
+    }
+
+    bool useDefaultAssignment = false;
+
+    switch(status){
+    case GLP_BS:
+      //Message() << "basic" << endl;
+      newBasis.add(vi);
+      useDefaultAssignment = true;
+      break;
+    case GLP_NL:
+    case GLP_NS:
+      if(!mip){
+        if(s_verbosity >= 2){ Message() << "non-basic lb" << endl; }
+        newValues.set(vi, d_vars.getLowerBound(vi));
+      }else{// intentionally fall through otherwise
+        useDefaultAssignment = true;
+      }
+      break;
+    case GLP_NU:
+      if(!mip){
+        if(s_verbosity >= 2){ Message() << "non-basic ub" << endl; }
+        newValues.set(vi, d_vars.getUpperBound(vi));
+      }else {// intentionally fall through otherwise
+        useDefaultAssignment = true;
+      }
+      break;
+    default:
+      {
+        useDefaultAssignment = true;
+      }
+      break;
+    }
+
+    if(useDefaultAssignment){
+      if(s_verbosity >= 2){ Message() << "non-basic other" << endl; }
+
+      double newAssign;
+      if(mip){
+        newAssign = (isAux ? glp_mip_row_val(prob, glpk_index)
+                     :  glp_mip_col_val(prob, glpk_index));
+      }else{
+        newAssign = (isAux ? glp_get_row_prim(prob, glpk_index)
+                     :  glp_get_col_prim(prob, glpk_index));
+      }
+      const DeltaRational& oldAssign = d_vars.getAssignment(vi);
+
+
+      if(d_vars.hasLowerBound(vi) &&
+         roughlyEqual(newAssign, d_vars.getLowerBound(vi).approx(SMALL_FIXED_DELTA))){
+        //Message() << "  to lb" << endl;
+
+        newValues.set(vi, d_vars.getLowerBound(vi));
+      }else if(d_vars.hasUpperBound(vi) &&
+               roughlyEqual(newAssign, d_vars.getUpperBound(vi).approx(SMALL_FIXED_DELTA))){
+        newValues.set(vi, d_vars.getUpperBound(vi));
+        // Message() << "  to ub" << endl;
+      }else{
+
+        double rounded = round(newAssign);
+        if(roughlyEqual(newAssign, rounded)){
+          // Message() << "roughly equal " << rounded << " " << newAssign << " " << oldAssign << endl;
+          newAssign = rounded;
+        }else{
+          // Message() << "not roughly equal " << rounded << " " << newAssign << " " << oldAssign << endl;
+        }
+
+        DeltaRational proposal = estimateWithCFE(newAssign);
+
+
+        if(roughlyEqual(newAssign, oldAssign.approx(SMALL_FIXED_DELTA))){
+          // Message() << "  to prev value" << newAssign << " " << oldAssign << endl;
+          proposal = d_vars.getAssignment(vi);
+        }
+
+
+        if(d_vars.strictlyLessThanLowerBound(vi, proposal)){
+          //Message() << "  round to lb " << d_vars.getLowerBound(vi) << endl;
+          proposal = d_vars.getLowerBound(vi);
+        }else if(d_vars.strictlyGreaterThanUpperBound(vi, proposal)){
+          //Message() << "  round to ub " << d_vars.getUpperBound(vi) << endl;
+          proposal = d_vars.getUpperBound(vi);
+        }else{
+          //Message() << "  use proposal" << proposal << " " << oldAssign  << endl;
+        }
+        newValues.set(vi, proposal);
+      }
+    }
+  }
+  return sol;
+}
+
+double ApproxGLPK::sumInfeasibilities(glp_prob* prob, bool mip) const{
+  /* compute the sum of dual infeasibilities */
+  double infeas = 0.0;
+
+  for(ArithVariables::var_iterator i = d_vars.var_begin(), i_end = d_vars.var_end(); i != i_end; ++i){
+    ArithVar vi = *i;
+    bool isAux = d_vars.isAuxiliary(vi);
+    int glpk_index = isAux ? d_rowIndices[vi] : d_colIndices[vi];
+
+    double newAssign;
+    if(mip){
+      newAssign = (isAux ? glp_mip_row_val(prob, glpk_index)
+                   :  glp_mip_col_val(prob, glpk_index));
+    }else{
+      newAssign = (isAux ? glp_get_row_prim(prob, glpk_index)
+                   :  glp_get_col_prim(prob, glpk_index));
+    }
+
+
+    double ub = isAux ?
+      glp_get_row_ub(prob, glpk_index) : glp_get_col_ub(prob, glpk_index);
+
+    double lb = isAux ?
+      glp_get_row_lb(prob, glpk_index) : glp_get_col_lb(prob, glpk_index);
+
+    if(ub != +DBL_MAX){
+      if(newAssign > ub){
+        double ubinf = newAssign - ub;
+        infeas += ubinf;
+        Debug("approx::soi") << "ub inf" << vi << " " << ubinf << " " << infeas << endl;
+      }
+    }
+    if(lb != -DBL_MAX){
+      if(newAssign < lb){
+        double lbinf = lb - newAssign;
+        infeas  += lbinf;
+
+        Debug("approx::soi") << "lb inf" << vi << " " << lbinf << " " << infeas << endl;
+      }
+    }
+  }
+  return infeas;
+}
+
+LinResult ApproxGLPK::solveRelaxation(){
+  Assert(!d_solvedRelaxation);
+
+  glp_smcp parm;
+  glp_init_smcp(&parm);
+  parm.presolve = GLP_OFF;
+  parm.meth = GLP_PRIMAL;
+  parm.pricing = GLP_PT_PSE;
+  parm.it_lim = d_pivotLimit;
+  parm.msg_lev = GLP_MSG_OFF;
+  if(s_verbosity >= 1){
+    parm.msg_lev = GLP_MSG_ALL;
+  }
+
+  glp_erase_prob(d_realProb);
+  glp_copy_prob(d_realProb, d_inputProb, GLP_OFF);
+
+  int res = glp_simplex(d_realProb, &parm);
+  switch(res){
+  case 0:
+    {
+      int status = glp_get_status(d_realProb);
+      int iterationcount = glp_get_it_cnt(d_realProb);
+      switch(status){
+      case GLP_OPT:
+      case GLP_FEAS:
+      case GLP_UNBND:
+        d_solvedRelaxation = true;
+        return LinFeasible;
+      case GLP_INFEAS:
+      case GLP_NOFEAS:
+        d_solvedRelaxation = true;
+        return LinInfeasible;
+      default:
+        {
+          if(iterationcount >= d_pivotLimit){
+            return LinExhausted;
+          }
+          return LinUnknown;
+        }
+      }
+    }
+  default:
+    return LinUnknown;
+  }
+}
+
+
+struct MirInfo : public CutInfo {
+
+  /** a sum of input rows. */
+  PrimitiveVec row_sum;
+
+  /* the delta used */
+  double delta;
+
+  /* all of these are length vars == N+M*/
+  int nvars;
+  char* cset;
+  char* subst;
+  int*  vlbRows;
+  int*  vubRows;
+  MirInfo(int execOrd, int ord)
+    : CutInfo(MirCutKlass, execOrd, ord)
+    , nvars(0)
+    , cset(NULL)
+    , subst(NULL)
+    , vlbRows(NULL)
+    , vubRows(NULL)
+  {}
+
+  ~MirInfo(){
+    clearSets();
+  }
+  void clearSets(){
+    if(cset != NULL){
+      delete[] cset;
+      delete[] subst;
+      delete[] vlbRows;
+      delete[] vubRows;
+      cset = NULL;
+      nvars = 0;
+    }
+  }
+  void initSet(){
+    Assert(d_N >= 0);
+    Assert(d_mAtCreation >= 0);
+    clearSets();
+
+    int vars = 1 + d_N + d_mAtCreation;
+
+    cset = new char[1+vars];
+    subst = new char[1+vars];
+    vlbRows = new int[1+vars];
+    vubRows = new int[1+vars];
+  }
+};
+
+struct GmiInfo : public CutInfo {
+  int basic;
+  PrimitiveVec tab_row;
+  int* tab_statuses;
+  /* has the length tab_row.length */
+
+  GmiInfo(int execOrd, int ord)
+    : CutInfo(GmiCutKlass, execOrd, ord)
+    , basic(-1)
+    , tab_row()
+    , tab_statuses(NULL)
+  {
+    Assert(!initialized_tab());
+  }
+
+  ~GmiInfo(){
+    if(initialized_tab()){
+      clear_tab();
+    }
+  }
+
+  bool initialized_tab() const {
+    return tab_statuses != NULL;
+  }
+
+  void init_tab(int N){
+    if(initialized_tab()){
+      clear_tab();
+    }
+    tab_row.setup(N);
+    tab_statuses = new int[1+N];
+  }
+
+  void clear_tab() {
+    delete[] tab_statuses;
+    tab_statuses = NULL;
+    tab_row.clear();
+    basic = -1;
+  }
+};
+
+
+
+static void loadCut(glp_tree *tree, CutInfo* cut){
+  int ord, cut_len, cut_klass;
+  int N, M;
+  int* cut_inds;
+  double* cut_coeffs;
+  int glpk_cut_type;
+  double cut_rhs;
+  glp_prob* lp;
+
+  lp = glp_ios_get_prob(tree);
+  ord = cut->poolOrdinal();
+
+  N = glp_get_num_cols(lp);
+  M = glp_get_num_rows(lp);
+
+  cut->setDimensions(N, M);
+
+
+
+  // Get the cut
+  cut_len = glp_ios_get_cut(tree, ord, NULL, NULL, &cut_klass, NULL, NULL);
+  Assert(fromGlpkClass(cut_klass) == cut->getKlass());
+
+  PrimitiveVec& cut_vec = cut->getCutVector();
+  cut_vec.setup(cut_len);
+  cut_inds = cut_vec.inds;
+  cut_coeffs = cut_vec.coeffs;
+
+  cut_vec.len = glp_ios_get_cut(tree, ord, cut_inds, cut_coeffs, &cut_klass, &glpk_cut_type, &cut_rhs);
+  Assert(fromGlpkClass(cut_klass) == cut->getKlass());
+  Assert(cut_vec.len == cut_len);
+
+  cut->setRhs(cut_rhs);
+
+  cut->setKind( glpk_type_to_kind(glpk_cut_type) );
+}
+
+
+static MirInfo* mirCut(glp_tree *tree, int exec_ord, int cut_ord){
+  Debug("approx::mirCut") << "mirCut()" << exec_ord << endl;
+
+  MirInfo* mir;
+  mir = new MirInfo(exec_ord, cut_ord);
+  loadCut(tree, mir);
+  mir->initSet();
+
+
+  int nrows = glp_ios_cut_get_aux_nrows(tree, cut_ord);
+
+  PrimitiveVec& row_sum = mir->row_sum;
+  row_sum.setup(nrows);
+  glp_ios_cut_get_aux_rows(tree, cut_ord, row_sum.inds, row_sum.coeffs);
+
+  glp_ios_cut_get_mir_cset(tree, cut_ord, mir->cset);
+  mir->delta = glp_ios_cut_get_mir_delta(tree, cut_ord);
+  glp_ios_cut_get_mir_subst(tree, cut_ord, mir->subst);
+  glp_ios_cut_get_mir_virtual_rows(tree, cut_ord, mir->vlbRows, mir->vubRows);
+
+  if(Debug.isOn("approx::mirCut")){
+    Debug("approx::mirCut") << "mir_id: " << exec_ord << endl;
+    row_sum.print(Debug("approx::mirCut"));
+  }
+
+  return mir;
+}
+
+static GmiInfo* gmiCut(glp_tree *tree, int exec_ord, int cut_ord){
+  Debug("approx::gmiCut") << "gmiCut()" << exec_ord << endl;
+
+  int gmi_var;
+  int write_pos;
+  int read_pos;
+  int stat;
+  int ind;
+  int i;
+
+  GmiInfo* gmi;
+  glp_prob* lp;
+
+  gmi = new GmiInfo(exec_ord, cut_ord);
+  loadCut(tree, gmi);
+
+  lp = glp_ios_get_prob(tree);
+
+  int N = gmi->getN();
+  int M = gmi->getMAtCreation();
+
+  // Get the tableau row
+  int nrows CVC4_UNUSED = glp_ios_cut_get_aux_nrows(tree, gmi->poolOrdinal());
+  Assert(nrows == 1);
+  int rows[1+1];
+  glp_ios_cut_get_aux_rows(tree, gmi->poolOrdinal(), rows, NULL);
+  gmi_var = rows[1];
+
+  gmi->init_tab(N);
+  gmi->basic = M+gmi_var;
+
+  Debug("approx::gmiCut")
+    << gmi <<" " << gmi->basic << " "
+    << cut_ord<<" "  << M <<" " << gmi_var << endl;
+
+  PrimitiveVec& tab_row = gmi->tab_row;
+  Debug("approx::gmiCut") << "Is N sufficient here?" << endl;
+  tab_row.len = glp_eval_tab_row(lp, gmi->basic, tab_row.inds, tab_row.coeffs);
+
+  Debug("approx::gmiCut") << "gmi_var " << gmi_var << endl;
+
+  Debug("approx::gmiCut") << "tab_pos " << tab_row.len << endl;
+  write_pos = 1;
+  for(read_pos = 1; read_pos <= tab_row.len; ++read_pos){
+    if (fabs(tab_row.coeffs[read_pos]) < 1e-10){
+    }else{
+      tab_row.coeffs[write_pos] = tab_row.coeffs[read_pos];
+      tab_row.inds[write_pos] = tab_row.inds[read_pos];
+      ++write_pos;
+    }
+  }
+  tab_row.len = write_pos-1;
+  Debug("approx::gmiCut") << "write_pos " << write_pos << endl;
+  Assert(tab_row.len > 0);
+
+  for(i = 1; i <= tab_row.len; ++i){
+    ind = tab_row.inds[i];
+    Debug("approx::gmiCut") << "ind " << i << " " << ind << endl;
+    stat = (ind <= M) ?
+      glp_get_row_stat(lp, ind) : glp_get_col_stat(lp, ind - M);
+
+    Debug("approx::gmiCut") << "ind " << i << " " << ind << " stat " << stat << endl;
+    switch (stat){
+    case GLP_NL:
+    case GLP_NU:
+    case GLP_NS:
+      gmi->tab_statuses[i] = stat;
+      break;
+    case GLP_NF:
+    default:
+      Unreachable();
+    }
+  }
+
+  if(Debug.isOn("approx::gmiCut")){
+    gmi->print(Debug("approx::gmiCut"));
+  }
+  return gmi;
+}
+
+static BranchCutInfo* branchCut(glp_tree *tree, int exec_ord, int br_var, double br_val, bool down_bad){
+  //(tree, br_var, br_val, dn < 0);
+  double rhs;
+  Kind k;
+  if(down_bad){
+    // down branch is infeasible
+    // x <= floor(v) is infeasible
+    // - so x >= ceiling(v) is implied
+    k = kind::GEQ;
+    rhs = std::ceil(br_val);
+  }else{
+    // up branch is infeasible
+    // x >= ceiling(v) is infeasible
+    // - so x <= floor(v) is implied
+    k = kind::LEQ;
+    rhs = std::floor(br_val);
+  }
+  BranchCutInfo* br_cut = new BranchCutInfo(exec_ord, br_var, k, rhs);
+  return br_cut;
+}
+
+static void glpkCallback(glp_tree *tree, void *info){
+  AuxInfo* aux = (AuxInfo*)(info);
+  TreeLog& tl = *(aux->tl);
+
+  int exec = tl.getExecutionOrd();
+  int glpk_node_p = -1;
+  int node_ord = -1;
+
+  if(tl.isActivelyLogging()){
+    switch(glp_ios_reason(tree)){
+    case GLP_LI_DELROW:
+      {
+        glpk_node_p = glp_ios_curr_node(tree);
+        node_ord = glp_ios_node_ord(tree, glpk_node_p);
+
+        int nrows = glp_ios_rows_deleted(tree, NULL);
+        int* num = new int[1+nrows];
+        glp_ios_rows_deleted(tree, num);
+
+        NodeLog& node = tl.getNode(node_ord);
+
+        RowsDeleted* rd = new RowsDeleted(exec, nrows, num);
+
+        node.addCut(rd);
+        delete num;
+      }
+      break;
+    case GLP_ICUTADDED:
+      {
+        int cut_ord = glp_ios_pool_size(tree);
+        glpk_node_p = glp_ios_curr_node(tree);
+        node_ord = glp_ios_node_ord(tree, glpk_node_p);
+        Assert(cut_ord > 0);
+        Debug("approx") << "curr node " << glpk_node_p
+                        << " cut ordinal " << cut_ord
+                        << " node depth " << glp_ios_node_level(tree, glpk_node_p)
+                        << endl;
+        int klass;
+        glp_ios_get_cut(tree, cut_ord, NULL, NULL, &klass, NULL, NULL);
+
+        NodeLog& node = tl.getNode(node_ord);
+        switch(klass){
+        case GLP_RF_GMI:
+          {
+            GmiInfo* gmi = gmiCut(tree, exec, cut_ord);
+            node.addCut(gmi);
+          }
+          break;
+        case GLP_RF_MIR:
+          {
+            MirInfo* mir = mirCut(tree, exec, cut_ord);
+            node.addCut(mir);
+          }
+          break;
+        case GLP_RF_COV:
+          Debug("approx") << "GLP_RF_COV" << endl;
+          break;
+        case GLP_RF_CLQ:
+          Debug("approx") << "GLP_RF_CLQ" << endl;
+          break;
+        default:
+          break;
+        }
+      }
+      break;
+    case GLP_ICUTSELECT:
+      {
+        glpk_node_p = glp_ios_curr_node(tree);
+        node_ord = glp_ios_node_ord(tree, glpk_node_p);
+        int cuts = glp_ios_pool_size(tree);
+        int* ords = new int[1+cuts];
+        int* rows = new int[1+cuts];
+        int N = glp_ios_selected_cuts(tree, ords, rows);
+
+        NodeLog& nl = tl.getNode(node_ord);
+        Debug("approx") << glpk_node_p << " " << node_ord << " " << cuts << " " << N << std::endl;
+        for(int i = 1; i <= N; ++i){
+          Debug("approx") << "adding to " << node_ord <<" @ i= " << i
+                          << " ords[i] = " << ords[i]
+                          << " rows[i] = " << rows[i] << endl;
+          nl.addSelected(ords[i], rows[i]);
+        }
+        delete[] ords;
+        delete[] rows;
+        nl.applySelected();
+      }
+    break;
+  case GLP_LI_BRANCH:
+    {
+      // a branch was just made
+      int br_var;
+      int p, dn, up;
+      int p_ord, dn_ord, up_ord;
+      double br_val;
+      br_var = glp_ios_branch_log(tree, &br_val, &p, &dn, &up);
+      p_ord = glp_ios_node_ord(tree, p);
+
+      dn_ord = (dn >= 0) ? glp_ios_node_ord(tree, dn) : -1;
+      up_ord = (up >= 0) ? glp_ios_node_ord(tree, up) : -1;
+
+      Debug("approx::") << "branch: "<< br_var << " "  << br_val << " tree " << p << " " << dn << " " << up << endl;
+      Debug("approx::") << "\t " << p_ord << " " << dn_ord << " " << up_ord << endl;
+      if(dn < 0 && up < 0){
+        Debug("approx::") << "branch close " << exec << endl;
+        NodeLog& node = tl.getNode(p_ord);
+        BranchCutInfo* cut_br = branchCut(tree, exec, br_var, br_val, dn < 0);
+        node.addCut(cut_br);
+        tl.close(p_ord);
+      }else if(dn < 0 || up < 0){
+        Debug("approx::") << "branch cut" << exec << endl;
+        NodeLog& node = tl.getNode(p_ord);
+        BranchCutInfo* cut_br = branchCut(tree, exec, br_var, br_val, dn < 0);
+        node.addCut(cut_br);
+      }else{
+        Debug("approx::") << "normal branch" << endl;
+        tl.branch(p_ord, br_var, br_val, dn_ord, up_ord);
+      }
+    }
+    break;
+    case GLP_LI_CLOSE:
+      {
+        glpk_node_p = glp_ios_curr_node(tree);
+        node_ord = glp_ios_node_ord(tree, glpk_node_p);
+        Debug("approx::") << "close " << glpk_node_p << endl;
+        tl.close(node_ord);
+      }
+      break;
+    default:
+      break;
+    }
+  }
+
+  switch(glp_ios_reason(tree)){
+  case GLP_IBINGO:
+    Debug("approx::") << "bingo" << endl;
+    aux->term = MipBingo;
+    glp_ios_terminate(tree);
+    break;
+  case GLP_ICUTADDED:
+    {
+      tl.addCut();
+    }
+    break;
+  case GLP_LI_BRANCH:
+    {
+      int p, dn, up;
+      int br_var = glp_ios_branch_log(tree, NULL, &p, &dn, &up);
+
+      if(br_var >= 0){
+        unsigned v = br_var;
+        tl.logBranch(v);
+        int depth = glp_ios_node_level(tree, p);
+        unsigned ubl =  (aux->branchLimit) >= 0 ? ((unsigned)(aux->branchLimit)) : 0u;
+        if(tl.numBranches(v) >= ubl || depth >= (aux->branchDepth)){
+          aux->term = BranchesExhausted;
+          glp_ios_terminate(tree);
+        }
+      }
+    }
+    break;
+  case GLP_LI_CLOSE:
+    break;
+  default:
+    {
+      glp_prob* prob = glp_ios_get_prob(tree);
+      int iterationcount = glp_get_it_cnt(prob);
+      if(exec > (aux->pivotLimit)){
+        aux->term = ExecExhausted;
+        glp_ios_terminate(tree);
+      }else if(iterationcount > (aux->pivotLimit)){
+        aux->term = PivotsExhauasted;
+        glp_ios_terminate(tree);
+      }
+    }
+    break;
+  }
+}
+
+std::vector<const CutInfo*> ApproxGLPK::getValidCuts(const NodeLog& con) throw (RationalFromDoubleException){
+  std::vector<const CutInfo*> proven;
+  int nid = con.getNodeId();
+  for(NodeLog::const_iterator j = con.begin(), jend=con.end(); j!=jend; ++j){
+    CutInfo* cut = *j;
+
+    if(cut->getKlass() != RowsDeletedKlass){
+      if(!cut->reconstructed()){
+        Assert(!cut->reconstructed());
+        tryCut(nid, *cut);
+      }
+    }
+
+    if(cut->proven()){
+      proven.push_back(cut);
+    }
+  }
+  return proven;
+}
+
+// std::vector<const CutInfo*> ApproxGLPK::getValidCuts(const std::set<const NodeLog*>& nodes){
+//   // assume selected has been applied
+//   std::vector<const CutInfo*> proven;
+//   std::set<const NodeLog*>::const_iterator i, iend;
+//   for(i = nodes.begin(), iend=nodes.end(); i!=iend; ++i){
+//     const NodeLog* nl = *i;
+//     getValidCuts(*nl, proven);
+//   }
+
+//   return proven;
+// }
+
+ArithVar ApproxGLPK::getBranchVar(const NodeLog& con) const{
+  int br_var = con.branchVariable();
+  return getArithVarFromStructural(br_var);
+}
+
+// Node ApproxGLPK::downBranchLiteral(const NodeLog& con) const{
+//   int br_var = con.branchVariable();
+//   ArithVar v = getArithVarFromStructural(br_var);
+//   if(v != ARITHVAR_SENTINEL){
+//     if(d_vars.isIntegerInput(v) && d_vars.hasNode(v)){
+//       Node var = d_vars.asNode(v);
+//       double br_val = con.branchValue();
+//       Rational val = estimateWithCFE(br_val);
+//       if(!val.isIntegral()){
+//         NodeManager* nm = NodeManager::currentNM();
+//         Node ineq = nm->mkNode(kind::LEQ, var, mkRationalNode(val));
+//         return Rewriter::rewrite(ineq);
+//       }
+//     }
+//   }
+//   return Node::null();
+// }
+
+// std::vector<const NodeLog*> ApproxGLPK::getBranches(){
+//   std::vector<const NodeLog*> branches;
+//   for(TreeLog::const_iterator i = d_log.begin(), iend=d_log.end(); i!=iend;++i){
+//     const NodeLog& con = (*i).second;
+//     if(con.isBranch()){
+//       branches.push_back(&con);
+//     }
+//   }
+//   return branches;
+// }
+
+MipResult ApproxGLPK::solveMIP(bool activelyLog){
+  Assert(d_solvedRelaxation);
+  // Explicitly disable presolving
+  // We need the basis thus the presolver must be off!
+  // This is default, but this is just being cautious.
+  AuxInfo aux;
+  aux.pivotLimit = d_pivotLimit;
+  aux.branchLimit = d_branchLimit;
+  aux.branchDepth = d_maxDepth;
+  aux.tl = &d_log;
+  aux.term = MipUnknown;
+
+  d_log.reset(d_rootRowIds);
+  if(activelyLog){
+    d_log.makeActive();
+  }else{
+    d_log.makeInactive();
+  }
+
+  glp_iocp parm;
+  glp_init_iocp(&parm);
+  parm.presolve = GLP_OFF;
+  parm.pp_tech = GLP_PP_NONE;
+  parm.fp_heur = GLP_ON;
+  parm.gmi_cuts = GLP_ON;
+  parm.mir_cuts = GLP_ON;
+  parm.cov_cuts = GLP_ON;
+  parm.cb_func = glpkCallback;
+  parm.cb_info = &aux;
+  parm.msg_lev = GLP_MSG_OFF;
+  if(s_verbosity >= 1){
+    parm.msg_lev = GLP_MSG_ALL;
+  }
+
+  glp_erase_prob(d_mipProb);
+  glp_copy_prob(d_mipProb, d_realProb, GLP_OFF);
+
+  int res = glp_intopt(d_mipProb, &parm);
+
+  Debug("approx::solveMIP") << "res "<<res<<" aux.term "<< aux.term << endl;
+
+  switch(res){
+  case 0:
+  case GLP_ESTOP:
+    {
+      int status = glp_mip_status(d_mipProb);
+      Debug("approx::") << "status " << status << endl;
+      switch(status){
+      case GLP_OPT:
+      case GLP_FEAS:
+        d_solvedMIP = true;
+        Debug("approx::") << "bingo here!" << endl;
+        return MipBingo;
+      case GLP_NOFEAS:
+        d_solvedMIP = true;
+        return MipClosed;
+      default:
+        if(aux.term == MipBingo){
+          d_solvedMIP = true;
+          Debug("approx::") << "bingo here?" << endl;
+        }
+        return aux.term;
+      }
+    }
+  default:
+    return MipUnknown;
+  }
+}
+
+
+
+// Node explainSet(const set<ConstraintP>& inp){
+//   Assert(!inp.empty());
+//   NodeBuilder<> nb(kind::AND);
+//   set<ConstraintP>::const_iterator iter, end;
+//   for(iter = inp.begin(), end = inp.end(); iter != end; ++iter){
+//     const ConstraintP c = *iter;
+//     Assert(c != NullConstraint);
+//     c->explainForConflict(nb);
+//   }
+//   Node ret = safeConstructNary(nb);
+//   Node rew = Rewriter::rewrite(ret);
+//   if(rew.getNumChildren() < ret.getNumChildren()){
+//     //Debug("approx::") << "explainSet " << ret << " " << rew << endl;
+//   }
+//   return rew;
+// }
+
+DeltaRational sumConstraints(const DenseMap<Rational>& xs, const DenseMap<ConstraintP>& cs, bool* anyinf){
+  if(anyinf != NULL){
+    *anyinf = false;
+  }
+
+  DeltaRational beta(0);
+  DenseMap<Rational>::const_iterator iter, end;
+  iter = xs.begin();
+  end = xs.end();
+
+  Debug("approx::sumConstraints") << "sumConstraints";
+  for(; iter != end; ++iter){
+    ArithVar x = *iter;
+    const Rational& psi = xs[x];
+    ConstraintP c = cs[x];
+    Assert(c != NullConstraint);
+
+    const DeltaRational& bound = c->getValue();
+    beta += bound * psi;
+    Debug("approx::sumConstraints") << " +("<<bound << "*" << psi <<")";
+    if(anyinf != NULL ){
+      *anyinf = *anyinf || !bound.infinitesimalIsZero();
+    }
+  }
+  Debug("approx::sumConstraints") << "= " << beta << endl;
+
+  return beta;
+}
+
+// remove fixed variables from the vector
+void removeFixed(const ArithVariables& vars, DenseVector& dv, set<ConstraintP>& exp){
+  DenseMap<Rational>& vec = dv.lhs;
+  Rational& removed = dv.rhs;
+  vector<ArithVar> equal;
+  DenseMap<Rational>::const_iterator vec_iter, vec_end;
+  vec_iter = vec.begin(), vec_end = vec.end();
+  for(; vec_iter != vec_end; ++vec_iter){
+    ArithVar x = *vec_iter;
+    if(vars.boundsAreEqual(x)){
+      equal.push_back(x);
+    }
+  }
+  vector<ArithVar>::const_iterator equal_iter, equal_end;
+  equal_iter = equal.begin(), equal_end = equal.end();
+  for(; equal_iter != equal_end; ++equal_iter){
+    ArithVar x = *equal_iter;
+    Assert(vars.boundsAreEqual(x));
+    const DeltaRational& lb = vars.getLowerBound(x);
+    Assert(lb.infinitesimalIsZero());
+    removed -= (vec[x]) * lb.getNoninfinitesimalPart();
+
+    vec.remove(x);
+
+    std::pair<ConstraintP, ConstraintP> p = vars.explainEqualBounds(x);
+    exp.insert(p.first);
+    Debug("removeFixed") << "remove fixed " << p.first << endl;
+    if(p.second != NullConstraint){
+      exp.insert(p.second);
+      Debug("removeFixed") << "remove fixed " << p.second << endl;
+    }
+  }
+}
+void removeZeroes(DenseMap<Rational>& v){
+  // Remove Slack variables
+  vector<ArithVar> zeroes;
+  DenseMap<Rational>::const_iterator i, iend;
+  for(i = v.begin(), iend = v.end(); i != iend; ++i){
+    ArithVar x = *i;
+    if(v[x].isZero()){
+      zeroes.push_back(x);
+    }
+  }
+
+  vector<ArithVar>::const_iterator j, jend;
+  for(j = zeroes.begin(), jend = zeroes.end(); j != jend; ++j){
+    ArithVar x = *j;
+    v.remove(x);
+  }
+}
+void removeZeroes(DenseVector& v){
+  removeZeroes(v.lhs);
+}
+
+void removeAuxillaryVariables(const ArithVariables& vars, DenseMap<Rational>& vec){
+  // Remove auxillary variables
+  vector<ArithVar> aux;
+  DenseMap<Rational>::const_iterator vec_iter, vec_end;
+  vec_iter = vec.begin(), vec_end = vec.end();
+  for(; vec_iter != vec_end; ++vec_iter){
+    ArithVar x = *vec_iter;
+    if(vars.isAuxiliary(x)){
+      aux.push_back(x);
+    }
+  }
+
+  vector<ArithVar>::const_iterator aux_iter, aux_end;
+  aux_iter = aux.begin(), aux_end = aux.end();
+  for(; aux_iter != aux_end; ++aux_iter){
+    ArithVar s = *aux_iter;
+    Rational& s_coeff = vec.get(s);
+    Assert(vars.isAuxiliary(s));
+    Assert(vars.hasNode(s));
+    Node sAsNode = vars.asNode(s);
+    Polynomial p = Polynomial::parsePolynomial(sAsNode);
+    for(Polynomial::iterator j = p.begin(), p_end=p.end(); j != p_end; ++j){
+      Monomial m = *j;
+      const Rational& ns_coeff = m.getConstant().getValue();
+      Node vl = m.getVarList().getNode();
+      ArithVar ns = vars.asArithVar(vl);
+      Rational prod = s_coeff * ns_coeff;
+      if(vec.isKey(ns)){
+        vec.get(ns) += prod;
+      }else{
+        vec.set(ns, prod);
+      }
+    }
+    s_coeff = Rational(0); // subtract s_coeff * s from vec
+  }
+  removeZeroes(vec);
+}
+
+ArithVar ApproxGLPK::_getArithVar(int nid, int M, int ind) const{
+  if(ind <= 0){
+    return ARITHVAR_SENTINEL;
+  }else if(ind <= M){
+    return getArithVarFromRow(nid, ind);
+  }else{
+    return getArithVarFromStructural(ind - M);
+  }
+}
+
+
+bool ApproxGLPK::guessIsConstructable(const DenseMap<Rational>& guess) const {
+  // basic variable
+  // sum g[i] * x_i
+  DenseMap<Rational> g = guess;
+  removeAuxillaryVariables(d_vars, g);
+
+  if(Debug.isOn("guessIsConstructable")){
+    if(!g.empty()){
+      Debug("approx::guessIsConstructable") << "guessIsConstructable failed " << g.size() << endl;
+      DenseVector::print(Debug("approx::guessIsConstructable"), g);
+      Debug("approx::guessIsConstructable") << endl;
+    }
+  }
+  return g.empty();
+}
+
+bool ApproxGLPK::loadToBound(int nid, int M, int len, int* inds, int* statuses, DenseMap<ConstraintP>& toBound) const{
+  for(int i = 1; i <= len; ++i){
+    int status = statuses[i];
+    int ind = inds[i];
+    ArithVar v = _getArithVar(nid, M, ind);
+    ConstraintP c = NullConstraint;
+    if(v == ARITHVAR_SENTINEL){ return true; }
+
+    switch(status){
+    case GLP_NL:
+      c = d_vars.getLowerBoundConstraint(v);
+      break;
+    case GLP_NU:
+    case GLP_NS: // upper bound sufficies for fixed variables
+      c = d_vars.getUpperBoundConstraint(v);
+      break;
+    case GLP_NF:
+    default:
+      return true;
+    }
+    if(c == NullConstraint){
+      Debug("approx::") << "couldn't find " << v << " @ " << nid << endl;
+      return true;
+    }
+    Assert(c != NullConstraint);
+    toBound.set(v, c);
+  }
+  return false;
+}
+
+bool ApproxGLPK::checkCutOnPad(int nid, const CutInfo& cut) const{
+
+  Debug("approx::checkCutOnPad") << "checkCutOnPad(" << nid <<", " << cut.getId() <<")"<<endl;
+
+  const DenseMap<Rational>& constructedLhs = d_pad.d_cut.lhs;
+  const Rational& constructedRhs = d_pad.d_cut.rhs;
+  hash_set<ArithVar> visited;
+
+  if(constructedLhs.empty()){
+    Debug("approx::checkCutOnPad") << "its empty?" <<endl;
+    return true;
+  }
+  if(cut.getKind() != d_pad.d_cutKind) {
+    Debug("approx::checkCutOnPad") << "rel doesn't match" << endl;
+    return true;
+  }
+
+  const PrimitiveVec& cv = cut.getCutVector();
+  for(int i = 1; i <= cv.len; ++i){
+    int ind = cv.inds[i]; // this is always a structural variable
+    double coeff = cv.coeffs[i];
+
+
+
+    if(!d_colToArithVar.isKey(ind)){ return true; }
+    ArithVar x = d_colToArithVar[ind];
+    //if(x == ARITHVAR_SENTINEL){ return true; }
+    visited.insert(x);
+
+
+    if(!constructedLhs.isKey(x)){
+      if(Debug.isOn("approx::checkCutOnPad")){
+        Debug("approx::checkCutOnPad") << " didn't find key for " << x << std::endl;
+        cut.print(Debug("approx::checkCutOnPad"));
+        Debug("approx::checkCutOnPad") << endl;
+        d_pad.d_cut.print(Debug("approx::checkCutOnPad"));
+        Debug("approx::checkCutOnPad") << endl;
+      }
+      return true;
+    }
+
+    const Rational& onConstructed = constructedLhs[x];
+
+    Debug("approx::checkCutOnPad") << ind << " " << coeff  << " " << endl;
+    Debug("approx::checkCutOnPad") << " " << x << " " << onConstructed << endl;
+
+    if(!roughlyEqual(coeff, onConstructed.getDouble())){
+      Debug("approx::checkCutOnPad") << "coeff failure" << endl;
+      return true;
+    }
+  }
+  if(visited.size() != constructedLhs.size()){
+    Debug("approx::checkCutOnPad") << "size mismatch" << endl;
+    return true;
+  }
+
+
+  if(!roughlyEqual(cut.getRhs(), constructedRhs.getDouble())){
+    Debug("approx::checkCutOnPad")
+      << "norm rhs is off " << cut.getRhs() << " " << constructedRhs << endl;
+    return true;
+  }
+  return false;
+}
+
+
+
+bool ApproxGLPK::attemptBranchCut(int nid, const BranchCutInfo& br_cut){
+  d_pad.clear();
+
+  const PrimitiveVec& cut_vec = br_cut.getCutVector();
+  int structural = cut_vec.inds[1];
+  Assert(roughlyEqual(cut_vec.coeffs[1], +1.0));
+
+  ArithVar x = getArithVarFromStructural(structural);
+  d_pad.d_failure = (x == ARITHVAR_SENTINEL);
+  if(d_pad.d_failure){ return true; }
+
+  Kind brKind = br_cut.getKind();
+
+  d_pad.d_failure = (brKind != kind::LEQ && brKind != kind::GEQ);
+  if(d_pad.d_failure){ return true; }
+
+  d_pad.d_cutKind = brKind;
+  d_pad.d_cut.lhs.set(x, Rational(1));
+
+  Rational& rhs = d_pad.d_cut.rhs;
+  rhs = estimateWithCFE(Rational::fromDouble(br_cut.getRhs()), Integer(1));
+  d_pad.d_failure = !rhs.isIntegral();
+  if(d_pad.d_failure) { return true; }
+
+  d_pad.d_failure = checkCutOnPad(nid, br_cut);
+  if(d_pad.d_failure){ return true; }
+
+  return false;
+}
+
+bool ApproxGLPK::attemptGmi(int nid, const GmiInfo& gmi){
+  d_pad.clear();
+
+  d_pad.d_cutKind = kind::GEQ;
+
+  int M = gmi.getMAtCreation();
+  ArithVar b = _getArithVar(nid, M, gmi.basic);
+  d_pad.d_failure = (b == ARITHVAR_SENTINEL);
+  if(d_pad.d_failure){ return true; }
+
+  d_pad.d_failure = !d_vars.isIntegerInput(b);
+  if(d_pad.d_failure){ return true; }
+
+  d_pad.d_basic = b;
+
+
+  const PrimitiveVec& tab = gmi.tab_row;
+  d_pad.d_failure = attemptConstructTableRow(nid, M, tab);
+  if(d_pad.d_failure){ return true; }
+
+  int* statuses = gmi.tab_statuses;
+  DenseMap<ConstraintP>& toBound = d_pad.d_toBound;
+  d_pad.d_failure = loadToBound(nid, M, tab.len, tab.inds, statuses, toBound);
+  if(d_pad.d_failure){ return true; }
+
+  d_pad.d_failure = constructGmiCut();
+  if(d_pad.d_failure){ return true; }
+
+  d_pad.d_failure = checkCutOnPad(nid, gmi);
+  if(d_pad.d_failure){ return true; }
+
+  return false;
+}
+
+bool ApproxGLPK::applyCMIRRule(int nid, const MirInfo& mir){
+
+  const DenseMap<Rational>& compRanges = d_pad.d_compRanges;
+
+  DenseMap<Rational>& alpha = d_pad.d_alpha.lhs;
+  Rational& b = d_pad.d_alpha.rhs;
+
+  Rational delta = estimateWithCFE(mir.delta);
+  d_pad.d_failure = (delta.sgn() <= 0);
+  if(d_pad.d_failure){ return true; }
+
+  Debug("approx::mir") << "applyCMIRRule() " << delta << " " << mir.delta << endl;
+
+  DenseMap<Rational>::const_iterator iter, iend;
+  iter = alpha.begin(), iend = alpha.end();
+  for(; iter != iend; ++iter){
+    ArithVar v = *iter;
+    const Rational& curr = alpha[v];
+    Rational next = curr / delta;
+    if(compRanges.isKey(v)){
+      b -= curr * compRanges[v];
+      alpha.set(v, - next);
+    }else{
+      alpha.set(v, next);
+    }
+  }
+  b = b / delta;
+
+  Rational roundB = (b + Rational(1,2)).floor();
+  d_pad.d_failure = (b - roundB).abs() < Rational(1,90);
+  // intensionally more generous than glpk here
+  if(d_pad.d_failure){ return true; }
+
+  Rational one(1);
+  Rational fb = b.floor_frac();
+  Rational one_sub_fb = one - fb;
+  Rational gamma = (one / one_sub_fb);
+
+  DenseMap<Rational>& cut = d_pad.d_cut.lhs;
+  Rational& beta = d_pad.d_cut.rhs;
+
+  iter = alpha.begin(), iend = alpha.end();
+  for(; iter != iend; ++iter){
+    ArithVar v = *iter;
+    const Rational& a_j = alpha[v];
+    if(d_vars.isIntegerInput(v)){
+      Rational floor_aj = a_j.floor();
+      Rational frac_aj = a_j.floor_frac();
+      if(frac_aj <= fb){
+        cut.set(v, floor_aj);
+      }else{
+        Rational tmp =  ((frac_aj - fb) / one_sub_fb);
+        cut.set(v, floor_aj + tmp);
+      }
+    }else{
+      cut.set(v, a_j * gamma);
+    }
+  }
+  beta = b.floor();
+
+  iter = cut.begin(), iend = cut.end();
+  for(; iter != iend; ++iter){
+    ArithVar v = *iter;
+    if(compRanges.isKey(v)){
+      Rational neg = - cut[v];
+      beta += neg * compRanges[v];
+      cut.set(v, neg);
+    }
+  }
+
+  return false;
+}
+
+bool ApproxGLPK::attemptMir(int nid, const MirInfo& mir){
+  d_pad.clear();
+
+  d_pad.d_cutKind = kind::LEQ;
+
+  // virtual bounds must be done before slacks
+  d_pad.d_failure = loadVirtualBoundsIntoPad(nid, mir);
+  if(d_pad.d_failure){ return true; }
+
+  d_pad.d_failure = loadSlacksIntoPad(nid, mir);
+  if(d_pad.d_failure){ return true; }
+
+
+  d_pad.d_failure = loadRowSumIntoAgg(nid, mir.getMAtCreation(), mir.row_sum);
+  if(d_pad.d_failure){ return true; }
+
+  removeFixed(d_vars, d_pad.d_agg, d_pad.d_explanation);
+
+  d_pad.d_failure = buildModifiedRow(nid, mir);
+  if(d_pad.d_failure){ return true; }
+
+  d_pad.d_failure =  constructMixedKnapsack();
+  if(d_pad.d_failure){ return true; }
+
+  d_pad.d_failure = makeRangeForComplemented(nid, mir);
+  if(d_pad.d_failure){ return true; }
+
+  d_pad.d_failure = applyCMIRRule(nid, mir);
+  if(d_pad.d_failure){ return true; }
+
+  d_pad.d_failure = replaceSlacksOnCuts();
+  if(d_pad.d_failure){ return true; }
+
+  removeAuxillaryVariables(d_vars, d_pad.d_cut.lhs);
+
+  d_pad.d_failure = checkCutOnPad(nid, mir);
+  if(d_pad.d_failure){ return true; }
+
+  return false;
+  //return makeCutNodes(nid, mir);
+}
+
+/** Returns true on failure. */
+bool ApproxGLPK::loadVB(int nid, int M, int j, int ri, bool wantUb, VirtualBound& tmp){
+  if(ri <= 0) { return true; }
+
+  static int instance = 0;
+  ++instance;
+  Debug("glpk::loadVB") << "loadVB() " << instance << endl;
+
+  ArithVar rowVar = _getArithVar(nid, M, ri);
+  ArithVar contVar = _getArithVar(nid, M, j);
+  if(rowVar == ARITHVAR_SENTINEL){
+    Debug("glpk::loadVB") << "loadVB() " << instance
+                          << " rowVar is ARITHVAR_SENTINEL " << rowVar << endl;
+    return true;
+  }
+  if(contVar == ARITHVAR_SENTINEL){
+    Debug("glpk::loadVB") << "loadVB() " << instance
+                          << " contVar is ARITHVAR_SENTINEL " << contVar << endl;        
+    return true; }
+
+  if(!d_vars.isAuxiliary(rowVar)){
+    Debug("glpk::loadVB") << "loadVB() " << instance
+                          << " rowVar is not auxilliary " << rowVar << endl;    
+    return true;
+  }
+  // is integer is correct here
+  if(d_vars.isInteger(contVar)){
+    Debug("glpk::loadVB") << "loadVB() " << instance
+                          << " contVar is integer " << contVar << endl;    
+    return true;
+  }
+
+  ConstraintP lb = d_vars.getLowerBoundConstraint(rowVar);
+  ConstraintP ub = d_vars.getUpperBoundConstraint(rowVar);
+
+  if(lb != NullConstraint && ub != NullConstraint){
+    Debug("glpk::loadVB") << "loadVB() " << instance
+                          << " lb and ub are both NULL " << lb << " " << ub << endl;    
+    return true;
+  }
+
+  ConstraintP rcon = lb == NullConstraint ? ub : lb;
+  if(rcon == NullConstraint) {
+    Debug("glpk::loadVB") << "loadVB() " << instance
+                          << " rcon is NULL " << rcon << endl;    
+    return true;
+  }
+
+  if(!rcon->getValue().isZero()){
+    Debug("glpk::loadVB") << "loadVB() " << instance
+                          << " rcon value is not 0 " << rcon->getValue() << endl;
+    return true;
+  }
+
+  if(!d_vars.hasNode(rowVar)){
+    Debug("glpk::loadVB") << "loadVB() " << instance
+                          << " does not have node " << rowVar << endl;
+    return true;
+  }
+
+  Polynomial p = Polynomial::parsePolynomial(d_vars.asNode(rowVar));
+  if(p.size() != 2) {  
+    Debug("glpk::loadVB") << "loadVB() " << instance << " polynomial is not binary: " << p.getNode() << endl;
+    return true;
+  }
+
+  Monomial first = p.getHead(), second = p.getTail().getHead();
+  Rational c1 = first.getConstant().getValue();
+  Rational c2 = second.getConstant().getValue();
+  Node nx1 = first.getVarList().getNode();
+  Node nx2 = second.getVarList().getNode();
+
+  if(!d_vars.hasArithVar(nx1)) {
+    Debug("glpk::loadVB") << "loadVB() " << instance
+                          << " does not have a variable for nx1: " << nx1 << endl;
+    return true;
+  }
+  if(!d_vars.hasArithVar(nx2)) {
+    Debug("glpk::loadVB") << "loadVB() " << instance
+                          << " does not have a variable for nx2 " << nx2 << endl;
+    return true;
+  }
+  ArithVar x1 = d_vars.asArithVar(nx1), x2 = d_vars.asArithVar(nx2);
+
+  Assert(x1 != x2);
+  Assert(!c1.isZero());
+  Assert(!c2.isZero());
+
+  Debug("glpk::loadVB")
+    << " lb " << lb
+    << " ub " << ub
+    << " rcon " << rcon
+    << " x1 " << x1
+    << " x2 " << x2
+    << " c1 " << c1
+    << " c2 " << c2 << endl;
+
+  ArithVar iv = (x1 == contVar) ? x2 : x1;
+  Rational& cc = (x1 == contVar) ? c1 : c2;
+  Rational& ic = (x1 == contVar) ? c2 : c1;
+
+  Debug("glpk::loadVB")
+    << " cv " << contVar
+    << " cc " << cc
+    << " iv " << iv
+    << " c2 " << ic << endl;
+
+  if(!d_vars.isIntegerInput(iv)){
+    Debug("glpk::loadVB") << "loadVB() " << instance
+                          << " iv is not an integer input variable " << iv << endl;    
+    return true;
+  }
+  // cc * cv + ic * iv <= 0 or
+  // cc * cv + ic * iv <= 0
+
+  if(rcon == ub){ // multiply by -1
+    cc = -cc; ic = - ic;
+  }
+  Debug("glpk::loadVB") << " cv " << contVar
+                        << " cc " << cc
+                        << " iv " << iv
+                        << " c2 " << ic << endl;
+
+  // cc * cv + ic * iv >= 0
+  // cc * cv >= -ic * iv
+  // if cc < 0:
+  //   cv <= -ic/cc * iv
+  // elif cc > 0:
+  //   cv >= -ic/cc * iv
+  Assert(!cc.isZero());
+  Rational d = -ic/cc;
+  Debug("glpk::loadVB") << d << " " << cc.sgn() << endl;
+  bool nowUb = cc.sgn() < 0;
+  if(wantUb != nowUb) {
+    Debug("glpk::loadVB") << "loadVB() " << instance
+                          << " wantUb is not nowUb " << wantUb << " " << nowUb << endl;    
+    
+    return true;
+  }
+
+  Kind rel = wantUb ? kind::LEQ : kind::GEQ;
+
+  tmp = VirtualBound(contVar, rel, d, iv, rcon);
+    Debug("glpk::loadVB") << "loadVB() " << instance << " was successful" << endl;    
+  return false;
+}
+
+bool ApproxGLPK::loadVirtualBoundsIntoPad(int nid, const MirInfo& mir){
+  Assert(mir.vlbRows != NULL);
+  Assert(mir.vubRows != NULL);
+
+  int N = mir.getN();
+  int M = mir.getMAtCreation();
+
+  // Load the virtual bounds first
+  VirtualBound tmp;
+  for(int j=1; j <= N+M; ++j){
+    if(!loadVB(nid, M, j, mir.vlbRows[j], false, tmp)){
+      if(d_pad.d_vlb.isKey(tmp.x)){ return true; }
+      d_pad.d_vlb.set(tmp.x, tmp);
+    }else if(mir.vlbRows[j] > 0){
+      Debug("approx::mir") << "expected vlb to work" << endl;
+    }
+    if(!loadVB(nid, M, j, mir.vubRows[j], true, tmp)){
+      if(d_pad.d_vub.isKey(tmp.x)){ return true; }
+      d_pad.d_vub.set(tmp.x, tmp);
+    }else if(mir.vubRows[j] > 0){
+      Debug("approx::mir") << "expected vub to work" << endl;
+    }
+  }
+  return false;
+}
+
+bool ApproxGLPK::loadSlacksIntoPad(int nid, const MirInfo& mir){
+  Assert(mir.vlbRows != NULL);
+  Assert(mir.vubRows != NULL);
+
+  int N = mir.getN();
+  int M = mir.getMAtCreation();
+
+  bool useVB;
+  // Load the virtual bounds first
+  SlackReplace rep;
+  bool lb;
+  ConstraintP b;
+  Debug("approx::mir") << "loadSlacksIntoPad(): N="<<N<<", M=" << M << std::endl;
+  for(int j=1; j <= N+M; ++j){
+    ArithVar v = _getArithVar(nid, M, j);
+    if(v == ARITHVAR_SENTINEL){
+      Debug("approx::mir") << " for: " << j << " no variable" << endl;
+      continue;
+    }
+    rep = SlackUndef;
+    char sub = mir.subst[j];
+    switch(sub){
+    case 'L':
+    case 'U':
+      lb = (sub == 'L');
+      useVB = lb ? (mir.vlbRows[j] > 0) : (mir.vubRows[j] > 0);
+      if(useVB){
+        if(lb ? d_pad.d_vlb.isKey(v) : d_pad.d_vub.isKey(v)){
+          rep = lb ? SlackVLB : SlackVUB;
+        }
+      }else{
+        b = lb ? d_vars.getLowerBoundConstraint(v)
+          : d_vars.getUpperBoundConstraint(v);
+        if(b != NullConstraint){
+          if(b->getValue().infinitesimalIsZero()){
+            rep = lb ? SlackLB : SlackUB;
+          }
+        }
+      }
+
+      Debug("approx::mir") << " for: " << j << ", " << v;
+      Debug("approx::mir") << " " << ((rep != SlackUndef) ? "succ" : "fail") << " ";
+      Debug("approx::mir") << sub << " " << rep << " " << mir.vlbRows[j] << " " << mir.vubRows[j]
+                           << endl;
+      if(rep != SlackUndef){
+        d_pad.d_slacks.set(v,rep);
+      }
+      break;
+    case '?':
+      continue;
+    default:
+      Debug("approx::mir") << " for: " << j << " got subst " << (int)sub << endl;
+      continue;
+    }
+  }
+  return false;
+}
+
+bool ApproxGLPK::replaceSlacksOnCuts(){
+  vector<ArithVar> virtualVars;
+
+  DenseMap<Rational>& cut = d_pad.d_cut.lhs;
+  Rational& cutRhs = d_pad.d_cut.rhs;
+
+  DenseMap<Rational>::const_iterator iter, iend;
+  iter = cut.begin(), iend = cut.end();
+  for(; iter != iend; ++iter){
+    ArithVar x = *iter;
+    SlackReplace rep = d_pad.d_slacks[x];
+    if(d_vars.isIntegerInput(x)){
+      Assert(rep == SlackLB  || rep == SlackUB);
+      Rational& a = cut.get(x);
+
+      const DeltaRational& bound = (rep == SlackLB) ?
+        d_vars.getLowerBound(x) : d_vars.getUpperBound(x);
+      Assert(bound.infinitesimalIsZero());
+      Rational prod = a * bound.getNoninfinitesimalPart();
+      if(rep == SlackLB){
+        cutRhs += prod;
+      }else{
+        cutRhs -= prod;
+        a = -a;
+      }
+    }else if(rep == SlackVLB){
+      virtualVars.push_back(d_pad.d_vlb[x].y);
+    }else if(rep == SlackVUB){
+      virtualVars.push_back(d_pad.d_vub[x].y);
+    }
+  }
+
+  for(size_t i = 0; i < virtualVars.size(); ++i){
+    ArithVar x = virtualVars[i];
+    if(!cut.isKey(x)){
+      cut.set(x, Rational(0));
+    }
+  }
+
+  iter = cut.begin(), iend = cut.end();
+  for(; iter != iend; ++iter){
+    ArithVar x = *iter;
+    if(!d_vars.isIntegerInput(x)){
+      SlackReplace rep = d_pad.d_slacks[x];
+      Rational& a = cut.get(x);
+      switch(rep){
+      case SlackLB:
+        {
+          const DeltaRational& bound = d_vars.getLowerBound(x);
+          Assert(bound.infinitesimalIsZero());
+          cutRhs += a * bound.getNoninfinitesimalPart();
+        }
+        break;
+      case SlackUB:
+        {
+          const DeltaRational& bound = d_vars.getUpperBound(x);
+          Assert(bound.infinitesimalIsZero());
+          cutRhs -= a * bound.getNoninfinitesimalPart();
+          a = -a;
+        }
+        break;
+      case SlackVLB:
+      case SlackVUB:
+        {
+          bool lb = (rep == SlackVLB);
+          const VirtualBound& vb = lb ?
+            d_pad.d_vlb[x] : d_pad.d_vub[x];
+          ArithVar y = vb.y;
+          Assert(vb.x == x);
+          Assert(cut.isKey(y));
+          Rational& ycoeff = cut.get(y);
+          if(lb){
+            ycoeff -= a * vb.d;
+          }else{
+            ycoeff += a * vb.d;
+            a = -a;
+          }
+        }
+        break;
+      default:
+        return true;
+      }
+    }
+  }
+  removeZeroes(cut);
+  return false;
+}
+
+bool ApproxGLPK::loadRowSumIntoAgg(int nid, int M, const PrimitiveVec& row_sum){
+  DenseMap<Rational>& lhs = d_pad.d_agg.lhs;
+  d_pad.d_agg.rhs = Rational(0);
+
+  int len = row_sum.len;
+  for(int i = 1; i <= len; ++i){
+    int aux_ind = row_sum.inds[i]; // auxillary index
+    double coeff = row_sum.coeffs[i];
+    ArithVar x = _getArithVar(nid, M, aux_ind);
+    if(x == ARITHVAR_SENTINEL){ return true; }
+    Rational c = estimateWithCFE(coeff);
+    if(lhs.isKey(x)){
+      lhs.get(x) -= c;
+    }else{
+      lhs.set(x, -c);
+    }
+  }
+
+  Debug("approx::mir") << "beg loadRowSumIntoAgg() 1" << endl;
+  if(Debug.isOn("approx::mir")) { DenseVector::print(Debug("approx::mir"), lhs); }
+  removeAuxillaryVariables(d_vars, lhs);
+  Debug("approx::mir") << "end loadRowSumIntoAgg() 1" << endl;
+
+  if(Debug.isOn("approx::mir")){
+    Debug("approx::mir") << "loadRowSumIntoAgg() 2" << endl;
+    DenseVector::print(Debug("approx::mir"), lhs);
+    Debug("approx::mir") << "end loadRowSumIntoAgg() 2" << endl;
+  }
+
+  for(int i = 1; i <= len; ++i){
+    int aux_ind = row_sum.inds[i]; // auxillary index
+    double coeff = row_sum.coeffs[i];
+    ArithVar x = _getArithVar(nid, M, aux_ind);
+    Assert(x != ARITHVAR_SENTINEL);
+    Rational c = estimateWithCFE(coeff);
+    Assert(!lhs.isKey(x));
+    lhs.set(x, c);
+  }
+
+  if(Debug.isOn("approx::mir")){
+    Debug("approx::mir") << "loadRowSumIntoAgg() 2" << endl;
+    DenseVector::print(Debug("approx::mir"), lhs);
+    Debug("approx::mir") << "end loadRowSumIntoAgg() 3" << endl;
+  }
+  return false;
+}
+
+bool ApproxGLPK::buildModifiedRow(int nid, const MirInfo& mir){
+  const DenseMap<Rational>& agg = d_pad.d_agg.lhs;
+  const Rational& aggRhs = d_pad.d_agg.rhs;
+  DenseMap<Rational>& mod = d_pad.d_mod.lhs;
+  Rational& modRhs = d_pad.d_mod.rhs;
+
+  Debug("approx::mir")
+    << "buildModifiedRow()"
+    << " |agg|=" << d_pad.d_agg.lhs.size()
+    << " |mod|=" << d_pad.d_mod.lhs.size()
+    << " |slacks|=" << d_pad.d_slacks.size()
+    << " |vlb|=" << d_pad.d_vub.size()
+    << " |vub|=" << d_pad.d_vlb.size() << endl;
+
+  mod.addAll(agg);
+  modRhs = aggRhs;
+  DenseMap<Rational>::const_iterator iter, iend;
+  for(iter = agg.begin(), iend = agg.end(); iter != iend; ++iter){
+    ArithVar x = *iter;
+    const Rational& c = mod[x];
+    if(!d_pad.d_slacks.isKey(x)){
+      Debug("approx::mir") << "missed x: " << x << endl;
+      return true;
+    }
+    SlackReplace rep = d_pad.d_slacks[x];
+    switch(rep){
+    case SlackLB: // skip for now
+    case SlackUB:
+      break;
+    case SlackVLB: /* x[k] = lb[k] * x[kk] + x'[k] */
+    case SlackVUB: /* x[k] = ub[k] * x[kk] - x'[k] */
+      {
+        Assert(!d_vars.isIntegerInput(x));
+        bool ub = (rep == SlackVUB);
+        const VirtualBound& vb =
+          ub ? d_pad.d_vub[x] : d_pad.d_vlb[x];
+        Assert(vb.x == x);
+        ArithVar y = vb.y;
+        Rational prod = c * vb.d;
+        if(mod.isKey(y)){
+          mod.get(x) += prod;
+        }else{
+          mod.set(y, prod);
+        }
+        if(ub){
+          mod.set(x, -c);
+        }
+        Assert(vb.c != NullConstraint);
+        d_pad.d_explanation.insert(vb.c);
+      }
+      break;
+    default:
+      return true;
+    }
+  }
+  removeZeroes(mod); /* if something cancelled we don't want it in the explanation */
+  for(iter = mod.begin(), iend = mod.end(); iter != iend; ++iter){
+    ArithVar x = *iter;
+    if(!d_pad.d_slacks.isKey(x)){  return true; }
+
+    SlackReplace rep = d_pad.d_slacks[x];
+    switch(rep){
+    case SlackLB: /* x = lb + x' */
+    case SlackUB: /* x = ub - x' */
+      {
+        bool ub = (rep == SlackUB);
+        ConstraintP b = ub ?  d_vars.getUpperBoundConstraint(x):
+          d_vars.getLowerBoundConstraint(x);
+
+        Assert(b != NullConstraint);
+        Assert(b->getValue().infinitesimalIsZero());
+        const Rational& c = mod.get(x);
+        modRhs -= c * b->getValue().getNoninfinitesimalPart();
+        if(ub){
+          mod.set(x, -c);
+        }
+        d_pad.d_explanation.insert(b);
+      }
+      break;
+    case SlackVLB: /* handled earlier */
+    case SlackVUB:
+      break;
+    default:
+      return true;
+    }
+  }
+  removeZeroes(mod);
+  return false;
+}
+
+bool ApproxGLPK::makeRangeForComplemented(int nid, const MirInfo& mir){
+  DenseMap<Rational>& alpha = d_pad.d_alpha.lhs;
+  int M = mir.getMAtCreation();
+  int N = mir.getN();
+  DenseMap<Rational>& compRanges = d_pad.d_compRanges;
+
+  int complemented = 0;
+
+  for(int j = 1; j <= M + N; ++j){
+    if(mir.cset[j] != 0){
+      complemented++;
+      ArithVar x = _getArithVar(nid, M, j);
+      if(!alpha.isKey(x)){ return true; }
+      if(!d_vars.isIntegerInput(x)){ return true; }
+      Assert(d_pad.d_slacks.isKey(x));
+      Assert(d_pad.d_slacks[x] == SlackLB || d_pad.d_slacks[x] == SlackUB);
+
+      ConstraintP lb = d_vars.getLowerBoundConstraint(x);
+      ConstraintP ub = d_vars.getUpperBoundConstraint(x);
+
+      if(lb == NullConstraint) { return true; }
+      if(ub == NullConstraint) { return true; }
+
+      if(!lb->getValue().infinitesimalIsZero()){
+        return true;
+      }
+      if(!ub->getValue().infinitesimalIsZero()){
+        return true;
+      }
+
+      const Rational& uval = ub->getValue().getNoninfinitesimalPart();
+      const Rational& lval = lb->getValue().getNoninfinitesimalPart();
+
+      d_pad.d_explanation.insert(lb);
+      d_pad.d_explanation.insert(ub);
+
+      Rational u = uval - lval;
+      // u is the same for both rep == LP and rep == UB
+      if(compRanges.isKey(x)) { return true; }
+      compRanges.set(x,u);
+    }
+  }
+
+  Debug("approx::mir") <<  "makeRangeForComplemented()" << complemented << endl;
+  return false;
+}
+
+
+bool ApproxGLPK::constructMixedKnapsack(){
+  const DenseMap<Rational>& mod = d_pad.d_mod.lhs;
+  const Rational& modRhs = d_pad.d_mod.rhs;
+  DenseMap<Rational>& alpha = d_pad.d_alpha.lhs;
+  Rational& beta = d_pad.d_alpha.rhs;
+
+  Assert(alpha.empty());
+  beta = modRhs;
+
+  unsigned intVars = 0;
+  unsigned remain = 0;
+  unsigned dropped = 0;
+  DenseMap<Rational>::const_iterator iter, iend;
+  for(iter = mod.begin(), iend = mod.end(); iter != iend; ++iter){
+    ArithVar v = *iter;
+    const Rational& c = mod[v];
+    Assert(!c.isZero());
+    if(d_vars.isIntegerInput(v)){
+      intVars++;
+      alpha.set(v, c);
+    }else if(c.sgn() < 0){
+      remain++;
+      alpha.set(v, c);
+    }else{
+      dropped++;
+    }
+  }
+
+  Debug("approx::mir")
+    << "constructMixedKnapsack() "
+    <<" dropped " << dropped
+    <<" remain " << remain
+    <<" intVars " << intVars
+    << endl;
+  return intVars == 0; // if this is 0 we have failed
+}
+
+bool ApproxGLPK::attemptConstructTableRow(int nid, int M, const PrimitiveVec& vec){
+  bool failed = guessCoefficientsConstructTableRow(nid, M, vec);
+  if(failed){
+    failed = gaussianElimConstructTableRow(nid, M, vec);
+  }
+
+  return failed;
+}
+
+bool ApproxGLPK::gaussianElimConstructTableRow(int nid, int M, const PrimitiveVec& vec){
+  TimerStat::CodeTimer codeTimer(d_stats.d_gaussianElimConstructTime);
+  ++d_stats.d_gaussianElimConstruct;
+
+  ArithVar basic = d_pad.d_basic;
+  DenseMap<Rational>& tab = d_pad.d_tabRow.lhs;
+  tab.purge();
+  d_pad.d_tabRow.rhs = Rational(0);
+  Assert(basic != ARITHVAR_SENTINEL);
+  Assert(tab.empty());
+  Assert(d_pad.d_tabRow.rhs.isZero());
+
+  if(d_vars.isAuxiliary(basic)) { return true; }
+
+  if(Debug.isOn("gaussianElimConstructTableRow")){
+    Debug("gaussianElimConstructTableRow") << "1 gaussianElimConstructTableRow("<<nid <<", "<< basic<< ")"<<endl;
+    vec.print(Debug("gaussianElimConstructTableRow"));
+    Debug("gaussianElimConstructTableRow") << "match " << basic << "("<<d_vars.asNode(basic)<<")"<<endl;
+  }
+
+  set<ArithVar> onrow;
+  for(int i = 1; i <= vec.len; ++i){
+    int ind = vec.inds[i];
+    ArithVar var = _getArithVar(nid, M, ind);
+    if(var == ARITHVAR_SENTINEL){
+      Debug("gaussianElimConstructTableRow") << "couldn't find" << ind << " " << M << " " << nid << endl;
+      return true;
+    }
+    onrow.insert(var);
+  }
+
+
+  Debug("gaussianElimConstructTableRow") << "2 gaussianElimConstructTableRow("<<nid <<", "<< basic<< ")"<<endl;
+
+  Matrix<Rational> A;
+  A.increaseSizeTo(d_vars.getNumberOfVariables());
+  std::vector< std::pair<RowIndex, ArithVar> > rows;
+  set<ArithVar>::const_iterator i, iend;
+  // load the rows for auxiliary variables into A
+  for(i=onrow.begin(), iend=onrow.end(); i!=iend; ++i){
+    ArithVar v = *i;
+    if(d_vars.isAuxiliary(v)){
+      Assert(d_vars.hasNode(v));
+
+      vector<Rational> coeffs;
+      vector<ArithVar> vars;
+
+      coeffs.push_back(Rational(-1));
+      vars.push_back(v);
+
+      Node n = d_vars.asNode(v);
+      Polynomial p = Polynomial::parsePolynomial(n);
+      Polynomial::iterator j = p.begin(), jend=p.end();
+      for(j=p.begin(), jend=p.end(); j!=jend; ++j){
+        Monomial m = *j;
+        if(m.isConstant()) { return true; }
+        VarList vl = m.getVarList();
+        if(!d_vars.hasArithVar(vl.getNode())){ return true; }
+        ArithVar x = d_vars.asArithVar(vl.getNode());
+        const Rational& q = m.getConstant().getValue();
+        coeffs.push_back(q); vars.push_back(x);
+      }
+      RowIndex rid = A.addRow(coeffs, vars);
+      rows.push_back(make_pair(rid, ARITHVAR_SENTINEL));
+    }
+  }
+  Debug("gaussianElimConstructTableRow") << "3 gaussianElimConstructTableRow("<<nid <<", "<< basic<< ")"<<endl;
+
+  for(size_t i=0; i < rows.size(); ++i){
+    RowIndex rid = rows[i].first;
+    Assert(rows[i].second == ARITHVAR_SENTINEL);
+
+    // substitute previous rows
+    for(size_t j=0; j < i; j++){
+      RowIndex prevRow = rows[j].first;
+      ArithVar other = rows[j].second;
+      Assert(other != ARITHVAR_SENTINEL);
+      const Matrix<Rational>::Entry& e = A.findEntry(rid, other);
+      if(!e.blank()){
+        // r_p : 0 = -1 * other + sum a_i x_i
+        // rid : 0 =  e * other + sum b_i x_i
+        // rid += e * r_p
+        //     : 0 = 0 * other + ... 
+        Assert(!e.getCoefficient().isZero());
+
+        Rational cp = e.getCoefficient();
+        Debug("gaussianElimConstructTableRow")
+          << "on " << rid << " subst " << cp << "*" << prevRow << " " << other << endl;
+        A.rowPlusRowTimesConstant(rid, prevRow, cp);
+      }
+    }
+    if(Debug.isOn("gaussianElimConstructTableRow")){
+      A.printMatrix(Debug("gaussianElimConstructTableRow"));
+    }
+
+    // solve the row for anything other than non-basics
+    bool solveForBasic = (i + 1 == rows.size());
+    Rational q;
+    ArithVar s = ARITHVAR_SENTINEL;
+    Matrix<Rational>::RowIterator k = A.getRow(rid).begin();
+    Matrix<Rational>::RowIterator k_end = A.getRow(rid).end();
+    for(; k != k_end; ++k){
+      const Matrix<Rational>::Entry& e = *k;
+      ArithVar colVar = e.getColVar();
+      bool selectColVar = false;
+      if(colVar == basic){
+        selectColVar = solveForBasic;
+      }else if(onrow.find(colVar) == onrow.end()) {
+        selectColVar = true;
+      }
+      if(selectColVar){
+        s = colVar;
+        q = e.getCoefficient();
+      }
+    }
+    if(s == ARITHVAR_SENTINEL || q.isZero()){
+      Debug("gaussianElimConstructTableRow") << "3 fail gaussianElimConstructTableRow("<<nid <<", "<< basic<< ")"<<endl;
+      return true;
+    }else{
+      // 0 = q * s + sum c_i * x_i
+      Rational mult = -(q.inverse());
+      Debug("gaussianElimConstructTableRow") << "selecting " << s << " : " << mult << endl;
+      Debug("gaussianElimConstructTableRow") << "selecting " << rid << " " << s << endl;
+      //cout << "selecting " << s << " : complexity " << mult.complexity() << " " << mult << endl;
+      //cout << "selecting " << rid << " " << s << endl;
+      A.multiplyRowByConstant(rid, mult);
+      rows[i].second = s;
+    }
+  }
+  Debug("gaussianElimConstructTableRow") << "4 gaussianElimConstructTableRow("<<nid <<", "<< basic<< ")"<<endl;
+
+  if(rows.empty()) {
+    Debug("gaussianElimConstructTableRow") << "4 fail 1 gaussianElimConstructTableRow("<<nid <<", "<< basic<< ")"<<endl;
+    return true;
+  }
+  RowIndex rid_last = rows.back().first;
+  ArithVar rid_var = rows.back().second;
+  if(rid_var != basic){
+    Debug("gaussianElimConstructTableRow") << "4 fail 2 gaussianElimConstructTableRow("<<nid <<", "<< basic<< ")"<<endl;
+    return true;
+  }
+
+  Assert(tab.empty());
+
+  Matrix<Rational>::RowIterator k = A.getRow(rid_last).begin();
+  Matrix<Rational>::RowIterator k_end = A.getRow(rid_last).end();
+  for(; k != k_end; ++k){
+    const Matrix<Rational>::Entry& e = *k;
+    tab.set(e.getColVar(), e.getCoefficient());
+  }
+  Debug("gaussianElimConstructTableRow") << "5 gaussianElimConstructTableRow("<<nid <<", "<< basic<< ")"<<endl;
+  if(!tab.isKey(basic)){
+    Debug("gaussianElimConstructTableRow") << "5 fail 1 gaussianElimConstructTableRow("<<nid <<", "<< basic<< ")"<<endl;
+    return true;
+  }
+  if(tab[basic] != Rational(-1)){
+    Debug("gaussianElimConstructTableRow") << "5 fail 2 gaussianElimConstructTableRow("<<nid <<", "<< basic<< ")"<<endl;
+    return true;
+  }
+
+  tab.remove(basic);
+  Debug("gaussianElimConstructTableRow") << "6 gaussianElimConstructTableRow("<<nid <<", "<< basic<< ")"<<endl;
+
+  if(vec.len < 0 ){
+    Debug("gaussianElimConstructTableRow") << "6 fail 1 gaussianElimConstructTableRow("<<nid <<", "<< basic<< ")"<<endl;
+    return true;
+  }
+  if(tab.size() != ((unsigned)vec.len) ) {
+    Debug("gaussianElimConstructTableRow") << "6 fail 2 gaussianElimConstructTableRow("<<nid <<", "<< basic<< ")"<< tab.size() <<  " " << vec.len << endl;
+    return true;
+  }
+
+  Debug("gaussianElimConstructTableRow") << "7 gaussianElimConstructTableRow("<<nid <<", "<< basic<< ")"<<endl;
+
+  for(int i = 1; i <= vec.len; ++i){
+    int ind = vec.inds[i];
+    double coeff = vec.coeffs[i];
+    ArithVar var = _getArithVar(nid, M, ind);
+    Assert(var != ARITHVAR_SENTINEL);
+    if(!tab.isKey(var)){
+      Debug("gaussianElimConstructTableRow") << "7 fail 1 gaussianElimConstructTableRow("<<nid <<", "<< basic<< ")"<<endl;
+      return true;
+    }
+
+    double est = tab[var].getDouble();
+
+    if(!ApproximateSimplex::roughlyEqual(coeff, est)){
+      Debug("gaussianElimConstructTableRow") << "7 fail 2 gaussianElimConstructTableRow("<<nid <<", "<< basic<< ")"
+           << " boink on " << ind << " " << var << " " << est <<endl;
+      return true;
+    }
+    Debug("gaussianElimConstructTableRow") << var << " cfe " << coeff << endl;
+  }
+
+  Debug("gaussianElimConstructTableRow")
+    << "gaussianElimConstructTableRow("<<nid <<", "<< basic<< ")"
+    << " superduper" << endl;
+
+  return false;
+}
+bool ApproxGLPK::guessCoefficientsConstructTableRow(int nid, int M, const PrimitiveVec& vec){
+  for(size_t i=0; i < d_denomGuesses.size(); ++i){
+    const Integer& D = d_denomGuesses[i];
+    if(!guessCoefficientsConstructTableRow(nid, M, vec, D)){
+      d_stats.d_averageGuesses.addEntry(i+1);
+      Debug("approx::gmi") << "guesseditat " << i << " D=" << D << endl;
+      return false;
+    }
+  }
+  return true;
+}
+bool ApproxGLPK::guessCoefficientsConstructTableRow(int nid, int M, const PrimitiveVec& vec, const Integer& D){
+  ArithVar basic = d_pad.d_basic;
+  DenseMap<Rational>& tab = d_pad.d_tabRow.lhs;
+  tab.purge();
+  d_pad.d_tabRow.rhs = Rational(0);
+  Assert(basic != ARITHVAR_SENTINEL);
+  Assert(tab.empty());
+  Assert(d_pad.d_tabRow.rhs.isZero());
+
+  if(Debug.isOn("guessCoefficientsConstructTableRow")){
+    Debug("guessCoefficientsConstructTableRow")  << "attemptConstructTableRow("<<nid <<", "<< basic<<",...," << D<< ")"<<endl;
+    vec.print(Debug("guessCoefficientsConstructTableRow"));
+    Debug("guessCoefficientsConstructTableRow") << "match " << basic << "("<<d_vars.asNode(basic)<<")"<<endl;
+  }
+
+  tab.set(basic, Rational(-1));
+  for(int i = 1; i <= vec.len; ++i){
+    int ind = vec.inds[i];
+    double coeff = vec.coeffs[i];
+    ArithVar var = _getArithVar(nid, M, ind);
+    if(var == ARITHVAR_SENTINEL){
+      Debug("guessCoefficientsConstructTableRow") << "couldn't find" << ind << " " << M << " " << nid << endl;
+      return true;
+    }
+    Debug("guessCoefficientsConstructTableRow") << "match " << ind << "," << var << "("<<d_vars.asNode(var)<<")"<<endl;
+
+    Rational cfe = estimateWithCFE(coeff, D);
+    tab.set(var, cfe);
+    Debug("guessCoefficientsConstructTableRow") << var << " cfe " << cfe << endl;
+  }
+  if(!guessIsConstructable(tab)){
+    Debug("guessCoefficientsConstructTableRow") << "failed to construct with " << D  << endl;
+    return true;
+  }
+  tab.remove(basic);
+  return false;
+}
+
+/* Maps an ArithVar to either an upper/lower bound */
+bool ApproxGLPK::constructGmiCut(){
+  const DenseMap<Rational>& tabRow = d_pad.d_tabRow.lhs;
+  const DenseMap<ConstraintP>& toBound = d_pad.d_toBound;
+  DenseMap<Rational>& cut = d_pad.d_cut.lhs;
+  std::set<ConstraintP>& explanation = d_pad.d_explanation;
+  Rational& rhs = d_pad.d_cut.rhs;
+
+  DenseMap<Rational>::const_iterator iter, end;
+  Assert(cut.empty());
+
+  // compute beta for a "fake" assignment
+  bool anyInf;
+  DeltaRational dbeta = sumConstraints(tabRow, toBound, &anyInf);
+  const Rational& beta = dbeta.getNoninfinitesimalPart();
+  Debug("approx::gmi") << dbeta << endl;
+  if(anyInf || beta.isIntegral()){ return true; }
+
+  Rational one = Rational(1);
+  Rational fbeta = beta.floor_frac();
+  rhs = fbeta;
+  Assert(fbeta.sgn() > 0);
+  Assert(fbeta < one);
+  Rational one_sub_fbeta = one - fbeta;
+  for(iter = tabRow.begin(), end = tabRow.end(); iter != end; ++iter){
+    ArithVar x = *iter;
+    const Rational& psi = tabRow[x];
+    ConstraintP c = toBound[x];
+    const Rational& bound = c->getValue().getNoninfinitesimalPart();
+    if(d_vars.boundsAreEqual(x)){
+      // do not add a coefficient
+      // implictly substitute the variable w/ its constraint
+      std::pair<ConstraintP, ConstraintP> exp = d_vars.explainEqualBounds(x);
+      explanation.insert(exp.first);
+      if(exp.second != NullConstraint){
+        explanation.insert(exp.second);
+      }
+    }else if(d_vars.isIntegerInput(x) && psi.isIntegral()){
+      // do not add a coefficient
+      // nothing to explain
+      Debug("approx::gmi") << "skipping " << x << endl;
+    }else{
+      explanation.insert(c);
+      Rational phi;
+      Rational alpha = (c->isUpperBound() ? psi : -psi);
+
+      // x - ub <= 0 and lb - x <= 0
+      if(d_vars.isIntegerInput(x)){
+        Assert(!psi.isIntegral());
+        // alpha = slack_sgn * psi
+        Rational falpha = alpha.floor_frac();
+        Assert(falpha.sgn() > 0);
+        Assert(falpha < one);
+        phi = (falpha <= fbeta) ?
+          falpha : ((fbeta / one_sub_fbeta) * (one - falpha));
+      }else{
+        phi = (alpha >= 0) ?
+          alpha : ((fbeta / one_sub_fbeta) * (- alpha));
+      }
+      Assert(phi.sgn() != 0);
+      if(c->isUpperBound()){
+        cut.set(x, -phi);
+        rhs -= phi * bound;
+      }else{
+        cut.set(x, phi);
+        rhs += phi * bound;
+      }
+    }
+  }
+  if(Debug.isOn("approx::gmi")){
+    Debug("approx::gmi") << "pre removeSlackVariables";
+    d_pad.d_cut.print(Debug("approx::gmi"));
+    Debug("approx::gmi") << endl;
+  }
+  removeAuxillaryVariables(d_vars, cut);
+
+  if(Debug.isOn("approx::gmi")){
+    Debug("approx::gmi") << "post removeAuxillaryVariables";
+    d_pad.d_cut.print(Debug("approx::gmi"));
+    Debug("approx::gmi") << endl;
+  }
+  removeFixed(d_vars, d_pad.d_cut, explanation);
+
+  if(Debug.isOn("approx::gmi")){
+    Debug("approx::gmi") << "post removeFixed";
+    d_pad.d_cut.print(Debug("approx::gmi"));
+    Debug("approx::gmi") << endl;
+  }
+  return false;
+}
+
+void ApproxGLPK::tryCut(int nid, CutInfo& cut) throw (RationalFromDoubleException){
+  Assert(!cut.reconstructed());
+  Assert(cut.getKlass() != RowsDeletedKlass);
+  bool failure = false;
+  switch(cut.getKlass()){
+  case GmiCutKlass:
+    failure = attemptGmi(nid, static_cast<const GmiInfo&>(cut));
+    break;
+  case MirCutKlass:
+    failure = attemptMir(nid, static_cast<const MirInfo&>(cut));
+    break;
+  case BranchCutKlass:
+    failure = attemptBranchCut(nid, dynamic_cast<const BranchCutInfo&>(cut));
+    break;
+  default:
+    break;
+  }
+  Assert(failure == d_pad.d_failure);
+
+  if(!failure){
+    // move the pad to the cut
+    cut.setReconstruction(d_pad.d_cut);
+
+    if(cut.getKlass() != BranchCutKlass){
+      std::set<ConstraintP>& exp = d_pad.d_explanation;
+      ConstraintCPVec asvec(exp.begin(), exp.end());
+      cut.swapExplanation(asvec);
+    }
+  }else{
+    Debug("approx") << "failure " << cut.getKlass() << endl;
+  }
+}
+
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+#endif /*#ifdef CVC4_USE_GLPK */
+/* End GPLK implementation. */
diff --git a/src/theory/arith/approx_simplex.h b/src/theory/arith/approx_simplex.h
new file mode 100644
index 0000000..8832fce
--- /dev/null
+++ b/src/theory/arith/approx_simplex.h
@@ -0,0 +1,197 @@
+/*********************                                                        */
+/*! \file approx_simplex.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+
+#include "cvc4_private.h"
+
+#pragma once
+#include <vector>
+
+#include "theory/arith/arithvar.h"
+#include "theory/arith/delta_rational.h"
+#include "util/dense_map.h"
+#include "util/rational.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+enum LinResult {
+  LinUnknown,  /* Unknown error */
+  LinFeasible, /* Relaxation is feasible */
+  LinInfeasible,   /* Relaxation is infeasible/all integer branches closed */
+  LinExhausted
+};
+
+enum MipResult {
+  MipUnknown,  /* Unknown error */
+  MipBingo,    /* Integer feasible */
+  MipClosed,   /* All integer branches closed */
+  BranchesExhausted, /* Exhausted number of branches */
+  PivotsExhauasted,  /* Exhausted number of pivots */
+  ExecExhausted      /* Exhausted total operations */
+};
+std::ostream& operator<<(std::ostream& out, MipResult res);
+
+class ApproximateStatistics {
+public:
+  // IntStat d_relaxCalls;
+  // IntStat d_relaxUnknowns;
+  // IntStat d_relaxFeasible;
+  // IntStat d_relaxInfeasible;
+  // IntStat d_relaxPivotsExhausted;
+
+  // IntStat d_mipCalls;
+  // IntStat d_mipUnknowns;
+  // IntStat d_mipBingo;
+  // IntStat d_mipClosed;
+  // IntStat d_mipBranchesExhausted;
+  // IntStat d_mipPivotsExhausted;
+  // IntStat d_mipExecExhausted;
+
+
+  // IntStat d_gmiGen;
+  // IntStat d_gmiReplay;
+  // IntStat d_mipGen;
+  // IntStat d_mipReplay;
+
+  IntStat d_branchMaxDepth;
+  IntStat d_branchesMaxOnAVar;
+
+  TimerStat d_gaussianElimConstructTime;
+  IntStat d_gaussianElimConstruct;
+  AverageStat d_averageGuesses;
+
+  ApproximateStatistics();
+  ~ApproximateStatistics();
+};
+
+
+class NodeLog;
+class TreeLog;
+class ArithVariables;
+class CutInfo;
+class RowsDeleted;
+
+class ApproximateSimplex{
+protected:
+  const ArithVariables& d_vars;
+  TreeLog& d_log;
+  ApproximateStatistics& d_stats;
+
+  int d_pivotLimit;
+  /* the maximum pivots allowed in a query. */
+
+  int d_branchLimit;
+  /* maximum branches allowed on a variable */
+
+  int d_maxDepth;
+  /* maxmimum branching depth allowed.*/
+
+  static Integer s_defaultMaxDenom;
+  /* Default denominator for diophatine approximation.
+  * 2^{26}*/
+
+public:
+
+  static bool enabled();
+
+  /**
+   * If glpk is enabled, return a subclass that can do something.
+   * If glpk is disabled, return a subclass that does nothing.
+   */
+  static ApproximateSimplex* mkApproximateSimplexSolver(const ArithVariables& vars, TreeLog& l, ApproximateStatistics& s);
+  ApproximateSimplex(const ArithVariables& v, TreeLog& l, ApproximateStatistics& s);
+  virtual ~ApproximateSimplex(){}
+
+  /* the maximum pivots allowed in a query. */
+  void setPivotLimit(int pl);
+
+  /* maximum branches allowed on a variable */
+  void setBranchOnVariableLimit(int bl);
+
+  /* maximum branches allowed on a variable */
+  void setBranchingDepth(int bd);
+
+  /** A result is either sat, unsat or unknown.*/
+  //enum ApproxResult {ApproxError, ApproxSat, ApproxUnsat};
+  struct Solution {
+    DenseSet newBasis;
+    DenseMap<DeltaRational> newValues;
+    Solution() : newBasis(), newValues(){}
+  };
+
+  virtual ArithVar getBranchVar(const NodeLog& nl) const = 0;
+  //virtual void mapRowId(int nid, int ind, ArithVar v) = 0;
+  //virtual void applyRowsDeleted(int nid, const RowsDeleted& rd) = 0;
+
+  /** Sets a maximization criteria for the approximate solver.*/
+  virtual void setOptCoeffs(const ArithRatPairVec& ref) = 0;
+
+  virtual ArithRatPairVec heuristicOptCoeffs() const = 0;
+
+  virtual LinResult solveRelaxation() = 0;
+  virtual Solution extractRelaxation() const throw(RationalFromDoubleException) = 0;
+
+  virtual MipResult solveMIP(bool activelyLog) = 0;
+  virtual Solution extractMIP() const throw(RationalFromDoubleException) = 0;
+
+  virtual std::vector<const CutInfo*> getValidCuts(const NodeLog& node) throw(RationalFromDoubleException) = 0;
+  //virtual std::vector<const NodeLog*> getBranches() = 0;
+
+  //virtual Node downBranchLiteral(const NodeLog& con) const = 0;
+
+  virtual void tryCut(int nid, CutInfo& cut) throw(RationalFromDoubleException) = 0;
+
+  /** UTILITIES FOR DEALING WITH ESTIMATES */
+
+  static const double SMALL_FIXED_DELTA;
+  static const double TOLERENCE;
+
+  /** Returns true if two doubles are roughly equal based on TOLERENCE and SMALL_FIXED_DELTA.*/
+  static bool roughlyEqual(double a, double b);
+
+  /**
+   * Estimates a double as a Rational using continued fraction expansion that
+   * cuts off the estimate once the value is approximately zero.
+   * This is designed for removing rounding artifacts.
+   */
+  static Rational estimateWithCFE(double d) throw(RationalFromDoubleException);
+  static Rational estimateWithCFE(double d, const Integer& D) throw(RationalFromDoubleException);
+
+  /**
+   * Converts a rational to a continued fraction expansion representation
+   * using a maximum number of expansions equal to depth as long as the expression
+   * is not roughlyEqual() to 0.
+   */
+  static std::vector<Integer> rationalToCfe(const Rational& q, int depth);
+
+  /** Converts a continued fraction expansion representation to a rational. */
+  static Rational cfeToRational(const std::vector<Integer>& exp);
+
+  /** Estimates a rational as a continued fraction expansion.*/
+  //static Rational estimateWithCFE(const Rational& q, int depth);
+  static Rational estimateWithCFE(const Rational& q, const Integer& K);
+
+  virtual double sumInfeasibilities(bool mip) const = 0;
+};/* class ApproximateSimplex */
+
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/arith_ite_utils.cpp b/src/theory/arith/arith_ite_utils.cpp
new file mode 100644
index 0000000..6695e64
--- /dev/null
+++ b/src/theory/arith/arith_ite_utils.cpp
@@ -0,0 +1,471 @@
+/*********************                                                        */
+/*! \file arith_ite_utils.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Kshitij Bansal
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/arith/arith_ite_utils.h"
+
+#include <ostream>
+
+#include "base/output.h"
+#include "options/smt_options.h"
+#include "theory/arith/arith_utilities.h"
+#include "theory/arith/normal_form.h"
+#include "theory/ite_utilities.h"
+#include "theory/rewriter.h"
+#include "theory/substitutions.h"
+#include "theory/theory_model.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+Node ArithIteUtils::applyReduceVariablesInItes(Node n){
+  NodeBuilder<> nb(n.getKind());
+  if(n.getMetaKind() == kind::metakind::PARAMETERIZED) {
+    nb << (n.getOperator());
+  }
+  for(Node::iterator it = n.begin(), end = n.end(); it != end; ++it){
+    nb << reduceVariablesInItes(*it);
+  }
+  Node res = nb;
+  return res;
+}
+
+Node ArithIteUtils::reduceVariablesInItes(Node n){
+  using namespace CVC4::kind;
+  if(d_reduceVar.find(n) != d_reduceVar.end()){
+    Node res = d_reduceVar[n];
+    return res.isNull() ? n : res;
+  }
+
+  switch(n.getKind()){
+  case ITE:{
+    Node c = n[0], t = n[1], e = n[2];
+    if(n.getType().isReal()){
+      Node rc = reduceVariablesInItes(c);
+      Node rt = reduceVariablesInItes(t);
+      Node re = reduceVariablesInItes(e);
+
+      Node vt = d_varParts[t];
+      Node ve = d_varParts[e];
+      Node vpite = (vt == ve) ? vt : Node::null();
+
+      if(vpite.isNull()){
+        Node rite = rc.iteNode(rt, re);
+        // do not apply
+        d_reduceVar[n] = rite;
+        d_constants[n] = mkRationalNode(Rational(0));
+        d_varParts[n] = rite; // treat the ite as a variable
+        return rite;
+      }else{
+        NodeManager* nm = NodeManager::currentNM();
+        Node constantite = rc.iteNode(d_constants[t], d_constants[e]);
+        Node sum = nm->mkNode(kind::PLUS, vpite, constantite);
+        d_reduceVar[n] = sum;
+        d_constants[n] = constantite;
+        d_varParts[n] = vpite;
+        return sum;
+      }
+    }else{ // non-arith ite
+      if(!d_contains.containsTermITE(n)){
+        // don't bother adding to d_reduceVar
+        return n;
+      }else{
+        Node newIte = applyReduceVariablesInItes(n);
+        d_reduceVar[n] = (n == newIte) ? Node::null(): newIte;
+        return newIte;
+      }
+    }
+  }break;
+  default:
+    if(n.getType().isReal() && Polynomial::isMember(n)){
+      Node newn = Node::null();
+      if(!d_contains.containsTermITE(n)){
+        newn = n;
+      }else if(n.getNumChildren() > 0){
+        newn = applyReduceVariablesInItes(n);
+        newn = Rewriter::rewrite(newn);
+        Assert(Polynomial::isMember(newn));
+      }else{
+        newn = n;
+      }
+
+      Polynomial p = Polynomial::parsePolynomial(newn);
+      if(p.isConstant()){
+        d_constants[n] = newn;
+        d_varParts[n] = mkRationalNode(Rational(0));
+        // don't bother adding to d_reduceVar
+        return newn;
+      }else if(!p.containsConstant()){
+        d_constants[n] = mkRationalNode(Rational(0));
+        d_varParts[n] = newn;
+        d_reduceVar[n] = p.getNode();
+        return p.getNode();
+      }else{
+        Monomial mc = p.getHead();
+        d_constants[n] = mc.getConstant().getNode();
+        d_varParts[n] = p.getTail().getNode();
+        d_reduceVar[n] = newn;
+        return newn;
+      }
+    }else{
+      if(!d_contains.containsTermITE(n)){
+        return n;
+      }
+      if(n.getNumChildren() > 0){
+        Node res = applyReduceVariablesInItes(n);
+        d_reduceVar[n] = res;
+        return res;
+      }else{
+        return n;
+      }
+    }
+    break;
+  }
+  Unreachable();
+  return Node::null();
+}
+
+ArithIteUtils::ArithIteUtils(ContainsTermITEVisitor& contains,
+                             context::Context* uc,
+                             TheoryModel* model)
+  : d_contains(contains)
+  , d_subs(NULL)
+  , d_model(model)
+  , d_one(1)
+  , d_subcount(uc, 0)
+  , d_skolems(uc)
+  , d_implies()
+  , d_skolemsAdded()
+  , d_orBinEqs()
+{
+  d_subs = new SubstitutionMap(uc);
+}
+
+ArithIteUtils::~ArithIteUtils(){
+  delete d_subs;
+  d_subs = NULL;
+}
+
+void ArithIteUtils::clear(){
+  d_reduceVar.clear();
+  d_constants.clear();
+  d_varParts.clear();
+}
+
+const Integer& ArithIteUtils::gcdIte(Node n){
+  if(d_gcds.find(n) != d_gcds.end()){
+    return d_gcds[n];
+  }
+  if(n.getKind() == kind::CONST_RATIONAL){
+    const Rational& q = n.getConst<Rational>();
+    if(q.isIntegral()){
+      d_gcds[n] = q.getNumerator();
+      return d_gcds[n];
+    }else{
+      return d_one;
+    }
+  }else if(n.getKind() == kind::ITE && n.getType().isReal()){
+    const Integer& tgcd = gcdIte(n[1]);
+    if(tgcd.isOne()){
+      d_gcds[n] = d_one;
+      return d_one;
+    }else{
+      const Integer& egcd = gcdIte(n[2]);
+      Integer ite_gcd = tgcd.gcd(egcd);
+      d_gcds[n] = ite_gcd;
+      return d_gcds[n];
+    }
+  }
+  return d_one;
+}
+
+Node ArithIteUtils::reduceIteConstantIteByGCD_rec(Node n, const Rational& q){
+  if(n.isConst()){
+    Assert(n.getKind() == kind::CONST_RATIONAL);
+    return mkRationalNode(n.getConst<Rational>() * q);
+  }else{
+    Assert(n.getKind() == kind::ITE);
+    Assert(n.getType().isInteger());
+    Node rc = reduceConstantIteByGCD(n[0]);
+    Node rt = reduceIteConstantIteByGCD_rec(n[1], q);
+    Node re = reduceIteConstantIteByGCD_rec(n[2], q);
+    return rc.iteNode(rt, re);
+  }
+}
+
+Node ArithIteUtils::reduceIteConstantIteByGCD(Node n){
+  Assert(n.getKind() == kind::ITE);
+  Assert(n.getType().isReal());
+  const Integer& gcd = gcdIte(n);
+  if(gcd.isOne()){
+    Node newIte = reduceConstantIteByGCD(n[0]).iteNode(n[1],n[2]);
+    d_reduceGcd[n] = newIte;
+    return newIte;
+  }else if(gcd.isZero()){
+    Node zeroNode = mkRationalNode(Rational(0));
+    d_reduceGcd[n] = zeroNode;
+    return zeroNode;
+  }else{
+    Rational divBy(Integer(1), gcd);
+    Node redite = reduceIteConstantIteByGCD_rec(n, divBy);
+    Node gcdNode = mkRationalNode(Rational(gcd));
+    Node multIte = NodeManager::currentNM()->mkNode(kind::MULT, gcdNode, redite);
+    d_reduceGcd[n] = multIte;
+    return multIte;
+  }
+}
+
+Node ArithIteUtils::reduceConstantIteByGCD(Node n){
+  if(d_reduceGcd.find(n) != d_reduceGcd.end()){
+    return d_reduceGcd[n];
+  }
+  if(n.getKind() == kind::ITE && n.getType().isReal()){
+    return reduceIteConstantIteByGCD(n);
+  }
+
+  if(n.getNumChildren() > 0){
+    NodeBuilder<> nb(n.getKind());
+    if(n.getMetaKind() == kind::metakind::PARAMETERIZED) {
+      nb << (n.getOperator());
+    }
+    bool anychange = false;
+    for(Node::iterator it = n.begin(), end = n.end(); it != end; ++it){
+      Node child = *it;
+      Node redchild = reduceConstantIteByGCD(child);
+      anychange = anychange || (child != redchild);
+      nb << redchild;
+    }
+    if(anychange){
+      Node res = nb;
+      d_reduceGcd[n] = res;
+      return res;
+    }else{
+      d_reduceGcd[n] = n;
+      return n;
+    }
+  }else{
+    return n;
+  }
+}
+
+unsigned ArithIteUtils::getSubCount() const{
+  return d_subcount;
+}
+
+void ArithIteUtils::addSubstitution(TNode f, TNode t){
+  Debug("arith::ite") << "adding " << f << " -> " << t << endl;
+  d_subcount = d_subcount + 1;
+  d_subs->addSubstitution(f, t);
+  d_model->addSubstitution(f, t);
+}
+
+Node ArithIteUtils::applySubstitutions(TNode f){
+  AlwaysAssert(!options::incrementalSolving());
+  return d_subs->apply(f);
+}
+
+Node ArithIteUtils::selectForCmp(Node n) const{
+  if(n.getKind() == kind::ITE){
+    if(d_skolems.find(n[0]) != d_skolems.end()){
+      return selectForCmp(n[1]);
+    }
+  }
+  return n;
+}
+
+void ArithIteUtils::learnSubstitutions(const std::vector<Node>& assertions){
+  AlwaysAssert(!options::incrementalSolving());
+  for(size_t i=0, N=assertions.size(); i < N; ++i){
+    collectAssertions(assertions[i]);
+  }
+  bool solvedSomething;
+  do{
+    solvedSomething = false;
+    size_t readPos = 0, writePos = 0, N = d_orBinEqs.size();
+    for(; readPos < N; readPos++){
+      Node curr = d_orBinEqs[readPos];
+      bool solved = solveBinOr(curr);
+      if(solved){
+        solvedSomething = true;
+      }else{
+        // didn't solve, push back
+        d_orBinEqs[writePos] = curr;
+        writePos++;
+      }
+    }
+    Assert(writePos <= N);
+    d_orBinEqs.resize(writePos);
+  }while(solvedSomething);
+
+  for(size_t i = 0, N=d_skolemsAdded.size(); i<N; ++i){
+    Node sk = d_skolemsAdded[i];
+    Node to = d_skolems[sk];
+    if(!to.isNull()){
+      Node fp = applySubstitutions(to);
+      addSubstitution(sk, fp);
+    }
+  }
+  d_implies.clear();
+  d_skolemsAdded.clear();
+  d_orBinEqs.clear();
+}
+
+void ArithIteUtils::addImplications(Node x, Node y){
+  // (or x y)
+  // (=> (not x) y)
+  // (=> (not y) x)
+
+  Node xneg = x.negate();
+  Node yneg = y.negate();
+  d_implies[xneg].insert(y);
+  d_implies[yneg].insert(x);
+}
+
+void ArithIteUtils::collectAssertions(TNode assertion){
+  if(assertion.getKind() == kind::OR){
+    if(assertion.getNumChildren() == 2){
+      TNode left = assertion[0], right = assertion[1];
+      addImplications(left, right);
+      if(left.getKind() == kind::EQUAL && right.getKind() == kind::EQUAL){
+        if(left[0].getType().isInteger() && right[0].getType().isInteger()){
+          d_orBinEqs.push_back(assertion);
+        }
+      }
+    }
+  }else if(assertion.getKind() == kind::AND){
+    for(unsigned i=0, N=assertion.getNumChildren(); i < N; ++i){
+      collectAssertions(assertion[i]);
+    }
+  }
+}
+
+Node ArithIteUtils::findIteCnd(TNode tb, TNode fb) const{
+  Node negtb = tb.negate();
+  Node negfb = fb.negate();
+  ImpMap::const_iterator ti = d_implies.find(negtb);
+  ImpMap::const_iterator fi = d_implies.find(negfb);
+
+  if(ti != d_implies.end() && fi != d_implies.end()){
+    const std::set<Node>& negtimp = ti->second;
+    const std::set<Node>& negfimp = fi->second;
+
+    // (or (not x) y)
+    // (or x z)
+    // (or y z)
+    // ---
+    // (ite x y z) return x
+    // ---
+    // (not y) => (not x)
+    // (not z) => x
+    std::set<Node>::const_iterator ci = negtimp.begin(), cend = negtimp.end();
+    for(; ci != cend; ci++){
+      Node impliedByNotTB = *ci;
+      Node impliedByNotTBNeg = impliedByNotTB.negate();
+      if(negfimp.find(impliedByNotTBNeg) != negfimp.end()){
+        return impliedByNotTBNeg; // implies tb
+      }
+    }
+  }
+
+  return Node::null();
+}
+
+bool ArithIteUtils::solveBinOr(TNode binor){
+  Assert(binor.getKind() == kind::OR);
+  Assert(binor.getNumChildren() == 2);
+  Assert(binor[0].getKind() ==  kind::EQUAL);
+  Assert(binor[1].getKind() ==  kind::EQUAL);
+
+  //Node n = 
+  Node n = applySubstitutions(binor);
+  if(n != binor){
+    n = Rewriter::rewrite(n);
+
+    if(!(n.getKind() == kind::OR &&
+	 n.getNumChildren() == 2 &&
+	 n[0].getKind() ==  kind::EQUAL &&
+	 n[1].getKind() ==  kind::EQUAL)){
+      return false;
+    }
+  }
+
+  Assert(n.getKind() == kind::OR);
+  Assert(n.getNumChildren() == 2);
+  TNode l = n[0];
+  TNode r = n[1];
+
+  Assert(l.getKind() ==  kind::EQUAL);
+  Assert(r.getKind() ==  kind::EQUAL);
+
+  Debug("arith::ite") << "bin or " << n << endl;
+
+  bool lArithEq = l.getKind() == kind::EQUAL && l[0].getType().isInteger();
+  bool rArithEq = r.getKind() == kind::EQUAL && r[0].getType().isInteger();
+
+  if(lArithEq && rArithEq){
+    TNode sel = Node::null();
+    TNode otherL = Node::null();
+    TNode otherR = Node::null();
+    if(l[0] == r[0]) {
+      sel = l[0]; otherL = l[1]; otherR = r[1];
+    }else if(l[0] == r[1]){
+      sel = l[0]; otherL = l[1]; otherR = r[0];
+    }else if(l[1] == r[0]){
+      sel = l[1]; otherL = l[0]; otherR = r[1];
+    }else if(l[1] == r[1]){
+      sel = l[1]; otherL = l[0]; otherR = r[0];
+    }
+    Debug("arith::ite") << "selected " << sel << endl;
+    if(sel.isVar() && sel.getKind() != kind::SKOLEM){
+
+      Debug("arith::ite") << "others l:" << otherL << " r " << otherR << endl;
+      Node useForCmpL = selectForCmp(otherL);
+      Node useForCmpR = selectForCmp(otherR);
+
+      Assert(Polynomial::isMember(sel));
+      Assert(Polynomial::isMember(useForCmpL));
+      Assert(Polynomial::isMember(useForCmpR));
+      Polynomial lside = Polynomial::parsePolynomial( useForCmpL );
+      Polynomial rside = Polynomial::parsePolynomial( useForCmpR );
+      Polynomial diff = lside-rside;
+
+      Debug("arith::ite") << "diff: " << diff.getNode() << endl;
+      if(diff.isConstant()){
+        // a: (sel = otherL) or (sel = otherR), otherL-otherR = c
+
+        NodeManager* nm = NodeManager::currentNM();
+
+        Node cnd = findIteCnd(binor[0], binor[1]);
+
+        Node sk = nm->mkSkolem("deor", nm->booleanType());
+        Node ite = sk.iteNode(otherL, otherR);
+        d_skolems.insert(sk, cnd);
+        d_skolemsAdded.push_back(sk);
+        addSubstitution(sel, ite);
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/arith_ite_utils.h b/src/theory/arith/arith_ite_utils.h
new file mode 100644
index 0000000..44c3c08
--- /dev/null
+++ b/src/theory/arith/arith_ite_utils.h
@@ -0,0 +1,117 @@
+/*********************                                                        */
+/*! \file arith_ite_utils.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+
+
+
+
+
+// Pass 1: label the ite as (constant) or (+ constant variable)
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__ARITH__ARITH_ITE_UTILS_H
+#define __CVC4__THEORY__ARITH__ARITH_ITE_UTILS_H
+
+#include "expr/node.h"
+#include <ext/hash_map>
+#include <ext/hash_set>
+#include "context/cdo.h"
+#include "context/cdtrail_hashmap.h"
+
+namespace CVC4 {
+namespace theory {
+class ContainsTermITEVisitor;
+class SubstitutionMap;
+class TheoryModel;
+
+namespace arith {
+
+class ArithIteUtils {
+  ContainsTermITEVisitor& d_contains;
+  SubstitutionMap* d_subs;
+  TheoryModel* d_model;
+
+  typedef std::hash_map<Node, Node, NodeHashFunction> NodeMap;
+  // cache for reduce vars
+  NodeMap d_reduceVar; // if reduceVars[n].isNull(), treat reduceVars[n] == n
+
+  // reduceVars[n] = d_constants[n] + d_varParts[n]
+  NodeMap d_constants; // d_constants[n] is a constant ite tree
+  NodeMap d_varParts; // d_varParts[n] is a polynomial
+
+
+  NodeMap d_reduceGcd;
+  typedef std::hash_map<Node, Integer, NodeHashFunction> NodeIntegerMap;
+  NodeIntegerMap d_gcds;
+
+  Integer d_one;
+
+  context::CDO<unsigned> d_subcount;
+  typedef context::CDTrailHashMap<Node, Node, NodeHashFunction> CDNodeMap;
+  CDNodeMap d_skolems;
+
+  typedef std::map<Node, std::set<Node> > ImpMap;
+  ImpMap d_implies;
+
+  std::vector<Node> d_skolemsAdded;
+
+  std::vector<Node> d_orBinEqs;
+
+public:
+  ArithIteUtils(ContainsTermITEVisitor& contains,
+                context::Context* userContext,
+                TheoryModel* model);
+  ~ArithIteUtils();
+
+  //(ite ?v_2 ?v_1 (ite ?v_3 (- ?v_1 128) (- ?v_1 256)))
+
+  /** removes common sums variables sums from term ites. */
+  Node reduceVariablesInItes(Node n);
+
+  Node reduceConstantIteByGCD(Node n);
+
+  void clear();
+
+  Node applySubstitutions(TNode f);
+  unsigned getSubCount() const;
+
+  void learnSubstitutions(const std::vector<Node>& assertions);
+
+private:
+  /* applies this to all children of n and constructs the result */
+  Node applyReduceVariablesInItes(Node n);
+
+  const Integer& gcdIte(Node n);
+  Node reduceIteConstantIteByGCD_rec(Node n, const Rational& q);
+  Node reduceIteConstantIteByGCD(Node n);
+
+  void addSubstitution(TNode f, TNode t);
+  Node selectForCmp(Node n) const;
+
+  void collectAssertions(TNode assertion);
+  void addImplications(Node x, Node y);
+  Node findIteCnd(TNode tb, TNode fb) const;
+  bool solveBinOr(TNode binor);
+
+}; /* class ArithIteUtils */
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__ARITH__ARITH_ITE_UTILS_H */
diff --git a/src/theory/arith/arith_rewriter.cpp b/src/theory/arith/arith_rewriter.cpp
new file mode 100644
index 0000000..642216b
--- /dev/null
+++ b/src/theory/arith/arith_rewriter.cpp
@@ -0,0 +1,530 @@
+/*********************                                                        */
+/*! \file arith_rewriter.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include <set>
+#include <stack>
+#include <vector>
+
+#include "smt/logic_exception.h"
+#include "theory/arith/arith_rewriter.h"
+#include "theory/arith/arith_utilities.h"
+#include "theory/arith/normal_form.h"
+#include "theory/theory.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+bool ArithRewriter::isAtom(TNode n) {
+  Kind k = n.getKind();
+  return arith::isRelationOperator(k) || k == kind::IS_INTEGER
+      || k == kind::DIVISIBLE;
+}
+
+RewriteResponse ArithRewriter::rewriteConstant(TNode t){
+  Assert(t.isConst());
+  Assert(t.getKind() == kind::CONST_RATIONAL);
+
+  return RewriteResponse(REWRITE_DONE, t);
+}
+
+RewriteResponse ArithRewriter::rewriteVariable(TNode t){
+  Assert(t.isVar());
+
+  return RewriteResponse(REWRITE_DONE, t);
+}
+
+RewriteResponse ArithRewriter::rewriteMinus(TNode t, bool pre){
+  Assert(t.getKind()== kind::MINUS);
+
+  if(pre){
+    if(t[0] == t[1]){
+      Rational zero(0);
+      Node zeroNode  = mkRationalNode(zero);
+      return RewriteResponse(REWRITE_DONE, zeroNode);
+    }else{
+      Node noMinus = makeSubtractionNode(t[0],t[1]);
+      return RewriteResponse(REWRITE_DONE, noMinus);
+    }
+  }else{
+    Polynomial minuend = Polynomial::parsePolynomial(t[0]);
+    Polynomial subtrahend = Polynomial::parsePolynomial(t[1]);
+    Polynomial diff = minuend - subtrahend;
+    return RewriteResponse(REWRITE_DONE, diff.getNode());
+  }
+}
+
+RewriteResponse ArithRewriter::rewriteUMinus(TNode t, bool pre){
+  Assert(t.getKind()== kind::UMINUS);
+
+  if(t[0].getKind() == kind::CONST_RATIONAL){
+    Rational neg = -(t[0].getConst<Rational>());
+    return RewriteResponse(REWRITE_DONE, mkRationalNode(neg));
+  }
+
+  Node noUminus = makeUnaryMinusNode(t[0]);
+  if(pre)
+    return RewriteResponse(REWRITE_DONE, noUminus);
+  else
+    return RewriteResponse(REWRITE_AGAIN, noUminus);
+}
+
+RewriteResponse ArithRewriter::preRewriteTerm(TNode t){
+  if(t.isConst()){
+    return rewriteConstant(t);
+  }else if(t.isVar()){
+    return rewriteVariable(t);
+  }else{
+    switch(Kind k = t.getKind()){
+    case kind::MINUS:
+      return rewriteMinus(t, true);
+    case kind::UMINUS:
+      return rewriteUMinus(t, true);
+    case kind::DIVISION:
+    case kind::DIVISION_TOTAL:
+      return rewriteDiv(t,true);
+    case kind::PLUS:
+      return preRewritePlus(t);
+    case kind::MULT:
+      return preRewriteMult(t);
+    case kind::INTS_DIVISION:
+    case kind::INTS_MODULUS:
+      return RewriteResponse(REWRITE_DONE, t);
+    case kind::INTS_DIVISION_TOTAL:
+    case kind::INTS_MODULUS_TOTAL:
+      return rewriteIntsDivModTotal(t,true);
+    case kind::ABS:
+      if(t[0].isConst()) {
+        const Rational& rat = t[0].getConst<Rational>();
+        if(rat >= 0) {
+          return RewriteResponse(REWRITE_DONE, t[0]);
+        } else {
+          return RewriteResponse(REWRITE_DONE,
+                                 NodeManager::currentNM()->mkConst(-rat));
+        }
+      }
+      return RewriteResponse(REWRITE_DONE, t);
+    case kind::IS_INTEGER:
+    case kind::TO_INTEGER:
+      return RewriteResponse(REWRITE_DONE, t);
+    case kind::TO_REAL:
+      return RewriteResponse(REWRITE_DONE, t[0]);
+    case kind::POW:
+      return RewriteResponse(REWRITE_DONE, t);
+    default:
+      Unhandled(k);
+    }
+  }
+}
+
+RewriteResponse ArithRewriter::postRewriteTerm(TNode t){
+  if(t.isConst()){
+    return rewriteConstant(t);
+  }else if(t.isVar()){
+    return rewriteVariable(t);
+  }else{
+    switch(t.getKind()){
+    case kind::MINUS:
+      return rewriteMinus(t, false);
+    case kind::UMINUS:
+      return rewriteUMinus(t, false);
+    case kind::DIVISION:
+    case kind::DIVISION_TOTAL:
+      return rewriteDiv(t, false);
+    case kind::PLUS:
+      return postRewritePlus(t);
+    case kind::MULT:
+      return postRewriteMult(t);
+    case kind::INTS_DIVISION:
+    case kind::INTS_MODULUS:
+      return RewriteResponse(REWRITE_DONE, t);
+    case kind::INTS_DIVISION_TOTAL:
+    case kind::INTS_MODULUS_TOTAL:
+      return rewriteIntsDivModTotal(t, false);
+    case kind::ABS:
+      if(t[0].isConst()) {
+        const Rational& rat = t[0].getConst<Rational>();
+        if(rat >= 0) {
+          return RewriteResponse(REWRITE_DONE, t[0]);
+        } else {
+          return RewriteResponse(REWRITE_DONE,
+                                 NodeManager::currentNM()->mkConst(-rat));
+        }
+      }
+    case kind::TO_REAL:
+      return RewriteResponse(REWRITE_DONE, t[0]);
+    case kind::TO_INTEGER:
+      if(t[0].isConst()) {
+        return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(Rational(t[0].getConst<Rational>().floor())));
+      }
+      if(t[0].getType().isInteger()) {
+        return RewriteResponse(REWRITE_DONE, t[0]);
+      }
+      //Unimplemented("TO_INTEGER, nonconstant");
+      //return rewriteToInteger(t);
+      return RewriteResponse(REWRITE_DONE, t);
+    case kind::IS_INTEGER:
+      if(t[0].isConst()) {
+        return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(t[0].getConst<Rational>().getDenominator() == 1));
+      }
+      if(t[0].getType().isInteger()) {
+        return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(true));
+      }
+      //Unimplemented("IS_INTEGER, nonconstant");
+      //return rewriteIsInteger(t);
+      return RewriteResponse(REWRITE_DONE, t);
+    case kind::POW:
+      {
+        if(t[1].getKind() == kind::CONST_RATIONAL){
+          const Rational& exp = t[1].getConst<Rational>();
+          TNode base = t[0];
+          if(exp.sgn() == 0){
+            return RewriteResponse(REWRITE_DONE, mkRationalNode(Rational(1)));
+          }else if(exp.sgn() > 0 && exp.isIntegral()){
+            Integer num = exp.getNumerator();
+            NodeBuilder<> nb(kind::MULT);
+            Integer one(1);
+            for(Integer i(0); i < num; i = i + one){
+              nb << base;
+            }
+            Assert(nb.getNumChildren() > 0);
+            Node mult = nb;
+            return RewriteResponse(REWRITE_AGAIN, mult);
+          }
+        }
+
+        // Todo improve the exception thrown
+        std::stringstream ss;
+        ss << "The POW(^) operator can only be used with a natural number ";
+        ss << "in the exponent.  Exception occured in:" << std::endl;
+        ss << "  " << t;
+        throw LogicException(ss.str());
+      }
+    default:
+      Unreachable();
+    }
+  }
+}
+
+
+RewriteResponse ArithRewriter::preRewriteMult(TNode t){
+  Assert(t.getKind()== kind::MULT);
+
+  if(t.getNumChildren() == 2){
+    if(t[0].getKind() == kind::CONST_RATIONAL
+       && t[0].getConst<Rational>().isOne()){
+      return RewriteResponse(REWRITE_DONE, t[1]);
+    }
+    if(t[1].getKind() == kind::CONST_RATIONAL
+       && t[1].getConst<Rational>().isOne()){
+      return RewriteResponse(REWRITE_DONE, t[0]);
+    }
+  }
+
+  // Rewrite multiplications with a 0 argument and to 0
+  for(TNode::iterator i = t.begin(); i != t.end(); ++i) {
+    if((*i).getKind() == kind::CONST_RATIONAL) {
+      if((*i).getConst<Rational>().isZero()) {
+        TNode zero = (*i);
+        return RewriteResponse(REWRITE_DONE, zero);
+      }
+    }
+  }
+  return RewriteResponse(REWRITE_DONE, t);
+}
+
+static bool canFlatten(Kind k, TNode t){
+  for(TNode::iterator i = t.begin(); i != t.end(); ++i) {
+    TNode child = *i;
+    if(child.getKind() == k){
+      return true;
+    }
+  }
+  return false;
+}
+
+static void flatten(std::vector<TNode>& pb, Kind k, TNode t){
+  if(t.getKind() == k){
+    for(TNode::iterator i = t.begin(); i != t.end(); ++i) {
+      TNode child = *i;
+      if(child.getKind() == k){
+        flatten(pb, k, child);
+      }else{
+        pb.push_back(child);
+      }
+    }
+  }else{
+    pb.push_back(t);
+  }
+}
+
+static Node flatten(Kind k, TNode t){
+  std::vector<TNode> pb;
+  flatten(pb, k, t);
+  Assert(pb.size() >= 2);
+  return NodeManager::currentNM()->mkNode(k, pb);
+}
+
+RewriteResponse ArithRewriter::preRewritePlus(TNode t){
+  Assert(t.getKind()== kind::PLUS);
+
+  if(canFlatten(kind::PLUS, t)){
+    return RewriteResponse(REWRITE_DONE, flatten(kind::PLUS, t));
+  }else{
+    return RewriteResponse(REWRITE_DONE, t);
+  }
+}
+
+RewriteResponse ArithRewriter::postRewritePlus(TNode t){
+  Assert(t.getKind()== kind::PLUS);
+
+  std::vector<Monomial> monomials;
+  std::vector<Polynomial> polynomials;
+
+  for(TNode::iterator i = t.begin(), end = t.end(); i != end; ++i){
+    TNode curr = *i;
+    if(Monomial::isMember(curr)){
+      monomials.push_back(Monomial::parseMonomial(curr));
+    }else{
+      polynomials.push_back(Polynomial::parsePolynomial(curr));
+    }
+  }
+
+  if(!monomials.empty()){
+    Monomial::sort(monomials);
+    Monomial::combineAdjacentMonomials(monomials);
+    polynomials.push_back(Polynomial::mkPolynomial(monomials));
+  }
+
+  Polynomial res = Polynomial::sumPolynomials(polynomials);
+
+  return RewriteResponse(REWRITE_DONE, res.getNode());
+}
+
+RewriteResponse ArithRewriter::postRewriteMult(TNode t){
+  Assert(t.getKind()== kind::MULT);
+
+  Polynomial res = Polynomial::mkOne();
+
+  for(TNode::iterator i = t.begin(), end = t.end(); i != end; ++i){
+    Node curr = *i;
+    Polynomial currPoly = Polynomial::parsePolynomial(curr);
+
+    res = res * currPoly;
+  }
+
+  return RewriteResponse(REWRITE_DONE, res.getNode());
+}
+
+RewriteResponse ArithRewriter::postRewriteAtom(TNode atom){
+  if(atom.getKind() == kind::IS_INTEGER) {
+    if(atom[0].isConst()) {
+      return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(atom[0].getConst<Rational>().isIntegral()));
+    }
+    if(atom[0].getType().isInteger()) {
+      return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(true));
+    }
+    // not supported, but this isn't the right place to complain
+    return RewriteResponse(REWRITE_DONE, atom);
+  } else if(atom.getKind() == kind::DIVISIBLE) {
+    if(atom[0].isConst()) {
+      return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(bool((atom[0].getConst<Rational>() / atom.getOperator().getConst<Divisible>().k).isIntegral())));
+    }
+    if(atom.getOperator().getConst<Divisible>().k.isOne()) {
+      return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(true));
+    }
+    return RewriteResponse(REWRITE_AGAIN, NodeManager::currentNM()->mkNode(kind::EQUAL, NodeManager::currentNM()->mkNode(kind::INTS_MODULUS_TOTAL, atom[0], NodeManager::currentNM()->mkConst(Rational(atom.getOperator().getConst<Divisible>().k))), NodeManager::currentNM()->mkConst(Rational(0))));
+  }
+
+  // left |><| right
+  TNode left = atom[0];
+  TNode right = atom[1];
+
+  Polynomial pleft = Polynomial::parsePolynomial(left);
+  Polynomial pright = Polynomial::parsePolynomial(right);
+
+  Debug("arith::rewriter") << "pleft " << pleft.getNode() << std::endl;
+  Debug("arith::rewriter") << "pright " << pright.getNode() << std::endl;
+
+  Comparison cmp = Comparison::mkComparison(atom.getKind(), pleft, pright);
+  Assert(cmp.isNormalForm());
+  return RewriteResponse(REWRITE_DONE, cmp.getNode());
+}
+
+RewriteResponse ArithRewriter::preRewriteAtom(TNode atom){
+  Assert(isAtom(atom));
+
+  NodeManager* currNM = NodeManager::currentNM();
+
+  if(atom.getKind() == kind::EQUAL) {
+    if(atom[0] == atom[1]) {
+      return RewriteResponse(REWRITE_DONE, currNM->mkConst(true));
+    }
+  }else if(atom.getKind() == kind::GT){
+    Node leq = currNM->mkNode(kind::LEQ, atom[0], atom[1]);
+    return RewriteResponse(REWRITE_DONE, currNM->mkNode(kind::NOT, leq));
+  }else if(atom.getKind() == kind::LT){
+    Node geq = currNM->mkNode(kind::GEQ, atom[0], atom[1]);
+    return RewriteResponse(REWRITE_DONE, currNM->mkNode(kind::NOT, geq));
+  }else if(atom.getKind() == kind::IS_INTEGER){
+    if(atom[0].getType().isInteger()){
+      return RewriteResponse(REWRITE_DONE, currNM->mkConst(true));
+    }
+  }else if(atom.getKind() == kind::DIVISIBLE){
+    if(atom.getOperator().getConst<Divisible>().k.isOne()){
+      return RewriteResponse(REWRITE_DONE, currNM->mkConst(true));
+    }
+  }
+
+  return RewriteResponse(REWRITE_DONE, atom);
+}
+
+RewriteResponse ArithRewriter::postRewrite(TNode t){
+  if(isTerm(t)){
+    RewriteResponse response = postRewriteTerm(t);
+    if(Debug.isOn("arith::rewriter") && response.status == REWRITE_DONE) {
+      Polynomial::parsePolynomial(response.node);
+    }
+    return response;
+  }else if(isAtom(t)){
+    RewriteResponse response = postRewriteAtom(t);
+    if(Debug.isOn("arith::rewriter") && response.status == REWRITE_DONE) {
+      Comparison::parseNormalForm(response.node);
+    }
+    return response;
+  }else{
+    Unreachable();
+    return RewriteResponse(REWRITE_DONE, Node::null());
+  }
+}
+
+RewriteResponse ArithRewriter::preRewrite(TNode t){
+  if(isTerm(t)){
+    return preRewriteTerm(t);
+  }else if(isAtom(t)){
+    return preRewriteAtom(t);
+  }else{
+    Unreachable();
+    return RewriteResponse(REWRITE_DONE, Node::null());
+  }
+}
+
+Node ArithRewriter::makeUnaryMinusNode(TNode n){
+  Rational qNegOne(-1);
+  return NodeManager::currentNM()->mkNode(kind::MULT, mkRationalNode(qNegOne),n);
+}
+
+Node ArithRewriter::makeSubtractionNode(TNode l, TNode r){
+  Node negR = makeUnaryMinusNode(r);
+  Node diff = NodeManager::currentNM()->mkNode(kind::PLUS, l, negR);
+
+  return diff;
+}
+
+RewriteResponse ArithRewriter::rewriteDiv(TNode t, bool pre){
+  Assert(t.getKind() == kind::DIVISION_TOTAL || t.getKind()== kind::DIVISION);
+
+
+  Node left = t[0];
+  Node right = t[1];
+  if(right.getKind() == kind::CONST_RATIONAL){
+    const Rational& den = right.getConst<Rational>();
+
+    if(den.isZero()){
+      if(t.getKind() == kind::DIVISION_TOTAL){
+        return RewriteResponse(REWRITE_DONE, mkRationalNode(0));
+      }else{
+        // This is unsupported, but this is not a good place to complain
+        return RewriteResponse(REWRITE_DONE, t);
+      }
+    }
+    Assert(den != Rational(0));
+
+    if(left.getKind() == kind::CONST_RATIONAL){
+      const Rational& num = left.getConst<Rational>();
+      Rational div = num / den;
+      Node result =  mkRationalNode(div);
+      return RewriteResponse(REWRITE_DONE, result);
+    }
+
+    Rational div = den.inverse();
+
+    Node result = mkRationalNode(div);
+
+    Node mult = NodeManager::currentNM()->mkNode(kind::MULT,left,result);
+    if(pre){
+      return RewriteResponse(REWRITE_DONE, mult);
+    }else{
+      return RewriteResponse(REWRITE_AGAIN, mult);
+    }
+  }else{
+    return RewriteResponse(REWRITE_DONE, t);
+  }
+}
+
+RewriteResponse ArithRewriter::rewriteIntsDivModTotal(TNode t, bool pre){
+  Kind k = t.getKind();
+  // Assert(k == kind::INTS_MODULUS || k == kind::INTS_MODULUS_TOTAL ||
+  //        k == kind::INTS_DIVISION || k == kind::INTS_DIVISION_TOTAL);
+
+  //Leaving the function as before (INTS_MODULUS can be handled),
+  // but restricting its use here
+  Assert(k == kind::INTS_MODULUS_TOTAL || k == kind::INTS_DIVISION_TOTAL);
+  TNode n = t[0], d = t[1];
+  bool dIsConstant = d.getKind() == kind::CONST_RATIONAL;
+  if(dIsConstant && d.getConst<Rational>().isZero()){
+    if(k == kind::INTS_MODULUS_TOTAL || k == kind::INTS_DIVISION_TOTAL){
+      return RewriteResponse(REWRITE_DONE, mkRationalNode(0));
+    }else{
+      // Do nothing for k == INTS_MODULUS
+      return RewriteResponse(REWRITE_DONE, t);
+    }
+  }else if(dIsConstant && d.getConst<Rational>().isOne()){
+    if(k == kind::INTS_MODULUS || k == kind::INTS_MODULUS_TOTAL){
+      return RewriteResponse(REWRITE_DONE, mkRationalNode(0));
+    }else{
+      Assert(k == kind::INTS_DIVISION || k == kind::INTS_DIVISION_TOTAL);
+      return RewriteResponse(REWRITE_AGAIN, n);
+    }
+  }else if(dIsConstant && d.getConst<Rational>().isNegativeOne()){
+    if(k == kind::INTS_MODULUS || k == kind::INTS_MODULUS_TOTAL){
+      return RewriteResponse(REWRITE_DONE, mkRationalNode(0));
+    }else{
+      Assert(k == kind::INTS_DIVISION || k == kind::INTS_DIVISION_TOTAL);
+      return RewriteResponse(REWRITE_AGAIN, NodeManager::currentNM()->mkNode(kind::UMINUS, n));
+    }
+  }else if(dIsConstant && n.getKind() == kind::CONST_RATIONAL){
+    Assert(d.getConst<Rational>().isIntegral());
+    Assert(n.getConst<Rational>().isIntegral());
+    Assert(!d.getConst<Rational>().isZero());
+    Integer di = d.getConst<Rational>().getNumerator();
+    Integer ni = n.getConst<Rational>().getNumerator();
+
+    bool isDiv = (k == kind::INTS_DIVISION || k == kind::INTS_DIVISION_TOTAL);
+
+    Integer result = isDiv ? ni.euclidianDivideQuotient(di) : ni.euclidianDivideRemainder(di);
+
+    Node resultNode = mkRationalNode(Rational(result));
+    return RewriteResponse(REWRITE_DONE, resultNode);
+  }else{
+    return RewriteResponse(REWRITE_DONE, t);
+  }
+}
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/arith_rewriter.h b/src/theory/arith/arith_rewriter.h
new file mode 100644
index 0000000..3cb5022
--- /dev/null
+++ b/src/theory/arith/arith_rewriter.h
@@ -0,0 +1,77 @@
+/*********************                                                        */
+/*! \file arith_rewriter.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Dejan Jovanovic, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Rewriter for arithmetic.
+ **
+ ** Rewriter for the theory of arithmetic.  This rewrites to the normal form for
+ ** arithmetic. See theory/arith/normal_form.h for more information.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__ARITH__ARITH_REWRITER_H
+#define __CVC4__THEORY__ARITH__ARITH_REWRITER_H
+
+#include "theory/theory.h"
+#include "theory/rewriter.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+class ArithRewriter {
+public:
+
+  static RewriteResponse preRewrite(TNode n);
+  static RewriteResponse postRewrite(TNode n);
+
+  static void init() { }
+
+  static void shutdown() { }
+
+private:
+
+  static Node makeSubtractionNode(TNode l, TNode r);
+  static Node makeUnaryMinusNode(TNode n);
+
+  static RewriteResponse preRewriteTerm(TNode t);
+  static RewriteResponse postRewriteTerm(TNode t);
+
+  static RewriteResponse rewriteVariable(TNode t);
+  static RewriteResponse rewriteConstant(TNode t);
+  static RewriteResponse rewriteMinus(TNode t, bool pre);
+  static RewriteResponse rewriteUMinus(TNode t, bool pre);
+  static RewriteResponse rewriteDiv(TNode t, bool pre);
+  static RewriteResponse rewriteIntsDivModTotal(TNode t, bool pre);
+
+  static RewriteResponse preRewritePlus(TNode t);
+  static RewriteResponse postRewritePlus(TNode t);
+
+  static RewriteResponse preRewriteMult(TNode t);
+  static RewriteResponse postRewriteMult(TNode t);
+
+
+  static RewriteResponse preRewriteAtom(TNode t);
+  static RewriteResponse postRewriteAtom(TNode t);
+
+  static bool isAtom(TNode n);
+
+  static inline bool isTerm(TNode n) {
+    return !isAtom(n);
+  }
+
+};/* class ArithRewriter */
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__ARITH__ARITH_REWRITER_H */
diff --git a/src/theory/arith/arith_static_learner.cpp b/src/theory/arith/arith_static_learner.cpp
new file mode 100644
index 0000000..7c648c9
--- /dev/null
+++ b/src/theory/arith/arith_static_learner.cpp
@@ -0,0 +1,279 @@
+/*********************                                                        */
+/*! \file arith_static_learner.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Dejan Jovanovic, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include <vector>
+
+#include "base/output.h"
+#include "expr/convenience_node_builders.h"
+#include "expr/expr.h"
+#include "options/arith_options.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/arith/arith_static_learner.h"
+#include "theory/arith/arith_utilities.h"
+#include "theory/arith/normal_form.h"
+#include "theory/rewriter.h"
+
+using namespace std;
+using namespace CVC4::kind;
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+
+ArithStaticLearner::ArithStaticLearner(context::Context* userContext) :
+  d_minMap(userContext),
+  d_maxMap(userContext),
+  d_statistics()
+{
+}
+
+ArithStaticLearner::~ArithStaticLearner(){
+}
+
+ArithStaticLearner::Statistics::Statistics():
+  d_iteMinMaxApplications("theory::arith::iteMinMaxApplications", 0),
+  d_iteConstantApplications("theory::arith::iteConstantApplications", 0)
+{
+  smtStatisticsRegistry()->registerStat(&d_iteMinMaxApplications);
+  smtStatisticsRegistry()->registerStat(&d_iteConstantApplications);
+}
+
+ArithStaticLearner::Statistics::~Statistics(){
+  smtStatisticsRegistry()->unregisterStat(&d_iteMinMaxApplications);
+  smtStatisticsRegistry()->unregisterStat(&d_iteConstantApplications);
+}
+
+void ArithStaticLearner::staticLearning(TNode n, NodeBuilder<>& learned){
+
+  vector<TNode> workList;
+  workList.push_back(n);
+  TNodeSet processed;
+
+  //Contains an underapproximation of nodes that must hold.
+  TNodeSet defTrue;
+
+  defTrue.insert(n);
+
+  while(!workList.empty()) {
+    n = workList.back();
+
+    bool unprocessedChildren = false;
+    for(TNode::iterator i = n.begin(), iend = n.end(); i != iend; ++i) {
+      if(processed.find(*i) == processed.end()) {
+        // unprocessed child
+        workList.push_back(*i);
+        unprocessedChildren = true;
+      }
+    }
+    if(n.getKind() == AND && defTrue.find(n) != defTrue.end() ){
+      for(TNode::iterator i = n.begin(), iend = n.end(); i != iend; ++i) {
+        defTrue.insert(*i);
+      }
+    }
+
+    if(unprocessedChildren) {
+      continue;
+    }
+
+    workList.pop_back();
+    // has node n been processed in the meantime ?
+    if(processed.find(n) != processed.end()) {
+      continue;
+    }
+    processed.insert(n);
+
+    process(n,learned, defTrue);
+
+  }
+}
+
+
+void ArithStaticLearner::process(TNode n, NodeBuilder<>& learned, const TNodeSet& defTrue){
+  Debug("arith::static") << "===================== looking at " << n << endl;
+
+  switch(n.getKind()){
+  case ITE:
+    if(n.hasBoundVar()) {
+      // Unsafe with non-ground ITEs; do nothing
+      Debug("arith::static") << "(potentially) non-ground ITE, ignoring..." << endl;
+      break;
+    }
+
+    if(n[0].getKind() != EQUAL &&
+       isRelationOperator(n[0].getKind())  ){
+      iteMinMax(n, learned);
+    }
+
+    if((d_minMap.find(n[1]) != d_minMap.end() && d_minMap.find(n[2]) != d_minMap.end()) ||
+       (d_maxMap.find(n[1]) != d_maxMap.end() && d_maxMap.find(n[2]) != d_maxMap.end())) {
+      iteConstant(n, learned);
+    }
+    break;
+
+  case CONST_RATIONAL:
+    // Mark constants as minmax
+    d_minMap.insert(n, n.getConst<Rational>());
+    d_maxMap.insert(n, n.getConst<Rational>());
+    break;
+  default: // Do nothing
+    break;
+  }
+}
+
+void ArithStaticLearner::iteMinMax(TNode n, NodeBuilder<>& learned){
+  Assert(n.getKind() == kind::ITE);
+  Assert(n[0].getKind() != EQUAL);
+  Assert(isRelationOperator(n[0].getKind()));
+
+  TNode c = n[0];
+  Kind k = oldSimplifiedKind(c);
+  TNode t = n[1];
+  TNode e = n[2];
+  TNode cleft = (c.getKind() == NOT) ? c[0][0] : c[0];
+  TNode cright = (c.getKind() == NOT) ? c[0][1] : c[1];
+
+  if((t == cright) && (e == cleft)){
+    TNode tmp = t;
+    t = e;
+    e = tmp;
+    k = reverseRelationKind(k);
+  }
+  //(ite (< x y) x y)
+  //(ite (x < y) x y)
+  //(ite (x - y < 0) x y)
+  // ----------------
+  // (ite (x - y < -c) )
+
+  if(t == cleft && e == cright){
+    // t == cleft && e == cright
+    Assert( t == cleft );
+    Assert( e == cright );
+    switch(k){
+    case LT:   // (ite (< x y) x y)
+    case LEQ: { // (ite (<= x y) x y)
+      Node nLeqX = NodeBuilder<2>(LEQ) << n << t;
+      Node nLeqY = NodeBuilder<2>(LEQ) << n << e;
+      Debug("arith::static") << n << "is a min =>"  << nLeqX << nLeqY << endl;
+      learned << nLeqX << nLeqY;
+      ++(d_statistics.d_iteMinMaxApplications);
+      break;
+    }
+    case GT: // (ite (> x y) x y)
+    case GEQ: { // (ite (>= x y) x y)
+      Node nGeqX = NodeBuilder<2>(GEQ) << n << t;
+      Node nGeqY = NodeBuilder<2>(GEQ) << n << e;
+      Debug("arith::static") << n << "is a max =>"  << nGeqX << nGeqY << endl;
+      learned << nGeqX << nGeqY;
+      ++(d_statistics.d_iteMinMaxApplications);
+      break;
+    }
+    default: Unreachable();
+    }
+  }
+}
+
+void ArithStaticLearner::iteConstant(TNode n, NodeBuilder<>& learned){
+  Assert(n.getKind() == ITE);
+
+  Debug("arith::static") << "iteConstant(" << n << ")" << endl;
+
+  if (d_minMap.find(n[1]) != d_minMap.end() && d_minMap.find(n[2]) != d_minMap.end()) {
+    const DeltaRational& first = d_minMap[n[1]];
+    const DeltaRational& second = d_minMap[n[2]];
+    DeltaRational min = std::min(first, second);
+    CDNodeToMinMaxMap::const_iterator minFind = d_minMap.find(n);
+    if (minFind == d_minMap.end() || (*minFind).second < min) {
+      d_minMap.insert(n, min);
+      Node nGeqMin;
+      if (min.getInfinitesimalPart() == 0) {
+        nGeqMin = NodeBuilder<2>(kind::GEQ) << n << mkRationalNode(min.getNoninfinitesimalPart());
+      } else {
+        nGeqMin = NodeBuilder<2>(kind::GT) << n << mkRationalNode(min.getNoninfinitesimalPart());
+      }
+      learned << nGeqMin;
+      Debug("arith::static") << n << " iteConstant"  << nGeqMin << endl;
+      ++(d_statistics.d_iteConstantApplications);
+    }
+  }
+
+  if (d_maxMap.find(n[1]) != d_maxMap.end() && d_maxMap.find(n[2]) != d_maxMap.end()) {
+    const DeltaRational& first = d_maxMap[n[1]];
+    const DeltaRational& second = d_maxMap[n[2]];
+    DeltaRational max = std::max(first, second);
+    CDNodeToMinMaxMap::const_iterator maxFind = d_maxMap.find(n);
+    if (maxFind == d_maxMap.end() || (*maxFind).second > max) {
+      d_maxMap.insert(n, max);
+      Node nLeqMax;
+      if (max.getInfinitesimalPart() == 0) {
+        nLeqMax = NodeBuilder<2>(kind::LEQ) << n << mkRationalNode(max.getNoninfinitesimalPart());
+      } else {
+        nLeqMax = NodeBuilder<2>(kind::LT) << n << mkRationalNode(max.getNoninfinitesimalPart());
+      }
+      learned << nLeqMax;
+      Debug("arith::static") << n << " iteConstant"  << nLeqMax << endl;
+      ++(d_statistics.d_iteConstantApplications);
+    }
+  }
+}
+
+std::set<Node> listToSet(TNode l){
+  std::set<Node> ret;
+  while(l.getKind() == OR){
+    Assert(l.getNumChildren() == 2);
+    ret.insert(l[0]);
+    l = l[1];
+  }
+  return ret;
+}
+
+void ArithStaticLearner::addBound(TNode n) {
+
+  CDNodeToMinMaxMap::const_iterator minFind = d_minMap.find(n[0]);
+  CDNodeToMinMaxMap::const_iterator maxFind = d_maxMap.find(n[0]);
+
+  Rational constant = n[1].getConst<Rational>();
+  DeltaRational bound = constant;
+
+  switch(Kind k = n.getKind()) {
+  case kind::LT:
+    bound = DeltaRational(constant, -1);
+    /* fall through */
+  case kind::LEQ:
+    if (maxFind == d_maxMap.end() || (*maxFind).second > bound) {
+      d_maxMap.insert(n[0], bound);
+      Debug("arith::static") << "adding bound " << n << endl;
+    }
+    break;
+  case kind::GT:
+    bound = DeltaRational(constant, 1);
+    /* fall through */
+  case kind::GEQ:
+    if (minFind == d_minMap.end() || (*minFind).second < bound) {
+      d_minMap.insert(n[0], bound);
+      Debug("arith::static") << "adding bound " << n << endl;
+    }
+    break;
+  default:
+    Unhandled(k);
+    break;
+  }
+}
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/arith_static_learner.h b/src/theory/arith/arith_static_learner.h
new file mode 100644
index 0000000..4951d34
--- /dev/null
+++ b/src/theory/arith/arith_static_learner.h
@@ -0,0 +1,75 @@
+/*********************                                                        */
+/*! \file arith_static_learner.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__ARITH__ARITH_STATIC_LEARNER_H
+#define __CVC4__THEORY__ARITH__ARITH_STATIC_LEARNER_H
+
+#include <set>
+
+#include "context/cdtrail_hashmap.h"
+#include "context/context.h"
+#include "theory/arith/arith_utilities.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+class ArithStaticLearner {
+private:
+
+  /**
+   * Map from a node to it's minimum and maximum.
+   */
+  typedef context::CDTrailHashMap<Node, DeltaRational, NodeHashFunction> CDNodeToMinMaxMap;
+  CDNodeToMinMaxMap d_minMap;
+  CDNodeToMinMaxMap d_maxMap;
+
+public:
+  ArithStaticLearner(context::Context* userContext);
+  ~ArithStaticLearner();
+  void staticLearning(TNode n, NodeBuilder<>& learned);
+
+  void addBound(TNode n);
+
+private:
+  void process(TNode n, NodeBuilder<>& learned, const TNodeSet& defTrue);
+
+  void iteMinMax(TNode n, NodeBuilder<>& learned);
+  void iteConstant(TNode n, NodeBuilder<>& learned);
+
+  /** These fields are designed to be accessible to ArithStaticLearner methods. */
+  class Statistics {
+  public:
+    IntStat d_iteMinMaxApplications;
+    IntStat d_iteConstantApplications;
+
+    Statistics();
+    ~Statistics();
+  };
+
+  Statistics d_statistics;
+
+};/* class ArithStaticLearner */
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__ARITH__ARITH_STATIC_LEARNER_H */
diff --git a/src/theory/arith/arith_utilities.h b/src/theory/arith/arith_utilities.h
new file mode 100644
index 0000000..14329ce
--- /dev/null
+++ b/src/theory/arith/arith_utilities.h
@@ -0,0 +1,278 @@
+/*********************                                                        */
+/*! \file arith_utilities.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Arith utilities are common inline functions for dealing with nodes.
+ **
+ ** Arith utilities are common functions for dealing with nodes.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__ARITH__ARITH_UTILITIES_H
+#define __CVC4__THEORY__ARITH__ARITH_UTILITIES_H
+
+#include <ext/hash_map>
+#include <vector>
+
+#include "context/cdhashset.h"
+#include "expr/node.h"
+#include "theory/arith/arithvar.h"
+#include "theory/arith/delta_rational.h"
+#include "util/dense_map.h"
+#include "util/integer.h"
+#include "util/rational.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+//Sets of Nodes
+typedef __gnu_cxx::hash_set<Node, NodeHashFunction> NodeSet;
+typedef __gnu_cxx::hash_set<TNode, TNodeHashFunction> TNodeSet;
+typedef context::CDHashSet<Node, NodeHashFunction> CDNodeSet;
+
+//Maps from Nodes -> ArithVars, and vice versa
+typedef __gnu_cxx::hash_map<Node, ArithVar, NodeHashFunction> NodeToArithVarMap;
+typedef DenseMap<Node> ArithVarToNodeMap;
+
+inline Node mkRationalNode(const Rational& q){
+  return NodeManager::currentNM()->mkConst<Rational>(q);
+}
+
+inline Node mkBoolNode(bool b){
+  return NodeManager::currentNM()->mkConst<bool>(b);
+}
+
+inline Node mkIntSkolem(const std::string& name){
+  return NodeManager::currentNM()->mkSkolem(name, NodeManager::currentNM()->integerType());
+}
+
+inline Node mkRealSkolem(const std::string& name){
+  return NodeManager::currentNM()->mkSkolem(name, NodeManager::currentNM()->realType());
+}
+
+inline Node skolemFunction(const std::string& name, TypeNode dom, TypeNode range){
+  NodeManager* currNM = NodeManager::currentNM();
+  TypeNode functionType = currNM->mkFunctionType(dom, range);
+  return currNM->mkSkolem(name, functionType);
+}
+
+/**
+ * (For the moment) the type hierarchy goes as:
+ * Integer <: Real
+ * The type number of a variable is an integer representing the most specific
+ * type of the variable. The possible values of type number are:
+ */
+enum ArithType {
+  ATReal = 0,
+  ATInteger = 1
+};
+
+inline ArithType nodeToArithType(TNode x) {
+  return (x.getType().isInteger() ? ATInteger : ATReal);
+}
+
+/** \f$ k \in {LT, LEQ, EQ, GEQ, GT} \f$ */
+inline bool isRelationOperator(Kind k){
+  using namespace kind;
+
+  switch(k){
+  case LT:
+  case LEQ:
+  case EQUAL:
+  case GEQ:
+  case GT:
+    return true;
+  default:
+    return false;
+  }
+}
+
+/**
+ * Given a relational kind, k, return the kind k' s.t.
+ * swapping the lefthand and righthand side is equivalent.
+ *
+ * The following equivalence should hold,
+ *   (k l r) <=> (k' r l)
+ */
+inline Kind reverseRelationKind(Kind k){
+  using namespace kind;
+
+  switch(k){
+  case LT:    return GT;
+  case LEQ:   return GEQ;
+  case EQUAL: return EQUAL;
+  case GEQ:   return LEQ;
+  case GT:    return LT;
+
+  default:
+    Unreachable();
+  }
+}
+
+inline bool evaluateConstantPredicate(Kind k, const Rational& left, const Rational& right){
+  using namespace kind;
+
+  switch(k){
+  case LT:    return left <  right;
+  case LEQ:   return left <= right;
+  case EQUAL: return left == right;
+  case GEQ:   return left >= right;
+  case GT:    return left >  right;
+  default:
+    Unreachable();
+    return true;
+  }
+}
+
+/**
+ * Returns the appropriate coefficient for the infinitesimal given the kind
+ * for an arithmetic atom inorder to represent strict inequalities as inequalities.
+ *   x < c  becomes  x <= c + (-1) * \f$ \delta \f$
+ *   x > c  becomes  x >= x + ( 1) * \f$ \delta \f$
+ * Non-strict inequalities have a coefficient of zero.
+ */
+inline int deltaCoeff(Kind k){
+  switch(k){
+  case kind::LT:
+    return -1;
+  case kind::GT:
+    return 1;
+  default:
+    return 0;
+  }
+}
+
+/**
+ * Given a literal to TheoryArith return a single kind to
+ * to indicate its underlying structure.
+ * The function returns the following in each case:
+ * - (K left right) -> K where is a wildcard for EQUAL, LT, GT, LEQ, or GEQ:
+ * - (NOT (EQUAL left right)) -> DISTINCT
+ * - (NOT (LEQ left right))   -> GT
+ * - (NOT (GEQ left right))   -> LT
+ * - (NOT (LT left right))    -> GEQ
+ * - (NOT (GT left right))    -> LEQ
+ * If none of these match, it returns UNDEFINED_KIND.
+ */
+inline Kind oldSimplifiedKind(TNode literal){
+  switch(literal.getKind()){
+  case kind::LT:
+  case kind::GT:
+  case kind::LEQ:
+  case kind::GEQ:
+  case kind::EQUAL:
+    return literal.getKind();
+  case  kind::NOT:
+    {
+      TNode atom = literal[0];
+      switch(atom.getKind()){
+      case  kind::LEQ: //(not (LEQ x c)) <=> (GT x c)
+        return  kind::GT;
+      case  kind::GEQ: //(not (GEQ x c)) <=> (LT x c)
+        return  kind::LT;
+      case  kind::LT: //(not (LT x c)) <=> (GEQ x c)
+        return  kind::GEQ;
+      case  kind::GT: //(not (GT x c) <=> (LEQ x c)
+        return  kind::LEQ;
+      case  kind::EQUAL:
+        return  kind::DISTINCT;
+      default:
+        Unreachable();
+        return  kind::UNDEFINED_KIND;
+      }
+    }
+  default:
+    Unreachable();
+    return kind::UNDEFINED_KIND;
+  }
+}
+
+inline Kind negateKind(Kind k){
+  switch(k){
+  case kind::LT:       return kind::GEQ;
+  case kind::GT:       return kind::LEQ;
+  case kind::LEQ:      return kind::GT;
+  case kind::GEQ:      return kind::LT;
+  case kind::EQUAL:    return kind::DISTINCT;
+  case kind::DISTINCT: return kind::EQUAL;
+  default:
+    return kind::UNDEFINED_KIND;
+  }
+}
+
+inline Node negateConjunctionAsClause(TNode conjunction){
+  Assert(conjunction.getKind() == kind::AND);
+  NodeBuilder<> orBuilder(kind::OR);
+
+  for(TNode::iterator i = conjunction.begin(), end=conjunction.end(); i != end; ++i){
+    TNode child = *i;
+    Node negatedChild = NodeBuilder<1>(kind::NOT)<<(child);
+    orBuilder << negatedChild;
+  }
+  return orBuilder;
+}
+
+inline Node maybeUnaryConvert(NodeBuilder<>& builder){
+  Assert(builder.getKind() == kind::OR ||
+         builder.getKind() == kind::AND ||
+         builder.getKind() == kind::PLUS ||
+         builder.getKind() == kind::MULT);
+  Assert(builder.getNumChildren() >= 1);
+  if(builder.getNumChildren() == 1){
+    return builder[0];
+  }else{
+    return builder;
+  }
+}
+
+inline void flattenAnd(Node n, std::vector<TNode>& out){
+  Assert(n.getKind() == kind::AND);
+  for(Node::iterator i=n.begin(), i_end=n.end(); i != i_end; ++i){
+    Node curr = *i;
+    if(curr.getKind() == kind::AND){
+      flattenAnd(curr, out);
+    }else{
+      out.push_back(curr);
+    }
+  }
+}
+
+inline Node flattenAnd(Node n){
+  std::vector<TNode> out;
+  flattenAnd(n, out);
+  return NodeManager::currentNM()->mkNode(kind::AND, out);
+}
+
+inline Node getIdentity(Kind k){
+  switch(k){
+  case kind::AND:
+    return NodeManager::currentNM()->mkConst<bool>(true);
+  case kind::PLUS:
+    return NodeManager::currentNM()->mkConst(Rational(1));
+  default:
+    Unreachable();
+  }
+}
+
+inline Node safeConstructNary(NodeBuilder<>& nb){
+  switch(nb.getNumChildren()){
+  case 0:  return getIdentity(nb.getKind());
+  case 1:  return nb[0];
+  default: return (Node)nb;
+  }
+}
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__ARITH__ARITH_UTILITIES_H */
diff --git a/src/theory/arith/arithvar.cpp b/src/theory/arith/arithvar.cpp
new file mode 100644
index 0000000..1ab125a
--- /dev/null
+++ b/src/theory/arith/arithvar.cpp
@@ -0,0 +1,36 @@
+/*********************                                                        */
+/*! \file arithvar.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+
+#include "theory/arith/arithvar.h"
+#include <limits>
+#include <set>
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+const ArithVar ARITHVAR_SENTINEL = std::numeric_limits<ArithVar>::max();
+
+bool debugIsASet(const std::vector<ArithVar>& variables){
+  std::set<ArithVar> asSet(variables.begin(), variables.end());
+  return asSet.size() == variables.size();
+}
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/arithvar.h b/src/theory/arith/arithvar.h
new file mode 100644
index 0000000..f9ff6da
--- /dev/null
+++ b/src/theory/arith/arithvar.h
@@ -0,0 +1,45 @@
+/*********************                                                        */
+/*! \file arithvar.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Defines ArithVar which is the internal representation of variables in arithmetic
+ **
+ ** This defines ArithVar which is the internal representation of variables in
+ ** arithmetic. This is a typedef from Index to ArithVar.
+ ** This file also provides utilities for ArithVars.
+ **/
+
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <vector>
+
+#include "util/index.h"
+#include "util/rational.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+typedef Index ArithVar;
+extern const ArithVar ARITHVAR_SENTINEL;
+
+typedef std::vector<ArithVar> ArithVarVec;
+typedef std::pair<ArithVar, Rational> ArithRatPair;
+typedef std::vector< ArithRatPair > ArithRatPairVec;
+
+extern bool debugIsASet(const ArithVarVec& variables);
+
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/attempt_solution_simplex.cpp b/src/theory/arith/attempt_solution_simplex.cpp
new file mode 100644
index 0000000..333b0bf
--- /dev/null
+++ b/src/theory/arith/attempt_solution_simplex.cpp
@@ -0,0 +1,153 @@
+/*********************                                                        */
+/*! \file attempt_solution_simplex.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+#include "theory/arith/attempt_solution_simplex.h"
+
+#include "base/output.h"
+#include "options/arith_options.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/arith/constraint.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+AttemptSolutionSDP::AttemptSolutionSDP(LinearEqualityModule& linEq, ErrorSet& errors, RaiseConflict conflictChannel, TempVarMalloc tvmalloc)
+  : SimplexDecisionProcedure(linEq, errors, conflictChannel, tvmalloc)
+  , d_statistics()
+{ }
+
+AttemptSolutionSDP::Statistics::Statistics():
+  d_searchTime("theory::arith::attempt::searchTime"),
+  d_queueTime("theory::arith::attempt::queueTime"),
+  d_conflicts("theory::arith::attempt::conflicts", 0)
+{
+  smtStatisticsRegistry()->registerStat(&d_searchTime);
+  smtStatisticsRegistry()->registerStat(&d_queueTime);
+  smtStatisticsRegistry()->registerStat(&d_conflicts);
+}
+
+AttemptSolutionSDP::Statistics::~Statistics(){
+  smtStatisticsRegistry()->unregisterStat(&d_searchTime);
+  smtStatisticsRegistry()->unregisterStat(&d_queueTime);
+  smtStatisticsRegistry()->unregisterStat(&d_conflicts);
+}
+
+bool AttemptSolutionSDP::matchesNewValue(const DenseMap<DeltaRational>& nv, ArithVar v) const{
+  return nv[v] == d_variables.getAssignment(v);
+}
+
+Result::Sat AttemptSolutionSDP::attempt(const ApproximateSimplex::Solution& sol){
+  const DenseSet& newBasis = sol.newBasis;
+  const DenseMap<DeltaRational>& newValues = sol.newValues;
+
+  DenseSet needsToBeAdded;
+  for(DenseSet::const_iterator i = newBasis.begin(), i_end = newBasis.end(); i != i_end; ++i){
+    ArithVar b = *i;
+    if(!d_tableau.isBasic(b)){
+      needsToBeAdded.add(b);
+    }
+  }
+  DenseMap<DeltaRational>::const_iterator nvi = newValues.begin(), nvi_end = newValues.end();
+  for(; nvi != nvi_end; ++nvi){
+    ArithVar currentlyNb = *nvi;
+    if(!d_tableau.isBasic(currentlyNb)){
+      if(!matchesNewValue(newValues, currentlyNb)){
+        const DeltaRational& newValue = newValues[currentlyNb];
+        Trace("arith::updateMany")
+          << "updateMany:" << currentlyNb << " "
+          << d_variables.getAssignment(currentlyNb) << " to "<< newValue << endl;
+        d_linEq.update(currentlyNb, newValue);
+        Assert(d_variables.assignmentIsConsistent(currentlyNb));
+      }
+    }
+  }
+  d_errorSet.reduceToSignals();
+  d_errorSet.setSelectionRule(VAR_ORDER);
+
+  static int instance = 0;
+  ++instance;
+
+  if(processSignals()){
+    Debug("arith::findModel") << "attemptSolution("<< instance <<") early conflict" << endl;
+    d_conflictVariables.purge();
+    return Result::UNSAT;
+  }else if(d_errorSet.errorEmpty()){
+    Debug("arith::findModel") << "attemptSolution("<< instance <<") fixed itself" << endl;
+    return Result::SAT;
+  }
+
+  while(!needsToBeAdded.empty() && !d_errorSet.errorEmpty()){
+    ArithVar toRemove = ARITHVAR_SENTINEL;
+    ArithVar toAdd = ARITHVAR_SENTINEL;
+    DenseSet::const_iterator i = needsToBeAdded.begin(), i_end = needsToBeAdded.end();
+    for(; toAdd == ARITHVAR_SENTINEL && i != i_end; ++i){
+      ArithVar v = *i;
+
+      Tableau::ColIterator colIter = d_tableau.colIterator(v);
+      for(; !colIter.atEnd(); ++colIter){
+        const Tableau::Entry& entry = *colIter;
+        Assert(entry.getColVar() == v);
+        ArithVar b = d_tableau.rowIndexToBasic(entry.getRowIndex());
+        if(!newBasis.isMember(b)){
+          toAdd = v;
+
+          bool favorBOverToRemove =
+            (toRemove == ARITHVAR_SENTINEL) ||
+            (matchesNewValue(newValues, toRemove) && !matchesNewValue(newValues, b)) ||
+            (d_tableau.basicRowLength(toRemove) > d_tableau.basicRowLength(b));
+
+          if(favorBOverToRemove){
+            toRemove = b;
+          }
+        }
+      }
+    }
+    Assert(toRemove != ARITHVAR_SENTINEL);
+    Assert(toAdd != ARITHVAR_SENTINEL);
+
+    Trace("arith::forceNewBasis") << toRemove << " " << toAdd << endl;
+    //Message() << toRemove << " " << toAdd << endl;
+
+    d_linEq.pivotAndUpdate(toRemove, toAdd, newValues[toRemove]);
+
+    Trace("arith::forceNewBasis") << needsToBeAdded.size() << "to go" << endl;
+    //Message() << needsToBeAdded.size() << "to go" << endl;
+    needsToBeAdded.remove(toAdd);
+
+    bool conflict = processSignals();
+    if(conflict){
+      d_errorSet.reduceToSignals();
+      d_conflictVariables.purge();
+
+      return Result::UNSAT;
+    }
+  }
+  Assert( d_conflictVariables.empty() );
+
+  if(d_errorSet.errorEmpty()){
+    return Result::SAT;
+  }else{
+    d_errorSet.reduceToSignals();
+    return Result::SAT_UNKNOWN;
+  }
+}
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/attempt_solution_simplex.h b/src/theory/arith/attempt_solution_simplex.h
new file mode 100644
index 0000000..00df8c0
--- /dev/null
+++ b/src/theory/arith/attempt_solution_simplex.h
@@ -0,0 +1,96 @@
+/*********************                                                        */
+/*! \file attempt_solution_simplex.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This is an implementation of the Simplex Module for the Simplex for DPLL(T)
+ ** decision procedure.
+ **
+ ** This implements the Simplex module for the Simpelx for DPLL(T) decision procedure.
+ ** See the Simplex for DPLL(T) technical report for more background.(citation?)
+ ** This shares with the theory a Tableau, and a PartialModel that:
+ **  - satisfies the equalities in the Tableau, and
+ **  - the assignment for the non-basic variables satisfies their bounds.
+ ** This is required to either produce a conflict or satisifying PartialModel.
+ ** Further, we require being told when a basic variable updates its value.
+ **
+ ** During the Simplex search we maintain a queue of variables.
+ ** The queue is required to contain all of the basic variables that voilate their bounds.
+ ** As elimination from the queue is more efficient to be done lazily,
+ ** we do not maintain that the queue of variables needs to be only basic variables or only
+ ** variables that satisfy their bounds.
+ **
+ ** The simplex procedure roughly follows Alberto's thesis. (citation?)
+ ** There is one round of selecting using a heuristic pivoting rule. (See PreferenceFunction
+ ** Documentation for the available options.)
+ ** The non-basic variable is the one that appears in the fewest pivots. (Bruno says that
+ ** Leonardo invented this first.)
+ ** After this, Bland's pivot rule is invoked.
+ **
+ ** During this proccess, we periodically inspect the queue of variables to
+ ** 1) remove now extraneous extries,
+ ** 2) detect conflicts that are "waiting" on the queue but may not be detected by the
+ **  current queue heuristics, and
+ ** 3) detect multiple conflicts.
+ **
+ ** Conflicts are greedily slackened to use the weakest bounds that still produce the
+ ** conflict.
+ **
+ ** Extra things tracked atm: (Subject to change at Tim's whims)
+ ** - A superset of all of the newly pivoted variables.
+ ** - A queue of additional conflicts that were discovered by Simplex.
+ **   These are theory valid and are currently turned into lemmas
+ **/
+
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "theory/arith/simplex.h"
+#include "theory/arith/approx_simplex.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+class AttemptSolutionSDP : public SimplexDecisionProcedure {
+public:
+  AttemptSolutionSDP(LinearEqualityModule& linEq, ErrorSet& errors, RaiseConflict conflictChannel, TempVarMalloc tvmalloc);
+
+  Result::Sat attempt(const ApproximateSimplex::Solution& sol);
+
+  Result::Sat findModel(bool exactResult){
+    Unreachable();
+  }
+
+private:
+  bool matchesNewValue(const DenseMap<DeltaRational>& nv, ArithVar v) const;
+
+  bool processSignals(){
+    TimerStat &timer = d_statistics.d_queueTime;
+    IntStat& conflictStat  = d_statistics.d_conflicts;
+    return standardProcessSignals(timer, conflictStat);
+  }
+  /** These fields are designed to be accessible to TheoryArith methods. */
+  class Statistics {
+  public:
+    TimerStat d_searchTime;
+    TimerStat d_queueTime;
+    IntStat d_conflicts;
+
+    Statistics();
+    ~Statistics();
+  } d_statistics;
+};/* class AttemptSolutionSDP */
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/bound_counts.h b/src/theory/arith/bound_counts.h
new file mode 100644
index 0000000..b6417ed
--- /dev/null
+++ b/src/theory/arith/bound_counts.h
@@ -0,0 +1,236 @@
+/*********************                                                        */
+/*! \file bound_counts.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Clark Barrett
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+#pragma once
+
+#include <stdint.h>
+
+#include "base/cvc4_assert.h"
+#include "theory/arith/arithvar.h"
+#include "util/dense_map.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+class BoundCounts {
+private:
+  uint32_t d_lowerBoundCount;
+  uint32_t d_upperBoundCount;
+
+public:
+  BoundCounts() : d_lowerBoundCount(0), d_upperBoundCount(0) {}
+  BoundCounts(uint32_t lbs, uint32_t ubs)
+  : d_lowerBoundCount(lbs), d_upperBoundCount(ubs) {}
+
+  bool operator==(BoundCounts bc) const {
+    return d_lowerBoundCount == bc.d_lowerBoundCount
+      && d_upperBoundCount == bc.d_upperBoundCount;
+  }
+  bool operator!=(BoundCounts bc) const {
+    return  d_lowerBoundCount != bc.d_lowerBoundCount
+      || d_upperBoundCount != bc.d_upperBoundCount;
+  }
+  /** This is not a total order! */
+  bool operator>=(BoundCounts bc) const {
+    return d_lowerBoundCount >= bc.d_lowerBoundCount &&
+      d_upperBoundCount >= bc.d_upperBoundCount;
+  }
+
+  inline bool isZero() const{ return d_lowerBoundCount == 0 && d_upperBoundCount == 0; }
+  inline uint32_t lowerBoundCount() const{
+    return d_lowerBoundCount;
+  }
+  inline uint32_t upperBoundCount() const{
+    return d_upperBoundCount;
+  }
+
+  inline BoundCounts operator+(BoundCounts bc) const{
+    return BoundCounts(d_lowerBoundCount + bc.d_lowerBoundCount,
+                       d_upperBoundCount + bc.d_upperBoundCount);
+  }
+
+  inline BoundCounts operator-(BoundCounts bc) const {
+    Assert( *this >= bc );
+    return BoundCounts(d_lowerBoundCount - bc.d_lowerBoundCount,
+                       d_upperBoundCount - bc.d_upperBoundCount);
+  }
+
+
+  inline BoundCounts& operator+=(BoundCounts bc) {
+    d_upperBoundCount += bc.d_upperBoundCount;
+    d_lowerBoundCount += bc.d_lowerBoundCount;
+    return *this;
+  }
+
+  inline BoundCounts& operator-=(BoundCounts bc) {
+    Assert(d_lowerBoundCount >= bc.d_lowerBoundCount);
+    Assert(d_upperBoundCount >= bc.d_upperBoundCount);
+    d_upperBoundCount -= bc.d_upperBoundCount;
+    d_lowerBoundCount -= bc.d_lowerBoundCount;
+
+    return *this;
+  }
+
+  /** Based on the sign coefficient a variable is multiplied by,
+   * the effects the bound counts either has no effect (sgn == 0),
+   * the lower bounds and upper bounds flip (sgn < 0), or nothing (sgn >0).
+   */
+  inline BoundCounts multiplyBySgn(int sgn) const{
+    if(sgn > 0){
+      return *this;
+    }else if(sgn == 0){
+      return BoundCounts(0,0);
+    }else{
+      return BoundCounts(d_upperBoundCount, d_lowerBoundCount);
+    }
+  }
+
+  inline void addInChange(int sgn, BoundCounts before, BoundCounts after){
+    if(before == after){
+      return;
+    }else if(sgn < 0){
+      Assert(d_upperBoundCount >= before.d_lowerBoundCount);
+      Assert(d_lowerBoundCount >= before.d_upperBoundCount);
+      d_upperBoundCount += after.d_lowerBoundCount - before.d_lowerBoundCount;
+      d_lowerBoundCount += after.d_upperBoundCount - before.d_upperBoundCount;
+    }else if(sgn > 0){
+      Assert(d_upperBoundCount >= before.d_upperBoundCount);
+      Assert(d_lowerBoundCount >= before.d_lowerBoundCount);
+      d_upperBoundCount += after.d_upperBoundCount - before.d_upperBoundCount;
+      d_lowerBoundCount += after.d_lowerBoundCount - before.d_lowerBoundCount;
+    }
+  }
+
+  inline void addInSgn(BoundCounts bc, int before, int after){
+    Assert(before != after);
+    Assert(!bc.isZero());
+
+    if(before < 0){
+      d_upperBoundCount -= bc.d_lowerBoundCount;
+      d_lowerBoundCount -= bc.d_upperBoundCount;
+    }else if(before > 0){
+      d_upperBoundCount -= bc.d_upperBoundCount;
+      d_lowerBoundCount -= bc.d_lowerBoundCount;
+    }
+    if(after < 0){
+      d_upperBoundCount += bc.d_lowerBoundCount;
+      d_lowerBoundCount += bc.d_upperBoundCount;
+    }else if(after > 0){
+      d_upperBoundCount += bc.d_upperBoundCount;
+      d_lowerBoundCount += bc.d_lowerBoundCount;
+    }
+  }
+};
+
+class BoundsInfo {
+private:
+
+  /**
+   * x = \sum_{a < 0} a_i i + \sum_{b > 0} b_j j
+   *
+   * AtUpperBound = {assignment(i) = lb(i)} \cup {assignment(j) = ub(j)}
+   * AtLowerBound = {assignment(i) = ub(i)} \cup {assignment(j) = lb(j)}
+   */
+  BoundCounts d_atBounds;
+
+  /** This is for counting how many upper and lower bounds a row has. */
+  BoundCounts d_hasBounds;
+
+public:
+  BoundsInfo() : d_atBounds(), d_hasBounds() {}
+  BoundsInfo(BoundCounts atBounds, BoundCounts hasBounds)
+    : d_atBounds(atBounds), d_hasBounds(hasBounds) {}
+
+  BoundCounts atBounds() const { return d_atBounds; }
+  BoundCounts hasBounds() const { return d_hasBounds; }
+
+  /** This corresponds to adding in another variable to the row. */
+  inline BoundsInfo operator+(const BoundsInfo& bc) const{
+    return BoundsInfo(d_atBounds + bc.d_atBounds,
+                      d_hasBounds + bc.d_hasBounds);
+  }
+  /** This corresponds to removing a variable from the row. */
+  inline BoundsInfo operator-(const BoundsInfo& bc) const {
+    Assert(*this >= bc);
+    return BoundsInfo(d_atBounds - bc.d_atBounds,
+                      d_hasBounds - bc.d_hasBounds);
+  }
+
+  inline BoundsInfo& operator+=(const BoundsInfo& bc) {
+    d_atBounds += bc.d_atBounds;
+    d_hasBounds += bc.d_hasBounds;
+    return (*this);
+  }
+
+  /** Based on the sign coefficient a variable is multiplied by,
+   * the effects the bound counts either has no effect (sgn == 0),
+   * the lower bounds and upper bounds flip (sgn < 0), or nothing (sgn >0).
+   */
+  inline BoundsInfo multiplyBySgn(int sgn) const{
+    return BoundsInfo(d_atBounds.multiplyBySgn(sgn), d_hasBounds.multiplyBySgn(sgn));
+  }
+
+  bool operator==(const BoundsInfo& other) const{
+    return d_atBounds == other.d_atBounds && d_hasBounds == other.d_hasBounds;
+  }
+  bool operator!=(const BoundsInfo& other) const{
+    return !(*this == other);
+  }
+  /** This is not a total order! */
+  bool operator>=(const BoundsInfo& other) const{
+    return d_atBounds >= other.d_atBounds && d_hasBounds >= other.d_hasBounds;
+  }
+  void addInChange(int sgn, const BoundsInfo& before, const BoundsInfo& after){
+    addInAtBoundChange(sgn, before.d_atBounds, after.d_atBounds);
+    addInHasBoundChange(sgn, before.d_hasBounds, after.d_hasBounds);
+  }
+  void addInAtBoundChange(int sgn, BoundCounts before, BoundCounts after){
+    d_atBounds.addInChange(sgn, before, after);
+  }
+  void addInHasBoundChange(int sgn, BoundCounts before, BoundCounts after){
+    d_hasBounds.addInChange(sgn, before, after);
+  }
+
+  inline void addInSgn(const BoundsInfo& bc, int before, int after){
+    if(!bc.d_atBounds.isZero()){ d_atBounds.addInSgn(bc.d_atBounds, before, after);}
+    if(!bc.d_hasBounds.isZero()){ d_hasBounds.addInSgn(bc.d_hasBounds, before, after);}
+  }
+};
+
+/** This is intended to map each row to its relevant bound information. */
+typedef DenseMap<BoundsInfo> BoundInfoMap;
+
+inline std::ostream& operator<<(std::ostream& os, const BoundCounts& bc){
+  os << "[bc " << bc.lowerBoundCount() << ", " << bc.upperBoundCount() << "]";
+  return os;
+}
+
+inline std::ostream& operator<<(std::ostream& os, const BoundsInfo& inf){
+  os << "[bi : @ " << inf.atBounds() << ", " << inf.hasBounds() << "]";
+  return os;
+}
+class BoundUpdateCallback {
+public:
+  virtual ~BoundUpdateCallback() {}
+  virtual void operator()(ArithVar v, const BoundsInfo&  up) = 0;
+};
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/callbacks.cpp b/src/theory/arith/callbacks.cpp
new file mode 100644
index 0000000..766c742
--- /dev/null
+++ b/src/theory/arith/callbacks.cpp
@@ -0,0 +1,191 @@
+/*********************                                                        */
+/*! \file callbacks.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/arith/callbacks.h"
+#include "theory/arith/theory_arith_private.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+SetupLiteralCallBack::SetupLiteralCallBack(TheoryArithPrivate& ta)
+  : d_arith(ta)
+{}
+void SetupLiteralCallBack::operator()(TNode lit){
+  TNode atom = (lit.getKind() == kind::NOT) ? lit[0] : lit;
+  if(!d_arith.isSetup(atom)){
+    d_arith.setupAtom(atom);
+  }
+}
+
+DeltaComputeCallback::DeltaComputeCallback(const TheoryArithPrivate& ta)
+  : d_ta(ta)
+{}
+Rational DeltaComputeCallback::operator()() const{
+  return d_ta.deltaValueForTotalOrder();
+}
+
+TempVarMalloc::TempVarMalloc(TheoryArithPrivate& ta)
+: d_ta(ta)
+{}
+ArithVar TempVarMalloc::request(){
+  Node skolem = mkRealSkolem("tmpVar");
+  return d_ta.requestArithVar(skolem, false, true);
+}
+void TempVarMalloc::release(ArithVar v){
+  d_ta.releaseArithVar(v);
+}
+
+BasicVarModelUpdateCallBack::BasicVarModelUpdateCallBack(TheoryArithPrivate& ta)
+  : d_ta(ta)
+{}
+void BasicVarModelUpdateCallBack::operator()(ArithVar x){
+  d_ta.signal(x);
+}
+
+RaiseConflict::RaiseConflict(TheoryArithPrivate& ta)
+  : d_ta(ta)
+{}
+
+void RaiseConflict::raiseConflict(ConstraintCP c) const{
+  Assert(c->inConflict());
+  d_ta.raiseConflict(c);
+}
+
+FarkasConflictBuilder::FarkasConflictBuilder()
+  : d_farkas()
+  , d_constraints()
+  , d_consequent(NullConstraint)
+  , d_consequentSet(false)
+{
+  reset();
+}
+
+bool FarkasConflictBuilder::underConstruction() const{
+  return d_consequent != NullConstraint;
+}
+
+bool FarkasConflictBuilder::consequentIsSet() const{
+  return d_consequentSet;
+}
+
+void FarkasConflictBuilder::reset(){
+  d_consequent = NullConstraint;
+  d_constraints.clear();
+  d_consequentSet = false;
+  PROOF(d_farkas.clear());
+  Assert(!underConstruction());
+}
+
+/* Adds a constraint to the constraint under construction. */
+void FarkasConflictBuilder::addConstraint(ConstraintCP c, const Rational& fc){
+  Assert(!PROOF_ON() ||
+         (!underConstruction() && d_constraints.empty() && d_farkas.empty()) ||
+         (underConstruction() && d_constraints.size() + 1 == d_farkas.size()));
+  Assert(PROOF_ON() || d_farkas.empty());
+  Assert(c->isTrue());
+
+  
+  if(d_consequent == NullConstraint){
+    d_consequent = c;
+  } else {
+    d_constraints.push_back(c);
+  }
+  PROOF(d_farkas.push_back(fc););
+  Assert(!PROOF_ON() || d_constraints.size() + 1 == d_farkas.size());
+  Assert(PROOF_ON() || d_farkas.empty());
+}
+
+void FarkasConflictBuilder::addConstraint(ConstraintCP c, const Rational& fc, const Rational& mult){
+  Assert(!mult.isZero());
+  if(PROOF_ON() && !mult.isOne()){
+    Rational prod = fc * mult;
+    addConstraint(c, prod);
+  }else{
+    addConstraint(c, fc);
+  }
+}
+
+void FarkasConflictBuilder::makeLastConsequent(){
+  Assert(!d_consequentSet);
+  Assert(underConstruction());
+
+  if(d_constraints.empty()){
+    // no-op
+    d_consequentSet = true;
+  } else {
+    Assert(d_consequent != NullConstraint);
+    ConstraintCP last = d_constraints.back();
+    d_constraints.back() = d_consequent;
+    d_consequent = last;
+    PROOF( std::swap( d_farkas.front(), d_farkas.back() ) );
+    d_consequentSet = true;
+  }
+
+  Assert(! d_consequent->negationHasProof() );
+  Assert(d_consequentSet);
+}
+
+/* Turns the vector under construction into a conflict */
+ConstraintCP FarkasConflictBuilder::commitConflict(){
+  Assert(underConstruction());
+  Assert(!d_constraints.empty());
+  Assert(!PROOF_ON() ||
+         (!underConstruction() && d_constraints.empty() && d_farkas.empty()) ||
+         (underConstruction() && d_constraints.size() + 1 == d_farkas.size()));
+  Assert(PROOF_ON() || d_farkas.empty());
+  Assert(d_consequentSet);
+
+  ConstraintP not_c = d_consequent->getNegation();
+  RationalVectorCP coeffs = NULLPROOF(&d_farkas);
+  not_c->impliedByFarkas(d_constraints, coeffs, true );
+
+  reset();
+  Assert(!underConstruction());
+  Assert( not_c->inConflict() );
+  Assert(!d_consequentSet);
+  return not_c;
+}
+
+RaiseEqualityEngineConflict::RaiseEqualityEngineConflict(TheoryArithPrivate& ta)
+  : d_ta(ta)
+{}
+
+/* If you are not an equality engine, don't use this! */
+void RaiseEqualityEngineConflict::raiseEEConflict(Node n) const{
+  d_ta.raiseBlackBoxConflict(n);
+}
+
+
+BoundCountingLookup::BoundCountingLookup(TheoryArithPrivate& ta)
+: d_ta(ta)
+{}
+
+const BoundsInfo& BoundCountingLookup::boundsInfo(ArithVar basic) const{
+  return d_ta.boundsInfo(basic);
+}
+
+BoundCounts BoundCountingLookup::atBounds(ArithVar basic) const{
+  return boundsInfo(basic).atBounds();
+}
+BoundCounts BoundCountingLookup::hasBounds(ArithVar basic) const {
+  return boundsInfo(basic).hasBounds();
+}
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/callbacks.h b/src/theory/arith/callbacks.h
new file mode 100644
index 0000000..606f411
--- /dev/null
+++ b/src/theory/arith/callbacks.h
@@ -0,0 +1,195 @@
+/*********************                                                        */
+/*! \file callbacks.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Clark Barrett
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+
+#pragma once
+
+#include "expr/node.h"
+#include "theory/arith/arithvar.h"
+#include "theory/arith/bound_counts.h"
+#include "theory/arith/constraint_forward.h"
+#include "theory/arith/theory_arith_private_forward.h"
+#include "util/rational.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+/**
+ * ArithVarCallBack provides a mechanism for agreeing on callbacks while
+ * breaking mutual recursion inclusion order problems.
+ */
+class ArithVarCallBack {
+public:
+  virtual ~ArithVarCallBack() {}
+  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 ~ArithVarMalloc() {}
+  virtual ArithVar request() = 0;
+  virtual void release(ArithVar v) = 0;
+};
+
+class TNodeCallBack {
+public:
+  virtual ~TNodeCallBack() {}
+  virtual void operator()(TNode n) = 0;
+};
+
+class NodeCallBack {
+public:
+  virtual ~NodeCallBack() {}
+  virtual void operator()(Node n) = 0;
+};
+
+class RationalCallBack {
+public:
+  virtual ~RationalCallBack() {}
+  virtual Rational operator()() const = 0;
+};
+
+class SetupLiteralCallBack : public TNodeCallBack {
+private:
+  TheoryArithPrivate& d_arith;
+public:
+  SetupLiteralCallBack(TheoryArithPrivate& ta);
+  void operator()(TNode lit);
+};
+
+class DeltaComputeCallback : public RationalCallBack {
+private:
+  const TheoryArithPrivate& d_ta;
+public:
+  DeltaComputeCallback(const TheoryArithPrivate& ta);
+  Rational operator()() const;
+};
+
+class BasicVarModelUpdateCallBack : public ArithVarCallBack{
+private:
+  TheoryArithPrivate& d_ta;
+public:
+  BasicVarModelUpdateCallBack(TheoryArithPrivate& ta);
+  void operator()(ArithVar x);
+};
+
+class TempVarMalloc : public ArithVarMalloc {
+private:
+  TheoryArithPrivate& d_ta;
+public:
+  TempVarMalloc(TheoryArithPrivate& ta);
+  ArithVar request();
+  void release(ArithVar v);
+};
+
+class RaiseConflict {
+private:
+  TheoryArithPrivate& d_ta;
+public:
+  RaiseConflict(TheoryArithPrivate& ta);
+
+  /** Calls d_ta.raiseConflict(c) */
+  void raiseConflict(ConstraintCP c) const;
+};
+
+class FarkasConflictBuilder {
+private:
+  RationalVector d_farkas;
+  ConstraintCPVec d_constraints;
+  ConstraintCP d_consequent;
+  bool d_consequentSet;
+public:
+
+  /**
+   * Constructs a new FarkasConflictBuilder.
+   */
+  FarkasConflictBuilder();
+
+  /**
+   * Adds an antecedent constraint to the conflict under construction
+   * with the farkas coefficient fc * mult.
+   *
+   * The value mult is either 1 or -1.
+   */
+  void addConstraint(ConstraintCP c, const Rational& fc, const Rational& mult);
+
+  /**
+   * Adds an antecedent constraint to the conflict under construction
+   * with the farkas coefficient fc.
+   */
+  void addConstraint(ConstraintCP c, const Rational& fc);
+  
+  /**
+   * Makes the last constraint added the consequent.
+   * Can be done exactly once per reset().
+   */
+  void makeLastConsequent();
+  
+  /**
+   * Turns the antecendents into a proof of the negation of one of the
+   * antecedents.
+   *
+   * The buffer is no longer underConstruction afterwards.
+   *
+   * precondition:
+   * - At least two constraints have been asserted.
+   * - makeLastConsequent() has been called.
+   *
+   * postcondition: The returned constraint is in conflict.
+   */
+  ConstraintCP commitConflict();
+
+  /** Returns true if a conflict has been pushed back since the last reset. */
+  bool underConstruction() const;
+  
+  /** Returns true if the consequent has been set since the last reset. */
+  bool consequentIsSet() const;
+
+  /** Resets the state of the buffer. */
+  void reset();
+};
+
+
+class RaiseEqualityEngineConflict {
+private:
+  TheoryArithPrivate& d_ta;
+  
+public:
+  RaiseEqualityEngineConflict(TheoryArithPrivate& ta);
+
+  /* If you are not an equality engine, don't use this! */
+  void raiseEEConflict(Node n) const;
+};
+
+class BoundCountingLookup {
+private:
+  TheoryArithPrivate& d_ta;
+public:
+  BoundCountingLookup(TheoryArithPrivate& ta);
+  const BoundsInfo& boundsInfo(ArithVar basic) const;
+  BoundCounts atBounds(ArithVar basic) const;
+  BoundCounts hasBounds(ArithVar basic) const;
+};
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/congruence_manager.cpp b/src/theory/arith/congruence_manager.cpp
new file mode 100644
index 0000000..da69436
--- /dev/null
+++ b/src/theory/arith/congruence_manager.cpp
@@ -0,0 +1,520 @@
+/*********************                                                        */
+/*! \file congruence_manager.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Dejan Jovanovic, Morgan Deters, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/arith/congruence_manager.h"
+
+#include "base/output.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/arith/arith_utilities.h"
+#include "theory/arith/constraint.h"
+#include "theory/quantifiers/equality_infer.h"
+#include "options/arith_options.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+ArithCongruenceManager::ArithCongruenceManager(context::Context* c, ConstraintDatabase& cd, SetupLiteralCallBack setup, const ArithVariables& avars, RaiseEqualityEngineConflict raiseConflict)
+  : d_inConflict(c),
+    d_raiseConflict(raiseConflict),
+    d_notify(*this),
+    d_eq_infer(NULL),
+    d_eqi_counter(0,c),
+    d_keepAlive(c),
+    d_propagatations(c),
+    d_explanationMap(c),
+    d_constraintDatabase(cd),
+    d_setupLiteral(setup),
+    d_avariables(avars),
+    d_ee(d_notify, c, "theory::arith::ArithCongruenceManager", true)
+{
+  //module to infer additional equalities based on normalization
+  if( options::sNormInferEq() ){
+    d_eq_infer = new quantifiers::EqualityInference(c, true);
+    d_true = NodeManager::currentNM()->mkConst( true );
+  }
+}
+
+ArithCongruenceManager::~ArithCongruenceManager() {
+  if( d_eq_infer ){
+    delete d_eq_infer;
+  }
+}
+
+ArithCongruenceManager::Statistics::Statistics():
+  d_watchedVariables("theory::arith::congruence::watchedVariables", 0),
+  d_watchedVariableIsZero("theory::arith::congruence::watchedVariableIsZero", 0),
+  d_watchedVariableIsNotZero("theory::arith::congruence::watchedVariableIsNotZero", 0),
+  d_equalsConstantCalls("theory::arith::congruence::equalsConstantCalls", 0),
+  d_propagations("theory::arith::congruence::propagations", 0),
+  d_propagateConstraints("theory::arith::congruence::propagateConstraints", 0),
+  d_conflicts("theory::arith::congruence::conflicts", 0)
+{
+  smtStatisticsRegistry()->registerStat(&d_watchedVariables);
+  smtStatisticsRegistry()->registerStat(&d_watchedVariableIsZero);
+  smtStatisticsRegistry()->registerStat(&d_watchedVariableIsNotZero);
+  smtStatisticsRegistry()->registerStat(&d_equalsConstantCalls);
+  smtStatisticsRegistry()->registerStat(&d_propagations);
+  smtStatisticsRegistry()->registerStat(&d_propagateConstraints);
+  smtStatisticsRegistry()->registerStat(&d_conflicts);
+}
+
+ArithCongruenceManager::Statistics::~Statistics(){
+  smtStatisticsRegistry()->unregisterStat(&d_watchedVariables);
+  smtStatisticsRegistry()->unregisterStat(&d_watchedVariableIsZero);
+  smtStatisticsRegistry()->unregisterStat(&d_watchedVariableIsNotZero);
+  smtStatisticsRegistry()->unregisterStat(&d_equalsConstantCalls);
+  smtStatisticsRegistry()->unregisterStat(&d_propagations);
+  smtStatisticsRegistry()->unregisterStat(&d_propagateConstraints);
+  smtStatisticsRegistry()->unregisterStat(&d_conflicts);
+}
+
+ArithCongruenceManager::ArithCongruenceNotify::ArithCongruenceNotify(ArithCongruenceManager& acm)
+  : d_acm(acm)
+{}
+
+bool ArithCongruenceManager::ArithCongruenceNotify::eqNotifyTriggerEquality(TNode equality, bool value) {
+  Debug("arith::congruences") << "ArithCongruenceNotify::eqNotifyTriggerEquality(" << equality << ", " << (value ? "true" : "false") << ")" << std::endl;
+  if (value) {
+    return d_acm.propagate(equality);
+  } else {
+    return d_acm.propagate(equality.notNode());
+  }
+}
+bool ArithCongruenceManager::ArithCongruenceNotify::eqNotifyTriggerPredicate(TNode predicate, bool value) {
+  Unreachable();
+}
+
+bool ArithCongruenceManager::ArithCongruenceNotify::eqNotifyTriggerTermEquality(TheoryId tag, TNode t1, TNode t2, bool value) {
+  Debug("arith::congruences") << "ArithCongruenceNotify::eqNotifyTriggerTermEquality(" << t1 << ", " << t2 << ", " << (value ? "true" : "false") << ")" << std::endl;
+  if (value) {
+    return d_acm.propagate(t1.eqNode(t2));
+  } else {
+    return d_acm.propagate(t1.eqNode(t2).notNode());
+  }
+}
+void ArithCongruenceManager::ArithCongruenceNotify::eqNotifyConstantTermMerge(TNode t1, TNode t2) {
+  Debug("arith::congruences") << "ArithCongruenceNotify::eqNotifyConstantTermMerge(" << t1 << ", " << t2 << std::endl;
+  d_acm.propagate(t1.eqNode(t2));
+}
+void ArithCongruenceManager::ArithCongruenceNotify::eqNotifyNewClass(TNode t) {
+  d_acm.eqNotifyNewClass(t);
+}
+void ArithCongruenceManager::ArithCongruenceNotify::eqNotifyPreMerge(TNode t1, TNode t2) {
+}
+void ArithCongruenceManager::ArithCongruenceNotify::eqNotifyPostMerge(TNode t1, TNode t2) {
+  d_acm.eqNotifyPostMerge(t1,t2);
+}
+void ArithCongruenceManager::ArithCongruenceNotify::eqNotifyDisequal(TNode t1, TNode t2, TNode reason) {
+}
+
+void ArithCongruenceManager::raiseConflict(Node conflict){
+  Assert(!inConflict());
+  Debug("arith::conflict") << "difference manager conflict   " << conflict << std::endl;
+  d_inConflict.raise();
+  d_raiseConflict.raiseEEConflict(conflict);
+}
+bool ArithCongruenceManager::inConflict() const{
+  return d_inConflict.isRaised();
+}
+
+bool ArithCongruenceManager::hasMorePropagations() const {
+  return !d_propagatations.empty();
+}
+const Node ArithCongruenceManager::getNextPropagation() {
+  Assert(hasMorePropagations());
+  Node prop = d_propagatations.front();
+  d_propagatations.dequeue();
+  return prop;
+}
+
+bool ArithCongruenceManager::canExplain(TNode n) const {
+  return d_explanationMap.find(n) != d_explanationMap.end();
+}
+
+void ArithCongruenceManager::setMasterEqualityEngine(eq::EqualityEngine* eq) {
+  d_ee.setMasterEqualityEngine(eq);
+}
+
+Node ArithCongruenceManager::externalToInternal(TNode n) const{
+  Assert(canExplain(n));
+  ExplainMap::const_iterator iter = d_explanationMap.find(n);
+  size_t pos = (*iter).second;
+  return d_propagatations[pos];
+}
+
+void ArithCongruenceManager::pushBack(TNode n){
+  d_explanationMap.insert(n, d_propagatations.size());
+  d_propagatations.enqueue(n);
+
+  ++(d_statistics.d_propagations);
+}
+void ArithCongruenceManager::pushBack(TNode n, TNode r){
+  d_explanationMap.insert(r, d_propagatations.size());
+  d_explanationMap.insert(n, d_propagatations.size());
+  d_propagatations.enqueue(n);
+
+  ++(d_statistics.d_propagations);
+}
+void ArithCongruenceManager::pushBack(TNode n, TNode r, TNode w){
+  d_explanationMap.insert(w, d_propagatations.size());
+  d_explanationMap.insert(r, d_propagatations.size());
+  d_explanationMap.insert(n, d_propagatations.size());
+  d_propagatations.enqueue(n);
+
+  ++(d_statistics.d_propagations);
+}
+
+void ArithCongruenceManager::watchedVariableIsZero(ConstraintCP lb, ConstraintCP ub){
+  Assert(lb->isLowerBound());
+  Assert(ub->isUpperBound());
+  Assert(lb->getVariable() == ub->getVariable());
+  Assert(lb->getValue().sgn() == 0);
+  Assert(ub->getValue().sgn() == 0);
+
+  ++(d_statistics.d_watchedVariableIsZero);
+
+  ArithVar s = lb->getVariable();
+  Node reason = Constraint::externalExplainByAssertions(lb,ub);
+
+  d_keepAlive.push_back(reason);
+  assertionToEqualityEngine(true, s, reason);
+}
+
+void ArithCongruenceManager::watchedVariableIsZero(ConstraintCP eq){
+  Assert(eq->isEquality());
+  Assert(eq->getValue().sgn() == 0);
+
+  ++(d_statistics.d_watchedVariableIsZero);
+
+  ArithVar s = eq->getVariable();
+
+  //Explain for conflict is correct as these proofs are generated
+  //and stored eagerly
+  //These will be safe for propagation later as well
+  Node reason = eq->externalExplainByAssertions();
+
+  d_keepAlive.push_back(reason);
+  assertionToEqualityEngine(true, s, reason);
+}
+
+void ArithCongruenceManager::watchedVariableCannotBeZero(ConstraintCP c){
+  ++(d_statistics.d_watchedVariableIsNotZero);
+
+  ArithVar s = c->getVariable();
+
+  //Explain for conflict is correct as these proofs are generated and stored eagerly
+  //These will be safe for propagation later as well
+  Node reason = c->externalExplainByAssertions();
+
+  d_keepAlive.push_back(reason);
+  assertionToEqualityEngine(false, s, reason);
+}
+
+
+bool ArithCongruenceManager::propagate(TNode x){
+  Debug("arith::congruenceManager")<< "ArithCongruenceManager::propagate("<<x<<")"<<std::endl;
+  if(inConflict()){
+    return true;
+  }
+
+  Node rewritten = Rewriter::rewrite(x);
+
+  //Need to still propagate this!
+  if(rewritten.getKind() == kind::CONST_BOOLEAN){
+    pushBack(x);
+
+    if(rewritten.getConst<bool>()){
+      return true;
+    }else{
+      ++(d_statistics.d_conflicts);
+
+      Node conf = flattenAnd(explainInternal(x));
+      raiseConflict(conf);
+      Debug("arith::congruenceManager") << "rewritten to false "<<x<<" with explanation "<< conf << std::endl;
+      return false;
+    }
+  }
+
+  Assert(rewritten.getKind() != kind::CONST_BOOLEAN);
+
+  ConstraintP c = d_constraintDatabase.lookup(rewritten);
+  if(c == NullConstraint){
+    //using setup as there may not be a corresponding congruence literal yet
+    d_setupLiteral(rewritten);
+    c = d_constraintDatabase.lookup(rewritten);
+    Assert(c != NullConstraint);
+  }
+
+  Debug("arith::congruenceManager")<< "x is "
+                                   <<  c->hasProof() << " "
+                                   << (x == rewritten) << " "
+                                   << c->canBePropagated() << " "
+                                   << c->negationHasProof() << std::endl;
+
+  if(c->negationHasProof()){
+    Node expC = explainInternal(x);
+    ConstraintCP negC = c->getNegation();
+    Node neg = negC->externalExplainByAssertions();
+    Node conf = expC.andNode(neg);
+    Node final = flattenAnd(conf);
+
+    ++(d_statistics.d_conflicts);
+    raiseConflict(final);
+    Debug("arith::congruenceManager") << "congruenceManager found a conflict " << final << std::endl;
+    return false;
+  }
+
+  // Cases for propagation
+  // C : c has a proof
+  // S : x == rewritten
+  // P : c can be propagated
+  //
+  // CSP
+  // 000 : propagate x, and mark C it as being explained
+  // 001 : propagate x, and propagate c after marking it as being explained
+  // 01* : propagate x, mark c but do not propagate c
+  // 10* : propagate x, do not mark c and do not propagate c
+  // 11* : drop the constraint, do not propagate x or c
+
+  if(!c->hasProof() && x != rewritten){
+    if(c->assertedToTheTheory()){
+      pushBack(x, rewritten, c->getWitness());
+    }else{
+      pushBack(x, rewritten);
+    }
+
+    c->setEqualityEngineProof();
+    if(c->canBePropagated() && !c->assertedToTheTheory()){
+
+      ++(d_statistics.d_propagateConstraints);
+      c->propagate();
+    }
+  }else if(!c->hasProof() && x == rewritten){
+    if(c->assertedToTheTheory()){
+      pushBack(x, c->getWitness());
+    }else{
+      pushBack(x);
+    }
+    c->setEqualityEngineProof();
+  }else if(c->hasProof() && x != rewritten){
+    if(c->assertedToTheTheory()){
+      pushBack(x);
+    }else{
+      pushBack(x);
+    }
+  }else{
+    Assert(c->hasProof() && x == rewritten);
+  }
+  return true;
+}
+
+void ArithCongruenceManager::explain(TNode literal, std::vector<TNode>& assumptions) {
+  if (literal.getKind() != kind::NOT) {
+    d_ee.explainEquality(literal[0], literal[1], true, assumptions);
+  } else {
+    d_ee.explainEquality(literal[0][0], literal[0][1], false, assumptions);
+  }
+}
+
+void ArithCongruenceManager::enqueueIntoNB(const std::set<TNode> s, NodeBuilder<>& nb){
+  std::set<TNode>::const_iterator it = s.begin();
+  std::set<TNode>::const_iterator it_end = s.end();
+  for(; it != it_end; ++it) {
+    nb << *it;
+  }
+}
+
+Node ArithCongruenceManager::explainInternal(TNode internal){
+  std::vector<TNode> assumptions;
+  explain(internal, assumptions);
+
+  std::set<TNode> assumptionSet;
+  assumptionSet.insert(assumptions.begin(), assumptions.end());
+
+  if (assumptionSet.size() == 1) {
+    // All the same, or just one
+    return assumptions[0];
+  }else{
+    NodeBuilder<> conjunction(kind::AND);
+    enqueueIntoNB(assumptionSet, conjunction);
+    return conjunction;
+  }
+}
+
+void ArithCongruenceManager::eqNotifyNewClass(TNode t) {
+  if( d_eq_infer ){
+    d_eq_infer->eqNotifyNewClass(t);
+    fixpointInfer();
+  }
+}
+void ArithCongruenceManager::eqNotifyPostMerge(TNode t1, TNode t2) {
+  if( d_eq_infer ){
+    d_eq_infer->eqNotifyMerge(t1, t2);
+    fixpointInfer();
+  }
+}
+
+Node ArithCongruenceManager::explain(TNode external){
+  Trace("arith-ee") << "Ask for explanation of " << external << std::endl;
+  Node internal = externalToInternal(external);
+  Trace("arith-ee") << "...internal = " << internal << std::endl;
+  return explainInternal(internal);
+}
+
+void ArithCongruenceManager::explain(TNode external, NodeBuilder<>& out){
+  Node internal = externalToInternal(external);
+
+  std::vector<TNode> assumptions;
+  explain(internal, assumptions);
+  std::set<TNode> assumptionSet;
+  assumptionSet.insert(assumptions.begin(), assumptions.end());
+
+  enqueueIntoNB(assumptionSet, out);
+}
+
+void ArithCongruenceManager::addWatchedPair(ArithVar s, TNode x, TNode y){
+  Assert(!isWatchedVariable(s));
+
+  Debug("arith::congruenceManager")
+    << "addWatchedPair(" << s << ", " << x << ", " << y << ")" << std::endl;
+
+
+  ++(d_statistics.d_watchedVariables);
+
+  d_watchedVariables.add(s);
+
+  Node eq = x.eqNode(y);
+  d_watchedEqualities.set(s, eq);
+}
+
+void ArithCongruenceManager::assertionToEqualityEngine(bool isEquality, ArithVar s, TNode reason){
+  Assert(isWatchedVariable(s));
+
+  TNode eq = d_watchedEqualities[s];
+  Assert(eq.getKind() == kind::EQUAL);
+
+  Trace("arith-ee") << "Assert " << eq << ", pol " << isEquality << ", reason " << reason << std::endl;
+  if(isEquality){
+    d_ee.assertEquality(eq, true, reason);
+  }else{
+    d_ee.assertEquality(eq, false, reason);
+  }
+}
+
+void ArithCongruenceManager::equalsConstant(ConstraintCP c){
+  Assert(c->isEquality());
+
+  ++(d_statistics.d_equalsConstantCalls);
+  Debug("equalsConstant") << "equals constant " << c << std::endl;
+
+  ArithVar x = c->getVariable();
+  Node xAsNode = d_avariables.asNode(x);
+  Node asRational = mkRationalNode(c->getValue().getNoninfinitesimalPart());
+
+
+  //No guarentee this is in normal form!
+  Node eq = xAsNode.eqNode(asRational);
+  d_keepAlive.push_back(eq);
+
+  Node reason = c->externalExplainByAssertions();
+  d_keepAlive.push_back(reason);
+
+  Trace("arith-ee") << "Assert equalsConstant " << eq << ", reason " << reason << std::endl;
+  d_ee.assertEquality(eq, true, reason);
+}
+
+void ArithCongruenceManager::equalsConstant(ConstraintCP lb, ConstraintCP ub){
+  Assert(lb->isLowerBound());
+  Assert(ub->isUpperBound());
+  Assert(lb->getVariable() == ub->getVariable());
+
+  ++(d_statistics.d_equalsConstantCalls);
+  Debug("equalsConstant") << "equals constant " << lb << std::endl
+                          << ub << std::endl;
+
+  ArithVar x = lb->getVariable();
+  Node reason = Constraint::externalExplainByAssertions(lb,ub);
+
+  Node xAsNode = d_avariables.asNode(x);
+  Node asRational = mkRationalNode(lb->getValue().getNoninfinitesimalPart());
+
+  //No guarentee this is in normal form!
+  Node eq = xAsNode.eqNode(asRational);
+  d_keepAlive.push_back(eq);
+  d_keepAlive.push_back(reason);
+
+  Trace("arith-ee") << "Assert equalsConstant2 " << eq << ", reason " << reason << std::endl;
+  d_ee.assertEquality(eq, true, reason);
+}
+
+void ArithCongruenceManager::addSharedTerm(Node x){
+  d_ee.addTriggerTerm(x, THEORY_ARITH);
+}
+
+bool ArithCongruenceManager::fixpointInfer() {
+  if( d_eq_infer ){
+    while(! inConflict() && d_eqi_counter.get()<d_eq_infer->getNumPendingMerges() ) {
+      Trace("snorm-infer-eq-debug") << "Processing " << d_eqi_counter.get() << " / " << d_eq_infer->getNumPendingMerges() << std::endl;
+      Node eq = d_eq_infer->getPendingMerge( d_eqi_counter.get() );
+      Trace("snorm-infer-eq") << "ArithCongruenceManager : Infer by normalization : " << eq << std::endl;
+      if( !d_ee.areEqual( eq[0], eq[1] ) ){
+        Node eq_exp = d_eq_infer->getPendingMergeExplanation( d_eqi_counter.get() );
+        Trace("snorm-infer-eq") << "           explanation : " << eq_exp << std::endl;
+        //regress explanation
+        std::vector<TNode> assumptions;
+        if( eq_exp.getKind()==kind::AND ){
+          for( unsigned i=0; i<eq_exp.getNumChildren(); i++ ){
+            explain( eq_exp[i], assumptions );
+          }
+        }else if( eq_exp.getKind()==kind::EQUAL ){
+          explain( eq_exp, assumptions );
+        }else{
+          //eq_exp should be true
+          Assert( eq_exp==d_true );
+        }
+        Node req_exp;
+        if( assumptions.empty() ){
+          req_exp = d_true;
+        }else{
+          std::set<TNode> assumptionSet;
+          assumptionSet.insert(assumptions.begin(), assumptions.end());
+          if( assumptionSet.size()==1 ){
+            req_exp = assumptions[0];
+          }else{
+            NodeBuilder<> conjunction(kind::AND);
+            enqueueIntoNB(assumptionSet, conjunction);
+            req_exp = conjunction;
+          }
+        }
+        Trace("snorm-infer-eq") << " regressed explanation : " << req_exp << std::endl;
+        d_ee.assertEquality( eq, true, req_exp );
+        d_keepAlive.push_back( req_exp );
+      }else{
+        Trace("snorm-infer-eq") << "...already equal." << std::endl;
+      }
+      d_eqi_counter = d_eqi_counter.get() + 1;
+    }
+  }
+  return inConflict();
+}
+
+
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/congruence_manager.h b/src/theory/arith/congruence_manager.h
new file mode 100644
index 0000000..a02f36a
--- /dev/null
+++ b/src/theory/arith/congruence_manager.h
@@ -0,0 +1,199 @@
+/*********************                                                        */
+/*! \file congruence_manager.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Dejan Jovanovic, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "context/cdlist.h"
+#include "context/cdmaybe.h"
+#include "context/cdo.h"
+#include "context/cdtrail_queue.h"
+#include "context/context.h"
+#include "theory/arith/arithvar.h"
+#include "theory/arith/constraint_forward.h"
+#include "theory/arith/partial_model.h"
+#include "theory/uf/equality_engine.h"
+#include "util/dense_map.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+
+namespace quantifiers {
+class EqualityInference;
+}
+
+namespace arith {
+
+class ArithCongruenceManager {
+private:
+  context::CDRaised d_inConflict;
+  RaiseEqualityEngineConflict d_raiseConflict;
+
+  /**
+   * The set of ArithVars equivalent to a pair of terms.
+   * If this is 0 or cannot be 0, this can be signalled.
+   * The pair of terms for the congruence is stored in watched equalities.
+   */
+  DenseSet d_watchedVariables;
+  /** d_watchedVariables |-> (= x y) */
+  ArithVarToNodeMap d_watchedEqualities;
+
+
+  class ArithCongruenceNotify : public eq::EqualityEngineNotify {
+  private:
+    ArithCongruenceManager& d_acm;
+  public:
+    ArithCongruenceNotify(ArithCongruenceManager& acm);
+
+    bool eqNotifyTriggerEquality(TNode equality, bool value);
+
+    bool eqNotifyTriggerPredicate(TNode predicate, bool value);
+
+    bool eqNotifyTriggerTermEquality(TheoryId tag, TNode t1, TNode t2, bool value);
+
+    void eqNotifyConstantTermMerge(TNode t1, TNode t2);
+    void eqNotifyNewClass(TNode t);
+    void eqNotifyPreMerge(TNode t1, TNode t2);
+    void eqNotifyPostMerge(TNode t1, TNode t2);
+    void eqNotifyDisequal(TNode t1, TNode t2, TNode reason);
+  };
+  ArithCongruenceNotify d_notify;
+  
+  /** module for shostak normalization, d_eqi_counter is how many pending merges in d_eq_infer we have processed */
+  quantifiers::EqualityInference * d_eq_infer;
+  context::CDO< unsigned > d_eqi_counter;
+  Node d_true;
+
+  context::CDList<Node> d_keepAlive;
+
+  /** Store the propagations. */
+  context::CDTrailQueue<Node> d_propagatations;
+
+  /* This maps the node a theory engine will request on an explain call to
+   * to its corresponding PropUnit.
+   * This is node is potentially both the propagation or
+   * Rewriter::rewrite(propagation).
+   */
+  typedef context::CDHashMap<Node, size_t, NodeHashFunction> ExplainMap;
+  ExplainMap d_explanationMap;
+
+  ConstraintDatabase& d_constraintDatabase;
+  SetupLiteralCallBack d_setupLiteral;
+
+  const ArithVariables& d_avariables;
+
+  eq::EqualityEngine d_ee;
+
+  void raiseConflict(Node conflict);
+public:
+
+  bool inConflict() const;
+
+  bool hasMorePropagations() const;
+
+  const Node getNextPropagation();
+
+  bool canExplain(TNode n) const;
+
+  void setMasterEqualityEngine(eq::EqualityEngine* eq);
+
+private:
+  Node externalToInternal(TNode n) const;
+
+  void pushBack(TNode n);
+
+  void pushBack(TNode n, TNode r);
+
+  void pushBack(TNode n, TNode r, TNode w);
+
+  bool propagate(TNode x);
+  void explain(TNode literal, std::vector<TNode>& assumptions);
+
+
+  /** This sends a shared term to the uninterpreted equality engine. */
+  void assertionToEqualityEngine(bool eq, ArithVar s, TNode reason);
+
+  /** Dequeues the delay queue and asserts these equalities.*/
+  void enableSharedTerms();
+  void dequeueLiterals();
+
+  void enqueueIntoNB(const std::set<TNode> all, NodeBuilder<>& nb);
+
+  Node explainInternal(TNode internal);
+
+  void eqNotifyNewClass(TNode t);
+  void eqNotifyPostMerge(TNode t1, TNode t2);
+public:
+
+  ArithCongruenceManager(context::Context* satContext, ConstraintDatabase&, SetupLiteralCallBack, const ArithVariables&, RaiseEqualityEngineConflict raiseConflict);
+  ~ArithCongruenceManager();
+
+  Node explain(TNode literal);
+  void explain(TNode lit, NodeBuilder<>& out);
+
+  void addWatchedPair(ArithVar s, TNode x, TNode y);
+
+  inline bool isWatchedVariable(ArithVar s) const {
+    return d_watchedVariables.isMember(s);
+  }
+
+  /** Assert an equality. */
+  void watchedVariableIsZero(ConstraintCP eq);
+
+  /** Assert a conjunction from lb and ub. */
+  void watchedVariableIsZero(ConstraintCP lb, ConstraintCP ub);
+
+  /** Assert that the value cannot be zero. */
+  void watchedVariableCannotBeZero(ConstraintCP c);
+
+  /** Assert that the value cannot be zero. */
+  void watchedVariableCannotBeZero(ConstraintCP c, ConstraintCP d);
+
+
+  /** Assert that the value is congruent to a constant. */
+  void equalsConstant(ConstraintCP eq);
+  void equalsConstant(ConstraintCP lb, ConstraintCP ub);
+
+
+  void addSharedTerm(Node x);
+
+  /** process inferred equalities based on Shostak normalization */
+  bool fixpointInfer();
+private:
+  class Statistics {
+  public:
+    IntStat d_watchedVariables;
+    IntStat d_watchedVariableIsZero;
+    IntStat d_watchedVariableIsNotZero;
+
+    IntStat d_equalsConstantCalls;
+
+    IntStat d_propagations;
+    IntStat d_propagateConstraints;
+    IntStat d_conflicts;
+
+    Statistics();
+    ~Statistics();
+  } d_statistics;
+
+};/* class ArithCongruenceManager */
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/constraint.cpp b/src/theory/arith/constraint.cpp
new file mode 100644
index 0000000..a82ec4c
--- /dev/null
+++ b/src/theory/arith/constraint.cpp
@@ -0,0 +1,1895 @@
+/*********************                                                        */
+/*! \file constraint.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+#include "theory/arith/constraint.h"
+
+#include <ostream>
+#include <algorithm>
+
+#include "base/output.h"
+#include "proof/proof.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/arith/arith_utilities.h"
+#include "theory/arith/normal_form.h"
+
+
+using namespace std;
+using namespace CVC4::kind;
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+/** Given a simplifiedKind this returns the corresponding ConstraintType. */
+//ConstraintType constraintTypeOfLiteral(Kind k);
+ConstraintType Constraint::constraintTypeOfComparison(const Comparison& cmp){
+  Kind k = cmp.comparisonKind();
+  switch(k){
+  case LT:
+  case LEQ:
+    {
+      Polynomial l = cmp.getLeft();
+      if(l.leadingCoefficientIsPositive()){ // (< x c)
+        return UpperBound;
+      }else{
+        return LowerBound; // (< (-x) c)
+      }
+    }
+  case GT:
+  case GEQ:
+    {
+      Polynomial l = cmp.getLeft();
+      if(l.leadingCoefficientIsPositive()){
+        return LowerBound; // (> x c)
+      }else{
+        return UpperBound; // (> (-x) c)
+      }
+    }
+  case EQUAL:
+    return Equality;
+  case DISTINCT:
+    return Disequality;
+  default:
+    Unhandled(k);
+  }
+}
+
+Constraint::Constraint(ArithVar x,  ConstraintType t, const DeltaRational& v)
+  : d_variable(x),
+    d_type(t),
+    d_value(v),
+    d_database(NULL),
+    d_literal(Node::null()),
+    d_negation(NullConstraint),
+    d_canBePropagated(false),
+    d_assertionOrder(AssertionOrderSentinel),
+    d_witness(TNode::null()),
+    d_crid(ConstraintRuleIdSentinel),
+    d_split(false),
+    d_variablePosition()
+{
+  Assert(!initialized());
+}
+
+
+std::ostream& operator<<(std::ostream& o, const ArithProofType apt){
+  switch(apt){
+  case NoAP:  o << "NoAP"; break;
+  case AssumeAP:  o << "AssumeAP"; break;
+  case InternalAssumeAP:  o << "InternalAssumeAP"; break;
+  case FarkasAP:  o << "FarkasAP"; break;
+  case TrichotomyAP:  o << "TrichotomyAP"; break;
+  case EqualityEngineAP:  o << "EqualityEngineAP"; break;
+  case IntHoleAP: o << "IntHoleAP"; break;
+  default: break;
+  }
+  return o;
+}
+
+std::ostream& operator<<(std::ostream& o, const ConstraintCP c){
+  if(c == NullConstraint){
+    return o << "NullConstraint";
+  }else{
+    return o << *c;
+  }
+}
+
+std::ostream& operator<<(std::ostream& o, const ConstraintP c){
+  if(c == NullConstraint){
+    return o << "NullConstraint";
+  }else{
+    return o << *c;
+  }
+}
+
+std::ostream& operator<<(std::ostream& o, const ConstraintType t){
+  switch(t){
+  case LowerBound:
+    return o << ">=";
+  case UpperBound:
+    return o << "<=";
+  case Equality:
+    return o << "=";
+  case Disequality:
+    return o << "!=";
+  default:
+    Unreachable();
+  }
+}
+
+std::ostream& operator<<(std::ostream& o, const Constraint& c){
+  o << c.getVariable() << ' ' << c.getType() << ' ' << c.getValue();
+  if(c.hasLiteral()){
+    o << "(node " << c.getLiteral() << ')';
+  }
+  return o;
+}
+
+std::ostream& operator<<(std::ostream& o, const ValueCollection& vc){
+  o << "{";
+  bool pending = false;
+  if(vc.hasEquality()){
+    o << "eq: " << vc.getEquality();
+    pending = true;
+  }
+  if(vc.hasLowerBound()){
+    if(pending){
+      o << ", ";
+    }
+    o << "lb: " << vc.getLowerBound();
+    pending = true;
+  }
+  if(vc.hasUpperBound()){
+    if(pending){
+      o << ", ";
+    }
+    o << "ub: " << vc.getUpperBound();
+    pending = true;
+  }
+  if(vc.hasDisequality()){
+    if(pending){
+      o << ", ";
+    }
+    o << "de: " << vc.getDisequality();
+  }
+  return o << "}";
+}
+
+std::ostream& operator<<(std::ostream& o, const ConstraintCPVec& v){
+  o << "[" << v.size() << "x";
+  ConstraintCPVec::const_iterator i, end;
+  for(i=v.begin(), end=v.end(); i != end; ++i){
+    ConstraintCP c = *i;
+    o << ", " << (*c);
+  }
+  o << "]";
+  return o;
+}
+
+void Constraint::debugPrint() const {
+  Message() << *this << endl;
+}
+
+
+ValueCollection::ValueCollection()
+  : d_lowerBound(NullConstraint),
+    d_upperBound(NullConstraint),
+    d_equality(NullConstraint),
+    d_disequality(NullConstraint)
+{}
+
+bool ValueCollection::hasLowerBound() const{
+  return d_lowerBound != NullConstraint;
+}
+
+bool ValueCollection::hasUpperBound() const{
+  return d_upperBound != NullConstraint;
+}
+
+bool ValueCollection::hasEquality() const{
+  return d_equality != NullConstraint;
+}
+
+bool ValueCollection::hasDisequality() const {
+  return d_disequality != NullConstraint;
+}
+
+ConstraintP ValueCollection::getLowerBound() const {
+  Assert(hasLowerBound());
+  return d_lowerBound;
+}
+
+ConstraintP ValueCollection::getUpperBound() const {
+  Assert(hasUpperBound());
+  return d_upperBound;
+}
+
+ConstraintP ValueCollection::getEquality() const {
+  Assert(hasEquality());
+  return d_equality;
+}
+
+ConstraintP ValueCollection::getDisequality() const {
+  Assert(hasDisequality());
+  return d_disequality;
+}
+
+
+void ValueCollection::push_into(std::vector<ConstraintP>& vec) const {
+  Debug("arith::constraint") << "push_into " << *this << endl;
+  if(hasEquality()){
+    vec.push_back(d_equality);
+  }
+  if(hasLowerBound()){
+    vec.push_back(d_lowerBound);
+  }
+  if(hasUpperBound()){
+    vec.push_back(d_upperBound);
+  }
+  if(hasDisequality()){
+    vec.push_back(d_disequality);
+  }
+}
+
+ValueCollection ValueCollection::mkFromConstraint(ConstraintP c){
+  ValueCollection ret;
+  Assert(ret.empty());
+  switch(c->getType()){
+  case LowerBound:
+    ret.d_lowerBound = c;
+    break;
+  case UpperBound:
+    ret.d_upperBound = c;
+    break;
+  case Equality:
+    ret.d_equality = c;
+    break;
+  case Disequality:
+    ret.d_disequality = c;
+    break;
+  default:
+    Unreachable();
+  }
+  return ret;
+}
+
+bool ValueCollection::hasConstraintOfType(ConstraintType t) const{
+  switch(t){
+  case LowerBound:
+    return hasLowerBound();
+  case UpperBound:
+    return hasUpperBound();
+  case Equality:
+    return hasEquality();
+  case Disequality:
+    return hasDisequality();
+  default:
+    Unreachable();
+  }
+}
+
+ArithVar ValueCollection::getVariable() const{
+  Assert(!empty());
+  return nonNull()->getVariable();
+}
+
+const DeltaRational& ValueCollection::getValue() const{
+  Assert(!empty());
+  return nonNull()->getValue();
+}
+
+void ValueCollection::add(ConstraintP c){
+  Assert(c != NullConstraint);
+
+  Assert(empty() || getVariable() == c->getVariable());
+  Assert(empty() || getValue() == c->getValue());
+
+  switch(c->getType()){
+  case LowerBound:
+    Assert(!hasLowerBound());
+    d_lowerBound = c;
+    break;
+  case Equality:
+    Assert(!hasEquality());
+    d_equality = c;
+    break;
+  case UpperBound:
+    Assert(!hasUpperBound());
+    d_upperBound = c;
+    break;
+  case Disequality:
+    Assert(!hasDisequality());
+    d_disequality = c;
+    break;
+  default:
+    Unreachable();
+  }
+}
+
+ConstraintP ValueCollection::getConstraintOfType(ConstraintType t) const{
+  switch(t){
+  case LowerBound:
+    Assert(hasLowerBound());
+    return d_lowerBound;
+  case Equality:
+    Assert(hasEquality());
+    return d_equality;
+  case UpperBound:
+    Assert(hasUpperBound());
+    return d_upperBound;
+  case Disequality:
+    Assert(hasDisequality());
+    return d_disequality;
+  default:
+    Unreachable();
+  }
+}
+
+void ValueCollection::remove(ConstraintType t){
+  switch(t){
+  case LowerBound:
+    Assert(hasLowerBound());
+    d_lowerBound = NullConstraint;
+    break;
+  case Equality:
+    Assert(hasEquality());
+    d_equality = NullConstraint;
+    break;
+  case UpperBound:
+    Assert(hasUpperBound());
+    d_upperBound = NullConstraint;
+    break;
+  case Disequality:
+    Assert(hasDisequality());
+    d_disequality = NullConstraint;
+    break;
+  default:
+    Unreachable();
+  }
+}
+
+bool ValueCollection::empty() const{
+  return
+    !(hasLowerBound() ||
+      hasUpperBound() ||
+      hasEquality() ||
+      hasDisequality());
+}
+
+ConstraintP ValueCollection::nonNull() const{
+  //This can be optimized by caching, but this is not necessary yet!
+  /* "Premature optimization is the root of all evil." */
+  if(hasLowerBound()){
+    return d_lowerBound;
+  }else if(hasUpperBound()){
+    return d_upperBound;
+  }else if(hasEquality()){
+    return d_equality;
+  }else if(hasDisequality()){
+    return d_disequality;
+  }else{
+    return NullConstraint;
+  }
+}
+
+bool Constraint::initialized() const {
+  return d_database != NULL;
+}
+
+const ConstraintDatabase& Constraint::getDatabase() const{
+  Assert(initialized());
+  return *d_database;
+}
+
+void Constraint::initialize(ConstraintDatabase* db, SortedConstraintMapIterator v, ConstraintP negation){
+  Assert(!initialized());
+  d_database = db;
+  d_variablePosition = v;
+  d_negation = negation;
+}
+
+Constraint::~Constraint() {
+  // Call this instead of safeToGarbageCollect()
+  Assert(!contextDependentDataIsSet());
+
+  if(initialized()){
+    ValueCollection& vc =  d_variablePosition->second;
+    Debug("arith::constraint") << "removing" << vc << endl;
+
+    vc.remove(getType());
+
+    if(vc.empty()){
+      Debug("arith::constraint") << "erasing" << vc << endl;
+      SortedConstraintMap& perVariable = d_database->getVariableSCM(getVariable());
+      perVariable.erase(d_variablePosition);
+    }
+
+    if(hasLiteral()){
+      d_database->d_nodetoConstraintMap.erase(getLiteral());
+    }
+  }
+}
+
+const ConstraintRule& Constraint::getConstraintRule() const {
+  Assert(hasProof());
+  return d_database->d_watches->d_constraintProofs[d_crid];
+}
+
+const ValueCollection& Constraint::getValueCollection() const{
+  return d_variablePosition->second;
+}
+
+
+ConstraintP Constraint::getCeiling() {
+  Debug("getCeiling") << "Constraint_::getCeiling on " << *this << endl;
+  Assert(getValue().getInfinitesimalPart().sgn() > 0);
+
+  DeltaRational ceiling(getValue().ceiling());
+
+  // TODO: "Optimize via the iterator"
+  return d_database->getConstraint(getVariable(), getType(), ceiling);
+}
+
+ConstraintP Constraint::getFloor() {
+  Assert(getValue().getInfinitesimalPart().sgn() < 0);
+
+  DeltaRational floor(Rational(getValue().floor()));
+
+  // TODO: "Optimize via the iterator"
+  return d_database->getConstraint(getVariable(), getType(), floor);
+}
+
+void Constraint::setCanBePropagated() {
+  Assert(!canBePropagated());
+  d_database->pushCanBePropagatedWatch(this);
+}
+
+void Constraint::setAssertedToTheTheory(TNode witness, bool nowInConflict) {
+  Assert(hasLiteral());
+  Assert(!assertedToTheTheory());
+  Assert(negationHasProof() == nowInConflict);
+  d_database->pushAssertionOrderWatch(this, witness);
+
+  if(Debug.isOn("constraint::conflictCommit") && nowInConflict ){
+    Debug("constraint::conflictCommit") << "inConflict at setAssertedToTheTheory";
+    Debug("constraint::conflictCommit") << "\t" << this << std::endl;
+    Debug("constraint::conflictCommit") << "\t" << getNegation() << std::endl;
+    Debug("constraint::conflictCommit") << "\t" << getNegation()->externalExplainByAssertions() << std::endl;
+
+  }
+}
+
+bool Constraint::satisfiedBy(const DeltaRational& dr) const {
+  switch(getType()){
+  case LowerBound:
+    return getValue() <= dr;
+  case Equality:
+    return getValue() == dr;
+  case UpperBound:
+    return getValue() >= dr;
+  case Disequality:
+    return getValue() != dr;
+  }
+  Unreachable();
+}
+
+bool Constraint::isInternalAssumption() const {
+  return getProofType() == InternalAssumeAP;
+}
+
+bool Constraint::isAssumption() const {
+  return getProofType() == AssumeAP;
+}
+
+bool Constraint::hasEqualityEngineProof() const {
+  return getProofType() == EqualityEngineAP;
+}
+
+bool Constraint::hasFarkasProof() const {
+  return getProofType() == FarkasAP;
+}
+
+bool Constraint::hasIntHoleProof() const {
+  return getProofType() == IntHoleAP;
+}
+
+bool Constraint::hasTrichotomyProof() const {
+  return getProofType() == TrichotomyAP;
+}
+
+bool Constraint::sanityChecking(Node n) const {
+  Comparison cmp = Comparison::parseNormalForm(n);
+  Kind k = cmp.comparisonKind();
+  Polynomial pleft = cmp.normalizedVariablePart();
+  Assert(k == EQUAL || k == DISTINCT || pleft.leadingCoefficientIsPositive());
+  Assert(k != EQUAL || Monomial::isMember(n[0]));
+  Assert(k != DISTINCT || Monomial::isMember(n[0][0]));
+
+  TNode left = pleft.getNode();
+  DeltaRational right = cmp.normalizedDeltaRational();
+
+  const ArithVariables& avariables = d_database->getArithVariables();
+
+  Debug("Constraint::sanityChecking") << cmp.getNode() << endl;
+  Debug("Constraint::sanityChecking") << k << endl;
+  Debug("Constraint::sanityChecking") << pleft.getNode() << endl;
+  Debug("Constraint::sanityChecking") << left << endl;
+  Debug("Constraint::sanityChecking") << right << endl;
+  Debug("Constraint::sanityChecking") << getValue() << endl;
+  Debug("Constraint::sanityChecking") << avariables.hasArithVar(left) << endl;
+  Debug("Constraint::sanityChecking") << avariables.asArithVar(left) << endl;
+  Debug("Constraint::sanityChecking") << getVariable() << endl;
+
+
+  if(avariables.hasArithVar(left) &&
+     avariables.asArithVar(left) == getVariable() &&
+     getValue() == right){
+    switch(getType()){
+    case LowerBound:
+    case UpperBound:
+      //Be overapproximate
+      return k == GT || k == GEQ ||k == LT || k == LEQ;
+    case Equality:
+      return k == EQUAL;
+    case Disequality:
+      return k == DISTINCT;
+    default:
+      Unreachable();
+    }
+  }else{
+    return false;
+  }
+}
+
+void ConstraintRule::debugPrint() const {
+  print(std::cerr);
+}
+
+ConstraintCP ConstraintDatabase::getAntecedent (AntecedentId p) const {
+  Assert(p < d_antecedents.size());
+  return d_antecedents[p];
+}
+
+
+void ConstraintRule::print(std::ostream& out) const {
+  
+  RationalVectorCP coeffs = NULLPROOF(d_farkasCoefficients);
+  out << "{ConstraintRule, ";
+  out << d_constraint << std::endl;
+  out << "d_proofType= " << d_proofType << ", " << std::endl;
+  out << "d_antecedentEnd= "<< d_antecedentEnd << std::endl;
+  
+  if(d_constraint != NullConstraint){
+    const ConstraintDatabase& database = d_constraint->getDatabase();
+    
+    size_t coeffIterator = (coeffs != RationalVectorCPSentinel) ? coeffs->size()-1 : 0;
+    AntecedentId p = d_antecedentEnd;
+    // must have at least one antecedent
+    ConstraintCP antecedent = database.getAntecedent(p);
+    while(antecedent != NullConstraint){
+      if(coeffs != RationalVectorCPSentinel){
+        out << coeffs->at(coeffIterator);
+      } else {
+        out << "_";
+      }
+      out << " * (" << *antecedent << ")" << std::endl;
+      
+      Assert((coeffs == RationalVectorCPSentinel) || coeffIterator > 0);
+      --p;
+      coeffIterator = (coeffs != RationalVectorCPSentinel) ? coeffIterator-1 : 0;
+      antecedent = database.getAntecedent(p);
+    }
+    if(coeffs != RationalVectorCPSentinel){
+      out << coeffs->front();
+    } else {
+      out << "_";
+    }
+    out << " * (" << *(d_constraint->getNegation()) << ")";
+    out << " [not d_constraint] " << endl;
+  }
+  out << "}";  
+}
+
+bool Constraint::wellFormedFarkasProof() const {
+  Assert(hasProof());
+  
+  const ConstraintRule& cr = getConstraintRule();
+  if(cr.d_constraint != this){ return false; }
+  if(cr.d_proofType != FarkasAP){ return false; }
+
+  AntecedentId p = cr.d_antecedentEnd;
+
+  // must have at least one antecedent
+  ConstraintCP antecedent = d_database->d_antecedents[p];
+  if(antecedent  == NullConstraint) { return false; }
+
+#if IS_PROOFS_BUILD
+  if(!PROOF_ON()){ return cr.d_farkasCoefficients == RationalVectorCPSentinel; }
+  Assert(PROOF_ON());
+
+  if(cr.d_farkasCoefficients == RationalVectorCPSentinel){ return false; }
+  if(cr.d_farkasCoefficients->size() < 2){ return false; }
+
+  const ArithVariables& vars = d_database->getArithVariables();
+
+  DeltaRational rhs(0);
+  Node lhs = Polynomial::mkZero().getNode();
+
+  RationalVector::const_iterator coeffIterator = cr.d_farkasCoefficients->end()-1;
+  RationalVector::const_iterator coeffBegin = cr.d_farkasCoefficients->begin();
+
+  while(antecedent != NullConstraint){
+    Assert(lhs.isNull() || Polynomial::isMember(lhs));
+
+    const Rational& coeff = *coeffIterator;
+    int coeffSgn = coeff.sgn();
+
+    rhs += antecedent->getValue() * coeff;
+
+    ArithVar antVar = antecedent->getVariable();
+    if(!lhs.isNull() && vars.hasNode(antVar)){
+      Node antAsNode = vars.asNode(antVar);
+      if(Polynomial::isMember(antAsNode)){
+        Polynomial lhsPoly = Polynomial::parsePolynomial(lhs);
+        Polynomial antPoly = Polynomial::parsePolynomial(antAsNode);
+        Polynomial sum = lhsPoly + (antPoly * coeff);
+        lhs = sum.getNode();
+      }else{
+        lhs = Node::null();
+      }
+    } else {
+      lhs = Node::null();
+    }
+    Debug("constraints::wffp") << "running sum: " << lhs << " <= " << rhs << endl;
+
+    switch( antecedent->getType() ){
+    case LowerBound:
+      // fc[l] < 0, therefore return false if coeffSgn >= 0
+      if(coeffSgn >= 0){ return false; }
+      break;
+    case UpperBound:
+      // fc[u] > 0, therefore return false if coeffSgn <= 0
+      if(coeffSgn <= 0){ return false; }
+      break;
+    case Equality:
+      if(coeffSgn == 0) { return false; }
+      break;
+    case Disequality:
+    default:
+      return false;
+    }
+    
+    if(coeffIterator == coeffBegin){ return false; }
+    --coeffIterator;
+    --p;
+    antecedent = d_database->d_antecedents[p];
+  }
+  if(coeffIterator != coeffBegin){ return false; }
+
+  const Rational& firstCoeff = (*coeffBegin);
+  int firstCoeffSgn = firstCoeff.sgn();
+  rhs += (getNegation()->getValue()) * firstCoeff;
+  if(!lhs.isNull() && vars.hasNode(getVariable())){
+    Node firstAsNode = vars.asNode(getVariable());
+    if(Polynomial::isMember(firstAsNode)){
+      Polynomial lhsPoly = Polynomial::parsePolynomial(lhs);
+      Polynomial firstPoly = Polynomial::parsePolynomial(firstAsNode);
+      Polynomial sum = lhsPoly + (firstPoly * firstCoeff);
+      lhs = sum.getNode();
+    }else{
+      lhs = Node::null();
+    }
+  }else{
+    lhs = Node::null();
+  }
+
+  switch( getNegation()->getType() ){
+  case LowerBound:
+    // fc[l] < 0, therefore return false if coeffSgn >= 0
+    if(firstCoeffSgn >= 0){ return false; }
+    break;
+  case UpperBound:
+    // fc[u] > 0, therefore return false if coeffSgn <= 0
+    if(firstCoeffSgn <= 0){ return false; }
+    break;
+  case Equality:
+    if(firstCoeffSgn == 0) { return false; }
+    break;
+  case Disequality:
+  default:
+    return false;
+  }
+  Debug("constraints::wffp") << "final sum: " << lhs << " <= " << rhs << endl;
+  // 0 = lhs <= rhs < 0
+  return
+    (lhs.isNull() || Constant::isMember(lhs) && Constant(lhs).isZero() ) &&
+    rhs.sgn() < 0;
+
+#else  /* IS_PROOFS_BUILD */
+  return true;
+#endif /* IS_PROOFS_BUILD */
+}
+
+ConstraintP Constraint::makeNegation(ArithVar v, ConstraintType t, const DeltaRational& r){
+  switch(t){
+  case LowerBound:
+    {
+      Assert(r.infinitesimalSgn() >= 0);
+      if(r.infinitesimalSgn() > 0){
+        Assert(r.getInfinitesimalPart() == 1);
+        // make (not (v > r)), which is (v <= r)
+        DeltaRational dropInf(r.getNoninfinitesimalPart(), 0);
+        return new Constraint(v, UpperBound, dropInf);
+      }else{
+        Assert(r.infinitesimalSgn() == 0);
+        // make (not (v >= r)), which is (v < r)
+        DeltaRational addInf(r.getNoninfinitesimalPart(), -1);
+        return new Constraint(v, UpperBound, addInf);
+      }
+    }
+  case UpperBound:
+    {
+      Assert(r.infinitesimalSgn() <= 0);
+      if(r.infinitesimalSgn() < 0){
+        Assert(r.getInfinitesimalPart() == -1);
+        // make (not (v < r)), which is (v >= r)
+        DeltaRational dropInf(r.getNoninfinitesimalPart(), 0);
+        return new Constraint(v, LowerBound, dropInf);
+      }else{
+        Assert(r.infinitesimalSgn() == 0);
+        // make (not (v <= r)), which is (v > r)
+        DeltaRational addInf(r.getNoninfinitesimalPart(), 1);
+        return new Constraint(v, LowerBound, addInf);
+      }
+    }
+  case Equality:
+    return new Constraint(v, Disequality, r);
+  case Disequality:
+    return new Constraint(v, Equality, r);
+  default:
+    Unreachable();
+    return NullConstraint;
+  }
+}
+
+ConstraintDatabase::ConstraintDatabase(context::Context* satContext, context::Context* userContext, const ArithVariables& avars, ArithCongruenceManager& cm, RaiseConflict raiseConflict)
+  : d_varDatabases()
+  , d_toPropagate(satContext)
+  , d_antecedents(satContext, false)
+  , d_watches(new Watches(satContext, userContext))
+  , d_avariables(avars)
+  , d_congruenceManager(cm)
+  , d_satContext(satContext)
+  , d_raiseConflict(raiseConflict)
+  , d_one(1)
+  , d_negOne(-1)
+{
+  
+}
+
+SortedConstraintMap& ConstraintDatabase::getVariableSCM(ArithVar v) const{
+  Assert(variableDatabaseIsSetup(v));
+  return d_varDatabases[v]->d_constraints;
+}
+
+void ConstraintDatabase::pushSplitWatch(ConstraintP c){
+  Assert(!c->d_split);
+  c->d_split = true;
+  d_watches->d_splitWatches.push_back(c);
+}
+
+
+void ConstraintDatabase::pushCanBePropagatedWatch(ConstraintP c){
+  Assert(!c->d_canBePropagated);
+  c->d_canBePropagated = true;
+  d_watches->d_canBePropagatedWatches.push_back(c);
+}
+
+void ConstraintDatabase::pushAssertionOrderWatch(ConstraintP c, TNode witness){
+  Assert(!c->assertedToTheTheory());
+  c->d_assertionOrder = d_watches->d_assertionOrderWatches.size();
+  c->d_witness = witness;
+  d_watches->d_assertionOrderWatches.push_back(c);
+}
+
+
+void ConstraintDatabase::pushConstraintRule(const ConstraintRule& crp){
+  ConstraintP c = crp.d_constraint;
+  Assert(c->d_crid == ConstraintRuleIdSentinel);
+  Assert(!c->hasProof());
+  c->d_crid = d_watches->d_constraintProofs.size();
+  d_watches->d_constraintProofs.push_back(crp);
+}
+
+ConstraintP ConstraintDatabase::getConstraint(ArithVar v, ConstraintType t, const DeltaRational& r){
+  //This must always return a constraint.
+
+  SortedConstraintMap& scm = getVariableSCM(v);
+  pair<SortedConstraintMapIterator, bool> insertAttempt;
+  insertAttempt = scm.insert(make_pair(r, ValueCollection()));
+
+  SortedConstraintMapIterator pos = insertAttempt.first;
+  ValueCollection& vc = pos->second;
+  if(vc.hasConstraintOfType(t)){
+    return vc.getConstraintOfType(t);
+  }else{
+    ConstraintP c = new Constraint(v, t, r);
+    ConstraintP negC = Constraint::makeNegation(v, t, r);
+
+    SortedConstraintMapIterator negPos;
+    if(t == Equality || t == Disequality){
+      negPos = pos;
+    }else{
+      pair<SortedConstraintMapIterator, bool> negInsertAttempt;
+      negInsertAttempt = scm.insert(make_pair(negC->getValue(), ValueCollection()));
+      Assert(negInsertAttempt.second
+             || ! negInsertAttempt.first->second.hasConstraintOfType(negC->getType()));
+      negPos = negInsertAttempt.first;
+    }
+
+    c->initialize(this, pos, negC);
+    negC->initialize(this, negPos, c);
+
+    vc.add(c);
+    negPos->second.add(negC);
+
+    return c;
+  }
+}
+
+ConstraintP ConstraintDatabase::ensureConstraint(ValueCollection& vc, ConstraintType t){
+  if(vc.hasConstraintOfType(t)){
+    return vc.getConstraintOfType(t);
+  }else{
+    return getConstraint(vc.getVariable(), t, vc.getValue());
+  }
+}
+
+bool ConstraintDatabase::emptyDatabase(const std::vector<PerVariableDatabase>& vec){
+  std::vector<PerVariableDatabase>::const_iterator first = vec.begin();
+  std::vector<PerVariableDatabase>::const_iterator last = vec.end();
+  return std::find_if(first, last, PerVariableDatabase::IsEmpty) == last;
+}
+
+ConstraintDatabase::~ConstraintDatabase(){
+  delete d_watches;
+
+  std::vector<ConstraintP> constraintList;
+
+  while(!d_varDatabases.empty()){
+    PerVariableDatabase* back = d_varDatabases.back();
+
+    SortedConstraintMap& scm = back->d_constraints;
+    SortedConstraintMapIterator i = scm.begin(), i_end = scm.end();
+    for(; i != i_end; ++i){
+      (i->second).push_into(constraintList);
+    }
+    while(!constraintList.empty()){
+      ConstraintP c = constraintList.back();
+      constraintList.pop_back();
+      delete c;
+    }
+    Assert(scm.empty());
+    d_varDatabases.pop_back();
+    delete back;
+  }
+
+  Assert(d_nodetoConstraintMap.empty());
+}
+
+ConstraintDatabase::Statistics::Statistics():
+  d_unatePropagateCalls("theory::arith::cd::unatePropagateCalls", 0),
+  d_unatePropagateImplications("theory::arith::cd::unatePropagateImplications", 0)
+{
+  smtStatisticsRegistry()->registerStat(&d_unatePropagateCalls);
+  smtStatisticsRegistry()->registerStat(&d_unatePropagateImplications);
+
+}
+
+ConstraintDatabase::Statistics::~Statistics(){
+  smtStatisticsRegistry()->unregisterStat(&d_unatePropagateCalls);
+  smtStatisticsRegistry()->unregisterStat(&d_unatePropagateImplications);
+}
+
+void ConstraintDatabase::deleteConstraintAndNegation(ConstraintP c){
+  Assert(c->safeToGarbageCollect());
+  ConstraintP neg = c->getNegation();
+  Assert(neg->safeToGarbageCollect());
+  delete c;
+  delete neg;
+}
+
+void ConstraintDatabase::addVariable(ArithVar v){
+  if(d_reclaimable.isMember(v)){
+    SortedConstraintMap& scm = getVariableSCM(v);
+
+    std::vector<ConstraintP> constraintList;
+
+    for(SortedConstraintMapIterator i = scm.begin(), end = scm.end(); i != end; ++i){
+      (i->second).push_into(constraintList);
+    }
+    while(!constraintList.empty()){
+      ConstraintP c = constraintList.back();
+      constraintList.pop_back();
+      Assert(c->safeToGarbageCollect());
+      delete c;
+    }
+    Assert(scm.empty());
+
+    d_reclaimable.remove(v);
+  }else{
+    Debug("arith::constraint") << "about to fail" << v << " " << d_varDatabases.size() << endl;
+    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 Constraint::safeToGarbageCollect() const{
+  // Do not call during destructor as getNegation() may be Null by this point
+  Assert(getNegation() != NullConstraint);
+  return !contextDependentDataIsSet() && ! getNegation()->contextDependentDataIsSet();
+}
+
+bool Constraint::contextDependentDataIsSet() const{
+  return hasProof() || isSplit() || canBePropagated() || assertedToTheTheory();
+}
+
+Node Constraint::split(){
+  Assert(isEquality() || isDisequality());
+
+  bool isEq = isEquality();
+
+  ConstraintP eq = isEq ? this : d_negation;
+  ConstraintP diseq = isEq ? d_negation : this;
+
+  TNode eqNode = eq->getLiteral();
+  Assert(eqNode.getKind() == kind::EQUAL);
+  TNode lhs = eqNode[0];
+  TNode rhs = eqNode[1];
+
+  Node leqNode = NodeBuilder<2>(kind::LEQ) << lhs << rhs;
+  Node geqNode = NodeBuilder<2>(kind::GEQ) << lhs << rhs;
+
+  Node lemma = NodeBuilder<3>(OR) << leqNode << geqNode;
+
+
+  eq->d_database->pushSplitWatch(eq);
+  diseq->d_database->pushSplitWatch(diseq);
+
+  return lemma;
+}
+
+bool ConstraintDatabase::hasLiteral(TNode literal) const {
+  return lookup(literal) != NullConstraint;
+}
+
+ConstraintP ConstraintDatabase::addLiteral(TNode literal){
+  Assert(!hasLiteral(literal));
+  bool isNot = (literal.getKind() == NOT);
+  Node atomNode = (isNot ? literal[0] : literal);
+  Node negationNode  = atomNode.notNode();
+
+  Assert(!hasLiteral(atomNode));
+  Assert(!hasLiteral(negationNode));
+  Comparison posCmp = Comparison::parseNormalForm(atomNode);
+
+  ConstraintType posType = Constraint::constraintTypeOfComparison(posCmp);
+
+  Polynomial nvp = posCmp.normalizedVariablePart();
+  ArithVar v = d_avariables.asArithVar(nvp.getNode());
+
+  DeltaRational posDR = posCmp.normalizedDeltaRational();
+
+  ConstraintP posC = new Constraint(v, posType, posDR);
+
+  Debug("arith::constraint") << "addliteral( literal ->" << literal << ")" << endl;
+  Debug("arith::constraint") << "addliteral( posC ->" << posC << ")" << endl;
+
+  SortedConstraintMap& scm = getVariableSCM(posC->getVariable());
+  pair<SortedConstraintMapIterator, bool> insertAttempt;
+  insertAttempt = scm.insert(make_pair(posC->getValue(), ValueCollection()));
+
+  SortedConstraintMapIterator posI = insertAttempt.first;
+  // If the attempt succeeds, i points to a new empty ValueCollection
+  // If the attempt fails, i points to a pre-existing ValueCollection
+
+  if(posI->second.hasConstraintOfType(posC->getType())){
+    //This is the situation where the ConstraintP exists, but
+    //the literal has not been  associated with it.
+    ConstraintP hit = posI->second.getConstraintOfType(posC->getType());
+    Debug("arith::constraint") << "hit " << hit << endl;
+    Debug("arith::constraint") << "posC " << posC << endl;
+
+    delete posC;
+
+    hit->setLiteral(atomNode);
+    hit->getNegation()->setLiteral(negationNode);
+    return isNot ? hit->getNegation(): hit;
+  }else{
+    Comparison negCmp = Comparison::parseNormalForm(negationNode);
+    
+    ConstraintType negType = Constraint::constraintTypeOfComparison(negCmp);
+    DeltaRational negDR = negCmp.normalizedDeltaRational();
+
+    ConstraintP negC = new Constraint(v, negType, negDR);
+
+    SortedConstraintMapIterator negI;
+
+    if(posC->isEquality()){
+      negI = posI;
+    }else{
+      Assert(posC->isLowerBound() || posC->isUpperBound());
+
+      pair<SortedConstraintMapIterator, bool> negInsertAttempt;
+      negInsertAttempt = scm.insert(make_pair(negC->getValue(), ValueCollection()));
+
+      Debug("nf::tmp") << "sdhjfgdhjkldfgljkhdfg" << endl;
+      Debug("nf::tmp") << negC << endl;
+      Debug("nf::tmp") << negC->getValue() << endl;
+
+      //This should always succeed as the DeltaRational for the negation is unique!
+      Assert(negInsertAttempt.second);
+
+      negI = negInsertAttempt.first;
+    }
+
+    (posI->second).add(posC);
+    (negI->second).add(negC);
+
+    posC->initialize(this, posI, negC);
+    negC->initialize(this, negI, posC);
+
+    posC->setLiteral(atomNode);
+    negC->setLiteral(negationNode);
+
+    return isNot ? negC : posC;
+  }
+}
+
+
+ConstraintP ConstraintDatabase::lookup(TNode literal) const{
+  NodetoConstraintMap::const_iterator iter = d_nodetoConstraintMap.find(literal);
+  if(iter == d_nodetoConstraintMap.end()){
+    return NullConstraint;
+  }else{
+    return iter->second;
+  }
+}
+
+void Constraint::setAssumption(bool nowInConflict){
+  Assert(!hasProof());
+  Assert(negationHasProof() == nowInConflict);
+  Assert(hasLiteral());
+  Assert(assertedToTheTheory());
+
+  d_database->pushConstraintRule(ConstraintRule(this, AssumeAP));
+  
+  Assert(inConflict() == nowInConflict);
+  if(Debug.isOn("constraint::conflictCommit") && inConflict()){
+    Debug("constraint::conflictCommit") << "inConflict at setAssumption " << this << std::endl;
+  }
+}
+
+void Constraint::tryToPropagate(){
+  Assert(hasProof());
+  Assert(!isAssumption());
+  Assert(!isInternalAssumption());
+
+  if(canBePropagated() && !assertedToTheTheory() && !isAssumption() && !isInternalAssumption()){
+    propagate();
+  }
+}
+
+void Constraint::propagate(){
+  Assert(hasProof());
+  Assert(canBePropagated());
+  Assert(!assertedToTheTheory());
+  Assert(!isAssumption());
+  Assert(!isInternalAssumption());
+
+  d_database->d_toPropagate.push(this);
+}
+
+
+/*
+ * Example:
+ *    x <= a and a < b
+ * |= x <= b
+ * ---
+ *  1*(x <= a) + (-1)*(x > b) => (0 <= a-b)
+ */
+void Constraint::impliedByUnate(ConstraintCP imp, bool nowInConflict){
+  Assert(!hasProof());
+  Assert(imp->hasProof());
+  Assert(negationHasProof() == nowInConflict);
+
+
+  d_database->d_antecedents.push_back(NullConstraint);
+  d_database->d_antecedents.push_back(imp);
+
+  AntecedentId antecedentEnd = d_database->d_antecedents.size() - 1;
+
+  RationalVectorP coeffs;
+  if(PROOF_ON()){
+    std::pair<int, int> sgns = unateFarkasSigns(getNegation(), imp);
+
+    Rational first(sgns.first);
+    Rational second(sgns.second);
+
+    coeffs = new RationalVector();
+    coeffs->push_back(first);
+    coeffs->push_back(second);
+  } else {
+    coeffs = RationalVectorPSentinel;
+  }
+
+  // no need to delete coeffs the memory is owned by ConstraintRule
+  d_database->pushConstraintRule(ConstraintRule(this, FarkasAP, antecedentEnd, coeffs));
+
+  Assert(inConflict() == nowInConflict);
+  if(Debug.isOn("constraint::conflictCommit") && inConflict()){
+    Debug("constraint::conflictCommit") << "inConflict at impliedByUnate " << this << std::endl;
+  }
+  
+  if(Debug.isOn("constraints::wffp") && !wellFormedFarkasProof()){
+    getConstraintRule().print(Debug("constraints::wffp"));
+  }
+  Assert(wellFormedFarkasProof());
+}
+
+void Constraint::impliedByTrichotomy(ConstraintCP a, ConstraintCP b, bool nowInConflict){
+  Assert(!hasProof());
+  Assert(negationHasProof() == nowInConflict);
+  Assert(a->hasProof());
+  Assert(b->hasProof());
+
+  d_database->d_antecedents.push_back(NullConstraint);
+  d_database->d_antecedents.push_back(a);
+  d_database->d_antecedents.push_back(b);
+
+  AntecedentId antecedentEnd = d_database->d_antecedents.size() - 1;
+  d_database->pushConstraintRule(ConstraintRule(this, TrichotomyAP, antecedentEnd));
+
+  Assert(inConflict() == nowInConflict);
+  if(Debug.isOn("constraint::conflictCommit") && inConflict()){
+    Debug("constraint::conflictCommit") << "inConflict at impliedByTrichotomy " << this << std::endl;
+  }
+}
+
+
+bool Constraint::allHaveProof(const ConstraintCPVec& b){
+  for(ConstraintCPVec::const_iterator i=b.begin(), i_end=b.end(); i != i_end; ++i){
+    ConstraintCP cp = *i;
+    if(! (cp->hasProof())){ return false; }
+  }
+  return true;
+}
+
+void Constraint::impliedByIntHole(ConstraintCP a, bool nowInConflict){
+  Assert(!hasProof());
+  Assert(negationHasProof() == nowInConflict);
+  Assert(a->hasProof());
+
+  d_database->d_antecedents.push_back(NullConstraint);
+  d_database->d_antecedents.push_back(a);
+  AntecedentId antecedentEnd = d_database->d_antecedents.size() - 1;
+  d_database->pushConstraintRule(ConstraintRule(this, IntHoleAP, antecedentEnd));
+
+  Assert(inConflict() == nowInConflict);
+  if(Debug.isOn("constraint::conflictCommit") && inConflict()){
+    Debug("constraint::conflictCommit") << "inConflict impliedByIntHole" << this << std::endl;
+  }
+}
+
+void Constraint::impliedByIntHole(const ConstraintCPVec& b, bool nowInConflict){
+  Assert(!hasProof());
+  Assert(negationHasProof() == nowInConflict);
+  Assert(allHaveProof(b));
+
+  CDConstraintList& antecedents = d_database->d_antecedents;
+  antecedents.push_back(NullConstraint);
+  for(ConstraintCPVec::const_iterator i=b.begin(), i_end=b.end(); i != i_end; ++i){
+    antecedents.push_back(*i);
+  }
+  AntecedentId antecedentEnd = antecedents.size() - 1;
+
+  d_database->pushConstraintRule(ConstraintRule(this, IntHoleAP, antecedentEnd));
+
+  Assert(inConflict() == nowInConflict);
+  if(Debug.isOn("constraint::conflictCommit") && inConflict()){
+    Debug("constraint::conflictCommit") << "inConflict at impliedByIntHole[vec] " << this << std::endl;
+  }
+}
+
+/*
+ * If proofs are off, coeffs == RationalVectorSentinal.
+ * If proofs are on,
+ *   coeffs != RationalVectorSentinal,
+ *   coeffs->size() = a.size() + 1,
+ *   for i in [0,a.size) : coeff[i] corresponds to a[i], and
+ *   coeff.back() corresponds to the current constraint. 
+ */
+void Constraint::impliedByFarkas(const ConstraintCPVec& a, RationalVectorCP coeffs, bool nowInConflict){
+  Assert(!hasProof());
+  Assert(negationHasProof() == nowInConflict);
+  Assert(allHaveProof(a));
+
+  Assert( PROOF_ON() == (coeffs != RationalVectorCPSentinel) );
+  // !PROOF_ON() => coeffs == RationalVectorCPSentinel
+  //  PROOF_ON() => coeffs->size() == a.size() + 1
+  Assert(!PROOF_ON() || coeffs->size() == a.size() + 1);
+  Assert(a.size() >= 1);
+
+  d_database->d_antecedents.push_back(NullConstraint);
+  for(ConstraintCPVec::const_iterator i = a.begin(), end = a.end(); i != end; ++i){
+    ConstraintCP c_i = *i;
+    Assert(c_i->hasProof());
+    d_database->d_antecedents.push_back(c_i);
+  }
+  AntecedentId antecedentEnd = d_database->d_antecedents.size() - 1;
+
+  RationalVectorCP coeffsCopy;
+  if(PROOF_ON()){
+    Assert(coeffs != RationalVectorCPSentinel);
+    coeffsCopy = new RationalVector(*coeffs);
+  } else {
+    coeffsCopy = RationalVectorCPSentinel;
+  }
+  d_database->pushConstraintRule(ConstraintRule(this, FarkasAP, antecedentEnd, coeffsCopy));
+
+  Assert(inConflict() == nowInConflict);
+  if(Debug.isOn("constraint::conflictCommit") && inConflict()){
+    Debug("constraint::conflictCommit") << "inConflict at impliedByFarkas " << this << std::endl;
+  }
+  if(Debug.isOn("constraints::wffp") && !wellFormedFarkasProof()){
+    getConstraintRule().print(Debug("constraints::wffp"));
+  }
+  Assert(wellFormedFarkasProof());
+}
+
+
+void Constraint::setInternalAssumption(bool nowInConflict){
+  Assert(!hasProof());
+  Assert(negationHasProof() == nowInConflict);
+  Assert(!assertedToTheTheory());
+
+  d_database->pushConstraintRule(ConstraintRule(this, InternalAssumeAP));
+
+  Assert(inConflict() == nowInConflict);
+  if(Debug.isOn("constraint::conflictCommit") && inConflict()){
+    Debug("constraint::conflictCommit") << "inConflict at setInternalAssumption " << this << std::endl;
+  }
+}
+
+
+void Constraint::setEqualityEngineProof(){
+  Assert(truthIsUnknown());
+  Assert(hasLiteral());
+  d_database->pushConstraintRule(ConstraintRule(this, EqualityEngineAP));
+}
+
+
+SortedConstraintMap& Constraint::constraintSet() const{
+  Assert(d_database->variableDatabaseIsSetup(d_variable));
+  return (d_database->d_varDatabases[d_variable])->d_constraints;
+}
+
+bool Constraint::antecentListIsEmpty() const{
+  Assert(hasProof());
+  return d_database->d_antecedents[getEndAntecedent()] == NullConstraint;
+}
+
+bool Constraint::antecedentListLengthIsOne() const {
+  Assert(hasProof());
+  return !antecentListIsEmpty() &&
+    d_database->d_antecedents[getEndAntecedent()-1] == NullConstraint;
+}
+
+Node Constraint::externalImplication(const ConstraintCPVec& b) const{
+  Assert(hasLiteral());
+  Node antecedent = externalExplainByAssertions(b);
+  Node implied = getLiteral();
+  return antecedent.impNode(implied);
+}
+
+
+Node Constraint::externalExplainByAssertions(const ConstraintCPVec& b){
+  return externalExplain(b, AssertionOrderSentinel);
+}
+
+Node Constraint::externalExplainConflict() const{
+  Assert(inConflict());
+  NodeBuilder<> nb(kind::AND);
+  externalExplainByAssertions(nb);
+  getNegation()->externalExplainByAssertions(nb);
+
+  return safeConstructNary(nb);
+}
+
+struct ConstraintCPHash {
+  /* Todo replace with an id */
+  size_t operator()(ConstraintCP c) const{
+    Assert(sizeof(ConstraintCP) > 0);
+    return ((size_t)c)/sizeof(ConstraintCP);
+  }
+};
+
+void Constraint::assertionFringe(ConstraintCPVec& v){
+  hash_set<ConstraintCP, ConstraintCPHash> visited;
+  size_t writePos = 0;
+
+  if(!v.empty()){
+    const ConstraintDatabase* db = v.back()->d_database;
+    const CDConstraintList& antecedents = db->d_antecedents;
+    for(size_t i = 0; i < v.size(); ++i){
+      ConstraintCP vi = v[i];
+      if(visited.find(vi) == visited.end()){
+        Assert(vi->hasProof());
+        visited.insert(vi);
+        if(vi->onFringe()){
+          v[writePos] = vi;
+          writePos++;
+        }else{
+          Assert(vi->hasTrichotomyProof() || vi->hasFarkasProof() || vi->hasIntHoleProof() );
+          AntecedentId p = vi->getEndAntecedent();
+
+          ConstraintCP antecedent = antecedents[p];
+          while(antecedent != NullConstraint){
+            v.push_back(antecedent);
+            --p;
+            antecedent = antecedents[p];
+          }
+        }
+      }
+    }
+    v.resize(writePos);
+  }
+}
+
+void Constraint::assertionFringe(ConstraintCPVec& o, const ConstraintCPVec& i){
+  o.insert(o.end(), i.begin(), i.end());
+  assertionFringe(o);
+}
+
+Node Constraint::externalExplain(const ConstraintCPVec& v, AssertionOrder order){
+  NodeBuilder<> nb(kind::AND);
+  ConstraintCPVec::const_iterator i, end;
+  for(i = v.begin(), end = v.end(); i != end; ++i){
+    ConstraintCP v_i = *i;
+    v_i->externalExplain(nb, order);
+  }
+  return safeConstructNary(nb);
+}
+
+void Constraint::externalExplain(NodeBuilder<>& nb, AssertionOrder order) const{
+  Assert(hasProof());
+  Assert(!isAssumption() || assertedToTheTheory());
+  Assert(!isInternalAssumption());
+
+  if(assertedBefore(order)){
+    nb << getWitness();
+  }else if(hasEqualityEngineProof()){
+    d_database->eeExplain(this, nb);
+  }else{
+    Assert(!isAssumption());
+    AntecedentId p = getEndAntecedent();
+    ConstraintCP antecedent = d_database->d_antecedents[p];
+
+    while(antecedent != NullConstraint){
+      antecedent->externalExplain(nb, order);
+      --p;
+      antecedent = d_database->d_antecedents[p];
+    }
+  }
+}
+
+Node Constraint::externalExplain(AssertionOrder order) const{
+  Assert(hasProof());
+  Assert(!isAssumption() || assertedBefore(order));
+  Assert(!isInternalAssumption());
+  if(assertedBefore(order)){
+    return getWitness();
+  }else if(hasEqualityEngineProof()){
+    return d_database->eeExplain(this);
+  }else{
+    Assert(hasFarkasProof() || hasIntHoleProof() || hasTrichotomyProof());
+    Assert(!antecentListIsEmpty());
+    //Force the selection of the layer above if the node is
+    // assertedToTheTheory()!
+
+    AntecedentId listEnd = getEndAntecedent();
+    if(antecedentListLengthIsOne()){
+      ConstraintCP antecedent = d_database->d_antecedents[listEnd];
+      return antecedent->externalExplain(order);
+    }else{
+      NodeBuilder<> nb(kind::AND);
+      Assert(!isAssumption());
+
+      AntecedentId p = listEnd;
+      ConstraintCP antecedent = d_database->d_antecedents[p];
+      while(antecedent != NullConstraint){
+        antecedent->externalExplain(nb, order);
+        --p;
+        antecedent = d_database->d_antecedents[p];
+      }
+      return nb;
+    }
+  }
+}
+
+Node Constraint::externalExplainByAssertions(ConstraintCP a, ConstraintCP b){
+  NodeBuilder<> nb(kind::AND);
+  a->externalExplainByAssertions(nb);
+  b->externalExplainByAssertions(nb);
+  return nb;
+}
+
+Node Constraint::externalExplainByAssertions(ConstraintCP a, ConstraintCP b, ConstraintCP c){
+  NodeBuilder<> nb(kind::AND);
+  a->externalExplainByAssertions(nb);
+  b->externalExplainByAssertions(nb);
+  c->externalExplainByAssertions(nb);
+  return nb;
+}
+
+ConstraintP Constraint::getStrictlyWeakerLowerBound(bool hasLiteral, bool asserted) const {
+  Assert(initialized());
+  Assert(!asserted || hasLiteral);
+
+  SortedConstraintMapConstIterator i = d_variablePosition;
+  const SortedConstraintMap& scm = constraintSet();
+  SortedConstraintMapConstIterator i_begin = scm.begin();
+  while(i != i_begin){
+    --i;
+    const ValueCollection& vc = i->second;
+    if(vc.hasLowerBound()){
+      ConstraintP weaker = vc.getLowerBound();
+
+      // asserted -> hasLiteral
+      // hasLiteral -> weaker->hasLiteral()
+      // asserted -> weaker->assertedToTheTheory()
+      if((!hasLiteral || (weaker->hasLiteral())) &&
+         (!asserted || ( weaker->assertedToTheTheory()))){
+        return weaker;
+      }
+    }
+  }
+  return NullConstraint;
+}
+
+ConstraintP Constraint::getStrictlyWeakerUpperBound(bool hasLiteral, bool asserted) const {
+  SortedConstraintMapConstIterator i = d_variablePosition;
+  const SortedConstraintMap& scm = constraintSet();
+  SortedConstraintMapConstIterator i_end = scm.end();
+
+  ++i;
+  for(; i != i_end; ++i){
+    const ValueCollection& vc = i->second;
+    if(vc.hasUpperBound()){
+      ConstraintP weaker = vc.getUpperBound();
+      if((!hasLiteral || (weaker->hasLiteral())) &&
+         (!asserted || ( weaker->assertedToTheTheory()))){
+        return weaker;
+      }
+    }
+  }
+
+  return NullConstraint;
+}
+
+ConstraintP ConstraintDatabase::getBestImpliedBound(ArithVar v, ConstraintType t, const DeltaRational& r) const {
+  Assert(variableDatabaseIsSetup(v));
+  Assert(t == UpperBound ||  t == LowerBound);
+
+  SortedConstraintMap& scm = getVariableSCM(v);
+  if(t == UpperBound){
+    SortedConstraintMapConstIterator i = scm.lower_bound(r);
+    SortedConstraintMapConstIterator i_end = scm.end();
+    Assert(i == i_end || r <= i->first);
+    for(; i != i_end; i++){
+      Assert(r <= i->first);
+      const ValueCollection& vc = i->second;
+      if(vc.hasUpperBound()){
+        return vc.getUpperBound();
+      }
+    }
+    return NullConstraint;
+  }else{
+    Assert(t == LowerBound);
+    if(scm.empty()){
+      return NullConstraint;
+    }else{
+      SortedConstraintMapConstIterator i = scm.lower_bound(r);
+      SortedConstraintMapConstIterator i_begin = scm.begin();
+      SortedConstraintMapConstIterator i_end = scm.end();
+      Assert(i == i_end || r <= i->first);
+
+      int fdj = 0;
+
+      if(i == i_end){
+        --i;
+        Debug("getBestImpliedBound") << fdj++ << " " << r << " " << i->first << endl;
+      }else if( (i->first) > r){
+        if(i == i_begin){
+          return NullConstraint;
+        }else{
+          --i;
+          Debug("getBestImpliedBound") << fdj++ << " " << r << " " << i->first << endl;
+        }
+      }
+
+      do{
+        Debug("getBestImpliedBound") << fdj++ << " " << r << " " << i->first << endl;
+        Assert(r >= i->first);
+        const ValueCollection& vc = i->second;
+
+        if(vc.hasLowerBound()){
+          return vc.getLowerBound();
+        }
+
+        if(i == i_begin){
+          break;
+        }else{
+          --i;
+        }
+      }while(true);
+      return NullConstraint;
+    }
+  }
+}
+Node ConstraintDatabase::eeExplain(const Constraint* const c) const{
+  Assert(c->hasLiteral());
+  return d_congruenceManager.explain(c->getLiteral());
+}
+
+void ConstraintDatabase::eeExplain(const Constraint* const c, NodeBuilder<>& nb) const{
+  Assert(c->hasLiteral());
+  d_congruenceManager.explain(c->getLiteral(), nb);
+}
+
+bool ConstraintDatabase::variableDatabaseIsSetup(ArithVar v) const {
+  return v < d_varDatabases.size();
+}
+
+
+ConstraintDatabase::Watches::Watches(context::Context* satContext, context::Context* userContext):
+  d_constraintProofs(satContext),
+  d_canBePropagatedWatches(satContext),
+  d_assertionOrderWatches(satContext),
+  d_splitWatches(userContext)
+{}
+
+
+void Constraint::setLiteral(Node n) {
+  Assert(!hasLiteral());
+  Assert(sanityChecking(n));
+  d_literal = n;
+  NodetoConstraintMap& map = d_database->d_nodetoConstraintMap;
+  Assert(map.find(n) == map.end());
+  map.insert(make_pair(d_literal, this));
+}
+
+void implies(std::vector<Node>& out, ConstraintP a, ConstraintP b){
+  Node la = a->getLiteral();
+  Node lb = b->getLiteral();
+
+  Node neg_la = (la.getKind() == kind::NOT)? la[0] : la.notNode();
+
+  Assert(lb != neg_la);
+  Node orderOr = (lb < neg_la) ? lb.orNode(neg_la) : neg_la.orNode(lb);
+  out.push_back(orderOr);
+}
+
+void mutuallyExclusive(std::vector<Node>& out, ConstraintP a, ConstraintP b){
+  Node la = a->getLiteral();
+  Node lb = b->getLiteral();
+
+  Node neg_la = (la.getKind() == kind::NOT)? la[0] : la.notNode();
+  Node neg_lb = (lb.getKind() == kind::NOT)? lb[0] : lb.notNode();
+
+  Assert(neg_la != neg_lb);
+  Node orderOr = (neg_la < neg_lb) ? neg_la.orNode(neg_lb) : neg_lb.orNode(neg_la);
+  out.push_back(orderOr);
+}
+
+void ConstraintDatabase::outputUnateInequalityLemmas(std::vector<Node>& out, ArithVar v) const{
+  SortedConstraintMap& scm = getVariableSCM(v);
+  SortedConstraintMapConstIterator scm_iter = scm.begin();
+  SortedConstraintMapConstIterator scm_end = scm.end();
+  ConstraintP prev = NullConstraint;
+  //get transitive unates
+  //Only lower bounds or upperbounds should be done.
+  for(; scm_iter != scm_end; ++scm_iter){
+    const ValueCollection& vc = scm_iter->second;
+    if(vc.hasUpperBound()){
+      ConstraintP ub = vc.getUpperBound();
+      if(ub->hasLiteral()){
+        if(prev != NullConstraint){
+          implies(out, prev, ub);
+        }
+        prev = ub;
+      }
+    }
+  }
+}
+
+void ConstraintDatabase::outputUnateEqualityLemmas(std::vector<Node>& out, ArithVar v) const{
+
+  vector<ConstraintP> equalities;
+
+  SortedConstraintMap& scm = getVariableSCM(v);
+  SortedConstraintMapConstIterator scm_iter = scm.begin();
+  SortedConstraintMapConstIterator scm_end = scm.end();
+
+  for(; scm_iter != scm_end; ++scm_iter){
+    const ValueCollection& vc = scm_iter->second;
+    if(vc.hasEquality()){
+      ConstraintP eq = vc.getEquality();
+      if(eq->hasLiteral()){
+        equalities.push_back(eq);
+      }
+    }
+  }
+
+  vector<ConstraintP>::const_iterator i, j, eq_end = equalities.end();
+  for(i = equalities.begin(); i != eq_end; ++i){
+    ConstraintP at_i = *i;
+    for(j= i + 1; j != eq_end; ++j){
+      ConstraintP at_j = *j;
+
+      mutuallyExclusive(out, at_i, at_j);
+    }
+  }
+
+  for(i = equalities.begin(); i != eq_end; ++i){
+    ConstraintP eq = *i;
+    const ValueCollection& vc = eq->getValueCollection();
+    Assert(vc.hasEquality() && vc.getEquality()->hasLiteral());
+
+    bool hasLB = vc.hasLowerBound() && vc.getLowerBound()->hasLiteral();
+    bool hasUB = vc.hasUpperBound() && vc.getUpperBound()->hasLiteral();
+
+    ConstraintP lb = hasLB ?
+      vc.getLowerBound() : eq->getStrictlyWeakerLowerBound(true, false);
+    ConstraintP ub = hasUB ?
+      vc.getUpperBound() : eq->getStrictlyWeakerUpperBound(true, false);
+
+    if(hasUB && hasLB && !eq->isSplit()){
+      out.push_back(eq->split());
+    }
+    if(lb != NullConstraint){
+      implies(out, eq, lb);
+    }
+    if(ub != NullConstraint){
+      implies(out, eq, ub);
+    }
+  }
+}
+
+void ConstraintDatabase::outputUnateEqualityLemmas(std::vector<Node>& lemmas) const{
+  for(ArithVar v = 0, N = d_varDatabases.size(); v < N; ++v){
+    outputUnateEqualityLemmas(lemmas, v);
+  }
+}
+
+void ConstraintDatabase::outputUnateInequalityLemmas(std::vector<Node>& lemmas) const{
+  for(ArithVar v = 0, N = d_varDatabases.size(); v < N; ++v){
+    outputUnateInequalityLemmas(lemmas, v);
+  }
+}
+
+bool ConstraintDatabase::handleUnateProp(ConstraintP ant, ConstraintP cons){
+  if(cons->negationHasProof()){
+    Debug("arith::unate") << "handleUnate: " << ant << " implies " << cons << endl;
+    cons->impliedByUnate(ant, true);
+    d_raiseConflict.raiseConflict(cons);
+    return true;
+  }else if(!cons->isTrue()){
+    ++d_statistics.d_unatePropagateImplications;
+    Debug("arith::unate") << "handleUnate: " << ant << " implies " << cons << endl;
+    cons->impliedByUnate(ant, false);
+    cons->tryToPropagate();
+    return false;
+  } else {
+    return false;
+  }
+}
+
+void ConstraintDatabase::unatePropLowerBound(ConstraintP curr, ConstraintP prev){
+  Debug("arith::unate") << "unatePropLowerBound " << curr << " " << prev << endl;
+  Assert(curr != prev);
+  Assert(curr != NullConstraint);
+  bool hasPrev = ! (prev == NullConstraint);
+  Assert(!hasPrev || curr->getValue() > prev->getValue());
+
+  ++d_statistics.d_unatePropagateCalls;
+
+  const SortedConstraintMap& scm = curr->constraintSet();
+  const SortedConstraintMapConstIterator scm_begin = scm.begin();
+  SortedConstraintMapConstIterator scm_i = curr->d_variablePosition;
+
+  //Ignore the first ValueCollection
+  // NOPE: (>= p c) then (= p c) NOPE
+  // NOPE: (>= p c) then (not (= p c)) NOPE
+
+  while(scm_i != scm_begin){
+    --scm_i; // move the iterator back
+
+    const ValueCollection& vc = scm_i->second;
+
+    //If it has the previous element, do nothing and stop!
+    if(hasPrev &&
+       vc.hasConstraintOfType(prev->getType())
+       && vc.getConstraintOfType(prev->getType()) == prev){
+      break;
+    }
+
+    //Don't worry about implying the negation of upperbound.
+    //These should all be handled by propagating the LowerBounds!
+    if(vc.hasLowerBound()){
+      ConstraintP lb = vc.getLowerBound();
+      if(handleUnateProp(curr, lb)){ return; }
+    }
+    if(vc.hasDisequality()){
+      ConstraintP dis = vc.getDisequality();
+      if(handleUnateProp(curr, dis)){ return; }
+    }
+  }
+}
+
+void ConstraintDatabase::unatePropUpperBound(ConstraintP curr, ConstraintP prev){
+  Debug("arith::unate") << "unatePropUpperBound " << curr << " " << prev << endl;
+  Assert(curr != prev);
+  Assert(curr != NullConstraint);
+  bool hasPrev = ! (prev == NullConstraint);
+  Assert(!hasPrev || curr->getValue() < prev->getValue());
+
+  ++d_statistics.d_unatePropagateCalls;
+
+  const SortedConstraintMap& scm = curr->constraintSet();
+  const SortedConstraintMapConstIterator scm_end = scm.end();
+  SortedConstraintMapConstIterator scm_i = curr->d_variablePosition;
+  ++scm_i;
+  for(; scm_i != scm_end; ++scm_i){
+    const ValueCollection& vc = scm_i->second;
+
+    //If it has the previous element, do nothing and stop!
+    if(hasPrev &&
+       vc.hasConstraintOfType(prev->getType()) &&
+       vc.getConstraintOfType(prev->getType()) == prev){
+      break;
+    }
+    //Don't worry about implying the negation of upperbound.
+    //These should all be handled by propagating the UpperBounds!
+    if(vc.hasUpperBound()){
+      ConstraintP ub = vc.getUpperBound();
+      if(handleUnateProp(curr, ub)){ return; }
+    }
+    if(vc.hasDisequality()){
+      ConstraintP dis = vc.getDisequality();
+      if(handleUnateProp(curr, dis)){ return; }
+    }
+  }
+}
+
+void ConstraintDatabase::unatePropEquality(ConstraintP curr, ConstraintP prevLB, ConstraintP prevUB){
+  Debug("arith::unate") << "unatePropEquality " << curr << " " << prevLB << " " << prevUB << endl;
+  Assert(curr != prevLB);
+  Assert(curr != prevUB);
+  Assert(curr != NullConstraint);
+  bool hasPrevLB = ! (prevLB == NullConstraint);
+  bool hasPrevUB = ! (prevUB == NullConstraint);
+  Assert(!hasPrevLB || curr->getValue() >= prevLB->getValue());
+  Assert(!hasPrevUB || curr->getValue() <= prevUB->getValue());
+
+  ++d_statistics.d_unatePropagateCalls;
+
+  const SortedConstraintMap& scm = curr->constraintSet();
+  SortedConstraintMapConstIterator scm_curr = curr->d_variablePosition;
+  SortedConstraintMapConstIterator scm_last = hasPrevUB ? prevUB->d_variablePosition : scm.end();
+  SortedConstraintMapConstIterator scm_i;
+  if(hasPrevLB){
+    scm_i = prevLB->d_variablePosition;
+    if(scm_i != scm_curr){ // If this does not move this past scm_curr, move it one forward
+      ++scm_i;
+    }
+  }else{
+    scm_i = scm.begin();
+  }
+
+  for(; scm_i != scm_curr; ++scm_i){
+    // between the previous LB and the curr
+    const ValueCollection& vc = scm_i->second;
+
+    //Don't worry about implying the negation of upperbound.
+    //These should all be handled by propagating the LowerBounds!
+    if(vc.hasLowerBound()){
+      ConstraintP lb = vc.getLowerBound();
+      if(handleUnateProp(curr, lb)){ return; }
+    }
+    if(vc.hasDisequality()){
+      ConstraintP dis = vc.getDisequality();
+      if(handleUnateProp(curr, dis)){ return; }
+    }
+  }
+  Assert(scm_i == scm_curr);
+  if(!hasPrevUB || scm_i != scm_last){
+    ++scm_i;
+  } // hasPrevUB implies scm_i != scm_last
+
+  for(; scm_i != scm_last; ++scm_i){
+    // between the curr and the previous UB imply the upperbounds and disequalities.
+    const ValueCollection& vc = scm_i->second;
+
+    //Don't worry about implying the negation of upperbound.
+    //These should all be handled by propagating the UpperBounds!
+    if(vc.hasUpperBound()){
+      ConstraintP ub = vc.getUpperBound();
+      if(handleUnateProp(curr, ub)){ return; }
+    }
+    if(vc.hasDisequality()){
+      ConstraintP dis = vc.getDisequality();
+      if(handleUnateProp(curr, dis)){ return; }
+    }
+  }
+}
+
+std::pair<int, int> Constraint::unateFarkasSigns(ConstraintCP ca, ConstraintCP cb){
+  ConstraintType a = ca->getType();
+  ConstraintType b = cb->getType();
+
+  Assert(a != Disequality);
+  Assert(b != Disequality);
+
+  int a_sgn = (a == LowerBound) ? -1 : ((a == UpperBound) ? 1 : 0);
+  int b_sgn = (b == LowerBound) ? -1 : ((b == UpperBound) ? 1 : 0);
+
+  if(a_sgn == 0 && b_sgn == 0){
+    Assert(a == Equality);
+    Assert(b == Equality);
+    Assert(ca->getValue() != cb->getValue());
+    if(ca->getValue() < cb->getValue()){
+      a_sgn = 1;
+      b_sgn = -1;
+    }else{
+      a_sgn = -1;
+      b_sgn = 1;
+    }
+  }else if(a_sgn == 0){
+    Assert(b_sgn != 0);
+    Assert(a == Equality);
+    a_sgn = -b_sgn;
+  }else if(b_sgn == 0){
+    Assert(a_sgn != 0);
+    Assert(b == Equality);
+    b_sgn = -a_sgn;
+  }
+  Assert(a_sgn != 0);
+  Assert(b_sgn != 0);
+
+  Debug("arith::unateFarkasSigns") << "Constraint::unateFarkasSigns("<<a <<", " << b << ") -> "
+                                   << "("<<a_sgn<<", "<< b_sgn <<")"<< endl;
+  return make_pair(a_sgn, b_sgn);
+}
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/constraint.h b/src/theory/arith/constraint.h
new file mode 100644
index 0000000..3ae2d0b
--- /dev/null
+++ b/src/theory/arith/constraint.h
@@ -0,0 +1,1186 @@
+/*********************                                                        */
+/*! \file constraint.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Defines Constraint and ConstraintDatabase which is the internal representation of variables in arithmetic
+ **
+ ** This file defines Constraint and ConstraintDatabase.
+ ** A Constraint is the internal representation of literals in TheoryArithmetic.
+ ** Constraints are fundamentally a triple:
+ **  - ArithVar associated with the constraint,
+ **  - a DeltaRational value,
+ **  - and a ConstraintType.
+ **
+ ** Literals:
+ **   The constraint may also keep track of a node corresponding to the
+ **   Constraint.
+ **   This can be accessed by getLiteral() in O(1) if it has been set.
+ **   This node must be in normal form and may be used for communication with
+ **   the TheoryEngine.
+ **
+ ** In addition, Constraints keep track of the following:
+ **  - A Constraint that is the negation of the Constraint.
+ **  - An iterator into a set of Constraints for the ArithVar sorted by
+ **    DeltaRational value.
+ **  - A context dependent internal proof of the node that can be used for
+ **    explanations.
+ **  - Whether an equality/disequality has been split in the user context via a
+ **    lemma.
+ **  - Whether a constraint, be be used in explanations sent to the context
+ **
+ ** Looking up constraints:
+ **  - All of the Constraints with associated nodes in the ConstraintDatabase can
+ **    be accessed via a single hashtable lookup until the Constraint is removed.
+ **  - Nodes that have not been associated to a constraints can be
+ **    inserted/associated to existing nodes in O(log n) time.
+ **
+ ** Implications:
+ **  - A Constraint can be used to find unate implications.
+ **  - A unate implication is an implication based purely on the ArithVar matching
+ **    and the DeltaRational value.
+ **    (implies (<= x c) (<= x d)) given c <= d
+ **  - This is done using the iterator into the sorted set of constraints.
+ **  - Given a tight constraint and previous tightest constraint, this will
+ **    efficiently propagate internally.
+ **
+ ** Additing and Removing Constraints
+ **  - Adding Constraints takes O(log n) time where n is the number of
+ **    constraints associated with the ArithVar.
+ **  - Removing Constraints takes O(1) time.
+ **
+ ** Internals:
+ **  - Constraints are pointers to ConstraintValues.
+ **  - Undefined Constraints are NullConstraint.
+
+ **
+ ** Assumption vs. Assertion:
+ ** - An assertion is anything on the theory d_fact queue.
+ **   This includes any thing propagated and returned to the fact queue.
+ **   These can be used in external conflicts and propagations of earlier proofs.
+ ** - An assumption is anything on the theory d_fact queue that has no further
+ **   explanation i.e. this theory did not propagate it.
+ ** - To set something an assumption, first set it as being as assertion.
+ ** - Internal assumptions have no explanations and must be regressed out of the proof.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__ARITH__CONSTRAINT_H
+#define __CVC4__THEORY__ARITH__CONSTRAINT_H
+
+#include <ext/hash_map>
+#include <list>
+#include <set>
+#include <vector>
+
+#include "base/configuration_private.h"
+#include "context/cdlist.h"
+#include "context/cdqueue.h"
+#include "context/context.h"
+#include "expr/node.h"
+#include "proof/proof.h"
+#include "theory/arith/arithvar.h"
+#include "theory/arith/callbacks.h"
+#include "theory/arith/congruence_manager.h"
+#include "theory/arith/constraint_forward.h"
+#include "theory/arith/delta_rational.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+class Comparison;
+}
+}
+}
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+/**
+ * Logs the types of different proofs.
+ * Current, proof types:
+ * - NoAP             : This constraint is not known to be true.
+ * - AssumeAP         : This is an input assertion. There is no proof.
+ *                    : Something can be both asserted and have a proof.
+ * - InternalAssumeAP : An internal assumption. This has no guarantee of having an external proof.
+ *                    : This must be removed by regression.
+ * - FarkasAP         : A proof with Farka's coefficients, i.e.
+ *                    :  \sum lambda_i ( asNode(x_i) <= c_i  ) |= 0 < 0
+ *                    : If proofs are on, coefficients will be logged.
+ *                    : If proofs are off, coefficients will not be logged.
+ *                    : A unate implication is a FarkasAP.
+ * - TrichotomyAP     : This is any entailment using (x<= a and x >=a) => x = a
+ *                    : Equivalently, (x > a or x < a or x = a)
+ *                    : There are 3 candidate ways this can propagate:
+ *                    :   !(x > a) and !(x = a) => x < a
+ *                    :   !(x < a) and !(x = a) => x > a
+ *                    :   !(x > a) and !(x < a) => x = a
+ * - EqualityEngineAP : This is propagated by the equality engine.
+ *                    : Consult this for the proof.
+ * - IntHoleAP        : This is currently a catch-all for all integer specific reason.
+ */
+enum ArithProofType
+  { NoAP,
+    AssumeAP,
+    InternalAssumeAP,
+    FarkasAP,
+    TrichotomyAP,
+    EqualityEngineAP,
+    IntHoleAP};
+
+/**
+ * The types of constraints.
+ * The convex constraints are the constraints are LowerBound, Equality,
+ * and UpperBound.
+ */
+enum ConstraintType {LowerBound, Equality, UpperBound, Disequality};
+
+
+typedef context::CDList<ConstraintCP> CDConstraintList;
+
+typedef __gnu_cxx::hash_map<Node, ConstraintP, NodeHashFunction> NodetoConstraintMap;
+
+typedef size_t ConstraintRuleID;
+static const ConstraintRuleID ConstraintRuleIdSentinel = std::numeric_limits<ConstraintRuleID>::max();
+
+typedef size_t AntecedentId;
+static const AntecedentId AntecedentIdSentinel = std::numeric_limits<AntecedentId>::max();
+
+
+typedef size_t AssertionOrder;
+static const AssertionOrder AssertionOrderSentinel = std::numeric_limits<AssertionOrder>::max();
+
+
+/**
+ * A ValueCollection binds together convex constraints that have the same
+ * DeltaRational value.
+ */
+class ValueCollection {
+private:
+
+  ConstraintP d_lowerBound;
+  ConstraintP d_upperBound;
+  ConstraintP d_equality;
+  ConstraintP d_disequality;
+
+public:
+  ValueCollection();
+
+  static ValueCollection mkFromConstraint(ConstraintP c);
+
+  bool hasLowerBound() const;
+  bool hasUpperBound() const;
+  bool hasEquality() const;
+  bool hasDisequality() const;
+
+  bool hasConstraintOfType(ConstraintType t) const;
+
+  ConstraintP getLowerBound() const;
+  ConstraintP getUpperBound() const;
+  ConstraintP getEquality() const;
+  ConstraintP getDisequality() const;
+
+  ConstraintP getConstraintOfType(ConstraintType t) const;
+
+  /** Returns true if any of the constraints are non-null. */
+  bool empty() const;
+
+  /**
+   * Remove the constraint of the type t from the collection.
+   * Returns true if the ValueCollection is now empty.
+   * If true is returned, d_value is now NULL.
+   */
+  void remove(ConstraintType t);
+
+  /**
+   * Adds a constraint to the set.
+   * The collection must not have a constraint of that type already.
+   */
+  void add(ConstraintP c);
+
+  void push_into(std::vector<ConstraintP>& vec) const;
+
+  ConstraintP nonNull() const;
+
+  ArithVar getVariable() const;
+  const DeltaRational& getValue() const;
+};
+
+/**
+ * A Map of ValueCollections sorted by the associated DeltaRational values.
+ *
+ * Discussion:
+ * While it is more natural to consider this a set, this cannot be a set as in
+ * sets the type of both iterator and const_iterator in sets are
+ * "constant iterators".  We require iterators that dereference to
+ * ValueCollection&.
+ *
+ * See:
+ * http://gcc.gnu.org/onlinedocs/libstdc++/ext/lwg-defects.html#103
+ */
+typedef std::map<DeltaRational, ValueCollection> SortedConstraintMap;
+typedef SortedConstraintMap::iterator SortedConstraintMapIterator;
+typedef SortedConstraintMap::const_iterator SortedConstraintMapConstIterator;
+
+/** A Pair associating a variables and a Sorted ConstraintSet. */
+struct PerVariableDatabase{
+  ArithVar d_var;
+  SortedConstraintMap d_constraints;
+
+  // x ? c_1, x ? c_2, x ? c_3, ...
+  // where ? is a non-empty subset of {lb, ub, eq}
+  // c_1 < c_2 < c_3 < ...
+
+  PerVariableDatabase(ArithVar v) : d_var(v), d_constraints() {}
+
+  bool empty() const {
+    return d_constraints.empty();
+  }
+
+  static bool IsEmpty(const PerVariableDatabase& p){
+    return p.empty();
+  }
+};
+
+
+/**
+ * If proofs are on, there is a vector of rationals for farkas coefficients.
+ * This is the owner of the memory for the vector, and calls delete upon cleanup.
+ * 
+ */
+struct ConstraintRule {
+  ConstraintP d_constraint;
+  ArithProofType d_proofType;
+  AntecedentId d_antecedentEnd;    
+
+  /**
+   * In this comment, we abbreviate ConstraintDatabase::d_antecedents
+   * and d_farkasCoefficients as ans and fc.
+   *
+   * This list is always empty if proofs are not enabled.
+   *
+   * If proofs are enabled, the proof of constraint c at p in ans[p] of length n is
+   *  (NullConstraint, ans[p-(n-1)], ... , ans[p-1], ans[p])
+   * 
+   * Farkas' proofs show a contradiction with the negation of c, c_not = c->getNegation().
+   *
+   * We treat the position for NullConstraint (p-n) as the position for the farkas
+   * coefficient for so we pretend c_not is ans[p-n].
+   * So this correlation for the constraints we are going to use:
+   *   (c_not, ans[p-(n-1)], ... , ans[p-1], ans[p])
+   * With the coefficients at positions:
+   *   (fc[0], fc[1)], ... fc[n])
+   *
+   * The index of the constraints in the proof are {i | i <= 0 <= n] } (with c_not being p-n).
+   * Partition the indices into L, U, and E, the lower bounds, the upper bounds and equalities.
+   *
+   * We standardize the proofs to be upper bound oriented following the convention:
+   *   A x <= b
+   * with the proof witness of the form
+   *  (lambda) Ax <= (lambda) b and lambda >= 0.
+   *
+   * To accomplish this cleanly, the fc coefficients must be negative for lower bounds.
+   * The signs of equalities can be either positive or negative.
+   *
+   * Thus the proof corresponds to (with multiplication over inequalities):
+   *    \sum_{u in U} fc[u] ans[p-n+u] + \sum_{e in E} fc[e] ans[p-n+e]
+   *  + \sum_{l in L} fc[l] ans[p-n+l]
+   * |= 0 < 0
+   * where fc[u] > 0, fc[l] < 0, and fc[e] != 0 (i.e. it can be either +/-).
+   * 
+   * There is no requirement that the proof is minimal.
+   * We do however use all of the constraints by requiring non-zero coefficients.
+   */
+#if IS_PROOFS_BUILD
+  RationalVectorCP d_farkasCoefficients;
+#endif /* IS_PROOFS_BUILD */
+  ConstraintRule()
+    : d_constraint(NullConstraint)
+    , d_proofType(NoAP)
+    , d_antecedentEnd(AntecedentIdSentinel)
+  {
+#if IS_PROOFS_BUILD
+    d_farkasCoefficients = RationalVectorCPSentinel;
+#endif /* IS_PROOFS_BUILD */
+  }
+
+  ConstraintRule(ConstraintP con, ArithProofType pt)
+    : d_constraint(con)
+    , d_proofType(pt)
+    , d_antecedentEnd(AntecedentIdSentinel)
+  {
+#if IS_PROOFS_BUILD
+    d_farkasCoefficients = RationalVectorCPSentinel;
+#endif /* IS_PROOFS_BUILD */
+  }
+  ConstraintRule(ConstraintP con, ArithProofType pt, AntecedentId antecedentEnd)
+    : d_constraint(con)
+    , d_proofType(pt)
+    , d_antecedentEnd(antecedentEnd)
+  {
+#if IS_PROOFS_BUILD
+    d_farkasCoefficients = RationalVectorCPSentinel;
+#endif /* IS_PROOFS_BUILD */
+  }
+
+  ConstraintRule(ConstraintP con, ArithProofType pt, AntecedentId antecedentEnd, RationalVectorCP coeffs)
+    : d_constraint(con)
+    , d_proofType(pt)
+    , d_antecedentEnd(antecedentEnd)
+  {
+    Assert(PROOF_ON() || coeffs == RationalVectorCPSentinel);
+#if IS_PROOFS_BUILD
+    d_farkasCoefficients = coeffs;
+#endif /* IS_PROOFS_BUILD */
+  }
+
+  void print(std::ostream& out) const;
+  void debugPrint() const;
+}; /* class ConstraintRule */
+
+class Constraint {
+private:
+  /** The ArithVar associated with the constraint. */
+  const ArithVar d_variable;
+
+  /** The type of the Constraint. */
+  const ConstraintType d_type;
+
+  /** The DeltaRational value with the constraint. */
+  const DeltaRational d_value;
+
+  /** A pointer to the associated database for the Constraint. */
+  ConstraintDatabase* d_database;
+
+  /**
+   * The node to be communicated with the TheoryEngine.
+   *
+   * This is not context dependent, but may be set once.
+   *
+   * This must be set if the constraint canBePropagated().
+   * This must be set if the constraint assertedToTheTheory().
+   * Otherwise, this may be null().
+   */
+  Node d_literal;
+
+  /** Pointer to the negation of the Constraint. */
+  ConstraintP d_negation;
+
+  /**
+   * This is true if the associated node can be propagated.
+   *
+   * This should be enabled if the node has been preregistered.
+   *
+   * Sat Context Dependent.
+   * This is initially false.
+   */
+  bool d_canBePropagated;
+
+  /**
+   * This is the order the constraint was asserted to the theory.
+   * If this has been set, the node can be used in conflicts.
+   * If this is c.d_assertedOrder < d.d_assertedOrder, then c can be used in the
+   * explanation of d.
+   *
+   * This should be set after the literal is dequeued by Theory::get().
+   *
+   * Sat Context Dependent.
+   * This is initially AssertionOrderSentinel.
+   */
+  AssertionOrder d_assertionOrder;
+
+  /**
+   * This is guaranteed to be on the fact queue.
+   * For example if x + y = x + 1 is on the fact queue, then use this
+   */
+  TNode d_witness;
+
+  /**
+   * The position of the constraint in the constraint rule id.
+   *
+   * Sat Context Dependent.
+   * This is initially 
+   */
+  ConstraintRuleID d_crid;
+  
+
+  /**
+   * True if the equality has been split.
+   * Only meaningful if ConstraintType == Equality.
+   *
+   * User Context Dependent.
+   * This is initially false.
+   */
+  bool d_split;
+
+  /**
+   * Position in sorted constraint set for the variable.
+   * Unset if d_type is Disequality.
+   */
+  SortedConstraintMapIterator d_variablePosition;
+
+  friend class ConstraintDatabase;
+
+  /**
+   * This begins construction of a minimal constraint.
+   *
+   * This should only be called by ConstraintDatabase.
+   *
+   * Because of circular dependencies a Constraint is not fully valid until
+   * initialize has been called on it.
+   */
+  Constraint(ArithVar x,  ConstraintType t, const DeltaRational& v);
+
+  /**
+   * Destructor for a constraint.
+   * This should only be called if safeToGarbageCollect() is true.
+   */
+  ~Constraint();
+
+  /**  Returns true if the constraint has been initialized. */
+  bool initialized() const;
+
+  /**
+   * This initializes the fields that cannot be set in the constructor due to
+   * circular dependencies.
+   */
+  void initialize(ConstraintDatabase* db, SortedConstraintMapIterator v, ConstraintP negation);
+
+
+
+  class ConstraintRuleCleanup {
+  public:
+    inline void operator()(ConstraintRule* crp){
+      Assert(crp != NULL);
+      ConstraintP constraint = crp->d_constraint;
+      Assert(constraint->d_crid != ConstraintRuleIdSentinel);
+      constraint->d_crid = ConstraintRuleIdSentinel;
+      
+      PROOF(if(crp->d_farkasCoefficients != RationalVectorCPSentinel){
+              delete crp->d_farkasCoefficients;
+            });
+    }
+  };
+
+  class CanBePropagatedCleanup {
+  public:
+    inline void operator()(ConstraintP* p){
+      ConstraintP constraint = *p;
+      Assert(constraint->d_canBePropagated);
+      constraint->d_canBePropagated = false;
+    }
+  };
+
+  class AssertionOrderCleanup {
+  public:
+    inline void operator()(ConstraintP* p){
+      ConstraintP constraint = *p;
+      Assert(constraint->assertedToTheTheory());
+      constraint->d_assertionOrder = AssertionOrderSentinel;
+      constraint->d_witness = TNode::null();
+      Assert(!constraint->assertedToTheTheory());
+    }
+  };
+
+  class SplitCleanup {
+  public:
+    inline void operator()(ConstraintP* p){
+      ConstraintP constraint = *p;
+      Assert(constraint->d_split);
+      constraint->d_split = false;
+    }
+  };
+
+  /**
+   * Returns true if the node is safe to garbage collect.
+   * Both it and its negation must have no context dependent data set.
+   */
+  bool safeToGarbageCollect() const;
+
+  /**
+   * Returns true if the constraint has no context dependent data set.
+   */
+  bool contextDependentDataIsSet() const;
+
+  /**
+   * Returns true if the node correctly corresponds to the constraint that is
+   * being set.
+   */
+  bool sanityChecking(Node n) const;
+
+  /** Returns a reference to the map for d_variable. */
+  SortedConstraintMap& constraintSet() const;
+
+  /** Returns coefficients for the proofs for farkas cancellation. */
+  static std::pair<int, int> unateFarkasSigns(ConstraintCP a, ConstraintCP b);
+
+
+public:
+
+  static ConstraintType constraintTypeOfComparison(const Comparison& cmp);
+
+  inline ConstraintType getType() const {
+    return d_type;
+  }
+
+  inline ArithVar getVariable() const {
+    return d_variable;
+  }
+
+  const DeltaRational& getValue() const {
+    return d_value;
+  }
+
+  inline ConstraintP getNegation() const {
+    return d_negation;
+  }
+
+  bool isEquality() const{
+    return d_type == Equality;
+  }
+  bool isDisequality() const{
+    return d_type == Disequality;
+  }
+  bool isLowerBound() const{
+    return d_type == LowerBound;
+  }
+  bool isUpperBound() const{
+    return d_type == UpperBound;
+  }
+  bool isStrictUpperBound() const{
+    Assert(isUpperBound());
+    return getValue().infinitesimalSgn() < 0;
+  }
+
+  bool isStrictLowerBound() const{
+    Assert(isLowerBound());
+    return getValue().infinitesimalSgn() > 0;
+  }
+
+  bool isSplit() const {
+    return d_split;
+  }
+
+  /**
+   * Splits the node in the user context.
+   * Returns a lemma that is assumed to be true for the rest of the user context.
+   * Constraint must be an equality or disequality.
+   */
+  Node split();
+
+  bool canBePropagated() const {
+    return d_canBePropagated;
+  }
+  void setCanBePropagated();
+
+  /**
+   * Light wrapper for calling setCanBePropagated(),
+   * on this and this->d_negation.
+   */
+  void setPreregistered(){
+    setCanBePropagated();
+    d_negation->setCanBePropagated();
+  }
+
+  bool assertedToTheTheory() const {
+    Assert((d_assertionOrder < AssertionOrderSentinel) != d_witness.isNull());
+    return d_assertionOrder < AssertionOrderSentinel;
+  }
+  TNode getWitness() const {
+    Assert(assertedToTheTheory());
+    return d_witness;
+  }
+
+  bool assertedBefore(AssertionOrder time) const {
+    return d_assertionOrder < time;
+  }
+
+  /**
+   * Sets the witness literal for a node being on the assertion stack.
+   *
+   * If the negation of the node is true, inConflict must be true.
+   * If the negation of the node is false, inConflict must be false.
+   * Hence, negationHasProof() == inConflict.
+   *
+   * This replaces:
+   *   void setAssertedToTheTheory(TNode witness);
+   *   void setAssertedToTheTheoryWithNegationTrue(TNode witness);
+   */
+  void setAssertedToTheTheory(TNode witness, bool inConflict);
+
+  bool hasLiteral() const {
+    return !d_literal.isNull();
+  }
+
+  void setLiteral(Node n);
+
+  Node getLiteral() const {
+    Assert(hasLiteral());
+    return d_literal;
+  }
+
+  /**
+   * Set the node as having a proof and being an assumption.
+   * The node must be assertedToTheTheory().
+   *
+   * Precondition: negationHasProof() == inConflict.
+   *
+   * Replaces:
+   *  selfExplaining().
+   *  selfExplainingWithNegationTrue().
+   */
+  void setAssumption(bool inConflict);
+
+  /** Returns true if the node is an assumption.*/
+  bool isAssumption() const;
+
+  /** Set the constraint to have an EqualityEngine proof. */
+  void setEqualityEngineProof();
+  bool hasEqualityEngineProof() const;
+
+  /** Returns true if the node has a Farkas' proof. */
+  bool hasFarkasProof() const;
+
+  /** Returns true if the node has a int hole proof. */
+  bool hasIntHoleProof() const;
+
+  /** Returns true if the node has a trichotomy proof. */
+  bool hasTrichotomyProof() const;
+
+  /**
+   * A sets the constraint to be an internal assumption.
+   *
+   * This does not need to have a witness or an associated literal.
+   * This is always itself in the explanation fringe for both conflicts
+   * and propagation.
+   * This cannot be converted back into a Node conflict or explanation.
+   *
+   * This cannot have a proof or be asserted to the theory!
+   *
+   */
+  void setInternalAssumption(bool inConflict);
+  bool isInternalAssumption() const;
+
+  /**
+   * Returns a explanation of the constraint that is appropriate for conflicts.
+   *
+   * This is not appropriate for propagation!
+   *
+   * This is the minimum fringe of the implication tree s.t.
+   * every constraint is assertedToTheTheory() or hasEqualityEngineProof().
+   */
+  Node externalExplainByAssertions() const {
+    return externalExplain(AssertionOrderSentinel);
+  }
+
+  /**
+   * Writes an explanation of a constraint into the node builder.
+   * Pushes back an explanation that is acceptable to send to the sat solver.
+   * nb is assumed to be an AND.
+   *
+   * This is the minimum fringe of the implication tree s.t.
+   * every constraint is assertedToTheTheory() or hasEqualityEngineProof().
+   *
+   * This is not appropriate for propagation!
+   * Use explainForPropagation() instead.
+   */
+  void externalExplainByAssertions(NodeBuilder<>& nb) const{
+    externalExplain(nb, AssertionOrderSentinel);
+  }
+
+  /* Equivalent to calling externalExplainByAssertions on all constraints in b */
+  static Node externalExplainByAssertions(const ConstraintCPVec& b);
+  static Node externalExplainByAssertions(ConstraintCP a, ConstraintCP b);
+  static Node externalExplainByAssertions(ConstraintCP a, ConstraintCP b, ConstraintCP c);
+
+  /**
+   * This is the minimum fringe of the implication tree s.t. every constraint is
+   * - assertedToTheTheory(),
+   * - isInternalDecision() or
+   * - hasEqualityEngineProof().
+   */
+  static void assertionFringe(ConstraintCPVec& v);
+  static void assertionFringe(ConstraintCPVec& out, const ConstraintCPVec& in);
+
+  /** The fringe of a farkas' proof. */
+  bool onFringe() const {
+    return assertedToTheTheory() || isInternalAssumption() || hasEqualityEngineProof();
+  }
+
+  /**
+   * Returns an explanation of a propagation by the ConstraintDatabase.
+   * The constraint must have a proof.
+   * The constraint cannot be an assumption.
+   *
+   * This is the minimum fringe of the implication tree (excluding the constraint itself)
+   * s.t. every constraint is assertedToTheTheory() or hasEqualityEngineProof().
+   */
+  Node externalExplainForPropagation() const {
+    Assert(hasProof());
+    Assert(!isAssumption());
+    Assert(!isInternalAssumption());
+    return externalExplain(d_assertionOrder);
+  }
+
+  /**
+   * Explain the constraint and its negation in terms of assertions.
+   * The constraint must be in conflict.
+   */
+  Node externalExplainConflict() const;
+
+private:
+  Node externalExplain(AssertionOrder order) const;
+
+  /**
+   * Returns an explanation of that was assertedBefore(order).
+   * The constraint must have a proof.
+   * The constraint cannot be selfExplaining().
+   *
+   * This is the minimum fringe of the implication tree
+   * s.t. every constraint is assertedBefore(order) or hasEqualityEngineProof().
+   */
+  void externalExplain(NodeBuilder<>& nb, AssertionOrder order) const;
+
+  static Node externalExplain(const ConstraintCPVec& b, AssertionOrder order);
+
+public:
+
+  /** The constraint is known to be true. */
+  inline bool hasProof() const {
+    return d_crid != ConstraintRuleIdSentinel;
+  }
+
+  /** The negation of the constraint is known to hold. */
+  inline bool negationHasProof() const {
+    return d_negation->hasProof();
+  }
+
+  /** Neither the contraint has a proof nor the negation has a proof.*/
+  bool truthIsUnknown() const {
+    return !hasProof() && !negationHasProof();
+  }
+
+  /** This is a synonym for hasProof(). */
+  inline bool isTrue() const {
+    return hasProof();
+  }
+
+  /** Both the constraint and its negation are true. */
+  inline bool inConflict() const {
+    return hasProof() && negationHasProof();
+  }
+
+  /**
+   * Returns the constraint that corresponds to taking
+   *    x r ceiling(getValue()) where r is the node's getType().
+   * Esstentially this is an up branch.
+   */
+  ConstraintP getCeiling();
+
+  /**
+   * Returns the constraint that corresponds to taking
+   *    x r floor(getValue()) where r is the node's getType().
+   * Esstentially this is a down branch.
+   */
+  ConstraintP getFloor();
+
+
+  static ConstraintP makeNegation(ArithVar v, ConstraintType t, const DeltaRational& r);
+
+  const ValueCollection& getValueCollection() const;
+
+
+  ConstraintP getStrictlyWeakerUpperBound(bool hasLiteral, bool mustBeAsserted) const;
+  ConstraintP getStrictlyWeakerLowerBound(bool hasLiteral, bool mustBeAsserted) const;
+
+  /**
+   * Marks a the constraint c as being entailed by a.
+   * The Farkas proof 1*(a) + -1 (c) |= 0<0
+   *
+   * After calling impliedByUnate(), the caller should either raise a conflict
+   * or try call tryToPropagate().
+   */
+  void impliedByUnate(ConstraintCP a, bool inConflict);
+
+  /**
+   * Marks a the constraint c as being entailed by a.
+   * The reason has to do with integer rounding.
+   *
+   * After calling impliedByIntHole(), the caller should either raise a conflict
+   * or try call tryToPropagate().
+   */
+  void impliedByIntHole(ConstraintCP a, bool inConflict);
+
+  /**
+   * Marks a the constraint c as being entailed by a.
+   * The reason has to do with integer rounding.
+   *
+   * After calling impliedByIntHole(), the caller should either raise a conflict
+   * or try call tryToPropagate().
+   */
+  void impliedByIntHole(const ConstraintCPVec& b, bool inConflict);
+
+  /**
+   * This is a lemma of the form:
+   *   x < d or x = d or x > d
+   * The current constraint c is one of the above constraints and {a,b}
+   * are the negation of the other two constraints.
+   *
+   * Preconditions:
+   * - negationHasProof() == inConflict.
+   *
+   * After calling impliedByTrichotomy(), the caller should either raise a conflict
+   * or try call tryToPropagate().
+   */
+  void impliedByTrichotomy(ConstraintCP a, ConstraintCP b, bool inConflict);
+
+  /**
+   * Marks the node as having a Farkas proof.
+   *
+   * Preconditions:
+   * - coeffs == NULL if proofs are off.
+   * - See the comments for ConstraintRule for the form of coeffs when
+   *   proofs are on.
+   * - negationHasProof() == inConflict.
+   *
+   * After calling impliedByFarkas(), the caller should either raise a conflict
+   * or try call tryToPropagate().
+   */
+  void impliedByFarkas(const ConstraintCPVec& b, RationalVectorCP coeffs, bool inConflict);
+
+  /**
+   * Generates an implication node, B => getLiteral(),
+   * where B is the result of externalExplainByAssertions(b).
+   * Does not guarantee b is the explanation of the constraint.
+   */
+  Node externalImplication(const ConstraintCPVec& b) const;
+
+  /**
+   * Returns true if the variable is assigned the value dr,
+   * the constraint would be satisfied.
+   */
+  bool satisfiedBy(const DeltaRational& dr) const;
+
+  /**
+   * The node must have a proof already and be eligible for propagation!
+   * You probably want to call tryToPropagate() instead.
+   *
+   * Preconditions:
+   * - hasProof()
+   * - canBePropagated()
+   * - !assertedToTheTheory()
+   */
+  void propagate();
+
+  /**
+   * If the constraint
+   *   canBePropagated() and 
+   *   !assertedToTheTheory(),
+   * the constraint is added to the database's propagation queue.
+   *
+   * Precondition:
+   * - hasProof()
+   */
+  void tryToPropagate();
+
+  /**
+   * Returns a reference to the containing database.
+   * Precondition: the constraint must be initialized.
+   */
+  const ConstraintDatabase& getDatabase() const;
+
+private:
+
+  /** Returns the constraint rule at the position. */
+  const ConstraintRule& getConstraintRule() const;
+  
+  inline ArithProofType getProofType() const {
+    return getConstraintRule().d_proofType;
+  }
+
+  inline AntecedentId getEndAntecedent() const {
+    return getConstraintRule().d_antecedentEnd;
+  }
+
+  inline RationalVectorCP getFarkasCoefficients() const {
+    return NULLPROOF(getConstraintRule().d_farkasCoefficients);
+  }
+  
+  void debugPrint() const;
+
+  /**
+   * The proof of the node is empty.
+   * The proof must be a special proof. Either
+   *   isSelfExplaining() or
+   *    hasEqualityEngineProof()
+   */
+  bool antecentListIsEmpty() const;
+
+  bool antecedentListLengthIsOne() const;
+
+  /** Return true if every element in b has a proof. */
+  static bool allHaveProof(const ConstraintCPVec& b);
+
+  /** Precondition: hasFarkasProof() */
+  bool wellFormedFarkasProof() const;
+  
+}; /* class ConstraintValue */
+
+std::ostream& operator<<(std::ostream& o, const Constraint& c);
+std::ostream& operator<<(std::ostream& o, const ConstraintP c);
+std::ostream& operator<<(std::ostream& o, const ConstraintCP c);
+std::ostream& operator<<(std::ostream& o, const ConstraintType t);
+std::ostream& operator<<(std::ostream& o, const ValueCollection& c);
+std::ostream& operator<<(std::ostream& o, const ConstraintCPVec& v);
+std::ostream& operator<<(std::ostream& o, const ArithProofType);
+
+
+class ConstraintDatabase {
+private:
+  /**
+   * The map from ArithVars to their unique databases.
+   * When the vector changes size, we cannot allow the maps to move so this
+   * is a vector of pointers.
+   */
+  std::vector<PerVariableDatabase*> d_varDatabases;
+
+  SortedConstraintMap& getVariableSCM(ArithVar v) const;
+
+  /** Maps literals to constraints.*/
+  NodetoConstraintMap d_nodetoConstraintMap;
+
+  /**
+   * A queue of propagated constraints.
+   * ConstraintCP are pointers.
+   * The elements of the queue do not require destruction.
+   */
+  context::CDQueue<ConstraintCP> d_toPropagate;
+
+  /**
+   * Proofs are lists of valid constraints terminated by the first null
+   * sentinel value in the proof list.
+   * We abbreviate d_antecedents as ans in the comment.
+   *
+   * The proof at p in ans[p] of length n is
+   *  (NullConstraint, ans[p-(n-1)], ... , ans[p-1], ans[p])
+   *
+   * The proof at p corresponds to the conjunction:
+   *  (and x_i)
+   *
+   * So the proof of a Constraint c corresponds to the horn clause:
+   *  (implies (and x_i) c)
+   * where (and x_i) is the proof at c.d_crid d_antecedentEnd.
+   *
+   * Constraints are pointers so this list is designed not to require any destruction.
+   */
+  CDConstraintList d_antecedents;
+
+  typedef context::CDList<ConstraintRule, Constraint::ConstraintRuleCleanup> ConstraintRuleList;
+  typedef context::CDList<ConstraintP, Constraint::CanBePropagatedCleanup> CBPList;
+  typedef context::CDList<ConstraintP, Constraint::AssertionOrderCleanup> AOList;
+  typedef context::CDList<ConstraintP, Constraint::SplitCleanup> SplitList;
+
+
+
+  /**
+   * The watch lists are collected together as they need to be garbage collected
+   * carefully.
+   */
+  struct Watches{
+
+    /**
+     * Contains the exact list of constraints that have a proof.
+     * Upon pop, this unsets d_crid to NoAP.
+     *
+     * The index in this list is the proper ordering of the proofs.
+     */
+    ConstraintRuleList d_constraintProofs;
+    
+    
+    /**
+     * Contains the exact list of constraints that can be used for propagation.
+     */
+    CBPList d_canBePropagatedWatches;
+
+    /**
+     * Contains the exact list of constraints that have been asserted to the theory.
+     */
+    AOList d_assertionOrderWatches;
+
+
+    /**
+     * Contains the exact list of atoms that have been preregistered.
+     * This is a pointer as it must be destroyed before the elements of
+     * d_varDatabases.
+     */
+    SplitList d_splitWatches;
+    Watches(context::Context* satContext, context::Context* userContext);
+  };
+  Watches* d_watches;
+
+  void pushSplitWatch(ConstraintP c);
+  void pushCanBePropagatedWatch(ConstraintP c);
+  void pushAssertionOrderWatch(ConstraintP c, TNode witness);
+
+  /** Assumes that antecedents have already been pushed. */
+  void pushConstraintRule(const ConstraintRule& crp);
+
+  /** Returns true if all of the entries of the vector are empty. */
+  static bool emptyDatabase(const std::vector<PerVariableDatabase>& vec);
+
+  /** Map from nodes to arithvars. */
+  const ArithVariables& d_avariables;
+
+  const ArithVariables& getArithVariables() const{
+    return d_avariables;
+  }
+
+  ArithCongruenceManager& d_congruenceManager;
+
+  const context::Context * const d_satContext;
+
+  RaiseConflict d_raiseConflict;
+
+
+  const Rational d_one;
+  const Rational d_negOne;
+  
+  friend class Constraint;
+  
+public:
+
+  ConstraintDatabase( context::Context* satContext,
+                      context::Context* userContext,
+                      const ArithVariables& variables,
+                      ArithCongruenceManager& dm,
+                      RaiseConflict conflictCallBack);
+
+  ~ConstraintDatabase();
+
+  /** Adds a literal to the database. */
+  ConstraintP addLiteral(TNode lit);
+
+  /**
+   * If hasLiteral() is true, returns the constraint.
+   * Otherwise, returns NullConstraint.
+   */
+  ConstraintP lookup(TNode literal) const;
+
+  /**
+   * Returns true if the literal has been added to the database.
+   * This is a hash table lookup.
+   * It does not look in the database for an equivalent corresponding constraint.
+   */
+  bool hasLiteral(TNode literal) const;
+
+  bool hasMorePropagations() const{
+    return !d_toPropagate.empty();
+  }
+
+  ConstraintCP nextPropagation(){
+    Assert(hasMorePropagations());
+
+    ConstraintCP p = d_toPropagate.front();
+    d_toPropagate.pop();
+
+    return p;
+  }
+
+  void addVariable(ArithVar v);
+  bool variableDatabaseIsSetup(ArithVar v) const;
+  void removeVariable(ArithVar v);
+
+  Node eeExplain(ConstraintCP c) const;
+  void eeExplain(ConstraintCP c, NodeBuilder<>& nb) const;
+
+  /**
+   * Returns a constraint with the variable v, the constraint type t, and a value
+   * dominated by r (explained below) if such a constraint exists in the database.
+   * If no such constraint exists, NullConstraint is returned.
+   *
+   * t must be either UpperBound or LowerBound.
+   * The returned value v is dominated:
+   *  If t is UpperBound, r <= v
+   *  If t is LowerBound, r >= v
+   *
+   * variableDatabaseIsSetup(v) must be true.
+   */
+  ConstraintP getBestImpliedBound(ArithVar v, ConstraintType t, const DeltaRational& r) const;
+
+  /** Returns the constraint, if it exists */
+  ConstraintP lookupConstraint(ArithVar v, ConstraintType t, const DeltaRational& r) const;
+
+  /**
+   * Returns a constraint with the variable v, the constraint type t and the value r.
+   * If there is such a constraint in the database already, it is returned.
+   * If there is no such constraint, this constraint is added to the database.
+   *
+   */
+  ConstraintP getConstraint(ArithVar v, ConstraintType t, const DeltaRational& r);
+
+  /**
+   * Returns a constraint of the given type for the value and variable
+   * for the given ValueCollection, vc.
+   * This is made if there is no such constraint.
+   */
+  ConstraintP ensureConstraint(ValueCollection& vc, ConstraintType t);
+
+
+  void deleteConstraintAndNegation(ConstraintP c);
+
+  /**
+   * Outputs a minimal set of unate implications onto the vector for the variable.
+   * This outputs lemmas of the general forms
+   *     (= p c) implies (<= p d) for c < d, or
+   *     (= p c) implies (not (= p d)) for c != d.
+   */
+  void outputUnateEqualityLemmas(std::vector<Node>& lemmas) const;
+  void outputUnateEqualityLemmas(std::vector<Node>& lemmas, ArithVar v) const;
+
+  /**
+   * Outputs a minimal set of unate implications onto the vector for the variable.
+   *
+   * If ineqs is true, this outputs lemmas of the general form
+   *     (<= p c) implies (<= p d) for c < d.
+   */
+  void outputUnateInequalityLemmas(std::vector<Node>& lemmas) const;
+  void outputUnateInequalityLemmas(std::vector<Node>& lemmas, ArithVar v) const;
+
+
+  void unatePropLowerBound(ConstraintP curr, ConstraintP prev);
+  void unatePropUpperBound(ConstraintP curr, ConstraintP prev);
+  void unatePropEquality(ConstraintP curr, ConstraintP prevLB, ConstraintP prevUB);
+
+  /** AntecendentID must be in range. */
+  ConstraintCP getAntecedent(AntecedentId p) const;
+  
+private:
+  /** returns true if cons is now in conflict. */
+  bool handleUnateProp(ConstraintP ant, ConstraintP cons);
+
+  DenseSet d_reclaimable;
+
+  class Statistics {
+  public:
+    IntStat d_unatePropagateCalls;
+    IntStat d_unatePropagateImplications;
+
+    Statistics();
+    ~Statistics();
+  } d_statistics;
+
+}; /* ConstraintDatabase */
+
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__ARITH__CONSTRAINT_H */
diff --git a/src/theory/arith/constraint_forward.h b/src/theory/arith/constraint_forward.h
new file mode 100644
index 0000000..1ebffc1
--- /dev/null
+++ b/src/theory/arith/constraint_forward.h
@@ -0,0 +1,49 @@
+/*********************                                                        */
+/*! \file constraint_forward.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Forward declarations of the ConstraintValue and ConstraintDatabase classes.
+ **
+ ** This is the forward declarations of the ConstraintValue and ConstraintDatabase
+ ** and the typedef for Constraint.  This is used to break circular dependencies and
+ ** minimize interaction between header files.
+ **/
+
+#ifndef __CVC4__THEORY__ARITH__CONSTRAINT_FORWARD_H
+#define __CVC4__THEORY__ARITH__CONSTRAINT_FORWARD_H
+
+#include "cvc4_private.h"
+#include <vector>
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+class Constraint;
+typedef Constraint* ConstraintP;
+typedef const Constraint* ConstraintCP;
+
+static const ConstraintP NullConstraint = NULL;
+
+class ConstraintDatabase;
+
+typedef std::vector<ConstraintCP> ConstraintCPVec;
+
+typedef std::vector<Rational> RationalVector;
+typedef RationalVector* RationalVectorP;
+typedef const RationalVector* RationalVectorCP;
+static const RationalVectorCP RationalVectorCPSentinel = NULL;
+static const RationalVectorP RationalVectorPSentinel = NULL;
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__ARITH__CONSTRAINT_FORWARD_H */
diff --git a/src/theory/arith/cut_log.cpp b/src/theory/arith/cut_log.cpp
new file mode 100644
index 0000000..3af2a71
--- /dev/null
+++ b/src/theory/arith/cut_log.cpp
@@ -0,0 +1,708 @@
+/*********************                                                        */
+/*! \file cut_log.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include <cmath>
+#include <limits.h>
+#include <map>
+#include <math.h>
+
+#include "base/output.h"
+#include "cvc4autoconfig.h"
+#include "theory/arith/approx_simplex.h"
+#include "theory/arith/constraint.h"
+#include "theory/arith/cut_log.h"
+#include "theory/arith/normal_form.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+NodeLog::const_iterator NodeLog::begin() const { return d_cuts.begin(); }
+NodeLog::const_iterator NodeLog::end() const { return d_cuts.end(); }
+
+NodeLog& TreeLog::getNode(int nid) {
+  ToNodeMap::iterator i = d_toNode.find(nid);
+  Assert(i != d_toNode.end());
+  return (*i).second;
+}
+
+TreeLog::const_iterator TreeLog::begin() const { return d_toNode.begin(); }
+TreeLog::const_iterator TreeLog::end() const { return d_toNode.end(); }
+
+int TreeLog::getExecutionOrd(){
+  int res = next_exec_ord;
+  ++next_exec_ord;
+  return res;
+}
+void TreeLog::makeInactive(){  d_active = false; }
+void TreeLog::makeActive(){  d_active = true; }
+bool TreeLog::isActivelyLogging() const { return d_active; }
+
+
+PrimitiveVec::PrimitiveVec()
+  : len(0)
+  , inds(NULL)
+  , coeffs(NULL)
+{}
+
+PrimitiveVec::~PrimitiveVec(){
+  clear();
+}
+bool PrimitiveVec::initialized() const {
+  return inds != NULL;
+}
+void PrimitiveVec::clear() {
+  if(initialized()){
+    delete[] inds;
+    delete[] coeffs;
+    len = 0;
+    inds = NULL;
+    coeffs = NULL;
+  }
+}
+void PrimitiveVec::setup(int l){
+  Assert(!initialized());
+  len = l;
+  inds = new int[1+len];
+  coeffs = new double[1+len];
+}
+void PrimitiveVec::print(std::ostream& out) const{
+  Assert(initialized());
+  out << len << " ";
+  out.precision(15);
+  for(int i = 1; i <= len; ++i){
+    out << "["<< inds[i] <<", " << coeffs[i]<<"]";
+  }
+}
+std::ostream& operator<<(std::ostream& os, const PrimitiveVec& pv){
+  pv.print(os);
+  return os;
+}
+
+CutInfo::CutInfo(CutInfoKlass kl, int eid, int o)
+  : d_klass(kl)
+  , d_execOrd(eid)
+  , d_poolOrd(o)
+  , d_cutType(kind::UNDEFINED_KIND)
+  , d_cutRhs()
+  , d_cutVec()
+  , d_mAtCreation(-1)
+  , d_rowId(-1)
+  , d_exactPrecision(NULL)
+  , d_explanation(NULL)
+{}
+
+CutInfo::~CutInfo(){
+  if(d_exactPrecision == NULL){ delete d_exactPrecision; }
+  if(d_explanation == NULL){ delete d_explanation; }
+}
+
+int CutInfo::getId() const {
+  return d_execOrd;
+}
+
+int CutInfo::getRowId() const{
+  return d_rowId;
+}
+
+void CutInfo::setRowId(int rid){
+  d_rowId = rid;
+}
+
+void CutInfo::print(ostream& out) const{
+  out << "[CutInfo " << d_execOrd << " " << d_poolOrd
+      << " " << d_klass << " " << d_cutType << " " << d_cutRhs
+      << " ";
+  d_cutVec.print(out);
+  out << "]" << endl;
+}
+
+PrimitiveVec& CutInfo::getCutVector(){
+  return d_cutVec;
+}
+
+const PrimitiveVec& CutInfo::getCutVector() const{
+  return d_cutVec;
+}
+
+// void CutInfo::init_cut(int l){
+//   cut_vec.setup(l);
+// }
+
+Kind CutInfo::getKind() const{
+  return d_cutType;
+}
+
+void CutInfo::setKind(Kind k){
+  Assert(k == kind::LEQ || k == kind::GEQ);
+  d_cutType = k;
+}
+
+double CutInfo::getRhs() const{
+  return d_cutRhs;
+}
+
+void CutInfo::setRhs(double r){
+  d_cutRhs = r;
+}
+
+bool CutInfo::reconstructed() const{
+  return d_exactPrecision != NULL;
+}
+
+CutInfoKlass CutInfo::getKlass() const{
+  return d_klass;
+}
+
+int CutInfo::poolOrdinal() const{
+  return d_poolOrd;
+}
+
+void CutInfo::setDimensions(int N, int M){
+  d_mAtCreation = M;
+  d_N = N;
+}
+
+int CutInfo::getN() const{
+  return d_N;
+}
+
+int CutInfo::getMAtCreation() const{
+  return d_mAtCreation;
+}
+
+/* Returns true if the cut has an explanation. */
+bool CutInfo::proven() const{
+  return d_explanation != NULL;
+}
+
+bool CutInfo::operator<(const CutInfo& o) const{
+  return d_execOrd < o.d_execOrd;
+}
+
+
+void CutInfo::setReconstruction(const DenseVector& ep){
+  Assert(!reconstructed());
+  d_exactPrecision = new DenseVector(ep);
+}
+
+void CutInfo::setExplanation(const ConstraintCPVec& ex){
+  Assert(reconstructed());
+  if(d_explanation == NULL){
+    d_explanation = new ConstraintCPVec(ex);
+  }else{
+    *d_explanation = ex;
+  }
+}
+
+void CutInfo::swapExplanation(ConstraintCPVec& ex){
+  Assert(reconstructed());
+  Assert(!proven());
+  if(d_explanation == NULL){
+    d_explanation = new ConstraintCPVec();
+  }
+  d_explanation->swap(ex);
+}
+
+const DenseVector& CutInfo::getReconstruction() const {
+  Assert(reconstructed());
+  return *d_exactPrecision;
+}
+
+void CutInfo::clearReconstruction(){
+  if(proven()){
+    delete d_explanation;
+    d_explanation = NULL;
+  }
+
+  if(reconstructed()){
+    delete d_exactPrecision;
+    d_exactPrecision = NULL;
+  }
+
+  Assert(!reconstructed());
+  Assert(!proven());
+}
+
+const ConstraintCPVec& CutInfo::getExplanation() const {
+  Assert(proven());
+  return *d_explanation;
+}
+
+std::ostream& operator<<(std::ostream& os, const CutInfo& ci){
+  ci.print(os);
+  return os;
+}
+
+std::ostream& operator<<(std::ostream& out, CutInfoKlass kl){
+  switch(kl){
+  case MirCutKlass:
+    out << "MirCutKlass"; break;
+  case GmiCutKlass:
+    out << "GmiCutKlass"; break;
+  case BranchCutKlass:
+    out << "BranchCutKlass"; break;
+  case RowsDeletedKlass:
+    out << "RowDeletedKlass"; break;
+  case UnknownKlass:
+    out << "UnknownKlass"; break;
+  default:
+    out << "unexpected CutInfoKlass"; break;
+  }
+  return out;
+}
+bool NodeLog::isBranch() const{
+  return d_brVar >= 0;
+}
+
+NodeLog::NodeLog()
+  : d_nid(-1)
+  , d_parent(NULL)
+  , d_tl(NULL)
+  , d_cuts()
+  , d_rowIdsSelected()
+  , d_stat(Open)
+  , d_brVar(-1)
+  , d_brVal(0.0)
+  , d_downId(-1)
+  , d_upId(-1)
+  , d_rowId2ArithVar()
+{}
+
+NodeLog::NodeLog(TreeLog* tl, int node, const RowIdMap& m)
+  : d_nid(node)
+  , d_parent(NULL)
+  , d_tl(tl)
+  , d_cuts()
+  , d_rowIdsSelected()
+  , d_stat(Open)
+  , d_brVar(-1)
+  , d_brVal(0.0)
+  , d_downId(-1)
+  , d_upId(-1)
+  , d_rowId2ArithVar(m)
+{}
+
+NodeLog::NodeLog(TreeLog* tl, NodeLog* parent, int node)
+  : d_nid(node)
+  , d_parent(parent)
+  , d_tl(tl)
+  , d_cuts()
+  , d_rowIdsSelected()
+  , d_stat(Open)
+  , d_brVar(-1)
+  , d_brVal(0.0)
+  , d_downId(-1)
+  , d_upId(-1)
+  , d_rowId2ArithVar()
+{}
+
+NodeLog::~NodeLog(){
+  CutSet::iterator i = d_cuts.begin(), iend = d_cuts.end();
+  for(; i != iend; ++i){
+    CutInfo* c = *i;
+    delete c;
+  }
+  d_cuts.clear();
+  Assert(d_cuts.empty());
+}
+
+std::ostream& operator<<(std::ostream& os, const NodeLog& nl){
+  nl.print(os);
+  return os;
+}
+
+void NodeLog::copyParentRowIds() {
+  Assert(d_parent != NULL);
+  d_rowId2ArithVar = d_parent->d_rowId2ArithVar;
+}
+
+int NodeLog::branchVariable() const {
+  return d_brVar;
+}
+double NodeLog::branchValue() const{
+  return d_brVal;
+}
+int NodeLog::getNodeId() const {
+  return d_nid;
+}
+int NodeLog::getDownId() const{
+  return d_downId;
+}
+int NodeLog::getUpId() const{
+  return d_upId;
+}
+void NodeLog::addSelected(int ord, int sel){
+  Assert(d_rowIdsSelected.find(ord) == d_rowIdsSelected.end());
+  d_rowIdsSelected[ord] = sel;
+  Debug("approx::nodelog") << "addSelected("<< ord << ", "<< sel << ")" << endl;
+}
+void NodeLog::applySelected() {
+  CutSet::iterator iter = d_cuts.begin(), iend = d_cuts.end(), todelete;
+  while(iter != iend){
+    CutInfo* curr = *iter;
+    int poolOrd = curr->poolOrdinal();
+    if(curr->getRowId() >= 0 ){
+      // selected previously, kip
+      ++iter;
+    }else if(curr->getKlass() == RowsDeletedKlass){
+      // skip
+      ++iter;
+    }else if(curr->getKlass() == BranchCutKlass){
+      // skip
+      ++iter;
+    }else if(d_rowIdsSelected.find(poolOrd) == d_rowIdsSelected.end()){
+      todelete = iter;
+      ++iter;
+      d_cuts.erase(todelete);
+      delete curr;
+    }else{
+      Debug("approx::nodelog") << "applySelected " << curr->getId() << " " << poolOrd << "->" << d_rowIdsSelected[poolOrd] << endl;
+      curr->setRowId( d_rowIdsSelected[poolOrd] );
+      ++iter;
+    }
+  }
+  d_rowIdsSelected.clear();
+}
+
+void NodeLog::applyRowsDeleted(const RowsDeleted& rd) {
+  std::map<int, CutInfo*> currInOrd; //sorted
+
+  const PrimitiveVec& cv = rd.getCutVector();
+  std::vector<int> sortedRemoved (cv.inds+1, cv.inds+cv.len+1);
+  sortedRemoved.push_back(INT_MAX);
+  std::sort(sortedRemoved.begin(), sortedRemoved.end());
+
+  if(Debug.isOn("approx::nodelog")){
+    Debug("approx::nodelog") << "Removing #" << sortedRemoved.size()<< "...";
+    for(unsigned k = 0; k<sortedRemoved.size(); k++){
+      Debug("approx::nodelog") << ", " << sortedRemoved[k];
+    }
+    Debug("approx::nodelog") << endl;
+    Debug("approx::nodelog") << "cv.len" << cv.len  << endl;
+  }
+
+  int min = sortedRemoved.front();
+
+  CutSet::iterator iter = d_cuts.begin(), iend = d_cuts.end();
+  while(iter != iend){
+    CutInfo* curr= *iter;
+    if(curr->getId() < rd.getId()){
+      if(d_rowId2ArithVar.find(curr->getRowId()) != d_rowId2ArithVar.end()){
+        if(curr->getRowId() >= min){
+          currInOrd.insert(make_pair(curr->getRowId(), curr));
+        }
+      }
+    }
+    ++iter;
+  }
+
+  RowIdMap::const_iterator i, end;
+  i=d_rowId2ArithVar.begin(), end = d_rowId2ArithVar.end();
+  for(; i != end; ++i){
+    int key = (*i).first;
+    if(key >= min){
+      if(currInOrd.find(key) == currInOrd.end()){
+        CutInfo* null = NULL;
+        currInOrd.insert(make_pair(key, null));
+      }
+    }
+  }
+
+
+
+  std::map<int, CutInfo*>::iterator j, jend;
+
+  int posInSorted = 0;
+  for(j = currInOrd.begin(), jend=currInOrd.end(); j!=jend; ++j){
+    int origOrd = (*j).first;
+    ArithVar v = d_rowId2ArithVar[origOrd];
+    int headRemovedOrd = sortedRemoved[posInSorted];
+    while(headRemovedOrd < origOrd){
+      ++posInSorted;
+      headRemovedOrd  = sortedRemoved[posInSorted];
+    }
+    // headRemoveOrd >= origOrd
+    Assert(headRemovedOrd >= origOrd);
+
+    CutInfo* ci = (*j).second;
+    if(headRemovedOrd == origOrd){
+
+      if(ci == NULL){
+        Debug("approx::nodelog") << "deleting from above because of " << rd << endl;
+        Debug("approx::nodelog") << "had " << origOrd << " <-> " << v << endl;
+        d_rowId2ArithVar.erase(origOrd);
+      }else{
+        Debug("approx::nodelog") << "deleting " << ci << " because of " << rd << endl;
+        Debug("approx::nodelog") << "had " << origOrd << " <-> " << v << endl;
+        d_rowId2ArithVar.erase(origOrd);
+        ci->setRowId(-1);
+      }
+    }else{
+      Assert(headRemovedOrd > origOrd);
+      // headRemoveOrd > origOrd
+      int newOrd = origOrd - posInSorted;
+      Assert(newOrd > 0);
+      if(ci == NULL){
+        Debug("approx::nodelog") << "shifting above down due to " << rd << endl;
+        Debug("approx::nodelog") << "had " << origOrd << " <-> " << v << endl;
+        Debug("approx::nodelog") << "now have " << newOrd << " <-> " << v << endl;
+        d_rowId2ArithVar.erase(origOrd);
+        mapRowId(newOrd, v);
+      }else{
+        Debug("approx::nodelog") << "shifting " << ci << " down due to " << rd << endl;
+        Debug("approx::nodelog") << "had " << origOrd << " <-> " << v << endl;
+        Debug("approx::nodelog") << "now have " << newOrd << " <-> " << v << endl;
+        ci->setRowId(newOrd);
+        d_rowId2ArithVar.erase(origOrd);
+        mapRowId(newOrd, v);
+      }
+    }
+  }
+
+}
+
+// void NodeLog::adjustRowId(CutInfo& ci, const RowsDeleted& rd) {
+//   int origRowId = ci.getRowId();
+//   int newRowId = ci.getRowId();
+//   ArithVar v = d_rowId2ArithVar[origRowId];
+
+//   const PrimitiveVec& cv = rd.getCutVector();
+
+//   for(int j = 1, N = cv.len; j <= N; j++){
+//     int ind = cv.inds[j];
+//     if(ind == origRowId){
+//       newRowId = -1;
+//       break;
+//     }else if(ind < origRowId){
+//       newRowId--;
+//     }
+//   }
+
+//   if(newRowId < 0){
+//     cout << "deleting " << ci << " because of " << rd << endl;
+//     cout << "had " << origRowId << " <-> " << v << endl;
+//     d_rowId2ArithVar.erase(origRowId);
+//     ci.setRowId(-1);
+//   }else if(newRowId != origRowId){
+//     cout << "adjusting " << ci << " because of " << rd << endl;
+//     cout << "had " << origRowId << " <-> " << v << endl;
+//     cout << "now have " << newRowId << " <-> " << v << endl;
+//     d_rowId2ArithVar.erase(origRowId);
+//     ci.setRowId(newRowId);
+//     mapRowId(newRowId, v);
+//   }else{
+//     cout << "row id unchanged " << ci << " because of " << rd << endl;
+//   }
+// }
+
+
+ArithVar NodeLog::lookupRowId(int rowId) const{
+  RowIdMap::const_iterator i = d_rowId2ArithVar.find(rowId);
+  if(i == d_rowId2ArithVar.end()){
+    return ARITHVAR_SENTINEL;
+  }else{
+    return (*i).second;
+  }
+}
+
+void NodeLog::mapRowId(int rowId, ArithVar v){
+  Assert(lookupRowId(rowId) == ARITHVAR_SENTINEL);
+  Debug("approx::nodelog")
+    << "On " << getNodeId()
+    << " adding row id " << rowId << " <-> " << v << endl;
+  d_rowId2ArithVar[rowId] = v;
+}
+
+
+
+void NodeLog::addCut(CutInfo* ci){
+  Assert(ci != NULL);
+  d_cuts.insert(ci);
+}
+
+void NodeLog::print(ostream& o) const{
+  o << "[n" << getNodeId();
+  for(const_iterator iter = begin(), iend = end(); iter != iend; ++iter ){
+    CutInfo* cut = *iter;
+    o << ", " << cut->poolOrdinal();
+    if(cut->getRowId() >= 0){
+      o << " " << cut->getRowId();
+    }
+  }
+  o << "]" << std::endl;
+}
+
+void NodeLog::closeNode(){
+  Assert(d_stat == Open);
+  d_stat = Closed;
+}
+
+void NodeLog::setBranch(int br, double val, int d, int u){
+  Assert(d_stat == Open);
+  d_brVar = br;
+  d_brVal = val;
+  d_downId = d;
+  d_upId = u;
+  d_stat = Branched;
+}
+
+TreeLog::TreeLog()
+  : next_exec_ord(0)
+  , d_toNode()
+  , d_branches()
+  , d_numCuts(0)
+  , d_active(false)
+{
+  NodeLog::RowIdMap empty;
+  reset(empty);
+}
+
+int TreeLog::getRootId() const{
+  return 1;
+}
+
+NodeLog& TreeLog::getRootNode(){
+  return getNode(getRootId());
+}
+
+void TreeLog::clear(){
+  next_exec_ord = 0;
+  d_toNode.clear();
+  d_branches.purge();
+
+  d_numCuts = 0;
+
+  // add root
+}
+
+void TreeLog::reset(const NodeLog::RowIdMap& m){
+  clear();
+  d_toNode.insert(make_pair(getRootId(), NodeLog(this, getRootId(), m)));
+}
+
+void TreeLog::addCut(){ d_numCuts++; }
+uint32_t TreeLog::cutCount() const { return d_numCuts; }
+void TreeLog::logBranch(uint32_t x){
+  d_branches.add(x);
+}
+uint32_t TreeLog::numBranches(uint32_t x){
+  return d_branches.count(x);
+}
+
+void TreeLog::branch(int nid, int br, double val, int dn, int up){
+  NodeLog& nl = getNode(nid);
+  nl.setBranch(br, val, dn, up);
+
+  d_toNode.insert(make_pair(dn, NodeLog(this, &nl, dn)));
+  d_toNode.insert(make_pair(up, NodeLog(this, &nl, up)));
+}
+
+void TreeLog::close(int nid){
+  NodeLog& nl = getNode(nid);
+  nl.closeNode();
+}
+
+
+
+// void TreeLog::applySelected() {
+//   std::map<int, NodeLog>::iterator iter, end;
+//   for(iter = d_toNode.begin(), end = d_toNode.end(); iter != end; ++iter){
+//     NodeLog& onNode = (*iter).second;
+//     //onNode.applySelected();
+//   }
+// }
+
+void TreeLog::print(ostream& o) const{
+  o << "TreeLog: " << d_toNode.size() << std::endl;
+  for(const_iterator iter = begin(), iend = end(); iter != iend; ++iter){
+    const NodeLog& onNode = (*iter).second;
+    onNode.print(o);
+  }
+}
+
+void TreeLog::applyRowsDeleted(int nid, const RowsDeleted& rd){
+  NodeLog& nl = getNode(nid);
+  nl.applyRowsDeleted(rd);
+}
+
+void TreeLog::mapRowId(int nid, int ind, ArithVar v){
+  NodeLog& nl = getNode(nid);
+  nl.mapRowId(ind, v);
+}
+
+void DenseVector::purge() {
+  lhs.purge();
+  rhs = Rational(0);
+}
+
+RowsDeleted::RowsDeleted(int execOrd, int nrows, const int num[])
+  : CutInfo(RowsDeletedKlass, execOrd, 0)
+{
+  d_cutVec.setup(nrows);
+  for(int j=1; j <= nrows; j++){
+    d_cutVec.coeffs[j] = 0;
+    d_cutVec.inds[j] = num[j];
+  }
+}
+
+BranchCutInfo::BranchCutInfo(int execOrd, int br, Kind dir, double val)
+  : CutInfo(BranchCutKlass, execOrd, 0)
+{
+  d_cutVec.setup(1);
+  d_cutVec.inds[1] = br;
+  d_cutVec.coeffs[1] = +1.0;
+  d_cutRhs = val;
+  d_cutType = dir;
+}
+
+void TreeLog::printBranchInfo(ostream& os) const{
+  uint32_t total = 0;
+  DenseMultiset::const_iterator iter = d_branches.begin(),  iend = d_branches.end();
+  for(; iter != iend; ++iter){
+    uint32_t el = *iter;
+    total += el;
+  }
+  os << "printBranchInfo() : " << total << endl;
+  iter = d_branches.begin(),  iend = d_branches.end();
+  for(; iter != iend; ++iter){
+    uint32_t el = *iter;
+    os << "["<<el <<", " << d_branches.count(el) << "]";
+  }
+  os << endl;
+}
+
+
+void DenseVector::print(std::ostream& os) const {
+  os << rhs << " + ";
+  print(os, lhs);
+}
+void DenseVector::print(ostream& out, const DenseMap<Rational>& v){
+  out << "[DenseVec len " <<  v.size();
+  DenseMap<Rational>::const_iterator iter, end;
+  for(iter = v.begin(), end = v.end(); iter != end; ++iter){
+    ArithVar x = *iter;
+    out << ", "<< x << " " << v[x];
+  }
+  out << "]";
+}
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/cut_log.h b/src/theory/arith/cut_log.h
new file mode 100644
index 0000000..e6475b5
--- /dev/null
+++ b/src/theory/arith/cut_log.h
@@ -0,0 +1,299 @@
+/*********************                                                        */
+/*! \file cut_log.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Kshitij Bansal
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <ext/hash_map>
+#include <map>
+#include <set>
+#include <vector>
+
+#include "expr/kind.h"
+#include "theory/arith/arithvar.h"
+#include "theory/arith/constraint_forward.h"
+#include "util/dense_map.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+/** A low level vector of indexed doubles. */
+struct PrimitiveVec {
+  int len;
+  int* inds;
+  double* coeffs;
+  PrimitiveVec();
+  ~PrimitiveVec();
+  bool initialized() const;
+  void clear();
+  void setup(int l);
+  void print(std::ostream& out) const;
+};
+std::ostream& operator<<(std::ostream& os, const PrimitiveVec& pv);
+
+struct DenseVector {
+  DenseMap<Rational> lhs;
+  Rational rhs;
+  void purge();
+  void print(std::ostream& os) const;
+
+  static void print(std::ostream& os, const DenseMap<Rational>& lhs);
+};
+
+/** The different kinds of cuts. */
+enum CutInfoKlass{ MirCutKlass, GmiCutKlass, BranchCutKlass,
+                   RowsDeletedKlass,
+                   UnknownKlass};
+std::ostream& operator<<(std::ostream& os, CutInfoKlass kl);
+
+/** A general class for describing a cut. */
+class CutInfo {
+protected:
+  CutInfoKlass d_klass;
+  int d_execOrd;
+
+  int d_poolOrd;    /* cut's ordinal in the current node pool */
+  Kind d_cutType;   /* Lowerbound, upperbound or undefined. */
+  double d_cutRhs; /* right hand side of the cut */
+  PrimitiveVec d_cutVec; /* vector of the cut */
+
+  /**
+   * The number of rows at the time the cut was made.
+   * This is required to descramble indices after the fact!
+   */
+  int d_mAtCreation;
+
+  /** This is the number of structural variables. */
+  int d_N;
+
+  /** if selected, make this non-zero */
+  int d_rowId;
+
+  /* If the cut has been successfully created,
+   * the cut is stored in exact precision in d_exactPrecision.
+   * If the cut has not yet been proven, this is null.
+   */
+  DenseVector* d_exactPrecision;
+
+  ConstraintCPVec* d_explanation;
+
+public:
+  CutInfo(CutInfoKlass kl, int cutid, int ordinal);
+
+  virtual ~CutInfo();
+
+  int getId() const;
+
+  int getRowId() const;
+  void setRowId(int rid);
+
+  void print(std::ostream& out) const;
+  //void init_cut(int l);
+  PrimitiveVec& getCutVector();
+  const PrimitiveVec& getCutVector() const;
+
+  Kind getKind() const;
+  void setKind(Kind k);
+
+
+  void setRhs(double r);
+  double getRhs() const;
+
+  CutInfoKlass getKlass() const;
+  int poolOrdinal() const;
+
+  void setDimensions(int N, int M);
+  int getN() const;
+  int getMAtCreation() const;
+
+  bool operator<(const CutInfo& o) const;
+
+  /* Returns true if the cut was successfully made in exact precision.*/
+  bool reconstructed() const;
+
+  /* Returns true if the cut has an explanation. */
+  bool proven() const;
+
+  void setReconstruction(const DenseVector& ep);
+  void setExplanation(const ConstraintCPVec& ex);
+  void swapExplanation(ConstraintCPVec& ex);
+
+  const DenseVector& getReconstruction() const;
+  const ConstraintCPVec& getExplanation() const;
+
+  void clearReconstruction();
+};
+std::ostream& operator<<(std::ostream& os, const CutInfo& ci);
+
+class BranchCutInfo : public CutInfo {
+public:
+  BranchCutInfo(int execOrd, int br,  Kind dir, double val);
+};
+
+class RowsDeleted : public CutInfo {
+public:
+  RowsDeleted(int execOrd, int nrows, const int num[]);
+};
+
+class TreeLog;
+
+class NodeLog {
+private:
+  int d_nid;
+  NodeLog* d_parent; /* If null this is the root */
+  TreeLog* d_tl;     /* TreeLog containing the node. */
+
+  struct CmpCutPointer{
+    int operator()(const CutInfo* a, const CutInfo* b) const{
+      return *a < *b;
+    }
+  };
+  typedef std::set<CutInfo*, CmpCutPointer> CutSet;
+  CutSet d_cuts;
+  std::map<int, int> d_rowIdsSelected;
+
+  enum Status {Open, Closed, Branched};
+  Status d_stat;
+
+  int d_brVar; // branching variable
+  double d_brVal;
+  int d_downId;
+  int d_upId;
+
+public:
+  typedef __gnu_cxx::hash_map<int, ArithVar> RowIdMap;
+private:
+  RowIdMap d_rowId2ArithVar;
+
+public:
+  NodeLog(); /* default constructor. */
+  NodeLog(TreeLog* tl, int node, const RowIdMap& m); /* makes a root node. */
+  NodeLog(TreeLog* tl, NodeLog* parent, int node);/* makes a non-root node. */
+
+  ~NodeLog();
+
+  int getNodeId() const;
+  void addSelected(int ord, int sel);
+  void applySelected();
+  void addCut(CutInfo* ci);
+  void print(std::ostream& o) const;
+
+  bool isRoot() const;
+  const NodeLog& getParent() const;
+
+  void copyParentRowIds();
+
+  bool isBranch() const;
+  int branchVariable() const;
+  double branchValue() const;
+
+  typedef CutSet::const_iterator const_iterator;
+  const_iterator begin() const;
+  const_iterator end() const;
+
+  void setBranch(int br, double val, int dn, int up);
+  void closeNode();
+
+  int getDownId() const;
+  int getUpId() const;
+
+  /**
+   * Looks up a row id to the appropraite arith variable.
+   * Be careful these are deleted in context during replay!
+   * failure returns ARITHVAR_SENTINEL */
+  ArithVar lookupRowId(int rowId) const;
+
+  /**
+   * Maps a row id to an arithvar.
+   * Be careful these are deleted in context during replay!
+   */
+  void mapRowId(int rowid, ArithVar v);
+  void applyRowsDeleted(const RowsDeleted& rd);
+
+};
+std::ostream& operator<<(std::ostream& os, const NodeLog& nl);
+
+class ApproximateSimplex;
+class TreeLog {
+private:
+  int next_exec_ord;
+  typedef std::map<int, NodeLog> ToNodeMap;
+  ToNodeMap d_toNode;
+  DenseMultiset d_branches;
+
+  uint32_t d_numCuts;
+
+  bool d_active;
+
+public:
+  TreeLog();
+
+  NodeLog& getNode(int nid);
+  void branch(int nid, int br, double val, int dn, int up);
+  void close(int nid);
+
+  //void applySelected();
+  void print(std::ostream& o) const;
+
+  typedef ToNodeMap::const_iterator const_iterator;
+  const_iterator begin() const;
+  const_iterator end() const;
+
+  int getExecutionOrd();
+
+  void reset(const NodeLog::RowIdMap& m);
+
+  // Applies rd tp to the node with id nid
+  void applyRowsDeleted(int nid, const RowsDeleted& rd);
+
+  // Synonym for getNode(nid).mapRowId(ind, v)
+  void mapRowId(int nid, int ind, ArithVar v);
+
+private:
+  void clear();
+
+public:
+  void makeInactive();
+  void makeActive();
+
+  bool isActivelyLogging() const;
+
+  void addCut();
+  uint32_t cutCount() const;
+
+  void logBranch(uint32_t x);
+  uint32_t numBranches(uint32_t x);
+
+  int getRootId() const;
+
+  uint32_t numNodes() const{
+    return d_toNode.size();
+  }
+
+  NodeLog& getRootNode();
+  void printBranchInfo(std::ostream& os) const;
+};
+
+
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/delta_rational.cpp b/src/theory/arith/delta_rational.cpp
new file mode 100644
index 0000000..207fd79
--- /dev/null
+++ b/src/theory/arith/delta_rational.cpp
@@ -0,0 +1,106 @@
+/*********************                                                        */
+/*! \file delta_rational.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+
+#include "theory/arith/delta_rational.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+std::ostream& operator<<(std::ostream& os, const DeltaRational& dq){
+  return os << "(" << dq.getNoninfinitesimalPart()
+            << "," << dq.getInfinitesimalPart() << ")";
+}
+
+
+std::string DeltaRational::toString() const {
+  return "(" + getNoninfinitesimalPart().toString() + "," +
+    getInfinitesimalPart().toString() + ")";
+}
+
+void DeltaRational::seperatingDelta(Rational& res, const DeltaRational& a, const DeltaRational& b){
+  Assert(res.sgn() > 0);
+
+  int cmp = a.cmp(b);
+  if(cmp != 0){
+    bool aLeqB = cmp < 0;
+
+    const DeltaRational& min = aLeqB ? a : b;
+    const DeltaRational& max = aLeqB ? b : a;
+
+    const Rational& pinf = min.getInfinitesimalPart();
+    const Rational& cinf = max.getInfinitesimalPart();
+
+    const Rational& pmaj = min.getNoninfinitesimalPart();
+    const Rational& cmaj = max.getNoninfinitesimalPart();
+
+    if(pmaj == cmaj){
+      Assert(pinf < cinf);
+      // any value of delta preserves the order
+    }else if(pinf == cinf){
+      Assert(pmaj < cmaj);
+      // any value of delta preserves the order
+    }else{
+      Assert(pinf != cinf && pmaj != cmaj);
+      Rational denDiffAbs = (cinf - pinf).abs();
+
+      Rational numDiff = (cmaj - pmaj);
+      Assert(numDiff.sgn() >= 0);
+      Assert(denDiffAbs.sgn() > 0);
+      Rational ratio = numDiff / denDiffAbs;
+      Assert(ratio.sgn() > 0);
+
+      if(ratio < res){
+        res = ratio;
+      }
+    }
+  }
+}
+
+
+DeltaRationalException::DeltaRationalException(const char* op, const DeltaRational& a, const DeltaRational& b) throw (){
+    std::stringstream ss;
+    ss << "Operation [" << op << "] between DeltaRational values ";
+    ss << a << " and " << b << " is not a DeltaRational.";
+    setMessage(ss.str());
+}
+
+DeltaRationalException::~DeltaRationalException() throw () { }
+
+
+Integer DeltaRational::euclidianDivideQuotient(const DeltaRational& y) const throw(DeltaRationalException){
+  if(isIntegral() && y.isIntegral()){
+    Integer ti = floor();
+    Integer yi = y.floor();
+    return ti.euclidianDivideQuotient(yi);
+  }else{
+    throw DeltaRationalException("euclidianDivideQuotient", *this, y);
+  }
+}
+
+Integer DeltaRational::euclidianDivideRemainder(const DeltaRational& y) const throw(DeltaRationalException){
+  if(isIntegral() && y.isIntegral()){
+    Integer ti = floor();
+    Integer yi = y.floor();
+    return ti.euclidianDivideRemainder(yi);
+  }else{
+    throw DeltaRationalException("euclidianDivideRemainder", *this, y);
+  }
+}
+
+}/* CVC4 namespace */
diff --git a/src/theory/arith/delta_rational.h b/src/theory/arith/delta_rational.h
new file mode 100644
index 0000000..afe4c0e
--- /dev/null
+++ b/src/theory/arith/delta_rational.h
@@ -0,0 +1,298 @@
+/*********************                                                        */
+/*! \file delta_rational.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <ostream>
+
+#include "base/exception.h"
+#include "base/cvc4_assert.h"
+#include "util/integer.h"
+#include "util/rational.h"
+
+namespace CVC4 {
+
+class DeltaRational;
+
+class DeltaRationalException : public Exception {
+public:
+  DeltaRationalException(const char* op, const DeltaRational& a, const DeltaRational& b) throw ();
+  virtual ~DeltaRationalException() throw ();
+};
+
+
+/**
+ * A DeltaRational is a pair of rationals (c,k) that represent the number
+ *   c + kd
+ * where d is an implicit system wide symbolic infinitesimal.
+ */
+class DeltaRational {
+private:
+  CVC4::Rational c;
+  CVC4::Rational k;
+
+public:
+  DeltaRational() : c(0,1), k(0,1) {}
+  DeltaRational(const CVC4::Rational& base) : c(base), k(0,1) {}
+  DeltaRational(const CVC4::Rational& base, const CVC4::Rational& coeff) :
+    c(base), k(coeff) {}
+
+  const CVC4::Rational& getInfinitesimalPart() const {
+    return k;
+  }
+
+  const CVC4::Rational& getNoninfinitesimalPart() const {
+    return c;
+  }
+
+  int sgn() const {
+    int s = getNoninfinitesimalPart().sgn();
+    if(s == 0){
+      return infinitesimalSgn();
+    }else{
+      return s;
+    }
+  }
+
+  int infinitesimalSgn() const {
+    return getInfinitesimalPart().sgn();
+  }
+
+  bool infinitesimalIsZero() const {
+    return getInfinitesimalPart().isZero();
+  }
+
+  bool noninfinitesimalIsZero() const {
+    return getNoninfinitesimalPart().isZero();
+  }
+
+  bool isZero() const {
+    return noninfinitesimalIsZero() && infinitesimalIsZero();
+  }
+
+
+  int cmp(const DeltaRational& other) const{
+    int cmp = c.cmp(other.c);
+    if(cmp == 0){
+      return k.cmp(other.k);
+    }else{
+      return cmp;
+    }
+  }
+
+  DeltaRational operator+(const DeltaRational& other) const{
+    CVC4::Rational tmpC = c+other.c;
+    CVC4::Rational tmpK = k+other.k;
+    return DeltaRational(tmpC, tmpK);
+  }
+
+  DeltaRational operator*(const Rational& a) const{
+    CVC4::Rational tmpC = a*c;
+    CVC4::Rational tmpK = a*k;
+    return DeltaRational(tmpC, tmpK);
+  }
+
+
+  /**
+   * Multiplies (this->c + this->k * delta) * (a.c + a.k * delta)
+   * This can be done whenever this->k or a.k is 0.
+   * Otherwise, the result is not a DeltaRational and a DeltaRationalException is thrown.
+   */
+  DeltaRational operator*(const DeltaRational& a) const throw(DeltaRationalException){
+    if(infinitesimalIsZero()){
+      return a * (this->getNoninfinitesimalPart());
+    }else if(a.infinitesimalIsZero()){
+      return (*this) * a.getNoninfinitesimalPart();
+    }else{
+      throw DeltaRationalException("operator*", *this, a);
+    }
+  }
+
+
+  DeltaRational operator-(const DeltaRational& a) const{
+    CVC4::Rational negOne(CVC4::Integer(-1));
+    return *(this) + (a * negOne);
+  }
+
+  DeltaRational operator-() const{
+    return DeltaRational(-c, -k);
+  }
+
+  DeltaRational operator/(const Rational& a) const{
+    CVC4::Rational tmpC = c/a;
+    CVC4::Rational tmpK = k/a;
+    return DeltaRational(tmpC, tmpK);
+  }
+
+  DeltaRational operator/(const Integer& a) const{
+    CVC4::Rational tmpC = c/a;
+    CVC4::Rational tmpK = k/a;
+    return DeltaRational(tmpC, tmpK);
+  }
+
+  /**
+   * Divides (*this) / (a.c + a.k * delta)
+   * This can be done when a.k is 0 and a.c is non-zero.
+   * Otherwise, the result is not a DeltaRational and a DeltaRationalException is thrown.
+   */
+  DeltaRational operator/(const DeltaRational& a) const throw(DeltaRationalException){
+    if(a.infinitesimalIsZero()){
+      return (*this) / a.getNoninfinitesimalPart();
+    }else{
+      throw DeltaRationalException("operator/", *this, a);
+    }
+  }
+
+
+  DeltaRational abs() const {
+    if(sgn() >= 0){
+      return *this;
+    }else{
+      return (*this) * Rational(-1);
+    }
+  }
+
+  bool operator==(const DeltaRational& other) const{
+    return (k == other.k) && (c == other.c);
+  }
+
+  bool operator!=(const DeltaRational& other) const{
+    return !(*this == other);
+  }
+
+
+  bool operator<=(const DeltaRational& other) const{
+    int cmp = c.cmp(other.c);
+    return (cmp < 0) || ((cmp==0)&&(k <= other.k));
+  }
+  bool operator<(const DeltaRational& other) const{
+    return (other  > *this);
+  }
+  bool operator>=(const DeltaRational& other) const{
+    return (other <= *this);
+  }
+  bool operator>(const DeltaRational& other) const{
+    return !(*this <= other);
+  }
+
+  int compare(const DeltaRational& other) const{
+    int cmpRes = c.cmp(other.c);
+    return (cmpRes != 0) ? cmpRes : (k.cmp(other.k));
+  }
+
+  DeltaRational& operator=(const DeltaRational& other){
+    c = other.c;
+    k = other.k;
+    return *(this);
+  }
+
+  DeltaRational& operator*=(const CVC4::Rational& a){
+    c *=  a;
+    k *=  a;
+
+    return *(this);
+  }
+
+  DeltaRational& operator+=(const DeltaRational& other){
+    c += other.c;
+    k += other.k;
+
+    return *(this);
+  }
+
+  DeltaRational& operator/=(const Rational& a){
+    Assert(!a.isZero());
+    c /= a;
+    k /= a;
+    return *(this);
+  }
+
+  bool isIntegral() const {
+    if(infinitesimalIsZero()){
+      return getNoninfinitesimalPart().isIntegral();
+    }else{
+      return false;
+    }
+  }
+
+  Integer floor() const {
+    if(getNoninfinitesimalPart().isIntegral()){
+      if(getInfinitesimalPart().sgn() >= 0){
+        return getNoninfinitesimalPart().getNumerator();
+      }else{
+        return getNoninfinitesimalPart().getNumerator() - Integer(1);
+      }
+    }else{
+      return getNoninfinitesimalPart().floor();
+    }
+  }
+
+  Integer ceiling() const {
+    if(getNoninfinitesimalPart().isIntegral()){
+      if(getInfinitesimalPart().sgn() <= 0){
+        return getNoninfinitesimalPart().getNumerator();
+      }else{
+        return getNoninfinitesimalPart().getNumerator() + Integer(1);
+      }
+    }else{
+      return getNoninfinitesimalPart().ceiling();
+    }
+  }
+
+  /** Only well defined if both this and y are integral. */
+  Integer euclidianDivideQuotient(const DeltaRational& y) const throw(DeltaRationalException);
+
+  /** Only well defined if both this and y are integral. */
+  Integer euclidianDivideRemainder(const DeltaRational& y) const throw(DeltaRationalException);
+
+
+  std::string toString() const;
+
+  Rational substituteDelta(const Rational& d) const{
+    return getNoninfinitesimalPart() + (d * getInfinitesimalPart());
+  }
+
+  /**
+   * Computes a sufficient upperbound to separate two DeltaRationals.
+   * This value is stored in res.
+   * For any rational d such that
+   *   0 < d < res
+   * then
+   *   a < b if and only if substituteDelta(a, d) < substituteDelta(b,d).
+   * (Similar relationships hold for for a == b and a > b.)
+   * Precondition: res > 0
+   */
+  static void seperatingDelta(Rational& res, const DeltaRational& a, const DeltaRational& b);
+
+  uint32_t complexity() const {
+    return c.complexity() + k.complexity();
+  }
+
+  double approx(double deltaSub) const {
+    double maj = getNoninfinitesimalPart().getDouble();
+    double min = deltaSub * (getInfinitesimalPart().getDouble());
+    return maj + min;
+  }
+
+
+};
+
+std::ostream& operator<<(std::ostream& os, const DeltaRational& n);
+
+}/* CVC4 namespace */
diff --git a/src/theory/arith/dio_solver.cpp b/src/theory/arith/dio_solver.cpp
new file mode 100644
index 0000000..f34bbc6
--- /dev/null
+++ b/src/theory/arith/dio_solver.cpp
@@ -0,0 +1,829 @@
+/*********************                                                        */
+/*! \file dio_solver.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Diophantine equation solver
+ **
+ ** A Diophantine equation solver for the theory of arithmetic.
+ **/
+#include "theory/arith/dio_solver.h"
+
+#include <iostream>
+
+#include "base/output.h"
+#include "options/arith_options.h"
+#include "smt/smt_statistics_registry.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+inline Node makeIntegerVariable(){
+  NodeManager* curr = NodeManager::currentNM();
+  return curr->mkSkolem("intvar", curr->integerType(), "is an integer variable created by the dio solver");
+}
+
+DioSolver::DioSolver(context::Context* ctxt) :
+  d_lastUsedProofVariable(ctxt,0),
+  d_inputConstraints(ctxt),
+  d_nextInputConstraintToEnqueue(ctxt, 0),
+  d_trail(ctxt),
+  d_subs(ctxt),
+  d_currentF(),
+  d_savedQueue(ctxt),
+  d_savedQueueIndex(ctxt, 0),
+  d_conflictHasBeenRaised(ctxt, false),
+  d_maxInputCoefficientLength(ctxt, 0),
+  d_usedDecomposeIndex(ctxt, false),
+  d_lastPureSubstitution(ctxt, 0),
+  d_pureSubstitionIter(ctxt, 0),
+  d_decompositionLemmaQueue(ctxt)
+{}
+
+DioSolver::Statistics::Statistics() :
+  d_conflictCalls("theory::arith::dio::conflictCalls",0),
+  d_cutCalls("theory::arith::dio::cutCalls",0),
+  d_cuts("theory::arith::dio::cuts",0),
+  d_conflicts("theory::arith::dio::conflicts",0),
+  d_conflictTimer("theory::arith::dio::conflictTimer"),
+  d_cutTimer("theory::arith::dio::cutTimer")
+{
+  smtStatisticsRegistry()->registerStat(&d_conflictCalls);
+  smtStatisticsRegistry()->registerStat(&d_cutCalls);
+
+  smtStatisticsRegistry()->registerStat(&d_cuts);
+  smtStatisticsRegistry()->registerStat(&d_conflicts);
+
+  smtStatisticsRegistry()->registerStat(&d_conflictTimer);
+  smtStatisticsRegistry()->registerStat(&d_cutTimer);
+}
+
+DioSolver::Statistics::~Statistics(){
+  smtStatisticsRegistry()->unregisterStat(&d_conflictCalls);
+  smtStatisticsRegistry()->unregisterStat(&d_cutCalls);
+
+  smtStatisticsRegistry()->unregisterStat(&d_cuts);
+  smtStatisticsRegistry()->unregisterStat(&d_conflicts);
+
+  smtStatisticsRegistry()->unregisterStat(&d_conflictTimer);
+  smtStatisticsRegistry()->unregisterStat(&d_cutTimer);
+}
+
+bool DioSolver::queueConditions(TrailIndex t){
+  /* debugPrintTrail(t); */
+  Debug("queueConditions") << !inConflict() << std::endl;
+  Debug("queueConditions") << gcdIsOne(t) << std::endl;
+  Debug("queueConditions") << !debugAnySubstitionApplies(t) << std::endl;
+  Debug("queueConditions") << !triviallySat(t) << std::endl;
+  Debug("queueConditions") << !triviallyUnsat(t) << std::endl;
+
+  return
+    !inConflict() &&
+    gcdIsOne(t) &&
+    !debugAnySubstitionApplies(t) &&
+    !triviallySat(t) &&
+    !triviallyUnsat(t);
+}
+
+size_t DioSolver::allocateProofVariable() {
+  Assert(d_lastUsedProofVariable <= d_proofVariablePool.size());
+  if(d_lastUsedProofVariable == d_proofVariablePool.size()){
+    Assert(d_lastUsedProofVariable == d_proofVariablePool.size());
+    Node intVar = makeIntegerVariable();
+    d_proofVariablePool.push_back(Variable(intVar));
+  }
+  size_t res = d_lastUsedProofVariable;
+  d_lastUsedProofVariable = d_lastUsedProofVariable + 1;
+  return res;
+}
+
+
+Node DioSolver::nextPureSubstitution(){
+  Assert(hasMorePureSubstitutions());
+  SubIndex curr = d_pureSubstitionIter;
+  d_pureSubstitionIter = d_pureSubstitionIter + 1;
+
+  Assert(d_subs[curr].d_fresh.isNull());
+  Variable v = d_subs[curr].d_eliminated;
+
+  SumPair sp = d_trail[d_subs[curr].d_constraint].d_eq;
+  Polynomial p = sp.getPolynomial();
+  Constant c = -sp.getConstant();
+  Polynomial cancelV = p + Polynomial::mkPolynomial(v);
+  Node eq = NodeManager::currentNM()->mkNode(kind::EQUAL, v.getNode(), cancelV.getNode());
+  return eq;
+}
+
+
+bool DioSolver::debugEqualityInInputEquations(Node eq){
+  typedef context::CDList<InputConstraint>::const_iterator const_iterator;
+  const_iterator i=d_inputConstraints.begin(), end = d_inputConstraints.end();
+  for(; i != end; ++i){
+    Node reason_i = (*i).d_reason;
+    if(eq == reason_i){
+      return true;
+    }
+  }
+  return false;
+}
+
+
+void DioSolver::pushInputConstraint(const Comparison& eq, Node reason){
+  Assert(!debugEqualityInInputEquations(reason));
+  Assert(eq.debugIsIntegral());
+  Assert(eq.getNode().getKind() == kind::EQUAL);
+
+  SumPair sp = eq.toSumPair();
+  if(sp.isNonlinear()){
+    return;
+  }
+
+
+
+  uint32_t length = sp.maxLength();
+  if(length > d_maxInputCoefficientLength){
+    d_maxInputCoefficientLength = length;
+  }
+
+  size_t varIndex = allocateProofVariable();
+  Variable proofVariable(d_proofVariablePool[varIndex]);
+  //Variable proofVariable(makeIntegerVariable());
+
+  TrailIndex posInTrail = d_trail.size();
+  Debug("dio::pushInputConstraint") << "pushInputConstraint @ " << posInTrail
+                                    << " " << eq.getNode()
+                                    << " " << reason << endl;
+  d_trail.push_back(Constraint(sp,Polynomial::mkPolynomial(proofVariable)));
+
+  size_t posInConstraintList = d_inputConstraints.size();
+  d_inputConstraints.push_back(InputConstraint(reason, posInTrail));
+
+  d_varToInputConstraintMap[proofVariable.getNode()] = posInConstraintList;
+}
+
+
+DioSolver::TrailIndex DioSolver::scaleEqAtIndex(DioSolver::TrailIndex i, const Integer& g){
+  Assert(g != 0);
+  Constant invg = Constant::mkConstant(Rational(Integer(1),g));
+  const SumPair& sp = d_trail[i].d_eq;
+  const Polynomial& proof = d_trail[i].d_proof;
+
+  SumPair newSP = sp * invg;
+  Polynomial newProof = proof * invg;
+
+  Assert(newSP.isIntegral());
+  Assert(newSP.gcd() == 1);
+
+  TrailIndex j = d_trail.size();
+
+  d_trail.push_back(Constraint(newSP, newProof));
+
+  Debug("arith::dio") << "scaleEqAtIndex(" << i <<","<<g<<")"<<endl;
+  Debug("arith::dio") << "derived "<< newSP.getNode()
+                      <<" with proof " << newProof.getNode() << endl;
+  return j;
+}
+
+Node DioSolver::proveIndex(TrailIndex i){
+  Assert(inRange(i));
+  const Polynomial& proof = d_trail[i].d_proof;
+  Assert(!proof.isConstant());
+
+  NodeBuilder<> nb(kind::AND);
+  for(Polynomial::iterator iter = proof.begin(), end = proof.end(); iter!= end; ++iter){
+    Monomial m = (*iter);
+    Assert(!m.isConstant());
+    VarList vl = m.getVarList();
+    Assert(vl.singleton());
+    Variable v = vl.getHead();
+
+    Node input = proofVariableToReason(v);
+    if(input.getKind() == kind::AND){
+      for(Node::iterator input_iter = input.begin(), input_end = input.end(); input_iter != input_end; ++input_iter){
+	Node inputChild = *input_iter;
+	nb << inputChild;
+      }
+    }else{
+      nb << input;
+    }
+  }
+
+  Node result = (nb.getNumChildren() == 1) ? nb[0] : (Node)nb;
+  Debug("arith::dio") << "Proof at " << i << " is "
+                      << d_trail[i].d_eq.getNode() << endl
+                      << d_trail[i].d_proof.getNode() << endl
+                      << " which becomes " << result << endl;
+  return result;
+}
+
+bool DioSolver::anyCoefficientExceedsMaximum(TrailIndex j) const{
+  uint32_t length = d_trail[j].d_eq.maxLength();
+  uint32_t nmonos = d_trail[j].d_eq.getPolynomial().numMonomials();
+
+  bool result =
+    nmonos >= 2 &&
+    length > d_maxInputCoefficientLength + MAX_GROWTH_RATE;
+  if(Debug.isOn("arith::dio::max") && result){
+    Debug("arith::dio::max") << "about to drop:";
+    debugPrintTrail(j);
+  }
+  return result;
+}
+
+void DioSolver::enqueueInputConstraints(){
+  Assert(d_currentF.empty());
+  while(d_savedQueueIndex < d_savedQueue.size()){
+    d_currentF.push_back(d_savedQueue[d_savedQueueIndex]);
+    d_savedQueueIndex = d_savedQueueIndex + 1;
+  }
+
+  while(d_nextInputConstraintToEnqueue < d_inputConstraints.size()  && !inConflict()){
+    size_t curr = d_nextInputConstraintToEnqueue;
+    d_nextInputConstraintToEnqueue = d_nextInputConstraintToEnqueue + 1;
+
+    TrailIndex i = d_inputConstraints[curr].d_trailPos;
+    TrailIndex j = applyAllSubstitutionsToIndex(i);
+
+    if(!triviallySat(j)){
+      if(triviallyUnsat(j)){
+        raiseConflict(j);
+      }else{
+        TrailIndex k = reduceByGCD(j);
+
+        if(!inConflict()){
+          if(triviallyUnsat(k)){
+            raiseConflict(k);
+          }else if(!(triviallySat(k) || anyCoefficientExceedsMaximum(k))){
+            pushToQueueBack(k);
+          }
+        }
+      }
+    }
+  }
+}
+
+
+/*TODO Currently linear in the size of the Queue
+ *It is not clear if am O(log n) strategy would be better.
+ *Right before this in the algorithm is a substitution which could potentially
+ *effect the key values of everything in the queue.
+ */
+void DioSolver::moveMinimumByAbsToQueueFront(){
+  Assert(!queueEmpty());
+
+
+  //Select the minimum element.
+  size_t indexInQueue = 0;
+  Monomial minMonomial = d_trail[d_currentF[indexInQueue]].d_minimalMonomial;
+
+  size_t N = d_currentF.size();
+  for(size_t i=1; i < N; ++i){
+    Monomial curr = d_trail[d_currentF[i]].d_minimalMonomial;
+    if(curr.absCmp(minMonomial) < 0){
+      indexInQueue = i;
+      minMonomial = curr;
+    }
+  }
+
+  TrailIndex tmp = d_currentF[indexInQueue];
+  d_currentF[indexInQueue] = d_currentF.front();
+  d_currentF.front() = tmp;
+}
+
+bool DioSolver::queueEmpty() const{
+  return d_currentF.empty();
+}
+
+Node DioSolver::columnGcdIsOne() const{
+  std::hash_map<Node, Integer, NodeHashFunction> gcdMap;
+
+  std::deque<TrailIndex>::const_iterator iter, end;
+  for(iter = d_currentF.begin(), end = d_currentF.end(); iter != end; ++iter){
+    TrailIndex curr = *iter;
+    Polynomial p = d_trail[curr].d_eq.getPolynomial();
+    Polynomial::iterator monoIter = p.begin(), monoEnd = p.end();
+    for(; monoIter != monoEnd; ++monoIter){
+      Monomial m = *monoIter;
+      VarList vl = m.getVarList();
+      Node vlNode = vl.getNode();
+
+      Constant c = m.getConstant();
+      Integer zc = c.getValue().getNumerator();
+      if(gcdMap.find(vlNode) == gcdMap.end()){
+        // have not seen vl yet.
+        // gcd is c
+        Assert(c.isIntegral());
+        Assert(!m.absCoefficientIsOne());
+        gcdMap.insert(make_pair(vlNode, zc.abs()));
+      }else{
+        const Integer& currentGcd = gcdMap[vlNode];
+        Integer newGcd = currentGcd.gcd(zc);
+        if(newGcd == 1){
+          return vlNode;
+        }else{
+          gcdMap[vlNode] = newGcd;
+        }
+      }
+    }
+  }
+  return Node::null();
+}
+
+void DioSolver::saveQueue(){
+  std::deque<TrailIndex>::const_iterator iter, end;
+  for(iter = d_currentF.begin(), end = d_currentF.end(); iter != end; ++iter){
+    d_savedQueue.push_back(*iter);
+  }
+}
+
+DioSolver::TrailIndex DioSolver::impliedGcdOfOne(){
+  Node canReduce = columnGcdIsOne();
+  if(canReduce.isNull()){
+    return 0;
+  }else{
+    VarList vl = VarList::parseVarList(canReduce);
+
+    TrailIndex current;
+    Integer currentCoeff, currentGcd;
+
+    //step 1 find the first equation containing vl
+    //Set current and currentCoefficient
+    std::deque<TrailIndex>::const_iterator iter, end;
+    for(iter = d_currentF.begin(), end = d_currentF.end(); true; ++iter){
+      Assert(iter != end);
+      current = *iter;
+      Constant coeff = d_trail[current].d_eq.getPolynomial().getCoefficient(vl);
+      if(!coeff.isZero()){
+        currentCoeff = coeff.getValue().getNumerator();
+        currentGcd = currentCoeff.abs();
+
+        ++iter;
+        break;
+      }
+    }
+
+    //For the rest of the equations keep reducing until the coefficient is one
+    for(; iter != end; ++iter){
+      Debug("arith::dio") << "next round : " << currentCoeff << " " << currentGcd << endl;
+      TrailIndex inQueue = *iter;
+      Constant iqc = d_trail[inQueue].d_eq.getPolynomial().getCoefficient(vl);
+      if(!iqc.isZero()){
+        Integer inQueueCoeff = iqc.getValue().getNumerator();
+
+        //mpz_gcdext (mpz_t g, mpz_t s, mpz_t t, mpz_t a, mpz_t b);
+        Integer g, s, t;
+        // g = a*s + b*t
+        Integer::extendedGcd(g, s, t, currentCoeff, inQueueCoeff);
+
+        Debug("arith::dio") << "extendedReduction : " << endl;
+        Debug("arith::dio") << g << " = " << s <<"*"<< currentCoeff << " + " << t <<"*"<< inQueueCoeff << endl;
+
+        Assert(g <= currentGcd);
+        if(g < currentGcd){
+          if(s.sgn() == 0){
+            Debug("arith::dio") << "extendedReduction drop" << endl;
+            Assert(inQueueCoeff.divides(currentGcd));
+            current = *iter;
+            currentCoeff = inQueueCoeff;
+            currentGcd = inQueueCoeff.abs();
+          }else{
+
+            Debug("arith::dio") << "extendedReduction combine" << endl;
+            TrailIndex next = combineEqAtIndexes(current, s, inQueue, t);
+
+            Assert(d_trail[next].d_eq.getPolynomial().getCoefficient(vl).getValue().getNumerator() == g);
+
+            current = next;
+            currentCoeff = g;
+            currentGcd = g;
+            if(currentGcd == 1){
+              return current;
+            }
+          }
+        }
+      }
+    }
+    //This is not reachble as it is assured that the gcd of the column is 1
+    Unreachable();
+  }
+}
+
+bool DioSolver::processEquations(bool allowDecomposition){
+  Assert(!inConflict());
+
+  enqueueInputConstraints();
+  while(! queueEmpty() && !inConflict()){
+    moveMinimumByAbsToQueueFront();
+
+    TrailIndex minimum = d_currentF.front();
+    TrailIndex reduceIndex;
+
+    Assert(inRange(minimum));
+    Assert(!inConflict());
+
+    Debug("arith::dio") << "processEquations " << minimum << " : " << d_trail[minimum].d_eq.getNode() << endl;
+
+    Assert(queueConditions(minimum));
+
+    bool canDirectlySolve = d_trail[minimum].d_minimalMonomial.absCoefficientIsOne();
+
+    std::pair<SubIndex, TrailIndex> p;
+    if(canDirectlySolve){
+      d_currentF.pop_front();
+      p = solveIndex(minimum);
+      reduceIndex = minimum;
+    }else{
+      TrailIndex implied = impliedGcdOfOne();
+
+      if(implied != 0){
+        p = solveIndex(implied);
+        reduceIndex = implied;
+      }else if(allowDecomposition){
+        d_currentF.pop_front();
+        p = decomposeIndex(minimum);
+        reduceIndex = minimum;
+      }else {
+        // Cannot make progress without decomposeIndex
+        saveQueue();
+        break;
+      }
+    }
+
+    SubIndex subIndex = p.first;
+    TrailIndex next = p.second;
+    subAndReduceCurrentFByIndex(subIndex);
+
+    if(next != reduceIndex){
+      if(triviallyUnsat(next)){
+        raiseConflict(next);
+      }else if(! triviallySat(next) ){
+        pushToQueueBack(next);
+      }
+    }
+  }
+
+  d_currentF.clear();
+  return inConflict();
+}
+
+Node DioSolver::processEquationsForConflict(){
+  TimerStat::CodeTimer codeTimer(d_statistics.d_conflictTimer);
+  ++(d_statistics.d_conflictCalls);
+
+  Assert(!inConflict());
+  if(processEquations(true)){
+    ++(d_statistics.d_conflicts);
+    return proveIndex(getConflictIndex());
+  }else{
+    return Node::null();
+  }
+}
+
+SumPair DioSolver::processEquationsForCut(){
+  TimerStat::CodeTimer codeTimer(d_statistics.d_cutTimer);
+  ++(d_statistics.d_cutCalls);
+
+  Assert(!inConflict());
+  if(processEquations(true)){
+    ++(d_statistics.d_cuts);
+    return purifyIndex(getConflictIndex());
+  }else{
+    return SumPair::mkZero();
+  }
+}
+
+
+SumPair DioSolver::purifyIndex(TrailIndex i){
+  // TODO: "This uses the substitution trail to reverse the substitutions from the sum term. Using the proof term should be more efficient."
+
+  SumPair curr = d_trail[i].d_eq;
+
+  Constant negOne = Constant::mkConstant(-1);
+
+  for(uint32_t revIter = d_subs.size(); revIter > 0; --revIter){
+    uint32_t i = revIter - 1;
+    Node freshNode = d_subs[i].d_fresh;
+    if(freshNode.isNull()){
+      continue;
+    }else{
+      Variable var(freshNode);
+      Polynomial vsum = curr.getPolynomial();
+
+      Constant a = vsum.getCoefficient(VarList(var));
+      if(!a.isZero()){
+        const SumPair& sj = d_trail[d_subs[i].d_constraint].d_eq;
+        Assert(sj.getPolynomial().getCoefficient(VarList(var)).isOne());
+        SumPair newSi = (curr * negOne) + (sj * a);
+        Assert(newSi.getPolynomial().getCoefficient(VarList(var)).isZero());
+        curr = newSi;
+      }
+    }
+  }
+  return curr;
+}
+
+DioSolver::TrailIndex DioSolver::combineEqAtIndexes(DioSolver::TrailIndex i, const Integer& q, DioSolver::TrailIndex j, const Integer& r){
+  Constant cq = Constant::mkConstant(q);
+  Constant cr = Constant::mkConstant(r);
+
+  const SumPair& si = d_trail[i].d_eq;
+  const SumPair& sj = d_trail[j].d_eq;
+
+  Debug("arith::dio") << "combineEqAtIndexes(" << i <<","<<q<<","<<j<<","<<r<<")"<<endl;
+  Debug("arith::dio") << "d_facts[i] = " << si.getNode() << endl
+                      << "d_facts[j] = " << sj.getNode() << endl;
+
+
+  SumPair newSi = (si * cq) + (sj * cr);
+
+
+  const Polynomial& pi = d_trail[i].d_proof;
+  const Polynomial& pj = d_trail[j].d_proof;
+  Polynomial newPi = (pi * cq) + (pj * cr);
+
+  TrailIndex k = d_trail.size();
+  d_trail.push_back(Constraint(newSi, newPi));
+
+
+  Debug("arith::dio") << "derived "<< newSi.getNode()
+                      <<" with proof " << newPi.getNode() << endl;
+
+  return k;
+
+}
+
+void DioSolver::printQueue(){
+  Debug("arith::dio") << "DioSolver::printQueue()" << endl;
+  for(TrailIndex i = 0, last = d_trail.size(); i < last; ++i){
+    Debug("arith::dio") << "d_trail[i].d_eq = " << d_trail[i].d_eq.getNode() << endl;
+    Debug("arith::dio") << "d_trail[i].d_proof = " << d_trail[i].d_proof.getNode() << endl;
+  }
+
+  Debug("arith::dio") << "DioSolver::printSubs()" << endl;
+  for(SubIndex si=0, sN=d_subs.size(); si < sN; ++si){
+    Debug("arith::dio") << "d_subs[i] = {"
+                        << "d_fresh="<< d_subs[si].d_fresh <<","
+                        << "d_eliminated="<< d_subs[si].d_eliminated.getNode() <<","
+                        << "d_constraint="<< d_subs[si].d_constraint <<"}" << endl;
+    Debug("arith::dio") << "d_trail[d_subs[i].d_constraint].d_eq="
+                        << d_trail[d_subs[si].d_constraint].d_eq.getNode() << endl;
+  }
+}
+
+DioSolver::TrailIndex DioSolver::applyAllSubstitutionsToIndex(DioSolver::TrailIndex trailIndex){
+  TrailIndex currentIndex = trailIndex;
+  for(SubIndex subIter = 0, siEnd = d_subs.size(); subIter < siEnd; ++subIter){
+    currentIndex = applySubstitution(subIter, currentIndex);
+  }
+  return currentIndex;
+}
+
+bool DioSolver::debugSubstitutionApplies(DioSolver::SubIndex si, DioSolver::TrailIndex ti){
+  Variable var = d_subs[si].d_eliminated;
+
+  const SumPair& curr = d_trail[ti].d_eq;
+  Polynomial vsum = curr.getPolynomial();
+
+  Constant a = vsum.getCoefficient(VarList(var));
+  return !a.isZero();
+}
+
+bool DioSolver::debugAnySubstitionApplies(DioSolver::TrailIndex i){
+  for(SubIndex subIter = 0, siEnd = d_subs.size(); subIter < siEnd; ++subIter){
+    if(debugSubstitutionApplies(subIter, i)){
+      return true;
+    }
+  }
+  return false;
+}
+
+std::pair<DioSolver::SubIndex, DioSolver::TrailIndex> DioSolver::solveIndex(DioSolver::TrailIndex i){
+  const SumPair& si = d_trail[i].d_eq;
+
+  Debug("arith::dio") << "before solveIndex("<<i<<":"<<si.getNode()<< ")" << endl;
+
+#ifdef CVC4_ASSERTIONS
+  const Polynomial& p = si.getPolynomial();
+#endif
+
+  Assert(p.isIntegral());
+
+  Assert(p.selectAbsMinimum() == d_trail[i].d_minimalMonomial);
+  const Monomial av = d_trail[i].d_minimalMonomial;
+
+  VarList vl = av.getVarList();
+  Assert(vl.singleton());
+  Variable var = vl.getHead();
+  Constant a = av.getConstant();
+  Integer a_abs = a.getValue().getNumerator().abs();
+
+  Assert(a_abs == 1);
+
+  TrailIndex ci = !a.isNegative() ? scaleEqAtIndex(i, Integer(-1)) : i;
+
+  SubIndex subBy = d_subs.size();
+  d_subs.push_back(Substitution(Node::null(), var, ci));
+
+  Debug("arith::dio") << "after solveIndex " <<  d_trail[ci].d_eq.getNode() << " for " << av.getNode() << endl;
+  Assert(d_trail[ci].d_eq.getPolynomial().getCoefficient(vl) == Constant::mkConstant(-1));
+
+  return make_pair(subBy, i);
+}
+
+std::pair<DioSolver::SubIndex, DioSolver::TrailIndex> DioSolver::decomposeIndex(DioSolver::TrailIndex i){
+  const SumPair& si = d_trail[i].d_eq;
+
+  d_usedDecomposeIndex = true;
+
+  Debug("arith::dio") << "before decomposeIndex("<<i<<":"<<si.getNode()<< ")" << endl;
+
+#ifdef CVC4_ASSERTIONS
+  const Polynomial& p = si.getPolynomial();
+#endif
+
+  Assert(p.isIntegral());
+
+  Assert(p.selectAbsMinimum() == d_trail[i].d_minimalMonomial);
+  const Monomial& av = d_trail[i].d_minimalMonomial;
+
+  VarList vl = av.getVarList();
+  Assert(vl.singleton());
+  Variable var = vl.getHead();
+  Constant a = av.getConstant();
+  Integer a_abs = a.getValue().getNumerator().abs();
+
+  Assert(a_abs > 1);
+
+  //It is not sufficient to reduce the case where abs(a) == 1 to abs(a) > 1.
+  //We need to handle both cases seperately to ensure termination.
+  Node qr = SumPair::computeQR(si, a.getValue().getNumerator());
+
+  Assert(qr.getKind() == kind::PLUS);
+  Assert(qr.getNumChildren() == 2);
+  SumPair q = SumPair::parseSumPair(qr[0]);
+  SumPair r = SumPair::parseSumPair(qr[1]);
+
+  Assert(q.getPolynomial().getCoefficient(vl) == Constant::mkConstant(1));
+
+  Assert(!r.isZero());
+  Node freshNode = makeIntegerVariable();
+  Variable fresh(freshNode);
+  SumPair fresh_one=SumPair::mkSumPair(fresh);
+  SumPair fresh_a = fresh_one * a;
+
+  SumPair newSI = SumPair(fresh_one) - q;
+  // this normalizes the coefficient of var to -1
+
+
+  TrailIndex ci = d_trail.size();
+  d_trail.push_back(Constraint(newSI, Polynomial::mkZero()));
+  // no longer reference av safely!
+  addTrailElementAsLemma(ci);
+
+  Debug("arith::dio") << "Decompose ci(" << ci <<":" <<  d_trail[ci].d_eq.getNode()
+                      << ") for " << d_trail[i].d_minimalMonomial.getNode() << endl;
+  Assert(d_trail[ci].d_eq.getPolynomial().getCoefficient(vl) == Constant::mkConstant(-1));
+
+  SumPair newFact = r + fresh_a;
+
+  TrailIndex nextIndex = d_trail.size();
+  d_trail.push_back(Constraint(newFact, d_trail[i].d_proof));
+
+  SubIndex subBy = d_subs.size();
+  d_subs.push_back(Substitution(freshNode, var, ci));
+
+  Debug("arith::dio") << "Decompose nextIndex " <<  d_trail[nextIndex].d_eq.getNode() << endl;
+  return make_pair(subBy, nextIndex);
+}
+
+
+DioSolver::TrailIndex DioSolver::applySubstitution(DioSolver::SubIndex si, DioSolver::TrailIndex ti){
+  Variable var = d_subs[si].d_eliminated;
+  TrailIndex subIndex = d_subs[si].d_constraint;
+
+  const SumPair& curr = d_trail[ti].d_eq;
+  Polynomial vsum = curr.getPolynomial();
+
+  Constant a = vsum.getCoefficient(VarList(var));
+  Assert(a.isIntegral());
+  if(!a.isZero()){
+    Integer one(1);
+    TrailIndex afterSub = combineEqAtIndexes(ti, one, subIndex, a.getValue().getNumerator());
+    Assert(d_trail[afterSub].d_eq.getPolynomial().getCoefficient(VarList(var)).isZero());
+    return afterSub;
+  }else{
+    return ti;
+  }
+}
+
+
+DioSolver::TrailIndex DioSolver::reduceByGCD(DioSolver::TrailIndex ti){
+  const SumPair& sp = d_trail[ti].d_eq;
+  Polynomial vsum = sp.getPolynomial();
+  Constant c = sp.getConstant();
+
+  Debug("arith::dio") << "reduceByGCD " << vsum.getNode() << endl;
+  Assert(!vsum.isConstant());
+  Integer g = vsum.gcd();
+  Assert(g >= 1);
+  Debug("arith::dio") << "gcd("<< vsum.getNode() <<")=" << g << " " << c.getValue() << endl;
+  if(g.divides(c.getValue().getNumerator())){
+    if(g > 1){
+      return scaleEqAtIndex(ti, g);
+    }else{
+      return ti;
+    }
+  }else{
+    raiseConflict(ti);
+    return ti;
+  }
+}
+
+bool DioSolver::triviallySat(TrailIndex i){
+  const SumPair& eq = d_trail[i].d_eq;
+  if(eq.isConstant()){
+    return eq.getConstant().isZero();
+  }else{
+    return false;
+  }
+}
+
+bool DioSolver::triviallyUnsat(DioSolver::TrailIndex i){
+  const SumPair& eq = d_trail[i].d_eq;
+  if(eq.isConstant()){
+    return !eq.getConstant().isZero();
+  }else{
+    return false;
+  }
+}
+
+
+bool DioSolver::gcdIsOne(DioSolver::TrailIndex i){
+  const SumPair& eq = d_trail[i].d_eq;
+  return eq.gcd() == Integer(1);
+}
+
+void DioSolver::debugPrintTrail(DioSolver::TrailIndex i) const{
+  const SumPair& eq = d_trail[i].d_eq;
+  const Polynomial& proof = d_trail[i].d_proof;
+
+  Message() << "d_trail["<<i<<"].d_eq = " << eq.getNode() << endl;
+  Message() << "d_trail["<<i<<"].d_proof = " << proof.getNode() << endl;
+}
+
+void DioSolver::subAndReduceCurrentFByIndex(DioSolver::SubIndex subIndex){
+  size_t N = d_currentF.size();
+
+  size_t readIter = 0, writeIter = 0;
+  for(; readIter < N && !inConflict(); ++readIter){
+    TrailIndex curr = d_currentF[readIter];
+    TrailIndex nextTI = applySubstitution(subIndex, curr);
+    if(nextTI == curr){
+      d_currentF[writeIter] = curr;
+      ++writeIter;
+    }else{
+      Assert(nextTI != curr);
+
+      if(triviallyUnsat(nextTI)){
+        raiseConflict(nextTI);
+      }else if(!triviallySat(nextTI)){
+        TrailIndex nextNextTI = reduceByGCD(nextTI);
+
+        if(!(inConflict() || anyCoefficientExceedsMaximum(nextNextTI))){
+          Assert(queueConditions(nextNextTI));
+          d_currentF[writeIter] = nextNextTI;
+          ++writeIter;
+        }
+      }
+    }
+  }
+  if(!inConflict() && writeIter < N){
+    d_currentF.resize(writeIter);
+  }
+}
+
+void DioSolver::addTrailElementAsLemma(TrailIndex i) {
+  if(options::exportDioDecompositions()){
+    d_decompositionLemmaQueue.push(i);
+  }
+}
+
+Node DioSolver::trailIndexToEquality(TrailIndex i) const {
+  const SumPair& sp = d_trail[i].d_eq;
+  Node zero = mkRationalNode(0);
+  Node eq = (sp.getNode()).eqNode(zero);
+  return eq;
+}
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/dio_solver.h b/src/theory/arith/dio_solver.h
new file mode 100644
index 0000000..6c53d6a
--- /dev/null
+++ b/src/theory/arith/dio_solver.h
@@ -0,0 +1,429 @@
+/*********************                                                        */
+/*! \file dio_solver.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Diophantine equation solver
+ **
+ ** A Diophantine equation solver for the theory of arithmetic.
+ **/
+
+#include "cvc4_private.h"
+
+
+#ifndef __CVC4__THEORY__ARITH__DIO_SOLVER_H
+#define __CVC4__THEORY__ARITH__DIO_SOLVER_H
+
+#include <utility>
+#include <vector>
+
+#include "base/output.h"
+#include "context/cdlist.h"
+#include "context/cdo.h"
+#include "context/cdqueue.h"
+#include "context/context.h"
+#include "theory/arith/normal_form.h"
+#include "theory/arith/partial_model.h"
+#include "util/rational.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+class DioSolver {
+private:
+  typedef size_t TrailIndex;
+  typedef size_t InputConstraintIndex;
+  typedef size_t SubIndex;
+
+  std::vector<Variable> d_proofVariablePool;
+  /** Sat context dependent. */
+  context::CDO<size_t> d_lastUsedProofVariable;
+
+  /**
+   * The set of input constraints is stored in a CDList.
+   * Each constraint point to an element of the trail.
+   */
+  struct InputConstraint {
+    Node d_reason;
+    TrailIndex d_trailPos;
+    InputConstraint(Node reason, TrailIndex pos) : d_reason(reason), d_trailPos(pos) {}
+  };
+  context::CDList<InputConstraint> d_inputConstraints;
+
+  /**
+   * This is the next input constraint to handle.
+   */
+  context::CDO<size_t> d_nextInputConstraintToEnqueue;
+
+
+  /**
+   * We maintain a map from the variables associated with proofs to an input constraint.
+   * These variables can then be used in polynomial manipulations.
+   */
+  typedef std::hash_map<Node, InputConstraintIndex, NodeHashFunction> NodeToInputConstraintIndexMap;
+  NodeToInputConstraintIndexMap d_varToInputConstraintMap;
+
+  Node proofVariableToReason(const Variable& v) const{
+    Assert(d_varToInputConstraintMap.find(v.getNode()) != d_varToInputConstraintMap.end());
+    InputConstraintIndex pos = (*(d_varToInputConstraintMap.find(v.getNode()))).second;
+    Assert(pos < d_inputConstraints.size());
+    return d_inputConstraints[pos].d_reason;
+  }
+
+  /**
+   * The main work horse of the algorithm, the trail of constraints.
+   * Each constraint is a SumPair that implicitly represents an equality against 0.
+   *   d_trail[i].d_eq = (+ c (+ [(* coeff var)])) representing (+ [(* coeff var)]) = -c
+   * Each constraint has a proof in terms of a linear combination of the input constraints.
+   *   d_trail[i].d_proof
+   *
+   * Each Constraint also a monomial in d_eq.getPolynomial()
+   * of minimal absolute value by the coefficients.
+   * d_trail[i].d_minimalMonomial
+   *
+   * See Alberto's paper for how linear proofs are maintained for the abstract
+   * state machine in rules (7), (8) and (9).
+   */
+  struct Constraint {
+    SumPair d_eq;
+    Polynomial d_proof;
+    Monomial d_minimalMonomial;
+    Constraint(const SumPair& eq, const Polynomial& p) :
+      d_eq(eq), d_proof(p), d_minimalMonomial(d_eq.getPolynomial().selectAbsMinimum())
+    {}
+  };
+  context::CDList<Constraint> d_trail;
+
+  // /** Compare by d_minimal. */
+  // struct TrailMinimalCoefficientOrder {
+  //   const context::CDList<Constraint>& d_trail;
+  //   TrailMinimalCoefficientOrder(const context::CDList<Constraint>& trail):
+  //     d_trail(trail)
+  //   {}
+
+  //   bool operator()(TrailIndex i, TrailIndex j){
+  //     return d_trail[i].d_minimalMonomial.absLessThan(d_trail[j].d_minimalMonomial);
+  //   }
+  // };
+
+  /**
+   * A substitution is stored as a constraint in the trail together with
+   * the variable to be eliminated, and a fresh variable if one was introduced.
+   * The variable d_subs[i].d_eliminated is substituted using the implicit equality in
+   * d_trail[d_subs[i].d_constraint]
+   *  - d_subs[i].d_eliminated is normalized to have coefficient -1 in
+   *    d_trail[d_subs[i].d_constraint].
+   *  - d_subs[i].d_fresh is either Node::null() or it is variable it is normalized
+   *    to have coefficient 1 in d_trail[d_subs[i].d_constraint].
+   */
+  struct Substitution {
+    Node d_fresh;
+    Variable d_eliminated;
+    TrailIndex d_constraint;
+    Substitution(Node f, const Variable& e, TrailIndex c) :
+      d_fresh(f), d_eliminated(e), d_constraint(c)
+    {}
+  };
+  context::CDList<Substitution> d_subs;
+
+  /**
+   * This is the queue of constraints to be processed in the current context level.
+   * This is to be empty upon entering solver and cleared upon leaving the solver.
+   *
+   * All elements in currentF:
+   * - are fully substituted according to d_subs.
+   * - !isConstant().
+   * - If the element is (+ constant (+ [(* coeff var)] )), then the gcd(coeff) = 1
+   */
+  std::deque<TrailIndex> d_currentF;
+  context::CDList<TrailIndex> d_savedQueue;
+  context::CDO<size_t> d_savedQueueIndex;
+
+  context::CDO<bool> d_conflictHasBeenRaised;
+  TrailIndex d_conflictIndex;
+
+  /**
+   * Drop derived constraints with a coefficient length larger than
+   * the maximum input constraints length than 2**MAX_GROWTH_RATE.
+   */
+  context::CDO<uint32_t> d_maxInputCoefficientLength;
+  static const uint32_t MAX_GROWTH_RATE = 3;
+
+  /** Returns true if the element on the trail should be dropped.*/
+  bool anyCoefficientExceedsMaximum(TrailIndex j) const;
+
+  /**
+   * Is true if decomposeIndex has been used in this context.
+   */
+  context::CDO<bool> d_usedDecomposeIndex;
+
+  context::CDO<SubIndex> d_lastPureSubstitution;
+  context::CDO<SubIndex> d_pureSubstitionIter;
+
+  /**
+   * Decomposition lemma queue.
+   */
+  context::CDQueue<TrailIndex> d_decompositionLemmaQueue;
+
+public:
+
+  /** Construct a Diophantine equation solver with the given context. */
+  DioSolver(context::Context* ctxt);
+
+  /** Returns true if the substitutions use no new variables. */
+  bool hasMorePureSubstitutions() const{
+    return d_pureSubstitionIter < d_lastPureSubstitution;
+  }
+
+  Node nextPureSubstitution();
+
+  /**
+   * Adds an equality to the queue of the DioSolver.
+   * orig is blamed in a conflict.
+   * orig can either be of the form (= p c) or (and ub lb).
+   * where ub is either (leq p c) or (not (> p [- c 1])), and
+   * where lb is either (geq p c) or (not (< p [+ c 1]))
+   *
+   * If eq cannot be used, this constraint is dropped.
+   */
+  void pushInputConstraint(const Comparison& eq, Node reason);
+
+  /**
+   * Processes the queue looking for any conflict.
+   * If a conflict is found, this returns conflict.
+   * Otherwise, it returns null.
+   * The conflict is guarenteed to be over literals given in addEquality.
+   */
+  Node processEquationsForConflict();
+
+  /**
+   * Processes the queue looking for an integer unsatisfiable cutting plane.
+   * If such a plane is found this returns an entailed plane using no
+   * fresh variables.
+   */
+  SumPair processEquationsForCut();
+
+private:
+  /** Returns true if the TrailIndex refers to a element in the trail. */
+  bool inRange(TrailIndex i) const{
+    return i < d_trail.size();
+  }
+
+  Node columnGcdIsOne() const;
+
+
+  /**
+   * Returns true if the context dependent flag for conflicts
+   * has been raised.
+   */
+  bool inConflict() const{
+    return d_conflictHasBeenRaised;
+  }
+
+  /** Raises a conflict at the index ti. */
+  void raiseConflict(TrailIndex ti){
+    Assert(!inConflict());
+    d_conflictHasBeenRaised = true;
+    d_conflictIndex = ti;
+  }
+
+  /** Returns the conflict index. */
+  TrailIndex getConflictIndex() const{
+    Assert(inConflict());
+    return d_conflictIndex;
+  }
+
+  /**
+   * Allocates a "unique" proof variable.
+   * This variable is fresh with respect to the context.
+   * Returns index of the variable in d_variablePool;
+   */
+  size_t allocateProofVariable();
+
+
+  /** Empties the unproccessed input constraints into the queue. */
+  void enqueueInputConstraints();
+
+  /**
+   * Returns true if an input equality is in the map.
+   * This is expensive and is only for debug assertions.
+   */
+  bool debugEqualityInInputEquations(Node eq);
+
+  /** Applies the substitution at subIndex to currentF. */
+  void subAndReduceCurrentFByIndex(SubIndex d_subIndex);
+
+  /**
+   * Takes as input a TrailIndex i and an integer that divides d_trail[i].d_eq, and
+   * returns a TrailIndex j s.t.
+   *   d_trail[j].d_eq = (1/g) d_trail[i].d_eq
+   * and
+   *   d_trail[j].d_proof = (1/g) d_trail[i].d_proof.
+   *
+   * g must be non-zero.
+   *
+   * This corresponds to an application of Alberto's rule (7).
+   */
+  TrailIndex scaleEqAtIndex(TrailIndex i, const Integer& g);
+
+
+  /**
+   * Takes as input TrailIndex's i and j and Integer's q and r and a TrailIndex k s.t.
+   *   d_trail[k].d_eq == d_trail[i].d_eq * q + d_trail[j].d_eq * r
+   * and
+   *   d_trail[k].d_proof == d_trail[i].d_proof * q + d_trail[j].d_proof * r
+   *
+   * This corresponds to an application of Alberto's rule (8).
+   */
+  TrailIndex combineEqAtIndexes(TrailIndex i, const Integer& q, TrailIndex j, const Integer& r);
+
+  /**
+   * Decomposes the equation at index ti of trail by the variable
+   * with the lowest coefficient.
+   * This corresponds to an application of Alberto's rule (9).
+   *
+   * Returns a pair of a SubIndex and a TrailIndex.
+   * The SubIndex is the index of a newly introduced substition.
+   */
+  std::pair<SubIndex, TrailIndex> decomposeIndex(TrailIndex ti);
+
+  /** Solves the index at ti for the value in minimumMonomial. */
+  std::pair<SubIndex, TrailIndex> solveIndex(TrailIndex ti);
+
+  /** Prints the queue for debugging purposes to Debug("arith::dio"). */
+  void printQueue();
+
+  /**
+   * Exhaustively applies all substitutions discovered to an element of the trail.
+   * Returns a TrailIndex corresponding to the substitutions being applied.
+   */
+  TrailIndex applyAllSubstitutionsToIndex(TrailIndex i);
+
+  /**
+   * Applies a substitution to an element in the trail.
+   */
+  TrailIndex applySubstitution(SubIndex s, TrailIndex i);
+
+  /**
+   * Reduces the trail node at i by the gcd of the variables.
+   * Returns the new trail element.
+   *
+   * This raises the conflict flag if unsat is detected.
+   */
+  TrailIndex reduceByGCD(TrailIndex i);
+
+  /**
+   * Returns true if i'th element in the trail is trivially true.
+   * (0 = 0)
+   */
+  bool triviallySat(TrailIndex t);
+
+  /**
+   * Returns true if i'th element in the trail is trivially unsatisfiable.
+   * (1 = 0)
+   */
+  bool triviallyUnsat(TrailIndex t);
+
+  /** Returns true if the gcd of the i'th element of the trail is 1.*/
+  bool gcdIsOne(TrailIndex t);
+
+  bool debugAnySubstitionApplies(TrailIndex t);
+  bool debugSubstitutionApplies(SubIndex si, TrailIndex ti);
+
+
+  /** Returns true if the queue of nodes to process is empty. */
+  bool queueEmpty() const;
+
+  bool queueConditions(TrailIndex t);
+
+
+  void pushToQueueBack(TrailIndex t){
+    Assert(queueConditions(t));
+    d_currentF.push_back(t);
+  }
+
+  void pushToQueueFront(TrailIndex t){
+    Assert(queueConditions(t));
+    d_currentF.push_front(t);
+  }
+
+  /**
+   * Moves the minimum Constraint by absolute value of the minimum coefficient to
+   * the front of the queue.
+   */
+  void moveMinimumByAbsToQueueFront();
+
+  void saveQueue();
+
+  TrailIndex impliedGcdOfOne();
+
+
+  /**
+   * Processing the current set of equations.
+   *
+   * decomposeIndex() rule is only applied if allowDecomposition is true.
+   */
+  bool processEquations(bool allowDecomposition);
+
+  /**
+   * Constructs a proof from any d_trail[i] in terms of input literals.
+   */
+  Node proveIndex(TrailIndex i);
+
+  /**
+   * Returns the SumPair in d_trail[i].d_eq with all of the fresh variables purified out.
+   */
+  SumPair purifyIndex(TrailIndex i);
+
+
+  void debugPrintTrail(TrailIndex i) const;
+
+public:
+  bool hasMoreDecompositionLemmas() const{
+    return !d_decompositionLemmaQueue.empty();
+  }
+  Node nextDecompositionLemma() {
+    Assert(hasMoreDecompositionLemmas());
+    TrailIndex front = d_decompositionLemmaQueue.front();
+    d_decompositionLemmaQueue.pop();
+    return trailIndexToEquality(front);
+  }
+private:
+  Node trailIndexToEquality(TrailIndex i) const;
+  void addTrailElementAsLemma(TrailIndex i);
+
+public:
+
+  /** These fields are designed to be accessible to TheoryArith methods. */
+  class Statistics {
+  public:
+
+    IntStat d_conflictCalls;
+    IntStat d_cutCalls;
+
+    IntStat d_cuts;
+    IntStat d_conflicts;
+
+    TimerStat d_conflictTimer;
+    TimerStat d_cutTimer;
+
+    Statistics();
+    ~Statistics();
+  };
+
+  Statistics d_statistics;
+};/* class DioSolver */
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__ARITH__DIO_SOLVER_H */
diff --git a/src/theory/arith/dual_simplex.cpp b/src/theory/arith/dual_simplex.cpp
new file mode 100644
index 0000000..72d7a86
--- /dev/null
+++ b/src/theory/arith/dual_simplex.cpp
@@ -0,0 +1,264 @@
+/*********************                                                        */
+/*! \file dual_simplex.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+#include "theory/arith/dual_simplex.h"
+
+#include "base/output.h"
+#include "options/arith_options.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/arith/constraint.h"
+
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+DualSimplexDecisionProcedure::DualSimplexDecisionProcedure(LinearEqualityModule& linEq, ErrorSet& errors, RaiseConflict conflictChannel, TempVarMalloc tvmalloc)
+  : SimplexDecisionProcedure(linEq, errors, conflictChannel, tvmalloc)
+  , d_pivotsInRound()
+  , d_statistics(d_pivots)
+{ }
+
+DualSimplexDecisionProcedure::Statistics::Statistics(uint32_t& pivots):
+  d_statUpdateConflicts("theory::arith::dual::UpdateConflicts", 0),
+  d_processSignalsTime("theory::arith::dual::findConflictOnTheQueueTime"),
+  d_simplexConflicts("theory::arith::dual::simplexConflicts",0),
+  d_recentViolationCatches("theory::arith::dual::recentViolationCatches",0),
+  d_searchTime("theory::arith::dual::searchTime"),
+  d_finalCheckPivotCounter("theory::arith::dual::lastPivots", pivots)
+{
+  smtStatisticsRegistry()->registerStat(&d_statUpdateConflicts);
+  smtStatisticsRegistry()->registerStat(&d_processSignalsTime);
+  smtStatisticsRegistry()->registerStat(&d_simplexConflicts);
+  smtStatisticsRegistry()->registerStat(&d_recentViolationCatches);
+  smtStatisticsRegistry()->registerStat(&d_searchTime);
+  smtStatisticsRegistry()->registerStat(&d_finalCheckPivotCounter);
+}
+
+DualSimplexDecisionProcedure::Statistics::~Statistics(){
+  smtStatisticsRegistry()->unregisterStat(&d_statUpdateConflicts);
+  smtStatisticsRegistry()->unregisterStat(&d_processSignalsTime);
+  smtStatisticsRegistry()->unregisterStat(&d_simplexConflicts);
+  smtStatisticsRegistry()->unregisterStat(&d_recentViolationCatches);
+  smtStatisticsRegistry()->unregisterStat(&d_searchTime);
+  smtStatisticsRegistry()->unregisterStat(&d_finalCheckPivotCounter);
+}
+
+Result::Sat DualSimplexDecisionProcedure::dualFindModel(bool exactResult){
+  Assert(d_conflictVariables.empty());
+
+  static CVC4_THREADLOCAL(unsigned int) instance = 0;
+  instance = instance + 1;
+  d_pivots = 0;
+
+  if(d_errorSet.errorEmpty() && !d_errorSet.moreSignals()){
+    Debug("arith::findModel") << "dualFindModel("<< instance <<") trivial" << endl;
+    return Result::SAT;
+  }
+
+  // We need to reduce this because of
+  d_errorSet.reduceToSignals();
+  d_errorSet.setSelectionRule(VAR_ORDER);
+
+  if(processSignals()){
+    d_conflictVariables.purge();
+
+    Debug("arith::findModel") << "dualFindModel("<< instance <<") early conflict" << endl;
+    return Result::UNSAT;
+  }else if(d_errorSet.errorEmpty()){
+    Debug("arith::findModel") << "dualFindModel("<< instance <<") fixed itself" << endl;
+    Assert(!d_errorSet.moreSignals());
+    return Result::SAT;
+  }
+
+  Debug("arith::findModel") << "dualFindModel(" << instance <<") start non-trivial" << endl;
+
+  Result::Sat result = Result::SAT_UNKNOWN;
+
+  static const bool verbose = false;
+  exactResult |= options::arithStandardCheckVarOrderPivots() < 0;
+
+
+  uint32_t checkPeriod = options::arithSimplexCheckPeriod();
+  if(result == Result::SAT_UNKNOWN){
+    uint32_t numDifferencePivots = options::arithHeuristicPivots() < 0 ?
+      d_numVariables + 1 : options::arithHeuristicPivots();
+    // The signed to unsigned conversion is safe.
+    if(numDifferencePivots > 0){
+
+      d_errorSet.setSelectionRule(d_heuristicRule);
+      if(searchForFeasibleSolution(numDifferencePivots)){
+        result = Result::UNSAT;
+      }
+    }
+
+    if(verbose && numDifferencePivots > 0){
+      if(result ==  Result::UNSAT){
+        Message() << "diff order found unsat" << endl;
+      }else if(d_errorSet.errorEmpty()){
+        Message() << "diff order found model" << endl;
+      }else{
+        Message() << "diff order missed" << endl;
+      }
+    }
+  }
+  Assert(!d_errorSet.moreSignals());
+
+  if(!d_errorSet.errorEmpty() && result != Result::UNSAT){
+    if(exactResult){
+      d_errorSet.setSelectionRule(VAR_ORDER);
+      while(!d_errorSet.errorEmpty() && result != Result::UNSAT){
+        Assert(checkPeriod > 0);
+        if(searchForFeasibleSolution(checkPeriod)){
+          result = Result::UNSAT;
+        }
+      }
+    }else if( options::arithStandardCheckVarOrderPivots() > 0){
+      d_errorSet.setSelectionRule(VAR_ORDER);
+      if(searchForFeasibleSolution(options::arithStandardCheckVarOrderPivots())){
+        result = Result::UNSAT;
+      }
+      if(verbose){
+        if(result ==  Result::UNSAT){
+          Message() << "restricted var order found unsat" << endl;
+        }else if(d_errorSet.errorEmpty()){
+          Message() << "restricted var order found model" << endl;
+        }else{
+          Message() << "restricted var order missed" << endl;
+        }
+      }
+    }
+  }
+
+  Assert(!d_errorSet.moreSignals());
+  if(result == Result::SAT_UNKNOWN && d_errorSet.errorEmpty()){
+    result = Result::SAT;
+  }
+
+  d_pivotsInRound.purge();
+  // ensure that the conflict variable is still in the queue.
+  d_conflictVariables.purge();
+
+  Debug("arith::findModel") << "end findModel() " << instance << " " << result <<  endl;
+
+  return result;
+}
+
+//corresponds to Check() in dM06
+//template <SimplexDecisionProcedure::PreferenceFunction pf>
+bool DualSimplexDecisionProcedure::searchForFeasibleSolution(uint32_t remainingIterations){
+  TimerStat::CodeTimer codeTimer(d_statistics.d_searchTime);
+
+  Debug("arith") << "searchForFeasibleSolution" << endl;
+  Assert(remainingIterations > 0);
+
+  while(remainingIterations > 0 && !d_errorSet.focusEmpty()){
+    if(Debug.isOn("paranoid:check_tableau")){ d_linEq.debugCheckTableau(); }
+    Assert(d_conflictVariables.empty());
+    ArithVar x_i = d_errorSet.topFocusVariable();
+
+    Debug("arith::update::select") << "selectSmallestInconsistentVar()=" << x_i << endl;
+    if(x_i == ARITHVAR_SENTINEL){
+      Debug("arith::update") << "No inconsistent variables" << endl;
+      return false; //sat
+    }
+
+    --remainingIterations;
+
+    bool useVarOrderPivot = d_pivotsInRound.count(x_i) >=  options::arithPivotThreshold();
+    if(!useVarOrderPivot){
+      d_pivotsInRound.add(x_i);
+    }
+
+
+    Debug("arith::update")
+      << "pivots in rounds: " <<  d_pivotsInRound.count(x_i)
+      << " use " << useVarOrderPivot
+      << " threshold " << options::arithPivotThreshold()
+      << endl;
+
+    LinearEqualityModule::VarPreferenceFunction pf = useVarOrderPivot ?
+      &LinearEqualityModule::minVarOrder : &LinearEqualityModule::minBoundAndColLength;
+
+    //DeltaRational beta_i = d_variables.getAssignment(x_i);
+    ArithVar x_j = ARITHVAR_SENTINEL;
+
+    int32_t prevErrorSize CVC4_UNUSED = d_errorSet.errorSize();
+
+    if(d_variables.cmpAssignmentLowerBound(x_i) < 0 ){
+      x_j = d_linEq.selectSlackUpperBound(x_i, pf);
+      if(x_j == ARITHVAR_SENTINEL ){
+        Unreachable();
+        // ++(d_statistics.d_statUpdateConflicts);
+        // reportConflict(x_i);
+        // ++(d_statistics.d_simplexConflicts);
+        // Node conflict = d_linEq.generateConflictBelowLowerBound(x_i); //unsat
+        // d_conflictVariable = x_i;
+        // reportConflict(conflict);
+        // return true;
+      }else{
+        const DeltaRational& l_i = d_variables.getLowerBound(x_i);
+        d_linEq.pivotAndUpdate(x_i, x_j, l_i);
+      }
+    }else if(d_variables.cmpAssignmentUpperBound(x_i) > 0){
+      x_j = d_linEq.selectSlackLowerBound(x_i, pf);
+      if(x_j == ARITHVAR_SENTINEL ){
+        Unreachable();
+        // ++(d_statistics.d_statUpdateConflicts);
+        // reportConflict(x_i);
+        // ++(d_statistics.d_simplexConflicts);
+        // Node conflict = d_linEq.generateConflictAboveUpperBound(x_i); //unsat
+        // d_conflictVariable = x_i;
+        // reportConflict(conflict);
+        // return true;
+      }else{
+        const DeltaRational& u_i = d_variables.getUpperBound(x_i);
+        d_linEq.pivotAndUpdate(x_i, x_j, u_i);
+      }
+    }
+    Assert(x_j != ARITHVAR_SENTINEL);
+
+    bool conflict = processSignals();
+    int32_t currErrorSize CVC4_UNUSED = d_errorSet.errorSize();
+    d_pivots++;
+
+    if(Debug.isOn("arith::dual")){
+      Debug("arith::dual")
+        << "#" << d_pivots
+        << " c" << conflict
+        << " d" << (prevErrorSize - currErrorSize)
+        << " f"  << d_errorSet.inError(x_j)
+        << " h" << d_conflictVariables.isMember(x_j)
+        << " " << x_i << "->" << x_j
+        << endl;
+    }
+
+    if(conflict){
+      return true;
+    }
+  }
+  Assert(!d_errorSet.focusEmpty() || d_errorSet.errorEmpty());
+  Assert(remainingIterations == 0 || d_errorSet.focusEmpty());
+  Assert(d_errorSet.noSignals());
+
+  return false;
+}
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/dual_simplex.h b/src/theory/arith/dual_simplex.h
new file mode 100644
index 0000000..2546197
--- /dev/null
+++ b/src/theory/arith/dual_simplex.h
@@ -0,0 +1,113 @@
+/*********************                                                        */
+/*! \file dual_simplex.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This is an implementation of the Simplex Module for the Simplex for DPLL(T)
+ ** decision procedure.
+ **
+ ** This implements the Simplex module for the Simpelx for DPLL(T) decision procedure.
+ ** See the Simplex for DPLL(T) technical report for more background.(citation?)
+ ** This shares with the theory a Tableau, and a PartialModel that:
+ **  - satisfies the equalities in the Tableau, and
+ **  - the assignment for the non-basic variables satisfies their bounds.
+ ** This is required to either produce a conflict or satisifying PartialModel.
+ ** Further, we require being told when a basic variable updates its value.
+ **
+ ** During the Simplex search we maintain a queue of variables.
+ ** The queue is required to contain all of the basic variables that voilate their bounds.
+ ** As elimination from the queue is more efficient to be done lazily,
+ ** we do not maintain that the queue of variables needs to be only basic variables or only
+ ** variables that satisfy their bounds.
+ **
+ ** The simplex procedure roughly follows Alberto's thesis. (citation?)
+ ** There is one round of selecting using a heuristic pivoting rule. (See PreferenceFunction
+ ** Documentation for the available options.)
+ ** The non-basic variable is the one that appears in the fewest pivots. (Bruno says that
+ ** Leonardo invented this first.)
+ ** After this, Bland's pivot rule is invoked.
+ **
+ ** During this proccess, we periodically inspect the queue of variables to
+ ** 1) remove now extraneous extries,
+ ** 2) detect conflicts that are "waiting" on the queue but may not be detected by the
+ **  current queue heuristics, and
+ ** 3) detect multiple conflicts.
+ **
+ ** Conflicts are greedily slackened to use the weakest bounds that still produce the
+ ** conflict.
+ **
+ ** Extra things tracked atm: (Subject to change at Tim's whims)
+ ** - A superset of all of the newly pivoted variables.
+ ** - A queue of additional conflicts that were discovered by Simplex.
+ **   These are theory valid and are currently turned into lemmas
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "theory/arith/simplex.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+class DualSimplexDecisionProcedure : public SimplexDecisionProcedure{
+public:
+  DualSimplexDecisionProcedure(LinearEqualityModule& linEq, ErrorSet& errors, RaiseConflict conflictChannel, TempVarMalloc tvmalloc);
+
+  Result::Sat findModel(bool exactResult) {
+    return dualFindModel(exactResult);
+  }
+
+private:
+
+  /**
+   * Maps a variable to how many times they have been used as a pivot in the
+   * simplex search.
+   */
+  DenseMultiset d_pivotsInRound;
+
+  Result::Sat dualFindModel(bool exactResult);
+
+  /**
+   * This is the main simplex for DPLL(T) loop.
+   * It runs for at most maxIterations.
+   *
+   * Returns true iff it has found a conflict.
+   * d_conflictVariable will be set and the conflict for this row is reported.
+   */
+  bool searchForFeasibleSolution(uint32_t maxIterations);
+  
+
+  bool processSignals(){
+    TimerStat &timer = d_statistics.d_processSignalsTime;
+    IntStat& conflictStat  = d_statistics.d_recentViolationCatches;
+    return standardProcessSignals(timer, conflictStat);
+  }
+  /** These fields are designed to be accessible to TheoryArith methods. */
+  class Statistics {
+  public:
+    IntStat d_statUpdateConflicts;
+    TimerStat d_processSignalsTime;
+    IntStat d_simplexConflicts;
+    IntStat d_recentViolationCatches;
+    TimerStat d_searchTime;
+
+    ReferenceStat<uint32_t> d_finalCheckPivotCounter;
+
+    Statistics(uint32_t& pivots);
+    ~Statistics();
+  } d_statistics;
+};/* class DualSimplexDecisionProcedure */
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/error_set.cpp b/src/theory/arith/error_set.cpp
new file mode 100644
index 0000000..7c8efc4
--- /dev/null
+++ b/src/theory/arith/error_set.cpp
@@ -0,0 +1,494 @@
+/*********************                                                        */
+/*! \file error_set.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/arith/error_set.h"
+
+#include "smt/smt_statistics_registry.h"
+#include "theory/arith/constraint.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+
+ErrorInformation::ErrorInformation()
+  : d_variable(ARITHVAR_SENTINEL)
+  , d_violated(NullConstraint)
+  , d_sgn(0)
+  , d_relaxed(false)
+  , d_inFocus(false)
+  , d_handle()
+  , d_amount(NULL)
+  , d_metric(0)
+{
+  Debug("arith::error::mem") << "def constructor " << d_variable << " "  << d_amount << endl;
+}
+
+ErrorInformation::ErrorInformation(ArithVar var, ConstraintP vio, int sgn)
+  : d_variable(var)
+  , d_violated(vio)
+  , d_sgn(sgn)
+  , d_relaxed(false)
+  , d_inFocus(false)
+  , d_handle()
+  , d_amount(NULL)
+  , d_metric(0)
+{
+  Assert(debugInitialized());
+  Debug("arith::error::mem") << "constructor " << d_variable << " "  << d_amount << endl;
+}
+
+
+ErrorInformation::~ErrorInformation() {
+  Assert(d_relaxed != true);
+  if(d_amount != NULL){
+    Debug("arith::error::mem") << d_amount << endl;
+    Debug("arith::error::mem") << "destroy " << d_variable << " "  << d_amount << endl;
+    delete d_amount;
+    d_amount = NULL;
+  }
+}
+
+ErrorInformation::ErrorInformation(const ErrorInformation& ei)
+  : d_variable(ei.d_variable)
+  , d_violated(ei.d_violated)
+  , d_sgn(ei.d_sgn)
+  , d_relaxed(ei.d_relaxed)
+  , d_inFocus(ei.d_inFocus)
+  , d_handle(ei.d_handle)
+  , d_metric(0)
+{
+  if(ei.d_amount == NULL){
+    d_amount = NULL;
+  }else{
+    d_amount = new DeltaRational(*ei.d_amount);
+  }
+  Debug("arith::error::mem") << "copy const " << d_variable << " "  << d_amount << endl;
+}
+
+ErrorInformation& ErrorInformation::operator=(const ErrorInformation& ei){
+  d_variable = ei.d_variable;
+  d_violated = ei.d_violated;
+  d_sgn = ei.d_sgn;
+  d_relaxed = (ei.d_relaxed);
+  d_inFocus = (ei.d_inFocus);
+  d_handle = (ei.d_handle);
+  d_metric = ei.d_metric;
+  if(d_amount != NULL && ei.d_amount != NULL){
+    Debug("arith::error::mem") << "assignment assign " << d_variable << " "  << d_amount << endl;
+    *d_amount = *ei.d_amount;
+  }else if(ei.d_amount != NULL){
+    d_amount = new DeltaRational(*ei.d_amount);
+    Debug("arith::error::mem") << "assignment alloc " << d_variable << " "  << d_amount << endl;
+  }else if(d_amount != NULL){
+    Debug("arith::error::mem") << "assignment release " << d_variable << " "  << d_amount << endl;
+    delete d_amount;
+    d_amount = NULL;
+  }else{
+    d_amount = NULL;
+  }
+  return *this;
+}
+
+void ErrorInformation::reset(ConstraintP c, int sgn){
+  Assert(!isRelaxed());
+  Assert(c != NullConstraint);
+  d_violated = c;
+  d_sgn = sgn;
+
+  if(d_amount != NULL){
+    delete d_amount;
+    Debug("arith::error::mem") << "reset " << d_variable << " "  << d_amount << endl;
+    d_amount = NULL;
+  }
+}
+
+void ErrorInformation::setAmount(const DeltaRational& am){
+  if(d_amount == NULL){
+    d_amount = new DeltaRational;
+    Debug("arith::error::mem") << "setAmount " << d_variable << " "  << d_amount << endl;
+  }
+  (*d_amount) = am;
+}
+
+ErrorSet::Statistics::Statistics():
+  d_enqueues("theory::arith::pqueue::enqueues", 0),
+  d_enqueuesCollection("theory::arith::pqueue::enqueuesCollection", 0),
+  d_enqueuesDiffMode("theory::arith::pqueue::enqueuesDiffMode", 0),
+  d_enqueuesVarOrderMode("theory::arith::pqueue::enqueuesVarOrderMode", 0),
+  d_enqueuesCollectionDuplicates("theory::arith::pqueue::enqueuesCollectionDuplicates", 0),
+  d_enqueuesVarOrderModeDuplicates("theory::arith::pqueue::enqueuesVarOrderModeDuplicates", 0)
+{
+  smtStatisticsRegistry()->registerStat(&d_enqueues);
+  smtStatisticsRegistry()->registerStat(&d_enqueuesCollection);
+  smtStatisticsRegistry()->registerStat(&d_enqueuesDiffMode);
+  smtStatisticsRegistry()->registerStat(&d_enqueuesVarOrderMode);
+  smtStatisticsRegistry()->registerStat(&d_enqueuesCollectionDuplicates);
+  smtStatisticsRegistry()->registerStat(&d_enqueuesVarOrderModeDuplicates);
+}
+
+ErrorSet::Statistics::~Statistics(){
+  smtStatisticsRegistry()->unregisterStat(&d_enqueues);
+  smtStatisticsRegistry()->unregisterStat(&d_enqueuesCollection);
+  smtStatisticsRegistry()->unregisterStat(&d_enqueuesDiffMode);
+  smtStatisticsRegistry()->unregisterStat(&d_enqueuesVarOrderMode);
+  smtStatisticsRegistry()->unregisterStat(&d_enqueuesCollectionDuplicates);
+  smtStatisticsRegistry()->unregisterStat(&d_enqueuesVarOrderModeDuplicates);
+}
+
+ErrorSet::ErrorSet(ArithVariables& vars, TableauSizes tabSizes, BoundCountingLookup lookups):
+  d_variables(vars),
+  d_errInfo(),
+  d_selectionRule(VAR_ORDER),
+  d_focus(ComparatorPivotRule(this,d_selectionRule)),
+  d_outOfFocus(),
+  d_signals(),
+  d_tableauSizes(tabSizes),
+  d_boundLookup(lookups)
+{}
+
+ErrorSelectionRule ErrorSet::getSelectionRule() const{
+  return d_selectionRule;
+}
+
+void ErrorSet::recomputeAmount(ErrorInformation& ei, ErrorSelectionRule rule){
+  switch(rule){
+  case MINIMUM_AMOUNT:
+  case MAXIMUM_AMOUNT:
+    ei.setAmount(computeDiff(ei.getVariable()));
+    break;
+  case SUM_METRIC:
+    ei.setMetric(sumMetric(ei.getVariable()));
+    break;
+  case VAR_ORDER:
+    //do nothing
+    break;
+  }
+}
+
+void ErrorSet::setSelectionRule(ErrorSelectionRule rule){
+  if(rule != getSelectionRule()){
+    FocusSet into(ComparatorPivotRule(this, rule));
+    FocusSet::const_iterator iter = d_focus.begin();
+    FocusSet::const_iterator i_end = d_focus.end();
+    for(; iter != i_end; ++iter){
+      ArithVar v = *iter;
+      ErrorInformation& ei = d_errInfo.get(v);
+      if(ei.inFocus()){
+        recomputeAmount(ei, rule);
+        FocusSetHandle handle = into.push(v);
+        ei.setHandle(handle);
+      }
+    }
+    d_focus.swap(into);
+    d_selectionRule = rule;
+  }
+  Assert(getSelectionRule() == rule);
+}
+
+ComparatorPivotRule::ComparatorPivotRule(const ErrorSet* es, ErrorSelectionRule r):
+  d_errorSet(es), d_rule (r)
+{}
+
+bool ComparatorPivotRule::operator()(ArithVar v, ArithVar u) const {
+  switch(d_rule){
+  case VAR_ORDER:
+    // This needs to be the reverse of the minVariableOrder
+    return v > u;
+  case SUM_METRIC:
+    {
+      uint32_t v_metric = d_errorSet->getMetric(v);
+      uint32_t u_metric = d_errorSet->getMetric(u);
+      if(v_metric == u_metric){
+        return v > u;
+      }else{
+        return v_metric > u_metric;
+      }
+    }
+  case MINIMUM_AMOUNT:
+    {
+      const DeltaRational& vamt = d_errorSet->getAmount(v);
+      const DeltaRational& uamt = d_errorSet->getAmount(u);
+      int cmp = vamt.cmp(uamt);
+      if(cmp == 0){
+        return v > u;
+      }else{
+        return cmp > 0;
+      }
+    }
+  case MAXIMUM_AMOUNT:
+    {
+      const DeltaRational& vamt = d_errorSet->getAmount(v);
+      const DeltaRational& uamt = d_errorSet->getAmount(u);
+      int cmp = vamt.cmp(uamt);
+      if(cmp == 0){
+        return v > u;
+      }else{
+        return cmp < 0;
+      }
+    }
+  }
+  Unreachable();
+}
+
+void ErrorSet::update(ErrorInformation& ei){
+  if(ei.inFocus()){
+
+    switch(getSelectionRule()){
+    case MINIMUM_AMOUNT:
+    case MAXIMUM_AMOUNT:
+      ei.setAmount(computeDiff(ei.getVariable()));
+      d_focus.update(ei.getHandle(), ei.getVariable());
+      break;
+    case  SUM_METRIC:
+      ei.setMetric(sumMetric(ei.getVariable()));
+      d_focus.update(ei.getHandle(), ei.getVariable());
+      break;
+    case  VAR_ORDER:
+      //do nothing
+      break;
+    }
+  }
+}
+
+/** A variable becomes satisfied. */
+void ErrorSet::transitionVariableOutOfError(ArithVar v) {
+  Assert(!inconsistent(v));
+  ErrorInformation& ei = d_errInfo.get(v);
+  Assert(ei.debugInitialized());
+  if(ei.isRelaxed()){
+    ConstraintP viol = ei.getViolated();
+    if(ei.sgn() > 0){
+      d_variables.setLowerBoundConstraint(viol);
+    }else{
+      d_variables.setUpperBoundConstraint(viol);
+    }
+    Assert(!inconsistent(v));
+    ei.setUnrelaxed();
+  }
+  if(ei.inFocus()){
+    d_focus.erase(ei.getHandle());
+    ei.setInFocus(false);
+  }
+  d_errInfo.remove(v);
+}
+
+
+void ErrorSet::transitionVariableIntoError(ArithVar v) {
+  Assert(inconsistent(v));
+  bool vilb = d_variables.cmpAssignmentLowerBound(v) < 0;
+  int sgn = vilb ? 1 : -1;
+  ConstraintP c = vilb ?
+    d_variables.getLowerBoundConstraint(v) : d_variables.getUpperBoundConstraint(v);
+  d_errInfo.set(v, ErrorInformation(v, c, sgn));
+  ErrorInformation& ei = d_errInfo.get(v);
+
+  switch(getSelectionRule()){
+  case MINIMUM_AMOUNT:
+  case MAXIMUM_AMOUNT:
+    ei.setAmount(computeDiff(v));
+    break;
+  case SUM_METRIC:
+    ei.setMetric(sumMetric(ei.getVariable()));
+    break;
+  case VAR_ORDER:
+    //do nothing
+    break;
+  }
+  ei.setInFocus(true);
+  FocusSetHandle handle = d_focus.push(v);
+  ei.setHandle(handle);
+}
+
+void ErrorSet::dropFromFocus(ArithVar v) {
+  Assert(inError(v));
+  ErrorInformation& ei = d_errInfo.get(v);
+  Assert(ei.inFocus());
+  d_focus.erase(ei.getHandle());
+  ei.setInFocus(false);
+  d_outOfFocus.push_back(v);
+}
+
+void ErrorSet::addBackIntoFocus(ArithVar v) {
+  Assert(inError(v));
+  ErrorInformation& ei = d_errInfo.get(v);
+  Assert(!ei.inFocus());
+  switch(getSelectionRule()){
+  case MINIMUM_AMOUNT:
+  case MAXIMUM_AMOUNT:
+    ei.setAmount(computeDiff(v));
+    break;
+  case SUM_METRIC:
+    ei.setMetric(sumMetric(v));
+    break;
+  case VAR_ORDER:
+    //do nothing
+    break;
+  }
+
+  ei.setInFocus(true);
+  FocusSetHandle handle = d_focus.push(v);
+  ei.setHandle(handle);
+}
+
+void ErrorSet::blur(){
+  while(!d_outOfFocus.empty()){
+    ArithVar v = d_outOfFocus.back();
+    d_outOfFocus.pop_back();
+
+    if(inError(v) && !inFocus(v)){
+      addBackIntoFocus(v);
+    }
+  }
+}
+
+
+
+int ErrorSet::popSignal() {
+  ArithVar back = d_signals.back();
+  d_signals.pop_back();
+
+  if(inError(back)){
+    ErrorInformation& ei = d_errInfo.get(back);
+    int prevSgn = ei.sgn();
+    int focusSgn = ei.focusSgn();
+    bool vilb = d_variables.cmpAssignmentLowerBound(back) < 0;
+    bool viub = d_variables.cmpAssignmentUpperBound(back) > 0;
+    if(vilb || viub){
+      Assert(!vilb || !viub);
+      int currSgn = vilb ? 1 : -1;
+      if(currSgn != prevSgn){
+        ConstraintP curr = vilb ?  d_variables.getLowerBoundConstraint(back)
+          : d_variables.getUpperBoundConstraint(back);
+        ei.reset(curr, currSgn);
+      }
+      update(ei);
+    }else{
+      transitionVariableOutOfError(back);
+    }
+    return focusSgn;
+  }else if(inconsistent(back)){
+    transitionVariableIntoError(back);
+  }
+  return 0;
+}
+
+void ErrorSet::clear(){
+  // Nothing should be relaxed!
+  d_signals.clear();
+  d_errInfo.purge();
+  d_focus.clear();
+}
+
+void ErrorSet::clearFocus(){
+  for(ErrorSet::focus_iterator i =focusBegin(), i_end = focusEnd(); i != i_end; ++i){
+    ArithVar f = *i;
+    ErrorInformation& fei = d_errInfo.get(f);
+    fei.setInFocus(false);
+    d_outOfFocus.push_back(f);
+  }
+  d_focus.clear();
+}
+
+void ErrorSet::reduceToSignals(){
+  for(error_iterator ei=errorBegin(), ei_end=errorEnd(); ei != ei_end; ++ei){
+    ArithVar curr = *ei;
+    signalVariable(curr);
+  }
+
+  d_errInfo.purge();
+  d_focus.clear();
+  d_outOfFocus.clear();
+}
+
+DeltaRational ErrorSet::computeDiff(ArithVar v) const{
+  Assert(inconsistent(v));
+  const DeltaRational& beta = d_variables.getAssignment(v);
+  DeltaRational diff = d_variables.cmpAssignmentLowerBound(v) < 0 ?
+    d_variables.getLowerBound(v) - beta:
+    beta - d_variables.getUpperBound(v);
+
+  Assert(diff.sgn() > 0);
+  return diff;
+}
+
+ostream& operator<<(ostream& out, ErrorSelectionRule rule) {
+  switch(rule) {
+  case VAR_ORDER:
+    out << "VAR_ORDER";
+    break;
+  case MINIMUM_AMOUNT:
+    out << "MINIMUM_AMOUNT";
+    break;
+  case MAXIMUM_AMOUNT:
+    out << "MAXIMUM_AMOUNT";
+    break;
+  case SUM_METRIC:
+    out << "SUM_METRIC";
+    break;
+  }
+
+  return out;
+}
+
+void ErrorSet::debugPrint(std::ostream& out) const {
+  static int instance = 0;
+  ++instance;
+  out << "error set debugprint " << instance << endl;
+  for(error_iterator i = errorBegin(), i_end = errorEnd();
+      i != i_end; ++i){
+    ArithVar e = *i;
+    const ErrorInformation& ei = d_errInfo[e];
+    ei.print(out);
+    out << "  ";
+    d_variables.printModel(e, out);
+    out << endl;
+  }
+  out << "focus ";
+  for(focus_iterator i = focusBegin(), i_end = focusEnd();
+      i != i_end; ++i){
+    out << *i << " ";
+  }
+  out << ";" << endl;
+}
+
+void ErrorSet::focusDownToJust(ArithVar v) {
+  clearFocus();
+
+  ErrorInformation& vei = d_errInfo.get(v);
+  vei.setInFocus(true);
+  FocusSetHandle handle = d_focus.push(v);
+  vei.setHandle(handle);
+}
+
+void ErrorSet::pushErrorInto(ArithVarVec& vec) const{
+  for(error_iterator i = errorBegin(), e = errorEnd(); i != e; ++i ){
+    vec.push_back(*i);
+  }
+}
+
+void ErrorSet::pushFocusInto(ArithVarVec& vec) const{
+  for(focus_iterator i = focusBegin(), e = focusEnd(); i != e; ++i ){
+    vec.push_back(*i);
+  }
+}
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/error_set.h b/src/theory/arith/error_set.h
new file mode 100644
index 0000000..4b88e3f
--- /dev/null
+++ b/src/theory/arith/error_set.h
@@ -0,0 +1,410 @@
+/*********************                                                        */
+/*! \file error_set.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <vector>
+
+#include "options/arith_heuristic_pivot_rule.h"
+#include "theory/arith/arithvar.h"
+#include "theory/arith/bound_counts.h"
+#include "theory/arith/callbacks.h"
+#include "theory/arith/delta_rational.h"
+#include "theory/arith/partial_model.h"
+#include "theory/arith/tableau_sizes.h"
+#include "util/bin_heap.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+
+/**
+ * The priority queue has 3 different modes of operation:
+ * - Collection
+ *   This passively collects arithmetic variables that may be inconsistent.
+ *   This does not maintain any heap structure.
+ *   dequeueInconsistentBasicVariable() does not work in this mode!
+ *   Entering this mode requires the queue to be empty.
+ *
+ * - Difference Queue
+ *   This mode uses the difference between a variables and its bound
+ *   to determine which to dequeue first.
+ *
+ * - Variable Order Queue
+ *   This mode uses the variable order to determine which ArithVar is dequeued first.
+ *
+ * The transitions between the modes of operation are:
+ *  Collection => Difference Queue
+ *  Difference Queue => Variable Order Queue
+ *  Difference Queue => Collection (queue must be empty!)
+ *  Variable Order Queue => Collection (queue must be empty!)
+ *
+ * The queue begins in Collection mode.
+ */
+
+
+class ErrorSet;
+class ErrorInfoMap;
+
+class ComparatorPivotRule {
+private:
+  const ErrorSet* d_errorSet;
+
+  ErrorSelectionRule d_rule;
+public:
+  ComparatorPivotRule();
+  ComparatorPivotRule(const ErrorSet* es, ErrorSelectionRule r);
+
+  bool operator()(ArithVar v, ArithVar u) const;
+  ErrorSelectionRule getRule() const { return d_rule; }
+};
+
+// typedef boost::heap::d_ary_heap<
+//   ArithVar,
+//   boost::heap::arity<2>,
+//   boost::heap::compare<ComparatorPivotRule>,
+//   boost::heap::mutable_<true> > FocusSet;
+//
+// typedef FocusSet::handle_type FocusSetHandle;
+
+// typedef CVC4_PB_DS_NAMESPACE::priority_queue<
+//   ArithVar,
+//   ComparatorPivotRule,
+//   CVC4_PB_DS_NAMESPACE::pairing_heap_tag> FocusSet;
+
+// typedef FocusSet::point_iterator FocusSetHandle;
+
+typedef BinaryHeap<ArithVar, ComparatorPivotRule> FocusSet;
+typedef FocusSet::handle FocusSetHandle;
+
+
+class ErrorInformation {
+private:
+  /** The variable that is in error. */
+  ArithVar d_variable;
+
+  /**
+   * The constraint that was violated.
+   * This needs to be saved in case that the
+   * violated constraint
+   */
+  ConstraintP d_violated;
+
+  /**
+   * This is the sgn of the first derivate the variable must move to satisfy
+   * the bound violated.
+   * If d_sgn > 0, then d_violated was a lowerbound.
+   * If d_sgn < 0, then d_violated was an upperbound.
+   */
+  int d_sgn;
+
+  /**
+   * If this is true, then the bound is no longer set on d_variables.
+   * This MUST be undone before this is deleted.
+   */
+  bool d_relaxed;
+
+  /**
+   * If this is true, then the variable is in the focus set and the focus heap.
+   * d_handle is then a reasonable thing to interpret.
+   * If this is false, the variable is somewhere in
+   */
+  bool d_inFocus;
+  FocusSetHandle d_handle;
+
+  /**
+   * Auxillary information for storing the difference between a variable and its bound.
+   * Only set on signals.
+   */
+  DeltaRational* d_amount;
+
+  /** */
+  uint32_t d_metric;
+
+public:
+  ErrorInformation();
+  ErrorInformation(ArithVar var, ConstraintP vio, int sgn);
+  ~ErrorInformation();
+  ErrorInformation(const ErrorInformation& ei);
+  ErrorInformation& operator=(const ErrorInformation& ei);
+
+  void reset(ConstraintP c, int sgn);
+
+  inline ArithVar getVariable() const { return d_variable; }
+
+  bool isRelaxed() const { return d_relaxed; }
+  void setRelaxed(){ Assert(!d_relaxed); d_relaxed = true; }
+  void setUnrelaxed(){ Assert(d_relaxed); d_relaxed = false; }
+
+  inline int sgn() const { return d_sgn; }
+
+  inline bool inFocus() const { return d_inFocus; }
+  inline int focusSgn() const {
+    return (d_inFocus) ? sgn() : 0;
+  }
+
+  inline void setInFocus(bool inFocus) { d_inFocus = inFocus; }
+
+  const DeltaRational& getAmount() const {
+    Assert(d_amount != NULL);
+    return *d_amount;
+  }
+
+  void setAmount(const DeltaRational& am);
+  void setMetric(uint32_t m) { d_metric = m; }
+  uint32_t getMetric() const { return d_metric; }
+
+  inline void setHandle(FocusSetHandle h) {
+    Assert(d_inFocus);
+    d_handle = h;
+  }
+  inline const FocusSetHandle& getHandle() const{ return d_handle; }
+
+  inline ConstraintP getViolated() const { return d_violated; }
+
+  bool debugInitialized() const {
+    return
+      d_variable != ARITHVAR_SENTINEL &&
+      d_violated != NullConstraint &&
+      d_sgn != 0;
+  }
+  void print(std::ostream& os) const {
+    os << "{ErrorInfo: " << d_variable
+       << ", " << d_violated
+       << ", " << d_sgn
+       << ", " << d_relaxed
+       << ", " << d_inFocus;
+    if(d_amount == NULL){
+      os << "NULL";
+    }else{
+      os << (*d_amount);
+    }
+    os << "}";
+  }
+};
+
+class ErrorInfoMap : public DenseMap<ErrorInformation> {};
+
+class ErrorSet {
+private:
+  /**
+   * Reference to the arithmetic partial model for checking if a variable
+   * is consistent with its upper and lower bounds.
+   */
+  ArithVariables& d_variables;
+
+  /**
+   * The set of all variables that violate exactly one of their bounds.
+   */
+  ErrorInfoMap d_errInfo;
+
+  ErrorSelectionRule d_selectionRule;
+  /**
+   * The ordered heap for the variables that are in ErrorSet.
+   */
+  FocusSet d_focus;
+
+
+  /**
+   * A strict subset of the error set.
+   *   d_outOfFocus \neq d_errInfo.
+   *
+   * Its symbolic complement is Focus.
+   *   d_outOfFocus \intersect Focus == \emptyset
+   *   d_outOfFocus \union Focus == d_errInfo
+   */
+  ArithVarVec d_outOfFocus;
+
+  /**
+   * Before a variable is added to the error set, it is added to the signals list.
+   * A variable may appear on the list multiple times.
+   * This introduces a delay.
+   */
+  ArithVarVec d_signals;
+
+  TableauSizes d_tableauSizes;
+
+  BoundCountingLookup d_boundLookup;
+
+  /**
+   * Computes the difference between the assignment and its bound for x.
+   */
+public:
+  DeltaRational computeDiff(ArithVar x) const;
+private:
+  void recomputeAmount(ErrorInformation& ei, ErrorSelectionRule r);
+
+  void update(ErrorInformation& ei);
+  void transitionVariableOutOfError(ArithVar v);
+  void transitionVariableIntoError(ArithVar v);
+  void addBackIntoFocus(ArithVar v);
+
+public:
+
+  /** The new focus set is the entire error set. */
+  void blur();
+  void dropFromFocus(ArithVar v);
+
+  void dropFromFocusAll(const ArithVarVec& vec) {
+    for(ArithVarVec::const_iterator i = vec.begin(), i_end = vec.end(); i != i_end; ++i){
+      ArithVar v = *i;
+      dropFromFocus(v);
+    }
+  }
+
+  ErrorSet(ArithVariables& var, TableauSizes tabSizes, BoundCountingLookup boundLookup);
+
+  typedef ErrorInfoMap::const_iterator error_iterator;
+  error_iterator errorBegin() const { return d_errInfo.begin(); }
+  error_iterator errorEnd() const { return d_errInfo.end(); }
+
+  bool inError(ArithVar v) const { return d_errInfo.isKey(v); }
+  bool inFocus(ArithVar v) const { return d_errInfo[v].inFocus(); }
+
+  void pushErrorInto(ArithVarVec& vec) const;
+  void pushFocusInto(ArithVarVec& vec) const;
+
+  ErrorSelectionRule getSelectionRule() const;
+  void setSelectionRule(ErrorSelectionRule rule);
+
+  inline ArithVar topFocusVariable() const{
+    Assert(!focusEmpty());
+    return d_focus.top();
+  }
+
+  inline void signalVariable(ArithVar var){
+    d_signals.push_back(var);
+  }
+
+  inline void signalUnderCnd(ArithVar var, bool b){
+    if(b){ signalVariable(var); }
+  }
+
+  inline bool inconsistent(ArithVar var) const{
+    return !d_variables.assignmentIsConsistent(var) ;
+  }
+  inline void signalIfInconsistent(ArithVar var){
+    signalUnderCnd(var, inconsistent(var));
+  }
+
+  inline bool errorEmpty() const{
+    return d_errInfo.empty();
+  }
+  inline uint32_t errorSize() const{
+    return d_errInfo.size();
+  }
+
+  inline bool focusEmpty() const {
+    return d_focus.empty();
+  }
+  inline uint32_t focusSize() const{
+    return d_focus.size();
+  }
+
+  inline int getSgn(ArithVar x) const {
+    Assert(inError(x));
+    return d_errInfo[x].sgn();
+  }
+  inline int focusSgn(ArithVar v) const {
+    if(inError(v)){
+      return d_errInfo[v].focusSgn();
+    }else{
+      return 0;
+    }
+  }
+
+  void focusDownToJust(ArithVar v);
+
+  void clearFocus();
+
+  /** Clears the set. */
+  void clear();
+  void reduceToSignals();
+
+  bool noSignals() const {
+    return d_signals.empty();
+  }
+  bool moreSignals() const {
+    return !noSignals();
+  }
+  ArithVar topSignal() const {
+    Assert(moreSignals());
+    return d_signals.back();
+  }
+
+  /**
+   * Moves a variable out of the signals.
+   * This moves it into the error set.
+   * Return the previous focus sign.
+   */
+  int popSignal();
+
+  const DeltaRational& getAmount(ArithVar v) const {
+    return d_errInfo[v].getAmount();
+  }
+
+  uint32_t sumMetric(ArithVar a) const{
+    Assert(inError(a));
+    BoundCounts bcs = d_boundLookup.atBounds(a);
+    uint32_t count = getSgn(a) > 0 ? bcs.upperBoundCount() : bcs.lowerBoundCount();
+
+    uint32_t length = d_tableauSizes.getRowLength(a);
+
+    return (length - count);
+  }
+
+  uint32_t getMetric(ArithVar a) const {
+    return d_errInfo[a].getMetric();
+  }
+
+  ConstraintP getViolated(ArithVar a) const {
+    return d_errInfo[a].getViolated();
+  }
+
+
+  typedef FocusSet::const_iterator focus_iterator;
+  focus_iterator focusBegin() const { return d_focus.begin(); }
+  focus_iterator focusEnd() const { return d_focus.end(); }
+
+  void debugPrint(std::ostream& out) const;
+
+private:
+  class Statistics {
+  public:
+    IntStat d_enqueues;
+    IntStat d_enqueuesCollection;
+    IntStat d_enqueuesDiffMode;
+    IntStat d_enqueuesVarOrderMode;
+
+    IntStat d_enqueuesCollectionDuplicates;
+    IntStat d_enqueuesVarOrderModeDuplicates;
+
+    Statistics();
+    ~Statistics();
+  };
+
+  Statistics d_statistics;
+};
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/fc_simplex.cpp b/src/theory/arith/fc_simplex.cpp
new file mode 100644
index 0000000..ef5ff93
--- /dev/null
+++ b/src/theory/arith/fc_simplex.cpp
@@ -0,0 +1,844 @@
+/*********************                                                        */
+/*! \file fc_simplex.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+#include "theory/arith/fc_simplex.h"
+
+#include "base/output.h"
+#include "options/arith_options.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/arith/constraint.h"
+#include "util/statistics_registry.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+
+FCSimplexDecisionProcedure::FCSimplexDecisionProcedure(LinearEqualityModule& linEq, ErrorSet& errors, RaiseConflict conflictChannel, TempVarMalloc tvmalloc)
+  : SimplexDecisionProcedure(linEq, errors, conflictChannel, tvmalloc)
+  , d_focusSize(0)
+  , d_focusErrorVar(ARITHVAR_SENTINEL)
+  , d_focusCoefficients()
+  , d_pivotBudget(0)
+  , d_prevWitnessImprovement(AntiProductive)
+  , d_witnessImprovementInARow(0)
+  , d_sgnDisagreements()
+  , d_statistics(d_pivots)
+{ }
+
+FCSimplexDecisionProcedure::Statistics::Statistics(uint32_t& pivots):
+  d_initialSignalsTime("theory::arith::FC::initialProcessTime"),
+  d_initialConflicts("theory::arith::FC::UpdateConflicts", 0),
+  d_fcFoundUnsat("theory::arith::FC::FoundUnsat", 0),
+  d_fcFoundSat("theory::arith::FC::FoundSat", 0),
+  d_fcMissed("theory::arith::FC::Missed", 0),
+  d_fcTimer("theory::arith::FC::Timer"),
+  d_fcFocusConstructionTimer("theory::arith::FC::Construction"),
+  d_selectUpdateForDualLike("theory::arith::FC::selectUpdateForDualLike"),
+  d_selectUpdateForPrimal("theory::arith::FC::selectUpdateForPrimal"),
+  d_finalCheckPivotCounter("theory::arith::FC::lastPivots", pivots)
+{
+  smtStatisticsRegistry()->registerStat(&d_initialSignalsTime);
+  smtStatisticsRegistry()->registerStat(&d_initialConflicts);
+
+  smtStatisticsRegistry()->registerStat(&d_fcFoundUnsat);
+  smtStatisticsRegistry()->registerStat(&d_fcFoundSat);
+  smtStatisticsRegistry()->registerStat(&d_fcMissed);
+
+  smtStatisticsRegistry()->registerStat(&d_fcTimer);
+  smtStatisticsRegistry()->registerStat(&d_fcFocusConstructionTimer);
+
+  smtStatisticsRegistry()->registerStat(&d_selectUpdateForDualLike);
+  smtStatisticsRegistry()->registerStat(&d_selectUpdateForPrimal);
+
+  smtStatisticsRegistry()->registerStat(&d_finalCheckPivotCounter);
+}
+
+FCSimplexDecisionProcedure::Statistics::~Statistics(){
+  smtStatisticsRegistry()->unregisterStat(&d_initialSignalsTime);
+  smtStatisticsRegistry()->unregisterStat(&d_initialConflicts);
+
+  smtStatisticsRegistry()->unregisterStat(&d_fcFoundUnsat);
+  smtStatisticsRegistry()->unregisterStat(&d_fcFoundSat);
+  smtStatisticsRegistry()->unregisterStat(&d_fcMissed);
+
+  smtStatisticsRegistry()->unregisterStat(&d_fcTimer);
+  smtStatisticsRegistry()->unregisterStat(&d_fcFocusConstructionTimer);
+
+  smtStatisticsRegistry()->unregisterStat(&d_selectUpdateForDualLike);
+  smtStatisticsRegistry()->unregisterStat(&d_selectUpdateForPrimal);
+
+  smtStatisticsRegistry()->unregisterStat(&d_finalCheckPivotCounter);
+}
+
+Result::Sat FCSimplexDecisionProcedure::findModel(bool exactResult){
+  Assert(d_conflictVariables.empty());
+  Assert(d_sgnDisagreements.empty());
+
+  d_pivots = 0;
+  static CVC4_THREADLOCAL(unsigned int) instance = 0;
+  instance = instance + 1;
+  static const bool verbose = false;
+
+  if(d_errorSet.errorEmpty() && !d_errorSet.moreSignals()){
+    Debug("arith::findModel") << "fcFindModel("<< instance <<") trivial" << endl;
+    Assert(d_conflictVariables.empty());
+    //if(verbose){ Message() << "fcFindModel("<< instance <<") trivial" << endl; }
+    return Result::SAT;
+  }
+
+  // We need to reduce this because of
+  d_errorSet.reduceToSignals();
+
+  // We must start tracking NOW
+  d_errorSet.setSelectionRule(SUM_METRIC);
+
+
+  if(initialProcessSignals()){
+    d_conflictVariables.purge();
+    if(verbose){ Message() << "fcFindModel("<< instance <<") early conflict" << endl; }
+    Debug("arith::findModel") << "fcFindModel("<< instance <<") early conflict" << endl;
+    Assert(d_conflictVariables.empty());
+    return Result::UNSAT;
+  }else if(d_errorSet.errorEmpty()){
+    //if(verbose){ Message() << "fcFindModel("<< instance <<") fixed itself" << endl; }
+    Debug("arith::findModel") << "fcFindModel("<< instance <<") fixed itself" << endl;
+    if(verbose)
+    Assert(!d_errorSet.moreSignals());
+    Assert(d_conflictVariables.empty());
+    return Result::SAT;
+  }
+
+  Debug("arith::findModel") << "fcFindModel(" << instance <<") start non-trivial" << endl;
+
+  exactResult |= options::arithStandardCheckVarOrderPivots() < 0;
+
+  d_prevWitnessImprovement = HeuristicDegenerate;
+  d_witnessImprovementInARow = 0;
+
+  Result::Sat result = Result::SAT_UNKNOWN;
+
+  if(result == Result::SAT_UNKNOWN){
+    if(exactResult){
+      d_pivotBudget = -1;
+    }else{
+      d_pivotBudget = options::arithStandardCheckVarOrderPivots();
+    }
+
+    result = dualLike();
+
+    if(result ==  Result::UNSAT){
+      ++(d_statistics.d_fcFoundUnsat);
+      if(verbose){ Message() << "fc found unsat";}
+    }else if(d_errorSet.errorEmpty()){
+      ++(d_statistics.d_fcFoundSat);
+      if(verbose){ Message() << "fc found model"; }
+    }else{
+      ++(d_statistics.d_fcMissed);
+      if(verbose){ Message() << "fc missed"; }
+    }
+  }
+  if(verbose){
+    Message() << "(" << instance << ") pivots " << d_pivots << endl;
+  }
+
+  Assert(!d_errorSet.moreSignals());
+  if(result == Result::SAT_UNKNOWN && d_errorSet.errorEmpty()){
+    result = Result::SAT;
+  }
+
+  // ensure that the conflict variable is still in the queue.
+  d_conflictVariables.purge();
+
+  Debug("arith::findModel") << "end findModel() " << instance << " " << result <<  endl;
+
+  Assert(d_conflictVariables.empty());
+  return result;
+}
+
+
+void FCSimplexDecisionProcedure::logPivot(WitnessImprovement w){
+  if(d_pivotBudget > 0) {
+    --d_pivotBudget;
+  }
+  Assert(w != AntiProductive);
+
+  if(w == d_prevWitnessImprovement){
+    ++d_witnessImprovementInARow;
+    // ignore overflow : probably never reached
+    if(d_witnessImprovementInARow == 0){
+      --d_witnessImprovementInARow;
+    }
+  }else{
+    if(w != BlandsDegenerate){
+      d_witnessImprovementInARow = 1;
+    }
+    // if w == BlandsDegenerate do not reset the counter
+    d_prevWitnessImprovement = w;
+  }
+  if(strongImprovement(w)){
+    d_leavingCountSinceImprovement.purge();
+  }
+
+  Debug("logPivot") << "logPivot " << d_prevWitnessImprovement << " "  << d_witnessImprovementInARow << endl;
+
+}
+
+uint32_t FCSimplexDecisionProcedure::degeneratePivotsInARow() const {
+  switch(d_prevWitnessImprovement){
+  case ConflictFound:
+  case ErrorDropped:
+  case FocusImproved:
+    return 0;
+  case HeuristicDegenerate:
+  case BlandsDegenerate:
+    return d_witnessImprovementInARow;
+  // Degenerate is unreachable for its own reasons
+  case Degenerate:
+  case FocusShrank:
+  case AntiProductive:
+    Unreachable();
+    return -1;
+  }
+  Unreachable();
+}
+
+void FCSimplexDecisionProcedure::adjustFocusAndError(const UpdateInfo& up, const AVIntPairVec& focusChanges){
+  uint32_t newErrorSize = d_errorSet.errorSize();
+  uint32_t newFocusSize = d_errorSet.focusSize();
+
+  //Assert(!d_conflictVariables.empty() || newFocusSize <= d_focusSize);
+  Assert(!d_conflictVariables.empty() || newErrorSize <= d_errorSize);
+
+  if(newFocusSize == 0 || !d_conflictVariables.empty() ){
+    tearDownInfeasiblityFunction(d_statistics.d_fcFocusConstructionTimer, d_focusErrorVar);
+    d_focusErrorVar = ARITHVAR_SENTINEL;
+  }else if(2*newFocusSize < d_focusSize ){
+    tearDownInfeasiblityFunction(d_statistics.d_fcFocusConstructionTimer, d_focusErrorVar);
+    d_focusErrorVar = constructInfeasiblityFunction(d_statistics.d_fcFocusConstructionTimer);
+  }else{
+    adjustInfeasFunc(d_statistics.d_fcFocusConstructionTimer, d_focusErrorVar, focusChanges);
+  }
+
+  d_errorSize = newErrorSize;
+  d_focusSize = newFocusSize;
+}
+
+WitnessImprovement FCSimplexDecisionProcedure::adjustFocusShrank(const ArithVarVec& dropped){
+  Assert(dropped.size() > 0);
+  Assert(d_errorSet.focusSize() == d_focusSize);
+  Assert(d_errorSet.focusSize() > dropped.size());
+
+  uint32_t newFocusSize = d_focusSize - dropped.size();
+  Assert(newFocusSize > 0);
+
+  if(2 * newFocusSize <= d_focusSize){
+    d_errorSet.dropFromFocusAll(dropped);
+    tearDownInfeasiblityFunction(d_statistics.d_fcFocusConstructionTimer, d_focusErrorVar);
+    d_focusErrorVar = constructInfeasiblityFunction(d_statistics.d_fcFocusConstructionTimer);
+  }else{
+    shrinkInfeasFunc(d_statistics.d_fcFocusConstructionTimer, d_focusErrorVar, dropped);
+    d_errorSet.dropFromFocusAll(dropped);
+  }
+
+  d_focusSize = newFocusSize;
+  Assert(d_errorSet.focusSize() == d_focusSize);
+  return FocusShrank;
+}
+
+WitnessImprovement FCSimplexDecisionProcedure::focusDownToJust(ArithVar v){
+  // uint32_t newErrorSize = d_errorSet.errorSize();
+  // uint32_t newFocusSize = d_errorSet.focusSize();
+  Assert(d_focusSize ==  d_errorSet.focusSize());
+  Assert(d_focusSize > 1);
+  Assert(d_errorSet.inFocus(v));
+
+  d_errorSet.focusDownToJust(v);
+  Assert(d_errorSet.focusSize() == 1);
+  d_focusSize = 1;
+
+  tearDownInfeasiblityFunction(d_statistics.d_fcFocusConstructionTimer, d_focusErrorVar);
+  d_focusErrorVar = constructInfeasiblityFunction(d_statistics.d_fcFocusConstructionTimer);
+
+  return FocusShrank;
+}
+
+
+
+UpdateInfo FCSimplexDecisionProcedure::selectPrimalUpdate(ArithVar basic, LinearEqualityModule::UpdatePreferenceFunction upf, LinearEqualityModule::VarPreferenceFunction bpf) {
+  UpdateInfo selected;
+
+  static int instance = 0 ;
+  ++instance;
+
+  Debug("arith::selectPrimalUpdate")
+    << "selectPrimalUpdate " << instance << endl
+    << basic << " " << d_tableau.basicRowLength(basic)
+    << " " << d_linEq.debugBasicAtBoundCount(basic) << endl;
+
+  static const int s_maxCandidatesAfterImprove = 3;
+  bool isFocus = basic == d_focusErrorVar;
+  Assert(isFocus || d_errorSet.inError(basic));
+  int basicDir =  isFocus? 1 : d_errorSet.getSgn(basic);
+  bool dualLike = !isFocus && d_focusSize > 1;
+
+  if(!isFocus){
+    loadFocusSigns();
+  }
+
+  decreasePenalties();
+
+  typedef std::vector<Cand> CandVector;
+  CandVector candidates;
+
+  for(Tableau::RowIterator ri = d_tableau.basicRowIterator(basic); !ri.atEnd(); ++ri){
+    const Tableau::Entry& e = *ri;
+    ArithVar curr = e.getColVar();
+    if(curr == basic){ continue; }
+
+    int sgn = e.getCoefficient().sgn();
+    int curr_movement = basicDir * sgn;
+
+    bool candidate =
+      (curr_movement > 0 && d_variables.cmpAssignmentUpperBound(curr) < 0) ||
+      (curr_movement < 0 && d_variables.cmpAssignmentLowerBound(curr) > 0);
+
+    Debug("arith::selectPrimalUpdate")
+      << "storing " << basic
+      << " " << curr
+      << " " << candidate
+      << " " << e.getCoefficient()
+      << " " << curr_movement
+      << " " << focusCoefficient(curr) << endl;
+
+    if(!candidate) { continue; }
+
+    if(!isFocus){
+      const Rational& focusC = focusCoefficient(curr);
+      Assert(dualLike || !focusC.isZero());
+      if(dualLike && curr_movement != focusC.sgn()){
+        Debug("arith::selectPrimalUpdate") << "sgn disagreement " << curr << endl;
+        d_sgnDisagreements.push_back(curr);
+        continue;
+      }else{
+        candidates.push_back(Cand(curr, penalty(curr), curr_movement, &focusC));
+      }
+    }else{
+      candidates.push_back(Cand(curr, penalty(curr), curr_movement, &e.getCoefficient()));
+    }
+  }
+
+  CompPenaltyColLength colCmp(&d_linEq);
+  CandVector::iterator i = candidates.begin();
+  CandVector::iterator end = candidates.end();
+  std::make_heap(i, end, colCmp);
+
+  bool checkEverything = d_pivots == 0;
+
+  int candidatesAfterFocusImprove = 0;
+  while(i != end && (checkEverything || candidatesAfterFocusImprove <= s_maxCandidatesAfterImprove)){
+    std::pop_heap(i, end, colCmp);
+    --end;
+    Cand& cand = (*end);
+    ArithVar curr = cand.d_nb;
+    const Rational& coeff = *cand.d_coeff;
+
+    LinearEqualityModule::UpdatePreferenceFunction leavingPrefFunc = selectLeavingFunction(curr);
+    UpdateInfo currProposal = d_linEq.speculativeUpdate(curr, coeff, leavingPrefFunc);
+
+    Debug("arith::selectPrimalUpdate")
+      << "selected " << selected << endl
+      << "currProp " << currProposal << endl
+      << "coeff " << coeff << endl;
+
+    Assert(!currProposal.uninitialized());
+
+    if(candidatesAfterFocusImprove > 0){
+      candidatesAfterFocusImprove++;
+    }
+
+    if(selected.uninitialized() || (d_linEq.*upf)(selected, currProposal)){
+
+      selected = currProposal;
+      WitnessImprovement w = selected.getWitness(false);
+      Debug("arith::selectPrimalUpdate") << "selected " << w << endl;
+      setPenalty(curr, w);
+      if(improvement(w)){
+        bool exitEarly;
+        switch(w){
+        case ConflictFound: exitEarly = true; break;
+        case ErrorDropped:
+          if(checkEverything){
+            exitEarly = d_errorSize + selected.errorsChange() == 0;
+            Debug("arith::selectPrimalUpdate")
+              << "ee " << d_errorSize << " "
+              << selected.errorsChange() << " "
+              << d_errorSize + selected.errorsChange() << endl;
+          }else{
+            exitEarly = true;
+          }
+          break;
+        case FocusImproved:
+          candidatesAfterFocusImprove = 1;
+          exitEarly = false;
+          break;
+        default:
+          exitEarly = false; break;
+        }
+        if(exitEarly){ break; }
+      }
+    }else{
+      Debug("arith::selectPrimalUpdate") << "dropped "<< endl;
+    }
+
+  }
+
+  if(!isFocus){
+    unloadFocusSigns();
+  }
+  return selected;
+}
+
+bool FCSimplexDecisionProcedure::debugCheckWitness(const UpdateInfo& inf, WitnessImprovement w, bool useBlands){
+  if(inf.getWitness(useBlands) == w){
+    switch(w){
+    case ConflictFound: return inf.foundConflict();
+    case ErrorDropped: return inf.errorsChange() < 0;
+    case FocusImproved: return inf.focusDirection() > 0;
+    case FocusShrank: return false; // This is not a valid output
+    case Degenerate: return false; // This is not a valid output
+    case BlandsDegenerate: return useBlands;
+    case HeuristicDegenerate: return !useBlands;
+    case AntiProductive: return false;
+    }
+  }
+  return false;
+}
+
+WitnessImprovement FCSimplexDecisionProcedure::primalImproveError(ArithVar errorVar){
+  bool useBlands = degeneratePivotsInARow() >= s_maxDegeneratePivotsBeforeBlandsOnLeaving;
+  UpdateInfo selected = selectUpdateForPrimal (errorVar, useBlands);
+  Assert(!selected.uninitialized());
+  WitnessImprovement w = selected.getWitness(useBlands);
+  Assert(debugCheckWitness(selected, w, useBlands));
+
+  updateAndSignal(selected, w);
+  logPivot(w);
+  return w;
+}
+
+
+WitnessImprovement FCSimplexDecisionProcedure::focusUsingSignDisagreements(ArithVar basic){
+  Assert(!d_sgnDisagreements.empty());
+  Assert(d_errorSet.focusSize() >= 2);
+
+  if(Debug.isOn("arith::focus")){
+    d_errorSet.debugPrint(Debug("arith::focus"));
+  }
+
+  ArithVar nb = d_linEq.minBy(d_sgnDisagreements, &LinearEqualityModule::minColLength);
+  const Tableau::Entry& e_evar_nb = d_tableau.basicFindEntry(basic, nb);
+  int oppositeSgn = - (e_evar_nb.getCoefficient().sgn());
+  Debug("arith::focus") << "focusUsingSignDisagreements " << basic << " " << oppositeSgn << endl;
+
+  ArithVarVec dropped;
+
+  Tableau::ColIterator colIter = d_tableau.colIterator(nb);
+  for(; !colIter.atEnd(); ++colIter){
+    const Tableau::Entry& entry = *colIter;
+    Assert(entry.getColVar() == nb);
+
+    int sgn = entry.getCoefficient().sgn();
+    Debug("arith::focus")
+      << "on row "
+      << d_tableau.rowIndexToBasic(entry.getRowIndex())
+      << " "
+      << entry.getCoefficient() << endl;
+    ArithVar currRow = d_tableau.rowIndexToBasic(entry.getRowIndex());
+    if(d_errorSet.inError(currRow) && d_errorSet.inFocus(currRow)){
+      int errSgn = d_errorSet.getSgn(currRow);
+
+      if(errSgn * sgn == oppositeSgn){
+        dropped.push_back(currRow);
+        Debug("arith::focus") << "dropping from focus " << currRow << endl;
+      }
+    }
+  }
+
+  d_sgnDisagreements.clear();
+  return adjustFocusShrank(dropped);
+}
+
+bool debugSelectedErrorDropped(const UpdateInfo& selected, int32_t prevErrorSize, int32_t currErrorSize){
+  int diff = currErrorSize - prevErrorSize;
+  return selected.foundConflict() || diff == selected.errorsChange();
+}
+
+void FCSimplexDecisionProcedure::debugPrintSignal(ArithVar updated) const{
+  Debug("updateAndSignal") << "updated basic " << updated;
+  Debug("updateAndSignal") << " length " << d_tableau.basicRowLength(updated);
+  Debug("updateAndSignal") << " consistent " << d_variables.assignmentIsConsistent(updated);
+  int dir = !d_variables.assignmentIsConsistent(updated) ?
+    d_errorSet.getSgn(updated) : 0;
+  Debug("updateAndSignal") << " dir " << dir;
+  Debug("updateAndSignal") << " debugBasicAtBoundCount " << d_linEq.debugBasicAtBoundCount(updated) << endl;
+}
+
+bool debugUpdatedBasic(const UpdateInfo& selected, ArithVar updated){
+  if(selected.describesPivot() &&  updated == selected.leaving()){
+    return selected.foundConflict();
+  }else{
+    return true;
+  }
+}
+
+void FCSimplexDecisionProcedure::updateAndSignal(const UpdateInfo& selected, WitnessImprovement w){
+  ArithVar nonbasic = selected.nonbasic();
+
+  static bool verbose = false;
+
+  Debug("updateAndSignal") << "updateAndSignal " << selected << endl;
+
+  stringstream ss;
+  if(verbose){
+    d_errorSet.debugPrint(ss);
+    if(selected.describesPivot()){
+      ArithVar leaving = selected.leaving();
+      ss << "leaving " << leaving
+         << " " << d_tableau.basicRowLength(leaving)
+         << " " << d_linEq.debugBasicAtBoundCount(leaving)
+         << endl;
+    }
+    if(degenerate(w) && selected.describesPivot()){
+      ArithVar leaving = selected.leaving();
+      Message()
+        << "degenerate " << leaving
+        << ", atBounds " << d_linEq.basicsAtBounds(selected)
+        << ", len " << d_tableau.basicRowLength(leaving)
+        << ", bc " << d_linEq.debugBasicAtBoundCount(leaving)
+        << endl;
+    }
+  }
+
+  if(selected.describesPivot()){
+    ConstraintP limiting = selected.limiting();
+    ArithVar basic = limiting->getVariable();
+    Assert(d_linEq.basicIsTracked(basic));
+    d_linEq.pivotAndUpdate(basic, nonbasic, limiting->getValue());
+  }else{
+    Assert(!selected.unbounded() || selected.errorsChange() < 0);
+
+    DeltaRational newAssignment =
+      d_variables.getAssignment(nonbasic) + selected.nonbasicDelta();
+
+    d_linEq.updateTracked(nonbasic, newAssignment);
+  }
+  d_pivots++;
+
+  increaseLeavingCount(nonbasic);
+
+  vector< pair<ArithVar, int> > focusChanges;
+  while(d_errorSet.moreSignals()){
+    ArithVar updated = d_errorSet.topSignal();
+    int prevFocusSgn = d_errorSet.popSignal();
+
+    if(d_tableau.isBasic(updated)){
+      Assert(!d_variables.assignmentIsConsistent(updated) == d_errorSet.inError(updated));
+      if(Debug.isOn("updateAndSignal")){debugPrintSignal(updated);}
+      if(!d_variables.assignmentIsConsistent(updated)){
+        if(checkBasicForConflict(updated)){
+          reportConflict(updated);
+          Assert(debugUpdatedBasic(selected, updated));
+        }
+      }
+    }else{
+      Debug("updateAndSignal") << "updated nonbasic " << updated << endl;
+    }
+    int currFocusSgn = d_errorSet.focusSgn(updated);
+    if(currFocusSgn != prevFocusSgn){
+      int change = currFocusSgn - prevFocusSgn;
+      focusChanges.push_back(make_pair(updated, change));
+    }
+  }
+
+  if(verbose){
+    Message() << "conflict variable " << selected << endl;
+    Message() << ss.str();
+  }
+  if(Debug.isOn("error")){ d_errorSet.debugPrint(Debug("error")); }
+
+  Assert(debugSelectedErrorDropped(selected, d_errorSize, d_errorSet.errorSize()));
+
+  adjustFocusAndError(selected, focusChanges);
+}
+
+WitnessImprovement FCSimplexDecisionProcedure::dualLikeImproveError(ArithVar errorVar){
+  Assert(d_sgnDisagreements.empty());
+  Assert(d_focusSize > 1);
+
+  UpdateInfo selected = selectUpdateForDualLike(errorVar);
+
+  if(selected.uninitialized()){
+    // we found no proposals
+    // If this is empty, there must be an error on this variable!
+    // this should not be possible. It Should have been caught as a signal earlier
+    WitnessImprovement dropped = focusUsingSignDisagreements(errorVar);
+    Assert(d_sgnDisagreements.empty());
+
+    return dropped;
+  }else{
+    d_sgnDisagreements.clear();
+  }
+
+  Assert(d_sgnDisagreements.empty());
+  Assert(!selected.uninitialized());
+
+  if(selected.focusDirection() == 0 &&
+     d_prevWitnessImprovement == HeuristicDegenerate &&
+     d_witnessImprovementInARow >= s_focusThreshold){
+
+    Debug("focusDownToJust") << "focusDownToJust " << errorVar << endl;
+
+    return focusDownToJust(errorVar);
+  }else{
+    WitnessImprovement w = selected.getWitness(false);
+    Assert(debugCheckWitness(selected, w, false));
+    updateAndSignal(selected, w);
+    logPivot(w);
+    return w;
+  }
+}
+
+WitnessImprovement FCSimplexDecisionProcedure::focusDownToLastHalf(){
+  Assert(d_focusSize >= 2);
+
+  Debug("focusDownToLastHalf") << "focusDownToLastHalf "
+       << d_errorSet.errorSize()  << " "
+       << d_errorSet.focusSize() << " ";
+
+  uint32_t half = d_focusSize/2;
+  ArithVarVec buf;
+  for(ErrorSet::focus_iterator i = d_errorSet.focusBegin(),
+        i_end = d_errorSet.focusEnd(); i != i_end; ++i){
+    if(half > 0){
+      --half;
+    } else{
+      buf.push_back(*i);
+    }
+  }
+  WitnessImprovement w = adjustFocusShrank(buf);
+  Debug("focusDownToLastHalf") << "-> " << d_errorSet.focusSize() << endl;
+  return w;
+}
+
+WitnessImprovement FCSimplexDecisionProcedure::selectFocusImproving() {
+  Assert(d_focusErrorVar != ARITHVAR_SENTINEL);
+  Assert(d_focusSize >= 2);
+
+  LinearEqualityModule::UpdatePreferenceFunction upf =
+    &LinearEqualityModule::preferWitness<true>;
+
+  LinearEqualityModule::VarPreferenceFunction bpf =
+    &LinearEqualityModule::minRowLength;
+
+  UpdateInfo selected = selectPrimalUpdate(d_focusErrorVar, upf, bpf);
+
+  if(selected.uninitialized()){
+    Debug("selectFocusImproving") << "focus is optimum, but we don't have sat/conflict yet" << endl;
+
+    return focusDownToLastHalf();
+  }
+  Assert(!selected.uninitialized());
+  WitnessImprovement w = selected.getWitness(false);
+  Assert(debugCheckWitness(selected, w, false));
+
+  if(degenerate(w)){
+    Debug("selectFocusImproving") << "only degenerate" << endl;
+    if(d_prevWitnessImprovement == HeuristicDegenerate &&
+       d_witnessImprovementInARow >= s_focusThreshold){
+      Debug("selectFocusImproving") << "focus down been degenerate too long" << endl;
+      return focusDownToLastHalf();
+    }else{
+      Debug("selectFocusImproving") << "taking degenerate" << endl;
+    }
+  }
+  Debug("selectFocusImproving") << "selectFocusImproving did this " << selected << endl;
+
+  updateAndSignal(selected, w);
+  logPivot(w);
+  return w;
+}
+
+bool FCSimplexDecisionProcedure::debugDualLike(WitnessImprovement w, ostream& out, int instance, uint32_t prevFocusSize, uint32_t prevErrorSize ) const{
+  out << "DLV("<<instance<<") ";
+  switch(w){
+  case ConflictFound:
+    out << "found conflict" << endl;
+    return !d_conflictVariables.empty();
+  case ErrorDropped:
+    out << "dropped " << prevErrorSize - d_errorSize << endl;
+    return d_errorSize < prevErrorSize;
+  case FocusImproved:
+    out << "focus improved"<< endl;
+    return d_errorSize == prevErrorSize;
+  case FocusShrank:
+    out << "focus shrank"<< endl;
+    return d_errorSize == prevErrorSize && prevFocusSize > d_focusSize;
+  case BlandsDegenerate:
+    out << "bland degenerate"<< endl;
+    return true;
+  case HeuristicDegenerate:
+    out << "heuristic degenerate"<< endl;
+    return true;
+  case AntiProductive:
+    out << "focus blur" << endl;
+    return prevFocusSize == 0;
+  case Degenerate:
+    return false;
+  }
+  return false;
+}
+
+Result::Sat FCSimplexDecisionProcedure::dualLike(){
+  static int instance = 0;
+  static bool verbose = false;
+
+  TimerStat::CodeTimer codeTimer(d_statistics.d_fcTimer);
+
+  Assert(d_sgnDisagreements.empty());
+  Assert(d_pivotBudget != 0);
+  Assert(d_errorSize == d_errorSet.errorSize());
+  Assert(d_errorSize > 0);
+  Assert(d_focusSize == d_errorSet.focusSize());
+  Assert(d_focusSize > 0);
+  Assert(d_conflictVariables.empty());
+  Assert(d_focusErrorVar == ARITHVAR_SENTINEL);
+
+
+  d_scores.purge();
+  d_focusErrorVar = constructInfeasiblityFunction(d_statistics.d_fcFocusConstructionTimer);
+
+
+  while(d_pivotBudget != 0  && d_errorSize > 0 && d_conflictVariables.empty()){
+    ++instance;
+    Debug("dualLike") << "dualLike " << instance << endl;
+
+    Assert(d_errorSet.noSignals());
+
+    WitnessImprovement w = AntiProductive;
+    uint32_t prevFocusSize = d_focusSize;
+    uint32_t prevErrorSize = d_errorSize;
+
+    if(d_focusSize == 0){
+      Assert(d_errorSize == d_errorSet.errorSize());
+      Assert(d_focusErrorVar == ARITHVAR_SENTINEL);
+
+      d_errorSet.blur();
+
+      d_focusSize = d_errorSet.focusSize();
+
+      Assert( d_errorSize == d_focusSize);
+      Assert( d_errorSize >= 1 );
+
+      d_focusErrorVar = constructInfeasiblityFunction(d_statistics.d_fcFocusConstructionTimer);
+
+      Debug("dualLike") << "blur " << d_focusSize << endl;
+    }else if(d_focusSize == 1){
+      // Possible outcomes:
+      // - errorSet size shrunk
+      // -- fixed v
+      // -- fixed something other than v
+      // - conflict
+      // - budget was exhausted
+
+      ArithVar e = d_errorSet.topFocusVariable();
+      Debug("dualLike") << "primalImproveError " << e << endl;
+      w = primalImproveError(e);
+    }else{
+
+      // Possible outcomes:
+      // - errorSet size shrunk
+      // -- fixed v
+      // -- fixed something other than v
+      // - conflict
+      // - budget was exhausted
+      // - focus went down
+      Assert(d_focusSize > 1);
+      ArithVar e = d_errorSet.topFocusVariable();
+      static const unsigned s_sumMetricThreshold = 1;
+      if(d_errorSet.sumMetric(e) <= s_sumMetricThreshold){
+        Debug("dualLike") << "dualLikeImproveError " << e << endl;
+        w = dualLikeImproveError(e);
+      }else{
+        Debug("dualLike") << "selectFocusImproving " << endl;
+        w = selectFocusImproving();
+      }
+    }
+    Assert(d_focusSize == d_errorSet.focusSize());
+    Assert(d_errorSize == d_errorSet.errorSize());
+
+    if(verbose){
+      debugDualLike(w,  Message(), instance, prevFocusSize, prevErrorSize);
+    }
+    Assert(debugDualLike(w, Debug("dualLike"), instance, prevFocusSize, prevErrorSize));
+  }
+
+
+  if(d_focusErrorVar != ARITHVAR_SENTINEL){
+    tearDownInfeasiblityFunction(d_statistics.d_fcFocusConstructionTimer, d_focusErrorVar);
+    d_focusErrorVar = ARITHVAR_SENTINEL;
+  }
+
+  Assert(d_focusErrorVar == ARITHVAR_SENTINEL);
+  if(!d_conflictVariables.empty()){
+    return Result::UNSAT;
+  }else if(d_errorSet.errorEmpty()){
+    Assert(d_errorSet.noSignals());
+    return Result::SAT;
+  }else{
+    Assert(d_pivotBudget == 0);
+    return Result::SAT_UNKNOWN;
+  }
+}
+
+
+void FCSimplexDecisionProcedure::loadFocusSigns(){
+  Assert(d_focusCoefficients.empty());
+  Assert(d_focusErrorVar != ARITHVAR_SENTINEL);
+  for(Tableau::RowIterator ri = d_tableau.basicRowIterator(d_focusErrorVar); !ri.atEnd(); ++ri){
+    const Tableau::Entry& e = *ri;
+    ArithVar curr = e.getColVar();
+    d_focusCoefficients.set(curr, &e.getCoefficient());
+  }
+}
+
+void FCSimplexDecisionProcedure::unloadFocusSigns(){
+  d_focusCoefficients.purge();
+}
+
+const Rational& FCSimplexDecisionProcedure::focusCoefficient(ArithVar nb) const {
+  if(d_focusCoefficients.isKey(nb)){
+    return *(d_focusCoefficients[nb]);
+  }else{
+    return d_zero;
+  }
+}
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/fc_simplex.h b/src/theory/arith/fc_simplex.h
new file mode 100644
index 0000000..ca1e666
--- /dev/null
+++ b/src/theory/arith/fc_simplex.h
@@ -0,0 +1,257 @@
+/*********************                                                        */
+/*! \file fc_simplex.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This is an implementation of the Simplex Module for the Simplex for DPLL(T)
+ ** decision procedure.
+ **
+ ** This implements the Simplex module for the Simpelx for DPLL(T) decision procedure.
+ ** See the Simplex for DPLL(T) technical report for more background.(citation?)
+ ** This shares with the theory a Tableau, and a PartialModel that:
+ **  - satisfies the equalities in the Tableau, and
+ **  - the assignment for the non-basic variables satisfies their bounds.
+ ** This is required to either produce a conflict or satisifying PartialModel.
+ ** Further, we require being told when a basic variable updates its value.
+ **
+ ** During the Simplex search we maintain a queue of variables.
+ ** The queue is required to contain all of the basic variables that voilate their bounds.
+ ** As elimination from the queue is more efficient to be done lazily,
+ ** we do not maintain that the queue of variables needs to be only basic variables or only
+ ** variables that satisfy their bounds.
+ **
+ ** The simplex procedure roughly follows Alberto's thesis. (citation?)
+ ** There is one round of selecting using a heuristic pivoting rule. (See PreferenceFunction
+ ** Documentation for the available options.)
+ ** The non-basic variable is the one that appears in the fewest pivots. (Bruno says that
+ ** Leonardo invented this first.)
+ ** After this, Bland's pivot rule is invoked.
+ **
+ ** During this proccess, we periodically inspect the queue of variables to
+ ** 1) remove now extraneous extries,
+ ** 2) detect conflicts that are "waiting" on the queue but may not be detected by the
+ **  current queue heuristics, and
+ ** 3) detect multiple conflicts.
+ **
+ ** Conflicts are greedily slackened to use the weakest bounds that still produce the
+ ** conflict.
+ **
+ ** Extra things tracked atm: (Subject to change at Tim's whims)
+ ** - A superset of all of the newly pivoted variables.
+ ** - A queue of additional conflicts that were discovered by Simplex.
+ **   These are theory valid and are currently turned into lemmas
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <stdint.h>
+
+#include "theory/arith/simplex.h"
+#include "util/dense_map.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+class FCSimplexDecisionProcedure : public SimplexDecisionProcedure{
+public:
+  FCSimplexDecisionProcedure(LinearEqualityModule& linEq, ErrorSet& errors, RaiseConflict conflictChannel, TempVarMalloc tvmalloc);
+
+  Result::Sat findModel(bool exactResult);
+
+  // other error variables are dropping
+  WitnessImprovement dualLikeImproveError(ArithVar evar);
+  WitnessImprovement primalImproveError(ArithVar evar);
+
+  // dual like
+  // - found conflict
+  // - satisfied error set
+  Result::Sat dualLike();
+
+private:
+  static const uint32_t PENALTY = 4;
+  DenseMultiset d_scores;
+  void decreasePenalties(){ d_scores.removeOneOfEverything(); }
+  uint32_t penalty(ArithVar x) const { return d_scores.count(x); }
+  void setPenalty(ArithVar x, WitnessImprovement w){
+    if(improvement(w)){
+      if(d_scores.count(x) > 0){
+        d_scores.removeAll(x);
+      }
+    }else{
+      d_scores.setCount(x, PENALTY);
+    }
+  }
+
+  /** The size of the focus set. */
+  uint32_t d_focusSize;
+
+  /** The current error focus variable. */
+  ArithVar d_focusErrorVar;
+
+  /**
+   * The signs of the coefficients in the focus set.
+   * This is empty until this has been loaded.
+   */
+  DenseMap<const Rational*> d_focusCoefficients;
+
+  /**
+   * Loads the signs of the coefficients of the variables on the row d_focusErrorVar
+   * into d_focusSgns.
+   */
+  void loadFocusSigns();
+
+  /** Unloads the information from d_focusSgns. */
+  void unloadFocusSigns();
+
+  /**
+   * The signs of a variable in the row of d_focusErrorVar.
+   * d_focusSgns must be loaded.
+   */
+  const Rational& focusCoefficient(ArithVar nb) const;
+
+  int32_t d_pivotBudget;
+  // enum PivotImprovement {
+  //   ErrorDropped,
+  //   NonDegenerate,
+  //   HeuristicDegenerate,
+  //   BlandsDegenerate
+  // };
+
+  WitnessImprovement d_prevWitnessImprovement;
+  uint32_t d_witnessImprovementInARow;
+
+  uint32_t degeneratePivotsInARow() const;
+
+  static const uint32_t s_focusThreshold = 6;
+  static const uint32_t s_maxDegeneratePivotsBeforeBlandsOnLeaving = 100;
+  static const uint32_t s_maxDegeneratePivotsBeforeBlandsOnEntering = 10;
+
+  DenseMap<uint32_t> d_leavingCountSinceImprovement;
+  void increaseLeavingCount(ArithVar x){
+    if(!d_leavingCountSinceImprovement.isKey(x)){
+      d_leavingCountSinceImprovement.set(x,1);
+    }else{
+      (d_leavingCountSinceImprovement.get(x))++;
+    }
+  }
+  LinearEqualityModule::UpdatePreferenceFunction selectLeavingFunction(ArithVar x){
+    bool useBlands = d_leavingCountSinceImprovement.isKey(x) &&
+      d_leavingCountSinceImprovement[x] >= s_maxDegeneratePivotsBeforeBlandsOnEntering;
+    if(useBlands) {
+      return &LinearEqualityModule::preferWitness<false>;
+    } else {
+      return &LinearEqualityModule::preferWitness<true>;
+    }
+  }
+
+  bool debugDualLike(WitnessImprovement w, std::ostream& out,
+                     int instance,
+                     uint32_t prevFocusSize, uint32_t prevErrorSize) const;
+
+  void debugPrintSignal(ArithVar updated) const;
+
+  ArithVarVec d_sgnDisagreements;
+
+  //static PivotImprovement pivotImprovement(const UpdateInfo& selected, bool useBlands = false);
+
+  void logPivot(WitnessImprovement w);
+
+  void updateAndSignal(const UpdateInfo& selected, WitnessImprovement w);
+
+  UpdateInfo selectPrimalUpdate(ArithVar error,
+                                LinearEqualityModule::UpdatePreferenceFunction upf,
+                                LinearEqualityModule::VarPreferenceFunction bpf);
+
+
+  UpdateInfo selectUpdateForDualLike(ArithVar basic){
+    TimerStat::CodeTimer codeTimer(d_statistics.d_selectUpdateForDualLike);
+
+    LinearEqualityModule::UpdatePreferenceFunction upf =
+      &LinearEqualityModule::preferWitness<true>;
+    LinearEqualityModule::VarPreferenceFunction bpf =
+      &LinearEqualityModule::minVarOrder;
+    return selectPrimalUpdate(basic, upf, bpf);
+  }
+
+  UpdateInfo selectUpdateForPrimal(ArithVar basic, bool useBlands){
+    TimerStat::CodeTimer codeTimer(d_statistics.d_selectUpdateForPrimal);
+
+    LinearEqualityModule::UpdatePreferenceFunction upf;
+    if(useBlands) {
+      upf = &LinearEqualityModule::preferWitness<false>;
+    } else {
+      upf = &LinearEqualityModule::preferWitness<true>;
+    }
+
+    LinearEqualityModule::VarPreferenceFunction bpf = useBlands ?
+      &LinearEqualityModule::minVarOrder :
+      &LinearEqualityModule::minRowLength;
+    bpf = &LinearEqualityModule::minVarOrder;
+
+    return selectPrimalUpdate(basic, upf, bpf);
+  }
+  WitnessImprovement selectFocusImproving() ;
+
+  WitnessImprovement focusUsingSignDisagreements(ArithVar basic);
+  WitnessImprovement focusDownToLastHalf();
+  WitnessImprovement adjustFocusShrank(const ArithVarVec& drop);
+  WitnessImprovement focusDownToJust(ArithVar v);
+
+
+  void adjustFocusAndError(const UpdateInfo& up, const AVIntPairVec& focusChanges);
+
+  /**
+   * This is the main simplex for DPLL(T) loop.
+   * It runs for at most maxIterations.
+   *
+   * Returns true iff it has found a conflict.
+   * d_conflictVariable will be set and the conflict for this row is reported.
+   */
+  bool searchForFeasibleSolution(uint32_t maxIterations);
+
+  bool initialProcessSignals(){
+    TimerStat &timer = d_statistics.d_initialSignalsTime;
+    IntStat& conflictStat  = d_statistics.d_initialConflicts;
+    bool res = standardProcessSignals(timer, conflictStat);
+    d_focusSize = d_errorSet.focusSize();
+    return res;
+  }
+
+  static bool debugCheckWitness(const UpdateInfo& inf, WitnessImprovement w, bool useBlands);
+
+  /** These fields are designed to be accessible to TheoryArith methods. */
+  class Statistics {
+  public:
+    TimerStat d_initialSignalsTime;
+    IntStat d_initialConflicts;
+
+    IntStat d_fcFoundUnsat;
+    IntStat d_fcFoundSat;
+    IntStat d_fcMissed;
+
+    TimerStat d_fcTimer;
+    TimerStat d_fcFocusConstructionTimer;
+
+    TimerStat d_selectUpdateForDualLike;
+    TimerStat d_selectUpdateForPrimal;
+
+    ReferenceStat<uint32_t> d_finalCheckPivotCounter;
+
+    Statistics(uint32_t& pivots);
+    ~Statistics();
+  } d_statistics;
+};/* class FCSimplexDecisionProcedure */
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/infer_bounds.cpp b/src/theory/arith/infer_bounds.cpp
new file mode 100644
index 0000000..96b2a61
--- /dev/null
+++ b/src/theory/arith/infer_bounds.cpp
@@ -0,0 +1,319 @@
+/*********************                                                        */
+/*! \file infer_bounds.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/arith/infer_bounds.h"
+#include "theory/rewriter.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+using namespace inferbounds;
+
+InferBoundAlgorithm::InferBoundAlgorithm()
+  : d_alg(None)
+{}
+
+InferBoundAlgorithm::InferBoundAlgorithm(Algorithms a)
+  : d_alg(a)
+{
+  Assert(a != Simplex);
+}
+
+InferBoundAlgorithm::InferBoundAlgorithm(const Maybe<int>& simplexRounds)
+  : d_alg(Simplex)
+{}
+
+Algorithms InferBoundAlgorithm::getAlgorithm() const{
+  return d_alg;
+}
+
+const Maybe<int>& InferBoundAlgorithm::getSimplexRounds() const{
+  Assert(getAlgorithm() == Simplex);
+  return d_simplexRounds;
+}
+
+
+InferBoundAlgorithm InferBoundAlgorithm::mkLookup(){
+  return InferBoundAlgorithm(Lookup);
+}
+
+InferBoundAlgorithm InferBoundAlgorithm::mkRowSum(){
+  return InferBoundAlgorithm(RowSum);
+}
+
+InferBoundAlgorithm InferBoundAlgorithm::mkSimplex(const Maybe<int>& rounds){
+  return InferBoundAlgorithm(rounds);
+}
+
+ArithEntailmentCheckParameters::ArithEntailmentCheckParameters()
+  : EntailmentCheckParameters(theory::THEORY_ARITH)
+  , d_algorithms()
+{}
+
+ArithEntailmentCheckParameters::~ArithEntailmentCheckParameters()
+{}
+
+
+void ArithEntailmentCheckParameters::addLookupRowSumAlgorithms(){
+  addAlgorithm(InferBoundAlgorithm::mkLookup());
+  addAlgorithm(InferBoundAlgorithm::mkRowSum());
+}
+
+void ArithEntailmentCheckParameters::addAlgorithm(const inferbounds::InferBoundAlgorithm& alg){
+  d_algorithms.push_back(alg);
+}
+
+ArithEntailmentCheckParameters::const_iterator ArithEntailmentCheckParameters::begin() const{
+  return d_algorithms.begin();
+}
+
+ArithEntailmentCheckParameters::const_iterator ArithEntailmentCheckParameters::end() const{
+  return d_algorithms.end();
+}
+
+
+// SimplexInferBoundsParameters::SimplexInferBoundsParameters()
+//   : d_parameter(1)
+//   , d_upperBound(true)
+//   , d_threshold()
+// {}
+
+// SimplexInferBoundsParameters::~SimplexInferBoundsParameters(){}
+
+
+
+// int SimplexInferBoundsParameters::getSimplexRoundParameter() const {
+//   return d_parameter;
+// }
+
+// bool SimplexInferBoundsParameters::findLowerBound() const {
+//   return ! findUpperBound();
+// }
+
+// bool SimplexInferBoundsParameters::findUpperBound() const {
+//   return d_upperBound;
+// }
+
+// void SimplexInferBoundsParameters::setThreshold(const DeltaRational& th){
+//   d_threshold = th;
+//   d_useThreshold = true;
+// }
+
+// bool SimplexInferBoundsParameters::useThreshold() const{
+//   return d_useThreshold;
+// }
+
+// const DeltaRational& SimplexInferBoundsParameters::getThreshold() const{
+//   return d_threshold;
+// }
+
+// SimplexInferBoundsParameters::SimplexInferBoundsParameters(int p, bool ub)
+//   : d_parameter(p)
+//   , d_upperBound(ub)
+//   , d_useThreshold(false)
+//   , d_threshold()
+// {}
+
+
+InferBoundsResult::InferBoundsResult()
+  : d_foundBound(false)
+  , d_budgetExhausted(false)
+  , d_boundIsProvenOpt(false)
+  , d_inconsistentState(false)
+  , d_reachedThreshold(false)
+  , d_value(false)
+  , d_term(Node::null())
+  , d_upperBound(true)
+  , d_explanation(Node::null())
+{}
+
+InferBoundsResult::InferBoundsResult(Node term, bool ub)
+  : d_foundBound(false)
+  , d_budgetExhausted(false)
+  , d_boundIsProvenOpt(false)
+  , d_inconsistentState(false)
+  , d_reachedThreshold(false)
+  , d_value(false)
+  , d_term(term)
+  , d_upperBound(ub)
+  , d_explanation(Node::null())
+{}
+
+bool InferBoundsResult::foundBound() const {
+  return d_foundBound;
+}
+bool InferBoundsResult::boundIsOptimal() const {
+  return d_boundIsProvenOpt;
+}
+bool InferBoundsResult::inconsistentState() const {
+  return d_inconsistentState;
+}
+
+bool InferBoundsResult::boundIsInteger() const{
+  return foundBound() && d_value.isIntegral();
+}
+
+bool InferBoundsResult::boundIsRational() const {
+  return foundBound() && d_value.infinitesimalIsZero();
+}
+
+Integer InferBoundsResult::valueAsInteger() const{
+  Assert(boundIsInteger());
+  return getValue().floor();
+}
+const Rational& InferBoundsResult::valueAsRational() const{
+  Assert(boundIsRational());
+  return getValue().getNoninfinitesimalPart();
+}
+
+const DeltaRational& InferBoundsResult::getValue() const{
+  return d_value;
+}
+
+Node InferBoundsResult::getTerm() const { return d_term; }
+
+Node InferBoundsResult::getLiteral() const{
+  const Rational& q = getValue().getNoninfinitesimalPart();
+  NodeManager* nm = NodeManager::currentNM();
+  Node qnode = nm->mkConst(q);
+
+  Kind k;
+  if(d_upperBound){
+    // x <= q + c*delta
+    Assert(getValue().infinitesimalSgn() <= 0);
+    k = boundIsRational() ? kind::LEQ : kind::LT;
+  }else{
+    // x >= q + c*delta
+    Assert(getValue().infinitesimalSgn() >= 0);
+    k = boundIsRational() ? kind::GEQ : kind::GT;
+  }
+  Node atom = nm->mkNode(k, getTerm(), qnode);
+  Node lit = Rewriter::rewrite(atom);
+  return lit;
+}
+
+/* If there is a bound, this is a node that explains the bound. */
+Node InferBoundsResult::getExplanation() const{
+  return d_explanation;
+}
+
+
+void InferBoundsResult::setBound(const DeltaRational& dr, Node exp){
+  d_foundBound = true;
+  d_value = dr;
+  d_explanation = exp;
+}
+
+//bool InferBoundsResult::foundBound() const { return d_foundBound; }
+//bool InferBoundsResult::boundIsOptimal() const { return d_boundIsProvenOpt; }
+//bool InferBoundsResult::inconsistentState() const { return d_inconsistentState; }
+
+
+void InferBoundsResult::setBudgetExhausted() { d_budgetExhausted = true; }
+void InferBoundsResult::setReachedThreshold() { d_reachedThreshold = true; }
+void InferBoundsResult::setIsOptimal() { d_boundIsProvenOpt = true; }
+void InferBoundsResult::setInconsistent() { d_inconsistentState = true; }
+
+bool InferBoundsResult::thresholdWasReached() const{
+  return d_reachedThreshold;
+}
+bool InferBoundsResult::budgetIsExhausted() const{
+  return d_budgetExhausted;
+}
+
+std::ostream& operator<<(std::ostream& os, const InferBoundsResult& ibr){
+  os << "{InferBoundsResult " << std::endl;
+  os << "on " << ibr.getTerm() << ", ";
+  if(ibr.findUpperBound()){
+    os << "find upper bound, ";
+  }else{
+    os << "find lower bound, ";
+  }
+  if(ibr.foundBound()){
+    os << "found a bound: ";
+    if(ibr.boundIsInteger()){
+      os << ibr.valueAsInteger() << "(int), ";
+    }else if(ibr.boundIsRational()){
+      os << ibr.valueAsRational() << "(rat), ";
+    }else{
+      os << ibr.getValue() << "(extended), ";
+    }
+
+    os << "as term " << ibr.getLiteral() << ", ";
+    os << "explanation " << ibr.getExplanation() << ", ";
+  }else {
+    os << "did not find a bound, ";
+  }
+
+  if(ibr.boundIsOptimal()){
+    os << "(opt), ";
+  }
+
+  if(ibr.inconsistentState()){
+    os << "(inconsistent), ";
+  }
+  if(ibr.budgetIsExhausted()){
+    os << "(budget exhausted), ";
+  }
+  if(ibr.thresholdWasReached()){
+    os << "(reached threshold), ";
+  }
+  os << "}";
+  return os;
+}
+
+
+ArithEntailmentCheckSideEffects::ArithEntailmentCheckSideEffects()
+  : EntailmentCheckSideEffects(theory::THEORY_ARITH)
+  , d_simplexSideEffects (NULL)
+{}
+
+ArithEntailmentCheckSideEffects::~ArithEntailmentCheckSideEffects(){
+  if(d_simplexSideEffects != NULL){
+    delete d_simplexSideEffects;
+    d_simplexSideEffects = NULL;
+  }
+}
+
+InferBoundsResult& ArithEntailmentCheckSideEffects::getSimplexSideEffects(){
+  if(d_simplexSideEffects == NULL){
+    d_simplexSideEffects = new InferBoundsResult;
+  }
+  return *d_simplexSideEffects;
+}
+
+namespace inferbounds { /* namespace arith */
+
+std::ostream& operator<<(std::ostream& os,  const Algorithms a){
+  switch(a){
+  case None:    os << "AlgNone"; break;
+  case Lookup:  os << "AlgLookup"; break;
+  case RowSum:  os << "AlgRowSum"; break;
+  case Simplex: os << "AlgSimplex"; break;
+  default:
+    Unhandled();
+  }
+
+  return os;
+}
+
+} /* namespace inferbounds */
+
+} /* namespace arith */
+} /* namespace theory */
+} /* namespace CVC4 */
diff --git a/src/theory/arith/infer_bounds.h b/src/theory/arith/infer_bounds.h
new file mode 100644
index 0000000..f65952f
--- /dev/null
+++ b/src/theory/arith/infer_bounds.h
@@ -0,0 +1,163 @@
+/*********************                                                        */
+/*! \file infer_bounds.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <ostream>
+
+#include "expr/node.h"
+#include "theory/arith/delta_rational.h"
+#include "theory/theory.h"
+#include "util/integer.h"
+#include "util/maybe.h"
+#include "util/rational.h"
+
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+namespace inferbounds {
+  enum Algorithms {None = 0, Lookup, RowSum, Simplex};
+  enum SimplexParamKind { Unbounded, NumVars, Direct};
+
+class InferBoundAlgorithm {
+private:
+  Algorithms d_alg;
+  Maybe<int> d_simplexRounds;
+  InferBoundAlgorithm(Algorithms a);
+  InferBoundAlgorithm(const Maybe<int>& simplexRounds);
+
+public:
+  InferBoundAlgorithm();
+
+  Algorithms getAlgorithm() const;
+  const Maybe<int>& getSimplexRounds() const;
+
+  static InferBoundAlgorithm mkLookup();
+  static InferBoundAlgorithm mkRowSum();
+  static InferBoundAlgorithm mkSimplex(const Maybe<int>& rounds);
+};
+
+std::ostream& operator<<(std::ostream& os, const Algorithms a);
+} /* namespace inferbounds */
+
+class ArithEntailmentCheckParameters : public EntailmentCheckParameters {
+private:
+  typedef std::vector<inferbounds::InferBoundAlgorithm> VecInferBoundAlg;
+  VecInferBoundAlg d_algorithms;
+
+public:
+  typedef VecInferBoundAlg::const_iterator const_iterator;
+
+  ArithEntailmentCheckParameters();
+  ~ArithEntailmentCheckParameters();
+
+  void addLookupRowSumAlgorithms();
+  void addAlgorithm(const inferbounds::InferBoundAlgorithm& alg);
+
+  const_iterator begin() const;
+  const_iterator end() const;
+};
+
+
+
+class InferBoundsResult {
+public:
+  InferBoundsResult();
+  InferBoundsResult(Node term, bool ub);
+
+  void setBound(const DeltaRational& dr, Node exp);
+  bool foundBound() const;
+
+  void setIsOptimal();
+  bool boundIsOptimal() const;
+
+  void setInconsistent();
+  bool inconsistentState() const;
+
+  const DeltaRational& getValue() const;
+  bool boundIsRational() const;
+  const Rational& valueAsRational() const;
+  bool boundIsInteger() const;
+  Integer valueAsInteger() const;
+
+  Node getTerm() const;
+  Node getLiteral() const;
+  void setTerm(Node t){ d_term = t; }
+
+  /* If there is a bound, this is a node that explains the bound. */
+  Node getExplanation() const;
+
+  bool budgetIsExhausted() const;
+  void setBudgetExhausted();
+
+  bool thresholdWasReached() const;
+  void setReachedThreshold();
+
+  bool findUpperBound() const { return d_upperBound; }
+
+  void setFindLowerBound() { d_upperBound = false; }
+  void setFindUpperBound() { d_upperBound = true; }
+private:
+  /* was a bound found */
+  bool d_foundBound;
+
+  /* was the budget exhausted */
+  bool d_budgetExhausted;
+
+  /* does the bound have to be optimal*/
+  bool d_boundIsProvenOpt;
+
+  /* was this started on an inconsistent state. */
+  bool d_inconsistentState;
+
+  /* reached the threshold. */
+  bool d_reachedThreshold;
+
+  /* the value of the bound */
+  DeltaRational d_value;
+
+  /* The input term. */
+  Node d_term;
+
+  /* Was the bound found an upper or lower bound.*/
+  bool d_upperBound;
+
+  /* Explanation of the bound. */
+  Node d_explanation;
+};
+
+std::ostream& operator<<(std::ostream& os, const InferBoundsResult& ibr);
+
+class ArithEntailmentCheckSideEffects : public EntailmentCheckSideEffects{
+public:
+  ArithEntailmentCheckSideEffects();
+  ~ArithEntailmentCheckSideEffects();
+
+  InferBoundsResult& getSimplexSideEffects();
+
+private:
+  InferBoundsResult* d_simplexSideEffects;
+};
+
+
+} /* namespace arith */
+} /* namespace theory */
+} /* namespace CVC4 */
diff --git a/src/theory/arith/kinds b/src/theory/arith/kinds
new file mode 100644
index 0000000..4547018
--- /dev/null
+++ b/src/theory/arith/kinds
@@ -0,0 +1,113 @@
+# kinds                                                               -*- sh -*-
+#
+# For documentation on this file format, please refer to
+# src/theory/builtin/kinds.
+#
+
+theory THEORY_ARITH ::CVC4::theory::arith::TheoryArith "theory/arith/theory_arith.h"
+typechecker "theory/arith/theory_arith_type_rules.h"
+
+properties stable-infinite
+properties check propagate ppStaticLearn presolve notifyRestart
+
+rewriter ::CVC4::theory::arith::ArithRewriter "theory/arith/arith_rewriter.h"
+
+operator PLUS 2: "arithmetic addition (N-ary)"
+operator MULT 2: "arithmetic multiplication (N-ary)"
+operator MINUS 2 "arithmetic binary subtraction operator"
+operator UMINUS 1 "arithmetic unary negation"
+operator DIVISION 2 "real division, division by 0 undefined (user symbol)"
+operator DIVISION_TOTAL 2 "real division with interpreted division by 0 (internal symbol)"
+operator INTS_DIVISION 2 "integer division, division by 0 undefined (user symbol)"
+operator INTS_DIVISION_TOTAL 2 "integer division with interpreted division by 0 (internal symbol)"
+operator INTS_MODULUS 2 "integer modulus, division by 0 undefined (user symbol)"
+operator INTS_MODULUS_TOTAL 2 "integer modulus with interpreted division by 0 (internal symbol)"
+operator ABS 1 "absolute value"
+parameterized DIVISIBLE DIVISIBLE_OP 1 "divisibility-by-k predicate; first parameter is a DIVISIBLE_OP, second is integer term"
+operator POW 2 "arithmetic power"
+
+constant DIVISIBLE_OP \
+        ::CVC4::Divisible \
+        ::CVC4::DivisibleHashFunction \
+        "util/divisible.h" \
+        "operator for the divisibility-by-k predicate; payload is an instance of the CVC4::Divisible class"
+
+sort REAL_TYPE \
+    Cardinality::REALS \
+    well-founded \
+        "NodeManager::currentNM()->mkConst(Rational(0))" \
+        "expr/node_manager.h" \
+    "real type"
+sort INTEGER_TYPE \
+    Cardinality::INTEGERS \
+    well-founded \
+        "NodeManager::currentNM()->mkConst(Rational(0))" \
+        "expr/node_manager.h" \
+    "integer type"
+
+constant SUBRANGE_TYPE \
+    ::CVC4::SubrangeBounds \
+    ::CVC4::SubrangeBoundsHashFunction \
+    "util/subrange_bound.h" \
+    "the type of an integer subrange"
+cardinality SUBRANGE_TYPE \
+    "::CVC4::theory::arith::SubrangeProperties::computeCardinality(%TYPE%)" \
+    "theory/arith/theory_arith_type_rules.h"
+well-founded SUBRANGE_TYPE \
+    true \
+    "::CVC4::theory::arith::SubrangeProperties::mkGroundTerm(%TYPE%)" \
+    "theory/arith/theory_arith_type_rules.h"
+
+constant CONST_RATIONAL \
+    ::CVC4::Rational \
+    ::CVC4::RationalHashFunction \
+    "util/rational.h" \
+    "a multiple-precision rational constant; payload is an instance of the CVC4::Rational class"
+
+enumerator REAL_TYPE \
+    "::CVC4::theory::arith::RationalEnumerator" \
+    "theory/arith/type_enumerator.h"
+enumerator INTEGER_TYPE \
+    "::CVC4::theory::arith::IntegerEnumerator" \
+    "theory/arith/type_enumerator.h"
+enumerator SUBRANGE_TYPE \
+    "::CVC4::theory::arith::SubrangeEnumerator" \
+    "theory/arith/type_enumerator.h"
+
+operator LT 2 "less than, x < y"
+operator LEQ 2 "less than or equal, x <= y"
+operator GT 2 "greater than, x > y"
+operator GEQ 2 "greater than or equal, x >= y"
+
+operator IS_INTEGER 1 "term-is-integer predicate (parameter is a real-sorted term)"
+operator TO_INTEGER 1 "convert term to integer by the floor function (parameter is a real-sorted term)"
+operator TO_REAL 1 "cast term to real (parameter is an integer-sorted term; this is a no-op in CVC4, as integer is a subtype of real)"
+
+typerule PLUS ::CVC4::theory::arith::ArithOperatorTypeRule
+typerule MULT ::CVC4::theory::arith::ArithOperatorTypeRule
+typerule MINUS ::CVC4::theory::arith::ArithOperatorTypeRule
+typerule UMINUS ::CVC4::theory::arith::ArithOperatorTypeRule
+typerule DIVISION ::CVC4::theory::arith::ArithOperatorTypeRule
+typerule POW ::CVC4::theory::arith::ArithOperatorTypeRule
+
+typerule CONST_RATIONAL ::CVC4::theory::arith::ArithConstantTypeRule
+
+typerule LT ::CVC4::theory::arith::ArithPredicateTypeRule
+typerule LEQ ::CVC4::theory::arith::ArithPredicateTypeRule
+typerule GT ::CVC4::theory::arith::ArithPredicateTypeRule
+typerule GEQ ::CVC4::theory::arith::ArithPredicateTypeRule
+
+typerule TO_REAL ::CVC4::theory::arith::ArithOperatorTypeRule
+typerule TO_INTEGER ::CVC4::theory::arith::ArithOperatorTypeRule
+typerule IS_INTEGER ::CVC4::theory::arith::ArithUnaryPredicateTypeRule
+
+typerule ABS ::CVC4::theory::arith::IntOperatorTypeRule
+typerule INTS_DIVISION ::CVC4::theory::arith::IntOperatorTypeRule
+typerule INTS_MODULUS ::CVC4::theory::arith::IntOperatorTypeRule
+typerule DIVISIBLE ::CVC4::theory::arith::IntUnaryPredicateTypeRule
+
+typerule DIVISION_TOTAL ::CVC4::theory::arith::ArithOperatorTypeRule
+typerule INTS_DIVISION_TOTAL ::CVC4::theory::arith::IntOperatorTypeRule
+typerule INTS_MODULUS_TOTAL ::CVC4::theory::arith::IntOperatorTypeRule
+
+endtheory
diff --git a/src/theory/arith/linear_equality.cpp b/src/theory/arith/linear_equality.cpp
new file mode 100644
index 0000000..7e1d84e
--- /dev/null
+++ b/src/theory/arith/linear_equality.cpp
@@ -0,0 +1,1415 @@
+/*********************                                                        */
+/*! \file linear_equality.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This implements the LinearEqualityModule.
+ **
+ ** This implements the LinearEqualityModule.
+ **/
+#include "theory/arith/linear_equality.h"
+
+#include "base/output.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/arith/constraint.h"
+
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+/* Explicitly instatiate these functions. */
+
+template ArithVar LinearEqualityModule::selectSlack<true>(ArithVar x_i, VarPreferenceFunction pf) const;
+template ArithVar LinearEqualityModule::selectSlack<false>(ArithVar x_i, VarPreferenceFunction pf) const;
+
+template bool LinearEqualityModule::preferWitness<true>(const UpdateInfo& a, const UpdateInfo& b) const;
+template bool LinearEqualityModule::preferWitness<false>(const UpdateInfo& a, const UpdateInfo& b) const;
+
+
+void Border::output(std::ostream& out) const{
+  out << "{Border"
+      << ", " << d_bound->getVariable()
+      << ", " << d_bound->getValue()
+      << ", " << d_diff
+      << ", " << d_areFixing
+      << ", " << d_upperbound;
+  if(ownBorder()){
+    out << ", ownBorder";
+  }else{
+    out << ", " << d_entry->getCoefficient();
+  }
+  out << ", " << d_bound
+      << "}";
+}
+
+LinearEqualityModule::LinearEqualityModule(ArithVariables& vars, Tableau& t, BoundInfoMap& boundsTracking, BasicVarModelUpdateCallBack f):
+  d_variables(vars),
+  d_tableau(t),
+  d_basicVariableUpdates(f),
+  d_increasing(1),
+  d_decreasing(-1),
+  d_upperBoundDifference(),
+  d_lowerBoundDifference(),
+  d_one(1),
+  d_negOne(-1),
+  d_btracking(boundsTracking),
+  d_areTracking(false),
+  d_trackCallback(this)
+{}
+
+LinearEqualityModule::Statistics::Statistics():
+  d_statPivots("theory::arith::pivots",0),
+  d_statUpdates("theory::arith::updates",0),
+  d_pivotTime("theory::arith::pivotTime"),
+  d_adjTime("theory::arith::adjTime"),
+  d_weakeningAttempts("theory::arith::weakening::attempts",0),
+  d_weakeningSuccesses("theory::arith::weakening::success",0),
+  d_weakenings("theory::arith::weakening::total",0),
+  d_weakenTime("theory::arith::weakening::time"),
+  d_forceTime("theory::arith::forcing::time")
+{
+  smtStatisticsRegistry()->registerStat(&d_statPivots);
+  smtStatisticsRegistry()->registerStat(&d_statUpdates);
+
+  smtStatisticsRegistry()->registerStat(&d_pivotTime);
+  smtStatisticsRegistry()->registerStat(&d_adjTime);
+
+  smtStatisticsRegistry()->registerStat(&d_weakeningAttempts);
+  smtStatisticsRegistry()->registerStat(&d_weakeningSuccesses);
+  smtStatisticsRegistry()->registerStat(&d_weakenings);
+  smtStatisticsRegistry()->registerStat(&d_weakenTime);
+  smtStatisticsRegistry()->registerStat(&d_forceTime);
+}
+
+LinearEqualityModule::Statistics::~Statistics(){
+  smtStatisticsRegistry()->unregisterStat(&d_statPivots);
+  smtStatisticsRegistry()->unregisterStat(&d_statUpdates);
+  smtStatisticsRegistry()->unregisterStat(&d_pivotTime);
+  smtStatisticsRegistry()->unregisterStat(&d_adjTime);
+
+
+  smtStatisticsRegistry()->unregisterStat(&d_weakeningAttempts);
+  smtStatisticsRegistry()->unregisterStat(&d_weakeningSuccesses);
+  smtStatisticsRegistry()->unregisterStat(&d_weakenings);
+  smtStatisticsRegistry()->unregisterStat(&d_weakenTime);
+  smtStatisticsRegistry()->unregisterStat(&d_forceTime);
+}
+
+void LinearEqualityModule::includeBoundUpdate(ArithVar v, const BoundsInfo& prev){
+  Assert(!d_areTracking);
+
+  BoundsInfo curr = d_variables.boundsInfo(v);
+
+  Assert(prev != curr);
+  Tableau::ColIterator basicIter = d_tableau.colIterator(v);
+  for(; !basicIter.atEnd(); ++basicIter){
+    const Tableau::Entry& entry = *basicIter;
+    Assert(entry.getColVar() == v);
+    int a_ijSgn = entry.getCoefficient().sgn();
+
+    RowIndex ridx = entry.getRowIndex();
+    BoundsInfo& counts = d_btracking.get(ridx);
+    Debug("includeBoundUpdate") << d_tableau.rowIndexToBasic(ridx) << " " << counts << " to " ;
+    counts.addInChange(a_ijSgn, prev, curr);
+    Debug("includeBoundUpdate") << counts << " " << a_ijSgn << std::endl;
+  }
+}
+
+void LinearEqualityModule::updateMany(const DenseMap<DeltaRational>& many){
+  for(DenseMap<DeltaRational>::const_iterator i = many.begin(), i_end = many.end(); i != i_end; ++i){
+    ArithVar nb = *i;
+    if(!d_tableau.isBasic(nb)){
+      Assert(!d_tableau.isBasic(nb));
+      const DeltaRational& newValue = many[nb];
+      if(newValue != d_variables.getAssignment(nb)){
+        Trace("arith::updateMany")
+          << "updateMany:" << nb << " "
+          << d_variables.getAssignment(nb) << " to "<< newValue << endl;
+        update(nb, newValue);
+      }
+    }
+  }
+}
+
+
+
+
+void LinearEqualityModule::applySolution(const DenseSet& newBasis, const DenseMap<DeltaRational>& newValues){
+  forceNewBasis(newBasis);
+  updateMany(newValues);
+}
+
+void LinearEqualityModule::forceNewBasis(const DenseSet& newBasis){
+  TimerStat::CodeTimer codeTimer(d_statistics.d_forceTime);
+  cout << "force begin" << endl;
+  DenseSet needsToBeAdded;
+  for(DenseSet::const_iterator i = newBasis.begin(), i_end = newBasis.end(); i != i_end; ++i){
+    ArithVar b = *i;
+    if(!d_tableau.isBasic(b)){
+      needsToBeAdded.add(b);
+    }
+  }
+
+  while(!needsToBeAdded.empty()){
+    ArithVar toRemove = ARITHVAR_SENTINEL;
+    ArithVar toAdd = ARITHVAR_SENTINEL;
+    DenseSet::const_iterator i = needsToBeAdded.begin(), i_end = needsToBeAdded.end();
+    for(; toAdd == ARITHVAR_SENTINEL && i != i_end; ++i){
+      ArithVar v = *i;
+
+      Tableau::ColIterator colIter = d_tableau.colIterator(v);
+      for(; !colIter.atEnd(); ++colIter){
+        const Tableau::Entry& entry = *colIter;
+        Assert(entry.getColVar() == v);
+        ArithVar b = d_tableau.rowIndexToBasic(entry.getRowIndex());
+        if(!newBasis.isMember(b)){
+          toAdd = v;
+          if(toRemove == ARITHVAR_SENTINEL ||
+             d_tableau.basicRowLength(toRemove) > d_tableau.basicRowLength(b)){
+            toRemove = b;
+          }
+        }
+      }
+    }
+    Assert(toRemove != ARITHVAR_SENTINEL);
+    Assert(toAdd != ARITHVAR_SENTINEL);
+
+    Trace("arith::forceNewBasis") << toRemove << " " << toAdd << endl;
+    Message() << toRemove << " " << toAdd << endl;
+    d_tableau.pivot(toRemove, toAdd, d_trackCallback);
+    d_basicVariableUpdates(toAdd);
+
+    Trace("arith::forceNewBasis") << needsToBeAdded.size() << "to go" << endl;
+    Message() << needsToBeAdded.size() << "to go" << endl;
+    needsToBeAdded.remove(toAdd);
+  }
+}
+
+void LinearEqualityModule::updateUntracked(ArithVar x_i, const DeltaRational& v){
+  Assert(!d_tableau.isBasic(x_i));
+  Assert(!d_areTracking);
+  const DeltaRational& assignment_x_i = d_variables.getAssignment(x_i);
+  ++(d_statistics.d_statUpdates);
+
+
+  Debug("arith") <<"update " << x_i << ": "
+                 << assignment_x_i << "|-> " << v << endl;
+  DeltaRational diff = v - assignment_x_i;
+
+  Tableau::ColIterator colIter = d_tableau.colIterator(x_i);
+  for(; !colIter.atEnd(); ++colIter){
+    const Tableau::Entry& entry = *colIter;
+    Assert(entry.getColVar() == x_i);
+
+    ArithVar x_j = d_tableau.rowIndexToBasic(entry.getRowIndex());
+    const Rational& a_ji = entry.getCoefficient();
+
+    const DeltaRational& assignment = d_variables.getAssignment(x_j);
+    DeltaRational  nAssignment = assignment+(diff * a_ji);
+    d_variables.setAssignment(x_j, nAssignment);
+
+    d_basicVariableUpdates(x_j);
+  }
+
+  d_variables.setAssignment(x_i, v);
+
+  if(Debug.isOn("paranoid:check_tableau")){  debugCheckTableau(); }
+}
+
+void LinearEqualityModule::updateTracked(ArithVar x_i, const DeltaRational& v){
+  TimerStat::CodeTimer codeTimer(d_statistics.d_adjTime);
+
+  Assert(!d_tableau.isBasic(x_i));
+  Assert(d_areTracking);
+
+  ++(d_statistics.d_statUpdates);
+
+  DeltaRational diff =  v - d_variables.getAssignment(x_i);
+  Debug("arith") <<"update " << x_i << ": "
+                 << d_variables.getAssignment(x_i) << "|-> " << v << endl;
+
+
+  BoundCounts before = d_variables.atBoundCounts(x_i);
+  d_variables.setAssignment(x_i, v);
+  BoundCounts after = d_variables.atBoundCounts(x_i);
+
+  bool anyChange = before != after;
+
+  Tableau::ColIterator colIter = d_tableau.colIterator(x_i);
+  for(; !colIter.atEnd(); ++colIter){
+    const Tableau::Entry& entry = *colIter;
+    Assert(entry.getColVar() == x_i);
+
+    RowIndex ridx = entry.getRowIndex();
+    ArithVar x_j = d_tableau.rowIndexToBasic(ridx);
+    const Rational& a_ji = entry.getCoefficient();
+
+    const DeltaRational& assignment = d_variables.getAssignment(x_j);
+    DeltaRational  nAssignment = assignment+(diff * a_ji);
+    Debug("update") << x_j << " " << a_ji << assignment << " -> " << nAssignment << endl;
+    BoundCounts xjBefore = d_variables.atBoundCounts(x_j);
+    d_variables.setAssignment(x_j, nAssignment);
+    BoundCounts xjAfter = d_variables.atBoundCounts(x_j);
+
+    Assert(rowIndexIsTracked(ridx));
+    BoundsInfo& next_bc_k = d_btracking.get(ridx);
+    if(anyChange){
+      next_bc_k.addInAtBoundChange(a_ji.sgn(), before, after);
+    }
+    if(xjBefore != xjAfter){
+      next_bc_k.addInAtBoundChange(-1, xjBefore, xjAfter);
+    }
+
+    d_basicVariableUpdates(x_j);
+  }
+
+  if(Debug.isOn("paranoid:check_tableau")){  debugCheckTableau(); }
+}
+
+void LinearEqualityModule::pivotAndUpdate(ArithVar x_i, ArithVar x_j, const DeltaRational& x_i_value){
+  Assert(x_i != x_j);
+
+  TimerStat::CodeTimer codeTimer(d_statistics.d_pivotTime);
+
+  static int instance = 0;
+
+  if(Debug.isOn("arith::tracking::pre")){
+    ++instance;
+    Debug("arith::tracking")  << "pre update #" << instance << endl;
+    debugCheckTracking();
+  }
+
+  if(Debug.isOn("arith::simplex:row")){ debugPivot(x_i, x_j); }
+
+  RowIndex ridx = d_tableau.basicToRowIndex(x_i);
+  const Tableau::Entry& entry_ij =  d_tableau.findEntry(ridx, x_j);
+  Assert(!entry_ij.blank());
+
+  const Rational& a_ij = entry_ij.getCoefficient();
+  const DeltaRational& betaX_i = d_variables.getAssignment(x_i);
+  DeltaRational theta = (x_i_value - betaX_i)/a_ij;
+  DeltaRational x_j_value = d_variables.getAssignment(x_j) + theta;
+
+  updateTracked(x_j, x_j_value);
+
+  if(Debug.isOn("arith::tracking::mid")){
+    Debug("arith::tracking")  << "postupdate prepivot #" << instance << endl;
+    debugCheckTracking();
+  }
+
+  // Pivots
+  ++(d_statistics.d_statPivots);
+
+  d_tableau.pivot(x_i, x_j, d_trackCallback);
+
+  if(Debug.isOn("arith::tracking::post")){
+    Debug("arith::tracking")  << "postpivot #" << instance << endl;
+    debugCheckTracking();
+  }
+
+  d_basicVariableUpdates(x_j);
+
+  if(Debug.isOn("matrix")){
+    d_tableau.printMatrix();
+  }
+}
+
+uint32_t LinearEqualityModule::updateProduct(const UpdateInfo& inf) const {
+  uint32_t colLen = d_tableau.getColLength(inf.nonbasic());
+  if(inf.describesPivot()){
+    Assert(inf.leaving() != inf.nonbasic());
+    return colLen + d_tableau.basicRowLength(inf.leaving());
+  }else{
+    return colLen;
+  }
+}
+
+void LinearEqualityModule::debugCheckTracking(){
+  Tableau::BasicIterator basicIter = d_tableau.beginBasic(),
+    endIter = d_tableau.endBasic();
+  for(; basicIter != endIter; ++basicIter){
+    ArithVar basic = *basicIter;
+    Debug("arith::tracking") << "arith::tracking row basic: " << basic << endl;
+
+    for(Tableau::RowIterator iter = d_tableau.basicRowIterator(basic); !iter.atEnd() && Debug.isOn("arith::tracking"); ++iter){
+      const Tableau::Entry& entry = *iter;
+
+      ArithVar var = entry.getColVar();
+      const Rational& coeff = entry.getCoefficient();
+      DeltaRational beta = d_variables.getAssignment(var);
+      Debug("arith::tracking") << var << " " << d_variables.boundsInfo(var)
+                               << " " << beta << coeff;
+      if(d_variables.hasLowerBound(var)){
+        Debug("arith::tracking") << "(lb " << d_variables.getLowerBound(var) << ")";
+      }
+      if(d_variables.hasUpperBound(var)){
+        Debug("arith::tracking") << "(up " << d_variables.getUpperBound(var) << ")";
+      }
+      Debug("arith::tracking") << endl;
+    }
+    Debug("arith::tracking") << "end row"<< endl;
+
+    if(basicIsTracked(basic)){
+      RowIndex ridx = d_tableau.basicToRowIndex(basic);
+      BoundsInfo computed = computeRowBoundInfo(ridx, false);
+      Debug("arith::tracking")
+        << "computed " << computed
+        << " tracking " << d_btracking[ridx] << endl;
+      Assert(computed == d_btracking[ridx]);
+
+    }
+  }
+}
+
+void LinearEqualityModule::debugPivot(ArithVar x_i, ArithVar x_j){
+  Debug("arith::pivot") << "debugPivot("<< x_i  <<"|->"<< x_j << ")" << endl;
+
+  for(Tableau::RowIterator iter = d_tableau.basicRowIterator(x_i); !iter.atEnd(); ++iter){
+    const Tableau::Entry& entry = *iter;
+
+    ArithVar var = entry.getColVar();
+    const Rational& coeff = entry.getCoefficient();
+    DeltaRational beta = d_variables.getAssignment(var);
+    Debug("arith::pivot") << var << beta << coeff;
+    if(d_variables.hasLowerBound(var)){
+      Debug("arith::pivot") << "(lb " << d_variables.getLowerBound(var) << ")";
+    }
+    if(d_variables.hasUpperBound(var)){
+      Debug("arith::pivot") << "(up " << d_variables.getUpperBound(var) << ")";
+    }
+    Debug("arith::pivot") << endl;
+  }
+  Debug("arith::pivot") << "end row"<< endl;
+}
+
+/**
+ * This check is quite expensive.
+ * It should be wrapped in a Debug.isOn() guard.
+ *   if(Debug.isOn("paranoid:check_tableau")){
+ *      checkTableau();
+ *   }
+ */
+void LinearEqualityModule::debugCheckTableau(){
+  Tableau::BasicIterator basicIter = d_tableau.beginBasic(),
+    endIter = d_tableau.endBasic();
+  for(; basicIter != endIter; ++basicIter){
+    ArithVar basic = *basicIter;
+    DeltaRational sum;
+    Debug("paranoid:check_tableau") << "starting row" << basic << endl;
+    Tableau::RowIterator nonbasicIter = d_tableau.basicRowIterator(basic);
+    for(; !nonbasicIter.atEnd(); ++nonbasicIter){
+      const Tableau::Entry& entry = *nonbasicIter;
+      ArithVar nonbasic = entry.getColVar();
+      if(basic == nonbasic) continue;
+
+      const Rational& coeff = entry.getCoefficient();
+      DeltaRational beta = d_variables.getAssignment(nonbasic);
+      Debug("paranoid:check_tableau") << nonbasic << beta << coeff<<endl;
+      sum = sum + (beta*coeff);
+    }
+    DeltaRational shouldBe = d_variables.getAssignment(basic);
+    Debug("paranoid:check_tableau") << "ending row" << sum
+                                    << "," << shouldBe << endl;
+
+    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_variables.assignmentIsConsistent(var)){
+      d_variables.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::computeRowBound(RowIndex ridx, bool rowUb, ArithVar skip) const {
+  DeltaRational sum(0,0);
+  for(Tableau::RowIterator i = d_tableau.ridRowIterator(ridx); !i.atEnd(); ++i){
+    const Tableau::Entry& entry = (*i);
+    ArithVar v = entry.getColVar();
+    if(v == skip){ continue; }
+
+    const Rational& coeff =  entry.getCoefficient();
+    bool vUb = (rowUb == (coeff.sgn() > 0));
+
+    const DeltaRational& bound = vUb ?
+      d_variables.getUpperBound(v):
+      d_variables.getLowerBound(v);
+
+    DeltaRational diff = bound * coeff;
+    sum = sum + diff;
+  }
+  return sum;
+}
+
+/**
+ * Computes the value of a basic variable using the current assignment.
+ */
+DeltaRational LinearEqualityModule::computeRowValue(ArithVar x, bool useSafe) const{
+  Assert(d_tableau.isBasic(x));
+  DeltaRational sum(0);
+
+  for(Tableau::RowIterator i = d_tableau.basicRowIterator(x); !i.atEnd(); ++i){
+    const Tableau::Entry& entry = (*i);
+    ArithVar nonbasic = entry.getColVar();
+    if(nonbasic == x) continue;
+    const Rational& coeff = entry.getCoefficient();
+
+    const DeltaRational& assignment = d_variables.getAssignment(nonbasic, useSafe);
+    sum = sum + (assignment * coeff);
+  }
+  return sum;
+}
+
+const Tableau::Entry* LinearEqualityModule::rowLacksBound(RowIndex ridx, bool rowUb, ArithVar skip){
+  Tableau::RowIterator iter = d_tableau.ridRowIterator(ridx);
+  for(; !iter.atEnd(); ++iter){
+    const Tableau::Entry& entry = *iter;
+
+    ArithVar var = entry.getColVar();
+    if(var == skip) { continue; }
+
+    int sgn = entry.getCoefficient().sgn();
+    bool selectUb = (rowUb == (sgn > 0));
+    bool hasBound = selectUb ?
+      d_variables.hasUpperBound(var):
+      d_variables.hasLowerBound(var);
+    if(!hasBound){
+      return &entry;
+    }
+  }
+  return NULL;
+}
+
+void LinearEqualityModule::propagateBasicFromRow(ConstraintP c){
+  Assert(c != NullConstraint);
+  Assert(c->isUpperBound() || c->isLowerBound());
+  Assert(!c->assertedToTheTheory());
+  Assert(!c->hasProof());
+
+  bool upperBound = c->isUpperBound();
+  ArithVar basic = c->getVariable();
+  RowIndex ridx = d_tableau.basicToRowIndex(basic);
+
+  ConstraintCPVec bounds;
+  RationalVectorP coeffs = NULLPROOF(new RationalVector());
+  propagateRow(bounds, ridx, upperBound, c, coeffs);
+  c->impliedByFarkas(bounds, coeffs, false);
+  c->tryToPropagate();
+  
+  if(coeffs != RationalVectorPSentinel) { delete coeffs; }
+}
+
+/* An explanation of the farkas coefficients.
+ *
+ * We are proving c using the other variables on the row.
+ * The proof is in terms of the other constraints and the negation of c, ~c.
+ *
+ * A row has the form:
+ *   sum a_i * x_i  = 0 
+ * or
+ *   sx + sum r y + sum q z = 0 
+ * where r > 0 and q < 0.
+ *
+ * If rowUp, we are proving c
+ *   g = sum r u_y + sum q l_z
+ *   and c is entailed by -sx <= g
+ * If !rowUp, we are proving c
+ *   g = sum r l_y + sum q u_z
+ *   and c is entailed by -sx >= g
+ *
+ *             | s     | c         | ~c       | u_i     | l_i
+ *   if  rowUp | s > 0 | x >= -g/s | x < -g/s | a_i > 0 | a_i < 0
+ *   if  rowUp | s < 0 | x <= -g/s | x > -g/s | a_i > 0 | a_i < 0
+ *   if !rowUp | s > 0 | x <= -g/s | x > -g/s | a_i < 0 | a_i > 0
+ *   if !rowUp | s < 0 | x >= -g/s | x < -g/s | a_i < 0 | a_i > 0
+ *
+ *
+ * Thus we treat !rowUp as multiplying the row by -1 and rowUp as 1
+ * for the entire row.
+ */
+void LinearEqualityModule::propagateRow(ConstraintCPVec& into, RowIndex ridx, bool rowUp, ConstraintP c, RationalVectorP farkas){
+  Assert(!c->assertedToTheTheory());
+  Assert(c->canBePropagated());
+  Assert(!c->hasProof());
+
+  if(farkas != RationalVectorPSentinel){
+    Assert(farkas->empty());
+    farkas->push_back(Rational(0));
+  }
+  
+  ArithVar v = c->getVariable();
+  Debug("arith::propagateRow") << "LinearEqualityModule::propagateRow("
+                                   << ridx << ", " << rowUp << ", " << v << ") start" << endl;
+
+  const Rational& multiple = rowUp ? d_one : d_negOne;
+
+  Debug("arith::propagateRow") << "multiple: " << multiple << endl;
+  
+  Tableau::RowIterator iter = d_tableau.ridRowIterator(ridx);
+  for(; !iter.atEnd(); ++iter){
+    const Tableau::Entry& entry = *iter;
+    ArithVar nonbasic = entry.getColVar();
+    const Rational& a_ij = entry.getCoefficient();
+    int sgn = a_ij.sgn();
+    Assert(sgn != 0);
+    bool selectUb = rowUp ? (sgn > 0) : (sgn < 0);
+
+    Assert( nonbasic != v ||
+            ( rowUp && a_ij.sgn() > 0 && c->isLowerBound()) ||
+            ( rowUp && a_ij.sgn() < 0 && c->isUpperBound()) ||
+            (!rowUp && a_ij.sgn() > 0 && c->isUpperBound()) ||
+            (!rowUp && a_ij.sgn() < 0 && c->isLowerBound())
+            );
+
+    if(Debug.isOn("arith::propagateRow")){
+      if(nonbasic == v){
+        Debug("arith::propagateRow") << "(target) "
+                                     << rowUp << " "
+                                     << a_ij.sgn() << " "
+                                     << c->isLowerBound() << " "
+                                     << c->isUpperBound() << endl;
+
+        Debug("arith::propagateRow") << "(target) ";
+      }
+      Debug("arith::propagateRow") << "propagateRow " << a_ij << " * " << nonbasic ;
+    }
+
+    if(nonbasic == v){
+      if(farkas != RationalVectorPSentinel){
+        Assert(farkas->front().isZero());
+        Rational multAij = multiple * a_ij;
+        Debug("arith::propagateRow") << "("<<multAij<<") ";        
+        farkas->front() = multAij;      
+      }
+
+      Debug("arith::propagateRow") << c << endl;
+    }else{
+
+      ConstraintCP bound = selectUb
+        ? d_variables.getUpperBoundConstraint(nonbasic)
+        : d_variables.getLowerBoundConstraint(nonbasic);
+      
+      if(farkas != RationalVectorPSentinel){
+        Rational multAij = multiple * a_ij;
+        Debug("arith::propagateRow") << "("<<multAij<<") ";        
+        farkas->push_back(multAij);
+      }
+      Assert(bound != NullConstraint);
+      Debug("arith::propagateRow") << bound << endl;
+      into.push_back(bound);
+    }
+  }
+  Debug("arith::propagateRow") << "LinearEqualityModule::propagateRow("
+                                   << ridx << ", " << rowUp << ", " << v << ") done" << endl;
+
+}
+
+ConstraintP LinearEqualityModule::weakestExplanation(bool aboveUpper, DeltaRational& surplus, ArithVar v, const Rational& coeff, bool& anyWeakening, ArithVar basic) const {
+
+  int sgn = coeff.sgn();
+  bool ub = aboveUpper?(sgn < 0) : (sgn > 0);
+
+  ConstraintP c = ub ?
+    d_variables.getUpperBoundConstraint(v) :
+    d_variables.getLowerBoundConstraint(v);
+
+  bool weakened;
+  do{
+    const DeltaRational& bound = c->getValue();
+
+    weakened = false;
+
+    ConstraintP weaker = ub?
+      c->getStrictlyWeakerUpperBound(true, true):
+      c->getStrictlyWeakerLowerBound(true, true);
+
+    if(weaker != NullConstraint){
+      const DeltaRational& weakerBound = weaker->getValue();
+
+      DeltaRational diff = aboveUpper ? bound - weakerBound : weakerBound - bound;
+      //if var == basic,
+      //  if aboveUpper, weakerBound > bound, multiply by -1
+      //  if !aboveUpper, weakerBound < bound, multiply by -1
+      diff = diff * coeff;
+      if(surplus > diff){
+        ++d_statistics.d_weakenings;
+        weakened = true;
+        anyWeakening = true;
+        surplus = surplus - diff;
+
+        Debug("arith::weak") << "found:" << endl;
+        if(v == basic){
+          Debug("arith::weak") << "  basic: ";
+        }
+        Debug("arith::weak") << "  " << surplus << " "<< diff  << endl
+                             << "  " << bound << c << endl
+                             << "  " << weakerBound << weaker << endl;
+
+        Assert(diff.sgn() > 0);
+        c = weaker;
+      }
+    }
+  }while(weakened);
+
+  return c;
+}
+
+/* An explanation of the farkas coefficients.
+ *
+ * We are proving a conflict on the basic variable x_b.
+ * If aboveUpper, then the conflict is with the constraint c : x_b <= u_b.
+ * If !aboveUpper, then the conflict is with the constraint c : x_b >= l_b.
+ *
+ * A row has the form:
+ *   -x_b sum a_i * x_i  = 0 
+ * or
+ *   -x_b + sum r y + sum q z = 0,
+ *    x_b = sum r y + sum q z
+ * where r > 0 and q < 0.
+ *
+ *
+ * If !aboveUp, we are proving ~c: x_b < l_b
+ *   g = sum r u_y + sum q l_z
+ *   x_b <= g < l_b
+ *   and ~c is entailed by x_b <= g
+ *
+ * If aboveUp, we are proving ~c : x_b > u_b
+ *   g = sum r l_y + sum q u_z
+ *   x_b >= g > u_b
+ *   and ~c is entailed by x_b >= g
+ *
+ *
+ *               | s     | c         | ~c       | u_i     | l_i
+ *   if !aboveUp | s > 0 | x >= -g/s | x < -g/s | a_i > 0 | a_i < 0
+ *   if !aboveUp | s < 0 | x <= -g/s | x > -g/s | a_i > 0 | a_i < 0
+ *   if  aboveUp | s > 0 | x <= -g/s | x > -g/s | a_i < 0 | a_i > 0
+ *   if  aboveUp | s < 0 | x >= -g/s | x < -g/s | a_i < 0 | a_i > 0
+ *
+ * Thus we treat aboveUp as multiplying the row by -1 and !aboveUp as 1
+ * for the entire row.
+ */
+ConstraintCP LinearEqualityModule::minimallyWeakConflict(bool aboveUpper, ArithVar basicVar, FarkasConflictBuilder& fcs) const {
+  Assert(!fcs.underConstruction());
+  TimerStat::CodeTimer codeTimer(d_statistics.d_weakenTime);
+
+  Debug("arith::weak") << "LinearEqualityModule::minimallyWeakConflict("
+                       << aboveUpper <<", "<< basicVar << ", ...) start" << endl;
+
+  const Rational& adjustSgn = aboveUpper ? d_negOne : d_one;
+  const DeltaRational& assignment = d_variables.getAssignment(basicVar);
+  DeltaRational surplus;
+  if(aboveUpper){
+    Assert(d_variables.hasUpperBound(basicVar));
+    Assert(assignment > d_variables.getUpperBound(basicVar));
+    surplus = assignment - d_variables.getUpperBound(basicVar);
+  }else{
+    Assert(d_variables.hasLowerBound(basicVar));
+    Assert(assignment < d_variables.getLowerBound(basicVar));
+    surplus = d_variables.getLowerBound(basicVar) - assignment;
+  }
+  
+  bool anyWeakenings = false;
+  for(Tableau::RowIterator i = d_tableau.basicRowIterator(basicVar); !i.atEnd(); ++i){
+    const Tableau::Entry& entry = *i;
+    ArithVar v = entry.getColVar();
+    const Rational& coeff = entry.getCoefficient();
+    bool weakening = false;
+    ConstraintP c = weakestExplanation(aboveUpper, surplus, v, coeff, weakening, basicVar);
+    Debug("arith::weak") << "weak : " << weakening << " "
+                         << c->assertedToTheTheory() << " "
+                         << d_variables.getAssignment(v) << " "
+                         << c << endl;
+    anyWeakenings = anyWeakenings || weakening;
+
+    fcs.addConstraint(c, coeff, adjustSgn);
+    if(basicVar == v){
+      Assert(! c->negationHasProof() );
+      fcs.makeLastConsequent();
+    }
+  }
+  Assert(fcs.consequentIsSet());
+
+  ConstraintCP conflicted = fcs.commitConflict();
+
+  ++d_statistics.d_weakeningAttempts;
+  if(anyWeakenings){
+    ++d_statistics.d_weakeningSuccesses;
+  }
+  Debug("arith::weak") << "LinearEqualityModule::minimallyWeakConflict("
+                       << aboveUpper <<", "<< basicVar << ", ...) done" << endl;
+  return conflicted;
+}
+
+ArithVar LinearEqualityModule::minVarOrder(ArithVar x, ArithVar y) const {
+  Assert(x != ARITHVAR_SENTINEL);
+  Assert(y != ARITHVAR_SENTINEL);
+  if(x <= y){
+    return x;
+  } else {
+    return y;
+  }
+}
+
+ArithVar LinearEqualityModule::minColLength(ArithVar x, ArithVar y) const {
+  Assert(x != ARITHVAR_SENTINEL);
+  Assert(y != ARITHVAR_SENTINEL);
+  Assert(!d_tableau.isBasic(x));
+  Assert(!d_tableau.isBasic(y));
+  uint32_t xLen = d_tableau.getColLength(x);
+  uint32_t yLen = d_tableau.getColLength(y);
+  if( xLen > yLen){
+     return y;
+  } else if( xLen== yLen ){
+    return minVarOrder(x,y);
+  }else{
+    return x;
+  }
+}
+
+ArithVar LinearEqualityModule::minRowLength(ArithVar x, ArithVar y) const {
+  Assert(x != ARITHVAR_SENTINEL);
+  Assert(y != ARITHVAR_SENTINEL);
+  Assert(d_tableau.isBasic(x));
+  Assert(d_tableau.isBasic(y));
+  uint32_t xLen = d_tableau.basicRowLength(x);
+  uint32_t yLen = d_tableau.basicRowLength(y);
+  if( xLen > yLen){
+     return y;
+  } else if( xLen== yLen ){
+    return minVarOrder(x,y);
+  }else{
+    return x;
+  }
+}
+
+ArithVar LinearEqualityModule::minBoundAndColLength(ArithVar x, ArithVar y) const{
+  Assert(x != ARITHVAR_SENTINEL);
+  Assert(y != ARITHVAR_SENTINEL);
+  Assert(!d_tableau.isBasic(x));
+  Assert(!d_tableau.isBasic(y));
+  if(d_variables.hasEitherBound(x) && !d_variables.hasEitherBound(y)){
+    return y;
+  }else if(!d_variables.hasEitherBound(x) && d_variables.hasEitherBound(y)){
+    return x;
+  }else {
+    return minColLength(x, y);
+  }
+}
+
+template <bool above>
+ArithVar LinearEqualityModule::selectSlack(ArithVar x_i, VarPreferenceFunction pref) const{
+  ArithVar slack = ARITHVAR_SENTINEL;
+
+  for(Tableau::RowIterator iter = d_tableau.basicRowIterator(x_i); !iter.atEnd();  ++iter){
+    const Tableau::Entry& entry = *iter;
+    ArithVar nonbasic = entry.getColVar();
+    if(nonbasic == x_i) continue;
+
+    const Rational& a_ij = entry.getCoefficient();
+    int sgn = a_ij.sgn();
+    if(isAcceptableSlack<above>(sgn, nonbasic)){
+      //If one of the above conditions is met, we have found an acceptable
+      //nonbasic variable to pivot x_i with.  We can now choose which one we
+      //prefer the most.
+      slack = (slack == ARITHVAR_SENTINEL) ? nonbasic : (this->*pref)(slack, nonbasic);
+    }
+  }
+
+  return slack;
+}
+
+const Tableau::Entry* LinearEqualityModule::selectSlackEntry(ArithVar x_i, bool above) const{
+  for(Tableau::RowIterator iter = d_tableau.basicRowIterator(x_i); !iter.atEnd();  ++iter){
+    const Tableau::Entry& entry = *iter;
+    ArithVar nonbasic = entry.getColVar();
+    if(nonbasic == x_i) continue;
+
+    const Rational& a_ij = entry.getCoefficient();
+    int sgn = a_ij.sgn();
+    if(above && isAcceptableSlack<true>(sgn, nonbasic)){
+      //If one of the above conditions is met, we have found an acceptable
+      //nonbasic variable to pivot x_i with.  We can now choose which one we
+      //prefer the most.
+      return &entry;
+    }else if(!above && isAcceptableSlack<false>(sgn, nonbasic)){
+      return &entry;
+    }
+  }
+
+  return NULL;
+}
+
+void LinearEqualityModule::startTrackingBoundCounts(){
+  Assert(!d_areTracking);
+  d_areTracking = true;
+  if(Debug.isOn("arith::tracking")){
+    debugCheckTracking();
+  }
+  Assert(d_areTracking);
+}
+
+void LinearEqualityModule::stopTrackingBoundCounts(){
+  Assert(d_areTracking);
+  d_areTracking = false;
+  if(Debug.isOn("arith::tracking")){
+    debugCheckTracking();
+  }
+  Assert(!d_areTracking);
+}
+
+
+void LinearEqualityModule::trackRowIndex(RowIndex ridx){
+  Assert(!rowIndexIsTracked(ridx));
+  BoundsInfo bi = computeRowBoundInfo(ridx, true);
+  d_btracking.set(ridx, bi);
+}
+
+BoundsInfo LinearEqualityModule::computeRowBoundInfo(RowIndex ridx, bool inQueue) const{
+  BoundsInfo bi;
+
+  Tableau::RowIterator iter = d_tableau.ridRowIterator(ridx);
+  for(; !iter.atEnd();  ++iter){
+    const Tableau::Entry& entry = *iter;
+    ArithVar v = entry.getColVar();
+    const Rational& a_ij = entry.getCoefficient();
+    bi += (d_variables.selectBoundsInfo(v, inQueue)).multiplyBySgn(a_ij.sgn());
+  }
+  return bi;
+}
+
+BoundCounts LinearEqualityModule::debugBasicAtBoundCount(ArithVar x_i) const {
+  return d_btracking[d_tableau.basicToRowIndex(x_i)].atBounds();
+}
+
+/**
+ * If the pivot described in u were performed,
+ * then the row would qualify as being either at the minimum/maximum
+ * to the non-basics being at their bounds.
+ * The minimum/maximum is determined by the direction the non-basic is changing.
+ */
+bool LinearEqualityModule::basicsAtBounds(const UpdateInfo& u) const {
+  Assert(u.describesPivot());
+
+  ArithVar nonbasic = u.nonbasic();
+  ArithVar basic = u.leaving();
+  Assert(basicIsTracked(basic));
+  int coeffSgn = u.getCoefficient().sgn();
+  int nbdir = u.nonbasicDirection();
+
+  ConstraintP c = u.limiting();
+  int toUB = (c->getType() == UpperBound ||
+              c->getType() == Equality) ? 1 : 0;
+  int toLB = (c->getType() == LowerBound ||
+              c->getType() == Equality) ? 1 : 0;
+
+  RowIndex ridx = d_tableau.basicToRowIndex(basic);
+
+  BoundCounts bcs = d_btracking[ridx].atBounds();
+  // x = c*n + \sum d*m
+  // 0 = -x + c*n + \sum d*m
+  // n = 1/c * x + -1/c * (\sum d*m)
+  BoundCounts nonb = bcs - d_variables.atBoundCounts(nonbasic).multiplyBySgn(coeffSgn);
+  nonb.addInChange(-1, d_variables.atBoundCounts(basic), BoundCounts(toLB, toUB));
+  nonb = nonb.multiplyBySgn(-coeffSgn);
+
+  uint32_t length = d_tableau.basicRowLength(basic);
+  Debug("basicsAtBounds")
+    << "bcs " << bcs
+    << "nonb " << nonb
+    << "length " << length << endl;
+  // nonb has nb excluded.
+  if(nbdir < 0){
+    return nonb.lowerBoundCount() + 1 == length;
+  }else{
+    Assert(nbdir > 0);
+    return nonb.upperBoundCount() + 1 == length;
+  }
+}
+
+bool LinearEqualityModule::nonbasicsAtLowerBounds(ArithVar basic) const {
+  Assert(basicIsTracked(basic));
+  RowIndex ridx = d_tableau.basicToRowIndex(basic);
+
+  BoundCounts bcs = d_btracking[ridx].atBounds();
+  uint32_t length = d_tableau.basicRowLength(basic);
+
+  // return true if excluding the basic is every element is at its "lowerbound"
+  // The psuedo code is:
+  //   bcs -= basic.count(basic, basic's sgn)
+  //   return bcs.lowerBoundCount() + 1 == length
+  // As basic's sign is always -1, we can pull out the pieces of the count:
+  //   bcs.lowerBoundCount() - basic.atUpperBoundInd() + 1 == length
+  // basic.atUpperBoundInd() is either 0 or 1
+  uint32_t lbc = bcs.lowerBoundCount();
+  return  (lbc == length) ||
+    (lbc + 1 == length && d_variables.cmpAssignmentUpperBound(basic) != 0);
+}
+
+bool LinearEqualityModule::nonbasicsAtUpperBounds(ArithVar basic) const {
+  Assert(basicIsTracked(basic));
+  RowIndex ridx = d_tableau.basicToRowIndex(basic);
+  BoundCounts bcs = d_btracking[ridx].atBounds();
+  uint32_t length = d_tableau.basicRowLength(basic);
+  uint32_t ubc = bcs.upperBoundCount();
+  // See the comment for nonbasicsAtLowerBounds()
+
+  return (ubc == length) ||
+    (ubc + 1 == length && d_variables.cmpAssignmentLowerBound(basic) != 0);
+}
+
+void LinearEqualityModule::trackingMultiplyRow(RowIndex ridx, int sgn) {
+  Assert(rowIndexIsTracked(ridx));
+  Assert(sgn != 0);
+  if(sgn < 0){
+    BoundsInfo& bi = d_btracking.get(ridx);
+    bi = bi.multiplyBySgn(sgn);
+  }
+}
+
+void LinearEqualityModule::trackingCoefficientChange(RowIndex ridx, ArithVar nb, int oldSgn, int currSgn){
+  Assert(oldSgn != currSgn);
+  BoundsInfo nb_inf = d_variables.boundsInfo(nb);
+
+  Assert(rowIndexIsTracked(ridx));
+
+  BoundsInfo& row_bi = d_btracking.get(ridx);
+  row_bi.addInSgn(nb_inf, oldSgn, currSgn);
+}
+
+ArithVar LinearEqualityModule::minBy(const ArithVarVec& vec, VarPreferenceFunction pf) const{
+  if(vec.empty()) {
+    return ARITHVAR_SENTINEL;
+  }else {
+    ArithVar sel = vec.front();
+    ArithVarVec::const_iterator i = vec.begin() + 1;
+    ArithVarVec::const_iterator i_end = vec.end();
+    for(; i != i_end; ++i){
+      sel = (this->*pf)(sel, *i);
+    }
+    return sel;
+  }
+}
+
+bool LinearEqualityModule::accumulateBorder(const Tableau::Entry& entry, bool ub){
+  ArithVar currBasic = d_tableau.rowIndexToBasic(entry.getRowIndex());
+
+  Assert(basicIsTracked(currBasic));
+
+  ConstraintP bound = ub ?
+    d_variables.getUpperBoundConstraint(currBasic):
+    d_variables.getLowerBoundConstraint(currBasic);
+
+  if(bound == NullConstraint){ return false; }
+  Assert(bound != NullConstraint);
+
+  const Rational& coeff = entry.getCoefficient();
+
+  const DeltaRational& assignment = d_variables.getAssignment(currBasic);
+  DeltaRational toBound = bound->getValue() - assignment;
+  DeltaRational nbDiff = toBound/coeff;
+
+  // if ub
+  // if toUB >= 0
+  // then ub >= currBasic
+  //   if sgn > 0,
+  //   then diff >= 0, so nb must increase for G
+  //   else diff <= 0, so nb must decrease for G
+  // else ub < currBasic
+  //   if sgn > 0,
+  //   then diff < 0, so nb must decrease for G
+  //   else diff > 0, so nb must increase for G
+
+  int diffSgn = nbDiff.sgn();
+
+  if(diffSgn != 0 && willBeInConflictAfterPivot(entry, nbDiff, ub)){
+    return true;
+  }else{
+    bool areFixing = ub ? (toBound.sgn() < 0 ) : (toBound.sgn() > 0);
+    Border border(bound, nbDiff, areFixing, &entry, ub);
+    bool increasing =
+      (diffSgn > 0) ||
+      (diffSgn == 0 && ((coeff.sgn() > 0) == ub));
+
+    // assume diffSgn == 0
+    // if coeff > 0,
+    //   if ub, inc
+    //   else, dec
+    // else coeff < 0
+    //   if ub, dec
+    //   else, inc
+
+    if(increasing){
+      Debug("handleBorders") << "push back increasing " << border << endl;
+      d_increasing.push_back(border);
+    }else{
+      Debug("handleBorders") << "push back decreasing " << border << endl;
+      d_decreasing.push_back(border);
+    }
+    return false;
+  }
+}
+
+bool LinearEqualityModule::willBeInConflictAfterPivot(const Tableau::Entry& entry, const DeltaRational& nbDiff, bool bToUB) const{
+  int nbSgn = nbDiff.sgn();
+  Assert(nbSgn != 0);
+
+  if(nbSgn > 0){
+    if(d_upperBoundDifference.nothing() || nbDiff <= d_upperBoundDifference){
+      return false;
+    }
+  }else{
+    if(d_lowerBoundDifference.nothing() || nbDiff >= d_lowerBoundDifference){
+      return false;
+    }
+  }
+
+  // Assume past this point, nb will be in error if this pivot is done
+  ArithVar nb = entry.getColVar();
+  RowIndex ridx = entry.getRowIndex();
+  ArithVar basic = d_tableau.rowIndexToBasic(ridx);
+  Assert(rowIndexIsTracked(ridx));
+  int coeffSgn = entry.getCoefficient().sgn();
+
+
+  // if bToUB, then basic is going to be set to its upperbound
+  // if not bToUB, then basic is going to be set to its lowerbound
+
+  // Different steps of solving for this:
+  // 1) y = a * x + \sum b * z
+  // 2) -a * x = -y + \sum b * z
+  // 3) x = (-1/a) * ( -y + \sum b * z)
+
+  BoundCounts bc = d_btracking[ridx].atBounds();
+
+  // 1) y = a * x + \sum b * z
+  // Get bc(\sum b * z)
+  BoundCounts sumOnly = bc - d_variables.atBoundCounts(nb).multiplyBySgn(coeffSgn);
+
+  // y's bounds in the proposed model
+  int yWillBeAtUb = (bToUB || d_variables.boundsAreEqual(basic)) ? 1 : 0;
+  int yWillBeAtLb = (!bToUB || d_variables.boundsAreEqual(basic)) ? 1 : 0;
+  BoundCounts ysBounds(yWillBeAtLb, yWillBeAtUb);
+
+  // 2) -a * x = -y + \sum b * z
+  // Get bc(-y + \sum b * z)
+  sumOnly.addInChange(-1, d_variables.atBoundCounts(basic), ysBounds);
+
+  // 3) x = (-1/a) * ( -y + \sum b * z)
+  // Get bc((-1/a) * ( -y + \sum b * z))
+  BoundCounts xsBoundsAfterPivot = sumOnly.multiplyBySgn(-coeffSgn);
+
+  uint32_t length = d_tableau.basicRowLength(basic);
+  if(nbSgn > 0){
+    // Only check for the upper bound being violated
+    return xsBoundsAfterPivot.lowerBoundCount() + 1 == length;
+  }else{
+    // Only check for the lower bound being violated
+    return xsBoundsAfterPivot.upperBoundCount() + 1 == length;
+  }
+}
+
+UpdateInfo LinearEqualityModule::mkConflictUpdate(const Tableau::Entry& entry, bool ub) const{
+  ArithVar currBasic = d_tableau.rowIndexToBasic(entry.getRowIndex());
+  ArithVar nb = entry.getColVar();
+
+  ConstraintP bound = ub ?
+    d_variables.getUpperBoundConstraint(currBasic):
+    d_variables.getLowerBoundConstraint(currBasic);
+
+
+  const Rational& coeff = entry.getCoefficient();
+  const DeltaRational& assignment = d_variables.getAssignment(currBasic);
+  DeltaRational toBound = bound->getValue() - assignment;
+  DeltaRational nbDiff = toBound/coeff;
+
+  return UpdateInfo::conflict(nb, nbDiff, coeff, bound);
+}
+
+UpdateInfo LinearEqualityModule::speculativeUpdate(ArithVar nb, const Rational& focusCoeff, UpdatePreferenceFunction pref){
+  Assert(d_increasing.empty());
+  Assert(d_decreasing.empty());
+  Assert(d_lowerBoundDifference.nothing());
+  Assert(d_upperBoundDifference.nothing());
+
+  int focusCoeffSgn = focusCoeff.sgn();
+
+  static int instance = 0;
+  ++instance;
+  Debug("speculativeUpdate") << "speculativeUpdate " << instance << endl;
+  Debug("speculativeUpdate") << "nb " << nb << endl;
+  Debug("speculativeUpdate") << "focusCoeff " << focusCoeff << endl;
+
+  if(d_variables.hasUpperBound(nb)){
+    ConstraintP ub = d_variables.getUpperBoundConstraint(nb);
+    d_upperBoundDifference = ub->getValue() - d_variables.getAssignment(nb);
+    Border border(ub, d_upperBoundDifference, false, NULL, true);
+    Debug("handleBorders") << "push back increasing " << border << endl;
+    d_increasing.push_back(border);
+  }
+  if(d_variables.hasLowerBound(nb)){
+    ConstraintP lb = d_variables.getLowerBoundConstraint(nb);
+    d_lowerBoundDifference = lb->getValue() - d_variables.getAssignment(nb);
+    Border border(lb, d_lowerBoundDifference, false, NULL, false);
+    Debug("handleBorders") << "push back decreasing " << border << endl;
+    d_decreasing.push_back(border);
+  }
+
+  Tableau::ColIterator colIter = d_tableau.colIterator(nb);
+  for(; !colIter.atEnd(); ++colIter){
+    const Tableau::Entry& entry = *colIter;
+    Assert(entry.getColVar() == nb);
+
+    if(accumulateBorder(entry, true)){
+      clearSpeculative();
+      return mkConflictUpdate(entry, true);
+    }
+    if(accumulateBorder(entry, false)){
+      clearSpeculative();
+      return mkConflictUpdate(entry, false);
+    }
+  }
+
+  UpdateInfo selected;
+  BorderHeap& withSgn = focusCoeffSgn > 0 ? d_increasing : d_decreasing;
+  BorderHeap& againstSgn = focusCoeffSgn > 0 ? d_decreasing : d_increasing;
+
+  handleBorders(selected, nb, focusCoeff, withSgn, 0, pref);
+  int m = 1 - selected.errorsChangeSafe(0);
+  handleBorders(selected, nb, focusCoeff, againstSgn, m, pref);
+
+  clearSpeculative();
+  return selected;
+}
+
+void LinearEqualityModule::clearSpeculative(){
+  // clear everything away
+  d_increasing.clear();
+  d_decreasing.clear();
+  d_lowerBoundDifference.clear();
+  d_upperBoundDifference.clear();
+}
+
+void LinearEqualityModule::handleBorders(UpdateInfo& selected, ArithVar nb, const Rational& focusCoeff, BorderHeap& heap, int minimumFixes, UpdatePreferenceFunction pref){
+  Assert(minimumFixes >= 0);
+
+  // The values popped off of the heap
+  // should be popped with the values closest to 0
+  // being first and larger in absolute value last
+
+
+  int fixesRemaining = heap.possibleFixes();
+
+  Debug("handleBorders")
+    << "handleBorders "
+    << "nb " << nb
+    << "fc " << focusCoeff
+    << "h.e " << heap.empty()
+    << "h.dir " << heap.direction()
+    << "h.rem " << fixesRemaining
+    << "h.0s " << heap.numZeroes()
+    << "min " << minimumFixes
+    << endl;
+
+  if(heap.empty()){
+    // if the heap is empty, return
+    return;
+  }
+
+  bool zeroesWillDominate = fixesRemaining - heap.numZeroes() < minimumFixes;
+
+  // can the number of fixes ever exceed the minimum?
+  // no more than the number of possible fixes can be fixed in total
+  // nothing can be fixed before the zeroes are taken care of
+  if(minimumFixes > 0 && zeroesWillDominate){
+    return;
+  }
+
+
+  int negErrorChange = 0;
+  int nbDir = heap.direction();
+
+  // points at the beginning of the heap
+  if(zeroesWillDominate){
+    heap.dropNonZeroes();
+  }
+  heap.make_heap();
+
+
+  // pretend like the previous block had a value of zero.
+  // The block that actually has a value of 0 must handle this.
+  const DeltaRational zero(0);
+  const DeltaRational* prevBlockValue = &zero;
+
+  /** The coefficient changes as the value crosses border. */
+  Rational effectiveCoefficient = focusCoeff;
+
+  /* Keeps track of the change to the value of the focus function.*/
+  DeltaRational totalFocusChange(0);
+
+  const int focusCoeffSgn = focusCoeff.sgn();
+
+  while(heap.more()  &&
+        (fixesRemaining + negErrorChange > minimumFixes ||
+         (fixesRemaining + negErrorChange == minimumFixes &&
+          effectiveCoefficient.sgn() == focusCoeffSgn))){
+    // There are more elements &&
+    // we can either fix at least 1 more variable in the error function
+    // or we can improve the error function
+
+
+    int brokenInBlock = 0;
+    BorderVec::const_iterator endBlock = heap.end();
+
+    pop_block(heap, brokenInBlock, fixesRemaining, negErrorChange);
+
+    // if endVec == beginVec, block starts there
+    // other wise, block starts at endVec
+    BorderVec::const_iterator startBlock
+      = heap.more() ? heap.end() : heap.begin();
+
+    const DeltaRational& blockValue = (*startBlock).d_diff;
+
+    // if decreasing
+    // blockValue < prevBlockValue
+    // diff.sgn() = -1
+    DeltaRational diff = blockValue - (*prevBlockValue);
+    DeltaRational blockChangeToFocus =  diff * effectiveCoefficient;
+    totalFocusChange += blockChangeToFocus;
+
+    Debug("handleBorders")
+      << "blockValue " << (blockValue)
+      << "diff " << diff
+      << "blockChangeToFocus " << totalFocusChange
+      << "blockChangeToFocus " << totalFocusChange
+      << "negErrorChange " << negErrorChange
+      << "brokenInBlock " << brokenInBlock
+      << "fixesRemaining " << fixesRemaining
+      << endl;
+
+    int currFocusChangeSgn = totalFocusChange.sgn();
+    for(BorderVec::const_iterator i = startBlock; i != endBlock; ++i){
+      const Border& b = *i;
+
+      Debug("handleBorders") << b << endl;
+
+      bool makesImprovement = negErrorChange > 0 ||
+        (negErrorChange == 0  && currFocusChangeSgn > 0);
+
+      if(!makesImprovement){
+        if(b.ownBorder() || minimumFixes > 0){
+          continue;
+        }
+      }
+
+      UpdateInfo proposal(nb, nbDir);
+      if(b.ownBorder()){
+        proposal.witnessedUpdate(b.d_diff, b.d_bound, -negErrorChange, currFocusChangeSgn);
+      }else{
+        proposal.update(b.d_diff, b.getCoefficient(), b.d_bound, -negErrorChange, currFocusChangeSgn);
+      }
+
+      if(selected.unbounded() || (this->*pref)(selected, proposal)){
+        selected = proposal;
+      }
+    }
+
+    effectiveCoefficient += updateCoefficient(startBlock, endBlock);
+    prevBlockValue = &blockValue;
+    negErrorChange -= brokenInBlock;
+  }
+}
+
+Rational LinearEqualityModule::updateCoefficient(BorderVec::const_iterator startBlock, BorderVec::const_iterator endBlock){
+  //update coefficient
+  Rational changeToCoefficient(0);
+  for(BorderVec::const_iterator i = startBlock; i != endBlock; ++i){
+    const Border& curr = *i;
+    if(curr.ownBorder()){// breaking its own bound
+      if(curr.d_upperbound){
+        changeToCoefficient -= 1;
+      }else{
+        changeToCoefficient += 1;
+      }
+    }else{
+      const Rational& coeff = curr.d_entry->getCoefficient();
+      if(curr.d_areFixing){
+        if(curr.d_upperbound){// fixing an upper bound
+          changeToCoefficient += coeff;
+        }else{// fixing a lower bound
+          changeToCoefficient -= coeff;
+        }
+      }else{
+        if(curr.d_upperbound){// breaking an upper bound
+          changeToCoefficient -= coeff;
+        }else{
+          // breaking a lower bound
+          changeToCoefficient += coeff;
+        }
+      }
+    }
+  }
+  return changeToCoefficient;
+}
+
+void LinearEqualityModule::pop_block(BorderHeap& heap, int& brokenInBlock, int& fixesRemaining, int& negErrorChange){
+  Assert(heap.more());
+
+  if(heap.top().d_areFixing){
+    fixesRemaining--;
+    negErrorChange++;
+  }else{
+    brokenInBlock++;
+  }
+  heap.pop_heap();
+  const DeltaRational& blockValue = (*heap.end()).d_diff;
+
+  while(heap.more()){
+    const Border& top = heap.top();
+    if(blockValue == top.d_diff){
+      // belongs to the block
+      if(top.d_areFixing){
+        fixesRemaining--;
+        negErrorChange++;
+      }else{
+        brokenInBlock++;
+      }
+      heap.pop_heap();
+    }else{
+      // does not belong to the block
+      Assert((heap.direction() > 0) ?
+             (blockValue < top.d_diff) : (blockValue > top.d_diff));
+      break;
+    }
+  }
+}
+
+void LinearEqualityModule::substitutePlusTimesConstant(ArithVar to, ArithVar from, const Rational& mult){
+  d_tableau.substitutePlusTimesConstant(to, from, mult, d_trackCallback);
+}
+void LinearEqualityModule::directlyAddToCoefficient(ArithVar row, ArithVar col, const Rational& mult){
+  d_tableau.directlyAddToCoefficient(row, col, mult, d_trackCallback);
+}
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/linear_equality.h b/src/theory/arith/linear_equality.h
new file mode 100644
index 0000000..aa6b10c
--- /dev/null
+++ b/src/theory/arith/linear_equality.h
@@ -0,0 +1,756 @@
+/*********************                                                        */
+/*! \file linear_equality.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Clark Barrett, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This module maintains the relationship between a Tableau and PartialModel.
+ **
+ ** This shares with the theory a Tableau, and a PartialModel that:
+ **  - satisfies the equalities in the Tableau, and
+ **  - the assignment for the non-basic variables satisfies their bounds.
+ ** This maintains the relationship needed by the SimplexDecisionProcedure.
+ **
+ ** In the language of Simplex for DPLL(T), this provides:
+ ** - update()
+ ** - pivotAndUpdate()
+ **
+ ** This class also provides utility functions that require
+ ** using both the Tableau and PartialModel.
+ **/
+
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "options/arith_options.h"
+#include "theory/arith/arithvar.h"
+#include "theory/arith/constraint_forward.h"
+#include "theory/arith/delta_rational.h"
+#include "theory/arith/partial_model.h"
+#include "theory/arith/simplex_update.h"
+#include "theory/arith/tableau.h"
+#include "util/maybe.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+struct Border{
+  // The constraint for the border
+  ConstraintP d_bound;
+
+  // The change to the nonbasic to reach the border
+  DeltaRational d_diff;
+
+  // Is reach this value fixing the constraint
+  // or is going past this value hurting the constraint
+  bool d_areFixing;
+
+  // Entry into the tableau
+  const Tableau::Entry* d_entry;
+
+  // Was this an upper bound or a lower bound?
+  bool d_upperbound;
+
+  Border():
+    d_bound(NullConstraint) // ignore the other values
+  {}
+
+  Border(ConstraintP l, const DeltaRational& diff, bool areFixing, const Tableau::Entry* en, bool ub):
+    d_bound(l), d_diff(diff), d_areFixing(areFixing), d_entry(en),  d_upperbound(ub)
+  {}
+
+  Border(ConstraintP l, const DeltaRational& diff, bool areFixing, bool ub):
+    d_bound(l), d_diff(diff), d_areFixing(areFixing), d_entry(NULL),  d_upperbound(ub)
+  {}
+  bool operator<(const Border& other) const{
+    return d_diff < other.d_diff;
+  }
+
+  /** d_lim is the nonbasic variable's own bound. */
+  bool ownBorder() const { return d_entry == NULL; }
+
+  bool isZero() const { return d_diff.sgn() == 0; }
+  static bool nonZero(const Border& b) { return !b.isZero(); }
+
+  const Rational& getCoefficient() const {
+    Assert(!ownBorder());
+    return d_entry->getCoefficient();
+  }
+  void output(std::ostream& out) const;
+};
+
+inline std::ostream& operator<<(std::ostream& out, const Border& b){
+  b.output(out);
+  return out;
+}
+
+typedef std::vector<Border> BorderVec;
+
+class BorderHeap {
+  const int d_dir;
+
+  class BorderHeapCmp {
+  private:
+    int d_nbDirection;
+  public:
+    BorderHeapCmp(int dir): d_nbDirection(dir){}
+    bool operator()(const Border& a, const Border& b) const{
+      if(d_nbDirection > 0){
+        // if nb is increasing,
+        //  this needs to act like a max
+        //  in order to have a min heap
+        return b < a;
+      }else{
+        // if nb is decreasing,
+        //  this needs to act like a min
+        //  in order to have a max heap
+        return a < b;
+      }
+    }
+  };
+  const BorderHeapCmp d_cmp;
+
+  BorderVec d_vec;
+
+  BorderVec::iterator d_begin;
+
+  /**
+   * Once this is initialized the top of the heap will always
+   * be at d_end - 1
+   */
+  BorderVec::iterator d_end;
+
+  int d_possibleFixes;
+  int d_numZeroes;
+
+public:
+  BorderHeap(int dir)
+  : d_dir(dir), d_cmp(dir), d_possibleFixes(0), d_numZeroes(0)
+  {}
+
+  void push_back(const Border& b){
+    d_vec.push_back(b);
+    if(b.d_areFixing){
+      d_possibleFixes++;
+    }
+    if(b.d_diff.sgn() == 0){
+      d_numZeroes++;
+    }
+  }
+
+  int numZeroes() const { return d_numZeroes; }
+  int possibleFixes() const { return d_possibleFixes; }
+  int direction() const { return d_dir; }
+
+  void make_heap(){
+    d_begin = d_vec.begin();
+    d_end = d_vec.end();
+    std::make_heap(d_begin, d_end, d_cmp);
+  }
+
+  void dropNonZeroes(){
+    d_vec.erase(std::remove_if(d_vec.begin(), d_vec.end(), &Border::nonZero),
+                d_vec.end());
+  }
+
+  const Border& top() const {
+    Assert(more());
+    return *d_begin;
+  }
+  void pop_heap(){
+    Assert(more());
+
+    std::pop_heap(d_begin, d_end, d_cmp);
+    --d_end;
+  }
+
+  BorderVec::const_iterator end() const{
+    return BorderVec::const_iterator(d_end);
+  }
+  BorderVec::const_iterator begin() const{
+    return BorderVec::const_iterator(d_begin);
+  }
+
+  inline bool more() const{ return d_begin != d_end; }
+
+  inline bool empty() const{ return d_vec.empty(); }
+
+  void clear(){
+    d_possibleFixes = 0;
+    d_numZeroes = 0;
+    d_vec.clear();
+  }
+};
+
+
+class LinearEqualityModule {
+public:
+  typedef ArithVar (LinearEqualityModule::*VarPreferenceFunction)(ArithVar, ArithVar) const;
+
+
+  typedef bool (LinearEqualityModule::*UpdatePreferenceFunction)(const UpdateInfo&, const UpdateInfo&) const;
+
+  
+private:
+  /**
+   * Manages information about the assignment and upper and lower bounds on the
+   * variables.
+   */
+  ArithVariables& d_variables;
+
+  /** Reference to the Tableau to operate upon. */
+  Tableau& d_tableau;
+
+  /** Called whenever the value of a basic variable is updated. */
+  BasicVarModelUpdateCallBack d_basicVariableUpdates;
+
+  BorderHeap d_increasing;
+  BorderHeap d_decreasing;
+  Maybe<DeltaRational> d_upperBoundDifference;
+  Maybe<DeltaRational> d_lowerBoundDifference;
+
+  Rational d_one;
+  Rational d_negOne;
+public:
+
+  /**
+   * Initializes a LinearEqualityModule with a partial model, a tableau,
+   * and a callback function for when basic variables update their values.
+   */
+  LinearEqualityModule(ArithVariables& vars, Tableau& t, BoundInfoMap& boundTracking, BasicVarModelUpdateCallBack f);
+
+  /**
+   * Updates the assignment of a nonbasic variable x_i to v.
+   * Also updates the assignment of basic variables accordingly.
+   */
+  void update(ArithVar x_i, const DeltaRational& v){
+    if(d_areTracking){
+      updateTracked(x_i,v);
+    }else{
+      updateUntracked(x_i,v);
+    }
+  }
+
+  /** Specialization of update if the module is not tracking yet (for Assert*). */
+  void updateUntracked(ArithVar x_i, const DeltaRational& v);
+
+  /** Specialization of update if the module is not tracking yet (for Simplex). */
+  void updateTracked(ArithVar x_i, const DeltaRational& v);
+
+
+  /**
+   * Updates the value of a basic variable x_i to v,
+   * 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, const DeltaRational& v);
+
+  ArithVariables& getVariables() const{ return d_variables; }
+  Tableau& getTableau() const{ return d_tableau; }
+
+  /**
+   * Updates every non-basic to reflect the assignment in many.
+   * For use with ApproximateSimplex.
+   */
+  void updateMany(const DenseMap<DeltaRational>& many);
+  void forceNewBasis(const DenseSet& newBasis);
+  void applySolution(const DenseSet& newBasis, const DenseMap<DeltaRational>& newValues);
+
+
+  /**
+   * Returns a pointer to the first Tableau entry on the row ridx that does not
+   * have an either a lower bound/upper bound for proving a bound on skip.
+   * The variable skip is always excluded. Returns NULL if there is no such element.
+   *
+   * If skip == ARITHVAR_SENTINEL, this is equivalent to considering the whole row.
+   */
+  const Tableau::Entry* rowLacksBound(RowIndex ridx, bool upperBound, ArithVar skip);
+
+
+  void startTrackingBoundCounts();
+  void stopTrackingBoundCounts();
+
+
+  void includeBoundUpdate(ArithVar nb, const BoundsInfo& prev);
+
+
+  uint32_t updateProduct(const UpdateInfo& inf) const;
+
+  inline bool minNonBasicVarOrder(const UpdateInfo& a, const UpdateInfo& b) const{
+    return a.nonbasic() >= b.nonbasic();
+  }
+
+  /**
+   * Prefer the update that touch the fewest entries in the matrix.
+   *
+   * The intuition is that this operation will be cheaper.
+   * This strongly biases the system towards updates instead of pivots.
+   */
+  inline bool minProduct(const UpdateInfo& a, const UpdateInfo& b) const{
+    uint32_t aprod = updateProduct(a);
+    uint32_t bprod = updateProduct(b);
+
+    if(aprod == bprod){
+      return minNonBasicVarOrder(a,b);
+    }else{
+      return aprod > bprod;
+    }
+  }
+  inline bool constrainedMin(const UpdateInfo& a, const UpdateInfo& b) const{
+    if(a.describesPivot() && b.describesPivot()){
+      bool aAtBounds = basicsAtBounds(a);
+      bool bAtBounds = basicsAtBounds(b);
+      if(aAtBounds != bAtBounds){
+        return bAtBounds;
+      }
+    }
+    return minProduct(a,b);
+  }
+
+  /**
+   * If both a and b are pivots, prefer the pivot with the leaving variables that has equal bounds.
+   * The intuition is that such variables will be less likely to lead to future problems.
+   */
+  inline bool preferFrozen(const UpdateInfo& a, const UpdateInfo& b) const {
+    if(a.describesPivot() && b.describesPivot()){
+      bool aFrozen = d_variables.boundsAreEqual(a.leaving());
+      bool bFrozen = d_variables.boundsAreEqual(b.leaving());
+
+      if(aFrozen != bFrozen){
+        return bFrozen;
+      }
+    }
+    return constrainedMin(a,b);
+  }
+
+  /**
+   * Prefer pivots with entering variables that do not have bounds.
+   * The intuition is that such variables will be less likely to lead to future problems.
+   */
+  bool preferNeitherBound(const UpdateInfo& a, const UpdateInfo& b) const {
+    if(d_variables.hasEitherBound(a.nonbasic()) == d_variables.hasEitherBound(b.nonbasic())){
+      return preferFrozen(a,b);
+    }else{
+      return d_variables.hasEitherBound(a.nonbasic());
+    }
+  }
+
+  bool modifiedBlands(const UpdateInfo& a, const UpdateInfo& b) const {
+    Assert(a.focusDirection() == 0 && b.focusDirection() == 0);
+    Assert(a.describesPivot());
+    Assert(b.describesPivot());
+    if(a.nonbasic() == b.nonbasic()){
+      bool aIsZero = a.nonbasicDelta().sgn() == 0;
+      bool bIsZero = b.nonbasicDelta().sgn() == 0;
+
+      if((aIsZero || bIsZero) && (!aIsZero || !bIsZero)){
+        return bIsZero;
+      }else{
+        return a.leaving() >= b.leaving();
+      }
+    }else{
+      return a.nonbasic() > b.nonbasic();
+    }
+  }
+
+  template <bool heuristic>
+  bool preferWitness(const UpdateInfo& a, const UpdateInfo& b) const{
+    WitnessImprovement aImp = a.getWitness(!heuristic);
+    WitnessImprovement bImp = b.getWitness(!heuristic);
+
+    if(aImp == bImp){
+      switch(aImp){
+      case ConflictFound:
+        return preferNeitherBound(a,b);
+      case ErrorDropped:
+        if(a.errorsChange() == b.errorsChange()){
+          return preferNeitherBound(a,b);
+        }else{
+          return a.errorsChange() > b.errorsChange();
+        }
+      case FocusImproved:
+        return preferNeitherBound(a,b);
+      case BlandsDegenerate:
+        Assert(a.describesPivot());
+        Assert(b.describesPivot());
+        Assert(a.focusDirection() == 0 && b.focusDirection() == 0);
+        return modifiedBlands(a,b);
+      case HeuristicDegenerate:
+        Assert(a.describesPivot());
+        Assert(b.describesPivot());
+        Assert(a.focusDirection() == 0 && b.focusDirection() == 0);
+        return preferNeitherBound(a,b);
+      case AntiProductive:
+        return minNonBasicVarOrder(a, b);
+      // Not valid responses
+      case Degenerate:
+      case FocusShrank:
+        Unreachable();
+      }
+      Unreachable();
+    }else{
+      return aImp > bImp;
+    }
+  }
+
+private:
+
+  /**
+   * This maps each row index to its relevant bounds info.
+   * This tracks the count for how many variables on a row have bounds
+   * and how many are assigned at their bounds.
+   */
+  BoundInfoMap& d_btracking;
+  bool d_areTracking;
+
+public:
+  /**
+   * The constraint on a basic variable b is implied by the constraints
+   * on its row.  This is a wrapper for propagateRow().
+   */
+  void propagateBasicFromRow(ConstraintP c);
+
+  /**
+   * Let v be the variable for the constraint c.
+   * Exports either the explanation of an upperbound or a lower bound
+   * of v using the other variables in the row.
+   *
+   * If farkas != RationalVectorPSentinel, this function additionally
+   * stores the farkas coefficients of the constraints stored in into.
+   * Position 0 is the coefficient of v.
+   * Position i > 0, corresponds to the order of the other constraints.
+   */
+  void propagateRow(ConstraintCPVec& into
+                    , RowIndex ridx
+                    , bool rowUp
+                    , ConstraintP c
+                    , RationalVectorP farkas);
+
+  /**
+   * Computes the value of a basic variable using the assignments
+   * of the values of the variables in the basic variable's row tableau.
+   * This can compute the value using either:
+   * - the the current assignment (useSafe=false) or
+   * - the safe assignment (useSafe = true).
+   */
+  DeltaRational computeRowValue(ArithVar x, bool useSafe) const;
+
+  /**
+   * A PreferenceFunction takes a const ref to the SimplexDecisionProcedure,
+   * and 2 ArithVar variables and returns one of the ArithVar variables
+   * potentially using the internals of the SimplexDecisionProcedure.
+   */
+
+  ArithVar noPreference(ArithVar x, ArithVar y) const{
+    return x;
+  }
+
+  /**
+   * minVarOrder is a PreferenceFunction for selecting the smaller of the 2
+   * ArithVars. This PreferenceFunction is used during the VarOrder stage of
+   * findModel.
+   */
+  ArithVar minVarOrder(ArithVar x, ArithVar y) const;
+
+  /**
+   * minColLength is a PreferenceFunction for selecting the variable with the
+   * smaller row count in the tableau.
+   *
+   * This is a heuristic rule and should not be used during the VarOrder
+   * stage of findModel.
+   */
+  ArithVar minColLength(ArithVar x, ArithVar y) const;
+
+  /**
+   * minRowLength is a PreferenceFunction for selecting the variable with the
+   * smaller row count in the tableau.
+   *
+   * This is a heuristic rule and should not be used during the VarOrder
+   * stage of findModel.
+   */
+  ArithVar minRowLength(ArithVar x, ArithVar y) const;
+
+  /**
+   * minBoundAndRowCount is a PreferenceFunction for preferring a variable
+   * without an asserted bound over variables with an asserted bound.
+   * If both have bounds or both do not have bounds,
+   * the rule falls back to minRowCount(...).
+   *
+   * This is a heuristic rule and should not be used during the VarOrder
+   * stage of findModel.
+   */
+  ArithVar minBoundAndColLength(ArithVar x, ArithVar y) const;
+
+
+  template <bool above>
+  inline bool isAcceptableSlack(int sgn, ArithVar nonbasic) const {
+    return
+      ( above && sgn < 0 && d_variables.strictlyBelowUpperBound(nonbasic)) ||
+      ( above && sgn > 0 && d_variables.strictlyAboveLowerBound(nonbasic)) ||
+      (!above && sgn > 0 && d_variables.strictlyBelowUpperBound(nonbasic)) ||
+      (!above && sgn < 0 && d_variables.strictlyAboveLowerBound(nonbasic));
+  }
+
+  /**
+   * Given the basic variable x_i,
+   * this function finds the smallest nonbasic variable x_j in the row of x_i
+   * in the tableau that can "take up the slack" to let x_i satisfy its bounds.
+   * This returns ARITHVAR_SENTINEL if none exists.
+   *
+   * More formally one of the following conditions must be satisfied:
+   * -  lowerBound && a_ij < 0 && assignment(x_j) < upperbound(x_j)
+   * -  lowerBound && a_ij > 0 && assignment(x_j) > lowerbound(x_j)
+   * - !lowerBound && a_ij > 0 && assignment(x_j) < upperbound(x_j)
+   * - !lowerBound && a_ij < 0 && assignment(x_j) > lowerbound(x_j)
+   *
+   */
+  template <bool lowerBound>  ArithVar selectSlack(ArithVar x_i, VarPreferenceFunction pf) const;
+  ArithVar selectSlackLowerBound(ArithVar x_i, VarPreferenceFunction pf) const {
+    return selectSlack<true>(x_i, pf);
+  }
+  ArithVar selectSlackUpperBound(ArithVar x_i, VarPreferenceFunction pf) const {
+    return selectSlack<false>(x_i, pf);
+  }
+
+  const Tableau::Entry* selectSlackEntry(ArithVar x_i, bool above) const;
+
+  inline bool rowIndexIsTracked(RowIndex ridx) const {
+    return d_btracking.isKey(ridx);
+  }
+  inline bool basicIsTracked(ArithVar v) const {
+    return rowIndexIsTracked(d_tableau.basicToRowIndex(v));
+  }
+  void trackRowIndex(RowIndex ridx);
+  void stopTrackingRowIndex(RowIndex ridx){
+    Assert(rowIndexIsTracked(ridx));
+    d_btracking.remove(ridx);
+  }
+
+  /**
+   * If the pivot described in u were performed,
+   * then the row would qualify as being either at the minimum/maximum
+   * to the non-basics being at their bounds.
+   * The minimum/maximum is determined by the direction the non-basic is changing.
+   */
+  bool basicsAtBounds(const UpdateInfo& u) const;
+
+private:
+
+  /**
+   * Recomputes the bound info for a row using either the information
+   * in the bounds queue or the current information.
+   * O(row length of ridx)
+   */
+  BoundsInfo computeRowBoundInfo(RowIndex ridx, bool inQueue) const;
+
+public:
+  /** Debug only routine. */
+  BoundCounts debugBasicAtBoundCount(ArithVar x_i) const;
+
+  /** Track the effect of the change of coefficient for bound counting. */
+  void trackingCoefficientChange(RowIndex ridx, ArithVar nb, int oldSgn, int currSgn);
+
+  /** Track the effect of multiplying a row by a sign for bound counting. */
+  void trackingMultiplyRow(RowIndex ridx, int sgn);
+
+  /** Count for how many on a row have *an* upper/lower bounds. */
+  BoundCounts hasBoundCount(RowIndex ri) const {
+    Assert(d_variables.boundsQueueEmpty());
+    return d_btracking[ri].hasBounds();
+  }
+
+  /**
+   * Are there any non-basics on x_i's row that are not at
+   * their respective lower bounds (mod sgns).
+   * O(1) time due to the atBound() count.
+   */
+  bool nonbasicsAtLowerBounds(ArithVar x_i) const;
+
+  /**
+   * Are there any non-basics on x_i's row that are not at
+   * their respective upper bounds (mod sgns).
+   * O(1) time due to the atBound() count.
+   */
+  bool nonbasicsAtUpperBounds(ArithVar x_i) const;
+
+private:
+  class TrackingCallback : public CoefficientChangeCallback {
+  private:
+    LinearEqualityModule* d_linEq;
+  public:
+    TrackingCallback(LinearEqualityModule* le) : d_linEq(le) {}
+    void update(RowIndex ridx, ArithVar nb, int oldSgn, int currSgn){
+      d_linEq->trackingCoefficientChange(ridx, nb, oldSgn, currSgn);
+    }
+    void multiplyRow(RowIndex ridx, int sgn){
+      d_linEq->trackingMultiplyRow(ridx, sgn);
+    }
+    bool canUseRow(RowIndex ridx) const {
+      ArithVar basic = d_linEq->getTableau().rowIndexToBasic(ridx);
+      return d_linEq->basicIsTracked(basic);
+    }
+ } d_trackCallback;
+
+  /**
+   * Selects the constraint for the variable v on the row for basic
+   * with the weakest possible constraint that is consistent with the surplus
+   * surplus.
+   */
+  ConstraintP weakestExplanation(bool aboveUpper, DeltaRational& surplus, ArithVar v,
+                                const Rational& coeff, bool& anyWeakening, ArithVar basic) const;
+
+public:
+  /**
+   * Constructs a minimally weak conflict for the basic variable basicVar.
+   *
+   * Returns a constraint that is now in conflict.
+   */
+  ConstraintCP minimallyWeakConflict(bool aboveUpper, ArithVar basicVar, FarkasConflictBuilder& rc) const;
+
+  /**
+   * Given a basic variable that is know to have a conflict on it,
+   * construct and return a conflict.
+   * Follows section 4.2 in the CAV06 paper.
+   */
+  inline ConstraintCP generateConflictAboveUpperBound(ArithVar conflictVar, FarkasConflictBuilder& rc) const {
+    return minimallyWeakConflict(true, conflictVar, rc);
+  }
+
+  inline ConstraintCP generateConflictBelowLowerBound(ArithVar conflictVar, FarkasConflictBuilder& rc) const {
+    return minimallyWeakConflict(false, conflictVar, rc);
+  }
+
+  /**
+   * Computes the sum of the upper/lower bound of row.
+   * The variable skip is not included in the sum.
+   */
+  DeltaRational computeRowBound(RowIndex ridx, bool rowUb, ArithVar skip) const;
+
+public:
+  void substitutePlusTimesConstant(ArithVar to, ArithVar from, const Rational& mult);
+  void directlyAddToCoefficient(ArithVar row, ArithVar col, const Rational& mult);
+
+
+  /**
+   * Checks to make sure the assignment is consistent with the tableau.
+   * This code is for debugging.
+   */
+  void debugCheckTableau();
+
+  void debugCheckTracking();
+
+  /** Debugging information for a pivot. */
+  void debugPivot(ArithVar x_i, ArithVar x_j);
+
+  /** Checks the tableau + partial model for consistency. */
+  bool debugEntireLinEqIsConsistent(const std::string& s);
+
+
+  ArithVar minBy(const ArithVarVec& vec, VarPreferenceFunction pf) const;
+
+  /**
+   * Returns true if there would be a conflict on this row after a pivot
+   * and update using its basic variable and one of the non-basic variables on
+   * the row.
+   */
+  bool willBeInConflictAfterPivot(const Tableau::Entry& entry, const DeltaRational& nbDiff, bool bToUB) const;
+  UpdateInfo mkConflictUpdate(const Tableau::Entry& entry, bool ub) const;
+
+  /**
+   * Looks more an update for fcSimplex on the nonbasic variable nb with the focus coefficient.
+   */
+  UpdateInfo speculativeUpdate(ArithVar nb, const Rational& focusCoeff, UpdatePreferenceFunction pref);
+
+private:
+
+  /**
+   * Examines the effects of pivoting the entries column variable
+   * with the row's basic variable and setting the variable s.t.
+   * the basic variable is equal to one of its bounds.
+   *
+   * If ub, then the basic variable will be equal its upper bound.
+   * If not ub,then the basic variable will be equal its lower bound.
+   *
+   * Returns iff this row will be in conflict after the pivot.
+   *
+   * If this is false, add the bound to the relevant heap.
+   * If the bound is +/-infinity, this is ignored.
+
+   *
+   * Returns true if this would be a conflict.
+   * If it returns false, this
+   */
+  bool accumulateBorder(const Tableau::Entry& entry, bool ub);
+
+  void handleBorders(UpdateInfo& selected, ArithVar nb, const Rational& focusCoeff, BorderHeap& heap, int minimumFixes, UpdatePreferenceFunction pref);
+  void pop_block(BorderHeap& heap, int& brokenInBlock, int& fixesRemaining, int& negErrorChange);
+  void clearSpeculative();
+  Rational updateCoefficient(BorderVec::const_iterator startBlock, BorderVec::const_iterator endBlock);
+
+private:
+  /** These fields are designed to be accessible to TheoryArith methods. */
+  class Statistics {
+  public:
+    IntStat d_statPivots, d_statUpdates;
+    TimerStat d_pivotTime;
+    TimerStat d_adjTime;
+
+    IntStat d_weakeningAttempts, d_weakeningSuccesses, d_weakenings;
+    TimerStat d_weakenTime;
+    TimerStat d_forceTime;
+
+    Statistics();
+    ~Statistics();
+  };
+  mutable Statistics d_statistics;
+
+};/* class LinearEqualityModule */
+
+struct Cand {
+  ArithVar d_nb;
+  uint32_t d_penalty;
+  int d_sgn;
+  const Rational* d_coeff;
+
+  Cand(ArithVar nb, uint32_t penalty, int s, const Rational* c) :
+    d_nb(nb), d_penalty(penalty), d_sgn(s), d_coeff(c){}
+};
+
+
+class CompPenaltyColLength {
+private:
+  LinearEqualityModule* d_mod;
+public:
+  CompPenaltyColLength(LinearEqualityModule* mod): d_mod(mod){}
+
+  bool operator()(const Cand& x, const Cand& y) const {
+    if(x.d_penalty == y.d_penalty || !options::havePenalties()){
+      return x.d_nb == d_mod->minBoundAndColLength(x.d_nb,y.d_nb);
+    }else{
+      return x.d_penalty < y.d_penalty;
+    }
+  }
+};
+
+class UpdateTrackingCallback : public BoundUpdateCallback {
+private:
+  LinearEqualityModule* d_mod;
+public:
+  UpdateTrackingCallback(LinearEqualityModule* mod): d_mod(mod){}
+  void operator()(ArithVar v, const BoundsInfo& bi){
+    d_mod->includeBoundUpdate(v, bi);
+  }
+};
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/matrix.cpp b/src/theory/arith/matrix.cpp
new file mode 100644
index 0000000..25ed96b
--- /dev/null
+++ b/src/theory/arith/matrix.cpp
@@ -0,0 +1,32 @@
+/*********************                                                        */
+/*! \file matrix.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+
+#include "theory/arith/matrix.h"
+
+using namespace std;
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+void NoEffectCCCB::update(RowIndex ridx, ArithVar nb, int oldSgn, int currSgn) {}
+void NoEffectCCCB::multiplyRow(RowIndex ridx, int sgn){}
+bool NoEffectCCCB::canUseRow(RowIndex ridx) const { return false; }
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/matrix.h b/src/theory/arith/matrix.h
new file mode 100644
index 0000000..f0d4ec4
--- /dev/null
+++ b/src/theory/arith/matrix.h
@@ -0,0 +1,1006 @@
+/*********************                                                        */
+/*! \file matrix.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Clark Barrett
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Sparse matrix implementations for different types.
+ **
+ ** Sparse matrix implementations for different types.
+ ** This defines Matrix<T>, IntegerEqualityTables and Tableau.
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <queue>
+#include <utility>
+#include <vector>
+
+#include "base/output.h"
+#include "theory/arith/arithvar.h"
+#include "util/dense_map.h"
+#include "util/index.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+typedef Index EntryID;
+const EntryID ENTRYID_SENTINEL = std::numeric_limits<EntryID>::max();
+
+typedef Index RowIndex;
+const RowIndex ROW_INDEX_SENTINEL  = std::numeric_limits<RowIndex>::max();
+
+class CoefficientChangeCallback {
+public:
+  virtual ~CoefficientChangeCallback() {}
+  virtual void update(RowIndex ridx, ArithVar nb, int oldSgn, int currSgn) = 0;
+  virtual void multiplyRow(RowIndex ridx, int Sgn) = 0;
+  virtual bool canUseRow(RowIndex ridx) const = 0;
+};
+
+class NoEffectCCCB : public CoefficientChangeCallback {
+public:
+  void update(RowIndex ridx, ArithVar nb, int oldSgn, int currSgn);
+  void multiplyRow(RowIndex ridx, int Sgn);
+  bool canUseRow(RowIndex ridx) const;
+};
+
+template<class T>
+class MatrixEntry {
+private:
+  RowIndex d_rowIndex;
+  ArithVar d_colVar;
+
+  EntryID d_nextRow;
+  EntryID d_nextCol;
+
+  EntryID d_prevRow;
+  EntryID d_prevCol;
+
+  T d_coefficient;
+
+public:
+  MatrixEntry():
+    d_rowIndex(ROW_INDEX_SENTINEL),
+    d_colVar(ARITHVAR_SENTINEL),
+    d_nextRow(ENTRYID_SENTINEL),
+    d_nextCol(ENTRYID_SENTINEL),
+    d_prevRow(ENTRYID_SENTINEL),
+    d_prevCol(ENTRYID_SENTINEL),
+    d_coefficient()
+  {}
+
+  MatrixEntry(RowIndex row, ArithVar col, const T& coeff):
+     d_rowIndex(row),
+     d_colVar(col),
+     d_nextRow(ENTRYID_SENTINEL),
+     d_nextCol(ENTRYID_SENTINEL),
+     d_prevRow(ENTRYID_SENTINEL),
+     d_prevCol(ENTRYID_SENTINEL),
+     d_coefficient(coeff)
+  {}
+
+private:
+  bool unusedConsistent() const {
+    return
+      (d_rowIndex == ROW_INDEX_SENTINEL && d_colVar == ARITHVAR_SENTINEL) ||
+      (d_rowIndex != ROW_INDEX_SENTINEL && d_colVar != ARITHVAR_SENTINEL);
+  }
+
+public:
+
+  EntryID getNextRowEntryID() const {
+    return d_nextRow;
+  }
+
+  EntryID getNextColEntryID() const {
+    return d_nextCol;
+  }
+  EntryID getPrevRowEntryID() const {
+    return d_prevRow;
+  }
+
+  EntryID getPrevColEntryID() const {
+    return d_prevCol;
+  }
+
+  void setNextRowEntryID(EntryID id) {
+    d_nextRow = id;
+  }
+  void setNextColEntryID(EntryID id) {
+    d_nextCol = id;
+  }
+  void setPrevRowEntryID(EntryID id) {
+    d_prevRow = id;
+  }
+  void setPrevColEntryID(EntryID id) {
+    d_prevCol = id;
+  }
+
+  RowIndex getRowIndex() const{
+    return d_rowIndex;
+  }
+
+  ArithVar getColVar() const{
+    return d_colVar;
+  }
+
+  const T& getCoefficient() const {
+    return d_coefficient;
+  }
+
+  T& getCoefficient(){
+    return d_coefficient;
+  }
+
+  void setCoefficient(const T& t){
+    d_coefficient = t;
+  }
+
+  void markBlank() {
+    d_rowIndex = ROW_INDEX_SENTINEL;
+    d_colVar = ARITHVAR_SENTINEL;
+  }
+
+  bool blank() const{
+    Assert(unusedConsistent());
+
+    return d_rowIndex == ROW_INDEX_SENTINEL;
+  }
+}; /* class MatrixEntry<T> */
+
+template<class T>
+class MatrixEntryVector {
+private:
+  typedef MatrixEntry<T> EntryType;
+  typedef std::vector<EntryType> EntryArray;
+
+  EntryArray d_entries;
+  std::queue<EntryID> d_freedEntries;
+
+  uint32_t d_size;
+
+public:
+  MatrixEntryVector():
+    d_entries(), d_freedEntries(), d_size(0)
+  {}
+
+  const EntryType& operator[](EntryID id) const{
+    Assert(inBounds(id));
+    return d_entries[id];
+  }
+
+  EntryType& get(EntryID id){
+    Assert(inBounds(id));
+    return d_entries[id];
+  }
+
+  void freeEntry(EntryID id){
+    Assert(get(id).blank());
+    Assert(d_size > 0);
+
+    d_freedEntries.push(id);
+    --d_size;
+  }
+
+  EntryID newEntry(){
+    EntryID newId;
+    if(d_freedEntries.empty()){
+      newId = d_entries.size();
+      d_entries.push_back(MatrixEntry<T>());
+    }else{
+      newId = d_freedEntries.front();
+      d_freedEntries.pop();
+    }
+    ++d_size;
+    return newId;
+  }
+
+  uint32_t size() const{ return d_size; }
+  uint32_t capacity() const{ return d_entries.capacity(); }
+
+
+private:
+  bool inBounds(EntryID id) const{
+    return id <  d_entries.size();
+  }
+}; /* class MatrixEntryVector<T> */
+
+template <class T, bool isRow>
+class MatrixVector {
+private:
+  EntryID d_head;
+  uint32_t d_size;
+
+  MatrixEntryVector<T>* d_entries;
+
+  class Iterator {
+  private:
+    EntryID d_curr;
+    const MatrixEntryVector<T>* d_entries;
+
+  public:
+    Iterator(EntryID start, const MatrixEntryVector<T>* entries) :
+      d_curr(start), d_entries(entries)
+    {}
+
+  public:
+
+    EntryID getID() const {
+      return d_curr;
+    }
+
+    const MatrixEntry<T>& operator*() const{
+      Assert(!atEnd());
+      return (*d_entries)[d_curr];
+    }
+
+    Iterator& operator++(){
+      Assert(!atEnd());
+      const MatrixEntry<T>& entry = (*d_entries)[d_curr];
+      d_curr = isRow ? entry.getNextRowEntryID() : entry.getNextColEntryID();
+      return *this;
+    }
+
+    bool atEnd() const {
+      return d_curr == ENTRYID_SENTINEL;
+    }
+
+    bool operator==(const Iterator& i) const{
+      return d_curr == i.d_curr && d_entries == i.d_entries;
+    }
+
+    bool operator!=(const Iterator& i) const{
+      return !(d_curr == i.d_curr && d_entries == i.d_entries);
+    }
+  }; /* class MatrixVector<T, isRow>::Iterator */
+
+public:
+  MatrixVector(MatrixEntryVector<T>* mev)
+    : d_head(ENTRYID_SENTINEL), d_size(0), d_entries(mev)
+  {}
+
+  MatrixVector(EntryID head, uint32_t size, MatrixEntryVector<T>* mev)
+    : d_head(head), d_size(size), d_entries(mev)
+  {}
+
+  typedef Iterator const_iterator;
+  const_iterator begin() const {
+    return Iterator(d_head, d_entries);
+  }
+  const_iterator end() const {
+    return Iterator(ENTRYID_SENTINEL, d_entries);
+  }
+
+  EntryID getHead() const { return d_head; }
+
+  uint32_t getSize() const { return d_size; }
+
+  void insert(EntryID newId){
+    if(isRow){
+      d_entries->get(newId).setNextRowEntryID(d_head);
+
+      if(d_head != ENTRYID_SENTINEL){
+        d_entries->get(d_head).setPrevRowEntryID(newId);
+      }
+    }else{
+      d_entries->get(newId).setNextColEntryID(d_head);
+
+      if(d_head != ENTRYID_SENTINEL){
+        d_entries->get(d_head).setPrevColEntryID(newId);
+      }
+    }
+
+    d_head = newId;
+    ++d_size;
+  }
+  void remove(EntryID id){
+    Assert(d_size > 0);
+    --d_size;
+    if(isRow){
+      EntryID prevRow = d_entries->get(id).getPrevRowEntryID();
+      EntryID nextRow = d_entries->get(id).getNextRowEntryID();
+
+      if(d_head == id){
+        d_head = nextRow;
+      }
+      if(prevRow != ENTRYID_SENTINEL){
+        d_entries->get(prevRow).setNextRowEntryID(nextRow);
+      }
+      if(nextRow != ENTRYID_SENTINEL){
+        d_entries->get(nextRow).setPrevRowEntryID(prevRow);
+      }
+    }else{
+      EntryID prevCol = d_entries->get(id).getPrevColEntryID();
+      EntryID nextCol = d_entries->get(id).getNextColEntryID();
+
+      if(d_head == id){
+        d_head = nextCol;
+      }
+
+      if(prevCol != ENTRYID_SENTINEL){
+        d_entries->get(prevCol).setNextColEntryID(nextCol);
+      }
+      if(nextCol != ENTRYID_SENTINEL){
+        d_entries->get(nextCol).setPrevColEntryID(prevCol);
+      }
+    }
+  }
+}; /* class MatrixVector<T, isRow> */
+
+template <class T>
+  class RowVector : public MatrixVector<T, true>
+{
+private:
+  typedef MatrixVector<T, true> SuperT;
+public:
+  typedef typename SuperT::const_iterator const_iterator;
+
+  RowVector(MatrixEntryVector<T>* mev) : SuperT(mev){}
+  RowVector(EntryID head, uint32_t size, MatrixEntryVector<T>* mev)
+    : SuperT(head, size, mev){}
+};/* class RowVector<T> */
+
+template <class T>
+  class ColumnVector : public MatrixVector<T, false>
+{
+private:
+  typedef MatrixVector<T, false> SuperT;
+public:
+  typedef typename SuperT::const_iterator const_iterator;
+
+  ColumnVector(MatrixEntryVector<T>* mev) : SuperT(mev){}
+  ColumnVector(EntryID head, uint32_t size, MatrixEntryVector<T>* mev)
+    : SuperT(head, size, mev){}
+};/* class ColumnVector<T> */
+
+template <class T>
+class Matrix {
+public:
+  typedef MatrixEntry<T> Entry;
+
+protected:
+  typedef CVC4::theory::arith::RowVector<T> RowVectorT;
+  typedef CVC4::theory::arith::ColumnVector<T> ColumnVectorT;
+
+public:
+  typedef typename RowVectorT::const_iterator RowIterator;
+  typedef typename ColumnVectorT::const_iterator ColIterator;
+
+protected:
+  // RowTable : RowID |-> RowVector
+  typedef std::vector< RowVectorT > RowTable;
+  RowTable d_rows;
+
+  // ColumnTable : ArithVar |-> ColumnVector
+  typedef std::vector< ColumnVectorT > ColumnTable;
+  ColumnTable d_columns;
+
+  /* The merge buffer is used to store a row in order to optimize row addition. */
+  typedef std::pair<EntryID, bool> PosUsedPair;
+  typedef DenseMap< PosUsedPair > RowToPosUsedPairMap;
+  RowToPosUsedPairMap d_mergeBuffer;
+
+  /* The row that is in the merge buffer. */
+  RowIndex d_rowInMergeBuffer;
+
+  uint32_t d_entriesInUse;
+  MatrixEntryVector<T> d_entries;
+
+  std::vector<RowIndex> d_pool;
+
+  T d_zero;
+
+public:
+  /**
+   * Constructs an empty Matrix.
+   */
+  Matrix()
+  : d_rows(),
+    d_columns(),
+    d_mergeBuffer(),
+    d_rowInMergeBuffer(ROW_INDEX_SENTINEL),
+    d_entriesInUse(0),
+    d_entries(),
+    d_zero(0)
+  {}
+
+  Matrix(const T& zero)
+  : d_rows(),
+    d_columns(),
+    d_mergeBuffer(),
+    d_rowInMergeBuffer(ROW_INDEX_SENTINEL),
+    d_entriesInUse(0),
+    d_entries(),
+    d_zero(zero)
+  {}
+
+  Matrix(const Matrix& m)
+  : d_rows(),
+    d_columns(),
+    d_mergeBuffer(m.d_mergeBuffer),
+    d_rowInMergeBuffer(m.d_rowInMergeBuffer),
+    d_entriesInUse(m.d_entriesInUse),
+    d_entries(m.d_entries),
+    d_zero(m.d_zero)
+  {
+    d_columns.clear();
+    for(typename ColumnTable::const_iterator c=m.d_columns.begin(), cend = m.d_columns.end(); c!=cend; ++c){
+      const ColumnVectorT& col = *c;
+      d_columns.push_back(ColumnVectorT(col.getHead(),col.getSize(),&d_entries));
+    }
+    d_rows.clear();
+    for(typename RowTable::const_iterator r=m.d_rows.begin(), rend = m.d_rows.end(); r!=rend; ++r){
+      const RowVectorT& row = *r;
+      d_rows.push_back(RowVectorT(row.getHead(),row.getSize(),&d_entries));
+    }
+  }
+
+  Matrix& operator=(const Matrix& m){
+    d_mergeBuffer = (m.d_mergeBuffer);
+    d_rowInMergeBuffer = (m.d_rowInMergeBuffer);
+    d_entriesInUse = (m.d_entriesInUse);
+    d_entries = (m.d_entries);
+    d_zero = (m.d_zero);
+    d_columns.clear();
+    for(typename ColumnTable::const_iterator c=m.d_columns.begin(), cend = m.d_columns.end(); c!=cend; ++c){
+      const ColumnVector<T>& col = *c;
+      d_columns.push_back(ColumnVector<T>(col.getHead(), col.getSize(), &d_entries));
+    }
+    d_rows.clear();
+    for(typename RowTable::const_iterator r=m.d_rows.begin(), rend = m.d_rows.end(); r!=rend; ++r){
+      const RowVector<T>& row = *r;
+      d_rows.push_back(RowVector<T>(row.getHead(), row.getSize(), &d_entries));
+    }
+    return *this;
+  }
+
+protected:
+
+  void addEntry(RowIndex row, ArithVar col, const T& coeff){
+    Debug("tableau") << "addEntry(" << row << "," << col <<"," << coeff << ")" << std::endl;
+
+    Assert(coeff != 0);
+    Assert(row < d_rows.size());
+    Assert(col < d_columns.size());
+
+    EntryID newId = d_entries.newEntry();
+    Entry& newEntry = d_entries.get(newId);
+    newEntry = Entry(row, col, coeff);
+
+    Assert(newEntry.getCoefficient() != 0);
+
+
+    ++d_entriesInUse;
+
+    d_rows[row].insert(newId);
+    d_columns[col].insert(newId);
+  }
+
+  void removeEntry(EntryID id){
+    Assert(d_entriesInUse > 0);
+    --d_entriesInUse;
+
+    Entry& entry = d_entries.get(id);
+
+    RowIndex ridx = entry.getRowIndex();
+    ArithVar col = entry.getColVar();
+
+    Assert(d_rows[ridx].getSize() > 0);
+    Assert(d_columns[col].getSize() > 0);
+
+    d_rows[ridx].remove(id);
+    d_columns[col].remove(id);
+
+    entry.markBlank();
+
+    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 {
+    return d_rows.size();
+  }
+
+  size_t getNumColumns() const {
+    return d_columns.size();
+  }
+
+  void increaseSize(){
+    d_columns.push_back(ColumnVector<T>(&d_entries));
+  }
+
+  void increaseSizeTo(size_t s){
+    while(getNumColumns() < s){
+      increaseSize();
+    }
+  }
+
+  const RowVector<T>& getRow(RowIndex r) const {
+    Assert(r < d_rows.size());
+    return d_rows[r];
+  }
+
+  const ColumnVector<T>& getColumn(ArithVar v) const {
+    Assert(v < d_columns.size());
+    return d_columns[v];
+  }
+
+  uint32_t getRowLength(RowIndex r) const{
+    return getRow(r).getSize();
+  }
+
+  uint32_t getColLength(ArithVar x) const{
+    return getColumn(x).getSize();
+  }
+
+  /**
+   * Adds a row to the matrix.
+   * The new row is equivalent to:
+   *   \f$\sum_i\f$ coeffs[i] * variables[i]
+   */
+  RowIndex addRow(const std::vector<T>& coeffs,
+                  const std::vector<ArithVar>& variables){
+
+    RowIndex ridx = requestRowIndex();
+
+    //RowIndex ridx = d_rows.size();
+    //d_rows.push_back(RowVectorT(&d_entries));
+
+    typename std::vector<T>::const_iterator coeffIter = coeffs.begin();
+    std::vector<ArithVar>::const_iterator varsIter = variables.begin();
+    std::vector<ArithVar>::const_iterator varsEnd = variables.end();
+
+    for(; varsIter != varsEnd; ++coeffIter, ++varsIter){
+      const T& coeff = *coeffIter;
+      ArithVar var_i = *varsIter;
+      Assert(var_i < getNumColumns());
+      addEntry(ridx, var_i, coeff);
+    }
+
+    return ridx;
+  }
+
+
+  void loadRowIntoBuffer(RowIndex rid){
+    Assert(d_mergeBuffer.empty());
+    Assert(d_rowInMergeBuffer == ROW_INDEX_SENTINEL);
+
+    RowIterator i = getRow(rid).begin(), i_end = getRow(rid).end();
+    for(; i != i_end; ++i){
+      EntryID id = i.getID();
+      const MatrixEntry<T>& entry = *i;
+      ArithVar colVar = entry.getColVar();
+      d_mergeBuffer.set(colVar, std::make_pair(id, false));
+    }
+
+    d_rowInMergeBuffer = rid;
+  }
+
+  void clearBuffer() {
+    Assert(d_rowInMergeBuffer != ROW_INDEX_SENTINEL);
+
+    d_rowInMergeBuffer = ROW_INDEX_SENTINEL;
+    d_mergeBuffer.purge();
+  }
+
+  /* to *= mult */
+  void multiplyRowByConstant(RowIndex to, const T& mult){
+    RowIterator i = getRow(to).begin();
+    RowIterator i_end = getRow(to).end();
+    for( ; i != i_end; ++i){
+      EntryID id = i.getID();
+      Entry& entry = d_entries.get(id);
+      T& coeff = entry.getCoefficient();
+      coeff *= mult;
+    }
+  }
+
+  /**  to += mult * from.
+   * Use the more efficient rowPlusBufferTimesConstant() for
+   * repeated use.
+   */
+  void rowPlusRowTimesConstant(RowIndex to, RowIndex from, const T& mult){
+    Assert(to != from);
+    loadRowIntoBuffer(from);
+    rowPlusBufferTimesConstant(to, mult);
+    clearBuffer();
+  }
+
+  /**  to += mult * buffer.
+   * Invalidates coefficients on the row.
+   * (mult should never be a direct copy of a coefficient!)
+   */
+  void rowPlusBufferTimesConstant(RowIndex to, const T& mult){
+    Assert(d_rowInMergeBuffer != ROW_INDEX_SENTINEL);
+    Assert(to != ROW_INDEX_SENTINEL);
+
+    Debug("tableau") << "rowPlusRowTimesConstant("
+                     << to << "," << mult << "," << d_rowInMergeBuffer << ")"
+                     << std::endl;
+
+    Assert(debugNoZeroCoefficients(to));
+    Assert(debugNoZeroCoefficients(d_rowInMergeBuffer));
+
+    Assert(mult != 0);
+
+
+    RowIterator i = getRow(to).begin();
+    RowIterator i_end = getRow(to).end();
+    while(i != i_end){
+      EntryID id = i.getID();
+      Entry& entry = d_entries.get(id);
+      ArithVar colVar = entry.getColVar();
+
+      ++i;
+
+      if(d_mergeBuffer.isKey(colVar)){
+        EntryID bufferEntry = d_mergeBuffer[colVar].first;
+        Assert(!d_mergeBuffer[colVar].second);
+        d_mergeBuffer.get(colVar).second = true;
+
+        const Entry& other = d_entries.get(bufferEntry);
+        T& coeff = entry.getCoefficient();
+        coeff += mult * other.getCoefficient();
+
+        if(coeff.sgn() == 0){
+          removeEntry(id);
+        }
+      }
+    }
+
+    i = getRow(d_rowInMergeBuffer).begin();
+    i_end = getRow(d_rowInMergeBuffer).end();
+
+    for(; i != i_end; ++i){
+      const Entry& entry = *i;
+      ArithVar colVar = entry.getColVar();
+
+      if(d_mergeBuffer[colVar].second){
+        d_mergeBuffer.get(colVar).second = false;
+      }else{
+        Assert(!(d_mergeBuffer[colVar]).second);
+        T newCoeff =  mult * entry.getCoefficient();
+        addEntry(to, colVar, newCoeff);
+      }
+    }
+
+    Assert(mergeBufferIsClear());
+
+    if(Debug.isOn("matrix")) { printMatrix(); }
+  }
+
+  /**  to += mult * buffer. */
+  void rowPlusBufferTimesConstant(RowIndex to, const T& mult, CoefficientChangeCallback& cb){
+    Assert(d_rowInMergeBuffer != ROW_INDEX_SENTINEL);
+    Assert(to != ROW_INDEX_SENTINEL);
+
+    Debug("tableau") << "rowPlusRowTimesConstant("
+                     << to << "," << mult << "," << d_rowInMergeBuffer << ")"
+                     << std::endl;
+
+    Assert(debugNoZeroCoefficients(to));
+    Assert(debugNoZeroCoefficients(d_rowInMergeBuffer));
+
+    Assert(mult != 0);
+
+
+    RowIterator i = getRow(to).begin();
+    RowIterator i_end = getRow(to).end();
+    while(i != i_end){
+      EntryID id = i.getID();
+      Entry& entry = d_entries.get(id);
+      ArithVar colVar = entry.getColVar();
+
+      ++i;
+
+      if(d_mergeBuffer.isKey(colVar)){
+        EntryID bufferEntry = d_mergeBuffer[colVar].first;
+        Assert(!d_mergeBuffer[colVar].second);
+        d_mergeBuffer.get(colVar).second = true;
+
+        const Entry& other = d_entries.get(bufferEntry);
+        T& coeff = entry.getCoefficient();
+        int coeffOldSgn = coeff.sgn();
+        coeff += mult * other.getCoefficient();
+        int coeffNewSgn = coeff.sgn();
+
+        if(coeffOldSgn != coeffNewSgn){
+          cb.update(to, colVar, coeffOldSgn,  coeffNewSgn);
+
+          if(coeffNewSgn == 0){
+            removeEntry(id);
+          }
+        }
+      }
+    }
+
+    i = getRow(d_rowInMergeBuffer).begin();
+    i_end = getRow(d_rowInMergeBuffer).end();
+
+    for(; i != i_end; ++i){
+      const Entry& entry = *i;
+      ArithVar colVar = entry.getColVar();
+
+      if(d_mergeBuffer[colVar].second){
+        d_mergeBuffer.get(colVar).second = false;
+      }else{
+        Assert(!(d_mergeBuffer[colVar]).second);
+        T newCoeff =  mult * entry.getCoefficient();
+        addEntry(to, colVar, newCoeff);
+
+        cb.update(to, colVar, 0,  newCoeff.sgn());
+      }
+    }
+
+    Assert(mergeBufferIsClear());
+
+    if(Debug.isOn("matrix")) { printMatrix(); }
+  }
+
+  bool mergeBufferIsClear() const{
+    RowToPosUsedPairMap::const_iterator i = d_mergeBuffer.begin();
+    RowToPosUsedPairMap::const_iterator i_end = d_mergeBuffer.end();
+    for(; i != i_end; ++i){
+      RowIndex rid = *i;
+      if(d_mergeBuffer[rid].second){
+        return false;
+      }
+    }
+    return true;
+  }
+
+protected:
+
+  EntryID findOnRow(RowIndex rid, ArithVar column) const {
+    RowIterator i = d_rows[rid].begin(), i_end = d_rows[rid].end();
+    for(; i != i_end; ++i){
+      EntryID id = i.getID();
+      const MatrixEntry<T>& entry = *i;
+      ArithVar colVar = entry.getColVar();
+
+      if(colVar == column){
+        return id;
+      }
+    }
+    return ENTRYID_SENTINEL;
+  }
+
+  EntryID findOnCol(RowIndex rid, ArithVar column) const{
+    ColIterator i = d_columns[column].begin(), i_end = d_columns[column].end();
+    for(; i != i_end; ++i){
+      EntryID id = i.getID();
+      const MatrixEntry<T>& entry = *i;
+      RowIndex currRow = entry.getRowIndex();
+
+      if(currRow == rid){
+        return id;
+      }
+    }
+    return ENTRYID_SENTINEL;
+  }
+
+  EntryID findEntryID(RowIndex rid, ArithVar col) const{
+    bool colIsShorter = getColLength(col) < getRowLength(rid);
+    EntryID id = colIsShorter ? findOnCol(rid, col) : findOnRow(rid,col);
+    return id;
+  }
+  MatrixEntry<T> d_failedFind;
+public:
+
+  /** If the find fails, isUnused is true on the entry. */
+  const MatrixEntry<T>& findEntry(RowIndex rid, ArithVar col) const{
+    EntryID id = findEntryID(rid, col);
+    if(id == ENTRYID_SENTINEL){
+      return d_failedFind;
+    }else{
+      return d_entries[id];
+    }
+  }
+
+  /**
+   * Prints the contents of the Matrix to Debug("matrix")
+   */
+  void printMatrix(std::ostream& out) const {
+    out << "Matrix::printMatrix"  << std::endl;
+
+    for(RowIndex i = 0, N = d_rows.size(); i < N; ++i){
+      printRow(i, out);
+    }
+  }
+  void printMatrix() const {
+    printMatrix(Debug("matrix"));
+  }
+
+  void printRow(RowIndex rid, std::ostream& out) const {
+    out << "{" << rid << ":";
+    const RowVector<T>& row = getRow(rid);
+    RowIterator i = row.begin();
+    RowIterator i_end = row.end();
+    for(; i != i_end; ++i){
+      printEntry(*i, out);
+      out << ",";
+    }
+    out << "}" << std::endl;
+  }
+  void printRow(RowIndex rid) const {
+    printRow(rid, Debug("matrix"));
+  }
+
+  void printEntry(const MatrixEntry<T>& entry, std::ostream& out) const {
+    out << entry.getColVar() << "*" << entry.getCoefficient();
+  }
+  void printEntry(const MatrixEntry<T>& entry) const {
+    printEntry(entry, Debug("matrix"));
+  }
+public:
+  uint32_t size() const {
+    return d_entriesInUse;
+  }
+  uint32_t getNumEntriesInTableau() const {
+    return d_entries.size();
+  }
+  uint32_t getEntryCapacity() const {
+    return d_entries.capacity();
+  }
+
+  void manipulateRowEntry(RowIndex row, ArithVar col, const T& c, CoefficientChangeCallback& cb){
+    int coeffOldSgn;
+    int coeffNewSgn;
+
+    EntryID id = findEntryID(row, col);
+    if(id == ENTRYID_SENTINEL){
+      coeffOldSgn = 0;
+      addEntry(row, col, c);
+      coeffNewSgn = c.sgn();
+    }else{
+      Entry& e = d_entries.get(id);
+      T& t = e.getCoefficient();
+      coeffOldSgn = t.sgn();
+      t += c;
+      coeffNewSgn = t.sgn();
+    }
+
+    if(coeffOldSgn != coeffNewSgn){
+      cb.update(row, col, coeffOldSgn,  coeffNewSgn);
+    }
+    if(coeffNewSgn == 0){
+      removeEntry(id);
+    }
+  }
+
+  void removeRow(RowIndex rid){
+    RowIterator i = getRow(rid).begin();
+    RowIterator i_end = getRow(rid).end();
+    for(; i != i_end; ++i){
+      EntryID id = i.getID();
+      removeEntry(id);
+    }
+    releaseRowIndex(rid);
+  }
+
+  double densityMeasure() const{
+    Assert(numNonZeroEntriesByRow() == numNonZeroEntries());
+    Assert(numNonZeroEntriesByCol() == numNonZeroEntries());
+
+    uint32_t n = getNumRows();
+    if(n == 0){
+      return 1.0;
+    }else {
+      uint32_t s = numNonZeroEntries();
+      uint32_t m = d_columns.size();
+      uint32_t divisor = (n *(m - n + 1));
+
+      Assert(n >= 1);
+      Assert(m >= n);
+      Assert(divisor > 0);
+      Assert(divisor >= s);
+
+      return (double(s)) / divisor;
+    }
+  }
+
+  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(); }
+
+  uint32_t numNonZeroEntriesByRow() const {
+    uint32_t rowSum = 0;
+    for(RowIndex rid = 0, N = d_rows.size(); rid < N; ++rid){
+      rowSum += getRowLength(rid);
+    }
+    return rowSum;
+  }
+
+  uint32_t numNonZeroEntriesByCol() const {
+    uint32_t colSum = 0;
+    for(ArithVar v = 0, N = d_columns.size(); v < N; ++v){
+      colSum += getColLength(v);
+    }
+    return colSum;
+  }
+
+
+  bool debugNoZeroCoefficients(RowIndex ridx){
+    for(RowIterator i=getRow(ridx).begin(); !i.atEnd(); ++i){
+      const Entry& entry = *i;
+      if(entry.getCoefficient() == 0){
+        return false;
+      }
+    }
+    return true;
+  }
+  bool debugMatchingCountsForRow(RowIndex ridx){
+    for(RowIterator i=getRow(ridx).begin(); !i.atEnd(); ++i){
+      const Entry& entry = *i;
+      ArithVar colVar = entry.getColVar();
+      uint32_t count = debugCountColLength(colVar);
+      Debug("tableau") << "debugMatchingCountsForRow "
+                       << ridx << ":" << colVar << " " << count
+                       <<" "<< getColLength(colVar) << std::endl;
+      if( count != getColLength(colVar) ){
+        return false;
+      }
+    }
+    return true;
+  }
+
+  uint32_t debugCountColLength(ArithVar var){
+    Debug("tableau") << var << " ";
+    uint32_t count = 0;
+    for(ColIterator i=getColumn(var).begin(); !i.atEnd(); ++i){
+      const Entry& entry = *i;
+      Debug("tableau") << "(" << entry.getRowIndex() << ", " << i.getID() << ") ";
+      ++count;
+    }
+    Debug("tableau") << std::endl;
+    return count;
+  }
+  uint32_t debugCountRowLength(RowIndex ridx){
+    uint32_t count = 0;
+    for(RowIterator i=getRow(ridx).begin(); !i.atEnd(); ++i){
+      ++count;
+    }
+    return count;
+  }
+
+};/* class Matrix<T> */
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
diff --git a/src/theory/arith/normal_form.cpp b/src/theory/arith/normal_form.cpp
new file mode 100644
index 0000000..ec396b2
--- /dev/null
+++ b/src/theory/arith/normal_form.cpp
@@ -0,0 +1,1349 @@
+/*********************                                                        */
+/*! \file normal_form.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include <list>
+
+#include "base/output.h"
+#include "theory/arith/normal_form.h"
+#include "theory/arith/arith_utilities.h"
+#include "theory/theory.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+Constant Constant::mkConstant(const Rational& rat) {
+  return Constant(mkRationalNode(rat));
+}
+
+size_t Variable::getComplexity() const{
+  return 1u;
+}
+
+size_t VarList::getComplexity() const{
+  if(empty()){
+    return 1;
+  }else if(singleton()){
+    return 1;
+  }else{
+    return size() + 1;
+  }
+}
+
+size_t Monomial::getComplexity() const{
+  return getConstant().getComplexity() + getVarList().getComplexity();
+}
+
+size_t Polynomial::getComplexity() const{
+  size_t cmp = 0;
+  iterator i = begin(), e = end();
+  for(; i != e; ++i){
+    Monomial m = *i;
+    cmp += m.getComplexity();
+  }
+  return cmp;
+}
+
+size_t Constant::getComplexity() const{
+  return getValue().complexity();
+}
+
+bool Variable::isLeafMember(Node n){
+  return (!isRelationOperator(n.getKind())) &&
+    (Theory::isLeafOf(n, theory::THEORY_ARITH));
+}
+
+VarList::VarList(Node n)
+  : NodeWrapper(n)
+{
+  Assert(isSorted(begin(), end()));
+}
+
+bool Variable::isDivMember(Node n){
+  switch(n.getKind()){
+  case kind::DIVISION:
+  case kind::INTS_DIVISION:
+  case kind::INTS_MODULUS:
+  case kind::DIVISION_TOTAL:
+  case kind::INTS_DIVISION_TOTAL:
+  case kind::INTS_MODULUS_TOTAL:
+    return Polynomial::isMember(n[0]) && Polynomial::isMember(n[1]);
+  default:
+    return false;
+  }
+}
+
+
+
+bool VarList::isSorted(iterator start, iterator end) {
+#if IS_SORTED_IN_GNUCXX_NAMESPACE
+  return __gnu_cxx::is_sorted(start, end);
+#else /* IS_SORTED_IN_GNUCXX_NAMESPACE */
+  return std::is_sorted(start, end);
+#endif /* IS_SORTED_IN_GNUCXX_NAMESPACE */
+}
+
+bool VarList::isMember(Node n) {
+  if(Variable::isMember(n)) {
+    return true;
+  }
+  if(n.getKind() == kind::MULT) {
+    Node::iterator curr = n.begin(), end = n.end();
+    Node prev = *curr;
+    if(!Variable::isMember(prev)) return false;
+
+    Variable::VariableNodeCmp cmp;
+
+    while( (++curr) != end) {
+      if(!Variable::isMember(*curr)) return false;
+      // prev <= curr : accept
+      // !(prev <= curr) : reject
+      // !(!(prev > curr)) : reject
+      // curr < prev : reject
+      if((cmp(*curr, prev))) return false;
+      prev = *curr;
+    }
+    return true;
+  } else {
+    return false;
+  }
+}
+
+int VarList::cmp(const VarList& vl) const {
+  int dif = this->size() - vl.size();
+  if (dif == 0) {
+    if(this->getNode() == vl.getNode()) {
+      return 0;
+    }
+
+    Assert(!empty());
+    Assert(!vl.empty());
+    if(this->size() == 1){
+      return Variable::VariableNodeCmp::cmp(this->getNode(), vl.getNode());
+    }
+
+
+    internal_iterator ii=this->internalBegin(), ie=this->internalEnd();
+    internal_iterator ci=vl.internalBegin(), ce=vl.internalEnd();
+    for(; ii != ie; ++ii, ++ci){
+      Node vi = *ii;
+      Node vc = *ci;
+      int tmp = Variable::VariableNodeCmp::cmp(vi, vc);
+      if(tmp != 0){
+        return tmp;
+      }
+    }
+    Unreachable();
+  } else if(dif < 0) {
+    return -1;
+  } else {
+    return 1;
+  }
+}
+
+VarList VarList::parseVarList(Node n) {
+  return VarList(n);
+  // if(Variable::isMember(n)) {
+  //   return VarList(Variable(n));
+  // } else {
+  //   Assert(n.getKind() == kind::MULT);
+  //   for(Node::iterator i=n.begin(), end = n.end(); i!=end; ++i) {
+  //     Assert(Variable::isMember(*i));
+  //   }
+  //   return VarList(n);
+  // }
+}
+
+VarList VarList::operator*(const VarList& other) const {
+  if(this->empty()) {
+    return other;
+  } else if(other.empty()) {
+    return *this;
+  } else {
+    vector<Node> result;
+
+    internal_iterator
+      thisBegin = this->internalBegin(),
+      thisEnd = this->internalEnd(),
+      otherBegin = other.internalBegin(),
+      otherEnd = other.internalEnd();
+
+    Variable::VariableNodeCmp cmp;
+
+    merge_ranges(thisBegin, thisEnd, otherBegin, otherEnd, result, cmp);
+
+    Assert(result.size() >= 2);
+    Node mult = NodeManager::currentNM()->mkNode(kind::MULT, result);
+    return VarList::parseVarList(mult);
+  }
+}
+
+bool Monomial::isMember(TNode n){
+  if(n.getKind() == kind::CONST_RATIONAL) {
+    return true;
+  } else if(multStructured(n)) {
+    return VarList::isMember(n[1]);
+  } else {
+    return VarList::isMember(n);
+  }
+}
+
+Monomial Monomial::mkMonomial(const Constant& c, const VarList& vl) {
+  if(c.isZero() || vl.empty() ) {
+    return Monomial(c);
+  } else if(c.isOne()) {
+    return Monomial(vl);
+  } else {
+    return Monomial(c, vl);
+  }
+}
+
+Monomial Monomial::mkMonomial(const VarList& vl) {
+  // acts like Monomial::mkMonomial( 1, vl)
+  if( vl.empty() ) {
+    return Monomial::mkOne();
+  } else if(true){
+    return Monomial(vl);
+  }
+}
+
+Monomial Monomial::parseMonomial(Node n) {
+  if(n.getKind() == kind::CONST_RATIONAL) {
+    return Monomial(Constant(n));
+  } else if(multStructured(n)) {
+    return Monomial::mkMonomial(Constant(n[0]),VarList::parseVarList(n[1]));
+  } else {
+    return Monomial(VarList::parseVarList(n));
+  }
+}
+Monomial Monomial::operator*(const Rational& q) const {
+  if(q.isZero()){
+    return mkZero();
+  }else{
+    Constant newConstant = this->getConstant() * q;
+    return Monomial::mkMonomial(newConstant, getVarList());
+  }
+}
+
+Monomial Monomial::operator*(const Constant& c) const {
+  return (*this) * c.getValue();
+  // if(c.isZero()){
+  //   return mkZero();
+  // }else{
+  //   Constant newConstant = this->getConstant() * c;
+  //   return Monomial::mkMonomial(newConstant, getVarList());
+  // }
+}
+
+Monomial Monomial::operator*(const Monomial& mono) const {
+  Constant newConstant = this->getConstant() * mono.getConstant();
+  VarList newVL = this->getVarList() * mono.getVarList();
+
+  return Monomial::mkMonomial(newConstant, newVL);
+}
+
+// vector<Monomial> Monomial::sumLikeTerms(const std::vector<Monomial> & monos) {
+//   Assert(isSorted(monos));
+//   vector<Monomial> outMonomials;
+//   typedef vector<Monomial>::const_iterator iterator;
+//   for(iterator rangeIter = monos.begin(), end=monos.end(); rangeIter != end;) {
+//     Rational constant = (*rangeIter).getConstant().getValue();
+//     VarList varList  = (*rangeIter).getVarList();
+//     ++rangeIter;
+//     while(rangeIter != end && varList == (*rangeIter).getVarList()) {
+//       constant += (*rangeIter).getConstant().getValue();
+//       ++rangeIter;
+//     }
+//     if(constant != 0) {
+//       Constant asConstant = Constant::mkConstant(constant);
+//       Monomial nonZero = Monomial::mkMonomial(asConstant, varList);
+//       outMonomials.push_back(nonZero);
+//     }
+//   }
+
+//   Assert(isStrictlySorted(outMonomials));
+//   return outMonomials;
+// }
+
+void Monomial::sort(std::vector<Monomial>& m){
+  if(!isSorted(m)){
+    std::sort(m.begin(), m.end());
+  }
+}
+
+void Monomial::combineAdjacentMonomials(std::vector<Monomial>& monos) {
+  Assert(isSorted(monos));
+  size_t writePos, readPos, N;
+  for(writePos = 0, readPos = 0, N = monos.size(); readPos < N;){
+    Monomial& atRead = monos[readPos];
+    const VarList& varList  = atRead.getVarList();
+
+    size_t rangeEnd = readPos+1;
+    for(; rangeEnd < N; rangeEnd++){
+      if(!(varList == monos[rangeEnd].getVarList())){ break; }
+    }
+    // monos[i] for i in [readPos, rangeEnd) has the same var list
+    if(readPos+1 == rangeEnd){ // no addition needed
+      if(!atRead.getConstant().isZero()){
+        Monomial cpy = atRead; // being paranoid here
+        monos[writePos] = cpy;
+        writePos++;
+      }
+    }else{
+      Rational constant(monos[readPos].getConstant().getValue());
+      for(size_t i=readPos+1; i < rangeEnd; ++i){
+        constant += monos[i].getConstant().getValue();
+      }
+      if(!constant.isZero()){
+        Constant asConstant = Constant::mkConstant(constant);
+        Monomial nonZero = Monomial::mkMonomial(asConstant, varList);
+        monos[writePos] = nonZero;
+        writePos++;
+      }
+    }
+    Assert(rangeEnd>readPos);
+    readPos = rangeEnd;
+  }
+  if(writePos > 0 ){
+    Monomial cp = monos[0];
+    Assert(writePos <= N);
+    monos.resize(writePos, cp);
+  }else{
+    monos.clear();
+  }
+  Assert(isStrictlySorted(monos));
+}
+
+void Monomial::print() const {
+  Debug("normal-form") <<  getNode() << std::endl;
+}
+
+void Monomial::printList(const std::vector<Monomial>& list) {
+  for(vector<Monomial>::const_iterator i = list.begin(), end = list.end(); i != end; ++i) {
+    const Monomial& m =*i;
+    m.print();
+  }
+}
+Polynomial Polynomial::operator+(const Polynomial& vl) const {
+
+  std::vector<Monomial> sortedMonos;
+  merge_ranges(begin(), end(), vl.begin(), vl.end(), sortedMonos);
+
+  Monomial::combineAdjacentMonomials(sortedMonos);
+  //std::vector<Monomial> combined = Monomial::sumLikeTerms(sortedMonos);
+
+  Polynomial result = mkPolynomial(sortedMonos);
+  return result;
+}
+
+Polynomial Polynomial::exactDivide(const Integer& z) const {
+  Assert(isIntegral());
+  if(z.isOne()){
+    return (*this);
+  }else {
+    Constant invz = Constant::mkConstant(Rational(1,z));
+    Polynomial prod = (*this) * Monomial::mkMonomial(invz);
+    Assert(prod.isIntegral());
+    return prod;
+  }
+}
+
+Polynomial Polynomial::sumPolynomials(const std::vector<Polynomial>& ps){
+  if(ps.empty()){
+    return mkZero();
+  }else if(ps.size() <= 4){
+    // if there are few enough polynomials just add them
+    Polynomial p = ps[0];
+    for(size_t i = 1; i < ps.size(); ++i){
+      p = p + ps[i];
+    }
+    return p;
+  }else{
+    // general case
+    std::map<Node, Rational> coeffs;
+    for(size_t i = 0, N = ps.size(); i<N; ++i){
+      const Polynomial& p = ps[i];
+      for(iterator pi = p.begin(), pend = p.end(); pi != pend; ++pi) {
+        Monomial m = *pi;
+        coeffs[m.getVarList().getNode()] += m.getConstant().getValue();
+      }
+    }
+    std::vector<Monomial> monos;
+    std::map<Node, Rational>::const_iterator ci = coeffs.begin(), cend = coeffs.end();
+    for(; ci != cend; ++ci){
+      if(!(*ci).second.isZero()){
+        Constant c = Constant::mkConstant((*ci).second);
+        Node n = (*ci).first;
+        VarList vl = VarList::parseVarList(n);
+        monos.push_back(Monomial::mkMonomial(c, vl));
+      }
+    }
+    Monomial::sort(monos);
+    Monomial::combineAdjacentMonomials(monos);
+
+    Polynomial result = mkPolynomial(monos);
+    return result;
+  }
+}
+
+Polynomial Polynomial::operator-(const Polynomial& vl) const {
+  Constant negOne = Constant::mkConstant(Rational(-1));
+
+  return *this + (vl*negOne);
+}
+
+Polynomial Polynomial::operator*(const Rational& q) const{
+  if(q.isZero()){
+    return Polynomial::mkZero();
+  }else if(q.isOne()){
+    return *this;
+  }else{
+    std::vector<Monomial> newMonos;
+    for(iterator i = this->begin(), end = this->end(); i != end; ++i) {
+      newMonos.push_back((*i)*q);
+    }
+
+    Assert(Monomial::isStrictlySorted(newMonos));
+    return Polynomial::mkPolynomial(newMonos);
+  }
+}
+
+Polynomial Polynomial::operator*(const Constant& c) const{
+  return (*this) * c.getValue();
+  // if(c.isZero()){
+  //   return Polynomial::mkZero();
+  // }else if(c.isOne()){
+  //   return *this;
+  // }else{
+  //   std::vector<Monomial> newMonos;
+  //   for(iterator i = this->begin(), end = this->end(); i != end; ++i) {
+  //     newMonos.push_back((*i)*c);
+  //   }
+
+  //   Assert(Monomial::isStrictlySorted(newMonos));
+  //   return Polynomial::mkPolynomial(newMonos);
+  // }
+}
+
+Polynomial Polynomial::operator*(const Monomial& mono) const {
+  if(mono.isZero()) {
+    return Polynomial(mono); //Don't multiply by zero
+  } else {
+    std::vector<Monomial> newMonos;
+    for(iterator i = this->begin(), end = this->end(); i != end; ++i) {
+      newMonos.push_back(mono * (*i));
+    }
+
+    // We may need to sort newMonos.
+    // Suppose this = (+ x y), mono = x, (* x y).getId() < (* x x).getId()
+    // newMonos = <(* x x), (* x y)> after this loop.
+    // This is not sorted according to the current VarList order.
+    Monomial::sort(newMonos);
+    return Polynomial::mkPolynomial(newMonos);
+  }
+}
+
+Polynomial Polynomial::operator*(const Polynomial& poly) const {
+  Polynomial res = Polynomial::mkZero();
+  for(iterator i = this->begin(), end = this->end(); i != end; ++i) {
+    Monomial curr = *i;
+    Polynomial prod = poly * curr;
+    Polynomial sum  = res + prod;
+    res = sum;
+  }
+  return res;
+}
+
+Monomial Polynomial::selectAbsMinimum() const {
+  iterator iter = begin(), myend = end();
+  Assert(iter != myend);
+
+  Monomial min = *iter;
+  ++iter;
+  for(; iter != end(); ++iter){
+    Monomial curr = *iter;
+    if(curr.absCmp(min) < 0){
+      min = curr;
+    }
+  }
+  return min;
+}
+
+bool Polynomial::leadingCoefficientIsAbsOne() const {
+  return getHead().absCoefficientIsOne();
+}
+bool Polynomial::leadingCoefficientIsPositive() const {
+  return getHead().getConstant().isPositive();
+}
+
+bool Polynomial::denominatorLCMIsOne() const {
+  return denominatorLCM().isOne();
+}
+
+bool Polynomial::numeratorGCDIsOne() const {
+  return gcd().isOne();
+}
+
+Integer Polynomial::gcd() const {
+  Assert(isIntegral());
+  return numeratorGCD();
+}
+
+Integer Polynomial::numeratorGCD() const {
+  //We'll use the standardization that gcd(0, 0) = 0
+  //So that the gcd of the zero polynomial is gcd{0} = 0
+  iterator i=begin(), e=end();
+  Assert(i!=e);
+
+  Integer d = (*i).getConstant().getValue().getNumerator().abs();
+  if(d.isOne()){
+    return d;
+  }
+  ++i;
+  for(; i!=e; ++i){
+    Integer c = (*i).getConstant().getValue().getNumerator();
+    d = d.gcd(c);
+    if(d.isOne()){
+      return d;
+    }
+  }
+  return d;
+}
+
+Integer Polynomial::denominatorLCM() const {
+  Integer tmp(1);
+  for (iterator i = begin(), e = end(); i != e; ++i) {
+    const Integer denominator = (*i).getConstant().getValue().getDenominator();
+    tmp = tmp.lcm(denominator);
+  }
+  return tmp;
+}
+
+Constant Polynomial::getCoefficient(const VarList& vl) const{
+  //TODO improve to binary search...
+  for(iterator iter=begin(), myend=end(); iter != myend; ++iter){
+    Monomial m = *iter;
+    VarList curr = m.getVarList();
+    if(curr == vl){
+      return m.getConstant();
+    }
+  }
+  return Constant::mkConstant(0);
+}
+
+Node Polynomial::computeQR(const Polynomial& p, const Integer& div){
+  Assert(p.isIntegral());
+  std::vector<Monomial> q_vec, r_vec;
+  Integer tmp_q, tmp_r;
+  for(iterator iter = p.begin(), pend = p.end(); iter != pend; ++iter){
+    Monomial curr = *iter;
+    VarList vl = curr.getVarList();
+    Constant c = curr.getConstant();
+
+    const Integer& a = c.getValue().getNumerator();
+    Integer::floorQR(tmp_q, tmp_r, a, div);
+    Constant q=Constant::mkConstant(tmp_q);
+    Constant r=Constant::mkConstant(tmp_r);
+    if(!q.isZero()){
+      q_vec.push_back(Monomial::mkMonomial(q, vl));
+    }
+    if(!r.isZero()){
+      r_vec.push_back(Monomial::mkMonomial(r, vl));
+    }
+  }
+
+  Polynomial p_q = Polynomial::mkPolynomial(q_vec);
+  Polynomial p_r = Polynomial::mkPolynomial(r_vec);
+
+  return NodeManager::currentNM()->mkNode(kind::PLUS, p_q.getNode(), p_r.getNode());
+}
+
+
+Monomial Polynomial::minimumVariableMonomial() const{
+  Assert(!isConstant());
+  if(singleton()){
+    return getHead();
+  }else{
+    iterator i = begin();
+    Monomial first = *i;
+    if( first.isConstant() ){
+      ++i;
+      Assert(i != end());
+      return *i;
+    }else{
+      return first;
+    }
+  }
+}
+
+bool Polynomial::variableMonomialAreStrictlyGreater(const Monomial& m) const{
+  if(isConstant()){
+    return true;
+  }else{
+    Monomial minimum = minimumVariableMonomial();
+    Debug("nf::tmp") << "minimum " << minimum.getNode() << endl;
+    Debug("nf::tmp") << "m " << m.getNode() << endl;
+    return m < minimum;
+  }
+}
+
+bool Polynomial::isMember(TNode n) {
+  if(Monomial::isMember(n)){
+    return true;
+  }else if(n.getKind() == kind::PLUS){
+    Assert(n.getNumChildren() >= 2);
+    Node::iterator currIter = n.begin(), end = n.end();
+    Node prev = *currIter;
+    if(!Monomial::isMember(prev)){
+      return false;
+    }
+
+    Monomial mprev = Monomial::parseMonomial(prev);
+    ++currIter;
+    for(; currIter != end; ++currIter){
+      Node curr = *currIter;
+      if(!Monomial::isMember(curr)){
+        return false;
+      }
+      Monomial mcurr = Monomial::parseMonomial(curr);
+      if(!(mprev < mcurr)){
+        return false;
+      }
+      mprev = mcurr;
+    }
+    return true;
+  } else {
+    return false;
+  }
+}
+
+Node SumPair::computeQR(const SumPair& sp, const Integer& div){
+  Assert(sp.isIntegral());
+
+  const Integer& constant = sp.getConstant().getValue().getNumerator();
+
+  Integer constant_q, constant_r;
+  Integer::floorQR(constant_q, constant_r, constant, div);
+
+  Node p_qr = Polynomial::computeQR(sp.getPolynomial(), div);
+  Assert(p_qr.getKind() == kind::PLUS);
+  Assert(p_qr.getNumChildren() == 2);
+
+  Polynomial p_q = Polynomial::parsePolynomial(p_qr[0]);
+  Polynomial p_r = Polynomial::parsePolynomial(p_qr[1]);
+
+  SumPair sp_q(p_q, Constant::mkConstant(constant_q));
+  SumPair sp_r(p_r, Constant::mkConstant(constant_r));
+
+  return NodeManager::currentNM()->mkNode(kind::PLUS, sp_q.getNode(), sp_r.getNode());
+}
+
+SumPair SumPair::mkSumPair(const Polynomial& p){
+  if(p.isConstant()){
+    Constant leadingConstant = p.getHead().getConstant();
+    return SumPair(Polynomial::mkZero(), leadingConstant);
+  }else if(p.containsConstant()){
+    Assert(!p.singleton());
+    return SumPair(p.getTail(), p.getHead().getConstant());
+  }else{
+    return SumPair(p, Constant::mkZero());
+  }
+}
+
+Comparison::Comparison(TNode n)
+  : NodeWrapper(n)
+{
+  Assert(isNormalForm());
+}
+
+
+
+SumPair Comparison::toSumPair() const {
+  Kind cmpKind = comparisonKind();
+  switch(cmpKind){
+  case kind::LT:
+  case kind::LEQ:
+  case kind::GT:
+  case kind::GEQ:
+    {
+      TNode lit = getNode();
+      TNode atom = (cmpKind == kind::LT || cmpKind == kind::LEQ) ? lit[0] : lit;
+      Polynomial p = Polynomial::parsePolynomial(atom[0]);
+      Constant c = Constant::mkConstant(atom[1]);
+      if(p.leadingCoefficientIsPositive()){
+        return SumPair(p, -c);
+      }else{
+        return SumPair(-p, c);
+      }
+    }
+  case kind::EQUAL:
+  case kind::DISTINCT:
+    {
+      Polynomial left = getLeft();
+      Polynomial right = getRight();
+      Debug("nf::tmp") << "left: " << left.getNode() << endl;
+      Debug("nf::tmp") << "right: " << right.getNode() << endl;
+      if(right.isConstant()){
+        return SumPair(left, -right.getHead().getConstant());
+      }else if(right.containsConstant()){
+        Assert(!right.singleton());
+
+        Polynomial noConstant = right.getTail();
+        return SumPair(left - noConstant, -right.getHead().getConstant());
+      }else{
+        return SumPair(left - right, Constant::mkZero());
+      }
+    }
+  default:
+    Unhandled(cmpKind);
+  }
+}
+
+Polynomial Comparison::normalizedVariablePart() const {
+  Kind cmpKind = comparisonKind();
+  switch(cmpKind){
+  case kind::LT:
+  case kind::LEQ:
+  case kind::GT:
+  case kind::GEQ:
+    {
+      TNode lit = getNode();
+      TNode atom = (cmpKind == kind::LT || cmpKind == kind::LEQ) ? lit[0] : lit;
+      Polynomial p = Polynomial::parsePolynomial(atom[0]);
+      if(p.leadingCoefficientIsPositive()){
+        return p;
+      }else{
+        return -p;
+      }
+    }
+  case kind::EQUAL:
+  case kind::DISTINCT:
+    {
+      Polynomial left = getLeft();
+      Polynomial right = getRight();
+      if(right.isConstant()){
+        return left;
+      }else{
+        Polynomial noConstant = right.containsConstant() ? right.getTail() : right;
+        Polynomial diff = left - noConstant;
+        if(diff.leadingCoefficientIsPositive()){
+          return diff;
+        }else{
+          return -diff;
+        }
+      }
+    }
+  default:
+    Unhandled(cmpKind);
+  }
+}
+
+DeltaRational Comparison::normalizedDeltaRational() const {
+  Kind cmpKind = comparisonKind();
+  int delta = deltaCoeff(cmpKind);
+  switch(cmpKind){
+  case kind::LT:
+  case kind::LEQ:
+  case kind::GT:
+  case kind::GEQ:
+    {
+      Node lit = getNode();
+      Node atom = (cmpKind == kind::LT || cmpKind == kind::LEQ) ? lit[0] : lit;
+      Polynomial left = Polynomial::parsePolynomial(atom[0]);
+      const Rational& q = atom[1].getConst<Rational>();
+      if(left.leadingCoefficientIsPositive()){
+        return DeltaRational(q, delta);
+      }else{
+        return DeltaRational(-q, -delta);
+      }
+    }
+  case kind::EQUAL:
+  case kind::DISTINCT:
+    {
+      Polynomial right = getRight();
+      Monomial firstRight = right.getHead();
+      if(firstRight.isConstant()){
+        DeltaRational c = DeltaRational(firstRight.getConstant().getValue(), 0);
+        Polynomial left = getLeft();
+        if(!left.allIntegralVariables()){
+          return c;
+          //this is a qpolynomial and the sign of the leading
+          //coefficient will not change after the diff below
+        } else{
+          // the polynomial may be a z polynomial in which case
+          // taking the diff is the simplest and obviously correct means
+          Polynomial diff = right.singleton() ? left : left - right.getTail();
+          if(diff.leadingCoefficientIsPositive()){
+            return c;
+          }else{
+            return -c;
+          }
+        }
+      }else{ // The constant is 0 sign cannot change
+        return DeltaRational(0, 0);
+      }
+    }
+  default:
+    Unhandled(cmpKind);
+  }
+}
+
+Comparison Comparison::parseNormalForm(TNode n) {
+  Comparison result(n);
+  Assert(result.isNormalForm());
+  return result;
+}
+
+Node Comparison::toNode(Kind k, const Polynomial& l, const Constant& r) {
+  Assert(isRelationOperator(k));
+  switch(k) {
+  case kind::GEQ:
+  case kind::GT:
+    return NodeManager::currentNM()->mkNode(k, l.getNode(), r.getNode());
+  default:
+    Unhandled(k);
+  }
+}
+
+Node Comparison::toNode(Kind k, const Polynomial& l, const Polynomial& r) {
+  Assert(isRelationOperator(k));
+  switch(k) {
+  case kind::GEQ:
+  case kind::EQUAL:
+  case kind::GT:
+    return NodeManager::currentNM()->mkNode(k, l.getNode(), r.getNode());
+  case kind::LEQ:
+    return toNode(kind::GEQ, r, l).notNode();
+  case kind::LT:
+    return toNode(kind::GT, r, l).notNode();
+  case kind::DISTINCT:
+    return toNode(kind::EQUAL, r, l).notNode();
+  default:
+    Unreachable();
+  }
+}
+
+bool Comparison::rightIsConstant() const {
+  if(getNode().getKind() == kind::NOT){
+    return getNode()[0][1].getKind() == kind::CONST_RATIONAL;
+  }else{
+    return getNode()[1].getKind() == kind::CONST_RATIONAL;
+  }
+}
+
+size_t Comparison::getComplexity() const{
+  switch(comparisonKind()){
+  case kind::CONST_BOOLEAN: return 1;
+  case kind::LT:
+  case kind::LEQ:
+  case kind::DISTINCT:
+  case kind::EQUAL:
+  case kind::GT:
+  case kind::GEQ:
+    return getLeft().getComplexity() +  getRight().getComplexity();
+  default:
+    Unhandled(comparisonKind());
+    return -1;
+  }
+}
+
+Polynomial Comparison::getLeft() const {
+  TNode left;
+  Kind k = comparisonKind();
+  switch(k){
+  case kind::LT:
+  case kind::LEQ:
+  case kind::DISTINCT:
+    left = getNode()[0][0];
+    break;
+  case kind::EQUAL:
+  case kind::GT:
+  case kind::GEQ:
+    left = getNode()[0];
+    break;
+  default:
+    Unhandled(k);
+  }
+  return Polynomial::parsePolynomial(left);
+}
+
+Polynomial Comparison::getRight() const {
+  TNode right;
+  Kind k = comparisonKind();
+  switch(k){
+  case kind::LT:
+  case kind::LEQ:
+  case kind::DISTINCT:
+    right = getNode()[0][1];
+    break;
+  case kind::EQUAL:
+  case kind::GT:
+  case kind::GEQ:
+    right = getNode()[1];
+    break;
+  default:
+    Unhandled(k);
+  }
+  return Polynomial::parsePolynomial(right);
+}
+
+// Polynomial Comparison::getLeft() const {
+//   Node n = getNode();
+//   Node left = (n.getKind() == kind::NOT ? n[0]: n)[0];
+//   return Polynomial::parsePolynomial(left);
+// }
+
+// Polynomial Comparison::getRight() const {
+//   Node n = getNode();
+//   Node right = (n.getKind() == kind::NOT ? n[0]: n)[1];
+//   return Polynomial::parsePolynomial(right);
+// }
+
+bool Comparison::isNormalForm() const {
+  Node n = getNode();
+  Kind cmpKind = comparisonKind(n);
+  Debug("nf::tmp") << "isNormalForm " << n << " " << cmpKind << endl;
+  switch(cmpKind){
+  case kind::CONST_BOOLEAN:
+    return true;
+  case kind::GT:
+    return isNormalGT();
+  case kind::GEQ:
+    return isNormalGEQ();
+  case kind::EQUAL:
+    return isNormalEquality();
+  case kind::LT:
+    return isNormalLT();
+  case kind::LEQ:
+    return isNormalLEQ();
+  case kind::DISTINCT:
+    return isNormalDistinct();
+  default:
+    return false;
+  }
+}
+
+/** This must be (> qpolynomial constant) */
+bool Comparison::isNormalGT() const {
+  Node n = getNode();
+  Assert(n.getKind() == kind::GT);
+  if(!rightIsConstant()){
+    return false;
+  }else{
+    Polynomial left = getLeft();
+    if(left.containsConstant()){
+      return false;
+    }else if(!left.leadingCoefficientIsAbsOne()){
+      return false;
+    }else{
+      return !left.isIntegral();
+    }
+  }
+}
+
+/** This must be (not (> qpolynomial constant)) */
+bool Comparison::isNormalLEQ() const {
+  Node n = getNode();
+  Debug("nf::tmp") << "isNormalLEQ " << n << endl;
+  Assert(n.getKind() == kind::NOT);
+  Assert(n[0].getKind() == kind::GT);
+  if(!rightIsConstant()){
+    return false;
+  }else{
+    Polynomial left = getLeft();
+    if(left.containsConstant()){
+      return false;
+    }else if(!left.leadingCoefficientIsAbsOne()){
+      return false;
+    }else{
+      return !left.isIntegral();
+    }
+  }
+}
+
+
+/** This must be (>= qpolynomial constant) or  (>= zpolynomial constant) */
+bool Comparison::isNormalGEQ() const {
+  Node n = getNode();
+  Assert(n.getKind() == kind::GEQ);
+
+  Debug("nf::tmp") << "isNormalGEQ " << n << " " << rightIsConstant() << endl;
+
+  if(!rightIsConstant()){
+    return false;
+  }else{
+    Polynomial left = getLeft();
+    if(left.containsConstant()){
+      return false;
+    }else{
+      if(left.isIntegral()){
+        return left.signNormalizedReducedSum();
+      }else{
+        return left.leadingCoefficientIsAbsOne();
+      }
+    }
+  }
+}
+
+/** This must be (not (>= qpolynomial constant)) or (not (>= zpolynomial constant)) */
+bool Comparison::isNormalLT() const {
+  Node n = getNode();
+  Assert(n.getKind() == kind::NOT);
+  Assert(n[0].getKind() == kind::GEQ);
+
+  if(!rightIsConstant()){
+    return false;
+  }else{
+    Polynomial left = getLeft();
+    if(left.containsConstant()){
+      return false;
+    }else{
+      if(left.isIntegral()){
+        return left.signNormalizedReducedSum();
+      }else{
+        return left.leadingCoefficientIsAbsOne();
+      }
+    }
+  }
+}
+
+
+bool Comparison::isNormalEqualityOrDisequality() const {
+  Polynomial pleft = getLeft();
+
+  if(pleft.numMonomials() == 1){
+    Monomial mleft = pleft.getHead();
+    if(mleft.isConstant()){
+      return false;
+    }else{
+      Polynomial pright = getRight();
+      if(allIntegralVariables()){
+        const Rational& lcoeff = mleft.getConstant().getValue();
+        if(pright.isConstant()){
+          return pright.isIntegral() && lcoeff.isOne();
+        }
+        Polynomial varRight = pright.containsConstant() ? pright.getTail() : pright;
+        if(lcoeff.sgn() <= 0){
+          return false;
+        }else{
+          Integer lcm = lcoeff.getDenominator().lcm(varRight.denominatorLCM());
+          Integer g = lcoeff.getNumerator().gcd(varRight.numeratorGCD());
+          Debug("nf::tmp") << lcm << " " << g << endl;
+          if(!lcm.isOne()){
+            return false;
+          }else if(!g.isOne()){
+            return false;
+          }else{
+            Monomial absMinRight = varRight.selectAbsMinimum();
+            Debug("nf::tmp") << mleft.getNode() << " " << absMinRight.getNode() << endl;
+            if( mleft.absCmp(absMinRight) < 0){
+              return true;
+            }else{
+              return (!(absMinRight.absCmp(mleft)< 0)) && mleft < absMinRight;
+            }
+          }
+        }
+      }else{
+        if(mleft.coefficientIsOne()){
+          Debug("nf::tmp")
+            << "dfklj " << mleft.getNode() << endl
+            << pright.getNode() << endl
+            << pright.variableMonomialAreStrictlyGreater(mleft)
+            << endl;
+          return pright.variableMonomialAreStrictlyGreater(mleft);
+        }else{
+          return false;
+        }
+      }
+    }
+  }else{
+    return false;
+  }
+}
+
+/** This must be (= qvarlist qpolynomial) or (= zmonomial zpolynomial)*/
+bool Comparison::isNormalEquality() const {
+  Assert(getNode().getKind() == kind::EQUAL);
+
+  return isNormalEqualityOrDisequality();
+}
+
+/**
+ * This must be (not (= qvarlist qpolynomial)) or
+ * (not (= zmonomial zpolynomial)).
+ */
+bool Comparison::isNormalDistinct() const {
+  Assert(getNode().getKind() == kind::NOT);
+  Assert(getNode()[0].getKind() == kind::EQUAL);
+
+  return isNormalEqualityOrDisequality();
+}
+
+Node Comparison::mkRatEquality(const Polynomial& p){
+  Assert(!p.isConstant());
+  Assert(!p.allIntegralVariables());
+
+  Monomial minimalVList = p.minimumVariableMonomial();
+  Constant coeffInv = -(minimalVList.getConstant().inverse());
+
+  Polynomial newRight = (p - minimalVList) * coeffInv;
+  Polynomial newLeft(Monomial::mkMonomial(minimalVList.getVarList()));
+
+  return toNode(kind::EQUAL, newLeft, newRight);
+}
+
+Node Comparison::mkRatInequality(Kind k, const Polynomial& p){
+  Assert(k == kind::GEQ || k == kind::GT);
+  Assert(!p.isConstant());
+  Assert(!p.allIntegralVariables());
+
+  SumPair sp = SumPair::mkSumPair(p);
+  Polynomial left = sp.getPolynomial();
+  Constant right = - sp.getConstant();
+
+  Monomial minimalVList = left.getHead();
+  Assert(!minimalVList.isConstant());
+
+  Constant coeffInv = minimalVList.getConstant().inverse().abs();
+  Polynomial newLeft = left * coeffInv;
+  Constant newRight = right * (coeffInv);
+
+  return toNode(k, newLeft, newRight);
+}
+
+Node Comparison::mkIntInequality(Kind k, const Polynomial& p){
+  Assert(kind::GT == k || kind::GEQ == k);
+  Assert(!p.isConstant());
+  Assert(p.allIntegralVariables());
+
+  SumPair sp = SumPair::mkSumPair(p);
+  Polynomial left = sp.getPolynomial();
+  Rational right = - (sp.getConstant().getValue());
+
+
+  Monomial m = left.getHead();
+  Assert(!m.isConstant());
+
+  Integer lcm = left.denominatorLCM();
+  Integer g = left.numeratorGCD();
+  Rational mult(lcm,g);
+
+  Polynomial newLeft = left * mult;
+  Rational rightMult = right * mult;
+
+  bool negateResult = false;
+  if(!newLeft.leadingCoefficientIsPositive()){
+    // multiply by -1
+    // a: left >= right or b: left > right
+    // becomes
+    // a: -left <= -right or b: -left < -right
+    // a: not (-left > -right) or b: (not -left >= -right)
+    newLeft = -newLeft;
+    rightMult = -rightMult;
+    k = (kind::GT == k) ? kind::GEQ : kind::GT;
+    negateResult = true;
+    // the later stages handle:
+    // a: not (-left >= -right + 1) or b: (not -left >= -right)
+  }
+
+  Node result = Node::null();
+  if(rightMult.isIntegral()){
+    if(k == kind::GT){
+      // (> p z)
+      // (>= p (+ z 1))
+      Constant rightMultPlusOne = Constant::mkConstant(rightMult + 1);
+      result = toNode(kind::GEQ, newLeft, rightMultPlusOne);
+    }else{
+      Constant newRight = Constant::mkConstant(rightMult);
+      result = toNode(kind::GEQ, newLeft, newRight);
+    }
+  }else{
+    //(>= l (/ n d))
+    //(>= l (ceil (/ n d)))
+    //This also hold for GT as (ceil (/ n d)) > (/ n d)
+    Integer ceilr = rightMult.ceiling();
+    Constant ceilRight = Constant::mkConstant(ceilr);
+    result = toNode(kind::GEQ, newLeft, ceilRight);
+  }
+  Assert(!result.isNull());
+  if(negateResult){
+    return result.notNode();
+  }else{
+    return result;
+  }
+}
+
+Node Comparison::mkIntEquality(const Polynomial& p){
+  Assert(!p.isConstant());
+  Assert(p.allIntegralVariables());
+
+  SumPair sp = SumPair::mkSumPair(p);
+  Polynomial varPart = sp.getPolynomial();
+  Constant constPart = sp.getConstant();
+
+  Integer lcm = varPart.denominatorLCM();
+  Integer g = varPart.numeratorGCD();
+  Constant mult = Constant::mkConstant(Rational(lcm,g));
+
+  Constant constMult = constPart * mult;
+
+  if(constMult.isIntegral()){
+    Polynomial varPartMult = varPart * mult;
+
+    Monomial m = varPartMult.selectAbsMinimum();
+    bool mIsPositive =  m.getConstant().isPositive();
+
+    Polynomial noM = (varPartMult + (- m)) + Polynomial::mkPolynomial(constMult);
+
+    // m + noM = 0
+    Polynomial newRight = mIsPositive ? -noM : noM;
+    Polynomial newLeft  = mIsPositive ? m  : -m;
+
+    Assert(newRight.isIntegral());
+    return toNode(kind::EQUAL, newLeft, newRight);
+  }else{
+    return mkBoolNode(false);
+  }
+}
+
+Comparison Comparison::mkComparison(Kind k, const Polynomial& l, const Polynomial& r){
+
+  //Make this special case fast for sharing!
+  if((k == kind::EQUAL || k == kind::DISTINCT) && l.isVarList() && r.isVarList()){
+    VarList vLeft = l.asVarList();
+    VarList vRight = r.asVarList();
+
+    if(vLeft == vRight){
+      // return true for equalities and false for disequalities
+      return Comparison(k == kind::EQUAL);
+    }else{
+      Node eqNode = vLeft < vRight ? toNode( kind::EQUAL, l, r) : toNode( kind::EQUAL, r, l);
+      Node forK = (k == kind::DISTINCT) ? eqNode.notNode() : eqNode;
+      return Comparison(forK);
+    }
+  }
+
+  //General case
+  Polynomial diff = l - r;
+  if(diff.isConstant()){
+    bool res = evaluateConstantPredicate(k, diff.asConstant(), Rational(0));
+    return Comparison(res);
+  }else{
+    Node result = Node::null();
+    bool isInteger = diff.allIntegralVariables();
+    switch(k){
+    case kind::EQUAL:
+      result = isInteger ? mkIntEquality(diff) : mkRatEquality(diff);
+      break;
+    case kind::DISTINCT:
+      {
+        Node eq = isInteger ? mkIntEquality(diff) : mkRatEquality(diff);
+        result = eq.notNode();
+      }
+      break;
+    case kind::LEQ:
+    case kind::LT:
+      {
+        Polynomial neg = - diff;
+        Kind negKind = (k == kind::LEQ ? kind::GEQ : kind::GT);
+        result = isInteger ?
+          mkIntInequality(negKind, neg) : mkRatInequality(negKind, neg);
+      }
+      break;
+    case kind::GEQ:
+    case kind::GT:
+      result = isInteger ?
+        mkIntInequality(k, diff) : mkRatInequality(k, diff);
+      break;
+    default:
+      Unhandled(k);
+    }
+    Assert(!result.isNull());
+    if(result.getKind() == kind::NOT && result[0].getKind() == kind::CONST_BOOLEAN){
+      return Comparison(!(result[0].getConst<bool>()));
+    }else{
+      Comparison cmp(result);
+      Assert(cmp.isNormalForm());
+      return cmp;
+    }
+  }
+}
+
+bool Comparison::isBoolean() const {
+  return getNode().getKind() == kind::CONST_BOOLEAN;
+}
+
+
+bool Comparison::debugIsIntegral() const{
+  return getLeft().isIntegral() && getRight().isIntegral();
+}
+
+Kind Comparison::comparisonKind(TNode literal){
+  switch(literal.getKind()){
+  case kind::CONST_BOOLEAN:
+  case kind::GT:
+  case kind::GEQ:
+  case kind::EQUAL:
+    return literal.getKind();
+  case  kind::NOT:
+    {
+      TNode negatedAtom = literal[0];
+      switch(negatedAtom.getKind()){
+      case kind::GT: //(not (GT x c)) <=> (LEQ x c)
+        return kind::LEQ;
+      case kind::GEQ: //(not (GEQ x c)) <=> (LT x c)
+        return kind::LT;
+      case kind::EQUAL:
+        return kind::DISTINCT;
+      default:
+        return  kind::UNDEFINED_KIND;
+      }
+    }
+  default:
+    return kind::UNDEFINED_KIND;
+  }
+}
+
+
+Node Polynomial::makeAbsCondition(Variable v, Polynomial p){
+  Polynomial zerop = Polynomial::mkZero();
+
+  Polynomial varp = Polynomial::mkPolynomial(v);
+  Comparison pLeq0 = Comparison::mkComparison(kind::LEQ, p, zerop);
+  Comparison negP = Comparison::mkComparison(kind::EQUAL, varp, -p);
+  Comparison posP = Comparison::mkComparison(kind::EQUAL, varp, p);
+
+  Node absCnd = (pLeq0.getNode()).iteNode(negP.getNode(), posP.getNode());
+  return absCnd;
+}
+
+bool Polynomial::isNonlinear() const {
+
+  for(iterator i=begin(), iend =end(); i != iend; ++i){
+    Monomial m = *i;
+    if(m.isNonlinear()){
+      return true;
+    }
+  }
+  return false;
+}
+
+} //namespace arith
+} //namespace theory
+} //namespace CVC4
diff --git a/src/theory/arith/normal_form.h b/src/theory/arith/normal_form.h
new file mode 100644
index 0000000..d57d781
--- /dev/null
+++ b/src/theory/arith/normal_form.h
@@ -0,0 +1,1437 @@
+/*********************                                                        */
+/*! \file normal_form.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__ARITH__NORMAL_FORM_H
+#define __CVC4__THEORY__ARITH__NORMAL_FORM_H
+
+#include <algorithm>
+#include <list>
+
+#if IS_SORTED_IN_GNUCXX_NAMESPACE
+#  include <ext/algorithm>
+#endif /* IS_SORTED_IN_GNUCXX_NAMESPACE */
+
+#include "base/output.h"
+#include "expr/node.h"
+#include "expr/node_self_iterator.h"
+#include "theory/arith/delta_rational.h"
+#include "util/rational.h"
+
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+/***********************************************/
+/***************** Normal Form *****************/
+/***********************************************/
+/***********************************************/
+
+/**
+ * Section 1: Languages
+ * The normal form for arithmetic nodes is defined by the language
+ * accepted by the following BNFs with some guard conditions.
+ * (The guard conditions are in Section 3 for completeness.)
+ *
+ * variable := n
+ *   where
+ *     n.isVar() or is foreign
+ *     n.getType() \in {Integer, Real}
+ *
+ * constant := n
+ *   where
+ *     n.getKind() == kind::CONST_RATIONAL
+ *
+ * var_list := variable | (* [variable])
+ *   where
+ *     len [variable] >= 2
+ *     isSorted varOrder [variable]
+ *
+ * monomial := constant | var_list | (* constant' var_list')
+ *   where
+ *     \f$ constant' \not\in {0,1} \f$
+ *
+ * polynomial := monomial' | (+ [monomial])
+ *   where
+ *     len [monomial] >= 2
+ *     isStrictlySorted monoOrder [monomial]
+ *     forall (\x -> x != 0) [monomial]
+ *
+ * rational_cmp := (|><| qpolynomial constant)
+ *   where
+ *     |><| is GEQ, or GT
+ *     not (exists constantMonomial (monomialList qpolynomial))
+ *     (exists realMonomial (monomialList qpolynomial))
+ *     abs(monomialCoefficient (head (monomialList qpolynomial))) == 1
+ *
+ * integer_cmp := (>= zpolynomial constant)
+ *   where
+ *     not (exists constantMonomial (monomialList zpolynomial))
+ *     (forall integerMonomial (monomialList zpolynomial))
+ *     the gcd of all numerators of coefficients is 1
+ *     the denominator of all coefficients and the constant is 1
+ *     the leading coefficient is positive
+ *
+ * rational_eq := (= qvarlist qpolynomial)
+ *   where
+ *     let allMonomials = (cons qvarlist (monomialList zpolynomial))
+ *     let variableMonomials = (drop constantMonomial allMonomials)
+ *     isStrictlySorted variableMonomials
+ *     exists realMonomial variableMonomials
+ *     is not empty qvarlist
+ *
+ * integer_eq := (= zmonomial zpolynomial)
+ *   where
+ *     let allMonomials = (cons zmonomial (monomialList zpolynomial))
+ *     let variableMonomials = (drop constantMonomial allMonomials)
+ *     not (constantMonomial zmonomial)
+ *     (forall integerMonomial allMonomials)
+ *     isStrictlySorted variableMonomials
+ *     the gcd of all numerators of coefficients is 1
+ *     the denominator of all coefficients and the constant is 1
+ *     the coefficient of monomial is positive
+ *     the value of the coefficient of monomial is minimal in variableMonomials
+ *
+ * comparison := TRUE | FALSE
+ *   | rational_cmp | (not rational_cmp)
+ *   | rational_eq | (not rational_eq)
+ *   | integer_cmp | (not integer_cmp)
+ *   | integer_eq | (not integer_eq)
+ *
+ * Normal Form for terms := polynomial
+ * Normal Form for atoms := comparison
+ */
+
+/**
+ * Section 2: Helper Classes
+ * The langauges accepted by each of these defintions
+ * roughly corresponds to one of the following helper classes:
+ *  Variable
+ *  Constant
+ *  VarList
+ *  Monomial
+ *  Polynomial
+ *  Comparison
+ *
+ * Each of the classes obeys the following contracts/design decisions:
+ * -Calling isMember(Node node) on a node returns true iff that node is a
+ *  a member of the language. Note: isMember is O(n).
+ * -Calling isNormalForm() on a helper class object returns true iff that
+ *  helper class currently represents a normal form object.
+ * -If isNormalForm() is false, then this object must have been made
+ *  using a mk*() factory function.
+ * -If isNormalForm() is true, calling getNode() on all of these classes
+ *  returns a node that would be accepted by the corresponding language.
+ *  And if isNormalForm() is false, returns Node::null().
+ * -Each of the classes is immutable.
+ * -Public facing constuctors have a 1-to-1 correspondence with one of
+ *  production rules in the above grammar.
+ * -Public facing constuctors are required to fail in debug mode when the
+ *  guards of the production rule are not strictly met.
+ *  For example: Monomial(Constant(1),VarList(Variable(x))) must fail.
+ * -When a class has a Class parseClass(Node node) function,
+ *  if isMember(node) is true, the function is required to return an instance
+ *  of the helper class, instance, s.t. instance.getNode() == node.
+ *  And if isMember(node) is false, this throws an assertion failure in debug
+ *  mode and has undefined behaviour if not in debug mode.
+ * -Only public facing constructors, parseClass(node), and mk*() functions are
+ *  considered privileged functions for the helper class.
+ * -Only privileged functions may use private constructors, and access
+ *  private data members.
+ * -All non-privileged functions are considered utility functions and
+ *  must use a privileged function in order to create an instance of the class.
+ */
+
+/**
+ * Section 3: Guard Conditions Misc.
+ *
+ *
+ *  variable_order x y =
+ *    if (meta_kind_variable x) and (meta_kind_variable y)
+ *    then node_order x y
+ *    else if (meta_kind_variable x)
+ *    then false
+ *    else if (meta_kind_variable y)
+ *    then true
+ *    else node_order x y
+ *
+ *  var_list_len vl =
+ *    match vl with
+ *       variable -> 1
+ *     | (* [variable]) -> len [variable]
+ *
+ *  order res =
+ *    match res with
+ *       Empty -> (0,Node::null())
+ *     | NonEmpty(vl) -> (var_list_len vl, vl)
+ *
+ *  var_listOrder a b = tuple_cmp (order a) (order b)
+ *
+ *  monomialVarList monomial =
+ *    match monomial with
+ *        constant -> Empty
+ *      | var_list -> NonEmpty(var_list)
+ *      | (* constant' var_list') -> NonEmpty(var_list')
+ *
+ *  monoOrder m0 m1 = var_listOrder (monomialVarList m0) (monomialVarList m1)
+ *
+ *  integerMonomial mono =
+ *    forall varHasTypeInteger (monomialVarList mono)
+ *
+ *  realMonomial mono = not (integerMonomial mono)
+ *
+ *  constantMonomial monomial =
+ *    match monomial with
+ *        constant -> true
+ *      | var_list -> false
+ *      | (* constant' var_list') -> false
+ *
+ *  monomialCoefficient monomial =
+ *    match monomial with
+ *        constant -> constant
+ *      | var_list -> Constant(1)
+ *      | (* constant' var_list') -> constant'
+ *
+ *  monomialList polynomial =
+ *    match polynomial with
+ *        monomial -> monomial::[]
+ *      | (+ [monomial]) -> [monomial]
+ */
+
+/**
+ * A NodeWrapper is a class that is a thinly veiled container of a Node object.
+ */
+class NodeWrapper {
+private:
+  Node node;
+public:
+  NodeWrapper(Node n) : node(n) {}
+  const Node& getNode() const { return node; }
+};/* class NodeWrapper */
+
+
+class Variable : public NodeWrapper {
+public:
+  Variable(Node n) : NodeWrapper(n) {
+    Assert(isMember(getNode()));
+  }
+
+  // TODO: check if it's a theory leaf also
+  static bool isMember(Node n) {
+    Kind k = n.getKind();
+    switch(k){
+    case kind::CONST_RATIONAL:
+      return false;
+    case kind::INTS_DIVISION:
+    case kind::INTS_MODULUS:
+    case kind::DIVISION:
+    case kind::INTS_DIVISION_TOTAL:
+    case kind::INTS_MODULUS_TOTAL:
+    case kind::DIVISION_TOTAL:
+      return isDivMember(n);
+    case kind::ABS:
+    case kind::TO_INTEGER:
+      // Treat to_int as a variable; it is replaced in early preprocessing
+      // by a variable.
+      return true;
+    default:
+      return isLeafMember(n);
+    }
+  }
+
+  static bool isLeafMember(Node n);
+  static bool isDivMember(Node n);
+  bool isDivLike() const{
+    return isDivMember(getNode());
+  }
+
+  bool isNormalForm() { return isMember(getNode()); }
+
+  bool isIntegral() const {
+    return getNode().getType().isInteger();
+  }
+
+  bool isMetaKindVariable() const {
+    return getNode().isVar();
+  }
+
+  bool operator<(const Variable& v) const {
+    VariableNodeCmp cmp;
+    return cmp(this->getNode(), v.getNode());
+  }
+
+  struct VariableNodeCmp {
+    static inline int cmp(Node n, Node m) {
+      if ( n == m ) { return 0; }
+
+      // this is now slightly off of the old variable order.
+
+      bool nIsInteger = n.getType().isInteger();
+      bool mIsInteger = m.getType().isInteger();
+
+      if(nIsInteger == mIsInteger){
+        bool nIsVariable = n.isVar();
+        bool mIsVariable = m.isVar();
+
+        if(nIsVariable == mIsVariable){
+          if(n < m){
+            return -1;
+          }else{
+            Assert( n != m );
+            return 1;
+          }
+        }else{
+          if(nIsVariable){
+            return -1; // nIsVariable => !mIsVariable
+          }else{
+            return 1; // !nIsVariable => mIsVariable
+          }
+        }
+      }else{
+        Assert(nIsInteger != mIsInteger);
+        if(nIsInteger){
+          return 1; // nIsInteger => !mIsInteger
+        }else{
+          return -1; // !nIsInteger => mIsInteger
+        }
+      }
+    }
+
+    bool operator()(Node n, Node m) const {
+      return VariableNodeCmp::cmp(n,m) < 0;
+    }
+  };
+
+  bool operator==(const Variable& v) const { return getNode() == v.getNode();}
+
+  size_t getComplexity() const;
+};/* class Variable */
+
+
+class Constant : public NodeWrapper {
+public:
+  Constant(Node n) : NodeWrapper(n) {
+    Assert(isMember(getNode()));
+  }
+
+  static bool isMember(Node n) {
+    return n.getKind() == kind::CONST_RATIONAL;
+  }
+
+  bool isNormalForm() { return isMember(getNode()); }
+
+  static Constant mkConstant(Node n) {
+    Assert(n.getKind() == kind::CONST_RATIONAL);
+    return Constant(n);
+  }
+
+  static Constant mkConstant(const Rational& rat);
+
+  static Constant mkZero() {
+    return mkConstant(Rational(0));
+  }
+
+  static Constant mkOne() {
+    return mkConstant(Rational(1));
+  }
+
+  const Rational& getValue() const {
+    return getNode().getConst<Rational>();
+  }
+
+  static int absCmp(const Constant& a, const Constant& b);
+  bool isIntegral() const { return getValue().isIntegral(); }
+
+  int sgn() const { return getValue().sgn(); }
+
+  bool isZero() const { return sgn() == 0; }
+  bool isNegative() const { return sgn() < 0; }
+  bool isPositive() const { return sgn() > 0; }
+
+  bool isOne() const { return getValue() == 1; }
+
+  Constant operator*(const Rational& other) const {
+    return mkConstant(getValue() * other);
+  }
+
+  Constant operator*(const Constant& other) const {
+    return mkConstant(getValue() * other.getValue());
+  }
+  Constant operator+(const Constant& other) const {
+    return mkConstant(getValue() + other.getValue());
+  }
+  Constant operator-() const {
+    return mkConstant(-getValue());
+  }
+
+  Constant inverse() const{
+    Assert(!isZero());
+    return mkConstant(getValue().inverse());
+  }
+
+  bool operator<(const Constant& other) const {
+    return getValue() < other.getValue();
+  }
+
+  bool operator==(const Constant& other) const {
+    //Rely on node uniqueness.
+    return getNode() == other.getNode();
+  }
+
+  Constant abs() const {
+    if(isNegative()){
+      return -(*this);
+    }else{
+      return (*this);
+    }
+  }
+
+  uint32_t length() const{
+    Assert(isIntegral());
+    return getValue().getNumerator().length();
+  }
+
+  size_t getComplexity() const;
+
+};/* class Constant */
+
+
+template <class GetNodeIterator>
+inline Node makeNode(Kind k, GetNodeIterator start, GetNodeIterator end) {
+  NodeBuilder<> nb(k);
+
+  while(start != end) {
+    nb << (*start).getNode();
+    ++start;
+  }
+
+  return Node(nb);
+}/* makeNode<GetNodeIterator>(Kind, iterator, iterator) */
+
+
+template <class GetNodeIterator, class T>
+static void copy_range(GetNodeIterator begin, GetNodeIterator end, std::vector<T>& result){
+  while(begin != end){
+    result.push_back(*begin);
+    ++begin;
+  }
+}
+
+template <class GetNodeIterator, class T>
+static void merge_ranges(GetNodeIterator first1,
+                  GetNodeIterator last1,
+                  GetNodeIterator first2,
+                  GetNodeIterator last2,
+                  std::vector<T>& result) {
+
+  while(first1 != last1 && first2 != last2){
+    if( (*first1) < (*first2) ){
+      result.push_back(*first1);
+      ++ first1;
+    }else{
+      result.push_back(*first2);
+      ++ first2;
+    }
+  }
+  copy_range(first1, last1, result);
+  copy_range(first2, last2, result);
+}
+
+template <class GetNodeIterator, class T, class Cmp>
+static void merge_ranges(GetNodeIterator first1,
+                         GetNodeIterator last1,
+                         GetNodeIterator first2,
+                         GetNodeIterator last2,
+                         std::vector<T>& result,
+                         const Cmp& cmp) {
+
+  while(first1 != last1 && first2 != last2){
+    if( cmp(*first1, *first2) ){
+      result.push_back(*first1);
+      ++ first1;
+    }else{
+      result.push_back(*first2);
+      ++ first2;
+    }
+  }
+  copy_range(first1, last1, result);
+  copy_range(first2, last2, result);
+}
+
+/**
+ * A VarList is a sorted list of variables representing a product.
+ * If the VarList is empty, it represents an empty product or 1.
+ * If the VarList has size 1, it represents a single variable.
+ *
+ * A non-sorted VarList can never be successfully made in debug mode.
+ */
+class VarList : public NodeWrapper {
+private:
+
+  static Node multList(const std::vector<Variable>& list) {
+    Assert(list.size() >= 2);
+
+    return makeNode(kind::MULT, list.begin(), list.end());
+  }
+
+  VarList() : NodeWrapper(Node::null()) {}
+
+  VarList(Node n);
+
+  typedef expr::NodeSelfIterator internal_iterator;
+
+  internal_iterator internalBegin() const {
+    if(singleton()){
+      return expr::NodeSelfIterator::self(getNode());
+    }else{
+      return getNode().begin();
+    }
+  }
+
+  internal_iterator internalEnd() const {
+    if(singleton()){
+      return expr::NodeSelfIterator::selfEnd(getNode());
+    }else{
+      return getNode().end();
+    }
+  }
+
+public:
+
+  class iterator : public std::iterator<std::input_iterator_tag, Variable> {
+  private:
+    internal_iterator d_iter;
+
+  public:
+    explicit iterator(internal_iterator i) : d_iter(i) {}
+
+    inline Variable operator*() {
+      return Variable(*d_iter);
+    }
+
+    bool operator==(const iterator& i) {
+      return d_iter == i.d_iter;
+    }
+
+    bool operator!=(const iterator& i) {
+      return d_iter != i.d_iter;
+    }
+
+    iterator operator++() {
+      ++d_iter;
+      return *this;
+    }
+
+    iterator operator++(int) {
+      return iterator(d_iter++);
+    }
+  };
+
+  iterator begin() const {
+    return iterator(internalBegin());
+  }
+
+  iterator end() const {
+    return iterator(internalEnd());
+  }
+
+  Variable getHead() const {
+    Assert(!empty());
+    return *(begin());
+  }
+
+  VarList(Variable v) : NodeWrapper(v.getNode()) {
+    Assert(isSorted(begin(), end()));
+  }
+
+  VarList(const std::vector<Variable>& l) : NodeWrapper(multList(l)) {
+    Assert(l.size() >= 2);
+    Assert(isSorted(begin(), end()));
+  }
+
+  static bool isMember(Node n);
+
+  bool isNormalForm() const {
+    return !empty();
+  }
+
+  static VarList mkEmptyVarList() {
+    return VarList();
+  }
+
+
+  /** There are no restrictions on the size of l */
+  static VarList mkVarList(const std::vector<Variable>& l) {
+    if(l.size() == 0) {
+      return mkEmptyVarList();
+    } else if(l.size() == 1) {
+      return VarList((*l.begin()).getNode());
+    } else {
+      return VarList(l);
+    }
+  }
+
+  bool empty() const { return getNode().isNull(); }
+  bool singleton() const {
+    return !empty() && getNode().getKind() != kind::MULT;
+  }
+
+  int size() const {
+    if(singleton())
+      return 1;
+    else
+      return getNode().getNumChildren();
+  }
+
+  static VarList parseVarList(Node n);
+
+  VarList operator*(const VarList& vl) const;
+
+  int cmp(const VarList& vl) const;
+
+  bool operator<(const VarList& vl) const { return cmp(vl) < 0; }
+
+  bool operator==(const VarList& vl) const { return cmp(vl) == 0; }
+
+  bool isIntegral() const {
+    for(iterator i = begin(), e=end(); i != e; ++i ){
+      Variable var = *i;
+      if(!var.isIntegral()){
+        return false;
+      }
+    }
+    return true;
+  }
+  size_t getComplexity() const;
+
+private:
+  bool isSorted(iterator start, iterator end);
+
+};/* class VarList */
+
+
+/** Constructors have side conditions. Use the static mkMonomial functions instead. */ 
+class Monomial : public NodeWrapper {
+private:
+  Constant constant;
+  VarList varList;
+  Monomial(Node n, const Constant& c, const VarList& vl):
+    NodeWrapper(n), constant(c), varList(vl)
+  {
+    Assert(!c.isZero() ||  vl.empty() );
+    Assert( c.isZero() || !vl.empty() );
+
+    Assert(!c.isOne() || !multStructured(n));
+  }
+
+  static Node makeMultNode(const Constant& c, const VarList& vl) {
+    Assert(!c.isZero());
+    Assert(!c.isOne());
+    Assert(!vl.empty());
+    return NodeManager::currentNM()->mkNode(kind::MULT, c.getNode(), vl.getNode());
+  }
+
+  static bool multStructured(Node n) {
+    return n.getKind() ==  kind::MULT &&
+      n[0].getKind() == kind::CONST_RATIONAL &&
+      n.getNumChildren() == 2;
+  }
+
+  Monomial(const Constant& c):
+    NodeWrapper(c.getNode()), constant(c), varList(VarList::mkEmptyVarList())
+  { }
+  
+  Monomial(const VarList& vl):
+    NodeWrapper(vl.getNode()), constant(Constant::mkConstant(1)), varList(vl)
+  {
+    Assert( !varList.empty() );
+  }
+
+  Monomial(const Constant& c, const VarList& vl):
+    NodeWrapper(makeMultNode(c,vl)), constant(c), varList(vl)
+  {
+    Assert( !c.isZero() );
+    Assert( !c.isOne() );
+    Assert( !varList.empty() );
+
+    Assert(multStructured(getNode()));
+  }
+public:
+  static bool isMember(TNode n);
+
+  /** Makes a monomial with no restrictions on c and vl. */
+  static Monomial mkMonomial(const Constant& c, const VarList& vl);
+
+  /** If vl is empty, this make one. */
+  static Monomial mkMonomial(const VarList& vl);
+
+  static Monomial mkMonomial(const Constant& c){
+    return Monomial(c);
+  }
+  
+  static Monomial mkMonomial(const Variable& v){
+    return Monomial(VarList(v));
+  }
+
+  static Monomial parseMonomial(Node n);
+
+  static Monomial mkZero() {
+    return Monomial(Constant::mkConstant(0));
+  }
+  static Monomial mkOne() {
+    return Monomial(Constant::mkConstant(1));
+  }
+  const Constant& getConstant() const { return constant; }
+  const VarList& getVarList() const { return varList; }
+  
+  bool isConstant() const {
+    return varList.empty();
+  }
+
+  bool isZero() const {
+    return constant.isZero();
+  }
+
+  bool coefficientIsOne() const {
+    return constant.isOne();
+  }
+
+  bool absCoefficientIsOne() const {
+    return coefficientIsOne() || constant.getValue() == -1;
+  }
+
+  bool constantIsPositive() const {
+    return getConstant().isPositive();
+  }
+
+  Monomial operator*(const Rational& q) const;
+  Monomial operator*(const Constant& c) const;
+  Monomial operator*(const Monomial& mono) const;
+
+  Monomial operator-() const{
+    return (*this) * Rational(-1);
+  }
+
+
+  int cmp(const Monomial& mono) const {
+    return getVarList().cmp(mono.getVarList());
+  }
+
+  bool operator<(const Monomial& vl) const {
+    return cmp(vl) < 0;
+  }
+
+  bool operator==(const Monomial& vl) const {
+    return cmp(vl) == 0;
+  }
+
+  static bool isSorted(const std::vector<Monomial>& m) {
+#if IS_SORTED_IN_GNUCXX_NAMESPACE
+    return __gnu_cxx::is_sorted(m.begin(), m.end());
+#else /* IS_SORTED_IN_GNUCXX_NAMESPACE */
+    return std::is_sorted(m.begin(), m.end());
+#endif /* IS_SORTED_IN_GNUCXX_NAMESPACE */
+  }
+
+  static bool isStrictlySorted(const std::vector<Monomial>& m) {
+    return isSorted(m) && std::adjacent_find(m.begin(),m.end()) == m.end();
+  }
+
+  static void sort(std::vector<Monomial>& m);
+  static void combineAdjacentMonomials(std::vector<Monomial>& m);
+
+  /**
+   * The variable product
+   */
+  bool integralVariables() const {
+    return getVarList().isIntegral();
+  }
+
+  /**
+   * The coefficient of the monomial is integral.
+   */
+  bool integralCoefficient() const {
+    return getConstant().isIntegral();
+  }
+
+  /**
+   * A Monomial is an "integral" monomial if the constant is integral.
+   */
+  bool isIntegral() const {
+    return integralCoefficient() && integralVariables();
+  }
+
+  /** Returns true if the VarList is a product of at least 2 Variables.*/
+  bool isNonlinear() const {
+    return getVarList().size() >= 2;
+  }
+
+  /**
+   * Given a sorted list of monomials, this function transforms this
+   * into a strictly sorted list of monomials that does not contain zero.
+   */
+  //static std::vector<Monomial> sumLikeTerms(const std::vector<Monomial>& monos);
+
+  int absCmp(const Monomial& other) const{
+    return getConstant().getValue().absCmp(other.getConstant().getValue());
+  }
+  // bool absLessThan(const Monomial& other) const{
+  //   return getConstant().abs() < other.getConstant().abs();
+  // }
+
+  uint32_t coefficientLength() const{
+    return getConstant().length();
+  }
+
+  void print() const;
+  static void printList(const std::vector<Monomial>& list);
+
+  size_t getComplexity() const;
+};/* class Monomial */
+
+class SumPair;
+class Comparison;;
+
+class Polynomial : public NodeWrapper {
+private:
+  bool d_singleton;
+
+  Polynomial(TNode n) : NodeWrapper(n), d_singleton(Monomial::isMember(n)) {
+    Assert(isMember(getNode()));
+  }
+
+  static Node makePlusNode(const std::vector<Monomial>& m) {
+    Assert(m.size() >= 2);
+
+    return makeNode(kind::PLUS, m.begin(), m.end());
+  }
+
+  typedef expr::NodeSelfIterator internal_iterator;
+
+  internal_iterator internalBegin() const {
+    if(singleton()){
+      return expr::NodeSelfIterator::self(getNode());
+    }else{
+      return getNode().begin();
+    }
+  }
+
+  internal_iterator internalEnd() const {
+    if(singleton()){
+      return expr::NodeSelfIterator::selfEnd(getNode());
+    }else{
+      return getNode().end();
+    }
+  }
+
+  bool singleton() const { return d_singleton; }
+
+public:
+  static bool isMember(TNode n);
+
+  class iterator {
+  private:
+    internal_iterator d_iter;
+
+  public:
+    explicit iterator(internal_iterator i) : d_iter(i) {}
+
+    inline Monomial operator*() {
+      return Monomial::parseMonomial(*d_iter);
+    }
+
+    bool operator==(const iterator& i) {
+      return d_iter == i.d_iter;
+    }
+
+    bool operator!=(const iterator& i) {
+      return d_iter != i.d_iter;
+    }
+
+    iterator operator++() {
+      ++d_iter;
+      return *this;
+    }
+
+    iterator operator++(int) {
+      return iterator(d_iter++);
+    }
+  };
+
+  iterator begin() const { return iterator(internalBegin()); }
+  iterator end() const {  return iterator(internalEnd()); }
+
+  Polynomial(const Monomial& m):
+    NodeWrapper(m.getNode()), d_singleton(true)
+  {}
+
+  Polynomial(const std::vector<Monomial>& m):
+    NodeWrapper(makePlusNode(m)), d_singleton(false)
+  {
+    Assert( m.size() >= 2);
+    Assert( Monomial::isStrictlySorted(m) );
+  }
+
+  static Polynomial mkPolynomial(const Constant& c){
+    return Polynomial(Monomial::mkMonomial(c));
+  }
+
+  static Polynomial mkPolynomial(const Variable& v){
+    return Polynomial(Monomial::mkMonomial(v));
+  }
+
+  static Polynomial mkPolynomial(const std::vector<Monomial>& m) {
+    if(m.size() == 0) {
+      return Polynomial(Monomial::mkZero());
+    } else if(m.size() == 1) {
+      return Polynomial((*m.begin()));
+    } else {
+      return Polynomial(m);
+    }
+  }
+
+  static Polynomial parsePolynomial(Node n) {
+    return Polynomial(n);
+  }
+
+  static Polynomial mkZero() {
+    return Polynomial(Monomial::mkZero());
+  }
+  static Polynomial mkOne() {
+    return Polynomial(Monomial::mkOne());
+  }
+  bool isZero() const {
+    return singleton() && (getHead().isZero());
+  }
+
+  bool isConstant() const {
+    return singleton() && (getHead().isConstant());
+  }
+
+  bool containsConstant() const {
+    return getHead().isConstant();
+  }
+
+  uint32_t size() const{
+    if(singleton()){
+      return 1;
+    }else{
+      Assert(getNode().getKind() == kind::PLUS);
+      return getNode().getNumChildren();
+    }
+  }
+
+  Monomial getHead() const {
+    return *(begin());
+  }
+
+  Polynomial getTail() const {
+    Assert(! singleton());
+
+    iterator tailStart = begin();
+    ++tailStart;
+    std::vector<Monomial> subrange;
+    copy_range(tailStart, end(), subrange);
+    return mkPolynomial(subrange);
+  }
+
+  Monomial minimumVariableMonomial() const;
+  bool variableMonomialAreStrictlyGreater(const Monomial& m) const;
+
+  void printList() const {
+    if(Debug.isOn("normal-form")){
+      Debug("normal-form") << "start list" << std::endl;
+      for(iterator i = begin(), oend = end(); i != oend; ++i) {
+        const Monomial& m =*i;
+        m.print();
+      }
+      Debug("normal-form") << "end list" << std::endl;
+    }
+  }
+
+  /** A Polynomial is an "integral" polynomial if all of the monomials are integral. */
+  bool allIntegralVariables() const {
+    for(iterator i = begin(), e=end(); i!=e; ++i){
+      if(!(*i).integralVariables()){
+        return false;
+      }
+    }
+    return true;
+  }
+
+  /**
+   * A Polynomial is an "integral" polynomial if all of the monomials are integral
+   * and all of the coefficients are Integral. */
+  bool isIntegral() const {
+    for(iterator i = begin(), e=end(); i!=e; ++i){
+      if(!(*i).isIntegral()){
+        return false;
+      }
+    }
+    return true;
+  }
+
+  static Polynomial sumPolynomials(const std::vector<Polynomial>& polynomials);
+
+  /** Returns true if the polynomial contains a non-linear monomial.*/
+  bool isNonlinear() const;
+
+
+  /**
+   * Selects a minimal monomial in the polynomial by the absolute value of
+   * the coefficient.
+   */
+  Monomial selectAbsMinimum() const;
+
+  /** Returns true if the absolute value of the head coefficient is one. */
+  bool leadingCoefficientIsAbsOne() const;
+  bool leadingCoefficientIsPositive() const;
+  bool denominatorLCMIsOne() const;
+  bool numeratorGCDIsOne() const;
+
+  bool signNormalizedReducedSum() const {
+    return leadingCoefficientIsPositive() && denominatorLCMIsOne() && numeratorGCDIsOne();
+  }
+
+  /**
+   * Returns the Least Common Multiple of the denominators of the coefficients
+   * of the monomials.
+   */
+  Integer denominatorLCM() const;
+
+  /**
+   * Returns the GCD of the numerators of the monomials.
+   * Requires this to be an isIntegral() polynomial.
+   */
+  Integer numeratorGCD() const;
+
+  /**
+   * Returns the GCD of the coefficients of the monomials.
+   * Requires this to be an isIntegral() polynomial.
+   */
+  Integer gcd() const;
+
+  /** z must divide all of the coefficients of the polynomial. */
+  Polynomial exactDivide(const Integer& z) const;
+
+  Polynomial operator+(const Polynomial& vl) const;
+  Polynomial operator-(const Polynomial& vl) const;
+  Polynomial operator-() const{
+    return (*this) * Rational(-1);
+  }
+
+  Polynomial operator*(const Rational& q) const;
+  Polynomial operator*(const Constant& c) const;
+  Polynomial operator*(const Monomial& mono) const;
+
+  Polynomial operator*(const Polynomial& poly) const;
+
+  /**
+   * Viewing the integer polynomial as a list [(* coeff_i mono_i)]
+   * The quotient and remainder of p divided by the non-zero integer z is:
+   *   q := [(* floor(coeff_i/z) mono_i )]
+   *   r := [(* rem(coeff_i/z) mono_i)]
+   * computeQR(p,z) returns the node (+ q r).
+   *
+   * q and r are members of the Polynomial class.
+   * For example:
+   * computeQR( p = (+ 5 (* 3 x) (* 8 y)) , z = 2) returns
+   *   (+ (+ 2 x (* 4 y)) (+ 1 x))
+   */
+  static Node computeQR(const Polynomial& p, const Integer& z);
+
+  /** Returns the coefficient associated with the VarList in the polynomial. */
+  Constant getCoefficient(const VarList& vl) const;
+
+  uint32_t maxLength() const{
+    iterator i = begin(), e=end();
+    if( i == e){
+      return 1;
+    }else{
+      uint32_t max = (*i).coefficientLength();
+      ++i;
+      for(; i!=e; ++i){
+        uint32_t curr = (*i).coefficientLength();
+        if(curr > max){
+          max = curr;
+        }
+      }
+      return max;
+    }
+  }
+
+  uint32_t numMonomials() const {
+    if( getNode().getKind() == kind::PLUS ){
+      return getNode().getNumChildren();
+    }else if(isZero()){
+      return 0;
+    }else{
+      return 1;
+    }
+  }
+
+  const Rational& asConstant() const{
+    Assert(isConstant());
+    return getNode().getConst<Rational>();
+    //return getHead().getConstant().getValue();
+  }
+
+  bool isVarList() const {
+    if(singleton()){
+      return VarList::isMember(getNode());
+    }else{
+      return false;
+    }
+  }
+
+  VarList asVarList() const {
+    Assert(isVarList());
+    return getHead().getVarList();
+  }
+
+  size_t getComplexity() const;
+
+  friend class SumPair;
+  friend class Comparison;
+
+  /** Returns a node that if asserted ensures v is the abs of this polynomial.*/
+  Node makeAbsCondition(Variable v){
+    return makeAbsCondition(v, *this);
+  }
+
+  /** Returns a node that if asserted ensures v is the abs of p.*/
+  static Node makeAbsCondition(Variable v, Polynomial p);
+
+};/* class Polynomial */
+
+
+/**
+ * SumPair is a utility class that extends polynomials for use in computations.
+ * A SumPair is always a combination of (+ p c) where
+ *  c is a constant and p is a polynomial such that p = 0 or !p.containsConstant().
+ *
+ * These are a useful utility for representing the equation p = c as (+ p -c) where the pair
+ * is known to implicitly be equal to 0.
+ *
+ * SumPairs do not have unique representations due to the potential for p = 0.
+ * This makes them inappropriate for normal forms.
+ */
+class SumPair : public NodeWrapper {
+private:
+  static Node toNode(const Polynomial& p, const Constant& c){
+    return NodeManager::currentNM()->mkNode(kind::PLUS, p.getNode(), c.getNode());
+  }
+
+  SumPair(TNode n) :
+    NodeWrapper(n)
+  {
+    Assert(isNormalForm());
+  }
+
+public:
+
+  SumPair(const Polynomial& p):
+    NodeWrapper(toNode(p, Constant::mkConstant(0)))
+  {
+    Assert(isNormalForm());
+  }
+
+  SumPair(const Polynomial& p, const Constant& c):
+    NodeWrapper(toNode(p, c))
+  {
+    Assert(isNormalForm());
+  }
+
+  static bool isMember(TNode n) {
+    if(n.getKind() == kind::PLUS && n.getNumChildren() == 2){
+      if(Constant::isMember(n[1])){
+        if(Polynomial::isMember(n[0])){
+          Polynomial p = Polynomial::parsePolynomial(n[0]);
+          return p.isZero() || (!p.containsConstant());
+        }else{
+          return false;
+        }
+      }else{
+        return false;
+      }
+    }else{
+      return false;
+    }
+  }
+
+  bool isNormalForm() const {
+    return isMember(getNode());
+  }
+
+  Polynomial getPolynomial() const {
+    return Polynomial::parsePolynomial(getNode()[0]);
+  }
+
+  Constant getConstant() const {
+    return Constant::mkConstant((getNode())[1]);
+  }
+
+  SumPair operator+(const SumPair& other) const {
+    return SumPair(getPolynomial() + other.getPolynomial(),
+                   getConstant() + other.getConstant());
+  }
+
+  SumPair operator*(const Constant& c) const {
+    return SumPair(getPolynomial() * c, getConstant() * c);
+  }
+
+  SumPair operator-(const SumPair& other) const {
+    return (*this) + (other * Constant::mkConstant(-1));
+  }
+
+  static SumPair mkSumPair(const Polynomial& p);
+
+  static SumPair mkSumPair(const Variable& var){
+    return SumPair(Polynomial::mkPolynomial(var));
+  }
+
+  static SumPair parseSumPair(TNode n){
+    return SumPair(n);
+  }
+
+  bool isIntegral() const{
+    return getConstant().isIntegral() && getPolynomial().isIntegral();
+  }
+
+  bool isConstant() const {
+    return getPolynomial().isZero();
+  }
+
+  bool isZero() const {
+    return getConstant().isZero() && isConstant();
+  }
+
+  uint32_t size() const{
+    return getPolynomial().size();
+  }
+
+  bool isNonlinear() const{
+    return getPolynomial().isNonlinear();
+  }
+
+  /**
+   * Returns the greatest common divisor of gcd(getPolynomial()) and getConstant().
+   * The SumPair must be integral.
+   */
+  Integer gcd() const {
+    Assert(isIntegral());
+    return (getPolynomial().gcd()).gcd(getConstant().getValue().getNumerator());
+  }
+
+  uint32_t maxLength() const {
+    Assert(isIntegral());
+    return std::max(getPolynomial().maxLength(), getConstant().length());
+  }
+
+  static SumPair mkZero() {
+    return SumPair(Polynomial::mkZero(), Constant::mkConstant(0));
+  }
+
+  static Node computeQR(const SumPair& sp, const Integer& div);
+
+};/* class SumPair */
+
+/* class OrderedPolynomialPair { */
+/* private: */
+/*   Polynomial d_first; */
+/*   Polynomial d_second; */
+/* public: */
+/*   OrderedPolynomialPair(const Polynomial& f, const Polynomial& s) */
+/*     : d_first(f), */
+/*       d_second(s) */
+/*   {} */
+
+/*   /\** Returns the first part of the pair. *\/ */
+/*   const Polynomial& getFirst() const { */
+/*     return d_first; */
+/*   } */
+
+/*   /\** Returns the second part of the pair. *\/ */
+/*   const Polynomial& getSecond() const { */
+/*     return d_second; */
+/*   } */
+
+/*   OrderedPolynomialPair operator*(const Constant& c) const; */
+/*   OrderedPolynomialPair operator+(const Polynomial& p) const; */
+
+/*   /\** Returns true if both of the polynomials are constant. *\/ */
+/*   bool isConstant() const; */
+
+/*   /\** */
+/*    * Evaluates an isConstant() ordered pair as if */
+/*    *   (k getFirst() getRight()) */
+/*    *\/ */
+/*   bool evaluateConstant(Kind k) const; */
+
+/*   /\** */
+/*    * Returns the Least Common Multiple of the monomials */
+/*    * on the lefthand side and the constant on the right. */
+/*    *\/ */
+/*   Integer denominatorLCM() const; */
+
+/*   /\** Constructs a SumPair. *\/ */
+/*   SumPair toSumPair() const; */
+
+
+/*   OrderedPolynomialPair divideByGCD() const; */
+/*   OrderedPolynomialPair multiplyConstant(const Constant& c) const; */
+
+/*   /\** */
+/*    * Returns true if all of the variables are integers, */
+/*    * and the coefficients are integers. */
+/*    *\/ */
+/*   bool isIntegral() const; */
+
+/*   /\** Returns true if all of the variables are integers. *\/ */
+/*   bool allIntegralVariables() const { */
+/*     return getFirst().allIntegralVariables() && getSecond().allIntegralVariables(); */
+/*   } */
+/* }; */
+
+class Comparison : public NodeWrapper {
+private:
+
+  static Node toNode(Kind k, const Polynomial& l, const Constant& c);
+  static Node toNode(Kind k, const Polynomial& l, const Polynomial& r);
+
+  Comparison(TNode n);
+
+  /**
+   * Creates a node in normal form equivalent to (= l 0).
+   * All variables in l are integral.
+   */
+  static Node mkIntEquality(const Polynomial& l);
+
+  /**
+   * Creates a comparison equivalent to (k l 0).
+   * k is either GT or GEQ.
+   * All variables in l are integral.
+   */
+  static Node mkIntInequality(Kind k, const Polynomial& l);
+
+  /**
+   * Creates a node equivalent to (= l 0).
+   * It is not the case that all variables in l are integral.
+   */
+  static Node mkRatEquality(const Polynomial& l);
+
+  /**
+   * Creates a comparison equivalent to (k l 0).
+   * k is either GT or GEQ.
+   * It is not the case that all variables in l are integral.
+   */
+  static Node mkRatInequality(Kind k, const Polynomial& l);
+
+public:
+
+  Comparison(bool val) :
+    NodeWrapper(NodeManager::currentNM()->mkConst(val))
+  { }
+
+  /**
+   * Given a literal to TheoryArith return a single kind to
+   * to indicate its underlying structure.
+   * The function returns the following in each case:
+   * - (K left right)           -> K where is either EQUAL, GT, or GEQ
+   * - (CONST_BOOLEAN b)        -> CONST_BOOLEAN
+   * - (NOT (EQUAL left right)) -> DISTINCT
+   * - (NOT (GT left right))    -> LEQ
+   * - (NOT (GEQ left right))   -> LT
+   * If none of these match, it returns UNDEFINED_KIND.
+   */
+  static Kind comparisonKind(TNode literal);
+
+  Kind comparisonKind() const { return comparisonKind(getNode()); }
+
+  static Comparison mkComparison(Kind k, const Polynomial& l, const Polynomial& r);
+
+  /** Returns true if the comparison is a boolean constant. */
+  bool isBoolean() const;
+
+  /**
+   * Returns true if the comparison is either a boolean term,
+   * in integer normal form or mixed normal form.
+   */
+  bool isNormalForm() const;
+
+private:
+  bool isNormalGT() const;
+  bool isNormalGEQ() const;
+
+  bool isNormalLT() const;
+  bool isNormalLEQ() const;
+
+  bool isNormalEquality() const;
+  bool isNormalDistinct() const;
+  bool isNormalEqualityOrDisequality() const;
+
+  bool allIntegralVariables() const {
+    return getLeft().allIntegralVariables() && getRight().allIntegralVariables();
+  }
+  bool rightIsConstant() const;
+
+public:
+  Polynomial getLeft() const;
+  Polynomial getRight() const;
+
+  /* /\** Normal form check if at least one variable is real. *\/ */
+  /* bool isMixedCompareNormalForm() const; */
+
+  /* /\** Normal form check if at least one variable is real. *\/ */
+  /* bool isMixedEqualsNormalForm() const; */
+
+  /* /\** Normal form check is all variables are integer.*\/ */
+  /* bool isIntegerCompareNormalForm() const; */
+
+  /* /\** Normal form check is all variables are integer.*\/ */
+  /* bool isIntegerEqualsNormalForm() const; */
+
+
+  /**
+   * Returns true if all of the variables are integers, the coefficients are integers,
+   * and the right hand coefficient is an integer.
+   */
+  bool debugIsIntegral() const;
+
+  static Comparison parseNormalForm(TNode n);
+
+  inline static bool isNormalAtom(TNode n){
+    Comparison parse = Comparison::parseNormalForm(n);
+    return parse.isNormalForm();
+  }
+
+  size_t getComplexity() const;
+
+  SumPair toSumPair() const;
+
+  Polynomial normalizedVariablePart() const;
+  DeltaRational normalizedDeltaRational() const;
+
+};/* class Comparison */
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__ARITH__NORMAL_FORM_H */
diff --git a/src/theory/arith/partial_model.cpp b/src/theory/arith/partial_model.cpp
new file mode 100644
index 0000000..632be2a
--- /dev/null
+++ b/src/theory/arith/partial_model.cpp
@@ -0,0 +1,688 @@
+/*********************                                                        */
+/*! \file partial_model.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "base/output.h"
+#include "theory/arith/constraint.h"
+#include "theory/arith/normal_form.h"
+#include "theory/arith/partial_model.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+ArithVariables::ArithVariables(context::Context* c, DeltaComputeCallback deltaComputingFunc)
+ : d_vars(),
+   d_safeAssignment(),
+   d_numberOfVariables(0),
+   d_pool(),
+   d_released(),
+   d_nodeToArithVarMap(),
+   d_boundsQueue(),
+   d_enqueueingBoundCounts(true),
+   d_lbRevertHistory(c, true, LowerBoundCleanUp(this)),
+   d_ubRevertHistory(c, true, UpperBoundCleanUp(this)),
+   d_deltaIsSafe(false),
+   d_delta(-1,1),
+   d_deltaComputingFunc(deltaComputingFunc)
+{ }
+
+ArithVar ArithVariables::getNumberOfVariables() const {
+  return d_numberOfVariables;
+}
+
+
+bool ArithVariables::hasArithVar(TNode x) const {
+  return d_nodeToArithVarMap.find(x) != d_nodeToArithVarMap.end();
+}
+
+bool ArithVariables::hasNode(ArithVar a) const {
+  return d_vars.isKey(a);
+}
+
+ArithVar ArithVariables::asArithVar(TNode x) const{
+  Assert(hasArithVar(x));
+  Assert((d_nodeToArithVarMap.find(x))->second <= ARITHVAR_SENTINEL);
+  return (d_nodeToArithVarMap.find(x))->second;
+}
+
+Node ArithVariables::asNode(ArithVar a) const{
+  Assert(hasNode(a));
+  return d_vars[a].d_node;
+}
+
+ArithVariables::var_iterator::var_iterator()
+  : d_vars(NULL)
+  , d_wrapped()
+{}
+
+ArithVariables::var_iterator::var_iterator(const VarInfoVec* vars, VarInfoVec::const_iterator ci)
+  : d_vars(vars), d_wrapped(ci)
+{
+  nextInitialized();
+}
+
+ArithVariables::var_iterator& ArithVariables::var_iterator::operator++(){
+  ++d_wrapped;
+  nextInitialized();
+  return *this;
+}
+bool ArithVariables::var_iterator::operator==(const ArithVariables::var_iterator& other) const{
+  return d_wrapped == other.d_wrapped;
+}
+bool ArithVariables::var_iterator::operator!=(const ArithVariables::var_iterator& other) const{
+  return d_wrapped != other.d_wrapped;
+}
+ArithVar ArithVariables::var_iterator::operator*() const{
+  return *d_wrapped;
+}
+
+void ArithVariables::var_iterator::nextInitialized(){
+  VarInfoVec::const_iterator end = d_vars->end();
+  while(d_wrapped != end &&
+        !((*d_vars)[*d_wrapped].initialized())){
+    ++d_wrapped;
+  }
+}
+
+ArithVariables::var_iterator ArithVariables::var_begin() const {
+  return var_iterator(&d_vars, d_vars.begin());
+}
+
+ArithVariables::var_iterator ArithVariables::var_end() const {
+  return var_iterator(&d_vars, d_vars.end());
+}
+bool ArithVariables::isInteger(ArithVar x) const {
+  return d_vars[x].d_type >= ATInteger;
+}
+
+/** Is the assignment to x integral? */
+bool ArithVariables::integralAssignment(ArithVar x) const {
+  return getAssignment(x).isIntegral();
+}
+bool ArithVariables::isAuxiliary(ArithVar x) const {
+  return d_vars[x].d_auxiliary;
+}
+
+bool ArithVariables::isIntegerInput(ArithVar x) const {
+  return isInteger(x) && !isAuxiliary(x);
+}
+
+ArithVariables::VarInfo::VarInfo()
+  : d_var(ARITHVAR_SENTINEL),
+    d_assignment(0),
+    d_lb(NullConstraint),
+    d_ub(NullConstraint),
+    d_cmpAssignmentLB(1),
+    d_cmpAssignmentUB(-1),
+    d_pushCount(0),
+    d_node(Node::null()),
+    d_auxiliary(false)
+{ }
+
+bool ArithVariables::VarInfo::initialized() const {
+  return d_var != ARITHVAR_SENTINEL;
+}
+
+void ArithVariables::VarInfo::initialize(ArithVar v, Node n, bool aux){
+  Assert(!initialized());
+  Assert(d_lb == NullConstraint);
+  Assert(d_ub == NullConstraint);
+  Assert(d_cmpAssignmentLB > 0);
+  Assert(d_cmpAssignmentUB < 0);
+  d_var = v;
+  d_node = n;
+  d_auxiliary = aux;
+
+  if(d_auxiliary){
+    //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(n);
+    d_type = p.isIntegral() ? ATInteger : ATReal;
+  }else{
+    d_type = nodeToArithType(n);
+  }
+
+  Assert(initialized());
+}
+void ArithVariables::VarInfo::uninitialize(){
+  d_var = ARITHVAR_SENTINEL;
+  d_node = Node::null();
+}
+
+bool ArithVariables::VarInfo::setAssignment(const DeltaRational& a, BoundsInfo& prev){
+  Assert(initialized());
+  d_assignment = a;
+  int cmpUB = (d_ub == NullConstraint) ? -1 :
+    d_assignment.cmp(d_ub->getValue());
+
+  int cmpLB = (d_lb == NullConstraint) ? 1 :
+    d_assignment.cmp(d_lb->getValue());
+
+  bool lbChanged = cmpLB != d_cmpAssignmentLB &&
+    (cmpLB == 0 || d_cmpAssignmentLB == 0);
+  bool ubChanged = cmpUB != d_cmpAssignmentUB &&
+    (cmpUB == 0 || d_cmpAssignmentUB == 0);
+
+  if(lbChanged || ubChanged){
+    prev = boundsInfo();
+  }
+
+  d_cmpAssignmentUB = cmpUB;
+  d_cmpAssignmentLB = cmpLB;
+  return lbChanged || ubChanged;
+}
+
+void ArithVariables::releaseArithVar(ArithVar v){
+  VarInfo& vi = d_vars.get(v);
+
+  size_t removed CVC4_UNUSED = d_nodeToArithVarMap.erase(vi.d_node);
+  Assert(removed == 1);
+
+  vi.uninitialize();
+
+  if(d_safeAssignment.isKey(v)){
+    d_safeAssignment.remove(v);
+  }
+  if(vi.canBeReclaimed()){
+    d_pool.push_back(v);
+  }else{
+    d_released.push_back(v);
+  }
+}
+
+bool ArithVariables::VarInfo::setUpperBound(ConstraintP ub, BoundsInfo& prev){
+  Assert(initialized());
+  bool wasNull = d_ub == NullConstraint;
+  bool isNull = ub == NullConstraint;
+
+  int cmpUB = isNull ? -1 : d_assignment.cmp(ub->getValue());
+  bool ubChanged = (wasNull != isNull) ||
+    (cmpUB != d_cmpAssignmentUB && (cmpUB == 0 || d_cmpAssignmentUB == 0));
+  if(ubChanged){
+    prev = boundsInfo();
+  }
+  d_ub = ub;
+  d_cmpAssignmentUB = cmpUB;
+  return ubChanged;
+}
+
+bool ArithVariables::VarInfo::setLowerBound(ConstraintP lb, BoundsInfo& prev){
+  Assert(initialized());
+  bool wasNull = d_lb == NullConstraint;
+  bool isNull = lb == NullConstraint;
+
+  int cmpLB = isNull ? 1 : d_assignment.cmp(lb->getValue());
+
+  bool lbChanged = (wasNull != isNull) ||
+    (cmpLB != d_cmpAssignmentLB && (cmpLB == 0 || d_cmpAssignmentLB == 0));
+  if(lbChanged){
+    prev = boundsInfo();
+  }
+  d_lb = lb;
+  d_cmpAssignmentLB = cmpLB;
+  return lbChanged;
+}
+
+BoundCounts ArithVariables::VarInfo::atBoundCounts() const {
+  uint32_t lbIndc = (d_cmpAssignmentLB == 0) ? 1 : 0;
+  uint32_t ubIndc = (d_cmpAssignmentUB == 0) ? 1 : 0;
+  return BoundCounts(lbIndc, ubIndc);
+}
+
+BoundCounts ArithVariables::VarInfo::hasBoundCounts() const {
+  uint32_t lbIndc = (d_lb != NullConstraint) ? 1 : 0;
+  uint32_t ubIndc = (d_ub != NullConstraint) ? 1 : 0;
+  return BoundCounts(lbIndc, ubIndc);
+}
+
+BoundsInfo ArithVariables::VarInfo::boundsInfo() const{
+  return BoundsInfo(atBoundCounts(), hasBoundCounts());
+}
+
+bool ArithVariables::VarInfo::canBeReclaimed() const{
+  return d_pushCount == 0;
+}
+
+bool ArithVariables::canBeReleased(ArithVar v) const{
+  return d_vars[v].canBeReclaimed();
+}
+
+void ArithVariables::attemptToReclaimReleased(){
+  size_t readPos = 0, writePos = 0, N = d_released.size();
+  for(; readPos < N; ++readPos){
+    ArithVar v = d_released[readPos];
+    if(canBeReleased(v)){
+      d_pool.push_back(v);
+    }else{
+      d_released[writePos] = v;
+      writePos++;
+    }
+  }
+  d_released.resize(writePos);
+}
+
+ArithVar ArithVariables::allocateVariable(){
+  if(d_pool.empty()){
+    attemptToReclaimReleased();
+  }
+  bool reclaim = !d_pool.empty();
+
+  ArithVar varX;
+  if(reclaim){
+    varX = d_pool.back();
+    d_pool.pop_back();
+  }else{
+    varX = d_numberOfVariables;
+    ++d_numberOfVariables;
+  }
+  d_vars.set(varX, VarInfo());
+  return varX;
+}
+
+
+const Rational& ArithVariables::getDelta(){
+  if(!d_deltaIsSafe){
+    Rational nextDelta = d_deltaComputingFunc();
+    setDelta(nextDelta);
+  }
+  Assert(d_deltaIsSafe);
+  return d_delta;
+}
+
+bool ArithVariables::boundsAreEqual(ArithVar x) const{
+  if(hasLowerBound(x) && hasUpperBound(x)){
+    return getUpperBound(x) == getLowerBound(x);
+  }else{
+    return false;
+  }
+}
+
+
+std::pair<ConstraintP, ConstraintP> ArithVariables::explainEqualBounds(ArithVar x) const{
+  Assert(boundsAreEqual(x));
+
+  ConstraintP lb = getLowerBoundConstraint(x);
+  ConstraintP ub = getUpperBoundConstraint(x);
+  if(lb->isEquality()){
+    return make_pair(lb, NullConstraint);
+  }else if(ub->isEquality()){
+    return make_pair(ub, NullConstraint);
+  }else{
+    return make_pair(lb, ub);
+  }
+}
+
+void ArithVariables::setAssignment(ArithVar x, const DeltaRational& r){
+  Debug("partial_model") << "pm: updating the assignment to" << x
+                         << " now " << r <<endl;
+  VarInfo& vi = d_vars.get(x);
+  if(!d_safeAssignment.isKey(x)){
+    d_safeAssignment.set(x, vi.d_assignment);
+  }
+  invalidateDelta();
+
+  BoundsInfo prev;
+  if(vi.setAssignment(r, prev)){
+    addToBoundQueue(x, prev);
+  }
+}
+
+void ArithVariables::setAssignment(ArithVar x, const DeltaRational& safe, const DeltaRational& r){
+  Debug("partial_model") << "pm: updating the assignment to" << x
+                         << " now " << r <<endl;
+  if(safe == r){
+    if(d_safeAssignment.isKey(x)){
+      d_safeAssignment.remove(x);
+    }
+  }else{
+    d_safeAssignment.set(x, safe);
+  }
+
+  invalidateDelta();
+  VarInfo& vi = d_vars.get(x);
+  BoundsInfo prev;
+  if(vi.setAssignment(r, prev)){
+    addToBoundQueue(x, prev);
+  }
+}
+
+void ArithVariables::initialize(ArithVar x, Node n, bool aux){
+  VarInfo& vi = d_vars.get(x);
+  vi.initialize(x, n, aux);
+  d_nodeToArithVarMap[n] = x;
+}
+
+ArithVar ArithVariables::allocate(Node n, bool aux){
+  ArithVar v = allocateVariable();
+  initialize(v, n, aux);
+  return v;
+}
+
+// void ArithVariables::initialize(ArithVar x, const DeltaRational& r){
+//   Assert(x == d_mapSize);
+//   Assert(equalSizes());
+//   ++d_mapSize;
+
+//   // Is worth mentioning that this is not strictly necessary, but this maintains the internal invariant
+//   // that when d_assignment is set this gets set.
+//   invalidateDelta();
+//   d_assignment.push_back( r );
+
+//   d_boundRel.push_back(BetweenBounds);
+
+//   d_ubc.push_back(NullConstraint);
+//   d_lbc.push_back(NullConstraint);
+// }
+
+/** Must know that the bound exists both calling this! */
+const DeltaRational& ArithVariables::getUpperBound(ArithVar x) const {
+  Assert(inMaps(x));
+  Assert(hasUpperBound(x));
+
+  return getUpperBoundConstraint(x)->getValue();
+}
+
+const DeltaRational& ArithVariables::getLowerBound(ArithVar x) const {
+  Assert(inMaps(x));
+  Assert(hasLowerBound(x));
+
+  return getLowerBoundConstraint(x)->getValue();
+}
+
+const DeltaRational& ArithVariables::getSafeAssignment(ArithVar x) const{
+  Assert(inMaps(x));
+  if(d_safeAssignment.isKey(x)){
+    return d_safeAssignment[x];
+  }else{
+    return d_vars[x].d_assignment;
+  }
+}
+
+const DeltaRational& ArithVariables::getAssignment(ArithVar x, bool safe) const{
+  Assert(inMaps(x));
+  if(safe && d_safeAssignment.isKey(x)){
+    return d_safeAssignment[x];
+  }else{
+    return d_vars[x].d_assignment;
+  }
+}
+
+const DeltaRational& ArithVariables::getAssignment(ArithVar x) const{
+  Assert(inMaps(x));
+  return d_vars[x].d_assignment;
+}
+
+
+void ArithVariables::setLowerBoundConstraint(ConstraintP c){
+  AssertArgument(c != NullConstraint, "Cannot set a lower bound to NullConstraint.");
+  AssertArgument(c->isEquality() || c->isLowerBound(),
+                 "Constraint type must be set to an equality or UpperBound.");
+  ArithVar x = c->getVariable();
+  Debug("partial_model") << "setLowerBoundConstraint(" << x << ":" << c << ")" << endl;
+  Assert(inMaps(x));
+  Assert(greaterThanLowerBound(x, c->getValue()));
+
+  invalidateDelta();
+  VarInfo& vi = d_vars.get(x);
+  pushLowerBound(vi);
+  BoundsInfo prev;
+  if(vi.setLowerBound(c, prev)){
+    addToBoundQueue(x, prev);
+  }
+}
+
+void ArithVariables::setUpperBoundConstraint(ConstraintP c){
+  AssertArgument(c != NullConstraint, "Cannot set a upper bound to NullConstraint.");
+  AssertArgument(c->isEquality() || c->isUpperBound(),
+                 "Constraint type must be set to an equality or UpperBound.");
+
+  ArithVar x = c->getVariable();
+  Debug("partial_model") << "setUpperBoundConstraint(" << x << ":" << c << ")" << endl;
+  Assert(inMaps(x));
+  Assert(lessThanUpperBound(x, c->getValue()));
+
+  invalidateDelta();
+  VarInfo& vi = d_vars.get(x);
+  pushUpperBound(vi);
+  BoundsInfo prev;
+  if(vi.setUpperBound(c, prev)){
+    addToBoundQueue(x, prev);
+  }
+}
+
+int ArithVariables::cmpToLowerBound(ArithVar x, const DeltaRational& c) const{
+  if(!hasLowerBound(x)){
+    // l = -\intfy
+    // ? c < -\infty |-  _|_
+    return 1;
+  }else{
+    return c.cmp(getLowerBound(x));
+  }
+}
+
+int ArithVariables::cmpToUpperBound(ArithVar x, const DeltaRational& c) const{
+  if(!hasUpperBound(x)){
+    //u = \intfy
+    // ? c > \infty |-  _|_
+    return -1;
+  }else{
+    return c.cmp(getUpperBound(x));
+  }
+}
+
+bool ArithVariables::equalsLowerBound(ArithVar x, const DeltaRational& c){
+  if(!hasLowerBound(x)){
+    return false;
+  }else{
+    return c == getLowerBound(x);
+  }
+}
+bool ArithVariables::equalsUpperBound(ArithVar x, const DeltaRational& c){
+  if(!hasUpperBound(x)){
+    return false;
+  }else{
+    return c == getUpperBound(x);
+  }
+}
+
+bool ArithVariables::hasEitherBound(ArithVar x) const{
+  return hasLowerBound(x) || hasUpperBound(x);
+}
+
+bool ArithVariables::strictlyBelowUpperBound(ArithVar x) const{
+  return d_vars[x].d_cmpAssignmentUB < 0;
+}
+
+bool ArithVariables::strictlyAboveLowerBound(ArithVar x) const{
+  return d_vars[x].d_cmpAssignmentLB > 0;
+}
+
+bool ArithVariables::assignmentIsConsistent(ArithVar x) const{
+  return
+    d_vars[x].d_cmpAssignmentLB >= 0 &&
+    d_vars[x].d_cmpAssignmentUB <= 0;
+}
+
+
+void ArithVariables::clearSafeAssignments(bool revert){
+
+  if(revert && !d_safeAssignment.empty()){
+    invalidateDelta();
+  }
+
+  while(!d_safeAssignment.empty()){
+    ArithVar atBack = d_safeAssignment.back();
+    if(revert){
+      VarInfo& vi = d_vars.get(atBack);
+      BoundsInfo prev;
+      if(vi.setAssignment(d_safeAssignment[atBack], prev)){
+        addToBoundQueue(atBack, prev);
+      }
+    }
+    d_safeAssignment.pop_back();
+  }
+}
+
+void ArithVariables::revertAssignmentChanges(){
+  clearSafeAssignments(true);
+}
+void ArithVariables::commitAssignmentChanges(){
+  clearSafeAssignments(false);
+}
+
+bool ArithVariables::lowerBoundIsZero(ArithVar x){
+  return hasLowerBound(x) && getLowerBound(x).sgn() == 0;
+}
+
+bool ArithVariables::upperBoundIsZero(ArithVar x){
+  return hasUpperBound(x) && getUpperBound(x).sgn() == 0;
+}
+
+void ArithVariables::printEntireModel(std::ostream& out) const{
+  out << "---Printing Model ---" << std::endl;
+  for(var_iterator i = var_begin(), iend = var_end(); i != iend; ++i){
+    printModel(*i, out);
+  }
+  out << "---Done Model ---" << std::endl;
+}
+
+void ArithVariables::printModel(ArithVar x, std::ostream& out) const{
+  out << "model" << x << ": "
+      << asNode(x) << " "
+      << getAssignment(x) << " ";
+  if(!hasLowerBound(x)){
+    out << "no lb ";
+  }else{
+    out << getLowerBound(x) << " ";
+    out << getLowerBoundConstraint(x) << " ";
+  }
+  if(!hasUpperBound(x)){
+    out << "no ub ";
+  }else{
+    out << getUpperBound(x) << " ";
+    out << getUpperBoundConstraint(x) << " ";
+  }
+
+  if(isInteger(x) && !integralAssignment(x)){
+    out << "(not an integer)" << endl;
+  }
+  out << endl;
+}
+
+void ArithVariables::printModel(ArithVar x) const{
+  printModel(x,  Debug("model"));
+}
+
+void ArithVariables::pushUpperBound(VarInfo& vi){
+  ++vi.d_pushCount;
+  d_ubRevertHistory.push_back(make_pair(vi.d_var, vi.d_ub));
+}
+void ArithVariables::pushLowerBound(VarInfo& vi){
+  ++vi.d_pushCount;
+  d_lbRevertHistory.push_back(make_pair(vi.d_var, vi.d_lb));
+}
+
+void ArithVariables::popUpperBound(AVCPair* c){
+  ArithVar x = c->first;
+  VarInfo& vi = d_vars.get(x);
+  BoundsInfo prev;
+  if(vi.setUpperBound(c->second, prev)){
+    addToBoundQueue(x, prev);
+  }
+  --vi.d_pushCount;
+}
+
+void ArithVariables::popLowerBound(AVCPair* c){
+  ArithVar x = c->first;
+  VarInfo& vi = d_vars.get(x);
+  BoundsInfo prev;
+  if(vi.setLowerBound(c->second, prev)){
+    addToBoundQueue(x, prev);
+  }
+  --vi.d_pushCount;
+}
+
+void ArithVariables::addToBoundQueue(ArithVar v, const BoundsInfo& prev){
+  if(d_enqueueingBoundCounts && !d_boundsQueue.isKey(v)){
+    d_boundsQueue.set(v, prev);
+  }
+}
+
+BoundsInfo ArithVariables::selectBoundsInfo(ArithVar v, bool old) const {
+  if(old && d_boundsQueue.isKey(v)){
+    return d_boundsQueue[v];
+  }else{
+    return boundsInfo(v);
+  }
+}
+
+bool ArithVariables::boundsQueueEmpty() const {
+  return d_boundsQueue.empty();
+}
+
+void ArithVariables::processBoundsQueue(BoundUpdateCallback& changed){
+  while(!boundsQueueEmpty()){
+    ArithVar v = d_boundsQueue.back();
+    BoundsInfo prev = d_boundsQueue[v];
+    d_boundsQueue.pop_back();
+    BoundsInfo curr = boundsInfo(v);
+    if(prev != curr){
+      changed(v, prev);
+    }
+  }
+}
+
+void ArithVariables::invalidateDelta() {
+  d_deltaIsSafe = false;
+}
+
+void ArithVariables::setDelta(const Rational& d){
+  d_delta = d;
+  d_deltaIsSafe = true;
+}
+
+void ArithVariables::startQueueingBoundCounts(){
+  d_enqueueingBoundCounts = true;
+}
+void ArithVariables::stopQueueingBoundCounts(){
+  d_enqueueingBoundCounts = false;
+}
+
+bool ArithVariables::inMaps(ArithVar x) const{
+  return x < getNumberOfVariables();
+}
+
+ArithVariables::LowerBoundCleanUp::LowerBoundCleanUp(ArithVariables* pm)
+  : d_pm(pm)
+{}
+void ArithVariables::LowerBoundCleanUp::operator()(AVCPair* p){
+  d_pm->popLowerBound(p);
+}
+
+ArithVariables::UpperBoundCleanUp::UpperBoundCleanUp(ArithVariables* pm)
+  : d_pm(pm)
+{}
+void ArithVariables::UpperBoundCleanUp::operator()(AVCPair* p){
+  d_pm->popUpperBound(p);
+}
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/partial_model.h b/src/theory/arith/partial_model.h
new file mode 100644
index 0000000..b5eafb2
--- /dev/null
+++ b/src/theory/arith/partial_model.h
@@ -0,0 +1,411 @@
+/*********************                                                        */
+/*! \file partial_model.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Datastructures that track variable by variable information.
+ **
+ ** This is a datastructure that tracks variable specific information.
+ ** This is partially context dependent to back track upper/lower bounds
+ ** and information derived from these.
+ **/
+
+#include "cvc4_private.h"
+
+#include "expr/node.h"
+
+#include "context/context.h"
+#include "context/cdlist.h"
+
+
+#include "theory/arith/arithvar.h"
+#include "theory/arith/arith_utilities.h"
+#include "theory/arith/delta_rational.h"
+#include "theory/arith/constraint_forward.h"
+#include "theory/arith/callbacks.h"
+#include "theory/arith/bound_counts.h"
+
+
+#include <vector>
+#include <list>
+
+#pragma once
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+
+
+class ArithVariables {
+private:
+
+  class VarInfo {
+    friend class ArithVariables;
+    ArithVar d_var;
+
+    DeltaRational d_assignment;
+    ConstraintP d_lb;
+    ConstraintP d_ub;
+    int d_cmpAssignmentLB;
+    int d_cmpAssignmentUB;
+
+    unsigned d_pushCount;
+    ArithType d_type;
+    Node d_node;
+    bool d_auxiliary;
+
+  public:
+    VarInfo();
+
+    bool setAssignment(const DeltaRational& r, BoundsInfo& prev);
+    bool setLowerBound(ConstraintP c, BoundsInfo& prev);
+    bool setUpperBound(ConstraintP c, BoundsInfo& prev);
+
+    /** Returns true if this VarInfo has been initialized. */
+    bool initialized() const;
+
+    /**
+     * Initializes the VarInfo with the ArithVar index it is associated with,
+     * the node that the variable represents, and whether it is an auxillary
+     * variable.
+     */
+    void initialize(ArithVar v, Node n, bool aux);
+
+    /** Uninitializes the VarInfo. */
+    void uninitialize();
+
+    bool canBeReclaimed() const;
+
+    /** Indicator variables for if the assignment is equal to the upper
+     * and lower bounds. */
+    BoundCounts atBoundCounts() const;
+
+    /** Combination of indicator variables for whether it has upper and
+     * lower bounds.  */
+    BoundCounts hasBoundCounts() const;
+
+    /** Stores both atBoundCounts() and hasBoundCounts().  */
+    BoundsInfo boundsInfo() const;
+  };
+
+  /**Maps from ArithVar -> VarInfo */
+  typedef DenseMap<VarInfo> VarInfoVec;
+
+  /** This maps an ArithVar to its Variable information.*/
+  VarInfoVec d_vars;
+
+  /** Partial Map from Arithvar -> PreviousAssignment */
+  DenseMap<DeltaRational> d_safeAssignment;
+
+  /** if d_vars.isKey(x), then x < d_numberOfVariables */
+  ArithVar d_numberOfVariables;
+
+  /** [0, d_numberOfVariables) \intersect d_vars.keys == d_pool */
+  // Everything in the pool is fair game.
+  // There must be NO outstanding assertions
+  std::vector<ArithVar> d_pool;
+  std::vector<ArithVar> d_released;
+  //std::list<ArithVar>::iterator d_releasedIterator;
+
+  // Reverse Map from Node to ArithVar
+  // Inverse of d_vars[x].d_node
+  NodeToArithVarMap d_nodeToArithVarMap;
+
+
+  /** The queue of constraints where the assignment is at the bound.*/
+  DenseMap<BoundsInfo> d_boundsQueue;
+
+  /**
+   * If this is true, record the incoming changes to the bound information.
+   * If this is false, the responsibility of recording the changes is
+   * LinearEqualities's.
+   */
+  bool d_enqueueingBoundCounts;
+
+ public:
+
+  /** Returns the number of variables. */
+  ArithVar getNumberOfVariables() const;
+
+  /** Returns true if the node has an associated variables. */
+  bool hasArithVar(TNode x) const;
+
+  /** Returns true if the variable has a defining node. */
+  bool hasNode(ArithVar a) const;
+
+  /** Returns the ArithVar associated with a node. */
+  ArithVar asArithVar(TNode x) const;
+
+  /** Returns the node associated with an ArithVar. */
+  Node asNode(ArithVar a) const;
+
+  /** Allocates a freshly allocated variables. */
+  ArithVar allocateVariable();
+
+  class var_iterator {
+  private:
+    const VarInfoVec* d_vars;
+    VarInfoVec::const_iterator d_wrapped;
+  public:
+    var_iterator();
+    var_iterator(const VarInfoVec* vars, VarInfoVec::const_iterator ci);
+    var_iterator& operator++();
+
+    bool operator==(const var_iterator& other) const;
+    bool operator!=(const var_iterator& other) const;
+    ArithVar operator*() const;
+
+  private:
+    void nextInitialized();
+  };
+
+  var_iterator var_begin() const;
+  var_iterator var_end() const;
+
+
+  bool canBeReleased(ArithVar v) const;
+  void releaseArithVar(ArithVar v);
+  void attemptToReclaimReleased();
+
+  /** Is this variable guaranteed to have an integer assignment?
+   * (Should agree with the type system.) */
+  bool isInteger(ArithVar x) const;
+
+  /** Is the assignment to x integral? */
+  bool integralAssignment(ArithVar x) const;
+
+  /* Is this variable defined as a linear sum of other variables? */
+  bool isAuxiliary(ArithVar x) const;
+
+  /* Is the variable both input and not auxiliary? */
+  bool isIntegerInput(ArithVar x) const;
+
+ private:
+
+  typedef std::pair<ArithVar, ConstraintP> AVCPair;
+  class LowerBoundCleanUp {
+  private:
+    ArithVariables* d_pm;
+  public:
+    LowerBoundCleanUp(ArithVariables* pm);
+    void operator()(AVCPair* restore);
+  };
+
+  class UpperBoundCleanUp {
+  private:
+    ArithVariables* d_pm;
+  public:
+    UpperBoundCleanUp(ArithVariables* pm);
+    void operator()(AVCPair* restore);
+  };
+
+  typedef context::CDList<AVCPair, LowerBoundCleanUp> LBReverts;
+  LBReverts d_lbRevertHistory;
+
+  typedef context::CDList<AVCPair, UpperBoundCleanUp> UBReverts;
+  UBReverts d_ubRevertHistory;
+
+  void pushUpperBound(VarInfo&);
+  void popUpperBound(AVCPair*);
+  void pushLowerBound(VarInfo&);
+  void popLowerBound(AVCPair*);
+
+  // This is true when setDelta() is called, until invalidateDelta is called
+  bool d_deltaIsSafe;
+  // Cache of a value of delta to ensure a total order.
+  Rational d_delta;
+  // Function to call if the value of delta needs to be recomputed.
+  DeltaComputeCallback d_deltaComputingFunc;
+
+
+public:
+
+  ArithVariables(context::Context* c, DeltaComputeCallback deltaComputation);
+
+  /**
+   * This sets the lower bound for a variable in the current context.
+   * This must be stronger the previous constraint.
+   */
+  void setLowerBoundConstraint(ConstraintP lb);
+
+  /**
+   * This sets the upper bound for a variable in the current context.
+   * This must be stronger the previous constraint.
+   */
+  void setUpperBoundConstraint(ConstraintP ub);
+
+  /** Returns the constraint for the upper bound of a variable. */
+  inline ConstraintP getUpperBoundConstraint(ArithVar x) const{
+    return d_vars[x].d_ub;
+  }
+  /** Returns the constraint for the lower bound of a variable. */
+  inline ConstraintP getLowerBoundConstraint(ArithVar x) const{
+    return d_vars[x].d_lb;
+  }
+
+  /* Initializes a variable to a safe value.*/
+  void initialize(ArithVar x, Node n, bool aux);
+
+  ArithVar allocate(Node n, bool aux = false);
+
+  /* Gets the last assignment to a variable that is known to be consistent. */
+  const DeltaRational& getSafeAssignment(ArithVar x) const;
+  const DeltaRational& getAssignment(ArithVar x, bool safe) const;
+
+  /* Reverts all variable assignments to their safe values. */
+  void revertAssignmentChanges();
+
+  /* Commits all variables assignments as safe.*/
+  void commitAssignmentChanges();
+
+
+  bool lowerBoundIsZero(ArithVar x);
+  bool upperBoundIsZero(ArithVar x);
+
+  bool boundsAreEqual(ArithVar x) const;
+
+  /* Sets an unsafe variable assignment */
+  void setAssignment(ArithVar x, const DeltaRational& r);
+  void setAssignment(ArithVar x, const DeltaRational& safe, const DeltaRational& r);
+
+
+  /** Must know that the bound exists before calling this! */
+  const DeltaRational& getUpperBound(ArithVar x) const;
+  const DeltaRational& getLowerBound(ArithVar x) const;
+  const DeltaRational& getAssignment(ArithVar x) const;
+
+
+  bool equalsLowerBound(ArithVar x, const DeltaRational& c);
+  bool equalsUpperBound(ArithVar x, const DeltaRational& c);
+
+  /**
+   * If lowerbound > - \infty:
+   *   return getAssignment(x).cmp(getLowerBound(x))
+   * If lowerbound = - \infty:
+   *   return 1
+   */
+  int cmpToLowerBound(ArithVar x, const DeltaRational& c) const;
+
+  inline bool strictlyLessThanLowerBound(ArithVar x, const DeltaRational& c) const{
+    return cmpToLowerBound(x, c) < 0;
+  }
+  inline bool lessThanLowerBound(ArithVar x, const DeltaRational& c) const{
+    return cmpToLowerBound(x, c) <= 0;
+  }
+
+  inline bool strictlyGreaterThanLowerBound(ArithVar x, const DeltaRational& c) const{
+    return cmpToLowerBound(x, c) > 0;
+  }
+
+  inline bool greaterThanLowerBound(ArithVar x, const DeltaRational& c) const{
+    return cmpToLowerBound(x, c) >= 0;
+  }
+  /**
+   * If upperbound < \infty:
+   *   return getAssignment(x).cmp(getUpperBound(x))
+   * If upperbound = \infty:
+   *   return -1
+   */
+  int cmpToUpperBound(ArithVar x, const DeltaRational& c) const;
+
+  inline bool strictlyLessThanUpperBound(ArithVar x, const DeltaRational& c) const{
+    return cmpToUpperBound(x, c) < 0;
+  }
+
+  inline bool lessThanUpperBound(ArithVar x, const DeltaRational& c) const{
+    return cmpToUpperBound(x, c) <= 0;
+  }
+
+  inline bool strictlyGreaterThanUpperBound(ArithVar x, const DeltaRational& c) const{
+    return cmpToUpperBound(x, c) > 0;
+  }
+
+  inline bool greaterThanUpperBound(ArithVar x, const DeltaRational& c) const{
+    return cmpToUpperBound(x, c) >= 0;
+  }
+
+  inline int cmpAssignmentLowerBound(ArithVar x) const{
+    return d_vars[x].d_cmpAssignmentLB;
+  }
+  inline int cmpAssignmentUpperBound(ArithVar x) const{
+    return d_vars[x].d_cmpAssignmentUB;
+  }
+
+  inline BoundCounts atBoundCounts(ArithVar x) const {
+    return d_vars[x].atBoundCounts();
+  }
+  inline BoundCounts hasBoundCounts(ArithVar x) const {
+    return d_vars[x].hasBoundCounts();
+  }
+  inline BoundsInfo boundsInfo(ArithVar x) const{
+    return d_vars[x].boundsInfo();
+  }
+
+  bool strictlyBelowUpperBound(ArithVar x) const;
+  bool strictlyAboveLowerBound(ArithVar x) const;
+  bool assignmentIsConsistent(ArithVar x) const;
+
+  void printModel(ArithVar x, std::ostream& out) const;
+  void printModel(ArithVar x) const;
+
+  /** returns true iff x has both a lower and upper bound. */
+  bool hasEitherBound(ArithVar x) const;
+  inline bool hasLowerBound(ArithVar x) const{
+    return d_vars[x].d_lb != NullConstraint;
+  }
+  inline bool hasUpperBound(ArithVar x) const{
+    return d_vars[x].d_ub != NullConstraint;
+  }
+
+  const Rational& getDelta();
+
+  void invalidateDelta();
+
+  void setDelta(const Rational& d);
+
+  void startQueueingBoundCounts();
+  void stopQueueingBoundCounts();
+  void addToBoundQueue(ArithVar v, const BoundsInfo& prev);
+
+  BoundsInfo selectBoundsInfo(ArithVar v, bool old) const;
+
+  bool boundsQueueEmpty() const;
+  void processBoundsQueue(BoundUpdateCallback& changed);
+
+  void printEntireModel(std::ostream& out) const;
+
+
+  /**
+   * Precondition: assumes boundsAreEqual(x).
+   * If the either the lower/ upper bound is an equality, eq,
+   * this returns make_pair(eq, NullConstraint).
+   * Otherwise, this returns make_pair(lb, ub).
+   */
+  std::pair<ConstraintP, ConstraintP> explainEqualBounds(ArithVar x) const;
+
+private:
+
+  /**
+   * This function implements the mostly identical:
+   * revertAssignmentChanges() and commitAssignmentChanges().
+   */
+  void clearSafeAssignments(bool revert);
+
+  bool debugEqualSizes();
+
+  bool inMaps(ArithVar x) const;
+
+};/* class ArithVariables */
+
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
diff --git a/src/theory/arith/pseudoboolean_proc.cpp b/src/theory/arith/pseudoboolean_proc.cpp
new file mode 100644
index 0000000..0c1496a
--- /dev/null
+++ b/src/theory/arith/pseudoboolean_proc.cpp
@@ -0,0 +1,326 @@
+/*********************                                                        */
+/*! \file pseudoboolean_proc.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "base/output.h"
+#include "theory/arith/arith_utilities.h"
+#include "theory/arith/normal_form.h"
+#include "theory/arith/pseudoboolean_proc.h"
+#include "theory/rewriter.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+
+PseudoBooleanProcessor::PseudoBooleanProcessor(context::Context* user_context)
+  : d_pbBounds(user_context)
+  , d_subCache(user_context)
+  , d_pbs(user_context, 0)
+{}
+
+bool PseudoBooleanProcessor::decomposeAssertion(Node assertion, bool negated){
+  if (assertion.getKind() != kind::GEQ){ return false; }
+  Assert(assertion.getKind() == kind::GEQ);
+
+  Debug("pbs::rewrites") << "decomposeAssertion" << assertion  << std::endl;
+
+  Node l = assertion[0];
+  Node r = assertion[1];
+
+  if( r.getKind() != kind::CONST_RATIONAL ){
+    Debug("pbs::rewrites") << "not rhs constant" << assertion  << std::endl;
+    return false;
+  }
+  // don't bother matching on anything other than + on the left hand side
+  if( l.getKind() != kind::PLUS){
+    Debug("pbs::rewrites") << "not plus" << assertion  << std::endl;
+    return false;
+  }
+
+  if(!Polynomial::isMember(l)){
+    Debug("pbs::rewrites") << "not polynomial" << assertion  << std::endl;
+    return false;
+  }
+
+  Polynomial p = Polynomial::parsePolynomial(l);
+  clear();
+  if(negated){
+    // (not (>= p r))
+    // (< p r)
+    // (> (-p) (-r))
+    // (>= (-p) (-r +1))
+    d_off = (-r.getConst<Rational>());
+
+    if(d_off.constValue().isIntegral()){
+      d_off = d_off.constValue() + Rational(1) ;
+    }else{
+      d_off = Rational(d_off.constValue().ceiling());
+    }
+  }else{
+    // (>= p r)
+    d_off = r.getConst<Rational>();
+    d_off = Rational(d_off.constValue().ceiling());
+  }
+  Assert(d_off.constValue().isIntegral());
+
+  int adj = negated ? -1 : 1;
+  for(Polynomial::iterator i=p.begin(), end=p.end(); i != end; ++i){
+    Monomial m = *i;
+    const Rational& coeff = m.getConstant().getValue();
+    if(!(coeff.isOne() || coeff.isNegativeOne())){ return false; }
+    Assert(coeff.sgn() != 0);
+
+    const VarList& vl = m.getVarList();
+    Node v = vl.getNode();
+
+    if(!isPseudoBoolean(v)){ return false; }
+    int sgn = adj * coeff.sgn();
+    if(sgn > 0){
+      d_pos.push_back(v);
+    }else{
+      d_neg.push_back(v);
+    }
+  }
+  // all of the variables are pseudoboolean
+  // with coefficients +/- and the offsetoff
+  return true;
+}
+
+bool PseudoBooleanProcessor::isPseudoBoolean(Node v) const{
+  CDNode2PairMap::const_iterator ci = d_pbBounds.find(v);
+  if(ci != d_pbBounds.end()){
+    const PairNode& p = (*ci).second;
+    return !(p.first).isNull() && !(p.second).isNull();
+  }
+  return false;
+}
+
+void PseudoBooleanProcessor::addGeqZero(Node v, Node exp){
+  Assert(isIntVar(v));
+  Assert(!exp.isNull());
+  CDNode2PairMap::const_iterator ci = d_pbBounds.find(v);
+
+  Debug("pbs::rewrites") << "addGeqZero " << v << std::endl;
+
+  if(ci == d_pbBounds.end()){
+    d_pbBounds.insert(v, std::make_pair(exp, Node::null()));
+  }else{
+    const PairNode& p = (*ci).second;
+    if(p.first.isNull()){
+      Assert(!p.second.isNull());
+      d_pbBounds.insert(v, std::make_pair(exp, p.second));
+      Debug("pbs::rewrites") << "add pbs " << v << std::endl;
+      Assert(isPseudoBoolean(v));
+      d_pbs = d_pbs + 1;
+    }
+  }
+}
+
+void PseudoBooleanProcessor::addLeqOne(Node v, Node exp){
+  Assert(isIntVar(v));
+  Assert(!exp.isNull());
+  Debug("pbs::rewrites") << "addLeqOne " << v << std::endl;
+  CDNode2PairMap::const_iterator ci = d_pbBounds.find(v);
+  if(ci == d_pbBounds.end()){
+    d_pbBounds.insert(v, std::make_pair(Node::null(), exp));
+  }else{
+    const PairNode& p = (*ci).second;
+    if(p.second.isNull()){
+      Assert(!p.first.isNull());
+      d_pbBounds.insert(v, std::make_pair(p.first, exp));
+      Debug("pbs::rewrites") << "add pbs " << v << std::endl;
+      Assert(isPseudoBoolean(v));
+      d_pbs = d_pbs + 1;
+    }
+  }
+}
+
+void PseudoBooleanProcessor::learnRewrittenGeq(Node assertion, bool negated, Node orig){
+  Assert(assertion.getKind() == kind::GEQ);
+  Assert(assertion == Rewriter::rewrite(assertion));
+
+  // assume assertion is rewritten
+  Node l = assertion[0];
+  Node r = assertion[1];
+
+
+  if(r.getKind() == kind::CONST_RATIONAL){
+    const Rational& rc = r.getConst<Rational>();
+    if(isIntVar(l)){
+      if(!negated && rc.isZero()){  // (>= x 0)
+	addGeqZero(l, orig);
+      }else if(negated && rc == Rational(2)){
+	addLeqOne(l, orig);
+      }
+    }else if(l.getKind() == kind::MULT && l.getNumChildren() == 2){
+      Node c = l[0], v = l[1];
+      if(c.getKind() == kind::CONST_RATIONAL && c.getConst<Rational>().isNegativeOne()){
+	if(isIntVar(v)){
+	  if(!negated && rc.isNegativeOne()){ // (>= (* -1 x) -1)
+	    addLeqOne(v, orig);
+	  }
+	}
+      }
+    }
+  }
+
+  if(!negated){
+    learnGeqSub(assertion);
+  }
+}
+
+void PseudoBooleanProcessor::learnInternal(Node assertion, bool negated, Node orig){
+  switch(assertion.getKind()){
+  case kind::GEQ:
+  case kind::GT:
+  case kind::LEQ:
+  case kind::LT:
+    {
+      Node rw = Rewriter::rewrite(assertion);
+      if(assertion == rw){
+	if(assertion.getKind() == kind::GEQ){
+	  learnRewrittenGeq(assertion, negated, orig);
+	}
+      }else{
+	learnInternal(rw, negated, orig);
+      }
+    }
+    break;
+  case kind::NOT:
+    learnInternal(assertion[0], !negated, orig);
+    break;
+  default:
+    break; // do nothing
+  }
+}
+
+void PseudoBooleanProcessor::learn(Node assertion){
+  if(assertion.getKind() == kind::AND){
+    Node::iterator ci=assertion.begin(), cend = assertion.end();
+    for(; ci != cend; ++ci){
+      learn(*ci);
+    }
+  }else{
+    learnInternal(assertion, false, assertion);
+  }
+}
+
+Node PseudoBooleanProcessor::mkGeqOne(Node v){
+  NodeManager* nm = NodeManager::currentNM();
+  return nm->mkNode(kind::GEQ, v, mkRationalNode(Rational(1)));
+}
+
+void PseudoBooleanProcessor::learn(const NodeVec& assertions){
+  NodeVec::const_iterator ci, cend;
+  ci = assertions.begin(); cend=assertions.end();
+  for(; ci != cend; ++ci ){
+    learn(*ci);
+  }
+}
+
+void PseudoBooleanProcessor::addSub(Node from, Node to){
+  if(!d_subCache.hasSubstitution(from)){
+    Node rw_to = Rewriter::rewrite(to);
+    d_subCache.addSubstitution(from, rw_to);
+  }
+}
+
+void PseudoBooleanProcessor::learnGeqSub(Node geq){
+  Assert(geq.getKind() == kind::GEQ);
+  const bool negated = false;
+  bool success = decomposeAssertion(geq, negated);
+  if(!success){
+    Debug("pbs::rewrites") << "failed " << std::endl;
+    return;
+  }
+  Assert(d_off.constValue().isIntegral());
+  Integer off = d_off.constValue().ceiling();
+
+  // \sum pos >= \sum neg + off
+
+  // for now special case everything we want
+  // target easy clauses
+  if( d_pos.size() == 1 && d_neg.size() == 1 && off.isZero() ){
+    // x >= y
+    // |- (y >= 1) => (x >= 1)
+    Node x = d_pos.front();
+    Node y = d_neg.front();
+
+    Node xGeq1 = mkGeqOne(x);
+    Node yGeq1 = mkGeqOne(y);
+    Node imp = yGeq1.impNode(xGeq1);
+    addSub(geq, imp);
+  }else if( d_pos.size() == 0 && d_neg.size() == 2 && off.isNegativeOne()){
+    // 0 >= (x + y -1)
+    // |- 1 >= x + y
+    // |- (or (not (x >= 1)) (not (y >= 1)))
+    Node x = d_neg[0];
+    Node y = d_neg[1];
+
+    Node xGeq1 = mkGeqOne(x);
+    Node yGeq1 = mkGeqOne(y);
+    Node cases = (xGeq1.notNode()).orNode(yGeq1.notNode());
+    addSub(geq, cases);
+  }else if( d_pos.size() == 2 && d_neg.size() == 1 && off.isZero() ){
+    // (x + y) >= z
+    // |- (z >= 1) => (or (x >= 1) (y >=1 ))
+    Node x = d_pos[0];
+    Node y = d_pos[1];
+    Node z = d_neg[0];
+
+    Node xGeq1 = mkGeqOne(x);
+    Node yGeq1 = mkGeqOne(y);
+    Node zGeq1 = mkGeqOne(z);
+    NodeManager* nm =NodeManager::currentNM();
+    Node dis = nm->mkNode(kind::OR, zGeq1.notNode(), xGeq1, yGeq1);
+    addSub(geq, dis);
+  }
+}
+
+Node PseudoBooleanProcessor::applyReplacements(Node pre){
+  Node assertion = Rewriter::rewrite(pre);
+
+  Node result = d_subCache.apply(assertion);
+  if(Debug.isOn("pbs::rewrites") && result != assertion ){
+    Debug("pbs::rewrites") << "applyReplacements" <<assertion << "-> " << result << std::endl;
+  }
+  return result;
+}
+
+bool PseudoBooleanProcessor::likelyToHelp() const{
+  return d_pbs >= 100;
+}
+
+void PseudoBooleanProcessor::applyReplacements(NodeVec& assertions){
+  for(size_t i=0, N=assertions.size(); i < N; ++i){
+    Node assertion = assertions[i];
+    Node res = applyReplacements(assertion);
+    assertions[i] = res;
+  }
+}
+
+void PseudoBooleanProcessor::clear() {
+  d_off.clear();
+  d_pos.clear();
+  d_neg.clear();
+}
+
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
diff --git a/src/theory/arith/pseudoboolean_proc.h b/src/theory/arith/pseudoboolean_proc.h
new file mode 100644
index 0000000..23065ca
--- /dev/null
+++ b/src/theory/arith/pseudoboolean_proc.h
@@ -0,0 +1,108 @@
+/*********************                                                        */
+/*! \file pseudoboolean_proc.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <ext/hash_set>
+#include <vector>
+
+#include "context/cdhashmap.h"
+#include "context/cdo.h"
+#include "context/context.h"
+#include "expr/node.h"
+#include "theory/substitutions.h"
+#include "util/maybe.h"
+#include "util/rational.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+class PseudoBooleanProcessor {
+private:
+  // x ->  <geqZero, leqOne>
+  typedef std::pair<Node, Node> PairNode;
+  typedef std::vector<Node> NodeVec;
+  typedef context::CDHashMap<Node, PairNode, NodeHashFunction> CDNode2PairMap;
+  CDNode2PairMap d_pbBounds;
+  SubstitutionMap d_subCache;
+
+  typedef __gnu_cxx::hash_set<Node, NodeHashFunction> NodeSet;
+  NodeSet d_learningCache;
+
+  context::CDO<unsigned> d_pbs;
+
+  // decompose into \sum pos >= neg + off
+  Maybe<Rational> d_off;
+  NodeVec d_pos;
+  NodeVec d_neg;
+  void clear();
+  /** Returns true if successful. */
+  bool decomposeAssertion(Node assertion, bool negated);
+
+public:
+  PseudoBooleanProcessor(context::Context* user_context);
+
+  /** Assumes that the assertions have been rewritten. */
+  void learn(const NodeVec& assertions);
+
+  /** Assumes that the assertions have been rewritten. */
+  void applyReplacements(NodeVec& assertions);
+
+  bool likelyToHelp() const;
+
+  bool isPseudoBoolean(Node v) const;
+
+  // Adds the fact the that integert typed variable v
+  //   must be >= 0 to the context.
+  // This is explained by the explanation exp.
+  // exp cannot be null.
+  void addGeqZero(Node v, Node exp);
+
+
+  // Adds the fact the that integert typed variable v
+  //   must be <= 1 to the context.
+  // This is explained by the explanation exp.
+  // exp cannot be null.
+  void addLeqOne(Node v, Node exp);
+
+  static inline bool isIntVar(Node v){
+    return v.isVar() && v.getType().isInteger();
+  }
+
+private:
+  /** Assumes that the assertion has been rewritten. */
+  void learn(Node assertion);
+
+  /** Rewrites a node  */
+  Node applyReplacements(Node assertion);
+
+  void learnInternal(Node assertion, bool negated, Node orig);
+  void learnRewrittenGeq(Node assertion, bool negated, Node orig);
+
+  void addSub(Node from, Node to);
+  void learnGeqSub(Node geq);
+
+  static Node mkGeqOne(Node v);
+};
+
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/simplex.cpp b/src/theory/arith/simplex.cpp
new file mode 100644
index 0000000..9dd1371
--- /dev/null
+++ b/src/theory/arith/simplex.cpp
@@ -0,0 +1,283 @@
+/*********************                                                        */
+/*! \file simplex.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+
+#include "base/output.h"
+#include "options/arith_options.h"
+#include "theory/arith/constraint.h"
+#include "theory/arith/simplex.h"
+
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+
+SimplexDecisionProcedure::SimplexDecisionProcedure(LinearEqualityModule& linEq, ErrorSet& errors, RaiseConflict conflictChannel, TempVarMalloc tvmalloc)
+  : d_pivots(0)
+  , d_conflictVariables()
+  , d_linEq(linEq)
+  , d_variables(d_linEq.getVariables())
+  , d_tableau(d_linEq.getTableau())
+  , d_errorSet(errors)
+  , d_numVariables(0)
+  , d_conflictChannel(conflictChannel)
+  , d_conflictBuilder(NULL)
+  , d_arithVarMalloc(tvmalloc)
+  , d_errorSize(0)
+  , d_zero(0)
+  , d_posOne(1)
+  , d_negOne(-1)
+{
+  d_heuristicRule = options::arithErrorSelectionRule();
+  d_errorSet.setSelectionRule(d_heuristicRule);
+  d_conflictBuilder = new FarkasConflictBuilder();
+}
+
+SimplexDecisionProcedure::~SimplexDecisionProcedure(){
+  delete d_conflictBuilder;
+}
+
+
+bool SimplexDecisionProcedure::standardProcessSignals(TimerStat &timer, IntStat& conflicts) {
+  TimerStat::CodeTimer codeTimer(timer);
+  Assert( d_conflictVariables.empty() );
+
+
+  while(d_errorSet.moreSignals()){
+    ArithVar curr = d_errorSet.topSignal();
+    if(d_tableau.isBasic(curr) && !d_variables.assignmentIsConsistent(curr)){
+      Assert(d_linEq.basicIsTracked(curr));
+
+      if(!d_conflictVariables.isMember(curr) && checkBasicForConflict(curr)){
+
+        Debug("recentlyViolated")
+          << "It worked? "
+          << conflicts.getData()
+          << " " << curr
+          << " "  << checkBasicForConflict(curr) << endl;
+        reportConflict(curr);
+        ++conflicts;
+      }
+    }
+    // Pop signal afterwards in case d_linEq.trackVariable(curr);
+    // is needed for for the ErrorSet
+    d_errorSet.popSignal();
+  }
+  d_errorSize = d_errorSet.errorSize();
+
+  Assert(d_errorSet.noSignals());
+  return !d_conflictVariables.empty();
+}
+
+/** Reports a conflict to on the output channel. */
+void SimplexDecisionProcedure::reportConflict(ArithVar basic){
+  Assert(!d_conflictVariables.isMember(basic));
+  Assert(checkBasicForConflict(basic));
+
+  ConstraintCP conflicted = generateConflictForBasic(basic);
+  Assert(conflicted != NullConstraint);
+  d_conflictChannel.raiseConflict(conflicted);
+
+  d_conflictVariables.add(basic);
+}
+
+ConstraintCP SimplexDecisionProcedure::generateConflictForBasic(ArithVar basic) const {
+
+  Assert(d_tableau.isBasic(basic));
+  Assert(checkBasicForConflict(basic));
+
+  if(d_variables.cmpAssignmentLowerBound(basic) < 0){
+    Assert(d_linEq.nonbasicsAtUpperBounds(basic));
+    return d_linEq.generateConflictBelowLowerBound(basic, *d_conflictBuilder);
+  }else if(d_variables.cmpAssignmentUpperBound(basic) > 0){
+    Assert(d_linEq.nonbasicsAtLowerBounds(basic));
+    return d_linEq.generateConflictAboveUpperBound(basic, *d_conflictBuilder);
+  }else{
+    Unreachable();
+    return NullConstraint;
+  }
+}
+bool SimplexDecisionProcedure::maybeGenerateConflictForBasic(ArithVar basic) const {
+  if(checkBasicForConflict(basic)){
+    ConstraintCP conflicted = generateConflictForBasic(basic);
+    d_conflictChannel.raiseConflict(conflicted);
+    return true;
+  }else{
+    return false;
+  }
+}
+
+bool SimplexDecisionProcedure::checkBasicForConflict(ArithVar basic) const {
+  Assert(d_tableau.isBasic(basic));
+  Assert(d_linEq.basicIsTracked(basic));
+
+  if(d_variables.cmpAssignmentLowerBound(basic) < 0){
+    if(d_linEq.nonbasicsAtUpperBounds(basic)){
+      return true;
+    }
+  }else if(d_variables.cmpAssignmentUpperBound(basic) > 0){
+    if(d_linEq.nonbasicsAtLowerBounds(basic)){
+      return true;
+    }
+  }
+  return false;
+}
+
+void SimplexDecisionProcedure::tearDownInfeasiblityFunction(TimerStat& timer, ArithVar tmp){
+  TimerStat::CodeTimer codeTimer(timer);
+  Assert(tmp != ARITHVAR_SENTINEL);
+  Assert(d_tableau.isBasic(tmp));
+
+  RowIndex ri = d_tableau.basicToRowIndex(tmp);
+  d_linEq.stopTrackingRowIndex(ri);
+  d_tableau.removeBasicRow(tmp);
+  releaseVariable(tmp);
+}
+
+void SimplexDecisionProcedure::shrinkInfeasFunc(TimerStat& timer, ArithVar inf, const ArithVarVec& dropped){
+  TimerStat::CodeTimer codeTimer(timer);
+  for(ArithVarVec::const_iterator i=dropped.begin(), i_end = dropped.end(); i != i_end; ++i){
+    ArithVar back = *i;
+
+    int focusSgn = d_errorSet.focusSgn(back);
+    Rational chg(-focusSgn);
+
+    d_linEq.substitutePlusTimesConstant(inf, back, chg);
+  }
+}
+
+void SimplexDecisionProcedure::adjustInfeasFunc(TimerStat& timer, ArithVar inf, const AVIntPairVec& focusChanges){
+  TimerStat::CodeTimer codeTimer(timer);
+  for(AVIntPairVec::const_iterator i=focusChanges.begin(), i_end = focusChanges.end(); i != i_end; ++i){
+    ArithVar v = (*i).first;
+    int focusChange = (*i).second;
+
+    Rational chg(focusChange);
+    if(d_tableau.isBasic(v)){
+      d_linEq.substitutePlusTimesConstant(inf, v, chg);
+    }else{
+      d_linEq.directlyAddToCoefficient(inf, v, chg);
+    }
+  }
+}
+
+void SimplexDecisionProcedure::addToInfeasFunc(TimerStat& timer, ArithVar inf, ArithVar e){
+  AVIntPairVec justE;
+  int sgn  = d_errorSet.getSgn(e);
+  justE.push_back(make_pair(e, sgn));
+  adjustInfeasFunc(timer, inf, justE);
+}
+
+void SimplexDecisionProcedure::removeFromInfeasFunc(TimerStat& timer, ArithVar inf, ArithVar e){
+  AVIntPairVec justE;
+  int opSgn  = -d_errorSet.getSgn(e);
+  justE.push_back(make_pair(e, opSgn));
+  adjustInfeasFunc(timer, inf, justE);
+}
+
+ArithVar SimplexDecisionProcedure::constructInfeasiblityFunction(TimerStat& timer, const ArithVarVec& set){
+  Debug("constructInfeasiblityFunction") << "constructInfeasiblityFunction start" << endl;
+
+  TimerStat::CodeTimer codeTimer(timer);
+  Assert(!d_errorSet.focusEmpty());
+  Assert(debugIsASet(set));
+  
+  ArithVar inf = requestVariable();
+  Assert(inf != ARITHVAR_SENTINEL);
+
+  std::vector<Rational> coeffs;
+  std::vector<ArithVar> variables;
+
+  for(ArithVarVec::const_iterator iter = set.begin(), iend = set.end(); iter != iend; ++iter){
+    ArithVar e = *iter;
+
+    Assert(d_tableau.isBasic(e));
+    Assert(!d_variables.assignmentIsConsistent(e));
+
+    int sgn = d_errorSet.getSgn(e);
+    Assert(sgn == -1 || sgn == 1);
+    const Rational& violatedCoeff = sgn < 0 ? d_negOne : d_posOne;
+    coeffs.push_back(violatedCoeff);
+    variables.push_back(e);
+
+    Debug("constructInfeasiblityFunction") << violatedCoeff << " " << e << endl;
+
+  }
+  d_tableau.addRow(inf, coeffs, variables);
+  DeltaRational newAssignment = d_linEq.computeRowValue(inf, false);
+  d_variables.setAssignment(inf, newAssignment);
+
+  //d_linEq.trackVariable(inf);
+  d_linEq.trackRowIndex(d_tableau.basicToRowIndex(inf));
+
+  Debug("constructInfeasiblityFunction") << inf << " " << newAssignment << endl;
+  Debug("constructInfeasiblityFunction") << "constructInfeasiblityFunction done" << endl;
+  return inf;
+}
+
+ArithVar SimplexDecisionProcedure::constructInfeasiblityFunction(TimerStat& timer){
+  ArithVarVec inError;
+  d_errorSet.pushFocusInto(inError);
+  return constructInfeasiblityFunction(timer, inError);
+}
+
+ArithVar SimplexDecisionProcedure::constructInfeasiblityFunction(TimerStat& timer, ArithVar e){
+  ArithVarVec justE;
+  justE.push_back(e);
+  return constructInfeasiblityFunction(timer, justE);
+}
+
+void SimplexDecisionProcedure::addSgn(sgn_table& sgns, ArithVar col, int sgn, ArithVar basic){
+  pair<ArithVar, int> p = make_pair(col, determinizeSgn(sgn));
+  sgns[p].push_back(basic);
+}
+
+void SimplexDecisionProcedure::addRowSgns(sgn_table& sgns, ArithVar basic, int norm){
+  for(Tableau::RowIterator i = d_tableau.basicRowIterator(basic); !i.atEnd(); ++i){
+    const Tableau::Entry& entry = *i;
+    ArithVar v = entry.getColVar();
+    int sgn = (entry.getCoefficient().sgn());
+    addSgn(sgns, v, norm * sgn, basic);
+  }
+}
+
+ArithVar SimplexDecisionProcedure::find_basic_in_sgns(const sgn_table& sgns, ArithVar col, int sgn, const DenseSet& m, bool inside){
+  pair<ArithVar, int> p = make_pair(col, determinizeSgn(sgn));
+  sgn_table::const_iterator i = sgns.find(p);
+
+  if(i != sgns.end()){
+    const ArithVarVec& vec = (*i).second;
+    for(ArithVarVec::const_iterator viter = vec.begin(), vend = vec.end(); viter != vend; ++viter){
+      ArithVar curr = *viter;
+      if(inside == m.isMember(curr)){
+        return curr;
+      }
+    }
+  }
+  return ARITHVAR_SENTINEL;
+}
+
+SimplexDecisionProcedure::sgn_table::const_iterator SimplexDecisionProcedure::find_sgns(const sgn_table& sgns, ArithVar col, int sgn){
+  pair<ArithVar, int> p = make_pair(col, determinizeSgn(sgn));
+  return sgns.find(p);
+}
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/simplex.h b/src/theory/arith/simplex.h
new file mode 100644
index 0000000..b4cd54a
--- /dev/null
+++ b/src/theory/arith/simplex.h
@@ -0,0 +1,218 @@
+/*********************                                                        */
+/*! \file simplex.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Clark Barrett
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This is an implementation of the Simplex Module for the Simplex for DPLL(T)
+ ** decision procedure.
+ **
+ ** This implements the Simplex module for the Simpelx for DPLL(T) decision procedure.
+ ** See the Simplex for DPLL(T) technical report for more background.(citation?)
+ ** This shares with the theory a Tableau, and a PartialModel that:
+ **  - satisfies the equalities in the Tableau, and
+ **  - the assignment for the non-basic variables satisfies their bounds.
+ ** This is required to either produce a conflict or satisifying PartialModel.
+ ** Further, we require being told when a basic variable updates its value.
+ **
+ ** During the Simplex search we maintain a queue of variables.
+ ** The queue is required to contain all of the basic variables that voilate their bounds.
+ ** As elimination from the queue is more efficient to be done lazily,
+ ** we do not maintain that the queue of variables needs to be only basic variables or only
+ ** variables that satisfy their bounds.
+ **
+ ** The simplex procedure roughly follows Alberto's thesis. (citation?)
+ ** There is one round of selecting using a heuristic pivoting rule. (See PreferenceFunction
+ ** Documentation for the available options.)
+ ** The non-basic variable is the one that appears in the fewest pivots. (Bruno says that
+ ** Leonardo invented this first.)
+ ** After this, Bland's pivot rule is invoked.
+ **
+ ** During this proccess, we periodically inspect the queue of variables to
+ ** 1) remove now extraneous extries,
+ ** 2) detect conflicts that are "waiting" on the queue but may not be detected by the
+ **  current queue heuristics, and
+ ** 3) detect multiple conflicts.
+ **
+ ** Conflicts are greedily slackened to use the weakest bounds that still produce the
+ ** conflict.
+ **
+ ** Extra things tracked atm: (Subject to change at Tim's whims)
+ ** - A superset of all of the newly pivoted variables.
+ ** - A queue of additional conflicts that were discovered by Simplex.
+ **   These are theory valid and are currently turned into lemmas
+ **/
+
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "theory/arith/arithvar.h"
+#include "theory/arith/delta_rational.h"
+#include "theory/arith/error_set.h"
+#include "theory/arith/linear_equality.h"
+#include "theory/arith/partial_model.h"
+#include "theory/arith/tableau.h"
+#include "util/dense_map.h"
+#include "util/result.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+class SimplexDecisionProcedure {
+protected:
+  typedef std::vector< std::pair<ArithVar, int> > AVIntPairVec;
+
+  /** Pivot count of the current round of pivoting. */
+  uint32_t d_pivots;
+
+  /** The set of variables that are in conflict in this round. */
+  DenseSet d_conflictVariables;
+
+  /** The rule to use for heuristic selection mode. */
+  ErrorSelectionRule d_heuristicRule;
+
+  /** Linear equality module. */
+  LinearEqualityModule& d_linEq;
+
+  /**
+   * Manages information about the assignment and upper and lower bounds on
+   * variables.
+   * Partial model matches that in LinearEqualityModule.
+   */
+  ArithVariables& d_variables;
+
+  /**
+   * Stores the linear equalities used by Simplex.
+   * Tableau from the LinearEquality module.
+   */
+  Tableau& d_tableau;
+
+  /** Contains a superset of the basic variables in violation of their bounds. */
+  ErrorSet& d_errorSet;
+
+  /** Number of variables in the system. This is used for tuning heuristics. */
+  ArithVar d_numVariables;
+
+  /** This is the call back channel for Simplex to report conflicts. */
+  RaiseConflict d_conflictChannel;
+
+  /** This is the call back channel for Simplex to report conflicts. */
+  FarkasConflictBuilder* d_conflictBuilder;
+
+  /** Used for requesting d_opt, bound and error variables for primal.*/
+  TempVarMalloc d_arithVarMalloc;
+
+  /** The size of the error set. */
+  uint32_t d_errorSize;
+
+  /** A local copy of 0. */
+  const Rational d_zero;
+
+  /** A local copy of 1. */
+  const Rational d_posOne;
+
+  /** A local copy of -1. */
+  const Rational d_negOne;
+
+  ArithVar constructInfeasiblityFunction(TimerStat& timer);
+  ArithVar constructInfeasiblityFunction(TimerStat& timer, ArithVar e);
+  ArithVar constructInfeasiblityFunction(TimerStat& timer, const ArithVarVec& set);
+
+  void tearDownInfeasiblityFunction(TimerStat& timer, ArithVar inf);
+  void adjustInfeasFunc(TimerStat& timer, ArithVar inf, const AVIntPairVec& focusChanges);
+  void addToInfeasFunc(TimerStat& timer, ArithVar inf, ArithVar e);
+  void removeFromInfeasFunc(TimerStat& timer, ArithVar inf, ArithVar e);
+  void shrinkInfeasFunc(TimerStat& timer, ArithVar inf, const ArithVarVec& dropped);
+
+public:
+  SimplexDecisionProcedure(LinearEqualityModule& linEq, ErrorSet& errors, RaiseConflict conflictChannel, TempVarMalloc tvmalloc);
+  virtual ~SimplexDecisionProcedure();
+
+  /**
+   * Tries to update the assignments of variables such that all of the
+   * assignments are consistent with their bounds.
+   * This is done by a simplex search through the possible bases of the tableau.
+   *
+   * If all of the variables can be made consistent with their bounds
+   * SAT is returned. Otherwise UNSAT is returned, and at least 1 conflict
+   * was reported on the conflictCallback passed to the Module.
+   *
+   * Tableau pivoting is performed so variables may switch from being basic to
+   * nonbasic and vice versa.
+   *
+   * Corresponds to the "check()" procedure in [Cav06].
+   */
+  virtual Result::Sat findModel(bool exactResult) = 0;
+
+  void increaseMax() { d_numVariables++; }
+
+
+  uint32_t getPivots() const { return d_pivots; }
+protected:
+
+  /** Reports a conflict to on the output channel. */
+  void reportConflict(ArithVar basic);
+
+  /**
+   * Checks a basic variable, b, to see if it is in conflict.
+   * If a conflict is discovered a node summarizing the conflict is returned.
+   * Otherwise, Node::null() is returned.
+   */
+  bool maybeGenerateConflictForBasic(ArithVar basic) const;
+
+  /** Returns true if a tracked basic variable has a conflict on it. */
+  bool checkBasicForConflict(ArithVar b) const;
+
+  /**
+   * If a basic variable has a conflict on its row,
+   * this produces a minimized row on the conflict channel.
+   */
+  ConstraintCP generateConflictForBasic(ArithVar basic) const;
+
+
+  /** Gets a fresh variable from TheoryArith. */
+  ArithVar requestVariable(){
+    return d_arithVarMalloc.request();
+  }
+
+  /** Releases a requested variable from TheoryArith.*/
+  void releaseVariable(ArithVar v){
+    d_arithVarMalloc.release(v);
+  }
+
+  /** Post condition: !d_queue.moreSignals() */
+  bool standardProcessSignals(TimerStat &timer, IntStat& conflictStat);
+
+  struct ArithVarIntPairHashFunc {
+    size_t operator()(const std::pair<ArithVar, int>& p) const {
+      size_t h1 = std::hash<ArithVar>()(p.first);
+      size_t h2 = std::hash<int>()(p.second);
+      return h1 + 3389 * h2;
+    }
+  };
+
+  typedef std::hash_map< std::pair<ArithVar, int>, ArithVarVec, ArithVarIntPairHashFunc> sgn_table;
+
+  static inline int determinizeSgn(int sgn){
+    return sgn < 0 ? -1 : (sgn == 0 ? 0 : 1);
+  }
+
+  void addSgn(sgn_table& sgns, ArithVar col, int sgn, ArithVar basic);
+  void addRowSgns(sgn_table& sgns, ArithVar basic, int norm);
+  ArithVar find_basic_in_sgns(const sgn_table& sgns, ArithVar col, int sgn, const DenseSet& m, bool inside);
+
+  sgn_table::const_iterator find_sgns(const sgn_table& sgns, ArithVar col, int sgn);
+
+};/* class SimplexDecisionProcedure */
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/simplex_update.cpp b/src/theory/arith/simplex_update.cpp
new file mode 100644
index 0000000..adf0dc0
--- /dev/null
+++ b/src/theory/arith/simplex_update.cpp
@@ -0,0 +1,192 @@
+/*********************                                                        */
+/*! \file simplex_update.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This implements UpdateInfo.
+ **
+ ** This implements the UpdateInfo.
+ **/
+
+
+#include "theory/arith/simplex_update.h"
+#include "theory/arith/constraint.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+
+UpdateInfo::UpdateInfo():
+  d_nonbasic(ARITHVAR_SENTINEL),
+  d_nonbasicDirection(0),
+  d_nonbasicDelta(),
+  d_foundConflict(false),
+  d_errorsChange(),
+  d_focusDirection(),
+  d_tableauCoefficient(),
+  d_limiting(NullConstraint),
+  d_witness(AntiProductive)
+{}
+
+UpdateInfo::UpdateInfo(ArithVar nb, int dir):
+  d_nonbasic(nb),
+  d_nonbasicDirection(dir),
+  d_nonbasicDelta(),
+  d_foundConflict(false),
+  d_errorsChange(),
+  d_focusDirection(),
+  d_tableauCoefficient(),
+  d_limiting(NullConstraint),
+  d_witness(AntiProductive)
+{
+  Assert(dir == 1 || dir == -1);
+}
+
+UpdateInfo::UpdateInfo(bool conflict, ArithVar nb, const DeltaRational& delta, const Rational& r, ConstraintP c):
+  d_nonbasic(nb),
+  d_nonbasicDirection(delta.sgn()),
+  d_nonbasicDelta(delta),
+  d_foundConflict(true),
+  d_errorsChange(),
+  d_focusDirection(),
+  d_tableauCoefficient(&r),
+  d_limiting(c),
+  d_witness(ConflictFound)
+{
+  Assert(conflict);
+}
+
+UpdateInfo UpdateInfo::conflict(ArithVar nb, const DeltaRational& delta, const Rational& r, ConstraintP lim){
+  return UpdateInfo(true, nb, delta, r, lim);
+}
+
+void UpdateInfo::updateUnbounded(const DeltaRational& delta, int ec, int f){
+  d_limiting = NullConstraint;
+  d_nonbasicDelta = delta;
+  d_errorsChange = ec;
+  d_focusDirection = f;
+  d_tableauCoefficient.clear();
+  updateWitness();
+  Assert(unbounded());
+  Assert(improvement(d_witness));
+  Assert(!describesPivot());
+  Assert(debugSgnAgreement());
+}
+void UpdateInfo::updatePureFocus(const DeltaRational& delta, ConstraintP c){
+  d_limiting = c;
+  d_nonbasicDelta = delta;
+  d_errorsChange.clear();
+  d_focusDirection = 1;
+  d_tableauCoefficient.clear();
+  updateWitness();
+  Assert(!describesPivot());
+  Assert(improvement(d_witness));
+  Assert(debugSgnAgreement());
+}
+
+void UpdateInfo::updatePivot(const DeltaRational& delta, const Rational& r, ConstraintP c){
+  d_limiting = c;
+  d_nonbasicDelta = delta;
+  d_errorsChange.clear();
+  d_focusDirection.clear();
+  updateWitness();
+  Assert(describesPivot());
+  Assert(debugSgnAgreement());
+}
+
+void UpdateInfo::updatePivot(const DeltaRational& delta, const Rational& r, ConstraintP c, int ec){
+  d_limiting = c;
+  d_nonbasicDelta = delta;
+  d_errorsChange = ec;
+  d_focusDirection.clear();
+  d_tableauCoefficient = &r;
+  updateWitness();
+  Assert(describesPivot());
+  Assert(debugSgnAgreement());
+}
+
+void UpdateInfo::witnessedUpdate(const DeltaRational& delta, ConstraintP c, int ec, int fd){
+  d_limiting = c;
+  d_nonbasicDelta = delta;
+  d_errorsChange = ec;
+  d_focusDirection = fd;
+  d_tableauCoefficient.clear();
+  updateWitness();
+  Assert(describesPivot() || improvement(d_witness));
+  Assert(debugSgnAgreement());
+}
+
+void UpdateInfo::update(const DeltaRational& delta, const Rational& r, ConstraintP c, int ec, int fd){
+  d_limiting = c;
+  d_nonbasicDelta = delta;
+  d_errorsChange = ec;
+  d_focusDirection = fd;
+  d_tableauCoefficient = &r;
+  updateWitness();
+  Assert(describesPivot() || improvement(d_witness));
+  Assert(debugSgnAgreement());
+}
+
+bool UpdateInfo::describesPivot() const {
+  return !unbounded() && d_nonbasic != d_limiting->getVariable();
+}
+
+void UpdateInfo::output(std::ostream& out) const{
+  out << "{UpdateInfo"
+      << ", nb = " << d_nonbasic
+      << ", dir = " << d_nonbasicDirection
+      << ", delta = " << d_nonbasicDelta
+      << ", conflict = " << d_foundConflict
+      << ", errorChange = " << d_errorsChange
+      << ", focusDir = " << d_focusDirection
+      << ", witness = " << d_witness
+      << ", limiting = " << d_limiting
+      << "}";
+}
+
+ArithVar UpdateInfo::leaving() const{
+  Assert(describesPivot());
+
+  return d_limiting->getVariable();
+}
+
+std::ostream& operator<<(std::ostream& out, const UpdateInfo& up){
+  up.output(out);
+  return out;
+}
+
+
+std::ostream& operator<<(std::ostream& out,  WitnessImprovement w){
+  switch(w){
+  case ConflictFound:
+    out << "ConflictFound"; break;
+  case ErrorDropped:
+    out << "ErrorDropped"; break;
+  case FocusImproved:
+    out << "FocusImproved"; break;
+  case FocusShrank:
+    out << "FocusShrank"; break;
+  case Degenerate:
+    out << "Degenerate"; break;
+  case BlandsDegenerate:
+    out << "BlandsDegenerate"; break;
+  case HeuristicDegenerate:
+    out << "HeuristicDegenerate"; break;
+  case AntiProductive:
+    out << "AntiProductive"; break;
+  }
+  return out;
+}
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/simplex_update.h b/src/theory/arith/simplex_update.h
new file mode 100644
index 0000000..2c02e3f
--- /dev/null
+++ b/src/theory/arith/simplex_update.h
@@ -0,0 +1,352 @@
+/*********************                                                        */
+/*! \file simplex_update.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This provides a class for summarizing pivot proposals.
+ **
+ ** This shares with the theory a Tableau, and a PartialModel that:
+ **  - satisfies the equalities in the Tableau, and
+ **  - the assignment for the non-basic variables satisfies their bounds.
+ ** This maintains the relationship needed by the SimplexDecisionProcedure.
+ **
+ ** In the language of Simplex for DPLL(T), this provides:
+ ** - update()
+ ** - pivotAndUpdate()
+ **
+ ** This class also provides utility functions that require
+ ** using both the Tableau and PartialModel.
+ **/
+
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "theory/arith/delta_rational.h"
+#include "theory/arith/arithvar.h"
+#include "theory/arith/constraint_forward.h"
+#include "util/maybe.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+enum WitnessImprovement {
+  ConflictFound = 0,
+  ErrorDropped = 1,
+  FocusImproved = 2,
+  FocusShrank = 3,
+  Degenerate = 4,
+  BlandsDegenerate = 5,
+  HeuristicDegenerate = 6,
+  AntiProductive = 7
+};
+
+inline bool strongImprovement(WitnessImprovement w){
+  return w <= FocusImproved;
+}
+
+inline bool improvement(WitnessImprovement w){
+  return w <= FocusShrank;
+}
+
+inline bool degenerate(WitnessImprovement w){
+  switch(w){
+  case Degenerate:
+  case BlandsDegenerate:
+  case HeuristicDegenerate:
+    return true;
+  default:
+    return false;
+  }
+}
+
+std::ostream& operator<<(std::ostream& out,  WitnessImprovement w);
+
+/**
+ * This class summarizes both potential:
+ * - pivot-and-update operations or
+ * - a pure update operation.
+ * This stores enough information for the various algorithms  hat consider these operations.
+ * These require slightly different pieces of information at different points
+ * so they are a bit verbose and paranoid.
+ */
+class UpdateInfo {
+private:
+
+  /**
+   * The nonbasic variables under consideration.
+   * This is either the entering variable on a pivot and update
+   * or the variable being updated.
+   * This can only be set in the constructor or assignment.
+   *
+   * If this uninitialized, then this is ARITHVAR_SENTINEL.
+   */
+  ArithVar d_nonbasic;
+
+  /**
+   * The sgn of the "intended" derivative (delta) of the update to d_nonbasic.
+   * This is either 1, -1, or 0.
+   * It is "intended" as the delta is always allowed to be 0.
+   * (See debugSgnAgreement().)
+   *
+   * If this uninitialized, then this is 0.
+   * If this is initialized, then it is -1 or 1.
+   *
+   * This can only be set in the constructor or assignment.
+   */
+  int d_nonbasicDirection;
+
+  /**
+   * The change in the assignment of d_nonbasic.
+   * This is changed via the updateProposal(...) methods.
+   * The value needs to satisfy debugSgnAgreement() or it is in conflict.
+   */
+  Maybe<DeltaRational> d_nonbasicDelta;
+
+  /**
+   * This is true if the pivot-and-update is *known* to cause a conflict.
+   * This can only be true if it was constructed through the static conflict(...) method.
+   */
+  bool d_foundConflict;
+
+  /** This is the change in the size of the error set. */
+  Maybe<int> d_errorsChange;
+
+  /** This is the sgn of the change in the value of the focus set.*/
+  Maybe<int> d_focusDirection;
+
+  /** This is the sgn of the change in the value of the focus set.*/
+  Maybe<DeltaRational> d_focusChange;
+
+  /** This is the coefficient in the tableau for the entry.*/
+  Maybe<const Rational*> d_tableauCoefficient;
+
+  /**
+   * This is the constraint that nonbasic is basic is updating s.t. its variable is against it.
+   * This has 3 different possibilities:
+   * - Unbounded : then this is NullConstraint and unbounded() is true.
+   * - Pivot-And-Update: then this is not NullConstraint and the variable is not d_nonbasic.
+   * - Update: then this is not NullConstraint and the variable is d_nonbasic.
+   */
+  ConstraintP d_limiting;
+
+  WitnessImprovement d_witness;
+
+  /**
+   * This returns true if
+   * d_nonbasicDelta is zero() or its sgn() must agree with d_nonbasicDirection.
+   */
+  bool debugSgnAgreement() const {
+    int deltaSgn = d_nonbasicDelta.constValue().sgn();
+    return deltaSgn == 0 || deltaSgn == d_nonbasicDirection;
+  }
+
+  /** This private constructor allows for setting conflict to true. */
+  UpdateInfo(bool conflict, ArithVar nb, const DeltaRational& delta, const Rational& r, ConstraintP lim);
+
+public:
+
+  /** This constructs an uninitialized UpdateInfo. */
+  UpdateInfo();
+
+  /**
+   * This constructs an initialized UpdateInfo.
+   * dir must be 1 or -1.
+   */
+  UpdateInfo(ArithVar nb, int dir);
+
+  /**
+   * This updates the nonBasicDelta to d and limiting to NullConstraint.
+   * This describes an unbounded() update.
+   */
+  void updateUnbounded(const DeltaRational& d, int ec, int f);
+
+
+  void updatePureFocus(const DeltaRational& d, ConstraintP c);
+  //void updatePureError(const DeltaRational& d, Constraint c, int e);
+  //void updatePure(const DeltaRational& d, Constraint c, int e, int f);
+
+  /**
+   * This updates the nonBasicDelta to d and limiting to c.
+   * This clears errorChange() and focusDir().
+   */
+  void updatePivot(const DeltaRational& d, const Rational& r,  ConstraintP c);
+
+  /**
+   * This updates the nonBasicDelta to d, limiting to c, and errorChange to e.
+   * This clears focusDir().
+   */
+  void updatePivot(const DeltaRational& d, const Rational& r, ConstraintP c, int e);
+
+  /**
+   * This updates the nonBasicDelta to d, limiting to c, errorChange to e and
+   * focusDir to f.
+   */
+  void witnessedUpdate(const DeltaRational& d, ConstraintP c, int e, int f);
+  void update(const DeltaRational& d, const Rational& r, ConstraintP c, int e, int f);
+
+
+  static UpdateInfo conflict(ArithVar nb, const DeltaRational& delta, const Rational& r, ConstraintP lim);
+
+  inline ArithVar nonbasic() const { return d_nonbasic; }
+  inline bool uninitialized() const {
+    return d_nonbasic == ARITHVAR_SENTINEL;
+  }
+
+  /**
+   * There is no limiting value to the improvement of the focus.
+   * If this is true, this never describes an update.
+   */
+  inline bool unbounded() const {
+    return d_limiting == NullConstraint;
+  }
+
+  /**
+   * The update either describes a pivotAndUpdate operation
+   * or it describes just an update.
+   */
+  bool describesPivot() const;
+
+  /** Returns the . describesPivot() must be true. */
+  ArithVar leaving() const;
+
+  /**
+   * Returns true if this is *known* to find a conflict.
+   * If true, this must have been made through the static conflict(...) function.
+   */
+  bool foundConflict() const { return d_foundConflict; }
+
+  /** Returns the direction nonbasic is supposed to move. */
+  inline int nonbasicDirection() const{  return d_nonbasicDirection; }
+
+  /** Requires errorsChange to be set through setErrorsChange or updateProposal. */
+  inline int errorsChange() const { return d_errorsChange; }
+
+  /**
+   * If errorsChange has been set, return errorsChange().
+   * Otherwise, return def.
+   */
+  inline int errorsChangeSafe(int def) const {
+    if(d_errorsChange.just()){
+      return d_errorsChange;
+    }else{
+      return def;
+    }
+  }
+
+  /** Sets the errorChange. */
+  void setErrorsChange(int ec){
+    d_errorsChange = ec;
+    updateWitness();
+  }
+
+
+  /** Requires errorsChange to be set through setErrorsChange or updateProposal. */
+  inline int focusDirection() const{ return d_focusDirection; }
+
+  /** Sets the focusDirection. */
+  void setFocusDirection(int fd){
+    Assert(-1 <= fd  && fd <= 1);
+    d_focusDirection = fd;
+    updateWitness();
+  }
+
+  /**
+   * nonbasicDirection must be the same as the sign for the focus function's
+   * coefficient for this to be safe.
+   * The burden for this being safe is on the user!
+   */
+  void determineFocusDirection(){
+    int deltaSgn = d_nonbasicDelta.constValue().sgn();
+    setFocusDirection(deltaSgn * d_nonbasicDirection);
+  }
+
+  /** Requires nonbasicDelta to be set through updateProposal(...). */
+  const DeltaRational& nonbasicDelta() const {
+    return d_nonbasicDelta;
+  }
+  const Rational& getCoefficient() const {
+    Assert(describesPivot());
+    Assert(d_tableauCoefficient.constValue() != NULL);
+    return *(d_tableauCoefficient.constValue());
+  }
+  int basicDirection() const {
+    return nonbasicDirection() * (getCoefficient().sgn());
+  }
+
+  /** Returns the limiting constraint. */
+  inline ConstraintP limiting() const {
+    return d_limiting;
+  }
+
+  WitnessImprovement getWitness(bool useBlands = false) const{
+    Assert(d_witness == computeWitness());
+
+    if(d_witness == Degenerate){
+      if(useBlands){
+        return BlandsDegenerate;
+      }else{
+        return HeuristicDegenerate;
+      }
+    }else{
+      return d_witness;
+    }
+  }
+
+  const DeltaRational& focusChange() const {
+    return d_focusChange;
+  }
+  void setFocusChange(const DeltaRational& fc) {
+    d_focusChange = fc;
+  }
+
+  /** Outputs the UpdateInfo into out. */
+  void output(std::ostream& out) const;
+
+private:
+  void updateWitness() {
+    d_witness = computeWitness();
+    Assert(describesPivot() || improvement(d_witness));
+  }
+
+  /**
+   * Determines the appropriate WitnessImprovement for the update.
+   * useBlands breaks ties for degenerate pivots.
+   *
+   * This is safe if:
+   * - d_foundConflict is true, or
+   * - d_foundConflict is false and d_errorsChange has been set and d_errorsChange < 0, or
+   * - d_foundConflict is false and d_errorsChange has been set and d_errorsChange >= 0 and d_focusDirection has been set.
+   */
+  WitnessImprovement computeWitness() const {
+    if(d_foundConflict){
+      return ConflictFound;
+    }else if(d_errorsChange.just() && d_errorsChange < 0){
+      return ErrorDropped;
+    }else if(d_errorsChange.nothing() || d_errorsChange == 0){
+      if(d_focusDirection.just()){
+        if(d_focusDirection > 0){
+          return FocusImproved;
+        }else if(d_focusDirection == 0){
+          return Degenerate;
+        }
+      }
+    }
+    return AntiProductive;
+  }
+
+};
+
+std::ostream& operator<<(std::ostream& out, const UpdateInfo& up);
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/soi_simplex.cpp b/src/theory/arith/soi_simplex.cpp
new file mode 100644
index 0000000..0a437cd
--- /dev/null
+++ b/src/theory/arith/soi_simplex.cpp
@@ -0,0 +1,1013 @@
+/*********************                                                        */
+/*! \file soi_simplex.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+#include "theory/arith/soi_simplex.h"
+
+#include <algorithm>
+
+#include "base/output.h"
+#include "options/arith_options.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/arith/constraint.h"
+#include "util/statistics_registry.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+
+SumOfInfeasibilitiesSPD::SumOfInfeasibilitiesSPD(LinearEqualityModule& linEq, ErrorSet& errors, RaiseConflict conflictChannel, TempVarMalloc tvmalloc)
+  : SimplexDecisionProcedure(linEq, errors, conflictChannel, tvmalloc)
+  , d_soiVar(ARITHVAR_SENTINEL)
+  , d_pivotBudget(0)
+  , d_prevWitnessImprovement(AntiProductive)
+  , d_witnessImprovementInARow(0)
+  , d_sgnDisagreements()
+  , d_statistics(d_pivots)
+{ }
+
+SumOfInfeasibilitiesSPD::Statistics::Statistics(uint32_t& pivots):
+  d_initialSignalsTime("theory::arith::SOI::initialProcessTime"),
+  d_initialConflicts("theory::arith::SOI::UpdateConflicts", 0),
+  d_soiFoundUnsat("theory::arith::SOI::FoundUnsat", 0),
+  d_soiFoundSat("theory::arith::SOI::FoundSat", 0),
+  d_soiMissed("theory::arith::SOI::Missed", 0),
+  d_soiConflicts("theory::arith::SOI::ConfMin::num", 0),
+  d_hasToBeMinimal("theory::arith::SOI::HasToBeMin", 0),
+  d_maybeNotMinimal("theory::arith::SOI::MaybeNotMin", 0),
+  d_soiTimer("theory::arith::SOI::Time"),
+  d_soiFocusConstructionTimer("theory::arith::SOI::Construction"),
+  d_soiConflictMinimization("theory::arith::SOI::Conflict::Minimization"),
+  d_selectUpdateForSOI("theory::arith::SOI::selectSOI"),
+  d_finalCheckPivotCounter("theory::arith::SOI::lastPivots", pivots)
+{
+  smtStatisticsRegistry()->registerStat(&d_initialSignalsTime);
+  smtStatisticsRegistry()->registerStat(&d_initialConflicts);
+
+  smtStatisticsRegistry()->registerStat(&d_soiFoundUnsat);
+  smtStatisticsRegistry()->registerStat(&d_soiFoundSat);
+  smtStatisticsRegistry()->registerStat(&d_soiMissed);
+
+  smtStatisticsRegistry()->registerStat(&d_soiConflicts);
+  smtStatisticsRegistry()->registerStat(&d_hasToBeMinimal);
+  smtStatisticsRegistry()->registerStat(&d_maybeNotMinimal);
+
+  smtStatisticsRegistry()->registerStat(&d_soiTimer);
+  smtStatisticsRegistry()->registerStat(&d_soiFocusConstructionTimer);
+
+  smtStatisticsRegistry()->registerStat(&d_soiConflictMinimization);
+
+  smtStatisticsRegistry()->registerStat(&d_selectUpdateForSOI);
+
+  smtStatisticsRegistry()->registerStat(&d_finalCheckPivotCounter);
+}
+
+SumOfInfeasibilitiesSPD::Statistics::~Statistics(){
+  smtStatisticsRegistry()->unregisterStat(&d_initialSignalsTime);
+  smtStatisticsRegistry()->unregisterStat(&d_initialConflicts);
+
+  smtStatisticsRegistry()->unregisterStat(&d_soiFoundUnsat);
+  smtStatisticsRegistry()->unregisterStat(&d_soiFoundSat);
+  smtStatisticsRegistry()->unregisterStat(&d_soiMissed);
+
+  smtStatisticsRegistry()->unregisterStat(&d_soiConflicts);
+  smtStatisticsRegistry()->unregisterStat(&d_hasToBeMinimal);
+  smtStatisticsRegistry()->unregisterStat(&d_maybeNotMinimal);
+
+  smtStatisticsRegistry()->unregisterStat(&d_soiTimer);
+  smtStatisticsRegistry()->unregisterStat(&d_soiFocusConstructionTimer);
+
+  smtStatisticsRegistry()->unregisterStat(&d_soiConflictMinimization);
+
+  smtStatisticsRegistry()->unregisterStat(&d_selectUpdateForSOI);
+  smtStatisticsRegistry()->unregisterStat(&d_finalCheckPivotCounter);
+}
+
+Result::Sat SumOfInfeasibilitiesSPD::findModel(bool exactResult){
+  Assert(d_conflictVariables.empty());
+  Assert(d_sgnDisagreements.empty());
+
+  d_pivots = 0;
+  static CVC4_THREADLOCAL(unsigned int) instance = 0;
+  instance = instance + 1;
+  static const bool verbose = false;
+
+  if(d_errorSet.errorEmpty() && !d_errorSet.moreSignals()){
+    Debug("soi::findModel") << "soiFindModel("<< instance <<") trivial" << endl;
+    Assert(d_conflictVariables.empty());
+    return Result::SAT;
+  }
+
+  // We need to reduce this because of
+  d_errorSet.reduceToSignals();
+
+  // We must start tracking NOW
+  d_errorSet.setSelectionRule(SUM_METRIC);
+
+  if(initialProcessSignals()){
+    d_conflictVariables.purge();
+    if(verbose){ Message() << "fcFindModel("<< instance <<") early conflict" << endl; }
+    Debug("soi::findModel") << "fcFindModel("<< instance <<") early conflict" << endl;
+    Assert(d_conflictVariables.empty());
+    return Result::UNSAT;
+  }else if(d_errorSet.errorEmpty()){
+    Debug("soi::findModel") << "fcFindModel("<< instance <<") fixed itself" << endl;
+    Assert(!d_errorSet.moreSignals());
+    Assert(d_conflictVariables.empty());
+    return Result::SAT;
+  }
+
+  Debug("soi::findModel") << "fcFindModel(" << instance <<") start non-trivial" << endl;
+
+  exactResult |= options::arithStandardCheckVarOrderPivots() < 0;
+
+  d_prevWitnessImprovement = HeuristicDegenerate;
+  d_witnessImprovementInARow = 0;
+
+  Result::Sat result = Result::SAT_UNKNOWN;
+
+  if(result == Result::SAT_UNKNOWN){
+    if(exactResult){
+      d_pivotBudget = -1;
+    }else{
+      d_pivotBudget = options::arithStandardCheckVarOrderPivots();
+    }
+
+    result = sumOfInfeasibilities();
+
+    if(result ==  Result::UNSAT){
+      ++(d_statistics.d_soiFoundUnsat);
+      if(verbose){ Message() << "fc found unsat";}
+    }else if(d_errorSet.errorEmpty()){
+      ++(d_statistics.d_soiFoundSat);
+      if(verbose){ Message() << "fc found model"; }
+    }else{
+      ++(d_statistics.d_soiMissed);
+      if(verbose){ Message() << "fc missed"; }
+    }
+  }
+  if(verbose){
+    Message() << "(" << instance << ") pivots " << d_pivots << endl;
+  }
+
+  Assert(!d_errorSet.moreSignals());
+  if(result == Result::SAT_UNKNOWN && d_errorSet.errorEmpty()){
+    result = Result::SAT;
+  }
+
+  // ensure that the conflict variable is still in the queue.
+  d_conflictVariables.purge();
+
+  Debug("soi::findModel") << "end findModel() " << instance << " " << result <<  endl;
+
+  Assert(d_conflictVariables.empty());
+  return result;
+}
+
+
+void SumOfInfeasibilitiesSPD::logPivot(WitnessImprovement w){
+  if(d_pivotBudget > 0) {
+    --d_pivotBudget;
+  }
+  Assert(w != AntiProductive);
+
+  if(w == d_prevWitnessImprovement){
+    ++d_witnessImprovementInARow;
+    if(d_witnessImprovementInARow == 0){
+      --d_witnessImprovementInARow;
+    }
+  }else{
+    if(w != BlandsDegenerate){
+      d_witnessImprovementInARow = 1;
+    }
+    d_prevWitnessImprovement = w;
+  }
+  if(strongImprovement(w)){
+    d_leavingCountSinceImprovement.purge();
+  }
+
+  Debug("logPivot") << "logPivot " << d_prevWitnessImprovement << " "  << d_witnessImprovementInARow << endl;
+}
+
+uint32_t SumOfInfeasibilitiesSPD::degeneratePivotsInARow() const {
+  switch(d_prevWitnessImprovement){
+  case ConflictFound:
+  case ErrorDropped:
+  case FocusImproved:
+    return 0;
+  case HeuristicDegenerate:
+  case BlandsDegenerate:
+    return d_witnessImprovementInARow;
+  // Degenerate is unreachable for its own reasons
+  case Degenerate:
+  case FocusShrank:
+  case AntiProductive:
+    Unreachable();
+    return -1;
+  }
+  Unreachable();
+}
+
+void SumOfInfeasibilitiesSPD::adjustFocusAndError(const UpdateInfo& up, const AVIntPairVec& focusChanges){
+  uint32_t newErrorSize = d_errorSet.errorSize();
+  adjustInfeasFunc(d_statistics.d_soiFocusConstructionTimer, d_soiVar, focusChanges);
+  d_errorSize = newErrorSize;
+}
+
+
+UpdateInfo SumOfInfeasibilitiesSPD::selectUpdate(LinearEqualityModule::UpdatePreferenceFunction upf, LinearEqualityModule::VarPreferenceFunction bpf) {
+  UpdateInfo selected;
+
+  static int instance = 0 ;
+  ++instance;
+
+  Debug("soi::selectPrimalUpdate")
+    << "selectPrimalUpdate " << instance << endl
+    << d_soiVar << " " << d_tableau.basicRowLength(d_soiVar)
+    << " " << d_linEq.debugBasicAtBoundCount(d_soiVar) << endl;
+
+  typedef std::vector<Cand> CandVector;
+  CandVector candidates;
+
+  for(Tableau::RowIterator ri = d_tableau.basicRowIterator(d_soiVar); !ri.atEnd(); ++ri){
+    const Tableau::Entry& e = *ri;
+    ArithVar curr = e.getColVar();
+    if(curr == d_soiVar){ continue; }
+
+    int sgn = e.getCoefficient().sgn();
+    bool candidate =
+      (sgn > 0 && d_variables.cmpAssignmentUpperBound(curr) < 0) ||
+      (sgn < 0 && d_variables.cmpAssignmentLowerBound(curr) > 0);
+
+    Debug("soi::selectPrimalUpdate")
+      << "storing " << d_soiVar
+      << " " << curr
+      << " " << candidate
+      << " " << e.getCoefficient()
+      << " " << sgn << endl;
+
+    if(candidate) {
+      candidates.push_back(Cand(curr, 0, sgn, &e.getCoefficient()));
+    }
+  }
+
+  CompPenaltyColLength colCmp(&d_linEq);
+  CandVector::iterator i = candidates.begin();
+  CandVector::iterator end = candidates.end();
+  std::make_heap(i, end, colCmp);
+
+  // For the first 3 pivots take the best
+  // After that, once an improvement is found on look at a
+  // small number of pivots after finding an improvement
+  // the longer the search to more willing we are to look at more candidates
+  int maxCandidatesAfterImprove =
+    (d_pivots <= 2) ?  std::numeric_limits<int>::max() : d_pivots/5;
+
+  int candidatesAfterFocusImprove = 0;
+  while(i != end && candidatesAfterFocusImprove <= maxCandidatesAfterImprove){
+    std::pop_heap(i, end, colCmp);
+    --end;
+    Cand& cand = (*end);
+    ArithVar curr = cand.d_nb;
+    const Rational& coeff = *cand.d_coeff;
+
+    LinearEqualityModule::UpdatePreferenceFunction leavingPrefFunc = selectLeavingFunction(curr);
+    UpdateInfo currProposal = d_linEq.speculativeUpdate(curr, coeff, leavingPrefFunc);
+
+    Debug("soi::selectPrimalUpdate")
+      << "selected " << selected << endl
+      << "currProp " << currProposal << endl
+      << "coeff " << coeff << endl;
+
+    Assert(!currProposal.uninitialized());
+
+    if(candidatesAfterFocusImprove > 0){
+      candidatesAfterFocusImprove++;
+    }
+
+    if(selected.uninitialized() || (d_linEq.*upf)(selected, currProposal)){
+      selected = currProposal;
+      WitnessImprovement w = selected.getWitness(false);
+      Debug("soi::selectPrimalUpdate") << "selected " << w << endl;
+      //setPenalty(curr, w);
+      if(improvement(w)){
+        bool exitEarly;
+        switch(w){
+        case ConflictFound: exitEarly = true; break;
+        case FocusImproved:
+          candidatesAfterFocusImprove = 1;
+          exitEarly = false;
+          break;
+        default:
+          exitEarly = false; break;
+        }
+        if(exitEarly){ break; }
+      }
+    }else{
+      Debug("soi::selectPrimalUpdate") << "dropped "<< endl;
+    }
+
+  }
+  return selected;
+}
+
+bool debugCheckWitness(const UpdateInfo& inf, WitnessImprovement w, bool useBlands){
+  if(inf.getWitness(useBlands) == w){
+    switch(w){
+    case ConflictFound: return inf.foundConflict();
+    case ErrorDropped: return inf.errorsChange() < 0;
+    case FocusImproved: return inf.focusDirection() > 0;
+    case FocusShrank: return false; // This is not a valid output
+    case Degenerate: return false; // This is not a valid output
+    case BlandsDegenerate: return useBlands;
+    case HeuristicDegenerate: return !useBlands;
+    case AntiProductive: return false;
+    }
+  }
+  return false;
+}
+
+
+void SumOfInfeasibilitiesSPD::debugPrintSignal(ArithVar updated) const{
+  Debug("updateAndSignal") << "updated basic " << updated;
+  Debug("updateAndSignal") << " length " << d_tableau.basicRowLength(updated);
+  Debug("updateAndSignal") << " consistent " << d_variables.assignmentIsConsistent(updated);
+  int dir = !d_variables.assignmentIsConsistent(updated) ?
+    d_errorSet.getSgn(updated) : 0;
+  Debug("updateAndSignal") << " dir " << dir;
+  Debug("updateAndSignal") << " debugBasicAtBoundCount " << d_linEq.debugBasicAtBoundCount(updated) << endl;
+}
+
+
+void SumOfInfeasibilitiesSPD::updateAndSignal(const UpdateInfo& selected, WitnessImprovement w){
+  ArithVar nonbasic = selected.nonbasic();
+
+  static bool verbose = false;
+
+  Debug("updateAndSignal") << "updateAndSignal " << selected << endl;
+
+  stringstream ss;
+  if(verbose){
+    d_errorSet.debugPrint(ss);
+    if(selected.describesPivot()){
+      ArithVar leaving = selected.leaving();
+      ss << "leaving " << leaving
+         << " " << d_tableau.basicRowLength(leaving)
+         << " " << d_linEq.debugBasicAtBoundCount(leaving)
+         << endl;
+    }
+    if(degenerate(w) && selected.describesPivot()){
+      ArithVar leaving = selected.leaving();
+      Message()
+        << "degenerate " << leaving
+        << ", atBounds " << d_linEq.basicsAtBounds(selected)
+        << ", len " << d_tableau.basicRowLength(leaving)
+        << ", bc " << d_linEq.debugBasicAtBoundCount(leaving)
+        << endl;
+    }
+  }
+
+  if(selected.describesPivot()){
+    ConstraintP limiting = selected.limiting();
+    ArithVar basic = limiting->getVariable();
+    Assert(d_linEq.basicIsTracked(basic));
+    d_linEq.pivotAndUpdate(basic, nonbasic, limiting->getValue());
+  }else{
+    Assert(!selected.unbounded() || selected.errorsChange() < 0);
+
+    DeltaRational newAssignment =
+      d_variables.getAssignment(nonbasic) + selected.nonbasicDelta();
+
+    d_linEq.updateTracked(nonbasic, newAssignment);
+  }
+  d_pivots++;
+
+  increaseLeavingCount(nonbasic);
+
+  vector< pair<ArithVar, int> > focusChanges;
+  while(d_errorSet.moreSignals()){
+    ArithVar updated = d_errorSet.topSignal();
+    int prevFocusSgn = d_errorSet.popSignal();
+
+    if(d_tableau.isBasic(updated)){
+      Assert(!d_variables.assignmentIsConsistent(updated) == d_errorSet.inError(updated));
+      if(Debug.isOn("updateAndSignal")){debugPrintSignal(updated);}
+      if(!d_variables.assignmentIsConsistent(updated)){
+        if(checkBasicForConflict(updated)){
+          reportConflict(updated);
+          //Assert(debugUpdatedBasic(selected, updated));
+        }
+      }
+    }else{
+      Debug("updateAndSignal") << "updated nonbasic " << updated << endl;
+    }
+    int currFocusSgn = d_errorSet.focusSgn(updated);
+    if(currFocusSgn != prevFocusSgn){
+      int change = currFocusSgn - prevFocusSgn;
+      focusChanges.push_back(make_pair(updated, change));
+    }
+  }
+
+  if(verbose){
+    Message() << "conflict variable " << selected << endl;
+    Message() << ss.str();
+  }
+  if(Debug.isOn("error")){ d_errorSet.debugPrint(Debug("error")); }
+
+  //Assert(debugSelectedErrorDropped(selected, d_errorSize, d_errorSet.errorSize()));
+
+  adjustFocusAndError(selected, focusChanges);
+}
+
+void SumOfInfeasibilitiesSPD::qeAddRange(uint32_t begin, uint32_t end){
+  Assert(!d_qeInSoi.empty());
+  for(uint32_t i = begin; i != end; ++i){
+    ArithVar v = d_qeConflict[i];
+    addToInfeasFunc(d_statistics.d_soiConflictMinimization, d_soiVar, v);
+    d_qeInSoi.add(v);
+  }
+}
+
+void SumOfInfeasibilitiesSPD::qeRemoveRange(uint32_t begin, uint32_t end){
+  for(uint32_t i = begin; i != end; ++i){
+    ArithVar v = d_qeConflict[i];
+    removeFromInfeasFunc(d_statistics.d_soiConflictMinimization, d_soiVar, v);
+    d_qeInSoi.remove(v);
+  }
+  Assert(!d_qeInSoi.empty());
+}
+
+void SumOfInfeasibilitiesSPD::qeSwapRange(uint32_t N, uint32_t r, uint32_t s){
+  for(uint32_t i = 0; i < N; ++i){
+    std::swap(d_qeConflict[r+i], d_qeConflict[s+i]);
+  }
+}
+
+/**
+ * Region notation:
+ * A region is either
+ *  - A single element X at i with the name X at the position i
+ *  - A sequence of indices X@[i,j) with the name X and the elements between i [inclusive] and j exclusive
+ *  - A concatenation of regions R1 and R2, R1;R2
+ *
+ * Given the fixed assumptions C @ [0,cEnd) and a set of candidate minimizations U@[cEnd, uEnd)
+ * s.t. C \cup U is known to be in conflict ([0,uEnd) has a conflict), find a minimal
+ * subset of U, Delta, s.t. C \cup Delta is in conflict.
+ *
+ * Pre:
+ *  [0, uEnd) is a set and is in conflict.
+ *    uEnd <= assumptions.size()
+ *  [0, cEnd) is in d_inSoi.
+ *
+ * Invariants: [0,cEnd) is never modified
+ *
+ * Post:
+ *  [0, cEnd); [cEnd, deltaEnd) is in conflict
+ *  [0, deltaEnd) is a set
+ *  [0, deltaEnd) is in d_inSoi
+ */
+uint32_t SumOfInfeasibilitiesSPD::quickExplainRec(uint32_t cEnd, uint32_t uEnd){
+  Assert(cEnd <= uEnd);
+  Assert(d_qeInUAndNotInSoi.empty());
+  Assert(d_qeGreedyOrder.empty());
+
+  const Tableau::Entry* spoiler = NULL;
+
+  if(d_soiVar != ARITHVAR_SENTINEL && d_linEq.selectSlackEntry(d_soiVar, false) == NULL){
+    // already in conflict
+    return cEnd;
+  }
+
+  Assert(cEnd < uEnd);
+
+  // Phase 1 : Construct the conflict greedily
+
+  for(uint32_t i = cEnd; i < uEnd; ++i){
+    d_qeInUAndNotInSoi.add(d_qeConflict[i]);
+  }
+  if(d_soiVar == ARITHVAR_SENTINEL){ // special case for d_soiVar being empty
+    ArithVar first = d_qeConflict[cEnd];
+    d_soiVar = constructInfeasiblityFunction(d_statistics.d_soiConflictMinimization, first);
+    d_qeInSoi.add(first);
+    d_qeInUAndNotInSoi.remove(first);
+    d_qeGreedyOrder.push_back(first);
+  }
+  while((spoiler = d_linEq.selectSlackEntry(d_soiVar, false)) != NULL){
+    Assert(!d_qeInUAndNotInSoi.empty());
+
+    ArithVar nb = spoiler->getColVar();
+    int oppositeSgn = -(spoiler->getCoefficient().sgn());
+    Assert(oppositeSgn != 0);
+
+    ArithVar basicWithOp = find_basic_in_sgns(d_qeSgns, nb, oppositeSgn, d_qeInUAndNotInSoi, true);
+    Assert(basicWithOp != ARITHVAR_SENTINEL);
+
+    addToInfeasFunc(d_statistics.d_soiConflictMinimization, d_soiVar, basicWithOp);
+    d_qeInSoi.add(basicWithOp);
+    d_qeInUAndNotInSoi.remove(basicWithOp);
+    d_qeGreedyOrder.push_back(basicWithOp);
+  }
+  Assert(spoiler == NULL);
+
+  // Compact the set u
+  uint32_t newEnd = cEnd + d_qeGreedyOrder.size();
+  std::copy(d_qeGreedyOrder.begin(), d_qeGreedyOrder.end(), d_qeConflict.begin()+cEnd);
+
+  d_qeInUAndNotInSoi.purge();
+  d_qeGreedyOrder.clear();
+
+   // Phase 2 : Recursively determine the minimal set of rows
+
+  uint32_t xPos = cEnd;
+  std::swap(d_qeGreedyOrder[xPos], d_qeGreedyOrder[newEnd - 1]);
+  uint32_t uBegin = xPos + 1;
+  uint32_t split = (newEnd - uBegin)/2 + uBegin;
+
+  //assumptions : C @ [0, cEnd); X @ xPos; U1 @ [u1Begin, split); U2 @ [split, newEnd)
+  // [0, newEnd) == d_inSoi
+
+  uint32_t compactU2;
+  if(split == newEnd){ // U2 is empty
+    compactU2 = newEnd;
+  }else{
+    // Remove U2 from Soi
+    qeRemoveRange(split, newEnd);
+    // [0, split) == d_inSoi
+
+    // pre assumptions: C + X + U1 @ [0,split); U2 [split, newEnd)
+    compactU2 = quickExplainRec(split, newEnd);
+    // post:
+    //  assumptions: C + X + U1 @ [0, split); delta2 @ [split - compactU2)
+    //  d_inSoi = [0, compactU2)
+  }
+  uint32_t deltaSize = compactU2 - split;
+  qeSwapRange(deltaSize, uBegin, split);
+  uint32_t d2End = uBegin+deltaSize;
+  // assumptions : C @ [0, cEnd); X @ xPos; delta2 @ [uBegin, d2End); U1 @ [d2End, compactU2)
+  //  d_inSoi == [0, compactU2)
+
+  uint32_t d1End;
+  if(d2End == compactU2){ // U1 is empty
+    d1End = d2End;
+  }else{
+    qeRemoveRange(d2End, compactU2);
+
+    //pre assumptions : C + X + delta2 @ [0, d2End); U1 @ [d2End, compactU2);
+    d1End = quickExplainRec(d2End, compactU2);
+    //post:
+    // assumptions : C + X + delta2 @ [0, d2End); delta1 @ [d2End, d1End);
+    // d_inSoi = [0, d1End)
+  }
+  //After both:
+  // d_inSoi == [0, d1End), C @ [0, cEnd); X + delta2 + delta 1 @ [xPos, d1End);
+
+  Assert(d_qeInUAndNotInSoi.empty());
+  Assert(d_qeGreedyOrder.empty());
+  return d1End;
+}
+
+void SumOfInfeasibilitiesSPD::quickExplain(){
+  Assert(d_qeInSoi.empty());
+  Assert(d_qeInUAndNotInSoi.empty());
+  Assert(d_qeGreedyOrder.empty());
+  Assert(d_soiVar == ARITHVAR_SENTINEL);
+  Assert(d_qeSgns.empty());
+
+  d_qeConflict.clear();
+  d_errorSet.pushFocusInto(d_qeConflict);
+
+  //cout <<  d_qeConflict.size() << " ";
+  uint32_t size = d_qeConflict.size();
+
+  if(size > 2){
+    for(ErrorSet::focus_iterator iter = d_errorSet.focusBegin(), end = d_errorSet.focusEnd(); iter != end; ++iter){
+      ArithVar e = *iter;
+      addRowSgns(d_qeSgns, e, d_errorSet.getSgn(e));
+    }
+    uint32_t end = quickExplainRec(0u, size);
+    Assert(end <= d_qeConflict.size());
+    Assert(d_soiVar != ARITHVAR_SENTINEL);
+    Assert(!d_qeInSoi.empty());
+
+    d_qeConflict.resize(end);
+    tearDownInfeasiblityFunction(d_statistics.d_soiConflictMinimization, d_soiVar);
+    d_soiVar = ARITHVAR_SENTINEL;
+    d_qeInSoi.purge();
+    d_qeSgns.clear();
+  }
+
+  //cout << d_qeConflict.size() << endl;
+
+  Assert(d_qeInSoi.empty());
+  Assert(d_qeInUAndNotInSoi.empty());
+  Assert(d_qeGreedyOrder.empty());
+  Assert(d_soiVar == ARITHVAR_SENTINEL);
+  Assert(d_qeSgns.empty());
+}
+
+unsigned SumOfInfeasibilitiesSPD::trySet(const ArithVarVec& set){
+  Assert(d_soiVar == ARITHVAR_SENTINEL);
+  bool success = false;
+  if(set.size() >= 2){
+    d_soiVar = constructInfeasiblityFunction(d_statistics.d_soiConflictMinimization, set);
+    success = d_linEq.selectSlackEntry(d_soiVar, false) == NULL;
+
+    tearDownInfeasiblityFunction(d_statistics.d_soiConflictMinimization, d_soiVar);
+    d_soiVar = ARITHVAR_SENTINEL;
+  }
+  return success ? set.size() : std::numeric_limits<int>::max();
+}
+
+std::vector< ArithVarVec > SumOfInfeasibilitiesSPD::greedyConflictSubsets(){
+  Debug("arith::greedyConflictSubsets") << "greedyConflictSubsets start" << endl;
+
+  std::vector< ArithVarVec > subsets;
+  Assert(d_soiVar == ARITHVAR_SENTINEL);
+
+  if(d_errorSize <= 2){
+    ArithVarVec inError;
+    d_errorSet.pushFocusInto(inError);
+    
+    Assert(debugIsASet(inError));
+    subsets.push_back(inError);
+    return subsets;
+  }
+  Assert(d_errorSize > 2);
+
+  //sgns_table< <nonbasic,sgn>, [basics] >;
+  // Phase 0: Construct the sgns table
+  sgn_table sgns;
+  DenseSet hasParticipated; //Has participated in a conflict
+  for(ErrorSet::focus_iterator iter = d_errorSet.focusBegin(), end = d_errorSet.focusEnd(); iter != end; ++iter){
+    ArithVar e = *iter;
+    addRowSgns(sgns, e, d_errorSet.getSgn(e));
+
+    Debug("arith::greedyConflictSubsets") << "basic error var: " << e << endl;
+    if(Debug.isOn("arith::greedyConflictSubsets")){
+      d_tableau.debugPrintIsBasic(e);
+      d_tableau.printBasicRow(e, Debug("arith::greedyConflictSubsets"));
+    }
+  }
+
+  // Phase 1: Try to find at least 1 pair for every element
+  ArithVarVec tmp;
+  tmp.push_back(0);
+  tmp.push_back(0);
+  for(ErrorSet::focus_iterator iter = d_errorSet.focusBegin(), end = d_errorSet.focusEnd(); iter != end; ++iter){
+    ArithVar e = *iter;
+    tmp[0] = e;
+
+    int errSgn = d_errorSet.getSgn(e);
+    bool decreasing = errSgn < 0;
+    const Tableau::Entry* spoiler = d_linEq.selectSlackEntry(e, decreasing);
+    Assert(spoiler != NULL);
+    ArithVar nb = spoiler->getColVar();
+    int oppositeSgn = -(errSgn * (spoiler->getCoefficient().sgn()));
+
+    sgn_table::const_iterator opposites = find_sgns(sgns, nb, oppositeSgn);
+    Assert(opposites != sgns.end());
+
+    const ArithVarVec& choices = (*opposites).second;
+    for(ArithVarVec::const_iterator j = choices.begin(), jend = choices.end(); j != jend; ++j){
+      ArithVar b = *j;
+      if(b < e){ continue; }
+      tmp[0] = e;
+      tmp[1] = b;
+      if(trySet(tmp) == 2){
+        Debug("arith::greedyConflictSubsets")  << "found a pair " << b << " " << e << endl;
+        hasParticipated.softAdd(b);
+        hasParticipated.softAdd(e);
+        Assert(debugIsASet(tmp));
+        subsets.push_back(tmp);
+        ++(d_statistics.d_soiConflicts);
+        ++(d_statistics.d_hasToBeMinimal);
+      }
+    }
+  }
+
+
+  // Phase 2: If there is a variable that has not participated attempt to start a conflict
+  ArithVarVec possibleStarts; //List of elements that can be tried for starts.
+  d_errorSet.pushFocusInto(possibleStarts);
+  while(!possibleStarts.empty()){
+    Assert(d_soiVar == ARITHVAR_SENTINEL);
+
+    ArithVar v = possibleStarts.back();
+    possibleStarts.pop_back();
+    if(hasParticipated.isMember(v)){ continue; }
+
+    hasParticipated.add(v);
+    
+    Assert(d_soiVar == ARITHVAR_SENTINEL);
+    //d_soiVar's row =  \sumofinfeasibilites underConstruction
+    ArithVarVec underConstruction;
+    underConstruction.push_back(v);
+    d_soiVar = constructInfeasiblityFunction(d_statistics.d_soiConflictMinimization, v);
+
+    Debug("arith::greedyConflictSubsets") << "trying " << v << endl;
+
+    const Tableau::Entry* spoiler = NULL;
+    while( (spoiler = d_linEq.selectSlackEntry(d_soiVar, false)) != NULL){
+      ArithVar nb = spoiler->getColVar();
+      int oppositeSgn = -(spoiler->getCoefficient().sgn());
+      Assert(oppositeSgn != 0);
+
+      Debug("arith::greedyConflictSubsets") << "looking for " << nb << " " << oppositeSgn << endl;
+
+      ArithVar basicWithOp = find_basic_in_sgns(sgns, nb, oppositeSgn, hasParticipated, false);
+
+      if(basicWithOp == ARITHVAR_SENTINEL){
+        Debug("arith::greedyConflictSubsets") << "search did not work  for " << nb << endl;
+        // greedy construction has failed
+        break;
+      }else{
+        Debug("arith::greedyConflictSubsets") << "found  " << basicWithOp << endl;
+
+        addToInfeasFunc(d_statistics.d_soiConflictMinimization, d_soiVar, basicWithOp);
+        hasParticipated.softAdd(basicWithOp);
+        underConstruction.push_back(basicWithOp);
+      }
+    }
+    if(spoiler == NULL){
+      Debug("arith::greedyConflictSubsets") << "success" << endl;
+      //then underConstruction contains a conflicting subset
+      Assert(debugIsASet(underConstruction));
+      subsets.push_back(underConstruction);
+      ++d_statistics.d_soiConflicts;
+      if(underConstruction.size() == 3){
+        ++d_statistics.d_hasToBeMinimal;
+      }else{
+        ++d_statistics.d_maybeNotMinimal;
+      }
+    }else{
+      Debug("arith::greedyConflictSubsets") << "failure" << endl;
+    }
+    tearDownInfeasiblityFunction(d_statistics.d_soiConflictMinimization, d_soiVar);
+    d_soiVar = ARITHVAR_SENTINEL;
+    // if(false && spoiler == NULL){
+    //   ArithVarVec tmp;
+    //   int smallest = tryAllSubsets(underConstruction, 0, tmp);
+    //   cout << underConstruction.size() << " " << smallest << endl;
+    //   Assert(smallest >= underConstruction.size());
+    //   if(smallest < underConstruction.size()){
+    //     exit(-1);
+    //   }
+    // }
+  }
+
+
+  Assert(d_soiVar == ARITHVAR_SENTINEL);
+  Debug("arith::greedyConflictSubsets") << "greedyConflictSubsets done" << endl;
+  return subsets;
+}
+
+bool SumOfInfeasibilitiesSPD::generateSOIConflict(const ArithVarVec& subset){
+  Assert(d_soiVar == ARITHVAR_SENTINEL);
+  d_soiVar = constructInfeasiblityFunction(d_statistics.d_soiConflictMinimization, subset);
+  Assert(!subset.empty());
+  Assert(!d_conflictBuilder->underConstruction());
+    
+  Debug("arith::generateSOIConflict") << "SumOfInfeasibilitiesSPD::generateSOIConflict(...) start" << endl;
+
+  bool success = false;
+    
+  for(ArithVarVec::const_iterator iter = subset.begin(), end = subset.end(); iter != end; ++iter){
+    ArithVar e = *iter;
+    ConstraintP violated = d_errorSet.getViolated(e);
+    Assert(violated != NullConstraint);
+
+
+    int sgn = d_errorSet.getSgn(e);
+    const Rational& violatedCoeff = sgn > 0 ? d_negOne : d_posOne;
+    Debug("arith::generateSOIConflict") << "basic error var: "
+                                        << "(" <<  violatedCoeff << ")"
+                                        << " " << violated
+                                        << endl;
+
+
+    d_conflictBuilder->addConstraint(violated, violatedCoeff);
+    Assert(violated->hasProof());
+    if(!success && !violated->negationHasProof()){
+      success = true;
+      d_conflictBuilder->makeLastConsequent();
+    }
+  }
+  
+  if(!success){
+    // failure
+    d_conflictBuilder->reset();
+  } else {
+    // pick a violated constraint arbitrarily. any of them may be selected for the conflict
+    Assert(d_conflictBuilder->underConstruction());
+    Assert(d_conflictBuilder->consequentIsSet());
+    
+    for(Tableau::RowIterator i = d_tableau.basicRowIterator(d_soiVar); !i.atEnd(); ++i){
+      const Tableau::Entry& entry = *i;
+      ArithVar v = entry.getColVar();
+      if(v == d_soiVar){ continue; }
+      const Rational& coeff = entry.getCoefficient();
+
+      ConstraintP c = (coeff.sgn() > 0) ?
+        d_variables.getUpperBoundConstraint(v) :
+        d_variables.getLowerBoundConstraint(v);
+      
+      Debug("arith::generateSOIConflict") << "non-basic var: "
+                                          << "(" <<  coeff << ")"
+                                          << " " << c
+                                          << endl;
+      d_conflictBuilder->addConstraint(c, coeff);
+    }
+    ConstraintCP conflicted = d_conflictBuilder->commitConflict();
+    d_conflictChannel.raiseConflict(conflicted);
+  }
+
+  tearDownInfeasiblityFunction(d_statistics.d_soiConflictMinimization, d_soiVar);
+  d_soiVar = ARITHVAR_SENTINEL;
+  Debug("arith::generateSOIConflict") << "SumOfInfeasibilitiesSPD::generateSOIConflict(...) done" << endl;
+  Assert(d_soiVar == ARITHVAR_SENTINEL);
+  Assert(!d_conflictBuilder->underConstruction());
+  return success;
+}
+
+
+WitnessImprovement SumOfInfeasibilitiesSPD::SOIConflict(){
+  static int instance = 0;
+  instance++;
+  
+  Debug("arith::SOIConflict") << "SumOfInfeasibilitiesSPD::SOIConflict() start "
+                              << instance << ": |E| = " << d_errorSize << endl;
+  if(Debug.isOn("arith::SOIConflict")){
+    d_errorSet.debugPrint(cout);
+  }
+  Debug("arith::SOIConflict") << endl;
+
+  tearDownInfeasiblityFunction(d_statistics.d_soiConflictMinimization, d_soiVar);
+  d_soiVar = ARITHVAR_SENTINEL;
+
+  if(options::soiQuickExplain()){
+    quickExplain();
+    generateSOIConflict(d_qeConflict);
+  }else{
+    vector<ArithVarVec> subsets = greedyConflictSubsets();
+    Assert(  d_soiVar == ARITHVAR_SENTINEL);
+    bool anySuccess = false;
+    Assert(!subsets.empty());
+    for(vector<ArithVarVec>::const_iterator i = subsets.begin(), end = subsets.end(); i != end; ++i){
+      const ArithVarVec& subset = *i;
+      Assert(debugIsASet(subset));
+      anySuccess = generateSOIConflict(subset) || anySuccess;
+      //Node conflict = generateSOIConflict(subset);
+      //cout << conflict << endl;
+
+      //reportConflict(conf); do not do this. We need a custom explanations!
+      //d_conflictChannel(conflict);
+    }
+    Assert(anySuccess);
+  }
+  Assert(  d_soiVar == ARITHVAR_SENTINEL);
+  d_soiVar = constructInfeasiblityFunction(d_statistics.d_soiConflictMinimization);
+
+  //reportConflict(conf); do not do this. We need a custom explanations!
+  d_conflictVariables.add(d_soiVar);
+
+  Debug("arith::SOIConflict") << "SumOfInfeasibilitiesSPD::SOIConflict() done "
+                              << instance << "end" << endl;
+  return ConflictFound;
+}
+
+WitnessImprovement SumOfInfeasibilitiesSPD::soiRound() {
+  Assert(d_soiVar != ARITHVAR_SENTINEL);
+
+  bool useBlands = degeneratePivotsInARow() >= s_maxDegeneratePivotsBeforeBlandsOnLeaving;
+  LinearEqualityModule::UpdatePreferenceFunction upf;
+  if(useBlands) {
+    upf = &LinearEqualityModule::preferWitness<false>;
+  } else {
+    upf = &LinearEqualityModule::preferWitness<true>;
+  }
+
+  LinearEqualityModule::VarPreferenceFunction bpf = useBlands ?
+    &LinearEqualityModule::minVarOrder :
+    &LinearEqualityModule::minRowLength;
+  bpf = &LinearEqualityModule::minVarOrder;
+
+  UpdateInfo selected = selectUpdate(upf, bpf);
+
+  if(selected.uninitialized()){
+    Debug("selectFocusImproving") << "SOI is optimum, but we don't have sat/conflict yet" << endl;
+    return SOIConflict();
+  }else{
+    Assert(!selected.uninitialized());
+    WitnessImprovement w = selected.getWitness(false);
+    Assert(debugCheckWitness(selected, w, false));
+
+    updateAndSignal(selected, w);
+    logPivot(w);
+    return w;
+  }
+}
+
+bool SumOfInfeasibilitiesSPD::debugSOI(WitnessImprovement w, ostream& out, int instance) const{
+  return true;
+  // out << "DLV("<<instance<<") ";
+  // switch(w){
+  // case ConflictFound:
+  //   out << "found conflict" << endl;
+  //   return !d_conflictVariables.empty();
+  // case ErrorDropped:
+  //   return false;
+  //   // out << "dropped " << prevErrorSize - d_errorSize << endl;
+  //   // return d_errorSize < prevErrorSize;
+  // case FocusImproved:
+  //   out << "focus improved"<< endl;
+  //   return d_errorSize == prevErrorSize;
+  // case FocusShrank:
+  //   Unreachable();
+  //   return false;
+  // case BlandsDegenerate:
+  //   out << "bland degenerate"<< endl;
+  //   return true;
+  // case HeuristicDegenerate:
+  //   out << "heuristic degenerate"<< endl;
+  //   return true;
+  // case AntiProductive:
+  // case Degenerate:
+  //   return false;
+  // }
+  // return false;
+}
+
+Result::Sat SumOfInfeasibilitiesSPD::sumOfInfeasibilities(){
+  static int instance = 0;
+  static bool verbose = false;
+
+  TimerStat::CodeTimer codeTimer(d_statistics.d_soiTimer);
+
+  Assert(d_sgnDisagreements.empty());
+  Assert(d_pivotBudget != 0);
+  Assert(d_errorSize == d_errorSet.errorSize());
+  Assert(d_errorSize > 0);
+  Assert(d_conflictVariables.empty());
+  Assert(d_soiVar == ARITHVAR_SENTINEL);
+
+
+  //d_scores.purge();
+  d_soiVar = constructInfeasiblityFunction(d_statistics.d_soiFocusConstructionTimer);
+
+
+  while(d_pivotBudget != 0  && d_errorSize > 0 && d_conflictVariables.empty()){
+    ++instance;
+    Debug("dualLike") << "dualLike " << instance << endl;
+
+    Assert(d_errorSet.noSignals());
+    // Possible outcomes:
+    // - conflict
+    // - budget was exhausted
+    // - focus went down
+    Debug("dualLike") << "selectFocusImproving " << endl;
+    WitnessImprovement w = soiRound();
+
+    Assert(d_errorSize == d_errorSet.errorSize());
+
+    if(verbose){
+      debugSOI(w,  Message(), instance);
+    }
+    Assert(debugSOI(w, Debug("dualLike"), instance));
+  }
+
+
+  if(d_soiVar != ARITHVAR_SENTINEL){
+    tearDownInfeasiblityFunction(d_statistics.d_soiFocusConstructionTimer, d_soiVar);
+    d_soiVar = ARITHVAR_SENTINEL;
+  }
+
+  Assert(d_soiVar == ARITHVAR_SENTINEL);
+  if(!d_conflictVariables.empty()){
+    return Result::UNSAT;
+  }else if(d_errorSet.errorEmpty()){
+    Assert(d_errorSet.noSignals());
+    return Result::SAT;
+  }else{
+    Assert(d_pivotBudget == 0);
+    return Result::SAT_UNKNOWN;
+  }
+}
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/soi_simplex.h b/src/theory/arith/soi_simplex.h
new file mode 100644
index 0000000..c2afe06
--- /dev/null
+++ b/src/theory/arith/soi_simplex.h
@@ -0,0 +1,243 @@
+/*********************                                                        */
+/*! \file soi_simplex.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This is an implementation of the Simplex Module for the Simplex for DPLL(T)
+ ** decision procedure.
+ **
+ ** This implements the Simplex module for the Simpelx for DPLL(T) decision procedure.
+ ** See the Simplex for DPLL(T) technical report for more background.(citation?)
+ ** This shares with the theory a Tableau, and a PartialModel that:
+ **  - satisfies the equalities in the Tableau, and
+ **  - the assignment for the non-basic variables satisfies their bounds.
+ ** This is required to either produce a conflict or satisifying PartialModel.
+ ** Further, we require being told when a basic variable updates its value.
+ **
+ ** During the Simplex search we maintain a queue of variables.
+ ** The queue is required to contain all of the basic variables that voilate their bounds.
+ ** As elimination from the queue is more efficient to be done lazily,
+ ** we do not maintain that the queue of variables needs to be only basic variables or only
+ ** variables that satisfy their bounds.
+ **
+ ** The simplex procedure roughly follows Alberto's thesis. (citation?)
+ ** There is one round of selecting using a heuristic pivoting rule. (See PreferenceFunction
+ ** Documentation for the available options.)
+ ** The non-basic variable is the one that appears in the fewest pivots. (Bruno says that
+ ** Leonardo invented this first.)
+ ** After this, Bland's pivot rule is invoked.
+ **
+ ** During this proccess, we periodically inspect the queue of variables to
+ ** 1) remove now extraneous extries,
+ ** 2) detect conflicts that are "waiting" on the queue but may not be detected by the
+ **  current queue heuristics, and
+ ** 3) detect multiple conflicts.
+ **
+ ** Conflicts are greedily slackened to use the weakest bounds that still produce the
+ ** conflict.
+ **
+ ** Extra things tracked atm: (Subject to change at Tim's whims)
+ ** - A superset of all of the newly pivoted variables.
+ ** - A queue of additional conflicts that were discovered by Simplex.
+ **   These are theory valid and are currently turned into lemmas
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <stdint.h>
+
+#include "theory/arith/simplex.h"
+#include "util/dense_map.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+class SumOfInfeasibilitiesSPD : public SimplexDecisionProcedure {
+public:
+  SumOfInfeasibilitiesSPD(LinearEqualityModule& linEq, ErrorSet& errors, RaiseConflict conflictChannel, TempVarMalloc tvmalloc);
+
+  Result::Sat findModel(bool exactResult);
+
+  // other error variables are dropping
+  WitnessImprovement dualLikeImproveError(ArithVar evar);
+  WitnessImprovement primalImproveError(ArithVar evar);
+
+private:
+  /** The current sum of infeasibilities variable. */
+  ArithVar d_soiVar;
+
+  // dual like
+  // - found conflict
+  // - satisfied error set
+  Result::Sat sumOfInfeasibilities();
+
+  // static const uint32_t PENALTY = 4;
+  // DenseMultiset d_scores;
+  // void decreasePenalties(){ d_scores.removeOneOfEverything(); }
+  // uint32_t penalty(ArithVar x) const { return d_scores.count(x); }
+  // void setPenalty(ArithVar x, WitnessImprovement w){
+  //   if(improvement(w)){
+  //     if(d_scores.count(x) > 0){
+  //       d_scores.removeAll(x);
+  //     }
+  //   }else{
+  //     d_scores.setCount(x, PENALTY);
+  //   }
+  // }
+
+  int32_t d_pivotBudget;
+  // enum PivotImprovement {
+  //   ErrorDropped,
+  //   NonDegenerate,
+  //   HeuristicDegenerate,
+  //   BlandsDegenerate
+  // };
+
+  WitnessImprovement d_prevWitnessImprovement;
+  uint32_t d_witnessImprovementInARow;
+
+  uint32_t degeneratePivotsInARow() const;
+
+  static const uint32_t s_focusThreshold = 6;
+  static const uint32_t s_maxDegeneratePivotsBeforeBlandsOnLeaving = 100;
+  static const uint32_t s_maxDegeneratePivotsBeforeBlandsOnEntering = 10;
+
+  DenseMap<uint32_t> d_leavingCountSinceImprovement;
+  void increaseLeavingCount(ArithVar x){
+    if(!d_leavingCountSinceImprovement.isKey(x)){
+      d_leavingCountSinceImprovement.set(x,1);
+    }else{
+      (d_leavingCountSinceImprovement.get(x))++;
+    }
+  }
+  LinearEqualityModule::UpdatePreferenceFunction selectLeavingFunction(ArithVar x){
+    bool useBlands = d_leavingCountSinceImprovement.isKey(x) &&
+      d_leavingCountSinceImprovement[x] >= s_maxDegeneratePivotsBeforeBlandsOnEntering;
+    if(useBlands) {
+      return &LinearEqualityModule::preferWitness<false>;
+    } else {
+      return &LinearEqualityModule::preferWitness<true>;
+    }
+  }
+
+  bool debugSOI(WitnessImprovement w, std::ostream& out, int instance) const;
+
+  void debugPrintSignal(ArithVar updated) const;
+
+  ArithVarVec d_sgnDisagreements;
+
+  void logPivot(WitnessImprovement w);
+
+  void updateAndSignal(const UpdateInfo& selected, WitnessImprovement w);
+
+  UpdateInfo selectUpdate(LinearEqualityModule::UpdatePreferenceFunction upf,
+                          LinearEqualityModule::VarPreferenceFunction bpf);
+
+
+  // UpdateInfo selectUpdateForDualLike(ArithVar basic){
+  //   TimerStat::CodeTimer codeTimer(d_statistics.d_selectUpdateForDualLike);
+
+  //   LinearEqualityModule::UpdatePreferenceFunction upf =
+  //     &LinearEqualityModule::preferWitness<true>;
+  //   LinearEqualityModule::VarPreferenceFunction bpf =
+  //     &LinearEqualityModule::minVarOrder;
+  //   return selectPrimalUpdate(basic, upf, bpf);
+  // }
+
+  // UpdateInfo selectUpdateForPrimal(ArithVar basic, bool useBlands){
+  //   TimerStat::CodeTimer codeTimer(d_statistics.d_selectUpdateForPrimal);
+
+  //   LinearEqualityModule::UpdatePreferenceFunction upf = useBlands ?
+  //     &LinearEqualityModule::preferWitness<false>:
+  //     &LinearEqualityModule::preferWitness<true>;
+
+  //   LinearEqualityModule::VarPreferenceFunction bpf = useBlands ?
+  //     &LinearEqualityModule::minVarOrder :
+  //     &LinearEqualityModule::minRowLength;
+  //   bpf = &LinearEqualityModule::minVarOrder;
+
+  //   return selectPrimalUpdate(basic, upf, bpf);
+  // }
+  // WitnessImprovement selectFocusImproving() ;
+  WitnessImprovement soiRound();
+  WitnessImprovement SOIConflict();
+  std::vector< ArithVarVec > greedyConflictSubsets();
+  bool generateSOIConflict(const ArithVarVec& subset);
+
+  // WitnessImprovement focusUsingSignDisagreements(ArithVar basic);
+  // WitnessImprovement focusDownToLastHalf();
+  // WitnessImprovement adjustFocusShrank(const ArithVarVec& drop);
+  // WitnessImprovement focusDownToJust(ArithVar v);
+
+
+  void adjustFocusAndError(const UpdateInfo& up, const AVIntPairVec& focusChanges);
+
+  /**
+   * This is the main simplex for DPLL(T) loop.
+   * It runs for at most maxIterations.
+   *
+   * Returns true iff it has found a conflict.
+   * d_conflictVariable will be set and the conflict for this row is reported.
+   */
+  bool searchForFeasibleSolution(uint32_t maxIterations);
+
+  bool initialProcessSignals(){
+    TimerStat &timer = d_statistics.d_initialSignalsTime;
+    IntStat& conflictStat  = d_statistics.d_initialConflicts;
+    return standardProcessSignals(timer, conflictStat);
+  }
+
+  void quickExplain();
+  DenseSet d_qeInSoi;
+  DenseSet d_qeInUAndNotInSoi;
+  ArithVarVec d_qeConflict;
+  ArithVarVec d_qeGreedyOrder;
+  sgn_table d_qeSgns;
+
+  uint32_t quickExplainRec(uint32_t cEnd, uint32_t uEnd);
+  void qeAddRange(uint32_t begin, uint32_t end);
+  void qeRemoveRange(uint32_t begin, uint32_t end);
+  void qeSwapRange(uint32_t N, uint32_t r, uint32_t s);
+
+  unsigned trySet(const ArithVarVec& set);
+  unsigned tryAllSubsets(const ArithVarVec& set, unsigned depth, ArithVarVec& tmp);
+
+  /** These fields are designed to be accessible to TheoryArith methods. */
+  class Statistics {
+  public:
+    TimerStat d_initialSignalsTime;
+    IntStat d_initialConflicts;
+
+    IntStat d_soiFoundUnsat;
+    IntStat d_soiFoundSat;
+    IntStat d_soiMissed;
+
+    IntStat d_soiConflicts;
+    IntStat d_hasToBeMinimal;
+    IntStat d_maybeNotMinimal;
+
+    TimerStat d_soiTimer;
+    TimerStat d_soiFocusConstructionTimer;
+    TimerStat d_soiConflictMinimization;
+    TimerStat d_selectUpdateForSOI;
+
+    ReferenceStat<uint32_t> d_finalCheckPivotCounter;
+
+    Statistics(uint32_t& pivots);
+    ~Statistics();
+  } d_statistics;
+};/* class FCSimplexDecisionProcedure */
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/tableau.cpp b/src/theory/arith/tableau.cpp
new file mode 100644
index 0000000..0bd1309
--- /dev/null
+++ b/src/theory/arith/tableau.cpp
@@ -0,0 +1,195 @@
+/*********************                                                        */
+/*! \file tableau.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "base/output.h"
+#include "theory/arith/tableau.h"
+
+using namespace std;
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+
+void Tableau::pivot(ArithVar oldBasic, ArithVar newBasic, CoefficientChangeCallback& cb){
+  Assert(isBasic(oldBasic));
+  Assert(!isBasic(newBasic));
+  Assert(d_mergeBuffer.empty());
+
+  Debug("tableau") << "Tableau::pivot(" <<  oldBasic <<", " << newBasic <<")"  << endl;
+
+  RowIndex ridx = basicToRowIndex(oldBasic);
+
+  rowPivot(oldBasic, newBasic, cb);
+  Assert(ridx == basicToRowIndex(newBasic));
+
+  loadRowIntoBuffer(ridx);
+
+  ColIterator colIter = colIterator(newBasic);
+  while(!colIter.atEnd()){
+    EntryID id = colIter.getID();
+    Entry& entry = d_entries.get(id);
+
+    ++colIter; //needs to be incremented before the variable is removed
+    if(entry.getRowIndex() == ridx){ continue; }
+
+    RowIndex to = entry.getRowIndex();
+    Rational coeff = entry.getCoefficient();
+    if(cb.canUseRow(to)){
+      rowPlusBufferTimesConstant(to, coeff, cb);
+    }else{
+      rowPlusBufferTimesConstant(to, coeff);
+    }
+  }
+  clearBuffer();
+
+  //Clear the column for used for this variable
+
+  Assert(d_mergeBuffer.empty());
+  Assert(!isBasic(oldBasic));
+  Assert(isBasic(newBasic));
+  Assert(getColLength(newBasic) == 1);
+}
+
+/**
+ * Changes basic to newbasic (a variable on the row).
+ */
+void Tableau::rowPivot(ArithVar basicOld, ArithVar basicNew, CoefficientChangeCallback& cb){
+  Assert(isBasic(basicOld));
+  Assert(!isBasic(basicNew));
+
+  RowIndex rid = basicToRowIndex(basicOld);
+
+  EntryID newBasicID = findOnRow(rid, basicNew);
+
+  Assert(newBasicID != ENTRYID_SENTINEL);
+
+  Tableau::Entry& newBasicEntry = d_entries.get(newBasicID);
+  const Rational& a_rs = newBasicEntry.getCoefficient();
+  int a_rs_sgn = a_rs.sgn();
+  Rational negInverseA_rs = -(a_rs.inverse());
+
+  for(RowIterator i = basicRowIterator(basicOld); !i.atEnd(); ++i){
+    EntryID id = i.getID();
+    Tableau::Entry& entry = d_entries.get(id);
+
+    entry.getCoefficient() *=  negInverseA_rs;
+  }
+
+  d_basic2RowIndex.remove(basicOld);
+  d_basic2RowIndex.set(basicNew, rid);
+  d_rowIndex2basic.set(rid, basicNew);
+
+  cb.multiplyRow(rid, -a_rs_sgn);
+}
+
+void Tableau::addRow(ArithVar basic,
+                     const std::vector<Rational>& coefficients,
+                     const std::vector<ArithVar>& variables)
+{
+  Assert(basic < getNumColumns());
+  Assert(debugIsASet(variables));
+  Assert(coefficients.size() == variables.size() );
+  Assert(!isBasic(basic));
+
+  RowIndex newRow = Matrix<Rational>::addRow(coefficients, variables);
+  addEntry(newRow, basic, Rational(-1));
+
+  Assert(!d_basic2RowIndex.isKey(basic));
+  Assert(!d_rowIndex2basic.isKey(newRow));
+
+  d_basic2RowIndex.set(basic, newRow);
+  d_rowIndex2basic.set(newRow, basic);
+
+
+  if(Debug.isOn("matrix")){ printMatrix(); }
+
+  NoEffectCCCB noeffect;
+  NoEffectCCCB* nep = &noeffect;
+  CoefficientChangeCallback* cccb = static_cast<CoefficientChangeCallback*>(nep);
+
+  vector<Rational>::const_iterator coeffIter = coefficients.begin();
+  vector<ArithVar>::const_iterator varsIter = variables.begin();
+  vector<ArithVar>::const_iterator varsEnd = variables.end();
+  for(; varsIter != varsEnd; ++coeffIter, ++varsIter){
+    ArithVar var = *varsIter;
+
+    if(isBasic(var)){
+      Rational coeff = *coeffIter;
+
+      RowIndex ri = basicToRowIndex(var);
+
+      loadRowIntoBuffer(ri);
+      rowPlusBufferTimesConstant(newRow, coeff, *cccb);
+      clearBuffer();
+    }
+  }
+
+  if(Debug.isOn("matrix")) { printMatrix(); }
+
+  Assert(debugNoZeroCoefficients(newRow));
+  Assert(debugMatchingCountsForRow(newRow));
+  Assert(getColLength(basic) == 1);
+}
+
+void Tableau::removeBasicRow(ArithVar basic){
+  RowIndex rid = basicToRowIndex(basic);
+
+  removeRow(rid);
+  d_basic2RowIndex.remove(basic);
+  d_rowIndex2basic.remove(rid);
+}
+
+void Tableau::substitutePlusTimesConstant(ArithVar to, ArithVar from, const Rational& mult,  CoefficientChangeCallback& cb){
+  if(!mult.isZero()){
+    RowIndex to_idx = basicToRowIndex(to);
+    addEntry(to_idx, from, mult); // Add an entry to be cancelled out
+    RowIndex from_idx = basicToRowIndex(from);
+
+    cb.update(to_idx, from, 0, mult.sgn());
+
+    loadRowIntoBuffer(from_idx);
+    rowPlusBufferTimesConstant(to_idx, mult, cb);
+    clearBuffer();
+  }
+}
+
+uint32_t Tableau::rowComplexity(ArithVar basic) const{
+  uint32_t complexity = 0;
+  for(RowIterator i = basicRowIterator(basic); !i.atEnd(); ++i){
+    const Entry& e = *i;
+    complexity += e.getCoefficient().complexity();
+  }
+  return complexity;
+}
+
+double Tableau::avgRowComplexity() const{
+  double sum = 0;
+  uint32_t rows = 0;
+  for(BasicIterator i = beginBasic(), i_end = endBasic(); i != i_end; ++i){
+    sum += rowComplexity(*i);
+    rows++;
+  }
+  return (rows == 0) ? 0 : (sum/rows);
+}
+
+void Tableau::printBasicRow(ArithVar basic, std::ostream& out){
+  printRow(basicToRowIndex(basic), out);
+}
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/tableau.h b/src/theory/arith/tableau.h
new file mode 100644
index 0000000..c4c8cfb
--- /dev/null
+++ b/src/theory/arith/tableau.h
@@ -0,0 +1,164 @@
+/*********************                                                        */
+/*! \file tableau.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <vector>
+
+#include "theory/arith/arithvar.h"
+#include "theory/arith/matrix.h"
+#include "util/dense_map.h"
+#include "util/rational.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+/**
+ * A Tableau is a Rational matrix that keeps its rows in solved form.
+ * Each row has a basic variable with coefficient -1 that is solved.
+ * Tableau is optimized for pivoting.
+ * The tableau should only be updated via pivot calls.
+ */
+class Tableau : public Matrix<Rational> {
+public:
+private:
+  typedef DenseMap<RowIndex> BasicToRowMap;
+  // Set of all of the basic variables in the tableau.
+  // ArithVarMap<RowIndex> : ArithVar |-> RowIndex
+  BasicToRowMap d_basic2RowIndex;
+
+  // RowIndex |-> Basic Variable
+  typedef DenseMap<ArithVar> RowIndexToBasicMap;
+  RowIndexToBasicMap d_rowIndex2basic;
+
+public:
+
+  Tableau() : Matrix<Rational>(Rational(0)) {}
+
+  typedef Matrix<Rational>::ColIterator ColIterator;
+  typedef Matrix<Rational>::RowIterator RowIterator;
+  typedef BasicToRowMap::const_iterator BasicIterator;
+
+  typedef MatrixEntry<Rational> Entry;
+
+  bool isBasic(ArithVar v) const{
+    return d_basic2RowIndex.isKey(v);
+  }
+
+  void debugPrintIsBasic(ArithVar v) const {
+    if(isBasic(v)){
+      Warning() << v << " is basic." << std::endl;
+    }else{
+      Warning() << v << " is non-basic." << std::endl;
+    }
+  }
+
+  BasicIterator beginBasic() const {
+    return d_basic2RowIndex.begin();
+  }
+  BasicIterator endBasic() const {
+    return d_basic2RowIndex.end();
+  }
+
+  RowIndex basicToRowIndex(ArithVar x) const {
+    return d_basic2RowIndex[x];
+  }
+
+  ArithVar rowIndexToBasic(RowIndex rid) const {
+    Assert(d_rowIndex2basic.isKey(rid));
+    return d_rowIndex2basic[rid];
+  }
+
+  ColIterator colIterator(ArithVar x) const {
+    return getColumn(x).begin();
+  }
+
+  RowIterator ridRowIterator(RowIndex rid) const {
+    return getRow(rid).begin();
+  }
+
+  RowIterator basicRowIterator(ArithVar basic) const {
+    return ridRowIterator(basicToRowIndex(basic));
+  }
+
+  const Entry& basicFindEntry(ArithVar basic, ArithVar col) const {
+    return findEntry(basicToRowIndex(basic), col);
+  }
+
+  /**
+   * Adds a row to the tableau.
+   * The new row is equivalent to:
+   *   basicVar = \f$\sum_i\f$ coeffs[i] * variables[i]
+   * preconditions:
+   *   basicVar is already declared to be basic
+   *   basicVar does not have a row associated with it in the tableau.
+   *
+   * Note: each variables[i] does not have to be non-basic.
+   * Pivoting will be mimicked if it is basic.
+   */
+  void addRow(ArithVar basicVar,
+              const std::vector<Rational>& coeffs,
+              const std::vector<ArithVar>& variables);
+
+  /**
+   * preconditions:
+   *   x_r is basic,
+   *   x_s is non-basic, and
+   *   a_rs != 0.
+   */
+  void pivot(ArithVar basicOld, ArithVar basicNew, CoefficientChangeCallback& cb);
+
+  void removeBasicRow(ArithVar basic);
+
+  uint32_t basicRowLength(ArithVar basic) const{
+    RowIndex ridx = basicToRowIndex(basic);
+    return getRowLength(ridx);
+  }
+
+  /**
+   *  to += mult * from
+   * replacing from with its row.
+   */
+  void substitutePlusTimesConstant(ArithVar to, ArithVar from, const Rational& mult,  CoefficientChangeCallback& cb);
+
+  void directlyAddToCoefficient(ArithVar rowVar, ArithVar col, const Rational& mult,  CoefficientChangeCallback& cb){
+    RowIndex ridx = basicToRowIndex(rowVar);
+    manipulateRowEntry(ridx, col, mult, cb);
+  }
+
+  /* Returns the complexity of a row in the tableau. */
+  uint32_t rowComplexity(ArithVar basic) const;
+
+  /* Returns the average complexity of the rows in the tableau. */
+  double avgRowComplexity() const;
+
+  void printBasicRow(ArithVar basic, std::ostream& out);
+
+private:
+  /* Changes the basic variable on the row for basicOld to basicNew. */
+  void rowPivot(ArithVar basicOld, ArithVar basicNew, CoefficientChangeCallback& cb);
+
+};/* class Tableau */
+
+
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/tableau_sizes.cpp b/src/theory/arith/tableau_sizes.cpp
new file mode 100644
index 0000000..08f7a69
--- /dev/null
+++ b/src/theory/arith/tableau_sizes.cpp
@@ -0,0 +1,36 @@
+/*********************                                                        */
+/*! \file tableau_sizes.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "base/output.h"
+#include "theory/arith/tableau_sizes.h"
+#include "theory/arith/tableau.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+uint32_t TableauSizes::getRowLength(ArithVar b) const {
+  return d_tab->basicRowLength(b);
+}
+
+uint32_t TableauSizes::getColumnLength(ArithVar x) const {
+  return d_tab->getColLength(x);
+}
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/tableau_sizes.h b/src/theory/arith/tableau_sizes.h
new file mode 100644
index 0000000..6353307
--- /dev/null
+++ b/src/theory/arith/tableau_sizes.h
@@ -0,0 +1,45 @@
+/*********************                                                        */
+/*! \file tableau_sizes.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <stdint.h>
+#include "theory/arith/arithvar.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+class Tableau;
+
+class TableauSizes {
+private:
+  const Tableau* d_tab;
+public:
+  TableauSizes(const Tableau* tab): d_tab(tab){}
+
+  uint32_t getRowLength(ArithVar b) const;
+  uint32_t getColumnLength(ArithVar x) const;
+}; /* TableauSizes */
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
diff --git a/src/theory/arith/theory_arith.cpp b/src/theory/arith/theory_arith.cpp
new file mode 100644
index 0000000..9627b9a
--- /dev/null
+++ b/src/theory/arith/theory_arith.cpp
@@ -0,0 +1,153 @@
+/*********************                                                        */
+/*! \file theory_arith.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/arith/theory_arith.h"
+
+#include "options/smt_options.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/arith/infer_bounds.h"
+#include "theory/arith/theory_arith_private.h"
+
+using namespace std;
+using namespace CVC4::kind;
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+TheoryArith::TheoryArith(context::Context* c, context::UserContext* u,
+                         OutputChannel& out, Valuation valuation,
+                         const LogicInfo& logicInfo)
+    : Theory(THEORY_ARITH, c, u, out, valuation, logicInfo)
+    , d_internal(new TheoryArithPrivate(*this, c, u, out, valuation, logicInfo))
+    , d_ppRewriteTimer("theory::arith::ppRewriteTimer")
+{
+  smtStatisticsRegistry()->registerStat(&d_ppRewriteTimer);
+}
+
+TheoryArith::~TheoryArith(){
+  smtStatisticsRegistry()->unregisterStat(&d_ppRewriteTimer);
+  delete d_internal;
+}
+
+void TheoryArith::preRegisterTerm(TNode n){
+  d_internal->preRegisterTerm(n);
+}
+
+Node TheoryArith::expandDefinition(LogicRequest &logicRequest, Node node) {
+  return d_internal->expandDefinition(logicRequest, node);
+}
+
+void TheoryArith::setMasterEqualityEngine(eq::EqualityEngine* eq) {
+  d_internal->setMasterEqualityEngine(eq);
+}
+
+void TheoryArith::setQuantifiersEngine(QuantifiersEngine* qe) {
+  this->Theory::setQuantifiersEngine(qe);
+  d_internal->setQuantifiersEngine(qe);
+}
+
+void TheoryArith::addSharedTerm(TNode n){
+  d_internal->addSharedTerm(n);
+}
+
+Node TheoryArith::ppRewrite(TNode atom) {
+  CodeTimer timer(d_ppRewriteTimer, /* allow_reentrant = */ true);
+  return d_internal->ppRewrite(atom);
+}
+
+Theory::PPAssertStatus TheoryArith::ppAssert(TNode in, SubstitutionMap& outSubstitutions) {
+  return d_internal->ppAssert(in, outSubstitutions);
+}
+
+void TheoryArith::ppStaticLearn(TNode n, NodeBuilder<>& learned) {
+  d_internal->ppStaticLearn(n, learned);
+}
+
+void TheoryArith::check(Effort effortLevel){
+  getOutputChannel().spendResource(options::theoryCheckStep());
+  d_internal->check(effortLevel);
+}
+
+Node TheoryArith::explain(TNode n) {
+  return d_internal->explain(n);
+}
+
+void TheoryArith::propagate(Effort e) {
+  d_internal->propagate(e);
+}
+
+void TheoryArith::collectModelInfo( TheoryModel* m, bool fullModel ){
+  d_internal->collectModelInfo(m, fullModel);
+}
+
+void TheoryArith::notifyRestart(){
+  d_internal->notifyRestart();
+}
+
+void TheoryArith::presolve(){
+  d_internal->presolve();
+}
+
+EqualityStatus TheoryArith::getEqualityStatus(TNode a, TNode b) {
+  return d_internal->getEqualityStatus(a,b);
+}
+
+Node TheoryArith::getModelValue(TNode var) {
+  return d_internal->getModelValue( var );
+}
+
+
+std::pair<bool, Node> TheoryArith::entailmentCheck (TNode lit,
+                                                    const EntailmentCheckParameters* params,
+                                                    EntailmentCheckSideEffects* out)
+{
+  const ArithEntailmentCheckParameters* aparams = NULL;
+  if(params == NULL){
+    ArithEntailmentCheckParameters* def = new ArithEntailmentCheckParameters();
+    def->addLookupRowSumAlgorithms();
+    aparams = def;
+  }else{
+    AlwaysAssert(params->getTheoryId() == getId());
+    aparams = dynamic_cast<const ArithEntailmentCheckParameters*>(params);
+  }
+  Assert(aparams != NULL);
+
+  ArithEntailmentCheckSideEffects* ase = NULL;
+  if(out == NULL){
+    ase = new ArithEntailmentCheckSideEffects();
+  }else{
+    AlwaysAssert(out->getTheoryId() == getId());
+    ase = dynamic_cast<ArithEntailmentCheckSideEffects*>(out);
+  }
+  Assert(ase != NULL);
+
+  std::pair<bool, Node> res = d_internal->entailmentCheck(lit, *aparams, *ase);
+
+  if(params == NULL){
+    delete aparams;
+  }
+  if(out == NULL){
+    delete ase;
+  }
+
+  return res;
+}
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/theory_arith.h b/src/theory/arith/theory_arith.h
new file mode 100644
index 0000000..51bbd67
--- /dev/null
+++ b/src/theory/arith/theory_arith.h
@@ -0,0 +1,89 @@
+/*********************                                                        */
+/*! \file theory_arith.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Arithmetic theory.
+ ** Arithmetic theory.
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "theory/theory.h"
+#include "expr/node.h"
+#include "theory/arith/theory_arith_private_forward.h"
+
+
+namespace CVC4 {
+namespace theory {
+
+namespace arith {
+
+/**
+ * Implementation of QF_LRA.
+ * Based upon:
+ * http://research.microsoft.com/en-us/um/people/leonardo/cav06.pdf
+ */
+class TheoryArith : public Theory {
+private:
+  friend class TheoryArithPrivate;
+
+  TheoryArithPrivate* d_internal;
+
+  TimerStat d_ppRewriteTimer;
+
+public:
+  TheoryArith(context::Context* c, context::UserContext* u, OutputChannel& out,
+              Valuation valuation, const LogicInfo& logicInfo);
+  virtual ~TheoryArith();
+
+  /**
+   * Does non-context dependent setup for a node connected to a theory.
+   */
+  void preRegisterTerm(TNode n);
+
+  Node expandDefinition(LogicRequest &logicRequest, Node node);
+
+  void setMasterEqualityEngine(eq::EqualityEngine* eq);
+  void setQuantifiersEngine(QuantifiersEngine* qe);
+
+  void check(Effort e);
+  void propagate(Effort e);
+  Node explain(TNode n);
+
+  void collectModelInfo( TheoryModel* m, bool fullModel );
+
+  void shutdown(){ }
+
+  void presolve();
+  void notifyRestart();
+  PPAssertStatus ppAssert(TNode in, SubstitutionMap& outSubstitutions);
+  Node ppRewrite(TNode atom);
+  void ppStaticLearn(TNode in, NodeBuilder<>& learned);
+
+  std::string identify() const { return std::string("TheoryArith"); }
+
+  EqualityStatus getEqualityStatus(TNode a, TNode b);
+
+  void addSharedTerm(TNode n);
+
+  Node getModelValue(TNode var);
+
+
+  std::pair<bool, Node> entailmentCheck(TNode lit,
+                                        const EntailmentCheckParameters* params,
+                                        EntailmentCheckSideEffects* out);
+
+};/* class TheoryArith */
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/theory_arith_private.cpp b/src/theory/arith/theory_arith_private.cpp
new file mode 100644
index 0000000..069d353
--- /dev/null
+++ b/src/theory/arith/theory_arith_private.cpp
@@ -0,0 +1,5771 @@
+/*********************                                                        */
+/*! \file theory_arith_private.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Martin Brain
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/arith/theory_arith_private.h"
+
+#include <stdint.h>
+
+#include <map>
+#include <queue>
+#include <vector>
+
+#include "base/output.h"
+#include "context/cdhashset.h"
+#include "context/cdinsert_hashmap.h"
+#include "context/cdlist.h"
+#include "context/cdqueue.h"
+#include "context/context.h"
+#include "expr/kind.h"
+#include "expr/metakind.h"
+#include "expr/node.h"
+#include "expr/node_builder.h"
+#include "options/arith_options.h"
+#include "options/smt_options.h"  // for incrementalSolving()
+#include "smt/logic_exception.h"
+#include "smt/logic_request.h"
+#include "smt/smt_statistics_registry.h"
+#include "smt_util/boolean_simplification.h"
+#include "theory/arith/approx_simplex.h"
+#include "theory/arith/arith_ite_utils.h"
+#include "theory/arith/arith_rewriter.h"
+#include "theory/arith/arith_rewriter.h"
+#include "theory/arith/arith_static_learner.h"
+#include "theory/arith/arith_utilities.h"
+#include "theory/arith/arithvar.h"
+#include "theory/arith/congruence_manager.h"
+#include "theory/arith/constraint.h"
+#include "theory/arith/constraint.h"
+#include "theory/arith/cut_log.h"
+#include "theory/arith/delta_rational.h"
+#include "theory/arith/delta_rational.h"
+#include "theory/arith/dio_solver.h"
+#include "theory/arith/linear_equality.h"
+#include "theory/arith/matrix.h"
+#include "theory/arith/matrix.h"
+#include "theory/arith/normal_form.h"
+#include "theory/arith/partial_model.h"
+#include "theory/arith/partial_model.h"
+#include "theory/arith/simplex.h"
+#include "theory/arith/theory_arith.h"
+#include "theory/ite_utilities.h"
+#include "theory/quantifiers/bounded_integers.h"
+#include "theory/rewriter.h"
+#include "theory/theory_model.h"
+#include "theory/valuation.h"
+#include "util/dense_map.h"
+#include "util/integer.h"
+#include "util/rational.h"
+#include "util/result.h"
+#include "util/statistics_registry.h"
+
+using namespace std;
+using namespace CVC4::kind;
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+static Node toSumNode(const ArithVariables& vars, const DenseMap<Rational>& sum);
+static double fRand(double fMin, double fMax);
+static bool complexityBelow(const DenseMap<Rational>& row, uint32_t cap);
+
+
+TheoryArithPrivate::TheoryArithPrivate(TheoryArith& containing, context::Context* c, context::UserContext* u, OutputChannel& out, Valuation valuation, const LogicInfo& logicInfo) :
+  d_containing(containing),
+  d_nlIncomplete( false),
+  d_rowTracking(),
+  d_constraintDatabase(c, u, d_partialModel, d_congruenceManager, RaiseConflict(*this)),
+  d_qflraStatus(Result::SAT_UNKNOWN),
+  d_unknownsInARow(0),
+  d_hasDoneWorkSinceCut(false),
+  d_learner(u),
+  d_quantEngine(NULL),
+  d_assertionsThatDoNotMatchTheirLiterals(c),
+  d_nextIntegerCheckVar(0),
+  d_constantIntegerVariables(c),
+  d_diseqQueue(c, false),
+  d_currentPropagationList(),
+  d_learnedBounds(c),
+  d_partialModel(c, DeltaComputeCallback(*this)),
+  d_errorSet(d_partialModel, TableauSizes(&d_tableau), BoundCountingLookup(*this)),
+  d_tableau(),
+  d_linEq(d_partialModel, d_tableau, d_rowTracking, BasicVarModelUpdateCallBack(*this)),
+  d_diosolver(c),
+  d_restartsCounter(0),
+  d_tableauSizeHasBeenModified(false),
+  d_tableauResetDensity(1.6),
+  d_tableauResetPeriod(10),
+  d_conflicts(c),
+  d_blackBoxConflict(c, Node::null()),
+  d_congruenceManager(c, d_constraintDatabase, SetupLiteralCallBack(*this), d_partialModel, RaiseEqualityEngineConflict(*this)),
+  d_cmEnabled(c, true),
+
+  d_dualSimplex(d_linEq, d_errorSet, RaiseConflict(*this), TempVarMalloc(*this)),
+  d_fcSimplex(d_linEq, d_errorSet, RaiseConflict(*this), TempVarMalloc(*this)),
+  d_soiSimplex(d_linEq, d_errorSet, RaiseConflict(*this), TempVarMalloc(*this)),
+  d_attemptSolSimplex(d_linEq, d_errorSet, RaiseConflict(*this), TempVarMalloc(*this)),
+
+  d_pass1SDP(NULL),
+  d_otherSDP(NULL),
+  d_lastContextIntegerAttempted(c,-1),
+
+
+  d_DELTA_ZERO(0),
+  d_approxCuts(c),
+  d_fullCheckCounter(0),
+  d_cutCount(c, 0),
+  d_cutInContext(c),
+  d_likelyIntegerInfeasible(c, false),
+  d_guessedCoeffSet(c, false),
+  d_guessedCoeffs(),
+  d_treeLog(NULL),
+  d_replayVariables(),
+  d_replayConstraints(),
+  d_lhsTmp(),
+  d_approxStats(NULL),
+  d_attemptSolveIntTurnedOff(u, 0),
+  d_dioSolveResources(0),
+  d_solveIntMaybeHelp(0u),
+  d_solveIntAttempts(0u),
+  d_statistics()
+{
+  srand(79);
+}
+
+TheoryArithPrivate::~TheoryArithPrivate(){
+  if(d_treeLog != NULL){ delete d_treeLog; }
+  if(d_approxStats != NULL) { delete d_approxStats; }
+}
+
+static bool contains(const ConstraintCPVec& v, ConstraintP con){
+  for(unsigned i = 0, N = v.size(); i < N; ++i){
+    if(v[i] == con){
+      return true;
+    }
+  }
+  return false;
+}
+static void drop( ConstraintCPVec& v, ConstraintP con){
+  size_t readPos, writePos, N;
+  for(readPos = 0, writePos = 0, N = v.size(); readPos < N; ++readPos){
+    ConstraintCP curr = v[readPos];
+    if(curr != con){
+      v[writePos] = curr;
+      writePos++;
+    }
+  }
+  v.resize(writePos);
+}
+
+
+static void resolve(ConstraintCPVec& buf, ConstraintP c, const ConstraintCPVec& pos, const ConstraintCPVec& neg){
+  unsigned posPos CVC4_UNUSED = pos.size();
+  for(unsigned i = 0, N = pos.size(); i < N; ++i){
+    if(pos[i] == c){
+      posPos = i;
+    }else{
+      buf.push_back(pos[i]);
+    }
+  }
+  Assert(posPos < pos.size());
+  ConstraintP negc = c->getNegation();
+  unsigned negPos CVC4_UNUSED = neg.size();
+  for(unsigned i = 0, N = neg.size(); i < N; ++i){
+    if(neg[i] == negc){
+      negPos = i;
+    }else{
+      buf.push_back(neg[i]);
+    }
+  }
+  Assert(negPos < neg.size());
+
+  // Assert(dnconf.getKind() == kind::AND);
+  // Assert(upconf.getKind() == kind::AND);
+  // Assert(dnpos < dnconf.getNumChildren());
+  // Assert(uppos < upconf.getNumChildren());
+  // Assert(equalUpToNegation(dnconf[dnpos], upconf[uppos]));
+
+  // NodeBuilder<> nb(kind::AND);
+  // dropPosition(nb, dnconf, dnpos);
+  // dropPosition(nb, upconf, uppos);
+  // return safeConstructNary(nb);
+}
+
+void TheoryArithPrivate::setMasterEqualityEngine(eq::EqualityEngine* eq) {
+  d_congruenceManager.setMasterEqualityEngine(eq);
+}
+
+void TheoryArithPrivate::setQuantifiersEngine(QuantifiersEngine* qe) {
+  d_quantEngine = qe;
+}
+
+Node TheoryArithPrivate::getRealDivideBy0Func(){
+  Assert(!getLogicInfo().isLinear());
+  Assert(getLogicInfo().areRealsUsed());
+
+  if(d_realDivideBy0Func.isNull()){
+    TypeNode realType = NodeManager::currentNM()->realType();
+    d_realDivideBy0Func = skolemFunction("/by0", realType, realType);
+  }
+  return d_realDivideBy0Func;
+}
+
+Node TheoryArithPrivate::getIntDivideBy0Func(){
+  Assert(!getLogicInfo().isLinear());
+  Assert(getLogicInfo().areIntegersUsed());
+
+  if(d_intDivideBy0Func.isNull()){
+    TypeNode intType = NodeManager::currentNM()->integerType();
+    d_intDivideBy0Func = skolemFunction("divby0", intType, intType);
+  }
+  return d_intDivideBy0Func;
+}
+
+Node TheoryArithPrivate::getIntModulusBy0Func(){
+  Assert(!getLogicInfo().isLinear());
+  Assert(getLogicInfo().areIntegersUsed());
+
+  if(d_intModulusBy0Func.isNull()){
+    TypeNode intType = NodeManager::currentNM()->integerType();
+    d_intModulusBy0Func = skolemFunction("modby0", intType, intType);
+  }
+  return d_intModulusBy0Func;
+}
+
+TheoryArithPrivate::ModelException::ModelException(TNode n, const char* msg) throw (){
+  stringstream ss;
+  ss << "Cannot construct a model for " << n << " as " << endl << msg;
+  setMessage(ss.str());
+}
+TheoryArithPrivate::ModelException::~ModelException() throw (){ }
+
+
+TheoryArithPrivate::Statistics::Statistics()
+  : d_statAssertUpperConflicts("theory::arith::AssertUpperConflicts", 0)
+  , d_statAssertLowerConflicts("theory::arith::AssertLowerConflicts", 0)
+  , d_statUserVariables("theory::arith::UserVariables", 0)
+  , d_statAuxiliaryVariables("theory::arith::AuxiliaryVariables", 0)
+  , d_statDisequalitySplits("theory::arith::DisequalitySplits", 0)
+  , d_statDisequalityConflicts("theory::arith::DisequalityConflicts", 0)
+  , d_simplifyTimer("theory::arith::simplifyTimer")
+  , d_staticLearningTimer("theory::arith::staticLearningTimer")
+  , d_presolveTime("theory::arith::presolveTime")
+  , d_newPropTime("theory::arith::newPropTimer")
+  , d_externalBranchAndBounds("theory::arith::externalBranchAndBounds",0)
+  , d_initialTableauSize("theory::arith::initialTableauSize", 0)
+  , d_currSetToSmaller("theory::arith::currSetToSmaller", 0)
+  , d_smallerSetToCurr("theory::arith::smallerSetToCurr", 0)
+  , d_restartTimer("theory::arith::restartTimer")
+  , d_boundComputationTime("theory::arith::bound::time")
+  , d_boundComputations("theory::arith::bound::boundComputations",0)
+  , d_boundPropagations("theory::arith::bound::boundPropagations",0)
+  , d_unknownChecks("theory::arith::status::unknowns", 0)
+  , d_maxUnknownsInARow("theory::arith::status::maxUnknownsInARow", 0)
+  , d_avgUnknownsInARow("theory::arith::status::avgUnknownsInARow")
+  , d_revertsOnConflicts("theory::arith::status::revertsOnConflicts",0)
+  , d_commitsOnConflicts("theory::arith::status::commitsOnConflicts",0)
+  , d_nontrivialSatChecks("theory::arith::status::nontrivialSatChecks",0)
+  , d_replayLogRecCount("theory::arith::z::approx::replay::rec",0)
+  , d_replayLogRecConflictEscalation("theory::arith::z::approx::replay::rec::escalation",0)
+  , d_replayLogRecEarlyExit("theory::arith::z::approx::replay::rec::earlyexit",0)
+  , d_replayBranchCloseFailures("theory::arith::z::approx::replay::rec::branch::closefailures",0)
+  , d_replayLeafCloseFailures("theory::arith::z::approx::replay::rec::leaf::closefailures",0)
+  , d_replayBranchSkips("theory::arith::z::approx::replay::rec::branch::skips",0)
+  , d_mirCutsAttempted("theory::arith::z::approx::cuts::mir::attempted",0)
+  , d_gmiCutsAttempted("theory::arith::z::approx::cuts::gmi::attempted",0)
+  , d_branchCutsAttempted("theory::arith::z::approx::cuts::branch::attempted",0)
+  , d_cutsReconstructed("theory::arith::z::approx::cuts::reconstructed",0)
+  , d_cutsReconstructionFailed("theory::arith::z::approx::cuts::reconstructed::failed",0)
+  , d_cutsProven("theory::arith::z::approx::cuts::proofs",0)
+  , d_cutsProofFailed("theory::arith::z::approx::cuts::proofs::failed",0)
+  , d_mipReplayLemmaCalls("theory::arith::z::approx::external::calls",0)
+  , d_mipExternalCuts("theory::arith::z::approx::external::cuts",0)
+  , d_mipExternalBranch("theory::arith::z::approx::external::branches",0)
+  , d_inSolveInteger("theory::arith::z::approx::inSolverInteger",0)
+  , d_branchesExhausted("theory::arith::z::approx::exhausted::branches",0)
+  , d_execExhausted("theory::arith::z::approx::exhausted::exec",0)
+  , d_pivotsExhausted("theory::arith::z::approx::exhausted::pivots",0)
+  , d_panicBranches("theory::arith::z::arith::paniclemmas",0)
+  , d_relaxCalls("theory::arith::z::arith::relax::calls",0)
+  , d_relaxLinFeas("theory::arith::z::arith::relax::feasible::res",0)
+  , d_relaxLinFeasFailures("theory::arith::z::arith::relax::feasible::failures",0)
+  , d_relaxLinInfeas("theory::arith::z::arith::relax::infeasible",0)
+  , d_relaxLinInfeasFailures("theory::arith::z::arith::relax::infeasible::failures",0)
+  , d_relaxLinExhausted("theory::arith::z::arith::relax::exhausted",0)
+  , d_relaxOthers("theory::arith::z::arith::relax::other",0)
+  , d_applyRowsDeleted("theory::arith::z::arith::cuts::applyRowsDeleted",0)
+  , d_replaySimplexTimer("theory::arith::z::approx::replay::simplex::timer")
+  , d_replayLogTimer("theory::arith::z::approx::replay::log::timer")
+  , d_solveIntTimer("theory::arith::z::solveInt::timer")
+  , d_solveRealRelaxTimer("theory::arith::z::solveRealRelax::timer")
+  , d_solveIntCalls("theory::arith::z::solveInt::calls", 0)
+  , d_solveStandardEffort("theory::arith::z::solveInt::calls::standardEffort", 0)
+  , d_approxDisabled("theory::arith::z::approxDisabled", 0)
+  , d_replayAttemptFailed("theory::arith::z::replayAttemptFailed",0)
+  , d_cutsRejectedDuringReplay("theory::arith::z::approx::replay::cuts::rejected", 0)
+  , d_cutsRejectedDuringLemmas("theory::arith::z::approx::external::cuts::rejected", 0)
+  , d_satPivots("theory::arith::pivots::sat")
+  , d_unsatPivots("theory::arith::pivots::unsat")
+  , d_unknownPivots("theory::arith::pivots::unknown")
+  , d_solveIntModelsAttempts("theory::arith::z::solveInt::models::attempts", 0)
+  , d_solveIntModelsSuccessful("theory::arith::zzz::solveInt::models::successful", 0)
+  , d_mipTimer("theory::arith::z::approx::mip::timer")
+  , d_lpTimer("theory::arith::z::approx::lp::timer")
+  , d_mipProofsAttempted("theory::arith::z::mip::proofs::attempted", 0)
+  , d_mipProofsSuccessful("theory::arith::z::mip::proofs::successful", 0)
+  , d_numBranchesFailed("theory::arith::z::mip::branch::proof::failed", 0)
+{
+  smtStatisticsRegistry()->registerStat(&d_statAssertUpperConflicts);
+  smtStatisticsRegistry()->registerStat(&d_statAssertLowerConflicts);
+
+  smtStatisticsRegistry()->registerStat(&d_statUserVariables);
+  smtStatisticsRegistry()->registerStat(&d_statAuxiliaryVariables);
+  smtStatisticsRegistry()->registerStat(&d_statDisequalitySplits);
+  smtStatisticsRegistry()->registerStat(&d_statDisequalityConflicts);
+  smtStatisticsRegistry()->registerStat(&d_simplifyTimer);
+  smtStatisticsRegistry()->registerStat(&d_staticLearningTimer);
+
+  smtStatisticsRegistry()->registerStat(&d_presolveTime);
+  smtStatisticsRegistry()->registerStat(&d_newPropTime);
+
+  smtStatisticsRegistry()->registerStat(&d_externalBranchAndBounds);
+
+  smtStatisticsRegistry()->registerStat(&d_initialTableauSize);
+  smtStatisticsRegistry()->registerStat(&d_currSetToSmaller);
+  smtStatisticsRegistry()->registerStat(&d_smallerSetToCurr);
+  smtStatisticsRegistry()->registerStat(&d_restartTimer);
+
+  smtStatisticsRegistry()->registerStat(&d_boundComputationTime);
+  smtStatisticsRegistry()->registerStat(&d_boundComputations);
+  smtStatisticsRegistry()->registerStat(&d_boundPropagations);
+
+  smtStatisticsRegistry()->registerStat(&d_unknownChecks);
+  smtStatisticsRegistry()->registerStat(&d_maxUnknownsInARow);
+  smtStatisticsRegistry()->registerStat(&d_avgUnknownsInARow);
+  smtStatisticsRegistry()->registerStat(&d_revertsOnConflicts);
+  smtStatisticsRegistry()->registerStat(&d_commitsOnConflicts);
+  smtStatisticsRegistry()->registerStat(&d_nontrivialSatChecks);
+
+
+  smtStatisticsRegistry()->registerStat(&d_satPivots);
+  smtStatisticsRegistry()->registerStat(&d_unsatPivots);
+  smtStatisticsRegistry()->registerStat(&d_unknownPivots);
+
+  smtStatisticsRegistry()->registerStat(&d_replayLogRecCount);
+  smtStatisticsRegistry()->registerStat(&d_replayLogRecConflictEscalation);
+  smtStatisticsRegistry()->registerStat(&d_replayLogRecEarlyExit);
+  smtStatisticsRegistry()->registerStat(&d_replayBranchCloseFailures);
+  smtStatisticsRegistry()->registerStat(&d_replayLeafCloseFailures);
+  smtStatisticsRegistry()->registerStat(&d_replayBranchSkips);
+  smtStatisticsRegistry()->registerStat(&d_mirCutsAttempted);
+  smtStatisticsRegistry()->registerStat(&d_gmiCutsAttempted);
+  smtStatisticsRegistry()->registerStat(&d_branchCutsAttempted);
+  smtStatisticsRegistry()->registerStat(&d_cutsReconstructed);
+  smtStatisticsRegistry()->registerStat(&d_cutsProven);
+  smtStatisticsRegistry()->registerStat(&d_cutsProofFailed);
+  smtStatisticsRegistry()->registerStat(&d_cutsReconstructionFailed);
+  smtStatisticsRegistry()->registerStat(&d_mipReplayLemmaCalls);
+  smtStatisticsRegistry()->registerStat(&d_mipExternalCuts);
+  smtStatisticsRegistry()->registerStat(&d_mipExternalBranch);
+
+  smtStatisticsRegistry()->registerStat(&d_inSolveInteger);
+  smtStatisticsRegistry()->registerStat(&d_branchesExhausted);
+  smtStatisticsRegistry()->registerStat(&d_execExhausted);
+  smtStatisticsRegistry()->registerStat(&d_pivotsExhausted);
+  smtStatisticsRegistry()->registerStat(&d_panicBranches);
+  smtStatisticsRegistry()->registerStat(&d_relaxCalls);
+  smtStatisticsRegistry()->registerStat(&d_relaxLinFeas);
+  smtStatisticsRegistry()->registerStat(&d_relaxLinFeasFailures);
+  smtStatisticsRegistry()->registerStat(&d_relaxLinInfeas);
+  smtStatisticsRegistry()->registerStat(&d_relaxLinInfeasFailures);
+  smtStatisticsRegistry()->registerStat(&d_relaxLinExhausted);
+  smtStatisticsRegistry()->registerStat(&d_relaxOthers);
+
+  smtStatisticsRegistry()->registerStat(&d_applyRowsDeleted);
+
+  smtStatisticsRegistry()->registerStat(&d_replaySimplexTimer);
+  smtStatisticsRegistry()->registerStat(&d_replayLogTimer);
+  smtStatisticsRegistry()->registerStat(&d_solveIntTimer);
+  smtStatisticsRegistry()->registerStat(&d_solveRealRelaxTimer);
+
+  smtStatisticsRegistry()->registerStat(&d_solveIntCalls);
+  smtStatisticsRegistry()->registerStat(&d_solveStandardEffort);
+
+  smtStatisticsRegistry()->registerStat(&d_approxDisabled);
+
+  smtStatisticsRegistry()->registerStat(&d_replayAttemptFailed);
+
+  smtStatisticsRegistry()->registerStat(&d_cutsRejectedDuringReplay);
+  smtStatisticsRegistry()->registerStat(&d_cutsRejectedDuringLemmas);
+
+  smtStatisticsRegistry()->registerStat(&d_solveIntModelsAttempts);
+  smtStatisticsRegistry()->registerStat(&d_solveIntModelsSuccessful);
+  smtStatisticsRegistry()->registerStat(&d_mipTimer);
+  smtStatisticsRegistry()->registerStat(&d_lpTimer);
+  smtStatisticsRegistry()->registerStat(&d_mipProofsAttempted);
+  smtStatisticsRegistry()->registerStat(&d_mipProofsSuccessful);
+  smtStatisticsRegistry()->registerStat(&d_numBranchesFailed);
+}
+
+TheoryArithPrivate::Statistics::~Statistics(){
+  smtStatisticsRegistry()->unregisterStat(&d_statAssertUpperConflicts);
+  smtStatisticsRegistry()->unregisterStat(&d_statAssertLowerConflicts);
+
+  smtStatisticsRegistry()->unregisterStat(&d_statUserVariables);
+  smtStatisticsRegistry()->unregisterStat(&d_statAuxiliaryVariables);
+  smtStatisticsRegistry()->unregisterStat(&d_statDisequalitySplits);
+  smtStatisticsRegistry()->unregisterStat(&d_statDisequalityConflicts);
+  smtStatisticsRegistry()->unregisterStat(&d_simplifyTimer);
+  smtStatisticsRegistry()->unregisterStat(&d_staticLearningTimer);
+
+  smtStatisticsRegistry()->unregisterStat(&d_presolveTime);
+  smtStatisticsRegistry()->unregisterStat(&d_newPropTime);
+
+  smtStatisticsRegistry()->unregisterStat(&d_externalBranchAndBounds);
+
+  smtStatisticsRegistry()->unregisterStat(&d_initialTableauSize);
+  smtStatisticsRegistry()->unregisterStat(&d_currSetToSmaller);
+  smtStatisticsRegistry()->unregisterStat(&d_smallerSetToCurr);
+  smtStatisticsRegistry()->unregisterStat(&d_restartTimer);
+
+  smtStatisticsRegistry()->unregisterStat(&d_boundComputationTime);
+  smtStatisticsRegistry()->unregisterStat(&d_boundComputations);
+  smtStatisticsRegistry()->unregisterStat(&d_boundPropagations);
+
+  smtStatisticsRegistry()->unregisterStat(&d_unknownChecks);
+  smtStatisticsRegistry()->unregisterStat(&d_maxUnknownsInARow);
+  smtStatisticsRegistry()->unregisterStat(&d_avgUnknownsInARow);
+  smtStatisticsRegistry()->unregisterStat(&d_revertsOnConflicts);
+  smtStatisticsRegistry()->unregisterStat(&d_commitsOnConflicts);
+  smtStatisticsRegistry()->unregisterStat(&d_nontrivialSatChecks);
+
+  smtStatisticsRegistry()->unregisterStat(&d_satPivots);
+  smtStatisticsRegistry()->unregisterStat(&d_unsatPivots);
+  smtStatisticsRegistry()->unregisterStat(&d_unknownPivots);
+
+  smtStatisticsRegistry()->unregisterStat(&d_replayLogRecCount);
+  smtStatisticsRegistry()->unregisterStat(&d_replayLogRecConflictEscalation);
+  smtStatisticsRegistry()->unregisterStat(&d_replayLogRecEarlyExit);
+  smtStatisticsRegistry()->unregisterStat(&d_replayBranchCloseFailures);
+  smtStatisticsRegistry()->unregisterStat(&d_replayLeafCloseFailures);
+  smtStatisticsRegistry()->unregisterStat(&d_replayBranchSkips);
+  smtStatisticsRegistry()->unregisterStat(&d_mirCutsAttempted);
+  smtStatisticsRegistry()->unregisterStat(&d_gmiCutsAttempted);
+  smtStatisticsRegistry()->unregisterStat(&d_branchCutsAttempted);
+  smtStatisticsRegistry()->unregisterStat(&d_cutsReconstructed);
+  smtStatisticsRegistry()->unregisterStat(&d_cutsProven);
+  smtStatisticsRegistry()->unregisterStat(&d_cutsProofFailed);
+  smtStatisticsRegistry()->unregisterStat(&d_cutsReconstructionFailed);
+  smtStatisticsRegistry()->unregisterStat(&d_mipReplayLemmaCalls);
+  smtStatisticsRegistry()->unregisterStat(&d_mipExternalCuts);
+  smtStatisticsRegistry()->unregisterStat(&d_mipExternalBranch);
+
+
+  smtStatisticsRegistry()->unregisterStat(&d_inSolveInteger);
+  smtStatisticsRegistry()->unregisterStat(&d_branchesExhausted);
+  smtStatisticsRegistry()->unregisterStat(&d_execExhausted);
+  smtStatisticsRegistry()->unregisterStat(&d_pivotsExhausted);
+  smtStatisticsRegistry()->unregisterStat(&d_panicBranches);
+  smtStatisticsRegistry()->unregisterStat(&d_relaxCalls);
+  smtStatisticsRegistry()->unregisterStat(&d_relaxLinFeas);
+  smtStatisticsRegistry()->unregisterStat(&d_relaxLinFeasFailures);
+  smtStatisticsRegistry()->unregisterStat(&d_relaxLinInfeas);
+  smtStatisticsRegistry()->unregisterStat(&d_relaxLinInfeasFailures);
+  smtStatisticsRegistry()->unregisterStat(&d_relaxLinExhausted);
+  smtStatisticsRegistry()->unregisterStat(&d_relaxOthers);
+
+  smtStatisticsRegistry()->unregisterStat(&d_applyRowsDeleted);
+
+  smtStatisticsRegistry()->unregisterStat(&d_replaySimplexTimer);
+  smtStatisticsRegistry()->unregisterStat(&d_replayLogTimer);
+  smtStatisticsRegistry()->unregisterStat(&d_solveIntTimer);
+  smtStatisticsRegistry()->unregisterStat(&d_solveRealRelaxTimer);
+
+  smtStatisticsRegistry()->unregisterStat(&d_solveIntCalls);
+  smtStatisticsRegistry()->unregisterStat(&d_solveStandardEffort);
+
+  smtStatisticsRegistry()->unregisterStat(&d_approxDisabled);
+
+  smtStatisticsRegistry()->unregisterStat(&d_replayAttemptFailed);
+
+  smtStatisticsRegistry()->unregisterStat(&d_cutsRejectedDuringReplay);
+  smtStatisticsRegistry()->unregisterStat(&d_cutsRejectedDuringLemmas);
+
+
+  smtStatisticsRegistry()->unregisterStat(&d_solveIntModelsAttempts);
+  smtStatisticsRegistry()->unregisterStat(&d_solveIntModelsSuccessful);
+  smtStatisticsRegistry()->unregisterStat(&d_mipTimer);
+  smtStatisticsRegistry()->unregisterStat(&d_lpTimer);
+  smtStatisticsRegistry()->unregisterStat(&d_mipProofsAttempted);
+  smtStatisticsRegistry()->unregisterStat(&d_mipProofsSuccessful);
+  smtStatisticsRegistry()->unregisterStat(&d_numBranchesFailed);
+}
+
+bool complexityBelow(const DenseMap<Rational>& row, uint32_t cap){
+  DenseMap<Rational>::const_iterator riter, rend;
+  for(riter=row.begin(), rend=row.end(); riter != rend; ++riter){
+    ArithVar v = *riter;
+    const Rational& q = row[v];
+    if(q.complexity() > cap){
+      return false;
+    }
+  }
+  return true;
+}
+
+void TheoryArithPrivate::raiseConflict(ConstraintCP a){
+  Assert(a->inConflict());
+  d_conflicts.push_back(a);
+}
+
+void TheoryArithPrivate::raiseBlackBoxConflict(Node bb){
+  if(d_blackBoxConflict.get().isNull()){
+    d_blackBoxConflict = bb;
+  }
+}
+
+void TheoryArithPrivate::revertOutOfConflict(){
+  d_partialModel.revertAssignmentChanges();
+  clearUpdates();
+  d_currentPropagationList.clear();
+}
+
+void TheoryArithPrivate::clearUpdates(){
+  d_updatedBounds.purge();
+}
+
+// void TheoryArithPrivate::raiseConflict(ConstraintCP a, ConstraintCP b){
+//   ConstraintCPVec v;
+//   v.push_back(a);
+//   v.push_back(b);
+//   d_conflicts.push_back(v);
+// }
+
+// void TheoryArithPrivate::raiseConflict(ConstraintCP a, ConstraintCP b, ConstraintCP c){
+//   ConstraintCPVec v;
+//   v.push_back(a);
+//   v.push_back(b);
+//   v.push_back(c);
+//   d_conflicts.push_back(v);
+// }
+
+void TheoryArithPrivate::zeroDifferenceDetected(ArithVar x){
+  if(d_cmEnabled){
+    Assert(d_congruenceManager.isWatchedVariable(x));
+    Assert(d_partialModel.upperBoundIsZero(x));
+    Assert(d_partialModel.lowerBoundIsZero(x));
+
+    ConstraintP lb = d_partialModel.getLowerBoundConstraint(x);
+    ConstraintP ub = d_partialModel.getUpperBoundConstraint(x);
+
+    if(lb->isEquality()){
+      d_congruenceManager.watchedVariableIsZero(lb);
+    }else if(ub->isEquality()){
+      d_congruenceManager.watchedVariableIsZero(ub);
+    }else{
+      d_congruenceManager.watchedVariableIsZero(lb, ub);
+    }
+  }
+}
+
+bool TheoryArithPrivate::getSolveIntegerResource(){
+  if(d_attemptSolveIntTurnedOff > 0){
+    d_attemptSolveIntTurnedOff = d_attemptSolveIntTurnedOff - 1;
+    return false;
+  }else{
+    return true;
+  }
+}
+
+bool TheoryArithPrivate::getDioCuttingResource(){
+  if(d_dioSolveResources > 0){
+    d_dioSolveResources--;
+    if(d_dioSolveResources == 0){
+      d_dioSolveResources = -options::rrTurns();
+    }
+    return true;
+  }else{
+    d_dioSolveResources++;
+    if(d_dioSolveResources >= 0){
+      d_dioSolveResources = options::dioSolverTurns();
+    }
+    return false;
+  }
+}
+
+/* procedure AssertLower( x_i >= c_i ) */
+bool TheoryArithPrivate::AssertLower(ConstraintP constraint){
+  Assert(constraint != NullConstraint);
+  Assert(constraint->isLowerBound());
+  Assert(constraint->isTrue());
+  Assert(!constraint->negationHasProof());
+  
+
+  ArithVar x_i = constraint->getVariable();
+  const DeltaRational& c_i = constraint->getValue();
+
+  Debug("arith") << "AssertLower(" << x_i << " " << c_i << ")"<< std::endl;
+
+  Assert(!isInteger(x_i) || c_i.isIntegral());
+
+  //TODO Relax to less than?
+  if(d_partialModel.lessThanLowerBound(x_i, c_i)){
+    return false; //sat
+  }
+
+  int cmpToUB = d_partialModel.cmpToUpperBound(x_i, c_i);
+  if(cmpToUB > 0){ //  c_i < \lowerbound(x_i)
+    ConstraintP ubc = d_partialModel.getUpperBoundConstraint(x_i);
+    ConstraintP negation = constraint->getNegation();
+    negation->impliedByUnate(ubc, true);
+    
+    raiseConflict(constraint);
+
+    ++(d_statistics.d_statAssertLowerConflicts);
+    return true;
+  }else if(cmpToUB == 0){
+    if(isInteger(x_i)){
+      d_constantIntegerVariables.push_back(x_i);
+      Debug("dio::push") << "dio::push " << x_i << endl;
+    }
+    ConstraintP ub = d_partialModel.getUpperBoundConstraint(x_i);
+
+    if(d_cmEnabled){
+      if(!d_congruenceManager.isWatchedVariable(x_i) || c_i.sgn() != 0){
+        // if it is not a watched variable report it
+        // if it is is a watched variable and c_i == 0,
+        // let zeroDifferenceDetected(x_i) catch this
+        d_congruenceManager.equalsConstant(constraint, ub);
+      }
+    }
+
+    const ValueCollection& vc = constraint->getValueCollection();
+    if(vc.hasEquality()){
+      
+      Assert(vc.hasDisequality());
+      ConstraintP eq = vc.getEquality();
+      ConstraintP diseq = vc.getDisequality();
+      // x <= b, x >= b |= x = b
+      // (x > b or x < b or x = b)
+      Debug("arith::eq") << "lb == ub, propagate eq" << eq << endl;
+      bool triConflict = diseq->isTrue();
+
+      if(!eq->isTrue()){
+        eq->impliedByTrichotomy(constraint, ub, triConflict);
+        eq->tryToPropagate();
+      }
+      if(triConflict){
+        ++(d_statistics.d_statDisequalityConflicts);
+        raiseConflict(eq);
+        return true;
+      }
+    }
+  }else{
+    // l <= x <= u and l < u
+    Assert(cmpToUB < 0);
+    const ValueCollection& vc = constraint->getValueCollection();
+
+    if(vc.hasDisequality()){
+      const ConstraintP diseq = vc.getDisequality();
+      if(diseq->isTrue()){
+        const ConstraintP ub = d_constraintDatabase.ensureConstraint(const_cast<ValueCollection&>(vc), UpperBound);
+        ConstraintP negUb = ub->getNegation();
+
+        // l <= x, l != x |= l < x
+        // |= not (l >= x)
+        bool ubInConflict = ub->hasProof();
+        bool learnNegUb = !(negUb->hasProof());
+        if(learnNegUb){
+          negUb->impliedByTrichotomy(constraint, diseq, ubInConflict);
+          negUb->tryToPropagate();
+        }
+        if(ubInConflict){
+          raiseConflict(ub);
+          return true;
+        }else if(learnNegUb){
+          d_learnedBounds.push_back(negUb);
+        }
+      }
+    }
+  }
+
+  d_currentPropagationList.push_back(constraint);
+  d_currentPropagationList.push_back(d_partialModel.getLowerBoundConstraint(x_i));
+
+  d_partialModel.setLowerBoundConstraint(constraint);
+
+  if(d_cmEnabled){
+    if(d_congruenceManager.isWatchedVariable(x_i)){
+      int sgn = c_i.sgn();
+      if(sgn > 0){
+        d_congruenceManager.watchedVariableCannotBeZero(constraint);
+      }else if(sgn == 0 && d_partialModel.upperBoundIsZero(x_i)){
+        zeroDifferenceDetected(x_i);
+      }
+    }
+  }
+
+  d_updatedBounds.softAdd(x_i);
+
+  if(Debug.isOn("model")) {
+    Debug("model") << "before" << endl;
+    d_partialModel.printModel(x_i);
+    d_tableau.debugPrintIsBasic(x_i);
+  }
+
+  if(!d_tableau.isBasic(x_i)){
+    if(d_partialModel.getAssignment(x_i) < c_i){
+      d_linEq.update(x_i, c_i);
+    }
+  }else{
+    d_errorSet.signalVariable(x_i);
+  }
+
+  if(Debug.isOn("model")) {
+    Debug("model") << "after" << endl;
+    d_partialModel.printModel(x_i);
+    d_tableau.debugPrintIsBasic(x_i);
+ }
+
+  return false; //sat
+}
+
+/* procedure AssertUpper( x_i <= c_i) */
+bool TheoryArithPrivate::AssertUpper(ConstraintP constraint){
+  Assert(constraint != NullConstraint);
+  Assert(constraint->isUpperBound());
+  Assert(constraint->isTrue());
+  Assert(!constraint->negationHasProof());
+  
+  ArithVar x_i = constraint->getVariable();
+  const DeltaRational& c_i = constraint->getValue();
+
+  Debug("arith") << "AssertUpper(" << x_i << " " << c_i << ")"<< std::endl;
+
+
+  //Too strong because of rounding with integers
+  //Assert(!constraint->hasLiteral() || original == constraint->getLiteral());
+  Assert(!isInteger(x_i) || c_i.isIntegral());
+
+  Debug("arith") << "AssertUpper(" << x_i << " " << c_i << ")"<< std::endl;
+
+  if(d_partialModel.greaterThanUpperBound(x_i, c_i) ){ // \upperbound(x_i) <= c_i
+    return false; //sat
+  }
+  
+  // cmpToLb =  \lowerbound(x_i).cmp(c_i)
+  int cmpToLB = d_partialModel.cmpToLowerBound(x_i, c_i);
+  if( cmpToLB < 0 ){ //  \upperbound(x_i) < \lowerbound(x_i)
+    // l_i <= x_i and c_i < l_i |= c_i < x_i
+    // or ... |= not (x_i <= c_i)
+    ConstraintP lbc = d_partialModel.getLowerBoundConstraint(x_i);
+    ConstraintP negConstraint = constraint->getNegation();
+    negConstraint->impliedByUnate(lbc, true);
+    raiseConflict(constraint);
+    ++(d_statistics.d_statAssertUpperConflicts);
+    return true;
+  }else if(cmpToLB == 0){ // \lowerBound(x_i) == \upperbound(x_i)
+    if(isInteger(x_i)){
+      d_constantIntegerVariables.push_back(x_i);
+      Debug("dio::push") << "dio::push " << x_i << endl;
+    }
+
+    const ValueCollection& vc = constraint->getValueCollection();
+    ConstraintP lb = d_partialModel.getLowerBoundConstraint(x_i);
+    if(d_cmEnabled){
+      if(!d_congruenceManager.isWatchedVariable(x_i) || c_i.sgn() != 0){
+        // if it is not a watched variable report it
+        // if it is is a watched variable and c_i == 0,
+        // let zeroDifferenceDetected(x_i) catch this
+        d_congruenceManager.equalsConstant(lb, constraint);
+      }
+    }
+
+    if(vc.hasDisequality()){
+      Assert(vc.hasDisequality());
+      ConstraintP eq = vc.getEquality();
+      ConstraintP diseq = vc.getDisequality();
+      // x <= b, x >= b |= x = b
+      // (x > b or x < b or x = b)
+      Debug("arith::eq") << "lb == ub, propagate eq" << eq << endl;
+      bool triConflict = diseq->isTrue();
+      if(!eq->isTrue()){
+        eq->impliedByTrichotomy(constraint, lb, triConflict);
+        eq->tryToPropagate();
+      }
+      if(triConflict){
+        ++(d_statistics.d_statDisequalityConflicts);
+        raiseConflict(eq);
+        return true;
+      }      
+    }
+  }else if(cmpToLB > 0){
+    // l <= x <= u and l < u
+    Assert(cmpToLB > 0);
+    const ValueCollection& vc = constraint->getValueCollection();
+
+    if(vc.hasDisequality()){
+      const ConstraintP diseq = vc.getDisequality();
+      if(diseq->isTrue()){
+        const ConstraintP lb = d_constraintDatabase.ensureConstraint(const_cast<ValueCollection&>(vc), LowerBound);
+        ConstraintP negLb = lb->getNegation();
+
+        // x <= u, u != x |= u < x
+        // |= not (u >= x)
+        bool lbInConflict = lb->hasProof();
+        bool learnNegLb = !(negLb->hasProof());
+        if(learnNegLb){
+          negLb->impliedByTrichotomy(constraint, diseq, lbInConflict);
+          negLb->tryToPropagate();
+        }
+        if(lbInConflict){
+          raiseConflict(lb);
+          return true;
+        }else if(learnNegLb){
+          d_learnedBounds.push_back(negLb);
+        }
+      }
+    }
+  }
+
+  d_currentPropagationList.push_back(constraint);
+  d_currentPropagationList.push_back(d_partialModel.getUpperBoundConstraint(x_i));
+  //It is fine if this is NullConstraint
+
+  d_partialModel.setUpperBoundConstraint(constraint);
+
+  if(d_cmEnabled){
+    if(d_congruenceManager.isWatchedVariable(x_i)){
+      int sgn = c_i.sgn();
+      if(sgn < 0){
+        d_congruenceManager.watchedVariableCannotBeZero(constraint);
+      }else if(sgn == 0 && d_partialModel.lowerBoundIsZero(x_i)){
+        zeroDifferenceDetected(x_i);
+      }
+    }
+  }
+
+  d_updatedBounds.softAdd(x_i);
+
+  if(Debug.isOn("model")) {
+    Debug("model") << "before" << endl;
+    d_partialModel.printModel(x_i);
+    d_tableau.debugPrintIsBasic(x_i);
+  }
+
+  if(!d_tableau.isBasic(x_i)){
+    if(d_partialModel.getAssignment(x_i) > c_i){
+      d_linEq.update(x_i, c_i);
+    }
+  }else{
+    d_errorSet.signalVariable(x_i);
+  }
+
+  if(Debug.isOn("model")) {
+    Debug("model") << "after" << endl;
+    d_partialModel.printModel(x_i);
+    d_tableau.debugPrintIsBasic(x_i);
+  }
+
+  return false; //sat
+}
+
+
+/* procedure AssertEquality( x_i == c_i ) */
+bool TheoryArithPrivate::AssertEquality(ConstraintP constraint){
+  Assert(constraint != NullConstraint);
+  Assert(constraint->isEquality());
+  Assert(constraint->isTrue());
+  Assert(!constraint->negationHasProof());
+
+  ArithVar x_i = constraint->getVariable();
+  const DeltaRational& c_i = constraint->getValue();
+
+  Debug("arith") << "AssertEquality(" << x_i << " " << c_i << ")"<< std::endl;
+
+  //Should be fine in integers
+  Assert(!isInteger(x_i) || c_i.isIntegral());
+
+  int cmpToLB = d_partialModel.cmpToLowerBound(x_i, c_i);
+  int cmpToUB = d_partialModel.cmpToUpperBound(x_i, c_i);
+
+  // u_i <= c_i <= l_i
+  // This can happen if both c_i <= x_i and x_i <= c_i are in the system.
+  if(cmpToUB >= 0 && cmpToLB <= 0){
+    return false; //sat
+  }
+
+  if(cmpToUB > 0 || cmpToLB < 0){
+    ConstraintP cb = (cmpToUB > 0) ?  d_partialModel.getUpperBoundConstraint(x_i) :
+      d_partialModel.getLowerBoundConstraint(x_i);
+    ConstraintP diseq = constraint->getNegation();
+    Assert(!diseq->isTrue());
+    diseq->impliedByUnate(cb, true);
+    raiseConflict(constraint);
+    return true;
+  }
+
+  Assert(cmpToUB <= 0);
+  Assert(cmpToLB >= 0);
+  Assert(cmpToUB < 0 || cmpToLB > 0);
+
+
+  if(isInteger(x_i)){
+    d_constantIntegerVariables.push_back(x_i);
+    Debug("dio::push") << "dio::push " << x_i << endl;
+  }
+
+  // Don't bother to check whether x_i != c_i is in d_diseq
+  // The a and (not a) should never be on the fact queue
+  d_currentPropagationList.push_back(constraint);
+  d_currentPropagationList.push_back(d_partialModel.getLowerBoundConstraint(x_i));
+  d_currentPropagationList.push_back(d_partialModel.getUpperBoundConstraint(x_i));
+
+  d_partialModel.setUpperBoundConstraint(constraint);
+  d_partialModel.setLowerBoundConstraint(constraint);
+
+  if(d_cmEnabled){
+    if(d_congruenceManager.isWatchedVariable(x_i)){
+      int sgn = c_i.sgn();
+      if(sgn == 0){
+        zeroDifferenceDetected(x_i);
+      }else{
+        d_congruenceManager.watchedVariableCannotBeZero(constraint);
+        d_congruenceManager.equalsConstant(constraint);
+      }
+    }else{
+      d_congruenceManager.equalsConstant(constraint);
+    }
+  }
+
+  d_updatedBounds.softAdd(x_i);
+
+  if(Debug.isOn("model")) {
+    Debug("model") << "before" << endl;
+    d_partialModel.printModel(x_i);
+    d_tableau.debugPrintIsBasic(x_i);
+  }
+
+  if(!d_tableau.isBasic(x_i)){
+    if(!(d_partialModel.getAssignment(x_i) == c_i)){
+      d_linEq.update(x_i, c_i);
+    }
+  }else{
+    d_errorSet.signalVariable(x_i);
+  }
+
+  if(Debug.isOn("model")) {
+    Debug("model") << "after" << endl;
+    d_partialModel.printModel(x_i);
+    d_tableau.debugPrintIsBasic(x_i);
+  }
+
+  return false;
+}
+
+
+/* procedure AssertDisequality( x_i != c_i ) */
+bool TheoryArithPrivate::AssertDisequality(ConstraintP constraint){
+  Assert(constraint != NullConstraint);
+  Assert(constraint->isDisequality());
+  Assert(constraint->isTrue());
+  Assert(!constraint->negationHasProof());
+
+  ArithVar x_i = constraint->getVariable();
+  const DeltaRational& c_i = constraint->getValue();
+  Debug("arith") << "AssertDisequality(" << x_i << " " << c_i << ")"<< std::endl;
+
+  //Should be fine in integers
+  Assert(!isInteger(x_i) || c_i.isIntegral());
+
+  if(d_cmEnabled){
+    if(d_congruenceManager.isWatchedVariable(x_i)){
+      int sgn = c_i.sgn();
+      if(sgn == 0){
+        d_congruenceManager.watchedVariableCannotBeZero(constraint);
+      }
+    }
+  }
+
+  const ValueCollection& vc = constraint->getValueCollection();
+  if(vc.hasLowerBound() && vc.hasUpperBound()){
+    const ConstraintP lb = vc.getLowerBound();
+    const ConstraintP ub = vc.getUpperBound();
+    if(lb->isTrue() && ub->isTrue()){
+      ConstraintP eq = constraint->getNegation();
+      eq->impliedByTrichotomy(lb, ub, true);
+      raiseConflict(constraint);
+      //in conflict
+      ++(d_statistics.d_statDisequalityConflicts);
+      return true;
+    }
+  }
+  if(vc.hasLowerBound() ){
+    const ConstraintP lb = vc.getLowerBound();
+    if(lb->isTrue()){
+      const ConstraintP ub = d_constraintDatabase.ensureConstraint(const_cast<ValueCollection&>(vc), UpperBound);
+      Assert(!ub->isTrue());
+      Debug("arith::eq") << "propagate UpperBound " << constraint << lb << ub << endl;
+      const ConstraintP negUb = ub->getNegation();
+      if(!negUb->isTrue()){
+        negUb->impliedByTrichotomy(constraint, lb, false);
+        negUb->tryToPropagate();
+        d_learnedBounds.push_back(negUb);
+      }
+    }
+  }
+  if(vc.hasUpperBound()){
+    const ConstraintP ub = vc.getUpperBound();
+    if(ub->isTrue()){
+      const ConstraintP lb = d_constraintDatabase.ensureConstraint(const_cast<ValueCollection&>(vc), LowerBound);
+      Assert(!lb->isTrue());
+
+      Debug("arith::eq") << "propagate LowerBound " << constraint << lb << ub << endl;
+      const ConstraintP negLb = lb->getNegation();
+      if(!negLb->isTrue()){
+        negLb->impliedByTrichotomy(constraint, ub, false);
+        negLb->tryToPropagate();
+        d_learnedBounds.push_back(negLb);
+      }
+    }
+  }
+
+  bool split = constraint->isSplit();
+
+  if(!split && c_i == d_partialModel.getAssignment(x_i)){
+    Debug("arith::eq") << "lemma now! " << constraint << endl;
+    outputLemma(constraint->split());
+    return false;
+  }else if(d_partialModel.strictlyLessThanLowerBound(x_i, c_i)){
+    Debug("arith::eq") << "can drop as less than lb" << constraint << endl;
+  }else if(d_partialModel.strictlyGreaterThanUpperBound(x_i, c_i)){
+    Debug("arith::eq") << "can drop as less than ub" << constraint << endl;
+  }else if(!split){
+    Debug("arith::eq") << "push back" << constraint << endl;
+    d_diseqQueue.push(constraint);
+    d_partialModel.invalidateDelta();
+  }else{
+    Debug("arith::eq") << "skipping already split " << constraint << endl;
+  }
+  return false;
+}
+
+void TheoryArithPrivate::addSharedTerm(TNode n){
+  Debug("arith::addSharedTerm") << "addSharedTerm: " << n << endl;
+  if(n.isConst()){
+    d_partialModel.invalidateDelta();
+  }
+
+  d_congruenceManager.addSharedTerm(n);
+  if(!n.isConst() && !isSetup(n)){
+    Polynomial poly = Polynomial::parsePolynomial(n);
+    Polynomial::iterator it = poly.begin();
+    Polynomial::iterator it_end = poly.end();
+    for (; it != it_end; ++ it) {
+      Monomial m = *it;
+      if (!m.isConstant() && !isSetup(m.getVarList().getNode())) {
+        setupVariableList(m.getVarList());
+      }
+    }
+  }
+}
+
+Node TheoryArithPrivate::getModelValue(TNode term) {
+  try{
+    DeltaRational drv = getDeltaValue(term);
+    const Rational& delta = d_partialModel.getDelta();
+    Rational qmodel = drv.substituteDelta( delta );
+    return mkRationalNode( qmodel );
+  } catch (DeltaRationalException& dr) {
+    return Node::null();
+  } catch (ModelException& me) {
+    return Node::null();
+  }
+}
+
+namespace attr {
+  struct ToIntegerTag { };
+  struct LinearIntDivTag { };
+}/* CVC4::theory::arith::attr namespace */
+
+/**
+ * This attribute maps the child of a to_int / is_int to the
+ * corresponding integer skolem.
+ */
+typedef expr::CDAttribute<attr::ToIntegerTag, Node> ToIntegerAttr;
+
+/**
+ * This attribute maps division-by-constant-k terms to a variable
+ * used to eliminate them.
+ */
+typedef expr::CDAttribute<attr::LinearIntDivTag, Node> LinearIntDivAttr;
+
+Node TheoryArithPrivate::ppRewriteTerms(TNode n) {
+  if(Theory::theoryOf(n) != THEORY_ARITH) {
+    return n;
+  }
+
+  NodeManager* nm = NodeManager::currentNM();
+
+  switch(Kind k = n.getKind()) {
+
+  case kind::TO_INTEGER:
+  case kind::IS_INTEGER: {
+    Node intVar;
+    if(!n[0].getAttribute(ToIntegerAttr(), intVar)) {
+      intVar = nm->mkSkolem("toInt", nm->integerType(), "a conversion of a Real term to its Integer part");
+      n[0].setAttribute(ToIntegerAttr(), intVar);
+      d_containing.d_out->lemma(nm->mkNode(kind::AND, nm->mkNode(kind::LT, nm->mkNode(kind::MINUS, n[0], nm->mkConst(Rational(1))), intVar), nm->mkNode(kind::LEQ, intVar, n[0])));
+    }
+    if(n.getKind() == kind::TO_INTEGER) {
+      Node node = intVar;
+      return node;
+    } else {
+      Node node = nm->mkNode(kind::EQUAL, n[0], intVar);
+      return node;
+    }
+    Unreachable();
+  }
+
+  case kind::INTS_DIVISION:
+  case kind::INTS_DIVISION_TOTAL: {
+    if(!options::rewriteDivk()) {
+      return n;
+    }
+    Node num = Rewriter::rewrite(n[0]);
+    Node den = Rewriter::rewrite(n[1]);
+    if(den.isConst()) {
+      const Rational& rat = den.getConst<Rational>();
+      Assert(!num.isConst());
+      if(rat != 0) {
+        Node intVar;
+        Node rw = nm->mkNode(k, num, den);
+        if(!rw.getAttribute(LinearIntDivAttr(), intVar)) {
+          intVar = nm->mkSkolem("linearIntDiv", nm->integerType(), "the result of an intdiv-by-k term");
+          rw.setAttribute(LinearIntDivAttr(), intVar);
+          if(rat > 0) {
+            d_containing.d_out->lemma(nm->mkNode(kind::AND, nm->mkNode(kind::LEQ, nm->mkNode(kind::MULT, den, intVar), num), nm->mkNode(kind::LT, num, nm->mkNode(kind::MULT, den, nm->mkNode(kind::PLUS, intVar, nm->mkConst(Rational(1)))))));
+          } else {
+            d_containing.d_out->lemma(nm->mkNode(kind::AND, nm->mkNode(kind::LEQ, nm->mkNode(kind::MULT, den, intVar), num), nm->mkNode(kind::LT, num, nm->mkNode(kind::MULT, den, nm->mkNode(kind::PLUS, intVar, nm->mkConst(Rational(-1)))))));
+          }
+        }
+        return intVar;
+      }
+    }
+    break;
+  }
+
+  case kind::INTS_MODULUS:
+  case kind::INTS_MODULUS_TOTAL: {
+    if(!options::rewriteDivk()) {
+      return n;
+    }
+    Node num = Rewriter::rewrite(n[0]);
+    Node den = Rewriter::rewrite(n[1]);
+    if(den.isConst()) {
+      const Rational& rat = den.getConst<Rational>();
+      Assert(!num.isConst());
+      if(rat != 0) {
+        Node intVar;
+        Node rw = nm->mkNode(k, num, den);
+        if(!rw.getAttribute(LinearIntDivAttr(), intVar)) {
+          intVar = nm->mkSkolem("linearIntDiv", nm->integerType(), "the result of an intdiv-by-k term");
+          rw.setAttribute(LinearIntDivAttr(), intVar);
+          if(rat > 0) {
+            d_containing.d_out->lemma(nm->mkNode(kind::AND, nm->mkNode(kind::LEQ, nm->mkNode(kind::MULT, den, intVar), num), nm->mkNode(kind::LT, num, nm->mkNode(kind::MULT, den, nm->mkNode(kind::PLUS, intVar, nm->mkConst(Rational(1)))))));
+          } else {
+            d_containing.d_out->lemma(nm->mkNode(kind::AND, nm->mkNode(kind::LEQ, nm->mkNode(kind::MULT, den, intVar), num), nm->mkNode(kind::LT, num, nm->mkNode(kind::MULT, den, nm->mkNode(kind::PLUS, intVar, nm->mkConst(Rational(-1)))))));
+          }
+        }
+        Node node = nm->mkNode(kind::MINUS, num, nm->mkNode(kind::MULT, den, intVar));
+        return node;
+      }
+    }
+    break;
+  }
+
+  default:
+    ;
+  }
+
+  for(TNode::const_iterator i = n.begin(); i != n.end(); ++i) {
+    Node rewritten = ppRewriteTerms(*i);
+    if(rewritten != *i) {
+      NodeBuilder<> b(n.getKind());
+      b.append(n.begin(), i);
+      b << rewritten;
+      for(++i; i != n.end(); ++i) {
+        b << ppRewriteTerms(*i);
+      }
+      rewritten = b;
+      return rewritten;
+    }
+  }
+
+  return n;
+}
+
+Node TheoryArithPrivate::ppRewrite(TNode atom) {
+  Debug("arith::preprocess") << "arith::preprocess() : " << atom << endl;
+
+  if (atom.getKind() == kind::EQUAL  && options::arithRewriteEq()) {
+    Node leq = NodeBuilder<2>(kind::LEQ) << atom[0] << atom[1];
+    Node geq = NodeBuilder<2>(kind::GEQ) << atom[0] << atom[1];
+    leq = ppRewriteTerms(leq);
+    geq = ppRewriteTerms(geq);
+    Node rewritten = Rewriter::rewrite(leq.andNode(geq));
+    Debug("arith::preprocess") << "arith::preprocess() : returning "
+                               << rewritten << endl;
+    return rewritten;
+  } else {
+    return ppRewriteTerms(atom);
+  }
+}
+
+Theory::PPAssertStatus TheoryArithPrivate::ppAssert(TNode in, SubstitutionMap& outSubstitutions) {
+  TimerStat::CodeTimer codeTimer(d_statistics.d_simplifyTimer);
+  Debug("simplify") << "TheoryArithPrivate::solve(" << in << ")" << endl;
+
+
+  // Solve equalities
+  Rational minConstant = 0;
+  Node minMonomial;
+  Node minVar;
+  if (in.getKind() == kind::EQUAL) {
+    Comparison cmp = Comparison::parseNormalForm(in);
+
+    Polynomial left = cmp.getLeft();
+    Polynomial right = cmp.getRight();
+
+    Monomial m = left.getHead();
+    if (m.getVarList().singleton()){
+      VarList vl = m.getVarList();
+      Node var = vl.getNode();
+      if (var.getKind() == kind::VARIABLE){
+        // if vl.isIntegral then m.getConstant().isOne()
+        if(!vl.isIntegral() || m.getConstant().isOne()){
+          minVar = var;
+        }
+      }
+    }
+
+    // Solve for variable
+    if (!minVar.isNull()) {
+      Polynomial right = cmp.getRight();
+      Node elim = right.getNode();
+      // ax + p = c -> (ax + p) -ax - c = -ax
+      // x = (p - ax - c) * -1/a
+      // Add the substitution if not recursive
+      Assert(elim == Rewriter::rewrite(elim));
+
+
+      if(right.size() > options::ppAssertMaxSubSize()){
+        Debug("simplify") << "TheoryArithPrivate::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)){
+        Debug("simplify") << "TheoryArithPrivate::solve(): can't substitute due to recursive pattern with sharing: " << minVar << ":" << elim << endl;
+
+      }else if (!minVar.getType().isInteger() || right.isIntegral()) {
+        Assert(!elim.hasSubterm(minVar));
+        // cannot eliminate integers here unless we know the resulting
+        // substitution is integral
+        Debug("simplify") << "TheoryArithPrivate::solve(): substitution " << minVar << " |-> " << elim << endl;
+
+        outSubstitutions.addSubstitution(minVar, elim);
+        return Theory::PP_ASSERT_STATUS_SOLVED;
+      } else {
+        Debug("simplify") << "TheoryArithPrivate::solve(): can't substitute b/c it's integer: " << minVar << ":" << minVar.getType() << " |-> " << elim << ":" << elim.getType() << endl;
+
+      }
+    }
+  }
+
+  // If a relation, remember the bound
+  switch(in.getKind()) {
+  case kind::LEQ:
+  case kind::LT:
+  case kind::GEQ:
+  case kind::GT:
+    if (in[0].isVar()) {
+      d_learner.addBound(in);
+    }
+    break;
+  default:
+    // Do nothing
+    break;
+  }
+
+  return Theory::PP_ASSERT_STATUS_UNSOLVED;
+}
+
+void TheoryArithPrivate::ppStaticLearn(TNode n, NodeBuilder<>& learned) {
+  TimerStat::CodeTimer codeTimer(d_statistics.d_staticLearningTimer);
+
+  d_learner.staticLearning(n, learned);
+}
+
+
+
+ArithVar TheoryArithPrivate::findShortestBasicRow(ArithVar variable){
+  ArithVar bestBasic = ARITHVAR_SENTINEL;
+  uint64_t bestRowLength = std::numeric_limits<uint64_t>::max();
+
+  Tableau::ColIterator basicIter = d_tableau.colIterator(variable);
+  for(; !basicIter.atEnd(); ++basicIter){
+    const Tableau::Entry& entry = *basicIter;
+    Assert(entry.getColVar() == variable);
+    RowIndex ridx = entry.getRowIndex();
+    ArithVar basic = d_tableau.rowIndexToBasic(ridx);
+    uint32_t rowLength = d_tableau.getRowLength(ridx);
+    if((rowLength < bestRowLength) ||
+       (rowLength == bestRowLength && basic < bestBasic)){
+      bestBasic = basic;
+      bestRowLength = rowLength;
+    }
+  }
+  Assert(bestBasic == ARITHVAR_SENTINEL || bestRowLength < std::numeric_limits<uint32_t>::max());
+  return bestBasic;
+}
+
+void TheoryArithPrivate::setupVariable(const Variable& x){
+  Node n = x.getNode();
+
+  Assert(!isSetup(n));
+
+  ++(d_statistics.d_statUserVariables);
+  requestArithVar(n, false,  false);
+  //ArithVar varN = requestArithVar(n,false);
+  //setupInitialValue(varN);
+
+  markSetup(n);
+
+
+  if(x.isDivLike()){
+    setupDivLike(x);
+  }
+
+}
+
+void TheoryArithPrivate::setupVariableList(const VarList& vl){
+  Assert(!vl.empty());
+
+  TNode vlNode = vl.getNode();
+  Assert(!isSetup(vlNode));
+  Assert(!d_partialModel.hasArithVar(vlNode));
+
+  for(VarList::iterator i = vl.begin(), end = vl.end(); i != end; ++i){
+    Variable var = *i;
+
+    if(!isSetup(var.getNode())){
+      setupVariable(var);
+    }
+  }
+
+  if(!vl.singleton()){
+    // vl is the product of at least 2 variables
+    // vl : (* v1 v2 ...)
+    if(getLogicInfo().isLinear()){
+      throw LogicException("A non-linear fact was asserted to arithmetic in a linear logic.");
+    }
+
+    setIncomplete();
+    d_nlIncomplete = true;
+
+    ++(d_statistics.d_statUserVariables);
+    requestArithVar(vlNode, false, false);
+    //ArithVar av = requestArithVar(vlNode, false);
+    //setupInitialValue(av);
+
+    markSetup(vlNode);
+  }
+
+  /* Note:
+   * Only call markSetup if the VarList is not a singleton.
+   * See the comment in setupPolynomail for more.
+   */
+}
+
+void TheoryArithPrivate::cautiousSetupPolynomial(const Polynomial& p){
+  if(p.containsConstant()){
+    if(!p.isConstant()){
+      Polynomial noConstant = p.getTail();
+      if(!isSetup(noConstant.getNode())){
+        setupPolynomial(noConstant);
+      }
+    }
+  }else if(!isSetup(p.getNode())){
+    setupPolynomial(p);
+  }
+}
+
+void TheoryArithPrivate::setupDivLike(const Variable& v){
+  Assert(v.isDivLike());
+
+  if(getLogicInfo().isLinear()){
+    throw LogicException("A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic;\nif you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.");
+  }
+
+  Node vnode = v.getNode();
+  Assert(isSetup(vnode)); // Otherwise there is some invariant breaking recursion
+  Polynomial m = Polynomial::parsePolynomial(vnode[0]);
+  Polynomial n = Polynomial::parsePolynomial(vnode[1]);
+
+  cautiousSetupPolynomial(m);
+  cautiousSetupPolynomial(n);
+
+  Node lem;
+  switch(vnode.getKind()){
+  case DIVISION:
+  case INTS_DIVISION:
+  case INTS_MODULUS:
+    lem = definingIteForDivLike(vnode);
+    break;
+  case DIVISION_TOTAL:
+    lem = axiomIteForTotalDivision(vnode);
+    break;
+  case INTS_DIVISION_TOTAL:
+  case INTS_MODULUS_TOTAL:
+    lem = axiomIteForTotalIntDivision(vnode);
+    break;
+  default:
+    /* intentionally blank */
+    break;
+  }
+
+  if(!lem.isNull()){
+    Debug("arith::div") << lem << endl;
+    outputLemma(lem);
+  }
+}
+
+Node TheoryArithPrivate::definingIteForDivLike(Node divLike){
+  Kind k = divLike.getKind();
+  Assert(k == DIVISION || k == INTS_DIVISION || k == INTS_MODULUS);
+  // (for all ((n Real) (d Real))
+  //  (=
+  //   (DIVISION n d)
+  //   (ite (= d 0)
+  //    (APPLY [div_0_skolem_function] n)
+  //    (DIVISION_TOTAL x y))))
+
+  Polynomial n = Polynomial::parsePolynomial(divLike[0]);
+  Polynomial d = Polynomial::parsePolynomial(divLike[1]);
+
+  NodeManager* currNM = NodeManager::currentNM();
+  Node dEq0 = currNM->mkNode(EQUAL, d.getNode(), mkRationalNode(0));
+
+  Kind kTotal = (k == DIVISION) ? DIVISION_TOTAL :
+    (k == INTS_DIVISION) ? INTS_DIVISION_TOTAL : INTS_MODULUS_TOTAL;
+
+  Node by0Func = (k == DIVISION) ?  getRealDivideBy0Func():
+    (k == INTS_DIVISION) ? getIntDivideBy0Func() : getIntModulusBy0Func();
+
+
+  Debug("arith::div") << divLike << endl;
+  Debug("arith::div") << by0Func << endl;
+
+  Node divTotal = currNM->mkNode(kTotal, n.getNode(), d.getNode());
+  Node divZero = currNM->mkNode(APPLY_UF, by0Func, n.getNode());
+
+  Node defining = divLike.eqNode(dEq0.iteNode( divZero, divTotal));
+
+  return defining;
+}
+
+Node TheoryArithPrivate::axiomIteForTotalDivision(Node div_tot){
+  Assert(div_tot.getKind() == DIVISION_TOTAL);
+
+  // Inverse of multiplication axiom:
+  //   (for all ((n Real) (d Real))
+  //    (ite (= d 0)
+  //     (= (DIVISION_TOTAL n d) 0)
+  //     (= (* d (DIVISION_TOTAL n d)) n)))
+
+
+  Polynomial n = Polynomial::parsePolynomial(div_tot[0]);
+  Polynomial d = Polynomial::parsePolynomial(div_tot[1]);
+  Polynomial div_tot_p = Polynomial::parsePolynomial(div_tot);
+
+  Comparison invEq = Comparison::mkComparison(EQUAL, n, d * div_tot_p);
+  Comparison zeroEq = Comparison::mkComparison(EQUAL, div_tot_p, Polynomial::mkZero());
+  Node dEq0 = (d.getNode()).eqNode(mkRationalNode(0));
+  Node ite = dEq0.iteNode(zeroEq.getNode(), invEq.getNode());
+
+  return ite;
+}
+
+Node TheoryArithPrivate::axiomIteForTotalIntDivision(Node int_div_like){
+  Kind k = int_div_like.getKind();
+  Assert(k == INTS_DIVISION_TOTAL || k == INTS_MODULUS_TOTAL);
+
+  // (for all ((m Int) (n Int))
+  //   (=> (distinct n 0)
+  //       (let ((q (div m n)) (r (mod m n)))
+  //         (and (= m (+ (* n q) r))
+  //              (<= 0 r (- (abs n) 1))))))
+
+  // Updated for div 0 functions
+  // (for all ((m Int) (n Int))
+  //   (let ((q (div m n)) (r (mod m n)))
+  //     (ite (= n 0)
+  //          (and (= q (div_0_func m)) (= r (mod_0_func m)))
+  //          (and (= m (+ (* n q) r))
+  //               (<= 0 r (- (abs n) 1)))))))
+
+  Polynomial n = Polynomial::parsePolynomial(int_div_like[0]);
+  Polynomial d = Polynomial::parsePolynomial(int_div_like[1]);
+
+  NodeManager* currNM = NodeManager::currentNM();
+  Node zero = mkRationalNode(0);
+
+  Node q = (k == INTS_DIVISION_TOTAL) ? int_div_like : currNM->mkNode(INTS_DIVISION_TOTAL, n.getNode(), d.getNode());
+  Node r = (k == INTS_MODULUS_TOTAL) ? int_div_like : currNM->mkNode(INTS_MODULUS_TOTAL, n.getNode(), d.getNode());
+
+  Node dEq0 = (d.getNode()).eqNode(zero);
+  Node qEq0 = q.eqNode(zero);
+  Node rEq0 = r.eqNode(zero);
+
+  Polynomial rp = Polynomial::parsePolynomial(r);
+  Polynomial qp = Polynomial::parsePolynomial(q);
+
+  Node abs_d = (n.isConstant()) ?
+    d.getHead().getConstant().abs().getNode() : mkIntSkolem("abs");
+
+  Node eq = Comparison::mkComparison(EQUAL, n, d * qp + rp).getNode();
+  Node leq0 = currNM->mkNode(LEQ, zero, r);
+  Node leq1 = currNM->mkNode(LT, r, abs_d);
+
+  Node andE = currNM->mkNode(AND, eq, leq0, leq1);
+  Node defDivMode = dEq0.iteNode(qEq0.andNode(rEq0), andE);
+  Node lem = abs_d.getMetaKind () == metakind::VARIABLE ?
+    defDivMode.andNode(d.makeAbsCondition(Variable(abs_d))) : defDivMode;
+
+  return lem;
+}
+
+
+void TheoryArithPrivate::setupPolynomial(const Polynomial& poly) {
+  Assert(!poly.containsConstant());
+  TNode polyNode = poly.getNode();
+  Assert(!isSetup(polyNode));
+  Assert(!d_partialModel.hasArithVar(polyNode));
+
+  for(Polynomial::iterator i = poly.begin(), end = poly.end(); i != end; ++i){
+    Monomial mono = *i;
+    const VarList& vl = mono.getVarList();
+    if(!isSetup(vl.getNode())){
+      setupVariableList(vl);
+    }
+  }
+
+  if(polyNode.getKind() == PLUS){
+    d_tableauSizeHasBeenModified = true;
+
+    vector<ArithVar> variables;
+    vector<Rational> coefficients;
+    asVectors(poly, coefficients, variables);
+
+    ArithVar varSlack = requestArithVar(polyNode, true, false);
+    d_tableau.addRow(varSlack, coefficients, variables);
+    setupBasicValue(varSlack);
+    d_linEq.trackRowIndex(d_tableau.basicToRowIndex(varSlack));
+
+    //Add differences to the difference manager
+    Polynomial::iterator i = poly.begin(), end = poly.end();
+    if(i != end){
+      Monomial first = *i;
+      ++i;
+      if(i != end){
+        Monomial second = *i;
+        ++i;
+        if(i == end){
+          if(first.getConstant().isOne() && second.getConstant().getValue() == -1){
+            VarList vl0 = first.getVarList();
+            VarList vl1 = second.getVarList();
+            if(vl0.singleton() && vl1.singleton()){
+              d_congruenceManager.addWatchedPair(varSlack, vl0.getNode(), vl1.getNode());
+            }
+          }
+        }
+      }
+    }
+
+    ++(d_statistics.d_statAuxiliaryVariables);
+    markSetup(polyNode);
+  }
+
+  /* Note:
+   * It is worth documenting that polyNode should only be marked as
+   * being setup by this function if it has kind PLUS.
+   * Other kinds will be marked as being setup by lower levels of setup
+   * specifically setupVariableList.
+   */
+}
+
+void TheoryArithPrivate::setupAtom(TNode atom) {
+  Assert(isRelationOperator(atom.getKind()));
+  Assert(Comparison::isNormalAtom(atom));
+  Assert(!isSetup(atom));
+  Assert(!d_constraintDatabase.hasLiteral(atom));
+
+  Comparison cmp = Comparison::parseNormalForm(atom);
+  Polynomial nvp = cmp.normalizedVariablePart();
+  Assert(!nvp.isZero());
+
+  if(!isSetup(nvp.getNode())){
+    setupPolynomial(nvp);
+  }
+
+  d_constraintDatabase.addLiteral(atom);
+
+  markSetup(atom);
+}
+
+void TheoryArithPrivate::preRegisterTerm(TNode n) {
+  Debug("arith::preregister") <<"begin arith::preRegisterTerm("<< n <<")"<< endl;
+
+  try {
+    if(isRelationOperator(n.getKind())){
+      if(!isSetup(n)){
+        setupAtom(n);
+      }
+      ConstraintP c = d_constraintDatabase.lookup(n);
+      Assert(c != NullConstraint);
+
+      Debug("arith::preregister") << "setup constraint" << c << endl;
+      Assert(!c->canBePropagated());
+      c->setPreregistered();
+    }
+  } catch(LogicException& le) {
+    std::stringstream ss;
+    ss << le.getMessage() << endl << "The fact in question: " << n << endl;
+    throw LogicException(ss.str());
+  }
+
+  Debug("arith::preregister") << "end arith::preRegisterTerm("<< n <<")" << endl;
+}
+
+void TheoryArithPrivate::releaseArithVar(ArithVar v){
+  //Assert(d_partialModel.hasNode(v));
+
+  d_constraintDatabase.removeVariable(v);
+  d_partialModel.releaseArithVar(v);
+}
+
+ArithVar TheoryArithPrivate::requestArithVar(TNode x, bool aux, bool internal){
+  //TODO : The VarList trick is good enough?
+  Assert(isLeaf(x) || VarList::isMember(x) || x.getKind() == PLUS || internal);
+  if(getLogicInfo().isLinear() && Variable::isDivMember(x)){
+    stringstream ss;
+    ss << "A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: " << x << endl
+       << "if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.";
+    throw LogicException(ss.str());
+  }
+  Assert(!d_partialModel.hasArithVar(x));
+  Assert(x.getType().isReal()); // real or integer
+
+  ArithVar max = d_partialModel.getNumberOfVariables();
+  ArithVar varX = d_partialModel.allocate(x, aux);
+
+  bool reclaim =  max >= d_partialModel.getNumberOfVariables();;
+
+  if(!reclaim){
+    d_dualSimplex.increaseMax();
+
+    d_tableau.increaseSize();
+    d_tableauSizeHasBeenModified = true;
+  }
+  d_constraintDatabase.addVariable(varX);
+
+  Debug("arith::arithvar") << "@" << getSatContext()->getLevel()
+                           << " " << x << " |-> " << varX
+                           << "(relaiming " << reclaim << ")" << endl;
+
+  Assert(!d_partialModel.hasUpperBound(varX));
+  Assert(!d_partialModel.hasLowerBound(varX));
+
+  return varX;
+}
+
+void TheoryArithPrivate::asVectors(const Polynomial& p, std::vector<Rational>& coeffs, std::vector<ArithVar>& variables) {
+  for(Polynomial::iterator i = p.begin(), end = p.end(); i != end; ++i){
+    const Monomial& mono = *i;
+    const Constant& constant = mono.getConstant();
+    const VarList& variable = mono.getVarList();
+
+    Node n = variable.getNode();
+
+    Debug("arith::asVectors") << "should be var: " << n << endl;
+
+    // TODO: This VarList::isMember(n) can be stronger
+    Assert(isLeaf(n) || VarList::isMember(n));
+    Assert(theoryOf(n) != THEORY_ARITH || d_partialModel.hasArithVar(n));
+
+    Assert(d_partialModel.hasArithVar(n));
+    ArithVar av = d_partialModel.asArithVar(n);
+
+    coeffs.push_back(constant.getValue());
+    variables.push_back(av);
+  }
+}
+
+/* Requirements:
+ * For basic variables the row must have been added to the tableau.
+ */
+void TheoryArithPrivate::setupBasicValue(ArithVar x){
+  Assert(d_tableau.isBasic(x));
+  //If the variable is basic, assertions may have already happened and updates
+  //may have occured before setting this variable up.
+
+  //This can go away if the tableau creation is done at preregister
+  //time instead of register
+  DeltaRational safeAssignment = d_linEq.computeRowValue(x, true);
+  DeltaRational assignment = d_linEq.computeRowValue(x, false);
+  d_partialModel.setAssignment(x,safeAssignment,assignment);
+
+  Debug("arith") << "setupVariable("<<x<<")"<<std::endl;
+}
+
+ArithVar TheoryArithPrivate::determineArithVar(const Polynomial& p) const{
+  Assert(!p.containsConstant());
+  Assert(p.getHead().constantIsPositive());
+  TNode n = p.getNode();
+  Debug("determineArithVar") << "determineArithVar(" << n << ")" << endl;
+  return d_partialModel.asArithVar(n);
+}
+
+ArithVar TheoryArithPrivate::determineArithVar(TNode assertion) const{
+  Debug("determineArithVar") << "determineArithVar " << assertion << endl;
+  Comparison cmp = Comparison::parseNormalForm(assertion);
+  Polynomial variablePart = cmp.normalizedVariablePart();
+  return determineArithVar(variablePart);
+}
+
+
+bool TheoryArithPrivate::canSafelyAvoidEqualitySetup(TNode equality){
+  Assert(equality.getKind() == EQUAL);
+  return d_partialModel.hasArithVar(equality[0]);
+}
+
+Comparison TheoryArithPrivate::mkIntegerEqualityFromAssignment(ArithVar v){
+  const DeltaRational& beta = d_partialModel.getAssignment(v);
+
+  Assert(beta.isIntegral());
+  Polynomial betaAsPolynomial = Polynomial::mkPolynomial( Constant::mkConstant(beta.floor()) );
+
+  TNode var = d_partialModel.asNode(v);
+  Polynomial varAsPolynomial = Polynomial::parsePolynomial(var);
+  return Comparison::mkComparison(EQUAL, varAsPolynomial, betaAsPolynomial);
+}
+
+Node TheoryArithPrivate::dioCutting(){
+  context::Context::ScopedPush speculativePush(getSatContext());
+  //DO NOT TOUCH THE OUTPUTSTREAM
+
+  for(var_iterator vi = var_begin(), vend = var_end(); vi != vend; ++vi){
+    ArithVar v = *vi;
+    if(isInteger(v)){
+      if(d_partialModel.cmpAssignmentUpperBound(v) == 0 ||
+         d_partialModel.cmpAssignmentLowerBound(v) == 0){
+        if(!d_partialModel.boundsAreEqual(v)){
+          // If the bounds are equal this is already in the dioSolver
+          //Add v = dr as a speculation.
+          Comparison eq = mkIntegerEqualityFromAssignment(v);
+          Debug("dio::push") << "dio::push " << v << " " <<  eq.getNode() << endl;
+          Assert(!eq.isBoolean());
+          d_diosolver.pushInputConstraint(eq, eq.getNode());
+          // It does not matter what the explanation of eq is.
+          // It cannot be used in a conflict
+        }
+      }
+    }
+  }
+
+  SumPair plane = d_diosolver.processEquationsForCut();
+  if(plane.isZero()){
+    return Node::null();
+  }else{
+    Polynomial p = plane.getPolynomial();
+    Polynomial c = Polynomial::mkPolynomial(plane.getConstant() * Constant::mkConstant(-1));
+    Integer gcd = p.gcd();
+    Assert(p.isIntegral());
+    Assert(c.isIntegral());
+    Assert(gcd > 1);
+    Assert(!gcd.divides(c.asConstant().getNumerator()));
+    Comparison leq = Comparison::mkComparison(LEQ, p, c);
+    Comparison geq = Comparison::mkComparison(GEQ, p, c);
+    Node lemma = NodeManager::currentNM()->mkNode(OR, leq.getNode(), geq.getNode());
+    Node rewrittenLemma = Rewriter::rewrite(lemma);
+    Debug("arith::dio::ex") << "dioCutting found the plane: " << plane.getNode() << endl;
+    Debug("arith::dio::ex") << "resulting in the cut: " << lemma << endl;
+    Debug("arith::dio::ex") << "rewritten " << rewrittenLemma << endl;
+    Debug("arith::dio") << "dioCutting found the plane: " << plane.getNode() << endl;
+    Debug("arith::dio") << "resulting in the cut: " << lemma << endl;
+    Debug("arith::dio") << "rewritten " << rewrittenLemma << endl;
+    return rewrittenLemma;
+  }
+}
+
+Node TheoryArithPrivate::callDioSolver(){
+  while(!d_constantIntegerVariables.empty()){
+    ArithVar v = d_constantIntegerVariables.front();
+    d_constantIntegerVariables.pop();
+
+    Debug("arith::dio")  << "callDioSolver " << v << endl;
+
+    Assert(isInteger(v));
+    Assert(d_partialModel.boundsAreEqual(v));
+
+
+    ConstraintP lb = d_partialModel.getLowerBoundConstraint(v);
+    ConstraintP ub = d_partialModel.getUpperBoundConstraint(v);
+
+    Node orig = Node::null();
+    if(lb->isEquality()){
+      orig = lb->externalExplainByAssertions();
+    }else if(ub->isEquality()){
+      orig = ub->externalExplainByAssertions();
+    }else {
+      orig = Constraint::externalExplainByAssertions(ub, lb);
+    }
+
+    Assert(d_partialModel.assignmentIsConsistent(v));
+
+    Comparison eq = mkIntegerEqualityFromAssignment(v);
+
+    if(eq.isBoolean()){
+      //This can only be a conflict
+      Assert(!eq.getNode().getConst<bool>());
+
+      //This should be handled by the normal form earlier in the case of equality
+      Assert(orig.getKind() != EQUAL);
+      return orig;
+    }else{
+      Debug("dio::push") << "dio::push " << v << " " << eq.getNode() << " with reason " << orig << endl;
+      d_diosolver.pushInputConstraint(eq, orig);
+    }
+  }
+
+  return d_diosolver.processEquationsForConflict();
+}
+
+ConstraintP TheoryArithPrivate::constraintFromFactQueue(){
+  Assert(!done());
+  TNode assertion = get();
+
+  Kind simpleKind = Comparison::comparisonKind(assertion);
+  ConstraintP constraint = d_constraintDatabase.lookup(assertion);
+  if(constraint == NullConstraint){
+    Assert(simpleKind == EQUAL || simpleKind == DISTINCT );
+    bool isDistinct = simpleKind == DISTINCT;
+    Node eq = (simpleKind == DISTINCT) ? assertion[0] : assertion;
+    Assert(!isSetup(eq));
+    Node reEq = Rewriter::rewrite(eq);
+    if(reEq.getKind() == CONST_BOOLEAN){
+      if(reEq.getConst<bool>() == isDistinct){
+        // if is (not true), or false
+        Assert((reEq.getConst<bool>() && isDistinct) ||
+               (!reEq.getConst<bool>() && !isDistinct));
+        raiseBlackBoxConflict(assertion);
+      }
+      return NullConstraint;
+    }
+    Assert(reEq.getKind() != CONST_BOOLEAN);
+    if(!isSetup(reEq)){
+      setupAtom(reEq);
+    }
+    Node reAssertion = isDistinct ? reEq.notNode() : reEq;
+    constraint = d_constraintDatabase.lookup(reAssertion);
+
+    if(assertion != reAssertion){
+      Debug("arith::nf") << "getting non-nf assertion " << assertion << " |-> " <<  reAssertion << endl;
+      Assert(constraint != NullConstraint);
+      d_assertionsThatDoNotMatchTheirLiterals.insert(assertion, constraint);
+    }
+  }
+
+  Assert(constraint != NullConstraint);
+
+  if(constraint->assertedToTheTheory()){
+    //Do nothing
+    return NullConstraint;
+  }
+  Assert(!constraint->assertedToTheTheory());
+  bool inConflict = constraint->negationHasProof();
+  constraint->setAssertedToTheTheory(assertion, inConflict);
+
+  if(!constraint->hasProof()){
+    Debug("arith::constraint") << "marking as constraint as self explaining " << endl;
+    constraint->setAssumption(inConflict);
+  } else {
+    Debug("arith::constraint") << "already has proof: " << constraint->externalExplainByAssertions() << endl;
+  }
+  
+
+  if(Debug.isOn("arith::negatedassumption") && inConflict){
+    ConstraintP negation = constraint->getNegation();
+    if(Debug.isOn("arith::negatedassumption") && negation->isAssumption()){
+      debugPrintFacts();
+    }
+    Debug("arith::eq") << "negation has proof" << endl;
+    Debug("arith::eq") << constraint << endl;
+    Debug("arith::eq") << negation << endl;
+  }
+
+  if(inConflict){
+    ConstraintP negation = constraint->getNegation();
+    if(Debug.isOn("arith::negatedassumption") && negation->isAssumption()){
+      debugPrintFacts();
+    }
+    Debug("arith::eq") << "negation has proof" << endl;
+    Debug("arith::eq") << constraint << endl;
+    Debug("arith::eq") << negation << endl;
+    raiseConflict(negation);
+    return NullConstraint;
+  }else{
+    return constraint;
+  }
+}
+
+bool TheoryArithPrivate::assertionCases(ConstraintP constraint){
+  Assert(constraint->hasProof());
+  Assert(!constraint->negationHasProof());
+
+  ArithVar x_i = constraint->getVariable();
+
+  switch(constraint->getType()){
+  case UpperBound:
+    if(isInteger(x_i) && constraint->isStrictUpperBound()){
+      ConstraintP floorConstraint = constraint->getFloor();
+      if(!floorConstraint->isTrue()){
+        bool inConflict = floorConstraint->negationHasProof();
+        floorConstraint->impliedByIntHole(constraint, inConflict);
+        floorConstraint->tryToPropagate();
+        if(inConflict){
+          raiseConflict(floorConstraint);
+          return true;
+        }
+      }
+      return AssertUpper(floorConstraint);
+    }else{
+      return AssertUpper(constraint);
+    }
+  case LowerBound:
+    if(isInteger(x_i) && constraint->isStrictLowerBound()){
+      ConstraintP ceilingConstraint = constraint->getCeiling();
+      if(!ceilingConstraint->isTrue()){
+        bool inConflict = ceilingConstraint->negationHasProof();
+        ceilingConstraint->impliedByIntHole(constraint, inConflict);
+        ceilingConstraint->tryToPropagate();
+        if(inConflict){
+          raiseConflict(ceilingConstraint);
+          return true;
+        }
+      }
+      return AssertLower(ceilingConstraint);
+    }else{
+      return AssertLower(constraint);
+    }
+  case Equality:
+    return AssertEquality(constraint);
+  case Disequality:
+    return AssertDisequality(constraint);
+  default:
+    Unreachable();
+    return false;
+  }
+}
+/**
+ * Looks for through the variables starting at d_nextIntegerCheckVar
+ * for the first integer variable that is between its upper and lower bounds
+ * that has a non-integer assignment.
+ *
+ * If assumeBounds is true, skip the check that the variable is in bounds.
+ *
+ * If there is no such variable, returns ARITHVAR_SENTINEL;
+ */
+ArithVar TheoryArithPrivate::nextIntegerViolatation(bool assumeBounds) const {
+  ArithVar numVars = d_partialModel.getNumberOfVariables();
+  ArithVar v = d_nextIntegerCheckVar;
+  if(numVars > 0){
+    const ArithVar rrEnd = d_nextIntegerCheckVar;
+    do {
+      if(isIntegerInput(v)){
+        if(!d_partialModel.integralAssignment(v)){
+          if( assumeBounds || d_partialModel.assignmentIsConsistent(v) ){
+            return v;
+          }
+        }
+      }
+      v= (1 + v == numVars) ? 0 : (1 + v);
+    }while(v != rrEnd);
+  }
+  return ARITHVAR_SENTINEL;
+}
+
+/**
+ * Checks the set of integer variables I to see if each variable
+ * in I has an integer assignment.
+ */
+bool TheoryArithPrivate::hasIntegerModel(){
+  ArithVar next = nextIntegerViolatation(true);
+  if(next != ARITHVAR_SENTINEL){
+    d_nextIntegerCheckVar = next;
+    if(Debug.isOn("arith::hasIntegerModel")){
+      Debug("arith::hasIntegerModel") << "has int model? " << next << endl;
+      d_partialModel.printModel(next, Debug("arith::hasIntegerModel"));
+    }
+    return false;
+  }else{
+    return true;
+  }
+}
+
+
+Node flattenAndSort(Node n){
+  Kind k = n.getKind();
+  switch(k){
+  case kind::OR:
+  case kind::AND:
+  case kind::PLUS:
+  case kind::MULT:
+    break;
+  default:
+    return n;
+  }
+
+  std::vector<Node> out;
+  std::vector<Node> process;
+  process.push_back(n);
+  while(!process.empty()){
+    Node b = process.back();
+    process.pop_back();
+    if(b.getKind() == k){
+      for(Node::iterator i=b.begin(), end=b.end(); i!=end; ++i){
+        process.push_back(*i);
+      }
+    } else {
+      out.push_back(b);
+    }
+  }
+  Assert(out.size() >= 2);
+  std::sort(out.begin(), out.end());
+  return NodeManager::currentNM()->mkNode(k, out);
+}
+
+
+
+/** Outputs conflicts to the output channel. */
+void TheoryArithPrivate::outputConflicts(){
+  Assert(anyConflict());
+  static unsigned int conflicts = 0;
+  
+  if(!conflictQueueEmpty()){
+    Assert(!d_conflicts.empty());
+    for(size_t i = 0, i_end = d_conflicts.size(); i < i_end; ++i){
+      ConstraintCP confConstraint = d_conflicts[i];
+      Assert(confConstraint->inConflict());
+      Node conflict = confConstraint->externalExplainConflict();
+
+      ++conflicts;
+      Debug("arith::conflict") << "d_conflicts[" << i << "] " << conflict
+        //                               << "("<<conflicts<<")"
+                               << endl;
+      if(Debug.isOn("arith::normalize::external")){
+        conflict = flattenAndSort(conflict);
+        Debug("arith::conflict") << "(normalized to) " << conflict << endl;
+      }
+
+      (d_containing.d_out)->conflict(conflict);
+    }
+  }
+  if(!d_blackBoxConflict.get().isNull()){
+    Node bb = d_blackBoxConflict.get();
+    ++conflicts;
+    Debug("arith::conflict") << "black box conflict" << bb
+      //<< "("<<conflicts<<")"
+                             << endl;
+    if(Debug.isOn("arith::normalize::external")){
+      bb = flattenAndSort(bb);
+      Debug("arith::conflict") << "(normalized to) " << bb << endl;
+    }
+
+    (d_containing.d_out)->conflict(bb);
+  }
+}
+void TheoryArithPrivate::outputLemma(TNode lem) {
+  (d_containing.d_out)->lemma(lem);
+}
+
+// void TheoryArithPrivate::branchVector(const std::vector<ArithVar>& lemmas){
+//   //output the lemmas
+//   for(vector<ArithVar>::const_iterator i = lemmas.begin(); i != lemmas.end(); ++i){
+//     ArithVar v = *i;
+//     Assert(!d_cutInContext.contains(v));
+//     d_cutInContext.insert(v);
+//     d_cutCount = d_cutCount + 1;
+//     Node lem = branchIntegerVariable(v);
+//     outputLemma(lem);
+//     ++(d_statistics.d_externalBranchAndBounds);
+//   }
+// }
+
+bool TheoryArithPrivate::attemptSolveInteger(Theory::Effort effortLevel, bool emmmittedLemmaOrSplit){
+  int level = getSatContext()->getLevel();
+  Debug("approx")
+    << "attemptSolveInteger " << d_qflraStatus
+    << " " << emmmittedLemmaOrSplit
+    << " " << effortLevel
+    << " " << d_lastContextIntegerAttempted
+    << " " << level
+    << " " << hasIntegerModel()
+    << endl;
+
+  if(d_qflraStatus == Result::UNSAT){ return false; }
+  if(emmmittedLemmaOrSplit){ return false; }
+  if(!options::useApprox()){ return false; }
+  if(!ApproximateSimplex::enabled()){ return false; }
+
+  if(Theory::fullEffort(effortLevel)){
+    if(hasIntegerModel()){
+      return false;
+    }else{
+      return getSolveIntegerResource();
+    }
+  }
+
+  if(d_lastContextIntegerAttempted <= 0){
+    if(hasIntegerModel()){
+      d_lastContextIntegerAttempted = getSatContext()->getLevel();
+      return false;
+    }else{
+      return getSolveIntegerResource();
+    }
+  }
+
+
+  if(!options::trySolveIntStandardEffort()){ return false; }
+
+  if (d_lastContextIntegerAttempted <= (level >> 2)){
+
+    double d = (double)(d_solveIntMaybeHelp + 1) / (d_solveIntAttempts + 1 + level*level);
+    double t = fRand(0.0, 1.0);
+    if(t < d){
+      return getSolveIntegerResource();
+    }
+  }
+  return false;
+}
+
+bool TheoryArithPrivate::replayLog(ApproximateSimplex* approx){
+  TimerStat::CodeTimer codeTimer(d_statistics.d_replayLogTimer);
+
+  ++d_statistics.d_mipProofsAttempted;
+
+  Assert(d_replayVariables.empty());
+  Assert(d_replayConstraints.empty());
+
+  size_t enteringPropN = d_currentPropagationList.size();
+  Assert(conflictQueueEmpty());
+  TreeLog& tl = getTreeLog();
+  //tl.applySelected(); /* set row ids */
+
+  d_replayedLemmas = false;
+
+  std::vector<ConstraintCPVec> res;
+  try{
+    /* use the try block for the purpose of pushing the sat context */
+    context::Context::ScopedPush speculativePush(getSatContext());
+    d_cmEnabled = false;
+    res = replayLogRec(approx, tl.getRootId(), NullConstraint, 1);
+  }catch(RationalFromDoubleException& rfde){
+    turnOffApproxFor(options::replayNumericFailurePenalty());
+  }
+
+
+  
+  if(res.empty()){
+    ++d_statistics.d_replayAttemptFailed;
+  }else{
+    unsigned successes = 0;
+    for(size_t i =0, N = res.size(); i < N; ++i){
+      ConstraintCPVec& vec = res[i];
+      Assert(vec.size() >= 2);
+      for(size_t j=0, M = vec.size(); j < M; ++j){
+        ConstraintCP at_j = vec[j];
+        Assert(at_j->isTrue());
+        if(!at_j->negationHasProof()){
+          successes++;
+          vec[j] = vec.back();
+          vec.pop_back();
+          ConstraintP neg_at_j = at_j->getNegation();
+
+          Debug("approx::replayLog") << "Setting the proof for the replayLog conflict on:" << endl
+                                     << "  (" << neg_at_j->isTrue() <<") " << neg_at_j << endl
+                                     << "  (" << at_j->isTrue() <<") " << at_j << endl;
+          neg_at_j->impliedByIntHole(vec, true);
+          raiseConflict(at_j);
+          break;
+        }
+      }
+    }
+    if(successes > 0){
+      ++d_statistics.d_mipProofsSuccessful;
+    }
+  }
+
+  if(d_currentPropagationList.size() > enteringPropN){
+    d_currentPropagationList.resize(enteringPropN);
+  }
+
+  /* It is not clear what the d_qflraStatus is at this point */
+  d_qflraStatus = Result::SAT_UNKNOWN;
+
+  Assert(d_replayVariables.empty());
+  Assert(d_replayConstraints.empty());
+
+  return !conflictQueueEmpty();
+}
+
+std::pair<ConstraintP, ArithVar> TheoryArithPrivate::replayGetConstraint(const DenseMap<Rational>& lhs, Kind k, const Rational& rhs, bool branch)
+{
+  ArithVar added = ARITHVAR_SENTINEL;
+  Node sum = toSumNode(d_partialModel, lhs);
+  if(sum.isNull()){ return make_pair(NullConstraint, added); }
+
+  Debug("approx::constraint") << "replayGetConstraint " << sum
+                              << " " << k
+                              << " " << rhs
+                              << endl;
+
+  Assert( k == kind::LEQ || k == kind::GEQ );
+
+  Node comparison = NodeManager::currentNM()->mkNode(k, sum, mkRationalNode(rhs));
+  Node rewritten = Rewriter::rewrite(comparison);
+  if(!(Comparison::isNormalAtom(rewritten))){
+    return make_pair(NullConstraint, added);
+  }
+
+  Comparison cmp = Comparison::parseNormalForm(rewritten);
+  if(cmp.isBoolean()){ return make_pair(NullConstraint, added); }
+
+  Polynomial nvp =  cmp.normalizedVariablePart();
+  if(nvp.isZero()){ return make_pair(NullConstraint, added); }
+
+  Node norm = nvp.getNode();
+
+  ConstraintType t = Constraint::constraintTypeOfComparison(cmp);
+  DeltaRational dr = cmp.normalizedDeltaRational();
+
+  Debug("approx::constraint") << "rewriting " << rewritten << endl
+                              << " |-> " << norm << " " << t << " " << dr << endl;
+
+  Assert(!branch || d_partialModel.hasArithVar(norm));
+  ArithVar v = ARITHVAR_SENTINEL;
+  if(d_partialModel.hasArithVar(norm)){
+
+    v = d_partialModel.asArithVar(norm);
+    Debug("approx::constraint") << "replayGetConstraint found "
+                                << norm << " |-> " << v << " @ " << getSatContext()->getLevel() << endl;
+    Assert(!branch || d_partialModel.isIntegerInput(v));
+  }else{
+    v = requestArithVar(norm, true, true);
+    d_replayVariables.push_back(v);
+
+    added = v;
+
+    Debug("approx::constraint") << "replayGetConstraint adding "
+                                << norm << " |-> " << v << " @ " << getSatContext()->getLevel() << endl;
+
+    Polynomial poly = Polynomial::parsePolynomial(norm);
+    vector<ArithVar> variables;
+    vector<Rational> coefficients;
+    asVectors(poly, coefficients, variables);
+    d_tableau.addRow(v, coefficients, variables);
+    setupBasicValue(v);
+    d_linEq.trackRowIndex(d_tableau.basicToRowIndex(v));
+  }
+  Assert(d_partialModel.hasArithVar(norm));
+  Assert(d_partialModel.asArithVar(norm) == v);
+  Assert(d_constraintDatabase.variableDatabaseIsSetup(v));
+
+  ConstraintP imp = d_constraintDatabase.getBestImpliedBound(v, t, dr);
+  if(imp != NullConstraint){
+    if(imp->getValue() == dr){
+      Assert(added == ARITHVAR_SENTINEL);
+      return make_pair(imp, added);
+    }
+  }
+  
+
+  ConstraintP newc = d_constraintDatabase.getConstraint(v, t, dr);
+  d_replayConstraints.push_back(newc);
+  return make_pair(newc, added);
+}
+
+std::pair<ConstraintP, ArithVar> TheoryArithPrivate::replayGetConstraint(ApproximateSimplex* approx, const NodeLog& nl) throw(RationalFromDoubleException){
+  Assert(nl.isBranch());
+  Assert(d_lhsTmp.empty());
+
+  ArithVar v = approx->getBranchVar(nl);
+  if(v != ARITHVAR_SENTINEL && d_partialModel.isIntegerInput(v)){
+    if(d_partialModel.hasNode(v)){
+      d_lhsTmp.set(v, Rational(1));
+      double dval = nl.branchValue();
+      Rational val = ApproximateSimplex::estimateWithCFE(dval);
+      Rational fl(val.floor());
+      pair<ConstraintP, ArithVar> p;
+      p = replayGetConstraint(d_lhsTmp, kind::LEQ, fl, true);
+      d_lhsTmp.purge();
+      return p;
+    }
+  }
+  return make_pair(NullConstraint, ARITHVAR_SENTINEL);
+}
+
+std::pair<ConstraintP, ArithVar> TheoryArithPrivate::replayGetConstraint(const CutInfo& ci) {
+  Assert(ci.reconstructed());
+  const DenseMap<Rational>& lhs = ci.getReconstruction().lhs;
+  const Rational& rhs = ci.getReconstruction().rhs;
+  Kind k = ci.getKind();
+
+  return replayGetConstraint(lhs, k, rhs, ci.getKlass() == BranchCutKlass);
+}
+
+// Node denseVectorToLiteral(const ArithVariables& vars, const DenseVector& dv, Kind k){
+//   NodeManager* nm = NodeManager::currentNM();
+//   Node sumLhs = toSumNode(vars, dv.lhs);
+//   Node ineq = nm->mkNode(k, sumLhs, mkRationalNode(dv.rhs) );
+//   Node lit = Rewriter::rewrite(ineq);
+//   return lit;
+// }
+
+Node toSumNode(const ArithVariables& vars, const DenseMap<Rational>& sum){
+  Debug("arith::toSumNode") << "toSumNode() begin" << endl;
+  NodeBuilder<> nb(kind::PLUS);
+  NodeManager* nm = NodeManager::currentNM();
+  DenseMap<Rational>::const_iterator iter, end;
+  iter = sum.begin(), end = sum.end();
+  for(; iter != end; ++iter){
+    ArithVar x = *iter;
+    if(!vars.hasNode(x)){ return Node::null(); }
+    Node xNode = vars.asNode(x);
+    const Rational& q = sum[x];
+    Node mult = nm->mkNode(kind::MULT, mkRationalNode(q), xNode);
+    Debug("arith::toSumNode") << "toSumNode() " << x << " " << mult << endl;
+    nb << mult;
+  }
+  Debug("arith::toSumNode") << "toSumNode() end" << endl;
+  return safeConstructNary(nb);
+}
+
+ConstraintCP TheoryArithPrivate::vectorToIntHoleConflict(const ConstraintCPVec& conflict){
+  Assert(conflict.size() >= 2);
+  ConstraintCPVec exp(conflict.begin(), conflict.end()-1);
+  ConstraintCP back = conflict.back();
+  Assert(back->hasProof());
+  ConstraintP negBack = back->getNegation();
+  // This can select negBack multiple times so we need to test if negBack has a proof.
+  if(negBack->hasProof()){
+    // back is in conflict already
+  } else {
+    negBack->impliedByIntHole(exp, true);
+  }
+
+  return back;
+}
+
+void TheoryArithPrivate::intHoleConflictToVector(ConstraintCP conflicting, ConstraintCPVec& conflict){
+  ConstraintCP negConflicting = conflicting->getNegation();
+  Assert(conflicting->hasProof());
+  Assert(negConflicting->hasProof());
+
+  conflict.push_back(conflicting);
+  conflict.push_back(negConflicting);
+
+  Constraint::assertionFringe(conflict);
+}
+
+void TheoryArithPrivate::tryBranchCut(ApproximateSimplex* approx, int nid, BranchCutInfo& bci){
+  Assert(conflictQueueEmpty());
+  std::vector< ConstraintCPVec > conflicts;
+
+  approx->tryCut(nid, bci);
+  Debug("approx::branch") << "tryBranchCut" << bci << endl;
+  Assert(bci.reconstructed());
+  Assert(!bci.proven());
+  pair<ConstraintP, ArithVar> p = replayGetConstraint(bci);
+  Assert(p.second == ARITHVAR_SENTINEL);
+  ConstraintP bc = p.first;
+  Assert(bc !=  NullConstraint);
+  if(bc->hasProof()){
+    return;
+  }
+
+  ConstraintP bcneg = bc->getNegation();
+  {
+    context::Context::ScopedPush speculativePush(getSatContext());
+    replayAssert(bcneg);
+    if(conflictQueueEmpty()){
+      TimerStat::CodeTimer codeTimer(d_statistics.d_replaySimplexTimer);
+
+      //test for linear feasibility
+      d_partialModel.stopQueueingBoundCounts();
+      UpdateTrackingCallback utcb(&d_linEq);
+      d_partialModel.processBoundsQueue(utcb);
+      d_linEq.startTrackingBoundCounts();
+
+      SimplexDecisionProcedure& simplex = selectSimplex(true);
+      simplex.findModel(false);
+      // Can change d_qflraStatus
+
+      d_linEq.stopTrackingBoundCounts();
+      d_partialModel.startQueueingBoundCounts();
+    }
+    for(size_t i = 0, N = d_conflicts.size(); i < N; ++i){
+
+      conflicts.push_back(ConstraintCPVec());
+      intHoleConflictToVector(d_conflicts[i], conflicts.back());
+      Constraint::assertionFringe(conflicts.back());
+        
+      // ConstraintCP conflicting = d_conflicts[i];
+      // ConstraintCP negConflicting = conflicting->getNegation();
+      // Assert(conflicting->hasProof());
+      // Assert(negConflicting->hasProof());
+
+      // conflicts.push_back(ConstraintCPVec());
+      // ConstraintCPVec& back = conflicts.back();
+      // back.push_back(conflicting);
+      // back.push_back(negConflicting);
+      
+      // // remove the floor/ceiling contraint implied by bcneg
+      // Constraint::assertionFringe(back);
+    }
+
+    if(Debug.isOn("approx::branch")){
+      if(d_conflicts.empty()){
+        entireStateIsConsistent("branchfailure");
+      }
+    }
+  }
+
+  Debug("approx::branch") << "branch constraint " << bc << endl;
+  for(size_t i = 0, N = conflicts.size(); i < N; ++i){
+    ConstraintCPVec& conf = conflicts[i];
+
+    // make sure to be working on the assertion fringe!
+    if(!contains(conf, bcneg)){
+      Debug("approx::branch") << "reraise " << conf  << endl;
+      ConstraintCP conflicting = vectorToIntHoleConflict(conf);
+      raiseConflict(conflicting);
+    }else if(!bci.proven()){
+      drop(conf, bcneg);
+      bci.setExplanation(conf);
+      Debug("approx::branch") << "dropped " << bci  << endl;
+    }
+  }
+}
+
+void TheoryArithPrivate::replayAssert(ConstraintP c) {
+  if(!c->assertedToTheTheory()){
+    bool inConflict = c->negationHasProof();
+    if(!c->hasProof()){
+      c->setInternalAssumption(inConflict);
+      Debug("approx::replayAssert") << "replayAssert " << c << " set internal" << endl;
+    }else{
+      Debug("approx::replayAssert") << "replayAssert " << c << " has explanation" << endl;
+    }
+    Debug("approx::replayAssert") << "replayAssertion " << c << endl;    
+    if(inConflict){
+      raiseConflict(c);
+    }else{
+      assertionCases(c);
+    }
+  }else{
+    Debug("approx::replayAssert") << "replayAssert " << c << " already asserted" << endl;    
+  }
+}
+
+
+void TheoryArithPrivate::resolveOutPropagated(std::vector<ConstraintCPVec>& confs, const std::set<ConstraintCP>& propagated) const {
+  Debug("arith::resolveOutPropagated")
+    << "starting resolveOutPropagated() " << confs.size() << endl;
+  for(size_t i =0, N = confs.size(); i < N; ++i){
+    ConstraintCPVec& conf = confs[i];
+    size_t orig = conf.size();
+    Constraint::assertionFringe(conf);
+    Debug("arith::resolveOutPropagated")
+      << "  conf["<<i<<"] " << orig << " to " << conf.size() << endl;
+  }
+  Debug("arith::resolveOutPropagated")
+    << "ending resolveOutPropagated() " << confs.size() << endl;
+}
+
+struct SizeOrd {
+  bool operator()(const ConstraintCPVec& a, const ConstraintCPVec& b) const{
+    return a.size() < b.size();
+  }
+};
+
+void TheoryArithPrivate::subsumption(
+    std::vector<ConstraintCPVec> &confs) const {
+  int checks CVC4_UNUSED = 0;
+  int subsumed CVC4_UNUSED = 0;
+
+  for (size_t i = 0, N = confs.size(); i < N; ++i) {
+    ConstraintCPVec &conf = confs[i];
+    std::sort(conf.begin(), conf.end());
+  }
+
+  std::sort(confs.begin(), confs.end(), SizeOrd());
+  for (size_t i = 0; i < confs.size(); i++) {
+    // i is not subsumed
+    for (size_t j = i + 1; j < confs.size();) {
+      ConstraintCPVec& a = confs[i];
+      ConstraintCPVec& b = confs[j];
+      checks++;
+      bool subsumes = std::includes(a.begin(), a.end(), b.begin(), b.end());
+      if (subsumes) {
+        ConstraintCPVec& back = confs.back();
+        b.swap(back);
+        confs.pop_back();
+        subsumed++;
+      } else {
+        j++;
+      }
+    }
+  }
+  Debug("arith::subsumption") << "subsumed " << subsumed << "/" << checks
+                              << endl;
+}
+
+std::vector<ConstraintCPVec> TheoryArithPrivate::replayLogRec(ApproximateSimplex* approx, int nid, ConstraintP bc, int depth){
+  ++(d_statistics.d_replayLogRecCount);
+  Debug("approx::replayLogRec") << "replayLogRec()"
+                                << d_statistics.d_replayLogRecCount.getData() << std::endl;
+
+  size_t rpvars_size = d_replayVariables.size();
+  size_t rpcons_size = d_replayConstraints.size();
+  std::vector<ConstraintCPVec> res;
+
+  { /* create a block for the purpose of pushing the sat context */
+    context::Context::ScopedPush speculativePush(getSatContext());
+    Assert(!anyConflict());
+    Assert(conflictQueueEmpty());
+    set<ConstraintCP> propagated;
+
+    TreeLog& tl = getTreeLog();
+
+    if(bc != NullConstraint){
+      replayAssert(bc);
+    }
+
+    const NodeLog& nl = tl.getNode(nid);
+    NodeLog::const_iterator iter = nl.begin(), end = nl.end();
+    for(; conflictQueueEmpty() && iter != end; ++iter){
+      CutInfo* ci = *iter;
+      bool reject = false;
+      //cout << "  trying " << *ci << endl;
+      if(ci->getKlass() == RowsDeletedKlass){
+        RowsDeleted* rd = dynamic_cast<RowsDeleted*>(ci);
+
+        tl.applyRowsDeleted(nid, *rd);
+        // The previous line modifies nl
+
+        ++d_statistics.d_applyRowsDeleted;
+      }else if(ci->getKlass() == BranchCutKlass){
+        BranchCutInfo* bci = dynamic_cast<BranchCutInfo*>(ci);
+        Assert(bci != NULL);
+        tryBranchCut(approx, nid, *bci);
+
+        ++d_statistics.d_branchCutsAttempted;
+        if(!(conflictQueueEmpty() || ci->reconstructed())){
+          ++d_statistics.d_numBranchesFailed;
+        }
+      }else{
+        approx->tryCut(nid, *ci);
+        if(ci->getKlass() == GmiCutKlass){
+          ++d_statistics.d_gmiCutsAttempted;
+        }else if(ci->getKlass() == MirCutKlass){
+          ++d_statistics.d_mirCutsAttempted;
+        }
+
+        if(ci->reconstructed() && ci->proven()){
+          const DenseMap<Rational>& row = ci->getReconstruction().lhs;
+          reject = !complexityBelow(row, options::replayRejectCutSize());
+        }
+      }
+      if(conflictQueueEmpty()){
+        if(reject){
+          ++d_statistics.d_cutsRejectedDuringReplay;
+        }else if(ci->reconstructed()){
+          // success
+          ++d_statistics.d_cutsReconstructed;
+
+          pair<ConstraintP, ArithVar> p = replayGetConstraint(*ci);
+          if(p.second != ARITHVAR_SENTINEL){
+            Assert(ci->getRowId() >= 1);
+            tl.mapRowId(nl.getNodeId(), ci->getRowId(), p.second);
+          }
+          ConstraintP con = p.first;
+          if(Debug.isOn("approx::replayLogRec")){
+            Debug("approx::replayLogRec") << "cut was remade " << con << " " << *ci << endl;
+          }
+
+          if(ci->proven()){
+            ++d_statistics.d_cutsProven;
+
+            const ConstraintCPVec& exp = ci->getExplanation();
+            // success
+            if(con->isTrue()){
+              Debug("approx::replayLogRec") << "not asserted?" << endl;
+            }else if(!con->negationHasProof()){
+              con->impliedByIntHole(exp, false);
+              replayAssert(con);
+              Debug("approx::replayLogRec") << "cut prop" << endl;
+            }else {
+              con->impliedByIntHole(exp, true);
+              Debug("approx::replayLogRec") << "cut into conflict " << con << endl;
+              raiseConflict(con);
+            }
+          }else{
+            ++d_statistics.d_cutsProofFailed;
+            Debug("approx::replayLogRec") << "failed to get proof " << *ci << endl;
+          }
+        }else if(ci->getKlass() != RowsDeletedKlass){
+          ++d_statistics.d_cutsReconstructionFailed;
+        }
+      }
+    }
+
+    /* check if the system is feasible under with the cuts */
+    if(conflictQueueEmpty()){
+      Assert(options::replayEarlyCloseDepths() >= 1);
+      if(!nl.isBranch() || depth % options::replayEarlyCloseDepths() == 0 ){
+        TimerStat::CodeTimer codeTimer(d_statistics.d_replaySimplexTimer);
+        //test for linear feasibility
+        d_partialModel.stopQueueingBoundCounts();
+        UpdateTrackingCallback utcb(&d_linEq);
+        d_partialModel.processBoundsQueue(utcb);
+        d_linEq.startTrackingBoundCounts();
+
+        SimplexDecisionProcedure& simplex = selectSimplex(true);
+        simplex.findModel(false);
+	// can change d_qflraStatus
+
+        d_linEq.stopTrackingBoundCounts();
+        d_partialModel.startQueueingBoundCounts();
+      }
+    }else{
+      ++d_statistics.d_replayLogRecConflictEscalation;
+    }
+
+    if(!conflictQueueEmpty()){
+      /* if a conflict has been found stop */
+      for(size_t i = 0, N = d_conflicts.size(); i < N; ++i){
+        res.push_back(ConstraintCPVec());
+        intHoleConflictToVector(d_conflicts[i], res.back());
+      }
+      ++d_statistics.d_replayLogRecEarlyExit;
+    }else if(nl.isBranch()){
+      /* if it is a branch try the branch */
+      pair<ConstraintP, ArithVar> p = replayGetConstraint(approx, nl);
+      Assert(p.second == ARITHVAR_SENTINEL);
+      ConstraintP dnc = p.first;
+      if(dnc != NullConstraint){
+        ConstraintP upc = dnc->getNegation();
+
+        int dnid = nl.getDownId();
+        int upid = nl.getUpId();
+
+        NodeLog& dnlog = tl.getNode(dnid);
+        NodeLog& uplog = tl.getNode(upid);
+        dnlog.copyParentRowIds();
+        uplog.copyParentRowIds();
+
+        std::vector<ConstraintCPVec> dnres;
+        std::vector<ConstraintCPVec> upres;
+        std::vector<size_t> containsdn;
+        std::vector<size_t> containsup;
+        if(res.empty()){
+          dnres = replayLogRec(approx, dnid, dnc, depth+1);
+          for(size_t i = 0, N = dnres.size(); i < N; ++i){
+            ConstraintCPVec& conf = dnres[i];
+            if(contains(conf, dnc)){
+              containsdn.push_back(i);
+            }else{
+              res.push_back(conf);
+            }
+          }
+        }else{
+          Debug("approx::replayLogRec") << "replayLogRec() skipping" << dnlog << std::endl;
+          ++d_statistics.d_replayBranchSkips;
+        }
+
+        if(res.empty()){
+          upres = replayLogRec(approx, upid, upc, depth+1);
+
+          for(size_t i = 0, N = upres.size(); i < N; ++i){
+            ConstraintCPVec& conf = upres[i];
+            if(contains(conf, upc)){
+              containsup.push_back(i);
+            }else{
+              res.push_back(conf);
+            }
+          }
+        }else{
+          Debug("approx::replayLogRec") << "replayLogRec() skipping" << uplog << std::endl;
+          ++d_statistics.d_replayBranchSkips;
+        }
+
+        if(res.empty()){
+          for(size_t i = 0, N = containsdn.size(); i < N; ++i){
+            ConstraintCPVec& dnconf = dnres[containsdn[i]];
+            for(size_t j = 0, M = containsup.size(); j < M; ++j){
+              ConstraintCPVec& upconf = upres[containsup[j]];
+
+              res.push_back(ConstraintCPVec());
+              ConstraintCPVec& back = res.back();
+              resolve(back, dnc, dnconf, upconf);
+            }
+          }
+          if(res.size() >= 2u){
+            subsumption(res);
+
+            if(res.size() > 100u){
+              res.resize(100u);
+            }
+          }
+        }else{
+          Debug("approx::replayLogRec") << "replayLogRec() skipping resolving" << nl << std::endl;
+        }
+        Debug("approx::replayLogRec") << "found #"<<res.size()<<" conflicts on branch " << nid << endl;
+        if(res.empty()){
+          ++d_statistics.d_replayBranchCloseFailures;
+        }
+
+      }else{
+        Debug("approx::replayLogRec") << "failed to make a branch " << nid << endl;
+      }
+    }else{
+      ++d_statistics.d_replayLeafCloseFailures;
+      Debug("approx::replayLogRec") << "failed on node " << nid << endl;
+      Assert(res.empty());
+    }
+    resolveOutPropagated(res, propagated);
+    Debug("approx::replayLogRec") << "replayLogRec() ending" << std::endl;
+
+
+    if(options::replayFailureLemma()){
+      // must be done inside the sat context to get things
+      // propagated at this level
+      if(res.empty() && nid == getTreeLog().getRootId()){
+        Assert(!d_replayedLemmas);
+        d_replayedLemmas = replayLemmas(approx);
+        Assert(d_acTmp.empty());
+        while(!d_approxCuts.empty()){
+          Node lem = d_approxCuts.front();
+          d_approxCuts.pop();
+          d_acTmp.push_back(lem);
+        }
+      }
+    }
+  } /* pop the sat context */
+
+  /* move into the current context. */
+  while(!d_acTmp.empty()){
+    Node lem = d_acTmp.back();
+    d_acTmp.pop_back();
+    d_approxCuts.push_back(lem);
+  }
+  Assert(d_acTmp.empty());
+
+
+  /* Garbage collect the constraints from this call */
+  while(d_replayConstraints.size() > rpcons_size){
+    ConstraintP c = d_replayConstraints.back();
+    d_replayConstraints.pop_back();
+    d_constraintDatabase.deleteConstraintAndNegation(c);
+  }
+
+  /* Garbage collect the ArithVars made by this call */
+  if(d_replayVariables.size() > rpvars_size){
+    d_partialModel.stopQueueingBoundCounts();
+    UpdateTrackingCallback utcb(&d_linEq);
+    d_partialModel.processBoundsQueue(utcb);
+    d_linEq.startTrackingBoundCounts();
+    while(d_replayVariables.size() > rpvars_size){
+      ArithVar v = d_replayVariables.back();
+      d_replayVariables.pop_back();
+      Assert(d_partialModel.canBeReleased(v));
+      if(!d_tableau.isBasic(v)){
+        /* if it is not basic make it basic. */
+        ArithVar b = ARITHVAR_SENTINEL;
+        for(Tableau::ColIterator ci = d_tableau.colIterator(v); !ci.atEnd(); ++ci){
+          const Tableau::Entry& e = *ci;
+          b = d_tableau.rowIndexToBasic(e.getRowIndex());
+          break;
+        }
+        Assert(b != ARITHVAR_SENTINEL);
+        DeltaRational cp = d_partialModel.getAssignment(b);
+        if(d_partialModel.cmpAssignmentLowerBound(b) < 0){
+          cp = d_partialModel.getLowerBound(b);
+        }else if(d_partialModel.cmpAssignmentUpperBound(b) > 0){
+          cp = d_partialModel.getUpperBound(b);
+        }
+        d_linEq.pivotAndUpdate(b, v, cp);
+      }
+      Assert(d_tableau.isBasic(v));
+      d_linEq.stopTrackingRowIndex(d_tableau.basicToRowIndex(v));
+      d_tableau.removeBasicRow(v);
+
+      releaseArithVar(v);
+      Debug("approx::vars") << "releasing " << v << endl;
+    }
+    d_linEq.stopTrackingBoundCounts();
+    d_partialModel.startQueueingBoundCounts();
+    d_partialModel.attemptToReclaimReleased();
+  }
+  return res;
+}
+
+TreeLog& TheoryArithPrivate::getTreeLog(){
+  if(d_treeLog == NULL){
+    d_treeLog = new TreeLog();
+  }
+  return *d_treeLog;
+}
+
+ApproximateStatistics& TheoryArithPrivate::getApproxStats(){
+  if(d_approxStats == NULL){
+    d_approxStats = new ApproximateStatistics();
+  }
+  return *d_approxStats;
+}
+
+Node TheoryArithPrivate::branchToNode(ApproximateSimplex*  approx, const NodeLog& bn) const throw(RationalFromDoubleException) {
+  Assert(bn.isBranch());
+  ArithVar v = approx->getBranchVar(bn);
+  if(v != ARITHVAR_SENTINEL && d_partialModel.isIntegerInput(v)){
+    if(d_partialModel.hasNode(v)){
+      Node n = d_partialModel.asNode(v);
+      double dval = bn.branchValue();
+      Rational val = ApproximateSimplex::estimateWithCFE(dval);
+      Rational fl(val.floor());
+      NodeManager* nm = NodeManager::currentNM();
+      Node leq = nm->mkNode(kind::LEQ, n, mkRationalNode(fl));
+      Node norm = Rewriter::rewrite(leq);
+      return norm;
+    }
+  }
+  return Node::null();
+}
+
+Node TheoryArithPrivate::cutToLiteral(ApproximateSimplex* approx, const CutInfo& ci) const{
+  Assert(ci.reconstructed());
+
+  const DenseMap<Rational>& lhs = ci.getReconstruction().lhs;
+  Node sum = toSumNode(d_partialModel, lhs);
+  if(!sum.isNull()){
+    Kind k = ci.getKind();
+    Assert(k == kind::LEQ || k == kind::GEQ);
+    Node rhs = mkRationalNode(ci.getReconstruction().rhs);
+
+    NodeManager* nm = NodeManager::currentNM();
+    Node ineq = nm->mkNode(k, sum, rhs);
+    return Rewriter::rewrite(ineq);
+  }
+  return Node::null();
+}
+
+bool TheoryArithPrivate::replayLemmas(ApproximateSimplex* approx){
+  try{
+    ++(d_statistics.d_mipReplayLemmaCalls);
+    bool anythingnew = false;
+
+    TreeLog& tl = getTreeLog();
+    NodeLog& root = tl.getRootNode();
+    root.applySelected(); /* set row ids */
+
+    vector<const CutInfo*> cuts = approx->getValidCuts(root);
+    for(size_t i =0, N =cuts.size(); i < N; ++i){
+      const CutInfo* cut = cuts[i];
+      Assert(cut->reconstructed());
+      Assert(cut->proven());
+
+      const DenseMap<Rational>& row =  cut->getReconstruction().lhs;
+      if(!complexityBelow(row, options::lemmaRejectCutSize())){
+        ++(d_statistics.d_cutsRejectedDuringLemmas);
+        continue;
+      }
+
+      Node cutConstraint = cutToLiteral(approx, *cut);
+      if(!cutConstraint.isNull()){
+        const ConstraintCPVec& exp = cut->getExplanation();
+        Node asLemma = Constraint::externalExplainByAssertions(exp);
+
+        Node implied = Rewriter::rewrite(cutConstraint);
+        anythingnew = anythingnew || !isSatLiteral(implied);
+
+        Node implication = asLemma.impNode(implied);
+        // DO NOT CALL OUTPUT LEMMA!
+        d_approxCuts.push_back(implication);
+        Debug("approx::lemmas") << "cut["<<i<<"] " << implication << endl;
+        ++(d_statistics.d_mipExternalCuts);
+      }
+    }
+    if(root.isBranch()){
+      Node lit = branchToNode(approx, root);
+      if(!lit.isNull()){
+        anythingnew = anythingnew || !isSatLiteral(lit);
+        Node branch = lit.orNode(lit.notNode());
+        d_approxCuts.push_back(branch);
+        ++(d_statistics.d_mipExternalBranch);
+        Debug("approx::lemmas") << "branching "<< root <<" as " << branch << endl;
+      }
+    }
+    return anythingnew;
+  }catch(RationalFromDoubleException& rfde){
+    turnOffApproxFor(options::replayNumericFailurePenalty());
+    return false;
+  }
+}
+
+void TheoryArithPrivate::turnOffApproxFor(int32_t rounds){
+  d_attemptSolveIntTurnedOff = d_attemptSolveIntTurnedOff + rounds;
+  ++(d_statistics.d_approxDisabled);
+}
+
+bool TheoryArithPrivate::safeToCallApprox() const{
+  unsigned numRows = 0;
+  unsigned numCols = 0;
+  var_iterator vi = var_begin(), vi_end = var_end();
+  // Assign each variable to a row and column variable as it appears in the input
+  for(; vi != vi_end && !(numRows > 0 && numCols > 0); ++vi){
+    ArithVar v = *vi;
+
+    if(d_partialModel.isAuxiliary(v)){
+      ++numRows;
+    }else{
+      ++numCols;
+    }
+  }
+  return (numRows > 0 && numCols > 0);
+}
+
+// solve()
+//   res = solveRealRelaxation(effortLevel);
+//   switch(res){
+//   case LinFeas:
+//   case LinInfeas:
+//     return replay()
+//   case Unknown:
+//   case Error
+//     if()
+void TheoryArithPrivate::solveInteger(Theory::Effort effortLevel){
+  if(!safeToCallApprox()) { return; }
+
+  Assert(safeToCallApprox());
+  TimerStat::CodeTimer codeTimer(d_statistics.d_solveIntTimer);
+
+  ++(d_statistics.d_solveIntCalls);
+  d_statistics.d_inSolveInteger.setData(1);
+
+  if(!Theory::fullEffort(effortLevel)){
+    d_solveIntAttempts++;
+    ++(d_statistics.d_solveStandardEffort);
+  }
+
+  // if integers are attempted,
+  Assert(options::useApprox());
+  Assert(ApproximateSimplex::enabled());
+
+  int level = getSatContext()->getLevel();
+  d_lastContextIntegerAttempted = level;
+
+
+  static const int32_t mipLimit = 200000;
+
+  TreeLog& tl = getTreeLog();
+  ApproximateStatistics& stats = getApproxStats();
+  ApproximateSimplex* approx =
+    ApproximateSimplex::mkApproximateSimplexSolver(d_partialModel, tl, stats);
+
+  try{
+    approx->setPivotLimit(mipLimit);
+    if(!d_guessedCoeffSet){
+      d_guessedCoeffs = approx->heuristicOptCoeffs();
+      d_guessedCoeffSet = true;
+    }
+    if(!d_guessedCoeffs.empty()){
+      approx->setOptCoeffs(d_guessedCoeffs);
+    }
+    static const int32_t depthForLikelyInfeasible = 10;
+    int maxDepthPass1 = d_likelyIntegerInfeasible ?
+      depthForLikelyInfeasible : options::maxApproxDepth();
+    approx->setBranchingDepth(maxDepthPass1);
+    approx->setBranchOnVariableLimit(100);
+    LinResult relaxRes = approx->solveRelaxation();
+    if( relaxRes == LinFeasible ){
+      MipResult mipRes = MipUnknown;
+      {
+        TimerStat::CodeTimer codeTimer(d_statistics.d_mipTimer);
+        mipRes = approx->solveMIP(false);
+      }
+
+      Debug("arith::solveInteger") << "mipRes " << mipRes << endl;
+      switch(mipRes) {
+      case MipBingo:
+        // attempt the solution
+        {
+          ++(d_statistics.d_solveIntModelsAttempts);
+
+          d_partialModel.stopQueueingBoundCounts();
+          UpdateTrackingCallback utcb(&d_linEq);
+          d_partialModel.processBoundsQueue(utcb);
+          d_linEq.startTrackingBoundCounts();
+
+          ApproximateSimplex::Solution mipSolution;
+          mipSolution = approx->extractMIP();
+          importSolution(mipSolution);
+          solveRelaxationOrPanic(effortLevel);
+
+          if(d_qflraStatus == Result::SAT){
+            if(!anyConflict()){
+              if(ARITHVAR_SENTINEL == nextIntegerViolatation(false)){
+                ++(d_statistics.d_solveIntModelsSuccessful);
+              }
+            }
+          }
+
+          // shutdown simplex
+          d_linEq.stopTrackingBoundCounts();
+          d_partialModel.startQueueingBoundCounts();
+        }
+        break;
+      case MipClosed:
+        /* All integer branches closed */
+        approx->setPivotLimit(2*mipLimit);
+        {
+          TimerStat::CodeTimer codeTimer(d_statistics.d_mipTimer);
+          mipRes = approx->solveMIP(true);
+        }
+
+        if(mipRes == MipClosed){
+          d_likelyIntegerInfeasible = true;
+          replayLog(approx);
+	  AlwaysAssert(anyConflict() || d_qflraStatus != Result::SAT);
+
+	  if(!anyConflict()){
+	    solveRealRelaxation(effortLevel);
+	  }
+        }
+        if(!(anyConflict() || !d_approxCuts.empty())){
+          turnOffApproxFor(options::replayNumericFailurePenalty());
+        }
+        break;
+      case BranchesExhausted:
+      case ExecExhausted:
+      case PivotsExhauasted:
+        if(mipRes == BranchesExhausted){
+          ++d_statistics.d_branchesExhausted;
+        }else if(mipRes == ExecExhausted){
+          ++d_statistics.d_execExhausted;
+        }else if(mipRes == PivotsExhauasted){
+          ++d_statistics.d_pivotsExhausted;
+        }
+
+        approx->setPivotLimit(2*mipLimit);
+        approx->setBranchingDepth(2);
+        {
+          TimerStat::CodeTimer codeTimer(d_statistics.d_mipTimer);
+          mipRes = approx->solveMIP(true);
+        }
+        replayLemmas(approx);
+        break;
+      case MipUnknown:
+        break;
+      }
+    }
+  }catch(RationalFromDoubleException& rfde){
+    turnOffApproxFor(options::replayNumericFailurePenalty());
+  }
+  delete approx;
+
+  if(!Theory::fullEffort(effortLevel)){
+    if(anyConflict() || !d_approxCuts.empty()){
+      d_solveIntMaybeHelp++;
+    }
+  }
+
+  d_statistics.d_inSolveInteger.setData(0);
+}
+
+SimplexDecisionProcedure& TheoryArithPrivate::selectSimplex(bool pass1){
+  if(pass1){
+    if(d_pass1SDP == NULL){
+      if(options::useFC()){
+        d_pass1SDP = (SimplexDecisionProcedure*)(&d_fcSimplex);
+      }else if(options::useSOI()){
+        d_pass1SDP = (SimplexDecisionProcedure*)(&d_soiSimplex);
+      }else{
+        d_pass1SDP = (SimplexDecisionProcedure*)(&d_dualSimplex);
+      }
+    }
+    Assert(d_pass1SDP != NULL);
+    return *d_pass1SDP;
+  }else{
+     if(d_otherSDP == NULL){
+      if(options::useFC()){
+        d_otherSDP  = (SimplexDecisionProcedure*)(&d_fcSimplex);
+      }else if(options::useSOI()){
+        d_otherSDP = (SimplexDecisionProcedure*)(&d_soiSimplex);
+      }else{
+        d_otherSDP = (SimplexDecisionProcedure*)(&d_soiSimplex);
+      }
+    }
+    Assert(d_otherSDP != NULL);
+    return *d_otherSDP;
+  }
+}
+
+void TheoryArithPrivate::importSolution(const ApproximateSimplex::Solution& solution){
+  if(Debug.isOn("arith::importSolution")){
+    Debug("arith::importSolution") << "importSolution before " << d_qflraStatus << endl;
+    d_partialModel.printEntireModel(Debug("arith::importSolution"));
+  }
+
+  d_qflraStatus = d_attemptSolSimplex.attempt(solution);
+
+  if(Debug.isOn("arith::importSolution")){
+    Debug("arith::importSolution") << "importSolution intermediate " << d_qflraStatus << endl;
+    d_partialModel.printEntireModel(Debug("arith::importSolution"));
+  }
+
+  if(d_qflraStatus != Result::UNSAT){
+    static const int32_t pass2Limit = 20;
+    int16_t oldCap = options::arithStandardCheckVarOrderPivots();
+    options::arithStandardCheckVarOrderPivots.set(pass2Limit);
+    SimplexDecisionProcedure& simplex = selectSimplex(false);
+    d_qflraStatus = simplex.findModel(false);
+    options::arithStandardCheckVarOrderPivots.set(oldCap);
+  }
+
+  if(Debug.isOn("arith::importSolution")){
+    Debug("arith::importSolution") << "importSolution after " << d_qflraStatus << endl;
+    d_partialModel.printEntireModel(Debug("arith::importSolution"));
+  }
+}
+
+bool TheoryArithPrivate::solveRelaxationOrPanic(Theory::Effort effortLevel){
+  // if at this point the linear relaxation is still unknown,
+  //  attempt to branch an integer variable as a last ditch effort on full check
+  if(d_qflraStatus == Result::SAT_UNKNOWN){
+    d_qflraStatus = selectSimplex(true).findModel(false);
+  }
+
+  if(Theory::fullEffort(effortLevel)  && d_qflraStatus == Result::SAT_UNKNOWN){
+    ArithVar canBranch = nextIntegerViolatation(false);
+    if(canBranch != ARITHVAR_SENTINEL){
+      ++d_statistics.d_panicBranches;
+      Node branch = branchIntegerVariable(canBranch);
+      Assert(branch.getKind() == kind::OR);
+      Node rwbranch = Rewriter::rewrite(branch[0]);
+      if(!isSatLiteral(rwbranch)){
+        d_approxCuts.push_back(branch);
+        return true;
+      }
+    }
+    d_qflraStatus = selectSimplex(false).findModel(true);
+  }
+  return false;
+}
+
+bool TheoryArithPrivate::solveRealRelaxation(Theory::Effort effortLevel){
+  TimerStat::CodeTimer codeTimer(d_statistics.d_solveRealRelaxTimer);
+  Assert(d_qflraStatus != Result::SAT);
+
+  d_partialModel.stopQueueingBoundCounts();
+  UpdateTrackingCallback utcb(&d_linEq);
+  d_partialModel.processBoundsQueue(utcb);
+  d_linEq.startTrackingBoundCounts();
+
+  bool noPivotLimit = Theory::fullEffort(effortLevel) ||
+    !options::restrictedPivots();
+
+  SimplexDecisionProcedure& simplex = selectSimplex(true);
+
+  bool useApprox = options::useApprox() && ApproximateSimplex::enabled() && getSolveIntegerResource();
+
+  Debug("TheoryArithPrivate::solveRealRelaxation")
+    << "solveRealRelaxation() approx"
+    << " " <<  options::useApprox()
+    << " " << ApproximateSimplex::enabled()
+    << " " << useApprox
+    << " " << safeToCallApprox()
+    << endl;
+  
+  bool noPivotLimitPass1 = noPivotLimit && !useApprox;
+  d_qflraStatus = simplex.findModel(noPivotLimitPass1);
+
+  Debug("TheoryArithPrivate::solveRealRelaxation")
+    << "solveRealRelaxation()" << " pass1 " << d_qflraStatus << endl;
+  
+  if(d_qflraStatus == Result::SAT_UNKNOWN && useApprox && safeToCallApprox()){
+    // pass2: fancy-final
+    static const int32_t relaxationLimit = 10000;
+    Assert(ApproximateSimplex::enabled());
+
+    TreeLog& tl = getTreeLog();
+    ApproximateStatistics& stats = getApproxStats();
+    ApproximateSimplex* approxSolver =
+      ApproximateSimplex::mkApproximateSimplexSolver(d_partialModel, tl, stats);
+
+    approxSolver->setPivotLimit(relaxationLimit);
+
+    if(!d_guessedCoeffSet){
+      d_guessedCoeffs = approxSolver->heuristicOptCoeffs();
+      d_guessedCoeffSet = true;
+    }
+    if(!d_guessedCoeffs.empty()){
+      approxSolver->setOptCoeffs(d_guessedCoeffs);
+    }
+
+    ++d_statistics.d_relaxCalls;
+
+    ApproximateSimplex::Solution relaxSolution;
+    LinResult relaxRes = LinUnknown;
+    {
+      TimerStat::CodeTimer codeTimer(d_statistics.d_lpTimer);
+      relaxRes = approxSolver->solveRelaxation();
+    }
+    try{
+      Debug("solveRealRelaxation") << "solve relaxation? " << endl;
+      switch(relaxRes){
+      case LinFeasible:
+        Debug("solveRealRelaxation") << "lin feasible? " << endl;
+        ++d_statistics.d_relaxLinFeas;
+        relaxSolution = approxSolver->extractRelaxation();
+        importSolution(relaxSolution);
+        if(d_qflraStatus != Result::SAT){
+          ++d_statistics.d_relaxLinFeasFailures;
+        }
+        break;
+      case LinInfeasible:
+        // todo attempt to recreate approximate conflict
+        ++d_statistics.d_relaxLinInfeas;
+        Debug("solveRealRelaxation") << "lin infeasible " << endl;
+        relaxSolution = approxSolver->extractRelaxation();
+        importSolution(relaxSolution);
+        if(d_qflraStatus != Result::UNSAT){
+          ++d_statistics.d_relaxLinInfeasFailures;
+        }
+        break;
+      case LinExhausted:
+        ++d_statistics.d_relaxLinExhausted;
+        Debug("solveRealRelaxation") << "exhuasted " << endl;
+        break;
+      case LinUnknown:
+      default:
+        ++d_statistics.d_relaxOthers;
+        break;
+      }
+    }catch(RationalFromDoubleException& rfde){
+      turnOffApproxFor(options::replayNumericFailurePenalty());
+    }
+    delete approxSolver;
+
+  }
+
+  bool emmittedConflictOrSplit = solveRelaxationOrPanic(effortLevel);
+
+  // TODO Save zeroes with no conflicts
+  d_linEq.stopTrackingBoundCounts();
+  d_partialModel.startQueueingBoundCounts();
+
+  return emmittedConflictOrSplit;
+}
+
+//   LinUnknown,  /* Unknown error */
+//   LinFeasible, /* Relaxation is feasible */
+//   LinInfeasible,   /* Relaxation is infeasible/all integer branches closed */
+//   LinExhausted
+//     // Fancy final tries the following strategy
+//     // At final check, try the preferred simplex solver with a pivot cap
+//     // If that failed, swap the the other simplex solver
+//     // If that failed, check if there are integer variables to cut
+//     // If that failed, do a simplex without a pivot limit
+
+//     int16_t oldCap = options::arithStandardCheckVarOrderPivots();
+
+//     static const int32_t pass2Limit = 10;
+//     static const int32_t relaxationLimit = 10000;
+//     static const int32_t mipLimit = 200000;
+
+//     //cout << "start" << endl;
+//     d_qflraStatus = simplex.findModel(false);
+//     //cout << "end" << endl;
+//     if(d_qflraStatus == Result::SAT_UNKNOWN ||
+//        (d_qflraStatus == Result::SAT && !hasIntegerModel() && !d_likelyIntegerInfeasible)){
+
+//       ApproximateSimplex* approxSolver = ApproximateSimplex::mkApproximateSimplexSolver(d_partialModel, *(getTreeLog()), *(getApproxStats()));
+//       approxSolver->setPivotLimit(relaxationLimit);
+
+//       if(!d_guessedCoeffSet){
+//         d_guessedCoeffs = approxSolver->heuristicOptCoeffs();
+//         d_guessedCoeffSet = true;
+//       }
+//       if(!d_guessedCoeffs.empty()){
+//         approxSolver->setOptCoeffs(d_guessedCoeffs);
+//       }
+
+//       MipResult mipRes;
+//       ApproximateSimplex::Solution relaxSolution, mipSolution;
+//       LinResult relaxRes = approxSolver->solveRelaxation();
+//       switch(relaxRes){
+//       case LinFeasible:
+//         {
+//           relaxSolution = approxSolver->extractRelaxation();
+
+//           /* If the approximate solver  known to be integer infeasible
+//            * only redo*/
+//           int maxDepth =
+//             d_likelyIntegerInfeasible ? 1 : options::arithMaxBranchDepth();
+
+
+//           if(d_likelyIntegerInfeasible){
+//             d_qflraStatus = d_attemptSolSimplex.attempt(relaxSolution);
+//           }else{
+//             approxSolver->setPivotLimit(mipLimit);
+//             mipRes = approxSolver->solveMIP(false);
+//             if(mipRes == ApproximateSimplex::ApproxUnsat){
+//               mipRes = approxSolver->solveMIP(true);
+//             }
+//             d_errorSet.reduceToSignals();
+//             //Message() << "here" << endl;
+//             if(mipRes == ApproximateSimplex::ApproxSat){
+//               mipSolution = approxSolver->extractMIP();
+//               d_qflraStatus = d_attemptSolSimplex.attempt(mipSolution);
+//             }else{
+//               if(mipRes == ApproximateSimplex::ApproxUnsat){
+//                 d_likelyIntegerInfeasible = true;
+//               }
+//               vector<Node> lemmas = approxSolver->getValidCuts();
+//               for(size_t i = 0; i < lemmas.size(); ++i){
+//                 d_approxCuts.pushback(lemmas[i]);
+//               }
+//               d_qflraStatus = d_attemptSolSimplex.attempt(relaxSolution);
+//             }
+//           }
+//           options::arithStandardCheckVarOrderPivots.set(pass2Limit);
+//           if(d_qflraStatus != Result::UNSAT){ d_qflraStatus = simplex.findModel(false); }
+//           //Message() << "done" << endl;
+//         }
+//         break;
+//       case ApproximateSimplex::ApproxUnsat:
+//         {
+//           ApproximateSimplex::Solution sol = approxSolver->extractRelaxation();
+
+//           d_qflraStatus = d_attemptSolSimplex.attempt(sol);
+//           options::arithStandardCheckVarOrderPivots.set(pass2Limit);
+
+//           if(d_qflraStatus != Result::UNSAT){ d_qflraStatus = simplex.findModel(false); }
+//         }
+//         break;
+//       default:
+//         break;
+//       }
+//       delete approxSolver;
+//     }
+//   }
+
+//   if(!useFancyFinal){
+//     d_qflraStatus = simplex.findModel(noPivotLimit);
+//   }else{
+    
+
+//     if(d_qflraStatus == Result::SAT_UNKNOWN){
+//       //Message() << "got sat unknown" << endl;
+//       vector<ArithVar> toCut = cutAllBounded();
+//       if(toCut.size() > 0){
+//         //branchVector(toCut);
+//         emmittedConflictOrSplit = true;
+//       }else{
+//         //Message() << "splitting" << endl;
+
+//         d_qflraStatus = simplex.findModel(noPivotLimit);
+//       }
+//     }
+//     options::arithStandardCheckVarOrderPivots.set(oldCap);
+//   }
+
+//   // TODO Save zeroes with no conflicts
+//   d_linEq.stopTrackingBoundCounts();
+//   d_partialModel.startQueueingBoundCounts();
+
+//   return emmittedConflictOrSplit;
+// }
+
+bool TheoryArithPrivate::hasFreshArithLiteral(Node n) const{
+  switch(n.getKind()){
+  case kind::LEQ:
+  case kind::GEQ:
+  case kind::GT:
+  case kind::LT:
+    return !isSatLiteral(n);
+  case kind::EQUAL:
+    if(n[0].getType().isReal()){
+      return !isSatLiteral(n);
+    }else if(n[0].getType().isBoolean()){
+      return hasFreshArithLiteral(n[0]) ||
+        hasFreshArithLiteral(n[1]);
+    }else{
+      return false;
+    }
+  case kind::IMPLIES:
+    // try the rhs first
+    return hasFreshArithLiteral(n[1]) ||
+      hasFreshArithLiteral(n[0]);
+  default:
+    if(n.getType().isBoolean()){
+      for(Node::iterator ni=n.begin(), nend=n.end(); ni!=nend; ++ni){
+        Node child = *ni;
+        if(hasFreshArithLiteral(child)){
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+}
+
+void TheoryArithPrivate::check(Theory::Effort effortLevel){
+  Assert(d_currentPropagationList.empty());
+
+  if(done() && !Theory::fullEffort(effortLevel) && ( d_qflraStatus == Result::SAT) ){
+    return;
+  }
+
+  TimerStat::CodeTimer checkTimer(d_containing.d_checkTime);
+  //cout << "TheoryArithPrivate::check " << effortLevel << std::endl;
+  Debug("effortlevel") << "TheoryArithPrivate::check " << effortLevel << std::endl;
+  Debug("arith") << "TheoryArithPrivate::check begun " << effortLevel << std::endl;
+
+  if(Debug.isOn("arith::consistency")){
+    Assert(unenqueuedVariablesAreConsistent());
+  }
+
+  bool newFacts = !done();
+  //If previous == SAT, then reverts on conflicts are safe
+  //Otherwise, they are not and must be committed.
+  Result::Sat previous = d_qflraStatus;
+  if(newFacts){
+    d_qflraStatus = Result::SAT_UNKNOWN;
+    d_hasDoneWorkSinceCut = true;
+  }
+
+  while(!done()){
+    ConstraintP curr = constraintFromFactQueue();
+    if(curr != NullConstraint){
+      bool res CVC4_UNUSED = assertionCases(curr);
+      Assert(!res || anyConflict());
+    }
+    if(anyConflict()){ break; }
+  }
+  if(!anyConflict()){
+    while(!d_learnedBounds.empty()){
+      // we may attempt some constraints twice.  this is okay!
+      ConstraintP curr = d_learnedBounds.front();
+      d_learnedBounds.pop();
+      Debug("arith::learned") << curr << endl;
+
+      bool res CVC4_UNUSED = assertionCases(curr);
+      Assert(!res || anyConflict());
+
+      if(anyConflict()){ break; }
+    }
+  }
+
+  if(anyConflict()){
+    d_qflraStatus = Result::UNSAT;
+    if(options::revertArithModels() && previous == Result::SAT){
+      ++d_statistics.d_revertsOnConflicts;
+      Debug("arith::bt") << "clearing here " << " " << newFacts << " " << previous << " " << d_qflraStatus  << endl;
+      revertOutOfConflict();
+      d_errorSet.clear();
+    }else{
+      ++d_statistics.d_commitsOnConflicts;
+      Debug("arith::bt") << "committing here " << " " << newFacts << " " << previous << " " << d_qflraStatus  << endl;
+      d_partialModel.commitAssignmentChanges();
+      revertOutOfConflict();
+    }
+    outputConflicts();
+    //cout << "unate conflict 1 " << effortLevel << std::endl;
+    return;
+  }
+
+
+  if(Debug.isOn("arith::print_assertions")) {
+    debugPrintAssertions(Debug("arith::print_assertions"));
+  }
+
+  bool emmittedConflictOrSplit = false;
+  Assert(d_conflicts.empty());
+
+  bool useSimplex = d_qflraStatus != Result::SAT;
+  Debug("arith::ems") << "ems: " << emmittedConflictOrSplit
+                      << "pre realRelax" << endl;
+
+  if(useSimplex){
+    emmittedConflictOrSplit = solveRealRelaxation(effortLevel);
+  }
+  Debug("arith::ems") << "ems: " << emmittedConflictOrSplit
+                      << "post realRelax" << endl;
+
+
+  Debug("arith::ems") << "ems: " << emmittedConflictOrSplit
+                      << "pre solveInteger" << endl;
+
+  if(attemptSolveInteger(effortLevel, emmittedConflictOrSplit)){
+    solveInteger(effortLevel);
+    if(anyConflict()){
+      ++d_statistics.d_commitsOnConflicts;
+      Debug("arith::bt") << "committing here " << " " << newFacts << " " << previous << " " << d_qflraStatus  << endl;
+      revertOutOfConflict();
+      d_errorSet.clear();
+      outputConflicts();
+      return;
+    }
+  }
+
+  Debug("arith::ems") << "ems: " << emmittedConflictOrSplit
+                      << "post solveInteger" << endl;
+
+  switch(d_qflraStatus){
+  case Result::SAT:
+    if(newFacts){
+      ++d_statistics.d_nontrivialSatChecks;
+    }
+
+    Debug("arith::bt") << "committing sap inConflit"  << " " << newFacts << " " << previous << " " << d_qflraStatus  << endl;
+    d_partialModel.commitAssignmentChanges();
+    d_unknownsInARow = 0;
+    if(Debug.isOn("arith::consistency")){
+      Assert(entireStateIsConsistent("sat comit"));
+    }
+    if(useSimplex && options::collectPivots()){
+      if(options::useFC()){
+        d_statistics.d_satPivots << d_fcSimplex.getPivots();
+      }else{
+        d_statistics.d_satPivots << d_dualSimplex.getPivots();
+      }
+    }
+    break;
+  case Result::SAT_UNKNOWN:
+    ++d_unknownsInARow;
+    ++(d_statistics.d_unknownChecks);
+    Assert(!Theory::fullEffort(effortLevel));
+    Debug("arith::bt") << "committing unknown"  << " " << newFacts << " " << previous << " " << d_qflraStatus  << endl;
+    d_partialModel.commitAssignmentChanges();
+    d_statistics.d_maxUnknownsInARow.maxAssign(d_unknownsInARow);
+
+    if(useSimplex && options::collectPivots()){
+      if(options::useFC()){
+        d_statistics.d_unknownPivots << d_fcSimplex.getPivots();
+      }else{
+        d_statistics.d_unknownPivots << d_dualSimplex.getPivots();
+      }
+    }
+    break;
+  case Result::UNSAT:
+    d_unknownsInARow = 0;
+
+    ++d_statistics.d_commitsOnConflicts;
+
+    Debug("arith::bt") << "committing on conflict" << " " << newFacts << " " << previous << " " << d_qflraStatus  << endl;
+    d_partialModel.commitAssignmentChanges();
+    revertOutOfConflict();
+
+    if(Debug.isOn("arith::consistency::comitonconflict")){
+      entireStateIsConsistent("commit on conflict");
+    }
+    outputConflicts();
+    emmittedConflictOrSplit = true;
+    Debug("arith::conflict") << "simplex conflict" << endl;
+
+    if(useSimplex && options::collectPivots()){
+      if(options::useFC()){
+        d_statistics.d_unsatPivots << d_fcSimplex.getPivots();
+      }else{
+        d_statistics.d_unsatPivots << d_dualSimplex.getPivots();
+      }
+    }
+    break;
+  default:
+    Unimplemented();
+  }
+  d_statistics.d_avgUnknownsInARow.addEntry(d_unknownsInARow);
+
+  Debug("arith::ems") << "ems: " << emmittedConflictOrSplit
+                      << "pre approx cuts" << endl;
+  if(!d_approxCuts.empty()){
+    bool anyFresh = false;
+    while(!d_approxCuts.empty()){
+      Node lem = d_approxCuts.front();
+      d_approxCuts.pop();
+      Debug("arith::approx::cuts") << "approximate cut:" << lem << endl;
+      anyFresh = anyFresh || hasFreshArithLiteral(lem);
+      Debug("arith::lemma") << "approximate cut:" << lem << endl;
+      outputLemma(lem);
+    }
+    if(anyFresh){
+      emmittedConflictOrSplit = true;
+    }
+  }
+
+  Debug("arith::ems") << "ems: " << emmittedConflictOrSplit
+                      << "post approx cuts" << endl;
+
+  // This should be fine if sat or unknown
+  if(!emmittedConflictOrSplit &&
+     (options::arithPropagationMode() == UNATE_PROP ||
+      options::arithPropagationMode() == BOTH_PROP)){
+    TimerStat::CodeTimer codeTimer(d_statistics.d_newPropTime);
+    Assert(d_qflraStatus != Result::UNSAT);
+
+    while(!d_currentPropagationList.empty()  && !anyConflict()){
+      ConstraintP curr = d_currentPropagationList.front();
+      d_currentPropagationList.pop_front();
+
+      ConstraintType t = curr->getType();
+      Assert(t != Disequality, "Disequalities are not allowed in d_currentPropagation");
+
+
+      switch(t){
+      case LowerBound:
+        {
+          ConstraintP prev = d_currentPropagationList.front();
+          d_currentPropagationList.pop_front();
+          d_constraintDatabase.unatePropLowerBound(curr, prev);
+          break;
+        }
+      case UpperBound:
+        {
+          ConstraintP prev = d_currentPropagationList.front();
+          d_currentPropagationList.pop_front();
+          d_constraintDatabase.unatePropUpperBound(curr, prev);
+          break;
+        }
+      case Equality:
+        {
+          ConstraintP prevLB = d_currentPropagationList.front();
+          d_currentPropagationList.pop_front();
+          ConstraintP prevUB = d_currentPropagationList.front();
+          d_currentPropagationList.pop_front();
+          d_constraintDatabase.unatePropEquality(curr, prevLB, prevUB);
+          break;
+        }
+      default:
+        Unhandled(curr->getType());
+      }
+    }
+
+    if(anyConflict()){
+      Debug("arith::unate") << "unate conflict" << endl;
+      revertOutOfConflict();
+      d_qflraStatus = Result::UNSAT;
+      outputConflicts();
+      emmittedConflictOrSplit = true;
+      //cout << "unate conflict " << endl;
+      Debug("arith::bt") << "committing on unate conflict" << " " << newFacts << " " << previous << " " << d_qflraStatus  << endl;
+
+      Debug("arith::conflict") << "unate arith conflict" << endl;
+    }
+  }else{
+    TimerStat::CodeTimer codeTimer(d_statistics.d_newPropTime);
+    d_currentPropagationList.clear();
+  }
+  Assert( d_currentPropagationList.empty());
+
+  Debug("arith::ems") << "ems: " << emmittedConflictOrSplit
+                      << "post unate" << endl;
+
+  if(!emmittedConflictOrSplit && Theory::fullEffort(effortLevel)){
+    ++d_fullCheckCounter;
+  }
+  if(!emmittedConflictOrSplit && Theory::fullEffort(effortLevel)){
+    emmittedConflictOrSplit = splitDisequalities();
+  }
+  Debug("arith::ems") << "ems: " << emmittedConflictOrSplit
+                      << "pos splitting" << endl;
+
+
+  Debug("arith") << "integer? "
+       << " conf/split " << emmittedConflictOrSplit
+       << " fulleffort " << Theory::fullEffort(effortLevel)
+       << " hasintmodel " << hasIntegerModel() << endl;
+
+  if(!emmittedConflictOrSplit && Theory::fullEffort(effortLevel) && !hasIntegerModel()){
+    Node possibleConflict = Node::null();
+    if(!emmittedConflictOrSplit && options::arithDioSolver()){
+      possibleConflict = callDioSolver();
+      if(possibleConflict != Node::null()){
+        revertOutOfConflict();
+        Debug("arith::conflict") << "dio conflict   " << possibleConflict << endl;
+        raiseBlackBoxConflict(possibleConflict);
+        outputConflicts();
+        emmittedConflictOrSplit = true;
+      }
+    }
+
+    if(!emmittedConflictOrSplit && d_hasDoneWorkSinceCut && options::arithDioSolver()){
+      if(getDioCuttingResource()){
+        Node possibleLemma = dioCutting();
+        if(!possibleLemma.isNull()){
+          emmittedConflictOrSplit = true;
+          d_hasDoneWorkSinceCut = false;
+          d_cutCount = d_cutCount + 1;
+          Debug("arith::lemma") << "dio cut   " << possibleLemma << endl;
+          outputLemma(possibleLemma);
+        }
+      }
+    }
+
+    if(!emmittedConflictOrSplit) {
+      Node possibleLemma = roundRobinBranch();
+      if(!possibleLemma.isNull()){
+        ++(d_statistics.d_externalBranchAndBounds);
+        d_cutCount = d_cutCount + 1;
+        emmittedConflictOrSplit = true;
+        Debug("arith::lemma") << "rrbranch lemma"
+                              << possibleLemma << endl;
+        outputLemma(possibleLemma);
+
+      }
+    }
+
+    if(options::maxCutsInContext() <= d_cutCount){
+      if(d_diosolver.hasMoreDecompositionLemmas()){
+        while(d_diosolver.hasMoreDecompositionLemmas()){
+          Node decompositionLemma = d_diosolver.nextDecompositionLemma();
+          Debug("arith::lemma") << "dio decomposition lemma "
+                                << decompositionLemma << endl;
+          outputLemma(decompositionLemma);
+        }
+      }else{
+        Debug("arith::restart") << "arith restart!" << endl;
+        outputRestart();
+      }
+    }
+  }//if !emmittedConflictOrSplit && fullEffort(effortLevel) && !hasIntegerModel()
+  if(Theory::fullEffort(effortLevel) && d_nlIncomplete){
+    // TODO this is total paranoia
+    setIncomplete();
+  }
+
+  if(Theory::fullEffort(effortLevel)){
+    if(Debug.isOn("arith::consistency::final")){
+      entireStateIsConsistent("arith::consistency::final");
+    }
+    // cout << "fulleffort" << getSatContext()->getLevel() << endl;
+    // entireStateIsConsistent("arith::consistency::final");
+    // cout << "emmittedConflictOrSplit" << emmittedConflictOrSplit << endl;
+  }
+
+  if(Debug.isOn("paranoid:check_tableau")){ d_linEq.debugCheckTableau(); }
+  if(Debug.isOn("arith::print_model")) {
+    debugPrintModel(Debug("arith::print_model"));
+  }
+  Debug("arith") << "TheoryArithPrivate::check end" << std::endl;
+}
+
+Node TheoryArithPrivate::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_partialModel.asNode(x) << "]] is " << r << "[" << i << "]" << endl;
+
+  Assert(! (r.getDenominator() == 1 && i.getNumerator() == 0));
+  Assert(!d.isIntegral());
+  TNode var = d_partialModel.asNode(x);
+  Integer floor_d = d.floor();
+
+  //Node eq = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::EQUAL, var, mkRationalNode(floor_d+1)));
+  //Node diseq = eq.notNode();
+
+  Node ub = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::LEQ, var, mkRationalNode(floor_d)));
+  Node lb = ub.notNode();
+
+
+  //Node lem = NodeManager::currentNM()->mkNode(kind::OR, eq, diseq);
+  Node lem = NodeManager::currentNM()->mkNode(kind::OR, ub, lb);
+  Trace("integers") << "integers: branch & bound: " << lem << endl;
+  if(isSatLiteral(lem[0])) {
+    Debug("integers") << "    " << lem[0] << " == " << getSatValue(lem[0]) << endl;
+  } else {
+    Debug("integers") << "    " << lem[0] << " is not assigned a SAT literal" << endl;
+  }
+  if(isSatLiteral(lem[1])) {
+    Debug("integers") << "    " << lem[1] << " == " << getSatValue(lem[1]) << endl;
+    } else {
+    Debug("integers") << "    " << lem[1] << " is not assigned a SAT literal" << endl;
+  }
+  return lem;
+}
+
+std::vector<ArithVar> TheoryArithPrivate::cutAllBounded() const{
+  vector<ArithVar> lemmas;
+  ArithVar max = d_partialModel.getNumberOfVariables();
+
+  if(options::doCutAllBounded() && max > 0){
+    for(ArithVar iter = 0; iter != max; ++iter){
+    //Do not include slack variables
+      const DeltaRational& d = d_partialModel.getAssignment(iter);
+      if(isIntegerInput(iter) &&
+         !d_cutInContext.contains(iter) &&
+         d_partialModel.hasUpperBound(iter) &&
+         d_partialModel.hasLowerBound(iter) &&
+         !d.isIntegral()){
+        lemmas.push_back(iter);
+      }
+    }
+  }
+  return lemmas;
+}
+
+/** Returns true if the roundRobinBranching() issues a lemma. */
+Node TheoryArithPrivate::roundRobinBranch(){
+  if(hasIntegerModel()){
+    return Node::null();
+  }else{
+    ArithVar v = d_nextIntegerCheckVar;
+
+    Assert(isInteger(v));
+    Assert(!isAuxiliaryVariable(v));
+    return branchIntegerVariable(v);
+  }
+}
+
+bool TheoryArithPrivate::splitDisequalities(){
+  bool splitSomething = false;
+
+  vector<ConstraintP> save;
+
+  while(!d_diseqQueue.empty()){
+    ConstraintP front = d_diseqQueue.front();
+    d_diseqQueue.pop();
+
+    if(front->isSplit()){
+      Debug("arith::eq") << "split already" << endl;
+    }else{
+      Debug("arith::eq") << "not split already" << endl;
+
+      ArithVar lhsVar = front->getVariable();
+
+      const DeltaRational& lhsValue = d_partialModel.getAssignment(lhsVar);
+      const DeltaRational& rhsValue = front->getValue();
+      if(lhsValue == rhsValue){
+        Debug("arith::lemma") << "Splitting on " << front << endl;
+        Debug("arith::lemma") << "LHS value = " << lhsValue << endl;
+        Debug("arith::lemma") << "RHS value = " << rhsValue << endl;
+        Node lemma = front->split();
+        ++(d_statistics.d_statDisequalitySplits);
+
+        Debug("arith::lemma") << "Now " << Rewriter::rewrite(lemma) << endl;
+        outputLemma(lemma);
+        //cout << "Now " << Rewriter::rewrite(lemma) << endl;
+        splitSomething = true;
+      }else if(d_partialModel.strictlyLessThanLowerBound(lhsVar, rhsValue)){
+        Debug("arith::eq") << "can drop as less than lb" << front << endl;
+      }else if(d_partialModel.strictlyGreaterThanUpperBound(lhsVar, rhsValue)){
+        Debug("arith::eq") << "can drop as greater than ub" << front << endl;
+      }else{
+        Debug("arith::eq") << "save" << front << ": " <<lhsValue << " != " << rhsValue << endl;
+        save.push_back(front);
+      }
+    }
+  }
+  vector<ConstraintP>::const_iterator i=save.begin(), i_end = save.end();
+  for(; i != i_end; ++i){
+    d_diseqQueue.push(*i);
+  }
+  return splitSomething;
+}
+
+/**
+ * Should be guarded by at least Debug.isOn("arith::print_assertions").
+ * Prints to Debug("arith::print_assertions")
+ */
+void TheoryArithPrivate::debugPrintAssertions(std::ostream& out) const {
+  out << "Assertions:" << endl;
+  for (var_iterator vi = var_begin(), vend = var_end(); vi != vend; ++vi){
+    ArithVar i = *vi;
+    if (d_partialModel.hasLowerBound(i)) {
+      ConstraintP lConstr = d_partialModel.getLowerBoundConstraint(i);
+      out << lConstr << endl;
+    }
+
+    if (d_partialModel.hasUpperBound(i)) {
+      ConstraintP uConstr = d_partialModel.getUpperBoundConstraint(i);
+      out << uConstr << endl;
+    }
+  }
+  context::CDQueue<ConstraintP>::const_iterator it = d_diseqQueue.begin();
+  context::CDQueue<ConstraintP>::const_iterator it_end = d_diseqQueue.end();
+  for(; it != it_end; ++ it) {
+    out << *it << endl;
+  }
+}
+
+void TheoryArithPrivate::debugPrintModel(std::ostream& out) const{
+  out << "Model:" << endl;
+  for (var_iterator vi = var_begin(), vend = var_end(); vi != vend; ++vi){
+    ArithVar i = *vi;
+    if(d_partialModel.hasNode(i)){
+      out << d_partialModel.asNode(i) << " : " <<
+        d_partialModel.getAssignment(i);
+      if(d_tableau.isBasic(i)){
+        out << " (basic)";
+      }
+      out << endl;
+    }
+  }
+}
+
+
+
+Node TheoryArithPrivate::explain(TNode n) {
+
+  Debug("arith::explain") << "explain @" << getSatContext()->getLevel() << ": " << n << endl;
+
+  ConstraintP c = d_constraintDatabase.lookup(n);
+  if(c != NullConstraint){
+    Assert(!c->isAssumption());
+    Node exp = c->externalExplainForPropagation();
+    Debug("arith::explain") << "constraint explanation" << n << ":" << exp << endl;
+    return exp;
+  }else if(d_assertionsThatDoNotMatchTheirLiterals.find(n) != d_assertionsThatDoNotMatchTheirLiterals.end()){
+    c = d_assertionsThatDoNotMatchTheirLiterals[n];
+    if(!c->isAssumption()){
+      Node exp = c->externalExplainForPropagation();
+      Debug("arith::explain") << "assertions explanation" << n << ":" << exp << endl;
+      return exp;
+    }else{
+      Debug("arith::explain") << "this is a strange mismatch" << n << endl;
+      Assert(d_congruenceManager.canExplain(n));
+      Debug("arith::explain") << "this is a strange mismatch" << n << endl;
+      return d_congruenceManager.explain(n);
+    }
+  }else{
+    Assert(d_congruenceManager.canExplain(n));
+    Debug("arith::explain") << "dm explanation" << n << endl;
+    return d_congruenceManager.explain(n);
+  }
+}
+
+
+void TheoryArithPrivate::propagate(Theory::Effort e) {
+  // This uses model values for safety. Disable for now.
+  if(d_qflraStatus == Result::SAT &&
+     (options::arithPropagationMode() == BOUND_INFERENCE_PROP ||
+      options::arithPropagationMode() == BOTH_PROP)
+     && hasAnyUpdates()){
+    if(options::newProp()){
+      propagateCandidatesNew();
+    }else{
+      propagateCandidates();
+    }
+  }else{
+    clearUpdates();
+  }
+
+  while(d_constraintDatabase.hasMorePropagations()){
+    ConstraintCP c = d_constraintDatabase.nextPropagation();
+    Debug("arith::prop") << "next prop" << getSatContext()->getLevel() << ": " << c << endl;
+
+    if(c->negationHasProof()){
+      Debug("arith::prop") << "negation has proof " << c->getNegation() << endl;
+      Debug("arith::prop") << c->getNegation()->externalExplainByAssertions()
+                           << endl;
+    }
+    Assert(!c->negationHasProof(), "A constraint has been propagated on the constraint propagation queue, but the negation has been set to true.  Contact Tim now!");
+
+    if(!c->assertedToTheTheory()){
+      Node literal = c->getLiteral();
+      Debug("arith::prop") << "propagating @" << getSatContext()->getLevel() << " " << literal << endl;
+
+      outputPropagate(literal);
+    }else{
+      Debug("arith::prop") << "already asserted to the theory " <<  c->getLiteral() << endl;
+    }
+  }
+
+  while(d_congruenceManager.hasMorePropagations()){
+    TNode toProp = d_congruenceManager.getNextPropagation();
+
+    //Currently if the flag is set this came from an equality detected by the
+    //equality engine in the the difference manager.
+    Node normalized = Rewriter::rewrite(toProp);
+
+    ConstraintP constraint = d_constraintDatabase.lookup(normalized);
+    if(constraint == NullConstraint){
+      Debug("arith::prop") << "propagating on non-constraint? "  << toProp << endl;
+
+      outputPropagate(toProp);
+    }else if(constraint->negationHasProof()){
+      Node exp = d_congruenceManager.explain(toProp);
+      Node notNormalized = normalized.getKind() == NOT ?
+        normalized[0] : normalized.notNode();
+      Node lp = flattenAnd(exp.andNode(notNormalized));
+      Debug("arith::prop") << "propagate conflict" <<  lp << endl;
+      raiseBlackBoxConflict(lp);
+      outputConflicts();
+      return;
+    }else{
+      Debug("arith::prop") << "propagating still?" <<  toProp << endl;
+      outputPropagate(toProp);
+    }
+  }
+}
+
+DeltaRational TheoryArithPrivate::getDeltaValue(TNode n) const throw (DeltaRationalException, ModelException) {
+  AlwaysAssert(d_qflraStatus != Result::SAT_UNKNOWN);
+  Debug("arith::value") << n << std::endl;
+
+  switch(n.getKind()) {
+
+  case kind::CONST_RATIONAL:
+    return n.getConst<Rational>();
+
+  case kind::PLUS: { // 2+ args
+    DeltaRational value(0);
+    for(TNode::iterator i = n.begin(), iend = n.end(); i != iend; ++i) {
+      value = value + getDeltaValue(*i);
+    }
+    return value;
+  }
+
+  case kind::MULT: { // 2+ args
+    DeltaRational value(1);
+    unsigned variableParts = 0;
+    for(TNode::iterator i = n.begin(), iend = n.end(); i != iend; ++i) {
+      TNode curr = *i;
+      value = value * getDeltaValue(curr);
+      if(!curr.isConst()){
+        ++variableParts;
+      }
+    }
+    // TODO: This is a bit of a weak check
+    if(isSetup(n)){
+      ArithVar var = d_partialModel.asArithVar(n);
+      const DeltaRational& assign = d_partialModel.getAssignment(var);
+      if(assign != value){
+        throw ModelException(n, "Model disagrees on non-linear term.");
+      }
+    }
+    return value;
+  }
+  case kind::MINUS:{ // 2 args
+    return getDeltaValue(n[0]) - getDeltaValue(n[1]);
+  }
+
+  case kind::UMINUS:{ // 1 arg
+    return (- getDeltaValue(n[0]));
+  }
+
+  case kind::DIVISION:{ // 2 args
+    DeltaRational res = getDeltaValue(n[0]) / getDeltaValue(n[1]);
+    if(isSetup(n)){
+      ArithVar var = d_partialModel.asArithVar(n);
+      if(d_partialModel.getAssignment(var) != res){
+        throw ModelException(n, "Model disagrees on non-linear term.");
+      }
+    }
+    return res;
+  }
+  case kind::DIVISION_TOTAL:
+  case kind::INTS_DIVISION_TOTAL:
+  case kind::INTS_MODULUS_TOTAL: { // 2 args
+    DeltaRational denom = getDeltaValue(n[1]);
+    if(denom.isZero()){
+      return DeltaRational(0,0);
+    }else{
+      DeltaRational numer = getDeltaValue(n[0]);
+      DeltaRational res;
+      if(n.getKind() == kind::DIVISION_TOTAL){
+        res = numer / denom;
+      }else if(n.getKind() == kind::INTS_DIVISION_TOTAL){
+        res = Rational(numer.euclidianDivideQuotient(denom));
+      }else{
+        Assert(n.getKind() == kind::INTS_MODULUS_TOTAL);
+        res = Rational(numer.euclidianDivideRemainder(denom));
+      }
+      if(isSetup(n)){
+        ArithVar var = d_partialModel.asArithVar(n);
+        if(d_partialModel.getAssignment(var) != res){
+          throw ModelException(n, "Model disagrees on non-linear term.");
+        }
+      }
+      return res;
+    }
+  }
+
+  default:
+    if(isSetup(n)){
+      ArithVar var = d_partialModel.asArithVar(n);
+      return d_partialModel.getAssignment(var);
+    }else{
+      throw ModelException(n, "Expected a setup node.");
+    }
+  }
+}
+
+Rational TheoryArithPrivate::deltaValueForTotalOrder() const{
+  Rational min(2);
+  std::set<DeltaRational> relevantDeltaValues;
+  context::CDQueue<ConstraintP>::const_iterator qiter = d_diseqQueue.begin();
+  context::CDQueue<ConstraintP>::const_iterator qiter_end = d_diseqQueue.end();
+
+  for(; qiter != qiter_end; ++qiter){
+    ConstraintP curr = *qiter;
+
+    const DeltaRational& rhsValue = curr->getValue();
+    relevantDeltaValues.insert(rhsValue);
+  }
+
+  Theory::shared_terms_iterator shared_iter = d_containing.shared_terms_begin();
+  Theory::shared_terms_iterator shared_end = d_containing.shared_terms_end();
+  for(; shared_iter != shared_end; ++shared_iter){
+    Node sharedCurr = *shared_iter;
+
+    // ModelException is fatal as this point. Don't catch!
+    // DeltaRationalException is fatal as this point. Don't catch!
+    DeltaRational val = getDeltaValue(sharedCurr);
+    relevantDeltaValues.insert(val);
+  }
+
+  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)){
+      const DeltaRational& lb = d_partialModel.getLowerBound(v);
+      relevantDeltaValues.insert(lb);
+    }
+    if( d_partialModel.hasUpperBound(v)){
+      const DeltaRational& ub = d_partialModel.getUpperBound(v);
+      relevantDeltaValues.insert(ub);
+    }
+  }
+
+  if(relevantDeltaValues.size() >= 2){
+    std::set<DeltaRational>::const_iterator iter = relevantDeltaValues.begin();
+    std::set<DeltaRational>::const_iterator iter_end = relevantDeltaValues.end();
+    DeltaRational prev = *iter;
+    ++iter;
+    for(; iter != iter_end; ++iter){
+      const DeltaRational& curr = *iter;
+
+      Assert(prev < curr);
+
+      DeltaRational::seperatingDelta(min, prev, curr);
+      prev = curr;
+    }
+  }
+
+  Assert(min.sgn() > 0);
+  Rational belowMin = min/Rational(2);
+  return belowMin;
+}
+
+void TheoryArithPrivate::collectModelInfo( TheoryModel* m, bool fullModel ){
+  AlwaysAssert(d_qflraStatus ==  Result::SAT);
+  //AlwaysAssert(!d_nlIncomplete, "Arithmetic solver cannot currently produce models for input with nonlinear arithmetic constraints");
+
+  if(Debug.isOn("arith::collectModelInfo")){
+    debugPrintFacts();
+  }
+
+  Debug("arith::collectModelInfo") << "collectModelInfo() begin " << endl;
+
+  std::set<Node> termSet;
+  d_containing.computeRelevantTerms(termSet);
+ 
+
+  // Delta lasts at least the duration of the function call
+  const Rational& delta = d_partialModel.getDelta();
+  std::hash_set<TNode, TNodeHashFunction> shared = d_containing.currentlySharedTerms();
+
+  // TODO:
+  // This is not very good for user push/pop....
+  // Revisit when implementing push/pop
+  for(var_iterator vi = var_begin(), vend = var_end(); vi != vend; ++vi){
+    ArithVar v = *vi;
+
+    if(!isAuxiliaryVariable(v)){
+      Node term = d_partialModel.asNode(v);
+
+      if((theoryOf(term) == THEORY_ARITH || shared.find(term) != shared.end())
+         && termSet.find(term) != termSet.end()){
+
+        const DeltaRational& mod = d_partialModel.getAssignment(v);
+        Rational qmodel = mod.substituteDelta(delta);
+
+        Node qNode = mkRationalNode(qmodel);
+        Debug("arith::collectModelInfo") << "m->assertEquality(" << term << ", " << qmodel << ", true)" << endl;
+
+        m->assertEquality(term, qNode, true);
+      }else{
+        Debug("arith::collectModelInfo") << "Skipping m->assertEquality(" << term << ", true)" << endl;
+
+      }
+    }
+  }
+
+  // Iterate over equivalence classes in LinearEqualityModule
+  // const eq::EqualityEngine& ee = d_congruenceManager.getEqualityEngine();
+  // m->assertEqualityEngine(&ee);
+
+  Debug("arith::collectModelInfo") << "collectModelInfo() end " << endl;
+}
+
+bool TheoryArithPrivate::safeToReset() const {
+  Assert(!d_tableauSizeHasBeenModified);
+  Assert(d_errorSet.noSignals());
+
+  ErrorSet::error_iterator error_iter = d_errorSet.errorBegin();
+  ErrorSet::error_iterator error_end = d_errorSet.errorEnd();
+  for(; error_iter != error_end; ++error_iter){
+    ArithVar basic = *error_iter;
+    if(!d_smallTableauCopy.isBasic(basic)){
+      return false;
+    }
+  }
+
+  return true;
+}
+
+void TheoryArithPrivate::notifyRestart(){
+  TimerStat::CodeTimer codeTimer(d_statistics.d_restartTimer);
+
+  if(Debug.isOn("paranoid:check_tableau")){ d_linEq.debugCheckTableau(); }
+
+  ++d_restartsCounter;
+  d_solveIntMaybeHelp = 0;
+  d_solveIntAttempts = 0;
+}
+
+bool TheoryArithPrivate::entireStateIsConsistent(const string& s){
+  bool result = true;
+  for(var_iterator vi = var_begin(), vend = var_end(); vi != vend; ++vi){
+    ArithVar var = *vi;
+    //ArithVar var = d_partialModel.asArithVar(*i);
+    if(!d_partialModel.assignmentIsConsistent(var)){
+      d_partialModel.printModel(var);
+      Warning() << s << ":" << "Assignment is not consistent for " << var << d_partialModel.asNode(var);
+      if(d_tableau.isBasic(var)){
+        Warning() << " (basic)";
+      }
+      Warning() << endl;
+      result = false;
+    }else if(d_partialModel.isInteger(var) && !d_partialModel.integralAssignment(var)){
+      d_partialModel.printModel(var);
+      Warning() << s << ":" << "Assignment is not integer for integer variable " << var << d_partialModel.asNode(var);
+      if(d_tableau.isBasic(var)){
+        Warning() << " (basic)";
+      }
+      Warning() << endl;
+      result = false;
+    }
+  }
+  return result;
+}
+
+bool TheoryArithPrivate::unenqueuedVariablesAreConsistent(){
+  bool result = true;
+  for(var_iterator vi = var_begin(), vend = var_end(); vi != vend; ++vi){
+    ArithVar var = *vi;
+    if(!d_partialModel.assignmentIsConsistent(var)){
+      if(!d_errorSet.inError(var)){
+
+        d_partialModel.printModel(var);
+        Warning() << "Unenqueued var is not consistent for " << var <<  d_partialModel.asNode(var);
+        if(d_tableau.isBasic(var)){
+          Warning() << " (basic)";
+        }
+        Warning() << endl;
+        result = false;
+      } else if(Debug.isOn("arith::consistency::initial")){
+        d_partialModel.printModel(var);
+        Warning() << "Initial var is not consistent for " << var <<  d_partialModel.asNode(var);
+        if(d_tableau.isBasic(var)){
+          Warning() << " (basic)";
+        }
+        Warning() << endl;
+      }
+     }
+  }
+  return result;
+}
+
+void TheoryArithPrivate::presolve(){
+  TimerStat::CodeTimer codeTimer(d_statistics.d_presolveTime);
+
+  d_statistics.d_initialTableauSize.setData(d_tableau.size());
+
+  if(Debug.isOn("paranoid:check_tableau")){ d_linEq.debugCheckTableau(); }
+
+  static CVC4_THREADLOCAL(unsigned) callCount = 0;
+  if(Debug.isOn("arith::presolve")) {
+    Debug("arith::presolve") << "TheoryArithPrivate::presolve #" << callCount << endl;
+    callCount = callCount + 1;
+  }
+
+  vector<Node> lemmas;
+  if(!options::incrementalSolving()) {
+    switch(options::arithUnateLemmaMode()){
+    case NO_PRESOLVE_LEMMAS:
+      break;
+    case INEQUALITY_PRESOLVE_LEMMAS:
+      d_constraintDatabase.outputUnateInequalityLemmas(lemmas);
+      break;
+    case EQUALITY_PRESOLVE_LEMMAS:
+      d_constraintDatabase.outputUnateEqualityLemmas(lemmas);
+      break;
+    case ALL_PRESOLVE_LEMMAS:
+      d_constraintDatabase.outputUnateInequalityLemmas(lemmas);
+      d_constraintDatabase.outputUnateEqualityLemmas(lemmas);
+      break;
+    default:
+      Unhandled(options::arithUnateLemmaMode());
+    }
+  }
+
+  vector<Node>::const_iterator i = lemmas.begin(), i_end = lemmas.end();
+  for(; i != i_end; ++i){
+    Node lem = *i;
+    Debug("arith::oldprop") << " lemma lemma duck " <<lem << endl;
+    outputLemma(lem);
+  }
+}
+
+EqualityStatus TheoryArithPrivate::getEqualityStatus(TNode a, TNode b) {
+  if(d_qflraStatus == Result::SAT_UNKNOWN){
+    return EQUALITY_UNKNOWN;
+  }else{
+    try {
+      if (getDeltaValue(a) == getDeltaValue(b)) {
+        return EQUALITY_TRUE_IN_MODEL;
+      } else {
+        return EQUALITY_FALSE_IN_MODEL;
+      }
+    } catch (DeltaRationalException& dr) {
+      return EQUALITY_UNKNOWN;
+    } catch (ModelException& me) {
+      return EQUALITY_UNKNOWN;
+    }
+  }
+}
+
+bool TheoryArithPrivate::propagateCandidateBound(ArithVar basic, bool upperBound){
+  ++d_statistics.d_boundComputations;
+
+  RowIndex ridx = d_tableau.basicToRowIndex(basic);
+  DeltaRational bound = d_linEq.computeRowBound(ridx, upperBound, basic);
+
+  if((upperBound && d_partialModel.strictlyLessThanUpperBound(basic, bound)) ||
+     (!upperBound && d_partialModel.strictlyGreaterThanLowerBound(basic, bound))){
+
+    // TODO: "Policy point"
+    //We are only going to recreate the functionality for now.
+    //In the future this can be improved to generate a temporary constraint
+    //if none exists.
+    //Experiment with doing this everytime or only when the new constraint
+    //implies an unknown fact.
+
+    ConstraintType t = upperBound ? UpperBound : LowerBound;
+    ConstraintP bestImplied = d_constraintDatabase.getBestImpliedBound(basic, t, bound);
+
+    // Node bestImplied = upperBound ?
+    //   d_apm.getBestImpliedUpperBound(basic, bound):
+    //   d_apm.getBestImpliedLowerBound(basic, bound);
+
+    if(bestImplied != NullConstraint){
+      //This should be stronger
+      Assert(!upperBound || bound <= bestImplied->getValue());
+      Assert(!upperBound || d_partialModel.lessThanUpperBound(basic, bestImplied->getValue()));
+
+      Assert( upperBound || bound >= bestImplied->getValue());
+      Assert( upperBound || d_partialModel.greaterThanLowerBound(basic, bestImplied->getValue()));
+      //slightly changed
+
+      // ConstraintP c = d_constraintDatabase.lookup(bestImplied);
+      // Assert(c != NullConstraint);
+
+      bool assertedToTheTheory = bestImplied->assertedToTheTheory();
+      bool canBePropagated = bestImplied->canBePropagated();
+      bool hasProof = bestImplied->hasProof();
+
+      Debug("arith::prop") << "arith::prop" << basic
+                           << " " << assertedToTheTheory
+                           << " " << canBePropagated
+                           << " " << hasProof
+                           << endl;
+
+      if(bestImplied->negationHasProof()){
+        Warning() << "the negation of " <<  bestImplied << " : " << endl
+                  << "has proof " << bestImplied->getNegation() << endl
+                  << bestImplied->getNegation()->externalExplainByAssertions()
+                  << endl;
+      }
+
+      if(!assertedToTheTheory && canBePropagated && !hasProof ){
+        d_linEq.propagateBasicFromRow(bestImplied);
+        // I think this can be skipped if canBePropagated is true
+        //d_learnedBounds.push(bestImplied);
+        if(Debug.isOn("arith::prop")){
+          Debug("arith::prop") << "success " << bestImplied << endl;
+          d_partialModel.printModel(basic, Debug("arith::prop"));
+        }
+        return true;
+      }
+      if(Debug.isOn("arith::prop")){
+        Debug("arith::prop") << "failed " << basic
+                             << " " << bound
+                             << " " << assertedToTheTheory
+                             << " " << canBePropagated
+                             << " " << hasProof << endl;
+        d_partialModel.printModel(basic, Debug("arith::prop"));
+      }
+    }
+  }else if(Debug.isOn("arith::prop")){
+    Debug("arith::prop") << "false " << bound << " ";
+    d_partialModel.printModel(basic, Debug("arith::prop"));
+  }
+  return false;
+}
+
+void TheoryArithPrivate::propagateCandidate(ArithVar basic){
+  bool success = false;
+  RowIndex ridx = d_tableau.basicToRowIndex(basic);
+
+  bool tryLowerBound =
+    d_partialModel.strictlyAboveLowerBound(basic) &&
+    d_linEq.rowLacksBound(ridx, false, basic) == NULL;
+
+  bool tryUpperBound =
+    d_partialModel.strictlyBelowUpperBound(basic) &&
+    d_linEq.rowLacksBound(ridx, true, basic) == NULL;
+
+  if(tryLowerBound){
+    success |= propagateCandidateLowerBound(basic);
+  }
+  if(tryUpperBound){
+    success |= propagateCandidateUpperBound(basic);
+  }
+  if(success){
+    ++d_statistics.d_boundPropagations;
+  }
+}
+
+void TheoryArithPrivate::propagateCandidates(){
+  TimerStat::CodeTimer codeTimer(d_statistics.d_boundComputationTime);
+
+  Debug("arith::prop") << "propagateCandidates begin" << endl;
+
+  Assert(d_candidateBasics.empty());
+
+  if(d_updatedBounds.empty()){ return; }
+
+  DenseSet::const_iterator i = d_updatedBounds.begin();
+  DenseSet::const_iterator end = d_updatedBounds.end();
+  for(; i != end; ++i){
+    ArithVar var = *i;
+    if(d_tableau.isBasic(var) &&
+       d_tableau.basicRowLength(var) <= options::arithPropagateMaxLength()){
+      d_candidateBasics.softAdd(var);
+    }else{
+      Tableau::ColIterator basicIter = d_tableau.colIterator(var);
+      for(; !basicIter.atEnd(); ++basicIter){
+        const Tableau::Entry& entry = *basicIter;
+        RowIndex ridx = entry.getRowIndex();
+        ArithVar rowVar = d_tableau.rowIndexToBasic(ridx);
+        Assert(entry.getColVar() == var);
+        Assert(d_tableau.isBasic(rowVar));
+        if(d_tableau.getRowLength(ridx) <= options::arithPropagateMaxLength()){
+          d_candidateBasics.softAdd(rowVar);
+        }
+      }
+    }
+  }
+  d_updatedBounds.purge();
+
+  while(!d_candidateBasics.empty()){
+    ArithVar candidate = d_candidateBasics.back();
+    d_candidateBasics.pop_back();
+    Assert(d_tableau.isBasic(candidate));
+    propagateCandidate(candidate);
+  }
+  Debug("arith::prop") << "propagateCandidates end" << endl << endl << endl;
+}
+
+void TheoryArithPrivate::propagateCandidatesNew(){
+  /* Four criteria must be met for progagation on a variable to happen using a row:
+   * 0: A new bound has to have been added to the row.
+   * 1: The hasBoundsCount for the row must be "full" or be full minus one variable
+   *    (This is O(1) to check, but requires book keeping.)
+   * 2: The current assignment must be strictly smaller/greater than the current bound.
+   *    assign(x) < upper(x)
+   *    (This is O(1) to compute.)
+   * 3: There is a bound that is strictly smaller/greater than the current assignment.
+   *    assign(x) < c for some x <= c literal
+   *    (This is O(log n) to compute.)
+   * 4: The implied bound on x is strictly smaller/greater than the current bound.
+   *    (This is O(n) to compute.)
+   */
+
+  TimerStat::CodeTimer codeTimer(d_statistics.d_boundComputationTime);
+  Debug("arith::prop") << "propagateCandidatesNew begin" << endl;
+
+  Assert(d_qflraStatus == Result::SAT);
+  if(d_updatedBounds.empty()){ return; }
+  dumpUpdatedBoundsToRows();
+  Assert(d_updatedBounds.empty());
+
+  if(!d_candidateRows.empty()){
+    UpdateTrackingCallback utcb(&d_linEq);
+    d_partialModel.processBoundsQueue(utcb);
+  }
+
+  while(!d_candidateRows.empty()){
+    RowIndex candidate = d_candidateRows.back();
+    d_candidateRows.pop_back();
+    propagateCandidateRow(candidate);
+  }
+  Debug("arith::prop") << "propagateCandidatesNew end" << endl << endl << endl;
+}
+
+bool TheoryArithPrivate::propagateMightSucceed(ArithVar v, bool ub) const{
+  int cmp = ub ? d_partialModel.cmpAssignmentUpperBound(v)
+    : d_partialModel.cmpAssignmentLowerBound(v);
+  bool hasSlack = ub ? cmp < 0 : cmp > 0;
+  if(hasSlack){
+    ConstraintType t = ub ? UpperBound : LowerBound;
+    const DeltaRational& a = d_partialModel.getAssignment(v);
+
+    if(isInteger(v) && !a.isIntegral()){
+      return true;
+    }
+
+    ConstraintP strongestPossible = d_constraintDatabase.getBestImpliedBound(v, t, a);
+    if(strongestPossible == NullConstraint){
+      return false;
+    }else{
+      bool assertedToTheTheory = strongestPossible->assertedToTheTheory();
+      bool canBePropagated = strongestPossible->canBePropagated();
+      bool hasProof = strongestPossible->hasProof();
+
+      return !assertedToTheTheory && canBePropagated && !hasProof;
+    }
+  }else{
+    return false;
+  }
+}
+
+bool TheoryArithPrivate::attemptSingleton(RowIndex ridx, bool rowUp){
+  Debug("arith::prop") << "  attemptSingleton" << ridx;
+
+  const Tableau::Entry* ep;
+  ep = d_linEq.rowLacksBound(ridx, rowUp, ARITHVAR_SENTINEL);
+  Assert(ep != NULL);
+
+  ArithVar v = ep->getColVar();
+  const Rational& coeff = ep->getCoefficient();
+
+  // 0 = c * v + \sum rest
+  // Suppose rowUp
+  // - c * v = \sum rest \leq D
+  // if c > 0, v \geq -D/c so !vUp
+  // if c < 0, v \leq -D/c so  vUp
+  // Suppose not rowUp
+  // - c * v = \sum rest \geq D
+  // if c > 0, v \leq -D/c so  vUp
+  // if c < 0, v \geq -D/c so !vUp
+  bool vUp = (rowUp == ( coeff.sgn() < 0));
+
+  Debug("arith::prop") << "  " << rowUp << " " << v << " " << coeff << " " << vUp << endl;
+  Debug("arith::prop") << "  " << propagateMightSucceed(v, vUp) << endl;
+
+  if(propagateMightSucceed(v, vUp)){
+    DeltaRational dr = d_linEq.computeRowBound(ridx, rowUp, v);
+    DeltaRational bound = dr / (- coeff);
+    return tryToPropagate(ridx, rowUp, v, vUp, bound);
+  }
+  return false;
+}
+
+bool TheoryArithPrivate::attemptFull(RowIndex ridx, bool rowUp){
+  Debug("arith::prop") << "  attemptFull" << ridx << endl;
+
+  vector<const Tableau::Entry*> candidates;
+
+  for(Tableau::RowIterator i = d_tableau.ridRowIterator(ridx); !i.atEnd(); ++i){
+    const Tableau::Entry& e =*i;
+    const Rational& c = e.getCoefficient();
+    ArithVar v = e.getColVar();
+    bool vUp = (rowUp == (c.sgn() < 0));
+    if(propagateMightSucceed(v, vUp)){
+      candidates.push_back(&e);
+    }
+  }
+  if(candidates.empty()){ return false; }
+
+  const DeltaRational slack =
+    d_linEq.computeRowBound(ridx, rowUp, ARITHVAR_SENTINEL);
+  bool any = false;
+  vector<const Tableau::Entry*>::const_iterator i, iend;
+  for(i = candidates.begin(), iend = candidates.end(); i != iend; ++i){
+    const Tableau::Entry* ep = *i;
+    const Rational& c = ep->getCoefficient();
+    ArithVar v = ep->getColVar();
+
+    // See the comment for attemptSingleton()
+    bool activeUp = (rowUp == (c.sgn() > 0));
+    bool vUb = (rowUp == (c.sgn() < 0));
+
+    const DeltaRational& activeBound = activeUp ?
+      d_partialModel.getUpperBound(v):
+      d_partialModel.getLowerBound(v);
+
+    DeltaRational contribution = activeBound * c;
+    DeltaRational impliedBound = (slack - contribution)/(-c);
+
+    bool success = tryToPropagate(ridx, rowUp, v, vUb, impliedBound);
+    any |= success;
+  }
+  return any;
+}
+
+bool TheoryArithPrivate::tryToPropagate(RowIndex ridx, bool rowUp, ArithVar v, bool vUb, const DeltaRational& bound){
+
+  bool weaker = vUb ? d_partialModel.strictlyLessThanUpperBound(v, bound):
+    d_partialModel.strictlyGreaterThanLowerBound(v, bound);
+  if(weaker){
+    ConstraintType t = vUb ? UpperBound : LowerBound;
+
+    ConstraintP implied = d_constraintDatabase.getBestImpliedBound(v, t, bound);
+    if(implied != NullConstraint){
+      
+      return rowImplicationCanBeApplied(ridx, rowUp, implied);
+    }
+  }
+  return false;
+}
+
+Node flattenImplication(Node imp){
+  NodeBuilder<> nb(kind::OR);
+  Node left = imp[0];
+  Node right = imp[1];
+
+  if(left.getKind() == kind::AND){
+    for(Node::iterator i = left.begin(), iend = left.end(); i != iend; ++i) {
+      nb << (*i).negate();
+    }
+  }else{
+    nb << left.negate();
+  }
+
+  if(right.getKind() == kind::OR){
+    for(Node::iterator i = right.begin(), iend = right.end(); i != iend; ++i) {
+      nb << *i;
+    }
+  }else{
+    nb << right;
+  }
+
+  return nb;
+}
+
+bool TheoryArithPrivate::rowImplicationCanBeApplied(RowIndex ridx, bool rowUp, ConstraintP implied){
+  Assert(implied != NullConstraint);
+  ArithVar v = implied->getVariable();
+
+  bool assertedToTheTheory = implied->assertedToTheTheory();
+  bool canBePropagated = implied->canBePropagated();
+  bool hasProof = implied->hasProof();
+
+  Debug("arith::prop") << "arith::prop" << v
+                       << " " << assertedToTheTheory
+                       << " " << canBePropagated
+                       << " " << hasProof
+                       << endl;
+
+
+  if( !assertedToTheTheory && canBePropagated && !hasProof ){
+    ConstraintCPVec explain;
+
+    PROOF(d_farkasBuffer.clear());
+    RationalVectorP coeffs = NULLPROOF(&d_farkasBuffer);
+ 
+    d_linEq.propagateRow(explain, ridx, rowUp, implied, coeffs);
+    if(d_tableau.getRowLength(ridx) <= options::arithPropAsLemmaLength()){
+      Node implication = implied->externalImplication(explain);
+      Node clause = flattenImplication(implication);
+      outputLemma(clause);
+    }else{
+      Assert(!implied->negationHasProof());
+      implied->impliedByFarkas(explain, coeffs, false);
+      implied->tryToPropagate();
+    }
+    return true;
+  }
+
+  if(Debug.isOn("arith::prop")){
+    Debug("arith::prop")
+      << "failed " << v << " " << assertedToTheTheory << " "
+      << canBePropagated << " " << hasProof << " " << implied << endl;
+    d_partialModel.printModel(v, Debug("arith::prop"));
+  }
+  return false;
+}
+
+double fRand(double fMin, double fMax)
+{
+  double f = (double)rand() / RAND_MAX;
+  return fMin + f * (fMax - fMin);
+}
+
+bool TheoryArithPrivate::propagateCandidateRow(RowIndex ridx){
+  BoundCounts hasCount = d_linEq.hasBoundCount(ridx);
+  uint32_t rowLength = d_tableau.getRowLength(ridx);
+
+  bool success = false;
+  static int instance = 0;
+  ++instance;
+
+  Debug("arith::prop")
+    << "propagateCandidateRow " << instance << " attempt " << rowLength << " " <<  hasCount << endl;
+
+  if(rowLength >= options::arithPropagateMaxLength()){
+    if(fRand(0.0,1.0) >= double(options::arithPropagateMaxLength())/rowLength){
+      return false;
+    }
+  }
+
+  if(hasCount.lowerBoundCount() == rowLength){
+    success |= attemptFull(ridx, false);
+  }else if(hasCount.lowerBoundCount() + 1 == rowLength){
+    success |= attemptSingleton(ridx, false);
+  }
+
+  if(hasCount.upperBoundCount() == rowLength){
+    success |= attemptFull(ridx, true);
+  }else if(hasCount.upperBoundCount() + 1 == rowLength){
+    success |= attemptSingleton(ridx, true);
+  }
+  return success;
+}
+
+void TheoryArithPrivate::dumpUpdatedBoundsToRows(){
+  Assert(d_candidateRows.empty());
+  DenseSet::const_iterator i = d_updatedBounds.begin();
+  DenseSet::const_iterator end = d_updatedBounds.end();
+  for(; i != end; ++i){
+    ArithVar var = *i;
+    if(d_tableau.isBasic(var)){
+      RowIndex ridx = d_tableau.basicToRowIndex(var);
+      d_candidateRows.softAdd(ridx);
+    }else{
+      Tableau::ColIterator basicIter = d_tableau.colIterator(var);
+      for(; !basicIter.atEnd(); ++basicIter){
+        const Tableau::Entry& entry = *basicIter;
+        RowIndex ridx = entry.getRowIndex();
+        d_candidateRows.softAdd(ridx);
+      }
+    }
+  }
+  d_updatedBounds.purge();
+}
+
+const BoundsInfo& TheoryArithPrivate::boundsInfo(ArithVar basic) const{
+  RowIndex ridx = d_tableau.basicToRowIndex(basic);
+  return d_rowTracking[ridx];
+}
+
+
+Node TheoryArithPrivate::expandDefinition(LogicRequest &logicRequest, Node node) {
+  NodeManager* nm = NodeManager::currentNM();
+
+  switch(node.getKind()) {
+  case kind::DIVISION: {
+    // partial function: division
+    if(d_divByZero.isNull()) {
+      d_divByZero = nm->mkSkolem("divByZero", nm->mkFunctionType(nm->realType(), nm->realType()),
+                                 "partial real division", NodeManager::SKOLEM_EXACT_NAME);
+      logicRequest.widenLogic(THEORY_UF);
+    }
+    TNode num = node[0], den = node[1];
+    Node den_eq_0 = nm->mkNode(kind::EQUAL, den, nm->mkConst(Rational(0)));
+    Node divByZeroNum = nm->mkNode(kind::APPLY_UF, d_divByZero, num);
+    Node divTotalNumDen = nm->mkNode(kind::DIVISION_TOTAL, num, den);
+    return nm->mkNode(kind::ITE, den_eq_0, divByZeroNum, divTotalNumDen);
+    break;
+  }
+
+  case kind::INTS_DIVISION: {
+    // partial function: integer div
+    if(d_intDivByZero.isNull()) {
+      d_intDivByZero = nm->mkSkolem("intDivByZero", nm->mkFunctionType(nm->integerType(), nm->integerType()),
+                                    "partial integer division", NodeManager::SKOLEM_EXACT_NAME);
+      logicRequest.widenLogic(THEORY_UF);
+    }
+    TNode num = node[0], den = node[1];
+    Node den_eq_0 = nm->mkNode(kind::EQUAL, den, nm->mkConst(Rational(0)));
+    Node intDivByZeroNum = nm->mkNode(kind::APPLY_UF, d_intDivByZero, num);
+    Node intDivTotalNumDen = nm->mkNode(kind::INTS_DIVISION_TOTAL, num, den);
+    return nm->mkNode(kind::ITE, den_eq_0, intDivByZeroNum, intDivTotalNumDen);
+    break;
+  }
+
+  case kind::INTS_MODULUS: {
+    // partial function: mod
+    if(d_modZero.isNull()) {
+      d_modZero = nm->mkSkolem("modZero", nm->mkFunctionType(nm->integerType(), nm->integerType()),
+                               "partial modulus", NodeManager::SKOLEM_EXACT_NAME);
+      logicRequest.widenLogic(THEORY_UF);
+    }
+    TNode num = node[0], den = node[1];
+    Node den_eq_0 = nm->mkNode(kind::EQUAL, den, nm->mkConst(Rational(0)));
+    Node modZeroNum = nm->mkNode(kind::APPLY_UF, d_modZero, num);
+    Node modTotalNumDen = nm->mkNode(kind::INTS_MODULUS_TOTAL, num, den);
+    return nm->mkNode(kind::ITE, den_eq_0, modZeroNum, modTotalNumDen);
+    break;
+  }
+
+  case kind::ABS: {
+    return nm->mkNode(kind::ITE, nm->mkNode(kind::LT, node[0], nm->mkConst(Rational(0))), nm->mkNode(kind::UMINUS, node[0]), node[0]);
+    break;
+  }
+
+  default:
+    return node;
+    break;
+  }
+
+  Unreachable();
+}
+
+
+
+
+// InferBoundsResult TheoryArithPrivate::inferBound(TNode term, const InferBoundsParameters& param){
+//   Node t = Rewriter::rewrite(term);
+//   Assert(Polynomial::isMember(t));
+//   Polynomial p = Polynomial::parsePolynomial(t);
+//   if(p.containsConstant()){
+//     Constant c = p.getHead().getConstant();
+//     if(p.isConstant()){
+//       InferBoundsResult res(t, param.findLowerBound());
+//       res.setBound((DeltaRational)c.getValue(), mkBoolNode(true));
+//       return res;
+//     }else{
+//       Polynomial tail = p.getTail();
+//       InferBoundsResult res = inferBound(tail.getNode(), param);
+//       if(res.foundBound()){
+//         DeltaRational newBound = res.getValue() + c.getValue();
+//         if(tail.isIntegral()){
+//           Integer asInt  = (param.findLowerBound()) ? newBound.ceiling() : newBound.floor();
+//           newBound = DeltaRational(asInt);
+//         }
+//         res.setBound(newBound, res.getExplanation());
+//       }
+//       return res;
+//     }
+//   }else if(param.findLowerBound()){
+//     InferBoundsParameters find_ub = param;
+//     find_ub.setFindUpperBound();
+//     if(param.useThreshold()){
+//       find_ub.setThreshold(- param.getThreshold() );
+//     }
+//     Polynomial negP = -p;
+//     InferBoundsResult res = inferBound(negP.getNode(), find_ub);
+//     res.setFindLowerBound();
+//     if(res.foundBound()){
+//       res.setTerm(p.getNode());
+//       res.setBound(-res.getValue(), res.getExplanation());
+//     }
+//     return res;
+//   }else{
+//     Assert(param.findUpperBound());
+//     // does not contain a constant
+//     switch(param.getEffort()){
+//     case InferBoundsParameters::Lookup:
+//       return inferUpperBoundLookup(t, param);
+//     case InferBoundsParameters::Simplex:
+//       return inferUpperBoundSimplex(t, param);
+//     case InferBoundsParameters::LookupAndSimplexOnFailure:
+//     case InferBoundsParameters::TryBoth:
+//       {
+//         InferBoundsResult lookup = inferUpperBoundLookup(t, param);
+//         if(lookup.foundBound()){
+//           if(param.getEffort() == InferBoundsParameters::LookupAndSimplexOnFailure ||
+//              lookup.boundIsOptimal()){
+//             return lookup;
+//           }
+//         }
+//         InferBoundsResult simplex = inferUpperBoundSimplex(t, param);
+//         if(lookup.foundBound() && simplex.foundBound()){
+//           return (lookup.getValue() <= simplex.getValue()) ? lookup : simplex;
+//         }else if(lookup.foundBound()){
+//           return lookup;
+//         }else{
+//           return simplex;
+//         }
+//       }
+//     default:
+//       Unreachable();
+//       return InferBoundsResult();
+//     }
+//   }
+// }
+
+
+std::pair<bool, Node> TheoryArithPrivate::entailmentCheck(TNode lit, const ArithEntailmentCheckParameters& params, ArithEntailmentCheckSideEffects& out){
+  using namespace inferbounds;
+
+  // l k r
+  // diff : (l - r) k 0
+  Debug("arith::entailCheck") << "TheoryArithPrivate::entailmentCheck(" << lit << ")"<< endl;
+  Kind k;
+  int primDir;
+  Rational lm, rm, dm;
+  Node lp, rp, dp;
+  DeltaRational sep;
+  bool successful = decomposeLiteral(lit, k, primDir, lm, lp, rm, rp, dm, dp, sep);
+  if(!successful) { return make_pair(false, Node::null()); }
+
+  if(dp.getKind() == CONST_RATIONAL){
+    Node eval = Rewriter::rewrite(lit);
+    Assert(eval.getKind() == kind::CONST_BOOLEAN);
+    // if true, true is an acceptable explaination
+    // if false, the node is uninterpreted and eval can be forgotten
+    return make_pair(eval.getConst<bool>(), eval);
+  }
+  Assert(dm != Rational(0));
+  Assert(primDir == 1 || primDir == -1);
+
+  int negPrim = -primDir;
+
+  int secDir = (k == EQUAL || k == DISTINCT) ? negPrim: 0;
+  int negSecDir = (k == EQUAL || k == DISTINCT) ? primDir: 0;
+
+  // primDir*[lm*( lp )] k primDir*[ [rm*( rp )] + sep ]
+  // primDir*[lm*( lp ) - rm*( rp ) ] k primDir*sep
+  // primDir*[dm * dp] k primDir*sep
+
+  std::pair<Node, DeltaRational> bestPrimLeft, bestNegPrimRight, bestPrimDiff, tmp;
+  std::pair<Node, DeltaRational> bestSecLeft, bestNegSecRight, bestSecDiff;
+  bestPrimLeft.first = Node::null(); bestNegPrimRight.first = Node::null(); bestPrimDiff.first = Node::null();
+  bestSecLeft.first = Node::null(); bestNegSecRight.first = Node::null(); bestSecDiff.first = Node::null();
+
+
+
+  ArithEntailmentCheckParameters::const_iterator alg, alg_end;
+  for( alg = params.begin(), alg_end = params.end(); alg != alg_end; ++alg ){
+    const inferbounds::InferBoundAlgorithm& ibalg = *alg;
+
+    Debug("arith::entailCheck") << "entailmentCheck trying " << (inferbounds::Algorithms) ibalg.getAlgorithm() << endl;
+    switch(ibalg.getAlgorithm()){
+    case inferbounds::None:
+      break;
+    case inferbounds::Lookup:
+    case inferbounds::RowSum:
+      {
+        typedef void (TheoryArithPrivate::*EntailmentCheckFunc)(std::pair<Node, DeltaRational>&, int, TNode) const;
+
+        EntailmentCheckFunc ecfunc =
+          (ibalg.getAlgorithm() == inferbounds::Lookup)
+          ? (&TheoryArithPrivate::entailmentCheckBoundLookup)
+          : (&TheoryArithPrivate::entailmentCheckRowSum);
+
+        (*this.*ecfunc)(tmp, primDir * lm.sgn(), lp);
+        setToMin(primDir * lm.sgn(), bestPrimLeft, tmp);
+
+        (*this.*ecfunc)(tmp, negPrim * rm.sgn(), rp);
+        setToMin(negPrim * rm.sgn(), bestNegPrimRight, tmp);
+
+        (*this.*ecfunc)(tmp, secDir * lm.sgn(), lp);
+        setToMin(secDir * lm.sgn(), bestSecLeft, tmp);
+
+        (*this.*ecfunc)(tmp, negSecDir * rm.sgn(), rp);
+        setToMin(negSecDir * rm.sgn(), bestNegSecRight, tmp);
+
+        (*this.*ecfunc)(tmp, primDir * dm.sgn(), dp);
+        setToMin(primDir * dm.sgn(), bestPrimDiff, tmp);
+
+        (*this.*ecfunc)(tmp, secDir * dm.sgn(), dp);
+        setToMin(secDir * dm.sgn(), bestSecDiff, tmp);
+      }
+      break;
+    case inferbounds::Simplex:
+      {
+        // primDir * diffm * diff < c or primDir * diffm * diff > c
+        tmp = entailmentCheckSimplex(primDir * dm.sgn(), dp, ibalg, out.getSimplexSideEffects());
+        setToMin(primDir * dm.sgn(), bestPrimDiff, tmp);
+
+        tmp = entailmentCheckSimplex(secDir * dm.sgn(), dp, ibalg, out.getSimplexSideEffects());
+        setToMin(secDir * dm.sgn(), bestSecDiff, tmp);
+      }
+      break;
+    default:
+      Unhandled();
+    }
+
+    // turn bounds on prim * left and -prim * right into bounds on prim * diff
+    if(!bestPrimLeft.first.isNull() && !bestNegPrimRight.first.isNull()){
+      //  primDir*lm* lp <= primDir*lm*L
+      // -primDir*rm* rp <= -primDir*rm*R
+      // primDir*lm* lp -primDir*rm* rp <=  primDir*lm*L - primDir*rm*R
+      // primDir [lm* lp -rm* rp] <= primDir[lm*L - *rm*R]
+      // primDir [dm * dp] <= primDir[lm*L - *rm*R]
+      // primDir [dm * dp] <= primDir * dm * ([lm*L - *rm*R]/dm)
+      tmp.second = ((bestPrimLeft.second * lm) - (bestNegPrimRight.second * rm)) / dm;
+      tmp.first = (bestPrimLeft.first).andNode(bestNegPrimRight.first);
+      setToMin(primDir, bestPrimDiff, tmp);
+    }
+
+    // turn bounds on sec * left and sec * right into bounds on sec * diff
+    if(secDir != 0 && !bestSecLeft.first.isNull() && !bestNegSecRight.first.isNull()){
+      //  secDir*lm* lp <= secDir*lm*L
+      // -secDir*rm* rp <= -secDir*rm*R
+      // secDir*lm* lp -secDir*rm* rp <=  secDir*lm*L - secDir*rm*R
+      // secDir [lm* lp -rm* rp] <= secDir[lm*L - *rm*R]
+      // secDir [dm * dp] <= secDir[lm*L - *rm*R]
+      // secDir [dm * dp] <= secDir * dm * ([lm*L - *rm*R]/dm)
+      tmp.second = ((bestSecLeft.second * lm) - (bestNegSecRight.second * rm)) / dm;
+      tmp.first = (bestSecLeft.first).andNode(bestNegSecRight.first);
+      setToMin(secDir, bestSecDiff, tmp);
+    }
+
+    switch(k){
+    case LEQ:
+      if(!bestPrimDiff.first.isNull()){
+        DeltaRational d = (bestPrimDiff.second * dm);
+        if((primDir > 0 && d <= sep) || (primDir < 0 && d >= sep) ){
+          Debug("arith::entailCheck") << "entailmentCheck found "
+                                      << primDir << "*" << dm << "*(" << dp<<")"
+                                      << " <= " << primDir << "*" << dm << "*" << bestPrimDiff.second
+                                      << " <= " << primDir << "*" << sep << endl
+                                      << " by " << bestPrimDiff.first << endl;
+          Assert(bestPrimDiff.second * (Rational(primDir)* dm) <=  (sep * Rational(primDir)));
+          return make_pair(true, bestPrimDiff.first);
+        }
+      }
+      break;
+    case EQUAL:
+      if(!bestPrimDiff.first.isNull() && !bestSecDiff.first.isNull()){
+        // Is primDir [dm * dp] == primDir * sep entailed?
+        // Iff [dm * dp] == sep entailed?
+        // Iff dp == sep / dm entailed?
+        // Iff dp <= sep / dm and dp >= sep / dm entailed?
+
+        // primDir [dm * dp] <= primDir * dm * U
+        // secDir [dm * dp] <= secDir * dm * L
+
+        // Suppose primDir * dm > 0
+        // then secDir * dm < 0
+        //   dp >= (secDir * L) / secDir * dm
+        //   dp >= (primDir * L) / primDir * dm
+        //
+        //   dp <= U / dm
+        //   dp >= L / dm
+        //   dp == sep / dm entailed iff U == L == sep
+        // Suppose primDir * dm < 0
+        // then secDir * dm > 0
+        //   dp >= U / dm
+        //   dp <= L / dm
+        //   dp == sep / dm entailed iff U == L == sep
+        if(bestPrimDiff.second == bestSecDiff.second){
+          if(bestPrimDiff.second == sep){
+            return make_pair(true, (bestPrimDiff.first).andNode(bestSecDiff.first));
+          }
+        }
+      }
+      // intentionally fall through to DISTINCT case!
+      // entailments of negations are eager exit cases for EQUAL
+    case DISTINCT:
+      if(!bestPrimDiff.first.isNull()){
+        // primDir [dm * dp] <= primDir * dm * U < primDir * sep
+        if((primDir > 0 && (bestPrimDiff.second * dm  < sep)) ||
+           (primDir < 0 && (bestPrimDiff.second * dm  > sep))){
+          // entailment of negation
+          if(k == DISTINCT){
+            return make_pair(true, bestPrimDiff.first);
+          }else{
+            Assert(k == EQUAL);
+            return make_pair(false, Node::null());
+          }
+        }
+      }
+      if(!bestSecDiff.first.isNull()){
+        // If primDir [dm * dp] > primDir * sep, then this is not entailed.
+        // If primDir [dm * dp] >= primDir * dm * L > primDir * sep
+        // -primDir * dm * L < -primDir * sep
+        // secDir * dm * L < secDir * sep
+        if((secDir > 0 && (bestSecDiff.second * dm < sep)) ||
+           (secDir < 0 && (bestSecDiff.second * dm > sep))){
+          if(k == DISTINCT){
+            return make_pair(true, bestSecDiff.first);
+          }else{
+            Assert(k == EQUAL);
+            return make_pair(false, Node::null());
+          }
+        }
+      }
+
+      break;
+    default:
+      Unreachable();
+      break;
+    }
+  }
+  return make_pair(false, Node::null());
+}
+
+bool TheoryArithPrivate::decomposeTerm(Node term, Rational& m, Node& p, Rational& c){
+  Node t = Rewriter::rewrite(term);
+  if(!Polynomial::isMember(t)){
+    return false;
+  }
+
+  // TODO Speed up
+  ContainsTermITEVisitor ctv;
+  if(ctv.containsTermITE(t)){
+    return false;
+  }
+
+  Polynomial poly = Polynomial::parsePolynomial(t);
+  if(poly.isConstant()){
+    c = poly.getHead().getConstant().getValue();
+    p = mkRationalNode(Rational(0));
+    m = Rational(1);
+    return true;
+  }else if(poly.containsConstant()){
+    c = poly.getHead().getConstant().getValue();
+    poly = poly.getTail();
+  }else{
+    c = Rational(0);
+  }
+  Assert(!poly.isConstant());
+  Assert(!poly.containsConstant());
+
+  const bool intVars = poly.allIntegralVariables();
+
+  if(intVars){
+    m = Rational(1);
+    if(!poly.isIntegral()){
+      Integer denom = poly.denominatorLCM();
+      m /= denom;
+      poly = poly * denom;
+    }
+    Integer g = poly.gcd();
+    m *= g;
+    poly = poly * Rational(1,g);
+    Assert(poly.isIntegral());
+    Assert(poly.leadingCoefficientIsPositive());
+  }else{
+    Assert(!intVars);
+    m = poly.getHead().getConstant().getValue();
+    poly = poly * m.inverse();
+    Assert(poly.leadingCoefficientIsAbsOne());
+  }
+  p = poly.getNode();
+  return true;
+}
+
+void TheoryArithPrivate::setToMin(int sgn, std::pair<Node, DeltaRational>& min, const std::pair<Node, DeltaRational>& e){
+  if(sgn != 0){
+    if(min.first.isNull() && !e.first.isNull()){
+      min = e;
+    }else if(!min.first.isNull() && !e.first.isNull()){
+      if(sgn > 0 && min.second > e.second){
+        min = e;
+      }else if(sgn < 0 &&  min.second < e.second){
+        min = e;
+      }
+    }
+  }
+}
+
+// std::pair<bool, Node> TheoryArithPrivate::entailmentUpperCheck(const Rational& lm, Node lp, const Rational& rm, Node rp, const DeltaRational& sep, const ArithEntailmentCheckParameters& params, ArithEntailmentCheckSideEffects& out){
+
+//   Rational negRM = -rm;
+//   Node diff = NodeManager::currentNM()->mkNode(MULT, mkRationalConstan(lm), lp) + (negRM * rp);
+
+//   Rational diffm;
+//   Node diffp;
+//   decompose(diff, diffm, diffNode);
+
+
+//   std::pair<Node, DeltaRational> bestUbLeft, bestLbRight, bestUbDiff, tmp;
+//   bestUbLeft = bestLbRight = bestUbDiff = make_pair(Node::Null(), DeltaRational());
+
+//   return make_pair(false, Node::null());
+// }
+
+/**
+ * Decomposes a literal into the form:
+ *   dir*[lm*( lp )] k dir*[ [rm*( rp )] + sep ]
+ *   dir*[dm* dp]  k dir *sep
+ *   dir is either 1 or -1
+ */
+bool TheoryArithPrivate::decomposeLiteral(Node lit, Kind& k, int& dir, Rational& lm,  Node& lp, Rational& rm, Node& rp, Rational& dm, Node& dp, DeltaRational& sep){
+  bool negated = (lit.getKind() == kind::NOT);
+  TNode atom = negated ? lit[0] : lit;
+
+  TNode left = atom[0];
+  TNode right = atom[1];
+
+  // left : lm*( lp ) + lc
+  // right: rm*( rp ) + rc
+  Rational lc, rc;
+  bool success = decomposeTerm(left, lm, lp, lc);
+  if(!success){ return false; }
+  success = decomposeTerm(right, rm, rp, rc);
+  if(!success){ return false; }
+
+  Node diff = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::MINUS, left, right));
+  Rational dc;
+  success = decomposeTerm(diff, dm, dp, dc);
+  Assert(success);
+
+  // reduce the kind of the to not include literals
+  // GT, NOT LEQ
+  // GEQ, NOT LT
+  // LT, NOT GEQ
+  // LEQ, NOT LT
+  Kind atomKind = atom.getKind();
+  Kind normKind = negated ? negateKind(atomKind) : atomKind;
+
+  if(normKind == GEQ || normKind == GT){
+    dir = -1;
+    normKind = (normKind == GEQ) ? LEQ : LT;
+  }else{
+    dir = 1;
+  }
+
+  Debug("arith::decomp") << "arith::decomp "
+                         << lit << "(" << normKind << "*" << dir << ")"<< endl
+                         << "  left:" << lc << " + " << lm << "*(" <<  lp << ") : " <<left << endl
+                         << "  right:" << rc << " + " << rm << "*(" <<  rp << ") : " << right << endl
+                         << "  diff: " << dc << " + " << dm << "*("<< dp <<"): " << diff << endl
+                         << "  sep: " << sep << endl;
+
+
+  // k in LT, LEQ, EQUAL, DISEQUAL
+  // [dir*lm*( lp ) + dir*lc] k [dir*rm*( rp ) + dir*rc]
+  Rational change = rc - lc;
+  Assert(change == (-dc));
+  // [dir*lm*( lp )] k [dir*rm*( rp ) + dir*(rc - lc)]
+  if(normKind == LT){
+    sep = DeltaRational(change, Rational(-1));
+    k = LEQ;
+  }else{
+    sep = DeltaRational(change);
+    k = normKind;
+  }
+  // k in LEQ, EQUAL, DISEQUAL
+  // dir*lm*( lp ) k [dir*rm*( rp )] + dir*(sep + d * delta)
+  return true;
+}
+
+/**
+ *  Precondition:
+ *   tp is a polynomial not containing an ite.
+ *   either tp is constant or contains no constants.
+ *  Post:
+ *    if tmp.first is not null, then
+ *      sgn * tp <= sgn * tmp.second
+ */
+void TheoryArithPrivate::entailmentCheckBoundLookup(std::pair<Node, DeltaRational>& tmp, int sgn, TNode tp) const {
+  tmp.first = Node::null();
+  if(sgn == 0){ return; }
+
+  Assert(Polynomial::isMember(tp));
+  if(tp.getKind() == CONST_RATIONAL){
+    tmp.first = mkBoolNode(true);
+    tmp.second = DeltaRational(tp.getConst<Rational>());
+  }else if(d_partialModel.hasArithVar(tp)){
+    Assert(tp.getKind() != CONST_RATIONAL);
+    ArithVar v = d_partialModel.asArithVar(tp);
+    Assert(v != ARITHVAR_SENTINEL);
+    ConstraintP c = (sgn > 0)
+      ? d_partialModel.getUpperBoundConstraint(v)
+      : d_partialModel.getLowerBoundConstraint(v);
+    if(c != NullConstraint){
+      tmp.first = c->externalExplainByAssertions();
+      tmp.second = c->getValue();
+    }
+  }
+}
+
+void TheoryArithPrivate::entailmentCheckRowSum(std::pair<Node, DeltaRational>& tmp, int sgn, TNode tp) const {
+  tmp.first = Node::null();
+  if(sgn == 0){ return; }
+  if(tp.getKind() != PLUS){ return; }
+  Assert(Polynomial::isMember(tp));
+
+  tmp.second = DeltaRational(0);
+  NodeBuilder<> nb(kind::AND);
+
+  Polynomial p = Polynomial::parsePolynomial(tp);
+  for(Polynomial::iterator i = p.begin(), iend = p.end(); i != iend; ++i) {
+    Monomial m = *i;
+    Node x = m.getVarList().getNode();
+    if(d_partialModel.hasArithVar(x)){
+      ArithVar v = d_partialModel.asArithVar(x);
+      const Rational& coeff = m.getConstant().getValue();
+      int dir = sgn * coeff.sgn();
+      ConstraintP c = (dir > 0)
+        ? d_partialModel.getUpperBoundConstraint(v)
+        : d_partialModel.getLowerBoundConstraint(v);
+      if(c != NullConstraint){
+        tmp.second += c->getValue() * coeff;
+        c->externalExplainByAssertions(nb);
+      }else{
+        //failed
+        return;
+      }
+    }else{
+      // failed
+      return;
+    }
+  }
+  // success
+  tmp.first = nb;
+}
+
+std::pair<Node, DeltaRational> TheoryArithPrivate::entailmentCheckSimplex(int sgn, TNode tp, const inferbounds::InferBoundAlgorithm& param, InferBoundsResult& result){
+
+  if((sgn == 0) || !(d_qflraStatus == Result::SAT && d_errorSet.noSignals()) || tp.getKind() == CONST_RATIONAL){
+    return make_pair(Node::null(), DeltaRational());
+  }
+
+  Assert(d_qflraStatus == Result::SAT);
+  Assert(d_errorSet.noSignals());
+  Assert(param.getAlgorithm() == inferbounds::Simplex);
+
+  // TODO Move me into a new file
+
+  enum ResultState {Unset, Inferred, NoBound, ReachedThreshold, ExhaustedRounds};
+  ResultState finalState = Unset;
+
+  int maxRounds = param.getSimplexRounds().just()
+    ? param.getSimplexRounds().constValue()
+    : -1;
+
+  Maybe<DeltaRational> threshold;
+  // TODO: get this from the parameters
+
+  // setup term
+  Polynomial p = Polynomial::parsePolynomial(tp);
+  vector<ArithVar> variables;
+  vector<Rational> coefficients;
+  asVectors(p, coefficients, variables);
+  if(sgn < 0){
+    for(size_t i=0, N=coefficients.size(); i < N; ++i){
+      coefficients[i] = -coefficients[i];
+    }
+  }
+  // implicitly an upperbound
+  Node skolem = mkRealSkolem("tmpVar$$");
+  ArithVar optVar = requestArithVar(skolem, false, true);
+  d_tableau.addRow(optVar, coefficients, variables);
+  RowIndex ridx = d_tableau.basicToRowIndex(optVar);
+
+  DeltaRational newAssignment = d_linEq.computeRowValue(optVar, false);
+  d_partialModel.setAssignment(optVar, newAssignment);
+  d_linEq.trackRowIndex(d_tableau.basicToRowIndex(optVar));
+
+  // Setup simplex
+  d_partialModel.stopQueueingBoundCounts();
+  UpdateTrackingCallback utcb(&d_linEq);
+  d_partialModel.processBoundsQueue(utcb);
+  d_linEq.startTrackingBoundCounts();
+
+  // maximize optVar via primal Simplex
+  int rounds = 0;
+  while(finalState == Unset){
+    ++rounds;
+    if(maxRounds >= 0 && rounds > maxRounds){
+      finalState = ExhaustedRounds;
+      break;
+    }
+
+    // select entering by bland's rule
+    // TODO improve upon bland's
+    ArithVar entering = ARITHVAR_SENTINEL;
+    const Tableau::Entry* enteringEntry = NULL;
+    for(Tableau::RowIterator ri = d_tableau.ridRowIterator(ridx); !ri.atEnd(); ++ri){
+      const Tableau::Entry& entry = *ri;
+      ArithVar v = entry.getColVar();
+      if(v != optVar){
+        int sgn = entry.getCoefficient().sgn();
+        Assert(sgn != 0);
+        bool candidate = (sgn > 0)
+          ? (d_partialModel.cmpAssignmentUpperBound(v) != 0)
+          : (d_partialModel.cmpAssignmentLowerBound(v) != 0);
+        if(candidate && (entering == ARITHVAR_SENTINEL || entering > v)){
+          entering = v;
+          enteringEntry = &entry;
+        }
+      }
+    }
+    if(entering == ARITHVAR_SENTINEL){
+      finalState = Inferred;
+      break;
+    }
+    Assert(entering != ARITHVAR_SENTINEL);
+    Assert(enteringEntry != NULL);
+
+    int esgn = enteringEntry->getCoefficient().sgn();
+    Assert(esgn != 0);
+
+    // select leaving and ratio
+    ArithVar leaving = ARITHVAR_SENTINEL;
+    DeltaRational minRatio;
+    const Tableau::Entry* pivotEntry = NULL;
+
+    // Special case check the upper/lowerbound on entering
+    ConstraintP cOnEntering = (esgn > 0)
+      ? d_partialModel.getUpperBoundConstraint(entering)
+      : d_partialModel.getLowerBoundConstraint(entering);
+    if(cOnEntering != NullConstraint){
+      leaving = entering;
+      minRatio = d_partialModel.getAssignment(entering) - cOnEntering->getValue();
+    }
+    for(Tableau::ColIterator ci = d_tableau.colIterator(entering); !ci.atEnd(); ++ci){
+      const Tableau::Entry& centry = *ci;
+      ArithVar basic = d_tableau.rowIndexToBasic(centry.getRowIndex());
+      int csgn = centry.getCoefficient().sgn();
+      int basicDir = csgn * esgn;
+
+      ConstraintP bound = (basicDir > 0)
+        ? d_partialModel.getUpperBoundConstraint(basic)
+        : d_partialModel.getLowerBoundConstraint(basic);
+      if(bound != NullConstraint){
+        DeltaRational diff = d_partialModel.getAssignment(basic) - bound->getValue();
+        DeltaRational ratio = diff/(centry.getCoefficient());
+        bool selected = false;
+        if(leaving == ARITHVAR_SENTINEL){
+          selected = true;
+        }else{
+          int cmp = ratio.compare(minRatio);
+          if((csgn > 0) ? (cmp <= 0) : (cmp >= 0)){
+            selected = (cmp != 0) ||
+              ((leaving != entering) && (basic < leaving));
+          }
+        }
+        if(selected){
+          leaving = basic;
+          minRatio = ratio;
+          pivotEntry = ¢ry;
+        }
+      }
+    }
+
+
+    if(leaving == ARITHVAR_SENTINEL){
+      finalState = NoBound;
+      break;
+    }else if(leaving == entering){
+      d_linEq.update(entering, minRatio);
+    }else{
+      DeltaRational newLeaving = minRatio * (pivotEntry->getCoefficient());
+      d_linEq.pivotAndUpdate(leaving, entering, newLeaving);
+      // no conflicts clear signals
+      Assert(d_errorSet.noSignals());
+    }
+
+    if(threshold.just()){
+      if(d_partialModel.getAssignment(optVar) >= threshold.constValue()){
+        finalState = ReachedThreshold;
+        break;
+      }
+    }
+  };
+
+  result = InferBoundsResult(tp, sgn > 0);
+
+  // tear down term
+  switch(finalState){
+  case Inferred:
+    {
+      NodeBuilder<> nb(kind::AND);
+      for(Tableau::RowIterator ri = d_tableau.ridRowIterator(ridx); !ri.atEnd(); ++ri){
+        const Tableau::Entry& e =*ri;
+        ArithVar colVar = e.getColVar();
+        if(colVar != optVar){
+          const Rational& q = e.getCoefficient();
+          Assert(q.sgn() != 0);
+          ConstraintP c = (q.sgn() > 0)
+            ? d_partialModel.getUpperBoundConstraint(colVar)
+            : d_partialModel.getLowerBoundConstraint(colVar);
+          c->externalExplainByAssertions(nb);
+        }
+      }
+      Assert(nb.getNumChildren() >= 1);
+      Node exp = (nb.getNumChildren() >= 2) ? (Node) nb : nb[0];
+      result.setBound(d_partialModel.getAssignment(optVar), exp);
+      result.setIsOptimal();
+      break;
+    }
+  case NoBound:
+    break;
+  case ReachedThreshold:
+    result.setReachedThreshold();
+    break;
+  case ExhaustedRounds:
+    result.setBudgetExhausted();
+    break;
+  case Unset:
+  default:
+    Unreachable();
+    break;
+  };
+
+  d_linEq.stopTrackingRowIndex(ridx);
+  d_tableau.removeBasicRow(optVar);
+  releaseArithVar(optVar);
+
+  d_linEq.stopTrackingBoundCounts();
+  d_partialModel.startQueueingBoundCounts();
+
+  if(result.foundBound()){
+    return make_pair(result.getExplanation(), result.getValue());
+  }else{
+    return make_pair(Node::null(), DeltaRational());
+  }
+}
+
+// InferBoundsResult TheoryArithPrivate::inferUpperBoundSimplex(TNode t, const inferbounds::InferBoundAlgorithm& param){
+//   Assert(param.findUpperBound());
+
+//   if(!(d_qflraStatus == Result::SAT && d_errorSet.noSignals())){
+//     InferBoundsResult inconsistent;
+//     inconsistent.setInconsistent();
+//     return inconsistent;
+//   }
+
+//   Assert(d_qflraStatus == Result::SAT);
+//   Assert(d_errorSet.noSignals());
+
+//   // TODO Move me into a new file
+
+//   enum ResultState {Unset, Inferred, NoBound, ReachedThreshold, ExhaustedRounds};
+//   ResultState finalState = Unset;
+
+//   int maxRounds = 0;
+//   switch(param.getParamKind()){
+//   case InferBoundsParameters::Unbounded:
+//     maxRounds = -1;
+//     break;
+//   case InferBoundsParameters::NumVars:
+//     maxRounds = d_partialModel.getNumberOfVariables() * param.getSimplexRoundParameter();
+//     break;
+//   case InferBoundsParameters::Direct:
+//     maxRounds = param.getSimplexRoundParameter();
+//     break;
+//   default: maxRounds = 0; break;
+//   }
+
+//   // setup term
+//   Polynomial p = Polynomial::parsePolynomial(t);
+//   vector<ArithVar> variables;
+//   vector<Rational> coefficients;
+//   asVectors(p, coefficients, variables);
+
+//   Node skolem = mkRealSkolem("tmpVar$$");
+//   ArithVar optVar = requestArithVar(skolem, false, true);
+//   d_tableau.addRow(optVar, coefficients, variables);
+//   RowIndex ridx = d_tableau.basicToRowIndex(optVar);
+
+//   DeltaRational newAssignment = d_linEq.computeRowValue(optVar, false);
+//   d_partialModel.setAssignment(optVar, newAssignment);
+//   d_linEq.trackRowIndex(d_tableau.basicToRowIndex(optVar));
+
+//   // Setup simplex
+//   d_partialModel.stopQueueingBoundCounts();
+//   UpdateTrackingCallback utcb(&d_linEq);
+//   d_partialModel.processBoundsQueue(utcb);
+//   d_linEq.startTrackingBoundCounts();
+
+//   // maximize optVar via primal Simplex
+//   int rounds = 0;
+//   while(finalState == Unset){
+//     ++rounds;
+//     if(maxRounds >= 0 && rounds > maxRounds){
+//       finalState = ExhaustedRounds;
+//       break;
+//     }
+
+//     // select entering by bland's rule
+//     // TODO improve upon bland's
+//     ArithVar entering = ARITHVAR_SENTINEL;
+//     const Tableau::Entry* enteringEntry = NULL;
+//     for(Tableau::RowIterator ri = d_tableau.ridRowIterator(ridx); !ri.atEnd(); ++ri){
+//       const Tableau::Entry& entry = *ri;
+//       ArithVar v = entry.getColVar();
+//       if(v != optVar){
+//         int sgn = entry.getCoefficient().sgn();
+//         Assert(sgn != 0);
+//         bool candidate = (sgn > 0)
+//           ? (d_partialModel.cmpAssignmentUpperBound(v) != 0)
+//           : (d_partialModel.cmpAssignmentLowerBound(v) != 0);
+//         if(candidate && (entering == ARITHVAR_SENTINEL || entering > v)){
+//           entering = v;
+//           enteringEntry = &entry;
+//         }
+//       }
+//     }
+//     if(entering == ARITHVAR_SENTINEL){
+//       finalState = Inferred;
+//       break;
+//     }
+//     Assert(entering != ARITHVAR_SENTINEL);
+//     Assert(enteringEntry != NULL);
+
+//     int esgn = enteringEntry->getCoefficient().sgn();
+//     Assert(esgn != 0);
+
+//     // select leaving and ratio
+//     ArithVar leaving = ARITHVAR_SENTINEL;
+//     DeltaRational minRatio;
+//     const Tableau::Entry* pivotEntry = NULL;
+
+//     // Special case check the upper/lowerbound on entering
+//     ConstraintP cOnEntering = (esgn > 0)
+//       ? d_partialModel.getUpperBoundConstraint(entering)
+//       : d_partialModel.getLowerBoundConstraint(entering);
+//     if(cOnEntering != NullConstraint){
+//       leaving = entering;
+//       minRatio = d_partialModel.getAssignment(entering) - cOnEntering->getValue();
+//     }
+//     for(Tableau::ColIterator ci = d_tableau.colIterator(entering); !ci.atEnd(); ++ci){
+//       const Tableau::Entry& centry = *ci;
+//       ArithVar basic = d_tableau.rowIndexToBasic(centry.getRowIndex());
+//       int csgn = centry.getCoefficient().sgn();
+//       int basicDir = csgn * esgn;
+
+//       ConstraintP bound = (basicDir > 0)
+//         ? d_partialModel.getUpperBoundConstraint(basic)
+//         : d_partialModel.getLowerBoundConstraint(basic);
+//       if(bound != NullConstraint){
+//         DeltaRational diff = d_partialModel.getAssignment(basic) - bound->getValue();
+//         DeltaRational ratio = diff/(centry.getCoefficient());
+//         bool selected = false;
+//         if(leaving == ARITHVAR_SENTINEL){
+//           selected = true;
+//         }else{
+//           int cmp = ratio.compare(minRatio);
+//           if((csgn > 0) ? (cmp <= 0) : (cmp >= 0)){
+//             selected = (cmp != 0) ||
+//               ((leaving != entering) && (basic < leaving));
+//           }
+//         }
+//         if(selected){
+//           leaving = basic;
+//           minRatio = ratio;
+//           pivotEntry = ¢ry;
+//         }
+//       }
+//     }
+
+
+//     if(leaving == ARITHVAR_SENTINEL){
+//       finalState = NoBound;
+//       break;
+//     }else if(leaving == entering){
+//       d_linEq.update(entering, minRatio);
+//     }else{
+//       DeltaRational newLeaving = minRatio * (pivotEntry->getCoefficient());
+//       d_linEq.pivotAndUpdate(leaving, entering, newLeaving);
+//       // no conflicts clear signals
+//       Assert(d_errorSet.noSignals());
+//     }
+
+//     if(param.useThreshold()){
+//       if(d_partialModel.getAssignment(optVar) >= param.getThreshold()){
+//         finalState = ReachedThreshold;
+//         break;
+//       }
+//     }
+//   };
+
+//   InferBoundsResult result(t, param.findUpperBound());
+
+//   // tear down term
+//   switch(finalState){
+//   case Inferred:
+//     {
+//       NodeBuilder<> nb(kind::AND);
+//       for(Tableau::RowIterator ri = d_tableau.ridRowIterator(ridx); !ri.atEnd(); ++ri){
+//         const Tableau::Entry& e =*ri;
+//         ArithVar colVar = e.getColVar();
+//         if(colVar != optVar){
+//           const Rational& q = e.getCoefficient();
+//           Assert(q.sgn() != 0);
+//           ConstraintP c = (q.sgn() > 0)
+//             ? d_partialModel.getUpperBoundConstraint(colVar)
+//             : d_partialModel.getLowerBoundConstraint(colVar);
+//           c->externalExplainByAssertions(nb);
+//         }
+//       }
+//       Assert(nb.getNumChildren() >= 1);
+//       Node exp = (nb.getNumChildren() >= 2) ? (Node) nb : nb[0];
+//       result.setBound(d_partialModel.getAssignment(optVar), exp);
+//       result.setIsOptimal();
+//       break;
+//     }
+//   case NoBound:
+//     break;
+//   case ReachedThreshold:
+//     result.setReachedThreshold();
+//     break;
+//   case ExhaustedRounds:
+//     result.setBudgetExhausted();
+//     break;
+//   case Unset:
+//   default:
+//     Unreachable();
+//     break;
+//   };
+
+//   d_linEq.stopTrackingRowIndex(ridx);
+//   d_tableau.removeBasicRow(optVar);
+//   releaseArithVar(optVar);
+
+//   d_linEq.stopTrackingBoundCounts();
+//   d_partialModel.startQueueingBoundCounts();
+
+//   return result;
+// }
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/theory_arith_private.h b/src/theory/arith/theory_arith_private.h
new file mode 100644
index 0000000..ed7efe0
--- /dev/null
+++ b/src/theory/arith/theory_arith_private.h
@@ -0,0 +1,851 @@
+/*********************                                                        */
+/*! \file theory_arith_private.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Martin Brain, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#pragma once
+
+#include <map>
+#include <queue>
+#include <stdint.h>
+#include <vector>
+
+#include "context/cdhashset.h"
+#include "context/cdinsert_hashmap.h"
+#include "context/cdlist.h"
+#include "context/cdqueue.h"
+#include "context/context.h"
+#include "expr/kind.h"
+#include "expr/metakind.h"
+#include "expr/node.h"
+#include "expr/node_builder.h"
+#include "options/arith_options.h"
+#include "smt/logic_exception.h"
+#include "smt_util/boolean_simplification.h"
+#include "theory/arith/arith_rewriter.h"
+#include "theory/arith/arith_rewriter.h"
+#include "theory/arith/arith_static_learner.h"
+#include "theory/arith/arith_utilities.h"
+#include "theory/arith/arithvar.h"
+#include "theory/arith/attempt_solution_simplex.h"
+#include "theory/arith/congruence_manager.h"
+#include "theory/arith/constraint.h"
+#include "theory/arith/constraint.h"
+#include "theory/arith/delta_rational.h"
+#include "theory/arith/delta_rational.h"
+#include "theory/arith/dio_solver.h"
+#include "theory/arith/dual_simplex.h"
+#include "theory/arith/fc_simplex.h"
+#include "theory/arith/infer_bounds.h"
+#include "theory/arith/linear_equality.h"
+#include "theory/arith/matrix.h"
+#include "theory/arith/matrix.h"
+#include "theory/arith/normal_form.h"
+#include "theory/arith/partial_model.h"
+#include "theory/arith/partial_model.h"
+#include "theory/arith/simplex.h"
+#include "theory/arith/soi_simplex.h"
+#include "theory/arith/theory_arith.h"
+#include "theory/arith/theory_arith_private_forward.h"
+#include "theory/rewriter.h"
+#include "theory/theory_model.h"
+#include "theory/valuation.h"
+#include "util/dense_map.h"
+#include "util/integer.h"
+#include "util/rational.h"
+#include "util/result.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+class BranchCutInfo;
+class TreeLog;
+class ApproximateStatistics;
+
+class ArithEntailmentCheckParameters;
+class ArithEntailmentCheckSideEffects;
+namespace inferbounds {
+  class InferBoundAlgorithm;
+}
+class InferBoundsResult;
+
+/**
+ * Implementation of QF_LRA.
+ * Based upon:
+ * http://research.microsoft.com/en-us/um/people/leonardo/cav06.pdf
+ */
+class TheoryArithPrivate {
+private:
+
+  static const uint32_t RESET_START = 2;
+
+  TheoryArith& d_containing;
+
+  bool d_nlIncomplete;
+  // TODO A better would be:
+  //context::CDO<bool> d_nlIncomplete;
+
+  BoundInfoMap d_rowTracking;
+
+  /**
+   * The constraint database associated with the theory.
+   * This must be declared before ArithPartialModel.
+   */
+  ConstraintDatabase d_constraintDatabase;
+
+  enum Result::Sat d_qflraStatus;
+  // check()
+  //   !done() -> d_qflraStatus = Unknown
+  //   fullEffort(e) -> simplex returns either sat or unsat
+  //   !fullEffort(e) -> simplex returns either sat, unsat or unknown
+  //                     if unknown, save the assignment
+  //                     if unknown, the simplex priority queue cannot be emptied
+  int d_unknownsInARow;
+
+  bool d_replayedLemmas;
+
+  /**
+   * This counter is false if nothing has been done since the last cut.
+   * This is used to break an infinite loop.
+   */
+  bool d_hasDoneWorkSinceCut;
+
+  /** Static learner. */
+  ArithStaticLearner d_learner;
+
+  /** quantifiers engine */
+  QuantifiersEngine * d_quantEngine;
+  //std::vector<ArithVar> d_pool;
+public:
+  void releaseArithVar(ArithVar v);
+  void signal(ArithVar v){ d_errorSet.signalVariable(v); }
+
+
+private:
+  // t does not contain constants
+  void entailmentCheckBoundLookup(std::pair<Node, DeltaRational>& tmp, int sgn, TNode tp) const;
+  void entailmentCheckRowSum(std::pair<Node, DeltaRational>& tmp, int sgn, TNode tp) const;
+
+  std::pair<Node, DeltaRational> entailmentCheckSimplex(int sgn, TNode tp, const inferbounds::InferBoundAlgorithm& p, InferBoundsResult& out);
+
+  //InferBoundsResult inferBound(TNode term, const InferBoundsParameters& p);
+  //InferBoundsResult inferUpperBoundLookup(TNode t, const InferBoundsParameters& p);
+  //InferBoundsResult inferUpperBoundSimplex(TNode t, const SimplexInferBoundsParameters& p);
+
+  /**
+   * Infers either a new upper/lower bound on term in the real relaxation.
+   * Either:
+   * - term is malformed (see below)
+   * - a maximum/minimum is found with the result being a pair
+   * -- <dr, exp> where
+   * -- term <?> dr is implies by exp
+   * -- <?> is <= if inferring an upper bound, >= otherwise
+   * -- exp is in terms of the assertions to the theory.
+   * - No upper or lower bound is inferrable in the real relaxation.
+   * -- Returns <0, Null()>
+   * - the maximum number of rounds was exhausted:
+   * -- Returns <v, term> where v is the current feasible value of term
+   * - Threshold reached:
+   * -- If theshold != NULL, and a feasible value is found to exceed threshold
+   * -- Simplex stops and returns <threshold, term>
+   */
+  //std::pair<DeltaRational, Node> inferBound(TNode term, bool lb, int maxRounds = -1, const DeltaRational* threshold = NULL);
+
+private:
+  static bool decomposeTerm(Node term, Rational& m, Node& p, Rational& c);
+  static bool decomposeLiteral(Node lit, Kind& k, int& dir, Rational& lm,  Node& lp, Rational& rm, Node& rp, Rational& dm, Node& dp, DeltaRational& sep);
+  static void setToMin(int sgn, std::pair<Node, DeltaRational>& min, const std::pair<Node, DeltaRational>& e);
+
+  /**
+   * The map between arith variables to nodes.
+   */
+  //ArithVarNodeMap d_arithvarNodeMap;
+
+  typedef ArithVariables::var_iterator var_iterator;
+  var_iterator var_begin() const { return d_partialModel.var_begin(); }
+  var_iterator var_end() const { return d_partialModel.var_end(); }
+
+  NodeSet d_setupNodes;
+public:
+  bool isSetup(Node n) const {
+    return d_setupNodes.find(n) != d_setupNodes.end();
+  }
+  void markSetup(Node n){
+    Assert(!isSetup(n));
+    d_setupNodes.insert(n);
+  }
+private:
+
+  void setupDivLike(const Variable& x);
+
+  void setupVariable(const Variable& x);
+  void setupVariableList(const VarList& vl);
+  void setupPolynomial(const Polynomial& poly);
+public:
+  void setupAtom(TNode atom);
+private:
+  void cautiousSetupPolynomial(const Polynomial& p);
+
+  /**
+   * 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::CDInsertHashMap<Node, ConstraintP, NodeHashFunction> d_assertionsThatDoNotMatchTheirLiterals;
+
+
+  /** Returns true if x is of type Integer. */
+  inline bool isInteger(ArithVar x) const {
+    return d_partialModel.isInteger(x);
+  }
+
+
+  /** Returns true if the variable was initially introduced as an auxiliary variable. */
+  inline bool isAuxiliaryVariable(ArithVar x) const{
+    return d_partialModel.isAuxiliary(x);
+  }
+
+  inline bool isIntegerInput(ArithVar x) const {
+    return d_partialModel.isIntegerInput(x);
+  }
+
+  /**
+   * On full effort checks (after determining LA(Q) satisfiability), we
+   * consider integer vars, but we make sure to do so fairly to avoid
+   * nontermination (although this isn't a guarantee).  To do it fairly,
+   * we consider variables in round-robin fashion.  This is the
+   * round-robin index.
+   */
+  ArithVar d_nextIntegerCheckVar;
+
+  /**
+   * Queue of Integer variables that are known to be equal to a constant.
+   */
+  context::CDQueue<ArithVar> d_constantIntegerVariables;
+
+  Node callDioSolver();
+  Node dioCutting();
+
+  Comparison mkIntegerEqualityFromAssignment(ArithVar v);
+
+  /**
+   * List of all of the disequalities asserted in the current context that are not known
+   * to be satisfied.
+   */
+  context::CDQueue<ConstraintP> d_diseqQueue;
+
+  /**
+   * Constraints that have yet to be processed by proagation work list.
+   * All of the elements have type of LowerBound, UpperBound, or
+   * Equality.
+   *
+   * This is empty at the beginning of every check call.
+   *
+   * If head()->getType() == LowerBound or UpperBound,
+   * then d_cPL[1] is the previous constraint in d_partialModel for the
+   * corresponding bound.
+   * If head()->getType() == Equality,
+   * then d_cPL[1] is the previous lowerBound in d_partialModel,
+   * and d_cPL[2] is the previous upperBound in d_partialModel.
+   */
+  std::deque<ConstraintP> d_currentPropagationList;
+
+  context::CDQueue<ConstraintP> d_learnedBounds;
+
+
+  /**
+   * Manages information about the assignment and upper and lower bounds on
+   * variables.
+   */
+  ArithVariables d_partialModel;
+
+  /** The set of variables in error in the partial model. */
+  ErrorSet d_errorSet;
+
+  /**
+   * The tableau for all of the constraints seen thus far in the system.
+   */
+  Tableau d_tableau;
+
+  /**
+   * Maintains the relationship between the PartialModel and the Tableau.
+   */
+  LinearEqualityModule d_linEq;
+
+  /**
+   * A Diophantine equation solver.  Accesses the tableau and partial
+   * model (each in a read-only fashion).
+   */
+  DioSolver d_diosolver;
+
+  /** Counts the number of notifyRestart() calls to the theory. */
+  uint32_t d_restartsCounter;
+
+  /**
+   * Every number of restarts equal to s_TABLEAU_RESET_PERIOD,
+   * the density of the tableau, d, is computed.
+   * If d >= s_TABLEAU_RESET_DENSITY * d_initialDensity, the tableau
+   * is set to d_initialTableau.
+   */
+  bool d_tableauSizeHasBeenModified;
+  double d_tableauResetDensity;
+  uint32_t d_tableauResetPeriod;
+  static const uint32_t s_TABLEAU_RESET_INCREMENT = 5;
+
+
+  /** This is only used by simplex at the moment. */
+  context::CDList<ConstraintCP> d_conflicts;
+
+  /** This is only used by simplex at the moment. */
+  context::CDO<Node> d_blackBoxConflict;
+public:
+
+  /**
+   * This adds the constraint a to the queue of conflicts in d_conflicts.
+   * Both a and ~a must have a proof.
+   */
+  void raiseConflict(ConstraintCP a);
+
+  // inline void raiseConflict(const ConstraintCPVec& cv){
+  //   d_conflicts.push_back(cv);
+  // }
+  
+  // void raiseConflict(ConstraintCP a, ConstraintCP b);
+  // void raiseConflict(ConstraintCP a, ConstraintCP b, ConstraintCP c);
+
+  /** This is a conflict that is magically known to hold. */
+  void raiseBlackBoxConflict(Node bb);
+
+private:
+
+  inline bool conflictQueueEmpty() const {
+    return d_conflicts.empty();
+  }
+
+  /** Returns true iff a conflict has been raised. */
+  inline bool anyConflict() const {
+    return !conflictQueueEmpty() || !d_blackBoxConflict.get().isNull();
+  }
+
+  /**
+   * Outputs the contents of d_conflicts onto d_out.
+   * The conditions of anyConflict() must hold.
+   */
+  void outputConflicts();
+
+  /**
+   * A copy of the tableau.
+   * This is equivalent  to the original tableau if d_tableauSizeHasBeenModified
+   * is false.
+   * The set of basic and non-basic variables may differ from d_tableau.
+   */
+  Tableau d_smallTableauCopy;
+
+  /**
+   * Returns true if all of the basic variables in the simplex queue of
+   * basic variables that violate their bounds in the current tableau
+   * are basic in d_smallTableauCopy.
+   *
+   * d_tableauSizeHasBeenModified must be false when calling this.
+   * Simplex's priority queue must be in collection mode.
+   */
+  bool safeToReset() const;
+
+  /** This keeps track of difference equalities. Mostly for sharing. */
+  ArithCongruenceManager d_congruenceManager;
+  context::CDO<bool> d_cmEnabled;
+
+  /** This implements the Simplex decision procedure. */
+  DualSimplexDecisionProcedure d_dualSimplex;
+  FCSimplexDecisionProcedure d_fcSimplex;
+  SumOfInfeasibilitiesSPD d_soiSimplex;
+  AttemptSolutionSDP d_attemptSolSimplex;
+
+  bool solveRealRelaxation(Theory::Effort effortLevel);
+
+  /* Returns true if this is heuristically a good time to try
+   * to solve the integers.
+   */
+  bool attemptSolveInteger(Theory::Effort effortLevel, bool emmmittedLemmaOrSplit);
+  bool replayLemmas(ApproximateSimplex* approx);
+  void solveInteger(Theory::Effort effortLevel);
+  bool safeToCallApprox() const;
+  SimplexDecisionProcedure& selectSimplex(bool pass1);
+  SimplexDecisionProcedure* d_pass1SDP;
+  SimplexDecisionProcedure* d_otherSDP;
+  /* Sets d_qflraStatus */
+  void importSolution(const ApproximateSimplex::Solution& solution);
+  bool solveRelaxationOrPanic(Theory::Effort effortLevel);
+  context::CDO<int> d_lastContextIntegerAttempted;
+  bool replayLog(ApproximateSimplex* approx);
+
+  class ModelException : public Exception {
+  public:
+    ModelException(TNode n, const char* msg) throw ();
+    virtual ~ModelException() throw ();
+  };
+
+  /** Internal model value for the node */
+  DeltaRational getDeltaValue(TNode n) const throw (DeltaRationalException, ModelException);
+
+  /** Uninterpretted function symbol for use when interpreting
+   * division by zero.
+   */
+  Node d_realDivideBy0Func;
+  Node d_intDivideBy0Func;
+  Node d_intModulusBy0Func;
+  Node getRealDivideBy0Func();
+  Node getIntDivideBy0Func();
+  Node getIntModulusBy0Func();
+
+  Node definingIteForDivLike(Node divLike);
+  Node axiomIteForTotalDivision(Node div_tot);
+  Node axiomIteForTotalIntDivision(Node int_div_like);
+
+  // handle linear /, div, mod, and also is_int, to_int
+  Node ppRewriteTerms(TNode atom);
+
+public:
+  TheoryArithPrivate(TheoryArith& containing, context::Context* c, context::UserContext* u, OutputChannel& out, Valuation valuation, const LogicInfo& logicInfo);
+  ~TheoryArithPrivate();
+
+  /**
+   * Does non-context dependent setup for a node connected to a theory.
+   */
+  void preRegisterTerm(TNode n);
+  Node expandDefinition(LogicRequest &logicRequest, Node node);
+
+  void setMasterEqualityEngine(eq::EqualityEngine* eq);
+  void setQuantifiersEngine(QuantifiersEngine* qe);
+
+  void check(Theory::Effort e);
+  void propagate(Theory::Effort e);
+  Node explain(TNode n);
+
+
+  Rational deltaValueForTotalOrder() const;
+
+  void collectModelInfo( TheoryModel* m, bool fullModel );
+
+  void shutdown(){ }
+
+  void presolve();
+  void notifyRestart();
+  Theory::PPAssertStatus ppAssert(TNode in, SubstitutionMap& outSubstitutions);
+  Node ppRewrite(TNode atom);
+  void ppStaticLearn(TNode in, NodeBuilder<>& learned);
+
+  std::string identify() const { return std::string("TheoryArith"); }
+
+  EqualityStatus getEqualityStatus(TNode a, TNode b);
+
+  void addSharedTerm(TNode n);
+
+  Node getModelValue(TNode var);
+
+
+  std::pair<bool, Node> entailmentCheck(TNode lit, const ArithEntailmentCheckParameters& params, ArithEntailmentCheckSideEffects& out);
+
+
+private:
+
+  /** The constant zero. */
+  DeltaRational d_DELTA_ZERO;
+
+  /** propagates an arithvar */
+  void propagateArithVar(bool upperbound, ArithVar var );
+
+  /**
+   * Using the simpleKind return the ArithVar associated with the assertion.
+   */
+  ArithVar determineArithVar(const Polynomial& p) const;
+  ArithVar determineArithVar(TNode assertion) const;
+
+  /**
+   * Splits the disequalities in d_diseq that are violated using lemmas on demand.
+   * returns true if any lemmas were issued.
+   * returns false if all disequalities are satisfied in the current model.
+   */
+  bool splitDisequalities();
+
+  /** A Difference variable is known to be 0.*/
+  void zeroDifferenceDetected(ArithVar x);
+
+
+  /**
+   * Looks for the next integer variable without an integer assignment in a
+   * round-robin fashion. Changes the value of d_nextIntegerCheckVar.
+   *
+   * This returns true if all integer variables have integer assignments.
+   * If this returns false, d_nextIntegerCheckVar does not have an integer
+   * assignment.
+   */
+  bool hasIntegerModel();
+
+  /**
+   * Looks for through the variables starting at d_nextIntegerCheckVar
+   * for the first integer variable that is between its upper and lower bounds
+   * that has a non-integer assignment.
+   *
+   * If assumeBounds is true, skip the check that the variable is in bounds.
+   *
+   * If there is no such variable, returns ARITHVAR_SENTINEL;
+   */
+  ArithVar nextIntegerViolatation(bool assumeBounds) const;
+
+  /**
+   * Issues branches for non-auxiliary integer variables with non-integer assignments.
+   * Returns a cut for a lemma.
+   * If there is an integer model, this returns Node::null().
+   */
+  Node roundRobinBranch();
+
+public:
+  /**
+   * This requests a new unique ArithVar value for x.
+   * This also does initial (not context dependent) set up for a variable,
+   * except for setting up the initial.
+   *
+   * If aux is true, this is an auxiliary variable.
+   * If internal is true, x might not be unique up to a constant multiple.
+   */
+  ArithVar requestArithVar(TNode x, bool aux, bool internal);
+
+public:
+  const BoundsInfo& boundsInfo(ArithVar basic) const;
+
+
+private:
+  /** Initial (not context dependent) sets up for a variable.*/
+  void setupBasicValue(ArithVar x);
+
+  /** Initial (not context dependent) sets up for a new auxiliary variable.*/
+  void setupAuxiliary(TNode left);
+
+
+  /**
+   * Assert*(n, orig) takes an bound n that is implied by orig.
+   * and asserts that as a new bound if it is tighter than the current bound
+   * and updates the value of a basic variable if needed.
+   *
+   * orig must be a literal in the SAT solver so that it can be used for
+   * conflict analysis.
+   *
+   * x is the variable getting the new bound,
+   * c is the value of the new bound.
+   *
+   * If this new bound is in conflict with the other bound,
+   * a node describing this conflict is returned.
+   * If this new bound is not in conflict, Node::null() is returned.
+   */
+  bool AssertLower(ConstraintP constraint);
+  bool AssertUpper(ConstraintP constraint);
+  bool AssertEquality(ConstraintP constraint);
+  bool AssertDisequality(ConstraintP constraint);
+
+  /** Tracks the bounds that were updated in the current round. */
+  DenseSet d_updatedBounds;
+
+  /** Tracks the basic variables where propagation might be possible. */
+  DenseSet d_candidateBasics;
+  DenseSet d_candidateRows;
+
+  bool hasAnyUpdates() { return !d_updatedBounds.empty(); }
+  void clearUpdates();
+
+  void revertOutOfConflict();
+
+  void propagateCandidatesNew();
+  void dumpUpdatedBoundsToRows();
+  bool propagateCandidateRow(RowIndex rid);
+  bool propagateMightSucceed(ArithVar v, bool ub) const;
+  /** Attempt to perform a row propagation where there is at most 1 possible variable.*/
+  bool attemptSingleton(RowIndex ridx, bool rowUp);
+  /** Attempt to perform a row propagation where every variable is a potential candidate.*/
+  bool attemptFull(RowIndex ridx, bool rowUp);
+  bool tryToPropagate(RowIndex ridx, bool rowUp, ArithVar v, bool vUp, const DeltaRational& bound);
+  bool rowImplicationCanBeApplied(RowIndex ridx, bool rowUp, ConstraintP bestImplied);
+  //void enqueueConstraints(std::vector<ConstraintCP>& out, Node n) const;
+  //ConstraintCPVec resolveOutPropagated(const ConstraintCPVec& v, const std::set<ConstraintCP>& propagated) const;
+  void resolveOutPropagated(std::vector<ConstraintCPVec>& confs, const std::set<ConstraintCP>& propagated) const;
+  void subsumption(std::vector<ConstraintCPVec>& confs) const;
+
+  Node cutToLiteral(ApproximateSimplex*  approx, const CutInfo& cut) const;
+  Node branchToNode(ApproximateSimplex*  approx, const NodeLog& cut) const throw(RationalFromDoubleException);
+
+
+  void propagateCandidates();
+  void propagateCandidate(ArithVar basic);
+  bool propagateCandidateBound(ArithVar basic, bool upperBound);
+
+  inline bool propagateCandidateLowerBound(ArithVar basic){
+    return propagateCandidateBound(basic, false);
+  }
+  inline bool propagateCandidateUpperBound(ArithVar basic){
+    return propagateCandidateBound(basic, true);
+  }
+
+  /**
+   * Performs a check to see if it is definitely true that setup can be avoided.
+   */
+  bool canSafelyAvoidEqualitySetup(TNode equality);
+
+  /**
+   * Handles the case splitting for check() for a new assertion.
+   * Returns a conflict if one was found.
+   * Returns Node::null if no conflict was found.
+   */
+  ConstraintP constraintFromFactQueue();
+  bool assertionCases(ConstraintP c);
+
+  /**
+   * Returns the basic variable with the shorted row containing a non-basic variable.
+   * If no such row exists, return ARITHVAR_SENTINEL.
+   */
+  ArithVar findShortestBasicRow(ArithVar variable);
+
+  /**
+   * Debugging only routine!
+   * Returns true iff every variable is consistent in the partial model.
+   */
+  bool entireStateIsConsistent(const std::string& locationHint);
+  bool unenqueuedVariablesAreConsistent();
+
+  bool isImpliedUpperBound(ArithVar var, Node exp);
+  bool isImpliedLowerBound(ArithVar var, Node exp);
+
+  void internalExplain(TNode n, NodeBuilder<>& explainBuilder);
+
+
+  void asVectors(const Polynomial& p,
+                 std::vector<Rational>& coeffs,
+                 std::vector<ArithVar>& variables);
+
+  /** Routine for debugging. Print the assertions the theory is aware of. */
+  void debugPrintAssertions(std::ostream& out) const;
+  /** Debugging only routine. Prints the model. */
+  void debugPrintModel(std::ostream& out) const;
+
+  inline LogicInfo getLogicInfo() const { return d_containing.getLogicInfo(); }
+  inline bool done() const { return d_containing.done(); }
+  inline TNode get() { return d_containing.get(); }
+  inline bool isLeaf(TNode x) const { return d_containing.isLeaf(x); }
+  inline TheoryId theoryOf(TNode x) const { return d_containing.theoryOf(x); }
+  inline void debugPrintFacts() const { d_containing.debugPrintFacts(); }
+  inline context::Context* getSatContext() const { return d_containing.getSatContext(); }
+  inline void setIncomplete() {
+    (d_containing.d_out)->setIncomplete();
+    d_nlIncomplete = true;
+  }
+  void outputLemma(TNode lem);
+  inline void outputPropagate(TNode lit) { (d_containing.d_out)->propagate(lit); }
+  inline void outputRestart() { (d_containing.d_out)->demandRestart(); }
+
+  inline bool isSatLiteral(TNode l) const {
+    return (d_containing.d_valuation).isSatLiteral(l);
+  }
+  inline Node getSatValue(TNode n) const {
+    return (d_containing.d_valuation).getSatValue(n);
+  }
+
+  context::CDQueue<Node> d_approxCuts;
+  std::vector<Node> d_acTmp;
+
+  /** Counts the number of fullCheck calls to arithmetic. */
+  uint32_t d_fullCheckCounter;
+  std::vector<ArithVar> cutAllBounded() const;
+  Node branchIntegerVariable(ArithVar x) const;
+  void branchVector(const std::vector<ArithVar>& lemmas);
+
+  context::CDO<unsigned> d_cutCount;
+  context::CDHashSet<ArithVar, std::hash<ArithVar> > d_cutInContext;
+
+  context::CDO<bool> d_likelyIntegerInfeasible;
+
+
+  context::CDO<bool> d_guessedCoeffSet;
+  ArithRatPairVec d_guessedCoeffs;
+
+
+  TreeLog* d_treeLog;
+  TreeLog& getTreeLog();
+
+
+  ArithVarVec d_replayVariables;
+  std::vector<ConstraintP> d_replayConstraints;
+  DenseMap<Rational> d_lhsTmp;
+
+  /* Approximate simpplex solvers are given a copy of their stats */
+  ApproximateStatistics* d_approxStats;
+  ApproximateStatistics& getApproxStats();
+  context::CDO<int32_t> d_attemptSolveIntTurnedOff;
+  void turnOffApproxFor(int32_t rounds);
+  bool getSolveIntegerResource();
+
+  void tryBranchCut(ApproximateSimplex* approx, int nid, BranchCutInfo& bl);
+  std::vector<ConstraintCPVec> replayLogRec(ApproximateSimplex* approx, int nid, ConstraintP bc, int depth);
+
+  std::pair<ConstraintP, ArithVar> replayGetConstraint(const CutInfo& info);
+  std::pair<ConstraintP, ArithVar> replayGetConstraint(ApproximateSimplex* approx, const NodeLog& nl) throw(RationalFromDoubleException);
+  std::pair<ConstraintP, ArithVar> replayGetConstraint(const DenseMap<Rational>& lhs, Kind k, const Rational& rhs, bool branch);
+
+  void replayAssert(ConstraintP c);
+
+  static ConstraintCP vectorToIntHoleConflict(const ConstraintCPVec& conflict);
+  static void intHoleConflictToVector(ConstraintCP conflicting, ConstraintCPVec& conflict);
+  
+  // Returns true if the node contains a literal
+  // that is an arithmetic literal and is not a sat literal
+  // No caching is done so this should likely only
+  // be called carefully!
+  bool hasFreshArithLiteral(Node n) const;
+
+  int32_t d_dioSolveResources;
+  bool getDioCuttingResource();
+
+  uint32_t d_solveIntMaybeHelp, d_solveIntAttempts;
+
+  RationalVector d_farkasBuffer;
+
+  /** These fields are designed to be accessible to TheoryArith methods. */
+  class Statistics {
+  public:
+    IntStat d_statAssertUpperConflicts, d_statAssertLowerConflicts;
+
+    IntStat d_statUserVariables, d_statAuxiliaryVariables;
+    IntStat d_statDisequalitySplits;
+    IntStat d_statDisequalityConflicts;
+    TimerStat d_simplifyTimer;
+    TimerStat d_staticLearningTimer;
+
+    TimerStat d_presolveTime;
+
+    TimerStat d_newPropTime;
+
+    IntStat d_externalBranchAndBounds;
+
+    IntStat d_initialTableauSize;
+    IntStat d_currSetToSmaller;
+    IntStat d_smallerSetToCurr;
+    TimerStat d_restartTimer;
+
+    TimerStat d_boundComputationTime;
+    IntStat d_boundComputations, d_boundPropagations;
+
+    IntStat d_unknownChecks;
+    IntStat d_maxUnknownsInARow;
+    AverageStat d_avgUnknownsInARow;
+
+    IntStat d_revertsOnConflicts;
+    IntStat d_commitsOnConflicts;
+    IntStat d_nontrivialSatChecks;
+
+    IntStat d_replayLogRecCount,
+      d_replayLogRecConflictEscalation,
+      d_replayLogRecEarlyExit,
+      d_replayBranchCloseFailures,
+      d_replayLeafCloseFailures,
+      d_replayBranchSkips,
+      d_mirCutsAttempted,
+      d_gmiCutsAttempted,
+      d_branchCutsAttempted,
+      d_cutsReconstructed,
+      d_cutsReconstructionFailed,
+      d_cutsProven,
+      d_cutsProofFailed,
+      d_mipReplayLemmaCalls,
+      d_mipExternalCuts,
+      d_mipExternalBranch;
+
+    IntStat d_inSolveInteger,
+      d_branchesExhausted,
+      d_execExhausted,
+      d_pivotsExhausted,
+      d_panicBranches,
+      d_relaxCalls,
+      d_relaxLinFeas,
+      d_relaxLinFeasFailures,
+      d_relaxLinInfeas,
+      d_relaxLinInfeasFailures,
+      d_relaxLinExhausted,
+      d_relaxOthers;
+
+    IntStat d_applyRowsDeleted;
+    TimerStat d_replaySimplexTimer;
+
+    TimerStat d_replayLogTimer,
+      d_solveIntTimer,
+      d_solveRealRelaxTimer;
+
+    IntStat d_solveIntCalls,
+      d_solveStandardEffort;
+
+    IntStat d_approxDisabled;
+    IntStat d_replayAttemptFailed;
+
+    IntStat d_cutsRejectedDuringReplay;
+    IntStat d_cutsRejectedDuringLemmas;
+
+    HistogramStat<uint32_t> d_satPivots;
+    HistogramStat<uint32_t> d_unsatPivots;
+    HistogramStat<uint32_t> d_unknownPivots;
+
+
+    IntStat d_solveIntModelsAttempts;
+    IntStat d_solveIntModelsSuccessful;
+    TimerStat d_mipTimer;
+    TimerStat d_lpTimer;
+
+    IntStat d_mipProofsAttempted;
+    IntStat d_mipProofsSuccessful;
+
+    IntStat d_numBranchesFailed;
+
+
+
+    Statistics();
+    ~Statistics();
+  };
+
+
+  Statistics d_statistics;
+
+
+  /**
+   * Function symbol used to implement uninterpreted division-by-zero
+   * semantics.  Needed to deal with partial division function ("/").
+   */
+  Node d_divByZero;
+
+  /**
+   * Function symbol used to implement uninterpreted
+   * int-division-by-zero semantics.  Needed to deal with partial
+   * function "div".
+   */
+  Node d_intDivByZero;
+
+  /**
+   * Function symbol used to implement uninterpreted mod-zero
+   * semantics.  Needed to deal with partial function "mod".
+   */
+  Node d_modZero;
+
+
+};/* class TheoryArithPrivate */
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/theory_arith_private_forward.h b/src/theory/arith/theory_arith_private_forward.h
new file mode 100644
index 0000000..ffab816
--- /dev/null
+++ b/src/theory/arith/theory_arith_private_forward.h
@@ -0,0 +1,31 @@
+/*********************                                                        */
+/*! \file theory_arith_private_forward.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+
+#include "cvc4_private.h"
+
+#pragma once
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+class TheoryArithPrivate;
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arith/theory_arith_type_rules.h b/src/theory/arith/theory_arith_type_rules.h
new file mode 100644
index 0000000..071ec93
--- /dev/null
+++ b/src/theory/arith/theory_arith_type_rules.h
@@ -0,0 +1,172 @@
+/*********************                                                        */
+/*! \file theory_arith_type_rules.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Christopher L. Conway
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add brief comments here ]]
+ **
+ ** [[ Add file-specific comments here ]]
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__ARITH__THEORY_ARITH_TYPE_RULES_H
+#define __CVC4__THEORY__ARITH__THEORY_ARITH_TYPE_RULES_H
+
+#include "util/subrange_bound.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+
+class ArithConstantTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::CONST_RATIONAL);
+    if(n.getConst<Rational>().isIntegral()){
+      return nodeManager->integerType();
+    }else{
+      return nodeManager->realType();
+    }
+  }
+};/* class ArithConstantTypeRule */
+
+class ArithOperatorTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    TypeNode integerType = nodeManager->integerType();
+    TypeNode realType = nodeManager->realType();
+    TNode::iterator child_it = n.begin();
+    TNode::iterator child_it_end = n.end();
+    bool isInteger = true;
+    for(; child_it != child_it_end; ++child_it) {
+      TypeNode childType = (*child_it).getType(check);
+      if (!childType.isInteger()) {
+        isInteger = false;
+        if( !check ) { // if we're not checking, nothing left to do
+          break;
+        }
+      }
+      if( check ) {
+        if(!childType.isReal()) {
+          throw TypeCheckingExceptionPrivate(n, "expecting an arithmetic subterm");
+        }
+      }
+    }
+    switch(Kind k = n.getKind()) {
+      case kind::TO_REAL:
+        return realType;
+      case kind::TO_INTEGER:
+        return integerType;
+      default: {
+        bool isDivision = k == kind::DIVISION || k == kind::DIVISION_TOTAL;
+        return (isInteger && !isDivision ? integerType : realType);
+      }
+    }
+  }
+};/* class ArithOperatorTypeRule */
+
+class IntOperatorTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    TNode::iterator child_it = n.begin();
+    TNode::iterator child_it_end = n.end();
+    if(check) {
+      for(; child_it != child_it_end; ++child_it) {
+        TypeNode childType = (*child_it).getType(check);
+        if (!childType.isInteger()) {
+          throw TypeCheckingExceptionPrivate(n, "expecting an integer subterm");
+        }
+      }
+    }
+    return nodeManager->integerType();
+  }
+};/* class IntOperatorTypeRule */
+
+class ArithPredicateTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TypeNode lhsType = n[0].getType(check);
+      if (!lhsType.isReal()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting an arithmetic term on the left-hand-side");
+      }
+      TypeNode rhsType = n[1].getType(check);
+      if (!rhsType.isReal()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting an arithmetic term on the right-hand-side");
+      }
+    }
+    return nodeManager->booleanType();
+  }
+};/* class ArithPredicateTypeRule */
+
+class ArithUnaryPredicateTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TypeNode t = n[0].getType(check);
+      if (!t.isReal()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting an arithmetic term");
+      }
+    }
+    return nodeManager->booleanType();
+  }
+};/* class ArithUnaryPredicateTypeRule */
+
+class IntUnaryPredicateTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TypeNode t = n[0].getType(check);
+      if (!t.isInteger()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting an integer term");
+      }
+    }
+    return nodeManager->booleanType();
+  }
+};/* class IntUnaryPredicateTypeRule */
+
+class SubrangeProperties {
+public:
+  inline static Cardinality computeCardinality(TypeNode type) {
+    Assert(type.getKind() == kind::SUBRANGE_TYPE);
+
+    const SubrangeBounds& bounds = type.getConst<SubrangeBounds>();
+    if(!bounds.lower.hasBound() || !bounds.upper.hasBound()) {
+      return Cardinality::INTEGERS;
+    }
+    return Cardinality(bounds.upper.getBound() - bounds.lower.getBound());
+  }
+
+  inline static Node mkGroundTerm(TypeNode type) {
+    Assert(type.getKind() == kind::SUBRANGE_TYPE);
+
+    const SubrangeBounds& bounds = type.getConst<SubrangeBounds>();
+    if(bounds.lower.hasBound()) {
+      return NodeManager::currentNM()->mkConst(Rational(bounds.lower.getBound()));
+    }
+    if(bounds.upper.hasBound()) {
+      return NodeManager::currentNM()->mkConst(Rational(bounds.upper.getBound()));
+    }
+    return NodeManager::currentNM()->mkConst(Rational(0));
+  }
+};/* class SubrangeProperties */
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__ARITH__THEORY_ARITH_TYPE_RULES_H */
diff --git a/src/theory/arith/type_enumerator.h b/src/theory/arith/type_enumerator.h
new file mode 100644
index 0000000..36b7b54
--- /dev/null
+++ b/src/theory/arith/type_enumerator.h
@@ -0,0 +1,164 @@
+/*********************                                                        */
+/*! \file type_enumerator.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Enumerators for rationals and integers
+ **
+ ** Enumerators for rationals and integers.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__ARITH__TYPE_ENUMERATOR_H
+#define __CVC4__THEORY__ARITH__TYPE_ENUMERATOR_H
+
+#include "expr/kind.h"
+#include "expr/type_node.h"
+#include "theory/type_enumerator.h"
+#include "util/integer.h"
+#include "util/rational.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+class RationalEnumerator : public TypeEnumeratorBase<RationalEnumerator> {
+  Rational d_rat;
+
+public:
+
+  RationalEnumerator(TypeNode type, TypeEnumeratorProperties * tep = NULL) throw(AssertionException) :
+    TypeEnumeratorBase<RationalEnumerator>(type),
+    d_rat(0) {
+    Assert(type.getKind() == kind::TYPE_CONSTANT &&
+           type.getConst<TypeConstant>() == REAL_TYPE);
+  }
+
+  Node operator*() throw() {
+    return NodeManager::currentNM()->mkConst(d_rat);
+  }
+
+  RationalEnumerator& operator++() throw() {
+    // sequence is 0, then diagonal with negatives interleaved
+    // ( 0, 1/1, -1/1, 2/1, -2/1, 1/2, -1/2, 3/1, -3/1, 1/3, -1/3,
+    // 4/1, -4/1, 3/2, -3/2, 2/3, -2/3, 1/4, -1/4, ...)
+    if(d_rat == 0) {
+      d_rat = 1;
+    } else if(d_rat < 0) {
+      d_rat = -d_rat;
+      Integer num = d_rat.getNumerator();
+      Integer den = d_rat.getDenominator();
+      do {
+        num -= 1;
+        den += 1;
+        if(num == 0) {
+          num = den;
+          den = 1;
+        }
+        d_rat = Rational(num, den);
+      } while(d_rat.getNumerator() != num);
+    } else {
+      d_rat = -d_rat;
+    }
+    return *this;
+  }
+
+  bool isFinished() throw() {
+    return false;
+  }
+
+};/* class RationalEnumerator */
+
+class IntegerEnumerator : public TypeEnumeratorBase<IntegerEnumerator> {
+  Integer d_int;
+
+public:
+
+  IntegerEnumerator(TypeNode type, TypeEnumeratorProperties * tep = NULL) throw(AssertionException) :
+    TypeEnumeratorBase<IntegerEnumerator>(type),
+    d_int(0) {
+    Assert(type.getKind() == kind::TYPE_CONSTANT &&
+           type.getConst<TypeConstant>() == INTEGER_TYPE);
+  }
+
+  Node operator*() throw() {
+    return NodeManager::currentNM()->mkConst(Rational(d_int));
+  }
+
+  IntegerEnumerator& operator++() throw() {
+    // sequence is 0, 1, -1, 2, -2, 3, -3, ...
+    if(d_int <= 0) {
+      d_int = -d_int + 1;
+    } else {
+      d_int = -d_int;
+    }
+    return *this;
+  }
+
+  bool isFinished() throw() {
+    return false;
+  }
+
+};/* class IntegerEnumerator */
+
+class SubrangeEnumerator : public TypeEnumeratorBase<SubrangeEnumerator> {
+  Integer d_int;
+  SubrangeBounds d_bounds;
+  bool d_direction;// true == +, false == -
+
+public:
+
+  SubrangeEnumerator(TypeNode type, TypeEnumeratorProperties * tep = NULL) throw(AssertionException) :
+    TypeEnumeratorBase<SubrangeEnumerator>(type),
+    d_int(0),
+    d_bounds(type.getConst<SubrangeBounds>()),
+    d_direction(d_bounds.lower.hasBound()) {
+
+    d_int = d_direction ? d_bounds.lower.getBound() : d_bounds.upper.getBound();
+
+    Assert(type.getKind() == kind::SUBRANGE_TYPE);
+
+    // if we're counting down, there's no lower bound
+    Assert(d_direction || !d_bounds.lower.hasBound());
+  }
+
+  Node operator*() throw(NoMoreValuesException) {
+    if(isFinished()) {
+      throw NoMoreValuesException(getType());
+    }
+    return NodeManager::currentNM()->mkConst(Rational(d_int));
+  }
+
+  SubrangeEnumerator& operator++() throw() {
+    if(d_direction) {
+      if(!d_bounds.upper.hasBound() || d_int <= d_bounds.upper.getBound()) {
+        d_int += 1;
+      }
+    } else {
+      // if we're counting down, there's no lower bound
+      d_int -= 1;
+    }
+    return *this;
+  }
+
+  bool isFinished() throw() {
+    // if we're counting down, there's no lower bound
+    return d_direction &&
+      d_bounds.upper.hasBound() &&
+      d_int > d_bounds.upper.getBound();
+  }
+
+};/* class SubrangeEnumerator */
+
+}/* CVC4::theory::arith namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__ARITH__TYPE_ENUMERATOR_H */
diff --git a/src/theory/arrays/array_info.cpp b/src/theory/arrays/array_info.cpp
new file mode 100644
index 0000000..c63d528
--- /dev/null
+++ b/src/theory/arrays/array_info.cpp
@@ -0,0 +1,517 @@
+/*********************                                                        */
+/*! \file array_info.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Clark Barrett, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains additional classes to store context dependent information
+ ** for each term of type array
+ **
+ **
+ **/
+
+#include "theory/arrays/array_info.h"
+
+#include "smt/smt_statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arrays {
+
+Info::Info(context::Context* c, Backtracker<TNode>* bck)
+    : isNonLinear(c, false),
+      rIntro1Applied(c, false),
+      modelRep(c,TNode()),
+      constArr(c,TNode()),
+      weakEquivPointer(c,TNode()),
+      weakEquivIndex(c,TNode()),
+      weakEquivSecondary(c,TNode()),
+      weakEquivSecondaryReason(c,TNode())
+{
+  indices = new(true)CTNodeList(c);
+  stores = new(true)CTNodeList(c);
+  in_stores = new(true)CTNodeList(c);
+}
+
+Info::~Info() {
+  indices->deleteSelf();
+  stores->deleteSelf();
+  in_stores->deleteSelf();
+}
+
+ArrayInfo::ArrayInfo(context::Context* c, Backtracker<TNode>* b, std::string statisticsPrefix)
+    : ct(c), bck(b), info_map(),
+      d_mergeInfoTimer(statisticsPrefix + "theory::arrays::mergeInfoTimer"),
+      d_avgIndexListLength(statisticsPrefix + "theory::arrays::avgIndexListLength"),
+      d_avgStoresListLength(statisticsPrefix + "theory::arrays::avgStoresListLength"),
+      d_avgInStoresListLength(statisticsPrefix + "theory::arrays::avgInStoresListLength"),
+      d_listsCount(statisticsPrefix + "theory::arrays::listsCount",0),
+      d_callsMergeInfo(statisticsPrefix + "theory::arrays::callsMergeInfo",0),
+      d_maxList(statisticsPrefix + "theory::arrays::maxList",0),
+      d_tableSize(statisticsPrefix + "theory::arrays::infoTableSize", info_map) {
+  emptyList = new(true) CTNodeList(ct);
+  emptyInfo = new Info(ct, bck);
+  smtStatisticsRegistry()->registerStat(&d_mergeInfoTimer);
+  smtStatisticsRegistry()->registerStat(&d_avgIndexListLength);
+  smtStatisticsRegistry()->registerStat(&d_avgStoresListLength);
+  smtStatisticsRegistry()->registerStat(&d_avgInStoresListLength);
+  smtStatisticsRegistry()->registerStat(&d_listsCount);
+  smtStatisticsRegistry()->registerStat(&d_callsMergeInfo);
+  smtStatisticsRegistry()->registerStat(&d_maxList);
+  smtStatisticsRegistry()->registerStat(&d_tableSize);
+}
+
+ArrayInfo::~ArrayInfo() {
+  CNodeInfoMap::iterator it = info_map.begin();
+  for( ; it != info_map.end(); it++ ) {
+    if((*it).second!= emptyInfo) {
+      delete (*it).second;
+    }
+  }
+  emptyList->deleteSelf();
+  delete emptyInfo;
+  smtStatisticsRegistry()->unregisterStat(&d_mergeInfoTimer);
+  smtStatisticsRegistry()->unregisterStat(&d_avgIndexListLength);
+  smtStatisticsRegistry()->unregisterStat(&d_avgStoresListLength);
+  smtStatisticsRegistry()->unregisterStat(&d_avgInStoresListLength);
+  smtStatisticsRegistry()->unregisterStat(&d_listsCount);
+  smtStatisticsRegistry()->unregisterStat(&d_callsMergeInfo);
+  smtStatisticsRegistry()->unregisterStat(&d_maxList);
+  smtStatisticsRegistry()->unregisterStat(&d_tableSize);
+}
+
+bool inList(const CTNodeList* l, const TNode el) {
+  CTNodeList::const_iterator it = l->begin();
+  for ( ; it!= l->end(); it ++) {
+    if(*it == el)
+      return true;
+  }
+  return false;
+}
+
+void printList (CTNodeList* list) {
+  CTNodeList::const_iterator it = list->begin();
+  Trace("arrays-info")<<"   [ ";
+  for(; it != list->end(); it++ ) {
+    Trace("arrays-info")<<(*it)<<" ";
+  }
+  Trace("arrays-info")<<"] \n";
+}
+
+void printList (List<TNode>* list) {
+  List<TNode>::const_iterator it = list->begin();
+  Trace("arrays-info")<<"   [ ";
+  for(; it != list->end(); it++ ) {
+    Trace("arrays-info")<<(*it)<<" ";
+  }
+  Trace("arrays-info")<<"] \n";
+}
+
+void ArrayInfo::mergeLists(CTNodeList* la, const CTNodeList* lb) const{
+  std::set<TNode> temp;
+  CTNodeList::const_iterator it;
+  for(it = la->begin() ; it != la->end(); it++ ) {
+    temp.insert((*it));
+  }
+
+  for(it = lb->begin() ; it!= lb->end(); it++ ) {
+    if(temp.count(*it) == 0) {
+      la->push_back(*it);
+    }
+  }
+}
+
+void ArrayInfo::addIndex(const Node a, const TNode i) {
+  Assert(a.getType().isArray());
+  Assert(!i.getType().isArray()); // temporary for flat arrays
+
+  Trace("arrays-ind")<<"Arrays::addIndex "<<a<<"["<<i<<"]\n";
+  CTNodeList* temp_indices;
+  Info* temp_info;
+
+  CNodeInfoMap::iterator it = info_map.find(a);
+  if(it == info_map.end()) {
+    temp_info = new Info(ct, bck);
+    temp_indices = temp_info->indices;
+    temp_indices->push_back(i);
+    info_map[a] = temp_info;
+  } else {
+    temp_indices = (*it).second->indices;
+    if (! inList(temp_indices, i)) {
+      temp_indices->push_back(i);
+    }
+  }
+  if(Trace.isOn("arrays-ind")) {
+    printList((*(info_map.find(a))).second->indices);
+  }
+
+}
+
+void ArrayInfo::addStore(const Node a, const TNode st){
+  Assert(a.getType().isArray());
+  Assert(st.getKind()== kind::STORE); // temporary for flat arrays
+
+  CTNodeList* temp_store;
+  Info* temp_info;
+
+  CNodeInfoMap::iterator it = info_map.find(a);
+  if(it == info_map.end()) {
+    temp_info = new Info(ct, bck);
+    temp_store = temp_info->stores;
+    temp_store->push_back(st);
+    info_map[a]=temp_info;
+  } else {
+    temp_store = (*it).second->stores;
+    if(! inList(temp_store, st)) {
+      temp_store->push_back(st);
+    }
+  }
+};
+
+
+void ArrayInfo::addInStore(const TNode a, const TNode b){
+  Trace("arrays-addinstore")<<"Arrays::addInStore "<<a<<" ~ "<<b<<"\n";
+  Assert(a.getType().isArray());
+  Assert(b.getType().isArray());
+
+  CTNodeList* temp_inst;
+  Info* temp_info;
+
+  CNodeInfoMap::iterator it = info_map.find(a);
+  if(it == info_map.end()) {
+    temp_info = new Info(ct, bck);
+    temp_inst = temp_info->in_stores;
+    temp_inst->push_back(b);
+    info_map[a] = temp_info;
+  } else {
+    temp_inst = (*it).second->in_stores;
+    if(! inList(temp_inst, b)) {
+      temp_inst->push_back(b);
+    }
+  }
+};
+
+
+void ArrayInfo::setNonLinear(const TNode a) {
+  Assert(a.getType().isArray());
+  Info* temp_info;
+  CNodeInfoMap::iterator it = info_map.find(a);
+  if(it == info_map.end()) {
+    temp_info = new Info(ct, bck);
+    temp_info->isNonLinear = true;
+    info_map[a] = temp_info;
+  } else {
+    (*it).second->isNonLinear = true;
+  }
+
+}
+
+void ArrayInfo::setRIntro1Applied(const TNode a) {
+  Assert(a.getType().isArray());
+  Info* temp_info;
+  CNodeInfoMap::iterator it = info_map.find(a);
+  if(it == info_map.end()) {
+    temp_info = new Info(ct, bck);
+    temp_info->rIntro1Applied = true;
+    info_map[a] = temp_info;
+  } else {
+    (*it).second->rIntro1Applied = true;
+  }
+
+}
+
+void ArrayInfo::setModelRep(const TNode a, const TNode b) {
+  Assert(a.getType().isArray());
+  Info* temp_info;
+  CNodeInfoMap::iterator it = info_map.find(a);
+  if(it == info_map.end()) {
+    temp_info = new Info(ct, bck);
+    temp_info->modelRep = b;
+    info_map[a] = temp_info;
+  } else {
+    (*it).second->modelRep = b;
+  }
+
+}
+
+void ArrayInfo::setConstArr(const TNode a, const TNode constArr) {
+  Assert(a.getType().isArray());
+  Info* temp_info;
+  CNodeInfoMap::iterator it = info_map.find(a);
+  if(it == info_map.end()) {
+    temp_info = new Info(ct, bck);
+    temp_info->constArr = constArr;
+    info_map[a] = temp_info;
+  } else {
+    (*it).second->constArr = constArr;
+  }
+}
+
+void ArrayInfo::setWeakEquivPointer(const TNode a, const TNode pointer) {
+  Assert(a.getType().isArray());
+  Info* temp_info;
+  CNodeInfoMap::iterator it = info_map.find(a);
+  if(it == info_map.end()) {
+    temp_info = new Info(ct, bck);
+    temp_info->weakEquivPointer = pointer;
+    info_map[a] = temp_info;
+  } else {
+    (*it).second->weakEquivPointer = pointer;
+  }
+}
+
+void ArrayInfo::setWeakEquivIndex(const TNode a, const TNode index) {
+  Assert(a.getType().isArray());
+  Info* temp_info;
+  CNodeInfoMap::iterator it = info_map.find(a);
+  if(it == info_map.end()) {
+    temp_info = new Info(ct, bck);
+    temp_info->weakEquivIndex = index;
+    info_map[a] = temp_info;
+  } else {
+    (*it).second->weakEquivIndex = index;
+  }
+}
+
+void ArrayInfo::setWeakEquivSecondary(const TNode a, const TNode secondary) {
+  Assert(a.getType().isArray());
+  Info* temp_info;
+  CNodeInfoMap::iterator it = info_map.find(a);
+  if(it == info_map.end()) {
+    temp_info = new Info(ct, bck);
+    temp_info->weakEquivSecondary = secondary;
+    info_map[a] = temp_info;
+  } else {
+    (*it).second->weakEquivSecondary = secondary;
+  }
+}
+
+void ArrayInfo::setWeakEquivSecondaryReason(const TNode a, const TNode reason) {
+  Assert(a.getType().isArray());
+  Info* temp_info;
+  CNodeInfoMap::iterator it = info_map.find(a);
+  if(it == info_map.end()) {
+    temp_info = new Info(ct, bck);
+    temp_info->weakEquivSecondaryReason = reason;
+    info_map[a] = temp_info;
+  } else {
+    (*it).second->weakEquivSecondaryReason = reason;
+  }
+}
+
+/**
+ * Returns the information associated with TNode a
+ */
+
+const Info* ArrayInfo::getInfo(const TNode a) const{
+  CNodeInfoMap::const_iterator it = info_map.find(a);
+
+  if(it!= info_map.end()) {
+      return (*it).second;
+  }
+  return emptyInfo;
+}
+
+const bool ArrayInfo::isNonLinear(const TNode a) const
+{
+  CNodeInfoMap::const_iterator it = info_map.find(a);
+
+  if(it!= info_map.end()) {
+    return (*it).second->isNonLinear;
+  }
+  return false;
+}
+
+const bool ArrayInfo::rIntro1Applied(const TNode a) const
+{
+  CNodeInfoMap::const_iterator it = info_map.find(a);
+
+  if(it!= info_map.end()) {
+    return (*it).second->rIntro1Applied;
+  }
+  return false;
+}
+
+const TNode ArrayInfo::getModelRep(const TNode a) const
+{
+  CNodeInfoMap::const_iterator it = info_map.find(a);
+
+  if(it!= info_map.end()) {
+    return (*it).second->modelRep;
+  }
+  return TNode();
+}
+
+const TNode ArrayInfo::getConstArr(const TNode a) const
+{
+  CNodeInfoMap::const_iterator it = info_map.find(a);
+
+  if(it!= info_map.end()) {
+    return (*it).second->constArr;
+  }
+  return TNode();
+}
+
+const TNode ArrayInfo::getWeakEquivPointer(const TNode a) const
+{
+  CNodeInfoMap::const_iterator it = info_map.find(a);
+
+  if(it!= info_map.end()) {
+    return (*it).second->weakEquivPointer;
+  }
+  return TNode();
+}
+
+const TNode ArrayInfo::getWeakEquivIndex(const TNode a) const
+{
+  CNodeInfoMap::const_iterator it = info_map.find(a);
+
+  if(it!= info_map.end()) {
+    return (*it).second->weakEquivIndex;
+  }
+  return TNode();
+}
+
+const TNode ArrayInfo::getWeakEquivSecondary(const TNode a) const
+{
+  CNodeInfoMap::const_iterator it = info_map.find(a);
+
+  if(it!= info_map.end()) {
+    return (*it).second->weakEquivSecondary;
+  }
+  return TNode();
+}
+
+const TNode ArrayInfo::getWeakEquivSecondaryReason(const TNode a) const
+{
+  CNodeInfoMap::const_iterator it = info_map.find(a);
+
+  if(it!= info_map.end()) {
+    return (*it).second->weakEquivSecondaryReason;
+  }
+  return TNode();
+}
+
+const CTNodeList* ArrayInfo::getIndices(const TNode a) const{
+  CNodeInfoMap::const_iterator it = info_map.find(a);
+  if(it!= info_map.end()) {
+    return (*it).second->indices;
+  }
+  return emptyList;
+}
+
+const CTNodeList* ArrayInfo::getStores(const TNode a) const{
+  CNodeInfoMap::const_iterator it = info_map.find(a);
+  if(it!= info_map.end()) {
+    return (*it).second->stores;
+  }
+  return emptyList;
+}
+
+const CTNodeList* ArrayInfo::getInStores(const TNode a) const{
+  CNodeInfoMap::const_iterator it = info_map.find(a);
+  if(it!= info_map.end()) {
+    return (*it).second->in_stores;
+  }
+  return emptyList;
+}
+
+
+void ArrayInfo::mergeInfo(const TNode a, const TNode b){
+  // can't have assertion that find(b) = a !
+  TimerStat::CodeTimer codeTimer(d_mergeInfoTimer);
+  ++d_callsMergeInfo;
+
+  Trace("arrays-mergei")<<"Arrays::mergeInfo merging "<<a<<"\n";
+  Trace("arrays-mergei")<<"                      and "<<b<<"\n";
+
+  CNodeInfoMap::iterator ita = info_map.find(a);
+  CNodeInfoMap::iterator itb = info_map.find(b);
+
+  if(ita != info_map.end()) {
+    Trace("arrays-mergei")<<"Arrays::mergeInfo info "<<a<<"\n";
+    if(Trace.isOn("arrays-mergei"))
+      (*ita).second->print();
+
+    if(itb != info_map.end()) {
+      Trace("arrays-mergei")<<"Arrays::mergeInfo info "<<b<<"\n";
+      if(Trace.isOn("arrays-mergei"))
+        (*itb).second->print();
+
+      CTNodeList* lista_i = (*ita).second->indices;
+      CTNodeList* lista_st = (*ita).second->stores;
+      CTNodeList* lista_inst = (*ita).second->in_stores;
+
+
+      CTNodeList* listb_i = (*itb).second->indices;
+      CTNodeList* listb_st = (*itb).second->stores;
+      CTNodeList* listb_inst = (*itb).second->in_stores;
+
+      mergeLists(lista_i, listb_i);
+      mergeLists(lista_st, listb_st);
+      mergeLists(lista_inst, listb_inst);
+
+      /* sketchy stats */
+
+      //FIXME
+      int s = 0;//lista_i->size();
+      d_maxList.maxAssign(s);
+
+
+      if(s!= 0) {
+        d_avgIndexListLength.addEntry(s);
+        ++d_listsCount;
+      }
+      s = lista_st->size();
+      d_maxList.maxAssign(s);
+      if(s!= 0) {
+        d_avgStoresListLength.addEntry(s);
+        ++d_listsCount;
+      }
+
+      s = lista_inst->size();
+      d_maxList.maxAssign(s);
+      if(s!=0) {
+        d_avgInStoresListLength.addEntry(s);
+        ++d_listsCount;
+      }
+
+      /* end sketchy stats */
+
+    }
+
+  } else {
+    Trace("arrays-mergei")<<" First element has no info \n";
+    if(itb != info_map.end()) {
+      Trace("arrays-mergei")<<" adding second element's info \n";
+      (*itb).second->print();
+
+      CTNodeList* listb_i = (*itb).second->indices;
+      CTNodeList* listb_st = (*itb).second->stores;
+      CTNodeList* listb_inst = (*itb).second->in_stores;
+
+      Info* temp_info = new Info(ct, bck);
+
+      mergeLists(temp_info->indices, listb_i);
+      mergeLists(temp_info->stores, listb_st);
+      mergeLists(temp_info->in_stores, listb_inst);
+      info_map[a] = temp_info;
+
+    } else {
+    Trace("arrays-mergei")<<" Second element has no info \n";
+    }
+
+   }
+  Trace("arrays-mergei")<<"Arrays::mergeInfo done \n";
+
+}
+
+
+}/* CVC4::theory::arrays namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arrays/array_info.h b/src/theory/arrays/array_info.h
new file mode 100644
index 0000000..11455a9
--- /dev/null
+++ b/src/theory/arrays/array_info.h
@@ -0,0 +1,217 @@
+/*********************                                                        */
+/*! \file array_info.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Clark Barrett, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Contains additional classes to store context dependent information
+ ** for each term of type array
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__ARRAYS__ARRAY_INFO_H
+#define __CVC4__THEORY__ARRAYS__ARRAY_INFO_H
+
+#include <ext/hash_set>
+#include <ext/hash_map>
+#include <iostream>
+#include <map>
+
+#include "context/backtrackable.h"
+#include "context/cdlist.h"
+#include "context/cdhashmap.h"
+#include "expr/node.h"
+#include "util/ntuple.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arrays {
+
+typedef context::CDList<TNode> CTNodeList;
+typedef quad<TNode, TNode, TNode, TNode> RowLemmaType;
+
+struct RowLemmaTypeHashFunction {
+  size_t operator()(const RowLemmaType& q) const {
+    TNode n1 = q.first;
+    TNode n2 = q.second;
+    TNode n3 = q.third;
+    TNode n4 = q.fourth;
+    return (size_t) (n1.getId()*0x9e3779b9 + n2.getId()*0x30000059 +
+        n3.getId()*0x60000005 + n4.getId()*0x07FFFFFF);
+
+  }
+};/* struct RowLemmaTypeHashFunction */
+
+void printList (CTNodeList* list);
+void printList( List<TNode>* list);
+
+bool inList(const CTNodeList* l, const TNode el);
+
+/**
+ * Small class encapsulating the information
+ * in the map. It's a class and not a struct to
+ * call the destructor.
+ */
+
+class Info {
+public:
+  context::CDO<bool> isNonLinear;
+  context::CDO<bool> rIntro1Applied;
+  context::CDO<TNode> modelRep;
+  context::CDO<TNode> constArr;
+  context::CDO<TNode> weakEquivPointer;
+  context::CDO<TNode> weakEquivIndex;
+  context::CDO<TNode> weakEquivSecondary;
+  context::CDO<TNode> weakEquivSecondaryReason;
+  CTNodeList* indices;
+  CTNodeList* stores;
+  CTNodeList* in_stores;
+
+  Info(context::Context* c, Backtracker<TNode>* bck);
+  ~Info();
+
+  /**
+   * prints the information
+   */
+  void print() const {
+    Assert(indices != NULL && stores!= NULL && in_stores != NULL);
+    Trace("arrays-info")<<"  indices   ";
+    printList(indices);
+    Trace("arrays-info")<<"  stores ";
+    printList(stores);
+    Trace("arrays-info")<<"  in_stores ";
+    printList(in_stores);
+  }
+};/* class Info */
+
+
+typedef __gnu_cxx::hash_map<Node, Info*, NodeHashFunction> CNodeInfoMap;
+
+/**
+ * Class keeping track of the following information for canonical
+ * representatives of type array [a] :
+ *    indices at which it is being read (all i for which there is a
+ *            term of the form SELECT a i)
+ *    all store terms in the congruence class
+ *    stores in which it appears (terms of the form STORE a _ _ )
+ *
+ */
+class ArrayInfo {
+private:
+  context::Context* ct;
+  Backtracker<TNode>* bck;
+  CNodeInfoMap info_map;
+
+  CTNodeList* emptyList;
+
+  /* == STATISTICS == */
+
+  /** time spent in preregisterTerm() */
+  TimerStat d_mergeInfoTimer;
+  AverageStat d_avgIndexListLength;
+  AverageStat d_avgStoresListLength;
+  AverageStat d_avgInStoresListLength;
+  IntStat d_listsCount;
+  IntStat d_callsMergeInfo;
+  IntStat d_maxList;
+  SizeStat<CNodeInfoMap > d_tableSize;
+
+  /**
+   * checks if a certain element is in the list l
+   * FIXME: better way to check for duplicates?
+   */
+
+  /**
+   * helper method that merges two lists into the first
+   * without adding duplicates
+   */
+  void mergeLists(CTNodeList* la, const CTNodeList* lb) const;
+
+public:
+  const Info* emptyInfo;
+/*
+  ArrayInfo(): ct(NULl), info
+    d_mergeInfoTimer("theory::arrays::mergeInfoTimer"),
+    d_avgIndexListLength("theory::arrays::avgIndexListLength"),
+    d_avgStoresListLength("theory::arrays::avgStoresListLength"),
+    d_avgInStoresListLength("theory::arrays::avgInStoresListLength"),
+    d_listsCount("theory::arrays::listsCount",0),
+    d_callsMergeInfo("theory::arrays::callsMergeInfo",0),
+    d_maxList("theory::arrays::maxList",0),
+    d_tableSize("theory::arrays::infoTableSize", info_map) {
+  currentStatisticsRegistry()->registerStat(&d_mergeInfoTimer);
+  currentStatisticsRegistry()->registerStat(&d_avgIndexListLength);
+  currentStatisticsRegistry()->registerStat(&d_avgStoresListLength);
+  currentStatisticsRegistry()->registerStat(&d_avgInStoresListLength);
+  currentStatisticsRegistry()->registerStat(&d_listsCount);
+  currentStatisticsRegistry()->registerStat(&d_callsMergeInfo);
+  currentStatisticsRegistry()->registerStat(&d_maxList);
+  currentStatisticsRegistry()->registerStat(&d_tableSize);
+  }*/
+
+  ArrayInfo(context::Context* c, Backtracker<TNode>* b, std::string statisticsPrefix = "");
+
+  ~ArrayInfo();
+
+  /**
+   * adds the node a to the map if it does not exist
+   * and it initializes the info. checks for duplicate i's
+   */
+  void addIndex(const Node a, const TNode i);
+  void addStore(const Node a, const TNode st);
+  void addInStore(const TNode a, const TNode st);
+
+  void setNonLinear(const TNode a);
+  void setRIntro1Applied(const TNode a);
+  void setModelRep(const TNode a, const TNode rep);
+
+  void setConstArr(const TNode a, const TNode constArr);
+  void setWeakEquivPointer(const TNode a, const TNode pointer);
+  void setWeakEquivIndex(const TNode a, const TNode index);
+  void setWeakEquivSecondary(const TNode a, const TNode secondary);
+  void setWeakEquivSecondaryReason(const TNode a, const TNode reason);
+  /**
+   * Returns the information associated with TNode a
+   */
+
+  const Info* getInfo(const TNode a) const;
+
+  const bool isNonLinear(const TNode a) const;
+
+  const bool rIntro1Applied(const TNode a) const;
+
+  const TNode getModelRep(const TNode a) const;
+
+  const TNode getConstArr(const TNode a) const;
+  const TNode getWeakEquivPointer(const TNode a) const;
+  const TNode getWeakEquivIndex(const TNode a) const;
+  const TNode getWeakEquivSecondary(const TNode a) const;
+  const TNode getWeakEquivSecondaryReason(const TNode a) const;
+
+  const CTNodeList* getIndices(const TNode a) const;
+
+  const CTNodeList* getStores(const TNode a) const;
+
+  const CTNodeList* getInStores(const TNode a) const;
+
+  /**
+   * merges the information of  nodes a and b
+   * the nodes do not have to actually be in the map.
+   * pre-condition
+   *  a should be the canonical representative of b
+   */
+  void mergeInfo(const TNode a, const TNode b);
+};/* class ArrayInfo */
+
+}/* CVC4::theory::arrays namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__ARRAYS__ARRAY_INFO_H */
diff --git a/src/theory/arrays/array_proof_reconstruction.cpp b/src/theory/arrays/array_proof_reconstruction.cpp
new file mode 100644
index 0000000..5ecccdd
--- /dev/null
+++ b/src/theory/arrays/array_proof_reconstruction.cpp
@@ -0,0 +1,192 @@
+/*********************                                                        */
+/*! \file array_proof_reconstruction.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Guy Katz
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+
+ ** \todo document this file
+
+**/
+
+#include "theory/arrays/array_proof_reconstruction.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arrays {
+
+ArrayProofReconstruction::ArrayProofReconstruction(const eq::EqualityEngine* equalityEngine)
+  : d_equalityEngine(equalityEngine) {
+}
+
+void ArrayProofReconstruction::setRowMergeTag(unsigned tag) {
+  d_reasonRow = tag;
+}
+
+void ArrayProofReconstruction::setRow1MergeTag(unsigned tag) {
+  d_reasonRow1 = tag;
+}
+
+void ArrayProofReconstruction::setExtMergeTag(unsigned tag) {
+  d_reasonExt = tag;
+}
+
+void ArrayProofReconstruction::notify(unsigned reasonType, Node reason, Node a, Node b,
+                                      std::vector<TNode>& equalities, eq::EqProof* proof) const {
+
+  Debug("pf::array") << "ArrayProofReconstruction::notify( "
+                     << reason << ", " << a << ", " << b << std::endl;
+
+
+  if (reasonType == d_reasonExt) {
+    if (proof) {
+      // Todo: here we assume that a=b is an assertion. We should probably call explain()
+      // recursively, to explain this.
+      eq::EqProof* childProof = new eq::EqProof;
+      childProof->d_node = reason;
+      proof->d_children.push_back(childProof);
+    }
+  }
+
+  else if (reasonType == d_reasonRow) {
+    // ROW rules mean that (i==k) OR ((a[i]:=t)[k] == a[k])
+    // The equality here will be either (i == k) because ((a[i]:=t)[k] != a[k]),
+    // or ((a[i]:=t)[k] == a[k]) because (i != k).
+
+    if (proof) {
+      if (a.getKind() == kind::SELECT) {
+        // This is the case of ((a[i]:=t)[k] == a[k]) because (i != k).
+
+        // The edge is ((a[i]:=t)[k], a[k]), or (a[k], (a[i]:=t)[k]). This flag should be
+        // false in the first case and true in the second case.
+        bool currentNodeIsUnchangedArray;
+
+        Assert(a.getNumChildren() == 2);
+        Assert(b.getNumChildren() == 2);
+
+        if (a[0].getKind() == kind::VARIABLE || a[0].getKind() == kind::SKOLEM) {
+          currentNodeIsUnchangedArray = true;
+        } else if (b[0].getKind() == kind::VARIABLE || b[0].getKind() == kind::SKOLEM) {
+          currentNodeIsUnchangedArray = false;
+        } else {
+          Assert(a[0].getKind() == kind::STORE);
+          Assert(b[0].getKind() == kind::STORE);
+
+          if (a[0][0] == b[0]) {
+            currentNodeIsUnchangedArray = false;
+          } else if (b[0][0] == a[0]) {
+            currentNodeIsUnchangedArray = true;
+          } else {
+            Unreachable();
+          }
+        }
+
+        Node indexOne = currentNodeIsUnchangedArray ? a[1] : a[0][1];
+        Node indexTwo = currentNodeIsUnchangedArray ? b[0][1] : b[1];
+
+        // Some assertions to ensure that the theory of arrays behaves as expected
+        Assert(a[1] == b[1]);
+        if (currentNodeIsUnchangedArray) {
+          Assert(a[0] == b[0][0]);
+        } else {
+          Assert(a[0][0] == b[0]);
+        }
+
+        Debug("pf::ee") << "Getting explanation for ROW guard: "
+                        << indexOne << " != " << indexTwo << std::endl;
+
+
+        eq::EqProof* childProof = new eq::EqProof;
+        d_equalityEngine->explainEquality(indexOne, indexTwo, false, equalities, childProof);
+
+        // It could be that the guard condition is a constant disequality. In this case,
+        // we need to change it to a different format.
+        bool haveNegChild = false;
+        for (unsigned i = 0; i < childProof->d_children.size(); ++i) {
+          if (childProof->d_children[i]->d_node.getKind() == kind::NOT)
+            haveNegChild = true;
+        }
+
+        if ((childProof->d_children.size() != 0) &&
+            (childProof->d_id == theory::eq::MERGED_THROUGH_CONSTANTS || !haveNegChild)) {
+          // The proof has two children, explaining why each index is a (different) constant.
+          Assert(childProof->d_children.size() == 2);
+
+          Node constantOne, constantTwo;
+          // Each subproof explains why one of the indices is constant.
+
+          if (childProof->d_children[0]->d_id == theory::eq::MERGED_THROUGH_REFLEXIVITY) {
+            constantOne = childProof->d_children[0]->d_node;
+          } else {
+            Assert(childProof->d_children[0]->d_node.getKind() == kind::EQUAL);
+            if ((childProof->d_children[0]->d_node[0] == indexOne) ||
+                (childProof->d_children[0]->d_node[0] == indexTwo)) {
+              constantOne = childProof->d_children[0]->d_node[1];
+            } else {
+              constantOne = childProof->d_children[0]->d_node[0];
+            }
+          }
+
+          if (childProof->d_children[1]->d_id == theory::eq::MERGED_THROUGH_REFLEXIVITY) {
+            constantTwo = childProof->d_children[1]->d_node;
+          } else {
+            Assert(childProof->d_children[1]->d_node.getKind() == kind::EQUAL);
+            if ((childProof->d_children[1]->d_node[0] == indexOne) ||
+                (childProof->d_children[1]->d_node[0] == indexTwo)) {
+              constantTwo = childProof->d_children[1]->d_node[1];
+            } else {
+              constantTwo = childProof->d_children[1]->d_node[0];
+            }
+          }
+
+          eq::EqProof* constantDisequalityProof = new eq::EqProof;
+          constantDisequalityProof->d_id = theory::eq::MERGED_THROUGH_CONSTANTS;
+          constantDisequalityProof->d_node =
+            NodeManager::currentNM()->mkNode(kind::EQUAL, constantOne, constantTwo).negate();
+
+          // Middle is where we need to insert the new disequality
+          std::vector<eq::EqProof *>::iterator middle = childProof->d_children.begin();
+          ++middle;
+
+          childProof->d_children.insert(middle, constantDisequalityProof);
+
+          childProof->d_id = theory::eq::MERGED_THROUGH_TRANS;
+          childProof->d_node =
+            NodeManager::currentNM()->mkNode(kind::EQUAL, indexOne, indexTwo).negate();
+        }
+
+        proof->d_children.push_back(childProof);
+      } else {
+        // This is the case of (i == k) because ((a[i]:=t)[k] != a[k]),
+
+        Node indexOne = a;
+        Node indexTwo = b;
+
+        Debug("pf::ee") << "The two indices are: " << indexOne << ", " << indexTwo << std::endl
+                        << "The reason for the edge is: " << reason << std::endl;
+
+        Assert(reason.getNumChildren() == 2);
+        Debug("pf::ee") << "Getting explanation for ROW guard: " << reason[1] << std::endl;
+
+        eq::EqProof* childProof = new eq::EqProof;
+        d_equalityEngine->explainEquality(reason[1][0], reason[1][1], false, equalities, childProof);
+        proof->d_children.push_back(childProof);
+      }
+    }
+
+  }
+
+  else if (reasonType == d_reasonRow1) {
+    // No special handling required at this time
+  }
+}
+
+}/* CVC4::theory::arrays namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arrays/array_proof_reconstruction.h b/src/theory/arrays/array_proof_reconstruction.h
new file mode 100644
index 0000000..ef3e09a
--- /dev/null
+++ b/src/theory/arrays/array_proof_reconstruction.h
@@ -0,0 +1,58 @@
+/*********************                                                        */
+/*! \file array_proof_reconstruction.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Guy Katz
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Array-specific proof construction logic to be used during the
+ ** equality engine's path reconstruction
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__ARRAYS__ARRAY_PROOF_RECONSTRUCTION_H
+#define __CVC4__THEORY__ARRAYS__ARRAY_PROOF_RECONSTRUCTION_H
+
+#include "theory/uf/equality_engine.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arrays {
+
+/**
+ * A callback class to be invoked whenever the equality engine traverses
+ * an "array-owned" edge during path reconstruction.
+ */
+
+class ArrayProofReconstruction : public eq::PathReconstructionNotify {
+public:
+  ArrayProofReconstruction(const eq::EqualityEngine* equalityEngine);
+
+  void notify(unsigned reasonType, Node reason, Node a, Node b,
+              std::vector<TNode>& equalities, eq::EqProof* proof) const;
+
+  void setRowMergeTag(unsigned tag);
+  void setRow1MergeTag(unsigned tag);
+  void setExtMergeTag(unsigned tag);
+
+private:
+  /** Merge tag for ROW applications */
+  unsigned d_reasonRow;
+  /** Merge tag for ROW1 applications */
+  unsigned d_reasonRow1;
+  /** Merge tag for EXT applications */
+  unsigned d_reasonExt;
+
+  const eq::EqualityEngine* d_equalityEngine;
+}; /* class ArrayProofReconstruction */
+
+}/* CVC4::theory::arrays namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__ARRAYS__ARRAY_PROOF_RECONSTRUCTION_H */
diff --git a/src/theory/arrays/kinds b/src/theory/arrays/kinds
new file mode 100644
index 0000000..be16d68
--- /dev/null
+++ b/src/theory/arrays/kinds
@@ -0,0 +1,65 @@
+# kinds                                                               -*- sh -*-
+#
+# For documentation on this file format, please refer to
+# src/theory/builtin/kinds.
+#
+
+theory THEORY_ARRAY ::CVC4::theory::arrays::TheoryArrays "theory/arrays/theory_arrays.h"
+typechecker "theory/arrays/theory_arrays_type_rules.h"
+
+properties polite stable-infinite parametric
+properties check propagate presolve getNextDecisionRequest
+
+rewriter ::CVC4::theory::arrays::TheoryArraysRewriter "theory/arrays/theory_arrays_rewriter.h"
+
+operator ARRAY_TYPE 2 "array type"
+cardinality ARRAY_TYPE \
+    "::CVC4::theory::arrays::ArraysProperties::computeCardinality(%TYPE%)" \
+    "theory/arrays/theory_arrays_type_rules.h"
+well-founded ARRAY_TYPE \
+    "::CVC4::theory::arrays::ArraysProperties::isWellFounded(%TYPE%)" \
+    "::CVC4::theory::arrays::ArraysProperties::mkGroundTerm(%TYPE%)" \
+    "theory/arrays/theory_arrays_type_rules.h"
+
+enumerator ARRAY_TYPE \
+    "::CVC4::theory::arrays::ArrayEnumerator" \
+    "theory/arrays/type_enumerator.h"
+
+# select a i  is  a[i]
+operator SELECT 2 "array select; first parameter is an array term, second is the selection index"
+
+# store a i e  is  a[i] <= e
+operator STORE 3 "array store; first parameter is an array term, second is the store index, third is the term to store at the index"
+
+# storeall t e  is  \all i in indexType(t) <= e
+constant STORE_ALL \
+    ::CVC4::ArrayStoreAll \
+    ::CVC4::ArrayStoreAllHashFunction \
+    "expr/array_store_all.h" \
+    "array store-all; payload is an instance of the CVC4::ArrayStoreAll class (this is not supported by arrays decision procedure yet, but it is used for returned array models)"
+
+# used internally by array theory
+operator ARR_TABLE_FUN 4 "array table function (internal-only symbol)"
+
+# used internally for substitutions in models (e.g. the Boolean terms converter)
+# The (single) argument is a lambda(x:T):U.  Type of the array lambda is
+# Array T of U.  Thus ARRAY_LAMBDA LAMBDA(x:INT) . (read a x) is the same array
+# as a.  ARRAY_LAMBDA LAMBDA(x:INT) . (read a (- x 1)) is the same array as
+# as a shifted over one.
+operator ARRAY_LAMBDA 1 "array lambda (internal-only symbol)"
+
+typerule SELECT ::CVC4::theory::arrays::ArraySelectTypeRule
+typerule STORE ::CVC4::theory::arrays::ArrayStoreTypeRule
+typerule STORE_ALL ::CVC4::theory::arrays::ArrayStoreTypeRule
+typerule ARR_TABLE_FUN ::CVC4::theory::arrays::ArrayTableFunTypeRule
+typerule ARRAY_LAMBDA ::CVC4::theory::arrays::ArrayLambdaTypeRule
+
+operator PARTIAL_SELECT_0 0:2 "partial array select, for internal use only"
+operator PARTIAL_SELECT_1 0:2 "partial array select, for internal use only"
+typerule PARTIAL_SELECT_0 ::CVC4::theory::arrays::ArrayPartialSelectTypeRule
+typerule PARTIAL_SELECT_1 ::CVC4::theory::arrays::ArrayPartialSelectTypeRule
+
+# store operations that are ordered (by index) over a store-all are constant
+construle STORE ::CVC4::theory::arrays::ArrayStoreTypeRule
+
+endtheory
diff --git a/src/theory/arrays/static_fact_manager.cpp b/src/theory/arrays/static_fact_manager.cpp
new file mode 100644
index 0000000..da1d7bb
--- /dev/null
+++ b/src/theory/arrays/static_fact_manager.cpp
@@ -0,0 +1,170 @@
+/*********************                                                        */
+/*! \file static_fact_manager.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Clark Barrett, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Path-compressing, backtrackable union-find using an undo
+ ** stack. Refactored from the UF union-find.
+ **
+ ** Path-compressing, backtrackable union-find using an undo stack
+ ** rather than storing items in a CDMap<>.
+ **/
+
+#include <iostream>
+
+#include "base/cvc4_assert.h"
+#include "expr/node.h"
+#include "theory/arrays/static_fact_manager.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace arrays {
+
+bool StaticFactManager::areEq(TNode a, TNode b) {
+  return (find(a) == find(b));
+}
+
+bool StaticFactManager::areDiseq(TNode a, TNode b) {
+  Node af = find(a);
+  Node bf = find(b);
+  Node left, right;
+  unsigned i;
+  for (i = 0; i < d_diseq.size(); ++i) {
+    left = find(d_diseq[i][0]);
+    right = find(d_diseq[i][1]);
+    if ((left == af && right == bf) ||
+        (left == bf && right == af)) {
+      return true;
+    }
+  }
+  return false;
+}
+
+void StaticFactManager::addDiseq(TNode eq) {
+  Assert(eq.getKind() == kind::EQUAL);
+  d_diseq.push_back(eq);
+}
+
+void StaticFactManager::addEq(TNode eq) {
+  Assert(eq.getKind() == kind::EQUAL);
+  Node a = find(eq[0]);
+  Node b = find(eq[1]);
+
+  if( a == b) {
+    return;
+  }
+
+  /*
+   * take care of the congruence closure part
+   */
+
+  // make "a" the one with shorter diseqList
+  // CNodeTNodesMap::iterator deq_ia = d_disequalities.find(a);
+  // CNodeTNodesMap::iterator deq_ib = d_disequalities.find(b);
+
+  // if(deq_ia != d_disequalities.end()) {
+  //   if(deq_ib == d_disequalities.end() ||
+  //      (*deq_ia).second->size() > (*deq_ib).second->size()) {
+  //     TNode tmp = a;
+  //     a = b;
+  //     b = tmp;
+  //   }
+  // }
+  // a = find(a);
+  // b = find(b);
+
+
+  // b becomes the canon of a
+  setCanon(a, b);
+
+  // deq_ia = d_disequalities.find(a);
+  // map<TNode, TNode> alreadyDiseqs;
+  // if(deq_ia != d_disequalities.end()) {
+  //   /*
+  //    * Collecting the disequalities of b, no need to check for conflicts
+  //    * since the representative of b does not change and we check all the things
+  //    * in a's class when we look at the diseq list of find(a)
+  //    */
+
+  //   CNodeTNodesMap::iterator deq_ib = d_disequalities.find(b);
+  //   if(deq_ib != d_disequalities.end()) {
+  //     CTNodeListAlloc* deq = (*deq_ib).second;
+  //     for(CTNodeListAlloc::const_iterator j = deq->begin(); j!=deq->end(); j++) {
+  //       TNode deqn = *j;
+  //       TNode s = deqn[0];
+  //       TNode t = deqn[1];
+  //       TNode sp = find(s);
+  //       TNode tp = find(t);
+  //       Assert(sp == b || tp == b);
+  //       if(sp == b) {
+  //         alreadyDiseqs[tp] = deqn;
+  //       } else {
+  //         alreadyDiseqs[sp] = deqn;
+  //       }
+  //     }
+  //   }
+
+  //   /*
+  //    * Looking for conflicts in the a disequality list. Note
+  //    * that at this point a and b are already merged. Also has
+  //    * the side effect that it adds them to the list of b (which
+  //    * became the canonical representative)
+  //    */
+
+  //   CTNodeListAlloc* deqa = (*deq_ia).second;
+  //   for(CTNodeListAlloc::const_iterator i = deqa->begin(); i!= deqa->end(); i++) {
+  //     TNode deqn = (*i);
+  //     Assert(deqn.getKind() == kind::EQUAL || deqn.getKind() == kind::IFF);
+  //     TNode s = deqn[0];
+  //     TNode t = deqn[1];
+  //     TNode sp = find(s);
+  //     TNode tp = find(t);
+
+  //     if(find(s) == find(t)) {
+  //       d_conflict = deqn;
+  //       return;
+  //     }
+  //     Assert( sp == b || tp == b);
+
+  //     // make sure not to add duplicates
+
+  //     if(sp == b) {
+  //       if(alreadyDiseqs.find(tp) == alreadyDiseqs.end()) {
+  //         appendToDiseqList(b, deqn);
+  //         alreadyDiseqs[tp] = deqn;
+  //       }
+  //     } else {
+  //       if(alreadyDiseqs.find(sp) == alreadyDiseqs.end()) {
+  //         appendToDiseqList(b, deqn);
+  //         alreadyDiseqs[sp] = deqn;
+  //       }
+  //     }
+
+  //   }
+  // }
+
+  // // TODO: check for equality propagations
+  // // a and b are find(a) and find(b) here
+  // checkPropagations(a,b);
+
+  // if(a.getType().isArray()) {
+  //   checkRowLemmas(a,b);
+  //   checkRowLemmas(b,a);
+  //   // note the change in order, merge info adds the list of
+  //   // the 2nd argument to the first
+  //   d_infoMap.mergeInfo(b, a);
+  // }
+}
+
+
+}/* CVC4::theory::arrays namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arrays/static_fact_manager.h b/src/theory/arrays/static_fact_manager.h
new file mode 100644
index 0000000..d40f56e
--- /dev/null
+++ b/src/theory/arrays/static_fact_manager.h
@@ -0,0 +1,117 @@
+/*********************                                                        */
+/*! \file static_fact_manager.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Clark Barrett, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Path-compressing, backtrackable union-find using an undo
+ ** stack. Refactored from the UF union-find.
+ **
+ ** Path-compressing, backtrackable union-find using an undo stack
+ ** rather than storing items in a CDMap<>.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__ARRAYS__STATIC_FACT_MANAGER_H
+#define __CVC4__THEORY__ARRAYS__STATIC_FACT_MANAGER_H
+
+#include <utility>
+#include <vector>
+#include <ext/hash_map>
+
+#include "expr/node.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arrays {
+
+  class StaticFactManager {
+  /** Our underlying map type. */
+  typedef __gnu_cxx::hash_map<Node, Node, NodeHashFunction> MapType;
+
+  /**
+   * Our map of Nodes to their canonical representatives.
+   * If a Node is not present in the map, it is its own
+   * representative.
+   */
+  MapType d_map;
+  std::vector<Node> d_diseq;
+
+public:
+  StaticFactManager() {}
+  ~StaticFactManager() throw() { }
+
+  /**
+   * Return a Node's union-find representative, doing path compression.
+   */
+  inline TNode find(TNode n);
+
+  /**
+   * Return a Node's union-find representative, NOT doing path compression.
+   * This is useful for Assert() statements, debug checking, and similar
+   * things that you do NOT want to mutate the structure.
+   */
+  inline TNode debugFind(TNode n) const;
+
+  /**
+   * Set the canonical representative of n to newParent.  They should BOTH
+   * be their own canonical representatives on entry to this funciton.
+   */
+  inline void setCanon(TNode n, TNode newParent);
+
+  bool areEq(TNode a, TNode b);
+  bool areDiseq(TNode a, TNode b);
+  void addDiseq(TNode eq);
+  void addEq(TNode eq);
+
+};/* class StaticFactManager<> */
+
+inline TNode StaticFactManager::debugFind(TNode n) const {
+  MapType::const_iterator i = d_map.find(n);
+  if(i == d_map.end()) {
+    return n;
+  } else {
+    return debugFind((*i).second);
+  }
+}
+
+inline TNode StaticFactManager::find(TNode n) {
+  Trace("arraysuf") << "arraysUF find of " << n << std::endl;
+  MapType::iterator i = d_map.find(n);
+  if(i == d_map.end()) {
+    Trace("arraysuf") << "arraysUF   it is rep" << std::endl;
+    return n;
+  } else {
+    Trace("arraysuf") << "arraysUF   not rep: par is " << (*i).second << std::endl;
+    std::pair<TNode, TNode> pr = *i;
+    // our iterator is invalidated by the recursive call to find(),
+    // since it mutates the map
+    TNode p = find(pr.second);
+    if(p == pr.second) {
+      return p;
+    }
+    pr.second = p;
+    d_map.insert(pr);
+    return p;
+  }
+}
+
+inline void StaticFactManager::setCanon(TNode n, TNode newParent) {
+  Assert(d_map.find(n) == d_map.end());
+  Assert(d_map.find(newParent) == d_map.end());
+  if(n != newParent) {
+    d_map[n] = newParent;
+  }
+}
+
+}/* CVC4::theory::arrays namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /*__CVC4__THEORY__ARRAYS__STATIC_FACT_MANAGER_H */
diff --git a/src/theory/arrays/theory_arrays.cpp b/src/theory/arrays/theory_arrays.cpp
new file mode 100644
index 0000000..f9b97d5
--- /dev/null
+++ b/src/theory/arrays/theory_arrays.cpp
@@ -0,0 +1,2256 @@
+/*********************                                                        */
+/*! \file theory_arrays.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Clark Barrett, Morgan Deters, Guy Katz
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of the theory of arrays.
+ **
+ ** Implementation of the theory of arrays.
+ **/
+
+#include "theory/arrays/theory_arrays.h"
+
+#include <map>
+
+#include "expr/kind.h"
+#include "options/arrays_options.h"
+#include "options/smt_options.h"
+#include "proof/array_proof.h"
+#include "proof/proof_manager.h"
+#include "proof/theory_proof.h"
+#include "smt/command.h"
+#include "smt/logic_exception.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/rewriter.h"
+#include "theory/theory_model.h"
+#include "theory/valuation.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace arrays {
+
+// These are the options that produce the best empirical results on QF_AX benchmarks.
+// eagerLemmas = true
+// eagerIndexSplitting = false
+
+// Use static configuration of options for now
+const bool d_ccStore = false;
+const bool d_useArrTable = false;
+  //const bool d_eagerLemmas = false;
+const bool d_preprocess = true;
+const bool d_solveWrite = true;
+const bool d_solveWrite2 = false;
+  // These are now options
+  //const bool d_propagateLemmas = true;
+  //bool d_useNonLinearOpt = true;
+  //bool d_lazyRIntro1 = true;
+  //bool d_eagerIndexSplitting = false;
+
+TheoryArrays::TheoryArrays(context::Context* c, context::UserContext* u,
+                           OutputChannel& out, Valuation valuation,
+                           const LogicInfo& logicInfo, std::string name)
+    : Theory(THEORY_ARRAY, c, u, out, valuation, logicInfo, name),
+      d_numRow(name + "theory::arrays::number of Row lemmas", 0),
+      d_numExt(name + "theory::arrays::number of Ext lemmas", 0),
+      d_numProp(name + "theory::arrays::number of propagations", 0),
+      d_numExplain(name + "theory::arrays::number of explanations", 0),
+      d_numNonLinear(name + "theory::arrays::number of calls to setNonLinear", 0),
+      d_numSharedArrayVarSplits(name + "theory::arrays::number of shared array var splits", 0),
+      d_numGetModelValSplits(name + "theory::arrays::number of getModelVal splits", 0),
+      d_numGetModelValConflicts(name + "theory::arrays::number of getModelVal conflicts", 0),
+      d_numSetModelValSplits(name + "theory::arrays::number of setModelVal splits", 0),
+      d_numSetModelValConflicts(name + "theory::arrays::number of setModelVal conflicts", 0),
+      d_ppEqualityEngine(u, name + "theory::arrays::TheoryArraysPP" , true),
+      d_ppFacts(u),
+      //      d_ppCache(u),
+      d_literalsToPropagate(c),
+      d_literalsToPropagateIndex(c, 0),
+      d_isPreRegistered(c),
+      d_mayEqualEqualityEngine(c, name + "theory::arrays::TheoryArraysMayEqual", true),
+      d_notify(*this),
+      d_equalityEngine(d_notify, c, name + "theory::arrays::TheoryArrays", true),
+      d_conflict(c, false),
+      d_backtracker(c),
+      d_infoMap(c, &d_backtracker, name),
+      d_mergeQueue(c),
+      d_mergeInProgress(false),
+      d_RowQueue(c),
+      d_RowAlreadyAdded(u),
+      d_sharedArrays(c),
+      d_sharedOther(c),
+      d_sharedTerms(c, false),
+      d_reads(c),
+      d_constReadsList(c),
+      d_constReadsContext(new context::Context()),
+      d_contextPopper(c, d_constReadsContext),
+      d_skolemIndex(c, 0),
+      d_decisionRequests(c),
+      d_permRef(c),
+      d_modelConstraints(c),
+      d_lemmasSaved(c),
+      d_defValues(c),
+      d_readTableContext(new context::Context()),
+      d_arrayMerges(c),
+      d_inCheckModel(false),
+      d_proofReconstruction(&d_equalityEngine)
+{
+  smtStatisticsRegistry()->registerStat(&d_numRow);
+  smtStatisticsRegistry()->registerStat(&d_numExt);
+  smtStatisticsRegistry()->registerStat(&d_numProp);
+  smtStatisticsRegistry()->registerStat(&d_numExplain);
+  smtStatisticsRegistry()->registerStat(&d_numNonLinear);
+  smtStatisticsRegistry()->registerStat(&d_numSharedArrayVarSplits);
+  smtStatisticsRegistry()->registerStat(&d_numGetModelValSplits);
+  smtStatisticsRegistry()->registerStat(&d_numGetModelValConflicts);
+  smtStatisticsRegistry()->registerStat(&d_numSetModelValSplits);
+  smtStatisticsRegistry()->registerStat(&d_numSetModelValConflicts);
+
+  d_true = NodeManager::currentNM()->mkConst<bool>(true);
+  d_false = NodeManager::currentNM()->mkConst<bool>(false);
+
+  // The preprocessing congruence kinds
+  d_ppEqualityEngine.addFunctionKind(kind::SELECT);
+  d_ppEqualityEngine.addFunctionKind(kind::STORE);
+
+  // The kinds we are treating as function application in congruence
+  d_equalityEngine.addFunctionKind(kind::SELECT);
+  if (d_ccStore) {
+    d_equalityEngine.addFunctionKind(kind::STORE);
+  }
+  if (d_useArrTable) {
+    d_equalityEngine.addFunctionKind(kind::ARR_TABLE_FUN);
+  }
+
+  d_reasonRow = d_equalityEngine.getFreshMergeReasonType();
+  d_reasonRow1 = d_equalityEngine.getFreshMergeReasonType();
+  d_reasonExt = d_equalityEngine.getFreshMergeReasonType();
+
+  d_proofReconstruction.setRowMergeTag(d_reasonRow);
+  d_proofReconstruction.setRow1MergeTag(d_reasonRow1);
+  d_proofReconstruction.setExtMergeTag(d_reasonExt);
+
+  d_equalityEngine.addPathReconstructionTrigger(d_reasonRow, &d_proofReconstruction);
+  d_equalityEngine.addPathReconstructionTrigger(d_reasonRow1, &d_proofReconstruction);
+  d_equalityEngine.addPathReconstructionTrigger(d_reasonExt, &d_proofReconstruction);
+}
+
+TheoryArrays::~TheoryArrays() {
+  vector<CTNodeList*>::iterator it = d_readBucketAllocations.begin(), iend = d_readBucketAllocations.end();
+  for (; it != iend; ++it) {
+    (*it)->deleteSelf();
+  }
+  delete d_readTableContext;
+  CNodeNListMap::iterator it2 = d_constReads.begin();
+  for( ; it2 != d_constReads.end(); ++it2 ) {
+    it2->second->deleteSelf();
+  }
+  delete d_constReadsContext;
+  smtStatisticsRegistry()->unregisterStat(&d_numRow);
+  smtStatisticsRegistry()->unregisterStat(&d_numExt);
+  smtStatisticsRegistry()->unregisterStat(&d_numProp);
+  smtStatisticsRegistry()->unregisterStat(&d_numExplain);
+  smtStatisticsRegistry()->unregisterStat(&d_numNonLinear);
+  smtStatisticsRegistry()->unregisterStat(&d_numSharedArrayVarSplits);
+  smtStatisticsRegistry()->unregisterStat(&d_numGetModelValSplits);
+  smtStatisticsRegistry()->unregisterStat(&d_numGetModelValConflicts);
+  smtStatisticsRegistry()->unregisterStat(&d_numSetModelValSplits);
+  smtStatisticsRegistry()->unregisterStat(&d_numSetModelValConflicts);
+}
+
+void TheoryArrays::setMasterEqualityEngine(eq::EqualityEngine* eq) {
+  d_equalityEngine.setMasterEqualityEngine(eq);
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// PREPROCESSING
+/////////////////////////////////////////////////////////////////////////////
+
+
+bool TheoryArrays::ppDisequal(TNode a, TNode b) {
+  bool termsExist = d_ppEqualityEngine.hasTerm(a) && d_ppEqualityEngine.hasTerm(b);
+  Assert(!termsExist || !a.isConst() || !b.isConst() || a == b || d_ppEqualityEngine.areDisequal(a, b, false));
+  return ((termsExist && d_ppEqualityEngine.areDisequal(a, b, false)) ||
+          Rewriter::rewrite(a.eqNode(b)) == d_false);
+}
+
+
+Node TheoryArrays::solveWrite(TNode term, bool solve1, bool solve2, bool ppCheck)
+{
+  if (!solve1) {
+    return term;
+  }
+  if (term[0].getKind() != kind::STORE &&
+      term[1].getKind() != kind::STORE) {
+    return term;
+  }
+  TNode left = term[0];
+  TNode right = term[1];
+  int leftWrites = 0, rightWrites = 0;
+
+  // Count nested writes
+  TNode e1 = left;
+  while (e1.getKind() == kind::STORE) {
+    ++leftWrites;
+    e1 = e1[0];
+  }
+
+  TNode e2 = right;
+  while (e2.getKind() == kind::STORE) {
+    ++rightWrites;
+    e2 = e2[0];
+  }
+
+  if (rightWrites > leftWrites) {
+    TNode tmp = left;
+    left = right;
+    right = tmp;
+    int tmpWrites = leftWrites;
+    leftWrites = rightWrites;
+    rightWrites = tmpWrites;
+  }
+
+  NodeManager* nm = NodeManager::currentNM();
+  if (rightWrites == 0) {
+    if (e1 != e2) {
+      return term;
+    }
+    // write(store, index_0, v_0, index_1, v_1, ..., index_n, v_n) = store IFF
+    //
+    // read(store, index_n) = v_n &
+    // index_{n-1} != index_n -> read(store, index_{n-1}) = v_{n-1} &
+    // (index_{n-2} != index_{n-1} & index_{n-2} != index_n) -> read(store, index_{n-2}) = v_{n-2} &
+    // ...
+    // (index_1 != index_2 & ... & index_1 != index_n) -> read(store, index_1) = v_1
+    // (index_0 != index_1 & index_0 != index_2 & ... & index_0 != index_n) -> read(store, index_0) = v_0
+    TNode write_i, write_j, index_i, index_j;
+    Node conc;
+    NodeBuilder<> result(kind::AND);
+    int i, j;
+    write_i = left;
+    for (i = leftWrites-1; i >= 0; --i) {
+      index_i = write_i[1];
+
+      // build: [index_i /= index_n && index_i /= index_(n-1) &&
+      //         ... && index_i /= index_(i+1)] -> read(store, index_i) = v_i
+      write_j = left;
+      {
+        NodeBuilder<> hyp(kind::AND);
+        for (j = leftWrites - 1; j > i; --j) {
+          index_j = write_j[1];
+          if (!ppCheck || !ppDisequal(index_i, index_j)) {
+            Node hyp2(index_i.eqNode(index_j));
+            hyp << hyp2.notNode();
+          }
+          write_j = write_j[0];
+        }
+
+        Node r1 = nm->mkNode(kind::SELECT, e1, index_i);
+        conc = r1.eqNode(write_i[2]);
+        if (hyp.getNumChildren() != 0) {
+          if (hyp.getNumChildren() == 1) {
+            conc = hyp.getChild(0).impNode(conc);
+          }
+          else {
+            r1 = hyp;
+            conc = r1.impNode(conc);
+          }
+        }
+
+        // And into result
+        result << conc;
+
+        // Prepare for next iteration
+        write_i = write_i[0];
+      }
+    }
+    Assert(result.getNumChildren() > 0);
+    if (result.getNumChildren() == 1) {
+      return result.getChild(0);
+    }
+    return result;
+  }
+  else {
+    if (!solve2) {
+      return term;
+    }
+    // store(...) = store(a,i,v) ==>
+    // store(store(...),i,select(a,i)) = a && select(store(...),i)=v
+    Node l = left;
+    Node tmp;
+    NodeBuilder<> nb(kind::AND);
+    while (right.getKind() == kind::STORE) {
+      tmp = nm->mkNode(kind::SELECT, l, right[1]);
+      nb << tmp.eqNode(right[2]);
+      tmp = nm->mkNode(kind::SELECT, right[0], right[1]);
+      l = nm->mkNode(kind::STORE, l, right[1], tmp);
+      right = right[0];
+    }
+    nb << solveWrite(l.eqNode(right), solve1, solve2, ppCheck);
+    return nb;
+  }
+  Unreachable();
+  return term;
+}
+
+
+Node TheoryArrays::ppRewrite(TNode term) {
+  if (!d_preprocess) return term;
+  d_ppEqualityEngine.addTerm(term);
+  switch (term.getKind()) {
+    case kind::SELECT: {
+      // select(store(a,i,v),j) = select(a,j)
+      //    IF i != j
+      if (term[0].getKind() == kind::STORE && ppDisequal(term[0][1], term[1])) {
+        return NodeBuilder<2>(kind::SELECT) << term[0][0] << term[1];
+      }
+      break;
+    }
+    case kind::STORE: {
+      // store(store(a,i,v),j,w) = store(store(a,j,w),i,v)
+      //    IF i != j and j comes before i in the ordering
+      if (term[0].getKind() == kind::STORE && (term[1] < term[0][1]) && ppDisequal(term[1],term[0][1])) {
+        Node inner = NodeBuilder<3>(kind::STORE) << term[0][0] << term[1] << term[2];
+        Node outer = NodeBuilder<3>(kind::STORE) << inner << term[0][1] << term[0][2];
+        return outer;
+      }
+      break;
+    }
+    case kind::EQUAL: {
+      return solveWrite(term, d_solveWrite, d_solveWrite2, true);
+      break;
+    }
+    default:
+      break;
+  }
+  return term;
+}
+
+
+Theory::PPAssertStatus TheoryArrays::ppAssert(TNode in, SubstitutionMap& outSubstitutions) {
+  switch(in.getKind()) {
+    case kind::EQUAL:
+    {
+      d_ppFacts.push_back(in);
+      d_ppEqualityEngine.assertEquality(in, true, in);
+      if (in[0].isVar() && !in[1].hasSubterm(in[0]) && (in[1].getType()).isSubtypeOf(in[0].getType()) ){
+        outSubstitutions.addSubstitution(in[0], in[1]);
+        return PP_ASSERT_STATUS_SOLVED;
+      }
+      if (in[1].isVar() && !in[0].hasSubterm(in[1]) && (in[0].getType()).isSubtypeOf(in[1].getType())){
+        outSubstitutions.addSubstitution(in[1], in[0]);
+        return PP_ASSERT_STATUS_SOLVED;
+      }
+      break;
+    }
+    case kind::NOT:
+    {
+      d_ppFacts.push_back(in);
+      Assert(in[0].getKind() == kind::EQUAL );
+      Node a = in[0][0];
+      Node b = in[0][1];
+      d_ppEqualityEngine.assertEquality(in[0], false, in);
+      break;
+    }
+    default:
+      break;
+  }
+  return PP_ASSERT_STATUS_UNSOLVED;
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// T-PROPAGATION / REGISTRATION
+/////////////////////////////////////////////////////////////////////////////
+
+
+bool TheoryArrays::propagate(TNode literal)
+{
+  Debug("arrays") << spaces(getSatContext()->getLevel()) << "TheoryArrays::propagate(" << literal  << ")" << std::endl;
+
+  // If already in conflict, no more propagation
+  if (d_conflict) {
+    Debug("arrays") << spaces(getSatContext()->getLevel()) << "TheoryArrays::propagate(" << literal << "): already in conflict" << std::endl;
+    return false;
+  }
+
+  // Propagate away
+  if (d_inCheckModel && getSatContext()->getLevel() != d_topLevel) {
+    return true;
+  }
+  bool ok = d_out->propagate(literal);
+  if (!ok) {
+    d_conflict = true;
+  }
+  return ok;
+}/* TheoryArrays::propagate(TNode) */
+
+
+void TheoryArrays::explain(TNode literal, std::vector<TNode>& assumptions, eq::EqProof *proof) {
+  // Do the work
+  bool polarity = literal.getKind() != kind::NOT;
+  TNode atom = polarity ? literal : literal[0];
+  //eq::EqProof * eqp = new eq::EqProof;
+  // eq::EqProof * eqp = NULL;
+  if (atom.getKind() == kind::EQUAL) {
+    d_equalityEngine.explainEquality(atom[0], atom[1], polarity, assumptions, proof);
+  } else {
+    d_equalityEngine.explainPredicate(atom, polarity, assumptions, proof);
+  }
+  if(proof){
+    Debug("pf::array") << " Proof is : " << std::endl;
+    proof->debug_print("pf::array");
+  }
+
+  Debug("pf::array") << "Array: explain( " << literal << " ):" << std::endl << "\t";
+  for (unsigned i = 0; i < assumptions.size(); ++i) {
+    Debug("pf::array") << assumptions[i] << " ";
+  }
+  Debug("pf::array") << std::endl;
+}
+
+TNode TheoryArrays::weakEquivGetRep(TNode node) {
+  TNode pointer;
+  while (true) {
+    pointer = d_infoMap.getWeakEquivPointer(node);
+    if (pointer.isNull()) {
+      return node;
+    }
+    node = pointer;
+  }
+}
+
+TNode TheoryArrays::weakEquivGetRepIndex(TNode node, TNode index) {
+  Assert(!index.isNull());
+  TNode pointer, index2;
+  while (true) {
+    pointer = d_infoMap.getWeakEquivPointer(node);
+    if (pointer.isNull()) {
+      return node;
+    }
+    index2 = d_infoMap.getWeakEquivIndex(node);
+    if (index2.isNull() || !d_equalityEngine.areEqual(index, index2)) {
+      node = pointer;
+    }
+    else {
+      TNode secondary = d_infoMap.getWeakEquivSecondary(node);
+      if (secondary.isNull()) {
+        return node;
+      }
+      node = secondary;
+    }
+  }
+}
+
+void TheoryArrays::visitAllLeaves(TNode reason, vector<TNode>& conjunctions) {
+  switch (reason.getKind()) {
+    case kind::AND:
+      Assert(reason.getNumChildren() == 2);
+      visitAllLeaves(reason[0], conjunctions);
+      visitAllLeaves(reason[1], conjunctions);
+      break;
+    case kind::NOT:
+      conjunctions.push_back(reason);
+      break;
+    case kind::EQUAL:
+      d_equalityEngine.explainEquality(reason[0], reason[1], true, conjunctions);
+      break;
+    default:
+      Unreachable();
+  }
+}
+
+void TheoryArrays::weakEquivBuildCond(TNode node, TNode index, vector<TNode>& conjunctions) {
+  Assert(!index.isNull());
+  TNode pointer, index2;
+  while (true) {
+    pointer = d_infoMap.getWeakEquivPointer(node);
+    if (pointer.isNull()) {
+      return;
+    }
+    index2 = d_infoMap.getWeakEquivIndex(node);
+    if (index2.isNull()) {
+      // Null index means these two nodes became equal: explain the equality.
+      d_equalityEngine.explainEquality(node, pointer, true, conjunctions);
+      node = pointer;
+    }
+    else if (!d_equalityEngine.areEqual(index, index2)) {
+      // If indices are not equal in current context, need to add that to the lemma.
+      Node reason = index.eqNode(index2).notNode();
+      d_permRef.push_back(reason);
+      conjunctions.push_back(reason);
+      node = pointer;
+    }
+    else {
+      TNode secondary = d_infoMap.getWeakEquivSecondary(node);
+      if (secondary.isNull()) {
+        return;
+      }
+      TNode reason = d_infoMap.getWeakEquivSecondaryReason(node);
+      Assert(!reason.isNull());
+      visitAllLeaves(reason, conjunctions);
+      node = secondary;
+    }
+  }
+}
+
+void TheoryArrays::weakEquivMakeRep(TNode node) {
+  TNode pointer = d_infoMap.getWeakEquivPointer(node);
+  if (pointer.isNull()) {
+    return;
+  }
+  weakEquivMakeRep(pointer);
+  d_infoMap.setWeakEquivPointer(pointer, node);
+  d_infoMap.setWeakEquivIndex(pointer, d_infoMap.getWeakEquivIndex(node));
+  d_infoMap.setWeakEquivPointer(node, TNode());
+  weakEquivMakeRepIndex(node);
+}
+
+void TheoryArrays::weakEquivMakeRepIndex(TNode node) {
+  TNode secondary = d_infoMap.getWeakEquivSecondary(node);
+  if (secondary.isNull()) {
+    return;
+  }
+  TNode index = d_infoMap.getWeakEquivIndex(node);
+  Assert(!index.isNull());
+  TNode index2 = d_infoMap.getWeakEquivIndex(secondary);
+  Node reason;
+  TNode next;
+  while (index2.isNull() || !d_equalityEngine.areEqual(index, index2)) {
+    next = d_infoMap.getWeakEquivPointer(secondary);
+    d_infoMap.setWeakEquivSecondary(node, next);
+    reason = d_infoMap.getWeakEquivSecondaryReason(node);
+    if (index2.isNull()) {
+      reason = reason.andNode(secondary.eqNode(next));
+    }
+    else {
+      reason = reason.andNode(index.eqNode(index2).notNode());
+    }
+    d_permRef.push_back(reason);
+    d_infoMap.setWeakEquivSecondaryReason(node, reason);
+    if (next.isNull()) {
+      return;
+    }
+    secondary = next;
+    index2 = d_infoMap.getWeakEquivIndex(secondary);
+  }
+  weakEquivMakeRepIndex(secondary);
+  d_infoMap.setWeakEquivSecondary(secondary, node);
+  d_infoMap.setWeakEquivSecondaryReason(secondary, d_infoMap.getWeakEquivSecondaryReason(node));
+  d_infoMap.setWeakEquivSecondary(node, TNode());
+  d_infoMap.setWeakEquivSecondaryReason(node, TNode());
+}
+
+void TheoryArrays::weakEquivAddSecondary(TNode index, TNode arrayFrom, TNode arrayTo, TNode reason) {
+  std::hash_set<TNode, TNodeHashFunction> marked;
+  vector<TNode> index_trail;
+  vector<TNode>::iterator it, iend;
+  Node equivalence_trail = reason;
+  Node current_reason;
+  TNode pointer, indexRep;
+  if (!index.isNull()) {
+    index_trail.push_back(index);
+    marked.insert(d_equalityEngine.getRepresentative(index));
+  }
+  while (arrayFrom != arrayTo) {
+    index = d_infoMap.getWeakEquivIndex(arrayFrom);
+    pointer = d_infoMap.getWeakEquivPointer(arrayFrom);
+    if (!index.isNull()) {
+      indexRep = d_equalityEngine.getRepresentative(index);
+      if (marked.find(indexRep) == marked.end() && weakEquivGetRepIndex(arrayFrom, index) != arrayTo) {
+        weakEquivMakeRepIndex(arrayFrom);
+        d_infoMap.setWeakEquivSecondary(arrayFrom, arrayTo);
+        current_reason = equivalence_trail;
+        for (it = index_trail.begin(), iend = index_trail.end(); it != iend; ++it) {
+          current_reason = current_reason.andNode(index.eqNode(*it).notNode());
+        }
+        d_permRef.push_back(current_reason);
+        d_infoMap.setWeakEquivSecondaryReason(arrayFrom, current_reason);
+      }
+      marked.insert(indexRep);
+    }
+    else {
+      equivalence_trail = equivalence_trail.andNode(arrayFrom.eqNode(pointer));
+    }
+    arrayFrom = pointer;
+  }
+}
+
+void TheoryArrays::checkWeakEquiv(bool arraysMerged) {
+  eq::EqClassesIterator eqcs_i = eq::EqClassesIterator(&d_mayEqualEqualityEngine);
+  for (; !eqcs_i.isFinished(); ++eqcs_i) {
+    Node eqc = (*eqcs_i);
+    if (!eqc.getType().isArray()) {
+      continue;
+    }
+    eq::EqClassIterator eqc_i = eq::EqClassIterator(eqc, &d_mayEqualEqualityEngine);
+    TNode rep = d_mayEqualEqualityEngine.getRepresentative(*eqc_i);
+    TNode weakEquivRep = weakEquivGetRep(rep);
+    for (; !eqc_i.isFinished(); ++eqc_i) {
+      TNode n = *eqc_i;
+      Assert(!arraysMerged || weakEquivGetRep(n) == weakEquivRep);
+      TNode pointer = d_infoMap.getWeakEquivPointer(n);
+      TNode index = d_infoMap.getWeakEquivIndex(n);
+      TNode secondary = d_infoMap.getWeakEquivSecondary(n);
+      Assert(pointer.isNull() == (weakEquivGetRep(n) == n));
+      Assert(!pointer.isNull() || secondary.isNull());
+      Assert(!index.isNull() || secondary.isNull());
+      Assert(d_infoMap.getWeakEquivSecondaryReason(n).isNull() || !secondary.isNull());
+      if (!pointer.isNull()) {
+        if (index.isNull()) {
+          Assert(d_equalityEngine.areEqual(n, pointer));
+        }
+        else {
+          Assert((n.getKind() == kind::STORE && n[0] == pointer && n[1] == index) ||
+                 (pointer.getKind() == kind::STORE && pointer[0] == n && pointer[1] == index));
+        }
+      }
+    }
+  }
+}
+
+/**
+ * Stores in d_infoMap the following information for each term a of type array:
+ *
+ *    - all i, such that there exists a term a[i] or a = store(b i v)
+ *      (i.e. all indices it is being read atl; store(b i v) is implicitly read at
+ *      position i due to the implicit axiom store(b i v)[i] = v )
+ *
+ *    - all the stores a is congruent to (this information is context dependent)
+ *
+ *    - all store terms of the form store (a i v) (i.e. in which a appears
+ *      directly; this is invariant because no new store terms are created)
+ *
+ * Note: completeness depends on having pre-register called on all the input
+ *       terms before starting to instantiate lemmas.
+ */
+void TheoryArrays::preRegisterTermInternal(TNode node)
+{
+  if (d_conflict) {
+    return;
+  }
+  Debug("arrays") << spaces(getSatContext()->getLevel()) << "TheoryArrays::preRegisterTerm(" << node << ")" << std::endl;
+  switch (node.getKind()) {
+  case kind::EQUAL:
+    // Add the trigger for equality
+    // NOTE: note that if the equality is true or false already, it might not be added
+    d_equalityEngine.addTriggerEquality(node);
+    break;
+  case kind::SELECT: {
+    // Invariant: array terms should be preregistered before being added to the equality engine
+    if (d_equalityEngine.hasTerm(node)) {
+      Assert(d_isPreRegistered.find(node) != d_isPreRegistered.end());
+      return;
+    }
+    // Reads
+    TNode store = d_equalityEngine.getRepresentative(node[0]);
+
+    // The may equal needs the store
+    d_mayEqualEqualityEngine.addTerm(store);
+
+    if (options::arraysLazyRIntro1() && !options::arraysWeakEquivalence()) {
+      // Apply RIntro1 rule to any stores equal to store if not done already
+      const CTNodeList* stores = d_infoMap.getStores(store);
+      CTNodeList::const_iterator it = stores->begin();
+      if (it != stores->end()) {
+        NodeManager* nm = NodeManager::currentNM();
+        TNode s = *it;
+        if (!d_infoMap.rIntro1Applied(s)) {
+          d_infoMap.setRIntro1Applied(s);
+          Assert(s.getKind()==kind::STORE);
+          Node ni = nm->mkNode(kind::SELECT, s, s[1]);
+          if (ni != node) {
+            preRegisterTermInternal(ni);
+          }
+          d_equalityEngine.assertEquality(ni.eqNode(s[2]), true, d_true, d_reasonRow1);
+          Assert(++it == stores->end());
+        }
+      }
+    }
+
+    if (node.getType().isArray()) {
+      d_mayEqualEqualityEngine.addTerm(node);
+      d_equalityEngine.addTriggerTerm(node, THEORY_ARRAY);
+    }
+    else {
+      d_equalityEngine.addTerm(node);
+    }
+    // Maybe it's a predicate
+    // TODO: remove this or keep it if we allow Boolean elements in arrays.
+    if (node.getType().isBoolean()) {
+      // Get triggered for both equal and dis-equal
+      d_equalityEngine.addTriggerPredicate(node);
+    }
+
+    Assert(d_equalityEngine.getRepresentative(store) == store);
+    d_infoMap.addIndex(store, node[1]);
+
+    // Synchronize d_constReadsContext with SAT context
+    Assert(d_constReadsContext->getLevel() <= getSatContext()->getLevel());
+    while (d_constReadsContext->getLevel() < getSatContext()->getLevel()) {
+      d_constReadsContext->push();
+    }
+
+    // Record read in sharing data structure
+    TNode index = d_equalityEngine.getRepresentative(node[1]);
+    if (!options::arraysWeakEquivalence() && index.isConst()) {
+      CTNodeList* temp;
+      CNodeNListMap::iterator it = d_constReads.find(index);
+      if (it == d_constReads.end()) {
+        temp = new(true) CTNodeList(d_constReadsContext);
+        d_constReads[index] = temp;
+      }
+      else {
+        temp = (*it).second;
+      }
+      temp->push_back(node);
+      d_constReadsList.push_back(node);
+    }
+    else {
+      d_reads.push_back(node);
+    }
+
+    Assert((d_isPreRegistered.insert(node), true));
+    checkRowForIndex(node[1], store);
+    break;
+  }
+  case kind::STORE: {
+    if (d_equalityEngine.hasTerm(node)) {
+      break;
+    }
+    d_equalityEngine.addTriggerTerm(node, THEORY_ARRAY);
+
+    TNode a = d_equalityEngine.getRepresentative(node[0]);
+
+    if (node.isConst()) {
+      // Can't use d_mayEqualEqualityEngine to merge node with a because they are both constants,
+      // so just set the default value manually for node.
+      Assert(a == node[0]);
+      d_mayEqualEqualityEngine.addTerm(node);
+      Assert(d_mayEqualEqualityEngine.getRepresentative(node) == node);
+      Assert(d_mayEqualEqualityEngine.getRepresentative(a) == a);
+      DefValMap::iterator it = d_defValues.find(a);
+      Assert(it != d_defValues.end());
+      d_defValues[node] = (*it).second;
+    }
+    else {
+      d_mayEqualEqualityEngine.assertEquality(node.eqNode(a), true, d_true);
+      Assert(d_mayEqualEqualityEngine.consistent());
+    }
+
+    if (!options::arraysLazyRIntro1() || options::arraysWeakEquivalence()) {
+      TNode i = node[1];
+      TNode v = node[2];
+      NodeManager* nm = NodeManager::currentNM();
+      Node ni = nm->mkNode(kind::SELECT, node, i);
+      if (!d_equalityEngine.hasTerm(ni)) {
+        preRegisterTermInternal(ni);
+      }
+
+      // Apply RIntro1 Rule
+      d_equalityEngine.assertEquality(ni.eqNode(v), true, d_true, d_reasonRow1);
+    }
+
+    d_infoMap.addStore(node, node);
+    d_infoMap.addInStore(a, node);
+    d_infoMap.setModelRep(node, node);
+
+    //Add-Store for Weak Equivalence
+    if (options::arraysWeakEquivalence()) {
+      Assert(weakEquivGetRep(node[0]) == weakEquivGetRep(a));
+      Assert(weakEquivGetRep(node) == node);
+      d_infoMap.setWeakEquivPointer(node, node[0]);
+      d_infoMap.setWeakEquivIndex(node, node[1]);
+#ifdef CVC4_ASSERTIONS
+      checkWeakEquiv(false);
+#endif
+    }
+
+    checkStore(node);
+    break;
+  }
+  case kind::STORE_ALL: {
+    if (d_equalityEngine.hasTerm(node)) {
+      break;
+    }
+    ArrayStoreAll storeAll = node.getConst<ArrayStoreAll>();
+    Node defaultValue = Node::fromExpr(storeAll.getExpr());
+    if (!defaultValue.isConst()) {
+      throw LogicException("Array theory solver does not yet support non-constant default values for arrays");
+    }
+    d_infoMap.setConstArr(node, node);
+    d_mayEqualEqualityEngine.addTerm(node);
+    Assert(d_mayEqualEqualityEngine.getRepresentative(node) == node);
+    d_equalityEngine.addTriggerTerm(node, THEORY_ARRAY);
+    d_defValues[node] = defaultValue;
+    break;
+  }
+  default:
+    // Variables etc
+    if (node.getType().isArray()) {
+      // The may equal needs the node
+      d_mayEqualEqualityEngine.addTerm(node);
+      d_equalityEngine.addTriggerTerm(node, THEORY_ARRAY);
+      Assert(d_equalityEngine.getSize(node) == 1);
+    }
+    else {
+      d_equalityEngine.addTerm(node);
+    }
+
+    break;
+  }
+  // Invariant: preregistered terms are exactly the terms in the equality engine
+  // Disabled, see comment above for kind::EQUAL
+  // Assert(d_equalityEngine.hasTerm(node) || !d_equalityEngine.consistent());
+}
+
+
+void TheoryArrays::preRegisterTerm(TNode node)
+{
+  preRegisterTermInternal(node);
+}
+
+
+void TheoryArrays::propagate(Effort e)
+{
+  // direct propagation now
+}
+
+
+Node TheoryArrays::explain(TNode literal) {
+  Node explanation = explain(literal, NULL);
+  return explanation;
+}
+
+Node TheoryArrays::explain(TNode literal, eq::EqProof *proof)
+{
+  ++d_numExplain;
+  Debug("arrays") << spaces(getSatContext()->getLevel()) << "TheoryArrays::explain(" << literal << ")" << std::endl;
+  std::vector<TNode> assumptions;
+  explain(literal, assumptions, proof);
+  return mkAnd(assumptions);
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// SHARING
+/////////////////////////////////////////////////////////////////////////////
+
+
+void TheoryArrays::addSharedTerm(TNode t) {
+  Debug("arrays::sharing") << spaces(getSatContext()->getLevel()) << "TheoryArrays::addSharedTerm(" << t << ")" << std::endl;
+  d_equalityEngine.addTriggerTerm(t, THEORY_ARRAY);
+  if (t.getType().isArray()) {
+    d_sharedArrays.insert(t);
+  }
+  else {
+#ifdef CVC4_ASSERTIONS
+    d_sharedOther.insert(t);
+#endif
+    d_sharedTerms = true;
+  }
+}
+
+
+EqualityStatus TheoryArrays::getEqualityStatus(TNode a, TNode b) {
+  Assert(d_equalityEngine.hasTerm(a) && d_equalityEngine.hasTerm(b));
+  if (d_equalityEngine.areEqual(a, b)) {
+    // The terms are implied to be equal
+    return EQUALITY_TRUE;
+  }
+  else if (d_equalityEngine.areDisequal(a, b, false)) {
+    // The terms are implied to be dis-equal
+    return EQUALITY_FALSE;
+  }
+  return EQUALITY_UNKNOWN;//FALSE_IN_MODEL;
+}
+
+
+void TheoryArrays::checkPair(TNode r1, TNode r2)
+{
+  Debug("arrays::sharing") << "TheoryArrays::computeCareGraph(): checking reads " << r1 << " and " << r2 << std::endl;
+
+  TNode x = r1[1];
+  TNode y = r2[1];
+  Assert(d_equalityEngine.isTriggerTerm(x, THEORY_ARRAY));
+
+  if (d_equalityEngine.hasTerm(x) && d_equalityEngine.hasTerm(y) &&
+      (d_equalityEngine.areEqual(x,y) || d_equalityEngine.areDisequal(x,y,false))) {
+    Debug("arrays::sharing") << "TheoryArrays::computeCareGraph(): equality known, skipping" << std::endl;
+    return;
+  }
+
+  // If the terms are already known to be equal, we are also in good shape
+  if (d_equalityEngine.areEqual(r1, r2)) {
+    Debug("arrays::sharing") << "TheoryArrays::computeCareGraph(): equal, skipping" << std::endl;
+    return;
+  }
+
+  if (r1[0] != r2[0]) {
+    // If arrays are known to be disequal, or cannot become equal, we can continue
+    Assert(d_mayEqualEqualityEngine.hasTerm(r1[0]) && d_mayEqualEqualityEngine.hasTerm(r2[0]));
+    if (r1[0].getType() != r2[0].getType() ||
+        d_equalityEngine.areDisequal(r1[0], r2[0], false)) {
+      Debug("arrays::sharing") << "TheoryArrays::computeCareGraph(): arrays can't be equal, skipping" << std::endl;
+      return;
+    }
+    else if (!d_mayEqualEqualityEngine.areEqual(r1[0], r2[0])) {
+      return;
+    }
+  }
+
+  if (!d_equalityEngine.isTriggerTerm(y, THEORY_ARRAY)) {
+    Debug("arrays::sharing") << "TheoryArrays::computeCareGraph(): not connected to shared terms, skipping" << std::endl;
+    return;
+  }
+
+  // Get representative trigger terms
+  TNode x_shared = d_equalityEngine.getTriggerTermRepresentative(x, THEORY_ARRAY);
+  TNode y_shared = d_equalityEngine.getTriggerTermRepresentative(y, THEORY_ARRAY);
+  EqualityStatus eqStatusDomain = d_valuation.getEqualityStatus(x_shared, y_shared);
+  switch (eqStatusDomain) {
+    case EQUALITY_TRUE_AND_PROPAGATED:
+      // Should have been propagated to us
+      Assert(false);
+      break;
+    case EQUALITY_TRUE:
+      // Missed propagation - need to add the pair so that theory engine can force propagation
+      Debug("arrays::sharing") << "TheoryArrays::computeCareGraph(): missed propagation" << std::endl;
+      break;
+    case EQUALITY_FALSE_AND_PROPAGATED:
+      // Should have been propagated to us
+      Assert(false);
+    case EQUALITY_FALSE:
+    case EQUALITY_FALSE_IN_MODEL:
+      // This is unlikely, but I think it could happen
+      Debug("arrays::sharing") << "TheoryArrays::computeCareGraph(): checkPair called when false in model" << std::endl;
+      return;
+    default:
+      // Covers EQUALITY_TRUE_IN_MODEL (common case) and EQUALITY_UNKNOWN
+      break;
+  }
+
+  // Add this pair
+  Debug("arrays::sharing") << "TheoryArrays::computeCareGraph(): adding to care-graph" << std::endl;
+  addCarePair(x_shared, y_shared);
+}
+
+
+void TheoryArrays::computeCareGraph()
+{
+  if (d_sharedArrays.size() > 0) {
+    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()) {
+          continue;
+        }
+        EqualityStatus eqStatusArr = getEqualityStatus((*it1), (*it2));
+        if (eqStatusArr != EQUALITY_UNKNOWN) {
+          continue;
+        }
+        Assert(d_valuation.getEqualityStatus((*it1), (*it2)) == EQUALITY_UNKNOWN);
+        addCarePair((*it1), (*it2));
+        ++d_numSharedArrayVarSplits;
+        return;
+      }
+    }
+  }
+  if (d_sharedTerms) {
+    // Synchronize d_constReadsContext with SAT context
+    Assert(d_constReadsContext->getLevel() <= getSatContext()->getLevel());
+    while (d_constReadsContext->getLevel() < getSatContext()->getLevel()) {
+      d_constReadsContext->push();
+    }
+
+    // Go through the read terms and see if there are any to split on
+
+    // Give constReadsContext a push so that all the work it does here is erased - models can change if context changes at all
+    // The context is popped at the end.  If this loop is interrupted for some reason, we have to make sure the context still
+    // gets popped or the solver will be in an inconsistent state
+    d_constReadsContext->push();
+    unsigned size = d_reads.size();
+    for (unsigned i = 0; i < size; ++ i) {
+      TNode r1 = d_reads[i];
+
+      Debug("arrays::sharing") << "TheoryArrays::computeCareGraph(): checking read " << r1 << std::endl;
+      Assert(d_equalityEngine.hasTerm(r1));
+      TNode x = r1[1];
+
+      if (!d_equalityEngine.isTriggerTerm(x, THEORY_ARRAY)) {
+        Debug("arrays::sharing") << "TheoryArrays::computeCareGraph(): not connected to shared terms, skipping" << std::endl;
+        continue;
+      }
+      Node x_shared = d_equalityEngine.getTriggerTermRepresentative(x, THEORY_ARRAY);
+
+      // Get the model value of index and find all reads that read from that same model value: these are the pairs we have to check
+      // Also, insert this read in the list at the proper index
+
+      if (!x_shared.isConst()) {
+        x_shared = d_valuation.getModelValue(x_shared);
+      }
+      if (!x_shared.isNull()) {
+        CTNodeList* temp;
+        CNodeNListMap::iterator it = d_constReads.find(x_shared);
+        if (it == d_constReads.end()) {
+          // This is the only x_shared with this model value - no need to create any splits
+          temp = new(true) CTNodeList(d_constReadsContext);
+          d_constReads[x_shared] = temp;
+        }
+        else {
+          temp = (*it).second;
+          for (size_t j = 0; j < temp->size(); ++j) {
+            checkPair(r1, (*temp)[j]);
+          }
+        }
+        temp->push_back(r1);
+      }
+      else {
+        // We don't know the model value for x.  Just do brute force examination of all pairs of reads
+        for (unsigned j = 0; j < size; ++j) {
+          TNode r2 = d_reads[j];
+          Assert(d_equalityEngine.hasTerm(r2));
+          checkPair(r1,r2);
+        }
+        for (unsigned j = 0; j < d_constReadsList.size(); ++j) {
+          TNode r2 = d_constReadsList[j];
+          Assert(d_equalityEngine.hasTerm(r2));
+          checkPair(r1,r2);
+        }
+      }
+    }
+    d_constReadsContext->pop();
+  }
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// MODEL GENERATION
+/////////////////////////////////////////////////////////////////////////////
+
+
+void TheoryArrays::collectModelInfo( TheoryModel* m, bool fullModel )
+{
+  set<Node> termSet;
+
+  // Compute terms appearing in assertions and shared terms
+  computeRelevantTerms(termSet);
+
+  // Compute arrays that we need to produce representatives for and also make sure RIntro1 reads are included in the relevant set of reads
+  NodeManager* nm = NodeManager::currentNM();
+  std::vector<Node> arrays;
+  bool computeRep, isArray;
+  eq::EqClassesIterator eqcs_i = eq::EqClassesIterator(&d_equalityEngine);
+  for (; !eqcs_i.isFinished(); ++eqcs_i) {
+    Node eqc = (*eqcs_i);
+    isArray = eqc.getType().isArray();
+    if (!isArray) {
+      continue;
+    }
+    computeRep = false;
+    eq::EqClassIterator eqc_i = eq::EqClassIterator(eqc, &d_equalityEngine);
+    for (; !eqc_i.isFinished(); ++eqc_i) {
+      Node n = *eqc_i;
+      // If this EC is an array type and it contains something other than STORE nodes, we have to compute a representative explicitly
+      if (isArray && termSet.find(n) != termSet.end()) {
+        if (n.getKind() == kind::STORE) {
+          // Make sure RIntro1 reads are included
+          Node r = nm->mkNode(kind::SELECT, n, n[1]);
+          Trace("arrays::collectModelInfo") << "TheoryArrays::collectModelInfo, adding RIntro1 read: " << r << endl;
+          termSet.insert(r);
+        }
+        else if (!computeRep) {
+          arrays.push_back(n);
+          computeRep = true;
+        }
+      }
+    }
+  }
+
+  // Now do a fixed-point iteration to get all reads that need to be included because of RIntro2 rule
+  bool changed;
+  do {
+    changed = false;
+    eqcs_i = eq::EqClassesIterator(&d_equalityEngine);
+    for (; !eqcs_i.isFinished(); ++eqcs_i) {
+      Node eqc = (*eqcs_i);
+      eq::EqClassIterator eqc_i = eq::EqClassIterator(eqc, &d_equalityEngine);
+      for (; !eqc_i.isFinished(); ++eqc_i) {
+        Node n = *eqc_i;
+        if (n.getKind() == kind::SELECT && termSet.find(n) != termSet.end()) {
+
+          // Find all terms equivalent to n[0] and get corresponding read terms
+          Node array_eqc = d_equalityEngine.getRepresentative(n[0]);
+          eq::EqClassIterator array_eqc_i = eq::EqClassIterator(array_eqc, &d_equalityEngine);
+          for (; !array_eqc_i.isFinished(); ++array_eqc_i) {
+            Node arr = *array_eqc_i;
+            if (arr.getKind() == kind::STORE &&
+                termSet.find(arr) != termSet.end() &&
+                !d_equalityEngine.areEqual(arr[1],n[1])) {
+              Node r = nm->mkNode(kind::SELECT, arr, n[1]);
+              if (termSet.find(r) == termSet.end() && d_equalityEngine.hasTerm(r)) {
+                Trace("arrays::collectModelInfo") << "TheoryArrays::collectModelInfo, adding RIntro2(a) read: " << r << endl;
+                termSet.insert(r);
+                changed = true;
+              }
+              r = nm->mkNode(kind::SELECT, arr[0], n[1]);
+              if (termSet.find(r) == termSet.end() && d_equalityEngine.hasTerm(r)) {
+                Trace("arrays::collectModelInfo") << "TheoryArrays::collectModelInfo, adding RIntro2(b) read: " << r << endl;
+                termSet.insert(r);
+                changed = true;
+              }
+            }
+          }
+
+          // Find all stores in which n[0] appears and get corresponding read terms
+          const CTNodeList* instores = d_infoMap.getInStores(array_eqc);
+          size_t it = 0;
+          for(; it < instores->size(); ++it) {
+            TNode instore = (*instores)[it];
+            Assert(instore.getKind()==kind::STORE);
+            if (termSet.find(instore) != termSet.end() &&
+                !d_equalityEngine.areEqual(instore[1],n[1])) {
+              Node r = nm->mkNode(kind::SELECT, instore, n[1]);
+              if (termSet.find(r) == termSet.end() && d_equalityEngine.hasTerm(r)) {
+                Trace("arrays::collectModelInfo") << "TheoryArrays::collectModelInfo, adding RIntro2(c) read: " << r << endl;
+                termSet.insert(r);
+                changed = true;
+              }
+              r = nm->mkNode(kind::SELECT, instore[0], n[1]);
+              if (termSet.find(r) == termSet.end() && d_equalityEngine.hasTerm(r)) {
+                Trace("arrays::collectModelInfo") << "TheoryArrays::collectModelInfo, adding RIntro2(d) read: " << r << endl;
+                termSet.insert(r);
+                changed = true;
+              }
+            }
+          }
+        }
+      }
+    }
+  } while (changed);
+
+  // Send the equality engine information to the model
+  m->assertEqualityEngine(&d_equalityEngine, &termSet);
+
+  // Build a list of all the relevant reads, indexed by the store representative
+  std::map<Node, std::vector<Node> > selects;
+  set<Node>::iterator set_it = termSet.begin(), set_it_end = termSet.end();
+  for (; set_it != set_it_end; ++set_it) {
+    Node n = *set_it;
+    // If this term is a select, record that the EC rep of its store parameter is being read from using this term
+    if (n.getKind() == kind::SELECT) {
+      selects[d_equalityEngine.getRepresentative(n[0])].push_back(n);
+    }
+  }
+
+  Node rep;
+  DefValMap::iterator it;
+  TypeSet defaultValuesSet;
+
+  // Compute all default values already in use
+  //if (fullModel) {
+    for (size_t i=0; i<arrays.size(); ++i) {
+      TNode nrep = d_equalityEngine.getRepresentative(arrays[i]);
+      d_mayEqualEqualityEngine.addTerm(nrep); // add the term in case it isn't there already
+      TNode mayRep = d_mayEqualEqualityEngine.getRepresentative(nrep);
+      it = d_defValues.find(mayRep);
+      if (it != d_defValues.end()) {
+        defaultValuesSet.add(nrep.getType().getArrayConstituentType(), (*it).second);
+      }
+    }
+  //}
+
+  // Loop through all array equivalence classes that need a representative computed
+  for (size_t i=0; i<arrays.size(); ++i) {
+    TNode n = arrays[i];
+    TNode nrep = d_equalityEngine.getRepresentative(n);
+
+    //if (fullModel) {
+      // Compute default value for this array - there is one default value for every mayEqual equivalence class
+      TNode mayRep = d_mayEqualEqualityEngine.getRepresentative(nrep);
+      it = d_defValues.find(mayRep);
+      // If this mayEqual EC doesn't have a default value associated, get the next available default value for the associated array element type
+      if (it == d_defValues.end()) {
+        TypeNode valueType = nrep.getType().getArrayConstituentType();
+        rep = defaultValuesSet.nextTypeEnum(valueType);
+        if (rep.isNull()) {
+          Assert(defaultValuesSet.getSet(valueType)->begin() != defaultValuesSet.getSet(valueType)->end());
+          rep = *(defaultValuesSet.getSet(valueType)->begin());
+        }
+        Trace("arrays-models") << "New default value = " << rep << endl;
+        d_defValues[mayRep] = rep;
+      }
+      else {
+        rep = (*it).second;
+      }
+
+      // Build the STORE_ALL term with the default value
+      rep = nm->mkConst(ArrayStoreAll(nrep.getType().toType(), rep.toExpr()));
+      /*
+    }
+    else {
+      std::hash_map<Node, Node, NodeHashFunction>::iterator it = d_skolemCache.find(n);
+      if (it == d_skolemCache.end()) {
+        rep = nm->mkSkolem("array_collect_model_var", n.getType(), "base model variable for array collectModelInfo");
+        d_skolemCache[n] = rep;
+      }
+      else {
+        rep = (*it).second;
+      }
+    }
+*/
+
+    // For each read, require that the rep stores the right value
+    vector<Node>& reads = selects[nrep];
+    for (unsigned j = 0; j < reads.size(); ++j) {
+      rep = nm->mkNode(kind::STORE, rep, reads[j][1], reads[j]);
+    }
+    m->assertEquality(n, rep, true);
+    if (!n.isConst()) {
+      m->assertRepresentative(rep);
+    }
+  }
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// NOTIFICATIONS
+/////////////////////////////////////////////////////////////////////////////
+
+
+void TheoryArrays::presolve()
+{
+  Trace("arrays")<<"Presolving \n";
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// MAIN SOLVER
+/////////////////////////////////////////////////////////////////////////////
+
+
+Node TheoryArrays::getSkolem(TNode ref, const string& name, const TypeNode& type, const string& comment, bool makeEqual)
+{
+  Node skolem;
+  std::hash_map<Node, Node, NodeHashFunction>::iterator it = d_skolemCache.find(ref);
+  if (it == d_skolemCache.end()) {
+    NodeManager* nm = NodeManager::currentNM();
+    skolem = nm->mkSkolem(name, type, comment);
+    d_skolemCache[ref] = skolem;
+  }
+  else {
+    skolem = (*it).second;
+    if (d_equalityEngine.hasTerm(ref) &&
+        d_equalityEngine.hasTerm(skolem) &&
+        d_equalityEngine.areEqual(ref, skolem)) {
+      makeEqual = false;
+    }
+  }
+
+  Debug("pf::array") << "Pregistering a Skolem" << std::endl;
+  preRegisterTermInternal(skolem);
+  Debug("pf::array") << "Pregistering a Skolem DONE" << std::endl;
+
+  if (makeEqual) {
+    Node d = skolem.eqNode(ref);
+    Debug("arrays-model-based") << "Asserting skolem equality " << d << endl;
+    d_equalityEngine.assertEquality(d, true, d_true);
+    Assert(!d_conflict);
+    d_skolemAssertions.push_back(d);
+    d_skolemIndex = d_skolemIndex + 1;
+  }
+
+  Debug("pf::array") << "getSkolem DONE" << std::endl;
+  return skolem;
+}
+
+
+void TheoryArrays::check(Effort e) {
+  if (done() && !fullEffort(e)) {
+    return;
+  }
+
+  getOutputChannel().spendResource(options::theoryCheckStep());
+
+  TimerStat::CodeTimer checkTimer(d_checkTime);
+
+  while (!done() && !d_conflict)
+  {
+    // Get all the assertions
+    Assertion assertion = get();
+    TNode fact = assertion.assertion;
+
+    Debug("arrays") << spaces(getSatContext()->getLevel()) << "TheoryArrays::check(): processing " << fact << std::endl;
+
+    bool polarity = fact.getKind() != kind::NOT;
+    TNode atom = polarity ? fact : fact[0];
+
+    if (!assertion.isPreregistered) {
+      if (atom.getKind() == kind::EQUAL) {
+        if (!d_equalityEngine.hasTerm(atom[0])) {
+          Assert(atom[0].isConst());
+          d_equalityEngine.addTerm(atom[0]);
+        }
+        if (!d_equalityEngine.hasTerm(atom[1])) {
+          Assert(atom[1].isConst());
+          d_equalityEngine.addTerm(atom[1]);
+        }
+      }
+    }
+
+    // Do the work
+    switch (fact.getKind()) {
+      case kind::EQUAL:
+        d_equalityEngine.assertEquality(fact, true, fact);
+        break;
+      case kind::SELECT:
+        d_equalityEngine.assertPredicate(fact, true, fact);
+        break;
+      case kind::NOT:
+        if (fact[0].getKind() == kind::SELECT) {
+          d_equalityEngine.assertPredicate(fact[0], false, fact);
+        } else if (!d_equalityEngine.areDisequal(fact[0][0], fact[0][1], false)) {
+          // Assert the dis-equality
+          d_equalityEngine.assertEquality(fact[0], false, fact);
+
+          // Apply ArrDiseq Rule if diseq is between arrays
+          if(fact[0][0].getType().isArray() && !d_conflict) {
+            if (d_conflict) { Debug("pf::array") << "Entering the skolemization branch" << std::endl; }
+
+            NodeManager* nm = NodeManager::currentNM();
+            TypeNode indexType = fact[0][0].getType()[0];
+
+            TNode k;
+            // k is the skolem for this disequality.
+            if (!d_proofsEnabled) {
+              Debug("pf::array") << "Check: kind::NOT: array theory making a skolem" << std::endl;
+
+              // If not in replay mode, generate a fresh skolem variable
+              k = getSkolem(fact,
+                            "array_ext_index",
+                            indexType,
+                            "an extensional lemma index variable from the theory of arrays",
+                            false);
+
+              // Register this skolem for the proof replay phase
+              PROOF(ProofManager::getSkolemizationManager()->registerSkolem(fact, k));
+            } else {
+              if (!ProofManager::getSkolemizationManager()->hasSkolem(fact)) {
+                // In the solution pass we didn't need this skolem. Therefore, we don't need it
+                // in this reply pass, either.
+                break;
+              }
+
+              // Reuse the same skolem as in the solution pass
+              k = ProofManager::getSkolemizationManager()->getSkolem(fact);
+              Debug("pf::array") << "Skolem = " << k << std::endl;
+            }
+
+            Node ak = nm->mkNode(kind::SELECT, fact[0][0], k);
+            Node bk = nm->mkNode(kind::SELECT, fact[0][1], k);
+            Node eq = ak.eqNode(bk);
+            Node lemma = fact[0].orNode(eq.notNode());
+
+            // In solve mode we don't care if ak and bk are registered. If they aren't, they'll be registered
+            // when we output the lemma. However, in replay need the lemma to be propagated, and so we
+            // preregister manually.
+            if (d_proofsEnabled) {
+              if (!d_equalityEngine.hasTerm(ak)) { preRegisterTermInternal(ak); }
+              if (!d_equalityEngine.hasTerm(bk)) { preRegisterTermInternal(bk); }
+            }
+
+            if (options::arraysPropagate() > 0 && d_equalityEngine.hasTerm(ak) && d_equalityEngine.hasTerm(bk)) {
+              // Propagate witness disequality - might produce a conflict
+              d_permRef.push_back(lemma);
+              Debug("pf::array") << "Asserting to the equality engine:" << std::endl
+                                 << "\teq = " << eq << std::endl
+                                 << "\treason = " << fact << std::endl;
+
+              d_equalityEngine.assertEquality(eq, false, fact, d_reasonExt);
+              ++d_numProp;
+            }
+
+            if (!d_proofsEnabled) {
+              // If this is the solution pass, generate the lemma. Otherwise, don't generate it -
+              // as this is the lemma that we're reproving...
+              Trace("arrays-lem")<<"Arrays::addExtLemma " << lemma <<"\n";
+              d_out->lemma(lemma);
+              ++d_numExt;
+            }
+          } else {
+            Debug("pf::array") << "Check: kind::NOT: array theory NOT making a skolem" << std::endl;
+            d_modelConstraints.push_back(fact);
+          }
+        }
+        break;
+    default:
+      Unreachable();
+      break;
+    }
+  }
+
+  if ((options::arraysEagerLemmas() || fullEffort(e)) && !d_conflict && options::arraysWeakEquivalence()) {
+    // Replay all array merges to update weak equivalence data structures
+    context::CDList<Node>::iterator it = d_arrayMerges.begin(), iend = d_arrayMerges.end();
+    TNode a, b, eq;
+    for (; it != iend; ++it) {
+      eq = *it;
+      a = eq[0];
+      b = eq[1];
+      weakEquivMakeRep(b);
+      if (weakEquivGetRep(a) == b) {
+        weakEquivAddSecondary(TNode(), a, b, eq);
+      }
+      else {
+        d_infoMap.setWeakEquivPointer(b, a);
+        d_infoMap.setWeakEquivIndex(b, TNode());
+      }
+#ifdef CVC4_ASSERTIONS
+    checkWeakEquiv(false);
+#endif
+    }
+#ifdef CVC4_ASSERTIONS
+    checkWeakEquiv(true);
+#endif
+
+    d_readTableContext->push();
+    TNode mayRep, iRep;
+    CTNodeList* bucketList = NULL;
+    CTNodeList::const_iterator i = d_reads.begin(), readsEnd = d_reads.end();
+    for (; i != readsEnd; ++i) {
+      const TNode& r = *i;
+
+      Debug("arrays::weak") << "TheoryArrays::check(): checking read " << r << std::endl;
+
+      // Find the bucket for this read.
+      mayRep = d_mayEqualEqualityEngine.getRepresentative(r[0]);
+      iRep = d_equalityEngine.getRepresentative(r[1]);
+      std::pair<TNode, TNode> key(mayRep, iRep);
+      ReadBucketMap::iterator it = d_readBucketTable.find(key);
+      if (it == d_readBucketTable.end()) {
+        bucketList = new(true) CTNodeList(d_readTableContext);
+        d_readBucketAllocations.push_back(bucketList);
+        d_readBucketTable[key] = bucketList;
+      }
+      else {
+        bucketList = it->second;
+      }
+      CTNodeList::const_iterator it2 = bucketList->begin(), iend = bucketList->end();
+      for (; it2 != iend; ++it2) {
+        const TNode& r2 = *it2;
+        Assert(r2.getKind() == kind::SELECT);
+        Assert(mayRep == d_mayEqualEqualityEngine.getRepresentative(r2[0]));
+        Assert(iRep == d_equalityEngine.getRepresentative(r2[1]));
+        if (d_equalityEngine.areEqual(r, r2)) {
+          continue;
+        }
+        if (weakEquivGetRepIndex(r[0], r[1]) == weakEquivGetRepIndex(r2[0], r[1])) {
+          // add lemma: r[1] = r2[1] /\ cond(r[0],r2[0]) => r = r2
+          vector<TNode> conjunctions;
+          Assert(d_equalityEngine.areEqual(r, Rewriter::rewrite(r)));
+          Assert(d_equalityEngine.areEqual(r2, Rewriter::rewrite(r2)));
+          Node lemma = Rewriter::rewrite(r).eqNode(Rewriter::rewrite(r2)).negate();
+          d_permRef.push_back(lemma);
+          conjunctions.push_back(lemma);
+          if (r[1] != r2[1]) {
+            d_equalityEngine.explainEquality(r[1], r2[1], true, conjunctions);
+          }
+          // TODO: get smaller lemmas by eliminating shared parts of path
+          weakEquivBuildCond(r[0], r[1], conjunctions);
+          weakEquivBuildCond(r2[0], r[1], conjunctions);
+          lemma = mkAnd(conjunctions, true);
+          // LSH FIXME: which kind of arrays lemma is this
+          Trace("arrays-lem") << "Arrays::addExtLemma " << lemma <<"\n";
+          d_out->lemma(lemma, RULE_INVALID, false, false, true);
+          d_readTableContext->pop();
+          Trace("arrays") << spaces(getSatContext()->getLevel()) << "Arrays::check(): done" << endl;
+          return;
+        }
+      }
+      bucketList->push_back(r);
+    }
+    d_readTableContext->pop();
+  }
+
+  if(!options::arraysEagerLemmas() && fullEffort(e) && !d_conflict && !options::arraysWeakEquivalence()) {
+    // generate the lemmas on the worklist
+    Trace("arrays-lem")<< "Arrays::discharging lemmas. Number of queued lemmas: " << d_RowQueue.size() << "\n";
+    while (d_RowQueue.size() > 0 && !d_conflict) {
+      if (dischargeLemmas()) {
+        break;
+      }
+    }
+  }
+
+  Trace("arrays") << spaces(getSatContext()->getLevel()) << "Arrays::check(): done" << endl;
+}
+
+
+Node TheoryArrays::mkAnd(std::vector<TNode>& conjunctions, bool invert, unsigned startIndex)
+{
+  Assert(conjunctions.size() > 0);
+
+  std::set<TNode> all;
+  std::set<TNode> explained;
+
+  unsigned i = startIndex;
+  TNode t;
+  for (; i < conjunctions.size(); ++i) {
+    t = conjunctions[i];
+    if (t == d_true) {
+      continue;
+    }
+    else if (t.getKind() == kind::AND) {
+      for(TNode::iterator child_it = t.begin(); child_it != t.end(); ++child_it) {
+        if (*child_it == d_true) {
+          continue;
+        }
+        all.insert(*child_it);
+      }
+    }
+    else if (t.getKind() == kind::OR) {
+      // Expand explanation resulting from propagating a ROW or EXT lemma
+      if ((explained.find(t) == explained.end())) {
+        if (t[1].getKind() == kind::EQUAL) {
+          // ROW lemma
+          d_equalityEngine.explainEquality(t[1][0], t[1][1], false, conjunctions);
+          explained.insert(t);
+        } else {
+          // EXT lemma
+          Assert(t[1].getKind() == kind::NOT && t[1][0].getKind() == kind::EQUAL);
+          Assert(t[0].getKind() == kind::EQUAL);
+          all.insert(t[0].notNode());
+          explained.insert(t);
+        }
+      }
+    }
+    else {
+      all.insert(t);
+    }
+  }
+
+  if (all.size() == 0) {
+    return invert ? d_false : d_true;
+  }
+  if (all.size() == 1) {
+    // All the same, or just one
+    if (invert) {
+      return (*(all.begin())).negate();
+    }
+    else {
+      return *(all.begin());
+    }
+  }
+
+  NodeBuilder<> conjunction(invert ? kind::OR : kind::AND);
+  std::set<TNode>::const_iterator it = all.begin();
+  std::set<TNode>::const_iterator it_end = all.end();
+  while (it != it_end) {
+    if (invert) {
+      conjunction << (*it).negate();
+    }
+    else {
+      conjunction << *it;
+    }
+    ++ it;
+  }
+
+  return conjunction;
+}
+
+
+void TheoryArrays::setNonLinear(TNode a)
+{
+  if (options::arraysWeakEquivalence()) return;
+  if (d_infoMap.isNonLinear(a)) return;
+
+  Trace("arrays") << spaces(getSatContext()->getLevel()) << "Arrays::setNonLinear (" << a << ")\n";
+  d_infoMap.setNonLinear(a);
+  ++d_numNonLinear;
+
+  const CTNodeList* i_a = d_infoMap.getIndices(a);
+  const CTNodeList* st_a = d_infoMap.getStores(a);
+  const CTNodeList* inst_a = d_infoMap.getInStores(a);
+
+  size_t it = 0;
+
+  // Propagate non-linearity down chain of stores
+  for( ; it < st_a->size(); ++it) {
+    TNode store = (*st_a)[it];
+    Assert(store.getKind()==kind::STORE);
+    setNonLinear(store[0]);
+  }
+
+  // Instantiate ROW lemmas that were ignored before
+  size_t it2 = 0;
+  RowLemmaType lem;
+  for(; it2 < i_a->size(); ++it2) {
+    TNode i = (*i_a)[it2];
+    it = 0;
+    for ( ; it < inst_a->size(); ++it) {
+      TNode store = (*inst_a)[it];
+      Assert(store.getKind() == kind::STORE);
+      TNode j = store[1];
+      TNode c = store[0];
+      lem = make_quad(store, c, j, i);
+      Trace("arrays-lem") << spaces(getSatContext()->getLevel()) <<"Arrays::setNonLinear ("<<store<<", "<<c<<", "<<j<<", "<<i<<")\n";
+      queueRowLemma(lem);
+    }
+  }
+
+}
+
+/*****
+ * When two array equivalence classes are merged, we may need to apply RIntro1 to a store in one of the EC's
+ * Here, we check the stores in a to see if any need RIntro1 applied
+ * We apply RIntro1 whenever:
+ * (a) a store becomes equal to another store
+ * (b) a store becomes equal to any term t such that read(t,i) exists
+ * (c) a store becomes equal to the root array of the store (i.e. store(store(...store(a,i,v)...)) = a)
+ */
+void TheoryArrays::checkRIntro1(TNode a, TNode b)
+{
+  const CTNodeList* astores = d_infoMap.getStores(a);
+  // Apply RIntro1 if applicable
+  CTNodeList::const_iterator it = astores->begin();
+
+  if (it == astores->end()) {
+    // No stores in this equivalence class - return
+    return;
+  }
+
+  ++it;
+  if (it != astores->end()) {
+    // More than one store: should have already been applied
+    Assert(d_infoMap.rIntro1Applied(*it));
+    Assert(d_infoMap.rIntro1Applied(*(--it)));
+    return;
+  }
+
+  // Exactly one store - see if we need to apply RIntro1
+  --it;
+  TNode s = *it;
+  Assert(s.getKind() == kind::STORE);
+  if (d_infoMap.rIntro1Applied(s)) {
+    // RIntro1 already applied to s
+    return;
+  }
+
+  // Should be no reads from this EC
+  Assert(d_infoMap.getIndices(a)->begin() == d_infoMap.getIndices(a)->end());
+
+  bool apply = false;
+  if (d_infoMap.getStores(b)->size() > 0) {
+    // Case (a): two stores become equal
+    apply = true;
+  }
+  else {
+    const CTNodeList* i_b = d_infoMap.getIndices(b);
+    if (i_b->begin() != i_b->end()) {
+      // Case (b): there are reads from b
+      apply = true;
+    }
+    else {
+      // Get root array of s
+      TNode e1 = s[0];
+      while (e1.getKind() == kind::STORE) {
+        e1 = e1[0];
+      }
+      Assert(d_equalityEngine.hasTerm(e1));
+      Assert(d_equalityEngine.hasTerm(b));
+      if (d_equalityEngine.areEqual(e1, b)) {
+        apply = true;
+      }
+    }
+  }
+
+  if (apply) {
+    NodeManager* nm = NodeManager::currentNM();
+    d_infoMap.setRIntro1Applied(s);
+    Node ni = nm->mkNode(kind::SELECT, s, s[1]);
+    preRegisterTermInternal(ni);
+    d_equalityEngine.assertEquality(ni.eqNode(s[2]), true, d_true, d_reasonRow1);
+  }
+}
+
+
+
+
+void TheoryArrays::mergeArrays(TNode a, TNode b)
+{
+  // Note: a is the new representative
+  Assert(a.getType().isArray() && b.getType().isArray());
+
+  if (d_mergeInProgress) {
+    // Nested call to mergeArrays, just push on the queue and return
+    d_mergeQueue.push(a.eqNode(b));
+    return;
+  }
+
+  d_mergeInProgress = true;
+
+  Node n;
+  while (true) {
+    Trace("arrays-merge") << spaces(getSatContext()->getLevel()) << "Arrays::merge: " << a << "," << b << ")\n";
+
+    if (options::arraysLazyRIntro1() && !options::arraysWeakEquivalence()) {
+      checkRIntro1(a, b);
+      checkRIntro1(b, a);
+    }
+
+    if (options::arraysOptimizeLinear() && !options::arraysWeakEquivalence()) {
+      bool aNL = d_infoMap.isNonLinear(a);
+      bool bNL = d_infoMap.isNonLinear(b);
+      if (aNL) {
+        if (bNL) {
+          // already both marked as non-linear - no need to do anything
+        }
+        else {
+          // Set b to be non-linear
+          setNonLinear(b);
+        }
+      }
+      else {
+        if (bNL) {
+          // Set a to be non-linear
+          setNonLinear(a);
+        }
+        else {
+          // Check for new non-linear arrays
+          const CTNodeList* astores = d_infoMap.getStores(a);
+          const CTNodeList* bstores = d_infoMap.getStores(b);
+          Assert(astores->size() <= 1 && bstores->size() <= 1);
+          if (astores->size() > 0 && bstores->size() > 0) {
+            setNonLinear(a);
+            setNonLinear(b);
+          }
+        }
+      }
+    }
+
+    TNode constArrA = d_infoMap.getConstArr(a);
+    TNode constArrB = d_infoMap.getConstArr(b);
+    if (constArrA.isNull()) {
+      if (!constArrB.isNull()) {
+        d_infoMap.setConstArr(a,constArrB);
+      }
+    }
+    else if (!constArrB.isNull()) {
+      if (constArrA != constArrB) {
+        conflict(constArrA,constArrB);
+      }
+    }
+
+    // If a and b have different default values associated with their mayequal equivalence classes,
+    // things get complicated - disallow this for now.  -Clark
+    TNode mayRepA = d_mayEqualEqualityEngine.getRepresentative(a);
+    TNode mayRepB = d_mayEqualEqualityEngine.getRepresentative(b);
+
+    DefValMap::iterator it = d_defValues.find(mayRepA);
+    DefValMap::iterator it2 = d_defValues.find(mayRepB);
+    TNode defValue;
+
+    if (it != d_defValues.end()) {
+      defValue = (*it).second;
+      if (it2 != d_defValues.end() && (defValue != (*it2).second)) {
+        throw LogicException("Array theory solver does not yet support write-chains connecting two different constant arrays");
+      }
+    }
+    else if (it2 != d_defValues.end()) {
+      defValue = (*it2).second;
+    }
+    d_mayEqualEqualityEngine.assertEquality(a.eqNode(b), true, d_true);
+    Assert(d_mayEqualEqualityEngine.consistent());
+    if (!defValue.isNull()) {
+      mayRepA = d_mayEqualEqualityEngine.getRepresentative(a);
+      d_defValues[mayRepA] = defValue;
+    }
+
+    checkRowLemmas(a,b);
+    checkRowLemmas(b,a);
+
+    // merge info adds the list of the 2nd argument to the first
+    d_infoMap.mergeInfo(a, b);
+
+    if (options::arraysWeakEquivalence()) {
+      d_arrayMerges.push_back(a.eqNode(b));
+    }
+
+    // If no more to do, break
+    if (d_conflict || d_mergeQueue.empty()) {
+      break;
+    }
+
+    // Otherwise, prepare for next iteration
+    n = d_mergeQueue.front();
+    a = n[0];
+    b = n[1];
+    d_mergeQueue.pop();
+  }
+  d_mergeInProgress = false;
+}
+
+
+void TheoryArrays::checkStore(TNode a) {
+  if (options::arraysWeakEquivalence()) return;
+  Trace("arrays-cri")<<"Arrays::checkStore "<<a<<"\n";
+
+  if(Trace.isOn("arrays-cri")) {
+    d_infoMap.getInfo(a)->print();
+  }
+  Assert(a.getType().isArray());
+  Assert(a.getKind()==kind::STORE);
+  TNode b = a[0];
+  TNode i = a[1];
+
+  TNode brep = d_equalityEngine.getRepresentative(b);
+
+  if (!options::arraysOptimizeLinear() || d_infoMap.isNonLinear(brep)) {
+    const CTNodeList* js = d_infoMap.getIndices(brep);
+    size_t it = 0;
+    RowLemmaType lem;
+    for(; it < js->size(); ++it) {
+      TNode j = (*js)[it];
+      if (i == j) continue;
+      lem = make_quad(a,b,i,j);
+      Trace("arrays-lem") << spaces(getSatContext()->getLevel()) <<"Arrays::checkStore ("<<a<<", "<<b<<", "<<i<<", "<<j<<")\n";
+      queueRowLemma(lem);
+    }
+  }
+}
+
+
+void TheoryArrays::checkRowForIndex(TNode i, TNode a)
+{
+  if (options::arraysWeakEquivalence()) return;
+  Trace("arrays-cri")<<"Arrays::checkRowForIndex "<<a<<"\n";
+  Trace("arrays-cri")<<"                   index "<<i<<"\n";
+
+  if(Trace.isOn("arrays-cri")) {
+    d_infoMap.getInfo(a)->print();
+  }
+  Assert(a.getType().isArray());
+  Assert(d_equalityEngine.getRepresentative(a) == a);
+
+  TNode constArr = d_infoMap.getConstArr(a);
+  if (!constArr.isNull()) {
+    ArrayStoreAll storeAll = constArr.getConst<ArrayStoreAll>();
+    Node defValue = Node::fromExpr(storeAll.getExpr());
+    Node selConst = NodeManager::currentNM()->mkNode(kind::SELECT, constArr, i);
+    if (!d_equalityEngine.hasTerm(selConst)) {
+      preRegisterTermInternal(selConst);
+    }
+    d_equalityEngine.assertEquality(selConst.eqNode(defValue), true, d_true);
+  }
+
+  const CTNodeList* stores = d_infoMap.getStores(a);
+  const CTNodeList* instores = d_infoMap.getInStores(a);
+  size_t it = 0;
+  RowLemmaType lem;
+
+  for(; it < stores->size(); ++it) {
+    TNode store = (*stores)[it];
+    Assert(store.getKind()==kind::STORE);
+    TNode j = store[1];
+    if (i == j) continue;
+    lem = make_quad(store, store[0], j, i);
+    Trace("arrays-lem") << spaces(getSatContext()->getLevel()) <<"Arrays::checkRowForIndex ("<<store<<", "<<store[0]<<", "<<j<<", "<<i<<")\n";
+    queueRowLemma(lem);
+  }
+
+  if (!options::arraysOptimizeLinear() || d_infoMap.isNonLinear(a)) {
+    it = 0;
+    for(; it < instores->size(); ++it) {
+      TNode instore = (*instores)[it];
+      Assert(instore.getKind()==kind::STORE);
+      TNode j = instore[1];
+      if (i == j) continue;
+      lem = make_quad(instore, instore[0], j, i);
+      Trace("arrays-lem") << spaces(getSatContext()->getLevel()) <<"Arrays::checkRowForIndex ("<<instore<<", "<<instore[0]<<", "<<j<<", "<<i<<")\n";
+      queueRowLemma(lem);
+    }
+  }
+}
+
+
+// a just became equal to b
+// look for new ROW lemmas
+void TheoryArrays::checkRowLemmas(TNode a, TNode b)
+{
+  if (options::arraysWeakEquivalence()) return;
+  Trace("arrays-crl")<<"Arrays::checkLemmas begin \n"<<a<<"\n";
+  if(Trace.isOn("arrays-crl"))
+    d_infoMap.getInfo(a)->print();
+  Trace("arrays-crl")<<"  ------------  and "<<b<<"\n";
+  if(Trace.isOn("arrays-crl"))
+    d_infoMap.getInfo(b)->print();
+
+  const CTNodeList* i_a = d_infoMap.getIndices(a);
+  size_t it = 0;
+  TNode constArr = d_infoMap.getConstArr(b);
+  if (!constArr.isNull()) {
+    for( ; it < i_a->size(); ++it) {
+      TNode i = (*i_a)[it];
+      Node selConst = NodeManager::currentNM()->mkNode(kind::SELECT, constArr, i);
+      if (!d_equalityEngine.hasTerm(selConst)) {
+        preRegisterTermInternal(selConst);
+      }
+    }
+  }
+
+  const CTNodeList* st_b = d_infoMap.getStores(b);
+  const CTNodeList* inst_b = d_infoMap.getInStores(b);
+  size_t its;
+
+  RowLemmaType lem;
+
+  for(it = 0 ; it < i_a->size(); ++it) {
+    TNode i = (*i_a)[it];
+    its = 0;
+    for ( ; its < st_b->size(); ++its) {
+      TNode store = (*st_b)[its];
+      Assert(store.getKind() == kind::STORE);
+      TNode j = store[1];
+      TNode c = store[0];
+      lem = make_quad(store, c, j, i);
+      Trace("arrays-lem") << spaces(getSatContext()->getLevel()) <<"Arrays::checkRowLemmas ("<<store<<", "<<c<<", "<<j<<", "<<i<<")\n";
+      queueRowLemma(lem);
+    }
+  }
+
+  if (!options::arraysOptimizeLinear() || d_infoMap.isNonLinear(b)) {
+    for(it = 0 ; it < i_a->size(); ++it ) {
+      TNode i = (*i_a)[it];
+      its = 0;
+      for ( ; its < inst_b->size(); ++its) {
+        TNode store = (*inst_b)[its];
+        Assert(store.getKind() == kind::STORE);
+        TNode j = store[1];
+        TNode c = store[0];
+        lem = make_quad(store, c, j, i);
+        Trace("arrays-lem") << spaces(getSatContext()->getLevel()) <<"Arrays::checkRowLemmas ("<<store<<", "<<c<<", "<<j<<", "<<i<<")\n";
+        queueRowLemma(lem);
+      }
+    }
+  }
+  Trace("arrays-crl")<<"Arrays::checkLemmas done.\n";
+}
+
+void TheoryArrays::propagate(RowLemmaType lem)
+{
+  Debug("pf::array") << "TheoryArrays: RowLemma Propagate called. options::arraysPropagate() = "
+                     << options::arraysPropagate() << std::endl;
+
+  TNode a = lem.first;
+  TNode b = lem.second;
+  TNode i = lem.third;
+  TNode j = lem.fourth;
+
+  Assert(a.getType().isArray() && b.getType().isArray());
+  if (d_equalityEngine.areEqual(a,b) ||
+      d_equalityEngine.areEqual(i,j)) {
+    return;
+  }
+
+  NodeManager* nm = NodeManager::currentNM();
+  Node aj = nm->mkNode(kind::SELECT, a, j);
+  Node bj = nm->mkNode(kind::SELECT, b, j);
+
+  // Try to avoid introducing new read terms: track whether these already exist
+  bool ajExists = d_equalityEngine.hasTerm(aj);
+  bool bjExists = d_equalityEngine.hasTerm(bj);
+  bool bothExist = ajExists && bjExists;
+
+  // If propagating, check propagations
+  int prop = options::arraysPropagate();
+  if (prop > 0) {
+    if (d_equalityEngine.areDisequal(i,j,true) && (bothExist || prop > 1)) {
+      Trace("arrays-lem") << spaces(getSatContext()->getLevel()) <<"Arrays::queueRowLemma: propagating aj = bj ("<<aj<<", "<<bj<<")\n";
+      Node aj_eq_bj = aj.eqNode(bj);
+      Node i_eq_j = i.eqNode(j);
+      Node reason = nm->mkNode(kind::OR, aj_eq_bj, i_eq_j);
+      d_permRef.push_back(reason);
+      if (!ajExists) {
+        preRegisterTermInternal(aj);
+      }
+      if (!bjExists) {
+        preRegisterTermInternal(bj);
+      }
+      d_equalityEngine.assertEquality(aj_eq_bj, true, reason, d_reasonRow);
+      ++d_numProp;
+      return;
+    }
+    if (bothExist && d_equalityEngine.areDisequal(aj,bj,true)) {
+      Trace("arrays-lem") << spaces(getSatContext()->getLevel()) <<"Arrays::queueRowLemma: propagating i = j ("<<i<<", "<<j<<")\n";
+      Node aj_eq_bj = aj.eqNode(bj);
+      Node i_eq_j = i.eqNode(j);
+      Node reason = nm->mkNode(kind::OR, i_eq_j, aj_eq_bj);
+      d_permRef.push_back(reason);
+      d_equalityEngine.assertEquality(i_eq_j, true, reason, d_reasonRow);
+      ++d_numProp;
+      return;
+    }
+  }
+}
+
+void TheoryArrays::queueRowLemma(RowLemmaType lem)
+{
+  Debug("pf::array") << "Array solver: queue row lemma called" << std::endl;
+
+  if (d_conflict || d_RowAlreadyAdded.contains(lem)) {
+    return;
+  }
+  TNode a = lem.first;
+  TNode b = lem.second;
+  TNode i = lem.third;
+  TNode j = lem.fourth;
+
+  Assert(a.getType().isArray() && b.getType().isArray());
+  if (d_equalityEngine.areEqual(a,b) ||
+      d_equalityEngine.areEqual(i,j)) {
+    return;
+  }
+
+  NodeManager* nm = NodeManager::currentNM();
+  Node aj = nm->mkNode(kind::SELECT, a, j);
+  Node bj = nm->mkNode(kind::SELECT, b, j);
+
+  // Try to avoid introducing new read terms: track whether these already exist
+  bool ajExists = d_equalityEngine.hasTerm(aj);
+  bool bjExists = d_equalityEngine.hasTerm(bj);
+  bool bothExist = ajExists && bjExists;
+
+  // If propagating, check propagations
+  int prop = options::arraysPropagate();
+  if (prop > 0) {
+    propagate(lem);
+  }
+
+  // If equivalent lemma already exists, don't enqueue this one
+  if (d_useArrTable) {
+    Node tableEntry = NodeManager::currentNM()->mkNode(kind::ARR_TABLE_FUN, a, b, i, j);
+    if (d_equalityEngine.getSize(tableEntry) != 1) {
+      return;
+    }
+  }
+
+  // Prefer equality between indexes so as not to introduce new read terms
+  if (options::arraysEagerIndexSplitting() && !bothExist && !d_equalityEngine.areDisequal(i,j, false)) {
+    Node i_eq_j;
+    if (!d_proofsEnabled) {
+      i_eq_j = d_valuation.ensureLiteral(i.eqNode(j)); // TODO: think about this
+    } else {
+      i_eq_j = i.eqNode(j);
+    }
+
+    getOutputChannel().requirePhase(i_eq_j, true);
+    d_decisionRequests.push(i_eq_j);
+  }
+
+  // TODO: maybe add triggers here
+
+  if ((options::arraysEagerLemmas() || bothExist) && !d_proofsEnabled) {
+    // Make sure that any terms introduced by rewriting are appropriately stored in the equality database
+    Node aj2 = Rewriter::rewrite(aj);
+    if (aj != aj2) {
+      if (!ajExists) {
+        preRegisterTermInternal(aj);
+      }
+      if (!d_equalityEngine.hasTerm(aj2)) {
+        preRegisterTermInternal(aj2);
+      }
+      d_equalityEngine.assertEquality(aj.eqNode(aj2), true, d_true);
+    }
+    Node bj2 = Rewriter::rewrite(bj);
+    if (bj != bj2) {
+      if (!bjExists) {
+        preRegisterTermInternal(bj);
+      }
+      if (!d_equalityEngine.hasTerm(bj2)) {
+        preRegisterTermInternal(bj2);
+      }
+      d_equalityEngine.assertEquality(bj.eqNode(bj2), true, d_true);
+    }
+    if (aj2 == bj2) {
+      return;
+    }
+
+    // construct lemma
+    Node eq1 = aj2.eqNode(bj2);
+    Node eq1_r = Rewriter::rewrite(eq1);
+    if (eq1_r == d_true) {
+      if (!d_equalityEngine.hasTerm(aj2)) {
+        preRegisterTermInternal(aj2);
+      }
+      if (!d_equalityEngine.hasTerm(bj2)) {
+        preRegisterTermInternal(bj2);
+      }
+      d_equalityEngine.assertEquality(eq1, true, d_true);
+      return;
+    }
+
+    Node eq2 = i.eqNode(j);
+    Node eq2_r = Rewriter::rewrite(eq2);
+    if (eq2_r == d_true) {
+      d_equalityEngine.assertEquality(eq2, true, d_true);
+      return;
+    }
+
+    Node lemma = nm->mkNode(kind::OR, eq2_r, eq1_r);
+
+    Trace("arrays-lem")<<"Arrays::addRowLemma adding "<<lemma<<"\n";
+    d_RowAlreadyAdded.insert(lem);
+    d_out->lemma(lemma);
+    ++d_numRow;
+  }
+  else {
+    d_RowQueue.push(lem);
+  }
+}
+
+
+Node TheoryArrays::getNextDecisionRequest( unsigned& priority ) {
+  if(! d_decisionRequests.empty()) {
+    Node n = d_decisionRequests.front();
+    d_decisionRequests.pop();
+    priority = 2;
+    return n;
+  } else {
+    return Node::null();
+  }
+}
+
+
+bool TheoryArrays::dischargeLemmas()
+{
+  bool lemmasAdded = false;
+  size_t sz = d_RowQueue.size();
+  for (unsigned count = 0; count < sz; ++count) {
+    RowLemmaType l = d_RowQueue.front();
+    d_RowQueue.pop();
+    if (d_RowAlreadyAdded.contains(l)) {
+      continue;
+    }
+
+    TNode a = l.first;
+    TNode b = l.second;
+    TNode i = l.third;
+    TNode j = l.fourth;
+    Assert(a.getType().isArray() && b.getType().isArray());
+
+    NodeManager* nm = NodeManager::currentNM();
+    Node aj = nm->mkNode(kind::SELECT, a, j);
+    Node bj = nm->mkNode(kind::SELECT, b, j);
+    bool ajExists = d_equalityEngine.hasTerm(aj);
+    bool bjExists = d_equalityEngine.hasTerm(bj);
+
+    // Check for redundant lemma
+    // TODO: more checks possible (i.e. check d_RowAlreadyAdded in context)
+    if (!d_equalityEngine.hasTerm(i) || !d_equalityEngine.hasTerm(j) || d_equalityEngine.areEqual(i,j) ||
+        !d_equalityEngine.hasTerm(a) || !d_equalityEngine.hasTerm(b) || d_equalityEngine.areEqual(a,b) ||
+        (ajExists && bjExists && d_equalityEngine.areEqual(aj,bj))) {
+      continue;
+    }
+
+    int prop = options::arraysPropagate();
+    if (prop > 0) {
+      propagate(l);
+      if (d_conflict) {
+        return true;
+      }
+    }
+
+    // Make sure that any terms introduced by rewriting are appropriately stored in the equality database
+    Node aj2 = Rewriter::rewrite(aj);
+    if (aj != aj2) {
+      if (!ajExists) {
+        preRegisterTermInternal(aj);
+      }
+      if (!d_equalityEngine.hasTerm(aj2)) {
+        preRegisterTermInternal(aj2);
+      }
+      d_equalityEngine.assertEquality(aj.eqNode(aj2), true, d_true);
+    }
+    Node bj2 = Rewriter::rewrite(bj);
+    if (bj != bj2) {
+      if (!bjExists) {
+        preRegisterTermInternal(bj);
+      }
+      if (!d_equalityEngine.hasTerm(bj2)) {
+        preRegisterTermInternal(bj2);
+      }
+      d_equalityEngine.assertEquality(bj.eqNode(bj2), true, d_true);
+
+    }
+    if (aj2 == bj2) {
+      continue;
+    }
+
+    // construct lemma
+    Node eq1 = aj2.eqNode(bj2);
+    Node eq1_r = Rewriter::rewrite(eq1);
+    if (eq1_r == d_true) {
+      if (!d_equalityEngine.hasTerm(aj2)) {
+        preRegisterTermInternal(aj2);
+      }
+      if (!d_equalityEngine.hasTerm(bj2)) {
+        preRegisterTermInternal(bj2);
+      }
+      d_equalityEngine.assertEquality(eq1, true, d_true);
+      continue;
+    }
+
+    Node eq2 = i.eqNode(j);
+    Node eq2_r = Rewriter::rewrite(eq2);
+    if (eq2_r == d_true) {
+      d_equalityEngine.assertEquality(eq2, true, d_true);
+      continue;
+    }
+
+    Node lem = nm->mkNode(kind::OR, eq2_r, eq1_r);
+
+    Trace("arrays-lem")<<"Arrays::addRowLemma adding "<<lem<<"\n";
+    d_RowAlreadyAdded.insert(l);
+    d_out->lemma(lem);
+    ++d_numRow;
+    lemmasAdded = true;
+    if (options::arraysReduceSharing()) {
+      return true;
+    }
+  }
+  return lemmasAdded;
+}
+
+void TheoryArrays::conflict(TNode a, TNode b) {
+  Debug("pf::array") << "TheoryArrays::Conflict called" << std::endl;
+  eq::EqProof* proof = d_proofsEnabled ? new eq::EqProof() : NULL;
+
+  d_conflictNode = explain(a.eqNode(b), proof);
+
+  if (!d_inCheckModel) {
+    ProofArray* proof_array = NULL;
+
+    if (d_proofsEnabled) {
+      proof->debug_print("pf::array");
+      proof_array = new ProofArray( proof );
+      proof_array->setRowMergeTag(d_reasonRow);
+      proof_array->setRow1MergeTag(d_reasonRow1);
+      proof_array->setExtMergeTag(d_reasonExt);
+    }
+
+    d_out->conflict(d_conflictNode, proof_array);
+  }
+
+  d_conflict = true;
+}
+
+}/* CVC4::theory::arrays namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arrays/theory_arrays.h b/src/theory/arrays/theory_arrays.h
new file mode 100644
index 0000000..a1d2753
--- /dev/null
+++ b/src/theory/arrays/theory_arrays.h
@@ -0,0 +1,464 @@
+/*********************                                                        */
+/*! \file theory_arrays.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Clark Barrett, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Theory of arrays
+ **
+ ** Theory of arrays.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__ARRAYS__THEORY_ARRAYS_H
+#define __CVC4__THEORY__ARRAYS__THEORY_ARRAYS_H
+
+#include "context/cdhashmap.h"
+#include "context/cdhashset.h"
+#include "context/cdqueue.h"
+#include "theory/arrays/array_info.h"
+#include "theory/arrays/array_proof_reconstruction.h"
+#include "theory/theory.h"
+#include "theory/uf/equality_engine.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arrays {
+
+/**
+ * Decision procedure for arrays.
+ *
+ * Overview of decision procedure:
+ *
+ * Preliminary notation:
+ *   Stores(a)  = {t | a ~ t and t = store( _ _ _ )}
+ *   InStores(a) = {t | t = store (b _ _) and a ~ b }
+ *   Indices(a) = {i | there exists a term b[i] such that a ~ b or store(b i v)}
+ *   ~ represents the equivalence relation based on the asserted equalities in the
+ *   current context.
+ *
+ * The rules implemented are the following:
+ *             store(b i v)
+ *     Row1 -------------------
+ *          store(b i v)[i] = v
+ *
+ *           store(b i v)  a'[j]
+ *     Row ---------------------- [ a' ~ store(b i v) or a' ~ b ]
+ *           i = j OR a[j] = b[j]
+ *
+ *          a  b same kind arrays
+ *     Ext ------------------------ [ a!= b in current context, k new var]
+ *           a = b OR a[k] != b[k]p
+ *
+ *
+ *  The Row1 one rule is implemented implicitly as follows:
+ *     - for each store(b i v) term add the following equality to the congruence
+ *       closure store(b i v)[i] = v
+ *     - if one of the literals in a conflict is of the form store(b i v)[i] = v
+ *       remove it from the conflict
+ *
+ *  Because new store terms are not created, we need to check if we need to
+ *  instantiate a new Row axiom in the following cases:
+ *     1. the congruence relation changes (i.e. two terms get merged)
+ *         - when a new equality between array terms a = b is asserted we check if
+ *           we can instantiate a Row lemma for all pairs of indices i where a is
+ *           being read and stores
+ *         - this is only done during full effort check
+ *     2. a new read term is created either as a consequences of an Ext lemma or a
+ *        Row lemma
+ *         - this is implemented in the checkRowForIndex method which is called
+ *           when preregistering a term of the form a[i].
+ *         - as a consequence lemmas are instantiated even before full effort check
+ *
+ *  The Ext axiom is instantiated when a disequality is asserted during full effort
+ *  check. Ext lemmas are stored in a cache to prevent instantiating essentially
+ *  the same lemma multiple times.
+ */
+
+static inline std::string spaces(int level)
+{
+  std::string indentStr(level, ' ');
+  return indentStr;
+}
+
+class TheoryArrays : public Theory {
+
+  /////////////////////////////////////////////////////////////////////////////
+  // MISC
+  /////////////////////////////////////////////////////////////////////////////
+
+ private:
+
+  /** True node for predicates = true */
+  Node d_true;
+
+  /** True node for predicates = false */
+  Node d_false;
+
+  // Statistics
+
+  /** number of Row lemmas */
+  IntStat d_numRow;
+  /** number of Ext lemmas */
+  IntStat d_numExt;
+  /** number of propagations */
+  IntStat d_numProp;
+  /** number of explanations */
+  IntStat d_numExplain;
+  /** calls to non-linear */
+  IntStat d_numNonLinear;
+  /** splits on array variables */
+  IntStat d_numSharedArrayVarSplits;
+  /** splits in getModelVal */
+  IntStat d_numGetModelValSplits;
+  /** conflicts in getModelVal */
+  IntStat d_numGetModelValConflicts;
+  /** splits in setModelVal */
+  IntStat d_numSetModelValSplits;
+  /** conflicts in setModelVal */
+  IntStat d_numSetModelValConflicts;
+
+  // Merge reason types
+
+  /** Merge tag for ROW applications */
+  unsigned d_reasonRow;
+  /** Merge tag for ROW1 applications */
+  unsigned d_reasonRow1;
+  /** Merge tag for EXT applications */
+  unsigned d_reasonExt;
+
+ public:
+
+  TheoryArrays(context::Context* c, context::UserContext* u, OutputChannel& out,
+               Valuation valuation, const LogicInfo& logicInfo,
+               std::string name = "");
+  ~TheoryArrays();
+
+  void setMasterEqualityEngine(eq::EqualityEngine* eq);
+
+  std::string identify() const { return std::string("TheoryArrays"); }
+
+  /////////////////////////////////////////////////////////////////////////////
+  // PREPROCESSING
+  /////////////////////////////////////////////////////////////////////////////
+
+ private:
+
+  // PPNotifyClass: dummy template class for d_ppEqualityEngine - notifications not used
+  class PPNotifyClass {
+  public:
+    bool notify(TNode propagation) { return true; }
+    void notify(TNode t1, TNode t2) { }
+  };
+
+  /** The notify class for d_ppEqualityEngine */
+  PPNotifyClass d_ppNotify;
+
+  /** Equaltity engine */
+  eq::EqualityEngine d_ppEqualityEngine;
+
+  // List of facts learned by preprocessor - needed for permanent ref for benefit of d_ppEqualityEngine
+  context::CDList<Node> d_ppFacts;
+
+  Node preprocessTerm(TNode term);
+  Node recursivePreprocessTerm(TNode term);
+  bool ppDisequal(TNode a, TNode b);
+  Node solveWrite(TNode term, bool solve1, bool solve2, bool ppCheck);
+
+  public:
+
+  PPAssertStatus ppAssert(TNode in, SubstitutionMap& outSubstitutions);
+  Node ppRewrite(TNode atom);
+
+  /////////////////////////////////////////////////////////////////////////////
+  // T-PROPAGATION / REGISTRATION
+  /////////////////////////////////////////////////////////////////////////////
+
+  private:
+
+  /** Literals to propagate */
+  context::CDList<Node> d_literalsToPropagate;
+
+  /** Index of the next literal to propagate */
+  context::CDO<unsigned> d_literalsToPropagateIndex;
+
+  /** Should be called to propagate the literal.  */
+  bool propagate(TNode literal);
+
+  /** Explain why this literal is true by adding assumptions */
+  void explain(TNode literal, std::vector<TNode>& assumptions, eq::EqProof *proof);
+
+  /** For debugging only- checks invariants about when things are preregistered*/
+  context::CDHashSet<Node, NodeHashFunction > d_isPreRegistered;
+
+  /** Helper for preRegisterTerm, also used internally */
+  void preRegisterTermInternal(TNode n);
+
+  public:
+
+  void preRegisterTerm(TNode n);
+  void propagate(Effort e);
+  Node explain(TNode n, eq::EqProof *proof);
+  Node explain(TNode n);
+
+  /////////////////////////////////////////////////////////////////////////////
+  // SHARING
+  /////////////////////////////////////////////////////////////////////////////
+
+  private:
+
+  class MayEqualNotifyClass {
+  public:
+    bool notify(TNode propagation) { return true; }
+    void notify(TNode t1, TNode t2) { }
+  };
+
+  /** The notify class for d_mayEqualEqualityEngine */
+  MayEqualNotifyClass d_mayEqualNotify;
+
+  /** Equaltity engine for determining if two arrays might be equal */
+  eq::EqualityEngine d_mayEqualEqualityEngine;
+
+  // Helper for computeCareGraph
+  void checkPair(TNode r1, TNode r2);
+
+  public:
+
+  void addSharedTerm(TNode t);
+  EqualityStatus getEqualityStatus(TNode a, TNode b);
+  void computeCareGraph();
+  bool isShared(TNode t)
+    { return (d_sharedArrays.find(t) != d_sharedArrays.end()); }
+
+
+  /////////////////////////////////////////////////////////////////////////////
+  // MODEL GENERATION
+  /////////////////////////////////////////////////////////////////////////////
+
+  private:
+
+  public:
+
+  void collectModelInfo(TheoryModel* m, bool fullModel);
+
+  /////////////////////////////////////////////////////////////////////////////
+  // NOTIFICATIONS
+  /////////////////////////////////////////////////////////////////////////////
+
+  private:
+  public:
+
+  Node getNextDecisionRequest( unsigned& priority );
+
+  void presolve();
+  void shutdown() { }
+
+  /////////////////////////////////////////////////////////////////////////////
+  // MAIN SOLVER
+  /////////////////////////////////////////////////////////////////////////////
+
+  public:
+
+  void check(Effort e);
+
+  private:
+
+  TNode weakEquivGetRep(TNode node);
+  TNode weakEquivGetRepIndex(TNode node, TNode index);
+  void visitAllLeaves(TNode reason, std::vector<TNode>& conjunctions);
+  void weakEquivBuildCond(TNode node, TNode index, std::vector<TNode>& conjunctions);
+  void weakEquivMakeRep(TNode node);
+  void weakEquivMakeRepIndex(TNode node);
+  void weakEquivAddSecondary(TNode index, TNode arrayFrom, TNode arrayTo, TNode reason);
+  void checkWeakEquiv(bool arraysMerged);
+
+  // NotifyClass: template helper class for d_equalityEngine - handles call-back from congruence closure module
+  class NotifyClass : public eq::EqualityEngineNotify {
+    TheoryArrays& d_arrays;
+  public:
+    NotifyClass(TheoryArrays& arrays): d_arrays(arrays) {}
+
+    bool eqNotifyTriggerEquality(TNode equality, bool value) {
+      Debug("arrays::propagate") << spaces(d_arrays.getSatContext()->getLevel()) << "NotifyClass::eqNotifyTriggerEquality(" << equality << ", " << (value ? "true" : "false") << ")" << std::endl;
+      // Just forward to arrays
+      if (value) {
+        return d_arrays.propagate(equality);
+      } else {
+        return d_arrays.propagate(equality.notNode());
+      }
+    }
+
+    bool eqNotifyTriggerPredicate(TNode predicate, bool value) {
+      Debug("arrays::propagate") << spaces(d_arrays.getSatContext()->getLevel()) << "NotifyClass::eqNotifyTriggerEquality(" << predicate << ", " << (value ? "true" : "false") << ")" << std::endl;
+      // Just forward to arrays
+      if (value) {
+        return d_arrays.propagate(predicate);
+      } else {
+        return d_arrays.propagate(predicate.notNode());
+      }
+    }
+
+    bool eqNotifyTriggerTermEquality(TheoryId tag, TNode t1, TNode t2, bool value) {
+      Debug("arrays::propagate") << spaces(d_arrays.getSatContext()->getLevel()) << "NotifyClass::eqNotifyTriggerTermEquality(" << t1 << ", " << t2 << ", " << (value ? "true" : "false") << ")" << std::endl;
+      if (value) {
+        if (t1.getType().isArray()) {
+          d_arrays.mergeArrays(t1, t2);
+          if (!d_arrays.isShared(t1) || !d_arrays.isShared(t2)) {
+            return true;
+          }
+        }
+        // Propagate equality between shared terms
+        return d_arrays.propagate(t1.eqNode(t2));
+      } else {
+        if (t1.getType().isArray()) {
+          if (!d_arrays.isShared(t1) || !d_arrays.isShared(t2)) {
+            return true;
+          }
+        }
+        return d_arrays.propagate(t1.eqNode(t2).notNode());
+      }
+      return true;
+    }
+
+    void eqNotifyConstantTermMerge(TNode t1, TNode t2) {
+      Debug("arrays::propagate") << spaces(d_arrays.getSatContext()->getLevel()) << "NotifyClass::eqNotifyConstantTermMerge(" << t1 << ", " << t2 << ")" << std::endl;
+      d_arrays.conflict(t1, t2);
+    }
+
+    void eqNotifyNewClass(TNode t) { }
+    void eqNotifyPreMerge(TNode t1, TNode t2) { }
+    void eqNotifyPostMerge(TNode t1, TNode t2) { }
+    void eqNotifyDisequal(TNode t1, TNode t2, TNode reason) { }
+  };
+
+  /** The notify class for d_equalityEngine */
+  NotifyClass d_notify;
+
+  /** Equaltity engine */
+  eq::EqualityEngine d_equalityEngine;
+
+  /** Are we in conflict? */
+  context::CDO<bool> d_conflict;
+
+  /** Conflict when merging constants */
+  void conflict(TNode a, TNode b);
+
+  /** The conflict node */
+  Node d_conflictNode;
+
+  /**
+   * Context dependent map from a congruence class canonical representative of
+   * type array to an Info pointer that keeps track of information useful to axiom
+   * instantiation
+   */
+
+  Backtracker<TNode> d_backtracker;
+  ArrayInfo d_infoMap;
+
+  context::CDQueue<Node> d_mergeQueue;
+
+  bool d_mergeInProgress;
+
+  typedef quad<TNode, TNode, TNode, TNode> RowLemmaType;
+
+  context::CDQueue<RowLemmaType> d_RowQueue;
+  context::CDHashSet<RowLemmaType, RowLemmaTypeHashFunction > d_RowAlreadyAdded;
+
+  typedef context::CDHashSet<Node, NodeHashFunction> CDNodeSet;
+
+  CDNodeSet d_sharedArrays;
+  CDNodeSet d_sharedOther;
+  context::CDO<bool> d_sharedTerms;
+
+  // Map from constant values to read terms that read from that values equal to that constant value in the current model
+  // When a new read term is created, we check the index to see if we know the model value.  If so, we add it to d_constReads (and d_constReadsList)
+  // If not, we push it onto d_reads and figure out where it goes at computeCareGraph time.
+  // d_constReadsList is used as a backup in case we can't compute the model at computeCareGraph time.
+  typedef std::hash_map<Node, CTNodeList*, NodeHashFunction> CNodeNListMap;
+  CNodeNListMap d_constReads;
+  context::CDList<TNode> d_reads;
+  context::CDList<TNode> d_constReadsList;
+  context::Context* d_constReadsContext;
+  /** Helper class to keep d_constReadsContext in sync with satContext */
+  class ContextPopper : public context::ContextNotifyObj {
+    context::Context* d_satContext;
+    context::Context* d_contextToPop;
+  protected:
+    void contextNotifyPop() {
+      if (d_contextToPop->getLevel() > d_satContext->getLevel()) {
+        d_contextToPop->pop();
+      }
+    }
+  public:
+    ContextPopper(context::Context* context, context::Context* contextToPop)
+      :context::ContextNotifyObj(context), d_satContext(context),
+       d_contextToPop(contextToPop)
+    {}
+
+  };/* class ContextPopper */
+  ContextPopper d_contextPopper;
+
+  std::hash_map<Node, Node, NodeHashFunction> d_skolemCache;
+  context::CDO<unsigned> d_skolemIndex;
+  std::vector<Node> d_skolemAssertions;
+
+  // The decision requests we have for the core
+  context::CDQueue<Node> d_decisionRequests;
+
+  // List of nodes that need permanent references in this context
+  context::CDList<Node> d_permRef;
+  context::CDList<Node> d_modelConstraints;
+  context::CDHashSet<Node, NodeHashFunction > d_lemmasSaved;
+  std::vector<Node> d_lemmas;
+
+  // Default values for each mayEqual equivalence class
+  typedef context::CDHashMap<Node,Node,NodeHashFunction> DefValMap;
+  DefValMap d_defValues;
+
+  typedef std::hash_map<std::pair<TNode, TNode>, CTNodeList*, TNodePairHashFunction> ReadBucketMap;
+  ReadBucketMap d_readBucketTable;
+  context::Context* d_readTableContext;
+  context::CDList<Node> d_arrayMerges;
+  std::vector<CTNodeList*> d_readBucketAllocations;
+
+  Node getSkolem(TNode ref, const std::string& name, const TypeNode& type, const std::string& comment, bool makeEqual = true);
+  Node mkAnd(std::vector<TNode>& conjunctions, bool invert = false, unsigned startIndex = 0);
+  void setNonLinear(TNode a);
+  void checkRIntro1(TNode a, TNode b);
+  Node removeRepLoops(TNode a, TNode rep);
+  Node expandStores(TNode s, std::vector<TNode>& assumptions, bool checkLoop = false, TNode a = TNode(), TNode b = TNode());
+  void mergeArrays(TNode a, TNode b);
+  void checkStore(TNode a);
+  void checkRowForIndex(TNode i, TNode a);
+  void checkRowLemmas(TNode a, TNode b);
+  void propagate(RowLemmaType lem);
+  void queueRowLemma(RowLemmaType lem);
+  bool dischargeLemmas();
+
+  std::vector<Node> d_decisions;
+  bool d_inCheckModel;
+  int d_topLevel;
+
+  /** An equality-engine callback for proof reconstruction */
+  ArrayProofReconstruction d_proofReconstruction;
+
+  public:
+
+  eq::EqualityEngine* getEqualityEngine() {
+    return &d_equalityEngine;
+  }
+
+};/* class TheoryArrays */
+
+}/* CVC4::theory::arrays namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__ARRAYS__THEORY_ARRAYS_H */
diff --git a/src/theory/arrays/theory_arrays_rewriter.cpp b/src/theory/arrays/theory_arrays_rewriter.cpp
new file mode 100644
index 0000000..f1cf1d3
--- /dev/null
+++ b/src/theory/arrays/theory_arrays_rewriter.cpp
@@ -0,0 +1,49 @@
+/*********************                                                        */
+/*! \file theory_arrays_rewriter.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "expr/attribute.h"
+#include "theory/arrays/theory_arrays_rewriter.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arrays {
+
+namespace attr {
+  struct ArrayConstantMostFrequentValueTag { };
+  struct ArrayConstantMostFrequentValueCountTag { };
+}/* CVC4::theory::arrays::attr namespace */
+
+typedef expr::Attribute<attr::ArrayConstantMostFrequentValueCountTag, uint64_t> ArrayConstantMostFrequentValueCountAttr;
+typedef expr::Attribute<attr::ArrayConstantMostFrequentValueTag, Node> ArrayConstantMostFrequentValueAttr;
+
+Node getMostFrequentValue(TNode store) {
+  return store.getAttribute(ArrayConstantMostFrequentValueAttr());
+}
+uint64_t getMostFrequentValueCount(TNode store) {
+  return store.getAttribute(ArrayConstantMostFrequentValueCountAttr());
+}
+
+void setMostFrequentValue(TNode store, TNode value) {
+  return store.setAttribute(ArrayConstantMostFrequentValueAttr(), value);
+}
+void setMostFrequentValueCount(TNode store, uint64_t count) {
+  return store.setAttribute(ArrayConstantMostFrequentValueCountAttr(), count);
+}
+
+}/* CVC4::theory::arrays namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arrays/theory_arrays_rewriter.h b/src/theory/arrays/theory_arrays_rewriter.h
new file mode 100644
index 0000000..e63c224
--- /dev/null
+++ b/src/theory/arrays/theory_arrays_rewriter.h
@@ -0,0 +1,509 @@
+/*********************                                                        */
+/*! \file theory_arrays_rewriter.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Clark Barrett, Morgan Deters, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__ARRAYS__THEORY_ARRAYS_REWRITER_H
+#define __CVC4__THEORY__ARRAYS__THEORY_ARRAYS_REWRITER_H
+
+#include "theory/rewriter.h"
+#include "theory/type_enumerator.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arrays {
+
+Node getMostFrequentValue(TNode store);
+uint64_t getMostFrequentValueCount(TNode store);
+void setMostFrequentValue(TNode store, TNode value);
+void setMostFrequentValueCount(TNode store, uint64_t count);
+
+static inline Node mkEqNode(Node a, Node b) {
+  return a.eqNode(b);
+}
+
+class TheoryArraysRewriter {
+  static Node normalizeConstant(TNode node) {
+    return normalizeConstant(node, node[1].getType().getCardinality());
+  }
+public:
+  //this function is called by printers when using the option "--model-u-dt-enum"
+  static Node normalizeConstant(TNode node, Cardinality indexCard) {
+    TNode store = node[0];
+    TNode index = node[1];
+    TNode value = node[2];
+
+    std::vector<TNode> indices;
+    std::vector<TNode> elements;
+
+    // Normal form for nested stores is just ordering by index - but also need
+    // to check if we are writing to default value
+
+    // Go through nested stores looking for where to insert index
+    // Also check whether we are replacing an existing store
+    TNode replacedValue;
+    unsigned depth = 1;
+    unsigned valCount = 1;
+    while (store.getKind() == kind::STORE) {
+      if (index == store[1]) {
+        replacedValue = store[2];
+        store = store[0];
+        break;
+      }
+      else if (!(index < store[1])) {
+        break;
+      }
+      if (value == store[2]) {
+        valCount += 1;
+      }
+      depth += 1;
+      indices.push_back(store[1]);
+      elements.push_back(store[2]);
+      store = store[0];
+    }
+    Node n = store;
+
+    // Get the default value at the bottom of the nested stores
+    while (store.getKind() == kind::STORE) {
+      if (value == store[2]) {
+        valCount += 1;
+      }
+      depth += 1;
+      store = store[0];
+    }
+    Assert(store.getKind() == kind::STORE_ALL);
+    ArrayStoreAll storeAll = store.getConst<ArrayStoreAll>();
+    Node defaultValue = Node::fromExpr(storeAll.getExpr());
+    NodeManager* nm = NodeManager::currentNM();
+
+    // Check if we are writing to default value - if so the store
+    // to index can be ignored
+    if (value == defaultValue) {
+      if (replacedValue.isNull()) {
+        // Quick exit - if writing to default value and nothing was
+        // replaced, we can just return node[0]
+        return node[0];
+      }
+      // else rebuild the store without the replaced write and then exit
+    }
+    else {
+      n = nm->mkNode(kind::STORE, n, index, value);
+    }
+
+    // Build the rest of the store after inserting/deleting
+    while (!indices.empty()) {
+      n = nm->mkNode(kind::STORE, n, indices.back(), elements.back());
+      indices.pop_back();
+      elements.pop_back();
+    }
+
+    // Ready to exit if write was to the default value (see previous comment)
+    if (value == defaultValue) {
+      return n;
+    }
+
+    if (indexCard.isInfinite()) {
+      return n;
+    }
+
+    // When index sort is finite, we have to check whether there is any value
+    // that is written to more than the default value.  If so, it must become
+    // the new default value
+
+    TNode mostFrequentValue;
+    unsigned mostFrequentValueCount = 0;
+    store = node[0];
+    if (store.getKind() == kind::STORE) {
+      mostFrequentValue = getMostFrequentValue(store);
+      mostFrequentValueCount = getMostFrequentValueCount(store);
+    }
+
+    // Compute the most frequently written value for n
+    if (valCount > mostFrequentValueCount ||
+        (valCount == mostFrequentValueCount && value < mostFrequentValue)) {
+      mostFrequentValue = value;
+      mostFrequentValueCount = valCount;
+    }
+
+    // Need to make sure the default value count is larger, or the same and the default value is expression-order-less-than nextValue
+    Cardinality::CardinalityComparison compare = indexCard.compare(mostFrequentValueCount + depth);
+    Assert(compare != Cardinality::UNKNOWN);
+    if (compare == Cardinality::GREATER ||
+        (compare == Cardinality::EQUAL && (defaultValue < mostFrequentValue))) {
+      return n;
+    }
+
+    // Bad case: have to recompute value counts and/or possibly switch out
+    // default value
+    store = n;
+    std::hash_set<TNode, TNodeHashFunction> indexSet;
+    std::hash_map<TNode, unsigned, TNodeHashFunction> elementsMap;
+    std::hash_map<TNode, unsigned, TNodeHashFunction>::iterator it;
+    unsigned count;
+    unsigned max = 0;
+    TNode maxValue;
+    while (store.getKind() == kind::STORE) {
+      indices.push_back(store[1]);
+      indexSet.insert(store[1]);
+      elements.push_back(store[2]);
+      it = elementsMap.find(store[2]);
+      if (it != elementsMap.end()) {
+        (*it).second = (*it).second + 1;
+        count = (*it).second;
+      }
+      else {
+        elementsMap[store[2]] = 1;
+        count = 1;
+      }
+      if (count > max ||
+          (count == max && store[2] < maxValue)) {
+        max = count;
+        maxValue = store[2];
+      }
+      store = store[0];
+    }
+
+    Assert(depth == indices.size());
+    compare = indexCard.compare(max + depth);
+    Assert(compare != Cardinality::UNKNOWN);
+    if (compare == Cardinality::GREATER ||
+        (compare == Cardinality::EQUAL && (defaultValue < maxValue))) {
+      Assert(!replacedValue.isNull() && mostFrequentValue == replacedValue);
+      return n;
+    }
+
+    // Out of luck: have to swap out default value
+
+    // Enumerate values from index type into newIndices and sort
+    std::vector<Node> newIndices;
+    TypeEnumerator te(index.getType());
+    bool needToSort = false;
+    unsigned numTe = 0;
+    while (!te.isFinished() && (!indexCard.isFinite() || numTe<indexCard.getFiniteCardinality().toUnsignedInt())) {
+      if (indexSet.find(*te) == indexSet.end()) {
+        if (!newIndices.empty() && (!(newIndices.back() < (*te)))) {
+          needToSort = true;
+        }
+        newIndices.push_back(*te);
+      }
+      ++numTe;
+      ++te;
+    }
+    Assert(indexCard.compare(newIndices.size() + depth) == Cardinality::EQUAL);
+    if (needToSort) {
+      std::sort(newIndices.begin(), newIndices.end());
+    }
+
+    n = nm->mkConst(ArrayStoreAll(node.getType().toType(), maxValue.toExpr()));
+    std::vector<Node>::iterator itNew = newIndices.begin(), it_end = newIndices.end();
+    while (itNew != it_end || !indices.empty()) {
+      if (itNew != it_end && (indices.empty() || (*itNew) < indices.back())) {
+        n = nm->mkNode(kind::STORE, n, (*itNew), defaultValue);
+        ++itNew;
+      }
+      else if (itNew == it_end || indices.back() < (*itNew)) {
+        if (elements.back() != maxValue) {
+          n = nm->mkNode(kind::STORE, n, indices.back(), elements.back());
+        }
+        indices.pop_back();
+        elements.pop_back();
+      }
+    }
+    return n;
+  }
+
+public:
+
+  static RewriteResponse postRewrite(TNode node) {
+    Trace("arrays-postrewrite") << "Arrays::postRewrite start " << node << std::endl;
+    switch (node.getKind()) {
+      case kind::SELECT: {
+        TNode store = node[0];
+        TNode index = node[1];
+        Node n;
+        bool val;
+        while (store.getKind() == kind::STORE) {
+          if (index == store[1]) {
+            val = true;
+          }
+          else if (index.isConst() && store[1].isConst()) {
+            val = false;
+          }
+          else {
+            n = Rewriter::rewrite(mkEqNode(store[1], index));
+            if (n.getKind() != kind::CONST_BOOLEAN) {
+              break;
+            }
+            val = n.getConst<bool>();
+          }
+          if (val) {
+            // select(store(a,i,v),j) = v if i = j
+            Trace("arrays-postrewrite") << "Arrays::postRewrite returning " << store[2] << std::endl;
+            return RewriteResponse(REWRITE_DONE, store[2]);
+          }
+          // select(store(a,i,v),j) = select(a,j) if i /= j
+          store = store[0];
+        }
+        if (store.getKind() == kind::STORE_ALL) {
+          // select(store_all(v),i) = v
+          ArrayStoreAll storeAll = store.getConst<ArrayStoreAll>();
+          n = Node::fromExpr(storeAll.getExpr());
+          Trace("arrays-postrewrite") << "Arrays::postRewrite returning " << n << std::endl;
+          Assert(n.isConst());
+          return RewriteResponse(REWRITE_DONE, n);
+        }
+        else if (store != node[0]) {
+          n = NodeManager::currentNM()->mkNode(kind::SELECT, store, index);
+          Trace("arrays-postrewrite") << "Arrays::postRewrite returning " << n << std::endl;
+          return RewriteResponse(REWRITE_DONE, n);
+        }
+        break;
+      }
+      case kind::STORE: {
+        TNode store = node[0];
+        TNode value = node[2];
+        // store(a,i,select(a,i)) = a
+        if (value.getKind() == kind::SELECT &&
+            value[0] == store &&
+            value[1] == node[1]) {
+          Trace("arrays-postrewrite") << "Arrays::postRewrite returning " << store << std::endl;
+          return RewriteResponse(REWRITE_DONE, store);
+        }
+        TNode index = node[1];
+        if (store.isConst() && index.isConst() && value.isConst()) {
+          // normalize constant
+          Node n = normalizeConstant(node);
+          Assert(n.isConst());
+          Trace("arrays-postrewrite") << "Arrays::postRewrite returning " << n << std::endl;
+          return RewriteResponse(REWRITE_DONE, n);
+        }
+        if (store.getKind() == kind::STORE) {
+          // store(store(a,i,v),j,w)
+          bool val;
+          if (index == store[1]) {
+            val = true;
+          }
+          else if (index.isConst() && store[1].isConst()) {
+            val = false;
+          }
+          else {
+            Node eqRewritten = Rewriter::rewrite(mkEqNode(store[1], index));
+            if (eqRewritten.getKind() != kind::CONST_BOOLEAN) {
+              Trace("arrays-postrewrite") << "Arrays::postRewrite returning " << node << std::endl;
+              return RewriteResponse(REWRITE_DONE, node);
+            }
+            val = eqRewritten.getConst<bool>();
+          }
+          NodeManager* nm = NodeManager::currentNM();
+          if (val) {
+            // store(store(a,i,v),i,w) = store(a,i,w)
+            Node result;
+            if (value.getKind() == kind::SELECT &&
+                value[0] == store[0] &&
+                value[1] == index) {
+              result = store[0];
+            }
+            else {
+              result = nm->mkNode(kind::STORE, store[0], index, value);
+            }
+            Trace("arrays-postrewrite") << "Arrays::postRewrite returning " << result << std::endl;
+            return RewriteResponse(REWRITE_DONE, result);
+          }
+          else if (index < store[1]) {
+            // store(store(a,i,v),j,w) = store(store(a,j,w),i,v)
+            //    IF i != j and j comes before i in the ordering
+            std::vector<TNode> indices;
+            std::vector<TNode> elements;
+            indices.push_back(store[1]);
+            elements.push_back(store[2]);
+            store = store[0];
+            Node n;
+            while (store.getKind() == kind::STORE) {
+              if (index == store[1]) {
+                val = true;
+              }
+              else if (index.isConst() && store[1].isConst()) {
+                val = false;
+              }
+              else {
+                n = Rewriter::rewrite(mkEqNode(store[1], index));
+                if (n.getKind() != kind::CONST_BOOLEAN) {
+                  break;
+                }
+                val = n.getConst<bool>();
+              }
+              if (val) {
+                store = store[0];
+                break;
+              }
+              else if (!(index < store[1])) {
+                break;
+              }
+              indices.push_back(store[1]);
+              elements.push_back(store[2]);
+              store = store[0];
+            }
+            if (value.getKind() == kind::SELECT &&
+                value[0] == store &&
+                value[1] == index) {
+              n = store;
+            }
+            else {
+              n = nm->mkNode(kind::STORE, store, index, value);
+            }
+            while (!indices.empty()) {
+              n = nm->mkNode(kind::STORE, n, indices.back(), elements.back());
+              indices.pop_back();
+              elements.pop_back();
+            }
+            Assert(n != node);
+            Trace("arrays-postrewrite") << "Arrays::postRewrite returning " << n << std::endl;
+            return RewriteResponse(REWRITE_AGAIN, n);
+          }
+        }
+        break;
+      }
+      case kind::EQUAL:{
+        if(node[0] == node[1]) {
+          Trace("arrays-postrewrite") << "Arrays::postRewrite returning true" << std::endl;
+          return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(true));
+        }
+        else if (node[0].isConst() && node[1].isConst()) {
+          Trace("arrays-postrewrite") << "Arrays::postRewrite returning false" << std::endl;
+          return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(false));
+        }
+        if (node[0] > node[1]) {
+          Node newNode = NodeManager::currentNM()->mkNode(node.getKind(), node[1], node[0]);
+          Trace("arrays-postrewrite") << "Arrays::postRewrite returning " << newNode << std::endl;
+          return RewriteResponse(REWRITE_DONE, newNode);
+        }
+        break;
+      }
+      default:
+        break;
+    }
+    Trace("arrays-postrewrite") << "Arrays::postRewrite returning " << node << std::endl;
+    return RewriteResponse(REWRITE_DONE, node);
+  }
+
+  static inline RewriteResponse preRewrite(TNode node) {
+    Trace("arrays-prerewrite") << "Arrays::preRewrite start " << node << std::endl;
+    switch (node.getKind()) {
+      case kind::SELECT: {
+        TNode store = node[0];
+        TNode index = node[1];
+        Node n;
+        bool val;
+        while (store.getKind() == kind::STORE) {
+          if (index == store[1]) {
+            val = true;
+          }
+          else if (index.isConst() && store[1].isConst()) {
+            val = false;
+          }
+          else {
+            n = Rewriter::rewrite(mkEqNode(store[1], index));
+            if (n.getKind() != kind::CONST_BOOLEAN) {
+              break;
+            }
+            val = n.getConst<bool>();
+          }
+          if (val) {
+            // select(store(a,i,v),j) = v if i = j
+            Trace("arrays-prerewrite") << "Arrays::preRewrite returning " << store[2] << std::endl;
+            return RewriteResponse(REWRITE_AGAIN, store[2]);
+          }
+          // select(store(a,i,v),j) = select(a,j) if i /= j
+          store = store[0];
+        }
+        if (store.getKind() == kind::STORE_ALL) {
+          // select(store_all(v),i) = v
+          ArrayStoreAll storeAll = store.getConst<ArrayStoreAll>();
+          n = Node::fromExpr(storeAll.getExpr());
+          Trace("arrays-prerewrite") << "Arrays::preRewrite returning " << n << std::endl;
+          Assert(n.isConst());
+          return RewriteResponse(REWRITE_DONE, n);
+        }
+        else if (store != node[0]) {
+          n = NodeManager::currentNM()->mkNode(kind::SELECT, store, index);
+          Trace("arrays-prerewrite") << "Arrays::preRewrite returning " << n << std::endl;
+          return RewriteResponse(REWRITE_DONE, n);
+        }
+        break;
+      }
+      case kind::STORE: {
+        TNode store = node[0];
+        TNode value = node[2];
+        // store(a,i,select(a,i)) = a
+        if (value.getKind() == kind::SELECT &&
+            value[0] == store &&
+            value[1] == node[1]) {
+          Trace("arrays-prerewrite") << "Arrays::preRewrite returning " << store << std::endl;
+          return RewriteResponse(REWRITE_AGAIN, store);
+        }
+        if (store.getKind() == kind::STORE) {
+          // store(store(a,i,v),j,w)
+          TNode index = node[1];
+          bool val;
+          if (index == store[1]) {
+            val = true;
+          }
+          else if (index.isConst() && store[1].isConst()) {
+            val = false;
+          }
+          else {
+            Node eqRewritten = Rewriter::rewrite(mkEqNode(store[1], index));
+            if (eqRewritten.getKind() != kind::CONST_BOOLEAN) {
+              break;
+            }
+            val = eqRewritten.getConst<bool>();
+          }
+          NodeManager* nm = NodeManager::currentNM();
+          if (val) {
+            // store(store(a,i,v),i,w) = store(a,i,w)
+            Node newNode = nm->mkNode(kind::STORE, store[0], index, value);
+            Trace("arrays-prerewrite") << "Arrays::preRewrite returning " << newNode << std::endl;
+            return RewriteResponse(REWRITE_DONE, newNode);
+          }
+        }
+        break;
+      }
+      case kind::EQUAL:{
+        if(node[0] == node[1]) {
+          Trace("arrays-prerewrite") << "Arrays::preRewrite returning true" << std::endl;
+          return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(true));
+        }
+        break;
+      }
+      default:
+        break;
+    }
+
+    Trace("arrays-prerewrite") << "Arrays::preRewrite returning " << node << std::endl;
+    return RewriteResponse(REWRITE_DONE, node);
+  }
+
+  static inline void init() {}
+  static inline void shutdown() {}
+
+};/* class TheoryArraysRewriter */
+
+}/* CVC4::theory::arrays namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__ARRAYS__THEORY_ARRAYS_REWRITER_H */
diff --git a/src/theory/arrays/theory_arrays_type_rules.h b/src/theory/arrays/theory_arrays_type_rules.h
new file mode 100644
index 0000000..d817fb1
--- /dev/null
+++ b/src/theory/arrays/theory_arrays_type_rules.h
@@ -0,0 +1,230 @@
+/*********************                                                        */
+/*! \file theory_arrays_type_rules.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Clark Barrett, Guy Katz
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Typing and cardinality rules for the theory of arrays
+ **
+ ** Typing and cardinality rules for the theory of arrays.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__ARRAYS__THEORY_ARRAYS_TYPE_RULES_H
+#define __CVC4__THEORY__ARRAYS__THEORY_ARRAYS_TYPE_RULES_H
+
+#include "theory/arrays/theory_arrays_rewriter.h" // for array-constant attributes
+#include "theory/type_enumerator.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arrays {
+
+struct ArraySelectTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::SELECT);
+    TypeNode arrayType = n[0].getType(check);
+    if( check ) {
+      if(!arrayType.isArray()) {
+        throw TypeCheckingExceptionPrivate(n, "array select operating on non-array");
+      }
+      TypeNode indexType = n[1].getType(check);
+      if(!indexType.isComparableTo(arrayType.getArrayIndexType())){
+        throw TypeCheckingExceptionPrivate(n, "array select not indexed with correct type for array");
+      }
+    }
+    return arrayType.getArrayConstituentType();
+  }
+};/* struct ArraySelectTypeRule */
+
+struct ArrayStoreTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if (n.getKind() == kind::STORE) {
+      TypeNode arrayType = n[0].getType(check);
+      if( check ) {
+        if(!arrayType.isArray()) {
+          throw TypeCheckingExceptionPrivate(n, "array store operating on non-array");
+        }
+        TypeNode indexType = n[1].getType(check);
+        TypeNode valueType = n[2].getType(check);
+        if(!indexType.isComparableTo(arrayType.getArrayIndexType())){
+          throw TypeCheckingExceptionPrivate(n, "array store not indexed with correct type for array");
+        }
+        if(!valueType.isComparableTo(arrayType.getArrayConstituentType())){
+          Debug("array-types") << "array type: "<< arrayType.getArrayConstituentType() << std::endl;
+          Debug("array-types") << "value types: " << valueType << std::endl;
+          throw TypeCheckingExceptionPrivate(n, "array store not assigned with correct type for array");
+        }
+      }
+      return arrayType;
+    }
+    else {
+      Assert(n.getKind() == kind::STORE_ALL);
+      ArrayStoreAll storeAll = n.getConst<ArrayStoreAll>();
+      ArrayType arrayType = storeAll.getType();
+      return TypeNode::fromType(arrayType);
+    }
+  }
+
+  inline static bool computeIsConst(NodeManager* nodeManager, TNode n)
+    throw (AssertionException) {
+    Assert(n.getKind() == kind::STORE);
+    NodeManagerScope nms(nodeManager);
+
+    TNode store = n[0];
+    TNode index = n[1];
+    TNode value = n[2];
+
+    // A constant must have only constant children and be in normal form
+    // If any child is non-const, this is not a constant
+    if (!store.isConst() || !index.isConst() || !value.isConst()) {
+      return false;
+    }
+
+    // Normal form for nested stores is just ordering by index but also need to check that we are not writing
+    // to default value
+    if (store.getKind() == kind::STORE && (!(store[1] < index))) {
+      return false;
+    }
+
+    unsigned depth = 1;
+    unsigned valCount = 1;
+    while (store.getKind() == kind::STORE) {
+      depth += 1;
+      if (store[2] == value) {
+        valCount += 1;
+      }
+      store = store[0];
+    }
+    Assert(store.getKind() == kind::STORE_ALL);
+    ArrayStoreAll storeAll = store.getConst<ArrayStoreAll>();
+    Node defaultValue = Node::fromExpr(storeAll.getExpr());
+    if (value == defaultValue) {
+      return false;
+    }
+
+    // Get the cardinality of the index type
+    Cardinality indexCard = index.getType().getCardinality();
+
+    if (indexCard.isInfinite()) {
+      return true;
+    }
+
+    // When index sort is finite, we have to check whether there is any value
+    // that is written to more than the default value.  If so, it is not in
+    // normal form.
+
+    // Get the most frequently written value for n[0]
+    TNode mostFrequentValue;
+    unsigned mostFrequentValueCount = 0;
+    store = n[0];
+    if (store.getKind() == kind::STORE) {
+      mostFrequentValue = getMostFrequentValue(store);
+      mostFrequentValueCount = getMostFrequentValueCount(store);
+    }
+
+    // Compute the most frequently written value for n
+    if (valCount > mostFrequentValueCount ||
+        (valCount == mostFrequentValueCount && value < mostFrequentValue)) {
+      mostFrequentValue = value;
+      mostFrequentValueCount = valCount;
+    }
+
+    // Need to make sure the default value count is larger, or the same and the default value is expression-order-less-than nextValue
+    Cardinality::CardinalityComparison compare = indexCard.compare(mostFrequentValueCount + depth);
+    Assert(compare != Cardinality::UNKNOWN);
+    if (compare == Cardinality::LESS ||
+        (compare == Cardinality::EQUAL && (!(defaultValue < mostFrequentValue)))) {
+      return false;
+    }
+    setMostFrequentValue(n, mostFrequentValue);
+    setMostFrequentValueCount(n, mostFrequentValueCount);
+    return true;
+  }
+
+};/* struct ArrayStoreTypeRule */
+
+struct ArrayTableFunTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::ARR_TABLE_FUN);
+    TypeNode arrayType = n[0].getType(check);
+    if( check ) {
+      if(!arrayType.isArray()) {
+        throw TypeCheckingExceptionPrivate(n, "array table fun arg 0 is non-array");
+      }
+      TypeNode arrType2 = n[1].getType(check);
+      if(!arrayType.isArray()) {
+        throw TypeCheckingExceptionPrivate(n, "array table fun arg 1 is non-array");
+      }
+      TypeNode indexType = n[2].getType(check);
+      if(!indexType.isComparableTo(arrayType.getArrayIndexType())){
+        throw TypeCheckingExceptionPrivate(n, "array table fun arg 2 does not match type of array");
+      }
+      indexType = n[3].getType(check);
+      if(!indexType.isComparableTo(arrayType.getArrayIndexType())){
+        throw TypeCheckingExceptionPrivate(n, "array table fun arg 3 does not match type of array");
+      }
+    }
+    return arrayType.getArrayIndexType();
+  }
+};/* struct ArrayTableFunTypeRule */
+
+struct ArrayLambdaTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::ARRAY_LAMBDA);
+    TypeNode lamType = n[0].getType(check);
+    if( check ) {
+      if(n[0].getKind() != kind::LAMBDA) {
+        throw TypeCheckingExceptionPrivate(n, "array lambda arg is non-lambda");
+      }
+    }
+    if(lamType.getNumChildren() != 2) {
+      throw TypeCheckingExceptionPrivate(n, "array lambda arg is not unary lambda");
+    }
+    return nodeManager->mkArrayType(lamType[0], lamType[1]);
+  }
+};/* struct ArrayLambdaTypeRule */
+
+struct ArraysProperties {
+  inline static Cardinality computeCardinality(TypeNode type) {
+    Assert(type.getKind() == kind::ARRAY_TYPE);
+
+    Cardinality indexCard = type[0].getCardinality();
+    Cardinality valueCard = type[1].getCardinality();
+
+    return valueCard ^ indexCard;
+  }
+
+  inline static bool isWellFounded(TypeNode type) {
+    return type[0].isWellFounded() && type[1].isWellFounded();
+  }
+
+  inline static Node mkGroundTerm(TypeNode type) {
+    return *TypeEnumerator(type);
+  }
+};/* struct ArraysProperties */
+
+
+struct ArrayPartialSelectTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::PARTIAL_SELECT_0 || n.getKind() == kind::PARTIAL_SELECT_1);
+    return nodeManager->integerType();
+  }
+};/* struct ArrayPartialSelectTypeRule */
+
+}/* CVC4::theory::arrays namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__ARRAYS__THEORY_ARRAYS_TYPE_RULES_H */
diff --git a/src/theory/arrays/type_enumerator.h b/src/theory/arrays/type_enumerator.h
new file mode 100644
index 0000000..0208fe5
--- /dev/null
+++ b/src/theory/arrays/type_enumerator.h
@@ -0,0 +1,158 @@
+/*********************                                                        */
+/*! \file type_enumerator.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Clark Barrett, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An enumerator for arrays
+ **
+ ** An enumerator for arrays.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__ARRAYS__TYPE_ENUMERATOR_H
+#define __CVC4__THEORY__ARRAYS__TYPE_ENUMERATOR_H
+
+#include "theory/type_enumerator.h"
+#include "expr/type_node.h"
+#include "expr/kind.h"
+#include "theory/rewriter.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arrays {
+
+class ArrayEnumerator : public TypeEnumeratorBase<ArrayEnumerator> {
+  /** type properties */
+  TypeEnumeratorProperties * d_tep;
+  TypeEnumerator d_index;
+  TypeNode d_constituentType;
+  NodeManager* d_nm;
+  std::vector<Node> d_indexVec;
+  std::vector<TypeEnumerator*> d_constituentVec;
+  bool d_finished;
+  Node d_arrayConst;
+
+public:
+
+  ArrayEnumerator(TypeNode type, TypeEnumeratorProperties * tep = NULL) throw(AssertionException) :
+    TypeEnumeratorBase<ArrayEnumerator>(type),
+    d_tep(tep),
+    d_index(type.getArrayIndexType(), tep),
+    d_constituentType(type.getArrayConstituentType()),
+    d_nm(NodeManager::currentNM()),
+    d_indexVec(),
+    d_constituentVec(),
+    d_finished(false),
+    d_arrayConst()
+  {
+    d_indexVec.push_back(*d_index);
+    d_constituentVec.push_back(new TypeEnumerator(d_constituentType, d_tep));
+    d_arrayConst = d_nm->mkConst(ArrayStoreAll(type.toType(), (*(*d_constituentVec.back())).toExpr()));
+    Trace("array-type-enum") << "Array const : " << d_arrayConst << std::endl;
+  }
+
+  // An array enumerator could be large, and generally you don't want to
+  // go around copying these things; but a copy ctor is presently required
+  // by the TypeEnumerator framework.
+  ArrayEnumerator(const ArrayEnumerator& ae) throw() :
+    TypeEnumeratorBase<ArrayEnumerator>(ae.d_nm->mkArrayType(ae.d_index.getType(), ae.d_constituentType)),
+    d_tep(ae.d_tep),
+    d_index(ae.d_index),
+    d_constituentType(ae.d_constituentType),
+    d_nm(ae.d_nm),
+    d_indexVec(ae.d_indexVec),
+    d_constituentVec(),// copied below
+    d_finished(ae.d_finished),
+    d_arrayConst(ae.d_arrayConst)
+  {
+    for(std::vector<TypeEnumerator*>::const_iterator i =
+          ae.d_constituentVec.begin(), i_end = ae.d_constituentVec.end();
+        i != i_end;
+        ++i) {
+      d_constituentVec.push_back(new TypeEnumerator(**i));
+    }
+  }
+
+  ~ArrayEnumerator() {
+    while (!d_constituentVec.empty()) {
+      delete d_constituentVec.back();
+      d_constituentVec.pop_back();
+    }
+  }
+
+  Node operator*() throw(NoMoreValuesException) {
+    if (d_finished) {
+      throw NoMoreValuesException(getType());
+    }
+    Node n = d_arrayConst;
+    for (unsigned i = 0; i < d_indexVec.size(); ++i) {
+      n = d_nm->mkNode(kind::STORE, n, d_indexVec[d_indexVec.size() - 1 - i], *(*(d_constituentVec[i])));
+    }
+    Trace("array-type-enum") << "operator * prerewrite: " << n << std::endl;
+    n = Rewriter::rewrite(n);
+    Trace("array-type-enum") << "operator * returning: " << n << std::endl;
+    return n;
+  }
+
+  ArrayEnumerator& operator++() throw() {
+    Trace("array-type-enum") << "operator++ called, **this = " << **this << std::endl;
+
+    if (d_finished) {
+      Trace("array-type-enum") << "operator++ finished!" << std::endl;
+      return *this;
+    }
+    while (!d_constituentVec.empty()) {
+      ++(*d_constituentVec.back());
+      if (d_constituentVec.back()->isFinished()) {
+        delete d_constituentVec.back();
+        d_constituentVec.pop_back();
+      }
+      else {
+        break;
+      }
+    }
+
+    if (d_constituentVec.empty()) {
+      ++d_index;
+      if (d_index.isFinished()) {
+        Trace("array-type-enum") << "operator++ finished!" << std::endl;
+        d_finished = true;
+        return *this;
+      }
+      d_indexVec.push_back(*d_index);
+      d_constituentVec.push_back(new TypeEnumerator(d_constituentType, d_tep));
+      ++(*d_constituentVec.back());
+      if (d_constituentVec.back()->isFinished()) {
+        Trace("array-type-enum") << "operator++ finished!" << std::endl;
+        d_finished = true;
+        return *this;
+      }
+    }
+
+    while (d_constituentVec.size() < d_indexVec.size()) {
+      d_constituentVec.push_back(new TypeEnumerator(d_constituentType, d_tep));
+    }
+
+    Trace("array-type-enum") << "operator++ returning, **this = " << **this << std::endl;
+    return *this;
+  }
+
+  bool isFinished() throw() {
+    Trace("array-type-enum") << "isFinished returning: " << d_finished << std::endl;
+    return d_finished;
+  }
+
+};/* class ArrayEnumerator */
+
+}/* CVC4::theory::arrays namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__ARRAYS__TYPE_ENUMERATOR_H */
diff --git a/src/theory/arrays/union_find.cpp b/src/theory/arrays/union_find.cpp
new file mode 100644
index 0000000..7899e85
--- /dev/null
+++ b/src/theory/arrays/union_find.cpp
@@ -0,0 +1,57 @@
+/*********************                                                        */
+/*! \file union_find.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Path-compressing, backtrackable union-find using an undo
+ ** stack. Refactored from the UF union-find.
+ **
+ ** Path-compressing, backtrackable union-find using an undo stack
+ ** rather than storing items in a CDMap<>.
+ **/
+
+#include <iostream>
+
+#include "base/cvc4_assert.h"
+#include "expr/node.h"
+#include "theory/arrays/union_find.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace arrays {
+
+template <class NodeType, class NodeHash>
+void UnionFind<NodeType, NodeHash>::notify() {
+  Trace("arraysuf") << "arraysUF cancelling : " << d_offset << " < " << d_trace.size() << " ?" << endl;
+  while(d_offset < d_trace.size()) {
+    pair<TNode, TNode> p = d_trace.back();
+    if(p.second.isNull()) {
+      d_map.erase(p.first);
+      Trace("arraysuf") << "arraysUF   " << d_trace.size() << " erasing " << p.first << endl;
+    } else {
+      d_map[p.first] = p.second;
+      Trace("arraysuf") << "arraysUF   " << d_trace.size() << " replacing " << p << endl;
+    }
+    d_trace.pop_back();
+  }
+  Trace("arraysuf") << "arraysUF cancelling finished." << endl;
+}
+
+// The following declarations allow us to put functions in the .cpp file
+// instead of the header, since we know which instantiations are needed.
+
+template void UnionFind<Node, NodeHashFunction>::notify();
+
+template void UnionFind<TNode, TNodeHashFunction>::notify();
+
+}/* CVC4::theory::arrays namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/arrays/union_find.h b/src/theory/arrays/union_find.h
new file mode 100644
index 0000000..5d59e8d
--- /dev/null
+++ b/src/theory/arrays/union_find.h
@@ -0,0 +1,144 @@
+/*********************                                                        */
+/*! \file union_find.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Path-compressing, backtrackable union-find using an undo
+ ** stack. Refactored from the UF union-find.
+ **
+ ** Path-compressing, backtrackable union-find using an undo stack
+ ** rather than storing items in a CDMap<>.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__ARRAYS__UNION_FIND_H
+#define __CVC4__THEORY__ARRAYS__UNION_FIND_H
+
+#include <utility>
+#include <vector>
+#include <ext/hash_map>
+
+#include "expr/node.h"
+#include "context/cdo.h"
+
+namespace CVC4 {
+
+namespace context {
+  class Context;
+}/* CVC4::context namespace */
+
+namespace theory {
+namespace arrays {
+
+// NodeType \in { Node, TNode }
+template <class NodeType, class NodeHash>
+class UnionFind : context::ContextNotifyObj {
+  /** Our underlying map type. */
+  typedef __gnu_cxx::hash_map<NodeType, NodeType, NodeHash> MapType;
+
+  /**
+   * Our map of Nodes to their canonical representatives.
+   * If a Node is not present in the map, it is its own
+   * representative.
+   */
+  MapType d_map;
+
+  /** Our undo stack for changes made to d_map. */
+  std::vector<std::pair<TNode, TNode> > d_trace;
+
+  /** Our current offset in the d_trace stack (context-dependent). */
+  context::CDO<size_t> d_offset;
+
+public:
+  UnionFind(context::Context* ctxt) :
+    context::ContextNotifyObj(ctxt),
+    d_offset(ctxt, 0) {
+  }
+
+  ~UnionFind() throw() { }
+
+  /**
+   * Return a Node's union-find representative, doing path compression.
+   */
+  inline TNode find(TNode n);
+
+  /**
+   * Return a Node's union-find representative, NOT doing path compression.
+   * This is useful for Assert() statements, debug checking, and similar
+   * things that you do NOT want to mutate the structure.
+   */
+  inline TNode debugFind(TNode n) const;
+
+  /**
+   * Set the canonical representative of n to newParent.  They should BOTH
+   * be their own canonical representatives on entry to this funciton.
+   */
+  inline void setCanon(TNode n, TNode newParent);
+
+  /**
+   * Called by the Context when a pop occurs.  Cancels everything to the
+   * current context level.  Overrides ContextNotifyObj::notify().
+   */
+  void notify();
+
+};/* class UnionFind<> */
+
+template <class NodeType, class NodeHash>
+inline TNode UnionFind<NodeType, NodeHash>::debugFind(TNode n) const {
+  typename MapType::const_iterator i = d_map.find(n);
+  if(i == d_map.end()) {
+    return n;
+  } else {
+    return debugFind((*i).second);
+  }
+}
+
+template <class NodeType, class NodeHash>
+inline TNode UnionFind<NodeType, NodeHash>::find(TNode n) {
+  Trace("arraysuf") << "arraysUF find of " << n << std::endl;
+  typename MapType::iterator i = d_map.find(n);
+  if(i == d_map.end()) {
+    Trace("arraysuf") << "arraysUF   it is rep" << std::endl;
+    return n;
+  } else {
+    Trace("arraysuf") << "arraysUF   not rep: par is " << (*i).second << std::endl;
+    std::pair<TNode, TNode> pr = *i;
+    // our iterator is invalidated by the recursive call to find(),
+    // since it mutates the map
+    TNode p = find(pr.second);
+    if(p == pr.second) {
+      return p;
+    }
+    d_trace.push_back(std::make_pair(n, pr.second));
+    d_offset = d_trace.size();
+    Trace("arraysuf") << "arraysUF   setting canon of " << n << " : " << p << " @ " << d_trace.size() << std::endl;
+    pr.second = p;
+    d_map.insert(pr);
+    return p;
+  }
+}
+
+template <class NodeType, class NodeHash>
+inline void UnionFind<NodeType, NodeHash>::setCanon(TNode n, TNode newParent) {
+  Assert(d_map.find(n) == d_map.end());
+  Assert(d_map.find(newParent) == d_map.end());
+  if(n != newParent) {
+    Trace("arraysuf") << "arraysUF setting canon of " << n << " : " << newParent << " @ " << d_trace.size() << std::endl;
+    d_map[n] = newParent;
+    d_trace.push_back(std::make_pair(n, TNode::null()));
+    d_offset = d_trace.size();
+  }
+}
+
+}/* CVC4::theory::arrays namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /*__CVC4__THEORY__ARRAYS__UNION_FIND_H */
diff --git a/src/theory/atom_requests.cpp b/src/theory/atom_requests.cpp
new file mode 100644
index 0000000..e3f30cc
--- /dev/null
+++ b/src/theory/atom_requests.cpp
@@ -0,0 +1,79 @@
+/*********************                                                        */
+/*! \file atom_requests.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/atom_requests.h"
+
+using namespace CVC4;
+
+AtomRequests::AtomRequests(context::Context* context)
+: d_allRequests(context)
+, d_requests(context)
+, d_triggerToRequestMap(context)
+{}
+
+AtomRequests::element_index AtomRequests::getList(TNode trigger) const {
+  trigger_to_list_map::const_iterator find = d_triggerToRequestMap.find(trigger);
+  if (find == d_triggerToRequestMap.end()) {
+    return null_index;
+  } else {
+    return (*find).second;
+  }
+}
+
+bool AtomRequests::isTrigger(TNode atom) const {
+  return getList(atom) != null_index;
+}
+
+AtomRequests::atom_iterator AtomRequests::getAtomIterator(TNode trigger) const {
+  return atom_iterator(*this, getList(trigger));
+}
+
+void AtomRequests::add(TNode triggerAtom, TNode atomToSend, theory::TheoryId toTheory) {
+
+  Debug("theory::atoms") << "AtomRequests::add(" << triggerAtom << ", " << atomToSend << ", " << toTheory << ")" << std::endl;
+
+  Request request(atomToSend, toTheory);
+
+  if (d_allRequests.find(request) != d_allRequests.end()) {
+    // Have it already
+    Debug("theory::atoms") << "AtomRequests::add(" << triggerAtom << ", " << atomToSend << ", " << toTheory << "): already there" << std::endl;
+    return;
+  }
+  Debug("theory::atoms") << "AtomRequests::add(" << triggerAtom << ", " << atomToSend << ", " << toTheory << "): adding" << std::endl;
+
+  /// Mark the new request
+  d_allRequests.insert(request);
+
+  // Index of the new request in the list of trigger
+  element_index index = d_requests.size();
+  element_index previous = getList(triggerAtom);
+  d_requests.push_back(Element(request, previous));
+  d_triggerToRequestMap[triggerAtom] = index;
+}
+
+bool AtomRequests::atom_iterator::done() const {
+  return index == null_index;
+}
+
+void AtomRequests::atom_iterator::next() {
+  index = requests.d_requests[index].previous;
+}
+
+const AtomRequests::Request& AtomRequests::atom_iterator::get() const {
+  return requests.d_requests[index].request;
+}
+
diff --git a/src/theory/atom_requests.h b/src/theory/atom_requests.h
new file mode 100644
index 0000000..7f61941
--- /dev/null
+++ b/src/theory/atom_requests.h
@@ -0,0 +1,126 @@
+/*********************                                                        */
+/*! \file atom_requests.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "expr/node.h"
+#include "theory/theory.h"
+#include "context/cdlist.h"
+#include "context/cdhashset.h"
+#include "context/cdhashmap.h"
+
+namespace CVC4 {
+
+class AtomRequests {
+
+public:
+
+  /** Which atom and where to send it */
+  struct Request {
+    /** Atom */
+    Node atom;
+    /** Where to send it */
+    theory::TheoryId toTheory;
+
+    Request(TNode atom, theory::TheoryId toTheory)
+    : atom(atom), toTheory(toTheory) {}
+    Request()
+    : toTheory(theory::THEORY_LAST)
+    {}
+
+    bool operator == (const Request& other) const {
+      return atom == other.atom && toTheory == other.toTheory;
+    }
+
+    size_t hash() const {
+      return atom.getId();
+    }
+
+  };
+
+  AtomRequests(context::Context* context);
+
+  /** Mark the atom to be sent to a theory, when the trigger atom gets assigned */
+  void add(TNode triggerAtom, TNode atomToSend, theory::TheoryId toTheory);
+
+  /** Returns true if the node is a trigger and has a list of atoms to send */
+  bool isTrigger(TNode atom) const;
+
+  /** Indices in lists */
+  typedef size_t element_index;
+
+  class atom_iterator {
+    const AtomRequests& requests;
+    element_index index;
+    friend class AtomRequests;
+    atom_iterator(const AtomRequests& requests, element_index start)
+    : requests(requests), index(start) {}
+  public:
+    /** Is this iterator done  */
+    bool done() const;
+    /** Go to the next element */
+    void next();
+    /** Get the actual request */
+    const Request& get() const;
+  };
+
+  atom_iterator getAtomIterator(TNode trigger) const;
+
+private:
+
+  struct RequestHashFunction {
+    size_t operator () (const Request& r) const {
+      return r.hash();
+    }
+  };
+
+  /** Set of all requests so we don't add twice */
+  context::CDHashSet<Request, RequestHashFunction> d_allRequests;
+
+  static const element_index null_index = -1;
+
+  struct Element {
+    /** Current request */
+    Request request;
+    /** Previous request */
+    element_index previous;
+
+    Element(const Request& request, element_index previous)
+    : request(request), previous(previous)
+    {}
+  };
+
+  /** We index the requests in this vector, it's a list */
+  context::CDList<Element> d_requests;
+
+  typedef context::CDHashMap<Node, element_index, NodeHashFunction> trigger_to_list_map;
+
+  /** Map from triggers, to the list of elements they trigger */
+  trigger_to_list_map d_triggerToRequestMap;
+
+  /** Get the list index of the trigger */
+  element_index getList(TNode trigger) const;
+
+};
+
+}
+
+
+
+
diff --git a/src/theory/booleans/circuit_propagator.cpp b/src/theory/booleans/circuit_propagator.cpp
new file mode 100644
index 0000000..8e91165
--- /dev/null
+++ b/src/theory/booleans/circuit_propagator.cpp
@@ -0,0 +1,393 @@
+/*********************                                                        */
+/*! \file circuit_propagator.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A non-clausal circuit propagator for Boolean simplification
+ **
+ ** A non-clausal circuit propagator for Boolean simplification.
+ **/
+
+#include "theory/booleans/circuit_propagator.h"
+#include "util/utility.h"
+
+#include <stack>
+#include <vector>
+#include <algorithm>
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace booleans {
+
+void CircuitPropagator::assertTrue(TNode assertion)
+{
+  if (assertion.getKind() == kind::AND) {
+    for (unsigned i = 0; i < assertion.getNumChildren(); ++ i) {
+      assertTrue(assertion[i]);
+    }
+  } else {
+    // Analyze the assertion for back-edges and all that
+    computeBackEdges(assertion);
+    // Assign the given assertion to true
+    assignAndEnqueue(assertion, true);
+  }
+}
+
+void CircuitPropagator::computeBackEdges(TNode node) {
+
+  Debug("circuit-prop") << "CircuitPropagator::computeBackEdges(" << node << ")" << endl;
+
+  // Vector of nodes to visit
+  vector<TNode> toVisit;
+
+  // Start with the top node
+  if (d_seen.find(node) == d_seen.end()) {
+    toVisit.push_back(node);
+    d_seen.insert(node);
+  }
+
+  // Initialize the back-edges for the root, so we don't have a special case
+  d_backEdges[node];
+
+  // Go through the visit list
+  for (unsigned i = 0; i < toVisit.size(); ++ i) {
+    // Node we need to visit
+    TNode current = toVisit[i];
+    Debug("circuit-prop") << "CircuitPropagator::computeBackEdges(): processing " << current << endl;
+    Assert(d_seen.find(current) != d_seen.end());
+
+    // If this not an atom visit all the children and compute the back edges
+    if (Theory::theoryOf(current) == THEORY_BOOL) {
+      for (unsigned child = 0, child_end = current.getNumChildren(); child < child_end; ++ child) {
+        TNode childNode = current[child];
+        // Add the back edge
+        d_backEdges[childNode].push_back(current);
+        // Add to the queue if not seen yet
+        if (d_seen.find(childNode) == d_seen.end()) {
+          toVisit.push_back(childNode);
+          d_seen.insert(childNode);
+        }
+      }
+    }
+  }
+}
+
+void CircuitPropagator::propagateBackward(TNode parent, bool parentAssignment) {
+
+  Debug("circuit-prop") << "CircuitPropagator::propagateBackward(" << parent << ", " << parentAssignment << ")" << endl;
+
+  // backward rules
+  switch(parent.getKind()) {
+  case kind::AND:
+    if (parentAssignment) {
+      // AND = TRUE: forall children c, assign(c = TRUE)
+      for(TNode::iterator i = parent.begin(), i_end = parent.end(); i != i_end; ++i) {
+        assignAndEnqueue(*i, true);
+      }
+    } else {
+      // AND = FALSE: if all children BUT ONE == TRUE, assign(c = FALSE)
+      TNode::iterator holdout = find_if_unique(parent.begin(), parent.end(), not1(IsAssignedTo(*this, true)));
+      if (holdout != parent.end()) {
+        assignAndEnqueue(*holdout, false);
+      }
+    }
+    break;
+  case kind::OR:
+    if (parentAssignment) {
+      // OR = TRUE: if all children BUT ONE == FALSE, assign(c = TRUE)
+      TNode::iterator holdout = find_if_unique(parent.begin(), parent.end(), not1(IsAssignedTo(*this, false)));
+      if (holdout != parent.end()) {
+        assignAndEnqueue(*holdout, true);
+      }
+    } else {
+      // OR = FALSE: forall children c, assign(c = FALSE)
+      for(TNode::iterator i = parent.begin(), i_end = parent.end(); i != i_end; ++i) {
+        assignAndEnqueue(*i, false);
+      }
+    }
+    break;
+  case kind::NOT:
+    // NOT = b: assign(c = !b)
+    assignAndEnqueue(parent[0], !parentAssignment);
+    break;
+  case kind::ITE:
+    if (isAssignedTo(parent[0], true)) {
+      // ITE c x y = v: if c is assigned and TRUE, assign(x = v)
+      assignAndEnqueue(parent[1], parentAssignment);
+    } else if (isAssignedTo(parent[0], false)) {
+      // ITE c x y = v: if c is assigned and FALSE, assign(y = v)
+      assignAndEnqueue(parent[2], parentAssignment);
+    } else if (isAssigned(parent[1]) && isAssigned(parent[2])) {
+      if (getAssignment(parent[1]) == parentAssignment && getAssignment(parent[2]) != parentAssignment) {
+        // ITE c x y = v: if c is unassigned, x and y are assigned, x==v and y!=v, assign(c = TRUE)
+        assignAndEnqueue(parent[0], true);
+      } else if (getAssignment(parent[1]) != parentAssignment && getAssignment(parent[2]) == parentAssignment) {
+        // ITE c x y = v: if c is unassigned, x and y are assigned, x!=v and y==v, assign(c = FALSE)
+        assignAndEnqueue(parent[0], false);
+      }
+    }
+    break;
+  case kind::EQUAL:
+    Assert( parent[0].getType().isBoolean() );
+    if (parentAssignment) {
+      // IFF x y = TRUE: if x [resp y] is assigned, assign(y = x.assignment [resp x = y.assignment])
+      if (isAssigned(parent[0])) {
+        assignAndEnqueue(parent[1], getAssignment(parent[0]));
+      } else if (isAssigned(parent[1])) {
+        assignAndEnqueue(parent[0], getAssignment(parent[1]));
+      }
+    } else {
+      // IFF x y = FALSE: if x [resp y] is assigned, assign(y = !x.assignment [resp x = !y.assignment])
+      if (isAssigned(parent[0])) {
+        assignAndEnqueue(parent[1], !getAssignment(parent[0]));
+      } else if (isAssigned(parent[1])) {
+        assignAndEnqueue(parent[0], !getAssignment(parent[1]));
+      }
+    }
+    break;
+  case kind::IMPLIES:
+    if (parentAssignment) {
+      if (isAssignedTo(parent[0], true)) {
+        // IMPLIES x y = TRUE, and x == TRUE: assign(y = TRUE)
+        assignAndEnqueue(parent[1], true);
+      }
+      if (isAssignedTo(parent[1], false)) {
+        // IMPLIES x y = TRUE, and y == FALSE: assign(x = FALSE)
+        assignAndEnqueue(parent[0], false);
+      }
+    } else {
+      // IMPLIES x y = FALSE: assign(x = TRUE) and assign(y = FALSE)
+      assignAndEnqueue(parent[0], true);
+      assignAndEnqueue(parent[1], false);
+    }
+    break;
+  case kind::XOR:
+    if (parentAssignment) {
+      if (isAssigned(parent[0])) {
+        // XOR x y = TRUE, and x assigned, assign(y = !assignment(x))
+        assignAndEnqueue(parent[1], !getAssignment(parent[0]));
+      } else if (isAssigned(parent[1])) {
+        // XOR x y = TRUE, and y assigned, assign(x = !assignment(y))
+        assignAndEnqueue(parent[0], !getAssignment(parent[1]));
+      }
+    } else {
+      if (isAssigned(parent[0])) {
+        // XOR x y = FALSE, and x assigned, assign(y = assignment(x))
+        assignAndEnqueue(parent[1], getAssignment(parent[0]));
+      } else if (isAssigned(parent[1])) {
+        // XOR x y = FALSE, and y assigned, assign(x = assignment(y))
+        assignAndEnqueue(parent[0], getAssignment(parent[1]));
+      }
+    }
+    break;
+  default:
+    Unhandled();
+  }
+}
+
+
+void CircuitPropagator::propagateForward(TNode child, bool childAssignment) {
+
+  // The assignment we have
+  Debug("circuit-prop") << "CircuitPropagator::propagateForward(" << child << ", " << childAssignment << ")" << endl;
+
+  // Get the back any nodes where this is child
+  const vector<Node>& parents = d_backEdges.find(child)->second;
+
+  // Go through the parents and see if there is anything to propagate
+  vector<Node>::const_iterator parent_it = parents.begin();
+  vector<Node>::const_iterator parent_it_end = parents.end();
+  for(; parent_it != parent_it_end && !d_conflict; ++ parent_it) {
+    // The current parent of the child
+    TNode parent = *parent_it;
+    Assert(parent.hasSubterm(child));
+
+    // Forward rules
+    switch(parent.getKind()) {
+    case kind::AND:
+      if (childAssignment) {
+        TNode::iterator holdout;
+        holdout = find_if (parent.begin(), parent.end(), not1(IsAssignedTo(*this, true)));
+        if (holdout == parent.end()) { // all children are assigned TRUE
+          // AND ...(x=TRUE)...: if all children now assigned to TRUE, assign(AND = TRUE)
+          assignAndEnqueue(parent, true);
+        } else if (isAssignedTo(parent, false)) {// the AND is FALSE
+          // is the holdout unique ?
+          TNode::iterator other = find_if (holdout + 1, parent.end(), not1(IsAssignedTo(*this, true)));
+          if (other == parent.end()) { // the holdout is unique
+            // AND ...(x=TRUE)...: if all children BUT ONE now assigned to TRUE, and AND == FALSE, assign(last_holdout = FALSE)
+            assignAndEnqueue(*holdout, false);
+          }
+        }
+      } else {
+        // AND ...(x=FALSE)...: assign(AND = FALSE)
+        assignAndEnqueue(parent, false);
+      }
+      break;
+    case kind::OR:
+      if (childAssignment) {
+        // OR ...(x=TRUE)...: assign(OR = TRUE)
+        assignAndEnqueue(parent, true);
+      } else {
+        TNode::iterator holdout;
+        holdout = find_if (parent.begin(), parent.end(), not1(IsAssignedTo(*this, false)));
+        if (holdout == parent.end()) { // all children are assigned FALSE
+          // OR ...(x=FALSE)...: if all children now assigned to FALSE, assign(OR = FALSE)
+          assignAndEnqueue(parent, false);
+        } else if (isAssignedTo(parent, true)) {// the OR is TRUE
+          // is the holdout unique ?
+          TNode::iterator other = find_if (holdout + 1, parent.end(), not1(IsAssignedTo(*this, false)));
+          if (other == parent.end()) { // the holdout is unique
+            // OR ...(x=FALSE)...: if all children BUT ONE now assigned to FALSE, and OR == TRUE, assign(last_holdout = TRUE)
+            assignAndEnqueue(*holdout, true);
+          }
+        }
+      }
+      break;
+
+    case kind::NOT:
+      // NOT (x=b): assign(NOT = !b)
+      assignAndEnqueue(parent, !childAssignment);
+      break;
+
+    case kind::ITE:
+      if (child == parent[0]) {
+        if (childAssignment) {
+          if (isAssigned(parent[1])) {
+            // ITE (c=TRUE) x y: if x is assigned, assign(ITE = x.assignment)
+            assignAndEnqueue(parent, getAssignment(parent[1]));
+          }
+        } else {
+          if (isAssigned(parent[2])) {
+            // ITE (c=FALSE) x y: if y is assigned, assign(ITE = y.assignment)
+            assignAndEnqueue(parent, getAssignment(parent[2]));
+          }
+        }
+      }
+      if (child == parent[1]) {
+        if (isAssignedTo(parent[0], true)) {
+          // ITE c (x=v) y: if c is assigned and TRUE, assign(ITE = v)
+          assignAndEnqueue(parent, childAssignment);
+        }
+      }
+      if (child == parent[2]) {
+        Assert(child == parent[2]);
+        if (isAssignedTo(parent[0], false)) {
+          // ITE c x (y=v): if c is assigned and FALSE, assign(ITE = v)
+          assignAndEnqueue(parent, childAssignment);
+        }
+      }
+      break;
+    case kind::EQUAL:
+      Assert( parent[0].getType().isBoolean() );
+      if (isAssigned(parent[0]) && isAssigned(parent[1])) {
+        // IFF x y: if x or y is assigned, assign(IFF = (x.assignment <=> y.assignment))
+        assignAndEnqueue(parent, getAssignment(parent[0]) == getAssignment(parent[1]));
+      } else {
+        if (isAssigned(parent)) {
+          if (child == parent[0]) {
+            if (getAssignment(parent)) {
+              // IFF (x = b) y: if IFF is assigned to TRUE, assign(y = b)
+              assignAndEnqueue(parent[1], childAssignment);
+            } else {
+              // IFF (x = b) y: if IFF is assigned to FALSE, assign(y = !b)
+              assignAndEnqueue(parent[1], !childAssignment);
+            }
+          } else {
+            Assert(child == parent[1]);
+            if (getAssignment(parent)) {
+              // IFF x y = b: if IFF is assigned to TRUE, assign(x = b)
+              assignAndEnqueue(parent[0], childAssignment);
+            } else {
+              // IFF x y = b y: if IFF is assigned to TRUE, assign(x = !b)
+              assignAndEnqueue(parent[0], !childAssignment);
+            }
+          }
+        }
+      }
+      break;
+    case kind::IMPLIES:
+      if (isAssigned(parent[0]) && isAssigned(parent[1])) {
+        // IMPLIES (x=v1) (y=v2): assign(IMPLIES = (!v1 || v2))
+        assignAndEnqueue(parent, !getAssignment(parent[0]) || getAssignment(parent[1]));
+      } else {
+        if (child == parent[0] && childAssignment && isAssignedTo(parent, true)) {
+          // IMPLIES (x=TRUE) y [with IMPLIES == TRUE]: assign(y = TRUE)
+          assignAndEnqueue(parent[1], true);
+        }
+        if (child == parent[1] && !childAssignment && isAssignedTo(parent, true)) {
+          // IMPLIES x (y=FALSE) [with IMPLIES == TRUE]: assign(x = FALSE)
+          assignAndEnqueue(parent[0], false);
+        }
+        // Note that IMPLIES == FALSE doesn't need any cases here
+        // because if that assignment has been done, we've already
+        // propagated all the children (in back-propagation).
+      }
+      break;
+    case kind::XOR:
+      if (isAssigned(parent)) {
+        if (child == parent[0]) {
+          // XOR (x=v) y [with XOR assigned], assign(y = (v ^ XOR)
+          assignAndEnqueue(parent[1], childAssignment != getAssignment(parent));
+        } else {
+          Assert(child == parent[1]);
+          // XOR x (y=v) [with XOR assigned], assign(x = (v ^ XOR))
+          assignAndEnqueue(parent[0], childAssignment != getAssignment(parent));
+        }
+      }
+      if (isAssigned(parent[0]) && isAssigned(parent[1])) {
+        assignAndEnqueue(parent, getAssignment(parent[0]) != getAssignment(parent[1]));
+      }
+      break;
+    default:
+      Unhandled();
+    }
+  }
+}
+
+bool CircuitPropagator::propagate() {
+
+  Debug("circuit-prop") << "CircuitPropagator::propagate()" << std::endl;
+
+  for(unsigned i = 0; i < d_propagationQueue.size() && !d_conflict; ++ i) {
+
+    // The current node we are propagating
+    TNode current = d_propagationQueue[i];
+    Debug("circuit-prop") << "CircuitPropagator::propagate(): processing " << current << std::endl;
+    bool assignment = getAssignment(current);
+    Debug("circuit-prop") << "CircuitPropagator::propagate(): assigned to " << (assignment ? "true" : "false") << std::endl;
+
+    // Is this an atom
+    bool atom = Theory::theoryOf(current) != THEORY_BOOL || current.isVar();
+
+    // If an atom, add to the list for simplification
+    if (atom) {
+      Debug("circuit-prop") << "CircuitPropagator::propagate(): adding to learned: " << (assignment ? (Node)current : current.notNode()) << std::endl;
+      d_learnedLiterals.push_back(assignment ? (Node)current : current.notNode());
+    }
+
+    // Propagate this value to the children (if not an atom or a constant)
+    if (d_backwardPropagation && !atom && !current.isConst()) {
+      propagateBackward(current, assignment);
+    }
+    // Propagate this value to the parents
+    if (d_forwardPropagation) {
+      propagateForward(current, assignment);
+    }
+  }
+
+  // No conflict
+  return d_conflict;
+}
+
+}/* CVC4::theory::booleans namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/booleans/circuit_propagator.h b/src/theory/booleans/circuit_propagator.h
new file mode 100644
index 0000000..5a6e462
--- /dev/null
+++ b/src/theory/booleans/circuit_propagator.h
@@ -0,0 +1,289 @@
+/*********************                                                        */
+/*! \file circuit_propagator.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Clark Barrett
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A non-clausal circuit propagator for Boolean simplification
+ **
+ ** A non-clausal circuit propagator for Boolean simplification.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__BOOLEANS__CIRCUIT_PROPAGATOR_H
+#define __CVC4__THEORY__BOOLEANS__CIRCUIT_PROPAGATOR_H
+
+#include <vector>
+#include <functional>
+
+#include "theory/theory.h"
+#include "context/context.h"
+#include "util/hash.h"
+#include "expr/node.h"
+#include "context/cdhashset.h"
+#include "context/cdhashmap.h"
+#include "context/cdo.h"
+
+namespace CVC4 {
+namespace theory {
+namespace booleans {
+
+
+/**
+ * The main purpose of the CircuitPropagator class is to maintain the
+ * state of the circuit for subsequent calls to propagate(), so that
+ * the same fact is not output twice, so that the same edge in the
+ * circuit isn't propagated twice, etc.
+ */
+class CircuitPropagator {
+
+public:
+
+  /**
+   * Value of a particular node
+   */
+  enum AssignmentStatus {
+    /** Node is currently unassigned */
+    UNASSIGNED = 0,
+    /** Node is assigned to true */
+    ASSIGNED_TO_TRUE,
+    /** Node is assigned to false */
+    ASSIGNED_TO_FALSE,
+  };
+
+  /** Invert a set value */
+  static inline AssignmentStatus neg(AssignmentStatus value) {
+    Assert(value != UNASSIGNED);
+    if (value == ASSIGNED_TO_TRUE) return ASSIGNED_TO_FALSE;
+    else return ASSIGNED_TO_TRUE;
+  }
+
+  typedef std::hash_map<Node, std::vector<Node>, NodeHashFunction> BackEdgesMap;
+
+private:
+
+  context::Context d_context;
+
+  /** The propagation queue */
+  std::vector<TNode> d_propagationQueue;
+
+  /** A context-notify object that clears out stale data. */
+  template <class T>
+  class DataClearer : context::ContextNotifyObj {
+    T& d_data;
+  protected:
+    void contextNotifyPop() {
+      Trace("circuit-prop") << "CircuitPropagator::DataClearer: clearing data "
+                            << "(size was " << d_data.size() << ")" << std::endl;
+      d_data.clear();
+    }
+  public:
+    DataClearer(context::Context* context, T& data) :
+      context::ContextNotifyObj(context),
+      d_data(data) {
+    }
+  };/* class DataClearer<T> */
+
+  /**
+   * We have a propagation queue "clearer" object for when the user
+   * context pops.  Normally the propagation queue should be empty,
+   * but this keeps us safe in case there's still some rubbish around
+   * on the queue.
+   */
+  DataClearer< std::vector<TNode> > d_propagationQueueClearer;
+
+  /** Are we in conflict? */
+  context::CDO<bool> d_conflict;
+
+  /** Map of substitutions */
+  std::vector<Node>& d_learnedLiterals;
+
+  /**
+   * Similar data clearer for learned literals.
+   */
+  DataClearer< std::vector<Node> > d_learnedLiteralClearer;
+
+  /**
+   * Back edges from nodes to where they are used.
+   */
+  BackEdgesMap d_backEdges;
+
+  /**
+   * Similar data clearer for back edges.
+   */
+  DataClearer<BackEdgesMap> d_backEdgesClearer;
+
+  /** Nodes that have been attached already (computed forward edges for) */
+  // All the nodes we've visited so far
+  context::CDHashSet<Node, NodeHashFunction> d_seen;
+
+  /**
+   * Assignment status of each node.
+   */
+  typedef context::CDHashMap<TNode, AssignmentStatus, TNodeHashFunction> AssignmentMap;
+  AssignmentMap d_state;
+
+  /**
+   * Assign Node in circuit with the value and add it to the queue; note conflicts.
+   */
+  void assignAndEnqueue(TNode n, bool value) {
+
+    Trace("circuit-prop") << "CircuitPropagator::assign(" << n << ", " << (value ? "true" : "false") << ")" << std::endl;
+
+    if (n.getKind() == kind::CONST_BOOLEAN) {
+      // Assigning a constant to the opposite value is dumb
+      if (value != n.getConst<bool>()) {
+        d_conflict = true;
+        return;
+      }
+    }
+
+    // Get the current assignment
+    AssignmentStatus state = d_state[n];
+
+    if(state != UNASSIGNED) {
+      // If the node is already assigned we might have a conflict
+      if(value != (state == ASSIGNED_TO_TRUE)) {
+        d_conflict = true;
+      }
+    } else {
+      // If unassigned, mark it as assigned
+      d_state[n] = value ? ASSIGNED_TO_TRUE : ASSIGNED_TO_FALSE;
+      // Add for further propagation
+      d_propagationQueue.push_back(n);
+    }
+  }
+
+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);
+    return i != d_state.end() && ((*i).second != UNASSIGNED);
+  }
+
+  /** True iff Node is assigned to the value. */
+  bool isAssignedTo(TNode n, bool value) const {
+    AssignmentMap::const_iterator i = d_state.find(n);
+    if (i == d_state.end()) return false;
+    if (value && ((*i).second == ASSIGNED_TO_TRUE)) return true;
+    if (!value && ((*i).second == ASSIGNED_TO_FALSE)) return true;
+    return false;
+  }
+
+  /** Get Node assignment in circuit.  Assert-fails if Node is unassigned. */
+  bool getAssignment(TNode n) const {
+    AssignmentMap::iterator i = d_state.find(n);
+    Assert(i != d_state.end() && (*i).second != UNASSIGNED);
+    return (*i).second == ASSIGNED_TO_TRUE;
+  }
+
+private:
+  /** Predicate for use in STL functions. */
+  class IsAssigned : public std::unary_function<TNode, bool> {
+    CircuitPropagator& d_circuit;
+  public:
+    IsAssigned(CircuitPropagator& circuit) :
+      d_circuit(circuit) {
+    }
+
+    bool operator()(TNode in) const {
+      return d_circuit.isAssigned(in);
+    }
+  };/* class IsAssigned */
+
+  /** Predicate for use in STL functions. */
+  class IsAssignedTo : public std::unary_function<TNode, bool> {
+    CircuitPropagator& d_circuit;
+    bool d_value;
+  public:
+    IsAssignedTo(CircuitPropagator& circuit, bool value) :
+      d_circuit(circuit),
+      d_value(value) {
+    }
+
+    bool operator()(TNode in) const {
+      return d_circuit.isAssignedTo(in, d_value);
+    }
+  };/* class IsAssignedTo */
+
+  /**
+   * Compute the map from nodes to the nodes that use it.
+   */
+  void computeBackEdges(TNode node);
+
+  /**
+   * Propagate new information forward in circuit to
+   * the parents of "in".
+   */
+  void propagateForward(TNode child, bool assignment);
+
+  /**
+   * Propagate new information backward in circuit to
+   * the children of "in".
+   */
+  void propagateBackward(TNode parent, bool assignment);
+
+  /** Whether to perform forward propagation */
+  const bool d_forwardPropagation;
+
+  /** Whether to perform backward propagation */
+  const bool d_backwardPropagation;
+
+public:
+  /**
+   * Construct a new CircuitPropagator.
+   */
+  CircuitPropagator(std::vector<Node>& outLearnedLiterals,
+                    bool enableForward = true, bool enableBackward = true) :
+    d_context(),
+    d_propagationQueue(),
+    d_propagationQueueClearer(&d_context, d_propagationQueue),
+    d_conflict(&d_context, false),
+    d_learnedLiterals(outLearnedLiterals),
+    d_learnedLiteralClearer(&d_context, outLearnedLiterals),
+    d_backEdges(),
+    d_backEdgesClearer(&d_context, d_backEdges),
+    d_seen(&d_context),
+    d_state(&d_context),
+    d_forwardPropagation(enableForward),
+    d_backwardPropagation(enableBackward) {
+  }
+
+  // Use custom context to ensure propagator is reset after use
+  void initialize()
+  { d_context.push(); }
+
+  void finish()
+  { d_context.pop(); }
+
+  /** Assert for propagation */
+  void assertTrue(TNode assertion);
+
+  /**
+   * Propagate through the asserted circuit propagator. New information discovered by the propagator
+   * are put in the substitutions vector used in construction.
+   *
+   * @return true iff conflict found
+   */
+  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 */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__BOOLEANS__CIRCUIT_PROPAGATOR_H */
diff --git a/src/theory/booleans/kinds b/src/theory/booleans/kinds
new file mode 100644
index 0000000..9d7b3fb
--- /dev/null
+++ b/src/theory/booleans/kinds
@@ -0,0 +1,47 @@
+# kinds                                                               -*- sh -*-
+#
+# For documentation on this file format, please refer to
+# src/theory/builtin/kinds.
+#
+
+theory THEORY_BOOL ::CVC4::theory::booleans::TheoryBool "theory/booleans/theory_bool.h"
+typechecker "theory/booleans/theory_bool_type_rules.h"
+
+properties finite
+
+rewriter ::CVC4::theory::booleans::TheoryBoolRewriter "theory/booleans/theory_bool_rewriter.h"
+
+sort BOOLEAN_TYPE \
+    2 \
+    well-founded \
+        "NodeManager::currentNM()->mkConst(false)" \
+        "expr/node_manager.h" \
+    "Boolean type"
+
+constant CONST_BOOLEAN \
+    bool \
+    ::CVC4::BoolHashFunction \
+    "util/bool.h" \
+    "truth and falsity; payload is a (C++) bool"
+
+enumerator BOOLEAN_TYPE \
+    "::CVC4::theory::booleans::BooleanEnumerator" \
+    "theory/booleans/type_enumerator.h"
+
+operator NOT 1 "logical not"
+operator AND 2: "logical and (N-ary)"
+operator IMPLIES 2 "logical implication (exactly two parameters)"
+operator OR 2: "logical or (N-ary)"
+operator XOR 2 "exclusive or (exactly two parameters)"
+operator ITE 3 "if-then-else, used for both Boolean and term ITE constructs; first parameter is (Boolean-sorted) condition, second is 'then', third is 'else' and these two parameters must have same base sort"
+
+typerule CONST_BOOLEAN ::CVC4::theory::boolean::BooleanTypeRule
+
+typerule NOT ::CVC4::theory::boolean::BooleanTypeRule
+typerule AND ::CVC4::theory::boolean::BooleanTypeRule
+typerule IMPLIES ::CVC4::theory::boolean::BooleanTypeRule
+typerule OR ::CVC4::theory::boolean::BooleanTypeRule
+typerule XOR ::CVC4::theory::boolean::BooleanTypeRule
+typerule ITE ::CVC4::theory::boolean::IteTypeRule
+
+endtheory
diff --git a/src/theory/booleans/theory_bool.cpp b/src/theory/booleans/theory_bool.cpp
new file mode 100644
index 0000000..b0f2efc
--- /dev/null
+++ b/src/theory/booleans/theory_bool.cpp
@@ -0,0 +1,78 @@
+/*********************                                                        */
+/*! \file theory_bool.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The theory of booleans.
+ **
+ ** The theory of booleans.
+ **/
+
+#include "theory/theory.h"
+#include "theory/booleans/theory_bool.h"
+#include "theory/booleans/circuit_propagator.h"
+#include "theory/valuation.h"
+#include "smt_util/boolean_simplification.h"
+#include "theory/substitutions.h"
+
+#include <vector>
+#include <stack>
+#include "util/hash.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace booleans {
+
+Theory::PPAssertStatus TheoryBool::ppAssert(TNode in, SubstitutionMap& outSubstitutions) {
+
+  if (in.getKind() == kind::CONST_BOOLEAN && !in.getConst<bool>()) {
+    // If we get a false literal, we're in conflict
+    return PP_ASSERT_STATUS_CONFLICT;
+  }
+
+  // Add the substitution from the variable to its value
+  if (in.getKind() == kind::NOT) {
+    if (in[0].getKind() == kind::VARIABLE) {
+      outSubstitutions.addSubstitution(in[0], NodeManager::currentNM()->mkConst<bool>(false));
+    } else {
+      return PP_ASSERT_STATUS_UNSOLVED;
+    }
+  } else {
+    if (in.getKind() == kind::VARIABLE) {
+      outSubstitutions.addSubstitution(in, NodeManager::currentNM()->mkConst<bool>(true));
+    } else {
+      return PP_ASSERT_STATUS_UNSOLVED;
+    }
+  }
+
+  return PP_ASSERT_STATUS_SOLVED;
+}
+
+/*
+void TheoryBool::check(Effort level) {
+  if (done() && !fullEffort(level)) {
+    return;
+  }
+  while (!done())
+  {
+    // Get all the assertions
+    Assertion assertion = get();
+    TNode fact = assertion.assertion;
+    Trace("ajr-bool") << "Assert : " << fact << std::endl;
+  }
+  if( Theory::fullEffort(level) ){
+  }
+}  
+*/
+
+}/* CVC4::theory::booleans namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/booleans/theory_bool.h b/src/theory/booleans/theory_bool.h
new file mode 100644
index 0000000..353143c
--- /dev/null
+++ b/src/theory/booleans/theory_bool.h
@@ -0,0 +1,47 @@
+/*********************                                                        */
+/*! \file theory_bool.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The theory of booleans
+ **
+ ** The theory of booleans.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__BOOLEANS__THEORY_BOOL_H
+#define __CVC4__THEORY__BOOLEANS__THEORY_BOOL_H
+
+#include "theory/theory.h"
+#include "context/context.h"
+
+namespace CVC4 {
+namespace theory {
+namespace booleans {
+
+class TheoryBool : public Theory {
+public:
+  TheoryBool(context::Context* c, context::UserContext* u, OutputChannel& out,
+             Valuation valuation, const LogicInfo& logicInfo)
+      : Theory(THEORY_BOOL, c, u, out, valuation, logicInfo)
+  {}
+
+  PPAssertStatus ppAssert(TNode in, SubstitutionMap& outSubstitutions);
+
+  //void check(Effort);
+  
+  std::string identify() const { return std::string("TheoryBool"); }
+};/* class TheoryBool */
+
+}/* CVC4::theory::booleans namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__BOOLEANS__THEORY_BOOL_H */
diff --git a/src/theory/booleans/theory_bool_rewriter.cpp b/src/theory/booleans/theory_bool_rewriter.cpp
new file mode 100644
index 0000000..32f69e0
--- /dev/null
+++ b/src/theory/booleans/theory_bool_rewriter.cpp
@@ -0,0 +1,372 @@
+/*********************                                                        */
+/*! \file theory_bool_rewriter.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Dejan Jovanovic, Kshitij Bansal
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include <algorithm>
+#include "theory/booleans/theory_bool_rewriter.h"
+
+namespace CVC4 {
+namespace theory {
+namespace booleans {
+
+RewriteResponse TheoryBoolRewriter::postRewrite(TNode node) {
+  return preRewrite(node);
+}
+
+/**
+ * flattenNode looks for children of same kind, and if found merges
+ * them into the parent.
+ *
+ * It simultaneously handles a couple of other optimizations: 
+ * - trivialNode - if found during exploration, return that node itself
+ *    (like in case of OR, if "true" is found, makes sense to replace
+ *     whole formula with "true")
+ * - skipNode - as name suggests, skip them
+ *    (like in case of OR, you may want to skip any "false" nodes found)
+ *
+ * Use a null node if you want to ignore any of the optimizations.
+ */
+RewriteResponse flattenNode(TNode n, TNode trivialNode, TNode skipNode)
+{
+  typedef std::hash_set<TNode, TNodeHashFunction> node_set;
+
+  node_set visited;
+  visited.insert(skipNode);
+
+  std::vector<TNode> toProcess;
+  toProcess.push_back(n);
+
+  Kind k = n.getKind();
+  typedef std::vector<TNode> ChildList;
+  ChildList childList;   //TNode should be fine, since 'n' is still there
+
+  for (unsigned i = 0; i < toProcess.size(); ++ i) {
+    TNode current = toProcess[i];
+    for(unsigned j = 0, j_end = current.getNumChildren(); j < j_end; ++ j) {
+      TNode child = current[j];
+      if(visited.find(child) != visited.end()) {
+        continue;
+      } else if(child == trivialNode) {
+        return RewriteResponse(REWRITE_DONE, trivialNode);
+      } else {
+        visited.insert(child);
+        if(child.getKind() == k)
+          toProcess.push_back(child);
+        else
+          childList.push_back(child);
+      }
+    }
+  }
+  if (childList.size() == 0) return RewriteResponse(REWRITE_DONE, skipNode);
+  if (childList.size() == 1) return RewriteResponse(REWRITE_AGAIN, childList[0]);
+
+  /* Trickery to stay under number of children possible in a node */
+  NodeManager* nodeManager = NodeManager::currentNM();
+  static const unsigned MAX_CHILDREN = (1u << __CVC4__EXPR__NODE_VALUE__NBITS__NCHILDREN ) - 1;
+  if (childList.size() < MAX_CHILDREN) {
+    Node retNode = nodeManager->mkNode(k, childList);
+    return RewriteResponse(REWRITE_DONE, retNode);
+  } else {
+    Assert(childList.size() < size_t(MAX_CHILDREN) * size_t(MAX_CHILDREN) );
+    NodeBuilder<> nb(k);
+    ChildList::iterator cur = childList.begin(), next, en = childList.end();
+    while( cur != en ) {
+      next = min(cur + MAX_CHILDREN, en);
+      nb << (nodeManager->mkNode(k, ChildList(cur, next) ));
+      cur = next;
+    }
+    return RewriteResponse(REWRITE_DONE, nb.constructNode());
+  }
+}
+
+// Equality parity returns
+// * 0 if no relation between a and b is found
+// * 1 if a == b
+// * 2 if a == not(b)
+// * 3 or b == not(a)
+inline int equalityParity(TNode a, TNode b){
+  if(a == b){
+    return 1;
+  }else if(a.getKind() == kind::NOT && a[0] == b){
+    return 2;
+  }else if(b.getKind() == kind::NOT && b[0] == a){
+    return 3;
+  }else{
+    return 0;
+  }
+}
+
+inline Node makeNegation(TNode n){
+  bool even = false;
+  while(n.getKind() == kind::NOT){
+    n = n[0];
+    even = !even;
+  }
+  if(even){
+    return n;
+  } else {
+    if(n.isConst()){
+      return NodeManager::currentNM()->mkConst(!n.getConst<bool>());
+    }else{
+      return n.notNode();
+    }
+  }
+}
+
+RewriteResponse TheoryBoolRewriter::preRewrite(TNode n) {
+  NodeManager* nodeManager = NodeManager::currentNM();
+  Node tt = nodeManager->mkConst(true);
+  Node ff = nodeManager->mkConst(false);
+
+  switch(n.getKind()) {
+  case kind::NOT: {
+    if (n[0] == tt) return RewriteResponse(REWRITE_DONE, ff);
+    if (n[0] == ff) return RewriteResponse(REWRITE_DONE, tt);
+    if (n[0].getKind() == kind::NOT) return RewriteResponse(REWRITE_AGAIN, n[0][0]);
+    break;
+  }
+  case kind::OR: {
+    bool done = true;
+    TNode::iterator i = n.begin(), iend = n.end();
+    for(; i != iend; ++i) {
+      if (*i == tt) return RewriteResponse(REWRITE_DONE, tt);
+      if (*i == ff) done = false;
+      if ((*i).getKind() == kind::OR) done = false;
+    }
+    if (!done) {
+      return flattenNode(n, /* trivialNode = */ tt, /* skipNode = */ ff);
+    }
+    break;
+  }
+  case kind::AND: {
+    bool done = true;
+    TNode::iterator i = n.begin(), iend = n.end();
+    for(; i != iend; ++i) {
+      if (*i == ff) return RewriteResponse(REWRITE_DONE, ff);
+      if (*i == tt) done = false;
+      if ((*i).getKind() == kind::AND) done = false;
+    }
+    if (!done) {
+      RewriteResponse ret = flattenNode(n, /* trivialNode = */ ff, /* skipNode = */ tt);
+      Debug("bool-flatten") << n << ": " << ret.node << std::endl;
+      return ret;
+    }
+    break;
+  }
+  case kind::IMPLIES: {
+    if (n[0] == ff || n[1] == tt) return RewriteResponse(REWRITE_DONE, tt);
+    if (n[0] == tt && n[1] == ff) return RewriteResponse(REWRITE_DONE, ff);
+    if (n[0] == tt) return RewriteResponse(REWRITE_AGAIN, n[1]);
+    if (n[1] == ff) return RewriteResponse(REWRITE_AGAIN, makeNegation(n[0]));
+    break;
+  }
+  case kind::EQUAL: {
+    // rewrite simple cases of IFF
+    if(n[0] == tt) {
+      // IFF true x
+      return RewriteResponse(REWRITE_AGAIN, n[1]);
+    } else if(n[1] == tt) {
+      // IFF x true
+      return RewriteResponse(REWRITE_AGAIN, n[0]);
+    } else if(n[0] == ff) {
+      // IFF false x
+      return RewriteResponse(REWRITE_AGAIN, makeNegation(n[1]));
+    } else if(n[1] == ff) {
+      // IFF x false
+      return RewriteResponse(REWRITE_AGAIN, makeNegation(n[0]));
+    } else if(n[0] == n[1]) {
+      // IFF x x
+      return RewriteResponse(REWRITE_DONE, tt);
+    } else if(n[0].getKind() == kind::NOT && n[0][0] == n[1]) {
+      // IFF (NOT x) x
+      return RewriteResponse(REWRITE_DONE, ff);
+    } else if(n[1].getKind() == kind::NOT && n[1][0] == n[0]) {
+      // IFF x (NOT x)
+      return RewriteResponse(REWRITE_DONE, ff);
+    } else if(n[0].getKind() == kind::EQUAL && n[1].getKind() == kind::EQUAL) {
+      // a : (= i x)
+      // i : (= j k)
+      // x : (= y z)
+
+      // assume wlog k, z are constants and j is the same symbol as y
+      // (iff (= j k) (= j z))
+      // if k = z
+      //  then (iff (= j k) (= j k)) => true
+      // else
+      //  (iff (= j k) (= j z)) <=> b
+      //  b : (and (not (= j k)) (not (= j z)))
+      //  (= j k) (= j z) | a b
+      //  f       f       | t t
+      //  f       t       | f f
+      //  t       f       | f f
+      //  t       t       | * f
+      // * j cannot equal both k and z in a theory model
+      TNode t,c;
+      if (n[0][0].isConst()) {
+        c = n[0][0];
+        t = n[0][1];
+      }
+      else if (n[0][1].isConst()) {
+        c = n[0][1];
+        t = n[0][0];
+      }
+      bool matchesForm = false;
+      bool constantsEqual = false;
+      if (!c.isNull()) {
+        if (n[1][0] == t && n[1][1].isConst()) {
+          matchesForm = true;
+          constantsEqual = (n[1][1] == c);
+        }
+        else if (n[1][1] == t && n[1][0].isConst()) {
+          matchesForm = true;
+          constantsEqual = (n[1][0] == c);
+        }
+      }
+      if(matchesForm){
+        if(constantsEqual){
+          return RewriteResponse(REWRITE_DONE, tt);
+        }else{
+          Cardinality kappa = t.getType().getCardinality();
+          Cardinality two(2l);
+          if(kappa.knownLessThanOrEqual(two)){
+            return RewriteResponse(REWRITE_DONE, ff);
+          }else{
+            Node neitherEquality = (makeNegation(n[0])).andNode(makeNegation(n[1]));
+            return RewriteResponse(REWRITE_AGAIN, neitherEquality);
+          }
+        }
+      }
+    }
+    break;
+  }
+  case kind::XOR: {
+    // rewrite simple cases of XOR
+    if(n[0] == tt) {
+      // XOR true x
+      return RewriteResponse(REWRITE_AGAIN, makeNegation(n[1]));
+    } else if(n[1] == tt) {
+      // XOR x true
+      return RewriteResponse(REWRITE_AGAIN, makeNegation(n[0]));
+    } else if(n[0] == ff) {
+      // XOR false x
+      return RewriteResponse(REWRITE_AGAIN, n[1]);
+    } else if(n[1] == ff) {
+      // XOR x false
+      return RewriteResponse(REWRITE_AGAIN, n[0]);
+    } else if(n[0] == n[1]) {
+      // XOR x x
+      return RewriteResponse(REWRITE_DONE, ff);
+    } else if(n[0].getKind() == kind::NOT && n[0][0] == n[1]) {
+      // XOR (NOT x) x
+      return RewriteResponse(REWRITE_DONE, tt);
+    } else if(n[1].getKind() == kind::NOT && n[1][0] == n[0]) {
+      // XOR x (NOT x)
+      return RewriteResponse(REWRITE_DONE, tt);
+    }
+    break;
+  }
+  case kind::ITE: {
+    // non-Boolean-valued ITEs should have been removed in place of
+    // a variable
+    // rewrite simple cases of ITE
+    if (n[0].isConst()) {
+      if (n[0] == tt) {
+        // ITE true x y
+
+        Debug("bool-ite") << "n[0] ==tt " << n << ": " << n[1] << std::endl;
+        return RewriteResponse(REWRITE_AGAIN, n[1]);
+      } else {
+        Assert(n[0] == ff);
+        // ITE false x y
+        Debug("bool-ite") << "n[0] ==ff " << n << ": " << n[1] << std::endl;
+        return RewriteResponse(REWRITE_AGAIN, n[2]);
+      }
+    } else if (n[1].isConst()) {
+      if (n[1] == tt && n[2] == ff) {
+        Debug("bool-ite") << "n[1] ==tt && n[2] == ff " << n << ": " << n[0] << std::endl;
+        return RewriteResponse(REWRITE_AGAIN, n[0]);
+      }
+      else if (n[1] == ff && n[2] == tt) {
+        Debug("bool-ite") << "n[1] ==ff && n[2] == tt " << n << ": " << n[0].notNode() << std::endl;
+        return RewriteResponse(REWRITE_AGAIN, makeNegation(n[0]));
+      }
+      // else if(n[1] == ff){
+      //   Node resp = (n[0].notNode()).andNode(n[2]);
+      //   return RewriteResponse(REWRITE_AGAIN, resp);
+      // }
+    }
+    // else if (n[2].isConst()) {
+    //   if(n[2] == ff){
+    //     Node resp = (n[0]).andNode(n[1]);
+    //     return RewriteResponse(REWRITE_AGAIN, resp);
+    //   }
+    // }
+
+    int parityTmp;
+    if ((parityTmp = equalityParity(n[1], n[2])) != 0) {
+      Node resp = (parityTmp == 1) ? (Node)n[1] : n[0].eqNode(n[1]);
+      Debug("bool-ite") << "equalityParity n[1], n[2] " << parityTmp
+                        << " " << n << ": " << resp << std::endl;
+      return RewriteResponse(REWRITE_AGAIN, resp);
+    // Curiously, this rewrite affects several benchmarks dramatically, including copy_array and some simple_startup - disable for now
+    // } else if (n[0].getKind() == kind::NOT) {
+    //   return RewriteResponse(REWRITE_AGAIN, n[0][0].iteNode(n[2], n[1]));
+    } else if(!n[1].isConst() && (parityTmp = equalityParity(n[0], n[1])) != 0){
+      // (parityTmp == 1) if n[0] == n[1]
+      // otherwise, n[0] == not(n[1]) or not(n[0]) == n[1]
+
+      // if n[1] is constant this can loop, this is possible in prewrite
+      Node resp = n[0].iteNode( (parityTmp == 1) ? tt : ff, n[2]);
+      Debug("bool-ite") << "equalityParity n[0], n[1] " << parityTmp
+                        << " " << n << ": " << resp << std::endl;
+      return RewriteResponse(REWRITE_AGAIN, resp);
+    } else if(!n[2].isConst() && (parityTmp = equalityParity(n[0], n[2])) != 0){
+      // (parityTmp == 1) if n[0] == n[2]
+      // otherwise, n[0] == not(n[2]) or not(n[0]) == n[2]
+      Node resp = n[0].iteNode(n[1], (parityTmp == 1) ? ff : tt);
+      Debug("bool-ite") << "equalityParity n[0], n[2] " << parityTmp
+                        << " " << n << ": " << resp << std::endl;
+      return RewriteResponse(REWRITE_AGAIN, resp);
+    } else if(n[1].getKind() == kind::ITE &&
+              (parityTmp = equalityParity(n[0], n[1][0])) != 0){
+      // (parityTmp == 1) then n : (ite c (ite c x y) z)
+      // (parityTmp > 1)  then n : (ite c (ite (not c) x y) z) or
+      // n: (ite (not c) (ite c x y) z)
+      Node resp = n[0].iteNode((parityTmp == 1) ? n[1][1] : n[1][2], n[2]);
+      Debug("bool-ite") << "equalityParity n[0], n[1][0] " << parityTmp
+                        << " " << n << ": " << resp << std::endl;
+      return RewriteResponse(REWRITE_AGAIN, resp);
+    } else if(n[2].getKind() == kind::ITE &&
+              (parityTmp = equalityParity(n[0], n[2][0])) != 0){
+      // (parityTmp == 1) then n : (ite c x (ite c y z))
+      // (parityTmp > 1)  then n : (ite c x (ite (not c) y z)) or
+      // n: (ite (not c) x (ite c y z))
+      Node resp = n[0].iteNode(n[1], (parityTmp == 1) ? n[2][2] : n[2][1]);
+      Debug("bool-ite") << "equalityParity n[0], n[2][0] " << parityTmp
+                        << " " << n << ": " << resp << std::endl;
+      return RewriteResponse(REWRITE_AGAIN, resp);
+    }
+    break;
+  }
+  default:
+    return RewriteResponse(REWRITE_DONE, n);
+  }
+  return RewriteResponse(REWRITE_DONE, n);
+}
+
+}/* CVC4::theory::booleans namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/booleans/theory_bool_rewriter.h b/src/theory/booleans/theory_bool_rewriter.h
new file mode 100644
index 0000000..b7512ad
--- /dev/null
+++ b/src/theory/booleans/theory_bool_rewriter.h
@@ -0,0 +1,45 @@
+/*********************                                                        */
+/*! \file theory_bool_rewriter.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__BOOLEANS__THEORY_BOOL_REWRITER_H
+#define __CVC4__THEORY__BOOLEANS__THEORY_BOOL_REWRITER_H
+
+#include "theory/rewriter.h"
+
+namespace CVC4 {
+namespace theory {
+namespace booleans {
+
+class TheoryBoolRewriter {
+
+public:
+
+  static RewriteResponse preRewrite(TNode node);
+  static RewriteResponse postRewrite(TNode node);
+
+  static void init() {}
+  static void shutdown() {}
+
+};/* class TheoryBoolRewriter */
+
+}/* CVC4::theory::booleans namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__BOOLEANS__THEORY_BOOL_REWRITER_H */
diff --git a/src/theory/booleans/theory_bool_type_rules.h b/src/theory/booleans/theory_bool_type_rules.h
new file mode 100644
index 0000000..050796e
--- /dev/null
+++ b/src/theory/booleans/theory_bool_type_rules.h
@@ -0,0 +1,77 @@
+/*********************                                                        */
+/*! \file theory_bool_type_rules.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Christopher L. Conway
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add brief comments here ]]
+ **
+ ** [[ Add file-specific comments here ]]
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY_BOOL_TYPE_RULES_H
+#define __CVC4__THEORY_BOOL_TYPE_RULES_H
+
+namespace CVC4 {
+namespace theory {
+namespace boolean {
+
+class BooleanTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    TypeNode booleanType = nodeManager->booleanType();
+    if( check ) {
+      TNode::iterator child_it = n.begin();
+      TNode::iterator child_it_end = n.end();
+      for(; child_it != child_it_end; ++child_it) {
+        if(!(*child_it).getType(check).isBoolean()) {
+          Debug("pb") << "failed type checking: " << *child_it << std::endl;
+          Debug("pb") << "  integer: " << (*child_it).getType(check).isInteger() << std::endl;
+          Debug("pb") << "  real: " << (*child_it).getType(check).isReal() << std::endl;
+          throw TypeCheckingExceptionPrivate(n, "expecting a Boolean subexpression");
+        }
+      }
+    }
+    return booleanType;
+  }
+};/* class BooleanTypeRule */
+
+class IteTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    TypeNode thenType = n[1].getType(check);
+    TypeNode elseType = n[2].getType(check);
+    TypeNode iteType = TypeNode::leastCommonTypeNode(thenType, elseType);
+    if( check ) {
+      TypeNode booleanType = nodeManager->booleanType();
+      if (n[0].getType(check) != booleanType) {
+        throw TypeCheckingExceptionPrivate(n, "condition of ITE is not Boolean");
+      }
+      if (iteType.isNull()) {
+        std::stringstream ss;
+        ss << "Both branches of the ITE must be a subtype of a common type." << std::endl
+           << "then branch: " << n[1] << std::endl
+           << "its type   : " << thenType << std::endl
+           << "else branch: " << n[2] << std::endl
+           << "its type   : " << elseType << std::endl;
+        throw TypeCheckingExceptionPrivate(n, ss.str());
+      }
+    }
+    return iteType;
+  }
+};/* class IteTypeRule */
+
+}/* CVC4::theory::boolean namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY_BOOL_TYPE_RULES_H */
diff --git a/src/theory/booleans/type_enumerator.h b/src/theory/booleans/type_enumerator.h
new file mode 100644
index 0000000..3949d15
--- /dev/null
+++ b/src/theory/booleans/type_enumerator.h
@@ -0,0 +1,73 @@
+/*********************                                                        */
+/*! \file type_enumerator.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An enumerator for Booleans
+ **
+ ** An enumerator for Booleans.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__BOOLEANS__TYPE_ENUMERATOR_H
+#define __CVC4__THEORY__BOOLEANS__TYPE_ENUMERATOR_H
+
+#include "theory/type_enumerator.h"
+#include "expr/type_node.h"
+#include "expr/kind.h"
+
+namespace CVC4 {
+namespace theory {
+namespace booleans {
+
+class BooleanEnumerator : public TypeEnumeratorBase<BooleanEnumerator> {
+  enum { FALSE, TRUE, DONE } d_value;
+
+public:
+
+  BooleanEnumerator(TypeNode type, TypeEnumeratorProperties * tep = NULL) :
+    TypeEnumeratorBase<BooleanEnumerator>(type),
+    d_value(FALSE) {
+    Assert(type.getKind() == kind::TYPE_CONSTANT &&
+           type.getConst<TypeConstant>() == BOOLEAN_TYPE);
+  }
+
+  Node operator*() throw(NoMoreValuesException) {
+    switch(d_value) {
+    case FALSE:
+      return NodeManager::currentNM()->mkConst(false);
+    case TRUE:
+      return NodeManager::currentNM()->mkConst(true);
+    default:
+      throw NoMoreValuesException(getType());
+    }
+  }
+
+  BooleanEnumerator& operator++() throw() {
+    // sequence is FALSE, TRUE
+    if(d_value == FALSE) {
+      d_value = TRUE;
+    } else {
+      d_value = DONE;
+    }
+    return *this;
+  }
+
+  bool isFinished() throw() {
+    return d_value == DONE;
+  }
+
+};/* class BooleanEnumerator */
+
+}/* CVC4::theory::booleans namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__BOOLEANS__TYPE_ENUMERATOR_H */
diff --git a/src/theory/builtin/kinds b/src/theory/builtin/kinds
new file mode 100644
index 0000000..c0f9558
--- /dev/null
+++ b/src/theory/builtin/kinds
@@ -0,0 +1,352 @@
+# kinds [for builtin theory]                                          -*- sh -*-
+#
+# This "kinds" file is written in a domain-specific language for
+# declaring CVC4 kinds.  Comments are marked with #, as this line is.
+#
+# The first non-blank, non-comment line in this file must be a theory
+# declaration:
+#
+#   theory ID T header
+#
+#     Thereafter, ID is bound to your theory.  It becomes part of an
+#     enumeration that identifies all theories.  If your theory has
+#     several, distinct implementations, they still all share a kinds
+#     file, a theory ID, all the defined kinds/operators/types for the
+#     theory, typechecker, etc.  They should also share a base class
+#     (that's the T above).  The header is the header for this base
+#     class.
+#
+# The very end of this file should end with:
+#
+#   endtheory
+#
+# There are several basic commands:
+#
+#   properties PROPERTIES...
+#
+#     This command declares properties of the theory.  It can occur
+#     more than once, in which case the effect is additive.
+#
+#     The current set of properties and their meanings are:
+#
+#       finite            the theory is finite
+#       stable-infinite   the theory is stably infinite
+#       polite            the theory is polite
+#       parametric        the theory is parametric
+#
+#       check             the theory supports the check() function
+#       propagate         the theory supports propagate() (and explain())
+#       ppStaticLearn     the theory supports ppStaticLearn()
+#       notifyRestart     the theory supports notifyRestart()
+#       presolve          the theory supports presolve()
+#       postsolve         the theory supports postsolve()
+#       getNextDecisionRequest the theory supports getNextDecisionRequest()
+#
+#     In the case of the "theory-supports-function" properties, you
+#     need to declare these for your theory or the functions will not
+#     be called!  This is used to speed up the core where functionality
+#     is not needed.
+#
+#   rewriter T header
+#
+#     This declares a rewriter class T for your theory, declared in
+#     header.  Your rewriter class provides four functions:
+#
+#       static void init();
+#       static void shutdown();
+#       static RewriteResponse preRewrite(TNode node);
+#       static RewriteResponse postRewrite(TNode node);
+#
+#     ...BUT please note that init() and shutdown() may be removed in
+#     future, so if possible, do not rely on them being called (and
+#     implement them as a no-op).
+#
+#   typechecker header
+#
+#     Declare that this theory's typechecker class is defined in the
+#     given header.  (#include'd by the TypeChecker class in the expr
+#     package.)
+#
+#   variable K ["comment"]
+#
+#     This declares a kind K that has no operator (it's conceptually a
+#     VARIABLE).  This is appropriate for things like VARIABLE and
+#     SKOLEM.
+#
+#   operator K #children ["comment"]
+#
+#     Declares a "built-in" operator kind K.  Really this is the same
+#     as "variable" except that it has an operator (automatically
+#     generated by NodeManager).
+#
+#     You can specify an exact # of children required as the second
+#     argument to the operator command.  In debug mode, assertions are
+#     automatically included to ensure that no Nodes can ever be
+#     created violating this.  (FIXME: the public Expr stuff should
+#     enforce them regardless of whether debugging or not.)  For
+#     example, a binary operator could be specified as:
+#
+#         operator LESS_THAN 2 "arithmetic comparison, x < y"
+#
+#     Alternatively, a range can be specified for #children as
+#     "LB:[UB]", LB and UB representing lower and upper bounds on the
+#     number of children (inclusive).  If there is no lower bound, put
+#     a "1" (operators must have at least one child).  If there is no
+#     upper bound, leave the colon after LB, but omit UB.  For example,
+#     an N-ary operator might be defined as:
+#
+#         operator PLUS 2: "addition on two or more arguments"
+#
+#   parameterized K1 K2 #children ["comment"]
+#
+#     Declares a "built-in" parameterized operator kind K1.  This is a
+#     theory-specific APPLY, e.g., APPLY_UF, which applies its first
+#     parameter (say, "f"), to its operands (say, "x" and "y", making
+#     the full application "f(x,y)").  Nodes with such a kind will
+#     have an operator (Node::hasOperator() returns true, and
+#     Node::getOperator() returns the Node of functional type
+#     representing "f" here), and the "children" are defined to be
+#     this operator's parameters, and don't include the operator
+#     itself (here, there are only two children "x" and "y").  The
+#     operator ("f") should have kind K2 (and this should be enforced
+#     by the custom typechecker, at present this isn't done uniformly
+#     by the expression package).
+#
+#     LB and UB are the same as documented for the operator command,
+#     except that parameterized operators may have zero children.  The
+#     first parameter (the function being applied) does not count as a
+#     child.
+#
+#     For consistency these should start with "APPLY_", but this is
+#     not enforced.
+#
+#   constant K T Hasher header ["comment"]
+#
+#     Declares a constant kind K.  T is the C++ type representing the
+#     constant internally (and it should be
+#     ::fully::qualified::like::this), and header is the header needed
+#     to define it.  Hasher is a hash functor type defined like this:
+#
+#       struct MyHashFcn {
+#         size_t operator()(const T& val) const;
+#       };
+#
+#     For consistency, constants taking a non-void payload should
+#     start with "CONST_", but this is not enforced.
+#
+#   typerule K typechecker-class
+#
+#     Declares that a (previously-declared) kind K is typechecked by
+#     the typechecker-class.  This class should be defined by the
+#     header given to the "typechecker" command, above.  The
+#     typechecker-class is used this way by the main TypeChecker code:
+#
+#       typechecker-class::computeType(NodeManager* nm, TNode n, bool check)
+#
+#     It returns TypeNode.  It should compute the type of n and return it,
+#     and if "check" is true, should actually perform type checking instead
+#     of simply type computation.
+#
+#   sort K cardinality [well-founded ground-term header | not-well-founded] ["comment"]
+#
+#     This creates a kind K that represents a sort (a "type constant").
+#     These kinds of types are "atomic" types; if you need to describe
+#     a complex type that takes type arguments (like arrays), use
+#     "operator"; if you need to describe one that takes "constant"
+#     arguments (like bitvectors), use "constant", and if you invent
+#     one that takes both, you could try "parameterized".  In those
+#     cases, you'll want to provide a cardinality separately for your
+#     type.
+#
+#     The cardinality argument is a nonnegative number (if the sort is
+#     finite), or Cardinality::INTEGERS if the sort has the same
+#     cardinality as the integers, or Cardinality::REALS if the sort
+#     has the same cardinality as the reals.
+#
+#     If the sort is well-founded (i.e., there exist ground terms),
+#     then the argument should be the string "well-founded"; if not,
+#     it should be the string "not-well-founded".  If well-founded,
+#     two extra arguments immediately follow---a C++ expression that
+#     constructs a ground term (as a Node), and the header that must
+#     be #included for that expression to compile.
+#
+#     For consistency, sorts should end with "_TYPE", but this is not
+#     enforced.
+#
+#   cardinality K cardinality-computer [header]
+#
+#     This command does not define a kind; the kind K needs to be
+#     defined by one of the other commands above.  This command just
+#     provides a cardinality for types of kind K.  The
+#     "cardinality-computer" is a C++ expression that will yield a
+#     Cardinality for the type.  In that expression, the sequence of
+#     characters "%TYPE%" will be rewritten with a variable containing
+#     a TypeNode of kind K.  The optional "header" argument is an
+#     include file necessary to compile the cardinality-computer
+#     expression.
+#
+#     If the cardinality need not be computed per-type (i.e., it's the
+#     same for all types of kind K, but the "sort" gesture above could
+#     not be used---in which case it doesn't already have a registered
+#     cardinality), you can simply construct a Cardinality temporary.
+#     For example:
+#
+#       cardinality MY_TYPE Cardinality(Cardinality::INTEGERS)
+#
+#     If not, you might opt to use a computer; a common place to put it
+#     is with your type checker:
+#
+#       cardinality MY_TYPE \
+#           ::CVC4::theory::foo::TheoryFoo::CardinalityComputer(%TYPE%) \
+#           "theory/foo/theory_foo_type_rules.h"
+#
+#   well-founded K wellfoundedness-computer ground-term-computer [header]
+#
+#     Analogous to the "cardinality" command above, the well-founded
+#     command provides a well-foundedness computer for the type.  A
+#     ground term computer is required unless the
+#     wellfoundedness-computer is the constant "false".  The ground
+#     term computer should return a Node, and it should return the
+#     same Node each time for a given type (although usually it's only
+#     ever called once anyway since the result is cached).
+#
+#
+# Lines may be broken with a backslash between arguments; for example:
+#
+#     constant CONST_INT \
+#         int IntHash \
+#         "" \
+#         "This is a constant representing an INT.
+#         Its payload is the C++ int type.
+#         It is used by the theory of arithmetic."
+#
+# As shown in the example, ["comment"] fields may be broken across
+# multiple lines too.
+#
+# The expr package guarantees that Nodes built with kinds have the
+# following constraints imposed on them.  (The #children guarantee
+# only holds when assertions are turned on.)
+#
+#   Node meta-kind      has operator?      # children
+#   ==================  =================  =======================
+#   variable            no                 zero
+#   operator            yes                as documented above
+#   parameterized       yes                as documented above
+#   constant            no                 zero
+#
+# NOTE THAT This file is actually an executable Bourne shell script
+# (sourced by the processing scripts after defining functions called
+# "theory," "variable," "operator," "parameterized," and "constant").
+# Please don't do anything else in this file other than using these
+# commands.
+#
+
+theory THEORY_BUILTIN ::CVC4::theory::builtin::TheoryBuiltin "theory/builtin/theory_builtin.h"
+typechecker "theory/builtin/theory_builtin_type_rules.h"
+
+properties stable-infinite
+
+# Rewriter responsible for all the terms of the theory
+rewriter ::CVC4::theory::builtin::TheoryBuiltinRewriter "theory/builtin/theory_builtin_rewriter.h"
+
+sort BUILTIN_OPERATOR_TYPE \
+    Cardinality::INTEGERS \
+    not-well-founded \
+    "the type for built-in operators"
+
+variable SORT_TAG "sort tag"
+parameterized SORT_TYPE SORT_TAG 0: "specifies types of user-declared 'uninterpreted' sorts"
+# This is really "unknown" cardinality, but maybe this will be good
+# enough (for now) ?
+cardinality SORT_TYPE "Cardinality(Cardinality::INTEGERS)"
+well-founded SORT_TYPE \
+    "::CVC4::theory::builtin::SortProperties::isWellFounded(%TYPE%)" \
+    "::CVC4::theory::builtin::SortProperties::mkGroundTerm(%TYPE%)"
+
+constant UNINTERPRETED_CONSTANT \
+    ::CVC4::UninterpretedConstant \
+    ::CVC4::UninterpretedConstantHashFunction \
+    "expr/uninterpreted_constant.h" \
+    "the kind of expressions representing uninterpreted constants; payload is an instance of the CVC4::UninterpretedConstant class (used in models)"
+typerule UNINTERPRETED_CONSTANT ::CVC4::theory::builtin::UninterpretedConstantTypeRule
+enumerator SORT_TYPE \
+    ::CVC4::theory::builtin::UninterpretedSortEnumerator \
+    "theory/builtin/type_enumerator.h"
+
+constant ABSTRACT_VALUE \
+    ::CVC4::AbstractValue \
+    ::CVC4::AbstractValueHashFunction \
+    "util/abstract_value.h" \
+    "the kind of expressions representing abstract values (other than uninterpreted sort constants); payload is an instance of the CVC4::AbstractValue class (used in models)"
+typerule ABSTRACT_VALUE ::CVC4::theory::builtin::AbstractValueTypeRule
+
+# A kind representing "inlined" operators defined with OPERATOR
+# Conceptually, (EQUAL a b) is actually an (APPLY EQUAL a b), but it's
+# not stored that way.  If you ask for the operator of (EQUAL a b),
+# you'll get a special, singleton (BUILTIN EQUAL) Node.
+constant BUILTIN \
+    ::CVC4::Kind \
+    ::CVC4::kind::KindHashFunction \
+    "expr/kind.h" \
+    "the kind of expressions representing built-in operators"
+
+variable FUNCTION "a defined function"
+parameterized APPLY FUNCTION 0: "application of a defined function"
+
+operator EQUAL 2 "equality (two parameters only, sorts must match)"
+operator DISTINCT 2: "disequality (N-ary, sorts must match)"
+variable VARIABLE "a variable (not permitted in bindings)"
+variable BOUND_VARIABLE "a bound variable (permitted in bindings and the associated lambda and quantifier bodies only)"
+variable SKOLEM "a Skolem variable (internal only)"
+operator SEXPR 0: "a symbolic expression (any arity)"
+
+operator LAMBDA 2 "a lambda expression; first parameter is a BOUND_VAR_LIST, second is lambda body"
+
+parameterized CHAIN CHAIN_OP 2: "chained operator (N-ary), turned into a conjuction of binary applications of the operator on adjoining parameters; first parameter is a CHAIN_OP representing a binary operator, rest are arguments to that operator"
+constant CHAIN_OP \
+    ::CVC4::Chain \
+    ::CVC4::ChainHashFunction \
+    "expr/chain.h" \
+    "the chained operator; payload is an instance of the CVC4::Chain class"
+
+constant TYPE_CONSTANT \
+    ::CVC4::TypeConstant \
+    ::CVC4::TypeConstantHashFunction \
+    "expr/kind.h" \
+    "a representation for basic types"
+operator FUNCTION_TYPE 2: "a function type"
+cardinality FUNCTION_TYPE \
+    "::CVC4::theory::builtin::FunctionProperties::computeCardinality(%TYPE%)" \
+    "theory/builtin/theory_builtin_type_rules.h"
+well-founded FUNCTION_TYPE false
+operator SEXPR_TYPE 0: "the type of a symbolic expression"
+cardinality SEXPR_TYPE \
+    "::CVC4::theory::builtin::SExprProperties::computeCardinality(%TYPE%)" \
+    "theory/builtin/theory_builtin_type_rules.h"
+well-founded SEXPR_TYPE \
+    "::CVC4::theory::builtin::SExprProperties::isWellFounded(%TYPE%)" \
+    "::CVC4::theory::builtin::SExprProperties::mkGroundTerm(%TYPE%)" \
+    "theory/builtin/theory_builtin_type_rules.h"
+
+typerule APPLY ::CVC4::theory::builtin::ApplyTypeRule
+typerule EQUAL ::CVC4::theory::builtin::EqualityTypeRule
+typerule DISTINCT ::CVC4::theory::builtin::DistinctTypeRule
+typerule SEXPR ::CVC4::theory::builtin::SExprTypeRule
+typerule LAMBDA ::CVC4::theory::builtin::LambdaTypeRule
+typerule CHAIN ::CVC4::theory::builtin::ChainTypeRule
+typerule CHAIN_OP ::CVC4::theory::builtin::ChainedOperatorTypeRule
+
+constant SUBTYPE_TYPE \
+    ::CVC4::Predicate \
+    ::CVC4::PredicateHashFunction \
+    "expr/predicate.h" \
+    "predicate subtype; payload is an instance of the CVC4::Predicate class"
+cardinality SUBTYPE_TYPE \
+    "::CVC4::theory::builtin::SubtypeProperties::computeCardinality(%TYPE%)" \
+    "theory/builtin/theory_builtin_type_rules.h"
+well-founded SUBTYPE_TYPE \
+    "::CVC4::theory::builtin::SubtypeProperties::isWellFounded(%TYPE%)" \
+    "::CVC4::theory::builtin::SubtypeProperties::mkGroundTerm(%TYPE%)" \
+    "theory/builtin/theory_builtin_type_rules.h"
+
+endtheory
diff --git a/src/theory/builtin/theory_builtin.cpp b/src/theory/builtin/theory_builtin.cpp
new file mode 100644
index 0000000..cea66da
--- /dev/null
+++ b/src/theory/builtin/theory_builtin.cpp
@@ -0,0 +1,30 @@
+/*********************                                                        */
+/*! \file theory_builtin.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of the builtin theory.
+ **
+ ** Implementation of the builtin theory.
+ **/
+
+#include "theory/builtin/theory_builtin.h"
+#include "theory/valuation.h"
+#include "expr/kind.h"
+#include "theory/theory_model.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace builtin {
+
+}/* CVC4::theory::builtin namespace */
+}/* CVC4::theory */
+}/* CVC4 namespace */
diff --git a/src/theory/builtin/theory_builtin.h b/src/theory/builtin/theory_builtin.h
new file mode 100644
index 0000000..205db5b
--- /dev/null
+++ b/src/theory/builtin/theory_builtin.h
@@ -0,0 +1,41 @@
+/*********************                                                        */
+/*! \file theory_builtin.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Built-in theory.
+ **
+ ** Built-in theory.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__BUILTIN__THEORY_BUILTIN_H
+#define __CVC4__THEORY__BUILTIN__THEORY_BUILTIN_H
+
+#include "theory/theory.h"
+
+namespace CVC4 {
+namespace theory {
+namespace builtin {
+
+class TheoryBuiltin : public Theory {
+public:
+  TheoryBuiltin(context::Context* c, context::UserContext* u,
+                OutputChannel& out, Valuation valuation,
+                const LogicInfo& logicInfo)
+      : Theory(THEORY_BUILTIN, c, u, out, valuation, logicInfo) {}
+  std::string identify() const { return std::string("TheoryBuiltin"); }
+};/* class TheoryBuiltin */
+
+}/* CVC4::theory::builtin namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__BUILTIN__THEORY_BUILTIN_H */
diff --git a/src/theory/builtin/theory_builtin_rewriter.cpp b/src/theory/builtin/theory_builtin_rewriter.cpp
new file mode 100644
index 0000000..a2fb3f3
--- /dev/null
+++ b/src/theory/builtin/theory_builtin_rewriter.cpp
@@ -0,0 +1,75 @@
+/*********************                                                        */
+/*! \file theory_builtin_rewriter.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/builtin/theory_builtin_rewriter.h"
+
+#include "expr/chain.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace builtin {
+
+Node TheoryBuiltinRewriter::blastDistinct(TNode in) {
+
+  Assert(in.getKind() == kind::DISTINCT);
+
+  if(in.getNumChildren() == 2) {
+    // if this is the case exactly 1 != pair will be generated so the
+    // AND is not required
+    Node eq = NodeManager::currentNM()->mkNode(kind::EQUAL, in[0], in[1]);
+    Node neq = NodeManager::currentNM()->mkNode(kind::NOT, eq);
+    return neq;
+  }
+
+  // assume that in.getNumChildren() > 2 => diseqs.size() > 1
+  vector<Node> diseqs;
+  for(TNode::iterator i = in.begin(); i != in.end(); ++i) {
+    TNode::iterator j = i;
+    while(++j != in.end()) {
+      Node eq = NodeManager::currentNM()->mkNode(kind::EQUAL, *i, *j);
+      Node neq = NodeManager::currentNM()->mkNode(kind::NOT, eq);
+      diseqs.push_back(neq);
+    }
+  }
+  Node out = NodeManager::currentNM()->mkNode(kind::AND, diseqs);
+  return out;
+}
+
+Node TheoryBuiltinRewriter::blastChain(TNode in) {
+
+  Assert(in.getKind() == kind::CHAIN);
+
+  Kind chainedOp = in.getOperator().getConst<Chain>().getOperator();
+
+  if(in.getNumChildren() == 2) {
+    // if this is the case exactly 1 pair will be generated so the
+    // AND is not required
+    return NodeManager::currentNM()->mkNode(chainedOp, in[0], in[1]);
+  } else {
+    NodeBuilder<> conj(kind::AND);
+    for(TNode::iterator i = in.begin(), j = i + 1; j != in.end(); ++i, ++j) {
+      conj << NodeManager::currentNM()->mkNode(chainedOp, *i, *j);
+    }
+    return conj;
+  }
+}
+
+}/* CVC4::theory::builtin namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/builtin/theory_builtin_rewriter.h b/src/theory/builtin/theory_builtin_rewriter.h
new file mode 100644
index 0000000..9ac2590
--- /dev/null
+++ b/src/theory/builtin/theory_builtin_rewriter.h
@@ -0,0 +1,65 @@
+/*********************                                                        */
+/*! \file theory_builtin_rewriter.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__BUILTIN__THEORY_BUILTIN_REWRITER_H
+#define __CVC4__THEORY__BUILTIN__THEORY_BUILTIN_REWRITER_H
+
+#include "theory/rewriter.h"
+#include "theory/theory.h"
+
+namespace CVC4 {
+namespace theory {
+namespace builtin {
+
+class TheoryBuiltinRewriter {
+
+  static Node blastDistinct(TNode node);
+  static Node blastChain(TNode node);
+
+public:
+
+  static inline RewriteResponse doRewrite(TNode node) {
+    switch(node.getKind()) {
+    case kind::DISTINCT:
+      return RewriteResponse(REWRITE_DONE, blastDistinct(node));
+    case kind::CHAIN:
+      return RewriteResponse(REWRITE_DONE, blastChain(node));
+    default:
+      return RewriteResponse(REWRITE_DONE, node);
+    }
+  }
+
+  static inline RewriteResponse postRewrite(TNode node) {
+    return doRewrite(node);
+  }
+
+  static inline RewriteResponse preRewrite(TNode node) {
+    return doRewrite(node);
+  }
+
+  static inline void init() {}
+  static inline void shutdown() {}
+
+};/* class TheoryBuiltinRewriter */
+
+}/* CVC4::theory::builtin namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__BUILTIN__THEORY_BUILTIN_REWRITER_H */
diff --git a/src/theory/builtin/theory_builtin_type_rules.h b/src/theory/builtin/theory_builtin_type_rules.h
new file mode 100644
index 0000000..85adfb4
--- /dev/null
+++ b/src/theory/builtin/theory_builtin_type_rules.h
@@ -0,0 +1,326 @@
+/*********************                                                        */
+/*! \file theory_builtin_type_rules.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Christopher L. Conway
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Type rules for the builtin theory
+ **
+ ** Type rules for the builtin theory.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__BUILTIN__THEORY_BUILTIN_TYPE_RULES_H
+#define __CVC4__THEORY__BUILTIN__THEORY_BUILTIN_TYPE_RULES_H
+
+#include "expr/node.h"
+#include "expr/type_node.h"
+#include "expr/expr.h"
+#include "theory/rewriter.h"
+
+#include <sstream>
+
+namespace CVC4 {
+namespace theory {
+namespace builtin {
+
+class ApplyTypeRule {
+  public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    TNode f = n.getOperator();
+    TypeNode fType = f.getType(check);
+    if( !fType.isFunction() && n.getNumChildren() > 0 ) {
+      throw TypeCheckingExceptionPrivate(n, "operator does not have function type");
+    }
+    if( check ) {
+      if(fType.isFunction()) {
+        if(n.getNumChildren() != fType.getNumChildren() - 1) {
+          throw TypeCheckingExceptionPrivate(n, "number of arguments does not match the function type");
+        }
+        TNode::iterator argument_it = n.begin();
+        TNode::iterator argument_it_end = n.end();
+        TypeNode::iterator argument_type_it = fType.begin();
+        for(; argument_it != argument_it_end; ++argument_it, ++argument_type_it) {
+          if(!(*argument_it).getType().isComparableTo(*argument_type_it)) {
+            std::stringstream ss;
+            ss << "argument types do not match the function type:\n"
+               << "argument:  " << *argument_it << "\n"
+               << "has type:  " << (*argument_it).getType() << "\n"
+               << "not equal: " << *argument_type_it;
+            throw TypeCheckingExceptionPrivate(n, ss.str());
+          }
+        }
+      } else {
+        if( n.getNumChildren() > 0 ) {
+          throw TypeCheckingExceptionPrivate(n, "number of arguments does not match the function type");
+        }
+      }
+    }
+    return fType.isFunction() ? fType.getRangeType() : fType;
+  }
+};/* class ApplyTypeRule */
+
+
+class EqualityTypeRule {
+  public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check) throw (TypeCheckingExceptionPrivate, AssertionException) {
+    TypeNode booleanType = nodeManager->booleanType();
+
+    if( check ) {
+      TypeNode lhsType = n[0].getType(check);
+      TypeNode rhsType = n[1].getType(check);
+
+      if ( TypeNode::leastCommonTypeNode(lhsType, rhsType).isNull() ) {
+        std::stringstream ss;
+        ss << "Subexpressions must have a common base type:" << std::endl;
+        ss << "Equation: " << n << std::endl;
+        ss << "Type 1: " << lhsType << std::endl;
+        ss << "Type 2: " << rhsType << std::endl;
+
+        throw TypeCheckingExceptionPrivate(n, ss.str());
+      }
+    }
+    return booleanType;
+  }
+};/* class EqualityTypeRule */
+
+
+class DistinctTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check) {
+    if( check ) {
+      TNode::iterator child_it = n.begin();
+      TNode::iterator child_it_end = n.end();
+      TypeNode joinType = (*child_it).getType(check);
+      for (++child_it; child_it != child_it_end; ++child_it) {
+        TypeNode currentType = (*child_it).getType();
+        joinType = TypeNode::leastCommonTypeNode(joinType, currentType);
+        if (joinType.isNull()) {
+          throw TypeCheckingExceptionPrivate(n, "Not all arguments are of the same type");
+        }
+      }
+    }
+    return nodeManager->booleanType();
+  }
+};/* class DistinctTypeRule */
+
+class SExprTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check) {
+    std::vector<TypeNode> types;
+    for(TNode::iterator child_it = n.begin(), child_it_end = n.end();
+        child_it != child_it_end;
+        ++child_it) {
+      types.push_back((*child_it).getType(check));
+    }
+    return nodeManager->mkSExprType(types);
+  }
+};/* class SExprTypeRule */
+
+class UninterpretedConstantTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check) {
+    return TypeNode::fromType(n.getConst<UninterpretedConstant>().getType());
+  }
+};/* class UninterpretedConstantTypeRule */
+
+class AbstractValueTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check) {
+    // An UnknownTypeException means that this node has no type.  For now,
+    // only abstract values are like this---and then, only if they are created
+    // by the user and don't actually correspond to one that the SmtEngine gave
+    // them previously.
+    throw UnknownTypeException(n);
+  }
+};/* class AbstractValueTypeRule */
+
+class LambdaTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check) {
+    if( n[0].getType(check) != nodeManager->boundVarListType() ) {
+      std::stringstream ss;
+      ss << "expected a bound var list for LAMBDA expression, got `"
+         << n[0].getType().toString() << "'";
+      throw TypeCheckingExceptionPrivate(n, ss.str());
+    }
+    std::vector<TypeNode> argTypes;
+    for(TNode::iterator i = n[0].begin(); i != n[0].end(); ++i) {
+      argTypes.push_back((*i).getType());
+    }
+    TypeNode rangeType = n[1].getType(check);
+    return nodeManager->mkFunctionType(argTypes, rangeType);
+  }
+};/* class LambdaTypeRule */
+
+class ChainTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check) {
+    Assert(n.getKind() == kind::CHAIN);
+
+    if(!check) {
+      return nodeManager->booleanType();
+    }
+
+    TypeNode tn;
+    try {
+      // Actually do the expansion to do the typechecking.
+      // Shouldn't be extra work to do this, since the rewriter
+      // keeps a cache.
+      tn = nodeManager->getType(Rewriter::rewrite(n), check);
+    } catch(TypeCheckingExceptionPrivate& e) {
+      std::stringstream ss;
+      ss << "Cannot typecheck the expansion of chained operator `" << n.getOperator() << "':"
+         << std::endl;
+      // indent the sub-exception for clarity
+      std::stringstream ss2;
+      ss2 << e;
+      std::string eStr = ss2.str();
+      for(size_t i = eStr.find('\n'); i != std::string::npos; i = eStr.find('\n', i)) {
+        eStr.insert(++i, "| ");
+      }
+      ss << "| " << eStr;
+      throw TypeCheckingExceptionPrivate(n, ss.str());
+    }
+
+    // This check is intentionally != booleanType() rather than
+    // !(...isBoolean()): if we ever add a type compatible with
+    // Boolean (pseudobooleans or whatever), we have to revisit
+    // the above "!check" case where booleanType() is returned
+    // directly.  Putting this check here will cause a failure if
+    // it's ever relevant.
+    if(tn != nodeManager->booleanType()) {
+      std::stringstream ss;
+      ss << "Chains can only be formed over predicates; "
+         << "the operator here returns `" << tn << "', expected `"
+         << nodeManager->booleanType() << "'.";
+      throw TypeCheckingExceptionPrivate(n, ss.str());
+    }
+
+    return nodeManager->booleanType();
+  }
+};/* class ChainTypeRule */
+
+class ChainedOperatorTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check) {
+    Assert(n.getKind() == kind::CHAIN_OP);
+    return nodeManager->getType(nodeManager->operatorOf(n.getConst<Chain>().getOperator()), check);
+  }
+};/* class ChainedOperatorTypeRule */
+
+class SortProperties {
+public:
+  inline static bool isWellFounded(TypeNode type) {
+    return true;
+  }
+  inline static Node mkGroundTerm(TypeNode type) {
+    Assert(type.getKind() == kind::SORT_TYPE);
+    return NodeManager::currentNM()->mkSkolem("groundTerm", type, "a ground term created for type " + type.toString());
+  }
+};/* class SortProperties */
+
+class FunctionProperties {
+public:
+  inline static Cardinality computeCardinality(TypeNode type) {
+    // Don't assert this; allow other theories to use this cardinality
+    // computation.
+    //
+    // Assert(type.getKind() == kind::FUNCTION_TYPE);
+
+    Cardinality argsCard(1);
+    // get the largest cardinality of function arguments/return type
+    for(unsigned i = 0, i_end = type.getNumChildren() - 1; i < i_end; ++i) {
+      argsCard *= type[i].getCardinality();
+    }
+
+    Cardinality valueCard = type[type.getNumChildren() - 1].getCardinality();
+
+    return valueCard ^ argsCard;
+  }
+};/* class FuctionProperties */
+
+class SExprProperties {
+public:
+  inline static Cardinality computeCardinality(TypeNode type) {
+    // Don't assert this; allow other theories to use this cardinality
+    // computation.
+    //
+    // Assert(type.getKind() == kind::SEXPR_TYPE);
+
+    Cardinality card(1);
+    for(TypeNode::iterator i = type.begin(),
+          i_end = type.end();
+        i != i_end;
+        ++i) {
+      card *= (*i).getCardinality();
+    }
+
+    return card;
+  }
+
+  inline static bool isWellFounded(TypeNode type) {
+    // Don't assert this; allow other theories to use this
+    // wellfoundedness computation.
+    //
+    // Assert(type.getKind() == kind::SEXPR_TYPE);
+
+    for(TypeNode::iterator i = type.begin(),
+          i_end = type.end();
+        i != i_end;
+        ++i) {
+      if(! (*i).isWellFounded()) {
+        return false;
+      }
+    }
+
+    return true;
+  }
+
+  inline static Node mkGroundTerm(TypeNode type) {
+    Assert(type.getKind() == kind::SEXPR_TYPE);
+
+    std::vector<Node> children;
+    for(TypeNode::iterator i = type.begin(),
+          i_end = type.end();
+        i != i_end;
+        ++i) {
+      children.push_back((*i).mkGroundTerm());
+    }
+
+    return NodeManager::currentNM()->mkNode(kind::SEXPR, children);
+  }
+};/* class SExprProperties */
+
+class SubtypeProperties {
+public:
+
+  inline static Cardinality computeCardinality(TypeNode type) {
+    Assert(type.getKind() == kind::SUBTYPE_TYPE);
+    Unimplemented("Computing the cardinality for predicate subtype not yet supported.");
+  }
+
+  inline static bool isWellFounded(TypeNode type) {
+    Assert(type.getKind() == kind::SUBTYPE_TYPE);
+    Unimplemented("Computing the well-foundedness for predicate subtype not yet supported.");
+  }
+
+  inline static Node mkGroundTerm(TypeNode type) {
+    Assert(type.getKind() == kind::SUBTYPE_TYPE);
+    Unimplemented("Constructing a ground term for predicate subtype not yet supported.");
+  }
+
+};/* class SubtypeProperties */
+
+}/* CVC4::theory::builtin namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__BUILTIN__THEORY_BUILTIN_TYPE_RULES_H */
diff --git a/src/theory/builtin/type_enumerator.h b/src/theory/builtin/type_enumerator.h
new file mode 100644
index 0000000..3840bb3
--- /dev/null
+++ b/src/theory/builtin/type_enumerator.h
@@ -0,0 +1,82 @@
+/*********************                                                        */
+/*! \file type_enumerator.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Enumerator for uninterpreted sorts
+ **
+ ** Enumerator for uninterpreted sorts.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__BUILTIN__TYPE_ENUMERATOR_H
+#define __CVC4__THEORY__BUILTIN__TYPE_ENUMERATOR_H
+
+#include "expr/kind.h"
+#include "expr/type_node.h"
+#include "expr/uninterpreted_constant.h"
+#include "theory/type_enumerator.h"
+#include "util/integer.h"
+
+namespace CVC4 {
+namespace theory {
+namespace builtin {
+
+class UninterpretedSortEnumerator : public TypeEnumeratorBase<UninterpretedSortEnumerator> {
+  Integer d_count;
+  bool d_has_fixed_bound;
+  Integer d_fixed_bound;
+public:
+
+  UninterpretedSortEnumerator(TypeNode type, TypeEnumeratorProperties * tep = NULL) throw(AssertionException) :
+    TypeEnumeratorBase<UninterpretedSortEnumerator>(type),
+    d_count(0) {
+    Assert(type.getKind() == kind::SORT_TYPE);
+    d_has_fixed_bound = false;
+    Trace("uf-type-enum") << "UF enum " << type << ", tep = " << tep << std::endl;
+    if( tep && tep->d_fixed_usort_card ){
+      d_has_fixed_bound = true;
+      std::map< TypeNode, Integer >::iterator it = tep->d_fixed_card.find( type );
+      if( it!=tep->d_fixed_card.end() ){
+        d_fixed_bound = it->second;
+      }else{
+        d_fixed_bound = Integer(1);
+      }
+      Trace("uf-type-enum") << "...fixed bound : " << d_fixed_bound << std::endl;
+    }
+  }
+
+  Node operator*() throw(NoMoreValuesException) {
+    if(isFinished()) {
+      throw NoMoreValuesException(getType());
+    }
+    return NodeManager::currentNM()->mkConst(UninterpretedConstant(getType().toType(), d_count));
+  }
+
+  UninterpretedSortEnumerator& operator++() throw() {
+    d_count += 1;
+    return *this;
+  }
+
+  bool isFinished() throw() {
+    if( d_has_fixed_bound ){
+      return d_count>=d_fixed_bound;
+    }else{
+      return false;
+    }
+  }
+
+};/* class UninterpretedSortEnumerator */
+
+}/* CVC4::theory::builtin namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__BUILTIN_TYPE_ENUMERATOR_H */
diff --git a/src/theory/bv/abstraction.cpp b/src/theory/bv/abstraction.cpp
new file mode 100644
index 0000000..dc55204
--- /dev/null
+++ b/src/theory/bv/abstraction.cpp
@@ -0,0 +1,1060 @@
+/*********************                                                        */
+/*! \file abstraction.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+#include "theory/bv/abstraction.h"
+
+#include "options/bv_options.h"
+#include "smt/dump.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/bv/theory_bv_utils.h"
+#include "theory/rewriter.h"
+
+
+using namespace CVC4;
+using namespace CVC4::theory;
+using namespace CVC4::theory::bv;
+using namespace CVC4::context;
+
+using namespace std;
+using namespace CVC4::theory::bv::utils;
+
+bool AbstractionModule::applyAbstraction(const std::vector<Node>& assertions, std::vector<Node>& new_assertions) {
+  Debug("bv-abstraction") << "AbstractionModule::applyAbstraction\n";
+
+  TimerStat::CodeTimer abstractionTimer(d_statistics.d_abstractionTime);
+
+  for (unsigned i = 0; i < assertions.size(); ++i) {
+    if (assertions[i].getKind() == kind::OR) {
+      for (unsigned j = 0; j < assertions[i].getNumChildren(); ++j) {
+        if (!isConjunctionOfAtoms(assertions[i][j])) {
+          continue;
+        }
+        Node signature = computeSignature(assertions[i][j]);
+        storeSignature(signature, assertions[i][j]);
+        Debug("bv-abstraction") << "   assertion: " << assertions[i][j] <<"\n";
+        Debug("bv-abstraction") << "   signature: " << signature <<"\n";
+      }
+    }
+  }
+  finalizeSignatures();
+
+  for (unsigned i = 0; i < assertions.size(); ++i) {
+    if (assertions[i].getKind() == kind::OR &&
+        assertions[i][0].getKind() == kind::AND) {
+      std::vector<Node> new_children;
+      for (unsigned j = 0; j < assertions[i].getNumChildren(); ++j) {
+        if (hasSignature(assertions[i][j])) {
+          new_children.push_back(abstractSignatures(assertions[i][j]));
+        } else {
+          new_children.push_back(assertions[i][j]);
+        }
+      }
+      new_assertions.push_back(utils::mkNode(kind::OR, new_children));
+    } else {
+      // assertions that are not changed
+      new_assertions.push_back(assertions[i]);
+    }
+  }
+
+  if (options::skolemizeArguments()) {
+    skolemizeArguments(new_assertions);
+  }
+
+
+  // if we are using the eager solver reverse the abstraction
+  if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER) {
+    if (d_funcToSignature.size() == 0) {
+      // we did not change anything
+      return false;
+    }
+    NodeNodeMap seen;
+    for (unsigned i = 0; i < new_assertions.size(); ++i) {
+      new_assertions[i] = reverseAbstraction(new_assertions[i], seen);
+    }
+    // we undo the abstraction functions so the logic is QF_BV still
+    return true;
+  }
+
+  // return true if we have created new function symbols for the problem
+  return d_funcToSignature.size() != 0;
+}
+
+
+bool AbstractionModule::isConjunctionOfAtoms(TNode node) {
+  TNodeSet seen;
+  return isConjunctionOfAtomsRec(node, seen);
+}
+
+bool AbstractionModule::isConjunctionOfAtomsRec(TNode node, TNodeSet& seen) {
+  if (seen.find(node)!= seen.end())
+    return true;
+
+  if (!node.getType().isBitVector()) {
+    return (node.getKind() == kind::AND || utils::isBVPredicate(node));
+  }
+
+  if (node.getNumChildren() == 0)
+    return true;
+
+  for (unsigned i = 0; i < node.getNumChildren(); ++i) {
+    if (!isConjunctionOfAtomsRec(node[i], seen))
+      return false;
+  }
+  seen.insert(node);
+  return true;
+}
+
+
+Node AbstractionModule::reverseAbstraction(Node assertion, NodeNodeMap& seen) {
+
+  if (seen.find(assertion) != seen.end())
+    return seen[assertion];
+
+  if (isAbstraction(assertion)) {
+    Node interp =  getInterpretation(assertion);
+    seen[assertion] = interp;
+    Assert (interp.getType() == assertion.getType());
+    return interp;
+  }
+
+  if (assertion.getNumChildren() == 0) {
+    seen[assertion] = assertion;
+    return assertion;
+  }
+
+  NodeBuilder<> result(assertion.getKind());
+  if (assertion.getMetaKind() == kind::metakind::PARAMETERIZED) {
+    result << assertion.getOperator();
+  }
+
+  for (unsigned i = 0; i < assertion.getNumChildren(); ++i) {
+    result << reverseAbstraction(assertion[i], seen);
+  }
+  Node res = result;
+  seen[assertion] = res;
+  return res;
+}
+
+void AbstractionModule::skolemizeArguments(std::vector<Node>& assertions) {
+  for (unsigned i = 0; i < assertions.size(); ++i) {
+    TNode assertion = assertions[i];
+    if (assertion.getKind() != kind::OR)
+      continue;
+
+    bool is_skolemizable = true;
+    for (unsigned k = 0; k < assertion.getNumChildren(); ++k) {
+      if (assertion[k].getKind() != kind::EQUAL ||
+          assertion[k][0].getKind() != kind::APPLY_UF ||
+          assertion[k][1].getKind() != kind::CONST_BITVECTOR ||
+          assertion[k][1].getConst<BitVector>() != BitVector(1, 1u)) {
+        is_skolemizable = false;
+        break;
+      }
+    }
+
+    if (!is_skolemizable)
+      continue;
+
+    ArgsTable assertion_table;
+
+    // collect function symbols and their arguments
+    for (unsigned j = 0; j < assertion.getNumChildren(); ++j) {
+      TNode current = assertion[j];
+      Assert (current.getKind() == kind::EQUAL &&
+              current[0].getKind() == kind::APPLY_UF);
+      TNode func = current[0];
+      ArgsVec args;
+      for (unsigned k = 0; k < func.getNumChildren(); ++k) {
+        args.push_back(func[k]);
+      }
+      assertion_table.addEntry(func.getOperator(), args);
+    }
+
+    NodeBuilder<> assertion_builder (kind::OR);
+    // construct skolemized assertion
+    for (ArgsTable::iterator it = assertion_table.begin(); it != assertion_table.end(); ++it) {
+      // for each function symbol
+      ++(d_statistics.d_numArgsSkolemized);
+      TNode func = it->first;
+      ArgsTableEntry& args = it->second;
+      NodeBuilder<> skolem_func (kind::APPLY_UF);
+      skolem_func << func;
+      std::vector<Node> skolem_args;
+
+      for (unsigned j = 0; j < args.getArity(); ++j) {
+        bool all_same = true;
+        for (unsigned k = 1; k < args.getNumEntries(); ++k) {
+          if ( args.getEntry(k)[j] != args.getEntry(0)[j])
+            all_same = false;
+        }
+        Node new_arg = all_same ? (Node)args.getEntry(0)[j] : utils::mkVar(utils::getSize(args.getEntry(0)[j]));
+        skolem_args.push_back(new_arg);
+        skolem_func << new_arg;
+      }
+
+
+      Node skolem_func_eq1 = utils::mkNode(kind::EQUAL, (Node)skolem_func, utils::mkConst(1, 1u));
+
+      // enumerate arguments assignments
+      std::vector<Node> or_assignments;
+      for (ArgsTableEntry::iterator it = args.begin(); it != args.end(); ++it) {
+        NodeBuilder<> arg_assignment(kind::AND);
+        ArgsVec& args =  *it;
+        for (unsigned k = 0; k < args.size(); ++k) {
+          Node eq = utils::mkNode(kind::EQUAL, args[k], skolem_args[k]);
+          arg_assignment << eq;
+        }
+        or_assignments.push_back(arg_assignment);
+      }
+
+      Node new_func_def = utils::mkNode(kind::AND, skolem_func_eq1, utils::mkNode(kind::OR, or_assignments));
+      assertion_builder << new_func_def;
+    }
+    Node new_assertion = assertion_builder;
+    Debug("bv-abstraction-dbg") << "AbstractionModule::skolemizeArguments " << assertions[i] << " => \n";
+    Debug("bv-abstraction-dbg") << "    " << new_assertion;
+    assertions[i] = new_assertion;
+  }
+}
+
+void AbstractionModule::storeSignature(Node signature, TNode assertion) {
+  if(d_signatures.find(signature) == d_signatures.end()) {
+    d_signatures[signature] = 0;
+  }
+  d_signatures[signature] = d_signatures[signature] + 1;
+  d_assertionToSignature[assertion] = signature;
+}
+
+Node AbstractionModule::computeSignature(TNode node) {
+  resetSignatureIndex();
+  NodeNodeMap cache;
+  Node sig = computeSignatureRec(node, cache);
+  return sig;
+}
+
+Node AbstractionModule::getSignatureSkolem(TNode node) {
+  Assert (node.getKind() == kind::VARIABLE);
+  unsigned bitwidth = utils::getSize(node);
+  if (d_signatureSkolems.find(bitwidth) == d_signatureSkolems.end()) {
+    d_signatureSkolems[bitwidth] = vector<Node>();
+  }
+
+  vector<Node>& skolems = d_signatureSkolems[bitwidth];
+  // get the index of bv variables of this size
+  unsigned index = getBitwidthIndex(bitwidth);
+  Assert (skolems.size() + 1 >= index );
+  if (skolems.size() == index) {
+    ostringstream os;
+    os << "sig_" <<bitwidth <<"_" << index;
+    NodeManager* nm = NodeManager::currentNM();
+    skolems.push_back(nm->mkSkolem(os.str(), nm->mkBitVectorType(bitwidth), "skolem for computing signatures"));
+  }
+  ++(d_signatureIndices[bitwidth]);
+  return skolems[index];
+}
+
+unsigned AbstractionModule::getBitwidthIndex(unsigned bitwidth) {
+  if (d_signatureIndices.find(bitwidth) == d_signatureIndices.end()) {
+    d_signatureIndices[bitwidth] = 0;
+  }
+  return d_signatureIndices[bitwidth];
+}
+
+void AbstractionModule::resetSignatureIndex() {
+  for (IndexMap::iterator it = d_signatureIndices.begin(); it != d_signatureIndices.end(); ++it) {
+    it->second = 0;
+  }
+}
+
+bool AbstractionModule::hasSignature(Node node) {
+  return d_assertionToSignature.find(node) != d_assertionToSignature.end();
+}
+
+Node AbstractionModule::getGeneralizedSignature(Node node) {
+  NodeNodeMap::const_iterator it = d_assertionToSignature.find(node);
+  Assert (it != d_assertionToSignature.end());
+  Node generalized_signature = getGeneralization(it->second);
+  return generalized_signature;
+}
+
+Node AbstractionModule::computeSignatureRec(TNode node, NodeNodeMap& cache) {
+  if (cache.find(node) != cache.end()) {
+    return cache.find(node)->second;
+  }
+
+  if (node.getNumChildren() == 0) {
+    if (node.getKind() == kind::CONST_BITVECTOR)
+      return node;
+
+    Node sig = getSignatureSkolem(node);
+    cache[node] = sig;
+    return sig;
+  }
+
+  NodeBuilder<> builder(node.getKind());
+  if (node.getMetaKind() == kind::metakind::PARAMETERIZED) {
+    builder << node.getOperator();
+  }
+  for (unsigned i = 0; i < node.getNumChildren(); ++i) {
+    Node converted = computeSignatureRec(node[i], cache);
+    builder << converted;
+  }
+  Node result = builder;
+  cache[node] = result;
+  return result;
+}
+
+/**
+ * Returns 0, if the two are equal,
+ * 1 if s is a generalization of t
+ * 2 if t is a generalization of s
+ * -1 if the two cannot be unified
+ *
+ * @param s
+ * @param t
+ *
+ * @return
+ */
+int AbstractionModule::comparePatterns(TNode s, TNode t) {
+  if (s.getKind() == kind::SKOLEM &&
+      t.getKind() == kind::SKOLEM) {
+    return 0;
+  }
+
+  if (s.getKind() == kind::CONST_BITVECTOR &&
+      t.getKind() == kind::CONST_BITVECTOR) {
+    if (s == t) {
+      return 0;
+    } else {
+      return -1;
+    }
+  }
+
+  if (s.getKind() == kind::SKOLEM &&
+      t.getKind() == kind::CONST_BITVECTOR) {
+    return 1;
+  }
+
+  if (s.getKind() == kind::CONST_BITVECTOR &&
+      t.getKind() == kind::SKOLEM) {
+    return 2;
+  }
+
+  if (s.getNumChildren() != t.getNumChildren() ||
+      s.getKind() != t.getKind())
+    return -1;
+
+  int unify = 0;
+  for (unsigned i = 0; i < s.getNumChildren(); ++i) {
+    int unify_i = comparePatterns(s[i], t[i]);
+    if (unify_i < 0)
+      return -1;
+    if (unify == 0) {
+      unify = unify_i;
+    } else if (unify != unify_i && unify_i != 0) {
+      return -1;
+    }
+  }
+  return unify;
+}
+
+TNode AbstractionModule::getGeneralization(TNode term) {
+  NodeNodeMap::iterator it = d_sigToGeneralization.find(term);
+  // if not in the map we add it
+  if (it == d_sigToGeneralization.end()) {
+    d_sigToGeneralization[term] = term;
+    return term;
+  }
+  // doesn't have a generalization
+  if (it->second == term)
+    return term;
+
+  TNode generalization = getGeneralization(it->second);
+  Assert (generalization != term);
+  d_sigToGeneralization[term] = generalization;
+  return generalization;
+}
+
+void AbstractionModule::storeGeneralization(TNode s, TNode t) {
+  Assert (s == getGeneralization(s));
+  Assert (t == getGeneralization(t));
+  d_sigToGeneralization[s] = t;
+}
+
+void AbstractionModule::finalizeSignatures() {
+  NodeManager* nm = NodeManager::currentNM();
+  Debug("bv-abstraction") << "AbstractionModule::finalizeSignatures num signatures = " << d_signatures.size() <<"\n";
+  TNodeSet new_signatures;
+
+  // "unify" signatures
+  for (SignatureMap::const_iterator ss = d_signatures.begin(); ss != d_signatures.end(); ++ss) {
+    for (SignatureMap::const_iterator tt = ss; tt != d_signatures.end(); ++tt) {
+      TNode t = getGeneralization(tt->first);
+      TNode s = getGeneralization(ss->first);
+
+      if (t != s) {
+        int status = comparePatterns(s, t);
+        Assert (status);
+        if (status < 0)
+          continue;
+        if (status == 1) {
+          storeGeneralization(t, s);
+        } else {
+          storeGeneralization(s, t);
+        }
+      }
+    }
+  }
+  // keep only most general signatures
+  for (SignatureMap::iterator it = d_signatures.begin(); it != d_signatures.end(); ) {
+    TNode sig = it->first;
+    TNode gen = getGeneralization(sig);
+    if (sig != gen) {
+      Assert (d_signatures.find(gen) != d_signatures.end());
+      // update the count
+      d_signatures[gen]+= d_signatures[sig];
+      d_signatures.erase(it++);
+    } else {
+      ++it;
+    }
+  }
+
+
+  // remove signatures that are not frequent enough
+  for (SignatureMap::iterator it = d_signatures.begin(); it != d_signatures.end(); ) {
+    if (it->second <= 7) {
+      d_signatures.erase(it++);
+    } else {
+      ++it;
+    }
+  }
+
+  for (SignatureMap::const_iterator it = d_signatures.begin(); it != d_signatures.end(); ++it) {
+    TNode signature = it->first;
+    // we already processed this signature
+    Assert (d_signatureToFunc.find(signature) == d_signatureToFunc.end());
+
+    Debug("bv-abstraction") << "Processing signature " << signature << " count " << it->second << "\n";
+    std::vector<TypeNode> arg_types;
+    TNodeSet seen;
+    collectArgumentTypes(signature, arg_types, seen);
+    Assert (signature.getType().isBoolean());
+    // make function return a bitvector of size 1
+    //Node bv_function = utils::mkNode(kind::ITE, signature, utils::mkConst(1, 1u), utils::mkConst(1, 0u));
+    TypeNode range = NodeManager::currentNM()->mkBitVectorType(1);
+
+    TypeNode abs_type = nm->mkFunctionType(arg_types, range);
+    Node abs_func = nm->mkSkolem("abs_$$", abs_type, "abstraction function for bv theory");
+    Debug("bv-abstraction") << " abstracted by function " << abs_func << "\n";
+
+    // NOTE: signature expression type is BOOLEAN
+    d_signatureToFunc[signature] = abs_func;
+    d_funcToSignature[abs_func] = signature;
+  }
+
+  d_statistics.d_numFunctionsAbstracted.setData(d_signatureToFunc.size());
+
+  Debug("bv-abstraction") << "AbstractionModule::finalizeSignatures abstracted " << d_signatureToFunc.size() << " signatures. \n";
+}
+
+void AbstractionModule::collectArgumentTypes(TNode sig, std::vector<TypeNode>& types, TNodeSet& seen) {
+  if (seen.find(sig) != seen.end())
+    return;
+
+  if (sig.getKind() == kind::SKOLEM) {
+    types.push_back(sig.getType());
+    seen.insert(sig);
+    return;
+  }
+
+  for (unsigned i = 0; i < sig.getNumChildren(); ++i) {
+    collectArgumentTypes(sig[i], types, seen);
+    seen.insert(sig);
+  }
+}
+
+void AbstractionModule::collectArguments(TNode node, TNode signature, std::vector<Node>& args, TNodeSet& seen) {
+  if (seen.find(node)!= seen.end())
+    return;
+
+  if (node.getKind() == kind::VARIABLE ||
+      node.getKind() == kind::CONST_BITVECTOR) {
+    // a constant in the node can either map to an argument of the abstraction
+    // or can be hard-coded and part of the abstraction
+    if (signature.getKind() == kind::SKOLEM) {
+      args.push_back(node);
+      seen.insert(node);
+    } else {
+      Assert (signature.getKind() == kind::CONST_BITVECTOR);
+    }
+    //
+    return;
+  }
+  Assert (node.getKind() == signature.getKind() &&
+          node.getNumChildren() == signature.getNumChildren());
+
+  for (unsigned i = 0; i < node.getNumChildren(); ++i) {
+    collectArguments(node[i], signature[i], args, seen);
+    seen.insert(node);
+  }
+}
+
+
+Node AbstractionModule::abstractSignatures(TNode assertion) {
+  Debug("bv-abstraction") << "AbstractionModule::abstractSignatures "<< assertion <<"\n";
+  // assume the assertion has been fully abstracted
+  Node signature = getGeneralizedSignature(assertion);
+
+  Debug("bv-abstraction") << "   with sig "<< signature <<"\n";
+  NodeNodeMap::iterator it = d_signatureToFunc.find(signature);
+  if (it!= d_signatureToFunc.end()) {
+    std::vector<Node> args;
+    TNode func = it->second;
+    // pushing the function symbol
+    args.push_back(func);
+    TNodeSet seen;
+    collectArguments(assertion, signature, args, seen);
+    std::vector<TNode> real_args;
+    for (unsigned i = 1; i < args.size(); ++i) {
+      real_args.push_back(args[i]);
+    }
+    d_argsTable.addEntry(func, real_args);
+    Node result = utils::mkNode(kind::EQUAL, utils::mkNode(kind::APPLY_UF, args),
+                                utils::mkConst(1, 1u));
+    Debug("bv-abstraction") << "=>   "<< result << "\n";
+    Assert (result.getType() == assertion.getType());
+    return result;
+  }
+  return assertion;
+}
+
+bool AbstractionModule::isAbstraction(TNode node) {
+  if (node.getKind() != kind::EQUAL)
+    return false;
+  if ((node[0].getKind() != kind::CONST_BITVECTOR ||
+       node[1].getKind() != kind::APPLY_UF) &&
+      (node[1].getKind() != kind::CONST_BITVECTOR ||
+       node[0].getKind() != kind::APPLY_UF))
+    return false;
+
+  TNode constant = node[0].getKind() == kind::CONST_BITVECTOR ? node[0] : node[1];
+  TNode func = node[0].getKind() == kind::APPLY_UF ? node[0] : node[1];
+  Assert (constant.getKind() == kind::CONST_BITVECTOR &&
+          func.getKind() == kind::APPLY_UF);
+  if (utils::getSize(constant) != 1)
+    return false;
+  if (constant != utils::mkConst(1, 1u))
+    return false;
+
+  TNode func_symbol = func.getOperator();
+  if (d_funcToSignature.find(func_symbol) == d_funcToSignature.end())
+    return false;
+
+  return true;
+}
+
+Node AbstractionModule::getInterpretation(TNode node) {
+  Assert (isAbstraction(node));
+  TNode constant = node[0].getKind() == kind::CONST_BITVECTOR ? node[0] : node[1];
+  TNode apply = node[0].getKind() == kind::APPLY_UF ? node[0] : node[1];
+  Assert (constant.getKind() == kind::CONST_BITVECTOR &&
+          apply.getKind() == kind::APPLY_UF);
+
+  Node func = apply.getOperator();
+  Assert (d_funcToSignature.find(func) != d_funcToSignature.end());
+
+  Node sig = d_funcToSignature[func];
+
+  // substitute arguments in signature
+  TNodeTNodeMap seen;
+  unsigned index = 0;
+  Node result = substituteArguments(sig, apply, index, seen);
+  Assert (result.getType().isBoolean());
+  Assert (index == apply.getNumChildren());
+  // Debug("bv-abstraction") << "AbstractionModule::getInterpretation " << node << "\n";
+  // Debug("bv-abstraction") << "    => " << result << "\n";
+  return result;
+}
+
+Node AbstractionModule::substituteArguments(TNode signature, TNode apply, unsigned& index, TNodeTNodeMap& seen) {
+  if (seen.find(signature) != seen.end()) {
+    return seen[signature];
+  }
+
+  if (signature.getKind() == kind::SKOLEM) {
+    // return corresponding argument and increment counter
+    seen[signature] = apply[index];
+    return apply[index++];
+  }
+
+  if (signature.getNumChildren() == 0) {
+    Assert (signature.getKind() != kind::VARIABLE &&
+            signature.getKind() != kind::SKOLEM);
+    seen[signature] = signature;
+    return signature;
+  }
+
+  NodeBuilder<> builder(signature.getKind());
+  if (signature.getMetaKind() == kind::metakind::PARAMETERIZED) {
+    builder << signature.getOperator();
+  }
+
+  for (unsigned i = 0; i < signature.getNumChildren(); ++i) {
+    Node child = substituteArguments(signature[i], apply, index, seen);
+    builder << child;
+  }
+
+  Node result = builder;
+  seen[signature]= result;
+
+  return result;
+}
+
+Node AbstractionModule::simplifyConflict(TNode conflict) {
+  if (Dump.isOn("bv-abstraction")) {
+    NodeNodeMap seen;
+    Node c = reverseAbstraction(conflict, seen);
+    Dump("bv-abstraction") << PushCommand();
+    Dump("bv-abstraction") << AssertCommand(c.toExpr());
+    Dump("bv-abstraction") << CheckSatCommand();
+    Dump("bv-abstraction") << PopCommand();
+  }
+
+  Debug("bv-abstraction-dbg") << "AbstractionModule::simplifyConflict " << conflict << "\n";
+  if (conflict.getKind() != kind::AND)
+    return conflict;
+
+  std::vector<Node> conjuncts;
+  for (unsigned i = 0; i < conflict.getNumChildren(); ++i)
+    conjuncts.push_back(conflict[i]);
+
+  theory::SubstitutionMap subst(new context::Context());
+  for (unsigned i = 0; i < conjuncts.size(); ++i) {
+    TNode conjunct = conjuncts[i];
+    // substitute s -> t
+    Node s, t;
+
+    if (conjunct.getKind() == kind::EQUAL) {
+      if (conjunct[0].getMetaKind() == kind::metakind::VARIABLE &&
+          conjunct[1].getKind() == kind::CONST_BITVECTOR) {
+        s = conjunct[0];
+        t = conjunct[1];
+      }
+      else if (conjunct[1].getMetaKind() == kind::metakind::VARIABLE &&
+               conjunct[0].getKind() == kind::CONST_BITVECTOR) {
+        s = conjunct[1];
+        t = conjunct[0];
+      } else {
+        continue;
+      }
+
+      Assert (!subst.hasSubstitution(s));
+      Assert (!t.isNull() &&
+              !s.isNull() &&
+              s!= t);
+      subst.addSubstitution(s, t);
+
+      for (unsigned k = 0; k < conjuncts.size(); k++) {
+        conjuncts[k] = subst.apply(conjuncts[k]);
+      }
+    }
+  }
+  Node new_conflict = Rewriter::rewrite(utils::mkAnd(conjuncts));
+
+  Debug("bv-abstraction") << "AbstractionModule::simplifyConflict conflict " << conflict <<"\n";
+  Debug("bv-abstraction") << "   => " << new_conflict <<"\n";
+
+  if (Dump.isOn("bv-abstraction")) {
+
+    NodeNodeMap seen;
+    Node nc = reverseAbstraction(new_conflict, seen);
+    Dump("bv-abstraction") << PushCommand();
+    Dump("bv-abstraction") << AssertCommand(nc.toExpr());
+    Dump("bv-abstraction") << CheckSatCommand();
+    Dump("bv-abstraction") << PopCommand();
+  }
+
+  return new_conflict;
+}
+
+
+void DebugPrintInstantiations(const std::vector< std::vector<ArgsVec> >& instantiations,
+                              const std::vector<TNode> functions) {
+  // print header
+  Debug("bv-abstraction-dbg") <<"[ ";
+  for (unsigned i = 0; i < functions.size(); ++i) {
+    for (unsigned j = 1; j < functions[i].getNumChildren(); ++j) {
+      Debug("bv-abstraction-dgb") << functions[i][j] <<" ";
+    }
+    Debug("bv-abstraction-dgb") << " || ";
+  }
+  Debug("bv-abstraction-dbg") <<"]\n";
+
+  for (unsigned i = 0; i < instantiations.size(); ++i) {
+    Debug("bv-abstraction-dbg") <<"[";
+    const std::vector<ArgsVec>& inst = instantiations[i];
+    for (unsigned j = 0; j < inst.size(); ++j) {
+      for (unsigned k = 0; k < inst[j].size(); ++k) {
+        Debug("bv-abstraction-dbg") << inst[j][k] << " ";
+      }
+      Debug("bv-abstraction-dbg") << " || ";
+    }
+    Debug("bv-abstraction-dbg") <<"]\n";
+  }
+}
+
+void AbstractionModule::generalizeConflict(TNode conflict, std::vector<Node>& lemmas) {
+  Debug("bv-abstraction") << "AbstractionModule::generalizeConflict " << conflict << "\n";
+  std::vector<TNode> functions;
+
+  // collect abstract functions
+  if (conflict.getKind() != kind::AND) {
+    if (isAbstraction(conflict)) {
+      Assert (conflict[0].getKind() == kind::APPLY_UF);
+      functions.push_back(conflict[0]);
+    }
+  } else {
+    for (unsigned i = 0; i < conflict.getNumChildren(); ++i) {
+      TNode conjunct = conflict[i];
+      if (isAbstraction(conjunct)) {
+        Assert (conjunct[0].getKind() == kind::APPLY_UF);
+        functions.push_back(conjunct[0]);
+      }
+    }
+  }
+
+  // if (functions.size() >= 3) {
+  //   // dump conflict
+  //   NodeNodeMap seen;
+  //   Node reversed = reverseAbstraction(conflict, seen);
+  //   std::cout << "CONFLICT " << reversed << "\n";
+  // }
+
+
+  if (functions.size() == 0 || functions.size() > options::bvNumFunc()) {
+    return;
+  }
+
+
+  // Skolemize function arguments to avoid confusion in pattern matching
+  SubstitutionMap skolem_subst(new context::Context());
+  SubstitutionMap reverse_skolem(new context::Context());
+  makeFreshSkolems(conflict, skolem_subst, reverse_skolem);
+
+  Node skolemized_conflict = skolem_subst.apply(conflict);
+  for (unsigned i = 0; i < functions.size(); ++i) {
+    functions[i] = skolem_subst.apply(functions[i]);
+  }
+
+  conflict = skolem_subst.apply(conflict);
+
+  LemmaInstantiatior inst(functions, d_argsTable, conflict);
+  std::vector<Node> new_lemmas;
+  inst.generateInstantiations(new_lemmas);
+  for (unsigned i = 0; i < new_lemmas.size(); ++i) {
+    TNode lemma = reverse_skolem.apply(new_lemmas[i]);
+    if (d_addedLemmas.find(lemma) == d_addedLemmas.end()) {
+      lemmas.push_back(lemma);
+      Debug("bv-abstraction-gen") << "adding lemma " << lemma << "\n";
+      storeLemma(lemma);
+
+      if (Dump.isOn("bv-abstraction")) {
+        NodeNodeMap seen;
+        Node l = reverseAbstraction(lemma, seen);
+        Dump("bv-abstraction") << PushCommand();
+        Dump("bv-abstraction") << AssertCommand(l.toExpr());
+        Dump("bv-abstraction") << CheckSatCommand();
+        Dump("bv-abstraction") << PopCommand();
+      }
+    }
+  }
+}
+
+int AbstractionModule::LemmaInstantiatior::next(int val, int index) {
+  if (val < d_maxMatch[index]  - 1)
+    return val + 1;
+  return -1;
+}
+
+/**
+ * Assumes the stack without top is consistent, and checks that the
+ * full stack is consistent
+ *
+ * @param stack
+ *
+ * @return
+ */
+bool AbstractionModule::LemmaInstantiatior::isConsistent(const vector<int>& stack) {
+  if (stack.empty())
+    return true;
+
+  unsigned current = stack.size() - 1;
+  TNode func = d_functions[current];
+  ArgsTableEntry& matches = d_argsTable.getEntry(func.getOperator());
+  ArgsVec& args = matches.getEntry(stack[current]);
+  Assert (args.size() == func.getNumChildren());
+  for (unsigned k = 0; k < args.size(); ++k) {
+    TNode s = func[k];
+    TNode t = args[k];
+
+    TNode s0 = s;
+    while (d_subst.hasSubstitution(s0)) {
+      s0 = d_subst.getSubstitution(s0);
+    }
+
+    TNode t0 = t;
+    while (d_subst.hasSubstitution(t0)) {
+      t0 = d_subst.getSubstitution(t0);
+    }
+
+    if (s0.isConst() && t0.isConst()) {
+      if (s0 != t0)
+        return false; // fail
+      else
+        continue;
+    }
+
+    if(s0.getMetaKind() == kind::metakind::VARIABLE &&
+       t0.isConst()) {
+      d_subst.addSubstitution(s0, t0);
+      continue;
+    }
+
+    if (s0.isConst() &&
+        t0.getMetaKind() == kind::metakind::VARIABLE) {
+      d_subst.addSubstitution(t0, s0);
+      continue;
+    }
+
+    Assert (s0.getMetaKind() == kind::metakind::VARIABLE &&
+            t0.getMetaKind() == kind::metakind::VARIABLE);
+
+    if (s0 != t0) {
+      d_subst.addSubstitution(s0, t0);
+    }
+  }
+  return true;
+}
+
+bool AbstractionModule::LemmaInstantiatior::accept(const vector<int>& stack) {
+  return stack.size() == d_functions.size();
+}
+
+void AbstractionModule::LemmaInstantiatior::mkLemma() {
+  Node lemma = d_subst.apply(d_conflict);
+  // Debug("bv-abstraction-gen") << "AbstractionModule::LemmaInstantiatior::mkLemma " << lemma <<"\n";
+  d_lemmas.push_back(lemma);
+}
+
+void AbstractionModule::LemmaInstantiatior::backtrack(vector<int>& stack) {
+  if (!isConsistent(stack))
+    return;
+
+  if (accept(stack)) {
+    mkLemma();
+    return;
+  }
+
+  int x = 0;
+  while (x != -1) {
+    d_ctx->push();
+    stack.push_back(x);
+    backtrack(stack);
+
+    d_ctx->pop();
+    stack.pop_back();
+    x = next(x, stack.size());
+  }
+}
+
+
+void AbstractionModule::LemmaInstantiatior::generateInstantiations(std::vector<Node>& lemmas) {
+  Debug("bv-abstraction-gen") << "AbstractionModule::LemmaInstantiatior::generateInstantiations ";
+
+  std::vector<int> stack;
+  backtrack(stack);
+  Assert (d_ctx->getLevel() == 0);
+  Debug("bv-abstraction-gen") << "numLemmas=" << d_lemmas.size() <<"\n";
+  lemmas.swap(d_lemmas);
+}
+
+void AbstractionModule::makeFreshSkolems(TNode node, SubstitutionMap& map, SubstitutionMap& reverse_map) {
+  if (map.hasSubstitution(node)) {
+    return;
+  }
+  if (node.getMetaKind() == kind::metakind::VARIABLE) {
+    Node skolem = utils::mkVar(utils::getSize(node));
+    map.addSubstitution(node, skolem);
+    reverse_map.addSubstitution(skolem, node);
+    return;
+  }
+  if (node.isConst())
+    return;
+
+  for (unsigned i = 0; i < node.getNumChildren(); ++i) {
+    makeFreshSkolems(node[i], map, reverse_map);
+  }
+}
+
+void AbstractionModule::makeFreshArgs(TNode func, std::vector<Node>& fresh_args) {
+  Assert (fresh_args.size() == 0);
+  Assert (func.getKind() == kind::APPLY_UF);
+  TNodeNodeMap d_map;
+  for (unsigned i = 0; i < func.getNumChildren(); ++i) {
+    TNode arg = func[i];
+    if (arg.isConst()) {
+      fresh_args.push_back(arg);
+      continue;
+    }
+    Assert (arg.getMetaKind() == kind::metakind::VARIABLE);
+    TNodeNodeMap::iterator it = d_map.find(arg);
+    if (it != d_map.end()) {
+      fresh_args.push_back(it->second);
+    } else {
+      Node skolem = utils::mkVar(utils::getSize(arg));
+      d_map[arg] = skolem;
+      fresh_args.push_back(skolem);
+    }
+  }
+  Assert (fresh_args.size() == func.getNumChildren());
+}
+
+Node AbstractionModule::tryMatching(const std::vector<Node>& ss, const std::vector<TNode>& tt, TNode conflict) {
+  Assert (ss.size() == tt.size());
+
+  Debug("bv-abstraction-dbg") << "AbstractionModule::tryMatching conflict = " << conflict << "\n";
+  if (Debug.isOn("bv-abstraction-dbg")) {
+    Debug("bv-abstraction-dbg") << "  Match: ";
+    for (unsigned i = 0; i < ss.size(); ++i) {
+      Debug("bv-abstraction-dbg") << ss[i] <<" ";
+
+    }
+    Debug("bv-abstraction-dbg") << "\n  To: ";
+    for (unsigned i = 0; i < tt.size(); ++i) {
+      Debug("bv-abstraction-dbg") << tt[i] <<" ";
+    }
+    Debug("bv-abstraction-dbg") <<"\n";
+  }
+
+
+  SubstitutionMap subst(new context::Context());
+
+  for (unsigned i = 0; i < ss.size(); ++i) {
+    TNode s = ss[i];
+    TNode t = tt[i];
+
+    TNode s0 = subst.hasSubstitution(s) ? subst.getSubstitution(s) : s;
+    TNode t0 = subst.hasSubstitution(t) ? subst.getSubstitution(t) : t;
+
+    if (s0.isConst() && t0.isConst()) {
+      if (s0 != t0)
+        return Node(); // fail
+      else
+        continue;
+    }
+
+    if(s0.getMetaKind() == kind::metakind::VARIABLE &&
+       t0.isConst()) {
+      subst.addSubstitution(s0, t0);
+      continue;
+    }
+
+    if (s0.isConst() &&
+        t0.getMetaKind() == kind::metakind::VARIABLE) {
+      subst.addSubstitution(t0, s0);
+      continue;
+    }
+
+    Assert (s0.getMetaKind() == kind::metakind::VARIABLE &&
+            t0.getMetaKind() == kind::metakind::VARIABLE);
+
+    Assert (s0 != t0);
+    subst.addSubstitution(s0, t0);
+  }
+
+  Node res = subst.apply(conflict);
+  Debug("bv-abstraction-dbg") << "  Lemma: " << res <<"\n";
+  return res;
+}
+
+void AbstractionModule::storeLemma(TNode lemma) {
+  d_addedLemmas.insert(lemma);
+  if (lemma.getKind() == kind::AND) {
+    for (unsigned i = 0; i < lemma.getNumChildren(); i++) {
+      TNode atom = lemma[i];
+      atom = atom.getKind() == kind::NOT ? atom[0] : atom;
+      Assert (atom.getKind() != kind::NOT);
+      Assert (utils::isBVPredicate(atom));
+      d_lemmaAtoms.insert(atom);
+    }
+  } else {
+    lemma = lemma.getKind() == kind::NOT? lemma[0] : lemma;
+    Assert (utils::isBVPredicate(lemma));
+    d_lemmaAtoms.insert(lemma);
+  }
+}
+
+
+bool AbstractionModule::isLemmaAtom(TNode node) const {
+  Assert (node.getType().isBoolean());
+  node = node.getKind() == kind::NOT? node[0] : node;
+
+  return d_inputAtoms.find(node) == d_inputAtoms.end() &&
+    d_lemmaAtoms.find(node) != d_lemmaAtoms.end();
+}
+
+void AbstractionModule::addInputAtom(TNode atom) {
+  if (options::bitblastMode() == theory::bv::BITBLAST_MODE_LAZY) {
+    d_inputAtoms.insert(atom);
+  }
+}
+
+void AbstractionModule::ArgsTableEntry::addArguments(const ArgsVec& args) {
+  Assert (args.size() == d_arity);
+  d_data.push_back(args);
+}
+
+void AbstractionModule::ArgsTable::addEntry(TNode signature, const ArgsVec& args) {
+  if (d_data.find(signature) == d_data.end()) {
+    d_data[signature] = ArgsTableEntry(args.size());
+  }
+  ArgsTableEntry& entry = d_data[signature];
+  entry.addArguments(args);
+}
+
+
+bool AbstractionModule::ArgsTable::hasEntry(TNode signature) const {
+  return d_data.find(signature) != d_data.end();
+}
+
+AbstractionModule::ArgsTableEntry& AbstractionModule::ArgsTable::getEntry(TNode signature) {
+  Assert (hasEntry(signature));
+  return d_data.find(signature)->second;
+}
+
+AbstractionModule::Statistics::Statistics(const std::string& name)
+  : d_numFunctionsAbstracted(name + "theory::bv::AbstractioModule::NumFunctionsAbstracted", 0)
+  , d_numArgsSkolemized(name + "theory::bv::AbstractioModule::NumArgsSkolemized", 0)
+  , d_abstractionTime(name + "theory::bv::AbstractioModule::AbstractionTime")
+{
+  smtStatisticsRegistry()->registerStat(&d_numFunctionsAbstracted);
+  smtStatisticsRegistry()->registerStat(&d_numArgsSkolemized);
+  smtStatisticsRegistry()->registerStat(&d_abstractionTime);
+}
+
+AbstractionModule::Statistics::~Statistics() {
+  smtStatisticsRegistry()->unregisterStat(&d_numFunctionsAbstracted);
+  smtStatisticsRegistry()->unregisterStat(&d_numArgsSkolemized);
+  smtStatisticsRegistry()->unregisterStat(&d_abstractionTime);
+}
diff --git a/src/theory/bv/abstraction.h b/src/theory/bv/abstraction.h
new file mode 100644
index 0000000..5d48b92
--- /dev/null
+++ b/src/theory/bv/abstraction.h
@@ -0,0 +1,247 @@
+/*********************                                                        */
+/*! \file abstraction.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Bitvector theory.
+ **
+ ** Bitvector theory.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__BV__ABSTRACTION_H
+#define __CVC4__THEORY__BV__ABSTRACTION_H
+
+#include <ext/hash_map>
+#include <ext/hash_set>
+
+#include "expr/node.h"
+#include "theory/substitutions.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+typedef std::vector<TNode> ArgsVec;
+
+class AbstractionModule {
+
+  struct Statistics {
+    IntStat d_numFunctionsAbstracted;
+    IntStat d_numArgsSkolemized;
+    TimerStat d_abstractionTime;
+    Statistics(const std::string& name);
+    ~Statistics();
+  };
+
+
+  class ArgsTableEntry {
+    std::vector<ArgsVec> d_data;
+    unsigned d_arity;
+  public:
+    ArgsTableEntry(unsigned n)
+      : d_arity(n)
+    {}
+    ArgsTableEntry()
+      : d_arity(0)
+    {}
+    void addArguments(const ArgsVec& args);
+    typedef std::vector<ArgsVec>::iterator iterator;
+
+    iterator begin() { return d_data.begin(); }
+    iterator end() { return d_data.end(); }
+    unsigned getArity() { return d_arity; }
+    unsigned getNumEntries() { return d_data.size(); }
+    ArgsVec& getEntry(unsigned i ) { Assert (i < d_data.size()); return d_data[i]; }
+  };
+
+  class ArgsTable {
+    __gnu_cxx::hash_map<TNode, ArgsTableEntry, TNodeHashFunction > d_data;
+    bool hasEntry(TNode signature) const;
+  public:
+    typedef __gnu_cxx::hash_map<TNode, ArgsTableEntry, TNodeHashFunction >::iterator iterator;
+    ArgsTable() {}
+    void addEntry(TNode signature, const ArgsVec& args);
+    ArgsTableEntry& getEntry(TNode signature);
+    iterator begin() { return d_data.begin(); }
+    iterator end() { return d_data.end(); }
+  };
+
+  /**
+   * Checks if one pattern is a generalization of the other
+   *
+   * @param s
+   * @param t
+   *
+   * @return 1 if s :> t, 2 if s <: t, 0 if they equivalent and -1 if they are incomparable
+   */
+  static int comparePatterns(TNode s, TNode t);
+
+  class LemmaInstantiatior {
+    std::vector<TNode> d_functions;
+    std::vector<int> d_maxMatch;
+    ArgsTable& d_argsTable;
+    context::Context* d_ctx;
+    theory::SubstitutionMap d_subst;
+    TNode d_conflict;
+    std::vector<Node> d_lemmas;
+
+    void backtrack(std::vector<int>& stack);
+    int next(int val, int index);
+    bool isConsistent(const std::vector<int>& stack);
+    bool accept(const std::vector<int>& stack);
+    void mkLemma();
+  public:
+    LemmaInstantiatior(const std::vector<TNode>& functions, ArgsTable& table, TNode conflict)
+      : d_functions(functions)
+      , d_argsTable(table)
+      , d_ctx(new context::Context())
+      , d_subst(d_ctx)
+      , d_conflict(conflict)
+      , d_lemmas()
+    {
+      Debug("bv-abstraction-gen") << "LemmaInstantiator conflict:" << conflict << "\n";
+      // initializing the search space
+      for (unsigned i = 0; i < functions.size(); ++i) {
+        TNode func_op = functions[i].getOperator();
+        // number of matches for this function
+        unsigned maxCount = table.getEntry(func_op).getNumEntries();
+        d_maxMatch.push_back(maxCount);
+      }
+    }
+
+    void generateInstantiations(std::vector<Node>& lemmas);
+
+  };
+
+  typedef __gnu_cxx::hash_map<Node, std::vector<Node>, NodeHashFunction> NodeVecMap;
+  typedef __gnu_cxx::hash_map<Node, TNode, NodeHashFunction> NodeTNodeMap;
+  typedef __gnu_cxx::hash_map<TNode, TNode, TNodeHashFunction> TNodeTNodeMap;
+  typedef __gnu_cxx::hash_map<Node, Node, NodeHashFunction> NodeNodeMap;
+  typedef __gnu_cxx::hash_map<Node, TNode, NodeHashFunction> TNodeNodeMap;
+  typedef __gnu_cxx::hash_set<TNode, TNodeHashFunction> TNodeSet;
+  typedef __gnu_cxx::hash_map<unsigned, Node> IntNodeMap;
+  typedef __gnu_cxx::hash_map<unsigned, unsigned> IndexMap;
+  typedef __gnu_cxx::hash_map<unsigned, std::vector<Node> > SkolemMap;
+  typedef __gnu_cxx::hash_map<TNode, unsigned, TNodeHashFunction > SignatureMap;
+
+  ArgsTable d_argsTable;
+
+  // mapping between signature and uninterpreted function symbol used to
+  // abstract the signature
+  NodeNodeMap d_signatureToFunc;
+  NodeNodeMap d_funcToSignature;
+
+  NodeNodeMap d_assertionToSignature;
+  SignatureMap d_signatures;
+  NodeNodeMap d_sigToGeneralization;
+  TNodeSet d_skolems;
+
+  // skolems maps
+  IndexMap d_signatureIndices;
+  SkolemMap d_signatureSkolems;
+
+  void collectArgumentTypes(TNode sig, std::vector<TypeNode>& types, TNodeSet& seen);
+  void collectArguments(TNode node, TNode sig, std::vector<Node>& args, TNodeSet& seen);
+  void finalizeSignatures();
+  Node abstractSignatures(TNode assertion);
+  Node computeSignature(TNode node);
+
+  bool isConjunctionOfAtoms(TNode node);
+  bool isConjunctionOfAtomsRec(TNode node, TNodeSet& seen);
+
+  TNode getGeneralization(TNode term);
+  void storeGeneralization(TNode s, TNode t);
+
+  // signature skolem stuff
+  Node getGeneralizedSignature(Node node);
+  Node getSignatureSkolem(TNode node);
+
+  unsigned getBitwidthIndex(unsigned bitwidth);
+  void resetSignatureIndex();
+  Node computeSignatureRec(TNode, NodeNodeMap&);
+  void storeSignature(Node signature, TNode assertion);
+  bool hasSignature(Node node);
+
+  Node substituteArguments(TNode signature, TNode apply, unsigned& i, TNodeTNodeMap& seen);
+
+  // crazy instantiation methods
+  void generateInstantiations(unsigned current,
+                              std::vector<ArgsTableEntry>& matches,
+                              std::vector<std::vector<ArgsVec> >& instantiations,
+                              std::vector<std::vector<ArgsVec> >& new_instantiations);
+
+  Node tryMatching(const std::vector<Node>& ss, const std::vector<TNode>& tt, TNode conflict);
+  void makeFreshArgs(TNode func, std::vector<Node>& fresh_args);
+  void makeFreshSkolems(TNode node, SubstitutionMap& map, SubstitutionMap& reverse_map);
+
+  void skolemizeArguments(std::vector<Node>& assertions);
+  Node reverseAbstraction(Node assertion, NodeNodeMap& seen);
+
+  TNodeSet d_addedLemmas;
+  TNodeSet d_lemmaAtoms;
+  TNodeSet d_inputAtoms;
+  void storeLemma(TNode lemma);
+
+  Statistics d_statistics;
+
+public:
+  AbstractionModule(const std::string& name)
+    : d_argsTable()
+    , d_signatureToFunc()
+    , d_funcToSignature()
+    , d_assertionToSignature()
+    , d_signatures()
+    , d_sigToGeneralization()
+    , d_skolems()
+    , d_signatureIndices()
+    , d_signatureSkolems()
+    , d_addedLemmas()
+    , d_lemmaAtoms()
+    , d_inputAtoms()
+    , d_statistics(name)
+  {}
+  /**
+   * returns true if there are new uninterepreted functions symbols in the output
+   *
+   * @param assertions
+   * @param new_assertions
+   *
+   * @return
+   */
+  bool applyAbstraction(const std::vector<Node>& assertions, std::vector<Node>& new_assertions);
+  /**
+   * Returns true if the node represents an abstraction predicate.
+   *
+   * @param node
+   *
+   * @return
+   */
+  bool isAbstraction(TNode node);
+  /**
+   * Returns the interpretation of the abstraction predicate.
+   *
+   * @param node
+   *
+   * @return
+   */
+  Node getInterpretation(TNode node);
+  Node simplifyConflict(TNode conflict);
+  void generalizeConflict(TNode conflict, std::vector<Node>& lemmas);
+  void addInputAtom(TNode atom);
+  bool isLemmaAtom(TNode node) const;
+};
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/bv/aig_bitblaster.cpp b/src/theory/bv/aig_bitblaster.cpp
new file mode 100644
index 0000000..934e2ff
--- /dev/null
+++ b/src/theory/bv/aig_bitblaster.cpp
@@ -0,0 +1,671 @@
+/*********************                                                        */
+/*! \file aig_bitblaster.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief 
+ **
+ ** Bitblaster for the lazy bv solver. 
+ **/
+
+#include "bitblaster_template.h"
+#include "cvc4_private.h"
+#include "options/bv_options.h"
+#include "prop/cnf_stream.h"
+#include "prop/sat_solver_factory.h"
+#include "smt/smt_statistics_registry.h"
+
+#ifdef CVC4_USE_ABC
+// Function is defined as static in ABC. Not sure how else to do this. 
+static inline int Cnf_Lit2Var( int Lit ) { return (Lit & 1)? -(Lit >> 1)-1 : (Lit >> 1)+1;  }
+
+extern "C" {
+extern Aig_Man_t * Abc_NtkToDar( Abc_Ntk_t * pNtk, int fExors, int fRegisters );
+}
+
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+template <> inline
+std::string toString<Abc_Obj_t*> (const std::vector<Abc_Obj_t*>& bits) {
+  Unreachable("Don't know how to print AIG");
+} 
+
+
+template <> inline
+Abc_Obj_t* mkTrue<Abc_Obj_t*>() {
+  return Abc_AigConst1(AigBitblaster::currentAigNtk());  
+}
+
+template <> inline
+Abc_Obj_t* mkFalse<Abc_Obj_t*>() {
+  return Abc_ObjNot(mkTrue<Abc_Obj_t*>()); 
+}
+
+template <> inline
+Abc_Obj_t* mkNot<Abc_Obj_t*>(Abc_Obj_t* a) {
+  return Abc_ObjNot(a); 
+}
+
+template <> inline
+Abc_Obj_t* mkOr<Abc_Obj_t*>(Abc_Obj_t* a, Abc_Obj_t* b) {
+  return Abc_AigOr(AigBitblaster::currentAigM(), a, b); 
+}
+
+template <> inline
+Abc_Obj_t* mkOr<Abc_Obj_t*>(const std::vector<Abc_Obj_t*>& children) {
+  Assert (children.size());
+  if (children.size() == 1)
+    return children[0];
+  
+  Abc_Obj_t* result = children[0];
+  for (unsigned i = 1; i < children.size(); ++i) {
+    result = Abc_AigOr(AigBitblaster::currentAigM(), result, children[i]); 
+  }
+  return result;
+}
+
+
+template <> inline
+Abc_Obj_t* mkAnd<Abc_Obj_t*>(Abc_Obj_t* a, Abc_Obj_t* b) {
+  return Abc_AigAnd(AigBitblaster::currentAigM(), a, b); 
+}
+
+template <> inline
+Abc_Obj_t* mkAnd<Abc_Obj_t*>(const std::vector<Abc_Obj_t*>& children) {
+  Assert (children.size());
+  if (children.size() == 1)
+    return children[0];
+  
+  Abc_Obj_t* result = children[0];
+  for (unsigned i = 1; i < children.size(); ++i) {
+    result = Abc_AigAnd(AigBitblaster::currentAigM(), result, children[i]); 
+  }
+  return result;
+}
+
+template <> inline
+Abc_Obj_t* mkXor<Abc_Obj_t*>(Abc_Obj_t* a, Abc_Obj_t* b) {
+  return Abc_AigXor(AigBitblaster::currentAigM(), a, b); 
+}
+
+template <> inline
+Abc_Obj_t* mkIff<Abc_Obj_t*>(Abc_Obj_t* a, Abc_Obj_t* b) {
+  return mkNot(mkXor(a, b)); 
+}
+
+template <> inline
+Abc_Obj_t* mkIte<Abc_Obj_t*>(Abc_Obj_t* cond, Abc_Obj_t* a, Abc_Obj_t* b) {
+  return Abc_AigMux(AigBitblaster::currentAigM(), cond, a, b); 
+}
+
+} /* CVC4::theory::bv */
+} /* CVC4::theory */
+} /* CVC4 */
+
+using namespace CVC4;
+using namespace CVC4::theory;
+using namespace CVC4::theory::bv;
+
+
+Abc_Ntk_t* AigBitblaster::abcAigNetwork = NULL;
+
+Abc_Ntk_t* AigBitblaster::currentAigNtk() {
+  if (!AigBitblaster::abcAigNetwork) {
+    Abc_Start();
+    abcAigNetwork = Abc_NtkAlloc( ABC_NTK_STRASH, ABC_FUNC_AIG, 1); 
+    char pName[] = "CVC4::theory::bv::AigNetwork";
+    abcAigNetwork->pName = Extra_UtilStrsav(pName);
+  }
+  
+  return abcAigNetwork;
+}
+
+
+Abc_Aig_t* AigBitblaster::currentAigM() {
+  return (Abc_Aig_t*)(currentAigNtk()->pManFunc);
+}
+
+AigBitblaster::AigBitblaster()
+  : TBitblaster<Abc_Obj_t*>()
+  , d_aigCache()
+  , d_bbAtoms()
+  , d_aigOutputNode(NULL)
+{
+  d_nullContext = new context::Context();
+  switch(options::bvSatSolver()) {
+  case SAT_SOLVER_MINISAT: {
+    prop::BVSatSolverInterface* minisat = prop::SatSolverFactory::createMinisat(d_nullContext,
+                                                                                smtStatisticsRegistry(),
+                                                                                "AigBitblaster");
+    MinisatEmptyNotify* notify = new MinisatEmptyNotify();
+    minisat->setNotify(notify);
+    d_satSolver = minisat;
+    break;
+  }
+  case SAT_SOLVER_CRYPTOMINISAT:
+    d_satSolver = prop::SatSolverFactory::createCryptoMinisat(smtStatisticsRegistry(),
+                                                              "AigBitblaster");
+    break;
+  default:
+    Unreachable("Unknown SAT solver type");
+  }
+}
+
+AigBitblaster::~AigBitblaster() {
+  Assert (abcAigNetwork == NULL);
+  delete d_nullContext;
+}
+
+Abc_Obj_t* AigBitblaster::bbFormula(TNode node) {
+  Assert (node.getType().isBoolean());
+  Debug("bitvector-bitblast") << "AigBitblaster::bbFormula "<< node << "\n"; 
+  
+  if (hasAig(node))
+    return getAig(node);
+  
+  Abc_Obj_t* result = NULL;
+  
+  Debug("bitvector-aig") << "AigBitblaster::convertToAig " << node <<"\n"; 
+  switch (node.getKind()) {
+  case kind::AND:
+    {
+      result = bbFormula(node[0]);
+      for (unsigned i = 1; i < node.getNumChildren(); ++i) {
+        Abc_Obj_t* child = bbFormula(node[i]);
+        result = mkAnd(result, child);
+      }
+      break;
+    }
+  case kind::OR:
+    {
+      result = bbFormula(node[0]);
+      for (unsigned i = 1; i < node.getNumChildren(); ++i) {
+        Abc_Obj_t* child = bbFormula(node[i]);
+        result = mkOr(result, child);
+      }
+      break;
+    }
+  case kind::XOR:
+    {
+      result = bbFormula(node[0]);
+      for (unsigned i = 1; i < node.getNumChildren(); ++i) {
+        Abc_Obj_t* child = bbFormula(node[i]);
+        result = mkXor(result, child);
+      }
+      break;
+    }
+  case kind::IMPLIES:
+    {
+      Assert (node.getNumChildren() == 2); 
+      Abc_Obj_t* child1 = bbFormula(node[0]);
+      Abc_Obj_t* child2 = bbFormula(node[1]);
+
+      result = mkOr(mkNot(child1), child2);
+      break;
+    }
+  case kind::ITE:
+    {
+      Assert (node.getNumChildren() == 3); 
+      Abc_Obj_t* a = bbFormula(node[0]);
+      Abc_Obj_t* b = bbFormula(node[1]);
+      Abc_Obj_t* c = bbFormula(node[2]);
+      result = mkIte(a, b, c); 
+      break;
+    }
+  case kind::NOT:
+    {
+      Abc_Obj_t* child1 = bbFormula(node[0]);
+      result = mkNot(child1);
+      break;
+    }
+  case kind::CONST_BOOLEAN:
+    {
+      result = node.getConst<bool>() ? mkTrue<Abc_Obj_t*>() : mkFalse<Abc_Obj_t*>(); 
+      break;
+    }
+  case kind::VARIABLE:
+  case kind::SKOLEM:
+    {
+      result = mkInput(node);
+      break;
+    }
+  case kind::EQUAL:
+    {
+      if( node[0].getType().isBoolean() ){
+        Assert (node.getNumChildren() == 2); 
+        Abc_Obj_t* child1 = bbFormula(node[0]);
+        Abc_Obj_t* child2 = bbFormula(node[1]);
+  
+        result = mkIff(child1, child2); 
+        break;
+      }
+      //else, continue...
+    }
+  default:
+    bbAtom(node);
+    result = getBBAtom(node);
+  }
+
+  cacheAig(node, result);
+  Debug("bitvector-aig") << "AigBitblaster::bbFormula done " << node << " => " << result <<"\n"; 
+  return result; 
+}
+
+void AigBitblaster::bbAtom(TNode node) {
+  if (hasBBAtom(node)) {
+    return;
+  }
+
+  Debug("bitvector-bitblast") << "Bitblasting atom " << node <<"\n";
+
+  // the bitblasted definition of the atom
+  Node normalized = Rewriter::rewrite(node);
+  Abc_Obj_t* atom_bb = (d_atomBBStrategies[normalized.getKind()])(normalized, this);
+  storeBBAtom(node, atom_bb);
+  Debug("bitvector-bitblast") << "Done bitblasting atom " << node <<"\n";
+}
+
+void AigBitblaster::bbTerm(TNode node, Bits& bits) {
+  if (hasBBTerm(node)) {
+    getBBTerm(node, bits);
+    return;
+  }
+  Assert( node.getType().isBitVector() );
+
+  Debug("bitvector-bitblast") << "Bitblasting term " << node <<"\n";
+  d_termBBStrategies[node.getKind()] (node, bits, this);
+
+  Assert (bits.size() == utils::getSize(node));
+  storeBBTerm(node, bits);
+}
+
+
+void AigBitblaster::cacheAig(TNode node, Abc_Obj_t* aig) {
+  Assert (!hasAig(node));
+  d_aigCache.insert(std::make_pair(node, aig));
+}
+bool AigBitblaster::hasAig(TNode node) {
+  return d_aigCache.find(node) != d_aigCache.end(); 
+}
+Abc_Obj_t* AigBitblaster::getAig(TNode node) {
+  Assert(hasAig(node));
+  Debug("bitvector-aig") << "AigSimplifer::getAig " << node << " => " << d_aigCache.find(node)->second <<"\n"; 
+  return d_aigCache.find(node)->second; 
+}
+
+void AigBitblaster::makeVariable(TNode node, Bits& bits) {
+  
+  for (unsigned i = 0; i < utils::getSize(node); ++i) {
+    Node bit = utils::mkBitOf(node, i);
+    Abc_Obj_t* input = mkInput(bit);
+    cacheAig(bit, input); 
+    bits.push_back(input); 
+  }
+}
+
+Abc_Obj_t* AigBitblaster::mkInput(TNode input) {
+  Assert (!hasInput(input));
+  Assert(input.getKind() == kind::BITVECTOR_BITOF ||
+         (input.getType().isBoolean() &&
+          (input.getKind() == kind::VARIABLE ||
+           input.getKind() == kind::SKOLEM)));
+  Abc_Obj_t* aig_input = Abc_NtkCreatePi(currentAigNtk());
+  // d_aigCache.insert(std::make_pair(input, aig_input));
+  d_nodeToAigInput.insert(std::make_pair(input, aig_input));
+  Debug("bitvector-aig") << "AigSimplifer::mkInput " << input << " " << aig_input <<"\n"; 
+  return aig_input; 
+}
+
+bool AigBitblaster::hasInput(TNode input) {
+  return d_nodeToAigInput.find(input) != d_nodeToAigInput.end(); 
+}
+
+bool AigBitblaster::solve(TNode node) {
+  // setting output of network to be the query
+  Assert (d_aigOutputNode == NULL);
+  Abc_Obj_t* query = bbFormula(node);
+  d_aigOutputNode = Abc_NtkCreatePo(currentAigNtk());
+  Abc_ObjAddFanin(d_aigOutputNode, query); 
+
+  simplifyAig();
+  convertToCnfAndAssert();
+  // no need to use abc anymore
+  
+  TimerStat::CodeTimer solveTimer(d_statistics.d_solveTime);
+  prop::SatValue result = d_satSolver->solve();
+
+  Assert (result != prop::SAT_VALUE_UNKNOWN); 
+  return result == prop::SAT_VALUE_TRUE; 
+}
+
+
+void addAliases(Abc_Frame_t* pAbc);
+
+void AigBitblaster::simplifyAig() {
+  TimerStat::CodeTimer simpTimer(d_statistics.d_simplificationTime);
+
+  Abc_AigCleanup(currentAigM());
+  Assert (Abc_NtkCheck(currentAigNtk()));
+
+  const char* command = options::bitvectorAigSimplifications().c_str(); 
+  Abc_Frame_t* pAbc = Abc_FrameGetGlobalFrame();
+  Abc_FrameSetCurrentNetwork(pAbc, currentAigNtk());
+
+  addAliases(pAbc); 
+  if ( Cmd_CommandExecute( pAbc, command ) ) {
+    fprintf( stdout, "Cannot execute command \"%s\".\n", command );
+    exit(-1); 
+  }
+  abcAigNetwork = Abc_FrameReadNtk(pAbc); 
+}
+
+
+void AigBitblaster::convertToCnfAndAssert() {
+  TimerStat::CodeTimer cnfConversionTimer(d_statistics.d_cnfConversionTime);
+  
+  Aig_Man_t * pMan = NULL;
+  Cnf_Dat_t * pCnf = NULL;
+  assert( Abc_NtkIsStrash(currentAigNtk()) );
+  
+  // convert to the AIG manager
+  pMan = Abc_NtkToDar(currentAigNtk(), 0, 0 );
+  Abc_Stop(); 
+
+  // // free old network
+  // Abc_NtkDelete(currentAigNtk());
+  // abcAigNetwork = NULL;
+  
+  Assert (pMan != NULL);
+  Assert (Aig_ManCheck(pMan));
+  pCnf = Cnf_DeriveFast( pMan, 0 );
+
+  assertToSatSolver(pCnf); 
+    
+  Cnf_DataFree( pCnf );
+  Cnf_ManFree();
+  Aig_ManStop(pMan);
+}
+
+void AigBitblaster::assertToSatSolver(Cnf_Dat_t* pCnf) {
+  unsigned numVariables = pCnf->nVars;
+  unsigned numClauses = pCnf->nClauses;
+  
+  d_statistics.d_numVariables += numVariables; 
+  d_statistics.d_numClauses += numClauses; 
+
+  // create variables in the sat solver
+  std::vector<prop::SatVariable> sat_variables;
+  for (unsigned i = 0; i < numVariables; ++i) {
+    sat_variables.push_back(d_satSolver->newVar(false, false, false)); 
+  }
+
+  // construct clauses and add to sat solver
+  int * pLit, * pStop;
+  for (unsigned i = 0; i < numClauses; i++ ) {
+    prop::SatClause clause; 
+    for (pLit = pCnf->pClauses[i], pStop = pCnf->pClauses[i+1]; pLit < pStop; pLit++ ) {
+      int int_lit = Cnf_Lit2Var(*pLit);
+      Assert (int_lit != 0); 
+      unsigned index = int_lit < 0? -int_lit : int_lit;
+      Assert (index - 1 < sat_variables.size()); 
+      prop::SatLiteral lit(sat_variables[index-1], int_lit < 0); 
+      clause.push_back(lit); 
+    }
+    d_satSolver->addClause(clause, false);
+  }
+}
+
+void addAliases(Abc_Frame_t* pAbc) {
+  std::vector<std::string> aliases;
+  aliases.push_back("alias b balance");
+  aliases.push_back("alias rw rewrite");
+  aliases.push_back("alias rwz rewrite -z");
+  aliases.push_back("alias rf refactor");
+  aliases.push_back("alias rfz refactor -z");
+  aliases.push_back("alias re restructure");
+  aliases.push_back("alias rez restructure -z");
+  aliases.push_back("alias rs resub");
+  aliases.push_back("alias rsz resub -z");
+  aliases.push_back("alias rsk6 rs -K 6");
+  aliases.push_back("alias rszk5 rsz -K 5");
+  aliases.push_back("alias bl b -l");
+  aliases.push_back("alias rwl rw -l");
+  aliases.push_back("alias rwzl rwz -l");
+  aliases.push_back("alias rwzl rwz -l");
+  aliases.push_back("alias rfl rf -l");
+  aliases.push_back("alias rfzl rfz -l");
+  aliases.push_back("alias brw \"b; rw\"");
+
+  for (unsigned i = 0; i < aliases.size(); ++i) {
+    if ( Cmd_CommandExecute( pAbc, aliases[i].c_str() ) ) {
+      fprintf( stdout, "Cannot execute command \"%s\".\n", aliases[i].c_str() );
+      exit(-1); 
+    }
+  }
+}
+
+bool AigBitblaster::hasBBAtom(TNode atom) const {
+  return d_bbAtoms.find(atom) != d_bbAtoms.end(); 
+}
+
+void AigBitblaster::storeBBAtom(TNode atom, Abc_Obj_t* atom_bb) {
+  d_bbAtoms.insert(std::make_pair(atom, atom_bb)); 
+}
+
+Abc_Obj_t* AigBitblaster::getBBAtom(TNode atom) const {
+  Assert (hasBBAtom(atom));
+  return d_bbAtoms.find(atom)->second;
+}
+
+AigBitblaster::Statistics::Statistics()
+  : d_numClauses("theory::bv::AigBitblaster::numClauses", 0)
+  , d_numVariables("theory::bv::AigBitblaster::numVariables", 0)
+  , d_simplificationTime("theory::bv::AigBitblaster::simplificationTime")
+  , d_cnfConversionTime("theory::bv::AigBitblaster::cnfConversionTime")
+  , d_solveTime("theory::bv::AigBitblaster::solveTime")
+{
+  smtStatisticsRegistry()->registerStat(&d_numClauses); 
+  smtStatisticsRegistry()->registerStat(&d_numVariables);
+  smtStatisticsRegistry()->registerStat(&d_simplificationTime); 
+  smtStatisticsRegistry()->registerStat(&d_cnfConversionTime);
+  smtStatisticsRegistry()->registerStat(&d_solveTime); 
+}
+
+AigBitblaster::Statistics::~Statistics() {
+  smtStatisticsRegistry()->unregisterStat(&d_numClauses); 
+  smtStatisticsRegistry()->unregisterStat(&d_numVariables);
+  smtStatisticsRegistry()->unregisterStat(&d_simplificationTime); 
+  smtStatisticsRegistry()->unregisterStat(&d_cnfConversionTime);
+  smtStatisticsRegistry()->unregisterStat(&d_solveTime); 
+}
+
+#else // CVC4_USE_ABC
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+template <> inline
+std::string toString<Abc_Obj_t*> (const std::vector<Abc_Obj_t*>& bits) {
+  Unreachable("Don't know how to print AIG");
+} 
+
+
+template <> inline
+Abc_Obj_t* mkTrue<Abc_Obj_t*>() {
+  Unreachable();
+  return NULL;
+}
+
+template <> inline
+Abc_Obj_t* mkFalse<Abc_Obj_t*>() {
+  Unreachable();
+  return NULL;
+}
+
+template <> inline
+Abc_Obj_t* mkNot<Abc_Obj_t*>(Abc_Obj_t* a) {
+  Unreachable();
+  return NULL;
+}
+
+template <> inline
+Abc_Obj_t* mkOr<Abc_Obj_t*>(Abc_Obj_t* a, Abc_Obj_t* b) {
+  Unreachable();
+  return NULL;
+}
+
+template <> inline
+Abc_Obj_t* mkOr<Abc_Obj_t*>(const std::vector<Abc_Obj_t*>& children) {
+  Unreachable();
+  return NULL;
+}
+
+
+template <> inline
+Abc_Obj_t* mkAnd<Abc_Obj_t*>(Abc_Obj_t* a, Abc_Obj_t* b) {
+  Unreachable();
+  return NULL;
+}
+
+template <> inline
+Abc_Obj_t* mkAnd<Abc_Obj_t*>(const std::vector<Abc_Obj_t*>& children) {
+  Unreachable();
+  return NULL;
+}
+
+template <> inline
+Abc_Obj_t* mkXor<Abc_Obj_t*>(Abc_Obj_t* a, Abc_Obj_t* b) {
+  Unreachable();
+  return NULL;
+}
+
+template <> inline
+Abc_Obj_t* mkIff<Abc_Obj_t*>(Abc_Obj_t* a, Abc_Obj_t* b) {
+  Unreachable();
+  return NULL;
+}
+
+template <> inline
+Abc_Obj_t* mkIte<Abc_Obj_t*>(Abc_Obj_t* cond, Abc_Obj_t* a, Abc_Obj_t* b) {
+  Unreachable();
+  return NULL;
+}
+
+} /* CVC4::theory::bv */
+} /* CVC4::theory */
+} /* CVC4 */
+
+using namespace CVC4;
+using namespace CVC4::theory;
+using namespace CVC4::theory::bv;
+
+Abc_Ntk_t* AigBitblaster::abcAigNetwork = NULL;
+
+Abc_Ntk_t* AigBitblaster::currentAigNtk() {
+  Unreachable();
+  return NULL;
+}
+
+
+Abc_Aig_t* AigBitblaster::currentAigM() {
+  Unreachable();
+  return NULL;
+}
+
+AigBitblaster::~AigBitblaster() {
+  Unreachable();
+}
+
+Abc_Obj_t* AigBitblaster::bbFormula(TNode node) {
+  Unreachable();
+  return NULL;
+}
+
+void AigBitblaster::bbAtom(TNode node) {
+  Unreachable();
+}
+
+void AigBitblaster::bbTerm(TNode node, Bits& bits) {
+  Unreachable();
+}
+
+
+void AigBitblaster::cacheAig(TNode node, Abc_Obj_t* aig) {
+  Unreachable();
+}
+bool AigBitblaster::hasAig(TNode node) {
+  Unreachable();
+  return false; 
+}
+Abc_Obj_t* AigBitblaster::getAig(TNode node) {
+  Unreachable();
+  return NULL;
+}
+
+void AigBitblaster::makeVariable(TNode node, Bits& bits) {
+  Unreachable();  
+}
+
+Abc_Obj_t* AigBitblaster::mkInput(TNode input) {
+  Unreachable();
+  return NULL;
+} 
+
+bool AigBitblaster::hasInput(TNode input) {
+  Unreachable();
+  return false; 
+}
+
+bool AigBitblaster::solve(TNode node) {
+  Unreachable();
+  return false; 
+}
+void AigBitblaster::simplifyAig() {
+  Unreachable();
+}
+
+void AigBitblaster::convertToCnfAndAssert() {
+  Unreachable();
+}
+
+void AigBitblaster::assertToSatSolver(Cnf_Dat_t* pCnf) {
+  Unreachable();
+}
+bool AigBitblaster::hasBBAtom(TNode atom) const {
+  Unreachable();
+  return false;
+}
+
+void AigBitblaster::storeBBAtom(TNode atom, Abc_Obj_t* atom_bb) {
+  Unreachable();
+}
+
+Abc_Obj_t* AigBitblaster::getBBAtom(TNode atom) const {
+  Unreachable();
+  return NULL;
+}
+
+AigBitblaster::Statistics::Statistics()
+  : d_numClauses("theory::bv::AigBitblaster::numClauses", 0)
+  , d_numVariables("theory::bv::AigBitblaster::numVariables", 0)
+  , d_simplificationTime("theory::bv::AigBitblaster::simplificationTime")
+  , d_cnfConversionTime("theory::bv::AigBitblaster::cnfConversionTime")
+  , d_solveTime("theory::bv::AigBitblaster::solveTime")
+{}
+
+AigBitblaster::Statistics::~Statistics() {}
+
+AigBitblaster::AigBitblaster() {
+  Unreachable();
+}
+#endif // CVC4_USE_ABC
diff --git a/src/theory/bv/bitblast_strategies_template.h b/src/theory/bv/bitblast_strategies_template.h
new file mode 100644
index 0000000..3a91069
--- /dev/null
+++ b/src/theory/bv/bitblast_strategies_template.h
@@ -0,0 +1,870 @@
+/*********************                                                        */
+/*! \file bitblast_strategies_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of bitblasting functions for various operators. 
+ **
+ ** Implementation of bitblasting functions for various operators. 
+ **/
+
+#ifndef __CVC4__BITBLAST__STRATEGIES_TEMPLATE_H
+#define __CVC4__BITBLAST__STRATEGIES_TEMPLATE_H
+
+#include "cvc4_private.h"
+#include "expr/node.h"
+#include "theory/bv/bitblast_utils.h"
+#include "theory/bv/theory_bv_utils.h"
+#include <ostream>
+#include <cmath>
+namespace CVC4 {
+
+namespace theory {
+namespace bv {
+
+/** 
+ * Default Atom Bitblasting strategies: 
+ * 
+ * @param node the atom to be bitblasted
+ * @param bb the bitblaster
+ */
+
+template <class T>
+T UndefinedAtomBBStrategy(TNode node, TBitblaster<T>* bb) {
+  Debug("bitvector") << "TheoryBV::Bitblaster Undefined bitblasting strategy for kind: "
+                     << node.getKind() << "\n";
+  Unreachable(); 
+}
+
+
+template <class T>
+T DefaultEqBB(TNode node, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "Bitblasting node " << node  << "\n";
+  
+  Assert(node.getKind() == kind::EQUAL);
+  std::vector<T> lhs, rhs; 
+  bb->bbTerm(node[0], lhs);
+  bb->bbTerm(node[1], rhs);
+
+  Assert(lhs.size() == rhs.size());
+
+  std::vector<T> bits_eq;
+  for (unsigned i = 0; i < lhs.size(); i++) {
+    T bit_eq = mkIff(lhs[i], rhs[i]);
+    bits_eq.push_back(bit_eq); 
+  }
+  T bv_eq = mkAnd(bits_eq);
+  return bv_eq; 
+}
+
+template <class T>
+T AdderUltBB(TNode node, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "Bitblasting node " << node  << "\n";
+  Assert(node.getKind() == kind::BITVECTOR_ULT);
+  std::vector<T> a, b;
+  bb->bbTerm(node[0], a);
+  bb->bbTerm(node[1], b);
+  Assert(a.size() == b.size());
+  
+  // a < b <=> ~ (add(a, ~b, 1).carry_out)
+  std::vector<T> not_b;
+  negateBits(b, not_b);
+  T carry = mkTrue<T>();
+  
+  for (unsigned i = 0 ; i < a.size(); ++i) {
+    carry = mkOr( mkAnd(a[i], not_b[i]),
+                  mkAnd( mkXor(a[i], not_b[i]),
+                         carry));
+  }
+  return mkNot(carry); 
+}
+
+
+template <class T>
+T DefaultUltBB(TNode node, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "Bitblasting node " << node  << "\n";
+  Assert(node.getKind() == kind::BITVECTOR_ULT);
+  std::vector<T> a, b;
+  bb->bbTerm(node[0], a);
+  bb->bbTerm(node[1], b);
+  Assert(a.size() == b.size());
+  
+  // construct bitwise comparison 
+  T res = uLessThanBB(a, b, false);
+  return res; 
+}
+
+template <class T>
+T DefaultUleBB(TNode node, TBitblaster<T>* bb){
+  Debug("bitvector-bb") << "Bitblasting node " << node  << "\n";
+  Assert(node.getKind() == kind::BITVECTOR_ULE);
+  std::vector<T> a, b;
+  
+  bb->bbTerm(node[0], a);
+  bb->bbTerm(node[1], b);
+  Assert(a.size() == b.size());
+  // construct bitwise comparison 
+  T res = uLessThanBB(a, b, true);
+  return res; 
+}
+
+template <class T>
+T DefaultUgtBB(TNode node, TBitblaster<T>* bb){
+  Debug("bitvector-bb") << "Bitblasting node " << node  << "\n";
+  // should be rewritten 
+  Unimplemented(); 
+}
+template <class T>
+T DefaultUgeBB(TNode node, TBitblaster<T>* bb){
+  Debug("bitvector-bb") << "Bitblasting node " << node  << "\n";
+  // should be rewritten 
+  Unimplemented(); 
+}
+
+template <class T>
+T DefaultSltBB(TNode node, TBitblaster<T>* bb){
+  Debug("bitvector-bb") << "Bitblasting node " << node  << "\n";
+
+  std::vector<T> a, b;
+  bb->bbTerm(node[0], a);
+  bb->bbTerm(node[1], b);
+  Assert(a.size() == b.size());
+  
+  T res = sLessThanBB(a, b, false); 
+  return res;
+}
+
+template <class T>
+T DefaultSleBB(TNode node, TBitblaster<T>* bb){
+  Debug("bitvector-bb") << "Bitblasting node " << node  << "\n";
+
+  std::vector<T> a, b;
+  bb->bbTerm(node[0], a);
+  bb->bbTerm(node[1], b);
+  Assert(a.size() == b.size());
+  
+  T res = sLessThanBB(a, b, true); 
+  return res;
+}
+ 
+template <class T>
+T DefaultSgtBB(TNode node, TBitblaster<T>* bb){
+  Debug("bitvector-bb") << "Bitblasting node " << node  << "\n";
+  // should be rewritten 
+  Unimplemented(); 
+}
+
+template <class T>
+T DefaultSgeBB(TNode node, TBitblaster<T>* bb){
+  Debug("bitvector-bb") << "Bitblasting node " << node  << "\n";
+  // should be rewritten 
+  Unimplemented(); 
+}
+
+
+/// Term bitblasting strategies 
+
+/** 
+ * Default Term Bitblasting strategies
+ * 
+ * @param node the term to be bitblasted
+ * @param bits [output parameter] bits representing the new term 
+ * @param bb the bitblaster in which the clauses are added
+ */
+template <class T>
+void UndefinedTermBBStrategy(TNode node, std::vector<T>& bits, TBitblaster<T>* bb) {
+  Debug("bitvector") << "theory::bv:: Undefined bitblasting strategy for kind: "
+                     << node.getKind() << "\n";
+  Unreachable(); 
+}
+
+template <class T>
+void DefaultVarBB (TNode node, std::vector<T>& bits, TBitblaster<T>* bb) {
+  Assert(bits.size() == 0);
+  bb->makeVariable(node, bits);
+
+  if(Debug.isOn("bitvector-bb")) {
+    Debug("bitvector-bb") << "theory::bv::DefaultVarBB bitblasting  " << node << "\n";
+    Debug("bitvector-bb") << "                           with bits  " << toString(bits); 
+  }
+}
+
+template <class T>
+void DefaultConstBB (TNode node, std::vector<T>& bits, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "theory::bv::DefaultConstBB bitblasting " << node << "\n";
+  Assert(node.getKind() == kind::CONST_BITVECTOR);
+  Assert(bits.size() == 0);
+  
+  for (unsigned i = 0; i < utils::getSize(node); ++i) {
+    Integer bit = node.getConst<BitVector>().extract(i, i).getValue();
+    if(bit == Integer(0)){
+      bits.push_back(mkFalse<T>());
+    } else {
+      Assert (bit == Integer(1));
+      bits.push_back(mkTrue<T>()); 
+    }
+  }
+  if(Debug.isOn("bitvector-bb")) {
+    Debug("bitvector-bb") << "with  bits: " << toString(bits) << "\n"; 
+  }
+}
+
+
+template <class T>
+void DefaultNotBB (TNode node, std::vector<T>& bits, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "theory::bv::DefaultNotBB bitblasting " << node << "\n";
+  Assert(node.getKind() == kind::BITVECTOR_NOT);
+  Assert(bits.size() == 0);
+  std::vector<T> bv; 
+  bb->bbTerm(node[0], bv);
+  negateBits(bv, bits);
+}
+
+template <class T>
+void DefaultConcatBB (TNode node, std::vector<T>& bits, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "theory::bv::DefaultConcatBB bitblasting " << node << "\n";
+  Assert(bits.size() == 0);
+  
+  Assert (node.getKind() == kind::BITVECTOR_CONCAT);
+  for (int i = node.getNumChildren() -1 ; i >= 0; --i ) {
+    TNode current = node[i];
+    std::vector<T> current_bits; 
+    bb->bbTerm(current, current_bits);
+
+    for(unsigned j = 0; j < utils::getSize(current); ++j) {
+      bits.push_back(current_bits[j]);
+    }
+  }
+  Assert (bits.size() == utils::getSize(node)); 
+  if(Debug.isOn("bitvector-bb")) {
+    Debug("bitvector-bb") << "with  bits: " << toString(bits) << "\n"; 
+  }
+}
+
+template <class T>
+void DefaultAndBB (TNode node, std::vector<T>& bits, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "theory::bv::DefaultAndBB bitblasting " << node << "\n";
+  
+  Assert(node.getKind() == kind::BITVECTOR_AND &&
+         bits.size() == 0);
+
+  bb->bbTerm(node[0], bits);
+  std::vector<T> current;
+  for(unsigned j = 1; j < node.getNumChildren(); ++j) {
+    bb->bbTerm(node[j], current);
+    for (unsigned i = 0; i < utils::getSize(node); ++i) {
+      bits[i] = mkAnd(bits[i], current[i]);
+    }
+    current.clear();
+  }
+  Assert (bits.size() == utils::getSize(node));
+}
+
+template <class T>
+void DefaultOrBB (TNode node, std::vector<T>& bits, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "theory::bv::DefaultOrBB bitblasting " << node << "\n";
+
+  Assert(node.getKind() == kind::BITVECTOR_OR &&
+         bits.size() == 0);
+
+  bb->bbTerm(node[0], bits);
+  std::vector<T> current;
+  for(unsigned j = 1; j < node.getNumChildren(); ++j) {
+    bb->bbTerm(node[j], current);
+    for (unsigned i = 0; i < utils::getSize(node); ++i) {
+      bits[i] = mkOr(bits[i], current[i]);
+    }
+    current.clear();
+  }
+  Assert (bits.size() == utils::getSize(node));
+}
+
+template <class T>
+void DefaultXorBB (TNode node, std::vector<T>& bits, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "theory::bv::DefaultXorBB bitblasting " << node << "\n";
+
+  Assert(node.getKind() == kind::BITVECTOR_XOR &&
+         bits.size() == 0);
+
+  bb->bbTerm(node[0], bits);
+  std::vector<T> current;
+  for(unsigned j = 1; j < node.getNumChildren(); ++j) {
+    bb->bbTerm(node[j], current);
+    for (unsigned i = 0; i < utils::getSize(node); ++i) {
+      bits[i] = mkXor(bits[i], current[i]);
+    }
+    current.clear();
+  }
+  Assert (bits.size() == utils::getSize(node));
+}
+
+template <class T>
+void DefaultXnorBB (TNode node, std::vector<T>& bits, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "theory::bv::DefaultXnorBB bitblasting " << node << "\n";
+
+  Assert(node.getNumChildren() == 2 &&
+         node.getKind() == kind::BITVECTOR_XNOR &&
+         bits.size() == 0);
+  std::vector<T> lhs, rhs;
+  bb->bbTerm(node[0], lhs);
+  bb->bbTerm(node[1], rhs);
+  Assert(lhs.size() == rhs.size()); 
+  
+  for (unsigned i = 0; i < lhs.size(); ++i) {
+    bits.push_back(mkIff(lhs[i], rhs[i])); 
+  }
+}
+
+
+template <class T>
+void DefaultNandBB (TNode node, std::vector<T>& bits, TBitblaster<T>* bb) {
+  Debug("bitvector") << "theory::bv:: Unimplemented kind "
+                     << node.getKind() << "\n";
+  Unimplemented(); 
+}
+template <class T>
+void DefaultNorBB (TNode node, std::vector<T>& bits, TBitblaster<T>* bb) {
+  Debug("bitvector") << "theory::bv:: Unimplemented kind "
+                     << node.getKind() << "\n";
+  Unimplemented(); 
+}
+template <class T>
+void DefaultCompBB (TNode node, std::vector<T>& bits, TBitblaster<T>* bb) {
+  Debug("bitvector") << "theory::bv:: DefaultCompBB bitblasting "<< node << "\n";
+
+  Assert(utils::getSize(node) == 1 && bits.size() == 0 && node.getKind() == kind::BITVECTOR_COMP);
+  std::vector<T> a, b;
+  bb->bbTerm(node[0], a);
+  bb->bbTerm(node[1], b);
+
+  std::vector<T> bit_eqs;
+  for (unsigned i = 0; i < a.size(); ++i) {
+    T eq = mkIff(a[i], b[i]);
+    bit_eqs.push_back(eq); 
+  }
+  T a_eq_b = mkAnd(bit_eqs);
+  bits.push_back(a_eq_b);   
+}
+
+template <class T>
+void DefaultMultBB (TNode node, std::vector<T>& res, TBitblaster<T>* bb) {
+  Debug("bitvector") << "theory::bv:: DefaultMultBB bitblasting "<< node << "\n";
+  Assert(res.size() == 0 &&
+         node.getKind() == kind::BITVECTOR_MULT);
+
+  // if (node.getNumChildren() == 2) {
+  //   std::vector<T> a;
+  //   std::vector<T> b;
+  //   bb->bbTerm(node[0], a);
+  //   bb->bbTerm(node[1], b);
+  //   unsigned bw = utils::getSize(node);
+  //   unsigned thresh = bw % 2 ? bw/2 : bw/2 - 1;
+  //   bool no_overflow = true; 
+  //   for (unsigned i = thresh; i < bw; ++i) {
+  //     if (a[i] != mkFalse<T> || b[i] != mkFalse<T> ) {
+  //       no_overflow = false; 
+  //     }
+  //   }
+  //   if (no_overflow) {
+  //     shiftAddMultiplier(); 
+  //     return; 
+  //   }
+    
+  // }
+  
+  std::vector<T> newres; 
+  bb->bbTerm(node[0], res); 
+  for(unsigned i = 1; i < node.getNumChildren(); ++i) {
+    std::vector<T> current;
+    bb->bbTerm(node[i], current);
+    newres.clear(); 
+    // constructs a simple shift and add multiplier building the result
+    // in res
+    shiftAddMultiplier(res, current, newres);
+    res = newres;
+  }
+  if(Debug.isOn("bitvector-bb")) {
+    Debug("bitvector-bb") << "with bits: " << toString(res)  << "\n";
+  }
+}
+
+template <class T>
+void DefaultPlusBB (TNode node, std::vector<T>& res, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "theory::bv::DefaultPlusBB bitblasting " << node << "\n";
+  Assert(node.getKind() == kind::BITVECTOR_PLUS &&
+         res.size() == 0);
+
+  bb->bbTerm(node[0], res);
+
+  std::vector<T> newres;
+
+  for(unsigned i = 1; i < node.getNumChildren(); ++i) {
+    std::vector<T> current;
+    bb->bbTerm(node[i], current);
+    newres.clear(); 
+    rippleCarryAdder(res, current, newres, mkFalse<T>());
+    res = newres; 
+  }
+  
+  Assert(res.size() == utils::getSize(node));
+}
+
+
+template <class T>
+void DefaultSubBB (TNode node, std::vector<T>& bits, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "theory::bv::DefaultSubBB bitblasting " << node << "\n";
+  Assert(node.getKind() == kind::BITVECTOR_SUB &&
+         node.getNumChildren() == 2 &&
+         bits.size() == 0);
+    
+  std::vector<T> a, b;
+  bb->bbTerm(node[0], a);
+  bb->bbTerm(node[1], b); 
+  Assert(a.size() == b.size() && utils::getSize(node) == a.size());
+
+  // bvsub a b = adder(a, ~b, 1)
+  std::vector<T> not_b;
+  negateBits(b, not_b);
+  rippleCarryAdder(a, not_b, bits, mkTrue<T>());
+}
+
+template <class T>
+void DefaultNegBB (TNode node, std::vector<T>& bits, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "theory::bv::DefaultNegBB bitblasting " << node << "\n";
+  Assert(node.getKind() == kind::BITVECTOR_NEG);
+  
+  std::vector<T> a;
+  bb->bbTerm(node[0], a);
+  Assert(utils::getSize(node) == a.size());
+
+  // -a = add(~a, 0, 1).
+  std::vector<T> not_a;
+  negateBits(a, not_a);
+  std::vector<T> zero;
+  makeZero(zero, utils::getSize(node)); 
+  
+  rippleCarryAdder(not_a, zero, bits, mkTrue<T>()); 
+}
+
+template <class T>
+void uDivModRec(const std::vector<T>& a, const std::vector<T>& b, std::vector<T>& q, std::vector<T>& r, unsigned rec_width) {
+  Assert( q.size() == 0 && r.size() == 0);
+
+  if(rec_width == 0 || isZero(a)) {
+    makeZero(q, a.size());
+    makeZero(r, a.size());
+    return;
+  } 
+  
+  std::vector<T> q1, r1;
+  std::vector<T> a1 = a;
+  rshift(a1, 1); 
+
+  uDivModRec(a1, b, q1, r1, rec_width - 1);
+  // shift the quotient and remainder (i.e. multiply by two) and add 1 to remainder if a is odd
+  lshift(q1, 1);
+  lshift(r1, 1);
+
+  
+  T is_odd = mkIff(a[0], mkTrue<T>());
+  T one_if_odd = mkIte(is_odd, mkTrue<T>(), mkFalse<T>()); 
+
+  std::vector<T> zero;
+  makeZero(zero, b.size());
+  
+  std::vector<T> r1_shift_add;
+  // account for a being odd
+  rippleCarryAdder(r1, zero, r1_shift_add, one_if_odd); 
+  // now check if the remainder is greater than b
+  std::vector<T> not_b;
+  negateBits(b, not_b);
+  std::vector<T> r_minus_b;
+  T co1;
+  // use adder because we need r_minus_b anyway
+  co1 = rippleCarryAdder(r1_shift_add, not_b, r_minus_b, mkTrue<T>()); 
+  // sign is true if r1 < b
+  T sign = mkNot(co1); 
+  
+  q1[0] = mkIte(sign, q1[0], mkTrue<T>());
+
+  // would be nice to have a high level ITE instead of bitwise
+  for(unsigned i = 0; i < a.size(); ++i) {
+    r1_shift_add[i] = mkIte(sign, r1_shift_add[i], r_minus_b[i]); 
+  }
+
+  // check if a < b
+
+  std::vector<T> a_minus_b;
+  T co2 = rippleCarryAdder(a, not_b, a_minus_b, mkTrue<T>());
+  // Node a_lt_b = a_minus_b.back();
+  T a_lt_b = mkNot(co2); 
+  
+  for(unsigned i = 0; i < a.size(); ++i) {
+    T qval = mkIte(a_lt_b, mkFalse<T>(), q1[i]);
+    T rval = mkIte(a_lt_b, a[i], r1_shift_add[i]);
+    q.push_back(qval);
+    r.push_back(rval); 
+  }
+
+}
+
+template <class T>
+void DefaultUdivBB (TNode node, std::vector<T>& q, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "theory::bv::DefaultUdivBB bitblasting " << node << "\n";
+  Assert(node.getKind() == kind::BITVECTOR_UDIV_TOTAL &&  q.size() == 0);
+
+  std::vector<T> a, b;
+  bb->bbTerm(node[0], a);
+  bb->bbTerm(node[1], b);
+
+  std::vector<T> r;
+  uDivModRec(a, b, q, r, utils::getSize(node)); 
+  // adding a special case for division by 0
+  std::vector<T> iszero; 
+  for (unsigned i = 0; i < b.size(); ++i) {
+    iszero.push_back(mkIff(b[i], mkFalse<T>())); 
+  }
+  T b_is_0 = mkAnd(iszero); 
+  
+  for (unsigned i = 0; i < q.size(); ++i) {
+    q[i] = mkIte(b_is_0, mkTrue<T>(), q[i]); // a udiv 0 is 11..11
+    r[i] = mkIte(b_is_0, a[i], r[i]);        // a urem 0 is a
+  }
+
+  // cache the remainder in case we need it later
+  Node remainder = utils::mkNode(kind::BITVECTOR_UREM_TOTAL, node[0], node[1]);
+  bb->storeBBTerm(remainder, r);
+}
+
+template <class T>
+void DefaultUremBB (TNode node, std::vector<T>& rem, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "theory::bv::DefaultUremBB bitblasting " << node << "\n";
+  Assert(node.getKind() == kind::BITVECTOR_UREM_TOTAL &&  rem.size() == 0);
+
+  std::vector<T> a, b;
+  bb->bbTerm(node[0], a);
+  bb->bbTerm(node[1], b);
+
+  std::vector<T> q;
+  uDivModRec(a, b, q, rem, utils::getSize(node)); 
+  // adding a special case for division by 0
+  std::vector<T> iszero; 
+  for (unsigned i = 0; i < b.size(); ++i) {
+    iszero.push_back(mkIff(b[i], mkFalse<T>())); 
+  }
+  T b_is_0 = mkAnd(iszero); 
+  
+  for (unsigned i = 0; i < q.size(); ++i) {
+    q[i] = mkIte(b_is_0, mkTrue<T>(), q[i]); // a udiv 0 is 11..11
+    rem[i] = mkIte(b_is_0, a[i], rem[i]);    // a urem 0 is a
+  }
+
+  // cache the quotient in case we need it later
+  Node quotient = utils::mkNode(kind::BITVECTOR_UDIV_TOTAL, node[0], node[1]);
+  bb->storeBBTerm(quotient, q);
+}
+
+
+template <class T>
+void DefaultSdivBB (TNode node, std::vector<T>& bits, TBitblaster<T>* bb) {
+  Debug("bitvector") << "theory::bv:: Unimplemented kind "
+                     << node.getKind() << "\n";
+  Unimplemented(); 
+}
+template <class T>
+void DefaultSremBB (TNode node, std::vector<T>& bits, TBitblaster<T>* bb) {
+  Debug("bitvector") << "theory::bv:: Unimplemented kind "
+                     << node.getKind() << "\n";
+  Unimplemented(); 
+}
+template <class T>
+void DefaultSmodBB (TNode node, std::vector<T>& bits, TBitblaster<T>* bb) {
+  Debug("bitvector") << "theory::bv:: Unimplemented kind "
+                     << node.getKind() << "\n";
+  Unimplemented(); 
+}
+
+template <class T>
+void DefaultShlBB (TNode node, std::vector<T>& res, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "theory::bv::DefaultShlBB bitblasting " << node  << "\n";
+  Assert (node.getKind() == kind::BITVECTOR_SHL &&
+          res.size() == 0);
+  std::vector<T> a, b;
+  bb->bbTerm(node[0], a);
+  bb->bbTerm(node[1], b);
+
+  // check for b < log2(n)
+  unsigned size = utils::getSize(node);
+  unsigned log2_size = std::ceil(log2((double)size));
+  Node a_size = utils::mkConst(BitVector(size, size)); 
+  Node b_ult_a_size_node = utils::mkNode(kind::BITVECTOR_ULT, node[1], a_size);
+  // ensure that the inequality is bit-blasted
+  bb->bbAtom(b_ult_a_size_node); 
+  T b_ult_a_size = bb->getBBAtom(b_ult_a_size_node);
+  std::vector<T> prev_res;
+  res = a; 
+  // we only need to look at the bits bellow log2_a_size
+  for(unsigned s = 0; s < log2_size; ++s) {
+    // barrel shift stage: at each stage you can either shift by 2^s bits
+    // or leave the previous stage untouched
+    prev_res = res; 
+    unsigned threshold = pow(2, s); 
+    for(unsigned i = 0; i < a.size(); ++i) {
+      if (i < threshold) {
+        // if b[s] is true then we must have shifted by at least 2^b bits so
+        // all bits bellow 2^s will be 0, otherwise just use previous shift value
+        res[i] = mkIte(b[s], mkFalse<T>(), prev_res[i]);
+      } else {
+        // if b[s]= 0, use previous value, otherwise shift by threshold  bits
+        Assert(i >= threshold); 
+        res[i] = mkIte(b[s], prev_res[i-threshold], prev_res[i]); 
+      }
+    }
+  }
+  prev_res = res;
+  for (unsigned i = 0; i < b.size(); ++i) {
+    // this is fine  because b_ult_a_size has been bit-blasted
+    res[i] = mkIte(b_ult_a_size, prev_res[i], mkFalse<T>()); 
+  }
+  
+  if(Debug.isOn("bitvector-bb")) {
+    Debug("bitvector-bb") << "with bits: " << toString(res)  << "\n";
+  }
+}
+
+template <class T>
+void DefaultLshrBB (TNode node, std::vector<T>& res, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "theory::bv::DefaultLshrBB bitblasting " << node  << "\n";
+  Assert (node.getKind() == kind::BITVECTOR_LSHR &&
+          res.size() == 0);
+  std::vector<T> a, b;
+  bb->bbTerm(node[0], a);
+  bb->bbTerm(node[1], b);
+
+  // check for b < log2(n)
+  unsigned size = utils::getSize(node);
+  unsigned log2_size = std::ceil(log2((double)size));
+  Node a_size = utils::mkConst(BitVector(size, size)); 
+  Node b_ult_a_size_node = utils::mkNode(kind::BITVECTOR_ULT, node[1], a_size);
+  // ensure that the inequality is bit-blasted
+  bb->bbAtom(b_ult_a_size_node); 
+  T b_ult_a_size = bb->getBBAtom(b_ult_a_size_node); 
+  res = a;
+  std::vector<T> prev_res;
+  
+  for(unsigned s = 0; s < log2_size; ++s) {
+    // barrel shift stage: at each stage you can either shift by 2^s bits
+    // or leave the previous stage untouched
+    prev_res = res; 
+    int threshold = pow(2, s); 
+    for(unsigned i = 0; i < a.size(); ++i) {
+      if (i + threshold >= a.size()) {
+        // if b[s] is true then we must have shifted by at least 2^b bits so
+        // all bits above 2^s will be 0, otherwise just use previous shift value
+        res[i] = mkIte(b[s], mkFalse<T>(), prev_res[i]);
+      } else {
+        // if b[s]= 0, use previous value, otherwise shift by threshold  bits
+        Assert (i+ threshold < a.size()); 
+        res[i] = mkIte(mkNot(b[s]), prev_res[i], prev_res[i+threshold]);
+      }
+    }
+  }
+  
+  prev_res = res;
+  for (unsigned i = 0; i < b.size(); ++i) {
+    // this is fine  because b_ult_a_size has been bit-blasted
+    res[i] = mkIte(b_ult_a_size, prev_res[i], mkFalse<T>()); 
+  }
+
+  if(Debug.isOn("bitvector-bb")) {
+    Debug("bitvector-bb") << "with bits: " << toString(res)  << "\n";
+  }
+}
+
+template <class T>
+void DefaultAshrBB (TNode node, std::vector<T>& res, TBitblaster<T>* bb) {
+
+  Debug("bitvector-bb") << "theory::bv::DefaultAshrBB bitblasting " << node  << "\n";
+  Assert (node.getKind() == kind::BITVECTOR_ASHR &&
+          res.size() == 0);
+  std::vector<T> a, b;
+  bb->bbTerm(node[0], a);
+  bb->bbTerm(node[1], b);
+
+  //   check for b < n
+  unsigned size = utils::getSize(node);
+  unsigned log2_size = std::ceil(log2((double)size));
+  Node a_size = utils::mkConst(BitVector(size, size)); 
+  Node b_ult_a_size_node = utils::mkNode(kind::BITVECTOR_ULT, node[1], a_size);
+  // ensure that the inequality is bit-blasted
+  bb->bbAtom(b_ult_a_size_node); 
+  T b_ult_a_size = bb->getBBAtom(b_ult_a_size_node);
+  
+  res = a;
+  T sign_bit = a.back();
+  std::vector<T> prev_res;
+
+  for(unsigned s = 0; s < log2_size; ++s) {
+    // barrel shift stage: at each stage you can either shift by 2^s bits
+    // or leave the previous stage untouched
+    prev_res = res; 
+    int threshold = pow(2, s); 
+    for(unsigned i = 0; i < a.size(); ++i) {
+      if (i + threshold >= a.size()) {
+        // if b[s] is true then we must have shifted by at least 2^b bits so
+        // all bits above 2^s will be the sign bit, otherwise just use previous shift value
+        res[i] = mkIte(b[s], sign_bit, prev_res[i]);
+      } else {
+        // if b[s]= 0, use previous value, otherwise shift by threshold  bits
+        Assert (i+ threshold < a.size()); 
+        res[i] = mkIte(mkNot(b[s]), prev_res[i], prev_res[i+threshold]);
+      }
+    }
+  }
+
+  prev_res = res;
+  for (unsigned i = 0; i < b.size(); ++i) {
+    // this is fine  because b_ult_a_size has been bit-blasted
+    res[i] = mkIte(b_ult_a_size, prev_res[i], sign_bit); 
+  }
+
+  if(Debug.isOn("bitvector-bb")) {
+    Debug("bitvector-bb") << "with bits: " << toString(res)  << "\n";
+  }
+}
+
+template <class T>
+void DefaultUltbvBB (TNode node, std::vector<T>& res, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "Bitblasting node " << node  << "\n";
+  Assert(node.getKind() == kind::BITVECTOR_ULTBV);
+  std::vector<T> a, b;
+  bb->bbTerm(node[0], a);
+  bb->bbTerm(node[1], b);
+  Assert(a.size() == b.size());
+  
+  // construct bitwise comparison 
+  res.push_back(uLessThanBB(a, b, false));
+}
+
+template <class T>
+void DefaultSltbvBB (TNode node, std::vector<T>& res, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "Bitblasting node " << node  << "\n";
+  Assert(node.getKind() == kind::BITVECTOR_SLTBV);
+  std::vector<T> a, b;
+  bb->bbTerm(node[0], a);
+  bb->bbTerm(node[1], b);
+  Assert(a.size() == b.size());
+  
+  // construct bitwise comparison 
+  res.push_back(sLessThanBB(a, b, false));
+}
+
+template <class T>
+void DefaultIteBB (TNode node, std::vector<T>& res, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "Bitblasting node " << node  << "\n";
+  Assert(node.getKind() == kind::BITVECTOR_ITE);
+  std::vector<T> cond, thenpart, elsepart;
+  bb->bbTerm(node[0], cond);
+  bb->bbTerm(node[1], thenpart);
+  bb->bbTerm(node[2], elsepart);
+  
+  Assert(cond.size() == 1);
+  Assert(thenpart.size() == elsepart.size());
+
+  for (unsigned i = 0; i < thenpart.size(); ++i) {
+    // (~cond OR thenpart) AND (cond OR elsepart)
+    res.push_back(mkAnd(mkOr(mkNot(cond[0]),thenpart[i]),mkOr(cond[0],elsepart[i])));
+  }
+}
+
+template <class T>
+void DefaultExtractBB (TNode node, std::vector<T>& bits, TBitblaster<T>* bb) {
+  Assert (node.getKind() == kind::BITVECTOR_EXTRACT);
+  Assert(bits.size() == 0);
+  
+  std::vector<T> base_bits;
+  bb->bbTerm(node[0], base_bits);
+  unsigned high = utils::getExtractHigh(node);
+  unsigned low  = utils::getExtractLow(node);
+
+  for (unsigned i = low; i <= high; ++i) {
+    bits.push_back(base_bits[i]); 
+  }
+  Assert (bits.size() == high - low + 1);   
+
+  if(Debug.isOn("bitvector-bb")) {
+    Debug("bitvector-bb") << "theory::bv::DefaultExtractBB bitblasting " << node << "\n";
+    Debug("bitvector-bb") << "                               with bits " << toString(bits); 
+  }
+}
+
+
+template <class T>
+void DefaultRepeatBB (TNode node, std::vector<T>& bits, TBitblaster<T>* bb) {
+  Debug("bitvector") << "theory::bv:: Unimplemented kind "
+                     << node.getKind() << "\n";
+  // this should be rewritten 
+  Unimplemented(); 
+}
+
+template <class T>
+void DefaultZeroExtendBB (TNode node, std::vector<T>& res_bits, TBitblaster<T>* bb) {
+
+  Debug("bitvector-bb") << "theory::bv::DefaultZeroExtendBB bitblasting " << node  << "\n";
+ 
+  // this should be rewritten 
+  Unimplemented();
+  
+}
+
+template <class T>
+void DefaultSignExtendBB (TNode node, std::vector<T>& res_bits, TBitblaster<T>* bb) {
+  Debug("bitvector-bb") << "theory::bv::DefaultSignExtendBB bitblasting " << node  << "\n";
+
+  Assert (node.getKind() == kind::BITVECTOR_SIGN_EXTEND &&
+          res_bits.size() == 0);
+
+  std::vector<T> bits;
+  bb->bbTerm(node[0], bits);
+  
+  T sign_bit = bits.back(); 
+  unsigned amount = node.getOperator().getConst<BitVectorSignExtend>().signExtendAmount; 
+
+  for (unsigned i = 0; i < bits.size(); ++i ) {
+    res_bits.push_back(bits[i]); 
+  }
+         
+  for (unsigned i = 0 ; i < amount ; ++i ) {
+    res_bits.push_back(sign_bit); 
+  }
+         
+  Assert (res_bits.size() == amount + bits.size()); 
+}
+
+template <class T>
+void DefaultRotateRightBB (TNode node, std::vector<T>& res, TBitblaster<T>* bb) {
+  Debug("bitvector") << "theory::bv:: Unimplemented kind "
+                     << node.getKind() << "\n";
+
+  Unimplemented(); 
+}
+
+template <class T>
+void DefaultRotateLeftBB (TNode node, std::vector<T>& bits, TBitblaster<T>* bb) {
+  Debug("bitvector") << "theory::bv:: Unimplemented kind "
+                     << node.getKind() << "\n";
+  Unimplemented(); 
+}
+
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/bv/bitblast_utils.h b/src/theory/bv/bitblast_utils.h
new file mode 100644
index 0000000..baa85f6
--- /dev/null
+++ b/src/theory/bv/bitblast_utils.h
@@ -0,0 +1,283 @@
+/*********************                                                        */
+/*! \file bitblast_utils.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Various utility functions for bit-blasting.
+ **
+ ** Various utility functions for bit-blasting.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__BITBLAST__UTILS_H
+#define __CVC4__BITBLAST__UTILS_H
+
+
+#include <ostream>
+#include "expr/node.h"
+
+#ifdef CVC4_USE_ABC
+#include "base/main/main.h"
+#include "base/abc/abc.h"
+
+extern "C" {
+#include "sat/cnf/cnf.h"
+}
+#endif
+
+namespace CVC4 {
+
+namespace theory {
+namespace bv {
+
+template <class T> class TBitblaster;
+
+template <class T> 
+std::string toString (const std::vector<T>& bits);
+
+template <> inline
+std::string toString<Node> (const std::vector<Node>& bits) {
+  std::ostringstream os;
+  for (int i = bits.size() - 1; i >= 0; --i) {
+    TNode bit = bits[i];
+    if (bit.getKind() == kind::CONST_BOOLEAN) {
+      os << (bit.getConst<bool>() ? "1" : "0");
+    } else {
+      os << bit<< " ";
+    }
+  }
+  os <<"\n";
+  return os.str();
+} 
+
+template <class T> T mkTrue(); 
+template <class T> T mkFalse(); 
+template <class T> T mkNot(T a);
+template <class T> T mkOr(T a, T b);
+template <class T> T mkOr(const std::vector<T>& a);
+template <class T> T mkAnd(T a, T b);
+template <class T> T mkAnd(const std::vector<T>& a);
+template <class T> T mkXor(T a, T b);
+template <class T> T mkIff(T a, T b);
+template <class T> T mkIte(T cond, T a, T b);
+
+
+template <> inline
+Node mkTrue<Node>() {
+  return NodeManager::currentNM()->mkConst<bool>(true);
+}
+
+template <> inline
+Node mkFalse<Node>() {
+  return NodeManager::currentNM()->mkConst<bool>(false);
+}
+
+template <> inline
+Node mkNot<Node>(Node a) {
+  return NodeManager::currentNM()->mkNode(kind::NOT, a);
+}
+
+template <> inline
+Node mkOr<Node>(Node a, Node b) {
+  return NodeManager::currentNM()->mkNode(kind::OR, a, b);
+}
+
+template <> inline
+Node mkOr<Node>(const std::vector<Node>& children) {
+  Assert (children.size());
+  if (children.size() == 1)
+    return children[0]; 
+  return NodeManager::currentNM()->mkNode(kind::OR, children); 
+}
+
+
+template <> inline
+Node mkAnd<Node>(Node a, Node b) {
+  return NodeManager::currentNM()->mkNode(kind::AND, a, b);
+}
+
+template <> inline
+Node mkAnd<Node>(const std::vector<Node>& children) {
+  Assert (children.size());
+  if (children.size() == 1)
+    return children[0]; 
+  return NodeManager::currentNM()->mkNode(kind::AND, children); 
+}
+
+
+template <> inline
+Node mkXor<Node>(Node a, Node b) {
+  return NodeManager::currentNM()->mkNode(kind::XOR, a, b);
+}
+
+template <> inline
+Node mkIff<Node>(Node a, Node b) {
+  return NodeManager::currentNM()->mkNode(kind::EQUAL, a, b);
+}
+
+template <> inline
+Node mkIte<Node>(Node cond, Node a, Node b) {
+  return NodeManager::currentNM()->mkNode(kind::ITE, cond, a, b);
+}
+
+/*
+ Various helper functions that get called by the bitblasting procedures
+ */
+
+template <class T>
+void inline extractBits(const std::vector<T>& b, std::vector<T>& dest, unsigned lo, unsigned hi) {
+  Assert ( lo < b.size() && hi < b.size() && lo <= hi);
+  for (unsigned i = lo; i <= hi; ++i) {
+    dest.push_back(b[i]); 
+  }
+}
+
+template <class T>
+void inline negateBits(const std::vector<T>& bits, std::vector<T>& negated_bits) {
+  for(unsigned i = 0; i < bits.size(); ++i) {
+    negated_bits.push_back(mkNot(bits[i])); 
+  }
+}
+
+template <class T>
+bool inline isZero(const std::vector<T>& bits) {
+  for(unsigned i = 0; i < bits.size(); ++i) {
+    if(bits[i] != mkFalse<T>()) {
+      return false; 
+    }
+  }
+  return true; 
+}
+
+template <class T>
+void inline rshift(std::vector<T>& bits, unsigned amount) {
+  for (unsigned i = 0; i < bits.size() - amount; ++i) {
+    bits[i] = bits[i+amount]; 
+  }
+  for(unsigned i = bits.size() - amount; i < bits.size(); ++i) {
+    bits[i] = mkFalse<T>(); 
+  }
+}
+
+template <class T>
+void inline lshift(std::vector<T>& bits, unsigned amount) {
+  for (int i = (int)bits.size() - 1; i >= (int)amount ; --i) {
+    bits[i] = bits[i-amount]; 
+  }
+  for(unsigned i = 0; i < amount; ++i) {
+    bits[i] = mkFalse<T>(); 
+  }
+}
+
+template <class T>
+void inline makeZero(std::vector<T>& bits, unsigned width) {
+  Assert(bits.size() == 0); 
+  for(unsigned i = 0; i < width; ++i) {
+    bits.push_back(mkFalse<T>()); 
+  }
+}
+
+
+/** 
+ * Constructs a simple ripple carry adder
+ * 
+ * @param a first term to be added
+ * @param b second term to be added
+ * @param res the result
+ * @param carry the carry-in bit 
+ * 
+ * @return the carry-out
+ */
+template <class T>
+T inline rippleCarryAdder(const std::vector<T>&a, const std::vector<T>& b, std::vector<T>& res, T carry) {
+  Assert(a.size() == b.size() && res.size() == 0);
+  
+  for (unsigned i = 0 ; i < a.size(); ++i) {
+    T sum = mkXor(mkXor(a[i], b[i]), carry);
+    carry = mkOr( mkAnd(a[i], b[i]),
+                  mkAnd( mkXor(a[i], b[i]),
+                         carry));
+    res.push_back(sum); 
+  }
+
+  return carry;
+}
+
+template <class T>
+inline void shiftAddMultiplier(const std::vector<T>&a, const std::vector<T>&b, std::vector<T>& res) {
+  
+  for (unsigned i = 0; i < a.size(); ++i) {
+    res.push_back(mkAnd(b[0], a[i])); 
+  }
+  
+  for(unsigned k = 1; k < res.size(); ++k) {
+  T carry_in = mkFalse<T>();
+  T carry_out;
+    for(unsigned j = 0; j < res.size() -k; ++j) {
+      T aj = mkAnd(b[k], a[j]);
+      carry_out = mkOr(mkAnd(res[j+k], aj),
+                       mkAnd( mkXor(res[j+k], aj), carry_in));
+      res[j+k] = mkXor(mkXor(res[j+k], aj), carry_in);
+      carry_in = carry_out; 
+    }
+  }
+}
+
+template <class T>
+T inline uLessThanBB(const std::vector<T>&a, const std::vector<T>& b, bool orEqual) {
+  Assert (a.size() && b.size());
+  
+  T res = mkAnd(mkNot(a[0]), b[0]);
+  
+  if(orEqual) {
+    res = mkOr(res, mkIff(a[0], b[0])); 
+  }
+  
+  for (unsigned i = 1; i < a.size(); ++i) {
+    // a < b iff ( a[i] <-> b[i] AND a[i-1:0] < b[i-1:0]) OR (~a[i] AND b[i]) 
+    res = mkOr(mkAnd(mkIff(a[i], b[i]), res),
+               mkAnd(mkNot(a[i]), b[i])); 
+  }
+  return res;
+}
+
+template <class T>
+T inline sLessThanBB(const std::vector<T>&a, const std::vector<T>& b, bool orEqual) {
+  Assert (a.size() && b.size());
+  if (a.size() == 1) {
+    if(orEqual) {
+      return  mkOr(mkIff(a[0], b[0]),
+                   mkAnd(a[0], mkNot(b[0]))); 
+    }
+
+    return mkAnd(a[0], mkNot(b[0]));
+  }
+  unsigned n = a.size() - 1; 
+  std::vector<T> a1, b1;
+  extractBits(a, a1, 0, n-1);
+  extractBits(b, b1, 0, n-1);
+  
+  // unsigned comparison of the first n-1 bits
+  T ures = uLessThanBB(a1, b1, orEqual);
+  T res = mkOr(// a b have the same sign
+               mkAnd(mkIff(a[n], b[n]),
+                     ures),
+               // a is negative and b positive
+               mkAnd(a[n],
+                     mkNot(b[n])));
+  return res;
+}
+
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/bv/bitblaster_template.h b/src/theory/bv/bitblaster_template.h
new file mode 100644
index 0000000..aa5ae9c
--- /dev/null
+++ b/src/theory/bv/bitblaster_template.h
@@ -0,0 +1,499 @@
+/*********************                                                        */
+/*! \file bitblaster_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Wrapper around the SAT solver used for bitblasting
+ **
+ ** Wrapper around the SAT solver used for bitblasting.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__BITBLASTER_TEMPLATE_H
+#define __CVC4__BITBLASTER_TEMPLATE_H
+
+#include <ext/hash_map>
+#include <vector>
+
+#include "bitblast_strategies_template.h"
+#include "context/cdhashmap.h"
+#include "expr/node.h"
+#include "prop/sat_solver.h"
+#include "theory/theory_registrar.h"
+#include "theory/valuation.h"
+#include "util/resource_manager.h"
+
+class Abc_Obj_t_;
+typedef Abc_Obj_t_ Abc_Obj_t;
+
+class Abc_Ntk_t_;
+typedef Abc_Ntk_t_ Abc_Ntk_t;
+
+class Abc_Aig_t_;
+typedef Abc_Aig_t_ Abc_Aig_t;
+
+class Cnf_Dat_t_;
+typedef Cnf_Dat_t_ Cnf_Dat_t;
+
+
+namespace CVC4 {
+namespace prop {
+class CnfStream;
+class BVSatSolverInterface;
+class NullRegistrar;
+}
+
+namespace theory {
+class OutputChannel;
+class TheoryModel;
+
+namespace bv {
+
+class BitblastingRegistrar;
+
+typedef __gnu_cxx::hash_set<Node, NodeHashFunction> NodeSet;
+typedef __gnu_cxx::hash_set<TNode, TNodeHashFunction> TNodeSet;
+
+class AbstractionModule;
+
+/**
+ * The Bitblaster that manages the mapping between Nodes
+ * and their bitwise definition
+ *
+ */
+
+template <class T>
+class TBitblaster {
+protected:
+  typedef std::vector<T> Bits;
+  typedef __gnu_cxx::hash_map <Node, Bits, NodeHashFunction>  TermDefMap;
+  typedef __gnu_cxx::hash_set<TNode, TNodeHashFunction>       TNodeSet;
+  typedef __gnu_cxx::hash_map<Node, Node, NodeHashFunction>   ModelCache;
+
+  typedef void  (*TermBBStrategy) (TNode, Bits&, TBitblaster<T>*);
+  typedef T     (*AtomBBStrategy) (TNode, TBitblaster<T>*);
+
+  // caches and mappings
+  TermDefMap d_termCache;
+  ModelCache d_modelCache;
+
+  BitVectorProof * d_bvp;
+
+  void initAtomBBStrategies();
+  void initTermBBStrategies();
+protected:
+  /// function tables for the various bitblasting strategies indexed by node kind
+  TermBBStrategy d_termBBStrategies[kind::LAST_KIND];
+  AtomBBStrategy d_atomBBStrategies[kind::LAST_KIND];
+  virtual Node getModelFromSatSolver(TNode node, bool fullModel) = 0;
+public:
+  TBitblaster();
+  virtual ~TBitblaster() {}
+  virtual void bbAtom(TNode node) = 0;
+  virtual void bbTerm(TNode node, Bits&  bits) = 0;
+  virtual void makeVariable(TNode node, Bits& bits) = 0;
+  virtual T getBBAtom(TNode atom) const = 0;
+  virtual bool hasBBAtom(TNode atom) const = 0;
+  virtual void storeBBAtom(TNode atom, T atom_bb) = 0;
+
+
+  bool hasBBTerm(TNode node) const;
+  void getBBTerm(TNode node, Bits& bits) const;
+  virtual void storeBBTerm(TNode term, const Bits& bits);
+  /**
+   * Return a constant representing the value of a in the  model.
+   * If fullModel is true set unconstrained bits to 0. If not return
+   * NullNode() for a fully or partially unconstrained.
+   *
+   */
+  Node getTermModel(TNode node, bool fullModel);
+  void invalidateModelCache();
+};
+
+
+class TheoryBV;
+
+class TLazyBitblaster :  public TBitblaster<Node> {
+  typedef std::vector<Node> Bits;
+  typedef context::CDList<prop::SatLiteral> AssertionList;
+  typedef context::CDHashMap<prop::SatLiteral, std::vector<prop::SatLiteral> , prop::SatLiteralHashFunction> ExplanationMap;
+  /** This class gets callbacks from minisat on propagations */
+  class MinisatNotify : public prop::BVSatSolverInterface::Notify {
+    prop::CnfStream* d_cnf;
+    TheoryBV *d_bv;
+    TLazyBitblaster* d_lazyBB;
+  public:
+    MinisatNotify(prop::CnfStream* cnf, TheoryBV *bv, TLazyBitblaster* lbv)
+    : d_cnf(cnf)
+    , d_bv(bv)
+    , d_lazyBB(lbv)
+    {}
+
+    bool notify(prop::SatLiteral lit);
+    void notify(prop::SatClause& clause);
+    void spendResource(unsigned ammount);
+    void safePoint(unsigned ammount);
+  };
+
+  TheoryBV *d_bv;
+  context::Context* d_ctx;
+
+  prop::NullRegistrar* d_nullRegistrar;
+  context::Context* d_nullContext;
+  // sat solver used for bitblasting and associated CnfStream
+  prop::BVSatSolverInterface*         d_satSolver;
+  prop::BVSatSolverInterface::Notify* d_satSolverNotify;
+  prop::CnfStream*                    d_cnfStream;
+
+  AssertionList* d_assertedAtoms; /**< context dependent list storing the atoms
+                                     currently asserted by the DPLL SAT solver. */
+  ExplanationMap* d_explanations; /**< context dependent list of explanations for the propagated literals.
+                                    Only used when bvEagerPropagate option enabled. */
+  TNodeSet d_variables;
+  TNodeSet d_bbAtoms;
+  AbstractionModule* d_abstraction;
+  bool d_emptyNotify;
+
+  context::CDO<bool> d_satSolverFullModel;
+
+  void addAtom(TNode atom);
+  bool hasValue(TNode a);
+  Node getModelFromSatSolver(TNode a, bool fullModel);
+
+public:
+  void bbTerm(TNode node, Bits&  bits);
+  void bbAtom(TNode node);
+  Node getBBAtom(TNode atom) const;
+  void storeBBAtom(TNode atom, Node atom_bb);
+  void storeBBTerm(TNode node, const Bits& bits);
+  bool hasBBAtom(TNode atom) const; 
+
+  TLazyBitblaster(context::Context* c, bv::TheoryBV* bv, const std::string name="", bool emptyNotify = false);
+  ~TLazyBitblaster() throw();
+  /**
+   * Pushes the assumption literal associated with node to the SAT
+   * solver assumption queue. 
+   * 
+   * @param node assumption
+   * @param propagate run bcp or not
+   * 
+   * @return false if a conflict detected
+   */
+  bool assertToSat(TNode node, bool propagate = true);
+  bool propagate();
+  bool solve();
+  prop::SatValue solveWithBudget(unsigned long conflict_budget);
+  void getConflict(std::vector<TNode>& conflict);
+  void explain(TNode atom, std::vector<TNode>& explanation);
+  void setAbstraction(AbstractionModule* abs);
+  
+  theory::EqualityStatus getEqualityStatus(TNode a, TNode b);
+
+  /**
+   * Adds a constant value for each bit-blasted variable in the model.
+   *
+   * @param m the model
+   * @param fullModel whether to create a "full model," i.e., add
+   * constants to equivalence classes that don't already have them
+   */
+  void collectModelInfo(TheoryModel* m, bool fullModel);
+  void setProofLog( BitVectorProof * bvp );
+
+  typedef TNodeSet::const_iterator vars_iterator;
+  vars_iterator beginVars() { return d_variables.begin(); }
+  vars_iterator endVars() { return d_variables.end(); }
+
+  /**
+   * Creates the bits corresponding to the variable (or non-bv term). 
+   *
+   * @param var
+   */
+  void makeVariable(TNode var, Bits& bits);
+
+  bool isSharedTerm(TNode node);
+  uint64_t computeAtomWeight(TNode node, NodeSet& seen);
+  /** 
+   * Deletes SatSolver and CnfCache, but maintains bit-blasting
+   * terms cache. 
+   * 
+   */
+  void clearSolver(); 
+private:
+
+  class Statistics {
+  public:
+    IntStat d_numTermClauses, d_numAtomClauses;
+    IntStat d_numTerms, d_numAtoms;
+    IntStat d_numExplainedPropagations;
+    IntStat d_numBitblastingPropagations;
+    TimerStat d_bitblastTimer;
+    Statistics(const std::string& name);
+    ~Statistics();
+  };
+  std::string d_name;
+public:
+  Statistics d_statistics;
+};
+
+class MinisatEmptyNotify : public prop::BVSatSolverInterface::Notify {
+public:
+  MinisatEmptyNotify() {}
+  bool notify(prop::SatLiteral lit) { return true; }
+  void notify(prop::SatClause& clause) { }
+  void spendResource(unsigned ammount) {
+    NodeManager::currentResourceManager()->spendResource(ammount);
+  }
+  void safePoint(unsigned ammount) {}
+};
+
+
+class EagerBitblaster : public TBitblaster<Node> {
+  typedef __gnu_cxx::hash_set<TNode, TNodeHashFunction> TNodeSet;
+  // sat solver used for bitblasting and associated CnfStream
+  prop::SatSolver*                   d_satSolver;
+  BitblastingRegistrar*              d_bitblastingRegistrar;
+  context::Context*                  d_nullContext;
+  prop::CnfStream*                   d_cnfStream;
+
+  theory::bv::TheoryBV* d_bv;
+  TNodeSet d_bbAtoms;
+  TNodeSet d_variables;
+
+  // This is either an MinisatEmptyNotify or NULL.
+  MinisatEmptyNotify* d_notify;
+
+  Node getModelFromSatSolver(TNode a, bool fullModel);
+  bool isSharedTerm(TNode node);
+
+public:
+  EagerBitblaster(theory::bv::TheoryBV* theory_bv);
+  ~EagerBitblaster();
+
+  void addAtom(TNode atom);
+  void makeVariable(TNode node, Bits& bits);
+  void bbTerm(TNode node, Bits&  bits);
+  void bbAtom(TNode node);
+  Node getBBAtom(TNode node) const;
+  bool hasBBAtom(TNode atom) const;
+  void bbFormula(TNode formula);
+  void storeBBAtom(TNode atom, Node atom_bb);
+  void storeBBTerm(TNode node, const Bits& bits);
+
+  bool assertToSat(TNode node, bool propagate = true);
+  bool solve();
+  void collectModelInfo(TheoryModel* m, bool fullModel);
+  void setProofLog( BitVectorProof * bvp );
+};
+
+class BitblastingRegistrar: public prop::Registrar {
+  EagerBitblaster* d_bitblaster;
+public:
+  BitblastingRegistrar(EagerBitblaster* bb)
+    : d_bitblaster(bb)
+  {}
+  void preRegister(Node n);
+}; /* class Registrar */
+
+class AigBitblaster : public TBitblaster<Abc_Obj_t*> {
+  typedef std::hash_map<TNode, Abc_Obj_t*, TNodeHashFunction > TNodeAigMap;
+  typedef std::hash_map<Node, Abc_Obj_t*, NodeHashFunction > NodeAigMap;
+  
+  static Abc_Ntk_t* abcAigNetwork;
+  context::Context* d_nullContext;
+  prop::SatSolver* d_satSolver;
+  TNodeAigMap d_aigCache;
+  NodeAigMap d_bbAtoms;
+  
+  NodeAigMap d_nodeToAigInput;
+  // the thing we are checking for sat
+  Abc_Obj_t* d_aigOutputNode;
+
+  void addAtom(TNode atom);
+  void simplifyAig();
+  void storeBBAtom(TNode atom, Abc_Obj_t* atom_bb);
+  Abc_Obj_t* getBBAtom(TNode atom) const;
+  bool hasBBAtom(TNode atom) const;
+  void cacheAig(TNode node, Abc_Obj_t* aig);
+  bool hasAig(TNode node);
+  Abc_Obj_t* getAig(TNode node);
+  Abc_Obj_t* mkInput(TNode input);
+  bool hasInput(TNode input);
+  void convertToCnfAndAssert();
+  void assertToSatSolver(Cnf_Dat_t* pCnf);
+  Node getModelFromSatSolver(TNode a, bool fullModel) { Unreachable(); }
+public:
+  AigBitblaster();
+  ~AigBitblaster();
+
+  void makeVariable(TNode node, Bits& bits);
+  void bbTerm(TNode node, Bits&  bits);
+  void bbAtom(TNode node);
+  Abc_Obj_t* bbFormula(TNode formula);
+  bool solve(TNode query); 
+  static Abc_Aig_t* currentAigM();
+  static Abc_Ntk_t* currentAigNtk();
+  
+private:
+  class Statistics {
+  public:
+    IntStat     d_numClauses;
+    IntStat     d_numVariables; 
+    TimerStat   d_simplificationTime;
+    TimerStat   d_cnfConversionTime;
+    TimerStat   d_solveTime; 
+    Statistics();
+    ~Statistics();
+  };
+
+  Statistics d_statistics;
+
+};
+
+
+// Bitblaster implementation
+
+template <class T> void TBitblaster<T>::initAtomBBStrategies() {
+  for (int i = 0 ; i < kind::LAST_KIND; ++i ) {
+    d_atomBBStrategies[i] = UndefinedAtomBBStrategy<T>;
+  }
+  /// setting default bb strategies for atoms
+  d_atomBBStrategies [ kind::EQUAL ]           = DefaultEqBB<T>;
+  d_atomBBStrategies [ kind::BITVECTOR_ULT ]   = DefaultUltBB<T>;
+  d_atomBBStrategies [ kind::BITVECTOR_ULE ]   = DefaultUleBB<T>;
+  d_atomBBStrategies [ kind::BITVECTOR_UGT ]   = DefaultUgtBB<T>;
+  d_atomBBStrategies [ kind::BITVECTOR_UGE ]   = DefaultUgeBB<T>;
+  d_atomBBStrategies [ kind::BITVECTOR_SLT ]   = DefaultSltBB<T>;
+  d_atomBBStrategies [ kind::BITVECTOR_SLE ]   = DefaultSleBB<T>;
+  d_atomBBStrategies [ kind::BITVECTOR_SGT ]   = DefaultSgtBB<T>;
+  d_atomBBStrategies [ kind::BITVECTOR_SGE ]   = DefaultSgeBB<T>;
+}
+
+template <class T> void TBitblaster<T>::initTermBBStrategies() {
+  for (int i = 0 ; i < kind::LAST_KIND; ++i ) {
+    d_termBBStrategies[i] = DefaultVarBB<T>;
+  }
+  /// setting default bb strategies for terms:
+  d_termBBStrategies [ kind::CONST_BITVECTOR ]        = DefaultConstBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_NOT ]          = DefaultNotBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_CONCAT ]       = DefaultConcatBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_AND ]          = DefaultAndBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_OR ]           = DefaultOrBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_XOR ]          = DefaultXorBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_XNOR ]         = DefaultXnorBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_NAND ]         = DefaultNandBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_NOR ]          = DefaultNorBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_COMP ]         = DefaultCompBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_MULT ]         = DefaultMultBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_PLUS ]         = DefaultPlusBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_SUB ]          = DefaultSubBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_NEG ]          = DefaultNegBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_UDIV ]         = UndefinedTermBBStrategy<T>;
+  d_termBBStrategies [ kind::BITVECTOR_UREM ]         = UndefinedTermBBStrategy<T>;
+  d_termBBStrategies [ kind::BITVECTOR_UDIV_TOTAL ]   = DefaultUdivBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_UREM_TOTAL ]   = DefaultUremBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_SDIV ]         = UndefinedTermBBStrategy<T>;
+  d_termBBStrategies [ kind::BITVECTOR_SREM ]         = UndefinedTermBBStrategy<T>;
+  d_termBBStrategies [ kind::BITVECTOR_SMOD ]         = UndefinedTermBBStrategy<T>;
+  d_termBBStrategies [ kind::BITVECTOR_SHL ]          = DefaultShlBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_LSHR ]         = DefaultLshrBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_ASHR ]         = DefaultAshrBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_ULTBV ]        = DefaultUltbvBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_SLTBV ]        = DefaultSltbvBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_ITE ]          = DefaultIteBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_EXTRACT ]      = DefaultExtractBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_REPEAT ]       = DefaultRepeatBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_ZERO_EXTEND ]  = DefaultZeroExtendBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_SIGN_EXTEND ]  = DefaultSignExtendBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_ROTATE_RIGHT ] = DefaultRotateRightBB<T>;
+  d_termBBStrategies [ kind::BITVECTOR_ROTATE_LEFT ]  = DefaultRotateLeftBB<T>;
+}
+
+template <class T>
+TBitblaster<T>::TBitblaster()
+  : d_termCache()
+  , d_modelCache()
+  , d_bvp( NULL )
+{
+  initAtomBBStrategies();
+  initTermBBStrategies(); 
+}
+
+template <class T>
+bool TBitblaster<T>::hasBBTerm(TNode node) const {
+  return d_termCache.find(node) != d_termCache.end();
+}
+template <class T>
+void TBitblaster<T>::getBBTerm(TNode node, Bits& bits) const {
+  Assert (hasBBTerm(node));
+  bits = d_termCache.find(node)->second;
+}
+
+template <class T>
+void TBitblaster<T>::storeBBTerm(TNode node, const Bits& bits) {
+  d_termCache.insert(std::make_pair(node, bits));
+}
+
+template <class T>
+void TBitblaster<T>::invalidateModelCache() {
+  d_modelCache.clear();
+}
+
+template <class T>
+Node TBitblaster<T>::getTermModel(TNode node, bool fullModel) {
+  if (d_modelCache.find(node) != d_modelCache.end())
+    return d_modelCache[node]; 
+
+  if (node.isConst())
+    return node; 
+
+  Node value = getModelFromSatSolver(node, false);
+  if (!value.isNull()) {
+    Debug("bv-equality-status")<< "TLazyBitblaster::getTermModel from SatSolver" << node <<" => " << value <<"\n";
+    d_modelCache[node] = value;
+    Assert (value.isConst()); 
+    return value;
+  }
+
+  if (Theory::isLeafOf(node, theory::THEORY_BV)) {
+    // if it is a leaf may ask for fullModel
+    value = getModelFromSatSolver(node, true); 
+    Debug("bv-equality-status")<< "TLazyBitblaster::getTermModel from VarValue" << node <<" => " << value <<"\n";
+    Assert ((fullModel && !value.isNull() && value.isConst()) || !fullModel); 
+    if (!value.isNull()) {
+      d_modelCache[node] = value;
+    }
+    return value;
+  }
+  Assert (node.getType().isBitVector());
+  
+  NodeBuilder<> nb(node.getKind());
+  if (node.getMetaKind() == kind::metakind::PARAMETERIZED) {
+    nb << node.getOperator(); 
+  }
+
+  for (unsigned i = 0; i < node.getNumChildren(); ++i) {
+    nb << getTermModel(node[i], fullModel); 
+  }
+  value = nb; 
+  value = Rewriter::rewrite(value);
+  Assert (value.isConst()); 
+  d_modelCache[node] = value;
+  Debug("bv-term-model")<< "TLazyBitblaster::getTermModel Building Value" << node <<" => " << value <<"\n";
+  return value; 
+}
+
+
+} /* bv namespace */
+
+} /* theory namespace */
+
+} /* CVC4 namespace */
+
+#endif /* __CVC4__BITBLASTER_H */
diff --git a/src/theory/bv/bv_eager_solver.cpp b/src/theory/bv/bv_eager_solver.cpp
new file mode 100644
index 0000000..cad59f5
--- /dev/null
+++ b/src/theory/bv/bv_eager_solver.cpp
@@ -0,0 +1,125 @@
+/*********************                                                        */
+/*! \file bv_eager_solver.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Eager bit-blasting solver. 
+ **
+ ** Eager bit-blasting solver.
+ **/
+
+#include "options/bv_options.h"
+#include "theory/bv/bitblaster_template.h"
+#include "proof/bitvector_proof.h"
+#include "theory/bv/bv_eager_solver.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::theory;
+using namespace CVC4::theory::bv;
+
+EagerBitblastSolver::EagerBitblastSolver(TheoryBV* bv)
+  : d_assertionSet()
+  , d_bitblaster(NULL)
+  , d_aigBitblaster(NULL)
+  , d_useAig(options::bitvectorAig())
+  , d_bv(bv)
+{}
+
+EagerBitblastSolver::~EagerBitblastSolver() {
+  if (d_useAig) {
+    Assert (d_bitblaster == NULL); 
+    delete d_aigBitblaster;
+  }
+  else {
+    Assert (d_aigBitblaster == NULL); 
+    delete d_bitblaster;
+  }
+}
+
+void EagerBitblastSolver::turnOffAig() {
+  Assert (d_aigBitblaster == NULL &&
+          d_bitblaster == NULL);
+  d_useAig = false;
+}
+
+void EagerBitblastSolver::initialize() {
+  Assert(!isInitialized());
+  if (d_useAig) {
+    d_aigBitblaster = new AigBitblaster();
+  } else {
+    d_bitblaster = new EagerBitblaster(d_bv);
+    THEORY_PROOF(
+      if( d_bvp ){
+        d_bitblaster->setProofLog( d_bvp );
+        d_bvp->setBitblaster(d_bitblaster);
+      }
+    );
+  }
+}
+
+bool EagerBitblastSolver::isInitialized() {
+  bool init = d_aigBitblaster != NULL || d_bitblaster != NULL;
+  if (init) {
+    Assert (!d_useAig || d_aigBitblaster);
+    Assert (d_useAig || d_bitblaster);
+  }
+  return init;
+}
+
+void EagerBitblastSolver::assertFormula(TNode formula) {
+  d_bv->spendResource(1);
+  Assert (isInitialized());
+  Debug("bitvector-eager") << "EagerBitblastSolver::assertFormula "<< formula <<"\n"; 
+  d_assertionSet.insert(formula);
+  //ensures all atoms are bit-blasted and converted to AIG
+  if (d_useAig) 
+    d_aigBitblaster->bbFormula(formula);
+  else
+    d_bitblaster->bbFormula(formula);
+}
+
+bool EagerBitblastSolver::checkSat() {
+  Assert (isInitialized());
+  std::vector<TNode> assertions; 
+  for (AssertionSet::const_iterator it = d_assertionSet.begin(); it != d_assertionSet.end(); ++it) {
+    assertions.push_back(*it); 
+  }
+  if (!assertions.size())
+    return true;
+  
+  if (d_useAig) {
+    Node query = utils::mkAnd(assertions); 
+    return d_aigBitblaster->solve(query);
+  }
+  
+  return d_bitblaster->solve(); 
+}
+
+bool EagerBitblastSolver::hasAssertions(const std::vector<TNode> &formulas) {
+  Assert (isInitialized());
+  if (formulas.size() != d_assertionSet.size())
+    return false; 
+  for (unsigned i = 0; i < formulas.size(); ++i) {
+    Assert (formulas[i].getKind() == kind::BITVECTOR_EAGER_ATOM);
+    TNode formula = formulas[i][0];
+    if (d_assertionSet.find(formula) == d_assertionSet.end())
+      return false; 
+  }
+  return true; 
+}
+
+void EagerBitblastSolver::collectModelInfo(TheoryModel* m, bool fullModel) {
+  AlwaysAssert(!d_useAig && d_bitblaster);
+  d_bitblaster->collectModelInfo(m, fullModel); 
+}
+
+void EagerBitblastSolver::setProofLog( BitVectorProof * bvp ) {
+  d_bvp = bvp;
+}
diff --git a/src/theory/bv/bv_eager_solver.h b/src/theory/bv/bv_eager_solver.h
new file mode 100644
index 0000000..7ac0537
--- /dev/null
+++ b/src/theory/bv/bv_eager_solver.h
@@ -0,0 +1,63 @@
+/*********************                                                        */
+/*! \file bv_eager_solver.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Eager bit-blasting solver. 
+ **
+ ** Eager bit-blasting solver.
+ **/
+
+#include "cvc4_private.h"
+#include "expr/node.h"
+#include "theory/theory_model.h"
+#include "theory/bv/theory_bv.h"
+#include <vector>
+#pragma once
+
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+class EagerBitblaster;
+class AigBitblaster;
+
+/**
+ * BitblastSolver
+ */
+class EagerBitblastSolver {
+  typedef __gnu_cxx::hash_set<TNode, TNodeHashFunction> AssertionSet;
+  AssertionSet d_assertionSet;
+  /** Bitblasters */
+  EagerBitblaster* d_bitblaster;
+  AigBitblaster* d_aigBitblaster;
+  bool d_useAig;
+
+  TheoryBV* d_bv; 
+  BitVectorProof * d_bvp;
+
+public:
+  EagerBitblastSolver(theory::bv::TheoryBV* bv);
+  ~EagerBitblastSolver();
+  bool checkSat();
+  void assertFormula(TNode formula);
+  // purely for debugging purposes
+  bool hasAssertions(const std::vector<TNode> &formulas);
+
+  void turnOffAig();
+  bool isInitialized();
+  void initialize();
+  void collectModelInfo(theory::TheoryModel* m, bool fullModel);
+  void setProofLog( BitVectorProof * bvp );
+};
+
+}
+}
+}
diff --git a/src/theory/bv/bv_inequality_graph.cpp b/src/theory/bv/bv_inequality_graph.cpp
new file mode 100644
index 0000000..f03d3a6
--- /dev/null
+++ b/src/theory/bv/bv_inequality_graph.cpp
@@ -0,0 +1,473 @@
+/*********************                                                        */
+/*! \file bv_inequality_graph.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A graph representation of the currently asserted bv inequalities. 
+ **
+ ** A graph representation of the currently asserted bv inequalities. 
+ **/
+
+#include "theory/bv/bv_inequality_graph.h"
+#include "theory/bv/theory_bv_utils.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::bv;
+using namespace CVC4::theory::bv::utils;
+
+const TermId CVC4::theory::bv::UndefinedTermId = -1; 
+const ReasonId CVC4::theory::bv::UndefinedReasonId = -1;
+const ReasonId CVC4::theory::bv::AxiomReasonId = -2;
+
+
+bool InequalityGraph::addInequality(TNode a, TNode b, bool strict, TNode reason) {
+  Debug("bv-inequality") << "InequalityGraph::addInequality " << a << " " << b << " strict: " << strict << "\n"; 
+
+  TermId id_a = registerTerm(a);
+  TermId id_b = registerTerm(b);
+  ReasonId id_reason = registerReason(reason);
+
+  Assert (!(isConst(id_a) && isConst(id_b))); 
+  BitVector a_val = getValue(id_a);
+  BitVector b_val = getValue(id_b);
+    
+  unsigned bitwidth = utils::getSize(a); 
+  BitVector diff = strict ? BitVector(bitwidth, 1u) : BitVector(bitwidth, 0u);
+
+  if (a_val + diff < a_val) {
+    // we have an overflow
+    std::vector<ReasonId> conflict;
+    conflict.push_back(id_reason);
+    computeExplanation(UndefinedTermId, id_a, conflict);
+    setConflict(conflict);
+    return false; 
+  }
+  
+  if (a_val + diff <= b_val) {
+    // the inequality is true in the current partial model
+    // we still add the edge because it may not be true later (cardinality)
+    addEdge(id_a, id_b, strict, id_reason);
+    return true;
+  }
+
+  if (isConst(id_b) && a_val + diff > b_val) {
+    // we must be in a conflict since a has the minimum value that
+    // satisifes the constraints
+    std::vector<ReasonId> conflict;
+    conflict.push_back(id_reason);
+    computeExplanation(UndefinedTermId, id_a, conflict);
+    Debug("bv-inequality") << "InequalityGraph::addInequality conflict: constant UB \n"; 
+    setConflict(conflict);
+    return false; 
+  }
+  
+  // add the inequality edge
+  addEdge(id_a, id_b, strict, id_reason);
+  BFSQueue queue(&d_modelValues);
+  Assert (hasModelValue(id_a)); 
+  queue.push(id_a);
+  return processQueue(queue, id_a); 
+}
+
+bool InequalityGraph::updateValue(TermId id, ModelValue new_mv, TermId start, bool& changed) {
+  BitVector lower_bound = new_mv.value;
+  
+  if (isConst(id)) {
+    if (getValue(id) < lower_bound) {
+      Debug("bv-inequality") << "Conflict: constant " << getValue(id) << "\n"; 
+      std::vector<ReasonId> conflict;
+      TermId parent = new_mv.parent; 
+      ReasonId reason = new_mv.reason; 
+      conflict.push_back(reason); 
+      computeExplanation(UndefinedTermId, parent, conflict);
+      Debug("bv-inequality") << "InequalityGraph::addInequality conflict: constant\n"; 
+      setConflict(conflict); 
+      return false; 
+    }
+  } else {
+    // if not constant we can try to update the value
+    if (getValue(id) < lower_bound) {
+      // if we are updating the term we started with we must be in a cycle
+      if (id == start) {
+        TermId parent = new_mv.parent;
+        ReasonId reason = new_mv.reason;
+        std::vector<TermId> conflict;
+        conflict.push_back(reason);
+        computeExplanation(id, parent, conflict);
+        Debug("bv-inequality") << "InequalityGraph::addInequality conflict: cycle \n"; 
+        setConflict(conflict); 
+        return false; 
+      }
+      Debug("bv-inequality-internal") << "Updating " << getTermNode(id) 
+                                      << "  from " << getValue(id) << "\n"
+                                      << "  to " << lower_bound << "\n";
+      changed = true;
+      setModelValue(id, new_mv); 
+    }
+  }
+  return true; 
+}
+
+bool InequalityGraph::processQueue(BFSQueue& queue, TermId start) {
+  while (!queue.empty()) {
+    TermId current = queue.top();
+    queue.pop();
+    Debug("bv-inequality-internal") << "InequalityGraph::processQueue processing " << getTermNode(current) << "\n";
+  
+    BitVector current_value = getValue(current);
+  
+    unsigned size = getBitwidth(current);
+    const BitVector zero(size, 0u); 
+    const BitVector one(size, 1u); 
+  
+    const Edges& edges = getEdges(current);
+    for (Edges::const_iterator it = edges.begin(); it!= edges.end(); ++it) {
+      TermId next = it->next;
+      ReasonId reason = it->reason;
+
+      const BitVector increment = it->strict ? one : zero; 
+      const BitVector next_lower_bound = current_value + increment;
+
+      if (next_lower_bound < current_value) {
+        // it means we have an overflow and hence a conflict
+        std::vector<TermId> conflict;
+        conflict.push_back(it->reason);
+        Assert (hasModelValue(start));
+        ReasonId start_reason = getModelValue(start).reason;
+        if (start_reason != UndefinedReasonId) {
+          conflict.push_back(start_reason);
+        }
+        computeExplanation(UndefinedTermId, current, conflict);
+        Debug("bv-inequality") << "InequalityGraph::addInequality conflict: cycle \n"; 
+        setConflict(conflict); 
+        return false; 
+      }
+      
+      ModelValue new_mv(next_lower_bound, current, reason);       
+      bool updated = false; 
+      if (!updateValue(next, new_mv, start, updated)) {
+        return false; 
+      }
+      
+      if (next == start) {
+        // we know what we didn't update start or we would have had a conflict 
+        // this means we are in a cycle where all the values are forced to be equal
+        Debug("bv-inequality-internal") << "InequalityGraph::processQueue equal cycle."; 
+        continue; 
+      }
+      
+      if (!updated) {
+        // if we didn't update current we don't need to add to the queue it's children 
+        Debug("bv-inequality-internal") << "  unchanged " << getTermNode(next) << "\n";  
+        continue; 
+      }
+
+      queue.push(next);
+      Debug("bv-inequality-internal") << "   enqueue " << getTermNode(next) << "\n"; 
+    }
+  }
+  return true; 
+}
+
+void InequalityGraph::computeExplanation(TermId from, TermId to, std::vector<ReasonId>& explanation) {
+  if(Debug.isOn("bv-inequality")) {
+    if (from == UndefinedTermId) {
+      Debug("bv-inequality") << "InequalityGraph::computeExplanation " << getTermNode(to) << "\n";
+    } else {
+      Debug("bv-inequality") << "InequalityGraph::computeExplanation " << getTermNode(from) <<" => "
+                             << getTermNode(to) << "\n";
+    }
+  }
+
+  TermIdSet seen;
+
+  while(hasReason(to) && from != to && !seen.count(to)) {
+    seen.insert(to); 
+    const ModelValue& exp = getModelValue(to);
+    Assert (exp.reason != UndefinedReasonId); 
+    explanation.push_back(exp.reason);
+    Assert (exp.parent != UndefinedTermId); 
+    to = exp.parent; 
+    Debug("bv-inequality-internal") << "  parent: " << getTermNode(to) << "\n"
+                                    << "  reason: " << getReasonNode(exp.reason) << "\n"; 
+  }
+}
+
+void InequalityGraph::addEdge(TermId a, TermId b, bool strict, TermId reason) {
+  Debug("bv-inequality-internal") << "InequalityGraph::addEdge " << getTermNode(a) << " => " << getTermNode(b) << "\n"
+                                  << " strict ? " << strict << "\n"; 
+  Edges& edges = getEdges(a);
+  InequalityEdge new_edge(b, strict, reason); 
+  edges.push_back(new_edge);
+  d_undoStack.push_back(std::make_pair(a, new_edge));
+  d_undoStackIndex = d_undoStackIndex + 1; 
+}
+
+void InequalityGraph::initializeModelValue(TNode node) {
+  TermId id = getTermId(node); 
+  Assert (!hasModelValue(id));
+  bool isConst = node.getKind() == kind::CONST_BITVECTOR;
+  unsigned size = utils::getSize(node); 
+  BitVector value = isConst? node.getConst<BitVector>() : BitVector(size, 0u); 
+  setModelValue(id, ModelValue(value, UndefinedTermId, UndefinedReasonId));
+}
+
+bool InequalityGraph::isRegistered(TNode term) const {
+  return d_termNodeToIdMap.find(term) != d_termNodeToIdMap.end(); 
+}
+
+TermId InequalityGraph::registerTerm(TNode term) {
+  if (d_termNodeToIdMap.find(term) != d_termNodeToIdMap.end()) {
+    TermId id = d_termNodeToIdMap[term];
+    if (!hasModelValue(id)) {
+      // we could have backtracked and
+      initializeModelValue(term); 
+    }
+    return id; 
+  }
+
+  // store in node mapping
+  TermId id = d_termNodes.size();
+  Debug("bv-inequality-internal") << "InequalityGraph::registerTerm " << term << " => id"<< id << "\n"; 
+  
+  d_termNodes.push_back(term);
+  d_termNodeToIdMap[term] = id;
+  
+  // create InequalityNode
+  unsigned size = utils::getSize(term);
+
+  bool isConst = term.getKind() == kind::CONST_BITVECTOR;
+  InequalityNode ineq = InequalityNode(id, size, isConst);
+
+  Assert (d_ineqNodes.size() == id); 
+  d_ineqNodes.push_back(ineq);
+  
+  Assert (d_ineqEdges.size() == id); 
+  d_ineqEdges.push_back(Edges());
+
+  initializeModelValue(term); 
+  
+  return id; 
+}
+
+ReasonId InequalityGraph::registerReason(TNode reason) {
+  if (d_reasonToIdMap.find(reason) != d_reasonToIdMap.end()) {
+    return d_reasonToIdMap[reason]; 
+  }
+  d_reasonSet.insert(reason);
+  ReasonId id = d_reasonNodes.size();
+  d_reasonNodes.push_back(reason);
+  d_reasonToIdMap[reason] = id;
+  Debug("bv-inequality-internal") << "InequalityGraph::registerReason " << reason << " => id"<< id << "\n"; 
+  return id; 
+}
+
+TNode InequalityGraph::getReasonNode(ReasonId id) const {
+  Assert (d_reasonNodes.size() > id);
+  return d_reasonNodes[id]; 
+}
+
+TNode InequalityGraph::getTermNode(TermId id) const {
+  Assert (d_termNodes.size() > id);
+  return d_termNodes[id]; 
+}
+
+TermId InequalityGraph::getTermId(TNode node) const {
+  Assert (d_termNodeToIdMap.find(node) != d_termNodeToIdMap.end());
+  return d_termNodeToIdMap.find(node)->second; 
+}
+
+void InequalityGraph::setConflict(const std::vector<ReasonId>& conflict) {
+  Assert (!d_inConflict); 
+  d_inConflict = true;
+  d_conflict.clear(); 
+  for (unsigned i = 0; i < conflict.size(); ++i) {
+    if (conflict[i] != AxiomReasonId) {
+      d_conflict.push_back(getReasonNode(conflict[i]));
+    }
+  }
+  if (Debug.isOn("bv-inequality")) {
+    Debug("bv-inequality") << "InequalityGraph::setConflict \n";
+    for (unsigned i = 0; i < d_conflict.size(); ++i) {
+      Debug("bv-inequality") << "   " << d_conflict[i] <<"\n"; 
+    }
+  }
+}
+
+void InequalityGraph::getConflict(std::vector<TNode>& conflict) {
+  for (unsigned i = 0; i < d_conflict.size(); ++i) {
+    conflict.push_back(d_conflict[i]); 
+  }
+}
+
+void InequalityGraph::setModelValue(TermId term, const ModelValue& mv) {
+  d_modelValues[term] = mv; 
+}
+
+InequalityGraph::ModelValue InequalityGraph::getModelValue(TermId term) const {
+  Assert (d_modelValues.find(term) != d_modelValues.end());
+  return (*(d_modelValues.find(term))).second; 
+}
+
+bool InequalityGraph::hasModelValue(TermId id) const {
+  return d_modelValues.find(id) != d_modelValues.end(); 
+}
+
+BitVector InequalityGraph::getValue(TermId id) const {
+  Assert (hasModelValue(id)); 
+  return (*(d_modelValues.find(id))).second.value;
+}
+
+bool InequalityGraph::hasReason(TermId id) const {
+  const ModelValue& mv = getModelValue(id);
+  return mv.reason != UndefinedReasonId; 
+}
+
+bool InequalityGraph::addDisequality(TNode a, TNode b, TNode reason) {
+  Debug("bv-inequality") << "InequalityGraph::addDisequality " << reason << "\n"; 
+  d_disequalities.push_back(reason);
+
+  if (!isRegistered(a) || !isRegistered(b)) {
+    //splitDisequality(reason);
+    return true; 
+  }
+  TermId id_a = getTermId(a);
+  TermId id_b = getTermId(b);
+  if (!hasModelValue(id_a)) {
+    initializeModelValue(a); 
+  }
+  if (!hasModelValue(id_b)) {
+    initializeModelValue(b); 
+  }
+  const BitVector val_a = getValue(id_a);
+  const BitVector val_b = getValue(id_b);
+  if (val_a == val_b) {
+    if (a.getKind() == kind::CONST_BITVECTOR) {
+      // then we know b cannot be smaller  than the assigned value so we try to make it larger
+      std::vector<ReasonId> explanation_ids; 
+      computeExplanation(UndefinedTermId, id_b, explanation_ids); 
+      std::vector<TNode> explanation_nodes;
+      explanation_nodes.push_back(reason);
+      for (unsigned i = 0; i < explanation_ids.size(); ++i) {
+        explanation_nodes.push_back(getReasonNode(explanation_ids[i])); 
+      }
+      Node explanation = utils::mkAnd(explanation_nodes);
+      d_reasonSet.insert(explanation); 
+      return addInequality(a, b, true, explanation);
+    }
+    if (b.getKind() == kind::CONST_BITVECTOR) {
+      // then we know b cannot be smaller  than the assigned value so we try to make it larger
+      std::vector<ReasonId> explanation_ids; 
+      computeExplanation(UndefinedTermId, id_a, explanation_ids); 
+      std::vector<TNode> explanation_nodes;
+      explanation_nodes.push_back(reason);
+      for (unsigned i = 0; i < explanation_ids.size(); ++i) {
+        explanation_nodes.push_back(getReasonNode(explanation_ids[i])); 
+      }
+      Node explanation = utils::mkAnd(explanation_nodes);
+      d_reasonSet.insert(explanation); 
+      return addInequality(b, a, true, explanation);
+    }
+    // if none of the terms are constants just add the lemma 
+    //splitDisequality(reason);
+  } else {
+    Debug("bv-inequality-internal") << "Disequal: " << a << " => " << val_a.toString(10) << "\n"
+                                    << "          " << b << " => " << val_b.toString(10) << "\n"; 
+  }
+  return true; 
+}
+
+// void InequalityGraph::splitDisequality(TNode diseq) {
+//   Debug("bv-inequality-internal")<<"InequalityGraph::splitDisequality " << diseq <<"\n"; 
+//   Assert (diseq.getKind() == kind::NOT && diseq[0].getKind() == kind::EQUAL);
+//   if (d_disequalitiesAlreadySplit.find(diseq) == d_disequalitiesAlreadySplit.end()) {
+//     d_disequalitiesToSplit.push_back(diseq); 
+//   }
+// }
+
+void InequalityGraph::backtrack() {
+  Debug("bv-inequality-internal") << "InequalityGraph::backtrack()\n"; 
+  int size = d_undoStack.size(); 
+  for (int i = size - 1; i >= (int)d_undoStackIndex.get(); --i) {
+    Assert (!d_undoStack.empty());
+    TermId id = d_undoStack.back().first; 
+    InequalityEdge edge = d_undoStack.back().second;
+    d_undoStack.pop_back();
+    
+    Debug("bv-inequality-internal") << " remove edge " << getTermNode(id) << " => "
+                                                       << getTermNode(edge.next) <<"\n"; 
+    Edges& edges = getEdges(id);
+    for (Edges::const_iterator it = edges.begin(); it!= edges.end(); ++it) {
+      Debug("bv-inequality-internal") << getTermNode(it->next) <<" " << it->strict << "\n"; 
+    }
+    Assert (!edges.empty());
+    Assert (edges.back() == edge);
+    edges.pop_back(); 
+  }
+}
+
+Node InequalityGraph::makeDiseqSplitLemma(TNode diseq) {
+  Assert (diseq.getKind() == kind::NOT && diseq[0].getKind() == kind::EQUAL);
+  TNode a = diseq[0][0];
+  TNode b = diseq[0][1];
+  Node a_lt_b = utils::mkNode(kind::BITVECTOR_ULT, a, b);
+  Node b_lt_a = utils::mkNode(kind::BITVECTOR_ULT, b, a);
+  Node eq = diseq[0]; 
+  Node lemma = utils::mkNode(kind::OR, a_lt_b, b_lt_a, eq);
+  return lemma; 
+}
+
+void InequalityGraph::checkDisequalities(std::vector<Node>& lemmas) {
+  for (CDQueue<TNode>::const_iterator it = d_disequalities.begin(); it != d_disequalities.end(); ++it) {
+    if (d_disequalitiesAlreadySplit.find(*it) == d_disequalitiesAlreadySplit.end()) {
+      // if we haven't already split on this disequality
+      TNode diseq = *it;
+      TermId a_id = registerTerm(diseq[0][0]);
+      TermId b_id = registerTerm(diseq[0][1]);
+      if (getValue(a_id) == getValue(b_id)) {
+        lemmas.push_back(makeDiseqSplitLemma(diseq));
+        d_disequalitiesAlreadySplit.insert(diseq);
+      }
+    }
+  }
+}
+
+bool InequalityGraph::isLessThan(TNode a, TNode b) {
+  Assert (isRegistered(a) && isRegistered(b));
+  Unimplemented(); 
+}
+
+bool InequalityGraph::hasValueInModel(TNode node) const {
+  if (isRegistered(node)) {
+    TermId id = getTermId(node);
+    return hasModelValue(id); 
+  }
+  return false; 
+}
+
+BitVector InequalityGraph::getValueInModel(TNode node) const {
+  TermId id = getTermId(node); 
+  Assert (hasModelValue(id));
+  return getValue(id); 
+}
+
+void InequalityGraph::getAllValuesInModel(std::vector<Node>& assignments) {
+  for (ModelValues::const_iterator it = d_modelValues.begin(); it != d_modelValues.end(); ++it) {
+    TermId id = (*it).first;
+    BitVector value = (*it).second.value;
+    TNode var = getTermNode(id);
+    Node constant = utils::mkConst(value);
+    Node assignment = utils::mkNode(kind::EQUAL, var, constant);
+    assignments.push_back(assignment); 
+    Debug("bitvector-model") << "   " << var <<" => " << constant << "\n"; 
+  }
+}
diff --git a/src/theory/bv/bv_inequality_graph.h b/src/theory/bv/bv_inequality_graph.h
new file mode 100644
index 0000000..72f6dbf
--- /dev/null
+++ b/src/theory/bv/bv_inequality_graph.h
@@ -0,0 +1,285 @@
+/*********************                                                        */
+/*! \file bv_inequality_graph.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Algebraic solver. 
+ **
+ ** Algebraic solver.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__BV__BV_INEQUALITY__GRAPH_H
+#define __CVC4__THEORY__BV__BV_INEQUALITY__GRAPH_H
+
+#include "context/context.h"
+#include "context/cdqueue.h"
+#include "theory/uf/equality_engine.h"
+#include "theory/theory.h"
+#include <queue>
+#include <list>
+namespace CVC4 {
+namespace theory {
+
+
+namespace bv {
+
+typedef unsigned TermId; 
+typedef unsigned ReasonId;
+extern const TermId UndefinedTermId;
+extern const ReasonId UndefinedReasonId;
+extern const ReasonId AxiomReasonId; 
+
+class InequalityGraph : public context::ContextNotifyObj{
+
+  struct InequalityEdge {
+    TermId next;
+    ReasonId reason;
+    bool strict;
+    InequalityEdge(TermId n, bool s, ReasonId r)
+      : next(n),
+        reason(r),
+        strict(s)
+    {}
+    bool operator==(const InequalityEdge& other) const {
+      return next == other.next && reason == other.reason && strict == other.strict; 
+    }
+  };
+
+  class InequalityNode {
+    TermId d_id;
+    unsigned d_bitwidth;
+    bool d_isConstant;
+  public:
+    InequalityNode(TermId id, unsigned bitwidth, bool isConst)
+      : d_id(id),
+        d_bitwidth(bitwidth),
+        d_isConstant(isConst)
+    {}
+    TermId getId() const { return d_id; }
+    unsigned getBitwidth() const { return d_bitwidth; }
+    bool isConstant() const { return d_isConstant; }
+  };
+
+  struct ModelValue {
+    TermId parent;
+    ReasonId reason;
+    BitVector value; 
+    ModelValue()
+      : parent(UndefinedTermId),
+        reason(UndefinedReasonId),
+        value(0, 0u)
+    {}
+    
+    ModelValue(const BitVector& val, TermId p, ReasonId r)
+      : parent(p),
+        reason(r),
+        value(val)
+    {}
+  };
+  
+  typedef context::CDHashMap<TermId, ModelValue> ModelValues;
+
+  struct QueueComparator {
+    const ModelValues* d_model;
+    QueueComparator(const ModelValues* model)
+      : d_model(model)
+    {}
+    bool operator() (TermId left, TermId right) const {
+      Assert (d_model->find(left) != d_model->end() &&
+              d_model->find(right) != d_model->end());
+      
+      return (*(d_model->find(left))).second.value < (*(d_model->find(right))).second.value; 
+    }
+  }; 
+
+  typedef __gnu_cxx::hash_map<TNode, ReasonId, TNodeHashFunction> ReasonToIdMap;
+  typedef __gnu_cxx::hash_map<TNode, TermId, TNodeHashFunction> TermNodeToIdMap;
+
+  typedef std::vector<InequalityEdge> Edges; 
+  typedef __gnu_cxx::hash_set<TermId> TermIdSet;
+
+  typedef std::priority_queue<TermId, std::vector<TermId>, QueueComparator> BFSQueue; 
+  typedef __gnu_cxx::hash_set<TNode, TNodeHashFunction> TNodeSet;
+  typedef __gnu_cxx::hash_set<Node, NodeHashFunction> NodeSet;
+
+  std::vector<InequalityNode> d_ineqNodes;
+  std::vector< Edges > d_ineqEdges;
+
+  // to keep the explanation nodes alive
+  NodeSet d_reasonSet; 
+  std::vector<TNode> d_reasonNodes;
+  ReasonToIdMap d_reasonToIdMap;
+  
+  std::vector<Node> d_termNodes;
+  TermNodeToIdMap d_termNodeToIdMap;
+
+  context::CDO<bool> d_inConflict;
+  std::vector<TNode> d_conflict;
+
+  ModelValues  d_modelValues;
+  void initializeModelValue(TNode node); 
+  void setModelValue(TermId term, const ModelValue& mv);
+  ModelValue getModelValue(TermId term) const;
+  bool hasModelValue(TermId id) const; 
+  bool hasReason(TermId id) const; 
+  
+  /** 
+   * Registers the term by creating its corresponding InequalityNode
+   * and adding the min <= term <= max default edges. 
+   * 
+   * @param term 
+   * 
+   * @return 
+   */
+  TermId registerTerm(TNode term);
+  TNode getTermNode(TermId id) const; 
+  TermId getTermId(TNode node) const;
+  bool isRegistered(TNode term) const; 
+  
+  ReasonId registerReason(TNode reason);
+  TNode getReasonNode(ReasonId id) const;
+  
+  
+  Edges& getEdges(TermId id) { Assert (id < d_ineqEdges.size()); return d_ineqEdges[id]; }
+  InequalityNode& getInequalityNode(TermId id) { Assert (id < d_ineqNodes.size()); return d_ineqNodes[id]; }
+  const InequalityNode& getInequalityNode(TermId id) const { Assert (id < d_ineqNodes.size()); return d_ineqNodes[id]; }
+  unsigned getBitwidth(TermId id) const { return getInequalityNode(id).getBitwidth(); }
+  bool isConst(TermId id) const { return getInequalityNode(id).isConstant(); }
+  
+  BitVector getValue(TermId id) const; 
+    
+  void addEdge(TermId a, TermId b, bool strict, TermId reason);
+  
+  void setConflict(const std::vector<ReasonId>& conflict);
+  /** 
+   * If necessary update the value in the model of the current queue element. 
+   * 
+   * @param id current queue element we are updating
+   * @param start node we started with, to detect cycles
+   * 
+   * @return 
+   */
+  bool updateValue(TermId id, ModelValue new_mv, TermId start, bool& changed);
+  /** 
+   * Update the current model starting with the start term. 
+   * 
+   * @param queue 
+   * @param start 
+   * 
+   * @return 
+   */
+  bool processQueue(BFSQueue& queue, TermId start);
+  /** 
+   * Return the reasons why from <= to. If from is undefined we just
+   * explain the current value of to. 
+   * 
+   * @param from 
+   * @param to 
+   * @param explanation 
+   */
+  void computeExplanation(TermId from, TermId to, std::vector<ReasonId>& explanation); 
+  //  void splitDisequality(TNode diseq); 
+
+  /**
+     Disequality reasoning
+   */
+  
+  /*** The currently asserted disequalities */
+  context::CDQueue<TNode> d_disequalities;
+  typedef context::CDHashSet<Node, NodeHashFunction> CDNodeSet;
+  CDNodeSet d_disequalitiesAlreadySplit; 
+  Node makeDiseqSplitLemma(TNode diseq); 
+  /** Backtracking mechanisms **/
+  std::vector<std::pair<TermId, InequalityEdge> > d_undoStack;
+  context::CDO<unsigned> d_undoStackIndex; 
+  
+  void contextNotifyPop() {
+    backtrack();
+  }
+
+  void backtrack(); 
+
+public:
+  
+  InequalityGraph(context::Context* c, context::Context* u, bool s = false)
+    : ContextNotifyObj(c), 
+      d_ineqNodes(),
+      d_ineqEdges(),
+      d_inConflict(c, false),
+      d_conflict(),
+      d_modelValues(c),
+      d_disequalities(c),
+      d_disequalitiesAlreadySplit(u),
+      d_undoStack(),
+      d_undoStackIndex(c)
+  {}
+  /** 
+   * Add a new inequality to the graph 
+   * 
+   * @param a 
+   * @param b 
+   * @param strict 
+   * @param reason 
+   * 
+   * @return 
+   */
+  bool addInequality(TNode a, TNode b, bool strict, TNode reason);
+  /** 
+   * Add a new disequality to the graph. This may lead in a lemma. 
+   * 
+   * @param a 
+   * @param b 
+   * @param reason 
+   * 
+   * @return 
+   */
+  bool addDisequality(TNode a, TNode b, TNode reason); 
+  void getConflict(std::vector<TNode>& conflict);
+  virtual ~InequalityGraph() {}
+  /** 
+   * Check that the currently asserted disequalities that have not been split on
+   * are still true in the current model. 
+   */
+  void checkDisequalities(std::vector<Node>& lemmas);
+  /** 
+   * Return true if a < b is entailed by the current set of assertions. 
+   * 
+   * @param a 
+   * @param b 
+   * 
+   * @return 
+   */
+  bool isLessThan(TNode a, TNode b);
+  /** 
+   * Returns true if the term has a value in the model (i.e. if we have seen it)
+   * 
+   * @param a 
+   * 
+   * @return 
+   */
+  bool hasValueInModel(TNode a) const;
+  /** 
+   * Return the value of a in the current model. 
+   * 
+   * @param a 
+   * 
+   * @return 
+   */
+  BitVector getValueInModel(TNode a) const;
+
+  void getAllValuesInModel(std::vector<Node>& assignments); 
+}; 
+
+}
+}
+}
+
+#endif /* __CVC4__THEORY__BV__BV_INEQUALITY__GRAPH_H */
diff --git a/src/theory/bv/bv_quick_check.cpp b/src/theory/bv/bv_quick_check.cpp
new file mode 100644
index 0000000..0a9ae81
--- /dev/null
+++ b/src/theory/bv/bv_quick_check.cpp
@@ -0,0 +1,378 @@
+/*********************                                                        */
+/*! \file bv_quick_check.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Wrapper around the SAT solver used for bitblasting.
+ **
+ ** Wrapper around the SAT solver used for bitblasting.
+ **/
+
+#include "theory/bv/bv_quick_check.h"
+
+#include "smt/smt_statistics_registry.h"
+#include "theory/bv/bitblaster_template.h"
+#include "theory/bv/theory_bv_utils.h"
+
+using namespace CVC4;
+using namespace CVC4::theory;
+using namespace CVC4::theory::bv;
+using namespace CVC4::prop;
+
+BVQuickCheck::BVQuickCheck(const std::string& name, theory::bv::TheoryBV* bv)
+  : d_ctx()
+  , d_bitblaster(new TLazyBitblaster(&d_ctx, bv, name, true))
+  , d_conflict()
+  , d_inConflict(&d_ctx, false)
+{}
+
+
+bool BVQuickCheck::inConflict() { return d_inConflict.get(); }
+
+uint64_t BVQuickCheck::computeAtomWeight(TNode node, NodeSet& seen) {
+  return d_bitblaster->computeAtomWeight(node, seen);
+}
+
+void BVQuickCheck::setConflict() {
+  Assert (!inConflict());
+  std::vector<TNode> conflict;
+  d_bitblaster->getConflict(conflict);
+  Node confl = utils::mkConjunction(conflict);
+  d_inConflict = true;
+  d_conflict = confl;
+}
+
+prop::SatValue BVQuickCheck::checkSat(std::vector<Node>& assumptions, unsigned long budget) {
+  Node conflict; 
+
+  for (unsigned i = 0; i < assumptions.size(); ++i) {
+    TNode a = assumptions[i];
+    Assert (a.getType().isBoolean());
+    d_bitblaster->bbAtom(a);
+    bool ok = d_bitblaster->assertToSat(a, false);
+    if (!ok) {
+      setConflict(); 
+      return SAT_VALUE_FALSE; 
+    }
+  }
+  
+  if (budget == 0) {
+    bool ok = d_bitblaster->propagate();
+    if (!ok) {
+      setConflict();
+      return SAT_VALUE_FALSE;
+    }
+    return SAT_VALUE_UNKNOWN; // could check if assignment is full and return SAT_VALUE_TRUE
+  }
+
+  prop::SatValue res = d_bitblaster->solveWithBudget(budget);
+  if (res == SAT_VALUE_FALSE) {
+    setConflict();
+    return res;
+  }
+  // could be unknown or could be sat
+   return res;
+}
+
+prop::SatValue BVQuickCheck::checkSat(unsigned long budget) {
+  prop::SatValue res = d_bitblaster->solveWithBudget(budget);
+  if (res == SAT_VALUE_FALSE) {
+    setConflict();
+  }
+  return res;
+}
+
+bool BVQuickCheck::addAssertion(TNode assertion) {
+  Assert (assertion.getType().isBoolean());
+  d_bitblaster->bbAtom(assertion);
+  // assert to sat solver and run bcp to detect easy conflicts
+  bool ok = d_bitblaster->assertToSat(assertion, true);
+  if (!ok) {
+    setConflict();
+  }
+  return ok;
+}
+
+
+void BVQuickCheck::push() {
+  d_ctx.push();
+}
+
+void BVQuickCheck::pop() {
+  d_ctx.pop();
+}
+
+BVQuickCheck::vars_iterator BVQuickCheck::beginVars() {
+  return d_bitblaster->beginVars(); 
+}
+BVQuickCheck::vars_iterator BVQuickCheck::endVars() {
+  return d_bitblaster->endVars(); 
+}
+
+Node BVQuickCheck::getVarValue(TNode var, bool fullModel) {
+  return d_bitblaster->getTermModel(var, fullModel); 
+}
+
+
+/** 
+ * Constructs a new sat solver which requires throwing out the atomBBCache
+ * but keeps all the termBBCache
+ * 
+ */
+void BVQuickCheck::clearSolver() {
+  popToZero();
+  d_bitblaster->clearSolver();
+}
+
+void BVQuickCheck::popToZero() {
+  while (d_ctx.getLevel() > 0) {
+    d_ctx.pop();
+  }
+}
+
+void BVQuickCheck::collectModelInfo(theory::TheoryModel* model, bool fullModel) {
+  d_bitblaster->collectModelInfo(model, fullModel);
+}
+
+BVQuickCheck::~BVQuickCheck() {
+  clearSolver();
+  delete d_bitblaster;
+}
+
+QuickXPlain::QuickXPlain(const std::string& name, BVQuickCheck* solver, unsigned long budget)
+  : d_solver(solver)
+  , d_budget(budget)
+  , d_numCalled(0)
+  , d_minRatioSum(0)
+  , d_numConflicts(0)
+  // , d_period(20)
+  // , d_thresh(0.7)
+  // , d_hardThresh(0.9)
+  , d_statistics(name)
+{}
+QuickXPlain::~QuickXPlain() {}
+
+unsigned QuickXPlain::selectUnsatCore(unsigned low, unsigned high,
+                                      std::vector<TNode>& conflict) {
+
+  Assert(!d_solver->getConflict().isNull() &&
+         d_solver->inConflict());
+  Node query_confl = d_solver->getConflict();
+
+  // conflict wasn't actually minimized
+  if (query_confl.getNumChildren() == high - low + 1) {
+    return high;
+  }
+
+  TNodeSet nodes;
+  for (unsigned i = low; i <= high; i++) {
+    nodes.insert(conflict[i]);
+  }
+  
+  unsigned write = low;
+  for (unsigned i = 0; i < query_confl.getNumChildren(); ++i) {
+    TNode current = query_confl[i];
+    // the conflict can have nodes in lower decision levels
+    if (nodes.find(current) != nodes.end()) {
+      conflict[write++] = current;
+      nodes.erase(nodes.find(current));
+    }
+  }
+  // if all of the nodes in the conflict were on a lower level
+  if (write == low) {
+    return low;
+  }
+  Assert (write != 0);
+  unsigned new_high = write - 1;
+
+  for (TNodeSet::const_iterator it = nodes.begin(); it != nodes.end(); ++it) {
+    conflict[write++] = *it;
+  }
+  Assert (write -1 == high);
+  Assert (new_high <= high);
+  
+  return new_high;
+}
+
+void QuickXPlain::minimizeConflictInternal(unsigned low, unsigned high,
+                                           std::vector<TNode>& conflict,
+                                           std::vector<TNode>& new_conflict) {
+
+  Assert (low <= high && high < conflict.size());
+  
+  if (low == high) {
+    new_conflict.push_back(conflict[low]);
+    return;
+  }
+
+  // check if top half is unsat
+  unsigned new_low = (high - low + 1)/ 2 + low;
+  d_solver->push();
+  
+  for (unsigned i = new_low; i <=high; ++i) {
+    bool ok = d_solver->addAssertion(conflict[i]);
+    if (!ok) {
+      unsigned top = selectUnsatCore(new_low, i, conflict);
+      d_solver->pop(); 
+      minimizeConflictInternal(new_low, top, conflict, new_conflict);
+      return;
+    }
+  }
+
+  SatValue res = d_solver->checkSat(d_budget);
+
+  if (res == SAT_VALUE_UNKNOWN) {
+    ++(d_statistics.d_numUnknown);
+  } else {
+    ++(d_statistics.d_numSolved);
+  }
+
+  if (res == SAT_VALUE_FALSE) {
+    unsigned top = selectUnsatCore(new_low, high, conflict);
+    d_solver->pop();
+    minimizeConflictInternal(new_low, top, conflict, new_conflict);
+    return;
+  }
+  
+  d_solver->pop();
+  unsigned new_high = new_low - 1;
+  d_solver->push();
+
+  // check bottom half
+  for (unsigned i = low; i <= new_high; ++i) {
+    bool ok = d_solver->addAssertion(conflict[i]);
+    if (!ok) {
+      unsigned top = selectUnsatCore(low, i, conflict);
+      d_solver->pop();
+      minimizeConflictInternal(low, top, conflict, new_conflict);
+      return;
+    }
+  }
+  
+  res = d_solver->checkSat(d_budget);
+
+  if (res == SAT_VALUE_UNKNOWN) {
+    ++(d_statistics.d_numUnknown);
+  } else {
+    ++(d_statistics.d_numSolved);
+  }
+
+  if (res == SAT_VALUE_FALSE) {
+    unsigned top = selectUnsatCore(low, new_high, conflict);
+    d_solver->pop();
+    minimizeConflictInternal(low, top, conflict, new_conflict);
+    return;
+  }
+
+  // conflict (probably) contains literals in both halves
+  // keep bottom half in context (no pop)
+  minimizeConflictInternal(new_low, high, conflict, new_conflict);
+  d_solver->pop();
+  d_solver->push();
+  for (unsigned i = 0; i < new_conflict.size(); ++i) {
+    bool ok = d_solver->addAssertion(new_conflict[i]);
+    if (!ok) {
+      ++(d_statistics.d_numUnknownWasUnsat);
+      d_solver->pop(); 
+      return; 
+    }
+  }
+  minimizeConflictInternal(low, new_high, conflict, new_conflict);
+  d_solver->pop();
+}
+
+
+bool QuickXPlain::useHeuristic() {
+  return true; 
+  // d_statistics.d_finalPeriod.setData(d_period);
+  // // try to minimize conflict periodically 
+  // if (d_numConflicts % d_period == 0)
+  //   return true;
+
+  // if (d_numCalled == 0) {
+  //   return true;
+  // }
+  
+  // if (d_minRatioSum / d_numCalled >= d_thresh &&
+  //     d_numCalled <= 20 ) {
+  //   return false;
+  // }
+
+  // if (d_minRatioSum / d_numCalled >= d_hardThresh) {
+  //   return false;
+  // }
+
+  // return true;
+}
+
+Node QuickXPlain::minimizeConflict(TNode confl) {
+  ++d_numConflicts;
+
+  if (!useHeuristic()) {
+    return confl;
+  }
+
+  ++d_numCalled;
+  ++(d_statistics.d_numConflictsMinimized);
+  TimerStat::CodeTimer xplainTimer(d_statistics.d_xplainTime);
+  Assert (confl.getNumChildren() > 2);
+  std::vector<TNode> conflict;
+  for (unsigned i = 0; i < confl.getNumChildren(); ++i) {
+    conflict.push_back(confl[i]);
+  }
+  d_solver->popToZero();
+  std::vector<TNode> minimized;
+  minimizeConflictInternal(0, conflict.size() - 1, conflict, minimized);
+
+  double minimization_ratio = ((double) minimized.size())/confl.getNumChildren();
+  d_minRatioSum+= minimization_ratio;
+  
+
+  // if (minimization_ratio >= d_hardThresh) {
+  //   d_period = d_period * 5; 
+  // }
+
+  // if (minimization_ratio <= d_thresh && d_period >= 40) {
+  //   d_period = d_period *0.5; 
+  // }
+
+  // if (1.5* d_statistics.d_numUnknown.getData() > d_statistics.d_numSolved.getData()) {
+  //   d_period = d_period * 2;
+  // }
+  d_statistics.d_avgMinimizationRatio.addEntry(minimization_ratio);
+  return utils::mkAnd(minimized); 
+}
+
+QuickXPlain::Statistics::Statistics(const std::string& name)
+  : d_xplainTime("theory::bv::"+name+"::QuickXplain::Time")
+  , d_numSolved("theory::bv::"+name+"::QuickXplain::NumSolved", 0)
+  , d_numUnknown("theory::bv::"+name+"::QuickXplain::NumUnknown", 0)
+  , d_numUnknownWasUnsat("theory::bv::"+name+"::QuickXplain::NumUnknownWasUnsat", 0)
+  , d_numConflictsMinimized("theory::bv::"+name+"::QuickXplain::NumConflictsMinimized", 0)
+  , d_finalPeriod("theory::bv::"+name+"::QuickXplain::FinalPeriod", 0)
+  , d_avgMinimizationRatio("theory::bv::"+name+"::QuickXplain::AvgMinRatio")
+{
+  smtStatisticsRegistry()->registerStat(&d_xplainTime);
+  smtStatisticsRegistry()->registerStat(&d_numSolved);
+  smtStatisticsRegistry()->registerStat(&d_numUnknown);
+  smtStatisticsRegistry()->registerStat(&d_numUnknownWasUnsat);
+  smtStatisticsRegistry()->registerStat(&d_numConflictsMinimized);
+  smtStatisticsRegistry()->registerStat(&d_finalPeriod);
+  smtStatisticsRegistry()->registerStat(&d_avgMinimizationRatio);
+}
+
+QuickXPlain::Statistics::~Statistics() {
+  smtStatisticsRegistry()->unregisterStat(&d_xplainTime);
+  smtStatisticsRegistry()->unregisterStat(&d_numSolved);
+  smtStatisticsRegistry()->unregisterStat(&d_numUnknown);
+  smtStatisticsRegistry()->unregisterStat(&d_numUnknownWasUnsat);
+  smtStatisticsRegistry()->unregisterStat(&d_numConflictsMinimized);
+  smtStatisticsRegistry()->unregisterStat(&d_finalPeriod);
+  smtStatisticsRegistry()->unregisterStat(&d_avgMinimizationRatio);  
+}
diff --git a/src/theory/bv/bv_quick_check.h b/src/theory/bv/bv_quick_check.h
new file mode 100644
index 0000000..96f9c24
--- /dev/null
+++ b/src/theory/bv/bv_quick_check.h
@@ -0,0 +1,175 @@
+/*********************                                                        */
+/*! \file bv_quick_check.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Sandboxed sat solver for bv quickchecks.
+ **
+ ** Sandboxed sat solver for bv quickchecks.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__BV_QUICK_CHECK_H
+#define __CVC4__BV_QUICK_CHECK_H
+
+#include <vector>
+#include <ext/hash_map>
+
+#include "context/cdo.h"
+#include "expr/node.h"
+#include "prop/sat_solver_types.h"
+#include "theory/bv/theory_bv_utils.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+
+class TheoryModel;
+
+namespace bv {
+
+class TLazyBitblaster;
+class TheoryBV;
+
+class BVQuickCheck {
+  context::Context d_ctx;
+  TLazyBitblaster* d_bitblaster;
+  Node d_conflict;
+  context::CDO<bool> d_inConflict;
+  void setConflict();
+
+public:
+  BVQuickCheck(const std::string& name, theory::bv::TheoryBV* bv);
+  ~BVQuickCheck();
+  bool inConflict();
+  Node getConflict() { return d_conflict; }
+  /** 
+   * Checks the satisfiability for a given set of assumptions.
+   * 
+   * @param assumptions literals assumed true
+   * @param budget max number of conflicts
+   * 
+   * @return 
+   */
+  prop::SatValue checkSat(std::vector<Node>& assumptions, unsigned long budget);
+  /** 
+   * Checks the satisfiability of given assertions.
+   * 
+   * @param budget max number of conflicts
+   * 
+   * @return 
+   */
+  prop::SatValue checkSat(unsigned long budget);
+  
+  /** 
+   * Convert to CNF and assert the given literal.
+   * 
+   * @param assumption bv literal
+   * 
+   * @return false if a conflict has been found via bcp.
+   */
+  bool addAssertion(TNode assumption);
+
+  void push();
+  void pop();
+  void popToZero();
+  /** 
+   * Deletes the SAT solver and CNF stream, but maintains the
+   * bit-blasting term cache. 
+   * 
+   */
+  void clearSolver(); 
+
+  /** 
+   * Computes the size of the circuit required to bit-blast
+   * atom, by not recounting the nodes in seen. 
+   * 
+   * @param node 
+   * @param seen 
+   * 
+   * @return 
+   */
+  uint64_t computeAtomWeight(TNode atom, NodeSet& seen);
+  void collectModelInfo(theory::TheoryModel* model, bool fullModel); 
+
+  typedef __gnu_cxx::hash_set<TNode, TNodeHashFunction>::const_iterator vars_iterator;
+  vars_iterator beginVars(); 
+  vars_iterator endVars(); 
+
+  Node getVarValue(TNode var, bool fullModel); 
+
+};
+
+
+class QuickXPlain {
+  struct Statistics {
+    TimerStat d_xplainTime;
+    IntStat d_numSolved;
+    IntStat d_numUnknown;
+    IntStat d_numUnknownWasUnsat;
+    IntStat d_numConflictsMinimized;
+    IntStat d_finalPeriod;
+    AverageStat d_avgMinimizationRatio;
+    Statistics(const std::string&);
+    ~Statistics();
+  };
+  BVQuickCheck* d_solver;
+  unsigned long d_budget;
+
+  // crazy heuristic variables
+  unsigned d_numCalled; // number of times called
+  double d_minRatioSum; // sum of minimization ratio for computing average min ratio  
+  unsigned d_numConflicts; // number of conflicts (including when minimization not applied)
+  // unsigned d_period; // after how many conflicts to try minimizing again
+
+  // double d_thresh; // if minimization ratio is less, increase period
+  // double d_hardThresh; // decrease period if minimization ratio is greater than this
+  
+  
+  Statistics d_statistics;
+  /** 
+   * Uses solve with assumptions unsat core feature to
+   * further minimize a conflict. The minimized conflict
+   * will be between low and the returned value in conflict.
+   * 
+   * @param low 
+   * @param high 
+   * @param conflict 
+   * 
+   * @return 
+   */
+  unsigned selectUnsatCore(unsigned low, unsigned high,
+                           std::vector<TNode>& conflict);
+  /** 
+   * Internal conflict  minimization, attempts to minimize
+   * literals in conflict between low and high and adds the
+   * result in new_conflict. 
+   * 
+   * @param low 
+   * @param high 
+   * @param conflict 
+   * @param new_conflict 
+   */
+  void minimizeConflictInternal(unsigned low, unsigned high,
+                                std::vector<TNode>& conflict,
+                                std::vector<TNode>& new_conflict);
+
+  bool useHeuristic();
+public:
+  QuickXPlain(const std::string& name, BVQuickCheck* solver, unsigned long budged = 10000);
+  ~QuickXPlain();
+  Node minimizeConflict(TNode conflict); 
+};
+
+} /* bv namespace */
+} /* theory namespace */
+} /* CVC4 namespace */
+
+#endif /* __CVC4__BV_QUICK_CHECK_H */
diff --git a/src/theory/bv/bv_subtheory.h b/src/theory/bv/bv_subtheory.h
new file mode 100644
index 0000000..3c5777a
--- /dev/null
+++ b/src/theory/bv/bv_subtheory.h
@@ -0,0 +1,116 @@
+/*********************                                                        */
+/*! \file bv_subtheory.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Dejan Jovanovic, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Interface for bit-vectors sub-solvers.
+ **
+ ** Interface for bit-vectors sub-solvers.
+ **/
+
+#ifndef __CVC4__THEORY__BV__BV_SUBTHEORY_H
+#define __CVC4__THEORY__BV__BV_SUBTHEORY_H
+
+#include "cvc4_private.h"
+#include "context/context.h"
+#include "context/cdqueue.h"
+#include "theory/uf/equality_engine.h"
+#include "theory/theory.h"
+
+namespace CVC4 {
+namespace theory {
+
+class TheoryModel;
+
+namespace bv {
+
+enum SubTheory {
+  SUB_CORE = 1,
+  SUB_BITBLAST = 2,
+  SUB_INEQUALITY = 3,
+  SUB_ALGEBRAIC = 4
+};
+
+inline std::ostream& operator << (std::ostream& out, SubTheory subtheory) {
+  switch (subtheory) {
+  case SUB_BITBLAST:
+    out << "BITBLASTER";
+    break;
+  case SUB_CORE:
+    out << "BV_CORE_SUBTHEORY";
+    break;
+  case SUB_INEQUALITY:
+    out << "BV_INEQUALITY_SUBTHEORY";
+  case SUB_ALGEBRAIC:
+    out << "BV_ALGEBRAIC_SUBTHEORY";
+  default:
+    Unreachable();
+    break;
+  }
+  return out;
+}
+
+
+// forward declaration
+class TheoryBV;
+
+typedef context::CDQueue<Node> AssertionQueue;
+/**
+ * Abstract base class for bit-vector subtheory solvers
+ *
+ */
+class SubtheorySolver {
+
+protected:
+
+  /** The context we are using */
+  context::Context* d_context;
+
+  /** The bit-vector theory */
+  TheoryBV* d_bv;
+  /** proof log */
+  BitVectorProof * d_bvp;
+  AssertionQueue d_assertionQueue;
+  context::CDO<uint32_t>  d_assertionIndex;
+public:
+
+  SubtheorySolver(context::Context* c, TheoryBV* bv) :
+    d_context(c),
+    d_bv(bv),
+    d_assertionQueue(c),
+    d_assertionIndex(c, 0)
+  {}
+  virtual ~SubtheorySolver() {}
+  virtual bool check(Theory::Effort e) = 0;
+  virtual void explain(TNode literal, std::vector<TNode>& assumptions) = 0;
+  virtual void preRegister(TNode node) {}
+  virtual void propagate(Theory::Effort e) {}
+  virtual void collectModelInfo(TheoryModel* m, bool fullModel) = 0;
+  virtual Node getModelValue(TNode var) = 0;
+  virtual bool isComplete() = 0;
+  virtual EqualityStatus getEqualityStatus(TNode a, TNode b) = 0;
+  virtual void addSharedTerm(TNode node) {}
+  bool done() { return d_assertionQueue.size() == d_assertionIndex; }
+  TNode get() {
+    Assert (!done());
+    TNode res = d_assertionQueue[d_assertionIndex];
+    d_assertionIndex = d_assertionIndex + 1;
+    return res;
+  }
+  virtual void assertFact(TNode fact) { d_assertionQueue.push_back(fact); }
+  virtual void setProofLog( BitVectorProof * bvp ) {}
+  AssertionQueue::const_iterator assertionsBegin() { return d_assertionQueue.begin(); }
+  AssertionQueue::const_iterator assertionsEnd() { return d_assertionQueue.end(); }
+};
+
+}
+}
+}
+
+#endif /* __CVC4__THEORY__BV__BV_SUBTHEORY_H */
diff --git a/src/theory/bv/bv_subtheory_algebraic.cpp b/src/theory/bv/bv_subtheory_algebraic.cpp
new file mode 100644
index 0000000..60515b2
--- /dev/null
+++ b/src/theory/bv/bv_subtheory_algebraic.cpp
@@ -0,0 +1,983 @@
+/*********************                                                        */
+/*! \file bv_subtheory_algebraic.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Algebraic solver.
+ **
+ ** Algebraic solver.
+ **/
+#include "theory/bv/bv_subtheory_algebraic.h"
+
+#include "options/bv_options.h"
+#include "smt/smt_statistics_registry.h"
+#include "smt_util/boolean_simplification.h"
+#include "theory/bv/bv_quick_check.h"
+#include "theory/bv/theory_bv.h"
+#include "theory/bv/theory_bv_utils.h"
+#include "theory/theory_model.h"
+
+
+using namespace CVC4::context;
+using namespace CVC4::prop;
+using namespace CVC4::theory::bv::utils;
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+
+bool hasExpensiveBVOperators(TNode fact);
+Node mergeExplanations(const std::vector<Node>& expls);
+Node mergeExplanations(TNode expl1, TNode expl2);
+
+
+SubstitutionEx::SubstitutionEx(theory::SubstitutionMap* modelMap)
+  : d_substitutions()
+  , d_cache()
+  , d_cacheInvalid(true)
+  , d_modelMap(modelMap)
+{}
+
+bool SubstitutionEx::addSubstitution(TNode from, TNode to, TNode reason) {
+  Debug("bv-substitution") << "SubstitutionEx::addSubstitution: "<< from
+                           <<" => "<< to << "\n" << " reason "<<reason << "\n";
+  Assert (from != to);
+  if (d_substitutions.find(from) != d_substitutions.end()) {
+    return false;
+  }
+
+  d_modelMap->addSubstitution(from, to);
+
+  d_cacheInvalid = true;
+  d_substitutions[from] = SubstitutionElement(to, reason);
+  return true;
+}
+
+Node SubstitutionEx::apply(TNode node) {
+  Debug("bv-substitution") << "SubstitutionEx::apply("<< node <<")\n";
+  if (d_cacheInvalid) {
+    d_cache.clear();
+    d_cacheInvalid = false;
+  }
+
+  SubstitutionsCache::iterator it = d_cache.find(node);
+
+  if (it != d_cache.end()) {
+    Node res = it->second.to;
+    Debug("bv-substitution") << "   =>"<< res <<"\n";
+    return res;
+  }
+
+  Node result = internalApply(node);
+  Debug("bv-substitution") << "   =>"<< result <<"\n";
+  return result;
+}
+
+Node SubstitutionEx::internalApply(TNode node) {
+  if (d_substitutions.empty())
+    return node;
+
+  vector<SubstitutionStackElement> stack;
+  stack.push_back(SubstitutionStackElement(node));
+
+  while (!stack.empty()) {
+    SubstitutionStackElement head = stack.back();
+    stack.pop_back();
+
+    TNode current = head.node;
+
+    if (hasCache(current)) {
+      continue;
+    }
+
+    // check if it has substitution
+    Substitutions::const_iterator it = d_substitutions.find(current);
+    if (it != d_substitutions.end()) {
+      vector<Node> reasons;
+      TNode to = it->second.to;
+      reasons.push_back(it->second.reason);
+      // check if the thing we subsituted to has substitutions
+      TNode res = internalApply(to);
+      // update reasons
+      reasons.push_back(getReason(to));
+      Node reason = mergeExplanations(reasons);
+      storeCache(current, res, reason);
+      continue;
+    }
+
+    // if no children then just continue
+    if(current.getNumChildren() == 0) {
+      storeCache(current, current, utils::mkTrue());
+      continue;
+    }
+
+    // children already processed
+    if (head.childrenAdded) {
+      NodeBuilder<> nb(current.getKind());
+      std::vector<Node> reasons;
+
+      if (current.getMetaKind() == kind::metakind::PARAMETERIZED) {
+        TNode op = current.getOperator();
+        Assert (hasCache(op));
+        nb << getCache(op);
+        reasons.push_back(getReason(op));
+      }
+      for (unsigned i = 0; i < current.getNumChildren(); ++i) {
+        Assert (hasCache(current[i]));
+        nb << getCache(current[i]);
+        reasons.push_back(getReason(current[i]));
+      }
+      Node result = nb;
+      // if the node is new apply substitutions to it
+      Node subst_result = result;
+      if (result != current) {
+        subst_result = result!= current? internalApply(result) : result;
+        reasons.push_back(getReason(result));
+      }
+      Node reason = mergeExplanations(reasons);
+      storeCache(current, subst_result, reason);
+      continue;
+    } else {
+      // add children to stack
+      stack.push_back(SubstitutionStackElement(current, true));
+      if (current.getMetaKind() == kind::metakind::PARAMETERIZED) {
+        stack.push_back(SubstitutionStackElement(current.getOperator()));
+      }
+      for (unsigned i = 0; i < current.getNumChildren(); ++i) {
+        stack.push_back(SubstitutionStackElement(current[i]));
+      }
+    }
+  }
+
+  Assert(hasCache(node));
+  return getCache(node);
+}
+
+Node SubstitutionEx::explain(TNode node) const {
+  if(!hasCache(node)) {
+    return utils::mkTrue();
+  }
+
+  Debug("bv-substitution") << "SubstitutionEx::explain("<< node <<")\n";
+  Node res = getReason(node);
+  Debug("bv-substitution") << "  with "<< res <<"\n";
+  return res;
+}
+
+Node SubstitutionEx::getReason(TNode node) const {
+  Assert(hasCache(node));
+  SubstitutionsCache::const_iterator it = d_cache.find(node);
+  return it->second.reason;
+}
+
+bool SubstitutionEx::hasCache(TNode node) const {
+  return d_cache.find(node) != d_cache.end();
+}
+
+Node SubstitutionEx::getCache(TNode node) const {
+  Assert (hasCache(node));
+  return d_cache.find(node)->second.to;
+}
+
+void SubstitutionEx::storeCache(TNode from, TNode to, Node reason) {
+  //  Debug("bv-substitution") << "SubstitutionEx::storeCache(" << from <<", " << to <<", "<< reason<<")\n";
+  Assert (!hasCache(from));
+  d_cache[from] = SubstitutionElement(to, reason);
+}
+
+AlgebraicSolver::AlgebraicSolver(context::Context* c, TheoryBV* bv)
+  : SubtheorySolver(c, bv)
+  , d_modelMap(NULL)
+  , d_quickSolver(new BVQuickCheck("alg", bv))
+  , d_isComplete(c, false)
+  , d_isDifficult(c, false)
+  , d_budget(options::bitvectorAlgebraicBudget())
+  , d_explanations()
+  , d_inputAssertions()
+  , d_ids()
+  , d_numSolved(0)
+  , d_numCalls(0)
+  , d_ctx(new context::Context())
+  , d_quickXplain(options::bitvectorQuickXplain() ? new QuickXPlain("alg", d_quickSolver) : NULL)
+  , d_statistics()
+{}
+
+AlgebraicSolver::~AlgebraicSolver() {
+  if(d_modelMap != NULL) { delete d_modelMap; }
+  delete d_quickXplain;
+  delete d_quickSolver;
+  delete d_ctx;
+}
+
+
+
+bool AlgebraicSolver::check(Theory::Effort e) {
+  Assert(options::bitblastMode() == theory::bv::BITBLAST_MODE_LAZY);
+
+  if (!Theory::fullEffort(e)) {
+    return true;
+  }
+
+  if (!useHeuristic()) {
+    return true;
+  }
+
+  ++(d_numCalls);
+
+  TimerStat::CodeTimer algebraicTimer(d_statistics.d_solveTime);
+  Debug("bv-subtheory-algebraic") << "AlgebraicSolver::check (" << e << ")\n";
+  ++(d_statistics.d_numCallstoCheck);
+
+  d_explanations.clear();
+  d_ids.clear();
+  d_inputAssertions.clear();
+
+  std::vector<WorklistElement> worklist;
+
+  uint64_t original_bb_cost = 0;
+
+  NodeSet seen_assertions;
+  // Processing assertions from scratch
+  for (AssertionQueue::const_iterator it = assertionsBegin(); it != assertionsEnd(); ++it) {
+    Debug("bv-subtheory-algebraic") << "   " << *it << "\n";
+    TNode assertion = *it;
+    unsigned id = worklist.size();
+    d_ids[assertion] = id;
+    worklist.push_back(WorklistElement(assertion, id));
+    d_inputAssertions.insert(assertion);
+    storeExplanation(assertion);
+
+    uint64_t assertion_size = d_quickSolver->computeAtomWeight(assertion, seen_assertions);
+    Assert (original_bb_cost <= original_bb_cost + assertion_size);
+    original_bb_cost+= assertion_size;
+  }
+
+  for (unsigned i = 0; i < worklist.size(); ++i) {
+    d_ids[worklist[i].node] = worklist[i].id;
+  }
+
+  Debug("bv-subtheory-algebraic") << "Assertions " << worklist.size() <<" : \n";
+
+  Assert (d_explanations.size() == worklist.size());
+
+  delete d_modelMap;
+  d_modelMap = new SubstitutionMap(d_context);
+  SubstitutionEx subst(d_modelMap);
+
+  // first round of substitutions
+  processAssertions(worklist, subst);
+
+  if (!d_isDifficult.get()) {
+    // skolemize all possible extracts
+    ExtractSkolemizer skolemizer(d_modelMap);
+    skolemizer.skolemize(worklist);
+    // second round of substitutions
+    processAssertions(worklist, subst);
+  }
+
+  NodeSet subst_seen;
+  uint64_t subst_bb_cost = 0;
+
+  unsigned r = 0;
+  unsigned w = 0;
+
+  for (; r < worklist.size(); ++r) {
+
+    TNode fact = worklist[r].node;
+    unsigned id = worklist[r].id;
+
+    if (Dump.isOn("bv-algebraic")) {
+      Node expl = d_explanations[id];
+      Node query = utils::mkNot(utils::mkNode(kind::IMPLIES, expl, fact));
+      Dump("bv-algebraic") << EchoCommand("ThoeryBV::AlgebraicSolver::substitution explanation");
+      Dump("bv-algebraic") << PushCommand();
+      Dump("bv-algebraic") << AssertCommand(query.toExpr());
+      Dump("bv-algebraic") << CheckSatCommand();
+      Dump("bv-algebraic") << PopCommand();
+    }
+
+    if (fact.isConst() &&
+        fact.getConst<bool>() == true) {
+      continue;
+    }
+
+    if (fact.isConst() &&
+        fact.getConst<bool>() == false) {
+      // we have a conflict
+      Node conflict = BooleanSimplification::simplify(d_explanations[id]);
+      d_bv->setConflict(conflict);
+      d_isComplete.set(true);
+      Debug("bv-subtheory-algebraic") << " UNSAT: assertion simplfies to false with conflict: "<< conflict << "\n";
+
+      if (Dump.isOn("bv-algebraic")) {
+        Dump("bv-algebraic") << EchoCommand("TheoryBV::AlgebraicSolver::conflict");
+        Dump("bv-algebraic") << PushCommand();
+        Dump("bv-algebraic") << AssertCommand(conflict.toExpr());
+        Dump("bv-algebraic") << CheckSatCommand();
+        Dump("bv-algebraic") << PopCommand();
+      }
+
+
+      ++(d_statistics.d_numSimplifiesToFalse);
+      ++(d_numSolved);
+      return false;
+    }
+
+    subst_bb_cost+= d_quickSolver->computeAtomWeight(fact, subst_seen);
+    worklist[w] = WorklistElement(fact, id);
+    Node expl =  BooleanSimplification::simplify(d_explanations[id]);
+    storeExplanation(id, expl);
+    d_ids[fact] = id;
+    ++w;
+  }
+
+  worklist.resize(w);
+
+
+  if(Debug.isOn("bv-subtheory-algebraic")) {
+    Debug("bv-subtheory-algebraic") << "Assertions post-substitutions " << worklist.size() << ":\n";
+    for (unsigned i = 0; i < worklist.size(); ++i) {
+      Debug("bv-subtheory-algebraic") << "   " << worklist[i].node << "\n";
+    }
+  }
+
+
+  // all facts solved to true
+  if (worklist.empty()) {
+    Debug("bv-subtheory-algebraic") << " SAT: everything simplifies to true.\n";
+    ++(d_statistics.d_numSimplifiesToTrue);
+    ++(d_numSolved);
+    return true;
+  }
+
+  double ratio = ((double)subst_bb_cost)/original_bb_cost;
+  if (ratio > 0.5 ||
+      !d_isDifficult.get()) {
+    // give up if problem not reduced enough
+    d_isComplete.set(false);
+    return true;
+  }
+
+  d_quickSolver->clearSolver();
+
+  d_quickSolver->push();
+  std::vector<Node> facts;
+  for (unsigned i = 0; i < worklist.size(); ++i) {
+    facts.push_back(worklist[i].node);
+  }
+  bool ok = quickCheck(facts);
+
+  Debug("bv-subtheory-algebraic") << "AlgebraicSolver::check done " << ok << ".\n";
+  return ok;
+}
+
+bool AlgebraicSolver::quickCheck(std::vector<Node>& facts) {
+  SatValue res = d_quickSolver->checkSat(facts, d_budget);
+
+  if (res == SAT_VALUE_UNKNOWN) {
+    d_isComplete.set(false);
+    Debug("bv-subtheory-algebraic") << " Unknown.\n";
+    ++(d_statistics.d_numUnknown);
+    return true;
+  }
+
+  if (res == SAT_VALUE_TRUE) {
+    Debug("bv-subtheory-algebraic") << " Sat.\n";
+    ++(d_statistics.d_numSat);
+    ++(d_numSolved);
+    d_isComplete.set(true);
+    return true;
+  }
+
+  Assert (res == SAT_VALUE_FALSE);
+  Assert (d_quickSolver->inConflict());
+  d_isComplete.set(true);
+  Debug("bv-subtheory-algebraic") << " Unsat.\n";
+  ++(d_numSolved);
+  ++(d_statistics.d_numUnsat);
+
+
+  Node conflict = d_quickSolver->getConflict();
+  Debug("bv-subtheory-algebraic") << " Conflict: " << conflict << "\n";
+
+  // singleton conflict
+  if (conflict.getKind() != kind::AND) {
+    Assert (d_ids.find(conflict) != d_ids.end());
+    unsigned id = d_ids[conflict];
+    Assert (id < d_explanations.size());
+    Node theory_confl = d_explanations[id];
+    d_bv->setConflict(theory_confl);
+    return false;
+  }
+
+  Assert (conflict.getKind() == kind::AND);
+  if (options::bitvectorQuickXplain()) {
+    d_quickSolver->popToZero();
+    Debug("bv-quick-xplain") << "AlgebraicSolver::quickCheck original conflict size " << conflict.getNumChildren() << "\n";
+    conflict = d_quickXplain->minimizeConflict(conflict);
+    Debug("bv-quick-xplain") << "AlgebraicSolver::quickCheck minimized conflict size " << conflict.getNumChildren() << "\n";
+  }
+
+  vector<TNode> theory_confl;
+  for (unsigned i = 0; i < conflict.getNumChildren(); ++i) {
+    TNode c = conflict[i];
+
+    Assert (d_ids.find(c) != d_ids.end());
+    unsigned c_id = d_ids[c];
+    Assert (c_id < d_explanations.size());
+    TNode c_expl = d_explanations[c_id];
+    theory_confl.push_back(c_expl);
+  }
+
+  Node confl = BooleanSimplification::simplify(utils::mkAnd(theory_confl));
+
+  Debug("bv-subtheory-algebraic") << " Out Conflict: " << confl << "\n";
+  setConflict(confl);
+  return false;
+}
+
+void AlgebraicSolver::setConflict(TNode conflict) {
+  Node final_conflict = conflict;
+  if (options::bitvectorQuickXplain() &&
+      conflict.getKind() == kind::AND &&
+      conflict.getNumChildren() > 4) {
+    final_conflict = d_quickXplain->minimizeConflict(conflict);
+  }
+  d_bv->setConflict(final_conflict);
+}
+
+bool AlgebraicSolver::solve(TNode fact, TNode reason, SubstitutionEx& subst) {
+  if (fact.getKind() != kind::EQUAL) return false;
+
+  TNode left = fact[0];
+  TNode right = fact[1];
+
+
+  if (left.isVar() && !right.hasSubterm(left)) {
+    bool changed  = subst.addSubstitution(left, right, reason);
+    return changed;
+  }
+  if (right.isVar() && !left.hasSubterm(right)) {
+    bool changed = subst.addSubstitution(right, left, reason);
+    return changed;
+  }
+
+  // xor simplification
+  if (right.getKind() == kind::BITVECTOR_XOR &&
+      left.getKind() == kind::BITVECTOR_XOR) {
+    TNode var = left[0];
+    if (var.getMetaKind() != kind::metakind::VARIABLE)
+      return false;
+
+    // simplify xor with same variable on both sides
+    if (right.hasSubterm(var)) {
+      std::vector<Node> right_children;
+      for (unsigned i = 0; i < right.getNumChildren(); ++i) {
+        if (right[i] != var)
+          right_children.push_back(right[i]);
+      }
+      Assert (right_children.size());
+      Node new_right = right_children.size() > 1 ? utils::mkNode(kind::BITVECTOR_XOR, right_children)
+                                                 : right_children[0];
+      std::vector<Node> left_children;
+      for (unsigned i = 1; i < left.getNumChildren(); ++i) {
+        left_children.push_back(left[i]);
+      }
+      Node new_left = left_children.size() > 1 ? utils::mkNode(kind::BITVECTOR_XOR, left_children)
+                                               : left_children[0];
+      Node new_fact = utils::mkNode(kind::EQUAL, new_left, new_right);
+      bool changed = subst.addSubstitution(fact, new_fact, reason);
+      return changed;
+    }
+
+    NodeBuilder<> nb(kind::BITVECTOR_XOR);
+    for (unsigned i = 1; i < left.getNumChildren(); ++i) {
+      nb << left[i];
+    }
+    Node inverse = left.getNumChildren() == 2? (Node)left[1] : (Node)nb;
+    Node new_right = utils::mkNode(kind::BITVECTOR_XOR, right, inverse);
+    bool changed = subst.addSubstitution(var, new_right, reason);
+
+    if (Dump.isOn("bv-algebraic")) {
+      Node query = utils::mkNot(utils::mkNode(kind::EQUAL, fact, utils::mkNode(kind::EQUAL, var, new_right)));
+      Dump("bv-algebraic") << EchoCommand("ThoeryBV::AlgebraicSolver::substitution explanation");
+      Dump("bv-algebraic") << PushCommand();
+      Dump("bv-algebraic") << AssertCommand(query.toExpr());
+      Dump("bv-algebraic") << CheckSatCommand();
+      Dump("bv-algebraic") << PopCommand();
+    }
+
+
+    return changed;
+  }
+
+  // (a xor t = a) <=> (t = 0)
+  if (left.getKind() == kind::BITVECTOR_XOR &&
+      right.getMetaKind() == kind::metakind::VARIABLE &&
+      left.hasSubterm(right)) {
+    TNode var = right;
+    Node new_left = utils::mkNode(kind::BITVECTOR_XOR, var, left);
+    Node zero = utils::mkConst(utils::getSize(var), 0u);
+    Node new_fact = utils::mkNode(kind::EQUAL, zero, new_left);
+    bool changed = subst.addSubstitution(fact, new_fact, reason);
+    return changed;
+  }
+
+  if (right.getKind() == kind::BITVECTOR_XOR &&
+      left.getMetaKind() == kind::metakind::VARIABLE &&
+      right.hasSubterm(left)) {
+    TNode var = left;
+    Node new_right = utils::mkNode(kind::BITVECTOR_XOR, var, right);
+    Node zero = utils::mkConst(utils::getSize(var), 0u);
+    Node new_fact = utils::mkNode(kind::EQUAL, zero, new_right);
+    bool changed = subst.addSubstitution(fact, new_fact, reason);
+    return changed;
+  }
+
+  // (a xor b = 0) <=> (a = b)
+  if (left.getKind() == kind::BITVECTOR_XOR &&
+      left.getNumChildren() == 2 &&
+      right.getKind() == kind::CONST_BITVECTOR &&
+      right.getConst<BitVector>() == BitVector(utils::getSize(left), 0u)) {
+    Node new_fact = utils::mkNode(kind::EQUAL, left[0], left[1]);
+    bool changed = subst.addSubstitution(fact, new_fact, reason);
+    return changed;
+  }
+
+
+  return false;
+}
+
+bool AlgebraicSolver::isSubstitutableIn(TNode node, TNode in) {
+  if (node.getMetaKind() == kind::metakind::VARIABLE &&
+      !in.hasSubterm(node))
+    return true;
+  return false;
+}
+
+void AlgebraicSolver::processAssertions(std::vector<WorklistElement>& worklist, SubstitutionEx& subst) {
+  bool changed = true;
+  while(changed) {
+    // d_bv->spendResource();
+    changed = false;
+    for (unsigned i = 0; i < worklist.size(); ++i) {
+      // apply current substitutions
+      Node current = subst.apply(worklist[i].node);
+      unsigned current_id = worklist[i].id;
+      Node subst_expl = subst.explain(worklist[i].node);
+      worklist[i] = WorklistElement(Rewriter::rewrite(current), current_id);
+      // explanation for this assertion
+      Node old_expl = d_explanations[current_id];
+      Node new_expl = mergeExplanations(subst_expl, old_expl);
+      storeExplanation(current_id, new_expl);
+
+      // use the new substitution to solve
+      if(solve(worklist[i].node, new_expl, subst)) {
+        changed = true;
+      }
+    }
+
+    // check for concat slicings
+    for (unsigned i = 0; i < worklist.size(); ++i) {
+      TNode fact = worklist[i].node;
+      unsigned current_id = worklist[i].id;
+
+      if (fact.getKind() != kind::EQUAL) {
+        continue;
+      }
+
+      TNode left = fact[0];
+      TNode right = fact[1];
+      if (left.getKind() != kind::BITVECTOR_CONCAT ||
+          right.getKind() != kind::BITVECTOR_CONCAT ||
+          left.getNumChildren() != right.getNumChildren()) {
+        continue;
+      }
+
+      bool can_slice = true;
+      for (unsigned j = 0; j < left.getNumChildren(); ++j) {
+        if (utils::getSize(left[j]) != utils::getSize(right[j]))
+          can_slice = false;
+      }
+
+      if (!can_slice) {
+        continue;
+      }
+
+      for (unsigned j = 0; j < left.getNumChildren(); ++j) {
+        Node eq_j = utils::mkNode(kind::EQUAL, left[j], right[j]);
+        unsigned id = d_explanations.size();
+        TNode expl = d_explanations[current_id];
+        storeExplanation(expl);
+        worklist.push_back(WorklistElement(eq_j, id));
+        d_ids[eq_j] = id;
+      }
+      worklist[i] = WorklistElement(utils::mkTrue(), worklist[i].id);
+      changed = true;
+    }
+    Assert (d_explanations.size() == worklist.size());
+  }
+}
+
+void AlgebraicSolver::storeExplanation(unsigned id, TNode explanation) {
+  Assert (checkExplanation(explanation));
+  d_explanations[id] = explanation;
+}
+
+void AlgebraicSolver::storeExplanation(TNode explanation) {
+  Assert (checkExplanation(explanation));
+  d_explanations.push_back(explanation);
+}
+
+bool AlgebraicSolver::checkExplanation(TNode explanation) {
+  Node simplified_explanation = explanation; //BooleanSimplification::simplify(explanation);
+  if (simplified_explanation.getKind() != kind::AND) {
+    return d_inputAssertions.find(simplified_explanation) != d_inputAssertions.end();
+  }
+  for (unsigned i = 0; i < simplified_explanation.getNumChildren(); ++i) {
+    if (d_inputAssertions.find(simplified_explanation[i]) == d_inputAssertions.end()) {
+      return false;
+    }
+  }
+  return true;
+}
+
+
+bool AlgebraicSolver::isComplete() {
+  return d_isComplete.get();
+}
+
+bool AlgebraicSolver::useHeuristic() {
+  if (d_numCalls == 0)
+    return true;
+
+  double success_rate = double(d_numSolved)/double(d_numCalls);
+  d_statistics.d_useHeuristic.setData(success_rate);
+  return success_rate > 0.8;
+}
+
+
+void AlgebraicSolver::assertFact(TNode fact) {
+  d_assertionQueue.push_back(fact);
+  d_isComplete.set(false);
+  if (!d_isDifficult.get()) {
+    d_isDifficult.set(hasExpensiveBVOperators(fact));
+  }
+}
+
+EqualityStatus AlgebraicSolver::getEqualityStatus(TNode a, TNode b) {
+  return EQUALITY_UNKNOWN;
+}
+void AlgebraicSolver::collectModelInfo(TheoryModel* model, bool fullModel) {
+  Debug("bitvector-model") << "AlgebraicSolver::collectModelInfo\n";
+  AlwaysAssert (!d_quickSolver->inConflict());
+  set<Node> termSet;
+  d_bv->computeRelevantTerms(termSet);
+
+  // collect relevant terms that the bv theory abstracts to variables
+  // (variables and parametric terms such as select apply_uf)
+  std::vector<TNode> variables;
+  std::vector<Node> values;
+  for (set<Node>::const_iterator it = termSet.begin(); it != termSet.end(); ++it) {
+    TNode term = *it;
+    if (term.getType().isBitVector() &&
+        (term.getMetaKind() == kind::metakind::VARIABLE ||
+         Theory::theoryOf(term) != THEORY_BV)) {
+      variables.push_back(term);
+      values.push_back(term);
+    }
+  }
+
+  NodeSet leaf_vars;
+  Debug("bitvector-model") << "Substitutions:\n";
+  for (unsigned i = 0; i < variables.size(); ++i) {
+    TNode current = variables[i];
+    TNode subst = Rewriter::rewrite(d_modelMap->apply(current));
+    Debug("bitvector-model") << "   " << current << " => " << subst << "\n";
+    values[i] = subst;
+    utils::collectVariables(subst, leaf_vars);
+  }
+
+  Debug("bitvector-model") << "Model:\n";
+
+  for (NodeSet::const_iterator it = leaf_vars.begin(); it != leaf_vars.end(); ++it) {
+    TNode var = *it;
+    Node value = d_quickSolver->getVarValue(var, true);
+    Assert (!value.isNull() || !fullModel);
+
+    // may be a shared term that did not appear in the current assertions
+    // AJR: need to check whether already in map for cases where collectModelInfo is called multiple times in the same context
+    if (!value.isNull() && !d_modelMap->hasSubstitution(var)) {
+      Debug("bitvector-model") << "   " << var << " => " << value << "\n";
+      Assert (value.getKind() == kind::CONST_BITVECTOR);
+      d_modelMap->addSubstitution(var, value);
+    }
+  }
+
+  Debug("bitvector-model") << "Final Model:\n";
+  for (unsigned i = 0; i < variables.size(); ++i) {
+    TNode current = values[i];
+    TNode subst = Rewriter::rewrite(d_modelMap->apply(current));
+    Debug("bitvector-model") << "AlgebraicSolver:   " << variables[i] << " => " << subst << "\n";
+    // Doesn't have to be constant as it may be irrelevant
+    Assert (subst.getKind() == kind::CONST_BITVECTOR);
+    model->assertEquality(variables[i], subst, true);
+  }
+
+ }
+
+Node AlgebraicSolver::getModelValue(TNode node) {
+  return Node::null();
+}
+
+AlgebraicSolver::Statistics::Statistics()
+  : d_numCallstoCheck("theory::bv::AlgebraicSolver::NumCallsToCheck", 0)
+  , d_numSimplifiesToTrue("theory::bv::AlgebraicSolver::NumSimplifiesToTrue", 0)
+  , d_numSimplifiesToFalse("theory::bv::AlgebraicSolver::NumSimplifiesToFalse", 0)
+  , d_numUnsat("theory::bv::AlgebraicSolver::NumUnsat", 0)
+  , d_numSat("theory::bv::AlgebraicSolver::NumSat", 0)
+  , d_numUnknown("theory::bv::AlgebraicSolver::NumUnknown", 0)
+  , d_solveTime("theory::bv::AlgebraicSolver::SolveTime")
+  , d_useHeuristic("theory::bv::AlgebraicSolver::UseHeuristic", 0.2)
+{
+  smtStatisticsRegistry()->registerStat(&d_numCallstoCheck);
+  smtStatisticsRegistry()->registerStat(&d_numSimplifiesToTrue);
+  smtStatisticsRegistry()->registerStat(&d_numSimplifiesToFalse);
+  smtStatisticsRegistry()->registerStat(&d_numUnsat);
+  smtStatisticsRegistry()->registerStat(&d_numSat);
+  smtStatisticsRegistry()->registerStat(&d_numUnknown);
+  smtStatisticsRegistry()->registerStat(&d_solveTime);
+  smtStatisticsRegistry()->registerStat(&d_useHeuristic);
+}
+
+AlgebraicSolver::Statistics::~Statistics() {
+  smtStatisticsRegistry()->unregisterStat(&d_numCallstoCheck);
+  smtStatisticsRegistry()->unregisterStat(&d_numSimplifiesToTrue);
+  smtStatisticsRegistry()->unregisterStat(&d_numSimplifiesToFalse);
+  smtStatisticsRegistry()->unregisterStat(&d_numUnsat);
+  smtStatisticsRegistry()->unregisterStat(&d_numSat);
+  smtStatisticsRegistry()->unregisterStat(&d_numUnknown);
+  smtStatisticsRegistry()->unregisterStat(&d_solveTime);
+  smtStatisticsRegistry()->unregisterStat(&d_useHeuristic);
+}
+
+bool hasExpensiveBVOperatorsRec(TNode fact, TNodeSet& seen) {
+  if (fact.getKind() == kind::BITVECTOR_MULT ||
+      fact.getKind() == kind::BITVECTOR_UDIV_TOTAL ||
+      fact.getKind() == kind::BITVECTOR_UREM_TOTAL) {
+    return true;
+  }
+
+  if (seen.find(fact) != seen.end()) {
+    return false;
+  }
+
+  if (fact.getNumChildren() == 0) {
+    return false;
+  }
+  for (unsigned i = 0; i < fact.getNumChildren(); ++i) {
+    bool difficult = hasExpensiveBVOperatorsRec(fact[i], seen);
+    if (difficult)
+      return true;
+  }
+  seen.insert(fact);
+  return false;
+}
+
+bool hasExpensiveBVOperators(TNode fact) {
+  TNodeSet seen;
+  return hasExpensiveBVOperatorsRec(fact, seen);
+}
+
+void ExtractSkolemizer::skolemize(std::vector<WorklistElement>& facts) {
+  TNodeSet seen;
+  for (unsigned i = 0; i < facts.size(); ++i) {
+    TNode current = facts[i].node;
+    collectExtracts(current, seen);
+  }
+
+  for (VarExtractMap::iterator it = d_varToExtract.begin(); it != d_varToExtract.end(); ++it) {
+    ExtractList& el = it->second;
+    TNode var = it->first;
+    Base& base = el.base;
+
+    unsigned bw = utils::getSize(var);
+    // compute decomposition
+    std::vector<unsigned> cuts;
+    for (unsigned i = 1; i <= bw; ++i) {
+      if (base.isCutPoint(i)) {
+        cuts.push_back(i);
+      }
+    }
+    unsigned previous = 0;
+    unsigned current = 0;
+    std::vector<Node> skolems;
+    for (unsigned i = 0; i < cuts.size(); ++i) {
+      current = cuts[i];
+      Assert (current > 0);
+      int size = current - previous;
+      Assert (size > 0);
+      Node sk = utils::mkVar(size);
+      skolems.push_back(sk);
+      previous = current;
+    }
+    if (current < bw -1) {
+      int size = bw - current;
+      Assert (size > 0);
+      Node sk = utils::mkVar(size);
+      skolems.push_back(sk);
+    }
+    NodeBuilder<> skolem_nb(kind::BITVECTOR_CONCAT);
+
+    for (int i = skolems.size() - 1; i >= 0; --i) {
+      skolem_nb << skolems[i];
+    }
+
+    Node skolem_concat = skolems.size() == 1 ? (Node)skolems[0] : (Node) skolem_nb;
+    Assert (utils::getSize(skolem_concat) == utils::getSize(var));
+    storeSkolem(var, skolem_concat);
+
+    for (unsigned i = 0; i < el.extracts.size(); ++i) {
+      unsigned h = el.extracts[i].high;
+      unsigned l = el.extracts[i].low;
+      Node extract = utils::mkExtract(var, h, l);
+      Node skolem_extract = Rewriter::rewrite(utils::mkExtract(skolem_concat, h, l));
+      Assert (skolem_extract.getMetaKind() == kind::metakind::VARIABLE ||
+              skolem_extract.getKind() == kind::BITVECTOR_CONCAT);
+      storeSkolem(extract, skolem_extract);
+    }
+  }
+
+  for (unsigned i = 0; i < facts.size(); ++i) {
+    facts[i] = WorklistElement(skolemize(facts[i].node), facts[i].id);
+  }
+}
+
+Node ExtractSkolemizer::mkSkolem(Node node) {
+  Assert (node.getKind() == kind::BITVECTOR_EXTRACT &&
+          node[0].getMetaKind() == kind::metakind::VARIABLE);
+  Assert (!d_skolemSubst.hasSubstitution(node));
+  return utils::mkVar(utils::getSize(node));
+}
+
+void ExtractSkolemizer::unSkolemize(std::vector<WorklistElement>& facts) {
+  for (unsigned i = 0; i < facts.size(); ++i) {
+    facts[i] = WorklistElement(unSkolemize(facts[i].node), facts[i].id);
+  }
+}
+
+void ExtractSkolemizer::storeSkolem(TNode node, TNode skolem) {
+  d_skolemSubst.addSubstitution(node, skolem);
+  d_modelMap->addSubstitution(node, skolem);
+  d_skolemSubstRev.addSubstitution(skolem, node);
+}
+
+Node ExtractSkolemizer::unSkolemize(TNode node) {
+  return d_skolemSubstRev.apply(node);
+}
+
+Node ExtractSkolemizer::skolemize(TNode node) {
+  return d_skolemSubst.apply(node);
+}
+
+void ExtractSkolemizer::ExtractList::addExtract(Extract& e) {
+  extracts.push_back(e);
+  base.sliceAt(e.low);
+  base.sliceAt(e.high+1);
+}
+
+void ExtractSkolemizer::storeExtract(TNode var, unsigned high, unsigned low) {
+  Assert (var.getMetaKind() == kind::metakind::VARIABLE);
+  if (d_varToExtract.find(var) == d_varToExtract.end()) {
+    d_varToExtract[var] = ExtractList(utils::getSize(var));
+  }
+  VarExtractMap::iterator it = d_varToExtract.find(var);
+  ExtractList& el = it->second;
+  Extract e(high, low);
+  el.addExtract(e);
+}
+
+void ExtractSkolemizer::collectExtracts(TNode node, TNodeSet& seen) {
+  if (seen.find(node) != seen.end()) {
+    return;
+  }
+
+  if (node.getKind() == kind::BITVECTOR_EXTRACT &&
+      node[0].getMetaKind() == kind::metakind::VARIABLE) {
+    unsigned high = utils::getExtractHigh(node);
+    unsigned low = utils::getExtractLow(node);
+    TNode var = node[0];
+    storeExtract(var, high, low);
+    seen.insert(node);
+    return;
+  }
+
+  if (node.getNumChildren() == 0)
+    return;
+
+  for (unsigned i = 0; i < node.getNumChildren(); ++i) {
+    collectExtracts(node[i], seen);
+  }
+  seen.insert(node);
+}
+
+ExtractSkolemizer::ExtractSkolemizer(theory::SubstitutionMap* modelMap)
+  : d_emptyContext()
+  , d_varToExtract()
+  , d_modelMap(modelMap)
+  , d_skolemSubst(&d_emptyContext)
+  , d_skolemSubstRev(&d_emptyContext)
+{}
+
+ExtractSkolemizer::~ExtractSkolemizer() {
+}
+
+Node mergeExplanations(const std::vector<Node>& expls) {
+  TNodeSet literals;
+  for (unsigned i = 0; i < expls.size(); ++i) {
+    TNode expl = expls[i];
+    Assert (expl.getType().isBoolean());
+    if (expl.getKind() == kind::AND) {
+      for (unsigned i = 0; i < expl.getNumChildren(); ++i) {
+        TNode child = expl[i];
+        if (child == utils::mkTrue())
+          continue;
+        literals.insert(child);
+      }
+    } else if (expl != utils::mkTrue()) {
+      literals.insert(expl);
+    }
+  }
+
+  if (literals.size() == 0) {
+    return utils::mkTrue();
+  }else if (literals.size() == 1) {
+    return *literals.begin();
+  }
+
+  NodeBuilder<> nb(kind::AND);
+
+  for (TNodeSet::const_iterator it = literals.begin(); it!= literals.end(); ++it) {
+    nb << *it;
+  }
+  return nb;
+}
+
+Node mergeExplanations(TNode expl1, TNode expl2) {
+  std::vector<Node> expls;
+  expls.push_back(expl1);
+  expls.push_back(expl2);
+  return mergeExplanations(expls);
+}
+
+} /* namespace CVC4::theory::bv */
+} /* namespace CVc4::theory */
+} /* namespace CVC4 */
diff --git a/src/theory/bv/bv_subtheory_algebraic.h b/src/theory/bv/bv_subtheory_algebraic.h
new file mode 100644
index 0000000..0e0e021
--- /dev/null
+++ b/src/theory/bv/bv_subtheory_algebraic.h
@@ -0,0 +1,235 @@
+/*********************                                                        */
+/*! \file bv_subtheory_algebraic.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Algebraic solver.
+ **
+ ** Algebraic solver.
+ **/
+
+#pragma once
+
+#include "cvc4_private.h"
+#include "theory/bv/bv_subtheory.h"
+#include "theory/substitutions.h"
+#include "theory/bv/slicer.h"
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+class AlgebraicSolver;
+
+
+Node mergeExplanations(TNode expl1, TNode expl2);
+Node mergeExplanations(const std::vector<Node>& expls);
+
+
+/**
+ * Non-context dependent substitution with explanations.
+ * 
+ */
+class SubstitutionEx {
+  struct SubstitutionElement {
+    Node to;
+    Node reason;
+    SubstitutionElement()
+      : to()
+      , reason()
+    {}
+    
+    SubstitutionElement(TNode t, TNode r)
+      : to(t)
+      , reason(r)
+    {}
+  };
+
+  struct SubstitutionStackElement {
+    TNode node;
+    bool childrenAdded;
+    SubstitutionStackElement(TNode n, bool ca = false)
+      : node(n)
+      , childrenAdded(ca)
+    {}
+  };
+
+  typedef __gnu_cxx::hash_map<Node, SubstitutionElement, NodeHashFunction> Substitutions;
+  typedef __gnu_cxx::hash_map<Node, SubstitutionElement, NodeHashFunction> SubstitutionsCache;
+
+  Substitutions d_substitutions;
+  SubstitutionsCache d_cache;
+  bool d_cacheInvalid;
+  theory::SubstitutionMap* d_modelMap; 
+
+  
+  Node getReason(TNode node) const;
+  bool hasCache(TNode node) const;
+  Node getCache(TNode node) const;
+  void storeCache(TNode from, TNode to, Node rason);
+  Node internalApply(TNode node);
+
+public:
+  SubstitutionEx(theory::SubstitutionMap* modelMap);
+  /** 
+   * Returnst true if the substitution map did not contain from. 
+   * 
+   * @param from 
+   * @param to 
+   * @param reason 
+   * 
+   * @return 
+   */
+  bool addSubstitution(TNode from, TNode to, TNode reason);
+  Node apply(TNode node);
+  Node explain(TNode node) const;
+};
+
+/**
+ * In-processing worklist element, id keeps track of
+ * original assertion. 
+ * 
+ */
+struct WorklistElement {
+  Node node;
+  unsigned id;
+  WorklistElement(Node n, unsigned i) : node(n), id(i) {}
+  WorklistElement() : node(), id(-1) {}
+}; 
+
+
+typedef __gnu_cxx::hash_map<Node, Node, NodeHashFunction> NodeNodeMap;
+typedef __gnu_cxx::hash_map<Node, unsigned, NodeHashFunction> NodeIdMap;
+typedef __gnu_cxx::hash_set<TNode, TNodeHashFunction> TNodeSet;
+
+
+class ExtractSkolemizer {
+  struct Extract {
+    unsigned high;
+    unsigned low;
+    Extract(unsigned h, unsigned l) : high(h), low(l) {}
+  };
+    
+  struct ExtractList {
+    Base base;
+    std::vector<Extract> extracts;
+    ExtractList(unsigned bitwidth) : base(bitwidth), extracts() {}
+    ExtractList() : base(1), extracts() {}
+    void addExtract(Extract& e); 
+  };
+  typedef   __gnu_cxx::hash_map<Node, ExtractList, NodeHashFunction> VarExtractMap;
+  context::Context d_emptyContext;
+  VarExtractMap d_varToExtract;
+  theory::SubstitutionMap* d_modelMap;
+  theory::SubstitutionMap d_skolemSubst;
+  theory::SubstitutionMap d_skolemSubstRev;
+
+  void storeSkolem(TNode node, TNode skolem);
+  void storeExtract(TNode var, unsigned high, unsigned low);
+  void collectExtracts(TNode node, TNodeSet& seen);
+  Node skolemize(TNode);
+  Node unSkolemize(TNode);
+
+  Node mkSkolem(Node node);
+public:
+  ExtractSkolemizer(theory::SubstitutionMap* modelMap); 
+  void skolemize(std::vector<WorklistElement>&);
+  void unSkolemize(std::vector<WorklistElement>&);
+  ~ExtractSkolemizer();
+}; 
+
+class BVQuickCheck;
+class QuickXPlain;
+
+/**
+ * AlgebraicSolver
+ */
+class AlgebraicSolver : public SubtheorySolver {
+  
+  struct Statistics {
+    IntStat d_numCallstoCheck;
+    IntStat d_numSimplifiesToTrue;
+    IntStat d_numSimplifiesToFalse;
+    IntStat d_numUnsat;
+    IntStat d_numSat;
+    IntStat d_numUnknown;
+    TimerStat d_solveTime;
+    BackedStat<double> d_useHeuristic;
+    Statistics();
+    ~Statistics();
+  };
+
+  SubstitutionMap* d_modelMap;
+  BVQuickCheck* d_quickSolver;
+  context::CDO<bool> d_isComplete; 
+  context::CDO<bool> d_isDifficult; /**< flag to indicate whether the current assertions contain expensive BV operators */
+  
+  unsigned long d_budget;
+  std::vector<Node> d_explanations; /**< explanations for assertions indexed by assertion id */
+  TNodeSet d_inputAssertions;   /**< assertions in current context (for debugging purposes only) */
+  NodeIdMap d_ids;              /**< map from assertions to ids */
+  uint64_t d_numSolved;
+  uint64_t d_numCalls;
+
+  context::Context* d_ctx;
+  QuickXPlain* d_quickXplain;   /**< separate quickXplain module as it can reuse the current SAT solver */
+  
+  Statistics d_statistics;
+  bool useHeuristic();
+  void setConflict(TNode conflict);
+  bool isSubstitutableIn(TNode node, TNode in);
+  bool checkExplanation(TNode expl);
+  void storeExplanation(TNode expl);
+  void storeExplanation(unsigned id, TNode expl);
+  /** 
+   * Apply substitutions and rewriting to the worklist assertions to a fixpoint.
+   * Subsitutions learned store in subst. 
+   *
+   * @param worklist 
+   * @param subst 
+   */
+  void processAssertions(std::vector<WorklistElement>& worklist, SubstitutionEx& subst);
+  /** 
+   * Attempt to solve the equation in fact, and if successful
+   * add a substitution to subst. 
+   * 
+   * @param fact equation we are trying to solve
+   * @param reason the reason in terms of original assertions
+   * @param subst substitution map
+   * 
+   * @return true if added a substitution to subst
+   */
+  bool solve(TNode fact, TNode reason, SubstitutionEx& subst);
+  /** 
+   * Run a SAT solver on the given facts with the given budget.
+   * Sets the isComplete flag and conflict accordingly. 
+   * 
+   * @param facts 
+   * 
+   * @return true if no conflict was detected. 
+   */
+  bool quickCheck(std::vector<Node>& facts);
+
+public:
+  AlgebraicSolver(context::Context* c, TheoryBV* bv);
+  ~AlgebraicSolver();
+
+  void  preRegister(TNode node) {}
+  bool  check(Theory::Effort e);
+  void  explain(TNode literal, std::vector<TNode>& assumptions) {Unreachable("AlgebraicSolver does not propagate.\n");}
+  EqualityStatus getEqualityStatus(TNode a, TNode b); 
+  void collectModelInfo(TheoryModel* m, bool fullModel); 
+  Node getModelValue(TNode node); 
+  bool isComplete();
+  virtual void assertFact(TNode fact);
+};
+
+}
+}
+}
diff --git a/src/theory/bv/bv_subtheory_bitblast.cpp b/src/theory/bv/bv_subtheory_bitblast.cpp
new file mode 100644
index 0000000..7b7d383
--- /dev/null
+++ b/src/theory/bv/bv_subtheory_bitblast.cpp
@@ -0,0 +1,271 @@
+/*********************                                                        */
+/*! \file bv_subtheory_bitblast.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Dejan Jovanovic, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Algebraic solver.
+ **
+ ** Algebraic solver.
+ **/
+
+#include "decision/decision_attributes.h"
+#include "options/decision_options.h"
+#include "options/bv_options.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/bv/abstraction.h"
+#include "theory/bv/bitblaster_template.h"
+#include "theory/bv/bv_quick_check.h"
+#include "theory/bv/bv_subtheory_bitblast.h"
+#include "theory/bv/theory_bv.h"
+#include "theory/bv/theory_bv_utils.h"
+#include "proof/proof_manager.h"
+#include "proof/bitvector_proof.h"
+
+using namespace std;
+using namespace CVC4::context;
+using namespace CVC4::theory::bv::utils;
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+BitblastSolver::BitblastSolver(context::Context* c, TheoryBV* bv)
+  : SubtheorySolver(c, bv),
+    d_bitblaster(new TLazyBitblaster(c, bv, bv->getFullInstanceName() + "lazy")),
+    d_bitblastQueue(c),
+    d_statistics(bv->getFullInstanceName()),
+    d_validModelCache(c, true),
+    d_lemmaAtomsQueue(c),
+    d_useSatPropagation(options::bitvectorPropagate()),
+    d_abstractionModule(NULL),
+    d_quickCheck(options::bitvectorQuickXplain() ? new BVQuickCheck("bb", bv) : NULL),
+    d_quickXplain(options::bitvectorQuickXplain() ? new QuickXPlain("bb", d_quickCheck) :  NULL)
+{
+}
+
+BitblastSolver::~BitblastSolver() {
+  delete d_quickXplain;
+  delete d_quickCheck;
+  delete d_bitblaster;
+}
+
+BitblastSolver::Statistics::Statistics(const std::string &instanceName)
+  : d_numCallstoCheck(instanceName + "theory::bv::BitblastSolver::NumCallsToCheck", 0)
+  , d_numBBLemmas(instanceName + "theory::bv::BitblastSolver::NumTimesLemmasBB", 0)
+{
+  smtStatisticsRegistry()->registerStat(&d_numCallstoCheck);
+  smtStatisticsRegistry()->registerStat(&d_numBBLemmas);
+}
+BitblastSolver::Statistics::~Statistics() {
+  smtStatisticsRegistry()->unregisterStat(&d_numCallstoCheck);
+  smtStatisticsRegistry()->unregisterStat(&d_numBBLemmas);
+}
+
+void BitblastSolver::setAbstraction(AbstractionModule* abs) {
+  d_abstractionModule = abs;
+  d_bitblaster->setAbstraction(abs);
+}
+
+void BitblastSolver::preRegister(TNode node) {
+  if ((node.getKind() == kind::EQUAL ||
+       node.getKind() == kind::BITVECTOR_ULT ||
+       node.getKind() == kind::BITVECTOR_ULE ||
+       node.getKind() == kind::BITVECTOR_SLT ||
+       node.getKind() == kind::BITVECTOR_SLE) &&
+      !d_bitblaster->hasBBAtom(node)) {
+    CodeTimer weightComputationTime(d_bv->d_statistics.d_weightComputationTimer);
+    d_bitblastQueue.push_back(node);
+    if ((options::decisionUseWeight() || options::decisionThreshold() != 0) &&
+        !node.hasAttribute(decision::DecisionWeightAttr())) {
+      node.setAttribute(decision::DecisionWeightAttr(),computeAtomWeight(node));
+    }
+  }
+}
+
+uint64_t BitblastSolver::computeAtomWeight(TNode node) {
+  NodeSet seen;
+  return d_bitblaster->computeAtomWeight(node, seen);
+}
+
+void BitblastSolver::explain(TNode literal, std::vector<TNode>& assumptions) {
+  d_bitblaster->explain(literal, assumptions);
+}
+
+void BitblastSolver::bitblastQueue() {
+  while (!d_bitblastQueue.empty()) {
+    TNode atom = d_bitblastQueue.front();
+    d_bitblastQueue.pop();
+    Debug("bv-bitblast-queue") << "BitblastSolver::bitblastQueue (" << atom << ")\n";
+    if (options::bvAbstraction() &&
+        d_abstractionModule->isLemmaAtom(atom)) {
+      // don't bit-blast lemma atoms
+      continue;
+    }
+    if( !utils::isBitblastAtom(atom) ){
+      continue;
+    }
+    Debug("bitblast-queue") << "Bitblasting atom " << atom <<"\n";
+    {
+      TimerStat::CodeTimer codeTimer(d_bitblaster->d_statistics.d_bitblastTimer);
+      d_bitblaster->bbAtom(atom);
+    }
+  }
+}
+
+bool BitblastSolver::check(Theory::Effort e) {
+  Debug("bv-bitblast") << "BitblastSolver::check (" << e << ")\n";
+  Assert(options::bitblastMode() == theory::bv::BITBLAST_MODE_LAZY);
+
+  ++(d_statistics.d_numCallstoCheck);
+
+  Debug("bv-bitblast-debug") << "...process queue" << std::endl;
+  //// Lazy bit-blasting
+  // bit-blast enqueued nodes
+  bitblastQueue();
+
+  // Processing assertions
+  while (!done()) {
+    TNode fact = get();
+    d_validModelCache = false;
+    Debug("bv-bitblast") << "  fact " << fact << ")\n";
+
+    if (options::bvAbstraction()) {
+      // skip atoms that are the result of abstraction lemmas
+      if (d_abstractionModule->isLemmaAtom(fact)) {
+        d_lemmaAtomsQueue.push_back(fact);
+        continue;
+      }
+    }
+    //skip facts involving integer equalities (from bv2nat)
+    if( !utils::isBitblastAtom( fact ) ){
+      continue;
+    }
+
+    if (!d_bv->inConflict() &&
+        (!d_bv->wasPropagatedBySubtheory(fact) || d_bv->getPropagatingSubtheory(fact) != SUB_BITBLAST)) {
+      // Some atoms have not been bit-blasted yet
+      d_bitblaster->bbAtom(fact);
+      // Assert to sat
+      bool ok = d_bitblaster->assertToSat(fact, d_useSatPropagation);
+      if (!ok) {
+        std::vector<TNode> conflictAtoms;
+        d_bitblaster->getConflict(conflictAtoms);
+        setConflict(mkConjunction(conflictAtoms));
+        return false;
+      }
+    }
+  }
+
+  Debug("bv-bitblast-debug") << "...do propagation" << std::endl;
+  // We need to ensure we are fully propagated, so propagate now
+  if (d_useSatPropagation) {
+    d_bv->spendResource(1);
+    bool ok = d_bitblaster->propagate();
+    if (!ok) {
+      std::vector<TNode> conflictAtoms;
+      d_bitblaster->getConflict(conflictAtoms);
+      setConflict(mkConjunction(conflictAtoms));
+      return false;
+    }
+  }
+
+  // Solving
+  Debug("bv-bitblast-debug") << "...do solving" << std::endl;
+  if (e == Theory::EFFORT_FULL) {
+    Assert(!d_bv->inConflict());
+    Debug("bitvector::bitblaster") << "BitblastSolver::addAssertions solving. \n";
+    bool ok = d_bitblaster->solve();
+    if (!ok) {
+      std::vector<TNode> conflictAtoms;
+      d_bitblaster->getConflict(conflictAtoms);
+      Node conflict = mkConjunction(conflictAtoms);
+      setConflict(conflict);
+      return false;
+    }
+  }
+
+  Debug("bv-bitblast-debug") << "...do abs bb" << std::endl;
+  if (options::bvAbstraction() &&
+      e == Theory::EFFORT_FULL &&
+      d_lemmaAtomsQueue.size()) {
+
+    // bit-blast lemma atoms
+    while(!d_lemmaAtomsQueue.empty()) {
+      TNode lemma_atom = d_lemmaAtomsQueue.front();
+      d_lemmaAtomsQueue.pop();
+      if( !utils::isBitblastAtom( lemma_atom ) ){
+        continue;
+      }
+      d_bitblaster->bbAtom(lemma_atom);
+      // Assert to sat and check for conflicts
+      bool ok = d_bitblaster->assertToSat(lemma_atom, d_useSatPropagation);
+      if (!ok) {
+        std::vector<TNode> conflictAtoms;
+        d_bitblaster->getConflict(conflictAtoms);
+        setConflict(mkConjunction(conflictAtoms));
+        return false;
+      }
+    }
+
+    Assert(!d_bv->inConflict());
+    bool ok = d_bitblaster->solve();
+    if (!ok) {
+      std::vector<TNode> conflictAtoms;
+      d_bitblaster->getConflict(conflictAtoms);
+      Node conflict = mkConjunction(conflictAtoms);
+      setConflict(conflict);
+      ++(d_statistics.d_numBBLemmas);
+      return false;
+    }
+
+  }
+
+
+  return true;
+}
+
+EqualityStatus BitblastSolver::getEqualityStatus(TNode a, TNode b) {
+  return d_bitblaster->getEqualityStatus(a, b);
+}
+
+void BitblastSolver::collectModelInfo(TheoryModel* m, bool fullModel) {
+  return d_bitblaster->collectModelInfo(m, fullModel);
+}
+
+Node BitblastSolver::getModelValue(TNode node)
+{
+  if (d_bv->d_invalidateModelCache.get()) {
+    d_bitblaster->invalidateModelCache();
+  }
+  d_bv->d_invalidateModelCache.set(false);
+  Node val = d_bitblaster->getTermModel(node, true);
+  return val;
+}
+
+
+
+void BitblastSolver::setConflict(TNode conflict) {
+  Node final_conflict = conflict;
+  if (options::bitvectorQuickXplain() &&
+      conflict.getKind() == kind::AND) {
+    // std::cout << "Original conflict " << conflict.getNumChildren() << "\n";
+    final_conflict = d_quickXplain->minimizeConflict(conflict);
+    //std::cout << "Minimized conflict " << final_conflict.getNumChildren() << "\n";
+  }
+  d_bv->setConflict(final_conflict);
+}
+
+void BitblastSolver::setProofLog( BitVectorProof * bvp ) {
+  d_bitblaster->setProofLog( bvp );
+  bvp->setBitblaster(d_bitblaster);
+}
+
+}/* namespace CVC4::theory::bv */
+}/* namespace CVC4::theory */
+}/* namespace CVC4 */
diff --git a/src/theory/bv/bv_subtheory_bitblast.h b/src/theory/bv/bv_subtheory_bitblast.h
new file mode 100644
index 0000000..fe16d27
--- /dev/null
+++ b/src/theory/bv/bv_subtheory_bitblast.h
@@ -0,0 +1,81 @@
+/*********************                                                        */
+/*! \file bv_subtheory_bitblast.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Algebraic solver.
+ **
+ ** Algebraic solver.
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "theory/bv/bitblaster_template.h"
+#include "theory/bv/bv_subtheory.h"
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+class LazyBitblaster;
+class AbstractionModule;
+class BVQuickCheck;
+class QuickXPlain;
+
+/**
+ * BitblastSolver
+ */
+class BitblastSolver : public SubtheorySolver {
+  struct Statistics {
+    IntStat d_numCallstoCheck;
+    IntStat d_numBBLemmas;
+    Statistics(const std::string &instanceName);
+    ~Statistics();
+  };
+  /** Bitblaster */
+  TLazyBitblaster* d_bitblaster;
+
+  /** Nodes that still need to be bit-blasted */
+  context::CDQueue<TNode> d_bitblastQueue;
+  Statistics d_statistics;
+
+  typedef std::hash_map<Node, Node, NodeHashFunction> NodeMap;
+  NodeMap d_modelCache;
+  context::CDO<bool> d_validModelCache;
+
+  /** Queue for bit-blasting lemma atoms only in full check if we are sat */
+  context::CDQueue<TNode> d_lemmaAtomsQueue;
+  bool  d_useSatPropagation;
+  AbstractionModule* d_abstractionModule;
+  BVQuickCheck* d_quickCheck;
+  QuickXPlain* d_quickXplain;
+  //  Node getModelValueRec(TNode node);
+  void setConflict(TNode conflict);
+public:
+  BitblastSolver(context::Context* c, TheoryBV* bv);
+  ~BitblastSolver();
+
+  void  preRegister(TNode node);
+  bool  check(Theory::Effort e);
+  void  explain(TNode literal, std::vector<TNode>& assumptions);
+  EqualityStatus getEqualityStatus(TNode a, TNode b);
+  void collectModelInfo(TheoryModel* m, bool fullModel);
+  Node getModelValue(TNode node);
+  bool isComplete() { return true; }
+  void bitblastQueue();
+  void setAbstraction(AbstractionModule* module);
+  uint64_t computeAtomWeight(TNode atom);
+  void setProofLog( BitVectorProof * bvp );
+};
+
+} /* namespace CVC4::theory::bv */
+} /* namespace CVC4::theory */
+} /* namespace CVC4 */
diff --git a/src/theory/bv/bv_subtheory_core.cpp b/src/theory/bv/bv_subtheory_core.cpp
new file mode 100644
index 0000000..c59da27
--- /dev/null
+++ b/src/theory/bv/bv_subtheory_core.cpp
@@ -0,0 +1,459 @@
+/*********************                                                        */
+/*! \file bv_subtheory_core.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Algebraic solver.
+ **
+ ** Algebraic solver.
+ **/
+
+#include "theory/bv/bv_subtheory_core.h"
+
+#include "options/bv_options.h"
+#include "options/smt_options.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/bv/slicer.h"
+#include "theory/bv/theory_bv.h"
+#include "theory/bv/theory_bv_utils.h"
+#include "theory/theory_model.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::bv;
+using namespace CVC4::theory::bv::utils;
+
+CoreSolver::CoreSolver(context::Context* c, TheoryBV* bv)
+  : SubtheorySolver(c, bv),
+    d_notify(*this),
+    d_equalityEngine(d_notify, c, "theory::bv::TheoryBV", true),
+    d_slicer(new Slicer()),
+    d_isComplete(c, true),
+    d_lemmaThreshold(16),
+    d_useSlicer(false),
+    d_preregisterCalled(false),
+    d_checkCalled(false),
+    d_reasons(c)
+{
+  // The kinds we are treating as function application in congruence
+  d_equalityEngine.addFunctionKind(kind::BITVECTOR_CONCAT, true);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_AND);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_OR);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_XOR);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_NOT);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_NAND);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_NOR);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_XNOR);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_COMP);
+  d_equalityEngine.addFunctionKind(kind::BITVECTOR_MULT, true);
+  d_equalityEngine.addFunctionKind(kind::BITVECTOR_PLUS, true);
+  d_equalityEngine.addFunctionKind(kind::BITVECTOR_EXTRACT, true);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_SUB);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_NEG);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_UDIV);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_UREM);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_SDIV);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_SREM);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_SMOD);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_SHL);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_LSHR);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_ASHR);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_ULT);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_ULE);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_UGT);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_UGE);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_SLT);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_SLE);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_SGT);
+  //    d_equalityEngine.addFunctionKind(kind::BITVECTOR_SGE);
+  d_equalityEngine.addFunctionKind(kind::BITVECTOR_TO_NAT);
+  d_equalityEngine.addFunctionKind(kind::INT_TO_BITVECTOR);
+}
+
+CoreSolver::~CoreSolver() {
+  delete d_slicer;
+}
+void CoreSolver::setMasterEqualityEngine(eq::EqualityEngine* eq) {
+  d_equalityEngine.setMasterEqualityEngine(eq);
+}
+
+void CoreSolver::enableSlicer() {
+  AlwaysAssert (!d_preregisterCalled);
+  d_useSlicer = true;
+  d_statistics.d_slicerEnabled.setData(true);
+}
+
+void CoreSolver::preRegister(TNode node) {
+  d_preregisterCalled = true;
+  if (node.getKind() == kind::EQUAL) {
+      d_equalityEngine.addTriggerEquality(node);
+      if (d_useSlicer) {
+        d_slicer->processEquality(node);
+        AlwaysAssert(!d_checkCalled); 
+      }
+  } else {
+    d_equalityEngine.addTerm(node);
+  }
+}
+
+
+void CoreSolver::explain(TNode literal, std::vector<TNode>& assumptions) {
+  bool polarity = literal.getKind() != kind::NOT;
+  TNode atom = polarity ? literal : literal[0];
+  if (atom.getKind() == kind::EQUAL) {
+    d_equalityEngine.explainEquality(atom[0], atom[1], polarity, assumptions);
+  } else {
+    d_equalityEngine.explainPredicate(atom, polarity, assumptions);
+  }
+}
+
+Node CoreSolver::getBaseDecomposition(TNode a) {
+  std::vector<Node> a_decomp;
+  d_slicer->getBaseDecomposition(a, a_decomp);
+  Node new_a = utils::mkConcat(a_decomp);
+  Debug("bv-slicer") << "CoreSolver::getBaseDecomposition " << a <<" => " << new_a << "\n";
+  return new_a;
+}
+
+bool CoreSolver::decomposeFact(TNode fact) {
+  Debug("bv-slicer") << "CoreSolver::decomposeFact fact=" << fact << endl;
+  // FIXME: are this the right things to assert?
+  // assert decompositions since the equality engine does not know the semantics of
+  // concat:
+  //   a == a_1 concat ... concat a_k
+  //   b == b_1 concat ... concat b_k
+  TNode eq = fact.getKind() == kind::NOT? fact[0] : fact;
+
+  TNode a = eq[0];
+  TNode b = eq[1];
+  Node new_a = getBaseDecomposition(a);
+  Node new_b = getBaseDecomposition(b);
+
+  Assert (utils::getSize(new_a) == utils::getSize(new_b) &&
+          utils::getSize(new_a) == utils::getSize(a));
+
+  NodeManager* nm = NodeManager::currentNM();
+  Node a_eq_new_a = nm->mkNode(kind::EQUAL, a, new_a);
+  Node b_eq_new_b = nm->mkNode(kind::EQUAL, b, new_b);
+
+  bool ok = true;
+  ok = assertFactToEqualityEngine(a_eq_new_a, utils::mkTrue());
+  if (!ok) return false;
+  ok = assertFactToEqualityEngine(b_eq_new_b, utils::mkTrue());
+  if (!ok) return false;
+  ok = assertFactToEqualityEngine(fact, fact);
+  if (!ok) return false;
+
+  if (fact.getKind() == kind::EQUAL) {
+    // assert the individual equalities as well
+    //    a_i == b_i
+    if (new_a.getKind() == kind::BITVECTOR_CONCAT &&
+        new_b.getKind() == kind::BITVECTOR_CONCAT) {
+
+      Assert (new_a.getNumChildren() == new_b.getNumChildren());
+      for (unsigned i = 0; i < new_a.getNumChildren(); ++i) {
+        Node eq_i = nm->mkNode(kind::EQUAL, new_a[i], new_b[i]);
+        ok = assertFactToEqualityEngine(eq_i, fact);
+        if (!ok) return false;
+      }
+    }
+  }
+  return true;
+}
+
+bool CoreSolver::check(Theory::Effort e) {
+  Trace("bitvector::core") << "CoreSolver::check \n";
+
+  d_bv->spendResource(options::theoryCheckStep());
+
+  d_checkCalled = true; 
+  Assert (!d_bv->inConflict());
+  ++(d_statistics.d_numCallstoCheck);
+  bool ok = true;
+  std::vector<Node> core_eqs;
+  TNodeBoolMap seen;
+  // slicer does not deal with cardinality constraints yet
+  if (d_useSlicer) {
+    d_isComplete = false; 
+  }
+  while (! done()) {
+    TNode fact = get();
+    if (d_isComplete && !isCompleteForTerm(fact, seen)) {
+      d_isComplete = false;
+    }
+    
+    // only reason about equalities
+    if (fact.getKind() == kind::EQUAL || (fact.getKind() == kind::NOT && fact[0].getKind() == kind::EQUAL)) {
+      if (d_useSlicer) {
+        ok = decomposeFact(fact);
+      } else {
+        ok = assertFactToEqualityEngine(fact, fact);
+      }
+    } else {
+      ok = assertFactToEqualityEngine(fact, fact);
+    }
+    if (!ok)
+      return false;
+  }
+
+  if (Theory::fullEffort(e) && isComplete()) {
+    buildModel();
+  }
+
+  return true;
+}
+
+void CoreSolver::buildModel() {
+  Debug("bv-core") << "CoreSolver::buildModel() \n";
+  d_modelValues.clear();
+  TNodeSet constants;
+  TNodeSet constants_in_eq_engine;
+  // collect constants in equality engine
+  eq::EqClassesIterator eqcs_i = eq::EqClassesIterator(&d_equalityEngine);
+  while (!eqcs_i.isFinished()) {
+    TNode repr = *eqcs_i;
+    if  (repr.getKind() == kind::CONST_BITVECTOR) {
+      // must check if it's just the constant
+      eq::EqClassIterator it(repr, &d_equalityEngine);
+      if (!(++it).isFinished() || true) {
+        constants.insert(repr);
+        constants_in_eq_engine.insert(repr);
+      }
+    }
+    ++eqcs_i;
+  }
+
+  // build repr to value map
+
+  eqcs_i = eq::EqClassesIterator(&d_equalityEngine);
+  while (!eqcs_i.isFinished()) {
+    TNode repr = *eqcs_i;
+    ++eqcs_i;
+
+    if (repr.getKind() != kind::VARIABLE &&
+        repr.getKind() != kind::SKOLEM &&
+        repr.getKind() != kind::CONST_BITVECTOR &&
+        !d_bv->isSharedTerm(repr)) {
+      continue;
+    }
+
+    TypeNode type = repr.getType();
+    if (type.isBitVector() && repr.getKind()!= kind::CONST_BITVECTOR) {
+      Debug("bv-core-model") << "   processing " << repr <<"\n";
+      // we need to assign a value for it
+      TypeEnumerator te(type);
+      Node val;
+      do {
+        val = *te;
+        ++te;
+        // Debug("bv-core-model") << "  trying value " << val << "\n";
+        // Debug("bv-core-model") << "  is in set? " << constants.count(val) << "\n";
+        // Debug("bv-core-model") << "  enumerator done? " << te.isFinished() << "\n";
+      } while (constants.count(val) != 0 && !(te.isFinished()));
+
+      if (te.isFinished() && constants.count(val) != 0) {
+        // if we cannot enumerate anymore values we just return the lemma stating that
+        // at least two of the representatives are equal.
+        std::vector<TNode> representatives;
+        representatives.push_back(repr);
+
+        for (TNodeSet::const_iterator it = constants_in_eq_engine.begin();
+             it != constants_in_eq_engine.end(); ++it) {
+          TNode constant = *it;
+          if (utils::getSize(constant) == utils::getSize(repr)) {
+            representatives.push_back(constant);
+          }
+        }
+        for (ModelValue::const_iterator it = d_modelValues.begin(); it != d_modelValues.end(); ++it) {
+          representatives.push_back(it->first);
+        }
+        std::vector<Node> equalities;
+        for (unsigned i = 0; i < representatives.size(); ++i) {
+          for (unsigned j = i + 1; j < representatives.size(); ++j) {
+            TNode a = representatives[i];
+            TNode b = representatives[j];
+            if (a.getKind() == kind::CONST_BITVECTOR &&
+                b.getKind() == kind::CONST_BITVECTOR) {
+              Assert (a != b);
+              continue;
+            }
+            if (utils::getSize(a) == utils::getSize(b)) {
+              equalities.push_back(utils::mkNode(kind::EQUAL, a, b));
+            }
+          }
+        }
+        // better off letting the SAT solver split on values
+        if (equalities.size() > d_lemmaThreshold) {
+          d_isComplete = false;
+          return;
+        }
+
+        Node lemma = utils::mkOr(equalities);
+        d_bv->lemma(lemma);
+        Debug("bv-core") << "  lemma: " << lemma << "\n";
+        return;
+      }
+    
+      Debug("bv-core-model") << "   " << repr << " => " << val <<"\n" ;
+      constants.insert(val);
+      d_modelValues[repr] = val;
+    }
+  }
+}
+
+bool CoreSolver::assertFactToEqualityEngine(TNode fact, TNode reason) {
+  // Notify the equality engine
+  if (!d_bv->inConflict() && (!d_bv->wasPropagatedBySubtheory(fact) || d_bv->getPropagatingSubtheory(fact) != SUB_CORE)) {
+    Debug("bv-slicer-eq") << "CoreSolver::assertFactToEqualityEngine fact=" << fact << endl;
+    // Debug("bv-slicer-eq") << "                     reason=" << reason << endl;
+    bool negated = fact.getKind() == kind::NOT;
+    TNode predicate = negated ? fact[0] : fact;
+    if (predicate.getKind() == kind::EQUAL) {
+      if (negated) {
+        // dis-equality
+        d_equalityEngine.assertEquality(predicate, false, reason);
+      } else {
+        // equality
+        d_equalityEngine.assertEquality(predicate, true, reason);
+      }
+    } else {
+      // Adding predicate if the congruence over it is turned on
+      if (d_equalityEngine.isFunctionKind(predicate.getKind())) {
+        d_equalityEngine.assertPredicate(predicate, !negated, reason);
+      }
+    }
+  }
+
+  // checking for a conflict
+  if (d_bv->inConflict()) {
+    return false;
+  }
+  return true;
+}
+
+bool CoreSolver::NotifyClass::eqNotifyTriggerEquality(TNode equality, bool value) {
+  Debug("bitvector::core") << "NotifyClass::eqNotifyTriggerEquality(" << equality << ", " << (value ? "true" : "false" )<< ")" << std::endl;
+  if (value) {
+    return d_solver.storePropagation(equality);
+  } else {
+    return d_solver.storePropagation(equality.notNode());
+  }
+}
+
+bool CoreSolver::NotifyClass::eqNotifyTriggerPredicate(TNode predicate, bool value) {
+  Debug("bitvector::core") << "NotifyClass::eqNotifyTriggerPredicate(" << predicate << ", " << (value ? "true" : "false" ) << ")" << std::endl;
+  if (value) {
+    return d_solver.storePropagation(predicate);
+  } else {
+    return d_solver.storePropagation(predicate.notNode());
+  }
+}
+
+bool CoreSolver::NotifyClass::eqNotifyTriggerTermEquality(TheoryId tag, TNode t1, TNode t2, bool value) {
+  Debug("bitvector::core") << "NotifyClass::eqNotifyTriggerTermMerge(" << t1 << ", " << t2 << ")" << std::endl;
+  if (value) {
+    return d_solver.storePropagation(t1.eqNode(t2));
+  } else {
+    return d_solver.storePropagation(t1.eqNode(t2).notNode());
+  }
+}
+
+void CoreSolver::NotifyClass::eqNotifyConstantTermMerge(TNode t1, TNode t2) {
+  d_solver.conflict(t1, t2);
+}
+
+void CoreSolver::NotifyClass::eqNotifyNewClass(TNode t) {
+  d_solver.eqNotifyNewClass( t );
+}
+
+bool CoreSolver::storePropagation(TNode literal) {
+  return d_bv->storePropagation(literal, SUB_CORE);
+}
+
+void CoreSolver::conflict(TNode a, TNode b) {
+  std::vector<TNode> assumptions;
+  d_equalityEngine.explainEquality(a, b, true, assumptions);
+  Node conflict = flattenAnd(assumptions);
+  d_bv->setConflict(conflict);
+}
+
+void CoreSolver::eqNotifyNewClass(TNode t) {
+  Assert( d_bv->getExtTheory()!=NULL );
+  d_bv->getExtTheory()->registerTerm( t );
+}
+
+bool CoreSolver::isCompleteForTerm(TNode term, TNodeBoolMap& seen) {
+  if (d_useSlicer)
+    return utils::isCoreTerm(term, seen);
+  
+  return utils::isEqualityTerm(term, seen); 
+}
+
+void CoreSolver::collectModelInfo(TheoryModel* m, bool fullModel) {
+  if (d_useSlicer) {
+    Unreachable(); 
+  }
+  if (Debug.isOn("bitvector-model")) {
+    context::CDQueue<Node>::const_iterator it = d_assertionQueue.begin();
+    for (; it!= d_assertionQueue.end(); ++it) {
+      Debug("bitvector-model") << "CoreSolver::collectModelInfo (assert "
+                               << *it << ")\n";
+    }
+  }
+  set<Node> termSet;
+  d_bv->computeRelevantTerms(termSet);
+  m->assertEqualityEngine(&d_equalityEngine, &termSet);
+  if (isComplete()) {
+    Debug("bitvector-model") << "CoreSolver::collectModelInfo complete.";
+    for (ModelValue::const_iterator it = d_modelValues.begin(); it != d_modelValues.end(); ++it) {
+      Node a = it->first;
+      Node b = it->second;
+      Debug("bitvector-model") << "CoreSolver::collectModelInfo modelValues "
+                               << a << " => " << b <<")\n"; 
+      m->assertEquality(a, b, true);
+    }
+  }
+}
+
+Node CoreSolver::getModelValue(TNode var) {
+  // we don't need to evaluate bv expressions and only look at variable values
+  // because this only gets called when the core theory is complete (i.e. no other bv
+  // function symbols are currently asserted)
+  Assert (d_slicer->isCoreTerm(var));
+
+  Debug("bitvector-model") << "CoreSolver::getModelValue (" << var <<")";
+  Assert (isComplete());
+  TNode repr = d_equalityEngine.getRepresentative(var);
+  Node result = Node();
+  if (repr.getKind() == kind::CONST_BITVECTOR) {
+    result = repr;
+  } else if (d_modelValues.find(repr) == d_modelValues.end()) {
+    // it may be a shared term that never gets asserted
+    // result is just Null
+    Assert(d_bv->isSharedTerm(var));
+  } else {
+    result = d_modelValues[repr];
+  }
+  Debug("bitvector-model") << " => " << result <<"\n";
+  return result;
+}
+
+CoreSolver::Statistics::Statistics()
+  : d_numCallstoCheck("theory::bv::CoreSolver::NumCallsToCheck", 0)
+  , d_slicerEnabled("theory::bv::CoreSolver::SlicerEnabled", false)
+{
+  smtStatisticsRegistry()->registerStat(&d_numCallstoCheck);
+  smtStatisticsRegistry()->registerStat(&d_slicerEnabled);
+}
+CoreSolver::Statistics::~Statistics() {
+  smtStatisticsRegistry()->unregisterStat(&d_numCallstoCheck);
+  smtStatisticsRegistry()->unregisterStat(&d_slicerEnabled);
+}
diff --git a/src/theory/bv/bv_subtheory_core.h b/src/theory/bv/bv_subtheory_core.h
new file mode 100644
index 0000000..22219b5
--- /dev/null
+++ b/src/theory/bv/bv_subtheory_core.h
@@ -0,0 +1,129 @@
+/*********************                                                        */
+/*! \file bv_subtheory_core.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Algebraic solver.
+ **
+ ** Algebraic solver.
+ **/
+
+#pragma once
+
+#include "cvc4_private.h"
+#include "theory/bv/bv_subtheory.h"
+#include "context/cdhashmap.h"
+#include "context/cdhashset.h"
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+class Slicer;
+class Base;
+/**
+ * Bitvector equality solver
+ */
+class CoreSolver : public SubtheorySolver {
+  typedef __gnu_cxx::hash_map<TNode, Node, TNodeHashFunction> ModelValue;
+  typedef __gnu_cxx::hash_map<TNode, bool, TNodeHashFunction> TNodeBoolMap;
+  typedef __gnu_cxx::hash_set<TNode, TNodeHashFunction> TNodeSet;
+
+
+  struct Statistics {
+    IntStat d_numCallstoCheck;
+    BackedStat<bool> d_slicerEnabled;
+    Statistics();
+    ~Statistics();
+  };
+
+  // NotifyClass: handles call-back from congruence closure module
+  class NotifyClass : public eq::EqualityEngineNotify {
+    CoreSolver& d_solver;
+
+  public:
+    NotifyClass(CoreSolver& solver): d_solver(solver) {}
+    bool eqNotifyTriggerEquality(TNode equality, bool value);
+    bool eqNotifyTriggerPredicate(TNode predicate, bool value);
+    bool eqNotifyTriggerTermEquality(TheoryId tag, TNode t1, TNode t2, bool value);
+    void eqNotifyConstantTermMerge(TNode t1, TNode t2);
+    void eqNotifyNewClass(TNode t);
+    void eqNotifyPreMerge(TNode t1, TNode t2) { }
+    void eqNotifyPostMerge(TNode t1, TNode t2) { }
+    void eqNotifyDisequal(TNode t1, TNode t2, TNode reason) { }
+  };
+
+
+  /** The notify class for d_equalityEngine */
+  NotifyClass d_notify;
+
+  /** Equality engine */
+  eq::EqualityEngine d_equalityEngine;
+
+  /** Store a propagation to the bv solver */
+  bool storePropagation(TNode literal);
+
+  /** Store a conflict from merging two constants */
+  void conflict(TNode a, TNode b);
+
+  /** new equivalence class */
+  void eqNotifyNewClass(TNode t);
+
+  Slicer* d_slicer;
+  context::CDO<bool> d_isComplete;
+  unsigned d_lemmaThreshold;
+  
+  /** Used to ensure that the core slicer is used properly*/
+  bool d_useSlicer;
+  bool d_preregisterCalled;
+  bool d_checkCalled;
+  
+  /** To make sure we keep the explanations */
+  context::CDHashSet<Node, NodeHashFunction> d_reasons;
+  ModelValue d_modelValues;
+  void buildModel();
+  bool assertFactToEqualityEngine(TNode fact, TNode reason);
+  bool decomposeFact(TNode fact);
+  Node getBaseDecomposition(TNode a);
+  bool isCompleteForTerm(TNode term, TNodeBoolMap& seen);
+  Statistics d_statistics;
+public:
+  CoreSolver(context::Context* c, TheoryBV* bv);
+  ~CoreSolver();
+  bool  isComplete() { return d_isComplete; }
+  void  setMasterEqualityEngine(eq::EqualityEngine* eq);
+  void  preRegister(TNode node);
+  bool  check(Theory::Effort e);
+  void  explain(TNode literal, std::vector<TNode>& assumptions);
+  void  collectModelInfo(TheoryModel* m, bool fullModel);
+  Node  getModelValue(TNode var);
+  void  addSharedTerm(TNode t) {
+    d_equalityEngine.addTriggerTerm(t, THEORY_BV);
+  }
+  EqualityStatus getEqualityStatus(TNode a, TNode b) {
+    if (d_equalityEngine.areEqual(a, b)) {
+      // The terms are implied to be equal
+      return EQUALITY_TRUE;
+    }
+    if (d_equalityEngine.areDisequal(a, b, false)) {
+      // The terms are implied to be dis-equal
+      return EQUALITY_FALSE;
+    }
+    return EQUALITY_UNKNOWN;
+  }
+  bool hasTerm(TNode node) const { return d_equalityEngine.hasTerm(node); }
+  void addTermToEqualityEngine(TNode node) { d_equalityEngine.addTerm(node); }
+  void enableSlicer();
+  eq::EqualityEngine * getEqualityEngine() { return &d_equalityEngine; }
+};
+
+
+}
+}
+}
diff --git a/src/theory/bv/bv_subtheory_inequality.cpp b/src/theory/bv/bv_subtheory_inequality.cpp
new file mode 100644
index 0000000..1fe0962
--- /dev/null
+++ b/src/theory/bv/bv_subtheory_inequality.cpp
@@ -0,0 +1,240 @@
+/*********************                                                        */
+/*! \file bv_subtheory_inequality.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Algebraic solver.
+ **
+ ** Algebraic solver.
+ **/
+
+#include "theory/bv/bv_subtheory_inequality.h"
+
+#include "options/smt_options.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/bv/theory_bv.h"
+#include "theory/bv/theory_bv_utils.h"
+#include "theory/theory_model.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::bv;
+using namespace CVC4::theory::bv::utils;
+
+bool InequalitySolver::check(Theory::Effort e) {
+  Debug("bv-subtheory-inequality") << "InequalitySolveR::check("<< e <<")\n";
+  ++(d_statistics.d_numCallstoCheck);
+  d_bv->spendResource(options::theoryCheckStep());
+
+  bool ok = true;
+  while (!done() && ok) {
+    TNode fact = get();
+    Debug("bv-subtheory-inequality") << "  "<< fact <<"\n";
+    if (fact.getKind() == kind::EQUAL) {
+      TNode a = fact[0];
+      if( a.getType().isBitVector() ){
+        TNode b = fact[1];
+        ok = addInequality(a, b, false, fact);
+        if (ok)
+          ok = addInequality(b, a, false, fact);
+      }
+    } else if (fact.getKind() == kind::NOT && fact[0].getKind() == kind::EQUAL) {
+      TNode a = fact[0][0];
+      if( a.getType().isBitVector() ){
+        TNode b = fact[0][1];
+        ok = d_inequalityGraph.addDisequality(a, b, fact);
+      }
+    }
+    if (fact.getKind() == kind::NOT && fact[0].getKind() == kind::BITVECTOR_ULE) {
+      TNode a = fact[0][1];
+      TNode b = fact[0][0];
+      ok = addInequality(a, b, true, fact);
+      // propagate
+      // if (d_bv->isSharedTerm(a) && d_bv->isSharedTerm(b)) {
+      //   Node neq = utils::mkNode(kind::NOT, utils::mkNode(kind::EQUAL, a, b));
+      //   d_bv->storePropagation(neq, SUB_INEQUALITY);
+      //   d_explanations[neq] = fact;
+      // }
+    } else if (fact.getKind() == kind::NOT && fact[0].getKind() == kind::BITVECTOR_ULT) {
+      TNode a = fact[0][1];
+      TNode b = fact[0][0];
+      ok = addInequality(a, b, false, fact);
+    } else if (fact.getKind() == kind::BITVECTOR_ULT) {
+      TNode a = fact[0];
+      TNode b = fact[1];
+      ok = addInequality(a, b, true, fact);
+      // propagate
+      // if (d_bv->isSharedTerm(a) && d_bv->isSharedTerm(b)) {
+      //   Node neq = utils::mkNode(kind::NOT, utils::mkNode(kind::EQUAL, a, b));
+      //   d_bv->storePropagation(neq, SUB_INEQUALITY);
+      //   d_explanations[neq] = fact;
+      // }
+    } else if (fact.getKind() == kind::BITVECTOR_ULE) {
+      TNode a = fact[0];
+      TNode b = fact[1];
+      ok = addInequality(a, b, false, fact);
+    }
+  }
+
+  if (!ok) {
+    std::vector<TNode> conflict;
+    d_inequalityGraph.getConflict(conflict);
+    Node confl = utils::flattenAnd(conflict);
+    d_bv->setConflict(confl);
+    Debug("bv-subtheory-inequality") << "InequalitySolver::conflict:  "<< confl <<"\n";
+    return false;
+  }
+
+  if (isComplete() && Theory::fullEffort(e)) {
+    // make sure all the disequalities we didn't split on are still satisifed
+    // and split on the ones that are not
+    std::vector<Node> lemmas;
+    d_inequalityGraph.checkDisequalities(lemmas);
+    for(unsigned i = 0; i < lemmas.size(); ++i) {
+      d_bv->lemma(lemmas[i]);
+    }
+  }
+  Debug("bv-subtheory-inequality") << "InequalitySolver done. ";
+  return true;
+}
+
+EqualityStatus InequalitySolver::getEqualityStatus(TNode a, TNode b) {
+  if (!isComplete())
+    return EQUALITY_UNKNOWN;
+
+  Node a_lt_b = utils::mkNode(kind::BITVECTOR_ULT, a, b);
+  Node b_lt_a = utils::mkNode(kind::BITVECTOR_ULT, b, a);
+
+  // if an inequality containing the terms has been asserted then we know
+  // the equality is false
+  if (d_assertionSet.contains(a_lt_b) || d_assertionSet.contains(b_lt_a)) {
+    return EQUALITY_FALSE;
+  }
+
+  if (!d_inequalityGraph.hasValueInModel(a) ||
+      !d_inequalityGraph.hasValueInModel(b)) {
+    return EQUALITY_UNKNOWN;
+  }
+
+  // TODO: check if this disequality is entailed by inequalities via transitivity
+
+  BitVector a_val = d_inequalityGraph.getValueInModel(a);
+  BitVector b_val = d_inequalityGraph.getValueInModel(b);
+
+  if (a_val == b_val) {
+    return EQUALITY_TRUE_IN_MODEL;
+  } else {
+    return EQUALITY_FALSE_IN_MODEL;
+  }
+}
+
+void InequalitySolver::assertFact(TNode fact) {
+  d_assertionQueue.push_back(fact);
+  d_assertionSet.insert(fact);
+  if (!isInequalityOnly(fact)) {
+    d_isComplete = false;
+  }
+}
+
+bool InequalitySolver::isInequalityOnly(TNode node) {
+  if (node.getKind() == kind::NOT) {
+    node = node[0];
+  }
+
+  if (node.getAttribute(IneqOnlyComputedAttribute())) {
+    return node.getAttribute(IneqOnlyAttribute());
+  }
+
+  if (node.getKind() != kind::EQUAL &&
+      node.getKind() != kind::BITVECTOR_ULT &&
+      node.getKind() != kind::BITVECTOR_ULE &&
+      node.getKind() != kind::CONST_BITVECTOR &&
+      node.getKind() != kind::SELECT &&
+      node.getKind() != kind::STORE &&
+      node.getMetaKind() != kind::metakind::VARIABLE) {
+    // not worth caching
+    return false;
+  }
+  bool res = true;
+  for (unsigned i = 0; res && i < node.getNumChildren(); ++i) {
+    res = res && isInequalityOnly(node[i]);
+  }
+  node.setAttribute(IneqOnlyComputedAttribute(), true);
+  node.setAttribute(IneqOnlyAttribute(), res);
+  return res;
+}
+
+void InequalitySolver::explain(TNode literal, std::vector<TNode>& assumptions) {
+  Assert (d_explanations.find(literal) != d_explanations.end());
+  TNode explanation = d_explanations[literal];
+  assumptions.push_back(explanation);
+  Debug("bv-inequality-explain") << "InequalitySolver::explain " << literal << " with " << explanation <<"\n";
+}
+
+void InequalitySolver::propagate(Theory::Effort e) {
+  Assert (false);
+}
+
+void InequalitySolver::collectModelInfo(TheoryModel* m, bool fullModel) {
+  Debug("bitvector-model") << "InequalitySolver::collectModelInfo \n";
+  std::vector<Node> model;
+  d_inequalityGraph.getAllValuesInModel(model);
+  for (unsigned i = 0; i < model.size(); ++i) {
+    Assert (model[i].getKind() == kind::EQUAL);
+    m->assertEquality(model[i][0], model[i][1], true);
+  }
+}
+
+Node InequalitySolver::getModelValue(TNode var) {
+  Assert (isInequalityOnly(var));
+  Debug("bitvector-model") << "InequalitySolver::getModelValue (" << var <<")";
+  Assert (isComplete());
+  Node result = Node();
+  if (!d_inequalityGraph.hasValueInModel(var)) {
+    Assert (d_bv->isSharedTerm(var));
+  } else {
+    BitVector val = d_inequalityGraph.getValueInModel(var);
+    result = utils::mkConst(val);
+  }
+  Debug("bitvector-model") << " => " << result <<"\n";
+  return result;
+}
+
+void InequalitySolver::preRegister(TNode node) {
+  Kind kind = node.getKind(); 
+  if (kind == kind::EQUAL ||
+      kind == kind::BITVECTOR_ULE ||
+      kind == kind::BITVECTOR_ULT) {
+    d_ineqTerms.insert(node[0]);
+    d_ineqTerms.insert(node[1]);
+  }
+}
+
+bool InequalitySolver::addInequality(TNode a, TNode b, bool strict, TNode fact) {
+  bool ok = d_inequalityGraph.addInequality(a, b, strict, fact);
+  if (!ok || !strict) return ok;
+
+  Node one = utils::mkConst(utils::getSize(a), 1);
+  Node a_plus_one = Rewriter::rewrite(utils::mkNode(kind::BITVECTOR_PLUS, a, one));
+  if (d_ineqTerms.find(a_plus_one) != d_ineqTerms.end()) {
+    ok = d_inequalityGraph.addInequality(a_plus_one, b, false, fact);
+  }
+  return ok;
+}
+
+InequalitySolver::Statistics::Statistics()
+  : d_numCallstoCheck("theory::bv::InequalitySolver::NumCallsToCheck", 0)
+{
+  smtStatisticsRegistry()->registerStat(&d_numCallstoCheck);
+}
+InequalitySolver::Statistics::~Statistics() {
+  smtStatisticsRegistry()->unregisterStat(&d_numCallstoCheck);
+}
diff --git a/src/theory/bv/bv_subtheory_inequality.h b/src/theory/bv/bv_subtheory_inequality.h
new file mode 100644
index 0000000..617e3b7
--- /dev/null
+++ b/src/theory/bv/bv_subtheory_inequality.h
@@ -0,0 +1,81 @@
+/*********************                                                        */
+/*! \file bv_subtheory_inequality.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Andrew Reynolds, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Algebraic solver.
+ **
+ ** Algebraic solver.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__BV__BV_SUBTHEORY__INEQUALITY_H
+#define __CVC4__THEORY__BV__BV_SUBTHEORY__INEQUALITY_H
+
+#include "theory/bv/bv_subtheory.h"
+#include "theory/bv/bv_inequality_graph.h"
+#include "context/cdhashset.h"
+#include "expr/attribute.h"
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+/** Cache for InequalitySolver::isInequalityOnly() */
+struct IneqOnlyAttributeId {};
+typedef expr::Attribute<IneqOnlyAttributeId, bool> IneqOnlyAttribute;
+
+/** Whether the above has been computed yet or not for an expr */
+struct IneqOnlyComputedAttributeId {};
+typedef expr::Attribute<IneqOnlyComputedAttributeId, bool> IneqOnlyComputedAttribute;
+
+class InequalitySolver: public SubtheorySolver {
+  struct Statistics {
+    IntStat d_numCallstoCheck;
+    Statistics();
+    ~Statistics();
+  };
+
+  context::CDHashSet<Node, NodeHashFunction> d_assertionSet;
+  InequalityGraph d_inequalityGraph;
+  context::CDHashMap<Node, TNode, NodeHashFunction> d_explanations;
+  context::CDO<bool> d_isComplete;
+  typedef __gnu_cxx::hash_set<Node, NodeHashFunction> NodeSet;
+  NodeSet d_ineqTerms;
+  bool isInequalityOnly(TNode node);
+  bool addInequality(TNode a, TNode b, bool strict, TNode fact);
+  Statistics d_statistics;
+public:
+  InequalitySolver(context::Context* c, context::Context* u, TheoryBV* bv)
+    : SubtheorySolver(c, bv),
+      d_assertionSet(c),
+      d_inequalityGraph(c, u),
+      d_explanations(c),
+      d_isComplete(c, true),
+      d_ineqTerms(),
+      d_statistics()
+  {}
+
+  bool check(Theory::Effort e);
+  void propagate(Theory::Effort e);
+  void explain(TNode literal, std::vector<TNode>& assumptions);
+  bool isComplete() { return d_isComplete; }
+  void collectModelInfo(TheoryModel* m, bool fullModel);
+  Node getModelValue(TNode var);
+  EqualityStatus getEqualityStatus(TNode a, TNode b);
+  void assertFact(TNode fact);
+  void preRegister(TNode node);
+};
+
+}
+}
+}
+
+#endif /* __CVC4__THEORY__BV__BV_SUBTHEORY__INEQUALITY_H */
diff --git a/src/theory/bv/bv_to_bool.cpp b/src/theory/bv/bv_to_bool.cpp
new file mode 100644
index 0000000..5b7fe16
--- /dev/null
+++ b/src/theory/bv/bv_to_bool.cpp
@@ -0,0 +1,373 @@
+/*********************                                                        */
+/*! \file bv_to_bool.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Preprocessing pass that lifts bit-vectors of size 1 to booleans.
+ **
+ ** Preprocessing pass that lifts bit-vectors of size 1 to booleans.
+ **/
+#include "theory/bv/bv_to_bool.h"
+
+#include "smt_util/node_visitor.h"
+#include "smt/smt_statistics_registry.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::theory;
+using namespace CVC4::theory::bv;
+
+BvToBoolPreprocessor::BvToBoolPreprocessor()
+  : d_liftCache()
+  , d_boolCache()
+  , d_one(utils::mkConst(BitVector(1, 1u)))
+  , d_zero(utils::mkConst(BitVector(1, 0u)))
+  , d_statistics()
+{}
+
+void BvToBoolPreprocessor::addToLiftCache(TNode term, Node new_term) {
+  Assert (new_term != Node());
+  Assert (!hasLiftCache(term));
+  Assert (term.getType() == new_term.getType());
+  d_liftCache[term] = new_term; 
+}
+
+Node BvToBoolPreprocessor::getLiftCache(TNode term) const {
+  Assert(hasLiftCache(term)); 
+  return d_liftCache.find(term)->second; 
+}
+
+bool BvToBoolPreprocessor::hasLiftCache(TNode term) const {
+  return d_liftCache.find(term) != d_liftCache.end(); 
+}
+
+void BvToBoolPreprocessor::addToBoolCache(TNode term, Node new_term) {
+  Assert (new_term != Node()); 
+  Assert (!hasBoolCache(term));
+  Assert (utils::getSize(term) == 1);
+  Assert (new_term.getType().isBoolean());
+  d_boolCache[term] = new_term; 
+}
+
+Node BvToBoolPreprocessor::getBoolCache(TNode term) const {
+  Assert(hasBoolCache(term)); 
+  return d_boolCache.find(term)->second; 
+}
+
+bool BvToBoolPreprocessor::hasBoolCache(TNode term) const {
+  return d_boolCache.find(term) != d_boolCache.end(); 
+}
+bool BvToBoolPreprocessor::isConvertibleBvAtom(TNode node) {
+  Kind kind = node.getKind();
+  return (kind == kind::EQUAL &&
+          node[0].getType().isBitVector() &&
+          node[0].getType().getBitVectorSize() == 1 &&
+          node[1].getType().isBitVector() &&
+          node[1].getType().getBitVectorSize() == 1 &&
+          node[0].getKind() != kind::BITVECTOR_EXTRACT &&
+          node[1].getKind() != kind::BITVECTOR_EXTRACT); 
+}
+
+bool BvToBoolPreprocessor::isConvertibleBvTerm(TNode node) {
+  if (!node.getType().isBitVector() ||
+      node.getType().getBitVectorSize() != 1)
+    return false;
+
+  Kind kind = node.getKind();
+  
+  if (kind == kind::CONST_BITVECTOR ||
+      kind == kind::ITE ||
+      kind == kind::BITVECTOR_AND ||
+      kind == kind::BITVECTOR_OR ||
+      kind == kind::BITVECTOR_NOT ||
+      kind == kind::BITVECTOR_XOR ||
+      kind == kind::BITVECTOR_COMP) {
+    return true; 
+  }
+
+  return false; 
+}
+
+Node BvToBoolPreprocessor::convertBvAtom(TNode node) {
+  Assert (node.getType().isBoolean() &&
+          node.getKind() == kind::EQUAL);
+  Assert (utils::getSize(node[0]) == 1);
+  Assert (utils::getSize(node[1]) == 1);
+  Node a = convertBvTerm(node[0]);
+  Node b = convertBvTerm(node[1]);
+  Node result = utils::mkNode(kind::EQUAL, a, b); 
+  Debug("bv-to-bool") << "BvToBoolPreprocessor::convertBvAtom " << node <<" => " << result << "\n";
+
+  ++(d_statistics.d_numAtomsLifted);
+  return result;
+}
+
+Node BvToBoolPreprocessor::convertBvTerm(TNode node) {
+  Assert (node.getType().isBitVector() &&
+          node.getType().getBitVectorSize() == 1);
+
+  if (hasBoolCache(node))
+    return getBoolCache(node);
+  
+  if (!isConvertibleBvTerm(node)) {
+    ++(d_statistics.d_numTermsForcedLifted);
+    Node result = utils::mkNode(kind::EQUAL, node, d_one);
+    addToBoolCache(node, result);
+    Debug("bv-to-bool") << "BvToBoolPreprocessor::convertBvTerm " << node <<" => " << result << "\n"; 
+    return result;
+  }
+
+  if (node.getNumChildren() == 0) {
+    Assert (node.getKind() == kind::CONST_BITVECTOR);
+    Node result = node == d_one ? utils::mkTrue() : utils::mkFalse();
+    // addToCache(node, result);
+    Debug("bv-to-bool") << "BvToBoolPreprocessor::convertBvTerm " << node <<" => " << result << "\n"; 
+    return result; 
+  }
+
+  ++(d_statistics.d_numTermsLifted);
+  
+  Kind kind = node.getKind();
+  if (kind == kind::ITE) {
+    Node cond = liftNode(node[0]);
+    Node true_branch = convertBvTerm(node[1]);
+    Node false_branch = convertBvTerm(node[2]);
+    Node result = utils::mkNode(kind::ITE, cond, true_branch, false_branch);
+    addToBoolCache(node, result);
+    Debug("bv-to-bool") << "BvToBoolPreprocessor::convertBvTerm " << node <<" => " << result << "\n"; 
+    return result; 
+  }
+
+  Kind new_kind;
+  // special case for XOR as it has to be binary
+  // while BITVECTOR_XOR can be n-ary
+  if (kind == kind::BITVECTOR_XOR) {
+    new_kind = kind::XOR;
+    Node result = convertBvTerm(node[0]);
+    for (unsigned i = 1; i < node.getNumChildren(); ++i) {
+      Node converted = convertBvTerm(node[i]);
+      result = utils::mkNode(kind::XOR, result, converted); 
+    }
+    Debug("bv-to-bool") << "BvToBoolPreprocessor::convertBvTerm " << node <<" => " << result << "\n"; 
+    return result; 
+  }
+
+  if (kind == kind::BITVECTOR_COMP) {
+    Node result = utils::mkNode(kind::EQUAL, node[0], node[1]);
+    addToBoolCache(node, result);
+    Debug("bv-to-bool") << "BvToBoolPreprocessor::convertBvTerm " << node <<" => " << result << "\n"; 
+    return result; 
+  }
+
+  switch(kind) {
+  case kind::BITVECTOR_OR:
+    new_kind = kind::OR;
+    break;
+  case kind::BITVECTOR_AND:
+    new_kind = kind::AND;
+    break;
+  case kind::BITVECTOR_XOR:
+    new_kind = kind::XOR;
+    break;
+  case kind::BITVECTOR_NOT:
+    new_kind = kind::NOT;
+    break;
+  default:
+    Unhandled(); 
+  }
+
+  NodeBuilder<> builder(new_kind);
+  for (unsigned i = 0; i < node.getNumChildren(); ++i) {
+    builder << convertBvTerm(node[i]); 
+  }
+  
+  Node result = builder;
+  addToBoolCache(node, result);
+  Debug("bv-to-bool") << "BvToBoolPreprocessor::convertBvTerm " << node <<" => " << result << "\n"; 
+  return result; 
+}
+
+
+
+Node BvToBoolPreprocessor::liftNode(TNode current) {
+  Node result;
+  
+  if (hasLiftCache(current)) {
+    result = getLiftCache(current); 
+  }else if (isConvertibleBvAtom(current)) {
+    result = convertBvAtom(current);
+    addToLiftCache(current, result);
+  } else {
+    if (current.getNumChildren() == 0) {
+      result = current;
+    } else {
+      NodeBuilder<> builder(current.getKind());
+      if (current.getMetaKind() == kind::metakind::PARAMETERIZED) {
+        builder << current.getOperator();
+      }
+      for (unsigned i = 0; i < current.getNumChildren(); ++i) {
+        Node converted = liftNode(current[i]);
+        Assert (converted.getType() == current[i].getType()); 
+        builder << converted; 
+      }
+      result = builder;
+      addToLiftCache(current, result);
+    }
+  }
+  Assert (result != Node());
+  Assert(result.getType() == current.getType());
+  Debug("bv-to-bool") << "BvToBoolPreprocessor::liftNode " << current << " => \n" << result << "\n"; 
+  return result; 
+}
+
+void BvToBoolPreprocessor::liftBvToBool(const std::vector<Node>& assertions, std::vector<Node>& new_assertions) {
+  for (unsigned i = 0; i < assertions.size(); ++i) {
+    Node new_assertion = liftNode(assertions[i]);
+    new_assertions.push_back(new_assertion);
+    Trace("bv-to-bool") << "  " << assertions[i] <<" => " << new_assertions[i] <<"\n"; 
+  }
+}
+
+BvToBoolPreprocessor::Statistics::Statistics()
+  : d_numTermsLifted("theory::bv::BvToBoolPreprocess::NumberOfTermsLifted", 0)
+  , d_numAtomsLifted("theory::bv::BvToBoolPreprocess::NumberOfAtomsLifted", 0)
+  , d_numTermsForcedLifted("theory::bv::BvToBoolPreprocess::NumberOfTermsForcedLifted", 0)
+  , d_numTermsLowered("theory::bv::BvToBoolPreprocess::NumberOfTermsLowered", 0)
+  , d_numAtomsLowered("theory::bv::BvToBoolPreprocess::NumberOfAtomsLowered", 0)    
+  , d_numTermsForcedLowered("theory::bv::BvToBoolPreprocess::NumberOfTermsForcedLowered", 0)
+{
+  smtStatisticsRegistry()->registerStat(&d_numTermsLifted);
+  smtStatisticsRegistry()->registerStat(&d_numAtomsLifted);
+  smtStatisticsRegistry()->registerStat(&d_numTermsForcedLifted);
+  smtStatisticsRegistry()->registerStat(&d_numTermsLowered);
+  smtStatisticsRegistry()->registerStat(&d_numAtomsLowered);
+  smtStatisticsRegistry()->registerStat(&d_numTermsForcedLowered);
+}
+
+BvToBoolPreprocessor::Statistics::~Statistics() {
+  smtStatisticsRegistry()->unregisterStat(&d_numTermsLifted);
+  smtStatisticsRegistry()->unregisterStat(&d_numAtomsLifted);
+  smtStatisticsRegistry()->unregisterStat(&d_numTermsForcedLifted);
+  smtStatisticsRegistry()->unregisterStat(&d_numTermsLowered);
+  smtStatisticsRegistry()->unregisterStat(&d_numAtomsLowered);
+  smtStatisticsRegistry()->unregisterStat(&d_numTermsForcedLowered);
+}
+
+void BvToBoolPreprocessor::addToLowerCache(TNode term, Node new_term) {
+  Assert (new_term != Node());
+  Assert (!hasLowerCache(term));
+  d_lowerCache[term] = new_term; 
+}
+
+Node BvToBoolPreprocessor::getLowerCache(TNode term) const {
+  Assert(hasLowerCache(term)); 
+  return d_lowerCache.find(term)->second; 
+}
+
+bool BvToBoolPreprocessor::hasLowerCache(TNode term) const {
+  return d_lowerCache.find(term) != d_lowerCache.end(); 
+}
+
+Node BvToBoolPreprocessor::lowerNode(TNode current, bool topLevel) {
+  Node result;
+  if (hasLowerCache(current)) {
+    result = getLowerCache(current); 
+  } else {
+    if (current.getNumChildren() == 0) {
+      if (current.getKind() == kind::CONST_BOOLEAN) {
+        result = (current == utils::mkTrue()) ? d_one : d_zero;
+      } else {
+        result = current;
+      }
+    } else {
+      Kind kind = current.getKind();
+      Kind new_kind = kind;
+      switch(kind) {
+        case kind::EQUAL:
+          new_kind = kind::BITVECTOR_COMP;
+          break;
+        case kind::AND:
+          new_kind = kind::BITVECTOR_AND;
+          break;
+        case kind::OR:
+          new_kind = kind::BITVECTOR_OR;
+          break;
+        case kind::NOT:
+          new_kind = kind::BITVECTOR_NOT;
+          break;
+        case kind::XOR:
+          new_kind = kind::BITVECTOR_XOR;
+          break;
+        case kind::ITE:
+          if (current.getType().isBitVector() || current.getType().isBoolean()) {
+            new_kind = kind::BITVECTOR_ITE;
+          }
+          break;
+        case kind::BITVECTOR_ULT:
+          new_kind = kind::BITVECTOR_ULTBV;
+          break;
+        case kind::BITVECTOR_SLT:
+          new_kind = kind::BITVECTOR_SLTBV;
+          break;
+        case kind::BITVECTOR_ULE:
+        case kind::BITVECTOR_UGT:
+        case kind::BITVECTOR_UGE:
+        case kind::BITVECTOR_SLE:
+        case kind::BITVECTOR_SGT:
+        case kind::BITVECTOR_SGE:
+          // Should have been removed by rewriting.
+          Unreachable();
+        default:
+          break;
+      }
+      NodeBuilder<> builder(new_kind);
+      if (kind != new_kind) {
+        ++(d_statistics.d_numTermsLowered);
+      }
+      if (current.getMetaKind() == kind::metakind::PARAMETERIZED) {
+        builder << current.getOperator();
+      }
+      Node converted;
+      if (new_kind == kind::ITE) {
+        // Special-case ITE because need condition to be Boolean.
+        converted = lowerNode(current[0], true);
+        builder << converted;
+        converted = lowerNode(current[1]);
+        builder << converted;
+        converted = lowerNode(current[2]);
+        builder << converted;
+      } else {
+        for (unsigned i = 0; i < current.getNumChildren(); ++i) {
+          converted = lowerNode(current[i]);
+          builder << converted; 
+        }
+      }
+      result = builder;
+    }
+    if (result.getType().isBoolean()) {
+      ++(d_statistics.d_numTermsForcedLowered);
+      result = utils::mkNode(kind::ITE, result, d_one, d_zero);
+    }
+    addToLowerCache(current, result);
+  }
+  if (topLevel) {
+    result = utils::mkNode(kind::EQUAL, result, d_one);
+  }
+  Assert (result != Node());
+  Debug("bool-to-bv") << "BvToBoolPreprocessor::lowerNode " << current << " => \n" << result << "\n"; 
+  return result; 
+}
+
+void BvToBoolPreprocessor::lowerBoolToBv(const std::vector<Node>& assertions, std::vector<Node>& new_assertions) {
+  for (unsigned i = 0; i < assertions.size(); ++i) {
+    Node new_assertion = lowerNode(assertions[i], true);
+    new_assertions.push_back(new_assertion);
+    Trace("bool-to-bv") << "  " << assertions[i] <<" => " << new_assertions[i] <<"\n"; 
+  }
+}
diff --git a/src/theory/bv/bv_to_bool.h b/src/theory/bv/bv_to_bool.h
new file mode 100644
index 0000000..7e351c9
--- /dev/null
+++ b/src/theory/bv/bv_to_bool.h
@@ -0,0 +1,84 @@
+/*********************                                                        */
+/*! \file bv_to_bool.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Preprocessing pass that lifts bit-vectors of size 1 to booleans.
+ **
+ ** Preprocessing pass that lifts bit-vectors of size 1 to booleans.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__BV__BV_TO_BOOL_H
+#define __CVC4__THEORY__BV__BV_TO_BOOL_H
+
+#include "theory/bv/theory_bv_utils.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+typedef __gnu_cxx::hash_map<Node, Node, NodeHashFunction> NodeNodeMap;
+
+class BvToBoolPreprocessor {
+
+  struct Statistics {
+    IntStat d_numTermsLifted;
+    IntStat d_numAtomsLifted;
+    IntStat d_numTermsForcedLifted;
+    IntStat d_numTermsLowered;
+    IntStat d_numAtomsLowered;
+    IntStat d_numTermsForcedLowered;
+    Statistics();
+    ~Statistics();
+  };
+  
+  NodeNodeMap d_liftCache;
+  NodeNodeMap d_boolCache;
+  Node d_one;
+  Node d_zero;
+
+  void addToBoolCache(TNode term, Node new_term);
+  Node getBoolCache(TNode term) const;
+  bool hasBoolCache(TNode term) const; 
+
+  void addToLiftCache(TNode term, Node new_term);
+  Node getLiftCache(TNode term) const;
+  bool hasLiftCache(TNode term) const; 
+  
+  bool isConvertibleBvTerm(TNode node);
+  bool isConvertibleBvAtom(TNode node);
+  Node convertBvAtom(TNode node);
+  Node convertBvTerm(TNode node);
+  Node liftNode(TNode current);
+  Statistics d_statistics;
+
+  NodeNodeMap d_lowerCache;
+  void addToLowerCache(TNode term, Node new_term);
+  Node getLowerCache(TNode term) const;
+  bool hasLowerCache(TNode term) const; 
+  Node lowerNode(TNode current, bool topLevel = false);
+
+public:
+  BvToBoolPreprocessor();
+  void liftBvToBool(const std::vector<Node>& assertions, std::vector<Node>& new_assertions);
+  void lowerBoolToBv(const std::vector<Node>& assertions, std::vector<Node>& new_assertions);
+}; 
+
+
+
+}/* CVC4::theory::bv namespace */
+}/* CVC4::theory namespace */
+
+}/* CVC4 namespace */
+
+
+#endif /* __CVC4__THEORY__BV__BV_TO_BOOL_H */
diff --git a/src/theory/bv/bvintropow2.cpp b/src/theory/bv/bvintropow2.cpp
new file mode 100644
index 0000000..022aaf2
--- /dev/null
+++ b/src/theory/bv/bvintropow2.cpp
@@ -0,0 +1,85 @@
+/*********************                                                        */
+/*! \file bvintropow2.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/bv/bvintropow2.h"
+#include "theory/rewriter.h"
+#include "theory/bv/theory_bv_rewrite_rules_simplification.h"
+
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+void BVIntroducePow2::pow2Rewrite(std::vector<Node>& assertionsToPreprocess){
+  NodeMap cache;
+  for(size_t i = 0, N= assertionsToPreprocess.size(); i < N; ++i){
+    Node curr = assertionsToPreprocess[i];
+    Node next = pow2Rewrite(curr, cache);
+    if(next != curr){
+      Node tmp = Rewriter::rewrite(next);
+      next = tmp;
+    }
+    assertionsToPreprocess[i] = next;
+  }
+}
+
+Node  BVIntroducePow2::pow2Rewrite(Node node, NodeMap& cache){
+  NodeMap::const_iterator ci = cache.find(node);
+  if(ci != cache.end()){
+    Node incache = (*ci).second;
+    
+    return incache.isNull() ? node : incache;
+  }
+
+  Node res = Node::null();
+  switch(node.getKind()){
+  case kind::AND:
+    {
+      bool changed = false;
+      std::vector<Node> children;
+      for(unsigned i = 0, N = node.getNumChildren(); i < N; ++i){
+        Node child = node[i];
+        Node found = pow2Rewrite(child, cache);
+        changed = changed || (child != found);
+        children.push_back(found);
+      }
+      if(changed){
+        res = NodeManager::currentNM()->mkNode(kind::AND, children);
+      }
+    }
+    break;
+
+  case kind::EQUAL:
+    if(node[0].getType().isBitVector()){
+      if (RewriteRule<IsPowerOfTwo>::applies(node)) {
+        res = RewriteRule<IsPowerOfTwo>::run<false>(node);
+      }
+    }
+    break;
+  default:
+    break;
+  }
+
+  cache.insert(std::make_pair(node, res));
+  return res.isNull() ? node : res;
+}
+
+
+}/* CVC4::theory::bv namespace */
+}/* CVC4::theory namespace */
+
+}/* CVC4 namespace */
diff --git a/src/theory/bv/bvintropow2.h b/src/theory/bv/bvintropow2.h
new file mode 100644
index 0000000..09d3d92
--- /dev/null
+++ b/src/theory/bv/bvintropow2.h
@@ -0,0 +1,51 @@
+/*********************                                                        */
+/*! \file bvintropow2.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+
+
+#include "cvc4_private.h"
+#include "expr/node.h"
+
+#include <vector>
+#include <ext/hash_map>
+
+#ifndef __CVC4__THEORY__BV__BV_INTRO_POW_H
+#define __CVC4__THEORY__BV__BV_INTRO_POW_H
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+
+class BVIntroducePow2 {
+public:
+  static void pow2Rewrite(std::vector<Node>& assertionsToPreprocess);
+
+private:
+  typedef __gnu_cxx::hash_map<Node, Node, NodeHashFunction> NodeMap;
+  static Node pow2Rewrite(Node assertionsToPreprocess, NodeMap& cache);
+}; 
+
+
+
+}/* CVC4::theory::bv namespace */
+}/* CVC4::theory namespace */
+
+}/* CVC4 namespace */
+
+
+#endif /* __CVC4__THEORY__BV__BV_INTRO_POW_H */
diff --git a/src/theory/bv/cd_set_collection.h b/src/theory/bv/cd_set_collection.h
new file mode 100644
index 0000000..456552e
--- /dev/null
+++ b/src/theory/bv/cd_set_collection.h
@@ -0,0 +1,439 @@
+/*********************                                                        */
+/*! \file cd_set_collection.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+/*
+ * set_collection.h
+ *
+ *  Created on: Feb 24, 2011
+ *      Author: dejan
+ */
+
+#pragma once
+
+#include "cvc4_private.h"
+
+#include <iostream>
+#include "context/cdo.h"
+#include "theory/bv/theory_bv_utils.h"
+
+namespace CVC4 {
+namespace context {
+
+/**
+ * A class representing a backtrackable set of slice points. The memory should allow indexing with the TreeEntry.left and
+ * TreeEntry.right. TreeEntry should also provide null for the non-existing reference and a constructor with (value,
+ * left, right).
+ */
+template <typename memory_type, typename tree_entry_type, typename value_type, bool pass_value_by_reference = false>
+class BacktrackableSetCollection {
+
+  /**
+   * This is an interesting C++ question: how to make class applicable to non-by-value elements. If we turn
+   * below into const value_type& it doesn't work for the bit-slicing as size_t it is passed by value, and moreover
+   * we are using only a part of the word for the value. Hmmm.
+   */
+  typedef value_type const_value_reference;
+
+  /** Type of the reference */
+  typedef typename tree_entry_type::reference_type reference_type;
+
+  /** The null reference */
+  static const reference_type null = tree_entry_type::null;
+
+  /** The memory this set collection will use */
+  memory_type d_memory;
+
+  /** Backtrackable number of nodes that have been inserted */
+  context::CDO<unsigned> d_nodesInserted;
+
+  /** Check if the reference is valid in the current context */
+  inline bool isValid(reference_type set) const {
+    return d_nodesInserted == d_memory.size() && (set == null || set < d_memory.size());
+  }
+
+  /** Backtrack */
+  void backtrack() {
+    while (d_nodesInserted < d_memory.size()) {
+      const tree_entry_type& node = d_memory.back();
+
+      if(Debug.isOn("cd_set_collection")) {
+        Debug("cd_set_collection") << "BacktrackableSetCollection::backtrack(): removing " << node.getValue()
+                                     << " from " << internalToString(getRoot(d_memory.size()-1)) << std::endl;
+      }
+
+      if (node.hasParent()) {
+        if (node.isLeft()) {
+          d_memory[node.getParent()].removeLeft();
+        } else {
+          d_memory[node.getParent()].removeRight();
+        }
+      }
+      d_memory.pop_back();
+    }
+  }
+
+  inline void backtrack() const {
+    const_cast<BacktrackableSetCollection*>(this)->backtrack();
+  }
+
+  /**
+   * Create a new set. The set must have at least one element.
+   */
+  reference_type newElement(const value_type& value, reference_type left, reference_type right, reference_type parent, bool isLeft) {
+    reference_type index = d_memory.size();
+    d_memory.push_back(tree_entry_type(value, left, right, parent, isLeft));
+    d_nodesInserted = d_nodesInserted + 1;
+    return index;
+  }
+
+  /**
+   * Return the reference to the value if it's in the set or null otherwise
+   */
+  reference_type find(reference_type set, const value_type& value) const {
+    while (set != null) {
+      const tree_entry_type& node = d_memory[set];
+      if (node.getValue() == value) {
+        return set;
+      } else if (value < node.getValue()) {
+        set = node.getLeft();
+      } else {
+        set = node.getRight();
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Returns the maximal value in the set
+   */
+  reference_type max(reference_type set) const {
+    Assert(set != null);
+    Assert(isValid(set));
+    while (d_memory[set].hasRight()) {
+      set = d_memory[set].getRight();
+    }
+    return set;
+  }
+
+  /**
+   * Returns the minimal value in the set
+   */
+  reference_type min(reference_type set) const {
+    Assert(set != null);
+    Assert(isValid(set));
+    while (d_memory[set].hasLeft()) {
+      set = d_memory[set].getLeft();
+    }
+    return set;
+  }
+
+  /**
+   * REturns the root of the tree
+   */
+  reference_type getRoot(reference_type set) const {
+    // We don't check validity as this is used in backtracking
+    while (set != null && d_memory[set].hasParent()) {
+      Assert(set > d_memory[set].getParent());
+      set = d_memory[set].getParent();
+    }
+    return set;
+  }
+
+  /**
+   * Print the list of elements to the output.
+   */
+  void internalPrint(std::ostream& out, reference_type set) const {
+    if (set == null) {
+      return;
+    }
+    const tree_entry_type& current = d_memory[set];
+    if (current.hasLeft()) {
+      internalPrint(out, current.getLeft());
+      out << ",";
+    }
+    out << current.getValue();
+    if (current.hasRight()) {
+      out << ",";
+      internalPrint(out, current.getRight());
+    }
+  }
+
+  /**
+   * String representation of a set.
+   */
+  std::string internalToString(reference_type set) const {
+    std::stringstream out;
+    internalPrint(out, set);
+    return out.str();
+  }
+
+
+public:
+
+  BacktrackableSetCollection(context::Context* context)
+  : d_nodesInserted(context, 0) {}
+
+  size_t size() const {
+    backtrack();
+    return d_memory.size();
+  }
+
+  size_t size(reference_type set) const {
+    backtrack();
+    Assert(isValid(set));
+    if (set == null) return 0;
+    size_t n = 1;
+    if (d_memory[set].hasLeft()) {
+      n += size(d_memory[set].getLeft());
+    }
+    if (d_memory[set].hasRight()) {
+      n += size(d_memory[set].getRight());
+    }
+    return n;
+  }
+
+  reference_type newSet(const value_type& value) {
+    backtrack();
+    return newElement(value, null, null, null, false);
+  }
+
+  void insert(reference_type& root, const value_type& value) {
+    backtrack();
+    Assert(isValid(root));
+    if (root == null) {
+      root = newSet(value);
+      return;
+    }
+    // We already have a set, find the spot
+    reference_type parent = null;
+    reference_type current = root;
+    while (true) {
+      Assert(isValid(current));
+      if (value < d_memory[current].getValue()) {
+        if (d_memory[current].hasLeft()) {
+          parent = current;
+          current = d_memory[current].getLeft();
+        } else {
+          d_memory[current].setLeft(newElement(value, null, null, current, true));
+          Assert(d_memory[current].hasLeft());
+          return;
+        }
+      } else {
+        Assert(value != d_memory[current].getValue());
+        if (d_memory[current].hasRight()) {
+          parent = current;
+          current = d_memory[current].getRight();
+        } else {
+          d_memory[current].setRight(newElement(value, null, null, current, false));
+          Assert(d_memory[current].hasRight());
+          return;
+        }
+      }
+    }
+  }
+
+  /**
+   * Returns the maximal value in the set
+   */
+  const_value_reference maxElement(reference_type set) const {
+    Assert(set != null);
+    Assert(isValid(set));
+    backtrack();
+    return d_memory[max(set)].getValue();
+  }
+
+  /**
+   * Returns the minimal value in the set
+   */
+  const_value_reference minElement(reference_type set) const {
+    Assert(set != null);
+    Assert(isValid(set));
+    backtrack();
+    return d_memory[min(set)].getValue();
+  }
+
+  /**
+   * Return the previous (smaller) element.
+   */
+  const_value_reference prev(reference_type set, const_value_reference value) {
+    backtrack();
+    Assert(isValid(set));
+
+    const_value_reference candidate_value = value_type();
+    bool candidate_found = false;
+
+    // Find the biggest node smaleer than value (it must exist)
+    while (set != null) {
+      if(Debug.isOn("set_collection")) {
+        Debug("set_collection") << "BacktrackableSetCollection::getPrev(" << toString(set) << "," << value << ")" << std::endl;
+      }
+      const tree_entry_type& node = d_memory[set];
+      if (node.getValue() >= value) {
+        // If the node is bigger than the value, we need a smaller one
+        set = node.getLeft();
+      } else {
+        // The node is smaller than the value
+        candidate_found = true;
+        candidate_value = node.getValue();
+        // There might be a bigger one
+        set = node.getRight();
+      }
+    }
+
+    Assert(candidate_found);
+    return candidate_value;
+  }
+
+  const_value_reference next(reference_type set, const_value_reference value) {
+    backtrack();
+    Assert(isValid(set));
+
+    const_value_reference candidate_value = value_type();
+    bool candidate_found = false;
+
+    // Find the smallest node bigger than value (it must exist)
+    while (set != null) {
+      if(Debug.isOn("set_collection")) {
+        Debug("set_collection") << "BacktrackableSetCollection::getNext(" << toString(set) << "," << value << ")" << std::endl;
+      }
+      const tree_entry_type& node = d_memory[set];
+      if (node.getValue() <= value) {
+        // If the node is smaller than the value, we need a bigger one
+        set = node.getRight();
+      } else {
+        // The node is bigger than the value
+        candidate_found = true;
+        candidate_value = node.getValue();
+        // There might be a smaller one
+        set = node.getLeft();
+      }
+    }
+
+    Assert(candidate_found);
+    return candidate_value;
+}
+
+  /**
+   * Count the number of elements in the given bounds.
+   */
+  unsigned count(reference_type set, const_value_reference lowerBound, const_value_reference upperBound) const {
+    Assert(lowerBound <= upperBound);
+    backtrack();
+    Assert(isValid(set));
+
+    // Empty set no elements
+    if (set == null) {
+      return 0;
+    }
+    // The counter
+    unsigned c = 0;
+    // Current set
+    const tree_entry_type& current = d_memory[set];
+    // Left child (smaller elements)
+    if (lowerBound < current.getValue()) {
+      c += count(current.getLeft(), lowerBound, upperBound);
+    }
+    // Current element
+    if (lowerBound <= current.getValue() && current.getValue() <= upperBound) {
+      ++ c;
+    }
+    // Right child (bigger elements)
+    if (current.getValue() <= upperBound) {
+      c += count(current.getRight(), lowerBound, upperBound);
+    }
+    return c;
+  }
+
+  /**
+   * Check for membership.
+   */
+  bool contains(reference_type set, const_value_reference value) const {
+    backtrack();
+    Assert(isValid(set));
+    return count(set, value, value) > 0;
+  }
+
+  /**
+   * Returns the elements (sorted) in the set between the given lower and upper bound. If include borders is on,
+   * and the
+   */
+  void getElements(reference_type set, const_value_reference lowerBound, const_value_reference upperBound, std::vector<value_type>& output) const {
+    Assert(lowerBound <= upperBound);
+    backtrack();
+    Assert(isValid(set));
+
+    if(Debug.isOn("set_collection")) {
+      Debug("set_collection") << "BacktrackableSetCollection::getElements(" << toString(set) << "," << lowerBound << "," << upperBound << ")" << std::endl;
+    }
+
+    // Empty set no elements
+    if (set == null) {
+      return;
+    }
+    // Current set
+    const tree_entry_type& current = d_memory[set];
+    // Left child (smaller elements)
+    if (lowerBound < current.getValue()) {
+      getElements(current.getLeft(), lowerBound, upperBound, output);
+    }
+    // Current element
+    if (lowerBound <= current.getValue() && current.getValue() <= upperBound) {
+      output.push_back(current.getValue());
+    }
+    // Right child (bigger elements)
+    if (current.getValue() < upperBound) {
+      getElements(current.getRight(), lowerBound, upperBound, output);
+    }
+  }
+
+  /**
+   * Print the list of elements to the output.
+   */
+  void print(std::ostream& out, reference_type set) const {
+    backtrack();
+    Assert(isValid(set));
+
+    if (set == null) {
+      return;
+    }
+    const tree_entry_type& current = d_memory[set];
+    if (current.hasLeft()) {
+      print(out, current.getLeft());
+      out << ",";
+    }
+    out << current.getValue();
+    if (current.hasRight()) {
+      out << ",";
+      print(out, current.getRight());
+    }
+  }
+
+  /**
+   * String representation of a set.
+   */
+  std::string toString(reference_type set) const {
+    backtrack();
+    Assert(isValid(set));
+
+    std::stringstream out;
+    print(out, set);
+    return out.str();
+  }
+};
+
+} // Namespace context
+} // Namespace CVC4s
diff --git a/src/theory/bv/eager_bitblaster.cpp b/src/theory/bv/eager_bitblaster.cpp
new file mode 100644
index 0000000..053986b
--- /dev/null
+++ b/src/theory/bv/eager_bitblaster.cpp
@@ -0,0 +1,255 @@
+/*********************                                                        */
+/*! \file eager_bitblaster.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King, Guy Katz
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief
+ **
+ ** Bitblaster for the eager bv solver.
+ **/
+
+#include "cvc4_private.h"
+
+#include "options/bv_options.h"
+#include "proof/bitvector_proof.h"
+#include "prop/cnf_stream.h"
+#include "prop/sat_solver_factory.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/bv/bitblaster_template.h"
+#include "theory/bv/theory_bv.h"
+#include "theory/theory_model.h"
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+void BitblastingRegistrar::preRegister(Node n) { d_bitblaster->bbAtom(n); }
+
+EagerBitblaster::EagerBitblaster(TheoryBV* theory_bv)
+    : TBitblaster<Node>(),
+      d_satSolver(NULL),
+      d_bitblastingRegistrar(NULL),
+      d_nullContext(NULL),
+      d_cnfStream(NULL),
+      d_bv(theory_bv),
+      d_bbAtoms(),
+      d_variables(),
+      d_notify(NULL) {
+  d_bitblastingRegistrar = new BitblastingRegistrar(this);
+  d_nullContext = new context::Context();
+
+  switch (options::bvSatSolver()) {
+    case SAT_SOLVER_MINISAT: {
+      prop::BVSatSolverInterface* minisat =
+          prop::SatSolverFactory::createMinisat(
+              d_nullContext, smtStatisticsRegistry(), "EagerBitblaster");
+      d_notify = new MinisatEmptyNotify();
+      minisat->setNotify(d_notify);
+      d_satSolver = minisat;
+      break;
+    }
+    case SAT_SOLVER_CRYPTOMINISAT:
+      d_satSolver = prop::SatSolverFactory::createCryptoMinisat(
+          smtStatisticsRegistry(), "EagerBitblaster");
+      break;
+    default:
+      Unreachable("Unknown SAT solver type");
+  }
+
+  d_cnfStream = new prop::TseitinCnfStream(d_satSolver, d_bitblastingRegistrar,
+                                           d_nullContext, options::proof(),
+                                           "EagerBitblaster");
+
+  d_bvp = NULL;
+}
+
+EagerBitblaster::~EagerBitblaster() {
+  delete d_cnfStream;
+  delete d_satSolver;
+  delete d_notify;
+  delete d_nullContext;
+  delete d_bitblastingRegistrar;
+}
+
+void EagerBitblaster::bbFormula(TNode node) {
+  d_cnfStream->convertAndAssert(node, false, false, RULE_INVALID,
+                                TNode::null());
+}
+
+/**
+ * Bitblasts the atom, assigns it a marker literal, adding it to the SAT solver
+ * NOTE: duplicate clauses are not detected because of marker literal
+ * @param node the atom to be bitblasted
+ *
+ */
+void EagerBitblaster::bbAtom(TNode node) {
+  node = node.getKind() == kind::NOT ? node[0] : node;
+  if (node.getKind() == kind::BITVECTOR_BITOF) return;
+  if (hasBBAtom(node)) {
+    return;
+  }
+
+  Debug("bitvector-bitblast") << "Bitblasting node " << node << "\n";
+
+  // the bitblasted definition of the atom
+  Node normalized = Rewriter::rewrite(node);
+  Node atom_bb =
+      normalized.getKind() != kind::CONST_BOOLEAN
+          ? d_atomBBStrategies[normalized.getKind()](normalized, this)
+          : normalized;
+
+  if (!options::proof()) {
+    atom_bb = Rewriter::rewrite(atom_bb);
+  }
+
+  // asserting that the atom is true iff the definition holds
+  Node atom_definition = utils::mkNode(kind::EQUAL, node, atom_bb);
+
+  AlwaysAssert(options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER);
+  storeBBAtom(node, atom_bb);
+  d_cnfStream->convertAndAssert(atom_definition, false, false, RULE_INVALID,
+                                TNode::null());
+}
+
+void EagerBitblaster::storeBBAtom(TNode atom, Node atom_bb) {
+  if (d_bvp) {
+    d_bvp->registerAtomBB(atom.toExpr(), atom_bb.toExpr());
+  }
+  d_bbAtoms.insert(atom);
+}
+
+void EagerBitblaster::storeBBTerm(TNode node, const Bits& bits) {
+  if (d_bvp) {
+    d_bvp->registerTermBB(node.toExpr());
+  }
+  d_termCache.insert(std::make_pair(node, bits));
+}
+
+bool EagerBitblaster::hasBBAtom(TNode atom) const {
+  return d_bbAtoms.find(atom) != d_bbAtoms.end();
+}
+
+void EagerBitblaster::bbTerm(TNode node, Bits& bits) {
+  Assert(node.getType().isBitVector());
+
+  if (hasBBTerm(node)) {
+    getBBTerm(node, bits);
+    return;
+  }
+
+  d_bv->spendResource(options::bitblastStep());
+  Debug("bitvector-bitblast") << "Bitblasting node " << node << "\n";
+
+  d_termBBStrategies[node.getKind()](node, bits, this);
+
+  Assert(bits.size() == utils::getSize(node));
+
+  storeBBTerm(node, bits);
+}
+
+void EagerBitblaster::makeVariable(TNode var, Bits& bits) {
+  Assert(bits.size() == 0);
+  for (unsigned i = 0; i < utils::getSize(var); ++i) {
+    bits.push_back(utils::mkBitOf(var, i));
+  }
+  d_variables.insert(var);
+}
+
+Node EagerBitblaster::getBBAtom(TNode node) const { return node; }
+
+/**
+ * Calls the solve method for the Sat Solver.
+ *
+ * @return true for sat, and false for unsat
+ */
+
+bool EagerBitblaster::solve() {
+  if (Trace.isOn("bitvector")) {
+    Trace("bitvector") << "EagerBitblaster::solve(). \n";
+  }
+  Debug("bitvector") << "EagerBitblaster::solve(). \n";
+  // TODO: clear some memory
+  // if (something) {
+  //   NodeManager* nm= NodeManager::currentNM();
+  //   Rewriter::garbageCollect();
+  //   nm->reclaimZombiesUntil(options::zombieHuntThreshold());
+  // }
+  return prop::SAT_VALUE_TRUE == d_satSolver->solve();
+}
+
+/**
+ * Returns the value a is currently assigned to in the SAT solver
+ * or null if the value is completely unassigned.
+ *
+ * @param a
+ * @param fullModel whether to create a "full model," i.e., add
+ * constants to equivalence classes that don't already have them
+ *
+ * @return
+ */
+Node EagerBitblaster::getModelFromSatSolver(TNode a, bool fullModel) {
+  if (!hasBBTerm(a)) {
+    return fullModel ? utils::mkConst(utils::getSize(a), 0u) : Node();
+  }
+
+  Bits bits;
+  getBBTerm(a, bits);
+  Integer value(0);
+  for (int i = bits.size() - 1; i >= 0; --i) {
+    prop::SatValue bit_value;
+    if (d_cnfStream->hasLiteral(bits[i])) {
+      prop::SatLiteral bit = d_cnfStream->getLiteral(bits[i]);
+      bit_value = d_satSolver->value(bit);
+      Assert(bit_value != prop::SAT_VALUE_UNKNOWN);
+    } else {
+      if (!fullModel) return Node();
+      // unconstrained bits default to false
+      bit_value = prop::SAT_VALUE_FALSE;
+    }
+    Integer bit_int =
+        bit_value == prop::SAT_VALUE_TRUE ? Integer(1) : Integer(0);
+    value = value * 2 + bit_int;
+  }
+  return utils::mkConst(BitVector(bits.size(), value));
+}
+
+void EagerBitblaster::collectModelInfo(TheoryModel* m, bool fullModel) {
+  TNodeSet::iterator it = d_variables.begin();
+  for (; it != d_variables.end(); ++it) {
+    TNode var = *it;
+    if (d_bv->isLeaf(var) || isSharedTerm(var) ||
+        (var.isVar() && var.getType().isBoolean())) {
+      // only shared terms could not have been bit-blasted
+      Assert(hasBBTerm(var) || isSharedTerm(var));
+
+      Node const_value = getModelFromSatSolver(var, true);
+
+      if (const_value != Node()) {
+        Debug("bitvector-model")
+            << "EagerBitblaster::collectModelInfo (assert (= " << var << " "
+            << const_value << "))\n";
+        m->assertEquality(var, const_value, true);
+      }
+    }
+  }
+}
+
+void EagerBitblaster::setProofLog(BitVectorProof* bvp) {
+  d_bvp = bvp;
+  d_satSolver->setProofLog(bvp);
+  bvp->initCnfProof(d_cnfStream, d_nullContext);
+}
+
+bool EagerBitblaster::isSharedTerm(TNode node) {
+  return d_bv->d_sharedTermsSet.find(node) != d_bv->d_sharedTermsSet.end();
+}
+
+} /* namespace CVC4::theory::bv; */
+} /* namespace CVC4::theory; */
+} /* namespace CVC4; */
diff --git a/src/theory/bv/kinds b/src/theory/bv/kinds
new file mode 100644
index 0000000..da2833c
--- /dev/null
+++ b/src/theory/bv/kinds
@@ -0,0 +1,205 @@
+# kinds                                                               -*- sh -*-
+#
+# For documentation on this file format, please refer to
+# src/theory/builtin/kinds.
+#
+
+theory THEORY_BV ::CVC4::theory::bv::TheoryBV "theory/bv/theory_bv.h"
+typechecker "theory/bv/theory_bv_type_rules.h"
+
+properties finite
+properties check propagate presolve ppStaticLearn
+
+rewriter ::CVC4::theory::bv::TheoryBVRewriter "theory/bv/theory_bv_rewriter.h"
+
+constant BITVECTOR_TYPE \
+	::CVC4::BitVectorSize \
+	"::CVC4::UnsignedHashFunction< ::CVC4::BitVectorSize >" \
+	"util/bitvector.h" \
+	"bit-vector type"
+cardinality BITVECTOR_TYPE \
+	"::CVC4::theory::bv::CardinalityComputer::computeCardinality(%TYPE%)" \
+	"theory/bv/theory_bv_type_rules.h"
+
+constant CONST_BITVECTOR \
+    ::CVC4::BitVector \
+    ::CVC4::BitVectorHashFunction \
+    "util/bitvector.h" \
+    "a fixed-width bit-vector constant; payload is an instance of the CVC4::BitVector class"
+
+enumerator BITVECTOR_TYPE \
+    "::CVC4::theory::bv::BitVectorEnumerator" \
+    "theory/bv/type_enumerator.h"
+
+well-founded BITVECTOR_TYPE \
+    true \
+    "(*CVC4::theory::TypeEnumerator(%TYPE%))" \
+    "theory/type_enumerator.h"
+
+operator BITVECTOR_CONCAT 2: "concatenation of two or more bit-vectors"
+operator BITVECTOR_AND 2: "bitwise and of two or more bit-vectors"
+operator BITVECTOR_OR 2: "bitwise or of two or more bit-vectors"
+operator BITVECTOR_XOR 2: "bitwise xor of two or more bit-vectors"
+operator BITVECTOR_NOT 1 "bitwise not of a bit-vector"
+operator BITVECTOR_NAND 2 "bitwise nand of two bit-vectors"
+operator BITVECTOR_NOR 2 "bitwise nor of two bit-vectors"
+operator BITVECTOR_XNOR 2 "bitwise xnor of two bit-vectors"
+operator BITVECTOR_COMP 2 "equality comparison of two bit-vectors (returns one bit)"
+operator BITVECTOR_MULT 2: "multiplication of two or more bit-vectors"
+operator BITVECTOR_PLUS 2: "addition of two or more bit-vectors"
+operator BITVECTOR_SUB 2 "subtraction of two bit-vectors"
+operator BITVECTOR_NEG 1 "unary negation of a bit-vector"
+operator BITVECTOR_UDIV 2 "unsigned division of two bit-vectors, truncating towards 0 (undefined if divisor is 0)"
+operator BITVECTOR_UREM 2 "unsigned remainder from truncating division of two bit-vectors (undefined if divisor is 0)"
+operator BITVECTOR_SDIV 2 "2's complement signed division"
+operator BITVECTOR_SREM 2 "2's complement signed remainder (sign follows dividend)"
+operator BITVECTOR_SMOD 2 "2's complement signed remainder (sign follows divisor)"
+# total division kinds
+operator BITVECTOR_UDIV_TOTAL 2 "unsigned division of two bit-vectors, truncating towards 0 (defined to be the all-ones bit pattern, if divisor is 0)"
+operator BITVECTOR_UREM_TOTAL 2 "unsigned remainder from truncating division of two bit-vectors (defined to be equal to the dividend, if divisor is 0)"
+
+operator BITVECTOR_SHL 2 "bit-vector shift left (the two bit-vector parameters must have same width)"
+operator BITVECTOR_LSHR 2 "bit-vector logical shift right (the two bit-vector parameters must have same width)"
+operator BITVECTOR_ASHR 2 "bit-vector arithmetic shift right (the two bit-vector parameters must have same width)"
+
+operator BITVECTOR_ULT 2 "bit-vector unsigned less than (the two bit-vector parameters must have same width)"
+operator BITVECTOR_ULE 2 "bit-vector unsigned less than or equal (the two bit-vector parameters must have same width)"
+operator BITVECTOR_UGT 2 "bit-vector unsigned greater than (the two bit-vector parameters must have same width)"
+operator BITVECTOR_UGE 2 "bit-vector unsigned greater than or equal (the two bit-vector parameters must have same width)"
+operator BITVECTOR_SLT 2 "bit-vector signed less than (the two bit-vector parameters must have same width)"
+operator BITVECTOR_SLE 2 "bit-vector signed less than or equal (the two bit-vector parameters must have same width)"
+operator BITVECTOR_SGT 2 "bit-vector signed greater than (the two bit-vector parameters must have same width)"
+operator BITVECTOR_SGE 2 "bit-vector signed greater than or equal (the two bit-vector parameters must have same width)"
+
+operator BITVECTOR_ULTBV 2 "bit-vector unsigned less than but returns bv of size 1 instead of boolean"
+operator BITVECTOR_SLTBV 2 "bit-vector signed less than but returns bv of size 1 instead of boolean"
+operator BITVECTOR_ITE 3 "same semantics as regular ITE, but condition is bv of size 1 instead of Boolean"
+
+operator BITVECTOR_REDOR 1 "bit-vector redor"
+operator BITVECTOR_REDAND 1 "bit-vector redand"
+
+operator BITVECTOR_EAGER_ATOM 1 "formula to be treated as a bv atom via eager bit-blasting (internal-only symbol)"
+operator BITVECTOR_ACKERMANIZE_UDIV 1 "term to be treated as a variable; used for eager bit-blasting Ackermann expansion of bvudiv (internal-only symbol)"
+operator BITVECTOR_ACKERMANIZE_UREM 1 "term to be treated as a variable; used for eager bit-blasting Ackermann expansion of bvurem (internal-only symbol)"
+
+constant BITVECTOR_BITOF_OP \
+	::CVC4::BitVectorBitOf \
+	::CVC4::BitVectorBitOfHashFunction \
+	"util/bitvector.h" \
+	"operator for the bit-vector boolean bit extract; payload is an instance of the CVC4::BitVectorBitOf class"
+
+constant BITVECTOR_EXTRACT_OP \
+	::CVC4::BitVectorExtract \
+	::CVC4::BitVectorExtractHashFunction \
+	"util/bitvector.h" \
+	"operator for the bit-vector extract; payload is an instance of the CVC4::BitVectorExtract class"
+
+constant BITVECTOR_REPEAT_OP \
+	::CVC4::BitVectorRepeat \
+	"::CVC4::UnsignedHashFunction< ::CVC4::BitVectorRepeat >" \
+	"util/bitvector.h" \
+	"operator for the bit-vector repeat; payload is an instance of the CVC4::BitVectorRepeat class"
+
+constant BITVECTOR_ZERO_EXTEND_OP \
+	::CVC4::BitVectorZeroExtend \
+	"::CVC4::UnsignedHashFunction< ::CVC4::BitVectorZeroExtend >" \
+	"util/bitvector.h" \
+	"operator for the bit-vector zero-extend; payload is an instance of the CVC4::BitVectorZeroExtend class"
+
+constant BITVECTOR_SIGN_EXTEND_OP \
+	::CVC4::BitVectorSignExtend \
+	"::CVC4::UnsignedHashFunction< ::CVC4::BitVectorSignExtend >" \
+	"util/bitvector.h" \
+	"operator for the bit-vector sign-extend; payload is an instance of the CVC4::BitVectorSignExtend class"
+
+constant BITVECTOR_ROTATE_LEFT_OP \
+	::CVC4::BitVectorRotateLeft \
+	"::CVC4::UnsignedHashFunction< ::CVC4::BitVectorRotateLeft >" \
+	"util/bitvector.h" \
+	"operator for the bit-vector rotate left; payload is an instance of the CVC4::BitVectorRotateLeft class"
+
+constant BITVECTOR_ROTATE_RIGHT_OP \
+	::CVC4::BitVectorRotateRight \
+	"::CVC4::UnsignedHashFunction< ::CVC4::BitVectorRotateRight >" \
+	"util/bitvector.h" \
+	"operator for the bit-vector rotate right; payload is an instance of the CVC4::BitVectorRotateRight class"
+
+parameterized BITVECTOR_BITOF BITVECTOR_BITOF_OP 1 "bit-vector boolean bit extract; first parameter is a BITVECTOR_BITOF_OP, second is a bit-vector term"
+parameterized BITVECTOR_EXTRACT BITVECTOR_EXTRACT_OP 1 "bit-vector extract; first parameter is a BITVECTOR_EXTRACT_OP, second is a bit-vector term"
+parameterized BITVECTOR_REPEAT BITVECTOR_REPEAT_OP 1 "bit-vector repeat; first parameter is a BITVECTOR_REPEAT_OP, second is a bit-vector term"
+parameterized BITVECTOR_ZERO_EXTEND BITVECTOR_ZERO_EXTEND_OP 1 "bit-vector zero-extend; first parameter is a BITVECTOR_ZERO_EXTEND_OP, second is a bit-vector term"
+parameterized BITVECTOR_SIGN_EXTEND BITVECTOR_SIGN_EXTEND_OP 1 "bit-vector sign-extend; first parameter is a BITVECTOR_SIGN_EXTEND_OP, second is a bit-vector term"
+parameterized BITVECTOR_ROTATE_LEFT BITVECTOR_ROTATE_LEFT_OP 1 "bit-vector rotate left; first parameter is a BITVECTOR_ROTATE_LEFT_OP, second is a bit-vector term"
+parameterized BITVECTOR_ROTATE_RIGHT BITVECTOR_ROTATE_RIGHT_OP 1 "bit-vector rotate right; first parameter is a BITVECTOR_ROTATE_RIGHT_OP, second is a bit-vector term"
+
+constant INT_TO_BITVECTOR_OP \
+	::CVC4::IntToBitVector \
+	"::CVC4::UnsignedHashFunction< ::CVC4::IntToBitVector >" \
+	"util/bitvector.h" \
+	"operator for the integer conversion to bit-vector; payload is an instance of the CVC4::IntToBitVector class"
+parameterized INT_TO_BITVECTOR INT_TO_BITVECTOR_OP 1 "integer conversion to bit-vector; first parameter is an INT_TO_BITVECTOR_OP, second is an integer term"
+operator BITVECTOR_TO_NAT 1 "bit-vector conversion to (nonnegative) integer; parameter is a bit-vector"
+
+typerule CONST_BITVECTOR ::CVC4::theory::bv::BitVectorConstantTypeRule
+
+typerule BITVECTOR_AND ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+typerule BITVECTOR_OR ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+typerule BITVECTOR_XOR ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+typerule BITVECTOR_NOT ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+typerule BITVECTOR_NAND ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+typerule BITVECTOR_NOR ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+typerule BITVECTOR_XNOR ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+
+typerule BITVECTOR_MULT ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+typerule BITVECTOR_PLUS ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+typerule BITVECTOR_SUB ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+typerule BITVECTOR_NEG ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+
+typerule BITVECTOR_UDIV ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+typerule BITVECTOR_UREM ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+typerule BITVECTOR_UDIV_TOTAL ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+typerule BITVECTOR_UREM_TOTAL ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+typerule BITVECTOR_SDIV ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+typerule BITVECTOR_SREM ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+typerule BITVECTOR_SMOD ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+typerule BITVECTOR_SHL ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+typerule BITVECTOR_LSHR ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+typerule BITVECTOR_ASHR ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+typerule BITVECTOR_ROTATE_LEFT ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+typerule BITVECTOR_ROTATE_RIGHT ::CVC4::theory::bv::BitVectorFixedWidthTypeRule
+
+typerule BITVECTOR_ULT ::CVC4::theory::bv::BitVectorPredicateTypeRule
+typerule BITVECTOR_ULE ::CVC4::theory::bv::BitVectorPredicateTypeRule
+typerule BITVECTOR_UGT ::CVC4::theory::bv::BitVectorPredicateTypeRule
+typerule BITVECTOR_UGE ::CVC4::theory::bv::BitVectorPredicateTypeRule
+typerule BITVECTOR_SLT ::CVC4::theory::bv::BitVectorPredicateTypeRule
+typerule BITVECTOR_SLE ::CVC4::theory::bv::BitVectorPredicateTypeRule
+typerule BITVECTOR_SGT ::CVC4::theory::bv::BitVectorPredicateTypeRule
+typerule BITVECTOR_SGE ::CVC4::theory::bv::BitVectorPredicateTypeRule
+
+typerule BITVECTOR_COMP ::CVC4::theory::bv::BitVectorBVPredTypeRule
+typerule BITVECTOR_ULTBV ::CVC4::theory::bv::BitVectorBVPredTypeRule
+typerule BITVECTOR_SLTBV ::CVC4::theory::bv::BitVectorBVPredTypeRule
+typerule BITVECTOR_ITE ::CVC4::theory::bv::BitVectorITETypeRule
+
+typerule BITVECTOR_REDOR ::CVC4::theory::bv::BitVectorUnaryPredicateTypeRule
+typerule BITVECTOR_REDAND ::CVC4::theory::bv::BitVectorUnaryPredicateTypeRule
+
+
+typerule BITVECTOR_EAGER_ATOM ::CVC4::theory::bv::BitVectorEagerAtomTypeRule
+typerule BITVECTOR_ACKERMANIZE_UDIV ::CVC4::theory::bv::BitVectorAckermanizationUdivTypeRule
+typerule BITVECTOR_ACKERMANIZE_UREM ::CVC4::theory::bv::BitVectorAckermanizationUremTypeRule
+
+typerule BITVECTOR_EXTRACT_OP ::CVC4::theory::bv::BitVectorExtractOpTypeRule
+typerule BITVECTOR_EXTRACT ::CVC4::theory::bv::BitVectorExtractTypeRule
+typerule BITVECTOR_BITOF   ::CVC4::theory::bv::BitVectorBitOfTypeRule
+typerule BITVECTOR_CONCAT ::CVC4::theory::bv::BitVectorConcatTypeRule
+typerule BITVECTOR_REPEAT ::CVC4::theory::bv::BitVectorRepeatTypeRule
+typerule BITVECTOR_ZERO_EXTEND ::CVC4::theory::bv::BitVectorExtendTypeRule
+typerule BITVECTOR_SIGN_EXTEND ::CVC4::theory::bv::BitVectorExtendTypeRule
+
+typerule BITVECTOR_TO_NAT ::CVC4::theory::bv::BitVectorConversionTypeRule
+typerule INT_TO_BITVECTOR_OP ::CVC4::theory::bv::IntToBitVectorOpTypeRule
+typerule INT_TO_BITVECTOR ::CVC4::theory::bv::BitVectorConversionTypeRule
+
+endtheory
diff --git a/src/theory/bv/lazy_bitblaster.cpp b/src/theory/bv/lazy_bitblaster.cpp
new file mode 100644
index 0000000..1477f18
--- /dev/null
+++ b/src/theory/bv/lazy_bitblaster.cpp
@@ -0,0 +1,545 @@
+/*********************                                                        */
+/*! \file lazy_bitblaster.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Bitblaster for the lazy bv solver.
+ **
+ ** Bitblaster for the lazy bv solver.
+ **/
+
+#include "bitblaster_template.h"
+#include "cvc4_private.h"
+#include "options/bv_options.h"
+#include "prop/cnf_stream.h"
+#include "prop/sat_solver.h"
+#include "prop/sat_solver_factory.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/bv/abstraction.h"
+#include "theory/bv/theory_bv.h"
+#include "theory/rewriter.h"
+#include "theory/theory_model.h"
+#include "proof/bitvector_proof.h"
+#include "proof/proof_manager.h"
+#include "theory/bv/theory_bv_utils.h"
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+
+TLazyBitblaster::TLazyBitblaster(context::Context* c, bv::TheoryBV* bv,
+                                 const std::string name, bool emptyNotify)
+  : TBitblaster<Node>()
+  , d_bv(bv)
+  , d_ctx(c)
+  , d_assertedAtoms(new(true) context::CDList<prop::SatLiteral>(c))
+  , d_explanations(new(true) ExplanationMap(c))
+  , d_variables()
+  , d_bbAtoms()
+  , d_abstraction(NULL)
+  , d_emptyNotify(emptyNotify)
+  , d_satSolverFullModel(c, false)
+  , d_name(name)
+  , d_statistics(name) {
+
+  d_satSolver = prop::SatSolverFactory::createMinisat(
+      c, smtStatisticsRegistry(), name);
+  d_nullRegistrar = new prop::NullRegistrar();
+  d_nullContext = new context::Context();
+  d_cnfStream = new prop::TseitinCnfStream(d_satSolver,
+                                           d_nullRegistrar,
+                                           d_nullContext,
+                                           options::proof(),
+                                           "LazyBitblaster");
+
+  d_satSolverNotify = d_emptyNotify ?
+    (prop::BVSatSolverInterface::Notify*) new MinisatEmptyNotify() :
+    (prop::BVSatSolverInterface::Notify*) new MinisatNotify(d_cnfStream, bv,
+                                                            this);
+
+  d_satSolver->setNotify(d_satSolverNotify);
+}
+
+void TLazyBitblaster::setAbstraction(AbstractionModule* abs) {
+  d_abstraction = abs;
+}
+
+TLazyBitblaster::~TLazyBitblaster() throw() {
+  delete d_cnfStream;
+  delete d_nullRegistrar;
+  delete d_nullContext;
+  delete d_satSolver;
+  delete d_satSolverNotify;
+  d_assertedAtoms->deleteSelf();
+  d_explanations->deleteSelf();
+}
+
+
+/**
+ * Bitblasts the atom, assigns it a marker literal, adding it to the SAT solver
+ * NOTE: duplicate clauses are not detected because of marker literal
+ * @param node the atom to be bitblasted
+ *
+ */
+void TLazyBitblaster::bbAtom(TNode node) {
+  node = node.getKind() == kind::NOT?  node[0] : node;
+
+  if (hasBBAtom(node)) {
+    return;
+  }
+  
+  // make sure it is marked as an atom
+  addAtom(node);
+
+  Debug("bitvector-bitblast") << "Bitblasting node " << node <<"\n";
+  ++d_statistics.d_numAtoms;
+  
+
+  /// if we are using bit-vector abstraction bit-blast the original interpretation
+  if (options::bvAbstraction() &&
+      d_abstraction != NULL &&
+      d_abstraction->isAbstraction(node)) {
+    // node must be of the form P(args) = bv1
+    Node expansion = Rewriter::rewrite(d_abstraction->getInterpretation(node));
+
+    Node atom_bb;
+    if (expansion.getKind() == kind::CONST_BOOLEAN) {
+      atom_bb = expansion;
+    } else {
+      Assert (expansion.getKind() == kind::AND);
+      std::vector<Node> atoms;
+      for (unsigned i = 0; i < expansion.getNumChildren(); ++i) {
+        Node normalized_i = Rewriter::rewrite(expansion[i]);
+        Node atom_i = normalized_i.getKind() != kind::CONST_BOOLEAN ?
+          Rewriter::rewrite(d_atomBBStrategies[normalized_i.getKind()](normalized_i, this)) :
+          normalized_i;
+        atoms.push_back(atom_i);
+      }
+      atom_bb = utils::mkAnd(atoms);
+    }
+    Assert (!atom_bb.isNull());
+    Node atom_definition = utils::mkNode(kind::EQUAL, node, atom_bb);
+    storeBBAtom(node, atom_bb);
+    d_cnfStream->convertAndAssert(atom_definition, false, false, RULE_INVALID, TNode::null());
+    return;
+  }
+
+  // the bitblasted definition of the atom
+  Node normalized = Rewriter::rewrite(node);
+  Node atom_bb = normalized.getKind() != kind::CONST_BOOLEAN ?
+                 d_atomBBStrategies[normalized.getKind()](normalized, this) : normalized;
+
+  if (!options::proof()) {
+    atom_bb = Rewriter::rewrite(atom_bb);
+  }
+
+  // asserting that the atom is true iff the definition holds
+  Node atom_definition = utils::mkNode(kind::EQUAL, node, atom_bb);
+  storeBBAtom(node, atom_bb);
+  d_cnfStream->convertAndAssert(atom_definition, false, false, RULE_INVALID, TNode::null());
+}
+
+void TLazyBitblaster::storeBBAtom(TNode atom, Node atom_bb) {
+  // No need to store the definition for the lazy bit-blaster (unless proofs are enabled).
+  if( d_bvp != NULL ){
+    d_bvp->registerAtomBB(atom.toExpr(), atom_bb.toExpr());
+  }
+  d_bbAtoms.insert(atom);
+}
+
+void TLazyBitblaster::storeBBTerm(TNode node, const Bits& bits) {
+  if( d_bvp ){ d_bvp->registerTermBB(node.toExpr()); }
+  d_termCache.insert(std::make_pair(node, bits));
+}
+
+
+bool TLazyBitblaster::hasBBAtom(TNode atom) const {
+  return d_bbAtoms.find(atom) != d_bbAtoms.end();
+}
+
+
+void TLazyBitblaster::makeVariable(TNode var, Bits& bits) {
+  Assert(bits.size() == 0);
+  for (unsigned i = 0; i < utils::getSize(var); ++i) {
+    bits.push_back(utils::mkBitOf(var, i));
+  }
+  d_variables.insert(var);
+}
+
+uint64_t TLazyBitblaster::computeAtomWeight(TNode node, NodeSet& seen) {
+  node = node.getKind() == kind::NOT?  node[0] : node;
+  if( !utils::isBitblastAtom( node ) ){
+    return 0;
+  }
+  Node atom_bb = Rewriter::rewrite(d_atomBBStrategies[node.getKind()](node, this));
+  uint64_t size = utils::numNodes(atom_bb, seen);
+  return size;
+}
+
+// cnf conversion ensures the atom represents itself
+Node TLazyBitblaster::getBBAtom(TNode node) const {
+  return node;
+}
+
+void TLazyBitblaster::bbTerm(TNode node, Bits& bits) {
+
+  if (hasBBTerm(node)) {
+    getBBTerm(node, bits);
+    return;
+  }
+  Assert( node.getType().isBitVector() );
+
+  d_bv->spendResource(options::bitblastStep());
+  Debug("bitvector-bitblast") << "Bitblasting term " << node <<"\n";
+  ++d_statistics.d_numTerms;
+
+  d_termBBStrategies[node.getKind()] (node, bits,this);
+
+  Assert (bits.size() == utils::getSize(node));
+
+  storeBBTerm(node, bits);
+}
+/// Public methods
+
+void TLazyBitblaster::addAtom(TNode atom) {
+  d_cnfStream->ensureLiteral(atom);
+  prop::SatLiteral lit = d_cnfStream->getLiteral(atom);
+  d_satSolver->addMarkerLiteral(lit);
+}
+
+void TLazyBitblaster::explain(TNode atom, std::vector<TNode>& explanation) {
+  prop::SatLiteral lit = d_cnfStream->getLiteral(atom);
+
+  ++(d_statistics.d_numExplainedPropagations);
+  if (options::bvEagerExplanations()) {
+    Assert (d_explanations->find(lit) != d_explanations->end());
+    const std::vector<prop::SatLiteral>& literal_explanation = (*d_explanations)[lit].get();
+    for (unsigned i = 0; i < literal_explanation.size(); ++i) {
+      explanation.push_back(d_cnfStream->getNode(literal_explanation[i]));
+    }
+    return;
+  }
+
+  std::vector<prop::SatLiteral> literal_explanation;
+  d_satSolver->explain(lit, literal_explanation);
+  for (unsigned i = 0; i < literal_explanation.size(); ++i) {
+    explanation.push_back(d_cnfStream->getNode(literal_explanation[i]));
+  }
+}
+
+
+/*
+ * Asserts the clauses corresponding to the atom to the Sat Solver
+ * by turning on the marker literal (i.e. setting it to false)
+ * @param node the atom to be asserted
+ *
+ */
+
+bool TLazyBitblaster::propagate() {
+  return d_satSolver->propagate() == prop::SAT_VALUE_TRUE;
+}
+
+bool TLazyBitblaster::assertToSat(TNode lit, bool propagate) {
+  // strip the not
+  TNode atom;
+  if (lit.getKind() == kind::NOT) {
+    atom = lit[0];
+  } else {
+    atom = lit;
+  }
+  Assert( utils::isBitblastAtom( atom ) );
+
+  Assert (hasBBAtom(atom));
+
+  prop::SatLiteral markerLit = d_cnfStream->getLiteral(atom);
+
+  if(lit.getKind() == kind::NOT) {
+    markerLit = ~markerLit;
+  }
+
+  Debug("bitvector-bb") << "TheoryBV::TLazyBitblaster::assertToSat asserting node: " << atom <<"\n";
+  Debug("bitvector-bb") << "TheoryBV::TLazyBitblaster::assertToSat with literal:   " << markerLit << "\n";
+
+  prop::SatValue ret = d_satSolver->assertAssumption(markerLit, propagate);
+
+  d_assertedAtoms->push_back(markerLit);
+
+  return ret == prop::SAT_VALUE_TRUE || ret == prop::SAT_VALUE_UNKNOWN;
+}
+
+/**
+ * Calls the solve method for the Sat Solver.
+ * passing it the marker literals to be asserted
+ *
+ * @return true for sat, and false for unsat
+ */
+
+bool TLazyBitblaster::solve() {
+  if (Trace.isOn("bitvector")) {
+    Trace("bitvector") << "TLazyBitblaster::solve() asserted atoms ";
+    context::CDList<prop::SatLiteral>::const_iterator it = d_assertedAtoms->begin();
+    for (; it != d_assertedAtoms->end(); ++it) {
+      Trace("bitvector") << "     " << d_cnfStream->getNode(*it) << "\n";
+    }
+  }
+  Debug("bitvector") << "TLazyBitblaster::solve() asserted atoms " << d_assertedAtoms->size() <<"\n";
+  d_satSolverFullModel.set(true);
+  return prop::SAT_VALUE_TRUE == d_satSolver->solve();
+}
+
+prop::SatValue TLazyBitblaster::solveWithBudget(unsigned long budget) {
+  if (Trace.isOn("bitvector")) {
+    Trace("bitvector") << "TLazyBitblaster::solveWithBudget() asserted atoms ";
+    context::CDList<prop::SatLiteral>::const_iterator it = d_assertedAtoms->begin();
+    for (; it != d_assertedAtoms->end(); ++it) {
+      Trace("bitvector") << "     " << d_cnfStream->getNode(*it) << "\n";
+    }
+  }
+  Debug("bitvector") << "TLazyBitblaster::solveWithBudget() asserted atoms " << d_assertedAtoms->size() <<"\n";
+  return d_satSolver->solve(budget);
+}
+
+
+void TLazyBitblaster::getConflict(std::vector<TNode>& conflict) {
+  prop::SatClause conflictClause;
+  d_satSolver->getUnsatCore(conflictClause);
+
+  for (unsigned i = 0; i < conflictClause.size(); i++) {
+    prop::SatLiteral lit = conflictClause[i];
+    TNode atom = d_cnfStream->getNode(lit);
+    Node  not_atom;
+    if (atom.getKind() == kind::NOT) {
+      not_atom = atom[0];
+    } else {
+      not_atom = NodeManager::currentNM()->mkNode(kind::NOT, atom);
+    }
+    conflict.push_back(not_atom);
+  }
+}
+
+TLazyBitblaster::Statistics::Statistics(const std::string& prefix) :
+  d_numTermClauses("theory::bv::"+prefix+"::NumberOfTermSatClauses", 0),
+  d_numAtomClauses("theory::bv::"+prefix+"::NumberOfAtomSatClauses", 0),
+  d_numTerms("theory::bv::"+prefix+"::NumberOfBitblastedTerms", 0),
+  d_numAtoms("theory::bv::"+prefix+"::NumberOfBitblastedAtoms", 0),
+  d_numExplainedPropagations("theory::bv::"+prefix+"::NumberOfExplainedPropagations", 0),
+  d_numBitblastingPropagations("theory::bv::"+prefix+"::NumberOfBitblastingPropagations", 0),
+  d_bitblastTimer("theory::bv::"+prefix+"::BitblastTimer")
+{
+  smtStatisticsRegistry()->registerStat(&d_numTermClauses);
+  smtStatisticsRegistry()->registerStat(&d_numAtomClauses);
+  smtStatisticsRegistry()->registerStat(&d_numTerms);
+  smtStatisticsRegistry()->registerStat(&d_numAtoms);
+  smtStatisticsRegistry()->registerStat(&d_numExplainedPropagations);
+  smtStatisticsRegistry()->registerStat(&d_numBitblastingPropagations);
+  smtStatisticsRegistry()->registerStat(&d_bitblastTimer);
+}
+
+
+TLazyBitblaster::Statistics::~Statistics() {
+  smtStatisticsRegistry()->unregisterStat(&d_numTermClauses);
+  smtStatisticsRegistry()->unregisterStat(&d_numAtomClauses);
+  smtStatisticsRegistry()->unregisterStat(&d_numTerms);
+  smtStatisticsRegistry()->unregisterStat(&d_numAtoms);
+  smtStatisticsRegistry()->unregisterStat(&d_numExplainedPropagations);
+  smtStatisticsRegistry()->unregisterStat(&d_numBitblastingPropagations);
+  smtStatisticsRegistry()->unregisterStat(&d_bitblastTimer);
+}
+
+bool TLazyBitblaster::MinisatNotify::notify(prop::SatLiteral lit) {
+  if(options::bvEagerExplanations()) {
+    // compute explanation
+    if (d_lazyBB->d_explanations->find(lit) == d_lazyBB->d_explanations->end()) {
+      std::vector<prop::SatLiteral> literal_explanation;
+      d_lazyBB->d_satSolver->explain(lit, literal_explanation);
+      d_lazyBB->d_explanations->insert(lit, literal_explanation);
+    } else {
+      // we propagated it at a lower level
+      return true;
+    }
+  }
+  ++(d_lazyBB->d_statistics.d_numBitblastingPropagations);
+  TNode atom = d_cnf->getNode(lit);
+  return d_bv->storePropagation(atom, SUB_BITBLAST);
+}
+
+void TLazyBitblaster::MinisatNotify::notify(prop::SatClause& clause) {
+  if (clause.size() > 1) {
+    NodeBuilder<> lemmab(kind::OR);
+    for (unsigned i = 0; i < clause.size(); ++ i) {
+      lemmab << d_cnf->getNode(clause[i]);
+    }
+    Node lemma = lemmab;
+    d_bv->d_out->lemma(lemma);
+  } else {
+    d_bv->d_out->lemma(d_cnf->getNode(clause[0]));
+  }
+}
+
+void TLazyBitblaster::MinisatNotify::spendResource(unsigned ammount) {
+  d_bv->spendResource(ammount);
+}
+
+void TLazyBitblaster::MinisatNotify::safePoint(unsigned ammount) {
+  d_bv->d_out->safePoint(ammount);
+}
+
+
+EqualityStatus TLazyBitblaster::getEqualityStatus(TNode a, TNode b) {
+  Debug("bv-equality-status")<< "TLazyBitblaster::getEqualityStatus " << a <<" = " << b <<"\n";
+  Debug("bv-equality-status")<< "BVSatSolver has full model? " << d_satSolverFullModel.get() <<"\n";
+
+  // First check if it trivially rewrites to false/true
+  Node a_eq_b = Rewriter::rewrite(utils::mkNode(kind::EQUAL, a, b));
+
+  if (a_eq_b == utils::mkFalse()) return theory::EQUALITY_FALSE;
+  if (a_eq_b == utils::mkTrue()) return theory::EQUALITY_TRUE;
+
+  if (!d_satSolverFullModel.get())
+    return theory::EQUALITY_UNKNOWN;
+
+  // Check if cache is valid (invalidated in check and pops)
+  if (d_bv->d_invalidateModelCache.get()) {
+    invalidateModelCache();
+  }
+  d_bv->d_invalidateModelCache.set(false);
+
+  Node a_value = getTermModel(a, true);
+  Node b_value = getTermModel(b, true);
+
+  Assert (a_value.isConst() &&
+          b_value.isConst());
+
+  if (a_value == b_value) {
+    Debug("bv-equality-status")<< "theory::EQUALITY_TRUE_IN_MODEL\n";
+    return theory::EQUALITY_TRUE_IN_MODEL;
+  }
+  Debug("bv-equality-status")<< "theory::EQUALITY_FALSE_IN_MODEL\n";
+  return theory::EQUALITY_FALSE_IN_MODEL;
+}
+
+
+bool TLazyBitblaster::isSharedTerm(TNode node) {
+  return d_bv->d_sharedTermsSet.find(node) != d_bv->d_sharedTermsSet.end();
+}
+
+bool TLazyBitblaster::hasValue(TNode a) {
+  Assert (hasBBTerm(a));
+  Bits bits;
+  getBBTerm(a, bits);
+  for (int i = bits.size() -1; i >= 0; --i) {
+    prop::SatValue bit_value;
+    if (d_cnfStream->hasLiteral(bits[i])) {
+      prop::SatLiteral bit = d_cnfStream->getLiteral(bits[i]);
+      bit_value = d_satSolver->value(bit);
+      if (bit_value ==  prop::SAT_VALUE_UNKNOWN)
+        return false;
+    } else {
+      return false;
+    }
+  }
+  return true;
+}
+/**
+ * Returns the value a is currently assigned to in the SAT solver
+ * or null if the value is completely unassigned.
+ *
+ * @param a
+ * @param fullModel whether to create a "full model," i.e., add
+ * constants to equivalence classes that don't already have them
+ *
+ * @return
+ */
+Node TLazyBitblaster::getModelFromSatSolver(TNode a, bool fullModel) {
+  if (!hasBBTerm(a)) {
+    return fullModel? utils::mkConst(utils::getSize(a), 0u) : Node();
+  }
+
+  Bits bits;
+  getBBTerm(a, bits);
+  Integer value(0);
+  for (int i = bits.size() -1; i >= 0; --i) {
+    prop::SatValue bit_value;
+    if (d_cnfStream->hasLiteral(bits[i])) {
+      prop::SatLiteral bit = d_cnfStream->getLiteral(bits[i]);
+      bit_value = d_satSolver->value(bit);
+      Assert (bit_value != prop::SAT_VALUE_UNKNOWN);
+    } else {
+      if (!fullModel) return Node();
+      // unconstrained bits default to false
+      bit_value = prop::SAT_VALUE_FALSE;
+    }
+    Integer bit_int = bit_value == prop::SAT_VALUE_TRUE ? Integer(1) : Integer(0);
+    value = value * 2 + bit_int;
+  }
+  return utils::mkConst(BitVector(bits.size(), value));
+}
+
+void TLazyBitblaster::collectModelInfo(TheoryModel* m, bool fullModel) {
+  std::set<Node> termSet;
+  d_bv->computeRelevantTerms(termSet);
+
+  for (std::set<Node>::const_iterator it = termSet.begin(); it != termSet.end(); ++it) {
+    TNode var = *it;
+    // not actually a leaf of the bit-vector theory
+    if (d_variables.find(var) == d_variables.end())
+      continue;
+
+    Assert (Theory::theoryOf(var) == theory::THEORY_BV || isSharedTerm(var));
+    // only shared terms could not have been bit-blasted
+    Assert (hasBBTerm(var) || isSharedTerm(var));
+
+    Node const_value = getModelFromSatSolver(var, true);
+    Assert (const_value.isNull() || const_value.isConst());
+    if(const_value != Node()) {
+      Debug("bitvector-model") << "TLazyBitblaster::collectModelInfo (assert (= "
+                               << var << " "
+                               << const_value << "))\n";
+        m->assertEquality(var, const_value, true);
+    }
+  }
+}
+
+void TLazyBitblaster::setProofLog( BitVectorProof * bvp ){
+  d_bvp = bvp;
+  d_satSolver->setProofLog( bvp );
+  bvp->initCnfProof(d_cnfStream, d_nullContext);
+}
+
+void TLazyBitblaster::clearSolver() {
+  Assert (d_ctx->getLevel() == 0);
+  delete d_satSolver;
+  delete d_satSolverNotify;
+  delete d_cnfStream;
+  d_assertedAtoms->deleteSelf();
+  d_assertedAtoms = new(true) context::CDList<prop::SatLiteral>(d_ctx);
+  d_explanations->deleteSelf();
+  d_explanations = new(true) ExplanationMap(d_ctx);
+  d_bbAtoms.clear();
+  d_variables.clear();
+  d_termCache.clear();
+
+  invalidateModelCache();
+  // recreate sat solver
+  d_satSolver = prop::SatSolverFactory::createMinisat(
+      d_ctx, smtStatisticsRegistry());
+  d_cnfStream = new prop::TseitinCnfStream(d_satSolver, d_nullRegistrar,
+                                           d_nullContext);
+
+  d_satSolverNotify = d_emptyNotify ?
+    (prop::BVSatSolverInterface::Notify*) new MinisatEmptyNotify() :
+    (prop::BVSatSolverInterface::Notify*) new MinisatNotify(d_cnfStream, d_bv,
+                                                            this);
+  d_satSolver->setNotify(d_satSolverNotify);
+}
+
+} /* namespace CVC4::theory::bv */
+} /* namespace CVC4::theory */
+} /* namespace CVC4 */
diff --git a/src/theory/bv/slicer.cpp b/src/theory/bv/slicer.cpp
new file mode 100644
index 0000000..150f73a
--- /dev/null
+++ b/src/theory/bv/slicer.cpp
@@ -0,0 +1,615 @@
+/*********************                                                        */
+/*! \file slicer.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Bitvector theory.
+ **
+ ** Bitvector theory.
+ **/
+#include "theory/bv/slicer.h"
+
+#include "options/bv_options.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/bv/theory_bv_utils.h"
+#include "theory/rewriter.h"
+
+using namespace CVC4;
+using namespace CVC4::theory;
+using namespace CVC4::theory::bv;
+using namespace std; 
+
+
+const TermId CVC4::theory::bv::UndefinedId = -1; 
+
+/**
+ * Base
+ * 
+ */
+Base::Base(uint32_t size) 
+  : d_size(size),
+    d_repr(size/32 + (size % 32 == 0? 0 : 1), 0)
+{
+  Assert (d_size > 0); 
+}
+
+  
+void Base::sliceAt(Index index) {
+  Index vector_index = index / 32;
+  if (vector_index == d_repr.size())
+    return;
+  
+  Index int_index = index % 32;
+  uint32_t bit_mask = utils::pow2(int_index); 
+  d_repr[vector_index] = d_repr[vector_index] | bit_mask; 
+}
+
+void Base::sliceWith(const Base& other) {
+  Assert (d_size == other.d_size);
+  for (unsigned i = 0; i < d_repr.size(); ++i) {
+    d_repr[i] = d_repr[i] | other.d_repr[i]; 
+  }
+}
+
+bool Base::isCutPoint (Index index) const {
+  // there is an implicit cut point at the end and begining of the bv
+  if (index == d_size || index == 0)
+    return true;
+    
+  Index vector_index = index / 32;
+  Assert (vector_index < d_size); 
+  Index int_index = index % 32;
+  uint32_t bit_mask = utils::pow2(int_index); 
+
+  return (bit_mask & d_repr[vector_index]) != 0; 
+}
+
+void Base::diffCutPoints(const Base& other, Base& res) const {
+  Assert (d_size == other.d_size && res.d_size == d_size);
+  for (unsigned i = 0; i < d_repr.size(); ++i) {
+    Assert (res.d_repr[i] == 0); 
+    res.d_repr[i] = d_repr[i] ^ other.d_repr[i]; 
+  }
+}
+
+bool Base::isEmpty() const {
+  for (unsigned i = 0; i< d_repr.size(); ++i) {
+    if (d_repr[i] != 0)
+      return false;
+  }
+  return true;
+}
+
+std::string Base::debugPrint() const {
+  std::ostringstream os;
+  os << "[";
+  bool first = true; 
+  for (int i = d_size - 1; i >= 0; --i) {
+    if (isCutPoint(i)) {
+      if (first)
+        first = false;
+      else
+        os <<"| "; 
+        
+      os << i ; 
+    }
+  }
+  os << "]"; 
+  return os.str(); 
+}
+
+/**
+ * ExtractTerm
+ *
+ */
+
+std::string ExtractTerm::debugPrint() const {
+  ostringstream os;
+  os << "id" << id << "[" << high << ":" << low <<"] ";  
+  return os.str(); 
+}
+
+/**
+ * NormalForm
+ *
+ */
+
+std::pair<TermId, Index> NormalForm::getTerm(Index index, const UnionFind& uf) const {
+  Assert (index < base.getBitwidth()); 
+  Index count = 0;
+  for (unsigned i = 0; i < decomp.size(); ++i) {
+    Index size = uf.getBitwidth(decomp[i]); 
+    if ( count + size > index && index >= count) {
+      return pair<TermId, Index>(decomp[i], count); 
+    }
+    count += size; 
+  }
+  Unreachable(); 
+}
+
+
+
+std::string NormalForm::debugPrint(const UnionFind& uf) const {
+  ostringstream os;
+  os << "NF " << base.debugPrint() << endl;
+  os << "("; 
+  for (int i = decomp.size() - 1; i>= 0; --i) {
+    os << decomp[i] << "[" << uf.getBitwidth(decomp[i]) <<"]";
+    os << (i != 0? ", " : "");  
+  }
+  os << ") \n"; 
+  return os.str(); 
+}
+/**
+ * UnionFind::Node
+ * 
+ */
+
+std::string UnionFind::Node::debugPrint() const {
+  ostringstream os;
+  os << "Repr " << d_repr << " ["<< d_bitwidth << "] ";
+  os << "( " << d_ch1 <<", " << d_ch0 << ")" << endl; 
+  return os.str(); 
+}
+
+
+/**
+ * UnionFind
+ * 
+ */
+TermId UnionFind::addTerm(Index bitwidth) {
+  Node node(bitwidth);
+  d_nodes.push_back(node);
+  ++(d_statistics.d_numNodes);
+  
+  TermId id = d_nodes.size() - 1; 
+  d_representatives.insert(id);
+  ++(d_statistics.d_numRepresentatives); 
+
+  Debug("bv-slicer-uf") << "UnionFind::addTerm " << id << " size " << bitwidth << endl;
+  return id; 
+}
+/** 
+ * At this point we assume the slicings of the two terms are properly aligned. 
+ * 
+ * @param t1 
+ * @param t2 
+ */
+void UnionFind::unionTerms(const ExtractTerm& t1, const ExtractTerm& t2) {
+  Debug("bv-slicer") << "UnionFind::unionTerms " << t1.debugPrint() << " and \n"
+                     << "                      " << t2.debugPrint() << endl;
+  Assert (t1.getBitwidth() == t2.getBitwidth());
+  
+  NormalForm nf1(t1.getBitwidth());
+  NormalForm nf2(t2.getBitwidth());
+  
+  getNormalForm(t1, nf1);
+  getNormalForm(t2, nf2);
+
+  Assert (nf1.decomp.size() == nf2.decomp.size());
+  Assert (nf1.base == nf2.base);
+  
+  for (unsigned i = 0; i < nf1.decomp.size(); ++i) {
+    merge (nf1.decomp[i], nf2.decomp[i]); 
+  } 
+}
+
+/** 
+ * Merge the two terms in the union find. Both t1 and t2
+ * should be root terms. 
+ * 
+ * @param t1 
+ * @param t2 
+ */
+void UnionFind::merge(TermId t1, TermId t2) {
+  Debug("bv-slicer-uf") << "UnionFind::merge (" << t1 <<", " << t2 << ")" << endl;
+  ++(d_statistics.d_numMerges);
+  t1 = find(t1);
+  t2 = find(t2); 
+
+  if (t1 == t2)
+    return;
+
+  Assert (! hasChildren(t1) && ! hasChildren(t2));
+  setRepr(t1, t2); 
+  d_representatives.erase(t1);
+  d_statistics.d_numRepresentatives += -1; 
+}
+
+TermId UnionFind::find(TermId id) {
+  TermId repr = getRepr(id); 
+  if (repr != UndefinedId) {
+    TermId find_id =  find(repr);
+    setRepr(id, find_id);
+    return find_id; 
+  }
+  return id; 
+}
+/** 
+ * Splits the representative of the term between i-1 and i
+ * 
+ * @param id the id of the term
+ * @param i the index we are splitting at
+ * 
+ * @return 
+ */
+void UnionFind::split(TermId id, Index i) {
+  Debug("bv-slicer-uf") << "UnionFind::split " << id << " at " << i << endl;
+  id = find(id); 
+  Debug("bv-slicer-uf") << "   node: " << d_nodes[id].debugPrint() << endl;
+
+  if (i == 0 || i == getBitwidth(id)) {
+    // nothing to do 
+    return;
+  }
+  Assert (i < getBitwidth(id));
+  if (!hasChildren(id)) {
+    // first time we split this term 
+    TermId bottom_id = addTerm(i);
+    TermId top_id = addTerm(getBitwidth(id) - i);
+    setChildren(id, top_id, bottom_id);
+
+  } else {
+    Index cut = getCutPoint(id); 
+    if (i < cut )
+      split(getChild(id, 0), i);
+    else
+      split(getChild(id, 1), i - cut); 
+  }
+  ++(d_statistics.d_numSplits);
+}
+
+void UnionFind::getNormalForm(const ExtractTerm& term, NormalForm& nf) {
+  nf.clear(); 
+  getDecomposition(term, nf.decomp);
+  // update nf base
+  Index count = 0; 
+  for (unsigned i = 0; i < nf.decomp.size(); ++i) {
+    count += getBitwidth(nf.decomp[i]);
+    nf.base.sliceAt(count); 
+  }
+  Debug("bv-slicer-uf") << "UnionFind::getNormalFrom term: " << term.debugPrint() << endl;
+  Debug("bv-slicer-uf") << "           nf: " << nf.debugPrint(*this) << endl; 
+}
+
+void UnionFind::getDecomposition(const ExtractTerm& term, Decomposition& decomp) {
+  // making sure the term is aligned
+  TermId id = find(term.id); 
+
+  Assert (term.high < getBitwidth(id));
+  // because we split the node, this must be the whole extract
+  if (!hasChildren(id)) {
+    Assert (term.high == getBitwidth(id) - 1 &&
+            term.low == 0);
+    decomp.push_back(id);
+    return; 
+  }
+    
+  Index cut = getCutPoint(id);
+  
+  if (term.low < cut && term.high < cut) {
+    // the extract falls entirely on the low child
+    ExtractTerm child_ex(getChild(id, 0), term.high, term.low); 
+    getDecomposition(child_ex, decomp); 
+  }
+  else if (term.low >= cut && term.high >= cut){
+    // the extract falls entirely on the high child
+    ExtractTerm child_ex(getChild(id, 1), term.high - cut, term.low - cut);
+    getDecomposition(child_ex, decomp); 
+  }
+  else {
+    // the extract is split over the two children
+    ExtractTerm low_child(getChild(id, 0), cut - 1, term.low);
+    getDecomposition(low_child, decomp);
+    ExtractTerm high_child(getChild(id, 1), term.high - cut, 0);
+    getDecomposition(high_child, decomp); 
+  }
+}
+/** 
+ * May cause reslicings of the decompositions. Must not assume the decompositons
+ * are the current normal form. 
+ * 
+ * @param d1 
+ * @param d2 
+ * @param common 
+ */
+void UnionFind::handleCommonSlice(const Decomposition& decomp1, const Decomposition& decomp2, TermId common) {
+  Debug("bv-slicer") << "UnionFind::handleCommonSlice common = " << common << endl; 
+  Index common_size = getBitwidth(common); 
+  // find starting points of common slice
+  Index start1 = 0;
+  for (unsigned j = 0; j < decomp1.size(); ++j) {
+    if (decomp1[j] == common)
+      break;
+    start1 += getBitwidth(decomp1[j]); 
+  }
+
+  Index start2 = 0; 
+  for (unsigned j = 0; j < decomp2.size(); ++j) {
+    if (decomp2[j] == common)
+      break;
+    start2 += getBitwidth(decomp2[j]); 
+  }
+  if (start1 > start2) {
+    Index temp = start1;
+    start1 = start2;
+    start2 = temp; 
+  }
+
+  if (start2 - start1 < common_size) {
+    Index overlap = start1 + common_size - start2;
+    Assert (overlap > 0);
+    Index diff = common_size - overlap;
+    Assert (diff >= 0);
+    Index granularity = utils::gcd(diff, overlap);
+    // split the common part 
+    for (unsigned i = 0; i < common_size; i+= granularity) {
+      split(common, i); 
+    }
+  }
+
+}
+
+void UnionFind::alignSlicings(const ExtractTerm& term1, const ExtractTerm& term2) {
+  Debug("bv-slicer") << "UnionFind::alignSlicings " << term1.debugPrint() << endl;
+  Debug("bv-slicer") << "                         " << term2.debugPrint() << endl;
+  NormalForm nf1(term1.getBitwidth());
+  NormalForm nf2(term2.getBitwidth());
+  
+  getNormalForm(term1, nf1);
+  getNormalForm(term2, nf2);
+
+  Assert (nf1.base.getBitwidth() == nf2.base.getBitwidth());
+  
+  // first check if the two have any common slices 
+  std::vector<TermId> intersection; 
+  utils::intersect(nf1.decomp, nf2.decomp, intersection); 
+  for (unsigned i = 0; i < intersection.size(); ++i) {
+    // handle common slice may change the normal form 
+    handleCommonSlice(nf1.decomp, nf2.decomp, intersection[i]); 
+  }
+  // propagate cuts to a fixpoint 
+  bool changed;
+  Base cuts(term1.getBitwidth()); 
+  do {
+    changed = false; 
+    // we need to update the normal form which may have changed 
+    getNormalForm(term1, nf1);
+    getNormalForm(term2, nf2); 
+
+    // align the cuts points of the two slicings
+    // FIXME: this can be done more efficiently
+    cuts.sliceWith(nf1.base);
+    cuts.sliceWith(nf2.base); 
+
+    for (unsigned i = 0; i < cuts.getBitwidth(); ++i) {
+      if (cuts.isCutPoint(i)) {
+        if (!nf1.base.isCutPoint(i)) {
+          pair<TermId, Index> pair1 = nf1.getTerm(i, *this);
+          split(pair1.first, i - pair1.second);
+          changed = true; 
+        }
+        if (!nf2.base.isCutPoint(i)) {
+          pair<TermId, Index> pair2 = nf2.getTerm(i, *this);
+          split(pair2.first, i - pair2.second);
+          changed = true; 
+        }
+      }
+    }
+  } while (changed); 
+}
+/** 
+ * Given an extract term a[i:j] makes sure a is sliced
+ * at indices i and j. 
+ * 
+ * @param term 
+ */
+void UnionFind::ensureSlicing(const ExtractTerm& term) {
+  //Debug("bv-slicer") << "Slicer::ensureSlicing " << term.debugPrint() << endl;
+  TermId id = find(term.id);
+  split(id, term.high + 1);
+  split(id, term.low);
+}
+
+/**
+ * Slicer
+ * 
+ */
+
+ExtractTerm Slicer::registerTerm(TNode node) {
+  Index low = 0, high = utils::getSize(node) - 1; 
+  TNode n = node; 
+  if (node.getKind() == kind::BITVECTOR_EXTRACT) {
+    n = node[0];
+    high = utils::getExtractHigh(node);
+    low = utils::getExtractLow(node); 
+  }
+  if (d_nodeToId.find(n) == d_nodeToId.end()) {
+    TermId id = d_unionFind.addTerm(utils::getSize(n)); 
+    d_nodeToId[n] = id;
+    d_idToNode[id] = n; 
+  }
+  TermId id = d_nodeToId[n];
+  ExtractTerm res(id, high, low); 
+  Debug("bv-slicer") << "Slicer::registerTerm " << node << " => " << res.debugPrint() << endl;
+  return res; 
+}
+
+void Slicer::processEquality(TNode eq) {
+  Debug("bv-slicer") << "Slicer::processEquality: " << eq << endl;
+  
+  Assert (eq.getKind() == kind::EQUAL);
+  TNode a = eq[0];
+  TNode b = eq[1];
+  ExtractTerm a_ex= registerTerm(a);
+  ExtractTerm b_ex= registerTerm(b);
+  
+  d_unionFind.ensureSlicing(a_ex);
+  d_unionFind.ensureSlicing(b_ex);
+  
+  d_unionFind.alignSlicings(a_ex, b_ex);
+  d_unionFind.unionTerms(a_ex, b_ex);
+  Debug("bv-slicer") << "Base of " << a_ex.id <<" " << d_unionFind.debugPrint(a_ex.id) << endl;
+  Debug("bv-slicer") << "Base of " << b_ex.id <<" " << d_unionFind.debugPrint(b_ex.id) << endl;
+  Debug("bv-slicer") << "Slicer::processEquality done. " << endl;
+}
+
+void Slicer::getBaseDecomposition(TNode node, std::vector<Node>& decomp) {
+  Debug("bv-slicer") << "Slicer::getBaseDecomposition " << node << endl;
+  
+  Index high = utils::getSize(node) - 1;
+  Index low = 0;
+  TNode top = node; 
+  if (node.getKind() == kind::BITVECTOR_EXTRACT) {
+    high = utils::getExtractHigh(node);
+    low = utils::getExtractLow(node);
+    top = node[0]; 
+  }
+  AlwaysAssert (d_nodeToId.find(top) != d_nodeToId.end()); 
+  TermId id = d_nodeToId[top];
+  NormalForm nf(high-low+1); 
+  d_unionFind.getNormalForm(ExtractTerm(id, high, low), nf);
+  
+  // construct actual extract nodes
+  unsigned size = utils::getSize(node); 
+  Index current_low = size;
+  Index current_high = size; 
+  for (int i = nf.decomp.size() - 1; i >= 0; --i) {
+    Index current_size = d_unionFind.getBitwidth(nf.decomp[i]); 
+    current_low -= current_size; 
+    Node current = Rewriter::rewrite(utils::mkExtract(node, current_high - 1, current_low));
+    current_high = current_low;
+    decomp.push_back(current); 
+  }
+
+  Debug("bv-slicer") << "as [";
+  for (unsigned i = 0; i < decomp.size(); ++i) {
+    Debug("bv-slicer") << decomp[i] <<" "; 
+  }
+  Debug("bv-slicer") << "]" << endl;
+
+}
+
+bool Slicer::isCoreTerm(TNode node) {
+  if (d_coreTermCache.find(node) == d_coreTermCache.end()) {
+    Kind kind = node.getKind();
+    bool not_core;
+    if (options::bitvectorEqualitySlicer() != BITVECTOR_SLICER_OFF) {
+      not_core = (kind != kind::BITVECTOR_EXTRACT && kind != kind::BITVECTOR_CONCAT); 
+    } else {
+      not_core = true; 
+    }
+    if (not_core &&
+        kind != kind::EQUAL &&
+        kind != kind::NOT &&
+        kind != kind::STORE &&
+        kind != kind::SELECT &&
+        node.getMetaKind() != kind::metakind::VARIABLE &&
+        kind != kind::CONST_BITVECTOR) {
+      d_coreTermCache[node] = false;
+      return false; 
+    } else {
+      // we need to recursively check whether the term is a root term or not
+      bool isCore = true;
+      for (unsigned i = 0; i < node.getNumChildren(); ++i) {
+        isCore = isCore && isCoreTerm(node[i]); 
+      }
+      d_coreTermCache[node] = isCore;
+      return isCore; 
+    }
+  }
+  return d_coreTermCache[node]; 
+}
+unsigned Slicer::d_numAddedEqualities = 0; 
+
+void Slicer::splitEqualities(TNode node, std::vector<Node>& equalities) {
+  Assert (node.getKind() == kind::EQUAL);
+  TNode t1 = node[0];
+  TNode t2 = node[1];
+
+  uint32_t width = utils::getSize(t1); 
+  
+  Base base1(width); 
+  if (t1.getKind() == kind::BITVECTOR_CONCAT) {
+    int size = 0;
+    // no need to count the last child since the end cut point is implicit 
+    for (int i = t1.getNumChildren() - 1; i >= 1 ; --i) {
+      size = size + utils::getSize(t1[i]);
+      base1.sliceAt(size); 
+    }
+  }
+
+  Base base2(width); 
+  if (t2.getKind() == kind::BITVECTOR_CONCAT) {
+    unsigned size = 0; 
+    for (int i = t2.getNumChildren() - 1; i >= 1; --i) {
+      size = size + utils::getSize(t2[i]);
+      base2.sliceAt(size); 
+    }
+  }
+
+  base1.sliceWith(base2); 
+  if (!base1.isEmpty()) {
+    // we split the equalities according to the base
+    int last = 0; 
+    for (unsigned i = 1; i <= utils::getSize(t1); ++i) {
+      if (base1.isCutPoint(i)) {
+        Node extract1 = utils::mkExtract(t1, i-1, last);
+        Node extract2 = utils::mkExtract(t2, i-1, last);
+        last = i;
+        Assert (utils::getSize(extract1) == utils::getSize(extract2)); 
+        equalities.push_back(utils::mkNode(kind::EQUAL, extract1, extract2)); 
+      }
+    }
+  } else {
+    // just return same equality
+    equalities.push_back(node);
+  }
+  d_numAddedEqualities += equalities.size() - 1; 
+} 
+
+std::string UnionFind::debugPrint(TermId id) {
+  ostringstream os; 
+  if (hasChildren(id)) {
+    TermId id1 = find(getChild(id, 1));
+    TermId id0 = find(getChild(id, 0));
+    os << debugPrint(id1);
+    os << debugPrint(id0); 
+  } else {
+    if (getRepr(id) == UndefinedId) {
+      os <<"id"<< id <<"[" << getBitwidth(id) <<"] "; 
+    } else {
+      os << debugPrint(find(id));
+    }
+  }
+  return os.str(); 
+}
+
+UnionFind::Statistics::Statistics():
+  d_numNodes("theory::bv::slicer::NumberOfNodes", 0),
+  d_numRepresentatives("theory::bv::slicer::NumberOfRepresentatives", 0),
+  d_numSplits("theory::bv::slicer::NumberOfSplits", 0),
+  d_numMerges("theory::bv::slicer::NumberOfMerges", 0),
+  d_avgFindDepth("theory::bv::slicer::AverageFindDepth"),
+  d_numAddedEqualities("theory::bv::slicer::NumberOfEqualitiesAdded", Slicer::d_numAddedEqualities)
+{
+  smtStatisticsRegistry()->registerStat(&d_numRepresentatives);
+  smtStatisticsRegistry()->registerStat(&d_numSplits);
+  smtStatisticsRegistry()->registerStat(&d_numMerges);
+  smtStatisticsRegistry()->registerStat(&d_avgFindDepth);
+  smtStatisticsRegistry()->registerStat(&d_numAddedEqualities);
+}
+
+UnionFind::Statistics::~Statistics() {
+  smtStatisticsRegistry()->unregisterStat(&d_numRepresentatives);
+  smtStatisticsRegistry()->unregisterStat(&d_numSplits);
+  smtStatisticsRegistry()->unregisterStat(&d_numMerges);
+  smtStatisticsRegistry()->unregisterStat(&d_avgFindDepth);
+  smtStatisticsRegistry()->unregisterStat(&d_numAddedEqualities);
+}
diff --git a/src/theory/bv/slicer.h b/src/theory/bv/slicer.h
new file mode 100644
index 0000000..4eae279
--- /dev/null
+++ b/src/theory/bv/slicer.h
@@ -0,0 +1,254 @@
+/*********************                                                        */
+/*! \file slicer.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Bitvector theory.
+ **
+ ** Bitvector theory.
+ **/
+
+#include "cvc4_private.h"
+
+#include <math.h>
+
+#include <vector>
+#include <list>
+#include <ext/hash_map>
+
+#include "expr/node.h"
+#include "theory/bv/theory_bv_utils.h"
+#include "util/bitvector.h"
+#include "util/index.h"
+#include "util/statistics_registry.h"
+
+#ifndef __CVC4__THEORY__BV__SLICER_BV_H
+#define __CVC4__THEORY__BV__SLICER_BV_H
+
+
+namespace CVC4 {
+
+namespace theory {
+namespace bv {
+
+
+
+typedef Index TermId;
+extern const TermId UndefinedId;
+
+
+/** 
+ * Base
+ * 
+ */
+class Base {
+  Index d_size;
+  std::vector<uint32_t> d_repr;
+public:
+  Base(Index size);
+  void sliceAt(Index index); 
+  void sliceWith(const Base& other);
+  bool isCutPoint(Index index) const;
+  void diffCutPoints(const Base& other, Base& res) const;
+  bool isEmpty() const;
+  std::string debugPrint() const;
+  Index getBitwidth() const { return d_size; }
+  void clear() {
+    for (unsigned i = 0; i < d_repr.size(); ++i) {
+      d_repr[i] = 0; 
+    }
+  }
+  bool operator==(const Base& other) const {
+    if (other.getBitwidth() != getBitwidth())
+      return false;
+    for (unsigned i = 0; i < d_repr.size(); ++i) {
+      if (d_repr[i] != other.d_repr[i])
+        return false;
+    }
+    return true; 
+  }
+}; 
+
+/**
+ * UnionFind
+ * 
+ */
+typedef __gnu_cxx::hash_set<TermId> TermSet;
+typedef std::vector<TermId> Decomposition; 
+
+struct ExtractTerm {
+  TermId id;
+  Index high;
+  Index low;
+  ExtractTerm(TermId i, Index h, Index l)
+    : id (i),
+      high(h),
+      low(l)
+  {
+    Assert (h >= l && id != UndefinedId); 
+  }
+  Index getBitwidth() const { return high - low + 1; }
+  std::string debugPrint() const; 
+};
+
+class UnionFind; 
+
+struct NormalForm {
+  Base base;
+  Decomposition decomp;
+
+  NormalForm(Index bitwidth)
+    : base(bitwidth),
+      decomp()
+  {}
+  /** 
+   * Returns the term in the decomposition on which the index i
+   * falls in
+   * @param i 
+   * 
+   * @return 
+   */
+  std::pair<TermId, Index> getTerm(Index i, const UnionFind& uf) const;
+  std::string debugPrint(const UnionFind& uf) const;
+  void clear() { base.clear(); decomp.clear(); }
+};
+
+
+class UnionFind {
+  class Node {
+    Index d_bitwidth;
+    TermId d_ch1, d_ch0;
+    TermId d_repr;
+  public:
+    Node(Index b)
+  : d_bitwidth(b),
+    d_ch1(UndefinedId),
+    d_ch0(UndefinedId), 
+    d_repr(UndefinedId)
+    {}
+    
+    TermId getRepr() const { return d_repr; }
+    Index getBitwidth() const { return d_bitwidth; }
+    bool hasChildren() const { return d_ch1 != UndefinedId && d_ch0 != UndefinedId; }
+
+    TermId getChild(Index i) const {
+      Assert (i < 2);
+      return i == 0? d_ch0 : d_ch1;
+    }
+    void setRepr(TermId id) {
+      Assert (! hasChildren());
+      d_repr = id;
+    }
+    void setChildren(TermId ch1, TermId ch0) {
+      Assert (d_repr == UndefinedId && !hasChildren());
+      d_ch1 = ch1;
+      d_ch0 = ch0; 
+    }
+    std::string debugPrint() const;
+  };
+  
+  /// map from TermId to the nodes that represent them 
+  std::vector<Node> d_nodes;
+  /// a term is in this set if it is its own representative
+  TermSet d_representatives;
+  
+  void getDecomposition(const ExtractTerm& term, Decomposition& decomp);
+  void handleCommonSlice(const Decomposition& d1, const Decomposition& d2, TermId common);
+  /// getter methods for the internal nodes
+  TermId getRepr(TermId id)  const {
+    Assert (id < d_nodes.size());
+    return d_nodes[id].getRepr(); 
+  }
+  TermId getChild(TermId id, Index i) const {
+    Assert (id < d_nodes.size());
+    return d_nodes[id].getChild(i); 
+  }
+  Index getCutPoint(TermId id) const {
+    return getBitwidth(getChild(id, 0)); 
+  }
+  bool hasChildren(TermId id) const {
+    Assert (id < d_nodes.size());
+    return d_nodes[id].hasChildren(); 
+  }
+  /// setter methods for the internal nodes
+  void setRepr(TermId id, TermId new_repr) {
+    Assert (id < d_nodes.size());
+    d_nodes[id].setRepr(new_repr); 
+  }
+  void setChildren(TermId id, TermId ch1, TermId ch0) {
+    Assert (id < d_nodes.size() && getBitwidth(id) == getBitwidth(ch1) + getBitwidth(ch0));
+    d_nodes[id].setChildren(ch1, ch0); 
+  }
+
+  class Statistics {
+  public:
+    IntStat d_numNodes; 
+    IntStat d_numRepresentatives;
+    IntStat d_numSplits;
+    IntStat d_numMerges;
+    AverageStat d_avgFindDepth;
+    ReferenceStat<unsigned> d_numAddedEqualities; 
+    //IntStat d_numAddedEqualities; 
+    Statistics();
+    ~Statistics();
+  };
+
+  Statistics d_statistics
+;
+  
+public:
+  UnionFind()
+    : d_nodes(),
+      d_representatives()
+  {}
+
+  TermId addTerm(Index bitwidth);
+  void unionTerms(const ExtractTerm& t1, const ExtractTerm& t2); 
+  void merge(TermId t1, TermId t2);
+  TermId find(TermId t1); 
+  void split(TermId term, Index i);
+
+  void getNormalForm(const ExtractTerm& term, NormalForm& nf);
+  void alignSlicings(const ExtractTerm& term1, const ExtractTerm& term2);
+  void ensureSlicing(const ExtractTerm& term);
+  Index getBitwidth(TermId id) const {
+    Assert (id < d_nodes.size());
+    return d_nodes[id].getBitwidth(); 
+  }
+  std::string debugPrint(TermId id);
+  friend class Slicer; 
+};
+
+class Slicer {
+  __gnu_cxx::hash_map<TermId, TNode> d_idToNode;
+  __gnu_cxx::hash_map<TNode, TermId, TNodeHashFunction> d_nodeToId;
+  __gnu_cxx::hash_map<TNode, bool, TNodeHashFunction> d_coreTermCache;
+  UnionFind d_unionFind;
+  ExtractTerm registerTerm(TNode node); 
+public:
+  Slicer()
+    : d_idToNode(),
+      d_nodeToId(),
+      d_coreTermCache(),
+      d_unionFind()
+  {}
+  
+  void getBaseDecomposition(TNode node, std::vector<Node>& decomp);
+  void processEquality(TNode eq);
+  bool isCoreTerm (TNode node);
+  static void splitEqualities(TNode node, std::vector<Node>& equalities);
+  static unsigned d_numAddedEqualities; 
+}; 
+
+
+}/* CVC4::theory::bv namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__BV__SLICER_BV_H */
diff --git a/src/theory/bv/theory_bv.cpp b/src/theory/bv/theory_bv.cpp
new file mode 100644
index 0000000..2fc5fd0
--- /dev/null
+++ b/src/theory/bv/theory_bv.cpp
@@ -0,0 +1,1034 @@
+/*********************                                                        */
+/*! \file theory_bv.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/bv/theory_bv.h"
+
+#include "options/bv_options.h"
+#include "options/smt_options.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/bv/abstraction.h"
+#include "theory/bv/bv_eager_solver.h"
+#include "theory/bv/bv_subtheory_algebraic.h"
+#include "theory/bv/bv_subtheory_bitblast.h"
+#include "theory/bv/bv_subtheory_core.h"
+#include "theory/bv/bv_subtheory_inequality.h"
+#include "theory/bv/slicer.h"
+#include "theory/bv/theory_bv_rewrite_rules_normalization.h"
+#include "theory/bv/theory_bv_rewrite_rules_simplification.h"
+#include "theory/bv/theory_bv_rewriter.h"
+#include "theory/bv/theory_bv_utils.h"
+#include "theory/theory_model.h"
+#include "proof/theory_proof.h"
+#include "proof/proof_manager.h"
+#include "theory/valuation.h"
+
+using namespace CVC4::context;
+using namespace CVC4::theory::bv::utils;
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+TheoryBV::TheoryBV(context::Context* c, context::UserContext* u,
+                   OutputChannel& out, Valuation valuation,
+                   const LogicInfo& logicInfo, std::string name)
+  : Theory(THEORY_BV, c, u, out, valuation, logicInfo, name),
+    d_context(c),
+    d_alreadyPropagatedSet(c),
+    d_sharedTermsSet(c),
+    d_subtheories(),
+    d_subtheoryMap(),
+    d_statistics(getFullInstanceName()),
+    d_staticLearnCache(),
+    d_BVDivByZero(),
+    d_BVRemByZero(),
+    d_funcToArgs(),
+    d_funcToSkolem(u),
+    d_lemmasAdded(c, false),
+    d_conflict(c, false),
+    d_invalidateModelCache(c, true),
+    d_literalsToPropagate(c),
+    d_literalsToPropagateIndex(c, 0),
+    d_propagatedBy(c),
+    d_eagerSolver(NULL),
+    d_abstractionModule(new AbstractionModule(getFullInstanceName())),
+    d_isCoreTheory(false),
+    d_calledPreregister(false),
+    d_needsLastCallCheck(false),
+    d_extf_range_infer(u),
+    d_extf_collapse_infer(u)
+{
+  d_extt = new ExtTheory( this );
+  d_extt->addFunctionKind( kind::BITVECTOR_TO_NAT );
+  d_extt->addFunctionKind( kind::INT_TO_BITVECTOR );
+
+  if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER) {
+    d_eagerSolver = new EagerBitblastSolver(this);
+    return;
+  }
+
+  if (options::bitvectorEqualitySolver()) {
+    SubtheorySolver* core_solver = new CoreSolver(c, this);
+    d_subtheories.push_back(core_solver);
+    d_subtheoryMap[SUB_CORE] = core_solver;
+  }
+
+  if (options::bitvectorInequalitySolver()) {
+    SubtheorySolver* ineq_solver = new InequalitySolver(c, u, this);
+    d_subtheories.push_back(ineq_solver);
+    d_subtheoryMap[SUB_INEQUALITY] = ineq_solver;
+  }
+
+  if (options::bitvectorAlgebraicSolver()) {
+    SubtheorySolver* alg_solver = new AlgebraicSolver(c, this);
+    d_subtheories.push_back(alg_solver);
+    d_subtheoryMap[SUB_ALGEBRAIC] = alg_solver;
+  }
+
+  BitblastSolver* bb_solver = new BitblastSolver(c, this);
+  if (options::bvAbstraction()) {
+    bb_solver->setAbstraction(d_abstractionModule);
+  }
+  d_subtheories.push_back(bb_solver);
+  d_subtheoryMap[SUB_BITBLAST] = bb_solver;
+}
+
+TheoryBV::~TheoryBV() {
+  if (d_eagerSolver) {
+    delete d_eagerSolver;
+  }
+  for (unsigned i = 0; i < d_subtheories.size(); ++i) {
+    delete d_subtheories[i];
+  }
+  delete d_abstractionModule;
+  delete d_extt;
+}
+
+void TheoryBV::setMasterEqualityEngine(eq::EqualityEngine* eq) {
+  if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER) {
+    return;
+  }
+  if (options::bitvectorEqualitySolver()) {
+    dynamic_cast<CoreSolver*>(d_subtheoryMap[SUB_CORE])->setMasterEqualityEngine(eq);
+  }
+}
+
+void TheoryBV::spendResource(unsigned ammount) throw(UnsafeInterruptException) {
+  getOutputChannel().spendResource(ammount);
+}
+
+TheoryBV::Statistics::Statistics(const std::string &name):
+  d_avgConflictSize(name + "theory::bv::AvgBVConflictSize"),
+  d_solveSubstitutions(name + "theory::bv::NumberOfSolveSubstitutions", 0),
+  d_solveTimer(name + "theory::bv::solveTimer"),
+  d_numCallsToCheckFullEffort(name + "theory::bv::NumberOfFullCheckCalls", 0),
+  d_numCallsToCheckStandardEffort(name + "theory::bv::NumberOfStandardCheckCalls", 0),
+  d_weightComputationTimer(name + "theory::bv::weightComputationTimer"),
+  d_numMultSlice(name + "theory::bv::NumMultSliceApplied", 0)
+{
+  smtStatisticsRegistry()->registerStat(&d_avgConflictSize);
+  smtStatisticsRegistry()->registerStat(&d_solveSubstitutions);
+  smtStatisticsRegistry()->registerStat(&d_solveTimer);
+  smtStatisticsRegistry()->registerStat(&d_numCallsToCheckFullEffort);
+  smtStatisticsRegistry()->registerStat(&d_numCallsToCheckStandardEffort);
+  smtStatisticsRegistry()->registerStat(&d_weightComputationTimer);
+  smtStatisticsRegistry()->registerStat(&d_numMultSlice);
+}
+
+TheoryBV::Statistics::~Statistics() {
+  smtStatisticsRegistry()->unregisterStat(&d_avgConflictSize);
+  smtStatisticsRegistry()->unregisterStat(&d_solveSubstitutions);
+  smtStatisticsRegistry()->unregisterStat(&d_solveTimer);
+  smtStatisticsRegistry()->unregisterStat(&d_numCallsToCheckFullEffort);
+  smtStatisticsRegistry()->unregisterStat(&d_numCallsToCheckStandardEffort);
+  smtStatisticsRegistry()->unregisterStat(&d_weightComputationTimer);
+  smtStatisticsRegistry()->unregisterStat(&d_numMultSlice);
+}
+
+Node TheoryBV::getBVDivByZero(Kind k, unsigned width) {
+  NodeManager* nm = NodeManager::currentNM();
+  if (k == kind::BITVECTOR_UDIV) {
+    if (d_BVDivByZero.find(width) == d_BVDivByZero.end()) {
+      // lazily create the function symbols
+      ostringstream os;
+      os << "BVUDivByZero_" << width;
+      Node divByZero = nm->mkSkolem(os.str(),
+                                    nm->mkFunctionType(nm->mkBitVectorType(width), nm->mkBitVectorType(width)),
+                                    "partial bvudiv", NodeManager::SKOLEM_EXACT_NAME);
+      d_BVDivByZero[width] = divByZero;
+    }
+    return d_BVDivByZero[width];
+  }
+  else if (k == kind::BITVECTOR_UREM) {
+    if (d_BVRemByZero.find(width) == d_BVRemByZero.end()) {
+      ostringstream os;
+      os << "BVURemByZero_" << width;
+      Node divByZero = nm->mkSkolem(os.str(),
+                                    nm->mkFunctionType(nm->mkBitVectorType(width), nm->mkBitVectorType(width)),
+                                    "partial bvurem", NodeManager::SKOLEM_EXACT_NAME);
+      d_BVRemByZero[width] = divByZero;
+    }
+    return d_BVRemByZero[width];
+  }
+
+  Unreachable();
+}
+
+
+void TheoryBV::collectFunctionSymbols(TNode term, TNodeSet& seen) {
+  if (seen.find(term) != seen.end())
+    return;
+  if (term.getKind() == kind::APPLY_UF) {
+    TNode func = term.getOperator();
+    storeFunction(func, term);
+  } else if (term.getKind() == kind::SELECT) {
+    TNode func = term[0];
+    storeFunction(func, term);
+  } else if (term.getKind() == kind::STORE) {
+    AlwaysAssert(false, "Cannot use eager bitblasting on QF_ABV formula with stores");
+  }
+  for (unsigned i = 0; i < term.getNumChildren(); ++i) {
+    collectFunctionSymbols(term[i], seen);
+  }
+  seen.insert(term);
+}
+
+void TheoryBV::storeFunction(TNode func, TNode term) {
+  if (d_funcToArgs.find(func) == d_funcToArgs.end()) {
+    d_funcToArgs.insert(make_pair(func, NodeSet()));
+  }
+  NodeSet& set = d_funcToArgs[func];
+  if (set.find(term) == set.end()) {
+    set.insert(term);
+    Node skolem = utils::mkVar(utils::getSize(term));
+    d_funcToSkolem.addSubstitution(term, skolem);
+  }
+}
+
+void TheoryBV::mkAckermanizationAsssertions(std::vector<Node>& assertions) {
+  Debug("bv-ackermanize") << "TheoryBV::mkAckermanizationAsssertions\n";
+
+  Assert(options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER);
+  AlwaysAssert(!options::incrementalSolving());
+  TNodeSet seen;
+  for (unsigned i = 0; i < assertions.size(); ++i) {
+    collectFunctionSymbols(assertions[i], seen);
+  }
+
+  FunctionToArgs::const_iterator it = d_funcToArgs.begin();
+  NodeManager* nm = NodeManager::currentNM();
+  for (; it!= d_funcToArgs.end(); ++it) {
+    TNode func = it->first;
+    const NodeSet& args = it->second;
+    NodeSet::const_iterator it1 = args.begin();
+    for ( ; it1 != args.end(); ++it1) {
+      for(NodeSet::const_iterator it2 = it1; it2 != args.end(); ++it2) {
+        TNode args1 = *it1;
+        TNode args2 = *it2;
+        Node args_eq;
+        
+        if (args1.getKind() == kind::APPLY_UF) {
+          AlwaysAssert (args1.getKind() == kind::APPLY_UF &&
+                        args1.getOperator() == func);
+          AlwaysAssert (args2.getKind() == kind::APPLY_UF &&
+                        args2.getOperator() == func);
+          AlwaysAssert (args1.getNumChildren() == args2.getNumChildren());
+
+          std::vector<Node> eqs(args1.getNumChildren());
+
+          for (unsigned i = 0; i < args1.getNumChildren(); ++i) {
+            eqs[i] = nm->mkNode(kind::EQUAL, args1[i], args2[i]);
+          }
+          args_eq = eqs.size() == 1 ? eqs[0] : nm->mkNode(kind::AND, eqs);
+        } else {
+          AlwaysAssert (args1.getKind() == kind::SELECT &&
+                        args1[0] == func);
+          AlwaysAssert (args2.getKind() == kind::SELECT &&
+                        args2[0] == func);
+          AlwaysAssert (args1.getNumChildren() == 2);
+          AlwaysAssert (args2.getNumChildren() == 2);
+          args_eq = nm->mkNode(kind::EQUAL, args1[1], args2[1]);
+        }
+        Node func_eq = nm->mkNode(kind::EQUAL, args1, args2);
+        Node lemma = nm->mkNode(kind::IMPLIES, args_eq, func_eq);
+        assertions.push_back(lemma);
+      }
+    }
+  }
+
+  // replace applications of UF by skolems (FIXME for model building)
+  for(unsigned i = 0; i < assertions.size(); ++i) {
+    assertions[i] = d_funcToSkolem.apply(assertions[i]);
+  }
+}
+
+Node TheoryBV::expandDefinition(LogicRequest &logicRequest, Node node) {
+  Debug("bitvector-expandDefinition") << "TheoryBV::expandDefinition(" << node << ")" << std::endl;
+
+  switch (node.getKind()) {
+  case kind::BITVECTOR_SDIV:
+  case kind::BITVECTOR_SREM:
+  case kind::BITVECTOR_SMOD:
+    return TheoryBVRewriter::eliminateBVSDiv(node);
+    break;
+
+  case kind::BITVECTOR_UDIV:
+  case kind::BITVECTOR_UREM: {
+    NodeManager* nm = NodeManager::currentNM();
+    unsigned width = node.getType().getBitVectorSize();
+
+    if (options::bitvectorDivByZeroConst()) {
+      Kind kind = node.getKind() == kind::BITVECTOR_UDIV ? kind::BITVECTOR_UDIV_TOTAL : kind::BITVECTOR_UREM_TOTAL;
+      return nm->mkNode(kind, node[0], node[1]);
+    }
+
+    TNode num = node[0], den = node[1];
+    Node den_eq_0 = nm->mkNode(kind::EQUAL, den, nm->mkConst(BitVector(width, Integer(0))));
+    Node divTotalNumDen = nm->mkNode(node.getKind() == kind::BITVECTOR_UDIV ? kind::BITVECTOR_UDIV_TOTAL :
+				     kind::BITVECTOR_UREM_TOTAL, num, den);
+
+    // if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER) {
+    //   // Ackermanize UF if using eager bit-blasting
+    //   Node ackerman_var = nm->mkNode(node.getKind() == kind::BITVECTOR_UDIV ? kind::BITVECTOR_ACKERMANIZE_UDIV : kind::BITVECTOR_ACKERMANIZE_UREM, num);
+    //   node = nm->mkNode(kind::ITE, den_eq_0, ackerman_var, divTotalNumDen);
+    //   return node;
+    // } else {
+      Node divByZero = getBVDivByZero(node.getKind(), width);
+      Node divByZeroNum = nm->mkNode(kind::APPLY_UF, divByZero, num);
+      node = nm->mkNode(kind::ITE, den_eq_0, divByZeroNum, divTotalNumDen);
+      logicRequest.widenLogic(THEORY_UF);
+      return node;
+      //}
+  }
+    break;
+
+  default:
+    return node;
+    break;
+  }
+
+  Unreachable();
+}
+
+
+void TheoryBV::preRegisterTerm(TNode node) {
+  d_calledPreregister = true;
+  Debug("bitvector-preregister") << "TheoryBV::preRegister(" << node << ")" << std::endl;
+
+  if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER) {
+    // the aig bit-blaster option is set heuristically
+    // if bv abstraction is not used
+    if (!d_eagerSolver->isInitialized()) {
+      d_eagerSolver->initialize();
+    }
+
+    if (node.getKind() == kind::BITVECTOR_EAGER_ATOM) {
+      Node formula = node[0];
+      d_eagerSolver->assertFormula(formula);
+    }
+    // nothing to do for the other terms
+    return;
+  }
+
+  for (unsigned i = 0; i < d_subtheories.size(); ++i) {
+    d_subtheories[i]->preRegister(node);
+  }
+  
+  // AJR : equality solver currently registers all terms to ExtTheory, if we want a lazy reduction without the bv equality solver, need to call this
+  //getExtTheory()->registerTermRec( node );
+}
+
+void TheoryBV::sendConflict() {
+  Assert(d_conflict);
+  if (d_conflictNode.isNull()) {
+    return;
+  } else {
+    Debug("bitvector") << indent() << "TheoryBV::check(): conflict " << d_conflictNode << std::endl;
+    d_out->conflict(d_conflictNode);
+    d_statistics.d_avgConflictSize.addEntry(d_conflictNode.getNumChildren());
+    d_conflictNode = Node::null();
+  }
+}
+
+void TheoryBV::checkForLemma(TNode fact) {
+  if (fact.getKind() == kind::EQUAL) {
+    if (fact[0].getKind() == kind::BITVECTOR_UREM_TOTAL) {
+      TNode urem = fact[0];
+      TNode result = fact[1];
+      TNode divisor = urem[1];
+      Node result_ult_div = mkNode(kind::BITVECTOR_ULT, result, divisor);
+      Node divisor_eq_0 = mkNode(kind::EQUAL,
+                                 divisor,
+                                 mkConst(BitVector(getSize(divisor), 0u)));
+      Node split = utils::mkNode(kind::OR, divisor_eq_0, mkNode(kind::NOT, fact), result_ult_div);
+      lemma(split);
+    }
+    if (fact[1].getKind() == kind::BITVECTOR_UREM_TOTAL) {
+      TNode urem = fact[1];
+      TNode result = fact[0];
+      TNode divisor = urem[1];
+      Node result_ult_div = mkNode(kind::BITVECTOR_ULT, result, divisor);
+      Node divisor_eq_0 = mkNode(kind::EQUAL,
+                                 divisor,
+                                 mkConst(BitVector(getSize(divisor), 0u)));
+      Node split = utils::mkNode(kind::OR, divisor_eq_0, mkNode(kind::NOT, fact), result_ult_div);
+      lemma(split);
+    }
+  }
+}
+
+void TheoryBV::check(Effort e)
+{
+  if (done() && e<Theory::EFFORT_FULL) {
+    return;
+  }
+  
+  //last call : do reductions on extended bitvector functions
+  if( e==Theory::EFFORT_LAST_CALL ){
+    std::vector< Node > nred;
+    getExtTheory()->getActive( nred );
+    doExtfReductions( nred );
+    return;
+  }
+
+  TimerStat::CodeTimer checkTimer(d_checkTime);
+  Debug("bitvector") << "TheoryBV::check(" << e << ")" << std::endl;
+  TimerStat::CodeTimer codeTimer(d_statistics.d_solveTimer);
+  // we may be getting new assertions so the model cache may not be sound
+  d_invalidateModelCache.set(true);
+  // if we are using the eager solver
+  if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER) {
+    // this can only happen on an empty benchmark
+    if (!d_eagerSolver->isInitialized()) {
+      d_eagerSolver->initialize();
+    }
+    if (!Theory::fullEffort(e))
+      return;
+
+    std::vector<TNode> assertions;
+    while (!done()) {
+      TNode fact = get().assertion;
+      Assert (fact.getKind() == kind::BITVECTOR_EAGER_ATOM);
+      assertions.push_back(fact);
+    }
+    Assert (d_eagerSolver->hasAssertions(assertions));
+
+    bool ok = d_eagerSolver->checkSat();
+    if (!ok) {
+      if (assertions.size() == 1) {
+        d_out->conflict(assertions[0]);
+        return;
+      }
+      Node conflict = NodeManager::currentNM()->mkNode(kind::AND, assertions);
+      d_out->conflict(conflict);
+      return;
+    }
+    return;
+  }
+
+
+  if (Theory::fullEffort(e)) {
+    ++(d_statistics.d_numCallsToCheckFullEffort);
+  } else {
+    ++(d_statistics.d_numCallsToCheckStandardEffort);
+  }
+  // if we are already in conflict just return the conflict
+  if (inConflict()) {
+    sendConflict();
+    return;
+  }
+
+  while (!done()) {
+    TNode fact = get().assertion;
+
+    checkForLemma(fact);
+
+    for (unsigned i = 0; i < d_subtheories.size(); ++i) {
+      d_subtheories[i]->assertFact(fact);
+    }
+  }
+
+  bool ok = true;
+  bool complete = false;
+  for (unsigned i = 0; i < d_subtheories.size(); ++i) {
+    Assert (!inConflict());
+    ok = d_subtheories[i]->check(e);
+    complete = d_subtheories[i]->isComplete();
+
+    if (!ok) {
+      // if we are in a conflict no need to check with other theories
+      Assert (inConflict());
+      sendConflict();
+      return;
+    }
+    if (complete) {
+      // if the last subtheory was complete we stop
+      break;
+    }
+  }
+  
+  //check extended functions
+  if (Theory::fullEffort(e)) {
+    //do inferences (adds external lemmas)  TODO: this can be improved to add internal inferences
+    std::vector< Node > nred;
+    if( getExtTheory()->doInferences( 0, nred ) ){
+      return;
+    }
+    d_needsLastCallCheck = false;
+    if( !nred.empty() ){
+      //other inferences involving bv2nat, int2bv
+      if( options::bvAlgExtf() ){
+        if( doExtfInferences( nred ) ){
+          return;
+        }
+      }
+      if( !options::bvLazyReduceExtf() ){
+        if( doExtfReductions( nred ) ){
+          return;
+        }
+      }else{     
+        d_needsLastCallCheck = true;
+      }
+    }
+  }
+}
+
+bool TheoryBV::doExtfInferences( std::vector< Node >& terms ) {
+  bool sentLemma = false;
+  eq::EqualityEngine * ee = getEqualityEngine();    
+  std::map< Node, Node > op_map;
+  for( unsigned j=0; j<terms.size(); j++ ){
+    TNode n = terms[j];
+    Assert( n.getKind()==kind::BITVECTOR_TO_NAT || kind::INT_TO_BITVECTOR );
+    if( n.getKind()==kind::BITVECTOR_TO_NAT ){
+      //range lemmas
+      if( d_extf_range_infer.find( n )==d_extf_range_infer.end() ){
+        d_extf_range_infer.insert( n );
+        unsigned bvs = n[0].getType().getBitVectorSize();
+        Node min = NodeManager::currentNM()->mkConst( Rational( 0 ) );
+        Node max = NodeManager::currentNM()->mkConst( Rational( Integer(1).multiplyByPow2(bvs) ) );
+        Node lem = NodeManager::currentNM()->mkNode( kind::AND, NodeManager::currentNM()->mkNode( kind::GEQ, n, min ), NodeManager::currentNM()->mkNode( kind::LT, n, max ) );
+        Trace("bv-extf-lemma") << "BV extf lemma (range) : " << lem << std::endl;
+        d_out->lemma( lem );
+        sentLemma = true;
+      }
+    }
+    Node r = ( ee && ee->hasTerm( n[0] ) ) ? ee->getRepresentative( n[0] ) : n[0];
+    op_map[r] = n;
+  }
+  for( unsigned j=0; j<terms.size(); j++ ){
+    TNode n = terms[j];
+    Node r = ( ee && ee->hasTerm( n[0] ) ) ? ee->getRepresentative( n ) : n;
+    std::map< Node, Node >::iterator it = op_map.find( r );
+    if( it!=op_map.end() ){
+      Node parent = it->second;
+      //Node cterm = parent[0]==n ? parent : NodeManager::currentNM()->mkNode( parent.getOperator(), n );
+      Node cterm = parent[0].eqNode( n );
+      Trace("bv-extf-lemma-debug") << "BV extf collapse based on : " << cterm << std::endl;
+      if( d_extf_collapse_infer.find( cterm )==d_extf_collapse_infer.end() ){
+        d_extf_collapse_infer.insert( cterm );
+      
+        Node t = n[0];
+        if( n.getKind()==kind::INT_TO_BITVECTOR ){
+          Assert( t.getType().isInteger() );
+          //congruent modulo 2^( bv width )
+          unsigned bvs = n.getType().getBitVectorSize();
+          Node coeff = NodeManager::currentNM()->mkConst( Rational( Integer(1).multiplyByPow2(bvs) ) );
+          Node k = NodeManager::currentNM()->mkSkolem( "int_bv_cong", t.getType(), "for int2bv/bv2nat congruence" );
+          t = NodeManager::currentNM()->mkNode( kind::PLUS, t, NodeManager::currentNM()->mkNode( kind::MULT, coeff, k ) );
+        }
+        Node lem = parent.eqNode( t );
+        
+        if( parent[0]!=n ){
+          Assert( ee->areEqual( parent[0], n ) );
+          lem = NodeManager::currentNM()->mkNode( kind::IMPLIES, parent[0].eqNode( n ), lem );
+        }
+        Trace("bv-extf-lemma") << "BV extf lemma (collapse) : " << lem << std::endl;
+        d_out->lemma( lem );
+        sentLemma = true;
+      }
+    }
+  }
+  return sentLemma;
+}
+
+bool TheoryBV::doExtfReductions( std::vector< Node >& terms ) {
+  std::vector< Node > nredr;
+  if( getExtTheory()->doReductions( 0, terms, nredr ) ){
+    return true;
+  }
+  Assert( nredr.empty() );
+  return false;
+}
+
+bool TheoryBV::needsCheckLastEffort() {
+  return d_needsLastCallCheck;
+}
+
+void TheoryBV::collectModelInfo( TheoryModel* m, bool fullModel ){
+  Assert(!inConflict());
+  if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER) {
+    d_eagerSolver->collectModelInfo(m, fullModel);
+  }
+  for (unsigned i = 0; i < d_subtheories.size(); ++i) {
+    if (d_subtheories[i]->isComplete()) {
+      d_subtheories[i]->collectModelInfo(m, fullModel);
+      return;
+    }
+  }
+}
+
+Node TheoryBV::getModelValue(TNode var) {
+  Assert(!inConflict());
+  for (unsigned i = 0; i < d_subtheories.size(); ++i) {
+    if (d_subtheories[i]->isComplete()) {
+      return d_subtheories[i]->getModelValue(var);
+    }
+  }
+  Unreachable();
+}
+
+void TheoryBV::propagate(Effort e) {
+  Debug("bitvector") << indent() << "TheoryBV::propagate()" << std::endl;
+  if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER) {
+    return;
+  }
+
+  if (inConflict()) {
+    return;
+  }
+
+  // go through stored propagations
+  bool ok = true;
+  for (; d_literalsToPropagateIndex < d_literalsToPropagate.size() && ok; d_literalsToPropagateIndex = d_literalsToPropagateIndex + 1) {
+    TNode literal = d_literalsToPropagate[d_literalsToPropagateIndex];
+    // temporary fix for incremental bit-blasting
+    if (d_valuation.isSatLiteral(literal)) {
+      Debug("bitvector::propagate") << "TheoryBV:: propagating " << literal <<"\n";
+      ok = d_out->propagate(literal);
+    }
+  }
+
+  if (!ok) {
+    Debug("bitvector::propagate") << indent() << "TheoryBV::propagate(): conflict from theory engine" << std::endl;
+    setConflict();
+  }
+}
+
+
+eq::EqualityEngine * TheoryBV::getEqualityEngine() {
+  CoreSolver* core = (CoreSolver*)d_subtheoryMap[SUB_CORE];
+  if( core ){
+    return core->getEqualityEngine();
+  }else{
+    return NULL;
+  }
+}
+
+bool TheoryBV::getCurrentSubstitution( int effort, std::vector< Node >& vars, std::vector< Node >& subs, std::map< Node, std::vector< Node > >& exp ) {
+  eq::EqualityEngine * ee = getEqualityEngine();
+  if( ee ){
+    //get the constant equivalence classes
+    bool retVal = false;
+    for( unsigned i=0; i<vars.size(); i++ ){
+      Node n = vars[i];
+      if( ee->hasTerm( n ) ){
+        Node nr = ee->getRepresentative( n );
+        if( nr.isConst() ){
+          subs.push_back( nr );
+          exp[n].push_back( n.eqNode( nr ) );
+          retVal = true;
+        }else{
+          subs.push_back( n );
+        }
+      }else{
+        subs.push_back( n );
+      }
+    }
+    //return true if the substitution is non-trivial
+    return retVal;
+  }
+  return false;
+}
+
+int TheoryBV::getReduction( int effort, Node n, Node& nr ) {
+  Trace("bv-ext") << "TheoryBV::checkExt : non-reduced : " << n << std::endl;
+  if( n.getKind()==kind::BITVECTOR_TO_NAT ){
+    //taken from rewrite code
+    const unsigned size = utils::getSize(n[0]);
+    NodeManager* const nm = NodeManager::currentNM();
+    const Node z = nm->mkConst(Rational(0));
+    const Node bvone = nm->mkConst(BitVector(1u, 1u));
+    NodeBuilder<> result(kind::PLUS);
+    Integer i = 1;
+    for(unsigned bit = 0; bit < size; ++bit, i *= 2) {
+      Node cond = nm->mkNode(kind::EQUAL, nm->mkNode(nm->mkConst(BitVectorExtract(bit, bit)), n[0]), bvone);
+      result << nm->mkNode(kind::ITE, cond, nm->mkConst(Rational(i)), z);
+    }
+    nr = Node(result);
+    return -1;
+  }else if( n.getKind()==kind::INT_TO_BITVECTOR ){
+    //taken from rewrite code
+    const unsigned size = n.getOperator().getConst<IntToBitVector>().size;
+    NodeManager* const nm = NodeManager::currentNM();
+    const Node bvzero = nm->mkConst(BitVector(1u, 0u));
+    const Node bvone = nm->mkConst(BitVector(1u, 1u));
+    std::vector<Node> v;
+    Integer i = 2;
+    while(v.size() < size) {
+      Node cond = nm->mkNode(kind::GEQ, nm->mkNode(kind::INTS_MODULUS_TOTAL, n[0], nm->mkConst(Rational(i))), nm->mkConst(Rational(i, 2)));
+      cond = Rewriter::rewrite( cond );
+      v.push_back(nm->mkNode(kind::ITE, cond, bvone, bvzero));
+      i *= 2;
+    }
+    NodeBuilder<> result(kind::BITVECTOR_CONCAT);
+    result.append(v.rbegin(), v.rend());
+    nr = Node(result);
+    return -1;
+  }
+  return 0;
+}
+  
+Theory::PPAssertStatus TheoryBV::ppAssert(TNode in, SubstitutionMap& outSubstitutions) {
+  switch(in.getKind()) {
+  case kind::EQUAL:
+    {
+      if (in[0].isVar() && !in[1].hasSubterm(in[0])) {
+        ++(d_statistics.d_solveSubstitutions);
+        outSubstitutions.addSubstitution(in[0], in[1]);
+        return PP_ASSERT_STATUS_SOLVED;
+      }
+      if (in[1].isVar() && !in[0].hasSubterm(in[1])) {
+        ++(d_statistics.d_solveSubstitutions);
+        outSubstitutions.addSubstitution(in[1], in[0]);
+        return PP_ASSERT_STATUS_SOLVED;
+      }
+      Node node = Rewriter::rewrite(in);
+      if ((node[0].getKind() == kind::BITVECTOR_EXTRACT && node[1].isConst()) ||
+          (node[1].getKind() == kind::BITVECTOR_EXTRACT && node[0].isConst())) {
+        Node extract = node[0].isConst() ? node[1] : node[0];
+        if (extract[0].getKind() == kind::VARIABLE) {
+          Node c = node[0].isConst() ? node[0] : node[1];
+
+          unsigned high = utils::getExtractHigh(extract);
+          unsigned low = utils::getExtractLow(extract);
+          unsigned var_bitwidth = utils::getSize(extract[0]);
+          std::vector<Node> children;
+
+          if (low == 0) {
+            Assert (high != var_bitwidth - 1);
+            unsigned skolem_size = var_bitwidth - high - 1;
+            Node skolem = utils::mkVar(skolem_size);
+            children.push_back(skolem);
+            children.push_back(c);
+          } else if (high == var_bitwidth - 1) {
+            unsigned skolem_size = low;
+            Node skolem = utils::mkVar(skolem_size);
+            children.push_back(c);
+            children.push_back(skolem);
+          } else {
+            unsigned skolem1_size = low;
+            unsigned skolem2_size = var_bitwidth - high - 1;
+            Node skolem1 = utils::mkVar(skolem1_size);
+            Node skolem2 = utils::mkVar(skolem2_size);
+            children.push_back(skolem2);
+            children.push_back(c);
+            children.push_back(skolem1);
+          }
+          Node concat = utils::mkNode(kind::BITVECTOR_CONCAT, children);
+          Assert (utils::getSize(concat) == utils::getSize(extract[0]));
+          outSubstitutions.addSubstitution(extract[0], concat);
+          return PP_ASSERT_STATUS_SOLVED;
+        }
+      }
+    }
+    break;
+  case kind::BITVECTOR_ULT:
+  case kind::BITVECTOR_SLT:
+  case kind::BITVECTOR_ULE:
+  case kind::BITVECTOR_SLE:
+
+  default:
+    // TODO other predicates
+    break;
+  }
+  return PP_ASSERT_STATUS_UNSOLVED;
+}
+
+Node TheoryBV::ppRewrite(TNode t)
+{
+  Debug("bv-pp-rewrite") << "TheoryBV::ppRewrite " << t << "\n";
+  Node res = t;
+  if (RewriteRule<BitwiseEq>::applies(t)) {
+    Node result = RewriteRule<BitwiseEq>::run<false>(t);
+    res = Rewriter::rewrite(result);
+  } else if (d_isCoreTheory && t.getKind() == kind::EQUAL) {
+    std::vector<Node> equalities;
+    Slicer::splitEqualities(t, equalities);
+    res = utils::mkAnd(equalities);
+  } else if (RewriteRule<UltPlusOne>::applies(t)) {
+    Node result = RewriteRule<UltPlusOne>::run<false>(t);
+    res = Rewriter::rewrite(result);
+  } else if( res.getKind() == kind::EQUAL &&
+      ((res[0].getKind() == kind::BITVECTOR_PLUS &&
+        RewriteRule<ConcatToMult>::applies(res[1])) ||
+       (res[1].getKind() == kind::BITVECTOR_PLUS &&
+	RewriteRule<ConcatToMult>::applies(res[0])))) {
+    Node mult = RewriteRule<ConcatToMult>::applies(res[0])?
+      RewriteRule<ConcatToMult>::run<false>(res[0]) :
+      RewriteRule<ConcatToMult>::run<true>(res[1]);
+    Node factor = mult[0];
+    Node sum =  RewriteRule<ConcatToMult>::applies(res[0])? res[1] : res[0];
+    Node new_eq =utils::mkNode(kind::EQUAL, sum, mult);
+    Node rewr_eq = RewriteRule<SolveEq>::run<true>(new_eq);
+    if (rewr_eq[0].isVar() || rewr_eq[1].isVar()){
+      res = Rewriter::rewrite(rewr_eq);
+    } else {
+      res = t;
+    }
+  }
+
+
+  // if(t.getKind() == kind::EQUAL &&
+  //    ((t[0].getKind() == kind::BITVECTOR_MULT && t[1].getKind() == kind::BITVECTOR_PLUS) ||
+  //     (t[1].getKind() == kind::BITVECTOR_MULT && t[0].getKind() == kind::BITVECTOR_PLUS))) {
+  //   // if we have an equality between a multiplication and addition
+  //   // try to express multiplication in terms of addition
+  //   Node mult = t[0].getKind() == kind::BITVECTOR_MULT? t[0] : t[1];
+  //   Node add = t[0].getKind() == kind::BITVECTOR_PLUS? t[0] : t[1];
+  //   if (RewriteRule<MultSlice>::applies(mult)) {
+  //     Node new_mult = RewriteRule<MultSlice>::run<false>(mult);
+  //     Node new_eq = Rewriter::rewrite(utils::mkNode(kind::EQUAL, new_mult, add));
+
+  //     // the simplification can cause the formula to blow up
+  //     // only apply if formula reduced
+  //     if (d_subtheoryMap.find(SUB_BITBLAST) != d_subtheoryMap.end()) {
+  //       BitblastSolver* bv = (BitblastSolver*)d_subtheoryMap[SUB_BITBLAST];
+  //       uint64_t old_size = bv->computeAtomWeight(t);
+  //       Assert (old_size);
+  //       uint64_t new_size = bv->computeAtomWeight(new_eq);
+  //       double ratio = ((double)new_size)/old_size;
+  //       if (ratio <= 0.4) {
+  //         ++(d_statistics.d_numMultSlice);
+  //         return new_eq;
+  //       }
+  //     }
+
+  //     if (new_eq.getKind() == kind::CONST_BOOLEAN) {
+  //       ++(d_statistics.d_numMultSlice);
+  //       return new_eq;
+  //     }
+  //   }
+  // }
+
+  if (options::bvAbstraction() && t.getType().isBoolean()) {
+    d_abstractionModule->addInputAtom(res);
+  }
+  Debug("bv-pp-rewrite") << "to   " << res << "\n";
+  return res;
+}
+
+void TheoryBV::presolve() {
+  Debug("bitvector") << "TheoryBV::presolve" << endl;
+}
+
+static int prop_count = 0;
+
+bool TheoryBV::storePropagation(TNode literal, SubTheory subtheory)
+{
+  Debug("bitvector::propagate") << indent() << getSatContext()->getLevel() << " " << "TheoryBV::storePropagation(" << literal << ", " << subtheory << ")" << std::endl;
+  prop_count++;
+
+  // If already in conflict, no more propagation
+  if (d_conflict) {
+    Debug("bitvector::propagate") << indent() << "TheoryBV::storePropagation(" << literal << ", " << subtheory << "): already in conflict" << std::endl;
+    return false;
+  }
+
+  // If propagated already, just skip
+  PropagatedMap::const_iterator find = d_propagatedBy.find(literal);
+  if (find != d_propagatedBy.end()) {
+    return true;
+  } else {
+    bool polarity = literal.getKind() != kind::NOT;
+    Node negatedLiteral = polarity ? literal.notNode() : (Node) literal[0];
+    find = d_propagatedBy.find(negatedLiteral);
+    if (find != d_propagatedBy.end() && (*find).second != subtheory) {
+      // Safe to ignore this one, subtheory should produce a conflict
+      return true;
+    }
+
+    d_propagatedBy[literal] = subtheory;
+  }
+
+  // Propagate differs depending on the subtheory
+  // * bitblaster needs to be left alone until it's done, otherwise it doesn't know how to explain
+  // * equality engine can propagate eagerly
+  bool ok = true;
+  if (subtheory == SUB_CORE) {
+    d_out->propagate(literal);
+    if (!ok) {
+      setConflict();
+    }
+  } else {
+    d_literalsToPropagate.push_back(literal);
+  }
+  return ok;
+
+}/* TheoryBV::propagate(TNode) */
+
+
+void TheoryBV::explain(TNode literal, std::vector<TNode>& assumptions) {
+  Assert (wasPropagatedBySubtheory(literal));
+  SubTheory sub = getPropagatingSubtheory(literal);
+  d_subtheoryMap[sub]->explain(literal, assumptions);
+}
+
+
+Node TheoryBV::explain(TNode node) {
+  Debug("bitvector::explain") << "TheoryBV::explain(" << node << ")" << std::endl;
+  std::vector<TNode> assumptions;
+
+  // Ask for the explanation
+  explain(node, assumptions);
+  // this means that it is something true at level 0
+  if (assumptions.size() == 0) {
+    return utils::mkTrue();
+  }
+  // return the explanation
+  Node explanation = utils::mkAnd(assumptions);
+  Debug("bitvector::explain") << "TheoryBV::explain(" << node << ") => " << explanation << std::endl;
+  Debug("bitvector::explain") << "TheoryBV::explain done. \n";
+  return explanation;
+}
+
+
+void TheoryBV::addSharedTerm(TNode t) {
+  Debug("bitvector::sharing") << indent() << "TheoryBV::addSharedTerm(" << t << ")" << std::endl;
+  d_sharedTermsSet.insert(t);
+  if (options::bitvectorEqualitySolver()) {
+    for (unsigned i = 0; i < d_subtheories.size(); ++i) {
+      d_subtheories[i]->addSharedTerm(t);
+    }
+  }
+}
+
+
+EqualityStatus TheoryBV::getEqualityStatus(TNode a, TNode b)
+{
+  if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER)
+    return EQUALITY_UNKNOWN;
+  Assert (options::bitblastMode() == theory::bv::BITBLAST_MODE_LAZY);
+  for (unsigned i = 0; i < d_subtheories.size(); ++i) {
+    EqualityStatus status = d_subtheories[i]->getEqualityStatus(a, b);
+    if (status != EQUALITY_UNKNOWN) {
+      return status;
+    }
+  }
+  return EQUALITY_UNKNOWN; ;
+}
+
+
+void TheoryBV::enableCoreTheorySlicer() {
+  Assert (!d_calledPreregister);
+  d_isCoreTheory = true;
+  if (d_subtheoryMap.find(SUB_CORE) != d_subtheoryMap.end()) {
+    CoreSolver* core = (CoreSolver*)d_subtheoryMap[SUB_CORE];
+    core->enableSlicer();
+  }
+}
+
+
+void TheoryBV::ppStaticLearn(TNode in, NodeBuilder<>& learned) {
+  if(d_staticLearnCache.find(in) != d_staticLearnCache.end()){
+    return;
+  }
+  d_staticLearnCache.insert(in);
+
+  if (in.getKind() == kind::EQUAL) {
+    if((in[0].getKind() == kind::BITVECTOR_PLUS && in[1].getKind() == kind::BITVECTOR_SHL) ||
+       (in[1].getKind() == kind::BITVECTOR_PLUS && in[0].getKind() == kind::BITVECTOR_SHL)) {
+      TNode p = in[0].getKind() == kind::BITVECTOR_PLUS ? in[0] : in[1];
+      TNode s = in[0].getKind() == kind::BITVECTOR_PLUS ? in[1] : in[0];
+
+      if(p.getNumChildren() == 2
+         && p[0].getKind()  == kind::BITVECTOR_SHL
+         && p[1].getKind()  == kind::BITVECTOR_SHL ){
+        unsigned size = utils::getSize(s);
+        Node one = utils::mkConst(size, 1u);
+        if(s[0] == one && p[0][0] == one && p[1][0] == one){
+          Node zero = utils::mkConst(size, 0u);
+          TNode b = p[0];
+          TNode c = p[1];
+          // (s : 1 << S) = (b : 1 << B) + (c : 1 << C)
+          Node b_eq_0 = b.eqNode(zero);
+          Node c_eq_0 = c.eqNode(zero);
+          Node b_eq_c = b.eqNode(c);
+
+          Node dis = utils::mkNode(kind::OR, b_eq_0, c_eq_0, b_eq_c);
+          Node imp = in.impNode(dis);
+          learned << imp;
+        }
+      }
+    }
+  }else if(in.getKind() == kind::AND){
+    for(size_t i = 0, N = in.getNumChildren(); i < N; ++i){
+      ppStaticLearn(in[i], learned);
+    }
+  }
+}
+
+bool TheoryBV::applyAbstraction(const std::vector<Node>& assertions, std::vector<Node>& new_assertions) {
+  bool changed = d_abstractionModule->applyAbstraction(assertions, new_assertions);
+  if (changed &&
+      options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER &&
+      options::bitvectorAig()) {
+    // disable AIG mode
+    AlwaysAssert (!d_eagerSolver->isInitialized());
+    d_eagerSolver->turnOffAig();
+    d_eagerSolver->initialize();
+  }
+  return changed;
+}
+
+void TheoryBV::setProofLog( BitVectorProof * bvp ) {
+  if( options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER ){
+    d_eagerSolver->setProofLog( bvp );
+  }else{
+    for( unsigned i=0; i< d_subtheories.size(); i++ ){
+      d_subtheories[i]->setProofLog( bvp );
+    }
+  }
+}
+
+void TheoryBV::setConflict(Node conflict) {
+  if (options::bvAbstraction()) {
+    Node new_conflict = d_abstractionModule->simplifyConflict(conflict);
+
+    std::vector<Node> lemmas;
+    lemmas.push_back(new_conflict);
+    d_abstractionModule->generalizeConflict(new_conflict, lemmas);
+    for (unsigned i = 0; i < lemmas.size(); ++i) {
+      lemma(utils::mkNode(kind::NOT, lemmas[i]));
+    }
+  }
+  d_conflict = true;
+  d_conflictNode = conflict;
+}
+
+} /* namespace CVC4::theory::bv */
+} /* namespace CVC4::theory */
+} /* namespace CVC4 */
diff --git a/src/theory/bv/theory_bv.h b/src/theory/bv/theory_bv.h
new file mode 100644
index 0000000..9973b07
--- /dev/null
+++ b/src/theory/bv/theory_bv.h
@@ -0,0 +1,248 @@
+/*********************                                                        */
+/*! \file theory_bv.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Morgan Deters, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Bitvector theory.
+ **
+ ** Bitvector theory.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__BV__THEORY_BV_H
+#define __CVC4__THEORY__BV__THEORY_BV_H
+
+#include "context/cdhashset.h"
+#include "context/cdlist.h"
+#include "context/context.h"
+#include "theory/bv/bv_subtheory.h"
+#include "theory/bv/theory_bv_utils.h"
+#include "theory/theory.h"
+#include "util/hash.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+class CoreSolver;
+class InequalitySolver;
+class AlgebraicSolver;
+class BitblastSolver;
+
+class EagerBitblastSolver;
+
+class AbstractionModule;
+
+class TheoryBV : public Theory {
+
+  /** The context we are using */
+  context::Context* d_context;
+
+  /** Context dependent set of atoms we already propagated */
+  context::CDHashSet<Node, NodeHashFunction> d_alreadyPropagatedSet;
+  context::CDHashSet<Node, NodeHashFunction> d_sharedTermsSet;
+
+  std::vector<SubtheorySolver*> d_subtheories;
+  __gnu_cxx::hash_map<SubTheory, SubtheorySolver*, std::hash<int> > d_subtheoryMap;
+
+public:
+
+  TheoryBV(context::Context* c, context::UserContext* u, OutputChannel& out,
+           Valuation valuation, const LogicInfo& logicInfo,
+           std::string name = "");
+
+  ~TheoryBV();
+
+  void setMasterEqualityEngine(eq::EqualityEngine* eq);
+
+  Node expandDefinition(LogicRequest &logicRequest, Node node);
+
+  void mkAckermanizationAsssertions(std::vector<Node>& assertions);
+
+  void preRegisterTerm(TNode n);
+
+  void check(Effort e);
+  
+  bool needsCheckLastEffort();
+
+  void propagate(Effort e);
+
+  Node explain(TNode n);
+
+  void collectModelInfo( TheoryModel* m, bool fullModel );
+
+  std::string identify() const { return std::string("TheoryBV"); }
+
+  /** equality engine */
+  eq::EqualityEngine * getEqualityEngine();
+  bool getCurrentSubstitution( int effort, std::vector< Node >& vars, std::vector< Node >& subs, std::map< Node, std::vector< Node > >& exp );
+  int getReduction( int effort, Node n, Node& nr );
+  
+  PPAssertStatus ppAssert(TNode in, SubstitutionMap& outSubstitutions);
+
+  void enableCoreTheorySlicer();
+
+  Node ppRewrite(TNode t);
+
+  void ppStaticLearn(TNode in, NodeBuilder<>& learned);
+
+  void presolve();
+
+  bool applyAbstraction(const std::vector<Node>& assertions, std::vector<Node>& new_assertions);
+
+  void setProofLog( BitVectorProof * bvp );
+
+private:
+
+  class Statistics {
+  public:
+    AverageStat d_avgConflictSize;
+    IntStat     d_solveSubstitutions;
+    TimerStat   d_solveTimer;
+    IntStat     d_numCallsToCheckFullEffort;
+    IntStat     d_numCallsToCheckStandardEffort;
+    TimerStat   d_weightComputationTimer;
+    IntStat     d_numMultSlice;
+    Statistics(const std::string &name);
+    ~Statistics();
+  };
+
+  Statistics d_statistics;
+
+  void spendResource(unsigned ammount) throw(UnsafeInterruptException);
+
+  /**
+   * Return the uninterpreted function symbol corresponding to division-by-zero
+   * for this particular bit-width
+   * @param k should be UREM or UDIV
+   * @param width
+   *
+   * @return
+   */
+  Node getBVDivByZero(Kind k, unsigned width);
+
+  typedef __gnu_cxx::hash_set<TNode, TNodeHashFunction> TNodeSet;
+  void collectFunctionSymbols(TNode term, TNodeSet& seen);
+  void storeFunction(TNode func, TNode term);
+  typedef __gnu_cxx::hash_set<Node, NodeHashFunction> NodeSet;
+  NodeSet d_staticLearnCache;
+
+  /**
+   * Maps from bit-vector width to division-by-zero uninterpreted
+   * function symbols.
+   */
+  __gnu_cxx::hash_map<unsigned, Node> d_BVDivByZero;
+  __gnu_cxx::hash_map<unsigned, Node> d_BVRemByZero;
+
+
+  typedef __gnu_cxx::hash_map<Node, NodeSet, NodeHashFunction>  FunctionToArgs;
+  typedef __gnu_cxx::hash_map<Node, Node, NodeHashFunction>  NodeToNode;
+  // for ackermanization
+  FunctionToArgs d_funcToArgs;
+  CVC4::theory::SubstitutionMap d_funcToSkolem;
+
+  context::CDO<bool> d_lemmasAdded;
+
+  // Are we in conflict?
+  context::CDO<bool> d_conflict;
+
+  // Invalidate the model cache if check was called
+  context::CDO<bool> d_invalidateModelCache;
+
+  /** The conflict node */
+  Node d_conflictNode;
+
+  /** Literals to propagate */
+  context::CDList<Node> d_literalsToPropagate;
+
+  /** Index of the next literal to propagate */
+  context::CDO<unsigned> d_literalsToPropagateIndex;
+
+  /**
+   * Keeps a map from nodes to the subtheory that propagated it so that we can explain it
+   * properly.
+   */
+  typedef context::CDHashMap<Node, SubTheory, NodeHashFunction> PropagatedMap;
+  PropagatedMap d_propagatedBy;
+
+  EagerBitblastSolver* d_eagerSolver;
+  AbstractionModule* d_abstractionModule;
+  bool d_isCoreTheory;
+  bool d_calledPreregister;
+  
+  //for extended functions
+  bool d_needsLastCallCheck;
+  context::CDHashSet<Node, NodeHashFunction> d_extf_range_infer;
+  context::CDHashSet<Node, NodeHashFunction> d_extf_collapse_infer;
+  bool doExtfInferences( std::vector< Node >& terms );
+  bool doExtfReductions( std::vector< Node >& terms );
+  
+  bool wasPropagatedBySubtheory(TNode literal) const {
+    return d_propagatedBy.find(literal) != d_propagatedBy.end();
+  }
+
+  SubTheory getPropagatingSubtheory(TNode literal) const {
+    Assert(wasPropagatedBySubtheory(literal));
+    PropagatedMap::const_iterator find = d_propagatedBy.find(literal);
+    return (*find).second;
+  }
+
+  /** Should be called to propagate the literal.  */
+  bool storePropagation(TNode literal, SubTheory subtheory);
+
+  /**
+   * Explains why this literal (propagated by subtheory) is true by adding assumptions.
+   */
+  void explain(TNode literal, std::vector<TNode>& assumptions);
+
+  void addSharedTerm(TNode t);
+
+  bool isSharedTerm(TNode t) { return d_sharedTermsSet.contains(t); }
+
+  EqualityStatus getEqualityStatus(TNode a, TNode b);
+
+  Node getModelValue(TNode var);
+
+  inline std::string indent()
+  {
+    std::string indentStr(getSatContext()->getLevel(), ' ');
+    return indentStr;
+  }
+
+  void setConflict(Node conflict = Node::null());
+
+  bool inConflict() {
+    return d_conflict;
+  }
+
+  void sendConflict();
+
+  void lemma(TNode node) { d_out->lemma(node, RULE_CONFLICT); d_lemmasAdded = true; }
+
+  void checkForLemma(TNode node);
+
+  friend class LazyBitblaster;
+  friend class TLazyBitblaster;
+  friend class EagerBitblaster;
+  friend class BitblastSolver;
+  friend class EqualitySolver;
+  friend class CoreSolver;
+  friend class InequalitySolver;
+  friend class AlgebraicSolver;
+  friend class EagerBitblastSolver;
+};/* class TheoryBV */
+
+}/* CVC4::theory::bv namespace */
+}/* CVC4::theory namespace */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__BV__THEORY_BV_H */
diff --git a/src/theory/bv/theory_bv_rewrite_rules.h b/src/theory/bv/theory_bv_rewrite_rules.h
new file mode 100644
index 0000000..5957c64
--- /dev/null
+++ b/src/theory/bv/theory_bv_rewrite_rules.h
@@ -0,0 +1,684 @@
+/*********************                                                        */
+/*! \file theory_bv_rewrite_rules.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Dejan Jovanovic, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <sstream>
+
+#include "context/context.h"
+#include "smt/command.h"
+#include "theory/bv/theory_bv_utils.h"
+#include "theory/theory.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+enum RewriteRuleId {
+
+  /// core normalization rules
+  EmptyRule,
+  ConcatFlatten,
+  ConcatExtractMerge,
+  ConcatConstantMerge,
+  ExtractExtract,
+  ExtractWhole,
+  ExtractConcat,
+  ExtractConstant,
+  FailEq,
+  SimplifyEq,
+  ReflexivityEq,
+
+  /// operator elimination rules
+  UgtEliminate,
+  UgeEliminate,
+  SgeEliminate,
+  SgtEliminate,
+  RedorEliminate,
+  RedandEliminate,
+  SubEliminate,
+  SltEliminate,
+  SleEliminate,
+  UleEliminate, 
+  CompEliminate,
+  RepeatEliminate,
+  RotateLeftEliminate,
+  RotateRightEliminate,
+  NandEliminate,
+  NorEliminate,
+  XnorEliminate,
+  SdivEliminate,
+  UdivEliminate,
+  SmodEliminate,
+  SremEliminate,
+  ZeroExtendEliminate,
+  SignExtendEliminate,
+  BVToNatEliminate,
+  IntToBVEliminate,
+
+  /// ground term evaluation
+  EvalEquals,
+  EvalConcat, 
+  EvalAnd,
+  EvalOr,
+  EvalXor,
+  EvalNot,
+  EvalMult,
+  EvalPlus,
+  EvalUdiv,
+  EvalUrem,
+  EvalShl,
+  EvalLshr,
+  EvalAshr,
+  EvalUlt,
+  EvalUltBv,
+  EvalUle,
+  EvalExtract, 
+  EvalSignExtend,
+  EvalRotateLeft,
+  EvalRotateRight,
+  EvalNeg,
+  EvalSlt,
+  EvalSltBv,
+  EvalSle,
+  EvalITEBv,
+  EvalComp,
+
+  /// simplification rules
+  /// all of these rules decrease formula size
+  ShlByConst,
+  LshrByConst,
+  AshrByConst,
+  BitwiseIdemp,
+  AndZero,
+  AndOne,
+  OrZero,
+  OrOne,
+  XorDuplicate,
+  XorOne,
+  XorZero,
+  BitwiseNotAnd,
+  BitwiseNotOr,
+  XorNot,
+  NotIdemp,
+  LtSelf,
+  LteSelf,
+  UltZero,
+  UltSelf,
+  UleZero,
+  UleSelf,
+  ZeroUle,
+  UleMax,
+  NotUlt,
+  NotUle,
+  MultPow2,
+  MultSlice,
+  ExtractMultLeadingBit,
+  NegIdemp,
+  UdivPow2,
+  UdivOne,
+  UdivSelf,
+  UremPow2,
+  UremOne,
+  UremSelf,
+  ShiftZero,
+
+  UltOne,
+  SltZero, 
+  ZeroUlt,
+  MergeSignExtend,
+  
+  /// normalization rules
+  ExtractBitwise,
+  ExtractNot,
+  ExtractArith,
+  ExtractArith2,
+  ExtractSignExtend,
+  DoubleNeg,
+  NegMult,
+  NegSub,
+  NegPlus,
+  NotConcat,
+  NotAnd, // not sure why this would help (not done)
+  NotOr,  // not sure why this would help (not done)
+  NotXor, // not sure why this would help (not done)
+  FlattenAssocCommut,
+  FlattenAssocCommutNoDuplicates,
+  PlusCombineLikeTerms,
+  MultSimplify,
+  MultDistribConst,
+  MultDistrib,
+  SolveEq,
+  BitwiseEq,
+  AndSimplify,
+  OrSimplify,
+  XorSimplify,
+  BitwiseSlicing,
+  // rules to simplify bitblasting
+  BBPlusNeg,
+  UltPlusOne,
+  ConcatToMult,
+  IsPowerOfTwo
+};
+
+
+inline std::ostream& operator << (std::ostream& out, RewriteRuleId ruleId) {
+  switch (ruleId) {
+  case EmptyRule:           out << "EmptyRule";           return out;
+  case ConcatFlatten:       out << "ConcatFlatten";       return out;
+  case ConcatExtractMerge:  out << "ConcatExtractMerge";  return out;
+  case ConcatConstantMerge: out << "ConcatConstantMerge"; return out;
+  case ExtractExtract:      out << "ExtractExtract";      return out;
+  case ExtractWhole:        out << "ExtractWhole";        return out;
+  case ExtractConcat:       out << "ExtractConcat";       return out;
+  case ExtractConstant:     out << "ExtractConstant";     return out;
+  case FailEq:              out << "FailEq";              return out;
+  case SimplifyEq:          out << "SimplifyEq";          return out;
+  case ReflexivityEq:       out << "ReflexivityEq";       return out;
+  case UgtEliminate:        out << "UgtEliminate";        return out;
+  case SgtEliminate:        out << "SgtEliminate";        return out;
+  case UgeEliminate:        out << "UgeEliminate";        return out;
+  case SgeEliminate:        out << "SgeEliminate";        return out;
+  case RedorEliminate:      out << "RedorEliminate";      return out;
+  case RedandEliminate:     out << "RedandEliminate";     return out;
+  case RepeatEliminate:     out << "RepeatEliminate";     return out;
+  case RotateLeftEliminate: out << "RotateLeftEliminate"; return out;
+  case RotateRightEliminate:out << "RotateRightEliminate";return out;
+  case BVToNatEliminate:    out << "BVToNatEliminate";    return out;
+  case IntToBVEliminate:    out << "IntToBVEliminate";    return out;
+  case NandEliminate:       out << "NandEliminate";       return out;
+  case NorEliminate :       out << "NorEliminate";        return out;
+  case SdivEliminate :      out << "SdivEliminate";       return out;
+  case SremEliminate :      out << "SremEliminate";       return out;
+  case SmodEliminate :      out << "SmodEliminate";       return out;
+  case ZeroExtendEliminate :out << "ZeroExtendEliminate"; return out;
+  case EvalEquals :         out << "EvalEquals";          return out;
+  case EvalConcat :         out << "EvalConcat";          return out;
+  case EvalAnd :            out << "EvalAnd";             return out;
+  case EvalOr :             out << "EvalOr";              return out;
+  case EvalXor :            out << "EvalXor";             return out;
+  case EvalNot :            out << "EvalNot";             return out;
+  case EvalMult :           out << "EvalMult";            return out;
+  case EvalPlus :           out << "EvalPlus";            return out;
+  case EvalUdiv :           out << "EvalUdiv";            return out;
+  case EvalUrem :           out << "EvalUrem";            return out;
+  case EvalShl :            out << "EvalShl";             return out;
+  case EvalLshr :           out << "EvalLshr";            return out;
+  case EvalAshr :           out << "EvalAshr";            return out;
+  case EvalUlt :            out << "EvalUlt";             return out;
+  case EvalUle :            out << "EvalUle";             return out;
+  case EvalSlt :            out << "EvalSlt";             return out;
+  case EvalSle :            out << "EvalSle";             return out; 
+  case EvalSltBv:           out << "EvalSltBv";           return out;
+  case EvalITEBv:           out << "EvalITEBv";           return out;
+  case EvalComp:            out << "EvalComp";            return out;
+  case EvalExtract :        out << "EvalExtract";         return out;
+  case EvalSignExtend :     out << "EvalSignExtend";      return out;
+  case EvalRotateLeft :     out << "EvalRotateLeft";      return out;
+  case EvalRotateRight :    out << "EvalRotateRight";     return out;
+  case EvalNeg :            out << "EvalNeg";             return out;
+  case ShlByConst :         out << "ShlByConst";          return out;
+  case LshrByConst :        out << "LshrByConst";         return out;
+  case AshrByConst :        out << "AshrByConst";         return out;
+  case ExtractBitwise :     out << "ExtractBitwise";      return out;
+  case ExtractNot :         out << "ExtractNot";          return out;
+  case ExtractArith :       out << "ExtractArith";        return out;
+  case ExtractArith2 :      out << "ExtractArith2";       return out;
+  case DoubleNeg :          out << "DoubleNeg";           return out;
+  case NotConcat :          out << "NotConcat";           return out;
+  case NotAnd :             out << "NotAnd";              return out;
+  case NotOr :              out << "NotOr";               return out;
+  case NotXor :             out << "NotXor";              return out;
+  case BitwiseIdemp :       out << "BitwiseIdemp";        return out;
+  case XorDuplicate :       out << "XorDuplicate";        return out;
+  case BitwiseNotAnd :      out << "BitwiseNotAnd";       return out;
+  case BitwiseNotOr :       out << "BitwiseNotOr";        return out;
+  case XorNot :             out << "XorNot";              return out;
+  case LtSelf :             out << "LtSelf";              return out;
+  case LteSelf :            out << "LteSelf";             return out;
+  case UltZero :            out << "UltZero";             return out;
+  case UleZero :            out << "UleZero";             return out;
+  case ZeroUle :            out << "ZeroUle";             return out;
+  case NotUlt :             out << "NotUlt";              return out;
+  case NotUle :             out << "NotUle";              return out;
+  case UleMax :             out << "UleMax";              return out;
+  case SltEliminate :       out << "SltEliminate";        return out;
+  case SleEliminate :       out << "SleEliminate";        return out;
+  case AndZero :       out << "AndZero";        return out;
+  case AndOne :       out << "AndOne";        return out;
+  case OrZero :       out << "OrZero";        return out;
+  case OrOne :       out << "OrOne";        return out;
+  case XorOne :       out << "XorOne";        return out;
+  case XorZero :       out << "XorZero";        return out;
+  case MultPow2 :            out << "MultPow2";             return out;
+  case MultSlice :            out << "MultSlice";             return out;
+  case ExtractMultLeadingBit :            out << "ExtractMultLeadingBit";             return out;
+  case NegIdemp :            out << "NegIdemp";             return out;
+  case UdivPow2 :            out << "UdivPow2";             return out;
+  case UdivOne :            out << "UdivOne";             return out;
+  case UdivSelf :            out << "UdivSelf";             return out;
+  case UremPow2 :            out << "UremPow2";             return out;
+  case UremOne :            out << "UremOne";             return out;
+  case UremSelf :            out << "UremSelf";             return out;
+  case ShiftZero :            out << "ShiftZero";             return out;
+  case SubEliminate :            out << "SubEliminate";             return out;
+  case CompEliminate :            out << "CompEliminate";             return out;
+  case XnorEliminate :            out << "XnorEliminate";             return out;
+  case SignExtendEliminate :            out << "SignExtendEliminate";             return out;
+  case NotIdemp :                  out << "NotIdemp"; return out;
+  case UleSelf:                    out << "UleSelf"; return out; 
+  case FlattenAssocCommut:     out << "FlattenAssocCommut"; return out;
+  case FlattenAssocCommutNoDuplicates:     out << "FlattenAssocCommutNoDuplicates"; return out; 
+  case PlusCombineLikeTerms: out << "PlusCombineLikeTerms"; return out;
+  case MultSimplify: out << "MultSimplify"; return out;
+  case MultDistribConst: out << "MultDistribConst"; return out;
+  case SolveEq : out << "SolveEq"; return out;
+  case BitwiseEq : out << "BitwiseEq"; return out;
+  case NegMult : out << "NegMult"; return out;
+  case NegSub : out << "NegSub"; return out;
+  case AndSimplify : out << "AndSimplify"; return out;
+  case OrSimplify : out << "OrSimplify"; return out;
+  case XorSimplify : out << "XorSimplify"; return out;
+  case NegPlus : out << "NegPlus"; return out;
+  case BBPlusNeg : out << "BBPlusNeg"; return out;
+  case UltOne : out << "UltOne"; return out;
+  case SltZero : out << "SltZero"; return out;
+  case ZeroUlt : out << "ZeroUlt"; return out;
+  case MergeSignExtend : out << "MergeSignExtend"; return out;
+    
+  case UleEliminate : out << "UleEliminate"; return out;
+  case BitwiseSlicing : out << "BitwiseSlicing"; return out;
+  case ExtractSignExtend : out << "ExtractSignExtend"; return out;
+  case MultDistrib: out << "MultDistrib"; return out;
+  case UltPlusOne: out << "UltPlusOne"; return out;
+  case ConcatToMult: out << "ConcatToMult"; return out;
+  case IsPowerOfTwo: out << "IsPowerOfTwo"; return out;
+  default:
+    Unreachable();
+  }
+};
+
+template <RewriteRuleId rule>
+class RewriteRule {
+
+  // class RuleStatistics {
+
+  //   /** The name of the rule prefixed with the prefix */
+  //   static std::string getStatName(const char* prefix) {
+  //     std::stringstream statName;
+  //     statName << prefix << rule;
+  //     return statName.str();
+  //   }
+
+  // public:
+
+  //   /** Number of applications of this rule */
+  //   IntStat d_ruleApplications;
+
+  //   /** Constructor */
+  //   RuleStatistics()
+  //   : d_ruleApplications(getStatName("theory::bv::RewriteRules::count"), 0) {
+  //     currentStatisticsRegistry()->registerStat(&d_ruleApplications);
+  //   }
+
+  //   /** Destructor */
+  //   ~RuleStatistics() {
+  //     StatisticsRegistry::unregisterStat(&d_ruleApplications);
+  //   }
+  // };
+
+  // /* Statistics about the rule */
+  // // NOTE: Cannot have static fields like this, or else you can't have
+  // // two SmtEngines in the process (the second-to-be-destroyed will
+  // // have a dangling pointer and segfault).  If this statistic is needed,
+  // // fix the rewriter by making it an instance per-SmtEngine (instead of
+  // // static).
+  // static RuleStatistics* s_statistics;
+
+  /** Actually apply the rewrite rule */
+  static inline Node apply(TNode node) {
+    Unreachable();
+  }
+
+public:
+
+  RewriteRule() {
+    
+    // if (s_statistics == NULL) {
+    //   s_statistics = new RuleStatistics();
+    // }
+    
+  }
+
+  ~RewriteRule() {
+    
+    // delete s_statistics;
+    // s_statistics = NULL;
+    
+  }
+
+  static inline bool applies(TNode node) {
+    Unreachable();
+  }
+
+  template<bool checkApplies>
+  static inline Node run(TNode node) {
+    if (!checkApplies || applies(node)) {
+      Debug("theory::bv::rewrite") << "RewriteRule<" << rule << ">(" << node << ")" << std::endl;
+      Assert(checkApplies || applies(node));
+      //++ s_statistics->d_ruleApplications;
+      Node result = apply(node);
+      if (result != node) {
+        if(Dump.isOn("bv-rewrites")) {
+          std::ostringstream os;
+          os << "RewriteRule <"<<rule<<">; expect unsat";
+
+          Node condition = node.eqNode(result).notNode();
+
+          Dump("bv-rewrites")
+            << CommentCommand(os.str())
+            << CheckSatCommand(condition.toExpr());
+        }
+      }
+      Debug("theory::bv::rewrite") << "RewriteRule<" << rule << ">(" << node << ") => " << result << std::endl;
+      return result;
+    } else {
+      return node;
+    }
+  }
+};
+
+
+ // template<RewriteRuleId rule>
+ //   typename RewriteRule<rule>::RuleStatistics* RewriteRule<rule>::s_statistics = NULL;
+
+
+/** Have to list all the rewrite rules to get the statistics out */
+struct AllRewriteRules {
+  RewriteRule<EmptyRule>            rule00;
+  RewriteRule<ConcatFlatten>        rule01;
+  RewriteRule<ConcatExtractMerge>   rule02;
+  RewriteRule<ConcatConstantMerge>  rule03;
+  RewriteRule<ExtractExtract>       rule04;
+  RewriteRule<ExtractWhole>         rule05;
+  RewriteRule<ExtractConcat>        rule06;
+  RewriteRule<ExtractConstant>      rule07;
+  RewriteRule<FailEq>               rule08;
+  RewriteRule<SimplifyEq>           rule09;
+  RewriteRule<ReflexivityEq>        rule10;
+  RewriteRule<UgtEliminate>             rule11;
+  RewriteRule<SgtEliminate>             rule12;
+  RewriteRule<UgeEliminate>             rule13;
+  RewriteRule<SgeEliminate>             rule14;
+  RewriteRule<NegMult>              rule15;
+  RewriteRule<NegSub>               rule16;
+  RewriteRule<RepeatEliminate>      rule17;
+  RewriteRule<RotateLeftEliminate>  rule18;
+  RewriteRule<RotateRightEliminate> rule19;
+  RewriteRule<NandEliminate>        rule20;
+  RewriteRule<NorEliminate>         rule21;
+  RewriteRule<SdivEliminate>        rule22;
+  RewriteRule<SremEliminate>        rule23;
+  RewriteRule<SmodEliminate>        rule24;
+  RewriteRule<EvalConcat>           rule25;
+  RewriteRule<EvalAnd>              rule26;
+  RewriteRule<EvalOr>               rule27;
+  RewriteRule<EvalXor>              rule28;
+  RewriteRule<EvalNot>              rule29;
+  RewriteRule<EvalSlt>              rule30;
+  RewriteRule<EvalMult>             rule31;
+  RewriteRule<EvalPlus>             rule32;
+  RewriteRule<XorSimplify>          rule33;
+  RewriteRule<EvalUdiv>             rule34;
+  RewriteRule<EvalUrem>             rule35;
+  RewriteRule<EvalShl>              rule36;
+  RewriteRule<EvalLshr>             rule37;
+  RewriteRule<EvalAshr>             rule38;
+  RewriteRule<EvalUlt>              rule39;
+  RewriteRule<EvalUle>              rule40;
+  RewriteRule<EvalSle>              rule41;
+  RewriteRule<EvalExtract>          rule43;
+  RewriteRule<EvalSignExtend>       rule44;
+  RewriteRule<EvalRotateLeft>       rule45;
+  RewriteRule<EvalRotateRight>      rule46;
+  RewriteRule<EvalEquals>           rule47;
+  RewriteRule<EvalNeg>              rule48;
+  RewriteRule<ShlByConst>             rule50;
+  RewriteRule<LshrByConst>             rule51;
+  RewriteRule<AshrByConst>             rule52;
+  RewriteRule<ExtractBitwise>             rule53;
+  RewriteRule<ExtractNot>             rule54;
+  RewriteRule<ExtractArith>             rule55;
+  RewriteRule<DoubleNeg>             rule56;
+  RewriteRule<NotConcat>             rule57;
+  RewriteRule<NotAnd>             rule58;
+  RewriteRule<NotOr>             rule59;
+  RewriteRule<NotXor>             rule60;
+  RewriteRule<BitwiseIdemp>             rule61;
+  RewriteRule<XorDuplicate>             rule62;
+  RewriteRule<BitwiseNotAnd>             rule63;
+  RewriteRule<BitwiseNotOr>             rule64;
+  RewriteRule<XorNot>             rule65;
+  RewriteRule<LtSelf>             rule66;
+  RewriteRule<LtSelf>             rule67;
+  RewriteRule<UltZero>             rule68;
+  RewriteRule<UleZero>             rule69;
+  RewriteRule<ZeroUle>             rule70;
+  RewriteRule<NotUlt>             rule71;
+  RewriteRule<NotUle>             rule72;
+  RewriteRule<ZeroExtendEliminate> rule73;
+  RewriteRule<UleMax> rule74;
+  RewriteRule<LteSelf> rule75;
+  RewriteRule<SltEliminate> rule76;
+  RewriteRule<SleEliminate> rule77; 
+  RewriteRule<AndZero> rule78;
+  RewriteRule<AndOne> rule79; 
+  RewriteRule<OrZero> rule80;
+  RewriteRule<OrOne> rule81;
+  RewriteRule<SubEliminate> rule82; 
+  RewriteRule<XorOne> rule83;
+  RewriteRule<XorZero> rule84;
+  RewriteRule<MultSlice> rule85;
+  RewriteRule<FlattenAssocCommutNoDuplicates> rule86;
+  RewriteRule<MultPow2> rule87;
+  RewriteRule<ExtractMultLeadingBit> rule88;
+  RewriteRule<NegIdemp> rule91;
+  RewriteRule<UdivPow2> rule92;
+  RewriteRule<UdivOne> rule93;
+  RewriteRule<UdivSelf> rule94;
+  RewriteRule<UremPow2> rule95;
+  RewriteRule<UremOne> rule96;
+  RewriteRule<UremSelf> rule97;
+  RewriteRule<ShiftZero> rule98;
+  RewriteRule<CompEliminate> rule99;
+  RewriteRule<XnorEliminate> rule100;
+  RewriteRule<SignExtendEliminate> rule101;
+  RewriteRule<NotIdemp> rule102;
+  RewriteRule<UleSelf> rule103;
+  RewriteRule<FlattenAssocCommut> rule104;
+  RewriteRule<PlusCombineLikeTerms> rule105;
+  RewriteRule<MultSimplify> rule106;
+  RewriteRule<MultDistribConst> rule107;
+  RewriteRule<AndSimplify> rule108;
+  RewriteRule<OrSimplify> rule109;
+  RewriteRule<NegPlus> rule110;
+  RewriteRule<BBPlusNeg> rule111;
+  RewriteRule<SolveEq> rule112;
+  RewriteRule<BitwiseEq> rule113;
+  RewriteRule<UltOne> rule114;
+  RewriteRule<SltZero> rule115;
+  RewriteRule<BVToNatEliminate>  rule116;
+  RewriteRule<IntToBVEliminate>  rule117;
+  RewriteRule<MultDistrib> rule118;
+  RewriteRule<UltPlusOne> rule119;
+  RewriteRule<ConcatToMult> rule120;
+  RewriteRule<IsPowerOfTwo> rule121;
+  RewriteRule<RedorEliminate> rule122;
+  RewriteRule<RedandEliminate> rule123;
+};
+
+template<> inline
+bool RewriteRule<EmptyRule>::applies(TNode node) {
+  return false;
+}
+
+template<> inline
+Node RewriteRule<EmptyRule>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EmptyRule> for " << node.getKind() <<"\n"; 
+  Unreachable();
+  return node;
+}
+
+template<Kind kind, RewriteRuleId rule>
+struct ApplyRuleToChildren {
+
+  static Node apply(TNode node) {
+    if (node.getKind() != kind) {
+      return RewriteRule<rule>::template run<true>(node);
+    }
+    NodeBuilder<> result(kind);
+    for (unsigned i = 0, end = node.getNumChildren(); i < end; ++ i) {
+      result << RewriteRule<rule>::template run<true>(node[i]);
+    }
+    return result;
+  }
+
+  static bool applies(TNode node) {
+    if (node.getKind() == kind) return true;
+    return RewriteRule<rule>::applies(node);
+  }
+
+  template <bool checkApplies>
+  static Node run(TNode node) {
+    if (!checkApplies || applies(node)) {
+      return apply(node);
+    } else {
+      return node;
+    }
+  }
+};
+
+template <
+  typename R1,
+  typename R2  = RewriteRule<EmptyRule>,
+  typename R3  = RewriteRule<EmptyRule>,
+  typename R4  = RewriteRule<EmptyRule>,
+  typename R5  = RewriteRule<EmptyRule>,
+  typename R6  = RewriteRule<EmptyRule>,
+  typename R7  = RewriteRule<EmptyRule>,
+  typename R8  = RewriteRule<EmptyRule>,
+  typename R9  = RewriteRule<EmptyRule>,
+  typename R10 = RewriteRule<EmptyRule>,
+  typename R11 = RewriteRule<EmptyRule>,
+  typename R12 = RewriteRule<EmptyRule>,
+  typename R13 = RewriteRule<EmptyRule>,
+  typename R14 = RewriteRule<EmptyRule>,
+  typename R15 = RewriteRule<EmptyRule>,
+  typename R16 = RewriteRule<EmptyRule>,
+  typename R17 = RewriteRule<EmptyRule>,
+  typename R18 = RewriteRule<EmptyRule>,
+  typename R19 = RewriteRule<EmptyRule>,
+  typename R20 = RewriteRule<EmptyRule>
+  >
+struct LinearRewriteStrategy {
+  static Node apply(TNode node) {
+    Node current = node;
+    if (R1::applies(current)) current  = R1::template run<false>(current);
+    if (R2::applies(current)) current  = R2::template run<false>(current);
+    if (R3::applies(current)) current  = R3::template run<false>(current);
+    if (R4::applies(current)) current  = R4::template run<false>(current);
+    if (R5::applies(current)) current  = R5::template run<false>(current);
+    if (R6::applies(current)) current  = R6::template run<false>(current);
+    if (R7::applies(current)) current  = R7::template run<false>(current);
+    if (R8::applies(current)) current  = R8::template run<false>(current);
+    if (R9::applies(current)) current  = R9::template run<false>(current);
+    if (R10::applies(current)) current = R10::template run<false>(current);
+    if (R11::applies(current)) current = R11::template run<false>(current);
+    if (R12::applies(current)) current = R12::template run<false>(current);
+    if (R13::applies(current)) current = R13::template run<false>(current);
+    if (R14::applies(current)) current = R14::template run<false>(current);
+    if (R15::applies(current)) current = R15::template run<false>(current);
+    if (R16::applies(current)) current = R16::template run<false>(current);
+    if (R17::applies(current)) current = R17::template run<false>(current);
+    if (R18::applies(current)) current = R18::template run<false>(current);
+    if (R19::applies(current)) current = R19::template run<false>(current);
+    if (R20::applies(current)) current = R20::template run<false>(current);
+    return current;
+  }
+};
+
+template <
+  typename R1,
+  typename R2  = RewriteRule<EmptyRule>,
+  typename R3  = RewriteRule<EmptyRule>,
+  typename R4  = RewriteRule<EmptyRule>,
+  typename R5  = RewriteRule<EmptyRule>,
+  typename R6  = RewriteRule<EmptyRule>,
+  typename R7  = RewriteRule<EmptyRule>,
+  typename R8  = RewriteRule<EmptyRule>,
+  typename R9  = RewriteRule<EmptyRule>,
+  typename R10 = RewriteRule<EmptyRule>,
+  typename R11 = RewriteRule<EmptyRule>,
+  typename R12 = RewriteRule<EmptyRule>,
+  typename R13 = RewriteRule<EmptyRule>,
+  typename R14 = RewriteRule<EmptyRule>,
+  typename R15 = RewriteRule<EmptyRule>,
+  typename R16 = RewriteRule<EmptyRule>,
+  typename R17 = RewriteRule<EmptyRule>,
+  typename R18 = RewriteRule<EmptyRule>,
+  typename R19 = RewriteRule<EmptyRule>,
+  typename R20 = RewriteRule<EmptyRule>
+  >
+struct FixpointRewriteStrategy {
+  static Node apply(TNode node) {
+    Node previous = node; 
+    Node current = node;
+    do {
+      previous = current;
+      if (R1::applies(current)) current  = R1::template run<false>(current);
+      if (R2::applies(current)) current  = R2::template run<false>(current);
+      if (R3::applies(current)) current  = R3::template run<false>(current);
+      if (R4::applies(current)) current  = R4::template run<false>(current);
+      if (R5::applies(current)) current  = R5::template run<false>(current);
+      if (R6::applies(current)) current  = R6::template run<false>(current);
+      if (R7::applies(current)) current  = R7::template run<false>(current);
+      if (R8::applies(current)) current  = R8::template run<false>(current);
+      if (R9::applies(current)) current  = R9::template run<false>(current);
+      if (R10::applies(current)) current = R10::template run<false>(current);
+      if (R11::applies(current)) current = R11::template run<false>(current);
+      if (R12::applies(current)) current = R12::template run<false>(current);
+      if (R13::applies(current)) current = R13::template run<false>(current);
+      if (R14::applies(current)) current = R14::template run<false>(current);
+      if (R15::applies(current)) current = R15::template run<false>(current);
+      if (R16::applies(current)) current = R16::template run<false>(current);
+      if (R17::applies(current)) current = R17::template run<false>(current);
+      if (R18::applies(current)) current = R18::template run<false>(current);
+      if (R19::applies(current)) current = R19::template run<false>(current);
+      if (R20::applies(current)) current = R20::template run<false>(current);
+    } while (previous != current);
+    
+    return current;
+  }
+};
+
+
+} // End namespace bv
+} // End namespace theory
+} // End namespace CVC4
diff --git a/src/theory/bv/theory_bv_rewrite_rules_constant_evaluation.h b/src/theory/bv/theory_bv_rewrite_rules_constant_evaluation.h
new file mode 100644
index 0000000..3605a69
--- /dev/null
+++ b/src/theory/bv/theory_bv_rewrite_rules_constant_evaluation.h
@@ -0,0 +1,498 @@
+/*********************                                                        */
+/*! \file theory_bv_rewrite_rules_constant_evaluation.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Clark Barrett, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "theory/bv/theory_bv_rewrite_rules.h"
+#include "theory/bv/theory_bv_utils.h"
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+template<> inline
+bool RewriteRule<EvalAnd>::applies(TNode node) {
+  Unreachable();
+  return (node.getKind() == kind::BITVECTOR_AND &&
+          node.getNumChildren() == 2 &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalAnd>::apply(TNode node) {
+  Unreachable();
+  Debug("bv-rewrite") << "RewriteRule<EvalAnd>(" << node << ")" << std::endl;
+  BitVector a = node[0].getConst<BitVector>();
+  BitVector b = node[1].getConst<BitVector>();
+  BitVector res = a & b;
+  
+  return utils::mkConst(res);
+}
+
+template<> inline
+bool RewriteRule<EvalOr>::applies(TNode node) {
+  Unreachable();
+  return (node.getKind() == kind::BITVECTOR_OR &&
+          node.getNumChildren() == 2 &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalOr>::apply(TNode node) {
+  Unreachable();
+  Debug("bv-rewrite") << "RewriteRule<EvalOr>(" << node << ")" << std::endl;
+  BitVector a = node[0].getConst<BitVector>();
+  BitVector b = node[1].getConst<BitVector>();
+  BitVector res = a | b;
+  
+  return utils::mkConst(res);
+}
+
+template<> inline
+bool RewriteRule<EvalXor>::applies(TNode node) {
+  Unreachable();
+  return (node.getKind() == kind::BITVECTOR_XOR &&
+          node.getNumChildren() == 2 &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalXor>::apply(TNode node) {
+  Unreachable();
+  Debug("bv-rewrite") << "RewriteRule<EvalXor>(" << node << ")" << std::endl;
+  BitVector a = node[0].getConst<BitVector>();
+  BitVector b = node[1].getConst<BitVector>();
+  BitVector res = a ^ b;
+ 
+  return utils::mkConst(res);
+}
+
+// template<> inline
+// bool RewriteRule<EvalXnor>::applies(TNode node) {
+//   return (node.getKind() == kind::BITVECTOR_XNOR &&
+//           utils::isBVGroundTerm(node));
+// }
+
+// template<> inline
+// Node RewriteRule<EvalXnor>::apply(TNode node) {
+//   Debug("bv-rewrite") << "RewriteRule<EvalXnor>(" << node << ")" << std::endl;
+//   BitVector a = node[0].getConst<BitVector>();
+//   BitVector b = node[1].getConst<BitVector>();
+//   BitVector res = ~ (a ^ b);
+  
+//   return utils::mkConst(res);
+// }
+template<> inline
+bool RewriteRule<EvalNot>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_NOT &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalNot>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalNot>(" << node << ")" << std::endl;
+  BitVector a = node[0].getConst<BitVector>();
+  BitVector res = ~ a;
+  return utils::mkConst(res);
+}
+
+// template<> inline
+// bool RewriteRule<EvalComp>::applies(TNode node) {
+//   return (node.getKind() == kind::BITVECTOR_COMP &&
+//           utils::isBVGroundTerm(node));
+// }
+
+// template<> inline
+// Node RewriteRule<EvalComp>::apply(TNode node) {
+//   Debug("bv-rewrite") << "RewriteRule<EvalComp>(" << node << ")" << std::endl;
+//   BitVector a = node[0].getConst<BitVector>();
+//   BitVector b = node[1].getConst<BitVector>();
+//   BitVector res;
+//   if (a == b) {
+//     res = BitVector(1, Integer(1));
+//   } else {
+//     res = BitVector(1, Integer(0)); 
+//   }
+  
+//   return utils::mkConst(res);
+// }
+
+template<> inline
+bool RewriteRule<EvalMult>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_MULT &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalMult>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalMult>(" << node << ")" << std::endl;
+  TNode::iterator child_it = node.begin();
+  BitVector res = (*child_it).getConst<BitVector>();
+  for(++child_it; child_it != node.end(); ++child_it) {
+    res = res * (*child_it).getConst<BitVector>();
+  }
+  return utils::mkConst(res);
+}
+
+template<> inline
+bool RewriteRule<EvalPlus>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_PLUS &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalPlus>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalPlus>(" << node << ")" << std::endl;
+  TNode::iterator child_it = node.begin();
+  BitVector res = (*child_it).getConst<BitVector>();
+  for(++child_it; child_it != node.end(); ++child_it) {
+    res = res + (*child_it).getConst<BitVector>();
+  }
+  return utils::mkConst(res);
+}
+
+// template<> inline
+// bool RewriteRule<EvalSub>::applies(TNode node) {
+//   return (node.getKind() == kind::BITVECTOR_SUB &&
+//           utils::isBVGroundTerm(node));
+// }
+
+// template<> inline
+// Node RewriteRule<EvalSub>::apply(TNode node) {
+//   Debug("bv-rewrite") << "RewriteRule<EvalSub>(" << node << ")" << std::endl;
+//   BitVector a = node[0].getConst<BitVector>();
+//   BitVector b = node[1].getConst<BitVector>();
+//   BitVector res = a - b;
+  
+//   return utils::mkConst(res);
+// }
+template<> inline
+bool RewriteRule<EvalNeg>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_NEG &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalNeg>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalNeg>(" << node << ")" << std::endl;
+  BitVector a = node[0].getConst<BitVector>();
+  BitVector res = - a;
+  
+  return utils::mkConst(res);
+}
+template<> inline
+bool RewriteRule<EvalUdiv>::applies(TNode node) {
+  return (utils::isBVGroundTerm(node) &&
+          (node.getKind() == kind::BITVECTOR_UDIV_TOTAL ||
+           (node.getKind() == kind::BITVECTOR_UDIV && node[1].isConst())));
+}
+
+template<> inline
+Node RewriteRule<EvalUdiv>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalUdiv>(" << node << ")" << std::endl;
+  BitVector a = node[0].getConst<BitVector>();
+  BitVector b = node[1].getConst<BitVector>();
+  BitVector res = a.unsignedDivTotal(b);
+  
+  return utils::mkConst(res);
+}
+template<> inline
+bool RewriteRule<EvalUrem>::applies(TNode node) {
+  return (utils::isBVGroundTerm(node) &&
+          (node.getKind() == kind::BITVECTOR_UREM_TOTAL ||
+           (node.getKind() == kind::BITVECTOR_UREM && node[1].isConst())));
+}
+
+template<> inline
+Node RewriteRule<EvalUrem>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalUrem>(" << node << ")" << std::endl;
+  BitVector a = node[0].getConst<BitVector>();
+  BitVector b = node[1].getConst<BitVector>();
+  BitVector res = a.unsignedRemTotal(b);
+  return utils::mkConst(res);
+}
+
+template<> inline
+bool RewriteRule<EvalShl>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_SHL &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalShl>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalShl>(" << node << ")" << std::endl;
+  BitVector a = node[0].getConst<BitVector>();
+  BitVector b = node[1].getConst<BitVector>();
+
+  BitVector res = a.leftShift(b);
+  return utils::mkConst(res);
+}
+
+template<> inline
+bool RewriteRule<EvalLshr>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_LSHR &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalLshr>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalLshr>(" << node << ")" << std::endl;
+  BitVector a = node[0].getConst<BitVector>();
+  BitVector b = node[1].getConst<BitVector>();
+  
+  BitVector res = a.logicalRightShift(b);
+  return utils::mkConst(res);
+}
+
+template<> inline
+bool RewriteRule<EvalAshr>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_ASHR &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalAshr>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalAshr>(" << node << ")" << std::endl;
+  BitVector a = node[0].getConst<BitVector>();
+  BitVector b = node[1].getConst<BitVector>();
+
+  BitVector res = a.arithRightShift(b);
+  return utils::mkConst(res);
+}
+
+template<> inline
+bool RewriteRule<EvalUlt>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_ULT &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalUlt>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalUlt>(" << node << ")" << std::endl;
+  BitVector a = node[0].getConst<BitVector>();
+  BitVector b = node[1].getConst<BitVector>();
+
+  if (a.unsignedLessThan(b)) {
+    return utils::mkTrue();
+  }
+  return utils::mkFalse();
+}
+
+template<> inline
+bool RewriteRule<EvalUltBv>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_ULTBV &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalUltBv>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalUltBv>(" << node << ")" << std::endl;
+  BitVector a = node[0].getConst<BitVector>();
+  BitVector b = node[1].getConst<BitVector>();
+
+  if (a.unsignedLessThan(b)) {
+    return utils::mkConst(1,1);
+  }
+  return utils::mkConst(1, 0);
+}
+
+template<> inline
+bool RewriteRule<EvalSlt>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_SLT &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalSlt>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalSlt>(" << node << ")" << std::endl;
+  BitVector a = node[0].getConst<BitVector>();
+  BitVector b = node[1].getConst<BitVector>();
+
+  if (a.signedLessThan(b)) {
+    return utils::mkTrue();
+  }
+  return utils::mkFalse();
+
+}
+
+template<> inline
+bool RewriteRule<EvalSltBv>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_SLTBV &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalSltBv>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalSltBv>(" << node << ")" << std::endl;
+  BitVector a = node[0].getConst<BitVector>();
+  BitVector b = node[1].getConst<BitVector>();
+
+  if (a.signedLessThan(b)) {
+    return utils::mkConst(1, 1);
+  }
+  return utils::mkConst(1, 0);
+
+}
+
+template<> inline
+bool RewriteRule<EvalITEBv>::applies(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalITEBv>::applies(" << node << ")" << std::endl;
+  return (node.getKind() == kind::BITVECTOR_ITE &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalITEBv>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalITEBv>(" << node << ")" << std::endl;
+  BitVector cond = node[0].getConst<BitVector>();
+
+  if (node[0] == utils::mkConst(1, 1)) {
+    return node[1];
+  } else {
+    Assert(node[0] == utils::mkConst(1, 0));
+    return node[2];
+  }
+}
+
+template<> inline
+bool RewriteRule<EvalUle>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_ULE &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalUle>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalUle>(" << node << ")" << std::endl;
+  BitVector a = node[0].getConst<BitVector>();
+  BitVector b = node[1].getConst<BitVector>();
+
+  if (a.unsignedLessThanEq(b)) {
+    return utils::mkTrue();
+  }
+  return utils::mkFalse();
+}
+
+template<> inline
+bool RewriteRule<EvalSle>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_SLE &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalSle>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalSle>(" << node << ")" << std::endl;
+  BitVector a = node[0].getConst<BitVector>();
+  BitVector b = node[1].getConst<BitVector>();
+
+  if (a.signedLessThanEq(b)) {
+    return utils::mkTrue(); 
+  }
+  return utils::mkFalse();
+}
+
+template<> inline
+bool RewriteRule<EvalExtract>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_EXTRACT &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalExtract>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalExtract>(" << node << ")" << std::endl;
+  BitVector a = node[0].getConst<BitVector>();
+  unsigned lo = utils::getExtractLow(node);
+  unsigned hi = utils::getExtractHigh(node);
+
+  BitVector res = a.extract(hi, lo);
+  return utils::mkConst(res);
+}
+
+
+template<> inline
+bool RewriteRule<EvalConcat>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_CONCAT &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalConcat>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalConcat>(" << node << ")" << std::endl;
+  unsigned num = node.getNumChildren();
+  BitVector res = node[0].getConst<BitVector>();
+  for(unsigned i = 1; i < num; ++i ) {  
+    BitVector a = node[i].getConst<BitVector>();
+    res = res.concat(a); 
+  }
+  return utils::mkConst(res);
+}
+
+template<> inline
+bool RewriteRule<EvalSignExtend>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_SIGN_EXTEND &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalSignExtend>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalSignExtend>(" << node << ")" << std::endl;
+  BitVector a = node[0].getConst<BitVector>();
+  unsigned amount = node.getOperator().getConst<BitVectorSignExtend>().signExtendAmount; 
+  BitVector res = a.signExtend(amount);
+  
+  return utils::mkConst(res);
+}
+
+template<> inline
+bool RewriteRule<EvalEquals>::applies(TNode node) {
+  return (node.getKind() == kind::EQUAL &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalEquals>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalEquals>(" << node << ")" << std::endl;
+  BitVector a = node[0].getConst<BitVector>();
+  BitVector b = node[1].getConst<BitVector>();
+  if (a == b) {
+    return utils::mkTrue(); 
+  }
+  return utils::mkFalse();
+
+}
+
+template<> inline
+bool RewriteRule<EvalComp>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_COMP &&
+          utils::isBVGroundTerm(node));
+}
+
+template<> inline
+Node RewriteRule<EvalComp>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<EvalComp>(" << node << ")" << std::endl;
+  BitVector a = node[0].getConst<BitVector>();
+  BitVector b = node[1].getConst<BitVector>();
+  if (a == b) {
+    return utils::mkConst(1, 1);
+  }
+  return utils::mkConst(1, 0);
+}
+
+}
+}
+}
diff --git a/src/theory/bv/theory_bv_rewrite_rules_core.h b/src/theory/bv/theory_bv_rewrite_rules_core.h
new file mode 100644
index 0000000..395949f
--- /dev/null
+++ b/src/theory/bv/theory_bv_rewrite_rules_core.h
@@ -0,0 +1,285 @@
+/*********************                                                        */
+/*! \file theory_bv_rewrite_rules_core.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Liana Hadarean, Clark Barrett
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "theory/bv/theory_bv_rewrite_rules.h"
+#include "theory/bv/theory_bv_utils.h"
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+template<> inline
+bool RewriteRule<ConcatFlatten>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_CONCAT);
+}
+
+template<> inline
+Node RewriteRule<ConcatFlatten>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<ConcatFlatten>(" << node << ")" << std::endl;
+  NodeBuilder<> result(kind::BITVECTOR_CONCAT);
+  std::vector<Node> processing_stack;
+  processing_stack.push_back(node);
+  while (!processing_stack.empty()) {
+    Node current = processing_stack.back();
+    processing_stack.pop_back();
+    if (current.getKind() == kind::BITVECTOR_CONCAT) {
+      for (int i = current.getNumChildren() - 1; i >= 0; i--)
+        processing_stack.push_back(current[i]);
+    } else {
+      result << current;
+    }
+  }
+  Node resultNode = result;
+  Debug("bv-rewrite") << "RewriteRule<ConcatFlatten>(" << resultNode << ")" << std::endl;
+  return resultNode;
+}
+
+template<> inline
+bool RewriteRule<ConcatExtractMerge>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_CONCAT);
+}
+
+template<> inline
+Node RewriteRule<ConcatExtractMerge>::apply(TNode node) {
+
+  Debug("bv-rewrite") << "RewriteRule<ConcatExtractMerge>(" << node << ")" << std::endl;
+
+  std::vector<Node> mergedExtracts;
+
+  Node current = node[0];
+  bool mergeStarted = false;
+  unsigned currentHigh = 0;
+  unsigned currentLow  = 0;
+
+  for(size_t i = 1, end = node.getNumChildren(); i < end; ++ i) {
+    // The next candidate for merging
+    Node next = node[i];
+    // If the current is not an extract we just go to the next
+    if (current.getKind() != kind::BITVECTOR_EXTRACT) {
+      mergedExtracts.push_back(current);
+      current = next;
+      continue;
+    }
+    // If it is an extract and the first one, get the extract parameters
+    else if (!mergeStarted) {
+      currentHigh = utils::getExtractHigh(current);
+      currentLow = utils::getExtractLow(current);
+    }
+
+    // If the next one can be merged, try to merge
+    bool merged = false;
+    if (next.getKind() == kind::BITVECTOR_EXTRACT && current[0] == next[0]) {
+      //x[i : j] @ x[j − 1 : k] -> c x[i : k]
+      unsigned nextHigh = utils::getExtractHigh(next);
+      unsigned nextLow  = utils::getExtractLow(next);
+      if(nextHigh + 1 == currentLow) {
+        currentLow = nextLow;
+        mergeStarted = true;
+        merged = true;
+      }
+    }
+    // If we haven't merged anything, add the previous merge and continue with the next
+    if (!merged) {
+      if (!mergeStarted) mergedExtracts.push_back(current);
+      else mergedExtracts.push_back(utils::mkExtract(current[0], currentHigh, currentLow));
+      current = next;
+      mergeStarted = false;
+    }
+  }
+
+  // Add the last child
+  if (!mergeStarted) mergedExtracts.push_back(current);
+  else mergedExtracts.push_back(utils::mkExtract(current[0], currentHigh, currentLow));
+
+  // Return the result
+  return utils::mkConcat(mergedExtracts);
+}
+
+template<> inline
+bool RewriteRule<ConcatConstantMerge>::applies(TNode node) {
+  return node.getKind() == kind::BITVECTOR_CONCAT;
+}
+
+template<> inline
+Node RewriteRule<ConcatConstantMerge>::apply(TNode node) {
+
+  Debug("bv-rewrite") << "RewriteRule<ConcatConstantMerge>(" << node << ")" << std::endl;
+
+  std::vector<Node> mergedConstants;
+  for (unsigned i = 0, end = node.getNumChildren(); i < end;) {
+    if (node[i].getKind() != kind::CONST_BITVECTOR) {
+      // If not a constant, just add it
+      mergedConstants.push_back(node[i]);
+      ++i;
+    } else {
+      // Find the longest sequence of constants
+      unsigned j = i + 1;
+      while (j < end) {
+        if (node[j].getKind() != kind::CONST_BITVECTOR) {
+          break;
+        } else {
+          ++ j;
+        }
+      }
+      // Append all the constants
+      BitVector current = node[i].getConst<BitVector>();
+      for (unsigned k = i + 1; k < j; ++ k) {
+        current = current.concat(node[k].getConst<BitVector>());
+      }
+      // Add the new merged constant
+      mergedConstants.push_back(utils::mkConst(current));
+      i = j;
+    }
+  }
+
+  Debug("bv-rewrite") << "RewriteRule<ConcatConstantMerge>(" << node << ") => " << utils::mkConcat(mergedConstants) << std::endl;
+
+  return utils::mkConcat(mergedConstants);
+}
+
+template<> inline
+bool RewriteRule<ExtractWhole>::applies(TNode node) {
+  if (node.getKind() != kind::BITVECTOR_EXTRACT) return false;
+  unsigned length = utils::getSize(node[0]);
+  unsigned extractHigh = utils::getExtractHigh(node);
+  if (extractHigh != length - 1) return false;
+  unsigned extractLow  = utils::getExtractLow(node);
+  if (extractLow != 0) return false;
+  return true;
+}
+
+template<> inline
+Node RewriteRule<ExtractWhole>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<ExtractWhole>(" << node << ")" << std::endl;
+  return node[0];
+}
+
+template<> inline
+bool RewriteRule<ExtractConstant>::applies(TNode node) {
+  if (node.getKind() != kind::BITVECTOR_EXTRACT) return false;
+  if (node[0].getKind() != kind::CONST_BITVECTOR) return false;
+  return true;
+}
+
+template<> inline
+Node RewriteRule<ExtractConstant>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<ExtractConstant>(" << node << ")" << std::endl;
+  Node child = node[0];
+  BitVector childValue = child.getConst<BitVector>();
+  return utils::mkConst(childValue.extract(utils::getExtractHigh(node), utils::getExtractLow(node)));
+}
+
+template<> inline
+bool RewriteRule<ExtractConcat>::applies(TNode node) {
+  //Debug("bv-rewrite") << "RewriteRule<ExtractConcat>(" << node << ")" << std::endl;
+  if (node.getKind() != kind::BITVECTOR_EXTRACT) return false;
+  if (node[0].getKind() != kind::BITVECTOR_CONCAT) return false;
+  return true;
+}
+
+template<> inline
+Node RewriteRule<ExtractConcat>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<ExtractConcat>(" << node << ")" << std::endl;
+  int extract_high = utils::getExtractHigh(node);
+  int extract_low = utils::getExtractLow(node);
+
+  std::vector<Node> resultChildren;
+
+  Node concat = node[0];
+  for (int i = concat.getNumChildren() - 1; i >= 0 && extract_high >= 0; i--) {
+    Node concatChild = concat[i];
+    int concatChildSize = utils::getSize(concatChild);
+    if (extract_low < concatChildSize) {
+      int extract_start = extract_low < 0 ? 0 : extract_low;
+      int extract_end = extract_high < concatChildSize ? extract_high : concatChildSize - 1;
+      resultChildren.push_back(utils::mkExtract(concatChild, extract_end, extract_start));
+    }
+    extract_low -= concatChildSize;
+    extract_high -= concatChildSize;
+  }
+
+  std::reverse(resultChildren.begin(), resultChildren.end());
+
+  return utils::mkConcat(resultChildren);
+}
+
+template<> inline
+bool RewriteRule<ExtractExtract>::applies(TNode node) {
+  if (node.getKind() != kind::BITVECTOR_EXTRACT) return false;
+  if (node[0].getKind() != kind::BITVECTOR_EXTRACT) return false;
+  return true;
+}
+
+template<> inline
+Node RewriteRule<ExtractExtract>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<ExtractExtract>(" << node << ")" << std::endl;
+
+  // x[i:j][k:l] ~>  x[k+j:l+j]
+  Node child = node[0];
+  unsigned k = utils::getExtractHigh(node);
+  unsigned l = utils::getExtractLow(node);
+  unsigned j = utils::getExtractLow(child);
+
+  Node result = utils::mkExtract(child[0], k + j, l + j);
+  return result;
+}
+
+template<> inline
+bool RewriteRule<FailEq>::applies(TNode node) {
+  //Debug("bv-rewrite") << "RewriteRule<FailEq>(" << node << ")" << std::endl;
+  if (node.getKind() != kind::EQUAL) return false;
+  if (node[0].getKind() != kind::CONST_BITVECTOR) return false;
+  if (node[1].getKind() != kind::CONST_BITVECTOR) return false;
+  return node[0] != node[1];
+}
+
+template<> inline
+Node RewriteRule<FailEq>::apply(TNode node) {
+  return utils::mkFalse();
+}
+
+template<> inline
+bool RewriteRule<SimplifyEq>::applies(TNode node) {
+  if (node.getKind() != kind::EQUAL) return false;
+  return node[0] == node[1];
+}
+
+template<> inline
+Node RewriteRule<SimplifyEq>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<SimplifyEq>(" << node << ")" << std::endl;
+  return utils::mkTrue();
+}
+
+template<> inline
+bool RewriteRule<ReflexivityEq>::applies(TNode node) {
+  return (node.getKind() == kind::EQUAL && node[0] < node[1]);
+}
+
+template<> inline
+Node RewriteRule<ReflexivityEq>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<ReflexivityEq>(" << node << ")" << std::endl;
+  Node res = node[1].eqNode(node[0]);
+  return res;
+}
+
+}
+}
+}
diff --git a/src/theory/bv/theory_bv_rewrite_rules_normalization.h b/src/theory/bv/theory_bv_rewrite_rules_normalization.h
new file mode 100644
index 0000000..89bb3d7
--- /dev/null
+++ b/src/theory/bv/theory_bv_rewrite_rules_normalization.h
@@ -0,0 +1,1297 @@
+/*********************                                                        */
+/*! \file theory_bv_rewrite_rules_normalization.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Clark Barrett, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "theory/rewriter.h"
+#include "theory/bv/theory_bv_rewrite_rules.h"
+#include "theory/bv/theory_bv_utils.h"
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+/**
+ * ExtractBitwise
+ *   (x bvop y) [i:j] ==> x[i:j] bvop y[i:j]
+ *  where bvop is bvand,bvor, bvxor
+ */
+template<> inline
+bool RewriteRule<ExtractBitwise>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_EXTRACT &&
+          (node[0].getKind() == kind::BITVECTOR_AND ||
+           node[0].getKind() == kind::BITVECTOR_OR ||
+           node[0].getKind() == kind::BITVECTOR_XOR ));
+}
+
+template<> inline
+Node RewriteRule<ExtractBitwise>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<ExtractBitwise>(" << node << ")" << std::endl;
+  unsigned high = utils::getExtractHigh(node);
+  unsigned low = utils::getExtractLow(node);
+  std::vector<Node> children; 
+  for (unsigned i = 0; i < node[0].getNumChildren(); ++i) {
+    children.push_back(utils::mkExtract(node[0][i], high, low)); 
+  }
+  Kind kind = node[0].getKind(); 
+  return utils::mkSortedNode(kind, children);
+}
+
+/**
+ * ExtractNot
+ *
+ *  (~ a) [i:j] ==> ~ (a[i:j])
+ */
+template<> inline
+bool RewriteRule<ExtractNot>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_EXTRACT &&
+          node[0].getKind() == kind::BITVECTOR_NOT);
+}
+
+template<> inline
+Node RewriteRule<ExtractNot>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<ExtractNot>(" << node << ")" << std::endl;
+  unsigned low = utils::getExtractLow(node);
+  unsigned high = utils::getExtractHigh(node);
+  Node a = utils::mkExtract(node[0][0], high, low);
+  return utils::mkNode(kind::BITVECTOR_NOT, a); 
+}
+
+/** 
+ * ExtractSignExtend
+ * 
+ * (sign_extend k x) [i:j] => pushes extract in
+ * 
+ * @return 
+ */
+
+template<> inline
+bool RewriteRule<ExtractSignExtend>::applies(TNode node) {
+  if (node.getKind() == kind::BITVECTOR_EXTRACT &&
+      node[0].getKind() == kind::BITVECTOR_SIGN_EXTEND) {
+    return true; 
+  }
+  return false; 
+}
+
+template<> inline
+Node RewriteRule<ExtractSignExtend>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<ExtractSignExtend>(" << node << ")" << std::endl;
+  TNode extendee = node[0][0]; 
+  unsigned extendee_size = utils::getSize(extendee);
+
+  unsigned high = utils::getExtractHigh(node);
+  unsigned low = utils::getExtractLow(node); 
+
+  Node resultNode; 
+  // extract falls on extendee
+  if (high < extendee_size) {
+    resultNode = utils::mkExtract(extendee, high, low); 
+  } else if (low < extendee_size && high >= extendee_size) {
+    // if extract overlaps sign extend and extendee
+    Node low_extract = utils::mkExtract(extendee, extendee_size - 1, low);
+    unsigned new_ammount = high - extendee_size + 1;
+    resultNode = utils::mkSignExtend(low_extract, new_ammount); 
+  } else {
+    // extract only over sign extend
+    Assert (low >= extendee_size);
+    unsigned top = utils::getSize(extendee) - 1; 
+    Node most_significant_bit = utils::mkExtract(extendee, top, top);
+    std::vector<Node> bits;
+    for (unsigned i = 0; i < high - low + 1; ++i) {
+      bits.push_back(most_significant_bit); 
+    }
+    resultNode =  utils::mkNode(kind::BITVECTOR_CONCAT, bits);
+  }
+  Debug("bv-rewrite") << "                           =>" << resultNode << std::endl;
+  return resultNode; 
+}
+
+
+
+/**
+ * ExtractArith
+ * 
+ * (a bvop b) [k:0] ==> (a[k:0] bvop b[k:0])
+ */
+
+template<> inline
+bool RewriteRule<ExtractArith>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_EXTRACT &&
+          utils::getExtractLow(node) == 0 &&
+          (node[0].getKind() == kind::BITVECTOR_PLUS ||
+           node[0].getKind() == kind::BITVECTOR_MULT));
+}
+
+template<> inline
+Node RewriteRule<ExtractArith>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<ExtractArith>(" << node << ")" << std::endl;
+  unsigned low = utils::getExtractLow(node);
+  Assert (low == 0); 
+  unsigned high = utils::getExtractHigh(node);
+  std::vector<Node> children;
+  for (unsigned i = 0; i < node[0].getNumChildren(); ++i) {
+    children.push_back(utils::mkExtract(node[0][i], high, low)); 
+  }
+  Kind kind = node[0].getKind(); 
+  return utils::mkNode(kind, children); 
+  
+}
+
+/**
+ * ExtractArith2
+ *
+ * (a bvop b) [i:j] ==> (a[i:0] bvop b[i:0]) [i:j]
+ */
+
+// careful not to apply in a loop 
+template<> inline
+bool RewriteRule<ExtractArith2>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_EXTRACT &&
+          (node[0].getKind() == kind::BITVECTOR_PLUS ||
+           node[0].getKind() == kind::BITVECTOR_MULT));
+}
+
+template<> inline
+Node RewriteRule<ExtractArith2>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<ExtractArith2>(" << node << ")" << std::endl;
+  unsigned low = utils::getExtractLow(node);
+  unsigned high = utils::getExtractHigh(node);
+  std::vector<Node> children;
+  for (unsigned i = 0; i < node[0].getNumChildren(); ++i) {
+    children.push_back(utils::mkExtract(node[0][i], high, 0)); 
+  }
+  Kind kind = node[0].getKind(); 
+  Node op_children = utils::mkNode(kind, children); 
+  
+  return utils::mkExtract(op_children, high, low); 
+}
+
+template<> inline
+bool RewriteRule<FlattenAssocCommut>::applies(TNode node) {
+  Kind kind = node.getKind();
+  if (kind != kind::BITVECTOR_PLUS &&
+      kind != kind::BITVECTOR_MULT &&
+      kind != kind::BITVECTOR_OR &&
+      kind != kind::BITVECTOR_XOR &&
+      kind != kind::BITVECTOR_AND)
+    return false;
+  TNode::iterator child_it = node.begin();
+  for(; child_it != node.end(); ++child_it) {
+    if ((*child_it).getKind() == kind) {
+      return true;
+    }
+  }
+  return false;
+}
+
+
+template<> inline
+Node RewriteRule<FlattenAssocCommut>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<FlattenAssocCommut>(" << node << ")" << std::endl;
+  std::vector<Node> processingStack;
+  processingStack.push_back(node);
+  std::vector<Node> children;
+  Kind kind = node.getKind(); 
+  
+  while (! processingStack.empty()) {
+    TNode current = processingStack.back();
+    processingStack.pop_back();
+
+    // flatten expression
+    if (current.getKind() == kind) {
+      for (unsigned i = 0; i < current.getNumChildren(); ++i) {
+        processingStack.push_back(current[i]);
+      }
+    } else {
+      children.push_back(current); 
+    }
+  }
+  if (node.getKind() == kind::BITVECTOR_PLUS ||
+      node.getKind() == kind::BITVECTOR_MULT) {
+    return utils::mkNode(kind, children);
+  }
+  else {
+    return utils::mkSortedNode(kind, children);
+  }
+}
+
+static inline void addToCoefMap(std::map<Node, BitVector>& map,
+                                TNode term, const BitVector& coef) {
+  if (map.find(term) != map.end()) {
+    map[term] = map[term] + coef; 
+  } else {
+    map[term] = coef;
+  }
+}
+
+
+static inline void updateCoefMap(TNode current, unsigned size,
+                                 std::map<Node, BitVector>& factorToCoefficient,
+                                 BitVector& constSum) {
+  switch (current.getKind()) {
+    case kind::BITVECTOR_MULT: {
+      // look for c * term, where c is a constant
+      BitVector coeff;
+      Node term;
+      if (current.getNumChildren() == 2) {
+        // Mult should be normalized with only one constant at end
+        Assert(!current[0].isConst());
+        if (current[1].isConst()) {
+          coeff = current[1].getConst<BitVector>();
+          term = current[0];
+        }
+      }
+      else if (current[current.getNumChildren()-1].isConst()) {
+        NodeBuilder<> nb(kind::BITVECTOR_MULT);
+        TNode::iterator child_it = current.begin();
+        for(; (child_it+1) != current.end(); ++child_it) {
+          Assert(!(*child_it).isConst());
+          nb << (*child_it);
+        }
+        term = nb;
+        coeff = (*child_it).getConst<BitVector>();
+      }
+      if (term.isNull()) {
+        coeff = BitVector(size, (unsigned)1);
+        term = current;
+      }
+      if(term.getKind() == kind::BITVECTOR_SUB) {
+        TNode a = term[0];
+        TNode b = term[1];
+        addToCoefMap(factorToCoefficient, a, coeff);
+        addToCoefMap(factorToCoefficient, b, -coeff); 
+      }
+      else if(term.getKind() == kind::BITVECTOR_NEG) {
+        addToCoefMap(factorToCoefficient, term[0], -BitVector(size, coeff));
+      }
+      else {
+        addToCoefMap(factorToCoefficient, term, coeff);
+      }
+      break;
+    }
+    case kind::BITVECTOR_SUB:
+      // turn into a + (-1)*b 
+      Assert(current.getNumChildren() == 2);
+      addToCoefMap(factorToCoefficient, current[0], BitVector(size, (unsigned)1)); 
+      addToCoefMap(factorToCoefficient, current[1], -BitVector(size, (unsigned)1)); 
+      break;
+    case kind::BITVECTOR_NEG:
+      addToCoefMap(factorToCoefficient, current[0], -BitVector(size, (unsigned)1)); 
+      break;
+    case kind::CONST_BITVECTOR: {
+      BitVector constValue = current.getConst<BitVector>(); 
+      constSum = constSum + constValue;
+      break;
+    }
+    default:
+      // store as 1 * current
+      addToCoefMap(factorToCoefficient, current, BitVector(size, (unsigned)1)); 
+      break;
+  }
+}
+
+
+static inline void addToChildren(TNode term, unsigned size, BitVector coeff, std::vector<Node>& children) {
+  if (coeff == BitVector(size, (unsigned)0)) {
+    return;
+  }
+  else if (coeff == BitVector(size, (unsigned)1)) {
+    children.push_back(term); 
+  }
+  else if (coeff == -BitVector(size, (unsigned)1)) {
+    // avoid introducing an extra multiplication
+    children.push_back(utils::mkNode(kind::BITVECTOR_NEG, term)); 
+  }
+  else if (term.getKind() == kind::BITVECTOR_MULT) {
+    NodeBuilder<> nb(kind::BITVECTOR_MULT);
+    TNode::iterator child_it = term.begin();
+    for(; child_it != term.end(); ++child_it) {
+      nb << *child_it;
+    }
+    nb << utils::mkConst(coeff);
+    children.push_back(Node(nb));
+  }
+  else {
+    Node coeffNode = utils::mkConst(coeff);
+    Node product = utils::mkNode(kind::BITVECTOR_MULT, term, coeffNode); 
+    children.push_back(product); 
+  }
+}
+
+
+template<> inline
+bool RewriteRule<PlusCombineLikeTerms>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_PLUS);
+}
+
+
+template<> inline
+Node RewriteRule<PlusCombineLikeTerms>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<PlusCombineLikeTerms>(" << node << ")" << std::endl;
+  unsigned size = utils::getSize(node); 
+  BitVector constSum(size, (unsigned)0); 
+  std::map<Node, BitVector> factorToCoefficient;
+
+  // combine like-terms
+  for(unsigned i= 0; i < node.getNumChildren(); ++i) {
+    TNode current = node[i];
+    updateCoefMap(current, size, factorToCoefficient, constSum);
+  }
+    
+  std::vector<Node> children; 
+
+  // construct result 
+  std::map<Node, BitVector>::const_iterator it = factorToCoefficient.begin();
+  
+  for (; it != factorToCoefficient.end(); ++it) {
+    addToChildren(it->first, size, it->second, children);
+  }
+
+  if (constSum != BitVector(size, (unsigned)0)) {
+    children.push_back(utils::mkConst(constSum)); 
+  }
+
+  if(children.size() == 0) {
+    return utils::mkConst(size, (unsigned)0); 
+  }
+
+  return utils::mkNode(kind::BITVECTOR_PLUS, children);
+}
+
+
+template<> inline
+bool RewriteRule<MultSimplify>::applies(TNode node) {
+  if (node.getKind() != kind::BITVECTOR_MULT) {
+    return false;
+  }
+  TNode::iterator child_it = node.begin();
+  TNode::iterator child_next = child_it + 1;
+  for(; child_next != node.end(); ++child_it, ++child_next) {
+    if ((*child_it).isConst() ||
+        !((*child_it) < (*child_next))) {
+      return true;
+    }
+  }
+  if ((*child_it).isConst()) {
+    BitVector bv = (*child_it).getConst<BitVector>();
+    if (bv == BitVector(utils::getSize(node), (unsigned) 0) ||
+        bv == BitVector(utils::getSize(node), (unsigned) 1)) {
+      return true;
+    }
+  }
+  return false;
+}
+
+template<> inline
+Node RewriteRule<MultSimplify>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<MultSimplify>(" << node << ")" << std::endl;
+  unsigned size = utils::getSize(node); 
+  BitVector constant(size, Integer(1));
+
+  std::vector<Node> children; 
+  for(unsigned i = 0; i < node.getNumChildren(); ++i) {
+    TNode current = node[i];
+    if (current.getKind() == kind::CONST_BITVECTOR) {
+      BitVector value = current.getConst<BitVector>();
+      constant = constant * value;
+      if(constant == BitVector(size, (unsigned) 0)) {
+        return utils::mkConst(size, 0); 
+      }
+    } else {
+      children.push_back(current); 
+    }
+  }
+
+  std::sort(children.begin(), children.end());
+
+  if(constant != BitVector(size, (unsigned)1)) {
+    children.push_back(utils::mkConst(constant)); 
+  }
+  
+  if(children.size() == 0) {
+    return utils::mkConst(size, (unsigned)1); 
+  }
+
+  return utils::mkNode(kind::BITVECTOR_MULT, children); 
+}
+
+
+template<> inline
+bool RewriteRule<MultDistribConst>::applies(TNode node) {
+  if (node.getKind() != kind::BITVECTOR_MULT ||
+      node.getNumChildren() != 2) {
+    return false;
+  }
+  Assert(!node[0].isConst());
+  if (!node[1].isConst()) {
+    return false;
+  }
+  TNode factor = node[0];
+  return (factor.getKind() == kind::BITVECTOR_PLUS ||
+          factor.getKind() == kind::BITVECTOR_SUB ||
+          factor.getKind() == kind::BITVECTOR_NEG); 
+}
+
+template<> inline
+Node RewriteRule<MultDistribConst>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<MultDistribConst>(" << node << ")" << std::endl;
+
+  TNode constant = node[1];
+  TNode factor = node[0];
+  Assert(constant.getKind() == kind::CONST_BITVECTOR);
+
+  if (factor.getKind() == kind::BITVECTOR_NEG) {
+    // push negation on the constant part
+    BitVector const_bv = constant.getConst<BitVector>();
+    return utils::mkNode(kind::BITVECTOR_MULT,
+                         factor[0],
+                         utils::mkConst(-const_bv)); 
+  }
+
+  std::vector<Node> children;
+  for(unsigned i = 0; i < factor.getNumChildren(); ++i) {
+    children.push_back(utils::mkNode(kind::BITVECTOR_MULT, factor[i], constant));
+  }
+  
+  return utils::mkNode(factor.getKind(), children); 
+}
+
+template<> inline
+bool RewriteRule<MultDistrib>::applies(TNode node) {
+  if (node.getKind() != kind::BITVECTOR_MULT ||
+      node.getNumChildren() != 2) {
+    return false;
+  }
+  if (node[0].getKind() == kind::BITVECTOR_PLUS ||
+      node[0].getKind() == kind::BITVECTOR_SUB) {
+    return node[1].getKind() != kind::BITVECTOR_PLUS &&
+           node[1].getKind() != kind::BITVECTOR_SUB;
+  }
+  return node[1].getKind() == kind::BITVECTOR_PLUS ||
+         node[1].getKind() == kind::BITVECTOR_SUB; 
+}
+
+template<> inline
+Node RewriteRule<MultDistrib>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<MultDistrib>(" << node << ")" << std::endl;
+
+  bool is_rhs_factor = node[0].getKind() == kind::BITVECTOR_PLUS ||
+                       node[0].getKind() == kind::BITVECTOR_SUB;
+  TNode factor = !is_rhs_factor ? node[0] : node[1];
+  TNode sum = is_rhs_factor ? node[0] : node[1];
+  Assert (factor.getKind() != kind::BITVECTOR_PLUS &&
+          factor.getKind() != kind::BITVECTOR_SUB &&
+          (sum.getKind() == kind::BITVECTOR_PLUS ||
+           sum.getKind() == kind::BITVECTOR_SUB));
+
+  std::vector<Node> children;
+  for(unsigned i = 0; i < sum.getNumChildren(); ++i) {
+    children.push_back(utils::mkNode(kind::BITVECTOR_MULT, sum[i], factor));
+  }
+  
+  return utils::mkNode(sum.getKind(), children); 
+}
+
+template<> inline
+bool RewriteRule<ConcatToMult>::applies(TNode node) {
+  if (node.getKind() != kind::BITVECTOR_CONCAT) return false;
+  if (node.getNumChildren() != 2) return false;
+  if (node[0].getKind()!= kind::BITVECTOR_EXTRACT) return false;
+  if (!node[1].isConst()) return false;
+  TNode extract = node[0];
+  TNode c = node[1];
+  unsigned ammount = utils::getSize(c);
+  
+  if (utils::getSize(node) != utils::getSize(extract[0])) return false; 
+  if (c != utils::mkConst(ammount, 0)) return false;
+
+  unsigned low = utils::getExtractLow(extract);
+  if (low != 0) return false; 
+  unsigned high = utils::getExtractHigh(extract);
+  if (high + ammount + 1 != utils::getSize(node)) return false;
+  return true;
+}
+
+template<> inline
+Node RewriteRule<ConcatToMult>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<ConcatToMult>(" << node << ")" << std::endl;
+  unsigned size = utils::getSize(node); 
+  Node factor = node[0][0];
+  Assert(utils::getSize(factor) == utils::getSize(node)); 
+  BitVector ammount = BitVector(size, utils::getSize(node[1]));
+  Node coef = utils::mkConst(BitVector(size, 1u).leftShift(ammount));
+  return utils::mkNode(kind::BITVECTOR_MULT, factor, coef); 
+}
+
+
+
+template<> inline
+bool RewriteRule<SolveEq>::applies(TNode node) {
+  if (node.getKind() != kind::EQUAL ||
+      (node[0].isVar() && !node[1].hasSubterm(node[0])) ||
+      (node[1].isVar() && !node[0].hasSubterm(node[1]))) {
+    return false;
+  }
+  return true;
+}
+
+
+// Doesn't do full solving (yet), instead, if a term appears both on lhs and rhs, it subtracts from both sides so that one side's coeff is zero
+template<> inline
+Node RewriteRule<SolveEq>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<SolveEq>(" << node << ")" << std::endl;
+
+  TNode left = node[0];
+  TNode right = node[1];
+
+  unsigned size = utils::getSize(left);
+  BitVector zero(size, (unsigned)0);
+  BitVector leftConst(size, (unsigned)0);
+  BitVector rightConst(size, (unsigned)0);
+  std::map<Node, BitVector> leftMap, rightMap;
+
+  // Collect terms and coefficients plus constant for left
+  if (left.getKind() == kind::BITVECTOR_PLUS) {
+    for(unsigned i= 0; i < left.getNumChildren(); ++i) {
+      updateCoefMap(left[i], size, leftMap, leftConst);
+    }
+  }
+  else if (left.getKind() == kind::BITVECTOR_NOT && left[0] == right) {
+    return utils::mkFalse();
+  }
+  else {
+    updateCoefMap(left, size, leftMap, leftConst);
+  }
+
+  // Collect terms and coefficients plus constant for right
+  if (right.getKind() == kind::BITVECTOR_PLUS) {
+    for(unsigned i= 0; i < right.getNumChildren(); ++i) {
+      updateCoefMap(right[i], size, rightMap, rightConst);
+    }
+  }
+  else if (right.getKind() == kind::BITVECTOR_NOT && right[0] == left) {
+    return utils::mkFalse();
+  }
+  else {
+    updateCoefMap(right, size, rightMap, rightConst);
+  }
+
+  std::vector<Node> childrenLeft, childrenRight;
+
+  std::map<Node, BitVector>::const_iterator iLeft = leftMap.begin(), iLeftEnd = leftMap.end();
+  std::map<Node, BitVector>::const_iterator iRight = rightMap.begin(), iRightEnd = rightMap.end();
+
+  BitVector coeffLeft;
+  TNode termLeft;
+  if (iLeft != iLeftEnd) {
+    coeffLeft = iLeft->second;
+    termLeft = iLeft->first;
+  }
+
+  BitVector coeffRight;
+  TNode termRight;
+  if (iRight != iRightEnd) {
+    coeffRight = iRight->second;
+    termRight = iRight->first;
+  }
+
+  bool incLeft, incRight;
+
+  while (iLeft != iLeftEnd || iRight != iRightEnd) {
+    incLeft = incRight = false;
+    if (iLeft != iLeftEnd && (iRight == iRightEnd || termLeft < termRight)) {
+      addToChildren(termLeft, size, coeffLeft, childrenLeft);
+      incLeft = true;
+    }      
+    else if (iLeft == iLeftEnd || termRight < termLeft) {
+      Assert(iRight != iRightEnd);
+      addToChildren(termRight, size, coeffRight, childrenRight);
+      incRight = true;
+    }
+    else {
+      if (coeffLeft > coeffRight) {
+        addToChildren(termLeft, size, coeffLeft - coeffRight, childrenLeft);
+      }
+      else if (coeffRight > coeffLeft) {
+        addToChildren(termRight, size, coeffRight - coeffLeft, childrenRight);
+      }
+      incLeft = incRight = true;
+    }
+    if (incLeft) {
+      ++iLeft;
+      if (iLeft != iLeftEnd) {
+        Assert(termLeft < iLeft->first);
+        coeffLeft = iLeft->second;
+        termLeft = iLeft->first;
+      }
+    }
+    if (incRight) {
+      ++iRight;
+      if (iRight != iRightEnd) {
+        Assert(termRight < iRight->first);
+        coeffRight = iRight->second;
+        termRight = iRight->first;
+      }
+    }
+  }
+
+  // construct result 
+
+  // If both constants are nonzero, combine on right, otherwise leave them where they are
+  if (rightConst != zero) {
+    rightConst = rightConst - leftConst;
+    leftConst = zero;
+    if (rightConst != zero) {
+      childrenRight.push_back(utils::mkConst(rightConst));
+    }
+  }
+  else if (leftConst != zero) {
+    childrenLeft.push_back(utils::mkConst(leftConst));
+  }
+
+  Node newLeft, newRight;
+
+  if(childrenRight.size() == 0 && leftConst != zero) {
+    Assert(childrenLeft.back().isConst() && childrenLeft.back().getConst<BitVector>() == leftConst);
+    if (childrenLeft.size() == 1) {
+      // c = 0 ==> false
+      return utils::mkFalse();
+    }
+    // special case - if right is empty and left has a constant, move the constant
+    childrenRight.push_back(utils::mkConst(-leftConst));
+    childrenLeft.pop_back();
+  }
+
+  if(childrenLeft.size() == 0) {
+    if (rightConst != zero) {
+      Assert(childrenRight.back().isConst() && childrenRight.back().getConst<BitVector>() == rightConst);
+      if (childrenRight.size() == 1) {
+        // 0 = c ==> false
+        return utils::mkFalse();
+      }
+      // special case - if left is empty and right has a constant, move the constant
+      newLeft = utils::mkConst(-rightConst);
+      childrenRight.pop_back();
+    }
+    else {
+      newLeft = utils::mkConst(size, (unsigned)0); 
+    }
+  }
+  else if (childrenLeft.size() == 1) {
+    newLeft = childrenLeft[0];
+  }
+  else {
+    newLeft = utils::mkNode(kind::BITVECTOR_PLUS, childrenLeft);
+  }
+
+  if (childrenRight.size() == 0) {
+    newRight = utils::mkConst(size, (unsigned)0);
+  }
+  else if (childrenRight.size() == 1) {
+    newRight = childrenRight[0];
+  }
+  else {
+    newRight = utils::mkNode(kind::BITVECTOR_PLUS, childrenRight);
+  }
+
+  //  Assert(newLeft == Rewriter::rewrite(newLeft));
+  //  Assert(newRight == Rewriter::rewrite(newRight));
+
+  if (newLeft == newRight) {
+    Assert (newLeft == utils::mkConst(size, (unsigned)0));
+    return utils::mkTrue();
+  }
+
+  if (newLeft < newRight) {
+    Assert((newRight == left && newLeft == right) ||
+           Rewriter::rewrite(newRight) != left ||
+           Rewriter::rewrite(newLeft) != right);
+    return newRight.eqNode(newLeft);
+  }
+  
+  Assert((newLeft == left && newRight == right) ||
+         Rewriter::rewrite(newLeft) != left ||
+         Rewriter::rewrite(newRight) != right);
+  return newLeft.eqNode(newRight);
+}
+
+
+template<> inline
+bool RewriteRule<BitwiseEq>::applies(TNode node) {
+  if (node.getKind() != kind::EQUAL ||
+      utils::getSize(node[0]) != 1) {
+    return false;
+  }
+  TNode term;
+  BitVector c;
+  if (node[0].getKind() == kind::CONST_BITVECTOR) {
+    c = node[0].getConst<BitVector>();
+    term = node[1];
+  }
+  else if (node[1].getKind() == kind::CONST_BITVECTOR) {
+    c = node[1].getConst<BitVector>();
+    term = node[0];
+  }
+  else {
+    return false;
+  }
+  switch (term.getKind()) {
+    case kind::BITVECTOR_AND:
+    case kind::BITVECTOR_OR:
+      //operator BITVECTOR_XOR 2: "bitwise xor"
+    case kind::BITVECTOR_NOT:
+    case kind::BITVECTOR_NAND:
+    case kind::BITVECTOR_NOR:
+      //operator BITVECTOR_XNOR 2 "bitwise xnor"
+    case kind::BITVECTOR_COMP:
+    case kind::BITVECTOR_NEG:
+      return true;
+      break;
+    default:
+      break;
+  }
+  return false;
+}
+
+
+static inline Node mkNodeKind(Kind k, TNode node, TNode c) {
+  unsigned i = 0;
+  unsigned nc = node.getNumChildren();
+  NodeBuilder<> nb(k);
+  for(; i < nc; ++i) {
+    nb << node[i].eqNode(c);
+  }
+  return nb;
+}
+
+
+template<> inline
+Node RewriteRule<BitwiseEq>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<BitwiseEq>(" << node << ")" << std::endl;
+
+  TNode term;
+  BitVector c;
+
+  if (node[0].getKind() == kind::CONST_BITVECTOR) {
+    c = node[0].getConst<BitVector>();
+    term = node[1];
+  }
+  else if (node[1].getKind() == kind::CONST_BITVECTOR) {
+    c = node[1].getConst<BitVector>();
+    term = node[0];
+  }
+
+  bool eqOne = (c == BitVector(1,(unsigned)1));
+
+  switch (term.getKind()) {
+    case kind::BITVECTOR_AND:
+      if (eqOne) {
+        return mkNodeKind(kind::AND, term, utils::mkConst(1, (unsigned)1));
+      }
+      else {
+        return mkNodeKind(kind::OR, term, utils::mkConst(1, (unsigned)0));
+      }
+      break;
+    case kind::BITVECTOR_NAND:
+      if (eqOne) {
+        return mkNodeKind(kind::OR, term, utils::mkConst(1, (unsigned)0));
+      }
+      else {
+        return mkNodeKind(kind::AND, term, utils::mkConst(1, (unsigned)1));
+      }
+      break;
+    case kind::BITVECTOR_OR:
+      if (eqOne) {
+        return mkNodeKind(kind::OR, term, utils::mkConst(1, (unsigned)1));
+      }
+      else {
+        return mkNodeKind(kind::AND, term, utils::mkConst(1, (unsigned)0));
+      }
+      break;
+    case kind::BITVECTOR_NOR:
+      if (eqOne) {
+        return mkNodeKind(kind::AND, term, utils::mkConst(1, (unsigned)0));
+      }
+      else {
+        return mkNodeKind(kind::OR, term, utils::mkConst(1, (unsigned)1));
+      }
+      break;
+    case kind::BITVECTOR_NOT:
+      return term[0].eqNode(utils::mkConst(~c));
+    case kind::BITVECTOR_COMP:
+      Assert(term.getNumChildren() == 2);
+      if (eqOne) {
+        return term[0].eqNode(term[1]);
+      }
+      else {
+        return term[0].eqNode(term[1]).notNode();
+      }
+    case kind::BITVECTOR_NEG:
+      return term[0].eqNode(utils::mkConst(c));
+    default:
+      break;
+  }
+  Unreachable();
+}
+
+
+/**
+ * -(c * expr) ==> (-c * expr)
+ * where c is a constant
+ */
+template<> inline
+bool RewriteRule<NegMult>::applies(TNode node) {
+  if(node.getKind()!= kind::BITVECTOR_NEG ||
+     node[0].getKind() != kind::BITVECTOR_MULT) {                                
+    return false;
+  }
+  return node[node.getNumChildren()-1].isConst();
+}
+
+template<> inline
+Node RewriteRule<NegMult>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<NegMult>(" << node << ")" << std::endl;
+  TNode mult = node[0];
+  NodeBuilder<> nb(kind::BITVECTOR_MULT);
+  BitVector bv(utils::getSize(node), (unsigned)1);
+  TNode::iterator child_it = mult.begin();
+  for(; (child_it+1) != mult.end(); ++child_it) {
+    nb << (*child_it);
+  }
+  Assert((*child_it).isConst());
+  bv = (*child_it).getConst<BitVector>();
+  nb << utils::mkConst(-bv);
+  return Node(nb);
+}
+
+template<> inline
+bool RewriteRule<NegSub>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_NEG &&
+          node[0].getKind() == kind::BITVECTOR_SUB);
+}
+
+template<> inline
+Node RewriteRule<NegSub>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<NegSub>(" << node << ")" << std::endl;
+  return utils::mkNode(kind::BITVECTOR_SUB, node[0][1], node[0][0]);
+}
+
+template<> inline
+bool RewriteRule<NegPlus>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_NEG &&
+          node[0].getKind() == kind::BITVECTOR_PLUS);
+}
+
+template<> inline
+Node RewriteRule<NegPlus>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<NegPlus>(" << node << ")" << std::endl;
+  std::vector<Node> children;
+  for (unsigned i = 0; i < node[0].getNumChildren(); ++i) {
+    children.push_back(utils::mkNode(kind::BITVECTOR_NEG, node[0][i])); 
+  }
+  return utils::mkNode(kind::BITVECTOR_PLUS, children);
+}
+
+
+
+
+struct Count {
+  unsigned pos;
+  unsigned neg;
+  Count() : pos(0), neg(0) {}
+  Count(unsigned p, unsigned n):
+    pos(p),
+    neg(n)
+  {}
+};
+
+inline static void insert(std::hash_map<TNode, Count, TNodeHashFunction>& map, TNode node, bool neg) {
+  if(map.find(node) == map.end()) {
+    Count c = neg? Count(0,1) : Count(1, 0);
+    map[node] = c; 
+  } else {
+    if (neg) {
+      ++(map[node].neg);
+    } else {
+      ++(map[node].pos);
+    }
+  }
+}
+
+template<> inline
+bool RewriteRule<AndSimplify>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_AND);
+}
+
+template<> inline
+Node RewriteRule<AndSimplify>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<AndSimplify>(" << node << ")" << std::endl;
+
+  // this will remove duplicates
+  std::hash_map<TNode, Count, TNodeHashFunction> subterms;
+  unsigned size = utils::getSize(node);
+  BitVector constant = utils::mkBitVectorOnes(size); 
+  
+  for (unsigned i = 0; i < node.getNumChildren(); ++i) {
+    TNode current = node[i];
+    // simplify constants
+    if (current.getKind() == kind::CONST_BITVECTOR) {
+      BitVector bv = current.getConst<BitVector>();
+      constant = constant & bv;
+    } else {
+      if (current.getKind() == kind::BITVECTOR_NOT) {
+        insert(subterms, current[0], true);
+      } else {
+        insert(subterms, current, false);
+      }
+    }
+  }
+
+  std::vector<Node> children;
+  
+  if (constant == BitVector(size, (unsigned)0)) {
+    return utils::mkConst(BitVector(size, (unsigned)0)); 
+  }
+
+  if (constant != utils::mkBitVectorOnes(size)) {
+    children.push_back(utils::mkConst(constant)); 
+  }
+  
+  std::hash_map<TNode, Count, TNodeHashFunction>::const_iterator it = subterms.begin();
+
+  for (; it != subterms.end(); ++it) {
+    if (it->second.pos > 0 && it->second.neg > 0) {
+      // if we have a and ~a 
+      return utils::mkConst(BitVector(size, (unsigned)0)); 
+    } else {
+      // idempotence 
+      if (it->second.neg > 0) {
+        // if it only occured negated
+        children.push_back(utils::mkNode(kind::BITVECTOR_NOT, it->first));
+      } else {
+        // if it only occured positive
+        children.push_back(it->first); 
+      }
+    }
+  }
+  if (children.size() == 0) {
+    return utils::mkOnes(size); 
+  }
+  
+  return utils::mkSortedNode(kind::BITVECTOR_AND, children); 
+}
+
+template<> inline
+bool RewriteRule<FlattenAssocCommutNoDuplicates>::applies(TNode node) {
+  Kind kind = node.getKind();
+  if (kind != kind::BITVECTOR_OR &&
+      kind != kind::BITVECTOR_AND)
+    return false;
+  TNode::iterator child_it = node.begin();
+  for(; child_it != node.end(); ++child_it) {
+    if ((*child_it).getKind() == kind) {
+      return true;
+    }
+  }
+  return false;
+}
+  
+template<> inline
+Node RewriteRule<FlattenAssocCommutNoDuplicates>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<FlattenAssocCommut>(" << node << ")" << std::endl;
+  std::vector<Node> processingStack;
+  processingStack.push_back(node);
+  __gnu_cxx::hash_set<TNode, TNodeHashFunction> processed;
+  std::vector<Node> children;
+  Kind kind = node.getKind(); 
+  
+  while (! processingStack.empty()) {
+    TNode current = processingStack.back();
+    processingStack.pop_back();
+    if (processed.count(current))
+      continue;
+
+    processed.insert(current);
+    
+    // flatten expression
+    if (current.getKind() == kind) {
+      for (unsigned i = 0; i < current.getNumChildren(); ++i) {
+        processingStack.push_back(current[i]);
+      }
+    } else {
+      children.push_back(current); 
+    }
+  }
+  return utils::mkSortedNode(kind, children);
+}
+  
+  
+template<> inline
+bool RewriteRule<OrSimplify>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_OR);
+}
+
+template<> inline
+Node RewriteRule<OrSimplify>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<OrSimplify>(" << node << ")" << std::endl;
+
+  // this will remove duplicates
+  std::hash_map<TNode, Count, TNodeHashFunction> subterms;
+  unsigned size = utils::getSize(node);
+  BitVector constant(size, (unsigned)0); 
+  
+  for (unsigned i = 0; i < node.getNumChildren(); ++i) {
+    TNode current = node[i];
+    // simplify constants
+    if (current.getKind() == kind::CONST_BITVECTOR) {
+      BitVector bv = current.getConst<BitVector>();
+      constant = constant | bv;
+    } else {
+      if (current.getKind() == kind::BITVECTOR_NOT) {
+        insert(subterms, current[0], true);
+      } else {
+        insert(subterms, current, false);
+      }
+    }
+  }
+
+  std::vector<Node> children;
+  
+  if (constant == utils::mkBitVectorOnes(size)) {
+    return utils::mkOnes(size); 
+  }
+
+  if (constant != BitVector(size, (unsigned)0)) {
+    children.push_back(utils::mkConst(constant)); 
+  }
+  
+  std::hash_map<TNode, Count, TNodeHashFunction>::const_iterator it = subterms.begin();
+
+  for (; it != subterms.end(); ++it) {
+    if (it->second.pos > 0 && it->second.neg > 0) {
+      // if we have a or ~a 
+      return utils::mkOnes(size); 
+    } else {
+      // idempotence 
+      if (it->second.neg > 0) {
+        // if it only occured negated
+        children.push_back(utils::mkNode(kind::BITVECTOR_NOT, it->first));
+      } else {
+        // if it only occured positive
+        children.push_back(it->first); 
+      }
+    }
+  }
+
+  if (children.size() == 0) {
+    return utils::mkConst(BitVector(size, (unsigned)0)); 
+  }
+  return utils::mkSortedNode(kind::BITVECTOR_OR, children); 
+}
+
+template<> inline
+bool RewriteRule<XorSimplify>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_XOR);
+}
+
+template<> inline
+Node RewriteRule<XorSimplify>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<XorSimplify>(" << node << ")" << std::endl;
+
+
+  std::hash_map<TNode, Count, TNodeHashFunction> subterms;
+  unsigned size = utils::getSize(node);
+  BitVector constant; 
+  bool const_set = false; 
+
+  for (unsigned i = 0; i < node.getNumChildren(); ++i) {
+    TNode current = node[i];
+    // simplify constants
+    if (current.getKind() == kind::CONST_BITVECTOR) {
+      BitVector bv = current.getConst<BitVector>();
+      if (const_set) {
+        constant = constant ^ bv;
+      } else {
+        const_set = true; 
+        constant = bv;
+      }
+    } else {
+      // collect number of occurances of each term and its negation
+      if (current.getKind() == kind::BITVECTOR_NOT) {
+        insert(subterms, current[0], true);
+      } else {
+        insert(subterms, current, false);
+      }
+    }
+  }
+
+  std::vector<Node> children;
+
+  std::hash_map<TNode, Count, TNodeHashFunction>::const_iterator it = subterms.begin();
+  unsigned true_count = 0;
+  bool seen_false = false; 
+  for (; it != subterms.end(); ++it) {
+    unsigned pos = it->second.pos; // number of positive occurances
+    unsigned neg = it->second.neg; // number of negated occurances 
+
+    // remove duplicates using the following rules
+    // a xor a ==> false
+    // false xor false ==> false
+    seen_false = seen_false? seen_false : (pos > 1 || neg > 1);
+    // check what did not reduce
+    if (pos % 2 && neg % 2) {
+      // we have a xor ~a ==> true
+      ++true_count;
+    } else if (pos % 2) {
+      // we had a positive occurence left
+      children.push_back(it->first); 
+    } else if (neg % 2) {
+      // we had a negative occurence left
+      children.push_back(utils::mkNode(kind::BITVECTOR_NOT, it->first)); 
+    }
+    // otherwise both reduced to false
+  }
+
+  std::vector<BitVector> xorConst;
+  BitVector true_bv = utils::mkBitVectorOnes(size);
+  BitVector false_bv(size, (unsigned)0);
+  
+  if (true_count) {
+    // true xor ... xor true ==> true (odd)
+    //                       ==> false (even) 
+    xorConst.push_back(true_count % 2? true_bv : false_bv); 
+  }
+  if (seen_false) {
+    xorConst.push_back(false_bv); 
+  }
+  if(const_set) {
+    xorConst.push_back(constant); 
+  }
+
+  if (xorConst.size() > 0) {
+    BitVector result = xorConst[0];
+    for (unsigned i = 1; i < xorConst.size(); ++i) {
+      result = result ^ xorConst[i]; 
+    }
+    children.push_back(utils::mkConst(result)); 
+  }
+
+  Assert(children.size());
+  
+  return utils::mkSortedNode(kind::BITVECTOR_XOR, children); 
+}
+
+
+/** 
+ * BitwiseSlicing
+ * 
+ * (a bvand c) ==> (concat (bvand a[i0:j0] c0) ... (bvand a[in:jn] cn))
+ *  where c0,..., cn are maximally continuous substrings of 0 or 1 in the constant c 
+ *
+ * Note: this rule assumes AndSimplify has already been called on the node
+ */
+template<> inline
+bool RewriteRule<BitwiseSlicing>::applies(TNode node) {
+  if ((node.getKind() != kind::BITVECTOR_AND &&
+      node.getKind() != kind::BITVECTOR_OR &&
+      node.getKind() != kind::BITVECTOR_XOR) ||
+      utils::getSize(node) == 1)
+    return false; 
+  // find the first constant and return true if it's not only 1..1 or only 0..0
+  // (there could be more than one constant)
+  for (unsigned i = 0; i < node.getNumChildren(); ++i) {
+    if (node[i].getKind() == kind::CONST_BITVECTOR) {
+      BitVector constant = node[i].getConst<BitVector>();
+      // we do not apply the rule if the constant is all 0s or all 1s
+      if (constant == BitVector(utils::getSize(node), 0u)) 
+        return false; 
+      
+      for (unsigned i = 0; i < constant.getSize(); ++i) {
+        if (!constant.isBitSet(i)) 
+          return true; 
+      }
+      return false; 
+    }
+  }
+  return false; 
+}
+
+template<> inline
+Node RewriteRule<BitwiseSlicing>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<BitwiseSlicing>(" << node << ")" << std::endl;
+  // get the constant
+  bool found_constant = false ;
+  TNode constant;
+  std::vector<Node> other_children; 
+  for (unsigned i = 0; i < node.getNumChildren(); ++i) {
+    if (node[i].getKind() == kind::CONST_BITVECTOR && !found_constant) {
+      constant = node[i];
+      found_constant = true; 
+    } else {
+      other_children.push_back(node[i]); 
+    }
+  }
+  Assert (found_constant && other_children.size() == node.getNumChildren() - 1);
+
+  Node other = utils::mkNode(node.getKind(), other_children);
+  
+  BitVector bv_constant = constant.getConst<BitVector>();
+  std::vector<Node> concat_children; 
+  int start = bv_constant.getSize() - 1;
+  int end = start;
+  for (int i = end - 1; i >= 0; --i) {
+    if (bv_constant.isBitSet(i + 1) != bv_constant.isBitSet(i)) {
+      Node other_extract = utils::mkExtract(other, end, start);
+      Node const_extract = utils::mkExtract(constant, end, start);
+      Node bitwise_op = utils::mkNode(node.getKind(), const_extract, other_extract);
+      concat_children.push_back(bitwise_op);
+      start = end = i; 
+    } else {
+      start--; 
+    }
+    if (i == 0) {
+      Node other_extract = utils::mkExtract(other, end, 0);
+      Node const_extract = utils::mkExtract(constant, end, 0);
+      Node bitwise_op = utils::mkNode(node.getKind(), const_extract, other_extract);
+      concat_children.push_back(bitwise_op);
+    }
+
+  }
+  Node result = utils::mkNode(kind::BITVECTOR_CONCAT, concat_children);
+  Debug("bv-rewrite") << "    =>" << result << std::endl;
+  return result;
+}
+
+// template<> inline
+// bool RewriteRule<>::applies(TNode node) {
+//   return (node.getKind() == kind::BITVECTOR_CONCAT);
+// }
+
+// template<> inline
+// Node RewriteRule<>::apply(TNode node) {
+//   Debug("bv-rewrite") << "RewriteRule<>(" << node << ")" << std::endl;
+//   return resultNode;
+// }
+
+
+
+}
+}
+}
diff --git a/src/theory/bv/theory_bv_rewrite_rules_operator_elimination.h b/src/theory/bv/theory_bv_rewrite_rules_operator_elimination.h
new file mode 100644
index 0000000..052bc8c
--- /dev/null
+++ b/src/theory/bv/theory_bv_rewrite_rules_operator_elimination.h
@@ -0,0 +1,521 @@
+/*********************                                                        */
+/*! \file theory_bv_rewrite_rules_operator_elimination.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Clark Barrett, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "theory/bv/theory_bv_rewrite_rules.h"
+#include "theory/bv/theory_bv_utils.h"
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+template<>
+bool RewriteRule<UgtEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_UGT);
+}
+
+template<>
+Node RewriteRule<UgtEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<UgtEliminate>(" << node << ")" << std::endl;
+  TNode a = node[0];
+  TNode b = node[1];
+  Node result = utils::mkNode(kind::BITVECTOR_ULT, b, a);
+  return result;
+}
+
+
+template<>
+bool RewriteRule<UgeEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_UGE);
+}
+
+template<>
+Node RewriteRule<UgeEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<UgeEliminate>(" << node << ")" << std::endl;
+  TNode a = node[0];
+  TNode b = node[1];
+  Node result = utils::mkNode(kind::BITVECTOR_ULE, b, a);
+  return result;
+}
+
+
+template<>
+bool RewriteRule<SgtEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_SGT);
+}
+
+template<>
+Node RewriteRule<SgtEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<SgtEliminate>(" << node << ")" << std::endl;
+  TNode a = node[0];
+  TNode b = node[1];
+  Node result = utils::mkNode(kind::BITVECTOR_SLT, b, a);
+  return result;
+}
+
+
+template<>
+bool RewriteRule<SgeEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_SGE);
+}
+
+template<>
+Node RewriteRule<SgeEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<SgeEliminate>(" << node << ")" << std::endl;
+  TNode a = node[0];
+  TNode b = node[1];
+  Node result = utils::mkNode(kind::BITVECTOR_SLE, b, a);
+  return result;
+}
+
+template <>
+bool RewriteRule<SltEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_SLT); 
+}
+
+template <>
+Node RewriteRule<SltEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<SltEliminate>(" << node << ")" << std::endl;
+  
+  unsigned size = utils::getSize(node[0]);
+  Node pow_two = utils::mkConst(BitVector(size, Integer(1).multiplyByPow2(size - 1)));
+  Node a = utils::mkNode(kind::BITVECTOR_PLUS, node[0], pow_two);
+  Node b = utils::mkNode(kind::BITVECTOR_PLUS, node[1], pow_two);
+  
+  return utils::mkNode(kind::BITVECTOR_ULT, a, b); 
+  
+}
+
+template <>
+bool RewriteRule<SleEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_SLE); 
+}
+
+template <>
+Node RewriteRule<SleEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<SleEliminate>(" << node << ")" << std::endl;
+
+  TNode a = node[0];
+  TNode b = node[1];
+  Node b_slt_a = utils::mkNode(kind::BITVECTOR_SLT, b, a);
+  return utils::mkNode(kind::NOT, b_slt_a); 
+}
+
+template <>
+bool RewriteRule<UleEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_ULE); 
+}
+
+template <>
+Node RewriteRule<UleEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<UleEliminate>(" << node << ")" << std::endl;
+
+  TNode a = node[0];
+  TNode b = node[1];
+  Node b_ult_a = utils::mkNode(kind::BITVECTOR_ULT, b, a);
+  return utils::mkNode(kind::NOT, b_ult_a); 
+}
+
+
+template <>
+bool RewriteRule<CompEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_COMP); 
+}
+
+template <>
+Node RewriteRule<CompEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<CompEliminate>(" << node << ")" << std::endl;
+  Node comp = utils::mkNode(kind::EQUAL, node[0], node[1]);
+  Node one = utils::mkConst(1, 1);
+  Node zero = utils::mkConst(1, 0); 
+
+  return utils::mkNode(kind::ITE, comp, one, zero);
+}
+
+template <>
+bool RewriteRule<SubEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_SUB); 
+}
+
+template <>
+Node RewriteRule<SubEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<SubEliminate>(" << node << ")" << std::endl;
+  Node negb = utils::mkNode(kind::BITVECTOR_NEG, node[1]);
+  Node a = node[0];
+
+  return utils::mkNode(kind::BITVECTOR_PLUS, a, negb);
+}
+
+
+template<>
+bool RewriteRule<RepeatEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_REPEAT);
+}
+
+template<>
+Node RewriteRule<RepeatEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<RepeatEliminate>(" << node << ")" << std::endl;
+  TNode a = node[0];
+  unsigned amount = node.getOperator().getConst<BitVectorRepeat>().repeatAmount;
+  Assert(amount >= 1);
+  if(amount == 1) {
+    return a; 
+  }
+  NodeBuilder<> result(kind::BITVECTOR_CONCAT);
+  for(unsigned i = 0; i < amount; ++i) {
+    result << node[0]; 
+  }
+  Node resultNode = result; 
+  return resultNode;
+}
+
+template<>
+bool RewriteRule<RotateLeftEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_ROTATE_LEFT);
+}
+
+template<>
+Node RewriteRule<RotateLeftEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<RotateLeftEliminate>(" << node << ")" << std::endl;
+  TNode a = node[0];
+  unsigned amount = node.getOperator().getConst<BitVectorRotateLeft>().rotateLeftAmount;
+  amount = amount % utils::getSize(a); 
+  if (amount == 0) {
+    return a; 
+  }
+
+  Node left   = utils::mkExtract(a, utils::getSize(a)-1 - amount, 0);
+  Node right  = utils::mkExtract(a, utils::getSize(a) -1, utils::getSize(a) - amount);
+  Node result = utils::mkConcat(left, right);
+
+  return result;
+}
+
+template<>
+bool RewriteRule<RotateRightEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_ROTATE_RIGHT);
+}
+
+template<>
+Node RewriteRule<RotateRightEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<RotateRightEliminate>(" << node << ")" << std::endl;
+  TNode a = node[0];
+  unsigned amount = node.getOperator().getConst<BitVectorRotateRight>().rotateRightAmount;
+  amount = amount % utils::getSize(a); 
+  if (amount == 0) {
+    return a; 
+  }
+  
+  Node left  = utils::mkExtract(a, amount - 1, 0);
+  Node right = utils::mkExtract(a, utils::getSize(a)-1, amount);
+  Node result = utils::mkConcat(left, right);
+
+  return result;
+}
+
+template<>
+bool RewriteRule<BVToNatEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_TO_NAT);
+}
+
+template<>
+Node RewriteRule<BVToNatEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<BVToNatEliminate>(" << node << ")" << std::endl;
+
+  //if( node[0].isConst() ){
+    //TODO? direct computation instead of term construction+rewriting
+  //}
+
+  const unsigned size = utils::getSize(node[0]);
+  NodeManager* const nm = NodeManager::currentNM();
+  const Node z = nm->mkConst(Rational(0));
+  const Node bvone = nm->mkConst(BitVector(1u, 1u));
+
+  NodeBuilder<> result(kind::PLUS);
+  Integer i = 1;
+  for(unsigned bit = 0; bit < size; ++bit, i *= 2) {
+    Node cond = nm->mkNode(kind::EQUAL, nm->mkNode(nm->mkConst(BitVectorExtract(bit, bit)), node[0]), bvone);
+    result << nm->mkNode(kind::ITE, cond, nm->mkConst(Rational(i)), z);
+  }
+
+  return Node(result);
+}
+
+template<>
+bool RewriteRule<IntToBVEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::INT_TO_BITVECTOR);
+}
+
+template<>
+Node RewriteRule<IntToBVEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<IntToBVEliminate>(" << node << ")" << std::endl;
+
+  //if( node[0].isConst() ){
+    //TODO? direct computation instead of term construction+rewriting
+  //}
+
+  const unsigned size = node.getOperator().getConst<IntToBitVector>().size;
+  NodeManager* const nm = NodeManager::currentNM();
+  const Node bvzero = nm->mkConst(BitVector(1u, 0u));
+  const Node bvone = nm->mkConst(BitVector(1u, 1u));
+
+  std::vector<Node> v;
+  Integer i = 2;
+  while(v.size() < size) {
+    Node cond = nm->mkNode(kind::GEQ, nm->mkNode(kind::INTS_MODULUS_TOTAL, node[0], nm->mkConst(Rational(i))), nm->mkConst(Rational(i, 2)));
+    v.push_back(nm->mkNode(kind::ITE, cond, bvone, bvzero));
+    i *= 2;
+  }
+
+  NodeBuilder<> result(kind::BITVECTOR_CONCAT);
+  result.append(v.rbegin(), v.rend());
+  return Node(result);
+}
+
+template<>
+bool RewriteRule<NandEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_NAND &&
+          node.getNumChildren() == 2);
+}
+
+template<>
+Node RewriteRule<NandEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<NandEliminate>(" << node << ")" << std::endl;
+  TNode a = node[0];
+  TNode b = node[1]; 
+  Node andNode = utils::mkNode(kind::BITVECTOR_AND, a, b);
+  Node result = utils::mkNode(kind::BITVECTOR_NOT, andNode); 
+  return result;
+}
+
+template<>
+bool RewriteRule<NorEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_NOR &&
+          node.getNumChildren() == 2);
+}
+
+template<>
+Node RewriteRule<NorEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<NorEliminate>(" << node << ")" << std::endl;
+  TNode a = node[0];
+  TNode b = node[1]; 
+  Node orNode = utils::mkNode(kind::BITVECTOR_OR, a, b);
+  Node result = utils::mkNode(kind::BITVECTOR_NOT, orNode); 
+  return result;
+}
+
+template<>
+bool RewriteRule<XnorEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_XNOR &&
+          node.getNumChildren() == 2);
+}
+
+template<>
+Node RewriteRule<XnorEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<XnorEliminate>(" << node << ")" << std::endl;
+  TNode a = node[0];
+  TNode b = node[1]; 
+  Node xorNode = utils::mkNode(kind::BITVECTOR_XOR, a, b);
+  Node result = utils::mkNode(kind::BITVECTOR_NOT, xorNode);
+  return result;
+}
+
+
+template<>
+bool RewriteRule<SdivEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_SDIV);
+}
+
+template<>
+Node RewriteRule<SdivEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<SdivEliminate>(" << node << ")" << std::endl;
+
+  TNode a = node[0];
+  TNode b = node[1];
+  unsigned size = utils::getSize(a);
+  
+  Node one     = utils::mkConst(1, 1);
+  Node a_lt_0  = utils::mkNode(kind::EQUAL, utils::mkExtract(a, size-1, size-1), one);
+  Node b_lt_0  = utils::mkNode(kind::EQUAL, utils::mkExtract(b, size-1, size-1), one); 
+  Node abs_a   = utils::mkNode(kind::ITE, a_lt_0, utils::mkNode(kind::BITVECTOR_NEG, a), a);
+  Node abs_b   = utils::mkNode(kind::ITE, b_lt_0, utils::mkNode(kind::BITVECTOR_NEG, b), b);
+
+  Node a_udiv_b   = utils::mkNode(options::bitvectorDivByZeroConst() ? kind::BITVECTOR_UDIV_TOTAL : kind::BITVECTOR_UDIV, abs_a, abs_b);
+  Node neg_result = utils::mkNode(kind::BITVECTOR_NEG, a_udiv_b);
+  
+  Node condition = utils::mkNode(kind::XOR, a_lt_0, b_lt_0);
+  Node result    = utils::mkNode(kind::ITE, condition, neg_result, a_udiv_b);
+  
+  return result;
+}
+
+
+template<>
+bool RewriteRule<SremEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_SREM);
+}
+
+template<>
+Node RewriteRule<SremEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<SremEliminate>(" << node << ")" << std::endl;
+  TNode a = node[0];
+  TNode b = node[1];
+  unsigned size = utils::getSize(a);
+  
+  Node one     = utils::mkConst(1, 1);
+  Node a_lt_0  = utils::mkNode(kind::EQUAL, utils::mkExtract(a, size-1, size-1), one);
+  Node b_lt_0  = utils::mkNode(kind::EQUAL, utils::mkExtract(b, size-1, size-1), one); 
+  Node abs_a   = utils::mkNode(kind::ITE, a_lt_0, utils::mkNode(kind::BITVECTOR_NEG, a), a);
+  Node abs_b   = utils::mkNode(kind::ITE, b_lt_0, utils::mkNode(kind::BITVECTOR_NEG, b), b);
+
+  Node a_urem_b   = utils::mkNode( options::bitvectorDivByZeroConst() ? kind::BITVECTOR_UREM_TOTAL : kind::BITVECTOR_UREM, abs_a, abs_b);
+  Node neg_result = utils::mkNode(kind::BITVECTOR_NEG, a_urem_b);
+  
+  Node result    = utils::mkNode(kind::ITE, a_lt_0, neg_result, a_urem_b);
+
+  return result;
+}
+
+template<>
+bool RewriteRule<SmodEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_SMOD);
+}
+
+template<>
+Node RewriteRule<SmodEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<SmodEliminate>(" << node << ")" << std::endl;
+  TNode s = node[0];
+  TNode t = node[1];
+  unsigned size = utils::getSize(s);
+  
+  // (bvsmod s t) abbreviates
+  //     (let ((?msb_s ((_ extract |m-1| |m-1|) s))
+  //           (?msb_t ((_ extract |m-1| |m-1|) t)))
+  //       (let ((abs_s (ite (= ?msb_s #b0) s (bvneg s)))
+  //             (abs_t (ite (= ?msb_t #b0) t (bvneg t))))
+  //         (let ((u (bvurem abs_s abs_t)))
+  //           (ite (= u (_ bv0 m))
+  //                u
+  //           (ite (and (= ?msb_s #b0) (= ?msb_t #b0))
+  //                u
+  //           (ite (and (= ?msb_s #b1) (= ?msb_t #b0))
+  //                (bvadd (bvneg u) t)
+  //           (ite (and (= ?msb_s #b0) (= ?msb_t #b1))
+  //                (bvadd u t)
+  //                (bvneg u))))))))
+
+  Node msb_s = utils::mkExtract(s, size-1, size-1);
+  Node msb_t = utils::mkExtract(t, size-1, size-1);
+
+  Node bit1    = utils::mkConst(1, 1);
+  Node bit0    = utils::mkConst(1, 0);
+
+  Node abs_s = msb_s.eqNode(bit0).iteNode(s, utils::mkNode(kind::BITVECTOR_NEG, s));
+  Node abs_t = msb_t.eqNode(bit0).iteNode(t, utils::mkNode(kind::BITVECTOR_NEG, t));
+
+  Node u = utils::mkNode(kind::BITVECTOR_UREM, abs_s, abs_t);
+  Node neg_u = utils::mkNode(kind::BITVECTOR_NEG, u);
+
+  Node cond0 = u.eqNode(utils::mkConst(size, 0));
+  Node cond1 = msb_s.eqNode(bit0).andNode(msb_t.eqNode(bit0));
+  Node cond2 = msb_s.eqNode(bit1).andNode(msb_t.eqNode(bit0));
+  Node cond3 = msb_s.eqNode(bit0).andNode(msb_t.eqNode(bit1));
+
+  Node result = cond0.iteNode(u,
+                cond1.iteNode(u,
+                cond2.iteNode(utils::mkNode(kind::BITVECTOR_PLUS, neg_u, t),
+                cond3.iteNode(utils::mkNode(kind::BITVECTOR_PLUS, u, t), neg_u))));
+
+  return result;
+
+}
+
+
+template<>
+bool RewriteRule<ZeroExtendEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_ZERO_EXTEND); 
+}
+
+template<>
+Node RewriteRule<ZeroExtendEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<ZeroExtendEliminate>(" << node << ")" << std::endl;
+
+  TNode bv = node[0];
+  unsigned amount = node.getOperator().getConst<BitVectorZeroExtend>().zeroExtendAmount;
+  if (amount == 0) {
+    return node[0]; 
+  }
+  Node zero = utils::mkConst(amount, 0);
+  Node result = utils::mkConcat(zero, node[0]); 
+
+  return result;
+}
+
+template<>
+bool RewriteRule<SignExtendEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_SIGN_EXTEND); 
+}
+
+template<>
+Node RewriteRule<SignExtendEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<SignExtendEliminate>(" << node << ")" << std::endl;
+
+  unsigned amount = node.getOperator().getConst<BitVectorSignExtend>().signExtendAmount;
+  if(amount == 0) {
+    return node[0]; 
+  }
+  unsigned size = utils::getSize(node[0]); 
+  Node sign_bit = utils::mkExtract(node[0], size-1, size-1); 
+  Node extension = utils::mkConcat(sign_bit, amount);
+
+  return utils::mkConcat(extension, node[0]);
+}
+
+template<>
+bool RewriteRule<RedorEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_REDOR);
+}
+
+template<>
+Node RewriteRule<RedorEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<RedorEliminate>(" << node << ")" << std::endl;
+  TNode a = node[0];
+  unsigned size = utils::getSize(node[0]); 
+  Node result = NodeManager::currentNM()->mkNode(kind::EQUAL, a, utils::mkConst( size, 0 ) );
+  return result.negate();
+}
+
+template<>
+bool RewriteRule<RedandEliminate>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_REDAND);
+}
+
+template<>
+Node RewriteRule<RedandEliminate>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<RedandEliminate>(" << node << ")" << std::endl;
+  TNode a = node[0];
+  unsigned size = utils::getSize(node[0]); 
+  Node result = NodeManager::currentNM()->mkNode(kind::EQUAL, a, utils::mkOnes( size ) );
+  return result;
+}
+
+}
+}
+}
diff --git a/src/theory/bv/theory_bv_rewrite_rules_simplification.h b/src/theory/bv/theory_bv_rewrite_rules_simplification.h
new file mode 100644
index 0000000..8713804
--- /dev/null
+++ b/src/theory/bv/theory_bv_rewrite_rules_simplification.h
@@ -0,0 +1,1243 @@
+/*********************                                                        */
+/*! \file theory_bv_rewrite_rules_simplification.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Clark Barrett, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "theory/bv/theory_bv_rewrite_rules.h"
+#include "theory/bv/theory_bv_utils.h"
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+// FIXME: this rules subsume the constant evaluation ones
+
+
+/**
+ * ShlByConst
+ *
+ * Left Shift by constant amount 
+ */
+template<> inline
+bool RewriteRule<ShlByConst>::applies(TNode node) {
+  // if the shift amount is constant
+  return (node.getKind() == kind::BITVECTOR_SHL &&
+          node[1].getKind() == kind::CONST_BITVECTOR);
+}
+
+template<> inline
+Node RewriteRule<ShlByConst>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<ShlByConst>(" << node << ")" << std::endl;
+  Integer amount = node[1].getConst<BitVector>().toInteger();
+  if (amount == 0) {
+    return node[0]; 
+  }  
+  Node a = node[0]; 
+  uint32_t size = utils::getSize(a);
+  
+  
+  if (amount >= Integer(size)) {
+    // if we are shifting more than the length of the bitvector return 0
+    return utils::mkConst(BitVector(size, Integer(0)));
+  }
+  
+  // make sure we do not lose information casting
+  Assert(amount < Integer(1).multiplyByPow2(32));
+  
+  uint32_t uint32_amount = amount.toUnsignedInt();
+
+  Node left = utils::mkExtract(a, size - 1 - uint32_amount, 0);
+  Node right = utils::mkConst(BitVector(uint32_amount, Integer(0))); 
+  return utils::mkConcat(left, right); 
+}
+
+/**
+ * LshrByConst
+ *
+ * Right Logical Shift by constant amount 
+ */
+
+template<> inline
+bool RewriteRule<LshrByConst>::applies(TNode node) {
+  // if the shift amount is constant
+  return (node.getKind() == kind::BITVECTOR_LSHR &&
+          node[1].getKind() == kind::CONST_BITVECTOR);
+}
+
+template<> inline
+Node RewriteRule<LshrByConst>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<LshrByConst>(" << node << ")" << std::endl;
+  Integer amount = node[1].getConst<BitVector>().toInteger();
+  if (amount == 0) {
+    return node[0]; 
+  }  
+  
+  Node a = node[0]; 
+  uint32_t size = utils::getSize(a);
+  
+  
+  if (amount >= Integer(size)) {
+    // if we are shifting more than the length of the bitvector return 0
+    return utils::mkConst(BitVector(size, Integer(0)));
+  }
+  
+  // make sure we do not lose information casting
+  Assert(amount < Integer(1).multiplyByPow2(32));
+  
+  uint32_t uint32_amount = amount.toUnsignedInt();
+  Node right = utils::mkExtract(a, size - 1, uint32_amount);
+  Node left = utils::mkConst(BitVector(uint32_amount, Integer(0))); 
+  return utils::mkConcat(left, right); 
+}
+
+/**
+ * AshrByConst
+ *
+ * Right Arithmetic Shift by constant amount 
+ */
+
+template<> inline
+bool RewriteRule<AshrByConst>::applies(TNode node) {
+  // if the shift amount is constant
+  return (node.getKind() == kind::BITVECTOR_ASHR &&
+          node[1].getKind() == kind::CONST_BITVECTOR);
+}
+
+template<> inline
+Node RewriteRule<AshrByConst>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<AshrByConst>(" << node << ")" << std::endl;
+  Integer amount = node[1].getConst<BitVector>().toInteger();
+  if (amount == 0) {
+    return node[0]; 
+  }  
+
+  Node a = node[0]; 
+  uint32_t size = utils::getSize(a);
+  Node sign_bit = utils::mkExtract(a, size-1, size-1);
+  
+  if (amount >= Integer(size)) {
+    // if we are shifting more than the length of the bitvector return n repetitions
+    // of the first bit
+    return utils::mkConcat(sign_bit, size); 
+  }
+  
+  // make sure we do not lose information casting
+  Assert(amount < Integer(1).multiplyByPow2(32));
+
+  uint32_t uint32_amount = amount.toUnsignedInt();
+  if (uint32_amount == 0) {
+    return a; 
+  }
+  
+  Node left = utils::mkConcat(sign_bit, uint32_amount); 
+  Node right = utils::mkExtract(a, size - 1, uint32_amount);
+  return utils::mkConcat(left, right); 
+}
+
+/**
+ * BitwiseIdemp
+ *
+ * (a bvand a) ==> a
+ * (a bvor a)  ==> a
+ */
+
+template<> inline
+bool RewriteRule<BitwiseIdemp>::applies(TNode node) {
+  Unreachable();
+  return ((node.getKind() == kind::BITVECTOR_AND ||
+           node.getKind() == kind::BITVECTOR_OR) &&
+          node.getNumChildren() == 2 &&
+          node[0] == node[1]);
+}
+
+template<> inline
+Node RewriteRule<BitwiseIdemp>::apply(TNode node) {
+  Unreachable();
+  Debug("bv-rewrite") << "RewriteRule<BitwiseIdemp>(" << node << ")" << std::endl;
+  return node[0]; 
+}
+
+/**
+ * AndZero
+ * 
+ * (a bvand 0) ==> 0
+ */
+
+template<> inline
+bool RewriteRule<AndZero>::applies(TNode node) {
+  Unreachable();
+  unsigned size = utils::getSize(node); 
+  return (node.getKind() == kind::BITVECTOR_AND  &&
+          node.getNumChildren() == 2 &&
+          (node[0] == utils::mkConst(size, 0) ||
+           node[1] == utils::mkConst(size, 0)));
+}
+
+template<> inline
+Node RewriteRule<AndZero>::apply(TNode node) {
+  Unreachable();
+  Debug("bv-rewrite") << "RewriteRule<AndZero>(" << node << ")" << std::endl;
+  return utils::mkConst(utils::getSize(node), 0); 
+}
+
+/**
+ * AndOne
+ * 
+ * (a bvand 1) ==> a
+ */
+
+template<> inline
+bool RewriteRule<AndOne>::applies(TNode node) {
+  Unreachable();
+  unsigned size = utils::getSize(node);
+  Node ones = utils::mkOnes(size); 
+  return (node.getKind() == kind::BITVECTOR_AND  &&
+          node.getNumChildren() == 2 &&
+          (node[0] == ones ||
+           node[1] == ones));
+}
+
+template<> inline
+Node RewriteRule<AndOne>::apply(TNode node) {
+  Unreachable();
+  Debug("bv-rewrite") << "RewriteRule<AndOne>(" << node << ")" << std::endl;
+  unsigned size = utils::getSize(node);
+  
+  if (node[0] == utils::mkOnes(size)) {
+    return node[1]; 
+  } else {
+    Assert (node[1] == utils::mkOnes(size)); 
+    return node[0]; 
+  }
+}
+
+/**
+ * OrZero
+ * 
+ * (a bvor 0) ==> a
+ */
+
+template<> inline
+bool RewriteRule<OrZero>::applies(TNode node) {
+  Unreachable();
+  unsigned size = utils::getSize(node); 
+  return (node.getKind() == kind::BITVECTOR_OR  &&
+          node.getNumChildren() == 2 &&
+          (node[0] == utils::mkConst(size, 0) ||
+           node[1] == utils::mkConst(size, 0)));
+}
+
+template<> inline
+Node RewriteRule<OrZero>::apply(TNode node) {
+  Unreachable();
+  Debug("bv-rewrite") << "RewriteRule<OrZero>(" << node << ")" << std::endl;
+  
+  unsigned size = utils::getSize(node); 
+  if (node[0] == utils::mkConst(size, 0)) {
+    return node[1]; 
+  } else {
+    Assert(node[1] == utils::mkConst(size, 0));
+    return node[0]; 
+  }
+}
+
+/**
+ * OrOne
+ * 
+ * (a bvor 1) ==> 1
+ */
+
+template<> inline
+bool RewriteRule<OrOne>::applies(TNode node) {
+  Unreachable();
+  unsigned size = utils::getSize(node);
+  Node ones = utils::mkOnes(size); 
+  return (node.getKind() == kind::BITVECTOR_OR  &&
+          node.getNumChildren() == 2 &&
+          (node[0] == ones ||
+           node[1] == ones));
+}
+
+template<> inline
+Node RewriteRule<OrOne>::apply(TNode node) {
+  Unreachable();
+  Debug("bv-rewrite") << "RewriteRule<OrOne>(" << node << ")" << std::endl;
+  return utils::mkOnes(utils::getSize(node)); 
+}
+
+
+/**
+ * XorDuplicate
+ *
+ * (a bvxor a) ==> 0
+ */
+
+template<> inline
+bool RewriteRule<XorDuplicate>::applies(TNode node) {
+  Unreachable();
+  return (node.getKind() == kind::BITVECTOR_XOR &&
+          node.getNumChildren() == 2 &&
+          node[0] == node[1]);
+}
+
+template<> inline
+Node RewriteRule<XorDuplicate>::apply(TNode node) {
+  Unreachable();
+  Debug("bv-rewrite") << "RewriteRule<XorDuplicate>(" << node << ")" << std::endl;
+  return utils::mkConst(BitVector(utils::getSize(node), Integer(0))); 
+}
+
+/**
+ * XorOne
+ *
+ * (a bvxor 1) ==> ~a
+ */
+
+template<> inline
+bool RewriteRule<XorOne>::applies(TNode node) {
+  if (node.getKind() != kind::BITVECTOR_XOR) {
+    return false; 
+  }
+  Node ones = utils::mkOnes(utils::getSize(node));
+  for (unsigned i = 0; i < node.getNumChildren(); ++i) {
+    if (node[i] == ones) {
+      return true; 
+    }
+  }
+  return false; 
+}
+
+template<> inline
+Node RewriteRule<XorOne>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<XorOne>(" << node << ")" << std::endl;
+  Node ones = utils::mkOnes(utils::getSize(node)); 
+  std::vector<Node> children;
+  bool found_ones = false;
+  // XorSimplify should have been called before
+  for(unsigned i = 0; i < node.getNumChildren(); ++i) {
+    if (node[i] == ones) {
+      // make sure only ones occurs only once
+      found_ones = !found_ones;
+    } else {
+      children.push_back(node[i]); 
+    }
+  }
+
+  Node result = utils::mkNode(kind::BITVECTOR_XOR, children);
+  if (found_ones) {
+    result = utils::mkNode(kind::BITVECTOR_NOT, result);
+  }
+  return result;
+}
+
+
+/**
+ * XorZero
+ *
+ * (a bvxor 0) ==> a
+ */
+
+template<> inline
+bool RewriteRule<XorZero>::applies(TNode node) {
+  if (node.getKind() != kind::BITVECTOR_XOR) {
+    return false; 
+  }
+  Node zero = utils::mkConst(utils::getSize(node), 0);
+  for (unsigned i = 0; i < node.getNumChildren(); ++i) {
+    if (node[i] == zero) {
+      return true; 
+    }
+  }
+  return false; 
+}
+
+template<> inline
+Node RewriteRule<XorZero>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<XorZero>(" << node << ")" << std::endl;
+  std::vector<Node> children;
+  Node zero = utils::mkConst(utils::getSize(node), 0);
+    
+  // XorSimplify should have been called before
+  for(unsigned i = 0; i < node.getNumChildren(); ++i) {
+    if (node[i] != zero) {
+      children.push_back(node[i]); 
+    }
+  }
+  Node res = utils::mkNode(kind::BITVECTOR_XOR, children); 
+  return res;
+}
+
+
+/**
+ * BitwiseNotAnd
+ *
+ * (a bvand (~ a)) ==> 0
+ */
+
+template<> inline
+bool RewriteRule<BitwiseNotAnd>::applies(TNode node) {
+  Unreachable();
+  return (node.getKind() == kind::BITVECTOR_AND &&
+          node.getNumChildren() == 2 &&
+          ((node[0].getKind() == kind::BITVECTOR_NOT && node[0][0] == node[1]) ||
+           (node[1].getKind() == kind::BITVECTOR_NOT && node[1][0] == node[0]))); 
+}
+
+template<> inline
+Node RewriteRule<BitwiseNotAnd>::apply(TNode node) {
+  Unreachable();
+  Debug("bv-rewrite") << "RewriteRule<BitwiseNegAnd>(" << node << ")" << std::endl;
+  return utils::mkConst(BitVector(utils::getSize(node), Integer(0))); 
+}
+
+/**
+ * BitwiseNegOr
+ *
+ * (a bvor (~ a)) ==> 1
+ */
+
+template<> inline
+bool RewriteRule<BitwiseNotOr>::applies(TNode node) {
+  Unreachable();
+  return (node.getKind() == kind::BITVECTOR_OR &&
+          node.getNumChildren() == 2 &&
+          ((node[0].getKind() == kind::BITVECTOR_NOT && node[0][0] == node[1]) ||
+           (node[1].getKind() == kind::BITVECTOR_NOT && node[1][0] == node[0]))); 
+}
+
+template<> inline
+Node RewriteRule<BitwiseNotOr>::apply(TNode node) {
+  Unreachable();
+  Debug("bv-rewrite") << "RewriteRule<BitwiseNotOr>(" << node << ")" << std::endl;
+  uint32_t size = utils::getSize(node);
+  Integer ones = Integer(1).multiplyByPow2(size) - 1; 
+  return utils::mkConst(BitVector(size, ones)); 
+}
+
+/**
+ * XorNot
+ *
+ * ((~ a) bvxor (~ b)) ==> (a bvxor b)
+ */
+
+template<> inline
+bool RewriteRule<XorNot>::applies(TNode node) {
+  Unreachable();
+}
+
+template<> inline
+Node RewriteRule<XorNot>::apply(TNode node) {
+  Unreachable();
+  Debug("bv-rewrite") << "RewriteRule<XorNot>(" << node << ")" << std::endl;
+  Node a = node[0][0];
+  Node b = node[1][0]; 
+  return utils::mkNode(kind::BITVECTOR_XOR, a, b); 
+}
+
+/**
+ * NotXor
+ *
+ * ~(a bvxor b) ==> (~ a bvxor b)
+ */
+
+template<> inline
+bool RewriteRule<NotXor>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_NOT &&
+          node[0].getKind() == kind::BITVECTOR_XOR); 
+}
+
+template<> inline
+Node RewriteRule<NotXor>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<NotXor>(" << node << ")" << std::endl;
+  std::vector<Node> children;
+  TNode::iterator child_it = node[0].begin();
+  children.push_back(utils::mkNode(kind::BITVECTOR_NOT, *child_it));
+  for(++child_it; child_it != node[0].end(); ++child_it) {
+    children.push_back(*child_it);
+  }
+  return utils::mkSortedNode(kind::BITVECTOR_XOR, children);
+}
+
+/**
+ * NotIdemp
+ *
+ * ~ (~ a) ==> a
+ */
+
+template<> inline
+bool RewriteRule<NotIdemp>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_NOT &&
+          node[0].getKind() == kind::BITVECTOR_NOT); 
+}
+
+template<> inline
+Node RewriteRule<NotIdemp>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<NotIdemp>(" << node << ")" << std::endl;
+  return node[0][0];
+}
+
+
+
+/**
+ * LtSelf
+ *
+ * a < a ==> false
+ */
+
+template<> inline
+bool RewriteRule<LtSelf>::applies(TNode node) {
+  return ((node.getKind() == kind::BITVECTOR_ULT ||
+           node.getKind() == kind::BITVECTOR_SLT) &&
+          node[0] == node[1]);
+}
+
+template<> inline
+Node RewriteRule<LtSelf>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<LtSelf>(" << node << ")" << std::endl;
+  return utils::mkFalse(); 
+}
+
+/**
+ * LteSelf
+ *
+ * a <= a ==> true
+ */
+
+template<> inline
+bool RewriteRule<LteSelf>::applies(TNode node) {
+  return ((node.getKind() == kind::BITVECTOR_ULE ||
+           node.getKind() == kind::BITVECTOR_SLE) &&
+          node[0] == node[1]);
+}
+
+template<> inline
+Node RewriteRule<LteSelf>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<LteSelf>(" << node << ")" << std::endl;
+  return utils::mkTrue(); 
+}
+
+/**
+ * ZeroUlt
+ *
+ * 0 < a ==> a != 0
+ */
+
+template<> inline
+bool RewriteRule<ZeroUlt>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_ULT &&
+          node[0] == utils::mkConst(BitVector(utils::getSize(node[0]), Integer(0))));
+}
+
+template<> inline
+Node RewriteRule<ZeroUlt>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<ZeroUlt>(" << node << ")" << std::endl;
+  return utils::mkNode(kind::NOT, utils::mkNode(kind::EQUAL, node[0], node[1])); 
+}
+
+
+/**
+ * UltZero
+ *
+ * a < 0 ==> false
+ */
+
+template<> inline
+bool RewriteRule<UltZero>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_ULT &&
+          node[1] == utils::mkConst(BitVector(utils::getSize(node[0]), Integer(0))));
+}
+
+template<> inline
+Node RewriteRule<UltZero>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<UltZero>(" << node << ")" << std::endl;
+  return utils::mkFalse(); 
+}
+
+
+/**
+ * 
+ */
+template<> inline
+bool RewriteRule<UltOne>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_ULT &&
+          node[1] == utils::mkConst(BitVector(utils::getSize(node[0]), Integer(1))));
+}
+
+template<> inline
+Node RewriteRule<UltOne>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<UltOne>(" << node << ")" << std::endl;
+  return utils::mkNode(kind::EQUAL, node[0], utils::mkConst(BitVector(utils::getSize(node[0]), 0u))); 
+}
+
+/**
+ * 
+ */
+template<> inline
+bool RewriteRule<SltZero>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_SLT &&
+          node[1] == utils::mkConst(BitVector(utils::getSize(node[0]), Integer(0))));
+}
+
+template<> inline
+Node RewriteRule<SltZero>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<UltZero>(" << node << ")" << std::endl;
+  unsigned size = utils::getSize(node[0]); 
+  Node most_significant_bit = utils::mkExtract(node[0], size - 1, size - 1);
+  Node one = utils::mkConst(BitVector(1, 1u));
+  
+  return utils::mkNode(kind::EQUAL, most_significant_bit, one); 
+}
+
+
+/**
+ * UltSelf
+ *
+ * a < a ==> false
+ */
+
+template<> inline
+bool RewriteRule<UltSelf>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_ULT &&
+          node[1] == node[0]); 
+}
+
+template<> inline
+Node RewriteRule<UltSelf>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<UltSelf>(" << node << ")" << std::endl;
+  return utils::mkFalse(); 
+}
+
+
+/**
+ * UleZero
+ *
+ * a <= 0 ==> a = 0
+ */
+
+template<> inline
+bool RewriteRule<UleZero>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_ULE &&
+          node[1] == utils::mkConst(BitVector(utils::getSize(node[0]), Integer(0))));
+}
+
+template<> inline
+Node RewriteRule<UleZero>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<UleZero>(" << node << ")" << std::endl;
+  return utils::mkNode(kind::EQUAL, node[0], node[1]); 
+}
+
+/**
+ * UleSelf
+ *
+ * a <= a ==> true
+ */
+
+template<> inline
+bool RewriteRule<UleSelf>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_ULE &&
+          node[1] == node[0]); 
+}
+
+template<> inline
+Node RewriteRule<UleSelf>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<UleSelf>(" << node << ")" << std::endl;
+  return utils::mkTrue(); 
+}
+
+
+/**
+ * ZeroUle
+ *
+ * 0 <= a ==> true
+ */
+
+template<> inline
+bool RewriteRule<ZeroUle>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_ULE &&
+          node[0] == utils::mkConst(BitVector(utils::getSize(node[0]), Integer(0))));
+}
+
+template<> inline
+Node RewriteRule<ZeroUle>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<ZeroUle>(" << node << ")" << std::endl;
+  return utils::mkTrue(); 
+}
+
+/**
+ * UleMax
+ *
+ * a <= 11..1 ==> true
+ */
+
+template<> inline
+bool RewriteRule<UleMax>::applies(TNode node) {
+  if (node.getKind()!= kind::BITVECTOR_ULE) {
+    return false; 
+  }
+  uint32_t size = utils::getSize(node[0]); 
+  Integer ones = Integer(1).multiplyByPow2(size) -1; 
+  return (node.getKind() == kind::BITVECTOR_ULE &&
+          node[1] == utils::mkConst(BitVector(size, ones)));
+}
+
+template<> inline
+Node RewriteRule<UleMax>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<UleMax>(" << node << ")" << std::endl;
+  return utils::mkTrue(); 
+}
+
+/**
+ * NotUlt
+ *
+ * ~ ( a < b) ==> b <= a
+ */
+
+template<> inline
+bool RewriteRule<NotUlt>::applies(TNode node) {
+  return (node.getKind() == kind::NOT &&
+          node[0].getKind() == kind::BITVECTOR_ULT);
+}
+
+template<> inline
+Node RewriteRule<NotUlt>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<NotUlt>(" << node << ")" << std::endl;
+  Node ult = node[0];
+  Node a = ult[0];
+  Node b = ult[1]; 
+  return utils::mkNode(kind::BITVECTOR_ULE, b, a); 
+}
+
+/**
+ * NotUle
+ *
+ * ~ ( a <= b) ==> b < a
+ */
+
+template<> inline
+bool RewriteRule<NotUle>::applies(TNode node) {
+  return (node.getKind() == kind::NOT &&
+          node[0].getKind() == kind::BITVECTOR_ULE);
+}
+
+template<> inline
+Node RewriteRule<NotUle>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<NotUle>(" << node << ")" << std::endl;
+  Node ult = node[0];
+  Node a = ult[0];
+  Node b = ult[1]; 
+  return utils::mkNode(kind::BITVECTOR_ULT, b, a); 
+}
+
+/**
+ * MultPow2
+ *
+ * (a * 2^k) ==> a[n-k-1:0] 0_k
+ */
+
+template<> inline
+bool RewriteRule<MultPow2>::applies(TNode node) {
+  if (node.getKind() != kind::BITVECTOR_MULT)
+    return false;
+
+  for(unsigned i = 0; i < node.getNumChildren(); ++i) {
+    if (utils::isPow2Const(node[i])) {
+      return true; 
+    }
+  }
+  return false; 
+}
+
+template<> inline
+Node RewriteRule<MultPow2>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<MultPow2>(" << node << ")" << std::endl;
+
+  std::vector<Node>  children;
+  unsigned exponent = 0; 
+  for(unsigned i = 0; i < node.getNumChildren(); ++i) {
+    unsigned exp = utils::isPow2Const(node[i]);
+    if (exp) {
+      exponent += exp - 1;
+    }
+    else {
+      children.push_back(node[i]); 
+    }
+  }
+
+  Node a = utils::mkNode(kind::BITVECTOR_MULT, children); 
+
+  Node extract = utils::mkExtract(a, utils::getSize(node) - exponent - 1, 0);
+  Node zeros = utils::mkConst(exponent, 0);
+  return utils::mkConcat(extract, zeros); 
+}
+
+/**
+ * ExtractMultLeadingBit
+ *
+ * If the bit-vectors multiplied have enough leading zeros,
+ * we can determine that the top bits of the multiplication
+ * are zero and not compute them. Only apply for large bitwidths
+ * as this can interfere with other mult normalization rewrites such
+ * as flattening. 
+ */
+
+template<> inline
+bool RewriteRule<ExtractMultLeadingBit>::applies(TNode node) {
+  if (node.getKind() != kind::BITVECTOR_EXTRACT)
+    return false;
+  unsigned low = utils::getExtractLow(node);
+  node = node[0];
+
+  if (node.getKind() != kind::BITVECTOR_MULT ||
+      node.getNumChildren() != 2 ||
+      utils::getSize(node) <= 64)
+    return false;
+
+  if (node[0].getKind() != kind::BITVECTOR_CONCAT ||
+      node[1].getKind() != kind::BITVECTOR_CONCAT ||
+      !node[0][0].isConst() ||
+      !node[1][0].isConst())
+    return false;
+
+  unsigned n = utils::getSize(node);
+  // count number of leading zeroes
+  const Integer& int1 = node[0][0].getConst<BitVector>().toInteger();
+  const Integer& int2 = node[1][0].getConst<BitVector>().toInteger();
+  size_t int1_size = utils::getSize(node[0][0]);
+  size_t int2_size = utils::getSize(node[1][0]);
+  unsigned zeroes1 = int1.isZero() ? int1_size : int1_size - int1.length();
+  unsigned zeroes2 = int2.isZero() ? int2_size : int2_size - int2.length();
+
+  // first k bits are not zero in the result
+  unsigned k = 2 * n - (zeroes1 + zeroes2);
+
+  if (k > low)
+    return false; 
+
+  return true; 
+}
+
+template<> inline
+Node RewriteRule<ExtractMultLeadingBit>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<MultLeadingBit>(" << node << ")" << std::endl;
+
+  unsigned bitwidth = utils::getSize(node); 
+  
+  // node = node[0];
+  // const Integer& int1 = node[0][0].getConst<BitVector>().toInteger();
+  // const Integer& int2 = node[1][0].getConst<BitVector>().toInteger();
+  // unsigned zeroes1 = int1.isZero()? utils::getSize(node[0][0]) :
+  //                                   int1.length();
+
+  // unsigned zeroes2 = int2.isZero()? utils::getSize(node[1][0]) :
+  //                                   int2.length();
+  // all bits >= k in the multiplier will have to be 0
+  // unsigned n = utils::getSize(node); 
+  // unsigned k = 2 * n - (zeroes1 + zeroes2);
+  // Node extract1 = utils::mkExtract(node[0], k - 1, 0);
+  // Node extract2 = utils::mkExtract(node[1], k - 1, 0);
+  // Node k_zeroes = utils::mkConst(n - k, 0u);
+
+  // Node new_mult = utils::mkNode(kind::BITVECTOR_MULT, extract1, extract2);
+  // Node result = utils::mkExtract(utils::mkNode(kind::BITVECTOR_CONCAT, k_zeroes, new_mult),
+  //                                high, low); 
+ 
+  // since the extract is over multiplier bits that have to be 0, return 0
+  Node result = utils::mkConst(bitwidth, 0u); 
+  //  std::cout << "MultLeadingBit " << node <<" => " << result <<"\n";
+  return result;
+}
+
+/**
+ * NegIdemp
+ *
+ * -(-a) ==> a 
+ */
+
+template<> inline
+bool RewriteRule<NegIdemp>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_NEG &&
+          node[0].getKind() == kind::BITVECTOR_NEG);
+}
+
+template<> inline
+Node RewriteRule<NegIdemp>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<NegIdemp>(" << node << ")" << std::endl;
+  return node[0][0]; 
+}
+
+/**
+ * UdivPow2 
+ *
+ * (a udiv 2^k) ==> 0_k a[n-1: k]
+ */
+
+template<> inline
+bool RewriteRule<UdivPow2>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_UDIV_TOTAL &&
+          utils::isPow2Const(node[1]));
+}
+
+template<> inline
+Node RewriteRule<UdivPow2>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<UdivPow2>(" << node << ")" << std::endl;
+  Node a = node[0];
+  unsigned power = utils::isPow2Const(node[1]) -1;
+  if (power == 0) {
+    return a; 
+  }
+  Node extract = utils::mkExtract(a, utils::getSize(node) - 1, power);
+  Node zeros = utils::mkConst(power, 0);
+  
+  return utils::mkNode(kind::BITVECTOR_CONCAT, zeros, extract); 
+}
+
+/**
+ * UdivOne
+ *
+ * (a udiv 1) ==> a
+ */
+
+template<> inline
+bool RewriteRule<UdivOne>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_UDIV_TOTAL &&
+          node[1] == utils::mkConst(utils::getSize(node), 1));
+}
+
+template<> inline
+Node RewriteRule<UdivOne>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<UdivOne>(" << node << ")" << std::endl;
+  return node[0]; 
+}
+
+/**
+ * UdivSelf
+ *
+ * (a udiv a) ==> 1
+ */
+
+template<> inline
+bool RewriteRule<UdivSelf>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_UDIV_TOTAL &&
+          node[0] == node[1]);
+}
+
+template<> inline
+Node RewriteRule<UdivSelf>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<UdivSelf>(" << node << ")" << std::endl;
+  return utils::mkConst(utils::getSize(node), 1); 
+}
+
+/**
+ * UremPow2
+ *
+ * (a urem 2^k) ==> 0_(n-k) a[k-1:0]
+ */
+
+template<> inline
+bool RewriteRule<UremPow2>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_UREM_TOTAL &&
+          utils::isPow2Const(node[1]));
+}
+
+template<> inline
+Node RewriteRule<UremPow2>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<UremPow2>(" << node << ")" << std::endl;
+  TNode a = node[0];
+  unsigned power = utils::isPow2Const(node[1]) - 1;
+  if (power == 0) {
+    return utils::mkConst(utils::getSize(node), 0);
+  }
+  Node extract = utils::mkExtract(a, power - 1, 0);
+  Node zeros = utils::mkConst(utils::getSize(node) - power, 0);
+  return utils::mkNode(kind::BITVECTOR_CONCAT, zeros, extract); 
+}
+
+/**
+ * UremOne
+ *
+ * (a urem 1) ==> 0
+ */
+
+template<> inline
+bool RewriteRule<UremOne>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_UREM_TOTAL &&
+          node[1] == utils::mkConst(utils::getSize(node), 1));
+}
+
+template<> inline
+Node RewriteRule<UremOne>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<UremOne>(" << node << ")" << std::endl;
+  return utils::mkConst(utils::getSize(node), 0); 
+}
+
+/**
+ * UremSelf 
+ *
+ * (a urem a) ==> 0
+ */
+
+template<> inline
+bool RewriteRule<UremSelf>::applies(TNode node) {
+  return (node.getKind() == kind::BITVECTOR_UREM_TOTAL &&
+          node[0] == node[1]);
+}
+
+template<> inline
+Node RewriteRule<UremSelf>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<UremSelf>(" << node << ")" << std::endl;
+  return utils::mkConst(utils::getSize(node), 0); 
+}
+
+/**
+ * ShiftZero
+ *
+ * (0_k >> a) ==> 0_k 
+ */
+
+template<> inline
+bool RewriteRule<ShiftZero>::applies(TNode node) {
+  return ((node.getKind() == kind::BITVECTOR_SHL ||
+           node.getKind() == kind::BITVECTOR_LSHR ||
+           node.getKind() == kind::BITVECTOR_ASHR) &&
+          node[0] == utils::mkConst(utils::getSize(node), 0));
+}
+
+template<> inline
+Node RewriteRule<ShiftZero>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<ShiftZero>(" << node << ")" << std::endl;
+  return node[0]; 
+}
+
+/**
+ * BBPlusNeg
+ * 
+ * -a1 - a2 - ... - an + ak + ..  ==> - (a1 + a2 + ... + an) + ak
+ *
+ */
+
+template<> inline
+bool RewriteRule<BBPlusNeg>::applies(TNode node) {
+  if (node.getKind() != kind::BITVECTOR_PLUS) {
+    return false; 
+  }
+
+  unsigned neg_count = 0; 
+  for(unsigned i = 0; i < node.getNumChildren(); ++i) {
+    if (node[i].getKind()== kind::BITVECTOR_NEG) {
+      ++neg_count; 
+    }
+  }
+  return neg_count > 1;
+}
+
+template<> inline
+Node RewriteRule<BBPlusNeg>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<BBPlusNeg>(" << node << ")" << std::endl;
+
+  std::vector<Node> children;
+  unsigned neg_count = 0; 
+  for(unsigned i = 0; i < node.getNumChildren(); ++i) {
+    if (node[i].getKind() == kind::BITVECTOR_NEG) {
+      ++neg_count; 
+      children.push_back(utils::mkNode(kind::BITVECTOR_NOT, node[i][0]));
+    } else {
+      children.push_back(node[i]); 
+    }
+  }
+  Assert(neg_count!= 0); 
+  children.push_back(utils::mkConst(utils::getSize(node), neg_count)); 
+
+  return utils::mkNode(kind::BITVECTOR_PLUS, children); 
+}
+
+template<> inline
+bool RewriteRule<MergeSignExtend>::applies(TNode node) {
+  if (node.getKind() != kind::BITVECTOR_SIGN_EXTEND ||
+      (node[0].getKind() != kind::BITVECTOR_SIGN_EXTEND &&
+       node[0].getKind() != kind::BITVECTOR_ZERO_EXTEND))
+    return false;
+  return true;
+}
+
+template<> inline
+Node RewriteRule<MergeSignExtend>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<MergeSignExtend>(" << node << ")" << std::endl;
+  unsigned ammount1 = node.getOperator().getConst<BitVectorSignExtend>().signExtendAmount;
+
+  NodeManager* nm = NodeManager::currentNM();
+  if (node[0].getKind() == kind::BITVECTOR_ZERO_EXTEND) {
+    unsigned ammount2 = node[0].getOperator().getConst<BitVectorZeroExtend>().zeroExtendAmount;
+    if (ammount2 == 0) {
+      NodeBuilder<> nb(kind::BITVECTOR_SIGN_EXTEND);
+      Node op = nm->mkConst<BitVectorSignExtend>(BitVectorSignExtend(ammount1));
+      nb << op << node[0][0];
+      Node res = nb;
+      return res;
+    }
+    NodeBuilder<> nb(kind::BITVECTOR_ZERO_EXTEND);
+    Node op = nm->mkConst<BitVectorZeroExtend>(BitVectorZeroExtend(ammount1 + ammount2));
+    nb << op << node[0][0];
+    Node res = nb;
+    return res;
+  }
+  Assert (node[0].getKind() == kind::BITVECTOR_SIGN_EXTEND);
+  unsigned ammount2 = node[0].getOperator().getConst<BitVectorSignExtend>().signExtendAmount;
+  NodeBuilder<> nb(kind::BITVECTOR_SIGN_EXTEND);
+  Node op = nm->mkConst<BitVectorSignExtend>(BitVectorSignExtend(ammount1+ ammount2));
+  nb << op << node[0][0];
+  Node res = nb;
+  return res;
+}
+
+
+template<> inline
+bool RewriteRule<MultSlice>::applies(TNode node) {
+  if (node.getKind() != kind::BITVECTOR_MULT || node.getNumChildren() != 2) {
+    return false; 
+  }
+  return utils::getSize(node[0]) % 2 == 0;
+}
+
+/** 
+ * Expressses the multiplication in terms of the top and bottom
+ * slices of the terms. Note increases circuit size, but could
+ * lead to simplifications (use wisely!).
+ * 
+ * @param node 
+ * 
+ * @return 
+ */
+template<> inline
+Node RewriteRule<MultSlice>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<MultSlice>(" << node << ")" << std::endl;
+  unsigned bitwidth = utils::getSize(node[0]);
+  Node zeros = utils::mkConst(bitwidth/2, 0);
+  TNode a = node[0];
+  Node bottom_a = utils::mkExtract(a, bitwidth/2 - 1, 0);
+  Node top_a = utils::mkExtract(a, bitwidth -1, bitwidth/2); 
+  TNode b = node[1];
+  Node bottom_b = utils::mkExtract(b, bitwidth/2 - 1, 0);
+  Node top_b = utils::mkExtract(b, bitwidth -1, bitwidth/2); 
+
+  Node term1 = utils::mkNode(kind::BITVECTOR_MULT,
+                             utils::mkNode(kind::BITVECTOR_CONCAT, zeros, bottom_a),
+                             utils::mkNode(kind::BITVECTOR_CONCAT, zeros, bottom_b));
+
+  Node term2 = utils::mkNode(kind::BITVECTOR_CONCAT,
+                             utils::mkNode(kind::BITVECTOR_MULT, top_b, bottom_a),
+                             zeros);
+  Node term3 = utils::mkNode(kind::BITVECTOR_CONCAT,
+                             utils::mkNode(kind::BITVECTOR_MULT, top_a, bottom_b),
+                             zeros);
+  return utils::mkNode(kind::BITVECTOR_PLUS, term1, term2, term3); 
+}
+
+/** 
+ * x < y + 1 <=> (not y < x) and y != 1...1
+ * 
+ * @param node 
+ * 
+ * @return 
+ */
+template<> inline
+bool RewriteRule<UltPlusOne>::applies(TNode node) {
+  if (node.getKind() != kind::BITVECTOR_ULT) return false;
+  TNode x = node[0];
+  TNode y1 = node[1];
+  if (y1.getKind() != kind::BITVECTOR_PLUS) return false;
+  if (y1[0].getKind() != kind::CONST_BITVECTOR &&
+      y1[1].getKind() != kind::CONST_BITVECTOR)
+    return false;
+  
+  if (y1[0].getKind() == kind::CONST_BITVECTOR &&
+      y1[1].getKind() == kind::CONST_BITVECTOR)
+    return false;
+  
+  if (y1.getNumChildren() != 2)
+    return false; 
+
+  TNode one = y1[0].getKind() == kind::CONST_BITVECTOR ? y1[0] : y1[1];
+  if (one != utils::mkConst(utils::getSize(one), 1)) return false;
+  return true; 
+}
+
+template<> inline
+Node RewriteRule<UltPlusOne>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<UltPlusOne>(" << node << ")" << std::endl;
+  TNode x = node[0];
+  TNode y1 = node[1];
+  TNode y = y1[0].getKind() != kind::CONST_BITVECTOR ? y1[0] : y1[1];
+  unsigned size = utils::getSize(x); 
+  Node not_y_eq_1 = utils::mkNode(kind::NOT, utils::mkNode(kind::EQUAL, y, utils::mkOnes(size)));
+  Node not_y_lt_x = utils::mkNode(kind::NOT, utils::mkNode(kind::BITVECTOR_ULT, y, x));
+  return utils::mkNode(kind::AND, not_y_eq_1, not_y_lt_x);
+}
+
+/** 
+ * x ^(x-1) = 0 => 1 << sk
+ * WARNING: this is an **EQUISATISFIABLE** transformation!
+ * Only to be called on top level assertions. 
+ * 
+ * @param node 
+ * 
+ * @return 
+ */
+template<> inline
+bool RewriteRule<IsPowerOfTwo>::applies(TNode node) {
+  if (node.getKind()!= kind::EQUAL) return false;
+  if (node[0].getKind() != kind::BITVECTOR_AND &&
+      node[1].getKind() != kind::BITVECTOR_AND)
+    return false;
+  if (!utils::isZero(node[0]) &&
+      !utils::isZero(node[1]))
+    return false;
+
+  TNode t = !utils::isZero(node[0])? node[0]: node[1];
+  if (t.getNumChildren() != 2) return false; 
+  TNode a = t[0];
+  TNode b = t[1];
+  unsigned size = utils::getSize(t);
+  if(size < 2) return false;
+  Node diff = Rewriter::rewrite(utils::mkNode(kind::BITVECTOR_SUB, a, b));
+  return (diff.isConst() && (diff == utils::mkConst(size, 1u) || diff == utils::mkOnes(size)));
+}
+
+template<> inline
+Node RewriteRule<IsPowerOfTwo>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<IsPowerOfTwo>(" << node << ")" << std::endl;
+  TNode term = utils::isZero(node[0])? node[1] : node[0];
+  TNode a = term[0];
+  TNode b = term[1];
+  unsigned size = utils::getSize(term); 
+  Node diff = Rewriter::rewrite(utils::mkNode(kind::BITVECTOR_SUB, a, b));
+  Assert (diff.isConst());
+  TNode x = diff == utils::mkConst(size, 1u) ? a : b;
+  Node one = utils::mkConst(size, 1u);
+  Node sk = utils::mkVar(size);
+  Node sh = utils::mkNode(kind::BITVECTOR_SHL, one, sk);
+  Node x_eq_sh = utils::mkNode(kind::EQUAL, x, sh);
+  return x_eq_sh;
+}
+
+
+
+
+}
+}
+}
diff --git a/src/theory/bv/theory_bv_rewriter.cpp b/src/theory/bv/theory_bv_rewriter.cpp
new file mode 100644
index 0000000..e40612b
--- /dev/null
+++ b/src/theory/bv/theory_bv_rewriter.cpp
@@ -0,0 +1,722 @@
+/*********************                                                        */
+/*! \file theory_bv_rewriter.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Morgan Deters, Clark Barrett
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "options/bv_options.h"
+#include "theory/bv/theory_bv_rewrite_rules.h"
+#include "theory/bv/theory_bv_rewrite_rules_constant_evaluation.h"
+#include "theory/bv/theory_bv_rewrite_rules_core.h"
+#include "theory/bv/theory_bv_rewrite_rules_normalization.h"
+#include "theory/bv/theory_bv_rewrite_rules_operator_elimination.h"
+#include "theory/bv/theory_bv_rewrite_rules_simplification.h"
+#include "theory/bv/theory_bv_rewriter.h"
+#include "theory/theory.h"
+
+using namespace CVC4;
+using namespace CVC4::theory;
+using namespace CVC4::theory::bv;
+
+
+// CVC4_THREADLOCAL(AllRewriteRules*) TheoryBVRewriter::s_allRules = NULL;
+// CVC4_THREADLOCAL(TimerStat*) TheoryBVRewriter::d_rewriteTimer = NULL;
+RewriteFunction TheoryBVRewriter::d_rewriteTable[kind::LAST_KIND]; 
+void TheoryBVRewriter::init() {
+   // s_allRules = new AllRewriteRules;
+   // d_rewriteTimer = new TimerStat("theory::bv::rewriteTimer");
+   // smtStatisticsRegistry()->registerStat(d_rewriteTimer); 
+   initializeRewrites();
+
+}
+
+void TheoryBVRewriter::shutdown() {
+   // delete s_allRules;
+   // smtStatisticsRegistry()->unregisterStat(d_rewriteTimer); 
+   //delete d_rewriteTimer;
+}
+
+RewriteResponse TheoryBVRewriter::preRewrite(TNode node) {
+  RewriteResponse res = d_rewriteTable[node.getKind()](node, true);
+  if(res.node != node) {
+    Debug("bitvector-rewrite") << "TheoryBV::preRewrite    " << node << std::endl;
+    Debug("bitvector-rewrite") << "TheoryBV::preRewrite to " << res.node << std::endl;
+  }
+  return res; 
+}
+
+RewriteResponse TheoryBVRewriter::postRewrite(TNode node) {
+  RewriteResponse res = d_rewriteTable[node.getKind()](node, false);
+  if(res.node!= node) {
+    Debug("bitvector-rewrite") << "TheoryBV::postRewrite    " << node << std::endl;
+    Debug("bitvector-rewrite") << "TheoryBV::postRewrite to " << res.node << std::endl;
+  }
+  return res; 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteUlt(TNode node, bool prerewrite) {
+  // reduce common subexpressions on both sides
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<EvalUlt>,
+      // if both arguments are constants evaluates
+      RewriteRule<UltZero>
+      // a < 0 rewrites to false
+       >::apply(node);
+  
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteUltBv(TNode node, bool prerewrite) {
+  // reduce common subexpressions on both sides
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<EvalUltBv>
+       >::apply(node);
+  
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+}
+
+
+RewriteResponse TheoryBVRewriter::RewriteSlt(TNode node, bool prerewrite){
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule < EvalSlt >
+       >::apply(node);
+
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+
+  // Node resultNode = LinearRewriteStrategy
+  //   < RewriteRule < SltEliminate >
+  //     // a <_s b ==> a + 2^{n-1} <_u b + 2^{n-1}
+  //     >::apply(node);
+
+  // return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteSltBv(TNode node, bool prerewrite){
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule < EvalSltBv >
+       >::apply(node);
+
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteUle(TNode node, bool prerewrite){
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<EvalUle>,
+      RewriteRule<UleMax>,
+      RewriteRule<ZeroUle>,
+      RewriteRule<UleZero>,
+      RewriteRule<UleSelf>,
+      RewriteRule<UleEliminate>
+      >::apply(node);
+  return RewriteResponse(resultNode == node ? REWRITE_DONE : REWRITE_AGAIN, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteSle(TNode node, bool prerewrite){
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule <EvalSle>, 
+      RewriteRule <SleEliminate>
+      >::apply(node);
+  return RewriteResponse(resultNode == node? REWRITE_DONE : REWRITE_AGAIN, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteUgt(TNode node, bool prerewrite){
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<UgtEliminate>
+    >::apply(node);
+  
+  return RewriteResponse(REWRITE_AGAIN, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteSgt(TNode node, bool prerewrite){
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<SgtEliminate>
+      //RewriteRule<SltEliminate>
+      >::apply(node);
+  
+  return RewriteResponse(REWRITE_AGAIN, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteUge(TNode node, bool prerewrite){
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<UgeEliminate>
+    >::apply(node);
+  
+  return RewriteResponse(REWRITE_AGAIN, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteSge(TNode node, bool prerewrite){
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<SgeEliminate>
+      //      RewriteRule<SleEliminate>
+    >::apply(node);
+  
+  return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteITEBv(TNode node, bool prerewrite){
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule < EvalITEBv >
+       >::apply(node);
+
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteNot(TNode node, bool prerewrite){
+  Node resultNode = node;
+  
+  // // if(RewriteRule<NotXor>::applies(node)) {
+  // //   resultNode = RewriteRule<NotXor>::run<false>(node);
+  // //   return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+  // // }
+  resultNode = LinearRewriteStrategy
+    < RewriteRule<EvalNot>,
+      RewriteRule<NotIdemp>
+    >::apply(node);
+  
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteExtract(TNode node, bool prerewrite) {
+  Node resultNode = node;
+
+  if (RewriteRule<ExtractConcat>::applies(node)) {
+    resultNode = RewriteRule<ExtractConcat>::run<false>(node);
+    return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+  }
+
+  if (RewriteRule<ExtractSignExtend>::applies(node)) {
+    resultNode = RewriteRule<ExtractSignExtend>::run<false>(node);
+    return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+  }
+
+  if (RewriteRule<ExtractNot>::applies(node)) {
+    resultNode = RewriteRule<ExtractNot>::run<false>(node);
+    return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+  }
+
+  if (options::bvExtractArithRewrite()) {
+    if (RewriteRule<ExtractArith>::applies(node)) {
+      resultNode = RewriteRule<ExtractArith>::run<false>(node);
+      return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+    }
+  }
+
+  
+  resultNode = LinearRewriteStrategy
+    < RewriteRule<ExtractConstant>, 
+      RewriteRule<ExtractExtract>,
+      // We could get another extract over extract
+      RewriteRule<ExtractWhole>,
+      // At this point only Extract-Whole could apply
+      RewriteRule<ExtractMultLeadingBit>
+      >::apply(node);
+  
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+}
+
+
+RewriteResponse TheoryBVRewriter::RewriteConcat(TNode node, bool prerewrite) {
+  
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<ConcatFlatten>,
+      // Flatten the top level concatenations
+      RewriteRule<ConcatExtractMerge>,
+      // Merge the adjacent extracts on non-constants
+      RewriteRule<ConcatConstantMerge>,
+      // Merge the adjacent extracts on constants
+      ApplyRuleToChildren<kind::BITVECTOR_CONCAT, ExtractWhole>
+      >::apply(node);
+   return RewriteResponse(REWRITE_DONE, resultNode);  
+}
+
+RewriteResponse TheoryBVRewriter::RewriteAnd(TNode node, bool prerewrite) {
+  Node resultNode = node;
+  resultNode = LinearRewriteStrategy
+    < RewriteRule<FlattenAssocCommutNoDuplicates>,
+      RewriteRule<AndSimplify>
+      >::apply(node);
+
+  if (!prerewrite) {
+    resultNode = LinearRewriteStrategy
+      < RewriteRule<BitwiseSlicing>
+        >::apply(resultNode);
+  
+    if (resultNode.getKind() != node.getKind()) {
+      return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+    }
+  }
+  
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteOr(TNode node, bool prerewrite){
+  Node resultNode = node;
+  resultNode = LinearRewriteStrategy
+    < RewriteRule<FlattenAssocCommutNoDuplicates>,
+      RewriteRule<OrSimplify>
+      >::apply(node);
+
+  if (!prerewrite) {
+    resultNode = LinearRewriteStrategy
+      < RewriteRule<BitwiseSlicing>
+        >::apply(resultNode);
+    
+    if (resultNode.getKind() != node.getKind()) {
+      return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+    }
+  }
+  
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteXor(TNode node, bool prerewrite) {
+  Node resultNode = node;
+  resultNode = LinearRewriteStrategy
+    < RewriteRule<FlattenAssocCommut>, // flatten the expression 
+      RewriteRule<XorSimplify>,        // simplify duplicates and constants
+      RewriteRule<XorZero>,            // checks if the constant part is zero and eliminates it
+      RewriteRule<BitwiseSlicing>
+      >::apply(node);
+
+  if (!prerewrite) {
+    resultNode = LinearRewriteStrategy
+      < RewriteRule<XorOne>, 
+      RewriteRule <BitwiseSlicing>
+        >::apply(resultNode);
+    
+    if (resultNode.getKind() != node.getKind()) {
+      return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+    }
+  }
+
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteXnor(TNode node, bool prerewrite) {
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<XnorEliminate>
+    >::apply(node);
+  // need to rewrite two levels in 
+  return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteNand(TNode node, bool prerewrite) {
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<NandEliminate>
+      >::apply(node);
+  
+  return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteNor(TNode node, bool prerewrite) {
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<NorEliminate>
+    >::apply(node);
+  
+  return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteComp(TNode node, bool prerewrite) {
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule < EvalComp >
+       >::apply(node);
+
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteMult(TNode node, bool prerewrite) {
+  Node resultNode = node; 
+  resultNode = LinearRewriteStrategy
+    < RewriteRule<FlattenAssocCommut>, // flattens and sorts
+      RewriteRule<MultSimplify>,       // multiplies constant part and checks for 0
+      RewriteRule<MultPow2>            // replaces multiplication by a power of 2 by a shift
+    >::apply(resultNode);
+
+  // only apply if every subterm was already rewritten 
+  if (!prerewrite) {
+    resultNode = LinearRewriteStrategy
+      <   RewriteRule<MultDistribConst>
+        , RewriteRule<MultDistrib>
+        >::apply(resultNode);
+  }
+
+  if(resultNode == node) {
+    return RewriteResponse(REWRITE_DONE, resultNode); 
+  }
+  return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewritePlus(TNode node, bool prerewrite) {
+  Node resultNode = node;
+  if (prerewrite) {
+    resultNode = LinearRewriteStrategy
+      < RewriteRule<FlattenAssocCommut>
+        >::apply(node);
+    return RewriteResponse(REWRITE_DONE, resultNode);
+  }
+  
+  resultNode =  LinearRewriteStrategy
+    < RewriteRule<FlattenAssocCommut>,
+      RewriteRule<PlusCombineLikeTerms>
+      >::apply(node);
+
+  if (node != resultNode) {
+    return RewriteResponse(REWRITE_AGAIN_FULL, resultNode);
+  }
+  
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteSub(TNode node, bool prerewrite){
+  // return RewriteResponse(REWRITE_DONE, node); 
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<SubEliminate>
+    >::apply(node);
+  
+  return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteNeg(TNode node, bool prerewrite) {
+  Node resultNode = node; 
+  
+  resultNode = LinearRewriteStrategy
+    < RewriteRule<EvalNeg>,
+      RewriteRule<NegIdemp>,
+      RewriteRule<NegSub>
+      >::apply(node);
+  
+  if (RewriteRule<NegPlus>::applies(node)) {
+    resultNode = RewriteRule<NegPlus>::run<false>(node);
+    return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+  }
+  
+  if(!prerewrite) {
+    if (RewriteRule<NegMult>::applies(node)) {
+      resultNode = RewriteRule<NegMult>::run<false>(node);
+      return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+    }
+  }
+
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteUdiv(TNode node, bool prerewrite){
+  Node resultNode = node;
+
+  if(node[1].isConst() && node[1].getConst<BitVector>().getValue() != 0) {
+    return RewriteUdivTotal(node, prerewrite);
+  }
+
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteUrem(TNode node, bool prerewrite){
+  Node resultNode = node;
+
+  if(node[1].isConst() && node[1].getConst<BitVector>().getValue() != 0) {
+    return RewriteUremTotal(node, prerewrite);
+  }
+
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteUdivTotal(TNode node, bool prerewrite){
+  Node resultNode = node;
+
+  if(RewriteRule<UdivPow2>::applies(node)) {
+    resultNode = RewriteRule<UdivPow2>::run <false> (node);
+    return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+  }
+
+  resultNode = LinearRewriteStrategy
+    < RewriteRule<EvalUdiv>,
+      RewriteRule<UdivOne>,
+      RewriteRule<UdivSelf>
+      >::apply(node);
+
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteUremTotal(TNode node, bool prerewrite) {
+  Node resultNode = node;
+
+  if(RewriteRule<UremPow2>::applies(node)) {
+    resultNode = RewriteRule<UremPow2>::run <false> (node);
+    return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+  }
+
+  resultNode = LinearRewriteStrategy
+    < RewriteRule<EvalUrem>,
+      RewriteRule<UremOne>,
+      RewriteRule<UremSelf>
+      >::apply(node);
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteSmod(TNode node, bool prerewrite) {
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<SmodEliminate>
+      >::apply(node);
+
+  return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteSdiv(TNode node, bool prerewrite) {
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<SdivEliminate>
+      >::apply(node);
+
+  return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteSrem(TNode node, bool prerewrite) {
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<SremEliminate>
+       >::apply(node);
+  return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteShl(TNode node, bool prerewrite) {
+  Node resultNode = node; 
+  if(RewriteRule<ShlByConst>::applies(node)) {
+    resultNode = RewriteRule<ShlByConst>::run <false> (node);
+    return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+  }
+
+  resultNode = LinearRewriteStrategy
+    < RewriteRule<EvalShl>,
+      RewriteRule<ShiftZero> 
+      >::apply(node);
+
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteLshr(TNode node, bool prerewrite) {
+  Node resultNode = node; 
+  if(RewriteRule<LshrByConst>::applies(node)) {
+    resultNode = RewriteRule<LshrByConst>::run <false> (node);
+    return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+  }
+
+  resultNode = LinearRewriteStrategy
+    < RewriteRule<EvalLshr>,
+      RewriteRule<ShiftZero> 
+      >::apply(node);
+
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteAshr(TNode node, bool prerewrite) {
+  Node resultNode = node; 
+  if(RewriteRule<AshrByConst>::applies(node)) {
+    resultNode = RewriteRule<AshrByConst>::run <false> (node);
+    return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+  }
+
+  resultNode = LinearRewriteStrategy
+    < RewriteRule<EvalAshr>,
+      RewriteRule<ShiftZero>
+        >::apply(node);
+
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+}
+
+
+RewriteResponse TheoryBVRewriter::RewriteRepeat(TNode node, bool prerewrite) {
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<RepeatEliminate >
+    >::apply(node);
+  
+  return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteZeroExtend(TNode node, bool prerewrite){
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<ZeroExtendEliminate >
+    >::apply(node);
+  
+  return RewriteResponse(REWRITE_AGAIN, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteSignExtend(TNode node, bool prerewrite) {
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<MergeSignExtend>
+    , RewriteRule<EvalSignExtend>
+    >::apply(node);
+
+  
+  if (resultNode != node) {
+    return RewriteResponse(REWRITE_AGAIN, resultNode);
+  }
+  return RewriteResponse(REWRITE_DONE, resultNode); 
+}
+
+
+RewriteResponse TheoryBVRewriter::RewriteRotateRight(TNode node, bool prerewrite) {
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<RotateRightEliminate >
+    >::apply(node);
+  
+  return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteRotateLeft(TNode node, bool prerewrite){
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<RotateLeftEliminate >
+    >::apply(node);
+  
+  return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteRedor(TNode node, bool prerewrite){
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<RedorEliminate>
+    >::apply(node);
+  
+  return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteRedand(TNode node, bool prerewrite){
+  Node resultNode = LinearRewriteStrategy
+    < RewriteRule<RedandEliminate>
+    >::apply(node);
+  
+  return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
+}
+
+RewriteResponse TheoryBVRewriter::RewriteBVToNat(TNode node, bool prerewrite) {
+  //do not use lazy rewrite strategy if equality solver is disabled
+  if( node[0].isConst() || !options::bvLazyRewriteExtf() ){
+    Node resultNode = LinearRewriteStrategy
+      < RewriteRule<BVToNatEliminate>
+      >::apply(node);
+    return RewriteResponse(REWRITE_AGAIN_FULL, resultNode);
+  }else{
+    return RewriteResponse(REWRITE_DONE, node); 
+  }
+}
+
+RewriteResponse TheoryBVRewriter::RewriteIntToBV(TNode node, bool prerewrite) {
+  //do not use lazy rewrite strategy if equality solver is disabled
+  if( node[0].isConst() || !options::bvLazyRewriteExtf() ){
+    Node resultNode = LinearRewriteStrategy
+      < RewriteRule<IntToBVEliminate>
+      >::apply(node);
+
+    return RewriteResponse(REWRITE_AGAIN_FULL, resultNode);
+  }else{
+    return RewriteResponse(REWRITE_DONE, node); 
+  }
+}
+
+RewriteResponse TheoryBVRewriter::RewriteEqual(TNode node, bool prerewrite) {
+  if (prerewrite) {
+    Node resultNode = LinearRewriteStrategy
+      < RewriteRule<FailEq>,
+        RewriteRule<SimplifyEq>,
+        RewriteRule<ReflexivityEq>
+        >::apply(node);
+    return RewriteResponse(REWRITE_DONE, resultNode); 
+  }
+  else {
+    Node resultNode = LinearRewriteStrategy
+      < RewriteRule<FailEq>,
+        RewriteRule<SimplifyEq>,
+        RewriteRule<ReflexivityEq>
+        >::apply(node);
+
+    if(RewriteRule<SolveEq>::applies(resultNode)) {
+      resultNode = RewriteRule<SolveEq>::run<false>(resultNode);
+      if (resultNode != node) {
+        return RewriteResponse(REWRITE_AGAIN_FULL, resultNode);
+      }
+    }
+    return RewriteResponse(REWRITE_DONE, resultNode); 
+  }
+}
+
+
+RewriteResponse TheoryBVRewriter::IdentityRewrite(TNode node, bool prerewrite) {
+  return RewriteResponse(REWRITE_DONE, node); 
+}
+
+RewriteResponse TheoryBVRewriter::UndefinedRewrite(TNode node, bool prerewrite) {
+  Debug("bv-rewrite") << "TheoryBV::UndefinedRewrite for" << node;
+  Unimplemented(); 
+} 
+
+
+
+void TheoryBVRewriter::initializeRewrites() {
+
+  for(unsigned i = 0; i < kind::LAST_KIND; ++i) {
+    d_rewriteTable[i] = IdentityRewrite; //UndefinedRewrite;
+  }
+
+  d_rewriteTable [ kind::EQUAL ] = RewriteEqual;
+  d_rewriteTable [ kind::BITVECTOR_ULT ] = RewriteUlt;
+  d_rewriteTable [ kind::BITVECTOR_SLT ] = RewriteSlt;
+  d_rewriteTable [ kind::BITVECTOR_ULE ] = RewriteUle;
+  d_rewriteTable [ kind::BITVECTOR_SLE ] = RewriteSle;
+  d_rewriteTable [ kind::BITVECTOR_UGT ] = RewriteUgt;
+  d_rewriteTable [ kind::BITVECTOR_SGT ] = RewriteSgt;
+  d_rewriteTable [ kind::BITVECTOR_UGE ] = RewriteUge;
+  d_rewriteTable [ kind::BITVECTOR_SGE ] = RewriteSge;
+  d_rewriteTable [ kind::BITVECTOR_NOT ] = RewriteNot;
+  d_rewriteTable [ kind::BITVECTOR_CONCAT ] = RewriteConcat;
+  d_rewriteTable [ kind::BITVECTOR_AND ] = RewriteAnd;
+  d_rewriteTable [ kind::BITVECTOR_OR ] = RewriteOr;
+  d_rewriteTable [ kind::BITVECTOR_XOR] = RewriteXor;
+  d_rewriteTable [ kind::BITVECTOR_XNOR ] = RewriteXnor;
+  d_rewriteTable [ kind::BITVECTOR_NAND ] = RewriteNand;
+  d_rewriteTable [ kind::BITVECTOR_NOR ] = RewriteNor;
+  d_rewriteTable [ kind::BITVECTOR_COMP ] = RewriteComp;
+  d_rewriteTable [ kind::BITVECTOR_MULT ] = RewriteMult;
+  d_rewriteTable [ kind::BITVECTOR_PLUS ] = RewritePlus;
+  d_rewriteTable [ kind::BITVECTOR_SUB ] = RewriteSub;
+  d_rewriteTable [ kind::BITVECTOR_NEG ] = RewriteNeg;
+  d_rewriteTable [ kind::BITVECTOR_UDIV ] = RewriteUdiv;
+  d_rewriteTable [ kind::BITVECTOR_UREM ] = RewriteUrem;
+  d_rewriteTable [ kind::BITVECTOR_UDIV_TOTAL ] = RewriteUdivTotal;
+  d_rewriteTable [ kind::BITVECTOR_UREM_TOTAL ] = RewriteUremTotal;
+  d_rewriteTable [ kind::BITVECTOR_SMOD ] = RewriteSmod;
+  d_rewriteTable [ kind::BITVECTOR_SDIV ] = RewriteSdiv;
+  d_rewriteTable [ kind::BITVECTOR_SREM ] = RewriteSrem;
+  d_rewriteTable [ kind::BITVECTOR_SHL ] = RewriteShl;
+  d_rewriteTable [ kind::BITVECTOR_LSHR ] = RewriteLshr;
+  d_rewriteTable [ kind::BITVECTOR_ASHR ] = RewriteAshr;
+  d_rewriteTable [ kind::BITVECTOR_EXTRACT ] = RewriteExtract;
+  d_rewriteTable [ kind::BITVECTOR_REPEAT ] = RewriteRepeat;
+  d_rewriteTable [ kind::BITVECTOR_ZERO_EXTEND ] = RewriteZeroExtend;
+  d_rewriteTable [ kind::BITVECTOR_SIGN_EXTEND ] = RewriteSignExtend;
+  d_rewriteTable [ kind::BITVECTOR_ROTATE_RIGHT ] = RewriteRotateRight;
+  d_rewriteTable [ kind::BITVECTOR_ROTATE_LEFT ] = RewriteRotateLeft;
+  d_rewriteTable [ kind::BITVECTOR_REDOR ] = RewriteRedor;
+  d_rewriteTable [ kind::BITVECTOR_REDAND ] = RewriteRedand;
+  d_rewriteTable [ kind::BITVECTOR_ULTBV ] = RewriteUltBv;
+  d_rewriteTable [ kind::BITVECTOR_SLTBV ] = RewriteSltBv;
+  d_rewriteTable [ kind::BITVECTOR_ITE ] = RewriteITEBv;
+
+  d_rewriteTable [ kind::BITVECTOR_TO_NAT ] = RewriteBVToNat;
+  d_rewriteTable [ kind::INT_TO_BITVECTOR ] = RewriteIntToBV;
+}
+
+Node TheoryBVRewriter::eliminateBVSDiv(TNode node) {
+  Node result = bv::LinearRewriteStrategy <
+    bv::RewriteRule<bv::SremEliminate>,
+    bv::RewriteRule<bv::SdivEliminate>,
+    bv::RewriteRule<bv::SmodEliminate>
+    >::apply(node);
+  return result; 
+}
diff --git a/src/theory/bv/theory_bv_rewriter.h b/src/theory/bv/theory_bv_rewriter.h
new file mode 100644
index 0000000..8c3a206
--- /dev/null
+++ b/src/theory/bv/theory_bv_rewriter.h
@@ -0,0 +1,112 @@
+/*********************                                                        */
+/*! \file theory_bv_rewriter.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Morgan Deters, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__BV__THEORY_BV_REWRITER_H
+#define __CVC4__THEORY__BV__THEORY_BV_REWRITER_H
+
+#include "theory/rewriter.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+struct AllRewriteRules;
+typedef RewriteResponse (*RewriteFunction) (TNode, bool);
+
+class TheoryBVRewriter {
+
+  static RewriteFunction d_rewriteTable[kind::LAST_KIND];
+
+  static RewriteResponse IdentityRewrite(TNode node, bool prerewrite = false);
+  static RewriteResponse UndefinedRewrite(TNode node, bool prerewrite = false); 
+
+  static void initializeRewrites();
+  
+  static RewriteResponse RewriteEqual(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteUlt(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteUltBv(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteSlt(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteSltBv(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteUle(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteSle(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteUgt(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteSgt(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteUge(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteSge(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteITEBv(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteNot(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteConcat(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteAnd(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteOr(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteXnor(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteXor(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteNand(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteNor(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteComp(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteMult(TNode node, bool prerewrite = false);
+  static RewriteResponse RewritePlus(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteSub(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteNeg(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteUdiv(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteUrem(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteUdivTotal(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteUremTotal(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteSmod(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteSdiv(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteSrem(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteShl(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteLshr(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteAshr(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteExtract(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteRepeat(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteZeroExtend(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteSignExtend(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteRotateRight(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteRotateLeft(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteRedor(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteRedand(TNode node, bool prerewrite = false);
+
+  static RewriteResponse RewriteBVToNat(TNode node, bool prerewrite = false);
+  static RewriteResponse RewriteIntToBV(TNode node, bool prerewrite = false);
+
+public:
+
+  static RewriteResponse postRewrite(TNode node);
+
+  static RewriteResponse preRewrite(TNode node);
+  
+  static void init();
+  static void shutdown();
+  /** 
+   * Temporary hack for devision-by-zero until we refactor theory code from
+   * smt engine. 
+   * 
+   * @param node 
+   * 
+   * @return 
+   */
+  static Node eliminateBVSDiv(TNode node); 
+};/* class TheoryBVRewriter */
+
+}/* CVC4::theory::bv namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__BV__THEORY_BV_REWRITER_H */
diff --git a/src/theory/bv/theory_bv_type_rules.h b/src/theory/bv/theory_bv_type_rules.h
new file mode 100644
index 0000000..1c59ff8
--- /dev/null
+++ b/src/theory/bv/theory_bv_type_rules.h
@@ -0,0 +1,343 @@
+/*********************                                                        */
+/*! \file theory_bv_type_rules.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Liana Hadarean
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Bitvector theory typing rules
+ **
+ ** Bitvector theory typing rules.
+ **/
+
+#include "cvc4_private.h"
+
+#include <algorithm>
+
+#ifndef __CVC4__THEORY__BV__THEORY_BV_TYPE_RULES_H
+#define __CVC4__THEORY__BV__THEORY_BV_TYPE_RULES_H
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+class BitVectorConstantTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    if (check) {
+      if (n.getConst<BitVector>().getSize() == 0) {
+        throw TypeCheckingExceptionPrivate(n, "constant of size 0");
+      }
+    }
+    return nodeManager->mkBitVectorType(n.getConst<BitVector>().getSize());
+  }
+}; /* class BitVectorConstantTypeRule */
+
+class BitVectorBitOfTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    if (check) {
+      BitVectorBitOf info = n.getOperator().getConst<BitVectorBitOf>();
+      TypeNode t = n[0].getType(check);
+
+      if (!t.isBitVector()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting bit-vector term");
+      }
+      if (info.bitIndex >= t.getBitVectorSize()) {
+        throw TypeCheckingExceptionPrivate(
+            n, "extract index is larger than the bitvector size");
+      }
+    }
+    return nodeManager->booleanType();
+  }
+}; /* class BitVectorBitOfTypeRule */
+
+class BitVectorBVPredTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    if (check) {
+      TypeNode lhs = n[0].getType(check);
+      TypeNode rhs = n[1].getType(check);
+      if (!lhs.isBitVector() || lhs != rhs) {
+        throw TypeCheckingExceptionPrivate(
+            n, "expecting bit-vector terms of the same width");
+      }
+    }
+    return nodeManager->mkBitVectorType(1);
+  }
+}; /* class BitVectorBVPredTypeRule */
+
+class BitVectorITETypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    Assert(n.getNumChildren() == 3);
+    TypeNode thenpart = n[1].getType(check);
+    if (check) {
+      TypeNode cond = n[0].getType(check);
+      if (cond != nodeManager->mkBitVectorType(1)) {
+        throw TypeCheckingExceptionPrivate(
+            n, "expecting condition to be bit-vector term size 1");
+      }
+      TypeNode elsepart = n[2].getType(check);
+      if (thenpart != elsepart) {
+        throw TypeCheckingExceptionPrivate(
+            n, "expecting then and else parts to have same type");
+      }
+    }
+    return thenpart;
+  }
+}; /* class BitVectorITETypeRule */
+
+class BitVectorFixedWidthTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TNode::iterator it = n.begin();
+    TypeNode t = (*it).getType(check);
+    if (check) {
+      if (!t.isBitVector()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting bit-vector terms");
+      }
+      TNode::iterator it_end = n.end();
+      for (++it; it != it_end; ++it) {
+        if ((*it).getType(check) != t) {
+          throw TypeCheckingExceptionPrivate(
+              n, "expecting bit-vector terms of the same width");
+        }
+      }
+    }
+    return t;
+  }
+}; /* class BitVectorFixedWidthTypeRule */
+
+class BitVectorPredicateTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    if (check) {
+      TypeNode lhsType = n[0].getType(check);
+      if (!lhsType.isBitVector()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting bit-vector terms");
+      }
+      TypeNode rhsType = n[1].getType(check);
+      if (lhsType != rhsType) {
+        throw TypeCheckingExceptionPrivate(
+            n, "expecting bit-vector terms of the same width");
+      }
+    }
+    return nodeManager->booleanType();
+  }
+}; /* class BitVectorPredicateTypeRule */
+
+class BitVectorUnaryPredicateTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    if (check) {
+      TypeNode type = n[0].getType(check);
+      if (!type.isBitVector()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting bit-vector terms");
+      }
+    }
+    return nodeManager->booleanType();
+  }
+}; /* class BitVectorUnaryPredicateTypeRule */
+
+class BitVectorEagerAtomTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    if (check) {
+      TypeNode lhsType = n[0].getType(check);
+      if (!lhsType.isBoolean()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting boolean term");
+      }
+    }
+    return nodeManager->booleanType();
+  }
+}; /* class BitVectorEagerAtomTypeRule */
+
+class BitVectorAckermanizationUdivTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TypeNode lhsType = n[0].getType(check);
+    if (check) {
+      if (!lhsType.isBitVector()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting bit-vector term");
+      }
+    }
+    return lhsType;
+  }
+}; /* class BitVectorAckermanizationUdivTypeRule */
+
+class BitVectorAckermanizationUremTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TypeNode lhsType = n[0].getType(check);
+    if (check) {
+      if (!lhsType.isBitVector()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting bit-vector term");
+      }
+    }
+    return lhsType;
+  }
+}; /* class BitVectorAckermanizationUremTypeRule */
+
+class BitVectorExtractTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    BitVectorExtract extractInfo = n.getOperator().getConst<BitVectorExtract>();
+
+    // NOTE: We're throwing a type-checking exception here even
+    // if check is false, bc if we allow high < low the resulting
+    // type will be illegal
+    if (extractInfo.high < extractInfo.low) {
+      throw TypeCheckingExceptionPrivate(
+          n, "high extract index is smaller than the low extract index");
+    }
+
+    if (check) {
+      TypeNode t = n[0].getType(check);
+      if (!t.isBitVector()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting bit-vector term");
+      }
+      if (extractInfo.high >= t.getBitVectorSize()) {
+        throw TypeCheckingExceptionPrivate(
+            n, "high extract index is bigger than the size of the bit-vector");
+      }
+    }
+    return nodeManager->mkBitVectorType(extractInfo.high - extractInfo.low + 1);
+  }
+}; /* class BitVectorExtractTypeRule */
+
+class BitVectorExtractOpTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    Assert(n.getKind() == kind::BITVECTOR_EXTRACT_OP);
+    return nodeManager->builtinOperatorType();
+  }
+}; /* class BitVectorExtractOpTypeRule */
+
+class BitVectorConcatTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    unsigned size = 0;
+    TNode::iterator it = n.begin();
+    TNode::iterator it_end = n.end();
+    for (; it != it_end; ++it) {
+      TypeNode t = (*it).getType(check);
+      // NOTE: We're throwing a type-checking exception here even
+      // when check is false, bc if we don't check that the arguments
+      // are bit-vectors the result type will be inaccurate
+      if (!t.isBitVector()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting bit-vector terms");
+      }
+      size += t.getBitVectorSize();
+    }
+    return nodeManager->mkBitVectorType(size);
+  }
+}; /* class BitVectorConcatTypeRule */
+
+class BitVectorRepeatTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TypeNode t = n[0].getType(check);
+    // NOTE: We're throwing a type-checking exception here even
+    // when check is false, bc if the argument isn't a bit-vector
+    // the result type will be inaccurate
+    if (!t.isBitVector()) {
+      throw TypeCheckingExceptionPrivate(n, "expecting bit-vector term");
+    }
+    unsigned repeatAmount = n.getOperator().getConst<BitVectorRepeat>();
+    return nodeManager->mkBitVectorType(repeatAmount * t.getBitVectorSize());
+  }
+}; /* class BitVectorRepeatTypeRule */
+
+class BitVectorExtendTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TypeNode t = n[0].getType(check);
+    // NOTE: We're throwing a type-checking exception here even
+    // when check is false, bc if the argument isn't a bit-vector
+    // the result type will be inaccurate
+    if (!t.isBitVector()) {
+      throw TypeCheckingExceptionPrivate(n, "expecting bit-vector term");
+    }
+    unsigned extendAmount =
+        n.getKind() == kind::BITVECTOR_SIGN_EXTEND
+            ? (unsigned)n.getOperator().getConst<BitVectorSignExtend>()
+            : (unsigned)n.getOperator().getConst<BitVectorZeroExtend>();
+    return nodeManager->mkBitVectorType(extendAmount + t.getBitVectorSize());
+  }
+}; /* class BitVectorExtendTypeRule */
+
+class BitVectorConversionTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    if (n.getKind() == kind::BITVECTOR_TO_NAT) {
+      if (check && !n[0].getType(check).isBitVector()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting bit-vector term");
+      }
+      return nodeManager->integerType();
+    }
+
+    if (n.getKind() == kind::INT_TO_BITVECTOR) {
+      size_t bvSize = n.getOperator().getConst<IntToBitVector>();
+      if (check && !n[0].getType(check).isInteger()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting integer term");
+      }
+      return nodeManager->mkBitVectorType(bvSize);
+    }
+
+    InternalError("bv-conversion typerule invoked for non-bv-conversion kind");
+  }
+}; /* class BitVectorConversionTypeRule */
+
+class IntToBitVectorOpTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check) {
+
+    if(n.getKind() == kind::INT_TO_BITVECTOR_OP) {
+      size_t bvSize = n.getConst<IntToBitVector>();
+      return nodeManager->mkFunctionType( nodeManager->integerType(), nodeManager->mkBitVectorType(bvSize) );
+    }
+
+    InternalError("bv-conversion typerule invoked for non-bv-conversion kind");
+  }
+}; /* class IntToBitVectorOpTypeRule */
+
+class CardinalityComputer {
+ public:
+  inline static Cardinality computeCardinality(TypeNode type) {
+    Assert(type.getKind() == kind::BITVECTOR_TYPE);
+
+    unsigned size = type.getConst<BitVectorSize>();
+    if (size == 0) {
+      return 0;
+    }
+    Integer i = Integer(2).pow(size);
+    return i;
+  }
+}; /* class CardinalityComputer */
+
+} /* CVC4::theory::bv namespace */
+} /* CVC4::theory namespace */
+} /* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__BV__THEORY_BV_TYPE_RULES_H */
diff --git a/src/theory/bv/theory_bv_utils.cpp b/src/theory/bv/theory_bv_utils.cpp
new file mode 100644
index 0000000..f743e2d
--- /dev/null
+++ b/src/theory/bv/theory_bv_utils.cpp
@@ -0,0 +1,119 @@
+/*********************                                                        */
+/*! \file theory_bv_utils.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/bv/theory_bv_utils.h"
+#include "theory/theory.h"
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+namespace utils {
+
+bool isCoreTerm(TNode term, TNodeBoolMap& cache) {
+  term = term.getKind() == kind::NOT ? term[0] : term;
+  TNodeBoolMap::const_iterator it = cache.find(term);
+  if (it != cache.end()) {
+    return it->second;
+  }
+
+  if (term.getNumChildren() == 0)
+    return true;
+
+  if (theory::Theory::theoryOf(theory::THEORY_OF_TERM_BASED, term) == THEORY_BV) {
+    Kind k = term.getKind();
+    if (k != kind::CONST_BITVECTOR &&
+        k != kind::BITVECTOR_CONCAT &&
+        k != kind::BITVECTOR_EXTRACT &&
+        k != kind::EQUAL &&
+        term.getMetaKind() != kind::metakind::VARIABLE) {
+      cache[term] = false;
+      return false;
+    }
+  }
+
+  for (unsigned i = 0; i < term.getNumChildren(); ++i) {
+    if (!isCoreTerm(term[i], cache)) {
+      cache[term] = false;
+      return false;
+    }
+  }
+
+  cache[term]= true;
+  return true;
+}
+
+bool isEqualityTerm(TNode term, TNodeBoolMap& cache) {
+  term = term.getKind() == kind::NOT ? term[0] : term;
+  TNodeBoolMap::const_iterator it = cache.find(term);
+  if (it != cache.end()) {
+    return it->second;
+  }
+
+  if (term.getNumChildren() == 0)
+    return true;
+
+  if (theory::Theory::theoryOf(theory::THEORY_OF_TERM_BASED, term) == THEORY_BV) {
+    Kind k = term.getKind();
+    if (k != kind::CONST_BITVECTOR &&
+        k != kind::EQUAL &&
+        term.getMetaKind() != kind::metakind::VARIABLE) {
+      cache[term] = false;
+      return false;
+    }
+  }
+
+  for (unsigned i = 0; i < term.getNumChildren(); ++i) {
+    if (!isEqualityTerm(term[i], cache)) {
+      cache[term] = false;
+      return false;
+    }
+  }
+
+  cache[term]= true;
+  return true;
+}
+
+
+uint64_t numNodes(TNode node, NodeSet& seen) {
+  if (seen.find(node) != seen.end())
+    return 0;
+
+  uint64_t size = 1;
+  for (unsigned i = 0; i < node.getNumChildren(); ++i) {
+    size += numNodes(node[i], seen);
+  }
+  seen.insert(node);
+  return size;
+}
+
+void collectVariables(TNode node, NodeSet& vars) {
+  if (vars.find(node) != vars.end())
+    return;
+
+  if (Theory::isLeafOf(node, THEORY_BV) && node.getKind() != kind::CONST_BITVECTOR) {
+    vars.insert(node);
+    return;
+  }
+  for (unsigned i = 0; i < node.getNumChildren(); ++i) {
+    collectVariables(node[i], vars);
+  }
+}
+
+}/* CVC4::theory::bv::utils namespace */
+}/* CVC4::theory::bv namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/bv/theory_bv_utils.h b/src/theory/bv/theory_bv_utils.h
new file mode 100644
index 0000000..1210e84
--- /dev/null
+++ b/src/theory/bv/theory_bv_utils.h
@@ -0,0 +1,527 @@
+/*********************                                                        */
+/*! \file theory_bv_utils.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Dejan Jovanovic, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once 
+
+#include <set>
+#include <vector>
+#include <sstream>
+#include "expr/node_manager.h"
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+typedef __gnu_cxx::hash_set<Node, NodeHashFunction> NodeSet;
+typedef __gnu_cxx::hash_set<TNode, TNodeHashFunction> TNodeSet;
+
+namespace utils {
+
+inline uint32_t pow2(uint32_t power) {
+  Assert (power < 32); 
+  uint32_t one = 1;
+  return one << power; 
+}
+
+inline unsigned getExtractHigh(TNode node) {
+  return node.getOperator().getConst<BitVectorExtract>().high;
+}
+
+inline unsigned getExtractLow(TNode node) {
+  return node.getOperator().getConst<BitVectorExtract>().low;
+}
+
+inline unsigned getSize(TNode node) {
+  return node.getType().getBitVectorSize();
+}
+
+inline const bool getBit(TNode node, unsigned i) {
+  Assert (i < utils::getSize(node) && 
+          node.getKind() == kind::CONST_BITVECTOR);
+  Integer bit = node.getConst<BitVector>().extract(i, i).getValue();
+  return (bit == 1u); 
+}
+
+inline Node mkTrue() {
+  return NodeManager::currentNM()->mkConst<bool>(true);
+}
+
+inline Node mkFalse() {
+  return NodeManager::currentNM()->mkConst<bool>(false);
+}
+
+inline Node mkVar(unsigned size) {
+  NodeManager* nm =  NodeManager::currentNM();
+
+  return nm->mkSkolem("BVSKOLEM$$", nm->mkBitVectorType(size), "is a variable created by the theory of bitvectors"); 
+}
+
+
+inline Node mkSortedNode(Kind kind, std::vector<Node>& children) {
+  Assert (kind == kind::BITVECTOR_AND ||
+          kind == kind::BITVECTOR_OR ||
+          kind == kind::BITVECTOR_XOR);
+  Assert(children.size() > 0);
+  if (children.size() == 1) {
+    return children[0]; 
+  }
+  std::sort(children.begin(), children.end());
+  return NodeManager::currentNM()->mkNode(kind, children);
+}
+
+
+inline Node mkNode(Kind kind, std::vector<Node>& children) {
+  Assert (children.size() > 0); 
+  if (children.size() == 1) {
+    return children[0]; 
+  }
+  return NodeManager::currentNM()->mkNode(kind, children);
+}
+
+inline Node mkNode(Kind kind, TNode child) {
+  return NodeManager::currentNM()->mkNode(kind, child);
+}
+
+inline Node mkNode(Kind kind, TNode child1, TNode child2) {
+  return NodeManager::currentNM()->mkNode(kind, child1, child2);
+}
+
+
+inline Node mkSortedNode(Kind kind, TNode child1, TNode child2) {
+  Assert (kind == kind::BITVECTOR_AND ||
+          kind == kind::BITVECTOR_OR ||
+          kind == kind::BITVECTOR_XOR);
+  
+  if (child1 < child2) {
+    return NodeManager::currentNM()->mkNode(kind, child1, child2);
+  } else {
+    return NodeManager::currentNM()->mkNode(kind, child2, child1);
+  }
+}
+
+inline Node mkNode(Kind kind, TNode child1, TNode child2, TNode child3) {
+  return NodeManager::currentNM()->mkNode(kind, child1, child2, child3);
+}
+
+
+inline Node mkNot(Node child) {
+  return NodeManager::currentNM()->mkNode(kind::NOT, child);
+}
+
+inline Node mkAnd(TNode node1, TNode node2) {
+  return NodeManager::currentNM()->mkNode(kind::AND, node1, node2);
+}
+
+inline Node mkOr(TNode node1, TNode node2) {
+  return NodeManager::currentNM()->mkNode(kind::OR, node1, node2);
+}
+
+inline Node mkXor(TNode node1, TNode node2) {
+  return NodeManager::currentNM()->mkNode(kind::XOR, node1, node2);
+}
+
+
+inline Node mkSignExtend(TNode node, unsigned ammount) {
+  NodeManager* nm = NodeManager::currentNM(); 
+  Node signExtendOp = nm->mkConst<BitVectorSignExtend>(BitVectorSignExtend(ammount));
+  return nm->mkNode(signExtendOp, node); 
+}
+
+inline Node mkExtract(TNode node, unsigned high, unsigned low) {
+  Node extractOp = NodeManager::currentNM()->mkConst<BitVectorExtract>(BitVectorExtract(high, low));
+  std::vector<Node> children;
+  children.push_back(node);
+  return NodeManager::currentNM()->mkNode(extractOp, children);
+}
+
+inline Node mkBitOf(TNode node, unsigned index) {
+  Node bitOfOp = NodeManager::currentNM()->mkConst<BitVectorBitOf>(BitVectorBitOf(index));
+  return NodeManager::currentNM()->mkNode(bitOfOp, node); 
+                                        
+}
+
+
+inline Node mkConcat(TNode node, unsigned repeat) {
+  Assert (repeat); 
+  if(repeat == 1) {
+    return node; 
+  }
+  NodeBuilder<> result(kind::BITVECTOR_CONCAT);
+  for (unsigned i = 0; i < repeat; ++i) {
+    result << node; 
+  }
+  Node resultNode = result;
+  return resultNode;
+}
+
+inline Node mkConcat(std::vector<Node>& children) {
+  if (children.size() > 1)
+    return NodeManager::currentNM()->mkNode(kind::BITVECTOR_CONCAT, children);
+  else
+    return children[0];
+}
+
+inline Node mkConcat(TNode t1, TNode t2) {
+    return NodeManager::currentNM()->mkNode(kind::BITVECTOR_CONCAT, t1, t2);
+}
+
+
+inline BitVector mkBitVectorOnes(unsigned size) {
+  Assert(size > 0); 
+  return BitVector(1, Integer(1)).signExtend(size - 1); 
+}
+
+inline Node mkOnes(unsigned size) {
+  BitVector val = mkBitVectorOnes(size); 
+  return NodeManager::currentNM()->mkConst<BitVector>(val); 
+}
+
+inline Node mkConst(unsigned size, unsigned int value) {
+  BitVector val(size, value);
+  return NodeManager::currentNM()->mkConst<BitVector>(val); 
+}
+
+inline Node mkConst(const BitVector& value) {
+  return NodeManager::currentNM()->mkConst<BitVector>(value);
+}
+
+inline void getConjuncts(TNode node, std::set<TNode>& conjuncts) {
+  if (node.getKind() != kind::AND) {
+    conjuncts.insert(node);
+  } else {
+    for (unsigned i = 0; i < node.getNumChildren(); ++ i) {
+      getConjuncts(node[i], conjuncts);
+    }
+  }
+}
+
+inline void getConjuncts(std::vector<TNode>& nodes, std::set<TNode>& conjuncts) {
+  for (unsigned i = 0, i_end = nodes.size(); i < i_end; ++ i) {
+    getConjuncts(nodes[i], conjuncts);
+  }
+}
+
+inline Node mkConjunction(const std::set<TNode> nodes) {
+  std::set<TNode> expandedNodes;
+
+  std::set<TNode>::const_iterator it = nodes.begin();
+  std::set<TNode>::const_iterator it_end = nodes.end();
+  while (it != it_end) {
+    TNode current = *it;
+    if (current != mkTrue()) {
+      Assert(current.getKind() == kind::EQUAL || (current.getKind() == kind::NOT && current[0].getKind() == kind::EQUAL));
+      expandedNodes.insert(current);
+    }
+    ++ it;
+  }
+
+  Assert(expandedNodes.size() > 0);
+  if (expandedNodes.size() == 1) {
+    return *expandedNodes.begin();
+  }
+
+  NodeBuilder<> conjunction(kind::AND);
+
+  it = expandedNodes.begin();
+  it_end = expandedNodes.end();
+  while (it != it_end) {
+    conjunction << *it;
+    ++ it;
+  }
+
+  return conjunction;
+}
+
+inline unsigned isPow2Const(TNode node) {
+  if (node.getKind() != kind::CONST_BITVECTOR) {
+    return false; 
+  }
+
+  BitVector bv = node.getConst<BitVector>();
+  return bv.isPow2(); 
+}
+
+inline Node mkOr(const std::vector<Node>& nodes) {
+  std::set<TNode> all;
+  all.insert(nodes.begin(), nodes.end());
+
+  if (all.size() == 0) {
+    return mkTrue(); 
+  }
+  
+  if (all.size() == 1) {
+    // All the same, or just one
+    return nodes[0];
+  }
+  
+
+  NodeBuilder<> disjunction(kind::OR);
+  std::set<TNode>::const_iterator it = all.begin();
+  std::set<TNode>::const_iterator it_end = all.end();
+  while (it != it_end) {
+    disjunction << *it;
+    ++ it;
+  }
+
+  return disjunction; 
+}/* mkOr() */
+
+                 
+inline Node mkAnd(const std::vector<TNode>& conjunctions) {
+  std::set<TNode> all;
+  all.insert(conjunctions.begin(), conjunctions.end());
+
+  if (all.size() == 0) {
+    return mkTrue(); 
+  }
+  
+  if (all.size() == 1) {
+    // All the same, or just one
+    return conjunctions[0];
+  }
+  
+
+  NodeBuilder<> conjunction(kind::AND);
+  std::set<TNode>::const_iterator it = all.begin();
+  std::set<TNode>::const_iterator it_end = all.end();
+  while (it != it_end) {
+    conjunction << *it;
+    ++ it;
+  }
+
+  return conjunction;
+}/* mkAnd() */
+
+inline Node mkAnd(const std::vector<Node>& conjunctions) {
+  std::set<TNode> all;
+  all.insert(conjunctions.begin(), conjunctions.end());
+
+  if (all.size() == 0) {
+    return mkTrue(); 
+  }
+  
+  if (all.size() == 1) {
+    // All the same, or just one
+    return conjunctions[0];
+  }
+  
+
+  NodeBuilder<> conjunction(kind::AND);
+  std::set<TNode>::const_iterator it = all.begin();
+  std::set<TNode>::const_iterator it_end = all.end();
+  while (it != it_end) {
+    conjunction << *it;
+    ++ it;
+  }
+
+  return conjunction;
+}/* mkAnd() */
+
+inline bool isZero(TNode node) {
+  if (!node.isConst()) return false; 
+  return node == utils::mkConst(utils::getSize(node), 0u); 
+}
+
+inline Node flattenAnd(std::vector<TNode>& queue) {
+  TNodeSet nodes;
+  while(!queue.empty()) {
+    TNode current = queue.back();
+    queue.pop_back();
+    if (current.getKind() ==  kind::AND) {
+      for (unsigned i = 0; i < current.getNumChildren(); ++i) {
+        if (nodes.count(current[i]) == 0) {
+          queue.push_back(current[i]);
+        }
+      }
+    } else {
+      nodes.insert(current); 
+    }
+  }
+  std::vector<TNode> children; 
+  for (TNodeSet::const_iterator it = nodes.begin(); it!= nodes.end(); ++it) {
+    children.push_back(*it); 
+  }
+  return mkAnd(children); 
+}
+
+
+// need a better name, this is not technically a ground term 
+inline bool isBVGroundTerm(TNode node) {
+  if (node.getNumChildren() == 0) {
+    return node.isConst(); 
+  }
+  
+  for (size_t i = 0; i < node.getNumChildren(); ++i) {
+    if(! node[i].isConst()) {
+      return false;
+    }
+  }
+  return true;
+}
+
+inline bool isBVPredicate(TNode node) {
+  if (node.getKind() == kind::EQUAL ||
+      node.getKind() == kind::BITVECTOR_ULT ||
+      node.getKind() == kind::BITVECTOR_SLT ||
+      node.getKind() == kind::BITVECTOR_UGT ||
+      node.getKind() == kind::BITVECTOR_UGE ||
+      node.getKind() == kind::BITVECTOR_SGT ||
+      node.getKind() == kind::BITVECTOR_SGE ||
+      node.getKind() == kind::BITVECTOR_ULE || 
+      node.getKind() == kind::BITVECTOR_SLE ||
+      node.getKind() == kind::BITVECTOR_REDOR ||
+      node.getKind() == kind::BITVECTOR_REDAND ||
+      ( node.getKind() == kind::NOT && (node[0].getKind() == kind::EQUAL ||
+                                        node[0].getKind() == kind::BITVECTOR_ULT ||
+                                        node[0].getKind() == kind::BITVECTOR_SLT ||
+                                        node[0].getKind() == kind::BITVECTOR_UGT ||
+                                        node[0].getKind() == kind::BITVECTOR_UGE ||
+                                        node[0].getKind() == kind::BITVECTOR_SGT ||
+                                        node[0].getKind() == kind::BITVECTOR_SGE ||
+                                        node[0].getKind() == kind::BITVECTOR_ULE || 
+                                        node[0].getKind() == kind::BITVECTOR_SLE ||
+                                        node[0].getKind() == kind::BITVECTOR_REDOR ||
+                                        node[0].getKind() == kind::BITVECTOR_REDAND)))
+    {
+      return true; 
+    }
+  else
+    {
+      return false; 
+    }
+}
+
+inline Node mkConjunction(const std::vector<TNode>& nodes) {
+  std::vector<TNode> expandedNodes;
+
+  std::vector<TNode>::const_iterator it = nodes.begin();
+  std::vector<TNode>::const_iterator it_end = nodes.end();
+  while (it != it_end) {
+    TNode current = *it;
+
+    if (current != mkTrue()) {
+      Assert(isBVPredicate(current));
+      expandedNodes.push_back(current);
+    }
+    ++ it;
+  }
+
+  if (expandedNodes.size() == 0) {
+    return mkTrue();
+  }
+
+  if (expandedNodes.size() == 1) {
+    return *expandedNodes.begin();
+  }
+
+  NodeBuilder<> conjunction(kind::AND);
+
+  it = expandedNodes.begin();
+  it_end = expandedNodes.end();
+  while (it != it_end) {
+    conjunction << *it;
+    ++ it;
+  }
+
+  return conjunction;
+}
+
+
+
+// Turn a set into a string
+inline std::string setToString(const std::set<TNode>& nodeSet) {
+  std::stringstream out;
+  out << "[";
+  std::set<TNode>::const_iterator it = nodeSet.begin();
+  std::set<TNode>::const_iterator it_end = nodeSet.end();
+  bool first = true;
+  while (it != it_end) {
+    if (!first) {
+      out << ",";
+    }
+    first = false;
+    out << *it;
+    ++ it;
+  }
+  out << "]";
+  return out.str();
+}
+
+// Turn a vector into a string
+inline std::string vectorToString(const std::vector<Node>& nodes) {
+  std::stringstream out;
+  out << "[";
+  for (unsigned i = 0; i < nodes.size(); ++ i) {
+    if (i > 0) {
+      out << ",";
+    }
+    out << nodes[i];
+  }
+  out << "]";
+  return out.str();
+}
+
+// FIXME: dumb code 
+inline void intersect(const std::vector<uint32_t>& v1,
+                      const std::vector<uint32_t>& v2,
+                      std::vector<uint32_t>& intersection) {
+  for (unsigned i = 0; i < v1.size(); ++i) {
+    bool found = false;
+    for (unsigned j = 0; j < v2.size(); ++j) {
+      if (v2[j] == v1[i]) {
+        found = true;
+        break;
+      }
+    }
+    if (found) {
+      intersection.push_back(v1[i]); 
+    }
+  }
+}
+
+template <class T>
+inline T gcd(T a, T b) {
+  while (b != 0) {
+    T t = b;
+    b = a % t;
+    a = t;
+  }
+  return a;
+}
+
+typedef __gnu_cxx::hash_map<TNode, bool, TNodeHashFunction> TNodeBoolMap;
+
+bool isCoreTerm(TNode term, TNodeBoolMap& cache);
+bool isEqualityTerm(TNode term, TNodeBoolMap& cache);
+typedef __gnu_cxx::hash_set<Node, NodeHashFunction> NodeSet;
+
+uint64_t numNodes(TNode node, NodeSet& seen);
+
+void collectVariables(TNode node, NodeSet& vars);
+
+// is bitblast atom
+inline bool isBitblastAtom( Node lit ) {
+  TNode atom = lit.getKind()==kind::NOT ? lit[0] : lit;
+  return atom.getKind()!=kind::EQUAL || atom[0].getType().isBitVector();
+}
+
+}
+}
+}
+}
diff --git a/src/theory/bv/type_enumerator.h b/src/theory/bv/type_enumerator.h
new file mode 100644
index 0000000..39f1e87
--- /dev/null
+++ b/src/theory/bv/type_enumerator.h
@@ -0,0 +1,66 @@
+/*********************                                                        */
+/*! \file type_enumerator.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An enumerator for bitvectors
+ **
+ ** An enumerator for bitvectors.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__BV__TYPE_ENUMERATOR_H
+#define __CVC4__THEORY__BV__TYPE_ENUMERATOR_H
+
+#include "expr/kind.h"
+#include "expr/type_node.h"
+#include "theory/type_enumerator.h"
+#include "util/bitvector.h"
+#include "util/integer.h"
+
+namespace CVC4 {
+namespace theory {
+namespace bv {
+
+class BitVectorEnumerator : public TypeEnumeratorBase<BitVectorEnumerator> {
+  size_t d_size;
+  Integer d_bits;
+
+public:
+
+  BitVectorEnumerator(TypeNode type, TypeEnumeratorProperties * tep = NULL) throw(AssertionException) :
+    TypeEnumeratorBase<BitVectorEnumerator>(type),
+    d_size(type.getBitVectorSize()),
+    d_bits(0) {
+  }
+
+  Node operator*() throw(NoMoreValuesException) {
+    if(d_bits != d_bits.modByPow2(d_size)) {
+      throw NoMoreValuesException(getType());
+    }
+    return NodeManager::currentNM()->mkConst(BitVector(d_size, d_bits));
+  }
+
+  BitVectorEnumerator& operator++() throw() {
+    d_bits += 1;
+    return *this;
+  }
+
+  bool isFinished() throw() {
+    return d_bits != d_bits.modByPow2(d_size);
+  }
+
+};/* BitVectorEnumerator */
+
+}/* CVC4::theory::bv namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__BV__TYPE_ENUMERATOR_H */
diff --git a/src/theory/datatypes/datatypes_rewriter.h b/src/theory/datatypes/datatypes_rewriter.h
new file mode 100644
index 0000000..0d58233
--- /dev/null
+++ b/src/theory/datatypes/datatypes_rewriter.h
@@ -0,0 +1,634 @@
+/*********************                                                        */
+/*! \file datatypes_rewriter.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Rewriter for the theory of inductive datatypes
+ **
+ ** Rewriter for the theory of inductive datatypes.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__DATATYPES__DATATYPES_REWRITER_H
+#define __CVC4__THEORY__DATATYPES__DATATYPES_REWRITER_H
+
+#include "expr/node_manager_attributes.h"
+#include "options/datatypes_options.h"
+#include "theory/rewriter.h"
+#include "theory/type_enumerator.h"
+
+namespace CVC4 {
+namespace theory {
+namespace datatypes {
+
+class DatatypesRewriter {
+
+public:
+
+  static RewriteResponse postRewrite(TNode in) {
+    Trace("datatypes-rewrite-debug") << "post-rewriting " << in << std::endl;
+
+    if(in.getKind() == kind::APPLY_CONSTRUCTOR ){
+      Type t = in.getType().toType();
+      DatatypeType dt = DatatypeType(t);
+      //check for parametric datatype constructors
+      // to ensure a normal form, all parameteric datatype constructors must have a type ascription
+      if( dt.isParametric() ){
+        if( in.getOperator().getKind()!=kind::APPLY_TYPE_ASCRIPTION ){
+          Trace("datatypes-rewrite-debug") << "Ascribing type to parametric datatype constructor " << in << std::endl;
+          Node op = in.getOperator();
+          //get the constructor object
+          const DatatypeConstructor& dtc = Datatype::datatypeOf(op.toExpr())[Datatype::indexOf(op.toExpr())];
+          //create ascribed constructor type
+          Node tc = NodeManager::currentNM()->mkConst(AscriptionType(dtc.getSpecializedConstructorType(t)));
+          Node op_new = NodeManager::currentNM()->mkNode( kind::APPLY_TYPE_ASCRIPTION, tc, op );
+          //make new node
+          std::vector< Node > children;
+          children.push_back( op_new );
+          children.insert( children.end(), in.begin(), in.end() );
+          Node inr = NodeManager::currentNM()->mkNode( kind::APPLY_CONSTRUCTOR, children );
+          Trace("datatypes-rewrite-debug") << "Created " << inr << std::endl;
+          return RewriteResponse(REWRITE_DONE, inr);
+        }
+      }
+      if( in.isConst() ){
+        Trace("datatypes-rewrite-debug") << "Normalizing constant " << in << std::endl;
+        Node inn = normalizeConstant( in );
+        //constant may be a subterm of another constant, so cannot assume that this will succeed for codatatypes
+        //Assert( !inn.isNull() );
+        if( !inn.isNull() && inn!=in ){
+          Trace("datatypes-rewrite") << "Normalized constant " << in << " -> " << inn << std::endl;
+          return RewriteResponse(REWRITE_DONE, inn);
+        }else{
+          return RewriteResponse(REWRITE_DONE, in);
+        }
+      }
+    }
+
+    if(in.getKind() == kind::APPLY_TESTER) {
+      if(in[0].getKind() == kind::APPLY_CONSTRUCTOR) {
+        bool result = Datatype::indexOf(in.getOperator().toExpr()) == Datatype::indexOf(in[0].getOperator().toExpr());
+        Trace("datatypes-rewrite") << "DatatypesRewriter::postRewrite: "
+                                   << "Rewrite trivial tester " << in
+                                   << " " << result << std::endl;
+        return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(result));
+      } else {
+        const Datatype& dt = DatatypeType(in[0].getType().toType()).getDatatype();
+        if(dt.getNumConstructors() == 1) {
+          // only one constructor, so it must be
+          Trace("datatypes-rewrite") << "DatatypesRewriter::postRewrite: "
+                                     << "only one ctor for " << dt.getName()
+                                     << " and that is " << dt[0].getName()
+                                     << std::endl;
+          return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(true));
+        }
+        //TODO : else if( dt.getNumConstructors()==2 && Datatype::indexOf(in.getOperator())==1 ){
+        else if( !options::dtUseTesters() ){
+          unsigned tindex = Datatype::indexOf(in.getOperator().toExpr());
+          Trace("datatypes-rewrite-debug") << "Convert " << in << " to equality " << in[0] << " " << tindex << std::endl;
+          Node neq = mkTester( in[0], tindex, dt );
+          Assert( neq!=in );
+          Trace("datatypes-rewrite") << "DatatypesRewriter::postRewrite: Rewrite tester " << in << " to " << neq << std::endl;
+          return RewriteResponse(REWRITE_AGAIN_FULL, neq);
+        }
+      }
+    }
+    if(in.getKind() == kind::APPLY_SELECTOR_TOTAL && in[0].getKind() == kind::APPLY_CONSTRUCTOR) {
+      // Have to be careful not to rewrite well-typed expressions
+      // where the selector doesn't match the constructor,
+      // e.g. "pred(zero)".
+      TNode selector = in.getOperator();
+      TNode constructor = in[0].getOperator();
+      Expr selectorExpr = selector.toExpr();
+      Expr constructorExpr = constructor.toExpr();
+      size_t selectorIndex = Datatype::indexOf(selectorExpr);
+      size_t constructorIndex = Datatype::indexOf(constructorExpr);
+      const Datatype& dt = Datatype::datatypeOf(constructorExpr);
+      const DatatypeConstructor& c = dt[constructorIndex];
+      if(c.getNumArgs() > selectorIndex && c[selectorIndex].getSelector() == selectorExpr) {
+        if( dt.isCodatatype() && in[0][selectorIndex].isConst() ){
+          //must replace all debruijn indices with self  
+          Node sub = replaceDebruijn( in[0][selectorIndex], in[0], in[0].getType(), 0 );
+          Trace("datatypes-rewrite") << "DatatypesRewriter::postRewrite: "
+                                     << "Rewrite trivial codatatype selector " << in << " to " << sub << std::endl;
+          if( sub!=in ){
+            return RewriteResponse(REWRITE_AGAIN_FULL, sub );
+          }
+        }else{
+          Trace("datatypes-rewrite") << "DatatypesRewriter::postRewrite: "
+                                   << "Rewrite trivial selector " << in << std::endl;
+          return RewriteResponse(REWRITE_DONE, in[0][selectorIndex]);
+        }
+      }else{
+        //typically should not be called
+        TypeNode tn = in.getType();
+        Node gt;
+        bool useTe = true;
+        //if( !tn.isSort() ){
+        //  useTe = false;
+        //}
+        if( tn.isDatatype() ){
+          const Datatype& dta = ((DatatypeType)(tn).toType()).getDatatype();
+          useTe = !dta.isCodatatype();
+        }
+        if( useTe ){
+          TypeEnumerator te(tn);
+          gt = *te;
+        }else{
+          gt = tn.mkGroundTerm();
+        }
+        if( !gt.isNull() ){
+          //Assert( gtt.isDatatype() || gtt.isParametricDatatype() );
+          if( tn.isDatatype() && !tn.isInstantiatedDatatype() ){
+            gt = NodeManager::currentNM()->mkNode(kind::APPLY_TYPE_ASCRIPTION,
+                                                  NodeManager::currentNM()->mkConst(AscriptionType(tn.toType())), gt);
+          }
+          Trace("datatypes-rewrite") << "DatatypesRewriter::postRewrite: "
+                                     << "Rewrite trivial selector " << in
+                                     << " to distinguished ground term "
+                                     << gt << std::endl;
+          return RewriteResponse(REWRITE_DONE,gt );
+        }
+      }
+    }
+    if(in.getKind() == kind::DT_SIZE ){
+      if( in[0].getKind()==kind::APPLY_CONSTRUCTOR ){
+        std::vector< Node > children;
+        for( unsigned i=0; i<in[0].getNumChildren(); i++ ){
+          if( in[0][i].getType().isDatatype() ){
+            children.push_back( NodeManager::currentNM()->mkNode( kind::DT_SIZE, in[0][i] ) );
+          }
+        }
+        Node res;
+        if( !children.empty() ){
+          children.push_back( NodeManager::currentNM()->mkConst( Rational(1) ) );
+          res = children.size()==1 ? children[0] : NodeManager::currentNM()->mkNode( kind::PLUS, children );
+        }else{
+          res = NodeManager::currentNM()->mkConst( Rational(0) );
+        }
+        Trace("datatypes-rewrite") << "DatatypesRewriter::postRewrite: rewrite size " << in << " to " << res << std::endl;
+        return RewriteResponse(REWRITE_AGAIN_FULL, res );
+      }
+    }else if(in.getKind() == kind::DT_HEIGHT_BOUND ){
+      if( in[0].getKind()==kind::APPLY_CONSTRUCTOR ){
+        std::vector< Node > children;
+        Node res;
+        Rational r = in[1].getConst<Rational>();
+        Rational rmo = Rational( r-Rational(1) );
+        for( unsigned i=0; i<in[0].getNumChildren(); i++ ){
+          if( in[0][i].getType().isDatatype() ){
+            if( r.isZero() ){
+              res = NodeManager::currentNM()->mkConst(false);
+              break;
+            }else{
+              children.push_back( NodeManager::currentNM()->mkNode( kind::DT_HEIGHT_BOUND, in[0][i], NodeManager::currentNM()->mkConst(rmo) ) );
+            }
+          }
+        }
+        if( res.isNull() ){
+          res = children.size()==0 ? NodeManager::currentNM()->mkConst(true) : ( children.size()==1 ? children[0] : NodeManager::currentNM()->mkNode( kind::AND, children ) );
+        }
+        Trace("datatypes-rewrite") << "DatatypesRewriter::postRewrite: rewrite height " << in << " to " << res << std::endl;
+        return RewriteResponse(REWRITE_AGAIN_FULL, res );
+      }
+    }
+
+    if(in.getKind() == kind::EQUAL ) {
+      if(in[0] == in[1]) {
+        return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(true));
+      }else{
+        std::vector< Node > rew;
+        if( checkClash(in[0], in[1], rew) ){
+          Trace("datatypes-rewrite") << "Rewrite clashing equality " << in << " to false" << std::endl;
+          return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(false));
+        //}else if( rew.size()==1 && rew[0]!=in ){
+        //  Trace("datatypes-rewrite") << "Rewrite equality " << in << " to " << rew[0] << std::endl;
+        //  return RewriteResponse(REWRITE_AGAIN_FULL, rew[0] );
+        }else if( in[1]<in[0] ){
+          Node ins = NodeManager::currentNM()->mkNode(in.getKind(), in[1], in[0]);
+          Trace("datatypes-rewrite") << "Swap equality " << in << " to " << ins << std::endl;
+          return RewriteResponse(REWRITE_DONE, ins);
+        }else{
+          Trace("datatypes-rewrite-debug") << "Did not rewrite equality " << in << " " << in[0].getKind() << " " << in[1].getKind() << std::endl;
+        }
+      }
+    }
+
+    return RewriteResponse(REWRITE_DONE, in);
+  }
+
+  static RewriteResponse preRewrite(TNode in) {
+    Trace("datatypes-rewrite-debug") << "pre-rewriting " << in << std::endl;
+    return RewriteResponse(REWRITE_DONE, in);
+  }
+
+  static inline void init() {}
+  static inline void shutdown() {}
+
+  static bool checkClash( Node n1, Node n2, std::vector< Node >& rew ) {
+    Trace("datatypes-rewrite-debug") << "Check clash : " << n1 << " " << n2 << std::endl;
+    if( n1.getKind() == kind::APPLY_CONSTRUCTOR && n2.getKind() == kind::APPLY_CONSTRUCTOR ) {
+      if( n1.getOperator() != n2.getOperator() ) {
+        Trace("datatypes-rewrite-debug") << "Clash operators : " << n1 << " " << n2 << " " << n1.getOperator() << " " << n2.getOperator() << std::endl;
+        return true;
+      } else {
+        Assert( n1.getNumChildren() == n2.getNumChildren() );
+        for( int i=0; i<(int)n1.getNumChildren(); i++ ) {
+          if( checkClash( n1[i], n2[i], rew ) ) {
+            return true;
+          }
+        }
+      }
+    }else if( n1!=n2 ){
+      if( n1.isConst() && n2.isConst() ){
+        Trace("datatypes-rewrite-debug") << "Clash constants : " << n1 << " " << n2 << std::endl;
+        return true;
+      }else{
+        Node eq = NodeManager::currentNM()->mkNode( kind::EQUAL, n1, n2 );
+        rew.push_back( eq );
+      }
+    }
+    return false;
+  }
+  /** get instantiate cons */
+  static Node getInstCons( Node n, const Datatype& dt, int index ) {
+    Assert( index>=0 && index<(int)dt.getNumConstructors() );
+    std::vector< Node > children;
+    children.push_back( Node::fromExpr( dt[index].getConstructor() ) );
+    for( int i=0; i<(int)dt[index].getNumArgs(); i++ ){
+      Node nc = NodeManager::currentNM()->mkNode( kind::APPLY_SELECTOR_TOTAL, Node::fromExpr( dt[index][i].getSelector() ), n );
+      children.push_back( nc );
+    }
+    Node n_ic = NodeManager::currentNM()->mkNode( kind::APPLY_CONSTRUCTOR, children );
+    //add type ascription for ambiguous constructor types
+    if(!n_ic.getType().isComparableTo(n.getType())) {
+      Assert( dt.isParametric() );
+      Debug("datatypes-parametric") << "DtInstantiate: ambiguous type for " << n_ic << ", ascribe to " << n.getType() << std::endl;
+      Debug("datatypes-parametric") << "Constructor is " << dt[index] << std::endl;
+      Type tspec = dt[index].getSpecializedConstructorType(n.getType().toType());
+      Debug("datatypes-parametric") << "Type specification is " << tspec << std::endl;
+      children[0] = NodeManager::currentNM()->mkNode(kind::APPLY_TYPE_ASCRIPTION,
+                                                     NodeManager::currentNM()->mkConst(AscriptionType(tspec)), children[0] );
+      n_ic = NodeManager::currentNM()->mkNode( kind::APPLY_CONSTRUCTOR, children );
+      Assert( n_ic.getType()==n.getType() );
+    }
+    Assert( isInstCons( n, n_ic, dt )==index );
+    //n_ic = Rewriter::rewrite( n_ic );
+    return n_ic;
+  }
+
+  static int isInstCons( Node t, Node n, const Datatype& dt ){
+    if( n.getKind()==kind::APPLY_CONSTRUCTOR ){
+      int index = Datatype::indexOf( n.getOperator().toExpr() );
+      const DatatypeConstructor& c = dt[index];
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        if( n[i].getKind()!=kind::APPLY_SELECTOR_TOTAL ||
+            n[i].getOperator()!=Node::fromExpr( c[i].getSelector() ) ||
+            n[i][0]!=t ){
+          return -1;
+        }
+      }
+      return index;
+    }
+    return -1;
+  }
+
+  static int isTester( Node n, Node& a ) {
+    if( options::dtUseTesters() ){
+      if( n.getKind()==kind::APPLY_TESTER ){
+        a = n[0];
+        return Datatype::indexOf( n.getOperator().toExpr() );
+      }
+    }else{
+      if( n.getKind()==kind::EQUAL ){
+        for( int i=1; i>=0; i-- ){
+          if( n[i].getKind()==kind::APPLY_CONSTRUCTOR ){
+            const Datatype& dt = Datatype::datatypeOf(n[i].getOperator().toExpr());
+            int ic = isInstCons( n[1-i], n[i], dt );
+            if( ic!=-1 ){
+              a = n[1-i];
+              return ic;
+            }
+          }
+        }
+      }
+    }
+    return -1;
+  }
+  static int isTester( Node n ) {
+    if( options::dtUseTesters() ){
+      if( n.getKind()==kind::APPLY_TESTER ){
+        return Datatype::indexOf( n.getOperator().toExpr() );
+      }
+    }else{
+      if( n.getKind()==kind::EQUAL ){
+        for( int i=1; i>=0; i-- ){
+          if( n[i].getKind()==kind::APPLY_CONSTRUCTOR ){
+            const Datatype& dt = Datatype::datatypeOf(n[i].getOperator().toExpr());
+            int ic = isInstCons( n[1-i], n[i], dt );
+            if( ic!=-1 ){
+              return ic;
+            }
+          }
+        }
+      }
+    }
+    return -1;
+  }
+
+  static Node mkTester( Node n, int i, const Datatype& dt ){
+    if( options::dtUseTesters() ){
+      return NodeManager::currentNM()->mkNode( kind::APPLY_TESTER, Node::fromExpr( dt[i].getTester() ), n );
+    }else{
+#ifdef CVC4_ASSERTIONS
+      Node ret = n.eqNode( DatatypesRewriter::getInstCons( n, dt, i ) );
+      Node a;
+      int ii = isTester( ret, a );
+      Assert( ii==i );
+      Assert( a==n );
+      return ret;
+#else
+      return n.eqNode( DatatypesRewriter::getInstCons( n, dt, i ) );
+#endif
+    }
+  }
+  static bool isNullaryApplyConstructor( Node n ){
+    Assert( n.getKind()==kind::APPLY_CONSTRUCTOR );
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      if( n[i].getType().isDatatype() ){
+        return false;
+      }
+    }
+    return true;
+  }
+  static bool isNullaryConstructor( const DatatypeConstructor& c ){
+    for( unsigned j=0; j<c.getNumArgs(); j++ ){
+      if( c[j].getType().getRangeType().isDatatype() ){
+        return false;
+      }
+    }
+    return true;
+  }
+private:
+  static Node collectRef( Node n, std::vector< Node >& sk, std::map< Node, Node >& rf, std::vector< Node >& rf_pending,
+                          std::vector< Node >& terms, std::map< Node, bool >& cdts ){
+    Assert( n.isConst() );
+    TypeNode tn = n.getType();
+    Node ret = n;
+    bool isCdt = false;
+    if( tn.isDatatype() ){
+      if( !tn.isCodatatype() ){
+        //nested datatype within codatatype : can be normalized independently since all loops should be self-contained
+        ret = normalizeConstant( n );
+      }else{
+        isCdt = true;
+        if( n.getKind()==kind::APPLY_CONSTRUCTOR ){
+          sk.push_back( n );
+          rf_pending.push_back( Node::null() );
+          std::vector< Node > children;
+          children.push_back( n.getOperator() );
+          bool childChanged = false;
+          for( unsigned i=0; i<n.getNumChildren(); i++ ){
+            Node nc = collectRef( n[i], sk, rf, rf_pending, terms, cdts );
+            if( nc.isNull() ){
+              return Node::null();
+            }
+            childChanged = nc!=n[i] || childChanged;
+            children.push_back( nc );
+          }
+          sk.pop_back();
+          if( childChanged ){
+            ret = NodeManager::currentNM()->mkNode( kind::APPLY_CONSTRUCTOR, children );
+            if( !rf_pending.back().isNull() ){
+              rf[rf_pending.back()] = ret;
+            }
+          }else{
+            Assert( rf_pending.back().isNull() );
+          }
+          rf_pending.pop_back();
+        }else{
+          //a loop
+          const Integer& i = n.getConst<UninterpretedConstant>().getIndex();
+          uint32_t index = i.toUnsignedInt();
+          if( index>=sk.size() ){
+            return Node::null();
+          }else{
+            Assert( sk.size()==rf_pending.size() );
+            Node r = rf_pending[ rf_pending.size()-1-index ];
+            if( r.isNull() ){
+              r = NodeManager::currentNM()->mkBoundVar( sk[ rf_pending.size()-1-index ].getType() );
+              rf_pending[ rf_pending.size()-1-index ] = r;
+            }
+            return r;
+          }
+        }
+      }
+    }
+    Trace("dt-nconst-debug") << "Return term : " << ret << " from " << n << std::endl;
+    if( std::find( terms.begin(), terms.end(), ret )==terms.end() ){
+      terms.push_back( ret );
+      Assert( ret.getType()==tn );
+      cdts[ret] = isCdt;
+    }
+    return ret;
+  }
+  //eqc_stack stores depth
+  static Node normalizeCodatatypeConstantEqc( Node n, std::map< int, int >& eqc_stack, std::map< Node, int >& eqc, int depth ){
+    Trace("dt-nconst-debug") << "normalizeCodatatypeConstantEqc: " << n << " depth=" << depth << std::endl;
+    if( eqc.find( n )==eqc.end() ){
+      return n;
+    }else{
+      int e = eqc[n];
+      std::map< int, int >::iterator it = eqc_stack.find( e );
+      if( it!=eqc_stack.end() ){
+        int debruijn = depth - it->second - 1;
+        return NodeManager::currentNM()->mkConst(UninterpretedConstant(n.getType().toType(), debruijn));
+      }else{
+        std::vector< Node > children;
+        bool childChanged = false;
+        eqc_stack[e] = depth;
+        for( unsigned i=0; i<n.getNumChildren(); i++ ){
+          Node nc = normalizeCodatatypeConstantEqc( n[i], eqc_stack, eqc, depth+1 );
+          children.push_back( nc );
+          childChanged = childChanged || nc!=n[i];
+        }
+        eqc_stack.erase(e);
+        if( childChanged ){
+          Assert( n.getKind()==kind::APPLY_CONSTRUCTOR );
+          children.insert( children.begin(), n.getOperator() );
+          return NodeManager::currentNM()->mkNode( n.getKind(), children );
+        }else{
+          return n;
+        }
+      }
+    }
+  }
+  static Node replaceDebruijn( Node n, Node orig, TypeNode orig_tn, unsigned depth ) {
+    if( n.getKind()==kind::UNINTERPRETED_CONSTANT && n.getType()==orig_tn ){
+      unsigned index = n.getConst<UninterpretedConstant>().getIndex().toUnsignedInt();
+      if( index==depth ){
+        return orig;
+      }
+    }else if( n.getNumChildren()>0 ){
+      std::vector< Node > children;
+      bool childChanged = false;
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        Node nc = replaceDebruijn( n[i], orig, orig_tn, depth+1 );
+        children.push_back( nc );
+        childChanged = childChanged || nc!=n[i];
+      }
+      if( childChanged ){
+        if( n.hasOperator() ){
+          children.insert( children.begin(), n.getOperator() );
+        }
+        return NodeManager::currentNM()->mkNode( n.getKind(), children );
+      }
+    }
+    return n;
+  }
+public:
+  static Node normalizeCodatatypeConstant( Node n ){
+    Trace("dt-nconst") << "Normalize " << n << std::endl;
+    std::map< Node, Node > rf;
+    std::vector< Node > sk;
+    std::vector< Node > rf_pending;
+    std::vector< Node > terms;
+    std::map< Node, bool > cdts;
+    Node s = collectRef( n, sk, rf, rf_pending, terms, cdts );
+    if( !s.isNull() ){
+      Trace("dt-nconst") << "...symbolic normalized is : " << s << std::endl;
+      for( std::map< Node, Node >::iterator it = rf.begin(); it != rf.end(); ++it ){
+        Trace("dt-nconst") << "  " << it->first << " = " << it->second << std::endl;
+      }
+      //now run DFA minimization on term structure
+      Trace("dt-nconst") << "  " << terms.size() << " total subterms :" << std::endl;
+      int eqc_count = 0;
+      std::map< Node, int > eqc_op_map;
+      std::map< Node, int > eqc;
+      std::map< int, std::vector< Node > > eqc_nodes;
+      //partition based on top symbol
+      for( unsigned j=0; j<terms.size(); j++ ){
+        Node t = terms[j];
+        Trace("dt-nconst") << "    " << t << ", cdt=" << cdts[t] << std::endl;
+        int e;
+        if( cdts[t] ){
+          Assert( t.getKind()==kind::APPLY_CONSTRUCTOR );
+          Node op = t.getOperator();
+          std::map< Node, int >::iterator it = eqc_op_map.find( op );
+          if( it==eqc_op_map.end() ){
+            e = eqc_count;
+            eqc_op_map[op] = eqc_count;
+            eqc_count++;
+          }else{
+            e = it->second;
+          }
+        }else{
+          e = eqc_count;
+          eqc_count++;
+        }
+        eqc[t] = e;
+        eqc_nodes[e].push_back( t );
+      }
+      //partition until fixed point
+      int eqc_curr = 0;
+      bool success = true;
+      while( success ){
+        success = false;
+        int eqc_end = eqc_count;
+        while( eqc_curr<eqc_end ){
+          if( eqc_nodes[eqc_curr].size()>1 ){
+            //look at all nodes in this equivalence class
+            unsigned nchildren = eqc_nodes[eqc_curr][0].getNumChildren();
+            std::map< int, std::vector< Node > > prt;
+            for( unsigned j=0; j<nchildren; j++ ){
+              prt.clear();
+              //partition based on children : for the first child that causes a split, break
+              for( unsigned k=0; k<eqc_nodes[eqc_curr].size(); k++ ){
+                Node t = eqc_nodes[eqc_curr][k];
+                Assert( t.getNumChildren()==nchildren );
+                Node tc = t[j];
+                //refer to loops
+                std::map< Node, Node >::iterator itr = rf.find( tc );
+                if( itr!=rf.end() ){
+                  tc = itr->second;
+                }
+                Assert( eqc.find( tc)!=eqc.end() );
+                prt[eqc[tc]].push_back( t );
+              }
+              if( prt.size()>1 ){
+                success = true;
+                break;
+              }
+            }
+            //move into new eqc(s)
+            for( std::map< int, std::vector< Node > >::iterator it = prt.begin(); it != prt.end(); ++it ){
+              int e = eqc_count;
+              for( unsigned j=0; j<it->second.size(); j++ ){
+                Node t = it->second[j];
+                eqc[t] = e;
+                eqc_nodes[e].push_back( t );
+              }
+              eqc_count++;
+            }
+          }
+          eqc_nodes.erase( eqc_curr );
+          eqc_curr++;
+        }
+      }
+      //add in already occurring loop variables
+      for( std::map< Node, Node >::iterator it = rf.begin(); it != rf.end(); ++it ){
+        Trace("dt-nconst-debug") << "Mapping equivalence class of " << it->first << " -> " << it->second << std::endl;
+        Assert( eqc.find(it->second)!=eqc.end() );
+        eqc[it->first] = eqc[it->second];
+      }
+      //we now have a partition of equivalent terms
+      Trace("dt-nconst") << "Computed equivalence classes ids : " << std::endl;
+      for( std::map< Node, int >::iterator it = eqc.begin(); it != eqc.end(); ++it ){
+        Trace("dt-nconst") << "  " << it->first << " -> " << it->second << std::endl;
+      }
+      //traverse top-down based on equivalence class
+      std::map< int, int > eqc_stack;
+      return normalizeCodatatypeConstantEqc( s, eqc_stack, eqc, 0 );
+    }else{
+      Trace("dt-nconst") << "...invalid." << std::endl;
+      return Node::null();
+    }
+  }
+  //normalize constant : apply to top-level codatatype constants
+  static Node normalizeConstant( Node n ){
+    TypeNode tn = n.getType();
+    if( tn.isDatatype() ){
+      if( tn.isCodatatype() ){
+        return normalizeCodatatypeConstant( n );
+      }else{
+        std::vector< Node > children;
+        bool childrenChanged = false;
+        for( unsigned i = 0; i<n.getNumChildren(); i++ ){
+          Node nc = normalizeConstant( n[i] );
+          children.push_back( nc );
+          childrenChanged = childrenChanged || nc!=n[i];
+        }
+        if( childrenChanged ){
+          return NodeManager::currentNM()->mkNode( n.getKind(), children );
+        }else{
+          return n;
+        }
+      }
+    }else{
+      return n;
+    }
+  }
+};/* class DatatypesRewriter */
+
+}/* CVC4::theory::datatypes namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__DATATYPES__DATATYPES_REWRITER_H */
diff --git a/src/theory/datatypes/datatypes_sygus.cpp b/src/theory/datatypes/datatypes_sygus.cpp
new file mode 100644
index 0000000..f5ae05b
--- /dev/null
+++ b/src/theory/datatypes/datatypes_sygus.cpp
@@ -0,0 +1,1373 @@
+/*********************                                                        */
+/*! \file datatypes_sygus.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of sygus utilities for theory of datatypes
+ **
+ ** Implementation of sygus utilities for theory of datatypes
+ **/
+
+
+#include "expr/node_manager.h"
+#include "options/quantifiers_options.h"
+#include "theory/datatypes/datatypes_rewriter.h"
+#include "theory/datatypes/datatypes_sygus.h"
+#include "theory/quantifiers/term_database.h"
+
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::datatypes;
+
+void SygusSplit::getSygusSplits( Node n, const Datatype& dt, std::vector< Node >& splits, std::vector< Node >& lemmas ) {
+  Assert( dt.isSygus() );
+  if( d_splits.find( n )==d_splits.end() ){
+    Trace("sygus-split") << "Get sygus splits " << n << std::endl;
+    //get the kinds for child datatype
+    TypeNode tnn = n.getType();
+    registerSygusType( tnn );
+
+    //get parent information, if possible
+    int csIndex = -1;
+    int sIndex = -1;
+    Node arg1;
+    TypeNode tn1;
+    TypeNode tnnp;
+    Node ptest;
+    if( n.getKind()==APPLY_SELECTOR_TOTAL ){
+      Node op = n.getOperator();
+      Expr selectorExpr = op.toExpr();
+      const Datatype& pdt = Datatype::datatypeOf(selectorExpr);
+      Assert( pdt.isSygus() );
+      csIndex = Datatype::cindexOf(selectorExpr);
+      sIndex = Datatype::indexOf(selectorExpr);
+      tnnp = n[0].getType();
+      //register the constructors that are redundant children of argument sIndex of constructor index csIndex of dt
+      registerSygusTypeConstructorArg( tnn, dt, tnnp, pdt, csIndex, sIndex );
+
+      if( options::sygusNormalFormArg() ){
+        if( sIndex==1 && pdt[csIndex].getNumArgs()==2 ){
+          arg1 = NodeManager::currentNM()->mkNode( APPLY_SELECTOR_TOTAL, Node::fromExpr( pdt[csIndex][0].getSelector() ), n[0] );
+          tn1 = arg1.getType();
+          if( !tn1.isDatatype() ){
+            arg1 = Node::null();
+          }
+        }
+      }
+      // we are splitting on a term that may later have no semantics : guard this case
+      ptest = DatatypesRewriter::mkTester( n[0], csIndex, pdt );
+      Trace("sygus-split-debug") << "Parent guard : " << ptest << std::endl;
+    }
+
+    std::vector< Node > ptest_c;
+    bool narrow = false;
+    for( unsigned i=0; i<dt.getNumConstructors(); i++ ){
+      Trace("sygus-split-debug2") << "Add split " << n << " : constructor " << dt[i].getName() << " : ";
+      Assert( d_sygus_nred.find( tnn )!=d_sygus_nred.end() );
+      bool addSplit = d_sygus_nred[tnn][i];
+      if( addSplit ){
+        if( csIndex!=-1 ){
+          Assert( d_sygus_pc_nred[tnn][csIndex].find( sIndex )!=d_sygus_pc_nred[tnn][csIndex].end() );
+          addSplit = d_sygus_pc_nred[tnn][csIndex][sIndex][i];
+        }
+        if( addSplit ){
+          std::vector< Node > test_c;
+          Node test = DatatypesRewriter::mkTester( n, i, dt );
+          test_c.push_back( test );
+          //check if we can strengthen the first argument
+          if( !arg1.isNull() ){
+            const Datatype& dt1 = ((DatatypeType)(tn1).toType()).getDatatype();
+            Kind k = d_tds->getArgKind( tnnp, csIndex );
+            //size comparison for arguments (if necessary)
+            Node sz_leq;
+            if( tn1==tnn && quantifiers::TermDb::isComm( k ) ){
+              sz_leq = NodeManager::currentNM()->mkNode( LEQ, NodeManager::currentNM()->mkNode( DT_SIZE, n ), NodeManager::currentNM()->mkNode( DT_SIZE, arg1 ) );
+            }
+            std::map< int, std::vector< int > >::iterator it = d_sygus_pc_arg_pos[tnn][csIndex].find( i );
+            if( it!=d_sygus_pc_arg_pos[tnn][csIndex].end() ){
+              Assert( !it->second.empty() );
+              std::vector< Node > lem_c;
+              for( unsigned j=0; j<it->second.size(); j++ ){
+                Node tt = DatatypesRewriter::mkTester( arg1, it->second[j], dt1 );
+                //if commutative operator, and children have same constructor type, then first arg is larger than second arg
+                if( it->second[j]==(int)i && !sz_leq.isNull() ){
+                  tt = NodeManager::currentNM()->mkNode( AND, tt, sz_leq );
+                }
+                lem_c.push_back( tt );
+              }
+              Node argStr = lem_c.size()==1 ? lem_c[0] : NodeManager::currentNM()->mkNode( OR, lem_c );
+              Trace("sygus-str") << "...strengthen corresponding first argument of " << test << " : " << argStr << std::endl;
+              test_c.push_back( argStr );
+              narrow = true;
+            }else{
+              if( !sz_leq.isNull() ){
+                test_c.push_back( NodeManager::currentNM()->mkNode( OR, DatatypesRewriter::mkTester( arg1, i, dt1 ).negate(), sz_leq ) );
+                narrow = true;
+              }
+            }
+          }
+          //other constraints on arguments
+          Kind curr = d_tds->getArgKind( tnn, i );
+          if( curr!=UNDEFINED_KIND ){
+            //ITE children must be distinct when properly typed
+            if( curr==ITE ){
+              if( d_tds->getArgType( dt[i], 1 )==tnn && d_tds->getArgType( dt[i], 2 )==tnn ){
+                Node arg_ite1 = NodeManager::currentNM()->mkNode( APPLY_SELECTOR_TOTAL, Node::fromExpr( dt[i][1].getSelector() ), n );
+                Node arg_ite2 = NodeManager::currentNM()->mkNode( APPLY_SELECTOR_TOTAL, Node::fromExpr( dt[i][2].getSelector() ), n );
+                Node deq = arg_ite1.eqNode( arg_ite2 ).negate();
+                Trace("sygus-str") << "...ite strengthen arguments " << deq << std::endl;
+                test_c.push_back( deq );
+                narrow = true;
+              }
+              //condition must be distinct from all parent ITE's
+              Node curr = n;
+              Node arg_itec = NodeManager::currentNM()->mkNode( APPLY_SELECTOR_TOTAL, Node::fromExpr( dt[i][0].getSelector() ), n );
+              while( curr.getKind()==APPLY_SELECTOR_TOTAL ){
+                if( curr[0].getType()==tnn ){
+                  int sIndexCurr = Datatype::indexOf( curr.getOperator().toExpr() );
+                  int csIndexCurr = Datatype::cindexOf( curr.getOperator().toExpr() );
+                  if( sIndexCurr!=0 && csIndexCurr==(int)i ){
+                    Trace("sygus-ite") << "Parent ITE " << curr << " of " << n << std::endl;
+                    Node arg_itecp = NodeManager::currentNM()->mkNode( APPLY_SELECTOR_TOTAL, Node::fromExpr( dt[i][0].getSelector() ), curr[0] );
+                    Node deq = arg_itec.eqNode( arg_itecp ).negate();
+                    Trace("sygus-str") << "...ite strengthen condition " << deq << std::endl;
+                    test_c.push_back( deq );
+                    narrow = true;
+                  }
+                }
+                curr = curr[0];
+              }
+            }
+          }
+          //add fairness constraint
+          if( options::ceGuidedInstFair()==quantifiers::CEGQI_FAIR_DT_SIZE ){
+            Node szl = NodeManager::currentNM()->mkNode( DT_SIZE, n );
+            Node szr = NodeManager::currentNM()->mkNode( DT_SIZE, DatatypesRewriter::getInstCons( n, dt, i ) );
+            szr = Rewriter::rewrite( szr );
+            test_c.push_back( szl.eqNode( szr ) );
+          }
+          test = test_c.size()==1 ? test_c[0] : NodeManager::currentNM()->mkNode( AND, test_c );
+          d_splits[n].push_back( test );
+          Trace("sygus-split-debug2") << "SUCCESS" << std::endl;
+          Trace("sygus-split-debug") << "Disjunct #" << d_splits[n].size() << " : " << test << std::endl;
+        }else{
+          Trace("sygus-split-debug2") << "redundant argument" << std::endl;
+          narrow = true;
+        }
+      }else{
+        Trace("sygus-split-debug2") << "redundant operator" << std::endl;
+        narrow = true;
+      }
+      if( !ptest.isNull() ){
+        ptest_c.push_back( DatatypesRewriter::mkTester( n, i, dt ) );
+      }
+    }
+    if( narrow && !ptest.isNull() ){
+      Node split = d_splits[n].empty() ? NodeManager::currentNM()->mkConst( false ) :
+                                        ( d_splits[n].size()==1 ? d_splits[n][0] : NodeManager::currentNM()->mkNode( OR, d_splits[n] ) );
+      if( !d_splits[n].empty() ){
+        d_splits[n].clear();
+        split = NodeManager::currentNM()->mkNode( AND, ptest, split );
+      }
+      d_splits[n].push_back( split );
+      if( !ptest_c.empty() ){
+        ptest = NodeManager::currentNM()->mkNode( AND, ptest.negate(), NodeManager::currentNM()->mkNode( OR, ptest_c ) );
+      }
+      d_splits[n].push_back( ptest );
+    }else{
+      Assert( !d_splits[n].empty() );
+    }
+
+  }
+  //copy to splits
+  splits.insert( splits.end(), d_splits[n].begin(), d_splits[n].end() );
+}
+
+void SygusSplit::registerSygusType( TypeNode tn ) {
+  if( d_register.find( tn )==d_register.end() ){
+    if( !tn.isDatatype() ){
+      d_register[tn] = TypeNode::null();
+    }else{
+      const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+      Trace("sygus-split") << "Register type " << dt.getName() << "..." << std::endl;
+      d_register[tn] = TypeNode::fromType( dt.getSygusType() );
+      if( d_register[tn].isNull() ){
+        Trace("sygus-split") << "...not sygus." << std::endl;
+      }else{
+        d_tds->registerSygusType( tn );
+
+        //compute the redundant operators
+        for( unsigned i=0; i<dt.getNumConstructors(); i++ ){
+          bool nred = true;
+          if( options::sygusNormalForm() ){
+            Trace("sygus-split-debug") << "Is " << dt[i].getName() << " a redundant operator?" << std::endl;
+            Kind ck = d_tds->getArgKind( tn, i );
+            if( ck!=UNDEFINED_KIND ){
+              Kind dk;
+              if( d_tds->isAntisymmetric( ck, dk ) ){
+                int j = d_tds->getKindArg( tn, dk );
+                if( j!=-1 ){
+                  Trace("sygus-split-debug") << "Possible redundant operator : " << ck << " with " << dk << std::endl;
+                  //check for type mismatches
+                  bool success = true;
+                  for( unsigned k=0; k<2; k++ ){
+                    unsigned ko = k==0 ? 1 : 0;
+                    TypeNode tni = TypeNode::fromType( ((SelectorType)dt[i][k].getType()).getRangeType() );
+                    TypeNode tnj = TypeNode::fromType( ((SelectorType)dt[j][ko].getType()).getRangeType() );
+                    if( tni!=tnj ){
+                      Trace("sygus-split-debug") << "Argument types " << tni << " and " << tnj << " are not equal." << std::endl;
+                      success = false;
+                      break;
+                    }
+                  }
+                  if( success ){
+                    Trace("sygus-nf") << "* Sygus norm " << dt.getName() << " : do not consider any " << ck << " terms." << std::endl;
+                    nred = false;
+                  }
+                }
+              }
+            }
+            if( nred ){
+              Trace("sygus-split-debug") << "Check " << dt[i].getName() << " based on generic rewriting" << std::endl;
+              std::map< TypeNode, int > var_count;
+              std::map< int, Node > pre;
+              Node g = d_tds->mkGeneric( dt, i, var_count, pre );
+              nred = !isGenericRedundant( tn, g );
+              Trace("sygus-split-debug") << "...done check " << dt[i].getName() << " based on generic rewriting" << std::endl;
+            }
+          }
+          d_sygus_nred[tn].push_back( nred );
+        }
+      }
+      Trace("sygus-split-debug") << "...done register type " << dt.getName() << std::endl;
+    }
+  }
+}
+
+void SygusSplit::registerSygusTypeConstructorArg( TypeNode tnn, const Datatype& dt, TypeNode tnnp, const Datatype& pdt, int csIndex, int sIndex ) {
+  std::map< int, std::vector< bool > >::iterator it = d_sygus_pc_nred[tnn][csIndex].find( sIndex );
+  if( it==d_sygus_pc_nred[tnn][csIndex].end() ){
+    d_sygus_pc_nred[tnn][csIndex][sIndex].clear();
+    registerSygusType( tnn );
+    registerSygusType( tnnp );
+    Trace("sygus-split") << "Register type constructor arg " << dt.getName() << " " << csIndex << " " << sIndex << std::endl;
+    if( !options::sygusNormalForm() ){
+      for( unsigned i=0; i<dt.getNumConstructors(); i++ ){
+        d_sygus_pc_nred[tnn][csIndex][sIndex].push_back( true );
+      }
+    }else{
+      // calculate which constructors we should consider based on normal form for terms
+      //get parent kind
+      Kind parentKind = d_tds->getArgKind( tnnp, csIndex );
+      for( unsigned i=0; i<dt.getNumConstructors(); i++ ){
+        Assert( d_sygus_nred.find( tnn )!=d_sygus_nred.end() );
+        bool addSplit = d_sygus_nred[tnn][i];
+        if( addSplit && parentKind!=UNDEFINED_KIND ){
+          Kind ak = d_tds->getArgKind( tnn, i );
+          if( ak!=UNDEFINED_KIND ){
+            addSplit = considerSygusSplitKind( dt, pdt, tnn, tnnp, ak, parentKind, sIndex );
+            if( !addSplit ){
+              Trace("sygus-nf") << "* Sygus norm " << pdt.getName() << " : do not consider " << dt.getName() << "::" << ak;
+              Trace("sygus-nf") << " as argument " << sIndex << " of " << parentKind << "." << std::endl;
+            }
+          }else{
+            Node ac = d_tds->getArgConst( tnn, i );
+            if( !ac.isNull() ){
+              addSplit = considerSygusSplitConst( dt, pdt, tnn, tnnp, ac, parentKind, sIndex );
+              if( !addSplit ){
+                Trace("sygus-nf") << "* Sygus norm " << pdt.getName() << " : do not consider constant " << dt.getName() << "::" << ac;
+                Trace("sygus-nf") << " as argument " << sIndex << " of " << parentKind << "." << std::endl;
+              }
+            }
+          }
+          if( addSplit ){
+            if( pdt[csIndex].getNumArgs()==1 ){
+              //generic rewriting
+              std::map< int, Node > prec;
+              std::map< TypeNode, int > var_count;
+              Node gc = d_tds->mkGeneric( dt, i, var_count, prec );
+              std::map< int, Node > pre;
+              pre[sIndex] = gc;
+              Node g = d_tds->mkGeneric( pdt, csIndex, var_count, pre );
+              addSplit = !isGenericRedundant( tnnp, g );
+            }
+            /*
+            else{
+              Trace("sygus-nf-temp") << "Check " << dt[i].getName() << " as argument " << sIndex << " under " << parentKind << std::endl;
+              std::map< int, Node > prec;
+              std::map< TypeNode, int > var_count;
+              Node gc = d_tds->mkGeneric( dt, i, var_count, prec );
+              std::map< int, Node > pre;
+              pre[sIndex] = gc;
+              Node g = d_tds->mkGeneric( pdt, csIndex, var_count, pre );
+              bool tmp = !isGenericRedundant( tnnp, g, false );
+            }
+            */
+          }
+        }
+        d_sygus_pc_nred[tnn][csIndex][sIndex].push_back( addSplit );
+      }
+      //compute argument relationships for 2-arg constructors
+      if( parentKind!=UNDEFINED_KIND && pdt[csIndex].getNumArgs()==2 ){
+        int osIndex = sIndex==0 ? 1 : 0;
+        TypeNode tnno = d_tds->getArgType( pdt[csIndex], osIndex );
+        if( tnno.isDatatype() ){
+          const Datatype& dto = ((DatatypeType)(tnno).toType()).getDatatype();
+          registerSygusTypeConstructorArg( tnno, dto, tnnp, pdt, csIndex, osIndex );
+          //compute relationships when doing 0-arg
+          if( sIndex==0 ){
+            Assert( d_sygus_pc_nred[tnn][csIndex].find( sIndex )!=d_sygus_pc_nred[tnn][csIndex].end() );
+            Assert( d_sygus_pc_nred[tnno][csIndex].find( osIndex )!=d_sygus_pc_nred[tnno][csIndex].end() );
+
+            bool isPComm = quantifiers::TermDb::isComm( parentKind );
+            std::map< int, bool > larg_consider;
+            for( unsigned i=0; i<dto.getNumConstructors(); i++ ){
+              if( d_sygus_pc_nred[tnno][csIndex][osIndex][i] ){
+                //arguments that can be removed
+                std::map< int, bool > rem_arg;
+                //collect information about this index
+                Node oac = d_tds->getArgConst( tnno, i );
+                bool isSingularConst = !oac.isNull() && d_tds->isSingularArg( oac, parentKind, 1 );
+                bool argConsider = false;
+                for( unsigned j=0; j<dt.getNumConstructors(); j++ ){
+                  if( d_sygus_pc_nred[tnn][csIndex][sIndex][j] ){
+                    Trace("sygus-split-debug") << "Check redundancy of " << dt[j].getSygusOp() << " and " << dto[i].getSygusOp() << " under " << parentKind << std::endl;
+                    bool rem = false;
+                    if( isPComm && j>i && tnn==tnno && d_sygus_pc_nred[tnno][csIndex][osIndex][j] ){
+                      //based on commutativity
+                      // use term ordering : constructor index of first argument is not greater than constructor index of second argument
+                      rem = true;
+                      Trace("sygus-nf") << "* Sygus norm : commutativity of " << parentKind << " : consider " << dt[j].getSygusOp() << " before " << dto[i].getSygusOp() << std::endl;
+                    }else if( isSingularConst && argConsider ){
+                      rem = true;
+                      Trace("sygus-nf") << "* Sygus norm : RHS singularity arg " << dto[i].getSygusOp() << " of " << parentKind;
+                      Trace("sygus-nf") << " : do not consider " << dt[j].getSygusOp() << " as first arg." << std::endl;
+                    }else{
+                      Node cac = d_tds->getArgConst( tnn, j );
+                      if( !cac.isNull() && d_tds->isSingularArg( cac, parentKind, 0 ) && larg_consider.find( j )!=larg_consider.end() ){
+                        rem = true;
+                        Trace("sygus-nf") << "* Sygus norm : LHS singularity arg " << dt[j].getSygusOp() << " of " << parentKind;
+                        Trace("sygus-nf") << " : do not consider " << dto[i].getSygusOp() << " as second arg." << std::endl;
+                      }else{
+                        if( parentKind!=UNDEFINED_KIND ){
+                          std::map< TypeNode, int > var_count;
+                          std::map< int, Node > pre;
+                          Node g1 = d_tds->mkGeneric( dt, j, var_count, pre );
+                          Node g2 = d_tds->mkGeneric( dto, i, var_count, pre );
+                          Node g = NodeManager::currentNM()->mkNode( parentKind, g1, g2 );
+                          if( isGenericRedundant( tnnp, g ) ){
+                            rem = true;
+                          }
+                        }
+                      }
+                    }
+                    if( rem ){
+                      rem_arg[j] = true;
+                    }else{
+                      argConsider = true;
+                      larg_consider[j] = true;
+                    }
+                  }
+                }
+                if( !rem_arg.empty() ){
+                  d_sygus_pc_arg_pos[tnno][csIndex][i].clear();
+                  Trace("sygus-split-debug") << "Possibilities for first argument of " << parentKind << ", when second argument is " << dto[i].getName() << " : " << std::endl;
+                  for( unsigned j=0; j<dt.getNumConstructors(); j++ ){
+                    if( d_sygus_pc_nred[tnn][csIndex][sIndex][j] && rem_arg.find( j )==rem_arg.end() ){
+                      d_sygus_pc_arg_pos[tnno][csIndex][i].push_back( j );
+                      Trace("sygus-split-debug") << "  " << dt[j].getName() << std::endl;
+                    }
+                  }
+                  //if there are no possibilities for first argument, then this child is redundant
+                  if( d_sygus_pc_arg_pos[tnno][csIndex][i].empty() ){
+                    Trace("sygus-nf") << "* Sygus norm " << pdt.getName() << " : do not consider constant " << dt.getName() << "::" << dto[i].getName();
+                    Trace("sygus-nf") << " as argument " << osIndex << " of " << parentKind << " (based on arguments)." << std::endl;
+                    d_sygus_pc_nred[tnno][csIndex][osIndex][i] = false;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+class ReqTrie {
+public:
+  ReqTrie() : d_req_kind( UNDEFINED_KIND ){}
+  std::map< unsigned, ReqTrie > d_children;
+  Kind d_req_kind;
+  TypeNode d_req_type;
+  Node d_req_const;
+  void print( const char * c, int indent = 0 ){
+    if( d_req_kind!=UNDEFINED_KIND ){
+      Trace(c) << d_req_kind << " ";
+    }else if( !d_req_type.isNull() ){
+      Trace(c) << d_req_type;
+    }else if( !d_req_const.isNull() ){
+      Trace(c) << d_req_const;
+    }else{
+      Trace(c) << "_";
+    }
+    Trace(c) << std::endl;
+    for( std::map< unsigned, ReqTrie >::iterator it = d_children.begin(); it != d_children.end(); ++it ){
+      for( int i=0; i<=indent; i++ ) { Trace(c) << "  "; }
+      Trace(c) << it->first << " : ";
+      it->second.print( c, indent+1 );
+    }
+  }
+  bool satisfiedBy( quantifiers::TermDbSygus * tdb, TypeNode tn ){
+    if( d_req_kind!=UNDEFINED_KIND ){
+      int c = tdb->getKindArg( tn, d_req_kind );
+      if( c!=-1 ){
+        const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+        for( std::map< unsigned, ReqTrie >::iterator it = d_children.begin(); it != d_children.end(); ++it ){
+          if( it->first<dt[c].getNumArgs() ){
+            TypeNode tnc = tdb->getArgType( dt[c], it->first );
+            if( !it->second.satisfiedBy( tdb, tnc ) ){
+              return false;
+            }
+          }else{
+            return false;
+          }
+        }
+        return true;
+      }else{
+        return false;
+      }
+    }else if( !d_req_const.isNull() ){
+      return tdb->hasConst( tn, d_req_const );
+    }else if( !d_req_type.isNull() ){
+      return tn==d_req_type;
+    }else{
+      return true;
+    }
+  }
+};
+
+
+//this function gets all easy redundant cases, before consulting rewriters
+bool SygusSplit::considerSygusSplitKind( const Datatype& dt, const Datatype& pdt, TypeNode tn, TypeNode tnp, Kind k, Kind parent, int arg ) {
+  Assert( d_tds->hasKind( tn, k ) );
+  Assert( d_tds->hasKind( tnp, parent ) );
+  Trace("sygus-split") << "Consider sygus split kind " << k << ", parent = " << parent << ", arg = " << arg << "?" << std::endl;
+  int c = d_tds->getKindArg( tn, k );
+  int pc = d_tds->getKindArg( tnp, parent );
+  if( k==parent ){
+    //check for associativity
+    if( quantifiers::TermDb::isAssoc( k ) ){
+      //if the operator is associative, then a repeated occurrence should only occur in the leftmost argument position
+      int firstArg = getFirstArgOccurrence( pdt[pc], dt );
+      Assert( firstArg!=-1 );
+      Trace("sygus-split-debug") << "Associative, with first arg = " << firstArg << std::endl;
+      return arg==firstArg;
+    }
+  }
+  //describes the shape of an alternate term to construct
+  //  we check whether this term is in the sygus grammar below
+  ReqTrie rt;
+  bool rt_valid = false;
+  
+  //construct rt by cases
+  if( parent==NOT || parent==BITVECTOR_NOT || parent==UMINUS || parent==BITVECTOR_NEG ){
+    rt_valid = true;
+    //negation normal form
+    if( parent==k ){
+      rt.d_req_type = d_tds->getArgType( dt[c], 0 );
+    }else{
+      Kind reqk = UNDEFINED_KIND;       //required kind for all children
+      std::map< unsigned, Kind > reqkc; //required kind for some children
+      if( parent==NOT ){
+        if( k==AND ) {
+          rt.d_req_kind = OR;reqk = NOT;
+        }else if( k==OR ){
+          rt.d_req_kind = AND;reqk = NOT;
+        //AJR : eliminate this if we eliminate xor
+        }else if( k==EQUAL ) {
+          rt.d_req_kind = XOR;
+        }else if( k==XOR ) {
+          rt.d_req_kind = EQUAL;
+        }else if( k==ITE ){
+          rt.d_req_kind = ITE;reqkc[1] = NOT;reqkc[2] = NOT;
+          rt.d_children[0].d_req_type = d_tds->getArgType( dt[c], 0 );
+        }else if( k==LEQ || k==GT ){
+          //  (not (~ x y)) ----->  (~ (+ y 1) x)
+          rt.d_req_kind = k;
+          rt.d_children[0].d_req_kind = PLUS;
+          rt.d_children[0].d_children[0].d_req_type = d_tds->getArgType( dt[c], 1 );
+          rt.d_children[0].d_children[1].d_req_const = NodeManager::currentNM()->mkConst( Rational( 1 ) );
+          rt.d_children[1].d_req_type = d_tds->getArgType( dt[c], 0 );
+          //TODO: other possibilities?
+        }else if( k==LT || k==GEQ ){
+          //  (not (~ x y)) ----->  (~ y (+ x 1))
+          rt.d_req_kind = k;
+          rt.d_children[0].d_req_type = d_tds->getArgType( dt[c], 1 );
+          rt.d_children[1].d_req_kind = PLUS;
+          rt.d_children[1].d_children[0].d_req_type = d_tds->getArgType( dt[c], 0 );
+          rt.d_children[1].d_children[1].d_req_const = NodeManager::currentNM()->mkConst( Rational( 1 ) );
+        }else{
+          rt_valid = false;
+        }
+      }else if( parent==BITVECTOR_NOT ){
+        if( k==BITVECTOR_AND ) {
+          rt.d_req_kind = BITVECTOR_OR;reqk = BITVECTOR_NOT;
+        }else if( k==BITVECTOR_OR ){
+          rt.d_req_kind = BITVECTOR_AND;reqk = BITVECTOR_NOT;
+        }else if( k==BITVECTOR_XNOR ) {
+          rt.d_req_kind = BITVECTOR_XOR;
+        }else if( k==BITVECTOR_XOR ) {
+          rt.d_req_kind = BITVECTOR_XNOR;
+        }else{
+          rt_valid = false;
+        }
+      }else if( parent==UMINUS ){
+        if( k==PLUS ){
+          rt.d_req_kind = PLUS;reqk = UMINUS;
+        }else{
+          rt_valid = false;
+        }
+      }else if( parent==BITVECTOR_NEG ){
+        if( k==PLUS ){
+          rt.d_req_kind = PLUS;reqk = BITVECTOR_NEG;
+        }else{
+          rt_valid = false;
+        }
+      }
+      if( rt_valid && ( reqk!=UNDEFINED_KIND || !reqkc.empty() ) ){
+        int pcr = d_tds->getKindArg( tnp, rt.d_req_kind );
+        if( pcr!=-1 ){
+          Assert( pcr<(int)pdt.getNumConstructors() );
+          //must have same number of arguments
+          if( pdt[pcr].getNumArgs()==dt[c].getNumArgs() ){
+            for( unsigned i=0; i<pdt[pcr].getNumArgs(); i++ ){
+              Kind rk = reqk;
+              if( reqk==UNDEFINED_KIND ){
+                std::map< unsigned, Kind >::iterator itr = reqkc.find( i );
+                if( itr!=reqkc.end() ){
+                  rk = itr->second;
+                }
+              }
+              if( rk!=UNDEFINED_KIND ){
+                rt.d_children[i].d_req_kind = rk;
+                rt.d_children[i].d_children[0].d_req_type = d_tds->getArgType( dt[c], i );
+              }
+            }
+          }else{
+            rt_valid = false;
+          }
+        }else{
+          rt_valid = false;
+        }
+      }
+    }
+  }else if( k==MINUS || k==BITVECTOR_SUB ){
+    if( parent==EQUAL || 
+        parent==MINUS || parent==BITVECTOR_SUB || 
+        parent==LEQ || parent==LT || parent==GEQ || parent==GT ){
+      int oarg = arg==0 ? 1 : 0;
+      //  (~ x (- y z))  ---->  (~ (+ x z) y)
+      //  (~ (- y z) x)  ---->  (~ y (+ x z))
+      rt.d_req_kind = parent;
+      rt.d_children[arg].d_req_type = d_tds->getArgType( dt[c], 0 );
+      rt.d_children[oarg].d_req_kind = k==MINUS ? PLUS : BITVECTOR_PLUS;
+      rt.d_children[oarg].d_children[0].d_req_type = d_tds->getArgType( pdt[pc], oarg );
+      rt.d_children[oarg].d_children[1].d_req_type = d_tds->getArgType( dt[c], 1 );
+      rt_valid = true;
+    }else if( parent==PLUS || parent==BITVECTOR_PLUS ){
+      //  (+ x (- y z))  -----> (- (+ x y) z)
+      //  (+ (- y z) x)  -----> (- (+ x y) z)
+      rt.d_req_kind = parent==PLUS ? MINUS : BITVECTOR_SUB;
+      int oarg = arg==0 ? 1 : 0;
+      rt.d_children[0].d_req_kind = parent;
+      rt.d_children[0].d_children[0].d_req_type = d_tds->getArgType( pdt[pc], oarg );
+      rt.d_children[0].d_children[1].d_req_type = d_tds->getArgType( dt[c], 0 );
+      rt.d_children[1].d_req_type = d_tds->getArgType( dt[c], 1 );
+      rt_valid = true;
+    }
+  }else if( k==ITE ){
+    if( parent!=ITE ){
+      //  (o X (ite y z w) X')  -----> (ite y (o X z X') (o X w X'))
+      rt.d_req_kind = ITE;
+      rt.d_children[0].d_req_type = d_tds->getArgType( dt[c], 0 );
+      unsigned n_args = pdt[pc].getNumArgs();
+      for( unsigned r=1; r<=2; r++ ){
+        rt.d_children[r].d_req_kind = parent;
+        for( unsigned q=0; q<n_args; q++ ){
+          if( (int)q==arg ){
+            rt.d_children[r].d_children[q].d_req_type = d_tds->getArgType( dt[c], r );
+          }else{
+            rt.d_children[r].d_children[q].d_req_type = d_tds->getArgType( pdt[pc], q );
+          }
+        }
+      }
+      rt_valid = true;
+      //TODO: this increases term size but is probably a good idea
+    }
+  }else if( k==NOT ){
+    if( parent==ITE ){
+      //  (ite (not y) z w)  -----> (ite y w z)
+      rt.d_req_kind = ITE;
+      rt.d_children[0].d_req_type = d_tds->getArgType( dt[c], 0 );
+      rt.d_children[1].d_req_type = d_tds->getArgType( pdt[pc], 2 );
+      rt.d_children[2].d_req_type = d_tds->getArgType( pdt[pc], 1 );
+    }
+  }
+  Trace("sygus-consider-split") << "Consider sygus split kind " << k << ", parent = " << parent << ", arg = " << arg << "?" << std::endl;
+  if( rt_valid ){
+    rt.print("sygus-consider-split");
+    //check if it meets the requirements
+    if( rt.satisfiedBy( d_tds, tnp ) ){
+      Trace("sygus-consider-split") << "...success!" << std::endl;
+      //do not need to consider the kind in the search since there are ways to construct equivalent terms
+      return false;
+    }else{
+      Trace("sygus-consider-split") << "...failed." << std::endl;
+    }
+    Trace("sygus-consider-split") << std::endl;
+  }
+  //must consider this kind in the search  
+  return true;
+}
+
+//this function gets all easy redundant cases, before consulting rewriters
+bool SygusSplit::considerSygusSplitConst( const Datatype& dt, const Datatype& pdt, TypeNode tn, TypeNode tnp, Node c, Kind parent, int arg ) {
+  Assert( d_tds->hasConst( tn, c ) );
+  Assert( d_tds->hasKind( tnp, parent ) );
+  int pc = d_tds->getKindArg( tnp, parent );
+  Trace("sygus-split") << "Consider sygus split const " << c << ", parent = " << parent << ", arg = " << arg << "?" << std::endl;
+  if( d_tds->isIdempotentArg( c, parent, arg ) ){
+    Trace("sygus-split-debug") << "  " << c << " is idempotent arg " << arg << " of " << parent << "..." << std::endl;
+    if( pdt[pc].getNumArgs()==2 ){
+      int oarg = arg==0 ? 1 : 0;
+      TypeNode otn = TypeNode::fromType( ((SelectorType)pdt[pc][oarg].getType()).getRangeType() );
+      if( otn==tnp ){
+        return false;
+      }
+    }
+  }else if( d_tds->isSingularArg( c, parent, arg ) ){
+    Trace("sygus-split-debug") << "  " << c << " is singular arg " << arg << " of " << parent << "..." << std::endl;
+    if( d_tds->hasConst( tnp, c ) ){
+      return false;
+    }
+  }
+  if( pdt[pc].getNumArgs()==2 ){
+    Kind ok;
+    int offset;
+    if( d_tds->hasOffsetArg( parent, arg, offset, ok ) ){
+      Trace("sygus-split-debug") << parent << " has offset arg " << ok << " " << offset << std::endl;
+      int ok_arg = d_tds->getKindArg( tnp, ok );
+      if( ok_arg!=-1 ){
+        Trace("sygus-split-debug") << "...at argument " << ok_arg << std::endl;
+        //other operator be the same type
+        if( isTypeMatch( pdt[ok_arg], pdt[arg] ) ){
+          int status;
+          Node co = d_tds->getTypeValueOffset( c.getType(), c, offset, status );
+          Trace("sygus-split-debug") << c << " with offset " << offset << " is " << co << ", status=" << status << std::endl;
+          if( status==0 && !co.isNull() ){
+            if( d_tds->hasConst( tn, co ) ){
+              Trace("sygus-split-debug") << "arg " << arg << " " << c << " in " << parent << " can be treated as " << co << " in " << ok << "..." << std::endl;
+              return false;
+            }else{
+              Trace("sygus-split-debug") << "Type does not have constant." << std::endl;
+            }
+          }
+        }else{
+          Trace("sygus-split-debug") << "Type mismatch." << std::endl;
+        }
+      }
+    }
+  }
+  return true;
+}
+
+int SygusSplit::getFirstArgOccurrence( const DatatypeConstructor& c, const Datatype& dt ) {
+  for( unsigned i=0; i<c.getNumArgs(); i++ ){
+    if( isArgDatatype( c, i, dt ) ){
+      return i;
+    }
+  }
+  return -1;
+}
+
+bool SygusSplit::isArgDatatype( const DatatypeConstructor& c, int i, const Datatype& dt ) {
+  TypeNode tni = d_tds->getArgType( c, i );
+  if( tni.isDatatype() ){
+    const Datatype& adt = ((DatatypeType)(tni).toType()).getDatatype();
+    if( adt==dt ){
+      return true;
+    }
+  }
+  return false;
+}
+
+bool SygusSplit::isTypeMatch( const DatatypeConstructor& c1, const DatatypeConstructor& c2 ){
+  if( c1.getNumArgs()!=c2.getNumArgs() ){
+    return false;
+  }else{
+    for( unsigned i=0; i<c1.getNumArgs(); i++ ){
+      if( d_tds->getArgType( c1, i )!=d_tds->getArgType( c2, i ) ){
+        return false;
+      }
+    }
+    return true;
+  }
+}
+
+bool SygusSplit::isGenericRedundant( TypeNode tn, Node g, bool active ) {
+  //everything added to this cache should be mutually exclusive cases
+  std::map< Node, bool >::iterator it = d_gen_redundant[tn].find( g );
+  if( it==d_gen_redundant[tn].end() ){
+    Trace("sygus-gnf") << "Register generic for " << tn << " : " << g << std::endl;
+    Node gr = d_tds->getNormalized( tn, g, false );
+    Trace("sygus-gnf-debug") << "Generic " << g << " rewrites to " << gr << std::endl;
+    if( active ){
+      std::map< Node, Node >::iterator itg = d_gen_terms[tn].find( gr );
+      bool red = true;
+      if( itg==d_gen_terms[tn].end() ){
+        red = false;
+        d_gen_terms[tn][gr] = g;
+        d_gen_terms_inactive[tn][gr] = g;
+        Trace("sygus-gnf-debug") << "...not redundant." << std::endl;
+        Trace("sygus-nf-reg") << "*** Sygus (generic) normal form : normal form of " << g << " is " << gr << std::endl;
+      }else{
+        Trace("sygus-gnf-debug") << "...redundant." << std::endl;
+        Trace("sygus-nf") << "* Sygus normal form : simplify since " << g << " and " << itg->second << " both rewrite to " << gr << std::endl;
+      }
+      d_gen_redundant[tn][g] = red;
+      return red;
+    }else{
+      std::map< Node, Node >::iterator itg = d_gen_terms_inactive[tn].find( gr );
+      if( itg==d_gen_terms_inactive[tn].end() ){
+        Trace("sygus-nf-temp") << "..." << g << " rewrites to " << gr << std::endl;
+        d_gen_terms_inactive[tn][gr] = g;
+      }else{
+        Trace("sygus-nf-temp") << "* Note " << g << " and " << itg->second << " both rewrite to " << gr << std::endl;
+      }
+      return false;
+    }
+  }else{
+    return it->second;
+  }
+}
+
+
+
+SygusSymBreak::SygusSymBreak( quantifiers::TermDbSygus * tds, context::Context* c ) : d_tds( tds ), d_context( c ) {
+
+}
+
+SygusSymBreak::~SygusSymBreak() {
+  for(std::map< Node, ProgSearch* >::iterator i = d_prog_search.begin(), iend = d_prog_search.end();
+      i != iend; ++i){
+    ProgSearch* current = (*i).second;
+    if(current != NULL){
+      delete current;
+    }
+  }
+}
+
+void SygusSymBreak::addTester( int tindex, Node n, Node exp ) {
+  if( options::sygusNormalFormGlobal() ){
+    Node a = getAnchor( n );
+    Trace("sygus-sym-break-debug") << "Add tester " << tindex << " " << n << " for " << a << std::endl;
+    std::map< Node, ProgSearch * >::iterator it = d_prog_search.find( a );
+    ProgSearch * ps;
+    if( it==d_prog_search.end() ){
+      //check if sygus type
+      TypeNode tn = a.getType();
+      Assert( tn.isDatatype() );
+      const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+      if( dt.isSygus() ){
+        ps = new ProgSearch( this, a, d_context );
+      }else{
+        ps = NULL;
+      }
+      d_prog_search[a] = ps;
+    }else{
+      ps = it->second;
+    }
+    if( ps ){
+      ps->addTester( tindex, n, exp );
+    }
+  }
+}
+
+Node SygusSymBreak::getAnchor( Node n ) {
+  if( n.getKind()==APPLY_SELECTOR_TOTAL ){
+    return getAnchor( n[0] );
+  }else{
+    return n;
+  }
+}
+
+void SygusSymBreak::ProgSearch::addTester( int tindex, Node n, Node exp ) {
+#ifdef CVC4_ASSERTIONS
+  Node a;
+  int teindex = DatatypesRewriter::isTester( exp, a );
+  Assert( teindex==tindex );
+  Assert( a==n );
+#endif
+  NodeMap::const_iterator it = d_testers.find( n );
+  if( it==d_testers.end() ){
+    d_testers[n] = exp;
+    if( n==d_anchor ){
+      assignTester( tindex, n, 0 );
+    }else{
+      IntMap::const_iterator it = d_watched_terms.find( n );
+      if( it!=d_watched_terms.end() ){
+        assignTester( tindex, n, (*it).second );
+      }else{
+        Trace("sygus-sym-break-debug2") << "...add to wait list " << tindex << " " << n << " for " << d_anchor << std::endl;
+      }
+    }
+  }else{
+    Trace("sygus-sym-break-debug2") << "...already seen " << tindex << " " << n << " for " << d_anchor << std::endl;
+  }
+}
+
+bool SygusSymBreak::ProgSearch::assignTester( int tindex, Node n, int depth ) {
+  Trace("sygus-sym-break-debug") << "SymBreak : Assign tester : " << tindex << " " << n << ", depth = " << depth << " of " << d_anchor << std::endl;
+  TypeNode tn = n.getType();
+  Assert( tn.isDatatype() );
+  const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+  std::vector< Node > tst_waiting;
+  for( unsigned i=0; i<dt[tindex].getNumArgs(); i++ ){
+    Node sel = NodeManager::currentNM()->mkNode( kind::APPLY_SELECTOR_TOTAL, Node::fromExpr( dt[tindex][i].getSelector() ), n );
+    NodeMap::const_iterator it = d_testers.find( sel );
+    if( it!=d_testers.end() ){
+      tst_waiting.push_back( (*it).second );
+    }else{
+      Trace("sygus-sym-break-debug") << "...add " << sel << " as watch term for " << (depth+1) << std::endl;
+      d_watched_terms[sel] = depth+1;
+    }
+  }
+  //update watched count
+  IntIntMap::const_iterator it = d_watched_count.find( depth+1 );
+  if( it==d_watched_count.end() ){
+    d_watched_count[depth+1] = dt[tindex].getNumArgs();
+  }else{
+    d_watched_count[depth+1] = d_watched_count[depth+1] + dt[tindex].getNumArgs();
+  }
+  Trace("sygus-sym-break-debug") << "...watched count now " << d_watched_count[depth+1].get() << " for " << (depth+1) << " of " << d_anchor << std::endl;
+  //now decrement watch count and process
+  if( depth>0 ){
+    Assert( d_watched_count[depth]>0 );
+    d_watched_count[depth] = d_watched_count[depth] - 1;
+  }
+  //determine if any subprograms on the current path are redundant
+  if( processSubprograms( n, depth, depth ) ){
+    if( processProgramDepth( depth ) ){
+      //assign preexisting testers
+      for( unsigned i=0; i<tst_waiting.size(); i++ ){
+        Node nw;
+        int tindexw = DatatypesRewriter::isTester( tst_waiting[i], nw );
+        Assert( tindexw!=-1 );
+        if( !assignTester( tindexw, nw, depth+1 ) ){
+          return false;
+        }
+      }
+      return true;
+    }
+  }
+  return false;
+}
+
+bool SygusSymBreak::ProgSearch::processProgramDepth( int depth ){
+  if( depth==d_prog_depth.get() && ( depth==0 || ( d_watched_count.find( depth )!=d_watched_count.end() && d_watched_count[depth]==0 ) ) ){
+    d_prog_depth = d_prog_depth + 1;
+    if( depth>0 ){
+      Trace("sygus-sym-break-debug") << "Program is set for depth " << depth << std::endl;
+      std::map< TypeNode, int > var_count;
+      std::vector< Node > testers;
+      std::map< Node, std::vector< Node > > testers_u;
+      //now have entire information about candidate program at given depth
+      Node prog = getCandidateProgramAtDepth( depth, d_anchor, 0, Node::null(), var_count, testers, testers_u );
+      if( !prog.isNull() ){
+        if( !d_parent->processCurrentProgram( d_anchor, d_anchor_type, depth, prog, testers, testers_u, var_count ) ){
+          return false;
+        }
+      }else{
+        Assert( false );
+      }
+    }
+    return processProgramDepth( depth+1 );
+  }else{
+    return true;
+  }
+}
+
+bool SygusSymBreak::ProgSearch::processSubprograms( Node n, int depth, int odepth ) {
+  Trace("sygus-sym-break-debug") << "Processing subprograms on path " << n << ", which has depth " << depth << std::endl;
+  depth--;
+  if( depth>0 ){
+    Assert( n.getKind()==APPLY_SELECTOR_TOTAL );
+    std::map< TypeNode, int > var_count;
+    std::vector< Node > testers;
+    std::map< Node, std::vector< Node > > testers_u;
+    //now have entire information about candidate program at given depth
+    Node prog = getCandidateProgramAtDepth( odepth-depth, n[0], 0, Node::null(), var_count, testers, testers_u );
+    if( !prog.isNull() ){
+      if( !d_parent->processCurrentProgram( n[0], n[0].getType(), odepth-depth, prog, testers, testers_u, var_count ) ){
+        return false;
+      }
+      //also try higher levels
+      return processSubprograms( n[0], depth, odepth );
+    }else{
+      Trace("sygus-sym-break-debug") << "...program incomplete." << std::endl;
+    }
+  }
+  return true;
+}
+
+Node SygusSymBreak::ProgSearch::getCandidateProgramAtDepth( int depth, Node prog, int curr_depth, Node parent, std::map< TypeNode, int >& var_count,
+                                                            std::vector< Node >& testers, std::map< Node, std::vector< Node > >& testers_u ) {
+  Assert( depth>=curr_depth );
+  Trace("sygus-sym-break-debug") << "Reconstructing program for " << prog << " at depth " << curr_depth << "/" << depth << " " << prog.getType() << std::endl;
+  NodeMap::const_iterator it = d_testers.find( prog );
+  if( it!=d_testers.end() ){
+    Node tst = (*it).second;
+    testers.push_back( tst );
+    testers_u[parent].push_back( tst );
+    //Assert( tst[0]==prog );
+    int tindex = DatatypesRewriter::isTester( tst );//Datatype::indexOf( tst.getOperator().toExpr() );
+    Assert( tindex!=-1 );
+    TypeNode tn = prog.getType();
+    Assert( tn.isDatatype() );
+    const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+    std::map< int, Node > pre;
+    if( curr_depth<depth ){
+      for( unsigned i=0; i<dt[tindex].getNumArgs(); i++ ){
+        Node sel = NodeManager::currentNM()->mkNode( kind::APPLY_SELECTOR_TOTAL, Node::fromExpr( dt[tindex][i].getSelector() ), prog );
+        pre[i] = getCandidateProgramAtDepth( depth, sel, curr_depth+1, prog, var_count, testers, testers_u );
+        if( pre[i].isNull() ){
+          return Node::null();
+        }
+      }
+    }
+    return d_parent->d_tds->mkGeneric( dt, tindex, var_count, pre );
+  }else{
+    Trace("sygus-sym-break-debug") << "...failure." << std::endl;
+    return Node::null();
+  }
+}
+
+bool SygusSymBreak::processCurrentProgram( Node a, TypeNode at, int depth, Node prog,
+                                           std::vector< Node >& testers, std::map< Node, std::vector< Node > >& testers_u,
+                                           std::map< TypeNode, int >& var_count ) {
+  Assert( a.getType()==at );
+  std::map< Node, bool >::iterator it = d_redundant[at].find( prog );
+  bool red;
+  if( it==d_redundant[at].end() ){
+    Trace("sygus-sym-break") << "Currently considering program : " << prog << " at depth " << depth << " for " << a << std::endl;
+    Node progr = d_tds->getNormalized( at, prog );
+    Node rep_prog;
+    std::map< Node, Node >::iterator itnp = d_normalized_to_orig[at].find( progr );
+    int tsize = d_tds->getSygusTermSize( prog );
+    if( itnp==d_normalized_to_orig[at].end() ){
+      d_normalized_to_orig[at][progr] = prog;
+      if( progr.getKind()==SKOLEM && d_tds->getSygusTypeForVar( progr )==at ){
+        Trace("sygus-nf") << "* Sygus sym break : " << prog << " rewrites to variable " << progr << " of same type as self" << std::endl;
+        d_redundant[at][prog] = true;
+        red = true;
+      }else{
+        d_redundant[at][prog] = false;
+        red = false;
+        Trace("sygus-nf-reg") << "*** Sygus normal form : normal form of " << prog << " is " << progr << std::endl;
+      }
+    }else{
+      rep_prog = itnp->second;
+      if( tsize<d_normalized_to_term_size[at][progr] ){
+        d_normalized_to_orig[at][progr] = prog;
+        Trace("sygus-nf-debug") << "Program is redundant, but has smaller size than " << rep_prog << std::endl;
+        d_redundant[at].erase( rep_prog );
+        d_redundant[at][prog] = false;
+        red = false;
+        Trace("sygus-nf-reg") << "*** Sygus normal form : normal form of " << prog << " is " << progr << " (redundant but smaller than " << rep_prog << ") " << std::endl;
+      }else{
+        Assert( prog!=itnp->second );
+        d_redundant[at][prog] = true;
+        red = true;
+        Trace("sygus-nf") << "* Sygus sym break : " << prog << " and " << rep_prog << " both rewrite to " << progr << std::endl;
+        Trace("sygus-nf-debug") << "  sizes : " << tsize << " " << d_normalized_to_term_size[at][progr] << std::endl;
+      }
+    }
+    if( !red ){
+      d_normalized_to_term_size[at][progr] = tsize;
+    }else{
+      Assert( !testers.empty() );
+      bool conflict_gen_set = false;
+      if( options::sygusNormalFormGlobalGen() ){
+        bool narrow = false;
+        Trace("sygus-nf-gen-debug") << "Tester tree is : " << std::endl;
+        for( std::map< Node, std::vector< Node > >::iterator it = testers_u.begin(); it != testers_u.end(); ++it ){
+          Trace("sygus-nf-gen-debug") << "  " << it->first << " -> " << std::endl;
+          for( unsigned i=0; i<it->second.size(); i++ ){
+            Trace("sygus-nf-gen-debug") << "    " << it->second[i] << std::endl;
+          }
+        }
+        Trace("sygus-nf-gen-debug") << std::endl;
+
+        //generalize conflict
+        if( prog.getNumChildren()>0 ){
+          Assert( !testers.empty() );
+          d_tds->registerSygusType( at );
+          //Trace("sygus-nf-gen-debug") << "Testers are : " << std::endl;
+          //for( unsigned i=0; i<testers.size(); i++ ){
+          //  Trace("sygus-nf-gen-debug") << "* " << testers[i] << std::endl;
+          //}
+          Assert( testers[0][0]==a );
+          Assert( prog.getNumChildren()==testers_u[a].size() );
+          //get the normal form for each child
+          Kind parentKind = prog.getKind();
+          Kind parentOpKind = prog.getOperator().getKind();
+          Trace("sygus-nf-gen-debug") << "Parent kind is " << parentKind << " " << parentOpKind << std::endl;
+          //std::map< int, Node > norm_children;
+
+          //arguments that are relevant
+          std::map< unsigned, bool > rlv;
+          //testers that are irrelevant
+          std::map< Node, bool > irrlv_tst;
+
+          std::vector< Node > children;
+          std::vector< TypeNode > children_stype;
+          std::vector< Node > nchildren;
+          for( unsigned i=0; i<testers_u[a].size(); i++ ){
+            TypeNode tn = testers_u[a][i][0].getType();
+            children.push_back( prog[i] );
+            children_stype.push_back( tn );
+            Node nc = d_tds->getNormalized( tn, prog[i], true );
+            //norm_children[i] = nc;
+            rlv[i] = true;
+            nchildren.push_back( nc );
+            Trace("sygus-nf-gen") << "- child " << i << " normalizes to " << nc << std::endl;
+          }
+          if( testers_u[a].size()>1 ){
+            bool finished = false;
+            const Datatype & pdt = ((DatatypeType)(at).toType()).getDatatype();
+            int pc = DatatypesRewriter::isTester( testers[0] );//Datatype::indexOf( testers[0].getOperator().toExpr() );
+            Assert( pc!=-1 );
+            // [1] determine a minimal subset of the arguments that the rewriting depended on
+            //quick checks based on constants
+            for( unsigned i=0; i<nchildren.size(); i++ ){
+              Node arg = nchildren[i];
+              if( arg.isConst() ){
+                if( parentOpKind==kind::BUILTIN ){
+                  Trace("sygus-nf-gen") << "-- constant arg " <<i << " under builtin operator." << std::endl;
+                  if( !processConstantArg( at, pdt, pc, parentKind, i, arg, rlv ) ){
+                    Trace("sygus-nf") << "  - argument " << i << " is singularly redundant." << std::endl;
+                    for( std::map< unsigned, bool >::iterator itr = rlv.begin(); itr != rlv.end(); ++itr ){
+                      if( itr->first!=i ){
+                        rlv[itr->first] = false;
+                      }
+                    }
+                    narrow = true;
+                    finished = true;
+                    break;
+                  }
+                }
+              }
+            }
+
+            if( !finished ){
+              // [2] check replacing each argument with a fresh variable gives the same result
+              Node progc = prog;
+              if( options::sygusNormalFormGlobalArg() ){
+                bool argChanged = false;
+                Trace("sygus-nf-gen-debug") << "Check replacements on " << prog << " " << prog.getKind() << std::endl;
+                for( unsigned i=0; i<prog.getNumChildren(); i++ ){
+                  Node prev = children[i];
+                  children[i] = d_tds->getVarInc( children_stype[i], var_count );
+                  if( parentOpKind!=kind::BUILTIN ){
+                    children.insert( children.begin(), prog.getOperator() );
+                  }
+                  Node progcn = NodeManager::currentNM()->mkNode( prog.getKind(), children );
+                  if( parentOpKind!=kind::BUILTIN ){
+                    children.erase( children.begin(), children.begin() + 1 );
+                  }
+                  Node progcr = Rewriter::rewrite( progcn );
+                  Trace("sygus-nf-gen-debug") << "Var replace argument " << i << " : " << progcn << " -> " << progcr << std::endl;
+                  if( progcr==progr ){
+                    //this argument is not relevant, continue with it remaining as variable
+                    rlv[i] = false;
+                    argChanged = true;
+                    narrow = true;
+                    Trace("sygus-nf") << "  - argument " << i << " is not relevant." << std::endl;
+                  }else{
+                    //go back to original
+                    children[i] = prev;
+                    var_count[children_stype[i]]--;
+                  }
+                }
+                if( argChanged ){
+                  progc = NodeManager::currentNM()->mkNode( prog.getKind(), children );
+                }
+              }
+              Trace("sygus-nf-gen-debug") << "Relevant template (post argument analysis) is : " << progc << std::endl;
+
+              // [3] generalize content
+              if( options::sygusNormalFormGlobalContent() ){
+                std::map< Node, std::vector< Node > > nodes;
+                std::vector< Node > curr_vars;
+                std::vector< Node > curr_subs;
+                collectSubterms( progc, testers[0], testers_u, nodes );
+                for( std::map< Node, std::vector< Node > >::iterator it = nodes.begin(); it != nodes.end(); ++it ){
+                  if( it->second.size()>1 ){
+                    Trace("sygus-nf-gen-debug") << it->first << " occurs " << it->second.size() << " times, at : " << std::endl;
+                    bool success = true;
+                    TypeNode tn;
+                    for( unsigned j=0; j<it->second.size(); j++ ){
+                      Trace("sygus-nf-gen-debug") << "  " << it->second[j] << " ";
+                      TypeNode tnc = it->second[j][0].getType();
+                      if( !tn.isNull() && tn!=tnc ){
+                        success = false;
+                      }
+                      tn = tnc;
+                    }
+                    Trace("sygus-nf-gen-debug") << std::endl;
+                    if( success ){
+                      Node prev = progc;
+                      //try a substitution on all terms of this form simultaneously to see if the content of this subterm is irrelevant
+                      TypeNode tn = it->second[0][0].getType();
+                      TNode st = it->first;
+                      //we may already have substituted within this subterm
+                      if( !curr_subs.empty() ){
+                        st = st.substitute( curr_vars.begin(), curr_vars.end(), curr_subs.begin(), curr_subs.end() );
+                        Trace("sygus-nf-gen-debug") << "...substituted : " << st << std::endl;
+                      }
+                      TNode nv = d_tds->getVarInc( tn, var_count );
+                      progc = progc.substitute( st, nv );
+                      Node progcr = Rewriter::rewrite( progc );
+                      Trace("sygus-nf-gen-debug") << "Var replace content " << st << " : " << progc << " -> " << progcr << std::endl;
+                      if( progcr==progr ){
+                        narrow = true;
+                        Trace("sygus-nf") << "  - content " << st << " is not relevant." << std::endl;
+                        int t_prev = -1;
+                        for( unsigned i=0; i<it->second.size(); i++ ){
+                          irrlv_tst[it->second[i]] = true;
+                          Trace("sygus-nf-gen-debug") << "By content, " << it->second[i] << " is irrelevant." << std::endl;
+                          int t_curr = std::find( testers.begin(), testers.end(), it->second[i] )-testers.begin();
+                          Assert( testers[t_curr]==it->second[i] );
+                          if( t_prev!=-1 ){
+                            d_lemma_inc_eq[at][prog].push_back( std::pair< int, int >( t_prev, t_curr ) );
+                            Trace("sygus-nf-gen-debug") << "Which requires " << testers[t_prev][0] << " = " << testers[t_curr][0] << std::endl;
+                          }
+                          t_prev = t_curr;
+                        }
+                        curr_vars.push_back( st );
+                        curr_subs.push_back( nv );
+                      }else{
+                        var_count[tn]--;
+                        progc = prev;
+                      }
+                    }else{
+                      Trace("sygus-nf-gen-debug") << "...content is from multiple grammars, abort." << std::endl;
+                    }
+                  }
+                }
+              }
+              Trace("sygus-nf-gen-debug") << "Relevant template (post content analysis) is : " << progc << std::endl;
+            }
+            if( narrow ){
+              //relevant testers : root + recursive collection of relevant children
+              Trace("sygus-nf-gen-debug") << "Collect relevant testers..." << std::endl;
+              std::vector< Node > rlv_testers;
+              rlv_testers.push_back( testers[0] );
+              for( unsigned i=0; i<testers_u[a].size(); i++ ){
+                if( rlv[i] ){
+                  collectTesters( testers_u[a][i], testers_u, rlv_testers, irrlv_tst );
+                }
+              }
+              //must guard case : generalized lemma cannot exclude original representation
+              if( !isSeparation( rep_prog, testers[0], testers_u, rlv_testers ) ){
+                //must construct template
+                Node anc_var;
+                std::map< TypeNode, Node >::iterator itav = d_anchor_var.find( at );
+                if( itav==d_anchor_var.end() ){
+                  anc_var = NodeManager::currentNM()->mkSkolem( "a", at, "Sygus nf global gen anchor var" );
+                  d_anchor_var[at] = anc_var;
+                }else{
+                  anc_var = itav->second;
+                }
+                int status = 0;
+                Node anc_temp = getSeparationTemplate( at, rep_prog, anc_var, status );
+                Trace("sygus-nf") << "  -- separation template is " << anc_temp << ", status = " << status << std::endl;
+                d_lemma_inc_eq_gr[status][at][prog].push_back( anc_temp );
+              }else{
+                Trace("sygus-nf") << "  -- no separation necessary" << std::endl;
+              }
+              Trace("sygus-nf-gen-debug") << "Relevant testers : " << std::endl;
+              for( unsigned i=0; i<testers.size(); i++ ){
+                bool rl = std::find( rlv_testers.begin(), rlv_testers.end(), testers[i] )!=rlv_testers.end();
+                Trace("sygus-nf-gen-debug") << "* " << testers[i] << " -> " << rl << std::endl;
+                d_lemma_inc_tst[at][prog].push_back( rl );
+              }
+
+              conflict_gen_set = true;
+            }
+          }
+        }
+      }
+      if( !conflict_gen_set ){
+        for( unsigned i=0; i<testers.size(); i++ ){
+          d_lemma_inc_tst[at][prog].push_back( true );
+        }
+      }
+    }
+  }else{
+    red = it->second;
+    Trace("sygus-nf-debug") << "Already processed, redundant : " << red << std::endl;
+  }
+  if( red ){
+    if( std::find( d_lemmas_reported[at][prog].begin(), d_lemmas_reported[at][prog].end(), a )==d_lemmas_reported[at][prog].end() ){
+      d_lemmas_reported[at][prog].push_back( a );
+      Assert( d_lemma_inc_tst[at][prog].size()==testers.size() );
+      std::vector< Node > disj;
+      //get the guard equalities
+      for( unsigned r=0; r<2; r++ ){
+        for( unsigned i=0; i<d_lemma_inc_eq_gr[r][at][prog].size(); i++ ){
+          TNode n2 = d_lemma_inc_eq_gr[r][at][prog][i];
+          if( r==1 ){
+            TNode anc_var = d_anchor_var[at];
+            TNode anc = a;
+            Assert( !anc_var.isNull() );
+            n2 = n2.substitute( anc_var, anc );
+          }
+          disj.push_back( a.eqNode( n2 ) );
+        }
+      }
+      //get the equalities that should be included
+      for( unsigned i=0; i<d_lemma_inc_eq[at][prog].size(); i++ ){
+        TNode n1 = testers[ d_lemma_inc_eq[at][prog][i].first ][0];
+        TNode n2 = testers[ d_lemma_inc_eq[at][prog][i].second ][0];
+        disj.push_back( n1.eqNode( n2 ).negate() );
+      }
+      //get the testers that should be included
+      for( unsigned i=0; i<testers.size(); i++ ){
+        if( d_lemma_inc_tst[at][prog][i] ){
+          disj.push_back( testers[i].negate() );
+        }
+      }
+      Node lem = disj.size()==1 ? disj[0] : NodeManager::currentNM()->mkNode( OR, disj );
+      d_lemmas.push_back( lem );
+      Trace("sygus-sym-break-lemma") << "Sym break lemma : " << lem << std::endl;
+    }else{
+      Trace("sygus-sym-break2") << "repeated lemma for " << prog << " from " << a << std::endl;
+    }
+    //for now, continue adding lemmas (since we are not forcing conflicts)
+    //return false;
+  }
+  return true;
+}
+
+bool SygusSymBreak::isSeparation( Node rep_prog, Node tst_curr, std::map< Node, std::vector< Node > >& testers_u, std::vector< Node >& rlv_testers ) {
+  TypeNode tn = tst_curr[0].getType();
+  Trace("sygus-nf-gen-debug") << "is separation " << rep_prog << " " << tst_curr << " " << tn << std::endl;
+  Node rop = rep_prog.getNumChildren()==0 ? rep_prog : rep_prog.getOperator();
+  //we can continue if the tester in question is relevant
+  if( std::find( rlv_testers.begin(), rlv_testers.end(), tst_curr )!=rlv_testers.end() ){
+    int tindex = DatatypesRewriter::isTester( tst_curr );
+    Assert( tindex!=-1 );
+    //unsigned tindex = Datatype::indexOf( tst_curr.getOperator().toExpr() );
+    d_tds->registerSygusType( tn );
+    Node op = d_tds->getArgOp( tn, tindex );
+    if( op!=rop ){
+      Trace("sygus-nf-gen-debug") << "mismatch, success." << std::endl;
+      return true;
+    }else if( !testers_u[tst_curr[0]].empty() ){
+      Assert( testers_u[tst_curr[0]].size()==rep_prog.getNumChildren() );
+      for( unsigned i=0; i<rep_prog.getNumChildren(); i++ ){
+        if( isSeparation( rep_prog[i], testers_u[tst_curr[0]][i], testers_u, rlv_testers ) ){
+          return true;
+        }
+      }
+    }
+    return false;
+  }else{
+    Trace("sygus-nf-gen-debug") << "not relevant, fail." << std::endl;
+    return false;
+  }
+}
+
+Node SygusSymBreak::getSeparationTemplate( TypeNode tn,  Node rep_prog, Node anc_var, int& status ) {
+  Trace("sygus-nf-gen-debug") << "get separation template " << rep_prog << std::endl;
+  const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+  if( d_tds->isVar( rep_prog ) ){
+    status = 1;
+    return anc_var;
+  }else{
+    Node rop = rep_prog.getNumChildren()==0 ? rep_prog : rep_prog.getOperator();
+    int rop_arg = d_tds->getOpArg( tn, rop );
+    Assert( rop_arg>=0 && rop_arg<(int)dt.getNumConstructors() );
+    Assert( rep_prog.getNumChildren()==dt[rop_arg].getNumArgs() );
+
+    std::vector< Node > children;
+    children.push_back( Node::fromExpr( dt[rop_arg].getConstructor() ) );
+    for( unsigned i=0; i<rep_prog.getNumChildren(); i++ ){
+      TypeNode tna = TypeNode::fromType( ((SelectorType)dt[rop_arg][i].getType()).getRangeType() );
+
+      int new_status = 0;
+      Node arg = getSeparationTemplate( tna, rep_prog[i], anc_var, new_status );
+      if( new_status==1 ){
+        TNode tanc_var = anc_var;
+        TNode tanc_var_subs = NodeManager::currentNM()->mkNode( APPLY_SELECTOR_TOTAL, Node::fromExpr( dt[rop_arg][i].getSelector() ), anc_var );
+        arg = arg.substitute( tanc_var, tanc_var_subs );
+        status = 1;
+      }
+      children.push_back( arg );
+    }
+    return NodeManager::currentNM()->mkNode( APPLY_CONSTRUCTOR, children );
+  }
+}
+
+bool SygusSymBreak::processConstantArg( TypeNode tnp, const Datatype & pdt, int pc,
+                                        Kind k, int i, Node arg, std::map< unsigned, bool >& rlv ) {
+  Assert( d_tds->hasKind( tnp, k ) );
+  if( k==AND || k==OR || ( k==EQUAL && arg.getType().isBoolean() ) || k==XOR || k==IMPLIES || ( k==ITE && i==0 ) ){
+    return false;
+  }else if( d_tds->isIdempotentArg( arg, k, i ) ){
+    if( pdt[pc].getNumArgs()==2 ){
+      int oi = i==0 ? 1 : 0;
+      TypeNode otn = TypeNode::fromType( ((SelectorType)pdt[pc][oi].getType()).getRangeType() );
+      if( otn==tnp ){
+        return false;
+      }
+    }
+  }else if( d_tds->isSingularArg( arg, k, i ) ){
+    if( d_tds->hasConst( tnp, arg ) ){
+      return false;
+    }
+  }
+  TypeNode tn = arg.getType();
+  return true;
+}
+
+void SygusSymBreak::collectTesters( Node tst, std::map< Node, std::vector< Node > >& testers_u, std::vector< Node >& testers, std::map< Node, bool >& irrlv_tst ) {
+  if( irrlv_tst.find( tst )==irrlv_tst.end() ){
+    testers.push_back( tst );
+    std::map< Node, std::vector< Node > >::iterator it = testers_u.find( tst[0] );
+    if( it!=testers_u.end() ){
+      for( unsigned i=0; i<it->second.size(); i++ ){
+        collectTesters( it->second[i], testers_u, testers, irrlv_tst );
+      }
+    }
+  }
+}
+
+void SygusSymBreak::collectSubterms( Node n, Node tst_curr, std::map< Node, std::vector< Node > >& testers_u, std::map< Node, std::vector< Node > >& nodes ) {
+  if( !d_tds->isVar( n ) ){
+    nodes[n].push_back( tst_curr );
+    for( unsigned i=0; i<testers_u[tst_curr[0]].size(); i++ ){
+      collectSubterms( n[i], testers_u[tst_curr[0]][i], testers_u, nodes );
+    }
+  }
+}
diff --git a/src/theory/datatypes/datatypes_sygus.h b/src/theory/datatypes/datatypes_sygus.h
new file mode 100644
index 0000000..155b15e
--- /dev/null
+++ b/src/theory/datatypes/datatypes_sygus.h
@@ -0,0 +1,145 @@
+/*********************                                                        */
+/*! \file datatypes_sygus.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Sygus utilities for theory of datatypes
+ **
+ ** Theory of datatypes.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__DATATYPES__DATATYPES_SYGUS_H
+#define __CVC4__THEORY__DATATYPES__DATATYPES_SYGUS_H
+
+#include <iostream>
+#include <map>
+
+#include "expr/node.h"
+#include "expr/datatype.h"
+#include "context/context.h"
+#include "context/cdchunk_list.h"
+#include "context/cdhashmap.h"
+#include "context/cdo.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+  class TermDbSygus;
+} /* namespace quantifiers */
+
+namespace datatypes {
+
+class SygusSplit
+{
+private:
+  quantifiers::TermDbSygus * d_tds;
+  std::map< Node, std::vector< Node > > d_splits;
+  std::map< TypeNode, std::vector< bool > > d_sygus_nred;
+  std::map< TypeNode, std::map< int, std::map< int, std::vector< bool > > > > d_sygus_pc_nred;
+  std::map< TypeNode, std::map< int, std::map< int, std::vector< int > > > > d_sygus_pc_arg_pos;
+  std::map< TypeNode, TypeNode > d_register;  //stores sygus type
+  // type to (rewritten) to original
+  std::map< TypeNode, std::map< Node, Node > > d_gen_terms;
+  std::map< TypeNode, std::map< Node, Node > > d_gen_terms_inactive;
+  std::map< TypeNode, std::map< Node, bool > > d_gen_redundant;
+private:
+  /** register sygus type */
+  void registerSygusType( TypeNode tn );
+  /** register sygus operator */
+  void registerSygusTypeConstructorArg( TypeNode tnn, const Datatype& dt, TypeNode tnnp, const Datatype& pdt, int csIndex, int sIndex );
+  /** consider sygus split */
+  bool considerSygusSplitKind( const Datatype& dt, const Datatype& pdt, TypeNode tn, TypeNode tnp, Kind k, Kind parent, int arg );
+  bool considerSygusSplitConst( const Datatype& dt, const Datatype& pdt, TypeNode tn, TypeNode tnp, Node c, Kind parent, int arg );
+  /** get first occurrence */
+  int getFirstArgOccurrence( const DatatypeConstructor& c, const Datatype& dt );
+  /** is arg datatype */
+  bool isArgDatatype( const DatatypeConstructor& c, int i, const Datatype& dt );
+  /** is type match */
+  bool isTypeMatch( const DatatypeConstructor& c1, const DatatypeConstructor& c2 );
+private:
+  // generic cache
+  bool isGenericRedundant( TypeNode tn, Node g, bool active = true );
+public:
+  SygusSplit( quantifiers::TermDbSygus * tds ) : d_tds( tds ){}
+  ~SygusSplit(){}
+  /** get sygus splits */
+  void getSygusSplits( Node n, const Datatype& dt, std::vector< Node >& splits, std::vector< Node >& lemmas );
+};
+
+
+
+
+class SygusSymBreak
+{
+private:
+  quantifiers::TermDbSygus * d_tds;
+  context::Context* d_context;
+  class ProgSearch {
+    typedef context::CDHashMap< Node, Node, NodeHashFunction > NodeMap;
+    typedef context::CDHashMap< Node, int, NodeHashFunction > IntMap;
+    typedef context::CDHashMap< int, int > IntIntMap;
+  private:
+    SygusSymBreak * d_parent;
+    Node getCandidateProgramAtDepth( int depth, Node prog, int curr_depth, Node parent, std::map< TypeNode, int >& var_count,
+                                     std::vector< Node >& testers, std::map< Node, std::vector< Node > >& testers_u );
+    bool processProgramDepth( int depth );
+    bool processSubprograms( Node n, int depth, int odepth );
+    bool assignTester( int tindex, Node n, int depth );
+  public:
+    ProgSearch( SygusSymBreak * p, Node a, context::Context* c ) :
+      d_parent( p ), d_anchor( a ), d_testers( c ), d_watched_terms( c ), d_watched_count( c ), d_prog_depth( c, 0 ) {
+      d_anchor_type = d_anchor.getType();
+    }
+    ~ProgSearch(){}
+    Node d_anchor;
+    NodeMap d_testers;
+    IntMap d_watched_terms;
+    IntIntMap d_watched_count;
+    TypeNode d_anchor_type;
+    context::CDO<int> d_prog_depth;
+    void addTester( int tindex, Node n, Node exp );
+  };
+  std::map< Node, ProgSearch * > d_prog_search;
+  std::map< TypeNode, std::map< Node, Node > > d_normalized_to_orig;
+  std::map< TypeNode, std::map< Node, bool > > d_redundant;
+  std::map< TypeNode, std::map< Node, int > > d_normalized_to_term_size;
+  std::map< TypeNode, std::map< Node, std::vector< Node > > > d_lemmas_reported;
+  //which testers to include in the lemma
+  std::map< TypeNode, std::map< Node, std::vector< bool > > > d_lemma_inc_tst;
+  //additional equalities to include in the lemma
+  std::map< TypeNode, std::map< Node, std::vector< std::pair< int, int > > > > d_lemma_inc_eq;
+  //other equalities
+  std::map< TypeNode, Node > d_anchor_var;
+  std::map< TypeNode, std::map< Node, std::vector< Node > > > d_lemma_inc_eq_gr[2];
+private:
+  Node getAnchor( Node n );
+  bool processCurrentProgram( Node a, TypeNode at, int depth, Node prog,
+                              std::vector< Node >& testers, std::map< Node, std::vector< Node > >& testers_u,
+                              std::map< TypeNode, int >& var_count );
+  bool processConstantArg( TypeNode tnp, const Datatype & pdt, int pc, Kind k, int i, Node arg, std::map< unsigned, bool >& rlv );
+  void collectTesters( Node tst, std::map< Node, std::vector< Node > >& testers_u, std::vector< Node >& testers, std::map< Node, bool >& irrlv_tst );
+  void collectSubterms( Node n, Node tst_curr, std::map< Node, std::vector< Node > >& testers_u, std::map< Node, std::vector< Node > >& nodes );
+  bool isSeparation( Node rep_prog, Node tst_curr, std::map< Node, std::vector< Node > >& testers_u, std::vector< Node >& rlv_testers );
+  Node getSeparationTemplate( TypeNode tn, Node rep_prog, Node anc_var, int& status );
+public:
+  SygusSymBreak( quantifiers::TermDbSygus * tds, context::Context* c );
+  ~SygusSymBreak();
+  /** add tester */
+  void addTester( int tindex, Node n, Node exp );
+  /** lemmas we have generated */
+  std::vector< Node > d_lemmas;
+};
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/datatypes/kinds b/src/theory/datatypes/kinds
new file mode 100644
index 0000000..efee5e8
--- /dev/null
+++ b/src/theory/datatypes/kinds
@@ -0,0 +1,111 @@
+# kinds                                                               -*- sh -*-
+#
+# For documentation on this file format, please refer to
+# src/theory/builtin/kinds.
+#
+
+theory THEORY_DATATYPES ::CVC4::theory::datatypes::TheoryDatatypes "theory/datatypes/theory_datatypes.h"
+typechecker "theory/datatypes/theory_datatypes_type_rules.h"
+
+properties check presolve parametric propagate
+
+rewriter ::CVC4::theory::datatypes::DatatypesRewriter "theory/datatypes/datatypes_rewriter.h"
+
+# constructor type has a list of selector types followed by a return type
+operator CONSTRUCTOR_TYPE 1: "constructor"
+cardinality CONSTRUCTOR_TYPE \
+    "::CVC4::theory::datatypes::ConstructorProperties::computeCardinality(%TYPE%)" \
+    "theory/datatypes/theory_datatypes_type_rules.h"
+
+# selector type has domain type and a range type
+operator SELECTOR_TYPE 2 "selector"
+# can re-use function cardinality
+cardinality SELECTOR_TYPE \
+    "::CVC4::theory::builtin::FunctionProperties::computeCardinality(%TYPE%)" \
+    "theory/builtin/theory_builtin_type_rules.h"
+
+# tester type has a constructor type
+operator TESTER_TYPE 1 "tester"
+# can re-use function cardinality
+cardinality TESTER_TYPE \
+    "::CVC4::theory::builtin::FunctionProperties::computeCardinality(%TYPE%)" \
+    "theory/builtin/theory_builtin_type_rules.h"
+
+parameterized APPLY_CONSTRUCTOR APPLY_TYPE_ASCRIPTION 0: "constructor application; first parameter is the constructor, remaining parameters (if any) are parameters to the constructor"
+
+parameterized APPLY_SELECTOR SELECTOR_TYPE 1 "selector application; parameter is a datatype term (undefined if mis-applied)"
+parameterized APPLY_SELECTOR_TOTAL [SELECTOR_TYPE] 1 "selector application; parameter is a datatype term (defined rigidly if mis-applied)"
+
+parameterized APPLY_TESTER TESTER_TYPE 1 "tester application; first parameter is a tester, second is a datatype term"
+
+constant DATATYPE_TYPE \
+    ::CVC4::DatatypeIndexConstant \
+    "::CVC4::DatatypeIndexConstantHashFunction" \
+    "expr/datatype.h" \
+    "a datatype type index"
+cardinality DATATYPE_TYPE \
+    "%TYPE%.getDatatype().getCardinality(%TYPE%.toType())" \
+    "expr/datatype.h"
+well-founded DATATYPE_TYPE \
+    "%TYPE%.getDatatype().isWellFounded()" \
+    "%TYPE%.getDatatype().mkGroundTerm(%TYPE%.toType())" \
+    "expr/datatype.h"
+
+enumerator DATATYPE_TYPE \
+    "::CVC4::theory::datatypes::DatatypesEnumerator" \
+    "theory/datatypes/type_enumerator.h"
+
+operator PARAMETRIC_DATATYPE 1: "parametric datatype"
+cardinality PARAMETRIC_DATATYPE \
+    "DatatypeType(%TYPE%.toType()).getDatatype().getCardinality(%TYPE%.toType())" \
+    "expr/datatype.h"
+well-founded PARAMETRIC_DATATYPE \
+    "DatatypeType(%TYPE%.toType()).getDatatype().isWellFounded()" \
+    "DatatypeType(%TYPE%.toType()).getDatatype().mkGroundTerm(%TYPE%.toType())" \
+    "expr/datatype.h"
+
+enumerator PARAMETRIC_DATATYPE \
+    "::CVC4::theory::datatypes::DatatypesEnumerator" \
+    "theory/datatypes/type_enumerator.h"
+
+parameterized APPLY_TYPE_ASCRIPTION ASCRIPTION_TYPE 1 \
+    "type ascription, for datatype constructor applications; first parameter is an ASCRIPTION_TYPE, second is the datatype constructor application being ascribed"
+constant ASCRIPTION_TYPE \
+    ::CVC4::AscriptionType \
+    ::CVC4::AscriptionTypeHashFunction \
+    "expr/ascription_type.h" \
+    "a type parameter for type ascription; payload is an instance of the CVC4::AscriptionType class"
+
+typerule APPLY_CONSTRUCTOR ::CVC4::theory::datatypes::DatatypeConstructorTypeRule
+typerule APPLY_SELECTOR ::CVC4::theory::datatypes::DatatypeSelectorTypeRule
+typerule APPLY_SELECTOR_TOTAL ::CVC4::theory::datatypes::DatatypeSelectorTypeRule
+typerule APPLY_TESTER ::CVC4::theory::datatypes::DatatypeTesterTypeRule
+typerule APPLY_TYPE_ASCRIPTION ::CVC4::theory::datatypes::DatatypeAscriptionTypeRule
+
+# constructor applications are constant if they are applied only to constants
+construle APPLY_CONSTRUCTOR ::CVC4::theory::datatypes::DatatypeConstructorTypeRule
+
+constant TUPLE_UPDATE_OP \
+        ::CVC4::TupleUpdate \
+        ::CVC4::TupleUpdateHashFunction \
+        "util/tuple.h" \
+        "operator for a tuple update; payload is an instance of the CVC4::TupleUpdate class"
+parameterized TUPLE_UPDATE TUPLE_UPDATE_OP 2 "tuple update; first parameter is a TUPLE_UPDATE_OP (which references an index), second is the tuple, third is the element to store in the tuple at the given index"
+typerule TUPLE_UPDATE ::CVC4::theory::datatypes::TupleUpdateTypeRule
+
+constant RECORD_UPDATE_OP \
+        ::CVC4::RecordUpdate \
+        ::CVC4::RecordUpdateHashFunction \
+        "expr/record.h" \
+        "operator for a record update; payload is an instance CVC4::RecordUpdate class"
+parameterized RECORD_UPDATE RECORD_UPDATE_OP 2 "record update; first parameter is a RECORD_UPDATE_OP (which references a field), second is a record term to update, third is the element to store in the record in the given field"
+typerule RECORD_UPDATE ::CVC4::theory::datatypes::RecordUpdateTypeRule
+
+
+operator DT_SIZE 1 "datatypes size"
+typerule DT_SIZE ::CVC4::theory::datatypes::DtSizeTypeRule
+
+operator DT_HEIGHT_BOUND 2 "datatypes height bound"
+typerule DT_HEIGHT_BOUND ::CVC4::theory::datatypes::DtHeightBoundTypeRule
+
+endtheory
diff --git a/src/theory/datatypes/theory_datatypes.cpp b/src/theory/datatypes/theory_datatypes.cpp
new file mode 100644
index 0000000..d285f29
--- /dev/null
+++ b/src/theory/datatypes/theory_datatypes.cpp
@@ -0,0 +1,2216 @@
+/*********************                                                        */
+/*! \file theory_datatypes.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of the theory of datatypes
+ **
+ ** Implementation of the theory of datatypes.
+ **/
+#include "theory/datatypes/theory_datatypes.h"
+
+#include <map>
+
+#include "base/cvc4_assert.h"
+#include "expr/datatype.h"
+#include "expr/kind.h"
+#include "options/datatypes_options.h"
+#include "options/quantifiers_options.h"
+#include "options/smt_options.h"
+#include "theory/datatypes/datatypes_rewriter.h"
+#include "theory/datatypes/theory_datatypes_type_rules.h"
+#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/theory_model.h"
+#include "theory/type_enumerator.h"
+#include "theory/valuation.h"
+#include "options/theory_options.h"
+
+using namespace std;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+
+namespace CVC4 {
+namespace theory {
+namespace datatypes {
+
+TheoryDatatypes::TheoryDatatypes(Context* c, UserContext* u, OutputChannel& out,
+                                 Valuation valuation, const LogicInfo& logicInfo)
+    : Theory(THEORY_DATATYPES, c, u, out, valuation, logicInfo),
+      //d_cycle_check(c),
+      d_hasSeenCycle(c, false),
+      d_infer(c),
+      d_infer_exp(c),
+      d_term_sk( u ),
+      d_notify( *this ),
+      d_equalityEngine(d_notify, c, "theory::datatypes::TheoryDatatypes", true),
+      d_labels( c ),
+      d_selector_apps( c ),
+      //d_consEqc( c ),
+      d_conflict( c, false ),
+      d_collectTermsCache( c ),
+      d_functionTerms( c ),
+      d_singleton_eq( u ),
+      d_lemmas_produced_c( u )
+{
+  // The kinds we are treating as function application in congruence
+  d_equalityEngine.addFunctionKind(kind::APPLY_CONSTRUCTOR);
+  d_equalityEngine.addFunctionKind(kind::APPLY_SELECTOR_TOTAL);
+  d_equalityEngine.addFunctionKind(kind::DT_SIZE);
+  d_equalityEngine.addFunctionKind(kind::DT_HEIGHT_BOUND);
+  d_equalityEngine.addFunctionKind(kind::APPLY_TESTER);
+  //d_equalityEngine.addFunctionKind(kind::APPLY_UF);
+
+  d_true = NodeManager::currentNM()->mkConst( true );
+  d_dtfCounter = 0;
+
+  d_sygus_split = NULL;
+  d_sygus_sym_break = NULL;
+}
+
+TheoryDatatypes::~TheoryDatatypes() {
+  for(std::map< Node, EqcInfo* >::iterator i = d_eqc_info.begin(), iend = d_eqc_info.end();
+      i != iend; ++i){
+    EqcInfo* current = (*i).second;
+    Assert(current != NULL);
+    delete current;
+  }
+  delete d_sygus_split;
+  delete d_sygus_sym_break;
+}
+
+void TheoryDatatypes::setMasterEqualityEngine(eq::EqualityEngine* eq) {
+  d_equalityEngine.setMasterEqualityEngine(eq);
+}
+
+TheoryDatatypes::EqcInfo* TheoryDatatypes::getOrMakeEqcInfo( TNode n, bool doMake ){
+  if( !hasEqcInfo( n ) ){
+    if( doMake ){
+      //add to labels
+      d_labels[ n ] = 0;
+
+      std::map< Node, EqcInfo* >::iterator eqc_i = d_eqc_info.find( n );
+      EqcInfo* ei;
+      if( eqc_i != d_eqc_info.end() ){
+        ei = eqc_i->second;
+      }else{
+        ei = new EqcInfo( getSatContext() );
+        d_eqc_info[n] = ei;
+      }
+      if( n.getKind()==APPLY_CONSTRUCTOR ){
+        ei->d_constructor = n;
+      }
+      
+      //add to selectors
+      d_selector_apps[n] = 0;
+      
+      return ei;
+    }else{
+      return NULL;
+    }
+  }else{
+    std::map< Node, EqcInfo* >::iterator eqc_i = d_eqc_info.find( n );
+    return (*eqc_i).second;
+  }
+}
+
+TNode TheoryDatatypes::getEqcConstructor( TNode r ) {
+  if( r.getKind()==APPLY_CONSTRUCTOR ){
+    return r;
+  }else{
+    EqcInfo * ei = getOrMakeEqcInfo( r, false );
+    if( ei && !ei->d_constructor.get().isNull() ){
+      return ei->d_constructor.get();
+    }else{
+      return r;
+    }
+  }
+}
+
+void TheoryDatatypes::check(Effort e) {
+  if (done() && !fullEffort(e)) {
+    return;
+  }
+  Assert( d_pending.empty() && d_pending_merge.empty() );
+  d_addedLemma = false;
+
+  TimerStat::CodeTimer checkTimer(d_checkTime);
+
+  Trace("datatypes-check") << "Check effort " << e << std::endl;
+  while(!done() && !d_conflict) {
+    // Get all the assertions
+    Assertion assertion = get();
+    TNode fact = assertion.assertion;
+    Trace("datatypes-assert") << "Assert " << fact << std::endl;
+
+    TNode atom CVC4_UNUSED = fact.getKind() == kind::NOT ? fact[0] : fact;
+
+    // extra debug check to make sure that the rewriter did its job correctly
+    Assert( atom.getKind() != kind::EQUAL ||
+            ( atom[0].getKind() != kind::TUPLE_UPDATE && atom[1].getKind() != kind::TUPLE_UPDATE &&
+              atom[0].getKind() != kind::RECORD_UPDATE && atom[1].getKind() != kind::RECORD_UPDATE),
+            "tuple/record escaped into datatypes decision procedure; should have been rewritten away" );
+
+    //assert the fact
+    assertFact( fact, fact );
+    flushPendingFacts();
+  }
+
+  if( e == EFFORT_FULL && !d_conflict && !d_addedLemma && !d_valuation.needCheck() ) {
+    //check for cycles
+    Assert( d_pending.empty() && d_pending_merge.empty() );
+    do {
+      d_addedFact = false;
+      checkCycles();
+      flushPendingFacts();
+      if( d_conflict || d_addedLemma ){
+        return;
+      }
+    }while( d_addedFact );
+  
+    //check for splits
+    Trace("datatypes-debug") << "Check for splits " << e << endl;
+    do {
+      d_addedFact = false;
+      bool added_split = false;
+      std::map< TypeNode, Node > rec_singletons;
+      eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( &d_equalityEngine );
+      while( !eqcs_i.isFinished() ){
+        Node n = (*eqcs_i);
+        //TODO : avoid irrelevant (pre-registered but not asserted) terms here?
+        TypeNode tn = n.getType();
+        if( tn.isDatatype() ){
+          Trace("datatypes-debug") << "Process equivalence class " << n << std::endl;
+          EqcInfo* eqc = getOrMakeEqcInfo( n );
+          //if there are more than 1 possible constructors for eqc
+          if( !hasLabel( eqc, n ) ){
+            Trace("datatypes-debug") << "No constructor..." << std::endl;
+            Type tt = tn.toType();
+            const Datatype& dt = ((DatatypeType)tt).getDatatype();
+            Trace("datatypes-debug") << "Datatype " << dt << " is " << dt.isFinite( tt ) << " " << dt.isInterpretedFinite( tt ) << " " << dt.isRecursiveSingleton( tt ) << std::endl;
+            bool continueProc = true;
+            if( dt.isRecursiveSingleton( tt ) ){
+              Trace("datatypes-debug") << "Check recursive singleton..." << std::endl;
+              //handle recursive singleton case
+              std::map< TypeNode, Node >::iterator itrs = rec_singletons.find( tn );
+              if( itrs!=rec_singletons.end() ){
+                Node eq = n.eqNode( itrs->second );
+                if( d_singleton_eq.find( eq )==d_singleton_eq.end() ){
+                  d_singleton_eq[eq] = true;
+                  // get assumptions
+                  bool success = true;
+                  std::vector< Node > assumptions;
+                  //if there is at least one uninterpreted sort occurring within the datatype and the logic is not quantified, add lemmas ensuring cardinality is more than one,
+                  //  do not infer the equality if at least one sort was processed.
+                  //otherwise, if the logic is quantified, under the assumption that all uninterpreted sorts have cardinality one,
+                  //  infer the equality.
+                  for( unsigned i=0; i<dt.getNumRecursiveSingletonArgTypes( tt ); i++ ){
+                    TypeNode tn = TypeNode::fromType( dt.getRecursiveSingletonArgType( tt, i ) );
+                    if( getQuantifiersEngine() ){
+                      // under the assumption that the cardinality of this type is one
+                      Node a = getSingletonLemma( tn, true );
+                      assumptions.push_back( a.negate() );
+                    }else{
+                      success = false;
+                      // assert that the cardinality of this type is more than one
+                      getSingletonLemma( tn, false );
+                    }
+                  }
+                  if( success ){
+                    Node eq = n.eqNode( itrs->second );
+                    assumptions.push_back( eq );
+                    Node lemma = assumptions.size()==1 ? assumptions[0] : NodeManager::currentNM()->mkNode( OR, assumptions );
+                    Trace("dt-singleton") << "*************Singleton equality lemma " << lemma << std::endl;
+                    doSendLemma( lemma );
+                  }
+                }
+              }else{
+                rec_singletons[tn] = n;
+              }
+              //do splitting for quantified logics (incomplete anyways)
+              continueProc = ( getQuantifiersEngine()!=NULL );
+            }
+            if( continueProc ){
+              Trace("datatypes-debug") << "Get possible cons..." << std::endl;
+              //all other cases
+              std::vector< bool > pcons;
+              getPossibleCons( eqc, n, pcons );
+              //std::map< int, bool > sel_apps;
+              //getSelectorsForCons( n, sel_apps );
+              //check if we do not need to resolve the constructor type for this equivalence class.
+              // this is if there are no selectors for this equivalence class, and its possible values are infinite,
+              //  then do not split.
+              int consIndex = -1;
+              int fconsIndex = -1;
+              bool needSplit = true;
+              for( unsigned int j=0; j<pcons.size(); j++ ) {
+                if( pcons[j] ) {
+                  if( consIndex==-1 ){
+                    consIndex = j;
+                  }
+                  if( !dt[ j ].isInterpretedFinite( tt ) ) {
+                    if( !eqc || !eqc->d_selectors ){
+                      needSplit = false;
+                    }
+                  }else{
+                    if( fconsIndex==-1 ){
+                      fconsIndex = j;
+                    }
+                  }
+                }
+              }
+              //if we want to force an assignment of constructors to all ground eqc
+              //d_dtfCounter++;
+              if( !needSplit && options::dtForceAssignment() && d_dtfCounter%2==0 ){
+                Trace("datatypes-force-assign") << "Force assignment for " << n << std::endl;
+                needSplit = true;
+                consIndex = fconsIndex!=-1 ? fconsIndex : consIndex;
+              }
+
+              if( needSplit && consIndex!=-1 ) {
+                if( dt.getNumConstructors()==1 ){
+                  //this may not be necessary?
+                  //if only one constructor, then this term must be this constructor
+                  Node t = DatatypesRewriter::mkTester( n, 0, dt );
+                  d_pending.push_back( t );
+                  d_pending_exp[ t ] = d_true;
+                  Trace("datatypes-infer") << "DtInfer : 1-cons (full) : " << t << std::endl;
+                  d_infer.push_back( t );
+                }else{
+                  if( options::dtBinarySplit() ){
+                    Node test = DatatypesRewriter::mkTester( n, consIndex, dt );
+                    Trace("dt-split") << "*************Split for possible constructor " << dt[consIndex] << " for " << n << endl;
+                    test = Rewriter::rewrite( test );
+                    NodeBuilder<> nb(kind::OR);
+                    nb << test << test.notNode();
+                    Node lemma = nb;
+                    doSendLemma( lemma );
+                    d_out->requirePhase( test, true );
+                  }else{
+                    Trace("dt-split") << "*************Split for constructors on " << n <<  endl;
+                    std::vector< Node > children;
+                    if( dt.isSygus() && d_sygus_split ){
+                      std::vector< Node > lemmas;
+                      d_sygus_split->getSygusSplits( n, dt, children, lemmas );
+                      for( unsigned i=0; i<lemmas.size(); i++ ){
+                        Trace("dt-lemma-sygus") << "Dt sygus lemma : " << lemmas[i] << std::endl;
+                        doSendLemma( lemmas[i] );
+                      }
+                    }else{
+                      for( unsigned i=0; i<dt.getNumConstructors(); i++ ){
+                        Node test = DatatypesRewriter::mkTester( n, i, dt );
+                        children.push_back( test );
+                      }
+                    }
+                    Assert( !children.empty() );
+                    Node lemma = children.size()==1 ? children[0] : NodeManager::currentNM()->mkNode( kind::OR, children );
+                    Trace("dt-split-debug") << "Split lemma is : " << lemma << std::endl;
+                    //doSendLemma( lemma );
+                    d_out->lemma( lemma, false, false, true );
+                  }
+                  added_split = true;
+                  if( !options::dtBlastSplits() ){
+                    return;
+                  }
+                }
+              }else{
+                Trace("dt-split-debug") << "Do not split constructor for " << n << " : " << n.getType() << " " << dt.getNumConstructors() << std::endl;
+              }
+            }
+          }else{
+            Trace("datatypes-debug") << "Has constructor " << eqc->d_constructor.get() << std::endl;
+          }
+        }
+        ++eqcs_i;
+      }
+      if( added_split ){
+        return;
+      }
+      Trace("datatypes-debug") << "Flush pending facts..."  << std::endl;
+      flushPendingFacts();
+      /*
+      if( !d_conflict ){
+        if( options::dtRewriteErrorSel() ){
+          bool innerAddedFact = false;
+          do {
+            collapseSelectors();
+            innerAddedFact = !d_pending.empty() || !d_pending_merge.empty();
+            flushPendingFacts();
+          }while( !d_conflict && innerAddedFact );
+        }
+      }
+      */
+    }while( !d_conflict && !d_addedLemma && d_addedFact );
+    Trace("datatypes-debug") << "Finished, conflict=" << d_conflict << ", lemmas=" << d_addedLemma << std::endl;
+    if( !d_conflict ){
+      Trace("dt-model-debug") << std::endl;
+      printModelDebug("dt-model-debug");
+    }
+  }
+
+  Trace("datatypes-check") << "Finished check effort " << e << std::endl;
+  if( Debug.isOn("datatypes") || Debug.isOn("datatypes-split") ) {
+    Notice() << "TheoryDatatypes::check(): done" << endl;
+  }
+}
+
+void TheoryDatatypes::flushPendingFacts(){
+  doPendingMerges();
+  //pending lemmas: used infrequently, only for definitional lemmas
+  if( !d_pending_lem.empty() ){
+    int i = 0;
+    while( i<(int)d_pending_lem.size() ){
+      doSendLemma( d_pending_lem[i] );
+      i++;
+    }
+    d_pending_lem.clear();
+    doPendingMerges();
+  }
+  int i = 0;
+  while( !d_conflict && i<(int)d_pending.size() ){
+    Node fact = d_pending[i];
+    Node exp = d_pending_exp[ fact ];
+    Trace("datatypes-debug") << "Assert fact (#" << (i+1) << "/" << d_pending.size() << ") " << fact << " with explanation " << exp << std::endl;
+    //check to see if we have to communicate it to the rest of the system
+    if( mustCommunicateFact( fact, exp ) ){
+      Node lem = fact;
+      if( exp.isNull() || exp==d_true ){
+        Trace("dt-lemma-debug") << "Trivial explanation." << std::endl;
+      }else{
+        Trace("dt-lemma-debug") << "Get explanation..." << std::endl;
+        std::vector< TNode > assumptions;
+        //if( options::dtRExplainLemmas() ){
+        explain( exp, assumptions );
+        //}else{
+        //  ee_exp = exp;
+        //}
+        //Trace("dt-lemma-debug") << "Explanation : " << ee_exp << std::endl;
+        if( assumptions.empty() ){
+          lem = fact;
+        }else{
+          std::vector< Node > children;
+          for( unsigned i=0; i<assumptions.size(); i++ ){
+            children.push_back( assumptions[i].negate() );
+          }
+          children.push_back( fact );
+          lem = NodeManager::currentNM()->mkNode( OR, children );
+        }
+      }
+      Trace("dt-lemma") << "Datatypes lemma : " << lem << std::endl;
+      if( doSendLemma( lem ) ){
+        d_addedLemma = true;
+      }
+    }else{
+      assertFact( fact, exp );
+      d_addedFact = true;
+    }
+    Trace("datatypes-debug") << "Finished fact " << fact << ", now = " << d_conflict << " " << d_pending.size() << std::endl;
+    i++;
+  }
+  d_pending.clear();
+  d_pending_exp.clear();
+}
+
+void TheoryDatatypes::doPendingMerges(){
+  if( !d_conflict ){
+    //do all pending merges
+    int i=0;
+    while( i<(int)d_pending_merge.size() ){
+      Assert( d_pending_merge[i].getKind()==EQUAL );
+      merge( d_pending_merge[i][0], d_pending_merge[i][1] );
+      i++;
+    }
+  }
+  d_pending_merge.clear();
+}
+
+bool TheoryDatatypes::doSendLemma( Node lem ) {
+  if( d_lemmas_produced_c.find( lem )==d_lemmas_produced_c.end() ){
+    Trace("dt-lemma-send") << "TheoryDatatypes::doSendLemma : " << lem << std::endl;
+    d_lemmas_produced_c[lem] = true;
+    d_out->lemma( lem );
+    return true;
+  }else{
+    return false;
+  }
+}
+
+void TheoryDatatypes::assertFact( Node fact, Node exp ){
+  Assert( d_pending_merge.empty() );
+  Trace("datatypes-debug") << "TheoryDatatypes::assertFact : " << fact << std::endl;
+  bool polarity = fact.getKind() != kind::NOT;
+  TNode atom = polarity ? fact : fact[0];
+  if (atom.getKind() == kind::EQUAL) {
+    d_equalityEngine.assertEquality( atom, polarity, exp );
+  }else{
+    d_equalityEngine.assertPredicate( atom, polarity, exp );
+  }
+  doPendingMerges();
+  //add to tester if applicable
+  Node t_arg;
+  int tindex = DatatypesRewriter::isTester( atom, t_arg );
+  if( tindex!=-1 ){
+    Trace("dt-tester") << "Assert tester : " << atom << " for " << t_arg << std::endl;
+    Node rep = getRepresentative( t_arg );
+    EqcInfo* eqc = getOrMakeEqcInfo( rep, true );
+    addTester( tindex, fact, eqc, rep, t_arg );
+    Trace("dt-tester") << "Done assert tester." << std::endl;
+    if( !d_conflict && polarity ){
+      if( d_sygus_sym_break ){
+        //Assert( !d_sygus_util->d_conflict );
+        Trace("dt-tester") << "Assert tester to sygus : " << atom << std::endl;
+        d_sygus_sym_break->addTester( tindex, t_arg, atom );
+        Trace("dt-tester") << "Done assert tester to sygus." << std::endl;
+        for( unsigned i=0; i<d_sygus_sym_break->d_lemmas.size(); i++ ){
+          Trace("dt-lemma-sygus") << "Sygus symmetry breaking lemma : " << d_sygus_sym_break->d_lemmas[i] << std::endl;
+          doSendLemma( d_sygus_sym_break->d_lemmas[i] );
+        }
+        d_sygus_sym_break->d_lemmas.clear();
+        /*
+        if( d_sygus_util->d_conflict ){
+          //d_conflict = true;
+          if( !d_sygus_util->d_conflictNode.isNull() ){
+            std::vector< TNode > assumptions;
+            explain( d_sygus_util->d_conflictNode, assumptions );
+            d_conflictNode = mkAnd( assumptions );
+            Trace("dt-conflict") << "CONFLICT: sygus symmetry breaking conflict : " << d_conflictNode << std::endl;
+            d_out->conflict( d_conflictNode );
+          }
+          return;
+        }
+        */
+      }
+    }
+  }else{
+    Trace("dt-tester-debug") << "Assert (non-tester) : " << atom << std::endl;
+  }
+  doPendingMerges();
+  Trace("datatypes-debug") << "TheoryDatatypes::assertFact : finished " << fact << std::endl;
+}
+
+void TheoryDatatypes::preRegisterTerm(TNode n) {
+  Debug("datatypes-prereg") << "TheoryDatatypes::preRegisterTerm() " << n << endl;
+  collectTerms( n );
+  switch (n.getKind()) {
+  case kind::EQUAL:
+    // Add the trigger for equality
+    d_equalityEngine.addTriggerEquality(n);
+    break;
+  case kind::APPLY_TESTER:
+    // Get triggered for both equal and dis-equal
+    d_equalityEngine.addTriggerPredicate(n);
+    break;
+  default:
+    // Function applications/predicates
+    d_equalityEngine.addTerm(n);
+    //d_equalityEngine.addTriggerTerm(n, THEORY_DATATYPES);
+    break;
+  }
+  flushPendingFacts();
+}
+
+void TheoryDatatypes::finishInit() {
+  if( getQuantifiersEngine() && options::ceGuidedInst() ){
+    quantifiers::TermDbSygus * tds = getQuantifiersEngine()->getTermDatabaseSygus();
+    Assert( tds!=NULL );
+    d_sygus_split = new SygusSplit( tds );
+    d_sygus_sym_break = new SygusSymBreak( tds, getSatContext() );
+  }
+}
+
+Node TheoryDatatypes::expandDefinition(LogicRequest &logicRequest, Node n) {
+  switch( n.getKind() ){
+  case kind::APPLY_SELECTOR: {
+    Node selector = n.getOperator();
+    Expr selectorExpr = selector.toExpr();
+    Node sel = NodeManager::currentNM()->mkNode( kind::APPLY_SELECTOR_TOTAL, Node::fromExpr( selectorExpr ), n[0] );
+    if( options::dtRewriteErrorSel() ){
+      return sel;
+    }else{
+      size_t selectorIndex = Datatype::cindexOf(selectorExpr);
+      const Datatype& dt = Datatype::datatypeOf(selectorExpr);
+      const DatatypeConstructor& c = dt[selectorIndex];
+      Expr tester = c.getTester();
+      Node tst = NodeManager::currentNM()->mkNode( kind::APPLY_TESTER, Node::fromExpr( tester ), n[0] );
+      tst = Rewriter::rewrite( tst );
+      Node n_ret;
+      if( tst==d_true ){
+        n_ret = sel;
+      }else{
+        TypeNode ndt = n[0].getType();
+        mkExpDefSkolem( selector, ndt, n.getType() );
+        Node sk = NodeManager::currentNM()->mkNode( kind::APPLY_UF, d_exp_def_skolem[ndt][ selector ], n[0]  );
+        if( tst==NodeManager::currentNM()->mkConst( false ) ){
+          n_ret = sk;
+        }else{
+          n_ret = NodeManager::currentNM()->mkNode( kind::ITE, tst, sel, sk );
+        }
+      }
+      //n_ret = Rewriter::rewrite( n_ret );
+      Trace("dt-expand") << "Expand def : " << n << " to " << n_ret << std::endl;
+      return n_ret;
+    }
+  }
+    break;
+  default:
+    return n;
+    break;
+  }
+  Unreachable();
+}
+
+void TheoryDatatypes::presolve() {
+  Debug("datatypes") << "TheoryDatatypes::presolve()" << endl;
+}
+
+Node TheoryDatatypes::ppRewrite(TNode in) {
+  Debug("tuprec") << "TheoryDatatypes::ppRewrite(" << in << ")" << endl;
+
+  TypeNode t = in.getType();
+
+  if(in.getKind() == kind::TUPLE_UPDATE || in.getKind() == kind::RECORD_UPDATE) {
+    Assert( t.isDatatype() );
+    const Datatype& dt = DatatypeType(t.toType()).getDatatype();
+    NodeBuilder<> b(kind::APPLY_CONSTRUCTOR);
+    b << Node::fromExpr(dt[0].getConstructor());
+    size_t size, updateIndex;
+    if(in.getKind() == kind::TUPLE_UPDATE) {
+      Assert( t.isTuple() );
+      size = t.getTupleLength();
+      updateIndex = in.getOperator().getConst<TupleUpdate>().getIndex();
+    } else { // kind::RECORD_UPDATE
+      Assert( t.isRecord() );
+      const Record& record = t.getRecord();
+      size = record.getNumFields();
+      updateIndex = record.getIndex(in.getOperator().getConst<RecordUpdate>().getField());
+    }
+    Debug("tuprec") << "expr is " << in << std::endl;
+    Debug("tuprec") << "updateIndex is " << updateIndex << std::endl;
+    Debug("tuprec") << "t is " << t << std::endl;
+    Debug("tuprec") << "t has arity " << size << std::endl;
+    for(size_t i = 0; i < size; ++i) {
+      if(i == updateIndex) {
+        b << in[1];
+        Debug("tuprec") << "arg " << i << " gets updated to " << in[1] << std::endl;
+      } else {
+        b << NodeManager::currentNM()->mkNode(kind::APPLY_SELECTOR_TOTAL, Node::fromExpr(dt[0][i].getSelector()), in[0]);
+        Debug("tuprec") << "arg " << i << " copies " << b[b.getNumChildren() - 1] << std::endl;
+      }
+    }
+    Debug("tuprec") << "builder says " << b << std::endl;
+    Node n = b;
+    return n;
+  }
+
+  if( in.getKind()==EQUAL ){
+    Node nn;
+    std::vector< Node > rew;
+    if( DatatypesRewriter::checkClash(in[0], in[1], rew) ){
+      nn = NodeManager::currentNM()->mkConst(false);
+    }else{
+      nn = rew.size()==0 ? d_true :
+                ( rew.size()==1 ? rew[0] : NodeManager::currentNM()->mkNode( kind::AND, rew ) );
+    }
+    return nn;
+  }
+
+  // nothing to do
+  return in;
+
+}
+
+void TheoryDatatypes::addSharedTerm(TNode t) {
+  Debug("datatypes") << "TheoryDatatypes::addSharedTerm(): "
+                     << t << " " << t.getType().isBoolean() << endl;
+  d_equalityEngine.addTriggerTerm(t, THEORY_DATATYPES);
+  Debug("datatypes") << "TheoryDatatypes::addSharedTerm() finished" << std::endl;
+}
+
+/** propagate */
+void TheoryDatatypes::propagate(Effort effort){
+
+}
+
+/** propagate */
+bool TheoryDatatypes::propagate(TNode literal){
+  Debug("dt::propagate") << "TheoryDatatypes::propagate(" << literal  << ")" << std::endl;
+  // If already in conflict, no more propagation
+  if (d_conflict) {
+    Debug("dt::propagate") << "TheoryDatatypes::propagate(" << literal << "): already in conflict" << std::endl;
+    return false;
+  }
+  Trace("dt-prop") << "dtPropagate " << literal << std::endl;
+  // Propagate out
+  bool ok = d_out->propagate(literal);
+  if (!ok) {
+    Trace("dt-conflict") << "CONFLICT: Eq engine propagate conflict " << std::endl;
+    d_conflict = true;
+  }
+  return ok;
+}
+
+void TheoryDatatypes::addAssumptions( std::vector<TNode>& assumptions, std::vector<TNode>& tassumptions ) {
+  std::vector<TNode> ntassumptions;
+  for( unsigned i=0; i<tassumptions.size(); i++ ){
+    //flatten AND
+    if( tassumptions[i].getKind()==AND ){
+      for( unsigned j=0; j<tassumptions[i].getNumChildren(); j++ ){
+        explain( tassumptions[i][j], ntassumptions );
+      }
+    }else{
+      if( std::find( assumptions.begin(), assumptions.end(), tassumptions[i] )==assumptions.end() ){
+        assumptions.push_back( tassumptions[i] );
+      }
+    }
+  }
+  if( !ntassumptions.empty() ){
+    addAssumptions( assumptions, ntassumptions );
+  }
+}
+
+void TheoryDatatypes::explainEquality( TNode a, TNode b, bool polarity, std::vector<TNode>& assumptions ) {
+  if( a!=b ){
+    std::vector<TNode> tassumptions;
+    d_equalityEngine.explainEquality(a, b, polarity, tassumptions);
+    addAssumptions( assumptions, tassumptions );
+  }
+}
+
+void TheoryDatatypes::explainPredicate( TNode p, bool polarity, std::vector<TNode>& assumptions ) {
+  std::vector<TNode> tassumptions;
+  d_equalityEngine.explainPredicate(p, polarity, tassumptions);
+  addAssumptions( assumptions, tassumptions );
+}
+
+/** explain */
+void TheoryDatatypes::explain(TNode literal, std::vector<TNode>& assumptions){
+  Debug("datatypes-explain") << "Explain " << literal << std::endl;
+  bool polarity = literal.getKind() != kind::NOT;
+  TNode atom = polarity ? literal : literal[0];
+  if (atom.getKind() == kind::EQUAL) {
+    explainEquality( atom[0], atom[1], polarity, assumptions );
+  } else if( atom.getKind() == kind::AND && polarity ){
+    for( unsigned i=0; i<atom.getNumChildren(); i++ ){
+      explain( atom[i], assumptions );
+    }
+  } else {
+    Assert( atom.getKind()!=kind::AND );
+    explainPredicate( atom, polarity, assumptions );
+  }
+}
+
+Node TheoryDatatypes::explain( TNode literal ){
+  std::vector< TNode > assumptions;
+  explain( literal, assumptions );
+  return mkAnd( assumptions );
+}
+
+Node TheoryDatatypes::explain( std::vector< Node >& lits ) {
+  std::vector< TNode > assumptions;
+  for( unsigned i=0; i<lits.size(); i++ ){
+    explain( lits[i], assumptions );
+  }
+  return mkAnd( assumptions );
+}
+
+/** Conflict when merging two constants */
+void TheoryDatatypes::conflict(TNode a, TNode b){
+  d_conflictNode = explain( a.eqNode(b) );
+  Trace("dt-conflict") << "CONFLICT: Eq engine conflict : " << d_conflictNode << std::endl;
+  d_out->conflict( d_conflictNode );
+  d_conflict = true;
+}
+
+/** called when a new equivalance class is created */
+void TheoryDatatypes::eqNotifyNewClass(TNode t){
+  if( t.getKind()==APPLY_CONSTRUCTOR ){
+    getOrMakeEqcInfo( t, true );
+    //look at all equivalence classes with constructor terms
+/*
+    for( BoolMap::const_iterator it = d_consEqc.begin(); it != d_consEqc.end(); ++it ){
+      if( (*it).second ){
+        TNode r = (*it).first;
+        if( r.getType()==t.getType() ){
+          EqcInfo * ei = getOrMakeEqcInfo( r, false );
+          if( ei && !ei->d_constructor.get().isNull() && ei->d_constructor.get().getOperator()!=t.getOperator() ){
+            Node deq = ei->d_constructor.get().eqNode( t ).negate();
+            d_pending.push_back( deq );
+            d_pending_exp[ deq ] = d_true;
+            Trace("datatypes-infer") << "DtInfer : diff constructor : " << deq << std::endl;
+            d_infer.push_back( deq );
+          }
+        }
+      }
+    }
+*/
+    //d_consEqc[t] = true;
+  }
+}
+
+/** called when two equivalance classes will merge */
+void TheoryDatatypes::eqNotifyPreMerge(TNode t1, TNode t2){
+
+}
+
+/** called when two equivalance classes have merged */
+void TheoryDatatypes::eqNotifyPostMerge(TNode t1, TNode t2){
+  if( t1.getType().isDatatype() ){
+    Trace("datatypes-debug") << "NotifyPostMerge : " << t1 << " " << t2 << std::endl;
+    d_pending_merge.push_back( t1.eqNode( t2 ) );
+  }
+}
+
+void TheoryDatatypes::merge( Node t1, Node t2 ){
+  if( !d_conflict ){
+    TNode trep1 = t1;
+    TNode trep2 = t2;
+    Trace("datatypes-debug") << "Merge " << t1 << " " << t2 << std::endl;
+    EqcInfo* eqc2 = getOrMakeEqcInfo( t2 );
+    if( eqc2 ){
+      bool checkInst = false;
+      if( !eqc2->d_constructor.get().isNull() ){
+        trep2 = eqc2->d_constructor.get();
+      }
+      EqcInfo* eqc1 = getOrMakeEqcInfo( t1 );
+      if( eqc1 ){
+        Trace("datatypes-debug") << "  merge eqc info " << eqc2 << " into " << eqc1 << std::endl;
+        if( !eqc1->d_constructor.get().isNull() ){
+          trep1 = eqc1->d_constructor.get();
+        }
+        //check for clash
+        TNode cons1 = eqc1->d_constructor.get();
+        TNode cons2 = eqc2->d_constructor.get();
+        //if both have constructor, then either clash or unification
+        if( !cons1.isNull() && !cons2.isNull() ){
+          Trace("datatypes-debug") << "  constructors : " << cons1 << " " << cons2 << std::endl;
+          Node unifEq = cons1.eqNode( cons2 );
+          /*
+          std::vector< Node > exp;
+          std::vector< std::pair< TNode, TNode > > deq_cand;
+          bool conf = checkClashModEq( cons1, cons2, exp, deq_cand );
+          if( !conf ){
+            for( unsigned i=0; i<deq_cand.size(); i++ ){
+              if( d_equalityEngine.areDisequal( deq_cand[i].first, deq_cand[i].second, true ) ){
+                conf = true;
+                Node eq = NodeManager::currentNM()->mkNode( kind::EQUAL, deq_cand[i].first, deq_cand[i].second );
+                exp.push_back( eq.negate() );
+              }
+            }
+          }
+          if( conf ){
+            exp.push_back( unifEq );
+            d_conflictNode = explain( exp );
+          }
+         */
+          std::vector< Node > rew;
+          if( DatatypesRewriter::checkClash( cons1, cons2, rew ) ){
+            d_conflictNode = explain( unifEq );
+            Trace("dt-conflict") << "CONFLICT: Clash conflict : " << d_conflictNode << std::endl;
+            d_out->conflict( d_conflictNode );
+            d_conflict = true;
+            return;
+          }else{
+
+            //do unification
+            for( int i=0; i<(int)cons1.getNumChildren(); i++ ) {
+              if( !areEqual( cons1[i], cons2[i] ) ){
+                Node eq = cons1[i].eqNode( cons2[i] );
+                d_pending.push_back( eq );
+                d_pending_exp[ eq ] = unifEq;
+                Trace("datatypes-infer") << "DtInfer : cons-inj : " << eq << " by " << unifEq << std::endl;
+                d_infer.push_back( eq );
+                d_infer_exp.push_back( unifEq );
+              }
+            }
+/*
+            for( unsigned i=0; i<rew.size(); i++ ){
+              d_pending.push_back( rew[i] );
+              d_pending_exp[ rew[i] ] = unifEq;
+              Trace("datatypes-infer") << "DtInfer : cons-inj : " << rew[i] << " by " << unifEq << std::endl;
+              d_infer.push_back( rew[i] );
+              d_infer_exp.push_back( unifEq );
+            }
+*/
+          }
+        }
+        Trace("datatypes-debug") << "  instantiated : " << eqc1->d_inst << " " << eqc2->d_inst << std::endl;
+        eqc1->d_inst = eqc1->d_inst || eqc2->d_inst;
+        if( !cons2.isNull() ){
+          if( cons1.isNull() ){
+            Trace("datatypes-debug") << "  must check if it is okay to set the constructor." << std::endl;
+            checkInst = true;
+            addConstructor( eqc2->d_constructor.get(), eqc1, t1 );
+            if( d_conflict ){
+              return;
+            }
+            //d_consEqc[t1] = true;
+          }
+          //AJR: do this?
+          //else if( cons2.isConst() ){
+          //  //prefer the constant
+          //  eqc1->d_constructor = cons2;
+          //}
+          //d_consEqc[t2] = false;
+        }
+      }else{
+        Trace("datatypes-debug") << "  no eqc info for " << t1 << ", must create" << std::endl;
+        //just copy the equivalence class information
+        eqc1 = getOrMakeEqcInfo( t1, true );
+        eqc1->d_inst.set( eqc2->d_inst );
+        eqc1->d_constructor.set( eqc2->d_constructor );
+        eqc1->d_selectors.set( eqc2->d_selectors );
+      }
+
+
+      //merge labels
+      NodeIntMap::iterator lbl_i = d_labels.find( t2 );
+      if( lbl_i != d_labels.end() ){
+        Trace("datatypes-debug") << "  merge labels from " << eqc2 << " " << t2 << std::endl;
+        int n_label = (*lbl_i).second;
+        for( int i=0; i<n_label; i++ ){
+          Assert( i<(int)d_labels_data[ t2 ].size() );
+          Node t = d_labels_data[ t2 ][i];
+          Node tt = t.getKind()==kind::NOT ? t[0] : t;
+          Node t_arg;
+          int tindex = DatatypesRewriter::isTester( tt, t_arg );
+          Assert( tindex!=-1 );
+          addTester( tindex, t, eqc1, t1, t_arg );
+          if( d_conflict ){
+            Trace("datatypes-debug") << "  conflict!" << std::endl;
+            return;
+          }
+        }
+
+      }
+      //merge selectors
+      if( !eqc1->d_selectors && eqc2->d_selectors ){
+        eqc1->d_selectors = true;
+        checkInst = true;
+      }
+      NodeIntMap::iterator sel_i = d_selector_apps.find( t2 );
+      if( sel_i != d_selector_apps.end() ){
+        Trace("datatypes-debug") << "  merge selectors from " << eqc2 << " " << t2 << std::endl;
+        int n_sel = (*sel_i).second;
+        for( int j=0; j<n_sel; j++ ){
+          addSelector( d_selector_apps_data[t2][j], eqc1, t1, eqc2->d_constructor.get().isNull() );
+        }
+      }
+      if( checkInst ){
+        Trace("datatypes-debug") << "  checking instantiate" << std::endl;
+        instantiate( eqc1, t1 );
+        if( d_conflict ){
+          return;
+        }
+      }
+    }
+    Trace("datatypes-debug") << "Finished Merge " << t1 << " " << t2 << std::endl;
+  }
+}
+
+/** called when two equivalence classes are made disequal */
+void TheoryDatatypes::eqNotifyDisequal(TNode t1, TNode t2, TNode reason){
+
+}
+
+TheoryDatatypes::EqcInfo::EqcInfo( context::Context* c )
+    : d_inst( c, false )
+    , d_constructor( c, Node::null() )
+    , d_selectors( c, false )
+{}
+
+bool TheoryDatatypes::hasLabel( EqcInfo* eqc, Node n ){
+  return ( eqc && !eqc->d_constructor.get().isNull() ) || !getLabel( n ).isNull();
+}
+
+Node TheoryDatatypes::getLabel( Node n ) {
+  NodeIntMap::iterator lbl_i = d_labels.find( n );
+  if( lbl_i != d_labels.end() ){
+    unsigned n_lbl = (*lbl_i).second;
+    if( n_lbl>0 && d_labels_data[n][ n_lbl-1 ].getKind()!=kind::NOT ){
+      return d_labels_data[n][ n_lbl-1 ];
+    }
+  }
+  return Node::null();
+}
+
+int TheoryDatatypes::getLabelIndex( EqcInfo* eqc, Node n ){
+  if( eqc && !eqc->d_constructor.get().isNull() ){
+    return Datatype::indexOf( eqc->d_constructor.get().getOperator().toExpr() );
+  }else{
+    Node lbl = getLabel( n );
+    if( lbl.isNull() ){
+      return -1;
+    }else{
+      int tindex = DatatypesRewriter::isTester( lbl );
+      Assert( tindex!=-1 );
+      return tindex;
+      //return Datatype::indexOf( getLabel( n ).getOperator().toExpr() );
+    }
+  }
+}
+
+bool TheoryDatatypes::hasTester( Node n ) {
+  NodeIntMap::iterator lbl_i = d_labels.find( n );
+  if( lbl_i != d_labels.end() ){
+    return (*lbl_i).second>0;
+  }else{
+    return false;
+  }
+}
+
+void TheoryDatatypes::getPossibleCons( EqcInfo* eqc, Node n, std::vector< bool >& pcons ){
+  const Datatype& dt = ((DatatypeType)(n.getType()).toType()).getDatatype();
+  int lindex = getLabelIndex( eqc, n );
+  pcons.resize( dt.getNumConstructors(), lindex==-1 );
+  if( lindex!=-1 ){
+    pcons[ lindex ] = true;
+  }else{
+    NodeIntMap::iterator lbl_i = d_labels.find( n );
+    if( lbl_i != d_labels.end() ){
+      int n_lbl = (*lbl_i).second;
+      for( int i=0; i<n_lbl; i++ ){
+        Node t = d_labels_data[n][i];
+        Assert( t.getKind()==NOT );
+        //pcons[ Datatype::indexOf( t[0].getOperator().toExpr() ) ] = false;
+        int tindex = DatatypesRewriter::isTester( t[0] );
+        Assert( tindex!=-1 );
+        pcons[ tindex ] = false;
+      }
+    }
+  }
+}
+
+void TheoryDatatypes::getSelectorsForCons( Node r, std::map< int, bool >& sels ) {
+  NodeIntMap::iterator sel_i = d_selector_apps.find( r );
+  if( sel_i != d_selector_apps.end() ){
+    int n_sel = (*sel_i).second;
+    for( int j=0; j<n_sel; j++ ){
+      int sindex = Datatype::indexOf( d_selector_apps_data[r][j].getOperator().toExpr() );
+      sels[sindex] = true;
+    }
+  }
+}
+
+void TheoryDatatypes::mkExpDefSkolem( Node sel, TypeNode dt, TypeNode rt ) {
+  if( d_exp_def_skolem[dt].find( sel )==d_exp_def_skolem[dt].end() ){
+    std::stringstream ss;
+    ss << sel << "_uf";
+    d_exp_def_skolem[dt][ sel ] = NodeManager::currentNM()->mkSkolem( ss.str().c_str(),
+                                  NodeManager::currentNM()->mkFunctionType( dt, rt ) );
+  }
+}
+
+Node TheoryDatatypes::getTermSkolemFor( Node n ) {
+  if( n.getKind()==APPLY_CONSTRUCTOR ){
+    NodeMap::const_iterator it = d_term_sk.find( n );
+    if( it==d_term_sk.end() ){
+      //add purification unit lemma ( k = n )
+      Node k = NodeManager::currentNM()->mkSkolem( "k", n.getType(), "reference skolem for datatypes" );
+      d_term_sk[n] = k;
+      Node eq = k.eqNode( n );
+      Trace("datatypes-infer") << "DtInfer : ref : " << eq << std::endl;
+      d_pending_lem.push_back( eq );
+      //doSendLemma( eq );
+      //d_pending_exp[ eq ] = d_true;
+      return k;
+    }else{
+      return (*it).second;
+    }
+  }else{
+    return n;
+  }
+}
+
+void TheoryDatatypes::addTester( int ttindex, Node t, EqcInfo* eqc, Node n, Node t_arg ){
+  Trace("datatypes-debug") << "Add tester : " << t << " to eqc(" << n << ")" << std::endl;
+  Debug("datatypes-labels") << "Add tester " << t << " " << n << " " << eqc << std::endl;
+  bool tpolarity = t.getKind()!=NOT;
+  Node j, jt;
+  bool makeConflict = false;
+  int jtindex0 = getLabelIndex( eqc, n );
+  if( jtindex0!=-1 ){
+    //if we already know the constructor type, check whether it is in conflict or redundant
+    if( (jtindex0==ttindex)!=tpolarity ){
+      if( !eqc->d_constructor.get().isNull() ){
+        //conflict because equivalence class contains a constructor
+        std::vector< TNode > assumptions;
+        explain( t, assumptions );
+        explainEquality( eqc->d_constructor.get(), t_arg, true, assumptions );
+        d_conflictNode = mkAnd( assumptions );
+        Trace("dt-conflict") << "CONFLICT: Tester eq conflict : " << d_conflictNode << std::endl;
+        d_out->conflict( d_conflictNode );
+        d_conflict = true;
+        return;
+      }else{
+        makeConflict = true;
+        //conflict because the existing label is contradictory
+        j = getLabel( n );
+        jt = j;
+      }
+    }else{
+      return;
+    }
+  }else{
+    //otherwise, scan list of labels
+    NodeIntMap::iterator lbl_i = d_labels.find( n );
+    Assert( lbl_i != d_labels.end() );
+    int n_lbl = (*lbl_i).second;
+    for( int i=0; i<n_lbl; i++ ){
+      Node ti = d_labels_data[n][i];
+      Assert( ti.getKind()==NOT );
+      j = ti;
+      jt = j[0];
+      //int jtindex = Datatype::indexOf( jt.getOperator().toExpr() );
+      int jtindex = DatatypesRewriter::isTester( jt );
+      Assert( jtindex!=-1 );
+      if( jtindex==ttindex ){
+        if( tpolarity ){  //we are in conflict
+          makeConflict = true;
+          break;
+        }else{            //it is redundant
+          return;
+        }
+      }
+    }
+    if( !makeConflict ){
+      Debug("datatypes-labels") << "Add to labels " << t << std::endl;
+      //lbl->push_back( t );
+      d_labels[n] = n_lbl + 1;
+      if( n_lbl<(int)d_labels_data[n].size() ){
+        d_labels_data[n][n_lbl] = t;
+      }else{
+        d_labels_data[n].push_back( t );
+      }
+      n_lbl++;
+      
+      const Datatype& dt = ((DatatypeType)(t_arg.getType()).toType()).getDatatype();
+      Debug("datatypes-labels") << "Labels at " << n_lbl << " / " << dt.getNumConstructors() << std::endl;
+      if( tpolarity ){
+        instantiate( eqc, n );
+      }else{
+        //check if we have reached the maximum number of testers
+        // in this case, add the positive tester
+        //this should not be done for sygus, since cases may be limited
+        if( n_lbl==(int)dt.getNumConstructors()-1 && !dt.isSygus() ){
+          std::vector< bool > pcons;
+          getPossibleCons( eqc, n, pcons );
+          int testerIndex = -1;
+          for( unsigned i=0; i<pcons.size(); i++ ) {
+            if( pcons[i] ){
+              testerIndex = i;
+              break;
+            }
+          }
+          Assert( testerIndex!=-1 );
+          //we must explain why each term in the set of testers for this equivalence class is equal
+          std::vector< Node > eq_terms;
+          NodeBuilder<> nb(kind::AND);
+          //for( NodeList::const_iterator i = lbl->begin(); i != lbl->end(); i++ ) {
+          
+          for( int i=0; i<n_lbl; i++ ){
+            Node ti = d_labels_data[n][i];
+            nb << ti;
+            Assert( ti.getKind()==NOT );
+            Node t_arg2;
+            DatatypesRewriter::isTester( ti[0], t_arg2 );
+            //Assert( tindex!=-1 );
+            if( std::find( eq_terms.begin(), eq_terms.end(), t_arg2 )==eq_terms.end() ){
+              eq_terms.push_back( t_arg2 );
+              if( t_arg2!=t_arg ){
+                nb << t_arg2.eqNode( t_arg );
+              }
+            }
+          }
+          Node t_concl = DatatypesRewriter::mkTester( t_arg, testerIndex, dt );
+          Node t_concl_exp = ( nb.getNumChildren() == 1 ) ? nb.getChild( 0 ) : nb;
+          d_pending.push_back( t_concl );
+          d_pending_exp[ t_concl ] = t_concl_exp;
+          Trace("datatypes-infer") << "DtInfer : label : " << t_concl << " by " << t_concl_exp << std::endl;
+          d_infer.push_back( t_concl );
+          d_infer_exp.push_back( t_concl_exp );
+          return;
+        }
+      }
+    }
+  }
+  if( makeConflict ){
+    d_conflict = true;
+    Debug("datatypes-labels") << "Explain " << j << " " << t << std::endl;
+    std::vector< TNode > assumptions;
+    explain( j, assumptions );
+    explain( t, assumptions );
+    explainEquality( jt[0], t_arg, true, assumptions );
+    d_conflictNode = mkAnd( assumptions );
+    Trace("dt-conflict") << "CONFLICT: Tester conflict : " << d_conflictNode << std::endl;
+    d_out->conflict( d_conflictNode );
+  }
+}
+
+void TheoryDatatypes::addSelector( Node s, EqcInfo* eqc, Node n, bool assertFacts ) {
+  Trace("dt-collapse-sel") << "Add selector : " << s << " to eqc(" << n << ")" << std::endl;
+  //check to see if it is redundant
+  NodeIntMap::iterator sel_i = d_selector_apps.find( n );
+  Assert( sel_i != d_selector_apps.end() );
+  if( sel_i != d_selector_apps.end() ){
+    int n_sel = (*sel_i).second;
+    for( int j=0; j<n_sel; j++ ){
+      Node ss = d_selector_apps_data[n][j];
+      if( s.getOperator()==ss.getOperator() && ( s.getKind()!=DT_HEIGHT_BOUND || s[1]==ss[1] ) ){
+        Trace("dt-collapse-sel") << "...redundant." << std::endl;
+        return;
+      }
+    }
+    //add it to the vector
+    //sel->push_back( s );
+    d_selector_apps[n] = n_sel + 1;
+    if( n_sel<(int)d_selector_apps_data[n].size() ){
+      d_selector_apps_data[n][n_sel] = s;
+    }else{
+      d_selector_apps_data[n].push_back( s );
+    }
+  
+    eqc->d_selectors = true;
+  }
+  if( assertFacts && !eqc->d_constructor.get().isNull() ){
+    //conclude the collapsed merge
+    collapseSelector( s, eqc->d_constructor.get() );
+  }
+}
+
+void TheoryDatatypes::addConstructor( Node c, EqcInfo* eqc, Node n ){
+  Trace("datatypes-debug") << "Add constructor : " << c << " to eqc(" << n << ")" << std::endl;
+  Assert( eqc->d_constructor.get().isNull() );
+  //check labels
+  NodeIntMap::iterator lbl_i = d_labels.find( n );
+  if( lbl_i != d_labels.end() ){
+    size_t constructorIndex = Datatype::indexOf(c.getOperator().toExpr());
+    int n_lbl = (*lbl_i).second;
+    for( int i=0; i<n_lbl; i++ ){
+      Node t = d_labels_data[n][i];
+      if( t.getKind()==NOT ){
+        int tindex = DatatypesRewriter::isTester( t[0] );
+        Assert( tindex!=-1 );
+        if( tindex==(int)constructorIndex ){
+          std::vector< TNode > assumptions;
+          explain( t, assumptions );
+          explainEquality( c, t[0][0], true, assumptions );
+          d_conflictNode = mkAnd( assumptions );
+          Trace("dt-conflict") << "CONFLICT: Tester merge eq conflict : " << d_conflictNode << std::endl;
+          d_out->conflict( d_conflictNode );
+          d_conflict = true;
+          return;
+        }
+      }
+    }
+  }
+  //check selectors
+  NodeIntMap::iterator sel_i = d_selector_apps.find( n );
+  if( sel_i != d_selector_apps.end() ){
+    int n_sel = (*sel_i).second;
+    for( int j=0; j<n_sel; j++ ){
+      Node s = d_selector_apps_data[n][j];
+      //collapse the selector
+      collapseSelector( s, c );
+    }
+  }
+  eqc->d_constructor.set( c );
+}
+
+void TheoryDatatypes::collapseSelector( Node s, Node c ) {
+  Assert( c.getKind()==APPLY_CONSTRUCTOR );
+  Trace("dt-collapse-sel") << "collapse selector : " << s << " " << c << std::endl;
+  Node r;
+  bool wrong = false;
+  Node use_s;
+  Node eq_exp;
+  if( options::dtRefIntro() ){
+    eq_exp = d_true;
+    use_s = getTermSkolemFor( c );
+  }else{
+    eq_exp = c.eqNode( s[0] );
+    use_s = s;
+  }
+  if( s.getKind()==kind::APPLY_SELECTOR_TOTAL ){
+    //Trace("dt-collapse-sel") << "Indices : " << Datatype::indexOf(c.getOperator().toExpr()) << " " << Datatype::cindexOf(s.getOperator().toExpr()) << std::endl;
+    wrong = Datatype::indexOf(c.getOperator().toExpr())!=Datatype::cindexOf(s.getOperator().toExpr());
+    //if( wrong ){
+    //  return;
+    //}
+    //if( Datatype::indexOf(c.getOperator().toExpr())!=Datatype::cindexOf(s.getOperator().toExpr()) ){
+    //  mkExpDefSkolem( s.getOperator(), s[0].getType(), s.getType() );
+    //  r = NodeManager::currentNM()->mkNode( kind::APPLY_UF, d_exp_def_skolem[s.getOperator().toExpr()], s[0] );
+    //}else{
+    r = NodeManager::currentNM()->mkNode( kind::APPLY_SELECTOR_TOTAL, s.getOperator(), c );
+    if( options::dtRefIntro() ){
+      use_s = NodeManager::currentNM()->mkNode( kind::APPLY_SELECTOR_TOTAL, s.getOperator(), use_s );
+    }
+  }else{
+    if( s.getKind()==DT_SIZE ){
+      r = NodeManager::currentNM()->mkNode( DT_SIZE, c );
+      if( options::dtRefIntro() ){
+        use_s = NodeManager::currentNM()->mkNode( DT_SIZE, use_s );
+      }
+    }else if( s.getKind()==DT_HEIGHT_BOUND ){
+      r = NodeManager::currentNM()->mkNode( DT_HEIGHT_BOUND, c, s[1] );
+      if( options::dtRefIntro() ){
+        use_s = NodeManager::currentNM()->mkNode( DT_HEIGHT_BOUND, use_s, s[1] );
+      }
+      if( r==d_true ){
+        return;
+      }
+    }
+  }
+  if( !r.isNull() ){
+    Node rr = Rewriter::rewrite( r );
+    if( use_s!=rr ){
+      Node eq = use_s.eqNode( rr );
+      Node eq_exp;
+      if( options::dtRefIntro() ){
+        eq_exp = d_true;
+      }else{
+        eq_exp = c.eqNode( s[0] );
+      }
+      Trace("datatypes-infer") << "DtInfer : collapse sel";
+      Trace("datatypes-infer") << ( wrong ? " wrong" : "");
+      Trace("datatypes-infer") << " : " << eq << " by " << eq_exp << std::endl;
+      d_pending.push_back( eq );
+      d_pending_exp[ eq ] = eq_exp;
+      d_infer.push_back( eq );
+      d_infer_exp.push_back( eq_exp );
+    }
+  }
+}
+
+EqualityStatus TheoryDatatypes::getEqualityStatus(TNode a, TNode b){
+  Assert(d_equalityEngine.hasTerm(a) && d_equalityEngine.hasTerm(b));
+  if (d_equalityEngine.areEqual(a, b)) {
+    // The terms are implied to be equal
+    return EQUALITY_TRUE;
+  }
+  if (d_equalityEngine.areDisequal(a, b, false)) {
+    // The terms are implied to be dis-equal
+    return EQUALITY_FALSE;
+  }
+  return EQUALITY_FALSE_IN_MODEL;
+}
+
+
+
+void TheoryDatatypes::addCarePairs( quantifiers::TermArgTrie * t1, quantifiers::TermArgTrie * t2, unsigned arity, unsigned depth, unsigned& n_pairs ){
+  if( depth==arity ){
+    if( t2!=NULL ){
+      Node f1 = t1->getNodeData();
+      Node f2 = t2->getNodeData();
+      if( !areEqual( f1, f2 ) ){
+        Trace("dt-cg") << "Check " << f1 << " and " << f2 << std::endl;
+        vector< pair<TNode, TNode> > currentPairs;
+        for (unsigned k = 0; k < f1.getNumChildren(); ++ k) {
+          TNode x = f1[k];
+          TNode y = f2[k];
+          Assert( d_equalityEngine.hasTerm(x) );
+          Assert( d_equalityEngine.hasTerm(y) );
+          Assert( !areDisequal( x, y ) );
+          if( !d_equalityEngine.areEqual( x, y ) ){
+            Trace("dt-cg") << "Arg #" << k << " is " << x << " " << y << std::endl;
+            if( d_equalityEngine.isTriggerTerm(x, THEORY_DATATYPES) && d_equalityEngine.isTriggerTerm(y, THEORY_DATATYPES) ){
+              TNode x_shared = d_equalityEngine.getTriggerTermRepresentative(x, THEORY_DATATYPES);
+              TNode y_shared = d_equalityEngine.getTriggerTermRepresentative(y, THEORY_DATATYPES);
+              Trace("dt-cg") << "Arg #" << k << " shared term is " << x_shared << " " << y_shared << std::endl;
+              EqualityStatus eqStatus = d_valuation.getEqualityStatus(x_shared, y_shared);
+              Trace("dt-cg") << "...eq status is " << eqStatus << std::endl;
+              if( eqStatus==EQUALITY_FALSE_AND_PROPAGATED || eqStatus==EQUALITY_FALSE || eqStatus==EQUALITY_FALSE_IN_MODEL ){
+                //an argument is disequal, we are done
+                return;
+              }else{
+                currentPairs.push_back(make_pair(x_shared, y_shared));
+              }
+            }
+          }
+        }
+        for (unsigned c = 0; c < currentPairs.size(); ++ c) {
+          Trace("dt-cg-pair") << "Pair : " << currentPairs[c].first << " " << currentPairs[c].second << std::endl;
+          addCarePair(currentPairs[c].first, currentPairs[c].second);
+          n_pairs++;
+        }
+      }
+    }
+  }else{
+    if( t2==NULL ){
+      if( depth<(arity-1) ){
+        //add care pairs internal to each child
+        for( std::map< TNode, quantifiers::TermArgTrie >::iterator it = t1->d_data.begin(); it != t1->d_data.end(); ++it ){
+          addCarePairs( &it->second, NULL, arity, depth+1, n_pairs );
+        }
+      }
+      //add care pairs based on each pair of non-disequal arguments
+      for( std::map< TNode, quantifiers::TermArgTrie >::iterator it = t1->d_data.begin(); it != t1->d_data.end(); ++it ){
+        std::map< TNode, quantifiers::TermArgTrie >::iterator it2 = it;
+        ++it2;
+        for( ; it2 != t1->d_data.end(); ++it2 ){
+          if( !areDisequal(it->first, it2->first) ){
+            addCarePairs( &it->second, &it2->second, arity, depth+1, n_pairs );
+          }
+        }
+      }
+    }else{
+      //add care pairs based on product of indices, non-disequal arguments
+      for( std::map< TNode, quantifiers::TermArgTrie >::iterator it = t1->d_data.begin(); it != t1->d_data.end(); ++it ){
+        for( std::map< TNode, quantifiers::TermArgTrie >::iterator it2 = t2->d_data.begin(); it2 != t2->d_data.end(); ++it2 ){
+          if( !areDisequal(it->first, it2->first) ){
+            addCarePairs( &it->second, &it2->second, arity, depth+1, n_pairs );
+          }
+        }
+      }
+    }
+  }
+}
+
+void TheoryDatatypes::computeCareGraph(){
+  unsigned n_pairs = 0;
+  Trace("dt-cg-summary") << "Compute graph for dt..." << d_functionTerms.size() << " " << d_sharedTerms.size() << std::endl;
+  Trace("dt-cg") << "Build indices..." << std::endl;
+  std::map< TypeNode, std::map< Node, quantifiers::TermArgTrie > > index;
+  std::map< Node, unsigned > arity;
+  //populate indices
+  unsigned functionTerms = d_functionTerms.size();
+  for( unsigned i=0; i<functionTerms; i++ ){
+    TNode f1 = d_functionTerms[i];
+    Assert(d_equalityEngine.hasTerm(f1));
+    Trace("dt-cg-debug") << "...build for " << f1 << std::endl;
+    //break into index based on operator, and type of first argument (since some operators are parametric)
+    Node op = f1.getOperator();
+    TypeNode tn = f1[0].getType();
+    std::vector< TNode > reps;
+    bool has_trigger_arg = false;
+    for( unsigned j=0; j<f1.getNumChildren(); j++ ){
+      reps.push_back( d_equalityEngine.getRepresentative( f1[j] ) );
+      if( d_equalityEngine.isTriggerTerm( f1[j], THEORY_DATATYPES ) ){
+        has_trigger_arg = true;
+      }
+    }
+    //only may contribute to care pairs if has at least one trigger argument
+    if( has_trigger_arg ){
+      index[tn][op].addTerm( f1, reps );
+      arity[op] = reps.size();
+    }
+  }
+  //for each index
+  for( std::map< TypeNode, std::map< Node, quantifiers::TermArgTrie > >::iterator iti = index.begin(); iti != index.end(); ++iti ){
+    for( std::map< Node, quantifiers::TermArgTrie >::iterator itii = iti->second.begin(); itii != iti->second.end(); ++itii ){
+      Trace("dt-cg") << "Process index " << itii->first << ", " << iti->first << "..." << std::endl;
+      addCarePairs( &itii->second, NULL, arity[ itii->first ], 0, n_pairs );
+    }
+  }
+  Trace("dt-cg-summary") << "...done, # pairs = " << n_pairs << std::endl;
+}
+
+void TheoryDatatypes::collectModelInfo( TheoryModel* m, bool fullModel ){
+  Trace("dt-cmi") << "Datatypes : Collect model info " << d_equalityEngine.consistent() << std::endl;
+  Trace("dt-model") << std::endl;
+  printModelDebug( "dt-model" );
+  Trace("dt-model") << std::endl;
+  
+  set<Node> termSet;
+  
+  // Compute terms appearing in assertions and shared terms, and in inferred equalities
+  getRelevantTerms(termSet);
+
+  //combine the equality engine
+  m->assertEqualityEngine( &d_equalityEngine, &termSet );
+  
+
+  //get all constructors
+  eq::EqClassesIterator eqccs_i = eq::EqClassesIterator( &d_equalityEngine );
+  std::vector< Node > cons;
+  std::vector< Node > nodes;
+  std::map< Node, Node > eqc_cons;
+  while( !eqccs_i.isFinished() ){
+    Node eqc = (*eqccs_i);
+    //for all equivalence classes that are datatypes
+    if( termSet.find( eqc )==termSet.end() ){
+      Trace("dt-cmi-debug") << "Irrelevant eqc : " << eqc << std::endl;
+    }else{
+      if( eqc.getType().isDatatype() ){
+        EqcInfo* ei = getOrMakeEqcInfo( eqc );
+        if( ei && !ei->d_constructor.get().isNull() ){
+          Node c = ei->d_constructor.get();
+          cons.push_back( c );
+          eqc_cons[ eqc ] = c;
+        }else{
+          //if eqc contains a symbol known to datatypes (a selector), then we must assign
+          //should assign constructors to EQC if they have a selector or a tester
+          bool shouldConsider = ( ei && ei->d_selectors ) || hasTester( eqc );
+          if( shouldConsider ){
+            nodes.push_back( eqc );
+          }
+        }
+      }
+    }
+    ++eqccs_i;
+  }
+
+  //unsigned orig_size = nodes.size();
+  std::map< TypeNode, int > typ_enum_map;
+  std::vector< TypeEnumerator > typ_enum;
+  unsigned index = 0;
+  while( index<nodes.size() ){
+    Node eqc = nodes[index];
+    Node neqc;
+    bool addCons = false;
+    Type tt = eqc.getType().toType();
+    const Datatype& dt = ((DatatypeType)tt).getDatatype();
+    if( !d_equalityEngine.hasTerm( eqc ) ){
+      Assert( false );
+    }else{
+      Trace("dt-cmi") << "NOTICE : Datatypes: no constructor in equivalence class " << eqc << std::endl;
+      Trace("dt-cmi") << "   Type : " << eqc.getType() << std::endl;
+      EqcInfo* ei = getOrMakeEqcInfo( eqc );
+      std::vector< bool > pcons;
+      getPossibleCons( ei, eqc, pcons );
+      Trace("dt-cmi") << "Possible constructors : ";
+      for( unsigned i=0; i<pcons.size(); i++ ){
+        Trace("dt-cmi") << pcons[i] << " ";
+      }
+      Trace("dt-cmi") << std::endl;
+      for( unsigned r=0; r<2; r++ ){
+        if( neqc.isNull() ){
+          for( unsigned i=0; i<pcons.size(); i++ ){
+            //must try the infinite ones first
+            bool cfinite = dt[ i ].isInterpretedFinite( tt );
+            if( pcons[i] && (r==1)==cfinite ){
+              neqc = DatatypesRewriter::getInstCons( eqc, dt, i );
+              //for( unsigned j=0; j<neqc.getNumChildren(); j++ ){
+              //  //if( sels[i].find( j )==sels[i].end() && neqc[j].getType().isDatatype() ){
+              //  if( !d_equalityEngine.hasTerm( neqc[j] ) && neqc[j].getType().isDatatype() ){
+              //    nodes.push_back( neqc[j] );
+              //  }
+              //}
+              break;
+            }
+          }
+        }
+      }
+      addCons = true;
+    }
+    if( !neqc.isNull() ){
+      Trace("dt-cmi") << "Assign : " << neqc << std::endl;
+      m->assertEquality( eqc, neqc, true );
+      eqc_cons[ eqc ] = neqc;
+    }
+    if( addCons ){
+      cons.push_back( neqc );
+    }
+    ++index;
+  }
+
+  for( std::map< Node, Node >::iterator it = eqc_cons.begin(); it != eqc_cons.end(); ++it ){
+    Node eqc = it->first;
+    if( eqc.getType().isCodatatype() ){
+      //until models are implemented for codatatypes
+      //throw Exception("Models for codatatypes are not supported in this version.");
+      //must proactive expand to avoid looping behavior in model builder
+      if( !it->second.isNull() ){
+        std::map< Node, int > vmap;
+        Node v = getCodatatypesValue( it->first, eqc_cons, vmap, 0 );
+        Trace("dt-cmi") << "  EQC(" << it->first << "), constructor is " << it->second << ", value is " << v << ", const = " << v.isConst() << std::endl;
+        m->assertEquality( eqc, v, true );
+        m->assertRepresentative( v );
+      }
+    }else{
+      Trace("dt-cmi") << "Datatypes : assert representative " << it->second << " for " << it->first << std::endl;
+      m->assertRepresentative( it->second );
+    }
+  }
+}
+
+
+Node TheoryDatatypes::getCodatatypesValue( Node n, std::map< Node, Node >& eqc_cons, std::map< Node, int >& vmap, int depth ){
+  std::map< Node, int >::iterator itv = vmap.find( n );
+  if( itv!=vmap.end() ){
+    int debruijn = depth - 1 - itv->second;
+    return NodeManager::currentNM()->mkConst(UninterpretedConstant(n.getType().toType(), debruijn));
+  }else if( n.getType().isDatatype() ){
+    Node nc = eqc_cons[n];
+    if( !nc.isNull() ){
+      vmap[n] = depth;
+      Trace("dt-cmi-cdt-debug") << "    map " << n << " -> " << depth << std::endl;
+      Assert( nc.getKind()==APPLY_CONSTRUCTOR );
+      std::vector< Node > children;
+      children.push_back( nc.getOperator() );
+      for( unsigned i=0; i<nc.getNumChildren(); i++ ){
+        Node r = getRepresentative( nc[i] );
+        Node rv = getCodatatypesValue( r, eqc_cons, vmap, depth+1 );
+        children.push_back( rv );
+      }
+      vmap.erase( n );
+      return NodeManager::currentNM()->mkNode( APPLY_CONSTRUCTOR, children );
+    }
+  }
+  return n;
+}
+
+Node TheoryDatatypes::getSingletonLemma( TypeNode tn, bool pol ) {
+  int index = pol ? 0 : 1;
+  std::map< TypeNode, Node >::iterator it = d_singleton_lemma[index].find( tn );
+  if( it==d_singleton_lemma[index].end() ){
+    Node a;
+    if( pol ){
+      Node v1 = NodeManager::currentNM()->mkBoundVar( tn );
+      Node v2 = NodeManager::currentNM()->mkBoundVar( tn );
+      a = NodeManager::currentNM()->mkNode( FORALL, NodeManager::currentNM()->mkNode( BOUND_VAR_LIST, v1, v2 ), v1.eqNode( v2 ) );
+    }else{
+      Node v1 = NodeManager::currentNM()->mkSkolem( "k1", tn );
+      Node v2 = NodeManager::currentNM()->mkSkolem( "k2", tn );
+      a = v1.eqNode( v2 ).negate();
+      //send out immediately as lemma
+      doSendLemma( a );
+      Trace("dt-singleton") << "******** assert " << a << " to avoid singleton cardinality for type " << tn << std::endl;
+    }
+    d_singleton_lemma[index][tn] = a;
+    return a;
+  }else{
+    return it->second;
+  }
+}
+
+void TheoryDatatypes::collectTerms( Node n ) {
+  if( d_collectTermsCache.find( n )==d_collectTermsCache.end() ){
+    d_collectTermsCache[n] = true;
+    //for( int i=0; i<(int)n.getNumChildren(); i++ ) {
+    //  collectTerms( n[i] );
+    //}
+    if( n.getKind() == APPLY_CONSTRUCTOR ){
+      Debug("datatypes") << "  Found constructor " << n << endl;
+      if( n.getNumChildren()>0 ){
+        d_functionTerms.push_back( n );
+      }
+    }else{
+
+      if( n.getKind() == APPLY_SELECTOR_TOTAL || n.getKind() == DT_SIZE || n.getKind() == DT_HEIGHT_BOUND ){
+        d_functionTerms.push_back( n );
+        //we must also record which selectors exist
+        Trace("dt-collapse-sel") << "  Found selector " << n << endl;
+        Node rep = getRepresentative( n[0] );
+        //record it in the selectors
+        EqcInfo* eqc = getOrMakeEqcInfo( rep, true );
+        //add it to the eqc info
+        addSelector( n, eqc, rep );
+
+        if( n.getKind() == DT_SIZE ){
+          Node conc = NodeManager::currentNM()->mkNode( LEQ, NodeManager::currentNM()->mkConst( Rational(0) ), n );
+          //must be non-negative
+          Trace("datatypes-infer") << "DtInfer : non-negative size : " << conc << std::endl;
+          //d_pending.push_back( conc );
+          //d_pending_exp[ conc ] = d_true;
+          //d_infer.push_back( conc );
+          d_pending_lem.push_back( conc );
+  /*
+          //add size = 0 lemma
+          Node nn = n.eqNode( NodeManager::currentNM()->mkConst( Rational(0) ) );
+          std::vector< Node > children;
+          children.push_back( nn.negate() );
+          const Datatype& dt = ((DatatypeType)(n[0].getType()).toType()).getDatatype();
+          for( unsigned i=0; i<dt.getNumConstructors(); i++ ){
+            if( DatatypesRewriter::isNullaryConstructor( dt[i] ) ){
+              Node test = DatatypesRewriter::mkTester( n[0], i, dt );
+              children.push_back( test );
+            }
+          }
+          conc = children.size()==1 ? children[0] : NodeManager::currentNM()->mkNode( OR, children );
+          Trace("datatypes-infer") << "DtInfer : zero size : " << conc << std::endl;
+          d_pending.push_back( conc );
+          d_pending_exp[ conc ] = d_true;
+          d_infer.push_back( conc );
+  */
+        }
+
+        if( n.getKind() == DT_HEIGHT_BOUND ){
+          if( n[1].getConst<Rational>().isZero() ){
+            std::vector< Node > children;
+            const Datatype& dt = ((DatatypeType)(n[0].getType()).toType()).getDatatype();
+            for( unsigned i=0; i<dt.getNumConstructors(); i++ ){
+              if( DatatypesRewriter::isNullaryConstructor( dt[i] ) ){
+                Node test = DatatypesRewriter::mkTester( n[0], i, dt );
+                children.push_back( test );
+              }
+            }
+            Node lem;
+            if( children.empty() ){
+              lem = n.negate();
+            }else{
+              lem = NodeManager::currentNM()->mkNode( EQUAL, n, children.size()==1 ? children[0] : NodeManager::currentNM()->mkNode( OR, children ) );
+            }
+            Trace("datatypes-infer") << "DtInfer : zero height : " << lem << std::endl;
+            //d_pending.push_back( lem );
+            //d_pending_exp[ lem ] = d_true;
+            //d_infer.push_back( lem );
+            d_pending_lem.push_back( lem );
+          }
+        }
+      }
+    }
+  }
+}
+
+void TheoryDatatypes::processNewTerm( Node n ){
+  Trace("dt-terms") << "Created term : " << n << std::endl;
+  //see if it is rewritten to be something different
+  Node rn = Rewriter::rewrite( n );
+  if( rn!=n && !areEqual( rn, n ) ){
+    Node eq = rn.eqNode( n );
+    d_pending.push_back( eq );
+    d_pending_exp[ eq ] = d_true;
+    Trace("datatypes-infer") << "DtInfer : rewrite : " << eq << std::endl;
+    d_infer.push_back( eq );
+  }
+}
+
+Node TheoryDatatypes::getInstantiateCons( Node n, const Datatype& dt, int index ){
+  std::map< int, Node >::iterator it = d_inst_map[n].find( index );
+  if( it!=d_inst_map[n].end() ){
+    return it->second;
+  }else{
+    //add constructor to equivalence class
+    Node k = getTermSkolemFor( n );
+    Node n_ic = DatatypesRewriter::getInstCons( k, dt, index );
+    //Assert( n_ic==Rewriter::rewrite( n_ic ) );
+    n_ic = Rewriter::rewrite( n_ic );
+    collectTerms( n_ic );
+    d_equalityEngine.addTerm(n_ic);
+    Debug("dt-enum") << "Made instantiate cons " << n_ic << std::endl;
+    d_inst_map[n][index] = n_ic;
+    return n_ic;
+  }
+}
+
+void TheoryDatatypes::instantiate( EqcInfo* eqc, Node n ){
+  //add constructor to equivalence class if not done so already
+  int index = getLabelIndex( eqc, n );
+  if( index!=-1 && !eqc->d_inst ){
+    if( options::dtUseTesters() ){
+      Node exp;
+      Node tt;
+      if( !eqc->d_constructor.get().isNull() ){
+        exp = d_true;
+        tt = eqc->d_constructor;
+      }else{
+        exp = getLabel( n );
+        tt = exp[0];
+      }
+      const Datatype& dt = ((DatatypeType)(tt.getType()).toType()).getDatatype();
+      //must be finite or have a selector
+      //if( eqc->d_selectors || dt[ index ].isFinite() ){
+      //instantiate this equivalence class
+      eqc->d_inst = true;
+      Node tt_cons = getInstantiateCons( tt, dt, index );
+      Node eq;
+      if( tt!=tt_cons ){
+        eq = tt.eqNode( tt_cons );
+        Debug("datatypes-inst") << "DtInstantiate : " << eqc << " " << eq << std::endl;
+        d_pending.push_back( eq );
+        d_pending_exp[ eq ] = exp;
+        Trace("datatypes-infer-debug") << "inst : " << eqc << " " << n << std::endl;
+        Trace("datatypes-infer") << "DtInfer : instantiate : " << eq << " by " << exp << std::endl;
+        //eqc->d_inst.set( eq );
+        d_infer.push_back( eq );
+        d_infer_exp.push_back( exp );
+      }
+    }else{
+      eqc->d_inst = true;
+    }
+    //}
+    //else{
+    //  Debug("datatypes-inst") << "Do not instantiate" << std::endl;
+    //}
+  }
+}
+
+void TheoryDatatypes::checkCycles() {
+  Debug("datatypes-cycle-check") << "Check cycles" << std::endl;
+  std::vector< Node > cdt_eqc;
+  eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( &d_equalityEngine );
+  while( !eqcs_i.isFinished() ){
+    Node eqc = (*eqcs_i);
+    TypeNode tn = eqc.getType();
+    if( tn.isDatatype() ) {
+      if( !tn.isCodatatype() ){
+        if( options::dtCyclic() ){
+          //do cycle checks
+          std::map< TNode, bool > visited;
+          std::vector< TNode > expl;
+          Node cn = searchForCycle( eqc, eqc, visited, expl );
+          //if we discovered a different cycle while searching this one
+          if( !cn.isNull() && cn!=eqc ){
+            visited.clear();
+            expl.clear();
+            Node prev = cn;
+            cn = searchForCycle( cn, cn, visited, expl );
+            Assert( prev==cn );
+          }
+
+          if( !cn.isNull() ) {
+            Assert( expl.size()>0 );
+            d_conflictNode = mkAnd( expl );
+            Trace("dt-conflict") << "CONFLICT: Cycle conflict : " << d_conflictNode << std::endl;
+            d_out->conflict( d_conflictNode );
+            d_conflict = true;
+            return;
+          }
+        }
+      }else{
+        //indexing
+        cdt_eqc.push_back( eqc );
+      }
+    }
+    ++eqcs_i;
+  }
+  //process codatatypes
+  if( cdt_eqc.size()>1 && options::cdtBisimilar() ){
+    printModelDebug("dt-cdt-debug");
+    Trace("dt-cdt-debug") << "Process " << cdt_eqc.size() << " co-datatypes" << std::endl;
+    std::vector< std::vector< Node > > part_out;
+    std::vector< TNode > exp;
+    std::map< Node, Node > cn;
+    std::map< Node, std::map< Node, int > > dni;
+    for( unsigned i=0; i<cdt_eqc.size(); i++ ){
+      cn[cdt_eqc[i]] = cdt_eqc[i];
+    }
+    separateBisimilar( cdt_eqc, part_out, exp, cn, dni, 0, false );
+    Trace("dt-cdt-debug") << "Done separate bisimilar." << std::endl;
+    if( !part_out.empty() ){
+      Trace("dt-cdt-debug") << "Process partition size " << part_out.size() << std::endl;
+      for( unsigned i=0; i<part_out.size(); i++ ){
+        std::vector< Node > part;
+        part.push_back( part_out[i][0] );
+        for( unsigned j=1; j<part_out[i].size(); j++ ){
+          Trace("dt-cdt") << "Codatatypes : " << part_out[i][0] << " and " << part_out[i][j] << " must be equal!!" << std::endl;
+          part.push_back( part_out[i][j] );
+          std::vector< std::vector< Node > > tpart_out;
+          exp.clear();
+          cn.clear();
+          cn[part_out[i][0]] = part_out[i][0];
+          cn[part_out[i][j]] = part_out[i][j];
+          dni.clear();
+          separateBisimilar( part, tpart_out, exp, cn, dni, 0, true );
+          Assert( tpart_out.size()==1 && tpart_out[0].size()==2 );
+          part.pop_back();
+          //merge based on explanation
+          Trace("dt-cdt") << "  exp is : ";
+          for( unsigned k=0; k<exp.size(); k++ ){
+            Trace("dt-cdt") << exp[k] << " ";
+          }
+          Trace("dt-cdt") << std::endl;
+          Node eq = part_out[i][0].eqNode( part_out[i][j] );
+          Node eqExp = mkAnd( exp );
+          d_pending.push_back( eq );
+          d_pending_exp[ eq ] = eqExp;
+          Trace("datatypes-infer") << "DtInfer : cdt-bisimilar : " << eq << " by " << eqExp << std::endl;
+          d_infer.push_back( eq );
+          d_infer_exp.push_back( eqExp );
+        }
+      }
+    }
+  }
+}
+
+//everything is in terms of representatives
+void TheoryDatatypes::separateBisimilar( std::vector< Node >& part, std::vector< std::vector< Node > >& part_out,
+                                         std::vector< TNode >& exp,
+                                         std::map< Node, Node >& cn,
+                                         std::map< Node, std::map< Node, int > >& dni, int dniLvl, bool mkExp ){
+  if( !mkExp ){
+    Trace("dt-cdt-debug") << "Separate bisimilar : " << std::endl;
+    for( unsigned i=0; i<part.size(); i++ ){
+      Trace("dt-cdt-debug") << "   " << part[i] << ", current = " << cn[part[i]] << std::endl;
+    }
+  }
+  Assert( part.size()>1 );
+  std::map< Node, std::vector< Node > > new_part;
+  std::map< Node, std::vector< Node > > new_part_c;
+  std::map< int, std::vector< Node > > new_part_rec;
+
+  std::map< Node, Node > cn_cons;
+  for( unsigned j=0; j<part.size(); j++ ){
+    Node c = cn[part[j]];
+    std::map< Node, int >::iterator it_rec = dni[part[j]].find( c );
+    if( it_rec!=dni[part[j]].end() ){
+      //looped
+      if( !mkExp ){ Trace("dt-cdt-debug") << "  - " << part[j] << " is looping at index " << it_rec->second << std::endl; }
+      new_part_rec[ it_rec->second ].push_back( part[j] );
+    }else{
+      if( c.getType().isDatatype() ){
+        Node ncons = getEqcConstructor( c );
+        if( ncons.getKind()==APPLY_CONSTRUCTOR ) {
+          Node cc = ncons.getOperator();
+          cn_cons[part[j]] = ncons;
+          if( mkExp ){
+            explainEquality( c, ncons, true, exp );
+          }
+          new_part[cc].push_back( part[j] );
+          if( !mkExp ){ Trace("dt-cdt-debug") << "  - " << part[j] << " is datatype " << ncons << "." << std::endl; }
+        }else{
+          new_part_c[c].push_back( part[j] );
+          if( !mkExp ){ Trace("dt-cdt-debug") << "  - " << part[j] << " is unspecified datatype." << std::endl; }
+        }
+      }else{
+        //add equivalences
+        if( !mkExp ){ Trace("dt-cdt-debug") << "  - " << part[j] << " is term " << c << "." << std::endl; }
+        new_part_c[c].push_back( part[j] );
+      }
+    }
+  }
+  //direct add for constants
+  for( std::map< Node, std::vector< Node > >::iterator it = new_part_c.begin(); it != new_part_c.end(); ++it ){
+    if( it->second.size()>1 ){
+      std::vector< Node > vec;
+      vec.insert( vec.begin(), it->second.begin(), it->second.end() );
+      part_out.push_back( vec );
+    }
+  }
+  //direct add for recursive
+  for( std::map< int, std::vector< Node > >::iterator it = new_part_rec.begin(); it != new_part_rec.end(); ++it ){
+    if( it->second.size()>1 ){
+      std::vector< Node > vec;
+      vec.insert( vec.begin(), it->second.begin(), it->second.end() );
+      part_out.push_back( vec );
+    }else{
+      //add back : could match a datatype?
+    }
+  }
+  //recurse for the datatypes
+  for( std::map< Node, std::vector< Node > >::iterator it = new_part.begin(); it != new_part.end(); ++it ){
+    if( it->second.size()>1 ){
+      //set dni to check for loops
+      std::map< Node, Node > dni_rem;
+      for( unsigned i=0; i<it->second.size(); i++ ){
+        Node n = it->second[i];
+        dni[n][cn[n]] = dniLvl;
+        dni_rem[n] = cn[n];
+      }
+
+      //we will split based on the arguments of the datatype
+      std::vector< std::vector< Node > > split_new_part;
+      split_new_part.push_back( it->second );
+
+      unsigned nChildren = cn_cons[it->second[0]].getNumChildren();
+      //for each child of constructor
+      unsigned cindex = 0;
+      while( cindex<nChildren && !split_new_part.empty() ){
+        if( !mkExp ){ Trace("dt-cdt-debug") << "Split argument #" << cindex << " of " << it->first << "..." << std::endl; }
+        std::vector< std::vector< Node > > next_split_new_part;
+        for( unsigned j=0; j<split_new_part.size(); j++ ){
+          //set current node
+          for( unsigned k=0; k<split_new_part[j].size(); k++ ){
+            Node n = split_new_part[j][k];
+            cn[n] = getRepresentative( cn_cons[n][cindex] );
+            if( mkExp ){
+              explainEquality( cn[n], cn_cons[n][cindex], true, exp );
+            }
+          }
+          std::vector< std::vector< Node > > c_part_out;
+          separateBisimilar( split_new_part[j], c_part_out, exp, cn, dni, dniLvl+1, mkExp );
+          next_split_new_part.insert( next_split_new_part.end(), c_part_out.begin(), c_part_out.end() );
+        }
+        split_new_part.clear();
+        split_new_part.insert( split_new_part.end(), next_split_new_part.begin(), next_split_new_part.end() );
+        cindex++;
+      }
+      part_out.insert( part_out.end(), split_new_part.begin(), split_new_part.end() );
+
+      for( std::map< Node, Node >::iterator it2 = dni_rem.begin(); it2 != dni_rem.end(); ++it2 ){
+        dni[it2->first].erase( it2->second );
+      }
+    }
+  }
+}
+
+//postcondition: if cycle detected, explanation is why n is a subterm of on
+Node TheoryDatatypes::searchForCycle( TNode n, TNode on,
+                                      std::map< TNode, bool >& visited,
+                                      std::vector< TNode >& explanation, bool firstTime ) {
+  Debug("datatypes-cycle-check") << "Search for cycle " << n << " " << on << endl;
+  TNode ncons;
+  TNode nn;
+  if( !firstTime ){
+    nn = getRepresentative( n );
+    if( nn==on ){
+      explainEquality( n, nn, true, explanation );
+      return on;
+    }
+  }else{
+    nn = n;
+  }
+  if( visited.find( nn ) == visited.end() ) {
+    visited[nn] = true;
+    TNode ncons = getEqcConstructor( nn );
+    if( ncons.getKind()==APPLY_CONSTRUCTOR ) {
+      for( int i=0; i<(int)ncons.getNumChildren(); i++ ) {
+        TNode cn = searchForCycle( ncons[i], on, visited, explanation, false );
+        if( cn==on ) {
+          //if( Debug.isOn("datatypes-cycles") && !d_cycle_check.isConnectedNode( n, ncons[i] ) ){
+          //  Debug("datatypes-cycles") << "Cycle subterm: " << n << " is not -> " << ncons[i] << "!!!!" << std::endl;
+          //}
+          //add explanation for why the constructor is connected
+          if( n != ncons ) {
+            explainEquality( n, ncons, true, explanation );
+          }
+          return on;
+        }else if( !cn.isNull() ){
+          return cn;
+        }
+      }
+    }
+    visited.erase( nn );
+    return Node::null();
+  }else{
+    TypeNode tn = nn.getType();
+    if( tn.isDatatype() ) {
+      if( !tn.isCodatatype() ){
+        return nn;
+      }
+    }
+    return Node::null();
+  }
+}
+
+bool TheoryDatatypes::mustCommunicateFact( Node n, Node exp ){
+  //the datatypes decision procedure makes "internal" inferences apart from the equality engine :
+  //  (1) Unification : C( t1...tn ) = C( s1...sn ) => ti = si
+  //  (2) Label : ~is_C1( t ) ... ~is_C{i-1}( t ) ~is_C{i+1}( t ) ... ~is_Cn( t ) => is_Ci( t )
+  //  (3) Instantiate : is_C( t ) => t = C( sel_1( t ) ... sel_n( t ) )
+  //  (4) collapse selector : S( C( t1...tn ) ) = t'
+  //  (5) collapse term size : size( C( t1...tn ) ) = 1 + size( t1 ) + ... + size( tn )
+  //  (6) non-negative size : 0 <= size( t )
+  //We may need to communicate outwards if the conclusions involve other theories.  Also communicate (6) and OR conclusions.
+  Trace("dt-lemma-debug") << "Compute for " << exp << " => " << n << std::endl;
+  bool addLemma = false;
+  if( options::dtInferAsLemmas() && exp!=d_true ){
+    addLemma = true;    
+  }else if( n.getKind()==EQUAL ){
+    TypeNode tn = n[0].getType();
+    if( !tn.isDatatype() ){
+      addLemma = true;
+    }else{
+      const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+      addLemma = dt.involvesExternalType();
+    }
+  }else if( n.getKind()==LEQ || n.getKind()==OR ){
+    addLemma = true;
+  }
+  if( addLemma ){
+    Trace("dt-lemma-debug") << "Communicate " << n << std::endl;
+    return true;
+  }else{
+    Trace("dt-lemma-debug") << "Do not need to communicate " << n << std::endl;
+    return false;
+  }
+}
+
+bool TheoryDatatypes::hasTerm( TNode a ){
+  return d_equalityEngine.hasTerm( a );
+}
+
+bool TheoryDatatypes::areEqual( TNode a, TNode b ){
+  if( a==b ){
+    return true;
+  }else if( hasTerm( a ) && hasTerm( b ) ){
+    return d_equalityEngine.areEqual( a, b );
+  }else{
+    return false;
+  }
+}
+
+bool TheoryDatatypes::areDisequal( TNode a, TNode b ){
+  if( a==b ){
+    return false;
+  }else if( hasTerm( a ) && hasTerm( b ) ){
+    return d_equalityEngine.areDisequal( a, b, false );
+  }else{
+    return false;
+  }
+}
+
+TNode TheoryDatatypes::getRepresentative( TNode a ){
+  if( hasTerm( a ) ){
+    return d_equalityEngine.getRepresentative( a );
+  }else{
+    return a;
+  }
+}
+
+bool TheoryDatatypes::getCurrentSubstitution( int effort, std::vector< Node >& vars, std::vector< Node >& subs, std::map< Node, std::vector< Node > >& exp ) {
+  return false;
+}
+
+void TheoryDatatypes::printModelDebug( const char* c ){
+  if(! (Trace.isOn(c))) {
+    return;
+  }
+
+  Trace( c ) << "Datatypes model : " << std::endl;
+  eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( &d_equalityEngine );
+  while( !eqcs_i.isFinished() ){
+    Node eqc = (*eqcs_i);
+    //if( !eqc.getType().isBoolean() ){
+      if( eqc.getType().isDatatype() ){
+        Trace( c ) << "DATATYPE : ";
+      }
+      Trace( c ) << eqc << " : " << eqc.getType() << " : " << std::endl;
+      Trace( c ) << "   { ";
+      //add terms to model
+      eq::EqClassIterator eqc_i = eq::EqClassIterator( eqc, &d_equalityEngine );
+      while( !eqc_i.isFinished() ){
+        if( (*eqc_i)!=eqc ){
+          Trace( c ) << (*eqc_i) << " ";
+        }
+        ++eqc_i;
+      }
+      Trace( c ) << "}" << std::endl;
+      if( eqc.getType().isDatatype() ){
+        EqcInfo* ei = getOrMakeEqcInfo( eqc );
+        if( ei ){
+          Trace( c ) << "   Instantiated : " << ei->d_inst.get() << std::endl;
+          Trace( c ) << "   Constructor : ";
+          if( !ei->d_constructor.get().isNull() ){
+            Trace( c )<< ei->d_constructor.get();
+          }
+          Trace( c ) << std::endl << "   Labels : ";
+          if( hasLabel( ei, eqc ) ){
+            Trace( c ) << getLabel( eqc );
+          }else{
+            NodeIntMap::iterator lbl_i = d_labels.find( eqc );
+            if( lbl_i != d_labels.end() ){
+              for( int j=0; j<(*lbl_i).second; j++ ){
+                Trace( c ) << d_labels_data[eqc][j] << " ";
+              }
+            }
+          }
+          Trace( c ) << std::endl;
+          Trace( c ) << "   Selectors : " << ( ei->d_selectors ? "yes, " : "no " );
+          NodeIntMap::iterator sel_i = d_selector_apps.find( eqc );
+          if( sel_i != d_selector_apps.end() ){
+            for( int j=0; j<(*sel_i).second; j++ ){
+              Trace( c ) << d_selector_apps_data[eqc][j] << " ";
+            }
+          }
+          Trace( c ) << std::endl;
+        }
+      }
+    //}
+    ++eqcs_i;
+  }
+}
+
+Node TheoryDatatypes::mkAnd( std::vector< TNode >& assumptions ) {
+  if( assumptions.empty() ){
+    return d_true;
+  }else if( assumptions.size()==1 ){
+    return assumptions[0];
+  }else{
+    return NodeManager::currentNM()->mkNode( AND, assumptions );
+  }
+}
+
+bool TheoryDatatypes::checkClashModEq( TNode n1, TNode n2, std::vector< Node >& exp, std::vector< std::pair< TNode, TNode > >& deq_cand ) {
+  if( n1.getKind() == kind::APPLY_CONSTRUCTOR && n2.getKind() == kind::APPLY_CONSTRUCTOR ) {
+    if( n1.getOperator() != n2.getOperator() ) {
+      return true;
+    } else {
+      Assert( n1.getNumChildren() == n2.getNumChildren() );
+      for( int i=0; i<(int)n1.getNumChildren(); i++ ) {
+        TNode nc1 = getEqcConstructor( n1[i] );
+        TNode nc2 = getEqcConstructor( n2[i] );
+        if( checkClashModEq( nc1, nc2, exp, deq_cand ) ) {
+          if( nc1!=n1[i] ){
+            exp.push_back( nc1.eqNode( n1[i] ) );
+          }
+          if( nc2!=n2[i] ){
+            exp.push_back( nc2.eqNode( n2[i] ) );
+          }
+          return true;
+        }
+      }
+    }
+  }else if( n1!=n2 ){
+    if( n1.isConst() && n2.isConst() ){
+      return true;
+    }else{
+      if( !areEqual( n1, n2 ) ){
+        deq_cand.push_back( std::pair< TNode, TNode >( n1, n2 ) );
+      }
+    }
+  }
+  return false;
+}
+
+void TheoryDatatypes::getRelevantTerms( std::set<Node>& termSet ) {
+  // Compute terms appearing in assertions and shared terms
+  computeRelevantTerms(termSet);
+  
+  //also include non-singleton equivalence classes
+  eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( &d_equalityEngine );
+  while( !eqcs_i.isFinished() ){
+    TNode r = (*eqcs_i);
+    bool addedFirst = false;
+    Node first;
+    eq::EqClassIterator eqc_i = eq::EqClassIterator( r, &d_equalityEngine );
+    while( !eqc_i.isFinished() ){
+      TNode n = (*eqc_i);
+      if( first.isNull() ){
+        first = n;
+      }else{
+        if( !addedFirst ){
+          addedFirst = true;
+          termSet.insert( first );
+        }
+        termSet.insert( n );
+      }
+      ++eqc_i;
+    }
+    ++eqcs_i;
+  }
+}
+
+std::pair<bool, Node> TheoryDatatypes::entailmentCheck(TNode lit, const EntailmentCheckParameters* params, EntailmentCheckSideEffects* out) {
+  Trace("dt-entail") << "Check entailed : " << lit << std::endl;
+  Node atom = lit.getKind()==NOT ? lit[0] : lit;
+  bool pol = lit.getKind()!=NOT;
+  if( atom.getKind()==APPLY_TESTER ){
+    Node n = atom[0];
+    if( hasTerm( n ) ){
+      Node r = d_equalityEngine.getRepresentative( n );
+      EqcInfo * ei = getOrMakeEqcInfo( r, false );
+      int l_index = getLabelIndex( ei, r );
+      int t_index = (int)Datatype::indexOf( atom.getOperator().toExpr() );
+      Trace("dt-entail") << "  Tester indices are " << t_index << " and " << l_index << std::endl;
+      if( l_index!=-1 && (l_index==t_index)==pol ){
+        std::vector< TNode > exp_c;
+        if( ei && !ei->d_constructor.get().isNull() ){
+          explainEquality( n, ei->d_constructor.get(), true, exp_c );
+        }else{
+          Node lbl = getLabel( n );
+          Assert( !lbl.isNull() );
+          exp_c.push_back( lbl );
+          Assert( areEqual( n, lbl[0] ) );
+          explainEquality( n, lbl[0], true, exp_c );
+        }
+        Node exp = mkAnd( exp_c );
+        Trace("dt-entail") << "  entailed, explanation is " << exp << std::endl;
+        return make_pair(true, exp);
+      }
+    }
+  }else{
+
+  }
+  return make_pair(false, Node::null());
+}
+
+} /* namepsace CVC4::theory::datatypes */
+} /* namepsace CVC4::theory */
+} /* namepsace CVC4 */
diff --git a/src/theory/datatypes/theory_datatypes.h b/src/theory/datatypes/theory_datatypes.h
new file mode 100644
index 0000000..770c3a9
--- /dev/null
+++ b/src/theory/datatypes/theory_datatypes.h
@@ -0,0 +1,327 @@
+/*********************                                                        */
+/*! \file theory_datatypes.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Theory of datatypes.
+ **
+ ** Theory of datatypes.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__DATATYPES__THEORY_DATATYPES_H
+#define __CVC4__THEORY__DATATYPES__THEORY_DATATYPES_H
+
+#include <ext/hash_set>
+#include <iostream>
+#include <map>
+
+#include "context/cdchunk_list.h"
+#include "expr/datatype.h"
+#include "theory/datatypes/datatypes_sygus.h"
+#include "theory/theory.h"
+#include "theory/uf/equality_engine.h"
+#include "util/hash.h"
+
+namespace CVC4 {
+namespace theory {
+
+namespace quantifiers{
+  class TermArgTrie;
+}
+
+namespace datatypes {
+
+class TheoryDatatypes : public Theory {
+private:
+  typedef context::CDChunkList<Node> NodeList;
+  typedef context::CDHashMap< Node, int, NodeHashFunction> NodeIntMap;
+  typedef context::CDHashMap< Node, bool, NodeHashFunction > BoolMap;
+  typedef context::CDHashMap< Node, Node, NodeHashFunction > NodeMap;
+
+  /** transitive closure to record equivalence/subterm relation.  */
+  //TransitiveClosureNode d_cycle_check;
+  /** has seen cycle */
+  context::CDO< bool > d_hasSeenCycle;
+  /** inferences */
+  NodeList d_infer;
+  NodeList d_infer_exp;
+  Node d_true;
+  /** mkAnd */
+  Node mkAnd( std::vector< TNode >& assumptions );
+private:
+  //notification class for equality engine
+  class NotifyClass : public eq::EqualityEngineNotify {
+    TheoryDatatypes& d_dt;
+  public:
+    NotifyClass(TheoryDatatypes& dt): d_dt(dt) {}
+    bool eqNotifyTriggerEquality(TNode equality, bool value) {
+      Debug("dt") << "NotifyClass::eqNotifyTriggerEquality(" << equality << ", " << (value ? "true" : "false" )<< ")" << std::endl;
+      if (value) {
+        return d_dt.propagate(equality);
+      } else {
+        // We use only literal triggers so taking not is safe
+        return d_dt.propagate(equality.notNode());
+      }
+    }
+    bool eqNotifyTriggerPredicate(TNode predicate, bool value) {
+      Debug("dt") << "NotifyClass::eqNotifyTriggerPredicate(" << predicate << ", " << (value ? "true" : "false") << ")" << std::endl;
+      if (value) {
+        return d_dt.propagate(predicate);
+      } else {
+       return d_dt.propagate(predicate.notNode());
+      }
+    }
+    bool eqNotifyTriggerTermEquality(TheoryId tag, TNode t1, TNode t2, bool value) {
+      Debug("dt") << "NotifyClass::eqNotifyTriggerTermMerge(" << tag << ", " << t1 << ", " << t2 << ")" << std::endl;
+      if (value) {
+        return d_dt.propagate(t1.eqNode(t2));
+      } else {
+        return d_dt.propagate(t1.eqNode(t2).notNode());
+      }
+    }
+    void eqNotifyConstantTermMerge(TNode t1, TNode t2) {
+      Debug("dt") << "NotifyClass::eqNotifyConstantTermMerge(" << t1 << ", " << t2 << ")" << std::endl;
+      d_dt.conflict(t1, t2);
+    }
+    void eqNotifyNewClass(TNode t) {
+      Debug("dt") << "NotifyClass::eqNotifyNewClass(" << t << ")" << std::endl;
+      d_dt.eqNotifyNewClass(t);
+    }
+    void eqNotifyPreMerge(TNode t1, TNode t2) {
+      Debug("dt") << "NotifyClass::eqNotifyPreMerge(" << t1 << ", " << t2 << ")" << std::endl;
+      d_dt.eqNotifyPreMerge(t1, t2);
+    }
+    void eqNotifyPostMerge(TNode t1, TNode t2) {
+      Debug("dt") << "NotifyClass::eqNotifyPostMerge(" << t1 << ", " << t2 << ")" << std::endl;
+      d_dt.eqNotifyPostMerge(t1, t2);
+    }
+    void eqNotifyDisequal(TNode t1, TNode t2, TNode reason) {
+      Debug("dt") << "NotifyClass::eqNotifyDisequal(" << t1 << ", " << t2 << ", " << reason << ")" << std::endl;
+      d_dt.eqNotifyDisequal(t1, t2, reason);
+    }
+  };/* class TheoryDatatypes::NotifyClass */
+private:
+  /** equivalence class info
+   * d_inst is whether the instantiate rule has been applied,
+   * d_constructor is a node of kind APPLY_CONSTRUCTOR (if any) in this equivalence class,
+   * d_selectors is whether a selector has been applied to this equivalence class.
+   */
+  class EqcInfo
+  {
+  public:
+    EqcInfo( context::Context* c );
+    ~EqcInfo(){}
+    //whether we have instantiatied this eqc
+    context::CDO< bool > d_inst;
+    //constructor equal to this eqc
+    context::CDO< Node > d_constructor;
+    //all selectors whose argument is this eqc
+    context::CDO< bool > d_selectors;
+  };
+  /** does eqc of n have a label (do we know its constructor)? */
+  bool hasLabel( EqcInfo* eqc, Node n );
+  /** get the label associated to n */
+  Node getLabel( Node n );
+  /** get the index of the label associated to n */
+  int getLabelIndex( EqcInfo* eqc, Node n );
+  /** does eqc of n have any testers? */
+  bool hasTester( Node n );
+  /** get the possible constructors for n */
+  void getPossibleCons( EqcInfo* eqc, Node n, std::vector< bool >& cons );
+  void getSelectorsForCons( Node r, std::map< int, bool >& sels );
+  /** mkExpDefSkolem */
+  void mkExpDefSkolem( Node sel, TypeNode dt, TypeNode rt );
+  /** skolems for terms */
+  NodeMap d_term_sk;
+  Node getTermSkolemFor( Node n );
+private:
+  /** The notify class */
+  NotifyClass d_notify;
+  /** Equaltity engine */
+  eq::EqualityEngine d_equalityEngine;
+  /** information necessary for equivalence classes */
+  std::map< Node, EqcInfo* > d_eqc_info;
+  /** map from nodes to their instantiated equivalent for each constructor type */
+  std::map< Node, std::map< int, Node > > d_inst_map;
+  /** which instantiation lemmas we have sent */
+  //std::map< Node, std::vector< Node > > d_inst_lemmas;
+  /** labels for each equivalence class
+   * for each eqc n, d_labels[n] is testers that hold for this equivalence class, either:
+   * a list of equations of the form
+   *   NOT is_[constructor_1]( t )...NOT is_[constructor_n]( t ), each of which are unique testers
+   *   and n is less than the number of possible constructors for t minus one,
+   * or a list of equations of the form
+   *   NOT is_[constructor_1]( t )...NOT is_[constructor_n]( t )  followed by
+   *   is_[constructor_(n+1)]( t ), each of which is a unique tester.
+  */
+  NodeIntMap d_labels;
+  std::map< Node, std::vector< Node > > d_labels_data;
+  /** selector apps for eqch equivalence class */
+  NodeIntMap d_selector_apps;
+  std::map< Node, std::vector< Node > > d_selector_apps_data;
+  /** constructor terms */
+  //BoolMap d_consEqc;
+  /** Are we in conflict */
+  context::CDO<bool> d_conflict;
+  /** Added lemma ? */
+  bool d_addedLemma;
+  bool d_addedFact;
+  /** The conflict node */
+  Node d_conflictNode;
+  /** cache for which terms we have called collectTerms(...) on */
+  BoolMap d_collectTermsCache;
+  /** pending assertions/merges */
+  std::vector< Node > d_pending_lem;
+  std::vector< Node > d_pending;
+  std::map< Node, Node > d_pending_exp;
+  std::vector< Node > d_pending_merge;
+  /** All the function terms that the theory has seen */
+  context::CDList<TNode> d_functionTerms;
+  /** counter for forcing assignments (ensures fairness) */
+  unsigned d_dtfCounter;
+  /** expand definition skolem functions */
+  std::map< TypeNode, std::map< Node, Node > > d_exp_def_skolem;
+  /** sygus utilities */
+  SygusSplit * d_sygus_split;
+  SygusSymBreak * d_sygus_sym_break;
+
+private:
+  /** singleton lemmas (for degenerate co-datatype case) */
+  std::map< TypeNode, Node > d_singleton_lemma[2];
+  /** Cache for singleton equalities processed */
+  BoolMap d_singleton_eq;
+  /** list of all lemmas produced */
+  BoolMap d_lemmas_produced_c;
+private:
+  /** assert fact */
+  void assertFact( Node fact, Node exp );
+
+  /** flush pending facts */
+  void flushPendingFacts();
+
+  /** do pending merged */
+  void doPendingMerges();
+  /** do send lemma */
+  bool doSendLemma( Node lem );
+  /** get or make eqc info */
+  EqcInfo* getOrMakeEqcInfo( TNode n, bool doMake = false );
+
+  /** has eqc info */
+  bool hasEqcInfo( TNode n ) { return d_labels.find( n )!=d_labels.end(); }
+
+  /** get eqc constructor */
+  TNode getEqcConstructor( TNode r );
+
+protected:
+  void addCarePairs( quantifiers::TermArgTrie * t1, quantifiers::TermArgTrie * t2, unsigned arity, unsigned depth, unsigned& n_pairs );
+  /** compute care graph */
+  void computeCareGraph();
+
+public:
+  TheoryDatatypes(context::Context* c, context::UserContext* u,
+                  OutputChannel& out, Valuation valuation,
+                  const LogicInfo& logicInfo);
+  ~TheoryDatatypes();
+
+  void setMasterEqualityEngine(eq::EqualityEngine* eq);
+
+  /** propagate */
+  void propagate(Effort effort);
+  /** propagate */
+  bool propagate(TNode literal);
+  /** explain */
+  void addAssumptions( std::vector<TNode>& assumptions, std::vector<TNode>& tassumptions );
+  void explainEquality( TNode a, TNode b, bool polarity, std::vector<TNode>& assumptions );
+  void explainPredicate( TNode p, bool polarity, std::vector<TNode>& assumptions );
+  void explain( TNode literal, std::vector<TNode>& assumptions );
+  Node explain( TNode literal );
+  Node explain( std::vector< Node >& lits );
+  /** Conflict when merging two constants */
+  void conflict(TNode a, TNode b);
+  /** called when a new equivalance class is created */
+  void eqNotifyNewClass(TNode t);
+  /** called when two equivalance classes will merge */
+  void eqNotifyPreMerge(TNode t1, TNode t2);
+  /** called when two equivalance classes have merged */
+  void eqNotifyPostMerge(TNode t1, TNode t2);
+  /** called when two equivalence classes are made disequal */
+  void eqNotifyDisequal(TNode t1, TNode t2, TNode reason);
+
+  void check(Effort e);
+  void preRegisterTerm(TNode n);
+  void finishInit();
+  Node expandDefinition(LogicRequest &logicRequest, Node n);
+  Node ppRewrite(TNode n);
+  void presolve();
+  void addSharedTerm(TNode t);
+  EqualityStatus getEqualityStatus(TNode a, TNode b);
+  void collectModelInfo( TheoryModel* m, bool fullModel );
+  void shutdown() { }
+  std::string identify() const { return std::string("TheoryDatatypes"); }
+  /** equality engine */
+  eq::EqualityEngine * getEqualityEngine() { return &d_equalityEngine; }
+  bool getCurrentSubstitution( int effort, std::vector< Node >& vars, std::vector< Node >& subs, std::map< Node, std::vector< Node > >& exp );
+  /** debug print */
+  void printModelDebug( const char* c );
+  /** entailment check */
+  virtual std::pair<bool, Node> entailmentCheck(TNode lit, const EntailmentCheckParameters* params = NULL, EntailmentCheckSideEffects* out = NULL);
+private:
+  /** add tester to equivalence class info */
+  void addTester( int ttindex, Node t, EqcInfo* eqc, Node n, Node t_arg );
+  /** add selector to equivalence class info */
+  void addSelector( Node s, EqcInfo* eqc, Node n, bool assertFacts = true );
+  /** add constructor */
+  void addConstructor( Node c, EqcInfo* eqc, Node n );
+  /** merge the equivalence class info of t1 and t2 */
+  void merge( Node t1, Node t2 );
+  /** collapse selector, s is of the form sel( n ) where n = c */
+  void collapseSelector( Node s, Node c );
+  /** for checking if cycles exist */
+  void checkCycles();
+  Node searchForCycle( TNode n, TNode on,
+                       std::map< TNode, bool >& visited,
+                       std::vector< TNode >& explanation, bool firstTime = true );
+  /** for checking whether two codatatype terms must be equal */
+  void separateBisimilar( std::vector< Node >& part, std::vector< std::vector< Node > >& part_out,
+                          std::vector< TNode >& exp,
+                          std::map< Node, Node >& cn,
+                          std::map< Node, std::map< Node, int > >& dni, int dniLvl, bool mkExp );
+  /** build model */
+  Node getCodatatypesValue( Node n, std::map< Node, Node >& eqc_cons, std::map< Node, int >& vmap, int depth );
+  /** get singleton lemma */
+  Node getSingletonLemma( TypeNode tn, bool pol );
+  /** collect terms */
+  void collectTerms( Node n );
+  /** get instantiate cons */
+  Node getInstantiateCons( Node n, const Datatype& dt, int index );
+  /** process new term that was created internally */
+  void processNewTerm( Node n );
+  /** check instantiate */
+  void instantiate( EqcInfo* eqc, Node n );
+  /** must communicate fact */
+  bool mustCommunicateFact( Node n, Node exp );
+  /** check clash mod eq */
+  bool checkClashModEq( TNode n1, TNode n2, std::vector< Node >& exp, std::vector< std::pair< TNode, TNode > >& deq_cand );
+  /** get relevant terms */
+  void getRelevantTerms( std::set<Node>& termSet );
+private:
+  //equality queries
+  bool hasTerm( TNode a );
+  bool areEqual( TNode a, TNode b );
+  bool areDisequal( TNode a, TNode b );
+  TNode getRepresentative( TNode a );
+};/* class TheoryDatatypes */
+
+}/* CVC4::theory::datatypes namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__DATATYPES__THEORY_DATATYPES_H */
diff --git a/src/theory/datatypes/theory_datatypes_type_rules.h b/src/theory/datatypes/theory_datatypes_type_rules.h
new file mode 100644
index 0000000..8a44097
--- /dev/null
+++ b/src/theory/datatypes/theory_datatypes_type_rules.h
@@ -0,0 +1,326 @@
+/*********************                                                        */
+/*! \file theory_datatypes_type_rules.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Theory of datatypes
+ **
+ ** Theory of datatypes.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__DATATYPES__THEORY_DATATYPES_TYPE_RULES_H
+#define __CVC4__THEORY__DATATYPES__THEORY_DATATYPES_TYPE_RULES_H
+
+#include "expr/matcher.h"
+//#include "expr/attribute.h"
+
+namespace CVC4 {
+
+namespace expr {
+namespace attr {
+struct DatatypeConstructorTypeGroundTermTag {};
+} /* CVC4::expr::attr namespace */
+} /* CVC4::expr namespace */
+
+namespace theory {
+namespace datatypes {
+
+typedef expr::Attribute<expr::attr::DatatypeConstructorTypeGroundTermTag, Node>
+    GroundTermAttr;
+
+struct DatatypeConstructorTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    Assert(n.getKind() == kind::APPLY_CONSTRUCTOR);
+    TypeNode consType = n.getOperator().getType(check);
+    Type t = consType.getConstructorRangeType().toType();
+    Assert(t.isDatatype());
+    DatatypeType dt = DatatypeType(t);
+    TNode::iterator child_it = n.begin();
+    TNode::iterator child_it_end = n.end();
+    TypeNode::iterator tchild_it = consType.begin();
+    if ((dt.isParametric() || check) &&
+        n.getNumChildren() != consType.getNumChildren() - 1) {
+      throw TypeCheckingExceptionPrivate(
+          n, "number of arguments does not match the constructor type");
+    }
+    if (dt.isParametric()) {
+      Debug("typecheck-idt") << "typecheck parameterized datatype " << n
+                             << std::endl;
+      Matcher m(dt);
+      for (; child_it != child_it_end; ++child_it, ++tchild_it) {
+        TypeNode childType = (*child_it).getType(check);
+        if (!m.doMatching(*tchild_it, childType)) {
+          throw TypeCheckingExceptionPrivate(
+              n, "matching failed for parameterized constructor");
+        }
+      }
+      std::vector<Type> instTypes;
+      m.getMatches(instTypes);
+      TypeNode range = TypeNode::fromType(dt.instantiate(instTypes));
+      Debug("typecheck-idt") << "Return " << range << std::endl;
+      return range;
+    } else {
+      if (check) {
+        Debug("typecheck-idt") << "typecheck cons: " << n << " "
+                               << n.getNumChildren() << std::endl;
+        Debug("typecheck-idt") << "cons type: " << consType << " "
+                               << consType.getNumChildren() << std::endl;
+        for (; child_it != child_it_end; ++child_it, ++tchild_it) {
+          TypeNode childType = (*child_it).getType(check);
+          Debug("typecheck-idt") << "typecheck cons arg: " << childType << " "
+                                 << (*tchild_it) << std::endl;
+          TypeNode argumentType = *tchild_it;
+          if (!childType.isComparableTo(argumentType)) {
+            std::stringstream ss;
+            ss << "bad type for constructor argument:\nexpected: "
+               << argumentType << "\ngot     : " << childType;
+            throw TypeCheckingExceptionPrivate(n, ss.str());
+          }
+        }
+      }
+      return consType.getConstructorRangeType();
+    }
+  }
+
+  inline static bool computeIsConst(NodeManager* nodeManager, TNode n) {
+    Assert(n.getKind() == kind::APPLY_CONSTRUCTOR);
+    NodeManagerScope nms(nodeManager);
+    for (TNode::const_iterator i = n.begin(); i != n.end(); ++i) {
+      if (!(*i).isConst()) {
+        return false;
+      }
+    }
+    return true;
+  }
+}; /* struct DatatypeConstructorTypeRule */
+
+struct DatatypeSelectorTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    Assert(n.getKind() == kind::APPLY_SELECTOR ||
+           n.getKind() == kind::APPLY_SELECTOR_TOTAL);
+    TypeNode selType = n.getOperator().getType(check);
+    Type t = selType[0].toType();
+    Assert(t.isDatatype());
+    DatatypeType dt = DatatypeType(t);
+    if ((dt.isParametric() || check) && n.getNumChildren() != 1) {
+      throw TypeCheckingExceptionPrivate(
+          n, "number of arguments does not match the selector type");
+    }
+    if (dt.isParametric()) {
+      Debug("typecheck-idt") << "typecheck parameterized sel: " << n
+                             << std::endl;
+      Matcher m(dt);
+      TypeNode childType = n[0].getType(check);
+      if (!childType.isInstantiatedDatatype()) {
+        throw TypeCheckingExceptionPrivate(
+            n, "Datatype type not fully instantiated");
+      }
+      if (!m.doMatching(selType[0], childType)) {
+        throw TypeCheckingExceptionPrivate(
+            n,
+            "matching failed for selector argument of parameterized datatype");
+      }
+      std::vector<Type> types, matches;
+      m.getTypes(types);
+      m.getMatches(matches);
+      Type range = selType[1].toType();
+      range = range.substitute(types, matches);
+      Debug("typecheck-idt") << "Return " << range << std::endl;
+      return TypeNode::fromType(range);
+    } else {
+      if (check) {
+        Debug("typecheck-idt") << "typecheck sel: " << n << std::endl;
+        Debug("typecheck-idt") << "sel type: " << selType << std::endl;
+        TypeNode childType = n[0].getType(check);
+        if (!selType[0].isComparableTo(childType)) {
+          Debug("typecheck-idt") << "ERROR: " << selType[0].getKind() << " "
+                                 << childType.getKind() << std::endl;
+          throw TypeCheckingExceptionPrivate(n,
+                                             "bad type for selector argument");
+        }
+      }
+      return selType[1];
+    }
+  }
+}; /* struct DatatypeSelectorTypeRule */
+
+struct DatatypeTesterTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    Assert(n.getKind() == kind::APPLY_TESTER);
+    if (check) {
+      if (n.getNumChildren() != 1) {
+        throw TypeCheckingExceptionPrivate(
+            n, "number of arguments does not match the tester type");
+      }
+      TypeNode testType = n.getOperator().getType(check);
+      TypeNode childType = n[0].getType(check);
+      Type t = testType[0].toType();
+      Assert(t.isDatatype());
+      DatatypeType dt = DatatypeType(t);
+      if (dt.isParametric()) {
+        Debug("typecheck-idt") << "typecheck parameterized tester: " << n
+                               << std::endl;
+        Matcher m(dt);
+        if (!m.doMatching(testType[0], childType)) {
+          throw TypeCheckingExceptionPrivate(
+              n,
+              "matching failed for tester argument of parameterized datatype");
+        }
+      } else {
+        Debug("typecheck-idt") << "typecheck test: " << n << std::endl;
+        Debug("typecheck-idt") << "test type: " << testType << std::endl;
+        if (!testType[0].isComparableTo(childType)) {
+          throw TypeCheckingExceptionPrivate(n, "bad type for tester argument");
+        }
+      }
+    }
+    return nodeManager->booleanType();
+  }
+}; /* struct DatatypeTesterTypeRule */
+
+struct DatatypeAscriptionTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    Debug("typecheck-idt") << "typechecking ascription: " << n << std::endl;
+    Assert(n.getKind() == kind::APPLY_TYPE_ASCRIPTION);
+    TypeNode t = TypeNode::fromType(
+        n.getOperator().getConst<AscriptionType>().getType());
+    if (check) {
+      TypeNode childType = n[0].getType(check);
+
+      Matcher m;
+      if (childType.getKind() == kind::CONSTRUCTOR_TYPE) {
+        m.addTypesFromDatatype(
+            ConstructorType(childType.toType()).getRangeType());
+      } else if (childType.getKind() == kind::DATATYPE_TYPE) {
+        m.addTypesFromDatatype(DatatypeType(childType.toType()));
+      }
+      if (!m.doMatching(childType, t)) {
+        throw TypeCheckingExceptionPrivate(n,
+                                           "matching failed for type "
+                                           "ascription argument of "
+                                           "parameterized datatype");
+      }
+    }
+    return t;
+  }
+}; /* struct DatatypeAscriptionTypeRule */
+
+struct ConstructorProperties {
+  inline static Cardinality computeCardinality(TypeNode type) {
+    // Constructors aren't exactly functions, they're like
+    // parameterized ground terms.  So the cardinality is more like
+    // that of a tuple than that of a function.
+    AssertArgument(type.isConstructor(), type);
+    Cardinality c = 1;
+    for (unsigned i = 0, i_end = type.getNumChildren(); i < i_end - 1; ++i) {
+      c *= type[i].getCardinality();
+    }
+    return c;
+  }
+}; /* struct ConstructorProperties */
+
+struct TupleUpdateTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    Assert(n.getKind() == kind::TUPLE_UPDATE);
+    const TupleUpdate& tu = n.getOperator().getConst<TupleUpdate>();
+    TypeNode tupleType = n[0].getType(check);
+    TypeNode newValue = n[1].getType(check);
+    if (check) {
+      if (!tupleType.isTuple()) {
+        throw TypeCheckingExceptionPrivate(
+            n, "Tuple-update expression formed over non-tuple");
+      }
+      if (tu.getIndex() >= tupleType.getTupleLength()) {
+        std::stringstream ss;
+        ss << "Tuple-update expression index `" << tu.getIndex()
+           << "' is not a valid index; tuple type only has "
+           << tupleType.getTupleLength() << " fields";
+        throw TypeCheckingExceptionPrivate(n, ss.str().c_str());
+      }
+    }
+    return tupleType;
+  }
+}; /* struct TupleUpdateTypeRule */
+
+struct RecordUpdateTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    Assert(n.getKind() == kind::RECORD_UPDATE);
+    NodeManagerScope nms(nodeManager);
+    const RecordUpdate& ru = n.getOperator().getConst<RecordUpdate>();
+    TypeNode recordType = n[0].getType(check);
+    TypeNode newValue = n[1].getType(check);
+    if (check) {
+      if (!recordType.isRecord()) {
+        throw TypeCheckingExceptionPrivate(
+            n, "Record-update expression formed over non-record");
+      }
+      const Record& rec = recordType.getRecord();
+      if (!rec.contains(ru.getField())) {
+        std::stringstream ss;
+        ss << "Record-update field `" << ru.getField()
+           << "' is not a valid field name for the record type";
+        throw TypeCheckingExceptionPrivate(n, ss.str().c_str());
+      }
+    }
+    return recordType;
+  }
+}; /* struct RecordUpdateTypeRule */
+
+class DtSizeTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    if (check) {
+      TypeNode t = n[0].getType(check);
+      if (!t.isDatatype()) {
+        throw TypeCheckingExceptionPrivate(
+            n, "expecting datatype size term to have datatype argument.");
+      }
+    }
+    return nodeManager->integerType();
+  }
+}; /* class DtSizeTypeRule */
+
+class DtHeightBoundTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    if (check) {
+      TypeNode t = n[0].getType(check);
+      if (!t.isDatatype()) {
+        throw TypeCheckingExceptionPrivate(
+            n,
+            "expecting datatype height bound term to have datatype argument.");
+      }
+      if (n[1].getKind() != kind::CONST_RATIONAL) {
+        throw TypeCheckingExceptionPrivate(
+            n, "datatype height bound must be a constant");
+      }
+      if (n[1].getConst<Rational>().getNumerator().sgn() == -1) {
+        throw TypeCheckingExceptionPrivate(
+            n, "datatype height bound must be non-negative");
+      }
+    }
+    return nodeManager->booleanType();
+  }
+}; /* class DtHeightBoundTypeRule */
+
+} /* CVC4::theory::datatypes namespace */
+} /* CVC4::theory namespace */
+} /* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__DATATYPES__THEORY_DATATYPES_TYPE_RULES_H */
diff --git a/src/theory/datatypes/type_enumerator.cpp b/src/theory/datatypes/type_enumerator.cpp
new file mode 100644
index 0000000..60d319d
--- /dev/null
+++ b/src/theory/datatypes/type_enumerator.cpp
@@ -0,0 +1,224 @@
+/*********************                                                        */
+/*! \file type_enumerator.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Enumerators for datatypes
+ **
+ ** Enumerators for datatypes.
+ **/
+
+ #include "theory/datatypes/type_enumerator.h"
+ #include "theory/datatypes/datatypes_rewriter.h"
+
+using namespace CVC4;
+using namespace theory;
+using namespace datatypes;
+
+Node DatatypesEnumerator::getTermEnum( TypeNode tn, unsigned i ){
+   Node ret;
+   if( i<d_terms[tn].size() ){
+     ret = d_terms[tn][i];
+   }else{
+     Debug("dt-enum-debug") << "get term enum " << tn << " " << i << std::endl;
+     std::map< TypeNode, unsigned >::iterator it = d_te_index.find( tn );
+     unsigned tei;
+     if( it==d_te_index.end() ){
+       //initialize child enumerator for type
+       tei = d_children.size();
+       d_te_index[tn] = tei;
+       if( tn.isDatatype() && d_has_debruijn ){
+         //must indicate that this is a child enumerator (do not normalize constants for it)
+         DatatypesEnumerator * dte = new DatatypesEnumerator( tn, true, d_tep );
+         d_children.push_back( TypeEnumerator( dte ) );
+       }else{
+         d_children.push_back( TypeEnumerator( tn, d_tep ) );
+       }
+       d_terms[tn].push_back( *d_children[tei] );
+     }else{
+       tei = it->second;
+     }
+     //enumerate terms until index is reached
+     while( i>=d_terms[tn].size() ){
+       ++d_children[tei];
+       if( d_children[tei].isFinished() ){
+         Debug("dt-enum-debug") << "...fail term enum " << tn << " " << i << std::endl;
+         return Node::null();
+       }
+       d_terms[tn].push_back( *d_children[tei] );
+     }
+     Debug("dt-enum-debug") << "...return term enum " << tn << " " << i << " : " << d_terms[tn][i] << std::endl;
+     ret = d_terms[tn][i];
+   }
+   return ret;
+ }
+
+ bool DatatypesEnumerator::increment( unsigned index ){
+   Debug("dt-enum") << "Incrementing " << d_type << " " << d_ctor << " at size " << d_sel_sum[index] << "/" << d_size_limit << std::endl;
+   if( d_sel_sum[index]==-1 ){
+     //first time
+     d_sel_sum[index] = 0;
+     //special case: no children to iterate
+     if( index>=d_has_debruijn && d_sel_types[index].empty() ){
+       Debug("dt-enum") << "...success (nc) = " << (d_size_limit==0) << std::endl;
+       return d_size_limit==0;
+     }else{
+       Debug("dt-enum") << "...success" << std::endl;
+       return true;
+     }
+   }else{
+     unsigned i = 0;
+     while( i < d_sel_index[index].size() ){
+       //increment if the sum of iterations on arguments is less than the limit
+       if( d_sel_sum[index]<(int)d_size_limit ){
+         //also check if child enumerator has enough terms
+         if( !getTermEnum( d_sel_types[index][i], d_sel_index[index][i]+1 ).isNull() ){
+           Debug("dt-enum") << "...success increment child " << i << std::endl;
+           d_sel_index[index][i]++;
+           d_sel_sum[index]++;
+           return true;
+         }
+       }
+       Debug("dt-enum") << "......failed increment child " << i << std::endl;
+       //reset child, iterate next
+       d_sel_sum[index] -= d_sel_index[index][i];
+       d_sel_index[index][i] = 0;
+       i++;
+     }
+     Debug("dt-enum") << "...failure." << std::endl;
+     return false;
+   }
+ }
+
+ Node DatatypesEnumerator::getCurrentTerm( unsigned index ){
+   Debug("dt-enum-debug") << "Get current term at " << index << " " << d_type << std::endl;
+   Node ret;
+   if( index<d_has_debruijn ){
+     if( d_child_enum ){
+       ret = NodeManager::currentNM()->mkConst(UninterpretedConstant(d_type.toType(), d_size_limit));
+     }else{
+       //no top-level variables
+       return Node::null();
+     }
+   }else{
+     Debug("dt-enum-debug") << "Look at constructor " << (index - d_has_debruijn) << std::endl;
+     DatatypeConstructor ctor = d_datatype[index - d_has_debruijn];
+     Debug("dt-enum-debug") << "Check last term..." << std::endl;
+     //we first check if the last argument (which is forced to make sum of iterated arguments equal to d_size_limit) is defined
+     Node lc;
+     if( ctor.getNumArgs()>0 ){
+       Assert( index<d_sel_types.size() );
+       Assert( ctor.getNumArgs()-1<d_sel_types[index].size() );
+       lc = getTermEnum( d_sel_types[index][ctor.getNumArgs()-1], d_size_limit - d_sel_sum[index] );
+       if( lc.isNull() ){
+         Debug("dt-enum-debug") << "Current infeasible." << std::endl;
+         return Node::null();
+       }
+     }
+     Debug("dt-enum-debug") << "Get constructor..." << std::endl;
+     NodeBuilder<> b(kind::APPLY_CONSTRUCTOR);
+     Type typ;
+     if( d_datatype.isParametric() ){
+       typ = ctor.getSpecializedConstructorType(d_type.toType());
+       b << NodeManager::currentNM()->mkNode(kind::APPLY_TYPE_ASCRIPTION,
+                                             NodeManager::currentNM()->mkConst(AscriptionType(typ)), Node::fromExpr( ctor.getConstructor() ) );
+     }else{
+       b << ctor.getConstructor();
+     }
+     Debug("dt-enum-debug") << "Get arguments..." << std::endl;
+     if( ctor.getNumArgs()>0 ){
+       Assert( index<d_sel_types.size() );
+       Assert( index<d_sel_index.size() );
+       Assert( d_sel_types[index].size()==ctor.getNumArgs() );
+       Assert( d_sel_index[index].size()==ctor.getNumArgs()-1 );
+       for( int i=0; i<(int)(ctor.getNumArgs()-1); i++ ){
+         Node c = getTermEnum( d_sel_types[index][i], d_sel_index[index][i] );
+         Assert( !c.isNull() );
+         b << c;
+       }
+       b << lc;
+     }
+     Node nnn = Node(b);
+     Debug("dt-enum-debug") << "Return... " <<  nnn  << std::endl;
+     ret = nnn;
+   }
+
+   if( !d_child_enum && d_has_debruijn ){
+     Node nret = DatatypesRewriter::normalizeCodatatypeConstant( ret );
+     if( nret!=ret ){
+       if( nret.isNull() ){
+         Trace("dt-enum-nn") << "Invalid constant : " << ret << std::endl;
+       }else{
+         Trace("dt-enum-nn") << "Non-normal constant : " << ret << std::endl;
+         Trace("dt-enum-nn") << "  ...normal form is : " << nret << std::endl;
+       }
+       return Node::null();
+     }
+   }
+
+   return ret;
+ }
+
+ void DatatypesEnumerator::init(){
+   //Assert(type.isDatatype());
+   Debug("dt-enum") << "datatype is datatype? " << d_type.isDatatype() << std::endl;
+   Debug("dt-enum") << "datatype is kind " << d_type.getKind() << std::endl;
+   Debug("dt-enum") << "datatype is " << d_type << std::endl;
+   Debug("dt-enum") << "properties : " << d_datatype.isCodatatype() << " " << d_datatype.isRecursiveSingleton( d_type.toType() );
+   Debug("dt-enum") << " " << d_datatype.isFinite( d_type.toType() ) << std::endl;
+   Debug("dt-enum") << " " << d_datatype.isInterpretedFinite( d_type.toType() ) << std::endl;
+
+   if( d_datatype.isCodatatype() && hasCyclesDt( d_datatype ) ){
+     //start with uninterpreted constant
+     d_zeroCtor = 0;
+     d_has_debruijn = 1;
+     d_sel_types.push_back( std::vector< TypeNode >() );
+     d_sel_index.push_back( std::vector< unsigned >() );
+     d_sel_sum.push_back( -1 );
+   }else{
+     // find the "zero" constructor via mkGroundTerm
+     Debug("dt-enum-debug") << "make ground term..." << std::endl;
+     Node t = d_type.mkGroundTerm();
+     Debug("dt-enum-debug") << "done : " << t << std::endl;
+     Assert( t.getKind()==kind::APPLY_CONSTRUCTOR );
+     // start with the constructor for which a ground term is constructed
+     d_zeroCtor = Datatype::indexOf( t.getOperator().toExpr() );
+     d_has_debruijn = 0;
+   }
+   Debug("dt-enum") << "zero ctor : " << d_zeroCtor << std::endl;
+   d_ctor = d_zeroCtor;
+   for( unsigned i=0; i<d_datatype.getNumConstructors(); ++i ){
+     d_sel_types.push_back( std::vector< TypeNode >() );
+     d_sel_index.push_back( std::vector< unsigned >() );
+     d_sel_sum.push_back( -1 );
+     DatatypeConstructor ctor = d_datatype[i];
+     Type typ;
+     if( d_datatype.isParametric() ){
+       typ = ctor.getSpecializedConstructorType(d_type.toType());
+     }
+     for( unsigned a = 0; a < ctor.getNumArgs(); ++a ){
+       TypeNode tn;
+       if( d_datatype.isParametric() ){
+         tn = TypeNode::fromType( typ )[a];
+       }else{
+         tn = Node::fromExpr(ctor[a].getSelector()).getType()[1];
+       }
+       d_sel_types.back().push_back( tn );
+       d_sel_index.back().push_back( 0 );
+     }
+     if( !d_sel_index.back().empty() ){
+       d_sel_index.back().pop_back();
+     }
+   }
+   d_size_limit = 0;
+   //set up initial conditions (should always succeed)
+   ++*this; //increment( d_ctor );
+   AlwaysAssert( !isFinished() );
+}
+
diff --git a/src/theory/datatypes/type_enumerator.h b/src/theory/datatypes/type_enumerator.h
new file mode 100644
index 0000000..83c9382
--- /dev/null
+++ b/src/theory/datatypes/type_enumerator.h
@@ -0,0 +1,184 @@
+/*********************                                                        */
+/*! \file type_enumerator.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An enumerator for datatypes
+ **
+ ** An enumerator for datatypes.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__DATATYPES__TYPE_ENUMERATOR_H
+#define __CVC4__THEORY__DATATYPES__TYPE_ENUMERATOR_H
+
+#include "theory/type_enumerator.h"
+#include "expr/type_node.h"
+#include "expr/type.h"
+#include "expr/kind.h"
+#include "options/quantifiers_options.h"
+
+namespace CVC4 {
+namespace theory {
+namespace datatypes {
+
+
+class DatatypesEnumerator : public TypeEnumeratorBase<DatatypesEnumerator> {
+  /** type properties */
+  TypeEnumeratorProperties * d_tep;
+  /** The datatype we're enumerating */
+  const Datatype& d_datatype;
+  /** extra cons */
+  unsigned d_has_debruijn;
+  /** type */
+  TypeNode d_type;
+  /** The datatype constructor we're currently enumerating */
+  unsigned d_ctor;
+  /** The "first" constructor to consider; it's non-recursive */
+  unsigned d_zeroCtor;
+  /** list of type enumerators (one for each type in a selector argument) */
+  std::map< TypeNode, unsigned > d_te_index;
+  std::vector< TypeEnumerator > d_children;
+  //std::vector< DatatypesEnumerator > d_dt_children;
+  /** terms produced for types */
+  std::map< TypeNode, std::vector< Node > > d_terms;
+  /** arg type of each selector, for each constructor */
+  std::vector< std::vector< TypeNode > > d_sel_types;
+  /** current index for each argument, for each constructor */
+  std::vector< std::vector< unsigned > > d_sel_index;
+  /** current sum of argument indicies for each constructor */
+  std::vector< int > d_sel_sum;
+  /** current bound on the number of times we can iterate argument enumerators */
+  unsigned d_size_limit;
+  /** child */
+  bool d_child_enum;
+
+  bool hasCyclesDt( const Datatype& dt ) {
+    return dt.isRecursiveSingleton( d_type.toType() ) || !dt.isFinite( d_type.toType() );
+  }
+  bool hasCycles( TypeNode tn ){
+    if( tn.isDatatype() ){
+      const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+      return hasCyclesDt( dt );
+    }else{
+      return false;
+    }
+  }
+
+  Node getTermEnum( TypeNode tn, unsigned i );
+
+  bool increment( unsigned index );
+
+  Node getCurrentTerm( unsigned index );
+
+  void init();
+public:
+
+  DatatypesEnumerator(TypeNode type, TypeEnumeratorProperties * tep = NULL) throw() :
+    TypeEnumeratorBase<DatatypesEnumerator>(type),
+    d_tep(tep),
+    d_datatype(DatatypeType(type.toType()).getDatatype()),
+    d_type(type) {
+    d_child_enum = false;
+    init();
+  }
+  DatatypesEnumerator(TypeNode type, bool childEnum, TypeEnumeratorProperties * tep = NULL) throw() :
+    TypeEnumeratorBase<DatatypesEnumerator>(type),
+    d_tep(tep),
+    d_datatype(DatatypeType(type.toType()).getDatatype()),
+    d_type(type) {
+    d_child_enum = childEnum;
+    init();
+  }
+  DatatypesEnumerator(const DatatypesEnumerator& de) throw() :
+    TypeEnumeratorBase<DatatypesEnumerator>(de.getType()),
+    d_tep(de.d_tep),
+    d_datatype(de.d_datatype),
+    d_type(de.d_type),
+    d_ctor(de.d_ctor),
+    d_zeroCtor(de.d_zeroCtor) {
+
+    for( std::map< TypeNode, unsigned >::const_iterator it = de.d_te_index.begin(); it != de.d_te_index.end(); ++it ){
+      d_te_index[it->first] = it->second;
+    }
+    for( std::map< TypeNode, std::vector< Node > >::const_iterator it = de.d_terms.begin(); it != de.d_terms.end(); ++it ){
+      d_terms[it->first].insert( d_terms[it->first].end(), it->second.begin(), it->second.end() );
+    }
+    for( unsigned i=0; i<de.d_sel_types.size(); i++ ){
+      d_sel_types.push_back( std::vector< TypeNode >() );
+      d_sel_types[i].insert( d_sel_types[i].end(), de.d_sel_types[i].begin(), de.d_sel_types[i].end() );
+    }
+    for( unsigned i=0; i<de.d_sel_index.size(); i++ ){
+      d_sel_index.push_back( std::vector< unsigned >() );
+      d_sel_index[i].insert( d_sel_index[i].end(), de.d_sel_index[i].begin(), de.d_sel_index[i].end() );
+    }
+
+    d_children.insert( d_children.end(), de.d_children.begin(), de.d_children.end() );
+    d_sel_sum.insert( d_sel_sum.end(), de.d_sel_sum.begin(), de.d_sel_sum.end() );
+    d_size_limit = de.d_size_limit;
+    d_has_debruijn = de.d_has_debruijn;
+    d_child_enum = de.d_child_enum;
+  }
+
+  virtual ~DatatypesEnumerator() throw() {
+  }
+
+  Node operator*() throw(NoMoreValuesException) {
+    Debug("dt-enum-debug") << ": get term " << this << std::endl;
+    if(d_ctor < d_has_debruijn + d_datatype.getNumConstructors()) {
+      return getCurrentTerm( d_ctor );
+    } else {
+      throw NoMoreValuesException(getType());
+    }
+  }
+
+  DatatypesEnumerator& operator++() throw() {
+    Debug("dt-enum-debug") << ": increment " << this << std::endl;
+    unsigned prevSize = d_size_limit;
+    while(d_ctor < d_has_debruijn+d_datatype.getNumConstructors()) {
+      //increment at index
+      while( increment( d_ctor ) ){
+        Node n = getCurrentTerm( d_ctor );
+        if( !n.isNull() ){
+          return *this;
+        }
+      }
+      // Here, we need to step from the current constructor to the next one
+
+      // Find the next constructor (only complicated by the notion of the "zero" constructor
+      d_ctor = (d_ctor == d_zeroCtor) ? 0 : d_ctor + 1;
+      if(d_ctor == d_zeroCtor) {
+        ++d_ctor;
+      }
+      if( d_ctor>=d_has_debruijn+d_datatype.getNumConstructors() ){
+        //try next size limit as long as new terms were generated at last size, or other cases
+        if( prevSize==d_size_limit || ( d_size_limit==0 && d_datatype.isCodatatype() ) || !d_datatype.isInterpretedFinite( d_type.toType() ) ){
+          d_size_limit++;
+          d_ctor = d_zeroCtor;
+          for( unsigned i=0; i<d_sel_sum.size(); i++ ){
+            d_sel_sum[i] = -1;
+          }
+        }
+      }
+    }
+    return *this;
+  }
+
+  bool isFinished() throw() {
+    return d_ctor >= d_has_debruijn+d_datatype.getNumConstructors();
+  }
+
+};/* DatatypesEnumerator */
+
+}/* CVC4::theory::datatypes namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__DATATYPES__TYPE_ENUMERATOR_H */
diff --git a/src/theory/example/ecdata.cpp b/src/theory/example/ecdata.cpp
new file mode 100644
index 0000000..a85db3c
--- /dev/null
+++ b/src/theory/example/ecdata.cpp
@@ -0,0 +1,103 @@
+/*********************                                                        */
+/*! \file ecdata.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of equivalence class data for UF theory.
+ **
+ ** Implementation of equivalence class data for UF theory.  This is a
+ ** context-dependent object.
+ **/
+
+#include "theory/uf/tim/ecdata.h"
+
+using namespace CVC4;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::uf;
+using namespace CVC4::theory::uf::tim;
+
+ECData::ECData(Context * context, TNode n) :
+  ContextObj(context),
+  d_find(this),
+  d_rep(n),
+  d_watchListSize(0),
+  d_first(NULL),
+  d_last(NULL) {
+}
+
+bool ECData::isClassRep() {
+  return this == this->d_find;
+}
+
+void ECData::addPredecessor(TNode n) {
+  Assert(isClassRep());
+
+  makeCurrent();
+
+  Link * newPred = new(getCMM()) Link(getContext(), n, d_first);
+  d_first = newPred;
+  if(d_last == NULL) {
+    d_last = newPred;
+  }
+
+  ++d_watchListSize;
+}
+
+ContextObj* ECData::save(ContextMemoryManager* pCMM) {
+  return new(pCMM) ECData(*this);
+}
+
+void ECData::restore(ContextObj* pContextObj) {
+  ECData* data = (ECData*)pContextObj;
+  d_find = data->d_find;
+  d_first = data->d_first;
+  d_last = data->d_last;
+  d_rep = data->d_rep;
+  d_watchListSize = data->d_watchListSize;
+}
+
+Node ECData::getRep() {
+  return d_rep;
+}
+
+unsigned ECData::getWatchListSize() {
+  return d_watchListSize;
+}
+
+void ECData::setFind(ECData * ec) {
+  makeCurrent();
+  d_find = ec;
+}
+
+ECData* ECData::getFind() {
+  return d_find;
+}
+
+Link* ECData::getFirst() {
+  return d_first;
+}
+
+void ECData::takeOverDescendantWatchList(ECData* nslave, ECData* nmaster) {
+  Assert(nslave != nmaster);
+  Assert(nslave->getFind() == nmaster);
+
+  nmaster->makeCurrent();
+
+  nmaster->d_watchListSize += nslave->d_watchListSize;
+
+  if(nmaster->d_first == NULL) {
+    nmaster->d_first = nslave->d_first;
+    nmaster->d_last = nslave->d_last;
+  } else if(nslave->d_first != NULL) {
+    Link* currLast = nmaster->d_last;
+    currLast->d_next = nslave->d_first;
+    nmaster->d_last = nslave->d_last;
+  }
+}
diff --git a/src/theory/example/ecdata.h b/src/theory/example/ecdata.h
new file mode 100644
index 0000000..cd582c1
--- /dev/null
+++ b/src/theory/example/ecdata.h
@@ -0,0 +1,259 @@
+/*********************                                                        */
+/*! \file ecdata.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Context dependent equivalence class datastructure for nodes.
+ **
+ ** Context dependent equivalence class datastructure for nodes.
+ ** Currently keeps a context dependent watch list.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__UF__TIM__ECDATA_H
+#define __CVC4__THEORY__UF__TIM__ECDATA_H
+
+#include "expr/node.h"
+#include "context/context.h"
+#include "context/cdo.h"
+#include "context/context_mm.h"
+
+namespace CVC4 {
+namespace theory {
+namespace uf {
+namespace tim {
+
+/**
+ * Link is a context dependent linked list of nodes.
+ * Link is intended to be allocated in a Context's memory manager.
+ * The next pointer of the list is context dependent, but the node being
+ * pointed to is fixed for the life of the Link.
+ *
+ * Clients of Link are intended not to modify the node that is being pointed
+ * to in good faith.  This may change in the future.
+ */
+struct Link {
+  /**
+   * Pointer to the next element in linked list.
+   * This is context dependent. 
+   */
+  context::CDO<Link*> d_next;
+
+  /**
+   * Link is supposed to be allocated in a region of a
+   * ContextMemoryManager.  In order to avoid having to decrement the
+   * ref count at deletion time, it is preferrable for the user of
+   * Link to maintain the invariant that data will survival for the
+   * entire scope of the TNode.
+   */
+  TNode d_data;
+
+  /**
+   * Creates a new Link w.r.t. a context for the node n.
+   * An optional parameter is to specify the next element in the link.
+   */
+  Link(context::Context* context, TNode n, Link* l = NULL) :
+    d_next(true, context, l),
+    d_data(n) {
+    Debug("context") << "Link: " << this
+                     << " so cdo is " << &d_next << std::endl;
+  }
+
+  /**
+   * Allocates a new Link in the region for the provided ContextMemoryManager.
+   * This allows for cheap cleanup on pop.
+   */
+  static void* operator new(size_t size, context::ContextMemoryManager* pCMM) {
+    return pCMM->newData(size);
+  }
+
+private:
+
+  /**
+   * The destructor isn't actually defined.  This declaration keeps
+   * the compiler from creating (wastefully) a default definition, and
+   * ensures that we get a link error if someone uses Link in a way
+   * that requires destruction.  Objects of class Link should always
+   * be allocated in a ContextMemoryManager, which doesn't call
+   * destructors.
+   */
+  ~Link() throw();
+
+  /**
+   * Just like the destructor, this is not defined.  This ensures no
+   * one tries to create a Link on the heap.
+   */
+  static void* operator new(size_t size);
+
+};/* struct Link */
+
+
+/**
+ * ECData is a equivalence class object that is context dependent.
+ * It is developed in order to support the congruence closure algorithm
+ * in TheoryUF, and is not intended to be used outside of that package.
+ *
+ * ECData maintains:
+ * - find pointer for the equivalence class (disjoint set forest)
+ * - the node that represents the equivalence class.
+ * - maintains a predecessorlist/watchlist
+ *
+ * ECData does not have support for the canonical find and union operators
+ * for disjoint set forests.  Instead it only provides access to the find
+ * pointer. The implementation of find is ccFind in TheoryUF.
+ * union is broken into 2 phases:
+ *  1) setting the find point with setFind
+ *  2) taking over the watch list of the other node.
+ * This is a technical requirement for the implementation of TheoryUF.
+ * (See ccUnion in TheoryUF for more information.)
+ *
+ * The intended paradigm for iterating over the watch list of ec is:
+ *      for(Link* i = ec->getFirst(); i != NULL; i = i->next );
+ *
+ * See also ECAttr() in theory_uf.h, and theory_uf.cpp where the codde that uses
+ * ECData lives.
+ */
+class ECData : public context::ContextObj {
+private:
+  /**
+   * This is the standard disjoint set forest find pointer.
+   *
+   * Why an ECData pointer instead of a node?
+   * This was chosen to be a ECData pointer in order to shortcut at least one
+   * table every time the find pointer is examined.
+   */
+  ECData* d_find;
+
+  /**
+   * This is pointer back to the node that represents this equivalence class.
+   *
+   * The following invariant should be maintained:
+   *  (n.getAttribute(ECAttr()))->rep == n
+   * i.e. rep is equal to the node that maps to the ECData using ECAttr.
+   *
+   * Tricky part: This needs to be a TNode, not a Node.
+   * Suppose that rep were a hard link.
+   * When a node n maps to an ECData via the ECAttr() there will be a hard
+   * link back to n in the ECData. The attribute does not do garbage collection
+   * until the node gets garbage collected, which does not happen until its
+   * ref count drops to 0. So because of this cycle neither the node and
+   * the ECData will never get garbage collected.
+   * So this needs to be a soft link.
+   */
+  TNode d_rep;
+
+  // Watch list data structures follow
+
+  /**
+   * Maintains watch list size for more efficient merging.
+   */
+  unsigned d_watchListSize;
+
+  /**
+   * Pointer to the beginning of the watchlist.
+   * This value is NULL iff the watch list is empty.
+   */
+  Link* d_first;
+
+  /**
+   * Pointer to the end of the watch-list.
+   * This is maintained in order to constant time list merging.
+   * (This does not give any asymptotic improve as this is currently always
+   * preceeded by an O(|watchlist|) operation.)
+   * This value is NULL iff the watch list is empty.
+   */
+  Link* d_last;
+
+  /** Context-dependent operation: save this ECData */
+  context::ContextObj* save(context::ContextMemoryManager* pCMM);
+
+  /** Context-dependent operation: restore this ECData */
+  void restore(context::ContextObj* pContextObj);
+
+public:
+  /**
+   * Returns true if this ECData object is the current representative of
+   * the equivalence class.
+   */
+  bool isClassRep();
+
+  /**
+   * Adds a node to the watch list of the equivalence class.  Does
+   * context-dependent memory allocation in the Context with which
+   * this ECData was created.
+   *
+   * @param n the node to be added.
+   * @pre isClassRep() == true
+   */
+  void addPredecessor(TNode n);
+
+  /**
+   * Creates a EQ with the representative n
+   * @param context the context to associate with this ecdata.
+   *   This is required as ECData is context dependent
+   * @param n the node that corresponds to this ECData
+   */
+  ECData(context::Context* context, TNode n);
+
+  /** Destructor for ECDatas */
+  ~ECData() {
+    Debug("ufgc") << "Calling ECData destructor" << std::endl;
+    destroy();
+  }
+
+  /**
+   * An ECData takes over the watch list of another ECData.
+   * This is the second step in the union operator for ECData.
+   * This should be called after nslave->setFind(nmaster);
+   * After this is done nslave's watch list should never be accessed by
+   * getLast() or getFirst()
+   */
+  static void takeOverDescendantWatchList(ECData * nslave, ECData * nmaster);
+
+  /**
+   * Returns the representative of this ECData.
+   */
+  Node getRep();
+
+  /**
+   * Returns the size of the equivalence class.
+   */
+  unsigned getWatchListSize();
+
+  /**
+   * Returns a pointer the first member of the watch list.
+   */
+  Link* getFirst();
+
+
+  /**
+   * Returns the find pointer of the ECData.
+   * If isClassRep(), then getFind() == this
+   */
+  ECData* getFind();
+
+  /**
+   * Sets the find pointer of the equivalence class to be another ECData object.
+   *
+   * @pre isClassRep() == true
+   * @pre ec->isClassRep() == true
+   * @post isClassRep() == false
+   * @post ec->isClassRep() == true
+   */
+  void setFind(ECData * ec);
+
+};/* class ECData */
+
+}/* CVC4::theory::uf::tim namespace */
+}/* CVC4::theory::uf namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__UF__TIM__ECDATA_H */
diff --git a/src/theory/example/theory_uf_tim.cpp b/src/theory/example/theory_uf_tim.cpp
new file mode 100644
index 0000000..825c8fb
--- /dev/null
+++ b/src/theory/example/theory_uf_tim.cpp
@@ -0,0 +1,328 @@
+/*********************                                                        */
+/*! \file theory_uf_tim.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of the theory of uninterpreted functions.
+ **
+ ** Implementation of the theory of uninterpreted functions.
+ **/
+
+#include "theory/uf/tim/theory_uf_tim.h"
+#include "theory/uf/tim/ecdata.h"
+#include "expr/kind.h"
+
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::uf;
+using namespace CVC4::theory::uf::tim;
+
+TheoryUFTim::TheoryUFTim(Context* c, UserContext* u, OutputChannel& out, Valuation valuation) :
+  Theory(THEORY_UF, c, u, out, valuation),
+  d_assertions(c),
+  d_pending(c),
+  d_currentPendingIdx(c,0),
+  d_disequality(c),
+  d_registered(c) {
+  Warning() << "NOTE:" << std::endl
+            << "NOTE: currently the 'Tim' UF solver is broken," << std::endl
+            << "NOTE: since its registerTerm() function is never" << std::endl
+            << "NOTE: called." << std::endl
+            << "NOTE:" << std::endl;
+}
+
+TheoryUFTim::~TheoryUFTim() {
+}
+
+void TheoryUFTim::preRegisterTerm(TNode n) {
+  Debug("uf") << "uf: begin preRegisterTerm(" << n << ")" << std::endl;
+  Debug("uf") << "uf: end preRegisterTerm(" << n << ")" << std::endl;
+}
+
+void TheoryUFTim::registerTerm(TNode n) {
+
+  Debug("uf") << "uf: begin registerTerm(" << n << ")" << std::endl;
+
+  d_registered.push_back(n);
+
+  ECData* ecN;
+
+  if(n.getAttribute(ECAttr(), ecN)) {
+    /* registerTerm(n) is only called when a node has not been seen in the
+     * current context.  ECAttr() is not a context-dependent attribute.
+     * When n.hasAttribute(ECAttr(),...) is true on a registerTerm(n) call,
+     * then it must be the case that this attribute was created in a previous
+     * and no longer valid context. Because of this we have to reregister the
+     * predecessors lists.
+     * Also we do not have to worry about duplicates because all of the Link*
+     * setup before are removed when the context n was setup in was popped out
+     * of. All we are going to do here are sanity checks.
+     */
+
+    /*
+     * Consider the following chain of events:
+     * 1) registerTerm(n) is called on node n where n : f(m) in context level X,
+     * 2) A new ECData is created on the heap, ecN,
+     * 3) n is added to the predessecor list of m in context level X,
+     * 4) We pop out of X,
+     * 5) n is removed from the predessecor list of m because this is context
+     *    dependent, the Link* will be destroyed and pointers to the Link
+     *    structs in the ECData objects will be updated.
+     * 6) registerTerm(n) is called on node n in context level Y,
+     * 7) If n.hasAttribute(ECAttr(), &ecN), then ecN is still around,
+     *    but the predecessor list is not
+     *
+     * The above assumes that the code is working correctly.
+     */
+    Assert(ecN->getFirst() == NULL,
+           "Equivalence class data exists for the node being registered.  "
+           "Expected getFirst() == NULL.  "
+           "This data is either already in use or was not properly maintained "
+           "during backtracking");
+    /*Assert(ecN->getLast() == NULL,
+           "Equivalence class data exists for the node being registered.  "
+           "Expected getLast() == NULL.  "
+           "This data is either already in use or was not properly maintained "
+           "during backtracking.");*/
+    Assert(ecN->isClassRep(),
+           "Equivalence class data exists for the node being registered.  "
+           "Expected isClassRep() to be true.  "
+           "This data is either already in use or was not properly maintained "
+           "during backtracking");
+    Assert(ecN->getWatchListSize() == 0,
+           "Equivalence class data exists for the node being registered.  "
+           "Expected getWatchListSize() == 0.  "
+           "This data is either already in use or was not properly maintained "
+           "during backtracking");
+  } else {
+    //The attribute does not exist, so it is created and set
+    ecN = new (true) ECData(getContext(), n);
+    n.setAttribute(ECAttr(), ecN);
+  }
+
+  /* If the node is an APPLY_UF, we need to add it to the predecessor list
+   * of its children.
+   */
+  if(n.getKind() == APPLY_UF) {
+    TNode::iterator cIter = n.begin();
+
+    for(; cIter != n.end(); ++cIter) {
+      TNode child = *cIter;
+
+      /* Because this can be called after nodes have been merged, we need
+       * to lookup the representative in the UnionFind datastructure.
+       */
+      ECData* ecChild = ccFind(child.getAttribute(ECAttr()));
+
+      /* Because this can be called after nodes have been merged we may need
+       * to be merged with other predecessors of the equivalence class.
+       */
+      for(Link* Px = ecChild->getFirst(); Px != NULL; Px = Px->d_next ) {
+        if(equiv(n, Px->d_data)) {
+          Node pend = n.eqNode(Px->d_data);
+          d_pending.push_back(pend);
+        }
+      }
+
+      ecChild->addPredecessor(n);
+    }
+  }
+  Debug("uf") << "uf: end registerTerm(" << n << ")" << std::endl;
+
+}
+
+bool TheoryUFTim::sameCongruenceClass(TNode x, TNode y) {
+  return
+    ccFind(x.getAttribute(ECAttr())) ==
+    ccFind(y.getAttribute(ECAttr()));
+}
+
+bool TheoryUFTim::equiv(TNode x, TNode y) {
+  Assert(x.getKind() == kind::APPLY_UF);
+  Assert(y.getKind() == kind::APPLY_UF);
+
+  if(x.getNumChildren() != y.getNumChildren()) {
+    return false;
+  }
+
+  if(x.getOperator() != y.getOperator()) {
+    return false;
+  }
+
+  // intentionally don't look at operator
+
+  TNode::iterator xIter = x.begin();
+  TNode::iterator yIter = y.begin();
+
+  while(xIter != x.end()) {
+
+    if(!sameCongruenceClass(*xIter, *yIter)) {
+      return false;
+    }
+
+    ++xIter;
+    ++yIter;
+  }
+  return true;
+}
+
+/* This is a very basic, but *obviously correct* find implementation
+ * of the classic find algorithm.
+ * TODO after we have done some more testing:
+ * 1) Add path compression.  This is dependent on changes to ccUnion as
+ *    many better algorithms use eager path compression.
+ * 2) Elminate recursion.
+ */
+ECData* TheoryUFTim::ccFind(ECData * x) {
+  if(x->getFind() == x) {
+    return x;
+  } else {
+    return ccFind(x->getFind());
+  }
+  /* Slightly better Find w/ path compression and no recursion*/
+  /*
+    ECData* start;
+    ECData* next = x;
+    while(x != x->getFind()) x=x->getRep();
+    while( (start = next) != x) {
+      next = start->getFind();
+      start->setFind(x);
+    }
+    return x;
+  */
+}
+
+void TheoryUFTim::ccUnion(ECData* ecX, ECData* ecY) {
+  ECData* nslave;
+  ECData* nmaster;
+
+  if(ecX->getWatchListSize() <= ecY->getWatchListSize()) {
+    nslave = ecX;
+    nmaster = ecY;
+  } else {
+    nslave = ecY;
+    nmaster = ecX;
+  }
+
+  nslave->setFind(nmaster);
+
+  for(Link* Px = nmaster->getFirst(); Px != NULL; Px = Px->d_next ) {
+    for(Link* Py = nslave->getFirst(); Py != NULL; Py = Py->d_next ) {
+      if(equiv(Px->d_data,Py->d_data)) {
+        Node pendingEq = (Px->d_data).eqNode(Py->d_data);
+        d_pending.push_back(pendingEq);
+      }
+    }
+  }
+
+  ECData::takeOverDescendantWatchList(nslave, nmaster);
+}
+
+void TheoryUFTim::merge() {
+  while(d_currentPendingIdx < d_pending.size() ) {
+    Node assertion = d_pending[d_currentPendingIdx];
+    d_currentPendingIdx = d_currentPendingIdx + 1;
+
+    TNode x = assertion[0];
+    TNode y = assertion[1];
+
+    ECData* tmpX = x.getAttribute(ECAttr());
+    ECData* tmpY = y.getAttribute(ECAttr());
+
+    ECData* ecX = ccFind(tmpX);
+    ECData* ecY = ccFind(tmpY);
+    if(ecX == ecY)
+      continue;
+
+    Debug("uf") << "merging equivalence classes for " << std::endl;
+    Debug("uf") << "left equivalence class :" << (ecX->getRep()) << std::endl;
+    Debug("uf") << "right equivalence class :" << (ecY->getRep()) << std::endl;
+    Debug("uf") << std::endl;
+
+    ccUnion(ecX, ecY);
+  }
+}
+
+Node TheoryUFTim::constructConflict(TNode diseq) {
+  Debug("uf") << "uf: begin constructConflict()" << std::endl;
+
+  NodeBuilder<> nb(kind::AND);
+  nb << diseq;
+  for(unsigned i = 0; i < d_assertions.size(); ++i) {
+    nb << d_assertions[i];
+  }
+
+  Assert(nb.getNumChildren() > 0);
+  Node conflict = nb.getNumChildren() == 1 ? nb[0] : nb;
+
+  Debug("uf") << "conflict constructed : " << conflict << std::endl;
+
+  Debug("uf") << "uf: ending constructConflict()" << std::endl;
+
+  return conflict;
+}
+
+void TheoryUFTim::check(Effort level) {
+  if (done() && !fullEffort(level)) {
+    return;
+  }
+
+  TimerStat::CodeTimer checkTimer(d_checkTime);
+
+  Debug("uf") << "uf: begin check(" << level << ")" << std::endl;
+
+  while(!done()) {
+    Node assertion = get();
+    Debug("uf") << "TheoryUFTim::check(): " << assertion << std::endl;
+
+    switch(assertion.getKind()) {
+    case EQUAL:
+      d_assertions.push_back(assertion);
+      d_pending.push_back(assertion);
+      merge();
+      break;
+    case NOT:
+      Assert(assertion[0].getKind() == EQUAL,
+             "predicates not supported in this UF implementation");
+      d_disequality.push_back(assertion[0]);
+      break;
+    case APPLY_UF:
+      Unhandled("predicates not supported in this UF implementation");
+    default:
+      Unhandled(assertion.getKind());
+    }
+
+    Debug("uf") << "TheoryUFTim::check(): done = " << (done() ? "true" : "false") << std::endl;
+  }
+
+  //Make sure all outstanding merges are completed.
+  if(d_currentPendingIdx < d_pending.size()) {
+    merge();
+  }
+
+  if(standardEffortOrMore(level)) {
+    for(CDList<Node>::const_iterator diseqIter = d_disequality.begin();
+        diseqIter != d_disequality.end();
+        ++diseqIter) {
+
+      TNode left  = (*diseqIter)[0];
+      TNode right = (*diseqIter)[1];
+      if(sameCongruenceClass(left, right)) {
+        Node remakeNeq = (*diseqIter).notNode();
+        Node conflict = constructConflict(remakeNeq);
+        d_out->conflict(conflict, false);
+        return;
+      }
+    }
+  }
+
+  Debug("uf") << "uf: end check(" << level << ")" << std::endl;
+}
diff --git a/src/theory/example/theory_uf_tim.h b/src/theory/example/theory_uf_tim.h
new file mode 100644
index 0000000..7470b4d
--- /dev/null
+++ b/src/theory/example/theory_uf_tim.h
@@ -0,0 +1,213 @@
+/*********************                                                        */
+/*! \file theory_uf_tim.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This is a basic implementation of the Theory of Uninterpreted Functions
+ ** with Equality.
+ **
+ ** This is a basic implementation of the Theory of Uninterpreted Functions
+ ** with Equality.  It is based on the Nelson-Oppen algorithm given in
+ ** "Fast Decision Procedures Based on Congruence Closure"
+ **  (http://portal.acm.org/ft_gateway.cfm?id=322198&type=pdf)
+ ** This has been extended to work in a context-dependent way.
+ ** This interacts heavily with the data-structures given in ecdata.h .
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__UF__TIM__THEORY_UF_TIM_H
+#define __CVC4__THEORY__UF__TIM__THEORY_UF_TIM_H
+
+#include "expr/node.h"
+#include "expr/attribute.h"
+
+#include "theory/theory.h"
+
+#include "context/context.h"
+#include "context/cdo.h"
+#include "context/cdlist.h"
+#include "theory/uf/theory_uf.h"
+#include "theory/uf/tim/ecdata.h"
+
+namespace CVC4 {
+namespace theory {
+namespace uf {
+namespace tim {
+
+class TheoryUFTim : public Theory {
+
+private:
+
+  /**
+   * List of all of the non-negated literals from the assertion queue.
+   * This is used only for conflict generation.
+   * This differs from pending as the program generates new equalities that
+   * are not in this list.
+   * This will probably be phased out in future version.
+   */
+  context::CDList<Node> d_assertions;
+
+  /**
+   * List of pending equivalence class merges.
+   *
+   * Tricky part:
+   * Must keep a hard link because new equality terms are created and appended
+   * to this list.
+   */
+  context::CDList<Node> d_pending;
+
+  /** Index of the next pending equality to merge. */
+  context::CDO<unsigned> d_currentPendingIdx;
+
+  /** List of all disequalities this theory has seen. */
+  context::CDList<Node> d_disequality;
+
+  /**
+   * List of all of the terms that are registered in the current context.
+   * When registerTerm is called on a term we want to guarentee that there
+   * is a hard link to the term for the duration of the context in which
+   * register term is called.
+   * This invariant is enough for us to use soft links where we want is the
+   * current implementation as well as making ECAttr() not context dependent.
+   * Soft links used both in ECData, and Link.
+   */
+  context::CDList<Node> d_registered;
+
+public:
+
+  /** Constructs a new instance of TheoryUF w.r.t. the provided context.*/
+  TheoryUFTim(context::Context* c, context::UserContext* u, OutputChannel& out, Valuation valuation);
+
+  /** Destructor for the TheoryUF object. */
+  ~TheoryUFTim();
+
+  /**
+   * Registers a previously unseen [in this context] node n.
+   * For TheoryUF, this sets up and maintains invaraints about
+   * equivalence class data-structures.
+   *
+   * Overloads a void registerTerm(TNode n); from theory.h.
+   * See theory/theory.h for more information about this method.
+   */
+  void registerTerm(TNode n);
+
+  /**
+   * Currently this does nothing.
+   *
+   * Overloads a void preRegisterTerm(TNode n); from theory.h.
+   * See theory/theory.h for more information about this method.
+   */
+  void preRegisterTerm(TNode n);
+
+  /**
+   * Checks whether the set of literals provided to the theory is consistent.
+   *
+   * If this is called at any effort level, it computes the congruence closure
+   * of all of the positive literals in the context.
+   *
+   * If this is called at full effort it checks if any of the negative literals
+   * are inconsistent with the congruence closure.
+   *
+   * Overloads  void check(Effort level); from theory.h.
+   * See theory/theory.h for more information about this method.
+   */
+  void check(Effort level);
+
+  void presolve() {
+    // do nothing
+  }
+
+  /**
+   * Propagates theory literals. Currently does nothing.
+   *
+   * Overloads void propagate(Effort level); from theory.h.
+   * See theory/theory.h for more information about this method.
+   */
+  void propagate(Effort level) {}
+
+  /**
+   * Explains a previously reported conflict. Currently does nothing.
+   *
+   * Overloads void explain(TNode n, Effort level); from theory.h.
+   * See theory/theory.h for more information about this method.
+   */
+  void explain(TNode n) {}
+
+  std::string identify() const { return std::string("TheoryUFTim"); }
+
+private:
+  /**
+   * Checks whether 2 nodes are already in the same equivalence class tree.
+   * This should only be used internally, and it should only be called when
+   * the only thing done with the equivalence classes is an equality check.
+   *
+   * @returns true iff ccFind(x) == ccFind(y);
+   */
+  bool sameCongruenceClass(TNode x, TNode y);
+
+  /**
+   * Checks whether Node x and Node y are currently congruent
+   * using the equivalence class data structures.
+   * @returns true iff
+   *    |x| = n = |y| and
+   *    x.getOperator() == y.getOperator() and
+   *    forall 1 <= i < n : ccFind(x[i]) == ccFind(y[i])
+   */
+  bool equiv(TNode x, TNode y);
+
+  /**
+   * Merges 2 equivalence classes, checks wether any predecessors need to
+   * be set equal to complete congruence closure.
+   * The class with the smaller class size will be merged.
+   * @pre ecX->isClassRep()
+   * @pre ecY->isClassRep()
+   */
+  void ccUnion(ECData* ecX, ECData* ecY);
+
+  /**
+   * Returns the representative of the equivalence class.
+   * May modify the find pointers associated with equivalence classes.
+   */
+  ECData* ccFind(ECData* x);
+
+  /** Performs Congruence Closure to reflect the new additions to d_pending. */
+  void merge();
+
+  /** Constructs a conflict from an inconsistent disequality. */
+  Node constructConflict(TNode diseq);
+
+};/* class TheoryUFTim */
+
+
+/**
+ * Cleanup function for ECData. This will be used for called whenever
+ * a ECAttr is being destructed.
+ */
+struct ECCleanupStrategy {
+  static void cleanup(ECData* ec) {
+    Debug("ufgc") << "cleaning up ECData " << ec << "\n";
+    ec->deleteSelf();
+  }
+};/* struct ECCleanupStrategy */
+
+/** Unique name to use for constructing ECAttr. */
+struct ECAttrTag {};
+
+/**
+ * ECAttr is the attribute that maps a node to an equivalence class.
+ */
+typedef expr::Attribute<ECAttrTag, ECData*, ECCleanupStrategy> ECAttr;
+
+}/* CVC4::theory::uf::tim namespace */
+}/* CVC4::theory::uf namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__UF__TIM__THEORY_UF_TIM_H */
diff --git a/src/theory/fp/kinds b/src/theory/fp/kinds
new file mode 100644
index 0000000..983d5aa
--- /dev/null
+++ b/src/theory/fp/kinds
@@ -0,0 +1,238 @@
+# kinds                                                               -*- sh -*-
+#
+# For documentation on this file format, please refer to
+# src/theory/builtin/kinds.
+#
+
+theory THEORY_FP ::CVC4::theory::fp::TheoryFp "theory/fp/theory_fp.h"
+typechecker "theory/fp/theory_fp_type_rules.h"
+rewriter ::CVC4::theory::fp::TheoryFpRewriter "theory/fp/theory_fp_rewriter.h"
+
+properties check
+
+# Theory content goes here.
+
+# constants...
+constant CONST_FLOATINGPOINT \
+    ::CVC4::FloatingPoint \
+    ::CVC4::FloatingPointHashFunction \
+    "util/floatingpoint.h" \
+    "a floating-point literal"
+typerule CONST_FLOATINGPOINT    ::CVC4::theory::fp::FloatingPointConstantTypeRule
+
+
+constant CONST_ROUNDINGMODE \
+    ::CVC4::RoundingMode \
+    ::CVC4::RoundingModeHashFunction \
+    "util/floatingpoint.h" \
+    "a floating-point rounding mode"    
+typerule CONST_ROUNDINGMODE    ::CVC4::theory::fp::RoundingModeConstantTypeRule
+
+
+
+# types...
+sort ROUNDINGMODE_TYPE \
+    5 \
+    well-founded \
+    "NodeManager::currentNM()->mkConst<RoundingMode>(RoundingMode())" \
+    "expr/node_manager.h" \
+    "floating-point rounding mode"
+
+constant FLOATINGPOINT_TYPE \
+    ::CVC4::FloatingPointSize \
+    ::CVC4::FloatingPointSizeHashFunction \
+    "util/floatingpoint.h" \
+    "floating-point type"
+#cardinality FLOATINGPOINT_TYPE "function" "header"
+#enumerator FLOATINGPOINT_TYPE "function" "header"
+#well-founded FLOATINGPOINT_TYPE true "function" "header"
+
+
+# operators...
+operator FLOATINGPOINT_FP 3 "construct a floating-point literal from bit vectors"
+typerule FLOATINGPOINT_FP    ::CVC4::theory::fp::FloatingPointFPTypeRule
+
+
+
+operator FLOATINGPOINT_EQ 2: "floating-point equality"
+typerule FLOATINGPOINT_EQ    ::CVC4::theory::fp::FloatingPointTestTypeRule
+
+operator FLOATINGPOINT_ABS 1 "floating-point absolute value"
+typerule FLOATINGPOINT_ABS   ::CVC4::theory::fp::FloatingPointOperationTypeRule
+
+operator FLOATINGPOINT_NEG 1 "floating-point negation"
+typerule FLOATINGPOINT_NEG   ::CVC4::theory::fp::FloatingPointOperationTypeRule
+
+operator FLOATINGPOINT_PLUS 3 "floating-point addition"
+typerule FLOATINGPOINT_PLUS   ::CVC4::theory::fp::FloatingPointRoundingOperationTypeRule
+
+operator FLOATINGPOINT_SUB 3 "floating-point sutraction"
+typerule FLOATINGPOINT_SUB   ::CVC4::theory::fp::FloatingPointRoundingOperationTypeRule
+
+operator FLOATINGPOINT_MULT 3 "floating-point multiply"
+typerule FLOATINGPOINT_MULT   ::CVC4::theory::fp::FloatingPointRoundingOperationTypeRule
+
+operator FLOATINGPOINT_DIV 3 "floating-point division"
+typerule FLOATINGPOINT_DIV   ::CVC4::theory::fp::FloatingPointRoundingOperationTypeRule
+
+operator FLOATINGPOINT_FMA 4 "floating-point fused multiply and add"
+typerule FLOATINGPOINT_FMA   ::CVC4::theory::fp::FloatingPointRoundingOperationTypeRule
+
+operator FLOATINGPOINT_SQRT 2 "floating-point square root"
+typerule FLOATINGPOINT_SQRT   ::CVC4::theory::fp::FloatingPointRoundingOperationTypeRule
+
+operator FLOATINGPOINT_REM 2 "floating-point remainder"
+typerule FLOATINGPOINT_REM   ::CVC4::theory::fp::FloatingPointOperationTypeRule
+
+operator FLOATINGPOINT_RTI 2 "floating-point round to integral"
+typerule FLOATINGPOINT_RTI   ::CVC4::theory::fp::FloatingPointRoundingOperationTypeRule
+
+operator FLOATINGPOINT_MIN 2 "floating-point minimum"
+typerule FLOATINGPOINT_MIN   ::CVC4::theory::fp::FloatingPointOperationTypeRule
+
+operator FLOATINGPOINT_MAX 2 "floating-point maximum"
+typerule FLOATINGPOINT_MAX   ::CVC4::theory::fp::FloatingPointOperationTypeRule
+
+
+operator FLOATINGPOINT_LEQ 2 "floating-point less than or equal"
+typerule FLOATINGPOINT_LEQ   ::CVC4::theory::fp::FloatingPointTestTypeRule
+
+operator FLOATINGPOINT_LT 2 "floating-point less than"
+typerule FLOATINGPOINT_LT   ::CVC4::theory::fp::FloatingPointTestTypeRule
+
+operator FLOATINGPOINT_GEQ 2 "floating-point greater than or equal"
+typerule FLOATINGPOINT_GEQ   ::CVC4::theory::fp::FloatingPointTestTypeRule
+
+operator FLOATINGPOINT_GT 2 "floating-point greater than"
+typerule FLOATINGPOINT_GT   ::CVC4::theory::fp::FloatingPointTestTypeRule
+
+
+
+operator FLOATINGPOINT_ISN 1 "floating-point is normal"
+typerule FLOATINGPOINT_ISN   ::CVC4::theory::fp::FloatingPointTestTypeRule
+
+operator FLOATINGPOINT_ISSN 1 "floating-point is sub-normal"
+typerule FLOATINGPOINT_ISSN   ::CVC4::theory::fp::FloatingPointTestTypeRule
+
+operator FLOATINGPOINT_ISZ 1 "floating-point is zero"
+typerule FLOATINGPOINT_ISZ   ::CVC4::theory::fp::FloatingPointTestTypeRule
+
+operator FLOATINGPOINT_ISINF 1 "floating-point is infinite"
+typerule FLOATINGPOINT_ISINF   ::CVC4::theory::fp::FloatingPointTestTypeRule
+
+operator FLOATINGPOINT_ISNAN 1 "floating-point is NaN"
+typerule FLOATINGPOINT_ISNAN   ::CVC4::theory::fp::FloatingPointTestTypeRule
+
+operator FLOATINGPOINT_ISNEG 1 "floating-point is negative"
+typerule FLOATINGPOINT_ISNEG   ::CVC4::theory::fp::FloatingPointTestTypeRule
+
+operator FLOATINGPOINT_ISPOS 1 "floating-point is positive"
+typerule FLOATINGPOINT_ISPOS   ::CVC4::theory::fp::FloatingPointTestTypeRule
+
+
+
+constant FLOATINGPOINT_TO_FP_IEEE_BITVECTOR_OP \
+    ::CVC4::FloatingPointToFPIEEEBitVector \
+    "::CVC4::FloatingPointConvertSortHashFunction<0x1>" \
+    "util/floatingpoint.h" \
+    "operator for to_fp from bit vector"
+typerule FLOATINGPOINT_TO_FP_IEEE_BITVECTOR_OP ::CVC4::theory::fp::FloatingPointParametricOpTypeRule
+
+parameterized FLOATINGPOINT_TO_FP_IEEE_BITVECTOR FLOATINGPOINT_TO_FP_IEEE_BITVECTOR_OP 1 "convert an IEEE-754 bit vector to floating-point"
+typerule FLOATINGPOINT_TO_FP_IEEE_BITVECTOR   ::CVC4::theory::fp::FloatingPointToFPIEEEBitVectorTypeRule
+
+
+
+constant FLOATINGPOINT_TO_FP_FLOATINGPOINT_OP \
+    ::CVC4::FloatingPointToFPFloatingPoint \
+    "::CVC4::FloatingPointConvertSortHashFunction<0x2>" \
+    "util/floatingpoint.h" \
+    "operator for to_fp from floating point"
+typerule FLOATINGPOINT_TO_FP_FLOATINGPOINT_OP ::CVC4::theory::fp::FloatingPointParametricOpTypeRule
+
+parameterized FLOATINGPOINT_TO_FP_FLOATINGPOINT FLOATINGPOINT_TO_FP_FLOATINGPOINT_OP 2 "convert between floating-point sorts"
+typerule FLOATINGPOINT_TO_FP_FLOATINGPOINT   ::CVC4::theory::fp::FloatingPointToFPFloatingPointTypeRule
+
+
+
+
+constant FLOATINGPOINT_TO_FP_REAL_OP \
+    ::CVC4::FloatingPointToFPReal \
+    "::CVC4::FloatingPointConvertSortHashFunction<0x4>" \
+    "util/floatingpoint.h" \
+    "operator for to_fp from real"
+typerule FLOATINGPOINT_TO_FP_REAL_OP ::CVC4::theory::fp::FloatingPointParametricOpTypeRule
+
+parameterized FLOATINGPOINT_TO_FP_REAL FLOATINGPOINT_TO_FP_REAL_OP 2 "convert a real to floating-point"
+typerule FLOATINGPOINT_TO_FP_REAL   ::CVC4::theory::fp::FloatingPointToFPRealTypeRule
+
+
+
+constant FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR_OP \
+    ::CVC4::FloatingPointToFPSignedBitVector \
+    "::CVC4::FloatingPointConvertSortHashFunction<0x8>" \
+    "util/floatingpoint.h" \
+    "operator for to_fp from signed bit vector"
+typerule FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR_OP ::CVC4::theory::fp::FloatingPointParametricOpTypeRule
+
+parameterized FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR_OP 2 "convert a signed bit vector to floating-point"
+typerule FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR   ::CVC4::theory::fp::FloatingPointToFPSignedBitVectorTypeRule
+
+
+
+constant FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR_OP \
+    ::CVC4::FloatingPointToFPUnsignedBitVector \
+    "::CVC4::FloatingPointConvertSortHashFunction<0x10>" \
+    "util/floatingpoint.h" \
+    "operator for to_fp from unsigned bit vector"
+typerule FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR_OP ::CVC4::theory::fp::FloatingPointParametricOpTypeRule
+
+
+parameterized FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR_OP 2 "convert an unsigned bit vector to floating-point"
+typerule FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR   ::CVC4::theory::fp::FloatingPointToFPUnsignedBitVectorTypeRule
+
+
+
+constant FLOATINGPOINT_TO_FP_GENERIC_OP \
+    ::CVC4::FloatingPointToFPGeneric \
+    "::CVC4::FloatingPointConvertSortHashFunction<0x11>" \
+    "util/floatingpoint.h" \
+    "operator for a generic to_fp"
+typerule FLOATINGPOINT_TO_FP_GENERIC_OP ::CVC4::theory::fp::FloatingPointParametricOpTypeRule
+
+
+parameterized FLOATINGPOINT_TO_FP_GENERIC FLOATINGPOINT_TO_FP_GENERIC_OP 1:2 "a generic conversion to floating-point, used in parsing only"
+typerule FLOATINGPOINT_TO_FP_GENERIC   ::CVC4::theory::fp::FloatingPointToFPGenericTypeRule
+
+
+
+
+
+constant FLOATINGPOINT_TO_UBV_OP \
+    ::CVC4::FloatingPointToUBV \
+    "::CVC4::FloatingPointToBVHashFunction<0x1>" \
+    "util/floatingpoint.h" \
+    "operator for to_ubv"
+typerule FLOATINGPOINT_TO_UBV_OP ::CVC4::theory::fp::FloatingPointParametricOpTypeRule
+
+parameterized FLOATINGPOINT_TO_UBV FLOATINGPOINT_TO_UBV_OP 2 "convert a floating-point value to an unsigned bit vector"
+typerule FLOATINGPOINT_TO_UBV   ::CVC4::theory::fp::FloatingPointToUBVTypeRule
+
+
+
+constant FLOATINGPOINT_TO_SBV_OP \
+    ::CVC4::FloatingPointToSBV \
+    "::CVC4::FloatingPointToBVHashFunction<0x2>" \
+    "util/floatingpoint.h" \
+    "operator for to_sbv"
+typerule FLOATINGPOINT_TO_SBV_OP ::CVC4::theory::fp::FloatingPointParametricOpTypeRule
+
+parameterized FLOATINGPOINT_TO_SBV FLOATINGPOINT_TO_SBV_OP 2 "convert a floating-point value to a signed bit vector"
+typerule FLOATINGPOINT_TO_SBV   ::CVC4::theory::fp::FloatingPointToSBVTypeRule
+
+
+operator FLOATINGPOINT_TO_REAL 1 "floating-point to real"
+typerule FLOATINGPOINT_TO_REAL   ::CVC4::theory::fp::FloatingPointToRealTypeRule
+
+
+endtheory
diff --git a/src/theory/fp/theory_fp.cpp b/src/theory/fp/theory_fp.cpp
new file mode 100644
index 0000000..f321227
--- /dev/null
+++ b/src/theory/fp/theory_fp.cpp
@@ -0,0 +1,127 @@
+/*********************                                                        */
+/*! \file theory_fp.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Martin Brain, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/fp/theory_fp.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace fp {
+
+namespace removeToFPGeneric {
+
+  Node removeToFPGeneric (TNode node) {
+    Assert(node.getKind() == kind::FLOATINGPOINT_TO_FP_GENERIC);
+
+    FloatingPointToFPGeneric info =
+        node.getOperator().getConst<FloatingPointToFPGeneric>();
+
+    size_t children = node.getNumChildren();
+
+    Node op;
+
+    if (children == 1) {
+      op = NodeManager::currentNM()->mkConst(
+          FloatingPointToFPIEEEBitVector(info.t.exponent(),
+                                         info.t.significand()));
+      return NodeManager::currentNM()->mkNode(op, node[0]);
+
+    } else {
+      Assert(children == 2);
+      Assert(node[0].getType().isRoundingMode());
+
+      TypeNode t = node[1].getType();
+
+      if (t.isFloatingPoint()) {
+	op = NodeManager::currentNM()->mkConst(
+            FloatingPointToFPFloatingPoint(info.t.exponent(),
+                                           info.t.significand()));
+      } else if (t.isReal()) {
+	op = NodeManager::currentNM()->mkConst(
+            FloatingPointToFPReal(info.t.exponent(),
+                                  info.t.significand()));
+      } else if (t.isBitVector()) {
+	op = NodeManager::currentNM()->mkConst(
+            FloatingPointToFPSignedBitVector(info.t.exponent(),
+                                             info.t.significand()));
+
+      } else {
+	throw TypeCheckingExceptionPrivate(
+            node,
+            "cannot rewrite to_fp generic due to incorrect type of second "
+            "argument");
+      }
+
+      return NodeManager::currentNM()->mkNode(op, node[0], node[1]);
+    }
+
+    Unreachable("to_fp generic not rewritten");
+  }
+}
+
+
+/** Constructs a new instance of TheoryFp w.r.t. the provided contexts. */
+TheoryFp::TheoryFp(context::Context* c, context::UserContext* u,
+                   OutputChannel& out, Valuation valuation,
+                   const LogicInfo& logicInfo)
+    : Theory(THEORY_FP, c, u, out, valuation, logicInfo)
+{}/* TheoryFp::TheoryFp() */
+
+
+Node TheoryFp::expandDefinition(LogicRequest &, Node node) {
+  Trace("fp-expandDefinition") << "TheoryFp::expandDefinition(): " << node << std::endl;
+
+  if (node.getKind() == kind::FLOATINGPOINT_TO_FP_GENERIC) {
+    Node res(removeToFPGeneric::removeToFPGeneric(node));
+
+    Trace("fp-expandDefinition") << "TO_FP_GENERIC rewritten to " << res << std::endl;
+
+    return res;
+  } else {
+    return node;
+  }
+}
+
+
+void TheoryFp::check(Effort level) {
+  if (done() && !fullEffort(level)) {
+    return;
+  }
+
+  while(!done()) {
+    // Get all the assertions
+    Assertion assertion = get();
+    TNode fact = assertion.assertion;
+
+    Debug("fp") << "TheoryFp::check(): processing " << fact << std::endl;
+
+    // Do the work
+    switch(fact.getKind()) {
+
+    /* cases for all the theory's kinds go here... */
+
+    default:
+      Unhandled(fact.getKind());
+    }
+  }
+
+}/* TheoryFp::check() */
+
+}/* CVC4::theory::fp namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/fp/theory_fp.h b/src/theory/fp/theory_fp.h
new file mode 100644
index 0000000..b1915e3
--- /dev/null
+++ b/src/theory/fp/theory_fp.h
@@ -0,0 +1,53 @@
+/*********************                                                        */
+/*! \file theory_fp.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Martin Brain, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__FP__THEORY_FP_H
+#define __CVC4__THEORY__FP__THEORY_FP_H
+
+#include "theory/theory.h"
+
+namespace CVC4 {
+namespace theory {
+namespace fp {
+
+class TheoryFp : public Theory {
+public:
+
+  /** Constructs a new instance of TheoryFp w.r.t. the provided contexts. */
+  TheoryFp(context::Context* c,
+           context::UserContext* u,
+           OutputChannel& out,
+           Valuation valuation,
+           const LogicInfo& logicInfo);
+
+  Node expandDefinition(LogicRequest &, Node node);
+
+  void check(Effort);
+
+  std::string identify() const {
+    return "THEORY_FP";
+  }
+
+};/* class TheoryFp */
+
+}/* CVC4::theory::fp namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__FP__THEORY_FP_H */
diff --git a/src/theory/fp/theory_fp_rewriter.cpp b/src/theory/fp/theory_fp_rewriter.cpp
new file mode 100644
index 0000000..612112d
--- /dev/null
+++ b/src/theory/fp/theory_fp_rewriter.cpp
@@ -0,0 +1,478 @@
+/*********************                                                        */
+/*! \file theory_fp_rewriter.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Martin Brain, Tim King, Clark Barrett
+ ** Copyright (c) 2013  University of Oxford
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Rewrite rules for floating point theories. ]]
+ **
+ ** \todo [[ Constant folding
+ **          Push negations up through arithmetic operators (include max and min? maybe not due to +0/-0)
+ **          classifications to normal tests (maybe)
+ **          (= x (fp.neg x)) --> (isNaN x)
+ **          (fp.eq x (fp.neg x)) --> (isZero x)   (previous and reorganise should be sufficient)
+ **          (fp.eq x const) --> various = depending on const 
+ **          (fp.abs (fp.neg x)) --> (fp.abs x)
+ **          (fp.isPositive (fp.neg x)) --> (fp.isNegative x)
+ **          (fp.isNegative (fp.neg x)) --> (fp.isPositive x)
+ **          (fp.isPositive (fp.abs x)) --> (not (isNaN x))
+ **          (fp.isNegative (fp.abs x)) --> false
+ **       ]]
+ **/
+
+#include <algorithm>
+
+#include "base/cvc4_assert.h"
+#include "theory/fp/theory_fp_rewriter.h"
+
+namespace CVC4 {
+namespace theory {
+namespace fp {
+
+namespace rewrite {
+  /** Rewrite rules **/
+
+  RewriteResponse notFP (TNode node, bool) {
+    Unreachable("non floating-point kind (%d) in floating point rewrite?",node.getKind());
+  }
+
+  RewriteResponse identity (TNode node, bool) {
+    return RewriteResponse(REWRITE_DONE, node);
+  }
+
+  RewriteResponse type (TNode node, bool) {
+    Unreachable("sort kind (%d) found in expression?",node.getKind());
+    return RewriteResponse(REWRITE_DONE, node);
+  }
+
+  RewriteResponse removeDoubleNegation (TNode node, bool) {
+    Assert(node.getKind() == kind::FLOATINGPOINT_NEG);
+    if (node[0].getKind() == kind::FLOATINGPOINT_NEG) {
+      RewriteResponse(REWRITE_AGAIN, node[0][0]);
+    }
+
+    return RewriteResponse(REWRITE_DONE, node);
+  }
+
+  RewriteResponse convertSubtractionToAddition (TNode node, bool) {
+    Assert(node.getKind() == kind::FLOATINGPOINT_SUB);
+    Node negation = NodeManager::currentNM()->mkNode(kind::FLOATINGPOINT_NEG,node[2]);
+    Node addition = NodeManager::currentNM()->mkNode(kind::FLOATINGPOINT_PLUS,node[0],node[1],negation);
+    return RewriteResponse(REWRITE_DONE, addition);
+  }
+
+
+  /* Implies (fp.eq x x) --> (not (isNaN x))
+   */
+
+  RewriteResponse ieeeEqToEq (TNode node, bool) {
+    Assert(node.getKind() == kind::FLOATINGPOINT_EQ);
+    NodeManager *nm = NodeManager::currentNM();
+
+    return RewriteResponse(REWRITE_DONE,
+			   nm->mkNode(kind::AND,
+				      nm->mkNode(kind::AND,
+						 nm->mkNode(kind::NOT, nm->mkNode(kind::FLOATINGPOINT_ISNAN, node[0])),
+						 nm->mkNode(kind::NOT, nm->mkNode(kind::FLOATINGPOINT_ISNAN, node[1]))),
+				      nm->mkNode(kind::OR,
+						 nm->mkNode(kind::EQUAL, node[0], node[1]),
+						 nm->mkNode(kind::AND,
+							    nm->mkNode(kind::FLOATINGPOINT_ISZ, node[0]),
+							    nm->mkNode(kind::FLOATINGPOINT_ISZ, node[1])))));
+  }
+
+
+  RewriteResponse geqToleq (TNode node, bool) {
+    Assert(node.getKind() == kind::FLOATINGPOINT_GEQ);
+    return RewriteResponse(REWRITE_DONE,NodeManager::currentNM()->mkNode(kind::FLOATINGPOINT_LEQ,node[1],node[0]));
+  }
+
+  RewriteResponse gtTolt (TNode node, bool) {
+    Assert(node.getKind() == kind::FLOATINGPOINT_GT);
+    return RewriteResponse(REWRITE_DONE,NodeManager::currentNM()->mkNode(kind::FLOATINGPOINT_LT,node[1],node[0]));
+  }
+
+  RewriteResponse removed (TNode node, bool) {  
+    Unreachable("kind (%d) should have been removed?",node.getKind());
+    return RewriteResponse(REWRITE_DONE, node);
+  }
+
+  RewriteResponse variable (TNode node, bool) {  
+    // We should only get floating point and rounding mode variables to rewrite.
+    TypeNode tn = node.getType(true);
+    Assert(tn.isFloatingPoint() || tn.isRoundingMode());
+ 
+    // Not that we do anything with them...
+    return RewriteResponse(REWRITE_DONE, node);
+  }
+
+  RewriteResponse equal (TNode node, bool isPreRewrite) {  
+    // We should only get equalities of floating point or rounding mode types.
+    Assert(node.getKind() == kind::EQUAL);
+
+    TypeNode tn = node[0].getType(true);
+
+    Assert(tn.isFloatingPoint() || tn.isRoundingMode());
+    Assert(tn == node[1].getType(true));   // Should be ensured by the typing rules
+
+    if (node[0] == node[1]) {
+      return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(true));
+    } else if (!isPreRewrite && (node[0] > node[1])) {
+	Node normal = NodeManager::currentNM()->mkNode(kind::EQUAL,node[1],node[0]);
+	return RewriteResponse(REWRITE_DONE, normal);
+    } else {
+      return RewriteResponse(REWRITE_DONE, node);
+    }
+  }
+
+  RewriteResponse convertFromRealLiteral (TNode node, bool) {
+    Assert(node.getKind() == kind::FLOATINGPOINT_TO_FP_REAL);
+
+    // \todo Honour the rounding mode and work for something other than doubles!
+
+    if (node[1].getKind() == kind::CONST_RATIONAL) {
+      TNode op = node.getOperator();
+      const FloatingPointToFPReal &param = op.getConst<FloatingPointToFPReal>();
+      Node lit =
+	NodeManager::currentNM()->mkConst(FloatingPoint(param.t.exponent(),
+							param.t.significand(),
+							node[1].getConst<Rational>().getDouble()));
+      
+      return RewriteResponse(REWRITE_DONE, lit);
+    } else {
+      return RewriteResponse(REWRITE_DONE, node);
+    }
+  }
+
+  RewriteResponse convertFromIEEEBitVectorLiteral (TNode node, bool) {
+    Assert(node.getKind() == kind::FLOATINGPOINT_TO_FP_IEEE_BITVECTOR);
+
+    // \todo Handle arbitrary length bit vectors without using strings!
+
+    if (node[0].getKind() == kind::CONST_BITVECTOR) {
+      TNode op = node.getOperator();
+      const FloatingPointToFPIEEEBitVector &param = op.getConst<FloatingPointToFPIEEEBitVector>();
+      const BitVector &bv = node[0].getConst<BitVector>();
+      std::string bitString(bv.toString());
+
+      Node lit =
+	NodeManager::currentNM()->mkConst(FloatingPoint(param.t.exponent(),
+							param.t.significand(),
+							bitString));
+
+      return RewriteResponse(REWRITE_DONE, lit);
+    } else {
+      return RewriteResponse(REWRITE_DONE, node);
+    }
+  }
+
+  RewriteResponse convertFromLiteral (TNode node, bool) {
+    Assert(node.getKind() == kind::FLOATINGPOINT_FP);
+
+    // \todo Handle arbitrary length bit vectors without using strings!
+
+    if ((node[0].getKind() == kind::CONST_BITVECTOR) &&
+	(node[1].getKind() == kind::CONST_BITVECTOR) &&
+	(node[2].getKind() == kind::CONST_BITVECTOR)) {
+
+      BitVector bv(node[0].getConst<BitVector>());
+      bv = bv.concat(node[1].getConst<BitVector>());
+      bv = bv.concat(node[2].getConst<BitVector>());
+
+      std::string bitString(bv.toString());
+      std::reverse(bitString.begin(), bitString.end());
+
+      // +1 to support the hidden bit
+      Node lit =
+	NodeManager::currentNM()->mkConst(FloatingPoint(node[1].getConst<BitVector>().getSize(),
+							node[2].getConst<BitVector>().getSize() + 1,
+							bitString));
+
+      return RewriteResponse(REWRITE_DONE, lit);
+    } else {
+      return RewriteResponse(REWRITE_DONE, node);
+    }
+  }
+
+  // Note these cannot be assumed to be symmetric for +0/-0, thus no symmetry reorder
+  RewriteResponse compactMinMax (TNode node, bool isPreRewrite) {
+#ifdef CVC4_ASSERTIONS
+    Kind k = node.getKind();
+    Assert((k == kind::FLOATINGPOINT_MIN) || (k == kind::FLOATINGPOINT_MAX));
+#endif
+    if (node[0] == node[1]) {
+      return RewriteResponse(REWRITE_DONE, node[0]);
+    } else {
+      return RewriteResponse(REWRITE_DONE, node);
+    }
+  }
+
+
+  RewriteResponse reorderFPEquality (TNode node, bool isPreRewrite) {
+    Assert(node.getKind() == kind::FLOATINGPOINT_EQ);
+    Assert(!isPreRewrite);    // Likely redundant in pre-rewrite
+
+    if (node[0] > node[1]) {
+      Node normal = NodeManager::currentNM()->mkNode(kind::FLOATINGPOINT_EQ,node[1],node[0]);
+      return RewriteResponse(REWRITE_DONE, normal);
+    } else {
+      return RewriteResponse(REWRITE_DONE, node);
+    } 
+  }
+
+  RewriteResponse reorderBinaryOperation (TNode node, bool isPreRewrite) {
+    Kind k = node.getKind();
+    Assert((k == kind::FLOATINGPOINT_PLUS) || (k == kind::FLOATINGPOINT_MULT));
+    Assert(!isPreRewrite);    // Likely redundant in pre-rewrite
+
+    if (node[1] > node[2]) {
+      Node normal = NodeManager::currentNM()->mkNode(k,node[0],node[2],node[1]);
+      return RewriteResponse(REWRITE_DONE, normal);
+    } else {
+      return RewriteResponse(REWRITE_DONE, node);
+    } 
+  }
+
+  RewriteResponse reorderFMA (TNode node, bool isPreRewrite) {
+    Assert(node.getKind() == kind::FLOATINGPOINT_FMA);
+    Assert(!isPreRewrite);    // Likely redundant in pre-rewrite
+
+    if (node[1] > node[2]) {
+      Node normal = NodeManager::currentNM()->mkNode(kind::FLOATINGPOINT_FMA,node[0],node[2],node[1],node[3]);
+      return RewriteResponse(REWRITE_DONE, normal);
+    } else {
+      return RewriteResponse(REWRITE_DONE, node);
+    } 
+  }
+
+  RewriteResponse removeSignOperations (TNode node, bool isPreRewrite) {
+    Assert(node.getKind() == kind::FLOATINGPOINT_ISN   ||
+	   node.getKind() == kind::FLOATINGPOINT_ISSN  ||
+	   node.getKind() == kind::FLOATINGPOINT_ISZ   ||
+	   node.getKind() == kind::FLOATINGPOINT_ISINF ||
+	   node.getKind() == kind::FLOATINGPOINT_ISNAN);
+    Assert(node.getNumChildren() == 1);
+
+    Kind childKind(node[0].getKind());
+
+    if ((childKind == kind::FLOATINGPOINT_NEG) ||
+	(childKind == kind::FLOATINGPOINT_ABS)) {
+
+      Node rewritten = NodeManager::currentNM()->mkNode(node.getKind(),node[0][0]);
+      return RewriteResponse(REWRITE_AGAIN, rewritten);
+    } else {
+      return RewriteResponse(REWRITE_DONE, node);
+    } 
+  }
+
+
+}; /* CVC4::theory::fp::rewrite */
+
+RewriteFunction TheoryFpRewriter::preRewriteTable[kind::LAST_KIND]; 
+RewriteFunction TheoryFpRewriter::postRewriteTable[kind::LAST_KIND]; 
+
+
+  /**
+   * Initialize the rewriter.
+   */
+  void TheoryFpRewriter::init() {
+
+    /* Set up the pre-rewrite dispatch table */
+    for (unsigned i = 0; i < kind::LAST_KIND; ++i) {
+      preRewriteTable[i] = rewrite::notFP;
+    }
+
+    /******** Constants ********/
+    /* No rewriting possible for constants */
+    preRewriteTable[kind::CONST_FLOATINGPOINT] = rewrite::identity;
+    preRewriteTable[kind::CONST_ROUNDINGMODE] = rewrite::identity; 
+
+    /******** Sorts(?) ********/
+    /* These kinds should only appear in types */
+    //preRewriteTable[kind::ROUNDINGMODE_TYPE] = rewrite::type;
+    preRewriteTable[kind::FLOATINGPOINT_TYPE] = rewrite::type;
+      
+    /******** Operations ********/
+    preRewriteTable[kind::FLOATINGPOINT_FP] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_ABS] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_NEG] = rewrite::removeDoubleNegation;
+    preRewriteTable[kind::FLOATINGPOINT_PLUS] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_SUB] = rewrite::convertSubtractionToAddition;
+    preRewriteTable[kind::FLOATINGPOINT_MULT] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_DIV] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_FMA] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_SQRT] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_REM] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_RTI] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_MIN] = rewrite::compactMinMax;
+    preRewriteTable[kind::FLOATINGPOINT_MAX] = rewrite::compactMinMax;
+
+    /******** Comparisons ********/
+    preRewriteTable[kind::FLOATINGPOINT_EQ] = rewrite::ieeeEqToEq;
+    preRewriteTable[kind::FLOATINGPOINT_LEQ] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_LT] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_GEQ] = rewrite::geqToleq;
+    preRewriteTable[kind::FLOATINGPOINT_GT] = rewrite::gtTolt;
+
+    /******** Classifications ********/
+    preRewriteTable[kind::FLOATINGPOINT_ISN] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_ISSN] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_ISZ] = rewrite::identity;  
+    preRewriteTable[kind::FLOATINGPOINT_ISINF] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_ISNAN] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_ISNEG] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_ISPOS] = rewrite::identity;
+
+    /******** Conversions ********/
+    preRewriteTable[kind::FLOATINGPOINT_TO_FP_IEEE_BITVECTOR] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_TO_FP_FLOATINGPOINT] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_TO_FP_REAL] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_TO_FP_GENERIC] = rewrite::removed;
+    preRewriteTable[kind::FLOATINGPOINT_TO_UBV] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_TO_SBV] = rewrite::identity;
+    preRewriteTable[kind::FLOATINGPOINT_TO_REAL] = rewrite::identity;
+
+    /******** Variables ********/
+    preRewriteTable[kind::VARIABLE] = rewrite::variable;
+    preRewriteTable[kind::BOUND_VARIABLE] = rewrite::variable;
+
+    preRewriteTable[kind::EQUAL] = rewrite::equal;
+
+
+
+
+    /* Set up the post-rewrite dispatch table */
+    for (unsigned i = 0; i < kind::LAST_KIND; ++i) {
+      postRewriteTable[i] = rewrite::notFP;
+    }
+
+    /******** Constants ********/
+    /* No rewriting possible for constants */
+    postRewriteTable[kind::CONST_FLOATINGPOINT] = rewrite::identity;
+    postRewriteTable[kind::CONST_ROUNDINGMODE] = rewrite::identity; 
+
+    /******** Sorts(?) ********/
+    /* These kinds should only appear in types */
+    //postRewriteTable[kind::ROUNDINGMODE_TYPE] = rewrite::type;
+    postRewriteTable[kind::FLOATINGPOINT_TYPE] = rewrite::type;
+      
+    /******** Operations ********/
+    postRewriteTable[kind::FLOATINGPOINT_FP] = rewrite::convertFromLiteral;
+    postRewriteTable[kind::FLOATINGPOINT_ABS] = rewrite::identity;
+    postRewriteTable[kind::FLOATINGPOINT_NEG] = rewrite::removeDoubleNegation;
+    postRewriteTable[kind::FLOATINGPOINT_PLUS] = rewrite::reorderBinaryOperation;
+    postRewriteTable[kind::FLOATINGPOINT_SUB] = rewrite::removed;
+    postRewriteTable[kind::FLOATINGPOINT_MULT] = rewrite::reorderBinaryOperation;
+    postRewriteTable[kind::FLOATINGPOINT_DIV] = rewrite::identity;
+    postRewriteTable[kind::FLOATINGPOINT_FMA] = rewrite::reorderFMA;
+    postRewriteTable[kind::FLOATINGPOINT_SQRT] = rewrite::identity;
+    postRewriteTable[kind::FLOATINGPOINT_REM] = rewrite::identity;
+    postRewriteTable[kind::FLOATINGPOINT_RTI] = rewrite::identity;
+    postRewriteTable[kind::FLOATINGPOINT_MIN] = rewrite::compactMinMax;
+    postRewriteTable[kind::FLOATINGPOINT_MAX] = rewrite::compactMinMax;
+
+    /******** Comparisons ********/
+    postRewriteTable[kind::FLOATINGPOINT_EQ] = rewrite::removed;
+    postRewriteTable[kind::FLOATINGPOINT_LEQ] = rewrite::identity;
+    postRewriteTable[kind::FLOATINGPOINT_LT] = rewrite::identity;
+    postRewriteTable[kind::FLOATINGPOINT_GEQ] = rewrite::removed;
+    postRewriteTable[kind::FLOATINGPOINT_GT] = rewrite::removed;
+
+    /******** Classifications ********/
+    postRewriteTable[kind::FLOATINGPOINT_ISN] = rewrite::removeSignOperations;
+    postRewriteTable[kind::FLOATINGPOINT_ISSN] = rewrite::removeSignOperations;
+    postRewriteTable[kind::FLOATINGPOINT_ISZ] = rewrite::removeSignOperations;
+    postRewriteTable[kind::FLOATINGPOINT_ISINF] = rewrite::removeSignOperations;
+    postRewriteTable[kind::FLOATINGPOINT_ISNAN] = rewrite::removeSignOperations;
+    postRewriteTable[kind::FLOATINGPOINT_ISNEG] = rewrite::identity;
+    postRewriteTable[kind::FLOATINGPOINT_ISPOS] = rewrite::identity;
+
+    /******** Conversions ********/
+    postRewriteTable[kind::FLOATINGPOINT_TO_FP_IEEE_BITVECTOR] = rewrite::convertFromIEEEBitVectorLiteral;
+    postRewriteTable[kind::FLOATINGPOINT_TO_FP_FLOATINGPOINT] = rewrite::identity;
+    postRewriteTable[kind::FLOATINGPOINT_TO_FP_REAL] = rewrite::convertFromRealLiteral;
+    postRewriteTable[kind::FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR] = rewrite::identity;
+    postRewriteTable[kind::FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR] = rewrite::identity;
+    postRewriteTable[kind::FLOATINGPOINT_TO_FP_GENERIC] = rewrite::removed;
+    postRewriteTable[kind::FLOATINGPOINT_TO_UBV] = rewrite::identity;
+    postRewriteTable[kind::FLOATINGPOINT_TO_SBV] = rewrite::identity;
+    postRewriteTable[kind::FLOATINGPOINT_TO_REAL] = rewrite::identity;
+
+    /******** Variables ********/
+    postRewriteTable[kind::VARIABLE] = rewrite::variable;
+    postRewriteTable[kind::BOUND_VARIABLE] = rewrite::variable;
+
+    postRewriteTable[kind::EQUAL] = rewrite::equal;
+
+
+  }
+
+
+
+
+  /**
+   * Rewrite a node into the normal form for the theory of fp
+   * in pre-order (really topological order)---meaning that the
+   * children may not be in the normal form.  This is an optimization
+   * for theories with cancelling terms (e.g., 0 * (big-nasty-expression)
+   * in arithmetic rewrites to 0 without the need to look at the big
+   * nasty expression).  Since it's only an optimization, the
+   * implementation here can do nothing.
+   */
+
+  RewriteResponse TheoryFpRewriter::preRewrite(TNode node) {
+    Trace("fp-rewrite") << "TheoryFpRewriter::preRewrite(): " << node << std::endl;
+    RewriteResponse res = preRewriteTable [node.getKind()] (node, true);
+    if (res.node != node) {
+      Debug("fp-rewrite") << "TheoryFpRewriter::preRewrite(): before " << node << std::endl;
+      Debug("fp-rewrite") << "TheoryFpRewriter::preRewrite(): after  " << res.node << std::endl;
+    }
+    return res;
+  }
+
+
+  /**
+   * Rewrite a node into the normal form for the theory of fp.
+   * Called in post-order (really reverse-topological order) when
+   * traversing the expression DAG during rewriting.  This is the
+   * main function of the rewriter, and because of the ordering,
+   * it can assume its children are all rewritten already.
+   *
+   * This function can return one of three rewrite response codes
+   * along with the rewritten node:
+   *
+   *   REWRITE_DONE indicates that no more rewriting is needed.
+   *   REWRITE_AGAIN means that the top-level expression should be
+   *     rewritten again, but that its children are in final form.
+   *   REWRITE_AGAIN_FULL means that the entire returned expression
+   *     should be rewritten again (top-down with preRewrite(), then
+   *     bottom-up with postRewrite()).
+   *
+   * Even if this function returns REWRITE_DONE, if the returned
+   * expression belongs to a different theory, it will be fully
+   * rewritten by that theory's rewriter.
+   */
+
+  RewriteResponse TheoryFpRewriter::postRewrite(TNode node) {
+    Trace("fp-rewrite") << "TheoryFpRewriter::postRewrite(): " << node << std::endl;
+    RewriteResponse res = postRewriteTable [node.getKind()] (node, false);
+    if (res.node != node) {
+      Debug("fp-rewrite") << "TheoryFpRewriter::postRewrite(): before " << node << std::endl;
+      Debug("fp-rewrite") << "TheoryFpRewriter::postRewrite(): after  " << res.node << std::endl;
+    }
+    return res;
+  }
+
+
+}/* CVC4::theory::fp namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
diff --git a/src/theory/fp/theory_fp_rewriter.h b/src/theory/fp/theory_fp_rewriter.h
new file mode 100644
index 0000000..93547b4
--- /dev/null
+++ b/src/theory/fp/theory_fp_rewriter.h
@@ -0,0 +1,65 @@
+/*********************                                                        */
+/*! \file theory_fp_rewriter.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Martin Brain
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__FP__THEORY_FP_REWRITER_H
+#define __CVC4__THEORY__FP__THEORY_FP_REWRITER_H
+
+#include "theory/rewriter.h"
+
+namespace CVC4 {
+namespace theory {
+namespace fp {
+
+typedef RewriteResponse (*RewriteFunction) (TNode, bool);
+
+class TheoryFpRewriter {
+ protected :
+  static RewriteFunction preRewriteTable[kind::LAST_KIND];
+  static RewriteFunction postRewriteTable[kind::LAST_KIND];
+
+ public:
+
+  static RewriteResponse preRewrite(TNode node);
+  static RewriteResponse postRewrite(TNode node);
+
+
+  /**
+   * Rewrite an equality, in case special handling is required.
+   */
+  static Node rewriteEquality(TNode equality) {
+    // often this will suffice
+    return postRewrite(equality).node;
+  }
+
+  static void init();
+
+  /**
+   * Shut down the rewriter.
+   */
+  static inline void shutdown() {
+    // nothing to do
+  }
+
+};/* class TheoryFpRewriter */
+
+}/* CVC4::theory::fp namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__FP__THEORY_FP_REWRITER_H */
diff --git a/src/theory/fp/theory_fp_type_rules.h b/src/theory/fp/theory_fp_type_rules.h
new file mode 100644
index 0000000..edda93d
--- /dev/null
+++ b/src/theory/fp/theory_fp_type_rules.h
@@ -0,0 +1,471 @@
+/*********************                                                        */
+/*! \file theory_fp_type_rules.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Martin Brain
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__FP__THEORY_FP_TYPE_RULES_H
+#define __CVC4__THEORY__FP__THEORY_FP_TYPE_RULES_H
+
+namespace CVC4 {
+namespace theory {
+namespace fp {
+
+#define TRACE(FUNCTION)                                                \
+  Trace("fp-type") << FUNCTION "::computeType(" << check << "): " << n \
+                   << std::endl
+
+class FloatingPointConstantTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TRACE("FloatingPointConstantTypeRule");
+
+    const FloatingPoint& f = n.getConst<FloatingPoint>();
+
+    if (check) {
+      if (!(validExponentSize(f.t.exponent()))) {
+        throw TypeCheckingExceptionPrivate(
+            n, "constant with invalid exponent size");
+      }
+      if (!(validSignificandSize(f.t.significand()))) {
+        throw TypeCheckingExceptionPrivate(
+            n, "constant with invalid significand size");
+      }
+    }
+    return nodeManager->mkFloatingPointType(f.t);
+  }
+};
+
+class RoundingModeConstantTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TRACE("RoundingModeConstantTypeRule");
+
+    // Nothing to check!
+    return nodeManager->roundingModeType();
+  }
+};
+
+class FloatingPointFPTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TRACE("FloatingPointFPTypeRule");
+
+    TypeNode signType = n[0].getType(check);
+    TypeNode exponentType = n[1].getType(check);
+    TypeNode significandType = n[2].getType(check);
+
+    if (!signType.isBitVector() || !exponentType.isBitVector() ||
+        !significandType.isBitVector()) {
+      throw TypeCheckingExceptionPrivate(n,
+                                         "arguments to fp must be bit vectors");
+    }
+
+    unsigned signBits = signType.getBitVectorSize();
+    unsigned exponentBits = exponentType.getBitVectorSize();
+    unsigned significandBits = significandType.getBitVectorSize();
+
+    if (check) {
+      if (signBits != 1) {
+        throw TypeCheckingExceptionPrivate(
+            n, "sign bit vector in fp must be 1 bit long");
+      } else if (!(validExponentSize(exponentBits))) {
+        throw TypeCheckingExceptionPrivate(
+            n, "exponent bit vector in fp is an invalid size");
+      } else if (!(validSignificandSize(significandBits))) {
+        throw TypeCheckingExceptionPrivate(
+            n, "significand bit vector in fp is an invalid size");
+      }
+    }
+
+    // The +1 is for the implicit hidden bit
+    return nodeManager->mkFloatingPointType(exponentBits, significandBits + 1);
+  }
+};
+
+class FloatingPointTestTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TRACE("FloatingPointTestTypeRule");
+
+    if (check) {
+      TypeNode firstOperand = n[0].getType(check);
+
+      if (!firstOperand.isFloatingPoint()) {
+        throw TypeCheckingExceptionPrivate(
+            n, "floating-point test applied to a non floating-point sort");
+      }
+
+      size_t children = n.getNumChildren();
+      for (size_t i = 1; i < children; ++i) {
+        if (!(n[i].getType(check) == firstOperand)) {
+          throw TypeCheckingExceptionPrivate(
+              n, "floating-point test applied to mixed sorts");
+        }
+      }
+    }
+
+    return nodeManager->booleanType();
+  }
+};
+
+class FloatingPointOperationTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TRACE("FloatingPointOperationTypeRule");
+
+    TypeNode firstOperand = n[0].getType(check);
+
+    if (check) {
+      if (!firstOperand.isFloatingPoint()) {
+        throw TypeCheckingExceptionPrivate(
+            n, "floating-point operation applied to a non floating-point sort");
+      }
+
+      size_t children = n.getNumChildren();
+      for (size_t i = 1; i < children; ++i) {
+        if (!(n[i].getType(check) == firstOperand)) {
+          throw TypeCheckingExceptionPrivate(
+              n, "floating-point test applied to mixed sorts");
+        }
+      }
+    }
+
+    return firstOperand;
+  }
+};
+
+class FloatingPointRoundingOperationTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TRACE("FloatingPointRoundingOperationTypeRule");
+
+    if (check) {
+      TypeNode roundingModeType = n[0].getType(check);
+
+      if (!roundingModeType.isRoundingMode()) {
+        throw TypeCheckingExceptionPrivate(
+            n, "first argument must be a rounding mode");
+      }
+    }
+
+    TypeNode firstOperand = n[1].getType(check);
+
+    if (check) {
+      if (!firstOperand.isFloatingPoint()) {
+        throw TypeCheckingExceptionPrivate(
+            n, "floating-point operation applied to a non floating-point sort");
+      }
+
+      size_t children = n.getNumChildren();
+      for (size_t i = 2; i < children; ++i) {
+        if (!(n[i].getType(check) == firstOperand)) {
+          throw TypeCheckingExceptionPrivate(
+              n, "floating-point test applied to mixed sorts");
+        }
+      }
+    }
+
+    return firstOperand;
+  }
+};
+
+class FloatingPointParametricOpTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TRACE("FloatingPointParametricOpTypeRule");
+
+    return nodeManager->builtinOperatorType();
+  }
+};
+
+class FloatingPointToFPIEEEBitVectorTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TRACE("FloatingPointToFPIEEEBitVectorTypeRule");
+
+    FloatingPointToFPIEEEBitVector info =
+        n.getOperator().getConst<FloatingPointToFPIEEEBitVector>();
+
+    if (check) {
+      TypeNode operandType = n[0].getType(check);
+
+      if (!(operandType.isBitVector())) {
+        throw TypeCheckingExceptionPrivate(n,
+                                           "conversion to floating-point from "
+                                           "bit vector used with sort other "
+                                           "than bit vector");
+      } else if (!(operandType.getBitVectorSize() ==
+                   info.t.exponent() + info.t.significand())) {
+        throw TypeCheckingExceptionPrivate(
+            n,
+            "conversion to floating-point from bit vector used with bit vector "
+            "length that does not match floating point parameters");
+      }
+    }
+
+    return nodeManager->mkFloatingPointType(info.t);
+  }
+};
+
+class FloatingPointToFPFloatingPointTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TRACE("FloatingPointToFPFloatingPointTypeRule");
+
+    FloatingPointToFPFloatingPoint info =
+        n.getOperator().getConst<FloatingPointToFPFloatingPoint>();
+
+    if (check) {
+      TypeNode roundingModeType = n[0].getType(check);
+
+      if (!roundingModeType.isRoundingMode()) {
+        throw TypeCheckingExceptionPrivate(
+            n, "first argument must be a rounding mode");
+      }
+
+      TypeNode operandType = n[1].getType(check);
+
+      if (!(operandType.isFloatingPoint())) {
+        throw TypeCheckingExceptionPrivate(n,
+                                           "conversion to floating-point from "
+                                           "floating-point used with sort "
+                                           "other than floating-point");
+      }
+    }
+
+    return nodeManager->mkFloatingPointType(info.t);
+  }
+};
+
+class FloatingPointToFPRealTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TRACE("FloatingPointToFPRealTypeRule");
+
+    FloatingPointToFPReal info =
+        n.getOperator().getConst<FloatingPointToFPReal>();
+
+    if (check) {
+      TypeNode roundingModeType = n[0].getType(check);
+
+      if (!roundingModeType.isRoundingMode()) {
+        throw TypeCheckingExceptionPrivate(
+            n, "first argument must be a rounding mode");
+      }
+
+      TypeNode operandType = n[1].getType(check);
+
+      if (!(operandType.isReal())) {
+        throw TypeCheckingExceptionPrivate(n,
+                                           "conversion to floating-point from "
+                                           "real used with sort other than "
+                                           "real");
+      }
+    }
+
+    return nodeManager->mkFloatingPointType(info.t);
+  }
+};
+
+class FloatingPointToFPSignedBitVectorTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TRACE("FloatingPointToFPSignedBitVectorTypeRule");
+
+    FloatingPointToFPSignedBitVector info =
+        n.getOperator().getConst<FloatingPointToFPSignedBitVector>();
+
+    if (check) {
+      TypeNode roundingModeType = n[0].getType(check);
+
+      if (!roundingModeType.isRoundingMode()) {
+        throw TypeCheckingExceptionPrivate(
+            n, "first argument must be a rounding mode");
+      }
+
+      TypeNode operandType = n[1].getType(check);
+
+      if (!(operandType.isBitVector())) {
+        throw TypeCheckingExceptionPrivate(n,
+                                           "conversion to floating-point from "
+                                           "signed bit vector used with sort "
+                                           "other than bit vector");
+      }
+    }
+
+    return nodeManager->mkFloatingPointType(info.t);
+  }
+};
+
+class FloatingPointToFPUnsignedBitVectorTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TRACE("FloatingPointToFPUnsignedBitVectorTypeRule");
+
+    FloatingPointToFPUnsignedBitVector info =
+        n.getOperator().getConst<FloatingPointToFPUnsignedBitVector>();
+
+    if (check) {
+      TypeNode roundingModeType = n[0].getType(check);
+
+      if (!roundingModeType.isRoundingMode()) {
+        throw TypeCheckingExceptionPrivate(
+            n, "first argument must be a rounding mode");
+      }
+
+      TypeNode operandType = n[1].getType(check);
+
+      if (!(operandType.isBitVector())) {
+        throw TypeCheckingExceptionPrivate(n,
+                                           "conversion to floating-point from "
+                                           "unsigned bit vector used with sort "
+                                           "other than bit vector");
+      }
+    }
+
+    return nodeManager->mkFloatingPointType(info.t);
+  }
+};
+
+class FloatingPointToFPGenericTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TRACE("FloatingPointToFPGenericTypeRule");
+
+    FloatingPointToFPGeneric info =
+        n.getOperator().getConst<FloatingPointToFPGeneric>();
+
+    if (check) {
+      /* As this is a generic kind intended only for parsing,
+       * the checking here is light.  For better checking, use
+       * expandDefinitions first.
+       */
+
+      size_t children = n.getNumChildren();
+      for (size_t i = 0; i < children; ++i) {
+        n[i].getType(check);
+      }
+    }
+
+    return nodeManager->mkFloatingPointType(info.t);
+  }
+};
+
+class FloatingPointToUBVTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TRACE("FloatingPointToUBVTypeRule");
+
+    FloatingPointToUBV info = n.getOperator().getConst<FloatingPointToUBV>();
+
+    if (check) {
+      TypeNode roundingModeType = n[0].getType(check);
+
+      if (!roundingModeType.isRoundingMode()) {
+        throw TypeCheckingExceptionPrivate(
+            n, "first argument must be a rounding mode");
+      }
+
+      TypeNode operandType = n[1].getType(check);
+
+      if (!(operandType.isFloatingPoint())) {
+        throw TypeCheckingExceptionPrivate(n,
+                                           "conversion to unsigned bit vector "
+                                           "used with a sort other than "
+                                           "floating-point");
+      }
+    }
+
+    return nodeManager->mkBitVectorType(info.bvs);
+  }
+};
+
+class FloatingPointToSBVTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TRACE("FloatingPointToSBVTypeRule");
+
+    FloatingPointToSBV info = n.getOperator().getConst<FloatingPointToSBV>();
+
+    if (check) {
+      TypeNode roundingModeType = n[0].getType(check);
+
+      if (!roundingModeType.isRoundingMode()) {
+        throw TypeCheckingExceptionPrivate(
+            n, "first argument must be a rounding mode");
+      }
+
+      TypeNode operandType = n[1].getType(check);
+
+      if (!(operandType.isFloatingPoint())) {
+        throw TypeCheckingExceptionPrivate(n,
+                                           "conversion to signed bit vector "
+                                           "used with a sort other than "
+                                           "floating-point");
+      }
+    }
+
+    return nodeManager->mkBitVectorType(info.bvs);
+  }
+};
+
+class FloatingPointToRealTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TRACE("FloatingPointToRealTypeRule");
+
+    if (check) {
+      TypeNode roundingModeType = n[0].getType(check);
+
+      if (!roundingModeType.isRoundingMode()) {
+        throw TypeCheckingExceptionPrivate(
+            n, "first argument must be a rounding mode");
+      }
+
+      TypeNode operand = n[1].getType(check);
+
+      if (!operand.isFloatingPoint()) {
+        throw TypeCheckingExceptionPrivate(
+            n, "floating-point to real applied to a non floating-point sort");
+      }
+    }
+
+    return nodeManager->realType();
+  }
+};
+
+} /* CVC4::theory::fp namespace */
+} /* CVC4::theory namespace */
+} /* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__FP__THEORY_FP_TYPE_RULES_H */
diff --git a/src/theory/idl/idl_assertion.cpp b/src/theory/idl/idl_assertion.cpp
new file mode 100644
index 0000000..1d42f77
--- /dev/null
+++ b/src/theory/idl/idl_assertion.cpp
@@ -0,0 +1,213 @@
+/*********************                                                        */
+/*! \file idl_assertion.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/idl/idl_assertion.h"
+
+using namespace CVC4;
+using namespace theory;
+using namespace idl;
+
+IDLAssertion::IDLAssertion()
+: d_op(kind::LAST_KIND)
+{}
+
+IDLAssertion::IDLAssertion(TNode node) {
+  bool ok = parse(node, 1, false);
+  if (!ok) {
+    d_x = d_y = TNode::null();
+  } else {
+    if (d_op == kind::GT) {
+      // Turn GT into LT x - y > c is the same as y - x < -c
+      std::swap(d_x, d_y);
+      d_c = -d_c;
+      d_op = kind::LT;
+    }
+    if (d_op == kind::GEQ) {
+      // Turn GT into LT x - y >= c is the same as y - x <= -c
+      std::swap(d_x, d_y);
+      d_c = -d_c;
+      d_op = kind::LEQ;
+    }
+    if (d_op == kind::LT) {
+      // Turn strict into non-strict x - y < c is the same as x - y <= c-1
+      d_c = d_c - 1;
+      d_op = kind::LEQ;
+    }
+  }
+  d_original = node;
+}
+
+IDLAssertion::IDLAssertion(const IDLAssertion& other)
+: d_x(other.d_x)
+, d_y(other.d_y)
+, d_op(other.d_op)
+, d_c(other.d_c)
+, d_original(other.d_original)
+{}
+
+bool IDLAssertion::propagate(IDLModel& model) const {
+  Debug("theory::idl::model") << model << std::endl;
+  Assert(ok());
+  // Should be d_x - d_y <= d_c, or d_x - d_c <= d_y
+  Integer x_value = model.getValue(d_x);
+  Integer y_value = model.getValue(d_y);
+  if (x_value - y_value > d_c) {
+    model.setValue(d_y, x_value - d_c, IDLReason(d_x, d_original));
+    Debug("theory::idl::model") << model << std::endl;
+    return true;
+  } else {
+    return false;
+  }
+}
+
+void IDLAssertion::toStream(std::ostream& out) const {
+  out << "IDL[" << d_x << " - " << d_y << " " << d_op << " " << d_c << "]";
+}
+
+/** Negates the given arithmetic kind */
+static Kind negateOp(Kind op) {
+  switch (op) {
+  case kind::LT:
+    // not (a < b) = (a >= b)
+    return kind::GEQ;
+  case kind::LEQ:
+    // not (a <= b) = (a > b)
+    return kind::GT;
+  case kind::GT:
+    // not (a > b) = (a <= b)
+    return kind::LEQ;
+  case kind::GEQ:
+    // not (a >= b) = (a < b)
+    return kind::LT;
+  case kind::EQUAL:
+    // not (a = b) = (a != b)
+    return kind::DISTINCT;
+  case kind::DISTINCT:
+    // not (a != b) = (a = b)
+    return kind::EQUAL;
+  default:
+    Unreachable();
+    break;
+  }
+  return kind::LAST_KIND;
+}
+
+bool IDLAssertion::parse(TNode node, int c, bool negated) {
+
+  // Only unit coefficients allowed
+  if (c != 1 && c != -1) {
+    return false;
+  }
+
+  // Assume we're ok
+  bool ok = true;
+
+  // The kind of the node
+  switch(node.getKind()) {
+
+  case kind::NOT:
+    // We parse the negation
+    ok = parse(node[0], c, true);
+    // Setup the kind
+    if (ok) {
+      d_op = negateOp(d_op);
+    }
+    break;
+
+  case kind::EQUAL:
+  case kind::LT:
+  case kind::LEQ:
+  case kind::GT:
+  case kind::GEQ: {
+    // All relation operators are parsed on both sides
+    d_op = node.getKind();
+    ok = parse(node[0], c, negated);
+    if (ok) {
+      ok = parse(node[1],-c, negated);
+    }
+    break;
+  }
+
+  case kind::CONST_RATIONAL: {
+    // Constants
+    Rational m = node.getConst<Rational>();
+    if (m.isIntegral()) {
+      d_c +=  m.getNumerator() * (-c);
+    } else {
+      ok = false;
+    }
+    break;
+  }
+  case kind::MULT: {
+    // Only unit multiplication of variables
+    if (node.getNumChildren() == 2 && node[0].isConst()) {
+      Rational a = node[0].getConst<Rational>();
+      if (a == 1 || a == -1) {
+        ok = parse(node[1], c * a.sgn(), negated);
+      } else {
+        ok = false;
+      }
+    } else {
+      ok = false;
+    }
+    break;
+  }
+
+  case kind::PLUS: {
+    for(unsigned i = 0; i < node.getNumChildren(); ++i) {
+      ok = parse(node[i], c, negated);
+      if(!ok) {
+        break;
+      }
+    }
+    break;
+  }
+
+  case kind::MINUS: {
+    ok = parse(node[0], c, negated);
+    if (ok) {
+      ok = parse(node[1], -c, negated);
+    }
+    break;
+  }
+
+  case kind::UMINUS: {
+    ok = parse(node[0], -c, negated);
+    break;
+  }
+
+  default: {
+    if (c > 0) {
+      if (d_x.isNull()) {
+        d_x = node;
+      } else {
+        ok = false;
+      }
+    } else {
+      if (d_y.isNull()) {
+        d_y = node;
+      } else {
+        ok = false;
+      }
+    }
+    break;
+  }
+  } // End case
+
+  // Difference logic OK
+  return ok;
+}
diff --git a/src/theory/idl/idl_assertion.h b/src/theory/idl/idl_assertion.h
new file mode 100644
index 0000000..5db1db0
--- /dev/null
+++ b/src/theory/idl/idl_assertion.h
@@ -0,0 +1,91 @@
+/*********************                                                        */
+/*! \file idl_assertion.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#pragma once
+
+#include "theory/idl/idl_model.h"
+
+namespace CVC4 {
+namespace theory {
+namespace idl {
+
+/**
+ * An internal representation of the IDL assertions. Each IDL assertions is
+ * of the form (x - y op c) where op is one of (<=, =, !=). IDL assertion
+ * can be constructed from an expression.
+ */
+class IDLAssertion {
+
+  /** The positive variable */
+  TNode d_x;
+  /** The negative variable */
+  TNode d_y;
+  /** The relation */
+  Kind d_op;
+  /** The RHS constant */
+  Integer d_c;
+
+  /** Original assertion we got this one from */
+  TNode d_original;
+
+  /** Parses the given node into an assertion, and return true if OK. */
+  bool parse(TNode node, int c = 1, bool negated = false);
+
+public:
+
+  /** Null assertion */
+  IDLAssertion();
+  /** Create the assertion from given node */
+  IDLAssertion(TNode node);
+  /** Copy constructor */
+  IDLAssertion(const IDLAssertion& other);
+
+  TNode getX() const { return d_x; }
+  TNode getY() const { return d_y; }
+  Kind getOp() const { return d_op;}
+  Integer getC() const { return d_c; }
+
+  /**
+   * Propagate the constraint using the model. For example, if the constraint
+   * is of the form x - y <= -1, and the value of x in the model is 0, then
+   *
+   *   (x - y <= -1) and (x = 0) implies y >= x + 1 = 1
+   *
+   * If the value of y is less then 1, is is set to 1 and true is returned. If
+   * the value of y is 1 or more, than false is return.
+   *
+   * @return true if value of y was updated
+   */
+  bool propagate(IDLModel& model) const;
+
+  /** Is this constraint proper */
+  bool ok() const {
+    return !d_x.isNull() || !d_y.isNull();
+  }
+
+  /** Output to the stream */
+  void toStream(std::ostream& out) const;
+};
+
+inline std::ostream& operator << (std::ostream& out, const IDLAssertion& assertion) {
+  assertion.toStream(out);
+  return out;
+}
+
+}
+}
+}
diff --git a/src/theory/idl/idl_assertion_db.cpp b/src/theory/idl/idl_assertion_db.cpp
new file mode 100644
index 0000000..c08cb64
--- /dev/null
+++ b/src/theory/idl/idl_assertion_db.cpp
@@ -0,0 +1,59 @@
+/*********************                                                        */
+/*! \file idl_assertion_db.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/idl/idl_assertion_db.h"
+
+using namespace CVC4;
+using namespace theory;
+using namespace idl;
+
+IDLAssertionDB::IDLAssertionDB(context::Context* c)
+: d_assertions(c)
+, d_variableLists(c)
+{}
+
+void IDLAssertionDB::add(const IDLAssertion& assertion, TNode var) {
+  // Is there a list for the variable already?
+  unsigned previous = -1;
+  var_to_unsigned_map::iterator find = d_variableLists.find(var);
+  if (find != d_variableLists.end()) {
+    previous = (*find).second;
+  }
+  // Add to the DB
+  d_variableLists[var] = d_assertions.size();
+  d_assertions.push_back(IDLAssertionListElement(assertion, previous));
+}
+
+IDLAssertionDB::iterator::iterator(IDLAssertionDB& db, TNode var)
+: d_db(db)
+, d_current(-1)
+{
+  var_to_unsigned_map::const_iterator find = d_db.d_variableLists.find(var);
+  if (find != d_db.d_variableLists.end()) {
+    d_current = (*find).second;
+  }
+}
+
+void IDLAssertionDB::iterator::next() {
+  if (d_current != (unsigned)(-1)) {
+    d_current = d_db.d_assertions[d_current].d_previous;
+  }
+}
+
+IDLAssertion IDLAssertionDB::iterator::get() const {
+  return d_db.d_assertions[d_current].d_assertion;
+}
diff --git a/src/theory/idl/idl_assertion_db.h b/src/theory/idl/idl_assertion_db.h
new file mode 100644
index 0000000..6481deb
--- /dev/null
+++ b/src/theory/idl/idl_assertion_db.h
@@ -0,0 +1,86 @@
+/*********************                                                        */
+/*! \file idl_assertion_db.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#pragma once
+
+#include "theory/idl/idl_assertion.h"
+#include "context/cdlist.h"
+
+namespace CVC4 {
+namespace theory {
+namespace idl {
+
+/**
+ * Context-dependent database assertions, organized by variable. Each variable
+ * can be associated a list of IDL assertions. The list of assertions can
+ * be iterated over using the provided iterator class.
+ */
+class IDLAssertionDB {
+
+  /** Elements of the assertion lists */
+  struct IDLAssertionListElement {
+    /** The assertion itself */
+    IDLAssertion d_assertion;
+    /** The index of the previous element (-1 for null) */
+    unsigned d_previous;
+
+    IDLAssertionListElement(const IDLAssertion& assertion, unsigned previous)
+    : d_assertion(assertion), d_previous(previous)
+    {}
+  };
+
+  /** All assertions in a context dependent stack */
+  context::CDList<IDLAssertionListElement> d_assertions;
+
+  typedef context::CDHashMap<TNode, unsigned, TNodeHashFunction> var_to_unsigned_map;
+
+  /** Map from variables to the first element of their list */
+  var_to_unsigned_map d_variableLists;
+
+public:
+
+  /** Create a new assertion database */
+  IDLAssertionDB(context::Context* c);
+
+  /** Add a new assertion, attach to the list of the given variable */
+  void add(const IDLAssertion& assertion, TNode var);
+
+  /** Iteration over the constraints of a variable */
+  class iterator {
+    /** The database */
+    const IDLAssertionDB& d_db;
+    /** Index of the current constraint */
+    unsigned d_current;
+  public:
+    /** Construct the iterator for the variable */
+    iterator(IDLAssertionDB& db, TNode var);
+    /** Is this iterator done */
+    bool done() const { return d_current == (unsigned)(-1); }
+    /** Next element */
+    void next();
+    /** Get the assertion */
+    IDLAssertion get() const;
+  };
+};
+
+}
+}
+}
+
+
+
+
diff --git a/src/theory/idl/idl_model.cpp b/src/theory/idl/idl_model.cpp
new file mode 100644
index 0000000..4d20719
--- /dev/null
+++ b/src/theory/idl/idl_model.cpp
@@ -0,0 +1,64 @@
+/*********************                                                        */
+/*! \file idl_model.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/idl/idl_model.h"
+
+using namespace CVC4;
+using namespace theory;
+using namespace idl;
+
+IDLModel::IDLModel(context::Context* context)
+: d_model(context)
+, d_reason(context)
+{}
+
+Integer IDLModel::getValue(TNode var) const {
+  model_value_map::const_iterator find = d_model.find(var);
+  if (find != d_model.end()) {
+    return (*find).second;
+  } else {
+    return 0;
+  }
+}
+
+void IDLModel::setValue(TNode var, Integer value, IDLReason reason) {
+  Assert(!reason.constraint.isNull());
+  d_model[var] = value;
+  d_reason[var] = reason;
+}
+
+void IDLModel::getReasonCycle(TNode var, std::vector<TNode>& reasons) {
+  TNode current = var;
+  do {
+    Debug("theory::idl::model") << "processing: " << var << std::endl;
+    Assert(d_reason.find(current) != d_reason.end());
+    IDLReason reason = d_reason[current];
+    Debug("theory::idl::model") << "adding reason: " << reason.constraint << std::endl;
+    reasons.push_back(reason.constraint);
+    current = reason.x;
+  } while (current != var);
+}
+
+void IDLModel::toStream(std::ostream& out) const {
+  model_value_map::const_iterator it = d_model.begin();
+  model_value_map::const_iterator it_end = d_model.end();
+  out << "Model[" << std::endl;
+  for (; it != it_end; ++ it) {
+    out << (*it).first << " -> " << (*it).second << std::endl;
+  }
+  out << "]";
+}
diff --git a/src/theory/idl/idl_model.h b/src/theory/idl/idl_model.h
new file mode 100644
index 0000000..35663a2
--- /dev/null
+++ b/src/theory/idl/idl_model.h
@@ -0,0 +1,84 @@
+/*********************                                                        */
+/*! \file idl_model.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#pragma once
+
+#include "expr/node.h"
+#include "context/cdhashmap.h"
+
+namespace CVC4 {
+namespace theory {
+namespace idl {
+
+/**
+ * A reason for a value of a variable in the model is a constraint that implies
+ * this value by means of the value of another variable. For example, if the
+ * value of x is 0, then the variable x and the constraint (y > 0) are a reason
+ * for the y taking the value 1.
+ */
+struct IDLReason {
+  /** The variable of the reason */
+  TNode x;
+  /** The constraint of the reason */
+  TNode constraint;
+
+  IDLReason(TNode x, TNode constraint)
+  : x(x), constraint(constraint) {}
+  IDLReason() {}
+};
+
+/**
+ * A model maps variables to integer values and backs them up with reasons.
+ * Default values (if not set with setValue) for all variables are 0.
+ */
+class IDLModel {
+
+  typedef context::CDHashMap<TNode, Integer, TNodeHashFunction> model_value_map;
+  typedef context::CDHashMap<TNode, IDLReason, TNodeHashFunction> model_reason_map;
+
+  /** Values assigned to individual variables */
+  model_value_map d_model;
+
+  /** Reasons constraining the individual variables */
+  model_reason_map d_reason;
+
+public:
+
+  IDLModel(context::Context* context);
+
+  /** Get the model value of the variable */
+  Integer getValue(TNode var) const;
+
+  /** Set the value of the variable */
+  void setValue(TNode var, Integer value, IDLReason reason);
+
+  /** Get the cycle of reasons behind the variable var */
+  void getReasonCycle(TNode var, std::vector<TNode>& reasons);
+
+  /** Output to the given stream */
+  void toStream(std::ostream& out) const;
+
+};
+
+inline std::ostream& operator << (std::ostream& out, const IDLModel& model) {
+  model.toStream(out);
+  return out;
+}
+
+}
+}
+}
diff --git a/src/theory/idl/kinds b/src/theory/idl/kinds
new file mode 100644
index 0000000..6bf0218
--- /dev/null
+++ b/src/theory/idl/kinds
@@ -0,0 +1,8 @@
+# kinds                                                               -*- sh -*-
+#
+# For documentation on this file format, please refer to
+# src/theory/builtin/kinds.
+#
+
+alternate THEORY_ARITH "idl" ::CVC4::theory::idl::TheoryIdl "theory/idl/theory_idl.h"
+
diff --git a/src/theory/idl/theory_idl.cpp b/src/theory/idl/theory_idl.cpp
new file mode 100644
index 0000000..8f85dc9
--- /dev/null
+++ b/src/theory/idl/theory_idl.cpp
@@ -0,0 +1,155 @@
+/*********************                                                        */
+/*! \file theory_idl.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/idl/theory_idl.h"
+
+#include <set>
+#include <queue>
+
+#include "options/idl_options.h"
+#include "theory/rewriter.h"
+
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace idl {
+
+TheoryIdl::TheoryIdl(context::Context* c, context::UserContext* u,
+                     OutputChannel& out, Valuation valuation,
+                     const LogicInfo& logicInfo)
+    : Theory(THEORY_ARITH, c, u, out, valuation, logicInfo)
+    , d_model(c)
+    , d_assertionsDB(c)
+{}
+
+Node TheoryIdl::ppRewrite(TNode atom) {
+  if (atom.getKind() == kind::EQUAL  && options::idlRewriteEq()) {
+    // If the option is turned on, each equality into two inequalities. This in
+    // effect removes equalities, and theorefore dis-equalities too.
+    Node leq = NodeBuilder<2>(kind::LEQ) << atom[0] << atom[1];
+    Node geq = NodeBuilder<2>(kind::GEQ) << atom[0] << atom[1];
+    Node rewritten = Rewriter::rewrite(leq.andNode(geq));
+    return rewritten;
+  } else {
+    return atom;
+  }
+}
+
+void TheoryIdl::check(Effort level) {
+  if (done() && !fullEffort(level)) {
+    return;
+  }
+
+  TimerStat::CodeTimer checkTimer(d_checkTime);
+
+  while(!done()) {
+
+    // Get the next assertion
+    Assertion assertion = get();
+    Debug("theory::idl") << "TheoryIdl::check(): processing " << assertion.assertion << std::endl;
+
+    // Convert the assertion into the internal representation
+    IDLAssertion idlAssertion(assertion.assertion);
+    Debug("theory::idl") << "TheoryIdl::check(): got " << idlAssertion << std::endl;
+
+    if (idlAssertion.ok()) {
+      if (idlAssertion.getOp() == kind::DISTINCT) {
+        // We don't handle dis-equalities
+        d_out->setIncomplete();
+      } else {
+        // Process the convex assertions immediately
+        bool ok = processAssertion(idlAssertion);
+        if (!ok) {
+          // In conflict, we're done
+          return;
+        }
+      }
+    } else {
+      // Not an IDL assertion, set incomplete
+      d_out->setIncomplete();
+    }
+  }
+
+}
+
+bool TheoryIdl::processAssertion(const IDLAssertion& assertion) {
+
+  Debug("theory::idl") << "TheoryIdl::processAssertion(" << assertion << ")" << std::endl;
+
+  // Add the constraint (x - y op c) to the list assertions of x
+  d_assertionsDB.add(assertion, assertion.getX());
+
+  // Update the model, if forced by the assertion
+  bool y_updated = assertion.propagate(d_model);
+
+  // If the value of y was updated, we might need to update further
+  if (y_updated) {
+
+    std::queue<TNode> queue; // Queue of variables to consider
+    std::set<TNode> inQueue; // Current elements of the queue
+
+    // Add the first updated variable to the queue
+    queue.push(assertion.getY());
+    inQueue.insert(assertion.getY());
+
+    while (!queue.empty()) {
+      // Pop a new variable x off the queue
+      TNode x = queue.front();
+      queue.pop();
+      inQueue.erase(x);
+
+      // Go through the constraint (x - y op c), and update values of y
+      IDLAssertionDB::iterator it(d_assertionsDB, x);
+      while (!it.done()) {
+        // Get the assertion and update y
+        IDLAssertion x_y_assertion = it.get();
+        y_updated = x_y_assertion.propagate(d_model);
+        // If updated add to the queue
+        if (y_updated) {
+          // If the variable that we updated is the same as the first
+          // variable that we updated, it's a cycle of updates => conflict
+          if (x_y_assertion.getY() == assertion.getX()) {
+            std::vector<TNode> reasons;
+            d_model.getReasonCycle(x_y_assertion.getY(), reasons);
+            // Construct the reason of the conflict
+            Node conflict = NodeManager::currentNM()->mkNode(kind::AND, reasons);
+            d_out->conflict(conflict);
+            return false;
+          } else {
+            // No cycle, just a model update, so we add to the queue
+            TNode y = x_y_assertion.getY();
+            if (inQueue.count(y) == 0) {
+              queue.push(y);
+              inQueue.insert(x_y_assertion.getY());
+            }
+          }
+        }
+        // Go to the next constraint
+        it.next();
+      }
+    }
+  }
+
+  // Everything fine, no conflict
+  return true;
+}
+
+} /* namepsace CVC4::theory::idl */
+} /* namepsace CVC4::theory */
+} /* namepsace CVC4 */
diff --git a/src/theory/idl/theory_idl.h b/src/theory/idl/theory_idl.h
new file mode 100644
index 0000000..1d2aeca
--- /dev/null
+++ b/src/theory/idl/theory_idl.h
@@ -0,0 +1,63 @@
+/*********************                                                        */
+/*! \file theory_idl.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#pragma once
+
+#include "cvc4_private.h"
+
+#include "theory/theory.h"
+#include "theory/idl/idl_model.h"
+#include "theory/idl/idl_assertion_db.h"
+
+namespace CVC4 {
+namespace theory {
+namespace idl {
+
+/**
+ * Handles integer difference logic (IDL) constraints.
+ */
+class TheoryIdl : public Theory {
+
+  /** The current model */
+  IDLModel d_model;
+
+  /** The asserted constraints, organized by variable */
+  IDLAssertionDB d_assertionsDB;
+
+  /** Process a new assertion, returns false if in conflict */
+  bool processAssertion(const IDLAssertion& assertion);
+
+public:
+
+  /** Theory constructor. */
+  TheoryIdl(context::Context* c, context::UserContext* u, OutputChannel& out,
+            Valuation valuation, const LogicInfo& logicInfo);
+
+  /** Pre-processing of input atoms */
+  Node ppRewrite(TNode atom);
+
+  /** Check the assertions for satisfiability */
+  void check(Effort effort);
+
+  /** Identity string */
+  std::string identify() const { return "THEORY_IDL"; }
+
+};/* class TheoryIdl */
+
+}/* CVC4::theory::idl namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/interrupted.h b/src/theory/interrupted.h
new file mode 100644
index 0000000..e56f351
--- /dev/null
+++ b/src/theory/interrupted.h
@@ -0,0 +1,43 @@
+/*********************                                                        */
+/*! \file interrupted.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An exception signaling that a Theory should immediately
+ ** stop performing processing
+ **
+ ** An exception signaling that a Theory should immediately stop
+ ** performing processing and relinquish control to its caller (e.g.,
+ ** in a parallel environment).  A Theory might be interrupted if it
+ ** calls into its CVC4::theory::OutputChannel, and it should only
+ ** catch this exception to perform emergency repair of any invariants
+ ** it must re-establish.  Further, if this exception is caught by a
+ ** Theory, the Theory should rethrow the same exception (via "throw;"
+ ** in the exception block) rather than return, as the Interrupted
+ ** instance might contain additional information needed for the
+ ** proper management of CVC4 components.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__INTERRUPTED_H
+#define __CVC4__THEORY__INTERRUPTED_H
+
+#include "base/exception.h"
+
+namespace CVC4 {
+namespace theory {
+
+class Interrupted : public CVC4::Exception {
+};/* class Interrupted */
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__INTERRUPTED_H */
diff --git a/src/theory/ite_utilities.cpp b/src/theory/ite_utilities.cpp
new file mode 100644
index 0000000..419e5b4
--- /dev/null
+++ b/src/theory/ite_utilities.cpp
@@ -0,0 +1,1641 @@
+/*********************                                                        */
+/*! \file ite_utilities.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Kshitij Bansal
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Simplifications for ITE expressions
+ **
+ ** This module implements preprocessing phases designed to simplify ITE
+ ** expressions.  Based on:
+ ** Kim, Somenzi, Jin.  Efficient Term-ITE Conversion for SMT.  FMCAD 2009.
+ ** Burch, Jerry.  Techniques for Verifying Superscalar Microprocessors.  DAC '96
+ **/
+#include "theory/ite_utilities.h"
+
+#include <utility>
+
+#include "smt/smt_statistics_registry.h"
+#include "theory/rewriter.h"
+#include "theory/theory.h"
+
+using namespace std;
+namespace CVC4 {
+namespace theory {
+
+namespace ite {
+
+inline static bool isTermITE(TNode e) {
+  return (e.getKind() == kind::ITE && !e.getType().isBoolean());
+}
+
+inline static bool triviallyContainsNoTermITEs(TNode e) {
+  return e.isConst() || e.isVar();
+}
+
+static bool isTheoryAtom(TNode a){
+  using namespace kind;
+  switch(a.getKind()){
+  case EQUAL:
+  case DISTINCT:
+    return !(a[0].getType().isBoolean());
+
+  /* from uf */
+  case APPLY_UF:
+    return a.getType().isBoolean();
+  case CARDINALITY_CONSTRAINT:
+  case DIVISIBLE:
+  case LT:
+  case LEQ:
+  case GT:
+  case GEQ:
+  case IS_INTEGER:
+  case BITVECTOR_COMP:
+  case BITVECTOR_ULT:
+  case BITVECTOR_ULE:
+  case BITVECTOR_UGT:
+  case BITVECTOR_UGE:
+  case BITVECTOR_SLT:
+  case BITVECTOR_SLE:
+  case BITVECTOR_SGT:
+  case BITVECTOR_SGE:
+    return true;
+  default:
+    return false;
+  }
+}
+
+struct CTIVStackElement {
+  TNode curr;
+  unsigned pos;
+  CTIVStackElement() : curr(), pos(0) {}
+  CTIVStackElement(TNode c) : curr(c), pos(0) {}
+}; /* CTIVStackElement */
+
+} /* CVC4::theory::ite */
+
+ITEUtilities::ITEUtilities(ContainsTermITEVisitor* containsVisitor)
+  : d_containsVisitor(containsVisitor)
+  , d_compressor(NULL)
+  , d_simplifier(NULL)
+  , d_careSimp(NULL)
+{
+  Assert(d_containsVisitor != NULL);
+}
+
+ITEUtilities::~ITEUtilities(){
+
+  if(d_simplifier != NULL){
+    delete d_simplifier;
+  }
+  if(d_compressor != NULL){
+    delete d_compressor;
+  }
+  if(d_careSimp != NULL){
+    delete d_careSimp;
+  }
+}
+
+Node ITEUtilities::simpITE(TNode assertion){
+  if(d_simplifier == NULL){
+    d_simplifier = new ITESimplifier(d_containsVisitor);
+  }
+  return d_simplifier->simpITE(assertion);
+}
+
+bool ITEUtilities::simpIteDidALotOfWorkHeuristic() const{
+  if(d_simplifier == NULL){
+    return false;
+  }else{
+    return d_simplifier->doneALotOfWorkHeuristic();
+  }
+}
+
+/* returns false if an assertion is discovered to be equal to false. */
+bool ITEUtilities::compress(std::vector<Node>& assertions){
+  if(d_compressor == NULL){
+     d_compressor = new ITECompressor(d_containsVisitor);
+  }
+  return d_compressor->compress(assertions);
+}
+
+Node ITEUtilities::simplifyWithCare(TNode e){
+  if(d_careSimp == NULL){
+     d_careSimp = new ITECareSimplifier();
+  }
+  return d_careSimp->simplifyWithCare(e);
+}
+
+void ITEUtilities::clear(){
+  if(d_simplifier != NULL){
+    d_simplifier->clearSimpITECaches();
+  }
+  if(d_compressor != NULL){
+    d_compressor->garbageCollect();
+  }
+  if(d_careSimp != NULL){
+    d_careSimp->clear();
+  }
+}
+
+/*********************                                                        */
+/* ContainsTermITEVisitor
+ */
+ContainsTermITEVisitor::ContainsTermITEVisitor(): d_cache() {}
+ContainsTermITEVisitor::~ContainsTermITEVisitor(){}
+bool ContainsTermITEVisitor::containsTermITE(TNode e){
+  /* throughout execution skip through NOT nodes. */
+  e = (e.getKind() == kind::NOT) ? e[0] : e;
+  if(ite::triviallyContainsNoTermITEs(e)){ return false; }
+
+  NodeBoolMap::const_iterator end = d_cache.end();
+  NodeBoolMap::const_iterator tmp_it = d_cache.find(e);
+  if(tmp_it != end){
+    return (*tmp_it).second;
+  }
+
+  bool foundTermIte = false;
+  std::vector<ite::CTIVStackElement> stack;
+  stack.push_back(ite::CTIVStackElement(e));
+  while(!foundTermIte && !stack.empty()){
+    ite::CTIVStackElement& top = stack.back();
+    TNode curr = top.curr;
+    if(top.pos >= curr.getNumChildren()){
+      // all of the children have been visited
+      // no term ites were found
+      d_cache[curr] = false;
+      stack.pop_back();
+    }else{
+      // this is someone's child
+      TNode child = curr[top.pos];
+      child = (child.getKind() == kind::NOT) ? child[0] : child;
+      ++top.pos;
+      if(ite::triviallyContainsNoTermITEs(child)){
+        // skip
+      }else{
+        tmp_it = d_cache.find(child);
+        if(tmp_it != end){
+          foundTermIte = (*tmp_it).second;
+        }else{
+          stack.push_back(ite::CTIVStackElement(child));
+          foundTermIte = ite::isTermITE(child);
+        }
+      }
+    }
+  }
+  if(foundTermIte){
+    while(!stack.empty()){
+      TNode curr = stack.back().curr;
+      stack.pop_back();
+      d_cache[curr] = true;
+    }
+  }
+  return foundTermIte;
+}
+void ContainsTermITEVisitor::garbageCollect() {
+  d_cache.clear();
+}
+
+/*********************                                                        */
+/* IncomingArcCounter
+ */
+IncomingArcCounter::IncomingArcCounter(bool skipVars, bool skipConstants)
+  : d_reachCount()
+  , d_skipVariables(skipVars)
+  , d_skipConstants(skipConstants)
+{}
+IncomingArcCounter::~IncomingArcCounter(){}
+
+void IncomingArcCounter::computeReachability(const std::vector<Node>& assertions){
+  std::vector<TNode> tovisit(assertions.begin(), assertions.end());
+
+  while(!tovisit.empty()){
+    TNode back = tovisit.back();
+    tovisit.pop_back();
+
+    bool skip = false;
+    switch(back.getMetaKind()){
+    case kind::metakind::CONSTANT:
+      skip = d_skipConstants;
+      break;
+    case kind::metakind::VARIABLE:
+      skip = d_skipVariables;
+      break;
+    default:
+      break;
+    }
+
+    if(skip) { continue; }
+    if(d_reachCount.find(back) != d_reachCount.end()){
+      d_reachCount[back] = 1 + d_reachCount[back];
+    }else{
+      d_reachCount[back] = 1;
+      for(TNode::iterator cit=back.begin(), end = back.end(); cit != end; ++cit){
+        tovisit.push_back(*cit);
+      }
+    }
+  }
+}
+
+void IncomingArcCounter::clear() {
+  d_reachCount.clear();
+}
+
+/*********************                                                        */
+/* ITECompressor
+ */
+ITECompressor::ITECompressor(ContainsTermITEVisitor* contains)
+  : d_contains(contains)
+  , d_assertions(NULL)
+  , d_incoming(true, true)
+{
+  Assert(d_contains != NULL);
+
+  d_true = NodeManager::currentNM()->mkConst<bool>(true);
+  d_false = NodeManager::currentNM()->mkConst<bool>(false);
+}
+
+ITECompressor::~ITECompressor() {
+  reset();
+}
+
+void ITECompressor::reset(){
+  d_incoming.clear();
+  d_compressed.clear();
+}
+
+void ITECompressor::garbageCollect(){
+  reset();
+}
+
+ITECompressor::Statistics::Statistics():
+  d_compressCalls("ite-simp::compressCalls", 0),
+  d_skolemsAdded("ite-simp::skolems", 0)
+{
+  smtStatisticsRegistry()->registerStat(&d_compressCalls);
+  smtStatisticsRegistry()->registerStat(&d_skolemsAdded);
+
+}
+ITECompressor::Statistics::~Statistics(){
+  smtStatisticsRegistry()->unregisterStat(&d_compressCalls);
+  smtStatisticsRegistry()->unregisterStat(&d_skolemsAdded);
+}
+
+Node ITECompressor::push_back_boolean(Node original, Node compressed){
+  Node rewritten = Rewriter::rewrite(compressed);
+  // There is a bug if the rewritter takes a pure boolean expression
+  // and changes its theory
+  if(rewritten.isConst()){
+    d_compressed[compressed] = rewritten;
+    d_compressed[original] = rewritten;
+    d_compressed[rewritten] = rewritten;
+    return rewritten;
+  }else if(d_compressed.find(rewritten) != d_compressed.end()){
+    Node res = d_compressed[rewritten];
+    d_compressed[original] = res;
+    d_compressed[compressed] = res;
+    return res;
+  }else if(rewritten.isVar() ||
+           (rewritten.getKind() == kind::NOT && rewritten[0].isVar())){
+    d_compressed[original] = rewritten;
+    d_compressed[compressed] = rewritten;
+    d_compressed[rewritten] = rewritten;
+    return rewritten;
+  }else{
+    NodeManager* nm = NodeManager::currentNM();
+    Node skolem = nm->mkSkolem("compress", nm->booleanType());
+    d_compressed[rewritten] = skolem;
+    d_compressed[original] = skolem;
+    d_compressed[compressed] = skolem;
+
+    Node iff = skolem.eqNode(rewritten);
+    d_assertions->push_back(iff);
+    ++(d_statistics.d_skolemsAdded);
+    return skolem;
+  }
+}
+
+bool ITECompressor::multipleParents(TNode c){
+  return d_incoming.lookupIncoming(c) >= 2;
+}
+
+Node ITECompressor::compressBooleanITEs(Node toCompress){
+  Assert(toCompress.getKind() == kind::ITE);
+  Assert(toCompress.getType().isBoolean());
+
+  if(!(toCompress[1] == d_false || toCompress[2] == d_false)){
+    Node cmpCnd = compressBoolean(toCompress[0]);
+    if(cmpCnd.isConst()){
+      Node branch = (cmpCnd == d_true) ? toCompress[1] : toCompress[2];
+      Node res = compressBoolean(branch);
+      d_compressed[toCompress] = res;
+      return res;
+    }else{
+      Node cmpThen = compressBoolean(toCompress[1]);
+      Node cmpElse = compressBoolean(toCompress[2]);
+      Node newIte = cmpCnd.iteNode(cmpThen, cmpElse);
+      if(multipleParents(toCompress)){
+        return push_back_boolean(toCompress, newIte);
+      }else{
+        return newIte;
+      }
+    }
+  }
+
+  NodeBuilder<> nb(kind::AND);
+  Node curr = toCompress;
+  while(curr.getKind() == kind::ITE &&
+        (curr[1] == d_false || curr[2] == d_false) &&
+        (!multipleParents(curr) || curr == toCompress)){
+
+    bool negateCnd = (curr[1] == d_false);
+    Node compressCnd = compressBoolean(curr[0]);
+    if(compressCnd.isConst()){
+      if(compressCnd.getConst<bool>() == negateCnd){
+        return push_back_boolean(toCompress, d_false);
+      }else{
+        // equivalent to true don't push back
+      }
+    }else{
+      Node pb = negateCnd ? compressCnd.notNode() : compressCnd;
+      nb << pb;
+    }
+    curr = negateCnd ? curr[2] : curr[1];
+  }
+  Assert(toCompress != curr);
+
+  nb << compressBoolean(curr);
+  Node res = nb.getNumChildren() == 1 ? nb[0] : (Node)nb;
+  return push_back_boolean(toCompress, res);
+}
+
+Node ITECompressor::compressTerm(Node toCompress){
+  if(toCompress.isConst() || toCompress.isVar()){
+    return toCompress;
+  }
+
+  if(d_compressed.find(toCompress) != d_compressed.end()){
+    return d_compressed[toCompress];
+  }
+  if(toCompress.getKind() == kind::ITE){
+    Node cmpCnd = compressBoolean(toCompress[0]);
+    if(cmpCnd.isConst()){
+      Node branch = (cmpCnd == d_true) ? toCompress[1] : toCompress[2];
+      Node res = compressTerm(toCompress);
+      d_compressed[toCompress] = res;
+      return res;
+    }else{
+      Node cmpThen = compressTerm(toCompress[1]);
+      Node cmpElse = compressTerm(toCompress[2]);
+      Node newIte = cmpCnd.iteNode(cmpThen, cmpElse);
+      d_compressed[toCompress] = newIte;
+      return newIte;
+    }
+  }
+
+  NodeBuilder<> nb(toCompress.getKind());
+
+  if(toCompress.getMetaKind() == kind::metakind::PARAMETERIZED) {
+    nb << (toCompress.getOperator());
+  }
+  for(Node::iterator it = toCompress.begin(), end = toCompress.end(); it != end; ++it){
+    nb << compressTerm(*it);
+  }
+  Node compressed = (Node)nb;
+  if(multipleParents(toCompress)){
+    d_compressed[toCompress] = compressed;
+  }
+  return compressed;
+}
+
+Node ITECompressor::compressBoolean(Node toCompress){
+  static int instance = 0;
+  ++instance;
+  if(toCompress.isConst() || toCompress.isVar()){
+    return toCompress;
+  }
+  if(d_compressed.find(toCompress) != d_compressed.end()){
+    return d_compressed[toCompress];
+  }else if(toCompress.getKind() == kind::ITE){
+    return compressBooleanITEs(toCompress);
+  }else{
+    bool ta = ite::isTheoryAtom(toCompress);
+    NodeBuilder<> nb(toCompress.getKind());
+    if(toCompress.getMetaKind() == kind::metakind::PARAMETERIZED) {
+      nb << (toCompress.getOperator());
+    }
+    for(Node::iterator it = toCompress.begin(), end = toCompress.end(); it != end; ++it){
+      Node pb = (ta) ? compressTerm(*it) : compressBoolean(*it);
+      nb << pb;
+    }
+    Node compressed = nb;
+    if(ta || multipleParents(toCompress)){
+      return push_back_boolean(toCompress, compressed);
+    }else{
+      return compressed;
+    }
+  }
+}
+
+
+
+bool ITECompressor::compress(std::vector<Node>& assertions){
+  reset();
+
+  d_assertions = &assertions;
+  d_incoming.computeReachability(assertions);
+
+  ++(d_statistics.d_compressCalls);
+  Chat() << "Computed reachability" << endl;
+
+  bool nofalses = true;
+  size_t original_size = assertions.size();
+  Chat () << "compressing " << original_size << endl;
+  for(size_t i = 0; i < original_size && nofalses; ++i){
+    Node assertion = assertions[i];
+    Node compressed =  compressBoolean(assertion);
+    Node rewritten = Rewriter::rewrite(compressed);
+    assertions[i] = rewritten;
+    Assert(!d_contains->containsTermITE(rewritten));
+
+    nofalses = (rewritten != d_false);
+  }
+
+  d_assertions = NULL;
+
+  return nofalses;
+}
+
+TermITEHeightCounter::TermITEHeightCounter()
+  :d_termITEHeight()
+{}
+
+TermITEHeightCounter::~TermITEHeightCounter(){}
+
+void TermITEHeightCounter::clear(){
+  d_termITEHeight.clear();
+}
+
+size_t TermITEHeightCounter::cache_size() const{
+  return d_termITEHeight.size();
+}
+
+namespace ite {
+struct TITEHStackElement {
+  TNode curr;
+  unsigned pos;
+  uint32_t maxChildHeight;
+  TITEHStackElement() : curr(), pos(0), maxChildHeight(0) {}
+  TITEHStackElement(TNode c) : curr(c), pos(0), maxChildHeight(0) {}
+};
+} /* namespace ite */
+
+uint32_t TermITEHeightCounter::termITEHeight(TNode e){
+
+  if(ite::triviallyContainsNoTermITEs(e)){ return 0; }
+
+  NodeCountMap::const_iterator end = d_termITEHeight.end();
+  NodeCountMap::const_iterator tmp_it = d_termITEHeight.find(e);
+  if(tmp_it != end){
+    return (*tmp_it).second;
+  }
+
+
+  uint32_t returnValue = 0;
+  // This is initially 0 as the very first call this is included in the max,
+  // but this has no effect.
+  std::vector<ite::TITEHStackElement> stack;
+  stack.push_back(ite::TITEHStackElement(e));
+  while(!stack.empty()){
+    ite::TITEHStackElement& top = stack.back();
+    top.maxChildHeight = std::max(top.maxChildHeight, returnValue);
+    TNode curr = top.curr;
+    if(top.pos >= curr.getNumChildren()){
+      // done with the current node
+      returnValue = top.maxChildHeight + (ite::isTermITE(curr) ? 1 : 0);
+      d_termITEHeight[curr] = returnValue;
+      stack.pop_back();
+      continue;
+    }else{
+      if(top.pos == 0 && curr.getKind() == kind::ITE){
+        ++top.pos;
+        returnValue = 0;
+        continue;
+      }
+      // this is someone's child
+      TNode child = curr[top.pos];
+      ++top.pos;
+      if(ite::triviallyContainsNoTermITEs(child)){
+        returnValue = 0;
+      }else{
+        tmp_it = d_termITEHeight.find(child);
+        if(tmp_it != end){
+          returnValue = (*tmp_it).second;
+        }else{
+          stack.push_back(ite::TITEHStackElement(child));
+        }
+      }
+    }
+  }
+  return returnValue;
+}
+
+
+
+ITESimplifier::ITESimplifier(ContainsTermITEVisitor* contains)
+  : d_containsVisitor(contains)
+  , d_termITEHeight()
+  , d_constantLeaves()
+  , d_allocatedConstantLeaves()
+  , d_citeEqConstApplications(0)
+  , d_constantIteEqualsConstantCache()
+  , d_replaceOverCache()
+  , d_replaceOverTermIteCache()
+  , d_leavesConstCache()
+  , d_simpConstCache()
+  , d_simpContextCache()
+  , d_simpITECache()
+{
+  Assert(d_containsVisitor != NULL);
+  d_true = NodeManager::currentNM()->mkConst<bool>(true);
+  d_false = NodeManager::currentNM()->mkConst<bool>(false);
+}
+
+ITESimplifier::~ITESimplifier() {
+  clearSimpITECaches();
+  Assert(d_constantLeaves.empty());
+  Assert(d_allocatedConstantLeaves.empty());
+}
+
+bool ITESimplifier::leavesAreConst(TNode e){
+  return leavesAreConst(e, theory::Theory::theoryOf(e));
+}
+
+void ITESimplifier::clearSimpITECaches(){
+  Chat() << "clear ite caches " << endl;
+  for(size_t i = 0, N = d_allocatedConstantLeaves.size(); i < N; ++i){
+    NodeVec* curr = d_allocatedConstantLeaves[i];
+    delete curr;
+  }
+  d_citeEqConstApplications = 0;
+  d_constantLeaves.clear();
+  d_allocatedConstantLeaves.clear();
+  d_termITEHeight.clear();
+  d_constantIteEqualsConstantCache.clear();
+  d_replaceOverCache.clear();
+  d_replaceOverTermIteCache.clear();
+  d_simpITECache.clear();
+  d_simpVars.clear();
+  d_simpConstCache.clear();
+  d_leavesConstCache.clear();
+  d_simpContextCache.clear();
+}
+
+bool ITESimplifier::doneALotOfWorkHeuristic() const {
+  static const size_t SIZE_BOUND = 1000;
+  Chat() << "d_citeEqConstApplications size " << d_citeEqConstApplications << endl;
+  return (d_citeEqConstApplications > SIZE_BOUND);
+}
+
+ITESimplifier::Statistics::Statistics():
+  d_maxNonConstantsFolded("ite-simp::maxNonConstantsFolded", 0),
+  d_unexpected("ite-simp::unexpected", 0),
+  d_unsimplified("ite-simp::unsimplified", 0),
+  d_exactMatchFold("ite-simp::exactMatchFold", 0),
+  d_binaryPredFold("ite-simp::binaryPredFold", 0),
+  d_specialEqualityFolds("ite-simp::specialEqualityFolds", 0),
+  d_simpITEVisits("ite-simp::simpITE.visits", 0),
+  d_inSmaller("ite-simp::inSmaller")
+{
+  smtStatisticsRegistry()->registerStat(&d_maxNonConstantsFolded);
+  smtStatisticsRegistry()->registerStat(&d_unexpected);
+  smtStatisticsRegistry()->registerStat(&d_unsimplified);
+  smtStatisticsRegistry()->registerStat(&d_exactMatchFold);
+  smtStatisticsRegistry()->registerStat(&d_binaryPredFold);
+  smtStatisticsRegistry()->registerStat(&d_specialEqualityFolds);
+  smtStatisticsRegistry()->registerStat(&d_simpITEVisits);
+  smtStatisticsRegistry()->registerStat(&d_inSmaller);
+}
+
+ITESimplifier::Statistics::~Statistics(){
+  smtStatisticsRegistry()->unregisterStat(&d_maxNonConstantsFolded);
+  smtStatisticsRegistry()->unregisterStat(&d_unexpected);
+  smtStatisticsRegistry()->unregisterStat(&d_unsimplified);
+  smtStatisticsRegistry()->unregisterStat(&d_exactMatchFold);
+  smtStatisticsRegistry()->unregisterStat(&d_binaryPredFold);
+  smtStatisticsRegistry()->unregisterStat(&d_specialEqualityFolds);
+  smtStatisticsRegistry()->unregisterStat(&d_simpITEVisits);
+  smtStatisticsRegistry()->unregisterStat(&d_inSmaller);
+}
+
+bool ITESimplifier::isConstantIte(TNode e){
+  if(e.isConst()){
+    return true;
+  }else if(ite::isTermITE(e)){
+    NodeVec* constants = computeConstantLeaves(e);
+    return constants != NULL;
+  }else{
+    return false;
+  }
+}
+
+ITESimplifier::NodeVec* ITESimplifier::computeConstantLeaves(TNode ite){
+  Assert(ite::isTermITE(ite));
+  ConstantLeavesMap::const_iterator it = d_constantLeaves.find(ite);
+  ConstantLeavesMap::const_iterator end = d_constantLeaves.end();
+  if(it != end){
+    return (*it).second;
+  }
+  TNode thenB = ite[1];
+  TNode elseB = ite[2];
+
+  // special case 2 constant children
+  if(thenB.isConst() && elseB.isConst()){
+    NodeVec* pair = new NodeVec(2);
+    d_allocatedConstantLeaves.push_back(pair);
+
+    (*pair)[0] = std::min(thenB, elseB);
+    (*pair)[1] = std::max(thenB, elseB);
+    d_constantLeaves[ite] = pair;
+    return pair;
+  }
+  // At least 1 is an ITE
+  if(!(thenB.isConst() || thenB.getKind() == kind::ITE) ||
+     !(elseB.isConst() || elseB.getKind() == kind::ITE)){
+    // Cannot be a termITE tree
+    d_constantLeaves[ite] = NULL;
+    return NULL;
+  }
+
+  // At least 1 is not a constant
+  TNode definitelyITE = thenB.isConst() ? elseB : thenB;
+  TNode maybeITE = thenB.isConst() ? thenB : elseB;
+
+  NodeVec* defChildren = computeConstantLeaves(definitelyITE);
+  if(defChildren == NULL){
+    d_constantLeaves[ite] = NULL;
+    return NULL;
+  }
+
+  NodeVec scratch;
+  NodeVec* maybeChildren = NULL;
+  if(maybeITE.getKind() == kind::ITE){
+    maybeChildren = computeConstantLeaves(maybeITE);
+  }else{
+    scratch.push_back(maybeITE);
+    maybeChildren = &scratch;
+  }
+  if(maybeChildren == NULL){
+    d_constantLeaves[ite] = NULL;
+    return NULL;
+  }
+
+  NodeVec* both = new NodeVec(defChildren->size()+maybeChildren->size());
+  d_allocatedConstantLeaves.push_back(both);
+  NodeVec::iterator newEnd;
+  newEnd = std::set_union(defChildren->begin(), defChildren->end(),
+                          maybeChildren->begin(), maybeChildren->end(),
+                          both->begin());
+  both->resize(newEnd - both->begin());
+  d_constantLeaves[ite] = both;
+  return both;
+}
+
+// This is uncached! Better for protoyping or getting limited size examples
+struct IteTreeSearchData{
+  set<Node> visited;
+  set<Node> constants;
+  set<Node> nonConstants;
+  int maxConstants;
+  int maxNonconstants;
+  int maxDepth;
+  bool failure;
+  IteTreeSearchData()
+    : maxConstants(-1), maxNonconstants(-1), maxDepth(-1), failure(false)
+  {}
+};
+void iteTreeSearch(Node e, int depth, IteTreeSearchData& search){
+  if(search.maxDepth >= 0 && depth > search.maxDepth){
+    search.failure = true;
+  }
+  if(search.failure){
+    return;
+  }
+  if(search.visited.find(e) != search.visited.end()){
+    return;
+  }else{
+    search.visited.insert(e);
+  }
+
+  if(e.isConst()){
+    search.constants.insert(e);
+    if(search.maxConstants >= 0 &&
+       search.constants.size() > (unsigned)search.maxConstants){
+      search.failure = true;
+    }
+  }else if(e.getKind() == kind::ITE){
+    iteTreeSearch(e[1], depth+1, search);
+    iteTreeSearch(e[2], depth+1, search);
+  }else{
+    search.nonConstants.insert(e);
+    if(search.maxNonconstants >= 0 &&
+       search.nonConstants.size() > (unsigned)search.maxNonconstants){
+      search.failure = true;
+    }
+  }
+}
+
+Node ITESimplifier::replaceOver(Node n, Node replaceWith, Node simpVar){
+  if(n == simpVar){
+    return replaceWith;
+  }else if(n.getNumChildren() == 0){
+    return n;
+  }
+  Assert(n.getNumChildren() > 0);
+  Assert(!n.isVar());
+
+  pair<Node, Node> p = make_pair(n, replaceWith);
+  if(d_replaceOverCache.find(p) != d_replaceOverCache.end()){
+    return d_replaceOverCache[p];
+  }
+
+  NodeBuilder<> builder(n.getKind());
+  if (n.getMetaKind() == kind::metakind::PARAMETERIZED) {
+    builder << n.getOperator();
+  }
+  unsigned i = 0;
+  for (; i < n.getNumChildren(); ++ i) {
+    Node newChild = replaceOver(n[i], replaceWith, simpVar);
+    builder << newChild;
+  }
+  // Mark the substitution and continue
+  Node result = builder;
+  d_replaceOverCache[p] = result;
+  return result;
+}
+
+Node ITESimplifier::replaceOverTermIte(Node e, Node simpAtom, Node simpVar){
+  if(e.getKind() == kind::ITE){
+    pair<Node, Node> p = make_pair(e, simpAtom);
+    if(d_replaceOverTermIteCache.find(p) != d_replaceOverTermIteCache.end()){
+      return d_replaceOverTermIteCache[p];
+    }
+    Assert(!e.getType().isBoolean());
+    Node cnd = e[0];
+    Node newThen = replaceOverTermIte(e[1], simpAtom, simpVar);
+    Node newElse = replaceOverTermIte(e[2], simpAtom, simpVar);
+    Node newIte = cnd.iteNode(newThen, newElse);
+    d_replaceOverTermIteCache[p] = newIte;
+    return newIte;
+  }else{
+    return replaceOver(simpAtom, e, simpVar);
+  }
+}
+
+Node ITESimplifier::attemptLiftEquality(TNode atom){
+  if(atom.getKind() == kind::EQUAL){
+    TNode left = atom[0];
+    TNode right = atom[1];
+    if((left.getKind() == kind::ITE || right.getKind() == kind::ITE)&&
+       !(left.getKind() == kind::ITE && right.getKind() == kind::ITE)){
+
+      // exactly 1 is an ite
+      TNode ite = left.getKind() == kind::ITE ? left :right;
+      TNode notIte = left.getKind() == kind::ITE ? right : left;
+
+      if(notIte == ite[1]){
+        ++(d_statistics.d_exactMatchFold);
+        return ite[0].iteNode(d_true, notIte.eqNode(ite[2]));
+      }else if(notIte == ite[2]){
+        ++(d_statistics.d_exactMatchFold);
+        return ite[0].iteNode(notIte.eqNode(ite[1]), d_true);
+      }
+      if(notIte.isConst() &&
+         (ite[1].isConst() || ite[2].isConst())){
+        ++(d_statistics.d_exactMatchFold);
+        return ite[0].iteNode(notIte.eqNode(ite[1]),  notIte.eqNode(ite[2]));
+      }
+    }
+  }
+
+  // try a similar more relaxed version for non-equality operators
+  if(atom.getMetaKind() == kind::metakind::OPERATOR &&
+     atom.getNumChildren() == 2 &&
+     !atom[1].getType().isBoolean()){
+
+    TNode left = atom[0];
+    TNode right = atom[1];
+    if( (left.getKind() == kind::ITE || right.getKind() == kind::ITE)&&
+       !(left.getKind() == kind::ITE && right.getKind() == kind::ITE)){
+      // exactly 1 is an ite
+      bool leftIsIte = left.getKind() == kind::ITE;
+      Node ite = leftIsIte ? left :right;
+      Node notIte = leftIsIte ? right : left;
+
+      if(notIte.isConst()){
+        IteTreeSearchData search;
+        search.maxNonconstants = 2;
+        iteTreeSearch(ite, 0, search);
+        if(!search.failure){
+          d_statistics.d_maxNonConstantsFolded.maxAssign(search.nonConstants.size());
+          Debug("ite::simpite") << "used " << search.nonConstants.size() << " nonconstants" << endl;
+          NodeManager* nm = NodeManager::currentNM();
+          Node simpVar = getSimpVar(notIte.getType());
+          TNode newLeft = leftIsIte  ? simpVar : notIte;
+          TNode newRight = leftIsIte ? notIte : simpVar;
+          Node newAtom = nm->mkNode(atom.getKind(), newLeft, newRight);
+
+          ++(d_statistics.d_binaryPredFold);
+          return replaceOverTermIte(ite, newAtom, simpVar);
+        }
+      }
+    }
+  }
+
+  // TODO "This is way too tailored. Must generalize!"
+  if(atom.getKind() == kind::EQUAL &&
+     atom.getNumChildren() == 2 &&
+     ite::isTermITE(atom[0]) &&
+     atom[1].getKind() == kind::MULT &&
+     atom[1].getNumChildren() == 2 &&
+     atom[1][0].isConst() &&
+     atom[1][0].getConst<Rational>().isNegativeOne() &&
+     ite::isTermITE(atom[1][1]) &&
+     d_termITEHeight.termITEHeight(atom[0]) == 1 &&
+     d_termITEHeight.termITEHeight(atom[1][1]) == 1 &&
+     (atom[0][1].isConst() || atom[0][2].isConst()) &&
+     (atom[1][1][1].isConst() || atom[1][1][2].isConst()) ){
+    // expand all 4 cases
+
+    Node negOne = atom[1][0];
+
+    Node lite = atom[0];
+    Node lC = lite[0];
+    Node lT = lite[1];
+    Node lE = lite[2];
+
+    NodeManager* nm = NodeManager::currentNM();
+    Node negRite = atom[1][1];
+    Node rC = negRite[0];
+    Node rT = nm->mkNode(kind::MULT, negOne, negRite[1]);
+    Node rE = nm->mkNode(kind::MULT, negOne, negRite[2]);
+
+    // (ite lC lT lE) = (ite rC rT rE)
+    // (ite lc (= lT (ite rC rT rE) (= lE (ite rC rT rE))))
+    // (ite lc (ite rC (= lT rT) (= lT rE))
+    //         (ite rC (= lE rT) (= lE rE)))
+
+    Node eqTT = lT.eqNode(rT);
+    Node eqTE = lT.eqNode(rE);
+    Node eqET = lE.eqNode(rT);
+    Node eqEE = lE.eqNode(rE);
+    Node thenLC = rC.iteNode(eqTT, eqTE);
+    Node elseLC = rC.iteNode(eqET, eqEE);
+    Node newIte = lC.iteNode(thenLC, elseLC);
+
+    ++(d_statistics.d_specialEqualityFolds);
+    return newIte;
+  }
+  return Node::null();
+}
+
+// Interesting classes of atoms:
+// 2. Contains constants and 1 constant term ite
+// 3. Contains 2 constant term ites
+Node ITESimplifier::transformAtom(TNode atom){
+  if(! d_containsVisitor->containsTermITE(atom)){
+    if(atom.getKind() == kind::EQUAL &&
+       atom[0].isConst() && atom[1].isConst()){
+      // constant equality
+      return NodeManager::currentNM()->mkConst<bool>(atom[0] == atom[1]);
+    }
+    return Node::null();
+  }else{
+    Node acr = attemptConstantRemoval(atom);
+    if(!acr.isNull()){
+      return acr;
+    }
+    // Node ale = attemptLiftEquality(atom);
+    // if(!ale.isNull()){
+    //   //return ale;
+    // }
+    return Node::null();
+  }
+}
+
+static unsigned numBranches = 0;
+static unsigned numFalseBranches = 0;
+static unsigned itesMade = 0;
+
+Node ITESimplifier::constantIteEqualsConstant(TNode cite, TNode constant){
+  static int instance = 0;
+  ++instance;
+  Debug("ite::constantIteEqualsConstant") << instance << "constantIteEqualsConstant("<<cite << ", " << constant<<")"<< endl;
+  if(cite.isConst()){
+    Node res = (cite == constant) ? d_true : d_false;
+    Debug("ite::constantIteEqualsConstant") << instance << "->" << res << endl;
+    return res;
+  }
+  std::pair<Node,Node> pair = make_pair(cite, constant);
+
+  NodePairMap::const_iterator eq_pos = d_constantIteEqualsConstantCache.find(pair);
+  if(eq_pos != d_constantIteEqualsConstantCache.end()){
+    Debug("ite::constantIteEqualsConstant") << instance << "->" << (*eq_pos).second << endl;
+    return (*eq_pos).second;
+  }
+
+  ++d_citeEqConstApplications;
+
+  NodeVec* leaves = computeConstantLeaves(cite);
+  Assert(leaves != NULL);
+  if(std::binary_search(leaves->begin(), leaves->end(), constant)){
+    if(leaves->size() == 1){
+      // probably unreachable
+      d_constantIteEqualsConstantCache[pair] = d_true;
+      Debug("ite::constantIteEqualsConstant") << instance << "->" << d_true << endl;
+      return d_true;
+    }else{
+      Assert(cite.getKind() == kind::ITE);
+      TNode cnd = cite[0];
+      TNode tB = cite[1];
+      TNode fB = cite[2];
+      Node tEqs = constantIteEqualsConstant(tB, constant);
+      Node fEqs = constantIteEqualsConstant(fB, constant);
+      Node boolIte = cnd.iteNode(tEqs, fEqs);
+      if(!(tEqs.isConst() || fEqs.isConst())){
+        ++numBranches;
+      }
+      if(!(tEqs == d_false || fEqs == d_false)){
+        ++numFalseBranches;
+      }
+      ++itesMade;
+      d_constantIteEqualsConstantCache[pair] = boolIte;
+      //Debug("ite::constantIteEqualsConstant") << instance << "->" << boolIte << endl;
+      return boolIte;
+    }
+  }else{
+    d_constantIteEqualsConstantCache[pair] = d_false;
+    Debug("ite::constantIteEqualsConstant") << instance << "->" << d_false << endl;
+    return d_false;
+  }
+}
+
+
+Node ITESimplifier::intersectConstantIte(TNode lcite, TNode rcite){
+  // intersect the constant ite trees lcite and rcite
+
+  if(lcite.isConst() || rcite.isConst()){
+    bool lIsConst = lcite.isConst();
+    TNode constant = lIsConst ? lcite : rcite;
+    TNode cite = lIsConst ? rcite : lcite;
+
+    (d_statistics.d_inSmaller)<< 1;
+    unsigned preItesMade = itesMade;
+    unsigned preNumBranches = numBranches;
+    unsigned preNumFalseBranches = numFalseBranches;
+    Node bterm = constantIteEqualsConstant(cite, constant);
+    Debug("intersectConstantIte")
+      << (numBranches - preNumBranches)
+      << " " << (numFalseBranches - preNumFalseBranches)
+      << " " << (itesMade - preItesMade) << endl;
+    return bterm;
+  }
+  Assert(lcite.getKind() == kind::ITE);
+  Assert(rcite.getKind() == kind::ITE);
+
+  NodeVec* leftValues = computeConstantLeaves(lcite);
+  NodeVec* rightValues = computeConstantLeaves(rcite);
+
+  uint32_t smaller = std::min(leftValues->size(), rightValues->size());
+
+  (d_statistics.d_inSmaller)<< smaller;
+  NodeVec intersection(smaller, Node::null());
+  NodeVec::iterator newEnd;
+  newEnd = std::set_intersection(leftValues->begin(), leftValues->end(),
+                                 rightValues->begin(), rightValues->end(),
+                                 intersection.begin());
+  intersection.resize(newEnd - intersection.begin());
+  if(intersection.empty()){
+    return d_false;
+  }else{
+    NodeBuilder<> nb(kind::OR);
+    NodeVec::const_iterator it = intersection.begin(), end=intersection.end();
+    for(; it != end; ++it){
+      Node inBoth = *it;
+      Node lefteq = constantIteEqualsConstant(lcite, inBoth);
+      Node righteq = constantIteEqualsConstant(rcite, inBoth);
+      Node bothHold = lefteq.andNode(righteq);
+      nb << bothHold;
+    }
+    Node result = (nb.getNumChildren() > 1) ? (Node)nb : nb[0];
+    return result;
+  }
+}
+
+
+Node ITESimplifier::attemptEagerRemoval(TNode atom){
+  if(atom.getKind() == kind::EQUAL){
+    TNode left = atom[0];
+    TNode right = atom[1];
+    if((left.isConst() &&
+        right.getKind() == kind::ITE && isConstantIte(right)) ||
+       (right.isConst() &&
+        left.getKind() == kind::ITE && isConstantIte(left))){
+      TNode constant = left.isConst() ? left : right;
+      TNode cite = left.isConst() ? right : left;
+
+      std::pair<Node,Node> pair = make_pair(cite, constant);
+      NodePairMap::const_iterator eq_pos = d_constantIteEqualsConstantCache.find(pair);
+      if(eq_pos != d_constantIteEqualsConstantCache.end()){
+        Node ret = (*eq_pos).second;
+        if(ret.isConst()){
+          return ret;
+        }else{
+          return Node::null();
+        }
+      }
+
+      NodeVec* leaves = computeConstantLeaves(cite);
+      Assert(leaves != NULL);
+      if(!std::binary_search(leaves->begin(), leaves->end(), constant)){
+        std::pair<Node,Node> pair = make_pair(cite, constant);
+        d_constantIteEqualsConstantCache[pair] = d_false;
+        return d_false;
+      }
+    }
+  }
+  return Node::null();
+}
+
+Node ITESimplifier::attemptConstantRemoval(TNode atom){
+  if(atom.getKind() == kind::EQUAL){
+    TNode left = atom[0];
+    TNode right = atom[1];
+    if(isConstantIte(left) && isConstantIte(right)){
+      return intersectConstantIte(left, right);
+    }
+  }
+  return Node::null();
+}
+
+
+bool ITESimplifier::leavesAreConst(TNode e, TheoryId tid)
+{
+  Assert((e.getKind() == kind::ITE && !e.getType().isBoolean()) ||
+         Theory::theoryOf(e) != THEORY_BOOL);
+  if (e.isConst()) {
+    return true;
+  }
+
+  hash_map<Node, bool, NodeHashFunction>::iterator it;
+  it = d_leavesConstCache.find(e);
+  if (it != d_leavesConstCache.end()) {
+    return (*it).second;
+  }
+
+  if (!containsTermITE(e) && Theory::isLeafOf(e, tid)) {
+    d_leavesConstCache[e] = false;
+    return false;
+  }
+
+  Assert(e.getNumChildren() > 0);
+  size_t k = 0, sz = e.getNumChildren();
+
+  if (e.getKind() == kind::ITE) {
+    k = 1;
+  }
+
+  for (; k < sz; ++k) {
+    if (!leavesAreConst(e[k], tid)) {
+      d_leavesConstCache[e] = false;
+      return false;
+    }
+  }
+  d_leavesConstCache[e] = true;
+  return true;
+}
+
+
+Node ITESimplifier::simpConstants(TNode simpContext, TNode iteNode, TNode simpVar)
+{
+  NodePairMap::iterator it;
+  it = d_simpConstCache.find(pair<Node, Node>(simpContext,iteNode));
+  if (it != d_simpConstCache.end()) {
+    return (*it).second;
+  }
+
+  if (iteNode.getKind() == kind::ITE) {
+    NodeBuilder<> builder(kind::ITE);
+    builder << iteNode[0];
+    unsigned i = 1;
+    for (; i < iteNode.getNumChildren(); ++ i) {
+      Node n = simpConstants(simpContext, iteNode[i], simpVar);
+      if (n.isNull()) {
+        return n;
+      }
+      builder << n;
+    }
+    // Mark the substitution and continue
+    Node result = builder;
+    result = Rewriter::rewrite(result);
+    d_simpConstCache[pair<Node, Node>(simpContext, iteNode)] = result;
+    return result;
+  }
+
+  if (!containsTermITE(iteNode)) {
+    Node n = Rewriter::rewrite(simpContext.substitute(simpVar, iteNode));
+    d_simpConstCache[pair<Node, Node>(simpContext, iteNode)] = n;
+    return n;
+  }
+
+  Node iteNode2;
+  Node simpVar2;
+  d_simpContextCache.clear();
+  Node simpContext2 = createSimpContext(iteNode, iteNode2, simpVar2);
+  if (!simpContext2.isNull()) {
+    Assert(!iteNode2.isNull());
+    simpContext2 = simpContext.substitute(simpVar, simpContext2);
+    Node n = simpConstants(simpContext2, iteNode2, simpVar2);
+    if (n.isNull()) {
+      return n;
+    }
+    d_simpConstCache[pair<Node, Node>(simpContext, iteNode)] = n;
+    return n;
+  }
+  return Node();
+}
+
+
+Node ITESimplifier::getSimpVar(TypeNode t)
+{
+  std::hash_map<TypeNode, Node, TypeNode::HashFunction>::iterator it;
+  it = d_simpVars.find(t);
+  if (it != d_simpVars.end()) {
+    return (*it).second;
+  }
+  else {
+    Node var = NodeManager::currentNM()->mkSkolem("iteSimp", t, "is a variable resulting from ITE simplification");
+    d_simpVars[t] = var;
+    return var;
+  }
+}
+
+
+Node ITESimplifier::createSimpContext(TNode c, Node& iteNode, Node& simpVar)
+{
+  NodeMap::iterator it;
+  it = d_simpContextCache.find(c);
+  if (it != d_simpContextCache.end()) {
+    return (*it).second;
+  }
+
+  if (!containsTermITE(c)) {
+    d_simpContextCache[c] = c;
+    return c;
+  }
+
+  if (c.getKind() == kind::ITE && !c.getType().isBoolean()) {
+    // Currently only support one ite node in a simp context
+    // Return Null if more than one is found
+    if (!iteNode.isNull()) {
+      return Node();
+    }
+    simpVar = getSimpVar(c.getType());
+    if (simpVar.isNull()) {
+      return Node();
+    }
+    d_simpContextCache[c] = simpVar;
+    iteNode = c;
+    return simpVar;
+  }
+
+  NodeBuilder<> builder(c.getKind());
+  if (c.getMetaKind() == kind::metakind::PARAMETERIZED) {
+    builder << c.getOperator();
+  }
+  unsigned i = 0;
+  for (; i < c.getNumChildren(); ++ i) {
+    Node newChild = createSimpContext(c[i], iteNode, simpVar);
+    if (newChild.isNull()) {
+      return newChild;
+    }
+    builder << newChild;
+  }
+  // Mark the substitution and continue
+  Node result = builder;
+  d_simpContextCache[c] = result;
+  return result;
+}
+typedef std::hash_set<Node, NodeHashFunction> NodeSet;
+void countReachable_(Node x, Kind k, NodeSet& visited, uint32_t& reached){
+  if(visited.find(x) != visited.end()){
+    return;
+  }
+  visited.insert(x);
+  if(x.getKind() == k){
+    ++reached;
+  }
+  for(unsigned i =0, N=x.getNumChildren(); i < N; ++i){
+    countReachable_(x[i], k, visited, reached);
+  }
+}
+
+uint32_t countReachable(TNode x, Kind k){
+  NodeSet visited;
+  uint32_t reached = 0;
+  countReachable_(x, k, visited, reached);
+  return reached;
+}
+
+Node ITESimplifier::simpITEAtom(TNode atom)
+{
+  static int CVC4_UNUSED instance = 0;
+  Debug("ite::atom") << "still simplifying " << (++instance) << endl;
+  Node attempt = transformAtom(atom);
+  Debug("ite::atom") << "  finished " << instance << endl;
+  if(!attempt.isNull()){
+    Node rewritten = Rewriter::rewrite(attempt);
+    Debug("ite::print-success")
+      << instance << " "
+      << "rewriting " << countReachable(rewritten, kind::ITE)
+      <<  " from " <<  countReachable(atom, kind::ITE) << endl
+      << "\t rewritten " << rewritten << endl
+      << "\t input " << atom << endl;
+    return rewritten;
+  }
+
+  if (leavesAreConst(atom)) {
+    Node iteNode;
+    Node simpVar;
+    d_simpContextCache.clear();
+    Node simpContext = createSimpContext(atom, iteNode, simpVar);
+    if (!simpContext.isNull()) {
+      if (iteNode.isNull()) {
+        Assert(leavesAreConst(simpContext) && !containsTermITE(simpContext));
+        ++(d_statistics.d_unexpected);
+        Debug("ite::simpite") << instance << " "
+                              << "how about?" << atom << endl;
+        Debug("ite::simpite") << instance << " "
+                              << "\t" << simpContext << endl;
+        return Rewriter::rewrite(simpContext);
+      }
+      Node n = simpConstants(simpContext, iteNode, simpVar);
+      if (!n.isNull()) {
+        ++(d_statistics.d_unexpected);
+        Debug("ite::simpite") << instance << " "
+                              << "here?" << atom << endl;
+        Debug("ite::simpite") << instance << " "
+                              << "\t" << n << endl;
+        return n;
+      }
+    }
+  }
+  if(Debug.isOn("ite::simpite")){
+    if(countReachable(atom, kind::ITE) > 0){
+      Debug("ite::simpite") << instance << " "
+                            << "remaining " << atom << endl;
+    }
+  }
+  ++(d_statistics.d_unsimplified);
+  return atom;
+}
+
+
+struct preprocess_stack_element {
+  TNode node;
+  bool children_added;
+  preprocess_stack_element(TNode node)
+  : node(node), children_added(false) {}
+};/* struct preprocess_stack_element */
+
+
+Node ITESimplifier::simpITE(TNode assertion)
+{
+  // Do a topological sort of the subexpressions and substitute them
+  vector<preprocess_stack_element> toVisit;
+  toVisit.push_back(assertion);
+
+  static int call = 0;
+  ++call;
+  int iteration = 0;
+
+  while (!toVisit.empty())
+  {
+    iteration ++;
+    //cout << "call  " << call << " : " << iteration << endl;
+    // The current node we are processing
+    preprocess_stack_element& stackHead = toVisit.back();
+    TNode current = stackHead.node;
+
+    // If node has no ITE's or already in the cache we're done, pop from the stack
+    if (current.getNumChildren() == 0 ||
+        (Theory::theoryOf(current) != THEORY_BOOL && !containsTermITE(current))) {
+       d_simpITECache[current] = current;
+       ++(d_statistics.d_simpITEVisits);
+       toVisit.pop_back();
+       continue;
+    }
+
+    NodeMap::iterator find = d_simpITECache.find(current);
+    if (find != d_simpITECache.end()) {
+      toVisit.pop_back();
+      continue;
+    }
+
+    // Not yet substituted, so process
+    if (stackHead.children_added) {
+      // Children have been processed, so substitute
+      NodeBuilder<> builder(current.getKind());
+      if (current.getMetaKind() == kind::metakind::PARAMETERIZED) {
+        builder << current.getOperator();
+      }
+      for (unsigned i = 0; i < current.getNumChildren(); ++ i) {
+        Assert(d_simpITECache.find(current[i]) != d_simpITECache.end());
+        Node child = current[i];
+        Node childRes = d_simpITECache[current[i]];
+        builder << childRes;
+      }
+      // Mark the substitution and continue
+      Node result = builder;
+
+      // If this is an atom, we process it
+      if (Theory::theoryOf(result) != THEORY_BOOL &&
+          result.getType().isBoolean()) {
+        result = simpITEAtom(result);
+      }
+
+      // if(current != result && result.isConst()){
+      //   static int instance = 0;
+      //   //cout << instance << " " << result << current << endl;
+      // }
+
+      result = Rewriter::rewrite(result);
+      d_simpITECache[current] = result;
+      ++(d_statistics.d_simpITEVisits);
+      toVisit.pop_back();
+    } else {
+      // Mark that we have added the children if any
+      if (current.getNumChildren() > 0) {
+        stackHead.children_added = true;
+        // We need to add the children
+        for(TNode::iterator child_it = current.begin(); child_it != current.end(); ++ child_it) {
+          TNode childNode = *child_it;
+          NodeMap::iterator childFind = d_simpITECache.find(childNode);
+          if (childFind == d_simpITECache.end()) {
+            toVisit.push_back(childNode);
+          }
+        }
+      } else {
+        // No children, so we're done
+        d_simpITECache[current] = current;
+        ++(d_statistics.d_simpITEVisits);
+        toVisit.pop_back();
+      }
+    }
+  }
+  return d_simpITECache[assertion];
+}
+
+ITECareSimplifier::ITECareSimplifier()
+    : d_careSetsOutstanding(0)
+    , d_usedSets()
+{
+  d_true = NodeManager::currentNM()->mkConst<bool>(true);
+  d_false = NodeManager::currentNM()->mkConst<bool>(false);
+}
+
+ITECareSimplifier::~ITECareSimplifier(){
+  Assert(d_usedSets.empty());
+  Assert(d_careSetsOutstanding == 0);
+}
+
+void ITECareSimplifier::clear(){
+  Assert(d_usedSets.empty());
+  Assert(d_careSetsOutstanding == 0);
+}
+
+ITECareSimplifier::CareSetPtr ITECareSimplifier::getNewSet()
+{
+  if (d_usedSets.empty()) {
+    d_careSetsOutstanding++;
+    return ITECareSimplifier::CareSetPtr::mkNew(*this);
+  }
+  else {
+    ITECareSimplifier::CareSetPtr cs =
+        ITECareSimplifier::CareSetPtr::recycle(d_usedSets.back());
+    cs.getCareSet().clear();
+    d_usedSets.pop_back();
+    return cs;
+  }
+}
+
+
+void ITECareSimplifier::updateQueue(CareMap& queue,
+                                    TNode e,
+                                    ITECareSimplifier::CareSetPtr& careSet)
+{
+  CareMap::iterator it = queue.find(e), iend = queue.end();
+  if (it != iend) {
+    set<Node>& cs2 = (*it).second.getCareSet();
+    ITECareSimplifier::CareSetPtr csNew = getNewSet();
+    set_intersection(careSet.getCareSet().begin(),
+                     careSet.getCareSet().end(),
+                     cs2.begin(), cs2.end(),
+                     inserter(csNew.getCareSet(), csNew.getCareSet().begin()));
+    (*it).second = csNew;
+  }
+  else {
+    queue[e] = careSet;
+  }
+}
+
+
+Node ITECareSimplifier::substitute(TNode e, TNodeMap& substTable, TNodeMap& cache)
+{
+  TNodeMap::iterator it = cache.find(e), iend = cache.end();
+  if (it != iend) {
+    return it->second;
+  }
+
+  // do substitution?
+  it = substTable.find(e);
+  iend = substTable.end();
+  if (it != iend) {
+    Node result = substitute(it->second, substTable, cache);
+    cache[e] = result;
+    return result;
+  }
+
+  size_t sz = e.getNumChildren();
+  if (sz == 0) {
+    cache[e] = e;
+    return e;
+  }
+
+  NodeBuilder<> builder(e.getKind());
+  if (e.getMetaKind() == kind::metakind::PARAMETERIZED) {
+    builder << e.getOperator();
+  }
+  for (unsigned i = 0; i < e.getNumChildren(); ++ i) {
+    builder << substitute(e[i], substTable, cache);
+  }
+
+  Node result = builder;
+  // it = substTable.find(result);
+  // if (it != iend) {
+  //   result = substitute(it->second, substTable, cache);
+  // }
+  cache[e] = result;
+  return result;
+}
+
+
+Node ITECareSimplifier::simplifyWithCare(TNode e)
+{
+  TNodeMap substTable;
+
+  /* This extra block is to trigger the destructors for cs and cs2
+   * before starting garbage collection.
+   */
+  {
+    CareMap queue;
+    CareMap::iterator it;
+    ITECareSimplifier::CareSetPtr cs = getNewSet();
+    ITECareSimplifier::CareSetPtr cs2;
+    queue[e] = cs;
+
+    TNode v;
+    bool done;
+    unsigned i;
+
+    while (!queue.empty()) {
+      it = queue.end();
+      --it;
+      v = it->first;
+      cs = it->second;
+      set<Node>& css = cs.getCareSet();
+      queue.erase(v);
+
+      done = false;
+      set<Node>::iterator iCare, iCareEnd = css.end();
+
+      switch (v.getKind()) {
+        case kind::ITE: {
+          iCare = css.find(v[0]);
+          if (iCare != iCareEnd) {
+            Assert(substTable.find(v) == substTable.end());
+            substTable[v] = v[1];
+            updateQueue(queue, v[1], cs);
+            done = true;
+            break;
+          }
+          else {
+            iCare = css.find(v[0].negate());
+            if (iCare != iCareEnd) {
+              Assert(substTable.find(v) == substTable.end());
+              substTable[v] = v[2];
+              updateQueue(queue, v[2], cs);
+              done = true;
+              break;
+            }
+          }
+          updateQueue(queue, v[0], cs);
+          cs2 = getNewSet();
+          cs2.getCareSet() = css;
+          cs2.getCareSet().insert(v[0]);
+          updateQueue(queue, v[1], cs2);
+          cs2 = getNewSet();
+          cs2.getCareSet() = css;
+          cs2.getCareSet().insert(v[0].negate());
+          updateQueue(queue, v[2], cs2);
+          done = true;
+          break;
+        }
+        case kind::AND: {
+          for (i = 0; i < v.getNumChildren(); ++i) {
+            iCare = css.find(v[i].negate());
+            if (iCare != iCareEnd) {
+              Assert(substTable.find(v) == substTable.end());
+              substTable[v] = d_false;
+              done = true;
+              break;
+            }
+          }
+          if (done) break;
+
+          Assert(v.getNumChildren() > 1);
+          updateQueue(queue, v[0], cs);
+          cs2 = getNewSet();
+          cs2.getCareSet() = css;
+          cs2.getCareSet().insert(v[0]);
+          for (i = 1; i < v.getNumChildren(); ++i) {
+            updateQueue(queue, v[i], cs2);
+          }
+          done = true;
+          break;
+        }
+        case kind::OR: {
+          for (i = 0; i < v.getNumChildren(); ++i) {
+            iCare = css.find(v[i]);
+            if (iCare != iCareEnd) {
+              Assert(substTable.find(v) == substTable.end());
+              substTable[v] = d_true;
+              done = true;
+              break;
+            }
+          }
+          if (done) break;
+
+          Assert(v.getNumChildren() > 1);
+          updateQueue(queue, v[0], cs);
+          cs2 = getNewSet();
+          cs2.getCareSet() = css;
+          cs2.getCareSet().insert(v[0].negate());
+          for (i = 1; i < v.getNumChildren(); ++i) {
+            updateQueue(queue, v[i], cs2);
+          }
+          done = true;
+          break;
+        }
+        default:
+          break;
+      }
+
+      if (done) {
+        continue;
+      }
+
+      for (unsigned i = 0; i < v.getNumChildren(); ++i) {
+        updateQueue(queue, v[i], cs);
+      }
+    }
+  }
+  /* Perform garbage collection. */
+  while (!d_usedSets.empty()) {
+    CareSetPtrVal* used = d_usedSets.back();
+    d_usedSets.pop_back();
+    Assert(used->safeToGarbageCollect());
+    delete used;
+    Assert(d_careSetsOutstanding > 0);
+    d_careSetsOutstanding--;
+  }
+
+  TNodeMap cache;
+  return substitute(e, substTable, cache);
+}
+
+ITECareSimplifier::CareSetPtr ITECareSimplifier::CareSetPtr::mkNew(
+    ITECareSimplifier& simp) {
+  CareSetPtrVal* val = new CareSetPtrVal(simp);
+  return CareSetPtr(val);
+}
+
+
+
+} /* namespace theory */
+} /* namespace CVC4 */
diff --git a/src/theory/ite_utilities.h b/src/theory/ite_utilities.h
new file mode 100644
index 0000000..98141d4
--- /dev/null
+++ b/src/theory/ite_utilities.h
@@ -0,0 +1,385 @@
+/*********************                                                        */
+/*! \file ite_utilities.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Simplifications for ITE expressions
+ **
+ ** This module implements preprocessing phases designed to simplify ITE
+ ** expressions.  Based on:
+ ** Kim, Somenzi, Jin.  Efficient Term-ITE Conversion for SMT.  FMCAD 2009.
+ ** Burch, Jerry.  Techniques for Verifying Superscalar Microprocessors.  DAC '96
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__ITE_UTILITIES_H
+#define __CVC4__ITE_UTILITIES_H
+
+#include <ext/hash_map>
+#include <ext/hash_set>
+#include <vector>
+
+#include "expr/node.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+
+class ContainsTermITEVisitor;
+class IncomingArcCounter;
+class TermITEHeightCounter;
+class ITECompressor;
+class ITESimplifier;
+class ITECareSimplifier;
+
+class ITEUtilities {
+public:
+  ITEUtilities(ContainsTermITEVisitor* containsVisitor);
+  ~ITEUtilities();
+
+  Node simpITE(TNode assertion);
+
+  bool simpIteDidALotOfWorkHeuristic() const;
+
+  /* returns false if an assertion is discovered to be equal to false. */
+  bool compress(std::vector<Node>& assertions);
+
+  Node simplifyWithCare(TNode e);
+
+  void clear();
+
+private:
+  ContainsTermITEVisitor* d_containsVisitor;
+  ITECompressor* d_compressor;
+  ITESimplifier* d_simplifier;
+  ITECareSimplifier* d_careSimp;
+};
+
+/**
+ * A caching visitor that computes whether a node contains a term ite.
+ */
+class ContainsTermITEVisitor {
+public:
+  ContainsTermITEVisitor();
+  ~ContainsTermITEVisitor();
+
+  /** returns true if a node contains a term ite. */
+  bool containsTermITE(TNode n);
+
+  /** Garbage collects the cache. */
+  void garbageCollect();
+
+  /** returns the size of the cache. */
+  size_t cache_size() const { return d_cache.size(); }
+
+private:
+  typedef std::hash_map<Node, bool, NodeHashFunction> NodeBoolMap;
+  NodeBoolMap d_cache;
+};
+
+class IncomingArcCounter {
+public:
+  IncomingArcCounter(bool skipVars = false, bool skipConstants = false);
+  ~IncomingArcCounter();
+  void computeReachability(const std::vector<Node>& assertions);
+
+  inline uint32_t lookupIncoming(Node n) const {
+    NodeCountMap::const_iterator it = d_reachCount.find(n);
+    if(it == d_reachCount.end()){
+      return 0;
+    }else{
+      return (*it).second;
+    }
+  }
+  void clear();
+private:
+  typedef std::hash_map<Node, uint32_t, NodeHashFunction> NodeCountMap;
+  NodeCountMap d_reachCount;
+
+  bool d_skipVariables;
+  bool d_skipConstants;
+};
+
+class TermITEHeightCounter {
+public:
+  TermITEHeightCounter();
+  ~TermITEHeightCounter();
+
+  /**
+   * Compute and [potentially] cache the termITEHeight() of e.
+   * The term ite height equals the maximum number of term ites
+   * encountered on any path from e to a leaf.
+   * Inductively:
+   *  - termITEHeight(leaves) = 0
+   *  - termITEHeight(e: term-ite(c, t, e) ) =
+   *     1 + max(termITEHeight(t), termITEHeight(e)) ; Don't include c
+   *  - termITEHeight(e not term ite) = max_{c in children(e)) (termITEHeight(c))
+   */
+  uint32_t termITEHeight(TNode e);
+
+  /** Clear the cache. */
+  void clear();
+
+  /** Size of the cache. */
+  size_t cache_size() const;
+
+private:
+  typedef std::hash_map<Node, uint32_t, NodeHashFunction> NodeCountMap;
+  NodeCountMap d_termITEHeight;
+}; /* class TermITEHeightCounter */
+
+/**
+ * A routine designed to undo the potentially large blow up
+ * due to expansion caused by the ite simplifier.
+ */
+class ITECompressor {
+public:
+  ITECompressor(ContainsTermITEVisitor* contains);
+  ~ITECompressor();
+
+  /* returns false if an assertion is discovered to be equal to false. */
+  bool compress(std::vector<Node>& assertions);
+
+  /* garbage Collects the compressor. */
+  void garbageCollect();
+
+private:
+
+  Node d_true; /* Copy of true. */
+  Node d_false; /* Copy of false. */
+  ContainsTermITEVisitor* d_contains;
+  std::vector<Node>* d_assertions;
+  IncomingArcCounter d_incoming;
+
+  typedef std::hash_map<Node, Node, NodeHashFunction> NodeMap;
+  NodeMap d_compressed;
+
+  void reset();
+
+  Node push_back_boolean(Node original, Node compressed);
+  bool multipleParents(TNode c);
+  Node compressBooleanITEs(Node toCompress);
+  Node compressTerm(Node toCompress);
+  Node compressBoolean(Node toCompress);
+
+  class Statistics {
+  public:
+    IntStat d_compressCalls;
+    IntStat d_skolemsAdded;
+    Statistics();
+    ~Statistics();
+  };
+  Statistics d_statistics;
+}; /* class ITECompressor */
+
+class ITESimplifier {
+public:
+  ITESimplifier(ContainsTermITEVisitor* d_containsVisitor);
+  ~ITESimplifier();
+
+  Node simpITE(TNode assertion);
+
+  bool doneALotOfWorkHeuristic() const;
+  void clearSimpITECaches();
+
+private:
+  Node d_true;
+  Node d_false;
+
+  ContainsTermITEVisitor* d_containsVisitor;
+  inline bool containsTermITE(TNode n) {
+    return d_containsVisitor->containsTermITE(n);
+  }
+  TermITEHeightCounter d_termITEHeight;
+  inline uint32_t termITEHeight(TNode e) {
+    return d_termITEHeight.termITEHeight(e);
+  }
+
+  // ConstantIte is a small inductive sublanguage:
+  //     constant
+  // or  termITE(cnd, ConstantIte, ConstantIte)
+  typedef std::vector<Node> NodeVec;
+  typedef std::hash_map<Node, NodeVec*, NodeHashFunction > ConstantLeavesMap;
+  ConstantLeavesMap d_constantLeaves;
+
+  // d_constantLeaves satisfies the following invariants:
+  // not containsTermITE(x) then !isKey(x)
+  // containsTermITE(x):
+  // - not isKey(x) then this value is uncomputed
+  // - d_constantLeaves[x] == NULL, then this contains a non-constant leaf
+  // - d_constantLeaves[x] != NULL, then this contains a sorted list of constant leaf
+  bool isConstantIte(TNode e);
+
+  /** If its not a constant and containsTermITE(ite),
+   * returns a sorted NodeVec of the leaves. */
+  NodeVec* computeConstantLeaves(TNode ite);
+
+  // Lists all of the vectors in d_constantLeaves for fast deletion.
+  std::vector<NodeVec*> d_allocatedConstantLeaves;
+
+
+  /* transforms */
+  Node transformAtom(TNode atom);
+  Node attemptConstantRemoval(TNode atom);
+  Node attemptLiftEquality(TNode atom);
+  Node attemptEagerRemoval(TNode atom);
+
+  // Given ConstantIte trees lcite and rcite,
+  // return a boolean expression equivalent to (= lcite rcite)
+  Node intersectConstantIte(TNode lcite, TNode rcite);
+
+  // Given ConstantIte tree cite and a constant c,
+  // return a boolean expression equivalent to (= lcite c)
+  Node constantIteEqualsConstant(TNode cite, TNode c);
+  uint32_t d_citeEqConstApplications;
+
+  typedef std::pair<Node, Node> NodePair;
+  struct NodePairHashFunction {
+    size_t operator () (const NodePair& pair) const {
+      size_t hash = 0;
+      hash = 0x9e3779b9 + NodeHashFunction().operator()(pair.first);
+      hash ^= 0x9e3779b9 + NodeHashFunction().operator()(pair.second) + (hash << 6) + (hash >> 2);
+      return hash;
+    }
+  };/* struct ITESimplifier::NodePairHashFunction */
+  typedef std::hash_map<NodePair, Node, NodePairHashFunction> NodePairMap;
+  NodePairMap d_constantIteEqualsConstantCache;
+  NodePairMap d_replaceOverCache;
+  NodePairMap d_replaceOverTermIteCache;
+  Node replaceOver(Node n, Node replaceWith, Node simpVar);
+  Node replaceOverTermIte(Node term, Node simpAtom, Node simpVar);
+
+  std::hash_map<Node, bool, NodeHashFunction> d_leavesConstCache;
+  bool leavesAreConst(TNode e, theory::TheoryId tid);
+  bool leavesAreConst(TNode e);
+
+  NodePairMap d_simpConstCache;
+  Node simpConstants(TNode simpContext, TNode iteNode, TNode simpVar);
+  std::hash_map<TypeNode, Node, TypeNode::HashFunction> d_simpVars;
+  Node getSimpVar(TypeNode t);
+
+  typedef std::hash_map<Node, Node, NodeHashFunction> NodeMap;
+  NodeMap d_simpContextCache;
+  Node createSimpContext(TNode c, Node& iteNode, Node& simpVar);
+
+  NodeMap d_simpITECache;
+  Node simpITEAtom(TNode atom);
+
+
+private:
+  class Statistics {
+  public:
+    IntStat d_maxNonConstantsFolded;
+    IntStat d_unexpected;
+    IntStat d_unsimplified;
+    IntStat d_exactMatchFold;
+    IntStat d_binaryPredFold;
+    IntStat d_specialEqualityFolds;
+    IntStat d_simpITEVisits;
+
+    HistogramStat<uint32_t> d_inSmaller;
+
+    Statistics();
+    ~Statistics();
+  };
+
+  Statistics d_statistics;
+};
+
+class ITECareSimplifier {
+public:
+  ITECareSimplifier();
+  ~ITECareSimplifier();
+
+  Node simplifyWithCare(TNode e);
+
+  void clear();
+private:
+
+  /**
+   * This should always equal the number of care sets allocated by
+   * this object - the number of these that have been deleted. This is
+   * initially 0 and should always be 0 at the *start* of
+   * ~ITECareSimplifier().
+   */
+  unsigned d_careSetsOutstanding;
+
+  Node d_true;
+  Node d_false;
+
+  typedef std::hash_map<TNode, Node, TNodeHashFunction> TNodeMap;
+
+  class CareSetPtr;
+  class CareSetPtrVal {
+   public:
+    bool safeToGarbageCollect() const { return d_refCount == 0; }
+   private:
+    friend class ITECareSimplifier::CareSetPtr;
+    ITECareSimplifier& d_iteSimplifier;
+    unsigned d_refCount;
+    std::set<Node> d_careSet;
+    CareSetPtrVal(ITECareSimplifier& simp)
+        : d_iteSimplifier(simp), d_refCount(1) {}
+  }; /* class ITECareSimplifier::CareSetPtrVal */
+
+  std::vector<CareSetPtrVal*> d_usedSets;
+  void careSetPtrGC(CareSetPtrVal* val) {
+    d_usedSets.push_back(val);
+  }
+
+  class CareSetPtr {
+    CareSetPtrVal* d_val;
+    CareSetPtr(CareSetPtrVal* val) : d_val(val) {}
+  public:
+    CareSetPtr() : d_val(NULL) {}
+    CareSetPtr(const CareSetPtr& cs) {
+      d_val = cs.d_val;
+      if (d_val != NULL) {
+        ++(d_val->d_refCount);
+      }
+    }
+    ~CareSetPtr() {
+      if (d_val != NULL && (--(d_val->d_refCount) == 0)) {
+        d_val->d_iteSimplifier.careSetPtrGC(d_val);
+      }
+    }
+    CareSetPtr& operator=(const CareSetPtr& cs) {
+      if (d_val != cs.d_val) {
+        if (d_val != NULL && (--(d_val->d_refCount) == 0)) {
+          d_val->d_iteSimplifier.careSetPtrGC(d_val);
+        }
+        d_val = cs.d_val;
+        if (d_val != NULL) {
+          ++(d_val->d_refCount);
+        }
+      }
+      return *this;
+    }
+    std::set<Node>& getCareSet() { return d_val->d_careSet; }
+
+    static CareSetPtr mkNew(ITECareSimplifier& simp);
+    static CareSetPtr recycle(CareSetPtrVal* val) {
+      Assert(val != NULL && val->d_refCount == 0);
+      val->d_refCount = 1;
+      return CareSetPtr(val);
+    }
+  }; /* class ITECareSimplifier::CareSetPtr */
+
+  CareSetPtr getNewSet();
+
+  typedef std::map<TNode, CareSetPtr> CareMap;
+  void updateQueue(CareMap& queue, TNode e, CareSetPtr& careSet);
+  Node substitute(TNode e, TNodeMap& substTable, TNodeMap& cache);
+};
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif
diff --git a/src/theory/logic_info.cpp b/src/theory/logic_info.cpp
new file mode 100644
index 0000000..0e4ccf0
--- /dev/null
+++ b/src/theory/logic_info.cpp
@@ -0,0 +1,580 @@
+/*********************                                                        */
+/*! \file logic_info.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A class giving information about a logic (group a theory modules
+ ** and configuration information)
+ **
+ ** A class giving information about a logic (group of theory modules and
+ ** configuration information).
+ **/
+#include "theory/logic_info.h"
+
+#include <string>
+#include <cstring>
+#include <sstream>
+
+#include "base/cvc4_assert.h"
+#include "expr/kind.h"
+
+
+using namespace std;
+using namespace CVC4::theory;
+
+namespace CVC4 {
+
+LogicInfo::LogicInfo() :
+  d_logicString(""),
+  d_theories(THEORY_LAST, false),
+  d_sharingTheories(0),
+  d_integers(true),
+  d_reals(true),
+  d_linear(true),// for now, "everything enabled" doesn't include non-linear arith
+  d_differenceLogic(false),
+  d_cardinalityConstraints(false),
+  d_locked(false) {
+
+  for(TheoryId id = THEORY_FIRST; id < THEORY_LAST; ++id) {
+    enableTheory(id);
+  }
+}
+
+LogicInfo::LogicInfo(std::string logicString) throw(IllegalArgumentException) :
+  d_logicString(""),
+  d_theories(THEORY_LAST, false),
+  d_sharingTheories(0),
+  d_integers(false),
+  d_reals(false),
+  d_linear(false),
+  d_differenceLogic(false),
+  d_cardinalityConstraints(false),
+  d_locked(false) {
+
+  setLogicString(logicString);
+  lock();
+}
+
+LogicInfo::LogicInfo(const char* logicString) throw(IllegalArgumentException) :
+  d_logicString(""),
+  d_theories(THEORY_LAST, false),
+  d_sharingTheories(0),
+  d_integers(false),
+  d_reals(false),
+  d_linear(false),
+  d_differenceLogic(false),
+  d_cardinalityConstraints(false),
+  d_locked(false) {
+
+  setLogicString(logicString);
+  lock();
+}
+
+/** Is sharing enabled for this logic? */
+bool LogicInfo::isSharingEnabled() const {
+  PrettyCheckArgument(d_locked, *this,
+                      "This LogicInfo isn't locked yet, and cannot be queried");
+  return d_sharingTheories > 1;
+}
+
+
+/** Is the given theory module active in this logic? */
+bool LogicInfo::isTheoryEnabled(theory::TheoryId theory) const {
+  PrettyCheckArgument(d_locked, *this,
+                      "This LogicInfo isn't locked yet, and cannot be queried");
+  return d_theories[theory];
+}
+
+/** Is this a quantified logic? */
+bool LogicInfo::isQuantified() const {
+  PrettyCheckArgument(d_locked, *this,
+                      "This LogicInfo isn't locked yet, and cannot be queried");
+  return isTheoryEnabled(theory::THEORY_QUANTIFIERS);
+}
+
+/** Is this the all-inclusive logic? */
+bool LogicInfo::hasEverything() const {
+  PrettyCheckArgument(d_locked, *this,
+                      "This LogicInfo isn't locked yet, and cannot be queried");
+  LogicInfo everything;
+  everything.lock();
+  return *this == everything;
+}
+
+/** Is this the all-exclusive logic?  (Here, that means propositional logic) */
+bool LogicInfo::hasNothing() const {
+  PrettyCheckArgument(d_locked, *this,
+                      "This LogicInfo isn't locked yet, and cannot be queried");
+  LogicInfo nothing("");
+  nothing.lock();
+  return *this == nothing;
+}
+
+bool LogicInfo::isPure(theory::TheoryId theory) const {
+  PrettyCheckArgument(d_locked, *this,
+                      "This LogicInfo isn't locked yet, and cannot be queried");
+  // the third and fourth conjucts are really just to rule out the misleading
+  // case where you ask isPure(THEORY_BOOL) and get true even in e.g. QF_LIA
+  return isTheoryEnabled(theory) && !isSharingEnabled() &&
+      ( !isTrueTheory(theory) || d_sharingTheories == 1 ) &&
+      ( isTrueTheory(theory) || d_sharingTheories == 0 );
+}
+
+bool LogicInfo::areIntegersUsed() const {
+  PrettyCheckArgument(d_locked, *this,
+                      "This LogicInfo isn't locked yet, and cannot be queried");
+  PrettyCheckArgument(
+      isTheoryEnabled(theory::THEORY_ARITH), *this,
+      "Arithmetic not used in this LogicInfo; cannot ask whether integers are used");
+  return d_integers;
+}
+
+bool LogicInfo::areRealsUsed() const {
+  PrettyCheckArgument(d_locked, *this,
+                      "This LogicInfo isn't locked yet, and cannot be queried");
+  PrettyCheckArgument(
+      isTheoryEnabled(theory::THEORY_ARITH), *this,
+      "Arithmetic not used in this LogicInfo; cannot ask whether reals are used");
+  return d_reals;
+}
+
+bool LogicInfo::isLinear() const {
+  PrettyCheckArgument(d_locked, *this,
+                      "This LogicInfo isn't locked yet, and cannot be queried");
+  PrettyCheckArgument(
+      isTheoryEnabled(theory::THEORY_ARITH), *this,
+      "Arithmetic not used in this LogicInfo; cannot ask whether it's linear");
+  return d_linear || d_differenceLogic;
+}
+
+bool LogicInfo::isDifferenceLogic() const {
+  PrettyCheckArgument(d_locked, *this,
+                      "This LogicInfo isn't locked yet, and cannot be queried");
+  PrettyCheckArgument(
+      isTheoryEnabled(theory::THEORY_ARITH), *this,
+      "Arithmetic not used in this LogicInfo; cannot ask whether it's difference logic");
+  return d_differenceLogic;
+}
+
+bool LogicInfo::hasCardinalityConstraints() const {
+  PrettyCheckArgument(d_locked, *this,
+                      "This LogicInfo isn't locked yet, and cannot be queried");
+  return d_cardinalityConstraints;
+}
+
+
+bool LogicInfo::operator==(const LogicInfo& other) const {
+  PrettyCheckArgument(isLocked() && other.isLocked(), *this,
+                      "This LogicInfo isn't locked yet, and cannot be queried");
+  for(theory::TheoryId id = theory::THEORY_FIRST; id < theory::THEORY_LAST; ++id) {
+    if(d_theories[id] != other.d_theories[id]) {
+      return false;
+    }
+  }
+
+  PrettyCheckArgument(d_sharingTheories == other.d_sharingTheories, *this,
+                      "LogicInfo internal inconsistency");
+  if(isTheoryEnabled(theory::THEORY_ARITH)) {
+    return
+        d_integers == other.d_integers &&
+        d_reals == other.d_reals &&
+        d_linear == other.d_linear &&
+        d_differenceLogic == other.d_differenceLogic;
+  } else {
+    return true;
+  }
+}
+
+bool LogicInfo::operator<=(const LogicInfo& other) const {
+  PrettyCheckArgument(isLocked() && other.isLocked(), *this,
+                      "This LogicInfo isn't locked yet, and cannot be queried");
+  for(theory::TheoryId id = theory::THEORY_FIRST; id < theory::THEORY_LAST; ++id) {
+    if(d_theories[id] && !other.d_theories[id]) {
+      return false;
+    }
+  }
+  PrettyCheckArgument(d_sharingTheories <= other.d_sharingTheories, *this,
+                      "LogicInfo internal inconsistency");
+  if(isTheoryEnabled(theory::THEORY_ARITH) && other.isTheoryEnabled(theory::THEORY_ARITH)) {
+    return
+        (!d_integers || other.d_integers) &&
+        (!d_reals || other.d_reals) &&
+        (d_linear || !other.d_linear) &&
+        (d_differenceLogic || !other.d_differenceLogic);
+  } else {
+    return true;
+  }
+}
+
+bool LogicInfo::operator>=(const LogicInfo& other) const {
+  PrettyCheckArgument(isLocked() && other.isLocked(), *this,
+                      "This LogicInfo isn't locked yet, and cannot be queried");
+  for(theory::TheoryId id = theory::THEORY_FIRST; id < theory::THEORY_LAST; ++id) {
+    if(!d_theories[id] && other.d_theories[id]) {
+      return false;
+    }
+  }
+  PrettyCheckArgument(d_sharingTheories >= other.d_sharingTheories, *this,
+                      "LogicInfo internal inconsistency");
+  if(isTheoryEnabled(theory::THEORY_ARITH) && other.isTheoryEnabled(theory::THEORY_ARITH)) {
+    return
+        (d_integers || !other.d_integers) &&
+        (d_reals || !other.d_reals) &&
+        (!d_linear || other.d_linear) &&
+        (!d_differenceLogic || other.d_differenceLogic);
+    } else {
+    return true;
+  }
+}
+
+std::string LogicInfo::getLogicString() const {
+  PrettyCheckArgument(
+      d_locked, *this,
+      "This LogicInfo isn't locked yet, and cannot be queried");
+  if(d_logicString == "") {
+    LogicInfo qf_all_supported;
+    qf_all_supported.disableQuantifiers();
+    qf_all_supported.lock();
+    if(hasEverything()) {
+      d_logicString = "ALL";
+    } else if(*this == qf_all_supported) {
+      d_logicString = "QF_ALL";
+    } else {
+      size_t seen = 0; // make sure we support all the active theories
+
+      stringstream ss;
+      if(!isQuantified()) {
+        ss << "QF_";
+      }
+      if(d_theories[THEORY_ARRAY]) {
+        ss << (d_sharingTheories == 1 ? "AX" : "A");
+        ++seen;
+      }
+      if(d_theories[THEORY_UF]) {
+        ss << "UF";
+        ++seen;
+      }
+      if( d_cardinalityConstraints ){
+        ss << "C";
+      }
+      if(d_theories[THEORY_BV]) {
+        ss << "BV";
+        ++seen;
+      }
+      if(d_theories[THEORY_FP]) {
+        ss << "FP";
+        ++seen;
+      } 
+      if(d_theories[THEORY_DATATYPES]) {
+        ss << "DT";
+        ++seen;
+      }
+      if(d_theories[THEORY_STRINGS]) {
+        ss << "S";
+        ++seen;
+      }
+      if(d_theories[THEORY_ARITH]) {
+        if(isDifferenceLogic()) {
+          ss << (areIntegersUsed() ? "I" : "");
+          ss << (areRealsUsed() ? "R" : "");
+          ss << "DL";
+        } else {
+          ss << (isLinear() ? "L" : "N");
+          ss << (areIntegersUsed() ? "I" : "");
+          ss << (areRealsUsed() ? "R" : "");
+          ss << "A";
+        }
+        ++seen;
+      }
+      if(d_theories[THEORY_SETS]) {
+        ss << "FS";
+        ++seen;
+      }
+      if(d_theories[THEORY_SEP]) {
+        ss << "SEP";
+        ++seen;
+      }     
+      if(seen != d_sharingTheories) {
+        Unhandled("can't extract a logic string from LogicInfo; at least one "
+                  "active theory is unknown to LogicInfo::getLogicString() !");
+      }
+
+      if(seen == 0) {
+        ss << "SAT";
+      }
+
+      d_logicString = ss.str();
+    }
+  }
+  return d_logicString;
+}
+
+void LogicInfo::setLogicString(std::string logicString) throw(IllegalArgumentException) {
+  PrettyCheckArgument(!d_locked, *this,
+                      "This LogicInfo is locked, and cannot be modified");
+  for(TheoryId id = THEORY_FIRST; id < THEORY_LAST; ++id) {
+    d_theories[id] = false;// ensure it's cleared
+  }
+  d_sharingTheories = 0;
+
+  // Below, ONLY use enableTheory()/disableTheory() rather than
+  // accessing d_theories[] directly.  This makes sure to set up
+  // sharing properly.
+
+  enableTheory(THEORY_BUILTIN);
+  enableTheory(THEORY_BOOL);
+
+  const char* p = logicString.c_str();
+  if(*p == '\0') {
+    // propositional logic only; we're done.
+  } else if(!strcmp(p, "QF_SAT")) {
+    // propositional logic only; we're done.
+    p += 6;
+  } else if(!strcmp(p, "QF_ALL_SUPPORTED")) {
+    // the "all theories included" logic, no quantifiers
+    enableEverything();
+    disableQuantifiers();
+    p += 16;
+  } else if(!strcmp(p, "QF_ALL")) {
+    // the "all theories included" logic, no quantifiers
+    enableEverything();
+    disableQuantifiers();
+    p += 6;
+  } else if(!strcmp(p, "ALL_SUPPORTED")) {
+    // the "all theories included" logic, with quantifiers
+    enableEverything();
+    enableQuantifiers();
+    p += 13;
+  } else if(!strcmp(p, "ALL")) {
+    // the "all theories included" logic, with quantifiers
+    enableEverything();
+    enableQuantifiers();
+    p += 3;
+  } else {
+    if(!strncmp(p, "QF_", 3)) {
+      disableQuantifiers();
+      p += 3;
+    } else {
+      enableQuantifiers();
+    }
+    if(!strncmp(p, "AX", 2)) {
+      enableTheory(THEORY_ARRAY);
+      p += 2;
+    } else {
+      if(*p == 'A') {
+        enableTheory(THEORY_ARRAY);
+        ++p;
+      }
+      if(!strncmp(p, "UF", 2)) {
+        enableTheory(THEORY_UF);
+        p += 2;
+      }
+      if(!strncmp(p, "C", 1 )) {
+        d_cardinalityConstraints = true;
+        p += 1;
+      }
+      // allow BV or DT in either order
+      if(!strncmp(p, "BV", 2)) {
+        enableTheory(THEORY_BV);
+        p += 2;
+      }
+      if(!strncmp(p, "FP", 2)) {
+        enableTheory(THEORY_FP);
+        p += 2;
+      }
+      if(!strncmp(p, "DT", 2)) {
+        enableTheory(THEORY_DATATYPES);
+        p += 2;
+      }
+      if(!d_theories[THEORY_BV] && !strncmp(p, "BV", 2)) {
+        enableTheory(THEORY_BV);
+        p += 2;
+      }
+      if(*p == 'S') {
+        enableTheory(THEORY_STRINGS);
+        ++p;
+      }
+      if(!strncmp(p, "IDL", 3)) {
+        enableIntegers();
+        disableReals();
+        arithOnlyDifference();
+        p += 3;
+      } else if(!strncmp(p, "RDL", 3)) {
+        disableIntegers();
+        enableReals();
+        arithOnlyDifference();
+        p += 3;
+      } else if(!strncmp(p, "IRDL", 4)) {
+        // "IRDL" ?! --not very useful, but getLogicString() can produce
+        // that string, so we really had better be able to read it back in.
+        enableIntegers();
+        enableReals();
+        arithOnlyDifference();
+        p += 4;
+      } else if(!strncmp(p, "LIA", 3)) {
+        enableIntegers();
+        disableReals();
+        arithOnlyLinear();
+        p += 3;
+      } else if(!strncmp(p, "LRA", 3)) {
+        disableIntegers();
+        enableReals();
+        arithOnlyLinear();
+        p += 3;
+      } else if(!strncmp(p, "LIRA", 4)) {
+        enableIntegers();
+        enableReals();
+        arithOnlyLinear();
+        p += 4;
+      } else if(!strncmp(p, "NIA", 3)) {
+        enableIntegers();
+        disableReals();
+        arithNonLinear();
+        p += 3;
+      } else if(!strncmp(p, "NRA", 3)) {
+        disableIntegers();
+        enableReals();
+        arithNonLinear();
+        p += 3;
+      } else if(!strncmp(p, "NIRA", 4)) {
+        enableIntegers();
+        enableReals();
+        arithNonLinear();
+        p += 4;
+      }
+      if(!strncmp(p, "FS", 2)) {
+        enableTheory(THEORY_SETS);
+        p += 2;
+      }
+      if(!strncmp(p, "SEP", 3)) {
+        enableTheory(THEORY_SEP);
+        p += 3;
+      }
+    }
+  }
+  if(*p != '\0') {
+    stringstream err;
+    err << "LogicInfo::setLogicString(): ";
+    if(p == logicString) {
+      err << "cannot parse logic string: " << logicString;
+    } else {
+      err << "junk (\"" << p << "\") at end of logic string: " << logicString;
+    }
+    IllegalArgument(logicString, err.str().c_str());
+  }
+
+  // ensure a getLogic() returns the same thing as was set
+  d_logicString = logicString;
+}
+
+void LogicInfo::enableEverything() {
+  PrettyCheckArgument(!d_locked, *this, "This LogicInfo is locked, and cannot be modified");
+  *this = LogicInfo();
+}
+
+void LogicInfo::disableEverything() {
+  PrettyCheckArgument(!d_locked, *this, "This LogicInfo is locked, and cannot be modified");
+  *this = LogicInfo("");
+}
+
+void LogicInfo::enableTheory(theory::TheoryId theory) {
+  PrettyCheckArgument(!d_locked, *this, "This LogicInfo is locked, and cannot be modified");
+  if(!d_theories[theory]) {
+    if(isTrueTheory(theory)) {
+      ++d_sharingTheories;
+    }
+    d_logicString = "";
+    d_theories[theory] = true;
+  }
+}
+
+void LogicInfo::disableTheory(theory::TheoryId theory) {
+  PrettyCheckArgument(!d_locked, *this, "This LogicInfo is locked, and cannot be modified");
+  if(d_theories[theory]) {
+    if(isTrueTheory(theory)) {
+      Assert(d_sharingTheories > 0);
+      --d_sharingTheories;
+    }
+    if(theory == THEORY_BUILTIN ||
+       theory == THEORY_BOOL) {
+      return;
+    }
+    d_logicString = "";
+    d_theories[theory] = false;
+  }
+}
+
+void LogicInfo::enableIntegers() {
+  PrettyCheckArgument(!d_locked, *this, "This LogicInfo is locked, and cannot be modified");
+  d_logicString = "";
+  enableTheory(THEORY_ARITH);
+  d_integers = true;
+}
+
+void LogicInfo::disableIntegers() {
+  PrettyCheckArgument(!d_locked, *this, "This LogicInfo is locked, and cannot be modified");
+  d_logicString = "";
+  d_integers = false;
+  if(!d_reals) {
+    disableTheory(THEORY_ARITH);
+  }
+}
+
+void LogicInfo::enableReals() {
+  PrettyCheckArgument(!d_locked, *this, "This LogicInfo is locked, and cannot be modified");
+  d_logicString = "";
+  enableTheory(THEORY_ARITH);
+  d_reals = true;
+}
+
+void LogicInfo::disableReals() {
+  PrettyCheckArgument(!d_locked, *this, "This LogicInfo is locked, and cannot be modified");
+  d_logicString = "";
+  d_reals = false;
+  if(!d_integers) {
+    disableTheory(THEORY_ARITH);
+  }
+}
+
+void LogicInfo::arithOnlyDifference() {
+  PrettyCheckArgument(!d_locked, *this, "This LogicInfo is locked, and cannot be modified");
+  d_logicString = "";
+  d_linear = true;
+  d_differenceLogic = true;
+}
+
+void LogicInfo::arithOnlyLinear() {
+  PrettyCheckArgument(!d_locked, *this, "This LogicInfo is locked, and cannot be modified");
+  d_logicString = "";
+  d_linear = true;
+  d_differenceLogic = false;
+}
+
+void LogicInfo::arithNonLinear() {
+  PrettyCheckArgument(!d_locked, *this, "This LogicInfo is locked, and cannot be modified");
+  d_logicString = "";
+  d_linear = false;
+  d_differenceLogic = false;
+}
+
+LogicInfo LogicInfo::getUnlockedCopy() const {
+  if(d_locked) {
+    LogicInfo info = *this;
+    info.d_locked = false;
+    return info;
+  } else {
+    return *this;
+  }
+}
+
+std::ostream& operator<<(std::ostream& out, const LogicInfo& logic) {
+  return out << logic.getLogicString();
+}
+
+}/* CVC4 namespace */
diff --git a/src/theory/logic_info.h b/src/theory/logic_info.h
new file mode 100644
index 0000000..6efdd46
--- /dev/null
+++ b/src/theory/logic_info.h
@@ -0,0 +1,252 @@
+/*********************                                                        */
+/*! \file logic_info.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A class giving information about a logic (group a theory modules
+ ** and configuration information)
+ **
+ ** A class giving information about a logic (group of theory modules and
+ ** configuration information).
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__LOGIC_INFO_H
+#define __CVC4__LOGIC_INFO_H
+
+#include <string>
+#include <vector>
+#include "expr/kind.h"
+
+namespace CVC4 {
+
+/**
+ * A LogicInfo instance describes a collection of theory modules and some
+ * basic configuration about them.  Conceptually, it provides a background
+ * context for all operations in CVC4.  Typically, when CVC4's SmtEngine
+ * is created, it is issued a setLogic() command indicating features of the
+ * assertions and queries to follow---for example, whether quantifiers are
+ * used, whether integers or reals (or both) will be used, etc.
+ *
+ * Most places in CVC4 will only ever need to access a const reference to an
+ * instance of this class.  Such an instance is generally set by the SmtEngine
+ * when setLogic() is called.  However, mutating member functions are also
+ * provided by this class so that it can be used as a more general mechanism
+ * (e.g., for communicating to the SmtEngine which theories should be used,
+ * rather than having to provide an SMT-LIB string).
+ */
+class CVC4_PUBLIC LogicInfo {
+  mutable std::string d_logicString; /**< an SMT-LIB-like logic string */
+  std::vector<bool> d_theories; /**< set of active theories */
+  size_t d_sharingTheories; /**< count of theories that need sharing */
+
+  // for arithmetic
+  bool d_integers; /**< are integers used in this logic? */
+  bool d_reals; /**< are reals used in this logic? */
+  bool d_linear; /**< linear-only arithmetic in this logic? */
+  bool d_differenceLogic; /**< difference-only arithmetic in this logic? */
+  bool d_cardinalityConstraints; /**< cardinality constraints in this logic? */
+
+  bool d_locked; /**< is this LogicInfo instance locked (and thus immutable)? */
+
+  /**
+   * Returns true iff this is a "true" theory (one that must be worried
+   * about for sharing
+   */
+  static inline bool isTrueTheory(theory::TheoryId theory) {
+    switch(theory) {
+    case theory::THEORY_BUILTIN:
+    case theory::THEORY_BOOL:
+    case theory::THEORY_QUANTIFIERS:
+      return false;
+    default:
+      return true;
+    }
+  }
+
+public:
+
+  /**
+   * Constructs a LogicInfo for the most general logic (quantifiers, all
+   * background theory modules, ...).
+   */
+  LogicInfo();
+
+  /**
+   * Construct a LogicInfo from an SMT-LIB-like logic string.
+   * Throws an IllegalArgumentException if the logic string cannot
+   * be interpreted.
+   */
+  LogicInfo(std::string logicString) throw(IllegalArgumentException);
+
+  /**
+   * Construct a LogicInfo from an SMT-LIB-like logic string.
+   * Throws an IllegalArgumentException if the logic string cannot
+   * be interpreted.
+   */
+  LogicInfo(const char* logicString) throw(IllegalArgumentException);
+
+  // ACCESSORS
+
+  /**
+   * Get an SMT-LIB-like logic string.  These are only guaranteed to
+   * be SMT-LIB-compliant if an SMT-LIB-compliant string was used in
+   * the constructor and no mutating functions were called.
+   */
+  std::string getLogicString() const;
+
+  /** Is sharing enabled for this logic? */
+  bool isSharingEnabled() const;
+
+  /** Is the given theory module active in this logic? */
+  bool isTheoryEnabled(theory::TheoryId theory) const;
+
+  /** Is this a quantified logic? */
+  bool isQuantified() const;
+
+  /** Is this the all-inclusive logic? */
+  bool hasEverything() const;
+
+  /** Is this the all-exclusive logic?  (Here, that means propositional logic) */
+  bool hasNothing() const;
+
+  /**
+   * Is this a pure logic (only one "true" background theory).  Quantifiers
+   * can exist in such logics though; to test for quantifier-free purity,
+   * use "isPure(theory) && !isQuantified()".
+   */
+  bool isPure(theory::TheoryId theory) const;
+
+  // these are for arithmetic
+
+  /** Are integers in this logic? */
+  bool areIntegersUsed() const;
+
+  /** Are reals in this logic? */
+  bool areRealsUsed() const;
+
+  /** Does this logic only linear arithmetic? */
+  bool isLinear() const;
+
+  /** Does this logic only permit difference reasoning? (implies linear) */
+  bool isDifferenceLogic() const;
+
+  /** Does this logic allow cardinality constraints? */
+  bool hasCardinalityConstraints() const;
+
+  // MUTATORS
+
+  /**
+   * Initialize the LogicInfo with an SMT-LIB-like logic string.
+   * Throws an IllegalArgumentException if the string can't be
+   * interpreted.
+   */
+  void setLogicString(std::string logicString) throw(IllegalArgumentException);
+
+  /**
+   * Enable all functionality.  All theories, plus quantifiers, will be
+   * enabled.
+   */
+  void enableEverything();
+
+  /**
+   * Disable all functionality.  The result will be a LogicInfo with
+   * the BUILTIN and BOOLEAN theories enabled only ("QF_SAT").
+   */
+  void disableEverything();
+
+  /**
+   * Enable the given theory module.
+   */
+  void enableTheory(theory::TheoryId theory);
+
+  /**
+   * Disable the given theory module.  THEORY_BUILTIN and THEORY_BOOL cannot
+   * be disabled (and if given here, the request will be silently ignored).
+   */
+  void disableTheory(theory::TheoryId theory);
+
+  /**
+   * Quantifiers are a special case, since two theory modules handle them.
+   */
+  void enableQuantifiers() {
+    enableTheory(theory::THEORY_QUANTIFIERS);
+  }
+
+  /**
+   * Quantifiers are a special case, since two theory modules handle them.
+   */
+  void disableQuantifiers() {
+    disableTheory(theory::THEORY_QUANTIFIERS);
+  }
+
+  // these are for arithmetic
+
+  /** Enable the use of integers in this logic. */
+  void enableIntegers();
+  /** Disable the use of integers in this logic. */
+  void disableIntegers();
+  /** Enable the use of reals in this logic. */
+  void enableReals();
+  /** Disable the use of reals in this logic. */
+  void disableReals();
+  /** Only permit difference arithmetic in this logic. */
+  void arithOnlyDifference();
+  /** Only permit linear arithmetic in this logic. */
+  void arithOnlyLinear();
+  /** Permit nonlinear arithmetic in this logic. */
+  void arithNonLinear();
+
+  // LOCKING FUNCTIONALITY
+
+  /** Lock this LogicInfo, disabling further mutation and allowing queries */
+  void lock() { d_locked = true; }
+  /** Check whether this LogicInfo is locked, disallowing further mutation */
+  bool isLocked() const { return d_locked; }
+  /** Get a copy of this LogicInfo that is identical, but unlocked */
+  LogicInfo getUnlockedCopy() const;
+
+  // COMPARISON
+
+  /** Are these two LogicInfos equal? */
+  bool operator==(const LogicInfo& other) const;
+
+  /** Are these two LogicInfos disequal? */
+  bool operator!=(const LogicInfo& other) const {
+    return !(*this == other);
+  }
+
+  /** Is this LogicInfo "greater than" (does it contain everything and more) the other? */
+  bool operator>(const LogicInfo& other) const {
+    return *this >= other && *this != other;
+  }
+
+  /** Is this LogicInfo "less than" (does it contain strictly less) the other? */
+  bool operator<(const LogicInfo& other) const {
+    return *this <= other && *this != other;
+  }
+  /** Is this LogicInfo "less than or equal" the other? */
+  bool operator<=(const LogicInfo& other) const;
+
+  /** Is this LogicInfo "greater than or equal" the other? */
+  bool operator>=(const LogicInfo& other) const;
+
+  /** Are two LogicInfos comparable?  That is, is one of <= or > true? */
+  bool isComparableTo(const LogicInfo& other) const {
+    return *this <= other || *this >= other;
+  }
+
+};/* class LogicInfo */
+
+std::ostream& operator<<(std::ostream& out, const LogicInfo& logic) CVC4_PUBLIC;
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__LOGIC_INFO_H */
diff --git a/src/theory/logic_info.i b/src/theory/logic_info.i
new file mode 100644
index 0000000..ee3652a
--- /dev/null
+++ b/src/theory/logic_info.i
@@ -0,0 +1,17 @@
+%{
+#include "theory/logic_info.h"
+%}
+
+%ignore CVC4::LogicInfo::LogicInfo(const char*);
+
+%rename(less) CVC4::LogicInfo::operator<(const LogicInfo&) const;
+%rename(lessEqual) CVC4::LogicInfo::operator<=(const LogicInfo&) const;
+%rename(greater) CVC4::LogicInfo::operator>(const LogicInfo&) const;
+%rename(greaterEqual) CVC4::LogicInfo::operator>=(const LogicInfo&) const;
+
+%rename(equals) CVC4::LogicInfo::operator==(const LogicInfo&) const;
+%ignore CVC4::LogicInfo::operator!=(const LogicInfo&) const;
+
+%ignore CVC4::operator<<(std::ostream&, const LogicInfo&);
+
+%include "theory/logic_info.h"
diff --git a/src/theory/mkrewriter b/src/theory/mkrewriter
new file mode 100755
index 0000000..5db2e97
--- /dev/null
+++ b/src/theory/mkrewriter
@@ -0,0 +1,277 @@
+#!/bin/bash
+#
+# mkrewriter
+# Morgan Deters <mdeters at cs.nyu.edu> for CVC4
+# Copyright (c) 2010-2013  The CVC4 Project
+#
+# The purpose of this script is to create rewriter_tables.h from a template
+# and a list of theory kinds.
+#
+# Invocation:
+#
+#   mkrewriter template-file theory-kind-files...
+#
+# Output is to standard out.
+#
+
+copyright=2010-2014
+
+cat <<EOF
+/*********************                                                        */
+/** rewriter_tables.h
+ **
+ ** Copyright $copyright  New York University and The University of Iowa,
+ ** and as below.
+ **
+ ** This header file automatically generated by:
+ **
+ **     $0 $@
+ **
+ ** for the CVC4 project.
+ **/
+
+EOF
+
+me=$(basename "$0")
+
+template=$1; shift
+
+rewriter_includes=
+rewrite_init=
+rewrite_shutdown=
+
+pre_rewrite_calls=
+pre_rewrite_get_cache=
+pre_rewrite_set_cache=
+
+post_rewrite_calls=
+post_rewrite_get_cache=
+post_rewrite_set_cache=
+
+pre_rewrite_attribute_ids=
+post_rewrite_attribute_ids=
+
+seen_theory=false
+seen_theory_builtin=false
+
+function theory {
+  # theory ID T header
+
+  lineno=${BASH_LINENO[0]}
+
+  if $seen_theory; then
+    echo "$kf:$lineno: error: multiple theories defined in one file !?" >&2
+    exit 1
+  fi
+
+  # this script doesn't care about the theory class information, but
+  # makes does make sure it's there
+  seen_theory=true
+  if [ "$1" = THEORY_BUILTIN ]; then
+    if $seen_theory_builtin; then
+      echo "$kf:$lineno: error: \"builtin\" theory redefined" >&2
+      exit 1
+    fi
+    seen_theory_builtin=true
+  elif [ -z "$1" -o -z "$2" -o -z "$3" ]; then
+    echo "$kf:$lineno: error: \"theory\" directive missing class or header argument" >&2
+    exit 1
+  elif ! expr "$2" : '\(::*\)' >/dev/null; then
+    echo "$kf:$lineno: warning: theory class \`$2' isn't fully-qualified (e.g., ::CVC4::theory::foo)" >&2
+  elif ! expr "$2" : '\(::CVC4::theory::*\)' >/dev/null; then
+    echo "$kf:$lineno: warning: theory class not under ::CVC4::theory namespace" >&2
+  fi
+
+  theory_id="$1"
+}
+
+function alternate {
+  # alternate ID name T header
+
+  lineno=${BASH_LINENO[0]}
+
+  if $seen_theory; then
+    echo "$kf:$lineno: error: multiple theories defined in one file !?" >&2
+    exit 1
+  fi
+
+  seen_theory=true
+  seen_endtheory=true
+}
+
+function properties {
+  # properties prop*
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function endtheory {
+  # endtheory
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+  seen_endtheory=true
+}
+
+function enumerator {
+  # enumerator KIND enumerator-class header
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function typechecker {
+  # typechecker header
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function typerule {
+  # typerule OPERATOR typechecking-class
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function construle {
+  # construle OPERATOR isconst-checking-class
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function rewriter {
+  # rewriter class header
+  class="$1"
+  header="$2"
+
+  rewriter_includes="${rewriter_includes}#include \"$header\"
+"
+  rewrite_init="${rewrite_init}   ${class}::init();
+"
+  rewrite_shutdown="${rewrite_shutdown}    ${class}::shutdown();
+"
+  pre_rewrite_attribute_ids="${pre_rewrite_attribute_ids} preids.push_back(expr::attr::AttributeManager::getAttributeId(RewriteAttibute<${theory_id}>::pre_rewrite()));
+"
+  post_rewrite_attribute_ids="${post_rewrite_attribute_ids} postids.push_back(expr::attr::AttributeManager::getAttributeId(RewriteAttibute<${theory_id}>::post_rewrite()));
+"
+
+  pre_rewrite_calls="${pre_rewrite_calls}    case ${theory_id}: return ${class}::preRewrite(node);
+"
+  pre_rewrite_get_cache="${pre_rewrite_get_cache}    case ${theory_id}: return RewriteAttibute<${theory_id}>::getPreRewriteCache(node);
+"
+  pre_rewrite_set_cache="${pre_rewrite_set_cache}    case ${theory_id}: return RewriteAttibute<${theory_id}>::setPreRewriteCache(node, cache);
+"
+
+  post_rewrite_calls="${post_rewrite_calls}    case ${theory_id}: return ${class}::postRewrite(node);
+"
+  post_rewrite_get_cache="${post_rewrite_get_cache}    case ${theory_id}: return RewriteAttibute<${theory_id}>::getPostRewriteCache(node);
+"
+  post_rewrite_set_cache="${post_rewrite_set_cache}    case ${theory_id}: return RewriteAttibute<${theory_id}>::setPostRewriteCache(node, cache);
+"
+
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function sort {
+  # sort TYPE cardinality [well-founded ground-term header | not-well-founded] ["comment"]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function cardinality {
+  # cardinality TYPE cardinality-computer [header]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function well-founded {
+  # well-founded TYPE wellfoundedness-computer [header]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function variable {
+  # variable K ["comment"]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function operator {
+  # operator K #children ["comment"]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function parameterized {
+  # parameterized K1 K2 #children ["comment"]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function constant {
+  # constant K T Hasher header ["comment"]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function check_theory_seen {
+  if $seen_endtheory; then
+    echo "$kf:$lineno: error: command after \"endtheory\" declaration (endtheory has to be last)" >&2
+    exit 1
+  fi
+  if ! $seen_theory; then
+    echo "$kf:$lineno: error: no \"theory\" declaration found (it has to be first)" >&2
+    exit 1
+  fi
+}
+
+function check_builtin_theory_seen {
+  if ! $seen_theory_builtin; then
+    echo "$me: warning: no declaration for the builtin theory found" >&2
+  fi
+}
+
+while [ $# -gt 0 ]; do
+  kf=$1
+  seen_theory=false
+  seen_endtheory=false
+  b=$(basename $(dirname "$kf"))
+  source "$kf"
+  if ! $seen_theory; then
+    echo "$kf: error: no theory content found in file!" >&2
+    exit 1
+  fi
+  if ! $seen_endtheory; then
+    echo "$kf:$lineno: error: no \"endtheory\" declaration found (it is required at the end)" >&2
+    exit 1
+  fi
+  shift
+done
+check_builtin_theory_seen
+
+## output
+
+# generate warnings about incorrect #line annotations in templates
+nl -ba -s' ' "$template"  | grep '^ *[0-9][0-9]* # *line' |
+  awk '{OFS="";if($1+1!=$3) print "'"$template"':",$1,": warning: incorrect annotation \"#line ",$3,"\" (it should be \"#line ",($1+1),"\")"}' >&2
+
+text=$(cat "$template")
+for var in \
+    rewriter_includes \
+    pre_rewrite_calls \
+    post_rewrite_calls \
+    pre_rewrite_get_cache \
+    post_rewrite_get_cache \
+    pre_rewrite_set_cache \
+    post_rewrite_set_cache \
+    rewrite_init rewrite_shutdown \
+    pre_rewrite_attribute_ids \
+    post_rewrite_attribute_ids \
+    template \
+    ; do
+  eval text="\${text//\\\$\\{$var\\}/\${$var}}"
+done
+error=`expr "$text" : '.*\${\([^}]*\)}.*'`
+if [ -n "$error" ]; then
+  echo "$template:0: error: undefined replacement \${$error}" >&2
+  exit 1
+fi
+echo "$text"
diff --git a/src/theory/mktheorytraits b/src/theory/mktheorytraits
new file mode 100755
index 0000000..9107eb7
--- /dev/null
+++ b/src/theory/mktheorytraits
@@ -0,0 +1,427 @@
+#!/bin/bash
+#
+# mktheorytraits
+# Morgan Deters <mdeters at cs.nyu.edu> for CVC4
+# Copyright (c) 2010-2013  The CVC4 Project
+#
+# The purpose of this script is to create theory_traits.h from a template
+# and a list of theory kinds.
+#
+# Invocation:
+#
+#   mktheorytraits template-file theory-kind-files...
+#
+# Output is to standard out.
+#
+
+copyright=2010-2014
+
+filename=`basename "$1" | sed 's,_template,,'`
+
+cat <<EOF
+/*********************                                                        */
+/** $filename
+ **
+ ** Copyright $copyright  New York University and The University of Iowa,
+ ** and as below.
+ **
+ ** This header file automatically generated by:
+ **
+ **     $0 $@
+ **
+ ** for the CVC4 project.
+ **/
+
+EOF
+
+me=$(basename "$0")
+
+template=$1; shift
+
+theory_traits=
+theory_includes=
+theory_constructors=
+theory_for_each_macro="#define CVC4_FOR_EACH_THEORY \\
+"
+
+type_enumerator_includes=
+mk_type_enumerator_cases=
+
+theory_has_check="false"
+theory_has_propagate="false"
+theory_has_ppStaticLearn="false"
+theory_has_notifyRestart="false"
+theory_has_presolve="false"
+theory_has_postsolve="false"
+theory_has_getNextDecisionRequest="false"
+
+theory_stable_infinite="false"
+theory_finite="false"
+theory_polite="false"
+theory_parametric="false"
+
+rewriter_class=
+rewriter_header=
+
+theory_id=
+theory_class=
+
+type_constants=
+type_kinds=
+
+seen_theory=false
+seen_theory_builtin=false
+
+function theory {
+  # theory ID T header
+
+  lineno=${BASH_LINENO[0]}
+
+  if $seen_theory; then
+    echo "$kf:$lineno: error: multiple theories defined in one file !?" >&2
+    exit 1
+  fi
+
+  # this script doesn't care about the theory class information, but
+  # makes does make sure it's there
+  seen_theory=true
+  if [ "$1" = THEORY_BUILTIN ]; then
+    if $seen_theory_builtin; then
+      echo "$kf:$lineno: error: \"builtin\" theory redefined" >&2
+      exit 1
+    fi
+    seen_theory_builtin=true
+  elif [ -z "$1" -o -z "$2" -o -z "$3" ]; then
+    echo "$kf:$lineno: error: \"theory\" directive missing class or header argument" >&2
+    exit 1
+  elif ! expr "$2" : '\(::*\)' >/dev/null; then
+    echo "$kf:$lineno: warning: theory class \`$2' isn't fully-qualified (e.g., ::CVC4::theory::foo)" >&2
+  elif ! expr "$2" : '\(::CVC4::theory::*\)' >/dev/null; then
+    echo "$kf:$lineno: warning: theory class not under ::CVC4::theory namespace" >&2
+  fi
+
+  theory_id="$1"
+  theory_class="$2"
+
+  theory_header="$3"
+  theory_includes="${theory_includes}#include \"$theory_header\"
+"
+  theory_for_each_macro="${theory_for_each_macro} CVC4_FOR_EACH_THEORY_STATEMENT(CVC4::theory::${theory_id}) \\
+"
+}
+
+function alternate {
+  # alternate ID name T header
+
+  lineno=${BASH_LINENO[0]}
+
+  if $seen_theory; then
+    echo "$kf:$lineno: error: multiple theories defined in one file !?" >&2
+    exit 1
+  fi
+
+  seen_theory=true
+  seen_endtheory=true
+
+  theory_header="$4"
+  theory_includes="${theory_includes}#include \"$theory_header\"
+"
+
+  eval "alternate_for_$1=\"\${alternate_for_$1}
+      if(engine->useTheoryAlternative(\\\"$2\\\")) {
+        engine->addTheory< $3 >($1);
+        return;
+      }\""
+}
+
+function rewriter {
+  # rewriter class header
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+
+  rewriter_class="$1"
+  rewriter_header="$2"
+
+  theory_includes="${theory_includes}#include \"$2\"
+"
+}
+
+function endtheory {
+  # endtheory
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+
+  seen_endtheory=true
+
+  theory_constructors="${theory_constructors}
+    case $theory_id:
+\$alternate_for_$theory_id
+      engine->addTheory< $theory_class >($theory_id);
+      return;
+"
+
+  theory_traits="${theory_traits}
+template<>
+struct TheoryTraits<${theory_id}> {
+    // typedef ${theory_class} theory_class;
+    typedef ${rewriter_class} rewriter_class;
+
+    static const bool isStableInfinite = ${theory_stable_infinite};
+    static const bool isFinite = ${theory_finite};
+    static const bool isPolite = ${theory_polite};
+    static const bool isParametric = ${theory_parametric};
+
+    static const bool hasCheck = ${theory_has_check};
+    static const bool hasPropagate = ${theory_has_propagate};
+    static const bool hasPpStaticLearn = ${theory_has_ppStaticLearn};
+    static const bool hasNotifyRestart = ${theory_has_notifyRestart};
+    static const bool hasPresolve = ${theory_has_presolve};
+    static const bool hasPostsolve = ${theory_has_postsolve};
+    static const bool hasGetNextDecisionRequest = ${theory_has_getNextDecisionRequest};
+};/* struct TheoryTraits<${theory_id}> */
+"
+
+  # warnings about theory content and properties
+  dir="$(dirname "$kf")/../../"
+  if [ -e "$dir/$theory_header" ]; then
+    for function in check propagate ppStaticLearn notifyRestart presolve postsolve getNextDecisionRequest; do
+       if eval "\$theory_has_$function"; then
+         grep '\<'"$function"' *\((\|;\)' "$dir/$theory_header" | grep -vq '^ */\(/\|\*\)' ||
+           echo "$kf: warning: $theory_class has property \"$function\" in its kinds file but doesn't appear to declare the function" >&2
+       else
+         grep '\<'"$function"' *\((\|;\)' "$dir/$theory_header" | grep -vq '^ */\(/\|\*\)' &&
+           echo "$kf: warning: $theory_class does not have property \"$function\" in its kinds file but appears to declare the function" >&2
+       fi
+     done
+  else
+    echo "$me: warning: theory header \"$theory_header\" does not exist or is unreadable" >&2
+  fi
+
+  theory_has_check="false"
+  theory_has_propagate="false"
+  theory_has_ppStaticLearn="false"
+  theory_has_notifyRestart="false"
+  theory_has_presolve="false"
+  theory_has_postsolve="false"
+  theory_has_getNextDecisionRequest="false"
+
+  theory_stable_infinite="false"
+  theory_finite="false"
+  theory_polite="false"
+  theory_parametric="false"
+
+  rewriter_class=
+  rewriter_header=
+
+  theory_id=
+  theory_class=
+
+  type_constants=
+  type_kinds=
+
+  lineno=${BASH_LINENO[0]}
+}
+
+function enumerator {
+  # enumerator KIND enumerator-class header
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+  type_enumerator_includes="${type_enumerator_includes}
+#line $lineno \"$kf\"
+#include \"$3\""
+  if expr "$type_constants" : '.* '"$1"' ' &>/dev/null; then
+    mk_type_enumerator_type_constant_cases="${mk_type_enumerator_type_constant_cases}
+#line $lineno \"$kf\"
+    case $1:
+#line $lineno \"$kf\"
+      return new $2(type, tep);
+"
+  elif expr "$type_kinds" : '.* '"$1"' ' &>/dev/null; then
+    mk_type_enumerator_cases="${mk_type_enumerator_cases}
+#line $lineno \"$kf\"
+  case kind::$1:
+#line $lineno \"$kf\"
+    return new $2(type, tep);
+"
+  else
+    echo "$kf:$lineno: error: don't know anything about $1; enumerator must appear after definition" >&2
+    echo "type_constants: $type_constants" >&2
+    echo "type_kinds    : $type_kinds" >&2
+    exit 1
+  fi
+}
+
+function typechecker {
+  # typechecker header
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function typerule {
+  # typerule OPERATOR typechecking-class
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function construle {
+  # construle OPERATOR isconst-checking-class
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function properties {
+  # properties property*
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+  while (( $# ));
+  do
+    property="$1"
+    case "$property" in
+       finite) theory_finite="true";;
+       stable-infinite) theory_stable_infinite="true";;
+       parametric) theory_parametric="true";;
+       polite) theory_polite="true";;
+       check) theory_has_check="true";;
+       propagate) theory_has_propagate="true";;
+       ppStaticLearn) theory_has_ppStaticLearn="true";;
+       presolve) theory_has_presolve="true";;
+       postsolve) theory_has_postsolve="true";;
+       getNextDecisionRequest) theory_has_getNextDecisionRequest="true";;
+       notifyRestart) theory_has_notifyRestart="true";;
+       *) echo "$kf:$lineno: error: unknown theory property \"$property\"" >&2; exit 1;;
+    esac
+    shift
+  done
+}
+
+function sort {
+  # sort TYPE cardinality [well-founded ground-term header | not-well-founded] ["comment"]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+  if [ "$3" = well-founded ]; then
+    register_sort "$1" "$2" "$6"
+  else
+    register_sort "$1" "$2" "$4"
+  fi
+}
+
+function cardinality {
+  # cardinality TYPE cardinality-computer [header]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function well-founded {
+  # well-founded TYPE wellfoundedness-computer [header]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
+function variable {
+  # variable K ["comment"]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+  register_kind "$1" 0 "$2"
+}
+
+function operator {
+  # operator K #children ["comment"]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+  register_kind "$1" "$2" "$3"
+}
+
+function parameterized {
+  # parameterized K1 K2 #children ["comment"]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+  register_kind "$1" "$3" "$4"
+}
+
+function constant {
+  # constant K T Hasher header ["comment"]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+  register_kind "$1" 0 "$5"
+}
+
+function register_sort {
+  id=$1
+  cardinality=$2
+  comment=$3
+  type_constant_to_theory_id="${type_constant_to_theory_id}   case $id: return $theory_id; break;
+"
+  type_constants="${type_constants} $1 "
+}
+
+function register_kind {
+  r=$1
+  nc=$2
+  comment=$3
+  kind_to_theory_id="${kind_to_theory_id}   case kind::$r: return $theory_id; break;
+"
+  type_kinds="${type_kinds} $1 "
+}
+
+function check_theory_seen {
+  if $seen_endtheory; then
+    echo "$kf:$lineno: error: command after \"endtheory\" declaration (endtheory has to be last)" >&2
+    exit 1
+  fi
+  if ! $seen_theory; then
+    echo "$kf:$lineno: error: no \"theory\" declaration found (it has to be first)" >&2
+    exit 1
+  fi
+}
+
+function check_builtin_theory_seen {
+  if ! $seen_theory_builtin; then
+    echo "$me: warning: no declaration for the builtin theory found" >&2
+  fi
+}
+
+while [ $# -gt 0 ]; do
+  kf=$1
+  seen_theory=false
+  seen_endtheory=false
+  b=$(basename $(dirname "$kf"))
+  source "$kf"
+  if ! $seen_theory; then
+    echo "$kf: error: no theory content found in file!" >&2
+    exit 1
+  fi
+  if ! $seen_endtheory; then
+    echo "$kf:$lineno: error: no \"endtheory\" declaration found (it is required at the end)" >&2
+    exit 1
+  fi
+  shift
+done
+check_builtin_theory_seen
+
+## output
+
+eval "theory_constructors=\"$theory_constructors\""
+
+# generate warnings about incorrect #line annotations in templates
+nl -ba -s' ' "$template"  | grep '^ *[0-9][0-9]* # *line' |
+  awk '{OFS="";if($1+1!=$3) print "'"$template"':",$1,": warning: incorrect annotation \"#line ",$3,"\" (it should be \"#line ",($1+1),"\")"}' >&2
+
+text=$(cat "$template")
+for var in \
+    theory_traits \
+    theory_for_each_macro \
+    theory_includes \
+    theory_constructors \
+    template \
+    type_enumerator_includes \
+    mk_type_enumerator_type_constant_cases \
+    mk_type_enumerator_cases \
+    ; do
+  eval text="\${text//\\\$\\{$var\\}/\${$var}}"
+done
+error=`expr "$text" : '.*\${\([^}]*\)}.*'`
+if [ -n "$error" ]; then
+  echo "$template:0: error: undefined replacement \${$error}" >&2
+  exit 1
+fi
+echo "$text"
diff --git a/src/theory/output_channel.h b/src/theory/output_channel.h
new file mode 100644
index 0000000..4ca113e
--- /dev/null
+++ b/src/theory/output_channel.h
@@ -0,0 +1,254 @@
+/*********************                                                        */
+/*! \file output_channel.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The theory output channel interface
+ **
+ ** The theory output channel interface.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__OUTPUT_CHANNEL_H
+#define __CVC4__THEORY__OUTPUT_CHANNEL_H
+
+#include "base/cvc4_assert.h"
+#include "smt/logic_exception.h"
+#include "theory/interrupted.h"
+#include "proof/proof_manager.h"
+#include "util/resource_manager.h"
+
+namespace CVC4 {
+namespace theory {
+
+class Theory;
+
+/**
+ * A LemmaStatus, returned from OutputChannel::lemma(), provides information
+ * about the lemma added.  In particular, it contains the T-rewritten lemma
+ * for inspection and the user-level at which the lemma will reside.
+ */
+class LemmaStatus {
+  Node d_rewrittenLemma;
+  unsigned d_level;
+
+public:
+  LemmaStatus(TNode rewrittenLemma, unsigned level) :
+    d_rewrittenLemma(rewrittenLemma),
+    d_level(level) {
+  }
+
+  /** Get the T-rewritten form of the lemma. */
+  TNode getRewrittenLemma() const throw() { return d_rewrittenLemma; }
+
+  /**
+   * Get the user-level at which the lemma resides.  After this user level
+   * is popped, the lemma is un-asserted from the SAT layer.  This level
+   * will be 0 if the lemma didn't reach the SAT layer at all.
+   */
+  unsigned getLevel() const throw() { return d_level; }
+
+};/* class LemmaStatus */
+
+/**
+ * Generic "theory output channel" interface.
+ */
+class OutputChannel {
+  /** Disallow copying: private constructor */
+  OutputChannel(const OutputChannel&) CVC4_UNDEFINED;
+
+  /** Disallow assignment: private operator=() */
+  OutputChannel& operator=(const OutputChannel&) CVC4_UNDEFINED;
+
+public:
+
+  /**
+   * Construct an OutputChannel.
+   */
+  OutputChannel() {
+  }
+
+  /**
+   * Destructs an OutputChannel.  This implementation does nothing,
+   * but we need a virtual destructor for safety in case subclasses
+   * have a destructor.
+   */
+  virtual ~OutputChannel() {
+  }
+
+  /**
+   * With safePoint(), the theory signals that it is at a safe point
+   * and can be interrupted.
+   */
+  virtual void safePoint(uint64_t amount)
+      throw(Interrupted, UnsafeInterruptException, AssertionException)
+  {}
+
+  /**
+   * Indicate a theory conflict has arisen.
+   *
+   * @param n - a conflict at the current decision level.  This should
+   * be an AND-kinded node of literals that are TRUE in the current
+   * assignment and are in conflict (i.e., at least one must be
+   * assigned false), or else a literal by itself (in the case of a
+   * unit conflict) which is assigned TRUE (and T-conflicting) in the
+   * current assignment.
+   * @param pf - a proof of the conflict. This is only non-null if proofs
+   * are enabled.
+   */
+  virtual void conflict(TNode n, Proof* pf = NULL) throw(AssertionException, UnsafeInterruptException) = 0;
+
+  /**
+   * Propagate a theory literal.
+   *
+   * @param n - a theory consequence at the current decision level
+   * @return false if an immediate conflict was encountered
+   */
+  virtual bool propagate(TNode n) throw(AssertionException, UnsafeInterruptException) = 0;
+
+  /**
+   * Tell the core that a valid theory lemma at decision level 0 has
+   * been detected.  (This requests a split.)
+   *
+   * @param n - a theory lemma valid at decision level 0
+   * @param rule - the proof rule for this lemma
+   * @param removable - whether the lemma can be removed at any point
+   * @param preprocess - whether to apply more aggressive preprocessing
+   * @param sendAtoms - whether to ensure atoms are sent to the theory
+   * @return the "status" of the lemma, including user level at which
+   * the lemma resides; the lemma will be removed when this user level pops
+   */
+  virtual LemmaStatus lemma(TNode n, ProofRule rule,
+                            bool removable = false,
+                            bool preprocess = false,
+                            bool sendAtoms = false) = 0;
+
+  /**
+   * Variant of the lemma function that does not require providing a proof rule.
+   */
+  virtual LemmaStatus lemma(TNode n,
+                            bool removable = false,
+                            bool preprocess = false,
+                            bool sendAtoms = false) {
+    return lemma(n, RULE_INVALID, removable, preprocess, sendAtoms);
+  }
+
+  /**
+   * Request a split on a new theory atom.  This is equivalent to
+   * calling lemma({OR n (NOT n)}).
+   *
+   * @param n - a theory atom; must be of Boolean type
+   */
+  LemmaStatus split(TNode n)
+    throw(TypeCheckingExceptionPrivate, AssertionException, UnsafeInterruptException) {
+    return splitLemma(n.orNode(n.notNode()));
+  }
+
+  virtual LemmaStatus splitLemma(TNode n, bool removable = false) = 0;
+
+  /**
+   * If a decision is made on n, it must be in the phase specified.
+   * Note that this is enforced *globally*, i.e., it is completely
+   * context-INdependent.  If you ever requirePhase() on a literal,
+   * it is phase-locked forever and ever.  If it is to ever have the
+   * other phase as its assignment, it will be because it has been
+   * propagated that way (or it's a unit, at decision level 0).
+   *
+   * @param n - a theory atom with a SAT literal assigned; must have
+   * been pre-registered
+   * @param phase - the phase to decide on n
+   */
+  virtual void requirePhase(TNode n, bool phase)
+    throw(Interrupted, TypeCheckingExceptionPrivate, AssertionException, UnsafeInterruptException) = 0;
+
+  /**
+   * Flips the most recent unflipped decision to the other phase and
+   * returns true.  If all decisions have been flipped, the root
+   * decision is re-flipped and flipDecision() returns false.  If no
+   * decisions (flipped nor unflipped) are on the decision stack, the
+   * state is not affected and flipDecision() returns false.
+   *
+   * For example, if l1, l2, and l3 are all decision literals, and
+   * have been decided in positive phase, a series of flipDecision()
+   * calls has the following effects:
+   *
+   * l1 l2 l3 <br/>
+   * l1 l2 ~l3 <br/>
+   * l1 ~l2 <br/>
+   * ~l1 <br/>
+   * l1 (and flipDecision() returns false)
+   *
+   * Naturally, flipDecision() might be interleaved with search.  For example:
+   *
+   * l1 l2 l3 <br/>
+   * flipDecision() <br/>
+   * l1 l2 ~l3 <br/>
+   * flipDecision() <br/>
+   * l1 ~l2 <br/>
+   * SAT decides l3 <br/>
+   * l1 ~l2 l3 <br/>
+   * flipDecision() <br/>
+   * l1 ~l2 ~l3 <br/>
+   * flipDecision() <br/>
+   * ~l1 <br/>
+   * SAT decides l2 <br/>
+   * ~l1 l2 <br/>
+   * flipDecision() <br/>
+   * ~l1 ~l2 <br/>
+   * flipDecision() returns FALSE<br/>
+   * l1
+   *
+   * @return true if a decision was flipped; false if no decision
+   * could be flipped, or if the root decision was re-flipped
+   */
+  virtual bool flipDecision()
+    throw(Interrupted, TypeCheckingExceptionPrivate, AssertionException, UnsafeInterruptException) = 0;
+
+  /**
+   * Notification from a theory that it realizes it is incomplete at
+   * this context level.  If SAT is later determined by the
+   * TheoryEngine, it should actually return an UNKNOWN result.
+   */
+  virtual void setIncomplete() throw(AssertionException, UnsafeInterruptException) = 0;
+
+  /**
+   * "Spend" a "resource."  The meaning is specific to the context in
+   * which the theory is operating, and may even be ignored.  The
+   * intended meaning is that if the user has set a limit on the "units
+   * of resource" that can be expended in a search, and that limit is
+   * exceeded, then the search is terminated.  Note that the check for
+   * termination occurs in the main search loop, so while theories
+   * should call OutputChannel::spendResource() during particularly
+   * long-running operations, they cannot rely on resource() to break
+   * out of infinite or intractable computations.
+   */
+  virtual void spendResource(unsigned ammount) throw(UnsafeInterruptException) {}
+
+  /**
+   * Handle user attribute.
+   * Associates theory t with the attribute attr.  Theory t will be
+   * notified whenever an attribute of name attr is set on a node.
+   * This can happen through, for example, the SMT-LIBv2 language.
+   */
+  virtual void handleUserAttribute(const char* attr, Theory* t) {}
+
+
+  /** Demands that the search restart from sat search level 0.
+   * Using this leads to non-termination issues.
+   * It is appropriate for prototyping for theories.
+   */
+  virtual void demandRestart() throw(TypeCheckingExceptionPrivate, AssertionException, UnsafeInterruptException) {}
+
+};/* class OutputChannel */
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__OUTPUT_CHANNEL_H */
diff --git a/src/theory/quantifiers/alpha_equivalence.cpp b/src/theory/quantifiers/alpha_equivalence.cpp
new file mode 100644
index 0000000..a5fd34c
--- /dev/null
+++ b/src/theory/quantifiers/alpha_equivalence.cpp
@@ -0,0 +1,122 @@
+/*********************                                                        */
+/*! \file alpha_equivalence.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Alpha equivalence checking
+ **
+ **/
+
+#include "theory/quantifiers/alpha_equivalence.h"
+#include "theory/quantifiers/term_database.h"
+
+using namespace CVC4;
+using namespace std;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+using namespace CVC4::kind;
+
+struct sortTypeOrder {
+  TermDb* d_tdb;
+  bool operator() (TypeNode i, TypeNode j) {
+    return d_tdb->getIdForType( i )<d_tdb->getIdForType( j );
+  }
+};
+
+Node AlphaEquivalenceNode::registerNode( AlphaEquivalenceNode* aen, QuantifiersEngine* qe, Node q, std::vector< Node >& tt, std::vector< int >& arg_index ) {
+  std::map< Node, bool > visited;
+  while( !tt.empty() ){
+    if( tt.size()==arg_index.size()+1 ){
+      Node t = tt.back();
+      Node op;
+      if( t.hasOperator() ){
+        if( visited.find( t )==visited.end() ){
+          visited[t] = true;
+          op = t.getOperator();
+          arg_index.push_back( 0 );
+        }else{
+          op = t;
+          arg_index.push_back( -1 );
+        }
+      }else{
+        op = t;
+        arg_index.push_back( 0 );
+      }
+      Trace("aeq-debug") << op << " ";
+      aen = &(aen->d_children[op][t.getNumChildren()]);
+    }else{
+      Node t = tt.back();
+      int i = arg_index.back();
+      if( i==-1 || i==(int)t.getNumChildren() ){
+        tt.pop_back();
+        arg_index.pop_back();
+      }else{
+        tt.push_back( t[i] );
+        arg_index[arg_index.size()-1]++;
+      }
+    }
+  }
+  Node lem;
+  Trace("aeq-debug") << std::endl;
+  if( aen->d_quant.isNull() ){
+    aen->d_quant = q;
+  }else{
+    if( q.getNumChildren()==2 ){
+      //lemma ( q <=> d_quant )
+      Trace("alpha-eq") << "Alpha equivalent : " << std::endl;
+      Trace("alpha-eq") << "  " << q << std::endl;
+      Trace("alpha-eq") << "  " << aen->d_quant << std::endl;
+      lem = q.eqNode( aen->d_quant );
+    }else{
+      //do not reduce annotated quantified formulas based on alpha equivalence 
+    }
+  }
+  return lem;
+}
+
+Node AlphaEquivalenceTypeNode::registerNode( AlphaEquivalenceTypeNode* aetn,
+                                             QuantifiersEngine* qe, Node q, Node t, std::vector< TypeNode >& typs, std::map< TypeNode, int >& typ_count, int index ){
+  while( index<(int)typs.size() ){
+    TypeNode curr = typs[index];
+    Assert( typ_count.find( curr )!=typ_count.end() );
+    Trace("aeq-debug") << "[" << curr << " " << typ_count[curr] << "] ";
+    aetn = &(aetn->d_children[curr][typ_count[curr]]);
+    index = index + 1;
+  }
+  std::vector< Node > tt;
+  std::vector< int > arg_index;
+  tt.push_back( t );
+  Trace("aeq-debug") << " : ";
+  return AlphaEquivalenceNode::registerNode( &(aetn->d_data), qe, q, tt, arg_index );
+}
+
+Node AlphaEquivalence::reduceQuantifier( Node q ) {
+  Assert( q.getKind()==FORALL );
+  Trace("aeq") << "Alpha equivalence : register " << q << std::endl;
+  //construct canonical quantified formula
+  Node t = d_qe->getTermDatabase()->getCanonicalTerm( q[1], true );
+  Trace("aeq") << "  canonical form: " << t << std::endl;
+  //compute variable type counts
+  std::map< TypeNode, int > typ_count;
+  std::vector< TypeNode > typs;
+  for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
+    TypeNode tn = q[0][i].getType();
+    typ_count[tn]++;
+    if( std::find( typs.begin(), typs.end(), tn )==typs.end() ){
+      typs.push_back( tn );
+    }
+  }
+  sortTypeOrder sto;
+  sto.d_tdb = d_qe->getTermDatabase();
+  std::sort( typs.begin(), typs.end(), sto );
+  Trace("aeq-debug") << "  ";
+  Node ret = AlphaEquivalenceTypeNode::registerNode( &d_ae_typ_trie, d_qe, q, t, typs, typ_count );
+  Trace("aeq") << "  ...result : " << ret << std::endl;
+  return ret;
+}
diff --git a/src/theory/quantifiers/alpha_equivalence.h b/src/theory/quantifiers/alpha_equivalence.h
new file mode 100644
index 0000000..8e7556e
--- /dev/null
+++ b/src/theory/quantifiers/alpha_equivalence.h
@@ -0,0 +1,58 @@
+/*********************                                                        */
+/*! \file alpha_equivalence.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Alpha equivalence checking
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__ALPHA_EQUIVALENCE_H
+#define __CVC4__ALPHA_EQUIVALENCE_H
+
+
+#include "theory/quantifiers_engine.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+class AlphaEquivalenceNode {
+public:
+  std::map< Node, std::map< int, AlphaEquivalenceNode > > d_children;
+  Node d_quant;
+  static Node registerNode( AlphaEquivalenceNode* aen, QuantifiersEngine* qe, Node q, std::vector< Node >& tt, std::vector< int >& arg_index );
+};
+
+class AlphaEquivalenceTypeNode {
+public:
+  std::map< TypeNode, std::map< int, AlphaEquivalenceTypeNode > > d_children;
+  AlphaEquivalenceNode d_data;
+  static Node registerNode( AlphaEquivalenceTypeNode* aetn,
+                            QuantifiersEngine* qe, Node q, Node t, std::vector< TypeNode >& typs, std::map< TypeNode, int >& typ_count, int index = 0 );
+};
+
+class AlphaEquivalence {
+private:
+  QuantifiersEngine* d_qe;
+  //per # of variables per type
+  AlphaEquivalenceTypeNode d_ae_typ_trie;
+public:
+  AlphaEquivalence( QuantifiersEngine* qe ) : d_qe( qe ){}
+  ~AlphaEquivalence(){}
+  /** reduce quantifier, return value (if non-null) is lemma justifying why q ia reducible. */
+  Node reduceQuantifier( Node q );
+};
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/ambqi_builder.cpp b/src/theory/quantifiers/ambqi_builder.cpp
new file mode 100644
index 0000000..2ccc17e
--- /dev/null
+++ b/src/theory/quantifiers/ambqi_builder.cpp
@@ -0,0 +1,937 @@
+/*********************                                                        */
+/*! \file ambqi_builder.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of abstract MBQI builder
+ **/
+
+
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/ambqi_builder.h"
+#include "theory/quantifiers/term_database.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+
+void AbsDef::construct_func( FirstOrderModelAbs * m, std::vector< TNode >& fapps, unsigned depth ) {
+  d_def.clear();
+  Assert( !fapps.empty() );
+  if( depth==fapps[0].getNumChildren() ){
+    //if( fapps.size()>1 ){
+    //  for( unsigned i=0; i<fapps.size(); i++ ){
+    //    std::cout << "...." << fapps[i] << " -> " << m->getRepresentativeId( fapps[i] ) << std::endl;
+    //  }
+    //}
+    //get representative in model for this term
+    d_value = m->getRepresentativeId( fapps[0] );
+    Assert( d_value!=val_none );
+  }else{
+    TypeNode tn = fapps[0][depth].getType();
+    std::map< unsigned, std::vector< TNode > > fapp_child;
+
+    //partition based on evaluations of fapps[1][depth]....fapps[n][depth]
+    for( unsigned i=0; i<fapps.size(); i++ ){
+      unsigned r = m->getRepresentativeId( fapps[i][depth] );
+      Assert( r < 32 );
+      fapp_child[r].push_back( fapps[i] );
+    }
+
+    //do completion
+    std::map< unsigned, unsigned > fapp_child_index;
+    unsigned def = m->d_domain[ tn ];
+    unsigned minSize = fapp_child.begin()->second.size();
+    unsigned minSizeIndex = fapp_child.begin()->first;
+    for( std::map< unsigned, std::vector< TNode > >::iterator it = fapp_child.begin(); it != fapp_child.end(); ++it ){
+      fapp_child_index[it->first] = ( 1 << it->first );
+      def = def & ~( 1 << it->first );
+      if( it->second.size()<minSize ){
+        minSize = it->second.size();
+        minSizeIndex = it->first;
+      }
+    }
+    fapp_child_index[minSizeIndex] |= def;
+    d_default = fapp_child_index[minSizeIndex];
+
+    //construct children
+    for( std::map< unsigned, std::vector< TNode > >::iterator it = fapp_child.begin(); it != fapp_child.end(); ++it ){
+      Trace("abs-model-debug") << "Construct " << it->first << " : " << fapp_child_index[it->first] << " : ";
+      debugPrintUInt( "abs-model-debug", m->d_rep_set.d_type_reps[tn].size(), fapp_child_index[it->first] );
+      Trace("abs-model-debug") << " : " << it->second.size() << " terms." << std::endl;
+      d_def[fapp_child_index[it->first]].construct_func( m, it->second, depth+1 );
+    }
+  }
+}
+
+void AbsDef::simplify( FirstOrderModelAbs * m, TNode q, TNode n, unsigned depth ) {
+  if( d_value==val_none && !d_def.empty() ){
+    //process the default
+    std::map< unsigned, AbsDef >::iterator defd = d_def.find( d_default );
+    Assert( defd!=d_def.end() );
+    unsigned newDef = d_default;
+    std::vector< unsigned > to_erase;
+    defd->second.simplify( m, q, n, depth+1 );
+    int defVal = defd->second.d_value;
+    bool isConstant = ( defVal!=val_none );
+    //process each child
+    for( std::map< unsigned, AbsDef >::iterator it = d_def.begin(); it != d_def.end(); ++it ){
+      if( it->first!=d_default ){
+        it->second.simplify( m, q, n, depth+1 );
+        if( it->second.d_value==defVal && it->second.d_value!=val_none ){
+          newDef = newDef | it->first;
+          to_erase.push_back( it->first );
+        }else{
+          isConstant = false;
+        }
+      }
+    }
+    if( !to_erase.empty() ){
+      //erase old default
+      int defVal = defd->second.d_value;
+      d_def.erase( d_default );
+      //set new default
+      d_default = newDef;
+      d_def[d_default].construct_def_entry( m, q, n, defVal, depth+1 );
+      //erase redundant entries
+      for( unsigned i=0; i<to_erase.size(); i++ ){
+        d_def.erase( to_erase[i] );
+      }
+    }
+    //if constant, propagate the value upwards
+    if( isConstant ){
+      d_value = defVal;
+    }else{
+      d_value = val_none;
+    }
+  }
+}
+
+void AbsDef::debugPrintUInt( const char * c, unsigned dSize, unsigned u ) const{
+  for( unsigned i=0; i<dSize; i++ ){
+    Trace(c) << ( ( u & ( 1 << i ) )!=0 ? "1" : "0");
+  }
+  //Trace(c) << "(";
+  //for( unsigned i=0; i<32; i++ ){
+  //  Trace(c) << ( ( u & ( 1 << i ) )!=0 ? "1" : "0");
+  //}
+  //Trace(c) << ")";
+}
+
+void AbsDef::debugPrint( const char * c, FirstOrderModelAbs * m, TNode f, unsigned depth ) const{
+  if( Trace.isOn(c) ){
+    if( depth==f.getNumChildren() ){
+      for( unsigned i=0; i<depth; i++ ){ Trace(c) << "  ";}
+      Trace(c) << "V[" << d_value << "]" << std::endl;
+    }else{
+      TypeNode tn = f[depth].getType();
+      unsigned dSize = m->d_rep_set.getNumRepresentatives( tn );
+      Assert( dSize<32 );
+      for( std::map< unsigned, AbsDef >::const_iterator it = d_def.begin(); it != d_def.end(); ++it ){
+        for( unsigned i=0; i<depth; i++ ){ Trace(c) << "  ";}
+        debugPrintUInt( c, dSize, it->first );
+        if( it->first==d_default ){
+          Trace(c) << "*";
+        }
+        if( it->second.d_value!=val_none ){
+          Trace(c) << " -> V[" << it->second.d_value << "]";
+        }
+        Trace(c) << std::endl;
+        it->second.debugPrint( c, m, f, depth+1 );
+      }
+    }
+  }
+}
+
+bool AbsDef::addInstantiations( FirstOrderModelAbs * m, QuantifiersEngine * qe, TNode q, std::vector< Node >& terms, int& inst, unsigned depth ) {
+  if( inst==0 || !options::fmfOneInstPerRound() ){
+    if( d_value==1 ){
+      //instantiations are all true : ignore this
+      return true;
+    }else{
+      if( depth==q[0].getNumChildren() ){
+        if( qe->addInstantiation( q, terms, true ) ){
+          Trace("ambqi-inst-debug") << "-> Added instantiation." << std::endl;
+          inst++;
+          return true;
+        }else{
+          Trace("ambqi-inst-debug") << "-> Failed to add instantiation." << std::endl;
+          //we are incomplete
+          return false;
+        }
+      }else{
+        bool osuccess = true;
+        TypeNode tn = m->getVariable( q, depth ).getType();
+        for( std::map< unsigned, AbsDef >::iterator it = d_def.begin(); it != d_def.end(); ++it ){
+          //get witness term
+          unsigned index = 0;
+          bool success;
+          do {
+            success = false;
+            index = getId( it->first, index );
+            if( index<32 ){
+              Assert( index<m->d_rep_set.d_type_reps[tn].size() );
+              terms[m->d_var_order[q][depth]] = m->d_rep_set.d_type_reps[tn][index];
+              //terms[depth] = m->d_rep_set.d_type_reps[tn][index];
+              if( !it->second.addInstantiations( m, qe, q, terms, inst, depth+1 ) && inst==0 ){
+                //if we are incomplete, and have not yet added an instantiation, keep trying
+                index++;
+                Trace("ambqi-inst-debug") << "At depth " << depth << ", failed branch, no instantiations and incomplete, increment index : " << index << std::endl;
+              }else{
+                success = true;
+              }
+            }
+          }while( !qe->inConflict() && !success && index<32 );
+          //mark if we are incomplete
+          osuccess = osuccess && success;
+        }
+        return osuccess;
+      }
+    }
+  }else{
+    return true;
+  }
+}
+
+void AbsDef::construct_entry( std::vector< unsigned >& entry, std::vector< bool >& entry_def, int v, unsigned depth ) {
+  if( depth==entry.size() ){
+    d_value = v;
+  }else{
+    d_def[entry[depth]].construct_entry( entry, entry_def, v, depth+1 );
+    if( entry_def[depth] ){
+      d_default = entry[depth];
+    }
+  }
+}
+
+void AbsDef::get_defs( unsigned u, std::vector< AbsDef * >& defs ) {
+  for( std::map< unsigned, AbsDef >::iterator it = d_def.begin(); it != d_def.end(); ++it ){
+    if( ( u & it->first )!=0 ){
+      Assert( (u & it->first)==u );
+      defs.push_back( &it->second );
+    }
+  }
+}
+
+void AbsDef::construct_normalize( FirstOrderModelAbs * m, TNode q, std::vector< AbsDef * >& defs, unsigned depth ) {
+  if( depth==q[0].getNumChildren() ){
+    Assert( defs.size()==1 );
+    d_value = defs[0]->d_value;
+  }else{
+    TypeNode tn = m->getVariable( q, depth ).getType();
+    unsigned def = m->d_domain[tn];
+    for( unsigned i=0; i<defs.size(); i++ ){
+      //process each simple child
+      for( std::map< unsigned, AbsDef >::iterator itd = defs[i]->d_def.begin(); itd != defs[i]->d_def.end(); ++itd ){
+        if( isSimple( itd->first ) && ( def & itd->first )!=0 ){
+          def &= ~( itd->first );
+          //process this value
+          std::vector< AbsDef * > cdefs;
+          for( unsigned j=0; j<defs.size(); j++ ){
+            defs[j]->get_defs( itd->first, cdefs );
+          }
+          d_def[itd->first].construct_normalize( m, q, cdefs, depth+1 );
+          if( def==0 ){
+            d_default = itd->first;
+            break;
+          }
+        }
+      }
+      if( def==0 ){
+        break;
+      }
+    }
+    if( def!=0 ){
+      d_default = def;
+      //process the default
+      std::vector< AbsDef * > cdefs;
+      for( unsigned j=0; j<defs.size(); j++ ){
+        defs[j]->get_defs( d_default, cdefs );
+      }
+      d_def[d_default].construct_normalize( m, q, cdefs, depth+1 );
+    }
+  }
+}
+
+void AbsDef::construct_def_entry( FirstOrderModelAbs * m, TNode q, TNode n, int v, unsigned depth ) {
+  d_value = v;
+  if( depth<n.getNumChildren() ){
+    TypeNode tn = q.isNull() ? n[depth].getType() : m->getVariable( q, depth ).getType();
+    unsigned dom = m->d_domain[tn] ;
+    d_def[dom].construct_def_entry( m, q, n, v, depth+1 );
+    d_default = dom;
+  }
+}
+
+void AbsDef::apply_ucompose( FirstOrderModelAbs * m, TNode q,
+                             std::vector< unsigned >& entry, std::vector< bool >& entry_def,
+                             std::vector< int >& terms, std::map< unsigned, int >& vchildren,
+                             AbsDef * a, unsigned depth ) {
+  if( depth==terms.size() ){
+    if( Trace.isOn("ambqi-check-debug2") ){
+      Trace("ambqi-check-debug2") << "Add entry ( ";
+      for( unsigned i=0; i<entry.size(); i++ ){
+        unsigned dSize = m->d_rep_set.d_type_reps[m->getVariable( q, i ).getType()].size();
+        debugPrintUInt( "ambqi-check-debug2", dSize, entry[i] );
+        Trace("ambqi-check-debug2") << " ";
+      }
+      Trace("ambqi-check-debug2") << ")" << std::endl;
+    }
+    a->construct_entry( entry, entry_def, d_value );
+  }else{
+    unsigned id;
+    if( terms[depth]==val_none ){
+      //a variable
+      std::map< unsigned, int >::iterator itv = vchildren.find( depth );
+      Assert( itv!=vchildren.end() );
+      unsigned prev_v = entry[itv->second];
+      bool prev_vd = entry_def[itv->second];
+      for( std::map< unsigned, AbsDef >::iterator it = d_def.begin(); it != d_def.end(); ++it ){
+        entry[itv->second] = it->first & prev_v;
+        entry_def[itv->second] = ( it->first==d_default ) && prev_vd;
+        if( entry[itv->second]!=0 ){
+          it->second.apply_ucompose( m, q, entry, entry_def, terms, vchildren, a, depth+1 );
+        }
+      }
+      entry[itv->second] = prev_v;
+      entry_def[itv->second] = prev_vd;
+    }else{
+      id = (unsigned)terms[depth];
+      Assert( id<32 );
+      unsigned fid = 1 << id;
+      std::map< unsigned, AbsDef >::iterator it = d_def.find( fid );
+      if( it!=d_def.end() ){
+        it->second.apply_ucompose( m, q, entry, entry_def, terms, vchildren, a, depth+1 );
+      }else{
+        d_def[d_default].apply_ucompose( m, q, entry, entry_def, terms, vchildren, a, depth+1 );
+      }
+    }
+  }
+}
+
+void AbsDef::construct_var_eq( FirstOrderModelAbs * m, TNode q, unsigned v1, unsigned v2, int curr, int currv, unsigned depth ) {
+  if( depth==q[0].getNumChildren() ){
+    Assert( currv!=val_none );
+    d_value = currv;
+  }else{
+    TypeNode tn = m->getVariable( q, depth ).getType();
+    unsigned dom = m->d_domain[tn];
+    int vindex = depth==v1 ? 0 : ( depth==v2 ? 1 : val_none );
+    if( vindex==val_none ){
+      d_def[dom].construct_var_eq( m, q, v1, v2, curr, currv, depth+1 );
+      d_default = dom;
+    }else{
+      Assert( currv==val_none );
+      if( curr==val_none ){
+        unsigned numReps = m->d_rep_set.getNumRepresentatives( tn );
+        Assert( numReps < 32 );
+        for( unsigned i=0; i<numReps; i++ ){
+          curr = 1 << i;
+          d_def[curr].construct_var_eq( m, q, v1, v2, curr, currv, depth+1 );
+        }
+        d_default = curr;
+      }else{
+        d_def[curr].construct_var_eq( m, q, v1, v2, curr, 1, depth+1 );
+        dom = dom & ~curr;
+        d_def[dom].construct_var_eq( m, q, v1, v2, curr, 0, depth+1 );
+        d_default = dom;
+      }
+    }
+  }
+}
+
+void AbsDef::construct_var( FirstOrderModelAbs * m, TNode q, unsigned v, int currv, unsigned depth ) {
+  if( depth==q[0].getNumChildren() ){
+    Assert( currv!=val_none );
+    d_value = currv;
+  }else{
+    TypeNode tn = m->getVariable( q, depth ).getType();
+    if( v==depth ){
+      unsigned numReps = m->d_rep_set.d_type_reps[tn].size();
+      Assert( numReps>0 && numReps < 32 );
+      for( unsigned i=0; i<numReps; i++ ){
+        d_def[ 1 << i ].construct_var( m, q, v, i, depth+1 );
+      }
+      d_default = 1 << (numReps - 1);
+    }else{
+      unsigned dom = m->d_domain[tn];
+      d_def[dom].construct_var( m, q, v, currv, depth+1 );
+      d_default = dom;
+    }
+  }
+}
+
+void AbsDef::construct_compose( FirstOrderModelAbs * m, TNode q, TNode n, AbsDef * f,
+                                std::map< unsigned, AbsDef * >& children,
+                                std::map< unsigned, int >& bchildren, std::map< unsigned, int >& vchildren,
+                                std::vector< unsigned >& entry, std::vector< bool >& entry_def ) {
+  if( n.getKind()==OR || n.getKind()==AND ){
+    // short circuiting
+    for( std::map< unsigned, AbsDef * >::iterator it = children.begin(); it != children.end(); ++it ){
+      if( ( it->second->d_value==0 && n.getKind()==AND ) ||
+          ( it->second->d_value==1 && n.getKind()==OR ) ){
+        //std::cout << "Short circuit " << it->second->d_value << " " << entry.size() << "/" << q[0].getNumChildren() << std::endl;
+        unsigned count = q[0].getNumChildren() - entry.size();
+        for( unsigned i=0; i<count; i++ ){
+          entry.push_back( m->d_domain[m->getVariable( q, entry.size() ).getType()] );
+          entry_def.push_back( true );
+        }
+        construct_entry( entry, entry_def, it->second->d_value );
+        for( unsigned i=0; i<count; i++ ){
+          entry.pop_back();
+          entry_def.pop_back();
+        }
+        return;
+      }
+    }
+  }
+  if( entry.size()==q[0].getNumChildren() ){
+    if( f ){
+      if( Trace.isOn("ambqi-check-debug2") ){
+        for( unsigned i=0; i<entry.size(); i++ ){ Trace("ambqi-check-debug2") << "  "; }
+        Trace("ambqi-check-debug2") << "Evaluate uninterpreted function entry..." << std::endl;
+      }
+      //we are composing with an uninterpreted function
+      std::vector< int > values;
+      values.resize( n.getNumChildren(), val_none );
+      for( std::map< unsigned, AbsDef * >::iterator it = children.begin(); it != children.end(); ++it ){
+        values[it->first] = it->second->d_value;
+      }
+      for( std::map< unsigned, int >::iterator it = bchildren.begin(); it != bchildren.end(); ++it ){
+        values[it->first] = it->second;
+      }
+      //look up value(s)
+      f->apply_ucompose( m, q, entry, entry_def, values, vchildren, this );
+    }else{
+      bool incomplete = false;
+      //we are composing with an interpreted function
+      std::vector< TNode > values;
+      values.resize( n.getNumChildren(), TNode::null() );
+      for( std::map< unsigned, AbsDef * >::iterator it = children.begin(); it != children.end(); ++it ){
+        Trace("ambqi-check-debug2") << "composite : " << it->first << " : " << it->second->d_value;
+        if( it->second->d_value>=0 ){
+          if( it->second->d_value>=(int)m->d_rep_set.d_type_reps[n[it->first].getType()].size() ){
+            std::cout << it->second->d_value << " " << n[it->first] << " " << n[it->first].getType() << " " << m->d_rep_set.d_type_reps[n[it->first].getType()].size() << std::endl;
+          }
+          Assert( it->second->d_value<(int)m->d_rep_set.d_type_reps[n[it->first].getType()].size() );
+          values[it->first] = m->d_rep_set.d_type_reps[n[it->first].getType()][it->second->d_value];
+        }else{
+          incomplete = true;
+        }
+        Trace("ambqi-check-debug2") << " ->> " << values[it->first] << std::endl;
+      }
+      for( std::map< unsigned, int >::iterator it = bchildren.begin(); it != bchildren.end(); ++it ){
+        Trace("ambqi-check-debug2") << "   basic :  " << it->first << " : " << it->second;
+        if( it->second>=0 ){
+          Assert( it->second<(int)m->d_rep_set.d_type_reps[n[it->first].getType()].size() );
+          values[it->first] = m->d_rep_set.d_type_reps[n[it->first].getType()][it->second];
+        }else{
+          incomplete = true;
+        }
+        Trace("ambqi-check-debug2") << " ->> " << values[it->first] << std::endl;
+      }
+      Assert( vchildren.empty() );
+      if( incomplete ){
+        Trace("ambqi-check-debug2") << "Construct incomplete entry." << std::endl;
+
+        //if a child is unknown, we must return unknown
+        construct_entry( entry, entry_def, val_unk );
+      }else{
+        if( Trace.isOn("ambqi-check-debug2") ){
+          for( unsigned i=0; i<entry.size(); i++ ){ Trace("ambqi-check-debug2") << "  "; }
+          Trace("ambqi-check-debug2") << "Evaluate interpreted function entry ( ";
+          for( unsigned i=0; i<values.size(); i++ ){
+            Assert( !values[i].isNull() );
+            Trace("ambqi-check-debug2") << values[i] << " ";
+          }
+          Trace("ambqi-check-debug2") << ")..." << std::endl;
+        }
+        //evaluate
+        Node vv = NodeManager::currentNM()->mkNode( n.getKind(), values );
+        vv = Rewriter::rewrite( vv );
+        int v = m->getRepresentativeId( vv );
+        construct_entry( entry, entry_def, v );
+      }
+    }
+  }else{
+    //take product of arguments
+    TypeNode tn = m->getVariable( q, entry.size() ).getType();
+    Assert( m->isValidType( tn ) );
+    unsigned def = m->d_domain[tn];
+    if( Trace.isOn("ambqi-check-debug2") ){
+      for( unsigned i=0; i<entry.size(); i++ ){ Trace("ambqi-check-debug2") << "  "; }
+      Trace("ambqi-check-debug2") << "Take product of arguments" << std::endl;
+    }
+    for( std::map< unsigned, AbsDef * >::iterator it = children.begin(); it != children.end(); ++it ){
+      Assert( it->second!=NULL );
+      //process each child
+      for( std::map< unsigned, AbsDef >::iterator itd = it->second->d_def.begin(); itd != it->second->d_def.end(); ++itd ){
+        if( itd->first!=it->second->d_default && ( def & itd->first )!=0 ){
+          def &= ~( itd->first );
+          //process this value
+          std::map< unsigned, AbsDef * > cchildren;
+          for( std::map< unsigned, AbsDef * >::iterator it2 = children.begin(); it2 != children.end(); ++it2 ){
+            Assert( it2->second!=NULL );
+            std::map< unsigned, AbsDef >::iterator itdf = it2->second->d_def.find( itd->first );
+            if( itdf!=it2->second->d_def.end() ){
+              cchildren[it2->first] = &itdf->second;
+            }else{
+              Assert( it2->second->getDefault()!=NULL );
+              cchildren[it2->first] = it2->second->getDefault();
+            }
+          }
+          if( Trace.isOn("ambqi-check-debug2") ){
+            for( unsigned i=0; i<entry.size(); i++ ){ Trace("ambqi-check-debug2") << "  "; }
+            Trace("ambqi-check-debug2") << "...process : ";
+            debugPrintUInt("ambqi-check-debug2", m->d_rep_set.d_type_reps[tn].size(), itd->first );
+            Trace("ambqi-check-debug2") << " " << children.size() << " " << cchildren.size() << std::endl;
+          }
+          entry.push_back( itd->first );
+          entry_def.push_back( def==0 );
+          construct_compose( m, q, n, f, cchildren, bchildren, vchildren, entry, entry_def );
+          entry_def.pop_back();
+          entry.pop_back();
+          if( def==0 ){
+            break;
+          }
+        }
+      }
+      if( def==0 ){
+        break;
+      }
+    }
+    if( def!=0 ){
+      if( Trace.isOn("ambqi-check-debug2") ){
+        for( unsigned i=0; i<entry.size(); i++ ){ Trace("ambqi-check-debug2") << "  "; }
+        Trace("ambqi-check-debug2") << "Make default argument" << std::endl;
+      }
+      std::map< unsigned, AbsDef * > cdchildren;
+      for( std::map< unsigned, AbsDef * >::iterator it = children.begin(); it != children.end(); ++it ){
+        Assert( it->second->getDefault()!=NULL );
+        cdchildren[it->first] = it->second->getDefault();
+      }
+      if( Trace.isOn("ambqi-check-debug2") ){
+        for( unsigned i=0; i<entry.size(); i++ ){ Trace("ambqi-check-debug2") << "  "; }
+        Trace("ambqi-check-debug2") << "...process default : ";
+        debugPrintUInt("ambqi-check-debug2", m->d_rep_set.getNumRepresentatives( tn ), def );
+        Trace("ambqi-check-debug2") << " " << children.size() << " " << cdchildren.size() << std::endl;
+      }
+      entry.push_back( def );
+      entry_def.push_back( true );
+      construct_compose( m, q, n, f, cdchildren, bchildren, vchildren, entry, entry_def );
+      entry_def.pop_back();
+      entry.pop_back();
+    }
+  }
+}
+
+bool AbsDef::construct( FirstOrderModelAbs * m, TNode q, TNode n, AbsDef * f,
+                        std::map< unsigned, AbsDef * >& children,
+                        std::map< unsigned, int >& bchildren, std::map< unsigned, int >& vchildren,
+                        int varChCount ) {
+  if( Trace.isOn("ambqi-check-debug3") ){
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      Trace("ambqi-check-debug3") << i << " : ";
+      Trace("ambqi-check-debug3") << ((children.find( i )!=children.end()) ? "X" : ".");
+      if( bchildren.find( i )!=bchildren.end() ){
+        Trace("ambqi-check-debug3") << bchildren[i];
+      }else{
+        Trace("ambqi-check-debug3") << ".";
+      }
+      if( vchildren.find( i )!=vchildren.end() ){
+        Trace("ambqi-check-debug3") << vchildren[i];
+      }else{
+        Trace("ambqi-check-debug3") << ".";
+      }
+      Trace("ambqi-check-debug3") << std::endl;
+    }
+    Trace("ambqi-check-debug3") << "varChCount : " << varChCount << std::endl;
+  }
+  if( varChCount==0 || f ){
+    //short-circuit
+    if( n.getKind()==AND || n.getKind()==OR ){
+      for( std::map< unsigned, int >::iterator it = bchildren.begin(); it !=bchildren.end(); ++it ){
+        if( ( it->second==0 && n.getKind()==AND ) ||
+            ( it->second==1 && n.getKind()==OR ) ){
+          construct_def_entry( m, q, q[0], it->second );
+          return true;
+        }
+      }
+    }
+    Trace("ambqi-check-debug2") << "Construct compose..." << std::endl;
+    std::vector< unsigned > entry;
+    std::vector< bool > entry_def;
+    if( f && varChCount>0 ){
+      AbsDef unorm;
+      unorm.construct_compose( m, q, n, f, children, bchildren, vchildren, entry, entry_def );
+      //normalize
+      std::vector< AbsDef* > defs;
+      defs.push_back( &unorm );
+      construct_normalize( m, q, defs );
+    }else{
+      construct_compose( m, q, n, f, children, bchildren, vchildren, entry, entry_def );
+    }
+    Assert( is_normalized() );
+    //if( !is_normalized() ){
+    //  std::cout << "NON NORMALIZED DEFINITION" << std::endl;
+    //  exit( 10 );
+    //}
+    return true;
+  }else if( varChCount==1 && n.getKind()==EQUAL ){
+    Trace("ambqi-check-debug2") << "Expand variable child..." << std::endl;
+    //expand the variable based on its finite domain
+    AbsDef a;
+    a.construct_var( m, q, vchildren.begin()->second, val_none );
+    children[vchildren.begin()->first] = &a;
+    vchildren.clear();
+    std::vector< unsigned > entry;
+    std::vector< bool > entry_def;
+    Trace("ambqi-check-debug2") << "Construct compose with variable..." << std::endl;
+    construct_compose( m, q, n, f, children, bchildren, vchildren, entry, entry_def );
+    return true;
+  }else if( varChCount==2 && n.getKind()==EQUAL ){
+    Trace("ambqi-check-debug2") << "Construct variable equality..." << std::endl;
+    //efficient expansion of the equality
+    construct_var_eq( m, q, vchildren[0], vchildren[1], val_none, val_none );
+    return true;
+  }else{
+    return false;
+  }
+}
+
+void AbsDef::negate() {
+  for( std::map< unsigned, AbsDef >::iterator it = d_def.begin(); it != d_def.end(); ++it ){
+    it->second.negate();
+  }
+  if( d_value==0 ){
+    d_value = 1;
+  }else if( d_value==1 ){
+    d_value = 0;
+  }
+}
+
+Node AbsDef::getFunctionValue( FirstOrderModelAbs * m, TNode op, std::vector< Node >& vars, unsigned depth ) {
+  if( depth==vars.size() ){
+    TypeNode tn = op.getType();
+    if( tn.getNumChildren()>0 ){
+      tn = tn[tn.getNumChildren() - 1];
+    }
+    if( d_value>=0 ){
+      Assert( d_value<(int)m->d_rep_set.d_type_reps[tn].size() );
+      if( tn.isBoolean() ){
+        return NodeManager::currentNM()->mkConst( d_value==1 );
+      }else{
+        return m->d_rep_set.d_type_reps[tn][d_value];
+      }
+    }else{
+      return Node::null();
+    }
+  }else{
+    TypeNode tn = vars[depth].getType();
+    Node curr;
+    curr = d_def[d_default].getFunctionValue( m, op, vars, depth+1 );
+    for( std::map< unsigned, AbsDef >::iterator it = d_def.begin(); it != d_def.end(); ++it ){
+      if( it->first!=d_default ){
+        unsigned id = getId( it->first );
+        Assert( id<m->d_rep_set.d_type_reps[tn].size() );
+        TNode n = m->d_rep_set.d_type_reps[tn][id];
+        Node fv = it->second.getFunctionValue( m, op, vars, depth+1 );
+        if( !curr.isNull() && !fv.isNull() ){
+          curr = NodeManager::currentNM()->mkNode( ITE, vars[depth].eqNode( n ), fv, curr );
+        }else{
+          curr = Node::null();
+        }
+      }
+    }
+    return curr;
+  }
+}
+
+bool AbsDef::isSimple( unsigned n ) {
+  return (n & (n - 1))==0;
+}
+
+unsigned AbsDef::getId( unsigned n, unsigned start, unsigned end ) {
+  Assert( n!=0 );
+  while( (n & ( 1 << start )) == 0 ){
+    start++;
+    if( start==end ){
+      return start;
+    }
+  }
+  return start;
+}
+
+Node AbsDef::evaluate( FirstOrderModelAbs * m, TypeNode retTyp, std::vector< Node >& args ) {
+  std::vector< unsigned > iargs;
+  for( unsigned i=0; i<args.size(); i++ ){
+    unsigned v = 1 << m->getRepresentativeId( args[i] );
+    iargs.push_back( v );
+  }
+  return evaluate( m, retTyp, iargs, 0 );
+}
+
+Node AbsDef::evaluate( FirstOrderModelAbs * m, TypeNode retTyp, std::vector< unsigned >& iargs, unsigned depth ) {
+  if( d_value!=val_none ){
+    if( d_value==val_unk ){
+      return Node::null();
+    }else{
+      Assert( d_value>=0 && d_value<(int)m->d_rep_set.d_type_reps[retTyp].size() );
+      return m->d_rep_set.d_type_reps[retTyp][d_value];
+    }
+  }else{
+    std::map< unsigned, AbsDef >::iterator it = d_def.find( iargs[depth] );
+    if( it==d_def.end() ){
+      return d_def[d_default].evaluate( m, retTyp, iargs, depth+1 );
+    }else{
+      return it->second.evaluate( m, retTyp, iargs, depth+1 );
+    }
+  }
+}
+
+bool AbsDef::is_normalized() {
+  for( std::map< unsigned, AbsDef >::iterator it1 = d_def.begin(); it1 != d_def.end(); ++it1 ){
+    if( !it1->second.is_normalized() ){
+      return false;
+    }
+    for( std::map< unsigned, AbsDef >::iterator it2 = d_def.begin(); it2 != d_def.end(); ++it2 ){
+      if( it1->first!=it2->first && (( it1->first & it2->first )!=0) ){
+        return false;
+      }
+    }
+  }
+  return true;
+}
+
+AbsMbqiBuilder::AbsMbqiBuilder( context::Context* c, QuantifiersEngine* qe ) :
+QModelBuilder( c, qe ){
+  d_true = NodeManager::currentNM()->mkConst( true );
+  d_false = NodeManager::currentNM()->mkConst( false );
+}
+
+
+//------------------------model construction----------------------------
+
+void AbsMbqiBuilder::processBuildModel(TheoryModel* m, bool fullModel) {
+  Trace("ambqi-debug") << "process build model " << fullModel << std::endl;
+  FirstOrderModel* f = (FirstOrderModel*)m;
+  FirstOrderModelAbs* fm = f->asFirstOrderModelAbs();
+  if( fullModel ){
+    Trace("ambqi-model") << "Construct model representation..." << std::endl;
+    //make function values
+    for( std::map<Node, AbsDef * >::iterator it = fm->d_models.begin(); it != fm->d_models.end(); ++it ) {
+      if( it->first.getType().getNumChildren()>1 ){
+        Trace("ambqi-model") << "Construct for " << it->first << "..." << std::endl;
+        m->d_uf_models[ it->first ] = fm->getFunctionValue( it->first, "$x" );
+      }
+    }
+    TheoryEngineModelBuilder::processBuildModel( m, fullModel );
+    //mark that the model has been set
+    fm->markModelSet();
+    //debug the model
+    debugModel( fm );
+  }else{
+    fm->initialize();
+    //process representatives
+    fm->d_rep_id.clear();
+    fm->d_domain.clear();
+
+    //initialize boolean sort
+    TypeNode b = d_true.getType();
+    fm->d_rep_set.d_type_reps[b].clear();
+    fm->d_rep_set.d_type_reps[b].push_back( d_false );
+    fm->d_rep_set.d_type_reps[b].push_back( d_true );
+    fm->d_rep_id[d_false] = 0;
+    fm->d_rep_id[d_true] = 1;
+
+    //initialize unintpreted sorts
+    Trace("ambqi-model") << std::endl << "Making representatives..." << std::endl;
+    for( std::map< TypeNode, std::vector< Node > >::iterator it = fm->d_rep_set.d_type_reps.begin();
+         it != fm->d_rep_set.d_type_reps.end(); ++it ){
+      if( it->first.isSort() ){
+        Assert( !it->second.empty() );
+        //set the domain
+        fm->d_domain[it->first] = 0;
+        Trace("ambqi-model") << "Representatives for " << it->first << " : " << std::endl;
+        for( unsigned i=0; i<it->second.size(); i++ ){
+          if( i<32 ){
+            fm->d_domain[it->first] |= ( 1 << i );
+          }
+          Trace("ambqi-model") << i << " : " << it->second[i] << std::endl;
+          fm->d_rep_id[it->second[i]] = i;
+        }
+        if( it->second.size()>=32 ){
+          fm->d_domain.erase( it->first );
+        }
+      }
+    }
+
+    Trace("ambqi-model") << std::endl << "Making function definitions..." << std::endl;
+    //construct the models for functions
+    for( std::map<Node, AbsDef * >::iterator it = fm->d_models.begin(); it != fm->d_models.end(); ++it ) {
+      Node f = it->first;
+      Trace("ambqi-model-debug") << "Building Model for " << f << std::endl;
+      //reset the model
+      it->second->clear();
+      //get all (non-redundant) f-applications
+      std::vector< TNode > fapps;
+      Trace("ambqi-model-debug") << "Initial terms: " << std::endl;
+      for( size_t i=0; i<fm->d_uf_terms[f].size(); i++ ){
+        Node n = fm->d_uf_terms[f][i];
+        if( d_qe->getTermDatabase()->isTermActive( n ) ){
+          Trace("ambqi-model-debug") << "  " << n << " -> " << fm->getRepresentativeId( n ) << std::endl;
+          fapps.push_back( n );
+        }
+      }
+      if( fapps.empty() ){
+        //choose arbitrary value
+        Node mbt = d_qe->getTermDatabase()->getModelBasisOpTerm(f);
+        Trace("ambqi-model-debug") << "Initial terms empty, add " << mbt << std::endl;
+        fapps.push_back( mbt );
+      }
+      bool fValid = true;
+      for( unsigned i=0; i<fapps[0].getNumChildren(); i++ ){
+        if( fm->d_domain.find( fapps[0][i].getType() )==fm->d_domain.end() ){
+          Trace("ambqi-model") << "Interpretation of " << f << " is not valid.";
+          Trace("ambqi-model") << " (domain for " << fapps[0][i].getType() << " is too large)." << std::endl;
+          fValid = false;
+          break;
+        }
+      }
+      fm->d_models_valid[f] = fValid;
+      if( fValid ){
+        //construct the ambqi model
+        it->second->construct_func( fm, fapps );
+        Trace("ambqi-model-debug") << "Interpretation of " << f << " : " << std::endl;
+        it->second->debugPrint("ambqi-model-debug", fm, fapps[0] );
+        Trace("ambqi-model-debug") << "Simplifying " << f << "..." << std::endl;
+        it->second->simplify( fm, TNode::null(), fapps[0] );
+        Trace("ambqi-model") << "(Simplified) interpretation of " << f << " : " << std::endl;
+        it->second->debugPrint("ambqi-model", fm, fapps[0] );
+
+/*
+        if( Debug.isOn("ambqi-model-debug") ){
+          for( size_t i=0; i<fm->d_uf_terms[f].size(); i++ ){
+            Node e = it->second->evaluate_n( fm, fm->d_uf_terms[f][i] );
+            Debug("ambqi-model-debug") << fm->d_uf_terms[f][i] << " evaluates to " << e << std::endl;
+            Assert( fm->areEqual( e, fm->d_uf_terms[f][i] ) );
+          }
+        }
+*/
+      }
+    }
+  }
+}
+
+
+//--------------------model checking---------------------------------------
+
+//do exhaustive instantiation
+int AbsMbqiBuilder::doExhaustiveInstantiation( FirstOrderModel * fm, Node q, int effort ) {
+  Trace("ambqi-check") << "Exhaustive instantiation " << q << " " << effort << std::endl;
+  if (effort==0) {
+    FirstOrderModelAbs * fma = fm->asFirstOrderModelAbs();
+    bool quantValid = true;
+    for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
+      if( !fma->isValidType( q[0][i].getType() ) ){
+        quantValid = false;
+        Trace("ambqi-inst") << "Interpretation of " << q << " is not valid because of type " << q[0][i].getType() << std::endl;
+        break;
+      }
+    }
+    if( quantValid ){
+      Trace("ambqi-check") << "Compute interpretation..." << std::endl;
+      AbsDef ad;
+      doCheck( fma, q, ad, q[1] );
+      //now process entries
+      Trace("ambqi-inst-debug") << "...Current : " << d_addedLemmas << std::endl;
+      Trace("ambqi-inst") << "Interpretation of " << q << " is : " << std::endl;
+      ad.debugPrint( "ambqi-inst", fma, q[0] );
+      Trace("ambqi-inst") << std::endl;
+      Trace("ambqi-check") << "Add instantiations..." << std::endl;
+      int lem = 0;
+      quantValid = ad.addInstantiations( fma, d_qe, q, lem );
+      Trace("ambqi-inst") << "...Added " << lem << " lemmas." << std::endl;
+      if( lem>0 ){
+        //if we were incomplete but added at least one lemma, we are ok
+        quantValid = true;
+      }
+      d_addedLemmas += lem;
+      Trace("ambqi-inst-debug") << "...Total : " << d_addedLemmas << std::endl;
+    }
+    return quantValid ? 1 : 0;
+  }else{
+    return 1;
+  }
+}
+
+bool AbsMbqiBuilder::doCheck( FirstOrderModelAbs * m, TNode q, AbsDef & ad, TNode n ) {
+  Assert( n.getKind()!=FORALL );
+  if( n.getKind()==NOT && n[0].getKind()!=FORALL ){
+    doCheck( m, q, ad, n[0] );
+    ad.negate();
+    return true;
+  }else{
+    std::map< unsigned, AbsDef > children;
+    std::map< unsigned, int > bchildren;
+    std::map< unsigned, int > vchildren;
+    int varChCount = 0;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      if( n[i].getKind()==FORALL ){
+        bchildren[i] = AbsDef::val_unk;
+      }else if( n[i].getKind() == BOUND_VARIABLE ){
+        varChCount++;
+        vchildren[i] = m->d_var_index[q][ m->getVariableId( q, n[i] ) ];
+        //vchildren[i] = m->getVariableId( q, n[i] );
+      }else if( m->hasTerm( n[i] ) ){
+        bchildren[i] = m->getRepresentativeId( n[i] );
+      }else{
+        if( !doCheck( m, q, children[i], n[i] ) ){
+          bchildren[i] = AbsDef::val_unk;
+          children.erase( i );
+        }
+      }
+    }
+    //convert to pointers
+    std::map< unsigned, AbsDef * > pchildren;
+    for( std::map< unsigned, AbsDef >::iterator it = children.begin(); it != children.end(); ++it ){
+      pchildren[it->first] = &it->second;
+    }
+    //construct the interpretation
+    Trace("ambqi-check-debug") << "Compute Interpretation of " << n << " " << n.getKind() << std::endl;
+    if( n.getKind() == APPLY_UF || n.getKind() == VARIABLE || n.getKind() == SKOLEM ){
+      Node op;
+      if( n.getKind() == APPLY_UF ){
+        op = n.getOperator();
+      }else{
+        op = n;
+      }
+      //uninterpreted compose
+      if( m->d_models_valid[op] ){
+        ad.construct( m, q, n, m->d_models[op], pchildren, bchildren, vchildren, varChCount );
+      }else{
+        Trace("ambqi-check-debug") << "** Cannot produce interpretation for " << n << " (no function model)" << std::endl;
+        return false;
+      }
+    }else if( !ad.construct( m, q, n, NULL, pchildren, bchildren, vchildren, varChCount ) ){
+      Trace("ambqi-check-debug") << "** Cannot produce interpretation for " << n << " (variables are children of interpreted symbol)" << std::endl;
+      return false;
+    }
+    Trace("ambqi-check-try") << "Interpretation for " << n << " is : " << std::endl;
+    ad.debugPrint("ambqi-check-try", m, q[0] );
+    ad.simplify( m, q, q[0] );
+    Trace("ambqi-check-debug") << "(Simplified) Interpretation for " << n << " is : " << std::endl;
+    ad.debugPrint("ambqi-check-debug", m, q[0] );
+    Trace("ambqi-check-debug") << std::endl;
+    return true;
+  }
+}
diff --git a/src/theory/quantifiers/ambqi_builder.h b/src/theory/quantifiers/ambqi_builder.h
new file mode 100644
index 0000000..0adaef6
--- /dev/null
+++ b/src/theory/quantifiers/ambqi_builder.h
@@ -0,0 +1,103 @@
+/*********************                                                        */
+/*! \file ambqi_builder.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Clark Barrett
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Abstract MBQI model builder class
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef ABSTRACT_MBQI_BUILDER
+#define ABSTRACT_MBQI_BUILDER
+
+#include "theory/quantifiers/model_builder.h"
+#include "theory/quantifiers/first_order_model.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+class FirstOrderModelAbs;
+
+//representiation of function and term interpretations
+class AbsDef
+{
+private:
+  bool addInstantiations( FirstOrderModelAbs * m, QuantifiersEngine * qe, TNode q, std::vector< Node >& terms, int& inst, unsigned depth );
+  void construct_compose( FirstOrderModelAbs * m, TNode q, TNode n, AbsDef * f,
+                          std::map< unsigned, AbsDef * >& children,
+                          std::map< unsigned, int >& bchildren, std::map< unsigned, int >& vchildren,
+                          std::vector< unsigned >& entry, std::vector< bool >& entry_def );
+  void construct_entry( std::vector< unsigned >& entry, std::vector< bool >& entry_def, int v, unsigned depth = 0 );
+  void construct_def_entry( FirstOrderModelAbs * m, TNode q, TNode n, int v, unsigned depth = 0 );
+  void apply_ucompose( FirstOrderModelAbs * m, TNode q,
+                       std::vector< unsigned >& entry, std::vector< bool >& entry_def, std::vector< int >& terms,
+                       std::map< unsigned, int >& vchildren, AbsDef * a, unsigned depth = 0 );
+  void construct_var_eq( FirstOrderModelAbs * m, TNode q, unsigned v1, unsigned v2, int curr, int currv, unsigned depth = 0 );
+  void construct_var( FirstOrderModelAbs * m, TNode q, unsigned v, int currv, unsigned depth = 0 );
+  void get_defs( unsigned u, std::vector< AbsDef * >& defs );
+  void construct_normalize( FirstOrderModelAbs * m, TNode q, std::vector< AbsDef * >& defs, unsigned depth = 0 );
+public:
+  enum {
+    val_none = -1,
+    val_unk = -2,
+  };
+  AbsDef() : d_default( 0 ), d_value( -1 ){}
+  std::map< unsigned, AbsDef > d_def;
+  unsigned d_default;
+  int d_value;
+
+  void clear() { d_def.clear(); d_default = 0; d_value = -1; }
+  AbsDef * getDefault() { return &d_def[d_default]; }
+  void construct_func( FirstOrderModelAbs * m, std::vector< TNode >& fapps, unsigned depth = 0 );
+  void debugPrintUInt( const char * c, unsigned dSize, unsigned u ) const;
+  void debugPrint( const char * c, FirstOrderModelAbs * m, TNode f, unsigned depth = 0 ) const;
+  void simplify( FirstOrderModelAbs * m, TNode q, TNode n, unsigned depth = 0 );
+  int addInstantiations( FirstOrderModelAbs * m, QuantifiersEngine * qe, Node q, int& inst ){
+    std::vector< Node > terms;
+    terms.resize( q[0].getNumChildren() );
+    return addInstantiations( m, qe, q, terms, inst, 0 );
+  }
+  bool construct( FirstOrderModelAbs * m, TNode q, TNode n, AbsDef * f,
+                  std::map< unsigned, AbsDef * >& children,
+                  std::map< unsigned, int >& bchildren,
+                  std::map< unsigned, int >& vchildren,
+                  int varChCount );
+  void negate();
+  Node getFunctionValue( FirstOrderModelAbs * m, TNode op, std::vector< Node >& vars, unsigned depth = 0 );
+  static bool isSimple( unsigned n );
+  static unsigned getId( unsigned n, unsigned start=0, unsigned end=32 );
+  Node evaluate( FirstOrderModelAbs * m, TypeNode retType, std::vector< Node >& args );
+  Node evaluate( FirstOrderModelAbs * m, TypeNode retType, std::vector< unsigned >& iargs, unsigned depth = 0 );
+  //for debugging
+  bool is_normalized();
+};
+
+class AbsMbqiBuilder : public QModelBuilder
+{
+  friend class AbsDef;
+private:
+  Node d_true;
+  Node d_false;
+  bool doCheck( FirstOrderModelAbs * m, TNode q, AbsDef & ad, TNode n );
+public:
+  AbsMbqiBuilder( context::Context* c, QuantifiersEngine* qe );
+  ~AbsMbqiBuilder() throw() {}
+  //process build model
+  void processBuildModel(TheoryModel* m, bool fullModel);
+  //do exhaustive instantiation
+  int doExhaustiveInstantiation( FirstOrderModel * fm, Node q, int effort );
+};
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/anti_skolem.cpp b/src/theory/quantifiers/anti_skolem.cpp
new file mode 100644
index 0000000..908aeec
--- /dev/null
+++ b/src/theory/quantifiers/anti_skolem.cpp
@@ -0,0 +1,285 @@
+/*********************                                                        */
+/*! \file anti_skolem.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of anti-skolemization, e.g.:
+ **          ( forall x. P[ f( x ) ] ^ forall x. Q[ f( x ) ]  ) => forall x. exists y. ( P[ y ] ^ Q[ y ] )
+ **/
+
+#include "theory/quantifiers/anti_skolem.h"
+
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers_engine.h"
+
+using namespace std;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+struct sortTypeOrder {
+  TermDb* d_tdb;
+  bool operator() (TypeNode i, TypeNode j) {
+    return d_tdb->getIdForType( i )<d_tdb->getIdForType( j );
+  }
+};
+
+void QuantAntiSkolem::SkQuantTypeCache::add( std::vector< TypeNode >& typs, Node q, unsigned index ) {
+  if( index==typs.size() ){
+    Assert( std::find( d_quants.begin(), d_quants.end(), q )==d_quants.end() );
+    d_quants.push_back( q );
+  }else{
+    d_children[typs[index]].add( typs, q, index+1 );
+  }
+}
+
+void QuantAntiSkolem::SkQuantTypeCache::sendLemmas( QuantAntiSkolem * ask ) {
+  for( std::map< TypeNode, SkQuantTypeCache >::iterator it = d_children.begin(); it != d_children.end(); ++it ){
+    it->second.sendLemmas( ask );
+  }
+  if( !d_quants.empty() ){
+    ask->sendAntiSkolemizeLemma( d_quants );
+  }
+}
+
+bool QuantAntiSkolem::CDSkQuantCache::add( context::Context* c, std::vector< Node >& quants, unsigned index ) {
+  if( index==quants.size() ){
+    if( !d_valid.get() ){
+      d_valid.set( true );
+      return true;
+    }else{
+      return false;
+    }
+  }else{
+    Node n = quants[index];
+    std::map< Node, CDSkQuantCache* >::iterator it = d_data.find( n );
+    CDSkQuantCache* skc;
+    if( it==d_data.end() ){
+      skc = new CDSkQuantCache( c );
+      d_data[n] = skc;
+    }else{
+      skc = it->second;
+    }
+    return skc->add( c, quants, index+1 );
+  }
+}
+
+QuantAntiSkolem::CDSkQuantCache::~CDSkQuantCache() {
+  for(std::map< Node, CDSkQuantCache* >::iterator i = d_data.begin(), iend = d_data.end();
+      i != iend; ++i){
+    CDSkQuantCache* current = (*i).second;
+    Assert(current != NULL);
+    delete current;
+  }
+}
+
+QuantAntiSkolem::QuantAntiSkolem(QuantifiersEngine* qe)
+    : QuantifiersModule(qe) {
+  d_sqc = new CDSkQuantCache(qe->getUserContext());
+}
+
+QuantAntiSkolem::~QuantAntiSkolem() { delete d_sqc; }
+
+/* Call during quantifier engine's check */
+void QuantAntiSkolem::check( Theory::Effort e, unsigned quant_e ) {
+  if( quant_e==QuantifiersEngine::QEFFORT_STANDARD ){
+    d_sqtc.clear();
+    for( unsigned i=0; i<d_quantEngine->getModel()->getNumAssertedQuantifiers(); i++ ){
+      Node q = d_quantEngine->getModel()->getAssertedQuantifier( i );
+      if( d_quant_processed.find( q )==d_quant_processed.end() ){
+        d_quant_processed[q] = true;
+        Trace("anti-sk") << "Process quantified formula : " << q << std::endl;
+        bool success = false;
+        if( d_quant_sip[q].init( q[1] ) ){
+          Trace("anti-sk") << "- Partitioned to single invocation parts : " << std::endl;
+          d_quant_sip[q].debugPrint( "anti-sk" );
+          //check if it is single invocation
+          if( d_quant_sip[q].isPurelySingleInvocation() ){
+            //for now, only do purely single invocation
+            success = true;
+          }
+        }else{
+          Trace("anti-sk") << "- Failed to initialize." << std::endl;
+        }
+        if( success ){
+          //sort the argument variables
+          d_ask_types[q].insert( d_ask_types[q].end(), d_quant_sip[q].d_arg_types.begin(), d_quant_sip[q].d_arg_types.end() );
+          std::map< TypeNode, std::vector< unsigned > > indices;
+          for( unsigned j=0; j<d_ask_types[q].size(); j++ ){
+            indices[d_ask_types[q][j]].push_back( j );
+          }
+          sortTypeOrder sto;
+          sto.d_tdb = d_quantEngine->getTermDatabase();
+          std::sort( d_ask_types[q].begin(), d_ask_types[q].end(), sto );
+          //increment j on inner loop
+          for( unsigned j=0; j<d_ask_types[q].size();  ){
+            TypeNode curr = d_ask_types[q][j];
+            for( unsigned k=0; k<indices[curr].size(); k++ ){
+              Assert( d_ask_types[q][j]==curr );
+              d_ask_types_index[q].push_back( indices[curr][k] );
+              j++;
+            }
+          }
+          Assert( d_ask_types_index[q].size()==d_ask_types[q].size() );
+        }else{
+          d_quant_sip.erase( q );
+        }
+      }
+      //now, activate the quantified formula
+      std::map< Node, std::vector< TypeNode > >::iterator it = d_ask_types.find( q );
+      if( it!=d_ask_types.end() ){
+        d_sqtc.add( it->second, q );        
+      }
+    }
+    Trace("anti-sk-debug") << "Process lemmas..." << std::endl;
+    //send out lemmas for each anti-skolemizable group of quantified formulas
+    d_sqtc.sendLemmas( this );
+    Trace("anti-sk-debug") << "...Finished process lemmas" << std::endl;
+  }
+}
+
+bool QuantAntiSkolem::sendAntiSkolemizeLemma( std::vector< Node >& quants, bool pconnected ) {
+  Assert( !quants.empty() );
+  std::sort( quants.begin(), quants.end() );
+  if( d_sqc->add( d_quantEngine->getUserContext(), quants ) ){
+    //partition into connected components
+    if( pconnected && quants.size()>1 ){
+      Trace("anti-sk-debug") << "Partition into connected components..." << std::endl;
+      int eqc_count = 0;
+      std::map< Node, int > func_to_eqc;
+      std::map< int, std::vector< Node > > eqc_to_func;
+      std::map< int, std::vector< Node > > eqc_to_quant;
+      for( unsigned i=0; i<quants.size(); i++ ){
+        Node q = quants[i];
+        std::vector< int > eqcs;
+        for( std::map< Node, bool >::iterator it = d_quant_sip[q].d_funcs.begin(); it != d_quant_sip[q].d_funcs.end(); ++it ){
+          Node f = it->first;
+          std::map< Node, int >::iterator itf = func_to_eqc.find( f );
+          if( itf == func_to_eqc.end() ){
+            if( eqcs.empty() ){
+              func_to_eqc[f] = eqc_count;
+              eqc_to_func[eqc_count].push_back( f );
+              eqc_count++;
+            }else{
+              func_to_eqc[f] = eqcs[0];
+              eqc_to_func[eqcs[0]].push_back( f );
+            }
+          }
+          if( std::find( eqcs.begin(), eqcs.end(), func_to_eqc[f] )==eqcs.end() ){
+            eqcs.push_back( func_to_eqc[f] );
+          }
+        }
+        Assert( !eqcs.empty() );
+        //merge equivalence classes
+        int id = eqcs[0];
+        eqc_to_quant[id].push_back( q );
+        for( unsigned j=1; j<eqcs.size(); j++ ){
+          int id2 = eqcs[j];
+          std::map< int, std::vector< Node > >::iterator itef = eqc_to_func.find( id2 );
+          if( itef!=eqc_to_func.end() ){
+            for( unsigned k=0; k<itef->second.size(); k++ ){
+              func_to_eqc[itef->second[k]] = id;
+              eqc_to_func[id].push_back( itef->second[k] );
+            }
+            eqc_to_func.erase( id2 );
+          }
+          itef = eqc_to_quant.find( id2 );
+          if( itef!=eqc_to_quant.end() ){
+            eqc_to_quant[id].insert( eqc_to_quant[id].end(), itef->second.begin(), itef->second.end() );
+            eqc_to_quant.erase( id2 );
+          }
+        }
+      }
+      if( eqc_to_quant.size()>1 ){
+        bool addedLemma = false;
+        for( std::map< int, std::vector< Node > >::iterator it = eqc_to_quant.begin(); it != eqc_to_quant.end(); ++it ){
+          Assert( it->second.size()<quants.size() );
+          bool ret = sendAntiSkolemizeLemma( it->second, false );
+          addedLemma = addedLemma || ret;
+        }
+        return addedLemma;
+      }
+    }    
+    
+    Trace("anti-sk") << "Anti-skolemize group : " << std::endl;
+    for( unsigned i=0; i<quants.size(); i++ ){
+      Trace("anti-sk") << "   " << quants[i] << std::endl;
+    }
+
+    std::vector< Node > outer_vars;
+    std::vector< Node > inner_vars;
+    Node q = quants[0];
+    for( unsigned i=0; i<d_ask_types[q].size(); i++ ){
+      Node v = NodeManager::currentNM()->mkBoundVar( d_ask_types[q][i] );
+      Trace("anti-sk-debug") << "Outer var " << i << " : " << v << std::endl;
+      outer_vars.push_back( v );
+    }
+
+    std::map< Node, Node > func_to_var;
+    std::vector< Node > conj;
+    for( unsigned i=0; i<quants.size(); i++ ){
+      Node q = quants[i];
+      Trace("anti-sk-debug") << "Process " << q << std::endl;
+      std::vector< Node > subs_lhs;
+      std::vector< Node > subs_rhs;
+      //get outer variable substitution
+      Assert( d_ask_types_index[q].size()==d_ask_types[q].size() );
+      for( unsigned j=0; j<d_ask_types_index[q].size(); j++ ){
+        Trace("anti-sk-debug") << " o_subs : " << d_quant_sip[q].d_si_vars[d_ask_types_index[q][j]] << " -> " << outer_vars[j] << std::endl;
+        subs_lhs.push_back( d_quant_sip[q].d_si_vars[d_ask_types_index[q][j]] );
+        subs_rhs.push_back( outer_vars[j] );
+      }
+      //get function substitution
+      for( std::map< Node, bool >::iterator it = d_quant_sip[q].d_funcs.begin(); it != d_quant_sip[q].d_funcs.end(); ++it ){
+        Node f = it->first;
+        Node fv = d_quant_sip[q].d_func_fo_var[it->first];
+        if( func_to_var.find( f )==func_to_var.end() ){
+          Node v = NodeManager::currentNM()->mkBoundVar( fv.getType() );
+          Trace("anti-sk-debug") << "Inner var for " << f << " : " << v << std::endl;
+          inner_vars.push_back( v );
+          func_to_var[f] = v;
+        }
+        subs_lhs.push_back( fv );
+        subs_rhs.push_back( func_to_var[f] );
+        Trace("anti-sk-debug") << " i_subs : " << fv << " -> " << func_to_var[f] << std::endl;
+      }
+      Node c = d_quant_sip[q].getSingleInvocation();
+      if( !subs_lhs.empty() ){
+        c = c.substitute( subs_lhs.begin(), subs_lhs.end(), subs_rhs.begin(), subs_rhs.end() );
+      }
+      conj.push_back( c );
+    }
+    Node body = conj.size()==1 ? conj[0] : NodeManager::currentNM()->mkNode( kind::AND, conj );
+    if( !inner_vars.empty() ){
+      Node bvl = NodeManager::currentNM()->mkNode( kind::BOUND_VAR_LIST, inner_vars );
+      body = NodeManager::currentNM()->mkNode( kind::EXISTS, bvl, body );
+    }
+    if( !outer_vars.empty() ){
+      Node bvl = NodeManager::currentNM()->mkNode( kind::BOUND_VAR_LIST, outer_vars );
+      body = NodeManager::currentNM()->mkNode( kind::FORALL, bvl, body );
+    }
+    Trace("anti-sk") << "Produced : " << body << std::endl;
+    quants.push_back( body.negate() );
+    Node lem = NodeManager::currentNM()->mkNode( kind::AND, quants ).negate();
+    Trace("anti-sk-lemma") << "Anti-skolemize lemma : " << lem << std::endl;
+    quants.pop_back();
+    return d_quantEngine->addLemma( lem ); 
+  }else{
+    return false;
+  }
+}
+
+}/* namespace CVC4::theory::quantifiers */
+}/* namespace CVC4::theory */
+}/* namespace CVC4 */
diff --git a/src/theory/quantifiers/anti_skolem.h b/src/theory/quantifiers/anti_skolem.h
new file mode 100644
index 0000000..c996b17
--- /dev/null
+++ b/src/theory/quantifiers/anti_skolem.h
@@ -0,0 +1,86 @@
+/*********************                                                        */
+/*! \file anti_skolem.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief anti-skolemization
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANT_ANTI_SKOLEM_H
+#define __CVC4__THEORY__QUANT_ANTI_SKOLEM_H
+
+#include <map>
+#include <vector>
+
+#include "expr/node.h"
+#include "expr/type_node.h"
+#include "context/cdhashset.h"
+#include "context/cdo.h"
+#include "theory/quantifiers/ce_guided_single_inv.h"
+#include "theory/quantifiers_engine.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+class QuantAntiSkolem : public QuantifiersModule {
+public:
+  QuantAntiSkolem( QuantifiersEngine * qe );
+  virtual ~QuantAntiSkolem();
+
+  bool sendAntiSkolemizeLemma( std::vector< Node >& quants,
+                               bool pconnected = true );
+
+  /* Call during quantifier engine's check */
+  void check( Theory::Effort e, unsigned quant_e );
+  /* Called for new quantifiers */
+  void registerQuantifier( Node q ) {}
+  void assertNode( Node n ) {}
+  /** Identify this module (for debugging, dynamic configuration, etc..) */
+  std::string identify() const { return "QuantAntiSkolem"; }
+
+ private:
+  typedef context::CDHashSet<Node, NodeHashFunction> NodeSet;
+
+  std::map< Node, bool > d_quant_processed;
+  std::map< Node, SingleInvocationPartition > d_quant_sip;
+  std::map< Node, std::vector< TypeNode > > d_ask_types;
+  std::map< Node, std::vector< unsigned > > d_ask_types_index;
+  
+  class SkQuantTypeCache {
+  public:
+    std::map< TypeNode, SkQuantTypeCache > d_children;
+    std::vector< Node > d_quants;
+    void add( std::vector< TypeNode >& typs, Node q, unsigned index = 0 );
+    void clear() { 
+      d_children.clear();
+      d_quants.clear(); 
+    }
+    void sendLemmas( QuantAntiSkolem * ask );
+  }; 
+  SkQuantTypeCache d_sqtc;
+  
+  class CDSkQuantCache {
+  public:
+    CDSkQuantCache( context::Context* c ) : d_valid( c, false ){}
+    ~CDSkQuantCache();
+    std::map< Node, CDSkQuantCache* > d_data;
+    context::CDO< bool > d_valid;
+    bool add( context::Context* c, std::vector< Node >& quants, unsigned index = 0 );
+  };
+  CDSkQuantCache * d_sqc;
+}; /* class QuantAntiSkolem */
+
+}/* namespace CVC4::theory::quantifiers */
+}/* namespace CVC4::theory */
+}/* namespace CVC4 */
+
+#endif
diff --git a/src/theory/quantifiers/bounded_integers.cpp b/src/theory/quantifiers/bounded_integers.cpp
new file mode 100644
index 0000000..6b53612
--- /dev/null
+++ b/src/theory/quantifiers/bounded_integers.cpp
@@ -0,0 +1,888 @@
+/*********************                                                        */
+/*! \file bounded_integers.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Bounded integers module
+ **
+ ** This class manages integer bounds for quantifiers
+ **/
+
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/bounded_integers.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/model_engine.h"
+#include "theory/quantifiers/quant_util.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/theory_engine.h"
+
+using namespace CVC4;
+using namespace std;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+using namespace CVC4::kind;
+
+
+BoundedIntegers::IntRangeModel::IntRangeModel(BoundedIntegers * bi, Node r, context::Context* c, context::Context* u, bool isProxy) : d_bi(bi),
+      d_range(r), d_curr_max(-1), d_lit_to_range(u), d_range_assertions(c), d_has_range(c,false), d_curr_range(c,-1), d_ranges_proxied(u) { 
+  if( options::fmfBoundLazy() ){
+    d_proxy_range = isProxy ? r : NodeManager::currentNM()->mkSkolem( "pbir", r.getType() );
+  }else{
+    d_proxy_range = r;
+  }
+  if( !isProxy ){
+    Trace("bound-int") << "Introduce proxy " << d_proxy_range << " for " << d_range << std::endl;
+  }
+}
+
+void BoundedIntegers::IntRangeModel::initialize() {
+  //add initial split lemma
+  Node ltr = NodeManager::currentNM()->mkNode( LT, d_proxy_range, NodeManager::currentNM()->mkConst( Rational(0) ) );
+  ltr = Rewriter::rewrite( ltr );
+  Trace("bound-int-lemma") << " *** bound int: initial split on " << ltr << std::endl;
+  d_bi->getQuantifiersEngine()->getOutputChannel().split( ltr );
+  Node ltr_lit = ltr.getKind()==NOT ? ltr[0] : ltr;
+  d_range_literal[-1] = ltr_lit;
+  d_lit_to_range[ltr_lit] = -1;
+  d_lit_to_pol[ltr_lit] = ltr.getKind()!=NOT;
+  //register with bounded integers
+  Trace("bound-int-debug") << "Literal " << ltr_lit << " is literal for " << d_range << std::endl;
+  d_bi->addLiteralFromRange(ltr_lit, d_range);
+}
+
+void BoundedIntegers::IntRangeModel::assertNode(Node n) {
+  bool pol = n.getKind()!=NOT;
+  Node nlit = n.getKind()==NOT ? n[0] : n;
+  if( d_lit_to_range.find( nlit )!=d_lit_to_range.end() ){
+    int vrange = d_lit_to_range[nlit];
+    Trace("bound-int-assert") << "With polarity = " << pol << " (req "<< d_lit_to_pol[nlit] << ")";
+    Trace("bound-int-assert") << ", found literal " << nlit;
+    Trace("bound-int-assert") << ", it is bound literal " << vrange << " for " << d_range << std::endl;
+    d_range_assertions[nlit] = (pol==d_lit_to_pol[nlit]);
+    if( pol!=d_lit_to_pol[nlit] ){
+      //check if we need a new split?
+      if( !d_has_range ){
+        bool needsRange = true;
+        for( NodeIntMap::iterator it = d_lit_to_range.begin(); it != d_lit_to_range.end(); ++it ){
+          if( d_range_assertions.find( (*it).first )==d_range_assertions.end() ){
+            Trace("bound-int-debug") << "Does not need range because of " << (*it).first << std::endl;
+            needsRange = false;
+            break;
+          }
+        }
+        if( needsRange ){
+          allocateRange();
+        }
+      }
+    }else{
+      if (!d_has_range || vrange<d_curr_range ){
+        Trace("bound-int-bound") << "Successfully bound " << d_range << " to " << vrange << std::endl;
+        d_curr_range = vrange;
+      }
+      //set the range
+      d_has_range = true;
+    }
+  }else{
+    Message() << "Could not find literal " << nlit << " for range " << d_range << std::endl;
+    exit(0);
+  }
+}
+
+void BoundedIntegers::IntRangeModel::allocateRange() {
+  d_curr_max++;
+  int newBound = d_curr_max;
+  Trace("bound-int-proc") << "Allocate range bound " << newBound << " for " << d_range << std::endl;
+  //TODO: newBound should be chosen in a smarter way
+  Node ltr = NodeManager::currentNM()->mkNode( LEQ, d_proxy_range, NodeManager::currentNM()->mkConst( Rational(newBound) ) );
+  ltr = Rewriter::rewrite( ltr );
+  Trace("bound-int-lemma") << " *** bound int: split on " << ltr << std::endl;
+  d_bi->getQuantifiersEngine()->getOutputChannel().split( ltr );
+  Node ltr_lit = ltr.getKind()==NOT ? ltr[0] : ltr;
+  d_range_literal[newBound] = ltr_lit;
+  d_lit_to_range[ltr_lit] = newBound;
+  d_lit_to_pol[ltr_lit] = ltr.getKind()!=NOT;
+  //register with bounded integers
+  d_bi->addLiteralFromRange(ltr_lit, d_range);
+}
+
+Node BoundedIntegers::IntRangeModel::getNextDecisionRequest() {
+  //request the current cardinality as a decision literal, if not already asserted
+  for( NodeIntMap::iterator it = d_lit_to_range.begin(); it != d_lit_to_range.end(); ++it ){
+    int i = (*it).second;
+    if( !d_has_range || i<d_curr_range ){
+      Node rn = (*it).first;
+      Assert( !rn.isNull() );
+      if( d_range_assertions.find( rn )==d_range_assertions.end() ){
+        if (!d_lit_to_pol[rn]) {
+          rn = rn.negate();
+        }
+        Trace("bound-int-dec-debug") << "For " << d_range << ", make decision " << rn << " to make range " << i << std::endl;
+        return rn;
+      }
+    }
+  }
+  return Node::null();
+}
+
+bool BoundedIntegers::IntRangeModel::proxyCurrentRange() {
+  //Trace("model-engine") << "Range(" << d_range << ") currently is " << d_curr_max.get() << std::endl;
+  if( d_range!=d_proxy_range ){
+    //int curr = d_curr_range.get();
+    int curr = d_curr_max;
+    if( d_ranges_proxied.find( curr )==d_ranges_proxied.end() ){
+      d_ranges_proxied[curr] = true;
+      Assert( d_range_literal.find( curr )!=d_range_literal.end() );
+      Node lem = NodeManager::currentNM()->mkNode( EQUAL, d_range_literal[curr].negate(),
+                   NodeManager::currentNM()->mkNode( LEQ, d_range, NodeManager::currentNM()->mkConst( Rational(curr) ) ) );
+      Trace("bound-int-lemma") << "*** bound int : proxy lemma : " << lem << std::endl;
+      d_bi->getQuantifiersEngine()->addLemma( lem );
+      return true;
+    }
+  }
+  return false;
+}
+
+
+
+
+
+BoundedIntegers::BoundedIntegers(context::Context* c, QuantifiersEngine* qe) :
+QuantifiersModule(qe), d_assertions(c){
+
+}
+
+BoundedIntegers::~BoundedIntegers() { 
+  for( std::map< Node, RangeModel * >::iterator it = d_rms.begin(); it != d_rms.end(); ++it ){
+    delete it->second;
+  }
+}
+
+void BoundedIntegers::presolve() {
+  d_bnd_it.clear();
+}
+
+bool BoundedIntegers::isBound( Node f, Node v ) {
+  return std::find( d_set[f].begin(), d_set[f].end(), v )!=d_set[f].end();
+}
+
+bool BoundedIntegers::hasNonBoundVar( Node f, Node b, std::map< Node, bool >& visited ) {
+  if( visited.find( b )==visited.end() ){
+    visited[b] = true;
+    if( b.getKind()==BOUND_VARIABLE ){
+      if( !isBound( f, b ) ){
+        return true;
+      }
+    }else{
+      for( unsigned i=0; i<b.getNumChildren(); i++ ){
+        if( hasNonBoundVar( f, b[i], visited ) ){
+          return true;
+        }
+      }
+    }
+  }
+  return false;
+}
+bool BoundedIntegers::hasNonBoundVar( Node f, Node b ) {
+  std::map< Node, bool > visited;
+  return hasNonBoundVar( f, b, visited );
+}
+
+bool BoundedIntegers::processEqDisjunct( Node q, Node n, Node& v, std::vector< Node >& v_cases ) {
+  if( n.getKind()==EQUAL ){
+    for( unsigned i=0; i<2; i++ ){
+      Node t = n[i];
+      if( !hasNonBoundVar( q, n[1-i] ) ){
+        if( t==v ){
+          v_cases.push_back( n[1-i] );
+          return true;
+        }else if( v.isNull() && t.getKind()==BOUND_VARIABLE ){
+          v = t;
+          v_cases.push_back( n[1-i] );
+          return true;
+        }
+      }
+    }
+  }
+  return false;
+}
+
+void BoundedIntegers::processMatchBoundVars( Node q, Node n, std::vector< Node >& bvs, std::map< Node, bool >& visited ){
+  if( visited.find( n )==visited.end() ){
+    visited[n] = true;
+    if( n.getKind()==BOUND_VARIABLE && !isBound( q, n ) ){
+      bvs.push_back( n );
+    //injective operators
+    }else if( n.getKind()==kind::APPLY_CONSTRUCTOR ){
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        processMatchBoundVars( q, n[i], bvs, visited );
+      }
+    }    
+  }
+}
+
+void BoundedIntegers::process( Node q, Node n, bool pol,
+                               std::map< Node, unsigned >& bound_lit_type_map,
+                               std::map< int, std::map< Node, Node > >& bound_lit_map,
+                               std::map< int, std::map< Node, bool > >& bound_lit_pol_map,
+                               std::map< int, std::map< Node, Node > >& bound_int_range_term,
+                               std::map< Node, std::vector< Node > >& bound_fixed_set ){
+  if( n.getKind()==OR || n.getKind()==AND ){
+    if( (n.getKind()==OR)==pol ){
+      for( unsigned i=0; i<n.getNumChildren(); i++) {
+        process( q, n[i], pol, bound_lit_type_map, bound_lit_map, bound_lit_pol_map, bound_int_range_term, bound_fixed_set );
+      }
+    }else{
+      //if we are ( x != t1 ^ ...^ x != tn ), then x can be bound to { t1...tn }
+      Node conj = n;
+      if( !pol ){
+        conj = TermDb::simpleNegate( conj );
+      }
+      Trace("bound-int-debug") << "Process possible finite disequality conjunction : " << conj << std::endl;
+      Assert( conj.getKind()==AND );
+      Node v;
+      std::vector< Node > v_cases;
+      bool success = true;
+      for( unsigned i=0; i<conj.getNumChildren(); i++ ){
+        if( conj[i].getKind()==NOT && processEqDisjunct( q, conj[i][0], v, v_cases ) ){
+          //continue
+        }else{
+          Trace("bound-int-debug") << "...failed due to " << conj[i] << std::endl;
+          success = false;
+          break;
+        }
+      }
+      if( success && !isBound( q, v ) ){
+        Trace("bound-int-debug") << "Success with variable " << v << std::endl;
+        bound_lit_type_map[v] = BOUND_FIXED_SET;
+        bound_lit_map[3][v] = n;
+        bound_lit_pol_map[3][v] = pol;
+        bound_fixed_set[v].clear();
+        bound_fixed_set[v].insert( bound_fixed_set[v].end(), v_cases.begin(), v_cases.end() );
+      }
+    }
+  }else if( n.getKind()==EQUAL ){
+    if( !pol ){
+      // non-applied DER on x != t, x can be bound to { t }
+      Node v;
+      std::vector< Node > v_cases;
+      if( processEqDisjunct( q, n, v, v_cases ) ){
+        if( !isBound( q, v ) ){
+          bound_lit_type_map[v] = BOUND_FIXED_SET;
+          bound_lit_map[3][v] = n;
+          bound_lit_pol_map[3][v] = pol;
+          Assert( v_cases.size()==1 );
+          bound_fixed_set[v].clear();
+          bound_fixed_set[v].push_back( v_cases[0] );
+        }
+      }
+    }  
+  }else if( n.getKind()==NOT ){
+    process( q, n[0], !pol, bound_lit_type_map, bound_lit_map, bound_lit_pol_map, bound_int_range_term, bound_fixed_set );
+  }else if( n.getKind()==GEQ ){
+    if( n[0].getType().isInteger() ){
+      std::map< Node, Node > msum;
+      if( QuantArith::getMonomialSumLit( n, msum ) ){
+        Trace("bound-int-debug") << "literal (polarity = " << pol << ") " << n << " is monomial sum : " << std::endl;
+        QuantArith::debugPrintMonomialSum( msum, "bound-int-debug" );
+        for( std::map< Node, Node >::iterator it = msum.begin(); it != msum.end(); ++it ){
+          if ( !it->first.isNull() && it->first.getKind()==BOUND_VARIABLE && !isBound( q, it->first ) ){
+            //if not bound in another way
+            if( bound_lit_type_map.find( it->first )==bound_lit_type_map.end() || bound_lit_type_map[it->first] == BOUND_INT_RANGE ){
+              Node veq;
+              if( QuantArith::isolate( it->first, msum, veq, GEQ )!=0 ){
+                Node n1 = veq[0];
+                Node n2 = veq[1];
+                if(pol){
+                  //flip
+                  n1 = veq[1];
+                  n2 = veq[0];
+                  if( n1.getKind()==BOUND_VARIABLE ){
+                    n2 = QuantArith::offset( n2, 1 );
+                  }else{
+                    n1 = QuantArith::offset( n1, -1 );
+                  }
+                  veq = NodeManager::currentNM()->mkNode( GEQ, n1, n2 );
+                }
+                Trace("bound-int-debug") << "Isolated for " << it->first << " : (" << n1 << " >= " << n2 << ")" << std::endl;
+                Node t = n1==it->first ? n2 : n1;
+                if( !hasNonBoundVar( q, t ) ) {
+                  Trace("bound-int-debug") << "The bound is relevant." << std::endl;
+                  int loru = n1==it->first ? 0 : 1;
+                  bound_lit_type_map[it->first] = BOUND_INT_RANGE;
+                  bound_int_range_term[loru][it->first] = t;
+                  bound_lit_map[loru][it->first] = n;
+                  bound_lit_pol_map[loru][it->first] = pol;
+                }else{
+                  Trace("bound-int-debug") << "The term " << t << " has non-bound variable." << std::endl;
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }else if( n.getKind()==MEMBER ){
+    if( !pol && !hasNonBoundVar( q, n[1] ) ){
+      std::vector< Node > bound_vars;
+      std::map< Node, bool > visited;
+      processMatchBoundVars( q, n[0], bound_vars, visited );
+      for( unsigned i=0; i<bound_vars.size(); i++ ){
+        Node v = bound_vars[i];
+        Trace("bound-int-debug") << "literal (polarity = " << pol << ") " << n << " is membership." << std::endl;
+        bound_lit_type_map[v] = BOUND_SET_MEMBER;
+        bound_lit_map[2][v] = n;
+        bound_lit_pol_map[2][v] = pol;
+      }
+    }
+  }else{
+    Assert( n.getKind()!=LEQ && n.getKind()!=LT && n.getKind()!=GT );
+  }
+}
+
+bool BoundedIntegers::needsCheck( Theory::Effort e ) {
+  return e==Theory::EFFORT_LAST_CALL;
+}
+
+void BoundedIntegers::check( Theory::Effort e, unsigned quant_e ) {
+  if( quant_e==QuantifiersEngine::QEFFORT_STANDARD ){
+    Trace("bint-engine") << "---Bounded Integers---" << std::endl;
+    bool addedLemma = false;
+    //make sure proxies are up-to-date with range
+    for( unsigned i=0; i<d_ranges.size(); i++) {
+      if( d_rms[d_ranges[i]]->proxyCurrentRange() ){
+        addedLemma = true;
+      }
+    }
+    Trace("bint-engine") << "   addedLemma = " << addedLemma << std::endl;
+  }
+}
+
+
+void BoundedIntegers::addLiteralFromRange( Node lit, Node r ) {
+  d_lit_to_ranges[lit].push_back(r);
+  //check if it is already asserted?
+  if(d_assertions.find(lit)!=d_assertions.end()){
+    d_rms[r]->assertNode( d_assertions[lit] ? lit : lit.negate() );
+  }
+}
+
+void BoundedIntegers::setBoundedVar( Node q, Node v, unsigned bound_type ) {
+  d_bound_type[q][v] = bound_type;
+  d_set_nums[q][v] = d_set[q].size();
+  d_set[q].push_back( v );
+  Trace("bound-int-var") << "Bound variable #" << d_set_nums[q][v] << " : " << v << std::endl; 
+}
+
+void BoundedIntegers::preRegisterQuantifier( Node f ) {
+  //this needs to be done at preregister since it affects e.g. QuantDSplit's preregister
+  Trace("bound-int") << "preRegister quantifier " << f << std::endl;
+  
+  bool success;
+  do{
+    std::map< Node, unsigned > bound_lit_type_map;
+    std::map< int, std::map< Node, Node > > bound_lit_map;
+    std::map< int, std::map< Node, bool > > bound_lit_pol_map;
+    std::map< int, std::map< Node, Node > > bound_int_range_term;
+    std::map< Node, std::vector< Node > > bound_fixed_set;
+    success = false;
+    process( f, f[1], true, bound_lit_type_map, bound_lit_map, bound_lit_pol_map, bound_int_range_term, bound_fixed_set );
+    //for( std::map< Node, Node >::iterator it = d_bounds[0][f].begin(); it != d_bounds[0][f].end(); ++it ){
+    for( std::map< Node, unsigned >::iterator it = bound_lit_type_map.begin(); it != bound_lit_type_map.end(); ++it ){
+      Node v = it->first;
+      if( !isBound( f, v ) ){
+        bool setBoundVar = false;
+        if( it->second==BOUND_INT_RANGE ){
+          //must have both
+          if( bound_lit_map[0].find( v )!=bound_lit_map[0].end() && bound_lit_map[1].find( v )!=bound_lit_map[1].end() ){
+            setBoundedVar( f, v, BOUND_INT_RANGE );
+            setBoundVar = true;
+            for( unsigned b=0; b<2; b++ ){
+              //set the bounds
+              Assert( bound_int_range_term[b].find( v )!=bound_int_range_term[b].end() );
+              d_bounds[b][f][v] = bound_int_range_term[b][v];
+            }
+            if( options::fmfBoundMinMode()==FMF_BOUND_MIN_ALL || options::fmfBoundMinMode()==FMF_BOUND_MIN_INT_RANGE ){
+              Node r = NodeManager::currentNM()->mkNode( MINUS, d_bounds[1][f][v], d_bounds[0][f][v] );
+              d_range[f][v] = Rewriter::rewrite( r );
+            }
+            Trace("bound-int") << "Variable " << v << " is bound because of int range literals " << bound_lit_map[0][v] << " and " << bound_lit_map[1][v] << std::endl;
+          }
+        }else if( it->second==BOUND_SET_MEMBER ){
+          setBoundedVar( f, v, BOUND_SET_MEMBER );
+          setBoundVar = true;
+          d_setm_range[f][v] = bound_lit_map[2][v][1];
+          d_setm_range_lit[f][v] = bound_lit_map[2][v];
+          if( options::fmfBoundMinMode()==FMF_BOUND_MIN_ALL || options::fmfBoundMinMode()==FMF_BOUND_MIN_SET_CARD ){
+            d_range[f][v] = NodeManager::currentNM()->mkNode( CARD, d_setm_range[f][v] );
+          }
+          Trace("bound-int") << "Variable " << v << " is bound because of set membership literal " << bound_lit_map[2][v] << std::endl;
+        }else if( it->second==BOUND_FIXED_SET ){
+          setBoundedVar( f, v, BOUND_FIXED_SET );
+          setBoundVar = true;
+          for( unsigned i=0; i<bound_fixed_set[v].size(); i++ ){
+            Node t = bound_fixed_set[v][i];
+            if( t.hasBoundVar() ){
+              d_fixed_set_ngr_range[f][v].push_back( t ); 
+            }else{
+              d_fixed_set_gr_range[f][v].push_back( t ); 
+            }
+          } 
+          Trace("bound-int") << "Variable " << v << " is bound because of disequality conjunction " << bound_lit_map[3][v] << std::endl;
+        }
+        if( setBoundVar ){
+          success = true;
+          //set Attributes on literals
+          for( unsigned b=0; b<2; b++ ){
+            if( bound_lit_map[b].find( v )!=bound_lit_map[b].end() ){
+              Assert( bound_lit_pol_map[b].find( v )!=bound_lit_pol_map[b].end() );
+              BoundIntLitAttribute bila;
+              bound_lit_map[b][v].setAttribute( bila, bound_lit_pol_map[b][v] ? 1 : 0 );
+            }else{
+              Assert( it->second!=BOUND_INT_RANGE );
+            }
+          }
+        }
+      }
+    }
+    if( !success ){
+      //resort to setting a finite bound on a variable
+      for( unsigned i=0; i<f[0].getNumChildren(); i++) {
+        if( d_bound_type[f].find( f[0][i] )==d_bound_type[f].end() ){
+          TypeNode tn = f[0][i].getType();
+          if( tn.isSort() || getTermDatabase()->mayComplete( tn ) ){
+            success = true;
+            setBoundedVar( f, f[0][i], BOUND_FINITE );
+            break;
+          }
+        }
+      }
+    }
+  }while( success );
+  
+  if( Trace.isOn("bound-int") ){
+    Trace("bound-int") << "Bounds are : " << std::endl;
+    for( unsigned i=0; i<f[0].getNumChildren(); i++) {
+      Node v = f[0][i];
+      if( std::find( d_set[f].begin(), d_set[f].end(), v )!=d_set[f].end() ){
+        Assert( d_bound_type[f].find( v )!=d_bound_type[f].end() );
+        if( d_bound_type[f][v]==BOUND_INT_RANGE ){
+          Trace("bound-int") << "  " << d_bounds[0][f][v] << " <= " << v << " <= " << d_bounds[1][f][v] << " (range is " << d_range[f][v] << ")" << std::endl;
+        }else if( d_bound_type[f][v]==BOUND_SET_MEMBER ){
+          if( d_setm_range_lit[f][v][0]==v ){
+            Trace("bound-int") << "  " << v << " in " << d_setm_range[f][v] << std::endl;
+          }else{
+            Trace("bound-int") << "  " << v << " unifiable in " << d_setm_range_lit[f][v] << std::endl;
+          }
+        }else if( d_bound_type[f][v]==BOUND_FIXED_SET ){
+          Trace("bound-int") << "  " << v << " in { ";
+          for( unsigned i=0; i<d_fixed_set_ngr_range[f][v].size(); i++ ){ 
+            Trace("bound-int") << d_fixed_set_ngr_range[f][v][i] << " ";
+          }
+          for( unsigned i=0; i<d_fixed_set_gr_range[f][v].size(); i++ ){ 
+            Trace("bound-int") << d_fixed_set_gr_range[f][v][i] << " ";
+          }
+          Trace("bound-int") << "}" << std::endl;
+        }else if( d_bound_type[f][v]==BOUND_FINITE ){
+          Trace("bound-int") << "  " << v << " has small finite type." << std::endl;
+        }else{
+          Trace("bound-int") << "  " << v << " has unknown bound." << std::endl;
+          Assert( false );
+        }
+      }else{
+        Trace("bound-int") << "  " << "*** " << v << " is unbounded." << std::endl;
+      }
+    }
+  }
+  
+  bool bound_success = true;
+  for( unsigned i=0; i<f[0].getNumChildren(); i++) {
+    if( d_bound_type[f].find( f[0][i] )==d_bound_type[f].end() ){
+      Trace("bound-int-warn") << "Warning : Bounded Integers : Due to quantification on " << f[0][i] << ", could not find bounds for " << f << std::endl;
+      bound_success = false;
+      break;
+    }
+  }
+  
+  if( bound_success ){
+    d_bound_quants.push_back( f );
+    for( unsigned i=0; i<d_set[f].size(); i++) {
+      Node v = d_set[f][i];
+      std::map< Node, Node >::iterator itr = d_range[f].find( v );
+      if( itr != d_range[f].end() ){
+        Node r = itr->second;
+        Assert( !r.isNull() );
+        bool isProxy = false;
+        if( r.hasBoundVar() ){
+          //introduce a new bound
+          Node new_range = NodeManager::currentNM()->mkSkolem( "bir", r.getType(), "bound for term" );
+          d_nground_range[f][v] = r;
+          d_range[f][v] = new_range;
+          r = new_range;
+          isProxy = true;
+        }
+        if( !r.isConst() ){
+          if( std::find(d_ranges.begin(), d_ranges.end(), r)==d_ranges.end() ){
+            Trace("bound-int") << "For " << v << ", bounded Integer Module will try to minimize : " << r << std::endl;
+            d_ranges.push_back( r );
+            d_rms[r] = new IntRangeModel( this, r, d_quantEngine->getSatContext(), d_quantEngine->getUserContext(), isProxy );
+            d_rms[r]->initialize();
+          }
+        }
+      }
+    }
+  }
+}
+
+void BoundedIntegers::registerQuantifier( Node q ) {
+
+}
+
+void BoundedIntegers::assertNode( Node n ) {
+  Trace("bound-int-assert") << "Assert " << n << std::endl;
+  Node nlit = n.getKind()==NOT ? n[0] : n;
+  if( d_lit_to_ranges.find(nlit)!=d_lit_to_ranges.end() ){
+    Trace("bound-int-assert") << "This is the bounding literal for " << d_lit_to_ranges[nlit].size() << " ranges." << std::endl;
+    for( unsigned i=0; i<d_lit_to_ranges[nlit].size(); i++) {
+      Node r = d_lit_to_ranges[nlit][i];
+      Trace("bound-int-assert") << "  ...this is a bounding literal for " << r << std::endl;
+      d_rms[r]->assertNode( n );
+    }
+  }
+  d_assertions[nlit] = n.getKind()!=NOT;
+}
+
+Node BoundedIntegers::getNextDecisionRequest( unsigned& priority ) {
+  Trace("bound-int-dec-debug") << "bi: Get next decision request?" << std::endl;
+  for( unsigned i=0; i<d_ranges.size(); i++) {
+    Node d = d_rms[d_ranges[i]]->getNextDecisionRequest();
+    if (!d.isNull()) {
+      bool polLit = d.getKind()!=NOT;
+      Node lit = d.getKind()==NOT ? d[0] : d;
+      bool value;
+      if( d_quantEngine->getValuation().hasSatValue( lit, value ) ) {
+        if( value==polLit ){
+          Trace("bound-int-dec-debug") << "...already asserted properly." << std::endl;
+          //already true, we're already fine
+        }else{
+          Trace("bound-int-dec-debug") << "...already asserted with wrong polarity, re-assert." << std::endl;
+          assertNode( d.negate() );
+          i--;
+        }
+      }else{
+        priority = 1;
+        Trace("bound-int-dec") << "Bounded Integers : Decide " << d << std::endl;
+        return d;
+      }
+    }
+  }
+  Trace("bound-int-dec-debug") << "No decision request." << std::endl;
+  return Node::null();
+}
+
+unsigned BoundedIntegers::getBoundVarType( Node q, Node v ) {
+  std::map< Node, unsigned >::iterator it = d_bound_type[q].find( v );
+  if( it==d_bound_type[q].end() ){
+    return BOUND_NONE;
+  }else{
+    return it->second;
+  }
+}
+
+void BoundedIntegers::getBounds( Node f, Node v, RepSetIterator * rsi, Node & l, Node & u ) {
+  l = d_bounds[0][f][v];
+  u = d_bounds[1][f][v];
+  if( d_nground_range[f].find(v)!=d_nground_range[f].end() ){
+    //get the substitution
+    std::vector< Node > vars;
+    std::vector< Node > subs;
+    if( getRsiSubsitution( f, v, vars, subs, rsi ) ){
+      u = u.substitute( vars.begin(), vars.end(), subs.begin(), subs.end() );
+      l = l.substitute( vars.begin(), vars.end(), subs.begin(), subs.end() );
+    }else{
+      u = Node::null();
+      l = Node::null();
+    }
+  }
+}
+
+void BoundedIntegers::getBoundValues( Node f, Node v, RepSetIterator * rsi, Node & l, Node & u ) {
+  getBounds( f, v, rsi, l, u );
+  Trace("bound-int-rsi") << "Get value in model for..." << l << " and " << u << std::endl;
+  if( !l.isNull() ){
+    l = d_quantEngine->getModel()->getCurrentModelValue( l );
+  }
+  if( !u.isNull() ){
+    u = d_quantEngine->getModel()->getCurrentModelValue( u );
+  }
+  Trace("bound-int-rsi") << "Value is " << l << " ... " << u << std::endl;
+  return;
+}
+
+bool BoundedIntegers::isGroundRange( Node q, Node v ) {
+  if( isBoundVar(q,v) ){
+    if( d_bound_type[q][v]==BOUND_INT_RANGE ){
+      return !getLowerBound(q,v).hasBoundVar() && !getUpperBound(q,v).hasBoundVar();
+    }else if( d_bound_type[q][v]==BOUND_SET_MEMBER ){
+      return !d_setm_range[q][v].hasBoundVar();
+    }else if( d_bound_type[q][v]==BOUND_FIXED_SET ){
+      return !d_fixed_set_ngr_range[q][v].empty();
+    }
+  }
+  return false;
+}
+
+Node BoundedIntegers::getSetRange( Node q, Node v, RepSetIterator * rsi ) {
+  Node sr = d_setm_range[q][v];
+  if( d_nground_range[q].find(v)!=d_nground_range[q].end() ){
+    //get the substitution
+    std::vector< Node > vars;
+    std::vector< Node > subs;
+    if( getRsiSubsitution( q, v, vars, subs, rsi ) ){
+      sr = sr.substitute( vars.begin(), vars.end(), subs.begin(), subs.end() );
+    }else{
+      sr = Node::null();
+    }
+  }
+  return sr;
+}
+
+Node BoundedIntegers::getSetRangeValue( Node q, Node v, RepSetIterator * rsi ) {
+  Node sr = getSetRange( q, v, rsi );
+  if( !sr.isNull() ){
+    Trace("bound-int-rsi") << "Get value in model for..." << sr << std::endl;
+    sr = d_quantEngine->getModel()->getCurrentModelValue( sr );
+    //if non-constant, then sr does not occur in the model, we fail
+    if( !sr.isConst() ){
+      return Node::null();
+    }
+    Trace("bound-int-rsi") << "Value is " << sr << std::endl;
+    //as heuristic, map to term model
+    if( sr.getKind()!=EMPTYSET ){
+      std::map< Node, Node > val_to_term;
+      while( sr.getKind()==UNION ){
+        Assert( sr[1].getKind()==kind::SINGLETON );
+        val_to_term[ sr[1][0] ] = sr[1][0];
+        sr = sr[0];
+      }
+      Assert( sr.getKind()==kind::SINGLETON );
+      val_to_term[ sr[0] ] = sr[0];
+      //must look back at assertions, not term database (theory of sets introduces extraneous terms internally)
+      Theory* theory = d_quantEngine->getTheoryEngine()->theoryOf( THEORY_SETS );
+      if( theory ){
+        context::CDList<Assertion>::const_iterator it = theory->facts_begin(), it_end = theory->facts_end();
+        for( unsigned i = 0; it != it_end; ++ it, ++i ){
+          Node lit = (*it).assertion;
+          if( lit.getKind()==kind::MEMBER ){
+            Node vr = d_quantEngine->getModel()->getCurrentModelValue( lit[0] );
+            Trace("bound-int-rsi-debug") << "....membership for " << lit << " ==> " << vr << std::endl;
+            Trace("bound-int-rsi-debug") << "  " << (val_to_term.find( vr )!=val_to_term.end()) << " " << d_quantEngine->getEqualityQuery()->areEqual( d_setm_range_lit[q][v][1], lit[1] ) << std::endl;
+            if( val_to_term.find( vr )!=val_to_term.end() ){
+              if( d_quantEngine->getEqualityQuery()->areEqual( d_setm_range_lit[q][v][1], lit[1] ) ){
+                Trace("bound-int-rsi") << "  Map value to term : " << vr << " -> " << lit[0] << std::endl;
+                val_to_term[ vr ] = lit[0];
+              }
+            }
+          }
+        }
+      }
+      //rebuild value
+      Node nsr;
+      for( std::map< Node, Node >::iterator it = val_to_term.begin(); it != val_to_term.end(); ++it ){
+        Node nv = NodeManager::currentNM()->mkNode( kind::SINGLETON, it->second );
+        if( nsr.isNull() ){
+          nsr = nv;
+        }else{
+          nsr = NodeManager::currentNM()->mkNode( kind::UNION, nsr, nv );
+        }
+      }
+      Trace("bound-int-rsi") << "...reconstructed " << nsr << std::endl;
+      return nsr;
+      
+      /*
+      Node lit = d_setm_range_lit[q][v];
+      Trace("bound-int-rsi-debug") << "Bounded from lit " << lit << std::endl;
+      Node f = d_quantEngine->getTermDatabase()->getMatchOperator( lit );
+      TermArgTrie * ta = d_quantEngine->getTermDatabase()->getTermArgTrie( f );
+      if( ta ){
+        Trace("bound-int-rsi-debug") << "Got term index for " << f << std::endl;
+        for( std::map< TNode, TermArgTrie >::iterator it = ta->d_data.begin(); it != ta->d_data.end(); ++it ){
+
+        }
+
+      }
+      */
+    }
+    
+  }
+  return sr;
+}
+
+bool BoundedIntegers::getRsiSubsitution( Node q, Node v, std::vector< Node >& vars, std::vector< Node >& subs, RepSetIterator * rsi ) {
+
+  Trace("bound-int-rsi") << "Get bound value in model of variable " << v << std::endl;
+  Assert( d_set_nums[q].find( v )!=d_set_nums[q].end() );
+  int vindex = d_set_nums[q][v];
+  Assert( d_set_nums[q][v]==vindex );
+  Trace("bound-int-rsi-debug") << "  index order is " << vindex << std::endl;
+  //must take substitution for all variables that are iterating at higher level
+  for( int i=0; i<vindex; i++) {
+    Assert( d_set_nums[q][d_set[q][i]]==i );
+    Trace("bound-int-rsi") << "Look up the value for " << d_set[q][i] << " " << i << std::endl;
+    int v = rsi->getVariableOrder( i );
+    Assert( q[0][v]==d_set[q][i] );
+    Node t = rsi->getCurrentTerm( v );
+    Trace("bound-int-rsi") << "term : " << t << std::endl;
+    if( rsi->d_rep_set->d_values_to_terms.find( t )!=rsi->d_rep_set->d_values_to_terms.end() ){
+      t = rsi->d_rep_set->d_values_to_terms[t];
+      Trace("bound-int-rsi") << "term (post-rep) : " << t << std::endl;
+    }
+    vars.push_back( d_set[q][i] );
+    subs.push_back( t );
+  }
+  
+  //check if it has been instantiated
+  if( !vars.empty() && !d_bnd_it[q][v].hasInstantiated(subs) ){
+    if( d_bound_type[q][v]==BOUND_INT_RANGE || d_bound_type[q][v]==BOUND_SET_MEMBER ){
+      //must add the lemma
+      Node nn = d_nground_range[q][v];
+      nn = nn.substitute( vars.begin(), vars.end(), subs.begin(), subs.end() );
+      Node lem = NodeManager::currentNM()->mkNode( LEQ, nn, d_range[q][v] );
+      Trace("bound-int-lemma") << "*** Add lemma to minimize instantiated non-ground term " << lem << std::endl;
+      d_quantEngine->getOutputChannel().lemma(lem, false, true);
+    }
+    return false;
+  }else{
+    return true;
+  }
+}
+
+Node BoundedIntegers::matchBoundVar( Node v, Node t, Node e ){
+  if( t==v ){
+    return e;
+  }else if( t.getKind()==kind::APPLY_CONSTRUCTOR ){
+    if( e.getKind()==kind::APPLY_CONSTRUCTOR ){
+      if( t.getOperator() != e.getOperator() ) {
+        return Node::null();
+      }
+    }
+    const Datatype& dt = Datatype::datatypeOf( t.getOperator().toExpr() );
+    unsigned index = Datatype::indexOf( t.getOperator().toExpr() );
+    for( unsigned i=0; i<t.getNumChildren(); i++ ){
+      Node u;
+      if( e.getKind()==kind::APPLY_CONSTRUCTOR ){
+        u = matchBoundVar( v, t[i], e[i] );
+      }else{
+        Node se = NodeManager::currentNM()->mkNode( kind::APPLY_SELECTOR_TOTAL, Node::fromExpr( dt[index][i].getSelector() ), e );
+        u = matchBoundVar( v, t[i], se );
+      }
+      if( !u.isNull() ){
+        return u;
+      }
+    }
+  }
+  return Node::null();
+}
+
+bool BoundedIntegers::getBoundElements( RepSetIterator * rsi, bool initial, Node q, Node v, std::vector< Node >& elements ) {
+  if( initial || !isGroundRange( q, v ) ){
+    elements.clear();
+    unsigned bvt = getBoundVarType( q, v );
+    if( bvt==BOUND_INT_RANGE ){
+      Node l, u;
+      getBoundValues( q, v, rsi, l, u );
+      if( l.isNull() || u.isNull() ){
+        //failed, abort the iterator
+        return false;
+      }else{
+        Trace("bound-int-rsi") << "Can limit bounds of " << v << " to " << l << "..." << u << std::endl;
+        Node range = Rewriter::rewrite( NodeManager::currentNM()->mkNode( MINUS, u, l ) );
+        Node ra = Rewriter::rewrite( NodeManager::currentNM()->mkNode( LEQ, range, NodeManager::currentNM()->mkConst( Rational( 9999 ) ) ) );
+        Node tl = l;
+        Node tu = u;
+        getBounds( q, v, rsi, tl, tu );
+        Assert( !tl.isNull() && !tu.isNull() );
+        if( ra==d_quantEngine->getTermDatabase()->d_true ){
+          long rr = range.getConst<Rational>().getNumerator().getLong()+1;
+          Trace("bound-int-rsi")  << "Actual bound range is " << rr << std::endl;
+          for( unsigned k=0; k<rr; k++ ){
+            Node t = NodeManager::currentNM()->mkNode(PLUS, tl, NodeManager::currentNM()->mkConst( Rational(k) ) );
+            t = Rewriter::rewrite( t );
+            elements.push_back( t );
+          }
+          return true;
+        }else{
+          Trace("fmf-incomplete") << "Incomplete because of integer quantification, bounds are too big for " << v << "." << std::endl;
+          return false;
+        }
+      }
+    }else if( bvt==BOUND_SET_MEMBER  ){ 
+      Node srv = getSetRangeValue( q, v, rsi );
+      if( srv.isNull() ){
+        return false;
+      }else{
+        Trace("bound-int-rsi") << "Bounded by set membership : " << srv << std::endl;
+        if( srv.getKind()!=EMPTYSET ){
+          //collect the elements
+          while( srv.getKind()==UNION ){
+            Assert( srv[1].getKind()==kind::SINGLETON );
+            elements.push_back( srv[1][0] );
+            srv = srv[0];
+          }
+          Assert( srv.getKind()==kind::SINGLETON );
+          elements.push_back( srv[0] );
+          //check if we need to do matching, for literals like ( tuple( v ) in S )
+          Node t = d_setm_range_lit[q][v][0];
+          if( t!=v ){
+            std::vector< Node > elements_tmp;
+            elements_tmp.insert( elements_tmp.end(), elements.begin(), elements.end() );
+            elements.clear();
+            for( unsigned i=0; i<elements_tmp.size(); i++ ){
+              //do matching to determine v -> u
+              Node u = matchBoundVar( v, t, elements_tmp[i] );
+              Trace("bound-int-rsi-debug") << "  unification : " << elements_tmp[i] << " = " << t << " yields " << v << " -> " << u << std::endl;
+              if( !u.isNull() ){
+                elements.push_back( u );
+              }
+            }
+          }
+        }
+        return true;
+      }
+    }else if( bvt==BOUND_FIXED_SET ){
+      std::map< Node, std::vector< Node > >::iterator it = d_fixed_set_gr_range[q].find( v );
+      if( it!=d_fixed_set_gr_range[q].end() ){
+        for( unsigned i=0; i<it->second.size(); i++ ){
+          elements.push_back( it->second[i] );
+        }
+      }
+      it = d_fixed_set_ngr_range[q].find( v );
+      if( it!=d_fixed_set_ngr_range[q].end() ){
+        std::vector< Node > vars;
+        std::vector< Node > subs;
+        if( getRsiSubsitution( q, v, vars, subs, rsi ) ){
+          for( unsigned i=0; i<it->second.size(); i++ ){
+            Node t = it->second[i].substitute( vars.begin(), vars.end(), subs.begin(), subs.end() );
+            elements.push_back( t );
+          }
+          return true;
+        }else{
+          return false;
+        }
+      }else{
+        return true;
+      }
+    }else{
+      return false;
+    }
+  }else{
+    //no change required
+    return true;
+  }
+}
+
diff --git a/src/theory/quantifiers/bounded_integers.h b/src/theory/quantifiers/bounded_integers.h
new file mode 100644
index 0000000..f367b32
--- /dev/null
+++ b/src/theory/quantifiers/bounded_integers.h
@@ -0,0 +1,182 @@
+/*********************                                                        */
+/*! \file bounded_integers.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+**/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__BOUNDED_INTEGERS_H
+#define __CVC4__BOUNDED_INTEGERS_H
+
+
+#include "theory/quantifiers_engine.h"
+
+#include "context/context.h"
+#include "context/context_mm.h"
+#include "context/cdchunk_list.h"
+
+namespace CVC4 {
+namespace theory {
+
+class RepSetIterator;
+
+namespace quantifiers {
+
+
+class BoundedIntegers : public QuantifiersModule
+{
+  typedef context::CDHashMap<Node, bool, NodeHashFunction> NodeBoolMap;
+  typedef context::CDHashMap<Node, int, NodeHashFunction> NodeIntMap;
+  typedef context::CDHashMap<Node, Node, NodeHashFunction> NodeNodeMap;
+  typedef context::CDHashMap<int, bool> IntBoolMap;
+public:
+  enum {
+    BOUND_FINITE,
+    BOUND_INT_RANGE,
+    BOUND_SET_MEMBER,
+    BOUND_FIXED_SET,
+    BOUND_NONE
+  };
+private:
+  //for determining bounds
+  bool isBound( Node f, Node v );
+  bool hasNonBoundVar( Node f, Node b, std::map< Node, bool >& visited );
+  bool hasNonBoundVar( Node f, Node b );
+  //bound type
+  std::map< Node, std::map< Node, unsigned > > d_bound_type;
+  std::map< Node, std::vector< Node > > d_set;
+  std::map< Node, std::map< Node, int > > d_set_nums;
+  std::map< Node, std::map< Node, Node > > d_range;
+  std::map< Node, std::map< Node, Node > > d_nground_range;
+  //integer lower/upper bounds
+  std::map< Node, std::map< Node, Node > > d_bounds[2];
+  //set membership range
+  std::map< Node, std::map< Node, Node > > d_setm_range;
+  std::map< Node, std::map< Node, Node > > d_setm_range_lit;
+  //fixed finite set range
+  std::map< Node, std::map< Node, std::vector< Node > > > d_fixed_set_gr_range;
+  std::map< Node, std::map< Node, std::vector< Node > > > d_fixed_set_ngr_range;
+  void hasFreeVar( Node f, Node n );
+  void process( Node q, Node n, bool pol,
+                std::map< Node, unsigned >& bound_lit_type_map,
+                std::map< int, std::map< Node, Node > >& bound_lit_map,
+                std::map< int, std::map< Node, bool > >& bound_lit_pol_map,
+                std::map< int, std::map< Node, Node > >& bound_int_range_term,
+                std::map< Node, std::vector< Node > >& bound_fixed_set );
+  bool processEqDisjunct( Node q, Node n, Node& v, std::vector< Node >& v_cases );
+  void processMatchBoundVars( Node q, Node n, std::vector< Node >& bvs, std::map< Node, bool >& visited );
+  std::vector< Node > d_bound_quants;
+private:
+  class RangeModel {
+  public:
+    RangeModel(){}
+    virtual ~RangeModel(){}
+    virtual void initialize() = 0;
+    virtual void assertNode(Node n) = 0;
+    virtual Node getNextDecisionRequest() = 0;
+    virtual bool proxyCurrentRange() = 0;
+  };
+  class IntRangeModel : public RangeModel {
+  private:
+    BoundedIntegers * d_bi;
+    void allocateRange();
+    Node d_proxy_range;
+  public:
+    IntRangeModel( BoundedIntegers * bi, Node r, context::Context* c, context::Context* u, bool isProxy);
+    virtual ~IntRangeModel(){}
+    Node d_range;
+    int d_curr_max;
+    std::map< int, Node > d_range_literal;
+    std::map< Node, bool > d_lit_to_pol;
+    NodeIntMap d_lit_to_range;
+    NodeBoolMap d_range_assertions;
+    context::CDO< bool > d_has_range;
+    context::CDO< int > d_curr_range;
+    IntBoolMap d_ranges_proxied;
+    void initialize();
+    void assertNode(Node n);
+    Node getNextDecisionRequest();
+    bool proxyCurrentRange();
+  };
+private:
+  //information for minimizing ranges
+  std::vector< Node > d_ranges;
+  //map to range model objects
+  std::map< Node, RangeModel * > d_rms;
+  //literal to range
+  std::map< Node, std::vector< Node > > d_lit_to_ranges;
+  //list of currently asserted arithmetic literals
+  NodeBoolMap d_assertions;
+private:
+  //class to store whether bounding lemmas have been added
+  class BoundInstTrie
+  {
+  public:
+    std::map< Node, BoundInstTrie > d_children;
+    bool hasInstantiated( std::vector< Node > & vals, int index = 0, bool madeNew = false ){
+      if( index>=(int)vals.size() ){
+        return !madeNew;
+      }else{
+        Node n = vals[index];
+        if( d_children.find(n)==d_children.end() ){
+          madeNew = true;
+        }
+        return d_children[n].hasInstantiated(vals,index+1,madeNew);
+      }
+    }
+  };
+  std::map< Node, std::map< Node, BoundInstTrie > > d_bnd_it;
+private:
+  void addLiteralFromRange( Node lit, Node r );
+  
+  void setBoundedVar( Node f, Node v, unsigned bound_type );
+public:
+  BoundedIntegers( context::Context* c, QuantifiersEngine* qe );
+  virtual ~BoundedIntegers();
+  
+  void presolve();
+  bool needsCheck( Theory::Effort e );
+  void check( Theory::Effort e, unsigned quant_e );
+  void registerQuantifier( Node q );
+  void preRegisterQuantifier( Node q );
+  void assertNode( Node n );
+  Node getNextDecisionRequest( unsigned& priority );
+  bool isBoundVar( Node q, Node v ) { return std::find( d_set[q].begin(), d_set[q].end(), v )!=d_set[q].end(); }
+  unsigned getBoundVarType( Node q, Node v );
+  unsigned getNumBoundVars( Node q ) { return d_set[q].size(); }
+  Node getBoundVar( Node q, int i ) { return d_set[q][i]; }
+private:
+  //for integer range
+  Node getLowerBound( Node q, Node v ){ return d_bounds[0][q][v]; }
+  Node getUpperBound( Node q, Node v ){ return d_bounds[1][q][v]; }
+  void getBounds( Node f, Node v, RepSetIterator * rsi, Node & l, Node & u );
+  void getBoundValues( Node f, Node v, RepSetIterator * rsi, Node & l, Node & u );
+  bool isGroundRange(Node f, Node v);
+  //for set range
+  Node getSetRange( Node q, Node v, RepSetIterator * rsi );
+  Node getSetRangeValue( Node q, Node v, RepSetIterator * rsi );
+  Node matchBoundVar( Node v, Node t, Node e );
+  
+  bool getRsiSubsitution( Node q, Node v, std::vector< Node >& vars, std::vector< Node >& subs, RepSetIterator * rsi );
+public:
+  bool getBoundElements( RepSetIterator * rsi, bool initial, Node q, Node v, std::vector< Node >& elements );
+
+  /** Identify this module */
+  std::string identify() const { return "BoundedIntegers"; }
+};
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/candidate_generator.cpp b/src/theory/quantifiers/candidate_generator.cpp
new file mode 100644
index 0000000..7c9a619
--- /dev/null
+++ b/src/theory/quantifiers/candidate_generator.cpp
@@ -0,0 +1,307 @@
+/*********************                                                        */
+/*! \file candidate_generator.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of theory uf candidate generator class
+ **/
+
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/candidate_generator.h"
+#include "theory/quantifiers/inst_match.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers_engine.h"
+#include "theory/theory_engine.h"
+#include "theory/uf/theory_uf.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::inst;
+
+bool CandidateGenerator::isLegalCandidate( Node n ){
+  return d_qe->getTermDatabase()->isTermActive( n ) && ( !options::cbqi() || !quantifiers::TermDb::hasInstConstAttr(n) );
+}
+
+void CandidateGeneratorQueue::addCandidate( Node n ) {
+  if( isLegalCandidate( n ) ){
+    d_candidates.push_back( n );
+  }
+}
+
+void CandidateGeneratorQueue::reset( Node eqc ){
+  if( d_candidate_index>0 ){
+    d_candidates.erase( d_candidates.begin(), d_candidates.begin() + d_candidate_index );
+    d_candidate_index = 0;
+  }
+  if( !eqc.isNull() ){
+    d_candidates.push_back( eqc );
+  }
+}
+Node CandidateGeneratorQueue::getNextCandidate(){
+  if( d_candidate_index<(int)d_candidates.size() ){
+    Node n = d_candidates[d_candidate_index];
+    d_candidate_index++;
+    return n;
+  }else{
+    d_candidate_index = 0;
+    d_candidates.clear();
+    return Node::null();
+  }
+}
+
+CandidateGeneratorQE::CandidateGeneratorQE( QuantifiersEngine* qe, Node pat ) :
+CandidateGenerator( qe ), d_term_iter( -1 ){
+  d_op = qe->getTermDatabase()->getMatchOperator( pat );
+  Assert( !d_op.isNull() );
+  d_op_arity = pat.getNumChildren();
+}
+
+void CandidateGeneratorQE::resetInstantiationRound(){
+  d_term_iter_limit = d_qe->getTermDatabase()->getNumGroundTerms( d_op );
+}
+
+void CandidateGeneratorQE::reset( Node eqc ){
+  d_term_iter = 0;
+  if( eqc.isNull() ){
+    d_mode = cand_term_db;
+  }else{
+    if( isExcludedEqc( eqc ) ){
+      d_mode = cand_term_none;
+    }else{
+      eq::EqualityEngine* ee = d_qe->getEqualityQuery()->getEngine();
+      if( ee->hasTerm( eqc ) ){
+        quantifiers::TermArgTrie * tat = d_qe->getTermDatabase()->getTermArgTrie( eqc, d_op );
+        if( tat ){
+#if 1
+          //create an equivalence class iterator in eq class eqc
+          Node rep = ee->getRepresentative( eqc );
+          d_eqc_iter = eq::EqClassIterator( rep, ee );
+          d_mode = cand_term_eqc;
+#else
+          d_tindex.push_back( tat );
+          d_tindex_iter.push_back( tat->d_data.begin() );
+          d_mode = cand_term_tindex;
+#endif     
+        }else{
+          d_mode = cand_term_none;
+        }   
+      }else{
+        //the only match is this term itself
+        d_n = eqc;
+        d_mode = cand_term_ident;
+      }
+    }
+  }
+}
+bool CandidateGeneratorQE::isLegalOpCandidate( Node n ) {
+  if( n.hasOperator() ){
+    if( isLegalCandidate( n ) ){
+      return d_qe->getTermDatabase()->getMatchOperator( n )==d_op;
+    }
+  }
+  return false;
+}
+
+Node CandidateGeneratorQE::getNextCandidate(){
+  if( d_mode==cand_term_db ){
+    Debug("cand-gen-qe") << "...get next candidate in tbd" << std::endl;
+    //get next candidate term in the uf term database
+    while( d_term_iter<d_term_iter_limit ){
+      Node n = d_qe->getTermDatabase()->getGroundTerm( d_op, d_term_iter );
+      d_term_iter++;
+      if( isLegalCandidate( n ) ){
+        if( d_qe->getTermDatabase()->hasTermCurrent( n ) ){
+          if( d_exclude_eqc.empty() ){
+            return n;
+          }else{
+            Node r = d_qe->getEqualityQuery()->getRepresentative( n );
+            if( d_exclude_eqc.find( r )==d_exclude_eqc.end() ){
+              Debug("cand-gen-qe") << "...returning " << n << std::endl;
+              return n;
+            }
+          }
+        }
+      }
+    }
+  }else if( d_mode==cand_term_eqc ){
+    Debug("cand-gen-qe") << "...get next candidate in eqc" << std::endl;
+    while( !d_eqc_iter.isFinished() ){
+      Node n = *d_eqc_iter;
+      ++d_eqc_iter;
+      if( isLegalOpCandidate( n ) ){
+        Debug("cand-gen-qe") << "...returning " << n << std::endl;
+        return n;
+      }
+    }
+  }else if( d_mode==cand_term_tindex ){
+    Debug("cand-gen-qe") << "...get next candidate in tindex " << d_op << " " << d_op_arity << std::endl;
+    //increment the term index iterator
+    if( !d_tindex.empty() ){
+      //populate the vector
+      while( d_tindex_iter.size()<=d_op_arity ){
+        Assert( !d_tindex_iter.empty() );
+        Assert( !d_tindex_iter.back()->second.d_data.empty() );
+        d_tindex.push_back( &(d_tindex_iter.back()->second) );
+        d_tindex_iter.push_back( d_tindex_iter.back()->second.d_data.begin() );
+      }
+      //get the current node
+      Assert( d_tindex_iter.back()->second.hasNodeData() );
+      Node n = d_tindex_iter.back()->second.getNodeData();
+      Debug("cand-gen-qe") << "...returning " << n << std::endl;
+      Assert( !n.isNull() );
+      Assert( isLegalOpCandidate( n ) );
+      //increment
+      bool success = false;
+      do{
+        ++d_tindex_iter.back();
+        if( d_tindex_iter.back()==d_tindex.back()->d_data.end() ){
+          d_tindex.pop_back();
+          d_tindex_iter.pop_back();
+        }else{
+          success = true;
+        }
+      }while( !success && !d_tindex.empty() );
+      return n;   
+    } 
+  }else if( d_mode==cand_term_ident ){
+    Debug("cand-gen-qe") << "...get next candidate identity" << std::endl;
+    if( !d_n.isNull() ){
+      Node n = d_n;
+      d_n = Node::null();
+      if( isLegalOpCandidate( n ) ){
+        return n;
+      }
+    }
+  }
+  return Node::null();
+}
+
+CandidateGeneratorQELitEq::CandidateGeneratorQELitEq( QuantifiersEngine* qe, Node mpat ) :
+  CandidateGenerator( qe ), d_match_pattern( mpat ){
+  Assert( mpat.getKind()==EQUAL );
+  for( unsigned i=0; i<2; i++ ){
+    if( !quantifiers::TermDb::hasInstConstAttr(mpat[i]) ){
+      d_match_gterm = mpat[i];
+    }
+  }
+}
+void CandidateGeneratorQELitEq::resetInstantiationRound(){
+
+}
+void CandidateGeneratorQELitEq::reset( Node eqc ){
+  if( d_match_gterm.isNull() ){
+    d_eq = eq::EqClassesIterator( d_qe->getEqualityQuery()->getEngine() );
+  }else{
+    d_do_mgt = true;
+  }
+}
+Node CandidateGeneratorQELitEq::getNextCandidate(){
+  if( d_match_gterm.isNull() ){
+    while( !d_eq.isFinished() ){
+      Node n = (*d_eq);
+      ++d_eq;
+      if( n.getType().isComparableTo( d_match_pattern[0].getType() ) ){
+        //an equivalence class with the same type as the pattern, return reflexive equality
+        return NodeManager::currentNM()->mkNode( d_match_pattern.getKind(), n, n );
+      }
+    }
+  }else{
+    if( d_do_mgt ){
+      d_do_mgt = false;
+      return NodeManager::currentNM()->mkNode( d_match_pattern.getKind(), d_match_gterm, d_match_gterm );
+    }
+  }
+  return Node::null();
+}
+
+
+CandidateGeneratorQELitDeq::CandidateGeneratorQELitDeq( QuantifiersEngine* qe, Node mpat ) :
+CandidateGenerator( qe ), d_match_pattern( mpat ){
+
+  Assert( d_match_pattern.getKind()==EQUAL );
+  d_match_pattern_type = d_match_pattern[0].getType();
+}
+
+void CandidateGeneratorQELitDeq::resetInstantiationRound(){
+
+}
+
+void CandidateGeneratorQELitDeq::reset( Node eqc ){
+  Node false_term = d_qe->getEqualityQuery()->getEngine()->getRepresentative( NodeManager::currentNM()->mkConst<bool>(false) );
+  d_eqc_false = eq::EqClassIterator( false_term, d_qe->getEqualityQuery()->getEngine() );
+}
+
+Node CandidateGeneratorQELitDeq::getNextCandidate(){
+  //get next candidate term in equivalence class
+  while( !d_eqc_false.isFinished() ){
+    Node n = (*d_eqc_false);
+    ++d_eqc_false;
+    if( n.getKind()==d_match_pattern.getKind() ){
+      if( n[0].getType().isComparableTo( d_match_pattern_type ) ){
+        //found an iff or equality, try to match it
+        //DO_THIS: cache to avoid redundancies?
+        //DO_THIS: do we need to try the symmetric equality for n?  or will it also exist in the eq class of false?
+        return n;
+      }
+    }
+  }
+  return Node::null();
+}
+
+
+CandidateGeneratorQEAll::CandidateGeneratorQEAll( QuantifiersEngine* qe, Node mpat ) :
+  CandidateGenerator( qe ), d_match_pattern( mpat ){
+  d_match_pattern_type = mpat.getType();
+  Assert( mpat.getKind()==INST_CONSTANT );
+  d_f = quantifiers::TermDb::getInstConstAttr( mpat );
+  d_index = mpat.getAttribute(InstVarNumAttribute());
+  d_firstTime = false;
+}
+
+void CandidateGeneratorQEAll::resetInstantiationRound() {
+
+}
+
+void CandidateGeneratorQEAll::reset( Node eqc ) {
+  d_eq = eq::EqClassesIterator( d_qe->getEqualityQuery()->getEngine() );
+  d_firstTime = true;
+}
+
+Node CandidateGeneratorQEAll::getNextCandidate() {
+  while( !d_eq.isFinished() ){
+    TNode n = (*d_eq);
+    ++d_eq;
+    if( n.getType().isComparableTo( d_match_pattern_type ) ){
+      TNode nh = d_qe->getTermDatabase()->getEligibleTermInEqc( n );
+      if( !nh.isNull() ){
+        if( options::instMaxLevel()!=-1 || options::lteRestrictInstClosure() ){
+          nh = d_qe->getEqualityQuery()->getInternalRepresentative( nh, d_f, d_index );
+          //don't consider this if already the instantiation is ineligible
+          if( !d_qe->getTermDatabase()->isTermEligibleForInstantiation( nh, d_f, false ) ){
+            nh = Node::null();
+          }
+        }
+        if( !nh.isNull() ){
+          d_firstTime = false;
+          //an equivalence class with the same type as the pattern, return it
+          return nh;
+        }
+      }
+    }
+  }
+  if( d_firstTime ){
+    //must return something
+    d_firstTime = false;
+    return d_qe->getTermDatabase()->getModelBasisTerm( d_match_pattern_type );
+  }
+  return Node::null();
+}
diff --git a/src/theory/quantifiers/candidate_generator.h b/src/theory/quantifiers/candidate_generator.h
new file mode 100644
index 0000000..4fc6969
--- /dev/null
+++ b/src/theory/quantifiers/candidate_generator.h
@@ -0,0 +1,178 @@
+/*********************                                                        */
+/*! \file candidate_generator.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Clark Barrett
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Theory uf candidate generator
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANTIFIERS__CANDIDATE_GENERATOR_H
+#define __CVC4__THEORY__QUANTIFIERS__CANDIDATE_GENERATOR_H
+
+#include "theory/theory.h"
+#include "theory/uf/equality_engine.h"
+
+namespace CVC4 {
+namespace theory {
+
+namespace quantifiers {
+  class TermArgTrie;
+}
+
+class QuantifiersEngine;
+
+namespace inst {
+
+/** base class for generating candidates for matching */
+class CandidateGenerator {
+protected:
+  QuantifiersEngine* d_qe;
+public:
+  CandidateGenerator( QuantifiersEngine* qe ) : d_qe( qe ){}
+  virtual ~CandidateGenerator(){}
+
+  /** Get candidates functions.  These set up a context to get all match candidates.
+      cg->reset( eqc );
+      do{
+        Node cand = cg->getNextCandidate();
+        //.......
+      }while( !cand.isNull() );
+
+      eqc is the equivalence class you are searching in
+  */
+  virtual void reset( Node eqc ) = 0;
+  virtual Node getNextCandidate() = 0;
+  /** add candidate to list of nodes returned by this generator */
+  virtual void addCandidate( Node n ) {}
+  /** call this at the beginning of each instantiation round */
+  virtual void resetInstantiationRound() = 0;
+public:
+  /** legal candidate */
+  bool isLegalCandidate( Node n );
+};/* class CandidateGenerator */
+
+/** candidate generator queue (for manual candidate generation) */
+class CandidateGeneratorQueue : public CandidateGenerator {
+private:
+  std::vector< Node > d_candidates;
+  int d_candidate_index;
+public:
+  CandidateGeneratorQueue( QuantifiersEngine* qe ) : CandidateGenerator( qe ), d_candidate_index( 0 ){}
+  ~CandidateGeneratorQueue() throw() {}
+
+  void addCandidate( Node n );
+
+  void resetInstantiationRound(){}
+  void reset( Node eqc );
+  Node getNextCandidate();
+};/* class CandidateGeneratorQueue */
+
+//the default generator
+class CandidateGeneratorQE : public CandidateGenerator
+{
+  friend class CandidateGeneratorQEDisequal;
+private:
+  //operator you are looking for
+  Node d_op;
+  //the equality class iterator
+  unsigned d_op_arity;
+  std::vector< quantifiers::TermArgTrie* > d_tindex;
+  std::vector< std::map< TNode, quantifiers::TermArgTrie >::iterator > d_tindex_iter;
+  eq::EqClassIterator d_eqc_iter;
+  //std::vector< Node > d_eqc;
+  int d_term_iter;
+  int d_term_iter_limit;
+  bool d_using_term_db;
+  enum {
+    cand_term_db,
+    cand_term_ident,
+    cand_term_eqc,
+    cand_term_tindex,
+    cand_term_none,
+  };
+  short d_mode;
+  bool isLegalOpCandidate( Node n );
+  Node d_n;
+  std::map< Node, bool > d_exclude_eqc;
+public:
+  CandidateGeneratorQE( QuantifiersEngine* qe, Node pat );
+  ~CandidateGeneratorQE() throw() {}
+
+  void resetInstantiationRound();
+  void reset( Node eqc );
+  Node getNextCandidate();
+  void excludeEqc( Node r ) { d_exclude_eqc[r] = true; }
+  bool isExcludedEqc( Node r ) { return d_exclude_eqc.find( r )!=d_exclude_eqc.end(); }
+};
+
+class CandidateGeneratorQELitEq : public CandidateGenerator
+{
+private:
+  //the equality classes iterator
+  eq::EqClassesIterator d_eq;
+  //equality you are trying to match equalities for
+  Node d_match_pattern;
+  Node d_match_gterm;
+  bool d_do_mgt;
+public:
+  CandidateGeneratorQELitEq( QuantifiersEngine* qe, Node mpat );
+  ~CandidateGeneratorQELitEq() throw() {}
+
+  void resetInstantiationRound();
+  void reset( Node eqc );
+  Node getNextCandidate();
+};
+
+class CandidateGeneratorQELitDeq : public CandidateGenerator
+{
+private:
+  //the equality class iterator for false
+  eq::EqClassIterator d_eqc_false;
+  //equality you are trying to match disequalities for
+  Node d_match_pattern;
+  //type of disequality
+  TypeNode d_match_pattern_type;
+public:
+  CandidateGeneratorQELitDeq( QuantifiersEngine* qe, Node mpat );
+  ~CandidateGeneratorQELitDeq() throw() {}
+
+  void resetInstantiationRound();
+  void reset( Node eqc );
+  Node getNextCandidate();
+};
+
+class CandidateGeneratorQEAll : public CandidateGenerator
+{
+private:
+  //the equality classes iterator
+  eq::EqClassesIterator d_eq;
+  //equality you are trying to match equalities for
+  Node d_match_pattern;
+  TypeNode d_match_pattern_type;
+  // quantifier/index for the variable we are matching
+  Node d_f;
+  unsigned d_index;
+  //first time
+  bool d_firstTime;
+public:
+  CandidateGeneratorQEAll( QuantifiersEngine* qe, Node mpat );
+  ~CandidateGeneratorQEAll() throw() {}
+
+  void resetInstantiationRound();
+  void reset( Node eqc );
+  Node getNextCandidate();
+};
+
+}/* CVC4::theory::inst namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__QUANTIFIERS__CANDIDATE_GENERATOR_H */
diff --git a/src/theory/quantifiers/ce_guided_instantiation.cpp b/src/theory/quantifiers/ce_guided_instantiation.cpp
new file mode 100644
index 0000000..9903f14
--- /dev/null
+++ b/src/theory/quantifiers/ce_guided_instantiation.cpp
@@ -0,0 +1,912 @@
+/*********************                                                        */
+/*! \file ce_guided_instantiation.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief counterexample guided instantiation class
+ **
+ **/
+#include "theory/quantifiers/ce_guided_instantiation.h"
+
+#include "expr/datatype.h"
+#include "options/quantifiers_options.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/theory_engine.h"
+#include "prop/prop_engine.h"
+#include "theory/bv/theory_bv_rewriter.h"
+
+using namespace CVC4::kind;
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+
+CegConjecture::CegConjecture( QuantifiersEngine * qe, context::Context* c )
+    : d_qe( qe ), d_curr_lit( c, 0 )
+{
+  d_refine_count = 0;
+  d_ceg_si = new CegConjectureSingleInv( qe, this );
+}
+
+CegConjecture::~CegConjecture() {
+  delete d_ceg_si;
+}
+
+void CegConjecture::assign( Node q ) {
+  Assert( d_quant.isNull() );
+  Assert( q.getKind()==FORALL );
+  d_assert_quant = q;
+  //register with single invocation if applicable
+  if( d_qe->getTermDatabase()->isQAttrSygus( d_assert_quant ) && options::cegqiSingleInvMode()!=CEGQI_SI_MODE_NONE ){
+    d_ceg_si->initialize( q );
+    if( q!=d_ceg_si->d_quant ){
+      //Node red_lem = NodeManager::currentNM()->mkNode( OR, q.negate(), d_cegqi_si->d_quant );
+      //may have rewritten quantified formula (for invariant synthesis)
+      q = d_ceg_si->d_quant;
+    }
+  }
+  d_quant = q;
+  Assert( d_candidates.empty() );
+  std::vector< Node > vars;
+  for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
+    vars.push_back( q[0][i] );
+    d_candidates.push_back( NodeManager::currentNM()->mkSkolem( "e", q[0][i].getType() ) );
+  }
+  Trace("cegqi") << "Base quantified formula is : " << q << std::endl;
+  //construct base instantiation
+  d_base_inst = Rewriter::rewrite( d_qe->getInstantiation( q, vars, d_candidates ) );
+  Trace("cegqi") << "Base instantiation is :      " << d_base_inst << std::endl;
+  if( d_qe->getTermDatabase()->isQAttrSygus( d_assert_quant ) ){
+    CegInstantiation::collectDisjuncts( d_base_inst, d_base_disj );
+    Trace("cegqi") << "Conjecture has " << d_base_disj.size() << " disjuncts." << std::endl;
+    //store the inner variables for each disjunct
+    for( unsigned j=0; j<d_base_disj.size(); j++ ){
+      d_inner_vars_disj.push_back( std::vector< Node >() );
+      //if the disjunct is an existential, store it
+      if( d_base_disj[j].getKind()==NOT && d_base_disj[j][0].getKind()==FORALL ){
+        for( unsigned k=0; k<d_base_disj[j][0][0].getNumChildren(); k++ ){
+          d_inner_vars.push_back( d_base_disj[j][0][0][k] );
+          d_inner_vars_disj[j].push_back( d_base_disj[j][0][0][k] );
+        }
+      }
+    }
+    d_syntax_guided = true;
+  }else if( d_qe->getTermDatabase()->isQAttrSynthesis( d_assert_quant ) ){
+    d_syntax_guided = false;
+  }else{
+    Assert( false );
+  }
+}
+
+void CegConjecture::initializeGuard( QuantifiersEngine * qe ){
+  if( isAssigned() ){
+    if( !d_syntax_guided ){
+      if( d_nsg_guard.isNull() ){
+        d_nsg_guard = Rewriter::rewrite( NodeManager::currentNM()->mkSkolem( "G", NodeManager::currentNM()->booleanType() ) );
+        d_nsg_guard = qe->getValuation().ensureLiteral( d_nsg_guard );
+        AlwaysAssert( !d_nsg_guard.isNull() );
+        qe->getOutputChannel().requirePhase( d_nsg_guard, true );
+        //add immediate lemma
+        Node lem = NodeManager::currentNM()->mkNode( OR, d_nsg_guard.negate(), d_base_inst.negate() );
+        Trace("cegqi-lemma") << "Cegqi::Lemma : non-syntax-guided : " << lem << std::endl;
+        qe->getOutputChannel().lemma( lem );
+      }
+    }else if( d_ceg_si->d_si_guard.isNull() ){
+      std::vector< Node > lems;
+      d_ceg_si->getInitialSingleInvLemma( lems );
+      for( unsigned i=0; i<lems.size(); i++ ){
+        Trace("cegqi-lemma") << "Cegqi::Lemma : single invocation " << i << " : " << lems[i] << std::endl;
+        qe->getOutputChannel().lemma( lems[i] );
+        if( Trace.isOn("cegqi-debug") ){
+          Node rlem = Rewriter::rewrite( lems[i] );
+          Trace("cegqi-debug") << "...rewritten : " << rlem << std::endl;
+        }
+      }
+    }
+    Assert( !getGuard().isNull() );
+  }
+}
+
+Node CegConjecture::getLiteral( QuantifiersEngine * qe, int i ) {
+  if( d_measure_term.isNull() ){
+    return Node::null();
+  }else{
+    std::map< int, Node >::iterator it = d_lits.find( i );
+    if( it==d_lits.end() ){
+      Trace("cegqi-engine") << "******* CEGQI : allocate size literal " << i << std::endl;
+      Node c = NodeManager::currentNM()->mkConst( Rational( i ) );
+      Node lit = NodeManager::currentNM()->mkNode( LEQ, d_measure_term, c );
+      lit = Rewriter::rewrite( lit );
+      d_lits[i] = lit;
+
+      Node lem = NodeManager::currentNM()->mkNode( kind::OR, lit, lit.negate() );
+      Trace("cegqi-lemma") << "Cegqi::Lemma : Fairness split : " << lem << std::endl;
+      qe->getOutputChannel().lemma( lem );
+      qe->getOutputChannel().requirePhase( lit, true );
+
+      if( getCegqiFairMode()==CEGQI_FAIR_DT_HEIGHT_PRED || getCegqiFairMode()==CEGQI_FAIR_DT_SIZE_PRED ){
+        //implies height bounds on each candidate variable
+        std::vector< Node > lem_c;
+        for( unsigned j=0; j<d_candidates.size(); j++ ){
+          if( getCegqiFairMode()==CEGQI_FAIR_DT_HEIGHT_PRED ){
+            lem_c.push_back( NodeManager::currentNM()->mkNode( DT_HEIGHT_BOUND, d_candidates[j], c ) );
+          }else{
+            //lem_c.push_back( NodeManager::currentNM()->mkNode( DT_SIZE_BOUND, d_candidates[j], c ) );
+          }
+        }
+        Node hlem = NodeManager::currentNM()->mkNode( OR, lit.negate(), lem_c.size()==1 ? lem_c[0] : NodeManager::currentNM()->mkNode( AND, lem_c ) );
+        Trace("cegqi-lemma") << "Cegqi::Lemma : Fairness expansion (pred) : " << hlem << std::endl;
+        qe->getOutputChannel().lemma( hlem );
+      }
+      return lit;
+    }else{
+      return it->second;
+    }
+  }
+}
+
+Node CegConjecture::getGuard() {
+  return !d_syntax_guided ? d_nsg_guard : d_ceg_si->d_si_guard;
+}
+
+CegqiFairMode CegConjecture::getCegqiFairMode() {
+  return isSingleInvocation() ? CEGQI_FAIR_NONE : options::ceGuidedInstFair();
+}
+
+bool CegConjecture::isSingleInvocation() const {
+  return d_ceg_si->isSingleInvocation();
+}
+
+bool CegConjecture::isFullySingleInvocation() {
+  return d_ceg_si->isFullySingleInvocation();
+}
+
+bool CegConjecture::needsCheck( std::vector< Node >& lem ) {
+  if( isSingleInvocation() && !d_ceg_si->needsCheck() ){
+    return false;
+  }else{
+    bool value;
+    if( !isSingleInvocation() || isFullySingleInvocation() ){
+      Assert( !getGuard().isNull() );
+      // non or fully single invocation : look at guard only
+      if( d_qe->getValuation().hasSatValue( getGuard(), value ) ) {
+        if( !value ){
+          Trace("cegqi-engine-debug") << "Conjecture is infeasible." << std::endl;
+          return false;
+        }
+      }else{
+        Assert( false );
+      }
+    }else{
+      // not fully single invocation : infeasible if overall specification is infeasible
+      Assert( !d_ceg_si->d_full_guard.isNull() );
+      if( d_qe->getValuation().hasSatValue( d_ceg_si->d_full_guard, value ) ) {
+        if( !value ){
+          Trace("cegqi-nsi") << "NSI : found full specification is infeasible." << std::endl;
+          return false;
+        }else{
+          Assert( !d_ceg_si->d_si_guard.isNull() );
+          if( d_qe->getValuation().hasSatValue( d_ceg_si->d_si_guard, value ) ) {
+            if( !value ){
+              if( !d_ceg_si->d_single_inv_exp.isNull() ){
+                //this should happen infrequently : only if cegqi determines infeasibility of a false candidate before E-matching does
+                Trace("cegqi-nsi") << "NSI : current single invocation lemma was infeasible, block assignment upon which conjecture was based." << std::endl;
+                Node l = NodeManager::currentNM()->mkNode( OR, d_ceg_si->d_full_guard.negate(), d_ceg_si->d_single_inv_exp );
+                lem.push_back( l );
+                d_ceg_si->initializeNextSiConjecture();
+              }
+              return false;
+            }
+          }else{
+            Assert( false );
+          }
+        }
+      }else{
+        Assert( false );
+      }
+    }
+    return true;
+  }
+}
+
+void CegConjecture::preregisterConjecture( Node q ) {
+  d_ceg_si->preregisterConjecture( q );
+}
+
+CegInstantiation::CegInstantiation( QuantifiersEngine * qe, context::Context* c ) : QuantifiersModule( qe ){
+  d_conj = new CegConjecture( qe, qe->getSatContext() );
+  d_last_inst_si = false;
+}
+
+CegInstantiation::~CegInstantiation(){ 
+  delete d_conj;
+}
+
+bool CegInstantiation::needsCheck( Theory::Effort e ) {
+  return e>=Theory::EFFORT_LAST_CALL;
+}
+
+unsigned CegInstantiation::needsModel( Theory::Effort e ) {
+  return d_conj->getCegConjectureSingleInv()->isSingleInvocation()
+      ? QuantifiersEngine::QEFFORT_STANDARD : QuantifiersEngine::QEFFORT_MODEL;
+}
+
+void CegInstantiation::check( Theory::Effort e, unsigned quant_e ) {
+  unsigned echeck = d_conj->getCegConjectureSingleInv()->isSingleInvocation() ?
+      QuantifiersEngine::QEFFORT_STANDARD : QuantifiersEngine::QEFFORT_MODEL;
+  if( quant_e==echeck ){
+    Trace("cegqi-engine") << "---Counterexample Guided Instantiation Engine---" << std::endl;
+    Trace("cegqi-engine-debug") << std::endl;
+    bool active = false;
+    bool value;
+    if( d_quantEngine->getValuation().hasSatValue( d_conj->d_assert_quant, value ) ) {
+      active = value;
+    }else{
+      Trace("cegqi-engine-debug") << "...no value for quantified formula." << std::endl;
+    }
+    Trace("cegqi-engine-debug") << "Current conjecture status : active : " << active << std::endl;
+    std::vector< Node > lem;
+    if( active && d_conj->needsCheck( lem ) ){
+      checkCegConjecture( d_conj );
+    }else{
+      Trace("cegqi-engine-debug") << "...does not need check." << std::endl;
+      for( unsigned i=0; i<lem.size(); i++ ){
+        Trace("cegqi-lemma") << "Cegqi::Lemma : check lemma : " << lem[i] << std::endl;
+        d_quantEngine->addLemma( lem[i] );
+      }
+    }
+    Trace("cegqi-engine") << "Finished Counterexample Guided Instantiation engine." << std::endl;
+  }
+}
+
+void CegInstantiation::preRegisterQuantifier( Node q ) {
+  if( options::sygusDirectEval() ){
+    if( q.getNumChildren()==3 && q[2].getKind()==INST_PATTERN_LIST && q[2][0].getKind()==INST_PATTERN ){  
+      //check whether it is an evaluation axiom
+      Node pat = q[2][0][0];
+      if( pat.getKind()==APPLY_UF ){
+        TypeNode tn = pat[0].getType();
+        if( tn.isDatatype() ){
+          const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+          if( dt.isSygus() ){
+            //do unfolding if it induces Boolean structure, 
+            //do direct evaluation if it does not induce Boolean structure,
+            //  the reasoning is unfolding over these terms does not lead to helpful conflict analysis, and introduces many shared terms
+            bool directEval = true;
+            TypeNode ptn = pat.getType();
+            if( ptn.isBoolean() || ptn.isBitVector() ){
+              directEval = false;
+            }else{
+              unsigned cindex = Datatype::indexOf(pat[0].getOperator().toExpr() );
+              Node base = d_quantEngine->getTermDatabaseSygus()->getGenericBase( tn, dt, cindex );
+              Trace("cegqi-debug") << "Generic base term for " << pat[0] << " is " << base << std::endl;
+              if( base.getKind()==ITE ){
+                directEval = false;
+              }
+            }
+            if( directEval ){
+              //take ownership of this quantified formula (will use direct evaluation instead of unfolding instantiation)
+              d_quantEngine->setOwner( q, this );
+              d_eval_axioms[q] = true;
+            }
+          }
+        }
+      }
+    }
+  }  
+}
+
+void CegInstantiation::registerQuantifier( Node q ) {
+  if( d_quantEngine->getOwner( q )==this && d_eval_axioms.find( q )==d_eval_axioms.end() ){
+    if( !d_conj->isAssigned() ){
+      Trace("cegqi") << "Register conjecture : " << q << std::endl;
+      d_conj->assign( q );
+
+      //fairness
+      if( d_conj->getCegqiFairMode()!=CEGQI_FAIR_NONE ){
+        std::vector< Node > mc;
+        for( unsigned j=0; j<d_conj->d_candidates.size(); j++ ){
+          TypeNode tn = d_conj->d_candidates[j].getType();
+          if( d_conj->getCegqiFairMode()==CEGQI_FAIR_DT_SIZE ){
+            if( tn.isDatatype() ){
+              mc.push_back( NodeManager::currentNM()->mkNode( DT_SIZE, d_conj->d_candidates[j] ) );
+            }
+          }else if( d_conj->getCegqiFairMode()==CEGQI_FAIR_UF_DT_SIZE ){
+            registerMeasuredType( tn );
+            std::map< TypeNode, Node >::iterator it = d_uf_measure.find( tn );
+            if( it!=d_uf_measure.end() ){
+              mc.push_back( NodeManager::currentNM()->mkNode( APPLY_UF, it->second, d_conj->d_candidates[j] ) );
+            }
+          }else if( d_conj->getCegqiFairMode()==CEGQI_FAIR_DT_HEIGHT_PRED || d_conj->getCegqiFairMode()==CEGQI_FAIR_DT_SIZE_PRED  ){
+            //measure term is a fresh constant
+            mc.push_back( NodeManager::currentNM()->mkSkolem( "K", NodeManager::currentNM()->integerType() ) );
+          }
+        }
+        if( !mc.empty() ){
+          d_conj->d_measure_term = mc.size()==1 ? mc[0] : NodeManager::currentNM()->mkNode( PLUS, mc );
+          Trace("cegqi") << "Measure term is : " << d_conj->d_measure_term << std::endl;
+        }
+      }
+    }else{
+      Assert( d_conj->d_quant==q );
+    }
+  }else{
+    Trace("cegqi-debug") << "Register quantifier : " << q << std::endl;
+  }
+}
+
+void CegInstantiation::assertNode( Node n ) {
+}
+
+Node CegInstantiation::getNextDecisionRequest( unsigned& priority ) {
+  //enforce fairness
+  if( d_conj->isAssigned() ){
+    d_conj->initializeGuard( d_quantEngine );
+    std::vector< Node > req_dec;
+    const CegConjectureSingleInv* ceg_si = d_conj->getCegConjectureSingleInv();
+    if( ! ceg_si->d_full_guard.isNull() ){
+      req_dec.push_back( ceg_si->d_full_guard );
+    }
+    //must decide ns guard before s guard
+    if( !ceg_si->d_ns_guard.isNull() ){
+      req_dec.push_back( ceg_si->d_ns_guard );
+    }
+    req_dec.push_back( d_conj->getGuard() );
+    for( unsigned i=0; i<req_dec.size(); i++ ){
+      bool value;
+      if( !d_quantEngine->getValuation().hasSatValue( req_dec[i], value ) ) {
+        Trace("cegqi-debug") << "CEGQI : Decide next on : " << req_dec[i] << "..." << std::endl;
+        priority = 0;
+        return req_dec[i];
+      }else{
+        Trace("cegqi-debug2") << "CEGQI : " << req_dec[i] << " already has value " << value << std::endl;
+      }
+    }
+
+    if( d_conj->getCegqiFairMode()!=CEGQI_FAIR_NONE ){
+      Node lit = d_conj->getLiteral( d_quantEngine, d_conj->d_curr_lit.get() );
+      bool value;
+      if( d_quantEngine->getValuation().hasSatValue( lit, value ) ) {
+        if( !value ){
+          d_conj->d_curr_lit.set( d_conj->d_curr_lit.get() + 1 );
+          lit = d_conj->getLiteral( d_quantEngine, d_conj->d_curr_lit.get() );
+          Trace("cegqi-debug") << "CEGQI : Decide on next lit : " << lit << "..." << std::endl;
+          priority = 1;
+          return lit;
+        }
+      }else{
+        Trace("cegqi-debug") << "CEGQI : Decide on current lit : " << lit << "..." << std::endl;
+        priority = 1;
+        return lit;
+      }
+    }
+  }
+
+  return Node::null();
+}
+
+void CegInstantiation::checkCegConjecture( CegConjecture * conj ) {
+  Node q = conj->d_quant;
+  Node aq = conj->d_assert_quant;
+  Trace("cegqi-engine-debug") << "Synthesis conjecture : " << q << std::endl;
+  Trace("cegqi-engine-debug") << "  * Candidate program/output symbol : ";
+  for( unsigned i=0; i<conj->d_candidates.size(); i++ ){
+    Trace("cegqi-engine-debug") << conj->d_candidates[i] << " ";
+  }
+  Trace("cegqi-engine-debug") << std::endl;
+  Trace("cegqi-engine-debug") << "  * Candidate ce skolems : ";
+  for( unsigned i=0; i<conj->d_ce_sk.size(); i++ ){
+    Trace("cegqi-engine-debug") << conj->d_ce_sk[i] << " ";
+  }
+  Trace("cegqi-engine-debug") << std::endl;
+  if( conj->getCegqiFairMode()!=CEGQI_FAIR_NONE ){
+    Trace("cegqi-engine") << "  * Current term size : " << conj->d_curr_lit.get() << std::endl;
+  }
+
+  if( conj->d_ce_sk.empty() ){
+    Trace("cegqi-engine") << "  *** Check candidate phase..." << std::endl;
+    if( conj->d_syntax_guided ){
+      if( conj->getCegConjectureSingleInv() != NULL ){
+        std::vector< Node > lems;
+        if( conj->doCegConjectureCheck( lems ) ){
+          if( !lems.empty() ){
+            d_last_inst_si = true;
+            for( unsigned j=0; j<lems.size(); j++ ){
+              Trace("cegqi-lemma") << "Cegqi::Lemma : single invocation instantiation : " << lems[j] << std::endl;
+              d_quantEngine->addLemma( lems[j] );
+            }
+            d_statistics.d_cegqi_si_lemmas += lems.size();
+            Trace("cegqi-engine") << "  ...try single invocation." << std::endl;
+          }
+          return;
+        }
+      }
+      std::vector< Node > model_values;
+      if( getModelValues( conj, conj->d_candidates, model_values ) ){
+        if( options::sygusDirectEval() ){
+          std::vector< Node > eager_eval_lem;
+          for( unsigned j=0; j<conj->d_candidates.size(); j++ ){
+            d_quantEngine->getTermDatabaseSygus()->registerModelValue( conj->d_candidates[j], model_values[j], eager_eval_lem );
+          }
+          if( !eager_eval_lem.empty() ){
+            for( unsigned j=0; j<eager_eval_lem.size(); j++ ){
+              Node lem = eager_eval_lem[j];
+              if( d_quantEngine->getTheoryEngine()->isTheoryEnabled(THEORY_BV) ){
+                //FIXME: hack to incorporate hacks from BV for division by zero
+                lem = bv::TheoryBVRewriter::eliminateBVSDiv( lem );
+              }
+              Trace("cegqi-lemma") << "Cegqi::Lemma : evaluation : " << lem << std::endl;
+              d_quantEngine->addLemma( lem );
+            }
+            return;
+          }
+        }
+        //check if we must apply fairness lemmas
+        if( conj->getCegqiFairMode()==CEGQI_FAIR_UF_DT_SIZE ){
+          std::vector< Node > lems;
+          for( unsigned j=0; j<conj->d_candidates.size(); j++ ){
+            getMeasureLemmas( conj->d_candidates[j], model_values[j], lems );
+          }
+          if( !lems.empty() ){
+            for( unsigned j=0; j<lems.size(); j++ ){
+              Trace("cegqi-lemma") << "Cegqi::Lemma : measure : " << lems[j] << std::endl;
+              d_quantEngine->addLemma( lems[j] );
+            }
+            Trace("cegqi-engine") << "  ...refine size." << std::endl;
+            return;
+          }
+        }
+        //must get a counterexample to the value of the current candidate
+        Assert( conj->d_candidates.size()==model_values.size() );
+        Node inst = conj->d_base_inst.substitute( conj->d_candidates.begin(), conj->d_candidates.end(), model_values.begin(), model_values.end() );
+        //check whether we will run CEGIS on inner skolem variables
+        bool sk_refine = ( !conj->isGround() || conj->d_refine_count==0 );
+        if( sk_refine ){
+          conj->d_ce_sk.push_back( std::vector< Node >() );
+        }
+        std::vector< Node > ic;
+        ic.push_back( aq.negate() );
+        std::vector< Node > d;
+        collectDisjuncts( inst, d );
+        Assert( d.size()==conj->d_base_disj.size() );
+        //immediately skolemize inner existentials
+        for( unsigned i=0; i<d.size(); i++ ){
+          Node dr = Rewriter::rewrite( d[i] );
+          if( dr.getKind()==NOT && dr[0].getKind()==FORALL ){
+            ic.push_back( getTermDatabase()->getSkolemizedBody( dr[0] ).negate() );
+            if( sk_refine ){
+              conj->d_ce_sk.back().push_back( dr[0] );
+            }
+          }else{
+            ic.push_back( dr );
+            if( sk_refine ){
+              conj->d_ce_sk.back().push_back( Node::null() );
+            }
+            if( !conj->d_inner_vars_disj[i].empty() ){
+              Trace("cegqi-debug") << "*** quantified disjunct : " << d[i] << " simplifies to " << dr << std::endl;
+            }
+          }
+        }
+        Node lem = NodeManager::currentNM()->mkNode( OR, ic );
+        lem = Rewriter::rewrite( lem );
+        d_last_inst_si = false;
+        //eagerly unfold applications of evaluation function
+        if( options::sygusDirectEval() ){
+          Trace("cegqi-eager") << "pre-unfold counterexample : " << lem << std::endl;
+          std::map< Node, Node > visited_n;
+          lem = getEagerUnfold( lem, visited_n );
+        }
+
+        Trace("cegqi-lemma") << "Cegqi::Lemma : counterexample : " << lem << std::endl;
+        if( d_quantEngine->addLemma( lem ) ){
+          ++(d_statistics.d_cegqi_lemmas_ce);
+          Trace("cegqi-engine") << "  ...find counterexample." << std::endl;
+        }else{
+          //this may happen if we eagerly unfold, simplify to true
+          if( !options::sygusDirectEval() ){
+            Trace("cegqi-engine") << "  ...FAILED to add candidate!" << std::endl;
+          }else{
+            Trace("cegqi-engine-debug") << "  ...FAILED to add candidate!" << std::endl;
+          }
+          if( conj->d_refine_count==0  ){
+            //immediately go to refine candidate
+            checkCegConjecture( conj );
+            return;
+          }
+        }
+      }
+
+    }else{
+      Assert( aq==q );
+      std::vector< Node > model_terms;
+      if( getModelValues( conj, conj->d_candidates, model_terms ) ){
+        d_quantEngine->addInstantiation( q, model_terms );
+      }
+    }
+  }else{
+    Trace("cegqi-engine") << "  *** Refine candidate phase..." << std::endl;
+    for( unsigned j=0; j<conj->d_ce_sk.size(); j++ ){
+      bool success = true;
+      std::vector< Node > lem_c;
+      Assert( conj->d_ce_sk[j].size()==conj->d_base_disj.size() );
+      for( unsigned k=0; k<conj->d_ce_sk[j].size(); k++ ){
+        Node ce_q = conj->d_ce_sk[j][k];
+        Node c_disj = conj->d_base_disj[k];
+        if( !ce_q.isNull() ){
+          Assert( !conj->d_inner_vars_disj[k].empty() );
+          Assert( conj->d_inner_vars_disj[k].size()==getTermDatabase()->d_skolem_constants[ce_q].size() );
+          std::vector< Node > model_values;
+          if( getModelValues( NULL, getTermDatabase()->d_skolem_constants[ce_q], model_values ) ){
+            //candidate refinement : the next candidate must satisfy the counterexample found for the current model of the candidate
+            Node inst_ce_refine = conj->d_base_disj[k][0][1].substitute( conj->d_inner_vars_disj[k].begin(), conj->d_inner_vars_disj[k].end(),
+                                                                         model_values.begin(), model_values.end() );
+            lem_c.push_back( inst_ce_refine );
+          }else{
+            success = false;
+            break;
+          }
+        }else{
+          if( conj->d_inner_vars_disj[k].empty() ){
+            lem_c.push_back( conj->d_base_disj[k].negate() );
+          }else{
+            //denegrate case : quantified disjunct was trivially true and does not need to be refined
+            Trace("cegqi-debug") << "*** skip " << conj->d_base_disj[k] << std::endl;
+          }
+        }
+      }
+      if( success ){
+        Node lem = lem_c.size()==1 ? lem_c[0] : NodeManager::currentNM()->mkNode( AND, lem_c );
+        lem = NodeManager::currentNM()->mkNode( OR, conj->getGuard().negate(), lem );
+        lem = Rewriter::rewrite( lem );
+        Trace("cegqi-lemma") << "Cegqi::Lemma : candidate refinement : " << lem << std::endl;
+        Trace("cegqi-engine") << "  ...refine candidate." << std::endl;
+        bool res = d_quantEngine->addLemma( lem );
+        if( res ){
+          ++(d_statistics.d_cegqi_lemmas_refine);
+          conj->d_refine_count++;
+        }else{
+          Trace("cegqi-engine") << "  ...FAILED to add refinement!" << std::endl;
+        }
+      }
+    }
+    conj->d_ce_sk.clear();
+  }
+}
+
+bool CegInstantiation::getModelValues( CegConjecture * conj, std::vector< Node >& n, std::vector< Node >& v ) {
+  bool success = true;
+  Trace("cegqi-engine") << "  * Value is : ";
+  for( unsigned i=0; i<n.size(); i++ ){
+    Node nv = getModelValue( n[i] );
+    v.push_back( nv );
+    if( Trace.isOn("cegqi-engine") ){
+      TypeNode tn = nv.getType();
+      Trace("cegqi-engine") << n[i] << " -> ";
+      std::stringstream ss;
+      std::vector< Node > lvs;
+      TermDbSygus::printSygusTerm( ss, nv, lvs );
+      Trace("cegqi-engine") << ss.str() << " ";
+    }
+    if( nv.isNull() ){
+      success = false;
+    }
+    if( conj ){
+      conj->d_candidate_inst[i].push_back( nv );
+    }
+  }
+  Trace("cegqi-engine") << std::endl;
+  return success;
+}
+
+Node CegInstantiation::getModelValue( Node n ) {
+  Trace("cegqi-mv") << "getModelValue for : " << n << std::endl;
+  return d_quantEngine->getModel()->getValue( n );
+}
+
+Node CegInstantiation::getModelTerm( Node n ){
+  //TODO
+  return getModelValue( n );
+}
+
+void CegInstantiation::registerMeasuredType( TypeNode tn ) {
+  std::map< TypeNode, Node >::iterator it = d_uf_measure.find( tn );
+  if( it==d_uf_measure.end() ){
+    if( tn.isDatatype() ){
+      TypeNode op_tn = NodeManager::currentNM()->mkFunctionType( tn, NodeManager::currentNM()->integerType() );
+      Node op = NodeManager::currentNM()->mkSkolem( "tsize", op_tn, "was created by ceg instantiation to enforce fairness." );
+      d_uf_measure[tn] = op;
+    }
+  }
+}
+
+Node CegInstantiation::getSizeTerm( Node n, TypeNode tn, std::vector< Node >& lems ) {
+  std::map< Node, Node >::iterator itt = d_size_term.find( n );
+  if( itt==d_size_term.end() ){
+    registerMeasuredType( tn );
+    Node sn = NodeManager::currentNM()->mkNode( APPLY_UF, d_uf_measure[tn], n );
+    lems.push_back( NodeManager::currentNM()->mkNode( LEQ, NodeManager::currentNM()->mkConst( Rational(0) ), sn ) );
+    d_size_term[n] = sn;
+    return sn;
+  }else{
+    return itt->second;
+  }
+}
+
+void CegInstantiation::getMeasureLemmas( Node n, Node v, std::vector< Node >& lems ) {
+  Trace("cegqi-lemma-debug") << "Get measure lemma " << n << " " << v << std::endl;
+  Assert( n.getType()==v.getType() );
+  TypeNode tn = n.getType();
+  if( tn.isDatatype() ){
+    Assert( v.getKind()==APPLY_CONSTRUCTOR );
+    const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+    int index = Datatype::indexOf( v.getOperator().toExpr() );
+    std::map< int, Node >::iterator it = d_size_term_lemma[n].find( index );
+    if( it==d_size_term_lemma[n].end() ){
+      Node lhs = getSizeTerm( n, tn, lems );
+      //add measure lemma
+      std::vector< Node > sumc;
+      for( unsigned j=0; j<dt[index].getNumArgs(); j++ ){
+        TypeNode tnc = v[j].getType();
+        if( tnc.isDatatype() ){
+          Node seln = NodeManager::currentNM()->mkNode( APPLY_SELECTOR_TOTAL, Node::fromExpr( dt[index][j].getSelector() ), n );
+          sumc.push_back( getSizeTerm( seln, tnc, lems ) );
+        }
+      }
+      Node rhs;
+      if( !sumc.empty() ){
+        sumc.push_back( NodeManager::currentNM()->mkConst( Rational(1) ) );
+        rhs = NodeManager::currentNM()->mkNode( PLUS, sumc );
+      }else{
+        rhs = NodeManager::currentNM()->mkConst( Rational(0) );
+      }
+      Node lem = lhs.eqNode( rhs );
+      Node cond = NodeManager::currentNM()->mkNode( APPLY_TESTER, Node::fromExpr( dt[index].getTester() ), n );
+      lem = NodeManager::currentNM()->mkNode( OR, cond.negate(), lem );
+
+      d_size_term_lemma[n][index] = lem;
+      Trace("cegqi-lemma-debug") << "...constructed lemma " << lem << std::endl;
+      lems.push_back( lem );
+      //return;
+    }
+    //get lemmas for children
+    for( unsigned i=0; i<v.getNumChildren(); i++ ){
+      Node nn = NodeManager::currentNM()->mkNode( APPLY_SELECTOR_TOTAL, Node::fromExpr( dt[index][i].getSelector() ), n );
+      getMeasureLemmas( nn, v[i], lems );
+    }
+
+  }
+}
+
+Node CegInstantiation::getEagerUnfold( Node n, std::map< Node, Node >& visited ) {
+  std::map< Node, Node >::iterator itv = visited.find( n );
+  if( itv==visited.end() ){
+    Trace("cegqi-eager-debug") << "getEagerUnfold " << n << std::endl;
+    Node ret;
+    if( n.getKind()==APPLY_UF ){
+      TypeNode tn = n[0].getType();
+      Trace("cegqi-eager-debug") << "check " << n[0].getType() << std::endl;
+      if( tn.isDatatype() ){
+        const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+        if( dt.isSygus() ){ 
+          Trace("cegqi-eager") << "Unfold eager : " << n << std::endl;
+          Node bTerm = d_quantEngine->getTermDatabaseSygus()->sygusToBuiltin( n[0], tn );
+          Trace("cegqi-eager") << "Built-in term : " << bTerm << std::endl;
+          std::vector< Node > vars;
+          std::vector< Node > subs;
+          Node var_list = Node::fromExpr( dt.getSygusVarList() );
+          Assert( var_list.getNumChildren()+1==n.getNumChildren() );
+          for( unsigned j=0; j<var_list.getNumChildren(); j++ ){
+            vars.push_back( var_list[j] );
+          }
+          for( unsigned j=1; j<n.getNumChildren(); j++ ){
+            Node nc = getEagerUnfold( n[j], visited );
+            //if( var_list[j-1].getType().isBoolean() ){   
+            //  //TODO: remove this case when boolean term conversion is eliminated
+            //  Node c = NodeManager::currentNM()->mkConst(BitVector(1u, 1u));
+            //  subs.push_back( nc.eqNode( c ) );
+            //}else{
+            subs.push_back( nc );
+            //}
+            Assert( subs[j-1].getType()==var_list[j-1].getType() );
+          }
+          Assert( vars.size()==subs.size() );
+          bTerm = bTerm.substitute( vars.begin(), vars.end(), subs.begin(), subs.end() );
+          Trace("cegqi-eager") << "Built-in term after subs : " << bTerm << std::endl;
+          Trace("cegqi-eager-debug") << "Types : " << bTerm.getType() << " " << n.getType() << std::endl;
+          Assert( n.getType()==bTerm.getType() );
+          ret = bTerm; 
+        }
+      }
+    }
+    if( ret.isNull() ){
+      if( n.getKind()!=FORALL ){
+        bool childChanged = false;
+        std::vector< Node > children;
+        for( unsigned i=0; i<n.getNumChildren(); i++ ){
+          Node nc = getEagerUnfold( n[i], visited );
+          childChanged = childChanged || n[i]!=nc;
+          children.push_back( nc );
+        }
+        if( childChanged ){
+          if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+            children.insert( children.begin(), n.getOperator() );
+          }
+          ret = NodeManager::currentNM()->mkNode( n.getKind(), children );
+        }
+      }
+      if( ret.isNull() ){
+        ret = n;
+      }
+    }
+    visited[n] = ret;
+    return ret;
+  }else{
+    return itv->second;
+  }
+}
+
+void CegInstantiation::printSynthSolution( std::ostream& out ) {
+  if( d_conj->isAssigned() ){
+    Trace("cegqi-debug") << "Printing synth solution..." << std::endl;
+    //if( !(Trace.isOn("cegqi-stats")) ){
+    //  out << "Solution:" << std::endl;
+    //}
+    for( unsigned i=0; i<d_conj->d_quant[0].getNumChildren(); i++ ){
+      Node prog = d_conj->d_quant[0][i];
+      std::stringstream ss;
+      ss << prog;
+      std::string f(ss.str());
+      f.erase(f.begin());
+      TypeNode tn = prog.getType();
+      Assert( tn.isDatatype() );
+      const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+      Assert( dt.isSygus() );
+      //get the solution
+      Node sol;
+      int status = -1;
+      if( d_last_inst_si ){
+        Assert( d_conj->getCegConjectureSingleInv() != NULL );
+        sol = d_conj->getSingleInvocationSolution( i, tn, status );
+        sol = sol.getKind()==LAMBDA ? sol[1] : sol;
+      }else{
+        if( !d_conj->d_candidate_inst[i].empty() ){
+          sol = d_conj->d_candidate_inst[i].back();
+          // Check if this was based on a template, if so, we must do
+          // Reconstruction
+          if( d_conj->d_assert_quant!=d_conj->d_quant ){
+            Node sygus_sol = sol;
+            Trace("cegqi-inv") << "Sygus version of solution is : " << sol
+                               << ", type : " << sol.getType() << std::endl;
+            std::vector< Node > subs;
+            Expr svl = dt.getSygusVarList();
+            for( unsigned j=0; j<svl.getNumChildren(); j++ ){
+              subs.push_back( Node::fromExpr( svl[j] ) );
+            }
+            bool templIsPost = false;
+            Node templ;
+            if( options::sygusInvTemplMode() == SYGUS_INV_TEMPL_MODE_PRE ){
+              const CegConjectureSingleInv* ceg_si = d_conj->getCegConjectureSingleInv();
+              if(ceg_si->d_trans_pre.find( prog ) != ceg_si->d_trans_pre.end()){
+                templ = ceg_si->getTransPre(prog);
+                templIsPost = false;
+              }
+            }else if(options::sygusInvTemplMode() == SYGUS_INV_TEMPL_MODE_POST){
+              const CegConjectureSingleInv* ceg_si = d_conj->getCegConjectureSingleInv();
+              if(ceg_si->d_trans_post.find(prog) != ceg_si->d_trans_post.end()){
+                templ = ceg_si->getTransPost(prog);
+                templIsPost = true;
+              }
+            }
+            if( !templ.isNull() ){
+              std::vector<Node>& templ_vars = d_conj->getProgTempVars(prog);
+              
+              //take into consideration Boolean term conversion (this step can be eliminated when boolean term conversion is eliminated)
+              std::vector< Node > vars;
+              vars.insert( vars.end(), templ_vars.begin(), templ_vars.end() );
+              Node vl = Node::fromExpr( dt.getSygusVarList() );
+              Assert(vars.size() == subs.size());
+              for( unsigned j=0; j<templ_vars.size(); j++ ){
+                if( vl[j].getType().isBoolean() ){
+                  Node c = NodeManager::currentNM()->mkConst(BitVector(1u, 1u));
+                  vars[j] = vars[j].eqNode( c );
+                }
+                Assert( vars[j].getType()==subs[j].getType() );
+              }
+              
+              templ = templ.substitute( vars.begin(), vars.end(), subs.begin(), subs.end() );
+              TermDbSygus* sygusDb = getTermDatabase()->getTermDatabaseSygus();
+              sol = sygusDb->sygusToBuiltin( sol, sol.getType() );
+              Trace("cegqi-inv") << "Builtin version of solution is : "
+                                 << sol << ", type : " << sol.getType()
+                                 << std::endl;
+              sol = NodeManager::currentNM()->mkNode( templIsPost ? AND : OR, sol, templ );
+            }
+            if( sol==sygus_sol ){
+              sol = sygus_sol;
+              status = 1;
+            }else{
+              Trace("cegqi-inv-debug") << "With template : " << sol << std::endl;
+              sol = Rewriter::rewrite( sol );
+              Trace("cegqi-inv-debug") << "Simplified : " << sol << std::endl;
+              sol = d_conj->reconstructToSyntaxSingleInvocation(sol, tn, status);
+              sol = sol.getKind()==LAMBDA ? sol[1] : sol;
+            }
+          }else{
+            status = 1;
+          }
+        }
+      }
+      if( !(Trace.isOn("cegqi-stats")) ){
+        out << "(define-fun " << f << " ";
+        if( dt.getSygusVarList().isNull() ){
+          out << "() ";
+        }else{
+          out << dt.getSygusVarList() << " ";
+        }
+        out << dt.getSygusType() << " ";
+        if( status==0 ){
+          out << sol;
+        }else{
+          if( sol.isNull() ){
+            out << "?";
+          }else{
+            std::vector< Node > lvs;
+            TermDbSygus::printSygusTerm( out, sol, lvs );
+          }
+        }
+        out << ")" << std::endl;
+      }
+    }
+  }else{
+    Assert( false );
+  }
+}
+
+void CegInstantiation::collectDisjuncts( Node n, std::vector< Node >& d ) {
+  if( n.getKind()==OR ){
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      collectDisjuncts( n[i], d );
+    }
+  }else{
+    d.push_back( n );
+  }
+}
+
+void CegInstantiation::preregisterAssertion( Node n ) {
+  //check if it sygus conjecture
+  if( TermDb::isSygusConjecture( n ) ){
+    //this is a sygus conjecture
+    Trace("cegqi") << "Preregister sygus conjecture : " << n << std::endl;
+    d_conj->preregisterConjecture( n );
+  }
+}
+
+CegInstantiation::Statistics::Statistics():
+  d_cegqi_lemmas_ce("CegInstantiation::cegqi_lemmas_ce", 0),
+  d_cegqi_lemmas_refine("CegInstantiation::cegqi_lemmas_refine", 0),
+  d_cegqi_si_lemmas("CegInstantiation::cegqi_lemmas_si", 0)
+{
+  smtStatisticsRegistry()->registerStat(&d_cegqi_lemmas_ce);
+  smtStatisticsRegistry()->registerStat(&d_cegqi_lemmas_refine);
+  smtStatisticsRegistry()->registerStat(&d_cegqi_si_lemmas);
+}
+
+CegInstantiation::Statistics::~Statistics(){
+  smtStatisticsRegistry()->unregisterStat(&d_cegqi_lemmas_ce);
+  smtStatisticsRegistry()->unregisterStat(&d_cegqi_lemmas_refine);
+  smtStatisticsRegistry()->unregisterStat(&d_cegqi_si_lemmas);
+}
+
+}/* namespace CVC4::theory::quantifiers */
+}/* namespace CVC4::theory */
+}/* namespace CVC4 */
diff --git a/src/theory/quantifiers/ce_guided_instantiation.h b/src/theory/quantifiers/ce_guided_instantiation.h
new file mode 100644
index 0000000..7f36f4d
--- /dev/null
+++ b/src/theory/quantifiers/ce_guided_instantiation.h
@@ -0,0 +1,192 @@
+/*********************                                                        */
+/*! \file ce_guided_instantiation.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief counterexample guided instantiation class
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANTIFIERS__CE_GUIDED_INSTANTIATION_H
+#define __CVC4__THEORY__QUANTIFIERS__CE_GUIDED_INSTANTIATION_H
+
+#include "context/cdchunk_list.h"
+#include "context/cdhashmap.h"
+#include "options/quantifiers_modes.h"
+#include "theory/quantifiers/ce_guided_single_inv.h"
+#include "theory/quantifiers_engine.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+/** a synthesis conjecture */
+class CegConjecture {
+private:
+  QuantifiersEngine * d_qe;
+public:
+  CegConjecture( QuantifiersEngine * qe, context::Context* c );
+  ~CegConjecture();
+
+  /** quantified formula asserted */
+  Node d_assert_quant;
+  /** quantified formula (after processing) */
+  Node d_quant;
+  /** base instantiation */
+  Node d_base_inst;
+  /** expand base inst to disjuncts */
+  std::vector< Node > d_base_disj;
+  /** list of constants for quantified formula */
+  std::vector< Node > d_candidates;
+  /** list of variables on inner quantification */
+  std::vector< Node > d_inner_vars;
+  std::vector< std::vector< Node > > d_inner_vars_disj;
+  /** list of terms we have instantiated candidates with */
+  std::map< int, std::vector< Node > > d_candidate_inst;
+  /** measure term */
+  Node d_measure_term;
+  /** measure sum size */
+  int d_measure_term_size;
+  /** refine count */
+  unsigned d_refine_count;
+  /** current extential quantifeirs whose couterexamples we must refine */
+  std::vector< std::vector< Node > > d_ce_sk;
+
+  const CegConjectureSingleInv* getCegConjectureSingleInv() const {
+    return d_ceg_si;
+  }
+
+  bool doCegConjectureCheck(std::vector< Node >& lems) {
+    return d_ceg_si->check(lems);
+  }
+
+  Node getSingleInvocationSolution(unsigned sol_index, TypeNode stn,
+                                   int& reconstructed, bool rconsSygus=true){
+    return d_ceg_si->getSolution(sol_index, stn, reconstructed, rconsSygus);
+  }
+
+  Node reconstructToSyntaxSingleInvocation(
+      Node s, TypeNode stn, int& reconstructed, bool rconsSygus = true ) {
+    return d_ceg_si->reconstructToSyntax(s, stn, reconstructed, rconsSygus);
+  }
+
+  std::vector<Node>& getProgTempVars(Node prog) {
+    return d_ceg_si->d_prog_templ_vars[prog];
+  }
+
+ private:
+  /** single invocation utility */
+  CegConjectureSingleInv * d_ceg_si;
+public: //non-syntax guided (deprecated)
+  /** guard */
+  bool d_syntax_guided;
+  Node d_nsg_guard;
+public:  //for fairness
+  /** the cardinality literals */
+  std::map< int, Node > d_lits;
+  /** current cardinality */
+  context::CDO< int > d_curr_lit;
+  /** allocate literal */
+  Node getLiteral( QuantifiersEngine * qe, int i );
+  /** get guard */
+  Node getGuard();
+  /** is ground */
+  bool isGround() { return d_inner_vars.empty(); }
+  /** fairness */
+  CegqiFairMode getCegqiFairMode();
+  /** is single invocation */
+  bool isSingleInvocation() const;
+  /** is single invocation */
+  bool isFullySingleInvocation();
+  /** needs check */
+  bool needsCheck( std::vector< Node >& lem );
+  /** preregister conjecture */
+  void preregisterConjecture( Node q );
+  /** initialize guard */
+  void initializeGuard( QuantifiersEngine * qe );
+  /** assign */
+  void assign( Node q );
+  /** is assigned */
+  bool isAssigned() { return !d_quant.isNull(); }
+};
+
+
+class CegInstantiation : public QuantifiersModule
+{
+  typedef context::CDHashMap<Node, bool, NodeHashFunction> NodeBoolMap;
+private:
+  /** the quantified formula stating the synthesis conjecture */
+  CegConjecture * d_conj;
+  /** last instantiation by single invocation module? */
+  bool d_last_inst_si;
+  /** evaluation axioms */
+  std::map< Node, bool > d_eval_axioms;
+private: //for enforcing fairness
+  /** measure functions */
+  std::map< TypeNode, Node > d_uf_measure;
+  /** register measured type */
+  void registerMeasuredType( TypeNode tn );
+  /** term -> size term */
+  std::map< Node, Node > d_size_term;
+  /** get size term */
+  Node getSizeTerm( Node n, TypeNode tn, std::vector< Node >& lems );
+  /** term x constructor -> lemma */
+  std::map< Node, std::map< int, Node > > d_size_term_lemma;
+  /** get measure lemmas */
+  void getMeasureLemmas( Node n, Node v, std::vector< Node >& lems );
+  /** get eager unfolding */
+  Node getEagerUnfold( Node n, std::map< Node, Node >& visited );
+private:
+  /** check conjecture */
+  void checkCegConjecture( CegConjecture * conj );
+  /** get model values */
+  bool getModelValues( CegConjecture * conj, std::vector< Node >& n, std::vector< Node >& v );
+  /** get model value */
+  Node getModelValue( Node n );
+  /** get model term */
+  Node getModelTerm( Node n );
+public:
+  CegInstantiation( QuantifiersEngine * qe, context::Context* c );
+  ~CegInstantiation();
+public:
+  bool needsCheck( Theory::Effort e );
+  unsigned needsModel( Theory::Effort e );
+  /* Call during quantifier engine's check */
+  void check( Theory::Effort e, unsigned quant_e );
+  /* Called for new quantifiers */
+  void preRegisterQuantifier( Node q );
+  void registerQuantifier( Node q );
+  void assertNode( Node n );
+  Node getNextDecisionRequest( unsigned& priority );
+  /** Identify this module (for debugging, dynamic configuration, etc..) */
+  std::string identify() const { return "CegInstantiation"; }
+  /** print solution for synthesis conjectures */
+  void printSynthSolution( std::ostream& out );
+  /** collect disjuncts */
+  static void collectDisjuncts( Node n, std::vector< Node >& ex );
+  /** preregister assertion (before rewrite) */
+  void preregisterAssertion( Node n );
+public:
+  class Statistics {
+  public:
+    IntStat d_cegqi_lemmas_ce;
+    IntStat d_cegqi_lemmas_refine;
+    IntStat d_cegqi_si_lemmas;
+    Statistics();
+    ~Statistics();
+  };/* class CegInstantiation::Statistics */
+  Statistics d_statistics;
+}; /* class CegInstantiation */
+
+} /* namespace CVC4::theory::quantifiers */
+} /* namespace CVC4::theory */
+} /* namespace CVC4 */
+
+#endif
diff --git a/src/theory/quantifiers/ce_guided_single_inv.cpp b/src/theory/quantifiers/ce_guided_single_inv.cpp
new file mode 100644
index 0000000..92d62a1
--- /dev/null
+++ b/src/theory/quantifiers/ce_guided_single_inv.cpp
@@ -0,0 +1,1296 @@
+/*********************                                                        */
+/*! \file ce_guided_single_inv.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief utility for processing single invocation synthesis conjectures
+ **
+ **/
+#include "theory/quantifiers/ce_guided_single_inv.h"
+
+#include "expr/datatype.h"
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/ce_guided_instantiation.h"
+#include "theory/quantifiers/ce_guided_single_inv_ei.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/quant_util.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/trigger.h"
+#include "theory/theory_engine.h"
+
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+using namespace std;
+
+namespace CVC4 {
+
+bool CegqiOutputSingleInv::doAddInstantiation( std::vector< Node >& subs ) {
+  return d_out->doAddInstantiation( subs );
+}
+
+bool CegqiOutputSingleInv::isEligibleForInstantiation( Node n ) {
+  return d_out->isEligibleForInstantiation( n );
+}
+
+bool CegqiOutputSingleInv::addLemma( Node n ) {
+  return d_out->addLemma( n );
+}
+
+CegConjectureSingleInv::CegConjectureSingleInv(QuantifiersEngine* qe,
+                                               CegConjecture* p)
+    : d_qe(qe),
+      d_parent(p),
+      d_sip(new SingleInvocationPartition),
+      d_sol(new CegConjectureSingleInvSol(qe)),
+      d_ei(NULL),
+      d_cosi(new CegqiOutputSingleInv(this)),
+      d_cinst(NULL),
+      d_c_inst_match_trie(NULL),
+      d_has_ites(true) {
+  //  third and fourth arguments set to (false,false) until we have solution
+  //  reconstruction for delta and infinity
+  d_cinst = new CegInstantiator(d_qe, d_cosi, false, false);
+
+  if (options::incrementalSolving()) {
+    d_c_inst_match_trie = new inst::CDInstMatchTrie(qe->getUserContext());
+  }
+
+  if (options::cegqiSingleInvPartial()) {
+    d_ei = new CegEntailmentInfer(qe, d_sip);
+  }
+}
+
+CegConjectureSingleInv::~CegConjectureSingleInv() {
+  if (d_c_inst_match_trie) {
+    delete d_c_inst_match_trie;
+  }
+  delete d_cinst;
+  delete d_cosi;
+  if (d_ei) {
+    delete d_ei;
+  }
+  delete d_sol;  // (new CegConjectureSingleInvSol(qe)),
+  delete d_sip;  // d_sip(new SingleInvocationPartition),
+}
+
+void CegConjectureSingleInv::getInitialSingleInvLemma( std::vector< Node >& lems ) {
+  Assert( d_si_guard.isNull() );
+  //single invocation guard
+  d_si_guard = Rewriter::rewrite( NodeManager::currentNM()->mkSkolem( "G", NodeManager::currentNM()->booleanType() ) );
+  d_si_guard = d_qe->getValuation().ensureLiteral( d_si_guard );
+  AlwaysAssert( !d_si_guard.isNull() );
+  d_qe->getOutputChannel().requirePhase( d_si_guard, true );
+
+  if( !d_single_inv.isNull() ) {
+    //make for new var/sk
+    d_single_inv_var.clear();
+    d_single_inv_sk.clear();
+    Node inst;
+    if( d_single_inv.getKind()==FORALL ){
+      for( unsigned i=0; i<d_single_inv[0].getNumChildren(); i++ ){
+        std::stringstream ss;
+        ss << "k_" << d_single_inv[0][i];
+        Node k = NodeManager::currentNM()->mkSkolem( ss.str(), d_single_inv[0][i].getType(), "single invocation function skolem" );
+        d_single_inv_var.push_back( d_single_inv[0][i] );
+        d_single_inv_sk.push_back( k );
+        d_single_inv_sk_index[k] = i;
+      }
+      inst = d_single_inv[1].substitute( d_single_inv_var.begin(), d_single_inv_var.end(), d_single_inv_sk.begin(), d_single_inv_sk.end() );
+    }else{
+      inst = d_single_inv;
+    }
+    inst = TermDb::simpleNegate( inst );
+    Trace("cegqi-si") << "Single invocation initial lemma : " << inst << std::endl;
+
+    //register with the instantiator
+    Node ginst = NodeManager::currentNM()->mkNode( OR, d_si_guard.negate(), inst );
+    lems.push_back( ginst );
+    //make and register the instantiator
+    if( d_cinst ){
+      delete d_cinst;
+    }
+    d_cinst = new CegInstantiator( d_qe, d_cosi, false, false );
+    d_cinst->registerCounterexampleLemma( lems, d_single_inv_sk );
+  }
+}
+
+void CegConjectureSingleInv::initialize( Node q ) {
+  Assert( d_quant.isNull() );
+  Assert( options::cegqiSingleInvMode()!=CEGQI_SI_MODE_NONE );
+  //initialize data
+  d_quant = q;
+  //process
+  Trace("cegqi-si") << "Initialize cegqi-si for " << q << std::endl;
+  // conj -> conj*
+  std::map< Node, std::vector< Node > > children;
+  // conj X prog -> inv*
+  std::map< Node, std::map< Node, std::vector< Node > > > prog_invoke;
+  std::vector< Node > progs;
+  std::map< Node, std::map< Node, bool > > contains;
+  bool is_syntax_restricted = false;
+  for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
+    progs.push_back( q[0][i] );
+    //check whether all types have ITE
+    TypeNode tn = q[0][i].getType();
+    d_qe->getTermDatabaseSygus()->registerSygusType( tn );
+    if( !d_qe->getTermDatabaseSygus()->sygusToBuiltinType( tn ).isBoolean() ){
+      if( !d_qe->getTermDatabaseSygus()->hasKind( tn, ITE ) ){
+        d_has_ites = false;
+      }
+    }
+    Assert( tn.isDatatype() );
+    const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+    Assert( dt.isSygus() );
+    if( !dt.getSygusAllowAll() ){
+      is_syntax_restricted = true;
+    }
+  }
+  //abort if not aggressive
+  bool singleInvocation = true;
+  if( options::cegqiSingleInvMode()==CEGQI_SI_MODE_USE && is_syntax_restricted ){
+    singleInvocation = false;
+    Trace("cegqi-si") << "...grammar is restricted, do not use single invocation techniques." << std::endl;
+  }else{  
+    Node qq = q[1];
+    if( q[1].getKind()==NOT && q[1][0].getKind()==FORALL ){
+      qq = q[1][0][1];
+    }else{
+      qq = TermDb::simpleNegate( qq );
+    }
+    //remove the deep embedding
+    std::map< Node, Node > visited;
+    std::vector< TypeNode > types;
+    std::vector< Node > order_vars;
+    std::map< Node, Node > single_inv_app_map;
+    int type_valid = 0;
+    qq = removeDeepEmbedding( qq, progs, types, type_valid, visited );
+    Trace("cegqi-si-debug") << "- Remove deep embedding, got : " << qq << ", type valid = " << type_valid << std::endl;
+    if( type_valid==0 ){
+      //process the single invocation-ness of the property
+      d_sip->init( types, qq );
+      Trace("cegqi-si") << "- Partitioned to single invocation parts : " << std::endl;
+      d_sip->debugPrint( "cegqi-si" );
+      //map from program to bound variables
+      for( unsigned j=0; j<progs.size(); j++ ){
+        Node prog = progs[j];
+        std::map< Node, Node >::iterator it_nsi = d_nsi_op_map.find( prog );
+        if( it_nsi!=d_nsi_op_map.end() ){
+          Node op = it_nsi->second;
+          std::map< Node, Node >::iterator it_fov = d_sip->d_func_fo_var.find( op );
+          if( it_fov!=d_sip->d_func_fo_var.end() ){
+            Node pv = it_fov->second;
+            Assert( d_sip->d_func_inv.find( op )!=d_sip->d_func_inv.end() );
+            Node inv = d_sip->d_func_inv[op];
+            single_inv_app_map[prog] = inv;
+            Trace("cegqi-si") << "  " << pv << ", " << inv << " is associated with program " << prog << std::endl;
+            d_prog_to_sol_index[prog] = order_vars.size();
+            order_vars.push_back( pv );
+          }
+        }else{
+          //does not mention the function
+        }
+      }
+      //reorder the variables
+      Assert( d_sip->d_func_vars.size()==order_vars.size() );
+      d_sip->d_func_vars.clear();
+      d_sip->d_func_vars.insert( d_sip->d_func_vars.begin(), order_vars.begin(), order_vars.end() );
+
+      //check if it is single invocation
+      if( !d_sip->d_conjuncts[1].empty() ){
+        singleInvocation = false;
+        if( options::cegqiSingleInvPartial() ){
+          //this enables partially single invocation techniques
+          d_nsingle_inv = d_sip->getNonSingleInvocation();
+          d_nsingle_inv = TermDb::simpleNegate( d_nsingle_inv );
+          d_full_inv = d_sip->getFullSpecification();
+          d_full_inv = TermDb::simpleNegate( d_full_inv );
+          singleInvocation = true;
+        }else if( options::sygusInvTemplMode() != SYGUS_INV_TEMPL_MODE_NONE ){
+          //if we are doing invariant templates, then construct the template
+          std::map< Node, bool > has_inv;
+          std::map< Node, std::vector< Node > > inv_pre_post[2];
+          for( unsigned i=0; i<d_sip->d_conjuncts[2].size(); i++ ){
+            std::vector< Node > disjuncts;
+            Node func;
+            int pol = -1;
+            Trace("cegqi-inv") << "INV process " << d_sip->d_conjuncts[2][i] << std::endl;
+            d_sip->extractInvariant( d_sip->d_conjuncts[2][i], func, pol, disjuncts );
+            if( pol>=0 ){
+              Assert( d_nsi_op_map_to_prog.find( func )!=d_nsi_op_map_to_prog.end() );
+              Node prog = d_nsi_op_map_to_prog[func];
+              Trace("cegqi-inv") << "..." << ( pol==0 ? "pre" : "post" ) << "-condition for " << prog << "." << std::endl;
+              Node c = disjuncts.empty() ? d_qe->getTermDatabase()->d_false : ( disjuncts.size()==1 ? disjuncts[0] : NodeManager::currentNM()->mkNode( OR, disjuncts ) );
+              c = pol==0 ? TermDb::simpleNegate( c ) : c;
+              Trace("cegqi-inv-debug") << "...extracted : " << c << std::endl;
+              inv_pre_post[pol][prog].push_back( c );
+              has_inv[prog] = true;
+            }else{
+              Trace("cegqi-inv") << "...no status." << std::endl;
+            }
+          }
+
+          Trace("cegqi-inv") << "Constructing invariant templates..." << std::endl;
+          //now, contruct the template for the invariant(s)
+          std::map< Node, Node > prog_templ;
+          for( std::map< Node, bool >::iterator iti = has_inv.begin(); iti != has_inv.end(); ++iti ){
+            Node prog = iti->first;
+            Trace("cegqi-inv") << "...for " << prog << "..." << std::endl;
+            Trace("cegqi-inv") << "   args : ";
+            for( unsigned j=0; j<d_sip->d_si_vars.size(); j++ ){
+              std::stringstream ss;
+              ss << "i_" << j;
+              Node v = NodeManager::currentNM()->mkBoundVar( ss.str(), d_sip->d_si_vars[j].getType() );
+              d_prog_templ_vars[prog].push_back( v );
+              Trace("cegqi-inv") << v << " ";
+            }
+            Trace("cegqi-inv") << std::endl;
+            Node pre = inv_pre_post[0][prog].empty() ? NodeManager::currentNM()->mkConst( false ) :
+                        ( inv_pre_post[0][prog].size()==1 ? inv_pre_post[0][prog][0] : NodeManager::currentNM()->mkNode( OR, inv_pre_post[0][prog] ) );
+            d_trans_pre[prog] = pre.substitute( d_sip->d_si_vars.begin(), d_sip->d_si_vars.end(), d_prog_templ_vars[prog].begin(), d_prog_templ_vars[prog].end() );
+            Node post = inv_pre_post[1][prog].empty() ? NodeManager::currentNM()->mkConst( true ) :
+                        ( inv_pre_post[1][prog].size()==1 ? inv_pre_post[1][prog][0] : NodeManager::currentNM()->mkNode( AND, inv_pre_post[1][prog] ) );
+            d_trans_post[prog] = post.substitute( d_sip->d_si_vars.begin(), d_sip->d_si_vars.end(), d_prog_templ_vars[prog].begin(), d_prog_templ_vars[prog].end() );
+            Trace("cegqi-inv") << "   precondition : " << d_trans_pre[prog] << std::endl;
+            Trace("cegqi-inv") << "  postcondition : " << d_trans_post[prog] << std::endl;
+            Node invariant = single_inv_app_map[prog];
+            invariant = invariant.substitute( d_sip->d_si_vars.begin(), d_sip->d_si_vars.end(), d_prog_templ_vars[prog].begin(), d_prog_templ_vars[prog].end() );
+            Trace("cegqi-inv") << "      invariant : " << invariant << std::endl;
+            //construct template
+            Node templ;
+            if( options::sygusInvTemplMode() == SYGUS_INV_TEMPL_MODE_PRE ){
+              //templ = NodeManager::currentNM()->mkNode( AND, NodeManager::currentNM()->mkNode( OR, d_trans_pre[prog], invariant ), d_trans_post[prog] );
+              templ = NodeManager::currentNM()->mkNode( OR, d_trans_pre[prog], invariant );
+            }else{
+              Assert( options::sygusInvTemplMode() == SYGUS_INV_TEMPL_MODE_POST );
+              //templ = NodeManager::currentNM()->mkNode( OR, d_trans_pre[prog], NodeManager::currentNM()->mkNode( AND, d_trans_post[prog], invariant ) );
+              templ = NodeManager::currentNM()->mkNode( AND, d_trans_post[prog], invariant );
+            }
+            visited.clear();
+            templ = addDeepEmbedding( templ, visited );
+            Trace("cegqi-inv") << "       template : " << templ << std::endl;
+            prog_templ[prog] = templ;
+          }
+          Node bd = d_sip->d_conjuncts[2].size()==1 ? d_sip->d_conjuncts[2][0] : NodeManager::currentNM()->mkNode( AND, d_sip->d_conjuncts[2] );
+          visited.clear();
+          bd = addDeepEmbedding( bd, visited );
+          Trace("cegqi-inv") << "           body : " << bd << std::endl;
+          bd = substituteInvariantTemplates( bd, prog_templ, d_prog_templ_vars );
+          Trace("cegqi-inv-debug") << "     templ-subs body : " << bd << std::endl;
+          //make inner existential
+          std::vector< Node > new_var_bv;
+          for( unsigned j=0; j<d_sip->d_si_vars.size(); j++ ){
+            std::stringstream ss;
+            ss << "ss_" << j;
+            new_var_bv.push_back( NodeManager::currentNM()->mkBoundVar( ss.str(), d_sip->d_si_vars[j].getType() ) );
+          }
+          bd = bd.substitute( d_sip->d_si_vars.begin(), d_sip->d_si_vars.end(), new_var_bv.begin(), new_var_bv.end() );
+          Assert( q[1].getKind()==NOT && q[1][0].getKind()==FORALL );
+          for( unsigned j=0; j<q[1][0][0].getNumChildren(); j++ ){
+            new_var_bv.push_back( q[1][0][0][j] );
+          }
+          if( !new_var_bv.empty() ){
+            Node bvl = NodeManager::currentNM()->mkNode( BOUND_VAR_LIST, new_var_bv );
+            bd = NodeManager::currentNM()->mkNode( FORALL, bvl, bd ).negate();
+          }
+          //make outer universal
+          bd = NodeManager::currentNM()->mkNode( FORALL, q[0], bd );
+          bd = Rewriter::rewrite( bd );
+          Trace("cegqi-inv") << "  rtempl-subs body : " << bd << std::endl;
+          d_quant = bd;
+        }
+      }else{
+        //we are fully single invocation
+      }
+    }else{
+      Trace("cegqi-si") << "...property is not single invocation, involves functions with different argument sorts." << std::endl;
+      singleInvocation = false;
+    }
+  }
+  if( singleInvocation ){
+    d_single_inv = d_sip->getSingleInvocation();
+    d_single_inv = TermDb::simpleNegate( d_single_inv );
+    if( !d_sip->d_func_vars.empty() ){
+      Node pbvl = NodeManager::currentNM()->mkNode( BOUND_VAR_LIST, d_sip->d_func_vars );
+      d_single_inv = NodeManager::currentNM()->mkNode( FORALL, pbvl, d_single_inv );
+    }
+    //now, introduce the skolems
+    for( unsigned i=0; i<d_sip->d_si_vars.size(); i++ ){
+      Node v = NodeManager::currentNM()->mkSkolem( "a", d_sip->d_si_vars[i].getType(), "single invocation arg" );
+      d_single_inv_arg_sk.push_back( v );
+    }
+    d_single_inv = d_single_inv.substitute( d_sip->d_si_vars.begin(), d_sip->d_si_vars.end(), d_single_inv_arg_sk.begin(), d_single_inv_arg_sk.end() );
+    Trace("cegqi-si") << "Single invocation formula is : " << d_single_inv << std::endl;
+    if( options::cbqiPreRegInst() && d_single_inv.getKind()==FORALL ){
+      //just invoke the presolve now
+      d_cinst->presolve( d_single_inv );
+    }
+    if( !isFullySingleInvocation() ){
+      //initialize information as next single invocation conjecture
+      initializeNextSiConjecture();
+      Trace("cegqi-si") << "Non-single invocation formula is : " << d_nsingle_inv << std::endl;
+      Trace("cegqi-si") << "Full specification is : " << d_full_inv << std::endl;
+      //add full specification lemma : will use for testing infeasibility/deriving entailments
+      d_full_guard = Rewriter::rewrite( NodeManager::currentNM()->mkSkolem( "GF", NodeManager::currentNM()->booleanType() ) );
+      d_full_guard = d_qe->getValuation().ensureLiteral( d_full_guard );
+      AlwaysAssert( !d_full_guard.isNull() );
+      d_qe->getOutputChannel().requirePhase( d_full_guard, true );
+      Node fbvl;
+      if( !d_sip->d_all_vars.empty() ){
+        fbvl = NodeManager::currentNM()->mkNode( BOUND_VAR_LIST, d_sip->d_all_vars );
+      }
+      //should construct this conjunction directly since miniscoping is disabled
+      std::vector< Node > flem_c;
+      for( unsigned i=0; i<d_sip->d_conjuncts[2].size(); i++ ){
+        Node flemi = d_sip->d_conjuncts[2][i];
+        if( !fbvl.isNull() ){
+          flemi = NodeManager::currentNM()->mkNode( FORALL, fbvl, flemi );
+        }
+        flem_c.push_back( flemi );
+      }
+      Node flem = flem_c.empty() ? d_qe->getTermDatabase()->d_true : ( flem_c.size()==1 ? flem_c[0] : NodeManager::currentNM()->mkNode( AND, flem_c ) );
+      flem = NodeManager::currentNM()->mkNode( OR, d_full_guard.negate(), flem );
+      flem = Rewriter::rewrite( flem );
+      Trace("cegqi-lemma") << "Cegqi::Lemma : full specification " << flem << std::endl;
+      d_qe->getOutputChannel().lemma( flem );
+    }
+  }else{
+    Trace("cegqi-si") << "Formula is not single invocation." << std::endl;
+    if( options::cegqiSingleInvAbort() ){
+      Notice() << "Property is not single invocation." << std::endl;
+      exit( 0 );
+    }
+  }
+}
+
+Node CegConjectureSingleInv::substituteInvariantTemplates( Node n, std::map< Node, Node >& prog_templ, std::map< Node, std::vector< Node > >& prog_templ_vars ) {
+  if( n.getKind()==APPLY_UF && n.getNumChildren()>0 ){
+    std::map< Node, Node >::iterator it = prog_templ.find( n[0] );
+    if( it!=prog_templ.end() ){
+      std::vector< Node > children;
+      for( unsigned i=1; i<n.getNumChildren(); i++ ){
+        children.push_back( n[i] );
+      }
+      std::map< Node, std::vector< Node > >::iterator itv = prog_templ_vars.find( n[0] );
+      Assert( itv!=prog_templ_vars.end() );
+      Assert( children.size()==itv->second.size() );
+      Node newc = it->second.substitute( itv->second.begin(), itv->second.end(), children.begin(), children.end() );
+      return newc;
+    }
+  }
+  bool childChanged = false;
+  std::vector< Node > children;
+  for( unsigned i=0; i<n.getNumChildren(); i++ ){
+    Node nn = substituteInvariantTemplates( n[i], prog_templ, prog_templ_vars );
+    children.push_back( nn );
+    childChanged = childChanged || ( nn!=n[i] );
+  }
+  if( childChanged ){
+    if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+      children.insert( children.begin(), n.getOperator() );
+    }
+    return NodeManager::currentNM()->mkNode( n.getKind(), children );
+  }else{
+    return n;
+  }
+}
+
+Node CegConjectureSingleInv::removeDeepEmbedding( Node n, std::vector< Node >& progs, std::vector< TypeNode >& types, int& type_valid,
+                                                  std::map< Node, Node >& visited ) {
+  std::map< Node, Node >::iterator itv = visited.find( n );
+  if( itv!=visited.end() ){
+    return itv->second;
+  }else{
+    std::vector< Node > children;
+    bool childChanged = false;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      Node ni = removeDeepEmbedding( n[i], progs, types, type_valid, visited );
+      childChanged = childChanged || n[i]!=ni;
+      children.push_back( ni );
+    }
+    Node ret;
+    if( n.getKind()==APPLY_UF ){
+      Assert( n.getNumChildren()>0 );
+      if( std::find( progs.begin(), progs.end(), n[0] )!=progs.end() ){
+        std::map< Node, Node >::iterator it = d_nsi_op_map.find( n[0] );
+        Node op;
+        if( it==d_nsi_op_map.end() ){
+          bool checkTypes = !types.empty();
+          std::vector< TypeNode > argTypes;
+          for( unsigned j=1; j<n.getNumChildren(); j++ ){
+            TypeNode tn = n[j].getType();
+            argTypes.push_back( tn );
+            if( checkTypes ){
+              if( j>=types.size()+1 || tn!=types[j-1] ){
+                type_valid = -1;
+              }
+            }else{
+              types.push_back( tn );
+            }
+          }
+          TypeNode ft = argTypes.empty() ? n.getType() : NodeManager::currentNM()->mkFunctionType( argTypes, n.getType() );
+          std::stringstream ss2;
+          ss2 << "O_" << n[0];
+          op = NodeManager::currentNM()->mkSkolem( ss2.str(), ft, "was created for non-single invocation reasoning" );
+          d_prog_to_eval_op[n[0]] = n.getOperator();
+          d_nsi_op_map[n[0]] = op;
+          d_nsi_op_map_to_prog[op] = n[0];
+          Trace("cegqi-si-debug2") << "Make operator " << op << " for " << n[0] << std::endl;
+        }else{
+          op = it->second;
+        }
+        children[0] = d_nsi_op_map[n[0]];
+        ret = NodeManager::currentNM()->mkNode( APPLY_UF, children );
+      }
+    }
+    if( ret.isNull() ){
+      ret = n;
+      if( childChanged ){
+        if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+          children.insert( children.begin(), n.getOperator() );
+        }
+        ret = NodeManager::currentNM()->mkNode( n.getKind(), children );
+      }
+    }
+    visited[n] = ret;
+    return ret;
+  }
+}
+
+Node CegConjectureSingleInv::addDeepEmbedding( Node n, std::map< Node, Node >& visited ) {
+  std::map< Node, Node >::iterator itv = visited.find( n );
+  if( itv!=visited.end() ){
+    return itv->second;
+  }else{
+    std::vector< Node > children;
+    bool childChanged = false;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      Node ni = addDeepEmbedding( n[i], visited );
+      childChanged = childChanged || n[i]!=ni;
+      children.push_back( ni );
+    }
+    Node ret;
+    if( n.getKind()==APPLY_UF ){
+      Node op = n.getOperator();
+      std::map< Node, Node >::iterator it = d_nsi_op_map_to_prog.find( op );
+      if( it!=d_nsi_op_map_to_prog.end() ){
+        Node prog = it->second;
+        children.insert( children.begin(), prog );
+        Assert( d_prog_to_eval_op.find( prog )!=d_prog_to_eval_op.end() );
+        children.insert( children.begin(), d_prog_to_eval_op[prog] );
+        ret = NodeManager::currentNM()->mkNode( APPLY_UF, children );
+      }
+    }
+    if( ret.isNull() ){
+      ret = n;
+      if( childChanged ){
+        if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+          children.insert( children.begin(), n.getOperator() );
+        }
+        ret = NodeManager::currentNM()->mkNode( n.getKind(), children );
+      }
+    }
+    visited[n] = ret;
+    return ret;
+  }
+}
+
+void CegConjectureSingleInv::initializeNextSiConjecture() {
+  Trace("cegqi-nsi") << "NSI : initialize next candidate conjecture..." << std::endl;
+  if( d_single_inv.isNull() ){
+    if( d_ei->getEntailedConjecture( d_single_inv, d_single_inv_exp ) ){
+      Trace("cegqi-nsi") << "NSI : got : " << d_single_inv << std::endl;
+      Trace("cegqi-nsi") << "NSI : exp : " << d_single_inv_exp << std::endl;
+    }else{
+      Trace("cegqi-nsi") << "NSI : failed to construct next conjecture." << std::endl;
+      Notice() << "Incomplete due to --cegqi-si-partial." << std::endl;
+      exit( 10 );
+    }
+  }else{
+    //initial call
+    Trace("cegqi-nsi") << "NSI : have : " << d_single_inv << std::endl;
+    Assert( d_single_inv_exp.isNull() );
+  }
+
+  d_si_guard = Node::null();
+  d_ns_guard = Rewriter::rewrite( NodeManager::currentNM()->mkSkolem( "GS", NodeManager::currentNM()->booleanType() ) );
+  d_ns_guard = d_qe->getValuation().ensureLiteral( d_ns_guard );
+  AlwaysAssert( !d_ns_guard.isNull() );
+  d_qe->getOutputChannel().requirePhase( d_ns_guard, true );
+  d_lemmas_produced.clear();
+  if( options::incrementalSolving() ){
+    delete d_c_inst_match_trie;
+    d_c_inst_match_trie = new inst::CDInstMatchTrie( d_qe->getUserContext() );
+  }else{
+    d_inst_match_trie.clear();
+  }
+  Trace("cegqi-nsi") << "NSI : initialize next candidate conjecture, ns guard = " << d_ns_guard << std::endl;
+  Trace("cegqi-nsi") << "NSI : conjecture is " << d_single_inv << std::endl;
+}
+
+bool CegConjectureSingleInv::doAddInstantiation( std::vector< Node >& subs ){
+  std::stringstream siss;
+  if( Trace.isOn("cegqi-si-inst-debug") || Trace.isOn("cegqi-engine") ){
+    siss << "  * single invocation: " << std::endl;
+    for( unsigned j=0; j<d_single_inv_sk.size(); j++ ){
+      Assert( d_sip->d_fo_var_to_func.find( d_single_inv[0][j] )!=d_sip->d_fo_var_to_func.end() );
+      Node op = d_sip->d_fo_var_to_func[d_single_inv[0][j]];
+      Assert( d_nsi_op_map_to_prog.find( op )!=d_nsi_op_map_to_prog.end() );
+      Node prog = d_nsi_op_map_to_prog[op];
+      siss << "    * " << prog;
+      siss << " (" << d_single_inv_sk[j] << ")";
+      siss << " -> " << subs[j] << std::endl;
+    }
+  }
+  bool alreadyExists;
+  if( options::incrementalSolving() ){
+    alreadyExists = !d_c_inst_match_trie->addInstMatch( d_qe, d_single_inv, subs, d_qe->getUserContext() );
+  }else{
+    alreadyExists = !d_inst_match_trie.addInstMatch( d_qe, d_single_inv, subs );
+  }
+  Trace("cegqi-si-inst-debug") << siss.str();
+  Trace("cegqi-si-inst-debug") << "  * success = " << !alreadyExists << std::endl;
+  if( alreadyExists ){
+    return false;
+  }else{
+    Trace("cegqi-engine") << siss.str() << std::endl;
+    Assert( d_single_inv_var.size()==subs.size() );
+    Node lem = d_single_inv[1].substitute( d_single_inv_var.begin(), d_single_inv_var.end(), subs.begin(), subs.end() );
+    if( d_qe->getTermDatabase()->containsVtsTerm( lem ) ){
+      Trace("cegqi-engine-debug") << "Rewrite based on vts symbols..." << std::endl;
+      lem = d_qe->getTermDatabase()->rewriteVtsSymbols( lem );
+    }
+    Trace("cegqi-engine-debug") << "Rewrite..." << std::endl;
+    lem = Rewriter::rewrite( lem );
+    Trace("cegqi-si") << "Single invocation lemma : " << lem << std::endl;
+    if( std::find( d_lemmas_produced.begin(), d_lemmas_produced.end(), lem )==d_lemmas_produced.end() ){
+      d_curr_lemmas.push_back( lem );
+      d_lemmas_produced.push_back( lem );
+      d_inst.push_back( std::vector< Node >() );
+      d_inst.back().insert( d_inst.back().end(), subs.begin(), subs.end() );
+    }
+    return true;
+  }
+}
+
+bool CegConjectureSingleInv::isEligibleForInstantiation( Node n ) {
+  return n.getKind()!=SKOLEM || std::find( d_single_inv_arg_sk.begin(), d_single_inv_arg_sk.end(), n )!=d_single_inv_arg_sk.end();
+}
+
+bool CegConjectureSingleInv::addLemma( Node n ) {
+  d_curr_lemmas.push_back( n );
+  return true;
+}
+
+bool CegConjectureSingleInv::check( std::vector< Node >& lems ) {
+  if( !d_single_inv.isNull() ) {
+    if( !d_ns_guard.isNull() ){
+      //if partially single invocation, check if we have constructed a candidate by refutation
+      bool value;
+      if( d_qe->getValuation().hasSatValue( d_ns_guard, value ) ) {
+        if( !value ){
+          //construct candidate solution
+          Trace("cegqi-nsi") << "NSI : refuted current candidate conjecture, construct corresponding solution..." << std::endl;
+          d_ns_guard = Node::null();
+
+          std::map< Node, Node > lams;
+          for( unsigned i=0; i<d_quant[0].getNumChildren(); i++ ){
+            Node prog = d_quant[0][i];
+            int rcons;
+            Node sol = getSolution( i, prog.getType(), rcons, false );
+            Trace("cegqi-nsi") << "  solution for " << prog << " : " << sol << std::endl;
+            //make corresponding lambda
+            std::map< Node, Node >::iterator it_nso = d_nsi_op_map.find( prog );
+            if( it_nso!=d_nsi_op_map.end() ){
+              lams[it_nso->second] = sol;
+            }else{
+              Assert( false );
+            }
+          }
+
+          //now, we will check if this candidate solution satisfies the non-single-invocation portion of the specification
+          Node inst = d_sip->getSpecificationInst( 1, lams );
+          Trace("cegqi-nsi") << "NSI : specification instantiation : " << inst << std::endl;
+          inst = TermDb::simpleNegate( inst );
+          std::vector< Node > subs;
+          for( unsigned i=0; i<d_sip->d_all_vars.size(); i++ ){
+            subs.push_back( NodeManager::currentNM()->mkSkolem( "kv", d_sip->d_all_vars[i].getType(), "created for verifying nsi" ) );
+          }
+          Assert( d_sip->d_all_vars.size()==subs.size() );
+          inst = inst.substitute( d_sip->d_all_vars.begin(), d_sip->d_all_vars.end(), subs.begin(), subs.end() );
+          Trace("cegqi-nsi") << "NSI : verification : " << inst << std::endl;
+          Trace("cegqi-lemma") << "Cegqi::Lemma : verification lemma : " << inst << std::endl;
+          d_qe->addLemma( inst );
+          /*
+          Node finst = d_sip->getFullSpecification();
+          finst = finst.substitute( d_sip->d_all_vars.begin(), d_sip->d_all_vars.end(), subs.begin(), subs.end() );
+          Trace("cegqi-nsi") << "NSI : check refinement : " << finst << std::endl;
+          Node finst_lem = NodeManager::currentNM()->mkNode( OR, d_full_guard.negate(), finst );
+          Trace("cegqi-lemma") << "Cegqi::Lemma : verification, refinement lemma : " << inst << std::endl;
+          d_qe->addLemma( finst_lem );
+          */
+          return true;
+        }else{
+          //currently trying to construct candidate by refutation (by d_cinst->check below)
+        }
+      }else{
+        //should be assigned a SAT value
+        Assert( false );
+      }
+    }else if( !isFullySingleInvocation() ){
+      //create next candidate conjecture
+      Assert( d_ei!=NULL );
+      //construct d_single_inv
+      d_single_inv = Node::null();
+      initializeNextSiConjecture();
+      return true;
+    }
+    d_curr_lemmas.clear();
+    //call check for instantiator
+    d_cinst->check();
+    //add lemmas
+    //add guard if not fully single invocation
+    if( !isFullySingleInvocation() ){
+      Assert( !d_ns_guard.isNull() );
+      for( unsigned i=0; i<d_curr_lemmas.size(); i++ ){
+        lems.push_back( NodeManager::currentNM()->mkNode( OR, d_ns_guard.negate(), d_curr_lemmas[i] ) );
+      }
+    }else{
+      lems.insert( lems.end(), d_curr_lemmas.begin(), d_curr_lemmas.end() );
+    }
+    return !lems.empty();
+  }else{
+    return false;
+  }
+}
+
+Node CegConjectureSingleInv::constructSolution( std::vector< unsigned >& indices, unsigned i, unsigned index, std::map< Node, Node >& weak_imp ) {
+  Assert( index<d_inst.size() );
+  Assert( i<d_inst[index].size() );
+  unsigned uindex = indices[index];
+  if( index==indices.size()-1 ){
+    return d_inst[uindex][i];
+  }else{
+    Node cond = d_lemmas_produced[uindex];
+    //weaken based on unsat core
+    std::map< Node, Node >::iterator itw = weak_imp.find( cond );
+    if( itw!=weak_imp.end() ){
+      cond = itw->second;
+    }
+    cond = TermDb::simpleNegate( cond );
+    Node ite1 = d_inst[uindex][i];
+    Node ite2 = constructSolution( indices, i, index+1, weak_imp );
+    return NodeManager::currentNM()->mkNode( ITE, cond, ite1, ite2 );
+  }
+}
+
+//TODO: use term size?
+struct sortSiInstanceIndices {
+  CegConjectureSingleInv* d_ccsi;
+  int d_i;
+  bool operator() (unsigned i, unsigned j) {
+    if( d_ccsi->d_inst[i][d_i].isConst() && !d_ccsi->d_inst[j][d_i].isConst() ){
+      return true;
+    }else{
+      return false;
+    }
+  }
+};
+
+
+Node CegConjectureSingleInv::postProcessSolution( Node n ){
+  /*
+  ////remove boolean ITE (not allowed for sygus comp 2015)
+  if( n.getKind()==ITE && n.getType().isBoolean() ){
+    Node n1 = postProcessSolution( n[1] );
+    Node n2 = postProcessSolution( n[2] );
+    return NodeManager::currentNM()->mkNode( OR, NodeManager::currentNM()->mkNode( AND, n[0], n1 ),
+                                                 NodeManager::currentNM()->mkNode( AND, n[0].negate(), n2 ) );
+  }else{
+    */
+  bool childChanged = false;
+  Kind k = n.getKind();
+  if( n.getKind()==INTS_DIVISION_TOTAL ){
+    k = INTS_DIVISION;
+    childChanged = true;
+  }else if( n.getKind()==INTS_MODULUS_TOTAL ){
+    k = INTS_MODULUS;
+    childChanged = true;
+  }
+  std::vector< Node > children;
+  for( unsigned i=0; i<n.getNumChildren(); i++ ){
+    Node nn = postProcessSolution( n[i] );
+    children.push_back( nn );
+    childChanged = childChanged || nn!=n[i];
+  }
+  if( childChanged ){
+    if( n.hasOperator() && k==n.getKind() ){
+      children.insert( children.begin(), n.getOperator() );
+    }
+    return NodeManager::currentNM()->mkNode( k, children );
+  }else{
+    return n;
+  }
+}
+
+
+Node CegConjectureSingleInv::getSolution( unsigned sol_index, TypeNode stn, int& reconstructed, bool rconsSygus ){
+  Assert( d_sol!=NULL );
+  Assert( !d_lemmas_produced.empty() );
+  const Datatype& dt = ((DatatypeType)(stn).toType()).getDatatype();
+  Node varList = Node::fromExpr( dt.getSygusVarList() );
+  Node prog = d_quant[0][sol_index];
+  std::vector< Node > vars;
+  Node s;
+  if( d_prog_to_sol_index.find( prog )==d_prog_to_sol_index.end() ){
+    s = d_qe->getTermDatabase()->getEnumerateTerm( TypeNode::fromType( dt.getSygusType() ), 0 );
+  }else{
+    Trace("csi-sol") << "Get solution for " << prog << ", with skolems : ";
+    sol_index = d_prog_to_sol_index[prog];
+    d_sol->d_varList.clear();
+    Assert( d_single_inv_arg_sk.size()==varList.getNumChildren() );
+    for( unsigned i=0; i<d_single_inv_arg_sk.size(); i++ ){
+      Trace("csi-sol") << d_single_inv_arg_sk[i] << " ";
+      //if( varList[i].getType().isBoolean() ){
+      //  //TODO force boolean term conversion mode
+      //  Node c = NodeManager::currentNM()->mkConst(BitVector(1u, 1u));
+      //  vars.push_back( d_single_inv_arg_sk[i].eqNode( c ) );
+      //}else{
+      vars.push_back( d_single_inv_arg_sk[i] );
+      //}
+      d_sol->d_varList.push_back( varList[i] );
+    }
+    Trace("csi-sol") << std::endl;
+
+    //construct the solution
+    Trace("csi-sol") << "Sort solution return values " << sol_index << std::endl;
+    bool useUnsatCore = false;
+    std::vector< Node > active_lemmas;
+    //minimize based on unsat core, if possible
+    std::map< Node, Node > weak_imp;
+    if( options::cegqiSolMinCore() ){
+      if( options::cegqiSolMinInst() ){
+        if( d_qe->getUnsatCoreLemmas( active_lemmas, weak_imp ) ){
+          useUnsatCore = true;
+        }
+      }else{
+        if( d_qe->getUnsatCoreLemmas( active_lemmas ) ){
+          useUnsatCore = true;
+        }
+      }
+    } 
+    Assert( d_lemmas_produced.size()==d_inst.size() );
+    std::vector< unsigned > indices;
+    for( unsigned i=0; i<d_lemmas_produced.size(); i++ ){
+      bool incl = true;
+      if( useUnsatCore ){
+        incl = std::find( active_lemmas.begin(), active_lemmas.end(), d_lemmas_produced[i] )!=active_lemmas.end();
+      }
+      if( incl ){
+        Assert( sol_index<d_inst[i].size() );
+        indices.push_back( i );
+      }
+    }
+    Trace("csi-sol") << "...included " << indices.size() << " / " << d_lemmas_produced.size() << " instantiations." << std::endl;
+    Assert( !indices.empty() );
+    //sort indices based on heuristic : currently, do all constant returns first (leads to simpler conditions)
+    // TODO : to minimize solution size, put the largest term last
+    sortSiInstanceIndices ssii;
+    ssii.d_ccsi = this;
+    ssii.d_i = sol_index;
+    std::sort( indices.begin(), indices.end(), ssii );
+    Trace("csi-sol") << "Construct solution" << std::endl;
+    s = constructSolution( indices, sol_index, 0, weak_imp );
+    Assert( vars.size()==d_sol->d_varList.size() );
+    s = s.substitute( vars.begin(), vars.end(), d_sol->d_varList.begin(), d_sol->d_varList.end() );
+  }
+  d_orig_solution = s;
+
+  //simplify the solution
+  Trace("csi-sol") << "Solution (pre-simplification): " << d_orig_solution << std::endl;
+  s = d_sol->simplifySolution( s, stn );
+  Trace("csi-sol") << "Solution (post-simplification): " << s << std::endl;
+  return reconstructToSyntax( s, stn, reconstructed, rconsSygus );
+}
+
+Node CegConjectureSingleInv::reconstructToSyntax( Node s, TypeNode stn, int& reconstructed, bool rconsSygus ) {
+  d_solution = s;
+  const Datatype& dt = ((DatatypeType)(stn).toType()).getDatatype();
+
+  //reconstruct the solution into sygus if necessary
+  reconstructed = 0;
+  if( options::cegqiSingleInvReconstruct() && !dt.getSygusAllowAll() && !stn.isNull() && rconsSygus ){
+    d_sol->preregisterConjecture( d_orig_conjecture );
+    d_sygus_solution = d_sol->reconstructSolution( s, stn, reconstructed );
+    if( reconstructed==1 ){
+      Trace("csi-sol") << "Solution (post-reconstruction into Sygus): " << d_sygus_solution << std::endl;
+    }
+  }else{
+    Trace("csi-sol") << "Post-process solution..." << std::endl;
+    Node prev = d_solution;
+    d_solution = postProcessSolution( d_solution );
+    if( prev!=d_solution ){
+      Trace("csi-sol") << "Solution (after post process) : " << d_solution << std::endl;
+    }
+  }
+
+
+  if( Trace.isOn("csi-sol") ){
+    //debug solution
+    if( !d_sol->debugSolution( d_solution ) ){
+      Trace("csi-sol") << "WARNING : solution " << d_solution << " contains free constants." << std::endl;
+      //exit( 47 );
+    }else{
+      //exit( 49 );
+    }
+  }
+  if( Trace.isOn("cegqi-stats") ){
+    int tsize, itesize;
+    tsize = 0;itesize = 0;
+    d_sol->debugTermSize( d_orig_solution, tsize, itesize );
+    Trace("cegqi-stats") << tsize << " " << itesize << " ";
+    tsize = 0;itesize = 0;
+    d_sol->debugTermSize( d_solution, tsize, itesize );
+    Trace("cegqi-stats") << tsize << " " << itesize << " ";
+    if( !d_sygus_solution.isNull() ){
+      tsize = 0;itesize = 0;
+      d_sol->debugTermSize( d_sygus_solution, tsize, itesize );
+      Trace("cegqi-stats") << tsize << " - ";
+    }else{
+      Trace("cegqi-stats") << "null ";
+    }
+    Trace("cegqi-stats") << std::endl;
+  }
+  Node sol;
+  if( reconstructed==1 ){
+    sol = d_sygus_solution;
+  }else{
+    sol = d_solution;
+  }
+  //make into lambda
+  if( !dt.getSygusVarList().isNull() ){
+    Node varList = Node::fromExpr( dt.getSygusVarList() );
+    return NodeManager::currentNM()->mkNode( LAMBDA, varList, sol );
+  }else{
+    return sol;
+  }
+}
+
+bool CegConjectureSingleInv::needsCheck() {
+  if( options::cegqiSingleInvMode()==CEGQI_SI_MODE_ALL_ABORT ){
+    if( !d_has_ites ){
+      return d_inst.empty();
+    }
+  }
+  return true;
+}
+
+void CegConjectureSingleInv::preregisterConjecture( Node q ) {
+  d_orig_conjecture = q;
+}
+
+bool SingleInvocationPartition::init( Node n ) {
+  //first, get types of arguments for functions
+  std::vector< TypeNode > typs;
+  std::map< Node, bool > visited;
+  if( inferArgTypes( n, typs, visited ) ){
+    return init( typs, n );
+  }else{
+    Trace("si-prt") << "Could not infer argument types." << std::endl;
+    return false;
+  }
+}
+
+bool SingleInvocationPartition::inferArgTypes( Node n, std::vector< TypeNode >& typs, std::map< Node, bool >& visited ) {
+  if( visited.find( n )==visited.end() ){
+    visited[n] = true;
+    if( n.getKind()!=FORALL ){
+    //if( TermDb::hasBoundVarAttr( n ) ){
+      if( n.getKind()==d_checkKind ){
+        for( unsigned i=0; i<n.getNumChildren(); i++ ){
+          typs.push_back( n[i].getType() );
+        }
+        return true;
+      }else{
+        for( unsigned i=0; i<n.getNumChildren(); i++ ){
+          if( inferArgTypes( n[i], typs, visited ) ){
+            return true;
+          }
+        }
+      }
+    //}
+    }
+  }
+  return false;
+}
+
+bool SingleInvocationPartition::init( std::vector< TypeNode >& typs, Node n ){
+  Assert( d_arg_types.empty() );
+  Assert( d_si_vars.empty() );
+  d_arg_types.insert( d_arg_types.end(), typs.begin(), typs.end() );
+  for( unsigned j=0; j<d_arg_types.size(); j++ ){
+    std::stringstream ss;
+    ss << "s_" << j;
+    Node si_v = NodeManager::currentNM()->mkBoundVar( ss.str(), d_arg_types[j] );
+    d_si_vars.push_back( si_v );
+  }
+  Trace("si-prt") << "Process the formula..." << std::endl;
+  process( n );
+  return true;
+}
+
+
+void SingleInvocationPartition::process( Node n ) {
+  Assert( d_si_vars.size()==d_arg_types.size() );
+  Trace("si-prt") << "SingleInvocationPartition::process " << n << std::endl;
+  Trace("si-prt") << "Get conjuncts..." << std::endl;
+  std::vector< Node > conj;
+  if( collectConjuncts( n, true, conj ) ){
+    Trace("si-prt") << "...success." << std::endl;
+    for( unsigned i=0; i<conj.size(); i++ ){
+      std::vector< Node > si_terms;
+      std::vector< Node > si_subs;
+      Trace("si-prt") << "Process conjunct : " << conj[i] << std::endl;
+      //do DER on conjunct
+      Node cr = TermDb::getQuantSimplify( conj[i] );
+      if( cr!=conj[i] ){
+        Trace("si-prt-debug") << "...rewritten to " << cr << std::endl;
+      }
+      std::map< Node, bool > visited;
+      // functions to arguments
+      std::vector< Node > args;
+      std::vector< Node > terms;
+      std::vector< Node > subs;
+      bool singleInvocation = true;
+      bool ngroundSingleInvocation = false;
+      if( processConjunct( cr, visited, args, terms, subs ) ){
+        for( unsigned j=0; j<terms.size(); j++ ){
+          si_terms.push_back( subs[j] );
+          si_subs.push_back( d_func_fo_var[subs[j].getOperator()] );
+        }
+        std::map< Node, Node > subs_map;
+        std::map< Node, Node > subs_map_rev;
+        std::vector< Node > funcs;
+        //normalize the invocations
+        if( !terms.empty() ){
+          Assert( terms.size()==subs.size() );
+          cr = cr.substitute( terms.begin(), terms.end(), subs.begin(), subs.end() );
+        }
+        std::vector< Node > children;
+        children.push_back( cr );
+        terms.clear();
+        subs.clear();
+        Trace("si-prt") << "...single invocation, with arguments: " << std::endl;
+        for( unsigned j=0; j<args.size(); j++ ){
+          Trace("si-prt") << args[j] << " ";
+          if( args[j].getKind()==BOUND_VARIABLE && std::find( terms.begin(), terms.end(), args[j] )==terms.end() ){
+            terms.push_back( args[j] );
+            subs.push_back( d_si_vars[j] );
+          }else{
+            children.push_back( d_si_vars[j].eqNode( args[j] ).negate() );
+          }
+        }
+        Trace("si-prt") << std::endl;
+        cr = children.size()==1 ? children[0] : NodeManager::currentNM()->mkNode( OR, children );
+        Assert( terms.size()==subs.size() );
+        cr = cr.substitute( terms.begin(), terms.end(), subs.begin(), subs.end() );
+        Trace("si-prt-debug") << "...normalized invocations to " << cr << std::endl;
+        //now must check if it has other bound variables
+        std::vector< Node > bvs;
+        TermDb::getBoundVars( cr, bvs );
+        if( bvs.size()>d_si_vars.size() ){
+          Trace("si-prt") << "...not ground single invocation." << std::endl;
+          ngroundSingleInvocation = true;
+          singleInvocation = false;
+        }else{
+          Trace("si-prt") << "...ground single invocation : success." << std::endl;
+        }
+      }else{
+        Trace("si-prt") << "...not single invocation." << std::endl;
+        singleInvocation = false;
+        //rename bound variables with maximal overlap with si_vars
+        std::vector< Node > bvs;
+        TermDb::getBoundVars( cr, bvs );
+        std::vector< Node > terms;
+        std::vector< Node > subs;
+        for( unsigned j=0; j<bvs.size(); j++ ){
+          TypeNode tn = bvs[j].getType();
+          Trace("si-prt-debug") << "Fit bound var #" << j << " : " << bvs[j] << " with si." << std::endl;
+          for( unsigned k=0; k<d_si_vars.size(); k++ ){
+            if( tn==d_arg_types[k] ){
+              if( std::find( subs.begin(), subs.end(), d_si_vars[k] )==subs.end() ){
+                terms.push_back( bvs[j] );
+                subs.push_back( d_si_vars[k] );
+                Trace("si-prt-debug") << "  ...use " << d_si_vars[k] << std::endl;
+                break;
+              }
+            }
+          }
+        }
+        Assert( terms.size()==subs.size() );
+        cr = cr.substitute( terms.begin(), terms.end(), subs.begin(), subs.end() );
+      }
+      cr = Rewriter::rewrite( cr );
+      Trace("si-prt") << ".....got si=" << singleInvocation << ", result : " << cr << std::endl;
+      d_conjuncts[2].push_back( cr );
+      TermDb::getBoundVars( cr, d_all_vars );
+      if( singleInvocation ){
+        //replace with single invocation formulation
+        Assert( si_terms.size()==si_subs.size() );
+        cr = cr.substitute( si_terms.begin(), si_terms.end(), si_subs.begin(), si_subs.end() );
+        cr = Rewriter::rewrite( cr );
+        Trace("si-prt") << ".....si version=" << cr << std::endl;
+        d_conjuncts[0].push_back( cr );
+      }else{
+        d_conjuncts[1].push_back( cr );
+        if( ngroundSingleInvocation ){
+          d_conjuncts[3].push_back( cr );
+        }
+      }
+    }
+  }else{
+    Trace("si-prt") << "...failed." << std::endl;
+  }
+}
+
+bool SingleInvocationPartition::collectConjuncts( Node n, bool pol, std::vector< Node >& conj ) {
+  if( ( !pol && n.getKind()==OR ) || ( pol && n.getKind()==AND ) ){
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      if( !collectConjuncts( n[i], pol, conj ) ){
+        return false;
+      }
+    }
+  }else if( n.getKind()==NOT ){
+    return collectConjuncts( n[0], !pol, conj );
+  }else if( n.getKind()==FORALL ){
+    return false;
+  }else{
+    if( !pol ){
+      n = TermDb::simpleNegate( n );
+    }
+    Trace("si-prt") << "Conjunct : " << n << std::endl;
+    conj.push_back( n );
+  }
+  return true;
+}
+
+bool SingleInvocationPartition::processConjunct( Node n, std::map< Node, bool >& visited, std::vector< Node >& args,
+                                                 std::vector< Node >& terms, std::vector< Node >& subs ) {
+  std::map< Node, bool >::iterator it = visited.find( n );
+  if( it!=visited.end() ){
+    return true;
+  }else{
+    bool ret = true;
+    //if( TermDb::hasBoundVarAttr( n ) ){
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        if( !processConjunct( n[i], visited, args, terms, subs ) ){
+          ret = false;
+        }
+      }
+      if( ret ){
+        if( n.getKind()==d_checkKind ){
+          if( std::find( terms.begin(), terms.end(), n )==terms.end() ){
+            Node f = n.getOperator();
+            //check if it matches the type requirement
+            if( isAntiSkolemizableType( f ) ){
+              if( args.empty() ){
+                //record arguments
+                for( unsigned i=0; i<n.getNumChildren(); i++ ){
+                  args.push_back( n[i] );
+                }
+              }else{
+                //arguments must be the same as those already recorded
+                for( unsigned i=0; i<n.getNumChildren(); i++ ){
+                  if( args[i]!=n[i] ){
+                    Trace("si-prt-debug") << "...bad invocation : " << n << " at arg " << i << "." << std::endl;
+                    ret = false;
+                    break;
+                  }
+                }
+              }
+              if( ret ){
+                terms.push_back( n );
+                subs.push_back( d_func_inv[f] );
+              }
+            }else{
+              Trace("si-prt-debug") << "... " << f << " is a bad operator." << std::endl;
+              ret = false;
+            }
+          }
+        }
+      }
+    //}
+    visited[n] = ret;
+    return ret;
+  }
+}
+
+bool SingleInvocationPartition::isAntiSkolemizableType( Node f ) {
+  std::map< Node, bool >::iterator it = d_funcs.find( f );
+  if( it!=d_funcs.end() ){
+    return it->second;
+  }else{
+    TypeNode tn = f.getType();
+    bool ret = false;
+    if( tn.getNumChildren()==d_arg_types.size()+1 ){
+      ret = true;
+      std::vector< Node > children;
+      children.push_back( f );
+      //TODO: permutations of arguments
+      for( unsigned i=0; i<d_arg_types.size(); i++ ){
+        children.push_back( d_si_vars[i] );
+        if( tn[i]!=d_arg_types[i] ){
+          ret = false;
+          break;
+        }
+      }
+      if( ret ){
+        Node t = NodeManager::currentNM()->mkNode( d_checkKind, children );
+        d_func_inv[f] = t;
+        d_inv_to_func[t] = f;
+        std::stringstream ss;
+        ss << "F_" << f;
+        Node v = NodeManager::currentNM()->mkBoundVar( ss.str(), tn.getRangeType() );
+        d_func_fo_var[f] = v;
+        d_fo_var_to_func[v] = f;
+        d_func_vars.push_back( v );
+      }
+    }
+    d_funcs[f] = ret;
+    return ret;
+  }
+}
+
+Node SingleInvocationPartition::getConjunct( int index ) {
+  return d_conjuncts[index].empty() ? NodeManager::currentNM()->mkConst( true ) :
+          ( d_conjuncts[index].size()==1 ? d_conjuncts[index][0] : NodeManager::currentNM()->mkNode( AND, d_conjuncts[index] ) );
+}
+
+Node SingleInvocationPartition::getSpecificationInst( Node n, std::map< Node, Node >& lam, std::map< Node, Node >& visited ) {
+  std::map< Node, Node >::iterator it = visited.find( n );
+  if( it!=visited.end() ){
+    return it->second;
+  }else{
+    bool childChanged = false;
+    std::vector< Node > children;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      Node nn = getSpecificationInst( n[i], lam, visited );
+      children.push_back( nn );
+      childChanged = childChanged || ( nn!=n[i] );
+    }
+    Node ret;
+    if( n.getKind()==d_checkKind ){
+      std::map< Node, Node >::iterator itl = lam.find( n.getOperator() );
+      if( itl!=lam.end() ){
+        Assert( itl->second[0].getNumChildren()==children.size() );
+        std::vector< Node > terms;
+        std::vector< Node > subs;
+        for( unsigned i=0; i<itl->second[0].getNumChildren(); i++ ){
+          terms.push_back( itl->second[0][i] );
+          subs.push_back( children[i] );
+        }
+        ret = itl->second[1].substitute( terms.begin(), terms.end(), subs.begin(), subs.end() );
+        ret = Rewriter::rewrite( ret );
+      }
+    }
+    if( ret.isNull() ){
+      ret = n;
+      if( childChanged ){
+        if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+          children.insert( children.begin(), n.getOperator() );
+        }
+        ret = NodeManager::currentNM()->mkNode( n.getKind(), children );
+      }
+    }
+    return ret;
+  }
+}
+
+Node SingleInvocationPartition::getSpecificationInst( int index, std::map< Node, Node >& lam ) {
+  Node conj = getConjunct( index );
+  std::map< Node, Node > visited;
+  return getSpecificationInst( conj, lam, visited );
+}
+
+void SingleInvocationPartition::extractInvariant( Node n, Node& func, int& pol, std::vector< Node >& disjuncts ) {
+  std::map< Node, bool > visited;
+  extractInvariant2( n, func, pol, disjuncts, true, visited );
+}
+
+void SingleInvocationPartition::extractInvariant2( Node n, Node& func, int& pol, std::vector< Node >& disjuncts, bool hasPol, std::map< Node, bool >& visited ) {
+  if( visited.find( n )==visited.end() && pol!=-2 ){
+    Trace("cegqi-inv-debug2") << "Extract : " << n << " " << hasPol << ", pol = " << pol << std::endl;
+    visited[n] = true;
+    if( n.getKind()==OR && hasPol ){
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        extractInvariant2( n[i], func, pol, disjuncts, true, visited );
+      }
+    }else{
+      if( hasPol ){
+        bool lit_pol = n.getKind()!=NOT;
+        Node lit = n.getKind()==NOT ? n[0] : n;
+        std::map< Node, Node >::iterator it = d_inv_to_func.find( lit );
+        if( it!=d_inv_to_func.end() ){
+          if( pol==-1 ){
+            pol = lit_pol ? 0 : 1;
+            func = it->second;
+          }else{
+            //mixing multiple invariants
+            pol = -2;
+          }
+          return;
+        }else{
+          disjuncts.push_back( n );
+        }
+      }
+      //if another part mentions UF or a free variable, then fail
+      if( n.getKind()==APPLY_UF ){
+        Node op = n.getOperator();
+        if( d_funcs.find( op )!=d_funcs.end() ){
+          pol = -2;
+          return;
+        }
+      }else if( n.getKind()==BOUND_VARIABLE && std::find( d_si_vars.begin(), d_si_vars.end(), n )==d_si_vars.end() ){
+        pol = -2;
+        return;
+      }
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        extractInvariant2( n[i], func, pol, disjuncts, false, visited );
+      }
+    }
+  }
+}
+
+void SingleInvocationPartition::debugPrint( const char * c ) {
+  Trace(c) << "Single invocation variables : ";
+  for( unsigned i=0; i<d_si_vars.size(); i++ ){
+    Trace(c) << d_si_vars[i] << " ";
+  }
+  Trace(c) << std::endl;
+  Trace(c) << "Functions : " << std::endl;
+  for( std::map< Node, bool >::iterator it = d_funcs.begin(); it != d_funcs.end(); ++it ){
+    Trace(c) << "  " << it->first << " : ";
+    if( it->second ){
+      Trace(c) << d_func_inv[it->first] << " " << d_func_fo_var[it->first] << std::endl;
+    }else{
+      Trace(c) << "not incorporated." << std::endl;
+    }
+  }
+  for( unsigned i=0; i<4; i++ ){
+    Trace(c) << ( i==0 ? "Single invocation" : ( i==1 ? "Non-single invocation" : ( i==2 ? "All" : "Non-ground single invocation" ) ) );
+    Trace(c) << " conjuncts: " << std::endl;
+    for( unsigned j=0; j<d_conjuncts[i].size(); j++ ){
+      Trace(c) << "  " << (j+1) << " : " << d_conjuncts[i][j] << std::endl;
+    }
+  }
+  Trace(c) << std::endl;
+}
+
+}
diff --git a/src/theory/quantifiers/ce_guided_single_inv.h b/src/theory/quantifiers/ce_guided_single_inv.h
new file mode 100644
index 0000000..449ab71
--- /dev/null
+++ b/src/theory/quantifiers/ce_guided_single_inv.h
@@ -0,0 +1,231 @@
+/*********************                                                        */
+/*! \file ce_guided_single_inv.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King, Clark Barrett
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief utility for processing single invocation synthesis conjectures
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANTIFIERS__CE_GUIDED_SINGLE_INV_H
+#define __CVC4__THEORY__QUANTIFIERS__CE_GUIDED_SINGLE_INV_H
+
+#include "context/cdhashmap.h"
+#include "context/cdchunk_list.h"
+#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/ce_guided_single_inv_sol.h"
+#include "theory/quantifiers/inst_strategy_cbqi.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+class CegConjecture;
+class CegConjectureSingleInv;
+class CegEntailmentInfer;
+
+class CegqiOutputSingleInv : public CegqiOutput {
+public:
+  CegqiOutputSingleInv( CegConjectureSingleInv * out ) : d_out( out ){}
+  virtual ~CegqiOutputSingleInv() {}
+  CegConjectureSingleInv * d_out;
+  bool doAddInstantiation( std::vector< Node >& subs );
+  bool isEligibleForInstantiation( Node n );
+  bool addLemma( Node lem );
+};
+
+
+class SingleInvocationPartition;
+
+class CegConjectureSingleInv {
+ private:
+  friend class CegqiOutputSingleInv;
+  // for recognizing templates for invariant synthesis
+  Node substituteInvariantTemplates(
+      Node n, std::map<Node, Node>& prog_templ,
+      std::map<Node, std::vector<Node> >& prog_templ_vars);
+  // partially single invocation
+  Node removeDeepEmbedding( Node n, std::vector< Node >& progs,
+                            std::vector< TypeNode >& types, int& type_valid,
+                            std::map< Node, Node >& visited );
+  Node addDeepEmbedding( Node n, std::map< Node, Node >& visited );
+  //presolve
+  void collectPresolveEqTerms( Node n,
+                               std::map< Node, std::vector< Node > >& teq );
+  void getPresolveEqConjuncts( std::vector< Node >& vars,
+                               std::vector< Node >& terms,
+                               std::map< Node, std::vector< Node > >& teq,
+                               Node n, std::vector< Node >& conj );
+  // constructing solution
+  Node constructSolution(std::vector<unsigned>& indices, unsigned i,
+                         unsigned index, std::map<Node, Node>& weak_imp);
+  Node postProcessSolution(Node n);
+
+ private:
+  QuantifiersEngine* d_qe;
+  CegConjecture* d_parent;
+  SingleInvocationPartition* d_sip;
+  CegConjectureSingleInvSol* d_sol;
+  CegEntailmentInfer* d_ei;
+  // the instantiator
+  CegqiOutputSingleInv* d_cosi;
+  CegInstantiator* d_cinst;
+
+  // list of skolems for each argument of programs
+  std::vector<Node> d_single_inv_arg_sk;
+  // list of variables/skolems for each program
+  std::vector<Node> d_single_inv_var;
+  std::vector<Node> d_single_inv_sk;
+  std::map<Node, int> d_single_inv_sk_index;
+  // program to solution index
+  std::map<Node, unsigned> d_prog_to_sol_index;
+  // lemmas produced
+  inst::InstMatchTrie d_inst_match_trie;
+  inst::CDInstMatchTrie* d_c_inst_match_trie;
+  // original conjecture
+  Node d_orig_conjecture;
+  // solution
+  Node d_orig_solution;
+  Node d_solution;
+  Node d_sygus_solution;
+  bool d_has_ites;
+
+ public:
+  // lemmas produced
+  std::vector<Node> d_lemmas_produced;
+  std::vector<std::vector<Node> > d_inst;
+
+ private:
+  std::vector<Node> d_curr_lemmas;
+  // add instantiation
+  bool doAddInstantiation( std::vector< Node >& subs );
+  //is eligible for instantiation
+  bool isEligibleForInstantiation( Node n );
+  // add lemma
+  bool addLemma( Node lem );
+ public:
+  CegConjectureSingleInv( QuantifiersEngine * qe, CegConjecture * p );
+  ~CegConjectureSingleInv();
+  // original conjecture
+  Node d_quant;
+  // single invocation portion of quantified formula
+  Node d_single_inv;
+  Node d_si_guard;
+  // non-single invocation portion of quantified formula
+  Node d_nsingle_inv;
+  Node d_ns_guard;
+  // full version quantified formula
+  Node d_full_inv;
+  Node d_full_guard;
+  //explanation for current single invocation conjecture
+  Node d_single_inv_exp;
+  // transition relation version per program
+  std::map< Node, Node > d_trans_pre;
+  std::map< Node, Node > d_trans_post;
+  std::map< Node, std::vector< Node > > d_prog_templ_vars;
+  //the non-single invocation portion of the quantified formula
+  std::map< Node, Node > d_nsi_op_map;
+  std::map< Node, Node > d_nsi_op_map_to_prog;
+  std::map< Node, Node > d_prog_to_eval_op;
+ public:
+  //get the single invocation lemma(s)
+  void getInitialSingleInvLemma( std::vector< Node >& lems );
+  //initialize
+  void initialize( Node q );
+  //check
+  bool check( std::vector< Node >& lems );
+  //get solution
+  Node getSolution( unsigned sol_index, TypeNode stn, int& reconstructed, bool rconsSygus = true );
+  //reconstruct to syntax
+  Node reconstructToSyntax( Node s, TypeNode stn, int& reconstructed,
+                            bool rconsSygus = true );
+  // has ites
+  bool hasITEs() { return d_has_ites; }
+  // is single invocation
+  bool isSingleInvocation() const { return !d_single_inv.isNull(); }
+  // is single invocation
+  bool isFullySingleInvocation() const {
+    return !d_single_inv.isNull() && d_nsingle_inv.isNull();
+  }
+  //needs check
+  bool needsCheck();
+  /** preregister conjecture */
+  void preregisterConjecture( Node q );
+  //initialize next candidate si conjecture (if not fully single invocation)
+  void initializeNextSiConjecture();
+
+  Node getTransPre(Node prog) const {
+    std::map<Node, Node>::const_iterator location = d_trans_pre.find(prog);
+    return location->second;
+  }
+
+  Node getTransPost(Node prog) const {
+    std::map<Node, Node>::const_iterator location = d_trans_post.find(prog);
+    return location->second;
+  }
+
+};
+
+// partitions any formulas given to it into single invocation/non-single
+// invocation only processes functions having argument types exactly matching
+// "d_arg_types",  and all invocations are in the same order across all
+// functions
+class SingleInvocationPartition {
+ private:
+  //options
+  Kind d_checkKind;
+  bool inferArgTypes( Node n, std::vector< TypeNode >& typs, std::map< Node, bool >& visited );
+  void process( Node n );
+  bool collectConjuncts( Node n, bool pol, std::vector< Node >& conj );
+  bool processConjunct( Node n, std::map< Node, bool >& visited, std::vector< Node >& args,
+                        std::vector< Node >& terms, std::vector< Node >& subs );
+  Node getSpecificationInst( Node n, std::map< Node, Node >& lam, std::map< Node, Node >& visited );
+  void extractInvariant2( Node n, Node& func, int& pol, std::vector< Node >& disjuncts, bool hasPol, std::map< Node, bool >& visited );
+public:
+  SingleInvocationPartition( Kind checkKind = kind::APPLY_UF ) : d_checkKind( checkKind ){}
+  ~SingleInvocationPartition(){}
+  bool init( Node n );
+  bool init( std::vector< TypeNode >& typs, Node n );
+
+  //outputs (everything is with bound var)
+  std::vector< TypeNode > d_arg_types;
+  std::map< Node, bool > d_funcs;
+  std::map< Node, Node > d_func_inv;
+  std::map< Node, Node > d_inv_to_func;
+  std::map< Node, Node > d_func_fo_var;
+  std::map< Node, Node > d_fo_var_to_func;
+  std::vector< Node > d_func_vars; //the first-order variables corresponding to all functions
+  std::vector< Node > d_si_vars;   //the arguments that we based the anti-skolemization on
+  std::vector< Node > d_all_vars;  //every free variable of conjuncts[2]
+  // si, nsi, all, non-ground si
+  std::vector< Node > d_conjuncts[4];
+
+  bool isAntiSkolemizableType( Node f );
+
+  Node getConjunct( int index );
+  Node getSingleInvocation() { return getConjunct( 0 ); }
+  Node getNonSingleInvocation() { return getConjunct( 1 ); }
+  Node getFullSpecification() { return getConjunct( 2 ); }
+
+  Node getSpecificationInst( int index, std::map< Node, Node >& lam );
+
+  void extractInvariant( Node n, Node& func, int& pol, std::vector< Node >& disjuncts );
+
+  bool isPurelySingleInvocation() { return d_conjuncts[1].empty(); }
+  bool isNonGroundSingleInvocation() { return d_conjuncts[3].size()==d_conjuncts[1].size(); }
+
+  void debugPrint( const char * c );
+};
+
+}/* namespace CVC4::theory::quantifiers */
+}/* namespace CVC4::theory */
+}/* namespace CVC4 */
+
+#endif
diff --git a/src/theory/quantifiers/ce_guided_single_inv_ei.cpp b/src/theory/quantifiers/ce_guided_single_inv_ei.cpp
new file mode 100644
index 0000000..6394fca
--- /dev/null
+++ b/src/theory/quantifiers/ce_guided_single_inv_ei.cpp
@@ -0,0 +1,47 @@
+/*********************                                                        */
+/*! \file ce_guided_single_inv_ei.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief utility for inferring entailments for cegqi
+ **
+ **/
+
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/ce_guided_instantiation.h"
+#include "theory/quantifiers/ce_guided_single_inv_ei.h"
+#include "theory/quantifiers/quant_util.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/theory_engine.h"
+
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+using namespace std;
+
+namespace CVC4 {
+
+CegEntailmentInfer::CegEntailmentInfer( QuantifiersEngine * qe, SingleInvocationPartition * sip ) : d_qe( qe ), d_sip( sip ) {
+
+}
+
+bool CegEntailmentInfer::getEntailedConjecture( Node& conj, Node& exp ) {
+  if( Trace.isOn("cegqi-ei") ){
+    Trace("cegqi-ei") << "Infer new conjecture from : " << std::endl;
+    d_sip->debugPrint( "cegqi-ei" );
+    Trace("cegqi-ei") << "Current assertions : " << std::endl;
+    d_qe->getTheoryEngine()->printAssertions("cegqi-ei");
+  }
+  
+  
+  return false;
+}
+
+}
diff --git a/src/theory/quantifiers/ce_guided_single_inv_ei.h b/src/theory/quantifiers/ce_guided_single_inv_ei.h
new file mode 100644
index 0000000..42e0b08
--- /dev/null
+++ b/src/theory/quantifiers/ce_guided_single_inv_ei.h
@@ -0,0 +1,43 @@
+/*********************                                                        */
+/*! \file ce_guided_single_inv_ei.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief utility for inferring entailments for cegqi
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANTIFIERS__CE_GUIDED_ENTAILMENT_INFERENCE_H
+#define __CVC4__THEORY__QUANTIFIERS__CE_GUIDED_ENTAILMENT_INFERENCE_H
+
+
+#include "theory/quantifiers/ce_guided_single_inv.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+  
+class CegEntailmentInfer {
+private:
+  QuantifiersEngine * d_qe;
+  SingleInvocationPartition * d_sip;
+public:
+  CegEntailmentInfer( QuantifiersEngine * qe, SingleInvocationPartition * sip );
+  virtual ~CegEntailmentInfer(){}
+  
+  bool getEntailedConjecture( Node& conj, Node& exp );
+};
+
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/ce_guided_single_inv_sol.cpp b/src/theory/quantifiers/ce_guided_single_inv_sol.cpp
new file mode 100644
index 0000000..d93898a
--- /dev/null
+++ b/src/theory/quantifiers/ce_guided_single_inv_sol.cpp
@@ -0,0 +1,1197 @@
+/*********************                                                        */
+/*! \file ce_guided_single_inv_sol.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief utility for processing single invocation synthesis conjectures
+ **
+ **/
+#include "theory/quantifiers/ce_guided_single_inv_sol.h"
+
+#include "expr/datatype.h"
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/ce_guided_instantiation.h"
+#include "theory/quantifiers/ce_guided_single_inv.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/quant_util.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/trigger.h"
+#include "theory/theory_engine.h"
+
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+using namespace std;
+
+namespace CVC4 {
+
+CegConjectureSingleInvSol::CegConjectureSingleInvSol( QuantifiersEngine * qe ) : d_qe( qe ){
+  d_id_count = 0;
+}
+
+bool CegConjectureSingleInvSol::debugSolution( Node sol ) {
+  if( sol.getKind()==SKOLEM ){
+    return false;
+  }else{
+    for( unsigned i=0; i<sol.getNumChildren(); i++ ){
+      if( !debugSolution( sol[i] ) ){
+        return false;
+      }
+    }
+    return true;
+  }
+
+}
+
+void CegConjectureSingleInvSol::debugTermSize( Node sol, int& t_size, int& num_ite ) {
+  std::map< Node, int >::iterator it = d_dterm_size.find( sol );
+  if( it==d_dterm_size.end() ){
+    int prev = t_size;
+    int prev_ite = num_ite;
+    t_size++;
+    if( sol.getKind()==ITE ){
+      num_ite++;
+    }
+    for( unsigned i=0; i<sol.getNumChildren(); i++ ){
+      debugTermSize( sol[i], t_size, num_ite );
+    }
+    d_dterm_size[sol] = t_size-prev;
+    d_dterm_ite_size[sol] = num_ite-prev_ite;
+  }else{
+    t_size += it->second;
+    num_ite += d_dterm_ite_size[sol];
+  }
+}
+
+
+Node CegConjectureSingleInvSol::pullITEs( Node s ) {
+  if( s.getKind()==ITE ){
+    bool success;
+    do {
+      success = false;
+      std::vector< Node > conj;
+      Node t;
+      Node rem;
+      if( pullITECondition( s, s, conj, t, rem, 0 ) ){
+        Assert( !conj.empty() );
+        Node cond = conj.size()==1 ? conj[0] : NodeManager::currentNM()->mkNode( AND, conj );
+        Trace("csi-sol-debug") << "For " << s << ", can pull " << cond << " -> " << t << " with remainder " << rem << std::endl;
+        t = pullITEs( t );
+        rem = pullITEs( rem );
+        Trace("csi-pull-ite") << "PI: Rewrite : " << s << std::endl;
+        Node prev = s;
+        s = NodeManager::currentNM()->mkNode( ITE, TermDb::simpleNegate( cond ), t, rem );
+        Trace("csi-pull-ite") << "PI: Rewrite Now : " << s << std::endl;
+        Trace("csi-pull-ite") << "(= " << prev << " " << s << ")" << std::endl;
+        success = true;
+      }
+    }while( success );
+  }
+  return s;
+}
+
+// pull condition common to all ITE conditions in path of size > 1
+bool CegConjectureSingleInvSol::pullITECondition( Node root, Node n_ite, std::vector< Node >& conj, Node& t, Node& rem, int depth ) {
+  Assert( n_ite.getKind()==ITE );
+  std::vector< Node > curr_conj;
+  std::vector< Node > orig_conj;
+  bool isAnd;
+  if( n_ite[0].getKind()==AND || n_ite[0].getKind()==OR ){
+    isAnd = n_ite[0].getKind()==AND;
+    for( unsigned i=0; i<n_ite[0].getNumChildren(); i++ ){
+      Node cond = n_ite[0][i];
+      orig_conj.push_back( cond );
+      if( n_ite[0].getKind()==OR ){
+        cond = TermDb::simpleNegate( cond );
+      }
+      curr_conj.push_back( cond );
+    }
+  }else{
+    Node neg = n_ite[0].negate();
+    if( std::find( conj.begin(), conj.end(), neg )!=conj.end() ){
+      //if negation of condition exists, use it
+      isAnd = false;
+      curr_conj.push_back( neg );
+    }else{
+      //otherwise, use condition
+      isAnd = true;
+      curr_conj.push_back( n_ite[0] );
+    }
+    orig_conj.push_back( n_ite[0] );
+  }
+  // take intersection with current conditions
+  std::vector< Node > new_conj;
+  std::vector< Node > prev_conj;
+  if( n_ite==root ){
+    new_conj.insert( new_conj.end(), curr_conj.begin(), curr_conj.end() );
+    Trace("csi-sol-debug") << "Pull ITE root " << n_ite << ", #conj = " << new_conj.size() << std::endl;
+  }else{
+    for( unsigned i=0; i<curr_conj.size(); i++ ){
+      if( std::find( conj.begin(), conj.end(), curr_conj[i] )!=conj.end() ){
+        new_conj.push_back( curr_conj[i] );
+      }
+    }
+    Trace("csi-sol-debug") << "Pull ITE " << n_ite << ", #conj = " << conj.size() << " intersect " << curr_conj.size() << " = " << new_conj.size() << std::endl;
+  }
+  //cannot go further
+  if( new_conj.empty() ){
+    return false;
+  }
+  //it is an intersection with current
+  conj.clear();
+  conj.insert( conj.end(), new_conj.begin(), new_conj.end() );
+  //recurse if possible
+  Node trec = n_ite[ isAnd ? 2 : 1 ];
+  Node tval = n_ite[ isAnd ? 1 : 2 ];
+  bool success = false;
+  if( trec.getKind()==ITE ){
+    prev_conj.insert( prev_conj.end(), conj.begin(), conj.end() );
+    success = pullITECondition( root, trec, conj, t, rem, depth+1 );
+  }
+  if( !success && depth>0 ){
+    t = trec;
+    rem = trec;
+    success = true;
+    if( trec.getKind()==ITE ){
+      //restore previous state
+      conj.clear();
+      conj.insert( conj.end(), prev_conj.begin(), prev_conj.end() );
+    }
+  }
+  if( success ){
+    //make remainder : strip out conditions in conj
+    Assert( !conj.empty() );
+    std::vector< Node > cond_c;
+    Assert( orig_conj.size()==curr_conj.size() );
+    for( unsigned i=0; i<curr_conj.size(); i++ ){
+      if( std::find( conj.begin(), conj.end(), curr_conj[i] )==conj.end() ){
+        cond_c.push_back( orig_conj[i] );
+      }
+    }
+    if( cond_c.empty() ){
+      rem = tval;
+    }else{
+      Node new_cond = cond_c.size()==1 ? cond_c[0] : NodeManager::currentNM()->mkNode( n_ite[0].getKind(), cond_c );
+      rem = NodeManager::currentNM()->mkNode( ITE, new_cond, isAnd ? tval : rem, isAnd ? rem : tval );
+    }
+    return true;
+  }else{
+    return false;
+  }
+}
+
+Node CegConjectureSingleInvSol::flattenITEs( Node n, bool rec ) {
+  Assert( !n.isNull() );
+  if( n.getKind()==ITE ){
+    Trace("csi-sol-debug") << "Flatten ITE." << std::endl;
+    Node ret;
+    Node n0 = rec ? flattenITEs( n[0] ) : n[0];
+    Node n1 = rec ? flattenITEs( n[1] ) : n[1];
+    Node n2 = rec ? flattenITEs( n[2] ) : n[2];
+    Assert( !n0.isNull() );
+    Assert( !n1.isNull() );
+    Assert( !n2.isNull() );
+    if( n0.getKind()==NOT ){
+      ret = NodeManager::currentNM()->mkNode( ITE, n0[0], n2, n1 );
+    }else if( n0.getKind()==AND || n0.getKind()==OR ){
+      std::vector< Node > children;
+      for( unsigned i=1; i<n0.getNumChildren(); i++ ){
+        children.push_back( n0[i] );
+      }
+      Node rem = children.size()==1 ? children[0] : NodeManager::currentNM()->mkNode( n0.getKind(), children );
+      if( n0.getKind()==AND ){
+        ret = NodeManager::currentNM()->mkNode( ITE, rem, NodeManager::currentNM()->mkNode( ITE, n0[0], n1, n2 ), n2 );
+      }else{
+        ret = NodeManager::currentNM()->mkNode( ITE, rem, n1, NodeManager::currentNM()->mkNode( ITE, n0[0], n1, n2 ) );
+      }
+    }else{
+      if( n0.getKind()==ITE ){
+        n0 = NodeManager::currentNM()->mkNode( OR, NodeManager::currentNM()->mkNode( AND, n0, n1 ),
+                                                   NodeManager::currentNM()->mkNode( AND, n0.negate(), n2 ) );
+      }else if( n0.getKind()==EQUAL ){
+        n0 = NodeManager::currentNM()->mkNode( OR, NodeManager::currentNM()->mkNode( AND, n0, n1 ),
+                                                   NodeManager::currentNM()->mkNode( AND, n0.negate(), n1.negate() ) );
+      }else{
+        return NodeManager::currentNM()->mkNode( ITE, n0, n1, n2 );
+      }
+      ret = NodeManager::currentNM()->mkNode( ITE, n0, n1, n2 );
+    }
+    Assert( !ret.isNull() );
+    return flattenITEs( ret, false );
+  }else{
+    if( n.getNumChildren()>0 ){
+      std::vector< Node > children;
+      if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+        children.push_back( n.getOperator() );
+      }
+      bool childChanged = false;
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        Node nc = flattenITEs( n[i] );
+        children.push_back( nc );
+        childChanged = childChanged || nc!=n[i];
+      }
+      if( !childChanged ){
+        return n;
+      }else{
+        return NodeManager::currentNM()->mkNode( n.getKind(), children );
+      }
+    }else{
+      return n;
+    }
+  }
+}
+
+// assign is from literals to booleans
+// union_find is from args to values
+
+bool CegConjectureSingleInvSol::getAssign( bool pol, Node n, std::map< Node, bool >& assign, std::vector< Node >& new_assign, std::vector< Node >& vars,
+                                        std::vector< Node >& new_vars, std::vector< Node >& new_subs ) {
+  std::map< Node, bool >::iterator ita = assign.find( n );
+  if( ita!=assign.end() ){
+    Trace("csi-simp-debug") << "---already assigned, lookup " << pol << " " << ita->second << std::endl;
+    return pol==ita->second;
+  }else if( n.isConst() ){
+    return pol==(n==d_qe->getTermDatabase()->d_true);
+  }else{
+    Trace("csi-simp-debug") << "---assign " << n << " " << pol << std::endl;
+    assign[n] = pol;
+    new_assign.push_back( n );
+    if( ( pol && n.getKind()==AND ) || ( !pol && n.getKind()==OR ) ){
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        if( !getAssign( pol, n[i], assign, new_assign, vars, new_vars, new_subs ) ){
+          return false;
+        }
+      }
+    }else if( n.getKind()==NOT ){
+      return getAssign( !pol, n[0], assign, new_assign, vars, new_vars, new_subs );
+    }else if( pol && n.getKind()==EQUAL ){
+      getAssignEquality( n, vars, new_vars, new_subs );
+    }
+  }
+  return true;
+}
+
+bool CegConjectureSingleInvSol::getAssignEquality( Node eq, std::vector< Node >& vars, std::vector< Node >& new_vars, std::vector< Node >& new_subs ) {
+  Assert( eq.getKind()==EQUAL );
+  //try to find valid argument
+  for( unsigned r=0; r<2; r++ ){
+    if( std::find( d_varList.begin(), d_varList.end(), eq[r] )!=d_varList.end() ){
+      Assert( std::find( vars.begin(), vars.end(), eq[r] )==vars.end() );
+      if( std::find( new_vars.begin(), new_vars.end(), eq[r] )==new_vars.end() ){
+        Node eqro = eq[r==0 ? 1 : 0 ];
+        if( !d_qe->getTermDatabase()->containsTerm( eqro, eq[r] ) ){
+          Trace("csi-simp-debug") << "---equality " << eq[r] << " = " << eqro << std::endl;
+          new_vars.push_back( eq[r] );
+          new_subs.push_back( eqro );
+          return true;
+        }
+      }
+    }
+  }
+  /*
+  TypeNode tn = eq[0].getType();
+  if( tn.isInteger() || tn.isReal() ){
+    std::map< Node, Node > msum;
+    if( QuantArith::getMonomialSumLit( eq, msum ) ){
+
+    }
+  }
+  */
+  return false;
+}
+
+Node CegConjectureSingleInvSol::simplifySolution( Node sol, TypeNode stn ){
+  int tsize, itesize;
+  if( Trace.isOn("csi-sol") ){
+    tsize = 0;itesize = 0;
+    debugTermSize( sol, tsize, itesize );
+    Trace("csi-sol") << tsize << " " << itesize << " rewrite..." << std::endl;
+    Trace("csi-sol-debug") << "sol : " << sol << "..." << std::endl;
+  }
+  Node sol0 = Rewriter::rewrite( sol );
+  Trace("csi-sol") << "now : " << sol0 << std::endl;
+
+  Node curr_sol = sol0;
+  Node prev_sol;
+  do{
+    prev_sol = curr_sol;
+    //first, pull ITE conditions
+    if( Trace.isOn("csi-sol") ){
+      tsize = 0;itesize = 0;
+      debugTermSize( curr_sol, tsize, itesize );
+      Trace("csi-sol") << tsize << " " << itesize << " pull ITE..." << std::endl;
+      Trace("csi-sol-debug") << "sol : " << curr_sol << "..." << std::endl;
+    }
+    Node sol1 = pullITEs( curr_sol );
+    Trace("csi-sol") << "now : " << sol1 << std::endl;
+    //do standard rewriting
+    if( sol1!=curr_sol ){
+      if( Trace.isOn("csi-sol") ){
+        tsize = 0;itesize = 0;
+        debugTermSize( sol1, tsize, itesize );
+        Trace("csi-sol") << tsize << " " << itesize << " rewrite..." << std::endl;
+        Trace("csi-sol-debug") << "sol : " << sol1 << "..." << std::endl;
+      }
+      Node sol2 = Rewriter::rewrite( sol1 );
+      Trace("csi-sol") << "now : " << sol2 << std::endl;
+      curr_sol = sol2;
+    }
+    //now do branch analysis
+    if( Trace.isOn("csi-sol") ){
+      tsize = 0;itesize = 0;
+      debugTermSize( curr_sol, tsize, itesize );
+      Trace("csi-sol") << tsize << " " << itesize << " simplify solution..." << std::endl;
+      Trace("csi-sol-debug") << "sol : " << curr_sol << "..." << std::endl;
+    }
+    std::map< Node, bool > sassign;
+    std::vector< Node > svars;
+    std::vector< Node > ssubs;
+    Node sol3 = simplifySolutionNode( curr_sol, stn, sassign, svars, ssubs, 0 );
+    Trace("csi-sol") << "now : " << sol3 << std::endl;
+    if( sol3!=curr_sol ){
+      //do standard rewriting again
+      if( Trace.isOn("csi-sol" ) ){
+        tsize = 0;itesize = 0;
+        debugTermSize( sol3, tsize, itesize );
+        Trace("csi-sol") << tsize << " " << itesize << " rewrite..." << std::endl;
+      }
+      Node sol4 = Rewriter::rewrite( sol3 );
+      Trace("csi-sol") << "now : " << sol4 << std::endl;
+      curr_sol = sol4;
+    }
+  }while( curr_sol!=prev_sol );
+
+  return curr_sol;
+}
+
+Node CegConjectureSingleInvSol::simplifySolutionNode( Node sol, TypeNode stn, std::map< Node, bool >& assign,
+                                                      std::vector< Node >& vars, std::vector< Node >& subs, int status ) {
+
+  Assert( vars.size()==subs.size() );
+  std::map< Node, bool >::iterator ita = assign.find( sol );
+  if( ita!=assign.end() ){
+    //it is currently assigned a boolean value
+    return NodeManager::currentNM()->mkConst( ita->second );
+  }else{
+    d_qe->getTermDatabaseSygus()->registerSygusType( stn );
+    std::map< int, TypeNode > stnc;
+    if( !stn.isNull() ){
+      int karg = d_qe->getTermDatabaseSygus()->getKindArg( stn, sol.getKind() );
+      if( karg!=-1 ){
+        const Datatype& dt = ((DatatypeType)(stn).toType()).getDatatype();
+        if( dt[karg].getNumArgs()==sol.getNumChildren() ){
+          for( unsigned i=0; i<dt[karg].getNumArgs(); i++ ){
+            stnc[i] = d_qe->getTermDatabaseSygus()->getArgType( dt[karg], i );
+          }
+        }
+      }
+    }
+
+    if( sol.getKind()==ITE ){
+      Trace("csi-simp") << "Simplify ITE " << std::endl;
+      std::vector< Node > children;
+      for( unsigned r=1; r<=2; r++ ){
+        std::vector< Node > new_assign;
+        std::vector< Node > new_vars;
+        std::vector< Node > new_subs;
+        if( getAssign( r==1, sol[0], assign, new_assign, vars, new_vars, new_subs ) ){
+          Trace("csi-simp") << "- branch " << r << " led to " << new_assign.size() << " assignments, " << new_vars.size() << " equalities." << std::endl;
+          unsigned prev_size = vars.size();
+          Node nc = sol[r];
+          if( !new_vars.empty() ){
+            nc = nc.substitute( new_vars.begin(), new_vars.end(), new_subs.begin(), new_subs.end() );
+            vars.insert( vars.end(), new_vars.begin(), new_vars.end() );
+            subs.insert( subs.end(), new_subs.begin(), new_subs.end() );
+          }
+          nc = simplifySolutionNode( nc, stnc[r], assign, vars, subs, 0 );
+          children.push_back( nc );
+          //clean up substitution
+          if( !new_vars.empty() ){
+            vars.resize( prev_size );
+            subs.resize( prev_size );
+          }
+        }else{
+          Trace("csi-simp") << "- branch " << r << " of " << sol[0] << " is infeasible." << std::endl;
+        }
+        //clean up assignment
+        for( unsigned i=0; i<new_assign.size(); i++ ){
+          assign.erase( new_assign[i] );
+        }
+      }
+      if( children.size()==1 || ( children.size()==2 && children[0]==children[1] ) ){
+        return children[0];
+      }else{
+        Assert( children.size()==2 );
+        Node ncond = simplifySolutionNode( sol[0], stnc[0], assign, vars, subs, 0 );
+        Node ret = NodeManager::currentNM()->mkNode( ITE, ncond, children[0], children[1] );
+
+        //expand/flatten if necessary
+        Node orig_ret = ret;
+        if( !stnc[0].isNull() ){
+          d_qe->getTermDatabaseSygus()->registerSygusType( stnc[0] );
+          Node prev_ret;
+          while( !d_qe->getTermDatabaseSygus()->hasKind( stnc[0], ret[0].getKind() ) && ret!=prev_ret ){
+            prev_ret = ret;
+            Node exp_c = d_qe->getTermDatabaseSygus()->expandBuiltinTerm( ret[0] );
+            if( !exp_c.isNull() ){
+              Trace("csi-simp-debug") << "Pre expand to " << ret[0] << " to " << exp_c << std::endl;
+              ret = NodeManager::currentNM()->mkNode( ITE, exp_c, ret[1], ret[2] );
+            }
+            if( !d_qe->getTermDatabaseSygus()->hasKind( stnc[0], ret[0].getKind() ) ){
+              Trace("csi-simp-debug") << "Flatten based on " << ret[0] << "." << std::endl;
+              ret = flattenITEs( ret, false );
+            }
+          }
+        }
+        return ret;
+        /*
+        if( orig_ret!=ret ){
+          Trace("csi-simp") << "Try expanded ITE" << std::endl;
+          return ret;//simplifySolutionNode( ret, stn, assign, vars, subs, status );
+        }else{
+          return ret;
+        }
+        */
+      }
+    }else if( sol.getKind()==OR || sol.getKind()==AND ){
+      Trace("csi-simp") << "Simplify " << sol.getKind() << std::endl;
+      //collect new equalities
+      std::map< Node, bool > atoms;
+      std::vector< Node > inc;
+      std::vector< Node > children;
+      std::vector< Node > new_vars;
+      std::vector< Node > new_subs;
+      Node bc = sol.getKind()==OR ? d_qe->getTermDatabase()->d_true : d_qe->getTermDatabase()->d_false;
+      for( unsigned i=0; i<sol.getNumChildren(); i++ ){
+        bool do_exc = false;
+        Node c;
+        std::map< Node, bool >::iterator ita = assign.find( sol[i] );
+        if( ita==assign.end() ){
+          c = sol[i];
+        }else{
+          c = NodeManager::currentNM()->mkConst( ita->second );
+        }
+        Trace("csi-simp") << "  - child " << i << " : " << c << std::endl;
+        if( c.isConst() ){
+          if( c==bc ){
+            Trace("csi-simp") << "  ...singularity." << std::endl;
+            return bc;
+          }else{
+            do_exc = true;
+          }
+        }else{
+          Node atom = c.getKind()==NOT ? c[0] : c;
+          bool pol = c.getKind()!=NOT;
+          std::map< Node, bool >::iterator it = atoms.find( atom );
+          if( it==atoms.end() ){
+            atoms[atom] = pol;
+            if( status==0 && atom.getKind()==EQUAL ){
+              if( pol==( sol.getKind()==AND ) ){
+                Trace("csi-simp") << "  ...equality." << std::endl;
+                if( getAssignEquality( atom, vars, new_vars, new_subs ) ){
+                  children.push_back( sol[i] );
+                  do_exc = true;
+                }
+              }
+            }
+          }else{
+            //repeated atom
+            if( it->second!=pol ){
+              return NodeManager::currentNM()->mkConst( sol.getKind()==OR );
+            }else{
+              do_exc = true;
+            }
+          }
+        }
+        if( !do_exc ){
+          inc.push_back( sol[i] );
+        }else{
+          Trace("csi-simp") << "  ...exclude." << std::endl;
+        }
+      }
+      if( !new_vars.empty() ){
+        if( !inc.empty() ){
+          Node ret = inc.size()==1 ? inc[0] : NodeManager::currentNM()->mkNode( sol.getKind(), inc );
+          Trace("csi-simp") << "Base return is : " << ret << std::endl;
+          // apply substitution
+          ret = ret.substitute( new_vars.begin(), new_vars.end(), new_subs.begin(), new_subs.end() );
+          ret = Rewriter::rewrite( ret );
+          Trace("csi-simp") << "After substitution : " << ret << std::endl;
+          unsigned prev_size = vars.size();
+          vars.insert( vars.end(), new_vars.begin(), new_vars.end() );
+          subs.insert( subs.end(), new_subs.begin(), new_subs.end() );
+          ret = simplifySolutionNode( ret, TypeNode::null(), assign, vars, subs, 1 );
+          //clean up substitution
+          if( !vars.empty() ){
+            vars.resize( prev_size );
+            subs.resize( prev_size );
+          }
+          //Trace("csi-simp") << "After simplification : " << ret << std::endl;
+          if( ret.isConst() ){
+            if( ret==bc ){
+              return bc;
+            }
+          }else{
+            if( ret.getKind()==sol.getKind() ){
+              for( unsigned i=0; i<ret.getNumChildren(); i++ ){
+                children.push_back( ret[i] );
+              }
+            }else{
+              children.push_back( ret );
+            }
+          }
+        }
+      }else{
+        //recurse on children
+        for( unsigned i=0; i<inc.size(); i++ ){
+          Node retc = simplifySolutionNode( inc[i], TypeNode::null(), assign, vars, subs, 0 );
+          if( retc.isConst() ){
+            if( retc==bc ){
+              return bc;
+            }
+          }else{
+            children.push_back( retc );
+          }
+        }
+      }
+      // now, remove all equalities that are implied
+      std::vector< Node > final_children;
+      for( unsigned i=0; i<children.size(); i++ ){
+        bool red = false;
+        Node atom = children[i].getKind()==NOT ? children[i][0] : children[i];
+        bool pol = children[i].getKind()!=NOT;
+        if( status==0 && atom.getKind()==EQUAL ){
+          if( pol!=( sol.getKind()==AND ) ){
+            std::vector< Node > tmp_vars;
+            std::vector< Node > tmp_subs;
+            if( getAssignEquality( atom, vars, tmp_vars, tmp_subs ) ){
+              Trace("csi-simp-debug") << "Check if " << children[i] << " is redundant in " << sol << std::endl;
+              for( unsigned j=0; j<children.size(); j++ ){
+                if( j!=i && ( j>i || std::find( final_children.begin(), final_children.end(), children[j] )!=final_children.end() ) ){
+                  Node sj = children[j].substitute( tmp_vars.begin(), tmp_vars.end(), tmp_subs.begin(), tmp_subs.end() );
+                  sj = Rewriter::rewrite( sj );
+                  if( sj==( sol.getKind()==AND ? d_qe->getTermDatabase()->d_false : d_qe->getTermDatabase()->d_true ) ){
+                    Trace("csi-simp") << "--- " << children[i].negate() << " is implied by " << children[j].negate() << std::endl;
+                    red = true;
+                    break;
+                  }
+                }
+              }
+              if( !red ){
+                Trace("csi-simp-debug") << "...is not." << std::endl;
+              }
+            }
+          }
+        }
+        if( !red ){
+          final_children.push_back( children[i] );
+        }
+      }
+      return final_children.size()==0 ? NodeManager::currentNM()->mkConst( sol.getKind()==AND ) :
+             ( final_children.size()==1 ? final_children[0] : NodeManager::currentNM()->mkNode( sol.getKind(), final_children ) );
+    }else{
+      //generic simplification
+      std::vector< Node > children;
+      if( sol.getMetaKind() == kind::metakind::PARAMETERIZED ){
+        children.push_back( sol.getOperator() );
+      }
+      bool childChanged = false;
+      for( unsigned i=0; i<sol.getNumChildren(); i++ ){
+        Node nc = simplifySolutionNode( sol[i], stnc[i], assign, vars, subs, 0 );
+        childChanged = childChanged || nc!=sol[i];
+        children.push_back( nc );
+      }
+      if( childChanged ){
+        return NodeManager::currentNM()->mkNode( sol.getKind(), children );
+      }
+    }
+    return sol;
+  }
+}
+
+
+void CegConjectureSingleInvSol::preregisterConjecture( Node q ) {
+  Trace("csi-sol") << "Preregister conjecture : " << q << std::endl;
+  Node n = q;
+  if( n.getKind()==FORALL ){
+    n = n[1];
+  }
+  if( n.getKind()==EXISTS ){
+    if( n[0].getNumChildren()==d_varList.size() ){
+      std::vector< Node > evars;
+      for( unsigned i=0; i<n[0].getNumChildren(); i++ ){
+        evars.push_back( n[0][i] );
+      }
+      n = n[1].substitute( evars.begin(), evars.end(), d_varList.begin(), d_varList.end() );
+    }else{
+      Trace("csi-sol") << "Not the same number of variables, return." << std::endl;
+      return;
+    }
+  }
+  Trace("csi-sol") << "Preregister node for solution reconstruction : " << n << std::endl;
+  registerEquivalentTerms( n );
+}
+
+Node CegConjectureSingleInvSol::reconstructSolution( Node sol, TypeNode stn, int& reconstructed ) {
+  Trace("csi-rcons") << "Solution (pre-reconstruction) is : " << sol << std::endl;
+  int status;
+  d_root_id = collectReconstructNodes( sol, stn, status );
+  if( status==0 ){
+    Node ret = getReconstructedSolution( d_root_id );
+    Trace("csi-rcons") << "Sygus solution is : " << ret << std::endl;
+    Assert( !ret.isNull() );
+    reconstructed = 1;
+    return ret;
+  }else{
+    //Trace("csi-debug-sol") << "Induced solution template is : " << d_templ_solution << std::endl;
+    if( Trace.isOn("csi-rcons") ){
+      for( std::map< TypeNode, std::map< Node, int > >::iterator it = d_rcons_to_id.begin(); it != d_rcons_to_id.end(); ++it ){
+        TypeNode tn = it->first;
+        Assert( tn.isDatatype() );
+        const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+        Trace("csi-rcons") << "Terms to reconstruct of type " << dt.getName() << " : " << std::endl;
+        for( std::map< Node, int >::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2 ){
+          if( d_reconstruct.find( it2->second )==d_reconstruct.end() ){
+            Trace("csi-rcons") << "  " << it2->first << std::endl;
+          }
+        }
+        Assert( !it->second.empty() );
+      }
+    }
+    unsigned index = 0;
+    std::map< TypeNode, bool > active;
+    for( std::map< TypeNode, std::map< Node, int > >::iterator it = d_rcons_to_id.begin(); it != d_rcons_to_id.end(); ++it ){
+      active[it->first] = true;
+    }
+    //enumerate for all types
+    do {
+      std::vector< TypeNode > to_erase;
+      for( std::map< TypeNode, bool >::iterator it = active.begin(); it != active.end(); ++it ){
+        TypeNode stn = it->first;
+        Node ns = d_qe->getTermDatabase()->getEnumerateTerm( stn, index );
+        if( ns.isNull() ){
+          to_erase.push_back( stn );
+        }else{
+          Node nb = d_qe->getTermDatabaseSygus()->sygusToBuiltin( ns, stn );
+          Node nr = Rewriter::rewrite( nb );//d_qe->getTermDatabaseSygus()->getNormalized( stn, nb, false, false );
+          Trace("csi-rcons-debug2") << "  - try " << ns << " -> " << nr << " for " << stn << " " << nr.getKind() << std::endl;
+          std::map< Node, int >::iterator itt = d_rcons_to_id[stn].find( nr );
+          if( itt!= d_rcons_to_id[stn].end() ){
+            // if it is not already reconstructed
+            if( d_reconstruct.find( itt->second )==d_reconstruct.end() ){
+              Trace("csi-rcons") << "...reconstructed " << ns << " for term " << nr << std::endl;
+              bool do_check = true;//getPathToRoot( itt->second );
+              setReconstructed( itt->second, ns );
+              if( do_check ){
+                Trace("csi-rcons-debug") << "...path to root, try reconstruction." << std::endl;
+                d_tmp_fail.clear();
+                Node ret = getReconstructedSolution( d_root_id );
+                if( !ret.isNull() ){
+                  Trace("csi-rcons") << "Sygus solution (after enumeration) is : " << ret << std::endl;
+                  reconstructed = 1;
+                  return ret;
+                }
+              }else{
+                Trace("csi-rcons-debug") << "...no path to root." << std::endl;
+              }
+            }
+          }
+        }
+      }
+      for( unsigned i=0; i<to_erase.size(); i++ ){
+        active.erase( to_erase[i] );
+      }
+      index++;
+      if( index%100==0 ){
+        Trace("csi-rcons-stats") << "Tried " << index << " for each type."  << std::endl;
+      }
+    }while( !active.empty() );
+
+    //if solution is null, we ran out of elements, return the original solution
+    return sol;
+  }
+}
+
+int CegConjectureSingleInvSol::collectReconstructNodes( Node t, TypeNode stn, int& status ) {
+  std::map< Node, int >::iterator itri = d_rcons_to_status[stn].find( t );
+  if( itri!=d_rcons_to_status[stn].end() ){
+    status = itri->second;
+    //Trace("csi-rcons-debug") << "-> (cached) " << status << " for " << d_rcons_to_id[stn][t] << std::endl;
+    return d_rcons_to_id[stn][t];
+  }else{
+    status = 1;
+    d_qe->getTermDatabaseSygus()->registerSygusType( stn );
+    int id = allocate( t, stn );
+    d_rcons_to_status[stn][t] = -1;
+    TypeNode tn = t.getType();
+    Assert( stn.isDatatype() );
+    const Datatype& dt = ((DatatypeType)(stn).toType()).getDatatype();
+    Assert( dt.isSygus() );
+    Trace("csi-rcons-debug") << "Check reconstruct " << t << ", sygus type " << dt.getName() << ", kind " << t.getKind() << ", id : " << id << std::endl;
+    int carg = -1;
+    int karg = -1;
+    // first, do standard minimizations
+    Node min_t = d_qe->getTermDatabaseSygus()->minimizeBuiltinTerm( t );
+    Trace("csi-rcons-debug") << "Minimized term is : " << min_t << std::endl;
+    //check if op is in syntax sort
+    carg = d_qe->getTermDatabaseSygus()->getOpArg( stn, min_t );
+    if( carg!=-1 ){
+      Trace("csi-rcons-debug") << "  Type has operator." << std::endl;
+      d_reconstruct[id] = NodeManager::currentNM()->mkNode( APPLY_CONSTRUCTOR, Node::fromExpr( dt[carg].getConstructor() ) );
+      status = 0;
+    }else{
+      //check if kind is in syntax sort
+      karg = d_qe->getTermDatabaseSygus()->getKindArg( stn, min_t.getKind() );
+      if( karg!=-1 ){
+        //collect the children of min_t
+        std::vector< Node > tchildren;
+        if( min_t.getNumChildren()>dt[karg].getNumArgs() && quantifiers::TermDb::isAssoc( min_t.getKind() ) && dt[karg].getNumArgs()==2 ){
+          tchildren.push_back( min_t[0] );
+          std::vector< Node > rem_children;
+          for( unsigned i=1; i<min_t.getNumChildren(); i++ ){
+            rem_children.push_back( min_t[i] );
+          }
+          Node t2 = NodeManager::currentNM()->mkNode( min_t.getKind(), rem_children );
+          tchildren.push_back( t2 );
+          Trace("csi-rcons-debug") << "...split n-ary to binary " << min_t[0] << " " << t2 << "." << std::endl;
+        }else{
+          for( unsigned i=0; i<min_t.getNumChildren(); i++ ){
+            tchildren.push_back( min_t[i] );
+          }
+        }
+        //recurse on the children
+        if( tchildren.size()==dt[karg].getNumArgs() ){
+          Trace("csi-rcons-debug") << "Type for " << id << " has kind " << min_t.getKind() << ", recurse." << std::endl;
+          status = 0;
+          Node cons = Node::fromExpr( dt[karg].getConstructor() );
+          if( !collectReconstructNodes( id, tchildren, dt[karg], d_reconstruct_op[id][cons], status ) ){
+            Trace("csi-rcons-debug") << "...failure for " << id << " " << dt[karg].getName() << std::endl;
+            d_reconstruct_op[id].erase( cons );
+            status = 1;
+          }
+        }else{
+          Trace("csi-rcons-debug") << "Type for " << id << " has kind " << min_t.getKind() << ", but argument # mismatch." << std::endl;
+        }
+      }
+      if( status!=0 ){
+        //try constant reconstruction
+        if( min_t.isConst() ){
+          Trace("csi-rcons-debug") << "...try constant reconstruction." << std::endl;
+          Node min_t_c = d_qe->getTermDatabaseSygus()->builtinToSygusConst( min_t, stn );
+          if( !min_t_c.isNull() ){
+            Trace("csi-rcons-debug") << "   constant reconstruction success for " << id << ", result = " << min_t_c << std::endl;
+            d_reconstruct[id] = min_t_c;
+            status = 0;
+          }
+        }
+        if( status!=0 ){
+          //try identity functions
+          for( unsigned i=0; i<d_qe->getTermDatabaseSygus()->getNumIdFuncs( stn ); i++ ){
+            unsigned ii = d_qe->getTermDatabaseSygus()->getIdFuncIndex( stn, i );
+            Assert( dt[ii].getNumArgs()==1 );
+            //try to directly reconstruct from single argument
+            std::vector< Node > tchildren;
+            tchildren.push_back( min_t );
+            TypeNode stnc = TypeNode::fromType( ((SelectorType)dt[ii][0].getType()).getRangeType() );
+            Trace("csi-rcons-debug") << "...try identity function " << dt[ii].getSygusOp() << ", child type is " << stnc << std::endl;
+            status = 0;
+            Node cons = Node::fromExpr( dt[ii].getConstructor() );
+            if( !collectReconstructNodes( id, tchildren, dt[ii], d_reconstruct_op[id][cons], status ) ){
+              d_reconstruct_op[id].erase( cons );
+              status = 1;
+            }else{
+              Trace("csi-rcons-debug") << "   identity function success for " << id << std::endl;
+              break;
+            }
+          }
+          if( status!=0 ){
+            //try other options, such as matching against other constructors
+            Trace("csi-rcons-debug") << "Try matching for " << id << "." << std::endl;
+            bool success;
+            int c_index = 0;
+            do{
+              success = false;
+              int index_found;
+              std::vector< Node > args;
+              if( d_qe->getTermDatabaseSygus()->getMatch( min_t, stn, index_found, args, karg, c_index ) ){
+                success = true;
+                status = 0;
+                Node cons = Node::fromExpr( dt[index_found].getConstructor() );
+                Trace("csi-rcons-debug") << "Try alternative for " << id << ", matching " << dt[index_found].getName() << " with children : " << std::endl;
+                for( unsigned i=0; i<args.size(); i++ ){
+                  Trace("csi-rcons-debug") << "  " << args[i] << std::endl;
+                }
+                if( !collectReconstructNodes( id, args, dt[index_found], d_reconstruct_op[id][cons], status ) ){
+                  d_reconstruct_op[id].erase( cons );
+                  status = 1;
+                }else{
+                  c_index = index_found+1;
+                }
+              }
+            }while( success && status!=0 );
+
+            if( status!=0 ){
+              // construct an equivalence class of terms that are equivalent to t
+              if( d_rep[id]==id ){
+                Trace("csi-rcons-debug") << "Try rewriting for " << id << "." << std::endl;
+                //get equivalence class of term
+                std::vector< Node > equiv;
+                if( tn.isBoolean() ){
+                  Node curr = min_t;
+                  Node new_t;
+                  do{
+                    new_t = Node::null();
+                    if( curr.getKind()==EQUAL ){
+                      if( curr[0].getType().isInteger() || curr[0].getType().isReal() ){
+                        new_t = NodeManager::currentNM()->mkNode( AND, NodeManager::currentNM()->mkNode( LEQ, curr[0], curr[1] ),
+                                                                      NodeManager::currentNM()->mkNode( LEQ, curr[1], curr[0] ) );
+                      }else if( curr[0].getType().isBoolean() ){
+                        new_t = NodeManager::currentNM()->mkNode( OR, NodeManager::currentNM()->mkNode( AND, curr[0], curr[1] ),
+                                                                      NodeManager::currentNM()->mkNode( AND, curr[0].negate(), curr[1].negate() ) );
+                      }else{
+                        new_t = NodeManager::currentNM()->mkNode( NOT, NodeManager::currentNM()->mkNode( NOT, curr ) );
+                      }
+                    }else if( curr.getKind()==ITE ){
+                      new_t = NodeManager::currentNM()->mkNode( OR, NodeManager::currentNM()->mkNode( AND, curr[0], curr[1] ),
+                                                                    NodeManager::currentNM()->mkNode( AND, curr[0].negate(), curr[2] ) );
+                    }else if( curr.getKind()==OR || curr.getKind()==AND ){
+                      new_t = TermDb::simpleNegate( curr ).negate();
+                    }else if( curr.getKind()==NOT ){
+                      new_t = TermDb::simpleNegate( curr[0] );
+                    }else{
+                      new_t = NodeManager::currentNM()->mkNode( NOT, NodeManager::currentNM()->mkNode( NOT, curr ) );
+                    }
+                    if( !new_t.isNull() ){
+                      if( new_t!=min_t && std::find( equiv.begin(), equiv.end(), new_t )==equiv.end() ){
+                        curr = new_t;
+                        equiv.push_back( new_t );
+                      }else{
+                        new_t = Node::null();
+                      }
+                    }
+                  }while( !new_t.isNull() );
+                }
+                //get decompositions
+                for( unsigned i=0; i<dt.getNumConstructors(); i++ ){
+                  Kind k = d_qe->getTermDatabaseSygus()->getArgKind( stn, i );
+                  getEquivalentTerms( k, min_t, equiv );
+                }
+                //assign ids to terms
+                Trace("csi-rcons-debug") << "Term " << id << " is equivalent to " << equiv.size() << " terms : " << std::endl;
+                std::vector< int > equiv_ids;
+                for( unsigned i=0; i<equiv.size(); i++ ){
+                  Trace("csi-rcons-debug") << "  " << equiv[i] << std::endl;
+                  if( d_rcons_to_id[stn].find( equiv[i] )==d_rcons_to_id[stn].end() ){
+                    int eq_id = allocate( equiv[i], stn );
+                    d_eqc.erase( eq_id );
+                    d_rep[eq_id] = id;
+                    d_eqc[id].push_back( eq_id );
+                    equiv_ids.push_back( eq_id );
+                  }else{
+                    equiv_ids.push_back( -1 );
+                  }
+                }
+                // now, try each of them
+                for( unsigned i=0; i<equiv.size(); i++ ){
+                  if( equiv_ids[i]!=-1 ){
+                    collectReconstructNodes( equiv[i], stn, status );
+                    //if one succeeds
+                    if( status==0 ){
+                      Node rsol = getReconstructedSolution( equiv_ids[i] );
+                      Assert( !rsol.isNull() );
+                      //set all members of the equivalence class that this is the reconstructed solution
+                      setReconstructed( id, rsol );
+                      break;
+                    }
+                  }
+                }
+              }else{
+                Trace("csi-rcons-debug") << "Do not try rewriting for " << id << ", rep = " << d_rep[id] << std::endl;
+              }
+            }
+          }
+        }
+      }
+    }
+    if( status!=0 ){
+      Trace("csi-rcons-debug") << "-> *** reconstruction required for id " << id << std::endl;
+    }else{
+      Trace("csi-rcons-debug") << "-> success for " << id << std::endl;
+    }
+    d_rcons_to_status[stn][t] = status;
+    return id;
+  }
+}
+
+bool CegConjectureSingleInvSol::collectReconstructNodes( int pid, std::vector< Node >& ts, const DatatypeConstructor& dtc, std::vector< int >& ids, int& status ) {
+  Assert( dtc.getNumArgs()==ts.size() );
+  for( unsigned i=0; i<ts.size(); i++ ){
+    TypeNode cstn = d_qe->getTermDatabaseSygus()->getArgType( dtc, i );
+    int cstatus;
+    int c_id = collectReconstructNodes( ts[i], cstn, cstatus );
+    if( cstatus==-1 ){
+      return false;
+    }else if( cstatus!=0 ){
+      status = 1;
+    }
+    ids.push_back( c_id );
+  }
+  for( unsigned i=0; i<ids.size(); i++ ){
+    d_parents[ids[i]].push_back( pid );
+  }
+  return true;
+}
+
+  /*
+  //flatten ITEs if necessary  TODO : carry assignment or move this elsewhere
+  if( t.getKind()==ITE ){
+    TypeNode cstn = tds->getArgType( dt[karg], 0 );
+    tds->registerSygusType( cstn );
+    Node prev_t;
+    while( !tds->hasKind( cstn, t[0].getKind() ) && t!=prev_t ){
+      prev_t = t;
+      Node exp_c = tds->expandBuiltinTerm( t[0] );
+      if( !exp_c.isNull() ){
+        t = NodeManager::currentNM()->mkNode( ITE, exp_c, t[1], t[2] );
+        Trace("csi-rcons-debug") << "Pre expand to " << t << std::endl;
+      }
+      t = flattenITEs( t, false );
+      if( t!=prev_t ){
+        Trace("csi-rcons-debug") << "Flatten ITE to " << t << std::endl;
+        std::map< Node, bool > sassign;
+        std::vector< Node > svars;
+        std::vector< Node > ssubs;
+        t = simplifySolutionNode( t, sassign, svars, ssubs, 0 );
+      }
+      Assert( t.getKind()==ITE );
+    }
+  }
+  */
+
+
+Node CegConjectureSingleInvSol::CegConjectureSingleInvSol::getReconstructedSolution( int id, bool mod_eq ) {
+  std::map< int, Node >::iterator it = d_reconstruct.find( id );
+  if( it!=d_reconstruct.end() ){
+    return it->second;
+  }else{
+    if( std::find( d_tmp_fail.begin(), d_tmp_fail.end(), id )!=d_tmp_fail.end() ){
+      return Node::null();
+    }else{
+      // try each child option
+      std::map< int, std::map< Node, std::vector< int > > >::iterator ito = d_reconstruct_op.find( id );
+      if( ito!=d_reconstruct_op.end() ){
+        for( std::map< Node, std::vector< int > >::iterator itt = ito->second.begin(); itt != ito->second.end(); ++itt ){
+          std::vector< Node > children;
+          children.push_back( itt->first );
+          bool success = true;
+          for( unsigned i=0; i<itt->second.size(); i++ ){
+            Node nc = getReconstructedSolution( itt->second[i] );
+            if( nc.isNull() ){
+              success = false;
+              break;
+            }else{
+              children.push_back( nc );
+            }
+          }
+          if( success ){
+            Node ret = NodeManager::currentNM()->mkNode( APPLY_CONSTRUCTOR, children );
+            setReconstructed( id, ret );
+            return ret;
+          }
+        }
+      }
+      // try terms in the equivalence class of this
+      if( mod_eq ){
+        int rid = d_rep[id];
+        for( unsigned i=0; i<d_eqc[rid].size(); i++ ){
+          int tid = d_eqc[rid][i];
+          if( tid!=id ){
+            Node eret = getReconstructedSolution( tid, false );
+            if( !eret.isNull() ){
+              setReconstructed( id, eret );
+              return eret;
+            }
+          }
+        }
+      }
+      d_tmp_fail.push_back( id );
+      return Node::null();
+    }
+  }
+}
+
+int CegConjectureSingleInvSol::allocate( Node n, TypeNode stn ) {
+  std::map< Node, int >::iterator it = d_rcons_to_id[stn].find( n );
+  if( it==d_rcons_to_id[stn].end() ){
+    int ret = d_id_count;
+    if( Trace.isOn("csi-rcons-debug") ){
+      const Datatype& dt = ((DatatypeType)(stn).toType()).getDatatype();
+      Trace("csi-rcons-debug") << "id " << ret << " : " << n << " " <<  dt.getName() << std::endl;
+    }
+    d_id_node[d_id_count] = n;
+    d_id_type[d_id_count] = stn;
+    d_rep[d_id_count] = d_id_count;
+    d_eqc[d_id_count].push_back( d_id_count );
+    d_rcons_to_id[stn][n] = d_id_count;
+    d_id_count++;
+    return ret;
+  }else{
+    return it->second;
+  }
+}
+
+bool CegConjectureSingleInvSol::getPathToRoot( int id ) {
+  if( id==d_root_id ){
+    return true;
+  }else{
+    std::map< int, Node >::iterator it = d_reconstruct.find( id );
+    if( it!=d_reconstruct.end() ){
+      return false;
+    }else{
+      int rid = d_rep[id];
+      for( unsigned j=0; j<d_parents[rid].size(); j++ ){
+        if( getPathToRoot( d_parents[rid][j] ) ){
+          return true;
+        }
+      }
+      return false;
+    }
+  }
+}
+
+void CegConjectureSingleInvSol::setReconstructed( int id, Node n ) {
+  //set all equivalent to this as reconstructed
+  int rid = d_rep[id];
+  for( unsigned i=0; i<d_eqc[rid].size(); i++ ){
+    d_reconstruct[d_eqc[rid][i]] = n;
+  }
+}
+
+void CegConjectureSingleInvSol::getEquivalentTerms( Kind k, Node n, std::vector< Node >& equiv ) {
+  Assert( n.getKind()!=k ); //?
+  if( k==AND || k==OR ){
+    equiv.push_back( NodeManager::currentNM()->mkNode( k, n, n ) );
+    equiv.push_back( NodeManager::currentNM()->mkNode( k, n, NodeManager::currentNM()->mkConst( k==AND ) ) );
+  }
+  //multiplication for integers
+  //TODO for bitvectors
+  Kind mk = ( k==PLUS || k==MINUS ) ? MULT : UNDEFINED_KIND;
+  if( mk!=UNDEFINED_KIND ){
+    if( n.getKind()==mk && n[0].isConst() && n[0].getType().isInteger() ){
+      bool success = true;
+      for( unsigned i=0; i<2; i++ ){
+        Node eq;
+        if( k==PLUS || k==MINUS ){
+          Node oth = NodeManager::currentNM()->mkConst( Rational(i==0 ? 1000 : -1000) );
+          eq = i==0 ? NodeManager::currentNM()->mkNode( LEQ, n[0], oth ) : NodeManager::currentNM()->mkNode( GEQ, n[0], oth );
+        }
+        if( !eq.isNull() ){
+          eq = Rewriter::rewrite( eq );
+          if( eq!=d_qe->getTermDatabase()->d_true ){
+            success = false;
+            break;
+          }
+        }
+      }
+      if( success ){
+        Node var = n[1];
+        Node rem;
+        if( k==PLUS || k==MINUS ){
+          int rem_coeff = (int)n[0].getConst<Rational>().getNumerator().getSignedInt();
+          if( rem_coeff>0 && k==PLUS ){
+            rem_coeff--;
+          }else if( rem_coeff<0 && k==MINUS ){
+            rem_coeff++;
+          }else{
+            success = false;
+          }
+          if( success ){
+            rem = NodeManager::currentNM()->mkNode( MULT, NodeManager::currentNM()->mkConst( Rational(rem_coeff) ), var );
+            rem = Rewriter::rewrite( rem );
+          }
+        }
+        if( !rem.isNull() ){
+          equiv.push_back( NodeManager::currentNM()->mkNode( k, rem, var ) );
+        }
+      }
+    }
+  }
+  //negative constants
+  if( k==MINUS ){
+    if( n.isConst() && n.getType().isInteger() && n.getConst<Rational>().getNumerator().strictlyNegative() ){
+      Node nn = NodeManager::currentNM()->mkNode( UMINUS, n );
+      nn = Rewriter::rewrite( nn );
+      equiv.push_back( NodeManager::currentNM()->mkNode( MINUS, NodeManager::currentNM()->mkConst( Rational(0) ), nn ) );
+    }
+  }
+  //inequalities
+  if( k==GEQ || k==LEQ || k==LT || k==GT || k==NOT ){
+    Node atom = n.getKind()==NOT ? n[0] : n;
+    bool pol = n.getKind()!=NOT;
+    Kind ak = atom.getKind();
+    if( ( ak==GEQ || ak==LEQ || ak==LT || ak==GT ) && ( pol || k!=NOT ) ){
+      Node t1 = atom[0];
+      Node t2 = atom[1];
+      if( !pol ){
+        ak = ak==GEQ ? LT : ( ak==LEQ ? GT : ( ak==LT ? GEQ : LEQ ) );
+      }
+      if( k==NOT ){
+        equiv.push_back( NodeManager::currentNM()->mkNode( ak==GEQ ? LT : ( ak==LEQ ? GT : ( ak==LT ? GEQ : LEQ ) ), t1, t2 ).negate() );
+      }else if( k==ak ){
+        equiv.push_back( NodeManager::currentNM()->mkNode( k, t1, t2 ) );
+      }else if( (k==GEQ || k==LEQ)==(ak==GEQ || ak==LEQ) ){
+        equiv.push_back( NodeManager::currentNM()->mkNode( k, t2, t1 ) );
+      }else if( t1.getType().isInteger() && t2.getType().isInteger() ){
+        if( (k==GEQ || k==GT)!=(ak==GEQ || ak==GT) ){
+          Node ts = t1;
+          t1 = t2;
+          t2 = ts;
+          ak = ak==GEQ ? LEQ : ( ak==LEQ ? GEQ : ( ak==LT ? GT : LT ) );
+        }
+        t2 = NodeManager::currentNM()->mkNode( PLUS, t2, NodeManager::currentNM()->mkConst( Rational( (ak==GT || ak==LEQ) ? 1 : -1 ) ) );
+        t2 = Rewriter::rewrite( t2 );
+        equiv.push_back( NodeManager::currentNM()->mkNode( k, t1, t2 ) );
+      }
+    }
+  }
+
+  //based on eqt cache
+  std::map< Node, Node >::iterator itet = d_eqt_rep.find( n );
+  if( itet!=d_eqt_rep.end() ){
+    Node rn = itet->second;
+    for( unsigned i=0; i<d_eqt_eqc[rn].size(); i++ ){
+      if( d_eqt_eqc[rn][i]!=n && d_eqt_eqc[rn][i].getKind()==k ){
+        if( std::find( equiv.begin(), equiv.end(), d_eqt_eqc[rn][i] )==equiv.end() ){
+          equiv.push_back( d_eqt_eqc[rn][i] );
+        }
+      }
+    }
+  }
+}
+
+void CegConjectureSingleInvSol::registerEquivalentTerms( Node n ) {
+  for( unsigned i=0; i<n.getNumChildren(); i++ ){
+    registerEquivalentTerms( n[i] );
+  }
+  Node rn = Rewriter::rewrite( n );
+  if( rn!=n ){
+    Trace("csi-equiv") << "  eq terms : " << n << " " << rn << std::endl;
+    d_eqt_rep[n] = rn;
+    d_eqt_rep[rn] = rn;
+    if( std::find( d_eqt_eqc[rn].begin(), d_eqt_eqc[rn].end(), rn )==d_eqt_eqc[rn].end() ){
+      d_eqt_eqc[rn].push_back( rn );
+    }
+    if( std::find( d_eqt_eqc[rn].begin(), d_eqt_eqc[rn].end(), n )==d_eqt_eqc[rn].end() ){
+      d_eqt_eqc[rn].push_back( n );
+    }
+  }
+}
+
+}
diff --git a/src/theory/quantifiers/ce_guided_single_inv_sol.h b/src/theory/quantifiers/ce_guided_single_inv_sol.h
new file mode 100644
index 0000000..cb6f6bc
--- /dev/null
+++ b/src/theory/quantifiers/ce_guided_single_inv_sol.h
@@ -0,0 +1,101 @@
+/*********************                                                        */
+/*! \file ce_guided_single_inv_sol.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief utility for reconstructing solutions for single invocation synthesis conjectures
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANTIFIERS__CE_GUIDED_SINGLE_INV_SOL_H
+#define __CVC4__THEORY__QUANTIFIERS__CE_GUIDED_SINGLE_INV_SOL_H
+
+#include "context/cdhashmap.h"
+#include "context/cdchunk_list.h"
+#include "theory/quantifiers_engine.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+
+class CegConjectureSingleInv;
+
+class CegConjectureSingleInvSol
+{
+  friend class CegConjectureSingleInv;
+private:
+  QuantifiersEngine * d_qe;
+  std::vector< Node > d_varList;
+  std::map< Node, int > d_dterm_size;
+  std::map< Node, int > d_dterm_ite_size;
+//solution simplification
+private:
+  bool debugSolution( Node sol );
+  void debugTermSize( Node sol, int& t_size, int& num_ite );
+  Node pullITEs( Node n );
+  bool pullITECondition( Node root, Node n, std::vector< Node >& conj, Node& t, Node& rem, int depth );
+  Node flattenITEs( Node n, bool rec = true );
+  bool getAssign( bool pol, Node n, std::map< Node, bool >& assign, std::vector< Node >& new_assign,
+                  std::vector< Node >& vars, std::vector< Node >& new_vars, std::vector< Node >& new_subs );
+  bool getAssignEquality( Node eq, std::vector< Node >& vars, std::vector< Node >& new_vars, std::vector< Node >& new_subs );
+  Node simplifySolutionNode( Node sol, TypeNode stn, std::map< Node, bool >& assign,
+                             std::vector< Node >& vars, std::vector< Node >& subs, int status );
+public:
+  Node simplifySolution( Node sol, TypeNode stn );
+//solution reconstruction
+private:
+  int d_id_count;
+  int d_root_id;
+  std::map< int, Node > d_id_node;
+  std::map< int, TypeNode > d_id_type;
+  std::map< TypeNode, std::map< Node, int > > d_rcons_to_id;
+  std::map< TypeNode, std::map< Node, int > > d_rcons_to_status;
+
+  std::map< int, std::map< Node, std::vector< int > > > d_reconstruct_op;
+  std::map< int, Node > d_reconstruct;
+  std::map< int, std::vector< int > > d_parents;
+
+  std::map< int, std::vector< int > > d_eqc;
+  std::map< int, int > d_rep;
+  
+  //equivalent terms
+  std::map< Node, Node > d_eqt_rep;
+  std::map< Node, std::vector< Node > > d_eqt_eqc;
+
+  //cache when reconstructing solutions
+  std::vector< int > d_tmp_fail;
+  // get reconstructed solution
+  Node getReconstructedSolution( int id, bool mod_eq = true );
+
+  // allocate node with type
+  int allocate( Node n, TypeNode stn );
+  // term t with sygus type st, returns inducted templated form of t
+  int collectReconstructNodes( Node t, TypeNode stn, int& status );
+  bool collectReconstructNodes( int pid, std::vector< Node >& ts, const DatatypeConstructor& dtc, std::vector< int >& ids, int& status );
+  bool getPathToRoot( int id );
+  void setReconstructed( int id, Node n );
+  //get equivalent terms to n with top symbol k
+  void getEquivalentTerms( Kind k, Node n, std::vector< Node >& equiv );
+  //register equivalent terms
+  void registerEquivalentTerms( Node n );
+public:
+  Node reconstructSolution( Node sol, TypeNode stn, int& reconstructed );
+  void preregisterConjecture( Node q );
+public:
+  CegConjectureSingleInvSol( QuantifiersEngine * qe );
+};
+
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/ceg_instantiator.cpp b/src/theory/quantifiers/ceg_instantiator.cpp
new file mode 100644
index 0000000..703dc69
--- /dev/null
+++ b/src/theory/quantifiers/ceg_instantiator.cpp
@@ -0,0 +1,1011 @@
+/*********************                                                        */
+/*! \file ceg_instantiator.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of counterexample-guided quantifier instantiation
+ **/
+ 
+#include "theory/quantifiers/ceg_instantiator.h"
+#include "theory/quantifiers/ceg_t_instantiator.h"
+
+#include "options/quantifiers_options.h"
+#include "smt/term_formula_removal.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/quantifiers_rewriter.h"
+#include "theory/quantifiers/trigger.h"
+#include "theory/theory_engine.h"
+
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+
+CegInstantiator::CegInstantiator( QuantifiersEngine * qe, CegqiOutput * out, bool use_vts_delta, bool use_vts_inf ) :
+d_qe( qe ), d_out( out ), d_use_vts_delta( use_vts_delta ), d_use_vts_inf( use_vts_inf ){
+  d_is_nested_quant = false;
+}
+
+CegInstantiator::~CegInstantiator() {
+  for( std::map< Node, Instantiator * >::iterator it = d_instantiator.begin(); it != d_instantiator.end(); ++it ){
+    delete it->second;
+  }
+}
+
+void CegInstantiator::computeProgVars( Node n ){
+  if( d_prog_var.find( n )==d_prog_var.end() ){
+    d_prog_var[n].clear();
+    if( std::find( d_vars.begin(), d_vars.end(), n )!=d_vars.end() ){
+      d_prog_var[n][n] = true;
+    }else if( !d_out->isEligibleForInstantiation( n ) ){
+      d_inelig[n] = true;
+      return;
+    }
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      computeProgVars( n[i] );
+      if( d_inelig.find( n[i] )!=d_inelig.end() ){
+        d_inelig[n] = true;
+        return;
+      }
+      for( std::map< Node, bool >::iterator it = d_prog_var[n[i]].begin(); it != d_prog_var[n[i]].end(); ++it ){
+        d_prog_var[n][it->first] = true;
+      }
+      //selectors applied to program variables are also variables
+      if( n.getKind()==APPLY_SELECTOR_TOTAL && d_prog_var[n].find( n[0] )!=d_prog_var[n].end() ){
+        d_prog_var[n][n] = true;
+      }
+    }
+  }
+}
+
+bool CegInstantiator::isEligible( Node n ) {
+  //compute d_subs_fv, which program variables are contained in n, and determines if eligible
+  computeProgVars( n );
+  return d_inelig.find( n )==d_inelig.end();
+}
+
+bool CegInstantiator::hasVariable( Node n, Node pv ) {
+  computeProgVars( n );
+  return d_prog_var[n].find( pv )!=d_prog_var[n].end();
+}
+
+
+void CegInstantiator::registerInstantiationVariable( Node v, unsigned index ) {
+  if( d_instantiator.find( v )==d_instantiator.end() ){
+    TypeNode tn = v.getType();
+    Instantiator * vinst;
+    if( tn.isReal() ){
+      vinst = new ArithInstantiator( d_qe, tn );
+    }else if( tn.isSort() ){
+      Assert( options::quantEpr() );
+      vinst = new EprInstantiator( d_qe, tn );
+    }else if( tn.isDatatype() ){
+      vinst = new DtInstantiator( d_qe, tn );
+    }else if( tn.isBitVector() ){
+      vinst = new BvInstantiator( d_qe, tn );
+    }else if( tn.isBoolean() ){
+      vinst = new ModelValueInstantiator( d_qe, tn );
+    }else{
+      //default
+      vinst = new Instantiator( d_qe, tn );
+    }
+    d_instantiator[v] = vinst;
+  }
+  d_curr_subs_proc[v].clear();
+  d_curr_index[v] = index;
+}
+
+void CegInstantiator::unregisterInstantiationVariable( Node v ) {
+  d_curr_subs_proc.erase( v );
+  d_curr_index.erase( v );
+}
+
+bool CegInstantiator::doAddInstantiation( SolvedForm& sf, unsigned i, unsigned effort ){
+  if( i==d_vars.size() ){
+    //solved for all variables, now construct instantiation
+    bool needsPostprocess = false;
+    std::map< Instantiator *, Node > pp_inst;
+    for( std::map< Node, Instantiator * >::iterator ita = d_active_instantiators.begin(); ita != d_active_instantiators.end(); ++ita ){
+      if( ita->second->needsPostProcessInstantiation( this, sf, ita->first, effort ) ){
+        needsPostprocess = true;
+        pp_inst[ ita->second ] = ita->first;
+      }
+    }
+    if( needsPostprocess ){
+      //must make copy so that backtracking reverts sf
+      SolvedForm sf_tmp;
+      sf_tmp.copy( sf );
+      bool postProcessSuccess = true;
+      for( std::map< Instantiator *, Node >::iterator itp = pp_inst.begin(); itp != pp_inst.end(); ++itp ){
+        if( !itp->first->postProcessInstantiation( this, sf_tmp, itp->second, effort ) ){
+          postProcessSuccess = false;
+          break;
+        }
+      } 
+      if( postProcessSuccess ){
+        return doAddInstantiation( sf_tmp.d_subs, sf_tmp.d_vars );
+      }else{
+        return false;
+      }
+    }else{
+      return doAddInstantiation( sf.d_subs, sf.d_vars );
+    }
+  }else{
+    //Node v = d_single_inv_map_to_prog[d_single_inv[0][i]];
+    bool is_cv = false;
+    Node pv;
+    if( d_stack_vars.empty() ){
+      pv = d_vars[i];
+    }else{
+      pv = d_stack_vars.back();
+      is_cv = true;
+      d_stack_vars.pop_back();
+    }
+    registerInstantiationVariable( pv, i );
+
+    //get the instantiator object
+    Instantiator * vinst = NULL;
+    std::map< Node, Instantiator * >::iterator itin = d_instantiator.find( pv );
+    if( itin!=d_instantiator.end() ){
+      vinst = itin->second;
+    }
+    Assert( vinst!=NULL );
+    d_active_instantiators[pv] = vinst;
+    vinst->reset( this, sf, pv, effort );
+
+    TypeNode pvtn = pv.getType();
+    TypeNode pvtnb = pvtn.getBaseType();
+    Node pvr = pv;
+    if( d_qe->getMasterEqualityEngine()->hasTerm( pv ) ){
+      pvr = d_qe->getMasterEqualityEngine()->getRepresentative( pv );
+    }
+    Trace("cbqi-inst-debug") << "[Find instantiation for " << pv << "], rep=" << pvr << ", instantiator is " << vinst->identify() << std::endl;
+    Node pv_value;
+    if( options::cbqiModel() ){
+      pv_value = getModelValue( pv );
+      Trace("cbqi-bound2") << "...M( " << pv << " ) = " << pv_value << std::endl;
+    }
+
+    //if in effort=2, we must choose at least one model value
+    if( (i+1)<d_vars.size() || effort!=2 ){
+
+      //[1] easy case : pv is in the equivalence class as another term not containing pv
+      Trace("cbqi-inst-debug") << "[1] try based on equivalence class." << std::endl;
+      std::map< Node, std::vector< Node > >::iterator it_eqc = d_curr_eqc.find( pvr );
+      if( it_eqc!=d_curr_eqc.end() ){
+        //std::vector< Node > eq_candidates;
+        Trace("cbqi-inst-debug2") << "...eqc has size " << it_eqc->second.size() << std::endl;
+        for( unsigned k=0; k<it_eqc->second.size(); k++ ){
+          Node n = it_eqc->second[k];
+          if( n!=pv ){
+            Trace("cbqi-inst-debug") << "...try based on equal term " << n << std::endl;
+            //must be an eligible term
+            if( isEligible( n ) ){
+              Node ns;
+              Node pv_coeff;  //coefficient of pv in the equality we solve (null is 1)
+              bool proc = false;
+              if( !d_prog_var[n].empty() ){
+                ns = applySubstitution( pvtn, n, sf, pv_coeff, false );
+                if( !ns.isNull() ){
+                  computeProgVars( ns );
+                  //substituted version must be new and cannot contain pv
+                  proc = d_prog_var[ns].find( pv )==d_prog_var[ns].end();
+                }
+              }else{
+                ns = n;
+                proc = true;
+              }
+              if( proc ){
+                if( vinst->processEqualTerm( this, sf, pv, pv_coeff, ns, effort ) ){
+                  return true;
+                }
+              }
+            }
+          }
+        }
+        if( vinst->processEqualTerms( this, sf, pv, it_eqc->second, effort ) ){
+          return true;
+        }
+      }else{
+        Trace("cbqi-inst-debug2") << "...eqc not found." << std::endl;
+      }
+
+      //[3] : we can solve an equality for pv
+      ///iterate over equivalence classes to find cases where we can solve for the variable
+      if( vinst->hasProcessEquality( this, sf, pv, effort ) ){
+        Trace("cbqi-inst-debug") << "[3] try based on solving equalities." << std::endl;
+        for( unsigned k=0; k<d_curr_type_eqc[pvtnb].size(); k++ ){
+          Node r = d_curr_type_eqc[pvtnb][k];
+          std::map< Node, std::vector< Node > >::iterator it_reqc = d_curr_eqc.find( r );
+          std::vector< Node > lhs;
+          std::vector< bool > lhs_v;
+          std::vector< Node > lhs_coeff;
+          Assert( it_reqc!=d_curr_eqc.end() );
+          for( unsigned kk=0; kk<it_reqc->second.size(); kk++ ){
+            Node n = it_reqc->second[kk];
+            Trace("cbqi-inst-debug2") << "...look at term " << n << std::endl;
+            //must be an eligible term
+            if( isEligible( n ) ){
+              Node ns;
+              Node pv_coeff;
+              if( !d_prog_var[n].empty() ){
+                ns = applySubstitution( pvtn, n, sf, pv_coeff );
+                if( !ns.isNull() ){
+                  computeProgVars( ns );
+                }
+              }else{
+                ns = n;
+              }
+              if( !ns.isNull() ){
+                bool hasVar = d_prog_var[ns].find( pv )!=d_prog_var[ns].end();
+                Trace("cbqi-inst-debug2") << "... " << ns << " has var " << pv << " : " << hasVar << std::endl;
+                std::vector< Node > term_coeffs;
+                std::vector< Node > terms;
+                term_coeffs.push_back( pv_coeff );
+                terms.push_back( ns );
+                for( unsigned j=0; j<lhs.size(); j++ ){
+                  //if this term or the another has pv in it, try to solve for it
+                  if( hasVar || lhs_v[j] ){
+                    Trace("cbqi-inst-debug") << "... " << i << "...try based on equality " << lhs[j] << " = " << ns << std::endl;
+                    //processEquality( CegInstantiator * ci, SolvedForm& sf, Node pv, std::vector< Node >& term_coeffs, std::vector< Node >& terms, unsigned effort ) { return false; }
+                    term_coeffs.push_back( lhs_coeff[j] );
+                    terms.push_back( lhs[j] );
+                    if( vinst->processEquality( this, sf, pv, term_coeffs, terms, effort ) ){
+                      return true;
+                    }
+                    term_coeffs.pop_back();
+                    terms.pop_back();
+                  }
+                }
+                lhs.push_back( ns );
+                lhs_v.push_back( hasVar );
+                lhs_coeff.push_back( pv_coeff );
+              }else{
+                Trace("cbqi-inst-debug2") << "... term " << n << " is ineligible after substitution." << std::endl;
+              }
+            }else{
+              Trace("cbqi-inst-debug2") << "... term " << n << " is ineligible." << std::endl;
+            }
+          }
+        }
+      }
+
+      //[4] directly look at assertions
+      if( vinst->hasProcessAssertion( this, sf, pv, effort ) ){
+        Trace("cbqi-inst-debug") << "[4] try based on assertions." << std::endl;
+        std::vector< Node > lits;
+        //unsigned rmax = Theory::theoryOf( pv )==Theory::theoryOf( pv.getType() ) ? 1 : 2;
+        for( unsigned r=0; r<2; r++ ){
+          TheoryId tid = r==0 ? Theory::theoryOf( pvtn ) : THEORY_UF;
+          Trace("cbqi-inst-debug2") << "  look at assertions of " << tid << std::endl;
+          std::map< TheoryId, std::vector< Node > >::iterator ita = d_curr_asserts.find( tid );
+          if( ita!=d_curr_asserts.end() ){
+            for (unsigned j = 0; j<ita->second.size(); j++) {
+              Node lit = ita->second[j];
+              if( std::find( lits.begin(), lits.end(), lit )==lits.end() ){
+                lits.push_back( lit );
+                if( vinst->processAssertion( this, sf, pv, lit, effort ) ){
+                  return true;
+                }
+              }
+            }
+          }
+        }
+        if( vinst->processAssertions( this, sf, pv, lits, effort ) ){
+          return true;
+        }
+      }
+    }
+
+    //[5] resort to using value in model
+    // do so if we are in effort=1, or if the variable is boolean, or if we are solving for a subfield of a datatype
+    bool use_model_value = vinst->useModelValue( this, sf, pv, effort );
+    if( ( effort>0 || use_model_value || is_cv ) && vinst->allowModelValue( this, sf, pv, effort ) ){
+#ifdef CVC4_ASSERTIONS
+      if( pvtn.isReal() && options::cbqiNestedQE() && !options::cbqiAll() ){
+        Trace("cbqi-warn") << "Had to resort to model value." << std::endl;
+        Assert( false );
+      }
+#endif
+      Node mv = getModelValue( pv );
+      Node pv_coeff_m;
+      Trace("cbqi-inst-debug") << "[5] " << i << "...try model value " << mv << std::endl;
+      int new_effort = use_model_value ? effort : 1;
+      if( doAddInstantiationInc( pv, mv, pv_coeff_m, 0, sf, new_effort ) ){
+        return true;
+      }
+    }
+    Trace("cbqi-inst-debug") << "[No instantiation found for " << pv << "]" << std::endl;
+    if( is_cv ){  
+      d_stack_vars.push_back( pv );
+    }
+    d_active_instantiators.erase( pv );
+    unregisterInstantiationVariable( pv );
+    return false;
+  }
+}
+
+void CegInstantiator::pushStackVariable( Node v ) {
+  d_stack_vars.push_back( v );
+}
+
+void CegInstantiator::popStackVariable() {
+  Assert( !d_stack_vars.empty() );
+  d_stack_vars.pop_back();
+}
+
+bool CegInstantiator::doAddInstantiationInc( Node pv, Node n, Node pv_coeff, int bt, SolvedForm& sf, unsigned effort ) {
+  if( d_curr_subs_proc[pv][n].find( pv_coeff )==d_curr_subs_proc[pv][n].end() ){
+    d_curr_subs_proc[pv][n][pv_coeff] = true;
+    if( Trace.isOn("cbqi-inst") ){
+      for( unsigned j=0; j<sf.d_subs.size(); j++ ){
+        Trace("cbqi-inst") << " ";
+      }
+      Trace("cbqi-inst") << sf.d_subs.size() << ": ";
+      if( !pv_coeff.isNull() ){
+        Trace("cbqi-inst") << pv_coeff << " * ";
+      }
+      Trace("cbqi-inst") << pv << " -> " << n << std::endl;
+      Assert( n.getType().isSubtypeOf( pv.getType() ) );
+    }
+    //must ensure variables have been computed for n
+    computeProgVars( n );
+    Assert( d_inelig.find( n )==d_inelig.end() );
+
+    //substitute into previous substitutions, when applicable
+    std::vector< Node > a_subs;
+    a_subs.push_back( n );
+    std::vector< Node > a_var;
+    a_var.push_back( pv );
+    std::vector< Node > a_coeff;
+    std::vector< Node > a_has_coeff;
+    if( !pv_coeff.isNull() ){
+      a_coeff.push_back( pv_coeff );
+      a_has_coeff.push_back( pv );
+    }
+    bool success = true;
+    std::map< int, Node > prev_subs;
+    std::map< int, Node > prev_coeff;
+    std::map< int, Node > prev_sym_subs;
+    std::vector< Node > new_has_coeff;
+    Trace("cbqi-inst-debug2") << "Applying substitutions..." << std::endl;
+    for( unsigned j=0; j<sf.d_subs.size(); j++ ){
+      Trace("cbqi-inst-debug2") << "  Apply for " << sf.d_subs[j]  << std::endl;
+      Assert( d_prog_var.find( sf.d_subs[j] )!=d_prog_var.end() );
+      if( d_prog_var[sf.d_subs[j]].find( pv )!=d_prog_var[sf.d_subs[j]].end() ){
+        prev_subs[j] = sf.d_subs[j];
+        TNode tv = pv;
+        TNode ts = n;
+        Node a_pv_coeff;
+        Node new_subs = applySubstitution( sf.d_vars[j].getType(), sf.d_subs[j], a_subs, a_coeff, a_has_coeff, a_var, a_pv_coeff, true );
+        if( !new_subs.isNull() ){
+          sf.d_subs[j] = new_subs;
+          if( !a_pv_coeff.isNull() ){
+            prev_coeff[j] = sf.d_coeff[j];
+            if( sf.d_coeff[j].isNull() ){
+              Assert( std::find( sf.d_has_coeff.begin(), sf.d_has_coeff.end(), sf.d_vars[j] )==sf.d_has_coeff.end() );
+              //now has coefficient
+              new_has_coeff.push_back( sf.d_vars[j] );
+              sf.d_has_coeff.push_back( sf.d_vars[j] );
+              sf.d_coeff[j] = a_pv_coeff;
+            }else{
+              sf.d_coeff[j] = Rewriter::rewrite( NodeManager::currentNM()->mkNode( MULT, sf.d_coeff[j], a_pv_coeff ) );
+            }
+          }
+          if( sf.d_subs[j]!=prev_subs[j] ){
+            computeProgVars( sf.d_subs[j] );
+            Assert( d_inelig.find( sf.d_subs[j] )==d_inelig.end() );
+          }
+          Trace("cbqi-inst-debug2") << "Subs " << j << " " << sf.d_subs[j] << std::endl;
+        }else{
+          Trace("cbqi-inst-debug2") << "...failed to apply substitution to " << sf.d_subs[j] << std::endl;
+          success = false;
+          break;
+        }
+      }else{
+        Trace("cbqi-inst-debug2") << "Skip " << j << " " << sf.d_subs[j] << std::endl;
+      }
+    }
+    if( success ){
+      Trace("cbqi-inst-debug2") << "Adding to vectors..." << std::endl;
+      sf.push_back( pv, n, pv_coeff, bt );
+      Node prev_theta = sf.d_theta;
+      Node new_theta = sf.d_theta;
+      if( !pv_coeff.isNull() ){
+        if( new_theta.isNull() ){
+          new_theta = pv_coeff;
+        }else{
+          new_theta = NodeManager::currentNM()->mkNode( MULT, new_theta, pv_coeff );
+          new_theta = Rewriter::rewrite( new_theta );
+        }
+      }
+      sf.d_theta = new_theta;
+      Trace("cbqi-inst-debug2") << "Recurse..." << std::endl;
+      unsigned i = d_curr_index[pv];
+      success = doAddInstantiation( sf, d_stack_vars.empty() ? i+1 : i, effort );
+      sf.d_theta = prev_theta;
+      if( !success ){
+        Trace("cbqi-inst-debug2") << "Removing from vectors..." << std::endl;
+        sf.pop_back( pv, n, pv_coeff, bt );
+      }
+    }
+    if( success ){
+      return true;
+    }else{
+      Trace("cbqi-inst-debug2") << "Revert substitutions..." << std::endl;
+      //revert substitution information
+      for( std::map< int, Node >::iterator it = prev_subs.begin(); it != prev_subs.end(); it++ ){
+        sf.d_subs[it->first] = it->second;
+      }
+      for( std::map< int, Node >::iterator it = prev_coeff.begin(); it != prev_coeff.end(); it++ ){
+        sf.d_coeff[it->first] = it->second;
+      }
+      for( unsigned i=0; i<new_has_coeff.size(); i++ ){
+        sf.d_has_coeff.pop_back();
+      }
+      return false;
+    }
+  }else{
+    //already tried this substitution
+    return false;
+  }
+}
+
+bool CegInstantiator::doAddInstantiation( std::vector< Node >& subs, std::vector< Node >& vars ) {
+  if( vars.size()>d_vars.size() ){
+    Trace("cbqi-inst-debug") << "Reconstructing instantiations...." << std::endl;
+    std::map< Node, Node > subs_map;
+    for( unsigned i=0; i<subs.size(); i++ ){
+      subs_map[vars[i]] = subs[i];
+    }
+    subs.clear();
+    for( unsigned i=0; i<d_vars.size(); i++ ){
+      std::map< Node, Node >::iterator it = subs_map.find( d_vars[i] );
+      Assert( it!=subs_map.end() );
+      Node n = it->second;
+      Trace("cbqi-inst-debug") << "  " << d_vars[i] << " -> " << n << std::endl;
+      subs.push_back( n );
+    }
+  }
+  if( !d_var_order_index.empty() ){
+    std::vector< Node > subs_orig;
+    subs_orig.insert( subs_orig.end(), subs.begin(), subs.end() );
+    subs.clear();
+    for( unsigned i=0; i<subs_orig.size(); i++ ){
+      subs.push_back( subs_orig[d_var_order_index[i]] );
+    }
+  }
+  bool ret = d_out->doAddInstantiation( subs );
+  return ret;
+}
+
+Node CegInstantiator::applySubstitution( TypeNode tn, Node n, std::vector< Node >& subs, std::vector< Node >& coeff, std::vector< Node >& has_coeff,
+                                         std::vector< Node >& vars, Node& pv_coeff, bool try_coeff ) {
+  Assert( d_prog_var.find( n )!=d_prog_var.end() );
+  Assert( n==Rewriter::rewrite( n ) );
+  bool req_coeff = false;
+  if( !has_coeff.empty() ){
+    for( std::map< Node, bool >::iterator it = d_prog_var[n].begin(); it != d_prog_var[n].end(); ++it ){
+      if( std::find( has_coeff.begin(), has_coeff.end(), it->first )!=has_coeff.end() ){
+        req_coeff = true;
+        break;
+      }
+    }
+  }
+  if( !req_coeff ){
+    Node nret = n.substitute( vars.begin(), vars.end(), subs.begin(), subs.end() );
+    if( n!=nret ){
+      nret = Rewriter::rewrite( nret );
+    }
+    return nret;
+  }else{
+    if( !tn.isInteger() ){
+      //can do basic substitution instead with divisions
+      std::vector< Node > nvars;
+      std::vector< Node > nsubs;
+      for( unsigned i=0; i<vars.size(); i++ ){
+        if( !coeff[i].isNull() ){
+          Assert( coeff[i].isConst() );
+          nsubs.push_back( Rewriter::rewrite( NodeManager::currentNM()->mkNode( MULT, subs[i], NodeManager::currentNM()->mkConst( Rational(1)/coeff[i].getConst<Rational>() ) ) ));
+        }else{
+          nsubs.push_back( subs[i] );
+        }
+      }
+      Node nret = n.substitute( vars.begin(), vars.end(), nsubs.begin(), nsubs.end() );
+      if( n!=nret ){
+        nret = Rewriter::rewrite( nret );
+      }
+      return nret;
+    }else if( try_coeff ){
+      //must convert to monomial representation
+      std::map< Node, Node > msum;
+      if( QuantArith::getMonomialSum( n, msum ) ){
+        std::map< Node, Node > msum_coeff;
+        std::map< Node, Node > msum_term;
+        for( std::map< Node, Node >::iterator it = msum.begin(); it != msum.end(); ++it ){
+          //check if in substitution
+          std::vector< Node >::iterator its = std::find( vars.begin(), vars.end(), it->first );
+          if( its!=vars.end() ){
+            int index = its-vars.begin();
+            if( coeff[index].isNull() ){
+              //apply substitution
+              msum_term[it->first] = subs[index];
+            }else{
+              //apply substitution, multiply to ensure no divisibility conflict
+              msum_term[it->first] = subs[index];
+              //relative coefficient
+              msum_coeff[it->first] = coeff[index];
+              if( pv_coeff.isNull() ){
+                pv_coeff = coeff[index];
+              }else{
+                pv_coeff = NodeManager::currentNM()->mkNode( MULT, pv_coeff, coeff[index] );
+              }
+            }
+          }else{
+            msum_term[it->first] = it->first;
+          }
+        }
+        //make sum with normalized coefficient
+        if( !pv_coeff.isNull() ){
+          pv_coeff = Rewriter::rewrite( pv_coeff );
+          Trace("cegqi-si-apply-subs-debug") << "Combined coeff : " << pv_coeff << std::endl;
+          std::vector< Node > children;
+          for( std::map< Node, Node >::iterator it = msum.begin(); it != msum.end(); ++it ){
+            Node c_coeff;
+            if( !msum_coeff[it->first].isNull() ){
+              c_coeff = Rewriter::rewrite( NodeManager::currentNM()->mkConst( pv_coeff.getConst<Rational>() / msum_coeff[it->first].getConst<Rational>() ) );
+            }else{
+              c_coeff = pv_coeff;
+            }
+            if( !it->second.isNull() ){
+              c_coeff = NodeManager::currentNM()->mkNode( MULT, c_coeff, it->second );
+            }
+            Assert( !c_coeff.isNull() );
+            Node c;
+            if( msum_term[it->first].isNull() ){
+              c = c_coeff;
+            }else{
+              c = NodeManager::currentNM()->mkNode( MULT, c_coeff, msum_term[it->first] );
+            }
+            children.push_back( c );
+            Trace("cegqi-si-apply-subs-debug") << "Add child : " << c << std::endl;
+          }
+          Node nret = children.size()==1 ? children[0] : NodeManager::currentNM()->mkNode( PLUS, children );
+          nret = Rewriter::rewrite( nret );
+          //ensure that nret does not contain vars
+          if( !TermDb::containsTerms( nret, vars ) ){
+            //result is ( nret / pv_coeff )
+            return nret;
+          }else{
+            Trace("cegqi-si-apply-subs-debug") << "Failed, since result " << nret << " contains free variable." << std::endl;
+          }
+        }else{
+          //implies that we have a monomial that has a free variable
+          Trace("cegqi-si-apply-subs-debug") << "Failed to find coefficient during substitution, implies monomial with free variable." << std::endl;
+        }
+      }else{
+        Trace("cegqi-si-apply-subs-debug") << "Failed to find monomial sum " << n << std::endl;
+      }
+    }
+    // failed to apply the substitution
+    return Node::null();
+  }
+}
+
+bool CegInstantiator::check() {
+  if( d_qe->getTheoryEngine()->needCheck() ){
+    Trace("cbqi-engine") << "  CEGQI instantiator : wait until all ground theories are finished." << std::endl;
+    return false;
+  }
+  processAssertions();
+  for( unsigned r=0; r<2; r++ ){
+    SolvedForm sf;
+    d_stack_vars.clear();
+    //try to add an instantiation
+    if( doAddInstantiation( sf, 0, r==0 ? 0 : 2 ) ){
+      return true;
+    }
+  }
+  Trace("cbqi-engine") << "  WARNING : unable to find CEGQI single invocation instantiation." << std::endl;
+  return false;
+}
+
+void collectPresolveEqTerms( Node n, std::map< Node, std::vector< Node > >& teq ) {
+  if( n.getKind()==FORALL || n.getKind()==EXISTS ){
+    //do nothing
+  }else{
+    if( n.getKind()==EQUAL ){
+      for( unsigned i=0; i<2; i++ ){
+        std::map< Node, std::vector< Node > >::iterator it = teq.find( n[i] );
+        if( it!=teq.end() ){
+          Node nn = n[ i==0 ? 1 : 0 ];
+          if( std::find( it->second.begin(), it->second.end(), nn )==it->second.end() ){
+            it->second.push_back( nn );
+            Trace("cbqi-presolve") << "  - " << n[i] << " = " << nn << std::endl;
+          }
+        }
+      }
+    }
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      collectPresolveEqTerms( n[i], teq );
+    }
+  }
+}
+
+void getPresolveEqConjuncts( std::vector< Node >& vars, std::vector< Node >& terms,
+                             std::map< Node, std::vector< Node > >& teq, Node f, std::vector< Node >& conj ) {
+  if( conj.size()<1000 ){
+    if( terms.size()==f[0].getNumChildren() ){
+      Node c = f[1].substitute( vars.begin(), vars.end(), terms.begin(), terms.end() );
+      conj.push_back( c );
+    }else{
+      unsigned i = terms.size();
+      Node v = f[0][i];
+      terms.push_back( Node::null() );
+      for( unsigned j=0; j<teq[v].size(); j++ ){
+        terms[i] = teq[v][j];
+        getPresolveEqConjuncts( vars, terms, teq, f, conj );
+      }
+      terms.pop_back();
+    }
+  }
+}
+
+void CegInstantiator::presolve( Node q ) {
+  //at preregister time, add proxy of obvious instantiations up front, which helps learning during preprocessing
+  //only if no nested quantifiers
+  if( !QuantifiersRewriter::containsQuantifiers( q[1] ) ){
+    std::vector< Node > ps_vars;
+    std::map< Node, std::vector< Node > > teq;
+    for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
+      ps_vars.push_back( q[0][i] );
+      teq[q[0][i]].clear();
+    }
+    collectPresolveEqTerms( q[1], teq );
+    std::vector< Node > terms;
+    std::vector< Node > conj;
+    getPresolveEqConjuncts( ps_vars, terms, teq, q, conj );
+
+    if( !conj.empty() ){
+      Node lem = conj.size()==1 ? conj[0] : NodeManager::currentNM()->mkNode( AND, conj );
+      Node g = NodeManager::currentNM()->mkSkolem( "g", NodeManager::currentNM()->booleanType() );
+      lem = NodeManager::currentNM()->mkNode( OR, g, lem );
+      Trace("cbqi-presolve-debug") << "Presolve lemma : " << lem << std::endl;
+      d_qe->getOutputChannel().lemma( lem, false, true );
+    }
+  }
+}
+
+void collectTheoryIds( TypeNode tn, std::map< TypeNode, bool >& visited, std::vector< TheoryId >& tids ){
+  std::map< TypeNode, bool >::iterator itt = visited.find( tn );
+  if( itt==visited.end() ){
+    visited[tn] = true;
+    TheoryId tid = Theory::theoryOf( tn );
+    if( std::find( tids.begin(), tids.end(), tid )==tids.end() ){
+      tids.push_back( tid );
+    }
+    if( tn.isDatatype() ){
+      const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+      for( unsigned i=0; i<dt.getNumConstructors(); i++ ){
+        for( unsigned j=0; j<dt[i].getNumArgs(); j++ ){
+          collectTheoryIds( TypeNode::fromType( ((SelectorType)dt[i][j].getType()).getRangeType() ), visited, tids );
+        }
+      }
+    }
+  }
+}
+
+void CegInstantiator::processAssertions() {
+  Trace("cbqi-proc") << "--- Process assertions, #var = " << d_vars.size() << ", #aux-var = " << d_aux_vars.size() << std::endl;
+  d_curr_asserts.clear();
+  d_curr_eqc.clear();
+  d_curr_type_eqc.clear();
+
+  eq::EqualityEngine* ee = d_qe->getMasterEqualityEngine();
+  //to eliminate identified illegal terms
+  std::map< Node, Node > aux_subs;
+
+  //for each variable
+  std::vector< TheoryId > tids;
+  tids.push_back(THEORY_UF);
+  for( unsigned i=0; i<d_vars.size(); i++ ){
+    Node pv = d_vars[i];
+    TypeNode pvtn = pv.getType();
+    //collect relevant theories
+    std::map< TypeNode, bool > visited;
+    collectTheoryIds( pvtn, visited, tids );
+    //collect information about eqc
+    if( ee->hasTerm( pv ) ){
+      Node pvr = ee->getRepresentative( pv );
+      if( d_curr_eqc.find( pvr )==d_curr_eqc.end() ){
+        Trace("cbqi-proc") << "Collect equivalence class " << pvr << std::endl;
+        eq::EqClassIterator eqc_i = eq::EqClassIterator( pvr, ee );
+        while( !eqc_i.isFinished() ){
+          d_curr_eqc[pvr].push_back( *eqc_i );
+          ++eqc_i;
+        }
+      }
+    }
+  }
+  //collect assertions for relevant theories
+  for( unsigned i=0; i<tids.size(); i++ ){
+    TheoryId tid = tids[i];
+    Theory* theory = d_qe->getTheoryEngine()->theoryOf( tid );
+    if( theory && d_qe->getTheoryEngine()->isTheoryEnabled(tid) ){
+      Trace("cbqi-proc") << "Collect assertions from theory " << tid << std::endl;
+      d_curr_asserts[tid].clear();
+      //collect all assertions from theory
+      for( context::CDList<Assertion>::const_iterator it = theory->facts_begin(); it != theory->facts_end(); ++ it) {
+        Node lit = (*it).assertion;
+        Node atom = lit.getKind()==NOT ? lit[0] : lit;
+        if( d_is_nested_quant || std::find( d_ce_atoms.begin(), d_ce_atoms.end(), atom )!=d_ce_atoms.end() ){
+          d_curr_asserts[tid].push_back( lit );
+          Trace("cbqi-proc-debug") << "...add : " << lit << std::endl;
+        }else{
+          Trace("cbqi-proc") << "...do not consider literal " << tid << " : " << lit << " since it is not part of CE body." << std::endl;
+        }
+        if( lit.getKind()==EQUAL ){
+          std::map< Node, std::map< Node, Node > >::iterator itae = d_aux_eq.find( lit );
+          if( itae!=d_aux_eq.end() ){
+            for( std::map< Node, Node >::iterator itae2 = itae->second.begin(); itae2 != itae->second.end(); ++itae2 ){
+              aux_subs[ itae2->first ] = itae2->second;
+              Trace("cbqi-proc") << "......add substitution : " << itae2->first << " -> " << itae2->second << std::endl;
+            }
+          }
+        }else if( atom.getKind()==BOOLEAN_TERM_VARIABLE ){
+          if( std::find( d_aux_vars.begin(), d_aux_vars.end(), atom )!=d_aux_vars.end() ){
+            Node val = NodeManager::currentNM()->mkConst( lit.getKind()!=NOT );
+            aux_subs[ atom ] = val;
+            Trace("cbqi-proc") << "......add substitution : " << atom << " -> " << val << std::endl;
+          }
+        }
+      }
+    }
+  }
+  //collect equivalence classes that correspond to relevant theories
+  Trace("cbqi-proc-debug") << "...collect typed equivalence classes" << std::endl;
+  eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( ee );
+  while( !eqcs_i.isFinished() ){
+    Node r = *eqcs_i;
+    TypeNode rtn = r.getType();
+    TheoryId tid = Theory::theoryOf( rtn );
+    //if we care about the theory of this eqc
+    if( std::find( tids.begin(), tids.end(), tid )!=tids.end() ){
+      if( rtn.isInteger() || rtn.isReal() ){
+        rtn = rtn.getBaseType();
+      }
+      Trace("cbqi-proc-debug") << "...type eqc: " << r << std::endl;
+      d_curr_type_eqc[rtn].push_back( r );
+      if( d_curr_eqc.find( r )==d_curr_eqc.end() ){
+        Trace("cbqi-proc") << "Collect equivalence class " << r << std::endl;
+        Trace("cbqi-proc-debug") << "  ";
+        eq::EqClassIterator eqc_i = eq::EqClassIterator( r, ee );
+        while( !eqc_i.isFinished() ){
+          Trace("cbqi-proc-debug") << *eqc_i << " ";
+          d_curr_eqc[r].push_back( *eqc_i );
+          ++eqc_i;
+        }
+        Trace("cbqi-proc-debug") << std::endl;
+      }
+    }
+    ++eqcs_i;
+  }
+  //construct substitution from auxiliary variable equalities (if e.g. ITE removal was applied to CE body of quantified formula)
+  std::vector< Node > subs_lhs;
+  std::vector< Node > subs_rhs;
+  for( unsigned i=0; i<d_aux_vars.size(); i++ ){
+    Node r = d_aux_vars[i];
+    std::map< Node, Node >::iterator it = aux_subs.find( r );
+    if( it!=aux_subs.end() ){
+      addToAuxVarSubstitution( subs_lhs, subs_rhs, r, it->second );
+    }else{
+      Trace("cbqi-proc") << "....no substitution found for auxiliary variable " << r << "!!!" << std::endl;
+      Assert( false );
+    }
+  }
+
+  //apply substitutions to everything, if necessary
+  if( !subs_lhs.empty() ){
+    Trace("cbqi-proc") << "Applying substitution : " << std::endl;
+    for( unsigned i=0; i<subs_lhs.size(); i++ ){
+      Trace("cbqi-proc") << "  " << subs_lhs[i] << " -> " << subs_rhs[i] << std::endl;
+    }
+    for( std::map< TheoryId, std::vector< Node > >::iterator it = d_curr_asserts.begin(); it != d_curr_asserts.end(); ++it ){
+      for( unsigned i=0; i<it->second.size(); i++ ){
+        Node lit = it->second[i];
+        lit = lit.substitute( subs_lhs.begin(), subs_lhs.end(), subs_rhs.begin(), subs_rhs.end() );
+        lit = Rewriter::rewrite( lit );
+        it->second[i] = lit;
+      }
+    }
+    for( std::map< Node, std::vector< Node > >::iterator it = d_curr_eqc.begin(); it != d_curr_eqc.end(); ++it ){
+      for( unsigned i=0; i<it->second.size(); i++ ){
+        Node n = it->second[i];
+        n = n.substitute( subs_lhs.begin(), subs_lhs.end(), subs_rhs.begin(), subs_rhs.end() );
+        n = Rewriter::rewrite( n  );
+        it->second[i] = n;
+      }
+    }
+  }
+
+  //remove unecessary assertions
+  for( std::map< TheoryId, std::vector< Node > >::iterator it = d_curr_asserts.begin(); it != d_curr_asserts.end(); ++it ){
+    std::vector< Node > akeep;
+    for( unsigned i=0; i<it->second.size(); i++ ){
+      Node n = it->second[i];
+      //must be an eligible term
+      if( isEligible( n ) ){
+        //must contain at least one variable
+        if( !d_prog_var[n].empty() ){
+          Trace("cbqi-proc") << "...literal[" << it->first << "] : " << n << std::endl;
+          akeep.push_back( n );
+        }else{
+          Trace("cbqi-proc") << "...remove literal from " << it->first << " : " << n << " since it contains no relevant variables." << std::endl;
+        }
+      }else{
+        Trace("cbqi-proc") << "...remove literal from " << it->first << " : " << n << " since it contains ineligible terms." << std::endl;
+      }
+    }
+    it->second.clear();
+    it->second.insert( it->second.end(), akeep.begin(), akeep.end() );
+  }
+
+  //remove duplicate terms from eqc
+  for( std::map< Node, std::vector< Node > >::iterator it = d_curr_eqc.begin(); it != d_curr_eqc.end(); ++it ){
+    std::vector< Node > new_eqc;
+    for( unsigned i=0; i<it->second.size(); i++ ){
+      if( std::find( new_eqc.begin(), new_eqc.end(), it->second[i] )==new_eqc.end() ){
+        new_eqc.push_back( it->second[i] );
+      }
+    }
+    it->second.clear();
+    it->second.insert( it->second.end(), new_eqc.begin(), new_eqc.end() );
+  }
+}
+
+void CegInstantiator::addToAuxVarSubstitution( std::vector< Node >& subs_lhs, std::vector< Node >& subs_rhs, Node l, Node r ) {
+  r = r.substitute( subs_lhs.begin(), subs_lhs.end(), subs_rhs.begin(), subs_rhs.end() );
+
+  std::vector< Node > cl;
+  cl.push_back( l );
+  std::vector< Node > cr;
+  cr.push_back( r );
+  for( unsigned i=0; i<subs_lhs.size(); i++ ){
+    Node nr = subs_rhs[i].substitute( cl.begin(), cl.end(), cr.begin(), cr.end() );
+    nr = Rewriter::rewrite( nr );
+    subs_rhs[i] = nr;
+  }
+
+  subs_lhs.push_back( l );
+  subs_rhs.push_back( r );
+}
+
+Node CegInstantiator::getModelValue( Node n ) {
+  return d_qe->getModel()->getValue( n );
+}
+
+void CegInstantiator::collectCeAtoms( Node n, std::map< Node, bool >& visited ) {
+  if( n.getKind()==FORALL ){
+    d_is_nested_quant = true;
+  }else if( visited.find( n )==visited.end() ){
+    visited[n] = true;
+    if( TermDb::isBoolConnectiveTerm( n ) ){
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        collectCeAtoms( n[i], visited );
+      }
+    }else{
+      if( std::find( d_ce_atoms.begin(), d_ce_atoms.end(), n )==d_ce_atoms.end() ){
+        Trace("cbqi-ce-atoms") << "CE atoms : " << n << std::endl;
+        d_ce_atoms.push_back( n );
+      }
+    }
+  }
+}
+
+struct sortCegVarOrder {
+  bool operator() (Node i, Node j) {
+    TypeNode it = i.getType();
+    TypeNode jt = j.getType();
+    return ( it!=jt && jt.isSubtypeOf( it ) ) || ( it==jt && i<j );
+  }
+};
+
+
+void CegInstantiator::registerCounterexampleLemma( std::vector< Node >& lems, std::vector< Node >& ce_vars ) {
+  //Assert( d_vars.empty() );
+  d_vars.clear();
+  d_vars.insert( d_vars.end(), ce_vars.begin(), ce_vars.end() );
+
+  //determine variable order: must do Reals before Ints
+  if( !d_vars.empty() ){
+    TypeNode tn0 = d_vars[0].getType();
+    bool doSort = false;
+    std::map< Node, unsigned > voo;
+    for( unsigned i=0; i<d_vars.size(); i++ ){
+      voo[d_vars[i]] = i;
+      d_var_order_index.push_back( 0 );
+      if( d_vars[i].getType()!=tn0 ){
+        doSort = true;
+      }
+    }
+    if( doSort ){
+      Trace("cbqi-debug") << "Sort variables based on ordering." << std::endl;
+      sortCegVarOrder scvo;
+      std::sort( d_vars.begin(), d_vars.end(), scvo );
+      Trace("cbqi-debug") << "Consider variables in this order : " << std::endl;
+      for( unsigned i=0; i<d_vars.size(); i++ ){
+        d_var_order_index[voo[d_vars[i]]] = i;
+        Trace("cbqi-debug") << "  " << d_vars[i] << " : " << d_vars[i].getType() << ", index was : " << voo[d_vars[i]] << std::endl;
+      }
+      Trace("cbqi-debug") << std::endl;
+    }else{
+      d_var_order_index.clear();
+    }
+  }
+
+  //remove ITEs
+  IteSkolemMap iteSkolemMap;
+  d_qe->getTheoryEngine()->getTermFormulaRemover()->run(lems, iteSkolemMap);
+  //Assert( d_aux_vars.empty() );
+  d_aux_vars.clear();
+  d_aux_eq.clear();
+  for(IteSkolemMap::iterator i = iteSkolemMap.begin(); i != iteSkolemMap.end(); ++i) {
+    Trace("cbqi-debug") << "  Auxiliary var (from ITE) : " << i->first << std::endl;
+    d_aux_vars.push_back( i->first );
+  }
+  for( unsigned i=0; i<lems.size(); i++ ){
+    Trace("cbqi-debug") << "Counterexample lemma (pre-rewrite)  " << i << " : " << lems[i] << std::endl;
+    Node rlem = lems[i];
+    rlem = Rewriter::rewrite( rlem );
+    Trace("cbqi-debug") << "Counterexample lemma (post-rewrite) " << i << " : " << rlem << std::endl;
+    //record the literals that imply auxiliary variables to be equal to terms
+    if( lems[i].getKind()==ITE && rlem.getKind()==ITE ){
+      if( lems[i][1].getKind()==EQUAL && lems[i][2].getKind()==EQUAL && lems[i][1][0]==lems[i][2][0] ){
+        if( std::find( d_aux_vars.begin(), d_aux_vars.end(), lems[i][1][0] )!=d_aux_vars.end() ){
+          Node v = lems[i][1][0];
+          for( unsigned r=1; r<=2; r++ ){
+            d_aux_eq[rlem[r]][v] = lems[i][r][1];
+            Trace("cbqi-debug") << "  " << rlem[r] << " implies " << v << " = " << lems[i][r][1] << std::endl;
+          }
+        }
+      }
+    }
+    /*else if( lems[i].getKind()==EQUAL && lems[i][0].getType().isBoolean() ){
+      //Boolean terms
+      if( std::find( d_aux_vars.begin(), d_aux_vars.end(), lems[i][0] )!=d_aux_vars.end() ){
+        Node v = lems[i][0];
+        d_aux_eq[rlem][v] = lems[i][1];
+         Trace("cbqi-debug") << "  " << rlem << " implies " << v << " = " << lems[i][1] << std::endl;
+      } 
+    }*/
+    lems[i] = rlem;
+  }
+  //collect atoms from all lemmas: we will only do bounds coming from original body
+  d_is_nested_quant = false;
+  std::map< Node, bool > visited;
+  for( unsigned i=0; i<lems.size(); i++ ){
+    collectCeAtoms( lems[i], visited );
+  }
+}
+
+
+Instantiator::Instantiator( QuantifiersEngine * qe, TypeNode tn ) : d_type( tn ){
+  d_closed_enum_type = qe->getTermDatabase()->isClosedEnumerableType( tn );
+}
+
+
+bool Instantiator::processEqualTerm( CegInstantiator * ci, SolvedForm& sf, Node pv, Node pv_coeff, Node n, unsigned effort ) {
+  return ci->doAddInstantiationInc( pv, n, pv_coeff, 0, sf, effort );
+}
+
+
diff --git a/src/theory/quantifiers/ceg_instantiator.h b/src/theory/quantifiers/ceg_instantiator.h
new file mode 100644
index 0000000..94d02de
--- /dev/null
+++ b/src/theory/quantifiers/ceg_instantiator.h
@@ -0,0 +1,219 @@
+/*********************                                                        */
+/*! \file ceg_instantiator.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief counterexample-guided quantifier instantiation
+ **/
+
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__CEG_INSTANTIATOR_H
+#define __CVC4__CEG_INSTANTIATOR_H
+
+#include "theory/quantifiers_engine.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+
+namespace arith {
+  class TheoryArith;
+}
+
+namespace quantifiers {
+
+class CegqiOutput {
+public:
+  virtual ~CegqiOutput() {}
+  virtual bool doAddInstantiation( std::vector< Node >& subs ) = 0;
+  virtual bool isEligibleForInstantiation( Node n ) = 0;
+  virtual bool addLemma( Node lem ) = 0;
+};
+
+class Instantiator;
+
+
+//solved form, involves substitution with coefficients
+class SolvedForm {
+public:
+  std::vector< Node > d_vars;
+  std::vector< Node > d_subs;
+  std::vector< Node > d_coeff;
+  std::vector< int > d_btyp;
+  std::vector< Node > d_has_coeff;
+  Node d_theta;
+  void copy( SolvedForm& sf ){
+    d_vars.insert( d_vars.end(), sf.d_vars.begin(), sf.d_vars.end() );
+    d_subs.insert( d_subs.end(), sf.d_subs.begin(), sf.d_subs.end() );
+    d_coeff.insert( d_coeff.end(), sf.d_coeff.begin(), sf.d_coeff.end() );
+    d_btyp.insert( d_btyp.end(), sf.d_btyp.begin(), sf.d_btyp.end() );
+    d_has_coeff.insert( d_has_coeff.end(), sf.d_has_coeff.begin(), sf.d_has_coeff.end() );
+    d_theta = sf.d_theta;
+  }
+  void push_back( Node pv, Node n, Node pv_coeff, int bt ){
+    d_vars.push_back( pv );
+    d_subs.push_back( n );
+    d_coeff.push_back( pv_coeff );
+    d_btyp.push_back( bt );
+    if( !pv_coeff.isNull() ){
+      d_has_coeff.push_back( pv );
+    }
+  }
+  void pop_back( Node pv, Node n, Node pv_coeff, int bt ){
+    d_vars.pop_back();
+    d_subs.pop_back();
+    d_coeff.pop_back();
+    d_btyp.pop_back();
+    if( !pv_coeff.isNull() ){
+      d_has_coeff.pop_back();
+    }
+  }
+};
+
+class CegInstantiator {
+private:
+  QuantifiersEngine * d_qe;
+  CegqiOutput * d_out;
+  bool d_use_vts_delta;
+  bool d_use_vts_inf;
+  //program variable contains cache
+  std::map< Node, std::map< Node, bool > > d_prog_var;
+  std::map< Node, bool > d_inelig;
+  //current assertions
+  std::map< TheoryId, std::vector< Node > > d_curr_asserts;
+  std::map< Node, std::vector< Node > > d_curr_eqc;
+  std::map< TypeNode, std::vector< Node > > d_curr_type_eqc;
+  //auxiliary variables
+  std::vector< Node > d_aux_vars;
+  //literals to equalities for aux vars
+  std::map< Node, std::map< Node, Node > > d_aux_eq;
+  //the CE variables
+  std::vector< Node > d_vars;
+  //index of variables reported in instantiation
+  std::vector< unsigned > d_var_order_index;
+  //atoms of the CE lemma
+  bool d_is_nested_quant;
+  std::vector< Node > d_ce_atoms;
+  //collect atoms
+  void collectCeAtoms( Node n, std::map< Node, bool >& visited );  
+private:
+  //map from variables to their instantiators
+  std::map< Node, Instantiator * > d_instantiator;
+  //cache of current substitutions tried between register/unregister
+  std::map< Node, std::map< Node, std::map< Node, bool > > > d_curr_subs_proc;
+  std::map< Node, unsigned > d_curr_index;
+  //stack of temporary variables we are solving (e.g. subfields of datatypes)
+  std::vector< Node > d_stack_vars;
+  //used instantiators 
+  std::map< Node, Instantiator * > d_active_instantiators;
+  //register variable
+  void registerInstantiationVariable( Node v, unsigned index );
+  void unregisterInstantiationVariable( Node v );
+private:
+  //for adding instantiations during check
+  void computeProgVars( Node n );
+  // effort=0 : do not use model value, 1: use model value, 2: one must use model value
+  bool doAddInstantiation( SolvedForm& sf, unsigned i, unsigned effort );
+  bool doAddInstantiation( std::vector< Node >& subs, std::vector< Node >& vars );
+  //process
+  void processAssertions();
+  void addToAuxVarSubstitution( std::vector< Node >& subs_lhs, std::vector< Node >& subs_rhs, Node l, Node r );
+public:
+  CegInstantiator( QuantifiersEngine * qe, CegqiOutput * out, bool use_vts_delta = true, bool use_vts_inf = true );
+  virtual ~CegInstantiator();
+  //check : add instantiations based on valuation of d_vars
+  bool check();
+  //presolve for quantified formula
+  void presolve( Node q );
+  //register the counterexample lemma (stored in lems), modify vector
+  void registerCounterexampleLemma( std::vector< Node >& lems, std::vector< Node >& ce_vars );
+  //output
+  CegqiOutput * getOutput() { return d_out; }
+  //get quantifiers engine
+  QuantifiersEngine* getQuantifiersEngine() { return d_qe; }
+  
+//interface for instantiators
+public:
+  void pushStackVariable( Node v );
+  void popStackVariable();
+  bool doAddInstantiationInc( Node pv, Node n, Node pv_coeff, int bt, SolvedForm& sf, unsigned effort );
+  Node getModelValue( Node n );
+  // TODO: move to solved form?
+  Node applySubstitution( TypeNode tn, Node n, SolvedForm& sf, Node& pv_coeff, bool try_coeff = true ) {
+    return applySubstitution( tn, n, sf.d_subs, sf.d_coeff, sf.d_has_coeff, sf.d_vars, pv_coeff, try_coeff );
+  }
+  Node applySubstitution( TypeNode tn, Node n, std::vector< Node >& subs, std::vector< Node >& coeff, std::vector< Node >& has_coeff,
+                          std::vector< Node >& vars, Node& pv_coeff, bool try_coeff = true );
+public:
+  unsigned getNumCEAtoms() { return d_ce_atoms.size(); }
+  Node getCEAtom( unsigned i ) { return d_ce_atoms[i]; }
+  // is eligible 
+  bool isEligible( Node n );
+  // has variable 
+  bool hasVariable( Node n, Node pv );
+  bool useVtsDelta() { return d_use_vts_delta; }
+  bool useVtsInfinity() { return d_use_vts_inf; }
+  bool hasNestedQuantification() { return d_is_nested_quant; }
+};
+
+
+
+// an instantiator for individual variables
+//   will make calls into CegInstantiator::doAddInstantiationInc
+class Instantiator {
+protected:
+  TypeNode d_type;
+  bool d_closed_enum_type;
+public:
+  Instantiator( QuantifiersEngine * qe, TypeNode tn );
+  virtual ~Instantiator(){}
+  virtual void reset( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort ) {}
+  
+  //called when pv_coeff * pv = n, and n is eligible for instantiation
+  virtual bool processEqualTerm( CegInstantiator * ci, SolvedForm& sf, Node pv, Node pv_coeff, Node n, unsigned effort );
+  //eqc is the equivalence class of pv
+  virtual bool processEqualTerms( CegInstantiator * ci, SolvedForm& sf, Node pv, std::vector< Node >& eqc, unsigned effort ) { return false; }
+  
+  //term_coeffs.size() = terms.size() = 2, called when term_coeff[0] * terms[0] = term_coeff[1] * terms[1], terms are eligible, and at least one of these terms contains pv
+  virtual bool hasProcessEquality( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort ) { return false; }
+  virtual bool processEquality( CegInstantiator * ci, SolvedForm& sf, Node pv, std::vector< Node >& term_coeffs, std::vector< Node >& terms, unsigned effort ) { return false; }
+  
+  //called when assertion lit holds.  note that lit is unsubstituted, first must substitute/solve/check eligible
+  virtual bool hasProcessAssertion( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort ) { return false; }
+  virtual bool processAssertion( CegInstantiator * ci, SolvedForm& sf, Node pv, Node lit, unsigned effort ) { return false; }
+  virtual bool processAssertions( CegInstantiator * ci, SolvedForm& sf, Node pv, std::vector< Node >& lits, unsigned effort ) { return false; }
+  
+  //do we allow instantiation for the model value of pv
+  virtual bool useModelValue( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort ) { return false; }
+  virtual bool allowModelValue( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort ) { return d_closed_enum_type; }
+  
+  //do we need to postprocess the solved form? did we successfully postprocess
+  virtual bool needsPostProcessInstantiation( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort ) { return false; }
+  virtual bool postProcessInstantiation( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort ) { return true; }
+  
+  /** Identify this module (for debugging) */
+  virtual std::string identify() const { return "Default"; }
+};
+
+class ModelValueInstantiator : public Instantiator {
+public:
+  ModelValueInstantiator( QuantifiersEngine * qe, TypeNode tn ) : Instantiator( qe, tn ){}
+  virtual ~ModelValueInstantiator(){}
+  bool useModelValue( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort ) { return true; }
+  std::string identify() const { return "ModelValue"; }
+};
+
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/ceg_t_instantiator.cpp b/src/theory/quantifiers/ceg_t_instantiator.cpp
new file mode 100644
index 0000000..3282872
--- /dev/null
+++ b/src/theory/quantifiers/ceg_t_instantiator.cpp
@@ -0,0 +1,868 @@
+/*********************                                                        */
+/*! \file ceg_t_instantiator.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of theory-specific counterexample-guided quantifier instantiation
+ **/
+ 
+#include "theory/quantifiers/ceg_t_instantiator.h"
+
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/quantifiers_rewriter.h"
+#include "theory/quantifiers/trigger.h"
+
+#include "theory/arith/partial_model.h"
+#include "theory/arith/theory_arith.h"
+#include "theory/arith/theory_arith_private.h"
+#include "theory/bv/theory_bv_utils.h"
+#include "util/bitvector.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+
+Node ArithInstantiator::getModelBasedProjectionValue( CegInstantiator * ci, Node e, Node t, bool isLower, Node c, Node me, Node mt, Node theta, Node inf_coeff, Node delta_coeff ) {
+  Node val = t;
+  Trace("cbqi-bound2") << "Value : " << val << std::endl;
+  Assert( !e.getType().isInteger() || t.getType().isInteger() );
+  Assert( !e.getType().isInteger() || mt.getType().isInteger() );
+  //add rho value
+  //get the value of c*e
+  Node ceValue = me;
+  Node new_theta = theta;
+  if( !c.isNull() ){
+    Assert( c.getType().isInteger() );
+    ceValue = NodeManager::currentNM()->mkNode( MULT, ceValue, c );
+    ceValue = Rewriter::rewrite( ceValue );
+    if( new_theta.isNull() ){
+      new_theta = c;
+    }else{
+      new_theta = NodeManager::currentNM()->mkNode( MULT, new_theta, c );
+      new_theta = Rewriter::rewrite( new_theta );
+    }
+    Trace("cbqi-bound2") << "...c*e = " << ceValue << std::endl;
+    Trace("cbqi-bound2") << "...theta = " << new_theta << std::endl;
+  }
+  if( !new_theta.isNull() && e.getType().isInteger() ){
+    Node rho;
+    //if( !mt.getType().isInteger() ){
+      //round up/down
+      //mt = NodeManager::currentNM()->mkNode(
+    //}
+    if( isLower ){
+      rho = NodeManager::currentNM()->mkNode( MINUS, ceValue, mt );
+    }else{
+      rho = NodeManager::currentNM()->mkNode( MINUS, mt, ceValue );
+    }
+    rho = Rewriter::rewrite( rho );
+    Trace("cbqi-bound2") << "...rho = " << me << " - " << mt << " = " << rho << std::endl;
+    Trace("cbqi-bound2") << "..." << rho << " mod " << new_theta << " = ";
+    rho = NodeManager::currentNM()->mkNode( INTS_MODULUS_TOTAL, rho, new_theta );
+    rho = Rewriter::rewrite( rho );
+    Trace("cbqi-bound2") << rho << std::endl;
+    Kind rk = isLower ? PLUS : MINUS;
+    val = NodeManager::currentNM()->mkNode( rk, val, rho );
+    val = Rewriter::rewrite( val );
+    Trace("cbqi-bound2") << "(after rho) : " << val << std::endl;
+  }
+  if( !inf_coeff.isNull() ){
+    Assert( !d_vts_sym[0].isNull() );
+    val = NodeManager::currentNM()->mkNode( PLUS, val, NodeManager::currentNM()->mkNode( MULT, inf_coeff, d_vts_sym[0] ) );
+    val = Rewriter::rewrite( val );
+  }
+  if( !delta_coeff.isNull() ){
+    //create delta here if necessary
+    val = NodeManager::currentNM()->mkNode( PLUS, val, NodeManager::currentNM()->mkNode( MULT, delta_coeff, ci->getQuantifiersEngine()->getTermDatabase()->getVtsDelta() ) );
+    val = Rewriter::rewrite( val );
+  }
+  return val;
+}
+
+//this isolates the atom into solved form
+//     veq_c * pv <> val + vts_coeff_delta * delta + vts_coeff_inf * inf
+//  ensures val is Int if pv is Int, and val does not contain vts symbols
+int ArithInstantiator::solve_arith( CegInstantiator * ci, Node pv, Node atom, Node& veq_c, Node& val, Node& vts_coeff_inf, Node& vts_coeff_delta ) {
+  int ires = 0;
+  Trace("cbqi-inst-debug") << "isolate for " << pv << " in " << atom << std::endl;
+  std::map< Node, Node > msum;
+  if( QuantArith::getMonomialSumLit( atom, msum ) ){
+    Trace("cbqi-inst-debug") << "got monomial sum: " << std::endl;
+    if( Trace.isOn("cbqi-inst-debug") ){
+      QuantArith::debugPrintMonomialSum( msum, "cbqi-inst-debug" );
+    }
+    TypeNode pvtn = pv.getType();
+    //remove vts symbols from polynomial
+    Node vts_coeff[2];
+    for( unsigned t=0; t<2; t++ ){
+      if( !d_vts_sym[t].isNull() ){
+        std::map< Node, Node >::iterator itminf = msum.find( d_vts_sym[t] );
+        if( itminf!=msum.end() ){
+          vts_coeff[t] = itminf->second;
+          if( vts_coeff[t].isNull() ){
+            vts_coeff[t] = NodeManager::currentNM()->mkConst( Rational( 1 ) );
+          }
+          //negate if coefficient on variable is positive
+          std::map< Node, Node >::iterator itv = msum.find( pv );
+          if( itv!=msum.end() ){
+            //multiply by the coefficient we will isolate for
+            if( itv->second.isNull() ){
+              vts_coeff[t] = QuantArith::negate(vts_coeff[t]);
+            }else{
+              if( !pvtn.isInteger() ){
+                vts_coeff[t] = NodeManager::currentNM()->mkNode( MULT, NodeManager::currentNM()->mkConst( Rational(-1) / itv->second.getConst<Rational>() ), vts_coeff[t] );
+                vts_coeff[t] = Rewriter::rewrite( vts_coeff[t] );
+              }else if( itv->second.getConst<Rational>().sgn()==1 ){
+                vts_coeff[t] = QuantArith::negate(vts_coeff[t]);
+              }
+            }
+          }
+          Trace("cbqi-inst-debug") << "vts[" << t << "] coefficient is " << vts_coeff[t] << std::endl;
+          msum.erase( d_vts_sym[t] );
+        }
+      }
+    }
+
+    ires = QuantArith::isolate( pv, msum, veq_c, val, atom.getKind() );
+    if( ires!=0 ){
+      Node realPart;
+      if( Trace.isOn("cbqi-inst-debug") ){
+        Trace("cbqi-inst-debug") << "Isolate : ";
+        if( !veq_c.isNull() ){
+          Trace("cbqi-inst-debug") << veq_c << " * ";
+        }
+        Trace("cbqi-inst-debug") << pv << " " << atom.getKind() << " " << val << std::endl;
+      }
+      if( options::cbqiAll() ){
+        // when not pure LIA/LRA, we must check whether the lhs contains pv
+        if( TermDb::containsTerm( val, pv ) ){
+          Trace("cbqi-inst-debug") << "fail : contains bad term" << std::endl;
+          return 0;
+        }
+      }
+      if( pvtn.isInteger() && ( ( !veq_c.isNull() && !veq_c.getType().isInteger() ) || !val.getType().isInteger() ) ){
+        //redo, split integer/non-integer parts
+        bool useCoeff = false;
+        Integer coeff = ci->getQuantifiersEngine()->getTermDatabase()->d_one.getConst<Rational>().getNumerator();
+        for( std::map< Node, Node >::iterator it = msum.begin(); it != msum.end(); ++it ){
+          if( it->first.isNull() || it->first.getType().isInteger() ){
+            if( !it->second.isNull() ){
+              coeff = coeff.lcm( it->second.getConst<Rational>().getDenominator() );
+              useCoeff = true;
+            }
+          }
+        }
+        //multiply everything by this coefficient
+        Node rcoeff = NodeManager::currentNM()->mkConst( Rational( coeff ) );
+        std::vector< Node > real_part;
+        for( std::map< Node, Node >::iterator it = msum.begin(); it != msum.end(); ++it ){
+          if( useCoeff ){
+            if( it->second.isNull() ){
+              msum[it->first] = rcoeff;
+            }else{
+              msum[it->first] = Rewriter::rewrite( NodeManager::currentNM()->mkNode( MULT, it->second, rcoeff ) );
+            }
+          }
+          if( !it->first.isNull() && !it->first.getType().isInteger() ){
+            real_part.push_back( msum[it->first].isNull() ? it->first : NodeManager::currentNM()->mkNode( MULT, msum[it->first], it->first ) );
+          }
+        }
+        //remove delta  TODO: check this
+        vts_coeff[1] = Node::null();
+        //multiply inf
+        if( !vts_coeff[0].isNull() ){
+          vts_coeff[0] = Rewriter::rewrite( NodeManager::currentNM()->mkNode( MULT, rcoeff, vts_coeff[0] ) );
+        }
+        realPart = real_part.empty() ? ci->getQuantifiersEngine()->getTermDatabase()->d_zero : ( real_part.size()==1 ? real_part[0] : NodeManager::currentNM()->mkNode( PLUS, real_part ) );
+        Assert( ci->getOutput()->isEligibleForInstantiation( realPart ) );
+        //re-isolate
+        Trace("cbqi-inst-debug") << "Re-isolate..." << std::endl;
+        ires = QuantArith::isolate( pv, msum, veq_c, val, atom.getKind() );
+        Trace("cbqi-inst-debug") << "Isolate for mixed Int/Real : " << veq_c << " * " << pv << " " << atom.getKind() << " " << val << std::endl;
+        Trace("cbqi-inst-debug") << "                 real part : " << realPart << std::endl;
+        if( ires!=0 ){
+          int ires_use = ( msum[pv].isNull() || msum[pv].getConst<Rational>().sgn()==1 ) ? 1 : -1;
+          val = Rewriter::rewrite( NodeManager::currentNM()->mkNode( ires_use==-1 ? PLUS : MINUS,
+                                    NodeManager::currentNM()->mkNode( ires_use==-1 ? MINUS : PLUS, val, realPart ),
+                                    NodeManager::currentNM()->mkNode( TO_INTEGER, realPart ) ) );  //TODO: round up for upper bounds?
+          Trace("cbqi-inst-debug") << "result : " << val << std::endl;
+          Assert( val.getType().isInteger() );
+        }
+      }
+    }
+    vts_coeff_inf = vts_coeff[0];
+    vts_coeff_delta = vts_coeff[1];
+    Trace("cbqi-inst-debug") << "Return " << veq_c << " * " << pv << " " << atom.getKind() << " " << val << ", vts = (" << vts_coeff_inf << ", " << vts_coeff_delta << ")" << std::endl;
+  }else{
+    Trace("cbqi-inst-debug") << "fail : could not get monomial sum" << std::endl;
+  }
+  return ires;
+}
+
+void ArithInstantiator::reset( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort ) {
+  d_vts_sym[0] = ci->getQuantifiersEngine()->getTermDatabase()->getVtsInfinity( d_type, false, false );
+  d_vts_sym[1] = ci->getQuantifiersEngine()->getTermDatabase()->getVtsDelta( false, false );
+  for( unsigned i=0; i<2; i++ ){
+    d_mbp_bounds[i].clear();
+    d_mbp_coeff[i].clear();
+    for( unsigned j=0; j<2; j++ ){
+      d_mbp_vts_coeff[i][j].clear();
+    }
+    d_mbp_lit[i].clear();
+  }
+}
+
+bool ArithInstantiator::processEquality( CegInstantiator * ci, SolvedForm& sf, Node pv, std::vector< Node >& term_coeffs, std::vector< Node >& terms, unsigned effort ) {
+  Node eq_lhs = terms[0];
+  Node eq_rhs = terms[1];
+  Node lhs_coeff = term_coeffs[0];
+  Node rhs_coeff = term_coeffs[1];
+  //make the same coefficient
+  if( rhs_coeff!=lhs_coeff ){
+    if( !rhs_coeff.isNull() ){
+      Trace("cbqi-inst-debug") << "...mult lhs by " << rhs_coeff << std::endl;
+      eq_lhs = NodeManager::currentNM()->mkNode( MULT, rhs_coeff, eq_lhs );
+      eq_lhs = Rewriter::rewrite( eq_lhs );
+    }
+    if( !lhs_coeff.isNull() ){
+      Trace("cbqi-inst-debug") << "...mult rhs by " << lhs_coeff << std::endl;
+      eq_rhs = NodeManager::currentNM()->mkNode( MULT, lhs_coeff, eq_rhs );
+      eq_rhs = Rewriter::rewrite( eq_rhs );
+    }
+  }
+  Node eq = eq_lhs.eqNode( eq_rhs );
+  eq = Rewriter::rewrite( eq );
+  Node val;
+  Node veq_c;
+  Node vts_coeff_inf;
+  Node vts_coeff_delta;
+  //isolate pv in the equality
+  int ires = solve_arith( ci, pv, eq, veq_c, val, vts_coeff_inf, vts_coeff_delta );
+  if( ires!=0 ){
+    if( ci->doAddInstantiationInc( pv, val, veq_c, 0, sf, effort ) ){
+      return true;
+    }
+  }
+
+  return false;
+}
+
+bool ArithInstantiator::processAssertion( CegInstantiator * ci, SolvedForm& sf, Node pv, Node lit, unsigned effort ) {
+  Trace("cbqi-inst-debug2") << "  look at " << lit << std::endl;
+  Node atom = lit.getKind()==NOT ? lit[0] : lit;
+  bool pol = lit.getKind()!=NOT;
+  //arithmetic inequalities and disequalities
+  if( atom.getKind()==GEQ || ( atom.getKind()==EQUAL && !pol && atom[0].getType().isReal() ) ){
+    Assert( atom.getKind()!=GEQ || atom[1].isConst() );
+    Node atom_lhs;
+    Node atom_rhs;
+    if( atom.getKind()==GEQ ){
+      atom_lhs = atom[0];
+      atom_rhs = atom[1];
+    }else{
+      atom_lhs = NodeManager::currentNM()->mkNode( MINUS, atom[0], atom[1] );
+      atom_lhs = Rewriter::rewrite( atom_lhs );
+      atom_rhs = ci->getQuantifiersEngine()->getTermDatabase()->d_zero;
+    }
+    //must be an eligible term
+    if( ci->isEligible( atom_lhs ) ){
+      //apply substitution to LHS of atom
+      Node atom_lhs_coeff;
+      atom_lhs = ci->applySubstitution( d_type, atom_lhs, sf, atom_lhs_coeff );
+      if( !atom_lhs.isNull() ){
+        if( !atom_lhs_coeff.isNull() ){
+          atom_rhs = Rewriter::rewrite( NodeManager::currentNM()->mkNode( MULT, atom_lhs_coeff, atom_rhs ) );
+        }
+      }
+      //if it contains pv, not infinity
+      if( !atom_lhs.isNull() && ci->hasVariable( atom_lhs, pv ) ){
+        Node pv_value = ci->getModelValue( pv );
+        Node satom = NodeManager::currentNM()->mkNode( atom.getKind(), atom_lhs, atom_rhs );
+        //cannot contain infinity?
+        Trace("cbqi-inst-debug") << "..[3] From assertion : " << atom << ", pol = " << pol << std::endl;
+        Trace("cbqi-inst-debug") << "         substituted : " << satom << ", pol = " << pol << std::endl;
+        Node vts_coeff_inf;
+        Node vts_coeff_delta;
+        Node val;
+        Node veq_c;
+        //isolate pv in the inequality
+        int ires = solve_arith( ci, pv, satom, veq_c, val, vts_coeff_inf, vts_coeff_delta );
+        if( ires!=0 ){
+          //disequalities are either strict upper or lower bounds
+          unsigned rmax = ( atom.getKind()==GEQ || options::cbqiModel() ) ? 1 : 2;
+          for( unsigned r=0; r<rmax; r++ ){
+            int uires = ires;
+            Node uval = val;
+            if( atom.getKind()==GEQ ){
+              //push negation downwards
+              if( !pol ){
+                uires = -ires;
+                if( d_type.isInteger() ){
+                  uval = NodeManager::currentNM()->mkNode( PLUS, val, NodeManager::currentNM()->mkConst( Rational( uires ) ) );
+                  uval = Rewriter::rewrite( uval );
+                }else{
+                  Assert( d_type.isReal() );
+                  //now is strict inequality
+                  uires = uires*2;
+                }
+              }
+            }else{
+              bool is_upper;
+              if( options::cbqiModel() ){
+                // disequality is a disjunction : only consider the bound in the direction of the model
+                //first check if there is an infinity...
+                if( !vts_coeff_inf.isNull() ){
+                  //coefficient or val won't make a difference, just compare with zero
+                  Trace("cbqi-inst-debug") << "Disequality : check infinity polarity " << vts_coeff_inf << std::endl;
+                  Assert( vts_coeff_inf.isConst() );
+                  is_upper = ( vts_coeff_inf.getConst<Rational>().sgn()==1 );
+                }else{
+                  Node rhs_value = ci->getModelValue( val );
+                  Node lhs_value = pv_value;
+                  if( !veq_c.isNull() ){
+                    lhs_value = NodeManager::currentNM()->mkNode( MULT, lhs_value, veq_c );
+                    lhs_value = Rewriter::rewrite( lhs_value );
+                  }
+                  Trace("cbqi-inst-debug") << "Disequality : check model values " << lhs_value << " " << rhs_value << std::endl;
+                  Assert( lhs_value!=rhs_value );
+                  Node cmp = NodeManager::currentNM()->mkNode( GEQ, lhs_value, rhs_value );
+                  cmp = Rewriter::rewrite( cmp );
+                  Assert( cmp.isConst() );
+                  is_upper = ( cmp!=ci->getQuantifiersEngine()->getTermDatabase()->d_true );
+                }
+              }else{
+                is_upper = (r==0);
+              }
+              Assert( atom.getKind()==EQUAL && !pol );
+              if( d_type.isInteger() ){
+                uires = is_upper ? -1 : 1;
+                uval = NodeManager::currentNM()->mkNode( PLUS, val, NodeManager::currentNM()->mkConst( Rational( uires ) ) );
+                uval = Rewriter::rewrite( uval );
+              }else{
+                Assert( d_type.isReal() );
+                uires = is_upper ? -2 : 2;
+              }
+            }
+            Trace("cbqi-bound-inf") << "From " << lit << ", got : ";
+            if( !veq_c.isNull() ){
+              Trace("cbqi-bound-inf") << veq_c << " * ";
+            }
+            Trace("cbqi-bound-inf") << pv << " -> " << uval << ", styp = " << uires << std::endl;
+            //take into account delta
+            if( ci->useVtsDelta() && ( uires==2 || uires==-2 ) ){
+              if( options::cbqiModel() ){
+                Node delta_coeff = NodeManager::currentNM()->mkConst( Rational( uires > 0 ? 1 : -1 ) );
+                if( vts_coeff_delta.isNull() ){
+                  vts_coeff_delta = delta_coeff;
+                }else{
+                  vts_coeff_delta = NodeManager::currentNM()->mkNode( PLUS, vts_coeff_delta, delta_coeff );
+                  vts_coeff_delta = Rewriter::rewrite( vts_coeff_delta );
+                }
+              }else{
+                Node delta = ci->getQuantifiersEngine()->getTermDatabase()->getVtsDelta();
+                uval = NodeManager::currentNM()->mkNode( uires==2 ? PLUS : MINUS, uval, delta );
+                uval = Rewriter::rewrite( uval );
+              }
+            }
+            if( options::cbqiModel() ){
+              //just store bounds, will choose based on tighest bound
+              unsigned index = uires>0 ? 0 : 1;
+              d_mbp_bounds[index].push_back( uval );
+              d_mbp_coeff[index].push_back( veq_c );
+              Trace("cbqi-inst-debug") << "Store bound " << index << " " << uval << " " << veq_c << " " << vts_coeff_inf << " " << vts_coeff_delta << " " << lit << std::endl;
+              for( unsigned t=0; t<2; t++ ){
+                d_mbp_vts_coeff[index][t].push_back( t==0 ? vts_coeff_inf : vts_coeff_delta );
+              }
+              d_mbp_lit[index].push_back( lit );
+            }else{
+              //try this bound
+              if( ci->doAddInstantiationInc( pv, uval, veq_c, uires>0 ? 1 : -1, sf, effort ) ){
+                return true;
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+
+
+  return false;
+}
+
+bool ArithInstantiator::processAssertions( CegInstantiator * ci, SolvedForm& sf, Node pv, std::vector< Node >& lits, unsigned effort ) {
+ if( options::cbqiModel() ){
+    bool use_inf = ci->useVtsInfinity() && ( d_type.isInteger() ? options::cbqiUseInfInt() : options::cbqiUseInfReal() );
+    bool upper_first = false;
+    if( options::cbqiMinBounds() ){
+      upper_first = d_mbp_bounds[1].size()<d_mbp_bounds[0].size();
+    }
+    int best_used[2];
+    std::vector< Node > t_values[3];
+    Node zero = ci->getQuantifiersEngine()->getTermDatabase()->d_zero;
+    Node one = ci->getQuantifiersEngine()->getTermDatabase()->d_one;
+    Node pv_value = ci->getModelValue( pv );
+    //try optimal bounds
+    for( unsigned r=0; r<2; r++ ){
+      int rr = upper_first ? (1-r) : r;
+      best_used[rr] = -1;
+      if( d_mbp_bounds[rr].empty() ){
+        if( use_inf ){
+          Trace("cbqi-bound") << "No " << ( rr==0 ? "lower" : "upper" ) << " bounds for " << pv << " (type=" << d_type << ")" << std::endl;
+          //no bounds, we do +- infinity
+          Node val = ci->getQuantifiersEngine()->getTermDatabase()->getVtsInfinity( d_type );
+          //TODO : rho value for infinity?
+          if( rr==0 ){
+            val = NodeManager::currentNM()->mkNode( UMINUS, val );
+            val = Rewriter::rewrite( val );
+          }
+          if( ci->doAddInstantiationInc( pv, val, Node::null(), 0, sf, effort ) ){
+            return true;
+          }
+        }
+      }else{
+        Trace("cbqi-bound") << ( rr==0 ? "Lower" : "Upper" ) << " bounds for " << pv << " (type=" << d_type << ") : " << std::endl;
+        int best = -1;
+        Node best_bound_value[3];
+        for( unsigned j=0; j<d_mbp_bounds[rr].size(); j++ ){
+          Node value[3];
+          if( Trace.isOn("cbqi-bound") ){
+            Assert( !d_mbp_bounds[rr][j].isNull() );
+            Trace("cbqi-bound") << "  " << j << ": " << d_mbp_bounds[rr][j];
+            if( !d_mbp_vts_coeff[rr][0][j].isNull() ){
+              Trace("cbqi-bound") << " (+ " << d_mbp_vts_coeff[rr][0][j] << " * INF)";
+            }
+            if( !d_mbp_vts_coeff[rr][1][j].isNull() ){
+              Trace("cbqi-bound") << " (+ " << d_mbp_vts_coeff[rr][1][j] << " * DELTA)";
+            }
+            if( !d_mbp_coeff[rr][j].isNull() ){
+              Trace("cbqi-bound") << " (div " << d_mbp_coeff[rr][j] << ")";
+            }
+            Trace("cbqi-bound") << ", value = ";
+          }
+          t_values[rr].push_back( Node::null() );
+          //check if it is better than the current best bound : lexicographic order infinite/finite/infinitesimal parts
+          bool new_best = true;
+          for( unsigned t=0; t<3; t++ ){
+            //get the value
+            if( t==0 ){
+              value[0] = d_mbp_vts_coeff[rr][0][j];
+              if( !value[0].isNull() ){
+                Trace("cbqi-bound") << "( " << value[0] << " * INF ) + ";
+              }else{
+                value[0] = zero;
+              }
+            }else if( t==1 ){
+              Node t_value = ci->getModelValue( d_mbp_bounds[rr][j] );
+              t_values[rr][j] = t_value;
+              value[1] = t_value;
+              Trace("cbqi-bound") << value[1];
+            }else{
+              value[2] = d_mbp_vts_coeff[rr][1][j];
+              if( !value[2].isNull() ){
+                Trace("cbqi-bound") << " + ( " << value[2] << " * DELTA )";
+              }else{
+                value[2] = zero;
+              }
+            }
+            //multiply by coefficient
+            if( value[t]!=zero && !d_mbp_coeff[rr][j].isNull() ){
+              Assert( d_mbp_coeff[rr][j].isConst() );
+              value[t] = NodeManager::currentNM()->mkNode( MULT, NodeManager::currentNM()->mkConst( Rational(1) / d_mbp_coeff[rr][j].getConst<Rational>() ), value[t] );
+              value[t] = Rewriter::rewrite( value[t] );
+            }
+            //check if new best
+            if( best!=-1 ){
+              Assert( !value[t].isNull() && !best_bound_value[t].isNull() );
+              if( value[t]!=best_bound_value[t] ){
+                Kind k = rr==0 ? GEQ : LEQ;
+                Node cmp_bound = NodeManager::currentNM()->mkNode( k, value[t], best_bound_value[t] );
+                cmp_bound = Rewriter::rewrite( cmp_bound );
+                if( cmp_bound!=ci->getQuantifiersEngine()->getTermDatabase()->d_true ){
+                  new_best = false;
+                  break;
+                }
+              }
+            }
+          }
+          Trace("cbqi-bound") << std::endl;
+          if( new_best ){
+            for( unsigned t=0; t<3; t++ ){
+              best_bound_value[t] = value[t];
+            }
+            best = j;
+          }
+        }
+        if( best!=-1 ){
+          Trace("cbqi-bound") << "...best bound is " << best << " : ";
+          if( best_bound_value[0]!=zero ){
+            Trace("cbqi-bound") << "( " << best_bound_value[0] << " * INF ) + ";
+          }
+          Trace("cbqi-bound") << best_bound_value[1];
+          if( best_bound_value[2]!=zero ){
+            Trace("cbqi-bound") << " + ( " << best_bound_value[2] << " * DELTA )";
+          }
+          Trace("cbqi-bound") << std::endl;
+          best_used[rr] = best;
+          //if using cbqiMidpoint, only add the instance based on one bound if the bound is non-strict
+          if( !options::cbqiMidpoint() || d_type.isInteger() || d_mbp_vts_coeff[rr][1][best].isNull() ){
+            Node val = d_mbp_bounds[rr][best];
+            val = getModelBasedProjectionValue( ci, pv, val, rr==0, d_mbp_coeff[rr][best], pv_value, t_values[rr][best], sf.d_theta,
+                                                d_mbp_vts_coeff[rr][0][best], d_mbp_vts_coeff[rr][1][best] );
+            if( !val.isNull() ){
+              if( ci->doAddInstantiationInc( pv, val, d_mbp_coeff[rr][best], rr==0 ? 1 : -1, sf, effort ) ){
+                return true;
+              }
+            }
+          }
+        }
+      }
+    }
+    //if not using infinity, use model value of zero
+    if( !use_inf && d_mbp_bounds[0].empty() && d_mbp_bounds[1].empty() ){
+      Node val = zero;
+      Node c; //null (one) coefficient
+      val = getModelBasedProjectionValue( ci, pv, val, true, c, pv_value, zero, sf.d_theta, Node::null(), Node::null() );
+      if( !val.isNull() ){
+        if( ci->doAddInstantiationInc( pv, val, c, 0, sf, effort ) ){
+          return true;
+        }
+      }
+    }
+    if( options::cbqiMidpoint() && !d_type.isInteger() ){
+      Node vals[2];
+      bool bothBounds = true;
+      Trace("cbqi-bound") << "Try midpoint of bounds..." << std::endl;
+      for( unsigned rr=0; rr<2; rr++ ){
+        int best = best_used[rr];
+        if( best==-1 ){
+          bothBounds = false;
+        }else{
+          vals[rr] = d_mbp_bounds[rr][best];
+          vals[rr] = getModelBasedProjectionValue( ci, pv, vals[rr], rr==0, Node::null(), pv_value, t_values[rr][best], sf.d_theta,
+                                                   d_mbp_vts_coeff[rr][0][best], Node::null() );
+        }
+        Trace("cbqi-bound") << "Bound : " << vals[rr] << std::endl;
+      }
+      Node val;
+      if( bothBounds ){
+        Assert( !vals[0].isNull() && !vals[1].isNull() );
+        if( vals[0]==vals[1] ){
+          val = vals[0];
+        }else{
+          val = NodeManager::currentNM()->mkNode( MULT, NodeManager::currentNM()->mkNode( PLUS, vals[0], vals[1] ),
+                                                        NodeManager::currentNM()->mkConst( Rational(1)/Rational(2) ) );
+          val = Rewriter::rewrite( val );
+        }
+      }else{
+        if( !vals[0].isNull() ){
+          val = NodeManager::currentNM()->mkNode( PLUS, vals[0], one );
+          val = Rewriter::rewrite( val );
+        }else if( !vals[1].isNull() ){
+          val = NodeManager::currentNM()->mkNode( MINUS, vals[1], one );
+          val = Rewriter::rewrite( val );
+        }
+      }
+      Trace("cbqi-bound") << "Midpoint value : " << val << std::endl;
+      if( !val.isNull() ){
+        if( ci->doAddInstantiationInc( pv, val, Node::null(), 0, sf, effort ) ){
+          return true;
+        }
+      }
+    }
+    //generally should not make it to this point FIXME: write proper assertion
+    //Assert( ( ci->hasNestedQuantification() && !options::cbqiNestedQE() ) || options::cbqiAll() );
+    
+    if( options::cbqiNopt() ){
+      //try non-optimal bounds (heuristic, may help when nested quantification) ?
+      Trace("cbqi-bound") << "Try non-optimal bounds..." << std::endl;
+      for( unsigned r=0; r<2; r++ ){
+        int rr = upper_first ? (1-r) : r;
+        for( unsigned j=0; j<d_mbp_bounds[rr].size(); j++ ){
+          if( (int)j!=best_used[rr] && ( !options::cbqiMidpoint() || d_mbp_vts_coeff[rr][1][j].isNull() ) ){
+            Node val = getModelBasedProjectionValue( ci, pv, d_mbp_bounds[rr][j], rr==0, d_mbp_coeff[rr][j], pv_value, t_values[rr][j], sf.d_theta,
+                                                     d_mbp_vts_coeff[rr][0][j], d_mbp_vts_coeff[rr][1][j] );
+            if( !val.isNull() ){
+              if( ci->doAddInstantiationInc( pv, val, d_mbp_coeff[rr][j], rr==0 ? 1 : -1, sf, effort ) ){
+                return true;
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  return false;
+}
+
+bool ArithInstantiator::needsPostProcessInstantiation( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort ) {
+  return std::find( sf.d_has_coeff.begin(), sf.d_has_coeff.end(), pv )!=sf.d_has_coeff.end();
+}
+
+bool ArithInstantiator::postProcessInstantiation( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort ) {
+  Assert( std::find( sf.d_has_coeff.begin(), sf.d_has_coeff.end(), pv )!=sf.d_has_coeff.end() );
+  Assert( std::find( sf.d_vars.begin(), sf.d_vars.end(), pv )!=sf.d_vars.end() );
+  unsigned index = std::find( sf.d_vars.begin(), sf.d_vars.end(), pv )-sf.d_vars.begin();
+  Assert( !sf.d_coeff[index].isNull() );
+  Trace("cbqi-inst-debug") << "Normalize substitution for " << sf.d_coeff[index] << " * " << sf.d_vars[index] << " = " << sf.d_subs[index] << std::endl;
+  Assert( sf.d_vars[index].getType().isInteger() );
+  //must ensure that divisibility constraints are met
+  //solve updated rewritten equality for vars[index], if coefficient is one, then we are successful
+  Node eq_lhs = NodeManager::currentNM()->mkNode( MULT, sf.d_coeff[index], sf.d_vars[index] );
+  Node eq_rhs = sf.d_subs[index];
+  Node eq = eq_lhs.eqNode( eq_rhs );
+  eq = Rewriter::rewrite( eq );
+  Trace("cbqi-inst-debug") << "...equality is " << eq << std::endl;
+  std::map< Node, Node > msum;
+  if( QuantArith::getMonomialSumLit( eq, msum ) ){
+    Node veq;
+    if( QuantArith::isolate( sf.d_vars[index], msum, veq, EQUAL, true )!=0 ){
+      Node veq_c;
+      if( veq[0]!=sf.d_vars[index] ){
+        Node veq_v;
+        if( QuantArith::getMonomial( veq[0], veq_c, veq_v ) ){
+          Assert( veq_v==sf.d_vars[index] );
+        }
+      }
+      sf.d_subs[index] = veq[1];
+      if( !veq_c.isNull() ){
+        sf.d_subs[index] = NodeManager::currentNM()->mkNode( INTS_DIVISION_TOTAL, veq[1], veq_c );
+        Trace("cbqi-inst-debug") << "...bound type is : " << sf.d_btyp[index] << std::endl;
+        //intger division rounding up if from a lower bound
+        if( sf.d_btyp[index]==1 && options::cbqiRoundUpLowerLia() ){
+          sf.d_subs[index] = NodeManager::currentNM()->mkNode( PLUS, sf.d_subs[index],
+            NodeManager::currentNM()->mkNode( ITE,
+              NodeManager::currentNM()->mkNode( EQUAL,
+                NodeManager::currentNM()->mkNode( INTS_MODULUS_TOTAL, veq[1], veq_c ),
+                ci->getQuantifiersEngine()->getTermDatabase()->d_zero ),
+              ci->getQuantifiersEngine()->getTermDatabase()->d_zero, ci->getQuantifiersEngine()->getTermDatabase()->d_one )
+          );
+        }
+      }
+      Trace("cbqi-inst-debug") << "...normalize integers : " << sf.d_vars[index] << " -> " << sf.d_subs[index] << std::endl;
+    }else{
+      Trace("cbqi-inst-debug") << "...failed to isolate." << std::endl;
+      return false;
+    }
+  }else{
+    Trace("cbqi-inst-debug") << "...failed to get monomial sum." << std::endl;
+    return false;
+  }
+  return true;
+}
+
+void DtInstantiator::reset( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort ) {
+
+}
+
+Node DtInstantiator::solve_dt( Node v, Node a, Node b, Node sa, Node sb ) {
+  Trace("cbqi-inst-debug2") << "Solve dt : " << v << " " << a << " " << b << " " << sa << " " << sb << std::endl;
+  Node ret;
+  if( !a.isNull() && a==v ){
+    ret = sb;
+  }else if( !b.isNull() && b==v ){
+    ret = sa;
+  }else if( !a.isNull() && a.getKind()==APPLY_CONSTRUCTOR ){
+    if( !b.isNull() && b.getKind()==APPLY_CONSTRUCTOR ){
+      if( a.getOperator()==b.getOperator() ){
+        for( unsigned i=0; i<a.getNumChildren(); i++ ){
+          Node s = solve_dt( v, a[i], b[i], sa[i], sb[i] );
+          if( !s.isNull() ){
+            return s;
+          }
+        }
+      }
+    }else{
+      unsigned cindex = Datatype::indexOf( a.getOperator().toExpr() );
+      TypeNode tn = a.getType();
+      const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+      for( unsigned i=0; i<a.getNumChildren(); i++ ){
+        Node nn = NodeManager::currentNM()->mkNode( APPLY_SELECTOR_TOTAL, Node::fromExpr( dt[cindex][i].getSelector() ), sb );
+        Node s = solve_dt( v, a[i], Node::null(), sa[i], nn );
+        if( !s.isNull() ){
+          return s;
+        }
+      }
+    }
+  }else if( !b.isNull() && b.getKind()==APPLY_CONSTRUCTOR ){
+    return solve_dt( v, b, a, sb, sa );
+  }
+  if( !ret.isNull() ){
+    //ensure does not contain
+    if( TermDb::containsTerm( ret, v ) ){
+      ret = Node::null();
+    }
+  }
+  return ret;
+}
+
+bool DtInstantiator::processEqualTerms( CegInstantiator * ci, SolvedForm& sf, Node pv, std::vector< Node >& eqc, unsigned effort ) {
+  Trace("cbqi-inst-debug") << "[2] try based on constructors in equivalence class." << std::endl;
+  //[2] look in equivalence class for a constructor
+  for( unsigned k=0; k<eqc.size(); k++ ){
+    Node n = eqc[k];
+    if( n.getKind()==APPLY_CONSTRUCTOR ){
+      Trace("cbqi-inst-debug") << "...try based on constructor term " << n << std::endl;
+      std::vector< Node > children;
+      children.push_back( n.getOperator() );
+      const Datatype& dt = ((DatatypeType)(d_type).toType()).getDatatype();
+      unsigned cindex = Datatype::indexOf( n.getOperator().toExpr() );
+      //now must solve for selectors applied to pv
+      for( unsigned j=0; j<dt[cindex].getNumArgs(); j++ ){
+        Node c = NodeManager::currentNM()->mkNode( APPLY_SELECTOR_TOTAL, Node::fromExpr( dt[cindex][j].getSelector() ), pv );
+        ci->pushStackVariable( c );
+        children.push_back( c );
+      }
+      Node val = NodeManager::currentNM()->mkNode( kind::APPLY_CONSTRUCTOR, children );
+      if( ci->doAddInstantiationInc( pv, val, Node::null(), 0, sf, effort ) ){
+        return true;
+      }else{
+        //cleanup
+        for( unsigned j=0; j<dt[cindex].getNumArgs(); j++ ){
+          ci->popStackVariable();
+        }
+        break;
+      }
+    }
+  }
+  return false;
+}
+
+bool DtInstantiator::processEquality( CegInstantiator * ci, SolvedForm& sf, Node pv, std::vector< Node >& term_coeffs, std::vector< Node >& terms, unsigned effort ) {
+  Node val = solve_dt( pv, terms[0], terms[1], terms[0], terms[1] );
+  if( !val.isNull() ){
+    Node veq_c;
+    if( ci->doAddInstantiationInc( pv, val, veq_c, 0, sf, effort ) ){
+      return true;
+    }
+  }
+  return false;
+}
+
+void EprInstantiator::reset( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort ) {
+  d_equal_terms.clear();
+}
+
+bool EprInstantiator::processEqualTerm( CegInstantiator * ci, SolvedForm& sf, Node pv, Node pv_coeff, Node n, unsigned effort ) {
+  if( options::quantEprMatching() ){
+    Assert( pv_coeff.isNull() );
+    d_equal_terms.push_back( n ); 
+    return false;  
+  }else{
+    return ci->doAddInstantiationInc( pv, n, pv_coeff, 0, sf, effort );
+  }
+}
+
+void EprInstantiator::computeMatchScore( CegInstantiator * ci, Node pv, Node catom, std::vector< Node >& arg_reps, TermArgTrie * tat, unsigned index, std::map< Node, int >& match_score ) {
+  if( index==catom.getNumChildren() ){
+    Assert( tat->hasNodeData() );
+    Node gcatom = tat->getNodeData();
+    Trace("epr-inst") << "Matched : " << catom << " and " << gcatom << std::endl;
+    for( unsigned i=0; i<catom.getNumChildren(); i++ ){
+      if( catom[i]==pv ){
+        Trace("epr-inst") << "...increment " << gcatom[i] << std::endl;
+        match_score[gcatom[i]]++;
+      }else{
+        //recursive matching
+        computeMatchScore( ci, pv, catom[i], gcatom[i], match_score );
+      }
+    }
+  }else{
+    std::map< TNode, TermArgTrie >::iterator it = tat->d_data.find( arg_reps[index] );
+    if( it!=tat->d_data.end() ){
+      computeMatchScore( ci, pv, catom, arg_reps, &it->second, index+1, match_score );
+    }
+  }
+}
+
+void EprInstantiator::computeMatchScore( CegInstantiator * ci, Node pv, Node catom, Node eqc, std::map< Node, int >& match_score ) {
+  if( inst::Trigger::isAtomicTrigger( catom ) && TermDb::containsTerm( catom, pv ) ){
+    Trace("epr-inst") << "Find matches for " << catom << "..." << std::endl;
+    std::vector< Node > arg_reps;
+    for( unsigned j=0; j<catom.getNumChildren(); j++ ){
+      arg_reps.push_back( ci->getQuantifiersEngine()->getMasterEqualityEngine()->getRepresentative( catom[j] ) );
+    }
+    if( ci->getQuantifiersEngine()->getMasterEqualityEngine()->hasTerm( eqc ) ){
+      Node rep = ci->getQuantifiersEngine()->getMasterEqualityEngine()->getRepresentative( eqc );
+      Node op = ci->getQuantifiersEngine()->getTermDatabase()->getMatchOperator( catom );
+      TermArgTrie * tat = ci->getQuantifiersEngine()->getTermDatabase()->getTermArgTrie( rep, op );
+      Trace("epr-inst") << "EPR instantiation match term : " << catom << ", check ground terms=" << (tat!=NULL) << std::endl;
+      if( tat ){
+        computeMatchScore( ci, pv, catom, arg_reps, tat, 0, match_score );
+      }
+    }
+  }
+}
+
+struct sortEqTermsMatch {
+  std::map< Node, int > d_match_score;
+  bool operator() (Node i, Node j) {
+    int match_score_i = d_match_score[i];
+    int match_score_j = d_match_score[j];
+    return match_score_i>match_score_j || ( match_score_i==match_score_j && i<j );
+  }
+};
+
+    
+bool EprInstantiator::processEqualTerms( CegInstantiator * ci, SolvedForm& sf, Node pv, std::vector< Node >& eqc, unsigned effort ) {
+  if( options::quantEprMatching() ){
+    //heuristic for best matching constant
+    sortEqTermsMatch setm;
+    for( unsigned i=0; i<ci->getNumCEAtoms(); i++ ){
+      Node catom = ci->getCEAtom( i );
+      computeMatchScore( ci, pv, catom, catom, setm.d_match_score );
+    }
+    //sort by match score
+    std::sort( d_equal_terms.begin(), d_equal_terms.end(), setm );
+    Node pv_coeff;
+    for( unsigned i=0; i<d_equal_terms.size(); i++ ){
+      if( ci->doAddInstantiationInc( pv, d_equal_terms[i], pv_coeff, 0, sf, effort ) ){
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+bool BvInstantiator::processAssertion( CegInstantiator * ci, SolvedForm& sf, Node pv, Node lit, unsigned effort ) {
+  /*   TODO: algebraic reasoning for bitvector instantiation
+  if( atom.getKind()==BITVECTOR_ULT || atom.getKind()==BITVECTOR_ULE ){
+    for( unsigned t=0; t<2; t++ ){
+      if( atom[t]==pv ){
+        computeProgVars( atom[1-t] );
+        if( d_inelig.find( atom[1-t] )==d_inelig.end() ){
+          //only ground terms  TODO: more
+          if( d_prog_var[atom[1-t]].empty() ){
+            Node veq_c;
+            Node uval;
+            if( ( !pol && atom.getKind()==BITVECTOR_ULT ) || ( pol && atom.getKind()==BITVECTOR_ULE ) ){
+              uval = atom[1-t];
+            }else{
+              uval = NodeManager::currentNM()->mkNode( (atom.getKind()==BITVECTOR_ULT)==(t==1) ? BITVECTOR_PLUS : BITVECTOR_SUB, atom[1-t], 
+                                                       bv::utils::mkConst(pvtn.getConst<BitVectorSize>(), 1) );
+            }
+            if( doAddInstantiationInc( pv, uval, veq_c, 0, sf, effort ) ){
+              return true;
+            }
+          }
+        }
+      }
+    }
+  }
+  */
+
+  return false;
+}
+
+
diff --git a/src/theory/quantifiers/ceg_t_instantiator.h b/src/theory/quantifiers/ceg_t_instantiator.h
new file mode 100644
index 0000000..2df7946
--- /dev/null
+++ b/src/theory/quantifiers/ceg_t_instantiator.h
@@ -0,0 +1,93 @@
+/*********************                                                        */
+/*! \file ceg_t_instantiator.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief theory-specific counterexample-guided quantifier instantiation
+ **/
+
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__CEG_T_INSTANTIATOR_H
+#define __CVC4__CEG_T_INSTANTIATOR_H
+
+#include "theory/quantifiers/ceg_instantiator.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+class ArithInstantiator : public Instantiator {
+private:
+  Node d_vts_sym[2];
+  std::vector< Node > d_mbp_bounds[2];
+  std::vector< Node > d_mbp_coeff[2];
+  std::vector< Node > d_mbp_vts_coeff[2][2];
+  std::vector< Node > d_mbp_lit[2];
+  int solve_arith( CegInstantiator * ci, Node v, Node atom, Node & veq_c, Node & val, Node& vts_coeff_inf, Node& vts_coeff_delta );
+  Node getModelBasedProjectionValue( CegInstantiator * ci, Node e, Node t, bool isLower, Node c, Node me, Node mt, Node theta, Node inf_coeff, Node delta_coeff );
+public:
+  ArithInstantiator( QuantifiersEngine * qe, TypeNode tn ) : Instantiator( qe, tn ){}
+  virtual ~ArithInstantiator(){}
+  void reset( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort );
+  bool hasProcessEquality( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort ) { return true; }
+  bool processEquality( CegInstantiator * ci, SolvedForm& sf, Node pv, std::vector< Node >& term_coeffs, std::vector< Node >& terms, unsigned effort );
+  bool hasProcessAssertion( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort ) { return true; }
+  bool processAssertion( CegInstantiator * ci, SolvedForm& sf, Node pv, Node lit, unsigned effort );
+  bool processAssertions( CegInstantiator * ci, SolvedForm& sf, Node pv, std::vector< Node >& lits, unsigned effort );
+  bool needsPostProcessInstantiation( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort );
+  bool postProcessInstantiation( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort );
+  std::string identify() const { return "Arith"; }
+};
+
+class DtInstantiator : public Instantiator {
+private:
+  Node solve_dt( Node v, Node a, Node b, Node sa, Node sb );
+public:
+  DtInstantiator( QuantifiersEngine * qe, TypeNode tn ) : Instantiator( qe, tn ){}
+  virtual ~DtInstantiator(){}
+  void reset( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort );
+  bool processEqualTerms( CegInstantiator * ci, SolvedForm& sf, Node pv, std::vector< Node >& eqc, unsigned effort );
+  bool hasProcessEquality( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort ) { return true; }
+  bool processEquality( CegInstantiator * ci, SolvedForm& sf, Node pv, std::vector< Node >& term_coeffs, std::vector< Node >& terms, unsigned effort );
+  std::string identify() const { return "Dt"; }
+};
+
+class TermArgTrie;
+
+class EprInstantiator : public Instantiator {
+private:
+  std::vector< Node > d_equal_terms;
+  void computeMatchScore( CegInstantiator * ci, Node pv, Node catom, std::vector< Node >& arg_reps, TermArgTrie * tat, unsigned index, std::map< Node, int >& match_score );
+  void computeMatchScore( CegInstantiator * ci, Node pv, Node catom, Node eqc, std::map< Node, int >& match_score );
+public:
+  EprInstantiator( QuantifiersEngine * qe, TypeNode tn ) : Instantiator( qe, tn ){}
+  virtual ~EprInstantiator(){}
+  void reset( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort );
+  bool processEqualTerm( CegInstantiator * ci, SolvedForm& sf, Node pv, Node pv_coeff, Node n, unsigned effort );
+  bool processEqualTerms( CegInstantiator * ci, SolvedForm& sf, Node pv, std::vector< Node >& eqc, unsigned effort );
+  std::string identify() const { return "Epr"; }
+};
+
+class BvInstantiator : public Instantiator {
+public:
+  BvInstantiator( QuantifiersEngine * qe, TypeNode tn ) : Instantiator( qe, tn ){}
+  virtual ~BvInstantiator(){}
+  bool processAssertion( CegInstantiator * ci, SolvedForm& sf, Node pv, Node lit, unsigned effort );
+  bool useModelValue( CegInstantiator * ci, SolvedForm& sf, Node pv, unsigned effort ) { return true; }
+  std::string identify() const { return "Bv"; }
+};
+
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/conjecture_generator.cpp b/src/theory/quantifiers/conjecture_generator.cpp
new file mode 100644
index 0000000..11adc61
--- /dev/null
+++ b/src/theory/quantifiers/conjecture_generator.cpp
@@ -0,0 +1,2169 @@
+/*********************                                                        */
+/*! \file conjecture_generator.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Clark Barrett, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief conjecture generator class
+ **
+ **/
+
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/conjecture_generator.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/trigger.h"
+#include "theory/theory_engine.h"
+
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+using namespace std;
+
+namespace CVC4 {
+
+struct sortConjectureScore {
+  std::vector< int > d_scores;
+  bool operator() (unsigned i, unsigned j) { return d_scores[i]>d_scores[j]; }
+};
+
+
+void OpArgIndex::addTerm( std::vector< TNode >& terms, TNode n, unsigned index ){
+  if( index==n.getNumChildren() ){
+    Assert( n.hasOperator() );
+    if( std::find( d_ops.begin(), d_ops.end(), n.getOperator() )==d_ops.end() ){
+      d_ops.push_back( n.getOperator() );
+      d_op_terms.push_back( n );
+    }
+  }else{
+    d_child[terms[index]].addTerm( terms, n, index+1 );
+  }
+}
+
+Node OpArgIndex::getGroundTerm( ConjectureGenerator * s, std::vector< TNode >& args ) {
+  if( d_ops.empty() ){
+    for( std::map< TNode, OpArgIndex >::iterator it = d_child.begin(); it != d_child.end(); ++it ){
+      std::map< TNode, Node >::iterator itf = s->d_ground_eqc_map.find( it->first );
+      if( itf!=s->d_ground_eqc_map.end() ){
+        args.push_back( itf->second );
+        Node n = it->second.getGroundTerm( s, args );
+        args.pop_back();
+        if( !n.isNull() ){
+          return n;
+        }
+      }
+    }
+    return Node::null();
+  }else{
+    std::vector< TNode > args2;
+    args2.push_back( d_ops[0] );
+    args2.insert( args2.end(), args.begin(), args.end() );
+    return NodeManager::currentNM()->mkNode( d_op_terms[0].getKind(), args2 );
+  }
+}
+
+void OpArgIndex::getGroundTerms( ConjectureGenerator * s, std::vector< TNode >& terms ) {
+  terms.insert( terms.end(), d_op_terms.begin(), d_op_terms.end() );
+  for( std::map< TNode, OpArgIndex >::iterator it = d_child.begin(); it != d_child.end(); ++it ){
+    if( s->isGroundEqc( it->first ) ){
+      it->second.getGroundTerms( s, terms );
+    }
+  }
+}
+
+
+
+ConjectureGenerator::ConjectureGenerator( QuantifiersEngine * qe, context::Context* c ) : QuantifiersModule( qe ),
+d_notify( *this ),
+d_uequalityEngine(d_notify, c, "ConjectureGenerator::ee", false),
+d_ee_conjectures( c ){
+  d_fullEffortCount = 0;
+  d_conj_count = 0;
+  d_subs_confirmCount = 0;
+  d_subs_unkCount = 0;
+  d_uequalityEngine.addFunctionKind( kind::APPLY_UF );
+  d_uequalityEngine.addFunctionKind( kind::APPLY_CONSTRUCTOR );
+
+}
+
+void ConjectureGenerator::eqNotifyNewClass( TNode t ){
+  Trace("thm-ee-debug") << "UEE : new equivalence class " << t << std::endl;
+  d_upendingAdds.push_back( t );
+}
+
+void ConjectureGenerator::eqNotifyPreMerge(TNode t1, TNode t2) {
+  //get maintained representatives
+  TNode rt1 = t1;
+  TNode rt2 = t2;
+  std::map< Node, EqcInfo* >::iterator it1 = d_eqc_info.find( t1 );
+  if( it1!=d_eqc_info.end() && !it1->second->d_rep.get().isNull() ){
+    rt1 = it1->second->d_rep.get();
+  }
+  std::map< Node, EqcInfo* >::iterator it2 = d_eqc_info.find( t2 );
+  if( it2!=d_eqc_info.end() && !it2->second->d_rep.get().isNull() ){
+    rt2 = it2->second->d_rep.get();
+  }
+  Trace("thm-ee-debug") << "UEE : equality holds : " << t1 << " == " << t2 << std::endl;
+  Trace("thm-ee-debug") << "      ureps : " << rt1 << " == " << rt2 << std::endl;
+  Trace("thm-ee-debug") << "      relevant : " << d_pattern_is_relevant[rt1] << " " << d_pattern_is_relevant[rt2] << std::endl;
+  Trace("thm-ee-debug") << "      normal : " << d_pattern_is_normal[rt1] << " " << d_pattern_is_normal[rt2] << std::endl;
+  Trace("thm-ee-debug") << "      size :   " << d_pattern_fun_sum[rt1] << " " << d_pattern_fun_sum[rt2] << std::endl;
+
+  if( isUniversalLessThan( rt2, rt1 ) ){
+    EqcInfo * ei;
+    if( it1==d_eqc_info.end() ){
+      ei = getOrMakeEqcInfo( t1, true );
+    }else{
+      ei = it1->second;
+    }
+    ei->d_rep = t2;
+  }
+}
+
+void ConjectureGenerator::eqNotifyPostMerge(TNode t1, TNode t2) {
+
+}
+
+void ConjectureGenerator::eqNotifyDisequal(TNode t1, TNode t2, TNode reason) {
+  Trace("thm-ee-debug") << "UEE : disequality holds : " << t1 << " != " << t2 << std::endl;
+
+}
+
+
+ConjectureGenerator::EqcInfo::EqcInfo( context::Context* c ) : d_rep( c, Node::null() ){
+
+}
+
+ConjectureGenerator::EqcInfo* ConjectureGenerator::getOrMakeEqcInfo( TNode n, bool doMake ) {
+  //Assert( getUniversalRepresentative( n )==n );
+  std::map< Node, EqcInfo* >::iterator eqc_i = d_eqc_info.find( n );
+  if( eqc_i!=d_eqc_info.end() ){
+    return eqc_i->second;
+  }else if( doMake ){
+    EqcInfo* ei = new EqcInfo( d_quantEngine->getSatContext() );
+    d_eqc_info[n] = ei;
+    return ei;
+  }else{
+    return NULL;
+  }
+}
+
+void ConjectureGenerator::setUniversalRelevant( TNode n ) {
+  //add pattern information
+  registerPattern( n, n.getType() );
+  d_urelevant_terms[n] = true;
+  for( unsigned i=0; i<n.getNumChildren(); i++ ){
+    setUniversalRelevant( n[i] );
+  }
+}
+
+bool ConjectureGenerator::isUniversalLessThan( TNode rt1, TNode rt2 ) {
+  //prefer the one that is (normal, smaller) lexographically
+  Assert( d_pattern_is_relevant.find( rt1 )!=d_pattern_is_relevant.end() );
+  Assert( d_pattern_is_relevant.find( rt2 )!=d_pattern_is_relevant.end() );
+  Assert( d_pattern_is_normal.find( rt1 )!=d_pattern_is_normal.end() );
+  Assert( d_pattern_is_normal.find( rt2 )!=d_pattern_is_normal.end() );
+  Assert( d_pattern_fun_sum.find( rt1 )!=d_pattern_fun_sum.end() );
+  Assert( d_pattern_fun_sum.find( rt2 )!=d_pattern_fun_sum.end() );
+
+  if( d_pattern_is_relevant[rt1] && !d_pattern_is_relevant[rt2] ){
+    Trace("thm-ee-debug") << "UEE : LT due to relevant." << std::endl;
+    return true;
+  }else if( d_pattern_is_relevant[rt1]==d_pattern_is_relevant[rt2] ){
+    if( d_pattern_is_normal[rt1] && !d_pattern_is_normal[rt2] ){
+      Trace("thm-ee-debug") << "UEE : LT due to normal." << std::endl;
+      return true;
+    }else if( d_pattern_is_normal[rt1]==d_pattern_is_normal[rt2] ){
+      if( d_pattern_fun_sum[rt1]<d_pattern_fun_sum[rt2] ){
+        Trace("thm-ee-debug") << "UEE : LT due to size." << std::endl;
+        //decide which representative to use : based on size of the term
+        return true;
+      }else if( d_pattern_fun_sum[rt1]==d_pattern_fun_sum[rt2] ){
+        //same size : tie goes to term that has already been reported
+        return isReportedCanon( rt1 ) && !isReportedCanon( rt2 );
+      }
+    }
+  }
+  return false;
+}
+
+
+bool ConjectureGenerator::isReportedCanon( TNode n ) {
+  return std::find( d_ue_canon.begin(), d_ue_canon.end(), n )==d_ue_canon.end();
+}
+
+void ConjectureGenerator::markReportedCanon( TNode n ) {
+  if( !isReportedCanon( n ) ){
+    d_ue_canon.push_back( n );
+  }
+}
+
+bool ConjectureGenerator::areUniversalEqual( TNode n1, TNode n2 ) {
+  return n1==n2 || ( d_uequalityEngine.hasTerm( n1 ) && d_uequalityEngine.hasTerm( n2 ) && d_uequalityEngine.areEqual( n1, n2 ) );
+}
+
+bool ConjectureGenerator::areUniversalDisequal( TNode n1, TNode n2 ) {
+  return n1!=n2 && d_uequalityEngine.hasTerm( n1 ) && d_uequalityEngine.hasTerm( n2 ) && d_uequalityEngine.areDisequal( n1, n2, false );
+}
+
+TNode ConjectureGenerator::getUniversalRepresentative( TNode n, bool add ) {
+  if( add ){
+    if( d_urelevant_terms.find( n )==d_urelevant_terms.end() ){
+      setUniversalRelevant( n );
+      //add term to universal equality engine
+      d_uequalityEngine.addTerm( n );
+      // addding this term to equality engine will lead to a set of new terms (the new subterms of n)
+      // now, do instantiation-based merging for each of these terms
+      Trace("thm-ee-debug") << "Merge equivalence classes based on instantiations of terms..." << std::endl;
+      //merge all pending equalities
+      while( !d_upendingAdds.empty() ){
+        Trace("sg-pending") << "Add " << d_upendingAdds.size() << " pending terms..." << std::endl;
+        std::vector< Node > pending;
+        pending.insert( pending.end(), d_upendingAdds.begin(), d_upendingAdds.end() );
+        d_upendingAdds.clear();
+        for( unsigned i=0; i<pending.size(); i++ ){
+          Node t = pending[i];
+          TypeNode tn = t.getType();
+          Trace("thm-ee-add") << "UEE : Add universal term " << t << std::endl;
+          std::vector< Node > eq_terms;
+          //if occurs modulo equality at ground level, it is equivalent to representative of ground equality engine
+          TNode gt = getTermDatabase()->evaluateTerm( t );
+          if( !gt.isNull() && gt!=t ){
+            eq_terms.push_back( gt );
+          }
+          //get all equivalent terms based on theorem database
+          d_thm_index.getEquivalentTerms( t, eq_terms );
+          if( !eq_terms.empty() ){
+            Trace("thm-ee-add") << "UEE : Based on ground EE/theorem DB, it is equivalent to " << eq_terms.size() << " terms : " << std::endl;
+            //add equivalent terms as equalities to universal engine
+            for( unsigned i=0; i<eq_terms.size(); i++ ){
+              Trace("thm-ee-add") << "  " << eq_terms[i] << std::endl;
+              bool assertEq = false;
+              if( d_urelevant_terms.find( eq_terms[i] )!=d_urelevant_terms.end() ){
+                assertEq = true;
+              }else{
+                Assert( eq_terms[i].getType()==tn );
+                registerPattern( eq_terms[i], tn );
+                if( isUniversalLessThan( eq_terms[i], t ) || ( options::conjectureUeeIntro() && d_pattern_fun_sum[t]>=d_pattern_fun_sum[eq_terms[i]] ) ){
+                  setUniversalRelevant( eq_terms[i] );
+                  assertEq = true;
+                }
+              }
+              if( assertEq ){
+                Node exp;
+                d_uequalityEngine.assertEquality( t.eqNode( eq_terms[i] ), true, exp );
+              }else{
+                Trace("thm-ee-no-add") << "Do not add : " << t << " == " << eq_terms[i] << std::endl;
+              }
+            }
+          }else{
+            Trace("thm-ee-add") << "UEE : No equivalent terms." << std::endl;
+          }
+        }
+      }
+    }
+  }
+
+  if( d_uequalityEngine.hasTerm( n ) ){
+    Node r = d_uequalityEngine.getRepresentative( n );
+    EqcInfo * ei = getOrMakeEqcInfo( r );
+    if( ei && !ei->d_rep.get().isNull() ){
+      return ei->d_rep.get();
+    }else{
+      return r;
+    }
+  }else{
+    return n;
+  }
+}
+
+Node ConjectureGenerator::getFreeVar( TypeNode tn, unsigned i ) {
+  return d_quantEngine->getTermDatabase()->getCanonicalFreeVar( tn, i );
+}
+
+bool ConjectureGenerator::isHandledTerm( TNode n ){
+  return d_quantEngine->getTermDatabase()->isTermActive( n ) && inst::Trigger::isAtomicTrigger( n ) && ( n.getKind()!=APPLY_UF || n.getOperator().getKind()!=SKOLEM );
+}
+
+Node ConjectureGenerator::getGroundEqc( TNode r ) {
+  std::map< TNode, Node >::iterator it = d_ground_eqc_map.find( r );
+  return it!=d_ground_eqc_map.end() ? it->second : Node::null();
+}
+
+bool ConjectureGenerator::isGroundEqc( TNode r ) {
+  return d_ground_eqc_map.find( r )!=d_ground_eqc_map.end();
+}
+
+bool ConjectureGenerator::isGroundTerm( TNode n ) {
+  return std::find( d_ground_terms.begin(), d_ground_terms.end(), n )!=d_ground_terms.end();
+}
+
+bool ConjectureGenerator::needsCheck( Theory::Effort e ) {
+  // synchonized with instantiation engine
+  return d_quantEngine->getInstWhenNeedsCheck( e );
+}
+
+bool ConjectureGenerator::hasEnumeratedUf( Node n ) {
+  if( options::conjectureGenGtEnum()>0 ){
+    std::map< Node, bool >::iterator it = d_uf_enum.find( n.getOperator() );
+    if( it==d_uf_enum.end() ){
+      d_uf_enum[n.getOperator()] = true;
+      std::vector< Node > lem;
+      getEnumeratePredUfTerm( n, options::conjectureGenGtEnum(), lem );
+      if( !lem.empty() ){
+        for( unsigned j=0; j<lem.size(); j++ ){
+          d_quantEngine->addLemma( lem[j], false );
+          d_hasAddedLemma = true;
+        }
+        return false;
+      }
+    }
+  }
+  return true;
+}
+
+void ConjectureGenerator::reset_round( Theory::Effort e ) {
+
+}
+
+void ConjectureGenerator::check( Theory::Effort e, unsigned quant_e ) {
+  if( quant_e==QuantifiersEngine::QEFFORT_STANDARD ){
+    d_fullEffortCount++;
+    if( d_fullEffortCount%optFullCheckFrequency()==0 ){
+      d_hasAddedLemma = false;
+      d_tge.d_cg = this;
+      double clSet = 0;
+      if( Trace.isOn("sg-engine") ){
+        clSet = double(clock())/double(CLOCKS_PER_SEC);
+        Trace("sg-engine") << "---Conjecture Engine Round, effort = " << e << "---" << std::endl;
+      }
+      eq::EqualityEngine * ee = getEqualityEngine();
+      d_conj_count = 0;
+
+      Trace("sg-proc") << "Get eq classes..." << std::endl;
+      d_op_arg_index.clear();
+      d_ground_eqc_map.clear();
+      d_bool_eqc[0] = Node::null();
+      d_bool_eqc[1] = Node::null();
+      std::vector< TNode > eqcs;
+      d_em.clear();
+      eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( ee );
+      while( !eqcs_i.isFinished() ){
+        TNode r = (*eqcs_i);
+        eqcs.push_back( r );
+        if( r.getType().isBoolean() ){
+          if( areEqual( r, getTermDatabase()->d_true ) ){
+            d_ground_eqc_map[r] = getTermDatabase()->d_true;
+            d_bool_eqc[0] = r;
+          }else if( areEqual( r, getTermDatabase()->d_false ) ){
+            d_ground_eqc_map[r] = getTermDatabase()->d_false;
+            d_bool_eqc[1] = r;
+          }
+        }
+        d_em[r] = eqcs.size();
+        eq::EqClassIterator ieqc_i = eq::EqClassIterator( r, ee );
+        while( !ieqc_i.isFinished() ){
+          TNode n = (*ieqc_i);
+          if( getTermDatabase()->hasTermCurrent( n ) ){
+            if( isHandledTerm( n ) ){
+              d_op_arg_index[r].addTerm( getTermDatabase()->d_arg_reps[n], n );
+            }
+          }
+          ++ieqc_i;
+        }
+        ++eqcs_i;
+      }
+      Assert( !d_bool_eqc[0].isNull() );
+      Assert( !d_bool_eqc[1].isNull() );
+      d_urelevant_terms.clear();
+      Trace("sg-proc") << "...done get eq classes" << std::endl;
+
+      Trace("sg-proc") << "Determine ground EQC..." << std::endl;
+      bool success;
+      do{
+        success = false;
+        for( unsigned i=0; i<eqcs.size(); i++ ){
+          TNode r = eqcs[i];
+          if( d_ground_eqc_map.find( r )==d_ground_eqc_map.end() ){
+            std::vector< TNode > args;
+            Trace("sg-pat-debug") << "******* Get ground term for " << r << std::endl;
+            Node n;
+            if( getTermDatabase()->isInductionTerm( r ) ){
+              n = d_op_arg_index[r].getGroundTerm( this, args );
+            }else{
+              n = r;
+            }
+            if( !n.isNull() ){
+              Trace("sg-pat") << "Ground term for eqc " << r << " : " << std::endl;
+              Trace("sg-pat") << "   " << n << std::endl;
+              d_ground_eqc_map[r] = n;
+              success = true;
+            }else{
+              Trace("sg-pat-debug") << "...could not find ground term." << std::endl;
+            }
+          }
+        }
+      }while( success );
+      //also get ground terms
+      d_ground_terms.clear();
+      for( unsigned i=0; i<eqcs.size(); i++ ){
+        TNode r = eqcs[i];
+        d_op_arg_index[r].getGroundTerms( this, d_ground_terms );
+      }
+      Trace("sg-proc") << "...done determine ground EQC" << std::endl;
+
+      //debug printing
+      if( Trace.isOn("sg-gen-eqc") ){
+        for( unsigned i=0; i<eqcs.size(); i++ ){
+          TNode r = eqcs[i];
+          //print out members
+          bool firstTime = true;
+          bool isFalse = areEqual( r, getTermDatabase()->d_false );
+          eq::EqClassIterator eqc_i = eq::EqClassIterator( r, ee );
+          while( !eqc_i.isFinished() ){
+            TNode n = (*eqc_i);
+            if( getTermDatabase()->hasTermCurrent( n ) && getTermDatabase()->isTermActive( n ) && ( n.getKind()!=EQUAL || isFalse ) ){
+              if( firstTime ){
+                Trace("sg-gen-eqc") << "e" << d_em[r] << " : { " << std::endl;
+                firstTime = false;
+              }
+              if( n.hasOperator() ){
+                Trace("sg-gen-eqc") << "   (" << n.getOperator();
+                getTermDatabase()->computeArgReps( n );
+                for( unsigned i=0; i<getTermDatabase()->d_arg_reps[n].size(); i++ ){
+                  Trace("sg-gen-eqc") << " e" << d_em[getTermDatabase()->d_arg_reps[n][i]];
+                }
+                Trace("sg-gen-eqc") << ") :: " << n << std::endl;
+              }else{
+                Trace("sg-gen-eqc") << "   " << n << std::endl;
+              }
+            }
+            ++eqc_i;
+          }
+          if( !firstTime ){
+            Trace("sg-gen-eqc") << "}" << std::endl;
+            //print out ground term
+            std::map< TNode, Node >::iterator it = d_ground_eqc_map.find( r );
+            if( it!=d_ground_eqc_map.end() ){
+              Trace("sg-gen-eqc") << "- Ground term : " << it->second << std::endl;
+            }
+          }
+        }
+      }
+
+      Trace("sg-proc") << "Compute relevant eqc..." << std::endl;
+      d_tge.d_relevant_eqc[0].clear();
+      d_tge.d_relevant_eqc[1].clear();
+      for( unsigned i=0; i<eqcs.size(); i++ ){
+        TNode r = eqcs[i];
+        std::map< TNode, Node >::iterator it = d_ground_eqc_map.find( r );
+        unsigned index = 1;
+        if( it==d_ground_eqc_map.end() ){
+          index = 0;
+        }
+        //based on unproven conjectures? TODO
+        d_tge.d_relevant_eqc[index].push_back( r );
+      }
+      Trace("sg-gen-tg-debug") << "Initial relevant eqc : ";
+      for( unsigned i=0; i<d_tge.d_relevant_eqc[0].size(); i++ ){
+        Trace("sg-gen-tg-debug") << "e" << d_em[d_tge.d_relevant_eqc[0][i]] << " ";
+      }
+      Trace("sg-gen-tg-debug") << std::endl;
+      Trace("sg-proc") << "...done compute relevant eqc" << std::endl;
+
+
+      Trace("sg-proc") << "Collect signature information..." << std::endl;
+      d_tge.collectSignatureInformation();
+      if( d_hasAddedLemma ){
+        Trace("sg-proc") << "...added enumeration lemmas." << std::endl;
+      }
+      Trace("sg-proc") << "...done collect signature information" << std::endl;
+
+
+
+      Trace("sg-proc") << "Build theorem index..." << std::endl;
+      d_ue_canon.clear();
+      d_thm_index.clear();
+      std::vector< Node > provenConj;
+      quantifiers::FirstOrderModel* m = d_quantEngine->getModel();
+      for( unsigned i=0; i<m->getNumAssertedQuantifiers(); i++ ){
+        Node q = m->getAssertedQuantifier( i );
+        Trace("thm-db-debug") << "Is " << q << " a relevant theorem?" << std::endl;
+        Node conjEq;
+        if( q[1].getKind()==EQUAL ){
+          bool isSubsume = false;
+          bool inEe = false;
+          for( unsigned r=0; r<2; r++ ){
+            TNode nl = q[1][r==0 ? 0 : 1];
+            TNode nr = q[1][r==0 ? 1 : 0];
+            Node eq = nl.eqNode( nr );
+            if( r==1 || std::find( d_conjectures.begin(), d_conjectures.end(), q )==d_conjectures.end() ){
+              //check if it contains only relevant functions
+              if( d_tge.isRelevantTerm( eq ) ){
+                //make it canonical
+                Trace("sg-proc-debug") << "get canonical " << eq << std::endl;
+                eq = d_quantEngine->getTermDatabase()->getCanonicalTerm( eq );
+              }else{
+                eq = Node::null();
+              }
+            }
+            if( !eq.isNull() ){
+              if( r==0 ){
+                inEe = d_ee_conjectures.find( q[1] )!=d_ee_conjectures.end();
+                if( !inEe ){
+                  //add to universal equality engine
+                  Node nl = getUniversalRepresentative( eq[0], true );
+                  Node nr = getUniversalRepresentative( eq[1], true );
+                  if( areUniversalEqual( nl, nr ) ){
+                    isSubsume = true;
+                    //set inactive (will be ignored by other modules)
+                    d_quantEngine->getModel()->setQuantifierActive( q, false );
+                  }else{
+                    Node exp;
+                    d_ee_conjectures[q[1]] = true;
+                    d_uequalityEngine.assertEquality( nl.eqNode( nr ), true, exp );
+                  }
+                }
+                Trace("sg-conjecture") << "*** CONJECTURE : currently proven" << (isSubsume ? " and subsumed" : "");
+                Trace("sg-conjecture") << " : " << q[1] << std::endl;
+                provenConj.push_back( q );
+              }
+              if( !isSubsume ){
+                Trace("thm-db-debug") << "Adding theorem to database " << eq[0] << " == " << eq[1] << std::endl;
+                d_thm_index.addTheorem( eq[0], eq[1] );
+              }else{
+                break;
+              }
+            }else{
+              break;
+            }
+          }
+        }
+      }
+      //examine status of other conjectures
+      for( unsigned i=0; i<d_conjectures.size(); i++ ){
+        Node q = d_conjectures[i];
+        if( std::find( provenConj.begin(), provenConj.end(), q )==provenConj.end() ){
+          //check each skolem variable
+          bool disproven = true;
+          //std::vector< Node > sk;
+          //getTermDatabase()->getSkolemConstants( q, sk, true );
+          Trace("sg-conjecture") << "    CONJECTURE : ";
+          std::vector< Node > ce;
+          for( unsigned j=0; j<getTermDatabase()->d_skolem_constants[q].size(); j++ ){
+            TNode k = getTermDatabase()->d_skolem_constants[q][j];
+            TNode rk = getRepresentative( k );
+            std::map< TNode, Node >::iterator git = d_ground_eqc_map.find( rk );
+            //check if it is a ground term
+            if( git==d_ground_eqc_map.end() ){
+              Trace("sg-conjecture") << "ACTIVE : " << q;
+              if( Trace.isOn("sg-gen-eqc") ){
+                Trace("sg-conjecture") << " { ";
+                for( unsigned k=0; k<getTermDatabase()->d_skolem_constants[q].size(); k++ ){ Trace("sg-conjecture") << getTermDatabase()->d_skolem_constants[q][k] << ( j==k ? "*" : "" ) << " "; }
+                Trace("sg-conjecture") << "}";
+              }
+              Trace("sg-conjecture") << std::endl;
+              disproven = false;
+              break;
+            }else{
+              ce.push_back( git->second );
+            }
+          }
+          if( disproven ){
+            Trace("sg-conjecture") << "disproven : " << q << " : ";
+            for( unsigned i=0; i<ce.size(); i++ ){
+              Trace("sg-conjecture") << q[0][i] << " -> " << ce[i] << " ";
+            }
+            Trace("sg-conjecture") << std::endl;
+          }
+        }
+      }
+      Trace("thm-db") << "Theorem database is : " << std::endl;
+      d_thm_index.debugPrint( "thm-db" );
+      Trace("thm-db") << std::endl;
+      Trace("sg-proc") << "...done build theorem index" << std::endl;
+
+
+      //clear patterns
+      d_patterns.clear();
+      d_pattern_var_id.clear();
+      d_pattern_var_duplicate.clear();
+      d_pattern_is_normal.clear();
+      d_pattern_is_relevant.clear();
+      d_pattern_fun_id.clear();
+      d_pattern_fun_sum.clear();
+      d_rel_patterns.clear();
+      d_rel_pattern_var_sum.clear();
+      d_rel_pattern_typ_index.clear();
+      d_rel_pattern_subs_index.clear();
+
+      unsigned rel_term_count = 0;
+      std::map< TypeNode, unsigned > rt_var_max;
+      std::vector< TypeNode > rt_types;
+      std::map< TypeNode, std::map< int, std::vector< Node > > > conj_lhs;
+      unsigned addedLemmas = 0;
+      unsigned maxDepth = options::conjectureGenMaxDepth();
+      for( unsigned depth=1; depth<=maxDepth; depth++ ){
+        Trace("sg-proc") << "Generate relevant LHS at depth " << depth << "..." << std::endl;
+        Trace("sg-rel-term") << "Relevant terms of depth " << depth << " : " << std::endl;
+        //set up environment
+        d_tge.d_var_id.clear();
+        d_tge.d_var_limit.clear();
+        d_tge.reset( depth, true, TypeNode::null() );
+        while( d_tge.getNextTerm() ){
+          //construct term
+          Node nn = d_tge.getTerm();
+          if( !options::conjectureFilterCanonical() || considerTermCanon( nn, true ) ){
+            rel_term_count++;
+            Trace("sg-rel-term") << "*** Relevant term : ";
+            d_tge.debugPrint( "sg-rel-term", "sg-rel-term-debug2" );
+            Trace("sg-rel-term") << std::endl;
+
+            for( unsigned r=0; r<2; r++ ){
+              Trace("sg-rel-term-debug") << "...from equivalence classes (" << r << ") : ";
+              int index = d_tge.d_ccand_eqc[r].size()-1;
+              for( unsigned j=0; j<d_tge.d_ccand_eqc[r][index].size(); j++ ){
+                Trace("sg-rel-term-debug") << "e" << d_em[d_tge.d_ccand_eqc[r][index][j]] << " ";
+              }
+              Trace("sg-rel-term-debug") << std::endl;
+            }
+            TypeNode tnn = nn.getType();
+            Trace("sg-gen-tg-debug") << "...term is " << nn << std::endl;
+            conj_lhs[tnn][depth].push_back( nn );
+
+            //add information about pattern
+            Trace("sg-gen-tg-debug") << "Collect pattern information..." << std::endl;
+            Assert( std::find( d_rel_patterns[tnn].begin(), d_rel_patterns[tnn].end(), nn )==d_rel_patterns[tnn].end() );
+            d_rel_patterns[tnn].push_back( nn );
+            //build information concerning the variables in this pattern
+            unsigned sum = 0;
+            std::map< TypeNode, unsigned > typ_to_subs_index;
+            std::vector< TNode > gsubs_vars;
+            for( std::map< TypeNode, unsigned >::iterator it = d_tge.d_var_id.begin(); it != d_tge.d_var_id.end(); ++it ){
+              if( it->second>0 ){
+                typ_to_subs_index[it->first] = sum;
+                sum += it->second;
+                for( unsigned i=0; i<it->second; i++ ){
+                  gsubs_vars.push_back( d_quantEngine->getTermDatabase()->getCanonicalFreeVar( it->first, i ) );
+                }
+              }
+            }
+            d_rel_pattern_var_sum[nn] = sum;
+            //register the pattern
+            registerPattern( nn, tnn );
+            Assert( d_pattern_is_normal[nn] );
+            Trace("sg-gen-tg-debug") << "...done collect pattern information" << std::endl;
+
+            //record information about types
+            Trace("sg-gen-tg-debug") << "Collect type information..." << std::endl;
+            PatternTypIndex * pti = &d_rel_pattern_typ_index;
+            for( std::map< TypeNode, unsigned >::iterator it = d_tge.d_var_id.begin(); it != d_tge.d_var_id.end(); ++it ){
+              pti = &pti->d_children[it->first][it->second];
+              //record maximum
+              if( rt_var_max.find( it->first )==rt_var_max.end() || it->second>rt_var_max[it->first] ){
+                rt_var_max[it->first] = it->second;
+              }
+            }
+            if( std::find( rt_types.begin(), rt_types.end(), tnn )==rt_types.end() ){
+              rt_types.push_back( tnn );
+            }
+            pti->d_terms.push_back( nn );
+            Trace("sg-gen-tg-debug") << "...done collect type information" << std::endl;
+
+            Trace("sg-gen-tg-debug") << "Build substitutions for ground EQC..." << std::endl;
+            std::vector< TNode > gsubs_terms;
+            gsubs_terms.resize( gsubs_vars.size() );
+            int index = d_tge.d_ccand_eqc[1].size()-1;
+            for( unsigned j=0; j<d_tge.d_ccand_eqc[1][index].size(); j++ ){
+              TNode r = d_tge.d_ccand_eqc[1][index][j];
+              Trace("sg-rel-term-debug") << "  Matches for e" << d_em[r] << ", which is ground term " << d_ground_eqc_map[r] << ":" << std::endl;
+              std::map< TypeNode, std::map< unsigned, TNode > > subs;
+              std::map< TNode, bool > rev_subs;
+              //only get ground terms
+              unsigned mode = 2;
+              d_tge.resetMatching( r, mode );
+              while( d_tge.getNextMatch( r, subs, rev_subs ) ){
+                //we will be building substitutions
+                bool firstTime = true;
+                for( std::map< TypeNode, std::map< unsigned, TNode > >::iterator it = subs.begin(); it != subs.end(); ++it ){
+                  unsigned tindex = typ_to_subs_index[it->first];
+                  for( std::map< unsigned, TNode >::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2 ){
+                    if( !firstTime ){
+                      Trace("sg-rel-term-debug") << ", ";
+                    }else{
+                      firstTime = false;
+                      Trace("sg-rel-term-debug") << "    ";
+                    }
+                    Trace("sg-rel-term-debug") << it->first << ":x" << it2->first << " -> " << it2->second;
+                    Assert( tindex+it2->first<gsubs_terms.size() );
+                    gsubs_terms[tindex+it2->first] = it2->second;
+                  }
+                }
+                Trace("sg-rel-term-debug") << std::endl;
+                d_rel_pattern_subs_index[nn].addSubstitution( r, gsubs_vars, gsubs_terms );
+              }
+            }
+            Trace("sg-gen-tg-debug") << "...done build substitutions for ground EQC" << std::endl;
+          }else{
+            Trace("sg-gen-tg-debug") << "> not canonical : " << nn << std::endl;
+          }
+        }
+        Trace("sg-proc") << "...done generate terms at depth " << depth << std::endl;
+        Trace("sg-stats") << "--------> Total LHS of depth " << depth << " : " << rel_term_count << std::endl;
+        //Trace("conjecture-count") << "Total LHS of depth " << depth << " : " << conj_lhs[depth].size() << std::endl;
+
+        /* test...
+        for( unsigned i=0; i<rt_types.size(); i++ ){
+          Trace("sg-term-enum") << "Term enumeration for " << rt_types[i] << " : " << std::endl;
+          Trace("sg-term-enum") << "Ground term : " << rt_types[i].mkGroundTerm() << std::endl;
+          for( unsigned j=0; j<150; j++ ){
+            Trace("sg-term-enum") << "  " << getEnumerateTerm( rt_types[i], j ) << std::endl;
+          }
+        }
+        */
+
+        //consider types from relevant terms
+        for( unsigned rdepth=0; rdepth<=depth; rdepth++ ){
+          //set up environment
+          d_tge.d_var_id.clear();
+          d_tge.d_var_limit.clear();
+          for( std::map< TypeNode, unsigned >::iterator it = rt_var_max.begin(); it != rt_var_max.end(); ++it ){
+            d_tge.d_var_id[ it->first ] = it->second;
+            d_tge.d_var_limit[ it->first ] = it->second;
+          }
+          std::random_shuffle( rt_types.begin(), rt_types.end() );
+          std::map< TypeNode, std::vector< Node > > conj_rhs;
+          for( unsigned i=0; i<rt_types.size(); i++ ){
+
+            Trace("sg-proc") << "Generate relevant RHS terms of type " << rt_types[i] << " at depth " << rdepth << "..." << std::endl;
+            d_tge.reset( rdepth, false, rt_types[i] );
+
+            while( d_tge.getNextTerm() ){
+              Node rhs = d_tge.getTerm();
+              if( considerTermCanon( rhs, false ) ){
+                Trace("sg-rel-prop") << "Relevant RHS : " << rhs << std::endl;
+                //register pattern
+                Assert( rhs.getType()==rt_types[i] );
+                registerPattern( rhs, rt_types[i] );
+                if( rdepth<depth ){
+                  //consider against all LHS at depth
+                  for( unsigned j=0; j<conj_lhs[rt_types[i]][depth].size(); j++ ){
+                    processCandidateConjecture( conj_lhs[rt_types[i]][depth][j], rhs, depth, rdepth );
+                  }
+                }else{
+                  conj_rhs[rt_types[i]].push_back( rhs );
+                }
+              }
+            }
+          }
+          flushWaitingConjectures( addedLemmas, depth, rdepth );
+          //consider against all LHS up to depth
+          if( rdepth==depth ){
+            for( unsigned lhs_depth = 1; lhs_depth<=depth; lhs_depth++ ){
+              if( (int)addedLemmas<options::conjectureGenPerRound() ){
+                Trace("sg-proc") << "Consider conjectures at depth (" << lhs_depth << ", " << rdepth << ")..." << std::endl;
+                for( std::map< TypeNode, std::vector< Node > >::iterator it = conj_rhs.begin(); it != conj_rhs.end(); ++it ){
+                  for( unsigned j=0; j<it->second.size(); j++ ){
+                    for( unsigned k=0; k<conj_lhs[it->first][lhs_depth].size(); k++ ){
+                      processCandidateConjecture( conj_lhs[it->first][lhs_depth][k], it->second[j], lhs_depth, rdepth );
+                    }
+                  }
+                }
+                flushWaitingConjectures( addedLemmas, lhs_depth, depth );
+              }
+            }
+          }
+          if( (int)addedLemmas>=options::conjectureGenPerRound() ){
+            break;
+          }
+        }
+        if( (int)addedLemmas>=options::conjectureGenPerRound() ){
+          break;
+        }
+      }
+      Trace("sg-stats") << "Total conjectures considered : " << d_conj_count << std::endl;
+      if( Trace.isOn("thm-ee") ){
+        Trace("thm-ee") << "Universal equality engine is : " << std::endl;
+        eq::EqClassesIterator ueqcs_i = eq::EqClassesIterator( &d_uequalityEngine );
+        while( !ueqcs_i.isFinished() ){
+          TNode r = (*ueqcs_i);
+          bool firstTime = true;
+          TNode rr = getUniversalRepresentative( r );
+          Trace("thm-ee") << "  " << rr;
+          Trace("thm-ee") << " : { ";
+          eq::EqClassIterator ueqc_i = eq::EqClassIterator( r, &d_uequalityEngine );
+          while( !ueqc_i.isFinished() ){
+            TNode n = (*ueqc_i);
+            if( rr!=n ){
+              if( firstTime ){
+                Trace("thm-ee") << std::endl;
+                firstTime = false;
+              }
+              Trace("thm-ee") << "    " << n << std::endl;
+            }
+            ++ueqc_i;
+          }
+          if( !firstTime ){ Trace("thm-ee") << "  "; }
+          Trace("thm-ee") << "}" << std::endl;
+          ++ueqcs_i;
+        }
+        Trace("thm-ee") << std::endl;
+      }
+      if( Trace.isOn("sg-engine") ){
+        double clSet2 = double(clock())/double(CLOCKS_PER_SEC);
+        Trace("sg-engine") << "Finished conjecture generator, time = " << (clSet2-clSet) << std::endl;
+      }
+    }
+  }
+}
+
+unsigned ConjectureGenerator::flushWaitingConjectures( unsigned& addedLemmas, int ldepth, int rdepth ) {
+  if( !d_waiting_conjectures_lhs.empty() ){
+    Trace("sg-proc") << "Generated " << d_waiting_conjectures_lhs.size() << " conjectures at depth " << ldepth << "/" << rdepth << "." << std::endl;
+    if( (int)addedLemmas<options::conjectureGenPerRound() ){
+      /*
+      std::vector< unsigned > indices;
+      for( unsigned i=0; i<d_waiting_conjectures_lhs.size(); i++ ){
+        indices.push_back( i );
+      }
+      bool doSort = false;
+      if( doSort ){
+        //sort them based on score
+        sortConjectureScore scs;
+        scs.d_scores.insert( scs.d_scores.begin(), d_waiting_conjectures_score.begin(), d_waiting_conjectures_score.end() );
+        std::sort( indices.begin(), indices.end(), scs );
+      }
+      //if( doSort && d_waiting_conjectures_score[indices[0]]<optFilterScoreThreshold() ){
+      */
+      unsigned prevCount = d_conj_count;
+      for( unsigned i=0; i<d_waiting_conjectures_lhs.size(); i++ ){
+        if( d_waiting_conjectures_score[i]>=optFilterScoreThreshold() ){
+          //we have determined a relevant subgoal
+          Node lhs = d_waiting_conjectures_lhs[i];
+          Node rhs = d_waiting_conjectures_rhs[i];
+          if( options::conjectureFilterCanonical() && ( getUniversalRepresentative( lhs )!=lhs || getUniversalRepresentative( rhs )!=rhs ) ){
+            //skip
+          }else{
+            Trace("sg-engine") << "*** Consider conjecture : " << lhs << " == " << rhs << std::endl;
+            Trace("sg-engine-debug") << "      score : " << d_waiting_conjectures_score[i] << std::endl;
+            if( optStatsOnly() ){
+              d_conj_count++;
+            }else{
+              std::vector< Node > bvs;
+              for( std::map< TypeNode, unsigned >::iterator it = d_pattern_var_id[lhs].begin(); it != d_pattern_var_id[lhs].end(); ++it ){
+                for( unsigned i=0; i<=it->second; i++ ){
+                  bvs.push_back( getFreeVar( it->first, i ) );
+                }
+              }
+              Node rsg;
+              if( !bvs.empty() ){
+                Node bvl = NodeManager::currentNM()->mkNode( BOUND_VAR_LIST, bvs );
+                rsg = NodeManager::currentNM()->mkNode( FORALL, bvl, lhs.eqNode( rhs ) );
+              }else{
+                rsg = lhs.eqNode( rhs );
+              }
+              rsg = Rewriter::rewrite( rsg );
+              d_conjectures.push_back( rsg );
+              d_eq_conjectures[lhs].push_back( rhs );
+              d_eq_conjectures[rhs].push_back( lhs );
+
+              Node lem = NodeManager::currentNM()->mkNode( OR, rsg.negate(), rsg );
+              d_quantEngine->addLemma( lem, false );
+              d_quantEngine->addRequirePhase( rsg, false );
+              addedLemmas++;
+              if( (int)addedLemmas>=options::conjectureGenPerRound() ){
+                break;
+              }
+            }
+          }
+        }
+      }
+      Trace("sg-proc") << "...have now added " << addedLemmas << " conjecture lemmas." << std::endl;
+      if( optStatsOnly() ){
+        Trace("sg-stats") << "Generated " << (d_conj_count-prevCount) << " conjectures at depth " << ldepth << "/" << rdepth << "." << std::endl;
+      }
+    }
+    d_waiting_conjectures_lhs.clear();
+    d_waiting_conjectures_rhs.clear();
+    d_waiting_conjectures_score.clear();
+    d_waiting_conjectures.clear();
+  }
+  return addedLemmas;
+}
+
+void ConjectureGenerator::registerQuantifier( Node q ) {
+
+}
+
+void ConjectureGenerator::assertNode( Node n ) {
+
+}
+
+bool ConjectureGenerator::considerTermCanon( Node ln, bool genRelevant ){
+  if( !ln.isNull() ){
+    //do not consider if it is non-canonical, and either:
+    //  (1) we are not generating relevant terms, or
+    //  (2) its canonical form is a generalization.
+    TNode lnr = getUniversalRepresentative( ln, true );
+    if( lnr==ln ){
+      markReportedCanon( ln );
+    }else if( !genRelevant || isGeneralization( lnr, ln ) ){
+      Trace("sg-gen-consider-term") << "Do not consider term, " << ln << " is not canonical representation (which is " << lnr << ")." << std::endl;
+      return false;
+    }
+  }
+  Trace("sg-gen-tg-debug") << "Will consider term canon " << ln << std::endl;
+  Trace("sg-gen-consider-term-debug") << std::endl;
+  return true;
+}
+
+unsigned ConjectureGenerator::collectFunctions( TNode opat, TNode pat, std::map< TNode, unsigned >& funcs,
+                                             std::map< TypeNode, unsigned >& mnvn, std::map< TypeNode, unsigned >& mxvn ){
+  if( pat.hasOperator() ){
+    funcs[pat.getOperator()]++;
+    if( !d_tge.isRelevantFunc( pat.getOperator() ) ){
+      d_pattern_is_relevant[opat] = false;
+    }
+    unsigned sum = 1;
+    for( unsigned i=0; i<pat.getNumChildren(); i++ ){
+      sum += collectFunctions( opat, pat[i], funcs, mnvn, mxvn );
+    }
+    return sum;
+  }else{
+    Assert( pat.getNumChildren()==0 );
+    funcs[pat]++;
+    //for variables
+    if( pat.getKind()==BOUND_VARIABLE ){
+      if( funcs[pat]>1 ){
+        //duplicate variable
+        d_pattern_var_duplicate[opat]++;
+      }else{
+        //check for max/min
+        TypeNode tn = pat.getType();
+        unsigned vn = pat.getAttribute(InstVarNumAttribute());
+        std::map< TypeNode, unsigned >::iterator it = mnvn.find( tn );
+        if( it!=mnvn.end() ){
+          if( vn<it->second ){
+            d_pattern_is_normal[opat] = false;
+            mnvn[tn] = vn;
+          }else if( vn>mxvn[tn] ){
+            if( vn!=mxvn[tn]+1 ){
+              d_pattern_is_normal[opat] = false;
+            }
+            mxvn[tn] = vn;
+          }
+        }else{
+          //first variable of this type
+          mnvn[tn] = vn;
+          mxvn[tn] = vn;
+        }
+      }
+    }else{
+      d_pattern_is_relevant[opat] = false;
+    }
+    return 1;
+  }
+}
+
+void ConjectureGenerator::registerPattern( Node pat, TypeNode tpat ) {
+  if( std::find( d_patterns[tpat].begin(), d_patterns[tpat].end(), pat )==d_patterns[tpat].end() ){
+    d_patterns[TypeNode::null()].push_back( pat );
+    d_patterns[tpat].push_back( pat );
+
+    Assert( d_pattern_fun_id.find( pat )==d_pattern_fun_id.end() );
+    Assert( d_pattern_var_id.find( pat )==d_pattern_var_id.end() );
+
+    //collect functions
+    std::map< TypeNode, unsigned > mnvn;
+    d_pattern_fun_sum[pat] = collectFunctions( pat, pat, d_pattern_fun_id[pat], mnvn, d_pattern_var_id[pat] );
+    if( d_pattern_is_normal.find( pat )==d_pattern_is_normal.end() ){
+      d_pattern_is_normal[pat] = true;
+    }
+    if( d_pattern_is_relevant.find( pat )==d_pattern_is_relevant.end() ){
+      d_pattern_is_relevant[pat] = true;
+    }
+  }
+}
+
+bool ConjectureGenerator::isGeneralization( TNode patg, TNode pat, std::map< TNode, TNode >& subs ) {
+  if( patg.getKind()==BOUND_VARIABLE ){
+    std::map< TNode, TNode >::iterator it = subs.find( patg );
+    if( it!=subs.end() ){
+      return it->second==pat;
+    }else{
+      subs[patg] = pat;
+      return true;
+    }
+  }else{
+    Assert( patg.hasOperator() );
+    if( !pat.hasOperator() || patg.getOperator()!=pat.getOperator() ){
+      return false;
+    }else{
+      Assert( patg.getNumChildren()==pat.getNumChildren() );
+      for( unsigned i=0; i<patg.getNumChildren(); i++ ){
+        if( !isGeneralization( patg[i], pat[i], subs ) ){
+          return false;
+        }
+      }
+      return true;
+    }
+  }
+}
+
+int ConjectureGenerator::calculateGeneralizationDepth( TNode n, std::vector< TNode >& fv ) {
+  if( n.getKind()==BOUND_VARIABLE ){
+    if( std::find( fv.begin(), fv.end(), n )==fv.end() ){
+      fv.push_back( n );
+      return 0;
+    }else{
+      return 1;
+    }
+  }else{
+    int depth = 1;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      depth += calculateGeneralizationDepth( n[i], fv );
+    }
+    return depth;
+  }
+}
+
+Node ConjectureGenerator::getPredicateForType( TypeNode tn ) {
+  std::map< TypeNode, Node >::iterator it = d_typ_pred.find( tn );
+  if( it==d_typ_pred.end() ){
+    TypeNode op_tn = NodeManager::currentNM()->mkFunctionType( tn, NodeManager::currentNM()->booleanType() );
+    Node op = NodeManager::currentNM()->mkSkolem( "PE", op_tn, "was created by conjecture ground term enumerator." );
+    d_typ_pred[tn] = op;
+    return op;
+  }else{
+    return it->second;
+  }
+}
+
+void ConjectureGenerator::getEnumerateUfTerm( Node n, unsigned num, std::vector< Node >& terms ) {
+  if( n.getNumChildren()>0 ){
+    std::vector< int > vec;
+    std::vector< TypeNode > types;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      vec.push_back( 0 );
+      TypeNode tn = n[i].getType();
+      if( getTermDatabase()->isClosedEnumerableType( tn ) ){
+        types.push_back( tn );
+      }else{
+        return;
+      }
+    }
+    vec.pop_back();
+    int size_limit = 0;
+    int vec_sum = -1;
+    unsigned index = 0;
+    unsigned last_size = terms.size();
+    while( terms.size()<num ){
+      bool success = true;
+      if( vec_sum==-1 ){
+        vec_sum = 0;
+        vec.push_back( size_limit );
+      }else{
+        //see if we can iterate current
+        if( vec_sum<size_limit && !getTermDatabase()->getEnumerateTerm( types[index], vec[index]+1 ).isNull() ){
+          vec[index]++;
+          vec_sum++;
+          vec.push_back( size_limit - vec_sum );
+        }else{
+          vec_sum -= vec[index];
+          vec[index] = 0;
+          index++;
+          if( index==n.getNumChildren() ){
+            success = false;
+          }
+        }
+      }
+      if( success ){
+        if( vec.size()==n.getNumChildren() ){
+          Node lc = getTermDatabase()->getEnumerateTerm( types[vec.size()-1], vec[vec.size()-1] );
+          if( !lc.isNull() ){
+            for( unsigned i=0; i<vec.size(); i++ ){
+              Trace("sg-gt-enum-debug") << vec[i] << " ";
+            }
+            Trace("sg-gt-enum-debug") << " / " << size_limit << std::endl;
+            for( unsigned i=0; i<n.getNumChildren(); i++ ){
+              Trace("sg-gt-enum-debug") << n[i].getType() << " ";
+            }
+            Trace("sg-gt-enum-debug") << std::endl;
+            std::vector< Node > children;
+            children.push_back( n.getOperator() );
+            for( unsigned i=0; i<(vec.size()-1); i++ ){
+              Node nn = getTermDatabase()->getEnumerateTerm( types[i], vec[i] );
+              Assert( !nn.isNull() );
+              Assert( nn.getType()==n[i].getType() );
+              children.push_back( nn );
+            }
+            children.push_back( lc );
+            Node n = NodeManager::currentNM()->mkNode( APPLY_UF, children );
+            Trace("sg-gt-enum") << "Ground term enumerate : " << n << std::endl;
+            terms.push_back( n );
+          }
+          vec.pop_back();
+          index = 0;
+        }
+      }else{
+        if( terms.size()>last_size ){
+          last_size = terms.size();
+          size_limit++;
+          for( unsigned i=0; i<vec.size(); i++ ){
+            vec[i] = 0;
+          }
+          vec_sum = -1;
+        }else{
+          return;
+        }
+      }
+    }
+  }else{
+    terms.push_back( n );
+  }
+}
+
+void ConjectureGenerator::getEnumeratePredUfTerm( Node n, unsigned num, std::vector< Node >& terms ) {
+  std::vector< Node > uf_terms;
+  getEnumerateUfTerm( n, num, uf_terms );
+  Node p = getPredicateForType( n.getType() );
+  for( unsigned i=0; i<uf_terms.size(); i++ ){
+    terms.push_back( NodeManager::currentNM()->mkNode( APPLY_UF, p, uf_terms[i] ) );
+  }
+}
+
+void ConjectureGenerator::processCandidateConjecture( TNode lhs, TNode rhs, unsigned lhs_depth, unsigned rhs_depth ) {
+  int score = considerCandidateConjecture( lhs, rhs );
+  if( score>0 ){
+    Trace("sg-conjecture") << "* Candidate conjecture : " << lhs << " == " << rhs << std::endl;
+    Trace("sg-conjecture-debug") << "     LHS, RHS generalization depth : " << lhs_depth << ", " << rhs_depth << std::endl;
+    Trace("sg-conjecture-debug") << "     confirmed = " << d_subs_confirmCount << ", #witnesses range = " << d_subs_confirmWitnessRange.size() << "." << std::endl;
+    Trace("sg-conjecture-debug") << "     #witnesses for ";
+    bool firstTime = true;
+    for( std::map< TNode, std::vector< TNode > >::iterator it = d_subs_confirmWitnessDomain.begin(); it != d_subs_confirmWitnessDomain.end(); ++it ){
+      if( !firstTime ){
+        Trace("sg-conjecture-debug") << ", ";
+      }
+      Trace("sg-conjecture-debug") << it->first << " : " << it->second.size();
+      //if( it->second.size()==1 ){
+      //  Trace("sg-conjecture-debug") << " (" << it->second[0] << ")";
+      //}
+      Trace("sg-conjecture-debug2") << " (";
+      for( unsigned j=0; j<it->second.size(); j++ ){
+        if( j>0 ){ Trace("sg-conjecture-debug2") << " "; }
+        Trace("sg-conjecture-debug2") << d_ground_eqc_map[it->second[j]];
+      }
+      Trace("sg-conjecture-debug2") << ")";
+      firstTime = false;
+    }
+    Trace("sg-conjecture-debug") << std::endl;
+    Trace("sg-conjecture-debug") << "     unknown = " << d_subs_unkCount << std::endl;
+    //Assert( getUniversalRepresentative( rhs )==rhs );
+    //Assert( getUniversalRepresentative( lhs )==lhs );
+    d_waiting_conjectures_lhs.push_back( lhs );
+    d_waiting_conjectures_rhs.push_back( rhs );
+    d_waiting_conjectures_score.push_back( score );
+    d_waiting_conjectures[lhs].push_back( rhs );
+    d_waiting_conjectures[rhs].push_back( lhs );
+  }else{
+    Trace("sg-conjecture-debug2") << "...do not consider " << lhs << " == " << rhs << ", score = " << score << std::endl;
+  }
+}
+
+int ConjectureGenerator::considerCandidateConjecture( TNode lhs, TNode rhs ) {
+  Assert( lhs.getType()==rhs.getType() );
+
+  Trace("sg-cconj-debug") << "Consider candidate conjecture : " << lhs << " == " << rhs << "?" << std::endl;
+  if( lhs==rhs ){
+    Trace("sg-cconj-debug") << "  -> trivial." << std::endl;
+    return -1;
+  }else{
+    if( lhs.getKind()==APPLY_CONSTRUCTOR && rhs.getKind()==APPLY_CONSTRUCTOR ){
+      Trace("sg-cconj-debug") << "  -> irrelevant by syntactic analysis." << std::endl;
+      return -1;
+    }
+    //variables of LHS must subsume variables of RHS
+    for( std::map< TypeNode, unsigned >::iterator it = d_pattern_var_id[rhs].begin(); it != d_pattern_var_id[rhs].end(); ++it ){
+      std::map< TypeNode, unsigned >::iterator itl = d_pattern_var_id[lhs].find( it->first );
+      if( itl!=d_pattern_var_id[lhs].end() ){
+        if( itl->second<it->second ){
+          Trace("sg-cconj-debug") << "  -> variables of sort " << it->first << " are not subsumed." << std::endl;
+          return -1;
+        }else{
+          Trace("sg-cconj-debug2") << "  variables of sort " << it->first << " are : " << itl->second << " vs " << it->second << std::endl;
+        }
+      }else{
+        Trace("sg-cconj-debug") << "  -> has no variables of sort " << it->first << "." << std::endl;
+        return -1;
+      }
+    }
+
+    //currently active conjecture?
+    std::map< Node, std::vector< Node > >::iterator iteq = d_eq_conjectures.find( lhs );
+    if( iteq!=d_eq_conjectures.end() ){
+      if( std::find( iteq->second.begin(), iteq->second.end(), rhs )!=iteq->second.end() ){
+        Trace("sg-cconj-debug") << "  -> this conjecture is already active." << std::endl;
+        return -1;
+      }
+    }
+    //current a waiting conjecture?
+    std::map< Node, std::vector< Node > >::iterator itw = d_waiting_conjectures.find( lhs );
+    if( itw!=d_waiting_conjectures.end() ){
+      if( std::find( itw->second.begin(), itw->second.end(), rhs )!=itw->second.end() ){
+        Trace("sg-cconj-debug") << "  -> already are considering this conjecture." << std::endl;
+        return -1;
+      }
+    }
+    //check if canonical representation (should be, but for efficiency this is not guarenteed)
+    //if( options::conjectureFilterCanonical() && ( getUniversalRepresentative( lhs )!=lhs || getUniversalRepresentative( rhs )!=rhs ) ){
+    //  Trace("sg-cconj") << "  -> after processing, not canonical." << std::endl;
+    //  return -1;
+    //}
+
+    int score;
+    bool scoreSet = false;
+
+    Trace("sg-cconj") << "Consider possible candidate conjecture : " << lhs << " == " << rhs << "?" << std::endl;
+    //find witness for counterexample, if possible
+    if( options::conjectureFilterModel() ){
+      Assert( d_rel_pattern_var_sum.find( lhs )!=d_rel_pattern_var_sum.end() );
+      Trace("sg-cconj-debug") << "Notify substitutions over " << d_rel_pattern_var_sum[lhs] << " variables." << std::endl;
+      std::map< TNode, TNode > subs;
+      d_subs_confirmCount = 0;
+      d_subs_confirmWitnessRange.clear();
+      d_subs_confirmWitnessDomain.clear();
+      d_subs_unkCount = 0;
+      if( !d_rel_pattern_subs_index[lhs].notifySubstitutions( this, subs, rhs, d_rel_pattern_var_sum[lhs] ) ){
+        Trace("sg-cconj") << "  -> found witness that falsifies the conjecture." << std::endl;
+        return -1;
+      }
+      //score is the minimum number of distinct substitutions for a variable
+      for( std::map< TNode, std::vector< TNode > >::iterator it = d_subs_confirmWitnessDomain.begin(); it != d_subs_confirmWitnessDomain.end(); ++it ){
+        int num = (int)it->second.size();
+        if( !scoreSet || num<score ){
+          score = num;
+          scoreSet = true;
+        }
+      }
+      if( !scoreSet ){
+        score = 0;
+      }
+      Trace("sg-cconj") << "     confirmed = " << d_subs_confirmCount << ", #witnesses range = " << d_subs_confirmWitnessRange.size() << "." << std::endl;
+      for( std::map< TNode, std::vector< TNode > >::iterator it = d_subs_confirmWitnessDomain.begin(); it != d_subs_confirmWitnessDomain.end(); ++it ){
+        Trace("sg-cconj") << "     #witnesses for " << it->first << " : " << it->second.size() << std::endl;
+      }
+    }else{
+      score = 1;
+    }
+
+    Trace("sg-cconj") << "  -> SUCCESS." << std::endl;
+    Trace("sg-cconj") << "     score : " << score << std::endl;
+
+    return score;
+  }
+}
+
+bool ConjectureGenerator::notifySubstitution( TNode glhs, std::map< TNode, TNode >& subs, TNode rhs ) {
+  if( Trace.isOn("sg-cconj-debug") ){
+    Trace("sg-cconj-debug") << "Ground eqc for LHS : " << glhs << ", based on substituion: " << std::endl;
+    for( std::map< TNode, TNode >::iterator it = subs.begin(); it != subs.end(); ++it ){
+      Assert( getRepresentative( it->second )==it->second );
+      Trace("sg-cconj-debug") << "  " << it->first << " -> " << it->second << std::endl;
+    }
+  }
+  Trace("sg-cconj-debug") << "Evaluate RHS : : " << rhs << std::endl;
+  //get the representative of rhs with substitution subs
+  TNode grhs = getTermDatabase()->getEntailedTerm( rhs, subs, true );
+  Trace("sg-cconj-debug") << "...done evaluating term, got : " << grhs << std::endl;
+  if( !grhs.isNull() ){
+    if( glhs!=grhs ){
+      Trace("sg-cconj-debug") << "Ground eqc for RHS : " << grhs << std::endl;
+      //check based on ground terms
+      std::map< TNode, Node >::iterator itl = d_ground_eqc_map.find( glhs );
+      if( itl!=d_ground_eqc_map.end() ){
+        std::map< TNode, Node >::iterator itr = d_ground_eqc_map.find( grhs );
+        if( itr!=d_ground_eqc_map.end() ){
+          Trace("sg-cconj-debug") << "We have ground terms " << itl->second << " and " << itr->second << "." << std::endl;
+          if( itl->second.isConst() && itr->second.isConst() ){
+            Trace("sg-cconj-debug") << "...disequal constants." << std::endl;
+            Trace("sg-cconj-witness") << "  Witness of falsification : " << itl->second << " != " << itr->second << ", substutition is : " << std::endl;
+            for( std::map< TNode, TNode >::iterator it = subs.begin(); it != subs.end(); ++it ){
+              Trace("sg-cconj-witness") << "    " << it->first << " -> " << it->second << std::endl;
+            }
+            return false;
+          }
+        }
+      }
+    }
+    Trace("sg-cconj-debug") << "RHS is identical." << std::endl;
+    bool isGroundSubs = true;
+    for( std::map< TNode, TNode >::iterator it = subs.begin(); it != subs.end(); ++it ){
+      std::map< TNode, Node >::iterator git = d_ground_eqc_map.find( it->second );
+      if( git==d_ground_eqc_map.end() ){
+        isGroundSubs = false;
+        break;
+      }
+    }
+    if( isGroundSubs ){
+      if( glhs==grhs ){
+        Trace("sg-cconj-witness") << "  Witnessed " << glhs << " == " << grhs << ", substutition is : " << std::endl;
+        for( std::map< TNode, TNode >::iterator it = subs.begin(); it != subs.end(); ++it ){
+          Trace("sg-cconj-witness") << "    " << it->first << " -> " << it->second << std::endl;
+          if( std::find( d_subs_confirmWitnessDomain[it->first].begin(), d_subs_confirmWitnessDomain[it->first].end(), it->second )==d_subs_confirmWitnessDomain[it->first].end() ){
+            d_subs_confirmWitnessDomain[it->first].push_back( it->second );
+          }
+        }
+        d_subs_confirmCount++;
+        if( std::find( d_subs_confirmWitnessRange.begin(), d_subs_confirmWitnessRange.end(), glhs )==d_subs_confirmWitnessRange.end() ){
+          d_subs_confirmWitnessRange.push_back( glhs );
+        }
+      }else{
+        if( optFilterUnknown() ){
+          Trace("sg-cconj-debug") << "...ground substitution giving terms that are neither equal nor disequal." << std::endl;
+          return false;
+        }
+      }
+    }
+  }else{
+    Trace("sg-cconj-debug") << "(could not ground eqc for RHS)." << std::endl;
+  }
+  return true;
+}
+
+
+
+
+
+
+void TermGenerator::reset( TermGenEnv * s, TypeNode tn ) {
+  Assert( d_children.empty() );
+  d_typ = tn;
+  d_status = 0;
+  d_status_num = 0;
+  d_children.clear();
+  Trace("sg-gen-tg-debug2") << "...add to context " << this << std::endl;
+  d_id = s->d_tg_id;
+  s->changeContext( true );
+}
+
+bool TermGenerator::getNextTerm( TermGenEnv * s, unsigned depth ) {
+  if( Trace.isOn("sg-gen-tg-debug2") ){
+    Trace("sg-gen-tg-debug2") << this << " getNextTerm depth " << depth << " : status = " << d_status << ", num = " << d_status_num;
+    if( d_status==5 ){
+      TNode f = s->getTgFunc( d_typ, d_status_num );
+      Trace("sg-gen-tg-debug2") << ", f = " << f;
+      Trace("sg-gen-tg-debug2") << ", #args = " << s->d_func_args[f].size();
+      Trace("sg-gen-tg-debug2") << ", childNum = " << d_status_child_num;
+      Trace("sg-gen-tg-debug2") << ", #children = " << d_children.size();
+    }
+    Trace("sg-gen-tg-debug2") << std::endl;
+  }
+
+  if( d_status==0 ){
+    d_status++;
+    if( !d_typ.isNull() ){
+      if( s->allowVar( d_typ ) ){
+        //allocate variable
+        d_status_num = s->d_var_id[d_typ];
+        s->addVar( d_typ );
+        Trace("sg-gen-tg-debug2") << this << " ...return unique var #" << d_status_num << std::endl;
+        return s->considerCurrentTerm() ? true : getNextTerm( s, depth );
+      }else{
+        //check allocating new variable
+        d_status++;
+        d_status_num = -1;
+        if( s->d_gen_relevant_terms ){
+          s->d_tg_gdepth++;
+        }
+        return getNextTerm( s, depth );
+      }
+    }else{
+      d_status = 4;
+      d_status_num = -1;
+      return getNextTerm( s, depth );
+    }
+  }else if( d_status==2 ){
+    //cleanup previous information
+    //if( d_status_num>=0 ){
+    //  s->d_var_eq_tg[d_status_num].pop_back();
+    //}
+    //check if there is another variable
+    if( (d_status_num+1)<(int)s->getNumTgVars( d_typ ) ){
+      d_status_num++;
+      //we have equated two variables
+      //s->d_var_eq_tg[d_status_num].push_back( d_id );
+      Trace("sg-gen-tg-debug2") << this << "...consider other var #" << d_status_num << std::endl;
+      return s->considerCurrentTerm() ? true : getNextTerm( s, depth );
+    }else{
+      if( s->d_gen_relevant_terms ){
+        s->d_tg_gdepth--;
+      }
+      d_status++;
+      return getNextTerm( s, depth );
+    }
+  }else if( d_status==4 ){
+    d_status++;
+    if( depth>0 && (d_status_num+1)<(int)s->getNumTgFuncs( d_typ ) ){
+      d_status_num++;
+      d_status_child_num = 0;
+      Trace("sg-gen-tg-debug2") << this << "...consider function " << s->getTgFunc( d_typ, d_status_num ) << std::endl;
+      s->d_tg_gdepth++;
+      if( !s->considerCurrentTerm() ){
+        s->d_tg_gdepth--;
+        //don't consider this function
+        d_status--;
+      }else{
+        //we have decided on a function application
+      }
+      return getNextTerm( s, depth );
+    }else{
+      //do not choose function applications at depth 0
+      d_status++;
+      return getNextTerm( s, depth );
+    }
+  }else if( d_status==5 ){
+    //iterating over arguments
+    TNode f = s->getTgFunc( d_typ, d_status_num );
+    if( d_status_child_num<0 ){
+      //no more arguments
+      s->d_tg_gdepth--;
+      d_status--;
+      return getNextTerm( s, depth );
+    }else if( d_status_child_num==(int)s->d_func_args[f].size() ){
+      d_status_child_num--;
+      return s->considerCurrentTermCanon( d_id ) ? true : getNextTerm( s, depth );
+      //return true;
+    }else{
+      Assert( d_status_child_num<(int)s->d_func_args[f].size() );
+      if( d_status_child_num==(int)d_children.size() ){
+        d_children.push_back( s->d_tg_id );
+        Assert( s->d_tg_alloc.find( s->d_tg_id )==s->d_tg_alloc.end() );
+        s->d_tg_alloc[d_children[d_status_child_num]].reset( s, s->d_func_args[f][d_status_child_num] );
+        return getNextTerm( s, depth );
+      }else{
+        Assert( d_status_child_num+1==(int)d_children.size() );
+        if( s->d_tg_alloc[d_children[d_status_child_num]].getNextTerm( s, depth-1 ) ){
+          d_status_child_num++;
+          return getNextTerm( s, depth );
+        }else{
+          d_children.pop_back();
+          d_status_child_num--;
+          return getNextTerm( s, depth );
+        }
+      }
+    }
+  }else if( d_status==1 || d_status==3 ){
+    if( d_status==1 ){
+      s->removeVar( d_typ );
+      Assert( d_status_num==(int)s->d_var_id[d_typ] );
+      //check if there is only one feasible equivalence class.  if so, don't make pattern any more specific.
+      //unsigned i = s->d_ccand_eqc[0].size()-1;
+      //if( s->d_ccand_eqc[0][i].size()==1 && s->d_ccand_eqc[1][i].empty() ){
+      //  d_status = 6;
+      //  return getNextTerm( s, depth );
+      //}
+      s->d_tg_gdepth++;
+    }
+    d_status++;
+    d_status_num = -1;
+    return getNextTerm( s, depth );
+  }else{
+    //clean up
+    Assert( d_children.empty() );
+    Trace("sg-gen-tg-debug2") << "...remove from context " << this << std::endl;
+    s->changeContext( false );
+    Assert( d_id==s->d_tg_id );
+    return false;
+  }
+}
+
+void TermGenerator::resetMatching( TermGenEnv * s, TNode eqc, unsigned mode ) {
+  d_match_status = 0;
+  d_match_status_child_num = 0;
+  d_match_children.clear();
+  d_match_children_end.clear();
+  d_match_mode = mode;
+  //if this term generalizes, it must generalize a non-ground term
+  //if( (d_match_mode & ( 1 << 2 ))!=0 && s->isGroundEqc( eqc ) && d_status==5 ){
+  //  d_match_status = -1;
+  //}
+}
+
+bool TermGenerator::getNextMatch( TermGenEnv * s, TNode eqc, std::map< TypeNode, std::map< unsigned, TNode > >& subs, std::map< TNode, bool >& rev_subs ) {
+  if( d_match_status<0 ){
+    return false;
+  }
+  if( Trace.isOn("sg-gen-tg-match") ){
+    Trace("sg-gen-tg-match") << "Matching ";
+    debugPrint( s, "sg-gen-tg-match", "sg-gen-tg-match" );
+    Trace("sg-gen-tg-match") << " with eqc e" << s->d_cg->d_em[eqc] << "..." << std::endl;
+    Trace("sg-gen-tg-match") << "   mstatus = " << d_match_status;
+    if( d_status==5 ){
+      TNode f = s->getTgFunc( d_typ, d_status_num );
+      Trace("sg-gen-tg-debug2") << ", f = " << f;
+      Trace("sg-gen-tg-debug2") << ", #args = " << s->d_func_args[f].size();
+      Trace("sg-gen-tg-debug2") << ", mchildNum = " << d_match_status_child_num;
+      Trace("sg-gen-tg-debug2") << ", #mchildren = " << d_match_children.size();
+    }
+    Trace("sg-gen-tg-debug2") << ", current substitution : {";
+    for( std::map< TypeNode, std::map< unsigned, TNode > >::iterator itt = subs.begin(); itt != subs.end(); ++itt ){
+      for( std::map< unsigned, TNode >::iterator it = itt->second.begin(); it != itt->second.end(); ++it ){
+        Trace("sg-gen-tg-debug2")  << " " << it->first << " -> e" << s->d_cg->d_em[it->second];
+      }
+    }
+    Trace("sg-gen-tg-debug2") << " } " << std::endl;
+  }
+  if( d_status==1 ){
+    //a variable
+    if( d_match_status==0 ){
+      d_match_status++;
+      if( (d_match_mode & ( 1 << 1 ))!=0 ){
+        //only ground terms
+        if( !s->isGroundEqc( eqc ) ){
+          return false;
+        }
+      }else if( (d_match_mode & ( 1 << 2 ))!=0 ){
+        //only non-ground terms
+        //if( s->isGroundEqc( eqc ) ){
+        //  return false;
+        //}
+      }
+      //store the match : restricted if match_mode.0 = 1
+      if( (d_match_mode & ( 1 << 0 ))!=0 ){
+        std::map< TNode, bool >::iterator it = rev_subs.find( eqc );
+        if( it==rev_subs.end() ){
+          rev_subs[eqc] = true;
+        }else{
+          return false;
+        }
+      }
+      Assert( subs[d_typ].find( d_status_num )==subs[d_typ].end() );
+      subs[d_typ][d_status_num] = eqc;
+      return true;
+    }else{
+      //clean up
+      subs[d_typ].erase( d_status_num );
+      if( (d_match_mode & ( 1 << 0 ))!=0 ){
+        rev_subs.erase( eqc );
+      }
+      return false;
+    }
+  }else if( d_status==2 ){
+    if( d_match_status==0 ){
+      d_match_status++;
+      Assert( d_status_num<(int)s->getNumTgVars( d_typ ) );
+      std::map< unsigned, TNode >::iterator it = subs[d_typ].find( d_status_num );
+      Assert( it!=subs[d_typ].end() );
+      return it->second==eqc;
+    }else{
+      return false;
+    }
+  }else if( d_status==5 ){
+    //Assert( d_match_children.size()<=d_children.size() );
+    //enumerating over f-applications in eqc
+    if( d_match_status_child_num<0 ){
+      return false;
+    }else if( d_match_status==0 ){
+      //set up next binding
+      if( d_match_status_child_num==(int)d_match_children.size() ){
+        if( d_match_status_child_num==0 ){
+          //initial binding
+          TNode f = s->getTgFunc( d_typ, d_status_num );
+          Assert( !eqc.isNull() );
+          TermArgTrie * tat = s->getTermDatabase()->getTermArgTrie( eqc, f );
+          if( tat ){
+            d_match_children.push_back( tat->d_data.begin() );
+            d_match_children_end.push_back( tat->d_data.end() );
+          }else{
+            d_match_status++;
+            d_match_status_child_num--;
+            return getNextMatch( s, eqc, subs, rev_subs );
+          }
+        }else{
+          d_match_children.push_back( d_match_children[d_match_status_child_num-1]->second.d_data.begin() );
+          d_match_children_end.push_back( d_match_children[d_match_status_child_num-1]->second.d_data.end() );
+        }
+      }
+      d_match_status++;
+      Assert( d_match_status_child_num+1==(int)d_match_children.size() );
+      if( d_match_children[d_match_status_child_num]==d_match_children_end[d_match_status_child_num] ){
+        //no more arguments to bind
+        d_match_children.pop_back();
+        d_match_children_end.pop_back();
+        d_match_status_child_num--;
+        return getNextMatch( s, eqc, subs, rev_subs );
+      }else{
+        if( d_match_status_child_num==(int)d_children.size() ){
+          //successfully matched all children
+          d_match_children.pop_back();
+          d_match_children_end.pop_back();
+          d_match_status_child_num--;
+          return true;//return d_match_children[d_match_status]!=d_match_children_end[d_match_status];
+        }else{
+          //do next binding
+          s->d_tg_alloc[d_children[d_match_status_child_num]].resetMatching( s, d_match_children[d_match_status_child_num]->first, d_match_mode );
+          return getNextMatch( s, eqc, subs, rev_subs );
+        }
+      }
+    }else{
+      Assert( d_match_status==1 );
+      Assert( d_match_status_child_num+1==(int)d_match_children.size() );
+      Assert( d_match_children[d_match_status_child_num]!=d_match_children_end[d_match_status_child_num] );
+      d_match_status--;
+      if( s->d_tg_alloc[d_children[d_match_status_child_num]].getNextMatch( s, d_match_children[d_match_status_child_num]->first, subs, rev_subs ) ){
+        d_match_status_child_num++;
+        return getNextMatch( s, eqc, subs, rev_subs );
+      }else{
+        //iterate
+        d_match_children[d_match_status_child_num]++;
+        return getNextMatch( s, eqc, subs, rev_subs );
+      }
+    }
+  }
+  Assert( false );
+  return false;
+}
+
+unsigned TermGenerator::getDepth( TermGenEnv * s ) {
+  if( d_status==5 ){
+    unsigned maxd = 0;
+    for( unsigned i=0; i<d_children.size(); i++ ){
+      unsigned d = s->d_tg_alloc[d_children[i]].getDepth( s );
+      if( d>maxd ){
+        maxd = d;
+      }
+    }
+    return 1+maxd;
+  }else{
+    return 0;
+  }
+}
+
+unsigned TermGenerator::calculateGeneralizationDepth( TermGenEnv * s, std::map< TypeNode, std::vector< int > >& fvs ) {
+  if( d_status==5 ){
+    unsigned sum = 1;
+    for( unsigned i=0; i<d_children.size(); i++ ){
+      sum += s->d_tg_alloc[d_children[i]].calculateGeneralizationDepth( s, fvs );
+    }
+    return sum;
+  }else{
+    Assert( d_status==2 || d_status==1 );
+    std::map< TypeNode, std::vector< int > >::iterator it = fvs.find( d_typ );
+    if( it!=fvs.end() ){
+      if( std::find( it->second.begin(), it->second.end(), d_status_num )!=it->second.end() ){
+        return 1;
+      }
+    }
+    fvs[d_typ].push_back( d_status_num );
+    return 0;
+  }
+}
+
+unsigned TermGenerator::getGeneralizationDepth( TermGenEnv * s ) {
+  //if( s->d_gen_relevant_terms ){
+  //  return s->d_tg_gdepth;
+  //}else{
+    std::map< TypeNode, std::vector< int > > fvs;
+    return calculateGeneralizationDepth( s, fvs );
+  //}
+}
+
+Node TermGenerator::getTerm( TermGenEnv * s ) {
+  if( d_status==1 || d_status==2 ){
+    Assert( !d_typ.isNull() );
+    return s->getFreeVar( d_typ, d_status_num );
+  }else if( d_status==5 ){
+    Node f = s->getTgFunc( d_typ, d_status_num );
+    if( d_children.size()==s->d_func_args[f].size() ){
+      std::vector< Node > children;
+      if( s->d_tg_func_param[f] ){
+        children.push_back( f );
+      }
+      for( unsigned i=0; i<d_children.size(); i++ ){
+        Node nc = s->d_tg_alloc[d_children[i]].getTerm( s );
+        if( nc.isNull() ){
+          return Node::null();
+        }else{
+          //Assert( nc.getType()==s->d_func_args[f][i] );
+          children.push_back( nc );
+        }
+      }
+      return NodeManager::currentNM()->mkNode( s->d_func_kind[f], children );
+    }
+  }else{
+    Assert( false );
+  }
+  return Node::null();
+}
+
+void TermGenerator::debugPrint( TermGenEnv * s, const char * c, const char * cd ) {
+  Trace(cd) << "[*" << d_id << "," << d_status << "]:";
+  if( d_status==1 || d_status==2 ){
+    Trace(c) << s->getFreeVar( d_typ, d_status_num );
+  }else if( d_status==5 ){
+    TNode f = s->getTgFunc( d_typ, d_status_num );
+    Trace(c) << "(" << f;
+    for( unsigned i=0; i<d_children.size(); i++ ){
+      Trace(c) << " ";
+       s->d_tg_alloc[d_children[i]].debugPrint( s, c, cd );
+    }
+    if( d_children.size()<s->d_func_args[f].size() ){
+      Trace(c) << " ...";
+    }
+    Trace(c) << ")";
+  }else{
+    Trace(c) << "???";
+  }
+}
+
+void TermGenEnv::collectSignatureInformation() {
+  d_typ_tg_funcs.clear();
+  d_funcs.clear();
+  d_func_kind.clear();
+  d_func_args.clear();
+  TypeNode tnull;
+  for( std::map< Node, std::vector< Node > >::iterator it = getTermDatabase()->d_op_map.begin(); it != getTermDatabase()->d_op_map.end(); ++it ){
+    if( !it->second.empty() ){
+      Node nn = it->second[0];
+      Trace("sg-rel-sig-debug") << "Check in signature : " << nn << std::endl;
+      if( d_cg->isHandledTerm( nn ) && nn.getKind()!=APPLY_SELECTOR_TOTAL && !nn.getType().isBoolean() ){
+        bool do_enum = true;
+        //check if we have enumerated ground terms
+        if( nn.getKind()==APPLY_UF ){
+          Trace("sg-rel-sig-debug") << "Check enumeration..." << std::endl;
+          if( !d_cg->hasEnumeratedUf( nn ) ){
+            do_enum = false;
+          }
+        }
+        if( do_enum ){
+          Trace("sg-rel-sig-debug") << "Set enumeration..." << std::endl;
+          d_funcs.push_back( it->first );
+          for( unsigned i=0; i<nn.getNumChildren(); i++ ){
+            d_func_args[it->first].push_back( nn[i].getType() );
+          }
+          d_func_kind[it->first] = nn.getKind();
+          d_typ_tg_funcs[tnull].push_back( it->first );
+          d_typ_tg_funcs[nn.getType()].push_back( it->first );
+          d_tg_func_param[it->first] = ( nn.getMetaKind() == kind::metakind::PARAMETERIZED );
+          Trace("sg-rel-sig") << "Will enumerate function applications of : " << it->first << ", #args = " << d_func_args[it->first].size() << ", kind = " << nn.getKind() << std::endl;
+          //getTermDatabase()->computeUfEqcTerms( it->first );
+        }
+      }
+      Trace("sg-rel-sig-debug") << "Done check in signature : " << nn << std::endl;
+    }
+  }
+  //shuffle functions
+  for( std::map< TypeNode, std::vector< TNode > >::iterator it = d_typ_tg_funcs.begin(); it != d_typ_tg_funcs.end(); ++it ){
+    std::random_shuffle( it->second.begin(), it->second.end() );
+    if( it->first.isNull() ){
+      Trace("sg-gen-tg-debug") << "In this order : ";
+      for( unsigned i=0; i<it->second.size(); i++ ){
+        Trace("sg-gen-tg-debug") << it->second[i] << " ";
+      }
+      Trace("sg-gen-tg-debug") << std::endl;
+    }
+  }
+}
+
+void TermGenEnv::reset( unsigned depth, bool genRelevant, TypeNode tn ) {
+  Assert( d_tg_alloc.empty() );
+  d_tg_alloc.clear();
+
+  if( genRelevant ){
+    for( unsigned i=0; i<2; i++ ){
+      d_ccand_eqc[i].clear();
+      d_ccand_eqc[i].push_back( d_relevant_eqc[i] );
+    }
+  }
+
+  d_tg_id = 0;
+  d_tg_gdepth = 0;
+  d_tg_gdepth_limit = depth;
+  d_gen_relevant_terms = genRelevant;
+  d_tg_alloc[0].reset( this, tn );
+}
+
+bool TermGenEnv::getNextTerm() {
+  if( d_tg_alloc[0].getNextTerm( this, d_tg_gdepth_limit ) ){
+    Assert( (int)d_tg_alloc[0].getGeneralizationDepth( this )<=d_tg_gdepth_limit );
+    if( (int)d_tg_alloc[0].getGeneralizationDepth( this )!=d_tg_gdepth_limit ){
+      return getNextTerm();
+    }else{
+      return true;
+    }
+  }else{
+    return false;
+  }
+}
+
+//reset matching
+void TermGenEnv::resetMatching( TNode eqc, unsigned mode ) {
+  d_tg_alloc[0].resetMatching( this, eqc, mode );
+}
+
+//get next match
+bool TermGenEnv::getNextMatch( TNode eqc, std::map< TypeNode, std::map< unsigned, TNode > >& subs, std::map< TNode, bool >& rev_subs ) {
+  return d_tg_alloc[0].getNextMatch( this, eqc, subs, rev_subs );
+}
+
+//get term
+Node TermGenEnv::getTerm() {
+  return d_tg_alloc[0].getTerm( this );
+}
+
+void TermGenEnv::debugPrint( const char * c, const char * cd ) {
+  d_tg_alloc[0].debugPrint( this, c, cd );
+}
+
+unsigned TermGenEnv::getNumTgVars( TypeNode tn ) {
+  return d_var_id[tn];
+}
+
+bool TermGenEnv::allowVar( TypeNode tn ) {
+  std::map< TypeNode, unsigned >::iterator it = d_var_limit.find( tn );
+  if( it==d_var_limit.end() ){
+    return true;
+  }else{
+    return d_var_id[tn]<it->second;
+  }
+}
+
+void TermGenEnv::addVar( TypeNode tn ) {
+  d_var_id[tn]++;
+}
+
+void TermGenEnv::removeVar( TypeNode tn ) {
+  d_var_id[tn]--;
+  //d_var_eq_tg.pop_back();
+  //d_var_tg.pop_back();
+}
+
+unsigned TermGenEnv::getNumTgFuncs( TypeNode tn ) {
+  return d_typ_tg_funcs[tn].size();
+}
+
+TNode TermGenEnv::getTgFunc( TypeNode tn, unsigned i ) {
+  return d_typ_tg_funcs[tn][i];
+}
+
+Node TermGenEnv::getFreeVar( TypeNode tn, unsigned i ) {
+  return d_cg->getFreeVar( tn, i );
+}
+
+bool TermGenEnv::considerCurrentTerm() {
+  Assert( !d_tg_alloc.empty() );
+
+  //if generalization depth is too large, don't consider it
+  unsigned i = d_tg_alloc.size();
+  Trace("sg-gen-tg-debug") << "Consider term ";
+  d_tg_alloc[0].debugPrint( this, "sg-gen-tg-debug", "sg-gen-tg-debug" );
+  Trace("sg-gen-tg-debug") << "?  curr term size = " << d_tg_alloc.size() << ", last status = " << d_tg_alloc[i-1].d_status;
+  Trace("sg-gen-tg-debug") << std::endl;
+
+  if( d_tg_gdepth_limit>=0 && d_tg_alloc[0].getGeneralizationDepth( this )>(unsigned)d_tg_gdepth_limit ){
+    Trace("sg-gen-consider-term") << "-> generalization depth of ";
+    d_tg_alloc[0].debugPrint( this, "sg-gen-consider-term", "sg-gen-tg-debug" );
+    Trace("sg-gen-consider-term") << " is too high " << d_tg_gdepth << " " << d_tg_alloc[0].getGeneralizationDepth( this ) << ", do not consider." << std::endl;
+    return false;
+  }
+
+  //----optimizations
+  /*
+  if( d_tg_alloc[i-1].d_status==1 ){
+  }else if( d_tg_alloc[i-1].d_status==2 ){
+  }else if( d_tg_alloc[i-1].d_status==5 ){
+  }else{
+    Trace("sg-gen-tg-debug") << "Bad tg: " << &d_tg_alloc[i-1] << std::endl;
+    Assert( false );
+  }
+  */
+  //if equated two variables, first check if context-independent TODO
+  //----end optimizations
+
+
+  //check based on which candidate equivalence classes match
+  if( d_gen_relevant_terms ){
+    Trace("sg-gen-tg-debug") << "Filter based on relevant ground EQC";
+    Trace("sg-gen-tg-debug") << ", #eqc to try = " << d_ccand_eqc[0][i-1].size() << "/" << d_ccand_eqc[1][i-1].size() << std::endl;
+
+    Assert( d_ccand_eqc[0].size()>=2 );
+    Assert( d_ccand_eqc[0].size()==d_ccand_eqc[1].size() );
+    Assert( d_ccand_eqc[0].size()==d_tg_id+1 );
+    Assert( d_tg_id==d_tg_alloc.size() );
+    for( unsigned r=0; r<2; r++ ){
+      d_ccand_eqc[r][i].clear();
+    }
+
+    //re-check feasibility of EQC
+    for( unsigned r=0; r<2; r++ ){
+      for( unsigned j=0; j<d_ccand_eqc[r][i-1].size(); j++ ){
+        std::map< TypeNode, std::map< unsigned, TNode > > subs;
+        std::map< TNode, bool > rev_subs;
+        unsigned mode;
+        if( r==0 ){
+          mode = d_cg->optReqDistinctVarPatterns() ? ( 1 << 0 ) : 0;
+          mode = mode | (1 << 2 );
+        }else{
+          mode =  1 << 1;
+        }
+        d_tg_alloc[0].resetMatching( this, d_ccand_eqc[r][i-1][j], mode );
+        if( d_tg_alloc[0].getNextMatch( this, d_ccand_eqc[r][i-1][j], subs, rev_subs ) ){
+          d_ccand_eqc[r][i].push_back( d_ccand_eqc[r][i-1][j] );
+        }
+      }
+    }
+    for( unsigned r=0; r<2; r++ ){
+      Trace("sg-gen-tg-debug") << "Current eqc of type " << r << " : ";
+      for( unsigned j=0; j<d_ccand_eqc[r][i].size(); j++ ){
+        Trace("sg-gen-tg-debug") << "e" << d_cg->d_em[d_ccand_eqc[r][i][j]] << " ";
+      }
+      Trace("sg-gen-tg-debug") << std::endl;
+    }
+    if( options::conjectureFilterActiveTerms() && d_ccand_eqc[0][i].empty() ){
+      Trace("sg-gen-consider-term") << "Do not consider term of form ";
+      d_tg_alloc[0].debugPrint( this, "sg-gen-consider-term", "sg-gen-consider-term-debug" );
+      Trace("sg-gen-consider-term") << " since no relevant EQC matches it." << std::endl;
+      return false;
+    }
+    if( options::conjectureFilterModel() && d_ccand_eqc[1][i].empty() ){
+      Trace("sg-gen-consider-term") << "Do not consider term of form ";
+      d_tg_alloc[0].debugPrint( this, "sg-gen-consider-term", "sg-gen-consider-term-debug" );
+      Trace("sg-gen-consider-term") << " since no ground EQC matches it." << std::endl;
+      return false;
+    }
+  }
+  Trace("sg-gen-tg-debug") << "Will consider term ";
+  d_tg_alloc[0].debugPrint( this, "sg-gen-tg-debug", "sg-gen-tg-debug" );
+  Trace("sg-gen-tg-debug") << std::endl;
+  Trace("sg-gen-consider-term-debug") << std::endl;
+  return true;
+}
+
+void TermGenEnv::changeContext( bool add ) {
+  if( add ){
+    for( unsigned r=0; r<2; r++ ){
+      d_ccand_eqc[r].push_back( std::vector< TNode >() );
+    }
+    d_tg_id++;
+  }else{
+    for( unsigned r=0; r<2; r++ ){
+      d_ccand_eqc[r].pop_back();
+    }
+    d_tg_id--;
+    Assert( d_tg_alloc.find( d_tg_id )!=d_tg_alloc.end() );
+    d_tg_alloc.erase( d_tg_id );
+  }
+}
+
+bool TermGenEnv::considerCurrentTermCanon( unsigned tg_id ){
+  Assert( tg_id<d_tg_alloc.size() );
+  if( options::conjectureFilterCanonical() ){
+    //check based on a canonicity of the term (if there is one)
+    Trace("sg-gen-tg-debug") << "Consider term canon ";
+    d_tg_alloc[0].debugPrint( this, "sg-gen-tg-debug", "sg-gen-tg-debug" );
+    Trace("sg-gen-tg-debug") << ", tg is [" << tg_id << "]..." << std::endl;
+
+    Node ln = d_tg_alloc[tg_id].getTerm( this );
+    Trace("sg-gen-tg-debug") << "Term is " << ln << std::endl;
+    return d_cg->considerTermCanon( ln, d_gen_relevant_terms );
+  }
+  return true;
+}
+
+bool TermGenEnv::isRelevantFunc( Node f ) {
+  return std::find( d_funcs.begin(), d_funcs.end(), f )!=d_funcs.end();
+}
+
+bool TermGenEnv::isRelevantTerm( Node t ) {
+  if( t.getKind()!=BOUND_VARIABLE ){
+    if( t.getKind()!=EQUAL ){
+      if( t.hasOperator() ){
+        TNode op = t.getOperator();
+        if( !isRelevantFunc( op ) ){
+          return false;
+        }
+      }else{
+        return false;
+      }
+    }
+    for( unsigned i=0; i<t.getNumChildren(); i++ ){
+      if( !isRelevantTerm( t[i] ) ){
+        return false;
+      }
+    }
+  }
+  return true;
+}
+
+TermDb * TermGenEnv::getTermDatabase() {
+  return d_cg->getTermDatabase();
+}
+Node TermGenEnv::getGroundEqc( TNode r ) {
+  return d_cg->getGroundEqc( r );
+}
+bool TermGenEnv::isGroundEqc( TNode r ){
+  return d_cg->isGroundEqc( r );
+}
+bool TermGenEnv::isGroundTerm( TNode n ){
+  return d_cg->isGroundTerm( n );
+}
+
+
+void SubstitutionIndex::addSubstitution( TNode eqc, std::vector< TNode >& vars, std::vector< TNode >& terms, unsigned i ) {
+  if( i==vars.size() ){
+    d_var = eqc;
+  }else{
+    Assert( d_var.isNull() || d_var==vars[i] );
+    d_var = vars[i];
+    d_children[terms[i]].addSubstitution( eqc, vars, terms, i+1 );
+  }
+}
+
+bool SubstitutionIndex::notifySubstitutions( ConjectureGenerator * s, std::map< TNode, TNode >& subs, TNode rhs, unsigned numVars, unsigned i ) {
+  if( i==numVars ){
+    Assert( d_children.empty() );
+    return s->notifySubstitution( d_var, subs, rhs );
+  }else{
+    Assert( i==0 || !d_children.empty() );
+    for( std::map< TNode, SubstitutionIndex >::iterator it = d_children.begin(); it != d_children.end(); ++it ){
+      Trace("sg-cconj-debug2") << "Try " << d_var << " -> " << it->first << " (" << i << "/" << numVars << ")" << std::endl;
+      subs[d_var] = it->first;
+      if( !it->second.notifySubstitutions( s, subs, rhs, numVars, i+1 ) ){
+        return false;
+      }
+    }
+    return true;
+  }
+}
+
+
+void TheoremIndex::addTheorem( std::vector< TNode >& lhs_v, std::vector< unsigned >& lhs_arg, TNode rhs ){
+  if( lhs_v.empty() ){
+    if( std::find( d_terms.begin(), d_terms.end(), rhs )==d_terms.end() ){
+      d_terms.push_back( rhs );
+    }
+  }else{
+    unsigned index = lhs_v.size()-1;
+    if( lhs_arg[index]==lhs_v[index].getNumChildren() ){
+      lhs_v.pop_back();
+      lhs_arg.pop_back();
+      addTheorem( lhs_v, lhs_arg, rhs );
+    }else{
+      lhs_arg[index]++;
+      addTheoremNode( lhs_v[index][lhs_arg[index]-1], lhs_v, lhs_arg, rhs );
+    }
+  }
+}
+
+void TheoremIndex::addTheoremNode( TNode curr, std::vector< TNode >& lhs_v, std::vector< unsigned >& lhs_arg, TNode rhs ){
+  Trace("thm-db-debug") << "Adding conjecture for subterm " << curr << "..." << std::endl;
+  if( curr.hasOperator() ){
+    lhs_v.push_back( curr );
+    lhs_arg.push_back( 0 );
+    d_children[curr.getOperator()].addTheorem( lhs_v, lhs_arg, rhs );
+  }else{
+    Assert( curr.getKind()==kind::BOUND_VARIABLE );
+    TypeNode tn = curr.getType();
+    Assert( d_var[tn].isNull() || d_var[tn]==curr );
+    d_var[tn] = curr;
+    d_children[curr].addTheorem( lhs_v, lhs_arg, rhs );
+  }
+}
+
+void TheoremIndex::getEquivalentTerms( std::vector< TNode >& n_v, std::vector< unsigned >& n_arg,
+                                       std::map< TNode, TNode >& smap, std::vector< TNode >& vars, std::vector< TNode >& subs,
+                                       std::vector< Node >& terms ) {
+  Trace("thm-db-debug") << "Get equivalent terms " << n_v.size() << " " << n_arg.size() << std::endl;
+  if( n_v.empty() ){
+    Trace("thm-db-debug") << "Number of terms : " << d_terms.size() << std::endl;
+    //apply substutitions to RHS's
+    for( unsigned i=0; i<d_terms.size(); i++ ){
+      Node n = d_terms[i].substitute( vars.begin(), vars.end(), subs.begin(), subs.end() );
+      terms.push_back( n );
+    }
+  }else{
+    unsigned index = n_v.size()-1;
+    if( n_arg[index]==n_v[index].getNumChildren() ){
+      n_v.pop_back();
+      n_arg.pop_back();
+      getEquivalentTerms( n_v, n_arg, smap, vars, subs, terms );
+    }else{
+      n_arg[index]++;
+      getEquivalentTermsNode( n_v[index][n_arg[index]-1], n_v, n_arg, smap, vars, subs, terms );
+    }
+  }
+}
+
+void TheoremIndex::getEquivalentTermsNode( Node curr, std::vector< TNode >& n_v, std::vector< unsigned >& n_arg,
+                                           std::map< TNode, TNode >& smap, std::vector< TNode >& vars, std::vector< TNode >& subs,
+                                           std::vector< Node >& terms ) {
+  Trace("thm-db-debug") << "Get equivalent based on subterm " << curr << "..." << std::endl;
+  if( curr.hasOperator() ){
+    Trace("thm-db-debug") << "Check based on operator..." << std::endl;
+    std::map< TNode, TheoremIndex >::iterator it = d_children.find( curr.getOperator() );
+    if( it!=d_children.end() ){
+      n_v.push_back( curr );
+      n_arg.push_back( 0 );
+      it->second.getEquivalentTerms( n_v, n_arg, smap, vars, subs, terms );
+    }
+    Trace("thm-db-debug") << "...done check based on operator" << std::endl;
+  }
+  TypeNode tn = curr.getType();
+  std::map< TypeNode, TNode >::iterator itt = d_var.find( tn );
+  if( itt!=d_var.end() ){
+    Trace("thm-db-debug") << "Check for substitution with " << itt->second << "..." << std::endl;
+    Assert( curr.getType()==itt->second.getType() );
+    //add to substitution if possible
+    bool success = false;
+    std::map< TNode, TNode >::iterator it = smap.find( itt->second );
+    if( it==smap.end() ){
+      smap[itt->second] = curr;
+      vars.push_back( itt->second );
+      subs.push_back( curr );
+      success = true;
+    }else if( it->second==curr ){
+      success = true;
+    }else{
+      //also check modulo equality (in universal equality engine)
+    }
+    Trace("thm-db-debug") << "...check for substitution with " << itt->second << ", success = " << success << "." << std::endl;
+    if( success ){
+      d_children[itt->second].getEquivalentTerms( n_v, n_arg, smap, vars, subs, terms );
+    }
+  }
+}
+
+void TheoremIndex::debugPrint( const char * c, unsigned ind ) {
+  for( std::map< TNode, TheoremIndex >::iterator it = d_children.begin(); it != d_children.end(); ++it ){
+    for( unsigned i=0; i<ind; i++ ){ Trace(c) << "  "; }
+    Trace(c) << it->first << std::endl;
+    it->second.debugPrint( c, ind+1 );
+  }
+  if( !d_terms.empty() ){
+    for( unsigned i=0; i<ind; i++ ){ Trace(c) << "  "; }
+    Trace(c) << "{";
+    for( unsigned i=0; i<d_terms.size(); i++ ){
+      Trace(c) << " " << d_terms[i];
+    }
+    Trace(c) << " }" << std::endl;
+  }
+  //if( !d_var.isNull() ){
+  //  for( unsigned i=0; i<ind; i++ ){ Trace(c) << "  "; }
+  //  Trace(c) << "var:" << d_var << std::endl;
+  //}
+}
+
+bool ConjectureGenerator::optReqDistinctVarPatterns() { return false; }
+bool ConjectureGenerator::optFilterUnknown() { return true; }  //may change
+int ConjectureGenerator::optFilterScoreThreshold() { return 1; }
+unsigned ConjectureGenerator::optFullCheckFrequency() { return 1; }
+
+bool ConjectureGenerator::optStatsOnly() { return false; }
+
+}
diff --git a/src/theory/quantifiers/conjecture_generator.h b/src/theory/quantifiers/conjecture_generator.h
new file mode 100644
index 0000000..c89d0f2
--- /dev/null
+++ b/src/theory/quantifiers/conjecture_generator.h
@@ -0,0 +1,432 @@
+/*********************                                                        */
+/*! \file conjecture_generator.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Clark Barrett, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief conjecture generator class
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef CONJECTURE_GENERATOR_H
+#define CONJECTURE_GENERATOR_H
+
+#include "context/cdhashmap.h"
+#include "context/cdchunk_list.h"
+#include "theory/quantifiers_engine.h"
+#include "theory/type_enumerator.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+class TermArgTrie;
+
+//algorithm for computing candidate subgoals
+
+class ConjectureGenerator;
+
+// operator independent index of arguments for an EQC
+class OpArgIndex
+{
+public:
+  std::map< TNode, OpArgIndex > d_child;
+  std::vector< TNode > d_ops;
+  std::vector< TNode > d_op_terms;
+  void addTerm( std::vector< TNode >& terms, TNode n, unsigned index = 0 );
+  Node getGroundTerm( ConjectureGenerator * s, std::vector< TNode >& args );
+  void getGroundTerms( ConjectureGenerator * s, std::vector< TNode >& terms );
+};
+
+class PatternTypIndex
+{
+public:
+  std::vector< TNode > d_terms;
+  std::map< TypeNode, std::map< unsigned, PatternTypIndex > > d_children;
+  void clear() {
+    d_terms.clear();
+    d_children.clear();
+  }
+};
+
+class SubstitutionIndex
+{
+public:
+  //current variable, or ground EQC if d_children.empty()
+  TNode d_var;
+  std::map< TNode, SubstitutionIndex > d_children;
+  //add substitution
+  void addSubstitution( TNode eqc, std::vector< TNode >& vars, std::vector< TNode >& terms, unsigned i = 0 );
+  //notify substitutions
+  bool notifySubstitutions( ConjectureGenerator * s, std::map< TNode, TNode >& subs, TNode rhs, unsigned numVars, unsigned i = 0 );
+};
+
+class TermGenEnv;
+
+class TermGenerator
+{
+private:
+  unsigned calculateGeneralizationDepth( TermGenEnv * s, std::map< TypeNode, std::vector< int > >& fvs );
+public:
+  TermGenerator(){}
+  TypeNode d_typ;
+  unsigned d_id;
+  //1 : consider as unique variable
+  //2 : consider equal to another variable
+  //5 : consider a function application
+  unsigned d_status;
+  int d_status_num;
+  //for function applications: the number of children you have built
+  int d_status_child_num;
+  //children (pointers to TermGenerators)
+  std::vector< unsigned > d_children;
+
+  //match status
+  int d_match_status;
+  int d_match_status_child_num;
+  //match mode bits
+  //0 : different variables must have different matches
+  //1 : variables must map to ground terms
+  //2 : variables must map to non-ground terms
+  unsigned d_match_mode;
+  //children
+  std::vector< std::map< TNode, TermArgTrie >::iterator > d_match_children;
+  std::vector< std::map< TNode, TermArgTrie >::iterator > d_match_children_end;
+
+  void reset( TermGenEnv * s, TypeNode tn );
+  bool getNextTerm( TermGenEnv * s, unsigned depth );
+  void resetMatching( TermGenEnv * s, TNode eqc, unsigned mode );
+  bool getNextMatch( TermGenEnv * s, TNode eqc, std::map< TypeNode, std::map< unsigned, TNode > >& subs, std::map< TNode, bool >& rev_subs );
+
+  unsigned getDepth( TermGenEnv * s );
+  unsigned getGeneralizationDepth( TermGenEnv * s );
+  Node getTerm( TermGenEnv * s );
+
+  void debugPrint( TermGenEnv * s, const char * c, const char * cd );
+};
+
+
+class TermGenEnv
+{
+public:
+  //collect signature information
+  void collectSignatureInformation();
+  //reset function
+  void reset( unsigned gdepth, bool genRelevant, TypeNode tgen );
+  //get next term
+  bool getNextTerm();
+  //reset matching
+  void resetMatching( TNode eqc, unsigned mode );
+  //get next match
+  bool getNextMatch( TNode eqc, std::map< TypeNode, std::map< unsigned, TNode > >& subs, std::map< TNode, bool >& rev_subs );
+  //get term
+  Node getTerm();
+  //debug print
+  void debugPrint( const char * c, const char * cd );
+
+  //conjecture generation
+  ConjectureGenerator * d_cg;
+  //the current number of enumerated variables per type
+  std::map< TypeNode, unsigned > d_var_id;
+  //the limit of number of variables per type to enumerate
+  std::map< TypeNode, unsigned > d_var_limit;
+  //the functions we can currently generate
+  std::map< TypeNode, std::vector< TNode > > d_typ_tg_funcs;
+  // whether functions must add operators
+  std::map< TNode, bool > d_tg_func_param;
+  //the equivalence classes (if applicable) that match the currently generated term
+  bool d_gen_relevant_terms;
+  //relevant equivalence classes
+  std::vector< TNode > d_relevant_eqc[2];
+  //candidate equivalence classes
+  std::vector< std::vector< TNode > > d_ccand_eqc[2];
+  //the term generation objects
+  unsigned d_tg_id;
+  std::map< unsigned, TermGenerator > d_tg_alloc;
+  unsigned d_tg_gdepth;
+  int d_tg_gdepth_limit;
+
+  //all functions
+  std::vector< TNode > d_funcs;
+  //function to kind map
+  std::map< TNode, Kind > d_func_kind;
+  //type of each argument of the function
+  std::map< TNode, std::vector< TypeNode > > d_func_args;
+
+  //access functions
+  unsigned getNumTgVars( TypeNode tn );
+  bool allowVar( TypeNode tn );
+  void addVar( TypeNode tn );
+  void removeVar( TypeNode tn );
+  unsigned getNumTgFuncs( TypeNode tn );
+  TNode getTgFunc( TypeNode tn, unsigned i );
+  Node getFreeVar( TypeNode tn, unsigned i );
+  bool considerCurrentTerm();
+  bool considerCurrentTermCanon( unsigned tg_id );
+  void changeContext( bool add );
+  bool isRelevantFunc( Node f );
+  bool isRelevantTerm( Node t );
+  //carry
+  TermDb * getTermDatabase();
+  Node getGroundEqc( TNode r );
+  bool isGroundEqc( TNode r );
+  bool isGroundTerm( TNode n );
+};
+
+
+
+class TheoremIndex
+{
+private:
+  void addTheorem( std::vector< TNode >& lhs_v, std::vector< unsigned >& lhs_arg, TNode rhs );
+  void addTheoremNode( TNode curr, std::vector< TNode >& lhs_v, std::vector< unsigned >& lhs_arg, TNode rhs );
+  void getEquivalentTerms( std::vector< TNode >& n_v, std::vector< unsigned >& n_arg,
+                           std::map< TNode, TNode >& smap, std::vector< TNode >& vars, std::vector< TNode >& subs,
+                           std::vector< Node >& terms );
+  void getEquivalentTermsNode( Node curr, std::vector< TNode >& n_v, std::vector< unsigned >& n_arg,
+                               std::map< TNode, TNode >& smap, std::vector< TNode >& vars, std::vector< TNode >& subs,
+                               std::vector< Node >& terms );
+public:
+  std::map< TypeNode, TNode > d_var;
+  std::map< TNode, TheoremIndex > d_children;
+  std::vector< Node > d_terms;
+
+  void addTheorem( TNode lhs, TNode rhs ) {
+    std::vector< TNode > v;
+    std::vector< unsigned > a;
+    addTheoremNode( lhs, v, a, rhs );
+  }
+  void getEquivalentTerms( TNode n, std::vector< Node >& terms ) {
+    std::vector< TNode > nv;
+    std::vector< unsigned > na;
+    std::map< TNode, TNode > smap;
+    std::vector< TNode > vars;
+    std::vector< TNode > subs;
+    getEquivalentTermsNode( n, nv, na, smap, vars, subs, terms );
+  }
+  void clear(){
+    d_var.clear();
+    d_children.clear();
+    d_terms.clear();
+  }
+  void debugPrint( const char * c, unsigned ind = 0 );
+};
+
+
+
+class ConjectureGenerator : public QuantifiersModule
+{
+  friend class OpArgIndex;
+  friend class PatGen;
+  friend class PatternGenEqc;
+  friend class PatternGen;
+  friend class SubsEqcIndex;
+  friend class TermGenerator;
+  friend class TermGenEnv;
+  typedef context::CDChunkList<Node> NodeList;
+  typedef context::CDHashMap< Node, Node, NodeHashFunction > NodeMap;
+  typedef context::CDHashMap< Node, bool, NodeHashFunction > BoolMap;
+//this class maintains a congruence closure for *universal* facts
+private:
+  //notification class for equality engine
+  class NotifyClass : public eq::EqualityEngineNotify {
+    ConjectureGenerator& d_sg;
+  public:
+    NotifyClass(ConjectureGenerator& sg): d_sg(sg) {}
+    bool eqNotifyTriggerEquality(TNode equality, bool value) { return true; }
+    bool eqNotifyTriggerPredicate(TNode predicate, bool value) { return true; }
+    bool eqNotifyTriggerTermEquality(TheoryId tag, TNode t1, TNode t2, bool value) { return true; }
+    void eqNotifyConstantTermMerge(TNode t1, TNode t2) { }
+    void eqNotifyNewClass(TNode t) { d_sg.eqNotifyNewClass(t); }
+    void eqNotifyPreMerge(TNode t1, TNode t2) { d_sg.eqNotifyPreMerge(t1, t2); }
+    void eqNotifyPostMerge(TNode t1, TNode t2) { d_sg.eqNotifyPostMerge(t1, t2); }
+    void eqNotifyDisequal(TNode t1, TNode t2, TNode reason) {d_sg.eqNotifyDisequal(t1, t2, reason); }
+  };/* class ConjectureGenerator::NotifyClass */
+  /** The notify class */
+  NotifyClass d_notify;
+  class EqcInfo{
+  public:
+    EqcInfo( context::Context* c );
+    //representative
+    context::CDO< Node > d_rep;
+  };
+  /** get or make eqc info */
+  EqcInfo* getOrMakeEqcInfo( TNode n, bool doMake = false );
+  /** (universal) equaltity engine */
+  eq::EqualityEngine d_uequalityEngine;
+  /** pending adds */
+  std::vector< Node > d_upendingAdds;
+  /** relevant terms */
+  std::map< Node, bool > d_urelevant_terms;
+  /** information necessary for equivalence classes */
+  std::map< Node, EqcInfo* > d_eqc_info;
+  /** called when a new equivalance class is created */
+  void eqNotifyNewClass(TNode t);
+  /** called when two equivalance classes will merge */
+  void eqNotifyPreMerge(TNode t1, TNode t2);
+  /** called when two equivalance classes have merged */
+  void eqNotifyPostMerge(TNode t1, TNode t2);
+  /** called when two equivalence classes are made disequal */
+  void eqNotifyDisequal(TNode t1, TNode t2, TNode reason);
+  /** are universal equal */
+  bool areUniversalEqual( TNode n1, TNode n2 );
+  /** are universal disequal */
+  bool areUniversalDisequal( TNode n1, TNode n2 );
+  /** get universal representative */
+  TNode getUniversalRepresentative( TNode n, bool add = false );
+  /** set relevant */
+  void setUniversalRelevant( TNode n );
+  /** ordering for universal terms */
+  bool isUniversalLessThan( TNode rt1, TNode rt2 );
+
+  /** the nodes we have reported as canonical representative */
+  std::vector< TNode > d_ue_canon;
+  /** is reported canon */
+  bool isReportedCanon( TNode n );
+  /** mark that term has been reported as canonical rep */
+  void markReportedCanon( TNode n );
+
+private:  //information regarding the conjectures
+  /** list of all conjectures */
+  std::vector< Node > d_conjectures;
+  /** list of all waiting conjectures */
+  std::vector< Node > d_waiting_conjectures_lhs;
+  std::vector< Node > d_waiting_conjectures_rhs;
+  std::vector< int > d_waiting_conjectures_score;
+  /** map of currently considered equality conjectures */
+  std::map< Node, std::vector< Node > > d_waiting_conjectures;
+  /** map of equality conjectures */
+  std::map< Node, std::vector< Node > > d_eq_conjectures;
+  /** currently existing conjectures in equality engine */
+  BoolMap d_ee_conjectures;
+  /** conjecture index */
+  TheoremIndex d_thm_index;
+private:  //free variable list
+  // get canonical free variable #i of type tn
+  Node getFreeVar( TypeNode tn, unsigned i );
+private:  //information regarding the terms
+  //relevant patterns (the LHS's)
+  std::map< TypeNode, std::vector< Node > > d_rel_patterns;
+  //total number of unique variables
+  std::map< TNode, unsigned > d_rel_pattern_var_sum;
+  //by types
+  PatternTypIndex d_rel_pattern_typ_index;
+  // substitution to ground EQC index
+  std::map< TNode, SubstitutionIndex > d_rel_pattern_subs_index;
+  //patterns (the RHS's)
+  std::map< TypeNode, std::vector< Node > > d_patterns;
+  //patterns to # variables per type
+  std::map< TNode, std::map< TypeNode, unsigned > > d_pattern_var_id;
+  // # duplicated variables
+  std::map< TNode, unsigned > d_pattern_var_duplicate;
+  // is normal pattern?  (variables allocated in canonical way left to right)
+  std::map< TNode, int > d_pattern_is_normal;
+  std::map< TNode, int > d_pattern_is_relevant;
+  // patterns to a count of # operators (variables and functions)
+  std::map< TNode, std::map< TNode, unsigned > > d_pattern_fun_id;
+  // term size
+  std::map< TNode, unsigned > d_pattern_fun_sum;
+  // collect functions
+  unsigned collectFunctions( TNode opat, TNode pat, std::map< TNode, unsigned >& funcs,
+                             std::map< TypeNode, unsigned >& mnvn, std::map< TypeNode, unsigned >& mxvn );
+  // add pattern
+  void registerPattern( Node pat, TypeNode tpat );
+private: //for debugging
+  std::map< TNode, unsigned > d_em;
+  unsigned d_conj_count;
+public:
+  //term generation environment
+  TermGenEnv d_tge;
+  //consider term canon
+  bool considerTermCanon( Node ln, bool genRelevant );
+public:  //for generalization
+  //generalizations
+  bool isGeneralization( TNode patg, TNode pat ) {
+    std::map< TNode, TNode > subs;
+    return isGeneralization( patg, pat, subs );
+  }
+  bool isGeneralization( TNode patg, TNode pat, std::map< TNode, TNode >& subs );
+  // get generalization depth
+  int calculateGeneralizationDepth( TNode n, std::vector< TNode >& fv );
+private:
+  //predicate for type
+  std::map< TypeNode, Node > d_typ_pred;
+  //get predicate for type
+  Node getPredicateForType( TypeNode tn );
+  //
+  void getEnumerateUfTerm( Node n, unsigned num, std::vector< Node >& terms );
+  //
+  void getEnumeratePredUfTerm( Node n, unsigned num, std::vector< Node >& terms );
+  // uf operators enumerated
+  std::map< Node, bool > d_uf_enum;
+public:  //for property enumeration
+  //process this candidate conjecture
+  void processCandidateConjecture( TNode lhs, TNode rhs, unsigned lhs_depth, unsigned rhs_depth );
+  //whether it should be considered, negative : no, positive returns score
+  int considerCandidateConjecture( TNode lhs, TNode rhs );
+  //notified of a substitution
+  bool notifySubstitution( TNode glhs, std::map< TNode, TNode >& subs, TNode rhs );
+  //confirmation count
+  unsigned d_subs_confirmCount;
+  //individual witnesses (for range)
+  std::vector< TNode > d_subs_confirmWitnessRange;
+  //individual witnesses (for domain)
+  std::map< TNode, std::vector< TNode > > d_subs_confirmWitnessDomain;
+  //number of ground substitutions whose equality is unknown
+  unsigned d_subs_unkCount;
+private:  //information about ground equivalence classes
+  TNode d_bool_eqc[2];
+  std::map< TNode, Node > d_ground_eqc_map;
+  std::vector< TNode > d_ground_terms;
+  //operator independent term index
+  std::map< TNode, OpArgIndex > d_op_arg_index;
+  //is handled term
+  bool isHandledTerm( TNode n );
+  Node getGroundEqc( TNode r );
+  bool isGroundEqc( TNode r );
+  bool isGroundTerm( TNode n );
+  //has enumerated UF
+  bool hasEnumeratedUf( Node n );
+  // count of full effort checks
+  unsigned d_fullEffortCount;
+  // has added lemma
+  bool d_hasAddedLemma;
+  //flush the waiting conjectures
+  unsigned flushWaitingConjectures( unsigned& addedLemmas, int ldepth, int rdepth );
+public:
+  ConjectureGenerator( QuantifiersEngine * qe, context::Context* c );
+  ~ConjectureGenerator() throw() {}
+  /* needs check */
+  bool needsCheck( Theory::Effort e );
+  /* reset at a round */
+  void reset_round( Theory::Effort e );
+  /* Call during quantifier engine's check */
+  void check( Theory::Effort e, unsigned quant_e );
+  /* Called for new quantifiers */
+  void registerQuantifier( Node q );
+  void assertNode( Node n );
+  /** Identify this module (for debugging, dynamic configuration, etc..) */
+  std::string identify() const { return "ConjectureGenerator"; }
+//options
+private:
+  bool optReqDistinctVarPatterns();
+  bool optFilterUnknown();
+  int optFilterScoreThreshold();
+  unsigned optFullCheckFrequency();
+  unsigned optFullCheckConjectures();
+
+  bool optStatsOnly();
+};
+
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/equality_infer.cpp b/src/theory/quantifiers/equality_infer.cpp
new file mode 100644
index 0000000..5190025
--- /dev/null
+++ b/src/theory/quantifiers/equality_infer.cpp
@@ -0,0 +1,432 @@
+/*********************                                                        */
+/*! \file equality_infer.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief  Method for inferring equalities between arithmetic equivalence classes, 
+ **         inspired by "A generalization of Shostak's method for combining decision procedures" Barrett et al. Figure 1.
+ **
+ **/
+
+#include "theory/quantifiers/equality_infer.h"
+#include "theory/quantifiers/quant_util.h"
+#include "context/context_mm.h"
+
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+using namespace std;
+
+namespace CVC4 {
+
+EqualityInference::EqcInfo::EqcInfo(context::Context* c) : d_rep( c ), d_valid( c, false ), d_solved( c, false ), d_master(c)
+//, d_rep_exp(c), d_uselist(c) 
+{
+
+}
+
+EqualityInference::EqualityInference( context::Context* c, bool trackExp ) : 
+d_c( c ), d_trackExplain( trackExp ), d_elim_vars( c ), 
+d_rep_to_eqc( c ), d_rep_exp( c ), d_uselist( c ), d_pending_merges( c ), d_pending_merge_exp( c ){
+  d_one = NodeManager::currentNM()->mkConst( Rational( 1 ) );
+  d_true = NodeManager::currentNM()->mkConst( true );
+}
+
+EqualityInference::~EqualityInference(){
+  for( std::map< Node, EqcInfo * >::iterator it = d_eqci.begin(); it != d_eqci.end(); ++it ){
+    delete it->second;
+  }
+}
+
+void EqualityInference::addToExplanation( std::vector< Node >& exp, Node e ) {
+  if( std::find( exp.begin(), exp.end(), e )==exp.end() ){
+    Trace("eq-infer-debug2") << "......add to explanation " << e << std::endl;
+    exp.push_back( e );
+  }
+}
+
+void EqualityInference::addToExplanationEqc( std::vector< Node >& exp, Node eqc ) {
+  NodeIntMap::iterator re_i = d_rep_exp.find( eqc );
+  if( re_i!=d_rep_exp.end() ){
+    for( int i=0; i<(*re_i).second; i++ ){
+      addToExplanation( exp, d_rep_exp_data[eqc][i] );
+    }
+  }
+  //for( unsigned i=0; i<d_eqci[n]->d_rep_exp.size(); i++ ){
+  //  addToExplanation( exp, d_eqci[n]->d_rep_exp[i] );
+  //}
+}
+
+void EqualityInference::addToExplanationEqc( Node eqc, std::vector< Node >& exp_to_add ) {
+  NodeIntMap::iterator re_i = d_rep_exp.find( eqc );
+  int n_re = 0;
+  if( re_i != d_rep_exp.end() ){
+    n_re = (*re_i).second;
+  }
+  d_rep_exp[eqc] = n_re + exp_to_add.size();
+  for( unsigned i=0; i<exp_to_add.size(); i++ ){
+    if( n_re<(int)d_rep_exp_data[eqc].size() ){
+      d_rep_exp_data[eqc][n_re] = exp_to_add[i];
+    }else{
+      d_rep_exp_data[eqc].push_back( exp_to_add[i] );
+    }
+    n_re++;
+  }
+  //for( unsigned i=0; i<exp_to_add.size(); i++ ){
+  //  eqci->d_rep_exp.push_back( exp_to_add[i] );
+  //}
+}
+
+Node EqualityInference::getMaster( Node t, EqcInfo * eqc, bool& updated, Node new_m ) {
+  if( !eqc->d_master.get().isNull() ){
+    if( eqc->d_master.get()==t ){
+      if( !new_m.isNull() && t!=new_m ){
+        eqc->d_master = new_m;
+        updated = true;
+        return new_m;
+      }else{
+        return t;
+      }
+    }else{
+      Assert( d_eqci.find( eqc->d_master.get() )!=d_eqci.end() );
+      EqcInfo * eqc_m = d_eqci[eqc->d_master.get()];
+      Node m = getMaster( eqc->d_master.get(), eqc_m, updated, new_m );
+      eqc->d_master = m;
+      return m;
+    }
+  }else{
+    return Node::null();
+  }
+}
+
+//update the internal "master" representative of the equivalence class, return true if the merge was non-redundant
+bool EqualityInference::updateMaster( Node t1, Node t2, EqcInfo * eqc1, EqcInfo * eqc2 ) {
+  bool updated = false;
+  Node m1 = getMaster( t1, eqc1, updated );
+  if( m1.isNull() ){
+    eqc1->d_master = t2;
+    if( eqc2->d_master.get().isNull() ){
+      eqc2->d_master = t2;
+    }
+    return true;
+  }else{
+    updated = false;
+    Node m2 = getMaster( t2, eqc2, updated, m1);
+    if( m2.isNull() ){
+      eqc2->d_master = m1;
+      return true;
+    }else{
+      return updated;
+    }
+  }
+}
+
+void EqualityInference::eqNotifyNewClass(TNode t) {
+  if( t.getType().isReal() ){
+    Trace("eq-infer") << "Notify equivalence class : " << t << std::endl;
+    EqcInfo * eqci;
+    std::map< Node, EqcInfo * >::iterator itec = d_eqci.find( t );
+    if( itec==d_eqci.end() ){
+      eqci = new EqcInfo( d_c );
+      d_eqci[t] = eqci;
+    }else{
+      eqci = itec->second;
+    }
+    Assert( !eqci->d_valid.get() );
+    if( !eqci->d_solved.get() ){
+      //somewhat strange: t may not be in rewritten form    
+      Node r = Rewriter::rewrite( t );
+      std::map< Node, Node > msum;
+      if( QuantArith::getMonomialSum( r, msum ) ){
+        Trace("eq-infer-debug2") << "...process monomial sum, size = " << msum.size() << std::endl;
+        eqci->d_valid = true;
+        bool changed = false;
+        std::vector< Node > exp;
+        std::vector< Node > children;
+        for( std::map< Node, Node >::iterator it = msum.begin(); it != msum.end(); ++it ) {
+          Trace("eq-infer-debug2") << "...process child " << it->first << ", " << it->second << std::endl;
+          if( !it->first.isNull() ){
+            Node n = it->first;
+            BoolMap::const_iterator itv = d_elim_vars.find( n );
+            if( itv!=d_elim_vars.end() ){
+              changed = true;
+              Assert( d_eqci.find( n )!=d_eqci.end() );
+              Assert( n!=t );
+              Assert( d_eqci[n]->d_solved.get() );
+              Trace("eq-infer-debug2") << "......its solved form is " << d_eqci[n]->d_rep.get() << std::endl;
+              if( d_trackExplain ){
+                //track the explanation: justified by explanation for each substitution
+                addToExplanationEqc( exp, n );
+              }
+              n = d_eqci[n]->d_rep;
+              Assert( !n.isNull() );
+            }
+            if( it->second.isNull() ){
+              children.push_back( n );
+            }else{
+              children.push_back( NodeManager::currentNM()->mkNode( MULT, it->second, n ) );
+            }
+          }else{
+            Assert( !it->second.isNull() );
+            children.push_back( it->second );
+          }
+        }
+        Trace("eq-infer-debug2") << "...children size = " << children.size() << std::endl;
+        bool mvalid = true;
+        if( changed ){
+          r = children.size()==1 ? children[0] : NodeManager::currentNM()->mkNode( PLUS, children );
+          Trace("eq-infer-debug2") << "...pre-rewrite : " << r << std::endl;
+          r = Rewriter::rewrite( r );
+          msum.clear();
+          if( !QuantArith::getMonomialSum( r, msum ) ){
+            mvalid = false;
+          }
+        }
+        Trace("eq-infer") << "...value is " << r << std::endl;
+        setEqcRep( t, r, exp, eqci );
+        if( mvalid ){
+          for( std::map< Node, Node >::iterator it = msum.begin(); it != msum.end(); ++it ){
+            if( !it->first.isNull() ){
+              addToUseList( it->first, t );
+            }
+          }        
+        }
+      }else{
+        eqci->d_valid = false;
+      }
+    }
+  }
+}
+
+void EqualityInference::addToUseList( Node used, Node eqc ) {
+#if 1
+  NodeIntMap::iterator ul_i = d_uselist.find( used );
+  int n_ul = 0;
+  if( ul_i != d_uselist.end() ){
+    n_ul = (*ul_i).second;
+  }
+  d_uselist[ used ] = n_ul + 1;
+  Trace("eq-infer-debug") << "      add to use list : " << used << " -> " << eqc << std::endl;
+  if( n_ul<(int)d_uselist_data[used].size() ){
+    d_uselist_data[used][n_ul] = eqc;
+  }else{
+    d_uselist_data[used].push_back( eqc );  
+  }
+#else
+  std::map< Node, EqcInfo * >::iterator itu = d_eqci.find( used );
+  EqcInfo * eqci_used;
+  if( itu==d_eqci.end() ){
+    eqci_used = new EqcInfo( d_c );
+    d_eqci[used] = eqci_used;
+  }else{
+    eqci_used = itu->second;
+  }
+  Trace("eq-infer-debug") << "      add to use list : " << used << " -> " << eqc << std::endl;
+  eqci_used->d_uselist.push_back( eqc );
+#endif
+}
+
+void EqualityInference::setEqcRep( Node t, Node r, std::vector< Node >& exp_to_add, EqcInfo * eqci ) {
+  eqci->d_rep = r;
+  if( d_trackExplain ){
+    addToExplanationEqc( t, exp_to_add );
+  }
+  //if this is an active equivalence class
+  if( eqci->d_valid.get() ){
+    Trace("eq-infer-debug") << "Set eqc rep " << t << " -> " << r << std::endl;
+    NodeMap::const_iterator itr = d_rep_to_eqc.find( r );
+    if( itr==d_rep_to_eqc.end() ){
+      d_rep_to_eqc[r] = t;
+    }else{
+      //merge two equivalence classes
+      Node t2 = (*itr).second;
+      //check if it is valid
+      std::map< Node, EqcInfo * >::iterator itc = d_eqci.find( t2 );
+      if( itc!=d_eqci.end() && itc->second->d_valid.get() ){
+        //if we haven't already determined they should be merged
+        if( updateMaster( t, t2, eqci, itc->second ) ){
+          Trace("eq-infer") << "Infer two equivalence classes are equal : " << t << " " << t2 << std::endl;
+          Trace("eq-infer") << "  since they both normalize to : " << r << std::endl;
+          d_pending_merges.push_back( t.eqNode( t2 ) );
+          if( d_trackExplain ){
+            std::vector< Node > exp;
+            for( unsigned j=0; j<2; j++ ){
+              addToExplanationEqc( exp, j==0 ? t : t2 );
+            }
+            Node exp_n = exp.empty() ? d_true : ( exp.size()==1 ? exp[0] : NodeManager::currentNM()->mkNode( AND, exp ) );
+            Trace("eq-infer") << "  explanation : " << exp_n << std::endl;
+            d_pending_merge_exp.push_back( exp_n );
+          }
+        }
+      }
+    }
+  }
+}
+
+void EqualityInference::eqNotifyMerge(TNode t1, TNode t2) {
+  Assert( !t1.isNull() );
+  Assert( !t2.isNull() );
+  std::map< Node, EqcInfo * >::iterator itv1 = d_eqci.find( t1 );
+  if( itv1!=d_eqci.end() ){
+    std::map< Node, EqcInfo * >::iterator itv2 = d_eqci.find( t2 );
+    if( itv2!=d_eqci.end() ){
+      Trace("eq-infer") << "Merge equivalence classes : " << t2 << " into " << t1 << std::endl;
+      Node tr1 = itv1->second->d_rep;
+      Node tr2 = itv2->second->d_rep;
+      itv2->second->d_valid = false;
+      Trace("eq-infer") << "Representatives : " << tr2 << " into " << tr1 << std::endl;
+      if( tr1!=tr2 ){
+        Node eq = tr1.eqNode( tr2 );
+        std::map< Node, Node > msum;
+        if( QuantArith::getMonomialSumLit( eq, msum ) ){
+          Node v_solve;
+          //solve for variables with no coefficient
+          if( Trace.isOn("eq-infer-debug2") ){
+            Trace("eq-infer-debug2") << "Monomial sum : " << std::endl;
+            for( std::map< Node, Node >::iterator it = msum.begin(); it != msum.end(); ++it ) {
+              Trace("eq-infer-debug2") << "  " << it->first << " * " << it->second << std::endl;
+            }
+          }
+          for( std::map< Node, Node >::iterator it = msum.begin(); it != msum.end(); ++it ) {
+            Node n = it->first;
+            if( !n.isNull() ){
+              bool canSolve = false;
+              if( it->second.isNull() ){
+                canSolve = true;
+              }else{
+                //Assert( it->second.isConst() );
+                Rational r = it->second.getConst<Rational>(); 
+                canSolve = r.isOne() || r.isNegativeOne();
+              }
+              if( canSolve ){
+                v_solve = n;
+                break;
+              }
+            }
+          }
+          Trace("eq-infer-debug") << "solve for variable : " << v_solve << std::endl;
+          if( !v_solve.isNull() ){
+            //solve for v_solve
+            Node veq;
+            if( QuantArith::isolate( v_solve, msum, veq, kind::EQUAL, true )==1 ){
+              Node v_value = veq[1];
+              Trace("eq-infer") << "...solved " << v_solve << " == " << v_value << std::endl;
+              Assert( d_elim_vars.find( v_solve )==d_elim_vars.end() );
+              d_elim_vars[v_solve] = true;
+              //store value in eqc info
+              EqcInfo * eqci_solved;
+              std::map< Node, EqcInfo * >::iterator itec = d_eqci.find( v_solve );
+              if( itec==d_eqci.end() ){
+                eqci_solved = new EqcInfo( d_c );
+                d_eqci[v_solve] =  eqci_solved;
+              }else{
+                eqci_solved = itec->second;
+              }
+              eqci_solved->d_solved = true;
+              eqci_solved->d_rep = v_value;
+              //track the explanation
+              std::vector< Node > exp;
+              if( d_trackExplain ){
+                //explanation is t1 = t2 + their explanations
+                exp.push_back( t1.eqNode( t2 ) );
+                for( unsigned i=0; i<2; i++ ){
+                  addToExplanationEqc( exp, i==0 ? t1 : t2 );
+                }
+                if( Trace.isOn("eq-infer-debug") ){
+                  Trace("eq-infer-debug") << "      explanation for solving " << v_solve << " is ";
+                  for( unsigned i=0; i<exp.size(); i++ ){
+                    Trace("eq-infer-debug") << exp[i] << " ";
+                  }
+                  Trace("eq-infer-debug") << std::endl;
+                }
+                addToExplanationEqc( v_solve, exp );
+              }
+             
+              std::vector< Node > new_use;
+              for( std::map< Node, Node >::iterator itmm = msum.begin(); itmm != msum.end(); ++itmm ){
+                Node n = itmm->first;
+                if( !n.isNull() && n!=v_solve ){
+                  new_use.push_back( n );
+                  addToUseList( n, v_solve );
+                }
+              }
+              
+              //go through all equivalence classes that may refer to v_solve
+              std::map< Node, bool > processed;
+              processed[v_solve] = true;
+              NodeIntMap::iterator ul_i = d_uselist.find( v_solve );
+              if( ul_i != d_uselist.end() ){
+                int n_ul = (*ul_i).second;
+                Trace("eq-infer-debug") << "      use list size = " << n_ul << std::endl;
+                for( int j=0; j<n_ul; j++ ){
+                  Node r = d_uselist_data[v_solve][j];
+                //Trace("eq-infer-debug") << "      use list size = " << eqci_solved->d_uselist.size() << std::endl;
+                //for( unsigned j=0; j<eqci_solved->d_uselist.size(); j++ ){
+                //  Node r = eqci_solved->d_uselist[j];
+                  if( processed.find( r )==processed.end() ){
+                    processed[r] = true;
+                    std::map< Node, EqcInfo * >::iterator itt = d_eqci.find( r );
+                    if( itt!=d_eqci.end() && ( itt->second->d_valid || itt->second->d_solved ) ){
+                      std::map< Node, Node > msum2;
+                      if( QuantArith::getMonomialSum( itt->second->d_rep.get(), msum2 ) ){
+                        std::map< Node, Node >::iterator itm = msum2.find( v_solve );
+                        if( itm!=msum2.end() ){
+                          //substitute in solved form
+                          std::map< Node, Node >::iterator itm2 = msum2.find( v_value );
+                          if( itm2 == msum2.end() ){
+                            msum2[v_value] = itm->second;
+                          }else{
+                            msum2[v_value] = NodeManager::currentNM()->mkNode( PLUS, itm2->second.isNull() ? d_one : itm2->second, 
+                                                                                    itm->second.isNull() ? d_one : itm->second );
+                          }
+                          msum2.erase( itm );
+                          Node rr = QuantArith::mkNode( msum2 );
+                          rr = Rewriter::rewrite( rr );
+                          Trace("eq-infer") << "......update " << itt->first << " => " << rr << std::endl;
+                          setEqcRep( itt->first, rr, exp, itt->second );
+                          //update use list
+                          for( unsigned i=0; i<new_use.size(); i++ ){
+                            addToUseList( new_use[i], r );
+                          }
+                        }
+                      }else{
+                        itt->second->d_valid = false;
+                      }
+                    }
+                  }
+                }
+              }
+              Trace("eq-infer") << "...finished solved." << std::endl;
+            }
+          }
+        }
+      }
+    }else{
+      //no information to merge
+    }
+  }else{
+    //carry information (this might happen for non-linear t1 and linear t2?)
+    std::map< Node, EqcInfo * >::iterator itv2 = d_eqci.find( t2 );
+    if( itv2!=d_eqci.end() ){
+      d_eqci[t1] = d_eqci[t2];
+      d_eqci[t2] = NULL;
+    }
+  }
+}
+
+Node EqualityInference::getPendingMergeExplanation( unsigned i ) { 
+  if( d_trackExplain ){
+    return d_pending_merge_exp[i]; 
+  }else{
+    return d_pending_merges[i];
+  }
+}  
+
+}
diff --git a/src/theory/quantifiers/equality_infer.h b/src/theory/quantifiers/equality_infer.h
new file mode 100644
index 0000000..80d6ef9
--- /dev/null
+++ b/src/theory/quantifiers/equality_infer.h
@@ -0,0 +1,105 @@
+/*********************                                                        */
+/*! \file equality_infer.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief additional inference for equalities
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANTIFIERS__EQUALITY_INFER_H
+#define __CVC4__THEORY__QUANTIFIERS__EQUALITY_INFER_H
+
+#include <ext/hash_set>
+#include <iostream>
+#include <map>
+#include <vector>
+
+#include "context/context.h"
+#include "context/context_mm.h"
+#include "context/cdhashmap.h"
+#include "context/cdchunk_list.h"
+#include "context/cdhashset.h"
+#include "theory/theory.h"
+
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+class EqualityInference
+{
+  typedef context::CDHashMap< Node, Node, NodeHashFunction > NodeMap;
+  typedef context::CDHashMap< Node, bool, NodeHashFunction > BoolMap;
+  typedef context::CDChunkList<Node> NodeList;
+  typedef context::CDHashMap< Node, int, NodeHashFunction > NodeIntMap;
+private:
+  context::Context * d_c;
+  Node d_one;
+  Node d_true;
+  class EqcInfo {
+  public:
+    EqcInfo(context::Context* c);
+    ~EqcInfo(){}
+    context::CDO< Node > d_rep;
+    //whether the eqc of this info is a representative and d_rep can been computed successfully
+    context::CDO< bool > d_valid;
+    //whether the eqc of this info is a solved variable
+    context::CDO< bool > d_solved;
+    //master equivalence class (a union find)
+    context::CDO< Node > d_master;
+    //a vector of equalities t1=t2 for which eqNotifyMerge(t1,t2) was called that explains d_rep
+    //NodeList d_rep_exp;
+    //the list of other eqc where this variable may be appear
+    //NodeList d_uselist;
+  };
+
+  /** track explanations */
+  bool d_trackExplain;
+  /** information necessary for equivalence classes */
+  BoolMap d_elim_vars;
+  std::map< Node, EqcInfo * > d_eqci;
+  NodeMap d_rep_to_eqc;
+  NodeIntMap d_rep_exp;
+  std::map< Node, std::vector< Node > > d_rep_exp_data;
+  /** set eqc rep */
+  void setEqcRep( Node t, Node r, std::vector< Node >& exp_to_add, EqcInfo * eqci );
+  /** use list */
+  NodeIntMap d_uselist;
+  std::map< Node, std::vector< Node > > d_uselist_data;
+  void addToUseList( Node used, Node eqc );
+  /** pending merges */
+  NodeList d_pending_merges;
+  NodeList d_pending_merge_exp;
+  /** add to explanation */
+  void addToExplanation( std::vector< Node >& exp, Node e );
+  void addToExplanationEqc( std::vector< Node >& exp, Node eqc );
+  void addToExplanationEqc( Node eqc, std::vector< Node >& exp_to_add );
+  /** for setting master/slave */
+  Node getMaster( Node t, EqcInfo * eqc, bool& updated, Node new_m = Node::null() );
+  bool updateMaster( Node t1, Node t2, EqcInfo * eqc1, EqcInfo * eqc2 );
+public:
+  //second argument is whether explanations should be tracked
+  EqualityInference(context::Context* c, bool trackExp = false);
+  virtual ~EqualityInference();
+  /** input : notification when equality engine is updated */
+  void eqNotifyNewClass(TNode t);
+  void eqNotifyMerge(TNode t1, TNode t2);
+  /** output : inferred equalities */
+  unsigned getNumPendingMerges() { return d_pending_merges.size(); }
+  Node getPendingMerge( unsigned i ) { return d_pending_merges[i]; }  
+  Node getPendingMergeExplanation( unsigned i );
+};
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/first_order_model.cpp b/src/theory/quantifiers/first_order_model.cpp
new file mode 100644
index 0000000..88b5f5f
--- /dev/null
+++ b/src/theory/quantifiers/first_order_model.cpp
@@ -0,0 +1,956 @@
+/*********************                                                        */
+/*! \file first_order_model.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of model engine model class
+ **/
+
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/ambqi_builder.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/full_model_check.h"
+#include "theory/quantifiers/model_engine.h"
+#include "theory/quantifiers/quantifiers_attributes.h"
+#include "theory/quantifiers/term_database.h"
+
+#define USE_INDEX_ORDERING
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+using namespace CVC4::theory::quantifiers::fmcheck;
+
+struct sortQuantifierRelevance {
+  FirstOrderModel * d_fm;
+  bool operator() (Node i, Node j) {
+    int wi = d_fm->getRelevanceValue( i );
+    int wj = d_fm->getRelevanceValue( j );
+    if( wi==wj ){
+      return i<j;
+    }else{
+      return wi<wj;
+    }
+  }
+};
+
+FirstOrderModel::FirstOrderModel(QuantifiersEngine * qe, context::Context* c, std::string name ) :
+TheoryModel( c, name, true ),
+d_qe( qe ), d_forall_asserts( c ), d_isModelSet( c, false ){
+  d_rlv_count = 0;
+}
+
+void FirstOrderModel::assertQuantifier( Node n ){
+  if( n.getKind()==FORALL ){
+    d_forall_asserts.push_back( n );
+  }else if( n.getKind()==NOT ){
+    Assert( n[0].getKind()==FORALL );
+  }
+}
+
+unsigned FirstOrderModel::getNumAssertedQuantifiers() { 
+  return d_forall_asserts.size(); 
+}
+
+Node FirstOrderModel::getAssertedQuantifier( unsigned i, bool ordered ) { 
+  if( !ordered ){
+    return d_forall_asserts[i]; 
+  }else{
+    Assert( d_forall_rlv_assert.size()==d_forall_asserts.size() );
+    return d_forall_rlv_assert[i];
+  }
+}
+
+Node FirstOrderModel::getCurrentModelValue( Node n, bool partial ) {
+  std::vector< Node > children;
+  if( n.getNumChildren()>0 ){
+    if( n.getKind()!=APPLY_UF && n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+      children.push_back( n.getOperator() );
+    }
+    for (unsigned i=0; i<n.getNumChildren(); i++) {
+      Node nc = getCurrentModelValue( n[i], partial );
+      if (nc.isNull()) {
+        return Node::null();
+      }else{
+        children.push_back( nc );
+      }
+    }
+    if( n.getKind()==APPLY_UF ){
+      return getCurrentUfModelValue( n, children, partial );
+    }else{
+      Node nn = NodeManager::currentNM()->mkNode( n.getKind(), children );
+      nn = Rewriter::rewrite( nn );
+      return nn;
+    }
+  }else{
+    return getRepresentative(n);
+  }
+}
+
+void FirstOrderModel::initialize() {
+  processInitialize( true );
+  //this is called after representatives have been chosen and the equality engine has been built
+  //for each quantifier, collect all operators we care about
+  for( unsigned i=0; i<getNumAssertedQuantifiers(); i++ ){
+    Node f = getAssertedQuantifier( i );
+    if( d_quant_var_id.find( f )==d_quant_var_id.end() ){
+      for(unsigned j=0; j<f[0].getNumChildren(); j++){
+        d_quant_var_id[f][f[0][j]] = j;
+      }
+    }
+    processInitializeQuantifier( f );
+    //initialize relevant models within bodies of all quantifiers
+    std::map< Node, bool > visited;
+    initializeModelForTerm( f[1], visited );
+  }
+  processInitialize( false );
+}
+
+void FirstOrderModel::initializeModelForTerm( Node n, std::map< Node, bool >& visited ){
+  if( visited.find( n )==visited.end() ){
+    visited[n] = true;
+    processInitializeModelForTerm( n );
+    for( int i=0; i<(int)n.getNumChildren(); i++ ){
+      initializeModelForTerm( n[i], visited );
+    }
+  }
+}
+
+Node FirstOrderModel::getSomeDomainElement(TypeNode tn){
+  //check if there is even any domain elements at all
+  if (!d_rep_set.hasType(tn)) {
+    Trace("fmc-model-debug") << "Must create domain element for " << tn << "..." << std::endl;
+    Node mbt = d_qe->getTermDatabase()->getModelBasisTerm(tn);
+    Trace("fmc-model-debug") << "Add to representative set..." << std::endl;
+    d_rep_set.add(tn, mbt);
+  }else if( d_rep_set.d_type_reps[tn].size()==0 ){
+    Message() << "empty reps" << std::endl;
+    exit(0);
+  }
+  return d_rep_set.d_type_reps[tn][0];
+}
+
+/** needs check */
+bool FirstOrderModel::checkNeeded() {
+  return d_forall_asserts.size()>0;
+}
+
+void FirstOrderModel::reset_round() {
+  d_quant_active.clear();
+  
+  //order the quantified formulas
+  d_forall_rlv_assert.clear();
+  if( !d_forall_rlv_vec.empty() ){
+    Trace("fm-relevant") << "Build sorted relevant list..." << std::endl;
+    Trace("fm-relevant-debug") << "Mark asserted quantified formulas..." << std::endl;
+    std::map< Node, bool > qassert;
+    for( unsigned i=0; i<d_forall_asserts.size(); i++ ){
+      qassert[d_forall_asserts[i]] = true;
+    }
+    Trace("fm-relevant-debug") << "Sort the relevant quantified formulas..." << std::endl;
+    sortQuantifierRelevance sqr;
+    sqr.d_fm = this;
+    std::sort( d_forall_rlv_vec.begin(), d_forall_rlv_vec.end(), sqr );
+    Trace("fm-relevant-debug") << "Add relevant asserted formulas..." << std::endl;
+    for( int i=(int)(d_forall_rlv_vec.size()-1); i>=0; i-- ){
+      Node q = d_forall_rlv_vec[i];
+      if( qassert.find( q )!=qassert.end() ){
+        Trace("fm-relevant") << "   " << d_forall_rlv[q] << " : " << q << std::endl;
+        d_forall_rlv_assert.push_back( q );
+      }
+    }
+    Trace("fm-relevant-debug") << "Add remaining asserted formulas..." << std::endl;
+    for( unsigned i=0; i<d_forall_asserts.size(); i++ ){
+      Node q = d_forall_asserts[i];
+      if( std::find( d_forall_rlv_assert.begin(), d_forall_rlv_assert.end(), q )==d_forall_rlv_assert.end() ){
+        d_forall_rlv_assert.push_back( q );
+      }else{
+        Trace("fm-relevant-debug") << "...already included " << q << std::endl;
+      }
+    }
+    Trace("fm-relevant-debug") << "Sizes : " << d_forall_rlv_assert.size() << " " << d_forall_asserts.size() << std::endl;
+    Assert( d_forall_rlv_assert.size()==d_forall_asserts.size() );
+  }else{
+    for( unsigned i=0; i<d_forall_asserts.size(); i++ ){
+      d_forall_rlv_assert.push_back( d_forall_asserts[i] );
+    }
+  }
+}
+
+void FirstOrderModel::markRelevant( Node q ) {
+  if( q!=d_last_forall_rlv ){
+    Trace("fm-relevant") << "Mark relevant : " << q << std::endl;
+    if( std::find( d_forall_rlv_vec.begin(), d_forall_rlv_vec.end(), q )==d_forall_rlv_vec.end() ){
+      d_forall_rlv_vec.push_back( q );
+    }
+    d_forall_rlv[ q ] = d_rlv_count;
+    d_rlv_count++;
+    d_last_forall_rlv = q;
+  }
+}
+
+int FirstOrderModel::getRelevanceValue( Node q ) {
+  std::map< Node, unsigned >::iterator it = d_forall_rlv.find( q );
+  if( it==d_forall_rlv.end() ){
+    return -1;
+  }else{
+    return it->second;
+  }
+}
+
+void FirstOrderModel::setQuantifierActive( TNode q, bool active ) {
+  d_quant_active[q] = active;
+}
+
+bool FirstOrderModel::isQuantifierActive( TNode q ) {
+  std::map< TNode, bool >::iterator it = d_quant_active.find( q );
+  if( it==d_quant_active.end() ){
+    return true;
+  }else{
+    return it->second;
+  }
+}
+
+bool FirstOrderModel::isQuantifierAsserted( TNode q ) {
+  Assert( d_forall_rlv_assert.size()==d_forall_asserts.size() );
+  return std::find( d_forall_rlv_assert.begin(), d_forall_rlv_assert.end(), q )!=d_forall_rlv_assert.end();
+}
+
+FirstOrderModelIG::FirstOrderModelIG(QuantifiersEngine * qe, context::Context* c, std::string name) :
+FirstOrderModel(qe, c,name) {
+
+}
+
+void FirstOrderModelIG::processInitialize( bool ispre ){
+  if( ispre ){
+    //rebuild models
+    d_uf_model_tree.clear();
+    d_uf_model_gen.clear();
+  }
+}
+
+void FirstOrderModelIG::processInitializeModelForTerm( Node n ){
+  if( n.getKind()==APPLY_UF ){
+    Node op = n.getOperator();
+    if( d_uf_model_tree.find( op )==d_uf_model_tree.end() ){
+      TypeNode tn = op.getType();
+      tn = tn[ (int)tn.getNumChildren()-1 ];
+      //only generate models for predicates and functions with uninterpreted range types
+      //if( tn==NodeManager::currentNM()->booleanType() || tn.isSort() ){
+        d_uf_model_tree[ op ] = uf::UfModelTree( op );
+        d_uf_model_gen[ op ].clear();
+      //}
+    }
+  }
+  /*
+  if( n.getType().isArray() ){
+    while( n.getKind()==STORE ){
+      n = n[0];
+    }
+    Node nn = getRepresentative( n );
+    if( d_array_model.find( nn )==d_array_model.end() ){
+      d_array_model[nn] = arrays::ArrayModel( nn, this );
+    }
+  }
+  */
+}
+
+//for evaluation of quantifier bodies
+
+void FirstOrderModelIG::resetEvaluate(){
+  d_eval_uf_use_default.clear();
+  d_eval_uf_model.clear();
+  d_eval_term_index_order.clear();
+  d_eval_failed.clear();
+  d_eval_failed_lits.clear();
+  d_eval_formulas = 0;
+  d_eval_uf_terms = 0;
+  d_eval_lits = 0;
+  d_eval_lits_unknown = 0;
+}
+
+//if evaluate( n ) = eVal,
+// let n' = ri * n be the formula n instantiated with the current values in r_iter
+// if eVal = 1, then n' is true, if eVal = -1, then n' is false,
+// if eVal = 0, then n' cannot be proven to be equal to phaseReq
+// if eVal is not 0, then
+//   each n{ri->d_index[0]/x_0...ri->d_index[depIndex]/x_depIndex, */x_(depIndex+1) ... */x_n } is equivalent in the current model
+int FirstOrderModelIG::evaluate( Node n, int& depIndex, RepSetIterator* ri ){
+  ++d_eval_formulas;
+  Debug("fmf-eval-debug2") << "Evaluate " << n << std::endl;
+  //Notice() << "Eval " << n << std::endl;
+  if( n.getKind()==NOT ){
+    int val = evaluate( n[0], depIndex, ri );
+    return val==1 ? -1 : ( val==-1 ? 1 : 0 );
+  }else if( n.getKind()==OR || n.getKind()==AND ){
+    int baseVal = n.getKind()==AND ? 1 : -1;
+    int eVal = baseVal;
+    int posDepIndex = ri->getNumTerms();
+    int negDepIndex = -1;
+    for( int i=0; i<(int)n.getNumChildren(); i++ ){
+      //evaluate subterm
+      int childDepIndex;
+      Node nn = n[i];
+      int eValT = evaluate( nn, childDepIndex, ri );
+      if( eValT==baseVal ){
+        if( eVal==baseVal ){
+          if( childDepIndex>negDepIndex ){
+            negDepIndex = childDepIndex;
+          }
+        }
+      }else if( eValT==-baseVal ){
+        eVal = -baseVal;
+        if( childDepIndex<posDepIndex ){
+          posDepIndex = childDepIndex;
+          if( posDepIndex==-1 ){
+            break;
+          }
+        }
+      }else if( eValT==0 ){
+        if( eVal==baseVal ){
+          eVal = 0;
+        }
+      }
+    }
+    if( eVal!=0 ){
+      depIndex = eVal==-baseVal ? posDepIndex : negDepIndex;
+      return eVal;
+    }else{
+      return 0;
+    }
+  }else if( n.getKind()==EQUAL && n[0].getType().isBoolean() ){
+    int depIndex1;
+    int eVal = evaluate( n[0], depIndex1, ri );
+    if( eVal!=0 ){
+      int depIndex2;
+      int eVal2 = evaluate( n[1], depIndex2, ri );
+      if( eVal2!=0 ){
+        depIndex = depIndex1>depIndex2 ? depIndex1 : depIndex2;
+        return eVal==eVal2 ? 1 : -1;
+      }
+    }
+    return 0;
+  }else if( n.getKind()==ITE ){
+    int depIndex1, depIndex2;
+    int eVal = evaluate( n[0], depIndex1, ri );
+    if( eVal==0 ){
+      //evaluate children to see if they are the same value
+      int eval1 = evaluate( n[1], depIndex1, ri );
+      if( eval1!=0 ){
+        int eval2 = evaluate( n[1], depIndex2, ri );
+        if( eval1==eval2 ){
+          depIndex = depIndex1>depIndex2 ? depIndex1 : depIndex2;
+          return eval1;
+        }
+      }
+    }else{
+      int eValT = evaluate( n[eVal==1 ? 1 : 2], depIndex2, ri );
+      depIndex = depIndex1>depIndex2 ? depIndex1 : depIndex2;
+      return eValT;
+    }
+    return 0;
+  }else if( n.getKind()==FORALL ){
+    return 0;
+  }else{
+    ++d_eval_lits;
+    ////if we know we will fail again, immediately return
+    //if( d_eval_failed.find( n )!=d_eval_failed.end() ){
+    //  if( d_eval_failed[n] ){
+    //    return -1;
+    //  }
+    //}
+    //Debug("fmf-eval-debug") << "Evaluate literal " << n << std::endl;
+    int retVal = 0;
+    depIndex = ri->getNumTerms()-1;
+    Node val = evaluateTerm( n, depIndex, ri );
+    if( !val.isNull() ){
+      if( areEqual( val, d_true ) ){
+        retVal = 1;
+      }else if( areEqual( val, d_false ) ){
+        retVal = -1;
+      }else{
+        if( val.getKind()==EQUAL ){
+          if( areEqual( val[0], val[1] ) ){
+            retVal = 1;
+          }else if( areDisequal( val[0], val[1] ) ){
+            retVal = -1;
+          }
+        }
+      }
+    }
+    if( retVal!=0 ){
+      Debug("fmf-eval-debug") << "Evaluate literal: return " << retVal << ", depIndex = " << depIndex << std::endl;
+    }else{
+      ++d_eval_lits_unknown;
+      Trace("fmf-eval-amb") << "Neither true nor false : " << n << std::endl;
+      Trace("fmf-eval-amb") << "   value : " << val << std::endl;
+      //std::cout << "Neither true nor false : " << n << std::endl;
+      //std::cout << "  Value : " << val << std::endl;
+      //for( int i=0; i<(int)n.getNumChildren(); i++ ){
+      //  std::cout << "   " << i << " : " << n[i].getType() << std::endl;
+      //}
+    }
+    return retVal;
+  }
+}
+
+Node FirstOrderModelIG::evaluateTerm( Node n, int& depIndex, RepSetIterator* ri ){
+  //Message() << "Eval term " << n << std::endl;
+  Node val;
+  depIndex = ri->getNumTerms()-1;
+  //check the type of n
+  if( n.getKind()==INST_CONSTANT ){
+    int v = n.getAttribute(InstVarNumAttribute());
+    depIndex = ri->getIndexOrder( v );
+    val = ri->getCurrentTerm( v );
+  }else if( n.getKind()==ITE ){
+    int depIndex1, depIndex2;
+    int eval = evaluate( n[0], depIndex1, ri );
+    if( eval==0 ){
+      //evaluate children to see if they are the same
+      Node val1 = evaluateTerm( n[ 1 ], depIndex1, ri );
+      Node val2 = evaluateTerm( n[ 2 ], depIndex2, ri );
+      if( val1==val2 ){
+        val = val1;
+        depIndex = depIndex1>depIndex2 ? depIndex1 : depIndex2;
+      }else{
+        return Node::null();
+      }
+    }else{
+      val = evaluateTerm( n[ eval==1 ? 1 : 2 ], depIndex2, ri );
+      depIndex = depIndex1>depIndex2 ? depIndex1 : depIndex2;
+    }
+  }else{
+    std::vector< int > children_depIndex;
+    //default term evaluate : evaluate all children, recreate the value
+    val = evaluateTermDefault( n, depIndex, children_depIndex, ri );
+    Trace("fmf-eval-debug") << "Evaluate term, value from " << n << " is " << val << std::endl;
+    if( !val.isNull() ){
+      bool setVal = false;
+      //custom ways of evaluating terms
+      if( n.getKind()==APPLY_UF ){
+        Node op = n.getOperator();
+        //Debug("fmf-eval-debug") << "Evaluate term " << n << " (" << gn << ")" << std::endl;
+        //if it is a defined UF, then consult the interpretation
+        if( d_uf_model_tree.find( op )!=d_uf_model_tree.end() ){
+          ++d_eval_uf_terms;
+          int argDepIndex = 0;
+          //make the term model specifically for n
+          makeEvalUfModel( n );
+          //now, consult the model
+          if( d_eval_uf_use_default[n] ){
+            Trace("fmf-eval-debug") << "get default" << std::endl;
+            val = d_uf_model_tree[ op ].getValue( this, val, argDepIndex );
+          }else{
+            Trace("fmf-eval-debug") << "get uf model" << std::endl;
+            val = d_eval_uf_model[ n ].getValue( this, val, argDepIndex );
+          }
+          //Debug("fmf-eval-debug") << "Evaluate term " << n << " (" << gn << ")" << std::endl;
+          //d_eval_uf_model[ n ].debugPrint("fmf-eval-debug", d_qe );
+          Assert( !val.isNull() );
+          //recalculate the depIndex
+          depIndex = -1;
+          for( int i=0; i<argDepIndex; i++ ){
+            int index = d_eval_uf_use_default[n] ? i : d_eval_term_index_order[n][i];
+            Debug("fmf-eval-debug") << "Add variables from " << index << "..." << std::endl;
+            if( children_depIndex[index]>depIndex ){
+              depIndex = children_depIndex[index];
+            }
+          }
+          setVal = true;
+        }else{
+          Trace("fmf-eval-debug") << "No model." << std::endl;
+        }
+      }
+      //if not set already, rewrite and consult model for interpretation
+      if( !setVal ){
+        val = Rewriter::rewrite( val );
+        if( !val.isConst() ){
+          return Node::null();
+        }
+      }
+      Trace("fmf-eval-debug") << "Evaluate term " << n << " = ";
+      printRepresentativeDebug( "fmf-eval-debug", val );
+      Trace("fmf-eval-debug") << " (term " << val << "), depIndex = " << depIndex << std::endl;
+    }
+  }
+  return val;
+}
+
+Node FirstOrderModelIG::evaluateTermDefault( Node n, int& depIndex, std::vector< int >& childDepIndex, RepSetIterator* ri ){
+  depIndex = -1;
+  if( n.getNumChildren()==0 ){
+    return n;
+  }else{
+    bool isInterp = n.getKind()!=APPLY_UF;
+    //first we must evaluate the arguments
+    std::vector< Node > children;
+    if( n.getMetaKind()==kind::metakind::PARAMETERIZED ){
+      children.push_back( n.getOperator() );
+    }
+    //for each argument, calculate its value, and the variables its value depends upon
+    for( int i=0; i<(int)n.getNumChildren(); i++ ){
+      childDepIndex.push_back( -1 );
+      Node nn = evaluateTerm( n[i], childDepIndex[i], ri );
+      if( nn.isNull() ){
+        depIndex = ri->getNumTerms()-1;
+        return nn;
+      }else{
+        if( childDepIndex[i]>depIndex ){
+          depIndex = childDepIndex[i];
+        }
+        if( isInterp ){
+          if( !nn.isConst() ) {
+            nn = getRepresentative( nn );
+          }
+        }
+        children.push_back( nn );
+      }
+    }
+    //recreate the value
+    Node val = NodeManager::currentNM()->mkNode( n.getKind(), children );
+    return val;
+  }
+}
+
+void FirstOrderModelIG::clearEvalFailed( int index ){
+  for( int i=0; i<(int)d_eval_failed_lits[index].size(); i++ ){
+    d_eval_failed[ d_eval_failed_lits[index][i] ] = false;
+  }
+  d_eval_failed_lits[index].clear();
+}
+
+void FirstOrderModelIG::makeEvalUfModel( Node n ){
+  if( d_eval_uf_model.find( n )==d_eval_uf_model.end() ){
+    makeEvalUfIndexOrder( n );
+    if( !d_eval_uf_use_default[n] ){
+      Node op = n.getOperator();
+      d_eval_uf_model[n] = uf::UfModelTree( op, d_eval_term_index_order[n] );
+      d_uf_model_gen[op].makeModel( this, d_eval_uf_model[n] );
+      //Debug("fmf-index-order") << "Make model for " << n << " : " << std::endl;
+      //d_eval_uf_model[n].debugPrint( std::cout, d_qe->getModel(), 2 );
+    }
+  }
+}
+
+struct sortGetMaxVariableNum {
+  std::map< Node, int > d_max_var_num;
+  int computeMaxVariableNum( Node n ){
+    if( n.getKind()==INST_CONSTANT ){
+      return n.getAttribute(InstVarNumAttribute());
+    }else if( TermDb::hasInstConstAttr(n) ){
+      int maxVal = -1;
+      for( int i=0; i<(int)n.getNumChildren(); i++ ){
+        int val = getMaxVariableNum( n[i] );
+        if( val>maxVal ){
+          maxVal = val;
+        }
+      }
+      return maxVal;
+    }else{
+      return -1;
+    }
+  }
+  int getMaxVariableNum( Node n ){
+    std::map< Node, int >::iterator it = d_max_var_num.find( n );
+    if( it==d_max_var_num.end() ){
+      int num = computeMaxVariableNum( n );
+      d_max_var_num[n] = num;
+      return num;
+    }else{
+      return it->second;
+    }
+  }
+  bool operator() (Node i,Node j) { return (getMaxVariableNum(i)<getMaxVariableNum(j));}
+};
+
+void FirstOrderModelIG::makeEvalUfIndexOrder( Node n ){
+  if( d_eval_term_index_order.find( n )==d_eval_term_index_order.end() ){
+#ifdef USE_INDEX_ORDERING
+    //sort arguments in order of least significant vs. most significant variable in default ordering
+    std::map< Node, std::vector< int > > argIndex;
+    std::vector< Node > args;
+    for( int i=0; i<(int)n.getNumChildren(); i++ ){
+      if( argIndex.find( n[i] )==argIndex.end() ){
+        args.push_back( n[i] );
+      }
+      argIndex[n[i]].push_back( i );
+    }
+    sortGetMaxVariableNum sgmvn;
+    std::sort( args.begin(), args.end(), sgmvn );
+    for( int i=0; i<(int)args.size(); i++ ){
+      for( int j=0; j<(int)argIndex[ args[i] ].size(); j++ ){
+        d_eval_term_index_order[n].push_back( argIndex[ args[i] ][j] );
+      }
+    }
+    bool useDefault = true;
+    for( int i=0; i<(int)d_eval_term_index_order[n].size(); i++ ){
+      if( i!=d_eval_term_index_order[n][i] ){
+        useDefault = false;
+        break;
+      }
+    }
+    d_eval_uf_use_default[n] = useDefault;
+    Debug("fmf-index-order") << "Will consider the following index ordering for " << n << " : ";
+    for( int i=0; i<(int)d_eval_term_index_order[n].size(); i++ ){
+      Debug("fmf-index-order") << d_eval_term_index_order[n][i] << " ";
+    }
+    Debug("fmf-index-order") << std::endl;
+#else
+    d_eval_uf_use_default[n] = true;
+#endif
+  }
+}
+
+Node FirstOrderModelIG::getCurrentUfModelValue( Node n, std::vector< Node > & args, bool partial ) {
+  std::vector< Node > children;
+  children.push_back(n.getOperator());
+  children.insert(children.end(), args.begin(), args.end());
+  Node nv = NodeManager::currentNM()->mkNode(APPLY_UF, children);
+  //make the term model specifically for nv
+  makeEvalUfModel( nv );
+  int argDepIndex;
+  if( d_eval_uf_use_default[nv] ){
+    return d_uf_model_tree[ n.getOperator() ].getValue( this, nv, argDepIndex );
+  }else{
+    return d_eval_uf_model[ nv ].getValue( this, nv, argDepIndex );
+  }
+}
+
+
+
+
+FirstOrderModelFmc::FirstOrderModelFmc(QuantifiersEngine * qe, context::Context* c, std::string name) :
+FirstOrderModel(qe, c, name){
+
+}
+
+FirstOrderModelFmc::~FirstOrderModelFmc() throw() {
+  for(std::map<Node, Def*>::iterator i = d_models.begin(); i != d_models.end(); ++i) {
+    delete (*i).second;
+  }
+}
+
+Node FirstOrderModelFmc::getUsedRepresentative(Node n, bool strict) {
+  //Assert( fm->hasTerm(n) );
+  TypeNode tn = n.getType();
+  if( tn.isBoolean() ){
+    return areEqual(n, d_true) ? d_true : d_false;
+  }else{
+    if( !hasTerm(n) ){
+      if( strict ){
+        return Node::null();
+      }else{
+        Trace("fmc-warn") << "WARNING : no representative for " << n << std::endl;
+      }
+    }
+    return getRepresentative(n);
+  }
+}
+
+Node FirstOrderModelFmc::getCurrentUfModelValue( Node n, std::vector< Node > & args, bool partial ) {
+  Trace("fmc-uf-model") << "Get model value for " << n << " " << n.getKind() << std::endl;
+  for(unsigned i=0; i<args.size(); i++) {
+    args[i] = getUsedRepresentative(args[i]);
+  }
+  Assert( n.getKind()==APPLY_UF );
+  return d_models[n.getOperator()]->evaluate(this, args);
+}
+
+void FirstOrderModelFmc::processInitialize( bool ispre ) {
+  if( ispre ){
+    if( options::mbqiMode()==quantifiers::MBQI_FMC_INTERVAL && intervalOp.isNull() ){
+      std::vector< TypeNode > types;
+      for(unsigned i=0; i<2; i++){
+        types.push_back(NodeManager::currentNM()->integerType());
+      }
+      TypeNode typ = NodeManager::currentNM()->mkFunctionType( types, NodeManager::currentNM()->integerType() );
+      intervalOp = NodeManager::currentNM()->mkSkolem( "interval", typ, "op representing interval" );
+    }
+    for( std::map<Node, Def * >::iterator it = d_models.begin(); it != d_models.end(); ++it ){
+      it->second->reset();
+    }
+  }
+}
+
+void FirstOrderModelFmc::processInitializeModelForTerm(Node n) {
+  if( n.getKind()==APPLY_UF ){
+    if( d_models.find(n.getOperator())==d_models.end()) {
+      d_models[n.getOperator()] = new Def;
+    }
+  }
+}
+
+
+bool FirstOrderModelFmc::isStar(Node n) {
+  //return n==getStar(n.getType());
+  return n.getAttribute(IsStarAttribute());
+}
+
+Node FirstOrderModelFmc::getStar(TypeNode tn) {
+  std::map<TypeNode, Node >::iterator it = d_type_star.find( tn );
+  if( it==d_type_star.end() ){
+    Node st = NodeManager::currentNM()->mkSkolem( "star", tn, "skolem created for full-model checking" );
+    d_type_star[tn] = st;
+    st.setAttribute(IsStarAttribute(), true );
+    return st;
+  }
+  return it->second;
+}
+
+Node FirstOrderModelFmc::getStarElement(TypeNode tn) {
+  Node st = getStar(tn);
+  if( options::mbqiMode()==quantifiers::MBQI_FMC_INTERVAL && tn.isInteger() ){
+    st = getInterval( st, st );
+  }
+  return st;
+}
+
+bool FirstOrderModelFmc::isModelBasisTerm(Node n) {
+  return n==getModelBasisTerm(n.getType());
+}
+
+Node FirstOrderModelFmc::getModelBasisTerm(TypeNode tn) {
+  return d_qe->getTermDatabase()->getModelBasisTerm(tn);
+}
+
+Node FirstOrderModelFmc::getFunctionValue(Node op, const char* argPrefix ) {
+  Trace("fmc-model") << "Get function value for " << op << std::endl;
+  TypeNode type = op.getType();
+  std::vector< Node > vars;
+  for( size_t i=0; i<type.getNumChildren()-1; i++ ){
+    std::stringstream ss;
+    ss << argPrefix << (i+1);
+    Node b = NodeManager::currentNM()->mkBoundVar( ss.str(), type[i] );
+    vars.push_back( b );
+  }
+  Node boundVarList = NodeManager::currentNM()->mkNode(kind::BOUND_VAR_LIST, vars);
+  Node curr;
+  for( int i=(d_models[op]->d_cond.size()-1); i>=0; i--) {
+    Node v = d_models[op]->d_value[i];
+    Trace("fmc-model-func") << "Value is : " << v << std::endl;
+    Assert( v.isConst() );
+    /*
+    if( !hasTerm( v ) ){
+      //can happen when the model basis term does not exist in ground assignment
+      TypeNode tn = v.getType();
+      //check if it is a constant introduced as a representative not existing in the model's equality engine
+      if( !d_rep_set.hasRep( tn, v ) ){
+        if( d_rep_set.d_type_reps.find( tn )!=d_rep_set.d_type_reps.end() && !d_rep_set.d_type_reps[ tn ].empty() ){
+          v = d_rep_set.d_type_reps[tn][ d_rep_set.d_type_reps[tn].size()-1 ];
+        }else{
+          //can happen for types not involved in quantified formulas
+          Trace("fmc-model-func") << "No type rep for " << tn << std::endl;
+          v = d_qe->getTermDatabase()->getEnumerateTerm( tn, 0 );
+        }
+        Trace("fmc-model-func") << "No term, assign " << v << std::endl;
+      }
+    }
+    v = getRepresentative( v );
+    */
+    if( curr.isNull() ){
+      Trace("fmc-model-func") << "base : " << v << std::endl;
+      curr = v;
+    }else{
+      //make the condition
+      Node cond = d_models[op]->d_cond[i];
+      Trace("fmc-model-func") << "...cond : " << cond << std::endl;
+      std::vector< Node > children;
+      for( unsigned j=0; j<cond.getNumChildren(); j++) {
+        TypeNode tn = vars[j].getType();
+        if (isInterval(cond[j])){
+          if( !isStar(cond[j][0]) ){
+            children.push_back( NodeManager::currentNM()->mkNode( GEQ, vars[j], cond[j][0] ) );
+          }
+          if( !isStar(cond[j][1]) ){
+            children.push_back( NodeManager::currentNM()->mkNode( LT, vars[j], cond[j][1] ) );
+          }
+        }else if ( !isStar(cond[j]) &&  //handle the case where there are 0 or 1 ground eqc of this type
+                   d_rep_set.d_type_reps.find( tn )!=d_rep_set.d_type_reps.end() && d_rep_set.d_type_reps[ tn ].size()>1 ){
+          Node c = getUsedRepresentative( cond[j] );
+          c = getRepresentative( c );
+          children.push_back( NodeManager::currentNM()->mkNode( EQUAL, vars[j], c ) );
+        }
+      }
+      Assert( !children.empty() );
+      Node cc = children.size()==1 ? children[0] : NodeManager::currentNM()->mkNode( AND, children );
+
+      Trace("fmc-model-func") << "condition : " << cc << ", value : " << v << std::endl;
+      curr = NodeManager::currentNM()->mkNode( ITE, cc, v, curr );
+    }
+  }
+  Trace("fmc-model") << "Made " << curr << " for " << op << std::endl;
+  curr = Rewriter::rewrite( curr );
+  return NodeManager::currentNM()->mkNode(kind::LAMBDA, boundVarList, curr);
+}
+
+bool FirstOrderModelFmc::isInterval(Node n) {
+  return n.getKind()==APPLY_UF && n.getOperator()==intervalOp;
+}
+
+Node FirstOrderModelFmc::getInterval( Node lb, Node ub ){
+  return NodeManager::currentNM()->mkNode( APPLY_UF, intervalOp, lb, ub );
+}
+
+bool FirstOrderModelFmc::isInRange( Node v, Node i ) {
+  if( isStar( i ) ){
+    return true;
+  }else if( isInterval( i ) ){
+    for( unsigned b=0; b<2; b++ ){
+      if( !isStar( i[b] ) ){
+        if( ( b==0 && i[b].getConst<Rational>() > v.getConst<Rational>() ) ||
+            ( b==1 && i[b].getConst<Rational>() <= v.getConst<Rational>() ) ){
+          return false;
+        }
+      }
+    }
+    return true;
+  }else{
+    return v==i;
+  }
+}
+
+
+
+FirstOrderModelAbs::FirstOrderModelAbs(QuantifiersEngine * qe, context::Context* c, std::string name) :
+FirstOrderModel(qe, c, name) {
+
+}
+
+FirstOrderModelAbs::~FirstOrderModelAbs() throw() {
+  for(std::map<Node, AbsDef*>::iterator i = d_models.begin(); i != d_models.end(); ++i) {
+    delete (*i).second;
+  }
+}
+
+void FirstOrderModelAbs::processInitialize( bool ispre ) {
+  if( !ispre ){
+    Trace("ambqi-debug") << "Process initialize" << std::endl;
+    for( std::map<Node, AbsDef * >::iterator it = d_models.begin(); it != d_models.end(); ++it ) {
+      Node op = it->first;
+      TypeNode tno = op.getType();
+      Trace("ambqi-debug") << "  Init " << op << " " << tno << std::endl;
+      for( unsigned i=0; i<tno.getNumChildren(); i++) {
+        //make sure a representative of the type exists
+        if( !d_rep_set.hasType( tno[i] ) ){
+          Node e = getSomeDomainElement( tno[i] );
+          Trace("ambqi-debug") << "  * Initialize type " << tno[i] << ", add ";
+          Trace("ambqi-debug") << e << " " << e.getType() << std::endl;
+          //d_rep_set.add( e );
+        }
+      }
+    }
+  }
+}
+
+unsigned FirstOrderModelAbs::getRepresentativeId( TNode n ) {
+  TNode r = getUsedRepresentative( n );
+  std::map< TNode, unsigned >::iterator it = d_rep_id.find( r );
+  if( it!=d_rep_id.end() ){
+    return it->second;
+  }else{
+    return 0;
+  }
+}
+
+TNode FirstOrderModelAbs::getUsedRepresentative( TNode n ) {
+  if( hasTerm( n ) ){
+    if( n.getType().isBoolean() ){
+      return areEqual(n, d_true) ? d_true : d_false;
+    }else{
+      return getRepresentative( n );
+    }
+  }else{
+    Trace("qint-debug") << "Get rep " << n << " " << n.getType() << std::endl;
+    Assert( d_rep_set.hasType( n.getType() ) && !d_rep_set.d_type_reps[n.getType()].empty() );
+    return d_rep_set.d_type_reps[n.getType()][0];
+  }
+}
+
+Node FirstOrderModelAbs::getFunctionValue(Node op, const char* argPrefix ) {
+  if( d_models_valid[op] ){
+    Trace("ambqi-debug") << "Get function value for " << op << std::endl;
+    TypeNode type = op.getType();
+    std::vector< Node > vars;
+    for( size_t i=0; i<type.getNumChildren()-1; i++ ){
+      std::stringstream ss;
+      ss << argPrefix << (i+1);
+      Node b = NodeManager::currentNM()->mkBoundVar( ss.str(), type[i] );
+      vars.push_back( b );
+    }
+    Node boundVarList = NodeManager::currentNM()->mkNode(kind::BOUND_VAR_LIST, vars);
+    Node curr = d_models[op]->getFunctionValue( this, op, vars );
+    Node fv = NodeManager::currentNM()->mkNode(kind::LAMBDA, boundVarList, curr);
+    Trace("ambqi-debug") << "Return " << fv << std::endl;
+    return fv;
+  }else{
+
+  }
+  return Node::null();
+}
+
+Node FirstOrderModelAbs::getCurrentUfModelValue( Node n, std::vector< Node > & args, bool partial ) {
+  Debug("qint-debug") << "get curr uf value " << n << std::endl;
+  if( d_models_valid[n] ){
+    TypeNode tn = n.getType();
+    if( tn.getNumChildren()>0 ){
+      tn = tn[tn.getNumChildren()-1];
+    }
+    return d_models[n]->evaluate( this, tn, args );
+  }else{
+    return Node::null();
+  }
+}
+
+void FirstOrderModelAbs::processInitializeModelForTerm( Node n ) {
+  if( n.getKind()==APPLY_UF || n.getKind()==VARIABLE || n.getKind()==SKOLEM ){
+    Node op = n.getKind()==APPLY_UF ? n.getOperator() : n;
+    if( d_models.find(op)==d_models.end()) {
+      Trace("abmqi-debug") << "init model for " << op << std::endl;
+      d_models[op] = new AbsDef;
+      d_models_valid[op] = false;
+    }
+  }
+}
+
+void FirstOrderModelAbs::collectEqVars( TNode q, TNode n, std::map< int, bool >& eq_vars ) {
+  for( unsigned i=0; i<n.getNumChildren(); i++ ){
+    if( n.getKind()==EQUAL && n[i].getKind()==BOUND_VARIABLE ){
+      int v = getVariableId( q, n[i] );
+      Assert( v>=0 && v<(int)q[0].getNumChildren() );
+      eq_vars[v] = true;
+    }
+    collectEqVars( q, n[i], eq_vars );
+  }
+}
+
+void FirstOrderModelAbs::processInitializeQuantifier( Node q ) {
+  if( d_var_order.find( q )==d_var_order.end() ){
+    std::map< int, bool > eq_vars;
+    for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
+      eq_vars[i] = false;
+    }
+    collectEqVars( q, q[1], eq_vars );
+    for( unsigned r=0; r<2; r++ ){
+      for( std::map< int, bool >::iterator it = eq_vars.begin(); it != eq_vars.end(); ++it ){
+        if( it->second==(r==1) ){
+          d_var_index[q][it->first] = d_var_order[q].size();
+          d_var_order[q].push_back( it->first );
+        }
+      }
+    }
+  }
+}
+
+Node FirstOrderModelAbs::getVariable( Node q, unsigned i ) {
+  return q[0][d_var_order[q][i]];
+}
diff --git a/src/theory/quantifiers/first_order_model.h b/src/theory/quantifiers/first_order_model.h
new file mode 100644
index 0000000..7ded1b0
--- /dev/null
+++ b/src/theory/quantifiers/first_order_model.h
@@ -0,0 +1,237 @@
+/*********************                                                        */
+/*! \file first_order_model.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Model extended classes
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__FIRST_ORDER_MODEL_H
+#define __CVC4__FIRST_ORDER_MODEL_H
+
+#include "theory/theory_model.h"
+#include "theory/uf/theory_uf_model.h"
+#include "expr/attribute.h"
+
+namespace CVC4 {
+namespace theory {
+
+class QuantifiersEngine;
+
+namespace quantifiers {
+
+class TermDb;
+
+class FirstOrderModelIG;
+
+namespace fmcheck {
+  class FirstOrderModelFmc;
+}/* CVC4::theory::quantifiers::fmcheck namespace */
+
+class FirstOrderModelQInt;
+class FirstOrderModelAbs;
+
+struct IsStarAttributeId {};
+typedef expr::Attribute<IsStarAttributeId, bool> IsStarAttribute;
+
+class FirstOrderModel : public TheoryModel
+{
+protected:
+  /** quant engine */
+  QuantifiersEngine * d_qe;
+  /** list of quantifiers asserted in the current context */
+  context::CDList<Node> d_forall_asserts;
+  /** quantified formulas marked as relevant */
+  unsigned d_rlv_count;
+  std::map< Node, unsigned > d_forall_rlv;
+  std::vector< Node > d_forall_rlv_vec;
+  Node d_last_forall_rlv;
+  std::vector< Node > d_forall_rlv_assert;
+  /** is model set */
+  context::CDO< bool > d_isModelSet;
+  /** get variable id */
+  std::map< Node, std::map< Node, int > > d_quant_var_id;
+  /** get current model value */
+  virtual Node getCurrentUfModelValue( Node n, std::vector< Node > & args, bool partial ) = 0;
+public: //for Theory Quantifiers:
+  /** assert quantifier */
+  void assertQuantifier( Node n );
+  /** get number of asserted quantifiers */
+  unsigned getNumAssertedQuantifiers();
+  /** get asserted quantifier */
+  Node getAssertedQuantifier( unsigned i, bool ordered = false );
+  /** initialize model for term */
+  void initializeModelForTerm( Node n, std::map< Node, bool >& visited );
+  virtual void processInitializeModelForTerm( Node n ) = 0;
+  virtual void processInitializeQuantifier( Node q ) {}
+public:
+  FirstOrderModel(QuantifiersEngine * qe, context::Context* c, std::string name );
+  virtual ~FirstOrderModel() throw() {}
+  virtual FirstOrderModelIG * asFirstOrderModelIG() { return NULL; }
+  virtual fmcheck::FirstOrderModelFmc * asFirstOrderModelFmc() { return NULL; }
+  virtual FirstOrderModelQInt * asFirstOrderModelQInt() { return NULL; }
+  virtual FirstOrderModelAbs * asFirstOrderModelAbs() { return NULL; }
+  // initialize the model
+  void initialize();
+  virtual void processInitialize( bool ispre ) = 0;
+  /** mark model set */
+  void markModelSet() { d_isModelSet = true; }
+  /** is model set */
+  bool isModelSet() { return d_isModelSet; }
+  /** get current model value */
+  Node getCurrentModelValue( Node n, bool partial = false );
+  /** get variable id */
+  int getVariableId(TNode q, TNode n) {
+    return d_quant_var_id.find( q )!=d_quant_var_id.end() ? d_quant_var_id[q][n] : -1;
+  }
+  /** get some domain element */
+  Node getSomeDomainElement(TypeNode tn);
+  /** do we need to do any work? */
+  bool checkNeeded();
+private:
+  //list of inactive quantified formulas
+  std::map< TNode, bool > d_quant_active;
+public:
+  /** reset round */
+  void reset_round();
+  /** mark quantified formula relevant */
+  void markRelevant( Node q );
+  /** get relevance value */
+  int getRelevanceValue( Node q );
+  /** set quantified formula active/inactive 
+   * a quantified formula may be set inactive if for instance:
+   *   - it is entailed by other quantified formulas
+   */
+  void setQuantifierActive( TNode q, bool active );
+  /** is quantified formula active */
+  bool isQuantifierActive( TNode q );
+  /** is quantified formula asserted */
+  bool isQuantifierAsserted( TNode q );
+};/* class FirstOrderModel */
+
+
+class FirstOrderModelIG : public FirstOrderModel
+{
+public: //for Theory UF:
+  //models for each UF operator
+  std::map< Node, uf::UfModelTree > d_uf_model_tree;
+  //model generators
+  std::map< Node, uf::UfModelTreeGenerator > d_uf_model_gen;
+private:
+  //map from terms to the models used to calculate their value
+  std::map< Node, bool > d_eval_uf_use_default;
+  std::map< Node, uf::UfModelTree > d_eval_uf_model;
+  void makeEvalUfModel( Node n );
+  //index ordering to use for each term
+  std::map< Node, std::vector< int > > d_eval_term_index_order;
+  void makeEvalUfIndexOrder( Node n );
+  /** get current model value */
+  Node getCurrentUfModelValue( Node n, std::vector< Node > & args, bool partial );
+//the following functions are for evaluating quantifier bodies
+public:
+  FirstOrderModelIG(QuantifiersEngine * qe, context::Context* c, std::string name);
+  ~FirstOrderModelIG() throw() {}
+  FirstOrderModelIG * asFirstOrderModelIG() { return this; }
+  // initialize the model
+  void processInitialize( bool ispre );
+  //for initialize model
+  void processInitializeModelForTerm( Node n );
+  /** reset evaluation */
+  void resetEvaluate();
+  /** evaluate functions */
+  int evaluate( Node n, int& depIndex, RepSetIterator* ri  );
+  Node evaluateTerm( Node n, int& depIndex, RepSetIterator* ri  );
+public:
+  //statistics
+  int d_eval_formulas;
+  int d_eval_uf_terms;
+  int d_eval_lits;
+  int d_eval_lits_unknown;
+private:
+  //default evaluate term function
+  Node evaluateTermDefault( Node n, int& depIndex, std::vector< int >& childDepIndex, RepSetIterator* ri  );
+  //temporary storing which literals have failed
+  void clearEvalFailed( int index );
+  std::map< Node, bool > d_eval_failed;
+  std::map< int, std::vector< Node > > d_eval_failed_lits;
+};/* class FirstOrderModelIG */
+
+
+namespace fmcheck {
+
+class Def;
+
+class FirstOrderModelFmc : public FirstOrderModel
+{
+  friend class FullModelChecker;
+private:
+  /** models for UF */
+  std::map<Node, Def * > d_models;
+  std::map<TypeNode, Node > d_type_star;
+  Node intervalOp;
+  Node getUsedRepresentative(Node n, bool strict = false);
+  /** get current model value */
+  Node getCurrentUfModelValue( Node n, std::vector< Node > & args, bool partial );
+  void processInitializeModelForTerm(Node n);
+public:
+  FirstOrderModelFmc(QuantifiersEngine * qe, context::Context* c, std::string name);
+  virtual ~FirstOrderModelFmc() throw();
+  FirstOrderModelFmc * asFirstOrderModelFmc() { return this; }
+  // initialize the model
+  void processInitialize( bool ispre );
+  Node getFunctionValue(Node op, const char* argPrefix );
+
+  bool isStar(Node n);
+  Node getStar(TypeNode tn);
+  Node getStarElement(TypeNode tn);
+  bool isModelBasisTerm(Node n);
+  Node getModelBasisTerm(TypeNode tn);
+  bool isInterval(Node n);
+  Node getInterval( Node lb, Node ub );
+  bool isInRange( Node v, Node i );
+};/* class FirstOrderModelFmc */
+
+}/* CVC4::theory::quantifiers::fmcheck namespace */
+
+class AbsDef;
+
+class FirstOrderModelAbs : public FirstOrderModel
+{
+public:
+  std::map< Node, AbsDef * > d_models;
+  std::map< Node, bool > d_models_valid;
+  std::map< TNode, unsigned > d_rep_id;
+  std::map< TypeNode, unsigned > d_domain;
+  std::map< Node, std::vector< int > > d_var_order;
+  std::map< Node, std::map< int, int > > d_var_index;
+private:
+  /** get current model value */
+  Node getCurrentUfModelValue( Node n, std::vector< Node > & args, bool partial );
+  void processInitializeModelForTerm(Node n);
+  void processInitializeQuantifier( Node q );
+  void collectEqVars( TNode q, TNode n, std::map< int, bool >& eq_vars );
+public:
+  FirstOrderModelAbs(QuantifiersEngine * qe, context::Context* c, std::string name);
+  ~FirstOrderModelAbs() throw();
+  FirstOrderModelAbs * asFirstOrderModelAbs() { return this; }
+  void processInitialize( bool ispre );
+  unsigned getRepresentativeId( TNode n );
+  TNode getUsedRepresentative( TNode n );
+  bool isValidType( TypeNode tn ) { return d_domain.find( tn )!=d_domain.end(); }
+  Node getFunctionValue(Node op, const char* argPrefix );
+  Node getVariable( Node q, unsigned i );
+};
+
+}/* CVC4::theory::quantifiers namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__FIRST_ORDER_MODEL_H */
diff --git a/src/theory/quantifiers/full_model_check.cpp b/src/theory/quantifiers/full_model_check.cpp
new file mode 100644
index 0000000..7e528fe
--- /dev/null
+++ b/src/theory/quantifiers/full_model_check.cpp
@@ -0,0 +1,1455 @@
+/*********************                                                        */
+/*! \file full_model_check.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of full model check class
+ **/
+
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/full_model_check.h"
+#include "theory/quantifiers/term_database.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+using namespace CVC4::theory::inst;
+using namespace CVC4::theory::quantifiers::fmcheck;
+
+struct ModelBasisArgSort
+{
+  std::vector< Node > d_terms;
+  bool operator() (int i,int j) {
+    return (d_terms[i].getAttribute(ModelBasisArgAttribute()) <
+            d_terms[j].getAttribute(ModelBasisArgAttribute()) );
+  }
+};
+
+
+struct ConstRationalSort
+{
+  std::vector< Node > d_terms;
+  bool operator() (int i, int j) {
+    return (d_terms[i].getConst<Rational>() < d_terms[j].getConst<Rational>() );
+  }
+};
+
+
+bool EntryTrie::hasGeneralization( FirstOrderModelFmc * m, Node c, int index ) {
+  if (index==(int)c.getNumChildren()) {
+    return d_data!=-1;
+  }else{
+    TypeNode tn = c[index].getType();
+    Node st = m->getStar(tn);
+    if(d_child.find(st)!=d_child.end()) {
+      if( d_child[st].hasGeneralization(m, c, index+1) ){
+        return true;
+      }
+    }
+    if( c[index]!=st && d_child.find( c[index] )!=d_child.end() ){
+      if( d_child[ c[index] ].hasGeneralization(m, c, index+1) ){
+        return true;
+      }
+    }
+    if( c[index].getType().isSort() ){
+      //for star: check if all children are defined and have generalizations
+      if( c[index]==st ){     ///options::fmfFmcCoverSimplify()
+        //check if all children exist and are complete
+        int num_child_def = d_child.size() - (d_child.find(st)!=d_child.end() ? 1 : 0);
+        if( num_child_def==m->d_rep_set.getNumRepresentatives(tn) ){
+          bool complete = true;
+          for ( std::map<Node,EntryTrie>::iterator it = d_child.begin(); it != d_child.end(); ++it ){
+            if( !m->isStar(it->first) ){
+              if( !it->second.hasGeneralization(m, c, index+1) ){
+                complete = false;
+                break;
+              }
+            }
+          }
+          if( complete ){
+            return true;
+          }
+        }
+      }
+    }
+
+    return false;
+  }
+}
+
+int EntryTrie::getGeneralizationIndex( FirstOrderModelFmc * m, std::vector<Node> & inst, int index ) {
+  Debug("fmc-entry-trie") << "Get generalization index " << inst.size() << " " << index << std::endl;
+  if (index==(int)inst.size()) {
+    return d_data;
+  }else{
+    int minIndex = -1;
+    if( options::mbqiMode()==quantifiers::MBQI_FMC_INTERVAL && inst[index].getType().isInteger() ){
+      for( std::map<Node,EntryTrie>::iterator it = d_child.begin(); it != d_child.end(); ++it ){
+        //if( !m->isInterval( it->first ) ){
+        //  std::cout << "Not an interval during getGenIndex " << it->first << std::endl;
+        //  exit( 11 );
+        //}
+        //check if it is in the range
+        if( m->isInRange(inst[index], it->first )  ){
+          int gindex = it->second.getGeneralizationIndex(m, inst, index+1);
+          if( minIndex==-1 || (gindex!=-1 && gindex<minIndex) ){
+            minIndex = gindex;
+          }
+        }
+      }
+    }else{
+      Node st = m->getStar(inst[index].getType());
+      if(d_child.find(st)!=d_child.end()) {
+        minIndex = d_child[st].getGeneralizationIndex(m, inst, index+1);
+      }
+      Node cc = inst[index];
+      if( cc!=st && d_child.find( cc )!=d_child.end() ){
+        int gindex = d_child[ cc ].getGeneralizationIndex(m, inst, index+1);
+        if (minIndex==-1 || (gindex!=-1 && gindex<minIndex) ){
+          minIndex = gindex;
+        }
+      }
+    }
+    return minIndex;
+  }
+}
+
+void EntryTrie::addEntry( FirstOrderModelFmc * m, Node c, Node v, int data, int index ) {
+  if (index==(int)c.getNumChildren()) {
+    if(d_data==-1) {
+      d_data = data;
+    }
+  }
+  else {
+    d_child[ c[index] ].addEntry(m,c,v,data,index+1);
+    if( d_complete==0 ){
+      d_complete = -1;
+    }
+  }
+}
+
+void EntryTrie::getEntries( FirstOrderModelFmc * m, Node c, std::vector<int> & compat, std::vector<int> & gen, int index, bool is_gen ) {
+  if (index==(int)c.getNumChildren()) {
+    if( d_data!=-1) {
+      if( is_gen ){
+        gen.push_back(d_data);
+      }
+      compat.push_back(d_data);
+    }
+  }else{
+    if (m->isStar(c[index])) {
+      for ( std::map<Node,EntryTrie>::iterator it = d_child.begin(); it != d_child.end(); ++it ){
+        it->second.getEntries(m, c, compat, gen, index+1, is_gen );
+      }
+    }else{
+      Node st = m->getStar(c[index].getType());
+      if(d_child.find(st)!=d_child.end()) {
+        d_child[st].getEntries(m, c, compat, gen, index+1, false);
+      }
+      if( d_child.find( c[index] )!=d_child.end() ){
+        d_child[ c[index] ].getEntries(m, c, compat, gen, index+1, is_gen);
+      }
+    }
+
+  }
+}
+
+void EntryTrie::collectIndices(Node c, int index, std::vector< int >& indices ) {
+  if (index==(int)c.getNumChildren()) {
+    if( d_data!=-1 ){
+      indices.push_back( d_data );
+    }
+  }else{
+    for ( std::map<Node,EntryTrie>::iterator it = d_child.begin(); it != d_child.end(); ++it ){
+      it->second.collectIndices(c, index+1, indices );
+    }
+  }
+}
+
+bool EntryTrie::isComplete(FirstOrderModelFmc * m, Node c, int index) {
+  if( d_complete==-1 ){
+    d_complete = 1;
+    if (index<(int)c.getNumChildren()) {
+      Node st = m->getStar(c[index].getType());
+      if(d_child.find(st)!=d_child.end()) {
+        if (!d_child[st].isComplete(m, c, index+1)) {
+          d_complete = 0;
+        }
+      }else{
+        d_complete = 0;
+      }
+    }
+  }
+  return d_complete==1;
+}
+
+bool Def::addEntry( FirstOrderModelFmc * m, Node c, Node v) {
+  if (d_et.hasGeneralization(m, c)) {
+    Trace("fmc-debug") << "Already has generalization, skip." << std::endl;
+    return false;
+  }
+  int newIndex = (int)d_cond.size();
+  if (!d_has_simplified) {
+    std::vector<int> compat;
+    std::vector<int> gen;
+    d_et.getEntries(m, c, compat, gen);
+    for( unsigned i=0; i<compat.size(); i++) {
+      if( d_status[compat[i]]==status_unk ){
+        if( d_value[compat[i]]!=v ){
+          d_status[compat[i]] = status_non_redundant;
+        }
+      }
+    }
+    for( unsigned i=0; i<gen.size(); i++) {
+      if( d_status[gen[i]]==status_unk ){
+        if( d_value[gen[i]]==v ){
+          d_status[gen[i]] = status_redundant;
+        }
+      }
+    }
+    d_status.push_back( status_unk );
+  }
+  d_et.addEntry(m, c, v, newIndex);
+  d_cond.push_back(c);
+  d_value.push_back(v);
+  return true;
+}
+
+Node Def::evaluate( FirstOrderModelFmc * m, std::vector<Node>& inst ) {
+  int gindex = d_et.getGeneralizationIndex(m, inst);
+  if (gindex!=-1) {
+    return d_value[gindex];
+  }else{
+    Trace("fmc-warn") << "Warning : evaluation came up null!" << std::endl;
+    return Node::null();
+  }
+}
+
+int Def::getGeneralizationIndex( FirstOrderModelFmc * m, std::vector<Node>& inst ) {
+  return d_et.getGeneralizationIndex(m, inst);
+}
+
+void Def::basic_simplify( FirstOrderModelFmc * m ) {
+  d_has_simplified = true;
+  std::vector< Node > cond;
+  cond.insert( cond.end(), d_cond.begin(), d_cond.end() );
+  d_cond.clear();
+  std::vector< Node > value;
+  value.insert( value.end(), d_value.begin(), d_value.end() );
+  d_value.clear();
+  d_et.reset();
+  for (unsigned i=0; i<d_status.size(); i++) {
+    if( d_status[i]!=status_redundant ){
+      addEntry(m, cond[i], value[i]);
+    }
+  }
+  d_status.clear();
+}
+
+void Def::simplify(FullModelChecker * mc, FirstOrderModelFmc * m) {
+  basic_simplify( m );
+
+  //check if the last entry is not all star, if so, we can make the last entry all stars
+  if( !d_cond.empty() ){
+    bool last_all_stars = true;
+    Node cc = d_cond[d_cond.size()-1];
+    for( unsigned i=0; i<cc.getNumChildren(); i++ ){
+      if( !m->isInterval(cc[i]) && !m->isStar(cc[i]) ){
+        last_all_stars = false;
+        break;
+      }
+    }
+    if( !last_all_stars ){
+      Trace("fmc-cover-simplify") << "Need to modify last entry to be all stars." << std::endl;
+      Trace("fmc-cover-simplify") << "Before: " << std::endl;
+      debugPrint("fmc-cover-simplify",Node::null(), mc);
+      Trace("fmc-cover-simplify") << std::endl;
+      std::vector< Node > cond;
+      cond.insert( cond.end(), d_cond.begin(), d_cond.end() );
+      d_cond.clear();
+      std::vector< Node > value;
+      value.insert( value.end(), d_value.begin(), d_value.end() );
+      d_value.clear();
+      d_et.reset();
+      d_has_simplified = false;
+      //change the last to all star
+      std::vector< Node > nc;
+      nc.push_back( cc.getOperator() );
+      for( unsigned j=0; j< cc.getNumChildren(); j++){
+        nc.push_back(m->getStarElement(cc[j].getType()));
+      }
+      cond[cond.size()-1] = NodeManager::currentNM()->mkNode( APPLY_UF, nc );
+      //re-add the entries
+      for (unsigned i=0; i<cond.size(); i++) {
+        addEntry(m, cond[i], value[i]);
+      }
+      Trace("fmc-cover-simplify") << "Finished re-adding entries." << std::endl;
+      basic_simplify( m );
+      Trace("fmc-cover-simplify") << "After: " << std::endl;
+      debugPrint("fmc-cover-simplify",Node::null(), mc);
+      Trace("fmc-cover-simplify") << std::endl;
+    }
+  }
+}
+
+void Def::debugPrint(const char * tr, Node op, FullModelChecker * m) {
+  if (!op.isNull()) {
+    Trace(tr) << "Model for " << op << " : " << std::endl;
+  }
+  for( unsigned i=0; i<d_cond.size(); i++) {
+    //print the condition
+    if (!op.isNull()) {
+      Trace(tr) << op;
+    }
+    m->debugPrintCond(tr, d_cond[i], true);
+    Trace(tr) << " -> ";
+    m->debugPrint(tr, d_value[i]);
+    Trace(tr) << std::endl;
+  }
+}
+
+
+FullModelChecker::FullModelChecker(context::Context* c, QuantifiersEngine* qe) :
+QModelBuilder( c, qe ){
+  d_true = NodeManager::currentNM()->mkConst(true);
+  d_false = NodeManager::currentNM()->mkConst(false);
+}
+
+void FullModelChecker::preProcessBuildModel(TheoryModel* m, bool fullModel) {
+  //standard pre-process
+  preProcessBuildModelStd( m, fullModel );
+  
+  FirstOrderModelFmc * fm = ((FirstOrderModelFmc*)m)->asFirstOrderModelFmc();
+  if( !fullModel ){
+    Trace("fmc") << "---Full Model Check preprocess() " << std::endl;
+    d_preinitialized_types.clear();
+    //traverse equality engine
+    eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( fm->d_equalityEngine );
+    while( !eqcs_i.isFinished() ){
+      TypeNode tr = (*eqcs_i).getType();
+      d_preinitialized_types[tr] = true;
+      ++eqcs_i;
+    }
+
+    //must ensure model basis terms exists in model for each relevant type
+    fm->initialize();
+    for( std::map<Node, Def * >::iterator it = fm->d_models.begin(); it != fm->d_models.end(); ++it ) {
+      Node op = it->first;
+      TypeNode tno = op.getType();
+      for( unsigned i=0; i<tno.getNumChildren(); i++) {
+        preInitializeType( fm, tno[i] );
+      }
+    }
+    //do not have to introduce terms for sorts of domains of quantified formulas if we are allowed to assume empty sorts
+    if( !options::fmfEmptySorts() ){
+      for( unsigned i=0; i<fm->getNumAssertedQuantifiers(); i++ ){
+        Node q = fm->getAssertedQuantifier( i );
+        //make sure all types are set
+        for( unsigned j=0; j<q[0].getNumChildren(); j++ ){
+          preInitializeType( fm, q[0][j].getType() );
+        }
+      }
+    }
+  }
+}
+
+void FullModelChecker::processBuildModel(TheoryModel* m, bool fullModel){
+  FirstOrderModelFmc * fm = ((FirstOrderModelFmc*)m)->asFirstOrderModelFmc();
+  if( !fullModel ){
+    Trace("fmc") << "---Full Model Check reset() " << std::endl;
+    d_quant_models.clear();
+    d_rep_ids.clear();
+    d_star_insts.clear();
+    //process representatives
+    for( std::map< TypeNode, std::vector< Node > >::iterator it = fm->d_rep_set.d_type_reps.begin();
+         it != fm->d_rep_set.d_type_reps.end(); ++it ){
+      if( it->first.isSort() ){
+        Trace("fmc") << "Cardinality( " << it->first << " )" << " = " << it->second.size() << std::endl;
+        for( size_t a=0; a<it->second.size(); a++ ){
+          Node r = fm->getUsedRepresentative( it->second[a] );
+          if( Trace.isOn("fmc-model-debug") ){
+            std::vector< Node > eqc;
+            ((EqualityQueryQuantifiersEngine*)d_qe->getEqualityQuery())->getEquivalenceClass( r, eqc );
+            Trace("fmc-model-debug") << "   " << (it->second[a]==r);
+            Trace("fmc-model-debug") << " : " << it->second[a] << " : " << r << " : ";
+            //Trace("fmc-model-debug") << r2 << " : " << ir << " : ";
+            Trace("fmc-model-debug") << " {";
+            for( size_t i=0; i<eqc.size(); i++ ){
+              Trace("fmc-model-debug") << eqc[i] << ", ";
+            }
+            Trace("fmc-model-debug") << "}" << std::endl;
+          }
+          d_rep_ids[it->first][r] = (int)a;
+        }
+        Trace("fmc-model-debug") << std::endl;
+      }
+    }
+
+    //now, make models
+    for( std::map<Node, Def * >::iterator it = fm->d_models.begin(); it != fm->d_models.end(); ++it ) {
+      Node op = it->first;
+      //reset the model
+      fm->d_models[op]->reset();
+
+      Trace("fmc-model-debug") << fm->d_uf_terms[op].size() << " model values for " << op << " ... " << std::endl;
+      std::vector< Node > add_conds;
+      std::vector< Node > add_values;
+      bool needsDefault = true;
+      for( size_t i=0; i<fm->d_uf_terms[op].size(); i++ ){
+        Node n = fm->d_uf_terms[op][i];
+        if( d_qe->getTermDatabase()->isTermActive( n ) ){
+          add_conds.push_back( n );
+          add_values.push_back( n );
+          Node r = fm->getUsedRepresentative(n);
+          Trace("fmc-model-debug") << n << " -> " << r << std::endl;
+          //AlwaysAssert( fm->areEqual( fm->d_uf_terms[op][i], r ) );
+        }else{
+          if( Trace.isOn("fmc-model-debug") ){
+            Node r = fm->getUsedRepresentative(n);
+            Trace("fmc-model-debug") << "[redundant] " << n << " -> " << r << std::endl;
+          }
+        }
+      }
+      Trace("fmc-model-debug") << std::endl;
+      //possibly get default
+      if( needsDefault ){
+        Node nmb = d_qe->getTermDatabase()->getModelBasisOpTerm(op);
+        //add default value if necessary
+        if( fm->hasTerm( nmb ) ){
+          Trace("fmc-model-debug") << "Add default " << nmb << std::endl;
+          add_conds.push_back( nmb );
+          add_values.push_back( nmb );
+        }else{
+          Node vmb = getSomeDomainElement(fm, nmb.getType());
+          Trace("fmc-model-debug") << "Add default to default representative " << nmb << " ";
+          Trace("fmc-model-debug") << fm->d_rep_set.d_type_reps[nmb.getType()].size() << std::endl;
+          add_conds.push_back( nmb );
+          add_values.push_back( vmb );
+        }
+      }
+
+      std::vector< Node > conds;
+      std::vector< Node > values;
+      std::vector< Node > entry_conds;
+      //get the entries for the mdoel
+      for( size_t i=0; i<add_conds.size(); i++ ){
+        Node c = add_conds[i];
+        Node v = add_values[i];
+        std::vector< Node > children;
+        std::vector< Node > entry_children;
+        children.push_back(op);
+        entry_children.push_back(op);
+        bool hasNonStar = false;
+        for( unsigned i=0; i<c.getNumChildren(); i++) {
+          Node ri = fm->getUsedRepresentative( c[i] );
+          children.push_back(ri);
+          bool isStar = false;
+          if( options::mbqiMode()!=quantifiers::MBQI_FMC_INTERVAL || !ri.getType().isInteger() ){
+            if (fm->isModelBasisTerm(ri) ) {
+              ri = fm->getStar( ri.getType() );
+              isStar = true;
+            }else{
+              hasNonStar = true;
+            }
+          }
+          if( !isStar && !ri.isConst() ){
+            Trace("fmc-warn") << "Warning : model for " << op << " has non-constant argument in model " << ri << " (from " << c[i] << ")" << std::endl;
+            Assert( false );
+          }
+          entry_children.push_back(ri);
+        }
+        Node n = NodeManager::currentNM()->mkNode( APPLY_UF, children );
+        Node nv = fm->getUsedRepresentative( v );
+        if( !nv.isConst() ){
+          Trace("fmc-warn") << "Warning : model for " << op << " has non-constant value in model " << nv << std::endl;
+          Assert( false );
+        }
+        Node en = (useSimpleModels() && hasNonStar) ? n : NodeManager::currentNM()->mkNode( APPLY_UF, entry_children );
+        if( std::find(conds.begin(), conds.end(), n )==conds.end() ){
+          Trace("fmc-model-debug") << "- add " << n << " -> " << nv << " (entry is " << en << ")" << std::endl;
+          conds.push_back(n);
+          values.push_back(nv);
+          entry_conds.push_back(en);
+        }
+        else {
+          Trace("fmc-model-debug") << "Already have entry for : " << n << " -> " << nv << " (entry is " << en << ")" << std::endl;
+        }
+      }
+
+
+      //sort based on # default arguments
+      std::vector< int > indices;
+      ModelBasisArgSort mbas;
+      for (int i=0; i<(int)conds.size(); i++) {
+        d_qe->getTermDatabase()->computeModelBasisArgAttribute( conds[i] );
+        mbas.d_terms.push_back(conds[i]);
+        indices.push_back(i);
+      }
+      std::sort( indices.begin(), indices.end(), mbas );
+
+      for (int i=0; i<(int)indices.size(); i++) {
+        fm->d_models[op]->addEntry(fm, entry_conds[indices[i]], values[indices[i]]);
+      }
+
+
+      if( options::mbqiMode()==quantifiers::MBQI_FMC_INTERVAL ){
+        convertIntervalModel( fm, op );
+      }
+
+      Trace("fmc-model-simplify") << "Before simplification : " << std::endl;
+      fm->d_models[op]->debugPrint("fmc-model-simplify", op, this);
+      Trace("fmc-model-simplify") << std::endl;
+
+      Trace("fmc-model-simplify") << "Simplifying " << op << "..." << std::endl;
+      fm->d_models[op]->simplify( this, fm );
+
+      fm->d_models[op]->debugPrint("fmc-model", op, this);
+      Trace("fmc-model") << std::endl;
+
+      //for debugging
+      /*
+      for( size_t i=0; i<fm->d_uf_terms[op].size(); i++ ){
+        std::vector< Node > inst;
+        for( unsigned j=0; j<fm->d_uf_terms[op][i].getNumChildren(); j++ ){
+          Node r = fm->getUsedRepresentative( fm->d_uf_terms[op][i][j] );
+          inst.push_back( r );
+        }
+        Node ev = fm->d_models[op]->evaluate( fm, inst );
+        Trace("fmc-model-debug") << ".....Checking eval( " << fm->d_uf_terms[op][i] << " ) = " << ev << std::endl;
+        AlwaysAssert( fm->areEqual( ev, fm->d_uf_terms[op][i] ) );
+      }
+      */
+    }
+  }else{
+    //make function values
+    for( std::map<Node, Def * >::iterator it = fm->d_models.begin(); it != fm->d_models.end(); ++it ){
+      m->d_uf_models[ it->first ] = getFunctionValue( fm, it->first, "$x" );
+    }
+    TheoryEngineModelBuilder::processBuildModel( m, fullModel );
+    //mark that the model has been set
+    fm->markModelSet();
+    //debug the model
+    debugModel( fm );
+  }
+}
+
+void FullModelChecker::preInitializeType( FirstOrderModelFmc * fm, TypeNode tn ){
+  if( d_preinitialized_types.find( tn )==d_preinitialized_types.end() ){
+    d_preinitialized_types[tn] = true;
+    Node mb = d_qe->getTermDatabase()->getModelBasisTerm(tn);
+    if( !mb.isConst() ){
+      Trace("fmc") << "...add model basis term to EE of model " << mb << " " << tn << std::endl;
+      fm->d_equalityEngine->addTerm( mb );
+      fm->addTerm( mb );
+    }
+  }
+}
+
+void FullModelChecker::debugPrintCond(const char * tr, Node n, bool dispStar) {
+  Trace(tr) << "(";
+  for( unsigned j=0; j<n.getNumChildren(); j++) {
+    if( j>0 ) Trace(tr) << ", ";
+    debugPrint(tr, n[j], dispStar);
+  }
+  Trace(tr) << ")";
+}
+
+void FullModelChecker::debugPrint(const char * tr, Node n, bool dispStar) {
+  FirstOrderModelFmc * fm = (FirstOrderModelFmc *)d_qe->getModel();
+  if( n.isNull() ){
+    Trace(tr) << "null";
+  }
+  else if(fm->isStar(n) && dispStar) {
+    Trace(tr) << "*";
+  }
+  else if(fm->isInterval(n)) {
+    debugPrint(tr, n[0], dispStar );
+    Trace(tr) << "...";
+    debugPrint(tr, n[1], dispStar );
+  }else{
+    TypeNode tn = n.getType();
+    if( tn.isSort() && d_rep_ids.find(tn)!=d_rep_ids.end() ){
+      if (d_rep_ids[tn].find(n)!=d_rep_ids[tn].end()) {
+        Trace(tr) << d_rep_ids[tn][n];
+      }else{
+        Trace(tr) << n;
+      }
+    }else{
+      Trace(tr) << n;
+    }
+  }
+}
+
+
+int FullModelChecker::doExhaustiveInstantiation( FirstOrderModel * fm, Node f, int effort ) {
+  Trace("fmc") << "Full model check " << f << ", effort = " << effort << "..." << std::endl;
+  Assert( !d_qe->inConflict() );
+  if( optUseModel() ){
+    FirstOrderModelFmc * fmfmc = fm->asFirstOrderModelFmc();
+    if (effort==0) {
+      //register the quantifier
+      if (d_quant_cond.find(f)==d_quant_cond.end()) {
+        std::vector< TypeNode > types;
+        for(unsigned i=0; i<f[0].getNumChildren(); i++){
+          types.push_back(f[0][i].getType());
+        }
+        TypeNode typ = NodeManager::currentNM()->mkFunctionType( types, NodeManager::currentNM()->booleanType() );
+        Node op = NodeManager::currentNM()->mkSkolem( "qfmc", typ, "op created for full-model checking" );
+        d_quant_cond[f] = op;
+      }
+
+      if( options::mbqiMode()==MBQI_NONE ){
+        //just exhaustive instantiate
+        Node c = mkCondDefault( fmfmc, f );
+        d_quant_models[f].addEntry( fmfmc, c, d_false );
+        return exhaustiveInstantiate( fmfmc, f, c, -1);
+      }else{
+        //model check the quantifier
+        doCheck(fmfmc, f, d_quant_models[f], f[1]);
+        Trace("fmc") << "Definition for quantifier " << f << " is : " << std::endl;
+        d_quant_models[f].debugPrint("fmc", Node::null(), this);
+        Trace("fmc") << std::endl;
+
+        //consider all entries going to non-true
+        for (unsigned i=0; i<d_quant_models[f].d_cond.size(); i++) {
+          if( d_quant_models[f].d_value[i]!=d_true ) {
+            Trace("fmc-inst") << "Instantiate based on " << d_quant_models[f].d_cond[i] << "..." << std::endl;
+            bool hasStar = false;
+            std::vector< Node > inst;
+            for (unsigned j=0; j<d_quant_models[f].d_cond[i].getNumChildren(); j++) {
+              if (fmfmc->isStar(d_quant_models[f].d_cond[i][j])) {
+                hasStar = true;
+                inst.push_back(fmfmc->getModelBasisTerm(d_quant_models[f].d_cond[i][j].getType()));
+              }else if( fmfmc->isInterval(d_quant_models[f].d_cond[i][j])){
+                hasStar = true;
+                //if interval, find a sample point
+                if( fmfmc->isStar(d_quant_models[f].d_cond[i][j][0]) ){
+                  if( fmfmc->isStar(d_quant_models[f].d_cond[i][j][1]) ){
+                    inst.push_back(fmfmc->getModelBasisTerm(d_quant_models[f].d_cond[i][j][1].getType()));
+                  }else{
+                    Node nn = NodeManager::currentNM()->mkNode( MINUS, d_quant_models[f].d_cond[i][j][1],
+                                                                NodeManager::currentNM()->mkConst( Rational(1) ) );
+                    nn = Rewriter::rewrite( nn );
+                    inst.push_back( nn );
+                  }
+                }else{
+                  inst.push_back(d_quant_models[f].d_cond[i][j][0]);
+                }
+              }else{
+                inst.push_back(d_quant_models[f].d_cond[i][j]);
+              }
+            }
+            bool addInst = true;
+            if( hasStar ){
+              //try obvious (specified by inst)
+              Node ev = d_quant_models[f].evaluate(fmfmc, inst);
+              if (ev==d_true) {
+                addInst = false;
+                Trace("fmc-debug") << "...do not instantiate, evaluation was " << ev << std::endl;
+              }
+            }else{
+              //for debugging
+              if (Trace.isOn("fmc-test-inst")) {
+                Node ev = d_quant_models[f].evaluate(fmfmc, inst);
+                if( ev==d_true ){
+                  std::cout << "WARNING: instantiation was true! " << f << " " << d_quant_models[f].d_cond[i] << std::endl;
+                  exit(0);
+                }else{
+                  Trace("fmc-test-inst") << "...instantiation evaluated to false." << std::endl;
+                }
+              }
+            }
+            if( addInst ){
+              if( options::fmfBound() ){
+                std::vector< Node > cond;
+                cond.push_back(d_quant_cond[f]);
+                cond.insert( cond.end(), inst.begin(), inst.end() );
+                //need to do exhaustive instantiate algorithm to set things properly (should only add one instance)
+                Node c = mkCond( cond );
+                int prevInst = d_addedLemmas;
+                exhaustiveInstantiate( fmfmc, f, c, -1 );
+                if( d_addedLemmas==prevInst ){
+                  d_star_insts[f].push_back(i);
+                }
+              }else{
+                //just add the instance
+                d_triedLemmas++;
+                if( d_qe->addInstantiation( f, inst, true ) ){
+                  Trace("fmc-debug-inst") << "** Added instantiation." << std::endl;
+                  d_addedLemmas++;
+                  if( d_qe->inConflict() || options::fmfOneInstPerRound() ){
+                    break;
+                  }
+                }else{
+                  Trace("fmc-debug-inst") << "** Instantiation was duplicate." << std::endl;
+                  //this can happen if evaluation is unknown, or if we are generalizing a star that already has a value
+                  //if( !hasStar && d_quant_models[f].d_value[i]==d_false ){
+                  //  Trace("fmc-warn") << "**** FMC warning: inconsistent duplicate instantiation." << std::endl;
+                  //}
+                  //this assertion can happen if two instantiations from this round are identical
+                  // (0,1)->false (1,0)->false   for   forall xy. f( x, y ) = f( y, x )
+                  //Assert( hasStar || d_quant_models[f].d_value[i]!=d_false );
+                  //might try it next effort level
+                  d_star_insts[f].push_back(i);
+                }
+              }
+            }else{
+              Trace("fmc-debug-inst") << "** Instantiation was already true." << std::endl;
+              //might try it next effort level
+              d_star_insts[f].push_back(i);
+            }
+          }
+        }
+      }
+    }else{
+      if (!d_star_insts[f].empty()) {
+        Trace("fmc-exh") << "Exhaustive instantiate " << f << std::endl;
+        Trace("fmc-exh") << "Definition was : " << std::endl;
+        d_quant_models[f].debugPrint("fmc-exh", Node::null(), this);
+        Trace("fmc-exh") << std::endl;
+        Def temp;
+        //simplify the exceptions?
+        for( int i=(d_star_insts[f].size()-1); i>=0; i--) {
+          //get witness for d_star_insts[f][i]
+          int j = d_star_insts[f][i];
+          if( temp.addEntry(fmfmc, d_quant_models[f].d_cond[j], d_quant_models[f].d_value[j] ) ){
+            if( !exhaustiveInstantiate(fmfmc, f, d_quant_models[f].d_cond[j], j ) ){
+              //something went wrong, resort to exhaustive instantiation
+              return 0;
+            }
+          }
+        }
+      }
+    }
+    return 1;
+  }else{
+    return 0;
+  }
+}
+
+class RepBoundFmcEntry : public RepBoundExt {
+public:
+  Node d_entry;
+  FirstOrderModelFmc * d_fm;
+  bool setBound( Node owner, int i, TypeNode tn, std::vector< Node >& elements ) {
+    if( d_fm->isInterval(d_entry[i]) ){
+      //explicitly add the interval TODO?
+    }else if( d_fm->isStar(d_entry[i]) ){
+      //add the full range
+      return false;
+    }else{
+      //only need to consider the single point
+      elements.push_back( d_entry[i] );
+      return true;
+    }
+    return false;
+  }
+};
+
+bool FullModelChecker::exhaustiveInstantiate(FirstOrderModelFmc * fm, Node f, Node c, int c_index) {
+  RepSetIterator riter( d_qe, &(fm->d_rep_set) );
+  Trace("fmc-exh") << "----Exhaustive instantiate based on index " << c_index << " : " << c << " ";
+  debugPrintCond("fmc-exh", c, true);
+  Trace("fmc-exh")<< std::endl;
+  RepBoundFmcEntry rbfe;
+  rbfe.d_entry = c;
+  rbfe.d_fm = fm;
+  Trace("fmc-exh-debug") << "Set quantifier..." << std::endl;
+  //initialize
+  if( riter.setQuantifier( f, &rbfe ) ){
+    Trace("fmc-exh-debug") << "Set element domains..." << std::endl;
+    int addedLemmas = 0;
+    //now do full iteration
+    while( !riter.isFinished() ){
+      d_triedLemmas++;
+      Trace("fmc-exh-debug") << "Inst : ";
+      std::vector< Node > ev_inst;
+      std::vector< Node > inst;
+      for( int i=0; i<riter.getNumTerms(); i++ ){
+        Node rr = riter.getCurrentTerm( i );
+        Node r = rr;
+        //if( r.getType().isSort() ){
+        r = fm->getUsedRepresentative( r );
+        //}else{
+        //  r = fm->getCurrentModelValue( r );
+        //}
+        debugPrint("fmc-exh-debug", r);
+        Trace("fmc-exh-debug") << " (term : " << rr << ")";
+        ev_inst.push_back( r );
+        inst.push_back( rr );
+      }
+      int ev_index = d_quant_models[f].getGeneralizationIndex(fm, ev_inst);
+      Trace("fmc-exh-debug") << ", index = " << ev_index << " / " << d_quant_models[f].d_value.size();
+      Node ev = ev_index==-1 ? Node::null() : d_quant_models[f].d_value[ev_index];
+      if (ev!=d_true) {
+        Trace("fmc-exh-debug") << ", add!";
+        //add as instantiation
+        if( d_qe->addInstantiation( f, inst, true ) ){
+          Trace("fmc-exh-debug")  << " ...success.";
+          addedLemmas++;
+          if( d_qe->inConflict() || options::fmfOneInstPerRound() ){
+            break;
+          }
+        }else{
+          Trace("fmc-exh-debug") << ", failed.";
+        }
+      }else{
+        Trace("fmc-exh-debug") << ", already true";
+      }
+      Trace("fmc-exh-debug") << std::endl;
+      int index = riter.increment();
+      Trace("fmc-exh-debug") << "Incremented index " << index << std::endl;
+      if( !riter.isFinished() ){
+        if (index>=0 && riter.d_index[index]>0 && addedLemmas>0 && riter.d_enum_type[index]==RepSetIterator::ENUM_BOUND_INT ) {
+          Trace("fmc-exh-debug") << "Since this is a range enumeration, skip to the next..." << std::endl;
+          riter.increment2( index-1 );
+        }
+      }
+    }
+    d_addedLemmas += addedLemmas;
+    Trace("fmc-exh") << "----Finished Exhaustive instantiate, lemmas = " << addedLemmas << ", incomplete=" << riter.isIncomplete() << std::endl;
+    return addedLemmas>0 || !riter.isIncomplete();
+  }else{
+    Trace("fmc-exh") << "----Finished Exhaustive instantiate, failed." << std::endl;
+    return !riter.isIncomplete();
+  }
+}
+
+void FullModelChecker::doCheck(FirstOrderModelFmc * fm, Node f, Def & d, Node n ) {
+  Trace("fmc-debug") << "Check " << n << " " << n.getKind() << std::endl;
+  //first check if it is a bounding literal
+  if( n.hasAttribute(BoundIntLitAttribute()) ){
+    Trace("fmc-debug") << "It is a bounding literal, polarity = " << n.getAttribute(BoundIntLitAttribute()) << std::endl;
+    d.addEntry(fm, mkCondDefault(fm, f), n.getAttribute(BoundIntLitAttribute())==1 ? d_false : d_true );
+  }else if( n.getKind() == kind::BOUND_VARIABLE ){
+    Trace("fmc-debug") << "Add default entry..." << std::endl;
+    d.addEntry(fm, mkCondDefault(fm, f), n);
+  }
+  else if( n.getKind() == kind::NOT ){
+    //just do directly
+    doCheck( fm, f, d, n[0] );
+    doNegate( d );
+  }
+  else if( n.getKind() == kind::FORALL ){
+    d.addEntry(fm, mkCondDefault(fm, f), Node::null());
+  }
+  else if( n.getType().isArray() ){
+    //Trace("fmc-warn") << "WARNING : ARRAYS : Can't process base array " << r << std::endl;
+    //Trace("fmc-warn") << "          Default value was : " << odefaultValue << std::endl;
+    //Trace("fmc-debug") << "Can't process base array " << r << std::endl;
+    //can't process this array
+    d.reset();
+    d.addEntry(fm, mkCondDefault(fm, f), Node::null());
+  }
+  else if( n.getNumChildren()==0 ){
+    Node r = n;
+    if( !n.isConst() ){
+      if( !fm->hasTerm(n) ){
+        r = getSomeDomainElement(fm, n.getType() );
+      }
+      r = fm->getUsedRepresentative( r );
+    }
+    Trace("fmc-debug") << "Add constant entry..." << std::endl;
+    d.addEntry(fm, mkCondDefault(fm, f), r);
+  }
+  else{
+    std::vector< int > var_ch;
+    std::vector< Def > children;
+    for( int i=0; i<(int)n.getNumChildren(); i++) {
+      Def dc;
+      doCheck(fm, f, dc, n[i]);
+      children.push_back(dc);
+      if( n[i].getKind() == kind::BOUND_VARIABLE ){
+        var_ch.push_back(i);
+      }
+    }
+
+    if( n.getKind()==APPLY_UF ){
+      Trace("fmc-debug") << "Do uninterpreted compose " << n << std::endl;
+      //uninterpreted compose
+      doUninterpretedCompose( fm, f, d, n.getOperator(), children );
+      /*
+    } else if( n.getKind()==SELECT ){
+      Trace("fmc-debug") << "Do select compose " << n << std::endl;
+      std::vector< Def > children2;
+      children2.push_back( children[1] );
+      std::vector< Node > cond;
+      mkCondDefaultVec(fm, f, cond);
+      std::vector< Node > val;
+      doUninterpretedCompose(fm, f, d, children[0], children2, 0, cond, val );
+      */
+    } else {
+      if( !var_ch.empty() ){
+        if( n.getKind()==EQUAL ){
+          if( var_ch.size()==2 ){
+            Trace("fmc-debug") << "Do variable equality " << n << std::endl;
+            doVariableEquality( fm, f, d, n );
+          }else{
+            Trace("fmc-debug") << "Do variable relation " << n << std::endl;
+            doVariableRelation( fm, f, d, var_ch[0]==0 ? children[1] : children[0], var_ch[0]==0 ? n[0] : n[1] );
+          }
+        }else{
+          Trace("fmc-warn") << "Don't know how to check " << n << std::endl;
+          d.addEntry(fm, mkCondDefault(fm, f), Node::null());
+        }
+      }else{
+        Trace("fmc-debug") << "Do interpreted compose " << n << std::endl;
+        std::vector< Node > cond;
+        mkCondDefaultVec(fm, f, cond);
+        std::vector< Node > val;
+        //interpreted compose
+        doInterpretedCompose( fm, f, d, n, children, 0, cond, val );
+      }
+    }
+    Trace("fmc-debug") << "Simplify the definition..." << std::endl;
+    d.debugPrint("fmc-debug", Node::null(), this);
+    d.simplify(this, fm);
+    Trace("fmc-debug") << "Done simplifying" << std::endl;
+  }
+  Trace("fmc-debug") << "Definition for " << n << " is : " << std::endl;
+  d.debugPrint("fmc-debug", Node::null(), this);
+  Trace("fmc-debug") << std::endl;
+}
+
+void FullModelChecker::doNegate( Def & dc ) {
+  for (unsigned i=0; i<dc.d_cond.size(); i++) {
+    if (!dc.d_value[i].isNull()) {
+      dc.d_value[i] = dc.d_value[i]==d_true ? d_false : ( dc.d_value[i]==d_false ? d_true : dc.d_value[i] );
+    }
+  }
+}
+
+void FullModelChecker::doVariableEquality( FirstOrderModelFmc * fm, Node f, Def & d, Node eq ) {
+  std::vector<Node> cond;
+  mkCondDefaultVec(fm, f, cond);
+  if (eq[0]==eq[1]){
+    d.addEntry(fm, mkCond(cond), d_true);
+  }else{
+    TypeNode tn = eq[0].getType();
+    if( tn.isSort() ){
+      int j = fm->getVariableId(f, eq[0]);
+      int k = fm->getVariableId(f, eq[1]);
+      if( !fm->d_rep_set.hasType( tn ) ){
+        getSomeDomainElement( fm, tn );  //to verify the type is initialized
+      }
+      for (unsigned i=0; i<fm->d_rep_set.d_type_reps[tn].size(); i++) {
+        Node r = fm->getUsedRepresentative( fm->d_rep_set.d_type_reps[tn][i] );
+        cond[j+1] = r;
+        cond[k+1] = r;
+        d.addEntry( fm, mkCond(cond), d_true);
+      }
+      d.addEntry( fm, mkCondDefault(fm, f), d_false);
+    }else{
+      d.addEntry( fm, mkCondDefault(fm, f), Node::null());
+    }
+  }
+}
+
+void FullModelChecker::doVariableRelation( FirstOrderModelFmc * fm, Node f, Def & d, Def & dc, Node v) {
+  int j = fm->getVariableId(f, v);
+  for (unsigned i=0; i<dc.d_cond.size(); i++) {
+    Node val = dc.d_value[i];
+    if( val.isNull() ){
+      d.addEntry( fm, dc.d_cond[i], val);
+    }else{
+      if( dc.d_cond[i][j]!=val ){
+        if (fm->isStar(dc.d_cond[i][j])) {
+          std::vector<Node> cond;
+          mkCondVec(dc.d_cond[i],cond);
+          cond[j+1] = val;
+          d.addEntry(fm, mkCond(cond), d_true);
+          cond[j+1] = fm->getStar(val.getType());
+          d.addEntry(fm, mkCond(cond), d_false);
+        }else{
+          d.addEntry( fm, dc.d_cond[i], d_false);
+        }
+      }else{
+        d.addEntry( fm, dc.d_cond[i], d_true);
+      }
+    }
+  }
+}
+
+void FullModelChecker::doUninterpretedCompose( FirstOrderModelFmc * fm, Node f, Def & d, Node op, std::vector< Def > & dc ) {
+  Trace("fmc-uf-debug") << "Definition : " << std::endl;
+  fm->d_models[op]->debugPrint("fmc-uf-debug", op, this);
+  Trace("fmc-uf-debug") << std::endl;
+
+  std::vector< Node > cond;
+  mkCondDefaultVec(fm, f, cond);
+  std::vector< Node > val;
+  doUninterpretedCompose( fm, f, d, *fm->d_models[op], dc, 0, cond, val);
+}
+
+void FullModelChecker::doUninterpretedCompose( FirstOrderModelFmc * fm, Node f, Def & d,
+                                               Def & df, std::vector< Def > & dc, int index,
+                                               std::vector< Node > & cond, std::vector<Node> & val ) {
+  Trace("fmc-uf-process") << "process at " << index << std::endl;
+  for( unsigned i=1; i<cond.size(); i++) {
+    debugPrint("fmc-uf-process", cond[i], true);
+    Trace("fmc-uf-process") << " ";
+  }
+  Trace("fmc-uf-process") << std::endl;
+  if (index==(int)dc.size()) {
+    //we have an entry, now do actual compose
+    std::map< int, Node > entries;
+    doUninterpretedCompose2( fm, f, entries, 0, cond, val, df.d_et);
+    if( entries.empty() ){
+      d.addEntry(fm, mkCond(cond), Node::null());
+    }else{
+      //add them to the definition
+      for( unsigned e=0; e<df.d_cond.size(); e++ ){
+        if ( entries.find(e)!=entries.end() ){
+          Trace("fmf-uf-process-debug") << "Add entry..." << std::endl;
+          d.addEntry(fm, entries[e], df.d_value[e] );
+          Trace("fmf-uf-process-debug") << "Done add entry." << std::endl;
+        }
+      }
+    }
+  }else{
+    for (unsigned i=0; i<dc[index].d_cond.size(); i++) {
+      if (isCompat(fm, cond, dc[index].d_cond[i])!=0) {
+        std::vector< Node > new_cond;
+        new_cond.insert(new_cond.end(), cond.begin(), cond.end());
+        if( doMeet(fm, new_cond, dc[index].d_cond[i]) ){
+          Trace("fmc-uf-process") << "index " << i << " succeeded meet." << std::endl;
+          val.push_back(dc[index].d_value[i]);
+          doUninterpretedCompose(fm, f, d, df, dc, index+1, new_cond, val);
+          val.pop_back();
+        }else{
+          Trace("fmc-uf-process") << "index " << i << " failed meet." << std::endl;
+        }
+      }
+    }
+  }
+}
+
+void FullModelChecker::doUninterpretedCompose2( FirstOrderModelFmc * fm, Node f,
+                                                std::map< int, Node > & entries, int index,
+                                                std::vector< Node > & cond, std::vector< Node > & val,
+                                                EntryTrie & curr ) {
+  Trace("fmc-uf-process") << "compose " << index << " / " << val.size() << std::endl;
+  for( unsigned i=1; i<cond.size(); i++) {
+    debugPrint("fmc-uf-process", cond[i], true);
+    Trace("fmc-uf-process") << " ";
+  }
+  Trace("fmc-uf-process") << std::endl;
+  if (index==(int)val.size()) {
+    Node c = mkCond(cond);
+    Trace("fmc-uf-entry") << "Entry : " << c << " -> index[" << curr.d_data << "]" << std::endl;
+    entries[curr.d_data] = c;
+  }else{
+    Node v = val[index];
+    Trace("fmc-uf-process") << "Process " << v << std::endl;
+    bool bind_var = false;
+    if( !v.isNull() && v.getKind()==kind::BOUND_VARIABLE ){
+      int j = fm->getVariableId(f, v);
+      Trace("fmc-uf-process") << v << " is variable #" << j << std::endl;
+      if (!fm->isStar(cond[j+1]) && !fm->isInterval(cond[j+1])) {
+        v = cond[j+1];
+      }else{
+        bind_var = true;
+      }
+    }
+    if (bind_var) {
+      Trace("fmc-uf-process") << "bind variable..." << std::endl;
+      int j = fm->getVariableId(f, v);
+      if( fm->isStar(cond[j+1]) ){
+        for (std::map<Node, EntryTrie>::iterator it = curr.d_child.begin(); it != curr.d_child.end(); ++it) {
+          cond[j+1] = it->first;
+          doUninterpretedCompose2(fm, f, entries, index+1, cond, val, it->second);
+        }
+        cond[j+1] = fm->getStar(v.getType());
+      }else{
+        Node orig = cond[j+1];
+        for (std::map<Node, EntryTrie>::iterator it = curr.d_child.begin(); it != curr.d_child.end(); ++it) {
+          Node nw = doIntervalMeet( fm, it->first, orig );
+          if( !nw.isNull() ){
+            cond[j+1] = nw;
+            doUninterpretedCompose2(fm, f, entries, index+1, cond, val, it->second);
+          }
+        }
+        cond[j+1] = orig;
+      }
+    }else{
+      if( !v.isNull() ){
+        if( options::mbqiMode()==quantifiers::MBQI_FMC_INTERVAL && v.getType().isInteger() ){
+          for (std::map<Node, EntryTrie>::iterator it = curr.d_child.begin(); it != curr.d_child.end(); ++it) {
+            if( fm->isInRange( v, it->first ) ){
+              doUninterpretedCompose2(fm, f, entries, index+1, cond, val, it->second);
+            }
+          }
+        }else{
+          if (curr.d_child.find(v)!=curr.d_child.end()) {
+            Trace("fmc-uf-process") << "follow value..." << std::endl;
+            doUninterpretedCompose2(fm, f, entries, index+1, cond, val, curr.d_child[v]);
+          }
+          Node st = fm->getStarElement(v.getType());
+          if (curr.d_child.find(st)!=curr.d_child.end()) {
+            Trace("fmc-uf-process") << "follow star..." << std::endl;
+            doUninterpretedCompose2(fm, f, entries, index+1, cond, val, curr.d_child[st]);
+          }
+        }
+      }
+    }
+  }
+}
+
+void FullModelChecker::doInterpretedCompose( FirstOrderModelFmc * fm, Node f, Def & d, Node n,
+                                             std::vector< Def > & dc, int index,
+                                             std::vector< Node > & cond, std::vector<Node> & val ) {
+  Trace("fmc-if-process") << "int compose " << index << " / " << dc.size() << std::endl;
+  for( unsigned i=1; i<cond.size(); i++) {
+    debugPrint("fmc-if-process", cond[i], true);
+    Trace("fmc-if-process") << " ";
+  }
+  Trace("fmc-if-process") << std::endl;
+  if ( index==(int)dc.size() ){
+    Node c = mkCond(cond);
+    Node v = evaluateInterpreted(n, val);
+    d.addEntry(fm, c, v);
+  }
+  else {
+    TypeNode vtn = n.getType();
+    for (unsigned i=0; i<dc[index].d_cond.size(); i++) {
+      if (isCompat(fm, cond, dc[index].d_cond[i])!=0) {
+        std::vector< Node > new_cond;
+        new_cond.insert(new_cond.end(), cond.begin(), cond.end());
+        if( doMeet(fm, new_cond, dc[index].d_cond[i]) ){
+          bool process = true;
+          if (vtn.isBoolean()) {
+            //short circuit
+            if( (n.getKind()==OR && dc[index].d_value[i]==d_true) ||
+                (n.getKind()==AND && dc[index].d_value[i]==d_false) ){
+              Node c = mkCond(new_cond);
+              d.addEntry(fm, c, dc[index].d_value[i]);
+              process = false;
+            }
+          }
+          if (process) {
+            val.push_back(dc[index].d_value[i]);
+            doInterpretedCompose(fm, f, d, n, dc, index+1, new_cond, val);
+            val.pop_back();
+          }
+        }
+      }
+    }
+  }
+}
+
+int FullModelChecker::isCompat( FirstOrderModelFmc * fm, std::vector< Node > & cond, Node c ) {
+  Trace("fmc-debug3") << "isCompat " << c << std::endl;
+  Assert(cond.size()==c.getNumChildren()+1);
+  for (unsigned i=1; i<cond.size(); i++) {
+    if( options::mbqiMode()==quantifiers::MBQI_FMC_INTERVAL && cond[i].getType().isInteger() ){
+      Node iv = doIntervalMeet( fm, cond[i], c[i-1], false );
+      if( iv.isNull() ){
+        return 0;
+      }
+    }else{
+      if( cond[i]!=c[i-1] && !fm->isStar(cond[i]) && !fm->isStar(c[i-1]) ) {
+        return 0;
+      }
+    }
+  }
+  return 1;
+}
+
+bool FullModelChecker::doMeet( FirstOrderModelFmc * fm, std::vector< Node > & cond, Node c ) {
+  Trace("fmc-debug3") << "doMeet " << c << std::endl;
+  Assert(cond.size()==c.getNumChildren()+1);
+  for (unsigned i=1; i<cond.size(); i++) {
+    if( cond[i]!=c[i-1] ) {
+      if( options::mbqiMode()==quantifiers::MBQI_FMC_INTERVAL && cond[i].getType().isInteger() ){
+        Node iv = doIntervalMeet( fm, cond[i], c[i-1] );
+        if( !iv.isNull() ){
+          cond[i] = iv;
+        }else{
+          return false;
+        }
+      }else{
+        if( fm->isStar(cond[i]) ){
+          cond[i] = c[i-1];
+        }else if( !fm->isStar(c[i-1]) ){
+          return false;
+        }
+      }
+    }
+  }
+  return true;
+}
+
+Node FullModelChecker::doIntervalMeet( FirstOrderModelFmc * fm, Node i1, Node i2, bool mk ) {
+  Trace("fmc-debug2") << "Interval meet : " << i1 << " " << i2 << " " << mk << std::endl;
+  if( fm->isStar( i1 ) ){
+    return i2;
+  }else if( fm->isStar( i2 ) ){
+    return i1;
+  }else if( !fm->isInterval( i1 ) && fm->isInterval( i2 ) ){
+    return doIntervalMeet( fm, i2, i1, mk );
+  }else if( !fm->isInterval( i2 ) ){
+    if( fm->isInterval( i1 ) ){
+      if( fm->isInRange( i2, i1 ) ){
+        return i2;
+      }
+    }else if( i1==i2 ){
+      return i1;
+    }
+    return Node::null();
+  }else{
+    Node b[2];
+    for( unsigned j=0; j<2; j++ ){
+      Node b1 = i1[j];
+      Node b2 = i2[j];
+      if( fm->isStar( b1 ) ){
+        b[j] = b2;
+      }else if( fm->isStar( b2 ) ){
+        b[j] = b1;
+      }else if( b1.getConst<Rational>() < b2.getConst<Rational>() ){
+        b[j] = j==0 ? b2 : b1;
+      }else{
+        b[j] = j==0 ? b1 : b2;
+      }
+    }
+    if( fm->isStar( b[0] ) || fm->isStar( b[1] ) || b[0].getConst<Rational>() < b[1].getConst<Rational>() ){
+      return mk ? fm->getInterval( b[0], b[1] ) : i1;
+    }else{
+      return Node::null();
+    }
+  }
+}
+
+Node FullModelChecker::mkCond( std::vector< Node > & cond ) {
+  return NodeManager::currentNM()->mkNode(APPLY_UF, cond);
+}
+
+Node FullModelChecker::mkCondDefault( FirstOrderModelFmc * fm, Node f) {
+  std::vector< Node > cond;
+  mkCondDefaultVec(fm, f, cond);
+  return mkCond(cond);
+}
+
+void FullModelChecker::mkCondDefaultVec( FirstOrderModelFmc * fm, Node f, std::vector< Node > & cond ) {
+  Trace("fmc-debug") << "Make default vec, intervals = " << (options::mbqiMode()==quantifiers::MBQI_FMC_INTERVAL) << std::endl;
+  //get function symbol for f
+  cond.push_back(d_quant_cond[f]);
+  for (unsigned i=0; i<f[0].getNumChildren(); i++) {
+    Node ts = fm->getStarElement( f[0][i].getType() );
+    Assert( ts.getType()==f[0][i].getType() );
+    cond.push_back(ts);
+  }
+}
+
+void FullModelChecker::mkCondVec( Node n, std::vector< Node > & cond ) {
+  cond.push_back(n.getOperator());
+  for( unsigned i=0; i<n.getNumChildren(); i++ ){
+    cond.push_back( n[i] );
+  }
+}
+
+Node FullModelChecker::mkArrayCond( Node a ) {
+  if( d_array_term_cond.find(a)==d_array_term_cond.end() ){
+    if( d_array_cond.find(a.getType())==d_array_cond.end() ){
+      TypeNode typ = NodeManager::currentNM()->mkFunctionType( a.getType(), NodeManager::currentNM()->booleanType() );
+      Node op = NodeManager::currentNM()->mkSkolem( "fmc", typ, "op created for full-model checking" );
+      d_array_cond[a.getType()] = op;
+    }
+    std::vector< Node > cond;
+    cond.push_back(d_array_cond[a.getType()]);
+    cond.push_back(a);
+    d_array_term_cond[a] = NodeManager::currentNM()->mkNode(APPLY_UF, cond );
+  }
+  return d_array_term_cond[a];
+}
+
+Node FullModelChecker::evaluateInterpreted( Node n, std::vector< Node > & vals ) {
+  if( n.getKind()==EQUAL ){
+    if (!vals[0].isNull() && !vals[1].isNull()) {
+      return vals[0]==vals[1] ? d_true : d_false;
+    }else{
+      return Node::null();
+    }
+  }else if( n.getKind()==ITE ){
+    if( vals[0]==d_true ){
+      return vals[1];
+    }else if( vals[0]==d_false ){
+      return vals[2];
+    }else{
+      return vals[1]==vals[2] ? vals[1] : Node::null();
+    }
+  }else if( n.getKind()==AND || n.getKind()==OR ){
+    bool isNull = false;
+    for (unsigned i=0; i<vals.size(); i++) {
+      if((vals[i]==d_true && n.getKind()==OR) || (vals[i]==d_false && n.getKind()==AND)) {
+        return vals[i];
+      }else if( vals[i].isNull() ){
+        isNull = true;
+      }
+    }
+    return isNull ? Node::null() : vals[0];
+  }else{
+    std::vector<Node> children;
+    if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+      children.push_back( n.getOperator() );
+    }
+    for (unsigned i=0; i<vals.size(); i++) {
+      if( vals[i].isNull() ){
+        return Node::null();
+      }else{
+        children.push_back( vals[i] );
+      }
+    }
+    Node nc = NodeManager::currentNM()->mkNode(n.getKind(), children);
+    Trace("fmc-eval") << "Evaluate " << nc << " to ";
+    nc = Rewriter::rewrite(nc);
+    Trace("fmc-eval") << nc << std::endl;
+    return nc;
+  }
+}
+
+Node FullModelChecker::getSomeDomainElement( FirstOrderModelFmc * fm, TypeNode tn ) {
+  bool addRepId = !fm->d_rep_set.hasType( tn );
+  Node de = fm->getSomeDomainElement(tn);
+  if( addRepId ){
+    d_rep_ids[tn][de] = 0;
+  }
+  return de;
+}
+
+Node FullModelChecker::getFunctionValue(FirstOrderModelFmc * fm, Node op, const char* argPrefix ) {
+  return fm->getFunctionValue(op, argPrefix);
+}
+
+
+bool FullModelChecker::useSimpleModels() {
+  return options::fmfFmcSimple();
+}
+
+void FullModelChecker::convertIntervalModel( FirstOrderModelFmc * fm, Node op ){
+  Trace("fmc-interval-model") << "Changing to interval model, Before : " << std::endl;
+  fm->d_models[op]->debugPrint("fmc-interval-model", op, this);
+  Trace("fmc-interval-model") << std::endl;
+  std::vector< int > indices;
+  for( int i=0; i<(int)fm->d_models[op]->d_cond.size(); i++ ){
+    indices.push_back( i );
+  }
+  std::map< int, std::map< int, Node > > changed_vals;
+  makeIntervalModel( fm, op, indices, 0, changed_vals );
+
+  std::vector< Node > conds;
+  std::vector< Node > values;
+  for( unsigned i=0; i<fm->d_models[op]->d_cond.size(); i++ ){
+    if( changed_vals.find(i)==changed_vals.end() ){
+      conds.push_back( fm->d_models[op]->d_cond[i] );
+    }else{
+      std::vector< Node > children;
+      children.push_back( op );
+      for( unsigned j=0; j<fm->d_models[op]->d_cond[i].getNumChildren(); j++ ){
+        if( changed_vals[i].find(j)==changed_vals[i].end() ){
+          children.push_back( fm->d_models[op]->d_cond[i][j] );
+        }else{
+          children.push_back( changed_vals[i][j] );
+        }
+      }
+      Node nc = NodeManager::currentNM()->mkNode( APPLY_UF, children );
+      conds.push_back( nc );
+      Trace("fmc-interval-model") << "Interval : Entry #" << i << " changed to ";
+      debugPrintCond("fmc-interval-model", nc, true );
+      Trace("fmc-interval-model") << std::endl;
+    }
+    values.push_back( fm->d_models[op]->d_value[i] );
+  }
+  fm->d_models[op]->reset();
+  for( unsigned i=0; i<conds.size(); i++ ){
+    fm->d_models[op]->addEntry(fm, conds[i], values[i] );
+  }
+}
+
+void FullModelChecker::makeIntervalModel( FirstOrderModelFmc * fm, Node op, std::vector< int > & indices, int index,
+                                          std::map< int, std::map< int, Node > >& changed_vals ) {
+  if( index==(int)fm->d_models[op]->d_cond[0].getNumChildren() ){
+    makeIntervalModel2( fm, op, indices, 0, changed_vals );
+  }else{
+    TypeNode tn = fm->d_models[op]->d_cond[0][index].getType();
+    if( tn.isInteger() ){
+      makeIntervalModel(fm,op,indices,index+1, changed_vals );
+    }else{
+      std::map< Node, std::vector< int > > new_indices;
+      for( unsigned i=0; i<indices.size(); i++ ){
+        Node v = fm->d_models[op]->d_cond[indices[i]][index];
+        new_indices[v].push_back( indices[i] );
+      }
+
+      for( std::map< Node, std::vector< int > >::iterator it = new_indices.begin(); it != new_indices.end(); ++it ){
+        makeIntervalModel( fm, op, it->second, index+1, changed_vals );
+      }
+    }
+  }
+}
+
+void FullModelChecker::makeIntervalModel2( FirstOrderModelFmc * fm, Node op, std::vector< int > & indices, int index,
+                                          std::map< int, std::map< int, Node > >& changed_vals ) {
+  Debug("fmc-interval-model-debug") << "Process " << index << " with indicies : ";
+  for( unsigned i=0; i<indices.size(); i++ ){
+    Debug("fmc-interval-model-debug") << indices[i] << " ";
+  }
+  Debug("fmc-interval-model-debug") << std::endl;
+
+  if( index<(int)fm->d_models[op]->d_cond[0].getNumChildren() ){
+    TypeNode tn = fm->d_models[op]->d_cond[0][index].getType();
+    if( tn.isInteger() ){
+      std::map< Node, std::vector< int > > new_indices;
+      for( unsigned i=0; i<indices.size(); i++ ){
+        Node v = fm->d_models[op]->d_cond[indices[i]][index];
+        new_indices[v].push_back( indices[i] );
+        if( !v.isConst() ){
+          Trace("fmc-warn") << "WARNING: for interval, model has non-constant : " << v << std::endl;
+          Trace("fmc-warn") << "From condition : " << fm->d_models[op]->d_cond[indices[i]] << std::endl;
+        }
+      }
+
+      std::vector< Node > values;
+      for( std::map< Node, std::vector< int > >::iterator it = new_indices.begin(); it != new_indices.end(); ++it ){
+        makeIntervalModel2( fm, op, it->second, index+1, changed_vals );
+        values.push_back( it->first );
+      }
+
+      if( tn.isInteger() ){
+        //sort values by size
+        ConstRationalSort crs;
+        std::vector< int > sindices;
+        for( unsigned i=0; i<values.size(); i++ ){
+          sindices.push_back( (int)i );
+          crs.d_terms.push_back( values[i] );
+        }
+        std::sort( sindices.begin(), sindices.end(), crs );
+
+        Node ub = fm->getStar( tn );
+        for( int i=(int)(sindices.size()-1); i>=0; i-- ){
+          Node lb = fm->getStar( tn );
+          if( i>0 ){
+            lb = values[sindices[i]];
+          }
+          Node interval = fm->getInterval( lb, ub );
+          for( unsigned j=0; j<new_indices[values[sindices[i]]].size(); j++ ){
+            Debug("fmc-interval-model-debug") << "Change " << new_indices[values[sindices[i]]][j] << ", " << index << " to " << interval << std::endl;
+            changed_vals[new_indices[values[sindices[i]]][j]][index] = interval;
+          }
+          ub = lb;
+        }
+      }
+    }else{
+      makeIntervalModel2( fm, op, indices, index+1, changed_vals );
+    }
+  }
+}
diff --git a/src/theory/quantifiers/full_model_check.h b/src/theory/quantifiers/full_model_check.h
new file mode 100644
index 0000000..7d21b41
--- /dev/null
+++ b/src/theory/quantifiers/full_model_check.h
@@ -0,0 +1,160 @@
+/*********************                                                        */
+/*! \file full_model_check.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Full model check class
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANTIFIERS__FULL_MODEL_CHECK_H
+#define __CVC4__THEORY__QUANTIFIERS__FULL_MODEL_CHECK_H
+
+#include "theory/quantifiers/model_builder.h"
+#include "theory/quantifiers/first_order_model.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+namespace fmcheck {
+
+
+class FirstOrderModelFmc;
+class FullModelChecker;
+
+class EntryTrie
+{
+private:
+  int d_complete;
+public:
+  EntryTrie() : d_complete(-1), d_data(-1){}
+  std::map<Node,EntryTrie> d_child;
+  int d_data;
+  void reset() { d_data = -1; d_child.clear(); d_complete = -1; }
+  void addEntry( FirstOrderModelFmc * m, Node c, Node v, int data, int index = 0 );
+  bool hasGeneralization( FirstOrderModelFmc * m, Node c, int index = 0 );
+  int getGeneralizationIndex( FirstOrderModelFmc * m, std::vector<Node> & inst, int index = 0 );
+  void getEntries( FirstOrderModelFmc * m, Node c, std::vector<int> & compat, std::vector<int> & gen, int index = 0, bool is_gen = true );
+
+  void collectIndices(Node c, int index, std::vector< int >& indices );
+  bool isComplete(FirstOrderModelFmc * m, Node c, int index);
+};/* class EntryTrie */
+
+
+class Def
+{
+public:
+  EntryTrie d_et;
+  //cond is APPLY_UF whose arguments are returned by FullModelChecker::getRepresentative
+  std::vector< Node > d_cond;
+  //value is returned by FullModelChecker::getRepresentative
+  std::vector< Node > d_value;
+  void basic_simplify( FirstOrderModelFmc * m );
+private:
+  enum {
+    status_unk,
+    status_redundant,
+    status_non_redundant
+  };
+  std::vector< int > d_status;
+  bool d_has_simplified;
+public:
+  Def() : d_has_simplified(false){}
+  void reset() {
+    d_et.reset();
+    d_cond.clear();
+    d_value.clear();
+    d_status.clear();
+    d_has_simplified = false;
+  }
+  bool addEntry( FirstOrderModelFmc * m, Node c, Node v);
+  Node evaluate( FirstOrderModelFmc * m, std::vector<Node>& inst );
+  int getGeneralizationIndex( FirstOrderModelFmc * m, std::vector<Node>& inst );
+  void simplify( FullModelChecker * mc, FirstOrderModelFmc * m );
+  void debugPrint(const char * tr, Node op, FullModelChecker * m);
+};/* class Def */
+
+
+class FullModelChecker : public QModelBuilder
+{
+protected:
+  Node d_true;
+  Node d_false;
+  std::map<TypeNode, std::map< Node, int > > d_rep_ids;
+  std::map<Node, Def > d_quant_models;
+  std::map<Node, Node > d_quant_cond;
+  std::map< TypeNode, Node > d_array_cond;
+  std::map< Node, Node > d_array_term_cond;
+  std::map< Node, std::vector< int > > d_star_insts;
+  std::map< TypeNode, bool > d_preinitialized_types;
+  void preInitializeType( FirstOrderModelFmc * fm, TypeNode tn );
+  Node normalizeArgReps(FirstOrderModelFmc * fm, Node op, Node n);
+  bool exhaustiveInstantiate(FirstOrderModelFmc * fm, Node f, Node c, int c_index);
+protected:
+  void makeIntervalModel2( FirstOrderModelFmc * fm, Node op, std::vector< int > & indices, int index,
+                          std::map< int, std::map< int, Node > >& changed_vals );
+  void makeIntervalModel( FirstOrderModelFmc * fm, Node op, std::vector< int > & indices, int index,
+                          std::map< int, std::map< int, Node > >& changed_vals );
+  void convertIntervalModel( FirstOrderModelFmc * fm, Node op );
+private:
+  void doCheck(FirstOrderModelFmc * fm, Node f, Def & d, Node n );
+
+  void doNegate( Def & dc );
+  void doVariableEquality( FirstOrderModelFmc * fm, Node f, Def & d, Node eq );
+  void doVariableRelation( FirstOrderModelFmc * fm, Node f, Def & d, Def & dc, Node v);
+  void doUninterpretedCompose( FirstOrderModelFmc * fm, Node f, Def & d, Node n, std::vector< Def > & dc );
+
+  void doUninterpretedCompose( FirstOrderModelFmc * fm, Node f, Def & d,
+                               Def & df, std::vector< Def > & dc, int index,
+                               std::vector< Node > & cond, std::vector<Node> & val );
+  void doUninterpretedCompose2( FirstOrderModelFmc * fm, Node f,
+                                std::map< int, Node > & entries, int index,
+                                std::vector< Node > & cond, std::vector< Node > & val,
+                                EntryTrie & curr);
+
+  void doInterpretedCompose( FirstOrderModelFmc * fm, Node f, Def & d, Node n,
+                             std::vector< Def > & dc, int index,
+                             std::vector< Node > & cond, std::vector<Node> & val );
+  int isCompat( FirstOrderModelFmc * fm, std::vector< Node > & cond, Node c );
+  Node doIntervalMeet( FirstOrderModelFmc * fm, Node i1, Node i2, bool mk = true );
+  bool doMeet( FirstOrderModelFmc * fm, std::vector< Node > & cond, Node c );
+  Node mkCond( std::vector< Node > & cond );
+  Node mkCondDefault( FirstOrderModelFmc * fm, Node f );
+  void mkCondDefaultVec( FirstOrderModelFmc * fm, Node f, std::vector< Node > & cond );
+  void mkCondVec( Node n, std::vector< Node > & cond );
+  Node mkArrayCond( Node a );
+  Node evaluateInterpreted( Node n, std::vector< Node > & vals );
+  Node getSomeDomainElement( FirstOrderModelFmc * fm, TypeNode tn );
+public:
+  FullModelChecker( context::Context* c, QuantifiersEngine* qe );
+  ~FullModelChecker() throw() {}
+
+  void debugPrintCond(const char * tr, Node n, bool dispStar = false);
+  void debugPrint(const char * tr, Node n, bool dispStar = false);
+
+  int doExhaustiveInstantiation( FirstOrderModel * fm, Node f, int effort );
+
+  Node getFunctionValue(FirstOrderModelFmc * fm, Node op, const char* argPrefix );
+
+  /** process build model */  
+  void preProcessBuildModel(TheoryModel* m, bool fullModel); 
+  void processBuildModel(TheoryModel* m, bool fullModel);
+  /** get current model value */
+  Node getCurrentUfModelValue( FirstOrderModelFmc* fm, Node n, std::vector< Node > & args, bool partial );
+
+  bool useSimpleModels();
+};/* class FullModelChecker */
+
+}/* CVC4::theory::quantifiers::fmcheck namespace */
+}/* CVC4::theory::quantifiers namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__QUANTIFIERS__FULL_MODEL_CHECK_H */
diff --git a/src/theory/quantifiers/fun_def_engine.cpp b/src/theory/quantifiers/fun_def_engine.cpp
new file mode 100644
index 0000000..cf1d146
--- /dev/null
+++ b/src/theory/quantifiers/fun_def_engine.cpp
@@ -0,0 +1,54 @@
+/*********************                                                        */
+/*! \file fun_def_engine.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** This class implements specialized techniques for (recursively) defined functions
+ **/
+
+#include <vector>
+
+#include "theory/quantifiers/fun_def_engine.h"
+#include "theory/rewriter.h"
+#include "theory/quantifiers/term_database.h"
+
+using namespace CVC4;
+using namespace std;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+using namespace CVC4::kind;
+
+FunDefEngine::FunDefEngine( QuantifiersEngine * qe, context::Context* c ) : QuantifiersModule( qe ) {
+  
+}
+
+/* whether this module needs to check this round */
+bool FunDefEngine::needsCheck( Theory::Effort e ) { 
+  return e>=Theory::EFFORT_LAST_CALL; 
+}
+
+/* reset at a round */
+void FunDefEngine::reset_round( Theory::Effort e ){
+  //TODO
+}
+
+/* Call during quantifier engine's check */
+void FunDefEngine::check( Theory::Effort e, unsigned quant_e ) {
+  //TODO
+}
+
+/* Called for new quantifiers */
+void FunDefEngine::registerQuantifier( Node q ) {
+  //TODO
+}
+
+/** called for everything that gets asserted */
+void FunDefEngine::assertNode( Node n ) {
+  //TODO
+}
diff --git a/src/theory/quantifiers/fun_def_engine.h b/src/theory/quantifiers/fun_def_engine.h
new file mode 100644
index 0000000..3b95281
--- /dev/null
+++ b/src/theory/quantifiers/fun_def_engine.h
@@ -0,0 +1,59 @@
+/*********************                                                        */
+/*! \file fun_def_engine.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Specialized techniques for (recursively) defined functions
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__QUANTIFIERS_FUN_DEF_ENGINE_H
+#define __CVC4__QUANTIFIERS_FUN_DEF_ENGINE_H
+
+#include <iostream>
+#include <string>
+#include <vector>
+#include <map>
+#include "expr/node.h"
+#include "expr/type_node.h"
+#include "theory/quantifiers_engine.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+//module for handling (recursively) defined functions
+class FunDefEngine : public QuantifiersModule {
+private:
+
+public:
+  FunDefEngine( QuantifiersEngine * qe, context::Context* c );
+  ~FunDefEngine(){}
+
+  /* whether this module needs to check this round */
+  bool needsCheck( Theory::Effort e );
+  /* reset at a round */
+  void reset_round( Theory::Effort e );
+  /* Call during quantifier engine's check */
+  void check( Theory::Effort e, unsigned quant_e );
+  /* Called for new quantifiers */
+  void registerQuantifier( Node q );
+  /** called for everything that gets asserted */
+  void assertNode( Node n );
+  /** Identify this module (for debugging, dynamic configuration, etc..) */
+  std::string identify() const { return "FunDefEngine"; }
+};
+
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/fun_def_process.cpp b/src/theory/quantifiers/fun_def_process.cpp
new file mode 100644
index 0000000..1172fb9
--- /dev/null
+++ b/src/theory/quantifiers/fun_def_process.cpp
@@ -0,0 +1,218 @@
+/*********************                                                        */
+/*! \file fun_def_process.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Sort inference module
+ **
+ ** This class implements pre-process steps for well-defined functions
+ **/
+
+#include <vector>
+
+#include "theory/quantifiers/fun_def_process.h"
+#include "theory/rewriter.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/quant_util.h"
+#include "proof/proof_manager.h"
+
+using namespace CVC4;
+using namespace std;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+using namespace CVC4::kind;
+
+
+void FunDefFmf::simplify( std::vector< Node >& assertions, bool doRewrite ) {
+  std::vector< int > fd_assertions;
+  std::map< int, Node > subs_head;
+  //first pass : find defined functions, transform quantifiers
+  for( unsigned i=0; i<assertions.size(); i++ ){
+    Node n = TermDb::getFunDefHead( assertions[i] );
+    if( !n.isNull() ){
+      Assert( n.getKind()==APPLY_UF );
+      Node f = n.getOperator();
+
+      //check if already defined, if so, throw error
+      if( d_sorts.find( f )!=d_sorts.end() ){
+        Message() << "Cannot define function " << f << " more than once." << std::endl;
+        exit( 0 );
+      }
+
+      Node bd = TermDb::getFunDefBody( assertions[i] );
+      Trace("fmf-fun-def-debug") << "Process function " << n << ", body = " << bd << std::endl;
+      if( !bd.isNull() ){
+        d_funcs.push_back( f );
+        bd = NodeManager::currentNM()->mkNode( EQUAL, n, bd );
+
+        //create a sort S that represents the inputs of the function
+        std::stringstream ss;
+        ss << "I_" << f;
+        TypeNode iType = NodeManager::currentNM()->mkSort( ss.str() );
+        AbsTypeFunDefAttribute atfda;
+        iType.setAttribute(atfda,true);
+        d_sorts[f] = iType;
+
+        //create functions f1...fn mapping from this sort to concrete elements
+        for( unsigned j=0; j<n.getNumChildren(); j++ ){
+          TypeNode typ = NodeManager::currentNM()->mkFunctionType( iType, n[j].getType() );
+          std::stringstream ss;
+          ss << f << "_arg_" << j;
+          d_input_arg_inj[f].push_back( NodeManager::currentNM()->mkSkolem( ss.str(), typ, "op created during fun def fmf" ) );
+        }
+
+        //construct new quantifier forall S. F[f1(S)/x1....fn(S)/xn]
+        std::vector< Node > children;
+        Node bv = NodeManager::currentNM()->mkBoundVar("?i", iType );
+        Node bvl = NodeManager::currentNM()->mkNode( kind::BOUND_VAR_LIST, bv );
+        std::vector< Node > subs;
+        std::vector< Node > vars;
+        for( unsigned j=0; j<n.getNumChildren(); j++ ){
+          vars.push_back( n[j] );
+          subs.push_back( NodeManager::currentNM()->mkNode( APPLY_UF, d_input_arg_inj[f][j], bv ) );
+        }
+        bd = bd.substitute( vars.begin(), vars.end(), subs.begin(), subs.end() );
+        subs_head[i] = n.substitute( vars.begin(), vars.end(), subs.begin(), subs.end() );
+
+        Trace("fmf-fun-def") << "FMF fun def: FUNCTION : rewrite " << assertions[i] << std::endl;
+        Trace("fmf-fun-def") << "  to " << std::endl;
+        Node new_q = NodeManager::currentNM()->mkNode( FORALL, bvl, bd );
+        new_q = Rewriter::rewrite( new_q );
+        PROOF( ProofManager::currentPM()->addDependence(new_q, assertions[i]); );
+        assertions[i] = new_q;
+        Trace("fmf-fun-def") << "  " << assertions[i] << std::endl;
+        fd_assertions.push_back( i );
+      }else{
+        //can be, e.g. in corner cases forall x. f(x)=f(x), forall x. f(x)=f(x)+1
+      }
+    }
+  }
+  //second pass : rewrite assertions
+  for( unsigned i=0; i<assertions.size(); i++ ){
+    int is_fd = std::find( fd_assertions.begin(), fd_assertions.end(), i )!=fd_assertions.end() ? 1 : 0;
+    //constant boolean function definitions do not add domain constraints
+    if( is_fd==0 || ( is_fd==1 && assertions[i][1].getKind()==EQUAL ) ){
+      std::vector< Node > constraints;
+      Trace("fmf-fun-def-rewrite") << "Rewriting " << assertions[i] << ", is_fd = " << is_fd << std::endl;
+      Node n = simplifyFormula( assertions[i], true, true, constraints, is_fd==1 ? subs_head[i] : Node::null(), is_fd );
+      Assert( constraints.empty() );
+      if( n!=assertions[i] ){
+        n = Rewriter::rewrite( n );
+        Trace("fmf-fun-def-rewrite") << "FMF fun def : rewrite " << assertions[i] << std::endl;
+        Trace("fmf-fun-def-rewrite") << "  to " << std::endl;
+        Trace("fmf-fun-def-rewrite") << "  " << n << std::endl;
+        PROOF( ProofManager::currentPM()->addDependence(n, assertions[i]); );
+        assertions[i] = n;
+      }
+    }
+  }
+}
+
+//is_fun_def 1 : top of fun-def, 2 : top of fun-def body, 0 : not top
+Node FunDefFmf::simplifyFormula( Node n, bool pol, bool hasPol, std::vector< Node >& constraints, Node hd, int is_fun_def ) {
+  Trace("fmf-fun-def-debug") << "Simplify " << n << " " << pol << " " << hasPol << " " << is_fun_def << std::endl;
+  if( n.getKind()==FORALL ){
+    Node c = simplifyFormula( n[1], pol, hasPol, constraints, hd, is_fun_def );
+    //append prenex to constraints
+    for( unsigned i=0; i<constraints.size(); i++ ){
+      constraints[i] = NodeManager::currentNM()->mkNode( FORALL, n[0], constraints[i] );
+      constraints[i] = Rewriter::rewrite( constraints[i] );
+    }
+    if( c!=n[1] ){
+      return NodeManager::currentNM()->mkNode( FORALL, n[0], c );
+    }else{
+      return n;
+    }
+  }else{
+    Node nn = n;
+    bool isBool = n.getType().isBoolean();
+    if( isBool && n.getKind()!=APPLY_UF && is_fun_def!=2 ){
+      std::vector< Node > children;
+      bool childChanged = false;
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        Node c = n[i];
+        //do not process LHS of definition
+        if( is_fun_def!=1 || c!=hd ){
+          bool newHasPol;
+          bool newPol;
+          QuantPhaseReq::getPolarity( n, i, hasPol, pol, newHasPol, newPol );
+          //get child constraints
+          std::vector< Node > cconstraints;
+          c = simplifyFormula( n[i], newPol, newHasPol, cconstraints, hd, is_fun_def==1 ? 2 : 0 );
+          constraints.insert( constraints.end(), cconstraints.begin(), cconstraints.end() );
+        }
+        children.push_back( c );
+        childChanged = c!=n[i] || childChanged;
+      }
+      if( childChanged ){
+        nn = NodeManager::currentNM()->mkNode( n.getKind(), children );
+      }
+    }else{
+      //simplify term
+      simplifyTerm( n, constraints );
+    }
+    if( !constraints.empty() && isBool && hasPol ){
+      std::vector< Node > c;
+      c.push_back( nn );
+      //conjoin with current
+      for( unsigned i=0; i<constraints.size(); i++ ){
+        if( pol ){
+          c.push_back( constraints[i] );
+        }else{
+          c.push_back( constraints[i].negate() );
+        }
+      }
+      constraints.clear();
+      return c.size()==1 ? c[0] : NodeManager::currentNM()->mkNode( pol ? AND : OR, c );
+    }else{
+      return nn;
+    }
+  }
+}
+
+void FunDefFmf::simplifyTerm( Node n, std::vector< Node >& constraints ) {
+  Trace("fmf-fun-def-debug") << "Simplify term " << n << std::endl;
+  if( n.getKind()==ITE ){
+    simplifyTerm( n[0], constraints );
+    std::vector< Node > ccons1;
+    std::vector< Node > ccons2;
+    simplifyTerm( n[1], ccons1 );
+    simplifyTerm( n[2], ccons2 );
+    if( !ccons1.empty() || !ccons2.empty() ){
+      Node n1 = ccons1.empty() ? NodeManager::currentNM()->mkConst( true ) : ( ccons1.size()==1 ? ccons1[0] : NodeManager::currentNM()->mkNode( AND, ccons1 ) );
+      Node n2 = ccons2.empty() ? NodeManager::currentNM()->mkConst( true ) : ( ccons2.size()==1 ? ccons2[0] : NodeManager::currentNM()->mkNode( AND, ccons2 ) );
+      constraints.push_back( NodeManager::currentNM()->mkNode( ITE, n[0], n1, n2 ) );
+    }
+  }else{
+    if( n.getKind()==APPLY_UF ){
+      //check if f is defined, if so, we must enforce domain constraints for this f-application
+      Node f = n.getOperator();
+      std::map< Node, TypeNode >::iterator it = d_sorts.find( f );
+      if( it!=d_sorts.end() ){
+        //create existential
+        Node z = NodeManager::currentNM()->mkBoundVar("?z", it->second );
+        Node bvl = NodeManager::currentNM()->mkNode( BOUND_VAR_LIST, z );
+        std::vector< Node > children;
+        for( unsigned j=0; j<n.getNumChildren(); j++ ){
+          Node uz = NodeManager::currentNM()->mkNode( APPLY_UF, d_input_arg_inj[f][j], z );
+          children.push_back( uz.eqNode( n[j] ) );
+        }
+        Node bd = children.size()==1 ? children[0] : NodeManager::currentNM()->mkNode( AND, children );
+        bd = bd.negate();
+        Node ex = NodeManager::currentNM()->mkNode( FORALL, bvl, bd );
+        ex = ex.negate();
+        constraints.push_back( ex );
+        Trace("fmf-fun-def-debug") << "---> add constraint " << ex << std::endl;
+      }
+    }
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      simplifyTerm( n[i], constraints );
+    }
+  }
+}
diff --git a/src/theory/quantifiers/fun_def_process.h b/src/theory/quantifiers/fun_def_process.h
new file mode 100644
index 0000000..1f6ee65
--- /dev/null
+++ b/src/theory/quantifiers/fun_def_process.h
@@ -0,0 +1,56 @@
+/*********************                                                        */
+/*! \file fun_def_process.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Pre-process steps for well-defined functions
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__QUANTIFIERS_FUN_DEF_PROCESS_H
+#define __CVC4__QUANTIFIERS_FUN_DEF_PROCESS_H
+
+#include <iostream>
+#include <string>
+#include <vector>
+#include <map>
+#include "expr/node.h"
+#include "expr/type_node.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+//find finite models for well-defined functions
+class FunDefFmf {
+private:
+  //simplify
+  Node simplifyFormula( Node n, bool pol, bool hasPol, std::vector< Node >& constraints, Node hd, int is_fun_def = 0 );
+  //simplify term
+  void simplifyTerm( Node n, std::vector< Node >& constraints );
+public:
+  FunDefFmf(){}
+  ~FunDefFmf(){}
+  //defined functions to input sort (alpha)
+  std::map< Node, TypeNode > d_sorts;
+  //defined functions to injections input -> argument elements (gamma)
+  std::map< Node, std::vector< Node > > d_input_arg_inj;
+  // (newly) defined functions
+  std::vector< Node > d_funcs;
+  //simplify
+  void simplify( std::vector< Node >& assertions, bool doRewrite = false );
+};
+
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/inst_match.cpp b/src/theory/quantifiers/inst_match.cpp
new file mode 100644
index 0000000..12e15d3
--- /dev/null
+++ b/src/theory/quantifiers/inst_match.cpp
@@ -0,0 +1,481 @@
+/*********************                                                        */
+/*! \file inst_match.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of inst match class
+ **/
+
+#include "theory/quantifiers/inst_match.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/quant_util.h"
+#include "theory/quantifiers_engine.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+
+namespace CVC4 {
+namespace theory {
+namespace inst {
+
+InstMatch::InstMatch( TNode f ) {
+  for( unsigned i=0; i<f[0].getNumChildren(); i++ ){
+    d_vals.push_back( Node::null() );
+  }
+}
+
+InstMatch::InstMatch( InstMatch* m ) {
+  d_vals.insert( d_vals.end(), m->d_vals.begin(), m->d_vals.end() );
+}
+
+bool InstMatch::add( InstMatch& m ){
+  for( unsigned i=0; i<d_vals.size(); i++ ){
+    if( d_vals[i].isNull() ){
+      d_vals[i] = m.d_vals[i];
+    }
+  }
+  return true;
+}
+
+bool InstMatch::merge( EqualityQuery* q, InstMatch& m ){
+  for( unsigned i=0; i<m.d_vals.size(); i++ ){
+    if( !m.d_vals[i].isNull() ){
+      if( d_vals[i].isNull() ){
+        d_vals[i] = m.d_vals[i];
+      }else{
+        if( !q->areEqual( d_vals[i], m.d_vals[i]) ){
+          clear();
+          return false;
+        }
+      }
+    }
+  }
+  return true;
+}
+
+void InstMatch::debugPrint( const char* c ){
+  for( unsigned i=0; i<d_vals.size(); i++ ){
+    if( !d_vals[i].isNull() ){
+      Debug( c ) << "   " << i << " -> " << d_vals[i] << std::endl;
+    }
+  }
+}
+
+bool InstMatch::isComplete() {
+  for( unsigned i=0; i<d_vals.size(); i++ ){
+    if( d_vals[i].isNull() ){
+      return false;
+    }
+  }
+  return true;
+}
+
+bool InstMatch::empty() {
+  for( unsigned i=0; i<d_vals.size(); i++ ){
+    if( !d_vals[i].isNull() ){
+      return false;
+    }
+  }
+  return true;
+}
+
+void InstMatch::makeRepresentative( QuantifiersEngine* qe ){
+  for( unsigned i=0; i<d_vals.size(); i++ ){
+    if( !d_vals[i].isNull() ){
+      if( qe->getEqualityQuery()->getEngine()->hasTerm( d_vals[i] ) ){
+        d_vals[i] = qe->getEqualityQuery()->getEngine()->getRepresentative( d_vals[i] );
+      }
+    }
+  }
+}
+
+void InstMatch::applyRewrite(){
+  for( unsigned i=0; i<d_vals.size(); i++ ){
+    if( !d_vals[i].isNull() ){
+      d_vals[i] = Rewriter::rewrite( d_vals[i] );
+    }
+  }
+}
+
+void InstMatch::clear() {
+  for( unsigned i=0; i<d_vals.size(); i++ ){
+    d_vals[i] = Node::null();
+  }
+}
+
+/** get value */
+
+Node InstMatch::get( int i ) {
+  return d_vals[i];
+}
+
+void InstMatch::getTerms( Node f, std::vector< Node >& inst ){
+  for( size_t i=0; i<f[0].getNumChildren(); i++ ){
+    inst.push_back( d_vals[i] );
+  }
+}
+
+void InstMatch::setValue( int i, TNode n ) {
+  d_vals[i] = n;
+}
+
+bool InstMatch::set( QuantifiersEngine* qe, int i, TNode n ) {
+  if( !d_vals[i].isNull() ){
+    if( qe->getEqualityQuery()->areEqual( d_vals[i], n ) ){
+      return true;
+    }else{
+      return false;
+    }
+  }else{
+    d_vals[i] = n;
+    return true;
+  }
+}
+
+bool InstMatchTrie::addInstMatch( QuantifiersEngine* qe, Node f, std::vector< Node >& m, bool modEq,
+                                  ImtIndexOrder* imtio, bool onlyExist, int index ) {
+  if( index==(int)f[0].getNumChildren() || ( imtio && index==(int)imtio->d_order.size() ) ){
+    return false;
+  }else{
+    int i_index = imtio ? imtio->d_order[index] : index;
+    Node n = m[i_index];
+    std::map< Node, InstMatchTrie >::iterator it = d_data.find( n );
+    if( it!=d_data.end() ){
+      bool ret = it->second.addInstMatch( qe, f, m, modEq, imtio, onlyExist, index+1 );
+      if( !onlyExist || !ret ){
+        return ret;
+      }
+    }
+    if( modEq ){
+      //check modulo equality if any other instantiation match exists
+      if( !n.isNull() && qe->getEqualityQuery()->getEngine()->hasTerm( n ) ){
+        eq::EqClassIterator eqc( qe->getEqualityQuery()->getEngine()->getRepresentative( n ),
+                                 qe->getEqualityQuery()->getEngine() );
+        while( !eqc.isFinished() ){
+          Node en = (*eqc);
+          if( en!=n ){
+            std::map< Node, InstMatchTrie >::iterator itc = d_data.find( en );
+            if( itc!=d_data.end() ){
+              if( itc->second.addInstMatch( qe, f, m, modEq, imtio, true, index+1 ) ){
+                return false;
+              }
+            }
+          }
+          ++eqc;
+        }
+      }
+    }
+    if( !onlyExist ){
+      d_data[n].addInstMatch( qe, f, m, modEq, imtio, false, index+1 );
+    }
+    return true;
+  }
+}
+
+bool InstMatchTrie::removeInstMatch( QuantifiersEngine* qe, Node q, std::vector< Node >& m, ImtIndexOrder* imtio, int index ) {
+  Assert( index<(int)q[0].getNumChildren() );
+  Assert( !imtio || index<(int)imtio->d_order.size() );
+  int i_index = imtio ? imtio->d_order[index] : index;
+  Node n = m[i_index];
+  std::map< Node, InstMatchTrie >::iterator it = d_data.find( n );
+  if( it!=d_data.end() ){
+    if( (index+1)==(int)q[0].getNumChildren() || ( imtio && (index+1)==(int)imtio->d_order.size() ) ){
+      d_data.erase( n );
+      return true;
+    }else{
+      return it->second.removeInstMatch( qe, q, m, imtio, index+1 );
+    }
+  }else{
+    return false;
+  }
+}
+
+bool InstMatchTrie::recordInstLemma( Node q, std::vector< Node >& m, Node lem, ImtIndexOrder* imtio, int index ){
+  if( index==(int)q[0].getNumChildren() || ( imtio && index==(int)imtio->d_order.size() ) ){
+    setInstLemma( lem );
+    return true;
+  }else{
+    int i_index = imtio ? imtio->d_order[index] : index;
+    std::map< Node, InstMatchTrie >::iterator it = d_data.find( m[i_index] );
+    if( it!=d_data.end() ){
+      return it->second.recordInstLemma( q, m, lem, imtio, index+1 );
+    }else{
+      return false;
+    }
+  }
+}
+
+void InstMatchTrie::print( std::ostream& out, Node q, std::vector< TNode >& terms, bool& firstTime, bool useActive, std::vector< Node >& active ) const {
+  if( terms.size()==q[0].getNumChildren() ){
+    bool print;
+    if( useActive ){
+      if( hasInstLemma() ){
+        Node lem = getInstLemma();
+        print = std::find( active.begin(), active.end(), lem )!=active.end();
+      }else{
+        print = false;
+      }
+    }else{
+      print = true;
+    }  
+    if( print ){ 
+      if( firstTime ){
+        out << "(instantiation " << q << std::endl;
+        firstTime = false;
+      }
+      out << "  ( ";
+      for( unsigned i=0; i<terms.size(); i++ ){
+        if( i>0 ){ out << ", ";}
+        out << terms[i];
+      }
+      out << " )" << std::endl;
+    }
+  }else{
+    for( std::map< Node, InstMatchTrie >::const_iterator it = d_data.begin(); it != d_data.end(); ++it ){
+      terms.push_back( it->first );
+      it->second.print( out, q, terms, firstTime, useActive, active );
+      terms.pop_back();
+    }
+  }
+}
+
+void InstMatchTrie::getInstantiations( std::vector< Node >& insts, Node q, std::vector< Node >& terms, QuantifiersEngine * qe, bool useActive, std::vector< Node >& active ) const {
+  if( terms.size()==q[0].getNumChildren() ){
+    if( useActive ){
+      if( hasInstLemma() ){
+        Node lem = getInstLemma();
+        if( std::find( active.begin(), active.end(), lem )!=active.end() ){
+          insts.push_back( lem );
+        }
+      }
+    }else{
+      if( hasInstLemma() ){
+        insts.push_back( getInstLemma() );
+      }else{
+        insts.push_back( qe->getInstantiation( q, terms, true ) );
+      }
+    }
+  }else{
+    for( std::map< Node, InstMatchTrie >::const_iterator it = d_data.begin(); it != d_data.end(); ++it ){
+      terms.push_back( it->first );
+      it->second.getInstantiations( insts, q, terms, qe, useActive, active );
+      terms.pop_back();
+    }
+  }
+}
+
+void InstMatchTrie::getExplanationForInstLemmas( Node q, std::vector< Node >& terms, std::vector< Node >& lems, std::map< Node, Node >& quant, std::map< Node, std::vector< Node > >& tvec ) const {
+  if( terms.size()==q[0].getNumChildren() ){
+    if( hasInstLemma() ){
+      Node lem = getInstLemma();
+      if( std::find( lems.begin(), lems.end(), lem )!=lems.end() ){
+        quant[lem] = q;
+        tvec[lem].clear();
+        tvec[lem].insert( tvec[lem].end(), terms.begin(), terms.end() );
+      }
+    }
+  }else{
+    for( std::map< Node, InstMatchTrie >::const_iterator it = d_data.begin(); it != d_data.end(); ++it ){
+      terms.push_back( it->first );
+      it->second.getExplanationForInstLemmas( q, terms, lems, quant, tvec );
+      terms.pop_back();
+    }
+  }
+}
+
+CDInstMatchTrie::~CDInstMatchTrie() {
+  for(std::map< Node, CDInstMatchTrie* >::iterator i = d_data.begin(),
+          iend = d_data.end(); i != iend; ++i) {
+    CDInstMatchTrie* current = (*i).second;
+    delete current;
+  }
+  d_data.clear();
+}
+
+
+bool CDInstMatchTrie::addInstMatch( QuantifiersEngine* qe, Node f, std::vector< Node >& m,
+                                    context::Context* c, bool modEq, int index, bool onlyExist ){
+  bool reset = false;
+  if( !d_valid.get() ){
+    if( onlyExist ){
+      return true;
+    }else{
+      d_valid.set( true );
+      reset = true;
+    }
+  }
+  if( index==(int)f[0].getNumChildren() ){
+    return reset;
+  }else{
+    Node n = m[ index ];
+    std::map< Node, CDInstMatchTrie* >::iterator it = d_data.find( n );
+    if( it!=d_data.end() ){
+      bool ret = it->second->addInstMatch( qe, f, m, c, modEq, index+1, onlyExist );
+      if( !onlyExist || !ret ){
+        return reset || ret;
+      }
+    }
+    if( modEq ){
+      //check modulo equality if any other instantiation match exists
+      if( !n.isNull() && qe->getEqualityQuery()->getEngine()->hasTerm( n ) ){
+        eq::EqClassIterator eqc( qe->getEqualityQuery()->getEngine()->getRepresentative( n ),
+                                 qe->getEqualityQuery()->getEngine() );
+        while( !eqc.isFinished() ){
+          Node en = (*eqc);
+          if( en!=n ){
+            std::map< Node, CDInstMatchTrie* >::iterator itc = d_data.find( en );
+            if( itc!=d_data.end() ){
+              if( itc->second->addInstMatch( qe, f, m, c, modEq, index+1, true ) ){
+                return false;
+              }
+            }
+          }
+          ++eqc;
+        }
+      }
+    }
+
+    if( !onlyExist ){
+      // std::map< Node, CDInstMatchTrie* >::iterator it = d_data.find( n );
+      CDInstMatchTrie* imt = new CDInstMatchTrie( c );
+      Assert(d_data.find(n) == d_data.end());
+      d_data[n] = imt;
+      imt->addInstMatch( qe, f, m, c, modEq, index+1, false );
+    }
+    return true;
+  }
+}
+
+bool CDInstMatchTrie::removeInstMatch( QuantifiersEngine* qe, Node q, std::vector< Node >& m, int index ) {
+  if( index==(int)q[0].getNumChildren() ){
+    if( d_valid.get() ){
+      d_valid.set( false );
+      return true;
+    }else{
+      return false;
+    }
+  }else{
+    std::map< Node, CDInstMatchTrie* >::iterator it = d_data.find( m[index] );
+    if( it!=d_data.end() ){
+      return it->second->removeInstMatch( qe, q, m, index+1 );
+    }else{
+      return false;
+    }
+  }
+}
+
+bool CDInstMatchTrie::recordInstLemma( Node q, std::vector< Node >& m, Node lem, int index ) {
+  if( index==(int)q[0].getNumChildren() ){
+    if( d_valid.get() ){
+      setInstLemma( lem );
+      return true;
+    }else{
+      return false;
+    }
+  }else{
+    std::map< Node, CDInstMatchTrie* >::iterator it = d_data.find( m[index] );
+    if( it!=d_data.end() ){
+      return it->second->recordInstLemma( q, m, lem, index+1 );
+    }else{
+      return false;
+    }
+  }
+}
+
+void CDInstMatchTrie::print( std::ostream& out, Node q, std::vector< TNode >& terms, bool& firstTime, bool useActive, std::vector< Node >& active ) const{
+  if( d_valid.get() ){
+    if( terms.size()==q[0].getNumChildren() ){
+      bool print;    
+      if( useActive ){
+        if( hasInstLemma() ){
+          Node lem = getInstLemma();
+          print = std::find( active.begin(), active.end(), lem )!=active.end();
+        }else{
+          print = false;
+        }
+      }else{
+        print = true;
+      }  
+      if( print ){ 
+        if( firstTime ){
+          out << "(instantiation " << q << std::endl;
+          firstTime = false;
+        }
+        out << "  ( ";
+        for( unsigned i=0; i<terms.size(); i++ ){
+          if( i>0 ) out << " ";
+          out << terms[i];
+        }
+        out << " )" << std::endl;
+      }
+    }else{
+      for( std::map< Node, CDInstMatchTrie* >::const_iterator it = d_data.begin(); it != d_data.end(); ++it ){
+        terms.push_back( it->first );
+        it->second->print( out, q, terms, firstTime, useActive, active );
+        terms.pop_back();
+      }
+    }
+  }
+}
+
+void CDInstMatchTrie::getInstantiations( std::vector< Node >& insts, Node q, std::vector< Node >& terms, QuantifiersEngine * qe, bool useActive, std::vector< Node >& active ) const{
+  if( d_valid.get() ){
+    if( terms.size()==q[0].getNumChildren() ){
+      if( useActive ){
+        if( hasInstLemma() ){
+          Node lem = getInstLemma();
+          if( std::find( active.begin(), active.end(), lem )!=active.end() ){
+            insts.push_back( lem );
+          }
+        }
+      }else{
+        if( hasInstLemma() ){
+          insts.push_back( getInstLemma() );
+        }else{
+          insts.push_back( qe->getInstantiation( q, terms, true ) );
+        }
+      }
+    }else{
+      for( std::map< Node, CDInstMatchTrie* >::const_iterator it = d_data.begin(); it != d_data.end(); ++it ){
+        terms.push_back( it->first );
+        it->second->getInstantiations( insts, q, terms, qe, useActive, active );
+        terms.pop_back();
+      }
+    }
+  }
+}
+
+
+void CDInstMatchTrie::getExplanationForInstLemmas( Node q, std::vector< Node >& terms, std::vector< Node >& lems, std::map< Node, Node >& quant, std::map< Node, std::vector< Node > >& tvec ) const {
+  if( d_valid.get() ){
+    if( terms.size()==q[0].getNumChildren() ){
+      if( hasInstLemma() ){
+        Node lem;
+        if( std::find( lems.begin(), lems.end(), lem )!=lems.end() ){
+          quant[lem] = q;
+          tvec[lem].clear();
+          tvec[lem].insert( tvec[lem].end(), terms.begin(), terms.end() );
+        }
+      }
+    }else{
+      for( std::map< Node, CDInstMatchTrie* >::const_iterator it = d_data.begin(); it != d_data.end(); ++it ){
+        terms.push_back( it->first );
+        it->second->getExplanationForInstLemmas( q, terms, lems, quant, tvec );
+        terms.pop_back();
+      }
+    }
+  }
+}
+
+}/* CVC4::theory::inst namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/quantifiers/inst_match.h b/src/theory/quantifiers/inst_match.h
new file mode 100644
index 0000000..6844692
--- /dev/null
+++ b/src/theory/quantifiers/inst_match.h
@@ -0,0 +1,244 @@
+/*********************                                                        */
+/*! \file inst_match.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief inst match class
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANTIFIERS__INST_MATCH_H
+#define __CVC4__THEORY__QUANTIFIERS__INST_MATCH_H
+
+#include "util/hash.h"
+#include "context/cdo.h"
+
+#include <ext/hash_set>
+#include <map>
+
+#include "context/cdlist.h"
+#include "expr/node.h"
+
+namespace CVC4 {
+namespace theory {
+
+class QuantifiersEngine;
+class EqualityQuery;
+
+namespace inst {
+
+/** basic class defining an instantiation */
+class InstMatch {
+public:
+  /* map from variable to ground terms */
+  std::vector< Node > d_vals;
+public:
+  InstMatch(){}
+  explicit InstMatch( TNode f );
+  InstMatch( InstMatch* m );
+
+  /** fill all unfilled values with m */
+  bool add( InstMatch& m );
+  /** if compatible, fill all unfilled values with m and return true
+      return false otherwise */
+  bool merge( EqualityQuery* q, InstMatch& m );
+  /** debug print method */
+  void debugPrint( const char* c );
+  /** is complete? */
+  bool isComplete();
+  /** make representative */
+  void makeRepresentative( QuantifiersEngine* qe );
+  /** empty */
+  bool empty();
+  /** clear */
+  void clear();
+  /** to stream */
+  inline void toStream(std::ostream& out) const {
+    out << "INST_MATCH( ";
+    bool printed = false;
+    for( unsigned i=0; i<d_vals.size(); i++ ){
+      if( !d_vals[i].isNull() ){
+        if( printed ){ out << ", "; }
+        out << i << " -> " << d_vals[i];
+        printed = true;
+      }
+    }
+    out << " )";
+  }
+  /** apply rewrite */
+  void applyRewrite();
+  /** get */
+  Node get( int i );
+  void getTerms( Node f, std::vector< Node >& inst );
+  /** set */
+  void setValue( int i, TNode n );
+  bool set( QuantifiersEngine* qe, int i, TNode n );
+  /* Node used for matching the trigger */
+  Node d_matched;
+};/* class InstMatch */
+
+inline std::ostream& operator<<(std::ostream& out, const InstMatch& m) {
+  m.toStream(out);
+  return out;
+}
+
+/** trie for InstMatch objects */
+class InstMatchTrie {
+public:
+  class ImtIndexOrder {
+  public:
+    std::vector< int > d_order;
+  };/* class InstMatchTrie ImtIndexOrder */
+  /** the data */
+  std::map< Node, InstMatchTrie > d_data;
+private:
+  void print( std::ostream& out, Node q, std::vector< TNode >& terms, bool& firstTime, bool useActive, std::vector< Node >& active ) const;
+  void getInstantiations( std::vector< Node >& insts, Node q, std::vector< Node >& terms, QuantifiersEngine * qe, bool useActive, std::vector< Node >& active ) const;
+  void getExplanationForInstLemmas( Node q, std::vector< Node >& terms, std::vector< Node >& lems, std::map< Node, Node >& quant, std::map< Node, std::vector< Node > >& tvec ) const;
+private:
+  void setInstLemma( Node n ){ 
+    d_data.clear();
+    d_data[n].clear(); 
+  }
+  bool hasInstLemma() const { return !d_data.empty(); }
+  Node getInstLemma() const { return d_data.begin()->first; }
+public:
+  InstMatchTrie(){}
+  ~InstMatchTrie(){}
+public:
+  /** return true if m exists in this trie
+        modEq is if we check modulo equality
+        modInst is if we return true if m is an instance of a match that exists
+   */
+  bool existsInstMatch( QuantifiersEngine* qe, Node f, InstMatch& m, bool modEq = false,
+                        ImtIndexOrder* imtio = NULL, int index = 0 ) {
+    return !addInstMatch( qe, f, m, modEq, imtio, true, index );
+  }
+  bool existsInstMatch( QuantifiersEngine* qe, Node f, std::vector< Node >& m, bool modEq = false,
+                        ImtIndexOrder* imtio = NULL, int index = 0 ) {
+    return !addInstMatch( qe, f, m, modEq, imtio, true, index );
+  }
+  /** add match m for quantifier f, take into account equalities if modEq = true,
+      if imtio is non-null, this is the order to add to trie
+      return true if successful
+  */
+  bool addInstMatch( QuantifiersEngine* qe, Node f, InstMatch& m, bool modEq = false,
+                     ImtIndexOrder* imtio = NULL, bool onlyExist = false, int index = 0 ){
+    return addInstMatch( qe, f, m.d_vals, modEq, imtio, onlyExist, index );
+  }
+  bool addInstMatch( QuantifiersEngine* qe, Node f, std::vector< Node >& m, bool modEq = false,
+                     ImtIndexOrder* imtio = NULL, bool onlyExist = false, int index = 0 );
+  bool removeInstMatch( QuantifiersEngine* qe, Node f, std::vector< Node >& m, ImtIndexOrder* imtio = NULL, int index = 0 );
+  bool recordInstLemma( Node q, std::vector< Node >& m, Node lem, ImtIndexOrder* imtio = NULL, int index = 0 );
+  void print( std::ostream& out, Node q, bool& firstTime, bool useActive, std::vector< Node >& active ) const{
+    std::vector< TNode > terms;
+    print( out, q, terms, firstTime, useActive, active );
+  }
+  void getInstantiations( std::vector< Node >& insts, Node q, QuantifiersEngine * qe, bool useActive, std::vector< Node >& active ) {
+    std::vector< Node > terms;
+    getInstantiations( insts, q, terms, qe, useActive, active );
+  }
+  void getExplanationForInstLemmas( Node q, std::vector< Node >& lems, std::map< Node, Node >& quant, std::map< Node, std::vector< Node > >& tvec ) const {
+    std::vector< Node > terms;
+    getExplanationForInstLemmas( q, terms, lems, quant, tvec );
+  }  
+  void clear() { d_data.clear(); }
+};/* class InstMatchTrie */
+
+/** trie for InstMatch objects */
+class CDInstMatchTrie {
+private:
+  /** the data */
+  std::map< Node, CDInstMatchTrie* > d_data;
+  /** is valid */
+  context::CDO< bool > d_valid;
+private:
+  void print( std::ostream& out, Node q, std::vector< TNode >& terms, bool& firstTime, bool useActive, std::vector< Node >& active ) const;
+  void getInstantiations( std::vector< Node >& insts, Node q, std::vector< Node >& terms, QuantifiersEngine * qe, bool useActive, std::vector< Node >& active ) const;
+  void getExplanationForInstLemmas( Node q, std::vector< Node >& terms, std::vector< Node >& lems, std::map< Node, Node >& quant, std::map< Node, std::vector< Node > >& tvec ) const;
+private:
+  void setInstLemma( Node n ){ 
+    d_data.clear();
+    d_data[n] = NULL; 
+  }
+  bool hasInstLemma() const { return !d_data.empty(); }
+  Node getInstLemma() const { return d_data.begin()->first; }
+public:
+  CDInstMatchTrie( context::Context* c ) : d_valid( c, false ){}
+  ~CDInstMatchTrie();
+
+  /** return true if m exists in this trie
+        modEq is if we check modulo equality
+        modInst is if we return true if m is an instance of a match that exists
+   */
+  bool existsInstMatch( QuantifiersEngine* qe, Node q, InstMatch& m, context::Context* c, bool modEq = false,
+                        int index = 0 ) {
+    return !addInstMatch( qe, q, m, c, modEq, index, true );
+  }
+  bool existsInstMatch( QuantifiersEngine* qe, Node q, std::vector< Node >& m, context::Context* c, bool modEq = false,
+                        int index = 0 ) {
+    return !addInstMatch( qe, q, m, c, modEq, index, true );
+  }
+  /** add match m for quantifier f, take into account equalities if modEq = true,
+      if imtio is non-null, this is the order to add to trie
+      return true if successful
+  */
+  bool addInstMatch( QuantifiersEngine* qe, Node q, InstMatch& m, context::Context* c, bool modEq = false,
+                     int index = 0, bool onlyExist = false ) {
+    return addInstMatch( qe, q, m.d_vals, c, modEq, index, onlyExist );
+  }
+  bool addInstMatch( QuantifiersEngine* qe, Node q, std::vector< Node >& m, context::Context* c, bool modEq = false,
+                     int index = 0, bool onlyExist = false );
+  bool removeInstMatch( QuantifiersEngine* qe, Node q, std::vector< Node >& m, int index = 0 );
+  bool recordInstLemma( Node q, std::vector< Node >& m, Node lem, int index = 0 );
+  void print( std::ostream& out, Node q, bool& firstTime, bool useActive, std::vector< Node >& active ) const{
+    std::vector< TNode > terms;
+    print( out, q, terms, firstTime, useActive, active );
+  }
+  void getInstantiations( std::vector< Node >& insts, Node q, QuantifiersEngine * qe, bool useActive, std::vector< Node >& active ) {
+    std::vector< Node > terms;
+    getInstantiations( insts, q, terms, qe, useActive, active );
+  }
+  void getExplanationForInstLemmas( Node q, std::vector< Node >& lems, std::map< Node, Node >& quant, std::map< Node, std::vector< Node > >& tvec ) const {
+    std::vector< Node > terms;
+    getExplanationForInstLemmas( q, terms, lems, quant, tvec );
+  }  
+};/* class CDInstMatchTrie */
+
+
+class InstMatchTrieOrdered{
+private:
+  InstMatchTrie::ImtIndexOrder* d_imtio;
+  InstMatchTrie d_imt;
+public:
+  InstMatchTrieOrdered( InstMatchTrie::ImtIndexOrder* imtio ) : d_imtio( imtio ){}
+  ~InstMatchTrieOrdered(){}
+  /** get ordering */
+  InstMatchTrie::ImtIndexOrder* getOrdering() { return d_imtio; }
+  /** get trie */
+  InstMatchTrie* getTrie() { return &d_imt; }
+public:
+  /** add match m, return true if successful */
+  bool addInstMatch( QuantifiersEngine* qe, Node f, InstMatch& m, bool modEq = false, bool modInst = false ){
+    return d_imt.addInstMatch( qe, f, m, modEq, d_imtio );
+  }
+  bool existsInstMatch( QuantifiersEngine* qe, Node f, InstMatch& m, bool modEq = false, bool modInst = false ){
+    return d_imt.existsInstMatch( qe, f, m, modEq, d_imtio );
+  }
+};/* class InstMatchTrieOrdered */
+
+}/* CVC4::theory::inst namespace */
+
+typedef CVC4::theory::inst::InstMatch InstMatch;
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__QUANTIFIERS__INST_MATCH_H */
diff --git a/src/theory/quantifiers/inst_match_generator.cpp b/src/theory/quantifiers/inst_match_generator.cpp
new file mode 100644
index 0000000..7cf9868
--- /dev/null
+++ b/src/theory/quantifiers/inst_match_generator.cpp
@@ -0,0 +1,825 @@
+/*********************                                                        */
+/*! \file inst_match_generator.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+#include "theory/quantifiers/inst_match_generator.h"
+
+#include "expr/datatype.h"
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/candidate_generator.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/trigger.h"
+#include "theory/quantifiers_engine.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+
+namespace CVC4 {
+namespace theory {
+namespace inst {
+
+InstMatchGenerator::InstMatchGenerator( Node pat ){
+  d_cg = NULL;
+  d_needsReset = true;
+  d_active_add = false;
+  Assert( quantifiers::TermDb::hasInstConstAttr(pat) );
+  d_pattern = pat;
+  d_match_pattern = pat;
+  d_match_pattern_type = pat.getType();
+  d_next = NULL;
+  d_matchPolicy = MATCH_GEN_DEFAULT;
+}
+
+InstMatchGenerator::InstMatchGenerator() {
+  d_cg = NULL;
+  d_needsReset = true;
+  d_active_add = false;
+  d_next = NULL;
+  d_matchPolicy = MATCH_GEN_DEFAULT;
+}
+
+InstMatchGenerator::~InstMatchGenerator() throw() {
+  for( unsigned i=0; i<d_children.size(); i++ ){
+    delete d_children[i];
+  }
+  delete d_cg;
+}
+
+void InstMatchGenerator::setActiveAdd(bool val){
+  d_active_add = val;
+  if( d_next!=NULL ){
+    d_next->setActiveAdd(val);
+  }
+}
+
+int InstMatchGenerator::getActiveScore( QuantifiersEngine * qe ) {
+  if( Trigger::isAtomicTrigger( d_match_pattern ) ){
+    Node f = qe->getTermDatabase()->getMatchOperator( d_match_pattern );
+    unsigned ngt = qe->getTermDatabase()->getNumGroundTerms( f );
+    Trace("trigger-active-sel-debug") << "Number of ground terms for " << f << " is " << ngt << std::endl;
+    return ngt;
+  }else if( d_match_pattern.getKind()==INST_CONSTANT ){
+    TypeNode tn = d_match_pattern.getType();
+    unsigned ngtt = qe->getTermDatabase()->getNumTypeGroundTerms( tn );
+    Trace("trigger-active-sel-debug") << "Number of ground terms for " << tn << " is " << ngtt << std::endl;
+    return ngtt;
+//  }else if( d_match_pattern_getKind()==EQUAL ){
+    
+  }else{
+    return -1;
+  }
+}
+
+void InstMatchGenerator::initialize( Node q, QuantifiersEngine* qe, std::vector< InstMatchGenerator * > & gens ){
+  if( !d_pattern.isNull() ){
+    Trace("inst-match-gen") << "Initialize, 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()==EQUAL || d_match_pattern.getKind()==GEQ ){
+      //make sure the matching portion of the equality is on the LHS of d_pattern
+      //  and record what d_match_pattern is
+      for( unsigned i=0; i<2; i++ ){
+        if( !quantifiers::TermDb::hasInstConstAttr(d_match_pattern[i]) || d_match_pattern[i].getKind()==INST_CONSTANT ){
+          Node mp = d_match_pattern[1-i];
+          Node mpo = d_match_pattern[i];
+          if( mp.getKind()!=INST_CONSTANT ){
+            if( i==0 ){
+              if( d_match_pattern.getKind()==GEQ ){
+                d_pattern = NodeManager::currentNM()->mkNode( kind::GT, mp, mpo );
+                d_pattern = d_pattern.negate();
+              }else{
+                d_pattern = NodeManager::currentNM()->mkNode( d_match_pattern.getKind(), mp, mpo );
+              }
+            }
+            d_eq_class_rel = mpo;
+            d_match_pattern = mp;
+          }
+          break;
+        }
+      }
+    }else if( d_match_pattern.getKind()==APPLY_SELECTOR_TOTAL && d_match_pattern[0].getKind()==INST_CONSTANT && options::purifyDtTriggers() ){
+      d_match_pattern = d_match_pattern[0];
+    }
+    d_match_pattern_type = d_match_pattern.getType();
+    Trace("inst-match-gen") << "Pattern is " << d_pattern << ", match pattern is " << d_match_pattern << std::endl;
+    d_match_pattern_op = qe->getTermDatabase()->getMatchOperator( d_match_pattern );
+
+    //now, collect children of d_match_pattern
+    for( unsigned i=0; i<d_match_pattern.getNumChildren(); i++ ){
+      Node qa = quantifiers::TermDb::getInstConstAttr(d_match_pattern[i]);
+      if( !qa.isNull() ){
+        InstMatchGenerator * cimg = Trigger::getInstMatchGenerator( q, d_match_pattern[i] );
+        if( cimg ){
+          d_children.push_back( cimg );
+          d_children_index.push_back( i );
+          gens.push_back( cimg );
+          d_children_types.push_back( 1 );
+        }else{
+          if( d_match_pattern[i].getKind()==INST_CONSTANT && qa==q ){
+            d_var_num[i] = d_match_pattern[i].getAttribute(InstVarNumAttribute());
+            d_children_types.push_back( 0 );
+          }else{
+            d_children_types.push_back( -1 );
+          }
+        }
+      }else{
+        d_children_types.push_back( -1 );
+      }
+    }
+    if( d_match_pattern.getKind()==INST_CONSTANT ){
+      d_var_num[0] = d_match_pattern.getAttribute(InstVarNumAttribute());
+    }
+
+    //create candidate generator
+    if( Trigger::isAtomicTrigger( d_match_pattern ) ){
+      //we will be scanning lists trying to find d_match_pattern.getOperator()
+      d_cg = new inst::CandidateGeneratorQE( qe, d_match_pattern );
+      //if matching on disequality, inform the candidate generator not to match on eqc
+      if( d_pattern.getKind()==NOT && d_pattern[0].getKind()==EQUAL ){
+        ((inst::CandidateGeneratorQE*)d_cg)->excludeEqc( d_eq_class_rel );
+        d_eq_class_rel = Node::null();
+      }
+    }else if( d_match_pattern.getKind()==INST_CONSTANT ){
+      if( d_pattern.getKind()==APPLY_SELECTOR_TOTAL ){
+        Expr selectorExpr = qe->getTermDatabase()->getMatchOperator( d_pattern ).toExpr();
+        size_t selectorIndex = Datatype::cindexOf(selectorExpr);
+        const Datatype& dt = Datatype::datatypeOf(selectorExpr);
+        const DatatypeConstructor& c = dt[selectorIndex];
+        Node cOp = Node::fromExpr(c.getConstructor());
+        Trace("inst-match-gen") << "Purify dt trigger " << d_pattern << ", will match terms of op " << cOp << std::endl;
+        d_cg = new inst::CandidateGeneratorQE( qe, cOp );
+      }else{
+        d_cg = new CandidateGeneratorQEAll( qe, d_match_pattern );
+      }
+    }else if( d_match_pattern.getKind()==EQUAL &&
+              d_match_pattern[0].getKind()==INST_CONSTANT && d_match_pattern[1].getKind()==INST_CONSTANT ){
+      //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{
+      d_cg = new CandidateGeneratorQueue( qe );
+      Trace("inst-match-gen-warn") << "(?) Unknown matching pattern is " << d_match_pattern << std::endl;
+      d_matchPolicy = MATCH_GEN_INTERNAL_ERROR;
+    }
+  }
+}
+
+/** get match (not modulo equality) */
+bool InstMatchGenerator::getMatch( Node f, Node t, InstMatch& m, QuantifiersEngine* qe ){
+  Trace("matching") << "Matching " << t << " against pattern " << d_match_pattern << " ("
+                    << m << ")" << ", " << d_children.size() << ", pattern is " << d_pattern << std::endl;
+  Assert( !d_match_pattern.isNull() );
+  if( d_matchPolicy==MATCH_GEN_INTERNAL_ERROR ){
+    Trace("matching-fail") << "Internal error for match generator." << std::endl;
+    return false;
+  }else{
+    EqualityQuery* q = qe->getEqualityQuery();
+    bool success = true;
+    //save previous match
+    //InstMatch prev( &m );
+    std::vector< int > prev;
+    //if t is null
+    Assert( !t.isNull() );
+    Assert( !quantifiers::TermDb::hasInstConstAttr(t) );
+    Assert( d_match_pattern.getKind()==INST_CONSTANT || t.getKind()==d_match_pattern.getKind() );
+    Assert( !Trigger::isAtomicTrigger( d_match_pattern ) || t.getOperator()==d_match_pattern.getOperator() );
+    //first, check if ground arguments are not equal, or a match is in conflict
+    Trace("matching-debug2") << "Setting immediate matches..." << std::endl;
+    for( unsigned i=0; i<d_match_pattern.getNumChildren(); i++ ){
+      if( d_children_types[i]==0 ){
+        Trace("matching-debug2") << "Setting " << d_var_num[i] << " to " << t[i] << "..." << std::endl;
+        bool addToPrev = m.get( d_var_num[i] ).isNull();
+        if( !m.set( qe, d_var_num[i], t[i] ) ){
+          //match is in conflict
+          Trace("matching-fail") << "Match fail: " << m.get(d_var_num[i]) << " and " << t[i] << std::endl;
+          success = false;
+          break;
+        }else if( addToPrev ){
+          Trace("matching-debug2") << "Success." << std::endl;
+          prev.push_back( d_var_num[i] );
+        }
+      }else if( d_children_types[i]==-1 ){
+        if( !q->areEqual( d_match_pattern[i], t[i] ) ){
+          Trace("matching-fail") << "Match fail arg: " << d_match_pattern[i] << " and " << t[i] << std::endl;
+          //ground arguments are not equal
+          success = false;
+          break;
+        }
+      }
+    }
+    Trace("matching-debug2") << "Done setting immediate matches, success = " << success << "." << std::endl;
+    //for variable matching
+    if( d_match_pattern.getKind()==INST_CONSTANT ){
+      bool addToPrev = m.get( d_var_num[0] ).isNull();
+      if( !m.set( qe, d_var_num[0], t ) ){
+        success = false;
+      }else{
+        if( addToPrev ){
+          prev.push_back( d_var_num[0] );
+        }
+      }
+    //for relational matching
+    }else if( !d_eq_class_rel.isNull() && d_eq_class_rel.getKind()==INST_CONSTANT ){
+      int v = d_eq_class_rel.getAttribute(InstVarNumAttribute());
+      //also must fit match to equivalence class
+      bool pol = d_pattern.getKind()!=NOT;
+      Node pat = d_pattern.getKind()==NOT ? d_pattern[0] : d_pattern;
+      Node t_match;
+      if( pol ){
+        if( pat.getKind()==GT ){
+          t_match = NodeManager::currentNM()->mkNode(MINUS, t, qe->getTermDatabase()->d_one);
+        }else{
+          t_match = t;
+        }
+      }else{
+        if( pat.getKind()==EQUAL ){
+          if( t.getType().isBoolean() ){
+            t_match = NodeManager::currentNM()->mkConst( !q->areEqual( qe->getTermDatabase()->d_true, t ) );
+          }else{
+            Assert( t.getType().isReal() );
+            t_match = NodeManager::currentNM()->mkNode(PLUS, t, qe->getTermDatabase()->d_one);
+          }
+        }else if( pat.getKind()==GEQ ){
+          t_match = NodeManager::currentNM()->mkNode(PLUS, t, qe->getTermDatabase()->d_one);
+        }else if( pat.getKind()==GT ){
+          t_match = t;
+        }
+      }
+      if( !t_match.isNull() ){
+        bool addToPrev = m.get( v ).isNull();
+        if( !m.set( qe, v, t_match ) ){
+          success = false;
+        }else if( addToPrev ){
+          prev.push_back( v );
+        }
+      }
+    }
+    if( success ){
+      Trace("matching-debug2") << "Reset children..." << std::endl;
+      //now, fit children into match
+      //we will be requesting candidates for matching terms for each child
+      for( unsigned i=0; i<d_children.size(); i++ ){
+        d_children[i]->reset( t[ d_children_index[i] ], qe );
+      }
+      Trace("matching-debug2") << "Continue next " << d_next << std::endl;
+      success = continueNextMatch( f, m, qe );
+    }
+    if( !success ){
+      //m = InstMatch( &prev );
+      for( unsigned i=0; i<prev.size(); i++ ){
+        m.d_vals[prev[i]] = Node::null();
+      }
+    }
+    return success;
+  }
+}
+
+bool InstMatchGenerator::continueNextMatch( Node f, InstMatch& m, QuantifiersEngine* qe ){
+  if( d_next!=NULL ){
+    return d_next->getNextMatch( f, m, qe );
+  }else{
+    if( d_active_add ){
+      return qe->addInstantiation( f, m );
+    }else{
+      return true;
+    }
+  }
+}
+
+/** reset instantiation round */
+void InstMatchGenerator::resetInstantiationRound( QuantifiersEngine* qe ){
+  if( !d_match_pattern.isNull() ){
+    Trace("matching-debug2") << this << " reset instantiation round." << std::endl;
+    d_needsReset = true;
+    if( d_cg ){
+      d_cg->resetInstantiationRound();
+    }
+  }
+  if( d_next ){
+    d_next->resetInstantiationRound( qe );
+  }
+}
+
+void InstMatchGenerator::reset( Node eqc, QuantifiersEngine* qe ){
+  eqc = qe->getEqualityQuery()->getRepresentative( eqc );
+  Trace("matching-debug2") << this << " reset " << eqc << "." << std::endl;
+  if( !d_eq_class_rel.isNull() && d_eq_class_rel.getKind()!=INST_CONSTANT ){
+    d_eq_class = d_eq_class_rel;
+  }else 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 );
+  d_needsReset = false;
+}
+
+bool InstMatchGenerator::getNextMatch( Node f, InstMatch& m, QuantifiersEngine* qe ){
+  if( d_needsReset ){
+    Trace("matching") << "Reset not done yet, must do the reset..." << std::endl;
+    reset( d_eq_class, qe );
+  }
+  m.d_matched = Node::null();
+  Trace("matching") << this << " " << d_match_pattern << " get next match " << 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();
+    Trace("matching-debug2") << "Matching candidate : " << t << std::endl;
+    //if t not null, try to fit it into match m
+    if( !t.isNull() ){
+      Assert( t.getType().isComparableTo( d_match_pattern_type ) );
+      success = getMatch( f, t, m, qe );
+    }
+  }while( !success && !t.isNull() );
+  m.d_matched = t;
+  if( !success ){
+    Trace("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 ){
+  //try to add instantiation for each match produced
+  int addedLemmas = 0;
+  InstMatch m( f );
+  while( getNextMatch( f, m, qe ) ){
+    if( !d_active_add ){
+      m.add( baseMatch );
+      if( qe->addInstantiation( f, m ) ){
+        addedLemmas++;
+        if( qe->inConflict() ){
+          break;
+        }
+      }
+    }else{
+      addedLemmas++;
+      if( qe->inConflict() ){
+        break;
+      }
+    }
+    m.clear();
+  }
+  //return number of lemmas added
+  return addedLemmas;
+}
+
+
+InstMatchGenerator* InstMatchGenerator::mkInstMatchGenerator( Node q, Node pat, QuantifiersEngine* qe ) {
+  std::vector< Node > pats;
+  pats.push_back( pat );
+  return mkInstMatchGenerator( q, pats, qe );
+}
+
+InstMatchGenerator* InstMatchGenerator::mkInstMatchGenerator( Node q, 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(q, qe, gens);
+      prev = curr;
+      counter++;
+    }
+    pCounter++;
+  }
+  return oinit;
+}
+
+VarMatchGeneratorBooleanTerm::VarMatchGeneratorBooleanTerm( Node var, Node comp ) :
+  InstMatchGenerator(), d_comp( comp ), d_rm_prev( false ) {
+  d_var_num[0] = var.getAttribute(InstVarNumAttribute());
+}
+
+bool VarMatchGeneratorBooleanTerm::getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe ) {
+  if( !d_eq_class.isNull() ){
+    Node s = NodeManager::currentNM()->mkConst(qe->getEqualityQuery()->areEqual( d_eq_class, d_pattern ));
+    d_eq_class = Node::null();
+    d_rm_prev = m.get( d_var_num[0] ).isNull();
+    if( !m.set( qe, d_var_num[0], s ) ){
+      return false;
+    }else{
+      if( continueNextMatch( q, m, qe ) ){
+        return true;
+      }
+    }
+  }
+  if( d_rm_prev ){
+    m.d_vals[d_var_num[0]] = Node::null();
+    d_rm_prev = false;
+  }
+  return false;
+}
+
+VarMatchGeneratorTermSubs::VarMatchGeneratorTermSubs( Node var, Node subs ) :
+  InstMatchGenerator(), d_var( var ), d_subs( subs ), d_rm_prev( false ){
+  d_var_num[0] = d_var.getAttribute(InstVarNumAttribute());
+  d_var_type = d_var.getType();
+}
+
+bool VarMatchGeneratorTermSubs::getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe ) {
+  if( !d_eq_class.isNull() ){
+    Trace("var-trigger-matching") << "Matching " << d_eq_class << " against " << d_var << " in " << d_subs << std::endl;
+    Node s = d_subs.substitute( d_var, d_eq_class );
+    s = Rewriter::rewrite( s );
+    Trace("var-trigger-matching") << "...got " << s << ", " << s.getKind() << std::endl;
+    d_eq_class = Node::null();
+    //if( s.getType().isSubtypeOf( d_var_type ) ){
+    d_rm_prev = m.get( d_var_num[0] ).isNull();
+    if( !m.set( qe, d_var_num[0], s ) ){
+      return false;
+    }else{
+      if( continueNextMatch( q, m, qe ) ){
+        return true;
+      }
+    }
+  }
+  if( d_rm_prev ){
+    m.d_vals[d_var_num[0]] = Node::null();
+    d_rm_prev = false;
+  }
+  return false;
+}
+
+/** constructors */
+InstMatchGeneratorMulti::InstMatchGeneratorMulti( Node q, std::vector< Node >& pats, QuantifiersEngine* qe ) :
+d_f( q ){
+  Debug("smart-multi-trigger") << "Making smart multi-trigger for " << q << std::endl;
+  std::map< Node, std::vector< Node > > var_contains;
+  qe->getTermDatabase()->getVarContains( q, pats, var_contains );
+  //convert to indicies
+  for( std::map< Node, std::vector< Node > >::iterator it = var_contains.begin(); it != var_contains.end(); ++it ){
+    Debug("smart-multi-trigger") << "Pattern " << it->first << " contains: ";
+    for( int i=0; i<(int)it->second.size(); i++ ){
+      Debug("smart-multi-trigger") << it->second[i] << " ";
+      int index = it->second[i].getAttribute(InstVarNumAttribute());
+      d_var_contains[ it->first ].push_back( index );
+      d_var_to_node[ index ].push_back( it->first );
+    }
+    Debug("smart-multi-trigger") << std::endl;
+  }
+  for( unsigned i=0; i<pats.size(); i++ ){
+    Node n = pats[i];
+    //make the match generator
+    d_children.push_back( InstMatchGenerator::mkInstMatchGenerator(q, n, qe ) );
+    //compute unique/shared variables
+    std::vector< int > unique_vars;
+    std::map< int, bool > shared_vars;
+    int numSharedVars = 0;
+    for( unsigned j=0; j<d_var_contains[n].size(); j++ ){
+      if( d_var_to_node[ d_var_contains[n][j] ].size()==1 ){
+        Debug("smart-multi-trigger") << "Var " << d_var_contains[n][j] << " is unique to " << pats[i] << std::endl;
+        unique_vars.push_back( d_var_contains[n][j] );
+      }else{
+        shared_vars[ d_var_contains[n][j] ] = true;
+        numSharedVars++;
+      }
+    }
+    //we use the latest shared variables, then unique variables
+    std::vector< int > vars;
+    unsigned index = i==0 ? pats.size()-1 : (i-1);
+    while( numSharedVars>0 && index!=i ){
+      for( std::map< int, bool >::iterator it = shared_vars.begin(); it != shared_vars.end(); ++it ){
+        if( it->second ){
+          if( std::find( d_var_contains[ pats[index] ].begin(), d_var_contains[ pats[index] ].end(), it->first )!=
+              d_var_contains[ pats[index] ].end() ){
+            vars.push_back( it->first );
+            shared_vars[ it->first ] = false;
+            numSharedVars--;
+          }
+        }
+      }
+      index = index==0 ? (int)(pats.size()-1) : (index-1);
+    }
+    vars.insert( vars.end(), unique_vars.begin(), unique_vars.end() );
+    Debug("smart-multi-trigger") << "   Index[" << i << "]: ";
+    for( unsigned j=0; j<vars.size(); j++ ){
+      Debug("smart-multi-trigger") << vars[j] << " ";
+    }
+    Debug("smart-multi-trigger") << std::endl;
+    //make ordered inst match trie
+    d_imtio[i] = new InstMatchTrie::ImtIndexOrder;
+    d_imtio[i]->d_order.insert( d_imtio[i]->d_order.begin(), vars.begin(), vars.end() );
+    d_children_trie.push_back( InstMatchTrieOrdered( d_imtio[i] ) );
+  }
+}
+
+InstMatchGeneratorMulti::~InstMatchGeneratorMulti() throw() {
+  for( unsigned i=0; i<d_children.size(); i++ ){
+    delete d_children[i];
+  }
+  for( std::map< unsigned, InstMatchTrie::ImtIndexOrder* >::iterator it = d_imtio.begin(); it != d_imtio.end(); ++it ){
+    delete it->second;
+  }
+}
+
+/** reset instantiation round (call this whenever equivalence classes have changed) */
+void InstMatchGeneratorMulti::resetInstantiationRound( QuantifiersEngine* qe ){
+  for( unsigned i=0; i<d_children.size(); i++ ){
+    d_children[i]->resetInstantiationRound( qe );
+  }
+}
+
+/** reset, eqc is the equivalence class to search in (any if eqc=null) */
+void InstMatchGeneratorMulti::reset( Node eqc, QuantifiersEngine* qe ){
+  for( unsigned i=0; i<d_children.size(); i++ ){
+    d_children[i]->reset( eqc, qe );
+  }
+}
+
+int InstMatchGeneratorMulti::addInstantiations( Node q, InstMatch& baseMatch, QuantifiersEngine* qe ){
+  int addedLemmas = 0;
+  Debug("smart-multi-trigger") << "Process smart multi trigger" << std::endl;
+  for( unsigned i=0; i<d_children.size(); i++ ){
+    Debug("smart-multi-trigger") << "Calculate matches " << i << std::endl;
+    std::vector< InstMatch > newMatches;
+    InstMatch m( q );
+    while( d_children[i]->getNextMatch( q, m, qe ) ){
+      //m.makeRepresentative( qe );
+      newMatches.push_back( InstMatch( &m ) );
+      m.clear();
+    }
+    Debug("smart-multi-trigger") << "Made " << newMatches.size() << " new matches for index " << i << std::endl;
+    for( unsigned j=0; j<newMatches.size(); j++ ){
+      processNewMatch( qe, newMatches[j], i, addedLemmas );
+      if( qe->inConflict() ){
+        return addedLemmas;
+      }
+    }
+  }
+  return addedLemmas;
+}
+
+void InstMatchGeneratorMulti::processNewMatch( QuantifiersEngine* qe, InstMatch& m, int fromChildIndex, int& addedLemmas ){
+  //see if these produce new matches
+  d_children_trie[fromChildIndex].addInstMatch( qe, d_f, m );
+  //possibly only do the following if we know that new matches will be produced?
+  //the issue is that instantiations are filtered in quantifiers engine, and so there is no guarentee that
+  // we can safely skip the following lines, even when we have already produced this match.
+  Debug("smart-multi-trigger") << "Child " << fromChildIndex << " produced match " << m << std::endl;
+  //process new instantiations
+  int childIndex = (fromChildIndex+1)%(int)d_children.size();
+  std::vector< IndexedTrie > unique_var_tries;
+  processNewInstantiations( qe, m, addedLemmas, d_children_trie[childIndex].getTrie(),
+                            unique_var_tries, 0, childIndex, fromChildIndex, true );
+}
+
+void InstMatchGeneratorMulti::processNewInstantiations( QuantifiersEngine* qe, InstMatch& m, int& addedLemmas, InstMatchTrie* tr,
+                                                        std::vector< IndexedTrie >& unique_var_tries,
+                                                        int trieIndex, int childIndex, int endChildIndex, bool modEq ){
+  Assert( !qe->inConflict() );
+  if( childIndex==endChildIndex ){
+    //now, process unique variables
+    processNewInstantiations2( qe, m, addedLemmas, unique_var_tries, 0 );
+  }else if( trieIndex<(int)d_children_trie[childIndex].getOrdering()->d_order.size() ){
+    int curr_index = d_children_trie[childIndex].getOrdering()->d_order[trieIndex];
+    //Node curr_ic = qe->getTermDatabase()->getInstantiationConstant( d_f, curr_index );
+    Node n = m.get( curr_index );
+    if( n.isNull() ){
+      //if( d_var_to_node[ curr_index ].size()==1 ){    //FIXME
+      //  //unique variable(s), defer calculation
+      //  unique_var_tries.push_back( IndexedTrie( std::pair< int, int >( childIndex, trieIndex ), tr ) );
+      //  int newChildIndex = (childIndex+1)%(int)d_children.size();
+      //  processNewInstantiations( qe, m, d_children_trie[newChildIndex].getTrie(), unique_var_tries,
+      //                            0, newChildIndex, endChildIndex, modEq );
+      //}else{
+        //shared and non-set variable, add to InstMatch
+        for( std::map< Node, InstMatchTrie >::iterator it = tr->d_data.begin(); it != tr->d_data.end(); ++it ){
+          InstMatch mn( &m );
+          mn.setValue( curr_index, it->first);
+          processNewInstantiations( qe, mn, addedLemmas, &(it->second), unique_var_tries,
+                                    trieIndex+1, childIndex, endChildIndex, modEq );
+          if( qe->inConflict() ){
+            break;
+          }
+        }
+      //}
+    }else{
+      //shared and set variable, try to merge
+      std::map< Node, InstMatchTrie >::iterator it = tr->d_data.find( n );
+      if( it!=tr->d_data.end() ){
+        processNewInstantiations( qe, m, addedLemmas, &(it->second), unique_var_tries,
+                                  trieIndex+1, childIndex, endChildIndex, modEq );
+      }
+      if( modEq ){
+        //check modulo equality for other possible instantiations
+        if( qe->getEqualityQuery()->getEngine()->hasTerm( n ) ){
+          eq::EqClassIterator eqc( qe->getEqualityQuery()->getEngine()->getRepresentative( n ),
+                                   qe->getEqualityQuery()->getEngine() );
+          while( !eqc.isFinished() ){
+            Node en = (*eqc);
+            if( en!=n ){
+              std::map< Node, InstMatchTrie >::iterator itc = tr->d_data.find( en );
+              if( itc!=tr->d_data.end() ){
+                processNewInstantiations( qe, m, addedLemmas, &(itc->second), unique_var_tries,
+                                          trieIndex+1, childIndex, endChildIndex, modEq );
+                if( qe->inConflict() ){
+                  break;
+                }
+              }
+            }
+            ++eqc;
+          }
+        }
+      }
+    }
+  }else{
+    int newChildIndex = (childIndex+1)%(int)d_children.size();
+    processNewInstantiations( qe, m, addedLemmas, d_children_trie[newChildIndex].getTrie(), unique_var_tries,
+                              0, newChildIndex, endChildIndex, modEq );
+  }
+}
+
+void InstMatchGeneratorMulti::processNewInstantiations2( QuantifiersEngine* qe, InstMatch& m, int& addedLemmas,
+                                                         std::vector< IndexedTrie >& unique_var_tries,
+                                                         int uvtIndex, InstMatchTrie* tr, int trieIndex ){
+  if( uvtIndex<(int)unique_var_tries.size() ){
+    int childIndex = unique_var_tries[uvtIndex].first.first;
+    if( !tr ){
+      tr = unique_var_tries[uvtIndex].second;
+      trieIndex = unique_var_tries[uvtIndex].first.second;
+    }
+    if( trieIndex<(int)d_children_trie[childIndex].getOrdering()->d_order.size() ){
+      int curr_index = d_children_trie[childIndex].getOrdering()->d_order[trieIndex];
+      //Node curr_ic = qe->getTermDatabase()->getInstantiationConstant( d_f, curr_index );
+      //unique non-set variable, add to InstMatch
+      for( std::map< Node, InstMatchTrie >::iterator it = tr->d_data.begin(); it != tr->d_data.end(); ++it ){
+        InstMatch mn( &m );
+        mn.setValue( curr_index, it->first);
+        processNewInstantiations2( qe, mn, addedLemmas, unique_var_tries, uvtIndex, &(it->second), trieIndex+1 );
+        if( qe->inConflict() ){
+          break;
+        }
+      }
+    }else{
+      processNewInstantiations2( qe, m, addedLemmas, unique_var_tries, uvtIndex+1 );
+    }
+  }else{
+    //m is an instantiation
+    if( qe->addInstantiation( d_f, m ) ){
+      addedLemmas++;
+      Debug("smart-multi-trigger") << "-> Produced instantiation " << m << std::endl;
+    }
+  }
+}
+
+InstMatchGeneratorSimple::InstMatchGeneratorSimple( Node q, Node pat, QuantifiersEngine* qe ) : d_f( q ), d_match_pattern( pat ) {
+  if( d_match_pattern.getKind()==NOT ){
+    d_match_pattern = d_match_pattern[0];
+    d_pol = false;
+  }else{
+    d_pol = true;
+  }
+  if( d_match_pattern.getKind()==EQUAL ){
+    d_eqc = d_match_pattern[1];
+    d_match_pattern = d_match_pattern[0];
+    Assert( !quantifiers::TermDb::hasInstConstAttr( d_eqc ) );
+  }
+  Assert( Trigger::isSimpleTrigger( d_match_pattern ) );
+  for( unsigned i=0; i<d_match_pattern.getNumChildren(); i++ ){
+    if( d_match_pattern[i].getKind()==INST_CONSTANT ){
+      if( !options::cbqi() || quantifiers::TermDb::getInstConstAttr(d_match_pattern[i])==q ){
+        d_var_num[i] = d_match_pattern[i].getAttribute(InstVarNumAttribute());
+      }else{
+        d_var_num[i] = -1;
+      }
+    }
+    d_match_pattern_arg_types.push_back( d_match_pattern[i].getType() );
+  }
+  d_op = qe->getTermDatabase()->getMatchOperator( d_match_pattern );
+}
+
+void InstMatchGeneratorSimple::resetInstantiationRound( QuantifiersEngine* qe ) {
+  
+}
+
+int InstMatchGeneratorSimple::addInstantiations( Node q, InstMatch& baseMatch, QuantifiersEngine* qe ){
+  int addedLemmas = 0;
+  quantifiers::TermArgTrie* tat;
+  if( d_eqc.isNull() ){
+    tat = qe->getTermDatabase()->getTermArgTrie( d_op );
+  }else{
+    if( d_pol ){
+      tat = qe->getTermDatabase()->getTermArgTrie( d_eqc, d_op );
+    }else{
+      Node r = qe->getEqualityQuery()->getRepresentative( d_eqc );
+      //iterate over all classes except r
+      tat = qe->getTermDatabase()->getTermArgTrie( Node::null(), d_op );
+      if( tat ){
+        for( std::map< TNode, quantifiers::TermArgTrie >::iterator it = tat->d_data.begin(); it != tat->d_data.end(); ++it ){
+          if( it->first!=r ){
+            InstMatch m( q );
+            m.add( baseMatch );
+            addInstantiations( m, qe, addedLemmas, 0, &(it->second) );
+            if( qe->inConflict() ){
+              break;
+            }
+          }
+        }
+        tat = NULL;
+      }
+    }
+  }
+  Debug("simple-trigger-debug") << "Adding instantiations based on " << tat << " from " << d_op << " " << d_eqc << std::endl;
+  if( tat ){
+    InstMatch m( q );
+    m.add( baseMatch );
+    addInstantiations( m, qe, addedLemmas, 0, tat );
+  }
+  return addedLemmas;
+}
+
+void InstMatchGeneratorSimple::addInstantiations( InstMatch& m, QuantifiersEngine* qe, int& addedLemmas, int argIndex, quantifiers::TermArgTrie* tat ){
+  Debug("simple-trigger-debug") << "Add inst " << argIndex << " " << d_match_pattern << std::endl;
+  if( argIndex==(int)d_match_pattern.getNumChildren() ){
+    Assert( !tat->d_data.empty() );
+    TNode t = tat->getNodeData();
+    Debug("simple-trigger") << "Actual term is " << t << std::endl;
+    //convert to actual used terms
+    for( std::map< int, int >::iterator it = d_var_num.begin(); it != d_var_num.end(); ++it ){
+      Debug("simple-trigger") << "...set " << it->second << " " << t[it->first] << std::endl;
+      m.setValue( it->second, t[it->first] );
+    }
+    if( qe->addInstantiation( d_f, m ) ){
+      addedLemmas++;
+      Debug("simple-trigger") << "-> Produced instantiation " << m << std::endl;
+    }
+  }else{
+    if( d_match_pattern[argIndex].getKind()==INST_CONSTANT ){
+      int v = d_var_num[argIndex];
+      if( v!=-1 ){
+        for( std::map< TNode, quantifiers::TermArgTrie >::iterator it = tat->d_data.begin(); it != tat->d_data.end(); ++it ){
+          Node t = it->first;
+          Node prev = m.get( v );
+          //using representatives, just check if equal
+          Assert( t.getType().isComparableTo( d_match_pattern_arg_types[argIndex] ) );
+          if( prev.isNull() || prev==t ){
+            m.setValue( v, t);
+            addInstantiations( m, qe, addedLemmas, argIndex+1, &(it->second) );
+            m.setValue( v, prev);
+            if( qe->inConflict() ){
+              break;
+            }
+          }
+        }
+        return;
+      }
+      //inst constant from another quantified formula, treat as ground term  TODO: remove this?
+    }
+    Node r = qe->getEqualityQuery()->getRepresentative( d_match_pattern[argIndex] );
+    std::map< TNode, quantifiers::TermArgTrie >::iterator it = tat->d_data.find( r );
+    if( it!=tat->d_data.end() ){
+      addInstantiations( m, qe, addedLemmas, argIndex+1, &(it->second) );
+    }
+  }
+}
+
+int InstMatchGeneratorSimple::getActiveScore( QuantifiersEngine * qe ) {
+  Node f = qe->getTermDatabase()->getMatchOperator( d_match_pattern );
+  unsigned ngt = qe->getTermDatabase()->getNumGroundTerms( f );
+  Trace("trigger-active-sel-debug") << "Number of ground terms for (simple) " << f << " is " << ngt << std::endl;
+  return ngt;   
+}
+
+
+}/* CVC4::theory::inst namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/quantifiers/inst_match_generator.h b/src/theory/quantifiers/inst_match_generator.h
new file mode 100644
index 0000000..c238e3c
--- /dev/null
+++ b/src/theory/quantifiers/inst_match_generator.h
@@ -0,0 +1,245 @@
+/*********************                                                        */
+/*! \file inst_match_generator.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Clark Barrett
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief inst match generator class
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANTIFIERS__INST_MATCH_GENERATOR_H
+#define __CVC4__THEORY__QUANTIFIERS__INST_MATCH_GENERATOR_H
+
+#include "theory/quantifiers/inst_match.h"
+#include <map>
+
+namespace CVC4 {
+namespace theory {
+
+class QuantifiersEngine;
+namespace quantifiers{
+  class TermArgTrie;
+}
+
+namespace inst {
+
+/** base class for producing InstMatch objects */
+class IMGenerator {
+public:
+  virtual ~IMGenerator() {}
+  /** reset instantiation round (call this at beginning of instantiation round) */
+  virtual void resetInstantiationRound( QuantifiersEngine* qe ) = 0;
+  /** 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( Node q, InstMatch& m, QuantifiersEngine* qe ) = 0;
+  /** add instantiations directly */
+  virtual int addInstantiations( Node q, InstMatch& baseMatch, QuantifiersEngine* qe ) = 0;
+  /** set active add */
+  virtual void setActiveAdd( bool val ) {}
+  /** get active score */
+  virtual int getActiveScore( QuantifiersEngine * qe ) { return 0; }
+};/* class IMGenerator */
+
+class CandidateGenerator;
+
+class InstMatchGenerator : public IMGenerator {
+protected:
+  bool d_needsReset;
+  /** candidate generator */
+  CandidateGenerator* d_cg;
+  /** policy to use for matching */
+  int d_matchPolicy;
+  /** children generators */
+  std::vector< InstMatchGenerator* > d_children;
+  std::vector< int > d_children_index;
+  /** the next generator in order */
+  InstMatchGenerator* d_next;
+  /** eq class */
+  Node d_eq_class;
+  Node d_eq_class_rel;
+  /** variable numbers */
+  std::map< int, int > d_var_num;
+  /** initialize pattern */
+  void initialize( Node q, QuantifiersEngine* qe, std::vector< InstMatchGenerator * > & gens );
+  /** children types 0 : variable, 1 : child term, -1 : ground term */
+  std::vector< int > d_children_types;
+  /** continue */
+  bool continueNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe );
+public:
+  enum {
+    //options for producing matches
+    MATCH_GEN_DEFAULT = 0,
+    //others (internally used)
+    MATCH_GEN_INTERNAL_ERROR,
+  };
+public:
+  /** get the match against ground term or formula t.
+      d_match_pattern and t should have the same shape.
+      only valid for use where !d_match_pattern.isNull().
+  */
+  bool getMatch( Node q, Node t, InstMatch& m, QuantifiersEngine* qe );
+
+  /** constructors */
+  InstMatchGenerator( Node pat );
+  InstMatchGenerator();
+  /** destructor */
+  virtual ~InstMatchGenerator() throw();
+  /** The pattern we are producing matches for.
+      If null, this is a multi trigger that is merging matches from d_children.
+  */
+  Node d_pattern;
+  /** match pattern */
+  Node d_match_pattern;
+  /** match pattern type */
+  TypeNode d_match_pattern_type;
+  /** match pattern op */
+  Node d_match_pattern_op;
+public:
+  /** reset instantiation round (call this whenever equivalence classes have changed) */
+  void resetInstantiationRound( QuantifiersEngine* qe );
+  /** 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( Node q, InstMatch& m, QuantifiersEngine* qe );
+  /** add instantiations */
+  int addInstantiations( Node q, InstMatch& baseMatch, QuantifiersEngine* qe );
+
+  bool d_active_add;
+  void setActiveAdd( bool val );
+  int getActiveScore( QuantifiersEngine * qe );
+
+  static InstMatchGenerator* mkInstMatchGenerator( Node q, Node pat, QuantifiersEngine* qe );
+  static InstMatchGenerator* mkInstMatchGenerator( Node q, std::vector< Node >& pats, QuantifiersEngine* qe );
+};/* class InstMatchGenerator */
+
+//match generator for boolean term ITEs
+class VarMatchGeneratorBooleanTerm : public InstMatchGenerator {
+public:
+  VarMatchGeneratorBooleanTerm( Node var, Node comp );
+  virtual ~VarMatchGeneratorBooleanTerm() throw() {}
+  Node d_comp;
+  bool d_rm_prev;
+  /** reset instantiation round (call this at beginning of instantiation round) */
+  void resetInstantiationRound( QuantifiersEngine* qe ){}
+  /** reset, eqc is the equivalence class to search in (any if eqc=null) */
+  void reset( Node eqc, QuantifiersEngine* qe ){ d_eq_class = eqc; }
+  /** get the next match.  must call reset( eqc ) before this function. */
+  bool getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe );
+  /** add instantiations directly */
+  int addInstantiations( Node q, InstMatch& baseMatch, QuantifiersEngine* qe ){ return 0; }
+};
+
+//match generator for purified terms (matched term is substituted into d_subs)
+class VarMatchGeneratorTermSubs : public InstMatchGenerator {
+public:
+  VarMatchGeneratorTermSubs( Node var, Node subs );
+  virtual ~VarMatchGeneratorTermSubs() throw() {}
+  TNode d_var;
+  TypeNode d_var_type;
+  Node d_subs;
+  bool d_rm_prev;
+  /** reset instantiation round (call this at beginning of instantiation round) */
+  void resetInstantiationRound( QuantifiersEngine* qe ){}
+  /** reset, eqc is the equivalence class to search in (any if eqc=null) */
+  void reset( Node eqc, QuantifiersEngine* qe ){ d_eq_class = eqc; }
+  /** get the next match.  must call reset( eqc ) before this function. */
+  bool getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe );
+  /** add instantiations directly */
+  int addInstantiations( Node q, InstMatch& baseMatch, QuantifiersEngine* qe ) { return 0; }
+};
+
+/** smart multi-trigger implementation */
+class InstMatchGeneratorMulti : public IMGenerator {
+private:
+  /** indexed trie */
+  typedef std::pair< std::pair< int, int >, InstMatchTrie* > IndexedTrie;
+  /** process new match */
+  void processNewMatch( QuantifiersEngine* qe, InstMatch& m, int fromChildIndex, int& addedLemmas );
+  /** process new instantiations */
+  void processNewInstantiations( QuantifiersEngine* qe, InstMatch& m, int& addedLemmas, InstMatchTrie* tr,
+                                 std::vector< IndexedTrie >& unique_var_tries,
+                                 int trieIndex, int childIndex, int endChildIndex, bool modEq );
+  /** process new instantiations 2 */
+  void processNewInstantiations2( QuantifiersEngine* qe, InstMatch& m, int& addedLemmas,
+                                  std::vector< IndexedTrie >& unique_var_tries,
+                                  int uvtIndex, InstMatchTrie* tr = NULL, int trieIndex = 0 );
+private:
+  /** var contains (variable indices) for each pattern node */
+  std::map< Node, std::vector< int > > d_var_contains;
+  /** variable indices contained to pattern nodes */
+  std::map< int, std::vector< Node > > d_var_to_node;
+  /** quantifier to use */
+  Node d_f;
+  /** policy to use for matching */
+  int d_matchPolicy;
+  /** children generators */
+  std::vector< InstMatchGenerator* > d_children;
+  /** order */
+  std::map< unsigned, InstMatchTrie::ImtIndexOrder* > d_imtio;
+  /** inst match tries for each child */
+  std::vector< InstMatchTrieOrdered > d_children_trie;
+  /** calculate matches */
+  void calculateMatches( QuantifiersEngine* qe );
+public:
+  /** constructors */
+  InstMatchGeneratorMulti( Node q, std::vector< Node >& pats, QuantifiersEngine* qe );
+  /** destructor */
+  virtual ~InstMatchGeneratorMulti() throw();
+  /** reset instantiation round (call this whenever equivalence classes have changed) */
+  void resetInstantiationRound( QuantifiersEngine* qe );
+  /** 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( Node q, InstMatch& m, QuantifiersEngine* qe ) { return false; }
+  /** add instantiations */
+  int addInstantiations( Node q, InstMatch& baseMatch, QuantifiersEngine* qe );
+};/* class InstMatchGeneratorMulti */
+
+/** smart (single)-trigger implementation */
+class InstMatchGeneratorSimple : public IMGenerator {
+private:
+  /** quantifier for match term */
+  Node d_f;
+  /** match term */
+  Node d_match_pattern;
+  /** equivalence class */
+  bool d_pol;
+  Node d_eqc;
+  /** match pattern arg types */
+  std::vector< TypeNode > d_match_pattern_arg_types;
+  /** operator */
+  Node d_op;
+  /** to indicies */
+  std::map< int, int > d_var_num;
+  /** add instantiations */
+  void addInstantiations( InstMatch& m, QuantifiersEngine* qe, int& addedLemmas, int argIndex, quantifiers::TermArgTrie* tat );
+public:
+  /** constructors */
+  InstMatchGeneratorSimple( Node q, Node pat, QuantifiersEngine* qe );
+  /** destructor */
+  ~InstMatchGeneratorSimple() throw() {}
+  /** reset instantiation round (call this whenever equivalence classes have changed) */
+  void resetInstantiationRound( QuantifiersEngine* qe );
+  /** 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( Node q, InstMatch& m, QuantifiersEngine* qe ) { return false; }
+  /** add instantiations */
+  int addInstantiations( Node q, InstMatch& baseMatch, QuantifiersEngine* qe );
+  /** get active score */
+  int getActiveScore( QuantifiersEngine * qe );
+};/* class InstMatchGeneratorSimple */
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/inst_propagator.cpp b/src/theory/quantifiers/inst_propagator.cpp
new file mode 100644
index 0000000..4109955
--- /dev/null
+++ b/src/theory/quantifiers/inst_propagator.cpp
@@ -0,0 +1,852 @@
+/*********************                                                        */
+/*! \file inst_propagator.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** Propagate mechanism for instantiations
+ **/
+
+#include <vector>
+
+#include "theory/quantifiers/inst_propagator.h"
+#include "theory/rewriter.h"
+#include "theory/quantifiers/term_database.h"
+
+using namespace CVC4;
+using namespace std;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+using namespace CVC4::kind;
+
+
+EqualityQueryInstProp::EqualityQueryInstProp( QuantifiersEngine* qe ) : d_qe( qe ){
+  d_true = NodeManager::currentNM()->mkConst( true );
+  d_false = NodeManager::currentNM()->mkConst( false );
+}
+
+bool EqualityQueryInstProp::reset( Theory::Effort e ) {
+  d_uf.clear();
+  d_uf_exp.clear();
+  d_diseq_list.clear();
+  d_uf_func_map_trie.clear();
+  return true;
+}
+
+/** contains term */
+bool EqualityQueryInstProp::hasTerm( Node a ) {
+  if( getEngine()->hasTerm( a ) ){
+    return true;
+  }else{
+    std::vector< Node > exp;
+    Node ar = getUfRepresentative( a, exp );
+    return !ar.isNull() && getEngine()->hasTerm( ar );
+  }
+}
+
+/** get the representative of the equivalence class of a */
+Node EqualityQueryInstProp::getRepresentative( Node a ) {
+  if( getEngine()->hasTerm( a ) ){
+    a = getEngine()->getRepresentative( a );
+  }
+  std::vector< Node > exp;
+  Node ar = getUfRepresentative( a, exp );
+  return ar.isNull() ? a : ar;
+}
+
+/** returns true if a and b are equal in the current context */
+bool EqualityQueryInstProp::areEqual( Node a, Node b ) {
+  if( a==b ){
+    return true;
+  }else{
+    eq::EqualityEngine* ee = getEngine();
+    if( ee->hasTerm( a ) && ee->hasTerm( b ) ){
+      if( ee->areEqual( a, b ) ){
+        return true;
+      }
+    }
+    return false;
+  }
+}
+
+/** returns true is a and b are disequal in the current context */
+bool EqualityQueryInstProp::areDisequal( Node a, Node b ) {
+  if( a==b ){
+    return false;
+  }else{
+    eq::EqualityEngine* ee = getEngine();
+    if( ee->hasTerm( a ) && ee->hasTerm( b ) ){
+      if( ee->areDisequal( a, b, false ) ){
+        return true;
+      }
+    }
+    return false;
+  }
+}
+
+/** get the equality engine associated with this query */
+eq::EqualityEngine* EqualityQueryInstProp::getEngine() {
+  return d_qe->getMasterEqualityEngine();
+}
+
+/** get the equivalence class of a */
+void EqualityQueryInstProp::getEquivalenceClass( Node a, std::vector< Node >& eqc ) {
+  //TODO?
+}
+
+TNode EqualityQueryInstProp::getCongruentTerm( Node f, std::vector< TNode >& args ) {
+  TNode t = d_qe->getTermDatabase()->getCongruentTerm( f, args );
+  if( !t.isNull() ){
+    return t;
+  }else{
+    return d_uf_func_map_trie[f].existsTerm( args );
+  }
+}
+
+Node EqualityQueryInstProp::getRepresentativeExp( Node a, std::vector< Node >& exp ) {
+  bool engine_has_a = getEngine()->hasTerm( a );
+  if( engine_has_a ){
+    a = getEngine()->getRepresentative( a );
+  }
+  //get union find representative, if this occurs in the equality engine, return it
+  unsigned prev_size = exp.size();
+  Node ar = getUfRepresentative( a, exp );
+  if( !ar.isNull() ){
+    if( engine_has_a || getEngine()->hasTerm( ar ) ){
+      Trace("qip-eq") << "getRepresentativeExp " << a << " returns " << ar << std::endl;
+      Assert( getEngine()->hasTerm( ar ) );
+      Assert( getEngine()->getRepresentative( ar )==ar );
+      return ar;
+    }
+  }else{
+    if( engine_has_a ){
+      return a;
+    }
+  }
+  //retract explanation
+  while( exp.size()>prev_size ){
+    exp.pop_back();
+  }
+  return Node::null();
+}
+
+bool EqualityQueryInstProp::areEqualExp( Node a, Node b, std::vector< Node >& exp ) {
+  if( areEqual( a, b ) ){
+    return true;
+  }else{
+    std::vector< Node > exp_a;
+    Node ar = getUfRepresentative( a, exp_a );
+    if( !ar.isNull() ){
+      std::vector< Node > exp_b;
+      if( ar==getUfRepresentative( b, exp_b ) ){
+        merge_exp( exp, exp_a );
+        merge_exp( exp, exp_b );
+        return true;
+      }
+    }
+    return false;
+  }
+}
+
+bool EqualityQueryInstProp::areDisequalExp( Node a, Node b, std::vector< Node >& exp ) {
+  if( areDisequal( a, b ) ){
+    return true;
+  }else{
+    //Assert( getRepresentative( a )==a );
+    //Assert( getRepresentative( b )==b );
+    std::map< Node, std::vector< Node > >::iterator itd = d_diseq_list[a].find( b );
+    if( itd!=d_diseq_list[a].end() ){
+      exp.insert( exp.end(), itd->second.begin(), itd->second.end() );
+      return true;
+    }else{
+      return false;
+    }
+  }
+}
+
+TNode EqualityQueryInstProp::getCongruentTermExp( Node f, std::vector< TNode >& args, std::vector< Node >& exp ) {
+  TNode t = d_qe->getTermDatabase()->getCongruentTerm( f, args );
+  if( !t.isNull() ){
+    return t;
+  }else{
+    TNode tt = d_uf_func_map_trie[f].existsTerm( args );
+    if( !tt.isNull() ){
+      //TODO?
+      return tt;
+    }else{
+      return tt;
+    }
+  }
+}
+
+Node EqualityQueryInstProp::getUfRepresentative( Node a, std::vector< Node >& exp ) {
+  Assert( exp.empty() );
+  std::map< Node, Node >::iterator it = d_uf.find( a );
+  if( it!=d_uf.end() ){
+    if( it->second==a ){
+      Assert( d_uf_exp[ a ].empty() );
+      return it->second;
+    }else{
+      Node m = getUfRepresentative( it->second, exp );
+      Assert( !m.isNull() );
+      if( m!=it->second ){
+        //update union find
+        d_uf[ a ] = m;
+        //update explanation : merge the explanation of the parent
+        merge_exp( d_uf_exp[ a ], exp );
+        Trace("qip-eq") << "EqualityQueryInstProp::getUfRepresentative : merge " << a << " -> " << m << ", exp size=" << d_uf_exp[ a ].size() << std::endl;
+      }
+      //add current explanation to exp: note that exp is a subset of d_uf_exp[ a ], reset
+      exp.clear();
+      exp.insert( exp.end(), d_uf_exp[ a ].begin(), d_uf_exp[ a ].end() );
+      return m;
+    }
+  }else{
+    return Node::null();
+  }
+}
+
+// set a == b with reason, return status, modify a and b to representatives pre-merge
+int EqualityQueryInstProp::setEqual( Node& a, Node& b, bool pol, std::vector< Node >& reason ) {
+  if( a==b ){
+    return pol ? STATUS_NONE : STATUS_CONFLICT;
+  }
+  int status = pol ? STATUS_MERGED_UNKNOWN : STATUS_NONE;
+  Trace("qip-eq") << "EqualityQueryInstProp::setEqual " << a << ", " << b << ", pol = " << pol << ", reason size = " << reason.size() << std::endl;
+  //get the representative for a
+  std::vector< Node > exp_a;
+  Node ar = getUfRepresentative( a, exp_a );
+  if( ar.isNull() ){
+    Assert( exp_a.empty() );
+    ar = a;
+  }
+  if( ar==b ){
+    Trace("qip-eq") << "EqualityQueryInstProp::setEqual : already equal" << std::endl;
+    if( pol ){
+      return STATUS_NONE;
+    }else{
+      merge_exp( reason, exp_a );
+      return STATUS_CONFLICT;
+    }
+  }
+  bool swap = false;
+  //get the representative for b
+  std::vector< Node > exp_b;
+  Node br = getUfRepresentative( b, exp_b );
+  if( br.isNull() ){
+    Assert( exp_b.empty() );
+    br = b;
+    if( !getEngine()->hasTerm( br ) ){
+      if( ar!=a || getEngine()->hasTerm( ar ) ){
+        swap = true;
+      }
+    }else{
+      if( getEngine()->hasTerm( ar ) ){
+        status = STATUS_MERGED_KNOWN;
+      }
+    }
+  }else{
+    if( ar==br ){
+      Trace("qip-eq") << "EqualityQueryInstProp::setEqual : already equal" << std::endl;
+      if( pol ){
+        return STATUS_NONE;
+      }else{
+        merge_exp( reason, exp_a );
+        merge_exp( reason, exp_b );
+        return STATUS_CONFLICT;
+      }
+    }else if( getEngine()->hasTerm( ar ) ){
+      if( getEngine()->hasTerm( br ) ){
+        status = STATUS_MERGED_KNOWN;
+      }else{
+        swap = true;
+      }
+    }
+  }
+
+  if( swap ){
+    //swap
+    Node temp_r = ar;
+    ar = br;
+    br = temp_r;
+  }
+
+  Assert( !getEngine()->hasTerm( ar ) || getEngine()->hasTerm( br ) );
+  Assert( ar!=br );
+
+  std::vector< Node > exp_d;
+  if( areDisequalExp( ar, br, exp_d ) ){
+    if( pol ){
+      merge_exp( reason, exp_b );
+      merge_exp( reason, exp_b );
+      merge_exp( reason, exp_d );
+      return STATUS_CONFLICT;
+    }else{
+      return STATUS_NONE;
+    }
+  }else{
+    if( pol ){
+      //update the union find
+      Assert( d_uf_exp[ar].empty() );
+      Assert( d_uf_exp[br].empty() );
+
+      //registerUfTerm( ar );
+      d_uf[ar] = br;
+      merge_exp( d_uf_exp[ar], exp_a );
+      merge_exp( d_uf_exp[ar], exp_b );
+      merge_exp( d_uf_exp[ar], reason );
+
+      //registerUfTerm( br );
+      d_uf[br] = br;
+      d_uf_exp[br].clear();
+
+      Trace("qip-eq") << "EqualityQueryInstProp::setEqual : merge " << ar << " -> " << br << ", exp size = " << d_uf_exp[ar].size() << ", status = " << status << std::endl;
+      a = ar;
+      b = br;
+
+      //carry disequality list
+      std::map< Node, std::map< Node, std::vector< Node > > >::iterator itd = d_diseq_list.find( ar );
+      if( itd!=d_diseq_list.end() ){
+        for( std::map< Node, std::vector< Node > >::iterator itdd = itd->second.begin(); itdd != itd->second.end(); ++itdd ){
+          Node d = itdd->first;
+          if( d_diseq_list[br].find( d )==d_diseq_list[br].end() ){
+            merge_exp( d_diseq_list[br][d], itdd->second );
+            merge_exp( d_diseq_list[br][d], d_uf_exp[ar] );
+          }
+        }
+      }
+
+      return status;
+    }else{
+      Trace("qip-eq") << "EqualityQueryInstProp::setEqual : disequal " << ar << " <> " << br << std::endl;
+      Assert( d_diseq_list[ar].find( br )==d_diseq_list[ar].end() );
+      Assert( d_diseq_list[br].find( ar )==d_diseq_list[br].end() );
+
+      merge_exp( d_diseq_list[ar][br], reason );
+      merge_exp( d_diseq_list[br][ar], reason );
+      return STATUS_NONE;
+    }
+  }
+}
+
+void EqualityQueryInstProp::registerUfTerm( TNode n ) {
+  if( d_uf.find( n )==d_uf.end() ){
+    if( !getEngine()->hasTerm( n ) ){
+      TNode f = d_qe->getTermDatabase()->getMatchOperator( n );
+      if( !f.isNull() ){
+        std::vector< TNode > args;
+        for( unsigned i=0; i<n.getNumChildren(); i++ ){
+          if( !getEngine()->hasTerm( n[i] ) ){
+            return;
+          }else{
+            args.push_back( n[i] );
+          }
+        }
+        d_uf_func_map_trie[f].addTerm( n, args );
+      }
+    }
+  }
+}
+
+//void EqualityQueryInstProp::addArgument( std::vector< Node >& args, std::vector< Node >& props, Node n, bool is_prop, bool pol ) {
+void EqualityQueryInstProp::addArgument( Node n, std::vector< Node >& args, std::vector< Node >& watch, bool is_watch ) {
+  if( is_watch ){
+    watch.push_back( n );
+  }
+  args.push_back( n );
+}
+
+bool EqualityQueryInstProp::isPropagateLiteral( Node n ) {
+  if( n==d_true || n==d_false ){
+    return false;
+  }else{
+    Kind ak = n.getKind()==NOT ? n[0].getKind() : n.getKind();
+    if( ak==EQUAL ){
+      Node atom = n.getKind() ? n[0] : n;
+      return !atom[0].getType().isBoolean();
+    }else{
+      Assert( ak!=NOT );
+      return ak!=AND && ak!=OR && ak!=ITE;
+    }
+  }
+}
+
+void EqualityQueryInstProp::setWatchList( Node n, std::vector< Node >& watch, std::map< Node, std::vector< Node > >& watch_list_out ) {
+  if( watch.empty() ){
+    watch.push_back( n );
+  }
+  for( unsigned j=0; j<watch.size(); j++ ){
+    Trace("qip-eval") << "Watch : " << n << " -> " << watch[j] << std::endl;
+    watch_list_out[n].push_back( watch[j] );
+  }
+}
+
+void EqualityQueryInstProp::collectWatchList( Node n, std::map< Node, std::vector< Node > >& watch_list_out, std::vector< Node >& watch_list ) {
+  std::map< Node, std::vector< Node > >::iterator it = watch_list_out.find( n );
+  if( it!=watch_list_out.end() && std::find( watch_list.begin(), watch_list.end(), n )==watch_list.end() ){
+    watch_list.push_back( n );
+    for( unsigned j=0; j<it->second.size(); j++ ){
+      collectWatchList( it->second[j], watch_list_out, watch_list );
+    }
+  }
+}
+
+//this is similar to TermDb::evaluateTerm2, but tracks more information
+Node EqualityQueryInstProp::evaluateTermExp( Node n, std::vector< Node >& exp, std::map< int, std::map< Node, Node > >& visited,
+                                             bool hasPol, bool pol, std::map< Node, std::vector< Node > >& watch_list_out, std::vector< Node >& props ) {
+  int polIndex = hasPol ? ( pol ? 1 : -1 ) : 0;
+  std::map< Node, Node >::iterator itv = visited[polIndex].find( n );
+  if( itv!=visited[polIndex].end() ){
+    return itv->second;
+  }else{
+    visited[polIndex][n] = n;
+    Node ret;
+    //check if it should be propagated in this context
+    if( hasPol && isPropagateLiteral( n ) ){
+      Assert( n.getType().isBoolean() );
+      //must be Boolean
+      ret = evaluateTermExp( n, exp, visited, false, pol, watch_list_out, props );
+      if( isPropagateLiteral( ret ) ){
+        Trace("qip-eval") << "-----> propagate : " << ret << std::endl;
+        props.push_back( pol ? ret : ret.negate() );
+        ret = pol ? d_true : d_false;
+      }
+    }else{
+      Trace("qip-eval") << "evaluate term : " << n << " [" << polIndex << "]" << std::endl;
+      std::vector< Node > exp_n;
+      ret = getRepresentativeExp( n, exp_n );
+      if( ret.isNull() ){
+        //term is not known to be equal to a representative in equality engine, evaluate it
+        Kind k = n.getKind();
+        if( k!=FORALL ){
+          TNode f = d_qe->getTermDatabase()->getMatchOperator( n );
+          std::vector< Node > args;
+          bool ret_set = false;
+          bool childChanged = false;
+          int abort_i = -1;
+          //get the child entailed polarity
+          Assert( n.getKind()!=IMPLIES );
+          bool newHasPol, newPol;
+          QuantPhaseReq::getEntailPolarity( n, 0, hasPol, pol, newHasPol, newPol );
+          std::vector< Node > watch;
+          //for each child
+          for( unsigned i=0; i<n.getNumChildren(); i++ ){
+            Node c = evaluateTermExp( n[i], exp, visited, newHasPol, newPol, watch_list_out, props );
+            if( c.isNull() ){
+              ret = Node::null();
+              ret_set = true;
+              break;
+            }else if( c==d_true || c==d_false ){
+              //short-circuiting
+              if( k==kind::AND || k==kind::OR ){
+                if( (k==kind::AND)==(c==d_false) ){
+                  ret = c;
+                  ret_set = true;
+                  break;
+                }else{
+                  //redundant
+                  c = Node::null();
+                  childChanged = true;
+                }
+              }else if( k==kind::ITE && i==0 ){
+                ret = evaluateTermExp( n[ c==d_true ? 1 : 2], exp, visited, hasPol, pol, watch_list_out, props );
+                ret_set = true;
+                break;
+              }else if( k==kind::NOT ){
+                ret = c==d_true ? d_false : d_true;
+                ret_set = true;
+                break;
+              }
+            }
+            if( !c.isNull() ){
+              childChanged = childChanged || n[i]!=c;
+              bool is_watch = watch_list_out.find( c )!=watch_list_out.end();
+              if( !f.isNull() && is_watch ){
+                // we are done if this is an UF application and an argument is unevaluated
+                addArgument( c, args, watch, is_watch );
+                abort_i = i;
+                break;
+              }else if( k==kind::AND || k==kind::OR || k==kind::ITE || ( k==EQUAL && n[0].getType().isBoolean() ) ){
+                Trace("qip-eval-debug") << "Adding argument " << c << " to " << k << ", isProp = " << newHasPol << std::endl;
+                if( ( k==kind::AND || k==kind::OR  ) && c.getKind()==k ){
+                  //flatten
+                  for( unsigned j=0; j<c.getNumChildren(); j++ ){
+                    addArgument( c[j], args, watch, is_watch );
+                  }
+                }else{
+                  addArgument( c, args, watch, is_watch );
+                }
+                Trace("qip-eval-debug") << "props/args = " << props.size() << "/" << args.size() << std::endl;
+                //if we are in a branching position
+                if( hasPol && !newHasPol && args.size()>=2 ){
+                  //we are done if at least two args are unevaluated
+                  abort_i = i;
+                  break;
+                }
+              }else{
+                addArgument( c, args, watch, is_watch );
+              }
+            }
+          }
+          //add remaining children if we aborted
+          if( abort_i!=-1 ){
+            Trace("qip-eval-debug") << "..." << n << " aborted at " << abort_i << std::endl;
+            for( int i=(abort_i+1); i<(int)n.getNumChildren(); i++ ){
+              args.push_back( n[i] );
+            }
+          }
+          //if we have not short-circuited evaluation
+          if( !ret_set ){
+            //if it is an indexed term, return the congruent term
+            if( !f.isNull() && watch.empty() ){
+              std::vector< TNode > t_args;
+              for( unsigned i=0; i<args.size(); i++ ) {
+                Trace("qip-eval") << "arg " << i << " : " << args[i] << std::endl;
+                t_args.push_back( args[i] );
+              }
+              Assert( args.size()==n.getNumChildren() );
+              //args contains terms known by the equality engine
+              TNode nn = getCongruentTerm( f, t_args );
+              Trace("qip-eval") << "  got congruent term " << nn << " for " << n << std::endl;
+              if( !nn.isNull() ){
+                //successfully constructed representative in EE
+                Assert( exp_n.empty() );
+                ret = getRepresentativeExp( nn, exp_n );
+                Trace("qip-eval") << "return rep, exp size = " << exp_n.size() << std::endl;
+                merge_exp( exp, exp_n );
+                ret_set = true;
+                Assert( !ret.isNull() );
+                Assert( ret!=n );
+                // we have that n == ret, check if the union find should be updated TODO?
+              }else{
+                watch.push_back( ret );
+              }
+            }
+            if( !ret_set ){
+              if( childChanged || args.size()!=n.getNumChildren() ){
+                Trace("qip-eval") << "return rewrite" << std::endl;
+                if( k==kind::AND || k==kind::OR ){
+                  if( args.empty() ){
+                    ret = k==kind::AND ? d_true : d_false;
+                    ret_set = true;
+                  }else if( args.size()==1 ){
+                    //need to re-evaluate (may be new propagations)
+                    ret = evaluateTermExp( args[0], exp, visited, hasPol, pol, watch_list_out, props );
+                    ret_set = true;
+                  }
+                }else{
+                  Assert( args.size()==n.getNumChildren() );
+                }
+                if( !ret_set ){
+                  if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+                    args.insert( args.begin(), n.getOperator() );
+                  }
+                  ret = NodeManager::currentNM()->mkNode( k, args );
+                  setWatchList( ret, watch, watch_list_out );
+                  ret = Rewriter::rewrite( ret );
+                  //need to re-evaluate
+                  ret = evaluateTermExp( ret, exp, visited, hasPol, pol, watch_list_out, props );
+                }
+              }else{
+                ret = n;
+                setWatchList( ret, watch, watch_list_out );
+              }
+            }
+          }
+        }
+      }else{
+        Trace("qip-eval") << "...exists in ee, return rep, exp size = " << exp_n.size() << std::endl;
+        merge_exp( exp, exp_n );
+      }
+    }
+
+    Trace("qip-eval") << "evaluated term : " << n << " [" << polIndex << "], got : " << ret << ", exp size = " << exp.size() << ", watch list size = " << watch_list_out.size() << std::endl;
+    visited[polIndex][n] = ret;
+    return ret;
+  }
+}
+
+void EqualityQueryInstProp::merge_exp( std::vector< Node >& v, std::vector< Node >& v_to_merge, int up_to_size ) {
+  //TODO : optimize
+  if( v.empty() ){
+    Assert( up_to_size==-1 || up_to_size==(int)v_to_merge.size() );
+    v.insert( v.end(), v_to_merge.begin(), v_to_merge.end() );
+  }else{
+    //std::vector< Node >::iterator v_end = v.end();
+    up_to_size = up_to_size==-1 ? (int)v_to_merge.size() : up_to_size;
+    for( int j=0; j<up_to_size; j++ ){
+      if( std::find( v.begin(), v.end(), v_to_merge[j] )==v.end() ){
+        v.push_back( v_to_merge[j] );
+      }
+    }
+  }
+}
+
+
+void InstPropagator::InstInfo::init( Node q, Node lem, std::vector< Node >& terms, Node body ) {
+  d_active = true;
+  //information about the instance
+  d_q = q;
+  d_lem = lem;
+  Assert( d_terms.empty() );
+  d_terms.insert( d_terms.end(), terms.begin(), terms.end() );
+  //the current lemma
+  d_curr = body;
+  d_curr_exp.push_back( body );
+}
+
+InstPropagator::InstPropagator( QuantifiersEngine* qe ) :
+d_qe( qe ), d_notify(*this), d_qy( qe ){
+  d_icount = 1;
+  d_conflict = false;
+}
+
+bool InstPropagator::reset( Theory::Effort e ) {
+  d_icount = 1;
+  d_ii.clear();
+  for( unsigned i=0; i<2; i++ ){
+    d_conc_to_id[i].clear();
+    d_conc_to_id[i][d_qy.d_true] = 0;
+  }
+  d_conflict = false;
+  d_watch_list.clear();
+  d_update_list.clear();
+  d_relevant_inst.clear();
+  d_has_relevant_inst = false;
+  return d_qy.reset( e );
+}
+
+bool InstPropagator::notifyInstantiation( unsigned quant_e, Node q, Node lem, std::vector< Node >& terms, Node body ) {
+  if( !d_conflict ){
+    if( Trace.isOn("qip-prop") ){
+      Trace("qip-prop") << "InstPropagator:: Notify instantiation " << q << " : " << std::endl;
+      for( unsigned i=0; i<terms.size(); i++ ){
+        Trace("qip-prop") << "  " << terms[i] << std::endl;
+      }
+    }
+    unsigned id = allocateInstantiation( q, lem, terms, body );
+    //initialize the information
+    if( cacheConclusion( id, body ) ){
+      Assert( d_update_list.empty() );
+      d_update_list.push_back( id );
+      bool firstTime = true;
+      //update infos in the update list until empty
+      do {
+        unsigned uid = d_update_list.back();
+        d_update_list.pop_back();
+        if( d_ii[uid].d_active ){
+          update( uid, d_ii[uid], firstTime );
+        }
+        firstTime = false;
+      }while( !d_conflict && !d_update_list.empty() );
+    }else{
+      d_ii[id].d_active = false;
+      Trace("qip-prop") << "...duplicate." << std::endl;
+    }
+    Trace("qip-prop") << "...finished notify instantiation." << std::endl;
+    return !d_conflict;
+  }else{
+    Assert( false );
+    return false;
+  }
+}
+
+void InstPropagator::filterInstantiations() {
+  if( d_has_relevant_inst ){
+    //now, inform quantifiers engine which instances should be retracted
+    Trace("qip-prop-debug") << "...remove instantiation ids : ";
+    for( std::map< unsigned, InstInfo >::iterator it = d_ii.begin(); it != d_ii.end(); ++it ){
+      if( !it->second.d_q.isNull() ){
+        if( d_relevant_inst.find( it->first )==d_relevant_inst.end() ){
+          if( !d_qe->removeInstantiation( it->second.d_q, it->second.d_lem, it->second.d_terms ) ){
+            Trace("qip-warn") << "WARNING : did not remove instantiation id " << it->first << std::endl;
+            Assert( false );
+          }else{
+            Trace("qip-prop-debug") << it->first << " ";
+          }
+        }else{
+          //mark the quantified formula as relevant
+          d_qe->markRelevant( it->second.d_q );
+        }
+      }
+    }
+    Trace("qip-prop-debug") << std::endl;
+    Trace("quant-engine-conflict") << "-----> InstPropagator::" << ( d_conflict ? "conflict" : "propagate" ) << " with " << d_relevant_inst.size() << " instances." << std::endl;
+  }
+}
+
+unsigned InstPropagator::allocateInstantiation( Node q, Node lem, std::vector< Node >& terms, Node body ) {
+  unsigned id = d_icount;
+  d_icount++;
+  Trace("qip-prop") << "...assign id=" << id << std::endl;
+  d_ii[id].init( q, lem, terms, body );
+  return id;
+}
+
+bool InstPropagator::update( unsigned id, InstInfo& ii, bool firstTime ) {
+  Assert( !d_conflict );
+  Assert( ii.d_active );
+  Trace("qip-prop-debug") << "Update info [" << id << "]..." << std::endl;
+  //update the evaluation of the current lemma
+  std::map< Node, std::vector< Node > > watch_list_out;
+  std::map< int, std::map< Node, Node > > visited;
+  std::vector< Node > exp;
+  std::vector< Node > props;
+  Node eval = d_qy.evaluateTermExp( ii.d_curr, exp, visited, true, true, watch_list_out, props );
+  EqualityQueryInstProp::merge_exp( ii.d_curr_exp, exp );
+  if( eval.isNull() ){
+    ii.d_active = false;
+  }else if( firstTime || eval!=ii.d_curr ){
+    std::vector< Node > watch_list;
+    d_qy.collectWatchList( eval, watch_list_out, watch_list );
+    if( Trace.isOn("qip-prop") ){
+      Trace("qip-prop") << "Update info [" << id << "]..." << std::endl;
+      Trace("qip-prop") << "...updated lemma " << ii.d_curr << " -> " << eval << std::endl; 
+      Trace("qip-prop") << "...explanation = ";
+      debugPrintExplanation( ii.d_curr_exp, "qip-prop" );
+      Trace("qip-prop") << std::endl;
+      Trace("qip-prop") << "...watch list: " << std::endl;
+      for( unsigned i=0; i<watch_list.size(); i++ ){
+        Trace("qip-prop") << "  " << watch_list[i] << std::endl;
+      }
+      Trace("qip-prop") << "...new propagations: " << std::endl;
+      for( unsigned i=0; i<props.size(); i++ ){
+        Trace("qip-prop") << "  " << props[i] << std::endl;
+      }
+      Trace("qip-prop") << std::endl;
+    }
+    //determine the status of eval
+    if( eval==d_qy.d_false ){
+      Assert( props.empty() );
+      //we have inferred a conflict
+      conflict( ii.d_curr_exp );
+      return false;
+    }else{
+      for( unsigned i=0; i<props.size(); i++ ){
+        Trace("qip-prop-debug2")  << "Process propagation " << props[i] << std::endl;
+        Assert( d_qy.isPropagateLiteral( props[i] ) );
+        //if we haven't propagated this literal yet
+        if( cacheConclusion( id, props[i], 1 ) ){
+          //watch list for propagated literal: may not yet be purely EE representatives
+          std::vector< Node > prop_watch_list;
+          d_qy.collectWatchList( props[i], watch_list_out, prop_watch_list );
+        
+          Node lit = props[i].getKind()==NOT ? props[i][0] : props[i];
+          bool pol = props[i].getKind()!=NOT;
+          if( lit.getKind()==EQUAL ){
+            propagate( lit[0], lit[1], pol, ii.d_curr_exp );
+          }else{
+            propagate( lit, pol ? d_qy.d_true : d_qy.d_false, true, ii.d_curr_exp );
+          }
+          if( d_conflict ){
+            return false;
+          }
+        }
+        Trace("qip-prop-debug2")  << "Done process propagation " << props[i] << std::endl;
+      }
+      //if we have not inferred this conclusion yet
+      if( cacheConclusion( id, eval ) ){
+        ii.d_curr = eval;
+        //update the watch list
+        Trace("qip-prop-debug") << "...updating watch list for [" << id << "], curr is " << ii.d_curr << std::endl;
+        //Here, we need to be notified of enough terms such that if we are not notified, then update( id, ii ) will return no propagations.
+        //  Similar to two-watched literals, but since we are taking into account UF, we need to watch all terms on a complete path of two terms.
+        for( unsigned i=0; i<watch_list.size(); i++ ){
+          d_watch_list[ watch_list[i] ][ id ] = true;
+        }
+      }else{
+        Trace("qip-prop-debug") << "...conclusion " << eval << " is duplicate." << std::endl;
+        ii.d_active = false;
+      }
+    }
+  }else{
+    Trace("qip-prop-debug") << "...did not update." << std::endl;
+  }
+  Assert( !d_conflict );
+  return true;
+}
+
+void InstPropagator::propagate( Node a, Node b, bool pol, std::vector< Node >& exp ) {
+  if( Trace.isOn("qip-propagate") ){
+    Trace("qip-propagate") << "* Propagate " << a << ( pol ? " == " : " != " ) << b << ", exp = ";
+    debugPrintExplanation( exp, "qip-propagate" );
+    Trace("qip-propagate") << "..." << std::endl;
+  }
+  //set equal
+  int status = d_qy.setEqual( a, b, pol, exp );
+  if( status==EqualityQueryInstProp::STATUS_NONE ){
+    Trace("qip-prop-debug") << "...already equal/no conflict." << std::endl;
+    return;
+  }else if( status==EqualityQueryInstProp::STATUS_CONFLICT ){
+    Trace("qip-prop-debug") << "...conflict." << std::endl;
+    conflict( exp );
+    return;
+  }
+  if( pol ){
+    if( status==EqualityQueryInstProp::STATUS_MERGED_KNOWN ){
+      Trace("qip-rlv-propagate") << "Relevant propagation : " << a << ( pol ? " == " : " != " ) << b << std::endl;
+      Assert( d_qy.getEngine()->hasTerm( a ) );
+      Assert( d_qy.getEngine()->hasTerm( b ) );
+      Trace("qip-prop-debug") << "...equality between known terms." << std::endl;
+      addRelevantInstances( exp, "qip-propagate" );
+      //d_has_relevant_inst = true;
+    }
+    Trace("qip-prop-debug") << "...merged representatives " << a << " and " << b << std::endl;
+    for( unsigned i=0; i<2; i++ ){
+      //update terms from watched lists
+      Node c = i==0 ? a : b;
+      std::map< Node, std::map< unsigned, bool > >::iterator it = d_watch_list.find( c );
+      if( it!=d_watch_list.end() ){
+        Trace("qip-prop-debug") << "...update ids from watch list of " << c << ", size=" << it->second.size() << "..." << std::endl;
+        for( std::map< unsigned, bool >::iterator itw = it->second.begin(); itw != it->second.end(); ++itw ){
+          unsigned idw = itw->first;
+          if( std::find( d_update_list.begin(), d_update_list.end(), idw )==d_update_list.end() ){
+            Trace("qip-prop-debug") << "...will update " << idw << std::endl;
+            d_update_list.push_back( idw );
+          }
+        }
+        d_watch_list.erase( c );
+      }
+    }
+  }
+}
+
+void InstPropagator::conflict( std::vector< Node >& exp ) {
+  Trace("qip-propagate") << "Conflict, exp size =" << exp.size() << std::endl;
+  d_conflict = true;
+  d_relevant_inst.clear();
+  addRelevantInstances( exp, "qip-propagate" );
+  d_has_relevant_inst = true;
+}
+
+bool InstPropagator::cacheConclusion( unsigned id, Node body, int prop_index ) {
+  Assert( prop_index==0 || prop_index==1 );
+  //check if the conclusion is non-redundant
+  if( d_conc_to_id[prop_index].find( body )==d_conc_to_id[prop_index].end() ){
+    d_conc_to_id[prop_index][body] = id;
+    return true;
+  }else{
+    return false;
+  }
+}
+
+void InstPropagator::addRelevantInstances( std::vector< Node >& exp, const char * c ) {
+  for( unsigned i=0; i<exp.size(); i++ ){
+    Assert( d_conc_to_id[0].find( exp[i] )!=d_conc_to_id[0].end() );
+    Trace(c) << "  relevant instance id : " << d_conc_to_id[0][ exp[i] ] << std::endl;
+    d_relevant_inst[ d_conc_to_id[0][ exp[i] ] ] = true;
+  }
+}
+
+void InstPropagator::debugPrintExplanation( std::vector< Node >& exp, const char * c ) {
+  for( unsigned i=0; i<exp.size(); i++ ){
+    Assert( d_conc_to_id[0].find( exp[i] )!=d_conc_to_id[0].end() );
+    Trace(c) << d_conc_to_id[0][ exp[i] ] << " ";
+  }
+}
+
diff --git a/src/theory/quantifiers/inst_propagator.h b/src/theory/quantifiers/inst_propagator.h
new file mode 100644
index 0000000..6201cf1
--- /dev/null
+++ b/src/theory/quantifiers/inst_propagator.h
@@ -0,0 +1,175 @@
+/*********************                                                        */
+/*! \file inst_propagator.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Propagate mechanism for instantiations
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__QUANTIFIERS_INST_PROPAGATOR_H
+#define __CVC4__QUANTIFIERS_INST_PROPAGATOR_H
+
+#include <iostream>
+#include <string>
+#include <vector>
+#include <map>
+#include "expr/node.h"
+#include "expr/type_node.h"
+#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/term_database.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+class EqualityQueryInstProp : public EqualityQuery {
+private:
+  /** pointer to quantifiers engine */
+  QuantifiersEngine* d_qe;
+public:
+  EqualityQueryInstProp( QuantifiersEngine* qe );
+  ~EqualityQueryInstProp(){};
+  /** reset */
+  bool reset( Theory::Effort e );
+  /** identify */
+  std::string identify() const { return "EqualityQueryInstProp"; }
+  /** extends engine */
+  bool extendsEngine() { return true; }
+  /** contains term */
+  bool hasTerm( Node a );
+  /** get the representative of the equivalence class of a */
+  Node getRepresentative( Node a );
+  /** returns true if a and b are equal in the current context */
+  bool areEqual( Node a, Node b );
+  /** returns true is a and b are disequal in the current context */
+  bool areDisequal( Node a, Node b );
+  /** get the equality engine associated with this query */
+  eq::EqualityEngine* getEngine();
+  /** get the equivalence class of a */
+  void getEquivalenceClass( Node a, std::vector< Node >& eqc );
+  /** get congruent term */
+  TNode getCongruentTerm( Node f, std::vector< TNode >& args );
+public:
+  /** get the representative of the equivalence class of a, with explanation */
+  Node getRepresentativeExp( Node a, std::vector< Node >& exp );
+  /** returns true if a and b are equal in the current context */
+  bool areEqualExp( Node a, Node b, std::vector< Node >& exp );
+  /** returns true is a and b are disequal in the current context */
+  bool areDisequalExp( Node a, Node b, std::vector< Node >& exp );
+  /** get congruent term */
+  TNode getCongruentTermExp( Node f, std::vector< TNode >& args, std::vector< Node >& exp );
+private:
+  /** term index */
+  std::map< Node, TermArgTrie > d_uf_func_map_trie;
+  /** union find for terms beyond what is stored in equality engine */
+  std::map< Node, Node > d_uf;
+  std::map< Node, std::vector< Node > > d_uf_exp;
+  Node getUfRepresentative( Node a, std::vector< Node >& exp );
+  /** disequality list, stores explanations */
+  std::map< Node, std::map< Node, std::vector< Node > > > d_diseq_list;
+  /** add arg */
+  void addArgument( Node n, std::vector< Node >& args, std::vector< Node >& watch, bool is_watch );
+  /** register term */
+  void registerUfTerm( TNode n );
+public:
+  enum {
+    STATUS_CONFLICT,
+    STATUS_MERGED_KNOWN,
+    STATUS_MERGED_UNKNOWN,
+    STATUS_NONE,
+  };
+  /** set equal */
+  int setEqual( Node& a, Node& b, bool pol, std::vector< Node >& reason );
+  Node d_true;
+  Node d_false;
+public:
+  //for explanations
+  static void merge_exp( std::vector< Node >& v, std::vector< Node >& v_to_merge, int up_to_size = -1 );
+  //for watch list
+  static void setWatchList( Node n, std::vector< Node >& watch, std::map< Node, std::vector< Node > >& watch_list_out );
+  static void collectWatchList( Node n, std::map< Node, std::vector< Node > >& watch_list_out, std::vector< Node >& watch_list );
+
+  Node evaluateTermExp( Node n, std::vector< Node >& exp, std::map< int, std::map< Node, Node > >& visited,
+                        bool hasPol, bool pol, std::map< Node, std::vector< Node > >& watch_list_out, std::vector< Node >& props );
+  bool isPropagateLiteral( Node n );
+};
+
+class InstPropagator : public QuantifiersUtil {
+private:
+  /** pointer to quantifiers engine */
+  QuantifiersEngine* d_qe;
+  /** notify class */
+  class InstantiationNotifyInstPropagator : public InstantiationNotify {
+    InstPropagator& d_ip;
+  public:
+    InstantiationNotifyInstPropagator(InstPropagator& ip): d_ip(ip) {}
+    virtual bool notifyInstantiation( unsigned quant_e, Node q, Node lem, std::vector< Node >& terms, Node body ) {
+      return d_ip.notifyInstantiation( quant_e, q, lem, terms, body );
+    }
+    virtual void filterInstantiations() { d_ip.filterInstantiations(); }
+  };
+  InstantiationNotifyInstPropagator d_notify;
+  /** notify instantiation method */
+  bool notifyInstantiation( unsigned quant_e, Node q, Node lem, std::vector< Node >& terms, Node body );
+  /** remove instance ids */
+  void filterInstantiations();  
+  /** allocate instantiation */
+  unsigned allocateInstantiation( Node q, Node lem, std::vector< Node >& terms, Node body );
+  /** equality query */
+  EqualityQueryInstProp d_qy;
+  class InstInfo {
+  public:
+    bool d_active;
+    Node d_q;
+    Node d_lem;
+    std::vector< Node > d_terms;
+    // the current entailed body
+    Node d_curr;
+    //explanation for current entailed body
+    std::vector< Node > d_curr_exp;
+    void init( Node q, Node lem, std::vector< Node >& terms, Node body );
+  };
+  /** instantiation count/info */
+  unsigned d_icount;
+  std::map< unsigned, InstInfo > d_ii;
+  std::map< Node, unsigned > d_conc_to_id[2];
+  /** are we in conflict */
+  bool d_conflict;
+  /** watch list */
+  std::map< Node, std::map< unsigned, bool > > d_watch_list;
+  /** update list */
+  std::vector< unsigned > d_update_list;
+  /** relevant instances */
+  std::map< unsigned, bool > d_relevant_inst;
+  bool d_has_relevant_inst;
+private:
+  bool update( unsigned id, InstInfo& i, bool firstTime = false );
+  void propagate( Node a, Node b, bool pol, std::vector< Node >& exp );
+  void conflict( std::vector< Node >& exp );
+  bool cacheConclusion( unsigned id, Node body, int prop_index = 0 );
+  void addRelevantInstances( std::vector< Node >& exp, const char * c );
+  void debugPrintExplanation( std::vector< Node >& exp, const char * c );
+public:
+  InstPropagator( QuantifiersEngine* qe );
+  ~InstPropagator(){}
+  /** reset */
+  bool reset( Theory::Effort e );
+  /** identify */
+  std::string identify() const { return "InstPropagator"; }
+  /** get the notify mechanism */
+  InstantiationNotify* getInstantiationNotify() { return &d_notify; }
+};
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/inst_strategy_cbqi.cpp b/src/theory/quantifiers/inst_strategy_cbqi.cpp
new file mode 100644
index 0000000..1f18377
--- /dev/null
+++ b/src/theory/quantifiers/inst_strategy_cbqi.cpp
@@ -0,0 +1,778 @@
+/*********************                                                        */
+/*! \file inst_strategy_cbqi.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of counterexample-guided quantifier instantiation strategies
+ **/
+#include "theory/quantifiers/inst_strategy_cbqi.h"
+
+#include "options/quantifiers_options.h"
+#include "smt/term_formula_removal.h"
+#include "theory/arith/partial_model.h"
+#include "theory/arith/theory_arith.h"
+#include "theory/arith/theory_arith_private.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/trigger.h"
+#include "theory/quantifiers/quantifiers_rewriter.h"
+#include "theory/theory_engine.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+using namespace CVC4::theory::arith;
+
+#define ARITH_INSTANTIATOR_USE_MINUS_DELTA
+
+InstStrategyCbqi::InstStrategyCbqi( QuantifiersEngine * qe )
+  : QuantifiersModule( qe ), d_added_cbqi_lemma( qe->getUserContext() ), 
+d_elim_quants( qe->getSatContext() ),
+d_nested_qe_waitlist_size( qe->getUserContext() ),
+d_nested_qe_waitlist_proc( qe->getUserContext() )
+//, d_added_inst( qe->getUserContext() )
+{
+  d_qid_count = 0;
+}
+
+InstStrategyCbqi::~InstStrategyCbqi() throw(){}
+
+bool InstStrategyCbqi::needsCheck( Theory::Effort e ) {
+  return e>=Theory::EFFORT_LAST_CALL;
+}
+
+unsigned InstStrategyCbqi::needsModel( Theory::Effort e ) {
+  for( unsigned i=0; i<d_quantEngine->getModel()->getNumAssertedQuantifiers(); i++ ){
+    Node q = d_quantEngine->getModel()->getAssertedQuantifier( i );
+    if( doCbqi( q ) && d_quantEngine->getModel()->isQuantifierActive( q ) ){
+      return QuantifiersEngine::QEFFORT_STANDARD;
+    }
+  }
+  return QuantifiersEngine::QEFFORT_NONE;
+}
+
+bool InstStrategyCbqi::registerCbqiLemma( Node q ) {
+  if( !hasAddedCbqiLemma( q ) ){
+    d_added_cbqi_lemma.insert( q );
+    Trace("cbqi-debug") << "Do cbqi for " << q << std::endl;
+    //add cbqi lemma
+    //get the counterexample literal
+    Node ceLit = d_quantEngine->getTermDatabase()->getCounterexampleLiteral( q );
+    Node ceBody = d_quantEngine->getTermDatabase()->getInstConstantBody( q );
+    if( !ceBody.isNull() ){
+      //add counterexample lemma
+      Node lem = NodeManager::currentNM()->mkNode( OR, ceLit.negate(), ceBody.negate() );
+      //require any decision on cel to be phase=true
+      d_quantEngine->addRequirePhase( ceLit, true );
+      Debug("cbqi-debug") << "Require phase " << ceLit << " = true." << std::endl;
+      //add counterexample lemma
+      lem = Rewriter::rewrite( lem );
+      Trace("cbqi-lemma") << "Counterexample lemma : " << lem << std::endl;
+      registerCounterexampleLemma( q, lem );
+      
+      //totality lemmas for EPR
+      QuantEPR * qepr = d_quantEngine->getQuantEPR();
+      if( qepr!=NULL ){   
+        for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
+          TypeNode tn = q[0][i].getType();
+          if( tn.isSort() ){
+            if( qepr->isEPR( tn ) ){
+              //add totality lemma
+              std::map< TypeNode, std::vector< Node > >::iterator itc = qepr->d_consts.find( tn );
+              if( itc!=qepr->d_consts.end() ){
+                Assert( !itc->second.empty() );
+                Node ic = d_quantEngine->getTermDatabase()->getInstantiationConstant( q, i );
+                std::vector< Node > disj;
+                for( unsigned j=0; j<itc->second.size(); j++ ){
+                  disj.push_back( ic.eqNode( itc->second[j] ) );
+                }
+                Node tlem = disj.size()==1 ? disj[0] : NodeManager::currentNM()->mkNode( kind::OR, disj );
+                Trace("cbqi-lemma") << "EPR totality lemma : " << tlem << std::endl;
+                d_quantEngine->getOutputChannel().lemma( tlem );
+              }else{
+                Assert( false );
+              }                  
+            }else{
+              Assert( !options::cbqiAll() );
+            }
+          }
+        }
+      }      
+      
+      //compute dependencies between quantified formulas
+      if( options::cbqiLitDepend() || options::cbqiInnermost() ){
+        std::vector< Node > ics;
+        TermDb::computeVarContains( q, ics );
+        d_parent_quant[q].clear();
+        d_children_quant[q].clear();
+        std::vector< Node > dep;
+        for( unsigned i=0; i<ics.size(); i++ ){
+          Node qi = ics[i].getAttribute(InstConstantAttribute());
+          if( std::find( d_parent_quant[q].begin(), d_parent_quant[q].end(), qi )==d_parent_quant[q].end() ){
+            d_parent_quant[q].push_back( qi );
+            d_children_quant[qi].push_back( q );
+            Node qicel = d_quantEngine->getTermDatabase()->getCounterexampleLiteral( qi );
+            dep.push_back( qi );
+            dep.push_back( qicel );
+          }
+        }
+        if( !dep.empty() ){
+          Node dep_lemma = NodeManager::currentNM()->mkNode( kind::IMPLIES, ceLit, NodeManager::currentNM()->mkNode( kind::AND, dep ) );
+          Trace("cbqi-lemma") << "Counterexample dependency lemma : " << dep_lemma << std::endl;
+          d_quantEngine->getOutputChannel().lemma( dep_lemma );
+        }
+      }
+      
+      //must register all sub-quantifiers of counterexample lemma, register their lemmas
+      std::vector< Node > quants;
+      TermDb::computeQuantContains( lem, quants );
+      for( unsigned i=0; i<quants.size(); i++ ){
+        if( doCbqi( quants[i] ) ){
+          registerCbqiLemma( quants[i] );
+        }
+        if( options::cbqiNestedQE() ){
+          //record these as counterexample quantifiers
+          QAttributes qa;
+          TermDb::computeQuantAttributes( quants[i], qa );
+          if( !qa.d_qid_num.isNull() ){
+            d_id_to_ce_quant[ qa.d_qid_num ] = quants[i];
+            d_ce_quant_to_id[ quants[i] ] = qa.d_qid_num;
+            Trace("cbqi-nqe") << "CE quant id = " << qa.d_qid_num << " is " << quants[i] << std::endl;
+          }
+        }
+      }
+    }
+    return true;
+  }else{
+    return false;
+  }
+}
+
+void InstStrategyCbqi::reset_round( Theory::Effort effort ) {
+  d_cbqi_set_quant_inactive = false;
+  d_incomplete_check = false;
+  d_active_quant.clear();
+  //check if any cbqi lemma has not been added yet
+  for( unsigned i=0; i<d_quantEngine->getModel()->getNumAssertedQuantifiers(); i++ ){
+    Node q = d_quantEngine->getModel()->getAssertedQuantifier( i );
+    //it is not active if it corresponds to a rewrite rule: we will process in rewrite engine
+    if( doCbqi( q ) ){
+      if( registerCbqiLemma( q ) ){
+        Debug("cbqi-debug") << "Registered cbqi lemma." << std::endl;
+      //set inactive the quantified formulas whose CE literals are asserted false
+      }else if( d_quantEngine->getModel()->isQuantifierActive( q ) ){
+        d_active_quant[q] = true;
+        Debug("cbqi-debug") << "Check quantified formula " << q << "..." << std::endl;
+        Node cel = d_quantEngine->getTermDatabase()->getCounterexampleLiteral( q );
+        bool value;
+        if( d_quantEngine->getValuation().hasSatValue( cel, value ) ){
+          Debug("cbqi-debug") << "...CE Literal has value " << value << std::endl;
+          if( !value ){
+            if( d_quantEngine->getValuation().isDecision( cel ) ){
+              Trace("cbqi-warn") << "CBQI WARNING: Bad decision on CE Literal." << std::endl;
+            }else{
+              Trace("cbqi") << "Inactive : " << q << std::endl;
+              d_quantEngine->getModel()->setQuantifierActive( q, false );
+              d_cbqi_set_quant_inactive = true;
+              d_active_quant.erase( q );
+              d_elim_quants.insert( q );
+              Trace("cbqi-nqe") << "Inactive, waitlist proc/size = " << d_nested_qe_waitlist_proc[q].get() << "/" << d_nested_qe_waitlist_size[q].get() << std::endl;
+              //process from waitlist
+              while( d_nested_qe_waitlist_proc[q]<d_nested_qe_waitlist_size[q] ){
+                int index = d_nested_qe_waitlist_proc[q];
+                Assert( index>=0 );
+                Assert( index<(int)d_nested_qe_waitlist[q].size() );
+                Node nq = d_nested_qe_waitlist[q][index];
+                Node nqeqn = doNestedQENode( d_nested_qe_info[nq].d_q, q, nq, d_nested_qe_info[nq].d_inst_terms, d_nested_qe_info[nq].d_doVts );
+                Node dqelem = nq.eqNode( nqeqn ); 
+                Trace("cbqi-lemma") << "Delayed nested quantifier elimination lemma : " << dqelem << std::endl;
+                d_quantEngine->getOutputChannel().lemma( dqelem );
+                d_nested_qe_waitlist_proc[q] = index + 1;
+              }
+            }
+          }
+        }else{
+          Debug("cbqi-debug") << "...CE Literal does not have value " << std::endl;
+        }
+      }
+    }
+  }
+
+  //refinement: only consider innermost active quantified formulas
+  if( options::cbqiInnermost() ){
+    if( !d_children_quant.empty() && !d_active_quant.empty() ){
+      Trace("cbqi-debug") << "Find non-innermost quantifiers..." << std::endl;
+      std::vector< Node > ninner;
+      for( std::map< Node, bool >::iterator it = d_active_quant.begin(); it != d_active_quant.end(); ++it ){
+        std::map< Node, std::vector< Node > >::iterator itc = d_children_quant.find( it->first );
+        if( itc!=d_children_quant.end() ){
+          for( unsigned j=0; j<itc->second.size(); j++ ){
+            if( d_active_quant.find( itc->second[j] )!=d_active_quant.end() ){
+              Trace("cbqi-debug") << "Do not consider " << it->first << " since it is not innermost (" << itc->second[j] << std::endl;
+              ninner.push_back( it->first );
+              break;
+            }
+          }
+        }
+      } 
+      Trace("cbqi-debug") << "Found " << ninner.size() << " non-innermost." << std::endl;
+      for( unsigned i=0; i<ninner.size(); i++ ){
+        Assert( d_active_quant.find( ninner[i] )!=d_active_quant.end() );
+        d_active_quant.erase( ninner[i] );
+      }
+      Assert( !d_active_quant.empty() );
+      Trace("cbqi-debug") << "...done removing." << std::endl;
+    }
+  }
+  
+  processResetInstantiationRound( effort );
+}
+
+void InstStrategyCbqi::check( Theory::Effort e, unsigned quant_e ) {
+  if( quant_e==QuantifiersEngine::QEFFORT_STANDARD ){
+    Assert( !d_quantEngine->inConflict() );
+    double clSet = 0;
+    if( Trace.isOn("cbqi-engine") ){
+      clSet = double(clock())/double(CLOCKS_PER_SEC);
+      Trace("cbqi-engine") << "---Cbqi Engine Round, effort = " << e << "---" << std::endl;
+    }
+    unsigned lastWaiting = d_quantEngine->getNumLemmasWaiting();
+    for( int ee=0; ee<=1; ee++ ){
+      //for( unsigned i=0; i<d_quantEngine->getModel()->getNumAssertedQuantifiers(); i++ ){
+      //  Node q = d_quantEngine->getModel()->getAssertedQuantifier( i );
+      //  if( doCbqi( q ) && d_quantEngine->getModel()->isQuantifierActive( q ) ){
+      for( std::map< Node, bool >::iterator it = d_active_quant.begin(); it != d_active_quant.end(); ++it ){
+        Node q = it->first;
+        Trace("cbqi") << "CBQI : Process quantifier " << q[0] << " at effort " << ee << std::endl;
+        if( d_nested_qe.find( q )==d_nested_qe.end() ){
+          process( q, e, ee );
+          if( d_quantEngine->inConflict() ){
+            break;
+          }
+        }else{
+          Trace("cbqi-warn") << "CBQI : Cannot process already eliminated quantified formula " << q << std::endl;
+          Assert( false );
+        }
+      }
+      if( d_quantEngine->inConflict() || d_quantEngine->getNumLemmasWaiting()>lastWaiting ){
+        break;
+      }
+    }
+    if( Trace.isOn("cbqi-engine") ){
+      if( d_quantEngine->getNumLemmasWaiting()>lastWaiting ){
+        Trace("cbqi-engine") << "Added lemmas = " << (d_quantEngine->getNumLemmasWaiting()-lastWaiting) << std::endl;
+      }
+      double clSet2 = double(clock())/double(CLOCKS_PER_SEC);
+      Trace("cbqi-engine") << "Finished cbqi engine, time = " << (clSet2-clSet) << std::endl;
+    }
+  }
+}
+
+bool InstStrategyCbqi::checkComplete() {
+  if( ( !options::cbqiSat() && d_cbqi_set_quant_inactive ) || d_incomplete_check ){
+    return false;
+  }else{
+    return true;
+  }
+}
+
+bool InstStrategyCbqi::checkCompleteFor( Node q ) {
+  std::map< Node, int >::iterator it = d_do_cbqi.find( q );
+  if( it!=d_do_cbqi.end() ){
+    return it->second>0;
+  }else{
+    return false;
+  }
+}
+
+Node InstStrategyCbqi::getIdMarkedQuantNode( Node n, std::map< Node, Node >& visited ){
+  std::map< Node, Node >::iterator it = visited.find( n );
+  if( it==visited.end() ){
+    Node ret = n;
+    if( n.getKind()==FORALL ){
+      QAttributes qa;
+      TermDb::computeQuantAttributes( n, qa );
+      if( qa.d_qid_num.isNull() ){
+        std::vector< Node > rc;
+        rc.push_back( n[0] );
+        rc.push_back( getIdMarkedQuantNode( n[1], visited ) );
+        Node avar = NodeManager::currentNM()->mkSkolem( "id", NodeManager::currentNM()->booleanType() );
+        QuantIdNumAttribute ida;
+        avar.setAttribute(ida,d_qid_count);
+        d_qid_count++;
+        std::vector< Node > iplc;
+        iplc.push_back( NodeManager::currentNM()->mkNode( INST_ATTRIBUTE, avar ) );
+        if( n.getNumChildren()==3 ){
+          for( unsigned i=0; i<n[2].getNumChildren(); i++ ){
+            iplc.push_back( n[2][i] );
+          }
+        }
+        rc.push_back( NodeManager::currentNM()->mkNode( INST_PATTERN_LIST, iplc ) );
+        ret = NodeManager::currentNM()->mkNode( FORALL, rc );
+      }
+    }else if( n.getNumChildren()>0 ){
+      std::vector< Node > children;
+      if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+        children.push_back( n.getOperator() );
+      }
+      bool childChanged = false;
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        Node nc = getIdMarkedQuantNode( n[i], visited );
+        childChanged = childChanged || nc!=n[i];
+        children.push_back( nc );
+      }
+      if( childChanged ){
+        ret = NodeManager::currentNM()->mkNode( n.getKind(), children );
+      }
+    }
+    visited[n] = ret;
+    return ret;
+  }else{
+    return it->second;
+  }
+}
+
+void InstStrategyCbqi::preRegisterQuantifier( Node q ) {
+  if( d_quantEngine->getOwner( q )==NULL && doCbqi( q ) ){
+    if( d_do_cbqi[q]==2 ){
+      //take full ownership of the quantified formula
+      d_quantEngine->setOwner( q, this );
+      
+      //mark all nested quantifiers with id
+      if( options::cbqiNestedQE() ){
+        std::map< Node, Node > visited;
+        Node mq = getIdMarkedQuantNode( q[1], visited );
+        if( mq!=q[1] ){
+          //do not do cbqi
+          d_do_cbqi[q] = false;
+          //instead do reduction
+          std::vector< Node > qqc;
+          qqc.push_back( q[0] );
+          qqc.push_back( mq );
+          if( q.getNumChildren()==3 ){
+            qqc.push_back( q[2] );
+          }
+          Node qq = NodeManager::currentNM()->mkNode( FORALL, qqc );
+          Node mlem = NodeManager::currentNM()->mkNode( IMPLIES, q, qq );
+          Trace("cbqi-lemma") << "Mark quant id lemma : " << mlem << std::endl;
+          d_quantEngine->getOutputChannel().lemma( mlem );
+        }
+      }
+    }
+  }
+}
+
+void InstStrategyCbqi::registerQuantifier( Node q ) {
+
+}
+
+Node InstStrategyCbqi::doNestedQENode( Node q, Node ceq, Node n, std::vector< Node >& inst_terms, bool doVts ) {
+  // there is a nested quantified formula (forall y. nq[y,x]) such that 
+  //    q is (forall y. nq[y,t]) for ground terms t,
+  //    ceq is (forall y. nq[y,e]) for CE variables e.
+  // we call this function when we know (forall y. nq[y,e]) is equivalent to quantifier-free formula C[e].
+  // in this case, q is equivalent to the quantifier-free formula C[t].
+  if( d_nested_qe.find( ceq )==d_nested_qe.end() ){
+    d_nested_qe[ceq] = d_quantEngine->getInstantiatedConjunction( ceq );
+    Trace("cbqi-nqe") << "CE quantifier elimination : " << std::endl;
+    Trace("cbqi-nqe") << "  " << ceq << std::endl; 
+    Trace("cbqi-nqe") << "  " << d_nested_qe[ceq] << std::endl;
+    //should not contain quantifiers
+    Assert( !QuantifiersRewriter::containsQuantifiers( d_nested_qe[ceq] ) );
+  }
+  Assert( d_quantEngine->getTermDatabase()->d_inst_constants[q].size()==inst_terms.size() );
+  //replace inst constants with instantiation
+  Node ret = d_nested_qe[ceq].substitute( d_quantEngine->getTermDatabase()->d_inst_constants[q].begin(),
+                                          d_quantEngine->getTermDatabase()->d_inst_constants[q].end(),
+                                          inst_terms.begin(), inst_terms.end() );
+  if( doVts ){
+    //do virtual term substitution
+    ret = Rewriter::rewrite( ret );
+    ret = d_quantEngine->getTermDatabase()->rewriteVtsSymbols( ret );
+  }
+  Trace("cbqi-nqe") << "Nested quantifier elimination: " << std::endl;
+  Trace("cbqi-nqe") << "  " << n << std::endl; 
+  Trace("cbqi-nqe") << "  " << ret << std::endl;
+  return ret;
+}
+
+Node InstStrategyCbqi::doNestedQERec( Node q, Node n, std::map< Node, Node >& visited, std::vector< Node >& inst_terms, bool doVts ) {
+  if( visited.find( n )==visited.end() ){
+    Node ret = n;
+    if( n.getKind()==FORALL ){
+      QAttributes qa;
+      TermDb::computeQuantAttributes( n, qa );
+      if( !qa.d_qid_num.isNull() ){
+        //if it has an id, check whether we have done quantifier elimination for this id
+        std::map< Node, Node >::iterator it = d_id_to_ce_quant.find( qa.d_qid_num );
+        if( it!=d_id_to_ce_quant.end() ){
+          Node ceq = it->second;
+          bool doNestedQe = d_elim_quants.contains( ceq );
+          if( doNestedQe ){
+            ret = doNestedQENode( q, ceq, n, inst_terms, doVts );
+          }else{
+            Trace("cbqi-nqe") << "Add to nested qe waitlist : " << std::endl;
+            Node nr = Rewriter::rewrite( n );
+            Trace("cbqi-nqe") << "  " << ceq << std::endl;
+            Trace("cbqi-nqe") << "  " << nr << std::endl;
+            int wlsize = d_nested_qe_waitlist_size[ceq] + 1;
+            d_nested_qe_waitlist_size[ceq] = wlsize;
+            if( wlsize<(int)d_nested_qe_waitlist[ceq].size() ){
+              d_nested_qe_waitlist[ceq][wlsize] = nr;
+            }else{
+              d_nested_qe_waitlist[ceq].push_back( nr );
+            }
+            d_nested_qe_info[nr].d_q = q;
+            d_nested_qe_info[nr].d_inst_terms.clear();
+            d_nested_qe_info[nr].d_inst_terms.insert( d_nested_qe_info[nr].d_inst_terms.end(), inst_terms.begin(), inst_terms.end() );
+            d_nested_qe_info[nr].d_doVts = doVts;
+            //TODO: ensure this holds by restricting prenex when cbqiNestedQe is true.
+            Assert( !options::cbqiInnermost() );
+          }
+        } 
+      } 
+    }else if( n.getNumChildren()>0 ){
+      std::vector< Node > children;
+      if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+        children.push_back( n.getOperator() );
+      }
+      bool childChanged = false;
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        Node nc = doNestedQERec( q, n[i], visited, inst_terms, doVts );
+        childChanged = childChanged || nc!=n[i];
+        children.push_back( nc );
+      }
+      if( childChanged ){
+        ret = NodeManager::currentNM()->mkNode( n.getKind(), children );
+      }
+    }
+    visited[n] = ret;
+    return ret;
+  }else{
+    return n;
+  }  
+}
+
+Node InstStrategyCbqi::doNestedQE( Node q, std::vector< Node >& inst_terms, Node lem, bool doVts ) {
+  std::map< Node, Node > visited;
+  return doNestedQERec( q, lem, visited, inst_terms, doVts );
+}
+
+void InstStrategyCbqi::registerCounterexampleLemma( Node q, Node lem ){
+  Trace("cbqi-debug") << "Counterexample lemma  : " << lem << std::endl;
+  d_quantEngine->addLemma( lem, false );
+}
+
+bool InstStrategyCbqi::hasNonCbqiOperator( Node n, std::map< Node, bool >& visited ){
+  if( visited.find( n )==visited.end() ){
+    visited[n] = true;
+    if( n.getKind()!=BOUND_VARIABLE && TermDb::hasBoundVarAttr( n ) ){
+      if( !inst::Trigger::isCbqiKind( n.getKind() ) ){
+        Trace("cbqi-debug2") << "Non-cbqi kind : " << n.getKind() << " in " << n  << std::endl;
+        return true;
+      }else if( n.getKind()==MULT && ( n.getNumChildren()!=2 || !n[0].isConst() ) ){
+        Trace("cbqi-debug2") << "Non-linear arithmetic : " << n << std::endl;
+        return true;
+      }else if( n.getKind()==FORALL ){
+        return hasNonCbqiOperator( n[1], visited );
+      }else{
+        for( unsigned i=0; i<n.getNumChildren(); i++ ){
+          if( hasNonCbqiOperator( n[i], visited ) ){
+            return true;
+          }
+        }
+      }
+    }
+  }
+  return false;
+}
+int InstStrategyCbqi::hasNonCbqiVariable( Node q ){
+  int hmin = 1;
+  for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
+    TypeNode tn = q[0][i].getType();
+    int handled = -1;
+    if( tn.isInteger() || tn.isReal() || tn.isBoolean() || tn.isBitVector() ){
+      handled = 0;
+    }else if( tn.isDatatype() ){
+      handled = 0;
+    }else if( tn.isSort() ){
+      QuantEPR * qepr = d_quantEngine->getQuantEPR();
+      if( qepr!=NULL ){
+        handled = qepr->isEPR( tn ) ? 1 : -1;
+      }
+    }
+    if( handled==-1 ){
+      return -1;
+    }else if( handled<hmin ){
+      hmin = handled;
+    }
+  }
+  return hmin;
+}
+
+bool InstStrategyCbqi::doCbqi( Node q ){
+  std::map< Node, int >::iterator it = d_do_cbqi.find( q );
+  if( it==d_do_cbqi.end() ){
+    int ret = 2;
+    if( !d_quantEngine->getTermDatabase()->isQAttrQuantElim( q ) ){
+      //if has an instantiation pattern, don't do it
+      if( q.getNumChildren()==3 && options::eMatching() && options::userPatternsQuant()!=USER_PAT_MODE_IGNORE ){
+        for( unsigned i=0; i<q[2].getNumChildren(); i++ ){
+          if( q[2][i].getKind()==INST_PATTERN ){
+            ret = 0;
+          }
+        }
+      }
+      if( ret!=0 ){
+        //if quantifier has a non-handled variable, then do not use cbqi
+        //if quantifier has an APPLY_UF term, then do not use cbqi unless EPR
+        int ncbqiv = hasNonCbqiVariable( q );
+        if( ncbqiv==0 || ncbqiv==1 ){
+          std::map< Node, bool > visited;
+          if( hasNonCbqiOperator( q[1], visited ) ){
+            if( ncbqiv==1 ){
+              //all variables are fully handled, this implies this will be handlable regardless of body (e.g. for EPR)
+              //  so, try but not exclusively
+              ret = 1;
+            }else{
+              //cannot be handled
+              ret = 0;
+            }
+          }
+        }else{
+          // unhandled variable type
+          ret = 0;
+        }
+        if( ret==0 && options::cbqiAll() ){
+          //try but not exclusively
+          ret = 1;
+        }
+      }
+    }
+    Trace("cbqi-quant") << "doCbqi " << q << " returned " << ret << std::endl;
+    d_do_cbqi[q] = ret;
+    return ret!=0;
+  }else{
+    return it->second!=0;
+  }
+}
+
+Node InstStrategyCbqi::getNextDecisionRequestProc( Node q, std::map< Node, bool >& proc ) {
+  if( proc.find( q )==proc.end() ){
+    proc[q] = true;
+    //first check children
+    std::map< Node, std::vector< Node > >::iterator itc = d_children_quant.find( q );
+    if( itc!=d_children_quant.end() ){
+      for( unsigned j=0; j<itc->second.size(); j++ ){
+        Node d = getNextDecisionRequestProc( itc->second[j], proc );
+        if( !d.isNull() ){
+          return d;
+        }
+      }
+    }
+    //then check self
+    if( hasAddedCbqiLemma( q ) ){
+      Node cel = d_quantEngine->getTermDatabase()->getCounterexampleLiteral( q );
+      bool value;
+      if( !d_quantEngine->getValuation().hasSatValue( cel, value ) ){
+        Trace("cbqi-dec") << "CBQI: get next decision " << cel << std::endl;
+        return cel;
+      }
+    }    
+  }
+  return Node::null(); 
+}
+
+Node InstStrategyCbqi::getNextDecisionRequest( unsigned& priority ){
+  std::map< Node, bool > proc;
+  for( unsigned i=0; i<d_quantEngine->getModel()->getNumAssertedQuantifiers(); i++ ){
+    Node q = d_quantEngine->getModel()->getAssertedQuantifier( i );
+    Node d = getNextDecisionRequestProc( q, proc );
+    if( !d.isNull() ){
+      priority = 0;
+      return d;
+    }
+  }
+  return Node::null();
+}
+
+
+
+//new implementation
+
+bool CegqiOutputInstStrategy::doAddInstantiation( std::vector< Node >& subs ) {
+  return d_out->doAddInstantiation( subs );
+}
+
+bool CegqiOutputInstStrategy::isEligibleForInstantiation( Node n ) {
+  return d_out->isEligibleForInstantiation( n );
+}
+
+bool CegqiOutputInstStrategy::addLemma( Node lem ) {
+  return d_out->addLemma( lem );
+}
+
+
+InstStrategyCegqi::InstStrategyCegqi( QuantifiersEngine * qe )
+  : InstStrategyCbqi( qe ) {
+  d_out = new CegqiOutputInstStrategy( this );
+  d_small_const = NodeManager::currentNM()->mkConst( Rational(1)/Rational(1000000) );
+  d_check_vts_lemma_lc = false;
+}
+
+InstStrategyCegqi::~InstStrategyCegqi() throw () {
+  delete d_out;
+
+  for(std::map< Node, CegInstantiator * >::iterator i = d_cinst.begin(),
+          iend = d_cinst.end(); i != iend; ++i) {
+    CegInstantiator * instantiator = (*i).second;
+    delete instantiator;
+  }
+  d_cinst.clear();
+}
+
+void InstStrategyCegqi::processResetInstantiationRound( Theory::Effort effort ) {
+  d_check_vts_lemma_lc = false;
+}
+
+void InstStrategyCegqi::process( Node q, Theory::Effort effort, int e ) {
+  if( e==0 ){
+    CegInstantiator * cinst = getInstantiator( q );
+    Trace("inst-alg") << "-> Run cegqi for " << q << std::endl;
+    d_curr_quant = q;
+    if( !cinst->check() ){
+      d_incomplete_check = true;
+      d_check_vts_lemma_lc = true;
+    }
+    d_curr_quant = Node::null();
+  }else if( e==1 ){
+    //minimize the free delta heuristically on demand
+    if( d_check_vts_lemma_lc ){
+      Trace("inst-alg") << "-> Minimize delta heuristic, for " << q << std::endl;
+      d_check_vts_lemma_lc = false;
+      d_small_const = NodeManager::currentNM()->mkNode( MULT, d_small_const, d_small_const );
+      d_small_const = Rewriter::rewrite( d_small_const );
+      //heuristic for now, until we know how to do nested quantification
+      Node delta = d_quantEngine->getTermDatabase()->getVtsDelta( true, false );
+      if( !delta.isNull() ){
+        Trace("quant-vts-debug") << "Delta lemma for " << d_small_const << std::endl;
+        Node delta_lem_ub = NodeManager::currentNM()->mkNode( LT, delta, d_small_const );
+        d_quantEngine->getOutputChannel().lemma( delta_lem_ub );
+      }
+      std::vector< Node > inf;
+      d_quantEngine->getTermDatabase()->getVtsTerms( inf, true, false, false );
+      for( unsigned i=0; i<inf.size(); i++ ){
+        Trace("quant-vts-debug") << "Infinity lemma for " << inf[i] << " " << d_small_const << std::endl;
+        Node inf_lem_lb = NodeManager::currentNM()->mkNode( GT, inf[i], NodeManager::currentNM()->mkConst( Rational(1)/d_small_const.getConst<Rational>() ) );
+        d_quantEngine->getOutputChannel().lemma( inf_lem_lb );
+      }
+    }
+  }
+}
+
+bool InstStrategyCegqi::doAddInstantiation( std::vector< Node >& subs ) {
+  Assert( !d_curr_quant.isNull() );
+  //if doing partial quantifier elimination, record the instantiation and set the incomplete flag instead of sending instantiation lemma
+  if( d_quantEngine->getTermDatabase()->isQAttrQuantElimPartial( d_curr_quant ) ){
+    d_cbqi_set_quant_inactive = true;
+    d_incomplete_check = true;
+    d_quantEngine->recordInstantiationInternal( d_curr_quant, subs, false, false );
+    return true;
+  }else{
+    //check if we need virtual term substitution (if used delta or infinity)
+    bool used_vts = d_quantEngine->getTermDatabase()->containsVtsTerm( subs, false );
+    if( d_quantEngine->addInstantiation( d_curr_quant, subs, false, false, used_vts ) ){
+      ++(d_quantEngine->d_statistics.d_instantiations_cbqi);
+      //d_added_inst.insert( d_curr_quant );
+      return true;
+    }else{
+      //this should never happen for monotonic selection strategies
+      Trace("cbqi-warn") << "WARNING: Existing instantiation" << std::endl;
+      Assert( !options::cbqiNestedQE() || options::cbqiAll() );
+      return false;
+    }
+  }
+}
+
+bool InstStrategyCegqi::addLemma( Node lem ) {
+  return d_quantEngine->addLemma( lem );
+}
+
+bool InstStrategyCegqi::isEligibleForInstantiation( Node n ) {
+  if( n.getKind()==INST_CONSTANT || n.getKind()==SKOLEM ){
+    if( n.getKind()==SKOLEM && d_quantEngine->getTermDatabase()->containsVtsTerm( n ) ){
+      return true;
+    }else{
+      TypeNode tn = n.getType();
+      if( tn.isSort() ){
+        QuantEPR * qepr = d_quantEngine->getQuantEPR();
+        if( qepr!=NULL ){
+          //legal if in the finite set of constants of type tn
+          if( qepr->isEPRConstant( tn, n ) ){
+            return true;
+          }
+        }
+      }
+      //only legal if current quantified formula contains n
+      return TermDb::containsTerm( d_curr_quant, n );
+    }
+  }else{
+    return true;
+  }
+}
+
+CegInstantiator * InstStrategyCegqi::getInstantiator( Node q ) {
+  std::map< Node, CegInstantiator * >::iterator it = d_cinst.find( q );
+  if( it==d_cinst.end() ){
+    CegInstantiator * cinst = new CegInstantiator( d_quantEngine, d_out, true, true );
+    d_cinst[q] = cinst;
+    return cinst;
+  }else{
+   return it->second;
+  }
+}
+
+void InstStrategyCegqi::registerQuantifier( Node q ) {
+  if( options::cbqiPreRegInst() ){
+    if( doCbqi( q ) ){
+      //just get the instantiator
+      getInstantiator( q );
+    }
+  }
+}
+
+void InstStrategyCegqi::registerCounterexampleLemma( Node q, Node lem ) {
+  //must register with the instantiator
+  //must explicitly remove ITEs so that we record dependencies
+  std::vector< Node > ce_vars;
+  for( unsigned i=0; i<d_quantEngine->getTermDatabase()->getNumInstantiationConstants( q ); i++ ){
+    ce_vars.push_back( d_quantEngine->getTermDatabase()->getInstantiationConstant( q, i ) );
+  }
+  std::vector< Node > lems;
+  lems.push_back( lem );
+  CegInstantiator * cinst = getInstantiator( q );
+  cinst->registerCounterexampleLemma( lems, ce_vars );
+  for( unsigned i=0; i<lems.size(); i++ ){
+    Trace("cbqi-debug") << "Counterexample lemma " << i << " : " << lems[i] << std::endl;
+    d_quantEngine->addLemma( lems[i], false );
+  }
+}
+
+void InstStrategyCegqi::presolve() {
+  if( options::cbqiPreRegInst() ){
+    for( std::map< Node, CegInstantiator * >::iterator it = d_cinst.begin(); it != d_cinst.end(); ++it ){
+      Trace("cbqi-presolve") << "Presolve " << it->first << std::endl;
+      it->second->presolve( it->first );
+    }
+  }
+}
+
diff --git a/src/theory/quantifiers/inst_strategy_cbqi.h b/src/theory/quantifiers/inst_strategy_cbqi.h
new file mode 100644
index 0000000..2cd5f6e
--- /dev/null
+++ b/src/theory/quantifiers/inst_strategy_cbqi.h
@@ -0,0 +1,160 @@
+/*********************                                                        */
+/*! \file inst_strategy_cbqi.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief counterexample-guided quantifier instantiation
+ **/
+
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__INST_STRATEGY_CBQI_H
+#define __CVC4__INST_STRATEGY_CBQI_H
+
+#include "theory/arith/arithvar.h"
+#include "theory/quantifiers/ceg_instantiator.h"
+#include "theory/quantifiers/instantiation_engine.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+
+namespace arith {
+  class TheoryArith;
+}
+
+namespace quantifiers {
+
+class InstStrategyCbqi : public QuantifiersModule {
+  typedef context::CDHashSet<Node, NodeHashFunction> NodeSet;
+  typedef context::CDHashMap< Node, int, NodeHashFunction> NodeIntMap;
+protected:
+  bool d_cbqi_set_quant_inactive;
+  bool d_incomplete_check;
+  /** whether we have added cbqi lemma */
+  NodeSet d_added_cbqi_lemma;
+  /** whether we have added cbqi lemma */
+  NodeSet d_elim_quants;
+  /** parent guards */
+  std::map< Node, std::vector< Node > > d_parent_quant;
+  std::map< Node, std::vector< Node > > d_children_quant;
+  std::map< Node, bool > d_active_quant;
+  /** whether we have instantiated quantified formulas */
+  //NodeSet d_added_inst;
+  /** whether to do cbqi for this quantified formula 0 : no, 2 : yes, 1 : yes but not exclusively, -1 : heuristically */
+  std::map< Node, int > d_do_cbqi;
+  /** register ce lemma */
+  bool registerCbqiLemma( Node q );
+  virtual void registerCounterexampleLemma( Node q, Node lem );
+  /** has added cbqi lemma */
+  bool hasAddedCbqiLemma( Node q ) { return d_added_cbqi_lemma.find( q )!=d_added_cbqi_lemma.end(); }
+  /** helper functions */
+  int hasNonCbqiVariable( Node q );
+  bool hasNonCbqiOperator( Node n, std::map< Node, bool >& visited );
+  /** get next decision request with dependency checking */
+  Node getNextDecisionRequestProc( Node q, std::map< Node, bool >& proc );  
+  /** process functions */
+  virtual void processResetInstantiationRound( Theory::Effort effort ) = 0;
+  virtual void process( Node q, Theory::Effort effort, int e ) = 0;
+protected:
+  //for identification
+  uint64_t d_qid_count;
+  //nested qe map
+  std::map< Node, Node > d_nested_qe;
+  //mark ids on quantifiers 
+  Node getIdMarkedQuantNode( Node n, std::map< Node, Node >& visited );
+  // id to ce quant
+  std::map< Node, Node > d_id_to_ce_quant;
+  std::map< Node, Node > d_ce_quant_to_id;
+  //do nested quantifier elimination recursive
+  Node doNestedQENode( Node q, Node ceq, Node n, std::vector< Node >& inst_terms, bool doVts );
+  Node doNestedQERec( Node q, Node n, std::map< Node, Node >& visited, std::vector< Node >& inst_terms, bool doVts );
+  //elimination information (for delayed elimination)
+  class NestedQEInfo {
+  public:
+    NestedQEInfo() : d_doVts(false){}
+    ~NestedQEInfo(){}
+    Node d_q;
+    std::vector< Node > d_inst_terms;
+    bool d_doVts;
+  };
+  std::map< Node, NestedQEInfo > d_nested_qe_info;
+  NodeIntMap d_nested_qe_waitlist_size;
+  NodeIntMap d_nested_qe_waitlist_proc;
+  std::map< Node, std::vector< Node > > d_nested_qe_waitlist;
+public:
+  //do nested quantifier elimination
+  Node doNestedQE( Node q, std::vector< Node >& inst_terms, Node lem, bool doVts );
+public:
+  InstStrategyCbqi( QuantifiersEngine * qe );
+  ~InstStrategyCbqi() throw();
+  /** whether to do CBQI for quantifier q */
+  bool doCbqi( Node q );
+  /** process functions */
+  bool needsCheck( Theory::Effort e );
+  unsigned needsModel( Theory::Effort e );
+  void reset_round( Theory::Effort e );
+  void check( Theory::Effort e, unsigned quant_e );
+  bool checkComplete();
+  bool checkCompleteFor( Node q );
+  void preRegisterQuantifier( Node q );
+  void registerQuantifier( Node q );
+  /** get next decision request */
+  Node getNextDecisionRequest( unsigned& priority );
+};
+
+//generalized counterexample guided quantifier instantiation
+
+class InstStrategyCegqi;
+
+class CegqiOutputInstStrategy : public CegqiOutput {
+public:
+  CegqiOutputInstStrategy( InstStrategyCegqi * out ) : d_out( out ){}
+  InstStrategyCegqi * d_out;
+  bool doAddInstantiation( std::vector< Node >& subs );
+  bool isEligibleForInstantiation( Node n );
+  bool addLemma( Node lem );
+};
+
+class InstStrategyCegqi : public InstStrategyCbqi {
+protected:
+  CegqiOutputInstStrategy * d_out;
+  std::map< Node, CegInstantiator * > d_cinst;
+  Node d_small_const;
+  Node d_curr_quant;
+  bool d_check_vts_lemma_lc;
+  /** process functions */
+  void processResetInstantiationRound( Theory::Effort effort );
+  void process( Node f, Theory::Effort effort, int e );
+  /** register ce lemma */
+  void registerCounterexampleLemma( Node q, Node lem );
+public:
+  InstStrategyCegqi( QuantifiersEngine * qe );
+  ~InstStrategyCegqi() throw();
+
+  bool doAddInstantiation( std::vector< Node >& subs );
+  bool isEligibleForInstantiation( Node n );
+  bool addLemma( Node lem );
+  /** identify */
+  std::string identify() const { return std::string("Cegqi"); }
+
+  //get instantiator for quantifier
+  CegInstantiator * getInstantiator( Node q );
+  //register quantifier
+  void registerQuantifier( Node q );
+  //presolve
+  void presolve();
+};
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/inst_strategy_e_matching.cpp b/src/theory/quantifiers/inst_strategy_e_matching.cpp
new file mode 100644
index 0000000..f2ed81d
--- /dev/null
+++ b/src/theory/quantifiers/inst_strategy_e_matching.cpp
@@ -0,0 +1,776 @@
+/*********************                                                        */
+/*! \file inst_strategy_e_matching.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of e matching instantiation strategies
+ **/
+
+#include "theory/quantifiers/inst_strategy_e_matching.h"
+#include "theory/quantifiers/inst_match_generator.h"
+#include "theory/quantifiers/relevant_domain.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/theory_engine.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::inst;
+using namespace CVC4::theory::quantifiers;
+
+//priority levels :
+//1 : user patterns (when user-pat!={resort,ignore}), auto-gen patterns (for non-user pattern quantifiers, or when user-pat={resort,ignore})
+//2 : user patterns (when user-pat=resort), auto gen patterns (for user pattern quantifiers when user-pat=use)
+
+// user-pat=interleave alternates between use and resort
+
+struct sortQuantifiersForSymbol {
+  QuantifiersEngine* d_qe;
+  std::map< Node, Node > d_op_map;
+  bool operator() (Node i, Node j) {
+    int nqfsi = d_qe->getQuantifierRelevance()->getNumQuantifiersForSymbol( d_op_map[i] );
+    int nqfsj = d_qe->getQuantifierRelevance()->getNumQuantifiersForSymbol( d_op_map[j] );
+    if( nqfsi<nqfsj ){
+      return true;
+    }else if( nqfsi>nqfsj ){
+      return false;
+    }else{
+      return false;
+    }
+  }
+};
+
+struct sortTriggers {
+  bool operator() (Node i, Node j) {
+    int wi = Trigger::getTriggerWeight( i );
+    int wj = Trigger::getTriggerWeight( j );
+    if( wi==wj ){
+      return i<j;
+    }else{
+      return wi<wj;
+    }
+  }
+};
+
+void InstStrategyUserPatterns::processResetInstantiationRound( Theory::Effort effort ){
+  Trace("inst-alg-debug") << "reset user triggers" << std::endl;
+  //reset triggers
+  for( std::map< Node, std::vector< Trigger* > >::iterator it = d_user_gen.begin(); it != d_user_gen.end(); ++it ){
+    for( unsigned i=0; i<it->second.size(); i++ ){
+      it->second[i]->resetInstantiationRound();
+      it->second[i]->reset( Node::null() );
+    }
+  }
+  Trace("inst-alg-debug") << "done reset user triggers" << std::endl;
+}
+
+int InstStrategyUserPatterns::process( Node f, Theory::Effort effort, int e ){
+  if( e==0 ){
+    return STATUS_UNFINISHED;
+  }else{
+    int peffort = d_quantEngine->getInstUserPatMode()==USER_PAT_MODE_RESORT ? 2 : 1;
+    if( e<peffort ){
+      return STATUS_UNFINISHED;
+    }else if( e==peffort ){
+      d_counter[f]++;
+
+      Trace("inst-alg") << "-> User-provided instantiate " << f << "..." << std::endl;
+      if( d_quantEngine->getInstUserPatMode()==USER_PAT_MODE_RESORT  ){
+        for( unsigned i=0; i<d_user_gen_wait[f].size(); i++ ){
+          Trigger * t = Trigger::mkTrigger( d_quantEngine, f, d_user_gen_wait[f][i], true, Trigger::TR_RETURN_NULL );
+          if( t ){
+            d_user_gen[f].push_back( t );
+          }
+        }
+        d_user_gen_wait[f].clear();
+      }
+
+      for( unsigned i=0; i<d_user_gen[f].size(); i++ ){
+        bool processTrigger = true;
+        if( processTrigger ){
+          Trace("process-trigger") << "  Process (user) ";
+          d_user_gen[f][i]->debugPrint("process-trigger");
+          Trace("process-trigger") << "..." << std::endl;
+          InstMatch baseMatch( f );
+          int numInst = d_user_gen[f][i]->addInstantiations( baseMatch );
+          Trace("process-trigger") << "  Done, numInst = " << numInst << "." << std::endl;
+          d_quantEngine->d_statistics.d_instantiations_user_patterns += numInst;
+          if( d_user_gen[f][i]->isMultiTrigger() ){
+            d_quantEngine->d_statistics.d_multi_trigger_instantiations += numInst;
+          }
+          if( d_quantEngine->inConflict() ){
+            break;
+          }
+        }
+      }
+    }
+  }
+  return STATUS_UNKNOWN;
+}
+
+void InstStrategyUserPatterns::addUserPattern( Node q, Node pat ){
+  Assert( pat.getKind()==INST_PATTERN );
+  //add to generators
+  bool usable = true;
+  std::vector< Node > nodes;
+  for( unsigned i=0; i<pat.getNumChildren(); i++ ){
+    Node pat_use = Trigger::getIsUsableTrigger( pat[i], q );
+    if( pat_use.isNull() ){
+      Trace("trigger-warn") << "User-provided trigger is not usable : " << pat << " because of " << pat[i] << std::endl;
+      usable = false;
+      break;
+    }else{
+      nodes.push_back( pat_use );
+    }
+  }
+  if( usable ){
+    Trace("user-pat") << "Add user pattern: " << pat << " for " << q << std::endl;
+    //check match option
+    if( d_quantEngine->getInstUserPatMode()==USER_PAT_MODE_RESORT ){
+      d_user_gen_wait[q].push_back( nodes );
+    }else{
+      Trigger * t = Trigger::mkTrigger( d_quantEngine, q, nodes, true, Trigger::TR_MAKE_NEW );
+      if( t ){
+        d_user_gen[q].push_back( t );
+      }else{
+        Trace("trigger-warn") << "Failed to construct trigger : " << pat << " due to variable mismatch" << std::endl;
+      }
+    }
+  }
+}
+
+InstStrategyAutoGenTriggers::InstStrategyAutoGenTriggers( QuantifiersEngine* qe ) : InstStrategy( qe ){
+  //how to select trigger terms
+  d_tr_strategy = options::triggerSelMode();
+  //whether to select new triggers during the search
+  if( options::incrementTriggers() ){
+    d_regenerate_frequency = 3;
+    d_regenerate = true;
+  }else{
+    d_regenerate_frequency = 1;
+    d_regenerate = false;
+  }
+}
+
+void InstStrategyAutoGenTriggers::processResetInstantiationRound( Theory::Effort effort ){
+  Trace("inst-alg-debug") << "reset auto-gen triggers" << std::endl;
+  //reset triggers
+  for( unsigned r=0; r<2; r++ ){
+    for( std::map< Node, std::map< Trigger*, bool > >::iterator it = d_auto_gen_trigger[r].begin(); it != d_auto_gen_trigger[r].end(); ++it ){
+      for( std::map< Trigger*, bool >::iterator itt = it->second.begin(); itt != it->second.end(); ++itt ){
+        itt->first->resetInstantiationRound();
+        itt->first->reset( Node::null() );
+      }
+    }
+  }
+  d_processed_trigger.clear();
+  Trace("inst-alg-debug") << "done reset auto-gen triggers" << std::endl;
+}
+
+int InstStrategyAutoGenTriggers::process( Node f, Theory::Effort effort, int e ){
+  UserPatMode upMode = d_quantEngine->getInstUserPatMode();
+  if( hasUserPatterns( f ) && upMode==USER_PAT_MODE_TRUST ){
+    return STATUS_UNKNOWN;
+  }else{
+    int peffort = ( hasUserPatterns( f ) && upMode!=USER_PAT_MODE_IGNORE && upMode!=USER_PAT_MODE_RESORT ) ? 2 : 1;
+    if( e<peffort ){
+      return STATUS_UNFINISHED;
+    }else{
+      Trace("inst-alg") << "-> Auto-gen instantiate " << f << "..." << std::endl;
+      bool gen = false;
+      if( e==peffort ){
+        if( d_counter.find( f )==d_counter.end() ){
+          d_counter[f] = 0;
+          gen = true;
+        }else{
+          d_counter[f]++;
+          gen = d_regenerate && d_counter[f]%d_regenerate_frequency==0;
+        }
+      }else{
+        gen = true;
+      }
+      if( gen ){
+        generateTriggers( f );
+        if( d_counter[f]==0 && d_auto_gen_trigger[0][f].empty() && d_auto_gen_trigger[1][f].empty() && f.getNumChildren()==2 ){
+          Trace("trigger-warn") << "Could not find trigger for " << f << std::endl;
+        }
+      }
+
+      //if( e==4 ){
+      //  d_processed_trigger.clear();
+      //  d_quantEngine->getEqualityQuery()->setLiberal( true );
+      //}
+      if( options::triggerActiveSelMode()!=TRIGGER_ACTIVE_SEL_ALL ){
+        int max_score = -1;
+        Trigger * max_trigger = NULL;
+        for( std::map< Trigger*, bool >::iterator itt = d_auto_gen_trigger[0][f].begin(); itt != d_auto_gen_trigger[0][f].end(); ++itt ){
+          int score = itt->first->getActiveScore();
+          if( options::triggerActiveSelMode()==TRIGGER_ACTIVE_SEL_MIN ){
+            if( score>=0 && ( score<max_score || max_score<0 ) ){
+              max_score = score;
+              max_trigger = itt->first;
+            } 
+          }else{
+            if( score>max_score ){
+              max_score = score;
+              max_trigger = itt->first;
+            }
+          }
+          d_auto_gen_trigger[0][f][itt->first] = false;
+        }
+        if( max_trigger!=NULL ){
+          d_auto_gen_trigger[0][f][max_trigger] = true;
+        }
+      }
+      
+      bool hasInst = false;
+      for( unsigned r=0; r<2; r++ ){
+        for( std::map< Trigger*, bool >::iterator itt = d_auto_gen_trigger[r][f].begin(); itt != d_auto_gen_trigger[r][f].end(); ++itt ){
+          Trigger* tr = itt->first;
+          if( tr ){
+            bool processTrigger = itt->second;
+            if( processTrigger && d_processed_trigger[f].find( tr )==d_processed_trigger[f].end() ){
+              d_processed_trigger[f][tr] = true;
+              Trace("process-trigger") << "  Process ";
+              tr->debugPrint("process-trigger");
+              Trace("process-trigger") << "..." << std::endl;
+              InstMatch baseMatch( f );
+              int numInst = tr->addInstantiations( baseMatch );
+              hasInst = numInst>0 || hasInst;
+              Trace("process-trigger") << "  Done, numInst = " << numInst << "." << std::endl;
+              d_quantEngine->d_statistics.d_instantiations_auto_gen += numInst;
+              if( r==1 ){
+                d_quantEngine->d_statistics.d_multi_trigger_instantiations += numInst;
+              }
+              if( d_quantEngine->inConflict() ){
+                break;
+              }
+            }
+          }
+        }
+        if( d_quantEngine->inConflict() || ( hasInst && options::multiTriggerPriority() ) ){
+          break;
+        }
+      }
+      //if( e==4 ){
+      //  d_quantEngine->getEqualityQuery()->setLiberal( false );
+      //}
+      return STATUS_UNKNOWN;
+    }
+  }
+}
+
+void InstStrategyAutoGenTriggers::generateTriggers( Node f ){
+  Trace("auto-gen-trigger-debug") << "Generate triggers for " << f << ", #var=" << f[0].getNumChildren() << "..." << 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();
+    bool ntrivTriggers = options::relationalTriggers();
+    std::vector< Node > patTermsF;
+    std::map< Node, inst::TriggerTermInfo > tinfo;
+    //well-defined function: can assume LHS is only trigger
+    if( options::quantFunWellDefined() ){
+      Node hd = TermDb::getFunDefHead( f );
+      if( !hd.isNull() ){
+        hd = d_quantEngine->getTermDatabase()->getInstConstantNode( hd, f );
+        patTermsF.push_back( hd );
+        tinfo[hd].init( f, hd );
+      }
+    }
+    //otherwise, use algorithm for collecting pattern terms
+    if( patTermsF.empty() ){
+      Node bd = d_quantEngine->getTermDatabase()->getInstConstantBody( f );
+      Trigger::collectPatTerms( f, bd, patTermsF, d_tr_strategy, d_user_no_gen[f], tinfo, true );
+      if( ntrivTriggers ){
+        sortTriggers st;
+        std::sort( patTermsF.begin(), patTermsF.end(), st );
+      }
+      if( Trace.isOn("auto-gen-trigger-debug") ){
+        Trace("auto-gen-trigger-debug") << "Collected pat terms for " << bd << ", no-patterns : " << d_user_no_gen[f].size() << std::endl;
+        for( unsigned i=0; i<patTermsF.size(); i++ ){
+          Assert( tinfo.find( patTermsF[i] )!=tinfo.end() );
+          Trace("auto-gen-trigger-debug") << "   " << patTermsF[i] << std::endl;
+          Trace("auto-gen-trigger-debug2") << "     info = [" << tinfo[patTermsF[i]].d_reqPol << ", " << tinfo[patTermsF[i]].d_reqPolEq << ", " << tinfo[patTermsF[i]].d_fv.size() << "]" << std::endl;
+        }
+        Trace("auto-gen-trigger-debug") << std::endl;
+      }
+    }
+    //sort into single/multi triggers, calculate which terms should not be considered
+    std::map< Node, bool > vcMap;
+    std::map< Node, bool > rmPatTermsF;
+    int last_weight = -1;
+    for( unsigned i=0; i<patTermsF.size(); i++ ){
+      Assert( patTermsF[i].getKind()!=NOT );
+      bool newVar = false;
+      for( unsigned j=0; j<tinfo[ patTermsF[i] ].d_fv.size(); j++ ){
+        if( vcMap.find( tinfo[ patTermsF[i] ].d_fv[j] )==vcMap.end() ){
+          vcMap[tinfo[ patTermsF[i] ].d_fv[j]] = true;
+          newVar = true;
+        }
+      }
+      int curr_w = Trigger::getTriggerWeight( patTermsF[i] );
+      if( ntrivTriggers && !newVar && last_weight!=-1 && curr_w>last_weight ){
+        Trace("auto-gen-trigger-debug") << "...exclude expendible non-trivial trigger : " << patTermsF[i] << std::endl;
+        rmPatTermsF[patTermsF[i]] = true;
+      }else{
+        last_weight = curr_w;
+      }
+    }
+    d_num_trigger_vars[f] = vcMap.size();
+    if( d_num_trigger_vars[f]>0 && d_num_trigger_vars[f]<f[0].getNumChildren() ){
+      Trace("auto-gen-trigger-partial") << "Quantified formula : " << f << std::endl;
+      Trace("auto-gen-trigger-partial") << "...does not contain all variables in triggers!!!" << std::endl;
+      if( options::partialTriggers() ){
+        std::vector< Node > vcs[2];
+        for( unsigned i=0; i<f[0].getNumChildren(); i++ ){
+          Node ic = d_quantEngine->getTermDatabase()->getInstantiationConstant( f, i );
+          vcs[ vcMap.find( ic )==vcMap.end() ? 0 : 1 ].push_back( f[0][i] );
+        }
+        for( unsigned i=0; i<2; i++ ){
+          d_vc_partition[i][f] = NodeManager::currentNM()->mkNode( BOUND_VAR_LIST, vcs[i] );
+        }
+      }else{
+        return;
+      }
+    }
+    for( unsigned i=0; i<patTermsF.size(); i++ ){
+      Node pat = patTermsF[i];
+      if( rmPatTermsF.find( pat )==rmPatTermsF.end() ){
+        Trace("auto-gen-trigger-debug") << "...processing pattern " << pat << std::endl;
+        Node mpat = pat;
+        //process the pattern: if it has a required polarity, consider it
+        Assert( tinfo.find( pat )!=tinfo.end() );
+        int rpol = tinfo[pat].d_reqPol;
+        Node rpoleq = tinfo[pat].d_reqPolEq;
+        unsigned num_fv = tinfo[pat].d_fv.size();
+        Trace("auto-gen-trigger-debug") << "...required polarity for " << pat << " is " << rpol << ", eq=" << rpoleq << std::endl;
+        if( rpol!=0 ){
+          Assert( rpol==1 || rpol==-1 );
+          if( Trigger::isRelationalTrigger( pat ) ){
+            pat = rpol==-1 ? pat.negate() : pat;
+          }else{
+            Assert( Trigger::isAtomicTrigger( pat ) );
+            if( pat.getType().isBoolean() && rpoleq.isNull() ){
+              if( options::literalMatchMode()==LITERAL_MATCH_USE ){
+                pat = NodeManager::currentNM()->mkNode( EQUAL, pat, NodeManager::currentNM()->mkConst( rpol==-1 ) ).negate();
+              }else if( options::literalMatchMode()!=LITERAL_MATCH_NONE ){
+                pat = NodeManager::currentNM()->mkNode( EQUAL, pat, NodeManager::currentNM()->mkConst( rpol==1 ) );
+              }
+            }else{
+              Assert( !rpoleq.isNull() );
+              if( rpol==-1 ){
+                if( options::literalMatchMode()!=LITERAL_MATCH_NONE ){
+                  //all equivalence classes except rpoleq
+                  pat = NodeManager::currentNM()->mkNode( EQUAL, pat, rpoleq ).negate();
+                }
+              }else if( rpol==1 ){
+                if( options::literalMatchMode()==LITERAL_MATCH_AGG ){
+                  //only equivalence class rpoleq
+                  pat = NodeManager::currentNM()->mkNode( EQUAL, pat, rpoleq );
+                }
+                //all equivalence classes that are not disequal to rpoleq TODO?
+              }
+            }
+          }
+          Trace("auto-gen-trigger-debug") << "...got : " << pat << std::endl;
+        }else{
+          if( Trigger::isRelationalTrigger( pat ) ){
+            //consider both polarities
+            addPatternToPool( f, pat.negate(), num_fv, mpat );
+          }
+        }
+        addPatternToPool( f, pat, num_fv, mpat );
+      }
+    }
+    //tinfo not used below this point
+    d_made_multi_trigger[f] = false;
+    Trace("auto-gen-trigger") << "Single trigger pool for " << f << " : " << std::endl;
+    for( unsigned i=0; i<d_patTerms[0][f].size(); i++ ){
+      Trace("auto-gen-trigger") << "   " << d_patTerms[0][f][i] << std::endl;
+    }
+    if( !d_patTerms[1][f].empty() ){
+      Trace("auto-gen-trigger") << "Multi-trigger term pool for " << f << " : " << std::endl;
+      for( unsigned i=0; i<d_patTerms[1][f].size(); i++ ){
+        Trace("auto-gen-trigger") << "   " << d_patTerms[1][f][i] << std::endl;
+      }
+    }
+  }
+
+  unsigned rmin = d_patTerms[0][f].empty() ? 1 : 0;
+  unsigned rmax = options::multiTriggerWhenSingle() ? 1 : rmin;
+  for( unsigned r=rmin; r<=rmax; r++ ){
+    std::vector< Node > patTerms;
+    for( int i=0; i<(int)d_patTerms[r][f].size(); i++ ){
+      if( r==1 || d_single_trigger_gen.find( d_patTerms[r][f][i] )==d_single_trigger_gen.end() ){
+        patTerms.push_back( d_patTerms[r][f][i] );
+      }
+    }
+    if( !patTerms.empty() ){
+      Trace("auto-gen-trigger") << "Generate trigger for " << f << std::endl;
+      //sort terms based on relevance
+      if( options::relevantTriggers() ){
+        sortQuantifiersForSymbol sqfs;
+        sqfs.d_qe = d_quantEngine;
+        for( unsigned i=0; i<patTerms.size(); i++ ){
+          Assert( d_pat_to_mpat.find( patTerms[i] )!=d_pat_to_mpat.end() );
+          Assert( d_pat_to_mpat[patTerms[i]].hasOperator() );
+          sqfs.d_op_map[ patTerms[i] ] = d_pat_to_mpat[patTerms[i]].getOperator();
+        }        
+        //sort based on # occurrences (this will cause Trigger to select rarer symbols)
+        std::sort( patTerms.begin(), patTerms.end(), sqfs );
+        Debug("relevant-trigger") << "Terms based on relevance: " << std::endl;
+        for( unsigned i=0; i<patTerms.size(); i++ ){
+          Debug("relevant-trigger") << "   " << patTerms[i] << " from " << d_pat_to_mpat[patTerms[i]] << " (";
+          Debug("relevant-trigger") << d_quantEngine->getQuantifierRelevance()->getNumQuantifiersForSymbol( d_pat_to_mpat[patTerms[i]].getOperator() ) << ")" << std::endl;
+        }
+      }
+      //now, generate the trigger...
+      Trigger* tr = NULL;
+      if( d_is_single_trigger[ patTerms[0] ] ){
+        tr = Trigger::mkTrigger( d_quantEngine, f, patTerms[0], false, Trigger::TR_RETURN_NULL, d_num_trigger_vars[f] );
+        d_single_trigger_gen[ patTerms[0] ] = true;
+      }else{
+        //only generate multi trigger if option set, or if no single triggers exist
+        if( !d_patTerms[0][f].empty() ){
+          if( options::multiTriggerWhenSingle() ){
+            Trace("multi-trigger-debug") << "Resort to choosing multi-triggers..." << std::endl;
+          }else{
+            return;
+          }
+        }
+        //if we are re-generating triggers, shuffle based on some method
+        if( d_made_multi_trigger[f] ){
+          std::random_shuffle( patTerms.begin(), patTerms.end() ); //shuffle randomly
+        }else{
+          d_made_multi_trigger[f] = true;
+        }
+        //will possibly want to get an old trigger
+        tr = Trigger::mkTrigger( d_quantEngine, f, patTerms, false, Trigger::TR_GET_OLD, d_num_trigger_vars[f] );
+      }
+      if( tr ){
+        addTrigger( tr, f );
+        //if we are generating additional triggers...
+        if( !tr->isMultiTrigger() ){
+          unsigned index = 0;
+          if( index<patTerms.size() ){
+            //Notice() << "check add additional" << std::endl;
+            //check if similar patterns exist, and if so, add them additionally
+            int nqfs_curr = 0;
+            if( options::relevantTriggers() ){
+              nqfs_curr = d_quantEngine->getQuantifierRelevance()->getNumQuantifiersForSymbol( patTerms[0].getOperator() );
+            }
+            index++;
+            bool success = true;
+            while( success && index<patTerms.size() && d_is_single_trigger[ patTerms[index] ] ){
+              success = false;
+              if( !options::relevantTriggers() ||
+                  d_quantEngine->getQuantifierRelevance()->getNumQuantifiersForSymbol( patTerms[index].getOperator() )<=nqfs_curr ){
+                d_single_trigger_gen[ patTerms[index] ] = true;
+                Trigger* tr2 = Trigger::mkTrigger( d_quantEngine, f, patTerms[index], false, Trigger::TR_RETURN_NULL, d_num_trigger_vars[f] );
+                addTrigger( tr2, f );
+                success = true;
+              }
+              index++;
+            }
+            //Notice() << "done check add additional" << std::endl;
+          }
+        }
+      }
+    }
+  }
+}
+
+void InstStrategyAutoGenTriggers::addPatternToPool( Node q, Node pat, unsigned num_fv, Node mpat ) {
+  d_pat_to_mpat[pat] = mpat;
+  unsigned num_vars = options::partialTriggers() ? d_num_trigger_vars[q] : q[0].getNumChildren();
+  if( num_fv==num_vars && ( options::pureThTriggers() || !Trigger::isPureTheoryTrigger( pat ) ) ){
+    d_patTerms[0][q].push_back( pat );
+    d_is_single_trigger[ pat ] = true;
+  }else{
+    d_patTerms[1][q].push_back( pat );
+    d_is_single_trigger[ pat ] = false;
+  }
+}
+
+
+void InstStrategyAutoGenTriggers::addTrigger( inst::Trigger * tr, Node q ) {
+  if( tr ){
+    if( d_num_trigger_vars[q]<q[0].getNumChildren() ){
+      //partial trigger : generate implication to mark user pattern
+      Node ipl = NodeManager::currentNM()->mkNode( INST_PATTERN_LIST, d_quantEngine->getTermDatabase()->getVariableNode( tr->getInstPattern(), q ) );
+      Node qq = NodeManager::currentNM()->mkNode( FORALL, d_vc_partition[1][q], NodeManager::currentNM()->mkNode( FORALL, d_vc_partition[0][q], q[1] ), ipl );
+      Trace("auto-gen-trigger-partial") << "Make partially specified user pattern: " << std::endl;
+      Trace("auto-gen-trigger-partial") << "  " << qq << std::endl;
+      Node lem = NodeManager::currentNM()->mkNode( OR, q.negate(), qq );
+      d_quantEngine->addLemma( lem );
+    }else{
+      unsigned tindex;
+      if( tr->isMultiTrigger() ){
+        //disable all other multi triggers
+        for( std::map< Trigger*, bool >::iterator it = d_auto_gen_trigger[1][q].begin(); it != d_auto_gen_trigger[1][q].end(); ++it ){
+          d_auto_gen_trigger[1][q][ it->first ] = false;
+        }
+        tindex = 1;
+      }else{
+        tindex = 0;
+      }
+      //making it during an instantiation round, so must reset
+      if( d_auto_gen_trigger[tindex][q].find( tr )==d_auto_gen_trigger[tindex][q].end() ){
+        tr->resetInstantiationRound();
+        tr->reset( Node::null() );
+      }
+      d_auto_gen_trigger[tindex][q][tr] = true;
+    }
+  }
+}
+
+bool InstStrategyAutoGenTriggers::hasUserPatterns( Node q ) {
+  if( q.getNumChildren()==3 ){
+    std::map< Node, bool >::iterator it = d_hasUserPatterns.find( q );
+    if( it==d_hasUserPatterns.end() ){
+      bool hasPat = false;
+      for( unsigned i=0; i<q[2].getNumChildren(); i++ ){
+        if( q[2][i].getKind()==INST_PATTERN ){
+          hasPat = true;
+          break;
+        }
+      }
+      d_hasUserPatterns[q] = hasPat;
+      return hasPat;
+    }else{
+      return it->second;
+    }
+  }else{
+    return false;
+  }
+}
+
+void InstStrategyAutoGenTriggers::addUserNoPattern( Node q, Node pat ) {
+  Assert( pat.getKind()==INST_NO_PATTERN && pat.getNumChildren()==1 );
+  if( std::find( d_user_no_gen[q].begin(), d_user_no_gen[q].end(), pat[0] )==d_user_no_gen[q].end() ){
+    Trace("user-pat") << "Add user no-pattern: " << pat[0] << " for " << q << std::endl;
+    d_user_no_gen[q].push_back( pat[0] );
+  }
+}
+
+/*  TODO?
+bool InstStrategyLocalTheoryExt::isLocalTheoryExt( Node f ) {
+  std::map< Node, bool >::iterator itq = d_quant.find( f );
+  if( itq==d_quant.end() ){
+    //generate triggers
+    Node bd = d_quantEngine->getTermDatabase()->getInstConstantBody( f );
+    std::vector< Node > vars;
+    std::vector< Node > patTerms;
+    bool ret = Trigger::isLocalTheoryExt( bd, vars, patTerms );
+    if( ret ){
+      d_quant[f] = ret;
+      //add all variables to trigger that don't already occur
+      for( unsigned i=0; i<f[0].getNumChildren(); i++ ){
+        Node x = d_quantEngine->getTermDatabase()->getInstantiationConstant( f, i );
+        if( std::find( vars.begin(), vars.end(), x )==vars.end() ){
+          patTerms.push_back( x );
+        }
+      }
+      Trace("local-t-ext") << "Local theory extensions trigger for " << f << " : " << std::endl;
+      for( unsigned i=0; i<patTerms.size(); i++ ){
+        Trace("local-t-ext") << "  " << patTerms[i] << std::endl;
+      }
+      Trace("local-t-ext") << std::endl;
+      Trigger * tr = Trigger::mkTrigger( d_quantEngine, f, patTerms, true, Trigger::TR_GET_OLD );
+      d_lte_trigger[f] = tr;
+    }else{
+      Trace("local-t-ext") << "No local theory extensions trigger for " << f << "." << std::endl;
+      Trace("local-t-ext-warn") << "WARNING: not local theory extensions : " << f << std::endl;
+    }
+    d_quant[f] = ret;
+    return ret;
+  }else{
+    return itq->second;
+  }
+}
+*/
+FullSaturation::FullSaturation( QuantifiersEngine* qe ) : QuantifiersModule( qe ){
+
+}
+
+bool FullSaturation::needsCheck( Theory::Effort e ){
+  if( options::fullSaturateInst() ){
+    if( d_quantEngine->getInstWhenNeedsCheck( e ) ){
+      return true;
+    }
+  }
+  if( options::fullSaturateQuant() ){
+    if( e>=Theory::EFFORT_LAST_CALL ){
+      return true;
+    }
+  }
+  return false;
+}
+
+void FullSaturation::reset_round( Theory::Effort e ) {
+
+}
+
+void FullSaturation::check( Theory::Effort e, unsigned quant_e ) {
+  bool doCheck = false;
+  bool fullEffort = false;
+  if( options::fullSaturateInst() ){
+    //we only add when interleaved with other strategies
+    doCheck = quant_e==QuantifiersEngine::QEFFORT_STANDARD && d_quantEngine->hasAddedLemma();
+  }
+  if( options::fullSaturateQuant() && !doCheck ){
+    doCheck = quant_e==QuantifiersEngine::QEFFORT_LAST_CALL;
+    fullEffort = !d_quantEngine->hasAddedLemma();
+  }
+  if( doCheck ){
+    double clSet = 0;
+    if( Trace.isOn("fs-engine") ){
+      clSet = double(clock())/double(CLOCKS_PER_SEC);
+      Trace("fs-engine") << "---Full Saturation Round, effort = " << e << "---" << std::endl;
+    }
+    int addedLemmas = 0;
+    for( unsigned i=0; i<d_quantEngine->getModel()->getNumAssertedQuantifiers(); i++ ){
+      Node q = d_quantEngine->getModel()->getAssertedQuantifier( i, true );
+      if( d_quantEngine->hasOwnership( q, this ) && d_quantEngine->getModel()->isQuantifierActive( q ) ){
+        if( process( q, fullEffort ) ){
+          //added lemma
+          addedLemmas++;
+          if( d_quantEngine->inConflict() ){
+            break;
+          }
+        }
+      }
+    }
+    if( Trace.isOn("fs-engine") ){
+      Trace("fs-engine") << "Added lemmas = " << addedLemmas  << std::endl;
+      double clSet2 = double(clock())/double(CLOCKS_PER_SEC);
+      Trace("fs-engine") << "Finished instantiation engine, time = " << (clSet2-clSet) << std::endl;
+    }
+  }
+}
+
+bool FullSaturation::process( Node f, bool fullEffort ){
+  //first, try from relevant domain
+  RelevantDomain * rd = d_quantEngine->getRelevantDomain();
+  unsigned rstart = options::fullSaturateQuantRd() ? 0 : 1;
+  unsigned rend = fullEffort ? 1 : rstart;
+  for( unsigned r=rstart; r<=rend; r++ ){
+    if( rd || r>0 ){
+      if( r==0 ){
+        Trace("inst-alg") << "-> Relevant domain instantiate " << f << "..." << std::endl;
+      }else{
+        Trace("inst-alg") << "-> Ground term instantiate " << f << "..." << std::endl;
+      }
+      rd->compute();
+      unsigned final_max_i = 0;
+      std::vector< unsigned > maxs;
+      std::vector< bool > max_zero;
+      bool has_zero = false;
+      for(unsigned i=0; i<f[0].getNumChildren(); i++ ){
+        unsigned ts;
+        if( r==0 ){
+          ts = rd->getRDomain( f, i )->d_terms.size();
+        }else{
+          ts = d_quantEngine->getTermDatabase()->getNumTypeGroundTerms( f[0][i].getType() );
+        }
+        max_zero.push_back( fullEffort && ts==0 );
+        ts = ( fullEffort && ts==0 ) ? 1 : ts;
+        Trace("inst-alg-rd") << "Variable " << i << " has " << ts << " in relevant domain." << std::endl;
+        if( ts==0 ){
+          has_zero = true;
+          break;
+        }else{
+          maxs.push_back( ts );
+          if( ts>final_max_i ){
+            final_max_i = ts;
+          }
+        }
+      }
+      if( !has_zero ){
+        std::vector< TypeNode > ftypes;
+        for( unsigned i=0; i<f[0].getNumChildren(); i++ ){
+          ftypes.push_back( f[0][i].getType() );
+        }
+      
+        Trace("inst-alg-rd") << "Will do " << final_max_i << " stages of instantiation." << std::endl;
+        unsigned max_i = 0;
+        bool success;
+        while( max_i<=final_max_i ){
+          Trace("inst-alg-rd") << "Try stage " << max_i << "..." << std::endl;
+          std::vector< unsigned > childIndex;
+          int index = 0;
+          do {
+            while( index>=0 && index<(int)f[0].getNumChildren() ){
+              if( index==(int)childIndex.size() ){
+                childIndex.push_back( -1 );
+              }else{
+                Assert( index==(int)(childIndex.size())-1 );
+                unsigned nv = childIndex[index]+1;
+                if( options::cbqi() && r==1 && !max_zero[index] ){
+                  //skip inst constant nodes
+                  while( nv<maxs[index] && nv<=max_i &&
+                          quantifiers::TermDb::hasInstConstAttr( d_quantEngine->getTermDatabase()->getTypeGroundTerm( ftypes[index], nv ) ) ){
+                    nv++;
+                  }
+                }
+                if( nv<maxs[index] && nv<=max_i ){
+                  childIndex[index] = nv;
+                  index++;
+                }else{
+                  childIndex.pop_back();
+                  index--;
+                }
+              }
+            }
+            success = index>=0;
+            if( success ){
+              Trace("inst-alg-rd") << "Try instantiation { ";
+              for( unsigned j=0; j<childIndex.size(); j++ ){
+                Trace("inst-alg-rd") << childIndex[j] << " ";
+              }
+              Trace("inst-alg-rd") << "}" << std::endl;
+              //try instantiation
+              std::vector< Node > terms;
+              for( unsigned i=0; i<f[0].getNumChildren(); i++ ){
+                if( max_zero[i] ){
+                  //no terms available, will report incomplete instantiation
+                  terms.push_back( Node::null() );
+                  Trace("inst-alg-rd") << "  null" << std::endl;
+                }else if( r==0 ){
+                  terms.push_back( rd->getRDomain( f, i )->d_terms[childIndex[i]] );
+                  Trace("inst-alg-rd") << "  " << rd->getRDomain( f, i )->d_terms[childIndex[i]] << std::endl;
+                }else{
+                  terms.push_back( d_quantEngine->getTermDatabase()->getTypeGroundTerm( ftypes[i], childIndex[i] ) );
+                  Trace("inst-alg-rd") << "  " << d_quantEngine->getTermDatabase()->getTypeGroundTerm( ftypes[i], childIndex[i] ) << std::endl;
+                }
+              }
+              if( d_quantEngine->addInstantiation( f, terms ) ){
+                Trace("inst-alg-rd") << "Success!" << std::endl;
+                ++(d_quantEngine->d_statistics.d_instantiations_guess);
+                return true;
+              }else{
+                index--;
+              }
+            }
+          }while( success );
+          max_i++;
+        }
+      }
+    }
+  }
+  //term enumerator?
+  return false;
+}
+
+void FullSaturation::registerQuantifier( Node q ) {
+
+}
diff --git a/src/theory/quantifiers/inst_strategy_e_matching.h b/src/theory/quantifiers/inst_strategy_e_matching.h
new file mode 100644
index 0000000..e6d9932
--- /dev/null
+++ b/src/theory/quantifiers/inst_strategy_e_matching.h
@@ -0,0 +1,136 @@
+/*********************                                                        */
+/*! \file inst_strategy_e_matching.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief E matching instantiation strategies
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__INST_STRATEGY_E_MATCHING_H
+#define __CVC4__INST_STRATEGY_E_MATCHING_H
+
+#include "context/context.h"
+#include "context/context_mm.h"
+#include "theory/quantifiers/instantiation_engine.h"
+#include "theory/quantifiers/trigger.h"
+#include "theory/quantifiers_engine.h"
+#include "util/statistics_registry.h"
+#include "options/quantifiers_options.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+//instantiation strategies
+
+class InstStrategyUserPatterns : public InstStrategy{
+private:
+  /** explicitly provided patterns */
+  std::map< Node, std::vector< inst::Trigger* > > d_user_gen;
+  /** waiting to be generated patterns */
+  std::map< Node, std::vector< std::vector< Node > > > d_user_gen_wait;
+  /** counter for quantifiers */
+  std::map< Node, int > d_counter;
+  /** process functions */
+  void processResetInstantiationRound( Theory::Effort effort );
+  int process( Node f, Theory::Effort effort, int e );
+public:
+  InstStrategyUserPatterns( QuantifiersEngine* ie ) :
+      InstStrategy( ie ){}
+  ~InstStrategyUserPatterns(){}
+public:
+  /** add pattern */
+  void addUserPattern( Node q, Node pat );
+  /** get num patterns */
+  int getNumUserGenerators( Node q ) { return (int)d_user_gen[q].size(); }
+  /** get user pattern */
+  inst::Trigger* getUserGenerator( Node q, int i ) { return d_user_gen[q][ i ]; }
+  /** identify */
+  std::string identify() const { return std::string("UserPatterns"); }
+};/* class InstStrategyUserPatterns */
+
+class InstStrategyAutoGenTriggers : public InstStrategy {
+public:
+  enum {
+    RELEVANCE_NONE,
+    RELEVANCE_DEFAULT,
+  };
+private:
+  /** trigger generation strategy */
+  TriggerSelMode d_tr_strategy;
+  /** regeneration */
+  bool d_regenerate;
+  int d_regenerate_frequency;
+  /** (single,multi) triggers for each quantifier */
+  std::map< Node, std::map< inst::Trigger*, bool > > d_auto_gen_trigger[2];
+  std::map< Node, int > d_counter;
+  /** single, multi triggers for each quantifier */
+  std::map< Node, std::vector< Node > > d_patTerms[2];
+  std::map< Node, std::map< Node, bool > > d_patReqPol;
+  /** information about triggers */
+  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;
+  //instantiation no patterns
+  std::map< Node, std::vector< Node > > d_user_no_gen;
+  // number of trigger variables per quantifier
+  std::map< Node, unsigned > d_num_trigger_vars;
+  std::map< Node, Node > d_vc_partition[2];
+  std::map< Node, Node > d_pat_to_mpat;
+private:
+  /** process functions */
+  void processResetInstantiationRound( Theory::Effort effort );
+  int process( Node q, Theory::Effort effort, int e );
+  /** generate triggers */
+  void generateTriggers( Node q );
+  void addPatternToPool( Node q, Node pat, unsigned num_fv, Node mpat );
+  void addTrigger( inst::Trigger * tr, Node f );
+  /** has user patterns */
+  bool hasUserPatterns( Node q );
+  /** has user patterns */
+  std::map< Node, bool > d_hasUserPatterns;
+public:
+  InstStrategyAutoGenTriggers( QuantifiersEngine* qe );
+  ~InstStrategyAutoGenTriggers(){}
+public:
+  /** get auto-generated trigger */
+  inst::Trigger* getAutoGenTrigger( Node q );
+  /** identify */
+  std::string identify() const { return std::string("AutoGenTriggers"); }
+  /** add pattern */
+  void addUserNoPattern( Node q, Node pat );
+};/* class InstStrategyAutoGenTriggers */
+
+class FullSaturation : public QuantifiersModule {
+private:
+  /** guessed instantiations */
+  std::map< Node, bool > d_guessed;
+  /** process functions */
+  bool process( Node q, bool fullEffort );
+public:
+  FullSaturation( QuantifiersEngine* qe );
+  ~FullSaturation(){}
+  bool needsCheck( Theory::Effort e );
+  void reset_round( Theory::Effort e );
+  void check( Theory::Effort e, unsigned quant_e );
+  void registerQuantifier( Node q );
+  /** identify */
+  std::string identify() const { return std::string("FullSaturation"); }
+};/* class FullSaturation */
+
+
+}
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif
diff --git a/src/theory/quantifiers/instantiation_engine.cpp b/src/theory/quantifiers/instantiation_engine.cpp
new file mode 100644
index 0000000..afeed1e
--- /dev/null
+++ b/src/theory/quantifiers/instantiation_engine.cpp
@@ -0,0 +1,207 @@
+/*********************                                                        */
+/*! \file instantiation_engine.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of instantiation engine class
+ **/
+
+#include "theory/quantifiers/instantiation_engine.h"
+
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/inst_strategy_e_matching.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/trigger.h"
+#include "theory/theory_engine.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+using namespace CVC4::theory::inst;
+
+InstantiationEngine::InstantiationEngine( QuantifiersEngine* qe ) :
+QuantifiersModule( qe ){
+  if( options::eMatching() ){
+    //these are the instantiation strategies for E-matching
+    //user-provided patterns
+    if( options::userPatternsQuant()!=USER_PAT_MODE_IGNORE ){
+      d_isup = new InstStrategyUserPatterns( d_quantEngine );
+      d_instStrategies.push_back( d_isup );
+    }
+
+    //auto-generated patterns
+    d_i_ag = new InstStrategyAutoGenTriggers( d_quantEngine );
+    d_instStrategies.push_back( d_i_ag );
+  }else{
+    d_isup = NULL;
+    d_i_ag = NULL;
+  }
+}
+
+InstantiationEngine::~InstantiationEngine() {
+  delete d_i_ag;
+  delete d_isup;
+}
+
+
+void InstantiationEngine::presolve() {
+  for( unsigned i=0; i<d_instStrategies.size(); ++i ){
+    d_instStrategies[i]->presolve();
+  }
+}
+
+void InstantiationEngine::doInstantiationRound( Theory::Effort effort ){
+  unsigned lastWaiting = d_quantEngine->getNumLemmasWaiting();
+  //iterate over an internal effort level e
+  int e = 0;
+  int eLimit = effort==Theory::EFFORT_LAST_CALL ? 10 : 2;
+  bool finished = false;
+  //while unfinished, try effort level=0,1,2....
+  while( !finished && e<=eLimit ){
+    Debug("inst-engine") << "IE: Prepare instantiation (" << e << ")." << std::endl;
+    finished = true;
+    //instantiate each quantifier
+    for( unsigned i=0; i<d_quants.size(); i++ ){
+      Node q = d_quants[i];
+      Debug("inst-engine-debug") << "IE: Instantiate " << q << "..." << std::endl;
+      //int e_use = d_quantEngine->getRelevance( q )==-1 ? e - 1 : e;
+      int e_use = e;
+      if( e_use>=0 ){
+        Trace("inst-engine-debug") << "inst-engine : " << q << std::endl;
+        //check each instantiation strategy
+        for( unsigned j=0; j<d_instStrategies.size(); j++ ){
+          InstStrategy* is = d_instStrategies[j];
+          Trace("inst-engine-debug") << "Do " << is->identify() << " " << e_use << std::endl;
+          int quantStatus = is->process( q, effort, e_use );
+          Trace("inst-engine-debug") << " -> status is " << quantStatus << ", conflict=" << d_quantEngine->inConflict() << std::endl;
+          if( d_quantEngine->inConflict() ){
+            return;
+          }else if( quantStatus==InstStrategy::STATUS_UNFINISHED ){
+            finished = false;
+          }
+        }
+      }
+    }
+    //do not consider another level if already added lemma at this level
+    if( d_quantEngine->getNumLemmasWaiting()>lastWaiting ){
+      finished = true;
+    }
+    e++;
+  }
+}
+
+bool InstantiationEngine::needsCheck( Theory::Effort e ){
+  return d_quantEngine->getInstWhenNeedsCheck( e );
+}
+
+void InstantiationEngine::reset_round( Theory::Effort e ){
+  //if not, proceed to instantiation round
+  //reset the instantiation strategies
+  for( unsigned i=0; i<d_instStrategies.size(); ++i ){
+    InstStrategy* is = d_instStrategies[i];
+    is->processResetInstantiationRound( e );
+  }
+}
+
+void InstantiationEngine::check( Theory::Effort e, unsigned quant_e ){
+  CodeTimer codeTimer(d_quantEngine->d_statistics.d_ematching_time);
+  if( quant_e==QuantifiersEngine::QEFFORT_STANDARD ){
+    double clSet = 0;
+    if( Trace.isOn("inst-engine") ){
+      clSet = double(clock())/double(CLOCKS_PER_SEC);
+      Trace("inst-engine") << "---Instantiation Engine Round, effort = " << e << "---" << std::endl;
+    }
+    //collect all active quantified formulas belonging to this
+    bool quantActive = false;
+    d_quants.clear();
+    for( unsigned i=0; i<d_quantEngine->getModel()->getNumAssertedQuantifiers(); i++ ){
+      Node q = d_quantEngine->getModel()->getAssertedQuantifier( i, true );
+      if( d_quantEngine->hasOwnership( q, this ) && d_quantEngine->getModel()->isQuantifierActive( q ) ){
+        quantActive = true;
+        d_quants.push_back( q );
+      }
+    }
+    Trace("inst-engine-debug") << "InstEngine: check: # asserted quantifiers " << d_quants.size() << "/";
+    Trace("inst-engine-debug") << d_quantEngine->getModel()->getNumAssertedQuantifiers() << " " << quantActive << std::endl;
+    if( quantActive ){
+      unsigned lastWaiting = d_quantEngine->getNumLemmasWaiting();
+      doInstantiationRound( e );
+      if( d_quantEngine->inConflict() ){
+        Assert( d_quantEngine->getNumLemmasWaiting()>lastWaiting );
+        Trace("inst-engine") << "Conflict, added lemmas = " << (d_quantEngine->getNumLemmasWaiting()-lastWaiting) << std::endl;
+      }else if( d_quantEngine->hasAddedLemma() ){
+        Trace("inst-engine") << "Added lemmas = " << (d_quantEngine->getNumLemmasWaiting()-lastWaiting)  << std::endl;
+      }
+    }else{
+      d_quants.clear();
+    }
+    if( Trace.isOn("inst-engine") ){
+      double clSet2 = double(clock())/double(CLOCKS_PER_SEC);
+      Trace("inst-engine") << "Finished instantiation engine, time = " << (clSet2-clSet) << std::endl;
+    }
+  }
+}
+
+bool InstantiationEngine::checkCompleteFor( Node q ) {
+  //TODO?
+  return false;
+}
+
+void InstantiationEngine::preRegisterQuantifier( Node q ) {
+  if( options::strictTriggers() && q.getNumChildren()==3 ){
+    //if strict triggers, take ownership of this quantified formula
+    bool hasPat = false;
+    for( unsigned i=0; i<q[2].getNumChildren(); i++ ){
+      if( q[2][i].getKind()==INST_PATTERN || q[2][i].getKind()==INST_NO_PATTERN  ){
+        hasPat = true;
+        break;
+      }
+    }
+    if( hasPat ){
+      d_quantEngine->setOwner( q, this, 1 );
+    }
+  }
+}
+
+void InstantiationEngine::registerQuantifier( Node f ){
+  if( d_quantEngine->hasOwnership( f, this ) ){
+    //for( unsigned i=0; i<d_instStrategies.size(); ++i ){
+    //  d_instStrategies[i]->registerQuantifier( f );
+    //}
+    //take into account user patterns
+    if( f.getNumChildren()==3 ){
+      Node subsPat = d_quantEngine->getTermDatabase()->getInstConstantNode( f[2], f );
+      //add patterns
+      for( int i=0; i<(int)subsPat.getNumChildren(); i++ ){
+        //Notice() << "Add pattern " << subsPat[i] << " for " << f << std::endl;
+        if( subsPat[i].getKind()==INST_PATTERN ){
+          addUserPattern( f, subsPat[i] );
+        }else if( subsPat[i].getKind()==INST_NO_PATTERN ){
+          addUserNoPattern( f, subsPat[i] );
+        }
+      }
+    }
+  }
+}
+
+void InstantiationEngine::addUserPattern( Node q, Node pat ){
+  if( d_isup ){
+    d_isup->addUserPattern( q, pat );
+  }
+}
+
+void InstantiationEngine::addUserNoPattern( Node q, Node pat ){
+  if( d_i_ag ){
+    d_i_ag->addUserNoPattern( q, pat );
+  }
+}
diff --git a/src/theory/quantifiers/instantiation_engine.h b/src/theory/quantifiers/instantiation_engine.h
new file mode 100644
index 0000000..79963cb
--- /dev/null
+++ b/src/theory/quantifiers/instantiation_engine.h
@@ -0,0 +1,97 @@
+/*********************                                                        */
+/*! \file instantiation_engine.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Instantiation Engine classes
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANTIFIERS__INSTANTIATION_ENGINE_H
+#define __CVC4__THEORY__QUANTIFIERS__INSTANTIATION_ENGINE_H
+
+#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/theory_quantifiers.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+class InstStrategyUserPatterns;
+class InstStrategyAutoGenTriggers;
+class InstStrategyFreeVariable;
+
+/** instantiation strategy class */
+class InstStrategy {
+public:
+  enum Status {
+    STATUS_UNFINISHED,
+    STATUS_UNKNOWN,
+  };/* enum Status */
+protected:
+  /** reference to the instantiation engine */
+  QuantifiersEngine* d_quantEngine;
+public:
+  InstStrategy( QuantifiersEngine* qe ) : d_quantEngine( qe ){}
+  virtual ~InstStrategy(){}
+  /** presolve */
+  virtual void presolve() {}
+  /** reset instantiation */
+  virtual void processResetInstantiationRound( Theory::Effort effort ) = 0;
+  /** process method, returns a status */
+  virtual int process( Node f, Theory::Effort effort, int e ) = 0;
+  /** identify */
+  virtual std::string identify() const { return std::string("Unknown"); }
+  /** register quantifier */
+  //virtual void registerQuantifier( Node q ) {}
+};/* class InstStrategy */
+
+class InstantiationEngine : public QuantifiersModule
+{
+private:
+  /** instantiation strategies */
+  std::vector< InstStrategy* > d_instStrategies;
+  /** user-pattern instantiation strategy */
+  InstStrategyUserPatterns* d_isup;
+  /** auto gen triggers; only kept for destructor cleanup */
+  InstStrategyAutoGenTriggers* d_i_ag;
+private:
+  typedef context::CDHashMap< Node, bool, NodeHashFunction > BoolMap;
+  /** current processing quantified formulas */
+  std::vector< Node > d_quants;
+private:
+  /** is the engine incomplete for this quantifier */
+  bool isIncomplete( Node q );
+  /** do instantiation round */
+  void doInstantiationRound( Theory::Effort effort );
+public:
+  InstantiationEngine( QuantifiersEngine* qe );
+  ~InstantiationEngine();
+  void presolve();
+  bool needsCheck( Theory::Effort e );
+  void reset_round( Theory::Effort e );
+  void check( Theory::Effort e, unsigned quant_e );
+  bool checkCompleteFor( Node q );
+  void preRegisterQuantifier( Node q );
+  void registerQuantifier( Node q );
+  Node explain(TNode n){ return Node::null(); }
+  /** add user pattern */
+  void addUserPattern( Node q, Node pat );
+  void addUserNoPattern( Node q, Node pat );
+public:
+  /** Identify this module */
+  std::string identify() const { return "InstEngine"; }
+};/* class InstantiationEngine */
+
+}/* CVC4::theory::quantifiers namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__QUANTIFIERS__INSTANTIATION_ENGINE_H */
diff --git a/src/theory/quantifiers/kinds b/src/theory/quantifiers/kinds
new file mode 100644
index 0000000..b03c4ad
--- /dev/null
+++ b/src/theory/quantifiers/kinds
@@ -0,0 +1,79 @@
+# kinds                                                               -*- sh -*-
+#
+# For documentation on this file format, please refer to
+# src/theory/builtin/kinds.
+#
+
+theory THEORY_QUANTIFIERS ::CVC4::theory::quantifiers::TheoryQuantifiers "theory/quantifiers/theory_quantifiers.h"
+typechecker "theory/quantifiers/theory_quantifiers_type_rules.h"
+
+properties check presolve getNextDecisionRequest
+
+rewriter ::CVC4::theory::quantifiers::QuantifiersRewriter "theory/quantifiers/quantifiers_rewriter.h"
+
+operator FORALL 2:3 "universally quantified formula; first parameter is an BOUND_VAR_LIST, second is quantifier body, and an optional third parameter is an INST_PATTERN_LIST"
+
+operator EXISTS 2:3 "existentially quantified formula; first parameter is an BOUND_VAR_LIST, second is quantifier body, and an optional third parameter is an INST_PATTERN_LIST"
+
+variable INST_CONSTANT "instantiation constant"
+
+sort BOUND_VAR_LIST_TYPE \
+    Cardinality::INTEGERS \
+    not-well-founded \
+    "the type of bound variable lists"
+
+operator BOUND_VAR_LIST 1: "a list of bound variables (used to bind variables under a quantifier)"
+
+sort INST_PATTERN_TYPE \
+    Cardinality::INTEGERS \
+    not-well-founded \
+    "instantiation pattern type"
+
+# Instantiation pattern, also called trigger.
+# This node is used for specifying hints for quantifier instantiation.
+# An instantiation pattern may have more than 1 child, in which case it specifies a multi-trigger.
+operator INST_PATTERN 1: "instantiation pattern"
+operator INST_NO_PATTERN 1 "instantiation no-pattern"
+operator INST_ATTRIBUTE 1 "instantiation attribute"
+
+sort INST_PATTERN_LIST_TYPE \
+    Cardinality::INTEGERS \
+    not-well-founded \
+    "the type of instantiation pattern lists"
+
+# a list of instantiation patterns
+operator INST_PATTERN_LIST 1: "a list of instantiation patterns"
+
+operator INST_CLOSURE 1 "predicate for specifying term in instantiation closure."
+
+typerule FORALL ::CVC4::theory::quantifiers::QuantifierForallTypeRule 
+typerule EXISTS ::CVC4::theory::quantifiers::QuantifierExistsTypeRule 
+typerule BOUND_VAR_LIST ::CVC4::theory::quantifiers::QuantifierBoundVarListTypeRule 
+typerule INST_PATTERN ::CVC4::theory::quantifiers::QuantifierInstPatternTypeRule 
+typerule INST_NO_PATTERN ::CVC4::theory::quantifiers::QuantifierInstNoPatternTypeRule 
+typerule INST_ATTRIBUTE ::CVC4::theory::quantifiers::QuantifierInstAttributeTypeRule 
+typerule INST_PATTERN_LIST ::CVC4::theory::quantifiers::QuantifierInstPatternListTypeRule 
+typerule INST_CLOSURE ::CVC4::theory::quantifiers::QuantifierInstClosureTypeRule 
+
+# for rewrite rules
+# types...
+sort RRHB_TYPE \
+    Cardinality::INTEGERS \
+    not-well-founded \
+    "head and body of the rule type (for rewrite-rules theory)"
+
+# operators...
+
+# variables, guards, RR_REWRITE/REDUCTION_RULE/DEDUCTION_RULE
+operator REWRITE_RULE 3 "general rewrite rule (for rewrite-rules theory)"
+#HEAD/BODY/TRIGGER
+operator RR_REWRITE 2:3 "actual rewrite rule (for rewrite-rules theory)"
+operator RR_REDUCTION 2:3 "actual reduction rule (for rewrite-rules theory)"
+operator RR_DEDUCTION 2:3 "actual deduction rule (for rewrite-rules theory)"
+
+typerule REWRITE_RULE ::CVC4::theory::quantifiers::RewriteRuleTypeRule
+typerule RR_REWRITE   ::CVC4::theory::quantifiers::RRRewriteTypeRule
+typerule RR_REDUCTION ::CVC4::theory::quantifiers::RRRedDedTypeRule
+typerule RR_DEDUCTION ::CVC4::theory::quantifiers::RRRedDedTypeRule
+
+endtheory
diff --git a/src/theory/quantifiers/local_theory_ext.cpp b/src/theory/quantifiers/local_theory_ext.cpp
new file mode 100644
index 0000000..ada28c0
--- /dev/null
+++ b/src/theory/quantifiers/local_theory_ext.cpp
@@ -0,0 +1,248 @@
+/*********************                                                        */
+/*! \file local_theory_ext.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of local theory ext utilities
+ **/
+
+#include "theory/quantifiers/local_theory_ext.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/first_order_model.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+
+
+LtePartialInst::LtePartialInst( QuantifiersEngine * qe, context::Context* c ) : 
+QuantifiersModule( qe ), d_wasInvoked( false ), d_needsCheck( false ){
+
+}
+
+/** add quantifier */
+void LtePartialInst::preRegisterQuantifier( Node q ) {
+  if( !q.getAttribute(LtePartialInstAttribute()) ){
+    if( d_do_inst.find( q )!=d_do_inst.end() ){
+      if( d_do_inst[q] ){
+        d_lte_asserts.push_back( q );
+        d_quantEngine->setOwner( q, this );
+      }
+    }else{
+      d_vars[q].clear();
+      d_pat_var_order[q].clear();
+      //check if this quantified formula is eligible for partial instantiation
+      std::map< Node, bool > vars;
+      for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
+        vars[q[0][i]] = false;
+      }
+      getEligibleInstVars( q[1], vars );
+
+      //instantiate only if we would force ground instances
+      std::map< Node, int > var_order;
+      bool doInst = true;
+      for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
+        if( vars[q[0][i]] ){
+          d_vars[q].push_back( q[0][i] );
+          var_order[q[0][i]] = i;
+        }else{
+          Trace("lte-partial-inst-debug") << "...do not consider, variable " << q[0][i] << " was not found in correct position in body." << std::endl;
+          doInst = false;
+          break;
+        }
+      }
+      if( doInst ){
+        //also needs patterns
+        if( q.getNumChildren()==3 && q[2].getNumChildren()==1 ){
+          for( unsigned i=0; i<q[2][0].getNumChildren(); i++ ){
+            Node pat = q[2][0][i];
+            if( pat.getKind()==APPLY_UF ){
+              for( unsigned j=0; j<pat.getNumChildren(); j++ ){
+                if( !addVariableToPatternList( pat[j], d_pat_var_order[q], var_order ) ){
+                  doInst = false;
+                }
+              }
+            }else if( !addVariableToPatternList( pat, d_pat_var_order[q], var_order ) ){
+              doInst = false;
+            }
+            if( !doInst ){
+              Trace("lte-partial-inst-debug") << "...do not consider, cannot resolve pattern : " << pat << std::endl;
+              break;
+            }
+          }
+        }else{
+          Trace("lte-partial-inst-debug") << "...do not consider (must have exactly one pattern)." << std::endl;
+        }
+      }
+      
+      
+      Trace("lte-partial-inst") << "LTE: ...will " << ( doInst ? "" : "not ") << "instantiate " << q << std::endl;
+      d_do_inst[q] = doInst;
+      if( doInst ){
+        d_lte_asserts.push_back( q );
+        d_needsCheck = true;
+        d_quantEngine->setOwner( q, this );
+      }
+    }
+  }
+}
+
+bool LtePartialInst::addVariableToPatternList( Node v, std::vector< int >& pat_var_order, std::map< Node, int >& var_order ) {
+  std::map< Node, int >::iterator it = var_order.find( v );
+  if( it==var_order.end() ){
+    return false;
+  }else if( std::find( pat_var_order.begin(), pat_var_order.end(), it->second )!=pat_var_order.end() ){
+    return false;
+  }else{
+    pat_var_order.push_back( it->second );
+    return true;
+  }
+}
+
+void LtePartialInst::getEligibleInstVars( Node n, std::map< Node, bool >& vars ) {
+  if( n.getKind()==APPLY_UF && !n.getType().isBoolean() ){
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      if( vars.find( n[i] )!=vars.end() ){
+        vars[n[i]] = true;
+      }
+    }
+  }
+  for( unsigned i=0; i<n.getNumChildren(); i++ ){
+    getEligibleInstVars( n[i], vars );
+  }
+}
+
+/* whether this module needs to check this round */
+bool LtePartialInst::needsCheck( Theory::Effort e ) {
+  return e>=Theory::EFFORT_FULL && d_needsCheck;
+}
+/* Call during quantifier engine's check */
+void LtePartialInst::check( Theory::Effort e, unsigned quant_e ) {
+  //flush lemmas ASAP (they are a reduction)
+  if( quant_e==QuantifiersEngine::QEFFORT_CONFLICT && d_needsCheck ){
+    std::vector< Node > lemmas;
+    getInstantiations( lemmas );
+    //add lemmas to quantifiers engine
+    for( unsigned i=0; i<lemmas.size(); i++ ){
+      d_quantEngine->addLemma( lemmas[i], false );
+    }
+    d_needsCheck = false;
+  }
+}
+
+
+void LtePartialInst::reset() {
+  d_reps.clear();
+  eq::EqualityEngine* ee = d_quantEngine->getMasterEqualityEngine();
+  eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( ee );
+  while( !eqcs_i.isFinished() ){
+    TNode r = (*eqcs_i);
+    TypeNode tn = r.getType();
+    d_reps[tn].push_back( r );
+    ++eqcs_i;
+  }
+}
+
+
+/** get instantiations */
+void LtePartialInst::getInstantiations( std::vector< Node >& lemmas ) {
+  Trace("lte-partial-inst") << "LTE : get instantiations, # quant = " << d_lte_asserts.size() << std::endl;
+  reset();
+  for( unsigned i=0; i<d_lte_asserts.size(); i++ ){
+    Node q = d_lte_asserts[i];
+    Assert( d_do_inst.find( q )!=d_do_inst.end() && d_do_inst[q] );
+    if( d_inst.find( q )==d_inst.end() ){
+      Trace("lte-partial-inst") << "LTE : Get partial instantiations for " << q << "..." << std::endl;
+      d_inst[q] = true;
+      Assert( !d_vars[q].empty() );
+      //make bound list
+      Node bvl;
+      std::vector< Node > bvs;
+      for( unsigned j=0; j<q[0].getNumChildren(); j++ ){
+        if( std::find( d_vars[q].begin(), d_vars[q].end(), q[0][j] )==d_vars[q].end() ){
+          bvs.push_back( q[0][j] );
+        }
+      }
+      if( !bvs.empty() ){
+        bvl = NodeManager::currentNM()->mkNode( BOUND_VAR_LIST, bvs );
+      }
+      std::vector< Node > conj;
+      std::vector< Node > terms;
+      std::vector< TypeNode > types;
+      for( unsigned j=0; j<d_vars[q].size(); j++ ){
+        types.push_back( d_vars[q][j].getType() );
+        terms.push_back( Node::null() );
+      }
+
+      getPartialInstantiations( conj, q, bvl, d_vars[q], terms, types, NULL, 0, 0, 0 );
+      Assert( !conj.empty() );
+      lemmas.push_back( NodeManager::currentNM()->mkNode( OR, q.negate(), conj.size()==1 ? conj[0] : NodeManager::currentNM()->mkNode( AND, conj ) ) );
+      d_wasInvoked = true;
+    }
+  }
+}
+
+void LtePartialInst::getPartialInstantiations( std::vector< Node >& conj, Node q, Node bvl,
+                                               std::vector< Node >& vars, std::vector< Node >& terms, std::vector< TypeNode >& types, TermArgTrie * curr,
+                                               unsigned pindex, unsigned paindex, unsigned iindex ){
+  if( iindex==vars.size() ){
+    Node body = q[1].substitute( vars.begin(), vars.end(), terms.begin(), terms.end() );
+    if( bvl.isNull() ){
+      conj.push_back( body );
+      Trace("lte-partial-inst") << " - ground conjunct : " << body << std::endl;
+    }else{
+      Node nq;
+      if( q.getNumChildren()==3 ){
+        Node ipl = q[2].substitute( vars.begin(), vars.end(), terms.begin(), terms.end() );
+        nq = NodeManager::currentNM()->mkNode( FORALL, bvl, body, ipl );
+      }else{
+        nq = NodeManager::currentNM()->mkNode( FORALL, bvl, body );
+      }
+      Trace("lte-partial-inst") << " - quantified conjunct : " << nq << std::endl;
+      LtePartialInstAttribute ltpia;
+      nq.setAttribute(ltpia,true);
+      conj.push_back( nq );
+    }
+  }else{
+    Assert( pindex<q[2][0].getNumChildren() );
+    Node pat = q[2][0][pindex];
+    Assert( pat.getNumChildren()==0 || paindex<=pat.getNumChildren() );
+    if( pat.getKind()==APPLY_UF ){
+      Assert( paindex<=pat.getNumChildren() );
+      if( paindex==pat.getNumChildren() ){
+        getPartialInstantiations( conj, q, bvl, vars, terms, types, NULL, pindex+1, 0, iindex );
+      }else{
+        if( !curr ){
+          Assert( paindex==0 );
+          //start traversing term index for the operator
+          curr = d_quantEngine->getTermDatabase()->getTermArgTrie( pat.getOperator() );
+        }
+        for( std::map< TNode, TermArgTrie >::iterator it = curr->d_data.begin(); it != curr->d_data.end(); ++it ){
+          terms[d_pat_var_order[q][iindex]] = it->first;
+          getPartialInstantiations( conj, q, bvl, vars, terms, types, &it->second, pindex, paindex+1, iindex+1 );
+        }
+      }
+    }else{
+      std::map< TypeNode, std::vector< Node > >::iterator it = d_reps.find( types[iindex] );
+      if( it!=d_reps.end() ){
+        Trace("lte-partial-inst-debug") << it->second.size() << " reps of type " << types[iindex] << std::endl;
+        for( unsigned i=0; i<it->second.size(); i++ ){
+          terms[d_pat_var_order[q][iindex]] = it->second[i];
+          getPartialInstantiations( conj, q, bvl, vars, terms, types, NULL, pindex+1, 0, iindex+1 );
+        }
+      }else{
+        Trace("lte-partial-inst-debug") << "No reps found of type " << types[iindex] << std::endl;
+      }
+    }
+  }
+}
diff --git a/src/theory/quantifiers/local_theory_ext.h b/src/theory/quantifiers/local_theory_ext.h
new file mode 100644
index 0000000..04a6bc9
--- /dev/null
+++ b/src/theory/quantifiers/local_theory_ext.h
@@ -0,0 +1,81 @@
+/*********************                                                        */
+/*! \file local_theory_ext.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief local theory extensions util
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__LOCAL_THEORY_EXT_H
+#define __CVC4__THEORY__LOCAL_THEORY_EXT_H
+
+#include "theory/quantifiers_engine.h"
+#include "context/cdo.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+class TermArgTrie;  
+
+class LtePartialInst : public QuantifiersModule {
+private:
+  // was this module invoked
+  bool d_wasInvoked;
+  // needs check
+  bool d_needsCheck;
+  //representatives per type
+  std::map< TypeNode, std::vector< Node > > d_reps;
+  // should we instantiate quantifier
+  std::map< Node, bool > d_do_inst;
+  // have we instantiated quantifier
+  std::map< Node, bool > d_inst;
+  std::map< Node, std::vector< Node > > d_vars;
+  std::map< Node, std::vector< int > > d_pat_var_order;
+  /** list of relevant quantifiers asserted in the current context */
+  std::vector< Node > d_lte_asserts;
+  /** reset */
+  void reset();
+  /** get instantiations */
+  void getInstantiations( std::vector< Node >& lemmas );
+  void getPartialInstantiations( std::vector< Node >& conj, Node q, Node bvl,
+                                 std::vector< Node >& vars, std::vector< Node >& inst, std::vector< TypeNode >& types, TermArgTrie * curr,
+                                 unsigned pindex, unsigned paindex, unsigned iindex );
+  /** get eligible inst variables */
+  void getEligibleInstVars( Node n, std::map< Node, bool >& vars );
+  
+  bool addVariableToPatternList( Node v, std::vector< int >& pat_var_order, std::map< Node, int >& var_order );
+public:
+  LtePartialInst( QuantifiersEngine * qe, context::Context* c );
+  /** determine whether this quantified formula will be reduced */
+  void preRegisterQuantifier( Node q );
+  /** was invoked */
+  bool wasInvoked() { return d_wasInvoked; }
+  
+  /* whether this module needs to check this round */
+  bool needsCheck( Theory::Effort e );
+  /* Call during quantifier engine's check */
+  void check( Theory::Effort e, unsigned quant_e );
+  /* Called for new quantifiers */
+  void registerQuantifier( Node q ) {}
+  /* check complete */
+  bool checkComplete() { return !d_wasInvoked; }
+  void assertNode( Node n ) {}
+  /** Identify this module (for debugging, dynamic configuration, etc..) */
+  std::string identify() const { return "LtePartialInst"; }
+  
+};
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/macros.cpp b/src/theory/quantifiers/macros.cpp
new file mode 100644
index 0000000..96d682a
--- /dev/null
+++ b/src/theory/quantifiers/macros.cpp
@@ -0,0 +1,535 @@
+/*********************                                                        */
+/*! \file macros.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Sort inference module
+ **
+ ** This class implements quantifiers macro definitions.
+ **/
+
+#include "theory/quantifiers/macros.h"
+
+#include <vector>
+
+#include "options/quantifiers_modes.h"
+#include "options/quantifiers_options.h"
+#include "proof/proof_manager.h"
+#include "smt/smt_engine_scope.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/trigger.h"
+#include "theory/rewriter.h"
+
+using namespace CVC4;
+using namespace std;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+using namespace CVC4::kind;
+
+
+QuantifierMacros::QuantifierMacros( QuantifiersEngine * qe ) : d_qe( qe ){
+  d_ground_macros = false;
+}
+  
+bool QuantifierMacros::simplify( std::vector< Node >& assertions, bool doRewrite ){
+  unsigned rmax = options::macrosQuantMode()==MACROS_QUANT_MODE_ALL ? 2 : 1;
+  for( unsigned r=0; r<rmax; r++ ){
+    d_ground_macros = (r==0);
+    Trace("macros") << "Find macros, ground=" << d_ground_macros << "..." << std::endl;
+    //first, collect macro definitions
+    std::vector< Node > macro_assertions;
+    for( unsigned i=0; i<assertions.size(); i++ ){
+      Trace("macros-debug") << "  process assertion " << assertions[i] << std::endl;
+      if( processAssertion( assertions[i] ) ){
+        PROOF( 
+          if( std::find( macro_assertions.begin(), macro_assertions.end(), assertions[i] )==macro_assertions.end() ){
+            macro_assertions.push_back( assertions[i] );
+          }
+        );
+        //process this assertion again
+        i--;
+      }
+    }
+    Trace("macros") << "...finished process, #new def = " << d_macro_defs_new.size() << std::endl;
+    if( doRewrite && !d_macro_defs_new.empty() ){
+      bool retVal = false;
+      Trace("macros") << "Do simplifications..." << std::endl;
+      //now, rewrite based on macro definitions
+      for( unsigned i=0; i<assertions.size(); i++ ){
+        Node curr = simplify( assertions[i] );
+        if( curr!=assertions[i] ){
+          curr = Rewriter::rewrite( curr );
+          Trace("macros-rewrite") << "Rewrite " << assertions[i] << " to " << curr << std::endl;
+          //for now, it is dependent upon all assertions involving macros, this is an over-approximation.
+          //a more fine-grained unsat core computation would require caching dependencies for each subterm of the formula, 
+          // which is expensive.
+          PROOF( 
+            ProofManager::currentPM()->addDependence(curr, assertions[i]); 
+            for( unsigned j=0; j<macro_assertions.size(); j++ ){
+              if( macro_assertions[j]!=assertions[i] ){
+                ProofManager::currentPM()->addDependence(curr,macro_assertions[j]);
+              }
+            }
+          );
+          assertions[i] = curr;
+          retVal = true;
+        }
+      }
+      d_macro_defs_new.clear();
+      if( retVal ){
+        return true;
+      }
+    }
+  }
+  if( Trace.isOn("macros-warn") ){
+    for( unsigned i=0; i<assertions.size(); i++ ){
+      debugMacroDefinition( assertions[i], assertions[i] );
+    }
+  }
+  return false;
+}
+
+bool QuantifierMacros::processAssertion( Node n ) {
+  if( n.getKind()==AND ){
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      if( processAssertion( n[i] ) ){
+        return true;
+      }
+    }
+  }else if( n.getKind()==FORALL && d_quant_macros.find( n )==d_quant_macros.end() ){
+    std::vector< Node > args;
+    for( size_t j=0; j<n[0].getNumChildren(); j++ ){
+      args.push_back( n[0][j] );
+    }
+    Node nproc = n[1];
+    if( !d_macro_defs_new.empty() ){
+      nproc = simplify( nproc );
+      if( nproc!=n[1] ){
+        nproc = Rewriter::rewrite( nproc );
+      }
+    }
+    //look at the body of the quantifier for macro definition
+    if( process( nproc, true, args, n ) ){
+      d_quant_macros[n] = true;
+      return true;
+    }
+  }
+  return false;
+}
+
+bool QuantifierMacros::containsBadOp( Node n, Node op, std::vector< Node >& opc, std::map< Node, bool >& visited ){
+  if( visited.find( n )==visited.end() ){
+    visited[n] = true;
+    if( n.getKind()==APPLY_UF ){
+      Node nop = n.getOperator();
+      if( nop==op || d_macro_defs.find( nop )!=d_macro_defs.end()  ){
+        return true;
+      }
+      if( std::find( opc.begin(), opc.end(), nop )==opc.end() ){
+        opc.push_back( nop );
+      }
+    }else if( d_ground_macros && n.getKind()==FORALL ){
+      return true;
+    }
+    for( size_t i=0; i<n.getNumChildren(); i++ ){
+      if( containsBadOp( n[i], op, opc, visited ) ){
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+bool QuantifierMacros::isMacroLiteral( Node n, bool pol ){
+  return pol && n.getKind()==EQUAL;
+}
+
+bool QuantifierMacros::isGroundUfTerm( Node f, Node n ) {
+  Node icn = d_qe->getTermDatabase()->getInstConstantNode( n, f );
+  Trace("macros-debug2") << "Get free variables in " << icn << std::endl;
+  std::vector< Node > var;
+  d_qe->getTermDatabase()->getVarContainsNode( f, icn, var );
+  Trace("macros-debug2") << "Get trigger variables for " << icn << std::endl;
+  std::vector< Node > trigger_var;
+  inst::Trigger::getTriggerVariables( icn, f, trigger_var );
+  Trace("macros-debug2") << "Done." << std::endl;
+  //only if all variables are also trigger variables
+  return trigger_var.size()>=var.size();
+}
+
+bool QuantifierMacros::isBoundVarApplyUf( Node n ) {
+  Assert( n.getKind()==APPLY_UF );
+  TypeNode tno = n.getOperator().getType();
+  std::map< Node, bool > vars;
+  for( unsigned i=0; i<n.getNumChildren(); i++ ){
+    if( n[i].getKind()!=BOUND_VARIABLE ){
+      return false;
+    }
+    if( n[i].getType()!=tno[i] ){
+      return false;
+    }
+    if( !tno[i].isSort() && !tno[i].isReal() && ( !tno[i].isDatatype() || tno[i].isParametricDatatype() ) && 
+        !tno[i].isBitVector() && !tno[i].isString() && !tno[i].isFloatingPoint() ){
+      //only non-parametric types are supported
+      return false;
+    }
+    if( vars.find( n[i] )==vars.end() ){
+      vars[n[i]] = true;
+    }else{
+      return false;
+    }
+  }
+  return true;
+}
+
+void QuantifierMacros::getMacroCandidates( Node n, std::vector< Node >& candidates, std::map< Node, bool >& visited ){
+  if( visited.find( n )==visited.end() ){
+    visited[n] = true;
+    if( n.getKind()==APPLY_UF ){
+      if( isBoundVarApplyUf( n ) ){
+        candidates.push_back( n );
+      }
+    }else if( n.getKind()==PLUS ){
+      for( size_t i=0; i<n.getNumChildren(); i++ ){
+        getMacroCandidates( n[i], candidates, visited );
+      }
+    }else if( n.getKind()==MULT ){
+      //if the LHS is a constant
+      if( n.getNumChildren()==2 && n[0].isConst() ){
+        getMacroCandidates( n[1], candidates, visited );
+      }
+    }else if( n.getKind()==NOT ){
+      getMacroCandidates( n[0], candidates, visited );
+    }
+  }
+}
+
+Node QuantifierMacros::solveInEquality( Node n, Node lit ){
+  if( lit.getKind()==EQUAL ){
+    //return the opposite side of the equality if defined that way
+    for( int i=0; i<2; i++ ){
+      if( lit[i]==n ){
+        return lit[i==0 ? 1 : 0];
+      }else if( lit[i].getKind()==NOT && lit[i][0]==n ){
+        return lit[i==0 ? 1 : 0].negate();
+      }
+    }
+    //must solve for term n in the literal lit
+    if( lit[0].getType().isInteger() || lit[0].getType().isReal() ){
+      Node coeff;
+      Node term;
+      //could be solved for on LHS
+      if( lit[0].getKind()==MULT && lit[0][1]==n ){
+        Assert( lit[0][0].isConst() );
+        term = lit[1];
+        coeff = lit[0][0];
+      }else{
+        Assert( lit[1].getKind()==PLUS );
+        std::vector< Node > plus_children;
+        //find monomial with n
+        for( size_t j=0; j<lit[1].getNumChildren(); j++ ){
+          if( lit[1][j]==n ){
+            Assert( coeff.isNull() );
+            coeff = NodeManager::currentNM()->mkConst( Rational(1) );
+          }else if( lit[1][j].getKind()==MULT && lit[1][j][1]==n ){
+            Assert( coeff.isNull() );
+            Assert( lit[1][j][0].isConst() );
+            coeff = lit[1][j][0];
+          }else{
+            plus_children.push_back( lit[1][j] );
+          }
+        }
+        if( !coeff.isNull() ){
+          term = plus_children.size()==1 ? plus_children[0] : NodeManager::currentNM()->mkNode( PLUS, plus_children );
+          term = NodeManager::currentNM()->mkNode( MINUS, lit[0], term );
+        }
+      }
+      if( !coeff.isNull() ){
+        coeff = NodeManager::currentNM()->mkConst( Rational(1) / coeff.getConst<Rational>() );
+        term = NodeManager::currentNM()->mkNode( MULT, coeff, term );
+        term = Rewriter::rewrite( term );
+        return term;
+      }
+    }
+  }
+  Trace("macros-debug") << "Cannot find for " << lit << " " << n << std::endl;
+  return Node::null();
+}
+
+bool QuantifierMacros::getFreeVariables( Node n, std::vector< Node >& v_quant, std::vector< Node >& vars, bool retOnly, std::map< Node, bool >& visited ){
+  if( visited.find( n )==visited.end() ){
+    visited[n] = true;
+    if( std::find( v_quant.begin(), v_quant.end(), n )!=v_quant.end() ){
+      if( std::find( vars.begin(), vars.end(), n )==vars.end() ){
+        if( retOnly ){
+          return true;
+        }else{
+          vars.push_back( n );
+        }
+      }
+    }
+    for( size_t i=0; i<n.getNumChildren(); i++ ){
+      if( getFreeVariables( n[i], v_quant, vars, retOnly, visited ) ){
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+bool QuantifierMacros::getSubstitution( std::vector< Node >& v_quant, std::map< Node, Node >& solved,
+                                        std::vector< Node >& vars, std::vector< Node >& subs, bool reqComplete ){
+  bool success = true;
+  for( size_t a=0; a<v_quant.size(); a++ ){
+    if( !solved[ v_quant[a] ].isNull() ){
+      vars.push_back( v_quant[a] );
+      subs.push_back( solved[ v_quant[a] ] );
+    }else{
+      if( reqComplete ){
+        success = false;
+        break;
+      }
+    }
+  }
+  return success;
+}
+
+bool QuantifierMacros::process( Node n, bool pol, std::vector< Node >& args, Node f ){
+  Trace("macros-debug") << "  process " << n << std::endl;
+  if( n.getKind()==NOT ){
+    return process( n[0], !pol, args, f );
+  }else if( n.getKind()==AND || n.getKind()==OR ){
+    //bool favorPol = (n.getKind()==AND)==pol;
+    //conditional?
+  }else if( n.getKind()==ITE ){
+    //can not do anything
+  }else if( n.getKind()==APPLY_UF ){
+    //predicate case
+    if( isBoundVarApplyUf( n ) ){
+      Node op = n.getOperator();
+      if( d_macro_defs.find( op )==d_macro_defs.end() ){
+        Node n_def = NodeManager::currentNM()->mkConst( pol );
+        for( unsigned i=0; i<n.getNumChildren(); i++ ){
+          std::stringstream ss;
+          ss << "mda_" << op << "";
+          Node v = NodeManager::currentNM()->mkSkolem( ss.str(), n[i].getType(), "created during macro definition recognition" );
+          d_macro_basis[op].push_back( v );
+        }
+        //contains no ops
+        std::vector< Node > op_contains;
+        //add the macro
+        addMacro( op, n_def, op_contains );
+        return true;
+      }
+    }
+  }else{
+    //literal case
+    if( isMacroLiteral( n, pol ) ){
+      std::map< Node, bool > visited;
+      std::vector< Node > candidates;
+      for( size_t i=0; i<n.getNumChildren(); i++ ){
+        getMacroCandidates( n[i], candidates, visited );
+      }
+      for( size_t i=0; i<candidates.size(); i++ ){
+        Node m = candidates[i];
+        Node op = m.getOperator();
+        if( d_macro_defs.find( op )==d_macro_defs.end() ){
+          std::vector< Node > fvs;
+          visited.clear();
+          getFreeVariables( m, args, fvs, false, visited );
+          //get definition and condition
+          Node n_def = solveInEquality( m, n ); //definition for the macro
+          if( !n_def.isNull() ){
+            Trace("macros-debug") << m << " is possible macro in " << f << std::endl;
+            Trace("macros-debug") << "  corresponding definition is : " << n_def << std::endl;
+            visited.clear();
+            //definition must exist and not contain any free variables apart from fvs
+            if( !getFreeVariables( n_def, args, fvs, true, visited ) ){
+              Trace("macros-debug") << "...free variables are contained." << std::endl;
+              visited.clear();
+              //cannot contain a defined operator, opc is list of functions it contains
+              std::vector< Node > opc;
+              if( !containsBadOp( n_def, op, opc, visited ) ){
+                Trace("macros-debug") << "...does not contain bad (recursive) operator." << std::endl;
+                //must be ground UF term if mode is GROUND_UF
+                if( options::macrosQuantMode()!=MACROS_QUANT_MODE_GROUND_UF || isGroundUfTerm( f, n_def ) ){
+                  Trace("macros-debug") << "...respects ground-uf constraint." << std::endl;
+                  //now we must rewrite candidates[i] to a term of form g( x1, ..., xn ) where
+                  // x1 ... xn are distinct variables
+                  if( d_macro_basis[op].empty() ){
+                    for( size_t a=0; a<m.getNumChildren(); a++ ){
+                      std::stringstream ss;
+                      ss << "mda_" << op << "";
+                      Node v = NodeManager::currentNM()->mkSkolem( ss.str(), m[a].getType(), "created during macro definition recognition" );
+                      d_macro_basis[op].push_back( v );
+                    }
+                  }
+                  std::map< Node, Node > solved;
+                  for( size_t a=0; a<m.getNumChildren(); a++ ){
+                    solved[m[a]] = d_macro_basis[op][a];
+                  }
+                  std::vector< Node > vars;
+                  std::vector< Node > subs;
+                  if( getSubstitution( fvs, solved, vars, subs, true ) ){
+                    n_def = n_def.substitute( vars.begin(), vars.end(), subs.begin(), subs.end() );
+                    addMacro( op, n_def, opc );
+                    return true;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  return false;
+}
+
+Node QuantifierMacros::simplify( Node n ){
+  if( n.getNumChildren()==0 ){
+    return n;
+  }else{
+    std::map< Node, Node >::iterator itn = d_simplify_cache.find( n );
+    if( itn!=d_simplify_cache.end() ){
+      return itn->second;
+    }else{
+      Node ret = n;
+      Trace("macros-debug") << "  simplify " << n << std::endl;
+      std::vector< Node > children;
+      bool childChanged = false;
+      for( size_t i=0; i<n.getNumChildren(); i++ ){
+        Node nn = simplify( n[i] );
+        children.push_back( nn );
+        childChanged = childChanged || nn!=n[i];
+      }
+      bool retSet = false;
+      if( n.getKind()==APPLY_UF ){
+        Node op = n.getOperator();
+        std::map< Node, Node >::iterator it = d_macro_defs.find( op );
+        if( it!=d_macro_defs.end() && !it->second.isNull() ){
+          //only apply if children are subtypes of arguments
+          bool success = true;
+          std::vector< Node > cond;
+          TypeNode tno = op.getType();
+          for( unsigned i=0; i<children.size(); i++ ){
+            if( !TermDb::getEnsureTypeCondition( children[i], tno[i], cond ) ){
+              //if this does fail, we are incomplete, since we are eliminating quantified formula corresponding to op, 
+              //  and not ensuring it applies to n when its types are correct.
+              //however, this should never fail: we never process types for which we cannot constuct conditions that ensure correct types, e.g. (is-int t).
+              Assert( false );
+              success = false;
+              break;
+            }
+          }
+          if( success ){
+            //do substitution if necessary
+            ret = it->second;
+            std::map< Node, std::vector< Node > >::iterator itb = d_macro_basis.find( op );
+            if( itb!=d_macro_basis.end() ){
+              ret = ret.substitute( itb->second.begin(), itb->second.end(), children.begin(), children.end() );
+            }
+            if( !cond.empty() ){
+              Node cc = cond.size()==1 ? cond[0] : NodeManager::currentNM()->mkNode( kind::AND, cond );
+              ret = NodeManager::currentNM()->mkNode( kind::ITE, cc, ret, n );
+            }
+            retSet = true;
+          }
+        }
+      }
+      if( !retSet && childChanged ){
+        if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+          children.insert( children.begin(), n.getOperator() );
+        }
+        ret = NodeManager::currentNM()->mkNode( n.getKind(), children );
+      }
+      d_simplify_cache[n] = ret;
+      return ret;
+    }
+  }
+}
+
+void QuantifierMacros::debugMacroDefinition( Node oo, Node n ) {
+  //for debugging, ensure that all previous definitions have been eliminated
+  if( n.getKind()==APPLY_UF ){
+    Node op = n.getOperator();
+    if( d_macro_defs.find( op )!=d_macro_defs.end() ){
+      if( d_macro_defs.find( oo )!=d_macro_defs.end() ){
+        Trace("macros-warn") << "BAD DEFINITION for macro " << oo << " : " << d_macro_defs[oo] << std::endl;
+      }else{
+        Trace("macros-warn") << "BAD ASSERTION " << oo << std::endl;
+      }
+      Trace("macros-warn") << "  contains defined function " << op << "!!!" << std::endl;
+    }
+  }
+  for( unsigned i=0; i<n.getNumChildren(); i++ ){
+    debugMacroDefinition( oo, n[i] );
+  }
+}
+
+void QuantifierMacros::finalizeDefinitions() {
+  bool doDefs = false;
+  if( Trace.isOn("macros-warn") ){
+    doDefs = true;
+  }
+  if( options::incrementalSolving() || options::produceModels() || doDefs ){
+    Trace("macros") << "Store as defined functions..." << std::endl;
+    //also store as defined functions
+    for( std::map< Node, Node >::iterator it = d_macro_defs.begin(); it != d_macro_defs.end(); ++it ){
+      Trace("macros-def") << "Macro definition for " << it->first << " : " << it->second << std::endl;
+      Trace("macros-def") << "  basis is : ";
+      std::vector< Node > nargs;
+      std::vector< Expr > args;
+      for( unsigned i=0; i<d_macro_basis[it->first].size(); i++ ){
+        Node bv = NodeManager::currentNM()->mkBoundVar( d_macro_basis[it->first][i].getType() );
+        Trace("macros-def") << d_macro_basis[it->first][i] << " ";
+        nargs.push_back( bv );
+        args.push_back( bv.toExpr() );
+      }
+      Trace("macros-def") << std::endl;
+      Node sbody = it->second.substitute( d_macro_basis[it->first].begin(), d_macro_basis[it->first].end(), nargs.begin(), nargs.end() );
+      smt::currentSmtEngine()->defineFunction( it->first.toExpr(), args, sbody.toExpr() );
+
+      if( Trace.isOn("macros-warn") ){
+        debugMacroDefinition( it->first, sbody );
+      }
+    }
+    Trace("macros") << "done." << std::endl;
+  }
+}
+
+void QuantifierMacros::addMacro( Node op, Node n, std::vector< Node >& opc ) {
+  Trace("macros") << "* " << n << " is a macro for " << op << ", #op contain = " << opc.size() << std::endl;
+  d_simplify_cache.clear();
+  d_macro_defs[op] = n;
+  d_macro_defs_new[op] = n;
+  //substitute into all previous
+  std::vector< Node > dep_ops;
+  dep_ops.push_back( op );
+  Trace("macros-debug") << "...substitute into " << d_macro_def_contains[op].size() << " previous definitions." << std::endl;
+  for( unsigned i=0; i<d_macro_def_contains[op].size(); i++ ){
+    Node cop = d_macro_def_contains[op][i];
+    Node def = d_macro_defs[cop];
+    def = simplify( def );
+    d_macro_defs[cop] = def;
+    if( d_macro_defs_new.find( cop )!=d_macro_defs_new.end() ){
+      d_macro_defs_new[cop] = def;
+    }
+    dep_ops.push_back( cop );
+  }
+  //store the contains op information
+  for( unsigned i=0; i<opc.size(); i++ ){
+    for( unsigned j=0; j<dep_ops.size(); j++ ){
+      Node dop = dep_ops[j];
+      if( std::find( d_macro_def_contains[opc[i]].begin(), d_macro_def_contains[opc[i]].end(), dop )==d_macro_def_contains[opc[i]].end() ){
+        d_macro_def_contains[opc[i]].push_back( dop );
+      }
+    }
+  }
+}
diff --git a/src/theory/quantifiers/macros.h b/src/theory/quantifiers/macros.h
new file mode 100644
index 0000000..60af7ad
--- /dev/null
+++ b/src/theory/quantifiers/macros.h
@@ -0,0 +1,74 @@
+/*********************                                                        */
+/*! \file macros.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Pre-process step for detecting quantifier macro definitions
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__QUANTIFIERS_MACROS_H
+#define __CVC4__QUANTIFIERS_MACROS_H
+
+#include <iostream>
+#include <string>
+#include <vector>
+#include <map>
+#include "expr/node.h"
+#include "expr/type_node.h"
+#include "theory/quantifiers_engine.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+class QuantifierMacros{
+private:
+  QuantifiersEngine * d_qe;
+private:
+  bool d_ground_macros;
+  bool processAssertion( Node n );
+  bool isBoundVarApplyUf( Node n );
+  bool process( Node n, bool pol, std::vector< Node >& args, Node f );
+  bool containsBadOp( Node n, Node op, std::vector< Node >& opc, std::map< Node, bool >& visited );
+  bool isMacroLiteral( Node n, bool pol );
+  bool isGroundUfTerm( Node f, Node n );
+  void getMacroCandidates( Node n, std::vector< Node >& candidates, std::map< Node, bool >& visited );
+  Node solveInEquality( Node n, Node lit );
+  bool getFreeVariables( Node n, std::vector< Node >& v_quant, std::vector< Node >& vars, bool retOnly, std::map< Node, bool >& visited );
+  bool getSubstitution( std::vector< Node >& v_quant, std::map< Node, Node >& solved,
+                        std::vector< Node >& vars, std::vector< Node >& subs, bool reqComplete );
+  //map from operators to macro basis terms
+  std::map< Node, std::vector< Node > > d_macro_basis;
+  //map from operators to macro definition
+  std::map< Node, Node > d_macro_defs;
+  std::map< Node, Node > d_macro_defs_new;
+  //operators to macro ops that contain them
+  std::map< Node, std::vector< Node > > d_macro_def_contains;
+  //simplify caches
+  std::map< Node, Node > d_simplify_cache;
+  std::map< Node, bool > d_quant_macros;
+private:
+  Node simplify( Node n );
+  void addMacro( Node op, Node n, std::vector< Node >& opc );
+  void debugMacroDefinition( Node oo, Node n );
+public:
+  QuantifierMacros( QuantifiersEngine * qe );
+  ~QuantifierMacros(){}
+
+  bool simplify( std::vector< Node >& assertions, bool doRewrite = false );
+  void finalizeDefinitions();
+};
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/model_builder.cpp b/src/theory/quantifiers/model_builder.cpp
new file mode 100644
index 0000000..090f273
--- /dev/null
+++ b/src/theory/quantifiers/model_builder.cpp
@@ -0,0 +1,785 @@
+/*********************                                                        */
+/*! \file model_builder.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of model builder class
+ **/
+
+#include "theory/quantifiers/model_builder.h"
+
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/model_engine.h"
+#include "theory/quantifiers/quantifiers_attributes.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/trigger.h"
+#include "theory/theory_engine.h"
+#include "theory/uf/equality_engine.h"
+#include "theory/uf/theory_uf.h"
+#include "theory/uf/theory_uf_model.h"
+#include "theory/uf/theory_uf_strong_solver.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+
+
+QModelBuilder::QModelBuilder( context::Context* c, QuantifiersEngine* qe ) :
+TheoryEngineModelBuilder( qe->getTheoryEngine() ), d_curr_model( c, NULL ), d_qe( qe ){
+
+}
+
+bool QModelBuilder::optUseModel() {
+  return options::mbqiMode()!=MBQI_NONE || options::fmfBound();
+}
+
+void QModelBuilder::preProcessBuildModel(TheoryModel* m, bool fullModel) {
+  preProcessBuildModelStd( m, fullModel );
+}
+
+void QModelBuilder::preProcessBuildModelStd(TheoryModel* m, bool fullModel) {
+  if( !fullModel ){
+    if( options::fmfEmptySorts() || options::fmfFunWellDefinedRelevant() ){
+      FirstOrderModel * fm = (FirstOrderModel*)m;
+      //traverse equality engine
+      std::map< TypeNode, bool > eqc_usort;
+      eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( fm->d_equalityEngine );
+      while( !eqcs_i.isFinished() ){
+        TypeNode tr = (*eqcs_i).getType();
+        eqc_usort[tr] = true;
+        ++eqcs_i;
+      }
+      //look at quantified formulas
+      for( unsigned i=0; i<fm->getNumAssertedQuantifiers(); i++ ){
+        Node q = fm->getAssertedQuantifier( i, true );
+        if( fm->isQuantifierActive( q ) ){
+          //check if any of these quantified formulas can be set inactive
+          if( options::fmfEmptySorts() ){
+            for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
+              TypeNode tn = q[0][i].getType();
+              //we are allowed to assume the type is empty
+              if( tn.isSort() && eqc_usort.find( tn )==eqc_usort.end() ){
+                Trace("model-engine-debug") << "Empty domain quantified formula : " << q << std::endl;
+                fm->setQuantifierActive( q, false );
+              }
+            }
+          }else if( options::fmfFunWellDefinedRelevant() ){
+            if( q[0].getNumChildren()==1 ){
+              TypeNode tn = q[0][0].getType();
+              if( tn.getAttribute(AbsTypeFunDefAttribute()) ){
+                //Trace("model-engine-debug2") << "...possible irrelevant function def : " << q << ", #rr = " << d_quantEngine->getModel()->d_rep_set.getNumRelevantGroundReps( tn ) << std::endl;
+                //we are allowed to assume the introduced type is empty
+                if( eqc_usort.find( tn )==eqc_usort.end() ){
+                  Trace("model-engine-debug") << "Irrelevant function definition : " << q << std::endl;
+                  fm->setQuantifierActive( q, false );
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+void QModelBuilder::debugModel( FirstOrderModel* fm ){
+  //debug the model: cycle through all instantiations for all quantifiers, report ones that are not true
+  if( Trace.isOn("quant-check-model") ){
+    Trace("quant-check-model") << "Testing quantifier instantiations..." << std::endl;
+    int tests = 0;
+    int bad = 0;
+    for( unsigned i=0; i<fm->getNumAssertedQuantifiers(); i++ ){
+      Node f = fm->getAssertedQuantifier( i );
+      std::vector< Node > vars;
+      for( unsigned j=0; j<f[0].getNumChildren(); j++ ){
+        vars.push_back( f[0][j] );
+      }
+      RepSetIterator riter( d_qe, &(fm->d_rep_set) );
+      if( riter.setQuantifier( f ) ){
+        while( !riter.isFinished() ){
+          tests++;
+          std::vector< Node > terms;
+          for( int k=0; k<riter.getNumTerms(); k++ ){
+            terms.push_back( riter.getCurrentTerm( k ) );
+          }
+          Node n = d_qe->getInstantiation( f, vars, terms );
+          Node val = fm->getValue( n );
+          if( val!=fm->d_true ){
+            Trace("quant-check-model") << "*******  Instantiation " << n << " for " << std::endl;
+            Trace("quant-check-model") << "         " << f << std::endl;
+            Trace("quant-check-model") << "         Evaluates to " << val << std::endl;
+            bad++;
+          }
+          riter.increment();
+        }
+        Trace("quant-check-model") << "Tested " << tests << " instantiations";
+        if( bad>0 ){
+          Trace("quant-check-model") << ", " << bad << " failed" << std::endl;
+        }
+        Trace("quant-check-model") << "." << std::endl;
+      }else{
+        if( riter.isIncomplete() ){
+          Trace("quant-check-model") << "Warning: Could not test quantifier " << f << std::endl;
+        }
+      }
+    }
+  }
+}
+
+
+
+bool TermArgBasisTrie::addTerm2( FirstOrderModel* fm, Node n, int argIndex ){
+  if( argIndex<(int)n.getNumChildren() ){
+    Node r;
+    if( n[ argIndex ].getAttribute(ModelBasisAttribute()) ){
+      r = n[ argIndex ];
+    }else{
+      r = fm->getRepresentative( n[ argIndex ] );
+    }
+    std::map< Node, TermArgBasisTrie >::iterator it = d_data.find( r );
+    if( it==d_data.end() ){
+      d_data[r].addTerm2( fm, n, argIndex+1 );
+      return true;
+    }else{
+      return it->second.addTerm2( fm, n, argIndex+1 );
+    }
+  }else{
+    return false;
+  }
+}
+
+
+QModelBuilderIG::QModelBuilderIG( context::Context* c, QuantifiersEngine* qe ) :
+QModelBuilder( c, qe ), d_basisNoMatch( c ) {
+
+}
+
+Node QModelBuilderIG::getCurrentUfModelValue( FirstOrderModel* fm, Node n, std::vector< Node > & args, bool partial ) {
+  return n;
+}
+
+void QModelBuilderIG::processBuildModel( TheoryModel* m, bool fullModel ) {
+  FirstOrderModel* f = (FirstOrderModel*)m;
+  FirstOrderModelIG* fm = f->asFirstOrderModelIG();
+  Trace("model-engine-debug") << "Process build model, fullModel = " << fullModel << " " << optUseModel() << std::endl;
+  if( fullModel ){
+    Assert( d_curr_model==fm );
+    //update models
+    for( std::map< Node, uf::UfModelTree >::iterator it = fm->d_uf_model_tree.begin(); it != fm->d_uf_model_tree.end(); ++it ){
+      it->second.update( fm );
+      Trace("model-func") << "QModelBuilder: Make function value from tree " << it->first << std::endl;
+      //construct function values
+      fm->d_uf_models[ it->first ] = it->second.getFunctionValue( "$x" );
+    }
+    TheoryEngineModelBuilder::processBuildModel( m, fullModel );
+    //mark that the model has been set
+    fm->markModelSet();
+    //debug the model
+    debugModel( fm );
+  }else{
+    d_curr_model = fm;
+    d_didInstGen = false;
+    //reset the internal information
+    reset( fm );
+    //only construct first order model if optUseModel() is true
+    if( optUseModel() ){
+      Trace("model-engine-debug") << "Initializing " << fm->getNumAssertedQuantifiers() << " quantifiers..." << std::endl;
+      //check if any quantifiers are un-initialized
+      for( unsigned i=0; i<fm->getNumAssertedQuantifiers(); i++ ){
+        Node q = fm->getAssertedQuantifier( i );
+        if( d_qe->getModel()->isQuantifierActive( q ) ){
+          int lems = initializeQuantifier( q, q );
+          d_statistics.d_init_inst_gen_lemmas += lems;
+          d_addedLemmas += lems;
+          if( d_qe->inConflict() ){
+            break;
+          }
+        }
+      }
+      if( d_addedLemmas>0 ){
+        Trace("model-engine") << "Initialize, Added Lemmas = " << d_addedLemmas << std::endl;
+      }else{
+        Assert( !d_qe->inConflict() );
+        //initialize model
+        fm->initialize();
+        //analyze the functions
+        Trace("model-engine-debug") << "Analyzing model..." << std::endl;
+        analyzeModel( fm );
+        //analyze the quantifiers
+        Trace("model-engine-debug") << "Analyzing quantifiers..." << std::endl;
+        d_uf_prefs.clear();
+        for( unsigned i=0; i<fm->getNumAssertedQuantifiers(); i++ ){
+          Node q = fm->getAssertedQuantifier( i );
+          analyzeQuantifier( fm, q );
+        }
+
+        //if applicable, find exceptions to model via inst-gen
+        if( options::fmfInstGen() ){
+          d_didInstGen = true;
+          d_instGenMatches = 0;
+          d_numQuantSat = 0;
+          d_numQuantInstGen = 0;
+          d_numQuantNoInstGen = 0;
+          d_numQuantNoSelForm = 0;
+          //now, see if we know that any exceptions via InstGen exist
+          Trace("model-engine-debug") << "Perform InstGen techniques for quantifiers..." << std::endl;
+          for( unsigned i=0; i<fm->getNumAssertedQuantifiers(); i++ ){
+            Node f = fm->getAssertedQuantifier( i );
+            if( d_qe->getModel()->isQuantifierActive( f ) ){
+              int lems = doInstGen( fm, f );
+              d_statistics.d_inst_gen_lemmas += lems;
+              d_addedLemmas += lems;
+              //temporary
+              if( lems>0 ){
+                d_numQuantInstGen++;
+              }else if( hasInstGen( f ) ){
+                d_numQuantNoInstGen++;
+              }else{
+                d_numQuantNoSelForm++;
+              }
+              if( d_qe->inConflict() || ( options::fmfInstGenOneQuantPerRound() && lems>0 ) ){
+                break;
+              }
+            }else{
+              d_numQuantSat++;
+            }
+          }
+          Trace("model-engine-debug") << "Quantifiers sat/ig/n-ig/null " << d_numQuantSat << " / " << d_numQuantInstGen << " / ";
+          Trace("model-engine-debug") << d_numQuantNoInstGen << " / " << d_numQuantNoSelForm << std::endl;
+          Trace("model-engine-debug") << "Inst-gen # matches examined = " << d_instGenMatches << std::endl;
+          if( Trace.isOn("model-engine") ){
+            if( d_addedLemmas>0 ){
+              Trace("model-engine") << "InstGen, added lemmas = " << d_addedLemmas << std::endl;
+            }else{
+              Trace("model-engine") << "No InstGen lemmas..." << std::endl;
+            }
+          }
+        }
+        //construct the model if necessary
+        if( d_addedLemmas==0 ){
+          //if no immediate exceptions, build the model
+          //  this model will be an approximation that will need to be tested via exhaustive instantiation
+          Trace("model-engine-debug") << "Building model..." << std::endl;
+          //build model for UF
+          for( std::map< Node, uf::UfModelTree >::iterator it = fm->d_uf_model_tree.begin(); it != fm->d_uf_model_tree.end(); ++it ){
+            Trace("model-engine-debug-uf") << "Building model for " << it->first << "..." << std::endl;
+            constructModelUf( fm, it->first );
+          }
+          Trace("model-engine-debug") << "Done building models." << std::endl;
+        }
+      }
+    }
+  }
+}
+
+int QModelBuilderIG::initializeQuantifier( Node f, Node fp ){
+  if( d_quant_basis_match_added.find( f )==d_quant_basis_match_added.end() ){
+    //create the basis match if necessary
+    if( d_quant_basis_match.find( f )==d_quant_basis_match.end() ){
+      Trace("inst-fmf-init") << "Initialize " << f << std::endl;
+      //add the model basis instantiation
+      // This will help produce the necessary information for model completion.
+      // We do this by extending distinguish ground assertions (those
+      //   containing terms with "model basis" attribute) to hold for all cases.
+
+      ////first, check if any variables are required to be equal
+      //for( std::map< Node, bool >::iterator it = d_quantEngine->d_phase_reqs[f].begin();
+      //    it != d_quantEngine->d_phase_reqs[f].end(); ++it ){
+      //  Node n = it->first;
+      //  if( n.getKind()==EQUAL && n[0].getKind()==INST_CONSTANT && n[1].getKind()==INST_CONSTANT ){
+      //    Notice() << "Unhandled phase req: " << n << std::endl;
+      //  }
+      //}
+      d_quant_basis_match[f] = InstMatch( f );
+      for( int j=0; j<(int)f[0].getNumChildren(); j++ ){
+        Node t = d_qe->getTermDatabase()->getModelBasisTerm( f[0][j].getType() );
+        //calculate the basis match for f
+        d_quant_basis_match[f].setValue( j, t );
+      }
+      ++(d_statistics.d_num_quants_init);
+    }
+    //try to add it
+    Trace("inst-fmf-init") << "Init: try to add match " << d_quant_basis_match[f] << std::endl;
+    //add model basis instantiation
+    if( d_qe->addInstantiation( fp, d_quant_basis_match[f] ) ){
+      d_quant_basis_match_added[f] = true;
+      return 1;
+    }else{
+      //shouldn't happen usually, but will occur if x != y is a required literal for f.
+      //Notice() << "No model basis for " << f << std::endl;
+      d_quant_basis_match_added[f] = false;
+    }
+  }
+  return 0;
+}
+
+void QModelBuilderIG::analyzeModel( FirstOrderModel* fm ){
+  FirstOrderModelIG* fmig = fm->asFirstOrderModelIG();
+  d_uf_model_constructed.clear();
+  //determine if any functions are constant
+  for( std::map< Node, uf::UfModelTree >::iterator it = fmig->d_uf_model_tree.begin(); it != fmig->d_uf_model_tree.end(); ++it ){
+    Node op = it->first;
+    TermArgBasisTrie tabt;
+    for( size_t i=0; i<fmig->d_uf_terms[op].size(); i++ ){
+      Node n = fmig->d_uf_terms[op][i];
+      //for calculating if op is constant
+      if( d_qe->getTermDatabase()->isTermActive( n ) ){
+        Node v = fmig->getRepresentative( n );
+        if( i==0 ){
+          d_uf_prefs[op].d_const_val = v;
+        }else if( v!=d_uf_prefs[op].d_const_val ){
+          d_uf_prefs[op].d_const_val = Node::null();
+          break;
+        }
+      }
+      //for calculating terms that we don't need to consider
+      if( d_qe->getTermDatabase()->isTermActive( n ) || n.getAttribute(ModelBasisArgAttribute())!=0 ){
+        if( d_basisNoMatch.find( n )==d_basisNoMatch.end() ){
+          //need to consider if it is not congruent modulo model basis
+          if( !tabt.addTerm( fmig, n ) ){
+            d_basisNoMatch[n] = true;
+          }
+        }
+      }
+    }
+    if( !d_uf_prefs[op].d_const_val.isNull() ){
+      fmig->d_uf_model_gen[op].setDefaultValue( d_uf_prefs[op].d_const_val );
+      fmig->d_uf_model_gen[op].makeModel( fmig, it->second );
+      Debug("fmf-model-cons") << "Function " << op << " is the constant function ";
+      fmig->printRepresentativeDebug( "fmf-model-cons", d_uf_prefs[op].d_const_val );
+      Debug("fmf-model-cons") << std::endl;
+      d_uf_model_constructed[op] = true;
+    }else{
+      d_uf_model_constructed[op] = false;
+    }
+  }
+}
+
+bool QModelBuilderIG::hasConstantDefinition( Node n ){
+  Node lit = n.getKind()==NOT ? n[0] : n;
+  if( lit.getKind()==APPLY_UF ){
+    Node op = lit.getOperator();
+    if( !d_uf_prefs[op].d_const_val.isNull() ){
+      return true;
+    }
+  }
+  return false;
+}
+
+QModelBuilderIG::Statistics::Statistics():
+  d_num_quants_init("QModelBuilderIG::Number_Quantifiers", 0),
+  d_num_partial_quants_init("QModelBuilderIG::Number_Partial_Quantifiers", 0),
+  d_init_inst_gen_lemmas("QModelBuilderIG::Initialize_Inst_Gen_Lemmas", 0 ),
+  d_inst_gen_lemmas("QModelBuilderIG::Inst_Gen_Lemmas", 0 ),
+  d_eval_formulas("QModelBuilderIG::Eval_Formulas", 0 ),
+  d_eval_uf_terms("QModelBuilderIG::Eval_Uf_Terms", 0 ),
+  d_eval_lits("QModelBuilderIG::Eval_Lits", 0 ),
+  d_eval_lits_unknown("QModelBuilderIG::Eval_Lits_Unknown", 0 )
+{
+  smtStatisticsRegistry()->registerStat(&d_num_quants_init);
+  smtStatisticsRegistry()->registerStat(&d_num_partial_quants_init);
+  smtStatisticsRegistry()->registerStat(&d_init_inst_gen_lemmas);
+  smtStatisticsRegistry()->registerStat(&d_inst_gen_lemmas);
+  smtStatisticsRegistry()->registerStat(&d_eval_formulas);
+  smtStatisticsRegistry()->registerStat(&d_eval_uf_terms);
+  smtStatisticsRegistry()->registerStat(&d_eval_lits);
+  smtStatisticsRegistry()->registerStat(&d_eval_lits_unknown);
+}
+
+QModelBuilderIG::Statistics::~Statistics(){
+  smtStatisticsRegistry()->unregisterStat(&d_num_quants_init);
+  smtStatisticsRegistry()->unregisterStat(&d_num_partial_quants_init);
+  smtStatisticsRegistry()->unregisterStat(&d_init_inst_gen_lemmas);
+  smtStatisticsRegistry()->unregisterStat(&d_inst_gen_lemmas);
+  smtStatisticsRegistry()->unregisterStat(&d_eval_formulas);
+  smtStatisticsRegistry()->unregisterStat(&d_eval_uf_terms);
+  smtStatisticsRegistry()->unregisterStat(&d_eval_lits);
+  smtStatisticsRegistry()->unregisterStat(&d_eval_lits_unknown);
+}
+
+bool QModelBuilderIG::isTermActive( Node n ){
+  return d_qe->getTermDatabase()->isTermActive( n ) || //it is not congruent to another active term
+         ( n.getAttribute(ModelBasisArgAttribute())!=0 && d_basisNoMatch.find( n )==d_basisNoMatch.end() ); //or it has model basis arguments
+                                                                                                      //and is not congruent modulo model basis
+                                                                                                      //to another active term
+}
+
+//do exhaustive instantiation
+int QModelBuilderIG::doExhaustiveInstantiation( FirstOrderModel * fm, Node f, int effort ) {
+  if( optUseModel() ){
+    RepSetIterator riter( d_qe, &(d_qe->getModel()->d_rep_set) );
+    if( riter.setQuantifier( f ) ){
+      FirstOrderModelIG * fmig = (FirstOrderModelIG*)d_qe->getModel();
+      Debug("inst-fmf-ei") << "Reset evaluate..." << std::endl;
+      fmig->resetEvaluate();
+      Debug("inst-fmf-ei") << "Begin instantiation..." << std::endl;
+      while( !riter.isFinished() && ( d_addedLemmas==0 || !options::fmfOneInstPerRound() ) ){
+        d_triedLemmas++;
+        if( Debug.isOn("inst-fmf-ei-debug") ){
+          for( int i=0; i<(int)riter.d_index.size(); i++ ){
+            Debug("inst-fmf-ei-debug") << i << " : " << riter.d_index[i] << " : " << riter.getCurrentTerm( i ) << std::endl;
+          }
+        }
+        int eval = 0;
+        int depIndex;
+        //see if instantiation is already true in current model
+        if( Debug.isOn("fmf-model-eval") ){
+          Debug("fmf-model-eval") << "Evaluating ";
+          riter.debugPrintSmall("fmf-model-eval");
+          Debug("fmf-model-eval") << "Done calculating terms." << std::endl;
+        }
+        //if evaluate(...)==1, then the instantiation is already true in the model
+        //  depIndex is the index of the least significant variable that this evaluation relies upon
+        depIndex = riter.getNumTerms()-1;
+        Debug("fmf-model-eval") << "We will evaluate " << d_qe->getTermDatabase()->getInstConstantBody( f ) << std::endl;
+        eval = fmig->evaluate( d_qe->getTermDatabase()->getInstConstantBody( f ), depIndex, &riter );
+        if( eval==1 ){
+          Debug("fmf-model-eval") << "  Returned success with depIndex = " << depIndex << std::endl;
+        }else{
+          Debug("fmf-model-eval") << "  Returned " << (eval==-1 ? "failure" : "unknown") << ", depIndex = " << depIndex << std::endl;
+        }
+        if( eval==1 ){
+          //instantiation is already true -> skip
+          riter.increment2( depIndex );
+        }else{
+          //instantiation was not shown to be true, construct the match
+          InstMatch m( f );
+          for( int i=0; i<riter.getNumTerms(); i++ ){
+            m.set( d_qe, i, riter.getCurrentTerm( i ) );
+          }
+          Debug("fmf-model-eval") << "* Add instantiation " << m << std::endl;
+          //add as instantiation
+          if( d_qe->addInstantiation( f, m, true ) ){
+            d_addedLemmas++;
+            if( d_qe->inConflict() ){
+              break;
+            }
+            //if the instantiation is show to be false, and we wish to skip multiple instantiations at once
+            if( eval==-1 ){
+              riter.increment2( depIndex );
+            }else{
+              riter.increment();
+            }
+          }else{
+            Debug("fmf-model-eval") << "* Failed Add instantiation " << m << std::endl;
+            riter.increment();
+          }
+        }
+      }
+      //print debugging information
+      if( fmig ){
+        d_statistics.d_eval_formulas += fmig->d_eval_formulas;
+        d_statistics.d_eval_uf_terms += fmig->d_eval_uf_terms;
+        d_statistics.d_eval_lits += fmig->d_eval_lits;
+        d_statistics.d_eval_lits_unknown += fmig->d_eval_lits_unknown;
+      }
+      Trace("inst-fmf-ei") << "For " << f << ", finished: " << std::endl;
+      Trace("inst-fmf-ei") << "   Inst Tried: " << d_triedLemmas << std::endl;
+      Trace("inst-fmf-ei") << "   Inst Added: " << d_addedLemmas << std::endl;
+      if( d_addedLemmas>1000 ){
+        Trace("model-engine-warn") << "WARNING: many instantiations produced for " << f << ": " << std::endl;
+        Trace("model-engine-warn") << "   Inst Tried: " << d_triedLemmas << std::endl;
+        Trace("model-engine-warn") << "   Inst Added: " << d_addedLemmas << std::endl;
+        Trace("model-engine-warn") << std::endl;
+      }
+    }
+    //if the iterator is incomplete, we will return unknown instead of sat if no instantiations are added this round
+    return riter.isIncomplete() ? -1 : 1;
+  }else{
+    return 0;
+  }
+}
+
+
+
+void QModelBuilderDefault::reset( FirstOrderModel* fm ){
+  d_quant_selection_lit.clear();
+  d_quant_selection_lit_candidates.clear();
+  d_quant_selection_lit_terms.clear();
+  d_term_selection_lit.clear();
+  d_op_selection_terms.clear();
+}
+
+
+int QModelBuilderDefault::getSelectionScore( std::vector< Node >& uf_terms ) {
+  /*
+  size_t maxChildren = 0;
+  for( size_t i=0; i<uf_terms.size(); i++ ){
+    if( uf_terms[i].getNumChildren()>maxChildren ){
+      maxChildren = uf_terms[i].getNumChildren();
+    }
+  }
+  //TODO: look at how many entries they have?
+  return (int)maxChildren;
+  */
+  return 0;
+}
+
+void QModelBuilderDefault::analyzeQuantifier( FirstOrderModel* fm, Node f ){
+  if( d_qe->getModel()->isQuantifierActive( f ) ){
+    FirstOrderModelIG* fmig = fm->asFirstOrderModelIG();
+    Debug("fmf-model-prefs") << "Analyze quantifier " << f << std::endl;
+    //the pro/con preferences for this quantifier
+    std::vector< Node > pro_con[2];
+    //the terms in the selection literal we choose
+    std::vector< Node > selectionLitTerms;
+    Trace("inst-gen-debug-quant") << "Inst-gen analyze " << f << std::endl;
+    //for each asserted quantifier f,
+    // - determine selection literals
+    // - check which function/predicates have good and bad definitions for satisfying f
+    if( d_phase_reqs.find( f )==d_phase_reqs.end() ){
+      d_phase_reqs[f].initialize( d_qe->getTermDatabase()->getInstConstantBody( f ), true );
+    }
+    int selectLitScore = -1;
+    for( std::map< Node, bool >::iterator it = d_phase_reqs[f].d_phase_reqs.begin(); it != d_phase_reqs[f].d_phase_reqs.end(); ++it ){
+      //the literal n is phase-required for quantifier f
+      Node n = it->first;
+      Node gn = d_qe->getTermDatabase()->getModelBasis( f, n );
+      Debug("fmf-model-req") << "   Req: " << n << " -> " << it->second << std::endl;
+      bool value;
+      //if the corresponding ground abstraction literal has a SAT value
+      if( d_qe->getValuation().hasSatValue( gn, value ) ){
+        //collect the non-ground uf terms that this literal contains
+        //  and compute if all of the symbols in this literal have
+        //  constant definitions.
+        bool isConst = true;
+        std::vector< Node > uf_terms;
+        if( TermDb::hasInstConstAttr(n) ){
+          isConst = false;
+          if( gn.getKind()==APPLY_UF ){
+            uf_terms.push_back( gn );
+            isConst = hasConstantDefinition( gn );
+          }else if( gn.getKind()==EQUAL ){
+            isConst = true;
+            for( int j=0; j<2; j++ ){
+              if( TermDb::hasInstConstAttr(n[j]) ){
+                if( n[j].getKind()==APPLY_UF &&
+                    fmig->d_uf_model_tree.find( gn[j].getOperator() )!=fmig->d_uf_model_tree.end() ){
+                  uf_terms.push_back( gn[j] );
+                  isConst = isConst && hasConstantDefinition( gn[j] );
+                }else{
+                  isConst = false;
+                }
+              }
+            }
+          }
+        }
+        //check if the value in the SAT solver matches the preference according to the quantifier
+        int pref = 0;
+        if( value!=it->second ){
+          //we have a possible selection literal
+          bool selectLit = d_quant_selection_lit[f].isNull();
+          bool selectLitConstraints = true;
+          //it is a constantly defined selection literal : the quantifier is sat
+          if( isConst ){
+            selectLit = selectLit || d_qe->getModel()->isQuantifierActive( f );
+            d_qe->getModel()->setQuantifierActive( f, false );
+            //check if choosing this literal would add any additional constraints to default definitions
+            selectLitConstraints = false;
+            for( int j=0; j<(int)uf_terms.size(); j++ ){
+              Node op = uf_terms[j].getOperator();
+              if( d_uf_prefs[op].d_reconsiderModel ){
+                selectLitConstraints = true;
+              }
+            }
+            if( !selectLitConstraints ){
+              selectLit = true;
+            }
+          }
+          //also check if it is naturally a better literal
+          if( !selectLit ){
+            int score = getSelectionScore( uf_terms );
+            //Trace("inst-gen-debug") << "Check " << score << " < " << selectLitScore << std::endl;
+            selectLit = score<selectLitScore;
+          }
+          //see if we wish to choose this as a selection literal
+          d_quant_selection_lit_candidates[f].push_back( value ? n : n.notNode() );
+          if( selectLit ){
+            selectLitScore = getSelectionScore( uf_terms );
+            Trace("inst-gen-debug") << "Choose selection literal " << gn << std::endl;
+            Trace("inst-gen-debug") << "  flags: " << isConst << " " << selectLitConstraints << " " << selectLitScore << std::endl;
+            d_quant_selection_lit[f] = value ? n : n.notNode();
+            selectionLitTerms.clear();
+            selectionLitTerms.insert( selectionLitTerms.begin(), uf_terms.begin(), uf_terms.end() );
+            if( !selectLitConstraints ){
+              break;
+            }
+          }
+          pref = 1;
+        }else{
+          pref = -1;
+        }
+        //if we are not yet SAT, so we will add to preferences
+        if( d_qe->getModel()->isQuantifierActive( f ) ){
+          Debug("fmf-model-prefs") << "  It is " << ( pref==1 ? "pro" : "con" );
+          Debug("fmf-model-prefs") << " the definition of " << n << std::endl;
+          for( int j=0; j<(int)uf_terms.size(); j++ ){
+            pro_con[ pref==1 ? 0 : 1 ].push_back( uf_terms[j] );
+          }
+        }
+      }
+    }
+    //process information about selection literal for f
+    if( !d_quant_selection_lit[f].isNull() ){
+      d_quant_selection_lit_terms[f].insert( d_quant_selection_lit_terms[f].begin(), selectionLitTerms.begin(), selectionLitTerms.end() );
+      for( int i=0; i<(int)selectionLitTerms.size(); i++ ){
+        d_term_selection_lit[ selectionLitTerms[i] ] = d_quant_selection_lit[f];
+        d_op_selection_terms[ selectionLitTerms[i].getOperator() ].push_back( selectionLitTerms[i] );
+      }
+    }else{
+      Trace("inst-gen-warn") << "WARNING: " << f << " has no selection literals" << std::endl;
+    }
+    //process information about requirements and preferences of quantifier f
+    if( !d_qe->getModel()->isQuantifierActive( f ) ){
+      Debug("fmf-model-prefs") << "  * Constant SAT due to definition of ops: ";
+      for( int i=0; i<(int)selectionLitTerms.size(); i++ ){
+        Debug("fmf-model-prefs") << selectionLitTerms[i] << " ";
+        d_uf_prefs[ selectionLitTerms[i].getOperator() ].d_reconsiderModel = false;
+      }
+      Debug("fmf-model-prefs") << std::endl;
+    }else{
+      //note quantifier's value preferences to models
+      for( int k=0; k<2; k++ ){
+        for( int j=0; j<(int)pro_con[k].size(); j++ ){
+          Node op = pro_con[k][j].getOperator();
+          Node r = fmig->getRepresentative( pro_con[k][j] );
+          d_uf_prefs[op].setValuePreference( f, pro_con[k][j], r, k==0 );
+        }
+      }
+    }
+  }
+}
+
+int QModelBuilderDefault::doInstGen( FirstOrderModel* fm, Node f ){
+  int addedLemmas = 0;
+  //we wish to add all known exceptions to our selection literal for f. this will help to refine our current model.
+  //This step is advantageous over exhaustive instantiation, since we are adding instantiations that involve model basis terms,
+  //  effectively acting as partial instantiations instead of pointwise instantiations.
+  if( !d_quant_selection_lit[f].isNull() ){
+    Trace("inst-gen") << "Do Inst-Gen for " << f << std::endl;
+    for( size_t i=0; i<d_quant_selection_lit_candidates[f].size(); i++ ){
+      bool phase = d_quant_selection_lit_candidates[f][i].getKind()!=NOT;
+      Node lit = d_quant_selection_lit_candidates[f][i].getKind()==NOT ? d_quant_selection_lit_candidates[f][i][0] : d_quant_selection_lit_candidates[f][i];
+      Assert( TermDb::hasInstConstAttr(lit) );
+      std::vector< Node > tr_terms;
+      if( lit.getKind()==APPLY_UF ){
+        //only match predicates that are contrary to this one, use literal matching
+        Node eq = NodeManager::currentNM()->mkNode( EQUAL, lit, !phase ? fm->d_true : fm->d_false );
+        tr_terms.push_back( eq );
+      }else if( lit.getKind()==EQUAL ){
+        //collect trigger terms
+        for( int j=0; j<2; j++ ){
+          if( TermDb::hasInstConstAttr(lit[j]) ){
+            if( lit[j].getKind()==APPLY_UF ){
+              tr_terms.push_back( lit[j] );
+            }else{
+              tr_terms.clear();
+              break;
+            }
+          }
+        }
+        if( tr_terms.size()==1 && !phase ){
+          //equality between a function and a ground term, use literal matching
+          tr_terms.clear();
+          tr_terms.push_back( lit );
+        }
+      }
+      //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, true, inst::Trigger::TR_MAKE_NEW );
+        //Notice() << "Trigger = " << (*tr) << std::endl;
+        tr->resetInstantiationRound();
+        tr->reset( Node::null() );
+        //d_qe->d_optInstMakeRepresentative = false;
+        //d_qe->d_optMatchIgnoreModelBasis = true;
+        addedLemmas += tr->addInstantiations( d_quant_basis_match[f] );
+      }
+    }
+  }
+  return addedLemmas;
+}
+
+void QModelBuilderDefault::constructModelUf( FirstOrderModel* fm, Node op ){
+  FirstOrderModelIG* fmig = fm->asFirstOrderModelIG();
+  if( optReconsiderFuncConstants() ){
+    //reconsider constant functions that weren't necessary
+    if( d_uf_model_constructed[op] ){
+      if( d_uf_prefs[op].d_reconsiderModel ){
+        //if we are allowed to reconsider default value, then see if the default value can be improved
+        Node v = d_uf_prefs[op].d_const_val;
+        if( d_uf_prefs[op].d_value_pro_con[0][v].empty() ){
+          Debug("fmf-model-cons-debug") << "Consider changing the default value for " << op << std::endl;
+          fmig->d_uf_model_tree[op].clear();
+          fmig->d_uf_model_gen[op].clear();
+          d_uf_model_constructed[op] = false;
+        }
+      }
+    }
+  }
+  if( !d_uf_model_constructed[op] ){
+    //construct the model for the uninterpretted function/predicate
+    bool setDefaultVal = true;
+    Node defaultTerm = d_qe->getTermDatabase()->getModelBasisOpTerm( op );
+    Trace("fmf-model-cons") << "Construct model for " << op << "..." << std::endl;
+    //set the values in the model
+    for( size_t i=0; i<fmig->d_uf_terms[op].size(); i++ ){
+      Node n = fmig->d_uf_terms[op][i];
+      if( isTermActive( n ) ){
+        Node v = fmig->getRepresentative( n );
+        Trace("fmf-model-cons") << "Set term " << n << " : " << fmig->d_rep_set.getIndexFor( v ) << " " << v << std::endl;
+        //if this assertion did not help the model, just consider it ground
+        //set n = v in the model tree
+        //set it as ground value
+        fmig->d_uf_model_gen[op].setValue( fm, n, v );
+        if( fmig->d_uf_model_gen[op].optUsePartialDefaults() ){
+          //also set as default value if necessary
+          if( n.hasAttribute(ModelBasisArgAttribute()) && n.getAttribute(ModelBasisArgAttribute())!=0 ){
+            Trace("fmf-model-cons") << "  Set as default." << std::endl;
+            fmig->d_uf_model_gen[op].setValue( fm, n, v, false );
+            if( n==defaultTerm ){
+              //incidentally already set, we will not need to find a default value
+              setDefaultVal = false;
+            }
+          }
+        }else{
+          if( n==defaultTerm ){
+            fmig->d_uf_model_gen[op].setValue( fm, n, v, false );
+            //incidentally already set, we will not need to find a default value
+            setDefaultVal = false;
+          }
+        }
+      }
+    }
+    //set the overall default value if not set already  (is this necessary??)
+    if( setDefaultVal ){
+      Trace("fmf-model-cons") << "  Choose default value..." << std::endl;
+      //chose defaultVal based on heuristic, currently the best ratio of "pro" responses
+      Node defaultVal = d_uf_prefs[op].getBestDefaultValue( defaultTerm, fm );
+      if( defaultVal.isNull() ){
+        if (!fmig->d_rep_set.hasType(defaultTerm.getType())) {
+          Node mbt = d_qe->getTermDatabase()->getModelBasisTerm(defaultTerm.getType());
+          fmig->d_rep_set.d_type_reps[defaultTerm.getType()].push_back(mbt);
+        }
+        defaultVal = fmig->d_rep_set.d_type_reps[defaultTerm.getType()][0];
+      }
+      Assert( !defaultVal.isNull() );
+      Trace("fmf-model-cons") << "Set default term : " << fmig->d_rep_set.getIndexFor( defaultVal ) << std::endl;
+      fmig->d_uf_model_gen[op].setValue( fm, defaultTerm, defaultVal, false );
+    }
+    Debug("fmf-model-cons") << "  Making model...";
+    fmig->d_uf_model_gen[op].makeModel( fm, fmig->d_uf_model_tree[op] );
+    d_uf_model_constructed[op] = true;
+    Debug("fmf-model-cons") << "  Finished constructing model for " << op << "." << std::endl;
+  }
+}
diff --git a/src/theory/quantifiers/model_builder.h b/src/theory/quantifiers/model_builder.h
new file mode 100644
index 0000000..e1f5865
--- /dev/null
+++ b/src/theory/quantifiers/model_builder.h
@@ -0,0 +1,196 @@
+/*********************                                                        */
+/*! \file model_builder.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Model Builder class
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANTIFIERS__MODEL_BUILDER_H
+#define __CVC4__THEORY__QUANTIFIERS__MODEL_BUILDER_H
+
+#include "theory/quantifiers_engine.h"
+#include "theory/theory_model.h"
+#include "theory/uf/theory_uf_model.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+
+class QModelBuilder : public TheoryEngineModelBuilder
+{
+protected:
+  //the model we are working with
+  context::CDO< FirstOrderModel* > d_curr_model;
+  //quantifiers engine
+  QuantifiersEngine* d_qe;
+  void preProcessBuildModel(TheoryModel* m, bool fullModel);
+  void preProcessBuildModelStd(TheoryModel* m, bool fullModel);
+public:
+  QModelBuilder( context::Context* c, QuantifiersEngine* qe );
+  virtual ~QModelBuilder() throw() {}
+  //do exhaustive instantiation  
+  // 0 :  failed, but resorting to true exhaustive instantiation may work
+  // >0 : success
+  // <0 : failed
+  virtual int doExhaustiveInstantiation( FirstOrderModel * fm, Node f, int effort ) { return false; }
+  //whether to construct model
+  virtual bool optUseModel();
+  /** number of lemmas generated while building model */
+  int d_addedLemmas;
+  int d_triedLemmas;
+  /** exist instantiation ? */
+  virtual bool existsInstantiation( Node f, InstMatch& m, bool modEq = true, bool modInst = false ) { return false; }
+  //debug model
+  void debugModel( FirstOrderModel* fm );
+};
+
+
+
+
+
+class TermArgBasisTrie {
+private:
+  bool addTerm2( FirstOrderModel* fm, Node n, int argIndex );
+public:
+  /** the data */
+  std::map< Node, TermArgBasisTrie > d_data;
+public:
+  bool addTerm( FirstOrderModel* fm, Node n ) { return addTerm2( fm, n, 0 ); }
+};/* class TermArgBasisTrie */
+
+/** model builder class
+  *  This class is capable of building candidate models based on the current quantified formulas
+  *  that are asserted.  Use:
+  *  (1) call QModelBuilder::buildModel( m, false );, where m is a FirstOrderModel
+  *  (2) if candidate model is determined to be a real model,
+           then call QModelBuilder::buildModel( m, true );
+  */
+class QModelBuilderIG : public QModelBuilder
+{
+  typedef context::CDHashMap<Node, bool, NodeHashFunction> BoolMap;
+protected:
+  BoolMap d_basisNoMatch;
+  //map from operators to model preference data
+  std::map< Node, uf::UfModelPreferenceData > d_uf_prefs;
+  //built model uf
+  std::map< Node, bool > d_uf_model_constructed;
+  //whether inst gen was done
+  bool d_didInstGen;
+  /** process build model */
+  virtual void processBuildModel( TheoryModel* m, bool fullModel );
+  /** get current model value */
+  Node getCurrentUfModelValue( FirstOrderModel* fm, Node n, std::vector< Node > & args, bool partial );
+protected:
+  //reset
+  virtual void reset( FirstOrderModel* fm ) = 0;
+  //initialize quantifiers, return number of lemmas produced
+  virtual int initializeQuantifier( Node f, Node fp );
+  //analyze model
+  virtual void analyzeModel( FirstOrderModel* fm );
+  //analyze quantifiers
+  virtual void analyzeQuantifier( FirstOrderModel* fm, Node f ) = 0;
+  //do InstGen techniques for quantifier, return number of lemmas produced
+  virtual int doInstGen( FirstOrderModel* fm, Node f ) = 0;
+  //theory-specific build models
+  virtual void constructModelUf( FirstOrderModel* fm, Node op ) = 0;
+protected:
+  //map from quantifiers to if are SAT
+  //std::map< Node, bool > d_quant_sat;
+  //which quantifiers have been initialized
+  std::map< Node, bool > d_quant_basis_match_added;
+  //map from quantifiers to model basis match
+  std::map< Node, InstMatch > d_quant_basis_match;
+protected:  //helper functions
+  /** term has constant definition */
+  bool hasConstantDefinition( Node n );
+public:
+  QModelBuilderIG( context::Context* c, QuantifiersEngine* qe );
+  virtual ~QModelBuilderIG() throw() {}
+public:
+  /** statistics class */
+  class Statistics {
+  public:
+    IntStat d_num_quants_init;
+    IntStat d_num_partial_quants_init;
+    IntStat d_init_inst_gen_lemmas;
+    IntStat d_inst_gen_lemmas;
+    IntStat d_eval_formulas;
+    IntStat d_eval_uf_terms;
+    IntStat d_eval_lits;
+    IntStat d_eval_lits_unknown;
+    Statistics();
+    ~Statistics();
+  };
+  Statistics d_statistics;
+  // is term active
+  bool isTermActive( Node n );
+  // is term selected
+  virtual bool isTermSelected( Node n ) { return false; }
+  /** quantifier has inst-gen definition */
+  virtual bool hasInstGen( Node f ) = 0;
+  /** did inst gen this round? */
+  bool didInstGen() { return d_didInstGen; }
+  // is quantifier active?
+  bool isQuantifierActive( Node f );
+  //do exhaustive instantiation
+  int doExhaustiveInstantiation( FirstOrderModel * fm, Node f, int effort );
+
+  //temporary stats
+  int d_numQuantSat;
+  int d_numQuantInstGen;
+  int d_numQuantNoInstGen;
+  int d_numQuantNoSelForm;
+  //temporary stat
+  int d_instGenMatches;
+};/* class QModelBuilder */
+
+
+class QModelBuilderDefault : public QModelBuilderIG
+{
+private:    ///information for (old) InstGen
+  //map from quantifiers to their selection literals
+  std::map< Node, Node > d_quant_selection_lit;
+  std::map< Node, std::vector< Node > > d_quant_selection_lit_candidates;
+  //map from quantifiers to their selection literal terms
+  std::map< Node, std::vector< Node > > d_quant_selection_lit_terms;
+  //map from terms to the selection literals they exist in
+  std::map< Node, Node > d_term_selection_lit;
+  //map from operators to terms that appear in selection literals
+  std::map< Node, std::vector< Node > > d_op_selection_terms;
+  //get selection score
+  int getSelectionScore( std::vector< Node >& uf_terms );
+protected:
+  //reset
+  void reset( FirstOrderModel* fm );
+  //analyze quantifier
+  void analyzeQuantifier( FirstOrderModel* fm, Node f );
+  //do InstGen techniques for quantifier, return number of lemmas produced
+  int doInstGen( FirstOrderModel* fm, Node f );
+  //theory-specific build models
+  void constructModelUf( FirstOrderModel* fm, Node op );
+protected:
+  std::map< Node, QuantPhaseReq > d_phase_reqs;
+public:
+  QModelBuilderDefault( context::Context* c, QuantifiersEngine* qe ) : QModelBuilderIG( c, qe ){}
+  ~QModelBuilderDefault() throw() {}
+  //options
+  bool optReconsiderFuncConstants() { return true; }
+  //has inst gen
+  bool hasInstGen( Node f ) { return !d_quant_selection_lit[f].isNull(); }
+};
+
+}/* CVC4::theory::quantifiers namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__QUANTIFIERS__MODEL_BUILDER_H */
diff --git a/src/theory/quantifiers/model_engine.cpp b/src/theory/quantifiers/model_engine.cpp
new file mode 100644
index 0000000..9496f63
--- /dev/null
+++ b/src/theory/quantifiers/model_engine.cpp
@@ -0,0 +1,317 @@
+/*********************                                                        */
+/*! \file model_engine.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of model engine class
+ **/
+
+#include "theory/quantifiers/model_engine.h"
+
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/ambqi_builder.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/full_model_check.h"
+#include "theory/quantifiers/quantifiers_attributes.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/theory_engine.h"
+#include "theory/uf/equality_engine.h"
+#include "theory/uf/theory_uf.h"
+#include "theory/uf/theory_uf_strong_solver.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+using namespace CVC4::theory::inst;
+
+//Model Engine constructor
+ModelEngine::ModelEngine( context::Context* c, QuantifiersEngine* qe ) :
+QuantifiersModule( qe ),
+d_incomplete_check(true),
+d_addedLemmas(0),
+d_triedLemmas(0),
+d_totalLemmas(0)
+{
+
+}
+
+ModelEngine::~ModelEngine() {
+
+}
+
+bool ModelEngine::needsCheck( Theory::Effort e ) {
+  return e==Theory::EFFORT_LAST_CALL;
+}
+
+unsigned ModelEngine::needsModel( Theory::Effort e ) {
+  return QuantifiersEngine::QEFFORT_MODEL;
+}
+
+void ModelEngine::reset_round( Theory::Effort e ) {
+  d_incomplete_check = true;
+}
+
+void ModelEngine::check( Theory::Effort e, unsigned quant_e ){
+  if( quant_e==QuantifiersEngine::QEFFORT_MODEL ){
+    Assert( !d_quantEngine->inConflict() );
+    int addedLemmas = 0;
+    FirstOrderModel* fm = d_quantEngine->getModel();
+
+    //the following will test that the model satisfies all asserted universal quantifiers by
+    // (model-based) exhaustive instantiation.
+    double clSet = 0;
+    if( Trace.isOn("model-engine") ){
+      Trace("model-engine") << "---Model Engine Round---" << std::endl;
+      clSet = double(clock())/double(CLOCKS_PER_SEC);
+    }
+
+    Trace("model-engine-debug") << "Verify uf ss is minimal..." << std::endl;
+    //let the strong solver verify that the model is minimal
+    //for debugging, this will if there are terms in the model that the strong solver was not notified of
+    uf::StrongSolverTheoryUF * ufss = ((uf::TheoryUF*)d_quantEngine->getTheoryEngine()->theoryOf( THEORY_UF ))->getStrongSolver();
+    if( !ufss || ufss->debugModel( fm ) ){
+      Trace("model-engine-debug") << "Check model..." << std::endl;
+      d_incomplete_check = false;
+      //print debug
+      if( Trace.isOn("fmf-model-complete") ){
+        Trace("fmf-model-complete") << std::endl;
+        debugPrint("fmf-model-complete");
+      }
+      //successfully built an acceptable model, now check it
+      addedLemmas += checkModel();
+    }else{
+      addedLemmas++;
+    }
+
+    if( Trace.isOn("model-engine") ){
+      double clSet2 = double(clock())/double(CLOCKS_PER_SEC);
+      Trace("model-engine") << "Finished model engine, time = " << (clSet2-clSet) << std::endl;
+    }
+
+    if( addedLemmas==0 ){
+      Trace("model-engine-debug") << "No lemmas added, incomplete = " << ( d_incomplete_check || !d_incomplete_quants.empty() ) << std::endl;
+      //CVC4 will answer SAT or unknown
+      if( Trace.isOn("fmf-consistent") ){
+        Trace("fmf-consistent") << std::endl;
+        debugPrint("fmf-consistent");
+      }
+    }
+  }
+}
+
+bool ModelEngine::checkComplete() {
+  return !d_incomplete_check;
+}
+
+bool ModelEngine::checkCompleteFor( Node q ) {
+  return std::find( d_incomplete_quants.begin(), d_incomplete_quants.end(), q )==d_incomplete_quants.end();
+}
+
+void ModelEngine::registerQuantifier( Node f ){
+  if( Trace.isOn("fmf-warn") ){
+    bool canHandle = true;
+    for( unsigned i=0; i<f[0].getNumChildren(); i++ ){
+      TypeNode tn = f[0][i].getType();
+      if( !tn.isSort() ){
+        if( !tn.getCardinality().isFinite() ){
+          if( tn.isInteger() ){
+            if( !options::fmfBound() ){
+              canHandle = false;
+            }
+          }else{
+            canHandle = false;
+          }
+        }
+      }
+    }
+    if( !canHandle ){
+      Trace("fmf-warn") << "Warning : Model Engine : may not be able to answer SAT because of formula : " << f << std::endl;
+    }
+  }
+}
+
+void ModelEngine::assertNode( Node f ){
+
+}
+
+bool ModelEngine::optOneQuantPerRound(){
+  return options::fmfOneQuantPerRound();
+}
+
+
+int ModelEngine::checkModel(){
+  FirstOrderModel* fm = d_quantEngine->getModel();
+
+  //flatten the representatives
+  //Trace("model-engine-debug") << "Flattening representatives...." << std::endl;
+  //d_quantEngine->getEqualityQuery()->flattenRepresentatives( fm->d_rep_set.d_type_reps );
+
+  //for debugging
+  for( std::map< TypeNode, std::vector< Node > >::iterator it = fm->d_rep_set.d_type_reps.begin();
+       it != fm->d_rep_set.d_type_reps.end(); ++it ){
+    if( it->first.isSort() ){
+      Trace("model-engine") << "Cardinality( " << it->first << " )" << " = " << it->second.size() << std::endl;
+      Trace("model-engine-debug") << "        Reps : ";
+      for( size_t i=0; i<it->second.size(); i++ ){
+        Trace("model-engine-debug") << it->second[i] << "  ";
+      }
+      Trace("model-engine-debug") << std::endl;
+      Trace("model-engine-debug") << "   Term reps : ";
+      for( size_t i=0; i<it->second.size(); i++ ){
+        Node r = d_quantEngine->getEqualityQuery()->getInternalRepresentative( it->second[i], Node::null(), 0 );
+        Trace("model-engine-debug") << r << " ";
+      }
+      Trace("model-engine-debug") << std::endl;
+      Node mbt = d_quantEngine->getTermDatabase()->getModelBasisTerm(it->first);
+      Trace("model-engine-debug") << "  Basis term : " << mbt << std::endl;
+    }
+  }
+
+  d_triedLemmas = 0;
+  d_addedLemmas = 0;
+  d_totalLemmas = 0;
+  //for statistics
+  if( Trace.isOn("model-engine") ){
+    for( unsigned i=0; i<fm->getNumAssertedQuantifiers(); i++ ){
+      Node f = fm->getAssertedQuantifier( i );
+      if( d_quantEngine->getModel()->isQuantifierActive( f ) && d_quantEngine->hasOwnership( f, this ) ){
+        int totalInst = 1;
+        for( unsigned j=0; j<f[0].getNumChildren(); j++ ){
+          TypeNode tn = f[0][j].getType();
+          if( fm->d_rep_set.hasType( tn ) ){
+            totalInst = totalInst * (int)fm->d_rep_set.d_type_reps[ tn ].size();
+          }
+        }
+        d_totalLemmas += totalInst;
+      }
+    }
+  }
+
+  Trace("model-engine-debug") << "Do exhaustive instantiation..." << std::endl;
+  // FMC uses two sub-effort levels
+  int e_max = options::mbqiMode()==MBQI_FMC || options::mbqiMode()==MBQI_FMC_INTERVAL ? 2 : ( options::mbqiMode()==MBQI_TRUST ? 0 : 1 );
+  for( int e=0; e<e_max; e++) {
+    d_incomplete_quants.clear();
+    for( unsigned i=0; i<fm->getNumAssertedQuantifiers(); i++ ){
+      Node q = fm->getAssertedQuantifier( i, true );
+      Trace("fmf-exh-inst") << "-> Exhaustive instantiate " << q << ", effort = " << e << "..." << std::endl;
+      //determine if we should check this quantifier
+      if( d_quantEngine->getModel()->isQuantifierActive( q ) && d_quantEngine->hasOwnership( q, this ) ){
+        exhaustiveInstantiate( q, e );
+        if( d_quantEngine->inConflict() || ( optOneQuantPerRound() && d_addedLemmas>0 ) ){
+          break;
+        }
+      }else{
+        Trace("fmf-exh-inst") << "-> Inactive : " << q << std::endl;
+      }
+    }
+    if( d_addedLemmas>0 ){
+      break;
+    }else{
+      Assert( !d_quantEngine->inConflict() );
+    }
+  }
+
+  //print debug information
+  if( d_quantEngine->inConflict() ){
+    Trace("model-engine") << "Conflict, added lemmas = ";
+  }else{
+    Trace("model-engine") << "Added Lemmas = ";
+  } 
+  Trace("model-engine") << d_addedLemmas << " / " << d_triedLemmas << " / ";
+  Trace("model-engine") << d_totalLemmas << std::endl;
+  return d_addedLemmas;
+}
+
+
+
+void ModelEngine::exhaustiveInstantiate( Node f, int effort ){
+  //first check if the builder can do the exhaustive instantiation
+  quantifiers::QModelBuilder * mb = d_quantEngine->getModelBuilder();
+  mb->d_triedLemmas = 0;
+  mb->d_addedLemmas = 0;
+  int retEi = mb->doExhaustiveInstantiation( d_quantEngine->getModel(), f, effort );
+  if( retEi!=0 ){
+    if( retEi<0 ){
+      Trace("fmf-exh-inst") << "-> Builder determined complete instantiation was impossible." << std::endl;
+      d_incomplete_quants.push_back( f );
+    }else{
+      Trace("fmf-exh-inst") << "-> Builder determined instantiation(s)." << std::endl;
+    }
+    d_triedLemmas += mb->d_triedLemmas;
+    d_addedLemmas += mb->d_addedLemmas;
+    d_quantEngine->d_statistics.d_instantiations_fmf_mbqi += mb->d_addedLemmas;
+  }else{
+    if( Trace.isOn("fmf-exh-inst-debug") ){
+      Trace("fmf-exh-inst-debug") << "   Instantiation Constants: ";
+      for( size_t i=0; i<f[0].getNumChildren(); i++ ){
+        Trace("fmf-exh-inst-debug") << d_quantEngine->getTermDatabase()->getInstantiationConstant( f, i ) << " ";
+      }
+      Trace("fmf-exh-inst-debug") << std::endl;
+    }
+    //create a rep set iterator and iterate over the (relevant) domain of the quantifier
+    RepSetIterator riter( d_quantEngine, &(d_quantEngine->getModel()->d_rep_set) );
+    if( riter.setQuantifier( f ) ){
+      Trace("fmf-exh-inst") << "...exhaustive instantiation set, incomplete=" << riter.isIncomplete() << "..." << std::endl;
+      if( !riter.isIncomplete() ){
+        int triedLemmas = 0;
+        int addedLemmas = 0;
+        while( !riter.isFinished() && ( addedLemmas==0 || !options::fmfOneInstPerRound() ) ){
+          //instantiation was not shown to be true, construct the match
+          InstMatch m( f );
+          for( int i=0; i<riter.getNumTerms(); i++ ){
+            m.set( d_quantEngine, i, riter.getCurrentTerm( i ) );
+          }
+          Debug("fmf-model-eval") << "* Add instantiation " << m << std::endl;
+          triedLemmas++;
+          //add as instantiation
+          if( d_quantEngine->addInstantiation( f, m, true ) ){
+            addedLemmas++;
+            if( d_quantEngine->inConflict() ){
+              break;
+            }
+          }else{
+            Debug("fmf-model-eval") << "* Failed Add instantiation " << m << std::endl;
+          }
+          riter.increment();
+        }
+        d_addedLemmas += addedLemmas;
+        d_triedLemmas += triedLemmas;
+        d_quantEngine->d_statistics.d_instantiations_fmf_exh += addedLemmas;
+      }
+    }else{
+      Trace("fmf-exh-inst") << "...exhaustive instantiation did set, incomplete=" << riter.isIncomplete() << "..." << std::endl;
+    }
+    //if the iterator is incomplete, we will return unknown instead of sat if no instantiations are added this round
+    if( riter.isIncomplete() ){
+      d_incomplete_quants.push_back( f );
+    }
+  }
+}
+
+void ModelEngine::debugPrint( const char* c ){
+  Trace( c ) << "Quantifiers: " << std::endl;
+  for( unsigned i=0; i<d_quantEngine->getModel()->getNumAssertedQuantifiers(); i++ ){
+    Node q = d_quantEngine->getModel()->getAssertedQuantifier( i );
+    if( d_quantEngine->hasOwnership( q, this ) ){
+      Trace( c ) << "   ";
+      if( !d_quantEngine->getModel()->isQuantifierActive( q ) ){
+        Trace( c ) << "*Inactive* ";
+      }else{
+        Trace( c ) << "           ";
+      }
+      Trace( c ) << q << std::endl;
+    }
+  }
+  //d_quantEngine->getModel()->debugPrint( c );
+}
+
diff --git a/src/theory/quantifiers/model_engine.h b/src/theory/quantifiers/model_engine.h
new file mode 100644
index 0000000..728539e
--- /dev/null
+++ b/src/theory/quantifiers/model_engine.h
@@ -0,0 +1,70 @@
+/*********************                                                        */
+/*! \file model_engine.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Model Engine class
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANTIFIERS__MODEL_ENGINE_H
+#define __CVC4__THEORY__QUANTIFIERS__MODEL_ENGINE_H
+
+#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/model_builder.h"
+#include "theory/theory_model.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+class ModelEngine : public QuantifiersModule
+{
+  friend class RepSetIterator;
+private:
+  //options
+  bool optOneQuantPerRound();
+private:
+  //check model
+  int checkModel();
+  //exhaustively instantiate quantifier (possibly using mbqi)
+  void exhaustiveInstantiate( Node f, int effort = 0 );
+private:
+  //temporary statistics
+  //is the exhaustive instantiation incomplete?
+  bool d_incomplete_check;
+  // set of quantified formulas for which check was incomplete
+  std::vector< Node > d_incomplete_quants;
+  int d_addedLemmas;
+  int d_triedLemmas;
+  int d_totalLemmas;
+public:
+  ModelEngine( context::Context* c, QuantifiersEngine* qe );
+  virtual ~ModelEngine();
+public:
+  bool needsCheck( Theory::Effort e );
+  unsigned needsModel( Theory::Effort e );
+  void reset_round( Theory::Effort e );
+  void check( Theory::Effort e, unsigned quant_e );
+  bool checkComplete();
+  bool checkCompleteFor( Node q );
+  void registerQuantifier( Node f );
+  void assertNode( Node f );
+  Node explain(TNode n){ return Node::null(); }
+  void debugPrint( const char* c );
+  /** Identify this module */
+  std::string identify() const { return "ModelEngine"; }
+};/* class ModelEngine */
+
+}/* CVC4::theory::quantifiers namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__QUANTIFIERS__MODEL_ENGINE_H */
diff --git a/src/theory/quantifiers/quant_conflict_find.cpp b/src/theory/quantifiers/quant_conflict_find.cpp
new file mode 100644
index 0000000..420a3d2
--- /dev/null
+++ b/src/theory/quantifiers/quant_conflict_find.cpp
@@ -0,0 +1,2270 @@
+/*********************                                                        */
+/*! \file quant_conflict_find.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Clark Barrett, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief quant conflict find class
+ **
+ **/
+
+#include "theory/quantifiers/quant_conflict_find.h"
+
+#include <vector>
+
+#include "options/quantifiers_options.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/quantifiers/quant_util.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/trigger.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/theory_engine.h"
+
+using namespace CVC4::kind;
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+QuantInfo::QuantInfo()
+    : d_mg( NULL )
+{}
+
+QuantInfo::~QuantInfo() {
+  delete d_mg;
+  for(std::map< int, MatchGen * >::iterator i = d_var_mg.begin(),
+          iend=d_var_mg.end(); i != iend; ++i) {
+    MatchGen* currentMatchGenerator = (*i).second;
+    delete currentMatchGenerator;
+  }
+  d_var_mg.clear();
+}
+
+
+void QuantInfo::initialize( QuantConflictFind * p, Node q, Node qn ) {
+  d_q = q;
+  d_extra_var.clear();
+  for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
+    d_match.push_back( TNode::null() );
+    d_match_term.push_back( TNode::null() );
+  }
+
+  //register the variables
+  for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
+    d_var_num[q[0][i]] = i;
+    d_vars.push_back( q[0][i] );
+    d_var_types.push_back( q[0][i].getType() );
+  }
+
+  registerNode( qn, true, true );
+
+
+  Trace("qcf-qregister") << "- Make match gen structure..." << std::endl;
+  d_mg = new MatchGen( this, qn );
+
+  if( d_mg->isValid() ){
+    /*
+    for( unsigned j=0; j<q[0].getNumChildren(); j++ ){
+      if( d_inMatchConstraint.find( q[0][j] )==d_inMatchConstraint.end() ){
+        Trace("qcf-invalid") << "QCF invalid : variable " << q[0][j] << " does not exist in a matching constraint." << std::endl;
+        d_mg->setInvalid();
+        break;
+      }
+    }
+    */
+    for( unsigned j=q[0].getNumChildren(); j<d_vars.size(); j++ ){
+      if( d_vars[j].getKind()!=BOUND_VARIABLE ){
+        d_var_mg[j] = NULL;
+        bool is_tsym = false;
+        if( !MatchGen::isHandledUfTerm( d_vars[j] ) && d_vars[j].getKind()!=ITE ){
+          is_tsym = true;
+          d_tsym_vars.push_back( j );
+        }
+        if( !is_tsym || options::qcfTConstraint() ){
+          d_var_mg[j] = new MatchGen( this, d_vars[j], true );
+        }
+        if( !d_var_mg[j] || !d_var_mg[j]->isValid() ){
+          Trace("qcf-invalid") << "QCF invalid : cannot match for " << d_vars[j] << std::endl;
+          d_mg->setInvalid();
+          break;
+        }else{
+          std::vector< int > bvars;
+          d_var_mg[j]->determineVariableOrder( this, bvars );
+        }
+      }
+    }
+    if( d_mg->isValid() ){
+      std::vector< int > bvars;
+      d_mg->determineVariableOrder( this, bvars );
+    }
+  }else{
+    Trace("qcf-invalid") << "QCF invalid : body of formula cannot be processed." << std::endl;
+  }
+  Trace("qcf-qregister-summary") << "QCF register : " << ( d_mg->isValid() ? "VALID " : "INVALID" ) << " : " << q << std::endl;
+  
+  if( d_mg->isValid() && options::qcfEagerCheckRd() ){
+    //optimization : record variable argument positions for terms that must be matched
+    std::vector< TNode > vars;
+    //TODO: revisit this, makes QCF faster, but misses conflicts due to caring about paths that may not be relevant (starExec jobs 14136/14137)
+    if( options::qcfSkipRd() ){
+      for( unsigned j=q[0].getNumChildren(); j<d_vars.size(); j++ ){
+        vars.push_back( d_vars[j] );
+      }
+    }else{
+      //get all variables that are always relevant
+      std::map< TNode, bool > visited;
+      getPropagateVars( p, vars, q[1], false, visited );
+    }
+    for( unsigned j=0; j<vars.size(); j++ ){
+      Node v = vars[j];
+      TNode f = p->getTermDatabase()->getMatchOperator( v );
+      if( !f.isNull() ){
+        Trace("qcf-opt") << "Record variable argument positions in " << v << ", op=" << f << "..." << std::endl;
+        for( unsigned k=0; k<v.getNumChildren(); k++ ){
+          Node n = v[k];
+          std::map< TNode, int >::iterator itv = d_var_num.find( n );
+          if( itv!=d_var_num.end() ){
+            Trace("qcf-opt") << "  arg " << k << " is var #" << itv->second << std::endl;
+            if( std::find( d_var_rel_dom[itv->second][f].begin(), d_var_rel_dom[itv->second][f].end(), k )==d_var_rel_dom[itv->second][f].end() ){
+              d_var_rel_dom[itv->second][f].push_back( k );
+            }
+          }
+        }
+      }
+    }    
+  }
+}
+
+void QuantInfo::getPropagateVars( QuantConflictFind * p, std::vector< TNode >& vars, TNode n, bool pol, std::map< TNode, bool >& visited ){
+  std::map< TNode, bool >::iterator itv = visited.find( n );
+  if( itv==visited.end() ){
+    visited[n] = true;
+    bool rec = true;
+    bool newPol = pol;
+    if( d_var_num.find( n )!=d_var_num.end() ){
+      Assert( std::find( vars.begin(), vars.end(), n )==vars.end() );
+      vars.push_back( n );
+      TNode f = p->getTermDatabase()->getMatchOperator( n );
+      if( !f.isNull() ){
+        if( std::find( p->d_func_rel_dom[f].begin(), p->d_func_rel_dom[f].end(), d_q )==p->d_func_rel_dom[f].end() ){
+          p->d_func_rel_dom[f].push_back( d_q );
+        }
+      } 
+    }else if( MatchGen::isHandledBoolConnective( n ) ){
+      Assert( n.getKind()!=IMPLIES );
+      QuantPhaseReq::getEntailPolarity( n, 0, true, pol, rec, newPol );
+    }
+    Trace("qcf-opt-debug") << "getPropagateVars " << n << ", pol = " << pol << ", rec = " << rec << std::endl;
+    if( rec ){
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        getPropagateVars( p, vars, n[i], pol, visited );
+      }
+    }
+  }
+}
+
+bool QuantInfo::isBaseMatchComplete() {
+  return d_vars_set.size()==(d_q[0].getNumChildren()+d_extra_var.size());
+}
+
+void QuantInfo::registerNode( Node n, bool hasPol, bool pol, bool beneathQuant ) {
+  Trace("qcf-qregister-debug2") << "Register : " << n << std::endl;
+  if( n.getKind()==FORALL ){
+    registerNode( n[1], hasPol, pol, true );
+  }else{
+    if( !MatchGen::isHandledBoolConnective( n ) ){
+      if( n.hasBoundVar() ){
+        //literals
+        if( n.getKind()==EQUAL ){
+          for( unsigned i=0; i<n.getNumChildren(); i++ ){
+            flatten( n[i], beneathQuant );
+          }
+        }else if( MatchGen::isHandledUfTerm( n ) ){
+          flatten( n, beneathQuant );
+        }else if( n.getKind()==ITE ){
+          for( unsigned i=1; i<=2; i++ ){
+            flatten( n[i], beneathQuant );
+          }
+          registerNode( n[0], false, pol, beneathQuant );
+        }else if( options::qcfTConstraint() ){
+          //a theory-specific predicate
+          for( unsigned i=0; i<n.getNumChildren(); i++ ){
+            flatten( n[i], beneathQuant );
+          }
+        }
+      }
+    }else{
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        bool newHasPol;
+        bool newPol;
+        QuantPhaseReq::getPolarity( n, i, hasPol, pol, newHasPol, newPol );
+        //QcfNode * qcfc = new QcfNode( d_c );
+        //qcfc->d_parent = qcf;
+        //qcf->d_child[i] = qcfc;
+        registerNode( n[i], newHasPol, newPol, beneathQuant );
+      }
+    }
+  }
+}
+
+void QuantInfo::flatten( Node n, bool beneathQuant ) {
+  Trace("qcf-qregister-debug2") << "Flatten : " << n << std::endl;
+  if( n.hasBoundVar() ){
+    if( n.getKind()==BOUND_VARIABLE ){
+      d_inMatchConstraint[n] = true;
+    }
+    if( d_var_num.find( n )==d_var_num.end() ){
+      Trace("qcf-qregister-debug2") << "Add FLATTEN VAR : " << n << std::endl;
+      d_var_num[n] = d_vars.size();
+      d_vars.push_back( n );
+      d_var_types.push_back( n.getType() );
+      d_match.push_back( TNode::null() );
+      d_match_term.push_back( TNode::null() );
+      if( n.getKind()==ITE ){
+        registerNode( n, false, false );
+      }else if( n.getKind()==BOUND_VARIABLE ){
+        d_extra_var.push_back( n );
+      }else{
+        for( unsigned i=0; i<n.getNumChildren(); i++ ){
+          flatten( n[i], beneathQuant );
+        }
+      }
+    }else{
+      Trace("qcf-qregister-debug2") << "...already processed" << std::endl;
+    }
+  }else{
+    Trace("qcf-qregister-debug2") << "...is ground." << std::endl;
+  }
+}
+
+
+bool QuantInfo::reset_round( QuantConflictFind * p ) {
+  for( unsigned i=0; i<d_match.size(); i++ ){
+    d_match[i] = TNode::null();
+    d_match_term[i] = TNode::null();
+  }
+  d_vars_set.clear();
+  d_curr_var_deq.clear();
+  d_tconstraints.clear();
+  
+  //add built-in variable constraints
+  for( unsigned r=0; r<2; r++ ){
+    for( std::map< int, std::vector< Node > >::iterator it = d_var_constraint[r].begin();
+         it != d_var_constraint[r].end(); ++it ){
+      for( unsigned j=0; j<it->second.size(); j++ ){
+        Node rr = it->second[j];
+        if( !isVar( rr ) ){
+          rr = p->getRepresentative( rr );
+        }
+        if( addConstraint( p, it->first, rr, r==0 )==-1 ){
+          d_var_constraint[0].clear();
+          d_var_constraint[1].clear();
+          //quantified formula is actually equivalent to true
+          Trace("qcf-qregister") << "Quantifier is equivalent to true!!!" << std::endl;
+          d_mg->d_children.clear();
+          d_mg->d_n = NodeManager::currentNM()->mkConst( true );
+          d_mg->d_type = MatchGen::typ_ground;
+          return false;
+        }
+      }
+    }
+  }
+  d_mg->reset_round( p );
+  for( std::map< int, MatchGen * >::iterator it = d_var_mg.begin(); it != d_var_mg.end(); ++it ){
+    it->second->reset_round( p );
+  }
+  //now, reset for matching
+  d_mg->reset( p, false, this );
+  return true;
+}
+
+int QuantInfo::getCurrentRepVar( int v ) {
+  if( v!=-1 && !d_match[v].isNull() ){
+    int vn = getVarNum( d_match[v] );
+    if( vn!=-1 ){
+      //int vr = getCurrentRepVar( vn );
+      //d_match[v] = d_vars[vr];
+      //return vr;
+      return getCurrentRepVar( vn );
+    }
+  }
+  return v;
+}
+
+TNode QuantInfo::getCurrentValue( TNode n ) {
+  int v = getVarNum( n );
+  if( v==-1 ){
+    return n;
+  }else{
+    if( d_match[v].isNull() ){
+      return n;
+    }else{
+      Assert( getVarNum( d_match[v] )!=v );
+      return getCurrentValue( d_match[v] );
+    }
+  }
+}
+
+TNode QuantInfo::getCurrentExpValue( TNode n ) {
+  int v = getVarNum( n );
+  if( v==-1 ){
+    return n;
+  }else{
+    if( d_match[v].isNull() ){
+      return n;
+    }else{
+      Assert( getVarNum( d_match[v] )!=v );
+      if( d_match_term[v].isNull() ){
+        return getCurrentValue( d_match[v] );
+      }else{
+        return d_match_term[v];
+      }
+    }
+  }
+}
+
+bool QuantInfo::getCurrentCanBeEqual( QuantConflictFind * p, int v, TNode n, bool chDiseq ) {
+  //check disequalities
+  std::map< int, std::map< TNode, int > >::iterator itd = d_curr_var_deq.find( v );
+  if( itd!=d_curr_var_deq.end() ){
+    for( std::map< TNode, int >::iterator it = itd->second.begin(); it != itd->second.end(); ++it ){
+      Node cv = getCurrentValue( it->first );
+      Debug("qcf-ccbe") << "compare " << cv << " " << n << std::endl;
+      if( cv==n ){
+        return false;
+      }else if( chDiseq && !isVar( n ) && !isVar( cv ) ){
+        //they must actually be disequal if we are looking for conflicts
+        if( !p->areDisequal( n, cv ) ){
+          //TODO : check for entailed disequal
+
+          return false;
+        }
+      }
+    }
+  }
+  return true;
+}
+
+int QuantInfo::addConstraint( QuantConflictFind * p, int v, TNode n, bool polarity ) {
+  v = getCurrentRepVar( v );
+  int vn = getVarNum( n );
+  vn = vn==-1 ? -1 : getCurrentRepVar( vn );
+  n = getCurrentValue( n );
+  return addConstraint( p, v, n, vn, polarity, false );
+}
+
+int QuantInfo::addConstraint( QuantConflictFind * p, int v, TNode n, int vn, bool polarity, bool doRemove ) {
+  //for handling equalities between variables, and disequalities involving variables
+  Debug("qcf-match-debug") << "- " << (doRemove ? "un" : "" ) << "constrain : " << v << " -> " << n << " (cv=" << getCurrentValue( n ) << ")";
+  Debug("qcf-match-debug") << ", (vn=" << vn << "), polarity = " << polarity << std::endl;
+  Assert( doRemove || n==getCurrentValue( n ) );
+  Assert( doRemove || v==getCurrentRepVar( v ) );
+  Assert( doRemove || vn==getCurrentRepVar( getVarNum( n ) ) );
+  if( polarity ){
+    if( vn!=v ){
+      if( doRemove ){
+        if( vn!=-1 ){
+          //if set to this in the opposite direction, clean up opposite instead
+          //          std::map< int, TNode >::iterator itmn = d_match.find( vn );
+          if( d_match[vn]==d_vars[v] ){
+            return addConstraint( p, vn, d_vars[v], v, true, true );
+          }else{
+            //unsetting variables equal
+            std::map< int, std::map< TNode, int > >::iterator itd = d_curr_var_deq.find( vn );
+            if( itd!=d_curr_var_deq.end() ){
+              //remove disequalities owned by this
+              std::vector< TNode > remDeq;
+              for( std::map< TNode, int >::iterator it = itd->second.begin(); it != itd->second.end(); ++it ){
+                if( it->second==v ){
+                  remDeq.push_back( it->first );
+                }
+              }
+              for( unsigned i=0; i<remDeq.size(); i++ ){
+                d_curr_var_deq[vn].erase( remDeq[i] );
+              }
+            }
+          }
+        }
+        unsetMatch( p, v );
+        return 1;
+      }else{
+        //std::map< int, TNode >::iterator itm = d_match.find( v );
+        bool isGroundRep = false;
+        bool isGround = false;
+        if( vn!=-1 ){
+          Debug("qcf-match-debug") << "  ...Variable bound to variable" << std::endl;
+          //std::map< int, TNode >::iterator itmn = d_match.find( vn );
+          if( d_match[v].isNull() ){
+            //setting variables equal
+            bool alreadySet = false;
+            if( !d_match[vn].isNull() ){
+              alreadySet = true;
+              Assert( !isVar( d_match[vn] ) );
+            }
+
+            //copy or check disequalities
+            std::map< int, std::map< TNode, int > >::iterator itd = d_curr_var_deq.find( v );
+            if( itd!=d_curr_var_deq.end() ){
+              for( std::map< TNode, int >::iterator it = itd->second.begin(); it != itd->second.end(); ++it ){
+                Node dv = getCurrentValue( it->first );
+                if( !alreadySet ){
+                  if( d_curr_var_deq[vn].find( dv )==d_curr_var_deq[vn].end() ){
+                    d_curr_var_deq[vn][dv] = v;
+                  }
+                }else{
+                  if( !p->areMatchDisequal( d_match[vn], dv ) ){
+                    Debug("qcf-match-debug") << "  -> fail, conflicting disequality" << std::endl;
+                    return -1;
+                  }
+                }
+              }
+            }
+            if( alreadySet ){
+              n = getCurrentValue( n );
+            }
+          }else{
+            if( d_match[vn].isNull() ){
+              Debug("qcf-match-debug") << " ...Reverse direction" << std::endl;
+              //set the opposite direction
+              return addConstraint( p, vn, d_vars[v], v, true, false );
+            }else{
+              Debug("qcf-match-debug") << "  -> Both variables bound, compare" << std::endl;
+              //are they currently equal
+              return p->areMatchEqual( d_match[v], d_match[vn] ) ? 0 : -1;
+            }
+          }
+        }else{
+          Debug("qcf-match-debug") << "  ...Variable bound to ground" << std::endl;
+          if( d_match[v].isNull() ){
+            //isGroundRep = true;   ??
+            isGround = true;
+          }else{
+            //compare ground values
+            Debug("qcf-match-debug") << "  -> Ground value, compare " << d_match[v] << " "<< n << std::endl;
+            return p->areMatchEqual( d_match[v], n ) ? 0 : -1;
+          }
+        }
+        if( setMatch( p, v, n, isGroundRep, isGround ) ){
+          Debug("qcf-match-debug") << "  -> success" << std::endl;
+          return 1;
+        }else{
+          Debug("qcf-match-debug") << "  -> fail, conflicting disequality" << std::endl;
+          return -1;
+        }
+      }
+    }else{
+      Debug("qcf-match-debug") << "  -> redundant, variable identity" << std::endl;
+      return 0;
+    }
+  }else{
+    if( vn==v ){
+      Debug("qcf-match-debug") << "  -> fail, variable identity" << std::endl;
+      return -1;
+    }else{
+      if( doRemove ){
+        Assert( d_curr_var_deq[v].find( n )!=d_curr_var_deq[v].end() );
+        d_curr_var_deq[v].erase( n );
+        return 1;
+      }else{
+        if( d_curr_var_deq[v].find( n )==d_curr_var_deq[v].end() ){
+          //check if it respects equality
+          //std::map< int, TNode >::iterator itm = d_match.find( v );
+          if( !d_match[v].isNull() ){
+            TNode nv = getCurrentValue( n );
+            if( !p->areMatchDisequal( nv, d_match[v] ) ){
+              Debug("qcf-match-debug") << "  -> fail, conflicting disequality" << std::endl;
+              return -1;
+            }
+          }
+          d_curr_var_deq[v][n] = v;
+          Debug("qcf-match-debug") << "  -> success" << std::endl;
+          return 1;
+        }else{
+          Debug("qcf-match-debug") << "  -> redundant disequality" << std::endl;
+          return 0;
+        }
+      }
+    }
+  }
+}
+
+bool QuantInfo::isConstrainedVar( int v ) {
+  if( d_curr_var_deq.find( v )!=d_curr_var_deq.end() && !d_curr_var_deq[v].empty() ){
+    return true;
+  }else{
+    Node vv = getVar( v );
+    //for( std::map< int, TNode >::iterator it = d_match.begin(); it != d_match.end(); ++it ){
+    for( unsigned i=0; i<d_match.size(); i++ ){
+      if( d_match[i]==vv ){
+        return true;
+      }
+    }
+    for( std::map< int, std::map< TNode, int > >::iterator it = d_curr_var_deq.begin(); it != d_curr_var_deq.end(); ++it ){
+      for( std::map< TNode, int >::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2 ){
+        if( it2->first==vv ){
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+}
+
+bool QuantInfo::setMatch( QuantConflictFind * p, int v, TNode n, bool isGroundRep, bool isGround ) {
+  if( getCurrentCanBeEqual( p, v, n ) ){
+    if( isGroundRep ){
+      //fail if n does not exist in the relevant domain of each of the argument positions
+      std::map< int, std::map< TNode, std::vector< unsigned > > >::iterator it = d_var_rel_dom.find( v );
+      if( it!=d_var_rel_dom.end() ){
+        for( std::map< TNode, std::vector< unsigned > >::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2 ){
+          for( unsigned j=0; j<it2->second.size(); j++ ){
+            Debug("qcf-match-debug2") << n << " in relevant domain " <<  it2->first << "." << it2->second[j] << "?" << std::endl;
+            if( !p->getTermDatabase()->inRelevantDomain( it2->first, it2->second[j], n ) ){
+              Debug("qcf-match-debug") << "  -> fail, since " << n << " is not in relevant domain of " << it2->first << "." << it2->second[j] << std::endl;
+              return false;
+            }
+          }
+        }
+      }
+    }
+    Debug("qcf-match-debug") << "-- bind : " << v << " -> " << n << ", checked " <<  d_curr_var_deq[v].size() << " disequalities" << std::endl;
+    if( isGround ){
+      if( d_vars[v].getKind()==BOUND_VARIABLE ){
+        d_vars_set[v] = true;
+        Debug("qcf-match-debug") << "---- now bound " << d_vars_set.size() << " / " << d_q[0].getNumChildren() << " base variables." << std::endl;
+      }
+    }
+    d_match[v] = n;
+    return true;
+  }else{
+    return false;
+  }
+}
+
+void QuantInfo::unsetMatch( QuantConflictFind * p, int v ) {
+  Debug("qcf-match-debug") << "-- unbind : " << v << std::endl;
+  if( d_vars[v].getKind()==BOUND_VARIABLE && d_vars_set.find( v )!=d_vars_set.end() ){
+    d_vars_set.erase( v );
+  }
+  d_match[ v ] = TNode::null();
+}
+
+bool QuantInfo::isMatchSpurious( QuantConflictFind * p ) {
+  for( int i=0; i<getNumVars(); i++ ){
+    //std::map< int, TNode >::iterator it = d_match.find( i );
+    if( !d_match[i].isNull() ){
+      if( !getCurrentCanBeEqual( p, i, d_match[i], p->d_effort==QuantConflictFind::effort_conflict ) ){
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+bool QuantInfo::isTConstraintSpurious( QuantConflictFind * p, std::vector< Node >& terms ) {
+  if( options::qcfEagerTest() ){
+    //check whether the instantiation evaluates as expected
+    if( p->d_effort==QuantConflictFind::effort_conflict ){
+      Trace("qcf-instance-check") << "Possible conflict instance for " << d_q << " : " << std::endl;
+      std::map< TNode, TNode > subs;
+      for( unsigned i=0; i<terms.size(); i++ ){
+        Trace("qcf-instance-check") << "  " << terms[i] << std::endl;
+        subs[d_q[0][i]] = terms[i];
+      }
+      for( unsigned i=0; i<d_extra_var.size(); i++ ){
+        Node n = getCurrentExpValue( d_extra_var[i] );
+        Trace("qcf-instance-check") << "  " << d_extra_var[i] << " -> " << n << std::endl;
+        subs[d_extra_var[i]] = n;
+      }
+      if( !p->getTermDatabase()->isEntailed( d_q[1], subs, false, false ) ){
+        Trace("qcf-instance-check") << "...not entailed to be false." << std::endl;
+        return true;
+      }
+    }else{
+      Node inst = p->d_quantEngine->getInstantiation( d_q, terms );
+      Node inst_eval = p->getTermDatabase()->evaluateTerm( inst, NULL, options::qcfTConstraint() );
+      if( Trace.isOn("qcf-instance-check") ){
+        Trace("qcf-instance-check") << "Possible propagating instance for " << d_q << " : " << std::endl;
+        for( unsigned i=0; i<terms.size(); i++ ){
+          Trace("qcf-instance-check") << "  " << terms[i] << std::endl;
+        }
+        Trace("qcf-instance-check") << "...evaluates to " << inst_eval << std::endl;
+      }
+      if( inst_eval.isNull() || inst_eval==p->getTermDatabase()->d_true || !isPropagatingInstance( p, inst_eval ) ){
+        Trace("qcf-instance-check") << "...spurious." << std::endl;
+        return true;
+      }else{
+        Trace("qcf-instance-check") << "...not spurious." << std::endl;
+      }
+    }
+  }
+  if( !d_tconstraints.empty() ){
+    //check constraints
+    for( std::map< Node, bool >::iterator it = d_tconstraints.begin(); it != d_tconstraints.end(); ++it ){
+      //apply substitution to the tconstraint
+      Node cons = p->getTermDatabase()->getInstantiatedNode( it->first, d_q, terms );
+      cons = it->second ? cons : cons.negate();
+      if( !entailmentTest( p, cons, p->d_effort==QuantConflictFind::effort_conflict ) ){
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+bool QuantInfo::isPropagatingInstance( QuantConflictFind * p, Node n ) {
+  if( n.getKind()==FORALL ){
+    //TODO?
+    return true;
+  }else if( n.getKind()==NOT || n.getKind()==AND || n.getKind()==OR || n.getKind()==EQUAL || n.getKind()==ITE || 
+            ( n.getKind()==EQUAL && n[0].getType().isBoolean() ) ){
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      if( !isPropagatingInstance( p, n[i] ) ){
+        return false;
+      }
+    }
+    return true;
+  }else{
+    if( p->getEqualityEngine()->hasTerm( n ) || isGroundSubterm( n ) ){
+      return true;
+    }
+  }
+  Trace("qcf-instance-check-debug") << "...not propagating instance because of " << n << std::endl;
+  return false;
+}
+
+bool QuantInfo::entailmentTest( QuantConflictFind * p, Node lit, bool chEnt ) {
+  Trace("qcf-tconstraint-debug") << "Check : " << lit << std::endl;
+  Node rew = Rewriter::rewrite( lit );
+  if( rew==p->d_false ){
+    Trace("qcf-tconstraint-debug") << "...constraint " << lit << " is disentailed (rewrites to false)." << std::endl;
+    return false;
+  }else if( rew!=p->d_true ){
+    //if checking for conflicts, we must be sure that the (negation of) constraint is (not) entailed 
+    if( !chEnt ){
+      rew = Rewriter::rewrite( rew.negate() );
+    }
+    //check if it is entailed
+    Trace("qcf-tconstraint-debug") << "Check entailment of " << rew << "..." << std::endl;
+    std::pair<bool, Node> et = p->getQuantifiersEngine()->getTheoryEngine()->entailmentCheck(THEORY_OF_TYPE_BASED, rew );
+    ++(p->d_statistics.d_entailment_checks);
+    Trace("qcf-tconstraint-debug") << "ET result : " << et.first << " " << et.second << std::endl;
+    if( !et.first ){
+      Trace("qcf-tconstraint-debug") << "...cannot show entailment of " << rew << "." << std::endl;
+      return !chEnt;
+    }else{
+      return chEnt;
+    }
+/*
+    if( chEnt ){
+      //check if it is entailed
+      Trace("qcf-tconstraint-debug") << "Check entailment of " << rew << "..." << std::endl;
+      std::pair<bool, Node> et = p->getQuantifiersEngine()->getTheoryEngine()->entailmentCheck(THEORY_OF_TYPE_BASED, rew );
+      ++(p->d_statistics.d_entailment_checks);
+      Trace("qcf-tconstraint-debug") << "ET result : " << et.first << " " << et.second << std::endl;
+      if( !et.first ){
+        Trace("qcf-tconstraint-debug") << "...cannot show entailment of " << rew << "." << std::endl;
+        return false;
+      }else{
+        return true;
+      }
+    }else{
+      Trace("qcf-tconstraint-debug") << "...does not need to be entailed." << std::endl;
+      return true;
+    }
+*/
+  }else{
+    Trace("qcf-tconstraint-debug") << "...rewrites to true." << std::endl;
+    return true;
+  }
+}
+
+bool QuantInfo::completeMatch( QuantConflictFind * p, std::vector< int >& assigned, bool doContinue ) {
+  //assign values for variables that were unassigned (usually not necessary, but handles corner cases)
+  bool doFail = false;
+  bool success = true;
+  if( doContinue ){
+    doFail = true;
+    success = false;
+  }else{
+    if( isBaseMatchComplete() && options::qcfEagerTest() ){
+      return true;
+    }
+    //solve for interpreted symbol matches
+    //   this breaks the invariant that all introduced constraints are over existing terms
+    for( int i=(int)(d_tsym_vars.size()-1); i>=0; i-- ){
+      int index = d_tsym_vars[i];
+      TNode v = getCurrentValue( d_vars[index] );
+      int slv_v = -1;
+      if( v==d_vars[index] ){
+        slv_v = index;
+      }
+      Trace("qcf-tconstraint-debug") << "Solve " << d_vars[index] << " = " << v << " " << d_vars[index].getKind() << std::endl;
+      if( d_vars[index].getKind()==PLUS || d_vars[index].getKind()==MULT ){
+        Kind k = d_vars[index].getKind();
+        std::vector< TNode > children;
+        for( unsigned j=0; j<d_vars[index].getNumChildren(); j++ ){
+          int vn = getVarNum( d_vars[index][j] );
+          if( vn!=-1 ){
+            TNode vv = getCurrentValue( d_vars[index][j] );
+            if( vv==d_vars[index][j] ){
+              //we will assign this
+              if( slv_v==-1 ){
+                Trace("qcf-tconstraint-debug") << "...will solve for var #" << vn << std::endl;
+                slv_v = vn;
+                if( p->d_effort!=QuantConflictFind::effort_conflict ){
+                  break;
+                }
+              }else{
+                Node z = p->getZero( k );
+                if( !z.isNull() ){
+                  Trace("qcf-tconstraint-debug") << "...set " << d_vars[vn] << " = " << z << std::endl;
+                  assigned.push_back( vn );
+                  if( !setMatch( p, vn, z, false, true ) ){
+                    success = false;
+                    break;
+                  }
+                }
+              }
+            }else{
+              Trace("qcf-tconstraint-debug") << "...sum value " << vv << std::endl;
+              children.push_back( vv );
+            }
+          }else{
+            Trace("qcf-tconstraint-debug") << "...sum " << d_vars[index][j] << std::endl;
+            children.push_back( d_vars[index][j] );
+          }
+        }
+        if( success ){
+          if( slv_v!=-1 ){
+            Node lhs;
+            if( children.empty() ){
+              lhs = p->getZero( k );
+            }else if( children.size()==1 ){
+              lhs = children[0];
+            }else{
+              lhs = NodeManager::currentNM()->mkNode( k, children );
+            }
+            Node sum;
+            if( v==d_vars[index] ){
+              sum = lhs;
+            }else{
+              if( p->d_effort==QuantConflictFind::effort_conflict ){
+                Kind kn = k;
+                if( d_vars[index].getKind()==PLUS ){
+                  kn = MINUS;
+                }
+                if( kn!=k ){
+                  sum = NodeManager::currentNM()->mkNode( kn, v, lhs );
+                }
+              }
+            }
+            if( !sum.isNull() ){
+              assigned.push_back( slv_v );
+              Trace("qcf-tconstraint-debug") << "...set " << d_vars[slv_v] << " = " << sum << std::endl;
+              if( !setMatch( p, slv_v, sum, false, true ) ){
+                success = false;
+              }
+              p->d_tempCache.push_back( sum );
+            }
+          }else{
+            //must show that constraint is met
+            Node sum = NodeManager::currentNM()->mkNode( k, children );
+            Node eq = sum.eqNode( v );
+            if( !entailmentTest( p, eq ) ){
+              success = false;
+            }
+            p->d_tempCache.push_back( sum );
+          }
+        }
+      }
+
+      if( !success ){
+        break;
+      }
+    }
+    if( success ){
+      //check what is left to assign
+      d_unassigned.clear();
+      d_unassigned_tn.clear();
+      std::vector< int > unassigned[2];
+      std::vector< TypeNode > unassigned_tn[2];
+      for( int i=0; i<getNumVars(); i++ ){
+        if( d_match[i].isNull() ){
+          int rindex = d_var_mg.find( i )==d_var_mg.end() ? 1 : 0;
+          unassigned[rindex].push_back( i );
+          unassigned_tn[rindex].push_back( getVar( i ).getType() );
+          assigned.push_back( i );
+        }
+      }
+      d_unassigned_nvar = unassigned[0].size();
+      for( unsigned i=0; i<2; i++ ){
+        d_unassigned.insert( d_unassigned.end(), unassigned[i].begin(), unassigned[i].end() );
+        d_unassigned_tn.insert( d_unassigned_tn.end(), unassigned_tn[i].begin(), unassigned_tn[i].end() );
+      }
+      d_una_eqc_count.clear();
+      d_una_index = 0;
+    }
+  }
+
+  if( !d_unassigned.empty() && ( success || doContinue ) ){
+    Trace("qcf-check") << "Assign to unassigned (" << d_unassigned.size() << ")..." << std::endl;
+    do {
+      if( doFail ){
+        Trace("qcf-check-unassign") << "Failure, try again..." << std::endl;
+      }
+      bool invalidMatch = false;
+      while( ( d_una_index>=0 && (int)d_una_index<(int)d_unassigned.size() ) || invalidMatch || doFail ){
+        invalidMatch = false;
+        if( !doFail && d_una_index==(int)d_una_eqc_count.size() ){
+          //check if it has now been assigned
+          if( d_una_index<d_unassigned_nvar ){
+            if( !isConstrainedVar( d_unassigned[d_una_index] ) ){
+              d_una_eqc_count.push_back( -1 );
+            }else{
+              d_var_mg[ d_unassigned[d_una_index] ]->reset( p, true, this );
+              d_una_eqc_count.push_back( 0 );
+            }
+          }else{
+            d_una_eqc_count.push_back( 0 );
+          }
+        }else{
+          bool failed = false;
+          if( !doFail ){
+            if( d_una_index<d_unassigned_nvar ){
+              if( !isConstrainedVar( d_unassigned[d_una_index] ) ){
+                Trace("qcf-check-unassign") << "Succeeded, variable unconstrained at " << d_una_index << std::endl;
+                d_una_index++;
+              }else if( d_var_mg[d_unassigned[d_una_index]]->getNextMatch( p, this ) ){
+                Trace("qcf-check-unassign") << "Succeeded match with mg at " << d_una_index << std::endl;
+                d_una_index++;
+              }else{
+                failed = true;
+                Trace("qcf-check-unassign") << "Failed match with mg at " << d_una_index << std::endl;
+              }
+            }else{
+              Assert( doFail || d_una_index==(int)d_una_eqc_count.size()-1 );
+              if( d_una_eqc_count[d_una_index]<(int)p->d_eqcs[d_unassigned_tn[d_una_index]].size() ){
+                int currIndex = d_una_eqc_count[d_una_index];
+                d_una_eqc_count[d_una_index]++;
+                Trace("qcf-check-unassign") << d_unassigned[d_una_index] << "->" << p->d_eqcs[d_unassigned_tn[d_una_index]][currIndex] << std::endl;
+                if( setMatch( p, d_unassigned[d_una_index], p->d_eqcs[d_unassigned_tn[d_una_index]][currIndex], true, true ) ){
+                  d_match_term[d_unassigned[d_una_index]] = TNode::null();
+                  Trace("qcf-check-unassign") << "Succeeded match " << d_una_index << std::endl;
+                  d_una_index++;
+                }else{
+                  Trace("qcf-check-unassign") << "Failed match " << d_una_index << std::endl;
+                  invalidMatch = true;
+                }
+              }else{
+                failed = true;
+                Trace("qcf-check-unassign") << "No more matches " << d_una_index << std::endl;
+              }
+            }
+          }
+          if( doFail || failed ){
+            do{
+              if( !doFail ){
+                d_una_eqc_count.pop_back();
+              }else{
+                doFail = false;
+              }
+              d_una_index--;
+            }while( d_una_index>=0 && d_una_eqc_count[d_una_index]==-1 );
+          }
+        }
+      }
+      success = d_una_index>=0;
+      if( success ){
+        doFail = true;
+        Trace("qcf-check-unassign") << "  Try: " << std::endl;
+        for( unsigned i=0; i<d_unassigned.size(); i++ ){
+          int ui = d_unassigned[i];
+          if( !d_match[ui].isNull() ){
+            Trace("qcf-check-unassign") << "  Assigned #" << ui << " : " << d_vars[ui] << " -> " << d_match[ui] << std::endl;
+          }
+        }
+      }
+    }while( success && isMatchSpurious( p ) );
+    Trace("qcf-check") << "done assigning." << std::endl;
+  }
+  if( success ){
+    for( unsigned i=0; i<d_unassigned.size(); i++ ){
+      int ui = d_unassigned[i];
+      if( !d_match[ui].isNull() ){
+        Trace("qcf-check") << "  Assigned #" << ui << " : " << d_vars[ui] << " -> " << d_match[ui] << std::endl;
+      }
+    }
+    return true;
+  }else{
+    revertMatch( p, assigned );
+    assigned.clear();
+    return false;
+  }
+}
+
+void QuantInfo::getMatch( std::vector< Node >& terms ){
+  for( unsigned i=0; i<d_q[0].getNumChildren(); i++ ){
+    //Node cv = qi->getCurrentValue( qi->d_match[i] );
+    int repVar = getCurrentRepVar( i );
+    Node cv;
+    //std::map< int, TNode >::iterator itmt = qi->d_match_term.find( repVar );
+    if( !d_match_term[repVar].isNull() ){
+      cv = d_match_term[repVar];
+    }else{
+      cv = d_match[repVar];
+    }
+    Debug("qcf-check-inst") << "INST : " << i << " -> " << cv << ", from " << d_match[i] << std::endl;
+    terms.push_back( cv );
+  }
+}
+
+void QuantInfo::revertMatch( QuantConflictFind * p, std::vector< int >& assigned ) {
+  for( unsigned i=0; i<assigned.size(); i++ ){
+    unsetMatch( p, assigned[i] );
+  }
+}
+
+void QuantInfo::debugPrintMatch( const char * c ) {
+  for( int i=0; i<getNumVars(); i++ ){
+    Trace(c) << "  " << d_vars[i] << " -> ";
+    if( !d_match[i].isNull() ){
+      Trace(c) << d_match[i];
+    }else{
+      Trace(c) << "(unassigned) ";
+    }
+    if( !d_curr_var_deq[i].empty() ){
+      Trace(c) << ", DEQ{ ";
+      for( std::map< TNode, int >::iterator it = d_curr_var_deq[i].begin(); it != d_curr_var_deq[i].end(); ++it ){
+        Trace(c) << it->first << " ";
+      }
+      Trace(c) << "}";
+    }
+    if( !d_match_term[i].isNull() && d_match_term[i]!=d_match[i] ){
+      Trace(c) << ", EXP : " << d_match_term[i];
+    }
+    Trace(c) <<  std::endl;
+  }
+  if( !d_tconstraints.empty() ){
+    Trace(c) << "ADDITIONAL CONSTRAINTS : " << std::endl;
+    for( std::map< Node, bool >::iterator it = d_tconstraints.begin(); it != d_tconstraints.end(); ++it ){
+      Trace(c) << "   " << it->first << " -> " << it->second << std::endl;
+    }
+  }
+}
+
+MatchGen::MatchGen()
+  : d_matched_basis(),
+    d_binding(),
+    d_tgt(),
+    d_tgt_orig(),
+    d_wasSet(),
+    d_n(),
+    d_type( typ_invalid ),
+    d_type_not()
+{
+  d_qni_size = 0;
+  d_child_counter = -1;
+  d_use_children = true;
+}
+
+
+MatchGen::MatchGen( QuantInfo * qi, Node n, bool isVar )
+  : d_matched_basis(),
+    d_binding(),
+    d_tgt(),
+    d_tgt_orig(),
+    d_wasSet(),
+    d_n(),
+    d_type(),
+    d_type_not()
+{
+  //initialize temporary
+  d_child_counter = -1;
+  d_use_children = true;
+  
+  Trace("qcf-qregister-debug") << "Make match gen for " << n << ", isVar = " << isVar << std::endl;
+  std::vector< Node > qni_apps;
+  d_qni_size = 0;
+  if( isVar ){
+    Assert( qi->d_var_num.find( n )!=qi->d_var_num.end() );
+    if( n.getKind()==ITE ){
+      d_type = typ_invalid;
+    }else{
+      d_type = isHandledUfTerm( n ) ? typ_var : typ_tsym;
+      d_qni_var_num[0] = qi->getVarNum( n );
+      d_qni_size++;
+      d_type_not = false;
+      d_n = n;
+      //Node f = getMatchOperator( n );
+      for( unsigned j=0; j<d_n.getNumChildren(); j++ ){
+        Node nn = d_n[j];
+        Trace("qcf-qregister-debug") << "  " << d_qni_size;
+        if( qi->isVar( nn ) ){
+          int v = qi->d_var_num[nn];
+          Trace("qcf-qregister-debug") << " is var #" << v << std::endl;
+          d_qni_var_num[d_qni_size] = v;
+          //qi->addFuncParent( v, f, j );
+        }else{
+          Trace("qcf-qregister-debug") << " is gterm " << nn << std::endl;
+          d_qni_gterm[d_qni_size] = nn;
+        }
+        d_qni_size++;
+      }
+    }
+  }else{
+    if( n.hasBoundVar() ){
+      d_type_not = false;
+      d_n = n;
+      if( d_n.getKind()==NOT ){
+        d_n = d_n[0];
+        d_type_not = !d_type_not;
+      }
+
+      if( isHandledBoolConnective( d_n ) ){
+        //non-literals
+        d_type = typ_formula;
+        for( unsigned i=0; i<d_n.getNumChildren(); i++ ){
+          if( d_n.getKind()!=FORALL || i==1 ){
+            d_children.push_back( MatchGen( qi, d_n[i], false ) );
+            if( !d_children[d_children.size()-1].isValid() ){
+              setInvalid();
+              break;
+            }
+          }
+        }
+      }else{
+        d_type = typ_invalid;
+        //literals
+        if( isHandledUfTerm( d_n ) ){
+          Assert( qi->isVar( d_n ) );
+          d_type = typ_pred;
+        }else if( d_n.getKind()==BOUND_VARIABLE ){
+          Assert( d_n.getType().isBoolean() );
+          d_type = typ_bool_var;
+        }else if( d_n.getKind()==EQUAL || options::qcfTConstraint() ){
+          for( unsigned i=0; i<d_n.getNumChildren(); i++ ){
+            if( d_n[i].hasBoundVar() ){
+              if( !qi->isVar( d_n[i] ) ){
+                Trace("qcf-qregister-debug")  << "ERROR : not var " << d_n[i] << std::endl;
+              }
+              Assert( qi->isVar( d_n[i] ) );
+              if( d_n.getKind()!=EQUAL && qi->isVar( d_n[i] ) ){
+                d_qni_var_num[i+1] = qi->d_var_num[d_n[i]];
+              }
+            }else{
+              d_qni_gterm[i] = d_n[i];
+              qi->setGroundSubterm( d_n[i] );
+            }
+          }
+          d_type = d_n.getKind()==EQUAL ? typ_eq : typ_tconstraint;
+          Trace("qcf-tconstraint") << "T-Constraint : " << d_n << std::endl;
+        }
+      }
+    }else{
+      //we will just evaluate
+      d_n = n;
+      d_type = typ_ground;
+      qi->setGroundSubterm( d_n );
+    }
+  }
+  Trace("qcf-qregister-debug")  << "Done make match gen " << n << ", type = ";
+  debugPrintType( "qcf-qregister-debug", d_type, true );
+  Trace("qcf-qregister-debug") << std::endl;
+  //Assert( d_children.size()==d_children_order.size() );
+
+}
+
+void MatchGen::collectBoundVar( QuantInfo * qi, Node n, std::vector< int >& cbvars, std::map< Node, bool >& visited, bool& hasNested ) {
+  if( visited.find( n )==visited.end() ){
+    visited[n] = true;
+    if( n.getKind()==FORALL ){
+      hasNested = true;
+    }
+    int v = qi->getVarNum( n );
+    if( v!=-1 && std::find( cbvars.begin(), cbvars.end(), v )==cbvars.end() ){
+      cbvars.push_back( v );
+    }
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      collectBoundVar( qi, n[i], cbvars, visited, hasNested );
+    }
+  }
+}
+
+void MatchGen::determineVariableOrder( QuantInfo * qi, std::vector< int >& bvars ) {
+  Trace("qcf-qregister-debug") << "Determine variable order " << d_n << ", #bvars = " << bvars.size() << std::endl;
+  bool isComm = d_type==typ_formula && ( d_n.getKind()==OR || d_n.getKind()==AND || d_n.getKind()==EQUAL );
+  if( isComm ){
+    std::map< int, std::vector< int > > c_to_vars;
+    std::map< int, std::vector< int > > vars_to_c;
+    std::map< int, int > vb_count;
+    std::map< int, int > vu_count;
+    std::map< int, bool > has_nested;
+    std::vector< bool > assigned;
+    Trace("qcf-qregister-debug") << "Calculate bound variables..." << std::endl;
+    for( unsigned i=0; i<d_children.size(); i++ ){
+      std::map< Node, bool > visited;
+      has_nested[i] = false;
+      collectBoundVar( qi, d_children[i].d_n, c_to_vars[i], visited, has_nested[i] );
+      assigned.push_back( false );
+      vb_count[i] = 0;
+      vu_count[i] = 0;
+      for( unsigned j=0; j<c_to_vars[i].size(); j++ ){
+        int v = c_to_vars[i][j];
+        vars_to_c[v].push_back( i );
+        if( std::find( bvars.begin(), bvars.end(), v )==bvars.end() ){
+          vu_count[i]++;
+        }else{
+          vb_count[i]++;
+        }
+      }
+    }
+    //children that bind no unbound variable, then the most number of bound, unbound variables go first
+    Trace("qcf-qregister-vo") << "Variable order for " << d_n << " : " << std::endl;
+    do {
+      int min_score0 = -1;
+      int min_score = -1;
+      int min_score_index = -1;
+      for( unsigned i=0; i<d_children.size(); i++ ){
+        if( !assigned[i] ){
+          Trace("qcf-qregister-debug2") << "Child " << i << " has b/ub : " << vb_count[i] << "/" << vu_count[i] << std::endl;
+          int score0 = 0;//has_nested[i] ? 0 : 1;
+          int score;
+          if( !options::qcfVoExp() ){
+            score = vu_count[i];
+          }else{
+            score =  vu_count[i]==0 ? 0 : ( 1 + qi->d_vars.size()*( qi->d_vars.size() - vb_count[i] ) + ( qi->d_vars.size() - vu_count[i] )  );
+          }
+          if( min_score==-1 || score0<min_score0 || ( score0==min_score0 && score<min_score ) ){
+            min_score0 = score0;
+            min_score = score;
+            min_score_index = i;
+          }
+        }
+      }
+      Trace("qcf-qregister-vo") << "  " << d_children_order.size()+1 << ": " << d_children[min_score_index].d_n << " : ";
+      Trace("qcf-qregister-vo") << vu_count[min_score_index] << " " << vb_count[min_score_index] << " " << has_nested[min_score_index] << std::endl;
+      Trace("qcf-qregister-debug") << "...assign child " << min_score_index << std::endl;
+      Trace("qcf-qregister-debug") << "...score : " << min_score << std::endl;
+      Assert( min_score_index!=-1 );
+      //add to children order
+      d_children_order.push_back( min_score_index );
+      assigned[min_score_index] = true;
+      //determine order internal to children
+      d_children[min_score_index].determineVariableOrder( qi, bvars );
+      Trace("qcf-qregister-debug")  << "...bind variables" << std::endl;
+      //now, make it a bound variable
+      if( vu_count[min_score_index]>0 ){
+        for( unsigned i=0; i<c_to_vars[min_score_index].size(); i++ ){
+          int v = c_to_vars[min_score_index][i];
+          if( std::find( bvars.begin(), bvars.end(), v )==bvars.end() ){
+            for( unsigned j=0; j<vars_to_c[v].size(); j++ ){
+              int vc = vars_to_c[v][j];
+              vu_count[vc]--;
+              vb_count[vc]++;
+            }
+            bvars.push_back( v );
+          }
+        }
+      }
+      Trace("qcf-qregister-debug") << "...done assign child " << min_score_index << std::endl;
+    }while( d_children_order.size()!=d_children.size() );
+    Trace("qcf-qregister-debug") << "Done assign variable ordering for " << d_n << std::endl;
+  }else{
+    for( unsigned i=0; i<d_children.size(); i++ ){
+      d_children_order.push_back( i );
+      d_children[i].determineVariableOrder( qi, bvars );
+      //now add to bvars
+      std::map< Node, bool > visited;
+      std::vector< int > cvars;
+      bool has_nested = false;
+      collectBoundVar( qi, d_children[i].d_n, cvars, visited, has_nested );
+      for( unsigned j=0; j<cvars.size(); j++ ){
+        if( std::find( bvars.begin(), bvars.end(), cvars[j] )==bvars.end() ){
+          bvars.push_back( cvars[j] );
+        }
+      }
+    }
+  }
+}
+
+
+void MatchGen::reset_round( QuantConflictFind * p ) {
+  d_wasSet = false;
+  for( unsigned i=0; i<d_children.size(); i++ ){
+    d_children[i].reset_round( p );
+  }
+  for( std::map< int, TNode >::iterator it = d_qni_gterm.begin(); it != d_qni_gterm.end(); ++it ){
+    d_qni_gterm_rep[it->first] = p->getRepresentative( it->second );
+  }
+  if( d_type==typ_ground ){
+    //int e = p->evaluate( d_n );
+    //if( e==1 ){
+    //  d_ground_eval[0] = p->d_true;
+    //}else if( e==-1 ){
+    //  d_ground_eval[0] = p->d_false;
+    //}
+    //modified 
+    for( unsigned i=0; i<2; i++ ){ 
+      if( p->getTermDatabase()->isEntailed( d_n, i==0 ) ){
+        d_ground_eval[0] = i==0 ? p->d_true : p->d_false;
+      }
+    }
+  }else if( d_type==typ_eq ){
+    for( unsigned i=0; i<d_n.getNumChildren(); i++ ){
+      if( !d_n[i].hasBoundVar() ){
+        TNode t = p->getTermDatabase()->getEntailedTerm( d_n[i] );
+        if( t.isNull() ){
+          d_ground_eval[i] = d_n[i];
+        }else{
+          d_ground_eval[i] = t;
+        }
+      }
+    }
+  }
+  d_qni_bound_cons.clear();
+  d_qni_bound_cons_var.clear();
+  d_qni_bound.clear();
+}
+
+void MatchGen::reset( QuantConflictFind * p, bool tgt, QuantInfo * qi ) {
+  d_tgt = d_type_not ? !tgt : tgt;
+  Debug("qcf-match") << "     Reset for : " << d_n << ", type : ";
+  debugPrintType( "qcf-match", d_type );
+  Debug("qcf-match") << ", tgt = " << d_tgt << ", children = " << d_children.size() << " " << d_children_order.size() << std::endl;
+  d_qn.clear();
+  d_qni.clear();
+  d_qni_bound.clear();
+  d_child_counter = -1;
+  d_use_children = true;
+  d_tgt_orig = d_tgt;
+
+  //set up processing matches
+  if( d_type==typ_invalid ){
+    d_use_children = false;
+  }else if( d_type==typ_ground ){
+    d_use_children = false;
+    if( d_ground_eval[0]==( d_tgt ? p->d_true : p->d_false ) ){
+      d_child_counter = 0;
+    }
+  }else if( qi->isBaseMatchComplete() && options::qcfEagerTest() ){
+    d_use_children = false;
+    d_child_counter = 0;
+  }else if( d_type==typ_bool_var ){
+    //get current value of the variable
+    TNode n = qi->getCurrentValue( d_n );
+    int vn = qi->getCurrentRepVar( qi->getVarNum( n ) );
+    if( vn==-1 ){
+      //evaluate the value, see if it is compatible
+      //int e = p->evaluate( n );
+      //if( ( e==1 && d_tgt ) || ( e==0 && !d_tgt ) ){
+      //  d_child_counter = 0;
+      //}
+      //modified 
+      if( p->getTermDatabase()->isEntailed( n, d_tgt ) ){ 
+        d_child_counter = 0;
+      }
+    }else{
+      //unassigned, set match to true/false
+      d_qni_bound[0] = vn;
+      qi->setMatch( p, vn, d_tgt ? p->d_true : p->d_false, false, true );
+      d_child_counter = 0;
+    }
+    if( d_child_counter==0 ){
+      d_qn.push_back( NULL );
+    }
+  }else if( d_type==typ_var ){
+    Assert( isHandledUfTerm( d_n ) );
+    TNode f = getMatchOperator( p, d_n );
+    Debug("qcf-match-debug") << "       reset: Var will match operators of " << f << std::endl;
+    TermArgTrie * qni = p->getTermDatabase()->getTermArgTrie( Node::null(), f );
+    if( qni!=NULL ){
+      d_qn.push_back( qni );
+    }else{
+      //inform irrelevant quantifiers
+      p->setIrrelevantFunction( f );
+    }
+    d_matched_basis = false;
+  }else if( d_type==typ_tsym || d_type==typ_tconstraint ){
+    for( std::map< int, int >::iterator it = d_qni_var_num.begin(); it != d_qni_var_num.end(); ++it ){
+      int repVar = qi->getCurrentRepVar( it->second );
+      if( qi->d_match[repVar].isNull() ){
+        Debug("qcf-match-debug") << "Force matching on child #" << it->first << ", which is var #" << repVar << std::endl;
+        d_qni_bound[it->first] = repVar;
+      }
+    }
+    d_qn.push_back( NULL );
+  }else if( d_type==typ_pred || d_type==typ_eq ){
+    //add initial constraint
+    Node nn[2];
+    int vn[2];
+    if( d_type==typ_pred ){
+      nn[0] = qi->getCurrentValue( d_n );
+      vn[0] = qi->getCurrentRepVar( qi->getVarNum( nn[0] ) );
+      nn[1] = p->getRepresentative( d_tgt ? p->d_true : p->d_false );
+      vn[1] = -1;
+      d_tgt = true;
+    }else{
+      for( unsigned i=0; i<2; i++ ){
+        TNode nc;
+        std::map< int, TNode >::iterator it = d_qni_gterm_rep.find( i );
+        if( it!=d_qni_gterm_rep.end() ){
+          nc = it->second;
+        }else{
+          nc = d_n[i];
+        }
+        nn[i] = qi->getCurrentValue( nc );
+        vn[i] = qi->getCurrentRepVar( qi->getVarNum( nn[i] ) );
+      }
+    }
+    bool success;
+    if( vn[0]==-1 && vn[1]==-1 ){
+      //Trace("qcf-explain") << "    reset : " << d_n << " check ground values " << nn[0] << " " << nn[1] << " (tgt=" << d_tgt << ")" << std::endl;
+      Debug("qcf-match-debug") << "       reset: check ground values " << nn[0] << " " << nn[1] << " (" << d_tgt << ")" << std::endl;
+      //just compare values
+      if( d_tgt ){
+        success = p->areMatchEqual( nn[0], nn[1] );
+      }else{
+        if( p->d_effort==QuantConflictFind::effort_conflict ){
+          success = p->areDisequal( nn[0], nn[1] );
+        }else{
+          success = p->areMatchDisequal( nn[0], nn[1] );
+        }
+      }
+    }else{
+      //otherwise, add a constraint to a variable  TODO: this may be over-eager at effort > conflict, since equality may be a propagation
+      if( vn[1]!=-1 && vn[0]==-1 ){
+        //swap
+        Node t = nn[1];
+        nn[1] = nn[0];
+        nn[0] = t;
+        vn[0] = vn[1];
+        vn[1] = -1;
+      }
+      Debug("qcf-match-debug") << "       reset: add constraint " << vn[0] << " -> " << nn[1] << " (vn=" << vn[1] << ")" << std::endl;
+      //add some constraint
+      int addc = qi->addConstraint( p, vn[0], nn[1], vn[1], d_tgt, false );
+      success = addc!=-1;
+      //if successful and non-redundant, store that we need to cleanup this
+      if( addc==1 ){
+        //Trace("qcf-explain") << "       reset: " << d_n << " add constraint " << vn[0] << " -> " << nn[1] << " (vn=" << vn[1] << ")" << ", d_tgt = " << d_tgt << std::endl;
+        for( unsigned i=0; i<2; i++ ){
+          if( vn[i]!=-1 && std::find( d_qni_bound_except.begin(), d_qni_bound_except.end(), i )==d_qni_bound_except.end() ){
+            d_qni_bound[vn[i]] = vn[i];
+          }
+        }
+        d_qni_bound_cons[vn[0]] = nn[1];
+        d_qni_bound_cons_var[vn[0]] = vn[1];
+      }
+    }
+    //if successful, we will bind values to variables
+    if( success ){
+      d_qn.push_back( NULL );
+    }
+  }else{
+    if( d_children.empty() ){
+      //add dummy
+      d_qn.push_back( NULL );
+    }else{
+      if( d_tgt && d_n.getKind()==FORALL ){
+        //fail
+      }else if( d_n.getKind()==FORALL && p->d_effort==QuantConflictFind::effort_conflict && !options::qcfNestedConflict() ){
+        //fail
+      }else{
+        //reset the first child to d_tgt
+        d_child_counter = 0;
+        getChild( d_child_counter )->reset( p, d_tgt, qi );
+      }
+    }
+  }
+  d_binding = false;
+  d_wasSet = true;
+  Debug("qcf-match") << "     reset: Finished reset for " << d_n << ", success = " << ( !d_qn.empty() || d_child_counter!=-1 ) << std::endl;
+}
+
+bool MatchGen::getNextMatch( QuantConflictFind * p, QuantInfo * qi ) {
+  Debug("qcf-match") << "     Get next match for : " << d_n << ", type = ";
+  debugPrintType( "qcf-match", d_type );
+  Debug("qcf-match") << ", children = " << d_children.size() << ", binding = " << d_binding << std::endl;
+  if( !d_use_children ){
+    if( d_child_counter==0 ){
+      d_child_counter = -1;
+      return true;
+    }else{
+      d_wasSet = false;
+      return false;
+    }
+  }else if( d_type==typ_var || d_type==typ_eq || d_type==typ_pred || d_type==typ_bool_var || d_type==typ_tconstraint || d_type==typ_tsym ){
+    bool success = false;
+    bool terminate = false;
+    do {
+      bool doReset = false;
+      bool doFail = false;
+      if( !d_binding ){
+        if( doMatching( p, qi ) ){
+          Debug("qcf-match-debug") << "     - Matching succeeded" << std::endl;
+          d_binding = true;
+          d_binding_it = d_qni_bound.begin();
+          doReset = true;
+          //for tconstraint, add constraint
+          if( d_type==typ_tconstraint ){
+            std::map< Node, bool >::iterator it = qi->d_tconstraints.find( d_n );
+            if( it==qi->d_tconstraints.end() ){
+              qi->d_tconstraints[d_n] = d_tgt;
+              //store that we added this constraint
+              d_qni_bound_cons[0] = d_n;
+            }else if( d_tgt!=it->second ){
+              success = false;
+              terminate = true;
+            }
+          }
+        }else{
+          Debug("qcf-match-debug") << "     - Matching failed" << std::endl;
+          success = false;
+          terminate = true;
+        }
+      }else{
+        doFail = true;
+      }
+      if( d_binding ){
+        //also need to create match for each variable we bound
+        success = true;
+        Debug("qcf-match-debug") << "     Produce matches for bound variables by " << d_n << ", type = ";
+        debugPrintType( "qcf-match-debug", d_type );
+        Debug("qcf-match-debug") << "..." << std::endl;
+
+        while( ( success && d_binding_it!=d_qni_bound.end() ) || doFail ){
+          QuantInfo::VarMgMap::const_iterator itm;
+          if( !doFail ){
+            Debug("qcf-match-debug") << "       check variable " << d_binding_it->second << std::endl;
+            itm = qi->var_mg_find( d_binding_it->second );
+          }
+          if( doFail || ( d_binding_it->first!=0 && itm != qi->var_mg_end() ) ){
+            Debug("qcf-match-debug") << "       we had bound variable " << d_binding_it->second << ", reset = " << doReset << std::endl;
+            if( doReset ){
+              itm->second->reset( p, true, qi );
+            }
+            if( doFail || !itm->second->getNextMatch( p, qi ) ){
+              do {
+                if( d_binding_it==d_qni_bound.begin() ){
+                  Debug("qcf-match-debug") << "       failed." << std::endl;
+                  success = false;
+                }else{
+                  --d_binding_it;
+                  Debug("qcf-match-debug") << "       decrement..." << std::endl;
+                }
+              }while( success &&
+                      ( d_binding_it->first==0 ||
+                        (!qi->containsVarMg(d_binding_it->second))));
+              doReset = false;
+              doFail = false;
+            }else{
+              Debug("qcf-match-debug") << "       increment..." << std::endl;
+              ++d_binding_it;
+              doReset = true;
+            }
+          }else{
+            Debug("qcf-match-debug") << "       skip..." << d_binding_it->second << std::endl;
+            ++d_binding_it;
+            doReset = true;
+          }
+        }
+        if( !success ){
+          d_binding = false;
+        }else{
+          terminate = true;
+          if( d_binding_it==d_qni_bound.begin() ){
+            d_binding = false;
+          }
+        }
+      }
+    }while( !terminate );
+    //if not successful, clean up the variables you bound
+    if( !success ){
+      if( d_type==typ_eq || d_type==typ_pred ){
+        //clean up the constraints you added
+        for( std::map< int, TNode >::iterator it = d_qni_bound_cons.begin(); it != d_qni_bound_cons.end(); ++it ){
+          if( !it->second.isNull() ){
+            Debug("qcf-match") << "       Clean up bound var " << it->first << (d_tgt ? "!" : "") << " = " << it->second << std::endl;
+            std::map< int, int >::iterator itb = d_qni_bound_cons_var.find( it->first );
+            int vn = itb!=d_qni_bound_cons_var.end() ? itb->second : -1;
+            //Trace("qcf-explain") << "       cleanup: " << d_n << " remove constraint " << it->first << " -> " << it->second << " (vn=" << vn << ")" << ", d_tgt = " << d_tgt << std::endl;
+            qi->addConstraint( p, it->first, it->second, vn, d_tgt, true );
+          }
+        }
+        d_qni_bound_cons.clear();
+        d_qni_bound_cons_var.clear();
+        d_qni_bound.clear();
+      }else{
+        //clean up the matches you set
+        for( std::map< int, int >::iterator it = d_qni_bound.begin(); it != d_qni_bound.end(); ++it ){
+          Debug("qcf-match") << "       Clean up bound var " << it->second << std::endl;
+          Assert( it->second<qi->getNumVars() );
+          qi->unsetMatch( p, it->second );
+          qi->d_match_term[ it->second ] = TNode::null();
+        }
+        d_qni_bound.clear();
+      }
+      if( d_type==typ_tconstraint ){
+        //remove constraint if applicable
+        if( d_qni_bound_cons.find( 0 )!=d_qni_bound_cons.end() ){
+          qi->d_tconstraints.erase( d_n );
+          d_qni_bound_cons.clear();
+        }
+      }
+    }
+    Debug("qcf-match") << "    ...finished matching for " << d_n << ", success = " << success << std::endl;
+    d_wasSet = success;
+    return success;
+  }else if( d_type==typ_formula || d_type==typ_ite_var ){
+    bool success = false;
+    if( d_child_counter<0 ){
+      if( d_child_counter<-1 ){
+        success = true;
+        d_child_counter = -1;
+      }
+    }else{
+      while( !success && d_child_counter>=0 ){
+        //transition system based on d_child_counter
+        if( d_n.getKind()==OR || d_n.getKind()==AND ){
+          if( (d_n.getKind()==AND)==d_tgt ){
+            //all children must match simultaneously
+            if( getChild( d_child_counter )->getNextMatch( p, qi ) ){
+              if( d_child_counter<(int)(getNumChildren()-1) ){
+                d_child_counter++;
+                Debug("qcf-match-debug") << "       Reset child " << d_child_counter << " of " << d_n << std::endl;
+                getChild( d_child_counter )->reset( p, d_tgt, qi );
+              }else{
+                success = true;
+              }
+            }else{
+              //if( std::find( d_independent.begin(), d_independent.end(), d_child_counter )!=d_independent.end() ){
+              //  d_child_counter--;
+              //}else{
+              d_child_counter--;
+              //}
+            }
+          }else{
+            //one child must match
+            if( !getChild( d_child_counter )->getNextMatch( p, qi ) ){
+              if( d_child_counter<(int)(getNumChildren()-1) ){
+                d_child_counter++;
+                Debug("qcf-match-debug") << "       Reset child " << d_child_counter << " of " << d_n << ", one match" << std::endl;
+                getChild( d_child_counter )->reset( p, d_tgt, qi );
+              }else{
+                d_child_counter = -1;
+              }
+            }else{
+              success = true;
+            }
+          }
+        }else if( d_n.getKind()==EQUAL ){
+          //construct match based on both children
+          if( d_child_counter%2==0 ){
+            if( getChild( 0 )->getNextMatch( p, qi ) ){
+              d_child_counter++;
+              getChild( 1 )->reset( p, d_child_counter==1, qi );
+            }else{
+              if( d_child_counter==0 ){
+                d_child_counter = 2;
+                getChild( 0 )->reset( p, !d_tgt, qi );
+              }else{
+                d_child_counter = -1;
+              }
+            }
+          }
+          if( d_child_counter>=0 && d_child_counter%2==1 ){
+            if( getChild( 1 )->getNextMatch( p, qi ) ){
+              success = true;
+            }else{
+              d_child_counter--;
+            }
+          }
+        }else if( d_n.getKind()==ITE ){
+          if( d_child_counter%2==0 ){
+            int index1 = d_child_counter==4 ? 1 : 0;
+            if( getChild( index1 )->getNextMatch( p, qi ) ){
+              d_child_counter++;
+              getChild( d_child_counter==5 ? 2 : (d_tgt==(d_child_counter==1) ? 1 : 2) )->reset( p, d_tgt, qi );
+            }else{
+              if( d_child_counter==4 || ( d_type==typ_ite_var && d_child_counter==2 ) ){
+                d_child_counter = -1;
+              }else{
+                d_child_counter +=2;
+                getChild( d_child_counter==2 ? 0 : 1 )->reset( p, d_child_counter==2 ? !d_tgt : d_tgt, qi );
+              }
+            }
+          }
+          if( d_child_counter>=0 && d_child_counter%2==1 ){
+            int index2 = d_child_counter==5 ? 2 : (d_tgt==(d_child_counter==1) ? 1 : 2);
+            if( getChild( index2 )->getNextMatch( p, qi ) ){
+              success = true;
+            }else{
+              d_child_counter--;
+            }
+          }
+        }else if( d_n.getKind()==FORALL ){
+          if( getChild( d_child_counter )->getNextMatch( p, qi ) ){
+            success = true;
+          }else{
+            d_child_counter = -1;
+          }
+        }
+      }
+        d_wasSet = success;
+      Debug("qcf-match") << "    ...finished construct match for " << d_n << ", success = " << success << std::endl;
+      return success;
+    }
+  }
+  Debug("qcf-match") << "    ...already finished for " << d_n << std::endl;
+  return false;
+}
+
+bool MatchGen::getExplanation( QuantConflictFind * p, QuantInfo * qi, std::vector< Node >& exp ) {
+  if( d_type==typ_eq ){
+    Node n[2];
+    for( unsigned i=0; i<2; i++ ){
+      Trace("qcf-explain") << "Explain term " << d_n[i] << "..." << std::endl;
+      n[i] = getExplanationTerm( p, qi, d_n[i], exp );
+    }
+    Node eq = n[0].eqNode( n[1] );
+    if( !d_tgt_orig ){
+      eq = eq.negate();
+    }
+    exp.push_back( eq );
+    Trace("qcf-explain") << "Explanation for " << d_n << " (tgt=" << d_tgt_orig << ") is " << eq << ", set = " << d_wasSet << std::endl;
+    return true;
+  }else if( d_type==typ_pred ){
+    Trace("qcf-explain") << "Explain term " << d_n << "..." << std::endl;
+    Node n = getExplanationTerm( p, qi, d_n, exp );
+    if( !d_tgt_orig ){
+      n = n.negate();
+    }
+    exp.push_back( n );
+    Trace("qcf-explain") << "Explanation for " << d_n << " (tgt=" << d_tgt_orig << ") is " << n << ", set = " << d_wasSet << std::endl;
+    return true;
+  }else if( d_type==typ_formula ){
+    Trace("qcf-explain") << "Explanation get for " << d_n << ", counter = " << d_child_counter << ", tgt = " << d_tgt_orig << ", set = " << d_wasSet << std::endl;
+    if( d_n.getKind()==OR || d_n.getKind()==AND ){
+      if( (d_n.getKind()==AND)==d_tgt ){
+        for( unsigned i=0; i<getNumChildren(); i++ ){
+          if( !getChild( i )->getExplanation( p, qi, exp ) ){
+            return false;
+          }
+        }
+      }else{
+        return getChild( d_child_counter )->getExplanation( p, qi, exp );
+      }
+    }else if( d_n.getKind()==EQUAL ){
+      for( unsigned i=0; i<2; i++ ){
+        if( !getChild( i )->getExplanation( p, qi, exp ) ){
+          return false;
+        }
+      }
+    }else if( d_n.getKind()==ITE ){
+      for( unsigned i=0; i<3; i++ ){
+        bool isActive = ( ( i==0 && d_child_counter!=5 ) ||
+                          ( i==1 && d_child_counter!=( d_tgt ? 3 : 1 ) ) ||
+                          ( i==2 && d_child_counter!=( d_tgt ? 1 : 3 ) ) );
+        if( isActive ){
+          if( !getChild( i )->getExplanation( p, qi, exp ) ){
+            return false;
+          }
+        }
+      }
+    }else{
+      return false;
+    }
+    return true;
+  }else{
+    return false;
+  }
+}
+
+Node MatchGen::getExplanationTerm( QuantConflictFind * p, QuantInfo * qi, Node t, std::vector< Node >& exp ) {
+  Node v = qi->getCurrentExpValue( t );
+  if( isHandledUfTerm( t ) ){
+    for( unsigned i=0; i<t.getNumChildren(); i++ ){
+      Node vi = getExplanationTerm( p, qi, t[i], exp );
+      if( vi!=v[i] ){
+        Node eq = vi.eqNode( v[i] );
+        if( std::find( exp.begin(), exp.end(), eq )==exp.end() ){
+          Trace("qcf-explain") << "  add : " << eq << "." << std::endl;
+          exp.push_back( eq );
+        }
+      }
+    }
+  }
+  return v;
+}
+
+bool MatchGen::doMatching( QuantConflictFind * p, QuantInfo * qi ) {
+  if( !d_qn.empty() ){
+    if( d_qn[0]==NULL ){
+      d_qn.clear();
+      return true;
+    }else{
+      Assert( d_type==typ_var );
+      Assert( d_qni_size>0 );
+      bool invalidMatch;
+      do {
+        invalidMatch = false;
+        Debug("qcf-match-debug") << "       Do matching " << d_n << " " << d_qn.size() << " " << d_qni.size() << std::endl;
+        if( d_qn.size()==d_qni.size()+1 ) {
+          int index = (int)d_qni.size();
+          //initialize
+          TNode val;
+          std::map< int, int >::iterator itv = d_qni_var_num.find( index );
+          if( itv!=d_qni_var_num.end() ){
+            //get the representative variable this variable is equal to
+            int repVar = qi->getCurrentRepVar( itv->second );
+            Debug("qcf-match-debug") << "       Match " << index << " is a variable " << itv->second << ", which is repVar " << repVar << std::endl;
+            //get the value the rep variable
+            //std::map< int, TNode >::iterator itm = qi->d_match.find( repVar );
+            if( !qi->d_match[repVar].isNull() ){
+              val = qi->d_match[repVar];
+              Debug("qcf-match-debug") << "       Variable is already bound to " << val << std::endl;
+            }else{
+              //binding a variable
+              d_qni_bound[index] = repVar;
+              std::map< TNode, TermArgTrie >::iterator it = d_qn[index]->d_data.begin();
+              if( it != d_qn[index]->d_data.end() ) {
+                d_qni.push_back( it );
+                //set the match
+                if( it->first.getType().isComparableTo( qi->d_var_types[repVar] ) && qi->setMatch( p, d_qni_bound[index], it->first, true, true ) ){
+                  Debug("qcf-match-debug") << "       Binding variable" << std::endl;
+                  if( d_qn.size()<d_qni_size ){
+                    d_qn.push_back( &it->second );
+                  }
+                }else{
+                  Debug("qcf-match") << "       Binding variable, currently fail." << std::endl;
+                  invalidMatch = true;
+                }
+              }else{
+                Debug("qcf-match-debug") << "       Binding variable, fail, no more variables to bind" << std::endl;
+                d_qn.pop_back();
+              }
+            }
+          }else{
+            Debug("qcf-match-debug") << "       Match " << index << " is ground term" << std::endl;
+            Assert( d_qni_gterm.find( index )!=d_qni_gterm.end() );
+            Assert( d_qni_gterm_rep.find( index )!=d_qni_gterm_rep.end() );
+            val = d_qni_gterm_rep[index];
+            Assert( !val.isNull() );
+          }
+          if( !val.isNull() ){
+            //constrained by val
+            std::map< TNode, TermArgTrie >::iterator it = d_qn[index]->d_data.find( val );
+            if( it!=d_qn[index]->d_data.end() ){
+              Debug("qcf-match-debug") << "       Match" << std::endl;
+              d_qni.push_back( it );
+              if( d_qn.size()<d_qni_size ){
+                d_qn.push_back( &it->second );
+              }
+            }else{
+              Debug("qcf-match-debug") << "       Failed to match" << std::endl;
+              d_qn.pop_back();
+            }
+          }
+        }else{
+          Assert( d_qn.size()==d_qni.size() );
+          int index = d_qni.size()-1;
+          //increment if binding this variable
+          bool success = false;
+          std::map< int, int >::iterator itb = d_qni_bound.find( index );
+          if( itb!=d_qni_bound.end() ){
+            d_qni[index]++;
+            if( d_qni[index]!=d_qn[index]->d_data.end() ){
+              success = true;
+              if( qi->setMatch( p, itb->second, d_qni[index]->first, true, true ) ){
+                Debug("qcf-match-debug") << "       Bind next variable" << std::endl;
+                if( d_qn.size()<d_qni_size ){
+                  d_qn.push_back( &d_qni[index]->second );
+                }
+              }else{
+                Debug("qcf-match-debug") << "       Bind next variable, currently fail" << std::endl;
+                invalidMatch = true;
+              }
+            }else{
+              qi->unsetMatch( p, itb->second );
+              qi->d_match_term[ itb->second ] = TNode::null();
+              Debug("qcf-match-debug") << "       Bind next variable, no more variables to bind" << std::endl;
+            }
+          }else{
+            //TODO : if it equal to something else, also try that
+          }
+          //if not incrementing, move to next
+          if( !success ){
+            d_qn.pop_back();
+            d_qni.pop_back();
+          }
+        }
+      }while( ( !d_qn.empty() && d_qni.size()!=d_qni_size ) || invalidMatch );
+      if( d_qni.size()==d_qni_size ){
+        //Assert( !d_qni[d_qni.size()-1]->second.d_data.empty() );
+        //Debug("qcf-match-debug") << "       We matched " << d_qni[d_qni.size()-1]->second.d_children.begin()->first << std::endl;
+        Assert( !d_qni[d_qni.size()-1]->second.d_data.empty() );
+        TNode t = d_qni[d_qni.size()-1]->second.d_data.begin()->first;
+        Debug("qcf-match-debug") << "       " << d_n << " matched " << t << std::endl;
+        qi->d_match_term[d_qni_var_num[0]] = t;
+        //set the match terms
+        for( std::map< int, int >::iterator it = d_qni_bound.begin(); it != d_qni_bound.end(); ++it ){
+          Debug("qcf-match-debug") << "       position " << it->first << " bounded " << it->second << " / " << qi->d_q[0].getNumChildren() << std::endl;
+          //if( it->second<(int)qi->d_q[0].getNumChildren() ){   //if it is an actual variable, we are interested in knowing the actual term
+          if( it->first>0 ){
+            Assert( !qi->d_match[ it->second ].isNull() );
+            Assert( p->areEqual( t[it->first-1], qi->d_match[ it->second ] ) );
+            qi->d_match_term[it->second] = t[it->first-1];
+          }
+          //}
+        }
+      }
+    }
+  }
+  return !d_qn.empty();
+}
+
+void MatchGen::debugPrintType( const char * c, short typ, bool isTrace ) {
+  if( isTrace ){
+    switch( typ ){
+    case typ_invalid: Trace(c) << "invalid";break;
+    case typ_ground: Trace(c) << "ground";break;
+    case typ_eq: Trace(c) << "eq";break;
+    case typ_pred: Trace(c) << "pred";break;
+    case typ_formula: Trace(c) << "formula";break;
+    case typ_var: Trace(c) << "var";break;
+    case typ_ite_var: Trace(c) << "ite_var";break;
+    case typ_bool_var: Trace(c) << "bool_var";break;
+    }
+  }else{
+    switch( typ ){
+    case typ_invalid: Debug(c) << "invalid";break;
+    case typ_ground: Debug(c) << "ground";break;
+    case typ_eq: Debug(c) << "eq";break;
+    case typ_pred: Debug(c) << "pred";break;
+    case typ_formula: Debug(c) << "formula";break;
+    case typ_var: Debug(c) << "var";break;
+    case typ_ite_var: Debug(c) << "ite_var";break;
+    case typ_bool_var: Debug(c) << "bool_var";break;
+    }
+  }
+}
+
+void MatchGen::setInvalid() {
+  d_type = typ_invalid;
+  d_children.clear();
+}
+
+bool MatchGen::isHandledBoolConnective( TNode n ) {
+  return TermDb::isBoolConnectiveTerm( n ) && n.getKind()!=SEP_STAR;
+}
+
+bool MatchGen::isHandledUfTerm( TNode n ) {
+  //return n.getKind()==APPLY_UF || n.getKind()==STORE || n.getKind()==SELECT ||
+  //       n.getKind()==APPLY_CONSTRUCTOR || n.getKind()==APPLY_SELECTOR_TOTAL || n.getKind()==APPLY_TESTER;
+  //TODO : treat APPLY_TESTER as a T-constraint instead of matching (currently leads to overabundance of instantiations)
+  //return inst::Trigger::isAtomicTriggerKind( n.getKind() ) && ( !options::qcfTConstraint() || n.getKind()!=APPLY_TESTER );
+  return inst::Trigger::isAtomicTriggerKind( n.getKind() );
+}
+
+Node MatchGen::getMatchOperator( QuantConflictFind * p, Node n ) {
+  if( isHandledUfTerm( n ) ){
+    return p->getTermDatabase()->getMatchOperator( n );
+  }else{
+    return Node::null();
+  }
+}
+
+bool MatchGen::isHandled( TNode n ) {
+  if( n.getKind()!=BOUND_VARIABLE && n.hasBoundVar() ){
+    if( !isHandledBoolConnective( n ) && !isHandledUfTerm( n ) && n.getKind()!=EQUAL && n.getKind()!=ITE ){
+      return false;
+    }
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      if( !isHandled( n[i] ) ){
+        return false;
+      }
+    }
+  }
+  return true;
+}
+
+
+QuantConflictFind::QuantConflictFind( QuantifiersEngine * qe, context::Context* c ) :
+QuantifiersModule( qe ),
+d_conflict( c, false ) {
+  d_fid_count = 0;
+  d_true = NodeManager::currentNM()->mkConst<bool>(true);
+  d_false = NodeManager::currentNM()->mkConst<bool>(false);
+}
+
+Node QuantConflictFind::mkEqNode( Node a, Node b ) {
+  return a.eqNode( b );
+}
+
+//-------------------------------------------------- registration
+
+void QuantConflictFind::registerQuantifier( Node q ) {
+  if( d_quantEngine->hasOwnership( q, this ) ){
+    d_quants.push_back( q );
+    d_quant_id[q] = d_quants.size();
+    if( Trace.isOn("qcf-qregister") ){
+      Trace("qcf-qregister") << "Register ";
+      debugPrintQuant( "qcf-qregister", q );
+      Trace("qcf-qregister") << " : " << q << std::endl;
+    }
+    //make QcfNode structure
+    Trace("qcf-qregister") << "- Get relevant equality/disequality pairs, calculate flattening..." << std::endl;
+    d_qinfo[q].initialize( this, q, q[1] );
+
+    //debug print
+    if( Trace.isOn("qcf-qregister") ){
+      Trace("qcf-qregister") << "- Flattened structure is :" << std::endl;
+      Trace("qcf-qregister") << "    ";
+      debugPrintQuantBody( "qcf-qregister", q, q[1] );
+      Trace("qcf-qregister") << std::endl;
+      if( d_qinfo[q].d_vars.size()>q[0].getNumChildren() ){
+        Trace("qcf-qregister") << "  with additional constraints : " << std::endl;
+        for( unsigned j=q[0].getNumChildren(); j<d_qinfo[q].d_vars.size(); j++ ){
+          Trace("qcf-qregister") << "    ?x" << j << " = ";
+          debugPrintQuantBody( "qcf-qregister", q, d_qinfo[q].d_vars[j], false );
+          Trace("qcf-qregister") << std::endl;
+        }
+      }
+      Trace("qcf-qregister") << "Done registering quantifier." << std::endl;
+    }
+  }
+}
+
+short QuantConflictFind::getMaxQcfEffort() {
+  if( options::qcfMode()==QCF_CONFLICT_ONLY ){
+    return effort_conflict;
+  }else if( options::qcfMode()==QCF_PROP_EQ || options::qcfMode()==QCF_PARTIAL ){
+    return effort_prop_eq;
+  }else{
+    return 0;
+  }
+}
+
+bool QuantConflictFind::areMatchEqual( TNode n1, TNode n2 ) {
+  //if( d_effort==QuantConflictFind::effort_mc ){
+  //  return n1==n2 || !areDisequal( n1, n2 );
+  //}else{
+  return n1==n2;
+  //}
+}
+
+bool QuantConflictFind::areMatchDisequal( TNode n1, TNode n2 ) {
+  //if( d_effort==QuantConflictFind::effort_conflict ){
+  //  return areDisequal( n1, n2 );
+  //}else{
+  return n1!=n2;
+  //}
+}
+
+//-------------------------------------------------- handling assertions / eqc
+
+void QuantConflictFind::assertNode( Node q ) {
+  /*
+  if( d_quantEngine->hasOwnership( q, this ) ){
+    Trace("qcf-proc") << "QCF : assertQuantifier : ";
+    debugPrintQuant("qcf-proc", q);
+    Trace("qcf-proc") << std::endl;
+  }
+  */
+}
+
+/** new node */
+void QuantConflictFind::newEqClass( Node n ) {
+
+}
+
+/** merge */
+void QuantConflictFind::merge( Node a, Node b ) {
+
+}
+
+/** assert disequal */
+void QuantConflictFind::assertDisequal( Node a, Node b ) {
+
+}
+
+//-------------------------------------------------- check function
+
+bool QuantConflictFind::needsCheck( Theory::Effort level ) {
+  bool performCheck = false;
+  if( options::quantConflictFind() && !d_conflict ){
+    if( level==Theory::EFFORT_LAST_CALL ){
+      performCheck = options::qcfWhenMode()==QCF_WHEN_MODE_LAST_CALL;
+    }else if( level==Theory::EFFORT_FULL ){
+      performCheck = options::qcfWhenMode()==QCF_WHEN_MODE_DEFAULT;
+    }else if( level==Theory::EFFORT_STANDARD ){
+      performCheck = options::qcfWhenMode()==QCF_WHEN_MODE_STD;
+    }
+  }
+  return performCheck;
+}
+
+void QuantConflictFind::reset_round( Theory::Effort level ) {
+  d_needs_computeRelEqr = true;
+}
+
+void QuantConflictFind::setIrrelevantFunction( TNode f ) {
+  if( d_irr_func.find( f )==d_irr_func.end() ){
+    d_irr_func[f] = true;
+    std::map< TNode, std::vector< Node > >::iterator it = d_func_rel_dom.find( f );
+    if( it != d_func_rel_dom.end()){
+      for( unsigned j=0; j<it->second.size(); j++ ){
+        d_irr_quant[it->second[j]] = true;
+      }
+    }
+  }
+}
+
+/** check */
+void QuantConflictFind::check( Theory::Effort level, unsigned quant_e ) {
+  CodeTimer codeTimer(d_quantEngine->d_statistics.d_qcf_time);
+  if( quant_e==QuantifiersEngine::QEFFORT_CONFLICT ){
+    Trace("qcf-check") << "QCF : check : " << level << std::endl;
+    if( d_conflict ){
+      Trace("qcf-check2") << "QCF : finished check : already in conflict." << std::endl;
+      if( level>=Theory::EFFORT_FULL ){
+        Trace("qcf-warn") << "ALREADY IN CONFLICT? " << level << std::endl;
+        //Assert( false );
+      }
+    }else{
+      int addedLemmas = 0;
+      ++(d_statistics.d_inst_rounds);
+      double clSet = 0;
+      int prevEt = 0;
+      if( Trace.isOn("qcf-engine") ){
+        prevEt = d_statistics.d_entailment_checks.getData();
+        clSet = double(clock())/double(CLOCKS_PER_SEC);
+        Trace("qcf-engine") << "---Conflict Find Engine Round, effort = " << level << "---" << std::endl;
+      }
+      computeRelevantEqr();
+
+      d_irr_func.clear();
+      d_irr_quant.clear();
+
+      if( Trace.isOn("qcf-debug") ){
+        Trace("qcf-debug") << std::endl;
+        debugPrint("qcf-debug");
+        Trace("qcf-debug") << std::endl;
+      }
+      short end_e = getMaxQcfEffort();
+      bool isConflict = false;
+      for( short e = effort_conflict; e<=end_e; e++ ){
+        d_effort = e;
+        Trace("qcf-check") << "Checking quantified formulas at effort " << e << "..." << std::endl;
+        for( unsigned i=0; i<d_quantEngine->getModel()->getNumAssertedQuantifiers(); i++ ){
+          Node q = d_quantEngine->getModel()->getAssertedQuantifier( i, true );
+          if( d_quantEngine->hasOwnership( q, this ) && d_irr_quant.find( q )==d_irr_quant.end() ){
+            QuantInfo * qi = &d_qinfo[q];
+
+            Assert( d_qinfo.find( q )!=d_qinfo.end() );
+            if( qi->matchGeneratorIsValid() ){
+              Trace("qcf-check") << "Check quantified formula ";
+              debugPrintQuant("qcf-check", q);
+              Trace("qcf-check") << " : " << q << "..." << std::endl;
+
+              Trace("qcf-check-debug") << "Reset round..." << std::endl;
+              if( qi->reset_round( this ) ){
+                //try to make a matches making the body false
+                Trace("qcf-check-debug") << "Get next match..." << std::endl;
+                while( qi->getNextMatch( this ) ){
+                  Trace("qcf-inst") << "*** Produced match at effort " << e << " : " << std::endl;
+                  qi->debugPrintMatch("qcf-inst");
+                  Trace("qcf-inst") << std::endl;
+                  if( !qi->isMatchSpurious( this ) ){
+                    std::vector< int > assigned;
+                    if( qi->completeMatch( this, assigned ) ){
+                      std::vector< Node > terms;
+                      qi->getMatch( terms );
+                      bool tcs = qi->isTConstraintSpurious( this, terms );
+                      if( !tcs ){
+                        //for debugging
+                        if( Debug.isOn("qcf-check-inst") ){
+                          Node inst = d_quantEngine->getInstantiation( q, terms );
+                          Debug("qcf-check-inst") << "Check instantiation " << inst << "..." << std::endl;
+                          Assert( !getTermDatabase()->isEntailed( inst, true ) );
+                          Assert( getTermDatabase()->isEntailed( inst, false ) || e>effort_conflict );
+                        }
+                        if( d_quantEngine->addInstantiation( q, terms ) ){
+                          Trace("qcf-check") << "   ... Added instantiation" << std::endl;
+                          Trace("qcf-inst") << "*** Was from effort " << e << " : " << std::endl;
+                          qi->debugPrintMatch("qcf-inst");
+                          Trace("qcf-inst") << std::endl;
+                          ++addedLemmas;
+                          if( e==effort_conflict ){
+                            d_quantEngine->markRelevant( q );
+                            ++(d_quantEngine->d_statistics.d_instantiations_qcf);
+                            if( options::qcfAllConflict() ){
+                              isConflict = true;
+                            }else{
+                              d_conflict.set( true );
+                            }
+                            break;
+                          }else if( e==effort_prop_eq ){
+                            d_quantEngine->markRelevant( q );
+                            ++(d_quantEngine->d_statistics.d_instantiations_qcf);
+                          }
+                        }else{
+                          Trace("qcf-inst") << "   ... Failed to add instantiation" << std::endl;
+                          //this should only happen if the algorithm generates the same propagating instance twice this round
+                          //in this case, break to avoid exponential behavior
+                          break;
+                        }
+                      }else{
+                        Trace("qcf-inst") << "   ... Spurious instantiation (match is T-inconsistent)" << std::endl;
+                      }
+                      //clean up assigned
+                      qi->revertMatch( this, assigned );
+                      d_tempCache.clear();
+                    }else{
+                      Trace("qcf-inst") << "   ... Spurious instantiation (cannot assign unassigned variables)" << std::endl;
+                    }
+                  }else{
+                    Trace("qcf-inst") << "   ... Spurious instantiation (match is inconsistent)" << std::endl;
+                  }
+                }
+                Trace("qcf-check") << "Done, conflict = " << d_conflict << std::endl;
+                if( d_conflict ){
+                  break;
+                }
+              }
+            }
+          }
+        }
+        if( addedLemmas>0 ){
+          break;
+        }
+      }
+      if( isConflict ){
+        d_conflict.set( true );
+      }
+      if( Trace.isOn("qcf-engine") ){
+        double clSet2 = double(clock())/double(CLOCKS_PER_SEC);
+        Trace("qcf-engine") << "Finished conflict find engine, time = " << (clSet2-clSet);
+        if( addedLemmas>0 ){
+          Trace("qcf-engine") << ", effort = " << ( d_effort==effort_conflict ? "conflict" : ( d_effort==effort_prop_eq ? "prop_eq" : "mc" ) );
+          Trace("qcf-engine") << ", addedLemmas = " << addedLemmas;
+        }
+        Trace("qcf-engine") << std::endl;
+        int currEt = d_statistics.d_entailment_checks.getData();
+        if( currEt!=prevEt ){
+          Trace("qcf-engine") << "  Entailment checks = " << ( currEt - prevEt ) << std::endl;
+        }
+      }
+      Trace("qcf-check2") << "QCF : finished check : " << level << std::endl;
+    }
+  }
+}
+
+void QuantConflictFind::computeRelevantEqr() {
+  if( d_needs_computeRelEqr ){
+    d_needs_computeRelEqr = false;
+    Trace("qcf-check") << "Compute relevant equivalence classes..." << std::endl;
+    d_eqcs.clear();
+
+    eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( getEqualityEngine() );
+    while( !eqcs_i.isFinished() ){
+      Node r = (*eqcs_i);
+      if( getTermDatabase()->hasTermCurrent( r ) ){
+        TypeNode rtn = r.getType();
+        if( !options::cbqi() || !TermDb::hasInstConstAttr( r ) ){
+          d_eqcs[rtn].push_back( r );
+        }
+      }
+      ++eqcs_i;
+    }
+  }
+}
+
+
+//-------------------------------------------------- debugging
+
+
+void QuantConflictFind::debugPrint( const char * c ) {
+  //print the equivalance classes
+  Trace(c) << "----------EQ classes" << std::endl;
+  eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( getEqualityEngine() );
+  while( !eqcs_i.isFinished() ){
+    Node n = (*eqcs_i);
+    //if( !n.getType().isInteger() ){
+    Trace(c) << "  - " << n << " : {";
+    eq::EqClassIterator eqc_i = eq::EqClassIterator( n, getEqualityEngine() );
+    bool pr = false;
+    while( !eqc_i.isFinished() ){
+      Node nn = (*eqc_i);
+      if( nn.getKind()!=EQUAL && nn!=n ){
+        Trace(c) << (pr ? "," : "" ) << " " << nn;
+        pr = true;
+      }
+      ++eqc_i;
+    }
+    Trace(c) << (pr ? " " : "" ) << "}" << std::endl;
+    ++eqcs_i;
+  }
+}
+
+void QuantConflictFind::debugPrintQuant( const char * c, Node q ) {
+  Trace(c) << "Q" << d_quant_id[q];
+}
+
+void QuantConflictFind::debugPrintQuantBody( const char * c, Node q, Node n, bool doVarNum ) {
+  if( n.getNumChildren()==0 ){
+    Trace(c) << n;
+  }else if( doVarNum && d_qinfo[q].d_var_num.find( n )!=d_qinfo[q].d_var_num.end() ){
+    Trace(c) << "?x" << d_qinfo[q].d_var_num[n];
+  }else{
+    Trace(c) << "(";
+    if( n.getKind()==APPLY_UF ){
+      Trace(c) << n.getOperator();
+    }else{
+      Trace(c) << n.getKind();
+    }
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      Trace(c) << " ";
+      debugPrintQuantBody( c, q, n[i] );
+    }
+    Trace(c) << ")";
+  }
+}
+
+QuantConflictFind::Statistics::Statistics():
+  d_inst_rounds("QuantConflictFind::Inst_Rounds", 0),
+  d_entailment_checks("QuantConflictFind::Entailment_Checks",0)
+{
+  smtStatisticsRegistry()->registerStat(&d_inst_rounds);
+  smtStatisticsRegistry()->registerStat(&d_entailment_checks);
+}
+
+QuantConflictFind::Statistics::~Statistics(){
+  smtStatisticsRegistry()->unregisterStat(&d_inst_rounds);
+  smtStatisticsRegistry()->unregisterStat(&d_entailment_checks);
+}
+
+TNode QuantConflictFind::getZero( Kind k ) {
+  std::map< Kind, Node >::iterator it = d_zero.find( k );
+  if( it==d_zero.end() ){
+    Node nn;
+    if( k==PLUS ){
+      nn = NodeManager::currentNM()->mkConst( Rational(0) );
+    }
+    d_zero[k] = nn;
+    return nn;
+  }else{
+    return it->second;
+  }
+}
+
+} /* namespace CVC4::theory::quantifiers */
+} /* namespace CVC4::theory */
+} /* namespace CVC4 */
diff --git a/src/theory/quantifiers/quant_conflict_find.h b/src/theory/quantifiers/quant_conflict_find.h
new file mode 100644
index 0000000..dc8a9ac
--- /dev/null
+++ b/src/theory/quantifiers/quant_conflict_find.h
@@ -0,0 +1,276 @@
+/*********************                                                        */
+/*! \file quant_conflict_find.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Clark Barrett, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief quantifiers conflict find class
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef QUANT_CONFLICT_FIND
+#define QUANT_CONFLICT_FIND
+
+#include "context/cdhashmap.h"
+#include "context/cdchunk_list.h"
+#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/term_database.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+class QuantConflictFind;
+class QuantInfo;
+
+//match generator
+class MatchGen {
+  friend class QuantInfo;
+private:
+  //current children information
+  int d_child_counter;
+  bool d_use_children;
+  //children of this object
+  std::vector< int > d_children_order;
+  unsigned getNumChildren() { return d_children.size(); }
+  MatchGen * getChild( int i ) { return &d_children[d_children_order[i]]; }
+  //MatchGen * getChild( int i ) { return &d_children[i]; }
+  //current matching information
+  std::vector< TermArgTrie * > d_qn;
+  std::vector< std::map< TNode, TermArgTrie >::iterator > d_qni;
+  bool doMatching( QuantConflictFind * p, QuantInfo * qi );
+  //for matching : each index is either a variable or a ground term
+  unsigned d_qni_size;
+  std::map< int, int > d_qni_var_num;
+  std::map< int, TNode > d_qni_gterm;
+  std::map< int, TNode > d_qni_gterm_rep;
+  std::map< int, int > d_qni_bound;
+  std::vector< int > d_qni_bound_except;
+  std::map< int, TNode > d_qni_bound_cons;
+  std::map< int, int > d_qni_bound_cons_var;
+  std::map< int, int >::iterator d_binding_it;
+  //std::vector< int > d_independent;
+  bool d_matched_basis;
+  bool d_binding;
+  //int getVarBindingVar();
+  std::map< int, Node > d_ground_eval;
+  //determine variable order
+  void determineVariableOrder( QuantInfo * qi, std::vector< int >& bvars );
+  void collectBoundVar( QuantInfo * qi, Node n, std::vector< int >& cbvars, std::map< Node, bool >& visited, bool& hasNested );
+public:
+  //type of the match generator
+  enum {
+    typ_invalid,
+    typ_ground,
+    typ_pred,
+    typ_eq,
+    typ_formula,
+    typ_var,
+    typ_ite_var,
+    typ_bool_var,
+    typ_tconstraint,
+    typ_tsym,
+  };
+  void debugPrintType( const char * c, short typ, bool isTrace = false );
+public:
+  MatchGen();
+  MatchGen( QuantInfo * qi, Node n, bool isVar = false );
+  bool d_tgt;
+  bool d_tgt_orig;
+  bool d_wasSet;
+  Node d_n;
+  std::vector< MatchGen > d_children;
+  short d_type;
+  bool d_type_not;
+  void reset_round( QuantConflictFind * p );
+  void reset( QuantConflictFind * p, bool tgt, QuantInfo * qi );
+  bool getNextMatch( QuantConflictFind * p, QuantInfo * qi );
+  bool getExplanation( QuantConflictFind * p, QuantInfo * qi, std::vector< Node >& exp );
+  Node getExplanationTerm( QuantConflictFind * p, QuantInfo * qi, Node t, std::vector< Node >& exp );
+  bool isValid() { return d_type!=typ_invalid; }
+  void setInvalid();
+
+  // is this term treated as UF application?
+  static bool isHandledBoolConnective( TNode n );
+  static bool isHandledUfTerm( TNode n );
+  static Node getMatchOperator( QuantConflictFind * p, Node n );
+  //can this node be handled by the algorithm
+  static bool isHandled( TNode n );
+};
+
+//info for quantifiers
+class QuantInfo {
+private:
+  void registerNode( Node n, bool hasPol, bool pol, bool beneathQuant = false );
+  void flatten( Node n, bool beneathQuant );
+private: //for completing match
+  std::vector< int > d_unassigned;
+  std::vector< TypeNode > d_unassigned_tn;
+  int d_unassigned_nvar;
+  int d_una_index;
+  std::vector< int > d_una_eqc_count;
+  //optimization: track which arguments variables appear under UF terms in
+  std::map< int, std::map< TNode, std::vector< unsigned > > > d_var_rel_dom;
+  void getPropagateVars( QuantConflictFind * p, std::vector< TNode >& vars, TNode n, bool pol, std::map< TNode, bool >& visited );
+  //optimization: number of variables set, to track when we can stop
+  std::map< int, bool > d_vars_set;
+  std::map< Node, bool > d_ground_terms;
+  std::vector< Node > d_extra_var;
+public:
+  void setGroundSubterm( Node t ) { d_ground_terms[t] = true; }
+  bool isGroundSubterm( Node t ) { return d_ground_terms.find( t )!=d_ground_terms.end(); }
+  bool isBaseMatchComplete();
+  bool isPropagatingInstance( QuantConflictFind * p, Node n );
+public:
+  QuantInfo();
+  ~QuantInfo();
+  std::vector< TNode > d_vars;
+  std::vector< TypeNode > d_var_types;
+  std::map< TNode, int > d_var_num;
+  std::vector< int > d_tsym_vars;
+  std::map< TNode, bool > d_inMatchConstraint;
+  std::map< int, std::vector< Node > > d_var_constraint[2];
+  int getVarNum( TNode v ) { return d_var_num.find( v )!=d_var_num.end() ? d_var_num[v] : -1; }
+  bool isVar( TNode v ) { return d_var_num.find( v )!=d_var_num.end(); }
+  int getNumVars() { return (int)d_vars.size(); }
+  TNode getVar( int i ) { return d_vars[i]; }
+
+  typedef std::map< int, MatchGen * > VarMgMap;
+ private:
+  MatchGen * d_mg;
+  VarMgMap d_var_mg;
+ public:
+  VarMgMap::const_iterator var_mg_find(int i) const { return d_var_mg.find(i); }
+  VarMgMap::const_iterator var_mg_end() const { return d_var_mg.end(); }
+  bool containsVarMg(int i) const { return var_mg_find(i) != var_mg_end(); }
+
+  bool matchGeneratorIsValid() const { return d_mg->isValid(); }
+  bool getNextMatch( QuantConflictFind * p ) {
+    return d_mg->getNextMatch(p, this);
+  }
+
+  Node d_q;
+  bool reset_round( QuantConflictFind * p );
+public:
+  //initialize
+  void initialize( QuantConflictFind * p, Node q, Node qn );
+  //current constraints
+  std::vector< TNode > d_match;
+  std::vector< TNode > d_match_term;
+  std::map< int, std::map< TNode, int > > d_curr_var_deq;
+  std::map< Node, bool > d_tconstraints;
+  int getCurrentRepVar( int v );
+  TNode getCurrentValue( TNode n );
+  TNode getCurrentExpValue( TNode n );
+  bool getCurrentCanBeEqual( QuantConflictFind * p, int v, TNode n, bool chDiseq = false );
+  int addConstraint( QuantConflictFind * p, int v, TNode n, bool polarity );
+  int addConstraint( QuantConflictFind * p, int v, TNode n, int vn, bool polarity, bool doRemove );
+  bool setMatch( QuantConflictFind * p, int v, TNode n, bool isGroundRep, bool isGround );
+  void unsetMatch( QuantConflictFind * p, int v );
+  bool isMatchSpurious( QuantConflictFind * p );
+  bool isTConstraintSpurious( QuantConflictFind * p, std::vector< Node >& terms );
+  bool entailmentTest( QuantConflictFind * p, Node lit, bool chEnt = true );
+  bool completeMatch( QuantConflictFind * p, std::vector< int >& assigned, bool doContinue = false );
+  void revertMatch( QuantConflictFind * p, std::vector< int >& assigned );
+  void debugPrintMatch( const char * c );
+  bool isConstrainedVar( int v );
+public:
+  void getMatch( std::vector< Node >& terms );
+};
+
+class QuantConflictFind : public QuantifiersModule
+{
+  friend class MatchGen;
+  friend class QuantInfo;
+  typedef context::CDChunkList<Node> NodeList;
+  typedef context::CDHashMap<Node, bool, NodeHashFunction> NodeBoolMap;
+private:
+  context::CDO< bool > d_conflict;
+  std::map< Kind, Node > d_zero;
+  //for storing nodes created during t-constraint solving (prevents memory leaks)
+  std::vector< Node > d_tempCache;
+  //optimization: list of quantifiers that depend on ground function applications
+  std::map< TNode, std::vector< Node > > d_func_rel_dom;
+  std::map< TNode, bool > d_irr_func;
+  std::map< Node, bool > d_irr_quant;
+  void setIrrelevantFunction( TNode f );
+private:
+  std::map< Node, Node > d_op_node;
+  int d_fid_count;
+  std::map< Node, int > d_fid;
+  Node mkEqNode( Node a, Node b );
+public:  //for ground terms
+  Node d_true;
+  Node d_false;
+  TNode getZero( Kind k );
+private:
+  std::map< Node, QuantInfo > d_qinfo;
+private:  //for equivalence classes
+  // type -> list(eqc)
+  std::map< TypeNode, std::vector< TNode > > d_eqcs;
+public:
+  enum {
+    effort_conflict,
+    effort_prop_eq,
+  };
+  short d_effort;
+  void setEffort( int e ) { d_effort = e; }
+  static short getMaxQcfEffort();
+  bool areMatchEqual( TNode n1, TNode n2 );
+  bool areMatchDisequal( TNode n1, TNode n2 );
+public:
+  QuantConflictFind( QuantifiersEngine * qe, context::Context* c );
+  ~QuantConflictFind() throw() {}
+  /** register quantifier */
+  void registerQuantifier( Node q );
+public:
+  /** assert quantifier */
+  void assertNode( Node q );
+  /** new node */
+  void newEqClass( Node n );
+  /** merge */
+  void merge( Node a, Node b );
+  /** assert disequal */
+  void assertDisequal( Node a, Node b );
+  /** needs check */
+  bool needsCheck( Theory::Effort level );
+  /** reset round */
+  void reset_round( Theory::Effort level );
+  /** check */
+  void check( Theory::Effort level, unsigned quant_e );
+private:
+  bool d_needs_computeRelEqr;
+public:
+  void computeRelevantEqr();
+private:
+  void debugPrint( const char * c );
+  //for debugging
+  std::vector< Node > d_quants;
+  std::map< Node, int > d_quant_id;
+  void debugPrintQuant( const char * c, Node q );
+  void debugPrintQuantBody( const char * c, Node q, Node n, bool doVarNum = true );
+public:
+  /** statistics class */
+  class Statistics {
+  public:
+    IntStat d_inst_rounds;
+    IntStat d_entailment_checks;
+    Statistics();
+    ~Statistics();
+  };
+  Statistics d_statistics;
+  /** Identify this module */
+  std::string identify() const { return "QcfEngine"; }
+};
+
+} /* namespace CVC4::theory::quantifiers */
+} /* namespace CVC4::theory */
+} /* namespace CVC4 */
+
+#endif
diff --git a/src/theory/quantifiers/quant_equality_engine.cpp b/src/theory/quantifiers/quant_equality_engine.cpp
new file mode 100644
index 0000000..46a8b7c
--- /dev/null
+++ b/src/theory/quantifiers/quant_equality_engine.cpp
@@ -0,0 +1,218 @@
+/*********************                                                        */
+/*! \file quant_equality_engine.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** Congruence closure with free variables
+ **/
+
+#include <vector>
+
+#include "theory/quantifiers/quant_equality_engine.h"
+#include "theory/rewriter.h"
+#include "theory/quantifiers/term_database.h"
+
+using namespace CVC4;
+using namespace std;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+using namespace CVC4::kind;
+
+QuantEqualityEngine::QuantEqualityEngine( QuantifiersEngine * qe, context::Context* c ) :
+QuantifiersModule( qe ),
+d_notify( *this ),
+d_uequalityEngine(d_notify, c, "theory::quantifiers::QuantEqualityEngine", true),
+d_conflict(c, false),
+d_quant_red(c),
+d_quant_unproc(c){
+  d_uequalityEngine.addFunctionKind( kind::APPLY_UF );
+  d_intType = NodeManager::currentNM()->integerType();
+}
+
+void QuantEqualityEngine::conflict(TNode t1, TNode t2) {
+  //report conflict through quantifiers engine output channel
+  std::vector<TNode> assumptions;
+  d_uequalityEngine.explainEquality(t1, t2, true, assumptions, NULL);
+  Node conflict;
+  if( assumptions.size()==1 ){
+    conflict = assumptions[0];
+  }else{
+    conflict = NodeManager::currentNM()->mkNode( AND, assumptions );
+  }
+  d_conflict = true;
+  Trace("qee-conflict") << "Quantifier equality engine conflict : " << conflict << std::endl;
+  d_quantEngine->getOutputChannel().conflict( conflict );
+}
+
+void QuantEqualityEngine::eqNotifyNewClass(TNode t){
+
+}
+void QuantEqualityEngine::eqNotifyPreMerge(TNode t1, TNode t2){
+
+}
+void QuantEqualityEngine::eqNotifyPostMerge(TNode t1, TNode t2){
+
+}
+void QuantEqualityEngine::eqNotifyDisequal(TNode t1, TNode t2, TNode reason) {
+
+}
+
+/* whether this module needs to check this round */
+bool QuantEqualityEngine::needsCheck( Theory::Effort e ) {
+  return e>=Theory::EFFORT_LAST_CALL;
+}
+
+/* reset at a round */
+void QuantEqualityEngine::reset_round( Theory::Effort e ){
+  //TODO
+}
+
+/* Call during quantifier engine's check */
+void QuantEqualityEngine::check( Theory::Effort e, unsigned quant_e ) {
+  //TODO
+}
+
+/* Called for new quantifiers */
+void QuantEqualityEngine::registerQuantifier( Node q ) {
+  //TODO
+}
+
+/** called for everything that gets asserted */
+void QuantEqualityEngine::assertNode( Node n ) {
+  Assert( n.getKind()==FORALL );
+  Trace("qee-debug") << "QEE assert : " << n << std::endl;
+  if( !d_conflict ){
+    Node lit = n[1].getKind()==NOT ? n[1][0] : n[1];
+    bool pol = n[1].getKind()!=NOT;
+    bool success = true;
+    Node t1;
+    Node t2;
+    if( lit.getKind()==APPLY_UF || lit.getKind()==EQUAL ){
+      lit = getTermDatabase()->getCanonicalTerm( lit );
+      Trace("qee-debug") << "Canonical :  " << lit << ", pol = " << pol << std::endl;
+      if( lit.getKind()==APPLY_UF ){
+        t1 = getFunctionAppForPredicateApp( lit );
+        t2 = pol ? getTermDatabase()->d_one : getTermDatabase()->d_zero;
+        pol = true;
+        lit = NodeManager::currentNM()->mkNode( EQUAL, t1, t2 );
+      }else if( lit.getKind()==EQUAL ){
+        if( lit[0].getType().isBoolean() ){
+          if( lit[0].getKind()==NOT ){
+            t1 = lit[0][0];
+            pol = !pol;
+          }else{
+            t1 = lit[0];
+          }
+          if( lit[1].getKind()==NOT ){
+            t2 = lit[1][0];
+            pol = !pol;
+          }else{
+            t2 = lit[1];
+          }
+          if( t1.getKind()==APPLY_UF && t2.getKind()==APPLY_UF ){
+            t1 = getFunctionAppForPredicateApp( t1 );
+            t2 = getFunctionAppForPredicateApp( t2 );
+            lit = NodeManager::currentNM()->mkNode( EQUAL, t1, t2 );
+          }else{
+            success = false;
+          }
+        }else{
+          t1 = lit[0];
+          t2 = lit[1];
+        }
+      }
+    }else{
+      success = false;
+    }
+    if( success ){
+      bool alreadyHolds = false;
+      if( pol && areUnivEqualInternal( t1, t2 ) ){
+        alreadyHolds = true;
+      }else if( !pol && areUnivDisequalInternal( t1, t2 ) ){
+        alreadyHolds = true;
+      }
+
+      if( alreadyHolds ){
+        d_quant_red.push_back( n );
+        Trace("qee-debug") << "...add to redundant" << std::endl;
+      }else{
+        Trace("qee-debug") << "...assert" << std::endl;
+        Trace("qee-assert") << "QEE : assert : " << lit << ", pol = " << pol << ", kind = " << lit.getKind() << std::endl;
+        if( lit.getKind()==APPLY_UF ){
+          d_uequalityEngine.assertPredicate(lit, pol, n);
+        }else{
+          d_uequalityEngine.assertEquality(lit, pol, n);
+        }
+      }
+    }else{
+      d_quant_unproc[n] = true;
+      Trace("qee-debug") << "...add to unprocessed (" << lit.getKind() << ")" << std::endl;
+    }
+  }
+}
+
+bool QuantEqualityEngine::areUnivDisequalInternal( TNode n1, TNode n2 ) {
+  return n1!=n2 && d_uequalityEngine.hasTerm( n1 ) && d_uequalityEngine.hasTerm( n2 ) && d_uequalityEngine.areDisequal( n1, n2, false );
+}
+
+bool QuantEqualityEngine::areUnivEqualInternal( TNode n1, TNode n2 ) {
+  return n1==n2 || ( d_uequalityEngine.hasTerm( n1 ) && d_uequalityEngine.hasTerm( n2 ) && d_uequalityEngine.areEqual( n1, n2 ) );
+}
+
+TNode QuantEqualityEngine::getUnivRepresentativeInternal( TNode n ) {
+  if( d_uequalityEngine.hasTerm( n ) ){
+    return d_uequalityEngine.getRepresentative( n );
+  }else{
+    return n;
+  }
+}
+bool QuantEqualityEngine::areUnivDisequal( TNode n1, TNode n2 ) {
+  //TODO: must convert to internal representation
+  return areUnivDisequalInternal( n1, n2 );
+}
+
+bool QuantEqualityEngine::areUnivEqual( TNode n1, TNode n2 ) {
+  //TODO: must convert to internal representation
+  return areUnivEqualInternal( n1, n2 );
+}
+
+TNode QuantEqualityEngine::getUnivRepresentative( TNode n ) {
+  //TODO: must convert to internal representation
+  return getUnivRepresentativeInternal( n );
+}
+
+Node QuantEqualityEngine::getFunctionForPredicate( Node f ) {
+  std::map< Node, Node >::iterator it = d_pred_to_func.find( f );
+  if( it==d_pred_to_func.end() ){
+    std::vector< TypeNode > argTypes;
+    TypeNode tn = f.getType();
+    for( unsigned i=0; i<(tn.getNumChildren()-1); i++ ){
+      argTypes.push_back( tn[i] );
+    }
+    TypeNode ftn = NodeManager::currentNM()->mkFunctionType( argTypes, d_intType  );
+    std::stringstream ss;
+    ss << "ee_" << f;
+    Node op = NodeManager::currentNM()->mkSkolem( ss.str(), ftn, "op created for internal ee" );
+    d_pred_to_func[f] = op;
+    return op;
+  }else{
+    return it->second;
+  }
+}
+
+Node QuantEqualityEngine::getFunctionAppForPredicateApp( Node n ) {
+  Assert( n.getKind()==APPLY_UF );
+  std::vector< Node > children;
+  children.push_back( getFunctionForPredicate( n.getOperator() ) );
+  for( unsigned i=0; i<n.getNumChildren(); i++ ){
+    children.push_back( n[i] );
+  }
+  return NodeManager::currentNM()->mkNode( APPLY_UF, children );
+}
+
diff --git a/src/theory/quantifiers/quant_equality_engine.h b/src/theory/quantifiers/quant_equality_engine.h
new file mode 100644
index 0000000..26654de
--- /dev/null
+++ b/src/theory/quantifiers/quant_equality_engine.h
@@ -0,0 +1,101 @@
+/*********************                                                        */
+/*! \file quant_equality_engine.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Congruence closure with free variables
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__QUANTIFIERS_EQUALITY_ENGINE_H
+#define __CVC4__QUANTIFIERS_EQUALITY_ENGINE_H
+
+#include <iostream>
+#include <string>
+#include <vector>
+#include <map>
+#include "expr/node.h"
+#include "expr/type_node.h"
+#include "theory/quantifiers_engine.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+class QuantEqualityEngine : public QuantifiersModule {
+  typedef context::CDHashMap<Node, bool, NodeHashFunction> NodeBoolMap;
+private:
+  //notification class for equality engine
+  class NotifyClass : public eq::EqualityEngineNotify {
+    QuantEqualityEngine& d_qee;
+  public:
+    NotifyClass(QuantEqualityEngine& qee): d_qee(qee) {}
+    bool eqNotifyTriggerEquality(TNode equality, bool value) { return true; }
+    bool eqNotifyTriggerPredicate(TNode predicate, bool value) { return true; }
+    bool eqNotifyTriggerTermEquality(TheoryId tag, TNode t1, TNode t2, bool value) { return true; }
+    void eqNotifyConstantTermMerge(TNode t1, TNode t2) { d_qee.conflict(t1, t2); }
+    void eqNotifyNewClass(TNode t) { d_qee.eqNotifyNewClass(t); }
+    void eqNotifyPreMerge(TNode t1, TNode t2) { d_qee.eqNotifyPreMerge(t1, t2); }
+    void eqNotifyPostMerge(TNode t1, TNode t2) { d_qee.eqNotifyPostMerge(t1, t2); }
+    void eqNotifyDisequal(TNode t1, TNode t2, TNode reason) {d_qee.eqNotifyDisequal(t1, t2, reason); }
+  };/* class ConjectureGenerator::NotifyClass */
+  /** The notify class */
+  NotifyClass d_notify;
+  /** (universal) equaltity engine */
+  eq::EqualityEngine d_uequalityEngine;
+  /** Are we in conflict */
+  context::CDO<bool> d_conflict;
+  /** list of redundant quantifiers in current context */
+  context::CDList<Node> d_quant_red;
+  /** unprocessed quantifiers in current context */
+  NodeBoolMap d_quant_unproc;
+  // map predicates to functions over int
+  TypeNode d_intType;
+  std::map< Node, Node > d_pred_to_func;
+  Node getFunctionForPredicate( Node f );
+  Node getFunctionAppForPredicateApp( Node n );
+private:
+  void conflict(TNode t1, TNode t2);
+  void eqNotifyNewClass(TNode t);
+  void eqNotifyPreMerge(TNode t1, TNode t2);
+  void eqNotifyPostMerge(TNode t1, TNode t2);
+  void eqNotifyDisequal(TNode t1, TNode t2, TNode reason);
+  //queries
+  bool areUnivDisequalInternal( TNode n1, TNode n2 );
+  bool areUnivEqualInternal( TNode n1, TNode n2 );  
+  TNode getUnivRepresentativeInternal( TNode n );
+public:
+  QuantEqualityEngine( QuantifiersEngine * qe, context::Context* c );
+  virtual ~QuantEqualityEngine() throw (){}
+
+  /* whether this module needs to check this round */
+  bool needsCheck( Theory::Effort e );
+  /* reset at a round */
+  void reset_round( Theory::Effort e );
+  /* Call during quantifier engine's check */
+  void check( Theory::Effort e, unsigned quant_e );
+  /* Called for new quantifiers */
+  void registerQuantifier( Node q );
+  /** called for everything that gets asserted */
+  void assertNode( Node n );
+  /** Identify this module (for debugging, dynamic configuration, etc..) */
+  std::string identify() const { return "QuantEqualityEngine"; }
+  /** queries */
+  bool areUnivDisequal( TNode n1, TNode n2 );
+  bool areUnivEqual( TNode n1, TNode n2 );
+  TNode getUnivRepresentative( TNode n );
+};
+
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/quant_split.cpp b/src/theory/quantifiers/quant_split.cpp
new file mode 100644
index 0000000..63935f1
--- /dev/null
+++ b/src/theory/quantifiers/quant_split.cpp
@@ -0,0 +1,145 @@
+/*********************                                                        */
+/*! \file quant_split.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of dynamic quantifiers splitting
+ **/
+
+#include "theory/quantifiers/quant_split.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "options/quantifiers_options.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+
+
+QuantDSplit::QuantDSplit( QuantifiersEngine * qe, context::Context* c ) :
+QuantifiersModule( qe ), d_added_split( qe->getUserContext() ){
+
+}
+
+/** pre register quantifier */
+void QuantDSplit::preRegisterQuantifier( Node q ) {
+  int max_index = -1;
+  int max_score = -1;
+  if( q.getNumChildren()==3 ){
+    return;
+  }
+  Trace("quant-dsplit-debug") << "Check split quantified formula : " << q << std::endl;
+  for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
+    TypeNode tn = q[0][i].getType();
+    if( tn.isDatatype() ){
+      const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+      if( dt.isRecursiveSingleton( tn.toType() ) ){
+        Trace("quant-dsplit-debug") << "Datatype " << dt.getName() << " is recursive singleton." << std::endl;
+      }else{
+        int score = -1;
+        if( options::quantDynamicSplit()==quantifiers::QUANT_DSPLIT_MODE_AGG ){
+          score = dt.isInterpretedFinite( tn.toType() ) ? 1 : 0;
+        }else if( options::quantDynamicSplit()==quantifiers::QUANT_DSPLIT_MODE_DEFAULT ){
+          //only split if goes from being unhandled -> handled by finite instantiation
+          //  an example is datatypes with uninterpreted sort fields, which are "interpreted finite" but not "finite"
+          if( !d_quantEngine->isFiniteBound( q, q[0][i] ) ){
+            score = dt.isInterpretedFinite( tn.toType() ) ? 1 : -1;
+          }
+        }
+        Trace("quant-dsplit-debug") << "Datatype " << dt.getName() << " is score " << score << " (" << dt.isInterpretedFinite( tn.toType() ) << " " << dt.isFinite( tn.toType() ) << ")" << std::endl;
+        if( score>max_score ){
+          max_index = i;
+          max_score = score;
+        }
+      }
+    }
+  }
+
+  if( max_index!=-1 ){
+    Trace("quant-dsplit-debug") << "Will split at index " << max_index << "." << std::endl;
+    d_quant_to_reduce[q] = max_index;
+    d_quantEngine->setOwner( q, this );
+  }
+}
+
+/* whether this module needs to check this round */
+bool QuantDSplit::needsCheck( Theory::Effort e ) {
+  return e>=Theory::EFFORT_FULL && !d_quant_to_reduce.empty();
+}
+
+bool QuantDSplit::checkCompleteFor( Node q ) {
+  // true if we split q
+  return d_added_split.find( q )!=d_added_split.end();
+}
+
+/* Call during quantifier engine's check */
+void QuantDSplit::check( Theory::Effort e, unsigned quant_e ) {
+  //add lemmas ASAP (they are a reduction)
+  if( quant_e==QuantifiersEngine::QEFFORT_CONFLICT ){
+    std::vector< Node > lemmas;
+    for(std::map< Node, int >::iterator it = d_quant_to_reduce.begin(); it != d_quant_to_reduce.end(); ++it) {
+      Node q = it->first;
+      if( d_quantEngine->getModel()->isQuantifierAsserted( q ) && d_quantEngine->getModel()->isQuantifierActive( q ) ){
+        if( d_added_split.find( q )==d_added_split.end() ){
+          d_added_split.insert( q );
+          std::vector< Node > bvs;
+          for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
+            if( (int)i!=it->second ){
+              bvs.push_back( q[0][i] );
+            }
+          }
+          std::vector< Node > disj;
+          disj.push_back( q.negate() );
+          TNode svar = q[0][it->second];
+          TypeNode tn = svar.getType();
+          if( tn.isDatatype() ){
+            std::vector< Node > cons;
+            const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+            for( unsigned j=0; j<dt.getNumConstructors(); j++ ){
+              std::vector< Node > vars;
+              for( unsigned k=0; k<dt[j].getNumArgs(); k++ ){
+                TypeNode tns = TypeNode::fromType( dt[j][k].getRangeType() );
+                Node v = NodeManager::currentNM()->mkBoundVar( tns );
+                vars.push_back( v );
+              }
+              std::vector< Node > bvs_cmb;
+              bvs_cmb.insert( bvs_cmb.end(), bvs.begin(), bvs.end() );
+              bvs_cmb.insert( bvs_cmb.end(), vars.begin(), vars.end() );
+              vars.insert( vars.begin(), Node::fromExpr( dt[j].getConstructor() ) );
+              Node c = NodeManager::currentNM()->mkNode( kind::APPLY_CONSTRUCTOR, vars );
+              TNode ct = c;
+              Node body = q[1].substitute( svar, ct );
+              if( !bvs_cmb.empty() ){
+                body = NodeManager::currentNM()->mkNode( kind::FORALL, NodeManager::currentNM()->mkNode( kind::BOUND_VAR_LIST, bvs_cmb ), body );
+              }
+              cons.push_back( body );
+            }
+            Node conc = cons.size()==1 ? cons[0] : NodeManager::currentNM()->mkNode( kind::AND, cons );
+            disj.push_back( conc );
+          }else{
+            Assert( false );
+          }
+          lemmas.push_back( disj.size()==1 ? disj[0] : NodeManager::currentNM()->mkNode( kind::OR, disj ) );
+        }
+      }
+    }
+
+    //add lemmas to quantifiers engine
+    for( unsigned i=0; i<lemmas.size(); i++ ){
+      Trace("quant-dsplit") << "QuantDSplit lemma : " << lemmas[i] << std::endl;
+      d_quantEngine->addLemma( lemmas[i], false );
+    }
+    //d_quant_to_reduce.clear();
+  }
+}
+
diff --git a/src/theory/quantifiers/quant_split.h b/src/theory/quantifiers/quant_split.h
new file mode 100644
index 0000000..3e3b088
--- /dev/null
+++ b/src/theory/quantifiers/quant_split.h
@@ -0,0 +1,55 @@
+/*********************                                                        */
+/*! \file quant_split.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief dynamic quantifiers splitting
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANT_SPLIT_H
+#define __CVC4__THEORY__QUANT_SPLIT_H
+
+#include "theory/quantifiers_engine.h"
+#include "context/cdo.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+class QuantDSplit : public QuantifiersModule {
+  typedef context::CDHashSet<Node, NodeHashFunction> NodeSet;
+private:
+  /** list of relevant quantifiers asserted in the current context */
+  std::map< Node, int > d_quant_to_reduce;
+  /** whether we have instantiated quantified formulas */
+  NodeSet d_added_split;
+public:
+  QuantDSplit( QuantifiersEngine * qe, context::Context* c );
+  /** determine whether this quantified formula will be reduced */
+  void preRegisterQuantifier( Node q );
+  
+  /* whether this module needs to check this round */
+  bool needsCheck( Theory::Effort e );
+  /* Call during quantifier engine's check */
+  void check( Theory::Effort e, unsigned quant_e );
+  /* Called for new quantifiers */
+  void registerQuantifier( Node q ) {}
+  void assertNode( Node n ) {}
+  bool checkCompleteFor( Node q );
+  /** Identify this module (for debugging, dynamic configuration, etc..) */
+  std::string identify() const { return "QuantDSplit"; }
+};
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/quant_util.cpp b/src/theory/quantifiers/quant_util.cpp
new file mode 100644
index 0000000..163c576
--- /dev/null
+++ b/src/theory/quantifiers/quant_util.cpp
@@ -0,0 +1,525 @@
+/*********************                                                        */
+/*! \file quant_util.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of quantifier utilities
+ **/
+
+#include "theory/quantifiers/quant_util.h"
+#include "theory/quantifiers/inst_match.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers_engine.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+
+
+unsigned QuantifiersModule::needsModel( Theory::Effort e ) {
+  return QuantifiersEngine::QEFFORT_NONE;
+}
+
+eq::EqualityEngine * QuantifiersModule::getEqualityEngine() {
+  return d_quantEngine->getMasterEqualityEngine();
+}
+
+bool QuantifiersModule::areEqual( TNode n1, TNode n2 ) {
+  return d_quantEngine->getEqualityQuery()->areEqual( n1, n2 );
+}
+
+bool QuantifiersModule::areDisequal( TNode n1, TNode n2 ) {
+  return d_quantEngine->getEqualityQuery()->areDisequal( n1, n2 );
+}
+
+TNode QuantifiersModule::getRepresentative( TNode n ) {
+  return d_quantEngine->getEqualityQuery()->getRepresentative( n );
+}
+
+quantifiers::TermDb * QuantifiersModule::getTermDatabase() {
+  return d_quantEngine->getTermDatabase();
+}
+
+bool QuantArith::getMonomial( Node n, Node& c, Node& v ){
+  if( n.getKind()==MULT && n.getNumChildren()==2 && n[0].isConst() ){
+    c = n[0];
+    v = n[1];
+    return true;
+  }else{
+    return false;
+  }
+}
+bool QuantArith::getMonomial( Node n, std::map< Node, Node >& msum ) {
+  if( n.isConst() ){
+    if( msum.find(Node::null())==msum.end() ){
+      msum[Node::null()] = n;
+      return true;
+    }
+  }else if( n.getKind()==MULT && n.getNumChildren()==2 && n[0].isConst() ){
+    if( msum.find(n[1])==msum.end() ){
+      msum[n[1]] = n[0];
+      return true;
+    }
+  }else{
+    if( msum.find(n)==msum.end() ){
+      msum[n] = Node::null();
+      return true;
+    }
+  }
+  return false;
+}
+
+bool QuantArith::getMonomialSum( Node n, std::map< Node, Node >& msum ) {
+  if ( n.getKind()==PLUS ){
+    for( unsigned i=0; i<n.getNumChildren(); i++) {
+      if (!getMonomial( n[i], msum )){
+        return false;
+      }
+    }
+    return true;
+  }else{
+    return getMonomial( n, msum );
+  }
+}
+
+bool QuantArith::getMonomialSumLit( Node lit, std::map< Node, Node >& msum ) {
+  if( lit.getKind()==GEQ || lit.getKind()==EQUAL ){
+    if( getMonomialSum( lit[0], msum ) ){
+      if( lit[1].isConst() && lit[1].getConst<Rational>().isZero() ){
+        return true;
+      }else{
+        //subtract the other side
+        std::map< Node, Node > msum2;
+        if( getMonomialSum( lit[1], msum2 ) ){
+          for( std::map< Node, Node >::iterator it = msum2.begin(); it != msum2.end(); ++it ){
+            std::map< Node, Node >::iterator it2 = msum.find( it->first );
+            if( it2!=msum.end() ){
+              Node r = NodeManager::currentNM()->mkNode( MINUS, it2->second.isNull() ? NodeManager::currentNM()->mkConst( Rational(1) ) : it2->second,
+                                                                it->second.isNull() ? NodeManager::currentNM()->mkConst( Rational(1) ) : it->second );
+              msum[it->first] = Rewriter::rewrite( r );
+            }else{
+              msum[it->first] = it->second.isNull() ? NodeManager::currentNM()->mkConst( Rational(-1) ) : negate( it->second );
+            }
+          }
+          return true;
+        }
+      }
+    }
+  }
+  return false;
+}
+
+Node QuantArith::mkNode( std::map< Node, Node >& msum ) {
+  std::vector< Node > children;
+  for( std::map< Node, Node >::iterator it = msum.begin(); it != msum.end(); ++it ){
+    Node m;
+    if( !it->first.isNull() ){
+      if( !it->second.isNull() ){
+        m = NodeManager::currentNM()->mkNode( MULT, it->second, it->first );
+      }else{
+        m = it->first;
+      }
+    }else{
+      Assert( !it->second.isNull() );
+      m = it->second;
+    }
+    children.push_back(m);
+  }
+  return children.size()>1 ? NodeManager::currentNM()->mkNode( PLUS, children ) : (children.size()==1 ? children[0] : NodeManager::currentNM()->mkConst( Rational(0) ));
+}
+
+// given (msum <k> 0), solve (veq_c * v <k> val) or (val <k> veq_c * v), where:
+// veq_c is either null (meaning 1), or positive.
+// return value 1: veq_c*v is RHS, -1: veq_c*v is LHS, 0: failed.
+int QuantArith::isolate( Node v, std::map< Node, Node >& msum, Node & veq_c, Node & val, Kind k ) {
+  std::map< Node, Node >::iterator itv = msum.find( v );
+  if( itv!=msum.end() ){
+    std::vector< Node > children;
+    Rational r = itv->second.isNull() ? Rational(1) : itv->second.getConst<Rational>();
+    if ( r.sgn()!=0 ){
+      for( std::map< Node, Node >::iterator it = msum.begin(); it != msum.end(); ++it ){
+        if( it->first!=v ){
+          Node m;
+          if( !it->first.isNull() ){
+            if ( !it->second.isNull() ){
+              m = NodeManager::currentNM()->mkNode( MULT, it->second, it->first );
+            }else{
+              m = it->first;
+            }
+          }else{
+            m = it->second;
+          }
+          children.push_back(m);
+        }
+      }
+      val = children.size()>1 ? NodeManager::currentNM()->mkNode( PLUS, children ) :
+                                (children.size()==1 ? children[0] : NodeManager::currentNM()->mkConst( Rational(0) ));
+      if( !r.isOne() && !r.isNegativeOne() ){
+        if( v.getType().isInteger() ){
+          veq_c = NodeManager::currentNM()->mkConst( r.abs() );
+        }else{
+          val = NodeManager::currentNM()->mkNode( MULT, val, NodeManager::currentNM()->mkConst( Rational(1) / r.abs() ) );
+        }
+      }
+      if( r.sgn()==1 ){
+        val = negate(val);
+      }else{
+        val = Rewriter::rewrite( val );
+      }
+      return ( r.sgn()==1 || k==EQUAL ) ? 1 : -1;
+    }
+  }
+  return 0;
+}
+
+int QuantArith::isolate( Node v, std::map< Node, Node >& msum, Node & veq, Kind k, bool doCoeff ) {
+  Node veq_c;
+  Node val;
+  //isolate v in the (in)equality
+  int ires = isolate( v, msum, veq_c, val, k );
+  if( ires!=0 ){
+    Node vc = v;
+    if( !veq_c.isNull() ){
+      if( doCoeff ){
+        vc = NodeManager::currentNM()->mkNode( MULT, veq_c, vc );
+      }else{
+        return 0;
+      }
+    }
+    bool inOrder = ires==1;
+    veq = NodeManager::currentNM()->mkNode( k, inOrder ? vc : val, inOrder ? val : vc );
+  }
+  return ires;
+}
+
+Node QuantArith::solveEqualityFor( Node lit, Node v ) {
+  Assert( lit.getKind()==EQUAL );
+  //first look directly at sides
+  TypeNode tn = lit[0].getType();
+  for( unsigned r=0; r<2; r++ ){
+    if( lit[r]==v ){
+      return lit[1-r];
+    }
+  }
+  if( tn.isReal() ){
+    if( quantifiers::TermDb::containsTerm( lit, v ) ){
+      std::map< Node, Node > msum;
+      if( QuantArith::getMonomialSumLit( lit, msum ) ){
+        Node val, veqc;
+        if( QuantArith::isolate( v, msum, veqc, val, EQUAL )!=0 ){
+          if( veqc.isNull() ){
+            return val;
+          }
+        }
+      }
+    }
+  }
+  return Node::null();
+}
+
+Node QuantArith::negate( Node t ) {
+  Node tt = NodeManager::currentNM()->mkNode( MULT, NodeManager::currentNM()->mkConst( Rational(-1) ), t );
+  tt = Rewriter::rewrite( tt );
+  return tt;
+}
+
+Node QuantArith::offset( Node t, int i ) {
+  Node tt = NodeManager::currentNM()->mkNode( PLUS, NodeManager::currentNM()->mkConst( Rational(i) ), t );
+  tt = Rewriter::rewrite( tt );
+  return tt;
+}
+
+void QuantArith::debugPrintMonomialSum( std::map< Node, Node >& msum, const char * c ) {
+  for(std::map< Node, Node >::iterator it = msum.begin(); it != msum.end(); ++it ){
+    Trace(c) << "  ";
+    if( !it->second.isNull() ){
+      Trace(c) << it->second;
+      if( !it->first.isNull() ){
+        Trace(c) << " * ";
+      }
+    }
+    if( !it->first.isNull() ){
+      Trace(c) << it->first;
+    }
+    Trace(c) << std::endl;
+  }
+  Trace(c) << std::endl;
+}
+
+
+void QuantRelevance::registerQuantifier( Node f ){
+  //compute symbols in f
+  std::vector< Node > syms;
+  computeSymbols( f[1], syms );
+  d_syms[f].insert( d_syms[f].begin(), syms.begin(), syms.end() );
+  //set initial relevance
+  int minRelevance = -1;
+  for( int i=0; i<(int)syms.size(); i++ ){
+    d_syms_quants[ syms[i] ].push_back( f );
+    int r = getRelevance( syms[i] );
+    if( r!=-1 && ( minRelevance==-1 || r<minRelevance ) ){
+      minRelevance = r;
+    }
+  }
+  if( minRelevance!=-1 ){
+    setRelevance( f, minRelevance+1 );
+  }
+}
+
+
+/** compute symbols */
+void QuantRelevance::computeSymbols( Node n, std::vector< Node >& syms ){
+  if( n.getKind()==APPLY_UF ){
+    Node op = n.getOperator();
+    if( std::find( syms.begin(), syms.end(), op )==syms.end() ){
+      syms.push_back( op );
+    }
+  }
+  if( n.getKind()!=FORALL ){
+    for( int i=0; i<(int)n.getNumChildren(); i++ ){
+      computeSymbols( n[i], syms );
+    }
+  }
+}
+
+/** set relevance */
+void QuantRelevance::setRelevance( Node s, int r ){
+  if( d_computeRel ){
+    int rOld = getRelevance( s );
+    if( rOld==-1 || r<rOld ){
+      d_relevance[s] = r;
+      if( s.getKind()==FORALL ){
+        for( int i=0; i<(int)d_syms[s].size(); i++ ){
+          setRelevance( d_syms[s][i], r );
+        }
+      }else{
+        for( int i=0; i<(int)d_syms_quants[s].size(); i++ ){
+          setRelevance( d_syms_quants[s][i], r+1 );
+        }
+      }
+    }
+  }
+}
+
+
+QuantPhaseReq::QuantPhaseReq( Node n, bool computeEq ){
+  initialize( n, computeEq );
+}
+
+void QuantPhaseReq::initialize( Node n, bool computeEq ){
+  std::map< Node, int > phaseReqs2;
+  computePhaseReqs( n, false, phaseReqs2 );
+  for( std::map< Node, int >::iterator it = phaseReqs2.begin(); it != phaseReqs2.end(); ++it ){
+    if( it->second==1 ){
+      d_phase_reqs[ it->first ] = true;
+    }else if( it->second==-1 ){
+      d_phase_reqs[ it->first ] = false;
+    }
+  }
+  Debug("inst-engine-phase-req") << "Phase requirements for " << n << ":" << std::endl;
+  //now, compute if any patterns are equality required
+  if( computeEq ){
+    for( std::map< Node, bool >::iterator it = d_phase_reqs.begin(); it != d_phase_reqs.end(); ++it ){
+      Debug("inst-engine-phase-req") << "   " << it->first << " -> " << it->second << std::endl;
+      if( it->first.getKind()==EQUAL ){
+        if( quantifiers::TermDb::hasInstConstAttr(it->first[0]) ){
+          if( !quantifiers::TermDb::hasInstConstAttr(it->first[1]) ){
+            d_phase_reqs_equality_term[ it->first[0] ] = it->first[1];
+            d_phase_reqs_equality[ it->first[0] ] = it->second;
+            Debug("inst-engine-phase-req") << "      " << it->first[0] << ( it->second ? " == " : " != " ) << it->first[1] << std::endl;
+          }
+        }else if( quantifiers::TermDb::hasInstConstAttr(it->first[1]) ){
+          d_phase_reqs_equality_term[ it->first[1] ] = it->first[0];
+          d_phase_reqs_equality[ it->first[1] ] = it->second;
+          Debug("inst-engine-phase-req") << "      " << it->first[1] << ( it->second ? " == " : " != " ) << it->first[0] << std::endl;
+        }
+      }
+    }
+  }
+}
+
+void QuantPhaseReq::computePhaseReqs( Node n, bool polarity, std::map< Node, int >& phaseReqs ){
+  bool newReqPol = false;
+  bool newPolarity;
+  if( n.getKind()==NOT ){
+    newReqPol = true;
+    newPolarity = !polarity;
+  }else if( n.getKind()==OR || n.getKind()==IMPLIES ){
+    if( !polarity ){
+      newReqPol = true;
+      newPolarity = false;
+    }
+  }else if( n.getKind()==AND ){
+    if( polarity ){
+      newReqPol = true;
+      newPolarity = true;
+    }
+  }else{
+    int val = polarity ? 1 : -1;
+    if( phaseReqs.find( n )==phaseReqs.end() ){
+      phaseReqs[n] = val;
+    }else if( val!=phaseReqs[n] ){
+      phaseReqs[n] = 0;
+    }
+  }
+  if( newReqPol ){
+    for( int i=0; i<(int)n.getNumChildren(); i++ ){
+      if( n.getKind()==IMPLIES && i==0 ){
+        computePhaseReqs( n[i], !newPolarity, phaseReqs );
+      }else{
+        computePhaseReqs( n[i], newPolarity, phaseReqs );
+      }
+    }
+  }
+}
+
+void QuantPhaseReq::getPolarity( Node n, int child, bool hasPol, bool pol, bool& newHasPol, bool& newPol ) {
+  if( n.getKind()==AND || n.getKind()==OR || n.getKind()==SEP_STAR ){
+    newHasPol = hasPol;
+    newPol = pol;
+  }else if( n.getKind()==IMPLIES ){
+    newHasPol = hasPol;
+    newPol = child==0 ? !pol : pol;
+  }else if( n.getKind()==NOT ){
+    newHasPol = hasPol;
+    newPol = !pol;
+  }else if( n.getKind()==ITE ){
+    newHasPol = (child!=0) && hasPol;
+    newPol = pol;
+  }else if( n.getKind()==FORALL ){
+    newHasPol = (child==1) && hasPol;
+    newPol = pol;
+  }else{
+    newHasPol = false;
+    newPol = pol;
+  }
+}
+
+void QuantPhaseReq::getEntailPolarity( Node n, int child, bool hasPol, bool pol, bool& newHasPol, bool& newPol ) {
+  if( n.getKind()==AND || n.getKind()==OR || n.getKind()==SEP_STAR ){
+    newHasPol = hasPol && pol!=( n.getKind()==OR );
+    newPol = pol;
+  }else if( n.getKind()==IMPLIES ){
+    newHasPol = hasPol && !pol;
+    newPol = child==0 ? !pol : pol;
+  }else if( n.getKind()==NOT ){
+    newHasPol = hasPol;
+    newPol = !pol;
+  }else{
+    newHasPol = false;
+    newPol = pol;
+  }
+}
+
+void QuantEPR::registerNode( Node n, std::map< int, std::map< Node, bool > >& visited, bool beneathQuant, bool hasPol, bool pol ) {
+  int vindex = hasPol ? ( pol ? 1 : -1 ) : 0;
+  if( visited[vindex].find( n )==visited[vindex].end() ){
+    visited[vindex][n] = true;
+    Trace("quant-epr-debug") << "QuantEPR::registerNode " << n << std::endl;
+    if( n.getKind()==FORALL ){
+      if( beneathQuant || !hasPol || !pol ){
+        for( unsigned i=0; i<n[0].getNumChildren(); i++ ){
+          TypeNode tn = n[0][i].getType();
+          if( d_non_epr.find( tn )==d_non_epr.end() ){
+            Trace("quant-epr") << "Sort " << tn << " is non-EPR because of nested or possible existential quantification." << std::endl;
+            d_non_epr[tn] = true;
+          }
+        }
+      }else{
+        beneathQuant = true;
+      }
+    }
+    TypeNode tn = n.getType();
+    
+    if( n.getNumChildren()>0 ){
+      if( tn.isSort() ){
+        if( d_non_epr.find( tn )==d_non_epr.end() ){
+          Trace("quant-epr") << "Sort " << tn << " is non-EPR because of " << n << std::endl;
+          d_non_epr[tn] = true;
+        }
+      }
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        bool newHasPol;
+        bool newPol;
+        QuantPhaseReq::getPolarity( n, i, hasPol, pol, newHasPol, newPol );
+        registerNode( n[i], visited, beneathQuant, newHasPol, newPol );
+      }
+    }else if( tn.isSort() ){
+      if( n.getKind()==BOUND_VARIABLE ){
+        if( d_consts.find( tn )==d_consts.end() ){
+          //mark that at least one constant must occur
+          d_consts[tn].clear();
+        }
+      }else if( std::find( d_consts[tn].begin(), d_consts[tn].end(), n )==d_consts[tn].end() ){
+        d_consts[tn].push_back( n );
+        Trace("quant-epr") << "...constant of type " << tn << " : " << n << std::endl;
+      }
+    }
+  }
+}
+
+void QuantEPR::registerAssertion( Node assertion ) {
+  std::map< int, std::map< Node, bool > > visited;
+  registerNode( assertion, visited, false, true, true );
+}
+
+void QuantEPR::finishInit() {
+  Trace("quant-epr-debug") << "QuantEPR::finishInit" << std::endl;
+  for( std::map< TypeNode, std::vector< Node > >::iterator it = d_consts.begin(); it != d_consts.end(); ++it ){
+    Assert( d_epr_axiom.find( it->first )==d_epr_axiom.end() );
+    Trace("quant-epr-debug") << "process " << it->first << std::endl;
+    if( d_non_epr.find( it->first )!=d_non_epr.end() ){
+      Trace("quant-epr-debug") << "...non-epr" << std::endl;
+      it->second.clear();
+    }else{
+      Trace("quant-epr-debug") << "...epr, #consts = " << it->second.size() << std::endl;
+      if( it->second.empty() ){
+        it->second.push_back( NodeManager::currentNM()->mkSkolem( "e", it->first, "EPR base constant" ) );
+      }
+      if( Trace.isOn("quant-epr") ){
+        Trace("quant-epr") << "Type " << it->first << " is EPR, with constants : " << std::endl;
+        for( unsigned i=0; i<it->second.size(); i++ ){
+          Trace("quant-epr") << "  " << it->second[i] << std::endl;
+        }
+      }
+    }
+  }
+}
+
+bool QuantEPR::isEPRConstant( TypeNode tn, Node k ) {
+  return std::find( d_consts[tn].begin(), d_consts[tn].end(), k )!=d_consts[tn].end();
+}
+
+void QuantEPR::addEPRConstant( TypeNode tn, Node k ) {
+  Assert( isEPR( tn ) );
+  Assert( d_epr_axiom.find( tn )==d_epr_axiom.end() );
+  if( !isEPRConstant( tn, k ) ){
+    d_consts[tn].push_back( k );
+  }
+}
+
+Node QuantEPR::mkEPRAxiom( TypeNode tn ) {
+  Assert( isEPR( tn ) );
+  std::map< TypeNode, Node >::iterator ita = d_epr_axiom.find( tn );
+  if( ita==d_epr_axiom.end() ){
+    std::vector< Node > disj;
+    Node x = NodeManager::currentNM()->mkBoundVar( tn );
+    for( unsigned i=0; i<d_consts[tn].size(); i++ ){
+      disj.push_back( NodeManager::currentNM()->mkNode( EQUAL, x, d_consts[tn][i] ) );
+    }
+    Assert( !disj.empty() );
+    d_epr_axiom[tn] = NodeManager::currentNM()->mkNode( FORALL, NodeManager::currentNM()->mkNode( BOUND_VAR_LIST, x ), disj.size()==1 ? disj[0] : NodeManager::currentNM()->mkNode( OR, disj ) );
+    return d_epr_axiom[tn];
+  }else{
+    return ita->second;
+  }
+}
+
diff --git a/src/theory/quantifiers/quant_util.h b/src/theory/quantifiers/quant_util.h
new file mode 100644
index 0000000..b426413
--- /dev/null
+++ b/src/theory/quantifiers/quant_util.h
@@ -0,0 +1,212 @@
+/*********************                                                        */
+/*! \file quant_util.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief quantifier util
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANT_UTIL_H
+#define __CVC4__THEORY__QUANT_UTIL_H
+
+#include "theory/theory.h"
+#include "theory/uf/equality_engine.h"
+
+#include <ext/hash_set>
+#include <iostream>
+#include <map>
+
+namespace CVC4 {
+namespace theory {
+
+class QuantifiersEngine;
+
+namespace quantifiers {
+  class TermDb;
+}
+
+class QuantifiersModule {
+protected:
+  QuantifiersEngine* d_quantEngine;
+public:
+  QuantifiersModule( QuantifiersEngine* qe ) : d_quantEngine( qe ){}
+  virtual ~QuantifiersModule(){}
+  //get quantifiers engine
+  QuantifiersEngine* getQuantifiersEngine() { return d_quantEngine; }
+  /** presolve */
+  virtual void presolve() {}
+  /* whether this module needs to check this round */
+  virtual bool needsCheck( Theory::Effort e ) { return e>=Theory::EFFORT_LAST_CALL; }
+  /* whether this module needs a model built */
+  virtual unsigned needsModel( Theory::Effort e );
+  /* reset at a round */
+  virtual void reset_round( Theory::Effort e ){}
+  /* Call during quantifier engine's check */
+  virtual void check( Theory::Effort e, unsigned quant_e ) = 0;
+  /* check was complete, return false if there is no way to answer "SAT", true if maybe can answer "SAT" */
+  virtual bool checkComplete() { return true; }
+  /* check was complete for quantified formula q (e.g. no lemmas implies a model) */
+  virtual bool checkCompleteFor( Node q ) { return false; }
+  /* Called for new quantified formulas */
+  virtual void preRegisterQuantifier( Node q ) { }
+  /* Called for new quantifiers after owners are finalized */
+  virtual void registerQuantifier( Node q ) = 0;
+  virtual void assertNode( Node n ) {}
+  virtual void propagate( Theory::Effort level ){}
+  virtual Node getNextDecisionRequest( unsigned& priority ) { return TNode::null(); }
+  /** Identify this module (for debugging, dynamic configuration, etc..) */
+  virtual std::string identify() const = 0;
+public:
+  eq::EqualityEngine * getEqualityEngine();
+  bool areDisequal( TNode n1, TNode n2 );
+  bool areEqual( TNode n1, TNode n2 );
+  TNode getRepresentative( TNode n );
+  quantifiers::TermDb * getTermDatabase();
+};/* class QuantifiersModule */
+
+class QuantifiersUtil {
+public:
+  QuantifiersUtil(){}
+  virtual ~QuantifiersUtil(){}
+  /* reset at a round */
+  virtual bool reset( Theory::Effort e ) = 0;
+  /** Identify this module (for debugging, dynamic configuration, etc..) */
+  virtual std::string identify() const = 0;
+};
+
+
+class QuantArith
+{
+public:
+  static bool getMonomial( Node n, Node& c, Node& v );
+  static bool getMonomial( Node n, std::map< Node, Node >& msum );
+  static bool getMonomialSum( Node n, std::map< Node, Node >& msum );
+  static bool getMonomialSumLit( Node lit, std::map< Node, Node >& msum );
+  static Node mkNode( std::map< Node, Node >& msum );
+  //return 1 : solved on LHS, return -1 : solved on RHS, return 0: failed
+  static int isolate( Node v, std::map< Node, Node >& msum, Node & veq_c, Node & val, Kind k );
+  static int isolate( Node v, std::map< Node, Node >& msum, Node & veq, Kind k, bool doCoeff = false );
+  static Node solveEqualityFor( Node lit, Node v );
+  static Node negate( Node t );
+  static Node offset( Node t, int i );
+  static void debugPrintMonomialSum( std::map< Node, Node >& msum, const char * c );
+};
+
+
+class QuantRelevance
+{
+private:
+  /** for computing relevance */
+  bool d_computeRel;
+  /** map from quantifiers to symbols they contain */
+  std::map< Node, std::vector< Node > > d_syms;
+  /** map from symbols to quantifiers */
+  std::map< Node, std::vector< Node > > d_syms_quants;
+  /** relevance for quantifiers and symbols */
+  std::map< Node, int > d_relevance;
+  /** compute symbols */
+  void computeSymbols( Node n, std::vector< Node >& syms );
+public:
+  QuantRelevance( bool cr ) : d_computeRel( cr ){}
+  ~QuantRelevance(){}
+  /** register quantifier */
+  void registerQuantifier( Node f );
+  /** set relevance */
+  void setRelevance( Node s, int r );
+  /** get relevance */
+  int getRelevance( Node s ) { return d_relevance.find( s )==d_relevance.end() ? -1 : d_relevance[s]; }
+  /** get number of quantifiers for symbol s */
+  int getNumQuantifiersForSymbol( Node s ) { return (int)d_syms_quants[s].size(); }
+};
+
+class QuantPhaseReq
+{
+private:
+  /** helper functions compute phase requirements */
+  void computePhaseReqs( Node n, bool polarity, std::map< Node, int >& phaseReqs );
+public:
+  QuantPhaseReq(){}
+  QuantPhaseReq( Node n, bool computeEq = false );
+  ~QuantPhaseReq(){}
+  void initialize( Node n, bool computeEq );
+  /** is phase required */
+  bool isPhaseReq( Node lit ) { return d_phase_reqs.find( lit )!=d_phase_reqs.end(); }
+  /** get phase requirement */
+  bool getPhaseReq( Node lit ) { return d_phase_reqs.find( lit )==d_phase_reqs.end() ? false : d_phase_reqs[ lit ]; }
+  /** phase requirements for each quantifier for each instantiation literal */
+  std::map< Node, bool > d_phase_reqs;
+  std::map< Node, bool > d_phase_reqs_equality;
+  std::map< Node, Node > d_phase_reqs_equality_term;
+
+  static void getPolarity( Node n, int child, bool hasPol, bool pol, bool& newHasPol, bool& newPol );
+  static void getEntailPolarity( Node n, int child, bool hasPol, bool pol, bool& newHasPol, bool& newPol );
+};
+
+
+class EqualityQuery : public QuantifiersUtil {
+public:
+  EqualityQuery(){}
+  virtual ~EqualityQuery(){};
+  /** extends engine */
+  virtual bool extendsEngine() { return false; }
+  /** contains term */
+  virtual bool hasTerm( Node a ) = 0;
+  /** get the representative of the equivalence class of a */
+  virtual Node getRepresentative( Node a ) = 0;
+  /** returns true if a and b are equal in the current context */
+  virtual bool areEqual( Node a, Node b ) = 0;
+  /** returns true is a and b are disequal in the current context */
+  virtual bool areDisequal( Node a, Node b ) = 0;
+  /** get the equality engine associated with this query */
+  virtual eq::EqualityEngine* getEngine() = 0;
+  /** get the equivalence class of a */
+  virtual void getEquivalenceClass( Node a, std::vector< Node >& eqc ) = 0;
+  /** get the term that exists in EE that is congruent to f with args (f is returned by TermDb::getMatchOperator(...) */
+  virtual TNode getCongruentTerm( Node f, std::vector< TNode >& args ) = 0;
+};/* class EqualityQuery */
+
+class QuantEPR
+{
+private:
+  void registerNode( Node n, std::map< int, std::map< Node, bool > >& visited, bool beneathQuant, bool hasPol, bool pol );
+  /** non-epr */
+  std::map< TypeNode, bool > d_non_epr;
+  /** axioms for epr */
+  std::map< TypeNode, Node > d_epr_axiom;
+public:
+  QuantEPR(){}
+  virtual ~QuantEPR(){}
+  /** constants per type */
+  std::map< TypeNode, std::vector< Node > > d_consts;
+  /* reset */
+  //bool reset( Theory::Effort e ) {}
+  /** identify */
+  //std::string identify() const { return "QuantEPR"; }
+  /** register assertion */
+  void registerAssertion( Node assertion );
+  /** finish init */
+  void finishInit();
+  /** is EPR */
+  bool isEPR( TypeNode tn ) const { return d_non_epr.find( tn )==d_non_epr.end(); }
+  /** is EPR constant */
+  bool isEPRConstant( TypeNode tn, Node k ); 
+  /** add EPR constant */
+  void addEPRConstant( TypeNode tn, Node k ); 
+  /** get EPR axiom */
+  Node mkEPRAxiom( TypeNode tn );
+  /** has EPR axiom */
+  bool hasEPRAxiom( TypeNode tn ) const { return d_epr_axiom.find( tn )!=d_epr_axiom.end(); }
+};
+
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/quantifiers_attributes.cpp b/src/theory/quantifiers/quantifiers_attributes.cpp
new file mode 100644
index 0000000..b797f4c
--- /dev/null
+++ b/src/theory/quantifiers/quantifiers_attributes.cpp
@@ -0,0 +1,70 @@
+/*********************                                                        */
+/*! \file quantifiers_attributes.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of QuantifiersAttributes class
+ **/
+
+#include "theory/quantifiers/quantifiers_attributes.h"
+
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/term_database.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+
+void QuantifiersAttributes::setUserAttribute( const std::string& attr, Node n, std::vector< Node >& node_values, std::string str_value ){
+  Trace("quant-attr-debug") << "Set " << attr << " " << n << std::endl;
+  if( attr=="axiom" ){
+    Trace("quant-attr-debug") << "Set axiom " << n << std::endl;
+    AxiomAttribute aa;
+    n.setAttribute( aa, true );
+  }else if( attr=="conjecture" ){
+    Trace("quant-attr-debug") << "Set conjecture " << n << std::endl;
+    ConjectureAttribute ca;
+    n.setAttribute( ca, true );
+  }else if( attr=="fun-def" ){
+    Trace("quant-attr-debug") << "Set function definition " << n << std::endl;
+    FunDefAttribute fda;
+    n.setAttribute( fda, true );
+  }else if( attr=="sygus" ){
+    Trace("quant-attr-debug") << "Set sygus " << n << std::endl;
+    SygusAttribute ca;
+    n.setAttribute( ca, true );
+  }else if( attr=="synthesis" ){
+    Trace("quant-attr-debug") << "Set synthesis " << n << std::endl;
+    SynthesisAttribute ca;
+    n.setAttribute( ca, true );
+  }else if( attr=="quant-inst-max-level" ){
+    Assert( node_values.size()==1 );
+    uint64_t lvl = node_values[0].getConst<Rational>().getNumerator().getLong();
+    Trace("quant-attr-debug") << "Set instantiation level " << n << " to " << lvl << std::endl;
+    QuantInstLevelAttribute qila;
+    n.setAttribute( qila, lvl );
+  }else if( attr=="rr-priority" ){
+    Assert( node_values.size()==1 );
+    uint64_t lvl = node_values[0].getConst<Rational>().getNumerator().getLong();
+    Trace("quant-attr-debug") << "Set rewrite rule priority " << n << " to " << lvl << std::endl;
+    RrPriorityAttribute rrpa;
+    n.setAttribute( rrpa, lvl );
+  }else if( attr=="quant-elim" ){
+    Trace("quant-attr-debug") << "Set quantifier elimination " << n << std::endl;
+    QuantElimAttribute qea;
+    n.setAttribute( qea, true );
+  }else if( attr=="quant-elim-partial" ){
+    Trace("quant-attr-debug") << "Set partial quantifier elimination " << n << std::endl;
+    QuantElimPartialAttribute qepa;
+    n.setAttribute( qepa, true );
+  }
+}
diff --git a/src/theory/quantifiers/quantifiers_attributes.h b/src/theory/quantifiers/quantifiers_attributes.h
new file mode 100644
index 0000000..53cef79
--- /dev/null
+++ b/src/theory/quantifiers/quantifiers_attributes.h
@@ -0,0 +1,47 @@
+/*********************                                                        */
+/*! \file quantifiers_attributes.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Attributes for the theory quantifiers
+ **
+ ** Attributes for the theory quantifiers.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANTIFIERS__QUANTIFIERS_REWRITER_H
+#define __CVC4__THEORY__QUANTIFIERS__QUANTIFIERS_REWRITER_H
+
+#include "theory/rewriter.h"
+#include "theory/quantifiers_engine.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+/** Attribute priority for rewrite rules */
+//struct RrPriorityAttributeId {};
+//typedef expr::Attribute< RrPriorityAttributeId, uint64_t > RrPriorityAttribute;
+
+struct QuantifiersAttributes
+{
+  /** set user attribute
+    *   This function will apply a custom set of attributes to all top-level universal
+    *   quantifiers contained in n
+    */
+  static void setUserAttribute( const std::string& attr, Node n, std::vector< Node >& node_values, std::string str_value );
+};
+
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/quantifiers_rewriter.cpp b/src/theory/quantifiers/quantifiers_rewriter.cpp
new file mode 100644
index 0000000..2b7e19c
--- /dev/null
+++ b/src/theory/quantifiers/quantifiers_rewriter.cpp
@@ -0,0 +1,1838 @@
+/*********************                                                        */
+/*! \file quantifiers_rewriter.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of QuantifiersRewriter class
+ **/
+
+#include "theory/quantifiers/quantifiers_rewriter.h"
+
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/trigger.h"
+
+using namespace std;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+bool QuantifiersRewriter::isClause( Node n ){
+  if( isLiteral( n ) ){
+    return true;
+  }else if( n.getKind()==NOT ){
+    return isCube( n[0] );
+  }else if( n.getKind()==OR ){
+    for( int i=0; i<(int)n.getNumChildren(); i++ ){
+      if( !isClause( n[i] ) ){
+        return false;
+      }
+    }
+    return true;
+  }else if( n.getKind()==IMPLIES ){
+    return isCube( n[0] ) && isClause( n[1] );
+  }else{
+    return false;
+  }
+}
+
+bool QuantifiersRewriter::isLiteral( Node n ){
+  switch( n.getKind() ){
+  case NOT:
+    return n[0].getKind()!=NOT && isLiteral( n[0] );
+    break;
+  case OR:
+  case AND:
+  case IMPLIES:
+  case XOR:
+  case ITE:
+    return false;
+    break;
+  case EQUAL:
+    //for boolean terms
+    return !n[0].getType().isBoolean();
+    break;
+  default:
+    break;
+  }
+  return true;
+}
+
+bool QuantifiersRewriter::isCube( Node n ){
+  if( isLiteral( n ) ){
+    return true;
+  }else if( n.getKind()==NOT ){
+    return isClause( n[0] );
+  }else if( n.getKind()==AND ){
+    for( int i=0; i<(int)n.getNumChildren(); i++ ){
+      if( !isCube( n[i] ) ){
+        return false;
+      }
+    }
+    return true;
+  }else{
+    return false;
+  }
+}
+
+void QuantifiersRewriter::addNodeToOrBuilder( Node n, NodeBuilder<>& t ){
+  if( n.getKind()==OR ){
+    for( int i=0; i<(int)n.getNumChildren(); i++ ){
+      t << n[i];
+    }
+  }else{
+    t << n;
+  }
+}
+
+void QuantifiersRewriter::computeArgs( std::vector< Node >& args, std::map< Node, bool >& activeMap, Node n, std::map< Node, bool >& visited ){
+  if( visited.find( n )==visited.end() ){
+    visited[n] = true;
+    if( n.getKind()==BOUND_VARIABLE ){
+      if( std::find( args.begin(), args.end(), n )!=args.end() ){
+        activeMap[ n ] = true;
+      }
+    }else{
+      for( int i=0; i<(int)n.getNumChildren(); i++ ){
+        computeArgs( args, activeMap, n[i], visited );
+      }
+    }
+  }
+}
+
+void QuantifiersRewriter::computeArgVec( std::vector< Node >& args, std::vector< Node >& activeArgs, Node n ) {
+  Assert( activeArgs.empty() );
+  std::map< Node, bool > activeMap;
+  std::map< Node, bool > visited;
+  computeArgs( args, activeMap, n, visited );
+  if( !activeMap.empty() ){
+    for( unsigned i=0; i<args.size(); i++ ){
+      if( activeMap.find( args[i] )!=activeMap.end() ){
+        activeArgs.push_back( args[i] );
+      }
+    }
+  }
+}
+
+void QuantifiersRewriter::computeArgVec2( std::vector< Node >& args, std::vector< Node >& activeArgs, Node n, Node ipl ) {
+  Assert( activeArgs.empty() );
+  std::map< Node, bool > activeMap;
+  std::map< Node, bool > visited;
+  computeArgs( args, activeMap, n, visited );
+  if( !activeMap.empty() ){
+    //collect variables in inst pattern list only if we cannot eliminate quantifier
+    computeArgs( args, activeMap, ipl, visited );
+    for( unsigned i=0; i<args.size(); i++ ){
+      if( activeMap.find( args[i] )!=activeMap.end() ){
+        activeArgs.push_back( args[i] );
+      }
+    }
+  }
+}
+
+RewriteResponse QuantifiersRewriter::preRewrite(TNode in) {
+  if( in.getKind()==kind::EXISTS || in.getKind()==kind::FORALL ){
+    Trace("quantifiers-rewrite-debug") << "pre-rewriting " << in << std::endl;
+    std::vector< Node > args;
+    Node body = in;
+    bool doRewrite = false;
+    while( body.getNumChildren()==2 && body.getKind()==body[1].getKind() ){
+      for( unsigned i=0; i<body[0].getNumChildren(); i++ ){
+        args.push_back( body[0][i] );
+      }
+      body = body[1];
+      doRewrite = true;
+    }
+    if( doRewrite ){
+      std::vector< Node > children;
+      for( unsigned i=0; i<body[0].getNumChildren(); i++ ){
+        args.push_back( body[0][i] );
+      }      
+      children.push_back( NodeManager::currentNM()->mkNode(kind::BOUND_VAR_LIST,args) );
+      children.push_back( body[1] );
+      if( body.getNumChildren()==3 ){
+        children.push_back( body[2] );
+      }
+      Node n = NodeManager::currentNM()->mkNode( in.getKind(), children );
+      if( in!=n ){
+        Trace("quantifiers-pre-rewrite") << "*** pre-rewrite " << in << std::endl;
+        Trace("quantifiers-pre-rewrite") << " to " << std::endl;
+        Trace("quantifiers-pre-rewrite") << n << std::endl;
+      }
+      return RewriteResponse(REWRITE_DONE, n);
+    }
+  }
+  return RewriteResponse(REWRITE_DONE, in);
+}
+
+RewriteResponse QuantifiersRewriter::postRewrite(TNode in) {
+  Trace("quantifiers-rewrite-debug") << "post-rewriting " << in << std::endl;
+  RewriteStatus status = REWRITE_DONE;
+  Node ret = in;
+  int rew_op = -1;
+  //get the body
+  if( in.getKind()==EXISTS ){
+    std::vector< Node > children;
+    children.push_back( in[0] );
+    children.push_back( in[1].negate() );
+    if( in.getNumChildren()==3 ){
+      children.push_back( in[2] );
+    }
+    ret = NodeManager::currentNM()->mkNode( FORALL, children );
+    ret = ret.negate();
+    status = REWRITE_AGAIN_FULL;
+  }else if( in.getKind()==FORALL ){
+    if( in[1].isConst() && in.getNumChildren()==2 ){
+      return RewriteResponse( status, in[1] );
+    }else{
+      //compute attributes
+      QAttributes qa;
+      TermDb::computeQuantAttributes( in, qa );
+      if( !qa.isRewriteRule() ){
+        for( int op=0; op<COMPUTE_LAST; op++ ){
+          if( doOperation( in, op, qa ) ){
+            ret = computeOperation( in, op, qa );
+            if( ret!=in ){
+              rew_op = op;
+              status = REWRITE_AGAIN_FULL;
+              break;
+            }
+          }
+        }
+      }
+    }
+  }
+  //print if changed
+  if( in!=ret ){
+    Trace("quantifiers-rewrite") << "*** rewrite (op=" << rew_op << ") " << in << std::endl;
+    Trace("quantifiers-rewrite") << " to " << std::endl;
+    Trace("quantifiers-rewrite") << ret << std::endl;
+  }
+  return RewriteResponse( status, ret );
+}
+
+bool QuantifiersRewriter::addCheckElimChild( std::vector< Node >& children, Node c, Kind k, std::map< Node, bool >& lit_pol, bool& childrenChanged ){
+  if( ( k==OR || k==AND ) && options::elimTautQuant() ){
+    Node lit = c.getKind()==NOT ? c[0] : c;
+    bool pol = c.getKind()!=NOT;
+    std::map< Node, bool >::iterator it = lit_pol.find( lit );
+    if( it==lit_pol.end() ){
+      lit_pol[lit] = pol;
+      children.push_back( c );
+    }else{
+      childrenChanged = true;
+      if( it->second!=pol ){
+        return false;
+      }
+    }
+  }else{
+    children.push_back( c );
+  }
+  return true;
+}
+
+// eliminates IMPLIES/XOR, removes duplicates/infers tautologies of AND/OR, and computes NNF
+Node QuantifiersRewriter::computeElimSymbols( Node body ) {
+  Kind ok = body.getKind();
+  Kind k = ok;
+  bool negAllCh = false;
+  bool negCh1 = false;
+  if( ok==IMPLIES ){
+    k = OR;
+    negCh1 = true;
+  }else if( ok==XOR ){
+    k = EQUAL;
+    negCh1 = true;
+  }else if( ok==NOT ){
+    if( body[0].getKind()==NOT ){
+      return computeElimSymbols( body[0][0] );
+    }else if( body[0].getKind()==OR || body[0].getKind()==IMPLIES ){
+      k = AND;   
+      negAllCh = true;
+      negCh1 = body[0].getKind()==IMPLIES;
+      body = body[0];
+    }else if( body[0].getKind()==AND ){
+      k = OR;
+      negAllCh = true;
+      body = body[0];
+    }else if( body[0].getKind()==XOR || ( body[0].getKind()==EQUAL && body[0][0].getType().isBoolean() ) ){
+      k = EQUAL;
+      negCh1 = ( body[0].getKind()==EQUAL );
+      body = body[0];
+    }else if( body[0].getKind()==ITE ){
+      k = body[0].getKind();
+      negAllCh = true;
+      negCh1 = true;
+      body = body[0];
+    }else{
+      return body;
+    }
+  }else if( ( ok!=EQUAL || !body[0].getType().isBoolean() ) && ok!=ITE && ok!=AND && ok!=OR ){
+    //a literal
+    return body;
+  }
+  bool childrenChanged = false;
+  std::vector< Node > children;
+  std::map< Node, bool > lit_pol;
+  for( unsigned i=0; i<body.getNumChildren(); i++ ){
+    Node c = computeElimSymbols( ( i==0 && negCh1 )!=negAllCh ? body[i].negate() : body[i] );
+    bool success = true;
+    if( c.getKind()==k && ( k==OR || k==AND ) ){
+      //flatten
+      childrenChanged = true;
+      for( unsigned j=0; j<c.getNumChildren(); j++ ){
+        if( !addCheckElimChild( children, c[j], k, lit_pol, childrenChanged ) ){
+          success = false;
+          break;
+        }
+      }
+    }else{
+      success = addCheckElimChild( children, c, k, lit_pol, childrenChanged );
+    }
+    if( !success ){
+      // tautology
+      Assert( k==OR || k==AND );
+      return NodeManager::currentNM()->mkConst( k==OR );
+    }
+    childrenChanged = childrenChanged || c!=body[i];
+  }
+  if( childrenChanged || k!=ok ){
+    return ( children.size()==1 && k!=NOT ) ? children[0] : NodeManager::currentNM()->mkNode( k, children );
+  }else{
+    return body;
+  }
+}
+
+void QuantifiersRewriter::computeDtTesterIteSplit( Node n, std::map< Node, Node >& pcons, std::map< Node, std::map< int, Node > >& ncons,
+                                                   std::vector< Node >& conj ){
+  if( n.getKind()==ITE && n[0].getKind()==APPLY_TESTER && n[1].getType().isBoolean() ){
+    Trace("quantifiers-rewrite-ite-debug") << "Split tester condition : " << n << std::endl;
+    Node x = n[0][0];
+    std::map< Node, Node >::iterator itp = pcons.find( x );
+    if( itp!=pcons.end() ){
+      Trace("quantifiers-rewrite-ite-debug") << "...condition already set " << itp->second << std::endl;
+      computeDtTesterIteSplit( n[ itp->second==n[0] ? 1 : 2 ], pcons, ncons, conj );
+    }else{
+      Expr testerExpr = n[0].getOperator().toExpr();
+      int index = Datatype::indexOf( testerExpr );
+      std::map< int, Node >::iterator itn = ncons[x].find( index );
+      if( itn!=ncons[x].end() ){
+        Trace("quantifiers-rewrite-ite-debug") << "...condition negated " << itn->second << std::endl;
+        computeDtTesterIteSplit( n[ 2 ], pcons, ncons, conj );
+      }else{
+        for( unsigned i=0; i<2; i++ ){
+          if( i==0 ){
+            pcons[x] = n[0];
+          }else{
+            pcons.erase( x );
+            ncons[x][index] = n[0].negate();
+          }
+          computeDtTesterIteSplit( n[i+1], pcons, ncons, conj );
+        }
+        ncons[x].erase( index );
+      }
+    }
+  }else{
+    Trace("quantifiers-rewrite-ite-debug") << "Return value : " << n << std::endl;
+    std::vector< Node > children;
+    children.push_back( n );
+    std::vector< Node > vars;
+    //add all positive testers
+    for( std::map< Node, Node >::iterator it = pcons.begin(); it != pcons.end(); ++it ){
+      children.push_back( it->second.negate() );
+      vars.push_back( it->first );
+    }
+    //add all negative testers
+    for( std::map< Node, std::map< int, Node > >::iterator it = ncons.begin(); it != ncons.end(); ++it ){
+      Node x = it->first;
+      //only if we haven't settled on a positive tester
+      if( std::find( vars.begin(), vars.end(), x )==vars.end() ){
+        //check if we have exhausted all options but one
+        const Datatype& dt = DatatypeType(x.getType().toType()).getDatatype();
+        std::vector< Node > nchildren;
+        int pos_cons = -1;
+        for( int i=0; i<(int)dt.getNumConstructors(); i++ ){
+          std::map< int, Node >::iterator itt = it->second.find( i );
+          if( itt==it->second.end() ){
+            pos_cons = pos_cons==-1 ? i : -2;
+          }else{
+            nchildren.push_back( itt->second.negate() );
+          }
+        }
+        if( pos_cons>=0 ){
+          const DatatypeConstructor& c = dt[pos_cons];
+          Expr tester = c.getTester();
+          children.push_back( NodeManager::currentNM()->mkNode( kind::APPLY_TESTER, Node::fromExpr( tester ), x ).negate() );
+        }else{
+          children.insert( children.end(), nchildren.begin(), nchildren.end() );
+        }
+      }
+    }
+    //make condition/output pair
+    Node c = children.size()==1 ? children[0] : NodeManager::currentNM()->mkNode( OR, children );
+    conj.push_back( c );
+  }
+}
+
+int getEntailedCond( Node n, std::map< Node, bool >& currCond ){
+  std::map< Node, bool >::iterator it = currCond.find( n );
+  if( it!=currCond.end() ){
+    return it->second ? 1 : -1;
+  }else if( n.getKind()==NOT ){
+    return -getEntailedCond( n[0], currCond );
+  }else if( n.getKind()==AND || n.getKind()==OR ){
+    bool hasZero = false;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      int res = getEntailedCond( n[i], currCond );
+      if( res==0 ){
+        hasZero = true;
+      }else if( n.getKind()==AND && res==-1 ){
+        return -1;
+      }else if( n.getKind()==OR && res==1 ){
+        return 1;
+      }
+    }
+    return hasZero ? 0 : ( n.getKind()==AND ? 1 : -1 );
+  }else if( n.getKind()==ITE ){
+    int res = getEntailedCond( n[0], currCond );
+    if( res==1 ){
+      return getEntailedCond( n[1], currCond );
+    }else if( res==-1 ){
+      return getEntailedCond( n[2], currCond );
+    }
+  }else if( ( n.getKind()==EQUAL && n[0].getType().isBoolean() ) || n.getKind()==ITE ){
+    unsigned start = n.getKind()==EQUAL ? 0 : 1;
+    int res1 = 0;
+    for( unsigned j=start; j<=(start+1); j++ ){
+      int res = getEntailedCond( n[j], currCond );
+      if( res==0 ){
+        return 0;
+      }else if( j==start ){
+        res1 = res;
+      }else{
+        Assert( res!=0 );
+        if( n.getKind()==ITE ){
+          return res1==res ? res : 0;
+        }else if( n.getKind()==EQUAL ){
+          return res1==res ? 1 : -1;
+        }
+      }
+    }
+  }
+  return 0;
+}
+
+bool addEntailedCond( Node n, bool pol, std::map< Node, bool >& currCond, std::vector< Node >& new_cond, bool& conflict ) {
+  std::map< Node, bool >::iterator it = currCond.find( n );
+  if( it==currCond.end() ){
+    Trace("quantifiers-rewrite-term-debug") << "cond : " << n << " -> " << pol << std::endl;
+    new_cond.push_back( n );
+    currCond[n] = pol;
+    return true;
+  }else{
+    if( it->second!=pol ){
+      Trace("quantifiers-rewrite-term-debug") << "CONFLICTING cond : " << n << " -> " << pol << std::endl;
+      conflict = true;
+    }
+    return false;
+  }
+}
+
+void setEntailedCond( Node n, bool pol, std::map< Node, bool >& currCond, std::vector< Node >& new_cond, bool& conflict ) {
+  if( ( n.getKind()==AND && pol ) || ( n.getKind()==OR && !pol ) ){
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      setEntailedCond( n[i], pol, currCond, new_cond, conflict );
+      if( conflict ){
+        break;
+      }
+    }
+  }else if( n.getKind()==NOT ){
+    setEntailedCond( n[0], !pol, currCond, new_cond, conflict );
+    return;
+  }else if( n.getKind()==ITE ){
+    int pol = getEntailedCond( n, currCond );
+    if( pol==1 ){
+      setEntailedCond( n[1], pol, currCond, new_cond, conflict );
+    }else if( pol==-1 ){
+      setEntailedCond( n[2], pol, currCond, new_cond, conflict );
+    }
+  }
+  if( addEntailedCond( n, pol, currCond, new_cond, conflict ) ){
+    if( n.getKind()==APPLY_TESTER ){
+      const Datatype& dt = Datatype::datatypeOf(n.getOperator().toExpr());
+      unsigned index = Datatype::indexOf(n.getOperator().toExpr());
+      Assert( dt.getNumConstructors()>1 );
+      if( pol ){
+        for( unsigned i=0; i<dt.getNumConstructors(); i++ ){
+          if( i!=index ){
+            Node t = NodeManager::currentNM()->mkNode( APPLY_TESTER, Node::fromExpr( dt[i].getTester() ), n[0] );
+            addEntailedCond( t, false, currCond, new_cond, conflict );
+          }
+        }
+      }else{
+        if( dt.getNumConstructors()==2 ){
+          int oindex = 1-index;
+          Node t = NodeManager::currentNM()->mkNode( APPLY_TESTER, Node::fromExpr( dt[oindex].getTester() ), n[0] );
+          addEntailedCond( t, true, currCond, new_cond, conflict );
+        }
+      }
+    }
+  }
+}
+
+void removeEntailedCond( std::map< Node, bool >& currCond, std::vector< Node >& new_cond, std::map< Node, Node >& cache ) {
+  if( !new_cond.empty() ){
+    for( unsigned j=0; j<new_cond.size(); j++ ){
+      currCond.erase( new_cond[j] );
+    }
+    new_cond.clear();
+    cache.clear();
+  }
+}
+
+Node QuantifiersRewriter::computeProcessTerms( Node body, std::vector< Node >& new_vars, std::vector< Node >& new_conds, Node q, QAttributes& qa ){
+  std::map< Node, bool > curr_cond;
+  std::map< Node, Node > cache;
+  std::map< Node, Node > icache;
+  if( qa.isFunDef() ){
+    Node h = TermDb::getFunDefHead( q );
+    Assert( !h.isNull() );
+    // if it is a function definition, rewrite the body independently
+    Node fbody = TermDb::getFunDefBody( q );
+    Assert( !body.isNull() );
+    Trace("quantifiers-rewrite-debug") << "Decompose " << h << " / " << fbody << " as function definition for " << q << "." << std::endl;
+    Node r = computeProcessTerms2( fbody, true, true, curr_cond, 0, cache, icache, new_vars, new_conds );
+    return Rewriter::rewrite( NodeManager::currentNM()->mkNode( EQUAL, h, r ) );
+  }else{
+    return computeProcessTerms2( body, true, true, curr_cond, 0, cache, icache, new_vars, new_conds );
+  }
+}
+
+Node QuantifiersRewriter::computeProcessTerms2( Node body, bool hasPol, bool pol, std::map< Node, bool >& currCond, int nCurrCond,
+                                                std::map< Node, Node >& cache, std::map< Node, Node >& icache,
+                                                std::vector< Node >& new_vars, std::vector< Node >& new_conds ) {
+  Trace("quantifiers-rewrite-term-debug2") << "computeProcessTerms " << body << " " << hasPol << " " << pol << std::endl;
+  Node ret;
+  std::map< Node, Node >::iterator iti = cache.find( body );
+  if( iti!=cache.end() ){
+    ret = iti->second;
+    Trace("quantifiers-rewrite-term-debug2") << "Return (cached) " << ret << " for " << body << std::endl;
+  }else{
+    //only do context dependent processing up to depth 8
+    bool doCD = nCurrCond<8;
+    bool changed = false;
+    std::vector< Node > children;
+    //set entailed conditions based on OR/AND
+    std::map< int, std::vector< Node > > new_cond_children;
+    if( doCD && ( body.getKind()==OR || body.getKind()==AND ) ){
+      nCurrCond = nCurrCond + 1;
+      bool conflict = false;
+      bool use_pol = body.getKind()==AND;
+      for( unsigned j=0; j<body.getNumChildren(); j++ ){
+        setEntailedCond( body[j], use_pol, currCond, new_cond_children[j], conflict );
+      }
+      if( conflict ){
+        Trace("quantifiers-rewrite-term-debug") << "-------conflict, return " << !use_pol << std::endl;
+        ret = NodeManager::currentNM()->mkConst( !use_pol );
+      }
+    }
+    if( ret.isNull() ){
+      for( size_t i=0; i<body.getNumChildren(); i++ ){
+      
+        //set/update entailed conditions
+        std::vector< Node > new_cond;
+        bool conflict = false;
+        if( doCD ){
+          if( Trace.isOn("quantifiers-rewrite-term-debug") ){
+            if( ( body.getKind()==ITE && i>0 ) || body.getKind()==OR || body.getKind()==AND ){
+              Trace("quantifiers-rewrite-term-debug") << "---rewrite " << body[i] << " under conditions:----" << std::endl;
+            }
+          }
+          if( body.getKind()==ITE && i>0 ){
+            if( i==1 ){
+              nCurrCond = nCurrCond + 1;
+            }
+            setEntailedCond( children[0], i==1, currCond, new_cond, conflict );
+            //should not conflict (entailment check failed) 
+            Assert( !conflict );
+          }
+          if( body.getKind()==OR || body.getKind()==AND ){
+            bool use_pol = body.getKind()==AND;
+            //remove the current condition
+            removeEntailedCond( currCond, new_cond_children[i], cache );
+            if( i>0 ){
+              //add the previous condition
+              setEntailedCond( children[i-1], use_pol, currCond, new_cond_children[i-1], conflict );
+            }
+            if( conflict ){
+              Trace("quantifiers-rewrite-term-debug") << "-------conflict, return " << !use_pol << std::endl;
+              ret = NodeManager::currentNM()->mkConst( !use_pol );
+            }
+          }
+          if( !new_cond.empty() ){
+            cache.clear();
+          }
+          if( Trace.isOn("quantifiers-rewrite-term-debug") ){
+            if( ( body.getKind()==ITE && i>0 ) || body.getKind()==OR || body.getKind()==AND ){      
+              Trace("quantifiers-rewrite-term-debug") << "-------" << std::endl;
+            }
+          }
+        }
+        
+        //do the recursive call on children
+        if( !conflict ){
+          bool newHasPol;
+          bool newPol;
+          QuantPhaseReq::getPolarity( body, i, hasPol, pol, newHasPol, newPol );
+          Node nn = computeProcessTerms2( body[i], newHasPol, newPol, currCond, nCurrCond, cache, icache, new_vars, new_conds );
+          if( body.getKind()==ITE && i==0 ){
+            int res = getEntailedCond( nn, currCond );
+            Trace("quantifiers-rewrite-term-debug") << "Condition for " << body << " is " << nn << ", entailment check=" << res << std::endl;
+            if( res==1 ){
+              ret = computeProcessTerms2( body[1], hasPol, pol, currCond, nCurrCond, cache, icache, new_vars, new_conds );
+            }else if( res==-1 ){
+              ret = computeProcessTerms2( body[2], hasPol, pol, currCond, nCurrCond, cache, icache, new_vars, new_conds );
+            }
+          }
+          children.push_back( nn );
+          changed = changed || nn!=body[i];
+        }
+        
+        //clean up entailed conditions
+        removeEntailedCond( currCond, new_cond, cache );
+        
+        if( !ret.isNull() ){
+          break;
+        }
+      }
+      
+      //make return value
+      if( ret.isNull() ){
+        if( changed ){
+          if( body.getMetaKind() == kind::metakind::PARAMETERIZED ){
+            children.insert( children.begin(), body.getOperator() );
+          }
+          ret = NodeManager::currentNM()->mkNode( body.getKind(), children );
+        }else{
+          ret = body;
+        }
+      }
+    }
+    
+    //clean up entailed conditions
+    if( body.getKind()==OR || body.getKind()==AND ){
+      for( unsigned j=0; j<body.getNumChildren(); j++ ){
+        removeEntailedCond( currCond, new_cond_children[j], cache );
+      }
+    }
+    
+    Trace("quantifiers-rewrite-term-debug2") << "Returning " << ret << " for " << body << std::endl;
+    cache[body] = ret;
+  }
+
+  //do context-independent rewriting
+  iti = icache.find( ret );
+  if( iti!=icache.end() ){
+    return iti->second;
+  }else{
+    Node prev = ret;
+    if( ret.getKind()==EQUAL && options::iteLiftQuant()!=ITE_LIFT_QUANT_MODE_NONE ){
+      for( size_t i=0; i<2; i++ ){
+        if( ret[i].getKind()==ITE ){
+          Node no = i==0 ? ret[1] : ret[0];
+          if( no.getKind()!=ITE ){
+            bool doRewrite = options::iteLiftQuant()==ITE_LIFT_QUANT_MODE_ALL;
+            std::vector< Node > children;
+            children.push_back( ret[i][0] );
+            for( size_t j=1; j<=2; j++ ){
+              //check if it rewrites to a constant
+              Node nn = NodeManager::currentNM()->mkNode( EQUAL, no, ret[i][j] );
+              nn = Rewriter::rewrite( nn );
+              children.push_back( nn );
+              if( nn.isConst() ){
+                doRewrite = true;
+              }
+            }
+            if( doRewrite ){
+              ret = NodeManager::currentNM()->mkNode( ITE, children );
+              break;
+            }
+          }
+        }
+      }
+    /* ITE lifting
+    if( ret.getKind()==ITE ){
+      TypeNode ite_t = ret[1].getType();
+      if( !ite_t.isBoolean() ){
+        ite_t = TypeNode::leastCommonTypeNode( ite_t, ret[2].getType() );
+        Node ite_v = NodeManager::currentNM()->mkBoundVar(ite_t);
+        new_vars.push_back( ite_v );
+        Node cond = NodeManager::currentNM()->mkNode(kind::ITE, ret[0], ite_v.eqNode( ret[1] ), ite_v.eqNode( ret[2] ) );
+        new_conds.push_back( cond.negate() );
+        ret = ite_v;
+      }
+      */
+    }else if( options::elimExtArithQuant() ){
+      if( ret.getKind()==INTS_DIVISION_TOTAL || ret.getKind()==INTS_MODULUS_TOTAL ){
+        Node num = ret[0];
+        Node den = ret[1];
+        if(den.isConst()) {
+          const Rational& rat = den.getConst<Rational>();
+          Assert(!num.isConst());
+          if(rat != 0) {
+            Node intVar = NodeManager::currentNM()->mkBoundVar(NodeManager::currentNM()->integerType());
+            new_vars.push_back( intVar );
+            Node cond;
+            if(rat > 0) {
+              cond = NodeManager::currentNM()->mkNode(kind::AND,
+                       NodeManager::currentNM()->mkNode(kind::LEQ, NodeManager::currentNM()->mkNode(kind::MULT, den, intVar), num),
+                       NodeManager::currentNM()->mkNode(kind::LT, num,
+                         NodeManager::currentNM()->mkNode(kind::MULT, den, NodeManager::currentNM()->mkNode(kind::PLUS, intVar, NodeManager::currentNM()->mkConst(Rational(1))))));
+            } else {
+              cond = NodeManager::currentNM()->mkNode(kind::AND,
+                       NodeManager::currentNM()->mkNode(kind::LEQ, NodeManager::currentNM()->mkNode(kind::MULT, den, intVar), num),
+                       NodeManager::currentNM()->mkNode(kind::LT, num,
+                         NodeManager::currentNM()->mkNode(kind::MULT, den, NodeManager::currentNM()->mkNode(kind::PLUS, intVar, NodeManager::currentNM()->mkConst(Rational(-1))))));
+            }
+            new_conds.push_back( cond.negate() );
+            if( ret.getKind()==INTS_DIVISION_TOTAL ){
+              ret = intVar;
+            }else{
+              ret = NodeManager::currentNM()->mkNode(kind::MINUS, num, NodeManager::currentNM()->mkNode(kind::MULT, den, intVar));
+            }
+          }
+        }
+      }else if( ret.getKind()==TO_INTEGER || ret.getKind()==IS_INTEGER ){
+        Node intVar = NodeManager::currentNM()->mkBoundVar(NodeManager::currentNM()->integerType());
+        new_vars.push_back( intVar );
+        new_conds.push_back(NodeManager::currentNM()->mkNode(kind::AND,
+                              NodeManager::currentNM()->mkNode(kind::LT,
+                                NodeManager::currentNM()->mkNode(kind::MINUS, ret[0], NodeManager::currentNM()->mkConst(Rational(1))), intVar),
+                              NodeManager::currentNM()->mkNode(kind::LEQ, intVar, ret[0])).negate());
+        if( ret.getKind()==TO_INTEGER ){
+          ret = intVar;
+        }else{
+          ret = ret[0].eqNode( intVar );
+        }
+      }
+    }
+    icache[prev] = ret;
+    return ret;
+  }
+}
+
+
+bool QuantifiersRewriter::isConditionalVariableElim( Node n, int pol ){
+  if( n.getKind()==NOT ){
+    return isConditionalVariableElim( n[0], -pol );
+  }else if( ( n.getKind()==AND && pol>=0 ) || ( n.getKind()==OR && pol<=0 ) ){
+    pol = n.getKind()==AND ? 1 : -1;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      if( isConditionalVariableElim( n[i], pol ) ){
+        return true;
+      }
+    }
+  }else if( n.getKind()==EQUAL ){
+    for( unsigned i=0; i<2; i++ ){
+      if( n[i].getKind()==BOUND_VARIABLE ){
+        if( !TermDb::containsTerm( n[1-i], n[i] ) ){
+          return true;
+        }
+      }
+    }
+  }else if( n.getKind()==BOUND_VARIABLE ){
+    return true;
+  }
+  return false;
+}
+
+Node QuantifiersRewriter::computeCondSplit( Node body, QAttributes& qa ){
+  if( options::iteDtTesterSplitQuant() && body.getKind()==ITE ){
+    Trace("quantifiers-rewrite-ite-debug") << "DTT split : " << body << std::endl;
+    std::map< Node, Node > pcons;
+    std::map< Node, std::map< int, Node > > ncons;
+    std::vector< Node > conj;
+    computeDtTesterIteSplit( body, pcons, ncons, conj );
+    Assert( !conj.empty() );
+    if( conj.size()>1 ){
+      Trace("quantifiers-rewrite-ite") << "*** Split ITE (datatype tester) " << body << " into : " << std::endl;
+      for( unsigned i=0; i<conj.size(); i++ ){
+        Trace("quantifiers-rewrite-ite") << "   " << conj[i] << std::endl;
+      }
+      return NodeManager::currentNM()->mkNode( AND, conj );
+    }
+  }
+  if( options::condVarSplitQuant() ){
+    if( body.getKind()==ITE || ( body.getKind()==EQUAL && body[0].getType().isBoolean() && options::condVarSplitQuantAgg() ) ){
+      Assert( !qa.isFunDef() );
+      Trace("quantifiers-rewrite-debug") << "Conditional var elim split " << body << "?" << std::endl;
+      bool do_split = false;
+      unsigned index_max = body.getKind()==ITE ? 0 : 1;
+      for( unsigned index=0; index<=index_max; index++ ){
+        if( isConditionalVariableElim( body[index] ) ){
+          do_split = true;
+          break;
+        }
+      }
+      if( do_split ){
+        Node pos;
+        Node neg;
+        if( body.getKind()==ITE ){
+          pos = NodeManager::currentNM()->mkNode( OR, body[0].negate(), body[1] );
+          neg = NodeManager::currentNM()->mkNode( OR, body[0], body[2] );
+        }else{
+          pos = NodeManager::currentNM()->mkNode( OR, body[0].negate(), body[1] );
+          neg = NodeManager::currentNM()->mkNode( OR, body[0], body[1].negate() );
+        }
+        Trace("quantifiers-rewrite-debug") << "*** Split (conditional variable eq) " << body << " into : " << std::endl;
+        Trace("quantifiers-rewrite-debug") << "   " << pos << std::endl;
+        Trace("quantifiers-rewrite-debug") << "   " << neg << std::endl;
+        return NodeManager::currentNM()->mkNode( AND, pos, neg );
+      }
+    }else if( body.getKind()==OR && options::condVarSplitQuantAgg() ){
+      std::vector< Node > bchildren;
+      std::vector< Node > nchildren;
+      for( unsigned i=0; i<body.getNumChildren(); i++ ){
+        bool split = false;
+        if( nchildren.empty() ){
+          if( body[i].getKind()==AND ){
+            std::vector< Node > children;
+            for( unsigned j=0; j<body[i].getNumChildren(); j++ ){
+              if( ( body[i][j].getKind()==NOT && body[i][j][0].getKind()==EQUAL && isConditionalVariableElim( body[i][j][0] ) ) ||
+                  body[i][j].getKind()==BOUND_VARIABLE ){
+                nchildren.push_back( body[i][j] );
+              }else{
+                children.push_back( body[i][j] );
+              }
+            }
+            if( !nchildren.empty() ){
+              if( !children.empty() ){
+                nchildren.push_back( children.size()==1 ? children[0] : NodeManager::currentNM()->mkNode( AND, children ) );
+              }
+              split = true;
+            }
+          }
+        }
+        if( !split ){
+          bchildren.push_back( body[i] );
+        }
+      }
+      if( !nchildren.empty() ){
+        Trace("quantifiers-rewrite-debug") << "*** Split (conditional variable eq) " << body << " into : " << std::endl;
+        for( unsigned i=0; i<nchildren.size(); i++ ){
+          bchildren.push_back( nchildren[i] );
+          nchildren[i] = NodeManager::currentNM()->mkNode( OR, bchildren );
+          Trace("quantifiers-rewrite-debug") << "   " << nchildren[i] << std::endl;
+          bchildren.pop_back();
+        }
+        return NodeManager::currentNM()->mkNode( AND, nchildren );
+      }
+    }
+  }
+  return body;
+}
+
+bool QuantifiersRewriter::isVariableElim( Node v, Node s ) {
+  if( TermDb::containsTerm( s, v ) || !s.getType().isSubtypeOf( v.getType() ) ){
+    return false;
+  }else{
+    return true;
+  }
+}
+
+void QuantifiersRewriter::isVariableBoundElig( Node n, std::map< Node, int >& exclude, std::map< Node, std::map< int, bool > >& visited, bool hasPol, bool pol, 
+                                               std::map< Node, bool >& elig_vars  ) {
+  int vindex = hasPol ? ( pol ? 1 : -1 ) : 0;
+  if( visited[n].find( vindex )==visited[n].end() ){
+    visited[n][vindex] = true;
+    if( elig_vars.find( n )!=elig_vars.end() ){
+      //variable contained in a place apart from bounds, no longer eligible for elimination
+      elig_vars.erase( n );
+      Trace("var-elim-ineq-debug") << "...found occurrence of " << n << ", mark ineligible" << std::endl;
+    }else{
+      if( hasPol ){
+        std::map< Node, int >::iterator itx = exclude.find( n );
+        if( itx!=exclude.end() && itx->second==vindex ){
+          //already processed this literal
+          return;
+        }
+      }
+      for( unsigned j=0; j<n.getNumChildren(); j++ ){
+        bool newHasPol;
+        bool newPol;
+        QuantPhaseReq::getPolarity( n, j, hasPol, pol, newHasPol, newPol );
+        isVariableBoundElig( n[j], exclude, visited, newHasPol, newPol, elig_vars );
+        if( elig_vars.empty() ){
+          break;
+        }
+      }
+    }
+  }else{
+    //already visited
+  }
+}
+
+bool QuantifiersRewriter::computeVariableElimLit( Node lit, bool pol, std::vector< Node >& args, std::vector< Node >& vars, std::vector< Node >& subs,
+                                                  std::map< Node, std::map< bool, std::map< Node, bool > > >& num_bounds ) {
+  if( lit.getKind()==EQUAL && pol && options::varElimQuant() ){
+    for( unsigned i=0; i<2; i++ ){
+      std::vector< Node >::iterator ita = std::find( args.begin(), args.end(), lit[i] );
+      if( ita!=args.end() ){
+        if( isVariableElim( lit[i], lit[1-i] ) ){
+          Trace("var-elim-quant") << "Variable eliminate based on equality : " << lit[i] << " -> " << lit[1-i] << std::endl;
+          vars.push_back( lit[i] );
+          subs.push_back( lit[1-i] );
+          args.erase( ita );
+          return true;
+        }
+      }
+    }
+  }else if( lit.getKind()==APPLY_TESTER && pol && lit[0].getKind()==BOUND_VARIABLE && options::dtVarExpandQuant() ){
+    Trace("var-elim-dt") << "Expand datatype variable based on : " << lit << std::endl;
+    std::vector< Node >::iterator ita = std::find( args.begin(), args.end(), lit[0] );
+    if( ita!=args.end() ){
+      vars.push_back( lit[0] );
+      Expr testerExpr = lit.getOperator().toExpr();
+      int index = Datatype::indexOf( testerExpr );
+      const Datatype& dt = Datatype::datatypeOf(testerExpr);
+      const DatatypeConstructor& c = dt[index];
+      std::vector< Node > newChildren;
+      newChildren.push_back( Node::fromExpr( c.getConstructor() ) );
+      std::vector< Node > newVars;
+      for( unsigned j=0; j<c.getNumArgs(); j++ ){
+        TypeNode tn = TypeNode::fromType( c[j].getRangeType() );
+        Node v = NodeManager::currentNM()->mkBoundVar( tn );
+        newChildren.push_back( v );
+        newVars.push_back( v );
+      }
+      subs.push_back( NodeManager::currentNM()->mkNode( APPLY_CONSTRUCTOR, newChildren ) );
+      Trace("var-elim-dt") << "...apply substitution " << subs[0] << "/" << vars[0] << std::endl;
+      args.erase( ita );
+      args.insert( args.end(), newVars.begin(), newVars.end() );
+      return true;
+    }
+  }else if( lit.getKind()==BOUND_VARIABLE && options::varElimQuant() ){
+    std::vector< Node >::iterator ita = std::find( args.begin(), args.end(), lit );
+    if( ita!=args.end() ){
+      Trace("var-elim-bool") << "Variable eliminate : " << lit << std::endl;
+      vars.push_back( lit );
+      subs.push_back( NodeManager::currentNM()->mkConst( pol ) );
+      args.erase( ita );
+      return true;
+    }
+  }
+  if( ( lit.getKind()==EQUAL && lit[0].getType().isReal() && pol ) || ( ( lit.getKind()==GEQ || lit.getKind()==GT ) && options::varIneqElimQuant() ) ){
+    //for arithmetic, solve the (in)equality
+    std::map< Node, Node > msum;
+    if( QuantArith::getMonomialSumLit( lit, msum ) ){
+      for( std::map< Node, Node >::iterator itm = msum.begin(); itm != msum.end(); ++itm ){
+        if( !itm->first.isNull() ){
+          std::vector< Node >::iterator ita = std::find( args.begin(), args.end(), itm->first );
+          if( ita!=args.end() ){
+            if( lit.getKind()==EQUAL ){
+              Assert( pol );
+              Node veq_c;
+              Node val;
+              int ires = QuantArith::isolate( itm->first, msum, veq_c, val, EQUAL );
+              if( ires!=0 && veq_c.isNull() && isVariableElim( itm->first, val ) ){
+                Trace("var-elim-quant") << "Variable eliminate based on solved equality : " << itm->first << " -> " << val << std::endl;
+                vars.push_back( itm->first );
+                subs.push_back( val );
+                args.erase( ita );
+                return true;
+              }
+            }else{
+              Assert( lit.getKind()==GEQ || lit.getKind()==GT );
+              //store that this literal is upper/lower bound for itm->first
+              Node veq_c;
+              Node val;
+              int ires = QuantArith::isolate( itm->first, msum, veq_c, val, lit.getKind() );
+              if( ires!=0 && veq_c.isNull() ){
+                bool is_upper = pol!=( ires==1 );
+                Trace("var-elim-ineq-debug") << lit << " is a " << ( is_upper ? "upper" : "lower" ) << " bound for " << itm->first << std::endl;
+                Trace("var-elim-ineq-debug") << "  pol/ires = " << pol << " " << ires << std::endl;
+                num_bounds[itm->first][is_upper][lit] = pol;
+              }else{
+                Trace("var-elim-ineq-debug") << "...ineligible " << itm->first << " since it cannot be solved for (" << ires << ", " << veq_c << ")." << std::endl;
+                num_bounds[itm->first][true].clear();
+                num_bounds[itm->first][false].clear();
+              }
+            }
+          }else{
+            if( lit.getKind()==GEQ || lit.getKind()==GT ){
+              //compute variables in itm->first, these are not eligible for elimination
+              std::vector< Node > bvs;
+              TermDb::getBoundVars( itm->first, bvs );
+              for( unsigned j=0; j<bvs.size(); j++ ){
+                Trace("var-elim-ineq-debug") << "...ineligible " << bvs[j] << " since it is contained in monomial." << std::endl;
+                num_bounds[bvs[j]][true].clear();
+                num_bounds[bvs[j]][false].clear();
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  
+  return false;
+}
+
+Node QuantifiersRewriter::computeVarElimination2( Node body, std::vector< Node >& args, QAttributes& qa ){
+  Trace("var-elim-quant-debug") << "Compute var elimination for " << body << std::endl;
+  std::map< Node, std::map< bool, std::map< Node, bool > > > num_bounds;
+  QuantPhaseReq qpr( body );
+  std::vector< Node > vars;
+  std::vector< Node > subs;
+  for( std::map< Node, bool >::iterator it = qpr.d_phase_reqs.begin(); it != qpr.d_phase_reqs.end(); ++it ){
+    Trace("var-elim-quant-debug") << "   phase req : " << it->first << " -> " << ( it->second ? "true" : "false" ) << std::endl;
+    if( computeVariableElimLit( it->first, it->second, args, vars, subs, num_bounds ) ){
+      break;
+    }
+  }
+  
+  if( !vars.empty() ){
+    Trace("var-elim-quant-debug") << "VE " << vars.size() << "/" << args.size() << std::endl;
+    //remake with eliminated nodes
+    body = body.substitute( vars.begin(), vars.end(), subs.begin(), subs.end() );
+    body = Rewriter::rewrite( body );
+    if( !qa.d_ipl.isNull() ){
+      qa.d_ipl = qa.d_ipl.substitute( vars.begin(), vars.end(), subs.begin(), subs.end() );
+    }
+    Trace("var-elim-quant") << "Return " << body << std::endl;
+  }else{
+    //collect all variables that have only upper/lower bounds
+    std::map< Node, bool > elig_vars;
+    for( std::map< Node, std::map< bool, std::map< Node, bool > > >::iterator it = num_bounds.begin(); it != num_bounds.end(); ++it ){
+      if( it->second.find( true )==it->second.end() ){
+        Trace("var-elim-ineq-debug") << "Variable " << it->first << " has only lower bounds." << std::endl;
+        elig_vars[it->first] = false;
+      }else if( it->second.find( false )==it->second.end() ){
+        Trace("var-elim-ineq-debug") << "Variable " << it->first << " has only upper bounds." << std::endl;
+        elig_vars[it->first] = true;
+      }
+    }
+    if( !elig_vars.empty() ){
+      std::vector< Node > inactive_vars;
+      std::map< Node, std::map< int, bool > > visited;
+      std::map< Node, int > exclude;
+      for( std::map< Node, bool >::iterator it = qpr.d_phase_reqs.begin(); it != qpr.d_phase_reqs.end(); ++it ){
+        if( it->first.getKind()==GEQ || it->first.getKind()==GT ){
+          exclude[ it->first ] = it->second ? -1 : 1;
+          Trace("var-elim-ineq-debug") << "...exclude " << it->first << " at polarity " << exclude[ it->first ] << std::endl;
+        }
+      }
+      //traverse the body, invalidate variables if they occur in places other than the bounds they occur in
+      isVariableBoundElig( body, exclude, visited, true, true, elig_vars );
+      
+      if( !elig_vars.empty() ){
+        if( !qa.d_ipl.isNull() ){
+          isVariableBoundElig( qa.d_ipl, exclude, visited, false, true, elig_vars );
+        }
+        for( std::map< Node, bool >::iterator itev = elig_vars.begin(); itev != elig_vars.end(); ++itev ){
+          Node v = itev->first;
+          Trace("var-elim-ineq-debug") << v << " is eligible for elimination." << std::endl;
+          //do substitution corresponding to infinite projection, all literals involving unbounded variable go to true/false
+          std::vector< Node > terms;
+          std::vector< Node > subs;
+          for( std::map< Node, bool >::iterator itb = num_bounds[v][elig_vars[v]].begin(); itb != num_bounds[v][elig_vars[v]].end(); ++itb ){
+            Trace("var-elim-ineq-debug") << "  subs : " << itb->first << " -> " << itb->second << std::endl;
+            terms.push_back( itb->first );
+            subs.push_back( NodeManager::currentNM()->mkConst( itb->second ) );
+          }
+          body = body.substitute( terms.begin(), terms.end(), subs.begin(), subs.end() );
+          Trace("var-elim-ineq-debug") << "Return " << body << std::endl;
+          //eliminate from args
+          std::vector< Node >::iterator ita = std::find( args.begin(), args.end(), v );
+          Assert( ita!=args.end() );
+          args.erase( ita );
+        }
+      } 
+    }
+  }
+  return body;
+}
+
+Node QuantifiersRewriter::computeVarElimination( Node body, std::vector< Node >& args, QAttributes& qa ){
+  if( options::varElimQuant() || options::dtVarExpandQuant() ){
+    Node prev;
+    do{
+      prev = body;
+      body = computeVarElimination2( body, args, qa );
+    }while( prev!=body && !args.empty() );
+  }
+  return body;
+}
+
+Node QuantifiersRewriter::computePrenex( Node body, std::vector< Node >& args, std::vector< Node >& nargs, bool pol, bool prenexAgg ){
+  if( body.getKind()==FORALL ){
+    if( ( pol || prenexAgg ) && ( options::prenexQuantUser() || body.getNumChildren()==2 ) ){
+      std::vector< Node > terms;
+      std::vector< Node > subs;
+      //for doing prenexing of same-signed quantifiers
+      //must rename each variable that already exists
+      for( unsigned i=0; i<body[0].getNumChildren(); i++ ){
+        terms.push_back( body[0][i] );
+        subs.push_back( NodeManager::currentNM()->mkBoundVar( body[0][i].getType() ) );
+      }
+      if( pol ){
+        args.insert( args.end(), subs.begin(), subs.end() );
+      }else{
+        nargs.insert( nargs.end(), subs.begin(), subs.end() );
+      }
+      Node newBody = body[1];
+      newBody = newBody.substitute( terms.begin(), terms.end(), subs.begin(), subs.end() );
+      return newBody;
+    }
+  //must remove structure
+  }else if( prenexAgg && body.getKind()==kind::ITE && body.getType().isBoolean() ){
+    Node nn = NodeManager::currentNM()->mkNode( kind::AND,
+              NodeManager::currentNM()->mkNode( kind::OR, body[0].notNode(), body[1] ),
+              NodeManager::currentNM()->mkNode( kind::OR, body[0], body[2] ) );
+    return computePrenex( nn, args, nargs, pol, prenexAgg );
+  }else if( prenexAgg && body.getKind()==kind::EQUAL && body[0].getType().isBoolean() ){
+    Node nn = NodeManager::currentNM()->mkNode( kind::AND,
+              NodeManager::currentNM()->mkNode( kind::OR, body[0].notNode(), body[1] ),
+              NodeManager::currentNM()->mkNode( kind::OR, body[0], body[1].notNode() ) );
+    return computePrenex( nn, args, nargs, pol, prenexAgg );
+  }else if( body.getType().isBoolean() ){
+    Assert( body.getKind()!=EXISTS );
+    bool childrenChanged = false;
+    std::vector< Node > newChildren;
+    for( unsigned i=0; i<body.getNumChildren(); i++ ){
+      bool newHasPol;
+      bool newPol;
+      QuantPhaseReq::getPolarity( body, i, true, pol, newHasPol, newPol );
+      if( newHasPol ){
+        Node n = computePrenex( body[i], args, nargs, newPol, prenexAgg );
+        newChildren.push_back( n );
+        if( n!=body[i] ){
+          childrenChanged = true;
+        }
+      }else{
+        newChildren.push_back( body[i] );
+      }
+    }
+    if( childrenChanged ){
+      if( body.getKind()==NOT && newChildren[0].getKind()==NOT ){
+        return newChildren[0][0];
+      }else{
+        return NodeManager::currentNM()->mkNode( body.getKind(), newChildren );
+      }
+    }
+  }
+  return body;
+}
+
+Node QuantifiersRewriter::computePrenexAgg( Node n, bool topLevel ){
+  if( containsQuantifiers( n ) ){
+    if( topLevel && options::prenexQuant()==PRENEX_QUANT_DISJ_NORMAL && ( n.getKind()==AND || ( n.getKind()==NOT && n[0].getKind()==OR ) ) ){
+      std::vector< Node > children;
+      Node nc = n.getKind()==NOT ? n[0] : n;
+      for( unsigned i=0; i<nc.getNumChildren(); i++ ){
+        Node ncc = computePrenexAgg( nc[i], true );
+        if( n.getKind()==NOT ){
+          ncc = ncc.negate();        
+        }
+        children.push_back( ncc );
+      }
+      return NodeManager::currentNM()->mkNode( AND, children );
+    }else if( n.getKind()==NOT ){
+      return computePrenexAgg( n[0], false ).negate();
+    }else if( n.getKind()==FORALL ){
+    /*
+      Node nn = computePrenexAgg( n[1], false );
+      if( nn!=n[1] ){
+        if( n.getNumChildren()==2 ){
+          return NodeManager::currentNM()->mkNode( FORALL, n[0], nn );
+        }else{
+          return NodeManager::currentNM()->mkNode( FORALL, n[0], nn, n[2] );
+        }
+      }
+      */
+      std::vector< Node > children;
+      if( n[1].getKind()==OR && options::prenexQuant()==PRENEX_QUANT_DISJ_NORMAL ){
+        for( unsigned i=0; i<n[1].getNumChildren(); i++ ){
+          children.push_back( computePrenexAgg( n[1][i], false ) );
+        }
+      }else{
+        children.push_back( computePrenexAgg( n[1], false ) );
+      }
+      std::vector< Node > args;
+      for( unsigned i=0; i<n[0].getNumChildren(); i++ ){
+        args.push_back( n[0][i] );
+      }
+      std::vector< Node > nargs;
+      //for each child, strip top level quant
+      for( unsigned i=0; i<children.size(); i++ ){
+        if( children[i].getKind()==FORALL ){
+          for( unsigned j=0; j<children[i][0].getNumChildren(); j++ ){
+            args.push_back( children[i][0][j] );
+          }
+          children[i] = children[i][1];
+        }
+      }
+      Node nb = children.size()==1 ? children[0] : NodeManager::currentNM()->mkNode( OR, children );
+      return mkForall( args, nb, true );
+    }else{
+      std::vector< Node > args;
+      std::vector< Node > nargs;
+      Node nn = computePrenex( n, args, nargs, true, true );
+      if( n!=nn ){
+        Node nnn = computePrenexAgg( nn, false );
+        //merge prenex
+        if( nnn.getKind()==FORALL ){
+          for( unsigned i=0; i<nnn[0].getNumChildren(); i++ ){
+            args.push_back( nnn[0][i] );
+          }
+          nnn = nnn[1];
+          //pos polarity variables are inner
+          if( !args.empty() ){
+            nnn = mkForall( args, nnn, true );
+          }
+          args.clear();
+        }else if( nnn.getKind()==NOT && nnn[0].getKind()==FORALL ){
+          for( unsigned i=0; i<nnn[0][0].getNumChildren(); i++ ){
+            nargs.push_back( nnn[0][0][i] );
+          }
+          nnn = nnn[0][1].negate();
+        }
+        if( !nargs.empty() ){
+          nnn = mkForall( nargs, nnn.negate(), true ).negate();
+        }
+        if( !args.empty() ){
+          nnn = mkForall( args, nnn, true );
+        }
+        return nnn;
+      }else{
+        Assert( args.empty() );
+        Assert( nargs.empty() );
+      }
+    }
+  }
+  return n;
+}
+
+Node QuantifiersRewriter::computeSplit( std::vector< Node >& args, Node body, QAttributes& qa ) {
+  Assert( body.getKind()==OR );
+  size_t var_found_count = 0;
+  size_t eqc_count = 0;
+  size_t eqc_active = 0;
+  std::map< Node, int > var_to_eqc;
+  std::map< int, std::vector< Node > > eqc_to_var;
+  std::map< int, std::vector< Node > > eqc_to_lit;
+
+  std::vector<Node> lits;
+
+  for( unsigned i=0; i<body.getNumChildren(); i++ ){
+    //get variables contained in the literal
+    Node n = body[i];
+    std::vector< Node > lit_args;
+    computeArgVec( args, lit_args, n );
+    if( lit_args.empty() ){
+      lits.push_back( n );
+    }else {
+      //collect the equivalence classes this literal belongs to, and the new variables it contributes
+      std::vector< int > eqcs;
+      std::vector< Node > lit_new_args;
+      //for each variable in literal
+      for( unsigned j=0; j<lit_args.size(); j++) {
+        //see if the variable has already been found
+        if (var_to_eqc.find(lit_args[j])!=var_to_eqc.end()) {
+          int eqc = var_to_eqc[lit_args[j]];
+          if (std::find(eqcs.begin(), eqcs.end(), eqc)==eqcs.end()) {
+            eqcs.push_back(eqc);
+          }
+        }else{
+          var_found_count++;
+          lit_new_args.push_back(lit_args[j]);
+        }
+      }
+      if (eqcs.empty()) {
+        eqcs.push_back(eqc_count);
+        eqc_count++;
+        eqc_active++;
+      }
+
+      int eqcz = eqcs[0];
+      //merge equivalence classes with eqcz
+      for (unsigned j=1; j<eqcs.size(); j++) {
+        int eqc = eqcs[j];
+        //move all variables from equivalence class
+        for (unsigned k=0; k<eqc_to_var[eqc].size(); k++) {
+          Node v = eqc_to_var[eqc][k];
+          var_to_eqc[v] = eqcz;
+          eqc_to_var[eqcz].push_back(v);
+        }
+        eqc_to_var.erase(eqc);
+        //move all literals from equivalence class
+        for (unsigned k=0; k<eqc_to_lit[eqc].size(); k++) {
+          Node l = eqc_to_lit[eqc][k];
+          eqc_to_lit[eqcz].push_back(l);
+        }
+        eqc_to_lit.erase(eqc);
+        eqc_active--;
+      }
+      //add variables to equivalence class
+      for (unsigned j=0; j<lit_new_args.size(); j++) {
+        var_to_eqc[lit_new_args[j]] = eqcz;
+        eqc_to_var[eqcz].push_back(lit_new_args[j]);
+      }
+      //add literal to equivalence class
+      eqc_to_lit[eqcz].push_back(n);
+    }
+  }
+  if ( eqc_active>1 || !lits.empty() || var_to_eqc.size()!=args.size() ){
+    Trace("clause-split-debug") << "Split quantified formula with body " << body << std::endl;
+    Trace("clause-split-debug") << "   Ground literals: " << std::endl;
+    for( size_t i=0; i<lits.size(); i++) {
+      Trace("clause-split-debug") << "      " << lits[i] << std::endl;
+    }
+    Trace("clause-split-debug") << std::endl;
+    Trace("clause-split-debug") << "Equivalence classes: " << std::endl;
+    for (std::map< int, std::vector< Node > >::iterator it = eqc_to_lit.begin(); it != eqc_to_lit.end(); ++it ){
+      Trace("clause-split-debug") << "   Literals: " << std::endl;
+      for (size_t i=0; i<it->second.size(); i++) {
+        Trace("clause-split-debug") << "      " << it->second[i] << std::endl;
+      }
+      int eqc = it->first;
+      Trace("clause-split-debug") << "   Variables: " << std::endl;
+      for (size_t i=0; i<eqc_to_var[eqc].size(); i++) {
+        Trace("clause-split-debug") << "      " << eqc_to_var[eqc][i] << std::endl;
+      }
+      Trace("clause-split-debug") << std::endl;
+      Node bvl = NodeManager::currentNM()->mkNode( BOUND_VAR_LIST, eqc_to_var[eqc]);
+      Node body = it->second.size()==1 ? it->second[0] : NodeManager::currentNM()->mkNode( OR, it->second );
+      Node fa = NodeManager::currentNM()->mkNode( FORALL, bvl, body );
+      lits.push_back(fa);
+    }
+    Assert( !lits.empty() );
+    Node nf = lits.size()==1 ? lits[0] : NodeManager::currentNM()->mkNode(OR,lits);
+    Trace("clause-split-debug") << "Made node : " << nf << std::endl;
+    return nf;
+  }else{
+    return mkForAll( args, body, qa );
+  }
+}
+
+Node QuantifiersRewriter::mkForAll( std::vector< Node >& args, Node body, QAttributes& qa ){
+  if( args.empty() ){
+    return body;
+  }else{
+    std::vector< Node > children;
+    children.push_back( NodeManager::currentNM()->mkNode(kind::BOUND_VAR_LIST, args ) );
+    children.push_back( body );
+    if( !qa.d_ipl.isNull() ){
+      children.push_back( qa.d_ipl );
+    }
+    return NodeManager::currentNM()->mkNode( kind::FORALL, children );
+  }
+}
+Node QuantifiersRewriter::mkForall( std::vector< Node >& args, Node body, bool marked ) {
+  if( args.empty() ){
+    return body;
+  }else{
+    std::vector< Node > children;
+    children.push_back( NodeManager::currentNM()->mkNode(kind::BOUND_VAR_LIST, args ) );
+    children.push_back( body );
+    std::vector< Node > iplc;
+    if( marked ){
+      Node avar = NodeManager::currentNM()->mkSkolem( "id", NodeManager::currentNM()->booleanType() );
+      QuantIdNumAttribute ida;
+      avar.setAttribute(ida,0);
+      iplc.push_back( NodeManager::currentNM()->mkNode( INST_ATTRIBUTE, avar ) );
+    }
+    if( !iplc.empty() ){
+      children.push_back( NodeManager::currentNM()->mkNode( INST_PATTERN_LIST, iplc ) );
+    }
+    return NodeManager::currentNM()->mkNode( FORALL, children );
+  }
+}
+
+//computes miniscoping, also eliminates variables that do not occur free in body
+Node QuantifiersRewriter::computeMiniscoping( std::vector< Node >& args, Node body, QAttributes& qa ){
+  if( body.getKind()==FORALL ){
+    //combine prenex
+    std::vector< Node > newArgs;
+    newArgs.insert( newArgs.end(), args.begin(), args.end() );
+    for( unsigned i=0; i<body[0].getNumChildren(); i++ ){
+      newArgs.push_back( body[0][i] );
+    }
+    return mkForAll( newArgs, body[1], qa );
+  }else if( body.getKind()==AND ){
+    if( options::miniscopeQuant() ){
+      //break apart
+      NodeBuilder<> t(kind::AND);
+      for( unsigned i=0; i<body.getNumChildren(); i++ ){
+        t << computeMiniscoping( args, body[i], qa );
+      }
+      Node retVal = t;
+      return retVal;
+    }
+  }else if( body.getKind()==OR ){
+    if( options::quantSplit() ){
+      //splitting subsumes free variable miniscoping, apply it with higher priority
+      return computeSplit( args, body, qa );
+    }else if( options::miniscopeQuantFreeVar() ){
+      Node newBody = body;
+      NodeBuilder<> body_split(kind::OR);
+      NodeBuilder<> tb(kind::OR);
+      for( unsigned i=0; i<body.getNumChildren(); i++ ){
+        Node trm = body[i];
+        if( TermDb::containsTerms( body[i], args ) ){
+          tb << trm;
+        }else{
+          body_split << trm;
+        }
+      }
+      if( tb.getNumChildren()==0 ){
+        return body_split;
+      }else if( body_split.getNumChildren()>0 ){
+        newBody = tb.getNumChildren()==1 ? tb.getChild( 0 ) : tb;
+        std::vector< Node > activeArgs;
+        computeArgVec2( args, activeArgs, newBody, qa.d_ipl );
+        body_split << mkForAll( activeArgs, newBody, qa );
+        return body_split.getNumChildren()==1 ? body_split.getChild( 0 ) : body_split;
+      }
+    }
+  }else if( body.getKind()==NOT ){
+    Assert( isLiteral( body[0] ) );
+  }
+  //remove variables that don't occur
+  std::vector< Node > activeArgs;
+  computeArgVec2( args, activeArgs, body, qa.d_ipl );
+  return mkForAll( activeArgs, body, qa );
+}
+
+Node QuantifiersRewriter::computeAggressiveMiniscoping( std::vector< Node >& args, Node body ){
+  std::map<Node, std::vector<Node> > varLits;
+  std::map<Node, std::vector<Node> > litVars;
+  if (body.getKind() == OR) {
+    Trace("ag-miniscope") << "compute aggressive miniscoping on " << body << std::endl;
+    for (size_t i = 0; i < body.getNumChildren(); i++) {
+      std::vector<Node> activeArgs;
+      computeArgVec(args, activeArgs, body[i]);
+      for (unsigned j = 0; j < activeArgs.size(); j++) {
+        varLits[activeArgs[j]].push_back(body[i]);
+      }
+      std::vector<Node>& lit_body_i = litVars[body[i]];
+      std::vector<Node>::iterator lit_body_i_begin = lit_body_i.begin();
+      std::vector<Node>::const_iterator active_begin = activeArgs.begin();
+      std::vector<Node>::const_iterator active_end = activeArgs.end();
+      lit_body_i.insert(lit_body_i_begin, active_begin, active_end);
+    }
+    //find the variable in the least number of literals
+    Node bestVar;
+    for( std::map< Node, std::vector<Node> >::iterator it = varLits.begin(); it != varLits.end(); ++it ){
+      if( bestVar.isNull() || varLits[bestVar].size()>it->second.size() ){
+        bestVar = it->first;
+      }
+    }
+    Trace("ag-miniscope-debug") << "Best variable " << bestVar << " occurs in " << varLits[bestVar].size() << "/ " << body.getNumChildren() << " literals." << std::endl;
+    if( !bestVar.isNull() && varLits[bestVar].size()<body.getNumChildren() ){
+      //we can miniscope
+      Trace("ag-miniscope") << "Miniscope on " << bestVar << std::endl;
+      //make the bodies
+      std::vector<Node> qlit1;
+      qlit1.insert( qlit1.begin(), varLits[bestVar].begin(), varLits[bestVar].end() );
+      std::vector<Node> qlitt;
+      //for all literals not containing bestVar
+      for( size_t i=0; i<body.getNumChildren(); i++ ){
+        if( std::find( qlit1.begin(), qlit1.end(), body[i] )==qlit1.end() ){
+          qlitt.push_back( body[i] );
+        }
+      }
+      //make the variable lists
+      std::vector<Node> qvl1;
+      std::vector<Node> qvl2;
+      std::vector<Node> qvsh;
+      for( unsigned i=0; i<args.size(); i++ ){
+        bool found1 = false;
+        bool found2 = false;
+        for( size_t j=0; j<varLits[args[i]].size(); j++ ){
+          if( !found1 && std::find( qlit1.begin(), qlit1.end(), varLits[args[i]][j] )!=qlit1.end() ){
+            found1 = true;
+          }else if( !found2 && std::find( qlitt.begin(), qlitt.end(), varLits[args[i]][j] )!=qlitt.end() ){
+            found2 = true;
+          }
+          if( found1 && found2 ){
+            break;
+          }
+        }
+        if( found1 ){
+          if( found2 ){
+            qvsh.push_back( args[i] );
+          }else{
+            qvl1.push_back( args[i] );
+          }
+        }else{
+          Assert(found2);
+          qvl2.push_back( args[i] );
+        }
+      }
+      Assert( !qvl1.empty() );
+      Assert( !qvl2.empty() || !qvsh.empty() );
+      //check for literals that only contain shared variables
+      std::vector<Node> qlitsh;
+      std::vector<Node> qlit2;
+      for( size_t i=0; i<qlitt.size(); i++ ){
+        bool hasVar2 = false;
+        for( size_t j=0; j<litVars[qlitt[i]].size(); j++ ){
+          if( std::find( qvl2.begin(), qvl2.end(), litVars[qlitt[i]][j] )!=qvl2.end() ){
+            hasVar2 = true;
+            break;
+          }
+        }
+        if( hasVar2 ){
+          qlit2.push_back( qlitt[i] );
+        }else{
+          qlitsh.push_back( qlitt[i] );
+        }
+      }
+      varLits.clear();
+      litVars.clear();
+      Trace("ag-miniscope-debug") << "Split into literals : " << qlit1.size() << " / " << qlit2.size() << " / " << qlitsh.size();
+      Trace("ag-miniscope-debug") << ", variables : " << qvl1.size() << " / " << qvl2.size() << " / " << qvsh.size() << std::endl;
+      Node n1 = qlit1.size()==1 ? qlit1[0] : NodeManager::currentNM()->mkNode( OR, qlit1 );
+      n1 = computeAggressiveMiniscoping( qvl1, n1 );
+      qlitsh.push_back( n1 );
+      if( !qlit2.empty() ){
+        Node n2 = qlit2.size()==1 ? qlit2[0] : NodeManager::currentNM()->mkNode( OR, qlit2 );
+        n2 = computeAggressiveMiniscoping( qvl2, n2 );
+        qlitsh.push_back( n2 );
+      }
+      Node n = NodeManager::currentNM()->mkNode( OR, qlitsh );
+      if( !qvsh.empty() ){
+        Node bvl = NodeManager::currentNM()->mkNode(kind::BOUND_VAR_LIST, qvsh);
+        n = NodeManager::currentNM()->mkNode( FORALL, bvl, n );
+      }
+      Trace("ag-miniscope") << "Return " << n << " for " << body << std::endl;
+      return n;
+    }
+  }
+  QAttributes qa;
+  return mkForAll( args, body, qa );
+}
+
+bool QuantifiersRewriter::doOperation( Node q, int computeOption, QAttributes& qa ){
+  bool is_strict_trigger = qa.d_hasPattern && options::userPatternsQuant()==USER_PAT_MODE_TRUST;
+  bool is_std = !qa.d_sygus && !qa.d_quant_elim && !qa.isFunDef() && !is_strict_trigger;
+  if( computeOption==COMPUTE_ELIM_SYMBOLS ){
+    return true;
+  }else if( computeOption==COMPUTE_MINISCOPING ){
+    return is_std;
+  }else if( computeOption==COMPUTE_AGGRESSIVE_MINISCOPING ){
+    return options::aggressiveMiniscopeQuant() && is_std;
+  }else if( computeOption==COMPUTE_PROCESS_TERMS ){
+    return options::condRewriteQuant();
+  }else if( computeOption==COMPUTE_COND_SPLIT ){
+    return ( options::iteDtTesterSplitQuant() || options::condVarSplitQuant() ) && !is_strict_trigger;
+  }else if( computeOption==COMPUTE_PRENEX ){
+    return options::prenexQuant()!=PRENEX_QUANT_NONE && !options::aggressiveMiniscopeQuant() && is_std;
+  }else if( computeOption==COMPUTE_VAR_ELIMINATION ){
+    return ( options::varElimQuant() || options::dtVarExpandQuant() ) && is_std;
+  }else{
+    return false;
+  }
+}
+
+//general method for computing various rewrites
+Node QuantifiersRewriter::computeOperation( Node f, int computeOption, QAttributes& qa ){
+  Trace("quantifiers-rewrite-debug") << "Compute operation " << computeOption << " on " << f << " " << qa.d_qid_num << std::endl;
+  std::vector< Node > args;
+  for( unsigned i=0; i<f[0].getNumChildren(); i++ ){
+    args.push_back( f[0][i] );
+  }
+  Node n = f[1];
+  if( computeOption==COMPUTE_ELIM_SYMBOLS ){
+    n = computeElimSymbols( n );
+  }else if( computeOption==COMPUTE_MINISCOPING ){
+    if( options::prenexQuant()==PRENEX_QUANT_DISJ_NORMAL || options::prenexQuant()==PRENEX_QUANT_NORMAL ){
+      if( !qa.d_qid_num.isNull() ){
+        //already processed this, return self
+        return f;
+      }
+    }
+    //return directly
+    return computeMiniscoping( args, n, qa );
+  }else if( computeOption==COMPUTE_AGGRESSIVE_MINISCOPING ){
+    return computeAggressiveMiniscoping( args, n );
+  }else if( computeOption==COMPUTE_PROCESS_TERMS ){
+    std::vector< Node > new_conds;
+    n = computeProcessTerms( n, args, new_conds, f, qa );
+    if( !new_conds.empty() ){
+      new_conds.push_back( n );
+      n = NodeManager::currentNM()->mkNode( OR, new_conds );
+    }
+  }else if( computeOption==COMPUTE_COND_SPLIT ){
+    n = computeCondSplit( n, qa );
+  }else if( computeOption==COMPUTE_PRENEX ){
+    if( options::prenexQuant()==PRENEX_QUANT_DISJ_NORMAL || options::prenexQuant()==PRENEX_QUANT_NORMAL ){
+      //will rewrite at preprocess time
+      return f;
+    }else{
+      std::vector< Node > nargs;
+      n = computePrenex( n, args, nargs, true, false );
+      Assert( nargs.empty() );
+    }
+  }else if( computeOption==COMPUTE_VAR_ELIMINATION ){
+    n = computeVarElimination( n, args, qa );
+  }
+  Trace("quantifiers-rewrite-debug") << "Compute Operation: return " << n << ", " << args.size() << std::endl;
+  if( f[1]==n && args.size()==f[0].getNumChildren() ){
+    return f;
+  }else{
+    if( args.empty() ){
+      return n;
+    }else{
+      std::vector< Node > children;
+      children.push_back( NodeManager::currentNM()->mkNode(kind::BOUND_VAR_LIST, args ) );
+      children.push_back( n );
+      if( !qa.d_ipl.isNull() && args.size()==f[0].getNumChildren() ){
+        children.push_back( qa.d_ipl );
+      }
+      return NodeManager::currentNM()->mkNode(kind::FORALL, children );
+    }
+  }
+}
+
+
+Node QuantifiersRewriter::rewriteRewriteRule( Node r ) {
+  Kind rrkind = r[2].getKind();
+
+  //guards, pattern, body
+
+  //   Replace variables by Inst_* variable and tag the terms that contain them
+  std::vector<Node> vars;
+  vars.reserve(r[0].getNumChildren());
+  for( Node::const_iterator v = r[0].begin(); v != r[0].end(); ++v ){
+    vars.push_back(*v);
+  };
+
+  // Body/Remove_term/Guards/Triggers
+  Node body = r[2][1];
+  TNode new_terms = r[2][1];
+  std::vector<Node> guards;
+  std::vector<Node> pattern;
+  Node true_node = NodeManager::currentNM()->mkConst(true);
+  // shortcut
+  TNode head = r[2][0];
+  switch(rrkind){
+  case kind::RR_REWRITE:
+    // Equality
+    pattern.push_back( head );
+    body = head.eqNode(body);
+    break;
+  case kind::RR_REDUCTION:
+  case kind::RR_DEDUCTION:
+    // Add head to guards and pattern
+    switch(head.getKind()){
+    case kind::AND:
+      for( unsigned i = 0; i<head.getNumChildren(); i++ ){
+        guards.push_back(head[i]);
+        pattern.push_back(head[i]);
+      }
+      break;
+    default:
+      if( head!=true_node ){
+        guards.push_back(head);
+        pattern.push_back( head );
+      }
+      break;
+    }
+    break;
+  default:
+    Unreachable("RewriteRules can be of only three kinds");
+    break;
+  }
+  // Add the other guards
+  TNode g = r[1];
+  switch(g.getKind()){
+  case kind::AND:
+    for( unsigned i = 0; i<g.getNumChildren(); i++ ){
+      guards.push_back(g[i]);
+    }
+    break;
+  default:
+    if( g != true_node ){
+      guards.push_back( g );
+    }
+    break;
+  }
+  // Add the other triggers
+  if( r[2].getNumChildren() >= 3 ){
+    for( unsigned i=0; i<r[2][2][0].getNumChildren(); i++ ) {
+      pattern.push_back( r[2][2][0][i] );
+    }
+  }
+
+  Trace("rr-rewrite") << "Rule is " << r << std::endl;
+  Trace("rr-rewrite") << "Head is " << head << std::endl;
+  Trace("rr-rewrite") << "Patterns are ";
+  for( unsigned i=0; i<pattern.size(); i++ ){
+    Trace("rr-rewrite") << pattern[i] << " ";
+  }
+  Trace("rr-rewrite") << std::endl;
+
+  NodeBuilder<> forallB(kind::FORALL);
+  forallB << r[0];
+  Node gg = guards.size()==0 ? true_node : ( guards.size()==1 ? guards[0] : NodeManager::currentNM()->mkNode( AND, guards ) );
+  gg = NodeManager::currentNM()->mkNode( OR, gg.negate(), body );
+  gg = Rewriter::rewrite( gg );
+  forallB << gg;
+  NodeBuilder<> patternB(kind::INST_PATTERN);
+  patternB.append(pattern);
+  NodeBuilder<> patternListB(kind::INST_PATTERN_LIST);
+  //the entire rewrite rule is the first pattern
+  if( options::quantRewriteRules() ){
+    patternListB << NodeManager::currentNM()->mkNode( INST_ATTRIBUTE, r );
+  }
+  patternListB << static_cast<Node>(patternB);
+  forallB << static_cast<Node>(patternListB);
+  Node rn = (Node) forallB;
+
+  return rn;
+}
+
+struct ContainsQuantAttributeId {};
+typedef expr::Attribute<ContainsQuantAttributeId, uint64_t> ContainsQuantAttribute;
+
+// check if the given node contains a universal quantifier
+bool QuantifiersRewriter::containsQuantifiers( Node n ){
+  if( n.hasAttribute(ContainsQuantAttribute()) ){
+    return n.getAttribute(ContainsQuantAttribute())==1;
+  }else if( n.getKind() == kind::FORALL ){
+    return true;
+  }else{
+    bool cq = false;
+    for( unsigned i = 0; i < n.getNumChildren(); ++i ){
+      if( containsQuantifiers( n[i] ) ){
+        cq = true;
+        break;
+      }
+    }
+    ContainsQuantAttribute cqa;
+    n.setAttribute(cqa, cq ? 1 : 0);
+    return cq;
+  }
+}
+bool QuantifiersRewriter::isPrenexNormalForm( Node n ) {
+  if( n.getKind()==FORALL ){
+    return n[1].getKind()!=FORALL && isPrenexNormalForm( n[1] );
+  }else if( n.getKind()==NOT ){
+    return n[0].getKind()!=NOT && isPrenexNormalForm( n[0] );
+  }else{
+    return !containsQuantifiers( n );
+  }
+}
+
+Node QuantifiersRewriter::preSkolemizeQuantifiers( Node n, bool polarity, std::vector< TypeNode >& fvTypes, std::vector< TNode >& fvs ){
+  Trace("pre-sk") << "Pre-skolem " << n << " " << polarity << " " << fvs.size() << endl;
+  if( n.getKind()==kind::NOT ){
+    Node nn = preSkolemizeQuantifiers( n[0], !polarity, fvTypes, fvs );
+    return nn.negate();
+  }else if( n.getKind()==kind::FORALL ){
+    if( polarity ){
+      if( options::preSkolemQuant() && options::preSkolemQuantNested() ){
+        vector< Node > children;
+        children.push_back( n[0] );
+        //add children to current scope
+        std::vector< TypeNode > fvt;
+        std::vector< TNode > fvss;
+        fvt.insert( fvt.begin(), fvTypes.begin(), fvTypes.end() );
+        fvss.insert( fvss.begin(), fvs.begin(), fvs.end() );
+        for( int i=0; i<(int)n[0].getNumChildren(); i++ ){
+          fvt.push_back( n[0][i].getType() );
+          fvss.push_back( n[0][i] );
+        }
+        //process body
+        children.push_back( preSkolemizeQuantifiers( n[1], polarity, fvt, fvss ) );
+        if( n.getNumChildren()==3 ){
+          children.push_back( n[2] );
+        }
+        //return processed quantifier
+        return NodeManager::currentNM()->mkNode( kind::FORALL, children );
+      }
+    }else{
+      //process body
+      Node nn = preSkolemizeQuantifiers( n[1], polarity, fvTypes, fvs );
+      std::vector< Node > sk;
+      Node sub;
+      std::vector< unsigned > sub_vars;
+      //return skolemized body
+      return TermDb::mkSkolemizedBody( n, nn, fvTypes, fvs, sk, sub, sub_vars );
+    }
+  }else{
+    //check if it contains a quantifier as a subterm
+    //if so, we will write this node
+    if( containsQuantifiers( n ) ){
+      if( ( n.getKind()==kind::ITE && n.getType().isBoolean() ) || ( n.getKind()==kind::EQUAL && n[0].getType().isBoolean() ) ){
+        if( options::preSkolemQuantAgg() ){
+          Node nn;
+          //must remove structure
+          if( n.getKind()==kind::ITE ){
+            nn = NodeManager::currentNM()->mkNode( kind::AND,
+                  NodeManager::currentNM()->mkNode( kind::OR, n[0].notNode(), n[1] ),
+                  NodeManager::currentNM()->mkNode( kind::OR, n[0], n[2] ) );
+          }else if( n.getKind()==kind::EQUAL ){
+            nn = NodeManager::currentNM()->mkNode( kind::AND,
+                  NodeManager::currentNM()->mkNode( kind::OR, n[0].notNode(), n.getKind()==kind::XOR ? n[1].notNode() : n[1] ),
+                  NodeManager::currentNM()->mkNode( kind::OR, n[0], n.getKind()==kind::XOR ? n[1] : n[1].notNode() ) );
+          }
+          return preSkolemizeQuantifiers( nn, polarity, fvTypes, fvs );
+        }
+      }else if( n.getKind()==kind::AND || n.getKind()==kind::OR ){
+        vector< Node > children;
+        for( int i=0; i<(int)n.getNumChildren(); i++ ){
+          children.push_back( preSkolemizeQuantifiers( n[i], polarity, fvTypes, fvs ) );
+        }
+        return NodeManager::currentNM()->mkNode( n.getKind(), children );
+      }
+    }
+  }
+  return n;
+}
+
+
+Node QuantifiersRewriter::preprocess( Node n, bool isInst ) {
+  Node prev = n;
+  if( n.getKind() == kind::REWRITE_RULE ){
+    n = quantifiers::QuantifiersRewriter::rewriteRewriteRule( n );
+  }else{
+    if( options::preSkolemQuant() ){
+      if( !isInst || !options::preSkolemQuantNested() ){
+        Trace("quantifiers-preprocess-debug") << "Pre-skolemize " << n << "..." << std::endl;
+        //apply pre-skolemization to existential quantifiers
+        std::vector< TypeNode > fvTypes;
+        std::vector< TNode > fvs;
+        n = quantifiers::QuantifiersRewriter::preSkolemizeQuantifiers( prev, true, fvTypes, fvs );
+      }
+    }
+  }
+  //pull all quantifiers globally
+  if( options::prenexQuant()==PRENEX_QUANT_DISJ_NORMAL || options::prenexQuant()==PRENEX_QUANT_NORMAL ){
+    Trace("quantifiers-prenex") << "Prenexing : " << n << std::endl;
+    n = quantifiers::QuantifiersRewriter::computePrenexAgg( n, true );
+    n = Rewriter::rewrite( n );
+    Trace("quantifiers-prenex") << "Prenexing returned : " << n << std::endl;
+    //Assert( isPrenexNormalForm( n ) );
+  }
+  if( n!=prev ){       
+    Trace("quantifiers-preprocess") << "Preprocess " << prev << std::endl;
+    Trace("quantifiers-preprocess") << "..returned " << n << std::endl;
+  }
+  return n;
+}
+
+}/* CVC4::theory::quantifiers namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/quantifiers/quantifiers_rewriter.h b/src/theory/quantifiers/quantifiers_rewriter.h
new file mode 100644
index 0000000..90a22f4
--- /dev/null
+++ b/src/theory/quantifiers/quantifiers_rewriter.h
@@ -0,0 +1,105 @@
+/*********************                                                        */
+/*! \file quantifiers_rewriter.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Rewriter for the theory of inductive quantifiers
+ **
+ ** Rewriter for the theory of inductive quantifiers.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANTIFIERS__QUANTIFIERS_REWRITER_H
+#define __CVC4__THEORY__QUANTIFIERS__QUANTIFIERS_REWRITER_H
+
+#include "theory/rewriter.h"
+#include "theory/quantifiers_engine.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+class QAttributes;
+
+class QuantifiersRewriter {
+private:
+  static int getPurifyIdLit2( Node n, std::map< Node, int >& visited );
+public:
+  static bool isClause( Node n );
+  static bool isLiteral( Node n );
+  static bool isCube( Node n );
+private:
+  static bool addCheckElimChild( std::vector< Node >& children, Node c, Kind k, std::map< Node, bool >& lit_pol, bool& childrenChanged );
+  static void addNodeToOrBuilder( Node n, NodeBuilder<>& t );
+  static void computeArgs( std::vector< Node >& args, std::map< Node, bool >& activeMap, Node n, std::map< Node, bool >& visited );
+  static void computeArgVec( std::vector< Node >& args, std::vector< Node >& activeArgs, Node n );
+  static void computeArgVec2( std::vector< Node >& args, std::vector< Node >& activeArgs, Node n, Node ipl );
+  static Node computeProcessTerms2( Node body, bool hasPol, bool pol, std::map< Node, bool >& currCond, int nCurrCond,
+                                    std::map< Node, Node >& cache, std::map< Node, Node >& icache,
+                                    std::vector< Node >& new_vars, std::vector< Node >& new_conds );
+  static void computeDtTesterIteSplit( Node n, std::map< Node, Node >& pcons, std::map< Node, std::map< int, Node > >& ncons, std::vector< Node >& conj );
+  static bool isConditionalVariableElim( Node n, int pol=0 );
+  static bool isVariableElim( Node v, Node s );
+  static void isVariableBoundElig( Node n, std::map< Node, int >& exclude, std::map< Node, std::map< int, bool > >& visited, bool hasPol, bool pol, 
+                                   std::map< Node, bool >& elig_vars );
+  static bool computeVariableElimLit( Node n, bool pol, std::vector< Node >& args, std::vector< Node >& var, std::vector< Node >& subs,
+                                      std::map< Node, std::map< bool, std::map< Node, bool > > >& num_bounds );
+  static Node computeVarElimination2( Node body, std::vector< Node >& args, QAttributes& qa );
+public:
+  static Node computeElimSymbols( Node body );
+  static Node computeMiniscoping( std::vector< Node >& args, Node body, QAttributes& qa );
+  static Node computeAggressiveMiniscoping( std::vector< Node >& args, Node body );
+  //cache is dependent upon currCond, icache is not, new_conds are negated conditions
+  static Node computeProcessTerms( Node body, std::vector< Node >& new_vars, std::vector< Node >& new_conds, Node q, QAttributes& qa );
+  static Node computeCondSplit( Node body, QAttributes& qa );
+  static Node computePrenex( Node body, std::vector< Node >& args, std::vector< Node >& nargs, bool pol, bool prenexAgg );
+  static Node computePrenexAgg( Node n, bool topLevel );
+  static Node computeSplit( std::vector< Node >& args, Node body, QAttributes& qa );
+  static Node computeVarElimination( Node body, std::vector< Node >& args, QAttributes& qa );
+private:
+  enum{
+    COMPUTE_ELIM_SYMBOLS = 0,
+    COMPUTE_MINISCOPING,
+    COMPUTE_AGGRESSIVE_MINISCOPING,
+    COMPUTE_PROCESS_TERMS,
+    COMPUTE_PRENEX,
+    COMPUTE_VAR_ELIMINATION,
+    COMPUTE_COND_SPLIT,
+    //COMPUTE_FLATTEN_ARGS_UF,
+    //COMPUTE_CNF,
+    COMPUTE_LAST
+  };
+  static Node computeOperation( Node f, int computeOption, QAttributes& qa );
+public:
+  static RewriteResponse preRewrite(TNode in);
+  static RewriteResponse postRewrite(TNode in);
+  static inline void init() {}
+  static inline void shutdown() {}
+private:
+  /** options */
+  static bool doOperation( Node f, int computeOption, QAttributes& qa );
+private:
+  static Node preSkolemizeQuantifiers(Node n, bool polarity, std::vector< TypeNode >& fvTypes, std::vector<TNode>& fvs);
+public:
+  static Node rewriteRewriteRule( Node r );
+  static bool containsQuantifiers( Node n );
+  static bool isPrenexNormalForm( Node n );
+  static Node preprocess( Node n, bool isInst = false );
+  static Node mkForAll( std::vector< Node >& args, Node body, QAttributes& qa );
+  static Node mkForall( std::vector< Node >& args, Node body, bool marked = false );
+};/* class QuantifiersRewriter */
+
+}/* CVC4::theory::quantifiers namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__QUANTIFIERS__QUANTIFIERS_REWRITER_H */
+
+
diff --git a/src/theory/quantifiers/relevant_domain.cpp b/src/theory/quantifiers/relevant_domain.cpp
new file mode 100644
index 0000000..8166925
--- /dev/null
+++ b/src/theory/quantifiers/relevant_domain.cpp
@@ -0,0 +1,309 @@
+/*********************                                                        */
+/*! \file relevant_domain.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of relevant domain class
+ **/
+
+#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/relevant_domain.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/first_order_model.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+
+void RelevantDomain::RDomain::merge( RDomain * r ) {
+  Assert( !d_parent );
+  Assert( !r->d_parent );
+  d_parent = r;
+  for( unsigned i=0; i<d_terms.size(); i++ ){
+    r->addTerm( d_terms[i] );
+  }
+  d_terms.clear();
+}
+
+void RelevantDomain::RDomain::addTerm( Node t ) {
+  if( std::find( d_terms.begin(), d_terms.end(), t )==d_terms.end() ){
+    d_terms.push_back( t );
+  }
+}
+
+RelevantDomain::RDomain * RelevantDomain::RDomain::getParent() {
+  if( !d_parent ){
+    return this;
+  }else{
+    RDomain * p = d_parent->getParent();
+    d_parent = p;
+    return p;
+  }
+}
+
+void RelevantDomain::RDomain::removeRedundantTerms( QuantifiersEngine * qe ) {
+  std::map< Node, Node > rterms;
+  for( unsigned i=0; i<d_terms.size(); i++ ){
+    Node r = d_terms[i];
+    if( !TermDb::hasInstConstAttr( d_terms[i] ) ){
+      r = qe->getEqualityQuery()->getRepresentative( d_terms[i] );
+    }
+    if( rterms.find( r )==rterms.end() ){
+      rterms[r] = d_terms[i];
+    }
+  }
+  d_terms.clear();
+  for( std::map< Node, Node >::iterator it = rterms.begin(); it != rterms.end(); ++it ){
+    d_terms.push_back( it->second );
+  }
+}
+
+
+
+RelevantDomain::RelevantDomain( QuantifiersEngine* qe, FirstOrderModel* m ) : d_qe( qe ), d_model( m ){
+   d_is_computed = false;
+}
+
+RelevantDomain::~RelevantDomain() {
+  for( std::map< Node, std::map< int, RDomain * > >::iterator itr = d_rel_doms.begin(); itr != d_rel_doms.end(); ++itr ){
+    for( std::map< int, RDomain * >::iterator itr2 = itr->second.begin(); itr2 != itr->second.end(); ++itr2 ){
+      RDomain * current = (*itr2).second;
+      Assert( current != NULL );
+      delete current;
+    }
+  }
+}
+
+RelevantDomain::RDomain * RelevantDomain::getRDomain( Node n, int i, bool getParent ) {
+  if( d_rel_doms.find( n )==d_rel_doms.end() || d_rel_doms[n].find( i )==d_rel_doms[n].end() ){
+    d_rel_doms[n][i] = new RDomain;
+    d_rn_map[d_rel_doms[n][i]] = n;
+    d_ri_map[d_rel_doms[n][i]] = i;
+  }
+  return getParent ? d_rel_doms[n][i]->getParent() : d_rel_doms[n][i];
+}
+
+bool RelevantDomain::reset( Theory::Effort e ) {
+  d_is_computed = false;
+  return true;
+}
+
+void RelevantDomain::compute(){
+  if( !d_is_computed ){
+    d_is_computed = true;
+    for( std::map< Node, std::map< int, RDomain * > >::iterator it = d_rel_doms.begin(); it != d_rel_doms.end(); ++it ){
+      for( std::map< int, RDomain * >::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2 ){
+        it2->second->reset();
+      }
+    }
+    for( unsigned i=0; i<d_model->getNumAssertedQuantifiers(); i++ ){
+      Node q = d_model->getAssertedQuantifier( i );
+      Node icf = d_qe->getTermDatabase()->getInstConstantBody( q );
+      Trace("rel-dom-debug") << "compute relevant domain for " << icf << std::endl;
+      computeRelevantDomain( q, icf, true, true );
+    }
+
+    Trace("rel-dom-debug") << "account for ground terms" << std::endl;
+    TermDb * db = d_qe->getTermDatabase();
+    for( std::map< Node, std::vector< Node > >::iterator it = db->d_op_map.begin(); it != db->d_op_map.end(); ++it ){
+      Node op = it->first;
+      unsigned sz = db->getNumGroundTerms( op );
+      for( unsigned i=0; i<sz; i++ ){
+        Node n = it->second[i];
+        //if it is a non-redundant term
+        if( db->isTermActive( n ) ){
+          for( unsigned j=0; j<n.getNumChildren(); j++ ){
+            RDomain * rf = getRDomain( op, j );
+            rf->addTerm( n[j] );
+            Trace("rel-dom-debug") << "...add ground term " << n[j] << " to rel dom " << op << "[" << j << "]" << std::endl;
+          }
+        }
+      }
+    }
+    //print debug
+    for( std::map< Node, std::map< int, RDomain * > >::iterator it = d_rel_doms.begin(); it != d_rel_doms.end(); ++it ){
+      Trace("rel-dom") << "Relevant domain for " << it->first << " : " << std::endl;
+      for( std::map< int, RDomain * >::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2 ){
+        Trace("rel-dom") << "   " << it2->first << " : ";
+        RDomain * r = it2->second;
+        RDomain * rp = r->getParent();
+        if( r==rp ){
+          r->removeRedundantTerms( d_qe );
+          for( unsigned i=0; i<r->d_terms.size(); i++ ){
+            Trace("rel-dom") << r->d_terms[i] << " ";
+          }
+        }else{
+          Trace("rel-dom") << "Dom( " << d_rn_map[rp] << ", " << d_ri_map[rp] << " ) ";
+        }
+        Trace("rel-dom") << std::endl;
+      }
+    }
+  }
+}
+
+void RelevantDomain::computeRelevantDomain( Node q, Node n, bool hasPol, bool pol ) {
+  Node op = d_qe->getTermDatabase()->getMatchOperator( n );
+  for( unsigned i=0; i<n.getNumChildren(); i++ ){
+    if( !op.isNull() ){
+      RDomain * rf = getRDomain( op, i );
+      if( n[i].getKind()==ITE ){
+        for( unsigned j=1; j<=2; j++ ){
+          computeRelevantDomainOpCh( rf, n[i][j] );
+        }
+      }else{
+        computeRelevantDomainOpCh( rf, n[i] );
+      }
+    }
+    if( n[i].getKind()!=FORALL ){
+      bool newHasPol;
+      bool newPol;
+      QuantPhaseReq::getPolarity( n, i, hasPol, pol, newHasPol, newPol );
+      computeRelevantDomain( q, n[i], newHasPol, newPol );
+    }
+  }
+
+  if( ( n.getKind()==EQUAL || n.getKind()==GEQ ) && TermDb::hasInstConstAttr( n ) ){
+    //compute the information for what this literal does
+    computeRelevantDomainLit( q, hasPol, pol, n );
+    if( d_rel_dom_lit[hasPol][pol][n].d_merge ){
+      Assert( d_rel_dom_lit[hasPol][pol][n].d_rd[0]!=NULL && d_rel_dom_lit[hasPol][pol][n].d_rd[1]!=NULL );
+      RDomain * rd1 = d_rel_dom_lit[hasPol][pol][n].d_rd[0]->getParent();
+      RDomain * rd2 = d_rel_dom_lit[hasPol][pol][n].d_rd[1]->getParent();
+      if( rd1!=rd2 ){
+        rd1->merge( rd2 );
+      }
+    }else{
+      if( d_rel_dom_lit[hasPol][pol][n].d_rd[0]!=NULL ){
+        RDomain * rd = d_rel_dom_lit[hasPol][pol][n].d_rd[0]->getParent();
+        for( unsigned i=0; i<d_rel_dom_lit[hasPol][pol][n].d_val.size(); i++ ){
+          rd->addTerm( d_rel_dom_lit[hasPol][pol][n].d_val[i] );
+        }
+      }
+    }
+  }
+}
+
+void RelevantDomain::computeRelevantDomainOpCh( RDomain * rf, Node n ) {
+  if( n.getKind()==INST_CONSTANT ){
+    Node q = d_qe->getTermDatabase()->getInstConstAttr( n );
+    //merge the RDomains
+    unsigned id = n.getAttribute(InstVarNumAttribute());
+    Trace("rel-dom-debug") << n << " is variable # " << id << " for " << q;
+    Trace("rel-dom-debug") << " with body : " << d_qe->getTermDatabase()->getInstConstantBody( q ) << std::endl;
+    RDomain * rq = getRDomain( q, id );
+    if( rf!=rq ){
+      rq->merge( rf );
+    }
+  }else if( !TermDb::hasInstConstAttr( n ) ){
+    Trace("rel-dom-debug") << "...add ground term to rel dom " << n << std::endl;
+    //term to add
+    rf->addTerm( n );
+  }
+}
+
+void RelevantDomain::computeRelevantDomainLit( Node q, bool hasPol, bool pol, Node n ) {
+  if( d_rel_dom_lit[hasPol][pol].find( n )==d_rel_dom_lit[hasPol][pol].end() ){
+    d_rel_dom_lit[hasPol][pol][n].d_merge = false;
+    int varCount = 0;
+    int varCh = -1;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      if( n[i].getKind()==INST_CONSTANT ){
+        d_rel_dom_lit[hasPol][pol][n].d_rd[i] = getRDomain( q, n[i].getAttribute(InstVarNumAttribute()), false );
+        varCount++;
+        varCh = i;
+      }else{
+        d_rel_dom_lit[hasPol][pol][n].d_rd[i] = NULL;
+      }
+    }
+    
+    Node r_add;
+    bool varLhs = true;
+    if( varCount==2 ){
+      d_rel_dom_lit[hasPol][pol][n].d_merge = true;
+    }else{
+      if( varCount==1 ){
+        r_add = n[1-varCh];
+        varLhs = (varCh==0);
+        d_rel_dom_lit[hasPol][pol][n].d_rd[0] = d_rel_dom_lit[hasPol][pol][n].d_rd[varCh];
+        d_rel_dom_lit[hasPol][pol][n].d_rd[1] = NULL;
+      }else{
+        //solve the inequality for one/two variables, if possible
+        std::map< Node, Node > msum;
+        if( QuantArith::getMonomialSumLit( n, msum ) ){
+          Node var;
+          Node var2;
+          bool hasNonVar = false;
+          for( std::map< Node, Node >::iterator it = msum.begin(); it != msum.end(); ++it ){
+            if( !it->first.isNull() && it->first.getKind()==INST_CONSTANT ){
+              if( var.isNull() ){
+                var = it->first;
+              }else if( var2.isNull() ){
+                var2 = it->first;
+              }else{
+                hasNonVar = true;
+              }
+            }else{
+              hasNonVar = true;
+            }
+          }
+          if( !var.isNull() ){
+            if( var2.isNull() ){
+              //single variable solve
+              Node veq_c;
+              Node val;
+              int ires = QuantArith::isolate( var, msum, veq_c, val, n.getKind() );
+              if( ires!=0 ){
+                if( veq_c.isNull() ){
+                  r_add = val;
+                  varLhs = (ires==1);
+                  d_rel_dom_lit[hasPol][pol][n].d_rd[0] = getRDomain( q, var.getAttribute(InstVarNumAttribute()), false );
+                  d_rel_dom_lit[hasPol][pol][n].d_rd[1] = NULL;
+                }
+              }
+            }else if( !hasNonVar ){
+              //merge the domains
+              d_rel_dom_lit[hasPol][pol][n].d_rd[0] = getRDomain( q, var.getAttribute(InstVarNumAttribute()), false );
+              d_rel_dom_lit[hasPol][pol][n].d_rd[1] = getRDomain( q, var2.getAttribute(InstVarNumAttribute()), false );
+              d_rel_dom_lit[hasPol][pol][n].d_merge = true;
+            }
+          }
+        }
+      }
+    }
+    if( d_rel_dom_lit[hasPol][pol][n].d_merge ){
+      //do not merge if constant negative polarity
+      if( hasPol && !pol ){
+        d_rel_dom_lit[hasPol][pol][n].d_merge = false;
+      }
+    }else if( !r_add.isNull() && !TermDb::hasInstConstAttr( r_add ) ){
+      Trace("rel-dom-debug") << "...add term " << r_add << ", pol = " << pol << ", kind = " << n.getKind() << std::endl;
+      //the negative occurrence adds the term to the domain
+      if( !hasPol || !pol ){
+        d_rel_dom_lit[hasPol][pol][n].d_val.push_back( r_add );
+      }
+      //the positive occurence adds other terms
+      if( ( !hasPol || pol ) && n[0].getType().isInteger() ){
+        if( n.getKind()==EQUAL ){
+          for( unsigned i=0; i<2; i++ ){
+            d_rel_dom_lit[hasPol][pol][n].d_val.push_back( QuantArith::offset( r_add, i==0 ? 1 : -1 )  );
+          }
+        }else if( n.getKind()==GEQ ){
+          d_rel_dom_lit[hasPol][pol][n].d_val.push_back( QuantArith::offset( r_add, varLhs ? 1 : -1 ) );
+        }
+      }
+    }else{
+      d_rel_dom_lit[hasPol][pol][n].d_rd[0] = NULL;
+      d_rel_dom_lit[hasPol][pol][n].d_rd[1] = NULL;
+    }
+  }
+}
+
diff --git a/src/theory/quantifiers/relevant_domain.h b/src/theory/quantifiers/relevant_domain.h
new file mode 100644
index 0000000..1d6a2af
--- /dev/null
+++ b/src/theory/quantifiers/relevant_domain.h
@@ -0,0 +1,83 @@
+/*********************                                                        */
+/*! \file relevant_domain.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief relevant domain class
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANTIFIERS__RELEVANT_DOMAIN_H
+#define __CVC4__THEORY__QUANTIFIERS__RELEVANT_DOMAIN_H
+
+#include "theory/quantifiers/first_order_model.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+class RelevantDomain : public QuantifiersUtil
+{
+private:
+  class RDomain
+  {
+  public:
+    RDomain() : d_parent( NULL ) {}
+    void reset() { d_parent = NULL; d_terms.clear(); }
+    RDomain * d_parent;
+    std::vector< Node > d_terms;
+    void merge( RDomain * r );
+    void addTerm( Node t );
+    RDomain * getParent();
+    void removeRedundantTerms( QuantifiersEngine * qe );
+    bool hasTerm( Node n ) { return std::find( d_terms.begin(), d_terms.end(), n )!=d_terms.end(); }
+  };
+  std::map< Node, std::map< int, RDomain * > > d_rel_doms;
+  std::map< RDomain *, Node > d_rn_map;
+  std::map< RDomain *, int > d_ri_map;
+  QuantifiersEngine* d_qe;
+  FirstOrderModel* d_model;
+  void computeRelevantDomain( Node q, Node n, bool hasPol, bool pol );
+  void computeRelevantDomainOpCh( RDomain * rf, Node n );
+  bool d_is_computed;
+  
+  //what each literal does
+  class RDomainLit {
+  public:
+    RDomainLit() : d_merge(false){
+      d_rd[0] = NULL;
+      d_rd[1] = NULL;
+    }
+    ~RDomainLit(){}
+    bool d_merge;
+    RDomain * d_rd[2];
+    std::vector< Node > d_val;
+  };
+  std::map< bool, std::map< bool, std::map< Node, RDomainLit > > > d_rel_dom_lit;
+  void computeRelevantDomainLit( Node q, bool hasPol, bool pol, Node n );
+public:
+  RelevantDomain( QuantifiersEngine* qe, FirstOrderModel* m );
+  virtual ~RelevantDomain();
+  /* reset */
+  bool reset( Theory::Effort e );
+  /** identify */
+  std::string identify() const { return "RelevantDomain"; }
+  //compute the relevant domain
+  void compute();
+
+  RDomain * getRDomain( Node n, int i, bool getParent = true );
+};/* class RelevantDomain */
+
+
+}/* CVC4::theory::quantifiers namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__QUANTIFIERS__RELEVANT_DOMAIN_H */
diff --git a/src/theory/quantifiers/rewrite_engine.cpp b/src/theory/quantifiers/rewrite_engine.cpp
new file mode 100644
index 0000000..3e6b0ff
--- /dev/null
+++ b/src/theory/quantifiers/rewrite_engine.cpp
@@ -0,0 +1,300 @@
+/*********************                                                        */
+/*! \file rewrite_engine.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Rewrite engine module
+ **
+ ** This class manages rewrite rules for quantifiers
+ **/
+
+#include "theory/quantifiers/rewrite_engine.h"
+
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/inst_match_generator.h"
+#include "theory/quantifiers/model_engine.h"
+#include "theory/quantifiers/quant_conflict_find.h"
+#include "theory/quantifiers/quant_util.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/theory_engine.h"
+
+using namespace CVC4;
+using namespace std;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+using namespace CVC4::kind;
+
+struct PrioritySort {
+  std::vector< double > d_priority;
+  bool operator() (int i,int j) {
+    return d_priority[i] < d_priority[j];
+  }
+};
+
+
+RewriteEngine::RewriteEngine( context::Context* c, QuantifiersEngine* qe ) : QuantifiersModule(qe) {
+  d_needsSort = false;
+}
+
+double RewriteEngine::getPriority( Node f ) {
+  Node rr = TermDb::getRewriteRule( f );
+  Node rrr = rr[2];
+  Trace("rr-priority") << "Get priority : " << rrr << " " << rrr.getKind() << std::endl;
+  bool deterministic = rrr[1].getKind()!=OR;
+
+  if( rrr.getKind()==RR_REWRITE ){
+    return deterministic ? 0.0 : 3.0;
+  }else if( rrr.getKind()==RR_DEDUCTION ){
+    return deterministic ? 1.0 : 4.0;
+  }else if( rrr.getKind()==RR_REDUCTION ){
+    return deterministic ? 2.0 : 5.0;
+  }else{
+    return 6.0;
+  }
+
+  //return deterministic ? 0.0 : 1.0;
+}
+
+bool RewriteEngine::needsCheck( Theory::Effort e ){
+  return e==Theory::EFFORT_FULL;
+  //return e>=Theory::EFFORT_LAST_CALL;
+}
+
+void RewriteEngine::check( Theory::Effort e, unsigned quant_e ) {
+  if( quant_e==QuantifiersEngine::QEFFORT_STANDARD ){
+    Assert( !d_quantEngine->inConflict() );
+    Trace("rewrite-engine") << "---Rewrite Engine Round, effort = " << e << "---" << std::endl;
+    //if( e==Theory::EFFORT_LAST_CALL ){
+    //  if( !d_quantEngine->getModel()->isModelSet() ){
+    //    d_quantEngine->getTheoryEngine()->getModelBuilder()->buildModel( d_quantEngine->getModel(), true );
+    //  }
+    //}
+    if( d_needsSort ){
+      d_priority_order.clear();
+      PrioritySort ps;
+      std::vector< int > indicies;
+      for( int i=0; i<(int)d_rr_quant.size(); i++ ){
+        ps.d_priority.push_back( getPriority( d_rr_quant[i] ) );
+        indicies.push_back( i );
+      }
+      std::sort( indicies.begin(), indicies.end(), ps );
+      for( unsigned i=0; i<indicies.size(); i++ ){
+        d_priority_order.push_back( d_rr_quant[indicies[i]] );
+      }
+      d_needsSort = false;
+    }
+
+    //apply rewrite rules
+    int addedLemmas = 0;
+    //per priority level
+    int index = 0;
+    bool success = true;
+    while( !d_quantEngine->inConflict() && success && index<(int)d_priority_order.size() ) {
+      addedLemmas += checkRewriteRule( d_priority_order[index], e );
+      index++;
+      if( index<(int)d_priority_order.size() ){
+        success = addedLemmas==0 || getPriority( d_priority_order[index] )==getPriority( d_priority_order[index-1] );
+      }
+    }
+
+    Trace("rewrite-engine") << "Finished rewrite engine, added " << addedLemmas << " lemmas." << std::endl;
+  }
+}
+
+int RewriteEngine::checkRewriteRule( Node f, Theory::Effort e ) {
+  int addedLemmas = 0;
+  Trace("rewrite-engine-inst") << "Check " << d_qinfo_n[f] << ", priority = " << getPriority( f ) << ", effort = " << e << "..." << std::endl;
+  QuantConflictFind * qcf = d_quantEngine->getConflictFind();
+  if( qcf ){
+    //reset QCF module
+    qcf->computeRelevantEqr();
+    qcf->setEffort( QuantConflictFind::effort_conflict );
+    //get the proper quantifiers info
+    std::map< Node, QuantInfo >::iterator it = d_qinfo.find( f );
+    if( it!=d_qinfo.end() ){
+      QuantInfo * qi = &it->second;
+      if( qi->matchGeneratorIsValid() ){
+        Node rr = TermDb::getRewriteRule( f );
+        Trace("rewrite-engine-inst-debug") << "   Reset round..." << std::endl;
+        qi->reset_round( qcf );
+        Trace("rewrite-engine-inst-debug") << "   Get matches..." << std::endl;
+        while( !d_quantEngine->inConflict() && qi->getNextMatch( qcf ) &&
+               ( addedLemmas==0 || !options::rrOneInstPerRound() ) ){
+          Trace("rewrite-engine-inst-debug") << "   Got match to complete..." << std::endl;
+          qi->debugPrintMatch( "rewrite-engine-inst-debug" );
+          std::vector< int > assigned;
+          if( !qi->isMatchSpurious( qcf ) ){
+            bool doContinue = false;
+            bool success = true;
+            int tempAddedLemmas = 0;
+            while( !d_quantEngine->inConflict() && tempAddedLemmas==0 && success && ( addedLemmas==0 || !options::rrOneInstPerRound() ) ){
+              success = qi->completeMatch( qcf, assigned, doContinue );
+              doContinue = true;
+              if( success ){
+                Trace("rewrite-engine-inst-debug") << "   Construct match..." << std::endl;
+                std::vector< Node > inst;
+                qi->getMatch( inst );
+                Trace("rewrite-engine-inst-debug") << "   Add instantiation..." << std::endl;
+                for( unsigned i=0; i<f[0].getNumChildren(); i++ ){
+                  Trace("rewrite-engine-inst-debug") << "  " << f[0][i] << " -> ";
+                  if( i<inst.size() ){
+                    Trace("rewrite-engine-inst-debug") << inst[i] << std::endl;
+                  }else{
+                    Trace("rewrite-engine-inst-debug") << "OUT_OF_RANGE" << std::endl;
+                    Assert( false );
+                  }
+                }
+                //resize to remove auxiliary variables
+                if( inst.size()>f[0].getNumChildren() ){
+                  inst.resize( f[0].getNumChildren() );
+                }
+                if( d_quantEngine->addInstantiation( f, inst ) ){
+                  addedLemmas++;
+                  tempAddedLemmas++;
+                  /*
+                  //remove rewritten terms from consideration
+                  std::vector< Node > to_remove;
+                  switch( rr[2].getKind() ){
+                  case kind::RR_REWRITE:
+                    to_remove.push_back( rr[2][0] );
+                    break;
+                  case kind::RR_REDUCTION:
+                    for( unsigned i=0; i<rr[2][0].getNumChildren(); i++ ){
+                      to_remove.push_back( rr[2][0][i] );
+                    }
+                    break;
+                  default:
+                    break;
+                  }
+                  for( unsigned j=0; j<to_remove.size(); j++ ){
+                    Node ns = d_quantEngine->getSubstitute( to_remove[j], inst );
+                    Trace("rewrite-engine-inst-debug") << "Will remove : " << ns << std::endl;
+                    d_quantEngine->getTermDatabase()->setTermInactive( ns );
+                  }
+                  */
+                }else{
+                  Trace("rewrite-engine-inst-debug") << "   - failed." << std::endl;
+                }
+                Trace("rewrite-engine-inst-debug") << "   Get next completion..." << std::endl;
+              }
+            }
+            //Trace("rewrite-engine-inst-debug") << "   Reverted assigned variables : ";
+            //for( unsigned a=0; a<assigned.size(); a++ ) {
+            //  Trace("rewrite-engine-inst-debug") << assigned[a] << " ";
+            //}
+            //Trace("rewrite-engine-inst-debug") << std::endl;
+            //qi->revertMatch( assigned );
+            //Assert( assigned.empty() );
+            Trace("rewrite-engine-inst-debug") << "   - failed to complete." << std::endl;
+          }else{
+            Trace("rewrite-engine-inst-debug") << "   - match is spurious." << std::endl;
+          }
+          Trace("rewrite-engine-inst-debug") << "   Get next match..." << std::endl;
+        }
+      }else{
+        Trace("rewrite-engine-inst-debug") << "...Invalid qinfo." << std::endl;
+      }
+    }else{
+      Trace("rewrite-engine-inst-debug") << "...No qinfo." << std::endl;
+    }
+  }
+  d_quantEngine->d_statistics.d_instantiations_rr += addedLemmas;
+  Trace("rewrite-engine-inst") << "-> Generated " << addedLemmas << " lemmas." << std::endl;
+  return addedLemmas;
+}
+
+void RewriteEngine::registerQuantifier( Node f ) {
+  Node rr = TermDb::getRewriteRule( f );
+  if( !rr.isNull() ){
+    Trace("rr-register") << "Register quantifier " << f << std::endl;
+    Trace("rr-register") << "  rewrite rule is : " << rr << std::endl;
+    d_rr_quant.push_back( f );
+    d_rr[f] = rr;
+    d_needsSort = true;
+    Trace("rr-register") << "  guard is : " << d_rr[f][1] << std::endl;
+
+    QuantConflictFind * qcf = d_quantEngine->getConflictFind();
+    if( qcf ){
+      std::vector< Node > qcfn_c;
+
+      std::vector< Node > bvl;
+      for( unsigned i=0; i<f[0].getNumChildren(); i++ ){
+        bvl.push_back( f[0][i] );
+      }
+
+      std::vector< Node > cc;
+      //add patterns
+      for( unsigned i=1; i<f[2].getNumChildren(); i++ ){
+        std::vector< Node > nc;
+        for( unsigned j=0; j<f[2][i].getNumChildren(); j++ ){
+          Node nn;
+          Node nbv = NodeManager::currentNM()->mkBoundVar( f[2][i][j].getType() );
+          if( f[2][i][j].getType().isBoolean() && f[2][i][j].getKind()!=APPLY_UF ){
+            nn = f[2][i][j].negate();
+          }else{
+            nn = f[2][i][j].eqNode( nbv ).negate();
+            bvl.push_back( nbv );
+          }
+          nc.push_back( nn );
+        }
+        if( !nc.empty() ){
+          Node n = nc.size()==1 ? nc[0] : NodeManager::currentNM()->mkNode( AND, nc );
+          Trace("rr-register-debug") << "  pattern is " << n << std::endl;
+          if( std::find( cc.begin(), cc.end(), n )==cc.end() ){
+            cc.push_back( n );
+          }
+        }
+      }
+      qcfn_c.push_back( NodeManager::currentNM()->mkNode( BOUND_VAR_LIST, bvl ) );
+
+      std::vector< Node > body_c;
+      //add the guards
+      if( d_rr[f][1].getKind()==AND ){
+        for( unsigned j=0; j<d_rr[f][1].getNumChildren(); j++ ){
+          if( MatchGen::isHandled( d_rr[f][1][j] ) ){
+            body_c.push_back( d_rr[f][1][j].negate() );
+          }
+        }
+      }else if( d_rr[f][1]!=d_quantEngine->getTermDatabase()->d_true ){
+        if( MatchGen::isHandled( d_rr[f][1] ) ){
+          body_c.push_back( d_rr[f][1].negate() );
+        }
+      }
+      //add the patterns to the body
+      body_c.push_back( cc.size()==1 ? cc[0] : NodeManager::currentNM()->mkNode( AND, cc ) );
+      //make the body
+      qcfn_c.push_back( body_c.size()==1 ? body_c[0] : NodeManager::currentNM()->mkNode( OR, body_c ) );
+      //make the quantified formula
+      d_qinfo_n[f] = NodeManager::currentNM()->mkNode( FORALL, qcfn_c );
+      Trace("rr-register") << "  qcf formula is : " << d_qinfo_n[f] << std::endl;
+      d_qinfo[f].initialize( qcf, d_qinfo_n[f], d_qinfo_n[f][1] );
+    }
+  }
+}
+
+void RewriteEngine::assertNode( Node n ) {
+
+}
+
+bool RewriteEngine::checkCompleteFor( Node q ) { 
+  // by semantics of rewrite rules, saturation -> SAT 
+  return std::find( d_rr_quant.begin(), d_rr_quant.end(), q )!=d_rr_quant.end();
+}
+
+Node RewriteEngine::getInstConstNode( Node n, Node q ) {
+  std::map< Node, Node >::iterator it = d_inst_const_node[q].find( n );
+  if( it==d_inst_const_node[q].end() ){
+    Node nn = d_quantEngine->getTermDatabase()->getInstConstantNode( n, q );
+    d_inst_const_node[q][n] = nn;
+    return nn;
+  }else{
+    return it->second;
+  }
+}
diff --git a/src/theory/quantifiers/rewrite_engine.h b/src/theory/quantifiers/rewrite_engine.h
new file mode 100644
index 0000000..ef3337e
--- /dev/null
+++ b/src/theory/quantifiers/rewrite_engine.h
@@ -0,0 +1,68 @@
+/*********************                                                        */
+/*! \file rewrite_engine.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+**/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__REWRITE_ENGINE_H
+#define __CVC4__REWRITE_ENGINE_H
+
+#include "context/cdchunk_list.h"
+#include "context/context.h"
+#include "context/context_mm.h"
+#include "theory/quantifiers/trigger.h"
+#include "theory/quantifiers/quant_conflict_find.h"
+#include "theory/quantifiers_engine.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+class RewriteEngine : public QuantifiersModule
+{
+  typedef context::CDHashMap<Node, bool, NodeHashFunction> NodeBoolMap;
+  typedef context::CDHashMap<Node, int, NodeHashFunction> NodeIntMap;
+  typedef context::CDHashMap<Node, Node, NodeHashFunction> NodeNodeMap;
+  std::vector< Node > d_rr_quant;
+  std::vector< Node > d_priority_order;
+  std::map< Node, Node > d_rr;
+  /** explicitly provided patterns */
+  std::map< Node, std::vector< inst::Trigger* > > d_rr_triggers;
+  /** get the quantifer info object */
+  std::map< Node, Node > d_qinfo_n;
+  std::map< Node, QuantInfo > d_qinfo;
+  double getPriority( Node f );
+  bool d_needsSort;
+  std::map< Node, std::map< Node, Node > > d_inst_const_node;
+  Node getInstConstNode( Node n, Node q );
+private:
+  int checkRewriteRule( Node f, Theory::Effort e );
+public:
+  RewriteEngine( context::Context* c, QuantifiersEngine* qe );
+  ~RewriteEngine() throw() {}
+
+  bool needsCheck( Theory::Effort e );
+  void check( Theory::Effort e, unsigned quant_e );
+  void registerQuantifier( Node f );
+  void assertNode( Node n );
+  bool checkCompleteFor( Node q );
+  /** Identify this module */
+  std::string identify() const { return "RewriteEngine"; }
+};
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/symmetry_breaking.cpp b/src/theory/quantifiers/symmetry_breaking.cpp
new file mode 100644
index 0000000..2a2b135
--- /dev/null
+++ b/src/theory/quantifiers/symmetry_breaking.cpp
@@ -0,0 +1,316 @@
+/*********************                                                        */
+/*! \file symmetry_breaking.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief symmetry breaking module
+ **
+ **/
+
+#include "theory/quantifiers/symmetry_breaking.h"
+
+#include <vector>
+
+#include "theory/quantifiers_engine.h"
+#include "theory/rewriter.h"
+#include "theory/sort_inference.h"
+#include "theory/theory_engine.h"
+#include "theory/uf/theory_uf.h"
+#include "theory/uf/theory_uf_strong_solver.h"
+
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::theory;
+using namespace std;
+
+namespace CVC4 {
+
+
+SubsortSymmetryBreaker::SubsortSymmetryBreaker(QuantifiersEngine* qe, context::Context* c) :
+d_qe(qe), d_conflict(c,false) {
+  d_true =  NodeManager::currentNM()->mkConst( true );
+}
+
+eq::EqualityEngine * SubsortSymmetryBreaker::getEqualityEngine() {
+  return ((uf::TheoryUF*)d_qe->getTheoryEngine()->theoryOf( theory::THEORY_UF ))->getEqualityEngine();
+}
+
+bool SubsortSymmetryBreaker::areEqual( Node n1, Node n2 ) {
+  return getEqualityEngine()->hasTerm( n1 ) && getEqualityEngine()->hasTerm( n2 ) && getEqualityEngine()->areEqual( n1,n2 );
+}
+
+bool SubsortSymmetryBreaker::areDisequal( Node n1, Node n2 ) {
+  return getEqualityEngine()->hasTerm( n1 ) && getEqualityEngine()->hasTerm( n2 ) && getEqualityEngine()->areDisequal( n1,n2, false );
+}
+
+
+Node SubsortSymmetryBreaker::getRepresentative( Node n ) {
+  return getEqualityEngine()->getRepresentative( n );
+}
+
+uf::StrongSolverTheoryUF * SubsortSymmetryBreaker::getStrongSolver() {
+  return ((uf::TheoryUF*)d_qe->getTheoryEngine()->theoryOf( theory::THEORY_UF ))->getStrongSolver();
+}
+
+SubsortSymmetryBreaker::TypeInfo::TypeInfo( context::Context * c ) :
+d_max_dom_const_sort(c,0), d_has_dom_const_sort(c,false) {
+}
+
+SubsortSymmetryBreaker::SubSortInfo::SubSortInfo( context::Context * c ) :
+d_dom_constants( c ), d_first_active( c, 0 ){
+  d_dc_nodes = 0;
+}
+
+unsigned SubsortSymmetryBreaker::SubSortInfo::getNumDomainConstants() {
+  if( d_nodes.empty() ){
+    return 0;
+  }else{
+    return 1 + d_dom_constants.size();
+  }
+}
+
+Node SubsortSymmetryBreaker::SubSortInfo::getDomainConstant( int i ) {
+  if( i==0 ){
+    return d_nodes[0];
+  }else{
+    Assert( i<=(int)d_dom_constants.size() );
+    return d_dom_constants[i-1];
+  }
+}
+
+Node SubsortSymmetryBreaker::SubSortInfo::getFirstActive(eq::EqualityEngine * ee) {
+  if( d_first_active.get()<(int)d_nodes.size() ){
+    Node fa = d_nodes[d_first_active.get()];
+    return ee->hasTerm( fa ) ? fa : Node::null();
+  }else{
+    return Node::null();
+  }
+}
+
+SubsortSymmetryBreaker::TypeInfo * SubsortSymmetryBreaker::getTypeInfo( TypeNode tn ) {
+  if( d_t_info.find( tn )==d_t_info.end() ){
+    d_t_info[tn] = new TypeInfo( d_qe->getSatContext() );
+  }
+  return d_t_info[tn];
+}
+
+SubsortSymmetryBreaker::SubSortInfo * SubsortSymmetryBreaker::getSubSortInfo( TypeNode tn, int sid ) {
+  if( d_type_info.find( sid )==d_type_info.end() ){
+    d_type_info[sid] = new SubSortInfo( d_qe->getSatContext() );
+    d_sub_sorts[tn].push_back( sid );
+    d_sid_to_type[sid] = tn;
+  }
+  return d_type_info[sid];
+}
+
+void SubsortSymmetryBreaker::newEqClass( Node n ) {
+  Trace("sym-break-temp") << "New eq class " << n << std::endl;
+  if( !d_conflict ){
+    TypeNode tn = n.getType();
+    SortInference * si = d_qe->getTheoryEngine()->getSortInference();
+    if( si->isWellSorted( n ) ){
+      int sid = si->getSortId( n );
+      Trace("sym-break-debug") << "SSB: New eq class " << n << " : " << n.getType() << " : " << sid << std::endl;
+      SubSortInfo * ti = getSubSortInfo( tn, sid );
+      if( std::find( ti->d_nodes.begin(), ti->d_nodes.end(), n )==ti->d_nodes.end() ){
+        if( ti->d_nodes.empty() ){
+          //for first subsort, we add unit equality
+          if( d_sub_sorts[tn][0]!=sid ){
+            Trace("sym-break-temp") << "Do sym break unit with " << d_type_info[d_sub_sorts[tn][0]]->getBaseConstant() << std::endl;
+            //add unit symmetry breaking lemma
+            Node eq = n.eqNode( d_type_info[d_sub_sorts[tn][0]]->getBaseConstant() );
+            eq = Rewriter::rewrite( eq );
+            d_unit_lemmas.push_back( eq );
+            Trace("sym-break-lemma") << "*** SymBreak : Unit lemma (" << sid << "==" << d_sub_sorts[tn][0] << ") : " << eq << std::endl;
+            d_pending_lemmas.push_back( eq );
+          }
+          Trace("sym-break-dc") << "* Set first domain constant : " << n << " for " << tn << " : " << sid << std::endl;
+          ti->d_dc_nodes++;
+        }
+        ti->d_node_to_id[n] = ti->d_nodes.size();
+        ti->d_nodes.push_back( n );
+      }
+      TypeInfo * tti = getTypeInfo( tn );
+      if( !tti->d_has_dom_const_sort.get() ){
+        tti->d_has_dom_const_sort.set( true );
+        tti->d_max_dom_const_sort.set( sid );
+      }
+    }
+  }
+  Trace("sym-break-temp") << "Done new eq class" << std::endl;
+}
+
+
+
+void SubsortSymmetryBreaker::merge( Node a, Node b ) {
+  if( Trace.isOn("sym-break-debug") ){
+    SortInference * si = d_qe->getTheoryEngine()->getSortInference();
+    int as = si->getSortId( a );
+    int bs = si->getSortId( b );
+    Trace("sym-break-debug") << "SSB: New merge " << a.getType() << " :: " << a << " : " << as;
+    Trace("sym-break-debug") << " == " << b << " : " << bs << std::endl;
+  }
+}
+
+void SubsortSymmetryBreaker::assertDisequal( Node a, Node b ) {
+  if( Trace.isOn("sym-break-debug") ){
+    SortInference * si = d_qe->getTheoryEngine()->getSortInference();
+    int as = si->getSortId( a );
+    int bs = si->getSortId( b );
+    Trace("sym-break-debug") << "SSB: New assert disequal " << a.getType() << " :: " << a << " : " << as;
+    Trace("sym-break-debug") << " != " << b << " : " << bs << std::endl;
+  }
+}
+
+void SubsortSymmetryBreaker::processFirstActive( TypeNode tn, int sid, int curr_card ){
+  SubSortInfo * ti = getSubSortInfo( tn, sid );
+  if( (int)ti->getNumDomainConstants()<curr_card ){
+      //static int checkCount = 0;
+      //checkCount++;
+      //if( checkCount%1000==0 ){
+      //  std::cout << "Check count = " << checkCount << std::endl;
+      //}
+
+    Trace("sym-break-dc-debug") << "Check for domain constants " << tn << " : " << sid << ", curr_card = " << curr_card << ", ";
+    Trace("sym-break-dc-debug") << "#domain constants = " << ti->getNumDomainConstants() << std::endl;
+    Node fa = ti->getFirstActive(getEqualityEngine());
+    bool invalid = true;
+    while( invalid && !fa.isNull() && (int)ti->getNumDomainConstants()<curr_card ){
+      invalid = false;
+      unsigned deq = 0;
+      for( unsigned i=0; i<ti->getNumDomainConstants(); i++ ){
+        Node dc = ti->getDomainConstant( i );
+        if( areEqual( fa, dc ) ){
+          invalid = true;
+          break;
+        }else if( areDisequal( fa, dc ) ){
+          deq++;
+        }
+      }
+      if( deq==ti->getNumDomainConstants() ){
+        Trace("sym-break-dc") << "* Can infer domain constant #" << ti->getNumDomainConstants()+1;
+        Trace("sym-break-dc") << " : " << fa << " for " << tn << " : " << sid << std::endl;
+        //add to domain constants
+        ti->d_dom_constants.push_back( fa );
+        if( ti->d_node_to_id[fa]>ti->d_dc_nodes ){
+          Trace("sym-break-dc-debug") << "Swap nodes... " << ti->d_dc_nodes << " " << ti->d_node_to_id[fa] << " " << ti->d_nodes.size() << std::endl;
+          //swap
+          Node on = ti->d_nodes[ti->d_dc_nodes];
+          int id = ti->d_node_to_id[fa];
+
+          ti->d_nodes[ti->d_dc_nodes] = fa;
+          ti->d_nodes[id] = on;
+          ti->d_node_to_id[fa] = ti->d_dc_nodes;
+          ti->d_node_to_id[on] = id;
+        }
+        ti->d_dc_nodes++;
+        Trace("sym-break-dc-debug") << "Get max type info..." << std::endl;
+        TypeInfo * tti = getTypeInfo( tn );
+        Assert( tti->d_has_dom_const_sort.get() );
+        int msid = tti->d_max_dom_const_sort.get();
+        SubSortInfo * max_ti = getSubSortInfo( d_sid_to_type[msid], msid );
+        Trace("sym-break-dc-debug") << "Swap nodes..." << std::endl;
+        //now, check if we can apply symmetry breaking to another sort
+        if( ti->getNumDomainConstants()>max_ti->getNumDomainConstants() ){
+          Trace("sym-break-dc") << "Max domain constant subsort for " << tn << " becomes " << sid << std::endl;
+          tti->d_max_dom_const_sort.set( sid );
+        }else if( ti!=max_ti ){
+          //construct symmetry breaking lemma
+          //current domain constant must be disequal from all current ones
+          Trace("sym-break-dc") << "Get domain constant " << ti->getNumDomainConstants()-1;
+          Trace("sym-break-dc") << " from max_ti, " << max_ti->getNumDomainConstants() << std::endl;
+          //apply a symmetry breaking lemma
+          Node m = max_ti->getDomainConstant(ti->getNumDomainConstants()-1);
+          //if fa and m are disequal from all previous domain constants in the other sort
+          std::vector< Node > cc;
+          for( unsigned r=0; r<2; r++ ){
+            Node n = ((r==0)==(msid>sid)) ? fa : m;
+            Node on = ((r==0)==(msid>sid)) ? m : fa;
+            SubSortInfo * t = ((r==0)==(msid>sid)) ? max_ti : ti;
+            for( unsigned i=0; i<t->d_node_to_id[on]; i++ ){
+              cc.push_back( n.eqNode( t->d_nodes[i] ) );
+            }
+          }
+          //then, we can assume fa = m
+          cc.push_back( fa.eqNode( m ) );
+          Node lem = NodeManager::currentNM()->mkNode( kind::OR, cc );
+          lem = Rewriter::rewrite( lem );
+          if( std::find( d_lemmas.begin(), d_lemmas.end(), lem )==d_lemmas.end() ){
+            d_lemmas.push_back( lem );
+            Trace("sym-break-lemma") << "*** Symmetry break lemma for " << tn << " (" << sid << "==" << tti->d_max_dom_const_sort.get() << ") : ";
+            Trace("sym-break-lemma") << lem << std::endl;
+            d_pending_lemmas.push_back( lem );
+          }
+        }
+        invalid = true;
+      }
+      if( invalid ){
+        ti->d_first_active.set( ti->d_first_active + 1 );
+        fa = ti->getFirstActive(getEqualityEngine());
+      }
+    }
+  }
+}
+
+void SubsortSymmetryBreaker::printDebugSubSortInfo( const char * c, TypeNode tn, int sid ) {
+  Trace(c) << "SubSortInfo( " << tn << ", " << sid << " ) = " << std::endl;
+  Trace(c) << "  Domain constants : ";
+  SubSortInfo * ti = getSubSortInfo( tn, sid );
+  for( NodeList::const_iterator it = ti->d_dom_constants.begin(); it != ti->d_dom_constants.end(); ++it ){
+    Node dc = *it;
+    Trace(c) << dc << " ";
+  }
+  Trace(c) << std::endl;
+  Trace(c) << "  First active node : " << ti->getFirstActive(getEqualityEngine()) << std::endl;
+}
+
+bool SubsortSymmetryBreaker::check( Theory::Effort level ) {
+
+  Trace("sym-break-debug") << "SymBreak : check " << level << std::endl;
+  /*
+  while( d_fact_index.get()<d_fact_list.size() ){
+    Node f = d_fact_list[d_fact_index.get()];
+    d_fact_index.set( d_fact_index.get() + 1 );
+    if( f.getKind()==EQUAL ){
+      merge( f[0], f[1] );
+    }else if( f.getKind()==NOT && f[0].getKind()==EQUAL ){
+      assertDisequal( f[0][0], f[0][1] );
+    }else{
+      newEqClass( f );
+    }
+  }
+  */
+  Trace("sym-break-debug") << "SymBreak : update first actives" << std::endl;
+  for( std::map< TypeNode, std::vector< int > >::iterator it = d_sub_sorts.begin(); it != d_sub_sorts.end(); ++it ){
+    int card = getStrongSolver()->getCardinality( it->first );
+    for( unsigned i=0; i<it->second.size(); i++ ){
+      //check if the first active is disequal from all domain constants
+      processFirstActive( it->first, it->second[i], card );
+    }
+  }
+
+
+  Trace("sym-break-debug") << "SymBreak : finished check, now flush lemmas... (#lemmas = " << d_pending_lemmas.size() << ")" << std::endl;
+  //flush pending lemmas
+  if( !d_pending_lemmas.empty() ){
+    for( unsigned i=0; i<d_pending_lemmas.size(); i++ ){
+      getStrongSolver()->getOutputChannel().lemma( d_pending_lemmas[i], false, true );
+      ++( getStrongSolver()->d_statistics.d_sym_break_lemmas );
+    }
+    d_pending_lemmas.clear();
+    return true;
+  }else{
+    return false;
+  }
+}
+
+
+
+}
+
diff --git a/src/theory/quantifiers/symmetry_breaking.h b/src/theory/quantifiers/symmetry_breaking.h
new file mode 100644
index 0000000..e682955
--- /dev/null
+++ b/src/theory/quantifiers/symmetry_breaking.h
@@ -0,0 +1,116 @@
+/*********************                                                        */
+/*! \file symmetry_breaking.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Pre-process step for first-order reasoning
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__QUANT_SYMMETRY_BREAKING_H
+#define __CVC4__QUANT_SYMMETRY_BREAKING_H
+
+#include <iostream>
+#include <map>
+#include <string>
+#include <vector>
+
+#include "context/cdchunk_list.h"
+#include "context/cdhashmap.h"
+#include "context/context.h"
+#include "context/context_mm.h"
+#include "expr/node.h"
+#include "expr/type_node.h"
+#include "theory/sort_inference.h"
+#include "theory/theory.h"
+
+namespace CVC4 {
+namespace theory {
+
+namespace uf {
+  class StrongSolverTheoryUF;
+}
+
+class SubsortSymmetryBreaker {
+  typedef context::CDHashMap<Node, bool, NodeHashFunction> NodeBoolMap;
+  typedef context::CDHashMap<Node, int, NodeHashFunction> NodeIntMap;
+  typedef context::CDHashMap<Node, Node, NodeHashFunction> NodeNodeMap;
+  typedef context::CDList<Node> NodeList;
+private:
+  /** quantifiers engine */
+  QuantifiersEngine* d_qe;
+  eq::EqualityEngine * getEqualityEngine();
+  bool areDisequal( Node n1, Node n2 );
+  bool areEqual( Node n1, Node n2 );
+  Node getRepresentative( Node n );
+  uf::StrongSolverTheoryUF * getStrongSolver();
+  std::vector< Node > d_unit_lemmas;
+  Node d_true;
+  context::CDO< bool > d_conflict;
+public:
+  SubsortSymmetryBreaker( QuantifiersEngine* qe, context::Context* c );
+  ~SubsortSymmetryBreaker(){}
+
+private:
+  class TypeInfo {
+  public:
+    TypeInfo( context::Context* c );
+    context::CDO< int > d_max_dom_const_sort;
+    context::CDO< bool > d_has_dom_const_sort;
+  };
+  class SubSortInfo {
+  public:
+    SubSortInfo( context::Context* c );
+    //list of all nodes from this (sub)type
+    std::vector< Node > d_nodes;
+    //the current domain constants for this (sub)type
+    NodeList d_dom_constants;
+    //# nodes in d_nodes that have been domain constants, size of this distinct # of domain constants seen
+    unsigned d_dc_nodes;
+    //the node we are currently watching to become a domain constant
+    context::CDO< int > d_first_active;
+    //node to id
+    std::map< Node, unsigned > d_node_to_id;
+    Node getBaseConstant() { return d_nodes.empty() ? Node::null() : d_nodes[0]; }
+    bool hasDomainConstant( Node n );
+    unsigned getNumDomainConstants();
+    Node getDomainConstant( int i );
+    Node getFirstActive(eq::EqualityEngine * ee);
+  };
+  std::map< TypeNode, std::vector< int > > d_sub_sorts;
+  std::map< int, TypeNode > d_sid_to_type;
+  std::map< TypeNode, TypeInfo * > d_t_info;
+  std::map< int, SubSortInfo * > d_type_info;
+
+  TypeInfo * getTypeInfo( TypeNode tn );
+  SubSortInfo * getSubSortInfo( TypeNode tn, int sid );
+
+  void processFirstActive( TypeNode tn, int sid, int curr_card );
+private:
+  //void printDebugNodeInfo( const char * c, Node n );
+  void printDebugSubSortInfo( const char * c, TypeNode tn, int sid );
+  /** fact list */
+  std::vector< Node > d_pending_lemmas;
+  std::vector< Node > d_lemmas;
+public:
+  /** new node */
+  void newEqClass( Node n );
+  /** merge */
+  void merge( Node a, Node b );
+  /** assert disequal */
+  void assertDisequal( Node a, Node b );
+  /** check */
+  bool check( Theory::Effort level );
+};
+
+}
+}
+
+#endif
diff --git a/src/theory/quantifiers/term_database.cpp b/src/theory/quantifiers/term_database.cpp
new file mode 100644
index 0000000..d394c8f
--- /dev/null
+++ b/src/theory/quantifiers/term_database.cpp
@@ -0,0 +1,3322 @@
+/*********************                                                        */
+/*! \file term_database.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Francois Bobot, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of term databse class
+ **/
+
+#include "theory/quantifiers/term_database.h"
+
+#include "expr/datatype.h"
+#include "options/base_options.h"
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/ce_guided_instantiation.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/fun_def_engine.h"
+#include "theory/quantifiers/rewrite_engine.h"
+#include "theory/quantifiers/theory_quantifiers.h"
+#include "theory/quantifiers/trigger.h"
+#include "theory/quantifiers_engine.h"
+#include "theory/theory_engine.h"
+
+//for sygus
+#include "smt/smt_engine_scope.h"
+#include "theory/bv/theory_bv_utils.h"
+#include "util/bitvector.h"
+
+using namespace std;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory::inst;
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+TNode TermArgTrie::existsTerm( std::vector< TNode >& reps, int argIndex ) {
+  if( argIndex==(int)reps.size() ){
+    if( d_data.empty() ){
+      return Node::null();
+    }else{
+      return d_data.begin()->first;
+    }
+  }else{
+    std::map< TNode, TermArgTrie >::iterator it = d_data.find( reps[argIndex] );
+    if( it==d_data.end() ){
+      return Node::null();
+    }else{
+      return it->second.existsTerm( reps, argIndex+1 );
+    }
+  }
+}
+
+bool TermArgTrie::addTerm( TNode n, std::vector< TNode >& reps, int argIndex ){
+  return addOrGetTerm( n, reps, argIndex )==n;
+}
+
+TNode TermArgTrie::addOrGetTerm( TNode n, std::vector< TNode >& reps, int argIndex ) {
+  if( argIndex==(int)reps.size() ){
+    if( d_data.empty() ){
+      //store n in d_data (this should be interpretted as the "data" and not as a reference to a child)
+      d_data[n].clear();
+      return n;
+    }else{
+      return d_data.begin()->first;
+    }
+  }else{
+    return d_data[reps[argIndex]].addOrGetTerm( n, reps, argIndex+1 );
+  }
+}
+
+void TermArgTrie::debugPrint( const char * c, Node n, unsigned depth ) {
+  for( std::map< TNode, TermArgTrie >::iterator it = d_data.begin(); it != d_data.end(); ++it ){
+    for( unsigned i=0; i<depth; i++ ){ Trace(c) << "  "; }
+    Trace(c) << it->first << std::endl;
+    it->second.debugPrint( c, n, depth+1 );
+  }
+}
+
+TermDb::TermDb(context::Context* c, context::UserContext* u,
+               QuantifiersEngine* qe)
+    : d_quantEngine(qe),
+      d_inactive_map(c),
+      d_op_id_count(0),
+      d_typ_id_count(0),
+      d_sygus_tdb(NULL) {
+  d_consistent_ee = true;
+  d_true = NodeManager::currentNM()->mkConst(true);
+  d_false = NodeManager::currentNM()->mkConst(false);
+  d_zero = NodeManager::currentNM()->mkConst(Rational(0));
+  d_one = NodeManager::currentNM()->mkConst(Rational(1));
+  if (options::ceGuidedInst()) {
+    d_sygus_tdb = new TermDbSygus(c, qe);
+  }
+}
+TermDb::~TermDb(){
+  if(d_sygus_tdb) {
+    delete d_sygus_tdb;
+  }
+}
+
+/** ground terms */
+unsigned TermDb::getNumGroundTerms( Node f ) {
+  std::map< Node, std::vector< Node > >::iterator it = d_op_map.find( f );
+  if( it!=d_op_map.end() ){
+    return it->second.size();
+  }else{
+    return 0;
+  }
+}
+
+Node TermDb::getGroundTerm( Node f, unsigned i ) {
+  Assert( i<d_op_map[f].size() );
+  return d_op_map[f][i];
+}
+
+unsigned TermDb::getNumTypeGroundTerms( TypeNode tn ) {
+  std::map< TypeNode, std::vector< Node > >::iterator it = d_type_map.find( tn );
+  if( it!=d_type_map.end() ){
+    return it->second.size();
+  }else{
+    return 0;
+  }
+}
+
+Node TermDb::getTypeGroundTerm( TypeNode tn, unsigned i ) {
+  Assert( i<d_type_map[tn].size() );
+  return d_type_map[tn][i];
+}
+
+Node TermDb::getMatchOperator( Node n ) {
+  Kind k = n.getKind();
+  //datatype operators may be parametric, always assume they are
+  if( k==SELECT || k==STORE || k==UNION || k==INTERSECTION || k==SUBSET || k==SETMINUS || k==MEMBER || k==SINGLETON || 
+      k==APPLY_SELECTOR_TOTAL || k==APPLY_TESTER || k==SEP_PTO ){
+    //since it is parametric, use a particular one as op
+    TypeNode tn = n[0].getType();
+    Node op = n.getOperator();
+    std::map< Node, std::map< TypeNode, Node > >::iterator ito = d_par_op_map.find( op );
+    if( ito!=d_par_op_map.end() ){
+      std::map< TypeNode, Node >::iterator it = ito->second.find( tn );
+      if( it!=ito->second.end() ){
+        return it->second;
+      }
+    }
+    d_par_op_map[op][tn] = n;
+    return n;
+  }else if( inst::Trigger::isAtomicTriggerKind( k ) ){
+    return n.getOperator();
+  }else{
+    return Node::null();
+  }
+}
+
+void TermDb::addTerm( Node n, std::set< Node >& added, bool withinQuant, bool withinInstClosure ){
+  //don't add terms in quantifier bodies
+  if( withinQuant && !options::registerQuantBodyTerms() ){
+    return;
+  }else{
+    bool rec = false;
+    if( d_processed.find( n )==d_processed.end() ){
+      d_processed.insert(n);
+      if( !TermDb::hasInstConstAttr(n) ){
+        Trace("term-db-debug") << "register term : " << n << std::endl;
+        d_type_map[ n.getType() ].push_back( n );
+        //if this is an atomic trigger, consider adding it
+        if( inst::Trigger::isAtomicTrigger( n ) ){
+          Trace("term-db") << "register term in db " << n << std::endl;
+          if( options::finiteModelFind() ){
+            computeModelBasisArgAttribute( n );
+          }
+          
+          Node op = getMatchOperator( n );
+          Trace("term-db-debug") << "  match operator is : " << op << std::endl;
+          d_op_map[op].push_back( n );
+          added.insert( n );
+          
+          if( d_sygus_tdb ){
+            d_sygus_tdb->registerEvalTerm( n );
+          }
+        }
+      }else{
+        setTermInactive( n );
+      }
+      rec = true;
+    }
+    if( withinInstClosure && d_iclosure_processed.find( n )==d_iclosure_processed.end() ){
+      d_iclosure_processed.insert( n );
+      rec = true;
+    }
+    if( rec && n.getKind()!=FORALL ){
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        addTerm( n[i], added, withinQuant, withinInstClosure );
+      }
+    }
+  }
+}
+
+void TermDb::computeArgReps( TNode n ) {
+  if( d_arg_reps.find( n )==d_arg_reps.end() ){
+    eq::EqualityEngine * ee = d_quantEngine->getTheoryEngine()->getMasterEqualityEngine();
+    for( unsigned j=0; j<n.getNumChildren(); j++ ){
+      TNode r = ee->hasTerm( n[j] ) ? ee->getRepresentative( n[j] ) : n[j];
+      d_arg_reps[n].push_back( r );
+    }
+  }
+}
+
+void TermDb::computeUfEqcTerms( TNode f ) {
+  if( d_func_map_eqc_trie.find( f )==d_func_map_eqc_trie.end() ){
+    d_func_map_eqc_trie[f].clear();
+    eq::EqualityEngine * ee = d_quantEngine->getTheoryEngine()->getMasterEqualityEngine();
+    for( unsigned i=0; i<d_op_map[f].size(); i++ ){
+      TNode n = d_op_map[f][i];
+      if( hasTermCurrent( n ) ){
+        if( isTermActive( n ) ){
+          computeArgReps( n );
+          TNode r = ee->hasTerm( n ) ? ee->getRepresentative( n ) : n;
+          d_func_map_eqc_trie[f].d_data[r].addTerm( n, d_arg_reps[n] );
+        }
+      }
+    }
+  }
+}
+
+void TermDb::computeUfTerms( TNode f ) {
+  if( d_op_nonred_count.find( f )==d_op_nonred_count.end() ){
+    d_op_nonred_count[ f ] = 0;
+    std::map< Node, std::vector< Node > >::iterator it = d_op_map.find( f );
+    if( it!=d_op_map.end() ){
+      eq::EqualityEngine* ee = d_quantEngine->getMasterEqualityEngine();
+      Trace("term-db-debug") << "Adding terms for operator " << f << std::endl;
+      unsigned congruentCount = 0;
+      unsigned nonCongruentCount = 0;
+      unsigned alreadyCongruentCount = 0;
+      unsigned relevantCount = 0;
+      for( unsigned i=0; i<it->second.size(); i++ ){
+        Node n = it->second[i];
+        //to be added to term index, term must be relevant, and exist in EE
+        if( hasTermCurrent( n ) && ee->hasTerm( n ) ){
+          relevantCount++;
+          if( isTermActive( n ) ){
+            computeArgReps( n );
+
+            Trace("term-db-debug") << "Adding term " << n << " with arg reps : ";
+            for( unsigned i=0; i<d_arg_reps[n].size(); i++ ){
+              Trace("term-db-debug") << d_arg_reps[n][i] << " ";
+              if( std::find( d_func_map_rel_dom[f][i].begin(), 
+                             d_func_map_rel_dom[f][i].end(), d_arg_reps[n][i] ) == d_func_map_rel_dom[f][i].end() ){
+                d_func_map_rel_dom[f][i].push_back( d_arg_reps[n][i] );
+              }
+            }
+            Trace("term-db-debug") << std::endl;
+            Trace("term-db-debug") << "  and value : " << ee->getRepresentative( n ) << std::endl;
+            Node at = d_func_map_trie[ f ].addOrGetTerm( n, d_arg_reps[n] );
+            Trace("term-db-debug2") << "...add term returned " << at << std::endl;
+            if( at!=n && ee->areEqual( at, n ) ){
+              setTermInactive( n );
+              Trace("term-db-debug") << n << " is redundant." << std::endl;
+              congruentCount++;
+            }else{
+              if( at!=n && ee->areDisequal( at, n, false ) ){
+                std::vector< Node > lits;
+                lits.push_back( NodeManager::currentNM()->mkNode( EQUAL, at, n ) );
+                for( unsigned i=0; i<at.getNumChildren(); i++ ){
+                  if( at[i]!=n[i] ){
+                    lits.push_back( NodeManager::currentNM()->mkNode( EQUAL, at[i], n[i] ).negate() );
+                  }
+                }
+                Node lem = lits.size()==1 ? lits[0] : NodeManager::currentNM()->mkNode( OR, lits );
+                if( Trace.isOn("term-db-lemma") ){
+                  Trace("term-db-lemma") << "Disequal congruent terms : " << at << " " << n << "!!!!" << std::endl;
+                  if( !d_quantEngine->getTheoryEngine()->needCheck() ){
+                    Trace("term-db-lemma") << "  all theories passed with no lemmas." << std::endl;
+                  }
+                  Trace("term-db-lemma") << "  add lemma : " << lem << std::endl;
+                }
+                d_quantEngine->addLemma( lem );
+                d_consistent_ee = false;
+                return;
+              }
+              nonCongruentCount++;
+              d_op_nonred_count[ f ]++;
+            }
+          }else{
+            Trace("term-db-debug") << n << " is already redundant." << std::endl;
+            alreadyCongruentCount++;
+          }
+        }else{
+          Trace("term-db-debug") << n << " is not relevant." << std::endl;
+        }
+      }
+      if( Trace.isOn("tdb") ){
+        Trace("tdb") << "Term db size [" << f << "] : " << nonCongruentCount << " / ";
+        Trace("tdb") << ( nonCongruentCount + congruentCount ) << " / " << ( nonCongruentCount + congruentCount + alreadyCongruentCount ) << " / ";
+        Trace("tdb") << relevantCount << " / " << it->second.size() << std::endl;
+      }
+    }
+  }
+}
+
+bool TermDb::inRelevantDomain( TNode f, unsigned i, TNode r ) {
+  computeUfTerms( f );
+  Assert( d_quantEngine->getTheoryEngine()->getMasterEqualityEngine()->getRepresentative( r )==r );
+  std::map< Node, std::map< unsigned, std::vector< Node > > >::iterator it = d_func_map_rel_dom.find( f );
+  if( it != d_func_map_rel_dom.end() ){
+    std::map< unsigned, std::vector< Node > >::iterator it2 = it->second.find( i );
+    if( it2!=it->second.end() ){
+      return std::find( it2->second.begin(), it2->second.end(), r )!=it2->second.end();
+    }else{
+      return false;
+    }
+  }else{
+    return false;
+  }
+}
+
+//return a term n' equivalent to n
+//  maximal subterms of n' are representatives in the equality engine qy
+Node TermDb::evaluateTerm2( TNode n, std::map< TNode, Node >& visited, EqualityQuery * qy, bool useEntailmentTests ) {
+  std::map< TNode, Node >::iterator itv = visited.find( n );
+  if( itv != visited.end() ){
+    return itv->second;
+  }
+  Trace("term-db-eval") << "evaluate term : " << n << std::endl;
+  Node ret = n;
+  if( n.getKind()==FORALL || n.getKind()==BOUND_VARIABLE ){
+    //do nothing
+  }else if( !qy->hasTerm( n ) ){
+    //term is not known to be equal to a representative in equality engine, evaluate it
+    if( n.hasOperator() ){
+      TNode f = getMatchOperator( n );
+      std::vector< TNode > args;
+      bool ret_set = false;
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        TNode c = evaluateTerm2( n[i], visited, qy, useEntailmentTests );
+        if( c.isNull() ){
+          ret = Node::null();
+          ret_set = true;
+          break;
+        }else if( c==d_true || c==d_false ){
+          //short-circuiting
+          if( ( n.getKind()==kind::AND && c==d_false ) || ( n.getKind()==kind::OR && c==d_true ) ){
+            ret = c;
+            ret_set = true;
+            break;
+          }else if( n.getKind()==kind::ITE && i==0 ){
+            ret = evaluateTerm2( n[ c==d_true ? 1 : 2], visited, qy, useEntailmentTests ); 
+            ret_set = true;
+            break;
+          }
+        }
+        Trace("term-db-eval") << "  child " << i << " : " << c << std::endl;
+        args.push_back( c );
+      }
+      if( !ret_set ){
+        //if it is an indexed term, return the congruent term
+        if( !f.isNull() ){
+          TNode nn = qy->getCongruentTerm( f, args );
+          Trace("term-db-eval") << "  got congruent term " << nn << " from DB for " << n << std::endl;
+          if( !nn.isNull() ){
+            ret = qy->getRepresentative( nn );
+            Trace("term-db-eval") << "return rep" << std::endl;
+            ret_set = true;
+            Assert( !ret.isNull() );
+          }
+        }
+        if( !ret_set ){
+          Trace("term-db-eval") << "return rewrite" << std::endl;
+          //a theory symbol or a new UF term
+          if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+            args.insert( args.begin(), n.getOperator() );
+          }
+          ret = NodeManager::currentNM()->mkNode( n.getKind(), args );
+          ret = Rewriter::rewrite( ret );
+          if( ret.getKind()==kind::EQUAL ){
+            if( qy->areDisequal( ret[0], ret[1] ) ){
+              ret = d_false;
+            }
+          }
+          if( useEntailmentTests ){
+            if( ret.getKind()==kind::EQUAL || ret.getKind()==kind::GEQ ){
+              for( unsigned j=0; j<2; j++ ){
+                std::pair<bool, Node> et = d_quantEngine->getTheoryEngine()->entailmentCheck(THEORY_OF_TYPE_BASED, j==0 ? ret : ret.negate() );
+                if( et.first ){
+                  ret = j==0 ? d_true : d_false;
+                  break;
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }else{
+    Trace("term-db-eval") << "...exists in ee, return rep" << std::endl;
+    ret = qy->getRepresentative( n );
+  }
+  Trace("term-db-eval") << "evaluated term : " << n << ", got : " << ret << std::endl;
+  visited[n] = ret;
+  return ret;
+}
+
+
+TNode TermDb::getEntailedTerm2( TNode n, std::map< TNode, TNode >& subs, bool subsRep, bool hasSubs, EqualityQuery * qy ) {
+  Assert( !qy->extendsEngine() );
+  Trace("term-db-entail") << "get entailed term : " << n << std::endl;
+  if( qy->getEngine()->hasTerm( n ) ){
+    Trace("term-db-entail") << "...exists in ee, return rep " << std::endl;
+    return n;
+  }else if( n.getKind()==BOUND_VARIABLE ){
+    if( hasSubs ){
+      std::map< TNode, TNode >::iterator it = subs.find( n );
+      if( it!=subs.end() ){
+        Trace("term-db-entail") << "...substitution is : " << it->second << std::endl;
+        if( subsRep ){
+          Assert( qy->getEngine()->hasTerm( it->second ) );
+          Assert( qy->getEngine()->getRepresentative( it->second )==it->second );
+          return it->second;
+        }else{
+          return getEntailedTerm2( it->second, subs, subsRep, hasSubs, qy );
+        }
+      }
+    }
+  }else if( n.getKind()==ITE ){
+    for( unsigned i=0; i<2; i++ ){
+      if( isEntailed2( n[0], subs, subsRep, hasSubs, i==0, qy ) ){
+        return getEntailedTerm2( n[ i==0 ? 1 : 2 ], subs, subsRep, hasSubs, qy );
+      }
+    }
+  }else{
+    if( n.hasOperator() ){
+      TNode f = getMatchOperator( n );
+      if( !f.isNull() ){
+        std::vector< TNode > args;
+        for( unsigned i=0; i<n.getNumChildren(); i++ ){
+          TNode c = getEntailedTerm2( n[i], subs, subsRep, hasSubs, qy );
+          if( c.isNull() ){
+            return TNode::null();
+          }
+          c = qy->getEngine()->getRepresentative( c );
+          Trace("term-db-entail") << "  child " << i << " : " << c << std::endl;
+          args.push_back( c );
+        }
+        TNode nn = qy->getCongruentTerm( f, args );
+        Trace("term-db-entail") << "  got congruent term " << nn << " for " << n << std::endl;
+        return nn;
+      }
+    }
+  }
+  return TNode::null();
+}
+
+Node TermDb::evaluateTerm( TNode n, EqualityQuery * qy, bool useEntailmentTests ) {
+  if( qy==NULL ){
+    qy = d_quantEngine->getEqualityQuery();
+  }
+  std::map< TNode, Node > visited;
+  return evaluateTerm2( n, visited, qy, useEntailmentTests );
+}
+
+TNode TermDb::getEntailedTerm( TNode n, std::map< TNode, TNode >& subs, bool subsRep, EqualityQuery * qy ) {
+  if( qy==NULL ){
+    qy = d_quantEngine->getEqualityQuery();
+  }
+  return getEntailedTerm2( n, subs, subsRep, true, qy );
+}
+
+TNode TermDb::getEntailedTerm( TNode n, EqualityQuery * qy ) {
+  if( qy==NULL ){
+    qy = d_quantEngine->getEqualityQuery();
+  }
+  std::map< TNode, TNode > subs;
+  return getEntailedTerm2( n, subs, false, false, qy );
+}
+
+bool TermDb::isEntailed2( TNode n, std::map< TNode, TNode >& subs, bool subsRep, bool hasSubs, bool pol, EqualityQuery * qy ) {
+  Assert( !qy->extendsEngine() );
+  Trace("term-db-entail") << "Check entailed : " << n << ", pol = " << pol << std::endl;
+  Assert( n.getType().isBoolean() );
+  if( n.getKind()==EQUAL && !n[0].getType().isBoolean() ){
+    TNode n1 = getEntailedTerm2( n[0], subs, subsRep, hasSubs, qy );
+    if( !n1.isNull() ){
+      TNode n2 = getEntailedTerm2( n[1], subs, subsRep, hasSubs, qy );
+      if( !n2.isNull() ){
+        if( n1==n2 ){
+          return pol;
+        }else{
+          Assert( qy->getEngine()->hasTerm( n1 ) );
+          Assert( qy->getEngine()->hasTerm( n2 ) );
+          if( pol ){
+            return qy->getEngine()->areEqual( n1, n2 );
+          }else{
+            return qy->getEngine()->areDisequal( n1, n2, false );
+          }
+        }
+      }
+    }
+  }else if( n.getKind()==NOT ){
+    return isEntailed2( n[0], subs, subsRep, hasSubs, !pol, qy );
+  }else if( n.getKind()==OR || n.getKind()==AND ){
+    bool simPol = ( pol && n.getKind()==OR ) || ( !pol && n.getKind()==AND );
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      if( isEntailed2( n[i], subs, subsRep, hasSubs, pol, qy ) ){
+        if( simPol ){
+          return true;
+        }
+      }else{
+        if( !simPol ){
+          return false;
+        }
+      }
+    }
+    return !simPol;
+  //Boolean equality here
+  }else if( n.getKind()==EQUAL || n.getKind()==ITE ){
+    for( unsigned i=0; i<2; i++ ){
+      if( isEntailed2( n[0], subs, subsRep, hasSubs, i==0, qy ) ){
+        unsigned ch = ( n.getKind()==EQUAL || i==0 ) ? 1 : 2;
+        bool reqPol = ( n.getKind()==ITE || i==0 ) ? pol : !pol;
+        return isEntailed2( n[ch], subs, subsRep, hasSubs, reqPol, qy );
+      }
+    }
+  }else if( n.getKind()==APPLY_UF ){
+    TNode n1 = getEntailedTerm2( n, subs, subsRep, hasSubs, qy );
+    if( !n1.isNull() ){
+      Assert( qy->hasTerm( n1 ) );
+      if( n1==d_true ){
+        return pol;
+      }else if( n1==d_false ){
+        return !pol;
+      }else{
+        return qy->getEngine()->getRepresentative( n1 ) == ( pol ? d_true : d_false );
+      }
+    }
+  }else if( n.getKind()==FORALL && !pol ){
+    return isEntailed2( n[1], subs, subsRep, hasSubs, pol, qy );
+  }
+  return false;
+}
+
+bool TermDb::isEntailed( TNode n, bool pol, EqualityQuery * qy ) {
+  if( qy==NULL ){
+    Assert( d_consistent_ee );
+    qy = d_quantEngine->getEqualityQuery();
+  }
+  std::map< TNode, TNode > subs;
+  return isEntailed2( n, subs, false, false, pol, qy );
+}
+
+bool TermDb::isEntailed( TNode n, std::map< TNode, TNode >& subs, bool subsRep, bool pol, EqualityQuery * qy ) {
+  if( qy==NULL ){
+    Assert( d_consistent_ee );
+    qy = d_quantEngine->getEqualityQuery();
+  }
+  return isEntailed2( n, subs, subsRep, true, pol, qy );
+}
+
+bool TermDb::isTermActive( Node n ) {
+  return d_inactive_map.find( n )==d_inactive_map.end(); 
+  //return !n.getAttribute(NoMatchAttribute());
+}
+
+void TermDb::setTermInactive( Node n ) {
+  d_inactive_map[n] = true;
+  //Trace("term-db-debug2") << "set no match attribute" << std::endl;
+  //NoMatchAttribute nma;
+  //n.setAttribute(nma,true);
+}
+
+bool TermDb::hasTermCurrent( Node n, bool useMode ) {
+  if( !useMode ){
+    return d_has_map.find( n )!=d_has_map.end();
+  }else{
+    //return d_quantEngine->getMasterEqualityEngine()->hasTerm( n ); //some assertions are not sent to EE
+    if( options::termDbMode()==TERM_DB_ALL ){
+      return true;
+    }else if( options::termDbMode()==TERM_DB_RELEVANT ){
+      return d_has_map.find( n )!=d_has_map.end();
+    }else{
+      Assert( false );
+      return false;
+    }
+  }
+}
+
+bool TermDb::isTermEligibleForInstantiation( TNode n, TNode f, bool print ) {
+  if( options::lteRestrictInstClosure() ){
+    //has to be both in inst closure and in ground assertions
+    if( !isInstClosure( n ) ){
+      Trace("inst-add-debug") << "Term " << n << " is not an inst-closure term." << std::endl;
+      return false;
+    }
+    // hack : since theories preregister terms not in assertions, we are using hasTermCurrent to approximate this
+    if( !hasTermCurrent( n, false ) ){
+      Trace("inst-add-debug") << "Term " << n << " is not in a ground assertion." << std::endl;
+      return false;
+    }
+  }
+  if( options::instMaxLevel()!=-1 ){
+    if( n.hasAttribute(InstLevelAttribute()) ){
+      int fml = f.isNull() ? -1 : getQAttrQuantInstLevel( f );
+      unsigned ml = fml>=0 ? fml : options::instMaxLevel();
+
+      if( n.getAttribute(InstLevelAttribute())>ml ){
+        Trace("inst-add-debug") << "Term " << n << " has instantiation level " << n.getAttribute(InstLevelAttribute());
+        Trace("inst-add-debug") << ", which is more than maximum allowed level " << ml << " for this quantified formula." << std::endl;
+        return false;
+      }
+    }else{
+      if( options::instLevelInputOnly() ){
+        Trace("inst-add-debug") << "Term " << n << " does not have an instantiation level." << std::endl;
+        return false;
+      }
+    }
+  }
+  return true;
+}
+
+Node TermDb::getEligibleTermInEqc( TNode r ) {
+  if( isTermEligibleForInstantiation( r, TNode::null() ) ){
+    return r;
+  }else{
+    std::map< Node, Node >::iterator it = d_term_elig_eqc.find( r );
+    if( it==d_term_elig_eqc.end() ){
+      Node h;
+      eq::EqualityEngine* ee = d_quantEngine->getMasterEqualityEngine();
+      eq::EqClassIterator eqc_i = eq::EqClassIterator( r, ee );
+      while( h.isNull() && !eqc_i.isFinished() ){
+        TNode n = (*eqc_i);
+        ++eqc_i;
+        if( hasTermCurrent( n ) ){
+          h = n;
+        }
+      }
+      d_term_elig_eqc[r] = h;
+      return h;
+    }else{
+      return it->second;
+    }
+  }
+}
+
+bool TermDb::isInstClosure( Node r ) {
+  return d_iclosure_processed.find( r )!=d_iclosure_processed.end();
+}
+
+void TermDb::setHasTerm( Node n ) {
+  Trace("term-db-debug2") << "hasTerm : " << n  << std::endl;
+  //if( inst::Trigger::isAtomicTrigger( n ) ){
+  if( d_has_map.find( n )==d_has_map.end() ){
+    d_has_map[n] = true;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      setHasTerm( n[i] );
+    }
+  }
+}
+
+void TermDb::presolve() {
+  if( options::incrementalSolving() ){
+    //reset the caches that are SAT context-independent
+    d_op_map.clear();
+    d_type_map.clear();
+    d_processed.clear();
+    d_iclosure_processed.clear();
+  }
+}
+
+bool TermDb::reset( Theory::Effort effort ){
+  d_op_nonred_count.clear();
+  d_arg_reps.clear();
+  d_func_map_trie.clear();
+  d_func_map_eqc_trie.clear();
+  d_func_map_rel_dom.clear();
+  d_consistent_ee = true;
+
+  eq::EqualityEngine* ee = d_quantEngine->getMasterEqualityEngine();
+  //compute has map
+  if( options::termDbMode()==TERM_DB_RELEVANT || options::lteRestrictInstClosure() ){
+    d_has_map.clear();
+    d_term_elig_eqc.clear();
+    eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( ee );
+    while( !eqcs_i.isFinished() ){
+      TNode r = (*eqcs_i);
+      bool addedFirst = false;
+      Node first;
+      //TODO: ignoring singleton eqc isn't enough, need to ensure eqc are relevant
+      eq::EqClassIterator eqc_i = eq::EqClassIterator( r, ee );
+      while( !eqc_i.isFinished() ){
+        TNode n = (*eqc_i);
+        if( first.isNull() ){
+          first = n;
+        }else{
+          if( !addedFirst ){
+            addedFirst = true;
+            setHasTerm( first );
+          }
+          setHasTerm( n );
+        }
+        ++eqc_i;
+      }
+      ++eqcs_i;
+    }
+    for (TheoryId theoryId = THEORY_FIRST; theoryId < THEORY_LAST; ++theoryId) {
+      Theory* theory = d_quantEngine->getTheoryEngine()->d_theoryTable[theoryId];
+      if (theory && d_quantEngine->getTheoryEngine()->d_logicInfo.isTheoryEnabled(theoryId)) {
+        context::CDList<Assertion>::const_iterator it = theory->facts_begin(), it_end = theory->facts_end();
+        for (unsigned i = 0; it != it_end; ++ it, ++i) {
+          if( (*it).assertion.getKind()!=INST_CLOSURE ){
+            setHasTerm( (*it).assertion );
+          }
+        }
+      }
+    }
+  }
+  //explicitly add inst closure terms to the equality engine to ensure only EE terms are indexed
+  for( std::hash_set< Node, NodeHashFunction >::iterator it = d_iclosure_processed.begin(); it !=d_iclosure_processed.end(); ++it ){
+    Node n = *it;
+    if( !ee->hasTerm( n ) ){
+      ee->addTerm( n );
+    }
+  }
+
+/*
+  //rebuild d_func/pred_map_trie for each operation, this will calculate all congruent terms
+  for( std::map< Node, std::vector< Node > >::iterator it = d_op_map.begin(); it != d_op_map.end(); ++it ){
+    computeUfTerms( it->first );
+    if( !d_consistent_ee ){
+      return false;
+    }
+  }
+*/  
+  return true;
+}
+
+TermArgTrie * TermDb::getTermArgTrie( Node f ) {
+  computeUfTerms( f );
+  std::map< Node, TermArgTrie >::iterator itut = d_func_map_trie.find( f );
+  if( itut!=d_func_map_trie.end() ){
+    return &itut->second;
+  }else{
+    return NULL;
+  }
+}
+
+TermArgTrie * TermDb::getTermArgTrie( Node eqc, Node f ) {
+  computeUfEqcTerms( f );
+  std::map< Node, TermArgTrie >::iterator itut = d_func_map_eqc_trie.find( f );
+  if( itut==d_func_map_eqc_trie.end() ){
+    return NULL;
+  }else{
+    if( eqc.isNull() ){
+      return &itut->second;
+    }else{
+      std::map< TNode, TermArgTrie >::iterator itute = itut->second.d_data.find( eqc );
+      if( itute!=itut->second.d_data.end() ){
+        return &itute->second;
+      }else{
+        return NULL;
+      }
+    }
+  }
+}
+
+TNode TermDb::getCongruentTerm( Node f, Node n ) {
+  computeUfTerms( f );
+  std::map< Node, TermArgTrie >::iterator itut = d_func_map_trie.find( f );
+  if( itut!=d_func_map_trie.end() ){
+    computeArgReps( n );
+    return itut->second.existsTerm( d_arg_reps[n] );
+  }else{
+    return TNode::null();
+  }
+}
+
+TNode TermDb::getCongruentTerm( Node f, std::vector< TNode >& args ) {
+  computeUfTerms( f );
+  return d_func_map_trie[f].existsTerm( args );
+}
+
+Node TermDb::getModelBasisTerm( TypeNode tn, int i ){
+  if( d_model_basis_term.find( tn )==d_model_basis_term.end() ){
+    Node mbt;
+    if( tn.isInteger() || tn.isReal() ){
+      mbt = d_zero;
+    }else if( isClosedEnumerableType( tn ) ){
+      mbt = tn.mkGroundTerm();
+    }else{
+      if( options::fmfFreshDistConst() || d_type_map[ tn ].empty() ){
+        std::stringstream ss;
+        ss << language::SetLanguage(options::outputLanguage());
+        ss << "e_" << tn;
+        mbt = NodeManager::currentNM()->mkSkolem( ss.str(), tn, "is a model basis term" );
+        Trace("mkVar") << "ModelBasis:: Make variable " << mbt << " : " << tn << std::endl;
+        if( options::instMaxLevel()!=-1 ){
+          QuantifiersEngine::setInstantiationLevelAttr( mbt, 0 );
+        }
+      }else{
+        mbt = d_type_map[ tn ][ 0 ];
+      }
+    }
+    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];
+}
+
+Node TermDb::getModelBasisOpTerm( Node op ){
+  if( d_model_basis_op_term.find( op )==d_model_basis_op_term.end() ){
+    TypeNode t = op.getType();
+    std::vector< Node > children;
+    children.push_back( op );
+    for( int i=0; i<(int)(t.getNumChildren()-1); i++ ){
+      children.push_back( getModelBasisTerm( t[i] ) );
+    }
+    if( children.size()==1 ){
+      d_model_basis_op_term[op] = op;
+    }else{
+      d_model_basis_op_term[op] = NodeManager::currentNM()->mkNode( APPLY_UF, children );
+    }
+  }
+  return d_model_basis_op_term[op];
+}
+
+Node TermDb::getModelBasis( Node q, Node n ){
+  //make model basis
+  if( d_model_basis_terms.find( q )==d_model_basis_terms.end() ){
+    for( unsigned j=0; j<q[0].getNumChildren(); j++ ){
+      d_model_basis_terms[q].push_back( getModelBasisTerm( q[0][j].getType() ) );
+    }
+  }
+  Node gn = n.substitute( d_inst_constants[q].begin(), d_inst_constants[q].end(),
+                          d_model_basis_terms[q].begin(), d_model_basis_terms[q].end() );
+  return gn;
+}
+
+Node TermDb::getModelBasisBody( Node q ){
+  if( d_model_basis_body.find( q )==d_model_basis_body.end() ){
+    Node n = getInstConstantBody( q );
+    d_model_basis_body[q] = getModelBasis( q, n );
+  }
+  return d_model_basis_body[q];
+}
+
+void TermDb::computeModelBasisArgAttribute( Node n ){
+  if( !n.hasAttribute(ModelBasisArgAttribute()) ){
+    //ensure that the model basis terms have been defined
+    if( n.getKind()==APPLY_UF ){
+      getModelBasisOpTerm( n.getOperator() );
+    }
+    uint64_t val = 0;
+    //determine if it has model basis attribute
+    for( unsigned j=0; j<n.getNumChildren(); j++ ){
+      if( n[j].getAttribute(ModelBasisAttribute()) ){
+        val++;
+      }
+    }
+    ModelBasisArgAttribute mbaa;
+    n.setAttribute( mbaa, val );
+  }
+}
+
+void TermDb::makeInstantiationConstantsFor( Node q ){
+  if( d_inst_constants.find( q )==d_inst_constants.end() ){
+    Debug("quantifiers-engine") << "Instantiation constants for " << q << " : " << std::endl;
+    for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
+      d_vars[q].push_back( q[0][i] );
+      d_var_num[q][q[0][i]] = i;
+      //make instantiation constants
+      Node ic = NodeManager::currentNM()->mkInstConstant( q[0][i].getType() );
+      d_inst_constants_map[ic] = q;
+      d_inst_constants[ q ].push_back( ic );
+      Debug("quantifiers-engine") << "  " << ic << std::endl;
+      //set the var number attribute
+      InstVarNumAttribute ivna;
+      ic.setAttribute( ivna, i );
+      InstConstantAttribute ica;
+      ic.setAttribute( ica, q );
+      //also set the term inactive
+      setTermInactive( ic );
+    }
+  }
+}
+
+void TermDb::getBoundVars2( Node n, std::vector< Node >& vars, std::map< Node, bool >& visited ) {
+  if( visited.find( n )==visited.end() ){
+    visited[n] = true;
+    if( n.getKind()==BOUND_VARIABLE ){
+      if( std::find( vars.begin(), vars.end(), n )==vars.end() ) {
+        vars.push_back( n );
+      }
+    }
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      getBoundVars2( n[i], vars, visited );
+    }
+  }
+}
+
+Node TermDb::getRemoveQuantifiers2( Node n, std::map< Node, Node >& visited ) {
+  std::map< Node, Node >::iterator it = visited.find( n );
+  if( it!=visited.end() ){
+    return it->second;
+  }else{
+    Node ret = n;
+    if( n.getKind()==FORALL ){
+      ret = getRemoveQuantifiers2( n[1], visited );
+    }else if( n.getNumChildren()>0 ){
+      std::vector< Node > children;
+      bool childrenChanged = false;
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        Node ni = getRemoveQuantifiers2( n[i], visited );
+        childrenChanged = childrenChanged || ni!=n[i];
+        children.push_back( ni );
+      }
+      if( childrenChanged ){
+        if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+          children.insert( children.begin(), n.getOperator() );
+        }
+        ret = NodeManager::currentNM()->mkNode( n.getKind(), children );
+      }
+    }
+    visited[n] = ret;
+    return ret;
+  }
+}
+
+Node TermDb::getInstConstAttr( Node n ) {
+  if (!n.hasAttribute(InstConstantAttribute()) ){
+    Node q;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      q = getInstConstAttr(n[i]);
+      if( !q.isNull() ){
+        break;
+      }
+    }
+    InstConstantAttribute ica;
+    n.setAttribute(ica, q);
+  }
+  return n.getAttribute(InstConstantAttribute());
+}
+
+bool TermDb::hasInstConstAttr( Node n ) {
+  return !getInstConstAttr(n).isNull();
+}
+
+Node TermDb::getBoundVarAttr( Node n ) {
+  if (!n.hasAttribute(BoundVarAttribute()) ){
+    Node bv;
+    if( n.getKind()==BOUND_VARIABLE ){
+      bv = n;
+    }else{
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        bv = getBoundVarAttr(n[i]);
+        if( !bv.isNull() ){
+          break;
+        }
+      }
+    }
+    BoundVarAttribute bva;
+    n.setAttribute(bva, bv);
+  }
+  return n.getAttribute(BoundVarAttribute());
+}
+
+bool TermDb::hasBoundVarAttr( Node n ) {
+  return !getBoundVarAttr(n).isNull();
+}
+
+void TermDb::getBoundVars( Node n, std::vector< Node >& vars ) {
+  std::map< Node, bool > visited;
+  return getBoundVars2( n, vars, visited );
+}
+
+//remove quantifiers
+Node TermDb::getRemoveQuantifiers( Node n ) {
+  std::map< Node, Node > visited;
+  return getRemoveQuantifiers2( n, visited );
+}
+
+//quantified simplify
+Node TermDb::getQuantSimplify( Node n ) {
+  std::vector< Node > bvs;
+  getBoundVars( n, bvs );
+  if( bvs.empty() ) {
+    return Rewriter::rewrite( n );
+  }else{
+    Node q = NodeManager::currentNM()->mkNode( FORALL, NodeManager::currentNM()->mkNode( BOUND_VAR_LIST, bvs ), n );
+    q = Rewriter::rewrite( q );
+    return getRemoveQuantifiers( q );
+  }
+}
+
+/** get the i^th instantiation constant of q */
+Node TermDb::getInstantiationConstant( Node q, int i ) const {
+  std::map< Node, std::vector< Node > >::const_iterator it = d_inst_constants.find( q );
+  if( it!=d_inst_constants.end() ){
+    return it->second[i];
+  }else{
+    return Node::null();
+  }
+}
+
+/** get number of instantiation constants for q */
+unsigned TermDb::getNumInstantiationConstants( Node q ) const {
+  std::map< Node, std::vector< Node > >::const_iterator it = d_inst_constants.find( q );
+  if( it!=d_inst_constants.end() ){
+    return it->second.size();
+  }else{
+    return 0;
+  }
+}
+
+Node TermDb::getInstConstantBody( Node q ){
+  std::map< Node, Node >::iterator it = d_inst_const_body.find( q );
+  if( it==d_inst_const_body.end() ){
+    Node n = getInstConstantNode( q[1], q );
+    d_inst_const_body[ q ] = n;
+    return n;
+  }else{
+    return it->second;
+  }
+}
+
+Node TermDb::getCounterexampleLiteral( Node q ){
+  if( d_ce_lit.find( q )==d_ce_lit.end() ){
+    /*
+    Node ceBody = getInstConstantBody( f );
+    //check if any variable are of bad types, and fail if so
+    for( size_t i=0; i<d_inst_constants[f].size(); i++ ){
+      if( d_inst_constants[f][i].getType().isBoolean() ){
+        d_ce_lit[ f ] = Node::null();
+        return Node::null();
+      }
+    }
+    */
+    Node g = NodeManager::currentNM()->mkSkolem( "g", NodeManager::currentNM()->booleanType() );
+    //otherwise, ensure literal
+    Node ceLit = d_quantEngine->getValuation().ensureLiteral( g );
+    d_ce_lit[ q ] = ceLit;
+  }
+  return d_ce_lit[ q ];
+}
+
+Node TermDb::getInstConstantNode( Node n, Node q ){
+  makeInstantiationConstantsFor( q );
+  return n.substitute( d_vars[q].begin(), d_vars[q].end(), d_inst_constants[q].begin(), d_inst_constants[q].end() );
+}
+
+Node TermDb::getVariableNode( Node n, Node q ) {
+  makeInstantiationConstantsFor( q );
+  return n.substitute( d_inst_constants[q].begin(), d_inst_constants[q].end(), d_vars[q].begin(), d_vars[q].end() );
+}
+
+Node TermDb::getInstantiatedNode( Node n, Node q, std::vector< Node >& terms ) {
+  Assert( d_vars[q].size()==terms.size() );
+  return n.substitute( d_vars[q].begin(), d_vars[q].end(), terms.begin(), terms.end() );
+}
+
+
+void getSelfSel( const Datatype& dt, const DatatypeConstructor& dc, Node n, TypeNode ntn, std::vector< Node >& selfSel ){
+  TypeNode tspec;
+  if( dt.isParametric() ){
+    tspec = TypeNode::fromType( dc.getSpecializedConstructorType(n.getType().toType()) );
+    Trace("sk-ind-debug") << "Specialized constructor type : " << tspec << std::endl;
+    Assert( tspec.getNumChildren()==dc.getNumArgs() );
+  }
+  Trace("sk-ind-debug") << "Check self sel " << dc.getName() << " " << dt.getName() << std::endl;
+  for( unsigned j=0; j<dc.getNumArgs(); j++ ){
+    std::vector< Node > ssc;
+    if( dt.isParametric() ){
+      Trace("sk-ind-debug") << "Compare " << tspec[j] << " " << ntn << std::endl;
+      if( tspec[j]==ntn ){
+        ssc.push_back( n );
+      }
+    }else{
+      TypeNode tn = TypeNode::fromType( dc[j].getRangeType() );
+      Trace("sk-ind-debug") << "Compare " << tn << " " << ntn << std::endl;
+      if( tn==ntn ){
+        ssc.push_back( n );
+      }
+    }
+    /* TODO: more than weak structural induction
+    else if( tn.isDatatype() && std::find( visited.begin(), visited.end(), tn )==visited.end() ){
+      visited.push_back( tn );
+      const Datatype& dt = ((DatatypeType)(subs[0].getType()).toType()).getDatatype();
+      std::vector< Node > disj;
+      for( unsigned i=0; i<dt.getNumConstructors(); i++ ){
+        getSelfSel( dt[i], n, ntn, ssc );
+      }
+      visited.pop_back();
+    }
+    */
+    for( unsigned k=0; k<ssc.size(); k++ ){
+      selfSel.push_back( NodeManager::currentNM()->mkNode( APPLY_SELECTOR_TOTAL, dc[j].getSelector(), n ) );
+    }
+  }
+}
+
+
+Node TermDb::mkSkolemizedBody( Node f, Node n, std::vector< TypeNode >& argTypes, std::vector< TNode >& fvs,
+                               std::vector< Node >& sk, Node& sub, std::vector< unsigned >& sub_vars ) {
+  Assert( sk.empty() || sk.size()==f[0].getNumChildren() );
+  //calculate the variables and substitution
+  std::vector< TNode > ind_vars;
+  std::vector< unsigned > ind_var_indicies;
+  std::vector< TNode > vars;
+  std::vector< unsigned > var_indicies;
+  for( unsigned i=0; i<f[0].getNumChildren(); i++ ){
+    if( isInductionTerm( f[0][i] ) ){
+      ind_vars.push_back( f[0][i] );
+      ind_var_indicies.push_back( i );
+    }else{
+      vars.push_back( f[0][i] );
+      var_indicies.push_back( i );
+    }
+    Node s;
+    //make the new function symbol or use existing
+    if( i>=sk.size() ){
+      if( argTypes.empty() ){
+        s = NodeManager::currentNM()->mkSkolem( "skv", f[0][i].getType(), "created during skolemization" );
+      }else{
+        TypeNode typ = NodeManager::currentNM()->mkFunctionType( argTypes, f[0][i].getType() );
+        Node op = NodeManager::currentNM()->mkSkolem( "skop", typ, "op created during pre-skolemization" );
+        //DOTHIS: set attribute on op, marking that it should not be selected as trigger
+        std::vector< Node > funcArgs;
+        funcArgs.push_back( op );
+        funcArgs.insert( funcArgs.end(), fvs.begin(), fvs.end() );
+        s = NodeManager::currentNM()->mkNode( kind::APPLY_UF, funcArgs );
+      }
+      sk.push_back( s );
+    }else{
+      Assert( sk[i].getType()==f[0][i].getType() );
+    }
+  }
+  Node ret;
+  if( vars.empty() ){
+    ret = n;
+  }else{
+    std::vector< Node > var_sk;
+    for( unsigned i=0; i<var_indicies.size(); i++ ){
+      var_sk.push_back( sk[var_indicies[i]] );
+    }
+    Assert( vars.size()==var_sk.size() );
+    ret = n.substitute( vars.begin(), vars.end(), var_sk.begin(), var_sk.end() );
+  }
+  if( !ind_vars.empty() ){
+    Trace("sk-ind") << "Ind strengthen : (not " << f << ")" << std::endl;
+    Trace("sk-ind") << "Skolemized is : " << ret << std::endl;
+    Node n_str_ind;
+    TypeNode tn = ind_vars[0].getType();
+    Node k = sk[ind_var_indicies[0]];
+    Node nret = ret.substitute( ind_vars[0], k );
+    //note : everything is under a negation
+    //the following constructs ~( R( x, k ) => ~P( x ) )
+    if( options::dtStcInduction() && tn.isDatatype() ){
+      const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+      std::vector< Node > disj;
+      for( unsigned i=0; i<dt.getNumConstructors(); i++ ){
+        std::vector< Node > selfSel;
+        getSelfSel( dt, dt[i], k, tn, selfSel );
+        std::vector< Node > conj;
+        conj.push_back( NodeManager::currentNM()->mkNode( APPLY_TESTER, Node::fromExpr( dt[i].getTester() ), k ).negate() );
+        for( unsigned j=0; j<selfSel.size(); j++ ){
+          conj.push_back( ret.substitute( ind_vars[0], selfSel[j] ).negate() );
+        }
+        disj.push_back( conj.size()==1 ? conj[0] : NodeManager::currentNM()->mkNode( OR, conj ) );
+      }
+      Assert( !disj.empty() );
+      n_str_ind = disj.size()==1 ? disj[0] : NodeManager::currentNM()->mkNode( AND, disj );
+    }else if( options::intWfInduction() && tn.isInteger() ){
+      Node icond = NodeManager::currentNM()->mkNode( GEQ, k, NodeManager::currentNM()->mkConst( Rational(0) ) );
+      Node iret = ret.substitute( ind_vars[0], NodeManager::currentNM()->mkNode( MINUS, k, NodeManager::currentNM()->mkConst( Rational(1) ) ) ).negate();
+      n_str_ind = NodeManager::currentNM()->mkNode( OR, icond.negate(), iret );
+      n_str_ind = NodeManager::currentNM()->mkNode( AND, icond, n_str_ind );
+    }else{
+      Trace("sk-ind") << "Unknown induction for term : " << ind_vars[0] << ", type = " << tn << std::endl;
+      Assert( false );
+    }
+    Trace("sk-ind") << "Strengthening is : " << n_str_ind << std::endl;
+
+    std::vector< Node > rem_ind_vars;
+    rem_ind_vars.insert( rem_ind_vars.end(), ind_vars.begin()+1, ind_vars.end() );
+    if( !rem_ind_vars.empty() ){
+      Node bvl = NodeManager::currentNM()->mkNode( BOUND_VAR_LIST, rem_ind_vars );
+      nret = NodeManager::currentNM()->mkNode( FORALL, bvl, nret );
+      nret = Rewriter::rewrite( nret );
+      sub = nret;
+      sub_vars.insert( sub_vars.end(), ind_var_indicies.begin()+1, ind_var_indicies.end() );
+      n_str_ind = NodeManager::currentNM()->mkNode( FORALL, bvl, n_str_ind.negate() ).negate();
+    }
+    ret = NodeManager::currentNM()->mkNode( OR, nret, n_str_ind );
+  }
+  Trace("quantifiers-sk-debug") << "mkSkolem body for " << f << " returns : " << ret << std::endl;
+  //if it has an instantiation level, set the skolemized body to that level
+  if( f.hasAttribute(InstLevelAttribute()) ){
+    theory::QuantifiersEngine::setInstantiationLevelAttr( ret, f.getAttribute(InstLevelAttribute()) );
+  }
+
+  if( Trace.isOn("quantifiers-sk") ){
+    Trace("quantifiers-sk") << "Skolemize : ";
+    for( unsigned i=0; i<sk.size(); i++ ){
+      Trace("quantifiers-sk") << sk[i] << " ";
+    }
+    Trace("quantifiers-sk") << "for " << std::endl;
+    Trace("quantifiers-sk") << "   " << f << std::endl;
+  }
+
+  return ret;
+}
+
+Node TermDb::getSkolemizedBody( Node f ){
+  Assert( f.getKind()==FORALL );
+  if( d_skolem_body.find( f )==d_skolem_body.end() ){
+    std::vector< TypeNode > fvTypes;
+    std::vector< TNode > fvs;
+    Node sub;
+    std::vector< unsigned > sub_vars;
+    d_skolem_body[ f ] = mkSkolemizedBody( f, f[1], fvTypes, fvs, d_skolem_constants[f], sub, sub_vars );
+    //store sub quantifier information
+    if( !sub.isNull() ){
+      //if we are skolemizing one at a time, we already know the skolem constants of the sub-quantified formula, store them
+      Assert( d_skolem_constants[sub].empty() );
+      for( unsigned i=0; i<sub_vars.size(); i++ ){
+        d_skolem_constants[sub].push_back( d_skolem_constants[f][sub_vars[i]] );
+      }
+    }
+    Assert( d_skolem_constants[f].size()==f[0].getNumChildren() );
+    if( options::sortInference() ){
+      for( unsigned i=0; i<d_skolem_constants[f].size(); i++ ){
+        //carry information for sort inference
+        d_quantEngine->getTheoryEngine()->getSortInference()->setSkolemVar( f, f[0][i], d_skolem_constants[f][i] );
+      }
+    }
+  }
+  return d_skolem_body[ f ];
+}
+
+Node TermDb::getEnumerateTerm( TypeNode tn, unsigned index ) {
+  Trace("term-db-enum") << "Get enumerate term " << tn << " " << index << std::endl;
+  std::map< TypeNode, unsigned >::iterator it = d_typ_enum_map.find( tn );
+  unsigned teIndex;
+  if( it==d_typ_enum_map.end() ){
+    teIndex = (int)d_typ_enum.size();
+    d_typ_enum_map[tn] = teIndex;
+    d_typ_enum.push_back( TypeEnumerator(tn) );
+  }else{
+    teIndex = it->second;
+  }
+  while( index>=d_enum_terms[tn].size() ){
+    if( d_typ_enum[teIndex].isFinished() ){
+      return Node::null();
+    }
+    d_enum_terms[tn].push_back( *d_typ_enum[teIndex] );
+    ++d_typ_enum[teIndex];
+  }
+  return d_enum_terms[tn][index];
+}
+
+bool TermDb::isClosedEnumerableType( TypeNode tn ) {
+  std::map< TypeNode, bool >::iterator it = d_typ_closed_enum.find( tn );
+  if( it==d_typ_closed_enum.end() ){
+    d_typ_closed_enum[tn] = true;
+    bool ret = true;
+    if( tn.isArray() || tn.isSort() || tn.isCodatatype() ){
+      ret = false;
+    }else if( tn.isSet() ){
+      ret = isClosedEnumerableType( tn.getSetElementType() );
+    }else if( tn.isDatatype() ){
+      const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+      for( unsigned i=0; i<dt.getNumConstructors(); i++ ){
+        for( unsigned j=0; j<dt[i].getNumArgs(); j++ ){
+          TypeNode ctn = TypeNode::fromType( dt[i][j].getRangeType() );
+          if( tn!=ctn && !isClosedEnumerableType( ctn ) ){
+            ret = false;
+            break;
+          }
+        }
+        if( !ret ){
+          break;
+        }
+      }
+    }else{
+      //TODO: all subfields must be closed enumerable
+    }
+    d_typ_closed_enum[tn] = ret;
+    return ret;
+  }else{
+    return it->second;
+  }
+}
+
+//checks whether a type is not Array and is reasonably small enough (<1000) such that all of its domain elements can be enumerated
+bool TermDb::mayComplete( TypeNode tn ) {
+  std::map< TypeNode, bool >::iterator it = d_may_complete.find( tn );
+  if( it==d_may_complete.end() ){
+    bool mc = false;
+    if( isClosedEnumerableType( tn ) && tn.getCardinality().isFinite() && !tn.getCardinality().isLargeFinite() ){
+      Node card = NodeManager::currentNM()->mkConst( Rational(tn.getCardinality().getFiniteCardinality()) );
+      Node oth = NodeManager::currentNM()->mkConst( Rational(1000) );
+      Node eq = NodeManager::currentNM()->mkNode( LEQ, card, oth );
+      eq = Rewriter::rewrite( eq );
+      mc = eq==d_true;
+    }
+    d_may_complete[tn] = mc;
+    return mc;
+  }else{
+    return it->second;
+  }
+}
+
+void TermDb::computeVarContains( Node n, std::vector< Node >& varContains ) {
+  std::map< Node, bool > visited;
+  computeVarContains2( n, INST_CONSTANT, varContains, visited );
+}
+
+void TermDb::computeQuantContains( Node n, std::vector< Node >& quantContains ) {
+  std::map< Node, bool > visited;
+  computeVarContains2( n, FORALL, quantContains, visited );
+}
+
+
+void TermDb::computeVarContains2( Node n, Kind k, std::vector< Node >& varContains, std::map< Node, bool >& visited ){
+  if( visited.find( n )==visited.end() ){
+    visited[n] = true;
+    if( n.getKind()==k ){
+      if( std::find( varContains.begin(), varContains.end(), n )==varContains.end() ){
+        varContains.push_back( n );
+      }
+    }else{
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        computeVarContains2( n[i], k, varContains, visited );
+      }
+    }
+  }
+}
+
+void TermDb::getVarContains( Node f, std::vector< Node >& pats, std::map< Node, std::vector< Node > >& varContains ){
+  for( unsigned i=0; i<pats.size(); i++ ){
+    varContains[ pats[i] ].clear();
+    getVarContainsNode( f, pats[i], varContains[ pats[i] ] );
+  }
+}
+
+void TermDb::getVarContainsNode( Node f, Node n, std::vector< Node >& varContains ){
+  std::vector< Node > vars;
+  computeVarContains( n, vars );
+  for( unsigned j=0; j<vars.size(); j++ ){
+    Node v = vars[j];
+    if( v.getAttribute(InstConstantAttribute())==f ){
+      if( std::find( varContains.begin(), varContains.end(), v )==varContains.end() ){
+        varContains.push_back( v );
+      }
+    }
+  }
+}
+
+int TermDb::isInstanceOf2( Node n1, Node n2, std::vector< Node >& varContains1, std::vector< Node >& varContains2 ){
+  if( n1==n2 ){
+    return 1;
+  }else if( n1.getKind()==n2.getKind() ){
+    if( n1.getKind()==APPLY_UF ){
+      if( n1.getOperator()==n2.getOperator() ){
+        int result = 0;
+        for( int i=0; i<(int)n1.getNumChildren(); i++ ){
+          if( n1[i]!=n2[i] ){
+            int cResult = isInstanceOf2( n1[i], n2[i], varContains1, varContains2 );
+            if( cResult==0 ){
+              return 0;
+            }else if( cResult!=result ){
+              if( result!=0 ){
+                return 0;
+              }else{
+                result = cResult;
+              }
+            }
+          }
+        }
+        return result;
+      }
+    }
+    return 0;
+  }else if( n2.getKind()==INST_CONSTANT ){
+    //if( std::find( d_var_contains[ n1 ].begin(), d_var_contains[ n1 ].end(), n2 )!=d_var_contains[ n1 ].end() ){
+    //  return 1;
+    //}
+    if( varContains1.size()==1 && varContains1[ 0 ]==n2 ){
+      return 1;
+    }
+  }else if( n1.getKind()==INST_CONSTANT ){
+    //if( std::find( d_var_contains[ n2 ].begin(), d_var_contains[ n2 ].end(), n1 )!=d_var_contains[ n2 ].end() ){
+    //  return -1;
+    //}
+    if( varContains2.size()==1 && varContains2[ 0 ]==n1 ){
+      return 1;
+    }
+  }
+  return 0;
+}
+
+int TermDb::isInstanceOf( Node n1, Node n2 ){
+  std::vector< Node > varContains1;
+  std::vector< Node > varContains2;
+  computeVarContains( n1, varContains1 );
+  computeVarContains( n1, varContains2 );
+  return isInstanceOf2( n1, n2, varContains1, varContains2 );
+}
+
+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 );
+  std::map< int, std::vector< Node > > varContains;
+  for( unsigned i=0; i<nodes.size(); i++ ){
+    computeVarContains( nodes[i], varContains[i] );
+  }
+  for( unsigned i=0; i<nodes.size(); i++ ){
+    for( unsigned j=i+1; j<nodes.size(); j++ ){
+      if( active[i] && active[j] ){
+        int result = isInstanceOf2( nodes[i], nodes[j], varContains[i], varContains[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;
+        }
+      }
+    }
+  }
+  std::vector< Node > temp;
+  for( unsigned i=0; i<nodes.size(); i++ ){
+    if( active[i] ){
+      temp.push_back( nodes[i] );
+    }
+  }
+  nodes.clear();
+  nodes.insert( nodes.begin(), temp.begin(), temp.end() );
+}
+
+int TermDb::getIdForOperator( Node op ) {
+  std::map< Node, int >::iterator it = d_op_id.find( op );
+  if( it==d_op_id.end() ){
+    d_op_id[op] = d_op_id_count;
+    d_op_id_count++;
+    return d_op_id[op];
+  }else{
+    return it->second;
+  }
+}
+
+int TermDb::getIdForType( TypeNode t ) {
+  std::map< TypeNode, int >::iterator it = d_typ_id.find( t );
+  if( it==d_typ_id.end() ){
+    d_typ_id[t] = d_typ_id_count;
+    d_typ_id_count++;
+    return d_typ_id[t];
+  }else{
+    return it->second;
+  }
+}
+
+bool TermDb::getTermOrder( Node a, Node b ) {
+  if( a.getKind()==BOUND_VARIABLE ){
+    if( b.getKind()==BOUND_VARIABLE ){
+      return a.getAttribute(InstVarNumAttribute())<b.getAttribute(InstVarNumAttribute());
+    }else{
+      return true;
+    }
+  }else if( b.getKind()!=BOUND_VARIABLE ){
+    Node aop = a.hasOperator() ? a.getOperator() : a;
+    Node bop = b.hasOperator() ? b.getOperator() : b;
+    Trace("aeq-debug2") << a << "...op..." << aop << std::endl;
+    Trace("aeq-debug2") << b << "...op..." << bop << std::endl;
+    if( aop==bop ){
+      if( a.getNumChildren()==b.getNumChildren() ){
+        for( unsigned i=0; i<a.getNumChildren(); i++ ){
+          if( a[i]!=b[i] ){
+            //first distinct child determines the ordering
+            return getTermOrder( a[i], b[i] );
+          }
+        }
+      }else{
+        return aop.getNumChildren()<bop.getNumChildren();
+      }
+    }else{
+      return getIdForOperator( aop )<getIdForOperator( bop );
+    }
+  }
+  return false;
+}
+
+
+
+Node TermDb::getCanonicalFreeVar( TypeNode tn, unsigned i ) {
+  Assert( !tn.isNull() );
+  while( d_cn_free_var[tn].size()<=i ){
+    std::stringstream oss;
+    oss << tn;
+    std::string typ_name = oss.str();
+    while( typ_name[0]=='(' ){
+      typ_name.erase( typ_name.begin() );
+    }
+    std::stringstream os;
+    os << typ_name[0] << i;
+    Node x = NodeManager::currentNM()->mkBoundVar( os.str().c_str(), tn );
+    InstVarNumAttribute ivna;
+    x.setAttribute(ivna,d_cn_free_var[tn].size());
+    d_cn_free_var[tn].push_back( x );
+  }
+  return d_cn_free_var[tn][i];
+}
+
+struct sortTermOrder {
+  TermDb* d_tdb;
+  //std::map< Node, std::map< Node, bool > > d_cache;
+  bool operator() (Node i, Node j) {
+    /*
+    //must consult cache since term order is partial?
+    std::map< Node, bool >::iterator it = d_cache[j].find( i );
+    if( it!=d_cache[j].end() && it->second ){
+      return false;
+    }else{
+      bool ret = d_tdb->getTermOrder( i, j );
+      d_cache[i][j] = ret;
+      return ret;
+    }
+    */
+    return d_tdb->getTermOrder( i, j );
+  }
+};
+
+//this function makes a canonical representation of a term (
+//  - orders variables left to right
+//  - if apply_torder, then sort direct subterms of commutative operators
+Node TermDb::getCanonicalTerm( TNode n, std::map< TypeNode, unsigned >& var_count, std::map< TNode, TNode >& subs, bool apply_torder, std::map< TNode, Node >& visited ) {
+  Trace("canon-term-debug") << "Get canonical term for " << n << std::endl;
+  if( n.getKind()==BOUND_VARIABLE ){
+    std::map< TNode, TNode >::iterator it = subs.find( n );
+    if( it==subs.end() ){
+      TypeNode tn = n.getType();
+      //allocate variable
+      unsigned vn = var_count[tn];
+      var_count[tn]++;
+      subs[n] = getCanonicalFreeVar( tn, vn );
+      Trace("canon-term-debug") << "...allocate variable." << std::endl;
+      return subs[n];
+    }else{
+      Trace("canon-term-debug") << "...return variable in subs." << std::endl;
+      return it->second;
+    }
+  }else if( n.getNumChildren()>0 ){
+    std::map< TNode, Node >::iterator it = visited.find( n );
+    if( it!=visited.end() ){
+      return it->second;
+    }else{
+      //collect children
+      Trace("canon-term-debug") << "Collect children" << std::endl;
+      std::vector< Node > cchildren;
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        cchildren.push_back( n[i] );
+      }
+      //if applicable, first sort by term order
+      if( apply_torder && isComm( n.getKind() ) ){
+        Trace("canon-term-debug") << "Sort based on commutative operator " << n.getKind() << std::endl;
+        sortTermOrder sto;
+        sto.d_tdb = this;
+        std::sort( cchildren.begin(), cchildren.end(), sto );
+      }
+      //now make canonical
+      Trace("canon-term-debug") << "Make canonical children" << std::endl;
+      for( unsigned i=0; i<cchildren.size(); i++ ){
+        cchildren[i] = getCanonicalTerm( cchildren[i], var_count, subs, apply_torder, visited );
+      }
+      if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+        Trace("canon-term-debug") << "Insert operator " << n.getOperator() << std::endl;
+        cchildren.insert( cchildren.begin(), n.getOperator() );
+      }
+      Trace("canon-term-debug") << "...constructing for " << n << "." << std::endl;
+      Node ret = NodeManager::currentNM()->mkNode( n.getKind(), cchildren );
+      Trace("canon-term-debug") << "...constructed " << ret << " for " << n << "." << std::endl;
+      visited[n] = ret;
+      return ret;
+    }
+  }else{
+    Trace("canon-term-debug") << "...return 0-child term." << std::endl;
+    return n;
+  }
+}
+
+Node TermDb::getCanonicalTerm( TNode n, bool apply_torder ){
+  std::map< TypeNode, unsigned > var_count;
+  std::map< TNode, TNode > subs;
+  std::map< TNode, Node > visited;
+  return getCanonicalTerm( n, var_count, subs, apply_torder, visited );
+}
+
+void TermDb::getVtsTerms( std::vector< Node >& t, bool isFree, bool create, bool inc_delta ) {
+  if( inc_delta ){
+    Node delta = getVtsDelta( isFree, create );
+    if( !delta.isNull() ){
+      t.push_back( delta );
+    }
+  }
+  for( unsigned r=0; r<2; r++ ){
+    Node inf = getVtsInfinityIndex( r, isFree, create );
+    if( !inf.isNull() ){
+      t.push_back( inf );
+    }
+  }
+}
+
+Node TermDb::getVtsDelta( bool isFree, bool create ) {
+  if( create ){
+    if( d_vts_delta_free.isNull() ){
+      d_vts_delta_free = NodeManager::currentNM()->mkSkolem( "delta_free", NodeManager::currentNM()->realType(), "free delta for virtual term substitution" );
+      Node delta_lem = NodeManager::currentNM()->mkNode( GT, d_vts_delta_free, d_zero );
+      d_quantEngine->getOutputChannel().lemma( delta_lem );
+    }
+    if( d_vts_delta.isNull() ){
+      d_vts_delta = NodeManager::currentNM()->mkSkolem( "delta", NodeManager::currentNM()->realType(), "delta for virtual term substitution" );
+    }
+  }
+  return isFree ? d_vts_delta_free : d_vts_delta;
+}
+
+Node TermDb::getVtsInfinity( TypeNode tn, bool isFree, bool create ) {
+  if( create ){
+    if( d_vts_inf_free[tn].isNull() ){
+      d_vts_inf_free[tn] = NodeManager::currentNM()->mkSkolem( "inf_free", tn, "free infinity for virtual term substitution" );
+    }
+    if( d_vts_inf[tn].isNull() ){
+      d_vts_inf[tn] = NodeManager::currentNM()->mkSkolem( "inf", tn, "infinity for virtual term substitution" );
+    }
+  }
+  return isFree ? d_vts_inf_free[tn] : d_vts_inf[tn];
+}
+
+Node TermDb::getVtsInfinityIndex( int i, bool isFree, bool create ) {
+  if( i==0 ){
+    return getVtsInfinity( NodeManager::currentNM()->realType(), isFree, create );
+  }else if( i==1 ){
+    return getVtsInfinity( NodeManager::currentNM()->integerType(), isFree, create );
+  }else{
+    Assert( false );
+    return Node::null();
+  }
+}
+
+Node TermDb::substituteVtsFreeTerms( Node n ) {
+  std::vector< Node > vars;
+  getVtsTerms( vars, false, false );
+  std::vector< Node > vars_free;
+  getVtsTerms( vars_free, true, false );
+  Assert( vars.size()==vars_free.size() );
+  if( !vars.empty() ){
+    return n.substitute( vars.begin(), vars.end(), vars_free.begin(), vars_free.end() );
+  }else{
+    return n;
+  }
+}
+
+Node TermDb::rewriteVtsSymbols( Node n ) {
+  if( ( n.getKind()==EQUAL || n.getKind()==GEQ ) ){
+    Trace("quant-vts-debug") << "VTS : process " << n << std::endl;
+    Node rew_vts_inf;
+    bool rew_delta = false;
+    //rewriting infinity always takes precedence over rewriting delta
+    for( unsigned r=0; r<2; r++ ){
+      Node inf = getVtsInfinityIndex( r, false, false );
+      if( !inf.isNull() && containsTerm( n, inf ) ){
+        if( rew_vts_inf.isNull() ){
+          rew_vts_inf = inf;
+        }else{
+          //for mixed int/real with multiple infinities
+          Trace("quant-vts-debug") << "Multiple infinities...equate " << inf << " = " << rew_vts_inf << std::endl;
+          std::vector< Node > subs_lhs;
+          subs_lhs.push_back( inf );
+          std::vector< Node > subs_rhs;
+          subs_lhs.push_back( rew_vts_inf );
+          n = n.substitute( subs_lhs.begin(), subs_lhs.end(), subs_rhs.begin(), subs_rhs.end() );
+          n = Rewriter::rewrite( n );
+          //may have cancelled
+          if( !containsTerm( n, rew_vts_inf ) ){
+            rew_vts_inf = Node::null();
+          }
+        }
+      }
+    }
+    if( rew_vts_inf.isNull() ){
+      if( !d_vts_delta.isNull() && containsTerm( n, d_vts_delta ) ){
+        rew_delta = true;
+      }
+    }
+    if( !rew_vts_inf.isNull()  || rew_delta ){
+      std::map< Node, Node > msum;
+      if( QuantArith::getMonomialSumLit( n, msum ) ){
+        if( Trace.isOn("quant-vts-debug") ){
+          Trace("quant-vts-debug") << "VTS got monomial sum : " << std::endl;
+          QuantArith::debugPrintMonomialSum( msum, "quant-vts-debug" );
+        }
+        Node vts_sym = !rew_vts_inf.isNull() ? rew_vts_inf : d_vts_delta;
+        Assert( !vts_sym.isNull() );
+        Node iso_n;
+        Node nlit;
+        int res = QuantArith::isolate( vts_sym, msum, iso_n, n.getKind(), true );
+        if( res!=0 ){
+          Trace("quant-vts-debug") << "VTS isolated :  -> " << iso_n << ", res = " << res << std::endl;
+          Node slv = iso_n[res==1 ? 1 : 0];
+          //ensure the vts terms have been eliminated
+          if( containsVtsTerm( slv ) ){
+            Trace("quant-vts-warn") << "Bad vts literal : " << n << ", contains " << vts_sym << " but bad solved form " << slv << "." << std::endl;
+            nlit = substituteVtsFreeTerms( n );
+            Trace("quant-vts-debug") << "...return " << nlit << std::endl;
+            //Assert( false );
+            //safe case: just convert to free symbols
+            return nlit;
+          }else{
+            if( !rew_vts_inf.isNull() ){
+              nlit = ( n.getKind()==GEQ && res==1 ) ? d_true : d_false;
+            }else{
+              Assert( iso_n[res==1 ? 0 : 1]==d_vts_delta );
+              if( n.getKind()==EQUAL ){
+                nlit = d_false;
+              }else if( res==1 ){
+                nlit = NodeManager::currentNM()->mkNode( GEQ, d_zero, slv );
+              }else{
+                nlit = NodeManager::currentNM()->mkNode( GT, slv, d_zero );
+              }
+            }
+          }
+          Trace("quant-vts-debug") << "Return " << nlit << std::endl;
+          return nlit;
+        }else{
+          Trace("quant-vts-warn") << "Bad vts literal : " << n << ", contains " << vts_sym << " but could not isolate." << std::endl;
+          //safe case: just convert to free symbols
+          nlit = substituteVtsFreeTerms( n );
+          Trace("quant-vts-debug") << "...return " << nlit << std::endl;
+          //Assert( false );
+          return nlit;
+        }
+      }
+    }
+    return n;
+  }else if( n.getKind()==FORALL ){
+    //cannot traverse beneath quantifiers
+    return substituteVtsFreeTerms( n );
+  }else{
+    bool childChanged = false;
+    std::vector< Node > children;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      Node nn = rewriteVtsSymbols( n[i] );
+      children.push_back( nn );
+      childChanged = childChanged || nn!=n[i];
+    }
+    if( childChanged ){
+      if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+        children.insert( children.begin(), n.getOperator() );
+      }
+      Node ret = NodeManager::currentNM()->mkNode( n.getKind(), children );
+      Trace("quant-vts-debug") << "...make node " << ret << std::endl;
+      return ret;
+    }else{
+      return n;
+    }
+  }
+}
+
+bool TermDb::containsVtsTerm( Node n, bool isFree ) {
+  std::vector< Node > t;
+  getVtsTerms( t, isFree, false );
+  return containsTerms( n, t );
+}
+
+bool TermDb::containsVtsTerm( std::vector< Node >& n, bool isFree ) {
+  std::vector< Node > t;
+  getVtsTerms( t, isFree, false );
+  if( !t.empty() ){
+    for( unsigned i=0; i<n.size(); i++ ){
+      if( containsTerms( n[i], t ) ){
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+bool TermDb::containsVtsInfinity( Node n, bool isFree ) {
+  std::vector< Node > t;
+  getVtsTerms( t, isFree, false, false );
+  return containsTerms( n, t );
+}
+
+Node TermDb::ensureType( Node n, TypeNode tn ) {
+  TypeNode ntn = n.getType();
+  Assert( ntn.isComparableTo( tn ) );
+  if( ntn.isSubtypeOf( tn ) ){
+    return n;
+  }else{
+    if( tn.isInteger() ){
+      return NodeManager::currentNM()->mkNode( TO_INTEGER, n );
+    }
+    return Node::null();
+  }
+}
+
+bool TermDb::getEnsureTypeCondition( Node n, TypeNode tn, std::vector< Node >& cond ) {
+  TypeNode ntn = n.getType();
+  Assert( ntn.isComparableTo( tn ) );
+  if( !ntn.isSubtypeOf( tn ) ){
+    if( tn.isInteger() ){
+      cond.push_back( NodeManager::currentNM()->mkNode( IS_INTEGER, n ) );
+      return true;
+    }
+    return false;
+  }else{
+    return true;
+  }
+}
+
+void TermDb::getRelevancyCondition( Node n, std::vector< Node >& cond ) {
+  if( n.getKind()==APPLY_SELECTOR_TOTAL ){
+    unsigned scindex = Datatype::cindexOf(n.getOperator().toExpr());
+    const Datatype& dt = ((DatatypeType)(n[0].getType()).toType()).getDatatype();
+    Node rc = NodeManager::currentNM()->mkNode( APPLY_TESTER, Node::fromExpr( dt[scindex].getTester() ), n[0] ).negate();
+    if( std::find( cond.begin(), cond.end(), rc )==cond.end() ){
+      cond.push_back( rc );
+    }
+    getRelevancyCondition( n[0], cond );
+  }
+}
+
+bool TermDb::containsTerm2( Node n, Node t, std::map< Node, bool >& visited ) {
+  if( n==t ){
+    return true;
+  }else{
+    if( visited.find( n )==visited.end() ){
+      visited[n] = true;
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        if( containsTerm2( n[i], t, visited ) ){
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+}
+
+bool TermDb::containsTerms2( Node n, std::vector< Node >& t, std::map< Node, bool >& visited ) {
+  if( visited.find( n )==visited.end() ){
+    if( std::find( t.begin(), t.end(), n )!=t.end() ){
+      return true;
+    }else{
+      visited[n] = true;
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        if( containsTerms2( n[i], t, visited ) ){
+          return true;
+        }
+      }
+    }
+  }
+  return false;
+}
+
+bool TermDb::containsTerm( Node n, Node t ) {
+  std::map< Node, bool > visited;
+  return containsTerm2( n, t, visited );
+}
+
+bool TermDb::containsTerms( Node n, std::vector< Node >& t ) {
+  if( t.empty() ){
+    return false;
+  }else{
+    std::map< Node, bool > visited;
+    return containsTerms2( n, t, visited );
+  }
+}
+
+int TermDb::getTermDepth( Node n ) {
+  if (!n.hasAttribute(TermDepthAttribute()) ){
+    int maxDepth = -1;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      int depth = getTermDepth( n[i] );
+      if( depth>maxDepth ){
+        maxDepth = depth;
+      }
+    }
+    TermDepthAttribute tda;
+    n.setAttribute(tda,1+maxDepth);
+  }
+  return n.getAttribute(TermDepthAttribute());
+}
+
+bool TermDb::containsUninterpretedConstant( Node n ) {
+  if (!n.hasAttribute(ContainsUConstAttribute()) ){
+    bool ret = false;
+    if( n.getKind()==UNINTERPRETED_CONSTANT ){
+      ret = true;
+    }else{ 
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        if( containsUninterpretedConstant( n[i] ) ){
+          ret = true;
+          break;
+        }
+      }
+    }
+    ContainsUConstAttribute cuca;
+    n.setAttribute(cuca, ret ? 1 : 0);
+  }
+  return n.getAttribute(ContainsUConstAttribute())!=0;
+}
+
+Node TermDb::simpleNegate( Node n ){
+  if( n.getKind()==OR || n.getKind()==AND ){
+    std::vector< Node > children;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      children.push_back( simpleNegate( n[i] ) );
+    }
+    return NodeManager::currentNM()->mkNode( n.getKind()==OR ? AND : OR, children );
+  }else{
+    return n.negate();
+  }
+}
+
+bool TermDb::isAssoc( Kind k ) {
+  return k==PLUS || k==MULT || k==AND || k==OR || 
+         k==BITVECTOR_PLUS || k==BITVECTOR_MULT || k==BITVECTOR_AND || k==BITVECTOR_OR || k==BITVECTOR_XOR || k==BITVECTOR_XNOR || k==BITVECTOR_CONCAT ||
+         k==STRING_CONCAT;
+}
+
+bool TermDb::isComm( Kind k ) {
+  return k==EQUAL || k==PLUS || k==MULT || k==AND || k==OR || k==XOR || 
+         k==BITVECTOR_PLUS || k==BITVECTOR_MULT || k==BITVECTOR_AND || k==BITVECTOR_OR || k==BITVECTOR_XOR || k==BITVECTOR_XNOR;
+}
+
+bool TermDb::isBoolConnective( Kind k ) {
+  return k==OR || k==AND || k==EQUAL || k==ITE || k==FORALL || k==NOT || k==SEP_STAR;
+}
+
+bool TermDb::isBoolConnectiveTerm( TNode n ) {
+  return isBoolConnective( n.getKind() ) &&
+         ( n.getKind()!=EQUAL || n[0].getType().isBoolean() ) && 
+         ( n.getKind()!=ITE || n.getType().isBoolean() );
+}
+
+void TermDb::registerTrigger( theory::inst::Trigger* tr, Node op ){
+  if( std::find( d_op_triggers[op].begin(), d_op_triggers[op].end(), tr )==d_op_triggers[op].end() ){
+    d_op_triggers[op].push_back( tr );
+  }
+}
+
+bool TermDb::isInductionTerm( Node n ) {
+  TypeNode tn = n.getType();
+  if( options::dtStcInduction() && tn.isDatatype() ){
+    const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+    return !dt.isCodatatype();
+  }
+  if( options::intWfInduction() && n.getType().isInteger() ){
+    return true;
+  }
+  return false;
+}
+
+bool TermDb::isRewriteRule( Node q ) {
+  return !getRewriteRule( q ).isNull();
+}
+
+Node TermDb::getRewriteRule( Node q ) {
+  if( q.getKind()==FORALL && q.getNumChildren()==3 && q[2].getNumChildren()>0 && q[2][0][0].getKind()==REWRITE_RULE ){
+    return q[2][0][0];
+  }else{
+    return Node::null();
+  }
+}
+
+bool TermDb::isFunDef( Node q ) {
+  return !getFunDefHead( q ).isNull();
+}
+
+bool TermDb::isFunDefAnnotation( Node ipl ) {
+  if( !ipl.isNull() ){
+    for( unsigned i=0; i<ipl.getNumChildren(); i++ ){
+      if( ipl[i].getKind()==INST_ATTRIBUTE ){
+        if( ipl[i][0].getAttribute(FunDefAttribute()) ){
+          return true;
+        }
+      }
+    }
+  }
+  return false;
+}
+
+Node TermDb::getFunDefHead( Node q ) {
+  //&& q[1].getKind()==EQUAL && q[1][0].getKind()==APPLY_UF &&
+  if( q.getKind()==FORALL && q.getNumChildren()==3 ){
+
+    for( unsigned i=0; i<q[2].getNumChildren(); i++ ){
+      if( q[2][i].getKind()==INST_ATTRIBUTE ){
+        if( q[2][i][0].getAttribute(FunDefAttribute()) ){
+          return q[2][i][0];
+        }
+      }
+    }
+  }
+  return Node::null();
+}
+Node TermDb::getFunDefBody( Node q ) {
+  Node h = getFunDefHead( q );
+  if( !h.isNull() ){
+    if( q[1].getKind()==EQUAL ){
+      if( q[1][0]==h ){
+        return q[1][1];
+      }else if( q[1][1]==h ){
+        return q[1][0];
+      }
+    }else{
+      Node atom = q[1].getKind()==NOT ? q[1][0] : q[1];
+      bool pol = q[1].getKind()!=NOT;
+      if( atom==h ){
+        return NodeManager::currentNM()->mkConst( pol );
+      }
+    }
+  }
+  return Node::null();
+}
+
+bool TermDb::isSygusConjecture( Node q ) {
+  return ( q.getKind()==FORALL && q.getNumChildren()==3 ) ? isSygusConjectureAnnotation( q[2] ) : false;
+}
+
+bool TermDb::isSygusConjectureAnnotation( Node ipl ){
+  if( !ipl.isNull() ){
+    for( unsigned i=0; i<ipl.getNumChildren(); i++ ){
+      if( ipl[i].getKind()==INST_ATTRIBUTE ){
+        Node avar = ipl[i][0];
+        if( avar.getAttribute(SygusAttribute()) ){
+          return true;
+        }
+      }
+    }
+  }
+  return false;
+}
+
+bool TermDb::isQuantElimAnnotation( Node ipl ) {
+  if( !ipl.isNull() ){
+    for( unsigned i=0; i<ipl.getNumChildren(); i++ ){
+      if( ipl[i].getKind()==INST_ATTRIBUTE ){
+        Node avar = ipl[i][0];
+        if( avar.getAttribute(QuantElimAttribute()) ){
+          return true;
+        }
+      }
+    }
+  }
+  return false;
+}
+
+void TermDb::computeAttributes( Node q ) {
+  computeQuantAttributes( q, d_qattr[q] );
+  if( !d_qattr[q].d_rr.isNull() ){
+    if( d_quantEngine->getRewriteEngine()==NULL ){
+      Trace("quant-warn") << "WARNING : rewrite engine is null, and we have : " << q << std::endl;
+    }
+    //set rewrite engine as owner
+    d_quantEngine->setOwner( q, d_quantEngine->getRewriteEngine(), 2 );
+  }
+  if( d_qattr[q].isFunDef() ){
+    Node f = d_qattr[q].d_fundef_f;
+    if( d_fun_defs.find( f )!=d_fun_defs.end() ){
+      Message() << "Cannot define function " << f << " more than once." << std::endl;
+      exit( 1 );
+    }
+    d_fun_defs[f] = true;
+    d_quantEngine->setOwner( q, d_quantEngine->getFunDefEngine(), 2 );
+  }
+  if( d_qattr[q].d_sygus ){
+    if( d_quantEngine->getCegInstantiation()==NULL ){
+      Trace("quant-warn") << "WARNING : ceg instantiation is null, and we have : " << q << std::endl;
+    }
+    d_quantEngine->setOwner( q, d_quantEngine->getCegInstantiation(), 2 );
+  }
+  if( d_qattr[q].d_synthesis ){
+    if( d_quantEngine->getCegInstantiation()==NULL ){
+      Trace("quant-warn") << "WARNING : ceg instantiation is null, and we have : " << q << std::endl;
+    }
+    d_quantEngine->setOwner( q, d_quantEngine->getCegInstantiation(), 2 );
+  }
+}
+
+void TermDb::computeQuantAttributes( Node q, QAttributes& qa ){
+  Trace("quant-attr-debug") << "Compute attributes for " << q << std::endl;
+  if( q.getNumChildren()==3 ){
+    qa.d_ipl = q[2];
+    for( unsigned i=0; i<q[2].getNumChildren(); i++ ){
+      Trace("quant-attr-debug") << "Check : " << q[2][i] << " " << q[2][i].getKind() << std::endl;
+      if( q[2][i].getKind()==INST_PATTERN || q[2][i].getKind()==INST_NO_PATTERN ){
+        qa.d_hasPattern = true;
+      }else if( q[2][i].getKind()==INST_ATTRIBUTE ){
+        Node avar = q[2][i][0];
+        if( avar.getAttribute(AxiomAttribute()) ){
+          Trace("quant-attr") << "Attribute : axiom : " << q << std::endl;
+          qa.d_axiom = true;
+        }
+        if( avar.getAttribute(ConjectureAttribute()) ){
+          Trace("quant-attr") << "Attribute : conjecture : " << q << std::endl;
+          qa.d_conjecture = true;
+        }
+        if( avar.getAttribute(FunDefAttribute()) ){
+          Trace("quant-attr") << "Attribute : function definition : " << q << std::endl;
+          //get operator directly from pattern
+          qa.d_fundef_f = q[2][i][0].getOperator();
+        }
+        if( avar.getAttribute(SygusAttribute()) ){
+          //not necessarily nested existential
+          //Assert( q[1].getKind()==NOT );
+          //Assert( q[1][0].getKind()==FORALL );
+          Trace("quant-attr") << "Attribute : sygus : " << q << std::endl;
+          qa.d_sygus = true;
+        }
+        if( avar.getAttribute(SynthesisAttribute()) ){
+          Trace("quant-attr") << "Attribute : synthesis : " << q << std::endl;
+          qa.d_synthesis = true;
+        }
+        if( avar.hasAttribute(QuantInstLevelAttribute()) ){
+          qa.d_qinstLevel = avar.getAttribute(QuantInstLevelAttribute());
+          Trace("quant-attr") << "Attribute : quant inst level " << qa.d_qinstLevel << " : " << q << std::endl;
+        }
+        if( avar.hasAttribute(RrPriorityAttribute()) ){
+          qa.d_rr_priority = avar.getAttribute(RrPriorityAttribute());
+          Trace("quant-attr") << "Attribute : rr priority " << qa.d_rr_priority << " : " << q << std::endl;
+        }
+        if( avar.getAttribute(QuantElimAttribute()) ){
+          Trace("quant-attr") << "Attribute : quantifier elimination : " << q << std::endl;
+          qa.d_quant_elim = true;
+          //don't set owner, should happen naturally
+        }
+        if( avar.getAttribute(QuantElimPartialAttribute()) ){
+          Trace("quant-attr") << "Attribute : quantifier elimination partial : " << q << std::endl;
+          qa.d_quant_elim = true;
+          qa.d_quant_elim_partial = true;
+          //don't set owner, should happen naturally
+        }
+        if( avar.hasAttribute(QuantIdNumAttribute()) ){
+          qa.d_qid_num = avar;
+          Trace("quant-attr") << "Attribute : id number " << qa.d_qid_num.getAttribute(QuantIdNumAttribute()) << " : " << q << std::endl;
+        }
+        if( avar.getKind()==REWRITE_RULE ){
+          Trace("quant-attr") << "Attribute : rewrite rule : " << q << std::endl;
+          Assert( i==0 );
+          qa.d_rr = avar;
+        }
+      }
+    }
+  }
+}
+
+bool TermDb::isQAttrConjecture( Node q ) {
+  std::map< Node, QAttributes >::iterator it = d_qattr.find( q );
+  if( it==d_qattr.end() ){
+    return false;
+  }else{
+    return it->second.d_conjecture;
+  }
+}
+
+bool TermDb::isQAttrAxiom( Node q ) {
+  std::map< Node, QAttributes >::iterator it = d_qattr.find( q );
+  if( it==d_qattr.end() ){
+    return false;
+  }else{
+    return it->second.d_axiom;
+  }
+}
+
+bool TermDb::isQAttrFunDef( Node q ) {
+  std::map< Node, QAttributes >::iterator it = d_qattr.find( q );
+  if( it==d_qattr.end() ){
+    return false;
+  }else{
+    return it->second.isFunDef();
+  }
+}
+
+bool TermDb::isQAttrSygus( Node q ) {
+  std::map< Node, QAttributes >::iterator it = d_qattr.find( q );
+  if( it==d_qattr.end() ){
+    return false;
+  }else{
+    return it->second.d_sygus;
+  }
+}
+
+bool TermDb::isQAttrSynthesis( Node q ) {
+  std::map< Node, QAttributes >::iterator it = d_qattr.find( q );
+  if( it==d_qattr.end() ){
+    return false;
+  }else{
+    return it->second.d_synthesis;
+  }
+}
+
+int TermDb::getQAttrQuantInstLevel( Node q ) {
+  std::map< Node, QAttributes >::iterator it = d_qattr.find( q );
+  if( it==d_qattr.end() ){
+    return -1;
+  }else{
+    return it->second.d_qinstLevel;
+  }
+}
+
+int TermDb::getQAttrRewriteRulePriority( Node q ) {
+  std::map< Node, QAttributes >::iterator it = d_qattr.find( q );
+  if( it==d_qattr.end() ){
+    return -1;
+  }else{
+    return it->second.d_rr_priority;
+  }
+}
+
+bool TermDb::isQAttrQuantElim( Node q ) {
+  std::map< Node, QAttributes >::iterator it = d_qattr.find( q );
+  if( it==d_qattr.end() ){
+    return false;
+  }else{
+    return it->second.d_quant_elim;
+  }
+}
+
+bool TermDb::isQAttrQuantElimPartial( Node q ) {
+  std::map< Node, QAttributes >::iterator it = d_qattr.find( q );
+  if( it==d_qattr.end() ){
+    return false;
+  }else{
+    return it->second.d_quant_elim_partial;
+  }
+}
+
+int TermDb::getQAttrQuantIdNum( Node q ) {
+  std::map< Node, QAttributes >::iterator it = d_qattr.find( q );
+  if( it!=d_qattr.end() ){
+    if( !it->second.d_qid_num.isNull() ){
+      return it->second.d_qid_num.getAttribute(QuantIdNumAttribute());
+    }
+  }
+  return -1;
+}
+
+Node TermDb::getQAttrQuantIdNumNode( Node q ) {
+  std::map< Node, QAttributes >::iterator it = d_qattr.find( q );
+  if( it==d_qattr.end() ){
+    return Node::null();
+  }else{
+    return it->second.d_qid_num;
+  }
+}
+
+TermDbSygus::TermDbSygus( context::Context* c, QuantifiersEngine* qe ) : d_quantEngine( qe ){
+  d_true = NodeManager::currentNM()->mkConst( true );
+  d_false = NodeManager::currentNM()->mkConst( false );
+}
+
+bool TermDbSygus::reset( Theory::Effort e ) { 
+  return true;  
+}
+
+TNode TermDbSygus::getVar( TypeNode tn, int i ) {
+  while( i>=(int)d_fv[tn].size() ){
+    std::stringstream ss;
+    TypeNode vtn = tn;
+    if( tn.isDatatype() ){
+      const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+      ss << "fv_" << dt.getName() << "_" << i;
+      if( !dt.getSygusType().isNull() ){
+        vtn = TypeNode::fromType( dt.getSygusType() );
+      }
+    }else{
+      ss << "fv_" << tn << "_" << i;
+    }
+    Assert( !vtn.isNull() );
+    Node v = NodeManager::currentNM()->mkSkolem( ss.str(), vtn, "for sygus normal form testing" );
+    d_fv_stype[v] = tn;
+    d_fv_num[v] = i;
+    d_fv[tn].push_back( v );
+  }
+  return d_fv[tn][i];
+}
+
+TNode TermDbSygus::getVarInc( TypeNode tn, std::map< TypeNode, int >& var_count ) {
+  std::map< TypeNode, int >::iterator it = var_count.find( tn );
+  if( it==var_count.end() ){
+    var_count[tn] = 1;
+    return getVar( tn, 0 );
+  }else{
+    int index = it->second;
+    var_count[tn]++;
+    return getVar( tn, index );
+  }
+}
+
+TypeNode TermDbSygus::getSygusTypeForVar( Node v ) {
+  Assert( d_fv_stype.find( v )!=d_fv_stype.end() );
+  return d_fv_stype[v];
+}
+
+bool TermDbSygus::getMatch( Node p, Node n, std::map< int, Node >& s ) {
+  std::vector< int > new_s;
+  return getMatch2( p, n, s, new_s );
+}
+
+bool TermDbSygus::getMatch2( Node p, Node n, std::map< int, Node >& s, std::vector< int >& new_s ) {
+  std::map< Node, int >::iterator it = d_fv_num.find( p );
+  if( it!=d_fv_num.end() ){
+    Node prev = s[it->second];
+    s[it->second] = n;
+    if( prev.isNull() ){
+      new_s.push_back( it->second );
+    }
+    return prev.isNull() || prev==n;
+  }else if( n.getNumChildren()==0 ){
+    return p==n;
+  }else if( n.getKind()==p.getKind() && n.getNumChildren()==p.getNumChildren() ){
+    //try both ways?
+    unsigned rmax = TermDb::isComm( n.getKind() ) && n.getNumChildren()==2 ? 2 : 1;
+    std::vector< int > new_tmp;
+    for( unsigned r=0; r<rmax; r++ ){
+      bool success = true;
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        int io = r==0 ? i : ( i==0 ? 1 : 0 );
+        if( !getMatch2( p[i], n[io], s, new_tmp ) ){
+          success = false;
+          for( unsigned j=0; j<new_tmp.size(); j++ ){
+            s.erase( new_tmp[j] );
+          }
+          new_tmp.clear();
+          break;
+        }
+      }
+      if( success ){
+        new_s.insert( new_s.end(), new_tmp.begin(), new_tmp.end() );
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+bool TermDbSygus::getMatch( Node t, TypeNode st, int& index_found, std::vector< Node >& args, int index_exc, int index_start ) {
+  Assert( st.isDatatype() );
+  const Datatype& dt = ((DatatypeType)(st).toType()).getDatatype();
+  Assert( dt.isSygus() );
+  std::map< Kind, std::vector< Node > > kgens;
+  std::vector< Node > gens;
+  for( unsigned i=index_start; i<dt.getNumConstructors(); i++ ){
+    if( (int)i!=index_exc ){
+      Node g = getGenericBase( st, dt, i );
+      gens.push_back( g );
+      kgens[g.getKind()].push_back( g );
+      Trace("sygus-db-debug") << "Check generic base : " << g << " from " << dt[i].getName() << std::endl;
+      if( g.getKind()==t.getKind() ){
+        Trace("sygus-db-debug") << "Possible match ? " << g << " " << t << " for " << dt[i].getName() << std::endl;
+        std::map< int, Node > sigma;
+        if( getMatch( g, t, sigma ) ){
+          //we found an exact match
+          bool msuccess = true;
+          for( unsigned j=0; j<dt[i].getNumArgs(); j++ ){
+            if( sigma[j].isNull() ){
+              msuccess = false;
+              break;
+            }else{
+              args.push_back( sigma[j] );
+            }
+          }
+          if( msuccess ){
+            index_found = i;
+            return true;
+          }
+          //we found an exact match
+          //std::map< TypeNode, int > var_count;
+          //Node new_t = mkGeneric( dt, i, var_count, args );
+          //Trace("sygus-db-debug") << "Rewrote to : " << new_t << std::endl;
+          //return new_t;
+        }
+      }
+    }
+  }
+  /*
+  //otherwise, try to modulate based on kinds
+  for( std::map< Kind, std::vector< Node > >::iterator it = kgens.begin(); it != kgens.end(); ++it ){
+    if( it->second.size()>1 ){
+      for( unsigned i=0; i<it->second.size(); i++ ){
+        for( unsigned j=0; j<it->second.size(); j++ ){
+          if( i!=j ){
+            std::map< int, Node > sigma;
+            if( getMatch( it->second[i], it->second[j], sigma ) ){
+              if( sigma.size()==1 ){
+                //Node mod_pat = sigma.begin().second;
+                //Trace("cegqi-si-rcons-debug") << "Modulated pattern " << mod_pat << " from " << it->second[i] << " and " << it->second[j] << std::endl;
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  */
+  return false;
+}
+
+Node TermDbSygus::getGenericBase( TypeNode tn, const Datatype& dt, int c ) {
+  std::map< int, Node >::iterator it = d_generic_base[tn].find( c );
+  if( it==d_generic_base[tn].end() ){
+    registerSygusType( tn );
+    std::map< TypeNode, int > var_count;
+    std::map< int, Node > pre;
+    Node g = mkGeneric( dt, c, var_count, pre );
+    Trace("sygus-db-debug") << "Sygus DB : Generic is " << g << std::endl;
+    Node gr = Rewriter::rewrite( g );
+    Trace("sygus-db-debug") << "Sygus DB : Generic rewritten is " << gr << std::endl;
+    gr = Node::fromExpr( smt::currentSmtEngine()->expandDefinitions( gr.toExpr() ) );
+    Trace("sygus-db") << "Sygus DB : Generic base " << dt[c].getName() << " : " << gr << std::endl;
+    d_generic_base[tn][c] = gr;
+    return gr;
+  }else{
+    return it->second;
+  }
+}
+
+Node TermDbSygus::mkGeneric( const Datatype& dt, int c, std::map< TypeNode, int >& var_count, std::map< int, Node >& pre ) {
+  Assert( c>=0 && c<(int)dt.getNumConstructors() );
+  Assert( dt.isSygus() );
+  Assert( !dt[c].getSygusOp().isNull() );
+  std::vector< Node > children;
+  Node op = Node::fromExpr( dt[c].getSygusOp() );
+  if( op.getKind()!=BUILTIN ){
+    children.push_back( op );
+  }
+  Trace("sygus-db") << "mkGeneric " << dt.getName() << " " << op << " " << op.getKind() << "..." << std::endl;
+  for( int i=0; i<(int)dt[c].getNumArgs(); i++ ){
+    TypeNode tna = getArgType( dt[c], i );
+    Node a;
+    std::map< int, Node >::iterator it = pre.find( i );
+    if( it!=pre.end() ){
+      a = it->second;
+    }else{
+      a = getVarInc( tna, var_count );
+    }
+    Assert( !a.isNull() );
+    children.push_back( a );
+  }
+  Node ret;
+  if( op.getKind()==BUILTIN ){
+    ret = NodeManager::currentNM()->mkNode( op, children );
+  }else{
+    Kind ok = getOperatorKind( op );
+    Trace("sygus-db") << "Operator kind is " << ok << std::endl;
+    if( children.size()==1 && ok==kind::UNDEFINED_KIND ){
+      ret = children[0];
+    }else{
+      ret = NodeManager::currentNM()->mkNode( ok, children );
+      /*
+      Node n = NodeManager::currentNM()->mkNode( APPLY, children );
+      //must expand definitions
+      Node ne = Node::fromExpr( smt::currentSmtEngine()->expandDefinitions( n.toExpr() ) );
+      Trace("sygus-db-debug") << "Expanded definitions in " << n << " to " << ne << std::endl;
+      return ne;
+      */
+    }
+  }
+  Trace("sygus-db") << "...returning " << ret << std::endl;
+  return ret;
+}
+
+Node TermDbSygus::sygusToBuiltin( Node n, TypeNode tn ) {
+  std::map< Node, Node >::iterator it = d_sygus_to_builtin[tn].find( n );
+  if( it==d_sygus_to_builtin[tn].end() ){
+    Trace("sygus-db-debug") << "SygusToBuiltin : compute for " << n << ", type = " << tn << std::endl;
+    const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+    Assert( n.getKind()==APPLY_CONSTRUCTOR );
+    unsigned i = Datatype::indexOf( n.getOperator().toExpr() );
+    Assert( n.getNumChildren()==dt[i].getNumArgs() );
+    std::map< TypeNode, int > var_count;
+    std::map< int, Node > pre;
+    for( unsigned j=0; j<n.getNumChildren(); j++ ){
+      pre[j] = sygusToBuiltin( n[j], getArgType( dt[i], j ) );
+    }
+    Node ret = mkGeneric( dt, i, var_count, pre );
+    Trace("sygus-db-debug") << "SygusToBuiltin : Generic is " << ret << std::endl;
+    ret = Node::fromExpr( smt::currentSmtEngine()->expandDefinitions( ret.toExpr() ) );
+    Trace("sygus-db-debug") << "SygusToBuiltin : After expand definitions " << ret << std::endl;
+    d_sygus_to_builtin[tn][n] = ret;
+    return ret;
+  }else{
+    return it->second;
+  }
+}
+
+//rcons_depth limits the number of recursive calls when doing accelerated constant reconstruction (currently limited to 1000)
+//this is hacky : depending upon order of calls, constant rcons may succeed, e.g. 1001, 999 vs. 999, 1001
+Node TermDbSygus::builtinToSygusConst( Node c, TypeNode tn, int rcons_depth ) {
+  std::map< Node, Node >::iterator it = d_builtin_const_to_sygus[tn].find( c );
+  if( it==d_builtin_const_to_sygus[tn].end() ){
+    Node sc;
+    d_builtin_const_to_sygus[tn][c] = sc;
+    Assert( c.isConst() );
+    Assert( tn.isDatatype() );
+    const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+    Trace("csi-rcons-debug") << "Try to reconstruct " << c << " in " << dt.getName() << std::endl;
+    Assert( dt.isSygus() );
+    // if we are not interested in reconstructing constants, or the grammar allows them, return a proxy
+    if( !options::cegqiSingleInvReconstructConst() || dt.getSygusAllowConst() ){
+      Node k = NodeManager::currentNM()->mkSkolem( "sy", tn, "sygus proxy" );
+      SygusProxyAttribute spa;
+      k.setAttribute(spa,c);
+      sc = k;
+    }else{
+      int carg = getOpArg( tn, c );
+      if( carg!=-1 ){
+        //sc = Node::fromExpr( dt[carg].getSygusOp() );
+        sc = NodeManager::currentNM()->mkNode( APPLY_CONSTRUCTOR, Node::fromExpr( dt[carg].getConstructor() ) );
+      }else{
+        //identity functions
+        for( unsigned i=0; i<getNumIdFuncs( tn ); i++ ){
+          unsigned ii = getIdFuncIndex( tn, i );
+          Assert( dt[ii].getNumArgs()==1 );
+          //try to directly reconstruct from single argument
+          TypeNode tnc = getArgType( dt[ii], 0 );
+          Trace("csi-rcons-debug") << "Based on id function " << dt[ii].getSygusOp() << ", try reconstructing " << c << " instead in " << tnc << std::endl;
+          Node n = builtinToSygusConst( c, tnc, rcons_depth );
+          if( !n.isNull() ){
+            sc = NodeManager::currentNM()->mkNode( APPLY_CONSTRUCTOR, Node::fromExpr( dt[ii].getConstructor() ), n );
+            break;
+          }
+        }
+        if( sc.isNull() ){
+          if( rcons_depth<1000 ){
+            //accelerated, recursive reconstruction of constants
+            Kind pk = getPlusKind( TypeNode::fromType( dt.getSygusType() ) );
+            if( pk!=UNDEFINED_KIND ){
+              int arg = getKindArg( tn, pk );
+              if( arg!=-1 ){
+                Kind ck = getComparisonKind( TypeNode::fromType( dt.getSygusType() ) );
+                Kind pkm = getPlusKind( TypeNode::fromType( dt.getSygusType() ), true );
+                //get types
+                Assert( dt[arg].getNumArgs()==2 );
+                TypeNode tn1 = getArgType( dt[arg], 0 );
+                TypeNode tn2 = getArgType( dt[arg], 1 );
+                //iterate over all positive constants, largest to smallest
+                int start = d_const_list[tn1].size()-1;
+                int end = d_const_list[tn1].size()-d_const_list_pos[tn1];
+                for( int i=start; i>=end; --i ){
+                  Node c1 = d_const_list[tn1][i];
+                  //only consider if smaller than c, and
+                  if( doCompare( c1, c, ck ) ){
+                    Node c2 = NodeManager::currentNM()->mkNode( pkm, c, c1 );
+                    c2 = Rewriter::rewrite( c2 );
+                    if( c2.isConst() ){
+                      //reconstruct constant on the other side
+                      Node sc2 = builtinToSygusConst( c2, tn2, rcons_depth+1 );
+                      if( !sc2.isNull() ){
+                        Node sc1 = builtinToSygusConst( c1, tn1, rcons_depth );
+                        Assert( !sc1.isNull() );
+                        sc = NodeManager::currentNM()->mkNode( APPLY_CONSTRUCTOR, Node::fromExpr( dt[arg].getConstructor() ), sc1, sc2 );
+                        break;
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+    d_builtin_const_to_sygus[tn][c] = sc;
+    return sc;
+  }else{
+    return it->second;
+  }
+}
+
+Node TermDbSygus::getSygusNormalized( Node n, std::map< TypeNode, int >& var_count, std::map< Node, Node >& subs ) {
+  return n;
+  /*  TODO?
+  if( n.getKind()==SKOLEM ){
+    std::map< Node, Node >::iterator its = subs.find( n );
+    if( its!=subs.end() ){
+      return its->second;
+    }else{
+      std::map< Node, TypeNode >::iterator it = d_fv_stype.find( n );
+      if( it!=d_fv_stype.end() ){
+        Node v = getVarInc( it->second, var_count );
+        subs[n] = v;
+        return v;
+      }else{
+        return n;
+      }
+    }
+  }else{
+    if( n.getNumChildren()>0 ){
+      std::vector< Node > children;
+      if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+        children.push_back( n.getOperator() );
+      }
+      bool childChanged = false;
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        Node nc = getSygusNormalized( n[i], var_count, subs );
+        childChanged = childChanged || nc!=n[i];
+        children.push_back( nc );
+      }
+      if( childChanged ){
+        return NodeManager::currentNM()->mkNode( n.getKind(), children );
+      }
+    }
+    return n;
+  }
+  */
+}
+
+Node TermDbSygus::getNormalized( TypeNode t, Node prog, bool do_pre_norm, bool do_post_norm ) {
+  if( do_pre_norm ){
+    std::map< TypeNode, int > var_count;
+    std::map< Node, Node > subs;
+    prog = getSygusNormalized( prog, var_count, subs );
+  }
+  std::map< Node, Node >::iterator itn = d_normalized[t].find( prog );
+  if( itn==d_normalized[t].end() ){
+    Node progr = Node::fromExpr( smt::currentSmtEngine()->expandDefinitions( prog.toExpr() ) );
+    progr = Rewriter::rewrite( progr );
+    if( do_post_norm ){
+      std::map< TypeNode, int > var_count;
+      std::map< Node, Node > subs;
+      progr = getSygusNormalized( progr, var_count, subs );
+    }
+    Trace("sygus-sym-break2") << "...rewrites to " << progr << std::endl;
+    d_normalized[t][prog] = progr;
+    return progr;
+  }else{
+    return itn->second;
+  }
+}
+
+int TermDbSygus::getSygusTermSize( Node n ){
+  if( isVar( n ) ){
+    return 0;
+  }else{
+    int sum = 0;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      sum += getSygusTermSize( n[i] );
+    }
+    return 1+sum;
+  }
+}
+
+bool TermDbSygus::isAntisymmetric( Kind k, Kind& dk ) {
+  if( k==GT ){
+    dk = LT;
+    return true;
+  }else if( k==GEQ ){
+    dk = LEQ;
+    return true;
+  }else if( k==BITVECTOR_UGT ){
+    dk = BITVECTOR_ULT;
+    return true;
+  }else if( k==BITVECTOR_UGE ){
+    dk = BITVECTOR_ULE;
+    return true;
+  }else if( k==BITVECTOR_SGT ){
+    dk = BITVECTOR_SLT;
+    return true;
+  }else if( k==BITVECTOR_SGE ){
+    dk = BITVECTOR_SLE;
+    return true;
+  }else{
+    return false;
+  }
+}
+
+bool TermDbSygus::isIdempotentArg( Node n, Kind ik, int arg ) {
+  TypeNode tn = n.getType();
+  if( n==getTypeValue( tn, 0 ) ){
+    if( ik==PLUS || ik==OR || ik==XOR || ik==BITVECTOR_PLUS || ik==BITVECTOR_OR || ik==BITVECTOR_XOR ){
+      return true;
+    }else if( ik==MINUS || ik==BITVECTOR_SHL || ik==BITVECTOR_LSHR || ik==BITVECTOR_SUB ){
+      return arg==1;
+    }
+  }else if( n==getTypeValue( tn, 1 ) ){
+    if( ik==MULT || ik==BITVECTOR_MULT ){
+      return true;
+    }else if( ik==DIVISION || ik==BITVECTOR_UDIV || ik==BITVECTOR_SDIV ){
+      return arg==1;
+    }
+  }else if( n==getTypeMaxValue( tn ) ){
+    if( ik==EQUAL || ik==BITVECTOR_AND || ik==BITVECTOR_XNOR ){
+      return true;
+    }
+  }
+  return false;
+}
+
+
+bool TermDbSygus::isSingularArg( Node n, Kind ik, int arg ) {
+  TypeNode tn = n.getType();
+  if( n==getTypeValue( tn, 0 ) ){
+    if( ik==AND || ik==MULT || ik==BITVECTOR_AND || ik==BITVECTOR_MULT ){
+      return true;
+    }else if( ik==DIVISION || ik==BITVECTOR_UDIV || ik==BITVECTOR_SDIV ){
+      return arg==0;
+    }
+  }else if( n==getTypeMaxValue( tn ) ){
+    if( ik==OR || ik==BITVECTOR_OR ){
+      return true;
+    }
+  }
+  return false;
+}
+
+bool TermDbSygus::hasOffsetArg( Kind ik, int arg, int& offset, Kind& ok ) {
+  if( ik==LT ){
+    Assert( arg==0 || arg==1 );
+    offset = arg==0 ? 1 : -1;
+    ok = LEQ;
+    return true;
+  }else if( ik==BITVECTOR_ULT ){
+    Assert( arg==0 || arg==1 );
+    offset = arg==0 ? 1 : -1;
+    ok = BITVECTOR_ULE;
+    return true;
+  }else if( ik==BITVECTOR_SLT ){
+    Assert( arg==0 || arg==1 );
+    offset = arg==0 ? 1 : -1;
+    ok = BITVECTOR_SLE;
+    return true;
+  }
+  return false;
+}
+
+
+Node TermDbSygus::getTypeValue( TypeNode tn, int val ) {
+  std::map< int, Node >::iterator it = d_type_value[tn].find( val );
+  if( it==d_type_value[tn].end() ){
+    Node n;
+    if( tn.isInteger() || tn.isReal() ){
+      Rational c(val);
+      n = NodeManager::currentNM()->mkConst( c );
+    }else if( tn.isBitVector() ){
+      unsigned int uv = val;
+      BitVector bval(tn.getConst<BitVectorSize>(), uv);
+      n = NodeManager::currentNM()->mkConst<BitVector>(bval);
+    }else if( tn.isBoolean() ){
+      if( val==0 ){
+        n = d_false;
+      }
+    }
+    d_type_value[tn][val] = n;
+    return n;
+  }else{
+    return it->second;
+  }
+}
+
+Node TermDbSygus::getTypeMaxValue( TypeNode tn ) {
+  std::map< TypeNode, Node >::iterator it = d_type_max_value.find( tn );
+  if( it==d_type_max_value.end() ){
+    Node n;
+    if( tn.isBitVector() ){
+      n = bv::utils::mkOnes(tn.getConst<BitVectorSize>());
+    }else if( tn.isBoolean() ){
+      n = d_true;
+    }
+    d_type_max_value[tn] = n;
+    return n;
+  }else{
+    return it->second;
+  }
+}
+
+Node TermDbSygus::getTypeValueOffset( TypeNode tn, Node val, int offset, int& status ) {
+  std::map< int, Node >::iterator it = d_type_value_offset[tn][val].find( offset );
+  if( it==d_type_value_offset[tn][val].end() ){
+    Node val_o;
+    Node offset_val = getTypeValue( tn, offset );
+    status = -1;
+    if( !offset_val.isNull() ){
+      if( tn.isInteger() || tn.isReal() ){
+        val_o = Rewriter::rewrite( NodeManager::currentNM()->mkNode( PLUS, val, offset_val ) );
+        status = 0;
+      }else if( tn.isBitVector() ){
+        val_o = Rewriter::rewrite( NodeManager::currentNM()->mkNode( BITVECTOR_PLUS, val, offset_val ) );
+      }
+    }
+    d_type_value_offset[tn][val][offset] = val_o;
+    d_type_value_offset_status[tn][val][offset] = status;
+    return val_o;
+  }else{
+    status = d_type_value_offset_status[tn][val][offset];
+    return it->second;
+  }
+}
+
+struct sortConstants {
+  TermDbSygus * d_tds;
+  Kind d_comp_kind;
+  bool operator() (Node i, Node j) {
+    if( i!=j ){
+      return d_tds->doCompare( i, j, d_comp_kind );
+    }else{
+      return false;
+    }
+  }
+};
+
+void TermDbSygus::registerSygusType( TypeNode tn ){
+  if( d_register.find( tn )==d_register.end() ){
+    if( !tn.isDatatype() ){
+      d_register[tn] = TypeNode::null();
+    }else{
+      const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+      Trace("sygus-db") << "Register type " << dt.getName() << "..." << std::endl;
+      d_register[tn] = TypeNode::fromType( dt.getSygusType() );
+      if( d_register[tn].isNull() ){
+        Trace("sygus-db") << "...not sygus." << std::endl;
+      }else{
+        //for constant reconstruction
+        Kind ck = getComparisonKind( TypeNode::fromType( dt.getSygusType() ) );
+        Node z = getTypeValue( TypeNode::fromType( dt.getSygusType() ), 0 );
+        d_const_list_pos[tn] = 0;
+        //iterate over constructors
+        for( unsigned i=0; i<dt.getNumConstructors(); i++ ){
+          Expr sop = dt[i].getSygusOp();
+          Assert( !sop.isNull() );
+          Node n = Node::fromExpr( sop );
+          Trace("sygus-db") << "  Operator #" << i << " : " << sop;
+          if( sop.getKind() == kind::BUILTIN ){
+            Kind sk = NodeManager::operatorToKind( n );
+            Trace("sygus-db") << ", kind = " << sk;
+            d_kinds[tn][sk] = i;
+            d_arg_kind[tn][i] = sk;
+          }else if( sop.isConst() ){
+            Trace("sygus-db") << ", constant";
+            d_consts[tn][n] = i;
+            d_arg_const[tn][i] = n;
+            d_const_list[tn].push_back( n );
+            if( ck!=UNDEFINED_KIND && doCompare( z, n, ck ) ){
+              d_const_list_pos[tn]++;
+            }
+          }
+          if( dt[i].isSygusIdFunc() ){
+            d_id_funcs[tn].push_back( i );
+          }
+          d_ops[tn][n] = i;
+          d_arg_ops[tn][i] = n;
+          Trace("sygus-db") << std::endl;
+        }
+        //sort the constant list
+        if( !d_const_list[tn].empty() ){
+          if( ck!=UNDEFINED_KIND ){
+            sortConstants sc;
+            sc.d_comp_kind = ck;
+            sc.d_tds = this;
+            std::sort( d_const_list[tn].begin(), d_const_list[tn].end(), sc );
+          }
+          Trace("sygus-db") << "Type has " << d_const_list[tn].size() << " constants..." << std::endl << "  ";
+          for( unsigned i=0; i<d_const_list[tn].size(); i++ ){
+            Trace("sygus-db") << d_const_list[tn][i] << " ";
+          }
+          Trace("sygus-db") << std::endl;
+          Trace("sygus-db") << "Of these, " << d_const_list_pos[tn] << " are marked as positive." << std::endl;
+        }
+        //register connected types
+        for( unsigned i=0; i<dt.getNumConstructors(); i++ ){
+          for( unsigned j=0; j<dt[i].getNumArgs(); j++ ){
+            registerSygusType( getArgType( dt[i], j ) );
+          }
+        }
+      }
+    }
+  }
+}
+
+bool TermDbSygus::isRegistered( TypeNode tn ) {
+  return d_register.find( tn )!=d_register.end();
+}
+
+TypeNode TermDbSygus::sygusToBuiltinType( TypeNode tn ) {
+  Assert( isRegistered( tn ) );
+  return d_register[tn];
+}
+
+int TermDbSygus::getKindArg( TypeNode tn, Kind k ) {
+  Assert( isRegistered( tn ) );
+  std::map< TypeNode, std::map< Kind, int > >::iterator itt = d_kinds.find( tn );
+  if( itt!=d_kinds.end() ){
+    std::map< Kind, int >::iterator it = itt->second.find( k );
+    if( it!=itt->second.end() ){
+      return it->second;
+    }
+  }
+  return -1;
+}
+
+int TermDbSygus::getConstArg( TypeNode tn, Node n ){
+  Assert( isRegistered( tn ) );
+  std::map< TypeNode, std::map< Node, int > >::iterator itt = d_consts.find( tn );
+  if( itt!=d_consts.end() ){
+    std::map< Node, int >::iterator it = itt->second.find( n );
+    if( it!=itt->second.end() ){
+      return it->second;
+    }
+  }
+  return -1;
+}
+
+int TermDbSygus::getOpArg( TypeNode tn, Node n ) {
+  std::map< Node, int >::iterator it = d_ops[tn].find( n );
+  if( it!=d_ops[tn].end() ){
+    return it->second;
+  }else{
+    return -1;
+  }
+}
+
+bool TermDbSygus::hasKind( TypeNode tn, Kind k ) {
+  return getKindArg( tn, k )!=-1;
+}
+bool TermDbSygus::hasConst( TypeNode tn, Node n ) {
+  return getConstArg( tn, n )!=-1;
+}
+bool TermDbSygus::hasOp( TypeNode tn, Node n ) {
+  return getOpArg( tn, n )!=-1;
+}
+
+Node TermDbSygus::getArgOp( TypeNode tn, int i ) {
+  Assert( isRegistered( tn ) );
+  std::map< TypeNode, std::map< int, Node > >::iterator itt = d_arg_ops.find( tn );
+  if( itt!=d_arg_ops.end() ){
+    std::map< int, Node >::iterator itn = itt->second.find( i );
+    if( itn!=itt->second.end() ){
+      return itn->second;
+    }
+  }
+  return Node::null();
+}
+
+Node TermDbSygus::getArgConst( TypeNode tn, int i ) {
+  Assert( isRegistered( tn ) );
+  std::map< TypeNode, std::map< int, Node > >::iterator itt = d_arg_const.find( tn );
+  if( itt!=d_arg_const.end() ){
+    std::map< int, Node >::iterator itn = itt->second.find( i );
+    if( itn!=itt->second.end() ){
+      return itn->second;
+    }
+  }
+  return Node::null();
+}
+
+Kind TermDbSygus::getArgKind( TypeNode tn, int i ) {
+  Assert( isRegistered( tn ) );
+  std::map< TypeNode, std::map< int, Kind > >::iterator itt = d_arg_kind.find( tn );
+  if( itt!=d_arg_kind.end() ){
+    std::map< int, Kind >::iterator itk = itt->second.find( i );
+    if( itk!=itt->second.end() ){
+      return itk->second;
+    }
+  }
+  return UNDEFINED_KIND;
+}
+
+bool TermDbSygus::isKindArg( TypeNode tn, int i ) {
+  return getArgKind( tn, i )!=UNDEFINED_KIND;
+}
+
+bool TermDbSygus::isConstArg( TypeNode tn, int i ) {
+  Assert( isRegistered( tn ) );
+  std::map< TypeNode, std::map< int, Node > >::iterator itt = d_arg_const.find( tn );
+  if( itt!=d_arg_const.end() ){
+    return itt->second.find( i )!=itt->second.end();
+  }else{
+    return false;
+  }
+}
+
+unsigned TermDbSygus::getNumIdFuncs( TypeNode tn ) {
+  return d_id_funcs[tn].size();
+}
+
+unsigned TermDbSygus::getIdFuncIndex( TypeNode tn, unsigned i ) {
+  return d_id_funcs[tn][i];
+}
+
+TypeNode TermDbSygus::getArgType( const DatatypeConstructor& c, int i ) {
+  Assert( i>=0 && i<(int)c.getNumArgs() );
+  return TypeNode::fromType( ((SelectorType)c[i].getType()).getRangeType() );
+}
+
+Node TermDbSygus::minimizeBuiltinTerm( Node n ) {
+  if( ( n.getKind()==EQUAL || n.getKind()==LEQ || n.getKind()==LT || n.getKind()==GEQ || n.getKind()==GT ) &&
+      ( n[0].getType().isInteger() || n[0].getType().isReal() ) ){
+    bool changed = false;
+    std::vector< Node > mon[2];
+    for( unsigned r=0; r<2; r++ ){
+      unsigned ro = r==0 ? 1 : 0;
+      Node c;
+      Node nc;
+      if( n[r].getKind()==PLUS ){
+        for( unsigned i=0; i<n[r].getNumChildren(); i++ ){
+          if( QuantArith::getMonomial( n[r][i], c, nc ) && c.getConst<Rational>().isNegativeOne() ){
+            mon[ro].push_back( nc );
+            changed = true;
+          }else{
+            if( !n[r][i].isConst() || !n[r][i].getConst<Rational>().isZero() ){
+              mon[r].push_back( n[r][i] );
+            }
+          }
+        }
+      }else{
+        if( QuantArith::getMonomial( n[r], c, nc ) && c.getConst<Rational>().isNegativeOne() ){
+          mon[ro].push_back( nc );
+          changed = true;
+        }else{
+          if( !n[r].isConst() || !n[r].getConst<Rational>().isZero() ){
+            mon[r].push_back( n[r] );
+          }
+        }
+      }
+    }
+    if( changed ){
+      Node nn[2];
+      for( unsigned r=0; r<2; r++ ){
+        nn[r] = mon[r].size()==0 ? NodeManager::currentNM()->mkConst( Rational(0) ) : ( mon[r].size()==1 ? mon[r][0] : NodeManager::currentNM()->mkNode( PLUS, mon[r] ) );
+      }
+      return NodeManager::currentNM()->mkNode( n.getKind(), nn[0], nn[1] );
+    }
+  }
+  return n;
+}
+
+Node TermDbSygus::expandBuiltinTerm( Node t ){
+  if( t.getKind()==EQUAL ){
+    if( t[0].getType().isReal() ){
+      return NodeManager::currentNM()->mkNode( AND, NodeManager::currentNM()->mkNode( LEQ, t[0], t[1] ),
+                                                    NodeManager::currentNM()->mkNode( LEQ, t[1], t[0] ) );
+    }else if( t[0].getType().isBoolean() ){
+      return NodeManager::currentNM()->mkNode( OR, NodeManager::currentNM()->mkNode( AND, t[0], t[1] ),
+                                                   NodeManager::currentNM()->mkNode( AND, t[0].negate(), t[1].negate() ) );
+    }
+  }else if( t.getKind()==ITE && t.getType().isBoolean() ){
+    return NodeManager::currentNM()->mkNode( OR, NodeManager::currentNM()->mkNode( AND, t[0], t[1] ),
+                                                 NodeManager::currentNM()->mkNode( AND, t[0].negate(), t[2] ) );
+  }
+  return Node::null();
+}
+
+
+Kind TermDbSygus::getComparisonKind( TypeNode tn ) {
+  if( tn.isInteger() || tn.isReal() ){
+    return LT;
+  }else if( tn.isBitVector() ){
+    return BITVECTOR_ULT;
+  }else{
+    return UNDEFINED_KIND;
+  }
+}
+
+Kind TermDbSygus::getPlusKind( TypeNode tn, bool is_neg ) {
+  if( tn.isInteger() || tn.isReal() ){
+    return is_neg ? MINUS : PLUS;
+  }else if( tn.isBitVector() ){
+    return is_neg ? BITVECTOR_SUB : BITVECTOR_PLUS;
+  }else{
+    return UNDEFINED_KIND;
+  }
+}
+
+bool TermDbSygus::doCompare( Node a, Node b, Kind k ) {
+  Node com = NodeManager::currentNM()->mkNode( k, a, b );
+  com = Rewriter::rewrite( com );
+  return com==d_true;
+}
+
+
+void doStrReplace(std::string& str, const std::string& oldStr, const std::string& newStr){
+  size_t pos = 0;
+  while((pos = str.find(oldStr, pos)) != std::string::npos){
+     str.replace(pos, oldStr.length(), newStr);
+     pos += newStr.length();
+  }
+}
+
+Kind TermDbSygus::getOperatorKind( Node op ) {
+  Assert( op.getKind()!=BUILTIN );
+  if( smt::currentSmtEngine()->isDefinedFunction( op.toExpr() ) ){
+    return APPLY;
+  }else{
+    TypeNode tn = op.getType();
+    if( tn.isConstructor() ){
+      return APPLY_CONSTRUCTOR;
+    }else if( tn.isSelector() ){
+      return APPLY_SELECTOR;
+    }else if( tn.isTester() ){
+      return APPLY_TESTER;
+    }else{
+      return NodeManager::operatorToKind( op );
+    }
+  }
+}
+
+void TermDbSygus::printSygusTerm( std::ostream& out, Node n, std::vector< Node >& lvs ) {
+  if( n.getKind()==APPLY_CONSTRUCTOR ){
+    TypeNode tn = n.getType();
+    const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+    if( dt.isSygus() ){
+      int cIndex = Datatype::indexOf( n.getOperator().toExpr() );
+      Assert( !dt[cIndex].getSygusOp().isNull() );
+      if( dt[cIndex].getSygusLetBody().isNull() ){
+        if( n.getNumChildren()>0 ){
+          out << "(";
+        }
+        Node op = dt[cIndex].getSygusOp();
+        if( op.getType().isBitVector() && op.isConst() ){
+          //print in the style it was given
+          Trace("sygus-print-bvc") << "[Print " << op << " " << dt[cIndex].getName() << "]" << std::endl;
+          std::stringstream ss;
+          ss << dt[cIndex].getName();
+          std::string str = ss.str();
+          std::size_t found = str.find_last_of("_");
+          Assert( found!=std::string::npos );
+          std::string name = std::string( str.begin() + found +1, str.end() );
+          out << name;
+        }else{
+          out << op;
+        }
+        if( n.getNumChildren()>0 ){
+          for( unsigned i=0; i<n.getNumChildren(); i++ ){
+            out << " ";
+            printSygusTerm( out, n[i], lvs );
+          }
+          out << ")";
+        }
+      }else{
+        std::stringstream let_out;
+        //print as let term
+        if( dt[cIndex].getNumSygusLetInputArgs()>0 ){
+          let_out << "(let (";
+        }
+        std::vector< Node > subs_lvs;
+        std::vector< Node > new_lvs;
+        for( unsigned i=0; i<dt[cIndex].getNumSygusLetArgs(); i++ ){
+          Node v = Node::fromExpr( dt[cIndex].getSygusLetArg( i ) );
+          subs_lvs.push_back( v );
+          std::stringstream ss;
+          ss << "_l_" << new_lvs.size();
+          Node lv = NodeManager::currentNM()->mkBoundVar( ss.str(), v.getType() );
+          new_lvs.push_back( lv );
+          //map free variables to proper terms
+          if( i<dt[cIndex].getNumSygusLetInputArgs() ){
+            //it should be printed as a let argument
+            let_out << "(";
+            let_out << lv << " " << lv.getType() << " ";
+            printSygusTerm( let_out, n[i], lvs );
+            let_out << ")";
+          }
+        }
+        if( dt[cIndex].getNumSygusLetInputArgs()>0 ){
+          let_out << ") ";
+        }
+        //print the body
+        Node let_body = Node::fromExpr( dt[cIndex].getSygusLetBody() );
+        let_body = let_body.substitute( subs_lvs.begin(), subs_lvs.end(), new_lvs.begin(), new_lvs.end() );
+        new_lvs.insert( new_lvs.end(), lvs.begin(), lvs.end() );
+        printSygusTerm( let_out, let_body, new_lvs );
+        if( dt[cIndex].getNumSygusLetInputArgs()>0 ){
+          let_out << ")";
+        }
+        //do variable substitutions since ASSUMING : let_vars are interpreted literally and do not represent a class of variables
+        std::string lbody = let_out.str();
+        for( unsigned i=0; i<dt[cIndex].getNumSygusLetArgs(); i++ ){
+          std::stringstream old_str;
+          old_str << new_lvs[i];
+          std::stringstream new_str;
+          if( i>=dt[cIndex].getNumSygusLetInputArgs() ){
+            printSygusTerm( new_str, n[i], lvs );
+          }else{
+            new_str << Node::fromExpr( dt[cIndex].getSygusLetArg( i ) );
+          }
+          doStrReplace( lbody, old_str.str().c_str(), new_str.str().c_str() );
+        }
+        out << lbody;
+      }
+      return;
+    }
+  }else if( !n.getAttribute(SygusProxyAttribute()).isNull() ){
+    out << n.getAttribute(SygusProxyAttribute());
+  }else{
+    out << n;
+  }
+}
+
+Node TermDbSygus::getAnchor( Node n ) {
+  if( n.getKind()==APPLY_SELECTOR_TOTAL ){
+    return getAnchor( n[0] );
+  }else{
+    return n;
+  }
+}
+
+void TermDbSygus::registerEvalTerm( Node n ) {
+  if( options::sygusDirectEval() ){
+    if( n.getKind()==APPLY_UF && !n.getType().isBoolean() ){
+      Trace("sygus-eager") << "TermDbSygus::eager: Register eval term : " << n << std::endl;
+      TypeNode tn = n[0].getType();
+      if( tn.isDatatype() ){
+        const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+        if( dt.isSygus() ){
+          Node f = n.getOperator();
+          Trace("sygus-eager") << "...the evaluation function is : " << f << std::endl;
+          if( n[0].getKind()!=APPLY_CONSTRUCTOR ){
+            d_evals[n[0]].push_back( n );
+            TypeNode tn = n[0].getType();
+            Assert( tn.isDatatype() );
+            const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+            Node var_list = Node::fromExpr( dt.getSygusVarList() );
+            Assert( dt.isSygus() );
+            d_eval_args[n[0]].push_back( std::vector< Node >() );
+            for( unsigned j=1; j<n.getNumChildren(); j++ ){
+              //if( var_list[j-1].getType().isBoolean() ){
+              //  //TODO: remove this case when boolean term conversion is eliminated
+              //  Node c = NodeManager::currentNM()->mkConst(BitVector(1u, 1u));
+              //  d_eval_args[n[0]].back().push_back( n[j].eqNode( c ) );
+              //}else{
+                d_eval_args[n[0]].back().push_back( n[j] );
+              //}
+            }
+            Node a = getAnchor( n[0] );
+            d_subterms[a][n[0]] = true;
+          }
+        }
+      }    
+    }
+  }
+}
+
+void TermDbSygus::registerModelValue( Node a, Node v, std::vector< Node >& lems ) {
+  std::map< Node, std::map< Node, bool > >::iterator its = d_subterms.find( a );
+  if( its!=d_subterms.end() ){
+    Trace("sygus-eager") << "registerModelValue : " << a << ", has " << its->second.size() << " registered subterms." << std::endl;
+    for( std::map< Node, bool >::iterator itss = its->second.begin(); itss != its->second.end(); ++itss ){
+      Node n = itss->first;
+      Trace("sygus-eager-debug") << "...process : " << n << std::endl;
+      std::map< Node, std::vector< std::vector< Node > > >::iterator it = d_eval_args.find( n );
+      if( it!=d_eval_args.end() && !it->second.empty() ){
+        TNode at = a;
+        TNode vt = v;
+        Node vn = n.substitute( at, vt );
+        vn = Rewriter::rewrite( vn );
+        unsigned start = d_node_mv_args_proc[n][vn];
+        Node antec = n.eqNode( vn ).negate();
+        TypeNode tn = n.getType();
+        Assert( tn.isDatatype() );
+        const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+        Assert( dt.isSygus() );
+        Trace("sygus-eager") << "TermDbSygus::eager: Register model value : " << vn << " for " << n << std::endl;
+        Trace("sygus-eager") << "...it has " << it->second.size() << " evaluations, already processed " << start << "." << std::endl;
+        Node bTerm = d_quantEngine->getTermDatabaseSygus()->sygusToBuiltin( vn, tn );
+        Trace("sygus-eager") << "Built-in term : " << bTerm << std::endl;
+        std::vector< Node > vars;
+        Node var_list = Node::fromExpr( dt.getSygusVarList() );
+        for( unsigned j=0; j<var_list.getNumChildren(); j++ ){
+          vars.push_back( var_list[j] );
+        }
+        //for each evaluation
+        for( unsigned i=start; i<it->second.size(); i++ ){
+          Assert( vars.size()==it->second[i].size() );
+          Node sBTerm = bTerm.substitute( vars.begin(), vars.end(), it->second[i].begin(), it->second[i].end() );
+          Node lem = NodeManager::currentNM()->mkNode(EQUAL, d_evals[n][i], sBTerm ); 
+          lem = NodeManager::currentNM()->mkNode( OR, antec, lem );
+          Trace("sygus-eager") << "Lemma : " << lem << std::endl;
+          lems.push_back( lem );
+        }
+        d_node_mv_args_proc[n][vn] = it->second.size();
+      }
+    }
+  }
+}
+
+}/* CVC4::theory::quantifiers namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/quantifiers/term_database.h b/src/theory/quantifiers/term_database.h
new file mode 100644
index 0000000..9f43c1d
--- /dev/null
+++ b/src/theory/quantifiers/term_database.h
@@ -0,0 +1,682 @@
+/*********************                                                        */
+/*! \file term_database.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief term database class
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANTIFIERS__TERM_DATABASE_H
+#define __CVC4__THEORY__QUANTIFIERS__TERM_DATABASE_H
+
+#include "expr/attribute.h"
+#include "theory/theory.h"
+#include "theory/type_enumerator.h"
+#include "theory/quantifiers/quant_util.h"
+
+#include <map>
+
+namespace CVC4 {
+namespace theory {
+
+/** Attribute true for quantifiers that are axioms */
+struct AxiomAttributeId {};
+typedef expr::Attribute< AxiomAttributeId, bool > AxiomAttribute;
+
+/** Attribute true for quantifiers that are conjecture */
+struct ConjectureAttributeId {};
+typedef expr::Attribute< ConjectureAttributeId, bool > ConjectureAttribute;
+
+/** Attribute true for function definition quantifiers */
+struct FunDefAttributeId {};
+typedef expr::Attribute< FunDefAttributeId, bool > FunDefAttribute;
+
+/** Attribute true for quantifiers that are SyGus conjectures */
+struct SygusAttributeId {};
+typedef expr::Attribute< SygusAttributeId, bool > SygusAttribute;
+
+/** Attribute true for quantifiers that are synthesis conjectures */
+struct SynthesisAttributeId {};
+typedef expr::Attribute< SynthesisAttributeId, bool > SynthesisAttribute;
+
+// attribute for "contains instantiation constants from"
+struct InstConstantAttributeId {};
+typedef expr::Attribute<InstConstantAttributeId, Node> InstConstantAttribute;
+
+struct BoundVarAttributeId {};
+typedef expr::Attribute<BoundVarAttributeId, Node> BoundVarAttribute;
+
+struct InstLevelAttributeId {};
+typedef expr::Attribute<InstLevelAttributeId, uint64_t> InstLevelAttribute;
+
+struct InstVarNumAttributeId {};
+typedef expr::Attribute<InstVarNumAttributeId, uint64_t> InstVarNumAttribute;
+
+struct TermDepthAttributeId {};
+typedef expr::Attribute<TermDepthAttributeId, uint64_t> TermDepthAttribute;
+
+struct ContainsUConstAttributeId {};
+typedef expr::Attribute<ContainsUConstAttributeId, uint64_t> ContainsUConstAttribute;
+
+struct ModelBasisAttributeId {};
+typedef expr::Attribute<ModelBasisAttributeId, bool> ModelBasisAttribute;
+//for APPLY_UF terms, 1 : term has direct child with model basis attribute,
+//                    0 : term has no direct child with model basis attribute.
+struct ModelBasisArgAttributeId {};
+typedef expr::Attribute<ModelBasisArgAttributeId, uint64_t> ModelBasisArgAttribute;
+
+//for bounded integers
+struct BoundIntLitAttributeId {};
+typedef expr::Attribute<BoundIntLitAttributeId, uint64_t> BoundIntLitAttribute;
+
+//for quantifier instantiation level
+struct QuantInstLevelAttributeId {};
+typedef expr::Attribute<QuantInstLevelAttributeId, uint64_t> QuantInstLevelAttribute;
+
+//rewrite-rule priority
+struct RrPriorityAttributeId {};
+typedef expr::Attribute<RrPriorityAttributeId, uint64_t> RrPriorityAttribute;
+
+/** Attribute true for quantifiers that do not need to be partially instantiated */
+struct LtePartialInstAttributeId {};
+typedef expr::Attribute< LtePartialInstAttributeId, bool > LtePartialInstAttribute;
+
+// attribute for "contains instantiation constants from"
+struct SygusProxyAttributeId {};
+typedef expr::Attribute<SygusProxyAttributeId, Node> SygusProxyAttribute;
+
+//attribute for fun-def abstraction type
+struct AbsTypeFunDefAttributeId {};
+typedef expr::Attribute<AbsTypeFunDefAttributeId, bool> AbsTypeFunDefAttribute;
+
+/** Attribute true for quantifiers that we are doing quantifier elimination on */
+struct QuantElimAttributeId {};
+typedef expr::Attribute< QuantElimAttributeId, bool > QuantElimAttribute;
+
+/** Attribute true for quantifiers that we are doing partial quantifier elimination on */
+struct QuantElimPartialAttributeId {};
+typedef expr::Attribute< QuantElimPartialAttributeId, bool > QuantElimPartialAttribute;
+
+/** Attribute for id number */
+struct QuantIdNumAttributeId {};
+typedef expr::Attribute< QuantIdNumAttributeId, uint64_t > QuantIdNumAttribute;
+
+
+class QuantifiersEngine;
+
+namespace inst{
+  class Trigger;
+}
+
+namespace quantifiers {
+
+class TermArgTrie {
+public:
+  /** the data */
+  std::map< TNode, TermArgTrie > d_data;
+public:
+  bool hasNodeData() { return !d_data.empty(); }
+  TNode getNodeData() { return d_data.begin()->first; }
+  TNode existsTerm( std::vector< TNode >& reps, int argIndex = 0 );
+  TNode addOrGetTerm( TNode n, std::vector< TNode >& reps, int argIndex = 0 );
+  bool addTerm( TNode n, std::vector< TNode >& reps, int argIndex = 0 );
+  void debugPrint( const char * c, Node n, unsigned depth = 0 );
+  void clear() { d_data.clear(); }
+};/* class TermArgTrie */
+
+
+class QAttributes{
+public:
+  QAttributes() : d_hasPattern(false), d_conjecture(false), d_axiom(false), d_sygus(false),
+                  d_synthesis(false), d_rr_priority(-1), d_qinstLevel(-1), d_quant_elim(false), d_quant_elim_partial(false){}
+  ~QAttributes(){}
+  bool d_hasPattern;
+  Node d_rr;
+  bool d_conjecture;
+  bool d_axiom;
+  Node d_fundef_f;
+  bool d_sygus;
+  bool d_synthesis;
+  int d_rr_priority;
+  int d_qinstLevel;
+  bool d_quant_elim;
+  bool d_quant_elim_partial;
+  Node d_ipl;
+  Node d_qid_num;
+  bool isRewriteRule() { return !d_rr.isNull(); }
+  bool isFunDef() { return !d_fundef_f.isNull(); }
+};
+
+namespace fmcheck {
+  class FullModelChecker;
+}
+
+class TermDbSygus;
+class QuantConflictFind;
+class RelevantDomain;
+class ConjectureGenerator;
+class TermGenerator;
+class TermGenEnv;
+
+class TermDb : public QuantifiersUtil {
+  friend class ::CVC4::theory::QuantifiersEngine;
+  //TODO: eliminate most of these
+  friend class ::CVC4::theory::inst::Trigger;
+  friend class ::CVC4::theory::quantifiers::fmcheck::FullModelChecker;
+  friend class ::CVC4::theory::quantifiers::QuantConflictFind;
+  friend class ::CVC4::theory::quantifiers::RelevantDomain;
+  friend class ::CVC4::theory::quantifiers::ConjectureGenerator;
+  friend class ::CVC4::theory::quantifiers::TermGenEnv;
+  typedef context::CDHashMap<Node, int, NodeHashFunction> NodeIntMap;
+  typedef context::CDHashMap<Node, bool, NodeHashFunction> NodeBoolMap;
+private:
+  /** reference to the quantifiers engine */
+  QuantifiersEngine* d_quantEngine;
+  /** terms processed */
+  std::hash_set< Node, NodeHashFunction > d_processed;
+  /** terms processed */
+  std::hash_set< Node, NodeHashFunction > d_iclosure_processed;
+  /** select op map */
+  std::map< Node, std::map< TypeNode, Node > > d_par_op_map;
+  /** whether master equality engine is UF-inconsistent */
+  bool d_consistent_ee;
+
+ public:
+  TermDb(context::Context* c, context::UserContext* u, QuantifiersEngine* qe);
+  ~TermDb();
+  /** boolean terms */
+  Node d_true;
+  Node d_false;
+  /** constants */
+  Node d_zero;
+  Node d_one;
+
+ public:
+  /** presolve (called once per user check-sat) */
+  void presolve();
+  /** reset (calculate which terms are active) */
+  bool reset( Theory::Effort effort );
+  /** identify */
+  std::string identify() const { return "TermDb"; }  
+ private:
+  /** map from operators to ground terms for that operator */
+  std::map< Node, std::vector< Node > > d_op_map;
+  /** map from type nodes to terms of that type */
+  std::map< TypeNode, std::vector< Node > > d_type_map;
+  /** inactive map */
+  NodeBoolMap d_inactive_map;
+
+  /** count number of non-redundant ground terms per operator */
+  std::map< Node, int > d_op_nonred_count;
+  /**mapping from UF terms to representatives of their arguments */
+  std::map< TNode, std::vector< TNode > > d_arg_reps;
+  /** map from operators to trie */
+  std::map< Node, TermArgTrie > d_func_map_trie;
+  std::map< Node, TermArgTrie > d_func_map_eqc_trie;
+  /** mapping from operators to their representative relevant domains */
+  std::map< Node, std::map< unsigned, std::vector< Node > > > d_func_map_rel_dom;
+  /** has map */
+  std::map< Node, bool > d_has_map;
+  /** map from reps to a term in eqc in d_has_map */
+  std::map< Node, Node > d_term_elig_eqc;  
+  /** set has term */
+  void setHasTerm( Node n );
+  /** evaluate term */
+  Node evaluateTerm2( TNode n, std::map< TNode, Node >& visited, EqualityQuery * qy, bool useEntailmentTests );
+  TNode getEntailedTerm2( TNode n, std::map< TNode, TNode >& subs, bool subsRep, bool hasSubs, EqualityQuery * qy );
+  bool isEntailed2( TNode n, std::map< TNode, TNode >& subs, bool subsRep, bool hasSubs, bool pol, EqualityQuery * qy );
+public:
+  /** ground terms for operator */
+  unsigned getNumGroundTerms( Node f );
+  /** get ground term for operator */
+  Node getGroundTerm( Node f, unsigned i );
+  /** get num type terms */
+  unsigned getNumTypeGroundTerms( TypeNode tn );
+  /** get type ground term */
+  Node getTypeGroundTerm( TypeNode tn, unsigned i );
+  /** add a term to the database */
+  void addTerm( Node n, std::set< Node >& added, bool withinQuant = false, bool withinInstClosure = false );
+  /** get match operator */
+  Node getMatchOperator( Node n );
+  /** get term arg index */
+  TermArgTrie * getTermArgTrie( Node f );
+  TermArgTrie * getTermArgTrie( Node eqc, Node f );
+  /** exists term */
+  TNode getCongruentTerm( Node f, Node n );
+  TNode getCongruentTerm( Node f, std::vector< TNode >& args );
+  /** compute arg reps */
+  void computeArgReps( TNode n );
+  /** compute uf eqc terms */
+  void computeUfEqcTerms( TNode f );
+  /** compute uf terms */
+  void computeUfTerms( TNode f );
+  /** in relevant domain */
+  bool inRelevantDomain( TNode f, unsigned i, TNode r );
+  /** evaluate a term under a substitution.  Return representative in EE if possible.
+   * subsRep is whether subs contains only representatives
+   */
+  Node evaluateTerm( TNode n, EqualityQuery * qy = NULL, bool useEntailmentTests = false );
+  /** get entailed term, does not construct new terms, less aggressive */
+  TNode getEntailedTerm( TNode n, EqualityQuery * qy = NULL );
+  TNode getEntailedTerm( TNode n, std::map< TNode, TNode >& subs, bool subsRep, EqualityQuery * qy = NULL );
+  /** is entailed (incomplete check) */
+  bool isEntailed( TNode n, bool pol, EqualityQuery * qy = NULL );
+  bool isEntailed( TNode n, std::map< TNode, TNode >& subs, bool subsRep, bool pol, EqualityQuery * qy = NULL );
+  /** is active */
+  bool isTermActive( Node n );
+  void setTermInactive( Node n );
+  /** has term */
+  bool hasTermCurrent( Node n, bool useMode = true );
+  /** is term eligble for instantiation? */
+  bool isTermEligibleForInstantiation( TNode n, TNode f, bool print = false );
+  /** get has term eqc */
+  Node getEligibleTermInEqc( TNode r );
+  /** is inst closure */
+  bool isInstClosure( Node r );
+  
+//for model basis
+private:
+  //map from types to model basis terms
+  std::map< TypeNode, Node > d_model_basis_term;
+  //map from ops to model basis terms
+  std::map< Node, Node > d_model_basis_op_term;
+  //map from instantiation terms to their model basis equivalent
+  std::map< Node, Node > d_model_basis_body;
+  /** map from universal quantifiers to model basis terms */
+  std::map< Node, std::vector< Node > > d_model_basis_terms;
+  // compute model basis arg
+  void computeModelBasisArgAttribute( Node n );
+public:
+  //get model basis term
+  Node getModelBasisTerm( TypeNode tn, int i = 0 );
+  //get model basis term for op
+  Node getModelBasisOpTerm( Node op );
+  //get model basis
+  Node getModelBasis( Node q, Node n );
+  //get model basis body
+  Node getModelBasisBody( Node q );
+
+//for inst constant
+private:
+  /** map from universal quantifiers to the list of variables */
+  std::map< Node, std::vector< Node > > d_vars;
+  std::map< Node, std::map< Node, unsigned > > d_var_num;
+  /** map from universal quantifiers to their inst constant body */
+  std::map< Node, Node > d_inst_const_body;
+  /** map from universal quantifiers to their counterexample literals */
+  std::map< Node, Node > d_ce_lit;
+  /** instantiation constants to universal quantifiers */
+  std::map< Node, Node > d_inst_constants_map;
+  /** make instantiation constants for */
+  void makeInstantiationConstantsFor( Node q );
+public:
+  /** map from universal quantifiers to the list of instantiation constants */
+  std::map< Node, std::vector< Node > > d_inst_constants;
+  /** get variable number */
+  unsigned getVariableNum( Node q, Node v ) { return d_var_num[q][v]; }
+  /** get the i^th instantiation constant of q */
+  Node getInstantiationConstant( Node q, int i ) const;
+  /** get number of instantiation constants for q */
+  unsigned getNumInstantiationConstants( Node q ) const;
+  /** get the ce body q[e/x] */
+  Node getInstConstantBody( Node q );
+  /** get counterexample literal (for cbqi) */
+  Node getCounterexampleLiteral( Node q );
+  /** returns node n with bound vars of q replaced by instantiation constants of q
+      node n : is the future pattern
+      node q : is the quantifier containing which bind the variable
+      return a pattern where the variable are replaced by variable for
+      instantiation.
+   */
+  Node getInstConstantNode( Node n, Node q );
+  Node getVariableNode( Node n, Node q );
+  /** get substituted node */
+  Node getInstantiatedNode( Node n, Node q, std::vector< Node >& terms );
+
+  static Node getInstConstAttr( Node n );
+  static bool hasInstConstAttr( Node n );
+  static Node getBoundVarAttr( Node n );
+  static bool hasBoundVarAttr( Node n );
+  
+private:
+  /** get bound vars */
+  static void getBoundVars2( Node n, std::vector< Node >& vars, std::map< Node, bool >& visited );
+  /** get bound vars */
+  static Node getRemoveQuantifiers2( Node n, std::map< Node, Node >& visited );
+public:
+  //get the bound variables in this node
+  static void getBoundVars( Node n, std::vector< Node >& vars );
+  //remove quantifiers
+  static Node getRemoveQuantifiers( Node n );
+  //quantified simplify (treat free variables in n as quantified and run rewriter)
+  static Node getQuantSimplify( Node n );
+
+//for skolem
+private:
+  /** map from universal quantifiers to their skolemized body */
+  std::map< Node, Node > d_skolem_body;
+public:
+  /** map from universal quantifiers to the list of skolem constants */
+  std::map< Node, std::vector< Node > > d_skolem_constants;
+  /** make the skolemized body f[e/x] */
+  static Node mkSkolemizedBody( Node f, Node n, std::vector< TypeNode >& fvTypes, std::vector< TNode >& fvs,
+                                std::vector< Node >& sk, Node& sub, std::vector< unsigned >& sub_vars );
+  /** get the skolemized body */
+  Node getSkolemizedBody( Node f);
+  /** is induction variable */
+  static bool isInductionTerm( Node n );
+
+//for ground term enumeration
+private:
+  /** ground terms enumerated for types */
+  std::map< TypeNode, std::vector< Node > > d_enum_terms;
+  //type enumerators
+  std::map< TypeNode, unsigned > d_typ_enum_map;
+  std::vector< TypeEnumerator > d_typ_enum;
+  // closed enumerable type cache
+  std::map< TypeNode, bool > d_typ_closed_enum;
+  /** may complete */
+  std::map< TypeNode, bool > d_may_complete;
+public:
+  //get nth term for type
+  Node getEnumerateTerm( TypeNode tn, unsigned index );
+  //does this type have an enumerator that produces constants that are handled by ground theory solvers
+  bool isClosedEnumerableType( TypeNode tn );
+  // may complete
+  bool mayComplete( TypeNode tn );
+
+//for triggers
+private:
+  /** helper function for compute var contains */
+  static void computeVarContains2( Node n, Kind k, std::vector< Node >& varContains, std::map< Node, bool >& visited );
+  /** triggers for each operator */
+  std::map< Node, std::vector< inst::Trigger* > > d_op_triggers;
+  /** helper for is instance of */
+  static bool isUnifiableInstanceOf( Node n1, Node n2, std::map< Node, Node >& subs );
+  /** -1: n1 is an instance of n2, 1: n1 is an instance of n2 */
+  static int isInstanceOf2( Node n1, Node n2, std::vector< Node >& varContains1, std::vector< Node >& varContains2 );
+public:
+  /** compute var contains */
+  static void computeVarContains( Node n, std::vector< Node >& varContains );
+  /** get var contains for each of the patterns in pats */
+  static void getVarContains( Node f, std::vector< Node >& pats, std::map< Node, std::vector< Node > >& varContains );
+  /** get var contains for node n */
+  static void getVarContainsNode( Node f, Node n, std::vector< Node >& varContains );
+  /** compute quant contains */
+  static void computeQuantContains( Node n, std::vector< Node >& quantContains );
+  /** -1: n1 is an instance of n2, 1: n1 is an instance of n2 */
+  static int isInstanceOf( Node n1, Node n2 );
+  /** filter all nodes that have instances */
+  static void filterInstances( std::vector< Node >& nodes );
+  /** register trigger (for eager quantifier instantiation) */
+  void registerTrigger( inst::Trigger* tr, Node op );
+
+//for term ordering
+private:
+  /** operator id count */
+  int d_op_id_count;
+  /** map from operators to id */
+  std::map< Node, int > d_op_id;
+  /** type id count */
+  int d_typ_id_count;
+  /** map from type to id */
+  std::map< TypeNode, int > d_typ_id;
+  //free variables
+  std::map< TypeNode, std::vector< Node > > d_cn_free_var;
+  // get canonical term, return null if it contains a term apart from handled signature
+  Node getCanonicalTerm( TNode n, std::map< TypeNode, unsigned >& var_count, std::map< TNode, TNode >& subs, bool apply_torder, 
+                         std::map< TNode, Node >& visited );
+public:
+  /** get id for operator */
+  int getIdForOperator( Node op );
+  /** get id for type */
+  int getIdForType( TypeNode t );
+  /** get term order */
+  bool getTermOrder( Node a, Node b );
+  /** get canonical free variable #i of type tn */
+  Node getCanonicalFreeVar( TypeNode tn, unsigned i );
+  /** get canonical term */
+  Node getCanonicalTerm( TNode n, bool apply_torder = false );
+
+//for virtual term substitution
+private:
+  Node d_vts_delta;
+  std::map< TypeNode, Node > d_vts_inf;
+  Node d_vts_delta_free;
+  std::map< TypeNode, Node > d_vts_inf_free;
+  /** get vts infinity index */
+  Node getVtsInfinityIndex( int i, bool isFree = false, bool create = true  );
+  /** substitute vts free terms */
+  Node substituteVtsFreeTerms( Node n );
+public:
+  /** get vts delta */
+  Node getVtsDelta( bool isFree = false, bool create = true );
+  /** get vts infinity */
+  Node getVtsInfinity( TypeNode tn, bool isFree = false, bool create = true );
+  /** get all vts terms */
+  void getVtsTerms( std::vector< Node >& t, bool isFree = false, bool create = true, bool inc_delta = true );
+  /** rewrite delta */
+  Node rewriteVtsSymbols( Node n );
+  /** simple check for contains term */
+  bool containsVtsTerm( Node n, bool isFree = false );
+  /** simple check for contains term */
+  bool containsVtsTerm( std::vector< Node >& n, bool isFree = false );
+  /** simple check for contains term */
+  bool containsVtsInfinity( Node n, bool isFree = false );
+  /** ensure type */
+  static Node ensureType( Node n, TypeNode tn );
+  /** get ensure type condition */
+  static bool getEnsureTypeCondition( Node n, TypeNode tn, std::vector< Node >& cond );
+  /** get relevancy condition */
+  static void getRelevancyCondition( Node n, std::vector< Node >& cond );
+private:
+  //helper for contains term
+  static bool containsTerm2( Node n, Node t, std::map< Node, bool >& visited );
+  static bool containsTerms2( Node n, std::vector< Node >& t, std::map< Node, bool >& visited );
+//general utilities
+public:
+  /** simple check for whether n contains t as subterm */
+  static bool containsTerm( Node n, Node t );
+  /** simple check for contains term, true if contains at least one term in t */
+  static bool containsTerms( Node n, std::vector< Node >& t );
+  /** contains uninterpreted constant */
+  static bool containsUninterpretedConstant( Node n );
+  /** get the term depth of n */
+  static int getTermDepth( Node n );
+  /** simple negate */
+  static Node simpleNegate( Node n );
+  /** is assoc */
+  static bool isAssoc( Kind k );
+  /** is comm */
+  static bool isComm( Kind k );
+  /** is bool connective */
+  static bool isBoolConnective( Kind k );
+  /** is bool connective term */
+  static bool isBoolConnectiveTerm( TNode n );
+
+//for sygus
+private:
+  TermDbSygus * d_sygus_tdb;
+public:
+  TermDbSygus * getTermDatabaseSygus() { return d_sygus_tdb; }
+
+private:
+  std::map< Node, bool > d_fun_defs;
+public: //general queries concerning quantified formulas wrt modules
+  /** is quantifier treated as a rewrite rule? */
+  static bool isRewriteRule( Node q );
+  /** get the rewrite rule associated with the quanfied formula */
+  static Node getRewriteRule( Node q );
+  /** is fun def */
+  static bool isFunDef( Node q );
+  /** is fun def */
+  static bool isFunDefAnnotation( Node ipl );
+  /** is sygus conjecture */
+  static bool isSygusConjecture( Node q );
+  /** is sygus conjecture */
+  static bool isSygusConjectureAnnotation( Node ipl );
+  /** get fun def body */
+  static Node getFunDefHead( Node q );
+  /** get fun def body */
+  static Node getFunDefBody( Node q );
+  /** is quant elim annotation */
+  static bool isQuantElimAnnotation( Node ipl );
+//attributes
+private:
+  std::map< Node, QAttributes > d_qattr;
+  //record attributes
+  void computeAttributes( Node q );
+public:
+  /** is conjecture */
+  bool isQAttrConjecture( Node q );
+  /** is axiom */
+  bool isQAttrAxiom( Node q );
+  /** is function definition */
+  bool isQAttrFunDef( Node q );
+  /** is sygus conjecture */
+  bool isQAttrSygus( Node q );
+  /** is synthesis conjecture */
+  bool isQAttrSynthesis( Node q );
+  /** get instantiation level */
+  int getQAttrQuantInstLevel( Node q );
+  /** get rewrite rule priority */
+  int getQAttrRewriteRulePriority( Node q );
+  /** is quant elim */
+  bool isQAttrQuantElim( Node q );
+  /** is quant elim partial */
+  bool isQAttrQuantElimPartial( Node q );
+  /** get quant id num */
+  int getQAttrQuantIdNum( Node q );
+  /** get quant id num */
+  Node getQAttrQuantIdNumNode( Node q );
+  /** compute quantifier attributes */
+  static void computeQuantAttributes( Node q, QAttributes& qa );
+};/* class TermDb */
+
+class TermDbSygus {
+private:
+  /** reference to the quantifiers engine */
+  QuantifiersEngine* d_quantEngine;
+  std::map< TypeNode, std::vector< Node > > d_fv;
+  std::map< Node, TypeNode > d_fv_stype;
+  std::map< Node, int > d_fv_num;
+  Node d_true;
+  Node d_false;
+public:
+  TNode getVar( TypeNode tn, int i );
+  TNode getVarInc( TypeNode tn, std::map< TypeNode, int >& var_count );
+  bool isVar( Node n ) { return d_fv_stype.find( n )!=d_fv_stype.end(); }
+  int getVarNum( Node n ) { return d_fv_num[n]; }
+private:
+  std::map< TypeNode, std::map< int, Node > > d_generic_base;
+  std::map< TypeNode, std::vector< Node > > d_generic_templ;
+  bool getMatch( Node p, Node n, std::map< int, Node >& s );
+  bool getMatch2( Node p, Node n, std::map< int, Node >& s, std::vector< int >& new_s );
+public:
+  bool getMatch( Node n, TypeNode st, int& index_found, std::vector< Node >& args, int index_exc = -1, int index_start = 0 );
+private:
+  //information for sygus types
+  std::map< TypeNode, TypeNode > d_register;  //stores sygus -> builtin type
+  std::map< TypeNode, std::map< int, Kind > > d_arg_kind;
+  std::map< TypeNode, std::map< Kind, int > > d_kinds;
+  std::map< TypeNode, std::map< int, Node > > d_arg_const;
+  std::map< TypeNode, std::map< Node, int > > d_consts;
+  std::map< TypeNode, std::map< Node, int > > d_ops;
+  std::map< TypeNode, std::map< int, Node > > d_arg_ops;
+  std::map< TypeNode, std::vector< int > > d_id_funcs;
+  std::map< TypeNode, std::vector< Node > > d_const_list; //sorted list of constants for type
+  std::map< TypeNode, unsigned > d_const_list_pos;
+  //information for builtin types
+  std::map< TypeNode, std::map< int, Node > > d_type_value;
+  std::map< TypeNode, Node > d_type_max_value;
+  std::map< TypeNode, std::map< Node, std::map< int, Node > > > d_type_value_offset;
+  std::map< TypeNode, std::map< Node, std::map< int, int > > > d_type_value_offset_status;
+  //normalized map
+  std::map< TypeNode, std::map< Node, Node > > d_normalized;
+  std::map< TypeNode, std::map< Node, Node > > d_sygus_to_builtin;
+  std::map< TypeNode, std::map< Node, Node > > d_builtin_const_to_sygus;
+public:
+  TermDbSygus( context::Context* c, QuantifiersEngine* qe );
+  ~TermDbSygus(){}
+  bool reset( Theory::Effort e );
+  std::string identify() const { return "TermDbSygus"; }
+  
+  bool isRegistered( TypeNode tn );
+  TypeNode sygusToBuiltinType( TypeNode tn );
+  int getKindArg( TypeNode tn, Kind k );
+  int getConstArg( TypeNode tn, Node n );
+  int getOpArg( TypeNode tn, Node n );
+  bool hasKind( TypeNode tn, Kind k );
+  bool hasConst( TypeNode tn, Node n );
+  bool hasOp( TypeNode tn, Node n );
+  Node getArgConst( TypeNode tn, int i );
+  Node getArgOp( TypeNode tn, int i );
+  Kind getArgKind( TypeNode tn, int i );
+  bool isKindArg( TypeNode tn, int i );
+  bool isConstArg( TypeNode tn, int i );
+  unsigned getNumIdFuncs( TypeNode tn );
+  unsigned getIdFuncIndex( TypeNode tn, unsigned i );
+  void registerSygusType( TypeNode tn );
+  /** get arg type */
+  TypeNode getArgType( const DatatypeConstructor& c, int i );
+  /** isAntisymmetric */
+  bool isAntisymmetric( Kind k, Kind& dk );
+  /** is idempotent arg */
+  bool isIdempotentArg( Node n, Kind ik, int arg );
+  /** is singular arg */
+  bool isSingularArg( Node n, Kind ik, int arg );
+  /** get offset arg */
+  bool hasOffsetArg( Kind ik, int arg, int& offset, Kind& ok );
+  /** get value */
+  Node getTypeValue( TypeNode tn, int val );
+  /** get value */
+  Node getTypeValueOffset( TypeNode tn, Node val, int offset, int& status );
+  /** get value */
+  Node getTypeMaxValue( TypeNode tn );
+  TypeNode getSygusTypeForVar( Node v );
+  Node getGenericBase( TypeNode tn, const Datatype& dt, int c );
+  Node mkGeneric( const Datatype& dt, int c, std::map< TypeNode, int >& var_count, std::map< int, Node >& pre );
+  Node sygusToBuiltin( Node n, TypeNode tn );
+  Node builtinToSygusConst( Node c, TypeNode tn, int rcons_depth = 0 );
+  Node getSygusNormalized( Node n, std::map< TypeNode, int >& var_count, std::map< Node, Node >& subs );
+  Node getNormalized( TypeNode t, Node prog, bool do_pre_norm = false, bool do_post_norm = true );
+  int getSygusTermSize( Node n );
+  /** given a term, construct an equivalent smaller one that respects syntax */
+  Node minimizeBuiltinTerm( Node n );
+  /** given a term, expand it into more basic components */
+  Node expandBuiltinTerm( Node n );
+  /** get comparison kind */
+  Kind getComparisonKind( TypeNode tn );
+  Kind getPlusKind( TypeNode tn, bool is_neg = false );
+  bool doCompare( Node a, Node b, Kind k );
+  /** get operator kind */
+  static Kind getOperatorKind( Node op );
+  /** print sygus term */
+  static void printSygusTerm( std::ostream& out, Node n, std::vector< Node >& lvs );
+  
+  /** get anchor */
+  static Node getAnchor( Node n );
+//for eager instantiation
+private:
+  std::map< Node, std::map< Node, bool > > d_subterms;
+  std::map< Node, std::vector< Node > > d_evals;
+  std::map< Node, std::vector< std::vector< Node > > > d_eval_args;
+  std::map< Node, std::map< Node, unsigned > > d_node_mv_args_proc;
+public:
+  void registerEvalTerm( Node n );
+  void registerModelValue( Node n, Node v, std::vector< Node >& lems );
+};
+
+}/* CVC4::theory::quantifiers namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__QUANTIFIERS__TERM_DATABASE_H */
diff --git a/src/theory/quantifiers/theory_quantifiers.cpp b/src/theory/quantifiers/theory_quantifiers.cpp
new file mode 100644
index 0000000..0b4f3c0
--- /dev/null
+++ b/src/theory/quantifiers/theory_quantifiers.cpp
@@ -0,0 +1,202 @@
+/*********************                                                        */
+/*! \file theory_quantifiers.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of the theory of quantifiers
+ **
+ ** Implementation of the theory of quantifiers.
+ **/
+
+#include "theory/quantifiers/theory_quantifiers.h"
+
+
+#include "base/cvc4_assert.h"
+#include "expr/kind.h"
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/instantiation_engine.h"
+#include "theory/quantifiers/model_engine.h"
+#include "theory/quantifiers/quantifiers_attributes.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers_engine.h"
+#include "theory/valuation.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::quantifiers;
+
+TheoryQuantifiers::TheoryQuantifiers(Context* c, context::UserContext* u, OutputChannel& out, Valuation valuation, const LogicInfo& logicInfo) :
+    Theory(THEORY_QUANTIFIERS, c, u, out, valuation, logicInfo),
+  d_masterEqualityEngine(0)
+{
+  d_numInstantiations = 0;
+  d_baseDecLevel = -1;
+  out.handleUserAttribute( "axiom", this );
+  out.handleUserAttribute( "conjecture", this );
+  out.handleUserAttribute( "fun-def", this );
+  out.handleUserAttribute( "sygus", this );
+  out.handleUserAttribute( "synthesis", this );
+  out.handleUserAttribute( "quant-inst-max-level", this );
+  out.handleUserAttribute( "rr-priority", this );
+  out.handleUserAttribute( "quant-elim", this );
+  out.handleUserAttribute( "quant-elim-partial", this );
+}
+
+TheoryQuantifiers::~TheoryQuantifiers() {
+}
+
+void TheoryQuantifiers::setMasterEqualityEngine(eq::EqualityEngine* eq) {
+  d_masterEqualityEngine = eq;
+}
+
+void TheoryQuantifiers::addSharedTerm(TNode t) {
+  Debug("quantifiers-other") << "TheoryQuantifiers::addSharedTerm(): "
+                     << t << endl;
+}
+
+
+void TheoryQuantifiers::notifyEq(TNode lhs, TNode rhs) {
+  Debug("quantifiers-other") << "TheoryQuantifiers::notifyEq(): "
+                     << lhs << " = " << rhs << endl;
+
+}
+
+void TheoryQuantifiers::preRegisterTerm(TNode n) {
+  Debug("quantifiers-prereg") << "TheoryQuantifiers::preRegisterTerm() " << n << endl;
+  if( n.getKind()==FORALL ){
+    if( !options::cbqi() || options::recurseCbqi() || !TermDb::hasInstConstAttr(n) ){
+      getQuantifiersEngine()->registerQuantifier( n );
+      Debug("quantifiers-prereg") << "TheoryQuantifiers::preRegisterTerm() done " << n << endl;
+    }
+  }
+}
+
+
+void TheoryQuantifiers::presolve() {
+  Debug("quantifiers-presolve") << "TheoryQuantifiers::presolve()" << endl;
+  if( getQuantifiersEngine() ){
+    getQuantifiersEngine()->presolve();
+  }
+}
+
+void TheoryQuantifiers::ppNotifyAssertions( std::vector< Node >& assertions ) {
+  Trace("quantifiers-presolve") << "TheoryQuantifiers::ppNotifyAssertions" << std::endl;
+  if( getQuantifiersEngine() ){
+    getQuantifiersEngine()->ppNotifyAssertions( assertions );
+  }
+}
+
+Node TheoryQuantifiers::getValue(TNode n) {
+  //NodeManager* nodeManager = NodeManager::currentNM();
+  switch(n.getKind()) {
+  case FORALL:
+  case EXISTS:
+    bool value;
+    if( d_valuation.hasSatValue( n, value ) ){
+      return NodeManager::currentNM()->mkConst(value);
+    }else{
+      return NodeManager::currentNM()->mkConst(false);  //FIX_THIS?
+    }
+    break;
+  default:
+    Unhandled(n.getKind());
+  }
+}
+
+void TheoryQuantifiers::computeCareGraph() {
+  //do nothing
+}
+
+void TheoryQuantifiers::collectModelInfo(TheoryModel* m, bool fullModel) {
+  if(fullModel) {
+    for(assertions_iterator i = facts_begin(); i != facts_end(); ++i) {
+      if((*i).assertion.getKind() == kind::NOT) {
+        Debug("quantifiers::collectModelInfo") << "got quant FALSE: " << (*i).assertion[0] << endl;
+        m->assertPredicate((*i).assertion[0], false);
+      } else {
+        Debug("quantifiers::collectModelInfo") << "got quant TRUE : " << *i << endl;
+        m->assertPredicate(*i, true);
+      }
+    }
+  }
+}
+
+void TheoryQuantifiers::check(Effort e) {
+  if (done() && !fullEffort(e)) {
+    return;
+  }
+
+  TimerStat::CodeTimer checkTimer(d_checkTime);
+
+  Trace("quantifiers-check") << "quantifiers::check(" << e << ")" << std::endl;
+  while(!done()) {
+    Node assertion = get();
+    Trace("quantifiers-assert") << "quantifiers::assert(): " << assertion << std::endl;
+    switch(assertion.getKind()) {
+    case kind::FORALL:
+      assertUniversal( assertion );
+      break;
+    case kind::INST_CLOSURE:
+      getQuantifiersEngine()->addTermToDatabase( assertion[0], false, true );
+      if( !options::lteRestrictInstClosure() ){
+        getQuantifiersEngine()->getMasterEqualityEngine()->addTerm( assertion[0] );
+      }
+      break;
+    case kind::EQUAL:
+      //do nothing
+      break;
+    case kind::NOT:
+      {
+        switch( assertion[0].getKind()) {
+        case kind::FORALL:
+          assertExistential( assertion );
+          break;
+        case kind::EQUAL:
+          //do nothing
+          break;
+        case kind::INST_CLOSURE:
+        default:
+          Unhandled(assertion[0].getKind());
+          break;
+        }
+      }
+      break;
+    default:
+      Unhandled(assertion.getKind());
+      break;
+    }
+  }
+  // call the quantifiers engine to check
+  getQuantifiersEngine()->check( e );
+}
+
+Node TheoryQuantifiers::getNextDecisionRequest( unsigned& priority ){
+  return getQuantifiersEngine()->getNextDecisionRequest( priority );
+}
+
+void TheoryQuantifiers::assertUniversal( Node n ){
+  Assert( n.getKind()==FORALL );
+  if( !options::cbqi() || options::recurseCbqi() || !TermDb::hasInstConstAttr(n) ){
+    getQuantifiersEngine()->assertQuantifier( n, true );
+  }
+}
+
+void TheoryQuantifiers::assertExistential( Node n ){
+  Assert( n.getKind()== NOT && n[0].getKind()==FORALL );
+  if( !options::cbqi() || options::recurseCbqi() || !TermDb::hasInstConstAttr(n[0]) ){
+    getQuantifiersEngine()->assertQuantifier( n[0], false );
+  }
+}
+
+void TheoryQuantifiers::setUserAttribute(const std::string& attr, Node n, std::vector<Node> node_values, std::string str_value){
+  QuantifiersAttributes::setUserAttribute( attr, n, node_values, str_value );
+}
diff --git a/src/theory/quantifiers/theory_quantifiers.h b/src/theory/quantifiers/theory_quantifiers.h
new file mode 100644
index 0000000..308514b
--- /dev/null
+++ b/src/theory/quantifiers/theory_quantifiers.h
@@ -0,0 +1,83 @@
+/*********************                                                        */
+/*! \file theory_quantifiers.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Theory of quantifiers.
+ **
+ ** Theory of quantifiers.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANTIFIERS__THEORY_QUANTIFIERS_H
+#define __CVC4__THEORY__QUANTIFIERS__THEORY_QUANTIFIERS_H
+
+#include <ext/hash_set>
+#include <iostream>
+#include <map>
+
+#include "context/cdhashmap.h"
+#include "theory/theory.h"
+#include "util/hash.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+class TheoryEngine;
+
+namespace theory {
+
+namespace quantifiers {
+
+class ModelEngine;
+class InstantiationEngine;
+
+class TheoryQuantifiers : public Theory {
+private:
+  typedef context::CDHashMap< Node, bool, NodeHashFunction > BoolMap;
+  /** number of instantiations */
+  int d_numInstantiations;
+  int d_baseDecLevel;
+
+  eq::EqualityEngine* d_masterEqualityEngine;
+
+private:
+  void computeCareGraph();
+
+public:
+  TheoryQuantifiers(context::Context* c, context::UserContext* u,
+                    OutputChannel& out, Valuation valuation,
+                    const LogicInfo& logicInfo);
+  ~TheoryQuantifiers();
+
+  void setMasterEqualityEngine(eq::EqualityEngine* eq);
+  void addSharedTerm(TNode t);
+  void notifyEq(TNode lhs, TNode rhs);
+  void preRegisterTerm(TNode n);
+  void presolve();
+  void ppNotifyAssertions( std::vector< Node >& assertions );
+  void check(Effort e);
+  Node getNextDecisionRequest( unsigned& priority );
+  Node getValue(TNode n);
+  void collectModelInfo( TheoryModel* m, bool fullModel );
+  void shutdown() { }
+  std::string identify() const { return std::string("TheoryQuantifiers"); }
+  void setUserAttribute(const std::string& attr, Node n, std::vector<Node> node_values, std::string str_value);
+  eq::EqualityEngine* getMasterEqualityEngine() { return d_masterEqualityEngine; }
+  bool ppDontRewriteSubterm(TNode atom) { return atom.getKind() == kind::FORALL || atom.getKind() == kind::EXISTS; }
+private:
+  void assertUniversal( Node n );
+  void assertExistential( Node n );
+};/* class TheoryQuantifiers */
+
+}/* CVC4::theory::quantifiers namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__QUANTIFIERS__THEORY_QUANTIFIERS_H */
diff --git a/src/theory/quantifiers/theory_quantifiers_type_rules.h b/src/theory/quantifiers/theory_quantifiers_type_rules.h
new file mode 100644
index 0000000..6ba57af
--- /dev/null
+++ b/src/theory/quantifiers/theory_quantifiers_type_rules.h
@@ -0,0 +1,231 @@
+/*********************                                                        */
+/*! \file theory_quantifiers_type_rules.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Theory of quantifiers
+ **
+ ** Theory of quantifiers.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANTIFIERS__THEORY_QUANTIFIERS_TYPE_RULES_H
+#define __CVC4__THEORY__QUANTIFIERS__THEORY_QUANTIFIERS_TYPE_RULES_H
+
+#include "expr/matcher.h"
+
+namespace CVC4 {
+namespace theory {
+namespace quantifiers {
+
+struct QuantifierForallTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw(TypeCheckingExceptionPrivate) {
+    Debug("typecheck-q") << "type check for fa " << n << std::endl;
+    Assert(n.getKind() == kind::FORALL && n.getNumChildren()>0 );
+    if( check ){
+      if( n[ 0 ].getType(check)!=nodeManager->boundVarListType() ){
+        throw TypeCheckingExceptionPrivate(n, "first argument of universal quantifier is not bound var list");
+      }
+      if( n[ 1 ].getType(check)!=nodeManager->booleanType() ){
+        throw TypeCheckingExceptionPrivate(n, "body of universal quantifier is not boolean");
+      }
+      if( n.getNumChildren()==3 && n[2].getType(check)!=nodeManager->instPatternListType() ){
+        throw TypeCheckingExceptionPrivate(n, "third argument of universal quantifier is not instantiation pattern list");
+      }
+    }
+    return nodeManager->booleanType();
+  }
+};/* struct QuantifierForallTypeRule */
+
+struct QuantifierExistsTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw(TypeCheckingExceptionPrivate) {
+    Debug("typecheck-q") << "type check for ex " << n << std::endl;
+    Assert(n.getKind() == kind::EXISTS && n.getNumChildren()>0 );
+    if( check ){
+      if( n[ 0 ].getType(check)!=nodeManager->boundVarListType() ){
+        throw TypeCheckingExceptionPrivate(n, "first argument of existential quantifier is not bound var list");
+      }
+      if( n[ 1 ].getType(check)!=nodeManager->booleanType() ){
+        throw TypeCheckingExceptionPrivate(n, "body of existential quantifier is not boolean");
+      }
+      if( n.getNumChildren()==3 && n[2].getType(check)!=nodeManager->instPatternListType() ){
+        throw TypeCheckingExceptionPrivate(n, "third argument of existential quantifier is not instantiation pattern list");
+      }
+    }
+    return nodeManager->booleanType();
+  }
+};/* struct QuantifierExistsTypeRule */
+
+struct QuantifierBoundVarListTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw(TypeCheckingExceptionPrivate) {
+    Assert(n.getKind() == kind::BOUND_VAR_LIST );
+    if( check ){
+      for( int i=0; i<(int)n.getNumChildren(); i++ ){
+        if( n[i].getKind()!=kind::BOUND_VARIABLE ){
+          throw TypeCheckingExceptionPrivate(n, "argument of bound var list is not bound variable");
+        }
+      }
+    }
+    return nodeManager->boundVarListType();
+  }
+};/* struct QuantifierBoundVarListTypeRule */
+
+struct QuantifierInstPatternTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw(TypeCheckingExceptionPrivate) {
+    Assert(n.getKind() == kind::INST_PATTERN );
+    if( check ){
+      TypeNode tn = n[0].getType(check);
+      if( tn.isFunction() ){
+        throw TypeCheckingExceptionPrivate(n[0], "Pattern must be a list of fully-applied terms.");
+      }
+    }
+    return nodeManager->instPatternType();
+  }
+};/* struct QuantifierInstPatternTypeRule */
+
+struct QuantifierInstNoPatternTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw(TypeCheckingExceptionPrivate) {
+    Assert(n.getKind() == kind::INST_NO_PATTERN );
+    return nodeManager->instPatternType();
+  }
+};/* struct QuantifierInstNoPatternTypeRule */
+
+struct QuantifierInstAttributeTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw(TypeCheckingExceptionPrivate) {
+    Assert(n.getKind() == kind::INST_ATTRIBUTE );
+    return nodeManager->instPatternType();
+  }
+};/* struct QuantifierInstAttributeTypeRule */
+
+struct QuantifierInstPatternListTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw(TypeCheckingExceptionPrivate) {
+    Assert(n.getKind() == kind::INST_PATTERN_LIST );
+    if( check ){
+      for( int i=0; i<(int)n.getNumChildren(); i++ ){
+        if( n[i].getKind()!=kind::INST_PATTERN && n[i].getKind()!=kind::INST_NO_PATTERN && n[i].getKind()!=kind::INST_ATTRIBUTE ){
+          throw TypeCheckingExceptionPrivate(n, "argument of inst pattern list is not inst pattern");
+        }
+      }
+    }
+    return nodeManager->instPatternListType();
+  }
+};/* struct QuantifierInstPatternListTypeRule */
+
+struct QuantifierInstClosureTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw(TypeCheckingExceptionPrivate) {
+    Assert(n.getKind() == kind::INST_CLOSURE );
+    if( check ){
+      TypeNode tn = n[0].getType(check);
+      if( tn.isBoolean() ){
+        throw TypeCheckingExceptionPrivate(n, "argument of inst-closure must be non-boolean");
+      }
+    }
+    return nodeManager->booleanType();
+  }
+};/* struct QuantifierInstClosureTypeRule */
+
+
+class RewriteRuleTypeRule {
+public:
+
+  /**
+   * Compute the type for (and optionally typecheck) a term belonging
+   * to the theory of rewriterules.
+   *
+   * @param nodeManager the NodeManager in use
+   * @param n the node to compute the type of
+   * @param check if true, the node's type should be checked as well
+   * as computed.
+   */
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check)
+    throw(TypeCheckingExceptionPrivate) {
+    Debug("typecheck-r") << "type check for rr " << n << std::endl;
+    Assert(n.getKind() == kind::REWRITE_RULE && n.getNumChildren()==3 );
+    if( check ){
+      if( n[ 0 ].getType(check)!=nodeManager->boundVarListType() ){
+        throw TypeCheckingExceptionPrivate(n[0],
+                     "first argument of rewrite rule is not bound var list");
+      }
+      if( n[ 1 ].getType(check)!=nodeManager->booleanType() ){
+        throw TypeCheckingExceptionPrivate(n[1],
+                     "guard of rewrite rule is not an actual guard");
+      }
+      if( n[2].getType(check) !=
+          TypeNode(nodeManager->mkTypeConst<TypeConstant>(RRHB_TYPE))){
+        throw TypeCheckingExceptionPrivate(n[2],
+                     "not a correct rewrite rule");
+      }
+    }
+    return nodeManager->booleanType();
+  }
+};/* class RewriteRuleTypeRule */
+
+class RRRewriteTypeRule {
+public:
+
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw(TypeCheckingExceptionPrivate) {
+    Assert(n.getKind() == kind::RR_REWRITE );
+    if( check ){
+      if( n[0].getType(check)!=n[1].getType(check) ){
+        throw TypeCheckingExceptionPrivate(n,
+                     "terms of rewrite rule are not equal");
+      }
+      if( n.getNumChildren() == 3 && n[2].getType(check)!=nodeManager->instPatternListType() ){
+        throw TypeCheckingExceptionPrivate(n, "third argument of rewrite rule is not instantiation pattern list");
+      }
+      if( n[0].getKind()!=kind::APPLY_UF ){
+        throw TypeCheckingExceptionPrivate(n[0], "head of rewrite rules must start with an uninterpreted symbols. If you want to write a propagation rule, add the guard [true] for disambiguation");
+      }
+    }
+    return TypeNode(nodeManager->mkTypeConst<TypeConstant>(RRHB_TYPE));
+  }
+};/* struct QuantifierReductionRuleRule */
+
+class RRRedDedTypeRule {
+public:
+
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw(TypeCheckingExceptionPrivate) {
+    Assert(n.getKind() == kind::RR_REDUCTION ||
+           n.getKind() == kind::RR_DEDUCTION );
+    if( check ){
+      if( n[ 0 ].getType(check)!=nodeManager->booleanType() ){
+        throw TypeCheckingExceptionPrivate(n, "head of reduction rule is not boolean");
+      }
+      if( n[ 1 ].getType(check)!=nodeManager->booleanType() ){
+        throw TypeCheckingExceptionPrivate(n, "body of reduction rule is not boolean");
+      }
+      if( n.getNumChildren() == 3 && n[2].getType(check)!=nodeManager->instPatternListType() ){
+        throw TypeCheckingExceptionPrivate(n, "third argument of rewrite rule is not instantiation pattern list");
+      }
+      if( n.getNumChildren() < 3 && n[ 0 ] == nodeManager->mkConst<bool>(true) ){
+        throw TypeCheckingExceptionPrivate(n, "A rewrite rule must have one head or one trigger at least");
+      }
+    }
+    return TypeNode(nodeManager->mkTypeConst<TypeConstant>(RRHB_TYPE));
+  }
+};/* struct QuantifierReductionRuleRule */
+
+
+}/* CVC4::theory::quantifiers namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__QUANTIFIERS__THEORY_QUANTIFIERS_TYPE_RULES_H */
diff --git a/src/theory/quantifiers/trigger.cpp b/src/theory/quantifiers/trigger.cpp
new file mode 100644
index 0000000..1bfc53b
--- /dev/null
+++ b/src/theory/quantifiers/trigger.cpp
@@ -0,0 +1,786 @@
+/*********************                                                        */
+/*! \file trigger.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of trigger class
+ **/
+
+#include "theory/quantifiers/trigger.h"
+#include "theory/quantifiers/candidate_generator.h"
+#include "theory/quantifiers/inst_match_generator.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers_engine.h"
+#include "theory/theory_engine.h"
+#include "theory/uf/equality_engine.h"
+#include "util/hash.h"
+
+
+using namespace std;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+
+namespace CVC4 {
+namespace theory {
+namespace inst {
+
+void TriggerTermInfo::init( Node q, Node n, int reqPol, Node reqPolEq ){
+  if( d_fv.empty() ){
+    quantifiers::TermDb::getVarContainsNode( q, n, d_fv );
+  }
+  if( d_reqPol==0 ){
+    d_reqPol = reqPol;
+    d_reqPolEq = reqPolEq;
+  }else{
+    //determined a ground (dis)equality must hold or else q is a tautology?
+  }
+}
+
+/** trigger class constructor */
+Trigger::Trigger( QuantifiersEngine* qe, Node f, std::vector< Node >& nodes )
+    : d_quantEngine( qe ), d_f( f ) {
+  d_nodes.insert( d_nodes.begin(), nodes.begin(), nodes.end() );
+  Trace("trigger") << "Trigger for " << f << ": " << std::endl;
+  for( unsigned i=0; i<d_nodes.size(); i++ ){
+    Trace("trigger") << "   " << d_nodes[i] << std::endl;
+  }
+  if( d_nodes.size()==1 ){
+    if( isSimpleTrigger( d_nodes[0] ) ){
+      d_mg = new InstMatchGeneratorSimple( f, d_nodes[0], qe );
+    }else{
+      d_mg = InstMatchGenerator::mkInstMatchGenerator( f, d_nodes[0], qe );
+      d_mg->setActiveAdd(true);
+    }
+  }else{
+    d_mg = new InstMatchGeneratorMulti( f, d_nodes, qe );
+    //d_mg = InstMatchGenerator::mkInstMatchGenerator( d_nodes, qe );
+    //d_mg->setActiveAdd();
+  }
+  if( d_nodes.size()==1 ){
+    if( isSimpleTrigger( d_nodes[0] ) ){
+      ++(qe->d_statistics.d_triggers);
+    }else{
+      ++(qe->d_statistics.d_simple_triggers);
+    }
+  }else{
+    Trace("multi-trigger") << "Trigger for " << f << ": " << std::endl;
+    for( unsigned i=0; i<d_nodes.size(); i++ ){
+      Trace("multi-trigger") << "   " << d_nodes[i] << std::endl;
+    }
+    ++(qe->d_statistics.d_multi_triggers);
+  }
+  //Notice() << "Trigger : " << (*this) << "  for " << f << std::endl;
+  Trace("trigger-debug") << "Finished making trigger." << std::endl;
+}
+
+Trigger::~Trigger() {
+  delete d_mg;
+}
+
+void Trigger::resetInstantiationRound(){
+  d_mg->resetInstantiationRound( d_quantEngine );
+}
+
+void Trigger::reset( Node eqc ){
+  d_mg->reset( eqc, d_quantEngine );
+}
+
+bool Trigger::getNextMatch( Node f, InstMatch& m ){
+  bool retVal = d_mg->getNextMatch( f, m, d_quantEngine );
+  return retVal;
+}
+
+bool Trigger::getMatch( Node f, Node t, InstMatch& m ){
+  //FIXME: this assumes d_mg is an inst match generator
+  return ((InstMatchGenerator*)d_mg)->getMatch( f, t, m, d_quantEngine );
+}
+
+Node Trigger::getInstPattern(){
+  return NodeManager::currentNM()->mkNode( INST_PATTERN, d_nodes );
+}
+
+int Trigger::addInstantiations( InstMatch& baseMatch ){
+  int addedLemmas = d_mg->addInstantiations( d_f, baseMatch, d_quantEngine );
+  if( addedLemmas>0 ){
+    Debug("inst-trigger") << "Added " << addedLemmas << " lemmas, trigger was ";
+    for( int i=0; i<(int)d_nodes.size(); i++ ){
+      Debug("inst-trigger") << d_nodes[i] << " ";
+    }
+    Debug("inst-trigger") << std::endl;
+  }
+  return addedLemmas;
+}
+
+bool Trigger::mkTriggerTerms( Node q, std::vector< Node >& nodes, unsigned n_vars, std::vector< Node >& trNodes ) {
+  //only take nodes that contribute variables to the trigger when added
+  std::vector< Node > temp;
+  temp.insert( temp.begin(), nodes.begin(), nodes.end() );
+  std::map< Node, bool > vars;
+  std::map< Node, std::vector< Node > > patterns;
+  size_t varCount = 0;
+  std::map< Node, std::vector< Node > > varContains;
+  quantifiers::TermDb::getVarContains( q, temp, varContains );
+  for( unsigned i=0; i<temp.size(); i++ ){
+    bool foundVar = false;
+    for( unsigned j=0; j<varContains[ temp[i] ].size(); j++ ){
+      Node v = varContains[ temp[i] ][j];
+      Assert( quantifiers::TermDb::getInstConstAttr(v)==q );
+      if( vars.find( v )==vars.end() ){
+        varCount++;
+        vars[ v ] = true;
+        foundVar = true;
+      }
+    }
+    if( foundVar ){
+      trNodes.push_back( temp[i] );
+      for( unsigned j=0; j<varContains[ temp[i] ].size(); j++ ){
+        Node v = varContains[ temp[i] ][j];
+        patterns[ v ].push_back( temp[i] );
+      }
+    }
+    if( varCount==n_vars ){
+      break;
+    }
+  }
+  if( varCount<n_vars ){
+    Trace("trigger-debug") << "Don't consider trigger since it does not contain specified number of variables." << std::endl;
+    for( unsigned i=0; i<nodes.size(); i++) {
+      Trace("trigger-debug") << nodes[i] << " ";
+    }
+    Trace("trigger-debug") << std::endl;
+
+    //do not generate multi-trigger if it does not contain all variables
+    return false;
+  }else{
+    //now, minimize the trigger
+    for( unsigned i=0; i<trNodes.size(); i++ ){
+      bool keepPattern = false;
+      Node n = trNodes[i];
+      for( unsigned j=0; j<varContains[ n ].size(); j++ ){
+        Node v = varContains[ n ][j];
+        if( patterns[v].size()==1 ){
+          keepPattern = true;
+          break;
+        }
+      }
+      if( !keepPattern ){
+        //remove from pattern vector
+        for( unsigned j=0; j<varContains[ n ].size(); j++ ){
+          Node v = varContains[ n ][j];
+          for( unsigned k=0; k<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--;
+      }
+    }
+  }
+  return true;
+}
+
+Trigger* Trigger::mkTrigger( QuantifiersEngine* qe, Node f, std::vector< Node >& nodes, bool keepAll, int trOption, unsigned use_n_vars ){
+  std::vector< Node > trNodes;
+  if( !keepAll ){
+    unsigned n_vars = use_n_vars==0 ? f[0].getNumChildren() : use_n_vars;
+    if( !mkTriggerTerms( f, nodes, n_vars, trNodes ) ){
+      return NULL;
+    }
+  }else{
+    trNodes.insert( trNodes.begin(), nodes.begin(), nodes.end() );
+  }
+
+  //check for duplicate?
+  if( trOption!=TR_MAKE_NEW ){
+    Trigger* t = qe->getTriggerDatabase()->getTrigger( trNodes );
+    if( t ){
+      if( trOption==TR_GET_OLD ){
+        //just return old trigger
+        return t;
+      }else{
+        return NULL;
+      }
+    }
+  }
+  Trigger* t = new Trigger( qe, f, trNodes );
+  qe->getTriggerDatabase()->addTrigger( trNodes, t );
+  return t;
+}
+
+Trigger* Trigger::mkTrigger( QuantifiersEngine* qe, Node f, Node n, bool keepAll, int trOption, unsigned use_n_vars ){
+  std::vector< Node > nodes;
+  nodes.push_back( n );
+  return mkTrigger( qe, f, nodes, keepAll, trOption, use_n_vars );
+}
+
+bool Trigger::isUsable( Node n, Node q ){
+  if( quantifiers::TermDb::getInstConstAttr(n)==q ){
+    if( isAtomicTrigger( n ) ){
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        if( !isUsable( n[i], q ) ){
+          return false;
+        }
+      }
+      return true;
+    }else if( n.getKind()==INST_CONSTANT ){
+      return true;
+    }else{
+      std::map< Node, Node > coeffs;
+      if( isBooleanTermTrigger( n ) ){
+        return true;
+      }else if( options::purifyTriggers() ){
+        Node x = getInversionVariable( n );
+        if( !x.isNull() ){
+          return true;
+        }
+      }
+    }
+    return false;
+  }else{
+    return true;
+  }
+}
+
+Node Trigger::getIsUsableEq( Node q, Node n ) {
+  Assert( isRelationalTrigger( n ) );
+  for( unsigned i=0; i<2; i++) {
+    if( isUsableEqTerms( q, n[i], n[1-i] ) ){
+      if( i==1 && n.getKind()==EQUAL && !quantifiers::TermDb::hasInstConstAttr(n[0]) ){
+        return NodeManager::currentNM()->mkNode( n.getKind(), n[1], n[0] );  
+      }else{
+        return n;
+      }
+    }
+  }
+  return Node::null();
+}
+
+bool Trigger::isUsableEqTerms( Node q, Node n1, Node n2 ) {
+  if( n1.getKind()==INST_CONSTANT ){
+    if( options::relationalTriggers() ){
+      if( !quantifiers::TermDb::hasInstConstAttr(n2) ){
+        return true;
+      }else if( n2.getKind()==INST_CONSTANT ){
+        return true;
+      }
+    }
+  }else if( isUsableAtomicTrigger( n1, q ) ){
+    if( options::relationalTriggers() && n2.getKind()==INST_CONSTANT && !quantifiers::TermDb::containsTerm( n1, n2 ) ){
+      return true;
+    }else if( !quantifiers::TermDb::hasInstConstAttr(n2) ){
+      return true;
+    }
+  }
+  return false;
+}
+
+Node Trigger::getIsUsableTrigger( Node n, Node q ) {
+  bool pol = true;
+  Trace("trigger-debug") << "Is " << n << " a usable trigger?" << std::endl;
+  if( n.getKind()==NOT ){
+    pol = !pol;
+    n = n[0];
+  }
+  if( n.getKind()==INST_CONSTANT ){
+    return pol ? n : NodeManager::currentNM()->mkNode( EQUAL, n, NodeManager::currentNM()->mkConst( true ) ).notNode();
+  }else if( isRelationalTrigger( n ) ){
+    Node rtr = getIsUsableEq( q, n );
+    if( rtr.isNull() && n[0].getType().isReal() ){
+      //try to solve relation
+      std::map< Node, Node > m;
+      if( QuantArith::getMonomialSumLit(n, m) ){
+        for( std::map< Node, Node >::iterator it = m.begin(); it!=m.end(); ++it ){
+          bool trySolve = false;
+          if( !it->first.isNull() ){
+            if( it->first.getKind()==INST_CONSTANT ){
+              trySolve = options::relationalTriggers();
+            }else if( isUsableTrigger( it->first, q ) ){
+              trySolve = true;
+            }
+          }
+          if( trySolve ){
+            Trace("trigger-debug") << "Try to solve for " << it->first << std::endl;
+            Node veq;
+            if( QuantArith::isolate( it->first, m, veq, n.getKind() )!=0 ){
+              rtr = getIsUsableEq( q, veq );
+            }
+            //either all solves will succeed or all solves will fail
+            break;
+          }
+        }
+      }
+    }
+    if( !rtr.isNull() ){
+      Trace("relational-trigger") << "Relational trigger : " << std::endl;
+      Trace("relational-trigger") << "    " << rtr << " (from " << n << ")" << std::endl;
+      Trace("relational-trigger") << "    in quantifier " << q << std::endl;
+      Node rtr2 = pol ? rtr : rtr.negate();
+      Trace("relational-trigger") << "    return : " << rtr2 << std::endl;
+      return rtr2;
+    }
+  }else{
+    Trace("trigger-debug") << n << " usable : " << ( quantifiers::TermDb::getInstConstAttr(n)==q ) << " " << isAtomicTrigger( n ) << " " << isUsable( n, q ) << std::endl;
+    if( isUsableAtomicTrigger( n, q ) ){
+      return pol ? n : NodeManager::currentNM()->mkNode( EQUAL, n, NodeManager::currentNM()->mkConst( true ) ).notNode();
+    }
+  }
+  return Node::null();
+}
+
+bool Trigger::isUsableAtomicTrigger( Node n, Node q ) {
+  return quantifiers::TermDb::getInstConstAttr( n )==q && isAtomicTrigger( n ) && isUsable( n, q );
+}
+
+bool Trigger::isUsableTrigger( Node n, Node q ){
+  Node nu = getIsUsableTrigger( n, q );
+  return !nu.isNull();
+}
+
+bool Trigger::isAtomicTrigger( Node n ){
+  return isAtomicTriggerKind( n.getKind() );
+}
+
+bool Trigger::isAtomicTriggerKind( Kind k ) {
+  return k==APPLY_UF || k==SELECT || k==STORE ||
+         k==APPLY_CONSTRUCTOR || k==APPLY_SELECTOR_TOTAL || k==APPLY_TESTER ||
+         k==UNION || k==INTERSECTION || k==SUBSET || k==SETMINUS || k==MEMBER || k==SINGLETON || 
+         k==SEP_PTO || k==BITVECTOR_TO_NAT || k==INT_TO_BITVECTOR;
+}
+
+bool Trigger::isRelationalTrigger( Node n ) {
+  return isRelationalTriggerKind( n.getKind() );
+}
+
+bool Trigger::isRelationalTriggerKind( Kind k ) {
+  return k==EQUAL || k==GEQ;
+}
+  
+bool Trigger::isCbqiKind( Kind k ) {
+  if( quantifiers::TermDb::isBoolConnective( k ) || k==PLUS || k==GEQ || k==EQUAL || k==MULT ){
+    return true;
+  }else{
+    //CBQI typically works for satisfaction-complete theories
+    TheoryId t = kindToTheoryId( k );
+    return t==THEORY_BV || t==THEORY_DATATYPES;
+  }
+}
+
+bool Trigger::isSimpleTrigger( Node n ){
+  Node t = n.getKind()==NOT ? n[0] : n;
+  if( t.getKind()==EQUAL ){
+    if( !quantifiers::TermDb::hasInstConstAttr( t[1] ) ){
+      t = t[0];
+    }
+  }
+  if( isAtomicTrigger( t ) ){
+    for( unsigned i=0; i<t.getNumChildren(); i++ ){
+      if( t[i].getKind()!=INST_CONSTANT && quantifiers::TermDb::hasInstConstAttr(t[i]) ){
+        return false;
+      }
+    }
+    if( options::purifyDtTriggers() && t.getKind()==APPLY_SELECTOR_TOTAL ){
+      return false;
+    }
+    return true;
+  }else{
+    return false;
+  }
+}
+
+//store triggers in reqPol, indicating their polarity (if any) they must appear to falsify the quantified formula
+bool Trigger::collectPatTerms2( Node q, Node n, std::map< Node, Node >& visited, std::map< Node, TriggerTermInfo >& tinfo, 
+                                quantifiers::TriggerSelMode tstrt, std::vector< Node >& exclude, std::vector< Node >& added,
+                                bool pol, bool hasPol, bool epol, bool hasEPol ){
+  std::map< Node, Node >::iterator itv = visited.find( n );
+  if( itv==visited.end() ){
+    visited[ n ] = Node::null();
+    Trace("auto-gen-trigger-debug2") << "Collect pat terms " << n << " " << pol << " " << hasPol << " " << epol << " " << hasEPol << std::endl;
+    bool retVal = false;
+    if( n.getKind()!=FORALL && n.getKind()!=INST_CONSTANT ){
+      bool rec = true;
+      Node nu;
+      bool nu_single = false;
+      if( n.getKind()!=NOT && std::find( exclude.begin(), exclude.end(), n )==exclude.end() ){
+        nu = getIsUsableTrigger( n, q );
+        if( !nu.isNull() ){
+          Assert( nu.getKind()!=NOT );
+          Trace("auto-gen-trigger-debug2") << "...found usable trigger : " << nu << std::endl;
+          Node reqEq;
+          if( nu.getKind()==EQUAL ){
+            if( isAtomicTrigger( nu[0] ) && !quantifiers::TermDb::hasInstConstAttr(nu[1]) ){
+              if( hasPol ){
+                reqEq = nu[1];
+              }
+              nu = nu[0];
+            }
+          }
+          Assert( reqEq.isNull() || !quantifiers::TermDb::hasInstConstAttr( reqEq ) );
+          Assert( isUsableTrigger( nu, q ) );
+          //do not add if already excluded
+          bool add = true;
+          if( n!=nu ){
+            std::map< Node, Node >::iterator itvu = visited.find( nu );
+            if( itvu!=visited.end() && itvu->second.isNull() ){
+              add = false;
+            }
+          }
+          if( add ){
+            Trace("auto-gen-trigger-debug2") << "...add usable trigger : " << nu << std::endl;
+            visited[ nu ] = nu;
+            tinfo[ nu ].init( q, nu, hasEPol ? ( epol ? 1 : -1 ) : 0, reqEq );
+            nu_single = tinfo[ nu ].d_fv.size()==q[0].getNumChildren();
+            retVal = true;
+            if( tstrt==quantifiers::TRIGGER_SEL_MAX || ( tstrt==quantifiers::TRIGGER_SEL_MIN_SINGLE_MAX && !nu_single ) ){
+              rec = false;
+            }
+          }
+        }
+      }
+      if( rec ){
+        Node nrec = nu.isNull() ? n : nu;
+        std::vector< Node > added2;
+        for( unsigned i=0; i<nrec.getNumChildren(); i++ ){
+          bool newHasPol, newPol;
+          bool newHasEPol, newEPol;
+          QuantPhaseReq::getPolarity( nrec, i, hasPol, pol, newHasPol, newPol );
+          QuantPhaseReq::getEntailPolarity( nrec, i, hasEPol, epol, newHasEPol, newEPol );
+          if( collectPatTerms2( q, nrec[i], visited, tinfo, tstrt, exclude, added2, newPol, newHasPol, newEPol, newHasEPol ) ){
+            retVal = true;
+          }
+        }
+        if( !nu.isNull() ){
+          bool rm_nu = false;
+          //discard if we added a subterm as a trigger with all variables that nu has
+          for( unsigned i=0; i<added2.size(); i++ ){
+            Assert( tinfo.find( added2[i] )!=tinfo.end() );
+            if( added2[i]!=nu ){
+              if( tinfo[ nu ].d_fv.size()==tinfo[ added2[i] ].d_fv.size() ){
+                rm_nu = true;
+              }
+              added.push_back( added2[i] );
+            }else{
+              Assert( false );
+            }
+          }
+          if( rm_nu && ( tstrt==quantifiers::TRIGGER_SEL_MIN || ( tstrt==quantifiers::TRIGGER_SEL_MIN_SINGLE_ALL && nu_single ) ) ){
+            visited[nu] = Node::null();
+            tinfo.erase( nu );
+          }else{
+            added.push_back( nu );
+          }
+        }
+      }
+    }
+    return retVal;
+  }else{
+    if( itv->second.isNull() ){
+      return false;
+    }else{
+      added.push_back( itv->second );
+      return true;
+    }
+  }
+}
+
+bool Trigger::isBooleanTermTrigger( Node n ) {
+  if( n.getKind()==ITE ){
+    //check for boolean term converted to ITE
+    if( n[0].getKind()==INST_CONSTANT &&
+        n[1].getKind()==CONST_BITVECTOR &&
+        n[2].getKind()==CONST_BITVECTOR ){
+      if( ((BitVectorType)n[1].getType().toType()).getSize()==1 &&
+          n[1].getConst<BitVector>().toInteger()==1 &&
+          n[2].getConst<BitVector>().toInteger()==0 ){
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+bool Trigger::isPureTheoryTrigger( Node n ) {
+  if( n.getKind()==APPLY_UF || n.getKind()==VARIABLE || n.getKind()==SKOLEM ){  //|| !quantifiers::TermDb::hasInstConstAttr( n ) ){
+    return false;
+  }else{
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      if( !isPureTheoryTrigger( n[i] ) ){
+        return false;
+      }
+    }
+    return true;
+  }
+}
+
+int Trigger::getTriggerWeight( Node n ) {
+  if( isAtomicTrigger( n ) ){
+    return 0;
+  }else{
+    if( options::relationalTriggers() ){
+      if( isRelationalTrigger( n ) ){
+        for( unsigned i=0; i<2; i++ ){
+          if( n[i].getKind()==INST_CONSTANT && !quantifiers::TermDb::hasInstConstAttr( n[1-i] ) ){
+            return 0;
+          }
+        }
+      }
+    }
+    return 1;
+  }
+}
+
+bool Trigger::isLocalTheoryExt( Node n, std::vector< Node >& vars, std::vector< Node >& patTerms ) {
+  if( !n.getType().isBoolean() && n.getKind()==APPLY_UF ){
+    if( std::find( patTerms.begin(), patTerms.end(), n )==patTerms.end() ){
+      bool hasVar = false;
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        if( n[i].getKind()==INST_CONSTANT ){
+          hasVar = true;
+          if( std::find( vars.begin(), vars.end(), n[i] )==vars.end() ){
+            vars.push_back( n[i] );
+          }else{
+            //do not allow duplicate variables
+            return false;
+          }
+        }else{
+          //do not allow nested function applications
+          return false;
+        }
+      }
+      if( hasVar ){
+        patTerms.push_back( n );
+      }
+    }
+  }else{
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      if( !isLocalTheoryExt( n[i], vars, patTerms ) ){
+        return false;
+      }
+    }
+  }
+  return true;
+}
+
+void Trigger::collectPatTerms( Node q, Node n, std::vector< Node >& patTerms, quantifiers::TriggerSelMode tstrt, std::vector< Node >& exclude, 
+                               std::map< Node, TriggerTermInfo >& tinfo, bool filterInst ){
+  std::map< Node, Node > visited;
+  if( filterInst ){
+    //immediately do not consider any term t for which another term is an instance of t
+    std::vector< Node > patTerms2;
+    std::map< Node, TriggerTermInfo > tinfo2;
+    collectPatTerms( q, n, patTerms2, quantifiers::TRIGGER_SEL_ALL, exclude, tinfo2, false );
+    std::vector< Node > temp;
+    temp.insert( temp.begin(), patTerms2.begin(), patTerms2.end() );
+    quantifiers::TermDb::filterInstances( temp );
+    if( temp.size()!=patTerms2.size() ){
+      Trace("trigger-filter-instance") << "Filtered an instance: " << std::endl;
+      Trace("trigger-filter-instance") << "Old: ";
+      for( unsigned i=0; i<patTerms2.size(); i++ ){
+        Trace("trigger-filter-instance") << patTerms2[i] << " ";
+      }
+      Trace("trigger-filter-instance") << std::endl << "New: ";
+      for( unsigned i=0; i<temp.size(); i++ ){
+        Trace("trigger-filter-instance") << temp[i] << " ";
+      }
+      Trace("trigger-filter-instance") << std::endl;
+    }
+    if( tstrt==quantifiers::TRIGGER_SEL_ALL ){
+      for( unsigned i=0; i<temp.size(); i++ ){
+        //copy information
+        tinfo[temp[i]].d_fv.insert( tinfo[temp[i]].d_fv.end(), tinfo2[temp[i]].d_fv.begin(), tinfo2[temp[i]].d_fv.end() );
+        tinfo[temp[i]].d_reqPol = tinfo2[temp[i]].d_reqPol;
+        tinfo[temp[i]].d_reqPolEq = tinfo2[temp[i]].d_reqPolEq;
+        patTerms.push_back( temp[i] );
+      }
+      return;
+    }else{
+      //do not consider terms that have instances
+      for( unsigned i=0; i<patTerms2.size(); i++ ){
+        if( std::find( temp.begin(), temp.end(), patTerms2[i] )==temp.end() ){
+          visited[ patTerms2[i] ] = Node::null();
+        }
+      }
+    }
+  }
+  std::vector< Node > added;
+  collectPatTerms2( q, n, visited, tinfo, tstrt, exclude, added, true, true, false, true );
+  for( std::map< Node, TriggerTermInfo >::iterator it = tinfo.begin(); it != tinfo.end(); ++it ){
+    if( !visited[it->first].isNull() ){
+      patTerms.push_back( it->first );
+    }
+  }
+}
+
+Node Trigger::getInversionVariable( Node n ) {
+  if( n.getKind()==INST_CONSTANT ){
+    return n;
+  }else if( n.getKind()==PLUS || n.getKind()==MULT ){
+    Node ret;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      if( quantifiers::TermDb::hasInstConstAttr(n[i]) ){
+        if( ret.isNull() ){
+          ret = getInversionVariable( n[i] );
+          if( ret.isNull() ){
+            Trace("var-trigger-debug") << "No : multiple variables " << n << std::endl;
+            return Node::null();
+          }
+        }else{
+          return Node::null();
+        }
+      }else if( n.getKind()==MULT ){
+        if( !n[i].isConst() ){
+          Trace("var-trigger-debug") << "No : non-linear coefficient " << n << std::endl;
+          return Node::null();
+        }
+        /*
+        else if( n.getType().isInteger() ){
+          Rational r = n[i].getConst<Rational>();
+          if( r!=Rational(-1) && r!=Rational(1) ){
+            Trace("var-trigger-debug") << "No : not integer coefficient " << n << std::endl;
+            return Node::null();
+          }
+        }
+        */
+      }
+    }
+    return ret;
+  }else{
+    Trace("var-trigger-debug") << "No : unsupported operator " << n << "." << std::endl;
+  }
+  return Node::null();
+}
+
+Node Trigger::getInversion( Node n, Node x ) {
+  if( n.getKind()==INST_CONSTANT ){
+    return x;
+  }else if( n.getKind()==PLUS || n.getKind()==MULT ){
+    int cindex = -1;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      if( !quantifiers::TermDb::hasInstConstAttr(n[i]) ){
+        if( n.getKind()==PLUS ){
+          x = NodeManager::currentNM()->mkNode( MINUS, x, n[i] );
+        }else if( n.getKind()==MULT ){
+          Assert( n[i].isConst() );
+          if( x.getType().isInteger() ){
+            Node coeff = NodeManager::currentNM()->mkConst( n[i].getConst<Rational>().abs() );
+            if( !n[i].getConst<Rational>().abs().isOne() ){
+              x = NodeManager::currentNM()->mkNode( INTS_DIVISION_TOTAL, x, coeff );
+            }
+            if( n[i].getConst<Rational>().sgn()<0 ){
+              x = NodeManager::currentNM()->mkNode( UMINUS, x );
+            }
+          }else{
+            Node coeff = NodeManager::currentNM()->mkConst( Rational(1) / n[i].getConst<Rational>() );
+            x = NodeManager::currentNM()->mkNode( MULT, x, coeff );
+          }
+        }
+        x = Rewriter::rewrite( x );
+      }else{
+        Assert( cindex==-1 );
+        cindex = i;
+      }
+    }
+    Assert( cindex!=-1 );
+    return getInversion( n[cindex], x );
+  }
+  return Node::null();
+}
+
+void Trigger::getTriggerVariables( Node icn, Node q, std::vector< Node >& t_vars ) {
+  std::vector< Node > patTerms;
+  std::map< Node, TriggerTermInfo > tinfo;
+  //collect all patterns from icn
+  std::vector< Node > exclude;
+  collectPatTerms( q, icn, patTerms, quantifiers::TRIGGER_SEL_ALL, exclude, tinfo );
+  //collect all variables from all patterns in patTerms, add to t_vars
+  for( unsigned i=0; i<patTerms.size(); i++ ){
+    quantifiers::TermDb::getVarContainsNode( q, patTerms[i], t_vars );
+  }
+}
+
+InstMatchGenerator* Trigger::getInstMatchGenerator( Node q, Node n ) {
+  if( n.getKind()==INST_CONSTANT ){
+    return NULL;
+  }else{
+    Trace("var-trigger-debug") << "Is " << n << " a variable trigger?" << std::endl;
+    if( isBooleanTermTrigger( n ) ){
+      VarMatchGeneratorBooleanTerm* vmg = new VarMatchGeneratorBooleanTerm( n[0], n[1] );
+      Trace("var-trigger") << "Boolean term trigger : " << n << ", var = " << n[0] << std::endl;
+      return vmg;
+    }else{
+      Node x;
+      if( options::purifyTriggers() ){
+        x = getInversionVariable( n );
+      }
+      if( !x.isNull() ){
+        Node s = getInversion( n, x );
+        VarMatchGeneratorTermSubs* vmg = new VarMatchGeneratorTermSubs( x, s );
+        Trace("var-trigger") << "Term substitution trigger : " << n << ", var = " << x << ", subs = " << s << std::endl;
+        return vmg;
+      }else{
+        return new InstMatchGenerator( n );
+      }
+    }
+  }
+}
+
+int Trigger::getActiveScore() {
+  return d_mg->getActiveScore( d_quantEngine );
+}
+
+Trigger* TriggerTrie::getTrigger2( std::vector< Node >& nodes ){
+  if( nodes.empty() ){
+    return d_tr.empty() ? NULL : d_tr[0];
+  }else{
+    Node n = nodes.back();
+    nodes.pop_back();
+    if( d_children.find( n )!=d_children.end() ){
+      return d_children[n]->getTrigger2( nodes );
+    }else{
+      return NULL;
+    }
+  }
+}
+
+void TriggerTrie::addTrigger2( std::vector< Node >& nodes, Trigger* t ){
+  if( nodes.empty() ){
+    d_tr.push_back( t );
+  }else{
+    Node n = nodes.back();
+    nodes.pop_back();
+    if( d_children.find( n )==d_children.end() ){
+      d_children[n] = new TriggerTrie;
+    }
+    d_children[n]->addTrigger2( nodes, t );
+  }
+}
+
+
+TriggerTrie::TriggerTrie()
+{}
+
+TriggerTrie::~TriggerTrie() {
+  for(std::map< TNode, TriggerTrie* >::iterator i = d_children.begin(), iend = d_children.end();
+      i != iend; ++i) {
+    TriggerTrie* current = (*i).second;
+    delete current;
+  }
+  d_children.clear();
+
+  for( unsigned i=0; i<d_tr.size(); i++ ){
+    delete d_tr[i];
+  }
+}
+
+}/* CVC4::theory::inst namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/quantifiers/trigger.h b/src/theory/quantifiers/trigger.h
new file mode 100644
index 0000000..6316273
--- /dev/null
+++ b/src/theory/quantifiers/trigger.h
@@ -0,0 +1,189 @@
+/*********************                                                        */
+/*! \file trigger.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief trigger class
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANTIFIERS__TRIGGER_H
+#define __CVC4__THEORY__QUANTIFIERS__TRIGGER_H
+
+#include <map>
+
+#include "expr/node.h"
+#include "theory/quantifiers/inst_match.h"
+#include "options/quantifiers_options.h"
+
+// Forward declarations for defining the Trigger and TriggerTrie.
+namespace CVC4 {
+namespace theory {
+
+class QuantifiersEngine;
+
+namespace inst {
+
+class IMGenerator;
+class InstMatchGenerator;
+}/* CVC4::theory::inst namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+
+namespace CVC4 {
+namespace theory {
+namespace inst {
+
+class TriggerTermInfo {
+public:
+  TriggerTermInfo() : d_reqPol(0){}
+  ~TriggerTermInfo(){}
+  std::vector< Node > d_fv;
+  int d_reqPol;
+  Node d_reqPolEq;
+  void init( Node q, Node n, int reqPol = 0, Node reqPolEq = Node::null() );
+};
+
+/** A collect of nodes representing a trigger. */
+class Trigger {
+ public:
+  ~Trigger();
+
+  IMGenerator* getGenerator() { return d_mg; }
+
+  /** reset instantiation round (call this whenever equivalence
+   * classes have changed) */
+  void resetInstantiationRound();
+  /** 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( 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 f, Node t, InstMatch& m);
+  /** return whether this is a multi-trigger */
+  bool isMultiTrigger() { return d_nodes.size()>1; }
+  /** get inst pattern list */
+  Node getInstPattern();
+
+  /** add all available instantiations exhaustively, in any equivalence class
+      if limitInst>0, limitInst is the max # of instantiations to try */
+  int addInstantiations( InstMatch& baseMatch );
+  /** mkTrigger method
+     ie     : quantifier engine;
+     f      : forall something ....
+     nodes  : (multi-)trigger
+     keepAll: don't remove unneeded patterns;
+     trOption : policy for dealing with triggers that already existed
+                (see below)
+  */
+  enum{
+    TR_MAKE_NEW,    //make new trigger even if it already may exist
+    TR_GET_OLD,     //return a previous trigger if it had already been created
+    TR_RETURN_NULL  //return null if a duplicate is found
+  };
+  //nodes input, trNodes output
+  static bool mkTriggerTerms( Node q, std::vector< Node >& nodes, unsigned n_vars, std::vector< Node >& trNodes );
+  static Trigger* mkTrigger( QuantifiersEngine* qe, Node f, std::vector< Node >& nodes,
+                             bool keepAll = true, int trOption = TR_MAKE_NEW, unsigned use_n_vars = 0 );
+  static Trigger* mkTrigger( QuantifiersEngine* qe, Node f, Node n, bool keepAll = true,
+                             int trOption = TR_MAKE_NEW, unsigned use_n_vars = 0 );
+  static void collectPatTerms( Node q, Node n, std::vector< Node >& patTerms, quantifiers::TriggerSelMode tstrt,
+                               std::vector< Node >& exclude, std::map< Node, TriggerTermInfo >& tinfo,
+                               bool filterInst = false );
+  /** is usable trigger */
+  static bool isUsableTrigger( Node n, Node q );
+  static Node getIsUsableTrigger( Node n, Node q );
+  static bool isUsableAtomicTrigger( Node n, Node q );
+  static bool isAtomicTrigger( Node n );
+  static bool isAtomicTriggerKind( Kind k );
+  static bool isRelationalTrigger( Node n );
+  static bool isRelationalTriggerKind( Kind k );
+  static bool isCbqiKind( Kind k );
+  static bool isSimpleTrigger( Node n );
+  static bool isBooleanTermTrigger( Node n );
+  static bool isPureTheoryTrigger( Node n );
+  static int getTriggerWeight( Node n );
+  static bool isLocalTheoryExt( Node n, std::vector< Node >& vars,
+                                std::vector< Node >& patTerms );
+  /** return data structure for producing matches for this trigger. */
+  static InstMatchGenerator* getInstMatchGenerator( Node q, Node n );
+  static Node getInversionVariable( Node n );
+  static Node getInversion( Node n, Node x );
+  /** get all variables that E-matching can possibly handle */
+  static void getTriggerVariables( Node icn, Node f, std::vector< Node >& t_vars );
+
+  void debugPrint( const char * c ) {
+    Trace(c) << "TRIGGER( ";
+    for( int i=0; i<(int)d_nodes.size(); i++ ){
+      if( i>0 ){ Trace(c) << ", "; }
+      Trace(c) << d_nodes[i];
+    }
+    Trace(c) << " )";
+  }
+  int getActiveScore();
+private:
+  /** trigger constructor */
+  Trigger( QuantifiersEngine* ie, Node f, std::vector< Node >& nodes );
+
+  /** is subterm of trigger usable */
+  static bool isUsable( Node n, Node q );
+  static Node getIsUsableEq( Node q, Node eq );
+  static bool isUsableEqTerms( Node q, Node n1, Node n2 );
+  /** collect all APPLY_UF pattern terms for f in n */
+  static bool collectPatTerms2( Node q, Node n, std::map< Node, Node >& visited, std::map< Node, TriggerTermInfo >& tinfo, 
+                                quantifiers::TriggerSelMode tstrt, std::vector< Node >& exclude, std::vector< Node >& added,
+                                bool pol, bool hasPol, bool epol, bool hasEPol );
+
+  std::vector< Node > d_nodes;
+
+  /** the quantifiers engine */
+  QuantifiersEngine* d_quantEngine;
+  /** the quantifier this trigger is for */
+  Node d_f;
+  /** match generators */
+  IMGenerator* d_mg;
+}; /* class Trigger */
+
+/** a trie of triggers */
+class TriggerTrie {
+public:
+  TriggerTrie();
+  ~TriggerTrie();
+
+  inst::Trigger* getTrigger( std::vector< Node >& nodes ){
+    std::vector< Node > temp;
+    temp.insert( temp.begin(), nodes.begin(), nodes.end() );
+    std::sort( temp.begin(), temp.end() );
+    return getTrigger2( temp );
+  }
+  void addTrigger( std::vector< Node >& nodes, inst::Trigger* t ){
+    std::vector< Node > temp;
+    temp.insert( temp.begin(), nodes.begin(), nodes.end() );
+    std::sort( temp.begin(), temp.end() );
+    return addTrigger2( temp, t );
+  }
+private:
+  inst::Trigger* getTrigger2( std::vector< Node >& nodes );
+  void addTrigger2( std::vector< Node >& nodes, inst::Trigger* t );
+
+  std::vector< inst::Trigger* > d_tr;
+  std::map< TNode, TriggerTrie* > d_children;
+};/* class inst::Trigger::TriggerTrie */
+
+}/* CVC4::theory::inst namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__QUANTIFIERS__TRIGGER_H */
diff --git a/src/theory/quantifiers_engine.cpp b/src/theory/quantifiers_engine.cpp
new file mode 100644
index 0000000..ba50f9e
--- /dev/null
+++ b/src/theory/quantifiers_engine.cpp
@@ -0,0 +1,1991 @@
+/*********************                                                        */
+/*! \file quantifiers_engine.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of quantifiers engine class
+ **/
+
+#include "theory/quantifiers_engine.h"
+
+#include "options/quantifiers_options.h"
+#include "options/uf_options.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/arrays/theory_arrays.h"
+#include "theory/datatypes/theory_datatypes.h"
+#include "theory/sep/theory_sep.h"
+#include "theory/quantifiers/alpha_equivalence.h"
+#include "theory/quantifiers/ambqi_builder.h"
+#include "theory/quantifiers/bounded_integers.h"
+#include "theory/quantifiers/ce_guided_instantiation.h"
+#include "theory/quantifiers/conjecture_generator.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/full_model_check.h"
+#include "theory/quantifiers/fun_def_engine.h"
+#include "theory/quantifiers/inst_strategy_cbqi.h"
+#include "theory/quantifiers/inst_strategy_e_matching.h"
+#include "theory/quantifiers/instantiation_engine.h"
+#include "theory/quantifiers/local_theory_ext.h"
+#include "theory/quantifiers/model_engine.h"
+#include "theory/quantifiers/quant_conflict_find.h"
+#include "theory/quantifiers/quant_equality_engine.h"
+#include "theory/quantifiers/quantifiers_rewriter.h"
+#include "theory/quantifiers/relevant_domain.h"
+#include "theory/quantifiers/rewrite_engine.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/trigger.h"
+#include "theory/quantifiers/quant_split.h"
+#include "theory/quantifiers/anti_skolem.h"
+#include "theory/quantifiers/equality_infer.h"
+#include "theory/quantifiers/inst_propagator.h"
+#include "theory/theory_engine.h"
+#include "theory/uf/equality_engine.h"
+#include "theory/uf/theory_uf.h"
+#include "theory/uf/theory_uf_strong_solver.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::inst;
+
+QuantifiersEngine::QuantifiersEngine(context::Context* c, context::UserContext* u, TheoryEngine* te):
+    d_te( te ),
+    d_conflict_c(c, false),
+    //d_quants(u),
+    d_quants_red(u),
+    d_lemmas_produced_c(u),
+    d_skolemized(u),
+    d_ierCounter_c(c),
+    //d_ierCounter(c),
+    //d_ierCounter_lc(c),
+    //d_ierCounterLastLc(c),
+    d_presolve(u, true),
+    d_presolve_in(u),
+    d_presolve_cache(u),
+    d_presolve_cache_wq(u),
+    d_presolve_cache_wic(u){
+  //utilities
+  d_eq_query = new EqualityQueryQuantifiersEngine( c, this );
+  d_util.push_back( d_eq_query );
+
+  d_term_db = new quantifiers::TermDb( c, u, this );
+  d_util.push_back( d_term_db );
+
+  if( options::instPropagate() ){
+    d_inst_prop = new quantifiers::InstPropagator( this );
+    d_util.push_back( d_inst_prop );
+    d_inst_notify.push_back( d_inst_prop->getInstantiationNotify() );
+  }else{
+    d_inst_prop = NULL;
+  }
+
+  d_tr_trie = new inst::TriggerTrie;
+  d_curr_effort_level = QEFFORT_NONE;
+  d_conflict = false;
+  d_hasAddedLemma = false;
+  //don't add true lemma
+  d_lemmas_produced_c[d_term_db->d_true] = true;
+
+  Trace("quant-engine-debug") << "Initialize quantifiers engine." << std::endl;
+  Trace("quant-engine-debug") << "Initialize model, mbqi : " << options::mbqiMode() << std::endl;
+
+  //the model object
+  if( options::mbqiMode()==quantifiers::MBQI_FMC ||
+      options::mbqiMode()==quantifiers::MBQI_FMC_INTERVAL || options::fmfBound() ||
+      options::mbqiMode()==quantifiers::MBQI_TRUST ){
+    d_model = new quantifiers::fmcheck::FirstOrderModelFmc( this, c, "FirstOrderModelFmc" );
+  }else if( options::mbqiMode()==quantifiers::MBQI_ABS ){
+    d_model = new quantifiers::FirstOrderModelAbs( this, c, "FirstOrderModelAbs" );
+  }else{
+    d_model = new quantifiers::FirstOrderModelIG( this, c, "FirstOrderModelIG" );
+  }
+  if( options::relevantTriggers() ){
+    d_quant_rel = new QuantRelevance( false );
+  }else{
+    d_quant_rel = NULL;
+  }
+
+  if( options::quantEpr() ){
+    Assert( !options::incrementalSolving() );
+    d_qepr = new QuantEPR;
+  }else{
+    d_qepr = NULL;
+  }
+
+
+  d_qcf = NULL;
+  d_sg_gen = NULL;
+  d_inst_engine = NULL;
+  d_i_cbqi = NULL;
+  d_qsplit = NULL;
+  d_anti_skolem = NULL;
+  d_model_engine = NULL;
+  d_bint = NULL;
+  d_rr_engine = NULL;
+  d_ceg_inst = NULL;
+  d_lte_part_inst = NULL;
+  d_alpha_equiv = NULL;
+  d_fun_def_engine = NULL;
+  d_uee = NULL;
+  d_fs = NULL;
+  d_rel_dom = NULL;
+  d_builder = NULL;
+
+  d_total_inst_count_debug = 0;
+  //allow theory combination to go first, once initially
+  d_ierCounter = options::instWhenTcFirst() ? 0 : 1;
+  d_ierCounter_c = d_ierCounter;
+  d_ierCounter_lc = 0;
+  d_ierCounterLastLc = 0;
+  d_inst_when_phase = 1 + ( options::instWhenPhase()<1 ? 1 : options::instWhenPhase() );
+}
+
+QuantifiersEngine::~QuantifiersEngine(){
+  for(std::map< Node, inst::CDInstMatchTrie* >::iterator
+      i = d_c_inst_match_trie.begin(), iend = d_c_inst_match_trie.end();
+      i != iend; ++i)
+  {
+    delete (*i).second;
+  }
+  d_c_inst_match_trie.clear();
+
+  delete d_alpha_equiv;
+  delete d_builder;
+  delete d_qepr;
+  delete d_rr_engine;
+  delete d_bint;
+  delete d_model_engine;
+  delete d_inst_engine;
+  delete d_qcf;
+  delete d_quant_rel;
+  delete d_rel_dom;
+  delete d_model;
+  delete d_tr_trie;
+  delete d_term_db;
+  delete d_eq_query;
+  delete d_sg_gen;
+  delete d_ceg_inst;
+  delete d_lte_part_inst;
+  delete d_fun_def_engine;
+  delete d_uee;
+  delete d_fs;
+  delete d_i_cbqi;
+  delete d_qsplit;
+  delete d_anti_skolem;
+  delete d_inst_prop;
+}
+
+EqualityQueryQuantifiersEngine* QuantifiersEngine::getEqualityQuery() {
+  return d_eq_query;
+}
+
+context::Context* QuantifiersEngine::getSatContext(){
+  return d_te->theoryOf( THEORY_QUANTIFIERS )->getSatContext();
+}
+
+context::UserContext* QuantifiersEngine::getUserContext(){
+  return d_te->theoryOf( THEORY_QUANTIFIERS )->getUserContext();
+}
+
+OutputChannel& QuantifiersEngine::getOutputChannel(){
+  return d_te->theoryOf( THEORY_QUANTIFIERS )->getOutputChannel();
+}
+/** get default valuation for the quantifiers engine */
+Valuation& QuantifiersEngine::getValuation(){
+  return d_te->theoryOf( THEORY_QUANTIFIERS )->getValuation();
+}
+
+void QuantifiersEngine::finishInit(){
+  context::Context * c = getSatContext();
+  Trace("quant-engine-debug") << "QuantifiersEngine : finishInit " << std::endl;
+  bool needsBuilder = false;
+  bool needsRelDom = false;
+  //add quantifiers modules
+  if( options::quantConflictFind() || options::quantRewriteRules() ){
+    d_qcf = new quantifiers::QuantConflictFind( this, c);
+    d_modules.push_back( d_qcf );
+  }
+  if( options::conjectureGen() ){
+    d_sg_gen = new quantifiers::ConjectureGenerator( this, c );
+    d_modules.push_back( d_sg_gen );
+  }
+  if( !options::finiteModelFind() || options::fmfInstEngine() ){
+    d_inst_engine = new quantifiers::InstantiationEngine( this );
+    d_modules.push_back(  d_inst_engine );
+  }
+  if( options::cbqi() ){
+    d_i_cbqi = new quantifiers::InstStrategyCegqi( this );
+    d_modules.push_back( d_i_cbqi );
+    if( options::cbqiModel() ){
+      needsBuilder = true;
+    }
+  }
+  if( options::ceGuidedInst() ){
+    d_ceg_inst = new quantifiers::CegInstantiation( this, c );
+    d_modules.push_back( d_ceg_inst );
+    needsBuilder = true;
+  }  
+  //finite model finding
+  if( options::finiteModelFind() ){
+    if( options::fmfBound() ){
+      d_bint = new quantifiers::BoundedIntegers( c, this );
+      d_modules.push_back( d_bint );
+    }
+    d_model_engine = new quantifiers::ModelEngine( c, this );
+    d_modules.push_back( d_model_engine );
+    needsBuilder = true;
+  }
+  if( options::quantRewriteRules() ){
+    d_rr_engine = new quantifiers::RewriteEngine( c, this );
+    d_modules.push_back(d_rr_engine);
+  }
+  if( options::ltePartialInst() ){
+    d_lte_part_inst = new quantifiers::LtePartialInst( this, c );
+    d_modules.push_back( d_lte_part_inst );
+  }
+  if( options::quantDynamicSplit()!=quantifiers::QUANT_DSPLIT_MODE_NONE ){
+    d_qsplit = new quantifiers::QuantDSplit( this, c );
+    d_modules.push_back( d_qsplit );
+  }
+  if( options::quantAntiSkolem() ){
+    d_anti_skolem = new quantifiers::QuantAntiSkolem( this );
+    d_modules.push_back( d_anti_skolem );
+  }
+  if( options::quantAlphaEquiv() ){
+    d_alpha_equiv = new quantifiers::AlphaEquivalence( this );
+  }
+  //if( options::funDefs() ){
+  //  d_fun_def_engine = new quantifiers::FunDefEngine( this, c );
+  //  d_modules.push_back( d_fun_def_engine );
+  //}
+  if( options::quantEqualityEngine() ){
+    d_uee = new quantifiers::QuantEqualityEngine( this, c );
+    d_modules.push_back( d_uee );
+  }
+  //full saturation : instantiate from relevant domain, then arbitrary terms
+  if( options::fullSaturateQuant() || options::fullSaturateInst() ){
+    d_fs = new quantifiers::FullSaturation( this );
+    d_modules.push_back( d_fs );
+    needsRelDom = true;
+  }
+ 
+  if( needsRelDom ){
+    d_rel_dom = new quantifiers::RelevantDomain( this, d_model );
+    d_util.push_back( d_rel_dom );
+  }
+
+  if( needsBuilder ){
+    Trace("quant-engine-debug") << "Initialize model engine, mbqi : " << options::mbqiMode() << " " << options::fmfBound() << std::endl;
+    if( options::mbqiMode()==quantifiers::MBQI_FMC || options::mbqiMode()==quantifiers::MBQI_FMC_INTERVAL ||
+        options::mbqiMode()==quantifiers::MBQI_TRUST || options::fmfBound() ){
+      Trace("quant-engine-debug") << "...make fmc builder." << std::endl;
+      d_builder = new quantifiers::fmcheck::FullModelChecker( c, this );
+    }else if( options::mbqiMode()==quantifiers::MBQI_ABS ){
+      Trace("quant-engine-debug") << "...make abs mbqi builder." << std::endl;
+      d_builder = new quantifiers::AbsMbqiBuilder( c, this );
+    }else{
+      Trace("quant-engine-debug") << "...make default model builder." << std::endl;
+      d_builder = new quantifiers::QModelBuilderDefault( c, this );
+    }
+  }
+
+}
+
+QuantifiersModule * QuantifiersEngine::getOwner( Node q ) {
+  std::map< Node, QuantifiersModule * >::iterator it = d_owner.find( q );
+  if( it==d_owner.end() ){
+    return NULL;
+  }else{
+    return it->second;
+  }
+}
+
+void QuantifiersEngine::setOwner( Node q, QuantifiersModule * m, int priority ) {
+  QuantifiersModule * mo = getOwner( q );
+  if( mo!=m ){
+    if( mo!=NULL ){
+      if( priority<=d_owner_priority[q] ){
+        Trace("quant-warn") << "WARNING: setting owner of " << q << " to " << ( m ? m->identify() : "null" ) << ", but already has owner " << mo->identify() << " with higher priority!" << std::endl;
+        return;
+      }
+    }
+    d_owner[q] = m;
+    d_owner_priority[q] = priority;
+  }
+}
+
+bool QuantifiersEngine::hasOwnership( Node q, QuantifiersModule * m ) {
+  QuantifiersModule * mo = getOwner( q );
+  return mo==m || mo==NULL;
+}
+
+bool QuantifiersEngine::isFiniteBound( Node q, Node v ) {
+  if( getBoundedIntegers() && getBoundedIntegers()->isBoundVar( q, v ) ){
+    return true;
+  }else{
+    TypeNode tn = v.getType();
+    if( tn.isSort() && options::finiteModelFind() ){
+      return true;
+    }else if( getTermDatabase()->mayComplete( tn ) ){
+      return true;
+    }
+  }
+  return false;
+}
+
+void QuantifiersEngine::presolve() {
+  Trace("quant-engine-proc") << "QuantifiersEngine : presolve " << std::endl;
+  for( unsigned i=0; i<d_modules.size(); i++ ){
+    d_modules[i]->presolve();
+  }
+  d_term_db->presolve();
+  d_presolve = false;
+  //add all terms to database
+  if( options::incrementalSolving() ){
+    Trace("quant-engine-proc") << "Add presolve cache " << d_presolve_cache.size() << std::endl;
+    for( unsigned i=0; i<d_presolve_cache.size(); i++ ){
+      addTermToDatabase( d_presolve_cache[i], d_presolve_cache_wq[i], d_presolve_cache_wic[i] );
+    }
+    Trace("quant-engine-proc") << "Done add presolve cache " << std::endl;
+  }
+}
+
+void QuantifiersEngine::ppNotifyAssertions( std::vector< Node >& assertions ) {
+  Trace("quant-engine-proc") << "ppNotifyAssertions in QE, #assertions = " << assertions.size() << " check epr = " << (d_qepr!=NULL) << std::endl;
+  if( ( options::instLevelInputOnly() && options::instMaxLevel()!=-1 ) || d_qepr!=NULL ){
+    for( unsigned i=0; i<assertions.size(); i++ ) {
+      if( options::instLevelInputOnly() && options::instMaxLevel()!=-1 ){
+        setInstantiationLevelAttr( assertions[i], 0 );
+      }
+      if( d_qepr!=NULL ){
+        d_qepr->registerAssertion( assertions[i] );
+      }
+    }
+    if( d_qepr!=NULL ){
+      //must handle sources of other new constants e.g. separation logic
+      //FIXME: cleanup
+      ((sep::TheorySep*)getTheoryEngine()->theoryOf( THEORY_SEP ))->initializeBounds();
+      d_qepr->finishInit(); 
+    }
+  }
+}
+
+void QuantifiersEngine::check( Theory::Effort e ){
+  CodeTimer codeTimer(d_statistics.d_time);
+  if( !getMasterEqualityEngine()->consistent() ){
+    Trace("quant-engine-debug") << "Master equality engine not consistent, return." << std::endl;
+    return;
+  }
+  bool needsCheck = !d_lemmas_waiting.empty();
+  unsigned needsModelE = QEFFORT_NONE;
+  std::vector< QuantifiersModule* > qm;
+  if( d_model->checkNeeded() ){
+    needsCheck = needsCheck || e>=Theory::EFFORT_LAST_CALL;  //always need to check at or above last call
+    for( unsigned i=0; i<d_modules.size(); i++ ){
+      if( d_modules[i]->needsCheck( e ) ){
+        qm.push_back( d_modules[i] );
+        needsCheck = true;
+        //can only request model at last call since theory combination can find inconsistencies
+        if( e>=Theory::EFFORT_LAST_CALL ){
+          unsigned me = d_modules[i]->needsModel( e );
+          needsModelE = me<needsModelE ? me : needsModelE;
+        }
+      }
+    }
+  }
+
+  d_conflict = false;
+  d_hasAddedLemma = false;
+  bool setIncomplete = false;
+  bool usedModelBuilder = false;
+
+  Trace("quant-engine-debug2") << "Quantifiers Engine call to check, level = " << e << ", needsCheck=" << needsCheck << std::endl;
+  if( needsCheck ){
+    //this will fail if a set of instances is marked as a conflict, but is not
+    Assert( !d_conflict_c.get() );
+    //flush previous lemmas (for instance, if was interupted), or other lemmas to process
+    flushLemmas();
+    if( d_hasAddedLemma ){
+      return;
+    }
+    if( !d_recorded_inst.empty() ){
+      Trace("quant-engine-debug") << "Removing " << d_recorded_inst.size() << " instantiations..." << std::endl;
+      //remove explicitly recorded instantiations
+      for( unsigned i=0; i<d_recorded_inst.size(); i++ ){
+        removeInstantiationInternal( d_recorded_inst[i].first, d_recorded_inst[i].second );
+      } 
+      d_recorded_inst.clear();
+    }
+    
+    double clSet = 0;
+    if( Trace.isOn("quant-engine") ){
+      clSet = double(clock())/double(CLOCKS_PER_SEC);
+      Trace("quant-engine") << ">>>>> Quantifiers Engine Round, effort = " << e << " <<<<<" << std::endl;
+    }
+
+    if( Trace.isOn("quant-engine-debug") ){
+      Trace("quant-engine-debug") << "Quantifiers Engine check, level = " << e << std::endl;
+      Trace("quant-engine-debug") << "  depth : " << d_ierCounter_c << std::endl;
+      Trace("quant-engine-debug") << "  modules to check : ";
+      for( unsigned i=0; i<qm.size(); i++ ){
+        Trace("quant-engine-debug") << qm[i]->identify() << " ";
+      }
+      Trace("quant-engine-debug") << std::endl;
+      Trace("quant-engine-debug") << "  # quantified formulas = " << d_model->getNumAssertedQuantifiers() << std::endl;
+      if( !d_lemmas_waiting.empty() ){
+        Trace("quant-engine-debug") << "  lemmas waiting = " << d_lemmas_waiting.size() << std::endl;
+      }
+      Trace("quant-engine-debug") << "  Theory engine finished : " << !d_te->needCheck() << std::endl;
+      Trace("quant-engine-debug") << "  Needs model effort : " << needsModelE << std::endl;
+    }
+    if( Trace.isOn("quant-engine-ee-pre") ){
+      Trace("quant-engine-ee-pre") << "Equality engine (pre-inference): " << std::endl;
+      debugPrintEqualityEngine( "quant-engine-ee-pre" );
+    }
+    if( Trace.isOn("quant-engine-assert") ){
+      Trace("quant-engine-assert") << "Assertions : " << std::endl;
+      getTheoryEngine()->printAssertions("quant-engine-assert");
+    }
+
+    //reset utilities
+    Trace("quant-engine-debug") << "Resetting all utilities..." << std::endl;
+    for( unsigned i=0; i<d_util.size(); i++ ){
+      Trace("quant-engine-debug2") << "Reset " << d_util[i]->identify().c_str() << "..." << std::endl;
+      if( !d_util[i]->reset( e ) ){
+        flushLemmas();
+        if( d_hasAddedLemma ){
+          return;
+        }else{
+          //should only fail reset if added a lemma
+          Assert( false );
+        }
+      }
+    }
+
+    if( Trace.isOn("quant-engine-ee") ){
+      Trace("quant-engine-ee") << "Equality engine : " << std::endl;
+      debugPrintEqualityEngine( "quant-engine-ee" );
+    }
+
+    //reset the model
+    Trace("quant-engine-debug") << "Reset model..." << std::endl;
+    d_model->reset_round();
+
+    //reset the modules
+    Trace("quant-engine-debug") << "Resetting all modules..." << std::endl;
+    for( unsigned i=0; i<d_modules.size(); i++ ){
+      Trace("quant-engine-debug2") << "Reset " << d_modules[i]->identify().c_str() << std::endl;
+      d_modules[i]->reset_round( e );
+    }
+    Trace("quant-engine-debug") << "Done resetting all modules." << std::endl;
+    //reset may have added lemmas
+    flushLemmas();
+    if( d_hasAddedLemma ){
+      return;
+    }
+
+    if( e==Theory::EFFORT_LAST_CALL ){
+      //if effort is last call, try to minimize model first
+      //uf::StrongSolverTheoryUF * ufss = ((uf::TheoryUF*)getTheoryEngine()->theoryOf( THEORY_UF ))->getStrongSolver();
+      //if( ufss && !ufss->minimize() ){ return; }
+      ++(d_statistics.d_instantiation_rounds_lc);
+    }else if( e==Theory::EFFORT_FULL ){
+      ++(d_statistics.d_instantiation_rounds);
+    }
+    Trace("quant-engine-debug") << "Check modules that needed check..." << std::endl;
+    for( unsigned quant_e = QEFFORT_CONFLICT; quant_e<=QEFFORT_LAST_CALL; quant_e++ ){
+      d_curr_effort_level = quant_e;
+      bool success = true;
+      //build the model if any module requested it
+      if( needsModelE==quant_e ){
+        Assert( d_builder!=NULL );
+        Trace("quant-engine-debug") << "Build model..." << std::endl;
+        usedModelBuilder = true;
+        d_builder->d_addedLemmas = 0;
+        d_builder->buildModel( d_model, false );
+        //we are done if model building was unsuccessful
+        if( d_builder->d_addedLemmas>0 ){
+          success = false;
+        }
+      }
+      if( success ){
+        //check each module
+        for( unsigned i=0; i<qm.size(); i++ ){
+          Trace("quant-engine-debug") << "Check " << qm[i]->identify().c_str() << " at effort " << quant_e << "..." << std::endl;
+          qm[i]->check( e, quant_e );
+          if( d_conflict ){
+            Trace("quant-engine-debug") << "...conflict!" << std::endl;
+            break;
+          }
+        }
+      }
+      //flush all current lemmas
+      flushLemmas();
+      //if we have added one, stop
+      if( d_hasAddedLemma ){
+        break;
+      }else{
+        Assert( !d_conflict );
+        if( quant_e==QEFFORT_CONFLICT ){
+          if( e==Theory::EFFORT_FULL ){
+            //increment if a last call happened, we are not strictly enforcing interleaving, or already were in phase
+            if( d_ierCounterLastLc!=d_ierCounter_lc || !options::instWhenStrictInterleave() || d_ierCounter%d_inst_when_phase!=0 ){
+              d_ierCounter = d_ierCounter + 1;
+              d_ierCounterLastLc = d_ierCounter_lc;
+              d_ierCounter_c = d_ierCounter_c.get() + 1;
+            }
+          }else if( e==Theory::EFFORT_LAST_CALL ){
+            d_ierCounter_lc = d_ierCounter_lc + 1;
+          }
+        }else if( quant_e==QEFFORT_MODEL ){
+          if( e==Theory::EFFORT_LAST_CALL ){
+            //sources of incompleteness
+            if( !d_recorded_inst.empty() ){
+              Trace("quant-engine-debug") << "Set incomplete due to recorded instantiations." << std::endl;
+              setIncomplete = true;
+            }
+            //if we have a chance not to set incomplete
+            if( !setIncomplete ){
+              setIncomplete = false;
+              //check if we should set the incomplete flag
+              for( unsigned i=0; i<d_modules.size(); i++ ){
+                if( !d_modules[i]->checkComplete() ){
+                  Trace("quant-engine-debug") << "Set incomplete because " << d_modules[i]->identify().c_str() << " was incomplete." << std::endl;
+                  setIncomplete = true;
+                  break;
+                }
+              }
+              if( !setIncomplete ){
+                //look at individual quantified formulas, one module must claim completeness for each one
+                for( unsigned i=0; i<d_model->getNumAssertedQuantifiers(); i++ ){
+                  bool hasCompleteM = false;
+                  Node q = d_model->getAssertedQuantifier( i );
+                  QuantifiersModule * qmd = getOwner( q );
+                  if( qmd!=NULL ){
+                    hasCompleteM = qmd->checkCompleteFor( q );
+                  }else{
+                    for( unsigned j=0; j<d_modules.size(); j++ ){
+                      if( d_modules[j]->checkCompleteFor( q ) ){
+                        qmd = d_modules[j];
+                        hasCompleteM = true;
+                        break;
+                      }
+                    }
+                  }
+                  if( !hasCompleteM ){
+                    Trace("quant-engine-debug") << "Set incomplete because " << q << " was not fully processed." << std::endl;
+                    setIncomplete = true;
+                    break;
+                  }else{
+                    Assert( qmd!=NULL );
+                    Trace("quant-engine-debug2") << "Complete for " << q << " due to " << qmd->identify().c_str() << std::endl;
+                  }
+                }
+              }
+            }
+            //if setIncomplete = false, we will answer SAT, otherwise we will run at quant_e QEFFORT_LAST_CALL
+            if( !setIncomplete ){
+              break;
+            }
+          }
+        }
+      }
+    }
+    d_curr_effort_level = QEFFORT_NONE;
+    Trace("quant-engine-debug") << "Done check modules that needed check." << std::endl;
+    if( d_hasAddedLemma ){
+      //debug information
+      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;
+        }
+      }
+    }
+    if( Trace.isOn("quant-engine") ){
+      double clSet2 = double(clock())/double(CLOCKS_PER_SEC);
+      Trace("quant-engine") << "Finished quantifiers engine, total time = " << (clSet2-clSet);
+      Trace("quant-engine") << ", added lemma = " << d_hasAddedLemma;
+      Trace("quant-engine") << std::endl;
+    }
+    
+    Trace("quant-engine-debug2") << "Finished quantifiers engine check." << std::endl;
+  }else{
+    Trace("quant-engine-debug2") << "Quantifiers Engine does not need check." << std::endl;
+  }
+
+  //SAT case
+  if( e==Theory::EFFORT_LAST_CALL && !d_hasAddedLemma ){
+    if( options::produceModels() ){
+      if( usedModelBuilder ){
+        Trace("quant-engine-debug") << "Build completed model..." << std::endl;
+        d_builder->buildModel( d_model, true );
+      }else if( !d_model->isModelSet() ){
+        //use default model builder when no module built the model
+        Trace("quant-engine-debug") << "Build the model..." << std::endl;
+        d_te->getModelBuilder()->buildModel( d_model, true );
+        Trace("quant-engine-debug") << "Done building the model." << std::endl;
+      }
+    }
+    if( setIncomplete ){
+      Trace("quant-engine") << "Set incomplete flag." << std::endl;
+      getOutputChannel().setIncomplete();
+    }
+    //output debug stats
+    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;
+      }
+    }
+  }
+}
+
+void QuantifiersEngine::notifyCombineTheories() {
+  //if allowing theory combination to happen at most once between instantiation rounds
+  //d_ierCounter = 1;
+  //d_ierCounterLastLc = -1;
+}
+
+bool QuantifiersEngine::reduceQuantifier( Node q ) {
+  //TODO: this can be unified with preregistration: AlphaEquivalence takes ownership of reducable quants
+  BoolMap::const_iterator it = d_quants_red.find( q );
+  if( it==d_quants_red.end() ){
+    Node lem;
+    std::map< Node, Node >::iterator itr = d_quants_red_lem.find( q );
+    if( itr==d_quants_red_lem.end() ){
+      if( d_alpha_equiv ){
+        Trace("quant-engine-red") << "Alpha equivalence " << q << "?" << std::endl;
+        //add equivalence with another quantified formula
+        lem = d_alpha_equiv->reduceQuantifier( q );
+        if( !lem.isNull() ){
+          Trace("quant-engine-red") << "...alpha equivalence success." << std::endl;
+          ++(d_statistics.d_red_alpha_equiv);
+        }
+      }
+      d_quants_red_lem[q] = lem;
+    }else{
+      lem = itr->second;
+    }
+    if( !lem.isNull() ){
+      getOutputChannel().lemma( lem );
+    }
+    d_quants_red[q] = !lem.isNull();
+    return !lem.isNull();
+  }else{
+    return (*it).second;
+  }
+}
+
+bool QuantifiersEngine::registerQuantifier( Node f ){
+  std::map< Node, bool >::iterator it = d_quants.find( f );
+  if( it==d_quants.end() ){
+    Trace("quant") << "QuantifiersEngine : Register quantifier ";
+    Trace("quant") << " : " << f << std::endl;
+    ++(d_statistics.d_num_quant);
+    Assert( f.getKind()==FORALL );
+
+    //check whether we should apply a reduction
+    if( reduceQuantifier( f ) ){
+      Trace("quant") << "...reduced." << std::endl;
+      d_quants[f] = false;
+      return false;
+    }else{
+      //make instantiation constants for f
+      d_term_db->makeInstantiationConstantsFor( f );
+      d_term_db->computeAttributes( f );
+      for( unsigned i=0; i<d_modules.size(); i++ ){
+        Trace("quant-debug") << "pre-register with " << d_modules[i]->identify() << "..." << std::endl;
+        d_modules[i]->preRegisterQuantifier( f );
+      }
+      QuantifiersModule * qm = getOwner( f );
+      if( qm!=NULL ){
+        Trace("quant") << "   Owner : " << qm->identify() << std::endl;
+      }
+      //register with quantifier relevance
+      if( d_quant_rel ){
+        d_quant_rel->registerQuantifier( f );
+      }
+      //register with each module
+      for( unsigned i=0; i<d_modules.size(); i++ ){
+        Trace("quant-debug") << "register with " << d_modules[i]->identify() << "..." << std::endl;
+        d_modules[i]->registerQuantifier( f );
+      }
+      //TODO: remove this
+      Node ceBody = d_term_db->getInstConstantBody( f );
+      //also register it with the strong solver
+      //if( options::finiteModelFind() ){
+      //  ((uf::TheoryUF*)d_te->theoryOf( THEORY_UF ))->getStrongSolver()->registerQuantifier( f );
+      //}
+      Trace("quant-debug")  << "...finish." << std::endl;
+      d_quants[f] = true;
+      return true;
+    }
+  }else{
+    return (*it).second;
+  }
+}
+
+void QuantifiersEngine::registerPattern( std::vector<Node> & pattern) {
+  for(std::vector<Node>::iterator p = pattern.begin(); p != pattern.end(); ++p){
+    std::set< Node > added;
+    getTermDatabase()->addTerm( *p, added );
+  }
+}
+
+void QuantifiersEngine::assertQuantifier( Node f, bool pol ){
+  if( !pol ){
+    //if not reduced
+    if( !reduceQuantifier( f ) ){
+      //do skolemization
+      if( d_skolemized.find( f )==d_skolemized.end() ){
+        Node body = d_term_db->getSkolemizedBody( f );
+        NodeBuilder<> nb(kind::OR);
+        nb << f << body.notNode();
+        Node lem = nb;
+        if( Trace.isOn("quantifiers-sk-debug") ){
+          Node slem = Rewriter::rewrite( lem );
+          Trace("quantifiers-sk-debug") << "Skolemize lemma : " << slem << std::endl;
+        }
+        getOutputChannel().lemma( lem, false, true );
+        d_skolemized[f] = true;
+      }
+    }
+  }else{
+    //assert to modules TODO : also for !pol?
+    //register the quantifier, assert it to each module
+    if( registerQuantifier( f ) ){
+      d_model->assertQuantifier( f );
+      for( unsigned i=0; i<d_modules.size(); i++ ){
+        d_modules[i]->assertNode( f );
+      }
+      addTermToDatabase( d_term_db->getInstConstantBody( f ), true );
+    }
+  }
+}
+
+void QuantifiersEngine::propagate( Theory::Effort level ){
+  CodeTimer codeTimer(d_statistics.d_time);
+
+  for( int i=0; i<(int)d_modules.size(); i++ ){
+    d_modules[i]->propagate( level );
+  }
+}
+
+Node QuantifiersEngine::getNextDecisionRequest( unsigned& priority ){
+  unsigned min_priority = 0;
+  Node dec;  
+  for( unsigned i=0; i<d_modules.size(); i++ ){
+    Node n = d_modules[i]->getNextDecisionRequest( priority );
+    if( !n.isNull() && ( dec.isNull() || priority<min_priority ) ){
+      dec = n;
+      min_priority = priority;
+    }
+  }
+  return dec;
+}
+
+quantifiers::TermDbSygus* QuantifiersEngine::getTermDatabaseSygus() {
+  return getTermDatabase()->getTermDatabaseSygus();
+}
+
+void QuantifiersEngine::addTermToDatabase( Node n, bool withinQuant, bool withinInstClosure ){
+  if( options::incrementalSolving() ){
+    if( d_presolve_in.find( n )==d_presolve_in.end() ){
+      d_presolve_in.insert( n );
+      d_presolve_cache.push_back( n );
+      d_presolve_cache_wq.push_back( withinQuant );
+      d_presolve_cache_wic.push_back( withinInstClosure );
+    }
+  }
+  //only wait if we are doing incremental solving
+  if( !d_presolve || !options::incrementalSolving() ){
+    std::set< Node > added;
+    getTermDatabase()->addTerm( n, added, withinQuant, withinInstClosure );
+    
+    //added contains also the Node that just have been asserted in this branch
+    if( d_quant_rel ){
+      for( std::set< Node >::iterator i=added.begin(), end=added.end(); i!=end; i++ ){
+        if( !withinQuant ){
+          d_quant_rel->setRelevance( i->getOperator(), 0 );
+        }
+      }
+    }
+  }
+}
+
+void QuantifiersEngine::eqNotifyNewClass(TNode t) {
+  addTermToDatabase( t );
+  if( d_eq_query->getEqualityInference() ){
+    d_eq_query->getEqualityInference()->eqNotifyNewClass( t );
+  }
+}
+
+void QuantifiersEngine::eqNotifyPreMerge(TNode t1, TNode t2) {
+  if( d_eq_query->getEqualityInference() ){
+    d_eq_query->getEqualityInference()->eqNotifyMerge( t1, t2 );
+  }
+}
+
+void QuantifiersEngine::eqNotifyPostMerge(TNode t1, TNode t2) {
+
+}
+
+void QuantifiersEngine::eqNotifyDisequal(TNode t1, TNode t2, TNode reason) {
+  //if( d_qcf ){
+  //  d_qcf->assertDisequal( t1, t2 );
+  //}
+}
+
+void QuantifiersEngine::computeTermVector( Node f, InstMatch& m, std::vector< Node >& vars, std::vector< Node >& terms ){
+  for( size_t i=0; i<f[0].getNumChildren(); i++ ){
+    Node n = m.get( i );
+    if( !n.isNull() ){
+      vars.push_back( f[0][i] );
+      terms.push_back( n );
+    }
+  }
+}
+
+
+bool QuantifiersEngine::recordInstantiationInternal( Node q, std::vector< Node >& terms, bool modEq, bool addedLem ) {
+  if( !addedLem ){
+    //record the instantiation for deletion later
+    d_recorded_inst.push_back( std::pair< Node, std::vector< Node > >( q, terms ) );
+  }
+  if( options::incrementalSolving() ){
+    Trace("inst-add-debug") << "Adding into context-dependent inst trie, modEq = " << modEq << std::endl;
+    inst::CDInstMatchTrie* imt;
+    std::map< Node, inst::CDInstMatchTrie* >::iterator it = d_c_inst_match_trie.find( q );
+    if( it!=d_c_inst_match_trie.end() ){
+      imt = it->second;
+    }else{
+      imt = new CDInstMatchTrie( getUserContext() );
+      d_c_inst_match_trie[q] = imt;
+    }
+    return imt->addInstMatch( this, q, terms, getUserContext(), modEq );
+  }else{
+    Trace("inst-add-debug") << "Adding into inst trie" << std::endl;
+    return d_inst_match_trie[q].addInstMatch( this, q, terms, modEq );
+  }
+}
+
+bool QuantifiersEngine::removeInstantiationInternal( Node q, std::vector< Node >& terms ) {
+  if( options::incrementalSolving() ){
+    std::map< Node, inst::CDInstMatchTrie* >::iterator it = d_c_inst_match_trie.find( q );
+    if( it!=d_c_inst_match_trie.end() ){
+      return it->second->removeInstMatch( this, q, terms );
+    }else{
+      return false;
+    }
+  }else{
+    return d_inst_match_trie[q].removeInstMatch( this, q, terms );
+  }
+}
+
+void QuantifiersEngine::setInstantiationLevelAttr( Node n, Node qn, uint64_t level ){
+  Trace("inst-level-debug2") << "IL : " << n << " " << qn << " " << level << std::endl;
+  //if not from the vector of terms we instantiatied
+  if( qn.getKind()!=BOUND_VARIABLE && n!=qn ){
+    //if this is a new term, without an instantiation level
+    if( !n.hasAttribute(InstLevelAttribute()) ){
+      InstLevelAttribute ila;
+      n.setAttribute(ila,level);
+      Trace("inst-level-debug") << "Set instantiation level " << n << " to " << level << std::endl;
+      Assert( n.getNumChildren()==qn.getNumChildren() );
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        setInstantiationLevelAttr( n[i], qn[i], level );
+      }
+    }
+  }
+}
+
+void QuantifiersEngine::setInstantiationLevelAttr( Node n, uint64_t level ){
+  if( !n.hasAttribute(InstLevelAttribute()) ){
+    InstLevelAttribute ila;
+    n.setAttribute(ila,level);
+    Trace("inst-level-debug") << "Set instantiation level " << n << " to " << level << std::endl;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      setInstantiationLevelAttr( n[i], level );
+    }
+  }
+}
+
+Node QuantifiersEngine::getSubstitute( Node n, std::vector< Node >& terms ){
+  if( n.getKind()==INST_CONSTANT ){
+    Debug("check-inst") << "Substitute inst constant : " << n << std::endl;
+    return terms[n.getAttribute(InstVarNumAttribute())];
+  }else{
+    //if( !quantifiers::TermDb::hasInstConstAttr( n ) ){
+      //Debug("check-inst") << "No inst const attr : " << n << std::endl;
+      //return n;
+    //}else{
+      //Debug("check-inst") << "Recurse on : " << n << std::endl;
+    std::vector< Node > cc;
+    if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+      cc.push_back( n.getOperator() );
+    }
+    bool changed = false;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      Node c = getSubstitute( n[i], terms );
+      cc.push_back( c );
+      changed = changed || c!=n[i];
+    }
+    if( changed ){
+      Node ret = NodeManager::currentNM()->mkNode( n.getKind(), cc );
+      return ret;
+    }else{
+      return n;
+    }
+  }
+}
+
+
+Node QuantifiersEngine::getInstantiation( Node q, std::vector< Node >& vars, std::vector< Node >& terms, bool doVts ){
+  Node body;
+  Assert( vars.size()==terms.size() );
+  //process partial instantiation if necessary
+  if( q[0].getNumChildren()!=vars.size() ){
+    body = q[ 1 ].substitute( vars.begin(), vars.end(), terms.begin(), terms.end() );
+    std::vector< Node > uninst_vars;
+    //doing a partial instantiation, must add quantifier for all uninstantiated variables
+    for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
+      if( std::find( vars.begin(), vars.end(), q[0][i] )==vars.end() ){
+        uninst_vars.push_back( q[0][i] );
+      }
+    }
+    Trace("partial-inst") << "Partially instantiating with " << vars.size() << " / " << q[0].getNumChildren() << " for " << q << std::endl;
+    Assert( !uninst_vars.empty() );
+    Node bvl = NodeManager::currentNM()->mkNode( BOUND_VAR_LIST, uninst_vars );
+    body = NodeManager::currentNM()->mkNode( FORALL, bvl, body );
+    Trace("partial-inst") << "Partial instantiation : " << q << std::endl;
+    Trace("partial-inst") << "                      : " << body << std::endl;
+  }else{
+    if( options::cbqi() ){
+      body = q[ 1 ].substitute( vars.begin(), vars.end(), terms.begin(), terms.end() );
+    }else{
+      //do optimized version
+      Node icb = d_term_db->getInstConstantBody( q );
+      body = getSubstitute( icb, terms );
+      if( Debug.isOn("check-inst") ){
+        Node body2 = q[ 1 ].substitute( vars.begin(), vars.end(), terms.begin(), terms.end() );
+        if( body!=body2 ){
+          Debug("check-inst") << "Substitution is wrong : " << body << " " << body2 << std::endl;
+        }
+      }
+    }
+  }
+  if( doVts ){
+    //do virtual term substitution
+    body = Rewriter::rewrite( body );
+    Trace("quant-vts-debug") << "Rewrite vts symbols in " << body << std::endl;
+    Node body_r = d_term_db->rewriteVtsSymbols( body );
+    Trace("quant-vts-debug") << "            ...result: " << body_r << std::endl;
+    body = body_r;
+  }
+  return body;
+}
+
+Node QuantifiersEngine::getInstantiation( Node q, InstMatch& m, bool doVts ){
+  std::vector< Node > vars;
+  std::vector< Node > terms;
+  computeTermVector( q, m, vars, terms );
+  return getInstantiation( q, vars, terms, doVts );
+}
+
+Node QuantifiersEngine::getInstantiation( Node q, std::vector< Node >& terms, bool doVts ) {
+  Assert( d_term_db->d_vars.find( q )!=d_term_db->d_vars.end() );
+  return getInstantiation( q, d_term_db->d_vars[q], terms, doVts );
+}
+
+/*
+bool QuantifiersEngine::existsInstantiation( Node f, InstMatch& m, bool modEq ){
+  if( options::incrementalSolving() ){
+    if( d_c_inst_match_trie.find( f )!=d_c_inst_match_trie.end() ){
+      if( d_c_inst_match_trie[f]->existsInstMatch( this, f, m, getUserContext(), modEq ) ){
+        return true;
+      }
+    }
+  }else{
+    if( d_inst_match_trie.find( f )!=d_inst_match_trie.end() ){
+      if( d_inst_match_trie[f].existsInstMatch( this, f, m, modEq ) ){
+        return true;
+      }
+    }
+  }
+  return false;
+}
+*/
+
+bool QuantifiersEngine::addLemma( Node lem, bool doCache, bool doRewrite ){
+  if( doCache ){
+    if( doRewrite ){
+      lem = Rewriter::rewrite(lem);
+    }
+    Trace("inst-add-debug") << "Adding lemma : " << lem << std::endl;
+    BoolMap::const_iterator itp = d_lemmas_produced_c.find( lem );
+    if( itp==d_lemmas_produced_c.end() || !(*itp).second ){
+      //d_curr_out->lemma( lem, false, true );
+      d_lemmas_produced_c[ lem ] = true;
+      d_lemmas_waiting.push_back( lem );
+      Trace("inst-add-debug") << "Added lemma" << std::endl;
+      return true;
+    }else{
+      Trace("inst-add-debug") << "Duplicate." << std::endl;
+      return false;
+    }
+  }else{
+    //do not need to rewrite, will be rewritten after sending
+    d_lemmas_waiting.push_back( lem );
+    return true;
+  }
+}
+
+bool QuantifiersEngine::removeLemma( Node lem ) {
+  std::vector< Node >::iterator it = std::find( d_lemmas_waiting.begin(), d_lemmas_waiting.end(), lem );
+  if( it!=d_lemmas_waiting.end() ){
+    d_lemmas_waiting.erase( it, it + 1 );
+    d_lemmas_produced_c[ lem ] = false;
+    return true;
+  }else{
+    return false;
+  }
+}
+
+void QuantifiersEngine::addRequirePhase( Node lit, bool req ){
+  d_phase_req_waiting[lit] = req;
+}
+
+bool QuantifiersEngine::addInstantiation( Node q, InstMatch& m, bool mkRep, bool modEq, bool doVts ){
+  std::vector< Node > terms;
+  m.getTerms( q, terms );
+  return addInstantiation( q, terms, mkRep, modEq, doVts );
+}
+
+bool QuantifiersEngine::addInstantiation( Node q, std::vector< Node >& terms, bool mkRep, bool modEq, bool doVts ) {
+  // For resource-limiting (also does a time check).
+  getOutputChannel().safePoint(options::quantifierStep());
+  Assert( !d_conflict );
+  Assert( terms.size()==q[0].getNumChildren() );
+  Trace("inst-add-debug") << "For quantified formula " << q << ", add instantiation: " << std::endl;
+  std::vector< Node > rlv_cond;
+  for( unsigned i=0; i<terms.size(); i++ ){
+    Trace("inst-add-debug") << "  " << q[0][i];
+    Trace("inst-add-debug2") << " -> " << terms[i];
+    if( terms[i].isNull() ){
+      terms[i] = d_term_db->getModelBasisTerm( q[0][i].getType() );
+    }
+    if( mkRep ){
+      //pick the best possible representative for instantiation, based on past use and simplicity of term
+      terms[i] = d_eq_query->getInternalRepresentative( terms[i], q, i );
+    }else{
+      //ensure the type is correct
+      terms[i] = quantifiers::TermDb::ensureType( terms[i], q[0][i].getType() );
+    }
+    Trace("inst-add-debug") << " -> " << terms[i] << std::endl;
+    if( terms[i].isNull() ){
+      Trace("inst-add-debug") << " --> Failed to make term vector, due to term/type restrictions." << std::endl;
+      return false;
+    }else{
+      //get relevancy conditions
+      if( options::instRelevantCond() ){
+        quantifiers::TermDb::getRelevancyCondition( terms[i], rlv_cond );
+      }
+    }
+#ifdef CVC4_ASSERTIONS
+    bool bad_inst = false;
+    if( quantifiers::TermDb::containsUninterpretedConstant( terms[i] ) ){
+      Trace("inst") << "***& inst contains uninterpreted constant : " << terms[i] << std::endl;
+      bad_inst = true;
+    }else if( !terms[i].getType().isSubtypeOf( q[0][i].getType() ) ){
+      Trace("inst") << "***& inst bad type : " << terms[i] << " " << terms[i].getType() << "/" << q[0][i].getType() << std::endl;
+      bad_inst = true;
+    }else if( options::cbqi() ){
+      Node icf = quantifiers::TermDb::getInstConstAttr(terms[i]);
+      if( !icf.isNull() ){
+        if( icf==q ){
+          Trace("inst") << "***& inst contains inst constant attr : " << terms[i] << std::endl;
+          bad_inst = true;
+        }else if( quantifiers::TermDb::containsTerms( terms[i], d_term_db->d_inst_constants[q] ) ){
+          Trace("inst") << "***& inst contains inst constants : " << terms[i] << std::endl;
+          bad_inst = true;
+        }
+      }
+    }
+    //this assertion is critical to soundness
+    if( bad_inst ){
+      Trace("inst")<< "***& Bad Instantiate " << q << " with " << std::endl;
+      for( unsigned j=0; j<terms.size(); j++ ){
+        Trace("inst") << "   " << terms[j] << std::endl;
+      }
+      Assert( false );
+    }
+#endif
+  }
+
+  //check based on instantiation level
+  if( options::instMaxLevel()!=-1 || options::lteRestrictInstClosure() ){
+    for( unsigned i=0; i<terms.size(); i++ ){
+      if( !d_term_db->isTermEligibleForInstantiation( terms[i], q, true ) ){
+        return false;
+      }
+    }
+  }
+
+  //check for positive entailment
+  if( options::instNoEntail() ){
+    //TODO: check consistency of equality engine (if not aborting on utility's reset)
+    std::map< TNode, TNode > subs;
+    for( unsigned i=0; i<terms.size(); i++ ){
+      subs[q[0][i]] = terms[i];
+    }
+    if( d_term_db->isEntailed( q[1], subs, false, true ) ){
+      Trace("inst-add-debug") << " --> Currently entailed." << std::endl;
+      ++(d_statistics.d_inst_duplicate_ent);
+      return false;
+    }
+    //Node eval = d_term_db->evaluateTerm( q[1], subs, false, true );
+    //Trace("inst-add-debug2") << "Instantiation evaluates to : " << std::endl;
+    //Trace("inst-add-debug2") << "   " << eval << std::endl;
+  }
+
+  //check for term vector duplication
+  bool alreadyExists = !recordInstantiationInternal( q, terms, modEq );
+  if( alreadyExists ){
+    Trace("inst-add-debug") << " --> Already exists." << std::endl;
+    ++(d_statistics.d_inst_duplicate_eq);
+    return false;
+  }
+
+  //construct the instantiation
+  Trace("inst-add-debug") << "Constructing instantiation..." << std::endl;
+  Assert( d_term_db->d_vars[q].size()==terms.size() );
+  Node body = getInstantiation( q, d_term_db->d_vars[q], terms, doVts );  //do virtual term substitution
+  Node orig_body = body;
+  if( options::cbqiNestedQE() && d_i_cbqi ){
+    body = d_i_cbqi->doNestedQE( q, terms, body, doVts );
+  }  
+  body = quantifiers::QuantifiersRewriter::preprocess( body, true );
+  Trace("inst-debug") << "...preprocess to " << body << std::endl;
+
+  //construct the lemma
+  Trace("inst-assert") << "(assert " << body << ")" << std::endl;
+  body = Rewriter::rewrite(body);
+  Node lem;
+  if( rlv_cond.empty() ){
+    lem = NodeManager::currentNM()->mkNode( kind::OR, q.negate(), body );
+  }else{
+    rlv_cond.push_back( q.negate() );
+    rlv_cond.push_back( body );
+    lem = NodeManager::currentNM()->mkNode( kind::OR, rlv_cond );
+  }
+  lem = Rewriter::rewrite(lem);
+
+  //check for lemma duplication
+  if( addLemma( lem, true, false ) ){
+    d_total_inst_debug[q]++;
+    d_temp_inst_debug[q]++;
+    d_total_inst_count_debug++;
+    if( Trace.isOn("inst") ){
+      Trace("inst") << "*** Instantiate " << q << " with " << std::endl;
+      for( unsigned i=0; i<terms.size(); i++ ){
+        if( Trace.isOn("inst") ){
+          Trace("inst") << "   " << terms[i];
+          if( Trace.isOn("inst-debug") ){
+            Trace("inst-debug") << ", type=" << terms[i].getType() << ", var_type=" << q[0][i].getType();
+          }
+          Trace("inst") << std::endl;
+        }
+      }
+    }
+    if( options::instMaxLevel()!=-1 ){
+      if( doVts ){
+        //virtual term substitution/instantiation level features are incompatible
+        Assert( false );
+      }else{
+        uint64_t maxInstLevel = 0;
+        for( unsigned i=0; i<terms.size(); i++ ){
+          if( terms[i].hasAttribute(InstLevelAttribute()) ){
+            if( terms[i].getAttribute(InstLevelAttribute())>maxInstLevel ){
+              maxInstLevel = terms[i].getAttribute(InstLevelAttribute());
+            }
+          }
+        }
+        setInstantiationLevelAttr( orig_body, q[1], maxInstLevel+1 );
+      }
+    }
+    if( d_curr_effort_level>QEFFORT_CONFLICT && d_curr_effort_level<QEFFORT_NONE ){
+      //notify listeners
+      for( unsigned j=0; j<d_inst_notify.size(); j++ ){
+        if( !d_inst_notify[j]->notifyInstantiation( d_curr_effort_level, q, lem, terms, body ) ){
+          Trace("inst-add-debug") << "...we are in conflict." << std::endl;
+          d_conflict = true;
+          d_conflict_c = true;
+          Assert( !d_lemmas_waiting.empty() );
+          break;
+        }
+      }
+    }
+    if( options::trackInstLemmas() ){
+      bool recorded;
+      if( options::incrementalSolving() ){
+        recorded = d_c_inst_match_trie[q]->recordInstLemma( q, terms, lem );
+      }else{
+        recorded = d_inst_match_trie[q].recordInstLemma( q, terms, lem );
+      }
+      Trace("inst-add-debug") << "...was recorded : " << recorded << std::endl;
+      Assert( recorded );
+    }
+    Trace("inst-add-debug") << " --> Success." << std::endl;
+    ++(d_statistics.d_instantiations);
+    return true;
+  }else{
+    Trace("inst-add-debug") << " --> Lemma already exists." << std::endl;
+    ++(d_statistics.d_inst_duplicate);
+    return false;
+  }
+}
+
+bool QuantifiersEngine::removeInstantiation( Node q, Node lem, std::vector< Node >& terms ) {
+  //lem must occur in d_waiting_lemmas
+  if( removeLemma( lem ) ){
+    return removeInstantiationInternal( q, terms );
+  }else{
+    return false;
+  }
+}
+
+bool QuantifiersEngine::addSplit( Node n, bool reqPhase, bool reqPhasePol ){
+  n = Rewriter::rewrite( n );
+  Node lem = NodeManager::currentNM()->mkNode( OR, n, n.notNode() );
+  if( addLemma( lem ) ){
+    Debug("inst") << "*** Add split " << n<< std::endl;
+    return true;
+  }
+  return false;
+}
+
+bool QuantifiersEngine::addSplitEquality( Node n1, Node n2, bool reqPhase, bool reqPhasePol ){
+  //Assert( !areEqual( n1, n2 ) );
+  //Assert( !areDisequal( n1, n2 ) );
+  Node fm = NodeManager::currentNM()->mkNode( EQUAL, n1, n2 );
+  return addSplit( fm );
+}
+
+bool QuantifiersEngine::addEPRAxiom( TypeNode tn ) {
+  if( d_qepr ){
+    Assert( !options::incrementalSolving() );
+    if( d_qepr->isEPR( tn ) && !d_qepr->hasEPRAxiom( tn ) ){
+      Node lem = d_qepr->mkEPRAxiom( tn );
+      Trace("quant-epr") << "EPR lemma for " << tn << " : " << lem << std::endl;
+      getOutputChannel().lemma( lem );
+    }
+  }
+  return false;
+}
+  
+void QuantifiersEngine::markRelevant( Node q ) {
+  d_model->markRelevant( q );
+}
+
+bool QuantifiersEngine::getInstWhenNeedsCheck( Theory::Effort e ) {
+  Trace("quant-engine-debug2") << "Get inst when needs check, counts=" << d_ierCounter << ", " << d_ierCounter_lc << std::endl;
+  //determine if we should perform check, based on instWhenMode
+  bool performCheck = false;
+  if( options::instWhenMode()==quantifiers::INST_WHEN_FULL ){
+    performCheck = ( e >= Theory::EFFORT_FULL );
+  }else if( options::instWhenMode()==quantifiers::INST_WHEN_FULL_DELAY ){
+    performCheck = ( e >= Theory::EFFORT_FULL ) && !getTheoryEngine()->needCheck();
+  }else if( options::instWhenMode()==quantifiers::INST_WHEN_FULL_LAST_CALL ){
+    performCheck = ( ( e==Theory::EFFORT_FULL && d_ierCounter%d_inst_when_phase!=0 ) || e==Theory::EFFORT_LAST_CALL );
+  }else if( options::instWhenMode()==quantifiers::INST_WHEN_FULL_DELAY_LAST_CALL ){
+    performCheck = ( ( e==Theory::EFFORT_FULL && !getTheoryEngine()->needCheck() && d_ierCounter%d_inst_when_phase!=0 ) || e==Theory::EFFORT_LAST_CALL );
+  }else if( options::instWhenMode()==quantifiers::INST_WHEN_LAST_CALL ){
+    performCheck = ( e >= Theory::EFFORT_LAST_CALL );
+  }else{
+    performCheck = true;
+  }
+  if( e==Theory::EFFORT_LAST_CALL ){
+    //with bounded integers, skip every other last call,
+    // since matching loops may occur with infinite quantification
+    if( d_ierCounter_lc%2==0 && options::fmfBound() ){
+      performCheck = false;
+    }
+  }
+  return performCheck;
+}
+
+quantifiers::UserPatMode QuantifiersEngine::getInstUserPatMode() {
+  if( options::userPatternsQuant()==quantifiers::USER_PAT_MODE_INTERLEAVE ){
+    return d_ierCounter%2==0 ? quantifiers::USER_PAT_MODE_USE : quantifiers::USER_PAT_MODE_RESORT;
+  }else{
+    return options::userPatternsQuant();
+  }
+}
+
+void QuantifiersEngine::flushLemmas(){
+  if( !d_lemmas_waiting.empty() ){
+    //filter based on notify classes
+    if( !d_inst_notify.empty() ){
+      unsigned prev_lem_sz = d_lemmas_waiting.size();
+      for( unsigned j=0; j<d_inst_notify.size(); j++ ){
+        d_inst_notify[j]->filterInstantiations();
+      }  
+      if( prev_lem_sz!=d_lemmas_waiting.size() ){
+        Trace("quant-engine") << "...filtered instances : " << d_lemmas_waiting.size() << " / " << prev_lem_sz << std::endl;
+      }
+    }
+    //take default output channel if none is provided
+    d_hasAddedLemma = true;
+    for( unsigned i=0; i<d_lemmas_waiting.size(); i++ ){
+      Trace("qe-lemma") << "Lemma : " << d_lemmas_waiting[i] << std::endl;
+      getOutputChannel().lemma( d_lemmas_waiting[i], false, true );
+    }
+    d_lemmas_waiting.clear();
+  }
+  if( !d_phase_req_waiting.empty() ){
+    for( std::map< Node, bool >::iterator it = d_phase_req_waiting.begin(); it != d_phase_req_waiting.end(); ++it ){
+      Trace("qe-lemma") << "Require phase : " << it->first << " -> " << it->second << std::endl;
+      getOutputChannel().requirePhase( it->first, it->second );
+    }
+    d_phase_req_waiting.clear();
+  }
+}
+
+bool QuantifiersEngine::getUnsatCoreLemmas( std::vector< Node >& active_lemmas ) {
+  //only if unsat core available
+  bool isUnsatCoreAvailable = false;
+  if( options::proof() ){
+    isUnsatCoreAvailable = ProofManager::currentPM()->unsatCoreAvailable();
+  }
+  if( isUnsatCoreAvailable ){
+    Trace("inst-unsat-core") << "Get instantiations in unsat core..." << std::endl;
+    ProofManager::currentPM()->getLemmasInUnsatCore(theory::THEORY_QUANTIFIERS, active_lemmas);
+    if( Trace.isOn("inst-unsat-core") ){
+      Trace("inst-unsat-core") << "Quantifiers lemmas in unsat core: " << std::endl;
+      for (unsigned i = 0; i < active_lemmas.size(); ++i) {
+        Trace("inst-unsat-core") << "  " << active_lemmas[i] << std::endl;
+      }
+      Trace("inst-unsat-core") << std::endl;
+    }
+    return true;
+  }else{
+    return false;
+  }
+}
+
+bool QuantifiersEngine::getUnsatCoreLemmas( std::vector< Node >& active_lemmas, std::map< Node, Node >& weak_imp ) {
+  if( getUnsatCoreLemmas( active_lemmas ) ){
+    for (unsigned i = 0; i < active_lemmas.size(); ++i) {
+      Node n = ProofManager::currentPM()->getWeakestImplicantInUnsatCore(active_lemmas[i]);
+      if( n!=active_lemmas[i] ){
+        Trace("inst-unsat-core") << "  weaken : " << active_lemmas[i] << " -> " << n << std::endl;
+      }
+      weak_imp[active_lemmas[i]] = n;
+    }
+    return true;
+  }else{
+    return false;
+  }
+}
+
+void QuantifiersEngine::getInstantiationTermVectors( Node q, std::vector< std::vector< Node > >& tvecs ) {
+  std::vector< Node > lemmas;
+  getInstantiations( q, lemmas );
+  std::map< Node, Node > quant;
+  std::map< Node, std::vector< Node > > tvec;
+  getExplanationForInstLemmas( lemmas, quant, tvec );
+  for( std::map< Node, std::vector< Node > >::iterator it = tvec.begin(); it != tvec.end(); ++it ){
+    tvecs.push_back( it->second );
+  }
+}
+
+void QuantifiersEngine::getInstantiationTermVectors( std::map< Node, std::vector< std::vector< Node > > >& insts ) {
+  if( options::incrementalSolving() ){
+    for( std::map< Node, inst::CDInstMatchTrie* >::iterator it = d_c_inst_match_trie.begin(); it != d_c_inst_match_trie.end(); ++it ){
+      getInstantiationTermVectors( it->first, insts[it->first] );
+    }
+  }else{
+    for( std::map< Node, inst::InstMatchTrie >::iterator it = d_inst_match_trie.begin(); it != d_inst_match_trie.end(); ++it ){
+      getInstantiationTermVectors( it->first, insts[it->first] );
+    }
+  }
+}
+
+void QuantifiersEngine::getExplanationForInstLemmas( std::vector< Node >& lems, std::map< Node, Node >& quant, std::map< Node, std::vector< Node > >& tvec ) {
+  if( options::trackInstLemmas() ){
+    if( options::incrementalSolving() ){
+      for( std::map< Node, inst::CDInstMatchTrie* >::iterator it = d_c_inst_match_trie.begin(); it != d_c_inst_match_trie.end(); ++it ){
+        it->second->getExplanationForInstLemmas( it->first, lems, quant, tvec );
+      }
+    }else{
+      for( std::map< Node, inst::InstMatchTrie >::iterator it = d_inst_match_trie.begin(); it != d_inst_match_trie.end(); ++it ){
+        it->second.getExplanationForInstLemmas( it->first, lems, quant, tvec );
+      }
+    }
+#ifdef CVC4_ASSERTIONS
+    for( unsigned j=0; j<lems.size(); j++ ){
+      Assert( quant.find( lems[j] )!=quant.end() );
+      Assert( tvec.find( lems[j] )!=tvec.end() );
+    }
+#endif
+  }else{
+    Assert( false );
+  }
+}
+
+void QuantifiersEngine::printInstantiations( std::ostream& out ) {
+  bool useUnsatCore = false;
+  std::vector< Node > active_lemmas;
+  if( options::trackInstLemmas() && getUnsatCoreLemmas( active_lemmas ) ){
+    useUnsatCore = true;
+  }
+
+  bool printed = false;
+  for( BoolMap::iterator it = d_skolemized.begin(); it != d_skolemized.end(); ++it ){
+    Node q = (*it).first;
+    printed = true;
+    out << "(skolem " << q << std::endl;
+    out << "  ( ";
+    for( unsigned i=0; i<d_term_db->d_skolem_constants[q].size(); i++ ){
+      if( i>0 ){ out << " "; }
+      out << d_term_db->d_skolem_constants[q][i];
+    }
+    out << " )" << std::endl;
+    out << ")" << std::endl;
+  }
+  if( options::incrementalSolving() ){
+    for( std::map< Node, inst::CDInstMatchTrie* >::iterator it = d_c_inst_match_trie.begin(); it != d_c_inst_match_trie.end(); ++it ){
+      bool firstTime = true;
+      it->second->print( out, it->first, firstTime, useUnsatCore, active_lemmas );
+      if( !firstTime ){
+        out << ")" << std::endl;
+      }      
+      printed = printed || !firstTime;
+    }
+  }else{
+    for( std::map< Node, inst::InstMatchTrie >::iterator it = d_inst_match_trie.begin(); it != d_inst_match_trie.end(); ++it ){
+      bool firstTime = true;
+      it->second.print( out, it->first, firstTime, useUnsatCore, active_lemmas );
+      if( !firstTime ){
+        out << ")" << std::endl;
+      }
+      printed = printed || !firstTime;
+    }
+  }
+  if( !printed ){
+    out << "No instantiations" << std::endl;
+  }
+}
+
+void QuantifiersEngine::printSynthSolution( std::ostream& out ) {
+  if( d_ceg_inst ){
+    d_ceg_inst->printSynthSolution( out );
+  }else{
+    out << "Internal error : module for synth solution not found." << std::endl;
+  }
+}
+
+void QuantifiersEngine::getInstantiatedQuantifiedFormulas( std::vector< Node >& qs ) {
+  if( options::incrementalSolving() ){
+    for( std::map< Node, inst::CDInstMatchTrie* >::iterator it = d_c_inst_match_trie.begin(); it != d_c_inst_match_trie.end(); ++it ){
+      qs.push_back( it->first );
+    }
+  }else{
+    for( std::map< Node, inst::InstMatchTrie >::iterator it = d_inst_match_trie.begin(); it != d_inst_match_trie.end(); ++it ){
+      qs.push_back( it->first );
+    }
+  }
+}
+
+void QuantifiersEngine::getInstantiations( std::map< Node, std::vector< Node > >& insts ) {
+  bool useUnsatCore = false;
+  std::vector< Node > active_lemmas;
+  if( options::trackInstLemmas() && getUnsatCoreLemmas( active_lemmas ) ){
+    useUnsatCore = true;
+  }
+
+  if( options::incrementalSolving() ){
+    for( std::map< Node, inst::CDInstMatchTrie* >::iterator it = d_c_inst_match_trie.begin(); it != d_c_inst_match_trie.end(); ++it ){
+      it->second->getInstantiations( insts[it->first], it->first, this, useUnsatCore, active_lemmas );
+    }
+  }else{
+    for( std::map< Node, inst::InstMatchTrie >::iterator it = d_inst_match_trie.begin(); it != d_inst_match_trie.end(); ++it ){
+      it->second.getInstantiations( insts[it->first], it->first, this, useUnsatCore, active_lemmas );
+    }
+  }
+}
+
+void QuantifiersEngine::getInstantiations( Node q, std::vector< Node >& insts  ) {
+  if( options::incrementalSolving() ){
+    std::map< Node, inst::CDInstMatchTrie* >::iterator it = d_c_inst_match_trie.find( q );
+    if( it!=d_c_inst_match_trie.end() ){
+      std::vector< Node > active_lemmas;
+      it->second->getInstantiations( insts, it->first, this, false, active_lemmas );
+    }
+  }else{
+    std::map< Node, inst::InstMatchTrie >::iterator it = d_inst_match_trie.find( q );
+    if( it!=d_inst_match_trie.end() ){
+      std::vector< Node > active_lemmas;
+      it->second.getInstantiations( insts, it->first, this, false, active_lemmas );
+    }
+  }
+}
+
+Node QuantifiersEngine::getInstantiatedConjunction( Node q ) {
+  Assert( q.getKind()==FORALL );
+  std::vector< Node > insts;
+  getInstantiations( q, insts );
+  if( insts.empty() ){
+    return NodeManager::currentNM()->mkConst(true);
+  }else{
+    Node ret;
+    if( insts.size()==1 ){
+      ret = insts[0];
+    }else{
+      ret = NodeManager::currentNM()->mkNode( kind::AND, insts );
+    }
+    //have to remove q, TODO: avoid this in a better way
+    TNode tq = q;
+    TNode tt = d_term_db->d_true;
+    ret = ret.substitute( tq, tt );
+    return ret;
+  }
+}
+
+QuantifiersEngine::Statistics::Statistics()
+    : d_time("theory::QuantifiersEngine::time"),
+      d_qcf_time("theory::QuantifiersEngine::time_qcf"),
+      d_ematching_time("theory::QuantifiersEngine::time_ematching"),
+      d_num_quant("QuantifiersEngine::Num_Quantifiers", 0),
+      d_instantiation_rounds("QuantifiersEngine::Rounds_Instantiation_Full", 0),
+      d_instantiation_rounds_lc("QuantifiersEngine::Rounds_Instantiation_Last_Call", 0),
+      d_instantiations("QuantifiersEngine::Instantiations_Total", 0),
+      d_inst_duplicate("QuantifiersEngine::Duplicate_Inst", 0),
+      d_inst_duplicate_eq("QuantifiersEngine::Duplicate_Inst_Eq", 0),
+      d_inst_duplicate_ent("QuantifiersEngine::Duplicate_Inst_Entailed", 0),
+      d_triggers("QuantifiersEngine::Triggers", 0),
+      d_simple_triggers("QuantifiersEngine::Triggers_Simple", 0),
+      d_multi_triggers("QuantifiersEngine::Triggers_Multi", 0),
+      d_multi_trigger_instantiations("QuantifiersEngine::Multi_Trigger_Instantiations", 0),
+      d_red_alpha_equiv("QuantifiersEngine::Reductions_Alpha_Equivalence", 0),
+      d_instantiations_user_patterns("QuantifiersEngine::Instantiations_User_Patterns", 0),
+      d_instantiations_auto_gen("QuantifiersEngine::Instantiations_Auto_Gen", 0),
+      d_instantiations_guess("QuantifiersEngine::Instantiations_Guess", 0),
+      d_instantiations_qcf("QuantifiersEngine::Instantiations_Qcf_Conflict", 0),
+      d_instantiations_qcf_prop("QuantifiersEngine::Instantiations_Qcf_Prop", 0),
+      d_instantiations_fmf_exh("QuantifiersEngine::Instantiations_Fmf_Exh", 0),
+      d_instantiations_fmf_mbqi("QuantifiersEngine::Instantiations_Fmf_Mbqi", 0),
+      d_instantiations_cbqi("QuantifiersEngine::Instantiations_Cbqi", 0),
+      d_instantiations_rr("QuantifiersEngine::Instantiations_Rewrite_Rules", 0)
+{
+  smtStatisticsRegistry()->registerStat(&d_time);
+  smtStatisticsRegistry()->registerStat(&d_qcf_time);
+  smtStatisticsRegistry()->registerStat(&d_ematching_time);
+  smtStatisticsRegistry()->registerStat(&d_num_quant);
+  smtStatisticsRegistry()->registerStat(&d_instantiation_rounds);
+  smtStatisticsRegistry()->registerStat(&d_instantiation_rounds_lc);
+  smtStatisticsRegistry()->registerStat(&d_instantiations);
+  smtStatisticsRegistry()->registerStat(&d_inst_duplicate);
+  smtStatisticsRegistry()->registerStat(&d_inst_duplicate_eq);
+  smtStatisticsRegistry()->registerStat(&d_inst_duplicate_ent);
+  smtStatisticsRegistry()->registerStat(&d_triggers);
+  smtStatisticsRegistry()->registerStat(&d_simple_triggers);
+  smtStatisticsRegistry()->registerStat(&d_multi_triggers);
+  smtStatisticsRegistry()->registerStat(&d_multi_trigger_instantiations);
+  smtStatisticsRegistry()->registerStat(&d_red_alpha_equiv);
+  smtStatisticsRegistry()->registerStat(&d_instantiations_user_patterns);
+  smtStatisticsRegistry()->registerStat(&d_instantiations_auto_gen);
+  smtStatisticsRegistry()->registerStat(&d_instantiations_guess);
+  smtStatisticsRegistry()->registerStat(&d_instantiations_qcf);
+  smtStatisticsRegistry()->registerStat(&d_instantiations_qcf_prop);
+  smtStatisticsRegistry()->registerStat(&d_instantiations_fmf_exh);
+  smtStatisticsRegistry()->registerStat(&d_instantiations_fmf_mbqi);
+  smtStatisticsRegistry()->registerStat(&d_instantiations_cbqi);
+  smtStatisticsRegistry()->registerStat(&d_instantiations_rr);
+}
+
+QuantifiersEngine::Statistics::~Statistics(){
+  smtStatisticsRegistry()->unregisterStat(&d_time);
+  smtStatisticsRegistry()->unregisterStat(&d_qcf_time);
+  smtStatisticsRegistry()->unregisterStat(&d_ematching_time);
+  smtStatisticsRegistry()->unregisterStat(&d_num_quant);
+  smtStatisticsRegistry()->unregisterStat(&d_instantiation_rounds);
+  smtStatisticsRegistry()->unregisterStat(&d_instantiation_rounds_lc);
+  smtStatisticsRegistry()->unregisterStat(&d_instantiations);
+  smtStatisticsRegistry()->unregisterStat(&d_inst_duplicate);
+  smtStatisticsRegistry()->unregisterStat(&d_inst_duplicate_eq);
+  smtStatisticsRegistry()->unregisterStat(&d_inst_duplicate_ent);
+  smtStatisticsRegistry()->unregisterStat(&d_triggers);
+  smtStatisticsRegistry()->unregisterStat(&d_simple_triggers);
+  smtStatisticsRegistry()->unregisterStat(&d_multi_triggers);
+  smtStatisticsRegistry()->unregisterStat(&d_multi_trigger_instantiations);
+  smtStatisticsRegistry()->unregisterStat(&d_red_alpha_equiv);
+  smtStatisticsRegistry()->unregisterStat(&d_instantiations_user_patterns);
+  smtStatisticsRegistry()->unregisterStat(&d_instantiations_auto_gen);
+  smtStatisticsRegistry()->unregisterStat(&d_instantiations_guess);
+  smtStatisticsRegistry()->unregisterStat(&d_instantiations_qcf);
+  smtStatisticsRegistry()->unregisterStat(&d_instantiations_qcf_prop);
+  smtStatisticsRegistry()->unregisterStat(&d_instantiations_fmf_exh);
+  smtStatisticsRegistry()->unregisterStat(&d_instantiations_fmf_mbqi);
+  smtStatisticsRegistry()->unregisterStat(&d_instantiations_cbqi);
+  smtStatisticsRegistry()->unregisterStat(&d_instantiations_rr);
+}
+
+eq::EqualityEngine* QuantifiersEngine::getMasterEqualityEngine(){
+  return getTheoryEngine()->getMasterEqualityEngine();
+}
+
+void QuantifiersEngine::debugPrintEqualityEngine( const char * c ) {
+  eq::EqualityEngine* ee = getMasterEqualityEngine();
+  eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( ee );
+  std::map< TypeNode, int > typ_num;
+  while( !eqcs_i.isFinished() ){
+    TNode r = (*eqcs_i);
+    TypeNode tr = r.getType();
+    if( typ_num.find( tr )==typ_num.end() ){
+      typ_num[tr] = 0;
+    }
+    typ_num[tr]++;
+    bool firstTime = true;
+    Trace(c) << "  " << r;
+    Trace(c) << " : { ";
+    eq::EqClassIterator eqc_i = eq::EqClassIterator( r, ee );
+    while( !eqc_i.isFinished() ){
+      TNode n = (*eqc_i);
+      if( r!=n ){
+        if( firstTime ){
+          Trace(c) << std::endl;
+          firstTime = false;
+        }
+        Trace(c) << "    " << n << std::endl;
+      }
+      ++eqc_i;
+    }
+    if( !firstTime ){ Trace(c) << "  "; }
+    Trace(c) << "}" << std::endl;
+    ++eqcs_i;
+  }
+  Trace(c) << std::endl;
+  for( std::map< TypeNode, int >::iterator it = typ_num.begin(); it != typ_num.end(); ++it ){
+    Trace(c) << "# eqc for " << it->first << " : " << it->second << std::endl;
+  }
+}
+
+
+EqualityQueryQuantifiersEngine::EqualityQueryQuantifiersEngine( context::Context* c, QuantifiersEngine* qe ) : d_qe( qe ), d_eqi_counter( c ), d_reset_count( 0 ){
+  if( options::inferArithTriggerEq() ){
+    d_eq_inference = new quantifiers::EqualityInference( c, options::inferArithTriggerEqExp() );
+  }else{
+    d_eq_inference = NULL;
+  }
+}
+
+EqualityQueryQuantifiersEngine::~EqualityQueryQuantifiersEngine(){
+  delete d_eq_inference;
+}
+
+bool EqualityQueryQuantifiersEngine::reset( Theory::Effort e ){
+  d_int_rep.clear();
+  d_reset_count++;
+  return processInferences( e );
+}
+
+bool EqualityQueryQuantifiersEngine::processInferences( Theory::Effort e ) {
+  if( options::inferArithTriggerEq() ){
+    eq::EqualityEngine* ee = getEngine();
+    //updated implementation
+    while( d_eqi_counter.get()<d_eq_inference->getNumPendingMerges() ){
+      Node eq = d_eq_inference->getPendingMerge( d_eqi_counter.get() );
+      Node eq_exp = d_eq_inference->getPendingMergeExplanation( d_eqi_counter.get() );
+      Trace("quant-engine-ee-proc") << "processInferences : Infer : " << eq << std::endl;
+      Trace("quant-engine-ee-proc") << "      explanation : " << eq_exp << std::endl;
+      Assert( ee->hasTerm( eq[0] ) );
+      Assert( ee->hasTerm( eq[1] ) );
+      if( areDisequal( eq[0], eq[1] ) ){
+        Trace("quant-engine-ee-proc") << "processInferences : Conflict : " << eq << std::endl;
+        if( Trace.isOn("term-db-lemma") ){
+          Trace("term-db-lemma") << "Disequal terms, equal by normalization : " << eq[0] << " " << eq[1] << "!!!!" << std::endl;
+          if( !d_qe->getTheoryEngine()->needCheck() ){
+            Trace("term-db-lemma") << "  all theories passed with no lemmas." << std::endl;
+            //this should really never happen (implies arithmetic is incomplete when sharing is enabled)
+            Assert( false );
+          }
+          Trace("term-db-lemma") << "  add split on : " << eq << std::endl;
+        }
+        d_qe->addSplit( eq );
+        return false;
+      }else{
+        ee->assertEquality( eq, true, eq_exp );
+        d_eqi_counter = d_eqi_counter.get() + 1;
+      }
+    }
+    Assert( ee->consistent() );
+  }
+  return true;
+}
+
+bool EqualityQueryQuantifiersEngine::hasTerm( Node a ){
+  return getEngine()->hasTerm( a );
+}
+
+Node EqualityQueryQuantifiersEngine::getRepresentative( Node a ){
+  eq::EqualityEngine* ee = getEngine();
+  if( ee->hasTerm( a ) ){
+    return ee->getRepresentative( a );
+  }else{
+    return a;
+  }
+}
+
+bool EqualityQueryQuantifiersEngine::areEqual( Node a, Node b ){
+  if( a==b ){
+    return true;
+  }else{
+    eq::EqualityEngine* ee = getEngine();
+    if( ee->hasTerm( a ) && ee->hasTerm( b ) ){
+      return ee->areEqual( a, b );
+    }else{
+      return false;
+    }
+  }
+}
+
+bool EqualityQueryQuantifiersEngine::areDisequal( Node a, Node b ){
+  if( a==b ){
+    return false;
+  }else{
+    eq::EqualityEngine* ee = getEngine();
+    if( ee->hasTerm( a ) && ee->hasTerm( b ) ){
+      return ee->areDisequal( a, b, false );
+    }else{
+      return a.isConst() && b.isConst();
+    }
+  }
+}
+
+Node EqualityQueryQuantifiersEngine::getInternalRepresentative( Node a, Node f, int index ){
+  Assert( f.isNull() || f.getKind()==FORALL );
+  Node r = getRepresentative( a );
+  if( options::finiteModelFind() ){
+    if( r.isConst() && quantifiers::TermDb::containsUninterpretedConstant( r ) ){
+      //map back from values assigned by model, if any
+      if( d_qe->getModel() ){
+        std::map< Node, Node >::iterator it = d_qe->getModel()->d_rep_set.d_values_to_terms.find( r );
+        if( it!=d_qe->getModel()->d_rep_set.d_values_to_terms.end() ){
+          r = it->second;
+          r = getRepresentative( r );
+        }else{
+          if( r.getType().isSort() ){
+            Trace("internal-rep-warn") << "No representative for UF constant." << std::endl;
+            //should never happen : UF constants should never escape model
+            Assert( false );
+          }
+        }
+      }
+    }
+  }
+  if( options::quantRepMode()==quantifiers::QUANT_REP_MODE_EE ){
+    return r;
+  }else{
+    TypeNode v_tn = f.isNull() ? a.getType() : f[0][index].getType();
+    std::map< Node, Node >::iterator itir = d_int_rep[v_tn].find( r );
+    if( itir==d_int_rep[v_tn].end() ){
+      //find best selection for representative
+      Node r_best;
+      //if( options::fmfRelevantDomain() && !f.isNull() ){
+      //  Trace("internal-rep-debug") << "Consult relevant domain to mkRep " << r << std::endl;
+      //  r_best = d_qe->getRelevantDomain()->getRelevantTerm( f, index, r );
+      //  Trace("internal-rep-debug") << "Returned " << r_best << " " << r << std::endl;
+      //}
+      std::vector< Node > eqc;
+      getEquivalenceClass( r, eqc );
+      Trace("internal-rep-select") << "Choose representative for equivalence class : { ";
+      for( unsigned i=0; i<eqc.size(); i++ ){
+        if( i>0 ) Trace("internal-rep-select") << ", ";
+        Trace("internal-rep-select") << eqc[i];
+      }
+      Trace("internal-rep-select")  << " }, type = " << v_tn << std::endl;
+      int r_best_score = -1;
+      for( size_t i=0; i<eqc.size(); i++ ){
+        int score = getRepScore( eqc[i], f, index, v_tn );
+        if( score!=-2 ){
+          if( r_best.isNull() || ( score>=0 && ( r_best_score<0 || score<r_best_score ) ) ){
+            r_best = eqc[i];
+            r_best_score = score;
+          }
+        }
+      }
+      if( r_best.isNull() ){
+        Trace("internal-rep-warn") << "No valid choice for representative in eqc class." << std::endl;
+        r_best = r;
+      }
+      //now, make sure that no other member of the class is an instance
+      std::hash_map<TNode, Node, TNodeHashFunction> cache;
+      r_best = getInstance( r_best, eqc, cache );
+      //store that this representative was chosen at this point
+      if( d_rep_score.find( r_best )==d_rep_score.end() ){
+        d_rep_score[ r_best ] = d_reset_count;
+      }
+      Trace("internal-rep-select") << "...Choose " << r_best << " with score " << r_best_score << std::endl;
+      Assert( r_best.getType().isSubtypeOf( v_tn ) );
+      d_int_rep[v_tn][r] = r_best;
+      if( r_best!=a ){
+        Trace("internal-rep-debug") << "rep( " << a << " ) = " << r << ", " << std::endl;
+        Trace("internal-rep-debug") << "int_rep( " << a << " ) = " << r_best << ", " << std::endl;
+      }
+      return r_best;
+    }else{
+      return itir->second;
+    }
+  }
+}
+
+void EqualityQueryQuantifiersEngine::flattenRepresentatives( std::map< TypeNode, std::vector< Node > >& reps ) {
+  //make sure internal representatives currently exist
+  for( std::map< TypeNode, std::vector< Node > >::iterator it = reps.begin(); it != reps.end(); ++it ){
+    if( it->first.isSort() ){
+      for( unsigned i=0; i<it->second.size(); i++ ){
+        Node r = getInternalRepresentative( it->second[i], Node::null(), 0 );
+      }
+    }
+  }
+  Trace("internal-rep-flatten") << "---Flattening representatives : " << std::endl;
+  for( std::map< TypeNode, std::map< Node, Node > >::iterator itt = d_int_rep.begin(); itt != d_int_rep.end(); ++itt ){
+    for( std::map< Node, Node >::iterator it = itt->second.begin(); it != itt->second.end(); ++it ){
+      Trace("internal-rep-flatten") << itt->first << " : irep( " << it->first << " ) = " << it->second << std::endl;
+    }
+  }
+  //store representatives for newly created terms
+  std::map< Node, Node > temp_rep_map;
+
+  bool success;
+  do {
+    success = false;
+    for( std::map< TypeNode, std::map< Node, Node > >::iterator itt = d_int_rep.begin(); itt != d_int_rep.end(); ++itt ){
+      for( std::map< Node, Node >::iterator it = itt->second.begin(); it != itt->second.end(); ++it ){
+        if( it->second.getKind()==APPLY_UF && it->second.getType().isSort() ){
+          Node ni = it->second;
+          std::vector< Node > cc;
+          cc.push_back( it->second.getOperator() );
+          bool changed = false;
+          for( unsigned j=0; j<ni.getNumChildren(); j++ ){
+            if( ni[j].getType().isSort() ){
+              Node r = getRepresentative( ni[j] );
+              if( itt->second.find( r )==itt->second.end() ){
+                Assert( temp_rep_map.find( r )!=temp_rep_map.end() );
+                r = temp_rep_map[r];
+              }
+              if( r==ni ){
+                //found sub-term as instance
+                Trace("internal-rep-flatten-debug") << "...Changed " << it->second << " to subterm " << ni[j] << std::endl;
+                itt->second[it->first] = ni[j];
+                changed = false;
+                success = true;
+                break;
+              }else{
+                Node ir = itt->second[r];
+                cc.push_back( ir );
+                if( ni[j]!=ir ){
+                  changed = true;
+                }
+              }
+            }else{
+              changed = false;
+              break;
+            }
+          }
+          if( changed ){
+            Node n = NodeManager::currentNM()->mkNode( APPLY_UF, cc );
+            Trace("internal-rep-flatten-debug") << "...Changed " << it->second << " to " << n << std::endl;
+            success = true;
+            itt->second[it->first] = n;
+            temp_rep_map[n] = it->first;
+          }
+        }
+      }
+    }
+  }while( success );
+  Trace("internal-rep-flatten") << "---After flattening : " << std::endl;
+  for( std::map< TypeNode, std::map< Node, Node > >::iterator itt = d_int_rep.begin(); itt != d_int_rep.end(); ++itt ){
+    for( std::map< Node, Node >::iterator it = itt->second.begin(); it != itt->second.end(); ++it ){
+      Trace("internal-rep-flatten") << itt->first << " : irep( " << it->first << " ) = " << it->second << std::endl;
+    }
+  }
+}
+
+eq::EqualityEngine* EqualityQueryQuantifiersEngine::getEngine(){
+  return d_qe->getMasterEqualityEngine();
+}
+
+void EqualityQueryQuantifiersEngine::getEquivalenceClass( Node a, std::vector< Node >& eqc ){
+  eq::EqualityEngine* ee = getEngine();
+  if( ee->hasTerm( a ) ){
+    Node rep = ee->getRepresentative( a );
+    eq::EqClassIterator eqc_iter( rep, ee );
+    while( !eqc_iter.isFinished() ){
+      eqc.push_back( *eqc_iter );
+      eqc_iter++;
+    }
+  }else{
+    eqc.push_back( a );
+  }
+  //a should be in its equivalence class
+  Assert( std::find( eqc.begin(), eqc.end(), a )!=eqc.end() );
+}
+
+TNode EqualityQueryQuantifiersEngine::getCongruentTerm( Node f, std::vector< TNode >& args ) {
+  return d_qe->getTermDatabase()->getCongruentTerm( f, args );
+}
+
+//helper functions
+
+Node EqualityQueryQuantifiersEngine::getInstance( Node n, const std::vector< Node >& eqc, std::hash_map<TNode, Node, TNodeHashFunction>& cache ){
+  if(cache.find(n) != cache.end()) {
+    return cache[n];
+  }
+  for( size_t i=0; i<n.getNumChildren(); i++ ){
+    Node nn = getInstance( n[i], eqc, cache );
+    if( !nn.isNull() ){
+      return cache[n] = nn;
+    }
+  }
+  if( std::find( eqc.begin(), eqc.end(), n )!=eqc.end() ){
+    return cache[n] = n;
+  }else{
+    return cache[n] = Node::null();
+  }
+}
+
+//-2 : invalid, -1 : undesired, otherwise : smaller the score, the better
+int EqualityQueryQuantifiersEngine::getRepScore( Node n, Node f, int index, TypeNode v_tn ){
+  if( options::cbqi() && quantifiers::TermDb::hasInstConstAttr(n) ){  //reject
+    return -2;
+  }else if( !n.getType().isSubtypeOf( v_tn ) ){  //reject if incorrect type
+    return -2;
+  }else if( options::lteRestrictInstClosure() && ( !d_qe->getTermDatabase()->isInstClosure( n ) || !d_qe->getTermDatabase()->hasTermCurrent( n, false ) ) ){
+    return -1;
+  }else if( options::instMaxLevel()!=-1 ){
+    //score prefer lowest instantiation level
+    if( n.hasAttribute(InstLevelAttribute()) ){
+      return n.getAttribute(InstLevelAttribute());
+    }else{
+      return options::instLevelInputOnly() ? -1 : 0;
+    }
+  }else{
+    if( options::quantRepMode()==quantifiers::QUANT_REP_MODE_FIRST ){
+      //score prefers earliest use of this term as a representative
+      return d_rep_score.find( n )==d_rep_score.end() ? -1 : d_rep_score[n];
+    }else{
+      Assert( options::quantRepMode()==quantifiers::QUANT_REP_MODE_DEPTH );
+      return quantifiers::TermDb::getTermDepth( n );
+    }
+  }
+}
diff --git a/src/theory/quantifiers_engine.h b/src/theory/quantifiers_engine.h
new file mode 100644
index 0000000..150b394
--- /dev/null
+++ b/src/theory/quantifiers_engine.h
@@ -0,0 +1,478 @@
+/*********************                                                        */
+/*! \file quantifiers_engine.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Theory instantiator, Instantiation Engine classes
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__QUANTIFIERS_ENGINE_H
+#define __CVC4__THEORY__QUANTIFIERS_ENGINE_H
+
+#include <ext/hash_set>
+#include <iostream>
+#include <map>
+
+#include "context/cdchunk_list.h"
+#include "context/cdhashset.h"
+#include "expr/attribute.h"
+#include "options/quantifiers_modes.h"
+#include "theory/quantifiers/inst_match.h"
+#include "theory/quantifiers/quant_util.h"
+#include "theory/theory.h"
+#include "util/hash.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+
+class TheoryEngine;
+
+namespace theory {
+
+class QuantifiersEngine;
+
+namespace quantifiers {
+  class TermDb;
+  class TermDbSygus;
+}
+
+class InstantiationNotify {
+public:
+  InstantiationNotify(){}
+  virtual ~InstantiationNotify() {}
+  virtual bool notifyInstantiation( unsigned quant_e, Node q, Node lem, std::vector< Node >& terms, Node body ) = 0;
+  virtual void filterInstantiations() = 0;
+};
+
+namespace quantifiers {
+  class FirstOrderModel;
+  //modules
+  class InstantiationEngine;
+  class ModelEngine;
+  class BoundedIntegers;
+  class QuantConflictFind;
+  class RewriteEngine;
+  class RelevantDomain;
+  class QModelBuilder;
+  class ConjectureGenerator;
+  class CegInstantiation;
+  class LtePartialInst;
+  class AlphaEquivalence;
+  class FunDefEngine;
+  class QuantEqualityEngine;
+  class FullSaturation;
+  class InstStrategyCbqi;
+  class InstStrategyCegqi;
+  class QuantDSplit;
+  class QuantAntiSkolem;
+  class EqualityInference;
+  class InstPropagator;
+}/* CVC4::theory::quantifiers */
+
+namespace inst {
+  class TriggerTrie;
+}/* CVC4::theory::inst */
+
+//class EfficientEMatcher;
+class EqualityQueryQuantifiersEngine;
+
+class QuantifiersEngine {
+  friend class quantifiers::InstantiationEngine;
+  friend class quantifiers::InstStrategyCbqi;
+  friend class quantifiers::InstStrategyCegqi;
+  friend class quantifiers::ModelEngine;
+  friend class quantifiers::RewriteEngine;
+  friend class quantifiers::QuantConflictFind;
+  friend class inst::InstMatch;
+  typedef context::CDHashMap< Node, bool, NodeHashFunction > BoolMap;
+  typedef context::CDChunkList<Node> NodeList;
+  typedef context::CDChunkList<bool> BoolList;
+  typedef context::CDHashSet<Node, NodeHashFunction> NodeSet;
+private:
+  /** reference to theory engine object */
+  TheoryEngine* d_te;
+  /** vector of utilities for quantifiers */
+  std::vector< QuantifiersUtil* > d_util;
+  /** vector of modules for quantifiers */
+  std::vector< QuantifiersModule* > d_modules;
+  /** instantiation notify */
+  std::vector< InstantiationNotify* > d_inst_notify;
+  /** equality query class */
+  EqualityQueryQuantifiersEngine* d_eq_query;
+  /** for computing relevance of quantifiers */
+  QuantRelevance * d_quant_rel;
+  /** relevant domain */
+  quantifiers::RelevantDomain* d_rel_dom;
+  /** alpha equivalence */
+  quantifiers::AlphaEquivalence * d_alpha_equiv;
+  /** model builder */
+  quantifiers::QModelBuilder* d_builder;
+  /** utility for effectively propositional logic */
+  QuantEPR * d_qepr;
+private:
+  /** instantiation engine */
+  quantifiers::InstantiationEngine* d_inst_engine;
+  /** model engine */
+  quantifiers::ModelEngine* d_model_engine;
+  /** bounded integers utility */
+  quantifiers::BoundedIntegers * d_bint;
+  /** Conflict find mechanism for quantifiers */
+  quantifiers::QuantConflictFind* d_qcf;
+  /** rewrite rules utility */
+  quantifiers::RewriteEngine * d_rr_engine;
+  /** subgoal generator */
+  quantifiers::ConjectureGenerator * d_sg_gen;
+  /** ceg instantiation */
+  quantifiers::CegInstantiation * d_ceg_inst;
+  /** lte partial instantiation */
+  quantifiers::LtePartialInst * d_lte_part_inst;
+  /** function definitions engine */
+  quantifiers::FunDefEngine * d_fun_def_engine;
+  /** quantifiers equality engine */
+  quantifiers::QuantEqualityEngine * d_uee;
+  /** full saturation */
+  quantifiers::FullSaturation * d_fs;
+  /** counterexample-based quantifier instantiation */
+  quantifiers::InstStrategyCbqi * d_i_cbqi;
+  /** quantifiers splitting */
+  quantifiers::QuantDSplit * d_qsplit;
+  /** quantifiers anti-skolemization */
+  quantifiers::QuantAntiSkolem * d_anti_skolem;
+  /** quantifiers instantiation propagtor */
+  quantifiers::InstPropagator * d_inst_prop;
+public: //effort levels
+  enum {
+    QEFFORT_CONFLICT,
+    QEFFORT_STANDARD,
+    QEFFORT_MODEL,
+    QEFFORT_LAST_CALL,
+    //none
+    QEFFORT_NONE,
+  };
+private:  //this information is reset during check
+  /** current effort level */
+  unsigned d_curr_effort_level;
+  /** are we in conflict */
+  bool d_conflict;
+  context::CDO< bool > d_conflict_c;
+  /** has added lemma this round */
+  bool d_hasAddedLemma;
+private:
+  /** list of all quantifiers seen */
+  std::map< Node, bool > d_quants;
+  /** quantifiers reduced */
+  BoolMap d_quants_red;
+  std::map< Node, Node > d_quants_red_lem;
+  /** list of all lemmas produced */
+  //std::map< Node, bool > d_lemmas_produced;
+  BoolMap d_lemmas_produced_c;
+  /** lemmas waiting */
+  std::vector< Node > d_lemmas_waiting;
+  /** phase requirements waiting */
+  std::map< Node, bool > d_phase_req_waiting;
+  /** list of all instantiations produced for each quantifier */
+  std::map< Node, inst::InstMatchTrie > d_inst_match_trie;
+  std::map< Node, inst::CDInstMatchTrie* > d_c_inst_match_trie;
+  /** recorded instantiations */
+  std::vector< std::pair< Node, std::vector< Node > > > d_recorded_inst;
+  /** quantifiers that have been skolemized */
+  BoolMap d_skolemized;
+  /** term database */
+  quantifiers::TermDb* d_term_db;
+  /** all triggers will be stored in this trie */
+  inst::TriggerTrie* d_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;
+  /** inst round counters TODO: make context-dependent? */
+  context::CDO< int > d_ierCounter_c;
+  int d_ierCounter;
+  int d_ierCounter_lc;
+  int d_ierCounterLastLc;
+  int d_inst_when_phase;
+  /** has presolve been called */
+  context::CDO< bool > d_presolve;
+  /** presolve cache */
+  NodeSet d_presolve_in;
+  NodeList d_presolve_cache;
+  BoolList d_presolve_cache_wq;
+  BoolList d_presolve_cache_wic;
+
+public:
+  QuantifiersEngine(context::Context* c, context::UserContext* u, TheoryEngine* te);
+  ~QuantifiersEngine();
+  /** get theory engine */
+  TheoryEngine* getTheoryEngine() { return d_te; }
+  /** get equality query */
+  EqualityQueryQuantifiersEngine* getEqualityQuery();
+  /** get default sat context for quantifiers engine */
+  context::Context* getSatContext();
+  /** get default sat context for quantifiers engine */
+  context::UserContext* getUserContext();
+  /** get default output channel for the quantifiers engine */
+  OutputChannel& getOutputChannel();
+  /** get default valuation for the quantifiers engine */
+  Valuation& getValuation();
+  /** get relevant domain */
+  quantifiers::RelevantDomain* getRelevantDomain() { return d_rel_dom; }
+  /** get quantifier relevance */
+  QuantRelevance* getQuantifierRelevance() { return d_quant_rel; }
+  /** get the model builder */
+  quantifiers::QModelBuilder* getModelBuilder() { return d_builder; }
+  /** get utility for EPR */
+  QuantEPR* getQuantEPR() { return d_qepr; }
+public:  //modules
+  /** get instantiation engine */
+  quantifiers::InstantiationEngine* getInstantiationEngine() { return d_inst_engine; }
+  /** get model engine */
+  quantifiers::ModelEngine* getModelEngine() { return d_model_engine; }
+  /** get bounded integers utility */
+  quantifiers::BoundedIntegers * getBoundedIntegers() { return d_bint; }
+  /** Conflict find mechanism for quantifiers */
+  quantifiers::QuantConflictFind* getConflictFind() { return d_qcf; }
+  /** rewrite rules utility */
+  quantifiers::RewriteEngine * getRewriteEngine() { return d_rr_engine; }
+  /** subgoal generator */
+  quantifiers::ConjectureGenerator * getConjectureGenerator() { return d_sg_gen; }
+  /** ceg instantiation */
+  quantifiers::CegInstantiation * getCegInstantiation() { return d_ceg_inst; }
+  /** local theory ext partial inst */
+  quantifiers::LtePartialInst * getLtePartialInst() { return d_lte_part_inst; }
+  /** function definition engine */
+  quantifiers::FunDefEngine * getFunDefEngine() { return d_fun_def_engine; }
+  /** quantifiers equality engine */
+  quantifiers::QuantEqualityEngine * getQuantEqualityEngine() { return d_uee; }
+  /** get full saturation */
+  quantifiers::FullSaturation * getFullSaturation() { return d_fs; }
+  /** get inst strategy cbqi */
+  quantifiers::InstStrategyCbqi * getInstStrategyCbqi() { return d_i_cbqi; }
+  /** get quantifiers splitting */
+  quantifiers::QuantDSplit * getQuantDSplit() { return d_qsplit; }
+  /** get quantifiers anti-skolemization */
+  quantifiers::QuantAntiSkolem * getQuantAntiSkolem() { return d_anti_skolem; }
+private:
+  /** owner of quantified formulas */
+  std::map< Node, QuantifiersModule * > d_owner;
+  std::map< Node, int > d_owner_priority;
+public:
+  /** get owner */
+  QuantifiersModule * getOwner( Node q );
+  /** set owner */
+  void setOwner( Node q, QuantifiersModule * m, int priority = 0 );
+  /** considers */
+  bool hasOwnership( Node q, QuantifiersModule * m = NULL );
+  /** is finite bound */
+  bool isFiniteBound( Node q, Node v );
+public:
+  /** initialize */
+  void finishInit();
+  /** presolve */
+  void presolve();
+  /** notify preprocessed assertion */
+  void ppNotifyAssertions( std::vector< Node >& assertions );
+  /** check at level */
+  void check( Theory::Effort e );
+  /** notify that theories were combined */
+  void notifyCombineTheories();
+  /** register quantifier */
+  bool registerQuantifier( Node f );
+  /** register quantifier */
+  void registerPattern( std::vector<Node> & pattern);
+  /** assert universal quantifier */
+  void assertQuantifier( Node q, bool pol );
+  /** propagate */
+  void propagate( Theory::Effort level );
+  /** get next decision request */
+  Node getNextDecisionRequest( unsigned& priority );
+private:
+  /** reduceQuantifier, return true if reduced */
+  bool reduceQuantifier( Node q );
+  /** compute term vector */
+  void computeTermVector( Node f, InstMatch& m, std::vector< Node >& vars, std::vector< Node >& terms );
+  /** record instantiation, return true if it was non-duplicate */
+  bool recordInstantiationInternal( Node q, std::vector< Node >& terms, bool modEq = false, bool addedLem = true );
+  /** remove instantiation */
+  bool removeInstantiationInternal( Node q, std::vector< Node >& terms );
+  /** set instantiation level attr */
+  static void setInstantiationLevelAttr( Node n, Node qn, uint64_t level );
+public:
+  /** flush lemmas */
+  void flushLemmas();
+  /** get instantiation */
+  Node getInstantiation( Node q, std::vector< Node >& vars, std::vector< Node >& terms, bool doVts = false );
+  /** get instantiation */
+  Node getInstantiation( Node q, InstMatch& m, bool doVts = false );
+  /** get instantiation */
+  Node getInstantiation( Node q, std::vector< Node >& terms, bool doVts = false );
+  /** do substitution */
+  Node getSubstitute( Node n, std::vector< Node >& terms );
+  /** add lemma lem */
+  bool addLemma( Node lem, bool doCache = true, bool doRewrite = true );
+  /** remove pending lemma */
+  bool removeLemma( Node lem );
+  /** add require phase */
+  void addRequirePhase( Node lit, bool req );
+  /** do instantiation specified by m */
+  bool addInstantiation( Node q, InstMatch& m, bool mkRep = false, bool modEq = false, bool doVts = false );
+  /** add instantiation */
+  bool addInstantiation( Node q, std::vector< Node >& terms, bool mkRep = false, bool modEq = false, bool doVts = false );
+  /** remove pending instantiation */
+  bool removeInstantiation( Node q, Node lem, std::vector< Node >& terms );
+  /** split on node n */
+  bool addSplit( Node n, bool reqPhase = false, bool reqPhasePol = true );
+  /** add split equality */
+  bool addSplitEquality( Node n1, Node n2, bool reqPhase = false, bool reqPhasePol = true );
+  /** add EPR axiom */
+  bool addEPRAxiom( TypeNode tn );
+  /** mark relevant quantified formula, this will indicate it should be checked before the others */
+  void markRelevant( Node q );
+  /** has added lemma */
+  bool hasAddedLemma() { return !d_lemmas_waiting.empty() || d_hasAddedLemma; }
+  /** is in conflict */
+  bool inConflict() { return d_conflict; }
+  /** get number of waiting lemmas */
+  unsigned getNumLemmasWaiting() { return d_lemmas_waiting.size(); }
+  /** get needs check */
+  bool getInstWhenNeedsCheck( Theory::Effort e );
+  /** get user pat mode */
+  quantifiers::UserPatMode getInstUserPatMode();
+  /** set instantiation level attr */
+  static void setInstantiationLevelAttr( Node n, uint64_t level );
+public:
+  /** get model */
+  quantifiers::FirstOrderModel* getModel() { return d_model; }
+  /** get term database */
+  quantifiers::TermDb* getTermDatabase() { return d_term_db; }
+  /** get term database sygus */
+  quantifiers::TermDbSygus* getTermDatabaseSygus();
+  /** get trigger database */
+  inst::TriggerTrie* getTriggerDatabase() { return d_tr_trie; }
+  /** add term to database */
+  void addTermToDatabase( Node n, bool withinQuant = false, bool withinInstClosure = false );
+  /** notification when master equality engine is updated */
+  void eqNotifyNewClass(TNode t);
+  void eqNotifyPreMerge(TNode t1, TNode t2);
+  void eqNotifyPostMerge(TNode t1, TNode t2);
+  void eqNotifyDisequal(TNode t1, TNode t2, TNode reason);
+  /** get the master equality engine */
+  eq::EqualityEngine* getMasterEqualityEngine() ;
+  /** debug print equality engine */
+  void debugPrintEqualityEngine( const char * c );
+public:
+  /** print instantiations */
+  void printInstantiations( std::ostream& out );
+  /** print solution for synthesis conjectures */
+  void printSynthSolution( std::ostream& out );
+  /** get list of quantified formulas that were instantiated */
+  void getInstantiatedQuantifiedFormulas( std::vector< Node >& qs );
+  /** get instantiations */
+  void getInstantiations( Node q, std::vector< Node >& insts );
+  void getInstantiations( std::map< Node, std::vector< Node > >& insts );
+  /** get instantiation term vectors */
+  void getInstantiationTermVectors( Node q, std::vector< std::vector< Node > >& tvecs );
+  void getInstantiationTermVectors( std::map< Node, std::vector< std::vector< Node > > >& insts );
+  /** get instantiated conjunction */
+  Node getInstantiatedConjunction( Node q );
+  /** get unsat core lemmas */
+  bool getUnsatCoreLemmas( std::vector< Node >& active_lemmas );
+  bool getUnsatCoreLemmas( std::vector< Node >& active_lemmas, std::map< Node, Node >& weak_imp );
+  /** get inst for lemmas */
+  void getExplanationForInstLemmas( std::vector< Node >& lems, std::map< Node, Node >& quant, std::map< Node, std::vector< Node > >& tvec ); 
+  /** statistics class */
+  class Statistics {
+  public:
+    TimerStat d_time;
+    TimerStat d_qcf_time;
+    TimerStat d_ematching_time;
+    IntStat d_num_quant;
+    IntStat d_instantiation_rounds;
+    IntStat d_instantiation_rounds_lc;
+    IntStat d_instantiations;
+    IntStat d_inst_duplicate;
+    IntStat d_inst_duplicate_eq;
+    IntStat d_inst_duplicate_ent;
+    IntStat d_triggers;
+    IntStat d_simple_triggers;
+    IntStat d_multi_triggers;
+    IntStat d_multi_trigger_instantiations;
+    IntStat d_red_alpha_equiv;
+    IntStat d_instantiations_user_patterns;
+    IntStat d_instantiations_auto_gen;
+    IntStat d_instantiations_guess;
+    IntStat d_instantiations_qcf;
+    IntStat d_instantiations_qcf_prop;
+    IntStat d_instantiations_fmf_exh;
+    IntStat d_instantiations_fmf_mbqi;
+    IntStat d_instantiations_cbqi;
+    IntStat d_instantiations_rr;
+    Statistics();
+    ~Statistics();
+  };/* class QuantifiersEngine::Statistics */
+  Statistics d_statistics;
+};/* class QuantifiersEngine */
+
+
+
+/** equality query object using theory engine */
+class EqualityQueryQuantifiersEngine : public EqualityQuery
+{
+private:
+  /** pointer to theory engine */
+  QuantifiersEngine* d_qe;
+  /** quantifiers equality inference */
+  quantifiers::EqualityInference * d_eq_inference;
+  context::CDO< unsigned > d_eqi_counter;
+  /** internal representatives */
+  std::map< TypeNode, std::map< Node, Node > > d_int_rep;
+  /** rep score */
+  std::map< Node, int > d_rep_score;
+  /** reset count */
+  int d_reset_count;
+
+  /** processInferences : will merge equivalence classes in master equality engine, if possible */
+  bool processInferences( Theory::Effort e );
+  /** node contains */
+  Node getInstance( Node n, const std::vector< Node >& eqc, std::hash_map<TNode, Node, TNodeHashFunction>& cache );
+  /** get score */
+  int getRepScore( Node n, Node f, int index, TypeNode v_tn );
+  /** flatten representatives */
+  void flattenRepresentatives( std::map< TypeNode, std::vector< Node > >& reps );
+public:
+  EqualityQueryQuantifiersEngine( context::Context* c, QuantifiersEngine* qe );
+  virtual ~EqualityQueryQuantifiersEngine();
+  /** reset */
+  bool reset( Theory::Effort e );
+  /** identify */
+  std::string identify() const { return "EqualityQueryQE"; }
+  /** general queries about equality */
+  bool hasTerm( Node a );
+  Node getRepresentative( Node a );
+  bool areEqual( Node a, Node b );
+  bool areDisequal( Node a, Node b );
+  eq::EqualityEngine* getEngine();
+  void getEquivalenceClass( Node a, std::vector< Node >& eqc );
+  TNode getCongruentTerm( Node f, std::vector< TNode >& args );
+  /** getInternalRepresentative gets the current best representative in the equivalence class of a, based on some criteria.
+      If cbqi is active, this will return a term in the equivalence class of "a" that does
+      not contain instantiation constants, if such a term exists.
+   */
+  Node getInternalRepresentative( Node a, Node f, int index );
+  /** get quantifiers equality inference */
+  quantifiers::EqualityInference * getEqualityInference() { return d_eq_inference; }
+}; /* EqualityQueryQuantifiersEngine */
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__QUANTIFIERS_ENGINE_H */
diff --git a/src/theory/rep_set.cpp b/src/theory/rep_set.cpp
new file mode 100644
index 0000000..c308b9c
--- /dev/null
+++ b/src/theory/rep_set.cpp
@@ -0,0 +1,380 @@
+/*********************                                                        */
+/*! \file rep_set.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of representative set
+ **/
+
+#include "theory/rep_set.h"
+#include "theory/type_enumerator.h"
+#include "theory/quantifiers/bounded_integers.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/first_order_model.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+
+void RepSet::clear(){
+  d_type_reps.clear();
+  d_type_complete.clear();
+  d_tmap.clear();
+  d_values_to_terms.clear();
+}
+
+bool RepSet::hasRep( TypeNode tn, Node n ) {
+  std::map< TypeNode, std::vector< Node > >::iterator it = d_type_reps.find( tn );
+  if( it==d_type_reps.end() ){
+    return false;
+  }else{
+    return std::find( it->second.begin(), it->second.end(), n )!=it->second.end();
+  }
+}
+
+int RepSet::getNumRepresentatives( TypeNode tn ) const{
+  std::map< TypeNode, std::vector< Node > >::const_iterator it = d_type_reps.find( tn );
+  if( it!=d_type_reps.end() ){
+    return (int)it->second.size();
+  }else{
+    return 0;
+  }
+}
+
+bool containsStoreAll( Node n, std::vector< Node >& cache ){
+  if( std::find( cache.begin(), cache.end(), n )==cache.end() ){
+    cache.push_back( n );
+    if( n.getKind()==STORE_ALL ){
+      return true;
+    }else{
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        if( containsStoreAll( n[i], cache ) ){
+          return true;
+        }
+      }
+    }
+  }
+  return false;
+}
+
+void RepSet::add( TypeNode tn, Node n ){
+  //for now, do not add array constants FIXME
+  if( tn.isArray() ){
+    std::vector< Node > cache;
+    if( containsStoreAll( n, cache ) ){
+      return;
+    }
+  }
+  Trace("rsi-debug") << "Add rep #" << d_type_reps[tn].size() << " for " << tn << " : " << n << std::endl;
+  Assert( n.getType().isSubtypeOf( tn ) );
+  d_tmap[ n ] = (int)d_type_reps[tn].size();
+  d_type_reps[tn].push_back( n );
+}
+
+int RepSet::getIndexFor( Node n ) const {
+  std::map< Node, int >::const_iterator it = d_tmap.find( n );
+  if( it!=d_tmap.end() ){
+    return it->second;
+  }else{
+    return -1;
+  }
+}
+
+bool RepSet::complete( TypeNode t ){
+  std::map< TypeNode, bool >::iterator it = d_type_complete.find( t );
+  if( it==d_type_complete.end() ){
+    //remove all previous
+    for( unsigned i=0; i<d_type_reps[t].size(); i++ ){
+      d_tmap.erase( d_type_reps[t][i] );
+    }
+    d_type_reps[t].clear();
+    //now complete the type
+    d_type_complete[t] = true;
+    TypeEnumerator te(t);
+    while( !te.isFinished() ){
+      Node n = *te;
+      if( std::find( d_type_reps[t].begin(), d_type_reps[t].end(), n )==d_type_reps[t].end() ){
+        add( t, n );
+      }
+      ++te;
+    }
+    for( size_t i=0; i<d_type_reps[t].size(); i++ ){
+      Trace("reps-complete") << d_type_reps[t][i] << " ";
+    }
+    Trace("reps-complete") << std::endl;
+    return true;
+  }else{
+    return it->second;
+  }
+}
+
+void RepSet::toStream(std::ostream& out){
+  for( std::map< TypeNode, std::vector< Node > >::iterator it = d_type_reps.begin(); it != d_type_reps.end(); ++it ){
+    if( !it->first.isFunction() && !it->first.isPredicate() ){
+      out << "(" << it->first << " " << it->second.size();
+      out << " (";
+      for( unsigned i=0; i<it->second.size(); i++ ){
+        if( i>0 ){ out << " "; }
+        out << it->second[i];
+      }
+      out << ")";
+      out << ")" << std::endl;
+    }
+  }
+}
+
+
+RepSetIterator::RepSetIterator( QuantifiersEngine * qe, RepSet* rs ) : d_qe(qe), d_rep_set( rs ){
+  d_incomplete = false;
+}
+
+int RepSetIterator::domainSize( int i ) {
+  Assert(i>=0);
+  int v = d_var_order[i];
+  return d_domain_elements[v].size();
+}
+
+bool RepSetIterator::setQuantifier( Node f, RepBoundExt* rext ){
+  Trace("rsi") << "Make rsi for " << f << std::endl;
+  Assert( d_types.empty() );
+  //store indicies
+  for( size_t i=0; i<f[0].getNumChildren(); i++ ){
+    d_types.push_back( f[0][i].getType() );
+  }
+  d_owner = f;
+  return initialize( rext );
+}
+
+bool RepSetIterator::setFunctionDomain( Node op, RepBoundExt* rext ){
+  Trace("rsi") << "Make rsi for " << op << std::endl;
+  Assert( d_types.empty() );
+  TypeNode tn = op.getType();
+  for( size_t i=0; i<tn.getNumChildren()-1; i++ ){
+    d_types.push_back( tn[i] );
+  }
+  d_owner = op;
+  return initialize( rext );
+}
+
+bool RepSetIterator::initialize( RepBoundExt* rext ){
+  Trace("rsi") << "Initialize rep set iterator..." << std::endl;
+  for( unsigned v=0; v<d_types.size(); v++ ){
+    d_index.push_back( 0 );
+    //store default index order
+    d_index_order.push_back( v );
+    d_var_order[v] = v;
+    //store default domain
+    //d_domain.push_back( RepDomain() );
+    d_domain_elements.push_back( std::vector< Node >() );
+    TypeNode tn = d_types[v];
+    Trace("rsi") << "Var #" << v << " is type " << tn << "..." << std::endl;
+    if( tn.isSort() ){
+      //must ensure uninterpreted type is non-empty.
+      if( !d_rep_set->hasType( tn ) ){
+        //FIXME:
+        // terms in rep_set are now constants which mapped to terms through TheoryModel
+        // thus, should introduce a constant and a term.  for now, just a term.
+
+        //Node c = d_qe->getTermDatabase()->getEnumerateTerm( tn, 0 );
+        Node var = d_qe->getModel()->getSomeDomainElement( tn );
+        Trace("mkVar") << "RepSetIterator:: Make variable " << var << " : " << tn << std::endl;
+        d_rep_set->add( tn, var );
+      }
+    }
+    bool inc = true;
+    //check if it is externally bound
+    if( rext && rext->setBound( d_owner, v, tn, d_domain_elements[v] ) ){
+      d_enum_type.push_back( ENUM_DEFAULT );
+      inc = false;
+    //builtin: check if it is bound by bounded integer module
+    }else if( d_owner.getKind()==FORALL && d_qe && d_qe->getBoundedIntegers() ){
+      if( d_qe->getBoundedIntegers()->isBoundVar( d_owner, d_owner[0][v] ) ){
+        unsigned bvt = d_qe->getBoundedIntegers()->getBoundVarType( d_owner, d_owner[0][v] );
+        if( bvt!=quantifiers::BoundedIntegers::BOUND_FINITE ){
+          d_enum_type.push_back( ENUM_BOUND_INT );
+          inc = false;
+        }else{
+          //will treat in default way
+        }
+      }
+    }
+    if( !tn.isSort() ){
+      if( inc ){
+        if( d_qe->getTermDatabase()->mayComplete( tn ) ){
+          Trace("rsi") << "  do complete, since cardinality is small (" << tn.getCardinality() << ")..." << std::endl;
+          d_rep_set->complete( tn );
+          //must have succeeded
+          Assert( d_rep_set->hasType( tn ) );
+        }else{
+          Trace("rsi") << "  variable cannot be bounded." << std::endl;
+          Trace("fmf-incomplete") << "Incomplete because of quantification of type " << tn << std::endl;
+          d_incomplete = true;
+        }
+      }
+    }
+
+    //if we have yet to determine the type of enumeration
+    if( d_enum_type.size()<=v ){
+      if( d_rep_set->hasType( tn ) ){
+        d_enum_type.push_back( ENUM_DEFAULT );
+        for( unsigned j=0; j<d_rep_set->d_type_reps[tn].size(); j++ ){
+          //d_domain[v].push_back( j );
+          d_domain_elements[v].push_back( d_rep_set->d_type_reps[tn][j] );
+        }
+      }else{
+        Assert( d_incomplete );
+        return false;
+      }
+    }
+  }
+  //must set a variable index order based on bounded integers
+  if( d_owner.getKind()==FORALL && d_qe && d_qe->getBoundedIntegers() ){
+    Trace("bound-int-rsi") << "Calculating variable order..." << std::endl;
+    std::vector< int > varOrder;
+    for( unsigned i=0; i<d_qe->getBoundedIntegers()->getNumBoundVars( d_owner ); i++ ){
+      Node v = d_qe->getBoundedIntegers()->getBoundVar( d_owner, i );
+      Trace("bound-int-rsi") << "  bound var #" << i << " is " << v << std::endl;
+      varOrder.push_back( d_qe->getTermDatabase()->getVariableNum( d_owner, v ) );
+    }
+    for( unsigned i=0; i<d_owner[0].getNumChildren(); i++) {
+      if( !d_qe->getBoundedIntegers()->isBoundVar(d_owner, d_owner[0][i])) {
+        varOrder.push_back(i);
+      }
+    }
+    Trace("bound-int-rsi") << "Variable order : ";
+    for( unsigned i=0; i<varOrder.size(); i++) {
+      Trace("bound-int-rsi") << varOrder[i] << " ";
+    }
+    Trace("bound-int-rsi") << std::endl;
+    std::vector< int > indexOrder;
+    indexOrder.resize(varOrder.size());
+    for( unsigned i=0; i<varOrder.size(); i++){
+      indexOrder[varOrder[i]] = i;
+    }
+    Trace("bound-int-rsi") << "Will use index order : ";
+    for( unsigned i=0; i<indexOrder.size(); i++) {
+      Trace("bound-int-rsi") << indexOrder[i] << " ";
+    }
+    Trace("bound-int-rsi") << std::endl;
+    setIndexOrder( indexOrder );
+  }
+  //now reset the indices
+  do_reset_increment( -1, true );
+  return true;
+}
+
+void RepSetIterator::setIndexOrder( std::vector< int >& indexOrder ){
+  d_index_order.clear();
+  d_index_order.insert( d_index_order.begin(), indexOrder.begin(), indexOrder.end() );
+  //make the d_var_order mapping
+  for( unsigned i=0; i<d_index_order.size(); i++ ){
+    d_var_order[d_index_order[i]] = i;
+  }
+}
+
+int RepSetIterator::resetIndex( int i, bool initial ) {
+  d_index[i] = 0;
+  int v = d_var_order[i];
+  Trace("bound-int-rsi") << "Reset " << i << ", var order = " << v << ", initial = " << initial << std::endl;
+  if( d_enum_type[v]==ENUM_BOUND_INT ){
+    Assert( d_owner.getKind()==FORALL );
+    if( !d_qe->getBoundedIntegers()->getBoundElements( this, initial, d_owner, d_owner[0][v], d_domain_elements[v] ) ){
+      return -1;
+    }
+  }
+  return d_domain_elements[v].empty() ? 0 : 1;
+}
+
+int RepSetIterator::increment2( int i ){
+  Assert( !isFinished() );
+#ifdef DISABLE_EVAL_SKIP_MULTIPLE
+  i = (int)d_index.size()-1;
+#endif
+  //increment d_index
+  if( i>=0){
+    Trace("rsi-debug") << "domain size of " << i << " is " << domainSize(i) << std::endl;
+  }
+  while( i>=0 && d_index[i]>=(int)(domainSize(i)-1) ){
+    i--;
+    if( i>=0){
+      Trace("rsi-debug") << "domain size of " << i << " is " << domainSize(i) << std::endl;
+    }
+  }
+  if( i==-1 ){
+    d_index.clear();
+    return -1;
+  }else{
+    Trace("rsi-debug") << "increment " << i << std::endl;
+    d_index[i]++;
+    return do_reset_increment( i );
+  }
+}
+
+int RepSetIterator::do_reset_increment( int i, bool initial ) {
+  bool emptyDomain = false;
+  for( unsigned ii=(i+1); ii<d_index.size(); ii++ ){
+    int ri_res = resetIndex( ii, initial );
+    if( ri_res==-1 ){
+      //failed
+      d_index.clear();
+      d_incomplete = true;
+      break;
+    }else if( ri_res==0 ){
+      emptyDomain = true;
+    }
+    //force next iteration if currently an empty domain
+    if( emptyDomain ){
+      d_index[ii] = domainSize(ii)-1;
+    }
+  }
+  if( emptyDomain ){
+    Trace("rsi-debug") << "This is an empty domain, increment." << std::endl;
+    return increment();
+  }else{
+    return i;
+  }
+}
+
+int RepSetIterator::increment(){
+  if( !isFinished() ){
+    return increment2( (int)d_index.size()-1 );
+  }else{
+    return -1;
+  }
+}
+
+bool RepSetIterator::isFinished(){
+  return d_index.empty();
+}
+
+Node RepSetIterator::getCurrentTerm( int v ){
+  int ii = d_index_order[v];
+  int curr = d_index[ii];
+  Trace("rsi-debug") << "rsi : get term " << v << ", index order = " << d_index_order[v] << std::endl;
+  Trace("rsi-debug") << "rsi : curr = " << curr << " / " << d_domain_elements[v].size() << std::endl;
+  Assert( 0<=curr && curr<(int)d_domain_elements[v].size() );
+  return d_domain_elements[v][curr];
+}
+
+void RepSetIterator::debugPrint( const char* c ){
+  for( unsigned v=0; v<d_index.size(); v++ ){
+    Debug( c ) << v << " : " << getCurrentTerm( v ) << std::endl;
+  }
+}
+
+void RepSetIterator::debugPrintSmall( const char* c ){
+  Debug( c ) << "RI: ";
+  for( unsigned v=0; v<d_index.size(); v++ ){
+    Debug( c ) << v << ": " << getCurrentTerm( v ) << " ";
+  }
+  Debug( c ) << std::endl;
+}
+
diff --git a/src/theory/rep_set.h b/src/theory/rep_set.h
new file mode 100644
index 0000000..9368d36
--- /dev/null
+++ b/src/theory/rep_set.h
@@ -0,0 +1,149 @@
+/*********************                                                        */
+/*! \file rep_set.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Representative set class and utilities
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__REP_SET_H
+#define __CVC4__THEORY__REP_SET_H
+
+#include "expr/node.h"
+#include <map>
+
+namespace CVC4 {
+namespace theory {
+
+class QuantifiersEngine;
+
+/** this class stores a representative set */
+class RepSet {
+public:
+  RepSet(){}
+  ~RepSet(){}
+  std::map< TypeNode, std::vector< Node > > d_type_reps;
+  std::map< TypeNode, bool > d_type_complete;
+  std::map< Node, int > d_tmap;
+  // map from values to terms they were assigned for
+  std::map< Node, Node > d_values_to_terms;
+  /** clear the set */
+  void clear();
+  /** has type */
+  bool hasType( TypeNode tn ) const { return d_type_reps.find( tn )!=d_type_reps.end(); }
+  /** has rep */
+  bool hasRep( TypeNode tn, Node n );
+  /** get cardinality for type */
+  int getNumRepresentatives( TypeNode tn ) const;
+  /** add representative for type */
+  void add( TypeNode tn, Node n );
+  /** returns index in d_type_reps for node n */
+  int getIndexFor( Node n ) const;
+  /** complete all values */
+  bool complete( TypeNode t );
+  /** debug print */
+  void toStream(std::ostream& out);
+};/* class RepSet */
+
+//representative domain
+typedef std::vector< int > RepDomain;
+
+
+class RepBoundExt {
+ public:
+  virtual ~RepBoundExt() {}
+  virtual bool setBound( Node owner, int i, TypeNode tn, std::vector< Node >& elements ) = 0;
+};
+
+/** this class iterates over a RepSet */
+class RepSetIterator {
+public:
+  enum {
+    ENUM_DEFAULT,
+    ENUM_BOUND_INT,
+  };
+private:
+  QuantifiersEngine * d_qe;
+  //initialize function
+  bool initialize( RepBoundExt* rext = NULL );
+  //for int ranges
+  std::map< int, Node > d_lower_bounds;
+  //for set ranges
+  std::map< int, std::vector< Node > > d_setm_bounds;
+  //domain size
+  int domainSize( int i );
+  //node this is rep set iterator is for
+  Node d_owner;
+  //reset index, 1:success, 0:empty, -1:fail
+  int resetIndex( int i, bool initial = false );
+  /** set index order */
+  void setIndexOrder( std::vector< int >& indexOrder );
+  /** do reset increment the iterator at index=counter */
+  int do_reset_increment( int counter, bool initial = false );
+  //ordering for variables we are indexing over
+  //  for example, given reps = { a, b } and quantifier forall( x, y, z ) P( x, y, z ) with d_index_order = { 2, 0, 1 },
+  //    then we consider instantiations in this order:
+  //      a/x a/y a/z
+  //      a/x b/y a/z
+  //      b/x a/y a/z
+  //      b/x b/y a/z
+  //      ...
+  std::vector< int > d_index_order;
+  //variables to index they are considered at
+  //  for example, if d_index_order = { 2, 0, 1 }
+  //    then d_var_order = { 0 -> 1, 1 -> 2, 2 -> 0 }
+  std::map< int, int > d_var_order;  
+  //are we only considering a strict subset of the domain of the quantifier?
+  bool d_incomplete;
+public:
+  RepSetIterator( QuantifiersEngine * qe, RepSet* rs );
+  ~RepSetIterator(){}
+  //set that this iterator will be iterating over instantiations for a quantifier
+  bool setQuantifier( Node f, RepBoundExt* rext = NULL );
+  //set that this iterator will be iterating over the domain of a function
+  bool setFunctionDomain( Node op, RepBoundExt* rext = NULL );
+public:
+  //pointer to model
+  RepSet* d_rep_set;
+  //enumeration type?
+  std::vector< int > d_enum_type;
+  //current tuple we are considering
+  std::vector< int > d_index;
+  //types we are considering
+  std::vector< TypeNode > d_types;
+  //domain we are considering
+  std::vector< std::vector< Node > > d_domain_elements;
+public:
+  /** increment the iterator at index=counter */
+  int increment2( int i );
+  /** increment the iterator */
+  int increment();
+  /** is the iterator finished? */
+  bool isFinished();
+  /** get the i_th term we are considering */
+  Node getCurrentTerm( int v );
+  /** get the number of terms we are considering */
+  int getNumTerms() { return (int)d_index_order.size(); }
+  /** debug print */
+  void debugPrint( const char* c );
+  void debugPrintSmall( const char* c );
+  //get index order, returns var #
+  int getIndexOrder( int v ) { return d_index_order[v]; }
+  //get variable order, returns index #
+  int getVariableOrder( int i ) { return d_var_order[i]; }
+  //is incomplete
+  bool isIncomplete() { return d_incomplete; }
+};/* class RepSetIterator */
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__REP_SET_H */
diff --git a/src/theory/rewriter.cpp b/src/theory/rewriter.cpp
new file mode 100644
index 0000000..0df1225
--- /dev/null
+++ b/src/theory/rewriter.cpp
@@ -0,0 +1,268 @@
+/*********************                                                        */
+/*! \file rewriter.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Liana Hadarean
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/rewriter.h"
+
+#include "theory/theory.h"
+#include "smt/smt_engine_scope.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/rewriter_tables.h"
+#include "util/resource_manager.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+
+unsigned long Rewriter::d_iterationCount = 0;
+
+static TheoryId theoryOf(TNode node) {
+  return Theory::theoryOf(THEORY_OF_TYPE_BASED, node);
+}
+
+#ifdef CVC4_ASSERTIONS
+static CVC4_THREADLOCAL(std::hash_set<Node, NodeHashFunction>*) s_rewriteStack = NULL;
+#endif /* CVC4_ASSERTIONS */
+
+class RewriterInitializer {
+  static RewriterInitializer s_rewriterInitializer;
+  RewriterInitializer() {
+    Rewriter::init();
+  }
+  ~RewriterInitializer() { Rewriter::shutdown(); }
+};/* class RewriterInitializer */
+
+/**
+ * This causes initialization of the rewriter before first use,
+ * and tear-down at exit time.
+ */
+RewriterInitializer RewriterInitializer::s_rewriterInitializer;
+
+/**
+ * TheoryEngine::rewrite() keeps a stack of things that are being pre-
+ * and post-rewritten.  Each element of the stack is a
+ * RewriteStackElement.
+ */
+struct RewriteStackElement {
+
+  /** The node we're currently rewriting */
+  Node node;
+  /** Original node */
+  Node original;
+  /** Id of the theory that's currently rewriting this node */
+  unsigned theoryId         : 8;
+  /** Id of the original theory that started the rewrite */
+  unsigned originalTheoryId : 8;
+  /** Index of the child this node is done rewriting */
+  unsigned nextChild        : 32;
+  /** Builder for this node */
+  NodeBuilder<> builder;
+
+  /**
+   * Construct a fresh stack element.
+   */
+  RewriteStackElement(TNode node, TheoryId theoryId) :
+    node(node),
+    original(node),
+    theoryId(theoryId),
+    originalTheoryId(theoryId),
+    nextChild(0) {
+  }
+};
+
+Node Rewriter::rewrite(TNode node) {
+  return rewriteTo(theoryOf(node), node);
+}
+
+Node Rewriter::rewriteTo(theory::TheoryId theoryId, Node node) {
+
+#ifdef CVC4_ASSERTIONS
+  bool isEquality = node.getKind() == kind::EQUAL && (!node[0].getType().isBoolean());
+
+  if(s_rewriteStack == NULL) {
+    s_rewriteStack = new std::hash_set<Node, NodeHashFunction>();
+  }
+#endif
+
+  Trace("rewriter") << "Rewriter::rewriteTo(" << theoryId << "," << node << ")"<< std::endl;
+
+  // Check if it's been cached already
+  Node cached = getPostRewriteCache(theoryId, node);
+  if (!cached.isNull()) {
+    return cached;
+  }
+
+  // Put the node on the stack in order to start the "recursive" rewrite
+  vector<RewriteStackElement> rewriteStack;
+  rewriteStack.push_back(RewriteStackElement(node, theoryId));
+
+  ResourceManager* rm = NULL;
+  bool hasSmtEngine = smt::smtEngineInScope();
+  if (hasSmtEngine) {
+    rm = NodeManager::currentResourceManager();
+  }
+  // Rewrite until the stack is empty
+  for (;;){
+
+    if (hasSmtEngine &&
+		d_iterationCount % ResourceManager::getFrequencyCount() == 0) {
+      rm->spendResource(options::rewriteStep());
+      d_iterationCount = 0;
+    }
+
+    // Get the top of the recursion stack
+    RewriteStackElement& rewriteStackTop = rewriteStack.back();
+
+    Trace("rewriter") << "Rewriter::rewriting: " << (TheoryId) rewriteStackTop.theoryId << "," << rewriteStackTop.node << std::endl;
+
+    // Before rewriting children we need to do a pre-rewrite of the node
+    if (rewriteStackTop.nextChild == 0) {
+
+      // Check if the pre-rewrite has already been done (it's in the cache)
+      Node cached = Rewriter::getPreRewriteCache((TheoryId) rewriteStackTop.theoryId, rewriteStackTop.node);
+      if (cached.isNull()) {
+        // Rewrite until fix-point is reached
+        for(;;) {
+          // Perform the pre-rewrite
+          RewriteResponse response = Rewriter::callPreRewrite((TheoryId) rewriteStackTop.theoryId, rewriteStackTop.node);
+          // Put the rewritten node to the top of the stack
+          rewriteStackTop.node = response.node;
+          TheoryId newTheory = theoryOf(rewriteStackTop.node);
+          // In the pre-rewrite, if changing theories, we just call the other theories pre-rewrite
+          if (newTheory == (TheoryId) rewriteStackTop.theoryId && response.status == REWRITE_DONE) {
+            break;
+          }
+          rewriteStackTop.theoryId = newTheory;
+        }
+        // Cache the rewrite
+        Rewriter::setPreRewriteCache((TheoryId) rewriteStackTop.originalTheoryId, rewriteStackTop.original, rewriteStackTop.node);
+      }
+      // Otherwise we're have already been pre-rewritten (in pre-rewrite cache)
+      else {
+        // Continue with the cached version
+        rewriteStackTop.node = cached;
+        rewriteStackTop.theoryId = theoryOf(cached);
+      }
+    }
+
+    rewriteStackTop.original =rewriteStackTop.node;
+    // Now it's time to rewrite the children, check if this has already been done
+    Node cached = Rewriter::getPostRewriteCache((TheoryId) rewriteStackTop.theoryId, rewriteStackTop.node);
+    // If not, go through the children
+    if(cached.isNull()) {
+
+      // The child we need to rewrite
+      unsigned child = rewriteStackTop.nextChild++;
+
+      // To build the rewritten expression we set up the builder
+      if(child == 0) {
+        if (rewriteStackTop.node.getNumChildren() > 0) {
+          // The children will add themselves to the builder once they're done
+          rewriteStackTop.builder << rewriteStackTop.node.getKind();
+          kind::MetaKind metaKind = rewriteStackTop.node.getMetaKind();
+          if (metaKind == kind::metakind::PARAMETERIZED) {
+            rewriteStackTop.builder << rewriteStackTop.node.getOperator();
+          }
+        }
+      }
+
+      // Process the next child
+      if(child < rewriteStackTop.node.getNumChildren()) {
+        // The child node
+        Node childNode = rewriteStackTop.node[child];
+        // Push the rewrite request to the stack (NOTE: rewriteStackTop might be a bad reference now)
+        rewriteStack.push_back(RewriteStackElement(childNode, theoryOf(childNode)));
+        // Go on with the rewriting
+        continue;
+      }
+
+      // Incorporate the children if necessary
+      if (rewriteStackTop.node.getNumChildren() > 0) {
+        Node rewritten = rewriteStackTop.builder;
+        rewriteStackTop.node = rewritten;
+        rewriteStackTop.theoryId = theoryOf(rewriteStackTop.node);
+      }
+
+      // Done with all pre-rewriting, so let's do the post rewrite
+      for(;;) {
+        // Do the post-rewrite
+        RewriteResponse response = Rewriter::callPostRewrite((TheoryId) rewriteStackTop.theoryId, rewriteStackTop.node);
+        // We continue with the response we got
+        TheoryId newTheoryId = theoryOf(response.node);
+        if (newTheoryId != (TheoryId) rewriteStackTop.theoryId || response.status == REWRITE_AGAIN_FULL) {
+          // In the post rewrite if we've changed theories, we must do a full rewrite
+          Assert(response.node != rewriteStackTop.node);
+          //TODO: this is not thread-safe - should make this assertion dependent on sequential build
+#ifdef CVC4_ASSERTIONS
+          Assert(s_rewriteStack->find(response.node) == s_rewriteStack->end());
+          s_rewriteStack->insert(response.node);
+#endif
+          Node rewritten = rewriteTo(newTheoryId, response.node);
+          rewriteStackTop.node = rewritten;
+#ifdef CVC4_ASSERTIONS
+          s_rewriteStack->erase(response.node);
+#endif
+          break;
+        } else if (response.status == REWRITE_DONE) {
+#ifdef CVC4_ASSERTIONS
+	  RewriteResponse r2 = Rewriter::callPostRewrite(newTheoryId, response.node);
+	  Assert(r2.node == response.node);
+#endif
+	  rewriteStackTop.node = response.node;
+          break;
+        }
+        // Check for trivial rewrite loops of size 1 or 2
+        Assert(response.node != rewriteStackTop.node);
+        Assert(Rewriter::callPostRewrite((TheoryId) rewriteStackTop.theoryId, response.node).node != rewriteStackTop.node);
+	rewriteStackTop.node = response.node;
+      }
+      // We're done with the post rewrite, so we add to the cache
+      Rewriter::setPostRewriteCache((TheoryId) rewriteStackTop.originalTheoryId, rewriteStackTop.original, rewriteStackTop.node);
+
+    } else {
+      // We were already in cache, so just remember it
+      rewriteStackTop.node = cached;
+      rewriteStackTop.theoryId = theoryOf(cached);
+    }
+
+    // If this is the last node, just return
+    if (rewriteStack.size() == 1) {
+      Assert(!isEquality || rewriteStackTop.node.getKind() == kind::EQUAL || rewriteStackTop.node.isConst());
+      return rewriteStackTop.node;
+    }
+
+    // We're done with this node, append it to the parent
+    rewriteStack[rewriteStack.size() - 2].builder << rewriteStackTop.node;
+    rewriteStack.pop_back();
+  }
+
+  Unreachable();
+  return Node::null();
+}/* Rewriter::rewriteTo() */
+
+void Rewriter::clearCaches() {
+#ifdef CVC4_ASSERTIONS
+  if(s_rewriteStack != NULL) {
+    delete s_rewriteStack;
+    s_rewriteStack = NULL;
+  }
+#endif
+  Rewriter::clearCachesInternal();
+}
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/rewriter.h b/src/theory/rewriter.h
new file mode 100644
index 0000000..aed93a4
--- /dev/null
+++ b/src/theory/rewriter.h
@@ -0,0 +1,119 @@
+/*********************                                                        */
+/*! \file rewriter.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The Rewriter class
+ **
+ ** The Rewriter class.
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "expr/node.h"
+#include "util/unsafe_interrupt_exception.h"
+
+namespace CVC4 {
+namespace theory {
+
+/**
+ * Theory rewriters signal whether more rewriting is needed (or not)
+ * by using a member of this enumeration.  See RewriteResponse, below.
+ */
+enum RewriteStatus {
+  REWRITE_DONE,
+  REWRITE_AGAIN,
+  REWRITE_AGAIN_FULL
+};/* enum RewriteStatus */
+
+/**
+ * Instances of this class serve as response codes from
+ * Theory::preRewrite() and Theory::postRewrite().  Instances of
+ * derived classes RewriteComplete(n), RewriteAgain(n), and
+ * FullRewriteNeeded(n) should be used, giving self-documenting
+ * rewrite behavior.
+ */
+struct RewriteResponse {
+  const RewriteStatus status;
+  const Node node;
+  RewriteResponse(RewriteStatus status, Node node) :
+    status(status), node(node) {}
+};/* struct RewriteResponse */
+
+class RewriterInitializer;
+
+/**
+ * The main rewriter class.  All functionality is static.
+ */
+class Rewriter {
+
+  friend class RewriterInitializer;
+  static unsigned long d_iterationCount;
+  /** Returns the appropriate cache for a node */
+  static Node getPreRewriteCache(theory::TheoryId theoryId, TNode node);
+
+  /** Returns the appropriate cache for a node */
+  static Node getPostRewriteCache(theory::TheoryId theoryId, TNode node);
+
+  /** Sets the appropriate cache for a node */
+  static void setPreRewriteCache(theory::TheoryId theoryId,
+                                 TNode node, TNode cache);
+
+  /** Sets the appropriate cache for a node */
+  static void setPostRewriteCache(theory::TheoryId theoryId,
+                                  TNode node, TNode cache);
+
+  // disable construction of rewriters; all functionality is static
+  Rewriter() CVC4_UNDEFINED;
+  Rewriter(const Rewriter&) CVC4_UNDEFINED;
+
+  /**
+   * Rewrites the node using the given theory rewriter.
+   */
+  static Node rewriteTo(theory::TheoryId theoryId, Node node);
+
+  /** Calls the pre-rewriter for the given theory */
+  static RewriteResponse callPreRewrite(theory::TheoryId theoryId, TNode node);
+
+  /** Calls the post-rewriter for the given theory */
+  static RewriteResponse callPostRewrite(theory::TheoryId theoryId, TNode node);
+
+  /**
+   * Calls the equality-rewriter for the given theory.
+   */
+  static Node callRewriteEquality(theory::TheoryId theoryId, TNode equality);
+
+  /**
+   * Should be called before the rewriter gets used for the first time.
+   */
+  static void init();
+
+  /**
+   * Should be called to clean up any state.
+   */
+  static void shutdown();
+  static void clearCachesInternal();
+public:
+
+  /**
+   * Rewrites the node using theoryOf() to determine which rewriter to
+   * use on the node.
+   */
+  static Node rewrite(TNode node);
+
+  /**
+   * Garbage collects the rewrite caches.
+   */
+  static void clearCaches();
+};/* class Rewriter */
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/rewriter_attributes.h b/src/theory/rewriter_attributes.h
new file mode 100644
index 0000000..5f709de
--- /dev/null
+++ b/src/theory/rewriter_attributes.h
@@ -0,0 +1,98 @@
+/*********************                                                        */
+/*! \file rewriter_attributes.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Rewriter attributes
+ **
+ ** Rewriter attributes.
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "expr/attribute.h"
+
+namespace CVC4 {
+namespace theory {
+
+template <bool pre, theory::TheoryId theoryId>
+struct RewriteCacheTag {};
+
+template <theory::TheoryId theoryId>
+struct RewriteAttibute {
+
+  typedef expr::Attribute< RewriteCacheTag<true, theoryId>, Node> pre_rewrite;
+  typedef expr::Attribute< RewriteCacheTag<false, theoryId>, Node> post_rewrite;
+
+  /**
+   * Get the value of the pre-rewrite cache.
+   */
+  static Node getPreRewriteCache(TNode node) throw() {
+    Node cache;
+    if (node.hasAttribute(pre_rewrite())) {
+      node.getAttribute(pre_rewrite(), cache);
+    } else {
+      return Node::null();
+    }
+    if (cache.isNull()) {
+      return node;
+    } else {
+      return cache;
+    }
+  }
+
+  /**
+   * Set the value of the pre-rewrite cache.
+   */
+  static void setPreRewriteCache(TNode node, TNode cache) throw() {
+    Trace("rewriter") << "setting pre-rewrite of " << node << " to " << cache << std::endl;
+    Assert(!cache.isNull());
+    if (node == cache) {
+      node.setAttribute(pre_rewrite(), Node::null());
+    } else {
+      node.setAttribute(pre_rewrite(), cache);
+    }
+  }
+
+  /**
+   * Get the value of the post-rewrite cache.
+   * none).
+   */
+  static Node getPostRewriteCache(TNode node) throw() {
+    Node cache;
+    if (node.hasAttribute(post_rewrite())) {
+      node.getAttribute(post_rewrite(), cache);
+    } else {
+      return Node::null();
+    }
+    if (cache.isNull()) {
+      return node;
+    } else {
+      return cache;
+    }
+  }
+
+  /**
+   * Set the value of the post-rewrite cache.  v cannot be a null Node.
+   */
+  static void setPostRewriteCache(TNode node, TNode cache) throw() {
+    Assert(!cache.isNull());
+    Trace("rewriter") << "setting rewrite of " << node << " to " << cache << std::endl;
+    if (node == cache) {
+      node.setAttribute(post_rewrite(), Node::null());
+    } else {
+      node.setAttribute(post_rewrite(), cache);
+    }
+  }
+};/* struct RewriteAttribute */
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/rewriter_tables_template.h b/src/theory/rewriter_tables_template.h
new file mode 100644
index 0000000..4d41c02
--- /dev/null
+++ b/src/theory/rewriter_tables_template.h
@@ -0,0 +1,107 @@
+/*********************                                                        */
+/*! \file rewriter_tables_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Rewriter tables for various theories
+ **
+ ** This file contains template code for the rewriter tables that are generated
+ ** from the Theory kinds files.
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "theory/rewriter.h"
+#include "theory/rewriter_attributes.h"
+#include "expr/attribute_unique_id.h"
+#include "expr/attribute.h"
+
+${rewriter_includes}
+
+namespace CVC4 {
+namespace theory {
+
+RewriteResponse Rewriter::callPreRewrite(theory::TheoryId theoryId, TNode node) {
+  switch(theoryId) {
+${pre_rewrite_calls}
+  default:
+    Unreachable();
+  }
+}
+
+RewriteResponse Rewriter::callPostRewrite(theory::TheoryId theoryId, TNode node) {
+  switch(theoryId) {
+${post_rewrite_calls}
+  default:
+    Unreachable();
+  }
+}
+
+Node Rewriter::getPreRewriteCache(theory::TheoryId theoryId, TNode node) {
+  switch(theoryId) {
+${pre_rewrite_get_cache}
+  default:
+    Unreachable();
+  }
+}
+
+Node Rewriter::getPostRewriteCache(theory::TheoryId theoryId, TNode node) {
+  switch(theoryId) {
+${post_rewrite_get_cache}
+    default:
+    Unreachable();
+  }
+}
+
+void Rewriter::setPreRewriteCache(theory::TheoryId theoryId, TNode node, TNode cache) {
+  switch(theoryId) {
+${pre_rewrite_set_cache}
+  default:
+    Unreachable();
+  }
+}
+
+void Rewriter::setPostRewriteCache(theory::TheoryId theoryId, TNode node, TNode cache) {
+  switch(theoryId) {
+${post_rewrite_set_cache}
+  default:
+    Unreachable();
+  }
+}
+
+void Rewriter::init() {
+${rewrite_init}
+}
+
+void Rewriter::shutdown() {
+${rewrite_shutdown}
+}
+
+void Rewriter::clearCachesInternal() {
+  typedef CVC4::expr::attr::AttributeUniqueId AttributeUniqueId;
+  std::vector<AttributeUniqueId> preids;
+  ${pre_rewrite_attribute_ids}
+
+  std::vector<AttributeUniqueId> postids;
+  ${post_rewrite_attribute_ids}
+
+  std::vector<const AttributeUniqueId*> allids;
+  for(unsigned i = 0; i < preids.size(); ++i){
+    allids.push_back(&preids[i]);
+  }
+  for(unsigned i = 0; i < postids.size(); ++i){
+    allids.push_back(&postids[i]);
+  }
+  NodeManager::currentNM()->deleteAttributes(allids);
+}
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/sep/kinds b/src/theory/sep/kinds
new file mode 100644
index 0000000..358c63f
--- /dev/null
+++ b/src/theory/sep/kinds
@@ -0,0 +1,29 @@
+# kinds                                                               -*- sh -*-
+#
+# For documentation on this file format, please refer to
+# src/theory/builtin/kinds.
+#
+
+theory THEORY_SEP ::CVC4::theory::sep::TheorySep "theory/sep/theory_sep.h"
+typechecker "theory/sep/theory_sep_type_rules.h"
+
+properties polite stable-infinite parametric
+properties check propagate presolve getNextDecisionRequest
+
+rewriter ::CVC4::theory::sep::TheorySepRewriter "theory/sep/theory_sep_rewriter.h"
+
+variable SEP_NIL "separation nil"
+
+operator SEP_EMP 2 "separation empty heap"
+operator SEP_PTO 2 "points to relation"
+operator SEP_STAR 2: "separation star"
+operator SEP_WAND 2 "separation magic wand"
+operator SEP_LABEL 2 "separation label (internal use only)"
+
+typerule SEP_EMP ::CVC4::theory::sep::SepEmpTypeRule
+typerule SEP_PTO ::CVC4::theory::sep::SepPtoTypeRule
+typerule SEP_STAR ::CVC4::theory::sep::SepStarTypeRule
+typerule SEP_WAND ::CVC4::theory::sep::SepWandTypeRule
+typerule SEP_LABEL ::CVC4::theory::sep::SepLabelTypeRule
+
+endtheory
diff --git a/src/theory/sep/theory_sep.cpp b/src/theory/sep/theory_sep.cpp
new file mode 100644
index 0000000..4f31f10
--- /dev/null
+++ b/src/theory/sep/theory_sep.cpp
@@ -0,0 +1,1802 @@
+/*********************                                                        */
+/*! \file theory_sep.cpp
+ ** \verbatim
+ ** Original author: Andrew Reynolds
+ ** Major contributors: none
+ ** Minor contributors (to current version): none
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2014  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 the theory of sep.
+ **
+ ** Implementation of the theory of sep.
+ **/
+
+
+#include "theory/sep/theory_sep.h"
+#include "theory/valuation.h"
+#include "expr/kind.h"
+#include <map>
+#include "theory/rewriter.h"
+#include "theory/theory_model.h"
+#include "options/sep_options.h"
+#include "options/smt_options.h"
+#include "smt/logic_exception.h"
+#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/term_database.h"
+#include "options/quantifiers_options.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace sep {
+
+TheorySep::TheorySep(context::Context* c, context::UserContext* u, OutputChannel& out, Valuation valuation, const LogicInfo& logicInfo) :
+  Theory(THEORY_SEP, c, u, out, valuation, logicInfo),
+  d_lemmas_produced_c(u),
+  d_notify(*this),
+  d_equalityEngine(d_notify, c, "theory::sep::TheorySep", true),
+  d_conflict(c, false),
+  d_reduce(u),
+  d_infer(c),
+  d_infer_exp(c),
+  d_spatial_assertions(c)
+{
+  d_true = NodeManager::currentNM()->mkConst<bool>(true);
+  d_false = NodeManager::currentNM()->mkConst<bool>(false);
+  d_bounds_init = false;
+  
+  // The kinds we are treating as function application in congruence
+  d_equalityEngine.addFunctionKind(kind::SEP_PTO);
+  //d_equalityEngine.addFunctionKind(kind::SEP_STAR);
+}
+
+TheorySep::~TheorySep() {
+  for( std::map< Node, HeapAssertInfo * >::iterator it = d_eqc_info.begin(); it != d_eqc_info.end(); ++it ){
+    delete it->second;
+  }
+}
+
+void TheorySep::setMasterEqualityEngine(eq::EqualityEngine* eq) {
+  d_equalityEngine.setMasterEqualityEngine(eq);
+}
+
+Node TheorySep::mkAnd( std::vector< TNode >& assumptions ) {
+  if( assumptions.empty() ){
+    return d_true;
+  }else if( assumptions.size()==1 ){
+    return assumptions[0];
+  }else{
+    return NodeManager::currentNM()->mkNode( kind::AND, assumptions );
+  }
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// PREPROCESSING
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+Node TheorySep::ppRewrite(TNode term) {
+  Trace("sep-pp") << "ppRewrite : " << term << std::endl;
+  return term;
+}
+
+Theory::PPAssertStatus TheorySep::ppAssert(TNode in, SubstitutionMap& outSubstitutions) {
+
+  return PP_ASSERT_STATUS_UNSOLVED;
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// T-PROPAGATION / REGISTRATION
+/////////////////////////////////////////////////////////////////////////////
+
+
+bool TheorySep::propagate(TNode literal)
+{
+  Debug("sep") << "TheorySep::propagate(" << literal  << ")" << std::endl;
+  // If already in conflict, no more propagation
+  if (d_conflict) {
+    Debug("sep") << "TheorySep::propagate(" << literal << "): already in conflict" << std::endl;
+    return false;
+  }
+  bool ok = d_out->propagate(literal);
+  if (!ok) {
+    d_conflict = true;
+  }
+  return ok;
+}/* TheorySep::propagate(TNode) */
+
+
+void TheorySep::explain(TNode literal, std::vector<TNode>& assumptions) {
+  if( literal.getKind()==kind::SEP_LABEL ||
+      ( literal.getKind()==kind::NOT && literal[0].getKind()==kind::SEP_LABEL ) ){
+    //labelled assertions are never given to equality engine and should only come from the outside
+    assumptions.push_back( literal );
+  }else{
+    // Do the work
+    bool polarity = literal.getKind() != kind::NOT;
+    TNode atom = polarity ? literal : literal[0];
+    if (atom.getKind() == kind::EQUAL) {
+      d_equalityEngine.explainEquality( atom[0], atom[1], polarity, assumptions, NULL );
+    } else {
+      d_equalityEngine.explainPredicate( atom, polarity, assumptions );
+    }
+  }
+}
+
+
+void TheorySep::propagate(Effort e){
+
+}
+
+
+Node TheorySep::explain(TNode literal)
+{
+  Debug("sep") << "TheorySep::explain(" << literal << ")" << std::endl;
+  std::vector<TNode> assumptions;
+  explain(literal, assumptions);
+  return mkAnd(assumptions);
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// SHARING
+/////////////////////////////////////////////////////////////////////////////
+
+
+void TheorySep::addSharedTerm(TNode t) {
+  Debug("sep") << "TheorySep::addSharedTerm(" << t << ")" << std::endl;
+  d_equalityEngine.addTriggerTerm(t, THEORY_SEP);
+}
+
+
+EqualityStatus TheorySep::getEqualityStatus(TNode a, TNode b) {
+  Assert(d_equalityEngine.hasTerm(a) && d_equalityEngine.hasTerm(b));
+  if (d_equalityEngine.areEqual(a, b)) {
+    // The terms are implied to be equal
+    return EQUALITY_TRUE;
+  }
+  else if (d_equalityEngine.areDisequal(a, b, false)) {
+    // The terms are implied to be dis-equal
+    return EQUALITY_FALSE;
+  }
+  return EQUALITY_UNKNOWN;//FALSE_IN_MODEL;
+}
+
+
+void TheorySep::computeCareGraph() {
+  Debug("sharing") << "Theory::computeCareGraph<" << getId() << ">()" << endl;
+  for (unsigned i = 0; i < d_sharedTerms.size(); ++ i) {
+    TNode a = d_sharedTerms[i];
+    TypeNode aType = a.getType();
+    for (unsigned j = i + 1; j < d_sharedTerms.size(); ++ j) {
+      TNode b = d_sharedTerms[j];
+      if (b.getType() != aType) {
+        // We don't care about the terms of different types
+        continue;
+      }
+      switch (d_valuation.getEqualityStatus(a, b)) {
+      case EQUALITY_TRUE_AND_PROPAGATED:
+      case EQUALITY_FALSE_AND_PROPAGATED:
+        // If we know about it, we should have propagated it, so we can skip
+        break;
+      default:
+        // Let's split on it
+        addCarePair(a, b);
+        break;
+      }
+    }
+  }
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// MODEL GENERATION
+/////////////////////////////////////////////////////////////////////////////
+
+
+void TheorySep::collectModelInfo( TheoryModel* m, bool fullModel ){
+  set<Node> termSet;
+
+  // Compute terms appearing in assertions and shared terms
+  computeRelevantTerms(termSet);
+
+  // Send the equality engine information to the model
+  m->assertEqualityEngine( &d_equalityEngine, &termSet );
+}
+
+void TheorySep::postProcessModel( TheoryModel* m ){
+  Trace("sep-model") << "Printing model for TheorySep..." << std::endl;
+  
+  std::vector< Node > sep_children;
+  Node m_neq;
+  Node m_heap;
+  for( std::map< TypeNode, Node >::iterator it = d_base_label.begin(); it != d_base_label.end(); ++it ){
+    //should only be constructing for one heap type
+    Assert( m_heap.isNull() );
+    Assert( d_loc_to_data_type.find( it->first )!=d_loc_to_data_type.end() );
+    Trace("sep-model") << "Model for heap, type = " << it->first << " with data type " << d_loc_to_data_type[it->first] << " : " << std::endl;
+    TypeNode data_type = d_loc_to_data_type[it->first];
+    computeLabelModel( it->second );
+    if( d_label_model[it->second].d_heap_locs_model.empty() ){
+      Trace("sep-model") << "  [empty]" << std::endl;
+    }else{
+      for( unsigned j=0; j<d_label_model[it->second].d_heap_locs_model.size(); j++ ){
+        Assert( d_label_model[it->second].d_heap_locs_model[j].getKind()==kind::SINGLETON );
+        std::vector< Node > pto_children;
+        Node l = d_label_model[it->second].d_heap_locs_model[j][0];
+        Assert( l.isConst() );
+        pto_children.push_back( l );
+        Trace("sep-model") << " " << l << " -> ";
+        if( d_pto_model[l].isNull() ){
+          Trace("sep-model") << "_";
+          //m->d_comment_str << "_";
+          TypeEnumerator te_range( data_type );
+          if( data_type.isInterpretedFinite() ){
+            pto_children.push_back( *te_range );
+          }else{
+            //must enumerate until we find one that is not explicitly pointed to
+            bool success = false;
+            Node cv;
+            do{
+              cv = *te_range;
+              if( std::find( d_heap_locs_nptos[l].begin(), d_heap_locs_nptos[l].end(), cv )==d_heap_locs_nptos[l].end() ){
+                success = true;
+              }else{
+                ++te_range;
+              }
+            }while( !success );
+            pto_children.push_back( cv );
+          }
+        }else{
+          Trace("sep-model") << d_pto_model[l];
+          Node vpto = d_valuation.getModel()->getRepresentative( d_pto_model[l] );
+          Assert( vpto.isConst() );
+          pto_children.push_back( vpto );
+        }
+        Trace("sep-model") << std::endl;
+        sep_children.push_back( NodeManager::currentNM()->mkNode( kind::SEP_PTO, pto_children ) );
+      }
+    }
+    Node nil = getNilRef( it->first );
+    Node vnil = d_valuation.getModel()->getRepresentative( nil );
+    m_neq = NodeManager::currentNM()->mkNode( kind::EQUAL, nil, vnil );
+    Trace("sep-model") << "sep.nil = " << vnil << std::endl;
+    Trace("sep-model") << std::endl;
+    if( sep_children.empty() ){
+      TypeEnumerator te_domain( it->first );
+      TypeEnumerator te_range( d_loc_to_data_type[it->first] );
+      m_heap = NodeManager::currentNM()->mkNode( kind::SEP_EMP, *te_domain, *te_range );
+    }else if( sep_children.size()==1 ){
+      m_heap = sep_children[0];
+    }else{
+      m_heap = NodeManager::currentNM()->mkNode( kind::SEP_STAR, sep_children );
+    }
+    m->setHeapModel( m_heap, m_neq );
+  }
+  Trace("sep-model") << "Finished printing model for TheorySep." << std::endl;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// NOTIFICATIONS
+/////////////////////////////////////////////////////////////////////////////
+
+
+void TheorySep::presolve() {
+  Trace("sep-pp") << "Presolving" << std::endl;
+  //TODO: cleanup if incremental?
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// MAIN SOLVER
+/////////////////////////////////////////////////////////////////////////////
+
+
+void TheorySep::check(Effort e) {
+  if (done() && !fullEffort(e) && e != EFFORT_LAST_CALL) {
+    return;
+  }
+
+  getOutputChannel().spendResource(options::theoryCheckStep());
+
+  TimerStat::CodeTimer checkTimer(d_checkTime);
+  Trace("sep-check") << "Sep::check(): " << e << endl;
+
+  while( !done() && !d_conflict ){
+    // Get all the assertions
+    Assertion assertion = get();
+    TNode fact = assertion.assertion;
+
+    Trace("sep-assert") << "TheorySep::check(): processing " << fact << std::endl;
+
+    bool polarity = fact.getKind() != kind::NOT;
+    TNode atom = polarity ? fact : fact[0];
+    /*
+    if( atom.getKind()==kind::SEP_EMP ){
+      TypeNode tn = atom[0].getType();
+      if( d_emp_arg.find( tn )==d_emp_arg.end() ){
+        d_emp_arg[tn] = atom[0];
+      }else{
+        //normalize argument TODO
+      }
+    }
+    */
+    TNode s_atom = atom.getKind()==kind::SEP_LABEL ? atom[0] : atom;
+    TNode s_lbl = atom.getKind()==kind::SEP_LABEL ? atom[1] : TNode::null();
+    bool is_spatial = s_atom.getKind()==kind::SEP_STAR || s_atom.getKind()==kind::SEP_WAND || s_atom.getKind()==kind::SEP_PTO || s_atom.getKind()==kind::SEP_EMP;
+    if( is_spatial && s_lbl.isNull() ){
+      if( d_reduce.find( fact )==d_reduce.end() ){
+        Trace("sep-lemma-debug") << "Reducing unlabelled assertion " << atom << std::endl;
+        d_reduce.insert( fact );
+        //introduce top-level label, add iff
+        TypeNode refType = getReferenceType( s_atom );
+        Trace("sep-lemma-debug") << "...reference type is : " << refType << std::endl;
+        Node b_lbl = getBaseLabel( refType );
+        Node s_atom_new = NodeManager::currentNM()->mkNode( kind::SEP_LABEL, s_atom, b_lbl );
+        Node lem;
+        Trace("sep-lemma-debug") << "...polarity is " << polarity << std::endl;
+        if( polarity ){
+          lem = NodeManager::currentNM()->mkNode( kind::OR, s_atom.negate(), s_atom_new );
+        }else{
+          lem = NodeManager::currentNM()->mkNode( kind::OR, s_atom, s_atom_new.negate() );
+        }
+        Trace("sep-lemma-debug") << "Sep::Lemma : base reduction : " << lem << std::endl;
+        d_out->lemma( lem );
+      }
+    }else{
+      //do reductions
+      if( is_spatial ){
+        if( d_reduce.find( fact )==d_reduce.end() ){
+          Trace("sep-lemma-debug") << "Reducing assertion " << fact << std::endl;
+          d_reduce.insert( fact );
+          Node conc;
+          std::map< Node, Node >::iterator its = d_red_conc[s_lbl].find( s_atom );
+          if( its==d_red_conc[s_lbl].end() ){
+            //make conclusion based on type of assertion
+            if( s_atom.getKind()==kind::SEP_STAR || s_atom.getKind()==kind::SEP_WAND ){
+              std::vector< Node > children;
+              std::vector< Node > c_lems;
+              TypeNode tn = getReferenceType( s_atom );
+              if( d_reference_bound_max.find( tn )!=d_reference_bound_max.end() ){
+                c_lems.push_back( NodeManager::currentNM()->mkNode( kind::SUBSET, s_lbl, d_reference_bound_max[tn] ) );
+              }
+              std::vector< Node > labels;
+              getLabelChildren( s_atom, s_lbl, children, labels );
+              Node empSet = NodeManager::currentNM()->mkConst(EmptySet(s_lbl.getType().toType()));
+              Assert( children.size()>1 );
+              if( s_atom.getKind()==kind::SEP_STAR ){
+                //reduction for heap : union, pairwise disjoint
+                Node ulem = NodeManager::currentNM()->mkNode( kind::UNION, labels[0], labels[1] );
+                for( unsigned i=2; i<labels.size(); i++ ){
+                  ulem = NodeManager::currentNM()->mkNode( kind::UNION, ulem, labels[i] );
+                }
+                ulem = s_lbl.eqNode( ulem );
+                Trace("sep-lemma-debug") << "Sep::Lemma : star reduction, union : " << ulem << std::endl;
+                c_lems.push_back( ulem );
+                for( unsigned i=0; i<labels.size(); i++ ){
+                  for( unsigned j=(i+1); j<labels.size(); j++ ){
+                    Node s = NodeManager::currentNM()->mkNode( kind::INTERSECTION, labels[i], labels[j] );
+                    Node ilem = s.eqNode( empSet );
+                    Trace("sep-lemma-debug") << "Sep::Lemma : star reduction, disjoint : " << ilem << std::endl;
+                    c_lems.push_back( ilem );
+                  }
+                }
+              }else{
+                Node ulem = NodeManager::currentNM()->mkNode( kind::UNION, s_lbl, labels[0] );
+                ulem = ulem.eqNode( labels[1] );
+                Trace("sep-lemma-debug") << "Sep::Lemma : wand reduction, union : " << ulem << std::endl;
+                c_lems.push_back( ulem );
+                Node s = NodeManager::currentNM()->mkNode( kind::INTERSECTION, s_lbl, labels[0] );
+                Node ilem = s.eqNode( empSet );
+                Trace("sep-lemma-debug") << "Sep::Lemma : wand reduction, disjoint : " << ilem << std::endl;
+                c_lems.push_back( ilem );
+                //nil does not occur in labels[0]
+                Node nr = getNilRef( tn );
+                Node nrlem = NodeManager::currentNM()->mkNode( kind::MEMBER, nr, labels[0] ).negate();
+                Trace("sep-lemma") << "Sep::Lemma: sep.nil not in wand antecedant heap : " << nrlem << std::endl;
+                d_out->lemma( nrlem );
+              }
+              //send out definitional lemmas for introduced sets
+              for( unsigned j=0; j<c_lems.size(); j++ ){
+                Trace("sep-lemma") << "Sep::Lemma : definition : " << c_lems[j] << std::endl;
+                d_out->lemma( c_lems[j] );
+              }
+              //children.insert( children.end(), c_lems.begin(), c_lems.end() );
+              conc = NodeManager::currentNM()->mkNode( kind::AND, children );
+            }else if( s_atom.getKind()==kind::SEP_PTO ){
+              Node ss = NodeManager::currentNM()->mkNode( kind::SINGLETON, s_atom[0] );
+              if( s_lbl!=ss ){
+                conc = s_lbl.eqNode( ss );
+              }
+              //not needed anymore: semantics of sep.nil is enforced globally
+              //Node ssn = NodeManager::currentNM()->mkNode( kind::EQUAL, s_atom[0], getNilRef(s_atom[0].getType()) ).negate();
+              //conc = conc.isNull() ? ssn : NodeManager::currentNM()->mkNode( kind::AND, conc, ssn );
+              
+            }else if( s_atom.getKind()==kind::SEP_EMP ){
+              //conc = s_lbl.eqNode( NodeManager::currentNM()->mkConst(EmptySet(s_lbl.getType().toType())) );
+              Node lem;
+              Node emp_s = NodeManager::currentNM()->mkConst(EmptySet(s_lbl.getType().toType()));
+              if( polarity ){
+                lem = NodeManager::currentNM()->mkNode( kind::OR, fact.negate(), s_lbl.eqNode( emp_s ) );
+              }else{
+                Node kl = NodeManager::currentNM()->mkSkolem( "loc", getReferenceType( s_atom ) );
+                Node kd = NodeManager::currentNM()->mkSkolem( "data", getDataType( s_atom ) );
+                Node econc = NodeManager::currentNM()->mkNode( kind::SEP_LABEL, 
+                               NodeManager::currentNM()->mkNode( kind::SEP_STAR, NodeManager::currentNM()->mkNode( kind::SEP_PTO, kl, kd ), d_true ), s_lbl );
+                //Node econc = NodeManager::currentNM()->mkNode( kind::AND, s_lbl.eqNode( emp_s ).negate(), 
+                lem = NodeManager::currentNM()->mkNode( kind::OR, fact.negate(), econc );
+              }
+              Trace("sep-lemma") << "Sep::Lemma : emp : " << lem << std::endl;
+              d_out->lemma( lem );
+
+            }else{
+              //labeled emp should be rewritten
+              Assert( false );
+            }
+            d_red_conc[s_lbl][s_atom] = conc;
+          }else{
+            conc = its->second;
+          }
+          if( !conc.isNull() ){
+            bool use_polarity = s_atom.getKind()==kind::SEP_WAND ? !polarity : polarity;
+            if( !use_polarity ){
+              // introduce guard, assert positive version
+              Trace("sep-lemma-debug") << "Negated spatial constraint asserted to sep theory: " << fact << std::endl;
+              Node lit = Rewriter::rewrite( NodeManager::currentNM()->mkSkolem( "G", NodeManager::currentNM()->booleanType() ) );
+              lit = getValuation().ensureLiteral( lit );
+              d_neg_guard[s_lbl][s_atom] = lit;
+              Trace("sep-lemma-debug") << "Neg guard : " << s_lbl << " " << s_atom << " " << lit << std::endl;
+              AlwaysAssert( !lit.isNull() );
+              d_out->requirePhase( lit, true );
+              d_neg_guards.push_back( lit );
+              d_guard_to_assertion[lit] = s_atom;
+              //Node lem = NodeManager::currentNM()->mkNode( kind::EQUAL, lit, conc );
+              Node lem = NodeManager::currentNM()->mkNode( kind::OR, lit.negate(), conc );
+              Trace("sep-lemma") << "Sep::Lemma : (neg) reduction : " << lem << std::endl;
+              d_out->lemma( lem );
+            }else{
+              //reduce based on implication
+              Node lem = NodeManager::currentNM()->mkNode( kind::OR, fact.negate(), conc );
+              Trace("sep-lemma") << "Sep::Lemma : reduction : " << lem << std::endl;
+              d_out->lemma( lem );
+            }
+          }else{
+            Trace("sep-lemma-debug") << "Trivial conclusion, do not add lemma." << std::endl;
+          }
+        }
+      }
+      //assert to equality engine
+      if( !is_spatial ){
+        Trace("sep-assert") << "Asserting " << atom << ", pol = " << polarity << " to EE..." << std::endl;
+        if( s_atom.getKind()==kind::EQUAL ){
+          d_equalityEngine.assertEquality(atom, polarity, fact);
+        }else{
+          d_equalityEngine.assertPredicate(atom, polarity, fact);
+        }
+        Trace("sep-assert") << "Done asserting " << atom << " to EE." << std::endl;
+      }else if( s_atom.getKind()==kind::SEP_PTO ){
+        Node pto_lbl = NodeManager::currentNM()->mkNode( kind::SINGLETON, s_atom[0] );
+        Assert( s_lbl==pto_lbl );
+        Trace("sep-assert") << "Asserting " << s_atom << std::endl;
+        d_equalityEngine.assertPredicate(s_atom, polarity, fact);
+        //associate the equivalence class of the lhs with this pto
+        Node r = getRepresentative( s_lbl );
+        HeapAssertInfo * ei = getOrMakeEqcInfo( r, true );
+        addPto( ei, r, atom, polarity );
+      }
+      //maybe propagate
+      doPendingFacts();
+      //add to spatial assertions
+      if( !d_conflict && is_spatial ){
+        d_spatial_assertions.push_back( fact );
+      }
+    }
+  }
+
+  if( e == EFFORT_LAST_CALL && !d_conflict && !d_valuation.needCheck() ){
+    Trace("sep-process") << "Checking heap at full effort..." << std::endl;
+    d_label_model.clear();
+    d_tmodel.clear();
+    d_pto_model.clear();
+    Trace("sep-process") << "---Locations---" << std::endl;
+    std::map< Node, int > min_id;
+    for( std::map< TypeNode, std::vector< Node > >::iterator itt = d_type_references_all.begin(); itt != d_type_references_all.end(); ++itt ){
+      for( unsigned k=0; k<itt->second.size(); k++ ){
+        Node t = itt->second[k];
+        Trace("sep-process") << "  " << t << " = ";
+        if( d_valuation.getModel()->hasTerm( t ) ){
+          Node v = d_valuation.getModel()->getRepresentative( t );
+          Trace("sep-process") << v << std::endl;
+          //take minimal id
+          std::map< Node, unsigned >::iterator itrc = d_type_ref_card_id.find( t );
+          int tid = itrc==d_type_ref_card_id.end() ? -1 : (int)itrc->second;
+          bool set_term_model;
+          if( d_tmodel.find( v )==d_tmodel.end() ){
+            set_term_model = true;
+          }else{
+            set_term_model = min_id[v]>tid;
+          }
+          if( set_term_model ){
+            d_tmodel[v] = t;
+            min_id[v] = tid;
+          }
+        }else{
+          Trace("sep-process") << "?" << std::endl;
+        }
+      }
+    }
+    Trace("sep-process") << "---" << std::endl;
+    //build positive/negative assertion lists for labels
+    std::map< Node, bool > assert_active;
+    //get the inactive assertions
+    std::map< Node, std::vector< Node > > lbl_to_assertions;
+    for( NodeList::const_iterator i = d_spatial_assertions.begin(); i != d_spatial_assertions.end(); ++i ) {
+      Node fact = (*i);
+      bool polarity = fact.getKind() != kind::NOT;
+      TNode atom = polarity ? fact : fact[0];
+      Assert( atom.getKind()==kind::SEP_LABEL );
+      TNode s_atom = atom[0];
+      TNode s_lbl = atom[1];
+      lbl_to_assertions[s_lbl].push_back( fact );
+      //check whether assertion is active : either polarity=true, or guard is not asserted false
+      assert_active[fact] = true;
+      bool use_polarity = s_atom.getKind()==kind::SEP_WAND ? !polarity : polarity;
+      if( use_polarity ){
+        if( s_atom.getKind()==kind::SEP_PTO ){
+          Node vv = d_valuation.getModel()->getRepresentative( s_atom[0] );
+          if( d_pto_model.find( vv )==d_pto_model.end() ){
+            Trace("sep-process") << "Pto : " << s_atom[0] << " (" << vv << ") -> " << s_atom[1] << std::endl;
+            d_pto_model[vv] = s_atom[1];
+            
+            //replace this on pto-model since this term is more relevant
+            TypeNode vtn = vv.getType();
+            if( std::find( d_type_references_all[vtn].begin(), d_type_references_all[vtn].end(), s_atom[0] )!=d_type_references_all[vtn].end() ){
+              d_tmodel[vv] = s_atom[0];
+            }
+          }
+        }
+      }else{
+        if( d_neg_guard[s_lbl].find( s_atom )!=d_neg_guard[s_lbl].end() ){
+          //check if the guard is asserted positively
+          Node guard = d_neg_guard[s_lbl][s_atom];
+          bool value;
+          if( getValuation().hasSatValue( guard, value ) ) {
+            assert_active[fact] = value;
+          }
+        }
+      }
+    }
+    //(recursively) set inactive sub-assertions
+    for( NodeList::const_iterator i = d_spatial_assertions.begin(); i != d_spatial_assertions.end(); ++i ) {
+      Node fact = (*i);
+      if( !assert_active[fact] ){
+        setInactiveAssertionRec( fact, lbl_to_assertions, assert_active );
+      }
+    }
+    //set up model information based on active assertions
+    for( NodeList::const_iterator i = d_spatial_assertions.begin(); i != d_spatial_assertions.end(); ++i ) {
+      Node fact = (*i);
+      bool polarity = fact.getKind() != kind::NOT;
+      TNode atom = polarity ? fact : fact[0];
+      TNode s_atom = atom[0];
+      TNode s_lbl = atom[1];
+      if( assert_active[fact] ){
+        computeLabelModel( s_lbl );
+      }
+    }
+    //debug print
+    if( Trace.isOn("sep-process") ){
+      Trace("sep-process") << "--- Current spatial assertions : " << std::endl;
+      for( NodeList::const_iterator i = d_spatial_assertions.begin(); i != d_spatial_assertions.end(); ++i ) {
+        Node fact = (*i);
+        Trace("sep-process") << "  " << fact;
+        if( !assert_active[fact] ){
+          Trace("sep-process") << " [inactive]";
+        }
+        Trace("sep-process") << std::endl;
+      }
+      Trace("sep-process") << "---" << std::endl;
+    }
+    if(Trace.isOn("sep-eqc")) {
+      eq::EqClassesIterator eqcs2_i = eq::EqClassesIterator( &d_equalityEngine );
+      Trace("sep-eqc") << "EQC:" << std::endl;
+      while( !eqcs2_i.isFinished() ){
+        Node eqc = (*eqcs2_i);
+        eq::EqClassIterator eqc2_i = eq::EqClassIterator( eqc, &d_equalityEngine );
+        Trace("sep-eqc") << "Eqc( " << eqc << " ) : { ";
+        while( !eqc2_i.isFinished() ) {
+          if( (*eqc2_i)!=eqc ){
+            Trace("sep-eqc") << (*eqc2_i) << " ";
+          }
+          ++eqc2_i;
+        }
+        Trace("sep-eqc") << " } " << std::endl;
+        ++eqcs2_i;
+      }
+      Trace("sep-eqc") << std::endl;
+    }
+    
+    bool addedLemma = false;
+    bool needAddLemma = false;
+    //check negated star / positive wand
+    if( options::sepCheckNeg() ){
+      //get active labels
+      std::map< Node, bool > active_lbl;
+      if( options::sepMinimalRefine() ){
+        for( NodeList::const_iterator i = d_spatial_assertions.begin(); i != d_spatial_assertions.end(); ++i ) {
+          Node fact = (*i);
+          bool polarity = fact.getKind() != kind::NOT;
+          TNode atom = polarity ? fact : fact[0];
+          TNode s_atom = atom[0];
+          bool use_polarity = s_atom.getKind()==kind::SEP_WAND ? !polarity : polarity;
+          if( !use_polarity ){
+            Assert( assert_active.find( fact )!=assert_active.end() );
+            if( assert_active[fact] ){
+              Assert( atom.getKind()==kind::SEP_LABEL );
+              TNode s_lbl = atom[1];
+              if( d_label_map[s_atom].find( s_lbl )!=d_label_map[s_atom].end() ){
+                Trace("sep-process-debug") << "Active lbl : " << s_lbl << std::endl;
+                active_lbl[s_lbl] = true;
+              }
+            }
+          }
+        }
+      }
+
+      //process spatial assertions
+      for( NodeList::const_iterator i = d_spatial_assertions.begin(); i != d_spatial_assertions.end(); ++i ) {
+        Node fact = (*i);
+        bool polarity = fact.getKind() != kind::NOT;
+        TNode atom = polarity ? fact : fact[0];
+        TNode s_atom = atom[0];
+
+        bool use_polarity = s_atom.getKind()==kind::SEP_WAND ? !polarity : polarity;
+        Trace("sep-process-debug") << "  check atom : " << s_atom << " use polarity " << use_polarity << std::endl;
+        if( !use_polarity ){
+          Assert( assert_active.find( fact )!=assert_active.end() );
+          if( assert_active[fact] ){
+            Assert( atom.getKind()==kind::SEP_LABEL );
+            TNode s_lbl = atom[1];
+            Trace("sep-process") << "--> Active negated atom : " << s_atom << ", lbl = " << s_lbl << std::endl;
+            //add refinement lemma
+            if( d_label_map[s_atom].find( s_lbl )!=d_label_map[s_atom].end() ){
+              needAddLemma = true;
+              TypeNode tn = getReferenceType( s_atom );
+              tn = NodeManager::currentNM()->mkSetType(tn);
+              //tn = NodeManager::currentNM()->mkSetType(NodeManager::currentNM()->mkRefType(tn));
+              Node o_b_lbl_mval = d_label_model[s_lbl].getValue( tn );
+              Trace("sep-process") << "    Model for " << s_lbl << " : " << o_b_lbl_mval << std::endl;
+
+              //get model values
+              std::map< int, Node > mvals;
+              for( std::map< int, Node >::iterator itl = d_label_map[s_atom][s_lbl].begin(); itl != d_label_map[s_atom][s_lbl].end(); ++itl ){
+                Node sub_lbl = itl->second;
+                int sub_index = itl->first;
+                computeLabelModel( sub_lbl );
+                Node lbl_mval = d_label_model[sub_lbl].getValue( tn );
+                Trace("sep-process-debug") << "  child " << sub_index << " : " << sub_lbl << ", mval = " << lbl_mval << std::endl;
+                mvals[sub_index] = lbl_mval;
+              }
+  
+              // Now, assert model-instantiated implication based on the negation
+              Assert( d_label_model.find( s_lbl )!=d_label_model.end() );
+              std::vector< Node > conc;
+              bool inst_success = true;
+              //new refinement
+              //instantiate the label
+              std::map< Node, Node > visited;
+              Node inst = instantiateLabel( s_atom, s_lbl, s_lbl, o_b_lbl_mval, visited, d_pto_model, tn, active_lbl );
+              Trace("sep-inst-debug") << "    applied inst : " << inst << std::endl;
+              if( inst.isNull() ){
+                inst_success = false;
+              }else{
+                inst = Rewriter::rewrite( inst );
+                if( inst==( polarity ? d_true : d_false ) ){
+                  inst_success = false;
+                }
+                conc.push_back( polarity ? inst : inst.negate() );
+              }
+              if( inst_success ){
+                std::vector< Node > lemc;
+                Node pol_atom = atom;
+                if( polarity ){
+                  pol_atom = atom.negate();
+                }
+                lemc.push_back( pol_atom );
+
+                //lemc.push_back( s_lbl.eqNode( o_b_lbl_mval ).negate() );
+                //lemc.push_back( NodeManager::currentNM()->mkNode( kind::SUBSET, o_b_lbl_mval, s_lbl ).negate() );
+                lemc.insert( lemc.end(), conc.begin(), conc.end() );
+                Node lem = NodeManager::currentNM()->mkNode( kind::OR, lemc );
+                if( std::find( d_refinement_lem[s_atom][s_lbl].begin(), d_refinement_lem[s_atom][s_lbl].end(), lem )==d_refinement_lem[s_atom][s_lbl].end() ){
+                  d_refinement_lem[s_atom][s_lbl].push_back( lem );
+                  Trace("sep-process") << "-----> refinement lemma (#" << d_refinement_lem[s_atom][s_lbl].size() << ") : " << lem << std::endl;
+                  Trace("sep-lemma") << "Sep::Lemma : negated star/wand refinement : " << lem << std::endl;
+                  d_out->lemma( lem );
+                  addedLemma = true;
+                }else{
+                  //this typically should not happen, should never happen for complete base theories
+                  Trace("sep-process") << "*** repeated refinement lemma : " << lem << std::endl;
+                  Trace("sep-warn") << "TheorySep : WARNING : repeated refinement lemma : " << lem << "!!!" << std::endl;
+                }
+              }
+            }else{
+              Trace("sep-process-debug") << "  no children." << std::endl;
+              Assert( s_atom.getKind()==kind::SEP_PTO || s_atom.getKind()==kind::SEP_EMP );
+            }
+          }else{
+            Trace("sep-process-debug") << "--> inactive negated assertion " << s_atom << std::endl;
+          }
+        }
+      }
+      Trace("sep-process") << "...finished check of negated assertions, addedLemma=" << addedLemma << ", needAddLemma=" << needAddLemma << std::endl;
+    }
+    if( !addedLemma ){
+      //must witness finite data points-to
+      for( std::map< TypeNode, Node >::iterator it = d_base_label.begin(); it != d_base_label.end(); ++it ){
+        TypeNode data_type = d_loc_to_data_type[it->first];
+        //if the data type is finite
+        if( data_type.isInterpretedFinite() ){
+          computeLabelModel( it->second );
+          Trace("sep-process-debug") << "Check heap data for " << it->first << " -> " << data_type << std::endl;
+          for( unsigned j=0; j<d_label_model[it->second].d_heap_locs_model.size(); j++ ){
+            Assert( d_label_model[it->second].d_heap_locs_model[j].getKind()==kind::SINGLETON );
+            Node l = d_label_model[it->second].d_heap_locs_model[j][0];
+            Trace("sep-process-debug") << "  location : " << l << std::endl;
+            if( d_pto_model[l].isNull() ){
+              needAddLemma = true;
+              Node ll;
+              std::map< Node, Node >::iterator itm = d_tmodel.find( l );
+              if( itm!=d_tmodel.end() ) {
+                ll = itm->second;
+              }else{
+                //try to assign arbitrary skolem?
+              }
+              if( !ll.isNull() ){
+                Trace("sep-process") << "Must witness label : " << ll << ", data type is " << data_type << std::endl;
+                Node dsk = NodeManager::currentNM()->mkSkolem( "dsk", data_type, "pto-data for implicit location" );
+                // if location is in the heap, then something must point to it
+                Node lem = NodeManager::currentNM()->mkNode( kind::IMPLIES, NodeManager::currentNM()->mkNode( kind::MEMBER, ll, it->second ), 
+                                                                            NodeManager::currentNM()->mkNode( kind::SEP_STAR,
+                                                                              NodeManager::currentNM()->mkNode( kind::SEP_PTO, ll, dsk ),
+                                                                              d_true ) );
+                Trace("sep-lemma") << "Sep::Lemma : witness finite data-pto : " << lem << std::endl;
+                d_out->lemma( lem );        
+                addedLemma = true;     
+              }else{
+                //This should only happen if we are in an unbounded fragment
+                Trace("sep-warn") << "TheorySep : WARNING : no term corresponding to location " << l << " in heap!!!" << std::endl;
+              }
+            }else{
+              Trace("sep-process-debug") << "  points-to data witness : " << d_pto_model[l] << std::endl;
+            }
+          }
+        }
+      }
+      if( !addedLemma ){
+        //set up model
+        Trace("sep-process-debug") << "...preparing sep model..." << std::endl;
+        d_heap_locs_nptos.clear();
+        //collect data points that are not pointed to
+        for( context::CDList<Assertion>::const_iterator it = facts_begin(); it != facts_end(); ++ it) {
+          Node lit = (*it).assertion;
+          if( lit.getKind()==kind::NOT && lit[0].getKind()==kind::SEP_PTO ){
+            Node s_atom = lit[0];
+            Node v1 = d_valuation.getModel()->getRepresentative( s_atom[0] );
+            Node v2 = d_valuation.getModel()->getRepresentative( s_atom[1] );
+            Trace("sep-process-debug") << v1 << " does not point-to " << v2 << std::endl;
+            d_heap_locs_nptos[v1].push_back( v2 );
+          }
+        }
+        
+        if( needAddLemma ){
+          d_out->setIncomplete();
+        }
+      }
+    }
+  }
+  Trace("sep-check") << "Sep::check(): " << e << " done, conflict=" << d_conflict.get() << endl;
+}
+
+
+bool TheorySep::needsCheckLastEffort() {
+  return hasFacts();
+}
+
+Node TheorySep::getNextDecisionRequest( unsigned& priority ) {
+  for( unsigned i=0; i<d_neg_guards.size(); i++ ){
+    Node g = d_neg_guards[i];
+    bool success = true;
+    if( getLogicInfo().isQuantified() ){
+      Assert( d_guard_to_assertion.find( g )!= d_guard_to_assertion.end() );
+      Node a = d_guard_to_assertion[g];
+      Node q = quantifiers::TermDb::getInstConstAttr( a );
+      if( !q.isNull() ){
+        //must wait to decide on counterexample literal from quantified formula
+        Node cel = getQuantifiersEngine()->getTermDatabase()->getCounterexampleLiteral( q );
+        bool value;
+        if( d_valuation.hasSatValue( cel, value ) ){
+          Trace("sep-dec-debug") << "TheorySep::getNextDecisionRequest : dependent guard " << g << " depends on value for guard for quantified formula : " << value << std::endl;
+          success = value;
+        }else{
+          Trace("sep-dec-debug") << "TheorySep::getNextDecisionRequest : wait to decide on " << g << " until " << cel << " is set " << std::endl;
+          success = false;
+        }
+      }
+    }
+    if( success ){
+      bool value;
+      if( !d_valuation.hasSatValue( g, value ) ) {
+        Trace("sep-dec") << "TheorySep::getNextDecisionRequest : " << g << " (" << i << "/" << d_neg_guards.size() << ")" << std::endl;
+        priority = 0;
+        return g;
+      }
+    }
+  }
+  Trace("sep-dec-debug") << "TheorySep::getNextDecisionRequest : null" << std::endl;
+  return Node::null();
+}
+
+void TheorySep::conflict(TNode a, TNode b) {
+  Trace("sep-conflict") << "Sep::conflict : " << a << " " << b << std::endl;
+  Node conflictNode = explain(a.eqNode(b));
+  d_conflict = true;
+  d_out->conflict( conflictNode );
+}
+
+
+TheorySep::HeapAssertInfo::HeapAssertInfo( context::Context* c ) : d_pto(c), d_has_neg_pto(c,false) {
+
+}
+
+TheorySep::HeapAssertInfo * TheorySep::getOrMakeEqcInfo( Node n, bool doMake ) {
+  std::map< Node, HeapAssertInfo* >::iterator e_i = d_eqc_info.find( n );
+  if( e_i==d_eqc_info.end() ){
+    if( doMake ){
+      HeapAssertInfo* ei = new HeapAssertInfo( getSatContext() );
+      d_eqc_info[n] = ei;
+      return ei;
+    }else{
+      return NULL;
+    }
+  }else{
+    return (*e_i).second;
+  }
+}
+
+//for now, assume all constraints are for the same heap type (ensured by logic exceptions thrown in computeReferenceType2)
+TypeNode TheorySep::getReferenceType( Node n ) {
+  Assert( !d_type_ref.isNull() );
+  return d_type_ref;
+}
+
+TypeNode TheorySep::getDataType( Node n ) {
+  Assert( !d_type_data.isNull() );
+  return d_type_data;
+}
+
+//must process assertions at preprocess so that quantified assertions are processed properly
+void TheorySep::ppNotifyAssertions( std::vector< Node >& assertions ) {
+  std::map< int, std::map< Node, int > > visited;
+  std::map< int, std::map< Node, std::vector< Node > > > references;
+  std::map< int, std::map< Node, bool > > references_strict;
+  for( unsigned i=0; i<assertions.size(); i++ ){
+    Trace("sep-pp") << "Process assertion : " << assertions[i] << std::endl;
+    processAssertion( assertions[i], visited, references, references_strict, true, true, false );
+  }
+  //if data type is unconstrained, assume a fresh uninterpreted sort
+  if( !d_type_ref.isNull() ){
+    if( d_type_data.isNull() ){
+      d_type_data = NodeManager::currentNM()->mkSort("_sep_U");
+      Trace("sep-type") << "Sep: assume data type " << d_type_data << std::endl;
+      d_loc_to_data_type[d_type_ref] = d_type_data;
+    }
+  }
+}
+
+//return cardinality
+int TheorySep::processAssertion( Node n, std::map< int, std::map< Node, int > >& visited, 
+                                 std::map< int, std::map< Node, std::vector< Node > > >& references, std::map< int, std::map< Node, bool > >& references_strict,
+                                 bool pol, bool hasPol, bool underSpatial ) {
+  int index = hasPol ? ( pol ? 1 : -1 ) : 0;
+  int card = 0;
+  std::map< Node, int >::iterator it = visited[index].find( n );
+  if( it==visited[index].end() ){
+    Trace("sep-pp-debug") << "process assertion : " << n << ", index = " << index << std::endl;
+    if( n.getKind()==kind::SEP_EMP ){
+      TypeNode tn = n[0].getType();
+      TypeNode tnd = n[1].getType();
+      registerRefDataTypes( tn, tnd, n );
+      if( hasPol && pol ){
+        references[index][n].clear();
+        references_strict[index][n] = true; 
+      }else{
+        card = 1;
+      }
+    }else if( n.getKind()==kind::SEP_PTO ){
+      TypeNode tn1 = n[0].getType();
+      TypeNode tn2 = n[1].getType();
+      registerRefDataTypes( tn1, tn2, n );
+      if( quantifiers::TermDb::hasBoundVarAttr( n[0] ) ){
+        if( d_bound_kind[tn1]!=bound_strict && d_bound_kind[tn1]!=bound_invalid ){
+          if( options::quantEpr() && n[0].getKind()==kind::BOUND_VARIABLE ){
+            // still valid : bound on heap models will include Herbrand universe of n[0].getType()
+            d_bound_kind[tn1] = bound_herbrand;
+          }else{
+            d_bound_kind[tn1] = bound_invalid;
+            Trace("sep-bound") << "reference cannot be bound (due to quantified pto)." << std::endl;
+          }
+        }
+      }else{
+        references[index][n].push_back( n[0] );
+      }
+      if( hasPol && pol ){
+        references_strict[index][n] = true; 
+      }else{
+        card = 1;
+      }
+    }else{
+      bool isSpatial = n.getKind()==kind::SEP_WAND || n.getKind()==kind::SEP_STAR;
+      bool newUnderSpatial = underSpatial || isSpatial;
+      bool refStrict = isSpatial;
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        bool newHasPol, newPol;
+        QuantPhaseReq::getEntailPolarity( n, i, hasPol, pol, newHasPol, newPol );
+        int newIndex = newHasPol ? ( newPol ? 1 : -1 ) : 0;
+        int ccard = processAssertion( n[i], visited, references, references_strict, newPol, newHasPol, newUnderSpatial );
+        //update cardinality
+        if( n.getKind()==kind::SEP_STAR ){
+          card += ccard;
+        }else if( n.getKind()==kind::SEP_WAND ){
+          if( i==1 ){
+            card = ccard;
+          }
+        }else if( ccard>card ){
+          card = ccard;
+        }
+        //track references if we are or below a spatial operator
+        if( newUnderSpatial ){
+          bool add = true;
+          if( references_strict[newIndex].find( n[i] )!=references_strict[newIndex].end() ){
+            if( !isSpatial ){
+              if( references_strict[index].find( n )==references_strict[index].end() ){
+                references_strict[index][n] = true;
+              }else{
+                add = false;
+                //TODO: can derive static equality between sets
+              }
+            }
+          }else{
+            if( isSpatial ){
+              refStrict = false;
+            }
+          }
+          if( add ){
+            for( unsigned j=0; j<references[newIndex][n[i]].size(); j++ ){
+              if( std::find( references[index][n].begin(), references[index][n].end(), references[newIndex][n[i]][j] )==references[index][n].end() ){
+                references[index][n].push_back( references[newIndex][n[i]][j] );
+              }
+            }
+          }
+        }
+      }
+      if( isSpatial && refStrict ){
+        if( n.getKind()==kind::SEP_WAND ){
+          //TODO
+        }else{
+          Assert( n.getKind()==kind::SEP_STAR && hasPol && pol );
+          references_strict[index][n] = true;
+        }
+      }
+    }
+    visited[index][n] = card;
+  }else{
+    card = it->second;
+  }
+  
+  if( !underSpatial && ( !references[index][n].empty() || card>0 ) ){
+    TypeNode tn = getReferenceType( n );
+    Assert( !tn.isNull() );
+    // add references to overall type
+    unsigned bt = d_bound_kind[tn];
+    bool add = true;
+    if( references_strict[index].find( n )!=references_strict[index].end() ){
+      Trace("sep-bound") << "Strict bound found based on " << n << ", index = " << index << std::endl;
+      if( bt!=bound_strict ){
+        d_bound_kind[tn] = bound_strict;
+        //d_type_references[tn].clear();
+        d_card_max[tn] = card;
+      }else{
+        //TODO: derive static equality
+        add = false;
+      }
+    }else{
+      add = bt!=bound_strict;
+    }
+    for( unsigned i=0; i<references[index][n].size(); i++ ){
+      if( std::find( d_type_references[tn].begin(), d_type_references[tn].end(), references[index][n][i] )==d_type_references[tn].end() ){
+        d_type_references[tn].push_back( references[index][n][i] );
+      }
+    }
+    if( add ){
+      //add max cardinality
+      if( card>(int)d_card_max[tn] ){
+        d_card_max[tn] = card;
+      }
+    }
+  }
+  return card;
+}
+
+void TheorySep::registerRefDataTypes( TypeNode tn1, TypeNode tn2, Node atom ){
+  //separation logic is effectively enabled when we find at least one spatial constraint occurs in the input
+  if( options::incrementalSolving() ){
+    std::stringstream ss;
+    ss << "ERROR: cannot use separation logic in incremental mode." << std::endl;
+    throw LogicException(ss.str());
+  }
+  std::map< TypeNode, TypeNode >::iterator itt = d_loc_to_data_type.find( tn1 );
+  if( itt==d_loc_to_data_type.end() ){
+    if( !d_loc_to_data_type.empty() ){
+      TypeNode te1 = d_loc_to_data_type.begin()->first;
+      std::stringstream ss;
+      ss << "ERROR: specifying heap constraints for two different types : " << tn1 << " -> " << tn2 << " and " << te1 << " -> " << d_loc_to_data_type[te1] << std::endl;
+      throw LogicException(ss.str());
+      Assert( false );
+    }
+    if( tn2.isNull() ){
+      Trace("sep-type") << "Sep: assume location type " << tn1 << " (from " << atom << ")" << std::endl;
+    }else{
+      Trace("sep-type") << "Sep: assume location type " << tn1 << " is associated with data type " << tn2 << " (from " << atom << ")" << std::endl;
+    }
+    d_loc_to_data_type[tn1] = tn2;
+    //for now, we only allow heap constraints of one type
+    d_type_ref = tn1;
+    d_type_data = tn2;
+    d_bound_kind[tn1] = bound_default;
+  }else{
+    if( !tn2.isNull() ){
+      if( itt->second!=tn2 ){
+        if( itt->second.isNull() ){
+          Trace("sep-type") << "Sep: assume location type " << tn1 << " is associated with data type " << tn2 << " (from " << atom << ")" << std::endl;
+          //now we know data type
+          d_loc_to_data_type[tn1] = tn2;
+          d_type_data = tn2;
+        }else{
+          std::stringstream ss;
+          ss << "ERROR: location type " << tn1 << " is already associated with data type " << itt->second << ", offending atom is " << atom << " with data type " << tn2 << std::endl;
+          throw LogicException(ss.str());
+          Assert( false );
+        }
+      }
+    }
+  }
+}
+
+void TheorySep::initializeBounds() {
+  if( !d_bounds_init ){
+    Trace("sep-bound")  << "Initialize sep bounds..." << std::endl;
+    d_bounds_init = true;
+    for( std::map< TypeNode, TypeNode >::iterator it = d_loc_to_data_type.begin(); it != d_loc_to_data_type.end(); ++it ){
+      TypeNode tn = it->first;
+      Trace("sep-bound")  << "Initialize bounds for " << tn << "..." << std::endl;
+      QuantEPR * qepr = getLogicInfo().isQuantified() ? getQuantifiersEngine()->getQuantEPR() : NULL;
+      //if pto had free variable reference      
+      if( d_bound_kind[tn]==bound_herbrand ){
+        //include Herbrand universe of tn
+        if( qepr && qepr->isEPR( tn ) ){
+          for( unsigned j=0; j<qepr->d_consts[tn].size(); j++ ){
+            Node k = qepr->d_consts[tn][j];
+            if( std::find( d_type_references[tn].begin(), d_type_references[tn].end(), k )==d_type_references[tn].end() ){
+              d_type_references[tn].push_back( k );
+            }
+          }
+        }else{
+          d_bound_kind[tn] = bound_invalid;
+          Trace("sep-bound") << "reference cannot be bound (due to non-EPR variable)." << std::endl;
+        }
+      }
+      unsigned n_emp = 0;
+      if( d_bound_kind[tn] != bound_invalid ){
+        n_emp = d_card_max[tn];  
+      }else if( d_type_references[tn].empty() ){
+        //must include at least one constant TODO: remove?
+        n_emp = 1;
+      }
+      Trace("sep-bound") << "Cardinality element size : " << d_card_max[tn] << std::endl;
+      Trace("sep-bound") << "Type reference size : " << d_type_references[tn].size() << std::endl;
+      Trace("sep-bound") << "Constructing " << n_emp << " cardinality constants." << std::endl;
+      for( unsigned r=0; r<n_emp; r++ ){
+        Node e = NodeManager::currentNM()->mkSkolem( "e", tn, "cardinality bound element for seplog" );
+        d_type_references_card[tn].push_back( e );
+        d_type_ref_card_id[e] = r;
+        //must include this constant back into EPR handling
+        if( qepr && qepr->isEPR( tn ) ){
+          qepr->addEPRConstant( tn, e );
+        }
+      }
+      //EPR must include nil ref    
+      if( qepr && qepr->isEPR( tn ) ){
+        Node nr = getNilRef( tn );
+        if( !qepr->isEPRConstant( tn, nr ) ){
+          qepr->addEPRConstant( tn, nr );
+        }
+      }      
+    }
+  }
+}
+
+Node TheorySep::getBaseLabel( TypeNode tn ) {
+  std::map< TypeNode, Node >::iterator it = d_base_label.find( tn );
+  if( it==d_base_label.end() ){
+    initializeBounds();
+    Trace("sep") << "Make base label for " << tn << std::endl;
+    std::stringstream ss;
+    ss << "__Lb";
+    TypeNode ltn = NodeManager::currentNM()->mkSetType(tn);
+    //TypeNode ltn = NodeManager::currentNM()->mkSetType(NodeManager::currentNM()->mkRefType(tn));
+    Node n_lbl = NodeManager::currentNM()->mkSkolem( ss.str(), ltn, "base label" );
+    d_base_label[tn] = n_lbl;
+    //make reference bound
+    Trace("sep") << "Make reference bound label for " << tn << std::endl;
+    std::stringstream ss2;
+    ss2 << "__Lu";
+    d_reference_bound[tn] = NodeManager::currentNM()->mkSkolem( ss2.str(), ltn, "" );
+    d_type_references_all[tn].insert( d_type_references_all[tn].end(), d_type_references[tn].begin(), d_type_references[tn].end() );
+
+    //check whether monotonic (elements can be added to tn without effecting satisfiability)
+    bool tn_is_monotonic = true;
+    if( tn.isSort() ){
+      //TODO: use monotonicity inference
+      tn_is_monotonic = !getLogicInfo().isQuantified();
+    }else{
+      tn_is_monotonic = tn.getCardinality().isInfinite();
+    }
+    //add a reference type for maximum occurrences of empty in a constraint
+    if( options::sepDisequalC() && tn_is_monotonic ){
+      for( unsigned r=0; r<d_type_references_card[tn].size(); r++ ){
+        Node e = d_type_references_card[tn][r];
+        //ensure that it is distinct from all other references so far
+        for( unsigned j=0; j<d_type_references_all[tn].size(); j++ ){
+          Node eq = NodeManager::currentNM()->mkNode( kind::EQUAL, e, d_type_references_all[tn][j] );
+          d_out->lemma( eq.negate() );
+        }
+        d_type_references_all[tn].push_back( e );
+      }
+    }else{
+      //break symmetries TODO
+    
+      d_type_references_all[tn].insert( d_type_references_all[tn].end(), d_type_references_card[tn].begin(), d_type_references_card[tn].end() );
+    }
+    //Assert( !d_type_references_all[tn].empty() );
+    
+    if( d_bound_kind[tn]!=bound_invalid ){      
+      //construct bound
+      d_reference_bound_max[tn] = mkUnion( tn, d_type_references_all[tn] );
+      Trace("sep-bound") << "overall bound for " << d_base_label[tn] << " : " << d_reference_bound_max[tn] << std::endl;
+
+      Node slem = NodeManager::currentNM()->mkNode( kind::SUBSET, d_base_label[tn], d_reference_bound_max[tn] );
+      Trace("sep-lemma") << "Sep::Lemma: reference bound for " << tn << " : " << slem << std::endl;
+      d_out->lemma( slem );
+      //slem = NodeManager::currentNM()->mkNode( kind::SUBSET, d_base_label[tn], d_reference_bound_max[tn] );
+      //Trace("sep-lemma") << "Sep::Lemma: base reference bound for " << tn << " : " << slem << std::endl;
+      //d_out->lemma( slem );
+      
+      //symmetry breaking
+      if( d_type_references_card[tn].size()>1 ){
+        std::map< unsigned, Node > lit_mem_map;
+        for( unsigned i=0; i<d_type_references_card[tn].size(); i++ ){
+          lit_mem_map[i] = NodeManager::currentNM()->mkNode( kind::MEMBER, d_type_references_card[tn][i], d_reference_bound_max[tn]);
+        }
+        for( unsigned i=0; i<(d_type_references_card[tn].size()-1); i++ ){
+          std::vector< Node > children;
+          for( unsigned j=(i+1); j<d_type_references_card[tn].size(); j++ ){
+            children.push_back( lit_mem_map[j].negate() );
+          }
+          if( !children.empty() ){
+            Node sym_lem = children.size()==1 ? children[0] : NodeManager::currentNM()->mkNode( kind::AND, children );
+            sym_lem = NodeManager::currentNM()->mkNode( kind::IMPLIES, lit_mem_map[i].negate(), sym_lem );
+            Trace("sep-lemma") << "Sep::Lemma: symmetry breaking lemma : " << sym_lem << std::endl;
+            d_out->lemma( sym_lem );
+          }
+        }
+      }
+    }
+    
+    //assert that nil ref is not in base label
+    Node nr = getNilRef( tn );
+    Node nrlem = NodeManager::currentNM()->mkNode( kind::MEMBER, nr, n_lbl ).negate();
+    Trace("sep-lemma") << "Sep::Lemma: sep.nil not in base label " << tn << " : " << nrlem << std::endl;
+    d_out->lemma( nrlem );
+    
+    return n_lbl;
+  }else{
+    return it->second;
+  }
+}
+
+Node TheorySep::getNilRef( TypeNode tn ) {
+  std::map< TypeNode, Node >::iterator it = d_nil_ref.find( tn );
+  if( it==d_nil_ref.end() ){
+    Node nil = NodeManager::currentNM()->mkUniqueVar( tn, kind::SEP_NIL );
+    setNilRef( tn, nil );
+    return nil;
+  }else{
+    return it->second;
+  }
+}
+
+void TheorySep::setNilRef( TypeNode tn, Node n ) {
+  Assert( n.getType()==tn );
+  d_nil_ref[tn] = n;
+}
+
+Node TheorySep::mkUnion( TypeNode tn, std::vector< Node >& locs ) {
+  Node u;
+  if( locs.empty() ){
+    TypeNode ltn = NodeManager::currentNM()->mkSetType(tn);
+    return NodeManager::currentNM()->mkConst(EmptySet(ltn.toType()));
+  }else{
+    for( unsigned i=0; i<locs.size(); i++ ){
+      Node s = locs[i];
+      Assert( !s.isNull() );
+      s = NodeManager::currentNM()->mkNode( kind::SINGLETON, s );
+      if( u.isNull() ){
+        u = s;
+      }else{
+        u = NodeManager::currentNM()->mkNode( kind::UNION, s, u );
+      }
+    }
+    return u;
+  }
+}
+
+Node TheorySep::getLabel( Node atom, int child, Node lbl ) {
+  std::map< int, Node >::iterator it = d_label_map[atom][lbl].find( child );
+  if( it==d_label_map[atom][lbl].end() ){
+    TypeNode refType = getReferenceType( atom );
+    std::stringstream ss;
+    ss << "__Lc" << child;
+    TypeNode ltn = NodeManager::currentNM()->mkSetType(refType);
+    //TypeNode ltn = NodeManager::currentNM()->mkSetType(NodeManager::currentNM()->mkRefType(refType));
+    Node n_lbl = NodeManager::currentNM()->mkSkolem( ss.str(), ltn, "sep label" );
+    d_label_map[atom][lbl][child] = n_lbl;
+    d_label_map_parent[n_lbl] = lbl;
+    return n_lbl;
+  }else{
+    return (*it).second;
+  }
+}
+
+Node TheorySep::applyLabel( Node n, Node lbl, std::map< Node, Node >& visited ) {
+  Assert( n.getKind()!=kind::SEP_LABEL );
+  if( n.getKind()==kind::SEP_STAR || n.getKind()==kind::SEP_WAND || n.getKind()==kind::SEP_PTO || n.getKind()==kind::SEP_EMP ){
+    return NodeManager::currentNM()->mkNode( kind::SEP_LABEL, n, lbl );
+  }else if( !n.getType().isBoolean() || n.getNumChildren()==0 ){
+    return n;
+  }else{
+    std::map< Node, Node >::iterator it = visited.find( n );
+    if( it==visited.end() ){
+      std::vector< Node > children;
+      if (n.getMetaKind() == kind::metakind::PARAMETERIZED) {
+        children.push_back( n.getOperator() );
+      }
+      bool childChanged = false;
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        Node aln = applyLabel( n[i], lbl, visited );
+        children.push_back( aln );
+        childChanged = childChanged || aln!=n[i];
+      }
+      Node ret = n;
+      if( childChanged ){
+        ret = NodeManager::currentNM()->mkNode( n.getKind(), children );
+      }
+      visited[n] = ret;
+      return ret;
+    }else{
+      return it->second;
+    }
+  }
+}
+
+Node TheorySep::instantiateLabel( Node n, Node o_lbl, Node lbl, Node lbl_v, std::map< Node, Node >& visited, std::map< Node, Node >& pto_model, 
+                                  TypeNode rtn, std::map< Node, bool >& active_lbl, unsigned ind ) {
+  Trace("sep-inst-debug") << "Instantiate label " << n << " " << lbl << " " << lbl_v << std::endl;
+  if( options::sepMinimalRefine() && lbl!=o_lbl && active_lbl.find( lbl )!=active_lbl.end() ){
+    Trace("sep-inst") << "...do not instantiate " << o_lbl << " since it has an active sublabel " << lbl << std::endl;
+    return Node::null();
+  }else{
+    if( Trace.isOn("sep-inst") ){
+      if( n.getKind()==kind::SEP_STAR || n.getKind()==kind::SEP_WAND  || n.getKind()==kind::SEP_PTO || n.getKind()==kind::SEP_EMP ){
+        for( unsigned j=0; j<ind; j++ ){ Trace("sep-inst") << "  "; }
+        Trace("sep-inst") << n << "[" << lbl << "] :: " << lbl_v << std::endl;
+      }
+    }
+    Assert( n.getKind()!=kind::SEP_LABEL );
+    if( n.getKind()==kind::SEP_STAR || n.getKind()==kind::SEP_WAND ){
+      if( lbl==o_lbl ){
+        std::vector< Node > children;
+        children.resize( n.getNumChildren() );
+        Assert( d_label_map[n].find( lbl )!=d_label_map[n].end() );
+        std::map< int, Node > mvals;
+        for( std::map< int, Node >::iterator itl = d_label_map[n][lbl].begin(); itl != d_label_map[n][lbl].end(); ++itl ){
+          Node sub_lbl = itl->second;
+          int sub_index = itl->first;
+          Assert( sub_index>=0 && sub_index<(int)children.size() );
+          Trace("sep-inst-debug") << "Sublabel " << sub_index << " is " << sub_lbl << std::endl;
+          Node lbl_mval;
+          if( n.getKind()==kind::SEP_WAND && sub_index==1 ){
+            Assert( d_label_map[n][lbl].find( 0 )!=d_label_map[n][lbl].end() );
+            Node sub_lbl_0 = d_label_map[n][lbl][0];
+            computeLabelModel( sub_lbl_0 );
+            Assert( d_label_model.find( sub_lbl_0 )!=d_label_model.end() );
+            lbl_mval = NodeManager::currentNM()->mkNode( kind::UNION, lbl, d_label_model[sub_lbl_0].getValue( rtn ) );
+          }else{
+            computeLabelModel( sub_lbl );
+            Assert( d_label_model.find( sub_lbl )!=d_label_model.end() );
+            lbl_mval = d_label_model[sub_lbl].getValue( rtn );
+          }
+          Trace("sep-inst-debug") << "Sublabel value is " << lbl_mval  << std::endl;
+          mvals[sub_index] = lbl_mval;
+          children[sub_index] = instantiateLabel( n[sub_index], o_lbl, sub_lbl, lbl_mval, visited, pto_model, rtn, active_lbl, ind+1 );
+          if( children[sub_index].isNull() ){
+            return Node::null();
+          }
+        }
+        Node empSet = NodeManager::currentNM()->mkConst(EmptySet(rtn.toType()));
+        if( n.getKind()==kind::SEP_STAR ){
+
+          //disjoint contraints
+          std::vector< Node > conj;
+          std::vector< Node > bchildren;
+          bchildren.insert( bchildren.end(), children.begin(), children.end() );
+          Node vsu;
+          std::vector< Node > vs;
+          for( std::map< int, Node >::iterator itl = d_label_map[n][lbl].begin(); itl != d_label_map[n][lbl].end(); ++itl ){
+            Node sub_lbl = itl->second;
+            Node lbl_mval = d_label_model[sub_lbl].getValue( rtn );
+            for( unsigned j=0; j<vs.size(); j++ ){
+              bchildren.push_back( NodeManager::currentNM()->mkNode( kind::INTERSECTION, lbl_mval, vs[j] ).eqNode( empSet ) );
+            }
+            vs.push_back( lbl_mval );
+            if( vsu.isNull() ){
+              vsu = lbl_mval;
+            }else{
+              vsu = NodeManager::currentNM()->mkNode( kind::UNION, vsu, lbl_mval );
+            }
+          }
+          bchildren.push_back( vsu.eqNode( lbl ) );
+          
+          Assert( bchildren.size()>1 );
+          conj.push_back( NodeManager::currentNM()->mkNode( kind::AND, bchildren ) );
+
+          if( options::sepChildRefine() ){
+            //child-specific refinements (TODO: use ?)
+            for( unsigned i=0; i<children.size(); i++ ){
+              std::vector< Node > tchildren;
+              Node mval = mvals[i];
+              tchildren.push_back( NodeManager::currentNM()->mkNode( kind::SUBSET, mval, lbl ) );            
+              tchildren.push_back( children[i] );
+              std::vector< Node > rem_children;
+              for( unsigned j=0; j<children.size(); j++ ){
+                if( j!=i ){
+                  rem_children.push_back( n[j] );
+                }
+              }
+              std::map< Node, Node > rvisited;
+              Node rem = rem_children.size()==1 ? rem_children[0] : NodeManager::currentNM()->mkNode( kind::SEP_STAR, rem_children );
+              rem = applyLabel( rem, NodeManager::currentNM()->mkNode( kind::SETMINUS, lbl, mval ), rvisited );
+              tchildren.push_back( rem );
+              conj.push_back( NodeManager::currentNM()->mkNode( kind::AND, tchildren ) );
+            }
+          }
+          return conj.size()==1 ? conj[0] : NodeManager::currentNM()->mkNode( kind::OR, conj );
+        }else{
+          std::vector< Node > wchildren;
+          //disjoint constraints
+          Node sub_lbl_0 = d_label_map[n][lbl][0];
+          Node lbl_mval_0 = d_label_model[sub_lbl_0].getValue( rtn );
+          wchildren.push_back( NodeManager::currentNM()->mkNode( kind::INTERSECTION, lbl_mval_0, lbl ).eqNode( empSet ).negate() );
+          
+          //return the lemma
+          wchildren.push_back( children[0].negate() );
+          wchildren.push_back( children[1] );
+          return NodeManager::currentNM()->mkNode( kind::OR, wchildren );
+        }
+      }else{
+        //nested star/wand, label it and return
+        return NodeManager::currentNM()->mkNode( kind::SEP_LABEL, n, lbl_v );
+      }
+    }else if( n.getKind()==kind::SEP_PTO ){
+      //check if this pto reference is in the base label, if not, then it does not need to be added as an assumption
+      Assert( d_label_model.find( o_lbl )!=d_label_model.end() );
+      Node vr = d_valuation.getModel()->getRepresentative( n[0] );
+      Node svr = NodeManager::currentNM()->mkNode( kind::SINGLETON, vr );
+      bool inBaseHeap = std::find( d_label_model[o_lbl].d_heap_locs_model.begin(), d_label_model[o_lbl].d_heap_locs_model.end(), svr )!=d_label_model[o_lbl].d_heap_locs_model.end();
+      Trace("sep-inst-debug") << "Is in base (non-instantiating) heap : " << inBaseHeap << " for value ref " << vr << " in " << o_lbl << std::endl;
+      std::vector< Node > children;
+      if( inBaseHeap ){
+        Node s = NodeManager::currentNM()->mkNode( kind::SINGLETON, n[0] );
+        children.push_back( NodeManager::currentNM()->mkNode( kind::SEP_LABEL, NodeManager::currentNM()->mkNode( kind::SEP_PTO, n[0], n[1] ), s ) );
+      }else{
+        //look up value of data
+        std::map< Node, Node >::iterator it = pto_model.find( vr );
+        if( it!=pto_model.end() ){
+          if( n[1]!=it->second ){
+            children.push_back( NodeManager::currentNM()->mkNode( kind::EQUAL, n[1], it->second ) );
+          }
+        }else{
+          Trace("sep-inst-debug") << "Data for " << vr << " was not specified, do not add condition." << std::endl;
+        }
+      } 
+      children.push_back( NodeManager::currentNM()->mkNode( kind::EQUAL, NodeManager::currentNM()->mkNode( kind::SINGLETON, n[0] ), lbl_v ) );
+      Node ret = children.empty() ? NodeManager::currentNM()->mkConst( true ) : ( children.size()==1 ? children[0] : NodeManager::currentNM()->mkNode( kind::AND, children ) );
+      Trace("sep-inst-debug") << "Return " << ret << std::endl;
+      return ret;
+    }else if( n.getKind()==kind::SEP_EMP ){
+      //return NodeManager::currentNM()->mkConst( lbl_v.getKind()==kind::EMPTYSET );
+      return lbl_v.eqNode( NodeManager::currentNM()->mkConst(EmptySet(lbl_v.getType().toType())) );
+    }else{
+      std::map< Node, Node >::iterator it = visited.find( n );
+      if( it==visited.end() ){
+        std::vector< Node > children;
+        if (n.getMetaKind() == kind::metakind::PARAMETERIZED) {
+          children.push_back( n.getOperator() );
+        }
+        bool childChanged = false;
+        for( unsigned i=0; i<n.getNumChildren(); i++ ){
+          Node aln = instantiateLabel( n[i], o_lbl, lbl, lbl_v, visited, pto_model, rtn, active_lbl, ind );
+          if( aln.isNull() ){
+            return Node::null();
+          }else{
+            children.push_back( aln );
+            childChanged = childChanged || aln!=n[i];
+          }
+        }
+        Node ret = n;
+        if( childChanged ){
+          ret = NodeManager::currentNM()->mkNode( n.getKind(), children );
+        }
+        //careful about caching
+        //visited[n] = ret;
+        return ret;
+      }else{
+        return it->second;
+      }
+    }
+  }
+}
+
+void TheorySep::setInactiveAssertionRec( Node fact, std::map< Node, std::vector< Node > >& lbl_to_assertions, std::map< Node, bool >& assert_active ) {
+  Trace("sep-process-debug") << "setInactiveAssertionRec::inactive : " << fact << std::endl;
+  assert_active[fact] = false;
+  bool polarity = fact.getKind() != kind::NOT;
+  TNode atom = polarity ? fact : fact[0];
+  TNode s_atom = atom[0];
+  TNode s_lbl = atom[1];
+  if( s_atom.getKind()==kind::SEP_WAND || s_atom.getKind()==kind::SEP_STAR ){
+    for( unsigned j=0; j<s_atom.getNumChildren(); j++ ){
+      Node lblc = getLabel( s_atom, j, s_lbl );
+      for( unsigned k=0; k<lbl_to_assertions[lblc].size(); k++ ){
+        setInactiveAssertionRec( lbl_to_assertions[lblc][k], lbl_to_assertions, assert_active );
+      }
+    }
+  }
+}
+
+void TheorySep::getLabelChildren( Node s_atom, Node lbl, std::vector< Node >& children, std::vector< Node >& labels ) {
+  for( unsigned i=0; i<s_atom.getNumChildren(); i++ ){
+    Node lblc = getLabel( s_atom, i, lbl );
+    Assert( !lblc.isNull() );
+    std::map< Node, Node > visited;
+    Node lc = applyLabel( s_atom[i], lblc, visited );
+    Assert( !lc.isNull() );
+    if( i==1 && s_atom.getKind()==kind::SEP_WAND ){
+      lc = lc.negate();
+    }
+    children.push_back( lc );
+    labels.push_back( lblc );
+  }
+  Assert( children.size()>1 );
+}
+
+void TheorySep::computeLabelModel( Node lbl ) {
+  if( !d_label_model[lbl].d_computed ){
+    d_label_model[lbl].d_computed = true;
+
+    //we must get the value of lbl from the model: this is being run at last call, after the model is constructed
+    //Assert(...); TODO
+    Node v_val = d_valuation.getModel()->getRepresentative( lbl );
+    Trace("sep-process") << "Model value (from valuation) for " << lbl << " : " << v_val << std::endl;
+    if( v_val.getKind()!=kind::EMPTYSET ){
+      while( v_val.getKind()==kind::UNION ){
+        Assert( v_val[1].getKind()==kind::SINGLETON );
+        d_label_model[lbl].d_heap_locs_model.push_back( v_val[1] );
+        v_val = v_val[0];
+      }
+      if( v_val.getKind()==kind::SINGLETON ){
+        d_label_model[lbl].d_heap_locs_model.push_back( v_val );
+      }else{
+        throw Exception("Could not establish value of heap in model.");
+        Assert( false );
+      }
+    }
+    for( unsigned j=0; j<d_label_model[lbl].d_heap_locs_model.size(); j++ ){
+      Node u = d_label_model[lbl].d_heap_locs_model[j];
+      Assert( u.getKind()==kind::SINGLETON );
+      u = u[0];
+      Node tt;
+      std::map< Node, Node >::iterator itm = d_tmodel.find( u );
+      if( itm==d_tmodel.end() ) {
+        //Trace("sep-process") << "WARNING: could not find symbolic term in model for " << u << std::endl;
+        //Assert( false );
+        //tt = u;
+        //TypeNode tn = u.getType().getRefConstituentType();
+        TypeNode tn = u.getType();
+        Trace("sep-process") << "WARNING: could not find symbolic term in model for " << u << ", cref type " << tn << std::endl;
+        Assert( d_type_references_all.find( tn )!=d_type_references_all.end() );
+        Assert( !d_type_references_all[tn].empty() );
+        tt = d_type_references_all[tn][0];
+      }else{
+        tt = itm->second;
+      }
+      Node stt = NodeManager::currentNM()->mkNode( kind::SINGLETON, tt );
+      Trace("sep-process-debug") << "...model : add " << tt << " for " << u << " in lbl " << lbl << std::endl;
+      d_label_model[lbl].d_heap_locs.push_back( stt );
+    }
+  }
+}
+
+Node TheorySep::getRepresentative( Node t ) {
+  if( d_equalityEngine.hasTerm( t ) ){
+    return d_equalityEngine.getRepresentative( t );
+  }else{
+    return t;
+  }
+}
+
+bool TheorySep::hasTerm( Node a ){
+  return d_equalityEngine.hasTerm( a );
+}
+
+bool TheorySep::areEqual( Node a, Node b ){
+  if( a==b ){
+    return true;
+  }else if( hasTerm( a ) && hasTerm( b ) ){
+    return d_equalityEngine.areEqual( a, b );
+  }else{
+    return false;
+  }
+}
+
+bool TheorySep::areDisequal( Node a, Node b ){
+  if( a==b ){
+    return false;
+  }else if( hasTerm( a ) && hasTerm( b ) ){
+    if( d_equalityEngine.areDisequal( a, b, false ) ){
+      return true;
+    }
+  }
+  return false;
+}
+
+
+void TheorySep::eqNotifyPreMerge(TNode t1, TNode t2) {
+
+}
+
+void TheorySep::eqNotifyPostMerge(TNode t1, TNode t2) {
+  HeapAssertInfo * e2 = getOrMakeEqcInfo( t2, false );
+  if( e2 && ( !e2->d_pto.get().isNull() || e2->d_has_neg_pto.get() ) ){
+    HeapAssertInfo * e1 = getOrMakeEqcInfo( t1, true );
+    if( !e2->d_pto.get().isNull() ){
+      if( !e1->d_pto.get().isNull() ){
+        Trace("sep-pto-debug") << "While merging " << t1 << " " << t2 << ", merge pto." << std::endl;
+        mergePto( e1->d_pto.get(), e2->d_pto.get() );
+      }else{
+        e1->d_pto.set( e2->d_pto.get() );
+      }
+    }
+    e1->d_has_neg_pto.set( e1->d_has_neg_pto.get() || e2->d_has_neg_pto.get() );
+    //validate
+    validatePto( e1, t1 );
+  }
+}
+
+void TheorySep::validatePto( HeapAssertInfo * ei, Node ei_n ) {
+  if( !ei->d_pto.get().isNull() && ei->d_has_neg_pto.get() ){
+    for( NodeList::const_iterator i = d_spatial_assertions.begin(); i != d_spatial_assertions.end(); ++i ) {
+      Node fact = (*i);
+      bool polarity = fact.getKind() != kind::NOT;
+      if( !polarity ){
+        TNode atom = polarity ? fact : fact[0];
+        Assert( atom.getKind()==kind::SEP_LABEL );
+        TNode s_atom = atom[0];
+        if( s_atom.getKind()==kind::SEP_PTO ){
+          if( areEqual( atom[1], ei_n ) ){
+            addPto( ei, ei_n, atom, false );
+          }
+        }
+      }
+    }
+    //we have now processed all pending negated pto
+    ei->d_has_neg_pto.set( false );
+  }
+}
+
+void TheorySep::addPto( HeapAssertInfo * ei, Node ei_n, Node p, bool polarity ) {
+  Trace("sep-pto") << "Add pto " << p << ", pol = " << polarity << " to eqc " << ei_n << std::endl;
+  if( !ei->d_pto.get().isNull() ){
+    if( polarity ){
+      Trace("sep-pto-debug") << "...eqc " << ei_n << " already has pto " << ei->d_pto.get() << ", merge." << std::endl;
+      mergePto( ei->d_pto.get(), p );
+    }else{
+      Node pb = ei->d_pto.get();
+      Trace("sep-pto") << "Process positive/negated pto " << " " << pb << " " << p << std::endl;
+      Assert( pb.getKind()==kind::SEP_LABEL && pb[0].getKind()==kind::SEP_PTO );
+      Assert( p.getKind()==kind::SEP_LABEL && p[0].getKind()==kind::SEP_PTO );
+      Assert( areEqual( pb[1], p[1] ) );
+      std::vector< Node > exp;
+      if( pb[1]!=p[1] ){
+        //if( pb[1].getKind()==kind::SINGLETON && p[1].getKind()==kind::SINGLETON ){
+        //  exp.push_back( pb[1][0].eqNode( p[1][0] ) );
+        //}else{
+        exp.push_back( pb[1].eqNode( p[1] ) );
+        //}
+      }
+      exp.push_back( pb );
+      exp.push_back( p.negate() );
+      std::vector< Node > conc;
+      if( pb[0][1]!=p[0][1] ){
+        conc.push_back( pb[0][1].eqNode( p[0][1] ).negate() );
+      }
+      //if( pb[1]!=p[1] ){
+      //  conc.push_back( pb[1].eqNode( p[1] ).negate() );
+      //}
+      Node n_conc = conc.empty() ? d_false : ( conc.size()==1 ? conc[0] : NodeManager::currentNM()->mkNode( kind::OR, conc ) );
+      Trace("sep-pto")  << "Conclusion is " << n_conc << std::endl;
+      // propagation for (pto x y) ^ ~(pto z w) ^ x = z => y != w
+      sendLemma( exp, n_conc, "PTO_NEG_PROP" );
+    }
+  }else{
+    if( polarity ){
+      ei->d_pto.set( p );
+      validatePto( ei, ei_n );
+    }else{
+      ei->d_has_neg_pto.set( true );
+    }
+  }
+}
+
+void TheorySep::mergePto( Node p1, Node p2 ) {
+  Trace("sep-lemma-debug") << "Merge pto " << p1 << " " << p2 << std::endl;
+  Assert( p1.getKind()==kind::SEP_LABEL && p1[0].getKind()==kind::SEP_PTO );
+  Assert( p2.getKind()==kind::SEP_LABEL && p2[0].getKind()==kind::SEP_PTO );
+  if( !areEqual( p1[0][1], p2[0][1] ) ){
+    std::vector< Node > exp;
+    if( p1[1]!=p2[1] ){
+      Assert( areEqual( p1[1], p2[1] ) );
+      exp.push_back( p1[1].eqNode( p2[1] ) );
+    }
+    exp.push_back( p1 );
+    exp.push_back( p2 );
+    //enforces injectiveness of pto : (pto x y) ^ (pto y w) ^ x = y => y = w
+    sendLemma( exp, p1[0][1].eqNode( p2[0][1] ), "PTO_PROP" );
+  }
+}
+
+void TheorySep::sendLemma( std::vector< Node >& ant, Node conc, const char * c, bool infer ) {
+  Trace("sep-lemma-debug") << "Do rewrite on inference : " << conc << std::endl;
+  conc = Rewriter::rewrite( conc );
+  Trace("sep-lemma-debug") << "Got : " << conc << std::endl;
+  if( conc!=d_true ){
+    if( infer && conc!=d_false ){
+      Node ant_n;
+      if( ant.empty() ){
+        ant_n = d_true;
+      }else if( ant.size()==1 ){
+        ant_n = ant[0];
+      }else{
+        ant_n = NodeManager::currentNM()->mkNode( kind::AND, ant );
+      }
+      Trace("sep-lemma") << "Sep::Infer: " << conc << " from " << ant_n << " by " << c << std::endl;
+      d_pending_exp.push_back( ant_n );
+      d_pending.push_back( conc );
+      d_infer.push_back( ant_n );
+      d_infer_exp.push_back( conc );
+    }else{
+      std::vector< TNode > ant_e;
+      for( unsigned i=0; i<ant.size(); i++ ){
+        Trace("sep-lemma-debug") << "Explain : " << ant[i] << std::endl;
+        explain( ant[i], ant_e );
+      }
+      Node ant_n;
+      if( ant_e.empty() ){
+        ant_n = d_true;
+      }else if( ant_e.size()==1 ){
+        ant_n = ant_e[0];
+      }else{
+        ant_n = NodeManager::currentNM()->mkNode( kind::AND, ant_e );
+      }
+      if( conc==d_false ){
+        Trace("sep-lemma") << "Sep::Conflict: " << ant_n << " by " << c << std::endl;
+        d_out->conflict( ant_n );
+        d_conflict = true;
+      }else{
+        Trace("sep-lemma") << "Sep::Lemma: " << conc << " from " << ant_n << " by " << c << std::endl;
+        d_pending_exp.push_back( ant_n );
+        d_pending.push_back( conc );
+        d_pending_lem.push_back( d_pending.size()-1 );
+      }
+    }
+  }
+}
+
+void TheorySep::doPendingFacts() {
+  if( d_pending_lem.empty() ){
+    for( unsigned i=0; i<d_pending.size(); i++ ){
+      if( d_conflict ){
+        break;
+      }
+      Node atom = d_pending[i].getKind()==kind::NOT ? d_pending[i][0] : d_pending[i];
+      bool pol = d_pending[i].getKind()!=kind::NOT;
+      Trace("sep-pending") << "Sep : Assert to EE : " << atom << ", pol = " << pol << std::endl;
+      if( atom.getKind()==kind::EQUAL ){
+        d_equalityEngine.assertEquality(atom, pol, d_pending_exp[i]);
+      }else{
+        d_equalityEngine.assertPredicate(atom, pol, d_pending_exp[i]);
+      }
+    }
+  }else{
+    for( unsigned i=0; i<d_pending_lem.size(); i++ ){
+      if( d_conflict ){
+        break;
+      }
+      int index = d_pending_lem[i];
+      Node lem = NodeManager::currentNM()->mkNode( kind::IMPLIES, d_pending_exp[index], d_pending[index] );
+      if( d_lemmas_produced_c.find( lem )==d_lemmas_produced_c.end() ){
+        d_lemmas_produced_c.insert( lem );
+        d_out->lemma( lem );
+        Trace("sep-pending") << "Sep : Lemma : " << lem << std::endl;
+      }
+    }
+  }
+  d_pending_exp.clear();
+  d_pending.clear();
+  d_pending_lem.clear();
+}
+
+void TheorySep::debugPrintHeap( HeapInfo& heap, const char * c ) {
+  Trace(c) << "[" << std::endl;
+  Trace(c) << "  ";
+  for( unsigned j=0; j<heap.d_heap_locs.size(); j++ ){
+    Trace(c) << heap.d_heap_locs[j] << " ";
+  }
+  Trace(c) << std::endl;
+  Trace(c) << "]" << std::endl;
+}
+
+Node TheorySep::HeapInfo::getValue( TypeNode tn ) {
+  Assert( d_heap_locs.size()==d_heap_locs_model.size() );
+  if( d_heap_locs.empty() ){
+    return NodeManager::currentNM()->mkConst(EmptySet(tn.toType()));
+  }else if( d_heap_locs.size()==1 ){
+    return d_heap_locs[0];
+  }else{
+    Node curr = NodeManager::currentNM()->mkNode( kind::UNION, d_heap_locs[0], d_heap_locs[1] );
+    for( unsigned j=2; j<d_heap_locs.size(); j++ ){
+      curr = NodeManager::currentNM()->mkNode( kind::UNION, curr, d_heap_locs[j] );
+    }
+    return curr;
+  }
+}
+
+}/* CVC4::theory::sep namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/sep/theory_sep.h b/src/theory/sep/theory_sep.h
new file mode 100644
index 0000000..816f91c
--- /dev/null
+++ b/src/theory/sep/theory_sep.h
@@ -0,0 +1,315 @@
+/*********************                                                        */
+/*! \file theory_sep.h
+ ** \verbatim
+ ** Original author: Andrew Reynolds
+ ** Major contributors: Dejan Jovanovic, Clark Barrett
+ ** Minor contributors (to current version): Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2014  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.\endverbatim
+ **
+ ** \brief Theory of sep
+ **
+ ** Theory of sep.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__SEP__THEORY_SEP_H
+#define __CVC4__THEORY__SEP__THEORY_SEP_H
+
+#include "theory/theory.h"
+#include "util/statistics_registry.h"
+#include "theory/uf/equality_engine.h"
+#include "context/cdchunk_list.h"
+#include "context/cdhashmap.h"
+#include "context/cdhashset.h"
+#include "context/cdqueue.h"
+
+namespace CVC4 {
+namespace theory {
+
+class TheoryModel;
+
+namespace sep {
+
+class TheorySep : public Theory {
+  typedef context::CDChunkList<Node> NodeList;
+  typedef context::CDHashSet<Node, NodeHashFunction> NodeSet;
+  typedef context::CDHashMap<Node, Node, NodeHashFunction> NodeNodeMap;
+
+  /////////////////////////////////////////////////////////////////////////////
+  // MISC
+  /////////////////////////////////////////////////////////////////////////////
+
+  private:
+  /** all lemmas sent */
+  NodeSet d_lemmas_produced_c;
+
+  /** True node for predicates = true */
+  Node d_true;
+
+  /** True node for predicates = false */
+  Node d_false;
+  
+  //whether bounds have been initialized
+  bool d_bounds_init;
+
+  Node mkAnd( std::vector< TNode >& assumptions );
+
+  int processAssertion( Node n, std::map< int, std::map< Node, int > >& visited, 
+                        std::map< int, std::map< Node, std::vector< Node > > >& references, std::map< int, std::map< Node, bool > >& references_strict,
+                        bool pol, bool hasPol, bool underSpatial );
+
+  public:
+
+  TheorySep(context::Context* c, context::UserContext* u, OutputChannel& out, Valuation valuation, const LogicInfo& logicInfo);
+  ~TheorySep();
+
+  void setMasterEqualityEngine(eq::EqualityEngine* eq);
+
+  std::string identify() const { return std::string("TheorySep"); }
+
+  /////////////////////////////////////////////////////////////////////////////
+  // PREPROCESSING
+  /////////////////////////////////////////////////////////////////////////////
+
+  public:
+
+  PPAssertStatus ppAssert(TNode in, SubstitutionMap& outSubstitutions);
+  Node ppRewrite(TNode atom);
+  
+  void ppNotifyAssertions( std::vector< Node >& assertions );
+  /////////////////////////////////////////////////////////////////////////////
+  // T-PROPAGATION / REGISTRATION
+  /////////////////////////////////////////////////////////////////////////////
+
+  private:
+
+  /** Should be called to propagate the literal.  */
+  bool propagate(TNode literal);
+
+  /** Explain why this literal is true by adding assumptions */
+  void explain(TNode literal, std::vector<TNode>& assumptions);
+
+  public:
+
+  void propagate(Effort e);
+  Node explain(TNode n);
+
+  public:
+
+  void addSharedTerm(TNode t);
+  EqualityStatus getEqualityStatus(TNode a, TNode b);
+  void computeCareGraph();
+
+  /////////////////////////////////////////////////////////////////////////////
+  // MODEL GENERATION
+  /////////////////////////////////////////////////////////////////////////////
+
+  public:
+
+  void collectModelInfo(TheoryModel* m, bool fullModel);
+  void postProcessModel(TheoryModel* m);
+
+  /////////////////////////////////////////////////////////////////////////////
+  // NOTIFICATIONS
+  /////////////////////////////////////////////////////////////////////////////
+
+  private:
+  public:
+
+  Node getNextDecisionRequest( unsigned& priority );
+
+  void presolve();
+  void shutdown() { }
+
+  /////////////////////////////////////////////////////////////////////////////
+  // MAIN SOLVER
+  /////////////////////////////////////////////////////////////////////////////
+  public:
+
+  void check(Effort e);
+
+  bool needsCheckLastEffort();
+
+  private:
+
+  // NotifyClass: template helper class for d_equalityEngine - handles call-back from congruence closure module
+  class NotifyClass : public eq::EqualityEngineNotify {
+    TheorySep& d_sep;
+  public:
+    NotifyClass(TheorySep& sep): d_sep(sep) {}
+
+    bool eqNotifyTriggerEquality(TNode equality, bool value) {
+      Debug("sep::propagate") << "NotifyClass::eqNotifyTriggerEquality(" << equality << ", " << (value ? "true" : "false") << ")" << std::endl;
+      // Just forward to sep
+      if (value) {
+        return d_sep.propagate(equality);
+      } else {
+        return d_sep.propagate(equality.notNode());
+      }
+    }
+
+    bool eqNotifyTriggerPredicate(TNode predicate, bool value) {
+      Unreachable();
+    }
+
+    bool eqNotifyTriggerTermEquality(TheoryId tag, TNode t1, TNode t2, bool value) {
+      Debug("sep::propagate") << "NotifyClass::eqNotifyTriggerTermEquality(" << t1 << ", " << t2 << ", " << (value ? "true" : "false") << ")" << std::endl;
+      if (value) {
+        // Propagate equality between shared terms
+        return d_sep.propagate(t1.eqNode(t2));
+      } else {
+        return d_sep.propagate(t1.eqNode(t2).notNode());
+      }
+      return true;
+    }
+
+    void eqNotifyConstantTermMerge(TNode t1, TNode t2) {
+      Debug("sep::propagate") << "NotifyClass::eqNotifyConstantTermMerge(" << t1 << ", " << t2 << ")" << std::endl;
+      d_sep.conflict(t1, t2);
+    }
+
+    void eqNotifyNewClass(TNode t) { }
+    void eqNotifyPreMerge(TNode t1, TNode t2) { d_sep.eqNotifyPreMerge( t1, t2 ); }
+    void eqNotifyPostMerge(TNode t1, TNode t2) { d_sep.eqNotifyPostMerge( t1, t2 ); }
+    void eqNotifyDisequal(TNode t1, TNode t2, TNode reason) { }
+  };
+
+  /** The notify class for d_equalityEngine */
+  NotifyClass d_notify;
+
+  /** Equaltity engine */
+  eq::EqualityEngine d_equalityEngine;
+
+  /** Are we in conflict? */
+  context::CDO<bool> d_conflict;
+  std::vector< Node > d_pending_exp;
+  std::vector< Node > d_pending;
+  std::vector< int > d_pending_lem;
+
+  /** list of all refinement lemms */
+  std::map< Node, std::map< Node, std::vector< Node > > > d_refinement_lem;
+
+  /** Conflict when merging constants */
+  void conflict(TNode a, TNode b);
+
+  //cache for positive polarity start reduction
+  NodeSet d_reduce;
+  std::map< Node, std::map< Node, Node > > d_red_conc;
+  std::map< Node, std::map< Node, Node > > d_neg_guard;
+  std::vector< Node > d_neg_guards;
+  std::map< Node, Node > d_guard_to_assertion;
+  /** inferences: maintained to ensure ref count for internally introduced nodes */
+  NodeList d_infer;
+  NodeList d_infer_exp;
+  NodeList d_spatial_assertions;
+
+  //data,ref type (globally fixed)
+  TypeNode d_type_ref;
+  TypeNode d_type_data;
+  //currently fix one data type for each location type, throw error if using more than one
+  std::map< TypeNode, TypeNode > d_loc_to_data_type;
+  //information about types
+  std::map< TypeNode, Node > d_base_label;
+  std::map< TypeNode, Node > d_nil_ref;
+  //reference bound
+  std::map< TypeNode, Node > d_reference_bound;
+  std::map< TypeNode, Node > d_reference_bound_max;
+  std::map< TypeNode, std::vector< Node > > d_type_references;
+  //kind of bound for reference types
+  enum {
+    bound_strict,
+    bound_default,
+    bound_herbrand,
+    bound_invalid,
+  };
+  std::map< TypeNode, unsigned > d_bound_kind;
+  
+  std::map< TypeNode, std::vector< Node > > d_type_references_card;
+  std::map< Node, unsigned > d_type_ref_card_id;
+  std::map< TypeNode, std::vector< Node > > d_type_references_all;
+  std::map< TypeNode, unsigned > d_card_max;
+  //for empty argument
+  std::map< TypeNode, Node > d_emp_arg;
+  //map from ( atom, label, child index ) -> label
+  std::map< Node, std::map< Node, std::map< int, Node > > > d_label_map;
+  std::map< Node, Node > d_label_map_parent;
+
+  //term model
+  std::map< Node, Node > d_tmodel;
+  std::map< Node, Node > d_pto_model;
+
+  class HeapAssertInfo {
+  public:
+    HeapAssertInfo( context::Context* c );
+    ~HeapAssertInfo(){}
+    context::CDO< Node > d_pto;
+    context::CDO< bool > d_has_neg_pto;
+  };
+  std::map< Node, HeapAssertInfo * > d_eqc_info;
+  HeapAssertInfo * getOrMakeEqcInfo( Node n, bool doMake = false );
+
+  //get global reference/data type
+  TypeNode getReferenceType( Node n );
+  TypeNode getDataType( Node n );
+  void registerRefDataTypes( TypeNode tn1, TypeNode tn2, Node atom );
+  //get location/data type
+  //get the base label for the spatial assertion
+  Node getBaseLabel( TypeNode tn );
+  Node getNilRef( TypeNode tn );
+  void setNilRef( TypeNode tn, Node n );
+  Node getLabel( Node atom, int child, Node lbl );
+  Node applyLabel( Node n, Node lbl, std::map< Node, Node >& visited );
+  void getLabelChildren( Node atom, Node lbl, std::vector< Node >& children, std::vector< Node >& labels );
+
+  class HeapInfo {
+  public:
+    HeapInfo() : d_computed(false) {}
+    //information about the model
+    bool d_computed;
+    std::vector< Node > d_heap_locs;
+    std::vector< Node > d_heap_locs_model;
+    //get value
+    Node getValue( TypeNode tn );
+  };
+  //heap info ( label -> HeapInfo )
+  std::map< Node, HeapInfo > d_label_model;
+  // loc -> { data_1, ..., data_n } where (not (pto loc data_1))...(not (pto loc data_n))).
+  std::map< Node, std::vector< Node > > d_heap_locs_nptos;
+
+  void debugPrintHeap( HeapInfo& heap, const char * c );
+  void validatePto( HeapAssertInfo * ei, Node ei_n );
+  void addPto( HeapAssertInfo * ei, Node ei_n, Node p, bool polarity );
+  void mergePto( Node p1, Node p2 );
+  void computeLabelModel( Node lbl );
+  Node instantiateLabel( Node n, Node o_lbl, Node lbl, Node lbl_v, std::map< Node, Node >& visited, std::map< Node, Node >& pto_model, 
+                         TypeNode rtn, std::map< Node, bool >& active_lbl, unsigned ind = 0 );
+  void setInactiveAssertionRec( Node fact, std::map< Node, std::vector< Node > >& lbl_to_assertions, std::map< Node, bool >& assert_active );
+
+  Node mkUnion( TypeNode tn, std::vector< Node >& locs );
+private:
+  Node getRepresentative( Node t );
+  bool hasTerm( Node a );
+  bool areEqual( Node a, Node b );
+  bool areDisequal( Node a, Node b );
+  void eqNotifyPreMerge(TNode t1, TNode t2);
+  void eqNotifyPostMerge(TNode t1, TNode t2);
+
+  void sendLemma( std::vector< Node >& ant, Node conc, const char * c, bool infer = false );
+  void doPendingFacts();
+public:
+  eq::EqualityEngine* getEqualityEngine() {
+    return &d_equalityEngine;
+  }
+
+  void initializeBounds();
+};/* class TheorySep */
+
+}/* CVC4::theory::sep namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__SEP__THEORY_SEP_H */
diff --git a/src/theory/sep/theory_sep_rewriter.cpp b/src/theory/sep/theory_sep_rewriter.cpp
new file mode 100644
index 0000000..8e9939f
--- /dev/null
+++ b/src/theory/sep/theory_sep_rewriter.cpp
@@ -0,0 +1,218 @@
+/*********************                                                        */
+/*! \file theory_sep_rewriter.cpp
+ ** \verbatim
+ ** Original author: Andrew Reynolds
+ ** Major contributors: none
+ ** Minor contributors (to current version): none
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2014  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "expr/attribute.h"
+#include "theory/sep/theory_sep_rewriter.h"
+#include "theory/quantifiers/quant_util.h"
+#include "options/sep_options.h"
+
+namespace CVC4 {
+namespace theory {
+namespace sep {
+
+void TheorySepRewriter::getStarChildren( Node n, std::vector< Node >& s_children, std::vector< Node >& ns_children ){
+  Assert( n.getKind()==kind::SEP_STAR );
+  Node tr = NodeManager::currentNM()->mkConst( true );
+  for( unsigned i=0; i<n.getNumChildren(); i++ ){
+    if( n[i].getKind()==kind::SEP_EMP ){
+      s_children.push_back( n[i] );
+    }else if( n[i].getKind()==kind::SEP_STAR ){
+      getStarChildren( n[i], s_children, ns_children );
+    }else if( n[i].getKind()==kind::SEP_PTO ){
+      s_children.push_back( n[i] );
+    }else{
+      std::vector< Node > temp_s_children;
+      getAndChildren( n[i], temp_s_children, ns_children );
+      Node to_add;
+      if( temp_s_children.size()==0 ){
+        if( std::find( s_children.begin(), s_children.end(), tr )==s_children.end() ){
+          to_add = tr;
+        }
+      }else if( temp_s_children.size()==1 ){
+        to_add = temp_s_children[0];
+      }else{
+        to_add = NodeManager::currentNM()->mkNode( kind::AND, temp_s_children );
+      }
+      if( !to_add.isNull() ){
+        //flatten star
+        if( to_add.getKind()==kind::SEP_STAR ){
+          getStarChildren( to_add, s_children, ns_children );
+        }else if( to_add.getKind()!=kind::SEP_EMP || s_children.empty() ){  //remove sep emp
+          s_children.push_back( to_add );
+        }
+      }
+    }
+  }
+}
+
+void TheorySepRewriter::getAndChildren( Node n, std::vector< Node >& s_children, std::vector< Node >& ns_children ) {
+  if( n.getKind()==kind::AND ){
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      getAndChildren( n[i], s_children, ns_children );
+    }
+  }else{
+    std::map< Node, bool > visited;
+    if( isSpatial( n, visited ) ){
+      if( std::find( s_children.begin(), s_children.end(), n )==s_children.end() ){
+        s_children.push_back( n );
+      }
+    }else{
+      if( std::find( ns_children.begin(), ns_children.end(), n )==ns_children.end() ){
+        if( n!=NodeManager::currentNM()->mkConst(true) ){
+          ns_children.push_back( n );
+        }
+      }
+    }
+  }
+}
+
+bool TheorySepRewriter::isSpatial( Node n, std::map< Node, bool >& visited ) {
+  if( visited.find( n )==visited.end() ){
+    visited[n] = true;
+    if( n.getKind()==kind::SEP_STAR || n.getKind()==kind::SEP_PTO || n.getKind()==kind::SEP_EMP || n.getKind()==kind::SEP_LABEL ){
+      return true;
+    }else if( n.getType().isBoolean() ){
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        if( isSpatial( n[i], visited ) ){
+          return true;
+        }
+      }
+    }
+  }
+  return false;
+}
+
+RewriteResponse TheorySepRewriter::postRewrite(TNode node) {
+  Trace("sep-postrewrite") << "Sep::postRewrite start " << node << std::endl;
+  Node retNode = node;
+  switch (node.getKind()) {
+    case kind::SEP_LABEL: {
+      if( node[0].getKind()==kind::SEP_PTO ){
+        Node s = NodeManager::currentNM()->mkNode( kind::SINGLETON, node[0][0] );
+        if( node[1]!=s ){
+          Node c1 = node[1].eqNode( s );
+          Node c2 = NodeManager::currentNM()->mkNode( kind::SEP_LABEL, NodeManager::currentNM()->mkNode( kind::SEP_PTO, node[0][0], node[0][1] ), s );
+          retNode = NodeManager::currentNM()->mkNode( kind::AND, c1, c2 );
+        }
+      }
+      if( node[0].getKind()==kind::SEP_EMP ){
+        retNode = node[1].eqNode( NodeManager::currentNM()->mkConst(EmptySet(node[1].getType().toType())) );
+      }
+      break;
+    }
+    case kind::SEP_PTO: {
+      break;
+    }
+    case kind::SEP_STAR: {
+      //flatten
+      std::vector< Node > s_children;
+      std::vector< Node > ns_children;
+      getStarChildren( node, s_children, ns_children );
+      if( !s_children.empty() ){
+        Node schild;
+        if( s_children.size()==1 ) {
+          schild = s_children[0];
+        }else{
+          schild = NodeManager::currentNM()->mkNode( kind::SEP_STAR, s_children );
+        }
+        ns_children.push_back( schild );
+      }
+      Assert( !ns_children.empty() );
+      if( ns_children.size()==1 ){
+        retNode = ns_children[0];
+      }else{
+        retNode = NodeManager::currentNM()->mkNode( kind::AND, ns_children );
+      }
+      break;
+    }
+    case kind::EQUAL: {
+      if(node[0] == node[1]) {
+        return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(true));
+      }
+      else if (node[0].isConst() && node[1].isConst()) {
+        return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(false));
+      }
+      if (node[0] > node[1]) {
+        Node newNode = NodeManager::currentNM()->mkNode(node.getKind(), node[1], node[0]);
+        return RewriteResponse(REWRITE_DONE, newNode);
+      }
+      break;
+    }
+    default:
+      break;
+  }
+  if( node!=retNode ){
+    Trace("sep-rewrite") << "Sep::rewrite : " << node << " -> " << retNode << std::endl;
+  }
+  return RewriteResponse(node==retNode ? REWRITE_DONE : REWRITE_AGAIN_FULL, retNode);
+}
+
+Node TheorySepRewriter::preSkolemEmp( Node n, bool pol, std::map< bool, std::map< Node, Node > >& visited ) {
+  std::map< Node, Node >::iterator it = visited[pol].find( n );
+  if( it==visited[pol].end() ){
+    Trace("ajr-temp") << "Pre-skolem emp " << n << " with pol " << pol << std::endl;
+    Node ret = n;
+    if( n.getKind()==kind::SEP_EMP ){
+      if( !pol ){
+        TypeNode tnx = n[0].getType();
+        TypeNode tny = n[1].getType();
+        Node x = NodeManager::currentNM()->mkSkolem( "ex", tnx, "skolem location for negated emp" );
+        Node y = NodeManager::currentNM()->mkSkolem( "ey", tny, "skolem data for negated emp" );
+        return NodeManager::currentNM()->mkNode( kind::SEP_STAR, 
+                 NodeManager::currentNM()->mkNode( kind::SEP_PTO, x, y ),
+                 NodeManager::currentNM()->mkConst( true ) ).negate();
+      }
+    }else if( n.getKind()!=kind::FORALL && n.getNumChildren()>0 ){
+      std::vector< Node > children;
+      bool childChanged = false;
+      if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+        children.push_back( n.getOperator() );
+      }
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        bool newPol, newHasPol;
+        QuantPhaseReq::getPolarity( n, i, true, pol, newHasPol, newPol );
+        Node nc = n[i];
+        if( newHasPol ){
+          nc = preSkolemEmp( n[i], newPol, visited );
+          childChanged = childChanged || nc!=n[i];
+        }
+        children.push_back( nc );
+      }
+      if( childChanged ){
+        return NodeManager::currentNM()->mkNode( n.getKind(), children );
+      }
+    }
+    visited[pol][n] = ret;
+    return n;
+  }else{
+    return it->second;
+  }
+}
+
+Node TheorySepRewriter::preprocess( Node n ) {
+  if( options::sepPreSkolemEmp() ){
+    bool pol = true;
+    std::map< bool, std::map< Node, Node > > visited;
+    n = preSkolemEmp( n, pol, visited );
+  }
+  return n;
+}
+
+
+}/* CVC4::theory::sep namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/sep/theory_sep_rewriter.h b/src/theory/sep/theory_sep_rewriter.h
new file mode 100644
index 0000000..58b79c7
--- /dev/null
+++ b/src/theory/sep/theory_sep_rewriter.h
@@ -0,0 +1,56 @@
+/*********************                                                        */
+/*! \file theory_sep_rewriter.h
+ ** \verbatim
+ ** Original author: Andrew Reynolds
+ ** Major contributors: none
+ ** Minor contributors (to current version): none
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2014  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__SEP__THEORY_SEP_REWRITER_H
+#define __CVC4__THEORY__SEP__THEORY_SEP_REWRITER_H
+
+#include "theory/rewriter.h"
+#include "theory/type_enumerator.h"
+
+namespace CVC4 {
+namespace theory {
+namespace sep {
+
+
+class TheorySepRewriter {
+private:
+  static void getStarChildren( Node n, std::vector< Node >& s_children, std::vector< Node >& ns_children );
+  static void getAndChildren( Node n, std::vector< Node >& s_children, std::vector< Node >& ns_children );
+  static bool isSpatial( Node n, std::map< Node, bool >& visited );
+public:
+
+  static RewriteResponse postRewrite(TNode node);
+  static inline RewriteResponse preRewrite(TNode node) {
+    Trace("sep-prerewrite") << "Sep::preRewrite returning " << node << std::endl;
+    return RewriteResponse(REWRITE_DONE, node);
+  }
+
+  static inline void init() {}
+  static inline void shutdown() {}
+private:
+  static Node preSkolemEmp( Node n, bool pol, std::map< bool, std::map< Node, Node > >& visited );
+public:
+  static Node preprocess( Node n );
+};/* class TheorySepRewriter */
+
+}/* CVC4::theory::sep namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__SEP__THEORY_SEP_REWRITER_H */
diff --git a/src/theory/sep/theory_sep_type_rules.h b/src/theory/sep/theory_sep_type_rules.h
new file mode 100644
index 0000000..23e725a
--- /dev/null
+++ b/src/theory/sep/theory_sep_type_rules.h
@@ -0,0 +1,106 @@
+/*********************                                                        */
+/*! \file theory_sep_type_rules.h
+ ** \verbatim
+ ** Original author: Andrew Reynolds
+ ** Major contributors: none
+ ** Minor contributors (to current version): none
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2014  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.\endverbatim
+ **
+ ** \brief Typing and cardinality rules for the theory of sep
+ **
+ ** Typing and cardinality rules for the theory of sep.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__SEP__THEORY_SEP_TYPE_RULES_H
+#define __CVC4__THEORY__SEP__THEORY_SEP_TYPE_RULES_H
+
+#include "theory/type_enumerator.h"
+
+namespace CVC4 {
+namespace theory {
+namespace sep {
+
+class SepEmpTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::SEP_EMP);
+    return nodeManager->booleanType();
+  }
+};
+
+struct SepPtoTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::SEP_PTO);
+    if( check ) {
+      TypeNode refType = n[0].getType(check);
+      TypeNode ptType = n[1].getType(check);
+    }
+    return nodeManager->booleanType();
+  }
+};/* struct SepSelectTypeRule */
+
+struct SepStarTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    TypeNode btype = nodeManager->booleanType();
+    Assert(n.getKind() == kind::SEP_STAR);
+    if( check ){
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        TypeNode ctype = n[i].getType( check );
+        if( ctype!=btype ){
+          throw TypeCheckingExceptionPrivate(n, "child of sep star is not Boolean");
+        }
+      }
+    }
+    return btype;
+  }
+};/* struct SepStarTypeRule */
+
+struct SepWandTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    TypeNode btype = nodeManager->booleanType();
+    Assert(n.getKind() == kind::SEP_WAND);
+    if( check ){
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        TypeNode ctype = n[i].getType( check );
+        if( ctype!=btype ){
+          throw TypeCheckingExceptionPrivate(n, "child of sep magic wand is not Boolean");
+        }
+      }
+    }
+    return btype;
+  }
+};/* struct SepWandTypeRule */
+
+struct SepLabelTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    TypeNode btype = nodeManager->booleanType();
+    Assert(n.getKind() == kind::SEP_LABEL);
+    if( check ){
+      TypeNode ctype = n[0].getType( check );
+      if( ctype!=btype ){
+        throw TypeCheckingExceptionPrivate(n, "child of sep label is not Boolean");
+      }
+      TypeNode stype = n[1].getType( check );
+      if( !stype.isSet() ){
+        throw TypeCheckingExceptionPrivate(n, "label of sep label is not a set");
+      }
+    }
+    return btype;
+  }
+};/* struct SepLabelTypeRule */
+
+}/* CVC4::theory::sep namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__SEP__THEORY_SEP_TYPE_RULES_H */
diff --git a/src/theory/sets/kinds b/src/theory/sets/kinds
new file mode 100644
index 0000000..ab0ca34
--- /dev/null
+++ b/src/theory/sets/kinds
@@ -0,0 +1,84 @@
+# kinds                                                               -*- sh -*-
+#
+# For documentation on this file format, please refer to
+# src/theory/builtin/kinds.
+#
+
+theory THEORY_SETS \
+    ::CVC4::theory::sets::TheorySets \
+    "theory/sets/theory_sets.h"
+typechecker "theory/sets/theory_sets_type_rules.h"
+rewriter ::CVC4::theory::sets::TheorySetsRewriter \
+    "theory/sets/theory_sets_rewriter.h"
+
+properties parametric
+properties check propagate presolve
+
+# constants
+constant EMPTYSET \
+    ::CVC4::EmptySet \
+    ::CVC4::EmptySetHashFunction \
+    "expr/emptyset.h" \
+    "the empty set constant; payload is an instance of the CVC4::EmptySet class"
+
+# the type
+operator SET_TYPE 1 "set type, takes as parameter the type of the elements"
+cardinality SET_TYPE \
+    "::CVC4::theory::sets::SetsProperties::computeCardinality(%TYPE%)" \
+    "theory/sets/theory_sets_type_rules.h"
+well-founded SET_TYPE \
+    "::CVC4::theory::sets::SetsProperties::isWellFounded(%TYPE%)" \
+    "::CVC4::theory::sets::SetsProperties::mkGroundTerm(%TYPE%)" \
+    "theory/sets/theory_sets_type_rules.h"
+enumerator SET_TYPE \
+    "::CVC4::theory::sets::SetEnumerator" \
+    "theory/sets/theory_sets_type_enumerator.h"
+
+# operators
+operator UNION         2  "set union"
+operator INTERSECTION  2  "set intersection"
+operator SETMINUS      2  "set subtraction"
+operator SUBSET        2  "subset predicate; first parameter a subset of second"
+operator MEMBER        2  "set membership predicate; first parameter a member of second"
+operator SINGLETON     1  "the set of the single element given as a parameter"
+operator INSERT        2: "set obtained by inserting elements (first N-1 parameters) into a set (the last parameter)"
+operator CARD          1  "set cardinality operator"
+operator COMPLEMENT    1  "set COMPLEMENT (with respect to finite universe)"
+
+operator JOIN 		   2  "set join"
+operator PRODUCT 	   2  "set cartesian product"
+operator TRANSPOSE 	   1  "set transpose"
+operator TCLOSURE      1  "set transitive closure"
+
+typerule UNION          ::CVC4::theory::sets::SetsBinaryOperatorTypeRule
+typerule INTERSECTION   ::CVC4::theory::sets::SetsBinaryOperatorTypeRule
+typerule SETMINUS       ::CVC4::theory::sets::SetsBinaryOperatorTypeRule
+typerule SUBSET         ::CVC4::theory::sets::SubsetTypeRule
+typerule MEMBER         ::CVC4::theory::sets::MemberTypeRule
+typerule SINGLETON      ::CVC4::theory::sets::SingletonTypeRule
+typerule EMPTYSET       ::CVC4::theory::sets::EmptySetTypeRule
+typerule INSERT         ::CVC4::theory::sets::InsertTypeRule
+typerule CARD           ::CVC4::theory::sets::CardTypeRule
+typerule COMPLEMENT     ::CVC4::theory::sets::ComplementTypeRule
+
+typerule JOIN 			::CVC4::theory::sets::RelBinaryOperatorTypeRule
+typerule PRODUCT 		::CVC4::theory::sets::RelBinaryOperatorTypeRule
+typerule TRANSPOSE 		::CVC4::theory::sets::RelTransposeTypeRule
+typerule TCLOSURE 	    ::CVC4::theory::sets::RelTransClosureTypeRule
+
+variable UNIVERSE_SET "(finite) universe set, all set variables must be interpreted as subsets of it."
+
+construle UNION         ::CVC4::theory::sets::SetsBinaryOperatorTypeRule
+construle INTERSECTION  ::CVC4::theory::sets::SetsBinaryOperatorTypeRule
+construle SETMINUS      ::CVC4::theory::sets::SetsBinaryOperatorTypeRule
+construle SINGLETON     ::CVC4::theory::sets::SingletonTypeRule
+construle INSERT        ::CVC4::theory::sets::InsertTypeRule
+construle CARD          ::CVC4::theory::sets::CardTypeRule
+construle COMPLEMENT    ::CVC4::theory::sets::ComplementTypeRule
+
+construle JOIN 			::CVC4::theory::sets::RelBinaryOperatorTypeRule
+construle PRODUCT 		::CVC4::theory::sets::RelBinaryOperatorTypeRule
+construle TRANSPOSE 	::CVC4::theory::sets::RelTransposeTypeRule
+construle TCLOSURE 	    ::CVC4::theory::sets::RelTransClosureTypeRule
+
+endtheory
diff --git a/src/theory/sets/normal_form.h b/src/theory/sets/normal_form.h
new file mode 100644
index 0000000..6379fb2
--- /dev/null
+++ b/src/theory/sets/normal_form.h
@@ -0,0 +1,139 @@
+/*********************                                                        */
+/*! \file normal_form.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Normal form for set constants.
+ **
+ ** Normal form for set constants.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__SETS__NORMAL_FORM_H
+#define __CVC4__THEORY__SETS__NORMAL_FORM_H
+
+namespace CVC4 {
+namespace theory {
+namespace sets {
+
+class NormalForm {
+ public:
+  template <bool ref_count>
+  static Node elementsToSet(const std::set<NodeTemplate<ref_count> >& elements,
+                            TypeNode setType) {
+    typedef typename std::set<NodeTemplate<ref_count> >::const_iterator
+        ElementsIterator;
+    NodeManager* nm = NodeManager::currentNM();
+    if (elements.size() == 0) {
+      return nm->mkConst(EmptySet(nm->toType(setType)));
+    } else {
+      ElementsIterator it = elements.begin();
+      Node cur = nm->mkNode(kind::SINGLETON, *it);
+      while (++it != elements.end()) {
+        cur = nm->mkNode(kind::UNION, cur, nm->mkNode(kind::SINGLETON, *it));
+      }
+      return cur;
+    }
+  }
+
+  static bool checkNormalConstant(TNode n) {
+    Debug("sets-checknormal") << "[sets-checknormal] checkNormal " << n << " :"
+                              << std::endl;
+    if (n.getKind() == kind::EMPTYSET) {
+      return true;
+    } else if (n.getKind() == kind::SINGLETON) {
+      return n[0].isConst();
+    } else if (n.getKind() == kind::UNION) {
+      // assuming (union ... (union {SmallestNodeID} {BiggerNodeId}) ...
+      // {BiggestNodeId})
+
+      // store BiggestNodeId in prvs
+      if (n[1].getKind() != kind::SINGLETON) return false;
+      if (!n[1][0].isConst()) return false;
+      Debug("sets-checknormal")
+          << "[sets-checknormal]              frst element = " << n[1][0] << " "
+          << n[1][0].getId() << std::endl;
+      TNode prvs = n[1][0];
+      n = n[0];
+
+      // check intermediate nodes
+      while (n.getKind() == kind::UNION) {
+        if (n[1].getKind() != kind::SINGLETON) return false;
+        if (!n[1].isConst()) return false;
+        Debug("sets-checknormal")
+            << "[sets-checknormal]              element = " << n[1][0] << " "
+            << n[1][0].getId() << std::endl;
+        if (n[1][0] >= prvs) return false;
+        TNode prvs = n[1][0];
+        n = n[0];
+      }
+
+      // check SmallestNodeID is smallest
+      if (n.getKind() != kind::SINGLETON) return false;
+      if (!n[0].isConst()) return false;
+      Debug("sets-checknormal")
+          << "[sets-checknormal]              lst element = " << n[0] << " "
+          << n[0].getId() << std::endl;
+      if (n[0] >= prvs) return false;
+
+      // we made it
+      return true;
+
+    } else {
+      return false;
+    }
+  }
+
+  static std::set<Node> getElementsFromNormalConstant(TNode n) {
+    Assert(n.isConst());
+    std::set<Node> ret;
+    if (n.getKind() == kind::EMPTYSET) {
+      return ret;
+    }
+    while (n.getKind() == kind::UNION) {
+      Assert(n[1].getKind() == kind::SINGLETON);
+      ret.insert(ret.begin(), n[1][0]);
+      n = n[0];
+    }
+    Assert(n.getKind() == kind::SINGLETON);
+    ret.insert(n[0]);
+    return ret;
+  }
+  
+  
+  //AJR
+  
+  static void getElementsFromBop( Kind k, Node n, std::vector< Node >& els ){
+    if( n.getKind()==k ){
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        getElementsFromBop( k, n[i], els );
+      }
+    }else{
+      if( std::find( els.begin(), els.end(), n )==els.end() ){
+        els.push_back( n );
+      }
+    }
+  }
+  static Node mkBop( Kind k, std::vector< Node >& els, TypeNode tn, unsigned index = 0 ){
+    if( index>=els.size() ){
+      return NodeManager::currentNM()->mkConst(EmptySet(tn.toType()));
+    }else if( index==els.size()-1 ){
+      return els[index];
+    }else{
+      return NodeManager::currentNM()->mkNode( k, els[index], mkBop( k, els, tn, index+1 ) );
+    }
+  }
+
+};
+}
+}
+}
+
+#endif
diff --git a/src/theory/sets/rels_utils.h b/src/theory/sets/rels_utils.h
new file mode 100644
index 0000000..df14bf5
--- /dev/null
+++ b/src/theory/sets/rels_utils.h
@@ -0,0 +1,96 @@
+/*********************                                                        */
+/*! \file rels_utils.h
+ ** \verbatim
+ ** Original author: Paul Meng
+ ** Major contributors: none
+ ** Minor contributors (to current version): none
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2014  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.\endverbatim
+ **
+ ** \brief Sets theory implementation.
+ **
+ ** Extension to Sets theory.
+ **/
+
+#ifndef SRC_THEORY_SETS_RELS_UTILS_H_
+#define SRC_THEORY_SETS_RELS_UTILS_H_
+
+namespace CVC4 {
+namespace theory {
+namespace sets {
+
+class RelsUtils {
+
+public:
+
+  // Assumption: the input rel_mem contains all constant pairs
+  static std::set< Node > computeTC( std::set< Node > rel_mem, Node rel ) {
+    std::set< Node >::iterator mem_it = rel_mem.begin();
+    std::map< Node, int > ele_num_map;
+    std::set< Node > tc_rel_mem;
+       
+    while( mem_it != rel_mem.end() ) {
+      Node fst = nthElementOfTuple( *mem_it, 0 );
+      Node snd = nthElementOfTuple( *mem_it, 1 );
+      std::set< Node > traversed;
+      traversed.insert(fst);
+      computeTC(rel, rel_mem, fst, snd, traversed, tc_rel_mem);      
+      mem_it++;             
+    }
+    return tc_rel_mem;
+  }
+  
+  static void computeTC( Node rel, std::set< Node >& rel_mem, Node fst, 
+                         Node snd, std::set< Node >& traversed, std::set< Node >& tc_rel_mem ) {    
+    tc_rel_mem.insert(constructPair(rel, fst, snd));
+    if( traversed.find(snd) == traversed.end() ) {
+      traversed.insert(snd);
+    } else {
+      return;
+    }
+
+    std::set< Node >::iterator mem_it = rel_mem.begin();
+    while( mem_it != rel_mem.end() ) {
+      Node new_fst = nthElementOfTuple( *mem_it, 0 );
+      Node new_snd = nthElementOfTuple( *mem_it, 1 );
+      if( snd == new_fst ) {
+        computeTC(rel, rel_mem, fst, new_snd, traversed, tc_rel_mem);
+      }
+      mem_it++; 
+    }  
+  }
+ 
+  static Node nthElementOfTuple( Node tuple, int n_th ) {    
+    if( tuple.getKind() == kind::APPLY_CONSTRUCTOR ) {
+      return tuple[n_th];
+    }
+    Datatype dt = tuple.getType().getDatatype();
+    return NodeManager::currentNM()->mkNode(kind::APPLY_SELECTOR_TOTAL, dt[0][n_th].getSelector(), tuple);
+  } 
+  
+  static Node reverseTuple( Node tuple ) {
+    Assert( tuple.getType().isTuple() );
+    std::vector<Node> elements;
+    std::vector<TypeNode> tuple_types = tuple.getType().getTupleTypes();
+    std::reverse( tuple_types.begin(), tuple_types.end() );
+    TypeNode tn = NodeManager::currentNM()->mkTupleType( tuple_types );
+    Datatype dt = tn.getDatatype();
+    elements.push_back( Node::fromExpr(dt[0].getConstructor() ) );
+    for(int i = tuple_types.size() - 1; i >= 0; --i) {
+      elements.push_back( nthElementOfTuple(tuple, i) );
+    }
+    return NodeManager::currentNM()->mkNode( kind::APPLY_CONSTRUCTOR, elements );
+  }
+  static Node constructPair(Node rel, Node a, Node b) {
+    Datatype dt = rel.getType().getSetElementType().getDatatype();
+    return NodeManager::currentNM()->mkNode(kind::APPLY_CONSTRUCTOR, Node::fromExpr(dt[0].getConstructor()), a, b);
+  }     
+    
+};             
+}/* CVC4::theory::sets namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif
diff --git a/src/theory/sets/theory_sets.cpp b/src/theory/sets/theory_sets.cpp
new file mode 100644
index 0000000..52afe05
--- /dev/null
+++ b/src/theory/sets/theory_sets.cpp
@@ -0,0 +1,91 @@
+/*********************                                                        */
+/*! \file theory_sets.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Sets theory.
+ **
+ ** Sets theory.
+ **/
+
+#include "theory/sets/theory_sets.h"
+#include "theory/sets/theory_sets_private.h"
+
+namespace CVC4 {
+namespace theory {
+namespace sets {
+
+TheorySets::TheorySets(context::Context* c,
+                       context::UserContext* u,
+                       OutputChannel& out,
+                       Valuation valuation,
+                       const LogicInfo& logicInfo)
+    : Theory(THEORY_SETS, c, u, out, valuation, logicInfo),
+      d_internal(new TheorySetsPrivate(*this, c, u))
+{}
+
+TheorySets::~TheorySets() {
+  delete d_internal;
+}
+
+void TheorySets::addSharedTerm(TNode n) {
+  d_internal->addSharedTerm(n);
+}
+
+void TheorySets::check(Effort e) {
+  if (done() && !fullEffort(e)) {
+    return;
+  }
+  TimerStat::CodeTimer checkTimer(d_checkTime);
+  d_internal->check(e);
+}
+
+void TheorySets::collectModelInfo(TheoryModel* m, bool fullModel) {
+  d_internal->collectModelInfo(m, fullModel);
+}
+
+void TheorySets::computeCareGraph() {
+  d_internal->computeCareGraph();
+}
+
+Node TheorySets::explain(TNode node) {
+  return d_internal->explain(node);
+}
+
+EqualityStatus TheorySets::getEqualityStatus(TNode a, TNode b) {
+  return d_internal->getEqualityStatus(a, b);
+}
+
+Node TheorySets::getModelValue(TNode node) {
+  return Node::null();
+}
+
+void TheorySets::preRegisterTerm(TNode node) {
+  d_internal->preRegisterTerm(node);
+}
+
+void TheorySets::presolve() {
+  d_internal->presolve();
+}
+
+void TheorySets::propagate(Effort e) {
+  d_internal->propagate(e);
+}
+
+void TheorySets::setMasterEqualityEngine(eq::EqualityEngine* eq) {
+  d_internal->setMasterEqualityEngine(eq);
+}
+
+bool TheorySets::isEntailed( Node n, bool pol ) {
+  return d_internal->isEntailed( n, pol );
+}
+
+}/* CVC4::theory::sets namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/sets/theory_sets.h b/src/theory/sets/theory_sets.h
new file mode 100644
index 0000000..2ebb994
--- /dev/null
+++ b/src/theory/sets/theory_sets.h
@@ -0,0 +1,81 @@
+/*********************                                                        */
+/*! \file theory_sets.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Sets theory.
+ **
+ ** Sets theory.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__SETS__THEORY_SETS_H
+#define __CVC4__THEORY__SETS__THEORY_SETS_H
+
+#include "theory/theory.h"
+#include "theory/uf/equality_engine.h"
+
+namespace CVC4 {
+namespace theory {
+namespace sets {
+
+class TheorySetsPrivate;
+class TheorySetsScrutinize;
+
+class TheorySets : public Theory {
+private:
+  friend class TheorySetsPrivate;
+  friend class TheorySetsScrutinize;
+  friend class TheorySetsRels;
+  TheorySetsPrivate* d_internal;
+public:
+
+  /**
+   * Constructs a new instance of TheorySets w.r.t. the provided
+   * contexts.
+   */
+  TheorySets(context::Context* c, context::UserContext* u, OutputChannel& out,
+             Valuation valuation, const LogicInfo& logicInfo);
+
+  ~TheorySets();
+
+  void addSharedTerm(TNode);
+
+  void check(Effort);
+
+  void collectModelInfo(TheoryModel*, bool fullModel);
+
+  void computeCareGraph();
+
+  Node explain(TNode);
+
+  EqualityStatus getEqualityStatus(TNode a, TNode b);
+
+  Node getModelValue(TNode);
+
+  std::string identify() const { return "THEORY_SETS"; }
+
+  void preRegisterTerm(TNode node);
+
+  void presolve();
+
+  void propagate(Effort);
+
+  void setMasterEqualityEngine(eq::EqualityEngine* eq);
+  
+  bool isEntailed( Node n, bool pol );
+
+};/* class TheorySets */
+
+}/* CVC4::theory::sets namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__SETS__THEORY_SETS_H */
diff --git a/src/theory/sets/theory_sets_private.cpp b/src/theory/sets/theory_sets_private.cpp
new file mode 100644
index 0000000..e53fec0
--- /dev/null
+++ b/src/theory/sets/theory_sets_private.cpp
@@ -0,0 +1,2078 @@
+/*********************                                                        */
+/*! \file theory_sets_private.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Sets theory implementation.
+ **
+ ** Sets theory implementation.
+ **/
+
+#include <algorithm>
+#include "theory/sets/theory_sets_private.h"
+
+#include <boost/foreach.hpp>
+
+#include "expr/emptyset.h"
+#include "options/sets_options.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/sets/theory_sets.h"
+#include "theory/sets/normal_form.h"
+#include "theory/theory_model.h"
+#include "util/result.h"
+#include "theory/quantifiers/term_database.h"
+
+#define AJR_IMPLEMENTATION
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace sets {
+
+TheorySetsPrivate::TheorySetsPrivate(TheorySets& external,
+                                     context::Context* c,
+                                     context::UserContext* u):
+  d_rels(NULL),
+  d_members(c),
+  d_deq(c),
+  d_deq_processed(u),
+  d_keep(c),
+  d_proxy(u),
+  d_proxy_to_term(u),
+  d_lemmas_produced(u),
+  d_card_processed(u),
+  d_external(external),
+  d_notify(*this),
+  d_equalityEngine(d_notify, c, "theory::sets::TheorySetsPrivate", true),
+  d_conflict(c)
+{
+
+  d_rels = new TheorySetsRels(c, u, &d_equalityEngine, &d_conflict, external);
+  
+  d_true = NodeManager::currentNM()->mkConst( true );
+  d_false = NodeManager::currentNM()->mkConst( false );
+  d_zero = NodeManager::currentNM()->mkConst( Rational(0) );
+
+  d_equalityEngine.addFunctionKind(kind::SINGLETON);
+  d_equalityEngine.addFunctionKind(kind::UNION);
+  d_equalityEngine.addFunctionKind(kind::INTERSECTION);
+  d_equalityEngine.addFunctionKind(kind::SETMINUS);
+
+  d_equalityEngine.addFunctionKind(kind::MEMBER);
+  d_equalityEngine.addFunctionKind(kind::SUBSET);
+
+  // If cardinality is on.
+  d_equalityEngine.addFunctionKind(kind::CARD);
+
+  d_card_enabled = false;
+  d_rels_enabled = false;
+
+}/* TheorySetsPrivate::TheorySetsPrivate() */
+
+TheorySetsPrivate::~TheorySetsPrivate(){
+  delete d_rels;
+  for(std::map< Node, EqcInfo* >::iterator i = d_eqc_info.begin(), iend = d_eqc_info.end(); i != iend; ++i){
+    EqcInfo* current = (*i).second;
+    delete current;
+  }
+}/* TheorySetsPrivate::~TheorySetsPrivate() */
+
+
+void TheorySetsPrivate::eqNotifyNewClass(TNode t) {
+  if( t.getKind()==kind::SINGLETON || t.getKind()==kind::EMPTYSET ){
+    EqcInfo * e = getOrMakeEqcInfo( t, true );
+    e->d_singleton = t;
+  }
+  if( options::setsRelEager() ){
+    d_rels->eqNotifyNewClass( t );
+  }
+}
+
+void TheorySetsPrivate::eqNotifyPreMerge(TNode t1, TNode t2){
+
+}
+
+void TheorySetsPrivate::eqNotifyPostMerge(TNode t1, TNode t2){
+  if( !d_conflict ){
+    Trace("sets-prop-debug") << "Merge " << t1 << " and " << t2 << "..." << std::endl;
+    Node s1, s2;
+    EqcInfo * e2 = getOrMakeEqcInfo( t2 );
+    if( e2 ){
+      s2 = e2->d_singleton;
+      EqcInfo * e1 = getOrMakeEqcInfo( t1 );
+      Node s1;
+      Trace("sets-prop-debug") << "Merging singletons..." << std::endl;
+      if( e1 ){
+        s1 = e1->d_singleton;
+        if( !s1.isNull() && !s2.isNull() ){
+          if( s1.getKind()==s2.getKind() ){
+            Trace("sets-prop") << "Propagate eq inference : " << s1 << " == " << s2 << std::endl;
+            //infer equality between elements of singleton
+            Node exp = s1.eqNode( s2 );
+            Node eq = s1[0].eqNode( s2[0] );
+            d_keep.insert( exp );
+            d_keep.insert( eq );
+            assertFact( eq, exp );
+          }else{
+            //singleton equal to emptyset, conflict
+            Trace("sets-prop") << "Propagate conflict : " << s1 << " == " << s2 << std::endl;
+            conflict( s1, s2 );
+            return;
+          }
+        }
+      }else{
+        //copy information
+        e1 = getOrMakeEqcInfo( t1, true );
+        e1->d_singleton.set( e2->d_singleton );
+      }
+    }
+    //merge membership list
+    Trace("sets-prop-debug") << "Copying membership list..." << std::endl;
+    NodeIntMap::iterator mem_i2 = d_members.find( t2 );
+    if( mem_i2 != d_members.end() ) {
+      NodeIntMap::iterator mem_i1 = d_members.find( t1 );
+      int n_members = 0;
+      if( mem_i1 != d_members.end() ) {
+        n_members = (*mem_i1).second;
+      }
+      for( int i=0; i<(*mem_i2).second; i++ ){
+        Assert( i<(int)d_members_data[t2].size() && d_members_data[t2][i].getKind()==kind::MEMBER );
+        Node m2 = d_members_data[t2][i];
+        //check if redundant
+        bool add = true;
+        for( int j=0; j<n_members; j++ ){
+          Assert( j<(int)d_members_data[t1].size() && d_members_data[t1][j].getKind()==kind::MEMBER );
+          if( ee_areEqual( m2[0], d_members_data[t1][j][0] ) ){
+            add = false;
+            break;
+          }
+        }
+        if( add ){
+          if( !s1.isNull() && s2.isNull() ){
+            Assert( m2[1].getType()==s1.getType() );
+            Assert( ee_areEqual( m2[1], s1 ) );
+            Node exp = NodeManager::currentNM()->mkNode( kind::AND, m2[1].eqNode( s1 ), m2 );
+            if( s1.getKind()==kind::SINGLETON ){
+              if( s1[0]!=m2[0] ){
+                Node eq = s1[0].eqNode( m2[0] );
+                d_keep.insert( exp );
+                d_keep.insert( eq );
+                Trace("sets-prop") << "Propagate eq-mem eq inference : " << exp << " => " << eq << std::endl;
+                assertFact( eq, exp );
+              }
+            }else{
+              //conflict
+              Trace("sets-prop") << "Propagate eq-mem conflict : " << exp << std::endl;
+              d_conflict = true;
+              d_external.d_out->conflict( exp );
+              return;
+            }
+          }
+          if( n_members<(int)d_members_data[t1].size() ){
+            d_members_data[t1][n_members] = m2;
+          }else{
+            d_members_data[t1].push_back( m2 );
+          }
+          n_members++;
+        }
+      }
+      d_members[t1] = n_members;
+    }
+    if( options::setsRelEager() ){
+      d_rels->eqNotifyPostMerge( t1, t2 );
+    }
+  }
+}
+
+void TheorySetsPrivate::eqNotifyDisequal(TNode t1, TNode t2, TNode reason){
+  if( t1.getType().isSet() ){
+    Node eq = t1.eqNode( t2 );
+    if( d_deq.find( eq )==d_deq.end() ){
+      d_deq[eq] = true;
+    }
+  }
+}
+
+TheorySetsPrivate::EqcInfo::EqcInfo( context::Context* c ) : d_singleton( c ){
+  
+}
+
+TheorySetsPrivate::EqcInfo* TheorySetsPrivate::getOrMakeEqcInfo( TNode n, bool doMake ){
+  std::map< Node, EqcInfo* >::iterator eqc_i = d_eqc_info.find( n );
+  if( eqc_i==d_eqc_info.end() ){
+    EqcInfo* ei = NULL;
+    if( doMake ){
+      ei = new EqcInfo( d_external.getSatContext() );
+      d_eqc_info[n] = ei;
+    }
+    return ei;
+  }else{
+    return eqc_i->second;
+  }
+}
+
+
+bool TheorySetsPrivate::ee_areEqual( Node a, Node b ) {
+  if( a==b ){
+    return true;
+  }else{
+    if( d_equalityEngine.hasTerm( a ) && d_equalityEngine.hasTerm( b ) ){
+      return d_equalityEngine.areEqual( a, b );
+    }else{
+      return false;
+    }
+  }
+}
+
+bool TheorySetsPrivate::ee_areDisequal( Node a, Node b ) {
+  if( a==b ){
+    return false;
+  }else{
+    if( d_equalityEngine.hasTerm( a ) && d_equalityEngine.hasTerm( b ) ){
+      return d_equalityEngine.areDisequal( a, b, false );
+    }else{
+      return a.isConst() && b.isConst();
+    }
+  }
+}
+
+bool TheorySetsPrivate::isEntailed( Node n, bool polarity ) {
+  if( n.getKind()==kind::NOT ){
+    return isEntailed( n[0], !polarity );
+  }else if( n.getKind()==kind::EQUAL ){
+    if( polarity ){
+      return ee_areEqual( n[0], n[1] );
+    }else{
+      return ee_areDisequal( n[0], n[1] );
+    }
+  }else if( n.getKind()==kind::MEMBER ){
+    if( ee_areEqual( n, polarity ? d_true : d_false ) ){
+      return true;
+    }
+    //check members cache
+    if( polarity && d_equalityEngine.hasTerm( n[1] ) ){
+      Node r = d_equalityEngine.getRepresentative( n[1] );
+      if( isMember( n[0], r ) ){
+        return true;
+      }
+    }
+  }else if( n.getKind()==kind::AND || n.getKind()==kind::OR ){
+    bool conj = (n.getKind()==kind::AND)==polarity;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      bool isEnt = isEntailed( n[i], polarity );
+      if( isEnt!=conj ){
+        return !conj;
+      }
+    }
+    return conj;
+  }else if( n.isConst() ){
+    return ( polarity && n==d_true ) || ( !polarity && n==d_false );
+  }
+  return false;
+}
+
+bool TheorySetsPrivate::isMember( Node x, Node s ) {
+  Assert( d_equalityEngine.hasTerm( s ) && d_equalityEngine.getRepresentative( s )==s );
+  NodeIntMap::iterator mem_i = d_members.find( s );
+  if( mem_i != d_members.end() ) {
+    for( int i=0; i<(*mem_i).second; i++ ){
+      if( ee_areEqual( d_members_data[s][i][0], x ) ){
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+bool TheorySetsPrivate::isSetDisequalityEntailed( Node r1, Node r2 ) {
+  Assert( d_equalityEngine.hasTerm( r1 ) && d_equalityEngine.getRepresentative( r1 )==r1 );
+  Assert( d_equalityEngine.hasTerm( r2 ) && d_equalityEngine.getRepresentative( r2 )==r2 );
+  TypeNode tn = r1.getType();
+  Node eqc_es = d_eqc_emptyset[tn];
+  bool is_sat = false;
+  for( unsigned e=0; e<2; e++ ){
+    Node a = e==0 ? r1 : r2;
+    Node b = e==0 ? r2 : r1;
+    //if there are members in a
+    std::map< Node, std::map< Node, Node > >::iterator itpma = d_pol_mems[0].find( a );
+    if( itpma!=d_pol_mems[0].end() ){
+      Assert( !itpma->second.empty() );
+      //if b is empty
+      if( b==eqc_es ){
+        if( !itpma->second.empty() ){
+          is_sat = true;
+          Trace("sets-deq") << "Disequality is satisfied because members are in " << a << " and " << b << " is empty" << std::endl;
+        }else{
+          //a should not be singleton
+          Assert( d_eqc_singleton.find( a )==d_eqc_singleton.end() );
+        }
+      }else{
+        std::map< Node, Node >::iterator itsb = d_eqc_singleton.find( b );
+        std::map< Node, std::map< Node, Node > >::iterator itpmb = d_pol_mems[1].find( b );
+        std::vector< Node > prev;
+        for( std::map< Node, Node >::iterator itm = itpma->second.begin(); itm != itpma->second.end(); ++itm ){
+          //if b is a singleton
+          if( itsb!=d_eqc_singleton.end() ){
+            if( ee_areDisequal( itm->first, itsb->second[0] ) ){
+              Trace("sets-deq") << "Disequality is satisfied because of " << itm->second << ", singleton eq " << itsb->second[0] << std::endl;
+              is_sat = true;
+            }
+            //or disequal with another member
+            for( unsigned k=0; k<prev.size(); k++ ){
+              if( ee_areDisequal( itm->first, prev[k] ) ){
+                Trace("sets-deq") << "Disequality is satisfied because of disequal members " << itm->first << " " << prev[k] << ", singleton eq " << std::endl;
+                is_sat = true;
+                break;
+              }
+            }
+            //TODO: this can be generalized : maintain map to abstract domain ( set -> cardinality )
+          //if a has positive member that is negative member in b 
+          }else if( itpmb!=d_pol_mems[1].end() ){
+            for( std::map< Node, Node >::iterator itnm = itpmb->second.begin(); itnm != itpmb->second.end(); ++itnm ){
+              if( ee_areEqual( itm->first, itnm->first ) ){
+                Trace("sets-deq") << "Disequality is satisfied because of " << itm->second << " " << itnm->second << std::endl;
+                is_sat = true;
+                break;
+              }
+            }
+          }
+          if( is_sat ){
+            break;
+          }
+          prev.push_back( itm->first );
+        }
+      }
+      if( is_sat ){
+        break;
+      }
+    }
+  }
+  return is_sat;
+}
+        
+bool TheorySetsPrivate::assertFact( Node fact, Node exp ){
+  Trace("sets-assert") << "TheorySets::assertFact : " << fact << ", exp = " << exp << std::endl;
+  bool polarity = fact.getKind() != kind::NOT;
+  TNode atom = polarity ? fact : fact[0];
+  if( !isEntailed( atom, polarity ) ){
+    if( atom.getKind()==kind::EQUAL ){
+      d_equalityEngine.assertEquality( atom, polarity, exp );
+    }else{
+      d_equalityEngine.assertPredicate( atom, polarity, exp );
+    }
+    if( !d_conflict ){
+      if( atom.getKind()==kind::MEMBER && polarity ){
+        //check if set has a value, if so, we can propagate
+        Node r = d_equalityEngine.getRepresentative( atom[1] );
+        EqcInfo * e = getOrMakeEqcInfo( r, true );
+        if( e ){
+          Node s = e->d_singleton;
+          if( !s.isNull() ){
+            Node exp = NodeManager::currentNM()->mkNode( kind::AND, atom, atom[1].eqNode( s ) );
+            d_keep.insert( exp );
+            if( s.getKind()==kind::SINGLETON ){
+              if( s[0]!=atom[0] ){
+                Trace("sets-prop") << "Propagate mem-eq : " << exp << std::endl;
+                Node eq = s[0].eqNode( atom[0] );
+                d_keep.insert( eq );
+                assertFact( eq, exp ); 
+              }
+            }else{
+              Trace("sets-prop") << "Propagate mem-eq conflict : " << exp << std::endl;
+              d_conflict = true;
+              d_external.d_out->conflict( exp );
+            }
+          }
+        }
+        //add to membership list
+        NodeIntMap::iterator mem_i = d_members.find( r );
+        int n_members = 0;
+        if( mem_i != d_members.end() ) {
+          n_members = (*mem_i).second;
+        }
+        d_members[r] = n_members + 1;
+        if( n_members<(int)d_members_data[r].size() ){
+          d_members_data[r][n_members] = atom;
+        }else{
+          d_members_data[r].push_back( atom );
+        }
+      }
+    }
+    return true;
+  }else{
+    return false;
+  }
+}
+
+bool TheorySetsPrivate::assertFactRec( Node fact, Node exp, std::vector< Node >& lemma, int inferType ) {
+  if( ( options::setsInferAsLemmas() && inferType!=-1 ) || inferType==1 ){
+    if( !isEntailed( fact, true ) ){
+      lemma.push_back( exp==d_true ? fact : NodeManager::currentNM()->mkNode( kind::IMPLIES, exp, fact ) );
+      return true;
+    }
+  }else{
+    Trace("sets-fact") << "Assert fact rec : " << fact << ", exp = " << exp << std::endl;
+    if( fact.isConst() ){
+      //either trivial or a conflict
+      if( fact==d_false ){
+        Trace("sets-lemma") << "Conflict : " << exp << std::endl;
+        d_conflict = true;
+        d_external.d_out->conflict( exp );
+        return true;
+      }
+    }else if( fact.getKind()==kind::AND || ( fact.getKind()==kind::NOT && fact[0].getKind()==kind::OR ) ){
+      bool ret = false;
+      Node f = fact.getKind()==kind::NOT ? fact[0] : fact;
+      for( unsigned i=0; i<f.getNumChildren(); i++ ){
+        Node factc = fact.getKind()==kind::NOT ? f[i].negate() : f[i];
+        bool tret = assertFactRec( factc, exp, lemma, inferType );
+        ret = ret || tret;
+        if( d_conflict ){
+          return true;
+        }
+      }
+      return ret;
+    }else{
+      bool polarity = fact.getKind() != kind::NOT;
+      TNode atom = polarity ? fact : fact[0];
+      //things we can assert to equality engine
+      if( atom.getKind()==kind::MEMBER || ( atom.getKind()==kind::EQUAL && atom[0].getType().isSet() ) ){
+        //send to equality engine
+        if( assertFact( fact, exp ) ){
+          d_addedFact = true;
+          return true;
+        }
+      }else{
+        if( !isEntailed( fact, true ) ){
+          //must send as lemma
+          lemma.push_back( exp==d_true ? fact : NodeManager::currentNM()->mkNode( kind::IMPLIES, exp, fact ) );
+          return true;
+        }
+      }
+    }
+  }
+  return false;
+}
+void TheorySetsPrivate::assertInference( Node fact, Node exp, std::vector< Node >& lemmas, const char * c, int inferType ) {
+  d_keep.insert( exp );
+  d_keep.insert( fact );
+  if( assertFactRec( fact, exp, lemmas, inferType ) ){
+    Trace("sets-lemma") << "Sets::Lemma : " << fact << " from " << exp << " by " << c << std::endl;
+    Trace("sets-assertion") << "(assert (=> " << exp << " " << fact << ")) ; by " << c << std::endl;
+  }
+}
+
+void TheorySetsPrivate::assertInference( Node fact, std::vector< Node >& exp, std::vector< Node >& lemmas, const char * c, int inferType ){
+  Node exp_n = exp.empty() ? d_true : ( exp.size()==1 ? exp[0] : NodeManager::currentNM()->mkNode( kind::AND, exp ) );
+  assertInference( fact, exp_n, lemmas, c, inferType );
+}
+
+void TheorySetsPrivate::assertInference( std::vector< Node >& conc, Node exp, std::vector< Node >& lemmas, const char * c, int inferType ){
+  if( !conc.empty() ){
+    Node fact = conc.size()==1 ? conc[0] : NodeManager::currentNM()->mkNode( kind::AND, conc );
+    assertInference( fact, exp, lemmas, c, inferType );
+  }
+}
+void TheorySetsPrivate::assertInference( std::vector< Node >& conc, std::vector< Node >& exp, std::vector< Node >& lemmas, const char * c, int inferType ) {
+  Node exp_n = exp.empty() ? d_true : ( exp.size()==1 ? exp[0] : NodeManager::currentNM()->mkNode( kind::AND, exp ) );
+  assertInference( conc, exp_n, lemmas, c, inferType );
+}
+
+void TheorySetsPrivate::split( Node n, int reqPol ) {
+  n = Rewriter::rewrite( n );
+  Node lem = NodeManager::currentNM()->mkNode( kind::OR, n, n.negate() );
+  std::vector< Node > lemmas;
+  lemmas.push_back( lem );
+  flushLemmas( lemmas );
+  Trace("sets-lemma") << "Sets::Lemma split : " << lem << std::endl;
+  if( reqPol!=0 ){
+    Trace("sets-lemma") << "Sets::Require phase "  << n << " " << (reqPol>0) << std::endl;
+    d_external.getOutputChannel().requirePhase( n, reqPol>0 );
+  }
+}
+
+void TheorySetsPrivate::fullEffortCheck(){
+  Trace("sets") << "----- Full effort check ------" << std::endl;
+  do{
+    Trace("sets") << "...iterate full effort check..." << std::endl;
+    Assert( d_equalityEngine.consistent() );
+    d_sentLemma = false;
+    d_addedFact = false;
+    d_set_eqc.clear();
+    d_set_eqc_list.clear();
+    d_eqc_emptyset.clear();
+    d_eqc_univset.clear();
+    d_eqc_singleton.clear();
+    d_congruent.clear();
+    d_nvar_sets.clear();
+    d_pol_mems[0].clear();
+    d_pol_mems[1].clear();
+    d_members_index.clear();
+    d_singleton_index.clear();
+    d_bop_index.clear();
+    d_op_list.clear();
+    d_card_enabled = false;
+    d_rels_enabled = false;
+    d_eqc_to_card_term.clear();
+
+    std::vector< Node > lemmas;
+    Trace("sets-eqc") << "Equality Engine:" << std::endl;
+    eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( &d_equalityEngine );
+    while( !eqcs_i.isFinished() ){
+      Node eqc = (*eqcs_i);
+      bool isSet = false;
+      TypeNode tn = eqc.getType();
+      if( tn.isSet() ){
+        isSet = true;
+        d_set_eqc.push_back( eqc );
+      }
+      Trace("sets-eqc") << "[" << eqc << "] : ";
+      eq::EqClassIterator eqc_i = eq::EqClassIterator( eqc, &d_equalityEngine );
+      while( !eqc_i.isFinished() ) {
+        Node n = (*eqc_i);
+        if( n!=eqc ){
+          Trace("sets-eqc") << n << " ";
+        }
+        if( n.getKind()==kind::MEMBER ){
+          if( eqc.isConst() ){
+            Node s = d_equalityEngine.getRepresentative( n[1] );
+            Node x = d_equalityEngine.getRepresentative( n[0] );
+            int pindex = eqc==d_true ? 0 : ( eqc==d_false ? 1 : -1 );
+            if( pindex!=-1  ){
+              if( d_pol_mems[pindex][s].find( x )==d_pol_mems[pindex][s].end() ){
+                d_pol_mems[pindex][s][x] = n;
+                Trace("sets-debug2") << "Membership[" << x << "][" << s << "] : " << n << ", pindex = " << pindex << std::endl;
+              }
+              if( d_members_index[s].find( x )==d_members_index[s].end() ){
+                d_members_index[s][x] = n;
+                d_op_list[kind::MEMBER].push_back( n );
+              }
+            }else{
+              Assert( false );
+            }
+          }
+        }else if( n.getKind()==kind::SINGLETON || n.getKind()==kind::UNION || n.getKind()==kind::INTERSECTION || 
+                  n.getKind()==kind::SETMINUS || n.getKind()==kind::EMPTYSET || n.getKind()==kind::UNIVERSE_SET ){
+          if( n.getKind()==kind::SINGLETON ){
+            //singleton lemma
+            getProxy( n );
+            Node r = d_equalityEngine.getRepresentative( n[0] );
+            if( d_singleton_index.find( r )==d_singleton_index.end() ){
+              d_singleton_index[r] = n;
+              d_eqc_singleton[eqc] = n;
+              d_op_list[kind::SINGLETON].push_back( n );
+            }else{
+              d_congruent[n] = d_singleton_index[r];
+            }
+          }else if( n.getKind()==kind::EMPTYSET ){
+            d_eqc_emptyset[tn] = eqc;
+          }else if( n.getKind()==kind::UNIVERSE_SET ){
+            d_eqc_univset[tn] = eqc;
+          }else{
+            Node r1 = d_equalityEngine.getRepresentative( n[0] );
+            Node r2 = d_equalityEngine.getRepresentative( n[1] );
+            if( d_bop_index[n.getKind()][r1].find( r2 )==d_bop_index[n.getKind()][r1].end() ){
+              d_bop_index[n.getKind()][r1][r2] = n;
+              d_op_list[n.getKind()].push_back( n );
+            }else{
+              d_congruent[n] = d_bop_index[n.getKind()][r1][r2];
+            }
+          }
+          d_nvar_sets[eqc].push_back( n );
+          Trace("sets-debug2") << "Non-var-set[" << eqc << "] : " << n << std::endl;
+          d_set_eqc_list[eqc].push_back( n );
+        }else if( n.getKind()==kind::CARD ){
+          d_card_enabled = true;
+          TypeNode tn = n[0].getType().getSetElementType();
+          if( tn.isInterpretedFinite() ){
+            std::stringstream ss;
+            ss << "ERROR: cannot use cardinality on sets with finite element type." << std::endl;
+            throw LogicException(ss.str());
+            //TODO: extend approach for this case
+          }
+          Node r = d_equalityEngine.getRepresentative( n[0] );
+          if( d_eqc_to_card_term.find( r )==d_eqc_to_card_term.end() ){
+            d_eqc_to_card_term[ r ] = n;
+            registerCardinalityTerm( n[0], lemmas );
+          }
+        }else{
+          if( d_rels->isRelationKind( n.getKind() ) ){
+            d_rels_enabled = true;
+          }
+          if( isSet ){
+            d_set_eqc_list[eqc].push_back( n );
+          }
+        }
+        ++eqc_i;
+      }
+      Trace("sets-eqc") << std::endl;
+      ++eqcs_i;
+    }
+    
+    flushLemmas( lemmas );
+    if( !hasProcessed() ){
+      if( Trace.isOn("sets-mem") ){
+        for( unsigned i=0; i<d_set_eqc.size(); i++ ){
+          Node s = d_set_eqc[i];
+          Trace("sets-mem") << "Eqc " << s << " : ";
+          std::map< Node, std::map< Node, Node > >::iterator it = d_pol_mems[0].find( s );
+          if( it!=d_pol_mems[0].end() ){
+            Trace("sets-mem") << "Memberships : ";
+            for( std::map< Node, Node >::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2 ){
+              Trace("sets-mem") << it2->first << " ";
+            }
+          }
+          std::map< Node, Node >::iterator its = d_eqc_singleton.find( s );
+          if( its!=d_eqc_singleton.end() ){
+            Trace("sets-mem") << " : Singleton : " << its->second;
+          }
+          Trace("sets-mem") << std::endl;
+        }
+      }
+    
+      checkDownwardsClosure( lemmas );
+      if( options::setsInferAsLemmas() ){
+        flushLemmas( lemmas );
+      }
+      if( !hasProcessed() ){
+        checkUpwardsClosure( lemmas );
+        flushLemmas( lemmas );
+        if( !hasProcessed() ){
+          std::vector< Node > intro_sets;
+          //for cardinality
+          if( d_card_enabled ){
+            checkCardBuildGraph( lemmas );
+            flushLemmas( lemmas );
+            if( !hasProcessed() ){
+              checkMinCard( lemmas );
+              flushLemmas( lemmas );
+              if( !hasProcessed() ){
+                checkCardCycles( lemmas );
+                flushLemmas( lemmas );
+                if( !hasProcessed() ){
+                  checkNormalForms( lemmas, intro_sets );
+                  flushLemmas( lemmas );
+                }
+              }
+            }
+          }
+          if( !hasProcessed() ){
+            checkDisequalities( lemmas );
+            flushLemmas( lemmas );
+            if( !hasProcessed() ){
+              //introduce splitting on venn regions (absolute last resort)
+              if( d_card_enabled && !hasProcessed() && !intro_sets.empty() ){
+                Assert( intro_sets.size()==1 );
+                Trace("sets-intro") << "Introduce term : " << intro_sets[0] << std::endl;
+                Trace("sets-intro") << "  Actual Intro : ";
+                debugPrintSet( intro_sets[0], "sets-nf" );
+                Trace("sets-nf") << std::endl;
+                Node k = getProxy( intro_sets[0] );
+                d_sentLemma = true;
+              }
+            }
+          }
+        }
+      }
+    }
+  }while( !d_sentLemma && !d_conflict && d_addedFact );
+  Trace("sets") << "----- End full effort check, conflict=" << d_conflict << ", lemma=" << d_sentLemma << std::endl;
+}
+
+void TheorySetsPrivate::checkDownwardsClosure( std::vector< Node >& lemmas ) {
+  Trace("sets") << "Downwards closure..." << std::endl;
+  //downwards closure
+  for( std::map< Node, std::map< Node, Node > >::iterator it = d_pol_mems[0].begin(); it != d_pol_mems[0].end(); ++it ){
+    std::map< Node, std::vector< Node > >::iterator itn = d_nvar_sets.find( it->first );
+    if( itn!=d_nvar_sets.end() ){
+      for( unsigned j=0; j<itn->second.size(); j++ ){
+        if( d_congruent.find( itn->second[j] )==d_congruent.end() ){
+          for( std::map< Node, Node >::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2 ){ 
+            Node mem = it2->second;
+            Node eq_set = itn->second[j];
+            Assert( d_equalityEngine.areEqual( mem[1], eq_set ) );
+            if( mem[1]!=eq_set ){
+              Trace("sets-debug") << "Downwards closure based on " << mem << ", eq_set = " << eq_set << std::endl;
+              if( !options::setsProxyLemmas() ){
+                Node nmem = NodeManager::currentNM()->mkNode( kind::MEMBER, mem[0], eq_set );
+                nmem = Rewriter::rewrite( nmem );
+                std::vector< Node > exp;
+                exp.push_back( mem );
+                exp.push_back( mem[1].eqNode( eq_set ) );
+                assertInference( nmem, exp, lemmas, "downc" );
+                if( d_conflict ){
+                  return;
+                }
+              }else{
+                //use proxy set
+                Node k = getProxy( eq_set );
+                Node pmem = NodeManager::currentNM()->mkNode( kind::MEMBER, mem[0], k );
+                Node nmem = NodeManager::currentNM()->mkNode( kind::MEMBER, mem[0], eq_set );
+                nmem = Rewriter::rewrite( nmem );
+                std::vector< Node > exp;
+                if( ee_areEqual( mem, pmem ) ){
+                  exp.push_back( pmem );
+                }else{
+                  nmem = NodeManager::currentNM()->mkNode( kind::OR, pmem.negate(), nmem );
+                }
+                assertInference( nmem, exp, lemmas, "downc" );
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+void TheorySetsPrivate::checkUpwardsClosure( std::vector< Node >& lemmas ) {
+  //upwards closure
+  for( std::map< Kind, std::map< Node, std::map< Node, Node > > >::iterator itb = d_bop_index.begin(); itb != d_bop_index.end(); ++itb ){
+    Kind k = itb->first;
+    Trace("sets") << "Upwards closure " << k << "..." << std::endl;
+    for( std::map< Node, std::map< Node, Node > >::iterator it = itb->second.begin(); it != itb->second.end(); ++it ){
+      Node r1 = it->first;
+      //see if there are members in first argument r1
+      std::map< Node, std::map< Node, Node > >::iterator itm1 = d_pol_mems[0].find( r1 );
+      if( itm1!=d_pol_mems[0].end() || k==kind::UNION ){
+        for( std::map< Node, Node >::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2 ){
+          Node r2 = it2->first;
+          //see if there are members in second argument
+          std::map< Node, std::map< Node, Node > >::iterator itm2 = d_pol_mems[0].find( r2 );
+          if( itm2!=d_pol_mems[0].end() || k!=kind::INTERSECTION ){
+            Trace("sets-debug") << "Checking " << it2->second << ", members = " << (itm1!=d_pol_mems[0].end()) << ", " << (itm2!=d_pol_mems[0].end()) << std::endl;
+            //for all members of r1
+            if( itm1!=d_pol_mems[0].end() ){
+              for( std::map< Node, Node >::iterator itm1m = itm1->second.begin(); itm1m != itm1->second.end(); ++itm1m ){
+                Node xr = itm1m->first;
+                Node x = itm1m->second[0];
+                Trace("sets-debug") << "checking membership " << xr << " " << itm1m->second << std::endl;
+                std::vector< Node > exp;
+                exp.push_back( itm1m->second );
+                addEqualityToExp( it2->second[0], itm1m->second[1], exp );
+                bool valid = false;
+                int inferType = 0;
+                if( k==kind::UNION ){
+                  valid = true;
+                }else if( k==kind::INTERSECTION ){
+                  //conclude x is in it2->second
+                  //if also existing in members of r2
+                  bool in_r2 = itm2!=d_pol_mems[0].end() && itm2->second.find( xr )!=itm2->second.end();
+                  if( in_r2 ){
+                    exp.push_back( itm2->second[xr] );
+                    addEqualityToExp( it2->second[1], itm2->second[xr][1], exp );
+                    addEqualityToExp( x, itm2->second[xr][0], exp );
+                    valid = true;
+                  }
+                }else{
+                  Assert( k==kind::SETMINUS );
+                  /*
+                  std::map< Node, std::map< Node, Node > >::iterator itnm2 = d_pol_mems[1].find( r2 );
+                  if( itnm2!=d_pol_mems[1].end() ){
+                    bool not_in_r2 = itnm2->second.find( xr )!=itnm2->second.end();
+                    if( not_in_r2 ){
+                      exp.push_back( itnm2->second[xr] );
+                      if( it2->second[1]!=itnm2->second[xr][1] ){
+                        Assert( d_equalityEngine.areEqual( it2->second[1], itnm2->second[xr][1] ) );
+                        exp.push_back( it2->second[1].eqNode( itnm2->second[xr][1] ) );
+                      }
+                      if( x!=itnm2->second[xr][0] ){
+                        Assert( d_equalityEngine.areEqual( x, itnm2->second[xr][0] ) );
+                        exp.push_back( NodeManager::currentNM()->mkNode( kind::EQUAL, x, itnm2->second[xr][0] ) );
+                      }
+                      valid = true;
+                    }
+                  }
+                  */
+                  if( !valid ){
+                    bool in_r2 = itm2!=d_pol_mems[0].end() && itm2->second.find( xr )!=itm2->second.end();
+                    if( !in_r2 ){
+                      // must add lemma for set minus since non-membership in this case is not explained
+                      exp.push_back( NodeManager::currentNM()->mkNode( kind::MEMBER, x, it2->second[1] ).negate() );
+                      valid = true;
+                      inferType = 1;
+                    }
+                  }
+                }
+                if( valid ){
+                  Node rr = d_equalityEngine.getRepresentative( it2->second );
+                  if( !isMember( x, rr ) ){
+                    Node kk = getProxy( it2->second );
+                    Node fact = NodeManager::currentNM()->mkNode( kind::MEMBER, x, kk );
+                    assertInference( fact, exp, lemmas, "upc", inferType );
+                    if( d_conflict ){
+                      return;
+                    }
+                  }
+                }
+                Trace("sets-debug") << "done checking membership " << xr << " " << itm1m->second << std::endl;
+              }
+            }
+            if( k==kind::UNION ){
+              if( itm2!=d_pol_mems[0].end() ){
+                //for all members of r2
+                for( std::map< Node, Node >::iterator itm2m = itm2->second.begin(); itm2m != itm2->second.end(); ++itm2m ){
+                  Node x = itm2m->second[0];
+                  Node rr = d_equalityEngine.getRepresentative( it2->second );
+                  if( !isMember( x, rr ) ){
+                    std::vector< Node > exp;
+                    exp.push_back( itm2m->second );
+                    addEqualityToExp( it2->second[1], itm2m->second[1], exp );
+                    Node k = getProxy( it2->second );
+                    Node fact = NodeManager::currentNM()->mkNode( kind::MEMBER, x, k );
+                    assertInference( fact, exp, lemmas, "upc2" );
+                    if( d_conflict ){
+                      return;
+                    }
+                  }
+                }
+              }
+            }   
+          }      
+        }
+      }
+    }
+  }
+  if( !hasProcessed() ){
+    //universal sets
+    Trace("sets-debug") << "Check universe sets..." << std::endl;
+    //all elements must be in universal set
+    for( std::map< Node, std::map< Node, Node > >::iterator it = d_pol_mems[0].begin(); it != d_pol_mems[0].end(); ++it ){
+      TypeNode tn = it->first.getType();
+      std::map< TypeNode, Node >::iterator itu = d_eqc_univset.find( tn );
+      if( itu==d_eqc_univset.end() || itu->second!=it->first ){
+        Node u = getUnivSet( tn );
+        for( std::map< Node, Node >::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2 ){
+          Node mem = it2->second;
+          Node fact = NodeManager::currentNM()->mkNode( kind::MEMBER, mem[0], u );
+          assertInference( fact, mem, lemmas, "upuniv" );
+          if( d_conflict ){
+            return;
+          }
+        }
+      }
+    }
+  }
+}
+
+void TheorySetsPrivate::checkDisequalities( std::vector< Node >& lemmas ) {
+  //disequalities
+  Trace("sets") << "Disequalities..." << std::endl;
+  for(NodeBoolMap::const_iterator it=d_deq.begin(); it !=d_deq.end(); ++it) {
+    if( (*it).second ){
+      Node deq = (*it).first;
+      //check if it is already satisfied
+      Assert( d_equalityEngine.hasTerm( deq[0] ) && d_equalityEngine.hasTerm( deq[1] ) );
+      Node r1 = d_equalityEngine.getRepresentative( deq[0] );
+      Node r2 = d_equalityEngine.getRepresentative( deq[1] );
+      bool is_sat = isSetDisequalityEntailed( r1, r2 );
+      /*
+      if( !is_sat ){
+        //try to make one of them empty
+        for( unsigned e=0; e<2; e++ ){
+        }
+      }
+      */
+      Trace("sets-debug") << "Check disequality " << deq << ", is_sat = " << is_sat << std::endl;
+      //will process regardless of sat/processed/unprocessed
+      d_deq[deq] = false;
+      
+      if( !is_sat ){
+        if( d_deq_processed.find( deq )==d_deq_processed.end() ){
+          d_deq_processed.insert( deq );
+          d_deq_processed.insert( deq[1].eqNode( deq[0] ) );
+          Trace("sets") << "Process Disequality : " << deq.negate() << std::endl;
+          TypeNode elementType = deq[0].getType().getSetElementType();
+          Node x = NodeManager::currentNM()->mkSkolem("sde_", elementType);
+          Node mem1 = NodeManager::currentNM()->mkNode( kind::MEMBER, x, deq[0] );
+          Node mem2 = NodeManager::currentNM()->mkNode( kind::MEMBER, x, deq[1] );
+          Node lem = NodeManager::currentNM()->mkNode( kind::OR, deq, NodeManager::currentNM()->mkNode( kind::EQUAL, mem1, mem2 ).negate() );
+          lem = Rewriter::rewrite( lem );
+          assertInference( lem, d_emp_exp, lemmas, "diseq", 1 );
+          flushLemmas( lemmas );
+          if( hasProcessed() ){
+            return;
+          }
+        }
+      }
+    }
+  }
+}
+
+void TheorySetsPrivate::checkCardBuildGraph( std::vector< Node >& lemmas ) {
+  Trace("sets") << "Cardinality graph..." << std::endl;
+  //first, ensure cardinality relationships are added as lemmas for all non-basic set terms
+  for( unsigned i=0; i<d_set_eqc.size(); i++ ){
+    Node eqc = d_set_eqc[i];
+    std::map< Node, std::vector< Node > >::iterator itn = d_nvar_sets.find( eqc );
+    if( itn!=d_nvar_sets.end() ){
+      for( unsigned j=0; j<itn->second.size(); j++ ){
+        Node n = itn->second[j];
+        if( d_congruent.find( n )==d_congruent.end() ){
+          //if setminus, do for intersection instead
+          if( n.getKind()==kind::SETMINUS ){
+            n = Rewriter::rewrite( NodeManager::currentNM()->mkNode( kind::INTERSECTION, n[0], n[1] ) );
+          }
+          registerCardinalityTerm( n, lemmas );
+        }
+      }
+    }
+  }
+  Trace("sets") << "Done cardinality graph" << std::endl;
+}
+
+void TheorySetsPrivate::registerCardinalityTerm( Node n, std::vector< Node >& lemmas ){
+  if( d_card_processed.find( n )==d_card_processed.end() ){
+    d_card_processed.insert( n );
+    Trace("sets-card") << "Cardinality lemmas for " << n << " : " << std::endl;
+    std::vector< Node > cterms;
+    if( n.getKind()==kind::INTERSECTION ){
+      for( unsigned e=0; e<2; e++ ){
+        Node s = NodeManager::currentNM()->mkNode( kind::SETMINUS, n[e], n[1-e] );
+        cterms.push_back( s );
+      }
+      Node pos_lem = NodeManager::currentNM()->mkNode( kind::GEQ, NodeManager::currentNM()->mkNode( kind::CARD, n ), d_zero );
+      assertInference( pos_lem, d_emp_exp, lemmas, "pcard", 1 );
+    }else{
+      cterms.push_back( n );
+    }
+    for( unsigned k=0; k<cterms.size(); k++ ){
+      Node nn = cterms[k];
+      Node nk = getProxy( nn );
+      Node pos_lem = NodeManager::currentNM()->mkNode( kind::GEQ, NodeManager::currentNM()->mkNode( kind::CARD, nk ), d_zero );
+      assertInference( pos_lem, d_emp_exp, lemmas, "pcard", 1 );
+      if( nn!=nk ){
+        Node lem = NodeManager::currentNM()->mkNode( kind::EQUAL, NodeManager::currentNM()->mkNode( kind::CARD, nk ),
+                                                                  NodeManager::currentNM()->mkNode( kind::CARD, nn ) );
+        lem = Rewriter::rewrite( lem );
+        Trace("sets-card") << "  " << k << " : " << lem << std::endl;
+        assertInference( lem, d_emp_exp, lemmas, "card", 1 );
+      }
+    }
+  }
+}
+
+void TheorySetsPrivate::checkCardCycles( std::vector< Node >& lemmas ) {
+  Trace("sets") << "Check cardinality cycles..." << std::endl;
+  //build order of equivalence classes, also build cardinality graph
+  std::vector< Node > set_eqc_tmp;
+  set_eqc_tmp.insert( set_eqc_tmp.end(), d_set_eqc.begin(), d_set_eqc.end() );
+  d_set_eqc.clear();
+  d_card_parent.clear();
+  for( unsigned i=0; i<set_eqc_tmp.size(); i++ ){
+    std::vector< Node > curr;
+    std::vector< Node > exp;
+    checkCardCyclesRec( set_eqc_tmp[i], curr, exp, lemmas );
+    flushLemmas( lemmas );
+    if( hasProcessed() ){
+      return;
+    }
+  }
+  Trace("sets") << "Done check cardinality cycles" << std::endl;
+}
+
+void TheorySetsPrivate::checkCardCyclesRec( Node eqc, std::vector< Node >& curr, std::vector< Node >& exp, std::vector< Node >& lemmas ) {
+  if( std::find( curr.begin(), curr.end(), eqc )!=curr.end() ){
+    Trace("sets-debug") << "Found venn region loop..." << std::endl;
+    if( curr.size()>1 ){
+      //all regions must be equal
+      std::vector< Node > conc;
+      for( unsigned i=1; i<curr.size(); i++ ){
+        conc.push_back( curr[0].eqNode( curr[i] ) );
+      }
+      Node fact = conc.size()==1 ? conc[0] : NodeManager::currentNM()->mkNode( kind::AND, conc );
+      assertInference( fact, exp, lemmas, "card_cycle" );
+      flushLemmas( lemmas );
+    }else{
+      //should be guaranteed based on not exploring equal parents
+      Assert( false );
+    }
+  }else if( std::find( d_set_eqc.begin(), d_set_eqc.end(), eqc )==d_set_eqc.end() ){
+    curr.push_back( eqc );
+    TypeNode tn = eqc.getType();
+    bool is_empty = eqc==d_eqc_emptyset[tn];
+    Node emp_set = getEmptySet( tn );
+    std::map< Node, std::vector< Node > >::iterator itn = d_nvar_sets.find( eqc );
+    if( itn!=d_nvar_sets.end() ){
+      for( unsigned j=0; j<itn->second.size(); j++ ){
+        Node n = itn->second[j];
+        if( n.getKind()==kind::INTERSECTION || n.getKind()==kind::SETMINUS ){
+          Trace("sets-debug") << "Build cardinality parents for " << n << "..." << std::endl;
+          std::vector< Node > sib;
+          unsigned true_sib = 0;
+          if( n.getKind()==kind::INTERSECTION ){
+            d_card_base[n] = n;
+            for( unsigned e=0; e<2; e++ ){
+              Node sm = Rewriter::rewrite( NodeManager::currentNM()->mkNode( kind::SETMINUS, n[e], n[1-e] ) );
+              sib.push_back( sm );
+            }
+            true_sib = 2;
+          }else{
+            Node si = Rewriter::rewrite( NodeManager::currentNM()->mkNode( kind::INTERSECTION, n[0], n[1] ) );
+            sib.push_back( si );
+            d_card_base[n] = si;
+            Node osm = Rewriter::rewrite( NodeManager::currentNM()->mkNode( kind::SETMINUS, n[1], n[0] ) );
+            sib.push_back( osm );
+            true_sib = 1;
+          }
+          Node u = Rewriter::rewrite( NodeManager::currentNM()->mkNode( kind::UNION, n[0], n[1] ) );
+          if( !d_equalityEngine.hasTerm( u ) ){
+            u = Node::null();
+          }
+          unsigned n_parents = true_sib + ( u.isNull() ? 0 : 1 );
+          //if this set is empty
+          if( is_empty ){
+            Assert( ee_areEqual( n, emp_set ) );
+            Trace("sets-debug") << "  empty, parents equal siblings" << std::endl;
+            std::vector< Node > conc;
+            //parent equal siblings
+            for( unsigned e=0; e<true_sib; e++ ){
+              if( d_equalityEngine.hasTerm( sib[e] ) && !ee_areEqual( n[e], sib[e] ) ){
+                conc.push_back( n[e].eqNode( sib[e] ) );
+              }
+            }
+            assertInference( conc, n.eqNode( emp_set ), lemmas, "cg_emp" );
+            flushLemmas( lemmas );
+            if( hasProcessed() ){
+              return;
+            }else{
+              //justify why there is no edge to parents (necessary?)
+              for( unsigned e=0; e<n_parents; e++ ){
+                Node p = (e==true_sib) ? u : n[e];
+                
+              }
+            }
+          }else{
+            std::vector< Node > card_parents;
+            std::vector< int > card_parent_ids;
+            //check if equal to a parent
+            for( unsigned e=0; e<n_parents; e++ ){
+              Trace("sets-debug") << "  check parent " << e << "/" << n_parents << std::endl;
+              bool is_union = e==true_sib;
+              Node p = (e==true_sib) ? u : n[e];
+              Trace("sets-debug") << "  check relation to parent " << p << ", isu=" << is_union << "..." << std::endl;
+              //if parent is empty
+              if( ee_areEqual( p, emp_set ) ){
+                Trace("sets-debug") << "  it is empty..." << std::endl;
+                Assert( !ee_areEqual( n, emp_set ) );
+                assertInference( n.eqNode( emp_set ), p.eqNode( emp_set ), lemmas, "cg_emppar" );
+                if( hasProcessed() ){
+                  return;
+                }
+              //if we are equal to a parent
+              }else if( ee_areEqual( p, n ) ){
+                Trace("sets-debug") << "  it is equal to this..." << std::endl;
+                std::vector< Node > conc;
+                std::vector< int > sib_emp_indices;
+                if( is_union ){
+                  for( unsigned s=0; s<sib.size(); s++ ){
+                    sib_emp_indices.push_back( s );
+                  }
+                }else{
+                  sib_emp_indices.push_back( e );
+                }
+                //sibling(s) are empty
+                for( unsigned s=0; s<sib_emp_indices.size(); s++ ){
+                  unsigned si = sib_emp_indices[s];
+                  if( !ee_areEqual( sib[si], emp_set ) ){
+                    conc.push_back( sib[si].eqNode( emp_set ) );
+                  }else{
+                    Trace("sets-debug") << "Sibling " << sib[si] << " is already empty." << std::endl;
+                  }
+                }
+                if( !is_union && n.getKind()==kind::INTERSECTION && !u.isNull() ){
+                  //union is equal to other parent
+                  if( !ee_areEqual( u, n[1-e] ) ){
+                    conc.push_back( u.eqNode( n[1-e] ) );
+                  }
+                }
+                Trace("sets-debug") << "...derived " << conc.size() << " conclusions" << std::endl;
+                assertInference( conc, n.eqNode( p ), lemmas, "cg_eqpar" );
+                flushLemmas( lemmas );
+                if( hasProcessed() ){
+                  return;
+                }
+              }else{
+                Trace("sets-cdg") << "Card graph : " << n << " -> " << p << std::endl;
+                //otherwise, we a syntactic subset of p
+                card_parents.push_back( p );
+                card_parent_ids.push_back( is_union ? 2 : e );
+              }
+            }
+            Assert( d_card_parent[n].empty() );
+            Trace("sets-debug") << "get parent representatives..." << std::endl;
+            //for each parent, take their representatives
+            for( unsigned k=0; k<card_parents.size(); k++ ){
+              Node eqcc = d_equalityEngine.getRepresentative( card_parents[k] );
+              Trace("sets-debug") << "Check card parent " << k << "/" << card_parents.size() << std::endl;
+              
+              //if parent is singleton, then we should either be empty to equal to it
+              std::map< Node, Node >::iterator itps = d_eqc_singleton.find( eqcc );
+              if( itps!=d_eqc_singleton.end() ){
+                bool eq_parent = false;
+                std::vector< Node > exp;
+                addEqualityToExp( card_parents[k], itps->second, exp );
+                if( ee_areDisequal( n, emp_set ) ){
+                  exp.push_back( n.eqNode( emp_set ).negate() );
+                  eq_parent = true;
+                }else{
+                  std::map< Node, std::map< Node, Node > >::iterator itpm = d_pol_mems[0].find( eqc );
+                  if( itpm!=d_pol_mems[0].end() && !itpm->second.empty() ){
+                    Node pmem = itpm->second.begin()->second;
+                    exp.push_back( pmem );
+                    addEqualityToExp( n, pmem[1], exp );
+                    eq_parent = true;
+                  }
+                }
+                //must be equal to parent
+                if( eq_parent ){
+                  Node conc = n.eqNode(  card_parents[k] );
+                  assertInference( conc, exp, lemmas, "cg_par_sing" );
+                  flushLemmas( lemmas );
+                }else{
+                  //split on empty
+                  Trace("sets-nf") << "Split empty : " << n << std::endl;
+                  split( n.eqNode( emp_set ), 1 );
+                }
+                Assert( hasProcessed() );
+                return;
+              }else{
+                bool dup = false;
+                for( unsigned l=0; l<d_card_parent[n].size(); l++ ){
+                  if( eqcc==d_card_parent[n][l] ){
+                    Trace("sets-debug") << "  parents " << l << " and " << k << " are equal, ids = " << card_parent_ids[l] << " " << card_parent_ids[k] << std::endl;
+                    dup = true;
+                    if( n.getKind()==kind::INTERSECTION ){
+                      Assert( card_parent_ids[l]!=2 );
+                      std::vector< Node > conc;
+                      if( card_parent_ids[k]==2 ){
+                        //intersection is equal to other parent
+                        unsigned pid = 1-card_parent_ids[l];
+                        if( !ee_areEqual( n[pid], n ) ){
+                          Trace("sets-debug") << "  one of them is union, make equal to other..." << std::endl;
+                          conc.push_back( n[pid].eqNode( n ) );
+                        }
+                      }else{
+                        if( !ee_areEqual( card_parents[k], n ) ){
+                          Trace("sets-debug") << "  neither is union, make equal to one parent..." << std::endl;
+                          //intersection is equal to one of the parents
+                          conc.push_back( card_parents[k].eqNode( n ) );
+                        }
+                      }
+                      assertInference( conc, card_parents[k].eqNode( d_card_parent[n][l] ), lemmas, "cg_pareq" );
+                      flushLemmas( lemmas );
+                      if( hasProcessed() ){
+                        return;
+                      }
+                    }
+                  }
+                }
+                if( !dup ){
+                  d_card_parent[n].push_back( eqcc );
+                }
+              }
+            }
+            //now recurse on parents (to ensure their normal will be computed after this eqc)
+            exp.push_back( eqc.eqNode( n ) );
+            for( unsigned k=0; k<d_card_parent[n].size(); k++ ){
+              checkCardCyclesRec( d_card_parent[n][k], curr, exp, lemmas );
+              if( hasProcessed() ){
+                return;
+              }
+            }
+            exp.pop_back();
+          }
+        }
+      }
+    }
+    curr.pop_back();
+    //parents now processed, can add to ordered list
+    d_set_eqc.push_back( eqc );
+  }else{
+    //already processed
+  }  
+}
+
+void TheorySetsPrivate::checkNormalForms( std::vector< Node >& lemmas, std::vector< Node >& intro_sets ){
+  Trace("sets") << "Check normal forms..." << std::endl;
+  // now, build normal form for each equivalence class
+  //   d_set_eqc is now sorted such that for each d_set_eqc[i], d_set_eqc[j], 
+  //      if d_set_eqc[i] is a strict syntactic subterm of d_set_eqc[j], then i<j.
+  d_ff.clear();
+  d_nf.clear();
+  for( int i=(int)(d_set_eqc.size()-1); i>=0; i-- ){
+    checkNormalForm( d_set_eqc[i], intro_sets );
+    if( hasProcessed() || !intro_sets.empty() ){
+      return;
+    }
+  }
+  Trace("sets") << "Done check normal forms" << std::endl;
+}
+
+void TheorySetsPrivate::checkNormalForm( Node eqc, std::vector< Node >& intro_sets ){
+  TypeNode tn = eqc.getType();
+  Trace("sets") << "Compute normal form for " << eqc << std::endl;
+  Trace("sets-nf") << "Compute N " << eqc << "..." << std::endl;
+  if( eqc==d_eqc_emptyset[tn] ){
+    d_nf[eqc].clear();
+    Trace("sets-nf") << "----> N " << eqc << " => {}" << std::endl;
+  }else{
+    //flat/normal forms are sets of equivalence classes
+    Node base;
+    std::vector< Node > comps;
+    std::map< Node, std::map< Node, std::vector< Node > > >::iterator it = d_ff.find( eqc );
+    if( it!=d_ff.end() ){
+      for( std::map< Node, std::vector< Node > >::iterator itf = it->second.begin(); itf != it->second.end(); ++itf ){
+        std::sort( itf->second.begin(), itf->second.end() );
+        if( base.isNull() ){
+          base = itf->first;
+        }else{
+          comps.push_back( itf->first );
+        }
+        Trace("sets-nf") << "  F " << itf->first << " : ";
+        if( Trace.isOn("sets-nf") ){
+          Trace("sets-nf") << "{ ";
+          for( unsigned k=0; k<itf->second.size(); k++ ){
+            if( k>0 ){ Trace("sets-nf") << ", "; }
+            Trace("sets-nf") << "[" << itf->second[k] << "]";
+          }
+          Trace("sets-nf") << " }" << std::endl;
+        }
+        Trace("sets-nf-debug") << " ...";
+        debugPrintSet( itf->first, "sets-nf-debug" );
+        Trace("sets-nf-debug") << std::endl;
+      }
+    }else{
+      Trace("sets-nf") << "(no flat forms)" << std::endl;
+    }
+
+    Assert( d_nf.find( eqc )==d_nf.end() );
+    bool success = true;
+    if( !base.isNull() ){
+      Node emp_set = getEmptySet( tn );
+      for( unsigned j=0; j<comps.size(); j++ ){
+        //compare if equal
+        std::vector< Node > c;
+        c.push_back( base );
+        c.push_back( comps[j] );
+        std::vector< Node > only[2];
+        std::vector< Node > common;
+        Trace("sets-nf-debug") << "Compare venn regions of " << base << " vs " << comps[j] << std::endl;
+        unsigned k[2] = { 0, 0 };
+        while( k[0]<d_ff[eqc][c[0]].size() || k[1]<d_ff[eqc][c[1]].size() ){
+          bool proc = true;
+          for( unsigned e=0; e<2; e++ ){
+            if( k[e]==d_ff[eqc][c[e]].size() ){
+              for( ; k[1-e]<d_ff[eqc][c[1-e]].size(); ++k[1-e] ){
+                only[1-e].push_back( d_ff[eqc][c[1-e]][k[1-e]] );
+              }
+              proc = false;
+            }
+          }
+          if( proc ){
+            if( d_ff[eqc][c[0]][k[0]]==d_ff[eqc][c[1]][k[1]] ){
+              common.push_back( d_ff[eqc][c[0]][k[0]] );
+              k[0]++;
+              k[1]++;
+            }else if( d_ff[eqc][c[0]][k[0]]<d_ff[eqc][c[1]][k[1]] ){
+              only[0].push_back( d_ff[eqc][c[0]][k[0]] );
+              k[0]++;
+            }else{
+              only[1].push_back( d_ff[eqc][c[1]][k[1]] );
+              k[1]++;
+            }
+          }
+        }
+        if( !only[0].empty() || !only[1].empty() ){
+          if( Trace.isOn("sets-nf-debug") ){
+            Trace("sets-nf-debug") << "Unique venn regions : " << std::endl;
+            for( unsigned e=0; e<2; e++ ){
+              Trace("sets-nf-debug") << "  " << c[e] << " : { ";
+              for( unsigned l=0; l<only[e].size(); l++ ){
+                if( l>0 ){ Trace("sets-nf-debug") << ", "; }
+                Trace("sets-nf-debug") << "[" << only[e][l] << "]";
+              }
+              Trace("sets-nf-debug") << " }" << std::endl;
+            }
+          }
+          //try to make one empty, prefer the unique ones first
+          for( unsigned e=0; e<3; e++ ){
+            unsigned sz = e==2 ? common.size() : only[e].size();
+            for( unsigned l=0; l<sz; l++ ){
+              Node r = e==2 ? common[l] : only[e][l];
+              Trace("sets-nf-debug") << "Try split empty : " << r << std::endl;
+              Trace("sets-nf-debug") << "         actual : ";
+              debugPrintSet( r, "sets-nf-debug" );
+              Trace("sets-nf-debug") << std::endl;
+              Assert( !ee_areEqual( r, emp_set ) );
+              if( !ee_areDisequal( r, emp_set ) && ( d_pol_mems[0].find( r )==d_pol_mems[0].end() || d_pol_mems[0][r].empty() ) ){
+                //guess that its equal empty if it has no explicit members
+                Trace("sets-nf") << " Split empty : " << r << std::endl;
+                Trace("sets-nf") << "Actual Split : ";
+                debugPrintSet( r, "sets-nf" );
+                Trace("sets-nf") << std::endl;
+                split( r.eqNode( emp_set ), 1 );
+                Assert( hasProcessed() );
+                return;
+              }
+            }
+          }
+          for( unsigned l=0; l<only[0].size(); l++ ){
+            for( unsigned m=0; m<only[1].size(); m++ ){
+              bool disjoint = false;
+              Trace("sets-nf-debug") << "Try split " << only[0][l] << " against " << only[1][m] << std::endl;
+              //split them
+              for( unsigned e=0; e<2; e++ ){
+                Node r1 = e==0 ? only[0][l] : only[1][m];
+                Node r2 = e==0 ? only[1][m] : only[0][l];
+                //check if their intersection exists modulo equality
+                std::map< Node, Node >::iterator itb = d_bop_index[kind::INTERSECTION][r1].find( r2 );
+                if( itb!=d_bop_index[kind::INTERSECTION][r1].end() ){
+                  Trace("sets-nf-debug") << "Split term already exists, but not in cardinality graph : " << itb->second << ", should be empty." << std::endl;
+                  //their intersection is empty (probably?)
+                  // e.g. these are two disjoint venn regions, proceed to next pair
+                  Assert( ee_areEqual( emp_set, itb->second ) );
+                  disjoint = true;
+                  break;
+                }
+              }
+              if( !disjoint ){
+                //simply introduce their intersection
+                Assert( only[0][l]!=only[1][m] );
+                Node kca = getProxy( only[0][l] );
+                Node kcb = getProxy( only[1][m] );
+                Node intro = Rewriter::rewrite( NodeManager::currentNM()->mkNode( kind::INTERSECTION, kca, kcb ) );
+                Trace("sets-nf") << "   Intro split : " << only[0][l] << " against " << only[1][m] << ", term is " << intro << std::endl;
+                intro_sets.push_back( intro );
+                Assert( !d_equalityEngine.hasTerm( intro ) );
+                return;
+              }
+            }
+          }
+          //should never get here
+          success = false;
+        }
+      }
+      if( success ){
+        //normal form is flat form of base
+        d_nf[eqc].insert( d_nf[eqc].end(), d_ff[eqc][base].begin(), d_ff[eqc][base].end() );
+        Trace("sets-nf") << "----> N " << eqc << " => F " << base << std::endl;
+      }else{
+        Trace("sets-nf") << "failed to build N " << eqc << std::endl;
+        Assert( false );
+      }
+    }else{
+      //normal form is this equivalence class
+      d_nf[eqc].push_back( eqc );
+      Trace("sets-nf") << "----> N " << eqc << " => { " << eqc << " }" << std::endl;
+    }
+    if( success ){
+      //send to parents
+      std::map< Node, std::vector< Node > >::iterator itn = d_nvar_sets.find( eqc );
+      if( itn!=d_nvar_sets.end() ){
+        std::map< Node, std::map< Node, bool > > parents_proc;
+        for( unsigned j=0; j<itn->second.size(); j++ ){
+          Node n = itn->second[j];
+          Trace("sets-nf-debug") << "Carry nf for term " << n << std::endl;
+          if( !d_card_parent[n].empty() ){
+            Assert( d_card_base.find( n )!=d_card_base.end() );
+            Node cbase = d_card_base[n];
+            Trace("sets-nf-debug") << "Card base is " << cbase << std::endl;
+            for( unsigned k=0; k<d_card_parent[n].size(); k++ ){
+              Node p = d_card_parent[n][k];
+              Trace("sets-nf-debug") << "Check parent " << p << std::endl;
+              if( parents_proc[cbase].find( p )==parents_proc[cbase].end() ){
+                parents_proc[cbase][p] = true;
+                Trace("sets-nf-debug") << "Carry nf to parent ( " << cbase << ", [" << p << "] ), from " << n << "..." << std::endl;
+                //for( unsigned i=0; i<d_nf[eqc].size(); i++ ){
+                //  Assert( std::find( d_ff[p][cbase].begin(), d_ff[p][cbase].end(), d_nf[eqc][i] )==d_ff[p][cbase].end() );
+                //}
+                for( unsigned i=0; i<d_nf[eqc].size(); i++ ){
+                  if( std::find( d_ff[p][cbase].begin(), d_ff[p][cbase].end(), d_nf[eqc][i] )==d_ff[p][cbase].end() ){
+                    d_ff[p][cbase].insert( d_ff[p][cbase].end(), d_nf[eqc].begin(), d_nf[eqc].end() );
+                  }else{
+                    //if it is a duplicate venn region, it must be empty since it is coming from syntactically disjoint siblings TODO?
+                  }
+                }
+              }else{
+                Trace("sets-nf-debug") << "..already processed parent " << p << " for " << cbase << std::endl;
+              }
+            }
+          }
+        }
+      }
+    }else{
+      Assert( hasProcessed() );
+    }
+  }
+}
+
+void TheorySetsPrivate::checkMinCard( std::vector< Node >& lemmas ) {
+
+  for( int i=(int)(d_set_eqc.size()-1); i>=0; i-- ){
+    Node eqc = d_set_eqc[i];
+    //get members in class
+    std::map< Node, std::map< Node, Node > >::iterator itm = d_pol_mems[0].find( eqc );
+    if( itm!=d_pol_mems[0].end() ){
+      std::vector< Node > exp;
+      std::vector< Node > members;
+      Node cardTerm;
+      std::map< Node, Node >::iterator it = d_eqc_to_card_term.find( eqc );
+      if( it!=d_eqc_to_card_term.end() ){
+        cardTerm = it->second;
+      }else{
+        cardTerm = NodeManager::currentNM()->mkNode( kind::CARD, eqc );
+      }
+      for( std::map< Node, Node >::iterator itmm = itm->second.begin(); itmm != itm->second.end(); ++itmm ){
+      /*
+        for( unsigned j=0; j<members.size(); j++ ){
+          if( !ee_areDisequal( members[j], itmm->second ) ){
+            Assert( !ee_areEqual( members[j], itmm->second ) );
+            
+          }
+        }
+      */
+        members.push_back( itmm->first );
+        exp.push_back( NodeManager::currentNM()->mkNode( kind::MEMBER, itmm->first, cardTerm[0] ) );
+      }
+      if( members.size()>1 ){
+        exp.push_back( NodeManager::currentNM()->mkNode( kind::DISTINCT, members ) );
+      }
+      if( !members.empty() ){
+        Node conc = NodeManager::currentNM()->mkNode( kind::GEQ, cardTerm, NodeManager::currentNM()->mkConst( Rational( members.size() ) ) );
+        Node lem = NodeManager::currentNM()->mkNode( kind::IMPLIES, exp.size()==1 ? exp[0] : NodeManager::currentNM()->mkNode( kind::AND, exp ), conc );
+        Trace("sets-lemma") << "Sets::Lemma : " << lem << " by mincard" << std::endl;
+        lemmas.push_back( lem );
+      }
+    }
+  }
+}
+
+void TheorySetsPrivate::flushLemmas( std::vector< Node >& lemmas ) {
+  //do lemmas
+  for( unsigned i=0; i<lemmas.size(); i++ ){
+    Node lem = lemmas[i];
+    if( d_lemmas_produced.find(lem)==d_lemmas_produced.end() ){
+      Trace("sets-lemma-debug") << "Send lemma : " << lem << std::endl;
+      d_lemmas_produced.insert(lem);
+      d_external.d_out->lemma(lem);
+      d_sentLemma = true;
+    }else{
+      Trace("sets-lemma-debug") << "Already sent lemma : " << lem << std::endl;
+    }
+  }
+  lemmas.clear();
+}
+
+Node TheorySetsPrivate::getProxy( Node n ) {
+  if( n.getKind()==kind::EMPTYSET || n.getKind()==kind::SINGLETON || n.getKind()==kind::INTERSECTION || n.getKind()==kind::SETMINUS || n.getKind()==kind::UNION ){
+    NodeMap::const_iterator it = d_proxy.find( n );
+    if( it==d_proxy.end() ){
+      Node k = NodeManager::currentNM()->mkSkolem( "sp", n.getType(), "proxy for set" );
+      d_proxy[n] = k;
+      d_proxy_to_term[k] = n;
+      Node eq = k.eqNode( n );
+      Trace("sets-lemma") << "Sets::Lemma : " << eq << " by proxy" << std::endl;
+      d_external.d_out->lemma( eq );
+      if( n.getKind()==kind::SINGLETON ){
+        Node slem = NodeManager::currentNM()->mkNode( kind::MEMBER, n[0], k );
+        Trace("sets-lemma") << "Sets::Lemma : " << slem << " by singleton" << std::endl;
+        d_external.d_out->lemma( slem );
+        d_sentLemma = true;
+      }
+      return k;
+    }else{
+      return (*it).second;
+    }
+  }else{
+    return n;
+  }
+}
+
+Node TheorySetsPrivate::getCongruent( Node n ) {
+  Assert( d_equalityEngine.hasTerm( n ) );
+  std::map< Node, Node >::iterator it = d_congruent.find( n );
+  if( it==d_congruent.end() ){
+    return n;
+  }else{
+    return it->second;
+  }
+}
+
+Node TheorySetsPrivate::getEmptySet( TypeNode tn ) {
+  std::map< TypeNode, Node >::iterator it = d_emptyset.find( tn );
+  if( it==d_emptyset.end() ){
+    Node n = NodeManager::currentNM()->mkConst(EmptySet(tn.toType()));
+    d_emptyset[tn] = n;
+    return n;
+  }else{
+    return it->second;
+  }
+}
+Node TheorySetsPrivate::getUnivSet( TypeNode tn ) {
+  std::map< TypeNode, Node >::iterator it = d_univset.find( tn );
+  if( it==d_univset.end() ){
+    Node n = NodeManager::currentNM()->mkUniqueVar(tn, kind::UNIVERSE_SET);
+    d_univset[tn] = n;
+    return n;
+  }else{
+    return it->second;
+  }
+}
+
+bool TheorySetsPrivate::hasLemmaCached( Node lem ) {
+  return d_lemmas_produced.find(lem)!=d_lemmas_produced.end();
+}
+
+bool TheorySetsPrivate::hasProcessed() {
+  return d_conflict || d_sentLemma || d_addedFact;
+}
+
+void TheorySetsPrivate::debugPrintSet( Node s, const char * c ) {
+  if( s.getNumChildren()==0 ){
+    NodeMap::const_iterator it = d_proxy_to_term.find( s );
+    if( it!=d_proxy_to_term.end() ){
+      debugPrintSet( (*it).second, c );
+    }else{
+      Trace(c) << s;
+    }
+  }else{
+    Trace(c) << "(" << s.getOperator();
+    for( unsigned i=0; i<s.getNumChildren(); i++ ){
+      Trace(c) << " ";
+      debugPrintSet( s[i], c );
+    }
+    Trace(c) << ")";
+  }
+}
+
+/**************************** TheorySetsPrivate *****************************/
+/**************************** TheorySetsPrivate *****************************/
+/**************************** TheorySetsPrivate *****************************/
+
+void TheorySetsPrivate::check(Theory::Effort level) {
+  Trace("sets-check") << "Sets check effort " << level << std::endl;
+  while(!d_external.done() && !d_conflict) {
+    // Get all the assertions
+    Assertion assertion = d_external.get();
+    TNode fact = assertion.assertion;
+    Trace("sets-assert") << "Assert from input " << fact << std::endl;
+    //assert the fact
+    assertFact( fact, fact );
+  }
+  d_sentLemma = false;
+  Trace("sets-check") << "Sets finished assertions effort " << level << std::endl;
+  //invoke full effort check, relations check
+  if( !d_conflict ){
+    if( level == Theory::EFFORT_FULL ){
+      if( !d_external.d_valuation.needCheck() ){
+        fullEffortCheck();
+        if( !d_conflict && !d_sentLemma ){
+          //invoke relations solver
+          d_rels->check(level);  
+          if( d_card_enabled && d_rels_enabled ){
+            //incomplete if we have both cardinality constraints and relational operators?
+            // TODO: should internally check model, return unknown if fail
+            d_external.d_out->setIncomplete();
+          }
+        }
+      }
+    }else{
+      if( options::setsRelEager() ){
+        d_rels->check(level);  
+      }
+    }
+  }
+  Trace("sets-check") << "Sets finish Check effort " << level << std::endl;
+}/* TheorySetsPrivate::check() */
+
+
+/************************ Sharing ************************/
+/************************ Sharing ************************/
+/************************ Sharing ************************/
+
+void TheorySetsPrivate::addSharedTerm(TNode n) {
+  Debug("sets") << "[sets] ThoerySetsPrivate::addSharedTerm( " << n << ")" << std::endl;
+  d_equalityEngine.addTriggerTerm(n, THEORY_SETS);
+}
+
+void TheorySetsPrivate::addCarePairs( quantifiers::TermArgTrie * t1, quantifiers::TermArgTrie * t2, unsigned arity, unsigned depth, unsigned& n_pairs ){
+  if( depth==arity ){
+    if( t2!=NULL ){
+      Node f1 = t1->getNodeData();
+      Node f2 = t2->getNodeData();
+      if( !ee_areEqual( f1, f2 ) ){
+        Trace("sets-cg") << "Check " << f1 << " and " << f2 << std::endl;
+        vector< pair<TNode, TNode> > currentPairs;
+        for (unsigned k = 0; k < f1.getNumChildren(); ++ k) {
+          TNode x = f1[k];
+          TNode y = f2[k];
+          Assert( d_equalityEngine.hasTerm(x) );
+          Assert( d_equalityEngine.hasTerm(y) );
+          Assert( !ee_areDisequal( x, y ) );
+          if( !d_equalityEngine.areEqual( x, y ) ){
+            Trace("sets-cg") << "Arg #" << k << " is " << x << " " << y << std::endl;
+            if( d_equalityEngine.isTriggerTerm(x, THEORY_SETS) && d_equalityEngine.isTriggerTerm(y, THEORY_SETS) ){
+              TNode x_shared = d_equalityEngine.getTriggerTermRepresentative(x, THEORY_SETS);
+              TNode y_shared = d_equalityEngine.getTriggerTermRepresentative(y, THEORY_SETS);
+              Trace("sets-cg") << "Arg #" << k << " shared term is " << x_shared << " " << y_shared << std::endl;
+              EqualityStatus eqStatus = d_external.d_valuation.getEqualityStatus(x_shared, y_shared);
+              Trace("sets-cg") << "...eq status is " << eqStatus << std::endl;
+              if( eqStatus==EQUALITY_FALSE_AND_PROPAGATED || eqStatus==EQUALITY_FALSE || eqStatus==EQUALITY_FALSE_IN_MODEL ){
+                //an argument is disequal, we are done
+                return;
+              }else{
+                currentPairs.push_back(make_pair(x_shared, y_shared));
+              }
+            }else if( isCareArg( f1, k ) && isCareArg( f2, k ) ){
+              //splitting on sets (necessary for handling set of sets properly)
+              if( x.getType().isSet() ){
+                Assert( y.getType().isSet() );
+                if( !ee_areDisequal( x, y ) ){
+                  Trace("sets-cg-lemma") << "Should split on : " << x << "==" << y << std::endl;
+                  split( x.eqNode( y ) );
+                }
+              }
+            }
+          }
+        }
+        for (unsigned c = 0; c < currentPairs.size(); ++ c) {
+          Trace("sets-cg-pair") << "Pair : " << currentPairs[c].first << " " << currentPairs[c].second << std::endl;
+          d_external.addCarePair(currentPairs[c].first, currentPairs[c].second);
+          n_pairs++;
+        }
+      }
+    }
+  }else{
+    if( t2==NULL ){
+      if( depth<(arity-1) ){
+        //add care pairs internal to each child
+        for( std::map< TNode, quantifiers::TermArgTrie >::iterator it = t1->d_data.begin(); it != t1->d_data.end(); ++it ){
+          addCarePairs( &it->second, NULL, arity, depth+1, n_pairs );
+        }
+      }
+      //add care pairs based on each pair of non-disequal arguments
+      for( std::map< TNode, quantifiers::TermArgTrie >::iterator it = t1->d_data.begin(); it != t1->d_data.end(); ++it ){
+        std::map< TNode, quantifiers::TermArgTrie >::iterator it2 = it;
+        ++it2;
+        for( ; it2 != t1->d_data.end(); ++it2 ){
+          if( !ee_areDisequal(it->first, it2->first) ){
+            addCarePairs( &it->second, &it2->second, arity, depth+1, n_pairs );
+          }
+        }
+      }
+    }else{
+      //add care pairs based on product of indices, non-disequal arguments
+      for( std::map< TNode, quantifiers::TermArgTrie >::iterator it = t1->d_data.begin(); it != t1->d_data.end(); ++it ){
+        for( std::map< TNode, quantifiers::TermArgTrie >::iterator it2 = t2->d_data.begin(); it2 != t2->d_data.end(); ++it2 ){
+          if( !ee_areDisequal(it->first, it2->first) ){
+            addCarePairs( &it->second, &it2->second, arity, depth+1, n_pairs );
+          }
+        }
+      }
+    }
+  }
+}
+
+void TheorySetsPrivate::computeCareGraph() {
+  for( std::map< Kind, std::vector< Node > >::iterator it = d_op_list.begin(); it != d_op_list.end(); ++it ){
+    if( it->first==kind::SINGLETON || it->first==kind::MEMBER ){
+      unsigned n_pairs = 0;
+      Trace("sets-cg-summary") << "Compute graph for sets, op=" << it->first << "..." << it->second.size() << std::endl;
+      Trace("sets-cg") << "Build index for " << it->first << "..." << std::endl;
+      std::map< TypeNode, quantifiers::TermArgTrie > index;
+      unsigned arity = 0;
+      //populate indices
+      for( unsigned i=0; i<it->second.size(); i++ ){
+        TNode f1 = it->second[i];
+        Assert(d_equalityEngine.hasTerm(f1));
+        Trace("sets-cg-debug") << "...build for " << f1 << std::endl;
+        //break into index based on operator, and type of first argument (since some operators are parametric)
+        TypeNode tn = f1[0].getType();
+        std::vector< TNode > reps;
+        bool hasCareArg = false;
+        for( unsigned j=0; j<f1.getNumChildren(); j++ ){
+          reps.push_back( d_equalityEngine.getRepresentative( f1[j] ) );
+          if( isCareArg( f1, j ) ){
+            hasCareArg = true;
+          }
+        }
+        if( hasCareArg ){
+          index[tn].addTerm( f1, reps );
+          arity = reps.size();
+        }
+      }
+      if( arity>0 ){
+        //for each index
+        for( std::map< TypeNode, quantifiers::TermArgTrie >::iterator iti = index.begin(); iti != index.end(); ++iti ){
+          Trace("sets-cg") << "Process index " << iti->first << "..." << std::endl;
+          addCarePairs( &iti->second, NULL, arity, 0, n_pairs );
+        }
+      }
+      Trace("sets-cg-summary") << "...done, # pairs = " << n_pairs << std::endl;
+    }
+  }
+}
+
+bool TheorySetsPrivate::isCareArg( Node n, unsigned a ) {
+  if( d_equalityEngine.isTriggerTerm( n[a], THEORY_SETS ) ){
+    return true;
+  }else if( ( n.getKind()==kind::MEMBER || n.getKind()==kind::SINGLETON ) && a==0 && n[0].getType().isSet() ){
+    return true;
+  }else{
+    return false;
+  }
+}
+
+EqualityStatus TheorySetsPrivate::getEqualityStatus(TNode a, TNode b) {
+  Assert(d_equalityEngine.hasTerm(a) && d_equalityEngine.hasTerm(b));
+  if (d_equalityEngine.areEqual(a, b)) {
+    // The terms are implied to be equal
+    return EQUALITY_TRUE;
+  }
+  if (d_equalityEngine.areDisequal(a, b, false)) {
+    // The terms are implied to be dis-equal
+    return EQUALITY_FALSE;
+  }
+  return EQUALITY_UNKNOWN;
+  /*
+  Node aModelValue = d_external.d_valuation.getModelValue(a);
+  if(aModelValue.isNull()) { return EQUALITY_UNKNOWN; }
+  Node bModelValue = d_external.d_valuation.getModelValue(b);
+  if(bModelValue.isNull()) { return EQUALITY_UNKNOWN; }
+  if( aModelValue == bModelValue ) {
+    // The term are true in current model
+    return EQUALITY_TRUE_IN_MODEL;
+  } else {
+    return EQUALITY_FALSE_IN_MODEL;
+  }
+  */
+  // }
+  // //TODO: can we be more precise sometimes?
+  // return EQUALITY_UNKNOWN;
+}
+
+/******************** Model generation ********************/
+/******************** Model generation ********************/
+/******************** Model generation ********************/
+
+
+void TheorySetsPrivate::collectModelInfo(TheoryModel* m, bool fullModel) {
+  Trace("sets-model") << "Set collect model info" << std::endl;
+  set<Node> termSet;
+  // Compute terms appearing in assertions and shared terms
+  d_external.computeRelevantTerms(termSet);
+  
+  // Assert equalities and disequalities to the model
+  m->assertEqualityEngine(&d_equalityEngine,&termSet);
+  
+  std::map< Node, Node > mvals;
+  for( int i=(int)(d_set_eqc.size()-1); i>=0; i-- ){
+    Node eqc = d_set_eqc[i];
+    if( termSet.find( eqc )==termSet.end() ){
+      Trace("sets-model") << "* Do not assign value for " << eqc << " since is not relevant." << std::endl;
+    }else{
+      std::vector< Node > els;
+      bool is_base = !d_card_enabled || ( d_nf[eqc].size()==1 && d_nf[eqc][0]==eqc );
+      if( is_base ){
+        Trace("sets-model") << "Collect elements of base eqc " << eqc << std::endl;
+        // members that must be in eqc
+        std::map< Node, std::map< Node, Node > >::iterator itm = d_pol_mems[0].find( eqc );
+        if( itm!=d_pol_mems[0].end() ){
+          for( std::map< Node, Node >::iterator itmm = itm->second.begin(); itmm != itm->second.end(); ++itmm ){
+            Node t = NodeManager::currentNM()->mkNode( kind::SINGLETON, itmm->first );
+            els.push_back( t );
+          }
+        }
+      }
+      if( d_card_enabled ){
+        TypeNode elementType = eqc.getType().getSetElementType();
+        if( is_base ){
+          std::map< Node, Node >::iterator it = d_eqc_to_card_term.find( eqc );
+          if( it!=d_eqc_to_card_term.end() ){
+            //slack elements from cardinality value
+            Node v = d_external.d_valuation.getModelValue(it->second);
+            Trace("sets-model") << "Cardinality of " << eqc << " is " << v << std::endl;
+            Assert(v.getConst<Rational>() <= LONG_MAX, "Exceeded LONG_MAX in sets model");
+            unsigned vu = v.getConst<Rational>().getNumerator().toUnsignedInt();
+            Assert( els.size()<=vu );
+            while( els.size()<vu ){
+              els.push_back( NodeManager::currentNM()->mkNode( kind::SINGLETON, NodeManager::currentNM()->mkSkolem( "msde", elementType ) ) );
+            }
+          }else{
+            Trace("sets-model") << "No slack elements for " << eqc << std::endl;
+          }
+        }else{
+          Trace("sets-model") << "Build value for " << eqc << " based on normal form, size = " << d_nf[eqc].size() << std::endl;
+          //it is union of venn regions
+          for( unsigned j=0; j<d_nf[eqc].size(); j++ ){
+            Assert( mvals.find( d_nf[eqc][j] )!=mvals.end() );
+            els.push_back( mvals[d_nf[eqc][j]] );
+          }
+        }
+      }
+      Node rep = NormalForm::mkBop( kind::UNION, els, eqc.getType() );
+      rep = Rewriter::rewrite( rep );
+      Trace("sets-model") << "* Assign representative of " << eqc << " to " << rep << std::endl;
+      mvals[eqc] = rep;
+      m->assertEquality( eqc, rep, true );
+      m->assertRepresentative( rep );
+    }
+  }
+}
+
+/********************** Helper functions ***************************/
+/********************** Helper functions ***************************/
+/********************** Helper functions ***************************/
+
+void TheorySetsPrivate::addEqualityToExp( Node a, Node b, std::vector< Node >& exp ) {
+  if( a!=b ){
+    Assert( ee_areEqual( a, b ) );
+    exp.push_back( a.eqNode( b ) );
+  }
+}
+
+Node mkAnd(const std::vector<TNode>& conjunctions) {
+  Assert(conjunctions.size() > 0);
+
+  std::set<TNode> all;
+  for (unsigned i = 0; i < conjunctions.size(); ++i) {
+    TNode t = conjunctions[i];
+    if (t.getKind() == kind::AND) {
+      for(TNode::iterator child_it = t.begin();
+          child_it != t.end(); ++child_it) {
+        Assert((*child_it).getKind() != kind::AND);
+        all.insert(*child_it);
+      }
+    }
+    else {
+      all.insert(t);
+    }
+  }
+
+  Assert(all.size() > 0);
+  if (all.size() == 1) {
+    // All the same, or just one
+    return conjunctions[0];
+  }
+
+  NodeBuilder<> conjunction(kind::AND);
+  std::set<TNode>::const_iterator it = all.begin();
+  std::set<TNode>::const_iterator it_end = all.end();
+  while (it != it_end) {
+    conjunction << *it;
+    ++ it;
+  }
+
+  return conjunction;
+}/* mkAnd() */
+
+
+TheorySetsPrivate::Statistics::Statistics() :
+  d_getModelValueTime("theory::sets::getModelValueTime")
+  , d_mergeTime("theory::sets::merge_nodes::time")
+  , d_processCard2Time("theory::sets::processCard2::time")
+  , d_memberLemmas("theory::sets::lemmas::member", 0)
+  , d_disequalityLemmas("theory::sets::lemmas::disequality", 0)
+  , d_numVertices("theory::sets::vertices", 0)
+  , d_numVerticesMax("theory::sets::vertices-max", 0)
+  , d_numMergeEq1or2("theory::sets::merge1or2", 0)
+  , d_numMergeEq3("theory::sets::merge3", 0)
+  , d_numLeaves("theory::sets::leaves", 0)
+  , d_numLeavesMax("theory::sets::leaves-max", 0)
+{
+  smtStatisticsRegistry()->registerStat(&d_getModelValueTime);
+  smtStatisticsRegistry()->registerStat(&d_mergeTime);
+  smtStatisticsRegistry()->registerStat(&d_processCard2Time);
+  smtStatisticsRegistry()->registerStat(&d_memberLemmas);
+  smtStatisticsRegistry()->registerStat(&d_disequalityLemmas);
+  smtStatisticsRegistry()->registerStat(&d_numVertices);
+  smtStatisticsRegistry()->registerStat(&d_numVerticesMax);
+  smtStatisticsRegistry()->registerStat(&d_numMergeEq1or2);
+  smtStatisticsRegistry()->registerStat(&d_numMergeEq3);
+  smtStatisticsRegistry()->registerStat(&d_numLeaves);
+  smtStatisticsRegistry()->registerStat(&d_numLeavesMax);
+}
+
+
+TheorySetsPrivate::Statistics::~Statistics() {
+  smtStatisticsRegistry()->unregisterStat(&d_getModelValueTime);
+  smtStatisticsRegistry()->unregisterStat(&d_mergeTime);
+  smtStatisticsRegistry()->unregisterStat(&d_processCard2Time);
+  smtStatisticsRegistry()->unregisterStat(&d_memberLemmas);
+  smtStatisticsRegistry()->unregisterStat(&d_disequalityLemmas);
+  smtStatisticsRegistry()->unregisterStat(&d_numVertices);
+  smtStatisticsRegistry()->unregisterStat(&d_numVerticesMax);
+  smtStatisticsRegistry()->unregisterStat(&d_numMergeEq1or2);
+  smtStatisticsRegistry()->unregisterStat(&d_numMergeEq3);
+  smtStatisticsRegistry()->unregisterStat(&d_numLeaves);
+  smtStatisticsRegistry()->unregisterStat(&d_numLeavesMax);
+}
+
+void TheorySetsPrivate::propagate(Theory::Effort effort) {
+
+}
+
+bool TheorySetsPrivate::propagate(TNode literal) {
+  Debug("sets-prop") << " propagate(" << literal  << ")" << std::endl;
+
+  // If already in conflict, no more propagation
+  if (d_conflict) {
+    Debug("sets-prop") << "TheoryUF::propagate(" << literal << "): already in conflict" << std::endl;
+    return false;
+  }
+
+  // Propagate out
+  bool ok = d_external.d_out->propagate(literal);
+  if (!ok) {
+    d_conflict = true;
+  }
+
+  return ok;
+}/* TheorySetsPrivate::propagate(TNode) */
+
+
+void TheorySetsPrivate::setMasterEqualityEngine(eq::EqualityEngine* eq) {
+  d_equalityEngine.setMasterEqualityEngine(eq);
+}
+
+
+void TheorySetsPrivate::conflict(TNode a, TNode b)
+{
+  d_conflictNode = explain(a.eqNode(b));
+  d_external.d_out->conflict(d_conflictNode);
+  Debug("sets") << "[sets] conflict: " << a << " iff " << b
+                << ", explaination " << d_conflictNode << std::endl;
+  Trace("sets-lemma") << "Equality Conflict : " << d_conflictNode << std::endl;
+  d_conflict = true;
+}
+
+Node TheorySetsPrivate::explain(TNode literal)
+{
+  Debug("sets") << "TheorySetsPrivate::explain(" << literal << ")"
+                << std::endl;
+
+  bool polarity = literal.getKind() != kind::NOT;
+  TNode atom = polarity ? literal : literal[0];
+  std::vector<TNode> assumptions;
+
+  if(atom.getKind() == kind::EQUAL) {
+    d_equalityEngine.explainEquality(atom[0], atom[1], polarity, assumptions);
+  } else if(atom.getKind() == kind::MEMBER) {
+    d_equalityEngine.explainPredicate(atom, polarity, assumptions);
+  } else {
+    Debug("sets") << "unhandled: " << literal << "; (" << atom << ", "
+                  << polarity << "); kind" << atom.getKind() << std::endl;
+    Unhandled();
+  }
+
+  return mkAnd(assumptions);
+}
+
+void TheorySetsPrivate::preRegisterTerm(TNode node)
+{
+  Debug("sets") << "TheorySetsPrivate::preRegisterTerm(" << node << ")"
+                << std::endl;
+  switch(node.getKind()) {
+  case kind::EQUAL:
+    // TODO: what's the point of this
+    d_equalityEngine.addTriggerEquality(node);
+    break;
+  case kind::MEMBER:
+    // TODO: what's the point of this
+    d_equalityEngine.addTriggerPredicate(node);
+    break;
+  case kind::CARD:
+    d_equalityEngine.addTriggerTerm(node, THEORY_SETS);
+    break;
+  default:
+    //if( node.getType().isSet() ){
+    //  d_equalityEngine.addTriggerTerm(node, THEORY_SETS);
+    //}else{
+    d_equalityEngine.addTerm(node);
+    //}
+    break;
+  }
+}
+
+
+void TheorySetsPrivate::presolve() {
+
+}
+
+/**************************** eq::NotifyClass *****************************/
+/**************************** eq::NotifyClass *****************************/
+/**************************** eq::NotifyClass *****************************/
+
+
+bool TheorySetsPrivate::NotifyClass::eqNotifyTriggerEquality(TNode equality, bool value)
+{
+  Debug("sets-eq") << "[sets-eq] eqNotifyTriggerEquality: equality = " << equality
+                   << " value = " << value << std::endl;
+  if (value) {
+    return d_theory.propagate(equality);
+  } else {
+    // We use only literal triggers so taking not is safe
+    return d_theory.propagate(equality.notNode());
+  }
+}
+
+bool TheorySetsPrivate::NotifyClass::eqNotifyTriggerPredicate(TNode predicate, bool value)
+{
+  Debug("sets-eq") << "[sets-eq] eqNotifyTriggerPredicate: predicate = " << predicate
+                   << " value = " << value << std::endl;
+  if (value) {
+    return d_theory.propagate(predicate);
+  } else {
+    return d_theory.propagate(predicate.notNode());
+  }
+}
+
+bool TheorySetsPrivate::NotifyClass::eqNotifyTriggerTermEquality(TheoryId tag, TNode t1, TNode t2, bool value)
+{
+  Debug("sets-eq") << "[sets-eq] eqNotifyTriggerTermEquality: tag = " << tag
+                   << " t1 = " << t1 << "  t2 = " << t2 << "  value = " << value << std::endl;
+  d_theory.propagate( value ? t1.eqNode( t2 ) : t1.eqNode( t2 ).negate() );
+  return true;
+}
+
+void TheorySetsPrivate::NotifyClass::eqNotifyConstantTermMerge(TNode t1, TNode t2)
+{
+  Debug("sets-eq") << "[sets-eq] eqNotifyConstantTermMerge " << " t1 = " << t1 << " t2 = " << t2 << std::endl;
+  d_theory.conflict(t1, t2);
+}
+
+void TheorySetsPrivate::NotifyClass::eqNotifyNewClass(TNode t)
+{
+  Debug("sets-eq") << "[sets-eq] eqNotifyNewClass:" << " t = " << t << std::endl;
+  d_theory.eqNotifyNewClass(t);
+}
+
+void TheorySetsPrivate::NotifyClass::eqNotifyPreMerge(TNode t1, TNode t2)
+{
+  Debug("sets-eq") << "[sets-eq] eqNotifyPreMerge:" << " t1 = " << t1 << " t2 = " << t2 << std::endl;
+  d_theory.eqNotifyPreMerge(t1, t2);
+}
+
+void TheorySetsPrivate::NotifyClass::eqNotifyPostMerge(TNode t1, TNode t2)
+{
+  Debug("sets-eq") << "[sets-eq] eqNotifyPostMerge:" << " t1 = " << t1 << " t2 = " << t2 << std::endl;
+  d_theory.eqNotifyPostMerge(t1, t2);
+}
+
+void TheorySetsPrivate::NotifyClass::eqNotifyDisequal(TNode t1, TNode t2, TNode reason)
+{
+  Debug("sets-eq") << "[sets-eq] eqNotifyDisequal:" << " t1 = " << t1 << " t2 = " << t2 << " reason = " << reason << std::endl;
+  d_theory.eqNotifyDisequal(t1, t2, reason);
+}
+
+}/* CVC4::theory::sets namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/sets/theory_sets_private.h b/src/theory/sets/theory_sets_private.h
new file mode 100644
index 0000000..6d7b57c
--- /dev/null
+++ b/src/theory/sets/theory_sets_private.h
@@ -0,0 +1,243 @@
+/*********************                                                        */
+/*! \file theory_sets_private.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Sets theory implementation.
+ **
+ ** Sets theory implementation.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__SETS__THEORY_SETS_PRIVATE_H
+#define __CVC4__THEORY__SETS__THEORY_SETS_PRIVATE_H
+
+#include "context/cdhashset.h"
+#include "context/cdqueue.h"
+
+#include "theory/theory.h"
+#include "theory/uf/equality_engine.h"
+#include "theory/sets/theory_sets_rels.h"
+
+namespace CVC4 {
+namespace theory {
+
+namespace quantifiers{
+  class TermArgTrie;
+}
+
+namespace sets {
+
+/** Internal classes, forward declared here */
+class TheorySetsTermInfoManager;
+class TheorySets;
+class TheorySetsScrutinize;
+
+class TheorySetsPrivate {
+//new implementation
+  typedef context::CDHashMap< Node, bool, NodeHashFunction> NodeBoolMap;
+  typedef context::CDHashMap< Node, int, NodeHashFunction> NodeIntMap;
+  typedef context::CDHashSet<Node, NodeHashFunction> NodeSet;
+  typedef context::CDHashMap< Node, Node, NodeHashFunction > NodeMap;
+private:
+  TheorySetsRels * d_rels;
+public:
+  void eqNotifyNewClass(TNode t);
+  void eqNotifyPreMerge(TNode t1, TNode t2);
+  void eqNotifyPostMerge(TNode t1, TNode t2);
+  void eqNotifyDisequal(TNode t1, TNode t2, TNode reason);
+private:
+  bool ee_areEqual( Node a, Node b );
+  bool ee_areDisequal( Node a, Node b );
+  NodeIntMap d_members;
+  std::map< Node, std::vector< Node > > d_members_data;
+  bool assertFact( Node fact, Node exp );
+  // inferType : 1 : must send out as lemma, -1 : do internal inferences if possible, 0 : default.
+  bool assertFactRec( Node fact, Node exp, std::vector< Node >& lemma, int inferType = 0 );
+  // add inferences corresponding to ( exp => fact ) to lemmas, equality engine
+  void assertInference( Node fact, Node exp, std::vector< Node >& lemmas, const char * c, int inferType = 0 );
+  void assertInference( Node fact, std::vector< Node >& exp, std::vector< Node >& lemmas, const char * c, int inferType = 0 );
+  void assertInference( std::vector< Node >& conc, Node exp, std::vector< Node >& lemmas, const char * c, int inferType = 0 );
+  void assertInference( std::vector< Node >& conc, std::vector< Node >& exp, std::vector< Node >& lemmas, const char * c, int inferType = 0 );
+  // send lemma ( n OR (NOT n) ) immediately
+  void split( Node n, int reqPol=0 );
+  void fullEffortCheck();
+  void checkDownwardsClosure( std::vector< Node >& lemmas );
+  void checkUpwardsClosure( std::vector< Node >& lemmas );
+  void checkDisequalities( std::vector< Node >& lemmas );
+  bool isMember( Node x, Node s );
+  bool isSetDisequalityEntailed( Node s, Node t );
+  
+  void flushLemmas( std::vector< Node >& lemmas );
+  Node getProxy( Node n );
+  Node getCongruent( Node n );
+  Node getEmptySet( TypeNode tn );
+  Node getUnivSet( TypeNode tn );
+  bool hasLemmaCached( Node lem );
+  bool hasProcessed();
+  
+  void addCarePairs( quantifiers::TermArgTrie * t1, quantifiers::TermArgTrie * t2, unsigned arity, unsigned depth, unsigned& n_pairs );
+  
+  Node d_true;
+  Node d_false;
+  Node d_zero;
+  NodeBoolMap d_deq;
+  NodeSet d_deq_processed;
+  NodeSet d_keep;
+  std::vector< Node > d_emp_exp;
+  
+  //propagation
+  class EqcInfo
+  {
+  public:
+    EqcInfo( context::Context* c );
+    ~EqcInfo(){}
+    // singleton or emptyset equal to this eqc
+    context::CDO< Node > d_singleton;
+  };
+  /** information necessary for equivalence classes */
+  std::map< Node, EqcInfo* > d_eqc_info;
+  /** get or make eqc info */
+  EqcInfo* getOrMakeEqcInfo( TNode n, bool doMake = false );
+  
+  void addEqualityToExp( Node a, Node b, std::vector< Node >& exp );
+  
+  void debugPrintSet( Node s, const char * c );
+  
+  bool d_sentLemma;
+  bool d_addedFact;
+  NodeMap d_proxy;  
+  NodeMap d_proxy_to_term;  
+  NodeSet d_lemmas_produced;
+  std::vector< Node > d_set_eqc;
+  std::map< Node, bool > d_set_eqc_relevant;
+  std::map< Node, std::vector< Node > > d_set_eqc_list;
+  std::map< TypeNode, Node > d_eqc_emptyset;
+  std::map< TypeNode, Node > d_eqc_univset;
+  std::map< Node, Node > d_eqc_singleton;
+  std::map< TypeNode, Node > d_emptyset;
+  std::map< TypeNode, Node > d_univset;
+  std::map< Node, Node > d_congruent;
+  std::map< Node, std::vector< Node > > d_nvar_sets;
+  std::map< Node, std::map< Node, Node > > d_pol_mems[2];
+  std::map< Node, std::map< Node, Node > > d_members_index;
+  std::map< Node, Node > d_singleton_index;
+  std::map< Kind, std::map< Node, std::map< Node, Node > > > d_bop_index;
+  std::map< Kind, std::vector< Node > > d_op_list;
+  //cardinality
+private:
+  bool d_card_enabled;
+  bool d_rels_enabled;
+  std::map< Node, Node > d_eqc_to_card_term;
+  NodeSet d_card_processed;
+  std::map< Node, std::vector< Node > > d_card_parent;
+  std::map< Node, std::map< Node, std::vector< Node > > > d_ff;
+  std::map< Node, std::vector< Node > > d_nf;
+  std::map< Node, Node > d_card_base;
+  void checkCardBuildGraph( std::vector< Node >& lemmas );
+  void registerCardinalityTerm( Node n, std::vector< Node >& lemmas );
+  void checkCardCycles( std::vector< Node >& lemmas );
+  void checkCardCyclesRec( Node eqc, std::vector< Node >& curr, std::vector< Node >& exp, std::vector< Node >& lemmas );
+  void checkNormalForms( std::vector< Node >& lemmas, std::vector< Node >& intro_sets );
+  void checkNormalForm( Node eqc, std::vector< Node >& intro_sets );
+  void checkMinCard( std::vector< Node >& lemmas );
+public:
+
+  /**
+   * Constructs a new instance of TheorySetsPrivate w.r.t. the provided
+   * contexts.
+   */
+  TheorySetsPrivate(TheorySets& external,
+                    context::Context* c,
+                    context::UserContext* u);
+
+  ~TheorySetsPrivate();
+
+  void setMasterEqualityEngine(eq::EqualityEngine* eq);
+
+  void addSharedTerm(TNode);
+
+  void check(Theory::Effort);
+
+  void collectModelInfo(TheoryModel*, bool fullModel);
+
+  void computeCareGraph();
+
+  Node explain(TNode);
+
+  EqualityStatus getEqualityStatus(TNode a, TNode b);
+
+  void preRegisterTerm(TNode node);
+
+  void presolve();
+
+  void propagate(Theory::Effort);
+
+private:
+  TheorySets& d_external;
+
+  class Statistics {
+  public:
+    TimerStat d_getModelValueTime;
+    TimerStat d_mergeTime;
+    TimerStat d_processCard2Time;
+    IntStat d_memberLemmas;
+    IntStat d_disequalityLemmas;
+    IntStat d_numVertices;
+    IntStat d_numVerticesMax;
+    IntStat d_numMergeEq1or2;
+    IntStat d_numMergeEq3;
+    IntStat d_numLeaves;
+    IntStat d_numLeavesMax;
+
+    Statistics();
+    ~Statistics();
+  } d_statistics;
+
+  /** Functions to handle callbacks from equality engine */
+  class NotifyClass : public eq::EqualityEngineNotify {
+    TheorySetsPrivate& d_theory;
+
+  public:
+    NotifyClass(TheorySetsPrivate& theory): d_theory(theory) {}
+    bool eqNotifyTriggerEquality(TNode equality, bool value);
+    bool eqNotifyTriggerPredicate(TNode predicate, bool value);
+    bool eqNotifyTriggerTermEquality(TheoryId tag, TNode t1, TNode t2, bool value);
+    void eqNotifyConstantTermMerge(TNode t1, TNode t2);
+    void eqNotifyNewClass(TNode t);
+    void eqNotifyPreMerge(TNode t1, TNode t2);
+    void eqNotifyPostMerge(TNode t1, TNode t2);
+    void eqNotifyDisequal(TNode t1, TNode t2, TNode reason);
+  } d_notify;
+
+  /** Equality engine */
+  eq::EqualityEngine d_equalityEngine;
+
+  context::CDO<bool> d_conflict;
+  Node d_conflictNode;
+
+  /** Proagate out to output channel */
+  bool propagate(TNode);
+
+  /** generate and send out conflict node */
+  void conflict(TNode, TNode);
+  
+  bool isCareArg( Node n, unsigned a );
+public:
+  bool isEntailed( Node n, bool pol );
+  
+};/* class TheorySetsPrivate */
+
+
+}/* CVC4::theory::sets namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__SETS__THEORY_SETS_PRIVATE_H */
diff --git a/src/theory/sets/theory_sets_rels.cpp b/src/theory/sets/theory_sets_rels.cpp
new file mode 100644
index 0000000..b5b7c90
--- /dev/null
+++ b/src/theory/sets/theory_sets_rels.cpp
@@ -0,0 +1,1675 @@
+/*********************                                                        */
+/*! \file theory_sets_rels.cpp
+ ** \verbatim
+ ** Original author: Paul Meng
+ ** Major contributors: none
+ ** Minor contributors (to current version): none
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2014  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.\endverbatim
+ **
+ ** \brief Sets theory implementation.
+ **
+ ** Extension to Sets theory.
+ **/
+
+#include "theory/sets/theory_sets_rels.h"
+#include "expr/datatype.h"
+#include "theory/sets/theory_sets_private.h"
+#include "theory/sets/theory_sets.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace sets {
+
+typedef std::map< Node, std::vector< Node > >::iterator                                         MEM_IT;
+typedef std::map< kind::Kind_t, std::vector< Node > >::iterator                                 KIND_TERM_IT;
+typedef std::map< Node, std::hash_set< Node, NodeHashFunction > >::iterator                     TC_GRAPH_IT;
+typedef std::map< Node, std::map< kind::Kind_t, std::vector< Node > > >::iterator               TERM_IT;
+typedef std::map< Node, std::map< Node, std::hash_set< Node, NodeHashFunction > > >::iterator   TC_IT;
+
+int TheorySetsRels::EqcInfo::counter        = 0;
+
+  void TheorySetsRels::check(Theory::Effort level) {
+    Trace("rels") << "\n[sets-rels] ******************************* Start the relational solver, effort = " << level << " *******************************\n" << std::endl;
+    if(Theory::fullEffort(level)) {
+      collectRelsInfo();
+      check();
+      doPendingLemmas();
+      Assert( d_lemmas_out.empty() );
+      Assert( d_pending_facts.empty() );
+    } else {
+      doPendingMerge();
+    }
+    Trace("rels") << "\n[sets-rels] ******************************* Done with the relational solver *******************************\n" << std::endl;
+  }
+
+  void TheorySetsRels::check() {
+    MEM_IT m_it = d_rReps_memberReps_cache.begin();
+
+    while(m_it != d_rReps_memberReps_cache.end()) {
+      Node rel_rep = m_it->first;
+
+      for(unsigned int i = 0; i < m_it->second.size(); i++) {
+        Node    mem     = d_rReps_memberReps_cache[rel_rep][i];
+        Node    exp     = d_rReps_memberReps_exp_cache[rel_rep][i];
+        std::map<kind::Kind_t, std::vector<Node> >    kind_terms      = d_terms_cache[rel_rep];
+
+        if( kind_terms.find(kind::TRANSPOSE) != kind_terms.end() ) {
+          std::vector<Node> tp_terms = kind_terms[kind::TRANSPOSE];
+          // exp is a membership term and tp_terms contains all
+          // transposed terms that are equal to the right hand side of exp
+          if( tp_terms.size() > 0 ) {
+            applyTransposeRule( tp_terms );
+            applyTransposeRule( tp_terms[0], rel_rep, exp );
+          }
+        }
+        if( kind_terms.find(kind::JOIN) != kind_terms.end() ) {
+          std::vector<Node> join_terms = kind_terms[kind::JOIN];
+          // exp is a membership term and join_terms contains all
+          // terms involving "join" operator that are in the same
+          // equivalence class with the right hand side of exp
+          for( unsigned int j = 0; j < join_terms.size(); j++ ) {
+            applyJoinRule( join_terms[j], rel_rep, exp );
+          }
+        }
+        if( kind_terms.find(kind::PRODUCT) != kind_terms.end() ) {
+          std::vector<Node> product_terms = kind_terms[kind::PRODUCT];
+          for( unsigned int j = 0; j < product_terms.size(); j++ ) {
+            applyProductRule( product_terms[j], rel_rep, exp );
+          }
+        }
+        if( kind_terms.find(kind::TCLOSURE) != kind_terms.end() ) {
+          std::vector<Node> tc_terms = kind_terms[kind::TCLOSURE];
+          for( unsigned int j = 0; j < tc_terms.size(); j++ ) {
+            applyTCRule( mem, tc_terms[j], rel_rep, exp );
+          }
+        }
+      }
+      m_it++;
+    }
+
+    TERM_IT t_it = d_terms_cache.begin();
+    while( t_it != d_terms_cache.end() ) {
+      if( d_rReps_memberReps_cache.find(t_it->first) == d_rReps_memberReps_cache.end() ) {
+        Trace("rels-debug") << "[sets-rels] A term does not have membership constraints: " << t_it->first << std::endl;
+        KIND_TERM_IT k_t_it = t_it->second.begin();
+
+        while( k_t_it != t_it->second.end() ) {
+          if( k_t_it->first == kind::JOIN || k_t_it->first == kind::PRODUCT ) {
+            std::vector<Node>::iterator term_it = k_t_it->second.begin();
+            while(term_it != k_t_it->second.end()) {
+              computeMembersForBinOpRel( *term_it );
+              term_it++;
+            }
+          } else if( k_t_it->first == kind::TRANSPOSE ) {
+            std::vector<Node>::iterator term_it = k_t_it->second.begin();
+            while( term_it != k_t_it->second.end() ) {
+              computeMembersForUnaryOpRel( *term_it );
+              term_it++;
+            }
+          } else if ( k_t_it->first == kind::TCLOSURE ) {
+            std::vector<Node>::iterator term_it = k_t_it->second.begin();
+            while( term_it != k_t_it->second.end() ) {
+              buildTCGraphForRel( *term_it );
+              term_it++;
+            }
+
+          }
+          k_t_it++;
+        }
+      }
+      t_it++;
+    }
+    doTCInference();
+  }
+
+  /*
+   * Populate relational terms data structure
+   */
+
+  void TheorySetsRels::collectRelsInfo() {
+    Trace("rels") << "[sets-rels] Start collecting relational terms..." << std::endl;
+    eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( d_eqEngine );
+    while( !eqcs_i.isFinished() ){
+      Node                      eqc_rep  = (*eqcs_i);
+      eq::EqClassIterator       eqc_i   = eq::EqClassIterator( eqc_rep, d_eqEngine );
+
+      Trace("rels-ee") << "[sets-rels-ee] Eqc term representative: " << eqc_rep << std::endl;
+
+      while( !eqc_i.isFinished() ){
+        Node eqc_node = (*eqc_i);
+
+        Trace("rels-ee") << "  term : " << eqc_node << std::endl;
+
+        if( getRepresentative(eqc_rep) == getRepresentative(d_trueNode) ||
+            getRepresentative(eqc_rep) == getRepresentative(d_falseNode) ) {
+          // collect membership info
+          if( eqc_node.getKind() == kind::MEMBER && eqc_node[1].getType().getSetElementType().isTuple() ) {
+            Node tup_rep = getRepresentative( eqc_node[0] );
+            Node rel_rep = getRepresentative( eqc_node[1] );
+
+            if( eqc_node[0].isVar() ){
+              reduceTupleVar( eqc_node );
+            }
+
+            bool is_true_eq    = areEqual( eqc_rep, d_trueNode );
+            Node reason        = is_true_eq ? eqc_node : eqc_node.negate();
+
+            if( is_true_eq ) {
+              if( safelyAddToMap(d_rReps_memberReps_cache, rel_rep, tup_rep) ) {
+                addToMap(d_rReps_memberReps_exp_cache, rel_rep, reason);
+                computeTupleReps(tup_rep);
+                d_membership_trie[rel_rep].addTerm(tup_rep, d_tuple_reps[tup_rep]);
+              }
+            } else {
+              if( safelyAddToMap(d_rReps_nonMemberReps_cache, rel_rep, tup_rep) ) {
+                addToMap(d_rReps_nonMemberReps_exp_cache, rel_rep, reason);
+              }
+            }
+          }
+        // collect relational terms info
+        } else if( eqc_rep.getType().isSet() && eqc_rep.getType().getSetElementType().isTuple() ) {
+          if( eqc_node.getKind() == kind::TRANSPOSE || eqc_node.getKind() == kind::JOIN ||
+              eqc_node.getKind() == kind::PRODUCT || eqc_node.getKind() == kind::TCLOSURE ) {
+            std::vector<Node> terms;
+            std::map< kind::Kind_t, std::vector<Node> >  rel_terms;
+            TERM_IT terms_it = d_terms_cache.find(eqc_rep);
+
+            if( terms_it == d_terms_cache.end() ) {
+              terms.push_back(eqc_node);
+              rel_terms[eqc_node.getKind()]      = terms;
+              d_terms_cache[eqc_rep]             = rel_terms;
+            } else {
+              KIND_TERM_IT kind_term_it = terms_it->second.find(eqc_node.getKind());
+
+              if( kind_term_it == terms_it->second.end() ) {
+                terms.push_back(eqc_node);
+                d_terms_cache[eqc_rep][eqc_node.getKind()] = terms;
+              } else {
+                kind_term_it->second.push_back(eqc_node);
+              }
+            }
+          }
+        // need to add all tuple elements as shared terms
+        } else if( eqc_node.getType().isTuple() && !eqc_node.isConst() && !eqc_node.isVar() ) {
+          for( unsigned int i = 0; i < eqc_node.getType().getTupleLength(); i++ ) {
+            Node element = RelsUtils::nthElementOfTuple( eqc_node, i );
+
+            if( !element.isConst() ) {
+              makeSharedTerm( element );
+            }
+          }
+        }
+        ++eqc_i;
+      }
+      ++eqcs_i;
+    }
+    Trace("rels-debug") << "[Theory::Rels] Done with collecting relational terms!" << std::endl;
+  }
+
+  /*
+   * Construct transitive closure graph for tc_rep based on the members of tc_r_rep
+   */
+
+  /*
+   *
+   *
+   * transitive closure rule 1:   y = (TCLOSURE x)
+   *                           ---------------------------------------------
+   *                              y = x | x.x | x.x.x | ... (| is union)
+   *
+   *
+   *
+   * transitive closure rule 2:   TCLOSURE(x)
+   *                            -----------------------------------------------------------
+   *                              x <= TCLOSURE(x) && (x JOIN x) <= TCLOSURE(x) ....
+   *
+   */
+  void TheorySetsRels::applyTCRule( Node mem_rep, Node tc_rel, Node tc_rel_rep, Node exp ) {
+    Trace("rels-debug") << "[Theory::Rels] *********** Applying TCLOSURE rule on a tc term = " << tc_rel
+                            << ", its representative = " << tc_rel_rep
+                            << " with member rep = " << mem_rep << " and explanation = " << exp << std::endl;
+    MEM_IT mem_it = d_rReps_memberReps_cache.find( tc_rel[0] );
+
+    if( mem_it != d_rReps_memberReps_cache.end() && d_rel_nodes.find( tc_rel ) == d_rel_nodes.end()
+        && d_rRep_tcGraph.find( getRepresentative( tc_rel[0] ) ) ==  d_rRep_tcGraph.end() ) {
+      buildTCGraphForRel( tc_rel );
+      d_rel_nodes.insert( tc_rel );
+    }
+
+    // mem_rep is a member of tc_rel[0] or mem_rep can be infered by TC_Graph of tc_rel[0], thus skip
+    if( isTCReachable( mem_rep, tc_rel) ) {
+      Trace("rels-debug") << "[Theory::Rels] mem_rep is a member of tc_rel[0] = " << tc_rel[0]
+                              << " or can be infered by TC_Graph of tc_rel[0]! " << std::endl;
+      return;
+    }
+    // add mem_rep to d_tcrRep_tcGraph
+    TC_IT tc_it = d_tcr_tcGraph.find( tc_rel );
+    Node mem_rep_fst = getRepresentative( RelsUtils::nthElementOfTuple( mem_rep, 0 ) );
+    Node mem_rep_snd = getRepresentative( RelsUtils::nthElementOfTuple( mem_rep, 1 ) );
+    Node mem_rep_tup = RelsUtils::constructPair( tc_rel, mem_rep_fst, mem_rep_snd );
+
+    if( tc_it != d_tcr_tcGraph.end() ) {
+      std::map< Node, std::map< Node, Node > >::iterator tc_exp_it = d_tcr_tcGraph_exps.find( tc_rel );
+
+      TC_GRAPH_IT tc_graph_it = (tc_it->second).find( mem_rep_fst );
+      Assert( tc_exp_it != d_tcr_tcGraph_exps.end() );
+      std::map< Node, Node >::iterator exp_map_it = (tc_exp_it->second).find( mem_rep_tup );
+
+      if( exp_map_it == (tc_exp_it->second).end() ) {
+        (tc_exp_it->second)[mem_rep_tup] = exp;
+      }
+
+      if( tc_graph_it != (tc_it->second).end() ) {
+        (tc_graph_it->second).insert( mem_rep_snd );
+      } else {
+        std::hash_set< Node, NodeHashFunction > sets;
+        sets.insert( mem_rep_snd );
+        (tc_it->second)[mem_rep_fst] = sets;
+      }
+    } else {
+      std::map< Node, Node > exp_map;
+      std::hash_set< Node, NodeHashFunction > sets;
+      std::map< Node, std::hash_set<Node, NodeHashFunction> > element_map;
+      sets.insert( mem_rep_snd );
+      element_map[mem_rep_fst] = sets;
+      d_tcr_tcGraph[tc_rel] = element_map;
+      exp_map[mem_rep_tup] = exp;
+      d_tcr_tcGraph_exps[tc_rel] = exp_map;
+    }
+
+    Node fst_element = RelsUtils::nthElementOfTuple( exp[0], 0 );
+    Node snd_element = RelsUtils::nthElementOfTuple( exp[0], 1 );
+    Node sk_1     = NodeManager::currentNM()->mkSkolem("stc", fst_element.getType());
+    Node sk_2     = NodeManager::currentNM()->mkSkolem("stc", snd_element.getType());
+    Node mem_of_r = NodeManager::currentNM()->mkNode(kind::MEMBER, exp[0], tc_rel[0]);
+    Node sk_eq    = NodeManager::currentNM()->mkNode(kind::EQUAL, sk_1, sk_2);
+    Node reason   = exp;
+
+    if( tc_rel != exp[1] ) {
+      reason = NodeManager::currentNM()->mkNode(kind::AND, reason, NodeManager::currentNM()->mkNode(kind::EQUAL, tc_rel, exp[1]));
+    }
+
+    Node conclusion = NodeManager::currentNM()->mkNode(kind::OR, mem_of_r,
+                                                     (NodeManager::currentNM()->mkNode(kind::AND, NodeManager::currentNM()->mkNode(kind::MEMBER, RelsUtils::constructPair(tc_rel, fst_element, sk_1), tc_rel[0]),
+                                                     (NodeManager::currentNM()->mkNode(kind::AND, NodeManager::currentNM()->mkNode(kind::MEMBER, RelsUtils::constructPair(tc_rel, sk_2, snd_element), tc_rel[0]),
+                                                     (NodeManager::currentNM()->mkNode(kind::OR, sk_eq, NodeManager::currentNM()->mkNode(kind::MEMBER, RelsUtils::constructPair(tc_rel, sk_1, sk_2), tc_rel))))))));
+
+    Node tc_lemma = NodeManager::currentNM()->mkNode(kind::IMPLIES, reason, conclusion );
+    std::vector< Node > require_phase;
+    require_phase.push_back(Rewriter::rewrite(mem_of_r));
+    require_phase.push_back(Rewriter::rewrite(sk_eq));
+    d_tc_lemmas_last[tc_lemma] = require_phase;
+  }
+
+  bool TheorySetsRels::isTCReachable( Node mem_rep, Node tc_rel ) {
+    MEM_IT mem_it = d_rReps_memberReps_cache.find( getRepresentative( tc_rel[0] ) );
+
+    if( mem_it != d_rReps_memberReps_cache.end() && std::find( (mem_it->second).begin(), (mem_it->second).end(), mem_rep) != (mem_it->second).end() ) {
+      return true;
+    }
+
+    TC_IT tc_it = d_rRep_tcGraph.find( getRepresentative(tc_rel[0]) );
+    if( tc_it != d_rRep_tcGraph.end() ) {
+      bool isReachable = false;
+      std::hash_set<Node, NodeHashFunction> seen;
+      isTCReachable( getRepresentative( RelsUtils::nthElementOfTuple(mem_rep, 0) ),
+                     getRepresentative( RelsUtils::nthElementOfTuple(mem_rep, 1) ), seen, tc_it->second, isReachable );
+      return isReachable;
+    }
+    return false;
+  }
+
+  void TheorySetsRels::isTCReachable( Node start, Node dest, std::hash_set<Node, NodeHashFunction>& hasSeen,
+                                    std::map< Node, std::hash_set< Node, NodeHashFunction > >& tc_graph, bool& isReachable ) {
+    if(hasSeen.find(start) == hasSeen.end()) {
+      hasSeen.insert(start);
+    }
+
+    TC_GRAPH_IT pair_set_it = tc_graph.find(start);
+
+    if(pair_set_it != tc_graph.end()) {
+      if(pair_set_it->second.find(dest) != pair_set_it->second.end()) {
+        isReachable = true;
+        return;
+      } else {
+        std::hash_set< Node, NodeHashFunction >::iterator set_it = pair_set_it->second.begin();
+
+        while( set_it != pair_set_it->second.end() ) {
+          // need to check if *set_it has been looked already
+          if( hasSeen.find(*set_it) == hasSeen.end() ) {
+            isTCReachable( *set_it, dest, hasSeen, tc_graph, isReachable );
+          }
+          set_it++;
+        }
+      }
+    }
+  }
+
+  void TheorySetsRels::buildTCGraphForRel( Node tc_rel ) {
+    std::map< Node, Node > rel_tc_graph_exps;
+    std::map< Node, std::hash_set<Node, NodeHashFunction> > rel_tc_graph;
+
+    Node rel_rep = getRepresentative( tc_rel[0] );
+    Node tc_rel_rep = getRepresentative( tc_rel );
+    std::vector< Node > members = d_rReps_memberReps_cache[rel_rep];
+    std::vector< Node > exps = d_rReps_memberReps_exp_cache[rel_rep];
+
+    for( unsigned int i = 0; i < members.size(); i++ ) {
+      Node fst_element_rep = getRepresentative( RelsUtils::nthElementOfTuple( members[i], 0 ));
+      Node snd_element_rep = getRepresentative( RelsUtils::nthElementOfTuple( members[i], 1 ));
+      Node tuple_rep = RelsUtils::constructPair( rel_rep, fst_element_rep, snd_element_rep );
+      std::map< Node, std::hash_set<Node, NodeHashFunction> >::iterator rel_tc_graph_it = rel_tc_graph.find( fst_element_rep );
+
+      if( rel_tc_graph_it == rel_tc_graph.end() ) {
+        std::hash_set< Node, NodeHashFunction > snd_elements;
+        snd_elements.insert( snd_element_rep );
+        rel_tc_graph[fst_element_rep] = snd_elements;
+        rel_tc_graph_exps[tuple_rep] = exps[i];
+      } else if( (rel_tc_graph_it->second).find( snd_element_rep ) ==  (rel_tc_graph_it->second).end() ) {
+        (rel_tc_graph_it->second).insert( snd_element_rep );
+        rel_tc_graph_exps[tuple_rep] = exps[i];
+      }
+    }
+
+    if( members.size() > 0 ) {
+      d_rRep_tcGraph[rel_rep] = rel_tc_graph;
+      d_tcr_tcGraph_exps[tc_rel] = rel_tc_graph_exps;
+      d_tcr_tcGraph[tc_rel] = rel_tc_graph;
+    }
+  }
+
+  void TheorySetsRels::doTCInference( std::map< Node, std::hash_set<Node, NodeHashFunction> > rel_tc_graph, std::map< Node, Node > rel_tc_graph_exps, Node tc_rel ) {
+    Trace("rels-debug") << "[Theory::Rels] ****** doTCInference !" << std::endl;
+    for( TC_GRAPH_IT tc_graph_it = rel_tc_graph.begin(); tc_graph_it != rel_tc_graph.end(); tc_graph_it++ ) {
+      for( std::hash_set< Node, NodeHashFunction >::iterator snd_elements_it = tc_graph_it->second.begin();
+           snd_elements_it != tc_graph_it->second.end(); snd_elements_it++ ) {
+        std::vector< Node > reasons;
+        std::hash_set<Node, NodeHashFunction> seen;
+        Node tuple = RelsUtils::constructPair( tc_rel, getRepresentative( tc_graph_it->first ), getRepresentative( *snd_elements_it) );
+        Assert( rel_tc_graph_exps.find( tuple ) != rel_tc_graph_exps.end() );
+        Node exp   = rel_tc_graph_exps.find( tuple )->second;
+
+        reasons.push_back( exp );
+        seen.insert( tc_graph_it->first );
+        doTCInference( tc_rel, reasons, rel_tc_graph, rel_tc_graph_exps, tc_graph_it->first, *snd_elements_it, seen);
+      }
+    }
+    Trace("rels-debug") << "[Theory::Rels] ****** Done with doTCInference !" << std::endl;
+  }
+
+  void TheorySetsRels::doTCInference(Node tc_rel, std::vector< Node > reasons, std::map< Node, std::hash_set< Node, NodeHashFunction > >& tc_graph,
+                                       std::map< Node, Node >& rel_tc_graph_exps, Node start_node_rep, Node cur_node_rep, std::hash_set< Node, NodeHashFunction >& seen ) {
+    Node tc_mem = RelsUtils::constructPair( tc_rel, RelsUtils::nthElementOfTuple((reasons.front())[0], 0), RelsUtils::nthElementOfTuple((reasons.back())[0], 1) );
+    std::vector< Node > all_reasons( reasons );
+
+    for( unsigned int i = 0 ; i < reasons.size()-1; i++ ) {
+      Node fst_element_end = RelsUtils::nthElementOfTuple( reasons[i][0], 1 );
+      Node snd_element_begin = RelsUtils::nthElementOfTuple( reasons[i+1][0], 0 );
+      if( fst_element_end != snd_element_begin ) {
+        all_reasons.push_back( NodeManager::currentNM()->mkNode(kind::EQUAL, fst_element_end, snd_element_begin) );
+      }
+      if( tc_rel != reasons[i][1] && tc_rel[0] != reasons[i][1] ) {
+        all_reasons.push_back( NodeManager::currentNM()->mkNode(kind::EQUAL, tc_rel[0], reasons[i][1]) );
+      }
+    }
+    if( tc_rel != reasons.back()[1] && tc_rel[0] != reasons.back()[1] ) {
+      all_reasons.push_back( NodeManager::currentNM()->mkNode(kind::EQUAL, tc_rel[0], reasons.back()[1]) );
+    }
+    if( all_reasons.size() > 1) {
+      sendInfer( NodeManager::currentNM()->mkNode(kind::MEMBER, tc_mem, tc_rel), NodeManager::currentNM()->mkNode(kind::AND, all_reasons), "TCLOSURE-Forward");
+    } else {
+      sendInfer( NodeManager::currentNM()->mkNode(kind::MEMBER, tc_mem, tc_rel), all_reasons.front(), "TCLOSURE-Forward");
+    }
+
+    // check if cur_node has been traversed or not
+    if( seen.find( cur_node_rep ) != seen.end() ) {
+      return;
+    }
+    seen.insert( cur_node_rep );
+    TC_GRAPH_IT  cur_set = tc_graph.find( cur_node_rep );
+    if( cur_set != tc_graph.end() ) {
+      for( std::hash_set< Node, NodeHashFunction >::iterator set_it = cur_set->second.begin();
+           set_it != cur_set->second.end(); set_it++ ) {
+        Node new_pair = constructPair( tc_rel, cur_node_rep, *set_it );
+        std::vector< Node > new_reasons( reasons );
+        new_reasons.push_back( rel_tc_graph_exps.find( new_pair )->second );
+        doTCInference( tc_rel, new_reasons, tc_graph, rel_tc_graph_exps, start_node_rep, *set_it, seen );
+      }
+    }
+  }
+
+ /*  product-split rule:  (a, b) IS_IN (X PRODUCT Y)
+  *                     ----------------------------------
+  *                       a IS_IN X  && b IS_IN Y
+  *
+  *  product-compose rule: (a, b) IS_IN X    (c, d) IS_IN Y
+  *                        ---------------------------------
+  *                        (a, b, c, d) IS_IN (X PRODUCT Y)
+  */
+
+
+  void TheorySetsRels::applyProductRule( Node pt_rel, Node pt_rel_rep, Node exp ) {
+    Trace("rels-debug") << "\n[Theory::Rels] *********** Applying PRODUCT rule on producted term = " << pt_rel
+                            << ", its representative = " << pt_rel_rep
+                            << " with explanation = " << exp << std::endl;
+
+    if(d_rel_nodes.find( pt_rel ) == d_rel_nodes.end()) {
+      Trace("rels-debug") <<  "\n[Theory::Rels] Apply PRODUCT-COMPOSE rule on term: " << pt_rel
+                          << " with explanation: " << exp << std::endl;
+
+      computeMembersForBinOpRel( pt_rel );
+      d_rel_nodes.insert( pt_rel );
+    }
+
+    Node mem = exp[0];
+    std::vector<Node>   r1_element;
+    std::vector<Node>   r2_element;
+    Datatype     dt      = pt_rel[0].getType().getSetElementType().getDatatype();
+    unsigned int s1_len  = pt_rel[0].getType().getSetElementType().getTupleLength();
+    unsigned int tup_len = pt_rel.getType().getSetElementType().getTupleLength();
+
+    r1_element.push_back(Node::fromExpr(dt[0].getConstructor()));
+
+    unsigned int i = 0;
+    for(; i < s1_len; ++i) {
+      r1_element.push_back(RelsUtils::nthElementOfTuple(mem, i));
+    }
+    dt = pt_rel[1].getType().getSetElementType().getDatatype();
+    r2_element.push_back(Node::fromExpr(dt[0].getConstructor()));
+    for(; i < tup_len; ++i) {
+      r2_element.push_back(RelsUtils::nthElementOfTuple(mem, i));
+    }
+    Node reason   = exp;
+    Node mem1     = NodeManager::currentNM()->mkNode(kind::APPLY_CONSTRUCTOR, r1_element);
+    Node mem2     = NodeManager::currentNM()->mkNode(kind::APPLY_CONSTRUCTOR, r2_element);
+    Node fact_1   = NodeManager::currentNM()->mkNode(kind::MEMBER, mem1, pt_rel[0]);
+    Node fact_2   = NodeManager::currentNM()->mkNode(kind::MEMBER, mem2, pt_rel[1]);
+
+    if( pt_rel != exp[1] ) {
+      reason = NodeManager::currentNM()->mkNode(kind::AND, exp, explain(NodeManager::currentNM()->mkNode(kind::EQUAL, pt_rel, exp[1])));
+    }
+    sendInfer( fact_1, reason, "product-split" );
+    sendInfer( fact_2, reason, "product-split" );
+  }
+
+  /* join-split rule:           (a, b) IS_IN (X JOIN Y)
+   *                  --------------------------------------------
+   *                  exists z | (a, z) IS_IN X  && (z, b) IS_IN Y
+   *
+   *
+   * join-compose rule: (a, b) IS_IN X    (b, c) IS_IN Y  NOT (t, u) IS_IN (X JOIN Y)
+   *                    -------------------------------------------------------------
+   *                                      (a, c) IS_IN (X JOIN Y)
+   */
+
+  void TheorySetsRels::applyJoinRule( Node join_rel, Node join_rel_rep, Node exp ) {
+    Trace("rels-debug") << "\n[Theory::Rels] *********** Applying JOIN rule on joined term = " << join_rel
+                            << ", its representative = " << join_rel_rep
+                            << " with explanation = " << exp << std::endl;
+    if(d_rel_nodes.find( join_rel ) == d_rel_nodes.end()) {
+      Trace("rels-debug") <<  "\n[Theory::Rels] Apply JOIN-COMPOSE rule on term: " << join_rel
+                          << " with explanation: " << exp << std::endl;
+
+      computeMembersForBinOpRel( join_rel );
+      d_rel_nodes.insert( join_rel );
+    }
+
+    Node mem = exp[0];
+    std::vector<Node> r1_element;
+    std::vector<Node> r2_element;
+    Node r1_rep = getRepresentative(join_rel[0]);
+    Node r2_rep = getRepresentative(join_rel[1]);
+    TypeNode     shared_type    = r2_rep.getType().getSetElementType().getTupleTypes()[0];
+    Node         shared_x       = NodeManager::currentNM()->mkSkolem("srj_", shared_type);
+    Datatype     dt             = join_rel[0].getType().getSetElementType().getDatatype();
+    unsigned int s1_len         = join_rel[0].getType().getSetElementType().getTupleLength();
+    unsigned int tup_len        = join_rel.getType().getSetElementType().getTupleLength();
+
+    unsigned int i = 0;
+    r1_element.push_back(Node::fromExpr(dt[0].getConstructor()));
+    for(; i < s1_len-1; ++i) {
+      r1_element.push_back(RelsUtils::nthElementOfTuple(mem, i));
+    }
+    r1_element.push_back(shared_x);
+    dt = join_rel[1].getType().getSetElementType().getDatatype();
+    r2_element.push_back(Node::fromExpr(dt[0].getConstructor()));
+    r2_element.push_back(shared_x);
+    for(; i < tup_len; ++i) {
+      r2_element.push_back(RelsUtils::nthElementOfTuple(mem, i));
+    }
+    Node mem1 = NodeManager::currentNM()->mkNode(kind::APPLY_CONSTRUCTOR, r1_element);
+    Node mem2 = NodeManager::currentNM()->mkNode(kind::APPLY_CONSTRUCTOR, r2_element);
+
+    computeTupleReps(mem1);
+    computeTupleReps(mem2);
+
+    std::vector<Node> elements = d_membership_trie[r1_rep].findTerms(d_tuple_reps[mem1]);
+    for(unsigned int j = 0; j < elements.size(); j++) {
+      std::vector<Node> new_tup;
+      new_tup.push_back(elements[j]);
+      new_tup.insert(new_tup.end(), d_tuple_reps[mem2].begin()+1, d_tuple_reps[mem2].end());
+      if(d_membership_trie[r2_rep].existsTerm(new_tup) != Node::null()) {
+        return;
+      }
+    }
+    Node reason = exp;
+    if( join_rel != exp[1] ) {
+      reason = NodeManager::currentNM()->mkNode(kind::AND, reason, NodeManager::currentNM()->mkNode(kind::EQUAL, join_rel, exp[1]));
+    }
+    Node fact = NodeManager::currentNM()->mkNode(kind::MEMBER, mem1, join_rel[0]);
+    sendInfer( fact, reason, "JOIN-Split" );
+    fact = NodeManager::currentNM()->mkNode(kind::MEMBER, mem2, join_rel[1]);
+    sendInfer( fact, reason, "JOIN-Split" );
+    makeSharedTerm( shared_x );
+  }
+
+  /*
+   * transpose-occur rule:   [NOT] (a, b) IS_IN X   (TRANSPOSE X) occurs
+   *                         -------------------------------------------------------
+   *                         [NOT] (b, a) IS_IN (TRANSPOSE X)
+   *
+   * transpose-reverse rule:    [NOT] (a, b) IS_IN (TRANSPOSE X)
+   *                         ------------------------------------------------
+   *                            [NOT] (b, a) IS_IN X
+   *
+   * Not implemented yet!
+   * transpose-equal rule:   [NOT]  (TRANSPOSE X) = (TRANSPOSE Y)
+   *                         -----------------------------------------------
+   *                         [NOT]  (X = Y)
+   */
+  void TheorySetsRels::applyTransposeRule( std::vector<Node> tp_terms ) {
+    if( tp_terms.size() < 1) {
+      return;
+    }
+    for( unsigned int i = 1; i < tp_terms.size(); i++ ) {
+      Trace("rels-debug") << "\n[Theory::Rels] *********** Applying TRANSPOSE-Equal rule on transposed term = " << tp_terms[0] << " and " << tp_terms[i] << std::endl;
+      sendInfer(NodeManager::currentNM()->mkNode(kind::EQUAL, tp_terms[0][0], tp_terms[i][0]), NodeManager::currentNM()->mkNode(kind::EQUAL, tp_terms[0], tp_terms[i]), "TRANSPOSE-Equal");
+    }
+  }
+
+  void TheorySetsRels::applyTransposeRule( Node tp_rel, Node tp_rel_rep, Node exp ) {
+    Trace("rels-debug") << "\n[Theory::Rels] *********** Applying TRANSPOSE rule on transposed term = " << tp_rel
+                        << ", its representative = " << tp_rel_rep
+                        << " with explanation = " << exp << std::endl;
+
+    if(d_rel_nodes.find( tp_rel ) == d_rel_nodes.end()) {
+      Trace("rels-debug") <<  "\n[Theory::Rels] Apply TRANSPOSE-Compose rule on term: " << tp_rel
+                          << " with explanation: " << exp << std::endl;
+
+      computeMembersForUnaryOpRel( tp_rel );
+      d_rel_nodes.insert( tp_rel );
+    }
+
+    Node reason = exp;
+    Node reversed_mem = RelsUtils::reverseTuple( exp[0] );
+
+    if( tp_rel != exp[1] ) {
+      reason = NodeManager::currentNM()->mkNode(kind::AND, reason, NodeManager::currentNM()->mkNode(kind::EQUAL, tp_rel, exp[1]));
+    }
+    sendInfer( NodeManager::currentNM()->mkNode(kind::MEMBER, reversed_mem, tp_rel[0]), reason, "TRANSPOSE-Reverse" );
+  }
+
+  void TheorySetsRels::doTCInference() {
+    Trace("rels-debug") << "[Theory::Rels] ****** Finalizing transitive closure inferences!" << std::endl;
+    TC_IT tc_graph_it = d_tcr_tcGraph.begin();
+    while( tc_graph_it != d_tcr_tcGraph.end() ) {
+      Assert ( d_tcr_tcGraph_exps.find(tc_graph_it->first) != d_tcr_tcGraph_exps.end() );
+      doTCInference( tc_graph_it->second, d_tcr_tcGraph_exps.find(tc_graph_it->first)->second, tc_graph_it->first );
+      tc_graph_it++;
+    }
+    Trace("rels-debug") << "[Theory::Rels] ****** Done with finalizing transitive closure inferences!" << std::endl;
+  }
+
+
+  // Bottom-up fashion to compute relations with more than 1 arity
+  void TheorySetsRels::computeMembersForBinOpRel(Node rel) {
+    Trace("rels-debug") << "\n[Theory::Rels] computeMembersForBinOpRel for relation  " << rel << std::endl;
+
+    switch(rel[0].getKind()) {
+      case kind::TRANSPOSE:
+      case kind::TCLOSURE: {
+        computeMembersForUnaryOpRel(rel[0]);
+        break;
+      }
+      case kind::JOIN:
+      case kind::PRODUCT: {
+        computeMembersForBinOpRel(rel[0]);
+        break;
+      }
+      default:
+        break;
+    }
+    switch(rel[1].getKind()) {
+      case kind::TRANSPOSE: {
+        computeMembersForUnaryOpRel(rel[1]);
+        break;
+      }
+      case kind::JOIN:
+      case kind::PRODUCT: {
+        computeMembersForBinOpRel(rel[1]);
+        break;
+      }
+      default:
+        break;
+    }
+    if(d_rReps_memberReps_cache.find(getRepresentative(rel[0])) == d_rReps_memberReps_cache.end() ||
+       d_rReps_memberReps_cache.find(getRepresentative(rel[1])) == d_rReps_memberReps_cache.end()) {
+      return;
+    }
+    composeMembersForRels(rel);
+  }
+
+  // Bottom-up fashion to compute unary relation
+  void TheorySetsRels::computeMembersForUnaryOpRel(Node rel) {
+    Trace("rels-debug") << "\n[Theory::Rels] computeMembersForUnaryOpRel for relation  " << rel << std::endl;
+
+    switch(rel[0].getKind()) {
+      case kind::TRANSPOSE:
+      case kind::TCLOSURE:
+        computeMembersForUnaryOpRel(rel[0]);
+        break;
+      case kind::JOIN:
+      case kind::PRODUCT:
+        computeMembersForBinOpRel(rel[0]);
+        break;
+      default:
+        break;
+    }
+
+    Node rel0_rep  = getRepresentative(rel[0]);
+    if(d_rReps_memberReps_cache.find( rel0_rep ) == d_rReps_memberReps_cache.end())
+      return;
+
+    std::vector<Node>   members = d_rReps_memberReps_cache[rel0_rep];
+    std::vector<Node>   exps    = d_rReps_memberReps_exp_cache[rel0_rep];
+
+    Assert( members.size() == exps.size() );
+
+    for(unsigned int i = 0; i < members.size(); i++) {
+      Node reason = exps[i];
+      if( rel.getKind() == kind::TRANSPOSE) {
+        if( rel[0] != exps[i][1] ) {
+          reason = NodeManager::currentNM()->mkNode(kind::AND, reason, NodeManager::currentNM()->mkNode(kind::EQUAL, rel[0], exps[i][1]));
+        }
+        sendInfer(NodeManager::currentNM()->mkNode(kind::MEMBER, RelsUtils::reverseTuple(exps[i][0]), rel), reason, "TRANSPOSE-reverse");
+      }
+    }
+  }
+
+  /*
+   * Explicitly compose the join or product relations of r1 and r2
+   * e.g. If (a, b) in X and (b, c) in Y, (a, c) in (X JOIN Y)
+   *
+   */
+  void TheorySetsRels::composeMembersForRels( Node rel ) {
+    Trace("rels-debug") << "[Theory::Rels] Start composing members for relation = " << rel << std::endl;
+    Node r1 = rel[0];
+    Node r2 = rel[1];
+    Node r1_rep = getRepresentative( r1 );
+    Node r2_rep = getRepresentative( r2 );
+
+    if(d_rReps_memberReps_cache.find( r1_rep ) == d_rReps_memberReps_cache.end() ||
+       d_rReps_memberReps_cache.find( r2_rep ) == d_rReps_memberReps_cache.end() ) {
+      return;
+    }
+
+    std::vector<Node> r1_rep_exps = d_rReps_memberReps_exp_cache[r1_rep];
+    std::vector<Node> r2_rep_exps = d_rReps_memberReps_exp_cache[r2_rep];
+    unsigned int r1_tuple_len = r1.getType().getSetElementType().getTupleLength();
+    unsigned int r2_tuple_len = r2.getType().getSetElementType().getTupleLength();
+
+    for( unsigned int i = 0; i < r1_rep_exps.size(); i++ ) {
+      for( unsigned int j = 0; j < r2_rep_exps.size(); j++ ) {
+        std::vector<Node> tuple_elements;
+        TypeNode tn = rel.getType().getSetElementType();
+        Node r1_rmost = RelsUtils::nthElementOfTuple( r1_rep_exps[i][0], r1_tuple_len-1 );
+        Node r2_lmost = RelsUtils::nthElementOfTuple( r2_rep_exps[j][0], 0 );
+        tuple_elements.push_back( Node::fromExpr(tn.getDatatype()[0].getConstructor()) );
+
+        if( (areEqual(r1_rmost, r2_lmost) && rel.getKind() == kind::JOIN) ||
+            rel.getKind() == kind::PRODUCT ) {
+          bool isProduct = rel.getKind() == kind::PRODUCT;
+          unsigned int k = 0;
+          unsigned int l = 1;
+
+          for( ; k < r1_tuple_len - 1; ++k ) {
+            tuple_elements.push_back( RelsUtils::nthElementOfTuple( r1_rep_exps[i][0], k ) );
+          }
+          if(isProduct) {
+            tuple_elements.push_back( RelsUtils::nthElementOfTuple( r1_rep_exps[i][0], k ) );
+            tuple_elements.push_back( RelsUtils::nthElementOfTuple( r2_rep_exps[j][0], 0 ) );
+          }
+          for( ; l < r2_tuple_len; ++l ) {
+            tuple_elements.push_back( RelsUtils::nthElementOfTuple( r2_rep_exps[j][0], l ) );
+          }
+
+          Node composed_tuple = NodeManager::currentNM()->mkNode(kind::APPLY_CONSTRUCTOR, tuple_elements);
+          Node fact = NodeManager::currentNM()->mkNode(kind::MEMBER, composed_tuple, rel);
+          std::vector<Node> reasons;
+          reasons.push_back( r1_rep_exps[i] );
+          reasons.push_back( r2_rep_exps[j] );
+
+          if( r1 != r1_rep_exps[i][1] ) {
+            reasons.push_back( NodeManager::currentNM()->mkNode(kind::EQUAL, r1, r1_rep_exps[i][1]) );
+          }
+          if( r2 != r2_rep_exps[j][1] ) {
+            reasons.push_back( NodeManager::currentNM()->mkNode(kind::EQUAL, r2, r2_rep_exps[j][1]) );
+          }
+          if( isProduct ) {
+            sendInfer( fact, NodeManager::currentNM()->mkNode(kind::AND, reasons), "PRODUCT-Compose" );
+          } else {
+            if( r1_rmost != r2_lmost ) {
+              reasons.push_back( NodeManager::currentNM()->mkNode(kind::EQUAL, r1_rmost, r2_lmost) );
+            }
+            sendInfer( fact, NodeManager::currentNM()->mkNode(kind::AND, reasons), "JOIN-Compose" );
+          }
+        }
+      }
+    }
+
+  }
+
+  void TheorySetsRels::doPendingLemmas() {
+    Trace("rels-debug") << "[Theory::Rels] **************** Start doPendingLemmas !" << std::endl;
+    if( !(*d_conflict) ){
+      if ( (!d_lemmas_out.empty() || !d_pending_facts.empty()) ) {
+        for( unsigned i=0; i < d_lemmas_out.size(); i++ ){
+          Assert(d_lemmas_out[i].getKind() == kind::IMPLIES);
+          if(holds( d_lemmas_out[i][1] )) {
+            Trace("rels-lemma-skip") << "[sets-rels-lemma-skip] Skip an already held lemma: "
+                                     << d_lemmas_out[i]<< std::endl;
+            continue;
+          }
+          d_sets_theory.d_out->lemma( d_lemmas_out[i] );
+          Trace("rels-lemma") << "[sets-rels-lemma] Send out a lemma : "
+                              << d_lemmas_out[i] << std::endl;
+        }
+        for( std::map<Node, Node>::iterator pending_it = d_pending_facts.begin();
+             pending_it != d_pending_facts.end(); pending_it++ ) {
+          if( holds( pending_it->first ) ) {
+            Trace("rels-lemma-skip") << "[sets-rels-fact-lemma-skip] Skip an already held fact,: "
+                                     << pending_it->first << std::endl;
+            continue;
+          }
+          Node lemma = NodeManager::currentNM()->mkNode(kind::IMPLIES, pending_it->second, pending_it->first);
+          if( d_lemmas_produced.find( lemma ) == d_lemmas_produced.end() ) {
+            d_sets_theory.d_out->lemma(NodeManager::currentNM()->mkNode(kind::IMPLIES, pending_it->second, pending_it->first));
+            Trace("rels-lemma") << "[sets-rels-fact-lemma] Send out a fact as lemma : "
+                                << pending_it->first << " with reason " << pending_it->second << std::endl;
+            d_lemmas_produced.insert( lemma );
+          }
+        }
+      }
+    }
+    doTCLemmas();
+    Trace("rels-debug") << "[Theory::Rels] **************** Done with doPendingLemmas !" << std::endl;
+    d_tuple_reps.clear();
+//    d_id_node.clear();
+//    d_node_id.clear();
+    d_tuple_reps.clear();
+    d_rReps_memberReps_exp_cache.clear();
+    d_terms_cache.clear();
+    d_lemmas_out.clear();
+    d_membership_trie.clear();
+    d_rel_nodes.clear();
+    d_pending_facts.clear();
+    d_rReps_memberReps_cache.clear();
+    d_rRep_tcGraph.clear();
+    d_tcr_tcGraph_exps.clear();
+    d_tcr_tcGraph.clear();
+    d_tc_lemmas_last.clear();
+  }
+  bool TheorySetsRels::isRelationKind( Kind k ) {
+    return k == kind::TRANSPOSE || k == kind::PRODUCT || k == kind::JOIN || k == kind::TCLOSURE;
+  }
+  void TheorySetsRels::doTCLemmas() {
+    Trace("rels-debug") << "[Theory::Rels] **************** Start doTCLemmas !" << std::endl;
+    std::map< Node, std::vector< Node > >::iterator tc_lemma_it = d_tc_lemmas_last.begin();
+    while( tc_lemma_it != d_tc_lemmas_last.end() ) {
+      if( !holds( tc_lemma_it->first[1] ) ) {
+        if( d_lemmas_produced.find( tc_lemma_it->first ) == d_lemmas_produced.end() ) {
+          d_sets_theory.d_out->lemma( tc_lemma_it->first );
+          d_lemmas_produced.insert( tc_lemma_it->first );
+
+          for( unsigned int i = 0; i < (tc_lemma_it->second).size(); i++ ) {
+            if( (tc_lemma_it->second)[i] == d_falseNode ) {
+              d_sets_theory.d_out->requirePhase((tc_lemma_it->second)[i], true);
+            }
+          }
+          Trace("rels-lemma") << "[Theory::Rels] **** Send out a TC lemma = " << tc_lemma_it->first << " by " << "TCLOSURE-Forward"<< std::endl;
+        }
+      }
+      ++tc_lemma_it;
+    }
+    Trace("rels-debug") << "[Theory::Rels] **************** Done with doTCLemmas !" << std::endl;
+  }
+
+  void TheorySetsRels::sendLemma(Node conc, Node ant, const char * c) {
+    if( !holds( conc ) ) {
+      Node lemma = NodeManager::currentNM()->mkNode(kind::IMPLIES, ant, conc);
+      if( d_lemmas_produced.find( lemma ) == d_lemmas_produced.end() ) {
+        d_lemmas_out.push_back( lemma );
+        d_lemmas_produced.insert( lemma );
+        Trace("rels-send-lemma") << "[Theory::Rels] **** Generate a lemma conclusion = " << conc << " with reason = " << ant << " by " << c << std::endl;
+      }
+    }
+  }
+
+  void TheorySetsRels::sendInfer( Node fact, Node exp, const char * c ) {
+    if( !holds( fact ) ) {
+      Trace("rels-send-lemma") << "[Theory::Rels] **** Generate an infered fact "
+                               << fact << " with reason " << exp << " by "<< c << std::endl;
+      d_pending_facts[fact] = exp;
+    } else {
+      Trace("rels-send-lemma-debug") << "[Theory::Rels] **** Generate an infered fact "
+                                     << fact << " with reason " << exp << " by "<< c
+                                     << ", but it holds already, thus skip it!" << std::endl;
+    }
+  }
+
+  Node TheorySetsRels::getRepresentative( Node t ) {
+    if( d_eqEngine->hasTerm( t ) ){
+      return d_eqEngine->getRepresentative( t );
+    }else{
+      return t;
+    }
+  }
+
+  bool TheorySetsRels::hasTerm( Node a ){
+    return d_eqEngine->hasTerm( a );
+  }
+
+  bool TheorySetsRels::areEqual( Node a, Node b ){
+    Assert(a.getType() == b.getType());
+    Trace("rels-eq") << "[sets-rels]**** checking equality between " << a << " and " << b << std::endl;
+    if(a == b) {
+      return true;
+    } else if( hasTerm( a ) && hasTerm( b ) ){
+      return d_eqEngine->areEqual( a, b );
+    } else if(a.getType().isTuple()) {
+      bool equal = true;
+      for(unsigned int i = 0; i < a.getType().getTupleLength(); i++) {
+        equal = equal && areEqual(RelsUtils::nthElementOfTuple(a, i), RelsUtils::nthElementOfTuple(b, i));
+      }
+      return equal;
+    } else if(!a.getType().isBoolean()){
+      makeSharedTerm(a);
+      makeSharedTerm(b);
+    }
+    return false;
+  }
+
+  /*
+   * Make sure duplicate members are not added in map
+   */
+  bool TheorySetsRels::safelyAddToMap(std::map< Node, std::vector<Node> >& map, Node rel_rep, Node member) {
+    std::map< Node, std::vector< Node > >::iterator mem_it = map.find(rel_rep);
+    if(mem_it == map.end()) {
+      std::vector<Node> members;
+      members.push_back(member);
+      map[rel_rep] = members;
+      return true;
+    } else {
+      std::vector<Node>::iterator mems = mem_it->second.begin();
+      while(mems != mem_it->second.end()) {
+        if(areEqual(*mems, member)) {
+          return false;
+        }
+        mems++;
+      }
+      map[rel_rep].push_back(member);
+      return true;
+    }
+    return false;
+  }
+
+  void TheorySetsRels::addToMap(std::map< Node, std::vector<Node> >& map, Node rel_rep, Node member) {
+    if(map.find(rel_rep) == map.end()) {
+      std::vector<Node> members;
+      members.push_back(member);
+      map[rel_rep] = members;
+    } else {
+      map[rel_rep].push_back(member);
+    }
+  }
+
+  void TheorySetsRels::addSharedTerm( TNode n ) {
+    Trace("rels-debug") << "[sets-rels] Add a shared term:  " << n << std::endl;
+    d_sets_theory.addSharedTerm(n);
+    d_eqEngine->addTriggerTerm(n, THEORY_SETS);
+  }
+
+  void TheorySetsRels::makeSharedTerm( Node n ) {
+    Trace("rels-share") << " [sets-rels] making shared term " << n << std::endl;
+    if(d_shared_terms.find(n) == d_shared_terms.end()) {
+      Node skolem = NodeManager::currentNM()->mkSkolem( "sts", NodeManager::currentNM()->mkSetType( n.getType() ) );
+      sendLemma(skolem.eqNode(NodeManager::currentNM()->mkNode(kind::SINGLETON,n)), d_trueNode, "share-term");
+      d_shared_terms.insert(n);
+    }
+  }
+
+  bool TheorySetsRels::holds(Node node) {
+    bool polarity       = node.getKind() != kind::NOT;
+    Node atom           = polarity ? node : node[0];
+    return d_sets_theory.isEntailed( atom, polarity );
+  }
+
+  /*
+   * For each tuple n, we store a mapping between n and a list of its elements representatives
+   * in d_tuple_reps. This would later be used for applying JOIN operator.
+   */
+  void TheorySetsRels::computeTupleReps( Node n ) {
+    if( d_tuple_reps.find( n ) == d_tuple_reps.end() ){
+      for( unsigned i = 0; i < n.getType().getTupleLength(); i++ ){
+        d_tuple_reps[n].push_back( getRepresentative( RelsUtils::nthElementOfTuple(n, i) ) );
+      }
+    }
+  }
+
+  inline Node TheorySetsRels::constructPair(Node tc_rep, Node a, Node b) {
+    Datatype dt = tc_rep.getType().getSetElementType().getDatatype();
+    return NodeManager::currentNM()->mkNode(kind::APPLY_CONSTRUCTOR, Node::fromExpr(dt[0].getConstructor()), a, b);
+  }
+
+  /*
+   * Node n[0] is a tuple variable, reduce n[0] to a concrete representation,
+   * which is (e1, ..., en) where e1, ... ,en are concrete elements of tuple n[0].
+   */
+  void TheorySetsRels::reduceTupleVar(Node n) {
+    if(d_symbolic_tuples.find(n) == d_symbolic_tuples.end()) {
+      Trace("rels-debug") << "[Theory::Rels] Reduce tuple var: " << n[0] << " to a concrete one " << " node = " << n << std::endl;
+      std::vector<Node> tuple_elements;
+      tuple_elements.push_back(Node::fromExpr((n[0].getType().getDatatype())[0].getConstructor()));
+      for(unsigned int i = 0; i < n[0].getType().getTupleLength(); i++) {
+        Node element = RelsUtils::nthElementOfTuple(n[0], i);
+        makeSharedTerm(element);
+        tuple_elements.push_back(element);
+      }
+      Node tuple_reduct = NodeManager::currentNM()->mkNode(kind::APPLY_CONSTRUCTOR, tuple_elements);
+      tuple_reduct = NodeManager::currentNM()->mkNode(kind::MEMBER,tuple_reduct, n[1]);
+      Node tuple_reduction_lemma = NodeManager::currentNM()->mkNode(kind::EQUAL, n, tuple_reduct);
+      sendLemma(tuple_reduction_lemma, d_trueNode, "tuple-reduction");
+      d_symbolic_tuples.insert(n);
+    }
+  }
+
+  TheorySetsRels::TheorySetsRels( context::Context* c,
+                                  context::UserContext* u,
+                                  eq::EqualityEngine* eq,
+                                  context::CDO<bool>* conflict,
+                                  TheorySets& d_set ):
+    d_vec_size(c),
+    d_eqEngine(eq),
+    d_conflict(conflict),
+    d_sets_theory(d_set),
+    d_trueNode(NodeManager::currentNM()->mkConst<bool>(true)),
+    d_falseNode(NodeManager::currentNM()->mkConst<bool>(false)),
+    d_pending_merge(c),
+    d_lemmas_produced(u),
+    d_shared_terms(u)
+  {
+    d_eqEngine->addFunctionKind(kind::PRODUCT);
+    d_eqEngine->addFunctionKind(kind::JOIN);
+    d_eqEngine->addFunctionKind(kind::TRANSPOSE);
+    d_eqEngine->addFunctionKind(kind::TCLOSURE);
+  }
+
+  TheorySetsRels::~TheorySetsRels() {
+    for(std::map< Node, EqcInfo* >::iterator i = d_eqc_info.begin(), iend = d_eqc_info.end();
+        i != iend; ++i){
+      EqcInfo* current = (*i).second;
+      Assert(current != NULL);
+      delete current;
+    }
+  }
+
+  std::vector<Node> TupleTrie::findTerms( std::vector< Node >& reps, int argIndex ) {
+    std::vector<Node>                           nodes;
+    std::map< Node, TupleTrie >::iterator       it;
+
+    if( argIndex==(int)reps.size()-1 ){
+      if(reps[argIndex].getKind() == kind::SKOLEM) {
+        it = d_data.begin();
+        while(it != d_data.end()) {
+          nodes.push_back(it->first);
+          it++;
+        }
+      }
+      return nodes;
+    }else{
+      it = d_data.find( reps[argIndex] );
+      if( it==d_data.end() ){
+        return nodes;
+      }else{
+        return it->second.findTerms( reps, argIndex+1 );
+      }
+    }
+  }
+
+  Node TupleTrie::existsTerm( std::vector< Node >& reps, int argIndex ) {
+    if( argIndex==(int)reps.size() ){
+      if( d_data.empty() ){        
+        return Node::null();
+      }else{
+        return d_data.begin()->first;
+      }
+    }else{
+      std::map< Node, TupleTrie >::iterator it = d_data.find( reps[argIndex] );
+      if( it==d_data.end() ){
+        return Node::null();
+      }else{
+        return it->second.existsTerm( reps, argIndex+1 );
+      }
+    }
+  }
+
+  bool TupleTrie::addTerm( Node n, std::vector< Node >& reps, int argIndex ){
+    if( argIndex==(int)reps.size() ){
+      if( d_data.empty() ){
+        //store n in d_data (this should be interpretted as the "data" and not as a reference to a child)
+        d_data[n].clear();
+        return true;
+      }else{
+        return false;
+      }
+    }else{
+      return d_data[reps[argIndex]].addTerm( n, reps, argIndex+1 );
+    }
+  }
+
+  void TupleTrie::debugPrint( const char * c, Node n, unsigned depth ) {
+    for( std::map< Node, TupleTrie >::iterator it = d_data.begin(); it != d_data.end(); ++it ){
+      for( unsigned i=0; i<depth; i++ ){ Debug(c) << "  "; }
+      Debug(c) << it->first << std::endl;
+      it->second.debugPrint( c, n, depth+1 );
+    }
+  }
+
+  Node TheorySetsRels::explain( Node literal ){
+    //use lazy explanations
+    return literal;
+  }
+
+  TheorySetsRels::EqcInfo::EqcInfo( context::Context* c ) :
+  d_mem(c), d_mem_exp(c), d_in(c), d_out(c),
+  d_tp(c), d_pt(c), d_join(c), d_tc(c) {}
+
+  // Create an integer id for tuple element
+  int TheorySetsRels::getOrMakeElementRepId(EqcInfo* ei, Node e_rep) {
+    Trace("rels-std") << "[sets-rels] getOrMakeElementRepId:" << " e_rep = " << e_rep << std::endl;
+    std::map< Node, int >::iterator nid_it  = d_node_id.find(e_rep);
+
+    if( nid_it == d_node_id.end() ) {
+      if( d_eqEngine->hasTerm(e_rep) ) {
+        // it is possible that e's rep changes at this moment, thus we need to know the previous rep id of eqc of e
+        eq::EqClassIterator rep_eqc_i = eq::EqClassIterator( e_rep, d_eqEngine );
+        while( !rep_eqc_i.isFinished() ) {
+          std::map< Node, int >::iterator id_it = d_node_id.find(*rep_eqc_i);
+
+          if( id_it != d_node_id.end() ) {
+            d_id_node[id_it->second]    = e_rep;
+            d_node_id[e_rep]            = id_it->second;
+            return id_it->second;
+          }
+          rep_eqc_i++;
+        }
+      }
+      d_id_node[ei->counter]    = e_rep;
+      d_node_id[e_rep]          = ei->counter;
+      ei->counter++;
+      return ei->counter-1;
+    }
+    Trace("rels-std") << "[sets-rels] finish getOrMakeElementRepId:" << " e_rep = " << e_rep << std::endl;
+    return nid_it->second;
+  }
+
+  bool TheorySetsRels::insertIntoIdList(IdList& idList, int mem) {
+    IdList::const_iterator      idListIt = idList.begin();
+    while(idListIt != idList.end()) {
+      if(*idListIt == mem) {
+        return false;
+      }
+      idListIt++;
+    }
+    idList.push_back(mem);
+    return true;
+  }
+
+  void TheorySetsRels::addTCMemAndSendInfer( EqcInfo* tc_ei, Node membership, Node exp, bool fromRel ) {
+    Trace("rels-std") << "[sets-rels] addTCMemAndSendInfer:" << " membership = " << membership << " from a relation? " << fromRel<< std::endl;
+
+    Node     fst     = RelsUtils::nthElementOfTuple(membership[0], 0);
+    Node     snd     = RelsUtils::nthElementOfTuple(membership[0], 1);
+    Node     fst_rep = getRepresentative(fst);
+    Node     snd_rep = getRepresentative(snd);
+    Node     mem_rep = RelsUtils::constructPair(membership[1], fst_rep, snd_rep);
+
+    if(tc_ei->d_mem.find(mem_rep) != tc_ei->d_mem.end()) {
+      return;
+    }
+
+    int fst_rep_id = getOrMakeElementRepId( tc_ei, fst_rep );
+    int snd_rep_id = getOrMakeElementRepId( tc_ei, snd_rep );
+
+    std::hash_set<int>       in_reachable;
+    std::hash_set<int>       out_reachable;
+    collectReachableNodes(tc_ei->d_id_inIds, fst_rep_id, in_reachable);
+    collectReachableNodes(tc_ei->d_id_outIds, snd_rep_id, out_reachable);
+
+    // If fst_rep is inserted into in_lst successfully,
+    // save rep pair's exp and send out TC inference lemmas.
+    // Otherwise, mem's rep is already in the TC and return.
+    if( addId(tc_ei->d_id_inIds, snd_rep_id, fst_rep_id) ) {
+      Node reason       = exp == Node::null() ? explain(membership) : exp;
+      if(!fromRel && tc_ei->d_tc.get() != membership[1]) {
+        reason  = NodeManager::currentNM()->mkNode(kind::AND,reason, explain(NodeManager::currentNM()->mkNode(kind::EQUAL,tc_ei->d_tc.get(), membership[1])));
+      }
+      if(fst != fst_rep) {
+        reason  = NodeManager::currentNM()->mkNode(kind::AND,reason, explain(NodeManager::currentNM()->mkNode(kind::EQUAL,fst, fst_rep)));
+      }
+      if(snd != snd_rep) {
+        reason  = NodeManager::currentNM()->mkNode(kind::AND,reason, explain(NodeManager::currentNM()->mkNode(kind::EQUAL,snd, snd_rep)));
+      }
+      tc_ei->d_mem_exp[mem_rep] = reason;
+      Trace("rels-std") << "Added member " << mem_rep << " for " << tc_ei->d_tc.get()<< " with reason = " << reason << std::endl;
+      tc_ei->d_mem.insert(mem_rep);
+      Trace("rels-std") << "Added in membership arrow for " << snd_rep << " from: " << fst_rep << std::endl;
+    } else {
+      // Nothing inserted into the eqc
+      return;
+    }
+    Trace("rels-std") << "Add out membership arrow for " << fst_rep << " to : " << snd_rep << std::endl;
+    addId(tc_ei->d_id_inIds, fst_rep_id, snd_rep_id);
+    sendTCInference(tc_ei, in_reachable, out_reachable, mem_rep, fst_rep, snd_rep, fst_rep_id, snd_rep_id);
+  }
+
+  Node TheorySetsRels::explainTCMem(EqcInfo* ei, Node pair, Node fst, Node snd) {
+    Trace("rels-tc") << "explainTCMem ############ pair = " << pair << std::endl;
+    if(ei->d_mem_exp.find(pair) != ei->d_mem_exp.end()) {
+      return (*ei->d_mem_exp.find(pair)).second;
+    }
+    NodeMap::iterator   mem_exp_it      = ei->d_mem_exp.begin();
+
+    while(mem_exp_it != ei->d_mem_exp.end()) {
+      Node      tuple   = (*mem_exp_it).first;
+      Node      fst_e   = RelsUtils::nthElementOfTuple(tuple, 0);
+      Node      snd_e   = RelsUtils::nthElementOfTuple(tuple, 1);
+      Node      reason  = (*mem_exp_it).second;
+
+      if(areEqual(fst, fst_e) && areEqual(snd, snd_e)) {
+        if( fst != fst_e) {
+          reason = NodeManager::currentNM()->mkNode(kind::AND, reason, explain( NodeManager::currentNM()->mkNode(kind::EQUAL, fst, fst_e)) );
+        }
+        if( snd != snd_e) {
+          reason = NodeManager::currentNM()->mkNode(kind::AND, reason, explain( NodeManager::currentNM()->mkNode(kind::EQUAL, snd, snd_e)) );
+        }
+        return reason;
+      }
+      ++mem_exp_it;
+    }
+    if(!ei->d_tc.get().isNull()) {
+      Node      rel_rep = getRepresentative(ei->d_tc.get()[0]);
+      EqcInfo*  rel_ei  = getOrMakeEqcInfo(rel_rep);
+      if(rel_ei != NULL) {
+        NodeMap::iterator rel_mem_exp_it = rel_ei->d_mem_exp.begin();
+        while(rel_mem_exp_it != rel_ei->d_mem_exp.end()) {
+          Node  exp     = rel_rep == ei->d_tc.get()[0] ? d_trueNode : explain(NodeManager::currentNM()->mkNode(kind::EQUAL,rel_rep, ei->d_tc.get()[0]));
+          Node  tuple   = (*rel_mem_exp_it).first;
+          Node  fst_e   = RelsUtils::nthElementOfTuple(tuple, 0);
+          Node  snd_e   = RelsUtils::nthElementOfTuple(tuple, 1);
+
+          if(areEqual(fst, fst_e) && areEqual(snd, snd_e)) {
+            if( fst != fst_e) {
+              exp = NodeManager::currentNM()->mkNode(kind::AND, exp, explain( NodeManager::currentNM()->mkNode(kind::EQUAL, fst, fst_e)) );
+            }
+            if( snd != snd_e) {
+              exp = NodeManager::currentNM()->mkNode(kind::AND, exp, explain( NodeManager::currentNM()->mkNode(kind::EQUAL, snd, snd_e)) );
+            }
+            return NodeManager::currentNM()->mkNode(kind::AND, exp, (*rel_mem_exp_it).second);
+          }
+          ++rel_mem_exp_it;
+        }
+      }
+    }
+    Trace("rels-tc") << "End explainTCMem ############ pair = " << pair << std::endl;
+    return Node::null();
+  }
+
+  void TheorySetsRels::sendTCInference(EqcInfo* tc_ei, std::hash_set<int> in_reachable, std::hash_set<int> out_reachable, Node mem_rep, Node fst_rep, Node snd_rep, int id1, int id2) {
+    Trace("rels-std") << "Start making TC inference after adding a member " << mem_rep << " to " << tc_ei->d_tc.get() << std::endl;
+
+    Node exp            = explainTCMem(tc_ei, mem_rep, fst_rep, snd_rep);
+    Assert(!exp.isNull());
+    sendMergeInfer(NodeManager::currentNM()->mkNode(kind::MEMBER, mem_rep, tc_ei->d_tc.get()), exp, "TC-Infer");
+    std::hash_set<int>::iterator        in_reachable_it = in_reachable.begin();
+
+    while(in_reachable_it != in_reachable.end()) {
+      Node    in_node   = d_id_node[*in_reachable_it];
+      Node    in_pair   = RelsUtils::constructPair(tc_ei->d_tc.get(), in_node, fst_rep);
+      Node    new_pair  = RelsUtils::constructPair(tc_ei->d_tc.get(), in_node, snd_rep);
+      Node    tc_exp    = explainTCMem(tc_ei, in_pair, in_node, fst_rep);
+      Node    reason    =  tc_exp.isNull() ? exp : NodeManager::currentNM()->mkNode(kind::AND,tc_exp, exp);
+
+      tc_ei->d_mem_exp[new_pair] = reason;
+      tc_ei->d_mem.insert(new_pair);
+      sendMergeInfer(NodeManager::currentNM()->mkNode(kind::MEMBER, new_pair, tc_ei->d_tc.get()), reason, "TC-Infer");
+      in_reachable_it++;
+    }
+
+    std::hash_set<int>::iterator        out_reachable_it = out_reachable.begin();
+    while(out_reachable_it != out_reachable.end()) {
+      Node    out_node        = d_id_node[*out_reachable_it];
+      Node    out_pair        = RelsUtils::constructPair(tc_ei->d_tc.get(), snd_rep, out_node);
+      Node    reason          = explainTCMem(tc_ei, out_pair, snd_rep, out_node);
+      Assert(reason != Node::null());
+
+      std::hash_set<int>::iterator        in_reachable_it = in_reachable.begin();
+
+      while(in_reachable_it != in_reachable.end()) {
+        Node    in_node         = d_id_node[*in_reachable_it];
+        Node    in_pair         = RelsUtils::constructPair(tc_ei->d_tc.get(), in_node, snd_rep);
+        Node    new_pair        = RelsUtils::constructPair(tc_ei->d_tc.get(), in_node, out_node);
+        Node    in_pair_exp     = explainTCMem(tc_ei, in_pair, in_node, snd_rep);
+
+        Assert(in_pair_exp != Node::null());
+        reason  = NodeManager::currentNM()->mkNode(kind::AND,reason, in_pair_exp);
+        tc_ei->d_mem_exp[new_pair] = reason;
+        tc_ei->d_mem.insert(new_pair);
+        sendMergeInfer(NodeManager::currentNM()->mkNode(kind::MEMBER, new_pair, tc_ei->d_tc.get()), reason, "TC-Infer");
+        in_reachable_it++;
+      }
+      out_reachable_it++;
+    }
+  }
+
+  void TheorySetsRels::collectReachableNodes(std::map< int, std::vector< int > >& id_map, int start_id, std::hash_set< int >& reachable_set, bool firstRound) {
+    Trace("rels-std") << "****  Collecting reachable nodes for node with id " << start_id << std::endl;
+    if(reachable_set.find(start_id) != reachable_set.end()) {
+      return;
+    }
+    if(!firstRound) {
+      reachable_set.insert(start_id);
+    }
+
+    std::vector< int > id_list              = getIdList(id_map, start_id);
+    std::vector< int >::iterator id_list_it = id_list.begin();
+
+    while( id_list_it != id_list.end() ) {
+      collectReachableNodes( id_map, *id_list_it, reachable_set, false );
+      id_list_it++;
+    }
+  }
+
+  void TheorySetsRels::eqNotifyNewClass( Node n ) {
+    Trace("rels-std") << "[sets-rels] eqNotifyNewClass:" << " t = " << n << std::endl;
+    if(isRel(n) && (n.getKind() == kind::TRANSPOSE ||
+                    n.getKind() == kind::PRODUCT ||
+                    n.getKind() == kind::JOIN ||
+                    n.getKind() == kind::TCLOSURE)) {
+      getOrMakeEqcInfo( n, true );
+    }
+  }
+
+  // Merge t2 into t1, t1 will be the rep of the new eqc
+  void TheorySetsRels::eqNotifyPostMerge( Node t1, Node t2 ) {
+    Trace("rels-std") << "[sets-rels] eqNotifyPostMerge:" << " t1 = " << t1 << " t2 = " << t2 << std::endl;
+
+    // Merge membership constraint with "true" or "false" eqc
+    if( (t1 == d_trueNode || t1 == d_falseNode) && t2.getKind() == kind::MEMBER && t2[0].getType().isTuple() ) {
+
+      Assert(t1 == d_trueNode || t1 == d_falseNode);
+      bool      polarity        = t1 == d_trueNode;
+      Node      t2_1rep         = getRepresentative(t2[1]);
+      EqcInfo*  ei              = getOrMakeEqcInfo( t2_1rep, true );
+
+      if( polarity ) {
+        ei->d_mem.insert(t2[0]);
+        ei->d_mem_exp[t2[0]] = explain(t2);
+      }
+      // Process a membership constraint that a tuple is a member of transpose of rel
+      if( !ei->d_tp.get().isNull() ) {
+        Node exp = polarity ? explain(t2) : explain(t2.negate());
+        if(ei->d_tp.get() != t2[1]) {
+          exp = NodeManager::currentNM()->mkNode(kind::AND, explain(NodeManager::currentNM()->mkNode(kind::EQUAL, ei->d_tp.get(), t2[1]) ), exp );
+        }
+        sendInferTranspose( polarity, t2[0], ei->d_tp.get(), exp, true );
+      }
+      // Process a membership constraint that a tuple is a member of product of rel
+      if( !ei->d_pt.get().isNull() ) {
+        Node exp = polarity ? explain(t2) : explain(t2.negate());
+        if(ei->d_pt.get() != t2[1]) {
+          exp = NodeManager::currentNM()->mkNode(kind::AND, explain(NodeManager::currentNM()->mkNode(kind::EQUAL, ei->d_pt.get(), t2[1]) ), exp );
+        }
+        sendInferProduct( polarity, t2[0], ei->d_pt.get(), exp );
+      }
+      // Process a membership constraint that a tuple is a member of transitive closure of rel
+      if( polarity && !ei->d_tc.get().isNull() ) {
+        addTCMemAndSendInfer( ei, t2, Node::null() );
+      }
+
+    // Merge two relation eqcs
+    } else if( t1.getType().isSet() && t2.getType().isSet() && t1.getType().getSetElementType().isTuple() ) {
+      mergeTransposeEqcs(t1, t2);
+      mergeProductEqcs(t1, t2);
+      mergeTCEqcs(t1, t2);
+    }
+
+    Trace("rels-std") << "[sets-rels] done with eqNotifyPostMerge:" << " t1 = " << t1 << " t2 = " << t2 << std::endl;
+  }
+
+  void TheorySetsRels::mergeTCEqcs(Node t1, Node t2) {
+    Trace("rels-std") << "[sets-rels] Merge TC eqcs t1 = " << t1 << " and t2 = " << t2 << std::endl;
+
+    EqcInfo* t1_ei = getOrMakeEqcInfo(t1);
+    EqcInfo* t2_ei = getOrMakeEqcInfo(t2);
+
+    if(t1_ei != NULL && t2_ei != NULL) {
+      if(!t1_ei->d_tc.get().isNull()) {
+        NodeSet::const_iterator     mem_it  = t2_ei->d_mem.begin();
+        while(mem_it != t2_ei->d_mem.end()) {
+          addTCMemAndSendInfer(t1_ei, NodeManager::currentNM()->mkNode(kind::MEMBER,*mem_it, t1_ei->d_tc.get()), (*t2_ei->d_mem_exp.find(*mem_it)).second);
+          mem_it++;
+        }
+      } else if(!t2_ei->d_tc.get().isNull()) {
+        t1_ei->d_tc.set(t2_ei->d_tc);
+        NodeSet::const_iterator     t1_mem_it  = t1_ei->d_mem.begin();
+
+        while(t1_mem_it != t1_ei->d_mem.end()) {
+          NodeMap::const_iterator       reason_it       = t1_ei->d_mem_exp.find(*t1_mem_it);
+          Assert(reason_it != t1_ei->d_mem_exp.end());
+          addTCMemAndSendInfer(t1_ei, NodeManager::currentNM()->mkNode(kind::MEMBER,*t1_mem_it, t1_ei->d_tc.get()), (*reason_it).second);
+          t1_mem_it++;
+        }
+
+        NodeSet::const_iterator     t2_mem_it  = t2_ei->d_mem.begin();
+
+        while(t2_mem_it != t2_ei->d_mem.end()) {
+          addTCMemAndSendInfer(t1_ei, NodeManager::currentNM()->mkNode(kind::MEMBER,*t2_mem_it, t2_ei->d_tc.get()), (*t2_ei->d_mem_exp.find(*t2_mem_it)).second);
+          t2_mem_it++;
+        }
+      }
+    }
+    Trace("rels-std") << "[sets-rels] Done with merging TC eqcs t1 = " << t1 << " and t2 = " << t2 << std::endl;
+  }
+
+
+
+
+  void TheorySetsRels::mergeProductEqcs(Node t1, Node t2) {
+    Trace("rels-std") << "[sets-rels] Merge PRODUCT eqcs t1 = " << t1 << " and t2 = " << t2 << std::endl;
+    EqcInfo* t1_ei = getOrMakeEqcInfo(t1);
+    EqcInfo* t2_ei = getOrMakeEqcInfo(t2);
+
+    if(t1_ei != NULL && t2_ei != NULL) {
+      // Apply Product rule on (non)members of t2 and t1->pt
+      if(!t1_ei->d_pt.get().isNull()) {
+        for(NodeSet::key_iterator itr = t2_ei->d_mem.key_begin(); itr != t2_ei->d_mem.key_end(); itr++) {
+          if(!t1_ei->d_mem.contains(*itr)) {
+            sendInferProduct( true, *itr, t1_ei->d_pt.get(), NodeManager::currentNM()->mkNode(kind::AND,explain(NodeManager::currentNM()->mkNode(kind::EQUAL,t1_ei->d_pt.get(), t2)), explain(NodeManager::currentNM()->mkNode(kind::MEMBER,*itr, t2))) );
+          }
+        }
+      } else if(!t2_ei->d_pt.get().isNull()) {
+        t1_ei->d_pt.set(t2_ei->d_pt);
+        for(NodeSet::key_iterator itr = t1_ei->d_mem.key_begin(); itr != t1_ei->d_mem.key_end(); itr++) {
+          if(!t2_ei->d_mem.contains(*itr)) {
+            sendInferProduct( true, *itr, t2_ei->d_pt.get(), NodeManager::currentNM()->mkNode(kind::AND,explain(NodeManager::currentNM()->mkNode(kind::EQUAL,t1, t2_ei->d_pt.get())), explain(NodeManager::currentNM()->mkNode(kind::MEMBER,*itr, t1))) );
+          }
+        }
+      }
+    // t1 was created already and t2 was not
+    } else if(t1_ei != NULL) {
+      if(t1_ei->d_pt.get().isNull() && t2.getKind() == kind::PRODUCT) {
+        t1_ei->d_pt.set( t2 );
+      }
+    } else if(t2_ei != NULL){
+      t1_ei = getOrMakeEqcInfo(t1, true);
+      if(t1_ei->d_pt.get().isNull() && !t2_ei->d_pt.get().isNull()) {
+        t1_ei->d_pt.set(t2_ei->d_pt);
+        for(NodeSet::key_iterator itr = t2_ei->d_mem.key_begin(); itr != t2_ei->d_mem.key_end(); itr++) {
+          t1_ei->d_mem.insert(*itr);
+          t1_ei->d_mem_exp.insert(*itr, t2_ei->d_mem_exp[*itr]);
+        }
+      }
+    }
+  }
+
+  void TheorySetsRels::mergeTransposeEqcs( Node t1, Node t2 ) {
+    Trace("rels-std") << "[sets-rels] Merge TRANSPOSE eqcs t1 = " << t1 << " and t2 = " << t2 << std::endl;
+    EqcInfo* t1_ei = getOrMakeEqcInfo( t1 );
+    EqcInfo* t2_ei = getOrMakeEqcInfo( t2 );
+
+    if( t1_ei != NULL && t2_ei != NULL ) {
+      Trace("rels-std") << "[sets-rels] 0 Merge TRANSPOSE eqcs t1 = " << t1 << " and t2 = " << t2 << std::endl;
+      // TP(t1) = TP(t2) -> t1 = t2;
+      if( !t1_ei->d_tp.get().isNull() && !t2_ei->d_tp.get().isNull() ) {
+        sendInferTranspose( true, t1_ei->d_tp.get(), t2_ei->d_tp.get(), explain(NodeManager::currentNM()->mkNode(kind::EQUAL,t1, t2)) );
+      }
+      // Apply transpose rule on (non)members of t2 and t1->tp
+      if( !t1_ei->d_tp.get().isNull() ) {
+        for( NodeSet::key_iterator itr = t2_ei->d_mem.key_begin(); itr != t2_ei->d_mem.key_end(); itr++ ) {
+          if( !t1_ei->d_mem.contains( *itr ) ) {
+            sendInferTranspose( true, *itr, t1_ei->d_tp.get(), NodeManager::currentNM()->mkNode(kind::AND, explain(NodeManager::currentNM()->mkNode(kind::EQUAL,t1_ei->d_tp.get(), t2)), explain(NodeManager::currentNM()->mkNode(kind::MEMBER,*itr, t2))) );
+          }
+        }
+        // Apply transpose rule on members of t1 and t2->tp
+      } else if( !t2_ei->d_tp.get().isNull() ) {
+        t1_ei->d_tp.set( t2_ei->d_tp );
+        for( NodeSet::key_iterator itr = t1_ei->d_mem.key_begin(); itr != t1_ei->d_mem.key_end(); itr++ ) {
+          if( !t2_ei->d_mem.contains(*itr) ) {
+            sendInferTranspose( true, *itr, t2_ei->d_tp.get(), NodeManager::currentNM()->mkNode(kind::AND, explain(NodeManager::currentNM()->mkNode(kind::EQUAL,t1, t2_ei->d_tp.get())), explain(NodeManager::currentNM()->mkNode(kind::MEMBER,*itr, t1))) );
+          }
+        }
+      }
+    // t1 was created already and t2 was not
+    } else if(t1_ei != NULL) {
+      if( t1_ei->d_tp.get().isNull() && t2.getKind() == kind::TRANSPOSE ) {
+        t1_ei->d_tp.set( t2 );
+      }
+    } else if( t2_ei != NULL ){
+      t1_ei = getOrMakeEqcInfo( t1, true );
+      if( t1_ei->d_tp.get().isNull() && !t2_ei->d_tp.get().isNull() ) {
+        t1_ei->d_tp.set( t2_ei->d_tp );
+        for( NodeSet::key_iterator itr = t2_ei->d_mem.key_begin(); itr != t2_ei->d_mem.key_end(); itr++ ) {
+          t1_ei->d_mem.insert( *itr );
+          t1_ei->d_mem_exp.insert( *itr, t2_ei->d_mem_exp[*itr] );
+        }
+      }
+    }
+  }
+
+  void TheorySetsRels::doPendingMerge() {
+    for( NodeList::const_iterator itr = d_pending_merge.begin(); itr != d_pending_merge.end(); itr++ ) {
+      if( !holds(*itr) ) {
+        if( d_lemmas_produced.find(*itr)==d_lemmas_produced.end() ) {
+          Trace("rels-lemma") << "[std-sets-rels-lemma] Send out a merge fact as lemma: "
+                              << *itr << std::endl;
+          d_sets_theory.d_out->lemma( *itr );
+          d_lemmas_produced.insert(*itr);
+        }
+      }
+    }
+  }
+
+  void TheorySetsRels::sendInferTranspose( bool polarity, Node t1, Node t2, Node exp, bool reverseOnly ) {
+    Assert( t2.getKind() == kind::TRANSPOSE );
+    if( !polarity ) {
+      return;
+    }
+    if( polarity && isRel(t1) && isRel(t2) ) {
+      Assert(t1.getKind() == kind::TRANSPOSE);
+      sendMergeInfer(NodeManager::currentNM()->mkNode(kind::EQUAL, t1[0], t2[0]), exp, "Transpose-Equal");
+      return;
+    }
+
+    if( reverseOnly ) {
+      sendMergeInfer( NodeManager::currentNM()->mkNode(kind::MEMBER, RelsUtils::reverseTuple(t1), t2[0]), exp, "Transpose-Rule" );
+    } else {
+      sendMergeInfer(NodeManager::currentNM()->mkNode(kind::MEMBER, t1, t2), exp, "Transpose-Rule");
+      sendMergeInfer(NodeManager::currentNM()->mkNode(kind::MEMBER, RelsUtils::reverseTuple(t1), t2[0]), exp, "Transpose-Rule");
+    }
+  }
+
+  void TheorySetsRels::sendMergeInfer( Node fact, Node reason, const char * c ) {
+    if( !holds( fact ) ) {
+      Node lemma = NodeManager::currentNM()->mkNode( kind::IMPLIES, reason, fact);
+      d_pending_merge.push_back(lemma);
+      Trace("std-rels") << "[std-rels-lemma] Generate a lemma by applying " << c
+                        << ": " << lemma << std::endl;
+    }
+  }
+
+  void TheorySetsRels::sendInferProduct( bool polarity, Node member, Node pt_rel, Node exp ) {
+    Assert( pt_rel.getKind() == kind::PRODUCT );
+
+    if(!polarity) {
+      return;
+    }
+
+    std::vector<Node>   r1_element;
+    std::vector<Node>   r2_element;
+    Node                r1      = pt_rel[0];
+    Node                r2      = pt_rel[1];
+    Datatype            dt      = r1.getType().getSetElementType().getDatatype();
+    unsigned int        i       = 0;
+    unsigned int        s1_len  = r1.getType().getSetElementType().getTupleLength();
+    unsigned int        tup_len = pt_rel.getType().getSetElementType().getTupleLength();
+
+    r1_element.push_back(Node::fromExpr(dt[0].getConstructor()));
+    for( ; i < s1_len; ++i ) {
+      r1_element.push_back( RelsUtils::nthElementOfTuple( member, i ) );
+    }
+
+    dt = r2.getType().getSetElementType().getDatatype();
+    r2_element.push_back( Node::fromExpr( dt[0].getConstructor() ) );
+    for( ; i < tup_len; ++i ) {
+      r2_element.push_back( RelsUtils::nthElementOfTuple(member, i) );
+    }
+
+    Node tuple_1 = NodeManager::currentNM()->mkNode( kind::APPLY_CONSTRUCTOR, r1_element );
+    Node tuple_2 = NodeManager::currentNM()->mkNode( kind::APPLY_CONSTRUCTOR, r2_element );
+    sendMergeInfer( NodeManager::currentNM()->mkNode(kind::MEMBER, tuple_1, r1), exp, "Product-Split" );
+    sendMergeInfer( NodeManager::currentNM()->mkNode(kind::MEMBER, tuple_2, r2), exp, "Product-Split" );
+  }
+
+  TheorySetsRels::EqcInfo* TheorySetsRels::getOrMakeEqcInfo( Node n, bool doMake ){
+    std::map< Node, EqcInfo* >::iterator eqc_i = d_eqc_info.find( n );
+    if( eqc_i == d_eqc_info.end() ){
+      if( doMake ){
+        EqcInfo* ei;
+        if( eqc_i!=d_eqc_info.end() ){
+          ei = eqc_i->second;
+        }else{
+          ei = new EqcInfo(d_sets_theory.getSatContext());
+          d_eqc_info[n] = ei;
+        }
+        if( n.getKind() == kind::TRANSPOSE ){
+          ei->d_tp = n;
+        } else if( n.getKind() == kind::PRODUCT ) {
+          ei->d_pt = n;
+        } else if( n.getKind() == kind::TCLOSURE ) {
+          ei->d_tc = n;
+        } else if( n.getKind() == kind::JOIN ) {
+          ei->d_join = n;
+        }
+        return ei;
+      }else{
+        return NULL;
+      }
+    }else{
+      return (*eqc_i).second;
+    }
+  }
+
+
+  Node TheorySetsRels::mkAnd( std::vector<TNode>& conjunctions ) {
+    Assert(conjunctions.size() > 0);
+    std::set<TNode> all;
+
+    for (unsigned i = 0; i < conjunctions.size(); ++i) {
+      TNode t = conjunctions[i];
+      if (t.getKind() == kind::AND) {
+        for(TNode::iterator child_it = t.begin();
+            child_it != t.end(); ++child_it) {
+          Assert((*child_it).getKind() != kind::AND);
+          all.insert(*child_it);
+        }
+      }
+      else {
+        all.insert(t);
+      }
+    }
+    Assert(all.size() > 0);
+    if (all.size() == 1) {
+      // All the same, or just one
+      return conjunctions[0];
+    }
+
+    NodeBuilder<> conjunction(kind::AND);
+    std::set<TNode>::const_iterator it = all.begin();
+    std::set<TNode>::const_iterator it_end = all.end();
+    while (it != it_end) {
+      conjunction << *it;
+      ++ it;
+    }
+
+    return conjunction;
+  }/* mkAnd() */
+
+  void TheorySetsRels::printNodeMap(char* fst, char* snd, NodeMap map) {
+    NodeMap::iterator map_it    = map.begin();
+    while(map_it != map.end()) {
+      Trace("rels-debug") << fst << " "<< (*map_it).first << " " << snd << " " << (*map_it).second<< std::endl;
+      map_it++;
+    }
+  }
+
+  bool TheorySetsRels::addId( std::map< int, std::vector< int > >& id_map, int key, int id ) {
+    int n_data = d_vec_size[key];
+    int len    = n_data < (int)id_map[key].size() ? n_data : id_map[key].size();
+
+    for( int i = 0; i < len; i++ ) {
+      if( id_map[key][i] == id) {
+        return false;
+      }
+    }
+    if( n_data < (int)id_map[key].size() ) {
+      id_map[key][n_data] = id;
+    } else {
+      id_map[key].push_back( id );
+    }
+    d_vec_size[key] = n_data+1;
+    return true;
+  }
+
+  std::vector< int > TheorySetsRels::getIdList( std::map< int, std::vector< int > >& id_map, int key ) {
+    std::vector< int > id_list;
+    int n_data = d_vec_size[key];
+    int len    = n_data < (int)id_map[key].size() ? n_data : id_map[key].size();
+
+    for( int i = 0; i < len; i++ ) {
+      id_list.push_back(id_map[key][i]);
+    }
+    return id_list;
+  }
+
+}
+}
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/theory/sets/theory_sets_rels.h b/src/theory/sets/theory_sets_rels.h
new file mode 100644
index 0000000..65a1c41
--- /dev/null
+++ b/src/theory/sets/theory_sets_rels.h
@@ -0,0 +1,262 @@
+/*********************                                                        */
+/*! \file theory_sets_rels.h
+ ** \verbatim
+ ** Original author: Paul Meng
+ ** Major contributors: none
+ ** Minor contributors (to current version): none
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2014  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.\endverbatim
+ **
+ ** \brief Sets theory implementation.
+ **
+ ** Extension to Sets theory.
+ **/
+
+#ifndef SRC_THEORY_SETS_THEORY_SETS_RELS_H_
+#define SRC_THEORY_SETS_THEORY_SETS_RELS_H_
+
+#include "theory/theory.h"
+#include "theory/uf/equality_engine.h"
+#include "context/cdhashset.h"
+#include "context/cdchunk_list.h"
+#include "theory/sets/rels_utils.h"
+
+namespace CVC4 {
+namespace theory {
+namespace sets {
+
+class TheorySets;
+
+
+class TupleTrie {
+public:
+  /** the data */
+  std::map< Node, TupleTrie > d_data;
+public:
+  std::vector<Node> findTerms( std::vector< Node >& reps, int argIndex = 0 );
+  Node existsTerm( std::vector< Node >& reps, int argIndex = 0 );
+  bool addTerm( Node n, std::vector< Node >& reps, int argIndex = 0 );
+  void debugPrint( const char * c, Node n, unsigned depth = 0 );
+  void clear() { d_data.clear(); }
+};/* class TupleTrie */
+
+class TheorySetsRels {
+
+  typedef context::CDChunkList< Node >                            NodeList;
+  typedef context::CDChunkList< int >                             IdList;
+  typedef context::CDHashMap< int, IdList* >                      IdListMap;
+  typedef context::CDHashSet< Node, NodeHashFunction >            NodeSet;
+  typedef context::CDHashMap< Node, bool, NodeHashFunction >      NodeBoolMap;
+  typedef context::CDHashMap< Node, NodeList*, NodeHashFunction > NodeListMap;
+  typedef context::CDHashMap< Node, NodeSet*, NodeHashFunction >  NodeSetMap;
+  typedef context::CDHashMap< Node, Node, NodeHashFunction >      NodeMap;
+
+public:
+  TheorySetsRels(context::Context* c,
+                 context::UserContext* u,
+                 eq::EqualityEngine*,
+                 context::CDO<bool>*,
+                 TheorySets&);
+
+  ~TheorySetsRels();
+  void check(Theory::Effort);
+  void doPendingLemmas();
+
+  bool isRelationKind( Kind k );
+private:
+  /** equivalence class info
+   * d_mem tuples that are members of this equivalence class
+   * d_not_mem tuples that are not members of this equivalence class
+   * d_tp is a node of kind TRANSPOSE (if any) in this equivalence class,
+   * d_pt is a node of kind PRODUCT (if any) in this equivalence class,
+   * d_join is a node of kind JOIN (if any) in this equivalence class,
+   * d_tc is a node of kind TCLOSURE (if any) in this equivalence class,
+   */
+  class EqcInfo
+  {
+  public:
+    EqcInfo( context::Context* c );
+    ~EqcInfo(){}
+    static int                  counter;
+    NodeSet                     d_mem;
+    NodeMap                     d_mem_exp;
+    NodeListMap                 d_in;
+    NodeListMap                 d_out;
+    context::CDO< Node >        d_tp;
+    context::CDO< Node >        d_pt;
+    context::CDO< Node >        d_join;
+    context::CDO< Node >        d_tc;
+    /** mapping from an element rep id to a list of rep ids that pointed by */
+    /** Context dependent map Int -> IntList */
+    std::map< int, std::vector< int > > d_id_inIds;
+    /** mapping from an element rep id to a list of rep ids that point to */
+    /** Context dependent map Int -> IntList */
+    std::map< int, std::vector< int > > d_id_outIds;
+  };
+
+private:
+  /** Context */
+  context::CDHashMap< int, int > d_vec_size;
+
+  /** Mapping between integer id and tuple element rep */
+  std::map< int, Node >      d_id_node;
+
+  /** Mapping between tuple element rep and integer id*/
+  std::map< Node, int >      d_node_id;
+
+  /** has eqc info */
+  bool hasEqcInfo( TNode n ) { return d_eqc_info.find( n )!=d_eqc_info.end(); }
+
+  bool addId( std::map< int, std::vector< int > >& id_map, int key, int id );
+  std::vector< int > getIdList( std::map< int, std::vector< int > >& id_map, int key );
+
+  void collectReachableNodes( std::map< int, std::vector< int > >&, int, std::hash_set<int>& , bool first_round = true);
+
+
+private:
+  eq::EqualityEngine            *d_eqEngine;
+  context::CDO<bool>            *d_conflict;
+  TheorySets&                   d_sets_theory;
+
+  /** True and false constant nodes */
+  Node                          d_trueNode;
+  Node                          d_falseNode;
+
+  /** Facts and lemmas to be sent to EE */
+  std::map< Node, Node >        d_pending_facts;
+  std::vector< Node >           d_lemmas_out;
+  NodeList                      d_pending_merge;
+
+  /** inferences: maintained to ensure ref count for internally introduced nodes */
+  NodeSet                       d_lemmas_produced;
+  NodeSet                       d_shared_terms;
+
+  /** Relations that have been applied JOIN, PRODUCT, TC composition rules */
+  std::hash_set< Node, NodeHashFunction >       d_rel_nodes;
+  std::map< Node, std::vector<Node> >           d_tuple_reps;
+  std::map< Node, TupleTrie >                   d_membership_trie;
+
+  /** Symbolic tuple variables that has been reduced to concrete ones */
+  std::hash_set< Node, NodeHashFunction >       d_symbolic_tuples;
+
+  /** Mapping between relation and its (non)member representatives */
+  std::map< Node, std::vector<Node> >           d_rReps_memberReps_cache;
+  std::map< Node, std::vector<Node> >           d_rReps_nonMemberReps_cache;
+
+
+  /** Mapping between relation and its (non)member representatives explanation */
+  std::map< Node, std::vector<Node> >           d_rReps_memberReps_exp_cache;
+  std::map< Node, std::vector<Node> >           d_rReps_nonMemberReps_exp_cache;
+
+  /** Mapping between relation and its member representatives */
+  std::map< Node, std::vector<Node> >           d_membership_db;
+
+  /** Mapping between relation and its members' explanation */
+  std::map< Node, std::vector<Node> >           d_membership_exp_db;
+
+  /** Mapping between a relation representative and its equivalent relations involving relational operators */
+  std::map< Node, std::map<kind::Kind_t, std::vector<Node> > >                  d_terms_cache;
+
+  /** Mapping between relation and its member representatives */
+  std::map< Node, std::vector<Node> >           d_arg_rep_tp_terms;
+
+  /** Mapping between TC(r) and one explanation when building TC graph*/
+  std::map< Node, Node >                                                        d_membership_tc_exp_cache;
+
+  /** Mapping between transitive closure relation TC(r) (is not necessary a representative) and members directly asserted members */
+  std::map< Node, std::hash_set<Node, NodeHashFunction> >                       d_tc_membership_db;
+
+  /** Mapping between transitive closure relation TC(r) and its TC graph constructed based on the members of r*/
+  std::map< Node, std::map< Node, std::hash_set<Node, NodeHashFunction> > >     d_tc_r_graph;
+  std::map< Node, std::map< Node, std::hash_set<Node, NodeHashFunction> > >     d_rRep_tcGraph;
+  std::map< Node, std::map< Node, std::hash_set<Node, NodeHashFunction> > >     d_tcr_tcGraph;
+  std::map< Node, std::map< Node, Node > > d_tcr_tcGraph_exps;
+  std::map< Node, std::vector< Node > > d_tc_lemmas_last;
+
+  /** Mapping between transitive closure TC(r)'s representative and TC(r) */
+  std::map< Node, EqcInfo* > d_eqc_info;
+
+public:
+  void eqNotifyNewClass(Node t);
+  void eqNotifyPostMerge(Node t1, Node t2);
+
+private:
+
+  void doPendingMerge();
+  Node findTCMemExp(EqcInfo*, Node);
+  void buildTCAndExp(Node, EqcInfo*);
+  void mergeTCEqcs(Node t1, Node t2);
+  void mergeTCEqcExp(EqcInfo*, EqcInfo*);
+  void mergeProductEqcs(Node t1, Node t2);
+  int getOrMakeElementRepId(EqcInfo*, Node);
+  void mergeTransposeEqcs(Node t1, Node t2);
+  Node explainTCMem(EqcInfo*, Node, Node, Node);
+  void sendInferProduct(bool, Node, Node, Node);
+  EqcInfo* getOrMakeEqcInfo( Node n, bool doMake = false );
+  void sendInferTranspose(bool, Node, Node, Node, bool reverseOnly = false);
+  void addTCMemAndSendInfer(EqcInfo* tc_ei, Node mem, Node exp, bool fromRel = false);
+  void sendTCInference(EqcInfo* tc_ei, std::hash_set<int> in_reachable, std::hash_set<int> out_reachable, Node mem_rep, Node fst_rep, Node snd_rep, int id1, int id2);
+
+
+
+  void check();
+  Node explain(Node);
+  void collectRelsInfo();
+  void applyTransposeRule( std::vector<Node> tp_terms );
+  void applyTransposeRule( Node rel, Node rel_rep, Node exp );
+  void applyProductRule( Node rel, Node rel_rep, Node exp );
+  void applyJoinRule( Node rel, Node rel_rep, Node exp);
+  void applyTCRule( Node mem, Node rel, Node rel_rep, Node exp);
+  void buildTCGraphForRel( Node tc_rel );
+  void doTCInference();
+  void doTCInference( std::map< Node, std::hash_set<Node, NodeHashFunction> > rel_tc_graph, std::map< Node, Node > rel_tc_graph_exps, Node tc_rel );
+  void doTCInference(Node tc_rel, std::vector< Node > reasons, std::map< Node, std::hash_set< Node, NodeHashFunction > >& tc_graph,
+                       std::map< Node, Node >& rel_tc_graph_exps, Node start_node_rep, Node cur_node_rep, std::hash_set< Node, NodeHashFunction >& seen );
+
+  void composeMembersForRels( Node );
+  void computeMembersForBinOpRel( Node );
+  void computeMembersForUnaryOpRel( Node );
+
+  bool isTCReachable( Node mem_rep, Node tc_rel );
+  void isTCReachable( Node start, Node dest, std::hash_set<Node, NodeHashFunction>& hasSeen,
+                    std::map< Node, std::hash_set< Node, NodeHashFunction > >& tc_graph, bool& isReachable );
+
+
+  void addSharedTerm( TNode n );
+  void sendInfer( Node fact, Node exp, const char * c );
+  void sendLemma( Node fact, Node reason, const char * c );
+  void sendMergeInfer( Node fact, Node reason, const char * c );
+  void doTCLemmas();
+
+  // Helper functions
+  bool holds( Node );
+  bool hasTerm( Node a );
+  void makeSharedTerm( Node );
+  void reduceTupleVar( Node );
+  bool hasMember( Node, Node );
+  void computeTupleReps( Node );
+  bool areEqual( Node a, Node b );
+  Node getRepresentative( Node t );
+  bool insertIntoIdList(IdList&, int);
+  bool exists( std::vector<Node>&, Node );
+  Node mkAnd( std::vector< TNode >& assumptions );
+  inline void addToMembershipDB( Node, Node, Node  );
+  void printNodeMap(char* fst, char* snd, NodeMap map);
+  inline Node constructPair(Node tc_rep, Node a, Node b);
+  void addToMap( std::map< Node, std::vector<Node> >&, Node, Node );
+  bool safelyAddToMap( std::map< Node, std::vector<Node> >&, Node, Node );
+  bool isRel( Node n ) {return n.getType().isSet() && n.getType().getSetElementType().isTuple();}
+
+
+};
+
+
+}/* CVC4::theory::sets namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+
+
+#endif /* SRC_THEORY_SETS_THEORY_SETS_RELS_H_ */
diff --git a/src/theory/sets/theory_sets_rewriter.cpp b/src/theory/sets/theory_sets_rewriter.cpp
new file mode 100644
index 0000000..9669561
--- /dev/null
+++ b/src/theory/sets/theory_sets_rewriter.cpp
@@ -0,0 +1,521 @@
+/*********************                                                        */
+/*! \file theory_sets_rewriter.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Sets theory rewriter.
+ **
+ ** Sets theory rewriter.
+ **/
+
+#include "theory/sets/theory_sets_rewriter.h"
+#include "theory/sets/normal_form.h"
+#include "theory/sets/rels_utils.h"
+#include "expr/attribute.h"
+#include "options/sets_options.h"
+
+namespace CVC4 {
+namespace theory {
+namespace sets {
+
+typedef std::set<TNode> Elements;
+typedef std::hash_map<TNode, Elements, TNodeHashFunction> SettermElementsMap;
+
+struct FlattenedNodeTag {};
+typedef expr::Attribute<FlattenedNodeTag, bool> flattened;
+
+
+/**
+ * flattenNode looks for children of same kind, and if found merges
+ * them into the parent.
+ *
+ * It simultaneously handles a couple of other optimizations: 
+ * - trivialNode - if found during exploration, return that node itself
+ *    (like in case of OR, if "true" is found, makes sense to replace
+ *     whole formula with "true")
+ * - skipNode - as name suggests, skip them
+ *    (like in case of OR, you may want to skip any "false" nodes found)
+ *
+ * Use a null node if you want to ignore any of the optimizations.
+ */
+RewriteResponse flattenNode(TNode n, TNode trivialNode, TNode skipNode)
+{
+  if(n.hasAttribute(flattened()) && n.getAttribute(flattened())) {
+    return RewriteResponse(REWRITE_DONE, n);
+  }
+
+  typedef std::hash_set<TNode, TNodeHashFunction> node_set;
+
+  node_set visited;
+  visited.insert(skipNode);
+
+  std::vector<TNode> toProcess;
+  toProcess.push_back(n);
+
+  Kind k = n.getKind();
+  typedef std::vector<TNode> ChildList;
+  ChildList childList;   //TNode should be fine, since 'n' is still there
+
+  Debug("sets-rewrite-flatten") << "[sets-rewrite-flatten] " << n << std::endl;
+  for (unsigned i = 0; i < toProcess.size(); ++ i) {
+    TNode current = toProcess[i];
+    Debug("sets-rewrite-flatten") << "[sets-rewrite-flatten]   > Processing " << current << std::endl;
+    for(unsigned j = 0, j_end = current.getNumChildren(); j < j_end; ++ j) {
+      TNode child = current[j];
+      if(visited.find(child) != visited.end()) {
+        continue;
+      } else if(child == trivialNode) {
+        return RewriteResponse(REWRITE_DONE, trivialNode);
+      } else {
+        visited.insert(child);
+        if(child.getKind() == k) {
+          toProcess.push_back(child);
+        } else {
+          childList.push_back(child);
+        }
+      }
+    }
+  }
+  if (childList.size() == 0) return RewriteResponse(REWRITE_DONE, skipNode);
+  if (childList.size() == 1) return RewriteResponse(REWRITE_AGAIN, childList[0]);
+
+  sort(childList.begin(), childList.end());
+
+  /* Make sure we are under number of children possible in a node */
+  NodeManager* nodeManager = NodeManager::currentNM();
+  static const unsigned MAX_CHILDREN = (1u << __CVC4__EXPR__NODE_VALUE__NBITS__NCHILDREN ) - 1;
+  AlwaysAssert(childList.size() < MAX_CHILDREN, "do not support formulas this big");
+
+  ChildList::iterator cur = childList.begin(), next, en = childList.end();
+  Node ret = (*cur);
+  ++cur;
+  while( cur != en ) {
+    ret = nodeManager->mkNode(k, ret, *cur);
+    ret.setAttribute(flattened(), true);
+    ++cur;
+  }
+  Trace("sets-postrewrite") << "flatten Sets::postRewrite returning " << ret << std::endl;
+  if(ret != n) {
+    return RewriteResponse(REWRITE_AGAIN, ret); // again for constants
+  } else {
+    return RewriteResponse(REWRITE_DONE, ret);
+  }
+  // if (childList.size() < MAX_CHILDREN) {
+  //   Node retNode = nodeManager->mkNode(k, childList);
+  //   return RewriteResponse(REWRITE_DONE, retNode);
+  // } else {
+  //   Assert(childList.size() < size_t(MAX_CHILDREN) * size_t(MAX_CHILDREN) );
+  //   NodeBuilder<> nb(k);
+  //   ChildList::iterator cur = childList.begin(), next, en = childList.end();
+  //   while( cur != en ) {
+  //     next = min(cur + MAX_CHILDREN, en);
+  //     nb << (nodeManager->mkNode(k, ChildList(cur, next) ));
+  //     cur = next;
+  //   }
+  //   return RewriteResponse(REWRITE_DONE, nb.constructNode());
+  // }
+}
+
+bool checkConstantMembership(TNode elementTerm, TNode setTerm)
+{
+  if(setTerm.getKind() == kind::EMPTYSET) {
+    return false;
+  }
+
+  if(setTerm.getKind() == kind::SINGLETON) {
+    return elementTerm == setTerm[0];
+  }
+
+  Assert(setTerm.getKind() == kind::UNION && setTerm[1].getKind() == kind::SINGLETON,
+         "kind was %d, term: %s", setTerm.getKind(), setTerm.toString().c_str());
+
+  return
+    elementTerm == setTerm[1][0] ||
+    checkConstantMembership(elementTerm, setTerm[0]);
+}
+
+// static
+RewriteResponse TheorySetsRewriter::postRewrite(TNode node) {
+  NodeManager* nm = NodeManager::currentNM();
+  Kind kind = node.getKind();
+
+
+  if(node.isConst()) {
+    // Dare you touch the const and mangle it to something else.
+    return RewriteResponse(REWRITE_DONE, node);
+  }
+
+  switch(kind) {
+
+  case kind::MEMBER: {
+    if(node[0].isConst() && node[1].isConst()) {
+      // both are constants
+      TNode S = preRewrite(node[1]).node;
+      bool isMember = checkConstantMembership(node[0], S);
+      return RewriteResponse(REWRITE_DONE, nm->mkConst(isMember));
+    }else if( node[1].getKind()==kind::EMPTYSET ){
+      return RewriteResponse(REWRITE_DONE, nm->mkConst(false));
+    }else if( node[1].getKind()==kind::SINGLETON ){
+      return RewriteResponse(REWRITE_AGAIN_FULL, nm->mkNode(kind::EQUAL, node[0], node[1][0] ) );
+    }else if( node[1].getKind()==kind::UNION || node[1].getKind()==kind::INTERSECTION || node[1].getKind()==kind::SETMINUS ){
+      std::vector< Node > children;
+      for( unsigned i=0; i<node[1].getNumChildren(); i++ ){
+        Node nc = nm->mkNode(kind::MEMBER, node[0], node[1][i] );
+        if( node[1].getKind()==kind::SETMINUS && i==1 ){
+          nc = nc.negate();
+        }
+        children.push_back( nc );
+      }
+      return RewriteResponse(REWRITE_AGAIN_FULL, nm->mkNode( node[1].getKind()==kind::UNION ? kind::OR : kind::AND, children ) );
+    }
+    break;
+  }//kind::MEMBER
+
+  case kind::SUBSET: {
+    Assert(false, "TheorySets::postRrewrite(): Subset is handled in preRewrite.");
+
+    // but in off-chance we do end up here, let us do our best
+
+    // rewrite (A subset-or-equal B) as (A union B = B)
+    TNode A = node[0];
+    TNode B = node[1];
+    return RewriteResponse(REWRITE_AGAIN_FULL,
+                           nm->mkNode(kind::EQUAL,
+                                      nm->mkNode(kind::UNION, A, B),
+                                      B) );
+  }//kind::SUBSET
+
+  case kind::EQUAL: {
+    //rewrite: t = t with true (t term)
+    //rewrite: c = c' with c different from c' false (c, c' constants)
+    //otherwise: sort them
+    if(node[0] == node[1]) {
+      Trace("sets-postrewrite") << "Sets::postRewrite returning true" << std::endl;
+      return RewriteResponse(REWRITE_DONE, nm->mkConst(true));
+    }
+    else if (node[0].isConst() && node[1].isConst()) {
+      Trace("sets-postrewrite") << "Sets::postRewrite returning false" << std::endl;
+      return RewriteResponse(REWRITE_DONE, nm->mkConst(false));
+    }
+    else if (node[0] > node[1]) {
+      Node newNode = nm->mkNode(node.getKind(), node[1], node[0]);
+      Trace("sets-postrewrite") << "Sets::postRewrite returning " << newNode << std::endl;
+      return RewriteResponse(REWRITE_DONE, newNode);
+    }
+    break;
+  }
+
+  case kind::SETMINUS: {
+    if(node[0] == node[1]) {
+      Node newNode = nm->mkConst(EmptySet(nm->toType(node[0].getType())));
+      Trace("sets-postrewrite") << "Sets::postRewrite returning " << newNode << std::endl;
+      return RewriteResponse(REWRITE_DONE, newNode);
+    } else if(node[0].getKind() == kind::EMPTYSET ||
+              node[1].getKind() == kind::EMPTYSET) {
+      Trace("sets-postrewrite") << "Sets::postRewrite returning " << node[0] << std::endl;
+      return RewriteResponse(REWRITE_AGAIN, node[0]);
+    }else if( node[1].getKind() == kind::UNIVERSE_SET ){
+      return RewriteResponse(REWRITE_AGAIN, NodeManager::currentNM()->mkConst(EmptySet(node[1].getType().toType())));
+    } else if(node[0].isConst() && node[1].isConst()) {
+      std::set<Node> left = NormalForm::getElementsFromNormalConstant(node[0]);
+      std::set<Node> right = NormalForm::getElementsFromNormalConstant(node[1]);
+      std::set<Node> newSet;
+      std::set_difference(left.begin(), left.end(), right.begin(), right.end(),
+        std::inserter(newSet, newSet.begin()));
+      Node newNode = NormalForm::elementsToSet(newSet, node.getType());
+      Assert(newNode.isConst());
+      Trace("sets-postrewrite") << "Sets::postRewrite returning " << newNode << std::endl;
+      return RewriteResponse(REWRITE_DONE, newNode);
+    }
+    break;
+  }//kind::SETMINUS
+
+  case kind::INTERSECTION: {
+    if(node[0] == node[1]) {
+      Trace("sets-postrewrite") << "Sets::postRewrite returning " << node[0] << std::endl;
+      return RewriteResponse(REWRITE_AGAIN, node[0]);
+    } else if(node[0].getKind() == kind::EMPTYSET || node[1].getKind() == kind::UNIVERSE_SET) {
+      return RewriteResponse(REWRITE_AGAIN, node[0]);
+    } else if(node[1].getKind() == kind::EMPTYSET || node[0].getKind() == kind::UNIVERSE_SET) {
+      return RewriteResponse(REWRITE_AGAIN, node[1]);
+    } else if(node[0].isConst() && node[1].isConst()) {
+      std::set<Node> left = NormalForm::getElementsFromNormalConstant(node[0]);
+      std::set<Node> right = NormalForm::getElementsFromNormalConstant(node[1]);
+      std::set<Node> newSet;
+      std::set_intersection(left.begin(), left.end(), right.begin(), right.end(),
+                            std::inserter(newSet, newSet.begin()));
+      Node newNode = NormalForm::elementsToSet(newSet, node.getType());
+      Assert(newNode.isConst());
+      Trace("sets-postrewrite") << "Sets::postRewrite returning " << newNode << std::endl;
+      return RewriteResponse(REWRITE_DONE, newNode);
+    } else {
+      std::vector< Node > els;
+      NormalForm::getElementsFromBop( kind::INTERSECTION, node, els );
+      std::sort( els.begin(), els.end() );
+      Node rew = NormalForm::mkBop( kind::INTERSECTION, els, node.getType() );
+      if( rew!=node ){
+        Trace("sets-rewrite") << "Sets::rewrite " << node << " -> " << rew << std::endl;
+      }
+      return RewriteResponse(REWRITE_DONE, rew);
+    }
+    /*
+    } else if (node[0] > node[1]) {
+      Node newNode = nm->mkNode(node.getKind(), node[1], node[0]);
+      Trace("sets-postrewrite") << "Sets::postRewrite returning " << newNode << std::endl;
+      return RewriteResponse(REWRITE_DONE, newNode);
+    }
+    */
+    break;
+  }//kind::INTERSECION
+
+  case kind::UNION: {
+    // NOTE: case where it is CONST is taken care of at the top
+    if(node[0] == node[1]) {
+      Trace("sets-postrewrite") << "Sets::postRewrite returning " << node[0] << std::endl;
+      return RewriteResponse(REWRITE_AGAIN, node[0]);
+    } else if(node[0].getKind() == kind::EMPTYSET || node[1].getKind() == kind::UNIVERSE_SET) {
+      return RewriteResponse(REWRITE_AGAIN, node[1]);
+    } else if(node[1].getKind() == kind::EMPTYSET || node[0].getKind() == kind::UNIVERSE_SET) {
+      return RewriteResponse(REWRITE_AGAIN, node[0]);
+    } else if(node[0].isConst() && node[1].isConst()) {
+      std::set<Node> left = NormalForm::getElementsFromNormalConstant(node[0]);
+      std::set<Node> right = NormalForm::getElementsFromNormalConstant(node[1]);
+      std::set<Node> newSet;
+      std::set_union(left.begin(), left.end(), right.begin(), right.end(),
+			  std::inserter(newSet, newSet.begin()));
+      Node newNode = NormalForm::elementsToSet(newSet, node.getType());
+      Assert(newNode.isConst());
+      Trace("sets-postrewrite") << "Sets::postRewrite returning " << newNode << std::endl;
+      return RewriteResponse(REWRITE_DONE, newNode);
+    } else {
+      std::vector< Node > els;
+      NormalForm::getElementsFromBop( kind::UNION, node, els );
+      std::sort( els.begin(), els.end() );
+      Node rew = NormalForm::mkBop( kind::UNION, els, node.getType() );
+      if( rew!=node ){
+        Trace("sets-rewrite") << "Sets::rewrite " << node << " -> " << rew << std::endl;
+      }
+      return RewriteResponse(REWRITE_DONE, rew);
+    }
+    break;
+  }//kind::UNION
+  case kind::COMPLEMENT: {
+    Node univ = NodeManager::currentNM()->mkUniqueVar( node[0].getType(), kind::UNIVERSE_SET );
+    return RewriteResponse( REWRITE_AGAIN, NodeManager::currentNM()->mkNode( kind::SETMINUS, univ, node[0] ) );
+  }
+    break;
+  case kind::CARD: {
+    if(node[0].isConst()) {
+      std::set<Node> elements = NormalForm::getElementsFromNormalConstant(node[0]);
+      return RewriteResponse(REWRITE_DONE, nm->mkConst(Rational(elements.size())));
+    }else if( node[0].getKind()==kind::SINGLETON ){
+      return RewriteResponse(REWRITE_DONE, nm->mkConst(Rational(1)));
+    }else if( node[0].getKind()==kind::UNION ){
+      Node ret = NodeManager::currentNM()->mkNode( kind::MINUS,
+                   NodeManager::currentNM()->mkNode( kind::PLUS, NodeManager::currentNM()->mkNode( kind::CARD, node[0][0] ), 
+                                                                 NodeManager::currentNM()->mkNode( kind::CARD, node[0][1] ) ),
+                   NodeManager::currentNM()->mkNode( kind::CARD, NodeManager::currentNM()->mkNode( kind::INTERSECTION, node[0][0], node[0][1] ) ) );                                      
+      return RewriteResponse(REWRITE_DONE, ret );
+    }else if( node[0].getKind()==kind::SETMINUS ){
+      Node ret = NodeManager::currentNM()->mkNode( kind::MINUS,
+                   NodeManager::currentNM()->mkNode( kind::CARD, node[0][0] ),
+                   NodeManager::currentNM()->mkNode( kind::CARD, NodeManager::currentNM()->mkNode( kind::INTERSECTION, node[0][0], node[0][1] ) ) );                                      
+      return RewriteResponse(REWRITE_DONE, ret );
+    }
+  }
+  case kind::TRANSPOSE: {
+    if(node[0].getKind() == kind::TRANSPOSE) {
+      return RewriteResponse(REWRITE_AGAIN, node[0][0]);
+    }
+
+    if(node[0].getKind() == kind::EMPTYSET) {
+      return RewriteResponse(REWRITE_DONE, nm->mkConst(EmptySet(nm->toType(node.getType()))));
+    } else if(node[0].isConst()) {
+      std::set<Node> new_tuple_set;
+      std::set<Node> tuple_set = NormalForm::getElementsFromNormalConstant(node[0]);
+      std::set<Node>::iterator tuple_it = tuple_set.begin();
+
+      while(tuple_it != tuple_set.end()) {
+        new_tuple_set.insert(RelsUtils::reverseTuple(*tuple_it));
+        tuple_it++;
+      }
+      Node new_node = NormalForm::elementsToSet(new_tuple_set, node.getType());
+      Assert(new_node.isConst());
+      Trace("sets-postrewrite") << "Sets::postRewrite returning " << new_node << std::endl;
+      return RewriteResponse(REWRITE_DONE, new_node);
+
+    }
+    if(node[0].getKind() != kind::TRANSPOSE) {
+      Trace("sets-postrewrite") << "Sets::postRewrite returning " << node << std::endl;
+      return RewriteResponse(REWRITE_DONE, node);
+    }
+    break;
+  }
+
+  case kind::PRODUCT: {
+    Trace("sets-rels-postrewrite") << "Sets::postRewrite processing " <<  node << std::endl;
+    if( node[0].getKind() == kind::EMPTYSET ||
+        node[1].getKind() == kind::EMPTYSET) {
+      return RewriteResponse(REWRITE_DONE, nm->mkConst(EmptySet(nm->toType(node.getType()))));
+    } else if( node[0].isConst() && node[1].isConst() ) {
+      Trace("sets-rels-postrewrite") << "Sets::postRewrite processing **** " <<  node << std::endl;
+      std::set<Node> new_tuple_set;
+      std::set<Node> left = NormalForm::getElementsFromNormalConstant(node[0]);
+      std::set<Node> right = NormalForm::getElementsFromNormalConstant(node[1]);
+      std::set<Node>::iterator left_it = left.begin();
+      int left_len = (*left_it).getType().getTupleLength();
+      TypeNode tn = node.getType().getSetElementType();
+      while(left_it != left.end()) {
+        Trace("rels-debug") << "Sets::postRewrite processing left_it = " <<  *left_it << std::endl;
+        std::vector<Node> left_tuple;
+        left_tuple.push_back(Node::fromExpr(tn.getDatatype()[0].getConstructor()));
+        for(int i = 0; i < left_len; i++) {
+          left_tuple.push_back(RelsUtils::nthElementOfTuple(*left_it,i));
+        }
+        std::set<Node>::iterator right_it = right.begin();
+        int right_len = (*right_it).getType().getTupleLength();
+        while(right_it != right.end()) {
+          Trace("rels-debug") << "Sets::postRewrite processing left_it = " <<  *right_it << std::endl;
+          std::vector<Node> right_tuple;
+          for(int j = 0; j < right_len; j++) {
+            right_tuple.push_back(RelsUtils::nthElementOfTuple(*right_it,j));
+          }
+          std::vector<Node> new_tuple;
+          new_tuple.insert(new_tuple.end(), left_tuple.begin(), left_tuple.end());
+          new_tuple.insert(new_tuple.end(), right_tuple.begin(), right_tuple.end());
+          Node composed_tuple = NodeManager::currentNM()->mkNode(kind::APPLY_CONSTRUCTOR, new_tuple);
+          new_tuple_set.insert(composed_tuple);
+          right_it++;
+        }
+        left_it++;
+      }
+      Node new_node = NormalForm::elementsToSet(new_tuple_set, node.getType());
+      Assert(new_node.isConst());
+      Trace("sets-postrewrite") << "Sets::postRewrite returning " << new_node << std::endl;
+      return RewriteResponse(REWRITE_DONE, new_node);
+    }
+    break;
+  }
+
+  case kind::JOIN: {
+    if( node[0].getKind() == kind::EMPTYSET ||
+        node[1].getKind() == kind::EMPTYSET) {
+      return RewriteResponse(REWRITE_DONE, nm->mkConst(EmptySet(nm->toType(node.getType()))));
+    } else if( node[0].isConst() && node[1].isConst() ) {
+      Trace("sets-rels-postrewrite") << "Sets::postRewrite processing " <<  node << std::endl;
+      std::set<Node> new_tuple_set;
+      std::set<Node> left = NormalForm::getElementsFromNormalConstant(node[0]);
+      std::set<Node> right = NormalForm::getElementsFromNormalConstant(node[1]);
+      std::set<Node>::iterator left_it = left.begin();
+      int left_len = (*left_it).getType().getTupleLength();
+      TypeNode tn = node.getType().getSetElementType();
+      while(left_it != left.end()) {
+        std::vector<Node> left_tuple;
+        left_tuple.push_back(Node::fromExpr(tn.getDatatype()[0].getConstructor()));
+        for(int i = 0; i < left_len - 1; i++) {
+          left_tuple.push_back(RelsUtils::nthElementOfTuple(*left_it,i));
+        }
+        std::set<Node>::iterator right_it = right.begin();
+        int right_len = (*right_it).getType().getTupleLength();
+        while(right_it != right.end()) {
+          if(RelsUtils::nthElementOfTuple(*left_it,left_len-1) == RelsUtils::nthElementOfTuple(*right_it,0)) {
+            std::vector<Node> right_tuple;
+            for(int j = 1; j < right_len; j++) {
+              right_tuple.push_back(RelsUtils::nthElementOfTuple(*right_it,j));
+            }
+            std::vector<Node> new_tuple;
+            new_tuple.insert(new_tuple.end(), left_tuple.begin(), left_tuple.end());
+            new_tuple.insert(new_tuple.end(), right_tuple.begin(), right_tuple.end());
+            Node composed_tuple = NodeManager::currentNM()->mkNode(kind::APPLY_CONSTRUCTOR, new_tuple);
+            new_tuple_set.insert(composed_tuple);
+          }
+          right_it++;
+        }
+        left_it++;
+      }
+      Node new_node = NormalForm::elementsToSet(new_tuple_set, node.getType());
+      Assert(new_node.isConst());
+      Trace("sets-postrewrite") << "Sets::postRewrite returning " << new_node << std::endl;
+      return RewriteResponse(REWRITE_DONE, new_node);
+    }
+
+    break;
+  }
+
+  case kind::TCLOSURE: {
+    if(node[0].getKind() == kind::EMPTYSET) {
+      return RewriteResponse(REWRITE_DONE, nm->mkConst(EmptySet(nm->toType(node.getType()))));
+    } else if (node[0].isConst()) {
+      std::set<Node> rel_mems = NormalForm::getElementsFromNormalConstant(node[0]);
+      std::set<Node> tc_rel_mems = RelsUtils::computeTC(rel_mems, node);
+      Node new_node = NormalForm::elementsToSet(tc_rel_mems, node.getType());
+      Assert(new_node.isConst());
+      Trace("sets-postrewrite") << "Sets::postRewrite returning " << new_node << std::endl;
+      return RewriteResponse(REWRITE_DONE, new_node);
+      
+    } else if(node[0].getKind() == kind::TCLOSURE) {
+      return RewriteResponse(REWRITE_AGAIN, node[0]);
+    } else if(node[0].getKind() != kind::TCLOSURE) {
+      Trace("sets-postrewrite") << "Sets::postRewrite returning " << node << std::endl;
+      return RewriteResponse(REWRITE_DONE, node);
+    }
+    break;
+  }
+  
+  default:
+    break;
+  }//switch(node.getKind())
+
+  // This default implementation
+  return RewriteResponse(REWRITE_DONE, node);
+}
+
+
+// static
+RewriteResponse TheorySetsRewriter::preRewrite(TNode node) {
+  NodeManager* nm = NodeManager::currentNM();
+
+  if(node.getKind() == kind::EQUAL) {
+
+    if(node[0] == node[1]) {
+      return RewriteResponse(REWRITE_DONE, nm->mkConst(true));
+    }
+
+  }//kind::EQUAL
+  else if(node.getKind() == kind::INSERT) {
+
+    Node insertedElements = nm->mkNode(kind::SINGLETON, node[0]);
+    size_t setNodeIndex =  node.getNumChildren()-1;
+    for(size_t i = 1; i < setNodeIndex; ++i) {
+      insertedElements = nm->mkNode(kind::UNION, 
+				    insertedElements,
+				    nm->mkNode(kind::SINGLETON, node[i]));
+    }
+    return RewriteResponse(REWRITE_AGAIN, 
+			   nm->mkNode(kind::UNION,
+				      insertedElements, 
+				      node[setNodeIndex]));
+
+  }//kind::INSERT
+  else if(node.getKind() == kind::SUBSET) {
+
+    // rewrite (A subset-or-equal B) as (A union B = B)
+    return RewriteResponse(REWRITE_AGAIN,
+                           nm->mkNode(kind::EQUAL,
+                                      nm->mkNode(kind::UNION, node[0], node[1]),
+                                      node[1]) );
+
+  }//kind::SUBSET
+
+  return RewriteResponse(REWRITE_DONE, node);
+}
+
+}/* CVC4::theory::sets namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/sets/theory_sets_rewriter.h b/src/theory/sets/theory_sets_rewriter.h
new file mode 100644
index 0000000..50128b6
--- /dev/null
+++ b/src/theory/sets/theory_sets_rewriter.h
@@ -0,0 +1,92 @@
+/*********************                                                        */
+/*! \file theory_sets_rewriter.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Sets theory rewriter.
+ **
+ ** Sets theory rewriter.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__SETS__THEORY_SETS_REWRITER_H
+#define __CVC4__THEORY__SETS__THEORY_SETS_REWRITER_H
+
+#include "theory/rewriter.h"
+
+namespace CVC4 {
+namespace theory {
+namespace sets {
+
+class TheorySetsRewriter {
+public:
+
+  /**
+   * Rewrite a node into the normal form for the theory of sets.
+   * Called in post-order (really reverse-topological order) when
+   * traversing the expression DAG during rewriting.  This is the
+   * main function of the rewriter, and because of the ordering,
+   * it can assume its children are all rewritten already.
+   *
+   * This function can return one of three rewrite response codes
+   * along with the rewritten node:
+   *
+   *   REWRITE_DONE indicates that no more rewriting is needed.
+   *   REWRITE_AGAIN means that the top-level expression should be
+   *     rewritten again, but that its children are in final form.
+   *   REWRITE_AGAIN_FULL means that the entire returned expression
+   *     should be rewritten again (top-down with preRewrite(), then
+   *     bottom-up with postRewrite()).
+   *
+   * Even if this function returns REWRITE_DONE, if the returned
+   * expression belongs to a different theory, it will be fully
+   * rewritten by that theory's rewriter.
+   */
+  static RewriteResponse postRewrite(TNode node);
+
+  /**
+   * Rewrite a node into the normal form for the theory of sets
+   * in pre-order (really topological order)---meaning that the
+   * children may not be in the normal form.  This is an optimization
+   * for theories with cancelling terms (e.g., 0 * (big-nasty-expression)
+   * in arithmetic rewrites to 0 without the need to look at the big
+   * nasty expression).  Since it's only an optimization, the
+   * implementation here can do nothing.
+   */
+  static RewriteResponse preRewrite(TNode node);
+
+  /**
+   * Rewrite an equality, in case special handling is required.
+   */
+  static Node rewriteEquality(TNode equality) {
+    // often this will suffice
+    return postRewrite(equality).node;
+  }
+
+  /**
+   * Initialize the rewriter.
+   */
+  static inline void init() {
+    // nothing to do
+  }
+
+  /**
+   * Shut down the rewriter.
+   */
+  static inline void shutdown() {
+    // nothing to do
+  }
+};/* class TheorySetsRewriter */
+
+}/* CVC4::theory::sets namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__SETS__THEORY_SETS_REWRITER_H */
diff --git a/src/theory/sets/theory_sets_type_enumerator.h b/src/theory/sets/theory_sets_type_enumerator.h
new file mode 100644
index 0000000..f2d6bae
--- /dev/null
+++ b/src/theory/sets/theory_sets_type_enumerator.h
@@ -0,0 +1,183 @@
+/*********************                                                        */
+/*! \file theory_sets_type_enumerator.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Morgan Deters, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__SETS__TYPE_ENUMERATOR_H
+#define __CVC4__THEORY__SETS__TYPE_ENUMERATOR_H
+
+#include "theory/type_enumerator.h"
+#include "expr/type_node.h"
+#include "expr/kind.h"
+#include "theory/rewriter.h"
+#include "theory/sets/normal_form.h"
+
+namespace CVC4 {
+namespace theory {
+namespace sets {
+
+class SetEnumerator : public TypeEnumeratorBase<SetEnumerator> {
+  /** type properties */
+  TypeEnumeratorProperties * d_tep;
+  unsigned d_index;
+  TypeNode d_constituentType;
+  NodeManager* d_nm;
+  std::vector<bool> d_indexVec;
+  std::vector<TypeEnumerator*> d_constituentVec;
+  bool d_finished;
+  Node d_setConst;
+
+public:
+
+  SetEnumerator(TypeNode type, TypeEnumeratorProperties * tep = NULL) throw(AssertionException) :
+    TypeEnumeratorBase<SetEnumerator>(type),
+    d_tep(tep),
+    d_index(0),
+    d_constituentType(type.getSetElementType()),
+    d_nm(NodeManager::currentNM()),
+    d_indexVec(),
+    d_constituentVec(),
+    d_finished(false),
+    d_setConst()
+  {
+    // d_indexVec.push_back(false);
+    // d_constituentVec.push_back(new TypeEnumerator(d_constituentType));
+    d_setConst = d_nm->mkConst(EmptySet(type.toType()));
+  }
+
+  // An set enumerator could be large, and generally you don't want to
+  // go around copying these things; but a copy ctor is presently required
+  // by the TypeEnumerator framework.
+  SetEnumerator(const SetEnumerator& ae) throw() :
+    TypeEnumeratorBase<SetEnumerator>(ae.d_nm->mkSetType(ae.d_constituentType)),
+    d_tep(ae.d_tep),
+    d_index(ae.d_index),
+    d_constituentType(ae.d_constituentType),
+    d_nm(ae.d_nm),
+    d_indexVec(ae.d_indexVec),
+    d_constituentVec(),// copied below
+    d_finished(ae.d_finished),
+    d_setConst(ae.d_setConst)
+  {
+    for(std::vector<TypeEnumerator*>::const_iterator i =
+          ae.d_constituentVec.begin(), i_end = ae.d_constituentVec.end();
+        i != i_end;
+        ++i) {
+      d_constituentVec.push_back(new TypeEnumerator(**i));
+    }
+  }
+
+  ~SetEnumerator() {
+    while (!d_constituentVec.empty()) {
+      delete d_constituentVec.back();
+      d_constituentVec.pop_back();
+    }
+  }
+
+  Node operator*() throw(NoMoreValuesException) {
+    if (d_finished) {
+      throw NoMoreValuesException(getType());
+    }
+
+    std::vector<Node> elements;
+    for(unsigned i = 0; i < d_constituentVec.size(); ++i) {
+      elements.push_back(*(*(d_constituentVec[i])));
+    }
+
+    Node n = NormalForm::elementsToSet(std::set<TNode>(elements.begin(), elements.end()),
+                                       getType());
+
+    Assert(n.isConst());
+    Assert(n == Rewriter::rewrite(n));
+
+    return n;
+  }
+
+  SetEnumerator& operator++() throw() {
+    Trace("set-type-enum") << "operator++ called, **this = " << **this << std::endl;
+
+    if (d_finished) {
+      Trace("set-type-enum") << "operator++ finished!" << std::endl;
+      return *this;
+    }
+
+    // increment by one, at the same time deleting all elements that
+    // cannot be incremented any further (note: we are keeping a set
+    // -- no repetitions -- thus some trickery to know what to pop and
+    // what not to.)
+    if(d_index > 0) {
+      Assert(d_index == d_constituentVec.size());
+
+      Node last_pre_increment;
+      last_pre_increment = *(*d_constituentVec.back());
+
+      ++(*d_constituentVec.back());
+
+      if (d_constituentVec.back()->isFinished()) {
+        delete d_constituentVec.back();
+        d_constituentVec.pop_back();
+
+        while(!d_constituentVec.empty()) {
+          Node cur_pre_increment = *(*d_constituentVec.back());
+          ++(*d_constituentVec.back());
+          Node cur_post_increment = *(*d_constituentVec.back());
+          if(last_pre_increment == cur_post_increment) {
+            delete d_constituentVec.back();
+            d_constituentVec.pop_back();
+            last_pre_increment = cur_pre_increment;
+          } else {
+            break;
+          }
+        }
+      }
+    }
+
+    if (d_constituentVec.empty()) {
+      ++d_index;
+      d_constituentVec.push_back(new TypeEnumerator(d_constituentType, d_tep));
+    }
+
+    while (d_constituentVec.size() < d_index) {
+      TypeEnumerator* newEnumerator =
+          new TypeEnumerator(*d_constituentVec.back());
+      ++(*newEnumerator);
+      if (newEnumerator->isFinished()) {
+        Trace("set-type-enum") << "operator++ finished!" << std::endl;
+        delete newEnumerator;
+        d_finished = true;
+        return *this;
+      }
+      d_constituentVec.push_back(newEnumerator);
+    }
+
+    Trace("set-type-enum") << "operator++ returning, **this = " << **this << std::endl;
+    return *this;
+  }
+
+  bool isFinished() throw() {
+    Trace("set-type-enum") << "isFinished returning: " << d_finished << std::endl;
+    return d_finished;
+  }
+
+};/* class SetEnumerator */
+
+}/* CVC4::theory::sets namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__SETS__TYPE_ENUMERATOR_H */
diff --git a/src/theory/sets/theory_sets_type_rules.h b/src/theory/sets/theory_sets_type_rules.h
new file mode 100644
index 0000000..11f375d
--- /dev/null
+++ b/src/theory/sets/theory_sets_type_rules.h
@@ -0,0 +1,320 @@
+/*********************                                                        */
+/*! \file theory_sets_type_rules.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Kshitij Bansal, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Sets theory type rules.
+ **
+ ** Sets theory type rules.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__SETS__THEORY_SETS_TYPE_RULES_H
+#define __CVC4__THEORY__SETS__THEORY_SETS_TYPE_RULES_H
+
+#include "theory/sets/normal_form.h"
+
+namespace CVC4 {
+namespace theory {
+namespace sets {
+
+class SetsTypeRule {
+public:
+
+  /**
+   * Compute the type for (and optionally typecheck) a term belonging
+   * to the theory of sets.
+   *
+   * @param check if true, the node's type should be checked as well
+   * as computed.
+   */
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check)
+    throw (TypeCheckingExceptionPrivate) {
+
+    // TODO: implement me!
+    Unimplemented();
+
+  }
+
+};/* class SetsTypeRule */
+
+struct SetsBinaryOperatorTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::UNION ||
+           n.getKind() == kind::INTERSECTION ||
+           n.getKind() == kind::SETMINUS);
+    TypeNode setType = n[0].getType(check);
+    if( check ) {
+      if(!setType.isSet()) {
+        throw TypeCheckingExceptionPrivate(n, "operator expects a set, first argument is not");
+      }
+      TypeNode secondSetType = n[1].getType(check);
+      if(secondSetType != setType) {
+        throw TypeCheckingExceptionPrivate(n, "operator expects two sets of the same type");
+      }
+    }
+    return setType;
+  }
+
+  inline static bool computeIsConst(NodeManager* nodeManager, TNode n) {
+    Assert(n.getKind() == kind::UNION ||
+           n.getKind() == kind::INTERSECTION ||
+           n.getKind() == kind::SETMINUS);
+    if(n.getKind() == kind::UNION) {
+      return NormalForm::checkNormalConstant(n);
+    } else {
+      return false;
+    }
+  }
+};/* struct SetUnionTypeRule */
+
+struct SubsetTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::SUBSET);
+    TypeNode setType = n[0].getType(check);
+    if( check ) {
+      if(!setType.isSet()) {
+        throw TypeCheckingExceptionPrivate(n, "set subset operating on non-set");
+      }
+      TypeNode secondSetType = n[1].getType(check);
+      if(secondSetType != setType) {
+        throw TypeCheckingExceptionPrivate(n, "set subset operating on sets of different types");
+      }
+    }
+    return nodeManager->booleanType();
+  }
+};/* struct SetSubsetTypeRule */
+
+struct MemberTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::MEMBER);
+    TypeNode setType = n[1].getType(check);
+    if( check ) {
+      if(!setType.isSet()) {
+        throw TypeCheckingExceptionPrivate(n, "checking for membership in a non-set");
+      }
+      TypeNode elementType = n[0].getType(check);
+      if(!setType.getSetElementType().isSubtypeOf(elementType)) {
+        throw TypeCheckingExceptionPrivate(n, "member operating on sets of different types");
+      }
+    }
+    return nodeManager->booleanType();
+  }
+};/* struct MemberTypeRule */
+
+struct SingletonTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::SINGLETON);
+    return nodeManager->mkSetType(n[0].getType(check));
+  }
+
+  inline static bool computeIsConst(NodeManager* nodeManager, TNode n) {
+    Assert(n.getKind() == kind::SINGLETON);
+    return n[0].isConst();
+  }
+};/* struct SingletonTypeRule */
+
+struct EmptySetTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::EMPTYSET);
+    EmptySet emptySet = n.getConst<EmptySet>();
+    Type setType = emptySet.getType();
+    return TypeNode::fromType(setType);
+  }
+};/* struct EmptySetTypeRule */
+
+struct CardTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::CARD);
+    TypeNode setType = n[0].getType(check);
+    if( check ) {
+      if(!setType.isSet()) {
+        throw TypeCheckingExceptionPrivate(n, "cardinality operates on a set, non-set object found");
+      }
+    }
+    return nodeManager->integerType();
+  }
+
+  inline static bool computeIsConst(NodeManager* nodeManager, TNode n) {
+    Assert(n.getKind() == kind::CARD);
+    return false;
+  }
+};/* struct CardTypeRule */
+
+struct ComplementTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::COMPLEMENT);
+    TypeNode setType = n[0].getType(check);
+    if( check ) {
+      if(!setType.isSet()) {
+        throw TypeCheckingExceptionPrivate(n, "COMPLEMENT operates on a set, non-set object found");
+      }
+    }
+    return setType;
+  }
+
+  inline static bool computeIsConst(NodeManager* nodeManager, TNode n) {
+    Assert(n.getKind() == kind::COMPLEMENT);
+    return false;
+  }
+};/* struct ComplementTypeRule */
+
+
+
+struct InsertTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::INSERT);
+    size_t numChildren = n.getNumChildren();
+    Assert( numChildren >= 2 );
+    TypeNode setType = n[numChildren-1].getType(check);
+    if( check ) {
+      if(!setType.isSet()) {
+        throw TypeCheckingExceptionPrivate(n, "inserting into a non-set");
+      }
+      for(size_t i = 0; i < numChildren-1; ++i) {
+        TypeNode elementType = n[i].getType(check);
+        if(elementType != setType.getSetElementType()) {
+          throw TypeCheckingExceptionPrivate
+            (n, "type of element should be same as element type of set being inserted into");
+        }
+      }
+    }
+    return setType;
+  }
+
+  inline static bool computeIsConst(NodeManager* nodeManager, TNode n) {
+    Assert(n.getKind() == kind::INSERT);
+    return false;
+  }
+};/* struct InsertTypeRule */
+
+struct RelBinaryOperatorTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::PRODUCT ||
+           n.getKind() == kind::JOIN);
+
+    TypeNode firstRelType = n[0].getType(check);
+    TypeNode secondRelType = n[1].getType(check);
+    TypeNode resultType = firstRelType;
+
+    if(!firstRelType.isSet() || !secondRelType.isSet()) {
+      throw TypeCheckingExceptionPrivate(n, " set operator operates on non-sets");
+    }
+    if(!firstRelType[0].isTuple() || !secondRelType[0].isTuple()) {
+      throw TypeCheckingExceptionPrivate(n, " set operator operates on non-relations (sets of tuples)");
+    }
+
+    std::vector<TypeNode> newTupleTypes;
+    std::vector<TypeNode> firstTupleTypes = firstRelType[0].getTupleTypes();
+    std::vector<TypeNode> secondTupleTypes = secondRelType[0].getTupleTypes();
+
+    // JOIN is not allowed to apply on two unary sets
+    if( n.getKind() == kind::JOIN ) {
+      if((firstTupleTypes.size() == 1) && (secondTupleTypes.size() == 1)) {
+        throw TypeCheckingExceptionPrivate(n, " Join operates on two unary relations");
+      } else if(firstTupleTypes.back() != secondTupleTypes.front()) {
+        throw TypeCheckingExceptionPrivate(n, " Join operates on two non-joinable relations");
+      }
+      newTupleTypes.insert(newTupleTypes.end(), firstTupleTypes.begin(), firstTupleTypes.end()-1);
+      newTupleTypes.insert(newTupleTypes.end(), secondTupleTypes.begin()+1, secondTupleTypes.end());
+    }else if( n.getKind() == kind::PRODUCT ) {
+      newTupleTypes.insert(newTupleTypes.end(), firstTupleTypes.begin(), firstTupleTypes.end());
+      newTupleTypes.insert(newTupleTypes.end(), secondTupleTypes.begin(), secondTupleTypes.end());
+    }
+    resultType = nodeManager->mkSetType(nodeManager->mkTupleType(newTupleTypes));
+
+    return resultType;
+  }
+
+  inline static bool computeIsConst(NodeManager* nodeManager, TNode n) {
+    Assert(n.getKind() == kind::JOIN ||
+           n.getKind() == kind::PRODUCT);
+    return false;
+  }
+};/* struct RelBinaryOperatorTypeRule */
+
+struct RelTransposeTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::TRANSPOSE);
+    TypeNode setType = n[0].getType(check);
+    if(check && !setType.isSet() && !setType.getSetElementType().isTuple()) {
+        throw TypeCheckingExceptionPrivate(n, "relation transpose operats on non-relation");
+    }
+    std::vector<TypeNode> tupleTypes = setType[0].getTupleTypes();
+    std::reverse(tupleTypes.begin(), tupleTypes.end());
+    return nodeManager->mkSetType(nodeManager->mkTupleType(tupleTypes));
+  }
+
+  inline static bool computeIsConst(NodeManager* nodeManager, TNode n) {
+      return false;
+    }
+};/* struct RelTransposeTypeRule */
+
+struct RelTransClosureTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::TCLOSURE);
+    TypeNode setType = n[0].getType(check);
+    if(check) {
+      if(!setType.isSet() && !setType.getSetElementType().isTuple()) {
+        throw TypeCheckingExceptionPrivate(n, " transitive closure operates on non-relation");
+      }
+      std::vector<TypeNode> tupleTypes = setType[0].getTupleTypes();
+      if(tupleTypes.size() != 2) {
+        throw TypeCheckingExceptionPrivate(n, " transitive closure operates on non-binary relations");
+      }
+      if(tupleTypes[0] != tupleTypes[1]) {
+        throw TypeCheckingExceptionPrivate(n, " transitive closure operates on non-homogeneous binary relations");
+      }
+    }
+    return setType;
+  }
+
+  inline static bool computeIsConst(NodeManager* nodeManager, TNode n) {
+      Assert(n.getKind() == kind::TCLOSURE);
+      return false;
+    }
+};/* struct RelTransClosureTypeRule */
+
+
+struct SetsProperties {
+  inline static Cardinality computeCardinality(TypeNode type) {
+    Assert(type.getKind() == kind::SET_TYPE);
+    Cardinality elementCard = 2;
+    elementCard ^= type[0].getCardinality();
+    return elementCard;
+  }
+
+  inline static bool isWellFounded(TypeNode type) {
+    return type[0].isWellFounded();
+  }
+
+  inline static Node mkGroundTerm(TypeNode type) {
+    Assert(type.isSet());
+    return NodeManager::currentNM()->mkConst(EmptySet(type.toType()));
+  }
+};/* struct SetsProperties */
+
+}/* CVC4::theory::sets namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__SETS__THEORY_SETS_TYPE_RULES_H */
diff --git a/src/theory/shared_terms_database.cpp b/src/theory/shared_terms_database.cpp
new file mode 100644
index 0000000..b78109d
--- /dev/null
+++ b/src/theory/shared_terms_database.cpp
@@ -0,0 +1,263 @@
+/*********************                                                        */
+/*! \file shared_terms_database.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Clark Barrett
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/shared_terms_database.h"
+
+#include "smt/smt_statistics_registry.h"
+#include "theory/theory_engine.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace theory;
+
+SharedTermsDatabase::SharedTermsDatabase(TheoryEngine* theoryEngine, context::Context* context)
+: ContextNotifyObj(context)
+, d_statSharedTerms("theory::shared_terms", 0)
+, d_addedSharedTermsSize(context, 0)
+, d_termsToTheories(context)
+, d_alreadyNotifiedMap(context)
+, d_registeredEqualities(context)
+, d_EENotify(*this)
+, d_equalityEngine(d_EENotify, context, "SharedTermsDatabase", true)
+, d_theoryEngine(theoryEngine)
+, d_inConflict(context, false)
+{
+  smtStatisticsRegistry()->registerStat(&d_statSharedTerms);
+}
+
+SharedTermsDatabase::~SharedTermsDatabase()
+{
+  smtStatisticsRegistry()->unregisterStat(&d_statSharedTerms);
+}
+
+void SharedTermsDatabase::addEqualityToPropagate(TNode equality) {
+  d_registeredEqualities.insert(equality);
+  d_equalityEngine.addTriggerEquality(equality);
+  checkForConflict();
+}
+
+
+void SharedTermsDatabase::addSharedTerm(TNode atom, TNode term, Theory::Set theories) {
+  Debug("register") << "SharedTermsDatabase::addSharedTerm(" << atom << ", " << term << ", " << Theory::setToString(theories) << ")" << std::endl;
+
+  std::pair<TNode, TNode> search_pair(atom, term);
+  SharedTermsTheoriesMap::iterator find = d_termsToTheories.find(search_pair);
+  if (find == d_termsToTheories.end()) {
+    // First time for this term and this atom
+    d_atomsToTerms[atom].push_back(term);
+    d_addedSharedTerms.push_back(atom);
+    d_addedSharedTermsSize = d_addedSharedTermsSize + 1;
+    d_termsToTheories[search_pair] = theories;
+  } else {
+    Assert(theories != (*find).second);
+    d_termsToTheories[search_pair] = Theory::setUnion(theories, (*find).second);
+  }
+}
+
+SharedTermsDatabase::shared_terms_iterator SharedTermsDatabase::begin(TNode atom) const {
+  Assert(hasSharedTerms(atom));
+  return d_atomsToTerms.find(atom)->second.begin();
+}
+
+SharedTermsDatabase::shared_terms_iterator SharedTermsDatabase::end(TNode atom) const {
+  Assert(hasSharedTerms(atom));
+  return d_atomsToTerms.find(atom)->second.end();
+}
+
+bool SharedTermsDatabase::hasSharedTerms(TNode atom) const {
+  return d_atomsToTerms.find(atom) != d_atomsToTerms.end();
+}
+
+void SharedTermsDatabase::backtrack() {
+  for (int i = d_addedSharedTerms.size() - 1, i_end = (int)d_addedSharedTermsSize; i >= i_end; -- i) {
+    TNode atom = d_addedSharedTerms[i];
+    shared_terms_list& list = d_atomsToTerms[atom];
+    list.pop_back();
+    if (list.empty()) {
+      d_atomsToTerms.erase(atom);
+    }
+  }
+  d_addedSharedTerms.resize(d_addedSharedTermsSize);
+}
+
+Theory::Set SharedTermsDatabase::getTheoriesToNotify(TNode atom, TNode term) const {
+  // Get the theories that share this term from this atom
+  std::pair<TNode, TNode> search_pair(atom, term);
+  SharedTermsTheoriesMap::iterator find = d_termsToTheories.find(search_pair);
+  Assert(find != d_termsToTheories.end());
+
+  // Get the theories that were already notified
+  Theory::Set alreadyNotified = 0;
+  AlreadyNotifiedMap::iterator theoriesFind = d_alreadyNotifiedMap.find(term);
+  if (theoriesFind != d_alreadyNotifiedMap.end()) {
+    alreadyNotified = (*theoriesFind).second;
+  }
+
+  // Return the ones that haven't been notified yet
+  return Theory::setDifference((*find).second, alreadyNotified);
+}
+
+
+Theory::Set SharedTermsDatabase::getNotifiedTheories(TNode term) const {
+  // Get the theories that were already notified
+  AlreadyNotifiedMap::iterator theoriesFind = d_alreadyNotifiedMap.find(term);
+  if (theoriesFind != d_alreadyNotifiedMap.end()) {
+    return (*theoriesFind).second;
+  } else {
+    return 0;
+  }
+}
+
+bool SharedTermsDatabase::propagateSharedEquality(TheoryId theory, TNode a, TNode b, bool value)
+{
+  Debug("shared-terms-database") << "SharedTermsDatabase::newEquality(" << theory << "," << a << "," << b << ", " << (value ? "true" : "false") << ")" << endl;
+
+  if (d_inConflict) {
+    return false;
+  }
+
+  // Propagate away
+  Node equality = a.eqNode(b);
+  if (value) {
+    d_theoryEngine->assertToTheory(equality, equality, theory, THEORY_BUILTIN);
+  } else {
+    d_theoryEngine->assertToTheory(equality.notNode(), equality.notNode(), theory, THEORY_BUILTIN);
+  }
+
+  // As you were
+  return true;
+}
+
+void SharedTermsDatabase::markNotified(TNode term, Theory::Set theories) {
+
+  // Find out if there are any new theories that were notified about this term
+  Theory::Set alreadyNotified = 0;
+  AlreadyNotifiedMap::iterator theoriesFind = d_alreadyNotifiedMap.find(term);
+  if (theoriesFind != d_alreadyNotifiedMap.end()) {
+    alreadyNotified = (*theoriesFind).second;
+  }
+  Theory::Set newlyNotified = Theory::setDifference(theories, alreadyNotified);
+
+  // If no new theories were notified, we are done
+  if (newlyNotified == 0) {
+    return;
+  }
+
+  Debug("shared-terms-database") << "SharedTermsDatabase::markNotified(" << term << ")" << endl;
+
+  // First update the set of notified theories for this term
+  d_alreadyNotifiedMap[term] = Theory::setUnion(newlyNotified, alreadyNotified);
+
+  // Mark the shared terms in the equality engine
+  theory::TheoryId currentTheory;
+  while ((currentTheory = Theory::setPop(newlyNotified)) != THEORY_LAST) {
+    d_equalityEngine.addTriggerTerm(term, currentTheory);
+  }
+
+  // Check for any conflits
+  checkForConflict();
+}
+
+bool SharedTermsDatabase::areEqual(TNode a, TNode b) const {
+  if (d_equalityEngine.hasTerm(a) && d_equalityEngine.hasTerm(b)) {
+    return d_equalityEngine.areEqual(a,b);
+  } else {
+    Assert(d_equalityEngine.hasTerm(a) || a.isConst());
+    Assert(d_equalityEngine.hasTerm(b) || b.isConst());
+    // since one (or both) of them is a constant, and the other is in the equality engine, they are not same
+    return false;
+  }
+}
+
+bool SharedTermsDatabase::areDisequal(TNode a, TNode b) const {
+  if (d_equalityEngine.hasTerm(a) && d_equalityEngine.hasTerm(b)) {
+    return d_equalityEngine.areDisequal(a,b,false);
+  } else {
+    Assert(d_equalityEngine.hasTerm(a) || a.isConst());
+    Assert(d_equalityEngine.hasTerm(b) || b.isConst());
+    // one (or both) are in the equality engine
+    return false;
+  }
+}
+
+void SharedTermsDatabase::assertEquality(TNode equality, bool polarity, TNode reason)
+{
+  Debug("shared-terms-database::assert") << "SharedTermsDatabase::assertEquality(" << equality << ", " << (polarity ? "true" : "false") << ", " << reason << ")" << endl;
+  // Add it to the equality engine
+  d_equalityEngine.assertEquality(equality, polarity, reason);
+  // Check for conflict
+  checkForConflict();
+}
+
+bool SharedTermsDatabase::propagateEquality(TNode equality, bool polarity) {
+  if (polarity) {
+    d_theoryEngine->propagate(equality, THEORY_BUILTIN);
+  } else {
+    d_theoryEngine->propagate(equality.notNode(), THEORY_BUILTIN);
+  }
+  return true;
+}
+
+static Node mkAnd(const std::vector<TNode>& conjunctions) {
+  Assert(conjunctions.size() > 0);
+
+  std::set<TNode> all;
+  all.insert(conjunctions.begin(), conjunctions.end());
+
+  if (all.size() == 1) {
+    // All the same, or just one
+    return conjunctions[0];
+  }
+
+  NodeBuilder<> conjunction(kind::AND);
+  std::set<TNode>::const_iterator it = all.begin();
+  std::set<TNode>::const_iterator it_end = all.end();
+  while (it != it_end) {
+    conjunction << *it;
+    ++ it;
+  }
+
+  return conjunction;
+}
+
+void SharedTermsDatabase::checkForConflict() {
+  if (d_inConflict) {
+    d_inConflict = false;
+    std::vector<TNode> assumptions;
+    d_equalityEngine.explainEquality(d_conflictLHS, d_conflictRHS, d_conflictPolarity, assumptions);
+    Node conflict = mkAnd(assumptions);
+    d_theoryEngine->conflict(conflict, THEORY_BUILTIN);
+    d_conflictLHS = d_conflictRHS = Node::null();
+  }
+}
+
+bool SharedTermsDatabase::isKnown(TNode literal) const {
+  bool polarity = literal.getKind() != kind::NOT;
+  TNode equality = polarity ? literal : literal[0];
+  if (polarity) {
+    return d_equalityEngine.areEqual(equality[0], equality[1]);
+  } else {
+    return d_equalityEngine.areDisequal(equality[0], equality[1], false);
+  }
+}
+
+Node SharedTermsDatabase::explain(TNode literal) const {
+  bool polarity = literal.getKind() != kind::NOT;
+  TNode atom = polarity ? literal : literal[0];
+  Assert(atom.getKind() == kind::EQUAL);
+  std::vector<TNode> assumptions;
+  d_equalityEngine.explainEquality(atom[0], atom[1], polarity, assumptions);
+  return mkAnd(assumptions);
+}
diff --git a/src/theory/shared_terms_database.h b/src/theory/shared_terms_database.h
new file mode 100644
index 0000000..cc89591
--- /dev/null
+++ b/src/theory/shared_terms_database.h
@@ -0,0 +1,251 @@
+/*********************                                                        */
+/*! \file shared_terms_database.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "context/cdhashset.h"
+#include "expr/node.h"
+#include "theory/theory.h"
+#include "theory/uf/equality_engine.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+
+class TheoryEngine;
+
+class SharedTermsDatabase : public context::ContextNotifyObj {
+
+public:
+
+  /** A container for a list of shared terms */
+  typedef std::vector<TNode> shared_terms_list;
+
+  /** The iterator to go through the shared terms list */
+  typedef shared_terms_list::const_iterator shared_terms_iterator;
+
+private:
+
+  /** Some statistics */
+  IntStat d_statSharedTerms;
+
+  // Needs to be a map from Nodes as after a backtrack they might not exist
+  typedef std::hash_map<Node, shared_terms_list, TNodeHashFunction> SharedTermsMap;
+
+  /** A map from atoms to a list of shared terms */
+  SharedTermsMap d_atomsToTerms;
+
+  /** Each time we add a shared term, we add it's parent to this list */
+  std::vector<TNode> d_addedSharedTerms;
+
+  /** Context-dependent size of the d_addedSharedTerms list */
+  context::CDO<unsigned> d_addedSharedTermsSize;
+
+  /** A map from atoms and subterms to the theories that use it */
+  typedef context::CDHashMap<std::pair<Node, TNode>, theory::Theory::Set, TNodePairHashFunction> SharedTermsTheoriesMap;
+  SharedTermsTheoriesMap d_termsToTheories;
+
+  /** Map from term to theories that have already been notified about the shared term */
+  typedef context::CDHashMap<TNode, theory::Theory::Set, TNodeHashFunction> AlreadyNotifiedMap;
+  AlreadyNotifiedMap d_alreadyNotifiedMap;
+
+  /** The registered equalities for propagation */
+  typedef context::CDHashSet<Node, NodeHashFunction> RegisteredEqualitiesSet;
+  RegisteredEqualitiesSet d_registeredEqualities;
+
+private:
+
+  /** This method removes all the un-necessary stuff from the maps */
+  void backtrack();
+
+  // EENotifyClass: template helper class for d_equalityEngine - handles call-backs
+  class EENotifyClass : public theory::eq::EqualityEngineNotify {
+    SharedTermsDatabase& d_sharedTerms;
+  public:
+    EENotifyClass(SharedTermsDatabase& shared): d_sharedTerms(shared) {}
+    bool eqNotifyTriggerEquality(TNode equality, bool value) {
+      d_sharedTerms.propagateEquality(equality, value);
+      return true;
+    }
+
+    bool eqNotifyTriggerPredicate(TNode predicate, bool value) {
+      Unreachable();
+      return true;
+    }
+
+    bool eqNotifyTriggerTermEquality(theory::TheoryId tag, TNode t1, TNode t2, bool value) {
+      return d_sharedTerms.propagateSharedEquality(tag, t1, t2, value);
+    }
+
+    void eqNotifyConstantTermMerge(TNode t1, TNode t2) {
+      d_sharedTerms.conflict(t1, t2, true);
+    }
+
+    void eqNotifyNewClass(TNode t) { }
+    void eqNotifyPreMerge(TNode t1, TNode t2) { }
+    void eqNotifyPostMerge(TNode t1, TNode t2) { }
+    void eqNotifyDisequal(TNode t1, TNode t2, TNode reason) { }
+  };
+
+  /** The notify class for d_equalityEngine */
+  EENotifyClass d_EENotify;
+
+  /** Equality engine */
+  theory::eq::EqualityEngine d_equalityEngine;
+
+  /**
+   * Method called by equalityEngine when a becomes (dis-)equal to b and a and b are shared with
+   * the theory. Returns false if there is a direct conflict (via rewrite for example).
+   */
+  bool propagateSharedEquality(theory::TheoryId theory, TNode a, TNode b, bool value);
+
+  /**
+   * Called from the equality engine when a trigger equality is deduced.
+   */
+  bool propagateEquality(TNode equality, bool polarity);
+
+  /** Theory engine */
+  TheoryEngine* d_theoryEngine;
+
+  /** Are we in conflict */
+  context::CDO<bool> d_inConflict;
+
+  /** Conflicting terms, if any */
+  Node d_conflictLHS, d_conflictRHS;
+
+  /** Polarity of the conflict */
+  bool d_conflictPolarity;
+
+  /** Called by the equality engine notify to mark the conflict */
+  void conflict(TNode lhs, TNode rhs, bool polarity) {
+    if (!d_inConflict) {
+      // Only remember it if we're not already in conflict
+      d_inConflict = true;
+      d_conflictLHS = lhs;
+      d_conflictRHS = rhs;
+      d_conflictPolarity = polarity;
+    }
+  }
+
+  /**
+   * Should be called before any public non-const method in order to
+   * enqueue the conflict to the theory engine.
+   */
+  void checkForConflict();
+
+public:
+
+  SharedTermsDatabase(TheoryEngine* theoryEngine, context::Context* context);
+  ~SharedTermsDatabase();
+
+  /**
+   * Asserts the equality to the shared terms database,
+   */
+  void assertEquality(TNode equality, bool polarity, TNode reason);
+
+  /**
+   * Return whether the equality is alreday known to the engine
+   */
+  bool isKnown(TNode literal) const;
+
+  /**
+   * Returns an explanation of the propagation that came from the database.
+   */
+  Node explain(TNode literal) const;
+
+  /**
+   * Add an equality to propagate.
+   */
+  void addEqualityToPropagate(TNode equality);
+
+  /**
+   * Add a shared term to the database. The shared term is a subterm of the atom and
+   * should be associated with the given theory.
+   */
+  void addSharedTerm(TNode atom, TNode term, theory::Theory::Set theories);
+
+  /**
+   * Mark that the given theories have been notified of the given shared term.
+   */
+  void markNotified(TNode term, theory::Theory::Set theories);
+
+  /**
+   * Returns true if the atom contains any shared terms, false otherwise.
+   */
+  bool hasSharedTerms(TNode atom) const;
+
+  /**
+   * Iterator pointing to the first shared term belonging to the given atom.
+   */
+  shared_terms_iterator begin(TNode atom) const;
+
+  /**
+   * Iterator pointing to the end of the list of shared terms belonging to the given atom.
+   */
+  shared_terms_iterator end(TNode atom) const;
+
+  /**
+   * Get the theories that share the term in a given atom (and have not yet been notified).
+   */
+  theory::Theory::Set getTheoriesToNotify(TNode atom, TNode term) const;
+
+  /**
+   * Get the theories that share the term and have been notified already.
+   */
+  theory::Theory::Set getNotifiedTheories(TNode term) const;
+
+  /**
+   * Returns true if the term is currently registered as shared with some theory.
+   */
+  bool isShared(TNode term) const {
+    return d_alreadyNotifiedMap.find(term) != d_alreadyNotifiedMap.end();
+  }
+
+  /**
+   * Returns true if the literal is an (dis-)equality with both sides registered as shared with
+   * some theory.
+   */
+  bool isSharedEquality(TNode literal) const {
+    TNode atom = literal.getKind() == kind::NOT ? literal[0] : literal;
+    return atom.getKind() == kind::EQUAL && isShared(atom[0]) && isShared(atom[1]);
+  }
+
+  /**
+   * Returns true if the shared terms a and b are known to be equal.
+   */
+  bool areEqual(TNode a, TNode b) const;
+
+  /**
+   * Retursn true if the shared terms a and b are known to be dis-equal.
+   */
+  bool areDisequal(TNode a, TNode b) const;
+
+  /**
+   * get equality engine
+   */
+  theory::eq::EqualityEngine* getEqualityEngine() { return &d_equalityEngine; }
+
+protected:
+
+  /**
+   * This method gets called on backtracks from the context manager.
+   */
+  void contextNotifyPop() {
+    backtrack();
+  }
+};
+
+}
diff --git a/src/theory/sort_inference.cpp b/src/theory/sort_inference.cpp
new file mode 100644
index 0000000..6dabf9a
--- /dev/null
+++ b/src/theory/sort_inference.cpp
@@ -0,0 +1,792 @@
+/*********************                                                        */
+/*! \file sort_inference.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Sort inference module
+ **
+ ** This class implements sort inference, based on a simple algorithm:
+ ** First, we assume all functions and predicates have distinct uninterpreted types.
+ ** One pass is made through the input assertions, while a union-find data structure
+ ** maintains necessary information regarding constraints on these types.
+ **/
+
+#include "theory/sort_inference.h"
+
+#include <vector>
+
+#include "options/quantifiers_options.h"
+#include "options/smt_options.h"
+#include "options/uf_options.h"
+#include "proof/proof_manager.h"
+#include "theory/rewriter.h"
+#include "theory/quantifiers/quant_util.h"
+
+using namespace CVC4;
+using namespace std;
+
+namespace CVC4 {
+
+void SortInference::UnionFind::print(const char * c){
+  for( std::map< int, int >::iterator it = d_eqc.begin(); it != d_eqc.end(); ++it ){
+    Trace(c) << "s_" << it->first << " = s_" << it->second << ", ";
+  }
+  for( unsigned i=0; i<d_deq.size(); i++ ){
+    Trace(c) << "s_" << d_deq[i].first << " != s_" << d_deq[i].second << ", ";
+  }
+  Trace(c) << std::endl;
+}
+void SortInference::UnionFind::set( UnionFind& c ) {
+  clear();
+  for( std::map< int, int >::iterator it = c.d_eqc.begin(); it != c.d_eqc.end(); ++it ){
+    d_eqc[ it->first ] = it->second;
+  }
+  d_deq.insert( d_deq.end(), c.d_deq.begin(), c.d_deq.end() );
+}
+int SortInference::UnionFind::getRepresentative( int t ){
+  std::map< int, int >::iterator it = d_eqc.find( t );
+  if( it==d_eqc.end() || it->second==t ){
+    return t;
+  }else{
+    int rt = getRepresentative( it->second );
+    d_eqc[t] = rt;
+    return rt;
+  }
+}
+void SortInference::UnionFind::setEqual( int t1, int t2 ){
+  if( t1!=t2 ){
+    int rt1 = getRepresentative( t1 );
+    int rt2 = getRepresentative( t2 );
+    if( rt1>rt2 ){
+      d_eqc[rt1] = rt2;
+    }else{
+      d_eqc[rt2] = rt1;
+    }
+  }
+}
+bool SortInference::UnionFind::isValid() {
+  for( unsigned i=0; i<d_deq.size(); i++ ){
+    if( areEqual( d_deq[i].first, d_deq[i].second ) ){
+      return false;
+    }
+  }
+  return true;
+}
+
+
+void SortInference::recordSubsort( TypeNode tn, int s ){
+  s = d_type_union_find.getRepresentative( s );
+  if( std::find( d_sub_sorts.begin(), d_sub_sorts.end(), s )==d_sub_sorts.end() ){
+    d_sub_sorts.push_back( s );
+    d_type_sub_sorts[tn].push_back( s );
+  }
+}
+
+void SortInference::printSort( const char* c, int t ){
+  int rt = d_type_union_find.getRepresentative( t );
+  if( d_type_types.find( rt )!=d_type_types.end() ){
+    Trace(c) << d_type_types[rt];
+  }else{
+    Trace(c) << "s_" << rt;
+  }
+}
+
+void SortInference::reset() {
+  d_sub_sorts.clear();
+  d_non_monotonic_sorts.clear();
+  d_type_sub_sorts.clear();
+  //reset info
+  sortCount = 1;
+  d_type_union_find.clear();
+  d_type_types.clear();
+  d_id_for_types.clear();
+  d_op_return_types.clear();
+  d_op_arg_types.clear();
+  d_var_types.clear();
+  //for rewriting
+  d_symbol_map.clear();
+  d_const_map.clear();
+}
+
+void SortInference::simplify( std::vector< Node >& assertions, bool doSortInference, bool doMonotonicyInference ){
+  if( doSortInference ){
+    Trace("sort-inference-proc") << "Calculating sort inference..." << std::endl;
+    //process all assertions
+    std::map< Node, int > visited;
+    for( unsigned i=0; i<assertions.size(); i++ ){
+      Trace("sort-inference-debug") << "Process " << assertions[i] << std::endl;
+      std::map< Node, Node > var_bound;
+      process( assertions[i], var_bound, visited );
+    }
+    Trace("sort-inference-proc") << "...done" << std::endl;
+    for( std::map< Node, int >::iterator it = d_op_return_types.begin(); it != d_op_return_types.end(); ++it ){
+      Trace("sort-inference") << it->first << " : ";
+      TypeNode retTn = it->first.getType();
+      if( !d_op_arg_types[ it->first ].empty() ){
+        Trace("sort-inference") << "( ";
+        for( size_t i=0; i<d_op_arg_types[ it->first ].size(); i++ ){
+          recordSubsort( retTn[i], d_op_arg_types[ it->first ][i] );
+          printSort( "sort-inference", d_op_arg_types[ it->first ][i] );
+          Trace("sort-inference") << " ";
+        }
+        Trace("sort-inference") << ") -> ";
+        retTn = retTn[(int)retTn.getNumChildren()-1];
+      }
+      recordSubsort( retTn, it->second );
+      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( unsigned i=0; i<it->first[0].getNumChildren(); i++ ){
+        recordSubsort( it->first[0][i].getType(), it->second[it->first[0][i]] );
+        printSort( "sort-inference", it->second[it->first[0][i]] );
+        Trace("sort-inference") << std::endl;
+      }
+      Trace("sort-inference") << std::endl;
+    }
+
+    if( !options::ufssSymBreak() ){
+      bool rewritten = false;
+      //determine monotonicity of sorts
+      Trace("sort-inference-proc") << "Calculating monotonicty for subsorts..." << std::endl;
+      std::map< Node, std::map< int, bool > > visited;
+      for( unsigned i=0; i<assertions.size(); i++ ){
+        Trace("sort-inference-debug") << "Process monotonicity for " << assertions[i] << std::endl;
+        std::map< Node, Node > var_bound;
+        processMonotonic( assertions[i], true, true, var_bound, visited );
+      }
+      Trace("sort-inference-proc") << "...done" << std::endl;
+
+      Trace("sort-inference") << "We have " << d_sub_sorts.size() << " sub-sorts : " << std::endl;
+      for( unsigned i=0; i<d_sub_sorts.size(); i++ ){
+        printSort( "sort-inference", d_sub_sorts[i] );
+        if( d_type_types.find( d_sub_sorts[i] )!=d_type_types.end() ){
+          Trace("sort-inference") << " is interpreted." << std::endl;
+        }else if( d_non_monotonic_sorts.find( d_sub_sorts[i] )==d_non_monotonic_sorts.end() ){
+          Trace("sort-inference") << " is monotonic." << std::endl;
+        }else{
+          Trace("sort-inference") << " is not monotonic." << std::endl;
+        }
+      }
+
+      //simplify all assertions by introducing new symbols wherever necessary
+      Trace("sort-inference-proc") << "Perform simplification..." << std::endl;
+      std::map< Node, std::map< TypeNode, Node > > visited2;
+      for( unsigned i=0; i<assertions.size(); i++ ){
+        Node prev = assertions[i];
+        std::map< Node, Node > var_bound;
+        Trace("sort-inference-debug") << "Simplify " << assertions[i] << std::endl;
+        TypeNode tnn;
+        Node curr = simplifyNode( assertions[i], var_bound, tnn, visited2 );
+        Trace("sort-inference-debug") << "Done." << std::endl;
+        if( curr!=assertions[i] ){
+          Trace("sort-inference-debug") << "Rewrite " << curr << std::endl;
+          curr = theory::Rewriter::rewrite( curr );
+          rewritten = true;
+          Trace("sort-inference-rewrite") << assertions << std::endl;
+          Trace("sort-inference-rewrite") << " --> " << curr << std::endl;
+          PROOF( ProofManager::currentPM()->addDependence(curr, assertions[i]); );
+          assertions[i] = curr;
+        }
+      }
+      Trace("sort-inference-proc") << "...done" << std::endl;
+      //now, ensure constants are distinct
+      for( std::map< TypeNode, std::map< Node, Node > >::iterator it = d_const_map.begin(); it != d_const_map.end(); ++it ){
+        std::vector< Node > consts;
+        for( std::map< Node, Node >::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2 ){
+          Assert( it2->first.isConst() );
+          consts.push_back( it2->second );
+        }
+        //add lemma enforcing introduced constants to be distinct
+        if( consts.size()>1 ){
+          Node distinct_const = NodeManager::currentNM()->mkNode( kind::DISTINCT, consts );
+          Trace("sort-inference-rewrite") << "Add the constant distinctness lemma: " << std::endl;
+          Trace("sort-inference-rewrite") << "  " << distinct_const << std::endl;
+          assertions.push_back( distinct_const );
+          rewritten = true;
+        }
+      }
+
+      //enforce constraints based on monotonicity
+      Trace("sort-inference-proc") << "Enforce monotonicity..." << std::endl;
+      for( std::map< TypeNode, std::vector< int > >::iterator it = d_type_sub_sorts.begin(); it != d_type_sub_sorts.end(); ++it ){
+        int nmonSort = -1;
+        for( unsigned i=0; i<it->second.size(); i++ ){
+          if( d_non_monotonic_sorts.find( it->second[i] )!=d_non_monotonic_sorts.end() ){
+            nmonSort = it->second[i];
+            break;
+          }
+        }
+        if( nmonSort!=-1 ){
+          std::vector< Node > injections;
+          TypeNode base_tn = getOrCreateTypeForId( nmonSort, it->first );
+          for( unsigned i=0; i<it->second.size(); i++ ){
+            if( it->second[i]!=nmonSort ){
+              TypeNode new_tn = getOrCreateTypeForId( it->second[i], it->first );
+              //make injection to nmonSort
+              Node a1 = mkInjection( new_tn, base_tn );
+              injections.push_back( a1 );
+              if( d_non_monotonic_sorts.find( it->second[i] )!=d_non_monotonic_sorts.end() ){
+                //also must make injection from nmonSort to this
+                Node a2 = mkInjection( base_tn, new_tn );
+                injections.push_back( a2 );
+              }
+            }
+          }
+          Trace("sort-inference-rewrite") << "Add the following injections for " << it->first << " to ensure consistency wrt non-monotonic sorts : " << std::endl;
+          for( unsigned j=0; j<injections.size(); j++ ){
+            Trace("sort-inference-rewrite") << "   " << injections[j] << std::endl;
+          }
+          assertions.insert( assertions.end(), injections.begin(), injections.end() );
+          if( !injections.empty() ){
+            rewritten = true;
+          }
+        }
+      }
+      Trace("sort-inference-proc") << "...done" << std::endl;
+      //no sub-sort information is stored
+      reset();
+      Trace("sort-inference-debug") << "Finished sort inference, rewritten = " << rewritten << std::endl;
+    }
+    initialSortCount = sortCount;
+  }
+  if( doMonotonicyInference ){
+    std::map< Node, std::map< int, bool > > visited;
+    Trace("sort-inference-proc") << "Calculating monotonicty for types..." << std::endl;
+    for( unsigned i=0; i<assertions.size(); i++ ){
+      Trace("sort-inference-debug") << "Process type monotonicity for " << assertions[i] << std::endl;
+      std::map< Node, Node > var_bound;
+      processMonotonic( assertions[i], true, true, var_bound, visited, true );
+    }
+    Trace("sort-inference-proc") << "...done" << std::endl;
+  }
+}
+
+void SortInference::setEqual( int t1, int t2 ){
+  if( t1!=t2 ){
+    int rt1 = d_type_union_find.getRepresentative( t1 );
+    int rt2 = d_type_union_find.getRepresentative( t2 );
+    if( rt1!=rt2 ){
+      Trace("sort-inference-debug") << "Set equal : ";
+      printSort( "sort-inference-debug", rt1 );
+      Trace("sort-inference-debug") << " ";
+      printSort( "sort-inference-debug", rt2 );
+      Trace("sort-inference-debug") << std::endl;
+      /*
+      d_type_eq_class[rt1].insert( d_type_eq_class[rt1].end(), d_type_eq_class[rt2].begin(), d_type_eq_class[rt2].end() );
+      d_type_eq_class[rt2].clear();
+      Trace("sort-inference-debug") << "EqClass : { ";
+      for( int i=0; i<(int)d_type_eq_class[rt1].size(); i++ ){
+        Trace("sort-inference-debug") << d_type_eq_class[rt1][i] << ", ";
+      }
+      Trace("sort-inference-debug") << "}" << std::endl;
+      */
+      if( rt2>rt1 ){
+        //swap
+        int swap = rt1;
+        rt1 = rt2;
+        rt2 = swap;
+      }
+      std::map< int, TypeNode >::iterator it1 = d_type_types.find( rt1 );
+      if( it1!=d_type_types.end() ){
+        if( d_type_types.find( rt2 )==d_type_types.end() ){
+          d_type_types[rt2] = it1->second;
+          d_type_types.erase( rt1 );
+        }else{
+          Trace("sort-inference-debug") << "...fail : associated with types " << d_type_types[rt1] << " and " << d_type_types[rt2] << std::endl;
+          return;
+        }
+      }
+      d_type_union_find.d_eqc[rt1] = rt2;
+    }
+  }
+}
+
+int SortInference::getIdForType( TypeNode tn ){
+  //register the return type
+  std::map< TypeNode, int >::iterator it = d_id_for_types.find( tn );
+  if( it==d_id_for_types.end() ){
+    int sc = sortCount;
+    d_type_types[ sortCount ] = tn;
+    d_id_for_types[ tn ] = sortCount;
+    sortCount++;
+    return sc;
+  }else{
+    return it->second;
+  }
+}
+
+int SortInference::process( Node n, std::map< Node, Node >& var_bound, std::map< Node, int >& visited ){
+  std::map< Node, int >::iterator itv = visited.find( n );
+  if( itv!=visited.end() ){
+    return itv->second;
+  }else{
+    //add to variable bindings
+    bool use_new_visited = false;
+    std::map< Node, int > new_visited;
+    if( n.getKind()==kind::FORALL || n.getKind()==kind::EXISTS ){
+      if( d_var_types.find( n )!=d_var_types.end() ){
+        return getIdForType( n.getType() );
+      }else{
+        for( size_t i=0; i<n[0].getNumChildren(); i++ ){
+          //apply sort inference to quantified variables
+          d_var_types[n][ n[0][i] ] = sortCount;
+          sortCount++;
+
+          //type of the quantified variable must be the same
+          var_bound[ n[0][i] ] = n;
+        }
+      }
+      use_new_visited = true;
+    }
+
+    //process children
+    std::vector< Node > children;
+    std::vector< int > child_types;
+    for( size_t i=0; i<n.getNumChildren(); i++ ){
+      bool processChild = true;
+      if( n.getKind()==kind::FORALL || n.getKind()==kind::EXISTS ){
+        processChild = options::userPatternsQuant()==theory::quantifiers::USER_PAT_MODE_IGNORE ? i==1 : i>=1;
+      }
+      if( processChild ){
+        children.push_back( n[i] );
+        child_types.push_back( process( n[i], var_bound, use_new_visited ? new_visited : visited ) );
+      }
+    }
+
+    //remove from variable bindings
+    if( n.getKind()==kind::FORALL || n.getKind()==kind::EXISTS ){
+      //erase from variable bound
+      for( size_t i=0; i<n[0].getNumChildren(); i++ ){
+        var_bound.erase( n[0][i] );
+      }
+    }
+    Trace("sort-inference-debug") << "...Process " << n << std::endl;
+
+    int retType;
+    if( n.getKind()==kind::EQUAL && !n[0].getType().isBoolean() ){
+      Trace("sort-inference-debug") << "For equality " << n << ", set equal types from : " << n[0].getType() << " " << n[1].getType() << std::endl;
+      //if original types are mixed (e.g. Int/Real), don't commit type equality in either direction
+      if( n[0].getType()!=n[1].getType() ){
+        //for now, assume the original types
+        for( unsigned i=0; i<2; i++ ){
+          int ct = getIdForType( n[i].getType() );
+          setEqual( child_types[i], ct );
+        }
+      }else{
+        //we only require that the left and right hand side must be equal
+        setEqual( child_types[0], child_types[1] );
+      }
+      d_equality_types[n] = child_types[0];
+      retType = getIdForType( n.getType() );
+    }else if( n.getKind()==kind::APPLY_UF ){
+      Node op = n.getOperator();
+      TypeNode tn_op = op.getType();
+      if( d_op_return_types.find( op )==d_op_return_types.end() ){
+        if( n.getType().isBoolean() ){
+          //use booleans
+          d_op_return_types[op] = getIdForType( n.getType() );
+        }else{
+          //assign arbitrary sort for return type
+          d_op_return_types[op] = sortCount;
+          sortCount++;
+        }
+        //d_type_eq_class[sortCount].push_back( op );
+        //assign arbitrary sort for argument types
+        for( size_t i=0; i<n.getNumChildren(); i++ ){
+          d_op_arg_types[op].push_back( sortCount );
+          sortCount++;
+        }
+      }
+      for( size_t i=0; i<n.getNumChildren(); i++ ){
+        //the argument of the operator must match the return type of the subterm
+        if( n[i].getType()!=tn_op[i] ){
+          //if type mismatch, assume original types
+          Trace("sort-inference-debug") << "Argument " << i << " of " << op << " " << n[i] << " has type " << n[i].getType();
+          Trace("sort-inference-debug") << ", while operator arg has type " << tn_op[i] << std::endl;
+          int ct1 = getIdForType( n[i].getType() );
+          setEqual( child_types[i], ct1 );
+          int ct2 = getIdForType( tn_op[i] );
+          setEqual( d_op_arg_types[op][i], ct2 );
+        }else{
+          setEqual( child_types[i], d_op_arg_types[op][i] );
+        }
+      }
+      //return type is the return type
+      retType = d_op_return_types[op];
+    }else{
+      std::map< Node, Node >::iterator it = var_bound.find( n );
+      if( it!=var_bound.end() ){
+        Trace("sort-inference-debug") << n << " is a bound variable." << std::endl;
+        //the return type was specified while binding
+        retType = d_var_types[it->second][n];
+      }else if( n.getKind() == kind::VARIABLE || n.getKind()==kind::SKOLEM ){
+        Trace("sort-inference-debug") << n << " is a variable." << std::endl;
+        if( d_op_return_types.find( n )==d_op_return_types.end() ){
+          //assign arbitrary sort
+          d_op_return_types[n] = sortCount;
+          sortCount++;
+          //d_type_eq_class[sortCount].push_back( n );
+        }
+        retType = d_op_return_types[n];
+      }else if( n.isConst() ){
+        Trace("sort-inference-debug") << n << " is a constant." << std::endl;
+        //can be any type we want
+        retType = sortCount;
+        sortCount++;
+      }else{
+        Trace("sort-inference-debug") << n << " is a interpreted symbol." << std::endl;
+        //it is an interpreted term
+        for( size_t i=0; i<children.size(); i++ ){
+          Trace("sort-inference-debug") << children[i] << " forced to have " << children[i].getType() << std::endl;
+          //must enforce the actual type of the operator on the children
+          int ct = getIdForType( children[i].getType() );
+          setEqual( child_types[i], ct );
+        }
+        //return type must be the actual return type
+        retType = getIdForType( n.getType() );
+      }
+    }
+    Trace("sort-inference-debug") << "...Type( " << n << " ) = ";
+    printSort("sort-inference-debug", retType );
+    Trace("sort-inference-debug") << std::endl;
+    visited[n] = retType;
+    return retType;
+  }
+}
+
+void SortInference::processMonotonic( Node n, bool pol, bool hasPol, std::map< Node, Node >& var_bound, std::map< Node, std::map< int, bool > >& visited, bool typeMode ) {
+  int pindex = hasPol ? ( pol ? 1 : -1 ) : 0;
+  if( visited[n].find( pindex )==visited[n].end() ){
+    visited[n][pindex] = true;
+    Trace("sort-inference-debug") << "...Process monotonic " << pol << " " << hasPol << " " << n << std::endl;
+    if( n.getKind()==kind::FORALL ){
+      //only consider variables universally if it is possible this quantified formula is asserted positively
+      if( !hasPol || pol ){
+        for( unsigned i=0; i<n[0].getNumChildren(); i++ ){
+          var_bound[n[0][i]] = n;
+        }
+      }
+      processMonotonic( n[1], pol, hasPol, var_bound, visited, typeMode );
+      if( !hasPol || pol ){
+        for( unsigned i=0; i<n[0].getNumChildren(); i++ ){
+          var_bound.erase( n[0][i] );
+        }
+      }
+      return;
+    }else if( n.getKind()==kind::EQUAL ){
+      if( !hasPol || pol ){
+        for( unsigned i=0; i<2; i++ ){
+          if( var_bound.find( n[i] )!=var_bound.end() ){
+            if( !typeMode ){
+              int sid = getSortId( var_bound[n[i]], n[i] );
+              d_non_monotonic_sorts[sid] = true;
+            }else{
+              d_non_monotonic_sorts_orig[n[i].getType()] = true;
+            }
+            break;
+          }
+        }
+      }
+    }
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      bool npol;
+      bool nhasPol;
+      theory::QuantPhaseReq::getPolarity( n, i, hasPol, pol, nhasPol, npol );
+      processMonotonic( n[i], npol, nhasPol, var_bound, visited, typeMode );
+    }
+  }
+}
+
+
+TypeNode SortInference::getOrCreateTypeForId( int t, TypeNode pref ){
+  int rt = d_type_union_find.getRepresentative( t );
+  if( d_type_types.find( rt )!=d_type_types.end() ){
+    return d_type_types[rt];
+  }else{
+    TypeNode retType;
+    //see if we can assign pref
+    if( !pref.isNull() && d_id_for_types.find( pref )==d_id_for_types.end() ){
+      retType = pref;
+    }else{
+      //must create new type
+      std::stringstream ss;
+      ss << "it_" << t << "_" << pref;
+      retType = NodeManager::currentNM()->mkSort( ss.str() );
+    }
+    Trace("sort-inference") << "-> Make type " << retType << " to correspond to ";
+    printSort("sort-inference", t );
+    Trace("sort-inference") << std::endl;
+    d_id_for_types[ retType ] = rt;
+    d_type_types[ rt ] = retType;
+    return retType;
+  }
+}
+
+TypeNode SortInference::getTypeForId( int t ){
+  int rt = d_type_union_find.getRepresentative( t );
+  if( d_type_types.find( rt )!=d_type_types.end() ){
+    return d_type_types[rt];
+  }else{
+    return TypeNode::null();
+  }
+}
+
+Node SortInference::getNewSymbol( Node old, TypeNode tn ){
+  if( tn.isNull() || tn==old.getType() ){
+    return old;
+  }else if( old.isConst() ){
+    //must make constant of type tn
+    if( d_const_map[tn].find( old )==d_const_map[tn].end() ){
+      std::stringstream ss;
+      ss << "ic_" << tn << "_" << old;
+      d_const_map[tn][ old ] = NodeManager::currentNM()->mkSkolem( ss.str(), tn, "constant created during sort inference" );  //use mkConst???
+    }
+    return d_const_map[tn][ old ];
+  }else if( old.getKind()==kind::BOUND_VARIABLE ){
+    std::stringstream ss;
+    ss << "b_" << old;
+    return NodeManager::currentNM()->mkBoundVar( ss.str(), tn );
+  }else{
+    std::stringstream ss;
+    ss << "i_" << old;
+    return NodeManager::currentNM()->mkSkolem( ss.str(), tn, "created during sort inference" );
+  }
+}
+
+Node SortInference::simplifyNode( Node n, std::map< Node, Node >& var_bound, TypeNode tnn, std::map< Node, std::map< TypeNode, Node > >& visited ){
+  std::map< TypeNode, Node >::iterator itv = visited[n].find( tnn );
+  if( itv!=visited[n].end() ){
+    return itv->second;
+  }else{
+    Trace("sort-inference-debug2") << "Simplify " << n << ", type context=" << tnn << std::endl;
+    std::vector< Node > children;
+    std::map< Node, std::map< TypeNode, Node > > new_visited;
+    bool use_new_visited = false;
+    if( n.getKind()==kind::FORALL || n.getKind()==kind::EXISTS ){
+      //recreate based on types of variables
+      std::vector< Node > new_children;
+      for( size_t i=0; i<n[0].getNumChildren(); i++ ){
+        TypeNode tn = getOrCreateTypeForId( d_var_types[n][ n[0][i] ], n[0][i].getType() );
+        Node v = getNewSymbol( n[0][i], tn );
+        Trace("sort-inference-debug2") << "Map variable " << n[0][i] << " to " << v << std::endl;
+        new_children.push_back( v );
+        var_bound[ n[0][i] ] = v;
+      }
+      children.push_back( NodeManager::currentNM()->mkNode( n[0].getKind(), new_children ) );
+      use_new_visited = true;
+    }
+
+    //process children
+    if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+      children.push_back( n.getOperator() );
+    }
+    Node op;
+    if( n.hasOperator() ){
+      op = n.getOperator();
+    }
+    bool childChanged = false;
+    TypeNode tnnc;
+    for( size_t i=0; i<n.getNumChildren(); i++ ){
+      bool processChild = true;
+      if( n.getKind()==kind::FORALL || n.getKind()==kind::EXISTS ){
+        processChild = options::userPatternsQuant()==theory::quantifiers::USER_PAT_MODE_IGNORE ? i==1 : i>=1;
+      }
+      if( processChild ){
+        if( n.getKind()==kind::APPLY_UF ){
+          Assert( d_op_arg_types.find( op )!=d_op_arg_types.end() );
+          tnnc = getOrCreateTypeForId( d_op_arg_types[op][i], n[i].getType() );
+          Assert( !tnnc.isNull() );
+        }else if( n.getKind()==kind::EQUAL && i==0 ){
+          Assert( d_equality_types.find( n )!=d_equality_types.end() );
+          tnnc = getOrCreateTypeForId( d_equality_types[n], n[0].getType() );
+          Assert( !tnnc.isNull() );
+        }
+        Node nc = simplifyNode( n[i], var_bound, tnnc, use_new_visited ? new_visited : visited );
+        Trace("sort-inference-debug2") << "Simplify " << i << " " << n[i] << " returned " << nc << std::endl;
+        children.push_back( nc );
+        childChanged = childChanged || nc!=n[i];
+      }
+    }
+
+    //remove from variable bindings
+    Node ret;
+    if( n.getKind()==kind::FORALL || n.getKind()==kind::EXISTS ){
+      //erase from variable bound
+      for( size_t i=0; i<n[0].getNumChildren(); i++ ){
+        Trace("sort-inference-debug2") << "Remove bound for " << n[0][i] << std::endl;
+        var_bound.erase( n[0][i] );
+      }
+      ret = NodeManager::currentNM()->mkNode( n.getKind(), children );
+    }else if( n.getKind()==kind::EQUAL ){
+      TypeNode tn1 = children[0].getType();
+      TypeNode tn2 = children[1].getType();
+      if( !tn1.isSubtypeOf( tn2 ) && !tn2.isSubtypeOf( tn1 ) ){
+        Trace("sort-inference-warn") << "Sort inference created bad equality: " << children[0] << " = " << children[1] << std::endl;
+        Trace("sort-inference-warn") << "  Types : " << children[0].getType() << " " << children[1].getType() << std::endl;
+        Assert( false );
+      }
+      ret = NodeManager::currentNM()->mkNode( kind::EQUAL, children );
+    }else if( n.getKind()==kind::APPLY_UF ){
+      if( d_symbol_map.find( op )==d_symbol_map.end() ){
+        //make the new operator if necessary
+        bool opChanged = false;
+        std::vector< TypeNode > argTypes;
+        for( size_t i=0; i<n.getNumChildren(); i++ ){
+          TypeNode tn = getOrCreateTypeForId( d_op_arg_types[op][i], n[i].getType() );
+          argTypes.push_back( tn );
+          if( tn!=n[i].getType() ){
+            opChanged = true;
+          }
+        }
+        TypeNode retType = getOrCreateTypeForId( d_op_return_types[op], n.getType() );
+        if( retType!=n.getType() ){
+          opChanged = true;
+        }
+        if( opChanged ){
+          std::stringstream ss;
+          ss << "io_" << op;
+          TypeNode typ = NodeManager::currentNM()->mkFunctionType( argTypes, retType );
+          d_symbol_map[op] = NodeManager::currentNM()->mkSkolem( ss.str(), typ, "op created during sort inference" );
+          Trace("setp-model") << "Function " << op << " is replaced with " << d_symbol_map[op] << std::endl;
+          d_model_replace_f[op] = d_symbol_map[op];
+        }else{
+          d_symbol_map[op] = op;
+        }
+      }
+      children[0] = d_symbol_map[op];
+      //make sure all children have been taken care of
+      for( size_t i=0; i<n.getNumChildren(); i++ ){
+        TypeNode tn = children[i+1].getType();
+        TypeNode tna = getTypeForId( d_op_arg_types[op][i] );
+        if( tn!=tna ){
+          Trace("sort-inference-warn") << "Sort inference created bad child: " << n << " " << n[i] << " " << tn << " " << tna << std::endl;
+          Assert( false );
+        }
+      }
+      ret = NodeManager::currentNM()->mkNode( kind::APPLY_UF, children );
+    }else{
+      std::map< Node, Node >::iterator it = var_bound.find( n );
+      if( it!=var_bound.end() ){
+        ret = it->second;
+      }else if( n.getKind() == kind::VARIABLE || n.getKind() == kind::SKOLEM ){
+        if( d_symbol_map.find( n )==d_symbol_map.end() ){
+          TypeNode tn = getOrCreateTypeForId( d_op_return_types[n], n.getType() );
+          d_symbol_map[n] = getNewSymbol( n, tn );
+        }
+        ret = d_symbol_map[n];
+      }else if( n.isConst() ){
+        //type is determined by context
+        ret = getNewSymbol( n, tnn );
+      }else if( childChanged ){
+        ret = NodeManager::currentNM()->mkNode( n.getKind(), children );
+      }else{
+        ret = n;
+      }
+    }
+    visited[n][tnn] = ret;
+    return ret;
+  }
+}
+
+Node SortInference::mkInjection( TypeNode tn1, TypeNode tn2 ) {
+  std::vector< TypeNode > tns;
+  tns.push_back( tn1 );
+  TypeNode typ = NodeManager::currentNM()->mkFunctionType( tns, tn2 );
+  Node f = NodeManager::currentNM()->mkSkolem( "inj", typ, "injection for monotonicity constraint" );
+  Trace("sort-inference") << "-> Make injection " << f << " from " << tn1 << " to " << tn2 << std::endl;
+  Node v1 = NodeManager::currentNM()->mkBoundVar( "?x", tn1 );
+  Node v2 = NodeManager::currentNM()->mkBoundVar( "?y", tn1 );
+  Node ret = NodeManager::currentNM()->mkNode( kind::FORALL,
+               NodeManager::currentNM()->mkNode( kind::BOUND_VAR_LIST, v1, v2 ),
+               NodeManager::currentNM()->mkNode( kind::OR,
+                 NodeManager::currentNM()->mkNode( kind::APPLY_UF, f, v1 ).eqNode( NodeManager::currentNM()->mkNode( kind::APPLY_UF, f, v2 ) ).negate(),
+                 v1.eqNode( v2 ) ) );
+  ret = theory::Rewriter::rewrite( ret );
+  return ret;
+}
+
+int SortInference::getSortId( Node n ) {
+  Node op = n.getKind()==kind::APPLY_UF ? n.getOperator() : n;
+  if( d_op_return_types.find( op )!=d_op_return_types.end() ){
+    return d_type_union_find.getRepresentative( d_op_return_types[op] );
+  }else{
+    return 0;
+  }
+}
+
+int SortInference::getSortId( Node f, Node v ) {
+  if( d_var_types.find( f )!=d_var_types.end() ){
+    return d_type_union_find.getRepresentative( d_var_types[f][v] );
+  }else{
+    return 0;
+  }
+}
+
+void SortInference::setSkolemVar( Node f, Node v, Node sk ){
+  Trace("sort-inference-temp") << "Set skolem var for " << f << ", variable " << v << std::endl;
+  if( isWellSortedFormula( f ) && d_var_types.find( f )==d_var_types.end() ){
+    //calculate the sort for variables if not done so already
+    std::map< Node, Node > var_bound;
+    std::map< Node, int > visited;
+    process( f, var_bound, visited );
+  }
+  d_op_return_types[sk] = getSortId( f, v );
+  Trace("sort-inference-temp") << "Set skolem sort id for " << sk << " to " << d_op_return_types[sk] << std::endl;
+}
+
+bool SortInference::isWellSortedFormula( Node n ) {
+  if( n.getType().isBoolean() && n.getKind()!=kind::APPLY_UF ){
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      if( !isWellSortedFormula( n[i] ) ){
+        return false;
+      }
+    }
+    return true;
+  }else{
+    return isWellSorted( n );
+  }
+}
+
+bool SortInference::isWellSorted( Node n ) {
+  if( getSortId( n )==0 ){
+    return false;
+  }else{
+    if( n.getKind()==kind::APPLY_UF ){
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        int s1 = getSortId( n[i] );
+        int s2 = d_type_union_find.getRepresentative( d_op_arg_types[ n.getOperator() ][i] );
+        if( s1!=s2 ){
+          return false;
+        }
+        if( !isWellSorted( n[i] ) ){
+          return false;
+        }
+      }
+    }
+    return true;
+  }
+}
+
+void SortInference::getSortConstraints( Node n, UnionFind& uf ) {
+  if( n.getKind()==kind::APPLY_UF ){
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      getSortConstraints( n[i], uf );
+      uf.setEqual( getSortId( n[i] ), d_type_union_find.getRepresentative( d_op_arg_types[ n.getOperator() ][i] ) );
+    }
+  }
+}
+
+bool SortInference::isMonotonic( TypeNode tn ) {
+  Assert( tn.isSort() );
+  return d_non_monotonic_sorts_orig.find( tn )==d_non_monotonic_sorts_orig.end();
+}
+
+}/* CVC4 namespace */
diff --git a/src/theory/sort_inference.h b/src/theory/sort_inference.h
new file mode 100644
index 0000000..ae3342f
--- /dev/null
+++ b/src/theory/sort_inference.h
@@ -0,0 +1,124 @@
+/*********************                                                        */
+/*! \file sort_inference.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Pre-process step for performing sort inference
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__SORT_INFERENCE_H
+#define __CVC4__SORT_INFERENCE_H
+
+#include <iostream>
+#include <string>
+#include <vector>
+#include <map>
+#include "expr/node.h"
+#include "expr/type_node.h"
+
+namespace CVC4 {
+
+class SortInference {
+private:
+  //all subsorts
+  std::vector< int > d_sub_sorts;
+  std::map< int, bool > d_non_monotonic_sorts;
+  std::map< TypeNode, std::vector< int > > d_type_sub_sorts;
+  void recordSubsort( TypeNode tn, int s );
+public:
+  class UnionFind {
+  public:
+    UnionFind(){}
+    UnionFind( UnionFind& c ){
+      set( c );
+    }
+    std::map< int, int > d_eqc;
+    //pairs that must be disequal
+    std::vector< std::pair< int, int > > d_deq;
+    void print(const char * c);
+    void clear() { d_eqc.clear(); d_deq.clear(); }
+    void set( UnionFind& c );
+    int getRepresentative( int t );
+    void setEqual( int t1, int t2 );
+    void setDisequal( int t1, int t2 ){ d_deq.push_back( std::pair< int, int >( t1, t2 ) ); }
+    bool areEqual( int t1, int t2 ) { return getRepresentative( t1 )==getRepresentative( t2 ); }
+    bool isValid();
+  };
+private:
+  int sortCount;
+  int initialSortCount;
+  UnionFind d_type_union_find;
+  std::map< int, TypeNode > d_type_types;
+  std::map< TypeNode, int > d_id_for_types;
+  //for apply uf operators
+  std::map< Node, int > d_op_return_types;
+  std::map< Node, std::vector< int > > d_op_arg_types;
+  std::map< Node, int > d_equality_types;
+  //for bound variables
+  std::map< Node, std::map< Node, int > > d_var_types;
+  //get representative
+  void setEqual( int t1, int t2 );
+  int getIdForType( TypeNode tn );
+  void printSort( const char* c, int t );
+  //process
+  int process( Node n, std::map< Node, Node >& var_bound, std::map< Node, int >& visited );
+//for monotonicity inference
+private:
+  void processMonotonic( Node n, bool pol, bool hasPol, std::map< Node, Node >& var_bound, std::map< Node, std::map< int, bool > >& visited, bool typeMode = false );
+
+//for rewriting
+private:
+  //mapping from old symbols to new symbols
+  std::map< Node, Node > d_symbol_map;
+  //mapping from constants to new symbols
+  std::map< TypeNode, std::map< Node, Node > > d_const_map;
+  //helper functions for simplify
+  TypeNode getOrCreateTypeForId( int t, TypeNode pref );
+  TypeNode getTypeForId( int t );
+  Node getNewSymbol( Node old, TypeNode tn );
+  //simplify
+  Node simplifyNode( Node n, std::map< Node, Node >& var_bound, TypeNode tnn, std::map< Node, std::map< TypeNode, Node > >& visited );
+  //make injection
+  Node mkInjection( TypeNode tn1, TypeNode tn2 );
+  //reset
+  void reset();
+public:
+  SortInference() : sortCount( 1 ){}
+  ~SortInference(){}
+
+  void simplify( std::vector< Node >& assertions, bool doSortInference, bool doMonotonicyInference );
+  //get sort id for term n
+  int getSortId( Node n );
+  //get sort id for variable of quantified formula f
+  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 );
+public:
+  //is well sorted
+  bool isWellSortedFormula( Node n );
+  bool isWellSorted( Node n );
+  //get constraints for being well-typed according to computed sub-types
+  void getSortConstraints( Node n, SortInference::UnionFind& uf );
+public:
+  //list of all functions and the uninterpreted symbols they were replaced with
+  std::map< Node, Node > d_model_replace_f;
+
+private:
+  // store monotonicity for original sorts as well
+  std::map< TypeNode, bool > d_non_monotonic_sorts_orig;  
+public:
+  //is monotonic
+  bool isMonotonic( TypeNode tn );  
+};
+
+}
+
+#endif
diff --git a/src/theory/strings/kinds b/src/theory/strings/kinds
new file mode 100644
index 0000000..3cdff9c
--- /dev/null
+++ b/src/theory/strings/kinds
@@ -0,0 +1,127 @@
+# kinds                                                               -*- sh -*-
+#
+# For documentation on this file format, please refer to
+# src/theory/builtin/kinds.
+#
+
+theory THEORY_STRINGS ::CVC4::theory::strings::TheoryStrings "theory/strings/theory_strings.h"
+
+properties check parametric propagate getNextDecisionRequest presolve
+
+rewriter ::CVC4::theory::strings::TheoryStringsRewriter "theory/strings/theory_strings_rewriter.h"
+
+typechecker "theory/strings/theory_strings_type_rules.h"
+
+operator STRING_CONCAT 2: "string concat (N-ary)"
+operator STRING_IN_REGEXP 2 "membership"
+operator STRING_LENGTH 1 "string length"
+operator STRING_SUBSTR 3 "string substr"
+operator STRING_CHARAT 2 "string charat"
+operator STRING_STRCTN 2 "string contains"
+operator STRING_STRIDOF 3 "string indexof"
+operator STRING_STRREPL 3 "string replace"
+operator STRING_PREFIX 2 "string prefixof"
+operator STRING_SUFFIX 2 "string suffixof"
+operator STRING_ITOS 1 "integer to string"
+operator STRING_STOI 1 "string to integer (total function)"
+operator STRING_U16TOS 1 "uint16 to string"
+operator STRING_STOU16 1 "string to uint16"
+operator STRING_U32TOS 1 "uint32 to string"
+operator STRING_STOU32 1 "string to uint32"
+
+#sort CHAR_TYPE \
+#    Cardinality::INTEGERS \
+#    well-founded \
+#        "NodeManager::currentNM()->mkConst(::CVC4::String())" \
+#        "util/regexp.h" \
+#    "String type"
+
+sort STRING_TYPE \
+    Cardinality::INTEGERS \
+    well-founded \
+        "NodeManager::currentNM()->mkConst(::CVC4::String())" \
+        "util/regexp.h" \
+    "String type"
+
+sort REGEXP_TYPE \
+    Cardinality::INTEGERS \
+    well-founded \
+        "NodeManager::currentNM()->mkConst(::CVC4::RegExp())" \
+        "util/regexp.h" \
+    "RegExp type"
+
+enumerator STRING_TYPE \
+    "::CVC4::theory::strings::StringEnumerator" \
+    "theory/strings/type_enumerator.h"
+
+#enumerator REGEXP_TYPE \
+#    "::CVC4::theory::strings::RegExpEnumerator" \
+#    "theory/strings/type_enumerator.h"
+
+constant CONST_STRING \
+    ::CVC4::String \
+    ::CVC4::strings::StringHashFunction \
+    "util/regexp.h" \
+    "a string of characters"
+
+constant CONST_REGEXP \
+    ::CVC4::RegExp \
+    ::CVC4::RegExpHashFunction \
+    "util/regexp.h" \
+    "a regular expression"
+
+typerule CONST_STRING ::CVC4::theory::strings::StringConstantTypeRule
+typerule CONST_REGEXP ::CVC4::theory::strings::RegExpConstantTypeRule
+
+# equal equal / less than / output
+operator STRING_TO_REGEXP 1 "convert string to regexp"
+operator REGEXP_CONCAT 2: "regexp concat"
+operator REGEXP_UNION 2: "regexp union"
+operator REGEXP_INTER 2: "regexp intersection"
+operator REGEXP_STAR 1 "regexp *"
+operator REGEXP_PLUS 1 "regexp +"
+operator REGEXP_OPT 1 "regexp ?"
+operator REGEXP_RANGE 2 "regexp range"
+operator REGEXP_LOOP 2:3 "regexp loop"
+
+operator REGEXP_EMPTY 0 "regexp empty"
+operator REGEXP_SIGMA 0 "regexp all characters"
+
+#internal
+operator REGEXP_RV 1 "regexp rv (internal use only)"
+typerule REGEXP_RV ::CVC4::theory::strings::RegExpRVTypeRule
+
+#typerules
+typerule REGEXP_CONCAT ::CVC4::theory::strings::RegExpConcatTypeRule
+typerule REGEXP_UNION ::CVC4::theory::strings::RegExpUnionTypeRule
+typerule REGEXP_INTER ::CVC4::theory::strings::RegExpInterTypeRule
+typerule REGEXP_STAR ::CVC4::theory::strings::RegExpStarTypeRule
+typerule REGEXP_PLUS ::CVC4::theory::strings::RegExpPlusTypeRule
+typerule REGEXP_OPT ::CVC4::theory::strings::RegExpOptTypeRule
+typerule REGEXP_RANGE ::CVC4::theory::strings::RegExpRangeTypeRule
+typerule REGEXP_LOOP ::CVC4::theory::strings::RegExpLoopTypeRule
+
+typerule STRING_TO_REGEXP ::CVC4::theory::strings::StringToRegExpTypeRule
+
+typerule STRING_CONCAT ::CVC4::theory::strings::StringConcatTypeRule
+typerule STRING_LENGTH ::CVC4::theory::strings::StringLengthTypeRule
+typerule STRING_SUBSTR ::CVC4::theory::strings::StringSubstrTypeRule
+typerule STRING_CHARAT ::CVC4::theory::strings::StringCharAtTypeRule
+typerule STRING_STRCTN ::CVC4::theory::strings::StringContainTypeRule
+typerule STRING_STRIDOF ::CVC4::theory::strings::StringIndexOfTypeRule
+typerule STRING_STRREPL ::CVC4::theory::strings::StringReplaceTypeRule
+typerule STRING_PREFIX ::CVC4::theory::strings::StringPrefixOfTypeRule
+typerule STRING_SUFFIX ::CVC4::theory::strings::StringSuffixOfTypeRule
+typerule STRING_ITOS ::CVC4::theory::strings::StringIntToStrTypeRule
+typerule STRING_STOI ::CVC4::theory::strings::StringStrToIntTypeRule
+typerule STRING_U16TOS ::CVC4::theory::strings::StringIntToStrTypeRule
+typerule STRING_STOU16 ::CVC4::theory::strings::StringStrToIntTypeRule
+typerule STRING_U32TOS ::CVC4::theory::strings::StringIntToStrTypeRule
+typerule STRING_STOU32 ::CVC4::theory::strings::StringStrToIntTypeRule
+
+typerule STRING_IN_REGEXP ::CVC4::theory::strings::StringInRegExpTypeRule
+
+typerule REGEXP_EMPTY ::CVC4::theory::strings::EmptyRegExpTypeRule
+typerule REGEXP_SIGMA ::CVC4::theory::strings::SigmaRegExpTypeRule
+
+endtheory
diff --git a/src/theory/strings/regexp_operation.cpp b/src/theory/strings/regexp_operation.cpp
new file mode 100644
index 0000000..a665a02
--- /dev/null
+++ b/src/theory/strings/regexp_operation.cpp
@@ -0,0 +1,2177 @@
+/*********************                                                        */
+/*! \file regexp_operation.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tianyi Liang, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Symbolic Regular Expresion Operations
+ **
+ ** Symbolic Regular Expresion Operations
+ **/
+
+#include "theory/strings/regexp_operation.h"
+
+#include "expr/kind.h"
+#include "options/strings_options.h"
+
+namespace CVC4 {
+namespace theory {
+namespace strings {
+
+RegExpOpr::RegExpOpr()
+  : d_lastchar( options::stdASCII()? '\x7f' : '\xff' ),
+    RMAXINT( LONG_MAX )
+{
+  d_emptyString = NodeManager::currentNM()->mkConst( ::CVC4::String("") );
+  d_true = NodeManager::currentNM()->mkConst( true );
+  d_false = NodeManager::currentNM()->mkConst( false );
+  d_emptySingleton = NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP, d_emptyString );
+  d_zero = NodeManager::currentNM()->mkConst( ::CVC4::Rational(0) );
+  d_one = NodeManager::currentNM()->mkConst( ::CVC4::Rational(1) );
+  std::vector< Node > nvec;
+  d_emptyRegexp = NodeManager::currentNM()->mkNode( kind::REGEXP_EMPTY, nvec );
+  d_sigma = NodeManager::currentNM()->mkNode( kind::REGEXP_SIGMA, nvec );
+  d_sigma_star = NodeManager::currentNM()->mkNode( kind::REGEXP_STAR, d_sigma );
+}
+
+RegExpOpr::~RegExpOpr(){ 
+
+}
+
+int RegExpOpr::gcd ( int a, int b ) {
+  int c;
+  while ( a != 0 ) {
+     c = a; a = b%a;  b = c;
+  }
+  return b;
+}
+
+bool RegExpOpr::checkConstRegExp( Node r ) {
+  Trace("strings-regexp-cstre") << "RegExp-CheckConstRegExp starts with /" << mkString( r ) << "/" << std::endl;
+  bool ret = true;
+  if( d_cstre_cache.find( r ) != d_cstre_cache.end() ) {
+    ret = d_cstre_cache[r];
+  } else {
+    if(r.getKind() == kind::STRING_TO_REGEXP) {
+      Node tmp = Rewriter::rewrite( r[0] );
+      ret = tmp.isConst();
+    } else {
+      for(unsigned i=0; i<r.getNumChildren(); ++i) {
+        if(!checkConstRegExp(r[i])) {
+          ret = false; break;
+        }
+      }
+    }
+    d_cstre_cache[r] = ret;
+  }
+  return ret;
+}
+
+// 0-unknown, 1-yes, 2-no
+int RegExpOpr::delta( Node r, Node &exp ) {
+  Trace("regexp-delta") << "RegExp-Delta starts with /" << mkString( r ) << "/" << std::endl;
+  int ret = 0;
+  if( d_delta_cache.find( r ) != d_delta_cache.end() ) {
+    ret = d_delta_cache[r].first;
+    exp = d_delta_cache[r].second;
+  } else {
+    int k = r.getKind();
+    switch( k ) {
+      case kind::REGEXP_EMPTY: {
+        ret = 2;
+        break;
+      }
+      case kind::REGEXP_SIGMA: {
+        ret = 2;
+        break;
+      }
+      case kind::STRING_TO_REGEXP: {
+        Node tmp = Rewriter::rewrite(r[0]);
+        if(tmp.isConst()) {
+          if(tmp == d_emptyString) {
+            ret = 1;
+          } else {
+            ret = 2;
+          }
+        } else {
+          ret = 0;
+          if(tmp.getKind() == kind::STRING_CONCAT) {
+            for(unsigned i=0; i<tmp.getNumChildren(); i++) {
+              if(tmp[i].isConst()) {
+                ret = 2; break;
+              }
+            }
+
+          }
+          if(ret == 0) {
+            exp = r[0].eqNode(d_emptyString);
+          }
+        }
+        break;
+      }
+      case kind::REGEXP_CONCAT: {
+        bool flag = false;
+        std::vector< Node > vec_nodes;
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          Node exp2;
+          int tmp = delta( r[i], exp2 );
+          if(tmp == 2) {
+            ret = 2;
+            break;
+          } else if(tmp == 0) {
+            vec_nodes.push_back( exp2 );
+            flag = true;
+          }
+        }
+        if(ret != 2) {
+          if(!flag) {
+            ret = 1;
+          } else {
+            exp = vec_nodes.size()==1 ? vec_nodes[0] : NodeManager::currentNM()->mkNode(kind::AND, vec_nodes);
+          }
+        }
+        break;
+      }
+      case kind::REGEXP_UNION: {
+        bool flag = false;
+        std::vector< Node > vec_nodes;
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          Node exp2;
+          int tmp = delta( r[i], exp2 );
+          if(tmp == 1) {
+            ret = 1;
+            break;
+          } else if(tmp == 0) {
+            vec_nodes.push_back( exp2 );
+            flag = true;
+          }
+        }
+        if(ret != 1) {
+          if(!flag) {
+            ret = 2;
+          } else {
+            exp = vec_nodes.size()==1 ? vec_nodes[0] : NodeManager::currentNM()->mkNode(kind::OR, vec_nodes);
+          }
+        }
+        break;
+      }
+      case kind::REGEXP_INTER: {
+        bool flag = false;
+        std::vector< Node > vec_nodes;
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          Node exp2;
+          int tmp = delta( r[i], exp2 );
+          if(tmp == 2) {
+            ret = 2;
+            break;
+          } else if(tmp == 0) {
+            vec_nodes.push_back( exp2 );
+            flag = true;
+          }
+        }
+        if(ret != 2) {
+          if(!flag) {
+            ret = 1;
+          } else {
+            exp = vec_nodes.size()==1 ? vec_nodes[0] : NodeManager::currentNM()->mkNode(kind::AND, vec_nodes);
+          }
+        }
+        break;
+      }
+      case kind::REGEXP_STAR: {
+        ret = 1;
+        break;
+      }
+      case kind::REGEXP_PLUS: {
+        ret = delta( r[0], exp );
+        break;
+      }
+      case kind::REGEXP_OPT: {
+        ret = 1;
+        break;
+      }
+      case kind::REGEXP_RANGE: {
+        ret = 2;
+        break;
+      }
+      case kind::REGEXP_LOOP: {
+        if(r[1] == d_zero) {
+          ret = 1;
+        } else {
+          ret = delta(r[0], exp);
+        }
+        break;
+      }
+      default: {
+        //Trace("strings-error") << "Unsupported term: " << mkString( r ) << " in delta of RegExp." << std::endl;
+        Unreachable();
+      }
+    }
+    if(!exp.isNull()) {
+      exp = Rewriter::rewrite(exp);
+    }
+    std::pair< int, Node > p(ret, exp);
+    d_delta_cache[r] = p;
+  }
+  Trace("regexp-delta") << "RegExp-Delta returns : " << ret << std::endl;
+  return ret;
+}
+
+// 0-unknown, 1-yes, 2-no
+int RegExpOpr::derivativeS( Node r, CVC4::String c, Node &retNode ) {
+  Assert( c.size() < 2 );
+  Trace("regexp-derive") << "RegExp-derive starts with /" << mkString( r ) << "/, c=" << c << std::endl;
+
+  int ret = 1;
+  retNode = d_emptyRegexp;
+
+  PairNodeStr dv = std::make_pair( r, c );
+  if( d_deriv_cache.find( dv ) != d_deriv_cache.end() ) {
+    retNode = d_deriv_cache[dv].first;
+    ret = d_deriv_cache[dv].second;
+  } else if( c.isEmptyString() ) {
+    Node expNode;
+    ret = delta( r, expNode );
+    if(ret == 0) {
+      retNode = NodeManager::currentNM()->mkNode(kind::ITE, expNode, r, d_emptyRegexp);
+    } else if(ret == 1) {
+      retNode = r;
+    }
+    std::pair< Node, int > p(retNode, ret);
+    d_deriv_cache[dv] = p;
+  } else {
+    switch( r.getKind() ) {
+      case kind::REGEXP_EMPTY: {
+        ret = 2;
+        break;
+      }
+      case kind::REGEXP_SIGMA: {
+        retNode = d_emptySingleton;
+        break;
+      }
+      case kind::REGEXP_RANGE: {
+        CVC4::String a = r[0].getConst<String>();
+        CVC4::String b = r[1].getConst<String>();
+        retNode = (a <= c && c <= b) ? d_emptySingleton : d_emptyRegexp;
+        break;
+      }
+      case kind::STRING_TO_REGEXP: {
+        Node tmp = Rewriter::rewrite(r[0]);
+        if(tmp.isConst()) {
+          if(tmp == d_emptyString) {
+            ret = 2;
+          } else {
+            if(tmp.getConst< CVC4::String >().getFirstChar() == c.getFirstChar()) {
+              retNode =  NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP,
+                tmp.getConst< CVC4::String >().size() == 1 ? d_emptyString : NodeManager::currentNM()->mkConst( tmp.getConst< CVC4::String >().substr(1) ) );
+            } else {
+              ret = 2;
+            }
+          }
+        } else {
+          ret = 0;
+          Node rest;
+          if(tmp.getKind() == kind::STRING_CONCAT) {
+            Node t2 = tmp[0];
+            if(t2.isConst()) {
+              if(t2.getConst< CVC4::String >().getFirstChar() == c.getFirstChar()) {
+                Node n =  NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP,
+                  tmp.getConst< CVC4::String >().size() == 1 ? d_emptyString : NodeManager::currentNM()->mkConst( tmp.getConst< CVC4::String >().substr(1) ) );
+                std::vector< Node > vec_nodes;
+                vec_nodes.push_back(n);
+                for(unsigned i=1; i<tmp.getNumChildren(); i++) {
+                  vec_nodes.push_back(tmp[i]);
+                }
+                retNode = NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, vec_nodes);
+                ret = 1;
+              } else {
+                ret = 2;
+              }
+            } else {
+              tmp = tmp[0];
+              std::vector< Node > vec_nodes;
+              for(unsigned i=1; i<tmp.getNumChildren(); i++) {
+                vec_nodes.push_back(tmp[i]);
+              }
+              rest = NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, vec_nodes);
+            }
+          }
+          if(ret == 0) {
+            Node sk = NodeManager::currentNM()->mkSkolem( "rsp", NodeManager::currentNM()->stringType(), "Split RegExp" );
+            retNode = NodeManager::currentNM()->mkNode(kind::STRING_TO_REGEXP, sk);
+            if(!rest.isNull()) {
+              retNode = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, retNode, rest));
+            }
+            Node exp = tmp.eqNode(NodeManager::currentNM()->mkNode(kind::STRING_CONCAT,
+                        NodeManager::currentNM()->mkConst(c), sk));
+            retNode = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::ITE, exp, retNode, d_emptyRegexp));
+          }
+        }
+        break;
+      }
+      case kind::REGEXP_CONCAT: {
+        std::vector< Node > vec_nodes;
+        std::vector< Node > delta_nodes;
+        Node dnode = d_true;
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          Node dc;
+          Node exp2;
+          int rt = derivativeS(r[i], c, dc);
+          if(rt != 2) {
+            if(rt == 0) {
+              ret = 0;
+            }
+            std::vector< Node > vec_nodes2;
+            if(dc != d_emptySingleton) {
+              vec_nodes2.push_back( dc );
+            }
+            for(unsigned j=i+1; j<r.getNumChildren(); ++j) {
+              if(r[j] != d_emptySingleton) {
+                vec_nodes2.push_back( r[j] );
+              }
+            }
+            Node tmp = vec_nodes2.size()==0 ? d_emptySingleton :
+              vec_nodes2.size()==1 ? vec_nodes2[0] : NodeManager::currentNM()->mkNode( kind::REGEXP_CONCAT, vec_nodes2 );
+            if(dnode != d_true) {
+              tmp = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::ITE, dnode, tmp, d_emptyRegexp));
+              ret = 0;
+            }
+            if(std::find(vec_nodes.begin(), vec_nodes.end(), tmp) == vec_nodes.end()) {
+              vec_nodes.push_back( tmp );
+            }
+          }
+          Node exp3;
+          int rt2 = delta( r[i], exp3 );
+          if( rt2 == 0 ) {
+            dnode = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::AND, dnode, exp3));
+          } else if( rt2 == 2 ) {
+            break;
+          }
+        }
+        retNode = vec_nodes.size() == 0 ? d_emptyRegexp :
+              ( vec_nodes.size()==1 ? vec_nodes[0] : NodeManager::currentNM()->mkNode( kind::REGEXP_UNION, vec_nodes ) );
+        if(retNode == d_emptyRegexp) {
+          ret = 2;
+        }
+        break;
+      }
+      case kind::REGEXP_UNION: {
+        std::vector< Node > vec_nodes;
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          Node dc;
+          int rt = derivativeS(r[i], c, dc);
+          if(rt == 0) {
+            ret = 0;
+          }
+          if(rt != 2) {
+            if(std::find(vec_nodes.begin(), vec_nodes.end(), dc) == vec_nodes.end()) {
+              vec_nodes.push_back( dc );
+            }
+          }
+          //Trace("regexp-derive") << "RegExp-derive OR R[" << i << "] " << mkString(r[i]) << " returns " << mkString(dc) << std::endl;
+        }
+        retNode = vec_nodes.size() == 0 ? d_emptyRegexp :
+              ( vec_nodes.size()==1 ? vec_nodes[0] : NodeManager::currentNM()->mkNode( kind::REGEXP_UNION, vec_nodes ) );
+        if(retNode == d_emptyRegexp) {
+          ret = 2;
+        }
+        break;
+      }
+      case kind::REGEXP_INTER: {
+        bool flag = true;
+        bool flag_sg = false;
+        std::vector< Node > vec_nodes;
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          Node dc;
+          int rt = derivativeS(r[i], c, dc);
+          if(rt == 0) {
+            ret = 0;
+          } else if(rt == 2) {
+            flag = false;
+            break;
+          }
+          if(dc == d_sigma_star) {
+            flag_sg = true;
+          } else {
+            if(std::find(vec_nodes.begin(), vec_nodes.end(), dc) == vec_nodes.end()) {
+              vec_nodes.push_back( dc );
+            }
+          }
+        }
+        if(flag) {
+          if(vec_nodes.size() == 0 && flag_sg) {
+            retNode = d_sigma_star;
+          } else {
+            retNode = vec_nodes.size() == 0 ? d_emptyRegexp :
+                  ( vec_nodes.size()==1 ? vec_nodes[0] : NodeManager::currentNM()->mkNode( kind::REGEXP_INTER, vec_nodes ) );
+            if(retNode == d_emptyRegexp) {
+              ret = 2;
+            }
+          }
+        } else {
+          retNode = d_emptyRegexp;
+          ret = 2;
+        }
+        break;
+      }
+      case kind::REGEXP_STAR: {
+        Node dc;
+        ret = derivativeS(r[0], c, dc);
+        retNode = dc==d_emptyRegexp ? dc : (dc==d_emptySingleton ? r : NodeManager::currentNM()->mkNode( kind::REGEXP_CONCAT, dc, r ));
+        break;
+      }
+      case kind::REGEXP_LOOP: {
+        if(r[1] == r[2] && r[1] == d_zero) {
+          ret = 2;
+          //retNode = d_emptyRegexp;
+        } else {
+          Node dc;
+          ret = derivativeS(r[0], c, dc);
+          if(dc==d_emptyRegexp) {
+            unsigned l = r[1].getConst<Rational>().getNumerator().toUnsignedInt();
+            unsigned u = r[2].getConst<Rational>().getNumerator().toUnsignedInt();
+            Node r2 = NodeManager::currentNM()->mkNode(kind::REGEXP_LOOP, r[0], 
+              NodeManager::currentNM()->mkConst(CVC4::Rational(l==0? 0 : (l-1))),
+              NodeManager::currentNM()->mkConst(CVC4::Rational(u-1)));
+            retNode = dc==d_emptySingleton? r2 : NodeManager::currentNM()->mkNode( kind::REGEXP_CONCAT, dc, r2 );
+          } else {
+            retNode = d_emptyRegexp;
+          }
+        }
+        break;
+      }
+      default: {
+        //Trace("strings-error") << "Unsupported term: " << mkString( r ) << " in derivative of RegExp." << std::endl;
+        Unreachable();
+      }
+    }
+    if(retNode != d_emptyRegexp) {
+      retNode = Rewriter::rewrite( retNode );
+    }
+    std::pair< Node, int > p(retNode, ret);
+    d_deriv_cache[dv] = p;
+  }
+
+  Trace("regexp-derive") << "RegExp-derive returns : /" << mkString( retNode ) << "/" << std::endl;
+  return ret;
+}
+
+Node RegExpOpr::derivativeSingle( Node r, CVC4::String c ) {
+  Assert( c.size() < 2 );
+  Trace("regexp-derive") << "RegExp-derive starts with /" << mkString( r ) << "/, c=" << c << std::endl;
+  Node retNode = d_emptyRegexp;
+  PairNodeStr dv = std::make_pair( r, c );
+  if( d_dv_cache.find( dv ) != d_dv_cache.end() ) {
+    retNode = d_dv_cache[dv];
+  } else if( c.isEmptyString() ){
+    Node exp;
+    int tmp = delta( r, exp );
+    if(tmp == 0) {
+      // TODO variable
+      retNode = d_emptyRegexp;
+    } else if(tmp == 1) {
+      retNode = r;
+    } else {
+      retNode = d_emptyRegexp;
+    }
+  } else {
+    int k = r.getKind();
+    switch( k ) {
+      case kind::REGEXP_EMPTY: {
+        retNode = d_emptyRegexp;
+        break;
+      }
+      case kind::REGEXP_SIGMA: {
+        retNode = NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP, d_emptyString );
+        break;
+      }
+      case kind::REGEXP_RANGE: {
+        CVC4::String a = r[0].getConst<String>();
+        CVC4::String b = r[1].getConst<String>();
+        retNode = (a <= c && c <= b) ? d_emptySingleton : d_emptyRegexp;
+        break;
+      }
+      case kind::STRING_TO_REGEXP: {
+        if(r[0].isConst()) {
+          if(r[0] == d_emptyString) {
+            retNode = d_emptyRegexp;
+          } else {
+            if(r[0].getConst< CVC4::String >().getFirstChar() == c.getFirstChar()) {
+              retNode =  NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP,
+                r[0].getConst< CVC4::String >().size() == 1 ? d_emptyString : NodeManager::currentNM()->mkConst( r[0].getConst< CVC4::String >().substr(1) ) );
+            } else {
+              retNode = d_emptyRegexp;
+            }
+          }
+        } else {
+          // TODO variable
+          retNode = d_emptyRegexp;
+        }
+        break;
+      }
+      case kind::REGEXP_CONCAT: {
+        Node rees = NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP, d_emptyString );
+        std::vector< Node > vec_nodes;
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          Node dc = derivativeSingle(r[i], c);
+          if(dc != d_emptyRegexp) {
+            std::vector< Node > vec_nodes2;
+            if(dc != rees) {
+              vec_nodes2.push_back( dc );
+            }
+            for(unsigned j=i+1; j<r.getNumChildren(); ++j) {
+              if(r[j] != rees) {
+                vec_nodes2.push_back( r[j] );
+              }
+            }
+            Node tmp = vec_nodes2.size()==0 ? rees :
+              vec_nodes2.size()==1 ? vec_nodes2[0] : NodeManager::currentNM()->mkNode( kind::REGEXP_CONCAT, vec_nodes2 );
+            if(std::find(vec_nodes.begin(), vec_nodes.end(), tmp) == vec_nodes.end()) {
+              vec_nodes.push_back( tmp );
+            }
+          }
+          Node exp;
+          if( delta( r[i], exp ) != 1 ) {
+            break;
+          }
+        }
+        retNode = vec_nodes.size() == 0 ? d_emptyRegexp :
+              ( vec_nodes.size()==1 ? vec_nodes[0] : NodeManager::currentNM()->mkNode( kind::REGEXP_UNION, vec_nodes ) );
+        break;
+      }
+      case kind::REGEXP_UNION: {
+        std::vector< Node > vec_nodes;
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          Node dc = derivativeSingle(r[i], c);
+          if(dc != d_emptyRegexp) {
+            if(std::find(vec_nodes.begin(), vec_nodes.end(), dc) == vec_nodes.end()) {
+              vec_nodes.push_back( dc );
+            }
+          }
+          //Trace("regexp-derive") << "RegExp-derive OR R[" << i << "] /" << mkString(r[i]) << "/ returns /" << mkString(dc) << "/" << std::endl;
+        }
+        retNode = vec_nodes.size() == 0 ? d_emptyRegexp :
+              ( vec_nodes.size()==1 ? vec_nodes[0] : NodeManager::currentNM()->mkNode( kind::REGEXP_UNION, vec_nodes ) );
+        break;
+      }
+      case kind::REGEXP_INTER: {
+        bool flag = true;
+        bool flag_sg = false;
+        std::vector< Node > vec_nodes;
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          Node dc = derivativeSingle(r[i], c);
+          if(dc != d_emptyRegexp) {
+            if(dc == d_sigma_star) {
+              flag_sg = true;
+            } else {
+              if(std::find(vec_nodes.begin(), vec_nodes.end(), dc) == vec_nodes.end()) {
+                vec_nodes.push_back( dc );
+              }
+            }
+          } else {
+            flag = false;
+            break;
+          }
+        }
+        if(flag) {
+          if(vec_nodes.size() == 0 && flag_sg) {
+            retNode = d_sigma_star;
+          } else {
+            retNode = vec_nodes.size() == 0 ? d_emptyRegexp :
+                  ( vec_nodes.size()==1 ? vec_nodes[0] : NodeManager::currentNM()->mkNode( kind::REGEXP_INTER, vec_nodes ) );
+          }
+        } else {
+          retNode = d_emptyRegexp;
+        }
+        break;
+      }
+      case kind::REGEXP_STAR: {
+        Node dc = derivativeSingle(r[0], c);
+        if(dc != d_emptyRegexp) {
+          retNode = dc==d_emptySingleton? r : NodeManager::currentNM()->mkNode( kind::REGEXP_CONCAT, dc, r );
+        } else {
+          retNode = d_emptyRegexp;
+        }
+        break;
+      }
+      case kind::REGEXP_LOOP: {
+        if(r[1] == r[2] && r[1] == d_zero) {
+          retNode = d_emptyRegexp;
+        } else {
+          Node dc = derivativeSingle(r[0], c);
+          if(dc != d_emptyRegexp) {
+            unsigned l = r[1].getConst<Rational>().getNumerator().toUnsignedInt();
+            unsigned u = r[2].getConst<Rational>().getNumerator().toUnsignedInt();
+            Node r2 = NodeManager::currentNM()->mkNode(kind::REGEXP_LOOP, r[0], 
+              NodeManager::currentNM()->mkConst(CVC4::Rational(l==0? 0 : (l-1))),
+              NodeManager::currentNM()->mkConst(CVC4::Rational(u-1)));
+            retNode = dc==d_emptySingleton? r2 : NodeManager::currentNM()->mkNode( kind::REGEXP_CONCAT, dc, r2 );
+          } else {
+            retNode = d_emptyRegexp;
+          }
+        }
+        //Trace("regexp-derive") << "RegExp-derive : REGEXP_LOOP returns /" << mkString(retNode) << "/" << std::endl;
+        break;
+      }
+      default: {
+        Trace("strings-error") << "Unsupported term: " << mkString( r ) << " in derivative of RegExp." << std::endl;
+        Unreachable();
+      }
+    }
+    if(retNode != d_emptyRegexp) {
+      retNode = Rewriter::rewrite( retNode );
+    }
+    d_dv_cache[dv] = retNode;
+  }
+  Trace("regexp-derive") << "RegExp-derive returns : /" << mkString( retNode ) << "/" << std::endl;
+  return retNode;
+}
+
+//TODO:
+bool RegExpOpr::guessLength( Node r, int &co ) {
+  int k = r.getKind();
+  switch( k ) {
+    case kind::STRING_TO_REGEXP:
+    {
+      if(r[0].isConst()) {
+        co += r[0].getConst< CVC4::String >().size();
+        return true;
+      } else {
+        return false;
+      }
+    }
+      break;
+    case kind::REGEXP_CONCAT:
+    {
+      for(unsigned i=0; i<r.getNumChildren(); ++i) {
+        if(!guessLength( r[i], co)) {
+          return false;
+        }
+      }
+      return true;
+    }
+      break;
+    case kind::REGEXP_UNION:
+    {
+      int g_co;
+      for(unsigned i=0; i<r.getNumChildren(); ++i) {
+        int cop = 0;
+        if(!guessLength( r[i], cop)) {
+          return false;
+        }
+        if(i == 0) {
+          g_co = cop;
+        } else {
+          g_co = gcd(g_co, cop);
+        }
+      }
+      return true;
+    }
+      break;
+    case kind::REGEXP_INTER:
+    {
+      int g_co;
+      for(unsigned i=0; i<r.getNumChildren(); ++i) {
+        int cop = 0;
+        if(!guessLength( r[i], cop)) {
+          return false;
+        }
+        if(i == 0) {
+          g_co = cop;
+        } else {
+          g_co = gcd(g_co, cop);
+        }
+      }
+      return true;
+    }
+      break;
+    case kind::REGEXP_STAR:
+    {
+      co = 0;
+      return true;
+    }
+      break;
+    default:
+      Trace("strings-error") << "Unsupported term: " << mkString( r ) << " in membership of RegExp." << std::endl;
+      return false;
+  }
+}
+
+void RegExpOpr::firstChars( Node r, std::set<unsigned char> &pcset, SetNodes &pvset ) {
+  Trace("regexp-fset") << "Start FSET(" << mkString(r) << ")" << std::endl;
+  std::map< Node, std::pair< std::set<unsigned char>, SetNodes > >::const_iterator itr = d_fset_cache.find(r);
+  if(itr != d_fset_cache.end()) {
+    pcset.insert((itr->second).first.begin(), (itr->second).first.end());
+    pvset.insert((itr->second).second.begin(), (itr->second).second.end());
+  } else {
+    std::set<unsigned char> cset;
+    SetNodes vset;
+    int k = r.getKind();
+    switch( k ) {
+      case kind::REGEXP_EMPTY: {
+        break;
+      }
+      case kind::REGEXP_SIGMA: {
+        for(unsigned char i='\0'; i<=d_lastchar; i++) {
+          cset.insert(i);
+        }
+        break;
+      }
+      case kind::REGEXP_RANGE: {
+        unsigned char a = r[0].getConst<String>().getFirstChar();
+        unsigned char b = r[1].getConst<String>().getFirstChar();
+        for(unsigned char c=a; c<=b; c++) {
+          cset.insert(c);
+        }
+        break;
+      }
+      case kind::STRING_TO_REGEXP: {
+        Node st = Rewriter::rewrite(r[0]);
+        if(st.isConst()) {
+          CVC4::String s = st.getConst< CVC4::String >();
+          if(s.size() != 0) {
+            cset.insert(s.getFirstChar());
+          }
+        } else if(st.getKind() == kind::VARIABLE) {
+          vset.insert( st );
+        } else {
+          if(st[0].isConst()) {
+            CVC4::String s = st[0].getConst< CVC4::String >();
+            cset.insert(s.getFirstChar());
+          } else {
+            vset.insert( st[0] );
+          }
+        }
+        break;
+      }
+      case kind::REGEXP_CONCAT: {
+        for(unsigned i=0; i<r.getNumChildren(); i++) {
+          firstChars(r[i], cset, vset);
+          Node n = r[i];
+          Node exp;
+          int r = delta( n, exp );
+          if(r != 1) {
+            break;
+          }
+        }
+        break;
+      }
+      case kind::REGEXP_UNION: {
+        for(unsigned i=0; i<r.getNumChildren(); i++) {
+          firstChars(r[i], cset, vset);
+        }
+        break;
+      }
+      case kind::REGEXP_INTER: {
+        //TODO: Overapproximation for now
+        //for(unsigned i=0; i<r.getNumChildren(); i++) {
+        // firstChars(r[i], cset, vset);
+        //}
+        firstChars(r[0], cset, vset);
+        break;
+      }
+      case kind::REGEXP_STAR: {
+        firstChars(r[0], cset, vset);
+        break;
+      }
+      case kind::REGEXP_LOOP: {
+        firstChars(r[0], cset, vset);
+        break;
+      }
+      default: {
+        Trace("regexp-error") << "Unsupported term: " << r << " in firstChars." << std::endl;
+        Unreachable();
+      }
+    }
+    pcset.insert(cset.begin(), cset.end());
+    pvset.insert(vset.begin(), vset.end());
+    std::pair< std::set<unsigned char>, SetNodes > p(cset, vset);
+    d_fset_cache[r] = p;
+  }
+
+  if(Trace.isOn("regexp-fset")) {
+    Trace("regexp-fset") << "END FSET(" << mkString(r) << ") = {";
+    for(std::set<unsigned char>::const_iterator itr = pcset.begin();
+      itr != pcset.end(); itr++) {
+        if(itr != pcset.begin()) {
+          Trace("regexp-fset") << ",";
+        }
+        Trace("regexp-fset") << (*itr);
+      }
+    Trace("regexp-fset") << "}" << std::endl;
+  }
+}
+
+bool RegExpOpr::follow( Node r, CVC4::String c, std::vector< unsigned char > &vec_chars ) {
+  int k = r.getKind();
+  switch( k ) {
+    case kind::STRING_TO_REGEXP:
+    {
+      if(r[0].isConst()) {
+        if(r[0] != d_emptyString) {
+          unsigned char t1 = r[0].getConst< CVC4::String >().getFirstChar();
+          if(c.isEmptyString()) {
+            vec_chars.push_back( t1 );
+            return true;
+          } else {
+            unsigned char t2 = c.getFirstChar();
+            if(t1 != t2) {
+              return false;
+            } else {
+              if(c.size() >= 2) {
+                vec_chars.push_back( c.substr(1,1).getFirstChar() );
+              } else {
+                vec_chars.push_back( '\0' );
+              }
+              return true;
+            }
+          }
+        } else {
+          return false;
+        }
+      } else {
+        return false;
+      }
+    }
+      break;
+    case kind::REGEXP_CONCAT:
+    {
+      for(unsigned i=0; i<r.getNumChildren(); ++i) {
+        if( follow(r[i], c, vec_chars) ) {
+          if(vec_chars[vec_chars.size() - 1] == '\0') {
+            vec_chars.pop_back();
+            c = d_emptyString.getConst< CVC4::String >();
+          }
+        } else {
+          return false;
+        }
+      }
+      vec_chars.push_back( '\0' );
+      return true;
+    }
+      break;
+    case kind::REGEXP_UNION:
+    {
+      bool flag = false;
+      for(unsigned i=0; i<r.getNumChildren(); ++i) {
+        if( follow(r[i], c, vec_chars) ) {
+          flag=true;
+        }
+      }
+      return flag;
+    }
+      break;
+    case kind::REGEXP_INTER:
+    {
+      std::vector< unsigned char > vt2;
+      for(unsigned i=0; i<r.getNumChildren(); ++i) {
+        std::vector< unsigned char > v_tmp;
+        if( !follow(r[i], c, v_tmp) ) {
+          return false;
+        }
+        std::vector< unsigned char > vt3(vt2);
+        vt2.clear();
+        std::set_intersection( vt3.begin(), vt3.end(), v_tmp.begin(), v_tmp.end(), vt2.begin() );
+        if(vt2.size() == 0) {
+          return false;
+        }
+      }
+      vec_chars.insert( vec_chars.end(), vt2.begin(), vt2.end() );
+      return true;
+    }
+      break;
+    case kind::REGEXP_STAR:
+    {
+      if(follow(r[0], c, vec_chars)) {
+        if(vec_chars[vec_chars.size() - 1] == '\0') {
+          if(c.isEmptyString()) {
+            return true;
+          } else {
+            vec_chars.pop_back();
+            c = d_emptyString.getConst< CVC4::String >();
+            return follow(r[0], c, vec_chars);
+          }
+        } else {
+          return true;
+        }
+      } else {
+        vec_chars.push_back( '\0' );
+        return true;
+      }
+    }
+      break;
+    default: {
+      Trace("strings-error") << "Unsupported term: " << mkString( r ) << " in follow of RegExp." << std::endl;
+      //AlwaysAssert( false );
+      //return Node::null();
+      return false;
+    }
+  }
+}
+
+Node RegExpOpr::mkAllExceptOne( unsigned char exp_c ) {
+  std::vector< Node > vec_nodes;
+  for(unsigned char c=d_char_start; c<=d_char_end; ++c) {
+    if(c != exp_c ) {
+      Node n = NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP, NodeManager::currentNM()->mkConst( ::CVC4::String( c ) ) );
+      vec_nodes.push_back( n );
+    }
+  }
+  return NodeManager::currentNM()->mkNode( kind::REGEXP_UNION, vec_nodes );
+}
+
+//simplify
+void RegExpOpr::simplify(Node t, std::vector< Node > &new_nodes, bool polarity) {
+  Trace("strings-regexp-simpl") << "RegExp-Simpl starts with " << t << ", polarity=" << polarity << std::endl;
+  Assert(t.getKind() == kind::STRING_IN_REGEXP);
+  Node str = Rewriter::rewrite(t[0]);
+  Node re  = Rewriter::rewrite(t[1]);
+  if(polarity) {
+    simplifyPRegExp( str, re, new_nodes );
+  } else {
+    simplifyNRegExp( str, re, new_nodes );
+  }
+  Trace("strings-regexp-simpl") << "RegExp-Simpl  returns (" << new_nodes.size() << "):\n";
+  for(unsigned i=0; i<new_nodes.size(); i++) {
+    Trace("strings-regexp-simpl") << "\t" << new_nodes[i] << std::endl;
+  }
+}
+void RegExpOpr::simplifyNRegExp( Node s, Node r, std::vector< Node > &new_nodes ) {
+  std::pair < Node, Node > p(s, r);
+  std::map < std::pair< Node, Node >, Node >::const_iterator itr = d_simpl_neg_cache.find(p);
+  if(itr != d_simpl_neg_cache.end()) {
+    new_nodes.push_back( itr->second );
+  } else {
+    int k = r.getKind();
+    Node conc;
+    switch( k ) {
+      case kind::REGEXP_EMPTY: {
+        conc = d_true;
+        break;
+      }
+      case kind::REGEXP_SIGMA: {
+        conc = d_one.eqNode(NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, s)).negate();
+        break;
+      }
+      case kind::REGEXP_RANGE: {
+        std::vector< Node > vec;
+        unsigned char a = r[0].getConst<String>().getFirstChar();
+        unsigned char b = r[1].getConst<String>().getFirstChar();
+        for(unsigned char c=a; c<=b; c++) {
+          Node tmp = s.eqNode( NodeManager::currentNM()->mkConst( CVC4::String(c) ) ).negate();
+          vec.push_back( tmp );
+        }
+        conc = vec.size()==1? vec[0] : NodeManager::currentNM()->mkNode(kind::AND, vec);
+        break;
+      }
+      case kind::STRING_TO_REGEXP: {
+        conc = s.eqNode(r[0]).negate();
+        break;
+      }
+      case kind::REGEXP_CONCAT: {
+        //TODO: rewrite empty
+        Node lens = NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, s);
+        Node b1 = NodeManager::currentNM()->mkBoundVar(NodeManager::currentNM()->integerType());
+        Node b1v = NodeManager::currentNM()->mkNode(kind::BOUND_VAR_LIST, b1);
+        Node g1 = NodeManager::currentNM()->mkNode( kind::AND, NodeManager::currentNM()->mkNode(kind::GEQ, b1, d_zero),
+              NodeManager::currentNM()->mkNode( kind::GEQ, NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, s), b1 ) );
+        Node s1 = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::STRING_SUBSTR, s, d_zero, b1));
+        Node s2 = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::STRING_SUBSTR, s, b1, NodeManager::currentNM()->mkNode(kind::MINUS, lens, b1)));
+        Node s1r1 = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s1, r[0]).negate();
+        if(r[0].getKind() == kind::STRING_TO_REGEXP) {
+          s1r1 = s1.eqNode(r[0][0]).negate();
+        } else if(r[0].getKind() == kind::REGEXP_EMPTY) {
+          s1r1 = d_true;
+        }
+        Node r2 = r[1];
+        if(r.getNumChildren() > 2) {
+          std::vector< Node > nvec;
+          for(unsigned i=1; i<r.getNumChildren(); i++) {
+            nvec.push_back( r[i] );
+          }
+          r2 = NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, nvec);
+        }
+        r2 = Rewriter::rewrite(r2);
+        Node s2r2 = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s2, r2).negate();
+        if(r2.getKind() == kind::STRING_TO_REGEXP) {
+          s2r2 = s2.eqNode(r2[0]).negate();
+        } else if(r2.getKind() == kind::REGEXP_EMPTY) {
+          s2r2 = d_true;
+        }
+
+        conc = NodeManager::currentNM()->mkNode(kind::OR, s1r1, s2r2);
+        conc = NodeManager::currentNM()->mkNode(kind::IMPLIES, g1, conc);
+        conc = NodeManager::currentNM()->mkNode(kind::FORALL, b1v, conc);
+        break;
+      }
+      case kind::REGEXP_UNION: {
+        std::vector< Node > c_and;
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          if(r[i].getKind() == kind::STRING_TO_REGEXP) {
+            c_and.push_back( r[i][0].eqNode(s).negate() );
+          } else if(r[i].getKind() == kind::REGEXP_EMPTY) {
+            continue;
+          } else {
+            c_and.push_back(NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s, r[i]).negate());
+          }
+        }
+        conc = c_and.size() == 0 ? d_true :
+            c_and.size() == 1 ? c_and[0] : NodeManager::currentNM()->mkNode(kind::AND, c_and);
+        break;
+      }
+      case kind::REGEXP_INTER: {
+        bool emptyflag = false;
+        std::vector< Node > c_or;
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          if(r[i].getKind() == kind::STRING_TO_REGEXP) {
+            c_or.push_back( r[i][0].eqNode(s).negate() );
+          } else if(r[i].getKind() == kind::REGEXP_EMPTY) {
+            emptyflag = true;
+            break;
+          } else {
+            c_or.push_back(NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s, r[i]).negate());
+          }
+        }
+        if(emptyflag) {
+          conc = d_true;
+        } else {
+          conc = c_or.size() == 1 ? c_or[0] : NodeManager::currentNM()->mkNode(kind::OR, c_or);
+        }
+        break;
+      }
+      case kind::REGEXP_STAR: {
+        if(s == d_emptyString) {
+          conc = d_false;
+        } else if(r[0].getKind() == kind::REGEXP_EMPTY) {
+          conc = s.eqNode(d_emptyString).negate();
+        } else if(r[0].getKind() == kind::REGEXP_SIGMA) {
+          conc = d_false;
+        } else {
+          Node lens = NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, s);
+          Node sne = s.eqNode(d_emptyString).negate();
+          Node b1 = NodeManager::currentNM()->mkBoundVar(NodeManager::currentNM()->integerType());
+          Node b1v = NodeManager::currentNM()->mkNode(kind::BOUND_VAR_LIST, b1);
+          Node g1 = NodeManager::currentNM()->mkNode( kind::AND, NodeManager::currentNM()->mkNode(kind::GEQ, b1, d_one),
+                NodeManager::currentNM()->mkNode( kind::GEQ, lens, b1 ) );
+          //internal
+          Node s1 = NodeManager::currentNM()->mkNode(kind::STRING_SUBSTR, s, d_zero, b1);
+          Node s2 = NodeManager::currentNM()->mkNode(kind::STRING_SUBSTR, s, b1, NodeManager::currentNM()->mkNode(kind::MINUS, lens, b1));
+          Node s1r1 = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s1, r[0]).negate();
+          Node s2r2 = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s2, r).negate();
+
+          conc = NodeManager::currentNM()->mkNode(kind::OR, s1r1, s2r2);
+          conc = NodeManager::currentNM()->mkNode(kind::IMPLIES, g1, conc);
+          conc = NodeManager::currentNM()->mkNode(kind::FORALL, b1v, conc);
+          conc = NodeManager::currentNM()->mkNode(kind::AND, sne, conc);
+        }
+        break;
+      }
+      case kind::REGEXP_LOOP: {
+        Assert(r.getNumChildren() == 3);
+        if(r[1] == r[2]) {
+          if(r[1] == d_zero) {
+            conc = s.eqNode(d_emptyString).negate();
+          } else if(r[1] == d_one) {
+            conc = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s, r[0]).negate();
+          } else {
+            //unroll for now
+            unsigned l = r[1].getConst<Rational>().getNumerator().toUnsignedInt();
+            std::vector<Node> vec;
+            for(unsigned i=0; i<l; i++) {
+              vec.push_back(r[0]);
+            }
+            Node r2 = NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, vec);
+            conc = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s, r2).negate();
+          }
+        } else {
+          Assert(r[1] == d_zero);
+          //unroll for now
+          unsigned u = r[2].getConst<Rational>().getNumerator().toUnsignedInt();
+          std::vector<Node> vec;
+          vec.push_back(d_emptySingleton);
+          std::vector<Node> vec2;
+          for(unsigned i=1; i<=u; i++) {
+            vec2.push_back(r[0]);
+            Node r2 = i==1? r[0] : NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, vec);
+            vec.push_back(r2);
+          }
+          Node r3 = NodeManager::currentNM()->mkNode(kind::REGEXP_UNION, vec);
+          conc = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s, r3).negate();
+        }
+        break;
+      }
+      default: {
+        Trace("strings-error") << "Unsupported term: " << r << " in simplifyNRegExp." << std::endl;
+        Assert( false, "Unsupported Term" );
+      }
+    }
+    conc = Rewriter::rewrite( conc );
+    new_nodes.push_back( conc );
+    d_simpl_neg_cache[p] = conc;
+  }
+}
+void RegExpOpr::simplifyPRegExp( Node s, Node r, std::vector< Node > &new_nodes ) {
+  std::pair < Node, Node > p(s, r);
+  std::map < std::pair< Node, Node >, Node >::const_iterator itr = d_simpl_cache.find(p);
+  if(itr != d_simpl_cache.end()) {
+    new_nodes.push_back( itr->second );
+  } else {
+    int k = r.getKind();
+    Node conc;
+    switch( k ) {
+      case kind::REGEXP_EMPTY: {
+        conc = d_false;
+        break;
+      }
+      case kind::REGEXP_SIGMA: {
+        conc = d_one.eqNode(NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, s));
+        break;
+      }
+      case kind::REGEXP_RANGE: {
+        conc = s.eqNode( r[0] );
+        if(r[0] != r[1]) {
+          unsigned char a = r[0].getConst<String>().getFirstChar();
+          unsigned char b = r[1].getConst<String>().getFirstChar();
+          a += 1;
+          Node tmp = a!=b? NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s,
+            NodeManager::currentNM()->mkNode(kind::REGEXP_RANGE,
+              NodeManager::currentNM()->mkConst( CVC4::String(a) ),
+              r[1])) :
+            s.eqNode(r[1]);
+          conc = NodeManager::currentNM()->mkNode(kind::OR, conc, tmp);
+        }
+        /*
+        unsigned char a = r[0].getConst<String>().getFirstChar();
+        unsigned char b = r[1].getConst<String>().getFirstChar();
+        std::vector< Node > vec;
+        for(unsigned char c=a; c<=b; c++) {
+          Node t2 = s.eqNode( NodeManager::currentNM()->mkConst( CVC4::String(c) ));
+          vec.push_back( t2 );
+        }
+        conc = vec.empty()? d_emptySingleton : vec.size()==1? vec[0] : NodeManager::currentNM()->mkNode(kind::OR, vec);
+        */
+        break;
+      }
+      case kind::STRING_TO_REGEXP: {
+        conc = s.eqNode(r[0]);
+        break;
+      }
+      case kind::REGEXP_CONCAT: {
+        std::vector< Node > nvec;
+        std::vector< Node > cc;
+        bool emptyflag = false;
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          if(r[i].getKind() == kind::STRING_TO_REGEXP) {
+            cc.push_back( r[i][0] );
+          } else if(r[i].getKind() == kind::REGEXP_EMPTY) {
+            emptyflag = true;
+            break;
+          } else {
+            Node sk = NodeManager::currentNM()->mkSkolem( "rc", s.getType(), "created for regular expression concat" );
+            Node lem = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, sk, r[i]);
+            nvec.push_back(lem);
+            cc.push_back(sk);
+          }
+        }
+        if(emptyflag) {
+          conc = d_false;
+        } else {
+          Node lem = s.eqNode( NodeManager::currentNM()->mkNode(kind::STRING_CONCAT, cc) );
+          nvec.push_back(lem);
+          conc = nvec.size() == 1 ? nvec[0] : NodeManager::currentNM()->mkNode(kind::AND, nvec);
+        }
+        break;
+      }
+      case kind::REGEXP_UNION: {
+        std::vector< Node > c_or;
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          if(r[i].getKind() == kind::STRING_TO_REGEXP) {
+            c_or.push_back( r[i][0].eqNode(s) );
+          } else if(r[i].getKind() == kind::REGEXP_EMPTY) {
+            continue;
+          } else {
+            c_or.push_back(NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s, r[i]));
+          }
+        }
+        conc = c_or.size() == 0 ? d_false :
+            c_or.size() == 1 ? c_or[0] : NodeManager::currentNM()->mkNode(kind::OR, c_or);
+        break;
+      }
+      case kind::REGEXP_INTER: {
+        std::vector< Node > c_and;
+        bool emptyflag = false;
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          if(r[i].getKind() == kind::STRING_TO_REGEXP) {
+            c_and.push_back( r[i][0].eqNode(s) );
+          } else if(r[i].getKind() == kind::REGEXP_EMPTY) {
+            emptyflag = true;
+            break;
+          } else {
+            c_and.push_back(NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s, r[i]));
+          }
+        }
+        if(emptyflag) {
+          conc = d_false;
+        } else {
+          conc = c_and.size() == 1 ? c_and[0] : NodeManager::currentNM()->mkNode(kind::AND, c_and);
+        }
+        break;
+      }
+      case kind::REGEXP_STAR: {
+        if(s == d_emptyString) {
+          conc = d_true;
+        } else if(r[0].getKind() == kind::REGEXP_EMPTY) {
+          conc = s.eqNode(d_emptyString);
+        } else if(r[0].getKind() == kind::REGEXP_SIGMA) {
+          conc = d_true;
+        } else {
+          Node se = s.eqNode(d_emptyString);
+          Node sinr = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s, r[0]);
+          Node sk1 = NodeManager::currentNM()->mkSkolem( "rs", s.getType(), "created for regular expression star" );
+          Node sk2 = NodeManager::currentNM()->mkSkolem( "rs", s.getType(), "created for regular expression star" );
+          Node s1nz = sk1.eqNode(d_emptyString).negate();
+          Node s2nz = sk2.eqNode(d_emptyString).negate();
+          Node s1inr = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, sk1, r[0]);
+          Node s2inrs = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, sk2, r);
+          Node s12 = s.eqNode(NodeManager::currentNM()->mkNode(kind::STRING_CONCAT, sk1, sk2));
+
+          conc = NodeManager::currentNM()->mkNode(kind::AND, s12, s1nz, s2nz, s1inr, s2inrs);
+          conc = NodeManager::currentNM()->mkNode(kind::OR, se, sinr, conc);
+        }
+        break;
+      }
+      case kind::REGEXP_LOOP: {
+        Assert(r.getNumChildren() == 3);
+        if(r[1] == d_zero) {
+          if(r[2] == d_zero) {
+            conc = s.eqNode( d_emptyString );
+          } else {
+            //R{0,n}
+            if(s != d_emptyString) {
+              Node sk1 = NodeManager::currentNM()->mkSkolem( "lps", s.getType(), "created for regular expression loop" );
+              Node sk2 = NodeManager::currentNM()->mkSkolem( "lps", s.getType(), "created for regular expression loop" );
+              Node seq12 = s.eqNode(NodeManager::currentNM()->mkNode(kind::STRING_CONCAT, sk1, sk2));
+              Node sk1ne = sk1.eqNode(d_emptyString).negate();
+              Node sk1inr = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, sk1, r[0]);
+              unsigned u = r[2].getConst<Rational>().getNumerator().toUnsignedInt();
+              Node u1 = NodeManager::currentNM()->mkConst(CVC4::Rational(u - 1));
+              Node sk2inru = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, sk2,
+                NodeManager::currentNM()->mkNode(kind::REGEXP_LOOP, r[0], d_zero, u1));
+              conc = NodeManager::currentNM()->mkNode(kind::AND, seq12, sk1ne, sk1inr, sk2inru);
+              conc = NodeManager::currentNM()->mkNode(kind::OR,
+                s.eqNode(d_emptyString), conc);
+            } else {
+              conc = d_true;
+            }
+          }
+        } else {
+          //R^n
+          Node sk1 = NodeManager::currentNM()->mkSkolem( "lps", s.getType(), "created for regular expression loop" );
+          Node sk2 = NodeManager::currentNM()->mkSkolem( "lps", s.getType(), "created for regular expression loop" );
+          Node seq12 = s.eqNode(NodeManager::currentNM()->mkNode(kind::STRING_CONCAT, sk1, sk2));
+          Node sk1ne = sk1.eqNode(d_emptyString).negate();
+          Node sk1inr = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, sk1, r[0]);
+          unsigned u = r[2].getConst<Rational>().getNumerator().toUnsignedInt();
+          Node u1 = NodeManager::currentNM()->mkConst(CVC4::Rational(u - 1));
+          Node sk2inru = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, sk2,
+            NodeManager::currentNM()->mkNode(kind::REGEXP_LOOP, r[0], u1, u1));
+          conc = NodeManager::currentNM()->mkNode(kind::AND, seq12, sk1ne, sk1inr, sk2inru);
+        }
+        break;
+      }
+      default: {
+        Trace("strings-error") << "Unsupported term: " << r << " in simplifyPRegExp." << std::endl;
+        Assert( false, "Unsupported Term" );
+      }
+    }
+    conc = Rewriter::rewrite( conc );
+    new_nodes.push_back( conc );
+    d_simpl_cache[p] = conc;
+  }
+}
+
+void RegExpOpr::getCharSet( Node r, std::set<unsigned char> &pcset, SetNodes &pvset ) {
+  std::map< Node, std::pair< std::set<unsigned char>, SetNodes > >::const_iterator itr = d_cset_cache.find(r);
+  if(itr != d_cset_cache.end()) {
+    pcset.insert((itr->second).first.begin(), (itr->second).first.end());
+    pvset.insert((itr->second).second.begin(), (itr->second).second.end());
+  } else {
+    std::set<unsigned char> cset;
+    SetNodes vset;
+    int k = r.getKind();
+    switch( k ) {
+      case kind::REGEXP_EMPTY: {
+        break;
+      }
+      case kind::REGEXP_SIGMA: {
+        for(unsigned char i='\0'; i<=d_lastchar; i++) {
+          cset.insert(i);
+        }
+        break;
+      }
+      case kind::REGEXP_RANGE: {
+        unsigned char a = r[0].getConst<String>().getFirstChar();
+        unsigned char b = r[1].getConst<String>().getFirstChar();
+        for(unsigned char i=a; i<=b; i++) {
+          cset.insert(i);
+        }
+        break;
+      }
+      case kind::STRING_TO_REGEXP: {
+        Node st = Rewriter::rewrite(r[0]);
+        if(st.isConst()) {
+          CVC4::String s = st.getConst< CVC4::String >();
+          s.getCharSet( cset );
+        } else if(st.getKind() == kind::VARIABLE) {
+          vset.insert( st );
+        } else {
+          for(unsigned i=0; i<st.getNumChildren(); i++) {
+            if(st[i].isConst()) {
+              CVC4::String s = st[i].getConst< CVC4::String >();
+              s.getCharSet( cset );
+            } else {
+              vset.insert( st[i] );
+            }
+          }
+        }
+        break;
+      }
+      case kind::REGEXP_CONCAT: {
+        for(unsigned i=0; i<r.getNumChildren(); i++) {
+          getCharSet(r[i], cset, vset);
+        }
+        break;
+      }
+      case kind::REGEXP_UNION: {
+        for(unsigned i=0; i<r.getNumChildren(); i++) {
+          getCharSet(r[i], cset, vset);
+        }
+        break;
+      }
+      case kind::REGEXP_INTER: {
+        //TODO: Overapproximation for now
+        //for(unsigned i=0; i<r.getNumChildren(); i++) {
+          //getCharSet(r[i], cset, vset);
+        //}
+        getCharSet(r[0], cset, vset);
+        break;
+      }
+      case kind::REGEXP_STAR: {
+        getCharSet(r[0], cset, vset);
+        break;
+      }
+      case kind::REGEXP_LOOP: {
+        getCharSet(r[0], cset, vset);
+        break;
+      }
+      default: {
+        //Trace("strings-error") << "Unsupported term: " << r << " in getCharSet." << std::endl;
+        Unreachable();
+      }
+    }
+    pcset.insert(cset.begin(), cset.end());
+    pvset.insert(vset.begin(), vset.end());
+    std::pair< std::set<unsigned char>, SetNodes > p(cset, vset);
+    d_cset_cache[r] = p;
+
+    Trace("regexp-cset") << "CSET( " << mkString(r) << " ) = { ";
+    for(std::set<unsigned char>::const_iterator itr = cset.begin();
+      itr != cset.end(); itr++) {
+        Trace("regexp-cset") << (*itr) << ",";
+      }
+    Trace("regexp-cset") << " }" << std::endl;
+  }
+}
+
+bool RegExpOpr::isPairNodesInSet(std::set< PairNodes > &s, Node n1, Node n2) {
+  for(std::set< PairNodes >::const_iterator itr = s.begin();
+      itr != s.end(); ++itr) {
+    if((itr->first == n1 && itr->second == n2) ||
+       (itr->first == n2 && itr->second == n1)) {
+      return true;
+    }
+  }
+  return false;
+}
+
+bool RegExpOpr::containC2(unsigned cnt, Node n) {
+  if(n.getKind() == kind::REGEXP_RV) {
+    Assert(n[0].getConst<Rational>() <= RMAXINT, "Exceeded LONG_MAX in RegExpOpr::containC2");
+    unsigned y = n[0].getConst<Rational>().getNumerator().toUnsignedInt();
+    return cnt == y;
+  } else if(n.getKind() == kind::REGEXP_CONCAT) {
+    for( unsigned i=0; i<n.getNumChildren(); i++ ) {
+      if(containC2(cnt, n[i])) {
+        return true;
+      }
+    }
+  } else if(n.getKind() == kind::REGEXP_STAR) {
+    return containC2(cnt, n[0]);
+  } else if(n.getKind() == kind::REGEXP_LOOP) {
+    return containC2(cnt, n[0]);
+  } else if(n.getKind() == kind::REGEXP_UNION) {
+    for( unsigned i=0; i<n.getNumChildren(); i++ ) {
+      if(containC2(cnt, n[i])) {
+        return true;
+      }
+    }
+  }
+  return false;
+}
+Node RegExpOpr::convert1(unsigned cnt, Node n) {
+  Trace("regexp-debug") << "Converting " << n << " at " << cnt << "... " << std::endl;
+  Node r1, r2;
+  convert2(cnt, n, r1, r2);
+  Trace("regexp-debug") << "... getting r1=" << r1 << ", and r2=" << r2 << std::endl;
+  Node ret = r1==d_emptySingleton ? r2 : NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, 
+     NodeManager::currentNM()->mkNode(kind::REGEXP_STAR, r1), r2);
+  ret = Rewriter::rewrite( ret );
+  Trace("regexp-debug") << "... done convert at " << cnt << ", with return " << ret << std::endl;
+  return ret;
+}
+void RegExpOpr::convert2(unsigned cnt, Node n, Node &r1, Node &r2) {
+  if(n == d_emptyRegexp) {
+    r1 = d_emptyRegexp;
+    r2 = d_emptyRegexp;
+  } else if(n == d_emptySingleton) {
+    r1 = d_emptySingleton;
+    r2 = d_emptySingleton;
+  } else if(n.getKind() == kind::REGEXP_RV) {
+    Assert(n[0].getConst<Rational>() <= RMAXINT, "Exceeded LONG_MAX in RegExpOpr::convert2");
+    unsigned y = n[0].getConst<Rational>().getNumerator().toUnsignedInt();
+    r1 = d_emptySingleton;
+    if(cnt == y) {
+      r2 = d_emptyRegexp;
+    } else {
+      r2 = n;
+    }
+  } else if(n.getKind() == kind::REGEXP_CONCAT) {
+    bool flag = true;
+    std::vector<Node> vr1, vr2;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ) {
+      if(containC2(cnt, n[i])) {
+        Node t1, t2;
+        convert2(cnt, n[i], t1, t2);
+        vr1.push_back(t1);
+        r1 = vr1.size()==0 ? d_emptyRegexp : vr1.size()==1 ? vr1[0] :
+             NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, vr1);
+        vr2.push_back(t2);
+        for( unsigned j=i+1; j<n.getNumChildren(); j++ ) {
+          vr2.push_back(n[j]);
+        }
+        r2 = vr2.size()==0 ? d_emptyRegexp : vr2.size()==1 ? vr2[0] :
+             NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, vr2);
+        flag = false;
+        break;
+      } else {
+        vr1.push_back(n[i]);
+      }
+    }
+    if(flag) {
+      r1 = d_emptySingleton;
+      r2 = n;
+    }
+  } else if(n.getKind() == kind::REGEXP_UNION) {
+    std::vector<Node> vr1, vr2;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ) {
+      Node t1, t2;
+      convert2(cnt, n[i], t1, t2);
+      vr1.push_back(t1);
+      vr2.push_back(t2);
+    }
+    r1 = NodeManager::currentNM()->mkNode(kind::REGEXP_UNION, vr1);
+    r2 = NodeManager::currentNM()->mkNode(kind::REGEXP_UNION, vr2);
+  } else if(n.getKind() == kind::STRING_TO_REGEXP || n.getKind() == kind::REGEXP_SIGMA || n.getKind() == kind::REGEXP_RANGE) {
+      r1 = d_emptySingleton;
+      r2 = n;
+  } else if(n.getKind() == kind::REGEXP_LOOP) {
+    //TODO:LOOP
+    r1 = d_emptySingleton;
+    r2 = n;
+    //Unreachable();
+  } else {
+    //is it possible?
+    Unreachable();
+  }
+}
+
+bool RegExpOpr::testNoRV(Node r) {
+  std::map< Node, bool >::const_iterator itr = d_norv_cache.find(r);
+  if(itr != d_norv_cache.end()) {
+    return itr->second;
+  } else {
+    if(r.getKind() == kind::REGEXP_RV) {
+      return false;
+    } else if(r.getNumChildren() > 1) {
+      for(unsigned int i=0; i<r.getNumChildren(); i++) {
+        if(!testNoRV(r[i])) {
+          return false;
+        }
+      }
+    }
+    return true;
+  }
+}
+
+Node RegExpOpr::intersectInternal( Node r1, Node r2, std::map< PairNodes, Node > cache, unsigned cnt ) {
+  //Assert(checkConstRegExp(r1) && checkConstRegExp(r2));
+  if(r1 > r2) {
+    TNode tmpNode = r1;
+    r1 = r2;
+    r2 = tmpNode;
+  }
+  Trace("regexp-int") << "Starting INTERSECT(" << cnt << "):\n  "<< mkString(r1) << ",\n  " << mkString(r2) << std::endl;
+  //if(Trace.isOn("regexp-debug")) {
+  //  Trace("regexp-debug") << "... with cache:\n";
+  //  for(std::map< PairNodes, Node >::const_iterator itr=cache.begin();
+  //      itr!=cache.end();itr++) {
+  //        Trace("regexp-debug") << "(" << itr->first.first << "," << itr->first.second << ")->" << itr->second << std::endl;
+  //      }
+  //}
+  std::pair < Node, Node > p(r1, r2);
+  std::map < PairNodes, Node >::const_iterator itr = d_inter_cache.find(p);
+  Node rNode;
+  if(itr != d_inter_cache.end()) {
+    rNode = itr->second;
+  } else {
+    Trace("regexp-int-debug") << " ... not in cache" << std::endl;
+    if(r1 == d_emptyRegexp || r2 == d_emptyRegexp) {
+      Trace("regexp-int-debug") << " ... one is empty set" << std::endl;
+      rNode = d_emptyRegexp;
+    } else if(r1 == d_emptySingleton || r2 == d_emptySingleton) {
+      Trace("regexp-int-debug") << " ... one is empty singleton" << std::endl;
+      Node exp;
+      int r = delta((r1 == d_emptySingleton ? r2 : r1), exp);
+      if(r == 0) {
+        //TODO: variable
+        Unreachable();
+      } else if(r == 1) {
+        rNode = d_emptySingleton;
+      } else {
+        rNode = d_emptyRegexp;
+      }
+    } else if(r1 == r2) {
+      Trace("regexp-int-debug") << " ... equal" << std::endl;
+      rNode = r1; //convert1(cnt, r1);
+    } else {
+      Trace("regexp-int-debug") << " ... normal checking" << std::endl;
+      std::map< PairNodes, Node >::const_iterator itrcache = cache.find(p);
+      if(itrcache != cache.end()) {
+        rNode = itrcache->second;
+      } else {
+        Trace("regexp-int-debug") << " ... normal without cache" << std::endl;
+        std::vector< unsigned char > cset;
+        std::set< unsigned char > cset1, cset2;
+        std::set< Node > vset1, vset2;
+        firstChars(r1, cset1, vset1);
+        firstChars(r2, cset2, vset2);
+        Trace("regexp-int-debug") << " ... got fset" << std::endl;
+        std::set_intersection(cset1.begin(), cset1.end(), cset2.begin(), cset2.end(),
+             std::inserter(cset, cset.begin()));
+        std::vector< Node > vec_nodes;
+        Node delta_exp;
+        Trace("regexp-int-debug") << " ... try delta" << std::endl;
+        int flag = delta(r1, delta_exp);
+        int flag2 = delta(r2, delta_exp);
+        Trace("regexp-int-debug") << " ... delta1=" << flag << ", delta2=" << flag2 << std::endl;
+        if(flag != 2 && flag2 != 2) {
+          if(flag == 1 && flag2 == 1) {
+            vec_nodes.push_back(d_emptySingleton);
+          } else {
+            //TODO: variable
+            Unreachable();
+          }
+        }
+        if(Trace.isOn("regexp-int-debug")) {
+          Trace("regexp-int-debug") << "Try CSET(" << cset.size() << ") = {";
+          for(std::vector<unsigned char>::const_iterator itr = cset.begin();
+            itr != cset.end(); itr++) {
+            //CVC4::String c( *itr );
+            if(itr != cset.begin()) {
+              Trace("regexp-int-debug") << ", ";
+            }
+            Trace("regexp-int-debug") << ( *itr );
+          }
+          Trace("regexp-int-debug") << std::endl;
+        }
+        std::map< PairNodes, Node > cacheX;
+        for(std::vector<unsigned char>::const_iterator itr = cset.begin();
+          itr != cset.end(); itr++) {
+          CVC4::String c( *itr );
+          Trace("regexp-int-debug") << "Try character " << c << " ... " << std::endl;
+          Node r1l = derivativeSingle(r1, c);
+          Node r2l = derivativeSingle(r2, c);
+          Trace("regexp-int-debug") << "  ... got partial(r1,c) = " << mkString(r1l) << std::endl;
+          Trace("regexp-int-debug") << "  ... got partial(r2,c) = " << mkString(r2l) << std::endl;
+          Node rt;
+          
+          if(r1l > r2l) {
+            Node tnode = r1l;
+            r1l = r2l; r2l = tnode;
+          }
+          PairNodes pp(r1l, r2l);
+          std::map< PairNodes, Node >::const_iterator itr2 = cacheX.find(pp);
+          if(itr2 != cacheX.end()) {
+            rt = itr2->second;
+          } else {
+            std::map< PairNodes, Node > cache2(cache);
+            cache2[ p ] = NodeManager::currentNM()->mkNode(kind::REGEXP_RV, NodeManager::currentNM()->mkConst(CVC4::Rational(cnt)));
+            rt = intersectInternal(r1l, r2l, cache2, cnt+1);
+            cacheX[ pp ] = rt;
+          }
+
+          rt = Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT,
+            NodeManager::currentNM()->mkNode(kind::STRING_TO_REGEXP, NodeManager::currentNM()->mkConst(c)), rt) );
+
+          Trace("regexp-int-debug") << "  ... got p(r1,c) && p(r2,c) = " << mkString(rt) << std::endl;
+          vec_nodes.push_back(rt);
+        }
+        rNode = Rewriter::rewrite( vec_nodes.size()==0 ? d_emptyRegexp : vec_nodes.size()==1 ? vec_nodes[0] :
+            NodeManager::currentNM()->mkNode(kind::REGEXP_UNION, vec_nodes) );
+        rNode = convert1(cnt, rNode);
+        rNode = Rewriter::rewrite( rNode );
+      }
+    }
+    Trace("regexp-int-debug") << "  ... try testing no RV of " << mkString(rNode) << std::endl;
+    if(testNoRV(rNode)) {
+      d_inter_cache[p] = rNode;
+    }
+  }
+  Trace("regexp-int") << "End(" << cnt << ") of INTERSECT( " << mkString(r1) << ", " << mkString(r2) << " ) = " << mkString(rNode) << std::endl;
+  return rNode;
+}
+
+Node RegExpOpr::removeIntersection(Node r) {
+  Assert( checkConstRegExp(r) );
+  std::map < Node, Node >::const_iterator itr = d_rm_inter_cache.find(r);
+  Node retNode;
+  if(itr != d_rm_inter_cache.end()) {
+    retNode = itr->second;
+  } else {
+    switch(r.getKind()) {
+      case kind::REGEXP_EMPTY: {
+        retNode = r;
+        break;
+      }
+      case kind::REGEXP_SIGMA: {
+        retNode = r;
+        break;
+      }
+      case kind::REGEXP_RANGE: {
+        retNode = r;
+        break;
+      }
+      case kind::STRING_TO_REGEXP: {
+        retNode = r;
+        break;
+      }
+      case kind::REGEXP_CONCAT: {
+        std::vector< Node > vec_nodes;
+        for(unsigned i=0; i<r.getNumChildren(); i++) {
+          Node tmpNode = removeIntersection( r[i] );
+          vec_nodes.push_back( tmpNode );
+        }
+        retNode = Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, vec_nodes) );
+        break;
+      }
+      case kind::REGEXP_UNION: {
+        std::vector< Node > vec_nodes;
+        for(unsigned i=0; i<r.getNumChildren(); i++) {
+          Node tmpNode = removeIntersection( r[i] );
+          vec_nodes.push_back( tmpNode );
+        }
+        retNode = Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::REGEXP_UNION, vec_nodes) );
+        break;
+      }
+      case kind::REGEXP_INTER: {
+        retNode = removeIntersection( r[0] );
+        for(unsigned i=1; i<r.getNumChildren(); i++) {
+          bool spflag = false;
+          Node tmpNode = removeIntersection( r[i] );
+          retNode = intersect( retNode, tmpNode, spflag );
+        }
+        break;
+      }
+      case kind::REGEXP_STAR: {
+        retNode = removeIntersection( r[0] );
+        retNode = Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::REGEXP_STAR, retNode) );
+        break;
+      }
+      case kind::REGEXP_LOOP: {
+        retNode = removeIntersection( r[0] );
+        retNode = Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::REGEXP_LOOP, retNode, r[1], r[2]) );
+        break;
+      }
+      default: {
+        Unreachable();
+      }
+    }
+    d_rm_inter_cache[r] = retNode;
+  }
+  Trace("regexp-intersect") << "Remove INTERSECTION( " << mkString(r) << " ) = " << mkString(retNode) << std::endl;
+  return retNode;
+}
+
+Node RegExpOpr::intersect(Node r1, Node r2, bool &spflag) {
+  if(checkConstRegExp(r1) && checkConstRegExp(r2)) {
+    Node rr1 = removeIntersection(r1);
+    Node rr2 = removeIntersection(r2);
+    std::map< PairNodes, Node > cache;
+    Trace("regexp-intersect") << "Start INTERSECTION(\n\t" << mkString(r1) << ",\n\t"<< mkString(r2) << ")" << std::endl;
+    Node retNode = intersectInternal(rr1, rr2, cache, 1);
+    Trace("regexp-intersect") << "End INTERSECTION(\n\t" << mkString(r1) << ",\n\t"<< mkString(r2) << ") =\n\t" << mkString(retNode) << std::endl;
+    return retNode;
+  } else {
+    spflag = true;
+    return Node::null();
+  }
+}
+
+Node RegExpOpr::complement(Node r, int &ret) {
+  Node rNode;
+  ret = 1;
+  if(d_compl_cache.find(r) != d_compl_cache.end()) {
+    rNode = d_compl_cache[r].first;
+    ret = d_compl_cache[r].second;
+  } else {
+    if(r == d_emptyRegexp) {
+      rNode = d_sigma_star;
+    } else if(r == d_emptySingleton) {
+      rNode = NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, d_sigma, d_sigma_star);
+    } else if(!checkConstRegExp(r)) {
+      //TODO: var to be extended
+      ret = 0;
+    } else {
+      std::set<unsigned char> cset;
+      SetNodes vset;
+      firstChars(r, cset, vset);
+      std::vector< Node > vec_nodes;
+      for(unsigned char i=0; i<=d_lastchar; i++) {
+        CVC4::String c(i);
+        Node n = NodeManager::currentNM()->mkNode(kind::STRING_TO_REGEXP, NodeManager::currentNM()->mkConst(c));
+        Node r2;
+        if(cset.find(i) == cset.end()) {
+          r2 = d_sigma_star;
+        } else {
+          int rt;
+          derivativeS(r, c, r2);
+          if(r2 == r) {
+            r2 = d_emptyRegexp;
+          } else {
+            r2 = complement(r2, rt);
+          }
+        }
+        n = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, n, r2));
+        vec_nodes.push_back(n);
+      }
+      rNode = vec_nodes.size()==0? d_emptyRegexp : vec_nodes.size()==1? vec_nodes[0] :
+            NodeManager::currentNM()->mkNode(kind::REGEXP_UNION, vec_nodes);
+    }
+    rNode = Rewriter::rewrite(rNode);
+    std::pair< Node, int > p(rNode, ret);
+    d_compl_cache[r] = p;
+  }
+  Trace("regexp-compl") << "COMPL( " << mkString(r) << " ) = " << mkString(rNode) << ", ret=" << ret << std::endl;
+  return rNode;
+}
+
+void RegExpOpr::splitRegExp(Node r, std::vector< PairNodes > &pset) {
+  Assert(checkConstRegExp(r));
+  if(d_split_cache.find(r) != d_split_cache.end()) {
+    pset = d_split_cache[r];
+  } else {
+    switch( r.getKind() ) {
+      case kind::REGEXP_EMPTY: {
+        break;
+      }
+      case kind::REGEXP_OPT: {
+        PairNodes tmp(d_emptySingleton, d_emptySingleton);
+        pset.push_back(tmp);
+      }
+      case kind::REGEXP_RANGE:
+      case kind::REGEXP_SIGMA: {
+        PairNodes tmp1(d_emptySingleton, r);
+        PairNodes tmp2(r, d_emptySingleton);
+        pset.push_back(tmp1);
+        pset.push_back(tmp2);
+        break;
+      }
+      case kind::STRING_TO_REGEXP: {
+        Assert(r[0].isConst());
+        CVC4::String s = r[0].getConst< CVC4::String >();
+        PairNodes tmp1(d_emptySingleton, r);
+        pset.push_back(tmp1);
+        for(unsigned i=1; i<s.size(); i++) {
+          CVC4::String s1 = s.substr(0, i);
+          CVC4::String s2 = s.substr(i);
+          Node n1 = NodeManager::currentNM()->mkNode(kind::STRING_TO_REGEXP, NodeManager::currentNM()->mkConst(s1));
+          Node n2 = NodeManager::currentNM()->mkNode(kind::STRING_TO_REGEXP, NodeManager::currentNM()->mkConst(s2));
+          PairNodes tmp3(n1, n2);
+          pset.push_back(tmp3);
+        }
+        PairNodes tmp2(r, d_emptySingleton);
+        pset.push_back(tmp2);
+        break;
+      }
+      case kind::REGEXP_CONCAT: {
+        for(unsigned i=0; i<r.getNumChildren(); i++) {
+          std::vector< PairNodes > tset;
+          splitRegExp(r[i], tset);
+          std::vector< Node > hvec;
+          std::vector< Node > tvec;
+          for(unsigned j=0; j<=i; j++) {
+            hvec.push_back(r[j]);
+          }
+          for(unsigned j=i; j<r.getNumChildren(); j++) {
+            tvec.push_back(r[j]);
+          }
+          for(unsigned j=0; j<tset.size(); j++) {
+            hvec[i] = tset[j].first;
+            tvec[0] = tset[j].second;
+            Node r1 = Rewriter::rewrite( hvec.size()==1?hvec[0]:NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, hvec) );
+            Node r2 = Rewriter::rewrite( tvec.size()==1?tvec[0]:NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, tvec) );
+            PairNodes tmp2(r1, r2);
+            pset.push_back(tmp2);
+          }
+        }
+        break;
+      }
+      case kind::REGEXP_UNION: {
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          std::vector< PairNodes > tset;
+          splitRegExp(r[i], tset);
+          pset.insert(pset.end(), tset.begin(), tset.end());
+        }
+        break;
+      }
+      case kind::REGEXP_INTER: {
+        bool spflag = false;
+        Node tmp = r[0];
+        for(unsigned i=1; i<r.getNumChildren(); i++) {
+          tmp = intersect(tmp, r[i], spflag);
+        }
+        splitRegExp(tmp, pset);
+        break;
+      }
+      case kind::REGEXP_STAR: {
+        std::vector< PairNodes > tset;
+        splitRegExp(r[0], tset);
+        PairNodes tmp1(d_emptySingleton, d_emptySingleton);
+        pset.push_back(tmp1);
+        for(unsigned i=0; i<tset.size(); i++) {
+          Node r1 = tset[i].first==d_emptySingleton ? r : NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, r, tset[i].first);
+          Node r2 = tset[i].second==d_emptySingleton ? r : NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, tset[i].second, r);
+          PairNodes tmp2(r1, r2);
+          pset.push_back(tmp2);
+        }
+        break;
+      }
+      case kind::REGEXP_LOOP: {
+        unsigned l = r[1].getConst<Rational>().getNumerator().toUnsignedInt();
+        unsigned u = r[2].getConst<Rational>().getNumerator().toUnsignedInt();
+        if(l == u) {
+          //R^n
+          if(l == 0) {
+            PairNodes tmp1(d_emptySingleton, d_emptySingleton);
+            pset.push_back(tmp1);
+          } else if(l == 1) {
+            splitRegExp(r[0], pset);
+          } else {
+            std::vector< PairNodes > tset;
+            splitRegExp(r[0], tset);
+            for(unsigned j=0; j<l; j++) {
+              Node num1 = NodeManager::currentNM()->mkConst(CVC4::Rational(j));
+              Node r1 = j==0? d_emptySingleton : j==1? r[0] : NodeManager::currentNM()->mkNode(kind::REGEXP_LOOP, r[0], num1, num1);
+              unsigned j2 = l - j - 1;
+              Node num2 = NodeManager::currentNM()->mkConst(CVC4::Rational(j2));
+              Node r2 = j2==0? d_emptySingleton : j2==1? r[0] : NodeManager::currentNM()->mkNode(kind::REGEXP_LOOP, r[0], num2, num2);
+              for(unsigned i=0; i<tset.size(); i++) {
+                r1 = tset[i].first==d_emptySingleton? r1 : NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, r1, tset[i].first);
+                r2 = tset[i].second==d_emptySingleton? r2 : NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, tset[i].second, r2);
+                PairNodes tmp2(r1, r2);
+                pset.push_back(tmp2);
+              }
+            }
+          }
+        } else {
+          //R{0,n}
+          PairNodes tmp1(d_emptySingleton, d_emptySingleton);
+          pset.push_back(tmp1);
+          std::vector< PairNodes > tset;
+          splitRegExp(r[0], tset);
+          pset.insert(pset.end(), tset.begin(), tset.end());
+          for(unsigned k=2; k<=u; k++) {
+            for(unsigned j=0; j<k; j++) {
+              Node num1 = NodeManager::currentNM()->mkConst(CVC4::Rational(j));
+              Node r1 = j==0? d_emptySingleton : j==1? r[0] : NodeManager::currentNM()->mkNode(kind::REGEXP_LOOP, r[0], num1, num1);
+              unsigned j2 = k - j - 1;
+              Node num2 = NodeManager::currentNM()->mkConst(CVC4::Rational(j2));
+              Node r2 = j2==0? d_emptySingleton : j2==1? r[0] : NodeManager::currentNM()->mkNode(kind::REGEXP_LOOP, r[0], num2, num2);
+              for(unsigned i=0; i<tset.size(); i++) {
+                r1 = tset[i].first==d_emptySingleton? r1 : NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, r1, tset[i].first);
+                r2 = tset[i].second==d_emptySingleton? r2 : NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, tset[i].second, r2);
+                PairNodes tmp2(r1, r2);
+                pset.push_back(tmp2);
+              }
+            }
+          }
+        }
+        break;
+      }
+      case kind::REGEXP_PLUS: {
+        std::vector< PairNodes > tset;
+        splitRegExp(r[0], tset);
+        for(unsigned i=0; i<tset.size(); i++) {
+          Node r1 = NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, r, tset[i].first);
+          Node r2 = NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, tset[i].second, r);
+          PairNodes tmp2(r1, r2);
+          pset.push_back(tmp2);
+        }
+        break;
+      }
+      default: {
+        Trace("strings-error") << "Unsupported term: " << r << " in splitRegExp." << std::endl;
+        Assert( false );
+        //return Node::null();
+      }
+    }
+    d_split_cache[r] = pset;
+  }
+}
+
+void RegExpOpr::flattenRegExp(Node r, std::vector< std::pair< CVC4::String, unsigned > > &fvec) {
+  Assert(false);
+  Assert(checkConstRegExp(r));
+  switch( r.getKind() ) {
+      case kind::REGEXP_EMPTY: {
+        //TODO
+        break;
+      }
+      case kind::REGEXP_SIGMA: {
+        CVC4::String s("a");
+        std::pair< CVC4::String, unsigned > tmp(s, 0);
+        //TODO
+        break;
+      }
+      case kind::STRING_TO_REGEXP: {
+        Assert(r[0].isConst());
+        CVC4::String s = r[0].getConst< CVC4::String >();
+        std::pair< CVC4::String, unsigned > tmp(s, 0);
+        //TODO
+        break;
+      }
+      case kind::REGEXP_CONCAT: {
+        for(unsigned i=0; i<r.getNumChildren(); i++) {
+          //TODO
+        }
+        break;
+      }
+      case kind::REGEXP_UNION: {
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          //TODO
+        }
+        break;
+      }
+      case kind::REGEXP_INTER: {
+        //TODO
+        break;
+      }
+      case kind::REGEXP_STAR: {
+        //TODO
+        break;
+      }
+      case kind::REGEXP_LOOP: {
+        //TODO
+        break;
+      }
+      default: {
+        Unreachable();
+      }
+  }
+}
+
+void RegExpOpr::disjunctRegExp(Node r, std::vector<Node> &vec_or) {
+  switch(r.getKind()) {
+      case kind::REGEXP_EMPTY: {
+        vec_or.push_back(r);
+        break;
+      }
+      case kind::REGEXP_SIGMA: {
+        vec_or.push_back(r);
+        break;
+      }
+      case kind::REGEXP_RANGE: {
+        vec_or.push_back(r);
+        break;
+      }
+      case kind::STRING_TO_REGEXP: {
+        vec_or.push_back(r);
+        break;
+      }
+      case kind::REGEXP_CONCAT: {
+        disjunctRegExp(r[0], vec_or);
+        for(unsigned i=1; i<r.getNumChildren(); i++) {
+          std::vector<Node> vec_con;
+          disjunctRegExp(r[i], vec_con);
+          std::vector<Node> vec_or2;
+          for(unsigned k1=0; k1<vec_or.size(); k1++) {
+            for(unsigned k2=0; k2<vec_con.size(); k2++) {
+              Node tmp = Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, vec_or[k1], vec_con[k2]) );
+              if(std::find(vec_or2.begin(), vec_or2.end(), tmp) == vec_or2.end()) {
+                vec_or2.push_back( tmp );
+              }
+            }
+          }
+          vec_or = vec_or2;
+        }
+        break;
+      }
+      case kind::REGEXP_UNION: {
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          std::vector<Node> vec_or2;
+          disjunctRegExp(r[i], vec_or2);
+          vec_or.insert(vec_or.end(), vec_or2.begin(), vec_or2.end());
+        }
+        break;
+      }
+      case kind::REGEXP_INTER: {
+        Assert(checkConstRegExp(r));
+        Node rtmp = r[0];
+        bool spflag = false;
+        for(unsigned i=1; i<r.getNumChildren(); ++i) {
+          rtmp = intersect(rtmp, r[i], spflag);
+        }
+        disjunctRegExp(rtmp, vec_or);
+        break;
+      }
+      case kind::REGEXP_STAR: {
+        vec_or.push_back(r);
+        break;
+      }
+      case kind::REGEXP_LOOP: {
+        vec_or.push_back(r);
+        break;
+      }
+      default: {
+        Unreachable();
+      }
+  }
+}
+
+//printing
+std::string RegExpOpr::niceChar(Node r) {
+  if(r.isConst()) {
+    std::string s = r.getConst<CVC4::String>().toString() ;
+    return s == "." ? "\\." : s;
+  } else {
+    std::string ss = "$" + r.toString();
+    return ss;
+  }
+}
+std::string RegExpOpr::mkString( Node r ) {
+  std::string retStr;
+  if(r.isNull()) {
+    retStr = "\\E";
+  } else {
+    int k = r.getKind();
+    switch( k ) {
+      case kind::REGEXP_EMPTY: {
+        retStr += "\\E";
+        break;
+      }
+      case kind::REGEXP_SIGMA: {
+        retStr += ".";
+        break;
+      }
+      case kind::STRING_TO_REGEXP: {
+        std::string tmp( niceChar( r[0] ) );
+        retStr += tmp.size()==1? tmp : "(" + tmp + ")";
+        break;
+      }
+      case kind::REGEXP_CONCAT: {
+        retStr += "(";
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          //if(i != 0) retStr += ".";
+          retStr += mkString( r[i] );
+        }
+        retStr += ")";
+        break;
+      }
+      case kind::REGEXP_UNION: {
+        retStr += "(";
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          if(i != 0) retStr += "|";
+          retStr += mkString( r[i] );
+        }
+        retStr += ")";
+        break;
+      }
+      case kind::REGEXP_INTER: {
+        retStr += "(";
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          if(i != 0) retStr += "&";
+          retStr += mkString( r[i] );
+        }
+        retStr += ")";
+        break;
+      }
+      case kind::REGEXP_STAR: {
+        retStr += mkString( r[0] );
+        retStr += "*";
+        break;
+      }
+      case kind::REGEXP_PLUS: {
+        retStr += mkString( r[0] );
+        retStr += "+";
+        break;
+      }
+      case kind::REGEXP_OPT: {
+        retStr += mkString( r[0] );
+        retStr += "?";
+        break;
+      }
+      case kind::REGEXP_RANGE: {
+        retStr += "[";
+        retStr += niceChar( r[0] );
+        retStr += "-";
+        retStr += niceChar( r[1] );
+        retStr += "]";
+        break;
+      }
+      case kind::REGEXP_LOOP: {
+        retStr += "(";
+        retStr += mkString(r[0]);
+        retStr += ")";
+        retStr += "{";
+        retStr += r[1].getConst<Rational>().toString();
+        retStr += ",";
+        if(r.getNumChildren() == 3) {
+          retStr += r[2].getConst<Rational>().toString();
+        }
+        retStr += "}";
+        break;
+      }
+      case kind::REGEXP_RV: {
+        retStr += "<";
+        retStr += r[0].getConst<Rational>().getNumerator().toString();
+        retStr += ">";
+        break;
+      }
+      default:
+        Trace("strings-error") << "Unsupported term: " << r << " in RegExp." << std::endl;
+        //Assert( false );
+        //return Node::null();
+    }
+  }
+
+  return retStr;
+}
+
+}/* CVC4::theory::strings namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/strings/regexp_operation.h b/src/theory/strings/regexp_operation.h
new file mode 100644
index 0000000..0753913
--- /dev/null
+++ b/src/theory/strings/regexp_operation.h
@@ -0,0 +1,123 @@
+/*********************                                                        */
+/*! \file regexp_operation.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tianyi Liang, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Symbolic Regular Expresion Operations
+ **
+ ** Symbolic Regular Expression Operations
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__STRINGS__REGEXP__OPERATION_H
+#define __CVC4__THEORY__STRINGS__REGEXP__OPERATION_H
+
+#include <vector>
+#include <set>
+#include <algorithm>
+#include <climits>
+#include "util/hash.h"
+#include "util/regexp.h"
+#include "theory/theory.h"
+#include "theory/rewriter.h"
+//#include "context/cdhashmap.h"
+
+namespace CVC4 {
+namespace theory {
+namespace strings {
+
+class RegExpOpr {
+  typedef std::pair< Node, CVC4::String > PairNodeStr;
+  typedef std::set< Node > SetNodes;
+  typedef std::pair< Node, Node > PairNodes;
+
+private:
+  unsigned char d_lastchar;
+  Node d_emptyString;
+  Node d_true;
+  Node d_false;
+  Node d_emptySingleton;
+  Node d_emptyRegexp;
+  Node d_zero;
+  Node d_one;
+  CVC4::Rational RMAXINT;
+
+  unsigned char d_char_start;
+  unsigned char d_char_end;
+  Node d_sigma;
+  Node d_sigma_star;
+
+  std::map< PairNodes, Node > d_simpl_cache;
+  std::map< PairNodes, Node > d_simpl_neg_cache;
+  std::map< Node, std::pair< int, Node > > d_delta_cache;
+  std::map< PairNodeStr, Node > d_dv_cache;
+  std::map< PairNodeStr, std::pair< Node, int > > d_deriv_cache;
+  std::map< Node, std::pair< Node, int > > d_compl_cache;
+  std::map< Node, bool > d_cstre_cache;
+  std::map< Node, std::pair< std::set<unsigned char>, std::set<Node> > > d_cset_cache;
+  std::map< Node, std::pair< std::set<unsigned char>, std::set<Node> > > d_fset_cache;
+  std::map< PairNodes, Node > d_inter_cache;
+  std::map< Node, Node > d_rm_inter_cache;
+  std::map< Node, bool > d_norv_cache;
+  std::map< Node, std::vector< PairNodes > > d_split_cache;
+  //bool checkStarPlus( Node t );
+  void simplifyPRegExp( Node s, Node r, std::vector< Node > &new_nodes );
+  void simplifyNRegExp( Node s, Node r, std::vector< Node > &new_nodes );
+  std::string niceChar( Node r );
+  int gcd ( int a, int b );
+  Node mkAllExceptOne( unsigned char c );
+  bool isPairNodesInSet(std::set< PairNodes > &s, Node n1, Node n2);
+
+  void getCharSet( Node r, std::set<unsigned char> &pcset, SetNodes &pvset );
+  bool containC2(unsigned cnt, Node n);
+  Node convert1(unsigned cnt, Node n);
+  void convert2(unsigned cnt, Node n, Node &r1, Node &r2);
+  bool testNoRV(Node r);
+  Node intersectInternal( Node r1, Node r2, std::map< PairNodes, Node > cache, unsigned cnt );
+  Node removeIntersection(Node r);
+  void firstChars( Node r, std::set<unsigned char> &pcset, SetNodes &pvset );
+
+  //TODO: for intersection
+  bool follow( Node r, CVC4::String c, std::vector< unsigned char > &vec_chars );
+
+  /*class CState {
+  public:
+    Node r1;
+    Node r2;
+    unsigned cnt;
+    Node head;
+    CState(Node rr1, Node rr2, Node rcnt, Node rhead)
+      : r1(rr1), r2(rr2), cnt(rcnt), head(rhead) {}
+  };*/
+
+public:
+  RegExpOpr();
+  ~RegExpOpr();
+
+  bool checkConstRegExp( Node r );
+  void simplify(Node t, std::vector< Node > &new_nodes, bool polarity);
+  int delta( Node r, Node &exp );
+  int derivativeS( Node r, CVC4::String c, Node &retNode );
+  Node derivativeSingle( Node r, CVC4::String c );
+  bool guessLength( Node r, int &co );
+  Node intersect(Node r1, Node r2, bool &spflag);
+  Node complement(Node r, int &ret);
+  void splitRegExp(Node r, std::vector< PairNodes > &pset);
+  void flattenRegExp(Node r, std::vector< std::pair< CVC4::String, unsigned > > &fvec);
+  void disjunctRegExp(Node r, std::vector<Node> &vec_or);
+
+  std::string mkString( Node r );
+};
+
+}/* CVC4::theory::strings namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__STRINGS__REGEXP__OPERATION_H */
diff --git a/src/theory/strings/theory_strings.cpp b/src/theory/strings/theory_strings.cpp
new file mode 100644
index 0000000..45a6a93
--- /dev/null
+++ b/src/theory/strings/theory_strings.cpp
@@ -0,0 +1,4886 @@
+/*********************                                                        */
+/*! \file theory_strings.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tianyi Liang, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of the theory of strings.
+ **
+ ** Implementation of the theory of strings.
+ **/
+
+#include "theory/strings/theory_strings.h"
+
+#include <cmath>
+
+#include "expr/kind.h"
+#include "options/strings_options.h"
+#include "smt/logic_exception.h"
+#include "smt/smt_statistics_registry.h"
+#include "smt/command.h"
+#include "theory/rewriter.h"
+#include "theory/strings/theory_strings_rewriter.h"
+#include "theory/strings/type_enumerator.h"
+#include "theory/theory_model.h"
+#include "theory/valuation.h"
+#include "theory/quantifiers/term_database.h"
+
+using namespace std;
+using namespace CVC4::context;
+
+namespace CVC4 {
+namespace theory {
+namespace strings {
+
+Node TheoryStrings::TermIndex::add( TNode n, unsigned index, TheoryStrings* t, Node er, std::vector< Node >& c ) {
+  if( index==n.getNumChildren() ){
+    if( d_data.isNull() ){
+      d_data = n;
+    }
+    return d_data;
+  }else{
+    Assert( index<n.getNumChildren() );
+    TNode nir = t->getRepresentative( n[index] );
+    //if it is empty, and doing CONCAT, ignore
+    if( nir==er && n.getKind()==kind::STRING_CONCAT ){
+      return add( n, index+1, t, er, c );
+    }else{
+      c.push_back( nir );
+      return d_children[nir].add( n, index+1, t, er, c );
+    }
+  }
+}
+
+
+TheoryStrings::TheoryStrings(context::Context* c, context::UserContext* u,
+                             OutputChannel& out, Valuation valuation,
+                             const LogicInfo& logicInfo)
+    : Theory(THEORY_STRINGS, c, u, out, valuation, logicInfo),
+      RMAXINT(LONG_MAX),
+      d_notify( *this ),
+      d_equalityEngine(d_notify, c, "theory::strings::TheoryStrings", true),
+      d_conflict(c, false),
+      d_infer(c),
+      d_infer_exp(c),
+      d_nf_pairs(c),
+      d_loop_antec(u),
+      d_pregistered_terms_cache(u),
+      d_registered_terms_cache(u),
+      d_length_lemma_terms_cache(u),
+      d_skolem_ne_reg_cache(u),
+      d_preproc(u),
+      d_preproc_cache(u),
+      d_extf_infer_cache(c),
+      d_extf_infer_cache_u(u),
+      d_ee_disequalities(c),
+      d_congruent(c),
+      d_proxy_var(u),
+      d_proxy_var_to_length(u),
+      d_functionsTerms(c),
+      d_has_extf(c, false ),
+      d_regexp_memberships(c),
+      d_regexp_ucached(u),
+      d_regexp_ccached(c),
+      d_pos_memberships(c),
+      d_neg_memberships(c),
+      d_inter_cache(c),
+      d_inter_index(c),
+      d_processed_memberships(c),
+      d_regexp_ant(c),
+      d_input_vars(u),
+      d_input_var_lsum(u),
+      d_cardinality_lits(u),
+      d_curr_cardinality(c, 0)
+{
+  d_extt = new ExtTheory( this );
+  d_extt->addFunctionKind( kind::STRING_SUBSTR );
+  d_extt->addFunctionKind( kind::STRING_STRIDOF );
+  d_extt->addFunctionKind( kind::STRING_ITOS );
+  d_extt->addFunctionKind( kind::STRING_U16TOS );
+  d_extt->addFunctionKind( kind::STRING_U32TOS );
+  d_extt->addFunctionKind( kind::STRING_STOI );
+  d_extt->addFunctionKind( kind::STRING_STOU16 );
+  d_extt->addFunctionKind( kind::STRING_STOU32 );
+  d_extt->addFunctionKind( kind::STRING_STRREPL );
+  d_extt->addFunctionKind( kind::STRING_STRCTN );
+  d_extt->addFunctionKind( kind::STRING_IN_REGEXP );
+
+  // The kinds we are treating as function application in congruence
+  d_equalityEngine.addFunctionKind(kind::STRING_IN_REGEXP);
+  d_equalityEngine.addFunctionKind(kind::STRING_LENGTH);
+  d_equalityEngine.addFunctionKind(kind::STRING_CONCAT);
+  if( options::stringLazyPreproc() ){
+    d_equalityEngine.addFunctionKind(kind::STRING_STRCTN);
+    d_equalityEngine.addFunctionKind(kind::STRING_SUBSTR);
+    d_equalityEngine.addFunctionKind(kind::STRING_ITOS);
+    d_equalityEngine.addFunctionKind(kind::STRING_STOI);
+    d_equalityEngine.addFunctionKind(kind::STRING_U16TOS);
+    d_equalityEngine.addFunctionKind(kind::STRING_STOU16);
+    d_equalityEngine.addFunctionKind(kind::STRING_U32TOS);
+    d_equalityEngine.addFunctionKind(kind::STRING_STOU32);
+    d_equalityEngine.addFunctionKind(kind::STRING_STRIDOF);
+    d_equalityEngine.addFunctionKind(kind::STRING_STRREPL);
+  }
+
+  d_zero = NodeManager::currentNM()->mkConst( Rational( 0 ) );
+  d_one = NodeManager::currentNM()->mkConst( Rational( 1 ) );
+  d_emptyString = NodeManager::currentNM()->mkConst( ::CVC4::String("") );
+  std::vector< Node > nvec;
+  d_emptyRegexp = NodeManager::currentNM()->mkNode( kind::REGEXP_EMPTY, nvec );
+  d_true = NodeManager::currentNM()->mkConst( true );
+  d_false = NodeManager::currentNM()->mkConst( false );
+
+  d_card_size = 128;
+}
+
+TheoryStrings::~TheoryStrings() {
+  for( std::map< Node, EqcInfo* >::iterator it = d_eqc_info.begin(); it != d_eqc_info.end(); ++it ){
+    delete it->second;
+  }
+  delete d_extt;
+}
+
+Node TheoryStrings::getRepresentative( Node t ) {
+  if( d_equalityEngine.hasTerm( t ) ){
+    return d_equalityEngine.getRepresentative( t );
+  }else{
+    return t;
+  }
+}
+
+bool TheoryStrings::hasTerm( Node a ){
+  return d_equalityEngine.hasTerm( a );
+}
+
+bool TheoryStrings::areEqual( Node a, Node b ){
+  if( a==b ){
+    return true;
+  }else if( hasTerm( a ) && hasTerm( b ) ){
+    return d_equalityEngine.areEqual( a, b );
+  }else{
+    return false;
+  }
+}
+
+bool TheoryStrings::areDisequal( Node a, Node b ){
+  if( a==b ){
+    return false;
+  }else{
+    if( hasTerm( a ) && hasTerm( b ) ) {
+      Node ar = d_equalityEngine.getRepresentative( a );
+      Node br = d_equalityEngine.getRepresentative( b );
+      return ( ar!=br && ar.isConst() && br.isConst() ) || d_equalityEngine.areDisequal( ar, br, false );
+    }else{
+      Node ar = getRepresentative( a );
+      Node br = getRepresentative( b );
+      return ar!=br && ar.isConst() && br.isConst();
+    }
+  }
+}
+
+Node TheoryStrings::getLengthExp( Node t, std::vector< Node >& exp, Node te ){
+  Assert( areEqual( t, te ) );
+  Node lt = mkLength( te );
+  if( hasTerm( lt ) ){
+    // use own length if it exists, leads to shorter explanation
+    return lt;
+  }else{
+    EqcInfo * ei = getOrMakeEqcInfo( t, false );
+    Node length_term = ei ? ei->d_length_term : Node::null();
+    if( length_term.isNull() ){
+      //typically shouldnt be necessary
+      length_term = t;
+    }
+    Debug("strings") << "TheoryStrings::getLengthTerm " << t << " is " << length_term << std::endl;
+    addToExplanation( length_term, te, exp );
+    return Rewriter::rewrite( NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, length_term ) );
+  }
+}
+
+Node TheoryStrings::getLength( Node t, std::vector< Node >& exp ) {
+  return getLengthExp( t, exp, t );
+}
+
+void TheoryStrings::setMasterEqualityEngine(eq::EqualityEngine* eq) {
+  d_equalityEngine.setMasterEqualityEngine(eq);
+}
+
+void TheoryStrings::addSharedTerm(TNode t) {
+  Debug("strings") << "TheoryStrings::addSharedTerm(): "
+                     << t << " " << t.getType().isBoolean() << endl;
+  d_equalityEngine.addTriggerTerm(t, THEORY_STRINGS);
+  Debug("strings") << "TheoryStrings::addSharedTerm() finished" << std::endl;
+}
+
+EqualityStatus TheoryStrings::getEqualityStatus(TNode a, TNode b) {
+  if( d_equalityEngine.hasTerm(a) && d_equalityEngine.hasTerm(b) ){
+    if (d_equalityEngine.areEqual(a, b)) {
+      // The terms are implied to be equal
+      return EQUALITY_TRUE;
+    }
+    if (d_equalityEngine.areDisequal(a, b, false)) {
+      // The terms are implied to be dis-equal
+      return EQUALITY_FALSE;
+    }
+  }
+  return EQUALITY_UNKNOWN;
+}
+
+void TheoryStrings::propagate(Effort e) {
+  // direct propagation now
+}
+
+bool TheoryStrings::propagate(TNode literal) {
+  Debug("strings-propagate") << "TheoryStrings::propagate(" << literal  << ")" << std::endl;
+  // If already in conflict, no more propagation
+  if (d_conflict) {
+    Debug("strings-propagate") << "TheoryStrings::propagate(" << literal << "): already in conflict" << std::endl;
+    return false;
+  }
+  // Propagate out
+  bool ok = d_out->propagate(literal);
+  if (!ok) {
+    d_conflict = true;
+  }
+  return ok;
+}
+
+/** explain */
+void TheoryStrings::explain(TNode literal, std::vector<TNode>& assumptions) {
+  Debug("strings-explain") << "Explain " << literal << " " << d_conflict << std::endl;
+  bool polarity = literal.getKind() != kind::NOT;
+  TNode atom = polarity ? literal : literal[0];
+  unsigned ps = assumptions.size();
+  std::vector< TNode > tassumptions;
+  if (atom.getKind() == kind::EQUAL) {
+    if( atom[0]!=atom[1] ){
+      Assert( hasTerm( atom[0] ) );
+      Assert( hasTerm( atom[1] ) );
+      d_equalityEngine.explainEquality(atom[0], atom[1], polarity, tassumptions);
+    }
+  } else {
+    d_equalityEngine.explainPredicate(atom, polarity, tassumptions);
+  }
+  for( unsigned i=0; i<tassumptions.size(); i++ ){
+    if( std::find( assumptions.begin(), assumptions.end(), tassumptions[i] )==assumptions.end() ){
+      assumptions.push_back( tassumptions[i] );
+    }
+  }
+  Debug("strings-explain-debug") << "Explanation for " << literal << " was " << std::endl;
+  for( unsigned i=ps; i<assumptions.size(); i++ ){
+    Debug("strings-explain-debug") << "   " << assumptions[i] << std::endl;
+  }
+}
+
+Node TheoryStrings::explain( TNode literal ){
+  Debug("strings-explain") << "explain called on " << literal << std::endl;
+  std::vector< TNode > assumptions;
+  explain( literal, assumptions );
+  if( assumptions.empty() ){
+    return d_true;
+  }else if( assumptions.size()==1 ){
+    return assumptions[0];
+  }else{
+    return NodeManager::currentNM()->mkNode( kind::AND, assumptions );
+  }
+}
+
+bool TheoryStrings::getCurrentSubstitution( int effort, std::vector< Node >& vars, 
+                                            std::vector< Node >& subs, std::map< Node, std::vector< Node > >& exp ) {
+  Trace("strings-subs") << "getCurrentSubstitution, effort = " << effort << std::endl;
+  for( unsigned i=0; i<vars.size(); i++ ){
+    Node n = vars[i];
+    Trace("strings-subs") << "  get subs for " << n << "..." << std::endl;
+    if( effort>=3 ){
+      //model values
+      Node mv = d_valuation.getModel()->getRepresentative( n );
+      Trace("strings-subs") << "   model val : " << mv << std::endl;
+      subs.push_back( mv );
+    }else{
+      Node nr = getRepresentative( n );
+      std::map< Node, Node >::iterator itc = d_eqc_to_const.find( nr );
+      if( itc!=d_eqc_to_const.end() ){
+        //constant equivalence classes
+        Trace("strings-subs") << "   constant eqc : " << d_eqc_to_const_exp[nr] << " " << d_eqc_to_const_base[nr] << " " << nr << std::endl;
+        subs.push_back( itc->second );
+        if( !d_eqc_to_const_exp[nr].isNull() ){
+          exp[n].push_back( d_eqc_to_const_exp[nr] );
+        }
+        if( !d_eqc_to_const_base[nr].isNull() ){
+          addToExplanation( n, d_eqc_to_const_base[nr], exp[n] );
+        }
+      }else if( effort>=1 && effort<3 && n.getType().isString() ){
+        //normal forms
+        Node ns = getNormalString( d_normal_forms_base[nr], exp[n] );
+        subs.push_back( ns );
+        Trace("strings-subs") << "   normal eqc : " << ns << " " << d_normal_forms_base[nr] << " " << nr << std::endl;
+        if( !d_normal_forms_base[nr].isNull() ) {
+          addToExplanation( n, d_normal_forms_base[nr], exp[n] );
+        }
+      }else{
+        //representative?
+        //Trace("strings-subs") << "   representative : " << nr << std::endl;
+        //addToExplanation( n, nr, exp[n] );
+        //subs.push_back( nr );
+        subs.push_back( n );
+      }
+    }
+  }
+  return true;
+}
+
+int TheoryStrings::getReduction( int effort, Node n, Node& nr ) {
+  //determine the effort level to process the extf at
+  // 0 - at assertion time, 1+ - after no other reduction is applicable
+  Assert( d_extf_info_tmp.find( n )!=d_extf_info_tmp.end() );
+  if( d_extf_info_tmp[n].d_model_active ){
+    int r_effort = -1;
+    int pol = d_extf_info_tmp[n].d_pol;
+    if( n.getKind()==kind::STRING_STRCTN ){
+      if( pol==1 ){
+        r_effort = 1;
+      }else if( pol==-1 ){
+        if( effort==2 ){
+          Node x = n[0];
+          Node s = n[1];
+          std::vector< Node > lexp;
+          Node lenx = getLength( x, lexp );
+          Node lens = getLength( s, lexp );
+          if( areEqual( lenx, lens ) ){
+            Trace("strings-extf-debug") << "  resolve extf : " << n << " based on equal lengths disequality." << std::endl;
+            //we can reduce to disequality when lengths are equal
+            if( !areDisequal( x, s ) ){
+              lexp.push_back( lenx.eqNode(lens) );
+              lexp.push_back( n.negate() );
+              Node xneqs = x.eqNode(s).negate();
+              sendInference( lexp, xneqs, "NEG-CTN-EQL", true );
+            }
+            return 1;
+          }else if( !areDisequal( lenx, lens ) ){
+            //split on their lenths
+            sendSplit( lenx, lens, "NEG-CTN-SP" );
+          }else{
+            r_effort = 2;
+          }
+        }
+      }
+    }else{
+      if( options::stringLazyPreproc() ){
+        if( n.getKind()==kind::STRING_SUBSTR ){
+          r_effort = 1;
+        }else if( n.getKind()!=kind::STRING_IN_REGEXP ){
+          r_effort = 2;
+        }
+      }
+    }
+    if( effort==r_effort ){
+      Node c_n = pol==-1 ? n.negate() : n;
+      if( d_preproc_cache.find( c_n )==d_preproc_cache.end() ){
+        d_preproc_cache[ c_n ] = true;
+        Trace("strings-process-debug") << "Process reduction for " << n << ", pol = " << pol << std::endl;
+        if( n.getKind()==kind::STRING_STRCTN && pol==1 ){
+          Node x = n[0];
+          Node s = n[1];
+          //positive contains reduces to a equality
+          Node sk1 = mkSkolemCached( x, s, sk_id_ctn_pre, "sc1" );
+          Node sk2 = mkSkolemCached( x, s, sk_id_ctn_post, "sc2" );
+          Node eq = Rewriter::rewrite( x.eqNode( mkConcat( sk1, s, sk2 ) ) );
+          std::vector< Node > exp_vec;
+          exp_vec.push_back( n );
+          sendInference( d_empty_vec, exp_vec, eq, "POS-CTN", true );
+          //we've reduced this n
+          Trace("strings-extf-debug") << "  resolve extf : " << n << " based on positive contain reduction." << std::endl;
+          return 1;
+        }else{
+          // for STRING_SUBSTR, STRING_STRCTN with pol=-1,
+          //     STRING_STRIDOF, STRING_ITOS, STRING_U16TOS, STRING_U32TOS, STRING_STOI, STRING_STOU16, STRING_STOU32, STRING_STRREPL
+          std::vector< Node > new_nodes;
+          Node res = d_preproc.simplify( n, new_nodes );
+          Assert( res!=n );
+          new_nodes.push_back( NodeManager::currentNM()->mkNode( kind::EQUAL, res, n ) );
+          Node nnlem = new_nodes.size()==1 ? new_nodes[0] : NodeManager::currentNM()->mkNode( kind::AND, new_nodes );
+          nnlem = Rewriter::rewrite( nnlem );
+          Trace("strings-red-lemma") << "Reduction_" << effort << " lemma : " << nnlem << std::endl;
+          Trace("strings-red-lemma") << "...from " << n << std::endl;
+          sendInference( d_empty_vec, nnlem, "Reduction", true );
+          //we've reduced this n
+          Trace("strings-extf-debug") << "  resolve extf : " << n << " based on reduction." << std::endl;
+          return 1;
+        }
+      }else{
+        return 1;
+      }
+    }
+  }
+  return 0;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// NOTIFICATIONS
+/////////////////////////////////////////////////////////////////////////////
+
+
+void TheoryStrings::presolve() {
+  Debug("strings-presolve") << "TheoryStrings::Presolving : get fmf options " << (options::stringFMF() ? "true" : "false") << std::endl;
+
+  if(!options::stdASCII()) {
+    d_card_size = 256;
+  }
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// MODEL GENERATION
+/////////////////////////////////////////////////////////////////////////////
+
+
+void TheoryStrings::collectModelInfo( TheoryModel* m, bool fullModel ) {
+  Trace("strings-model") << "TheoryStrings : Collect model info, fullModel = " << fullModel << std::endl;
+  Trace("strings-model") << "TheoryStrings : assertEqualityEngine." << std::endl;
+  
+  //AJR : no use doing this since we cannot preregister terms with finite types that don't belong to strings.
+  //      change this if we generalize to sequences.
+  //set<Node> termSet;
+  // Compute terms appearing in assertions and shared terms
+  //computeRelevantTerms(termSet);
+  //m->assertEqualityEngine( &d_equalityEngine, &termSet );
+  
+  m->assertEqualityEngine( &d_equalityEngine );
+  
+  // Generate model
+  std::vector< Node > nodes;
+  getEquivalenceClasses( nodes );
+  std::map< Node, Node > processed;
+  std::vector< std::vector< Node > > col;
+  std::vector< Node > lts;
+  separateByLength( nodes, col, lts );
+  //step 1 : get all values for known lengths
+  std::vector< Node > lts_values;
+  std::map< unsigned, bool > values_used;
+  for( unsigned i=0; i<col.size(); i++ ) {
+    Trace("strings-model") << "Checking length for {";
+    for( unsigned j=0; j<col[i].size(); j++ ) {
+      if( j>0 ) {
+        Trace("strings-model") << ", ";
+      }
+      Trace("strings-model") << col[i][j];
+    }
+    Trace("strings-model") << " } (length is " << lts[i] << ")" << std::endl;
+    if( lts[i].isConst() ) {
+      lts_values.push_back( lts[i] );
+      Assert(lts[i].getConst<Rational>() <= RMAXINT, "Exceeded LONG_MAX in string model");
+      unsigned lvalue = lts[i].getConst<Rational>().getNumerator().toUnsignedInt();
+      values_used[ lvalue ] = true;
+    }else{
+      //get value for lts[i];
+      if( !lts[i].isNull() ){
+        Node v = d_valuation.getModelValue(lts[i]);
+        Trace("strings-model") << "Model value for " << lts[i] << " is " << v << std::endl;
+        lts_values.push_back( v );
+        Assert(v.getConst<Rational>() <= RMAXINT, "Exceeded LONG_MAX in string model");
+        unsigned lvalue =  v.getConst<Rational>().getNumerator().toUnsignedInt();
+        values_used[ lvalue ] = true;
+      }else{
+        //Trace("strings-model-warn") << "No length for eqc " << col[i][0] << std::endl;
+        //Assert( false );
+        lts_values.push_back( Node::null() );
+      }
+    }
+  }
+  ////step 2 : assign arbitrary values for unknown lengths?
+  // confirmed by calculus invariant, see paper
+  Trace("strings-model") << "Assign to equivalence classes..." << std::endl;
+  //step 3 : assign values to equivalence classes that are pure variables
+  for( unsigned i=0; i<col.size(); i++ ){
+    std::vector< Node > pure_eq;
+    Trace("strings-model") << "The equivalence classes ";
+    for( unsigned j=0; j<col[i].size(); j++ ) {
+      Trace("strings-model") << col[i][j] << " ";
+      //check if col[i][j] has only variables
+      if( !col[i][j].isConst() ){
+        Assert( d_normal_forms.find( col[i][j] )!=d_normal_forms.end() );
+        if( d_normal_forms[col[i][j]].size()==1 ){//&& d_normal_forms[col[i][j]][0]==col[i][j] ){
+          pure_eq.push_back( col[i][j] );
+        }
+      }else{
+        processed[col[i][j]] = col[i][j];
+      }
+    }
+    Trace("strings-model") << "have length " << lts_values[i] << std::endl;
+
+    //assign a new length if necessary
+    if( !pure_eq.empty() ){
+      if( lts_values[i].isNull() ){
+        unsigned lvalue = 0;
+        while( values_used.find( lvalue )!=values_used.end() ){
+          lvalue++;
+        }
+        Trace("strings-model") << "*** Decide to make length of " << lvalue << std::endl;
+        lts_values[i] = NodeManager::currentNM()->mkConst( Rational( lvalue ) );
+        values_used[ lvalue ] = true;
+      }
+      Trace("strings-model") << "Need to assign values of length " << lts_values[i] << " to equivalence classes ";
+      for( unsigned j=0; j<pure_eq.size(); j++ ){
+        Trace("strings-model") << pure_eq[j] << " ";
+      }
+      Trace("strings-model") << std::endl;
+
+
+      //use type enumerator
+      Assert(lts_values[i].getConst<Rational>() <= RMAXINT, "Exceeded LONG_MAX in string model");
+      StringEnumeratorLength sel(lts_values[i].getConst<Rational>().getNumerator().toUnsignedInt());
+      for( unsigned j=0; j<pure_eq.size(); j++ ){
+        Assert( !sel.isFinished() );
+        Node c = *sel;
+        while( d_equalityEngine.hasTerm( c ) ){
+          ++sel;
+          Assert( !sel.isFinished() );
+          c = *sel;
+        }
+        ++sel;
+        Trace("strings-model") << "*** Assigned constant " << c << " for " << pure_eq[j] << std::endl;
+        processed[pure_eq[j]] = c;
+        m->assertEquality( pure_eq[j], c, true );
+      }
+    }
+  }
+  Trace("strings-model") << "String Model : Pure Assigned." << std::endl;
+  //step 4 : assign constants to all other equivalence classes
+  for( unsigned i=0; i<nodes.size(); i++ ){
+    if( processed.find( nodes[i] )==processed.end() ){
+      Assert( d_normal_forms.find( nodes[i] )!=d_normal_forms.end() );
+      Trace("strings-model") << "Construct model for " << nodes[i] << " based on normal form ";
+      for( unsigned j=0; j<d_normal_forms[nodes[i]].size(); j++ ) {
+        if( j>0 ) Trace("strings-model") << " ++ ";
+        Trace("strings-model") << d_normal_forms[nodes[i]][j];
+        Node r = getRepresentative( d_normal_forms[nodes[i]][j] );
+        if( !r.isConst() && processed.find( r )==processed.end() ){
+          Trace("strings-model") << "(UNPROCESSED)";
+        }
+      }
+      Trace("strings-model") << std::endl;
+      std::vector< Node > nc;
+      for( unsigned j=0; j<d_normal_forms[nodes[i]].size(); j++ ) {
+        Node r = getRepresentative( d_normal_forms[nodes[i]][j] );
+        Assert( r.isConst() || processed.find( r )!=processed.end() );
+        nc.push_back(r.isConst() ? r : processed[r]);
+      }
+      Node cc = mkConcat( nc );
+      Assert( cc.getKind()==kind::CONST_STRING );
+      Trace("strings-model") << "*** Determined constant " << cc << " for " << nodes[i] << std::endl;
+      processed[nodes[i]] = cc;
+      m->assertEquality( nodes[i], cc, true );
+    }
+  }
+  //Trace("strings-model") << "String Model : Assigned." << std::endl;
+  Trace("strings-model") << "String Model : Finished." << std::endl;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// MAIN SOLVER
+/////////////////////////////////////////////////////////////////////////////
+
+
+void TheoryStrings::preRegisterTerm(TNode n) {
+  if( d_pregistered_terms_cache.find(n) == d_pregistered_terms_cache.end() ) {
+    d_pregistered_terms_cache.insert(n);
+    //check for logic exceptions
+    if( !options::stringExp() ){
+      if( n.getKind()==kind::STRING_STRIDOF ||
+          n.getKind() == kind::STRING_ITOS || n.getKind() == kind::STRING_U16TOS || n.getKind() == kind::STRING_U32TOS ||
+          n.getKind() == kind::STRING_STOI || n.getKind() == kind::STRING_STOU16 || n.getKind() == kind::STRING_STOU32 ||
+          n.getKind() == kind::STRING_STRREPL || n.getKind() == kind::STRING_STRCTN ){
+        std::stringstream ss;
+        ss << "Term of kind " << n.getKind() << " not supported in default mode, try --strings-exp";
+        throw LogicException(ss.str());
+      }
+    }
+    switch( n.getKind() ) {
+      case kind::EQUAL: {
+        d_equalityEngine.addTriggerEquality(n);
+        break;
+      }
+      case kind::STRING_IN_REGEXP: {
+        d_out->requirePhase(n, true);
+        d_equalityEngine.addTriggerPredicate(n);
+        d_equalityEngine.addTerm(n[0]);
+        d_equalityEngine.addTerm(n[1]);
+        break;
+      }
+      default: {
+        TypeNode tn = n.getType();
+        if( tn.isString() ) {
+          registerTerm( n, 0 );
+          // FMF
+          if( n.getKind() == kind::VARIABLE && options::stringFMF() ){
+            d_input_vars.insert(n);
+          }
+          d_equalityEngine.addTerm(n);
+        } else if (tn.isBoolean()) {
+          // Get triggered for both equal and dis-equal
+          d_equalityEngine.addTriggerPredicate(n);
+        } else {
+          // Function applications/predicates
+          d_equalityEngine.addTerm(n);
+          if( options::stringExp() ){
+            //collect extended functions here: some may not be asserted to strings (such as those with return type Int),
+            //  but we need to record them so they are treated properly
+            d_extt->registerTermRec( n );       
+          }
+        }
+        //concat terms do not contribute to theory combination?  TODO: verify
+        if( n.hasOperator() && kindToTheoryId( n.getKind() )==THEORY_STRINGS && n.getKind()!=kind::STRING_CONCAT ){
+          d_functionsTerms.push_back( n );
+        }
+      }
+    }
+  }
+}
+
+Node TheoryStrings::expandDefinition(LogicRequest &logicRequest, Node node) {
+  Trace("strings-exp-def") << "TheoryStrings::expandDefinition : " << node << std::endl;
+  return node;
+}
+
+
+void TheoryStrings::check(Effort e) {
+  if (done() && e<EFFORT_FULL) {
+    return;
+  }
+
+  TimerStat::CodeTimer checkTimer(d_checkTime);
+
+  bool polarity;
+  TNode atom;
+
+  if( !done() && !hasTerm( d_emptyString ) ) {
+    preRegisterTerm( d_emptyString );
+  }
+
+  // Trace("strings-process") << "Theory of strings, check : " << e << std::endl;
+  Trace("strings-check") << "Theory of strings, check : " << e << std::endl;
+  while ( !done() && !d_conflict ) {
+    // Get all the assertions
+    Assertion assertion = get();
+    TNode fact = assertion.assertion;
+
+    Trace("strings-assertion") << "get assertion: " << fact << endl;
+    polarity = fact.getKind() != kind::NOT;
+    atom = polarity ? fact : fact[0];
+
+    //assert pending fact
+    assertPendingFact( atom, polarity, fact );
+  }
+  doPendingFacts();
+
+  if( !d_conflict && ( ( e == EFFORT_FULL && !d_valuation.needCheck() ) || ( e==EFFORT_STANDARD && options::stringEager() ) ) ) {
+    Trace("strings-check") << "Theory of strings full effort check " << std::endl;
+
+    if(Trace.isOn("strings-eqc")) {
+      for( unsigned t=0; t<2; t++ ) {
+        eq::EqClassesIterator eqcs2_i = eq::EqClassesIterator( &d_equalityEngine );
+        Trace("strings-eqc") << (t==0 ? "STRINGS:" : "OTHER:") << std::endl;
+        while( !eqcs2_i.isFinished() ){
+          Node eqc = (*eqcs2_i);
+          bool print = (t==0 && eqc.getType().isString() ) || (t==1 && !eqc.getType().isString() );
+          if (print) {
+            eq::EqClassIterator eqc2_i = eq::EqClassIterator( eqc, &d_equalityEngine );
+            Trace("strings-eqc") << "Eqc( " << eqc << " ) : { ";
+            while( !eqc2_i.isFinished() ) {
+              if( (*eqc2_i)!=eqc && (*eqc2_i).getKind()!=kind::EQUAL ){
+                Trace("strings-eqc") << (*eqc2_i) << " ";
+              }
+              ++eqc2_i;
+            }
+            Trace("strings-eqc") << " } " << std::endl;
+            EqcInfo * ei = getOrMakeEqcInfo( eqc, false );
+            if( ei ){
+              Trace("strings-eqc-debug") << "* Length term : " << ei->d_length_term.get() << std::endl;
+              Trace("strings-eqc-debug") << "* Cardinality lemma k : " << ei->d_cardinality_lem_k.get() << std::endl;
+              Trace("strings-eqc-debug") << "* Normalization length lemma : " << ei->d_normalized_length.get() << std::endl;
+            }
+          }
+          ++eqcs2_i;
+        }
+        Trace("strings-eqc") << std::endl;
+      }
+      Trace("strings-eqc") << std::endl;
+    }
+
+    bool addedLemma = false;
+    bool addedFact;
+    do{
+      Trace("strings-process") << "----check, next round---" << std::endl;
+      checkInit();
+      Trace("strings-process") << "Done check init, addedFact = " << !d_pending.empty() << " " << !d_lemma_cache.empty() << ", d_conflict = " << d_conflict << std::endl;
+      if( !hasProcessed() ){
+        checkExtfEval();
+        Trace("strings-process") << "Done check extended functions eval, addedFact = " << !d_pending.empty() << " " << !d_lemma_cache.empty() << ", d_conflict = " << d_conflict << std::endl;
+        if( !hasProcessed() ){
+          checkFlatForms();
+          Trace("strings-process") << "Done check flat forms, addedFact = " << !d_pending.empty() << " " << !d_lemma_cache.empty() << ", d_conflict = " << d_conflict << std::endl;
+          if( !hasProcessed() && e==EFFORT_FULL ){
+            checkNormalForms();
+            Trace("strings-process") << "Done check normal forms, addedFact = " << !d_pending.empty() << " " << !d_lemma_cache.empty() << ", d_conflict = " << d_conflict << std::endl;
+            if( !hasProcessed() ){
+              if( options::stringEagerLen() ){
+                checkLengthsEqc();
+                Trace("strings-process") << "Done check lengths, addedFact = " << !d_pending.empty() << " " << !d_lemma_cache.empty() << ", d_conflict = " << d_conflict << std::endl;
+              }
+              if( !hasProcessed() ){
+                if( options::stringExp() && !options::stringGuessModel() ){
+                  checkExtfReductions( 2 );
+                  Trace("strings-process") << "Done check extended functions reduction 2, addedFact = " << !d_pending.empty() << " " << !d_lemma_cache.empty() << ", d_conflict = " << d_conflict << std::endl;
+                }
+                if( !hasProcessed() ){
+                  checkMemberships();
+                  Trace("strings-process") << "Done check memberships, addedFact = " << !d_pending.empty() << " " << !d_lemma_cache.empty() << ", d_conflict = " << d_conflict << std::endl;
+                  if( !hasProcessed() ){
+                    checkCardinality();
+                    Trace("strings-process") << "Done check cardinality, addedFact = " << !d_pending.empty() << " " << !d_lemma_cache.empty() << ", d_conflict = " << d_conflict << std::endl;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+      //flush the facts
+      addedFact = !d_pending.empty();
+      addedLemma = !d_lemma_cache.empty();
+      doPendingFacts();
+      doPendingLemmas();
+    }while( !d_conflict && !addedLemma && addedFact );
+
+    Trace("strings-check") << "Theory of strings done full effort check " << addedLemma << " " << d_conflict << std::endl;
+  }else if( e==EFFORT_LAST_CALL ){
+    Assert( !hasProcessed() );
+    Trace("strings-check") << "Theory of strings last call effort check " << std::endl;
+    checkExtfEval( 3 );
+    checkExtfReductions( 2 );
+    doPendingFacts();
+    doPendingLemmas();
+    Trace("strings-process") << "Done check extended functions reduction 2, addedFact = " << !d_pending.empty() << " " << !d_lemma_cache.empty() << ", d_conflict = " << d_conflict << std::endl;
+  }
+  Trace("strings-check") << "Theory of strings, done check : " << e << std::endl;
+  Assert( d_pending.empty() );
+  Assert( d_lemma_cache.empty() );
+}
+
+bool TheoryStrings::needsCheckLastEffort() {
+  if( options::stringGuessModel() ){
+    return d_has_extf.get();  
+  }else{
+    return false;
+  }
+}
+
+void TheoryStrings::checkExtfReductions( int effort ) {
+  //standardize this?
+  //std::vector< Node > nred;
+  //d_extt->doReductions( effort, nred, false );
+
+  std::vector< Node > extf;
+  d_extt->getActive( extf );
+  Trace("strings-process") << "checking " << extf.size() << " active extf" << std::endl;
+  for( unsigned i=0; i<extf.size(); i++ ){
+    Node n = extf[i];
+    Trace("strings-process") << "Check " << n << ", active in model=" << d_extf_info_tmp[n].d_model_active << std::endl;
+    Node nr;
+    int ret = getReduction( effort, n, nr );
+    Assert( nr.isNull() );
+    if( ret!=0 ){
+      d_extt->markReduced( extf[i] );
+      if( options::stringOpt1() && hasProcessed() ){
+        return;
+      }
+    }
+  }
+}
+
+TheoryStrings::EqcInfo::EqcInfo(  context::Context* c ) : d_length_term(c), d_cardinality_lem_k(c), d_normalized_length(c) {
+
+}
+
+TheoryStrings::EqcInfo * TheoryStrings::getOrMakeEqcInfo( Node eqc, bool doMake ) {
+  std::map< Node, EqcInfo* >::iterator eqc_i = d_eqc_info.find( eqc );
+  if( eqc_i==d_eqc_info.end() ){
+    if( doMake ){
+      EqcInfo* ei = new EqcInfo( getSatContext() );
+      d_eqc_info[eqc] = ei;
+      return ei;
+    }else{
+      return NULL;
+    }
+  }else{
+    return (*eqc_i).second;
+  }
+}
+
+
+/** Conflict when merging two constants */
+void TheoryStrings::conflict(TNode a, TNode b){
+  if( !d_conflict ){
+    Debug("strings-conflict") << "Making conflict..." << std::endl;
+    d_conflict = true;
+    Node conflictNode;
+    conflictNode = explain( a.eqNode(b) );
+    Trace("strings-conflict") << "CONFLICT: Eq engine conflict : " << conflictNode << std::endl;
+    d_out->conflict( conflictNode );
+  }
+}
+
+/** called when a new equivalance class is created */
+void TheoryStrings::eqNotifyNewClass(TNode t){
+  if( t.getKind() == kind::STRING_LENGTH ){
+    Trace("strings-debug") << "New length eqc : " << t << std::endl;
+    Node r = d_equalityEngine.getRepresentative(t[0]);
+    EqcInfo * ei = getOrMakeEqcInfo( r, true );
+    ei->d_length_term = t[0];
+    //we care about the length of this string
+    registerTerm( t[0], 1 );
+  }else{
+    //d_extt->registerTerm( t );
+  }
+}
+
+/** called when two equivalance classes will merge */
+void TheoryStrings::eqNotifyPreMerge(TNode t1, TNode t2){
+  EqcInfo * e2 = getOrMakeEqcInfo(t2, false);
+  if( e2 ){
+    EqcInfo * e1 = getOrMakeEqcInfo( t1 );
+    //add information from e2 to e1
+    if( !e2->d_length_term.get().isNull() ){
+      e1->d_length_term.set( e2->d_length_term );
+    }
+    if( e2->d_cardinality_lem_k.get()>e1->d_cardinality_lem_k.get() ) {
+      e1->d_cardinality_lem_k.set( e2->d_cardinality_lem_k );
+    }
+    if( !e2->d_normalized_length.get().isNull() ){
+      e1->d_normalized_length.set( e2->d_normalized_length );
+    }
+  }
+}
+
+/** called when two equivalance classes have merged */
+void TheoryStrings::eqNotifyPostMerge(TNode t1, TNode t2) {
+
+}
+
+/** called when two equivalance classes are disequal */
+void TheoryStrings::eqNotifyDisequal(TNode t1, TNode t2, TNode reason) {
+  if( t1.getType().isString() ){
+    //store disequalities between strings, may need to check if their lengths are equal/disequal
+    d_ee_disequalities.push_back( t1.eqNode( t2 ) );
+  }
+}
+
+void TheoryStrings::addCarePairs( quantifiers::TermArgTrie * t1, quantifiers::TermArgTrie * t2, unsigned arity, unsigned depth ) {
+  if( depth==arity ){
+    if( t2!=NULL ){
+      Node f1 = t1->getNodeData();
+      Node f2 = t2->getNodeData();
+      if( !d_equalityEngine.areEqual( f1, f2 ) ){
+        Trace("strings-cg-debug") << "TheoryStrings::computeCareGraph(): checking function " << f1 << " and " << f2 << std::endl;
+        vector< pair<TNode, TNode> > currentPairs;
+        for (unsigned k = 0; k < f1.getNumChildren(); ++ k) {
+          TNode x = f1[k];
+          TNode y = f2[k];
+          Assert( d_equalityEngine.hasTerm(x) );
+          Assert( d_equalityEngine.hasTerm(y) );
+          Assert( !d_equalityEngine.areDisequal( x, y, false ) );
+          if( !d_equalityEngine.areEqual( x, y ) ){
+            if( d_equalityEngine.isTriggerTerm(x, THEORY_STRINGS) && d_equalityEngine.isTriggerTerm(y, THEORY_STRINGS) ){
+              TNode x_shared = d_equalityEngine.getTriggerTermRepresentative(x, THEORY_STRINGS);
+              TNode y_shared = d_equalityEngine.getTriggerTermRepresentative(y, THEORY_STRINGS);
+              EqualityStatus eqStatus = d_valuation.getEqualityStatus(x_shared, y_shared);
+              if( eqStatus==EQUALITY_FALSE_AND_PROPAGATED || eqStatus==EQUALITY_FALSE || eqStatus==EQUALITY_FALSE_IN_MODEL ){
+                //an argument is disequal, we are done
+                return;
+              }else{
+                currentPairs.push_back(make_pair(x_shared, y_shared));
+              }
+            }
+          }
+        }
+        for (unsigned c = 0; c < currentPairs.size(); ++ c) {
+          Trace("strings-cg-pair") << "TheoryStrings::computeCareGraph(): pair : " << currentPairs[c].first << " " << currentPairs[c].second << std::endl;
+          addCarePair(currentPairs[c].first, currentPairs[c].second);
+        }
+      }
+    }
+  }else{
+    if( t2==NULL ){
+      if( depth<(arity-1) ){
+        //add care pairs internal to each child
+        for( std::map< TNode, quantifiers::TermArgTrie >::iterator it = t1->d_data.begin(); it != t1->d_data.end(); ++it ){
+          addCarePairs( &it->second, NULL, arity, depth+1 );
+        }
+      }
+      //add care pairs based on each pair of non-disequal arguments
+      for( std::map< TNode, quantifiers::TermArgTrie >::iterator it = t1->d_data.begin(); it != t1->d_data.end(); ++it ){
+        std::map< TNode, quantifiers::TermArgTrie >::iterator it2 = it;
+        ++it2;
+        for( ; it2 != t1->d_data.end(); ++it2 ){
+          if( !d_equalityEngine.areDisequal(it->first, it2->first, false) ){
+            addCarePairs( &it->second, &it2->second, arity, depth+1 );
+          }
+        }
+      }
+    }else{
+      //add care pairs based on product of indices, non-disequal arguments
+      for( std::map< TNode, quantifiers::TermArgTrie >::iterator it = t1->d_data.begin(); it != t1->d_data.end(); ++it ){
+        for( std::map< TNode, quantifiers::TermArgTrie >::iterator it2 = t2->d_data.begin(); it2 != t2->d_data.end(); ++it2 ){
+          if( !d_equalityEngine.areDisequal(it->first, it2->first, false) ){
+            addCarePairs( &it->second, &it2->second, arity, depth+1 );
+          }
+        }
+      }
+    }
+  }
+}
+
+void TheoryStrings::computeCareGraph(){
+  //computing the care graph here is probably still necessary, due to operators that take non-string arguments  TODO: verify
+  Trace("strings-cg") << "TheoryStrings::computeCareGraph(): Build term indices..." << std::endl;
+  std::map< Node, quantifiers::TermArgTrie > index;
+  std::map< Node, unsigned > arity;
+  unsigned functionTerms = d_functionsTerms.size();
+  for (unsigned i = 0; i < functionTerms; ++ i) {
+    TNode f1 = d_functionsTerms[i];
+    Trace("strings-cg") << "...build for " << f1 << std::endl;
+    Node op = f1.getOperator();
+    std::vector< TNode > reps;
+    bool has_trigger_arg = false;
+    for( unsigned j=0; j<f1.getNumChildren(); j++ ){
+      reps.push_back( d_equalityEngine.getRepresentative( f1[j] ) );
+      if( d_equalityEngine.isTriggerTerm( f1[j], THEORY_STRINGS ) ){
+        has_trigger_arg = true;
+      }
+    }
+    if( has_trigger_arg ){
+      index[op].addTerm( f1, reps );
+      arity[op] = reps.size();
+    }
+  }
+  //for each index
+  for( std::map< Node, quantifiers::TermArgTrie >::iterator itii = index.begin(); itii != index.end(); ++itii ){
+    Trace("strings-cg") << "TheoryStrings::computeCareGraph(): Process index " << itii->first << "..." << std::endl;
+    addCarePairs( &itii->second, NULL, arity[ itii->first ], 0 );
+  }
+}
+
+void TheoryStrings::assertPendingFact(Node atom, bool polarity, Node exp) {
+  Trace("strings-pending") << "Assert pending fact : " << atom << " " << polarity << " from " << exp << std::endl;
+  Assert(atom.getKind() != kind::OR, "Infer error: a split.");
+  if( atom.getKind()==kind::EQUAL ){
+    Trace("strings-pending-debug") << "  Register term" << std::endl;
+    for( unsigned j=0; j<2; j++ ) {
+      if( !d_equalityEngine.hasTerm( atom[j] ) && atom[j].getType().isString() ) {
+        registerTerm( atom[j], 0 );
+      }
+    }
+    Trace("strings-pending-debug") << "  Now assert equality" << std::endl;
+    d_equalityEngine.assertEquality( atom, polarity, exp );
+    Trace("strings-pending-debug") << "  Finished assert equality" << std::endl;
+  } else {
+    d_equalityEngine.assertPredicate( atom, polarity, exp );
+    //process extf
+    if( atom.getKind()==kind::STRING_IN_REGEXP ){
+      if( polarity && atom[1].getKind()==kind::REGEXP_RANGE ){
+        if( d_extf_infer_cache_u.find( atom )==d_extf_infer_cache_u.end() ){
+          d_extf_infer_cache_u.insert( atom );
+          //length of first argument is one
+          Node conc = d_one.eqNode( NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, atom[0] ) );
+          Node lem = NodeManager::currentNM()->mkNode( kind::OR, atom.negate(), conc );
+          Trace("strings-lemma") << "Strings::Lemma RE-Range-Len : " << lem << std::endl;
+          d_out->lemma( lem );
+        }
+      }
+    }
+    //register the atom here, since it may not create a new equivalence class
+    //d_extt->registerTerm( atom );
+  }
+  Trace("strings-pending-debug") << "  Now collect terms" << std::endl;
+  //collect extended function terms in the atom
+  d_extt->registerTermRec( atom );
+  Trace("strings-pending-debug") << "  Finished collect terms" << std::endl;
+}
+
+void TheoryStrings::doPendingFacts() {
+  size_t i=0;
+  while( !d_conflict && i<d_pending.size() ) {
+    Node fact = d_pending[i];
+    Node exp = d_pending_exp[ fact ];
+    if(fact.getKind() == kind::AND) {
+      for(size_t j=0; j<fact.getNumChildren(); j++) {
+        bool polarity = fact[j].getKind() != kind::NOT;
+        TNode atom = polarity ? fact[j] : fact[j][0];
+        assertPendingFact(atom, polarity, exp);
+      }
+    } else {
+      bool polarity = fact.getKind() != kind::NOT;
+      TNode atom = polarity ? fact : fact[0];
+      assertPendingFact(atom, polarity, exp);
+    }
+    i++;
+  }
+  d_pending.clear();
+  d_pending_exp.clear();
+}
+
+void TheoryStrings::doPendingLemmas() {
+  if( !d_conflict && !d_lemma_cache.empty() ){
+    for( unsigned i=0; i<d_lemma_cache.size(); i++ ){
+      Trace("strings-pending") << "Process pending lemma : " << d_lemma_cache[i] << std::endl;
+      d_out->lemma( d_lemma_cache[i] );
+    }
+    for( std::map< Node, bool >::iterator it = d_pending_req_phase.begin(); it != d_pending_req_phase.end(); ++it ){
+      Trace("strings-pending") << "Require phase : " << it->first << ", polarity = " << it->second << std::endl;
+      d_out->requirePhase( it->first, it->second );
+    }
+  }
+  d_lemma_cache.clear();
+  d_pending_req_phase.clear();
+}
+
+bool TheoryStrings::hasProcessed() {
+  return d_conflict || !d_lemma_cache.empty() || !d_pending.empty();
+}
+
+void TheoryStrings::addToExplanation( Node a, Node b, std::vector< Node >& exp ) {
+  if( a!=b ){
+    Debug("strings-explain") << "Add to explanation : " << a << " == " << b << std::endl;
+    Assert( areEqual( a, b ) );
+    exp.push_back( a.eqNode( b ) );
+  }
+}
+
+void TheoryStrings::addToExplanation( Node lit, std::vector< Node >& exp ) {
+  if( !lit.isNull() ){
+    exp.push_back( lit );
+  }
+}
+
+void TheoryStrings::checkInit() {
+  //build term index
+  d_eqc_to_const.clear();
+  d_eqc_to_const_base.clear();
+  d_eqc_to_const_exp.clear();
+  d_eqc_to_len_term.clear();
+  d_term_index.clear();
+  d_strings_eqc.clear();
+
+  std::map< Kind, unsigned > ncongruent;
+  std::map< Kind, unsigned > congruent;
+  d_emptyString_r = getRepresentative( d_emptyString );
+  eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( &d_equalityEngine );
+  while( !eqcs_i.isFinished() ){
+    Node eqc = (*eqcs_i);
+    TypeNode tn = eqc.getType();
+    if( !tn.isRegExp() ){
+      if( tn.isString() ){
+        d_strings_eqc.push_back( eqc );
+      }
+      Node var;
+      eq::EqClassIterator eqc_i = eq::EqClassIterator( eqc, &d_equalityEngine );
+      while( !eqc_i.isFinished() ) {
+        Node n = *eqc_i;
+        if( n.isConst() ){
+          d_eqc_to_const[eqc] = n;
+          d_eqc_to_const_base[eqc] = n;
+          d_eqc_to_const_exp[eqc] = Node::null();
+        }else if( tn.isInteger() ){
+          if( n.getKind()==kind::STRING_LENGTH ){
+            Node nr = getRepresentative( n[0] );
+            d_eqc_to_len_term[nr] = n[0];
+          }
+        }else if( n.getNumChildren()>0 ){
+          Kind k = n.getKind();
+          if( k!=kind::EQUAL ){
+            if( d_congruent.find( n )==d_congruent.end() ){
+              std::vector< Node > c;
+              Node nc = d_term_index[k].add( n, 0, this, d_emptyString_r, c );
+              if( nc!=n ){
+                //check if we have inferred a new equality by removal of empty components
+                if( n.getKind()==kind::STRING_CONCAT && !areEqual( nc, n ) ){
+                  std::vector< Node > exp;
+                  unsigned count[2] = { 0, 0 };
+                  while( count[0]<nc.getNumChildren() || count[1]<n.getNumChildren() ){
+                    //explain empty prefixes
+                    for( unsigned t=0; t<2; t++ ){
+                      Node nn = t==0 ? nc : n;
+                      while( count[t]<nn.getNumChildren() &&
+                            ( nn[count[t]]==d_emptyString || areEqual( nn[count[t]], d_emptyString ) ) ){
+                        if( nn[count[t]]!=d_emptyString ){
+                          exp.push_back( nn[count[t]].eqNode( d_emptyString ) );
+                        }
+                        count[t]++;
+                      }
+                    }
+                    //explain equal components
+                    if( count[0]<nc.getNumChildren() ){
+                      Assert( count[1]<n.getNumChildren() );
+                      if( nc[count[0]]!=n[count[1]] ){
+                        exp.push_back( nc[count[0]].eqNode( n[count[1]] ) );
+                      }
+                      count[0]++;
+                      count[1]++;
+                    }
+                  }
+                  //infer the equality
+                  sendInference( exp, n.eqNode( nc ), "I_Norm" );
+                }else if( d_extt->hasFunctionKind( n.getKind() ) ){
+                  //mark as congruent : only process if neither has been reduced
+                  d_extt->markCongruent( nc, n );
+                }
+                //this node is congruent to another one, we can ignore it
+                Trace("strings-process-debug") << "  congruent term : " << n << std::endl;
+                d_congruent.insert( n );
+                congruent[k]++;
+              }else if( k==kind::STRING_CONCAT && c.size()==1 ){
+                Trace("strings-process-debug") << "  congruent term by singular : " << n << " " << c[0] << std::endl;
+                //singular case
+                if( !areEqual( c[0], n ) ){
+                  std::vector< Node > exp;
+                  //explain empty components
+                  bool foundNEmpty = false;
+                  for( unsigned i=0; i<n.getNumChildren(); i++ ){
+                    if( areEqual( n[i], d_emptyString ) ){
+                      if( n[i]!=d_emptyString ){
+                        exp.push_back( n[i].eqNode( d_emptyString ) );
+                      }
+                    }else{
+                      Assert( !foundNEmpty );
+                      if( n[i]!=c[0] ){
+                        exp.push_back( n[i].eqNode( c[0] ) );
+                      }
+                      foundNEmpty = true;
+                    }
+                  }
+                  AlwaysAssert( foundNEmpty );
+                  //infer the equality
+                  sendInference( exp, n.eqNode( c[0] ), "I_Norm_S" );
+                }
+                d_congruent.insert( n );
+                congruent[k]++;
+              }else{
+                ncongruent[k]++;
+              }
+            }else{
+              congruent[k]++;
+            }
+          }
+        }else{
+          if( d_congruent.find( n )==d_congruent.end() ){
+            if( var.isNull() ){
+              var = n;
+            }else{
+              Trace("strings-process-debug") << "  congruent variable : " << n << std::endl;
+              d_congruent.insert( n );
+            }
+          }
+        }
+        ++eqc_i;
+      }
+    }
+    ++eqcs_i;
+  }
+  if( Trace.isOn("strings-process") ){
+    for( std::map< Kind, TermIndex >::iterator it = d_term_index.begin(); it != d_term_index.end(); ++it ){
+      Trace("strings-process") << "  Terms[" << it->first << "] = " << ncongruent[it->first] << "/" << (congruent[it->first]+ncongruent[it->first]) << std::endl;
+    }
+  }
+  Trace("strings-process") << "Done check init, addedLemma = " << !d_pending.empty() << " " << !d_lemma_cache.empty() << ", d_conflict = " << d_conflict << std::endl;
+  //now, infer constants for equivalence classes
+  if( !hasProcessed() ){
+    //do fixed point
+    unsigned prevSize;
+    do{
+      Trace("strings-process-debug") << "Check constant equivalence classes..." << std::endl;
+      prevSize = d_eqc_to_const.size();
+      std::vector< Node > vecc;
+      checkConstantEquivalenceClasses( &d_term_index[kind::STRING_CONCAT], vecc );
+    }while( !hasProcessed() && d_eqc_to_const.size()>prevSize );
+    Trace("strings-process") << "Done check constant equivalence classes, addedLemma = " << !d_pending.empty() << " " << !d_lemma_cache.empty() << ", d_conflict = " << d_conflict << std::endl;
+  }
+}
+
+void TheoryStrings::checkConstantEquivalenceClasses( TermIndex* ti, std::vector< Node >& vecc ) {
+  Node n = ti->d_data;
+  if( !n.isNull() ){
+    //construct the constant
+    Node c = mkConcat( vecc );
+    if( !areEqual( n, c ) ){
+      Trace("strings-debug") << "Constant eqc : " << c << " for " << n << std::endl;
+      Trace("strings-debug") << "  ";
+      for( unsigned i=0; i<vecc.size(); i++ ){
+        Trace("strings-debug") << vecc[i] << " ";
+      }
+      Trace("strings-debug") << std::endl;
+      unsigned count = 0;
+      unsigned countc = 0;
+      std::vector< Node > exp;
+      while( count<n.getNumChildren() ){
+        while( count<n.getNumChildren() && areEqual( n[count], d_emptyString ) ){
+          addToExplanation( n[count], d_emptyString, exp );
+          count++;
+        }
+        if( count<n.getNumChildren() ){
+          Trace("strings-debug") << "...explain " << n[count] << " " << vecc[countc] << std::endl;
+          if( !areEqual( n[count], vecc[countc] ) ){
+            Node nrr = getRepresentative( n[count] );
+            Assert( !d_eqc_to_const_exp[nrr].isNull() );
+            addToExplanation( n[count], d_eqc_to_const_base[nrr], exp );
+            exp.push_back( d_eqc_to_const_exp[nrr] );
+          }else{
+            addToExplanation( n[count], vecc[countc], exp );
+          }
+          countc++;
+          count++;
+        }
+      }
+      //exp contains an explanation of n==c
+      Assert( countc==vecc.size() );
+      if( hasTerm( c ) ){
+        sendInference( exp, n.eqNode( c ), "I_CONST_MERGE" );
+        return;
+      }else if( !hasProcessed() ){
+        Node nr = getRepresentative( n );
+        std::map< Node, Node >::iterator it = d_eqc_to_const.find( nr );
+        if( it==d_eqc_to_const.end() ){
+          Trace("strings-debug") << "Set eqc const " << n << " to " << c << std::endl;
+          d_eqc_to_const[nr] = c;
+          d_eqc_to_const_base[nr] = n;
+          d_eqc_to_const_exp[nr] = mkAnd( exp );
+        }else if( c!=it->second ){
+          //conflict
+          Trace("strings-debug") << "Conflict, other constant was " << it->second << ", this constant was " << c << std::endl;
+          if( d_eqc_to_const_exp[nr].isNull() ){
+            // n==c ^ n == c' => false
+            addToExplanation( n, it->second, exp );
+          }else{
+            // n==c ^ n == d_eqc_to_const_base[nr] == c' => false
+            exp.push_back( d_eqc_to_const_exp[nr] );
+            addToExplanation( n, d_eqc_to_const_base[nr], exp );
+          }
+          sendInference( exp, d_false, "I_CONST_CONFLICT" );
+          return;
+        }else{
+          Trace("strings-debug") << "Duplicate constant." << std::endl;
+        }
+      }
+    }
+  }
+  for( std::map< TNode, TermIndex >::iterator it = ti->d_children.begin(); it != ti->d_children.end(); ++it ){
+    std::map< Node, Node >::iterator itc = d_eqc_to_const.find( it->first );
+    if( itc!=d_eqc_to_const.end() ){
+      vecc.push_back( itc->second );
+      checkConstantEquivalenceClasses( &it->second, vecc );
+      vecc.pop_back();
+      if( hasProcessed() ){
+        break;
+      }
+    }
+  }
+}
+
+void TheoryStrings::checkExtfEval( int effort ) {
+  Trace("strings-extf-list") << "Active extended functions, effort=" << effort << " : " << std::endl;
+  d_extf_info_tmp.clear();
+  bool has_nreduce = false;
+  std::vector< Node > terms; 
+  std::vector< Node > sterms; 
+  std::vector< std::vector< Node > > exp;
+  d_extt->getActive( terms );
+  d_extt->getSubstitutedTerms( effort, terms, sterms, exp );
+  for( unsigned i=0; i<terms.size(); i++ ){
+    Node n = terms[i];
+    Node sn = sterms[i];
+    //setup information about extf
+    d_extf_info_tmp[n].init();
+    std::map< Node, ExtfInfoTmp >::iterator itit = d_extf_info_tmp.find( n );
+    if( n.getType().isBoolean() ){
+      if( areEqual( n, d_true ) ){
+        itit->second.d_pol = 1;
+      }else if( areEqual( n, d_false ) ){
+        itit->second.d_pol = -1;
+      }
+    }
+    Trace("strings-extf-debug") << "Check extf " << n << " == " << sn << ", pol = " << itit->second.d_pol << ", effort=" << effort << "..." << std::endl;
+    //do the inference
+    Node to_reduce;
+    if( n!=sn ){
+      itit->second.d_exp.insert( itit->second.d_exp.end(), exp[i].begin(), exp[i].end() );
+      // inference is rewriting the substituted node
+      Node nrc = Rewriter::rewrite( sn );
+      //if rewrites to a constant, then do the inference and mark as reduced
+      if( nrc.isConst() ){
+        if( effort<3 ){
+          d_extt->markReduced( n );
+          Trace("strings-extf-debug") << "  resolvable by evaluation..." << std::endl;
+          std::vector< Node > exps;
+          Trace("strings-extf-debug") << "  get symbolic definition..." << std::endl;
+          Node nrs = getSymbolicDefinition( sn, exps );
+          if( !nrs.isNull() ){
+            Trace("strings-extf-debug") << "  rewrite " << nrs << "..." << std::endl;
+            nrs = Rewriter::rewrite( nrs );
+            //ensure the symbolic form is non-trivial
+            if( nrs.isConst() ){
+              Trace("strings-extf-debug") << "  symbolic definition is trivial..." << std::endl;
+              nrs = Node::null();
+            }
+          }else{
+            Trace("strings-extf-debug") << "  could not infer symbolic definition." << std::endl;
+          }
+          Node conc;
+          if( !nrs.isNull() ){
+            Trace("strings-extf-debug") << "  symbolic def : " << nrs << std::endl;
+            if( !areEqual( nrs, nrc ) ){
+              //infer symbolic unit
+              if( n.getType().isBoolean() ){
+                conc = nrc==d_true ? nrs : nrs.negate();
+              }else{
+                conc = nrs.eqNode( nrc );
+              }
+              itit->second.d_exp.clear();
+            }
+          }else{
+            if( !areEqual( n, nrc ) ){
+              if( n.getType().isBoolean() ){
+                if( areEqual( n, nrc==d_true ? d_false : d_true )  ){
+                  itit->second.d_exp.push_back( nrc==d_true ? n.negate() : n );
+                  conc = d_false;
+                }else{
+                  conc = nrc==d_true ? n : n.negate();
+                }
+              }else{
+                conc = n.eqNode( nrc );
+              }
+            }
+          }
+          if( !conc.isNull() ){
+            Trace("strings-extf") << "  resolve extf : " << sn << " -> " << nrc << std::endl;
+            sendInference( itit->second.d_exp, conc, effort==0 ? "EXTF" : "EXTF-N", true );
+            if( d_conflict ){
+              Trace("strings-extf-debug") << "  conflict, return." << std::endl;
+              return;
+            }
+          }
+        }else{
+          //check if it is already equal, if so, mark as reduced. Otherwise, do nothing.
+          if( areEqual( n, nrc ) ){ 
+            Trace("strings-extf") << "  resolved extf, since satisfied by model: " << n << std::endl;
+            itit->second.d_model_active = false;
+          }
+        }
+      //if it reduces to a conjunction, infer each and reduce
+      }else if( ( nrc.getKind()==kind::OR && itit->second.d_pol==-1 ) || ( nrc.getKind()==kind::AND && itit->second.d_pol==1 ) ){
+        Assert( effort<3 );
+        d_extt->markReduced( n );
+        itit->second.d_exp.push_back( itit->second.d_pol==-1 ? n.negate() : n );
+        Trace("strings-extf-debug") << "  decomposable..." << std::endl;
+        Trace("strings-extf") << "  resolve extf : " << sn << " -> " << nrc << ", pol = " << itit->second.d_pol << std::endl;
+        for( unsigned i=0; i<nrc.getNumChildren(); i++ ){
+          sendInference( itit->second.d_exp, itit->second.d_pol==-1 ? nrc[i].negate() : nrc[i], effort==0 ? "EXTF_d" : "EXTF_d-N" );
+        }
+      }else{
+        to_reduce = nrc;
+      }
+    }else{
+      to_reduce = sterms[i];
+    }
+    //if not reduced
+    if( !to_reduce.isNull() ){
+      Assert( effort<3 );
+      if( effort==1 ){
+        Trace("strings-extf") << "  cannot rewrite extf : " << to_reduce << std::endl;
+      }
+      checkExtfInference( n, to_reduce, itit->second, effort );
+      if( Trace.isOn("strings-extf-list") ){
+        Trace("strings-extf-list") << "  * " << to_reduce;
+        if( itit->second.d_pol!=0 ){
+          Trace("strings-extf-list") << ", pol = " << itit->second.d_pol;
+        }
+        if( n!=to_reduce ){
+          Trace("strings-extf-list") << ", from " << n;
+        }
+        Trace("strings-extf-list") << std::endl;
+      }  
+      if( d_extt->isActive( n ) && itit->second.d_model_active ){
+        has_nreduce = true;
+      }
+    }
+  }
+  d_has_extf = has_nreduce;
+}
+
+void TheoryStrings::checkExtfInference( Node n, Node nr, ExtfInfoTmp& in, int effort ){
+  //make additional inferences that do not contribute to the reduction of n, but may help show a refutation
+  if( in.d_pol!=0 ){
+    //add original to explanation
+    in.d_exp.push_back( in.d_pol==1 ? n : n.negate() );
+    
+    //d_extf_infer_cache stores whether we have made the inferences associated with a node n, 
+    // this may need to be generalized if multiple inferences apply
+        
+    if( nr.getKind()==kind::STRING_STRCTN ){
+      if( ( in.d_pol==1 && nr[1].getKind()==kind::STRING_CONCAT ) || ( in.d_pol==-1 && nr[0].getKind()==kind::STRING_CONCAT ) ){
+        if( d_extf_infer_cache.find( nr )==d_extf_infer_cache.end() ){
+          d_extf_infer_cache.insert( nr );
+          
+          //one argument does (not) contain each of the components of the other argument
+          int index = in.d_pol==1 ? 1 : 0;
+          std::vector< Node > children;
+          children.push_back( nr[0] );
+          children.push_back( nr[1] );
+          //Node exp_n = mkAnd( exp );
+          for( unsigned i=0; i<nr[index].getNumChildren(); i++ ){
+            children[index] = nr[index][i];
+            Node conc = NodeManager::currentNM()->mkNode( kind::STRING_STRCTN, children );
+            //can mark as reduced, since model for n => model for conc
+            d_extt->markReduced( conc );
+            sendInference( in.d_exp, in.d_pol==1 ? conc : conc.negate(), "CTN_Decompose" );
+          }
+          
+        }
+      }else{
+        //store this (reduced) assertion
+        //Assert( effort==0 || nr[0]==getRepresentative( nr[0] ) );
+        bool pol = in.d_pol==1;
+        if( std::find( d_extf_info_tmp[nr[0]].d_ctn[pol].begin(), d_extf_info_tmp[nr[0]].d_ctn[pol].end(), nr[1] )==d_extf_info_tmp[nr[0]].d_ctn[pol].end() ){
+          Trace("strings-extf-debug") << "  store contains info : " << nr[0] << " " << pol << " " << nr[1] << std::endl;
+          d_extf_info_tmp[nr[0]].d_ctn[pol].push_back( nr[1] );
+          d_extf_info_tmp[nr[0]].d_ctn_from[pol].push_back( n );
+          //transitive closure for contains
+          bool opol = !pol;
+          for( unsigned i=0; i<d_extf_info_tmp[nr[0]].d_ctn[opol].size(); i++ ){
+            Node onr = d_extf_info_tmp[nr[0]].d_ctn[opol][i];
+            Node conc = NodeManager::currentNM()->mkNode( kind::STRING_STRCTN, pol ? nr[1] : onr, pol ? onr : nr[1] );
+            conc = Rewriter::rewrite( conc );
+            bool do_infer = false;
+            if( conc.getKind()==kind::EQUAL ){
+              do_infer = !areDisequal( conc[0], conc[1] );
+            }else{
+              do_infer = !areEqual( conc, d_false );
+            }
+            if( do_infer ){
+              conc = conc.negate();
+              std::vector< Node > exp_c;
+              exp_c.insert( exp_c.end(), in.d_exp.begin(), in.d_exp.end() );
+              Node ofrom = d_extf_info_tmp[nr[0]].d_ctn_from[opol][i];
+              Assert( d_extf_info_tmp.find( ofrom )!=d_extf_info_tmp.end() );
+              exp_c.insert( exp_c.end(), d_extf_info_tmp[ofrom].d_exp.begin(), d_extf_info_tmp[ofrom].d_exp.end() );
+              sendInference( exp_c, conc, "CTN_Trans" );
+            }
+          }
+        }else{
+          Trace("strings-extf-debug") << "  redundant." << std::endl;
+          d_extt->markReduced( n );
+        }
+      }
+    }
+  }
+}
+
+void TheoryStrings::collectVars( Node n, std::vector< Node >& vars, std::map< Node, bool >& visited ) {
+  if( !n.isConst() ){
+    if( visited.find( n )==visited.end() ){
+      visited[n] = true;
+      if( n.getNumChildren()>0 ){
+        for( unsigned i=0; i<n.getNumChildren(); i++ ){
+          collectVars( n[i], vars, visited );
+        }
+      }else{
+        //Node nr = getRepresentative( n );
+        //vars[nr].push_back( n );
+        vars.push_back( n );
+      }
+    }
+  }
+}
+
+Node TheoryStrings::getSymbolicDefinition( Node n, std::vector< Node >& exp ) {
+  if( n.getNumChildren()==0 ){
+    NodeNodeMap::const_iterator it = d_proxy_var.find( n );
+    if( it==d_proxy_var.end() ){
+      return Node::null();
+    }else{
+      Node eq = n.eqNode( (*it).second );
+      eq = Rewriter::rewrite( eq );
+      if( std::find( exp.begin(), exp.end(), eq )==exp.end() ){
+        exp.push_back( eq );
+      }
+      return (*it).second;
+    }
+  }else{
+    std::vector< Node > children;
+    if (n.getMetaKind() == kind::metakind::PARAMETERIZED) {
+      children.push_back( n.getOperator() );
+    }
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      if( n.getKind()==kind::STRING_IN_REGEXP && i==1 ){
+        children.push_back( n[i] );
+      }else{
+        Node ns = getSymbolicDefinition( n[i], exp );
+        if( ns.isNull() ){
+          return Node::null();
+        }else{
+          children.push_back( ns );
+        }
+      }
+    }
+    return NodeManager::currentNM()->mkNode( n.getKind(), children );
+  }
+}
+
+Node TheoryStrings::getConstantEqc( Node eqc ) {
+  std::map< Node, Node >::iterator it = d_eqc_to_const.find( eqc );
+  if( it!=d_eqc_to_const.end() ){
+    return it->second;
+  }else{
+    return Node::null();
+  }
+}
+
+void TheoryStrings::debugPrintFlatForms( const char * tc ){
+  for( unsigned k=0; k<d_strings_eqc.size(); k++ ){
+    Node eqc = d_strings_eqc[k];
+    if( d_eqc[eqc].size()>1 ){
+      Trace( tc ) << "EQC [" << eqc << "]" << std::endl;
+    }else{
+      Trace( tc ) << "eqc [" << eqc << "]";
+    }
+    std::map< Node, Node >::iterator itc = d_eqc_to_const.find( eqc );
+    if( itc!=d_eqc_to_const.end() ){
+      Trace( tc ) << "  C: " << itc->second;
+      if( d_eqc[eqc].size()>1 ){
+        Trace( tc ) << std::endl;
+      }
+    }
+    if( d_eqc[eqc].size()>1 ){
+      for( unsigned i=0; i<d_eqc[eqc].size(); i++ ){
+        Node n = d_eqc[eqc][i];
+        Trace( tc ) << "    ";
+        for( unsigned j=0; j<d_flat_form[n].size(); j++ ){
+          Node fc = d_flat_form[n][j];
+          itc = d_eqc_to_const.find( fc );
+          Trace( tc ) << " ";
+          if( itc!=d_eqc_to_const.end() ){
+            Trace( tc ) << itc->second;
+          }else{
+            Trace( tc ) << fc;
+          }
+        }
+        if( n!=eqc ){
+          Trace( tc ) << ", from " << n;
+        }
+        Trace( tc ) << std::endl;
+      }
+    }else{
+      Trace( tc ) << std::endl;
+    }
+  }
+  Trace( tc ) << std::endl;
+}
+
+void TheoryStrings::debugPrintNormalForms( const char * tc ) {
+}
+
+struct sortConstLength {
+  std::map< Node, unsigned > d_const_length;
+  bool operator() (Node i, Node j) {
+    std::map< Node, unsigned >::iterator it_i = d_const_length.find( i );
+    std::map< Node, unsigned >::iterator it_j = d_const_length.find( j );
+    if( it_i==d_const_length.end() ){
+      if( it_j==d_const_length.end() ){
+        return i<j;
+      }else{
+        return false;
+      }
+    }else{
+      if( it_j==d_const_length.end() ){
+        return true;
+      }else{
+        return it_i->second<it_j->second;
+      }
+    }
+  }
+};
+
+
+void TheoryStrings::checkFlatForms() {
+  //first check for cycles, while building ordering of equivalence classes
+  d_eqc.clear();
+  d_flat_form.clear();
+  d_flat_form_index.clear();
+  Trace("strings-process") << "Check equivalence classes cycles...." << std::endl;
+  //rebuild strings eqc based on acyclic ordering
+  std::vector< Node > eqc;
+  eqc.insert( eqc.end(), d_strings_eqc.begin(), d_strings_eqc.end() );
+  d_strings_eqc.clear();
+  if( options::stringBinaryCsp() ){
+    //sort: process smallest constants first (necessary if doing binary splits)
+    sortConstLength scl;
+    for( unsigned i=0; i<eqc.size(); i++ ){
+      std::map< Node, Node >::iterator itc = d_eqc_to_const.find( eqc[i] );
+      if( itc!=d_eqc_to_const.end() ){
+        scl.d_const_length[eqc[i]] = itc->second.getConst<String>().size();
+      }
+    }
+    std::sort( eqc.begin(), eqc.end(), scl );
+  }
+  for( unsigned i=0; i<eqc.size(); i++ ){
+    std::vector< Node > curr;
+    std::vector< Node > exp;
+    checkCycles( eqc[i], curr, exp );
+    if( hasProcessed() ){
+      return;
+    }
+  }
+  Trace("strings-process-debug") << "Done check cycles, lemmas = " << !d_pending.empty() << " " << !d_lemma_cache.empty() << std::endl;
+  if( !hasProcessed() ){
+    //debug print flat forms
+    if( Trace.isOn("strings-ff") ){
+      Trace("strings-ff") << "Flat forms : " << std::endl;
+      debugPrintFlatForms( "strings-ff" );
+    }
+    
+    //inferences without recursively expanding flat forms
+    
+    //(1) approximate equality by containment, infer conflicts
+    for( unsigned k=0; k<d_strings_eqc.size(); k++ ){
+      Node eqc = d_strings_eqc[k];
+      Node c = getConstantEqc( eqc );
+      if( !c.isNull() ){
+        //if equivalence class is constant, all component constants in flat forms must be contained in it, in order
+        std::map< Node, std::vector< Node > >::iterator it = d_eqc.find( eqc );
+        if( it!=d_eqc.end() ){
+          for( unsigned i=0; i<it->second.size(); i++ ){
+            Node n = it->second[i];
+            int firstc, lastc;
+            if( !TheoryStringsRewriter::canConstantContainList( c, d_flat_form[n], firstc, lastc ) ){
+              Trace("strings-ff-debug") << "Flat form for " << n << " cannot be contained in constant " << c << std::endl;
+              Trace("strings-ff-debug") << "  indices = " << firstc << "/" << lastc << std::endl;
+              //conflict, explanation is n = base ^ base = c ^ relevant porition of ( n = f[n] )
+              std::vector< Node > exp;
+              Assert( d_eqc_to_const_base.find( eqc )!=d_eqc_to_const_base.end() );
+              addToExplanation( n, d_eqc_to_const_base[eqc], exp );
+              Assert( d_eqc_to_const_exp.find( eqc )!=d_eqc_to_const_exp.end() );
+              if( !d_eqc_to_const_exp[eqc].isNull() ){
+                exp.push_back( d_eqc_to_const_exp[eqc] );
+              }
+              for( int e=firstc; e<=lastc; e++ ){
+                if( d_flat_form[n][e].isConst() ){
+                  Assert( e>=0 && e<(int)d_flat_form_index[n].size() );
+                  Assert( d_flat_form_index[n][e]>=0 && d_flat_form_index[n][e]<(int)n.getNumChildren() );
+                  addToExplanation( d_flat_form[n][e], n[d_flat_form_index[n][e]], exp );
+                }
+              }
+              Node conc = d_false;
+              sendInference( exp, conc, "F_NCTN" );
+              return;
+            }
+          }
+        }
+      }
+    }
+    
+    //(2) scan lists, unification to infer conflicts and equalities
+    for( unsigned k=0; k<d_strings_eqc.size(); k++ ){
+      Node eqc = d_strings_eqc[k];
+      std::map< Node, std::vector< Node > >::iterator it = d_eqc.find( eqc );
+      if( it!=d_eqc.end() && it->second.size()>1 ){
+        //iterate over start index
+        for( unsigned start=0; start<it->second.size()-1; start++ ){
+          for( unsigned r=0; r<2; r++ ){
+            unsigned count = 0;
+            std::vector< Node > inelig;
+            for( unsigned i=0; i<=start; i++ ){
+              inelig.push_back( it->second[start] );
+            }
+            Node a = it->second[start];
+            Node b;
+            do{
+              std::vector< Node > exp;
+              //std::vector< Node > exp_n;
+              Node conc;
+              int inf_type = -1;
+              if( count==d_flat_form[a].size() ){
+                for( unsigned i=start+1; i<it->second.size(); i++ ){
+                  b = it->second[i];
+                  if( std::find( inelig.begin(), inelig.end(), b )==inelig.end() ){
+                    if( count<d_flat_form[b].size() ){
+                      //endpoint
+                      std::vector< Node > conc_c;
+                      for( unsigned j=count; j<d_flat_form[b].size(); j++ ){
+                        conc_c.push_back( b[d_flat_form_index[b][j]].eqNode( d_emptyString ) );
+                      }
+                      Assert( !conc_c.empty() );
+                      conc = mkAnd( conc_c );
+                      inf_type = 2;
+                      Assert( count>0 );
+                      //swap, will enforce is empty past current
+                      a = it->second[i]; b = it->second[start];
+                      count--;
+                      break;
+                    }
+                    inelig.push_back( it->second[i] );
+                  }
+                }
+              }else{
+                Node curr = d_flat_form[a][count];
+                Node curr_c = getConstantEqc( curr );
+                Node ac = a[d_flat_form_index[a][count]];
+                std::vector< Node > lexp;
+                Node lcurr = getLength( ac, lexp );
+                for( unsigned i=1; i<it->second.size(); i++ ){
+                  b = it->second[i];
+                  if( std::find( inelig.begin(), inelig.end(), b )==inelig.end() ){
+                    if( count==d_flat_form[b].size() ){
+                      inelig.push_back( b );
+                      //endpoint
+                      std::vector< Node > conc_c;
+                      for( unsigned j=count; j<d_flat_form[a].size(); j++ ){
+                        conc_c.push_back( a[d_flat_form_index[a][j]].eqNode( d_emptyString ) );
+                      }
+                      Assert( !conc_c.empty() );
+                      conc = mkAnd( conc_c );
+                      inf_type = 2;
+                      Assert( count>0 );
+                      count--;
+                      break;
+                    }else{
+                      Node cc = d_flat_form[b][count];
+                      if( cc!=curr ){
+                        Node bc = b[d_flat_form_index[b][count]];
+                        inelig.push_back( b );
+                        Assert( !areEqual( curr, cc ) );
+                        Node cc_c = getConstantEqc( cc );
+                        if( !curr_c.isNull() && !cc_c.isNull() ){
+                          //check for constant conflict
+                          int index;
+                          Node s = TheoryStringsRewriter::splitConstant( cc_c, curr_c, index, r==1 );
+                          if( s.isNull() ){
+                            addToExplanation( ac, d_eqc_to_const_base[curr], exp );
+                            addToExplanation( d_eqc_to_const_exp[curr], exp );
+                            addToExplanation( bc, d_eqc_to_const_base[cc], exp );
+                            addToExplanation( d_eqc_to_const_exp[cc], exp );
+                            conc = d_false;
+                            inf_type = 0;
+                            break;
+                          }
+                        }else if( (d_flat_form[a].size()-1)==count && (d_flat_form[b].size()-1)==count ){
+                          conc = ac.eqNode( bc );
+                          inf_type = 3;
+                          break;
+                        }else{
+                          //if lengths are the same, apply LengthEq
+                          std::vector< Node > lexp2;
+                          Node lcc = getLength( bc, lexp2 );
+                          if( areEqual( lcurr, lcc ) ){
+                            Trace("strings-ff-debug") << "Infer " << ac << " == " << bc << " since " << lcurr << " == " << lcc << std::endl;
+                            //exp_n.push_back( getLength( curr, true ).eqNode( getLength( cc, true ) ) );
+                            Trace("strings-ff-debug") << "Explanation for " << lcurr << " is ";
+                            for( unsigned j=0; j<lexp.size(); j++ ) { Trace("strings-ff-debug") << lexp[j] << std::endl; }
+                            Trace("strings-ff-debug") << "Explanation for " << lcc << " is ";
+                            for( unsigned j=0; j<lexp2.size(); j++ ) { Trace("strings-ff-debug") << lexp2[j] << std::endl; }
+                            exp.insert( exp.end(), lexp.begin(), lexp.end() );
+                            exp.insert( exp.end(), lexp2.begin(), lexp2.end() );
+                            addToExplanation( lcurr, lcc, exp );
+                            conc = ac.eqNode( bc );
+                            inf_type = 1;
+                            break;
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+              if( !conc.isNull() ){
+                Trace("strings-ff-debug") << "Found inference : " << conc << " based on equality " << a << " == " << b << " " << r << " " << inf_type << std::endl;
+                addToExplanation( a, b, exp );
+                //explain why prefixes up to now were the same
+                for( unsigned j=0; j<count; j++ ){
+                  Trace("strings-ff-debug") << "Add at " << d_flat_form_index[a][j] << " " << d_flat_form_index[b][j] << std::endl;
+                  addToExplanation( a[d_flat_form_index[a][j]], b[d_flat_form_index[b][j]], exp );
+                }
+                //explain why other components up to now are empty
+                for( unsigned t=0; t<2; t++ ){
+                  Node c = t==0 ? a : b;
+                  int jj;
+                  if( inf_type==3 || ( t==1 && inf_type==2 ) ){
+                    //explain all the empty components for F_EndpointEq, all for the short end for F_EndpointEmp
+                    jj = r==0 ? c.getNumChildren() : -1;
+                  }else{
+                    jj = t==0 ? d_flat_form_index[a][count] : d_flat_form_index[b][count];
+                  }
+                  if( r==0 ){
+                    for( int j=0; j<jj; j++ ){
+                      if( areEqual( c[j], d_emptyString ) ){
+                        addToExplanation( c[j], d_emptyString, exp );
+                      }
+                    }
+                  }else{
+                    for( int j=(c.getNumChildren()-1); j>jj; --j ){
+                      if( areEqual( c[j], d_emptyString ) ){
+                        addToExplanation( c[j], d_emptyString, exp );
+                      }
+                    }
+                  }
+                }
+                //notice that F_EndpointEmp is not typically applied, since strict prefix equality ( a.b = a ) where a,b non-empty 
+                //  is conflicting by arithmetic len(a.b)=len(a)+len(b)!=len(a) when len(b)!=0.
+                sendInference( exp, conc, inf_type==0 ? "F_Const" : ( inf_type==1 ? "F_Unify" : ( inf_type==2 ? "F_EndpointEmp" : "F_EndpointEq" ) ) );
+                if( d_conflict ){
+                  return;
+                }else{
+                  break;
+                }
+              }
+              count++;
+            }while( inelig.size()<it->second.size() );
+
+            for( unsigned i=0; i<it->second.size(); i++ ){
+              std::reverse( d_flat_form[it->second[i]].begin(), d_flat_form[it->second[i]].end() );
+              std::reverse( d_flat_form_index[it->second[i]].begin(), d_flat_form_index[it->second[i]].end() );
+            }
+          }
+        }
+      }
+    }
+    if( !hasProcessed() ){
+      // simple extended func reduction
+      Trace("strings-process") << "Check extended function reduction effort=1..." << std::endl;
+      checkExtfReductions( 1 );
+      Trace("strings-process") << "Done check extended function reduction" << std::endl;
+    }
+  }
+}
+
+Node TheoryStrings::checkCycles( Node eqc, std::vector< Node >& curr, std::vector< Node >& exp ){
+  if( std::find( curr.begin(), curr.end(), eqc )!=curr.end() ){
+    // a loop
+    return eqc;
+  }else if( std::find( d_strings_eqc.begin(), d_strings_eqc.end(), eqc )==d_strings_eqc.end() ){
+    curr.push_back( eqc );
+    //look at all terms in this equivalence class
+    eq::EqClassIterator eqc_i = eq::EqClassIterator( eqc, &d_equalityEngine );
+    while( !eqc_i.isFinished() ) {
+      Node n = (*eqc_i);
+      if( d_congruent.find( n )==d_congruent.end() ){
+        if( n.getKind() == kind::STRING_CONCAT ){
+          Trace("strings-cycle") << eqc << " check term : " << n << " in " << eqc << std::endl;
+          if( eqc!=d_emptyString_r ){
+            d_eqc[eqc].push_back( n );
+          }
+          for( unsigned i=0; i<n.getNumChildren(); i++ ){
+            Node nr = getRepresentative( n[i] );
+            if( eqc==d_emptyString_r ){
+              //for empty eqc, ensure all components are empty
+              if( nr!=d_emptyString_r ){
+                std::vector< Node > exp;
+                exp.push_back( n.eqNode( d_emptyString ) );
+                sendInference( exp, n[i].eqNode( d_emptyString ), "I_CYCLE_E" );
+                return Node::null();
+              }
+            }else{
+              if( nr!=d_emptyString_r ){
+                d_flat_form[n].push_back( nr );
+                d_flat_form_index[n].push_back( i );
+              }
+              //for non-empty eqc, recurse and see if we find a loop
+              Node ncy = checkCycles( nr, curr, exp );
+              if( !ncy.isNull() ){
+                Trace("strings-cycle") << eqc << " cycle: " << ncy << " at " << n << "[" << i << "] : " << n[i] << std::endl;
+                addToExplanation( n, eqc, exp );
+                addToExplanation( nr, n[i], exp );
+                if( ncy==eqc ){
+                  //can infer all other components must be empty
+                  for( unsigned j=0; j<n.getNumChildren(); j++ ){
+                    //take first non-empty
+                    if( j!=i && !areEqual( n[j], d_emptyString ) ){
+                      sendInference( exp, n[j].eqNode( d_emptyString ), "I_CYCLE" );
+                      return Node::null();
+                    }
+                  }
+                  Trace("strings-error") << "Looping term should be congruent : " << n << " " << eqc << " " << ncy << std::endl;
+                  //should find a non-empty component, otherwise would have been singular congruent (I_Norm_S)
+                  Assert( false );
+                }else{
+                  return ncy;
+                }
+              }else{
+                if( hasProcessed() ){
+                  return Node::null();
+                }
+              }
+            }
+          }
+        }
+      }
+      ++eqc_i;
+    }
+    curr.pop_back();
+    //now we can add it to the list of equivalence classes
+    d_strings_eqc.push_back( eqc );
+  }else{
+    //already processed
+  }
+  return Node::null();
+}
+
+
+void TheoryStrings::checkNormalForms(){
+  if( !options::stringEagerLen() ){
+    for( unsigned i=0; i<d_strings_eqc.size(); i++ ) {
+      Node eqc = d_strings_eqc[i];
+      eq::EqClassIterator eqc_i = eq::EqClassIterator( eqc, &d_equalityEngine );
+      while( !eqc_i.isFinished() ) {
+        Node n = (*eqc_i);
+        if( d_congruent.find( n )==d_congruent.end() ){
+          registerTerm( n, 2 );
+        }
+        ++eqc_i;
+      }
+    }
+  }
+  if( !hasProcessed() ){
+    Trace("strings-process") << "Normalize equivalence classes...." << std::endl;
+    //calculate normal forms for each equivalence class, possibly adding splitting lemmas
+    d_normal_forms.clear();
+    d_normal_forms_exp.clear();
+    std::map< Node, Node > nf_to_eqc;
+    std::map< Node, Node > eqc_to_nf;
+    std::map< Node, Node > eqc_to_exp;
+    for( unsigned i=0; i<d_strings_eqc.size(); i++ ) {
+      Node eqc = d_strings_eqc[i];
+      Trace("strings-process-debug") << "- Verify normal forms are the same for " << eqc << std::endl;
+      normalizeEquivalenceClass( eqc );
+      Trace("strings-debug") << "Finished normalizing eqc..." << std::endl;
+      if( hasProcessed() ){
+        return;
+      }else{
+        Node nf_term = mkConcat( d_normal_forms[eqc] );
+        std::map< Node, Node >::iterator itn = nf_to_eqc.find( nf_term );
+        if( itn!=nf_to_eqc.end() ){
+          //two equivalence classes have same normal form, merge
+          std::vector< Node > nf_exp;
+          nf_exp.push_back( mkAnd( d_normal_forms_exp[eqc] ) );
+          nf_exp.push_back( eqc_to_exp[itn->second] );
+          Node eq = d_normal_forms_base[eqc].eqNode( d_normal_forms_base[itn->second] );
+          sendInference( nf_exp, eq, "Normal_Form" );
+        } else {
+          nf_to_eqc[nf_term] = eqc;
+          eqc_to_nf[eqc] = nf_term;
+          eqc_to_exp[eqc] = mkAnd( d_normal_forms_exp[eqc] );
+        }
+      }
+      Trace("strings-process-debug") << "Done verifying normal forms are the same for " << eqc << std::endl;
+    }
+    if( !hasProcessed() ){
+      if(Trace.isOn("strings-nf")) {
+        Trace("strings-nf") << "**** Normal forms are : " << std::endl;
+        for( std::map< Node, Node >::iterator it = eqc_to_exp.begin(); it != eqc_to_exp.end(); ++it ){
+          Trace("strings-nf") << "  N[" << it->first << "] (base " << d_normal_forms_base[it->first] << ") = " << eqc_to_nf[it->first] << std::endl;
+          Trace("strings-nf") << "     exp: " << it->second << std::endl;
+        }
+        Trace("strings-nf") << std::endl;
+      }
+      checkExtfEval( 1 );
+      Trace("strings-process-debug") << "Done check extended functions re-eval, addedFact = " << !d_pending.empty() << " " << !d_lemma_cache.empty() << ", d_conflict = " << d_conflict << std::endl;
+      if( !hasProcessed() ){
+        if( !options::stringEagerLen() ){
+          checkLengthsEqc();
+          if( hasProcessed() ){
+            return;
+          }
+        }
+        //process disequalities between equivalence classes
+        checkDeqNF();
+        Trace("strings-process-debug") << "Done check disequalities, addedFact = " << !d_pending.empty() << " " << !d_lemma_cache.empty() << ", d_conflict = " << d_conflict << std::endl;
+      }
+    }
+    Trace("strings-solve") << "Finished check normal forms, #lemmas = " << d_lemma_cache.size() << ", conflict = " << d_conflict << std::endl;
+  }
+}
+
+//compute d_normal_forms_(base,exp,exp_depend)[eqc]
+void TheoryStrings::normalizeEquivalenceClass( Node eqc ) {
+  Trace("strings-process-debug") << "Process equivalence class " << eqc << std::endl;
+  if( areEqual( eqc, d_emptyString ) ) {
+#ifdef CVC4_ASSERTIONS
+    for( unsigned j=0; j<d_eqc[eqc].size(); j++ ){
+      Node n = d_eqc[eqc][j];
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        Assert( areEqual( n[i], d_emptyString ) );
+      }
+    }
+#endif
+    //do nothing
+    Trace("strings-process-debug") << "Return process equivalence class " << eqc << " : empty." << std::endl;
+    d_normal_forms_base[eqc] = d_emptyString;
+    d_normal_forms[eqc].clear();
+    d_normal_forms_exp[eqc].clear();
+  } else {
+    Assert( d_normal_forms.find(eqc)==d_normal_forms.end() );
+    //phi => t = s1 * ... * sn
+    // normal form for each non-variable term in this eqc (s1...sn)
+    std::vector< std::vector< Node > > normal_forms;
+    // explanation for each normal form (phi)
+    std::vector< std::vector< Node > > normal_forms_exp;
+    // dependency information 
+    std::vector< std::map< Node, std::map< bool, int > > > normal_forms_exp_depend;
+    // record terms for each normal form (t)
+    std::vector< Node > normal_form_src;
+    // get normal forms
+    getNormalForms(eqc, normal_forms, normal_form_src, normal_forms_exp, normal_forms_exp_depend);
+    if( hasProcessed() ){
+      return;
+    }
+    // process the normal forms
+    processNEqc( normal_forms, normal_form_src, normal_forms_exp, normal_forms_exp_depend );
+    if( hasProcessed() ){
+      return;
+    }
+    //debugPrintNormalForms( "strings-solve", eqc, normal_forms, normal_form_src, normal_forms_exp, normal_forms_exp_depend );
+    
+    //construct the normal form
+    Assert( !normal_forms.empty() );
+
+    int nf_index = 0;
+    std::vector< Node >::iterator itn = std::find( normal_form_src.begin(), normal_form_src.end(), eqc );
+    if( itn!=normal_form_src.end() ){
+      nf_index = itn - normal_form_src.begin();
+      Trace("strings-solve-debug2") << "take normal form " << nf_index << std::endl;
+      Assert( normal_form_src[nf_index]==eqc );
+    }else{
+      //just take the first normal form
+      Trace("strings-solve-debug2") << "take the first normal form" << std::endl;
+    }
+    d_normal_forms[eqc].insert( d_normal_forms[eqc].end(), normal_forms[nf_index].begin(), normal_forms[nf_index].end() );
+    d_normal_forms_exp[eqc].insert( d_normal_forms_exp[eqc].end(), normal_forms_exp[nf_index].begin(), normal_forms_exp[nf_index].end() );
+    Trace("strings-solve-debug2") << "take normal form ... done" << std::endl;
+    d_normal_forms_base[eqc] = normal_form_src[nf_index];
+    //track dependencies 
+    for( unsigned i=0; i<normal_forms_exp[nf_index].size(); i++ ){
+      Node exp = normal_forms_exp[nf_index][i];
+      for( unsigned r=0; r<2; r++ ){
+        d_normal_forms_exp_depend[eqc][exp][r==0] = normal_forms_exp_depend[nf_index][exp][r==0];
+      }
+    }
+    Trace("strings-process-debug") << "Return process equivalence class " << eqc << " : returned, size = " << d_normal_forms[eqc].size() << std::endl;
+  }
+}
+
+void trackNfExpDependency( std::vector< Node >& nf_exp_n, std::map< Node, std::map< bool, int > >& nf_exp_depend_n, Node exp, int new_val, int new_rev_val ){
+  if( std::find( nf_exp_n.begin(), nf_exp_n.end(), exp )==nf_exp_n.end() ){
+    nf_exp_n.push_back( exp );
+  }
+  for( unsigned k=0; k<2; k++ ){
+    int val = k==0 ? new_val : new_rev_val;
+    std::map< bool, int >::iterator itned = nf_exp_depend_n[exp].find( k==1 );
+    if( itned==nf_exp_depend_n[exp].end() ){
+      Trace("strings-process-debug") << "Deps : set dependency on " << exp << " to " << val << " isRev=" << (k==0) << std::endl;
+      nf_exp_depend_n[exp][k==1] = val;
+    }else{
+      Trace("strings-process-debug") << "Deps : Multiple dependencies on " << exp << " : " << itned->second << " " << val << " isRev=" << (k==0) << std::endl;
+      //if we already have a dependency (in the case of non-linear string equalities), it is min/max
+      bool cmp = val > itned->second;
+      if( cmp==(k==1) ){
+        nf_exp_depend_n[exp][k==1] = val;
+      }
+    }
+  }
+}
+
+void TheoryStrings::getNormalForms( Node &eqc, std::vector< std::vector< Node > > &normal_forms, std::vector< Node > &normal_form_src,
+                                    std::vector< std::vector< Node > > &normal_forms_exp, std::vector< std::map< Node, std::map< bool, int > > >& normal_forms_exp_depend ) {
+  //constant for equivalence class
+  Node eqc_non_c = eqc;
+  Trace("strings-process-debug") << "Get normal forms " << eqc << std::endl;
+  eq::EqClassIterator eqc_i = eq::EqClassIterator( eqc, &d_equalityEngine );
+  while( !eqc_i.isFinished() ){
+    Node n = (*eqc_i);
+    if( d_congruent.find( n )==d_congruent.end() ){
+      if( n.getKind() == kind::CONST_STRING || n.getKind() == kind::STRING_CONCAT ){
+        Trace("strings-process-debug") << "Get Normal Form : Process term " << n << " in eqc " << eqc << std::endl;
+        std::vector< Node > nf_n;
+        std::vector< Node > nf_exp_n;
+        std::map< Node, std::map< bool, int > > nf_exp_depend_n;
+        if( n.getKind()==kind::CONST_STRING ){
+          if( n!=d_emptyString ) {
+            nf_n.push_back( n );
+          }
+        }else if( n.getKind()==kind::STRING_CONCAT ){
+          for( unsigned i=0; i<n.getNumChildren(); i++ ) {
+            Node nr = d_equalityEngine.getRepresentative( n[i] );
+            Trace("strings-process-debug") << "Normalizing subterm " << n[i] << " = "  << nr << std::endl;
+            Assert( d_normal_forms.find( nr )!=d_normal_forms.end() );
+            unsigned orig_size = nf_n.size();
+            unsigned add_size = d_normal_forms[nr].size();
+            //if not the empty string, add to current normal form
+            if( !d_normal_forms[nr].empty() ){
+              for( unsigned r=0; r<d_normal_forms[nr].size(); r++ ) {
+                if( Trace.isOn("strings-error") ) {
+                  if( d_normal_forms[nr][r].getKind()==kind::STRING_CONCAT ){
+                    Trace("strings-error") << "Strings::Error: From eqc = " << eqc << ", " << n << " index " << i << ", bad normal form : ";
+                    for( unsigned rr=0; rr<d_normal_forms[nr].size(); rr++ ) {
+                      Trace("strings-error") << d_normal_forms[nr][rr] << " ";
+                    }
+                    Trace("strings-error") << std::endl;
+                  }
+                }
+                Assert( d_normal_forms[nr][r].getKind()!=kind::STRING_CONCAT );
+              }
+              nf_n.insert( nf_n.end(), d_normal_forms[nr].begin(), d_normal_forms[nr].end() );
+            }
+
+            for( unsigned j=0; j<d_normal_forms_exp[nr].size(); j++ ){
+              Node exp = d_normal_forms_exp[nr][j];
+              //track depends
+              trackNfExpDependency( nf_exp_n, nf_exp_depend_n, exp,
+                                    orig_size + d_normal_forms_exp_depend[nr][exp][false], 
+                                    orig_size + ( add_size - d_normal_forms_exp_depend[nr][exp][true] ) );
+            }
+            if( d_normal_forms_base[nr]!=n[i] ){
+              Assert( d_normal_forms_base.find( nr )!=d_normal_forms_base.end() );
+              Node eq = n[i].eqNode( d_normal_forms_base[nr] );
+              //track depends : entire current segment is dependent upon base equality
+              trackNfExpDependency( nf_exp_n, nf_exp_depend_n, eq, orig_size, orig_size + add_size );
+            }
+          }
+          //convert forward indices to reverse indices
+          int total_size = nf_n.size();
+          for( std::map< Node, std::map< bool, int > >::iterator it = nf_exp_depend_n.begin(); it != nf_exp_depend_n.end(); ++it ){
+            it->second[true] = total_size - it->second[true];
+            Assert( it->second[true]>=0 );
+          }
+        }
+        //if not equal to self
+        if( nf_n.size()>1 || ( nf_n.size()==1 && nf_n[0].getKind()==kind::CONST_STRING ) ){
+          if( nf_n.size()>1 ) {
+            for( unsigned i=0; i<nf_n.size(); i++ ){
+              if( Trace.isOn("strings-error") ){
+                Trace("strings-error") << "Cycle for normal form ";
+                printConcat(nf_n,"strings-error");
+                Trace("strings-error") << "..." << nf_n[i] << std::endl;
+              }
+              Assert( !areEqual( nf_n[i], n ) );
+            }
+          }
+          normal_forms.push_back(nf_n);
+          normal_form_src.push_back(n);
+          normal_forms_exp.push_back(nf_exp_n);
+          normal_forms_exp_depend.push_back(nf_exp_depend_n);
+        }else{
+          //this was redundant: combination of self + empty string(s)
+          Node nn = nf_n.size()==0 ? d_emptyString : nf_n[0];
+          Assert( areEqual( nn, eqc ) );
+        }
+      }else{
+        eqc_non_c = n;
+      }
+    }
+    ++eqc_i;
+  }
+
+  if( normal_forms.empty() ) {
+    Trace("strings-solve-debug2") << "construct the normal form" << std::endl;
+    //do not choose a concat here use "eqc_non_c" (in this case they have non-trivial explanation why they normalize to self)
+    std::vector< Node > eqc_non_c_nf;
+    getConcatVec( eqc_non_c, eqc_non_c_nf );
+    normal_forms.push_back( eqc_non_c_nf );
+    normal_form_src.push_back( eqc_non_c );
+    normal_forms_exp.push_back( std::vector< Node >() );
+    normal_forms_exp_depend.push_back( std::map< Node, std::map< bool, int > >() );
+  }else{
+    if(Trace.isOn("strings-solve")) {
+      Trace("strings-solve") << "--- Normal forms for equivlance class " << eqc << " : " << std::endl;
+      for( unsigned i=0; i<normal_forms.size(); i++ ) {
+        Trace("strings-solve") << "#" << i << " (from " << normal_form_src[i] << ") : ";
+        for( unsigned j=0; j<normal_forms[i].size(); j++ ) {
+          if(j>0) {
+            Trace("strings-solve") << ", ";
+          }
+          Trace("strings-solve") << normal_forms[i][j];
+        }
+        Trace("strings-solve") << std::endl;
+        Trace("strings-solve") << "   Explanation is : ";
+        if(normal_forms_exp[i].size() == 0) {
+          Trace("strings-solve") << "NONE";
+        } else {
+          for( unsigned j=0; j<normal_forms_exp[i].size(); j++ ) {
+            if(j>0) {
+              Trace("strings-solve") << " AND ";
+            }
+            Trace("strings-solve") << normal_forms_exp[i][j];
+          }
+          Trace("strings-solve") << std::endl;
+          Trace("strings-solve") << "WITH DEPENDENCIES : " << std::endl;
+          for( unsigned j=0; j<normal_forms_exp[i].size(); j++ ) {
+            Trace("strings-solve") << "   " << normal_forms_exp[i][j] << " -> ";
+            Trace("strings-solve") << normal_forms_exp_depend[i][normal_forms_exp[i][j]][false] << ",";
+            Trace("strings-solve") << normal_forms_exp_depend[i][normal_forms_exp[i][j]][true] << std::endl;
+          }
+        }
+        Trace("strings-solve") << std::endl;
+        
+      }
+    } else {
+      Trace("strings-solve") << "--- Single normal form for equivalence class " << eqc << std::endl;
+    }
+    
+    //if equivalence class is constant, approximate as containment, infer conflicts
+    Node c = getConstantEqc( eqc );
+    if( !c.isNull() ){
+      Trace("strings-solve") << "Eqc is constant " << c << std::endl;
+      for( unsigned i=0; i<normal_forms.size(); i++ ) {
+        int firstc, lastc;
+        if( !TheoryStringsRewriter::canConstantContainList( c, normal_forms[i], firstc, lastc ) ){
+          Node n = normal_form_src[i];
+          //conflict
+          Trace("strings-solve") << "Normal form for " << n << " cannot be contained in constant " << c << std::endl;
+          //conflict, explanation is n = base ^ base = c ^ relevant porition of ( n = N[n] )
+          std::vector< Node > exp;
+          Assert( d_eqc_to_const_base.find( eqc )!=d_eqc_to_const_base.end() );
+          addToExplanation( n, d_eqc_to_const_base[eqc], exp );
+          Assert( d_eqc_to_const_exp.find( eqc )!=d_eqc_to_const_exp.end() );
+          if( !d_eqc_to_const_exp[eqc].isNull() ){
+            exp.push_back( d_eqc_to_const_exp[eqc] );
+          }
+          //TODO: this can be minimized based on firstc/lastc, normal_forms_exp_depend
+          exp.insert( exp.end(), normal_forms_exp[i].begin(), normal_forms_exp[i].end() );
+          Node conc = d_false;
+          sendInference( exp, conc, "N_NCTN" );
+        }
+      }
+    }
+  }
+}
+
+void TheoryStrings::getExplanationVectorForPrefix( std::vector< std::vector< Node > > &normal_forms_exp, std::vector< std::map< Node, std::map< bool, int > > >& normal_forms_exp_depend,
+                                                   unsigned i, int index, bool isRev, std::vector< Node >& curr_exp ) {
+  if( index==-1 || !options::stringMinPrefixExplain() ){
+    curr_exp.insert(curr_exp.end(), normal_forms_exp[i].begin(), normal_forms_exp[i].end() );
+  }else{
+    for( unsigned k=0; k<normal_forms_exp[i].size(); k++ ){
+      Node exp = normal_forms_exp[i][k];
+      int dep = normal_forms_exp_depend[i][exp][isRev];
+      if( dep<=index ){
+        curr_exp.push_back( exp );
+        Trace("strings-explain-prefix-debug") << "  include : " << exp << std::endl;
+      }else{
+        Trace("strings-explain-prefix-debug") << "  exclude : " << exp << std::endl;
+      }
+    }
+  }
+}
+
+void TheoryStrings::getExplanationVectorForPrefixEq( std::vector< std::vector< Node > > &normal_forms, std::vector< Node > &normal_form_src,
+                                                     std::vector< std::vector< Node > > &normal_forms_exp, std::vector< std::map< Node, std::map< bool, int > > >& normal_forms_exp_depend,
+                                                     unsigned i, unsigned j, int index_i, int index_j, bool isRev, std::vector< Node >& curr_exp ) {
+  Trace("strings-explain-prefix") << "Get explanation for prefix " << index_i << ", " << index_j << " of normal forms " << i << " and " << j << ", reverse = " << isRev << std::endl;
+  for( unsigned r=0; r<2; r++ ){
+    getExplanationVectorForPrefix( normal_forms_exp, normal_forms_exp_depend, r==0 ? i : j, r==0 ? index_i : index_j, isRev, curr_exp );
+  }
+  Trace("strings-explain-prefix") << "Included " << curr_exp.size() << " / " << ( normal_forms_exp[i].size() + normal_forms_exp[j].size() ) << std::endl;
+  addToExplanation( normal_form_src[i], normal_form_src[j], curr_exp );
+}
+
+
+void TheoryStrings::processNEqc( std::vector< std::vector< Node > > &normal_forms, std::vector< Node > &normal_form_src,
+                                 std::vector< std::vector< Node > > &normal_forms_exp, std::vector< std::map< Node, std::map< bool, int > > >& normal_forms_exp_depend ){
+  //the possible inferences
+  std::vector< InferInfo > pinfer;
+  // loop over all pairs 
+  for(unsigned i=0; i<normal_forms.size()-1; i++) {
+    //unify each normalform[j] with normal_forms[i]
+    for(unsigned j=i+1; j<normal_forms.size(); j++ ) {
+      //ensure that normal_forms[i] and normal_forms[j] are the same modulo equality, add to pinfer if not
+      Trace("strings-solve") << "Strings: Process normal form #" << i << " against #" << j << "..." << std::endl;
+      if( isNormalFormPair( normal_form_src[i], normal_form_src[j] ) ) {
+        Trace("strings-solve") << "Strings: Already cached." << std::endl;
+      }else{
+        //process the reverse direction first (check for easy conflicts and inferences)
+        unsigned rindex = 0;
+        processReverseNEq( normal_forms, normal_form_src, normal_forms_exp, normal_forms_exp_depend, i, j, rindex, 0, pinfer );
+        if( hasProcessed() ){
+          return;
+        }else if( !pinfer.empty() && pinfer.back().d_id==1 ){
+          break;
+        }
+        //AJR: for less aggressive endpoint inference
+        //rindex = 0;
+
+        unsigned index = 0;
+        processSimpleNEq( normal_forms, normal_form_src, normal_forms_exp, normal_forms_exp_depend, i, j, index, false, rindex, pinfer );
+        if( hasProcessed() ){
+          return;
+        }else if( !pinfer.empty() && pinfer.back().d_id==1 ){
+          break;
+        }
+      }
+    }
+  }
+  if( !pinfer.empty() ){
+    //now, determine which of the possible inferences we want to add
+    int use_index = -1;
+    Trace("strings-solve") << "Possible inferences (" << pinfer.size() << ") : " << std::endl;
+    unsigned min_id = 9;
+    unsigned max_index = 0;
+    for( unsigned i=0; i<pinfer.size(); i++ ){
+      Trace("strings-solve") << "From " << pinfer[i].d_i << " / " << pinfer[i].d_j << " (rev=" << pinfer[i].d_rev << ") : ";
+      Trace("strings-solve") << pinfer[i].d_conc << " by " << pinfer[i].getId() << std::endl;
+      if( use_index==-1 || pinfer[i].d_id<min_id || ( pinfer[i].d_id==min_id && pinfer[i].d_index>max_index ) ){
+        min_id = pinfer[i].d_id;
+        max_index = pinfer[i].d_index;
+        use_index = i;
+      }
+    }
+    //send the inference
+    sendInference( pinfer[use_index].d_ant, pinfer[use_index].d_antn, pinfer[use_index].d_conc, pinfer[use_index].getId(), pinfer[use_index].sendAsLemma() );
+    for( std::map< int, std::vector< Node > >::iterator it = pinfer[use_index].d_new_skolem.begin(); it != pinfer[use_index].d_new_skolem.end(); ++it ){
+      for( unsigned i=0; i<it->second.size(); i++ ){
+        if( it->first==0 ){
+          sendLengthLemma( it->second[i] );
+        }else if( it->first==1 ){
+          registerNonEmptySkolem( it->second[i] );
+        }
+      }
+    }
+  }
+}
+
+bool TheoryStrings::InferInfo::sendAsLemma() {
+  return true;
+}
+
+void TheoryStrings::processReverseNEq( std::vector< std::vector< Node > > &normal_forms, std::vector< Node > &normal_form_src,
+                                       std::vector< std::vector< Node > > &normal_forms_exp, std::vector< std::map< Node, std::map< bool, int > > >& normal_forms_exp_depend,
+                                       unsigned i, unsigned j, unsigned& index, unsigned rproc, std::vector< InferInfo >& pinfer ) {
+  //reverse normal form of i, j
+  std::reverse( normal_forms[i].begin(), normal_forms[i].end() );
+  std::reverse( normal_forms[j].begin(), normal_forms[j].end() );
+
+  processSimpleNEq( normal_forms, normal_form_src, normal_forms_exp, normal_forms_exp_depend, i, j, index, true, rproc, pinfer );
+
+  //reverse normal form of i, j
+  std::reverse( normal_forms[i].begin(), normal_forms[i].end() );
+  std::reverse( normal_forms[j].begin(), normal_forms[j].end() );
+}
+
+//rproc is the # is the size of suffix that is identical
+void TheoryStrings::processSimpleNEq( std::vector< std::vector< Node > > &normal_forms, std::vector< Node > &normal_form_src, 
+                                      std::vector< std::vector< Node > > &normal_forms_exp, std::vector< std::map< Node, std::map< bool, int > > >& normal_forms_exp_depend,
+                                      unsigned i, unsigned j, unsigned& index, bool isRev, unsigned rproc, std::vector< InferInfo >& pinfer ) {
+  Assert( rproc<=normal_forms[i].size() && rproc<=normal_forms[j].size() );
+  bool success;
+  do {
+    success = false;
+    //if we are at the end
+    if( index==(normal_forms[i].size()-rproc) || index==(normal_forms[j].size()-rproc) ){
+      if( index==(normal_forms[i].size()-rproc)  && index==(normal_forms[j].size()-rproc)  ){
+        //we're done
+      }else{
+        //the remainder must be empty
+        unsigned k = index==(normal_forms[i].size()-rproc) ? j : i;
+        unsigned index_k = index;
+        //Node eq_exp = mkAnd( curr_exp );
+        std::vector< Node > curr_exp;
+        getExplanationVectorForPrefixEq( normal_forms, normal_form_src, normal_forms_exp, normal_forms_exp_depend, i, j, -1, -1, isRev, curr_exp );
+        while( !d_conflict && index_k<(normal_forms[k].size()-rproc) ){
+          //can infer that this string must be empty
+          Node eq = normal_forms[k][index_k].eqNode( d_emptyString );
+          //Trace("strings-lemma") << "Strings: Infer " << eq << " from " << eq_exp << std::endl;
+          Assert( !areEqual( d_emptyString, normal_forms[k][index_k] ) );
+          sendInference( curr_exp, eq, "N_EndpointEmp" );
+          index_k++;
+        }
+      }
+    }else{
+      Trace("strings-solve-debug") << "Process " << normal_forms[i][index] << " ... " << normal_forms[j][index] << std::endl;
+      if( normal_forms[i][index]==normal_forms[j][index] ){
+        Trace("strings-solve-debug") << "Simple Case 1 : strings are equal" << std::endl;
+        index++;
+        success = true;
+      }else{
+        Assert( !areEqual(normal_forms[i][index], normal_forms[j][index]) );
+        std::vector< Node > temp_exp;
+        Node length_term_i = getLength( normal_forms[i][index], temp_exp );
+        Node length_term_j = getLength( normal_forms[j][index], temp_exp );
+        //check  length(normal_forms[i][index]) == length(normal_forms[j][index])
+        if( areEqual( length_term_i, length_term_j ) ){
+          Trace("strings-solve-debug") << "Simple Case 2 : string lengths are equal" << std::endl;
+          Node eq = normal_forms[i][index].eqNode( normal_forms[j][index] );
+          //eq = Rewriter::rewrite( eq );
+          Node length_eq = length_term_i.eqNode( length_term_j );
+          //temp_exp.insert(temp_exp.end(), curr_exp.begin(), curr_exp.end() );
+          getExplanationVectorForPrefixEq( normal_forms, normal_form_src, normal_forms_exp, normal_forms_exp_depend, i, j, index, index, isRev, temp_exp );
+          temp_exp.push_back(length_eq);
+          sendInference( temp_exp, eq, "N_Unify" );
+          return;
+        }else if( ( normal_forms[i][index].getKind()!=kind::CONST_STRING && index==normal_forms[i].size()-rproc-1 ) ||
+                  ( normal_forms[j][index].getKind()!=kind::CONST_STRING && index==normal_forms[j].size()-rproc-1 ) ){
+          Trace("strings-solve-debug") << "Simple Case 3 : at endpoint" << std::endl;
+          std::vector< Node > antec;
+          //antec.insert(antec.end(), curr_exp.begin(), curr_exp.end() );
+          getExplanationVectorForPrefixEq( normal_forms, normal_form_src, normal_forms_exp, normal_forms_exp_depend, i, j, -1, -1, isRev, antec );
+          std::vector< Node > eqn;
+          for( unsigned r=0; r<2; r++ ) {
+            int index_k = index;
+            int k = r==0 ? i : j;
+            std::vector< Node > eqnc;
+            for( unsigned index_l=index_k; index_l<(normal_forms[k].size()-rproc); index_l++ ) {
+              if(isRev) {
+                eqnc.insert(eqnc.begin(), normal_forms[k][index_l] );
+              } else {
+                eqnc.push_back( normal_forms[k][index_l] );
+              }
+            }
+            eqn.push_back( mkConcat( eqnc ) );
+          }
+          if( !areEqual( eqn[0], eqn[1] ) ){
+            sendInference( antec, eqn[0].eqNode( eqn[1] ), "N_EndpointEq", true );
+            return;
+          }else{
+            Assert( normal_forms[i].size()==normal_forms[j].size() );
+            index = normal_forms[i].size()-rproc;
+          }
+        }else if( normal_forms[i][index].isConst() && normal_forms[j][index].isConst() ){
+          Node const_str = normal_forms[i][index];
+          Node other_str = normal_forms[j][index];
+          Trace("strings-solve-debug") << "Simple Case 3 : Const Split : " << const_str << " vs " << other_str << " at index " << index << ", isRev = " << isRev << std::endl;
+          unsigned len_short = const_str.getConst<String>().size() <= other_str.getConst<String>().size() ? const_str.getConst<String>().size() : other_str.getConst<String>().size();
+          bool isSameFix = isRev ? const_str.getConst<String>().rstrncmp(other_str.getConst<String>(), len_short): const_str.getConst<String>().strncmp(other_str.getConst<String>(), len_short);
+          if( isSameFix ) {
+            //same prefix/suffix
+            //k is the index of the string that is shorter
+            int k = const_str.getConst<String>().size()<other_str.getConst<String>().size() ? i : j;
+            int l = const_str.getConst<String>().size()<other_str.getConst<String>().size() ? j : i;
+            //update the nf exp dependencies
+            //notice this is not critical for soundness: not doing the below incrementing will only lead to overapproximating when antecedants are required in explanations
+            for( std::map< Node, std::map< bool, int > >::iterator itnd = normal_forms_exp_depend[l].begin(); itnd != normal_forms_exp_depend[l].end(); ++itnd ){
+              for( std::map< bool, int >::iterator itnd2 = itnd->second.begin(); itnd2 != itnd->second.end(); ++itnd2 ){
+                //see if this can be incremented: it can if it is not relevant to the current index
+                Assert( itnd2->second>=0 && itnd2->second<=(int)normal_forms[l].size() );
+                bool increment = (itnd2->first==isRev) ? itnd2->second>(int)index : ( (int)normal_forms[l].size()-1-itnd2->second )<(int)index;
+                if( increment ){
+                  normal_forms_exp_depend[l][itnd->first][itnd2->first] = itnd2->second + 1;
+                }
+              }
+            }
+            if( isRev ){
+              int new_len = normal_forms[l][index].getConst<String>().size() - len_short;
+              Node remainderStr = NodeManager::currentNM()->mkConst( normal_forms[l][index].getConst<String>().substr(0, new_len) );
+              Trace("strings-solve-debug-test") << "Break normal form of " << normal_forms[l][index] << " into " << normal_forms[k][index] << ", " << remainderStr << std::endl;
+              normal_forms[l].insert( normal_forms[l].begin()+index + 1, remainderStr );
+            }else{
+              Node remainderStr = NodeManager::currentNM()->mkConst(normal_forms[l][index].getConst<String>().substr(len_short));
+              Trace("strings-solve-debug-test") << "Break normal form of " << normal_forms[l][index] << " into " << normal_forms[k][index] << ", " << remainderStr << std::endl;
+              normal_forms[l].insert( normal_forms[l].begin()+index + 1, remainderStr );
+            }
+            normal_forms[l][index] = normal_forms[k][index];
+            index++;
+            success = true;
+          }else{
+            //conflict
+            std::vector< Node > antec;
+            getExplanationVectorForPrefixEq( normal_forms, normal_form_src, normal_forms_exp, normal_forms_exp_depend, i, j, index, index, isRev, antec );
+            sendInference( antec, d_false, "N_Const", true );
+            return;
+          }
+        }else{
+          //construct the candidate inference "info"
+          InferInfo info;
+          info.d_index = index;
+          //for debugging
+          info.d_i = i;
+          info.d_j = j;
+          info.d_rev = isRev;
+          bool info_valid = false;
+          Assert( index<normal_forms[i].size()-rproc && index<normal_forms[j].size()-rproc );
+          std::vector< Node > lexp;
+          Node length_term_i = getLength( normal_forms[i][index], lexp );
+          Node length_term_j = getLength( normal_forms[j][index], lexp );
+          //split on equality between string lengths (note that splitting on equality between strings is worse since it is harder to process)
+          if( !areDisequal( length_term_i, length_term_j ) && !areEqual( length_term_i, length_term_j ) &&
+              normal_forms[i][index].getKind()!=kind::CONST_STRING && normal_forms[j][index].getKind()!=kind::CONST_STRING ){   //AJR: remove the latter 2 conditions?
+            Trace("strings-solve-debug") << "Non-simple Case 1 : string lengths neither equal nor disequal" << std::endl;
+            //try to make the lengths equal via splitting on demand
+            Node length_eq = NodeManager::currentNM()->mkNode( kind::EQUAL, length_term_i, length_term_j );
+            length_eq = Rewriter::rewrite( length_eq  );
+            //set info
+            info.d_conc = NodeManager::currentNM()->mkNode( kind::OR, length_eq, length_eq.negate() );
+            info.d_pending_phase[ length_eq ] = true;
+            info.d_id = 3;
+            info_valid = true;
+          }else{
+            Trace("strings-solve-debug") << "Non-simple Case 2 : must compare strings" << std::endl;
+            int loop_in_i = -1;
+            int loop_in_j = -1;
+            if( detectLoop( normal_forms, i, j, index, loop_in_i, loop_in_j, rproc ) ){
+              if( !isRev ){  //FIXME
+              getExplanationVectorForPrefixEq( normal_forms, normal_form_src, normal_forms_exp, normal_forms_exp_depend, i, j, -1, -1, isRev, info.d_ant );
+              //set info
+              if( processLoop( normal_forms, normal_form_src, i, j, loop_in_i!=-1 ? i : j, loop_in_i!=-1 ? j : i, loop_in_i!=-1 ? loop_in_i : loop_in_j, index, info ) ){
+                info_valid = true;
+              }
+              }
+            }else{
+              //AJR: length entailment here?
+              if( normal_forms[i][index].getKind() == kind::CONST_STRING || normal_forms[j][index].getKind() == kind::CONST_STRING ){
+                unsigned const_k = normal_forms[i][index].getKind() == kind::CONST_STRING ? i : j;
+                unsigned nconst_k = normal_forms[i][index].getKind() == kind::CONST_STRING ? j : i;
+                Node other_str = normal_forms[nconst_k][index];
+                Assert( other_str.getKind()!=kind::CONST_STRING, "Other string is not constant." );
+                Assert( other_str.getKind()!=kind::STRING_CONCAT, "Other string is not CONCAT." );
+                if( !d_equalityEngine.areDisequal( other_str, d_emptyString, true ) ){
+                  Node eq = other_str.eqNode( d_emptyString );
+                  //set info
+                  info.d_conc = NodeManager::currentNM()->mkNode( kind::OR, eq, eq.negate() );
+                  info.d_id = 4;
+                  info_valid = true;
+                }else{
+                  if( !isRev ){  //FIXME
+                  Node xnz = other_str.eqNode( d_emptyString ).negate();  
+                  unsigned index_nc_k = index+1;
+                  //Node next_const_str = TheoryStringsRewriter::collectConstantStringAt( normal_forms[nconst_k], index_nc_k, false );
+                  unsigned start_index_nc_k = index+1;
+                  Node next_const_str = TheoryStringsRewriter::getNextConstantAt( normal_forms[nconst_k], start_index_nc_k, index_nc_k, false );
+                  if( !next_const_str.isNull() ) {         
+                    unsigned index_c_k = index;
+                    Node const_str = TheoryStringsRewriter::collectConstantStringAt( normal_forms[const_k], index_c_k, false );
+                    Assert( !const_str.isNull() );
+                    CVC4::String stra = const_str.getConst<String>();
+                    CVC4::String strb = next_const_str.getConst<String>();
+                    //since non-empty, we start with charecter #1
+                    size_t p;
+                    if( isRev ){
+                      CVC4::String stra1 = stra.prefix( stra.size()-1 );
+                      p = stra.size() - stra1.roverlap(strb);
+                      Trace("strings-csp-debug") << "Compute roverlap : " << const_str << " " << next_const_str << std::endl;
+                      size_t p2 = stra1.rfind(strb); 
+                      p = p2==std::string::npos ? p : ( p>p2+1? p2+1 : p );
+                      Trace("strings-csp-debug") << "overlap : " << stra1 << " " << strb << " returned " << p << " " << p2 << " " << (p2==std::string::npos) << std::endl;
+                    }else{
+                      CVC4::String stra1 = stra.substr( 1 );
+                      p = stra.size() - stra1.overlap(strb);
+                      Trace("strings-csp-debug") << "Compute overlap : " << const_str << " " << next_const_str << std::endl;
+                      size_t p2 = stra1.find(strb); 
+                      p = p2==std::string::npos ? p : ( p>p2+1? p2+1 : p );
+                      Trace("strings-csp-debug") << "overlap : " << stra1 << " " << strb << " returned " << p << " " << p2 << " " << (p2==std::string::npos) << std::endl;
+                    }
+                    if( p>1 ){
+                      if( start_index_nc_k==index+1 ){
+                        info.d_ant.push_back( xnz );            
+                        getExplanationVectorForPrefixEq( normal_forms, normal_form_src, normal_forms_exp, normal_forms_exp_depend, 
+                                                         const_k, nconst_k, index_c_k, index_nc_k, isRev, info.d_ant );   
+                        Node prea = p==stra.size() ? const_str : NodeManager::currentNM()->mkConst( isRev ? stra.suffix( p ) : stra.prefix( p ) );
+                        Node sk = mkSkolemCached( other_str, prea, isRev ? sk_id_c_spt_rev : sk_id_c_spt, "c_spt", -1 );
+                        Trace("strings-csp") << "Const Split: " << prea << " is removed from " << stra << " due to " << strb << ", p=" << p << std::endl;        
+                        //set info
+                        info.d_conc = other_str.eqNode( isRev ? mkConcat( sk, prea ) : mkConcat(prea, sk) );
+                        info.d_new_skolem[0].push_back( sk );
+                        info.d_id = 1;
+                        info_valid = true;
+                      }
+                      /*  FIXME for isRev, speculative
+                      else if( options::stringLenPropCsp() ){
+                        //propagate length constraint
+                        std::vector< Node > cc;
+                        for( unsigned i=index; i<start_index_nc_k; i++ ){
+                          cc.push_back( normal_forms[nconst_k][i] );
+                        }
+                        Node lt = NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, mkConcat( cc ) );
+                        conc = NodeManager::currentNM()->mkNode( kind::GEQ, lt, NodeManager::currentNM()->mkConst( Rational(p) ) );        
+                        sendInference( ant, conc, "S-Split(CSP-P)-lprop", true );
+                      }
+                      */
+                    } 
+                  }
+                  if( !info_valid ){
+                    info.d_ant.push_back( xnz );
+                    Node const_str = normal_forms[const_k][index];
+                    getExplanationVectorForPrefixEq( normal_forms, normal_form_src, normal_forms_exp, normal_forms_exp_depend, i, j, index, index, isRev, info.d_ant );
+                    CVC4::String stra = const_str.getConst<String>();
+                    if( options::stringBinaryCsp() && stra.size()>3 ){
+                      //split string in half
+                      Node c_firstHalf =  NodeManager::currentNM()->mkConst( isRev ? stra.substr( stra.size()/2 ) : stra.substr(0, stra.size()/2 ) );
+                      Node sk = mkSkolemCached( other_str, c_firstHalf , isRev ? sk_id_vc_bin_spt_rev : sk_id_vc_bin_spt, "cb_spt", -1 );
+                      Trace("strings-csp") << "Const Split: " << c_firstHalf << " is removed from " << const_str << " (binary) " << std::endl;
+                      info.d_conc = NodeManager::currentNM()->mkNode( kind::OR, other_str.eqNode( isRev ? mkConcat( sk, c_firstHalf ) : mkConcat( c_firstHalf, sk ) ),
+                                                                         NodeManager::currentNM()->mkNode( kind::AND,
+                                                                           sk.eqNode( d_emptyString ).negate(),
+                                                                           c_firstHalf.eqNode( isRev ? mkConcat( sk, other_str ) : mkConcat( other_str, sk ) ) ) );
+                      info.d_new_skolem[0].push_back( sk );
+                      info.d_id = 5;
+                      info_valid = true;
+                    }else{
+                      // normal v/c split
+                      Node firstChar = stra.size() == 1 ? const_str : NodeManager::currentNM()->mkConst( isRev ? stra.suffix( 1 ) : stra.prefix( 1 ) );
+                      Node sk = mkSkolemCached( other_str, firstChar, isRev ? sk_id_vc_spt_rev : sk_id_vc_spt, "c_spt", -1 );
+                      Trace("strings-csp") << "Const Split: " << firstChar << " is removed from " << const_str << " (serial) " << std::endl;
+                      info.d_conc = other_str.eqNode( isRev ? mkConcat( sk, firstChar ) : mkConcat(firstChar, sk) );
+                      info.d_new_skolem[0].push_back( sk );
+                      info.d_id = 6;                    
+                      info_valid = true;
+                    }
+                  }
+                  }
+                }
+              }else{
+                int lentTestSuccess = -1;
+                Node lentTestExp;
+                if( options::stringCheckEntailLen() ){
+                  //check entailment
+                  for( unsigned e=0; e<2; e++ ){
+                    Node t = e==0 ? normal_forms[i][index] : normal_forms[j][index];
+                    //do not infer constants are larger than variables
+                    if( t.getKind()!=kind::CONST_STRING ){
+                      Node lt1 = e==0 ? length_term_i : length_term_j;
+                      Node lt2 = e==0 ? length_term_j : length_term_i;
+                      Node ent_lit = Rewriter::rewrite( NodeManager::currentNM()->mkNode( kind::GT, lt1, lt2 ) );
+                      std::pair<bool, Node> et = d_valuation.entailmentCheck( THEORY_OF_TYPE_BASED, ent_lit );
+                      if( et.first ){
+                        Trace("strings-entail") << "Strings entailment : " << ent_lit << " is entailed in the current context." << std::endl;
+                        Trace("strings-entail") << "  explanation was : " << et.second << std::endl;
+                        lentTestSuccess = e;
+                        lentTestExp = et.second;
+                        break;
+                      }
+                    }
+                  }
+                }
+                
+                getExplanationVectorForPrefixEq( normal_forms, normal_form_src, normal_forms_exp, normal_forms_exp_depend, i, j, index, index, isRev, info.d_ant );
+                //x!=e /\ y!=e
+                for(unsigned xory=0; xory<2; xory++) {
+                  Node x = xory==0 ? normal_forms[i][index] : normal_forms[j][index];
+                  Node xgtz = x.eqNode( d_emptyString ).negate();
+                  if( d_equalityEngine.areDisequal( x, d_emptyString, true ) ) {
+                    info.d_ant.push_back( xgtz );
+                  } else {
+                    info.d_antn.push_back( xgtz );
+                  }
+                }
+                Node sk = mkSkolemCached( normal_forms[i][index], normal_forms[j][index], isRev ? sk_id_v_spt_rev : sk_id_v_spt, "v_spt", -1 );
+                //must add length requirement 
+                info.d_new_skolem[1].push_back( sk );
+                Node eq1 = normal_forms[i][index].eqNode( isRev ? mkConcat(sk, normal_forms[j][index]) : mkConcat(normal_forms[j][index], sk) );
+                Node eq2 = normal_forms[j][index].eqNode( isRev ? mkConcat(sk, normal_forms[i][index]) : mkConcat(normal_forms[i][index], sk) );
+
+                if( lentTestSuccess!=-1 ){
+                  info.d_antn.push_back( lentTestExp );
+                  info.d_conc = lentTestSuccess==0 ? eq1 : eq2;
+                  info.d_id = 2;
+                  info_valid = true;
+                }else{
+                  Node ldeq = NodeManager::currentNM()->mkNode( kind::EQUAL, length_term_i, length_term_j ).negate();
+                  if( d_equalityEngine.areDisequal( length_term_i, length_term_j, true ) ){
+                    info.d_ant.push_back( ldeq );
+                  }else{
+                    info.d_antn.push_back(ldeq);
+                  }
+                  //set info
+                  info.d_conc = NodeManager::currentNM()->mkNode( kind::OR, eq1, eq2 );
+                  info.d_id = 7;
+                  info_valid = true;
+                }
+              }
+            }
+          }
+          if( info_valid ){
+            pinfer.push_back( info );
+            Assert( !success );
+          }
+        }
+      }
+    }
+  }while( success );
+}
+
+bool TheoryStrings::detectLoop( std::vector< std::vector< Node > > &normal_forms, int i, int j, int index, int &loop_in_i, int &loop_in_j, unsigned rproc ){
+  int has_loop[2] = { -1, -1 };
+  if( options::stringLB() != 2 ) {
+    for( unsigned r=0; r<2; r++ ) {
+      int n_index = (r==0 ? i : j);
+      int other_n_index = (r==0 ? j : i);
+      if( normal_forms[other_n_index][index].getKind() != kind::CONST_STRING ) {
+        for( unsigned lp = index+1; lp<normal_forms[n_index].size()-rproc; lp++ ){
+          if( normal_forms[n_index][lp]==normal_forms[other_n_index][index] ){
+            has_loop[r] = lp;
+            break;
+          }
+        }
+      }
+    }
+  }
+  if( has_loop[0]!=-1 || has_loop[1]!=-1 ) {
+    loop_in_i = has_loop[0];
+    loop_in_j = has_loop[1];
+    return true;
+  } else {
+    Trace("strings-solve-debug") << "No loops detected." << std::endl;
+    return false;
+  }
+}
+
+//xs(zy)=t(yz)xr
+bool TheoryStrings::processLoop( std::vector< std::vector< Node > > &normal_forms, std::vector< Node > &normal_form_src,
+                                 int i, int j, int loop_n_index, int other_n_index, int loop_index, int index, InferInfo& info ){
+  if( options::stringAbortLoop() ){
+    Message() << "Looping word equation encountered." << std::endl;
+    exit( 1 );
+  }else{
+    Node conc;
+    Trace("strings-loop") << "Detected possible loop for " << normal_forms[loop_n_index][loop_index] << std::endl;
+    Trace("strings-loop") << " ... (X)= " << normal_forms[other_n_index][index] << std::endl;
+
+    Trace("strings-loop") << " ... T(Y.Z)= ";
+    std::vector< Node > vec_t;
+    for(int lp=index; lp<loop_index; ++lp) {
+      if(lp != index) Trace("strings-loop") << " ++ ";
+      Trace("strings-loop") << normal_forms[loop_n_index][lp];
+      vec_t.push_back( normal_forms[loop_n_index][lp] );
+    }
+    Node t_yz = mkConcat( vec_t );
+    Trace("strings-loop") << " (" << t_yz << ")" << std::endl;
+    Trace("strings-loop") << " ... S(Z.Y)= ";
+    std::vector< Node > vec_s;
+    for(int lp=index+1; lp<(int)normal_forms[other_n_index].size(); ++lp) {
+      if(lp != index+1) Trace("strings-loop") << " ++ ";
+      Trace("strings-loop") << normal_forms[other_n_index][lp];
+      vec_s.push_back( normal_forms[other_n_index][lp] );
+    }
+    Node s_zy = mkConcat( vec_s );
+    Trace("strings-loop") << " (" << s_zy << ")" << std::endl;
+    Trace("strings-loop") << " ... R= ";
+    std::vector< Node > vec_r;
+    for(int lp=loop_index+1; lp<(int)normal_forms[loop_n_index].size(); ++lp) {
+      if(lp != loop_index+1) Trace("strings-loop") << " ++ ";
+      Trace("strings-loop") << normal_forms[loop_n_index][lp];
+      vec_r.push_back( normal_forms[loop_n_index][lp] );
+    }
+    Node r = mkConcat( vec_r );
+    Trace("strings-loop") << " (" << r << ")" << std::endl;
+
+    //Trace("strings-loop") << "Lemma Cache: " << normal_form_src[i] << " vs " << normal_form_src[j] << std::endl;
+    //TODO: can be more general
+    if( s_zy.isConst() && r.isConst() && r!=d_emptyString) {
+      int c;
+      bool flag = true;
+      if(s_zy.getConst<String>().tailcmp( r.getConst<String>(), c ) ) {
+        if( c>=0) {
+          s_zy = NodeManager::currentNM()->mkConst( s_zy.getConst<String>().substr(0, c) );
+          r = d_emptyString;
+          vec_r.clear();
+          Trace("strings-loop") << "Strings::Loop: Refactor S(Z.Y)= " << s_zy << ", c=" << c << std::endl;
+          flag = false;
+        }
+      }
+      if( flag ){
+        Trace("strings-loop") << "Strings::Loop: tails are different." << std::endl;
+        sendInference( info.d_ant, conc, "Loop Conflict", true );
+        return false;
+      }
+    }
+
+    //require that x is non-empty
+    Node split_eq;
+    if( !areDisequal( normal_forms[loop_n_index][loop_index], d_emptyString ) ){
+      //try to make normal_forms[loop_n_index][loop_index] equal to empty to avoid loop
+      split_eq = normal_forms[loop_n_index][loop_index].eqNode( d_emptyString );
+    }else if( !areDisequal( t_yz, d_emptyString ) && t_yz.getKind()!=kind::CONST_STRING ) {
+      //try to make normal_forms[loop_n_index][loop_index] equal to empty to avoid loop
+      split_eq = t_yz.eqNode( d_emptyString );
+    }
+    if( !split_eq.isNull() ){
+      info.d_conc = NodeManager::currentNM()->mkNode( kind::OR, split_eq, split_eq.negate() );
+      info.d_id = 4;
+      return true;
+    }else{
+      //need to break
+      info.d_ant.push_back( normal_forms[loop_n_index][loop_index].eqNode( d_emptyString ).negate() );
+      if( t_yz.getKind()!=kind::CONST_STRING ) {
+        info.d_ant.push_back( t_yz.eqNode( d_emptyString ).negate() );
+      }
+      Node ant = mkExplain( info.d_ant );
+      if( d_loop_antec.find( ant ) == d_loop_antec.end() ){
+        d_loop_antec.insert( ant );
+        info.d_ant.clear();
+        info.d_antn.push_back( ant );
+
+        Node str_in_re;
+        if( s_zy == t_yz &&
+          r == d_emptyString &&
+          s_zy.isConst() &&
+          s_zy.getConst<String>().isRepeated()
+          ) {
+          Node rep_c = NodeManager::currentNM()->mkConst( s_zy.getConst<String>().substr(0, 1) );
+          Trace("strings-loop") << "Special case (X)=" << normal_forms[other_n_index][index] << " " << std::endl;
+          Trace("strings-loop") << "... (C)=" << rep_c << " " << std::endl;
+          //special case
+          str_in_re = NodeManager::currentNM()->mkNode( kind::STRING_IN_REGEXP, normal_forms[other_n_index][index],
+                  NodeManager::currentNM()->mkNode( kind::REGEXP_STAR,
+                  NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP, rep_c ) ) );
+          conc = str_in_re;
+        } else if(t_yz.isConst()) {
+          Trace("strings-loop") << "Strings::Loop: Const Normal Breaking." << std::endl;
+          CVC4::String s = t_yz.getConst< CVC4::String >();
+          unsigned size = s.size();
+          std::vector< Node > vconc;
+          for(unsigned len=1; len<=size; len++) {
+            Node y = NodeManager::currentNM()->mkConst(s.substr(0, len));
+            Node z = NodeManager::currentNM()->mkConst(s.substr(len, size - len));
+            Node restr = s_zy;
+            Node cc;
+            if(r != d_emptyString) {
+              std::vector< Node > v2(vec_r);
+              v2.insert(v2.begin(), y);
+              v2.insert(v2.begin(), z);
+              restr = mkConcat( z, y );
+              cc = Rewriter::rewrite(s_zy.eqNode( mkConcat( v2 ) ));
+            } else {
+              cc = Rewriter::rewrite(s_zy.eqNode( mkConcat( z, y) ));
+            }
+            if(cc == d_false) {
+              continue;
+            }
+            Node conc2 = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, normal_forms[other_n_index][index],
+                    NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT,
+                      NodeManager::currentNM()->mkNode(kind::STRING_TO_REGEXP, y),
+                      NodeManager::currentNM()->mkNode(kind::REGEXP_STAR,
+                        NodeManager::currentNM()->mkNode(kind::STRING_TO_REGEXP, restr))));
+            cc = cc==d_true ? conc2 : NodeManager::currentNM()->mkNode( kind::AND, cc, conc2 );
+            d_regexp_ant[conc2] = ant;
+            vconc.push_back(cc);
+          }
+          conc = vconc.size()==0 ? Node::null() : vconc.size()==1 ? vconc[0] : NodeManager::currentNM()->mkNode(kind::OR, vconc);
+        } else {
+          Trace("strings-loop") << "Strings::Loop: Normal Loop Breaking." << std::endl;
+          //right
+          Node sk_w= mkSkolemS( "w_loop" );
+          Node sk_y= mkSkolemS( "y_loop", 1 );
+          Node sk_z= mkSkolemS( "z_loop" );
+          //t1 * ... * tn = y * z
+          Node conc1 = t_yz.eqNode( mkConcat( sk_y, sk_z ) );
+          // s1 * ... * sk = z * y * r
+          vec_r.insert(vec_r.begin(), sk_y);
+          vec_r.insert(vec_r.begin(), sk_z);
+          Node conc2 = s_zy.eqNode( mkConcat( vec_r ) );
+          Node conc3 = normal_forms[other_n_index][index].eqNode( mkConcat( sk_y, sk_w ) );
+          Node restr = r == d_emptyString ? s_zy : mkConcat( sk_z, sk_y );
+          str_in_re = NodeManager::currentNM()->mkNode( kind::STRING_IN_REGEXP, sk_w,
+                  NodeManager::currentNM()->mkNode( kind::REGEXP_STAR,
+                    NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP, restr ) ) );
+
+          std::vector< Node > vec_conc;
+          vec_conc.push_back(conc1); vec_conc.push_back(conc2); vec_conc.push_back(conc3);
+          vec_conc.push_back(str_in_re);
+          //vec_conc.push_back(sk_y.eqNode(d_emptyString).negate());//by mkskolems
+          conc = NodeManager::currentNM()->mkNode( kind::AND, vec_conc );
+        } // normal case
+
+        //set its antecedant to ant, to say when it is relevant
+        if(!str_in_re.isNull()) {
+          d_regexp_ant[str_in_re] = ant;
+        }
+        //we will be done
+        addNormalFormPair( normal_form_src[i], normal_form_src[j] );
+        if( options::stringProcessLoop() ){
+          info.d_conc = conc;
+          info.d_id = 8;
+          return true;
+        }else{
+          d_out->setIncomplete();
+        }
+      }else{
+        Trace("strings-loop") << "Strings::Loop: loop lemma for " << ant << " has already added." << std::endl;
+        addNormalFormPair( normal_form_src[i], normal_form_src[j] );
+      }
+    }
+  }
+  return false;
+}
+
+//return true for lemma, false if we succeed
+void TheoryStrings::processDeq( Node ni, Node nj ) {
+  //Assert( areDisequal( ni, nj ) );
+  if( d_normal_forms[ni].size()>1 || d_normal_forms[nj].size()>1 ){
+    std::vector< Node > nfi;
+    nfi.insert( nfi.end(), d_normal_forms[ni].begin(), d_normal_forms[ni].end() );
+    std::vector< Node > nfj;
+    nfj.insert( nfj.end(), d_normal_forms[nj].begin(), d_normal_forms[nj].end() );
+
+    int revRet = processReverseDeq( nfi, nfj, ni, nj );
+    if( revRet!=0 ){
+      return;
+    }
+
+    nfi.clear();
+    nfi.insert( nfi.end(), d_normal_forms[ni].begin(), d_normal_forms[ni].end() );
+    nfj.clear();
+    nfj.insert( nfj.end(), d_normal_forms[nj].begin(), d_normal_forms[nj].end() );
+
+    unsigned index = 0;
+    while( index<nfi.size() || index<nfj.size() ){
+      int ret = processSimpleDeq( nfi, nfj, ni, nj, index, false );
+      if( ret!=0 ) {
+        return;
+      }else{
+        Assert( index<nfi.size() && index<nfj.size() );
+        Node i = nfi[index];
+        Node j = nfj[index];
+        Trace("strings-solve-debug")  << "...Processing(DEQ) " << i << " " << j << std::endl;
+        if( !areEqual( i, j ) ){
+          Assert( i.getKind()!=kind::CONST_STRING || j.getKind()!=kind::CONST_STRING );
+          std::vector< Node > lexp;
+          Node li = getLength( i, lexp );
+          Node lj = getLength( j, lexp );
+          if( areDisequal( li, lj ) ){
+            if( i.getKind()==kind::CONST_STRING || j.getKind()==kind::CONST_STRING ){
+              //check if empty
+              Node const_k = i.getKind() == kind::CONST_STRING ? i : j;
+              Node nconst_k = i.getKind() == kind::CONST_STRING ? j : i;
+              Node lnck = i.getKind() == kind::CONST_STRING ? lj : li;
+              if( !d_equalityEngine.areDisequal( nconst_k, d_emptyString, true ) ){
+                Node eq = nconst_k.eqNode( d_emptyString );
+                Node conc = NodeManager::currentNM()->mkNode( kind::OR, eq, eq.negate() );
+                sendInference( d_empty_vec, conc, "D-DISL-Emp-Split" );
+                return;
+              }else{
+                //split on first character
+                CVC4::String str = const_k.getConst<String>();
+                Node firstChar = str.size() == 1 ? const_k : NodeManager::currentNM()->mkConst( str.prefix( 1 ) );
+                if( areEqual( lnck, d_one ) ){
+                  if( areDisequal( firstChar, nconst_k ) ){
+                    return;
+                  }else if( !areEqual( firstChar, nconst_k ) ){
+                    //splitting on demand : try to make them disequal
+                    Node eq = firstChar.eqNode( nconst_k );
+                    sendSplit( firstChar, nconst_k, "S-Split(DEQL-Const)" );
+                    eq = Rewriter::rewrite( eq );
+                    d_pending_req_phase[ eq ] = false;
+                    return;
+                  }
+                }else{
+                  Node sk = mkSkolemCached( nconst_k, firstChar, sk_id_dc_spt, "dc_spt", 2 );
+                  Node skr = mkSkolemCached( nconst_k, firstChar, sk_id_dc_spt_rem, "dc_spt_rem" );
+                  Node eq1 = nconst_k.eqNode( NodeManager::currentNM()->mkNode( kind::STRING_CONCAT, sk, skr ) );
+                  eq1 = Rewriter::rewrite( eq1 );
+                  Node eq2 = nconst_k.eqNode( NodeManager::currentNM()->mkNode( kind::STRING_CONCAT, firstChar, skr ) );
+                  std::vector< Node > antec;
+                  antec.insert( antec.end(), d_normal_forms_exp[ni].begin(), d_normal_forms_exp[ni].end() );
+                  antec.insert( antec.end(), d_normal_forms_exp[nj].begin(), d_normal_forms_exp[nj].end() );
+                  antec.push_back( nconst_k.eqNode( d_emptyString ).negate() );
+                  sendInference( antec, NodeManager::currentNM()->mkNode( kind::OR, 
+                                          NodeManager::currentNM()->mkNode( kind::AND, eq1, sk.eqNode( firstChar ).negate() ), eq2 ), "D-DISL-CSplit" );
+                  d_pending_req_phase[ eq1 ] = true;
+                  return;
+                }
+              }
+            }else{
+              Trace("strings-solve") << "Non-Simple Case 1 : add lemma " << std::endl;
+              //must add lemma
+              std::vector< Node > antec;
+              std::vector< Node > antec_new_lits;
+              antec.insert( antec.end(), d_normal_forms_exp[ni].begin(), d_normal_forms_exp[ni].end() );
+              antec.insert( antec.end(), d_normal_forms_exp[nj].begin(), d_normal_forms_exp[nj].end() );
+              //check disequal
+              if( areDisequal( ni, nj ) ){
+                antec.push_back( ni.eqNode( nj ).negate() );
+              }else{
+                antec_new_lits.push_back( ni.eqNode( nj ).negate() );
+              }
+              antec_new_lits.push_back( li.eqNode( lj ).negate() );
+              std::vector< Node > conc;
+              Node sk1 = mkSkolemCached( i, j, sk_id_deq_x, "x_dsplit" );
+              Node sk2 = mkSkolemCached( i, j, sk_id_deq_y, "y_dsplit" );
+              Node sk3 = mkSkolemCached( i, j, sk_id_deq_z, "z_dsplit", 1 );
+              //Node nemp = sk3.eqNode(d_emptyString).negate();
+              //conc.push_back(nemp);
+              Node lsk1 = mkLength( sk1 );
+              conc.push_back( lsk1.eqNode( li ) );
+              Node lsk2 = mkLength( sk2 );
+              conc.push_back( lsk2.eqNode( lj ) );
+              conc.push_back( NodeManager::currentNM()->mkNode( kind::OR, j.eqNode( mkConcat( sk1, sk3 ) ), i.eqNode( mkConcat( sk2, sk3 ) ) ) );
+              sendInference( antec, antec_new_lits, NodeManager::currentNM()->mkNode( kind::AND, conc ), "D-DISL-Split" );
+              ++(d_statistics.d_deq_splits);
+              return;
+            }
+          }else if( areEqual( li, lj ) ){
+            Assert( !areDisequal( i, j ) );
+            //splitting on demand : try to make them disequal
+            Node eq = i.eqNode( j );
+            sendSplit( i, j, "S-Split(DEQL)" );
+            eq = Rewriter::rewrite( eq );
+            d_pending_req_phase[ eq ] = false;
+            return;
+          }else{
+            //splitting on demand : try to make lengths equal
+            Node eq = li.eqNode( lj );
+            sendSplit( li, lj, "D-Split" );
+            eq = Rewriter::rewrite( eq );
+            d_pending_req_phase[ eq ] = true;
+            return;
+          }
+        }
+        index++;
+      }
+    }
+    Assert( false );
+  }
+}
+
+int TheoryStrings::processReverseDeq( std::vector< Node >& nfi, std::vector< Node >& nfj, Node ni, Node nj ) {
+  //reverse normal form of i, j
+  std::reverse( nfi.begin(), nfi.end() );
+  std::reverse( nfj.begin(), nfj.end() );
+
+  unsigned index = 0;
+  int ret = processSimpleDeq( nfi, nfj, ni, nj, index, true );
+
+  //reverse normal form of i, j
+  std::reverse( nfi.begin(), nfi.end() );
+  std::reverse( nfj.begin(), nfj.end() );
+
+  return ret;
+}
+
+int TheoryStrings::processSimpleDeq( std::vector< Node >& nfi, std::vector< Node >& nfj, Node ni, Node nj, unsigned& index, bool isRev ){
+  //see if one side is constant, if so, we can approximate as containment
+  for( unsigned i=0; i<2; i++ ){
+    Node c = getConstantEqc( i==0 ? ni : nj );
+    if( !c.isNull() ){
+      int findex, lindex;
+      if( !TheoryStringsRewriter::canConstantContainList( c, i==0 ? nfj : nfi, findex, lindex ) ){
+        return 1;
+      }
+    }
+  }
+  while( index<nfi.size() || index<nfj.size() ) {
+    if( index>=nfi.size() || index>=nfj.size() ){
+      Trace("strings-solve-debug") << "Disequality normalize empty" << std::endl;
+      std::vector< Node > ant;
+      //we have a conflict : because the lengths are equal, the remainder needs to be empty, which will lead to a conflict
+      Node lni = getLengthExp( ni, ant, d_normal_forms_base[ni] );
+      Node lnj = getLengthExp( nj, ant, d_normal_forms_base[nj] );
+      ant.push_back( lni.eqNode( lnj ) );
+      ant.insert( ant.end(), d_normal_forms_exp[ni].begin(), d_normal_forms_exp[ni].end() );
+      ant.insert( ant.end(), d_normal_forms_exp[nj].begin(), d_normal_forms_exp[nj].end() );
+      std::vector< Node > cc;
+      std::vector< Node >& nfk = index>=nfi.size() ? nfj : nfi;
+      for( unsigned index_k=index; index_k<nfk.size(); index_k++ ){
+        cc.push_back( nfk[index_k].eqNode( d_emptyString ) );
+      }
+      Node conc = cc.size()==1 ? cc[0] : NodeManager::currentNM()->mkNode( kind::AND, cc );
+      conc = Rewriter::rewrite( conc );
+      sendInference( ant, conc, "Disequality Normalize Empty", true);
+      return -1;
+    }else{
+      Node i = nfi[index];
+      Node j = nfj[index];
+      Trace("strings-solve-debug")  << "...Processing(QED) " << i << " " << j << std::endl;
+      if( !areEqual( i, j ) ) {
+        if( i.getKind()==kind::CONST_STRING && j.getKind()==kind::CONST_STRING ) {
+          unsigned int len_short = i.getConst<String>().size() < j.getConst<String>().size() ? i.getConst<String>().size() : j.getConst<String>().size();
+          bool isSameFix = isRev ? i.getConst<String>().rstrncmp(j.getConst<String>(), len_short): i.getConst<String>().strncmp(j.getConst<String>(), len_short);
+          if( isSameFix ) {
+            //same prefix/suffix
+            //k is the index of the string that is shorter
+            Node nk = i.getConst<String>().size() < j.getConst<String>().size() ? i : j;
+            Node nl = i.getConst<String>().size() < j.getConst<String>().size() ? j : i;
+            Node remainderStr;
+            if( isRev ){
+              int new_len = nl.getConst<String>().size() - len_short;
+              remainderStr = NodeManager::currentNM()->mkConst( nl.getConst<String>().substr(0, new_len) );
+              Trace("strings-solve-debug-test") << "Rev. Break normal form of " << nl << " into " << nk << ", " << remainderStr << std::endl;
+            } else {
+              remainderStr = NodeManager::currentNM()->mkConst( nl.getConst<String>().substr( len_short ) );
+              Trace("strings-solve-debug-test") << "Break normal form of " << nl << " into " << nk << ", " << remainderStr << std::endl;
+            }
+            if( i.getConst<String>().size() < j.getConst<String>().size() ) {
+              nfj.insert( nfj.begin() + index + 1, remainderStr );
+              nfj[index] = nfi[index];
+            } else {
+              nfi.insert( nfi.begin() + index + 1, remainderStr );
+              nfi[index] = nfj[index];
+            }
+          }else{
+            return 1;
+          }
+        }else{
+          std::vector< Node > lexp;
+          Node li = getLength( i, lexp );
+          Node lj = getLength( j, lexp );
+          if( areEqual( li, lj ) && areDisequal( i, j ) ){
+            Trace("strings-solve") << "Simple Case 2 : found equal length disequal sub strings " << i << " " << j << std::endl;
+            //we are done: D-Remove
+            return 1;
+          }else{
+            return 0;
+          }
+        }
+      }
+      index++;
+    }
+  }
+  return 0;
+}
+
+void TheoryStrings::addNormalFormPair( Node n1, Node n2 ){
+  if( !isNormalFormPair( n1, n2 ) ){
+    int index = 0;
+    NodeIntMap::const_iterator it = d_nf_pairs.find( n1 );
+    if( it!=d_nf_pairs.end() ){
+      index = (*it).second;
+    }
+    d_nf_pairs[n1] = index + 1;
+    if( index<(int)d_nf_pairs_data[n1].size() ){
+      d_nf_pairs_data[n1][index] = n2;
+    }else{
+      d_nf_pairs_data[n1].push_back( n2 );
+    } 
+    Assert( isNormalFormPair( n1, n2 ) );
+  } else {
+    Trace("strings-nf-debug") << "Already a normal form pair " << n1 << " " << n2 << std::endl;
+  }
+}
+
+bool TheoryStrings::isNormalFormPair( Node n1, Node n2 ) {
+  //TODO: modulo equality?
+  return isNormalFormPair2( n1, n2 ) || isNormalFormPair2( n2, n1 );
+}
+
+bool TheoryStrings::isNormalFormPair2( Node n1, Node n2 ) {
+  //Trace("strings-debug") << "is normal form pair. " << n1 << " " << n2 << std::endl;
+  NodeIntMap::const_iterator it = d_nf_pairs.find( n1 );
+  if( it!=d_nf_pairs.end() ){
+    Assert( d_nf_pairs_data.find( n1 )!=d_nf_pairs_data.end() );
+    for( int i=0; i<(*it).second; i++ ){
+      Assert( i<(int)d_nf_pairs_data[n1].size() );
+      if( d_nf_pairs_data[n1][i]==n2 ){
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+void TheoryStrings::registerTerm( Node n, int effort ) {
+  // 0 : upon preregistration or internal assertion
+  // 1 : upon occurrence in length term
+  // 2 : before normal form computation
+  // 3 : called on normal form terms
+  bool do_register = false;
+  if( options::stringEagerLen() ){
+    do_register = effort==0;
+  }else{
+    do_register = effort>0 || n.getKind()!=kind::STRING_CONCAT;
+  }
+  if( do_register ){
+    if(d_registered_terms_cache.find(n) == d_registered_terms_cache.end()) {
+      d_registered_terms_cache.insert(n);
+      Debug("strings-register") << "TheoryStrings::registerTerm() " << n << ", effort = " << effort << std::endl;
+      if(n.getType().isString()) {
+        //register length information:
+        //  for variables, split on empty vs positive length
+        //  for concat/const/replace, introduce proxy var and state length relation
+        Node lsum;
+        bool processed = false;
+        if( n.getKind()!=kind::STRING_CONCAT && n.getKind()!=kind::CONST_STRING ) {
+          if( d_length_lemma_terms_cache.find( n )==d_length_lemma_terms_cache.end() ){
+            Node lsumb = NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, n );
+            lsum = Rewriter::rewrite( lsumb );
+            // can register length term if it does not rewrite
+            if( lsum==lsumb ){
+              sendLengthLemma( n );
+              processed = true;
+            }
+          }else{
+            processed = true;
+          }
+        }
+        if( !processed ){
+          Node sk = mkSkolemS( "lsym", -1 );
+          StringsProxyVarAttribute spva;
+          sk.setAttribute(spva,true);
+          Node eq = Rewriter::rewrite( sk.eqNode(n) );
+          Trace("strings-lemma") << "Strings::Lemma LENGTH Term : " << eq << std::endl;
+          d_proxy_var[n] = sk;
+          Trace("strings-assert") << "(assert " << eq << ")" << std::endl;
+          d_out->lemma(eq);
+          Node skl = NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, sk );
+          if( n.getKind()==kind::STRING_CONCAT ){
+            std::vector<Node> node_vec;
+            for( unsigned i=0; i<n.getNumChildren(); i++ ) {
+              if( n[i].getAttribute(StringsProxyVarAttribute()) ){
+                Assert( d_proxy_var_to_length.find( n[i] )!=d_proxy_var_to_length.end() );
+                node_vec.push_back( d_proxy_var_to_length[n[i]] );
+              }else{
+                Node lni = NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, n[i] );
+                node_vec.push_back(lni);
+              }
+            }
+            lsum = NodeManager::currentNM()->mkNode( kind::PLUS, node_vec );
+            lsum = Rewriter::rewrite( lsum );
+          }else if( n.getKind()==kind::CONST_STRING ){
+            lsum = NodeManager::currentNM()->mkConst( ::CVC4::Rational( n.getConst<String>().size() ) );
+          }
+          Assert( !lsum.isNull() );
+          d_proxy_var_to_length[sk] = lsum;
+          Node ceq = Rewriter::rewrite( skl.eqNode( lsum ) );
+          Trace("strings-lemma") << "Strings::Lemma LENGTH : " << ceq << std::endl;
+          Trace("strings-lemma-debug") << "  prerewrite : " << skl.eqNode( lsum ) << std::endl;
+          Trace("strings-assert") << "(assert " << ceq << ")" << std::endl;
+          d_out->lemma(ceq);
+          
+        }
+      } else {
+        AlwaysAssert(false, "String Terms only in registerTerm.");
+      }
+    }
+  }
+}
+
+void TheoryStrings::sendInference( std::vector< Node >& exp, std::vector< Node >& exp_n, Node eq, const char * c, bool asLemma ) {
+  eq = eq.isNull() ? d_false : Rewriter::rewrite( eq );
+  if( eq!=d_true ){
+    if( Trace.isOn("strings-infer-debug") ){
+      Trace("strings-infer-debug") << "By " << c << ", infer : " << eq << " from: " << std::endl;
+      for( unsigned i=0; i<exp.size(); i++ ){
+        Trace("strings-infer-debug")  << "  " << exp[i] << std::endl;
+      }
+      for( unsigned i=0; i<exp_n.size(); i++ ){
+        Trace("strings-infer-debug")  << "  N:" << exp_n[i] << std::endl;
+      }
+      //Trace("strings-infer-debug") << "as lemma : " << asLemma << std::endl;
+    }
+    //check if we should send a lemma or an inference
+    if( asLemma || eq==d_false || eq.getKind()==kind::OR || !exp_n.empty() || options::stringInferAsLemmas() ){  
+      Node eq_exp;
+      if( options::stringRExplainLemmas() ){
+        eq_exp = mkExplain( exp, exp_n );
+      }else{
+        if( exp.empty() ){
+          eq_exp = mkAnd( exp_n );
+        }else if( exp_n.empty() ){
+          eq_exp = mkAnd( exp );
+        }else{
+          std::vector< Node > ev;
+          ev.insert( ev.end(), exp.begin(), exp.end() );
+          ev.insert( ev.end(), exp_n.begin(), exp_n.end() );
+          eq_exp = NodeManager::currentNM()->mkNode( kind::AND, ev );
+        }
+      }
+      sendLemma( eq_exp, eq, c );
+    }else{
+      sendInfer( mkAnd( exp ), eq, c );
+    }
+  }
+}
+
+void TheoryStrings::sendInference( std::vector< Node >& exp, Node eq, const char * c, bool asLemma ) {
+  std::vector< Node > exp_n;
+  sendInference( exp, exp_n, eq, c, asLemma );
+}
+
+void TheoryStrings::sendLemma( Node ant, Node conc, const char * c ) {
+  if( conc.isNull() || conc == d_false ) {
+    Trace("strings-conflict") << "Strings::Conflict : " << c << " : " << ant << std::endl;
+    Trace("strings-lemma") << "Strings::Conflict : " << c << " : " << ant << std::endl;
+    Trace("strings-assert") << "(assert (not " << ant << ")) ; conflict " << c << std::endl;
+    d_out->conflict(ant);
+    d_conflict = true;
+  } else {
+    Node lem;
+    if( ant == d_true ) {
+      lem = conc;
+    }else{
+      lem = NodeManager::currentNM()->mkNode( kind::IMPLIES, ant, conc );
+    }
+    Trace("strings-lemma") << "Strings::Lemma " << c << " : " << lem << std::endl;
+    Trace("strings-assert") << "(assert " << lem << ") ; lemma " << c << std::endl;
+    d_lemma_cache.push_back( lem );
+  }
+}
+
+void TheoryStrings::sendInfer( Node eq_exp, Node eq, const char * c ) {
+  if( options::stringInferSym() ){
+    std::vector< Node > vars;
+    std::vector< Node > subs;
+    std::vector< Node > unproc;
+    inferSubstitutionProxyVars( eq_exp, vars, subs, unproc );
+    if( unproc.empty() ){
+      Trace("strings-lemma-debug") << "Strings::Infer " << eq << " from " << eq_exp << " by " << c << std::endl;
+      Node eqs = eq.substitute( vars.begin(), vars.end(), subs.begin(), subs.end() );
+      Trace("strings-lemma-debug") << "Strings::Infer Alternate : " << eqs << std::endl;
+      for( unsigned i=0; i<vars.size(); i++ ){
+        Trace("strings-lemma-debug") << "  " << vars[i] << " -> " << subs[i] << std::endl;
+      }
+      sendLemma( d_true, eqs, c );
+      return;
+    }else{
+      for( unsigned i=0; i<unproc.size(); i++ ){
+        Trace("strings-lemma-debug") << "  non-trivial exp : " << unproc[i] << std::endl;
+      }
+    }
+  }
+  Trace("strings-lemma") << "Strings::Infer " << eq << " from " << eq_exp << " by " << c << std::endl;
+  Trace("strings-assert") << "(assert (=> " << eq_exp << " " << eq << ")) ; infer " << c << std::endl;
+  d_pending.push_back( eq );
+  d_pending_exp[eq] = eq_exp;
+  d_infer.push_back( eq );
+  d_infer_exp.push_back( eq_exp );
+
+}
+
+void TheoryStrings::sendSplit( Node a, Node b, const char * c, bool preq ) {
+  Node eq = a.eqNode( b );
+  eq = Rewriter::rewrite( eq );
+  Node neq = NodeManager::currentNM()->mkNode( kind::NOT, eq );
+  Node lemma_or = NodeManager::currentNM()->mkNode( kind::OR, eq, neq );
+  Trace("strings-lemma") << "Strings::Lemma " << c << " SPLIT : " << lemma_or << std::endl;
+  d_lemma_cache.push_back(lemma_or);
+  d_pending_req_phase[eq] = preq;
+  ++(d_statistics.d_splits);
+}
+
+
+void TheoryStrings::sendLengthLemma( Node n ){
+  Node n_len = NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, n);
+  if( options::stringSplitEmp() || !options::stringLenGeqZ() ){
+    Node n_len_eq_z = n_len.eqNode( d_zero );
+    Node n_len_eq_z_2 = n.eqNode( d_emptyString );
+    n_len_eq_z = Rewriter::rewrite( n_len_eq_z );
+    n_len_eq_z_2 = Rewriter::rewrite( n_len_eq_z_2 );
+    Node n_len_geq_zero = NodeManager::currentNM()->mkNode( kind::OR, NodeManager::currentNM()->mkNode( kind::AND, n_len_eq_z, n_len_eq_z_2 ),
+                NodeManager::currentNM()->mkNode( kind::GT, n_len, d_zero) );
+    Trace("strings-lemma") << "Strings::Lemma LENGTH >= 0 : " << n_len_geq_zero << std::endl;
+    d_out->lemma(n_len_geq_zero);
+    d_out->requirePhase( n_len_eq_z, true );
+    d_out->requirePhase( n_len_eq_z_2, true );
+  }
+  //AJR: probably a good idea
+  if( options::stringLenGeqZ() ){
+    Node n_len_geq = NodeManager::currentNM()->mkNode( kind::GEQ, n_len, d_zero);
+    n_len_geq = Rewriter::rewrite( n_len_geq );
+    d_out->lemma( n_len_geq );
+  }
+}
+
+void TheoryStrings::inferSubstitutionProxyVars( Node n, std::vector< Node >& vars, std::vector< Node >& subs, std::vector< Node >& unproc ) {
+  if( n.getKind()==kind::AND ){
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      inferSubstitutionProxyVars( n[i], vars, subs, unproc );
+    }
+    return;
+  }else if( n.getKind()==kind::EQUAL ){
+    Node ns = n.substitute( vars.begin(), vars.end(), subs.begin(), subs.end() );
+    ns = Rewriter::rewrite( ns );
+    if( ns.getKind()==kind::EQUAL ){
+      Node s;
+      Node v;
+      for( unsigned i=0; i<2; i++ ){
+        Node ss;
+        if( ns[i].getAttribute(StringsProxyVarAttribute()) ){
+          ss = ns[i];
+        }else if( ns[i].isConst() ){
+          NodeNodeMap::const_iterator it = d_proxy_var.find( ns[i] );
+          if( it!=d_proxy_var.end() ){
+            ss = (*it).second;
+          }
+        }
+        if( !ss.isNull() ){
+          v = ns[1-i];
+          if( v.getNumChildren()==0 ){
+            if( s.isNull() ){
+              s = ss;
+            }else{
+              //both sides involved in proxy var
+              if( ss==s ){
+                return;
+              }else{
+                s = Node::null();
+              }
+            }
+          }
+        }
+      }
+      if( !s.isNull() ){
+        subs.push_back( s );
+        vars.push_back( v );
+        return;
+      }
+    }else{
+      n = ns;
+    }
+  }
+  if( n!=d_true ){
+    unproc.push_back( n );
+  }
+}
+
+
+Node TheoryStrings::mkConcat( Node n1, Node n2 ) {
+  return Rewriter::rewrite( NodeManager::currentNM()->mkNode( kind::STRING_CONCAT, n1, n2 ) );
+}
+
+Node TheoryStrings::mkConcat( Node n1, Node n2, Node n3 ) {
+  return Rewriter::rewrite( NodeManager::currentNM()->mkNode( kind::STRING_CONCAT, n1, n2, n3 ) );
+}
+
+Node TheoryStrings::mkConcat( const std::vector< Node >& c ) {
+  return Rewriter::rewrite( c.size()>1 ? NodeManager::currentNM()->mkNode( kind::STRING_CONCAT, c ) : ( c.size()==1 ? c[0] : d_emptyString ) );
+}
+
+Node TheoryStrings::mkLength( Node t ) {
+  return Rewriter::rewrite( NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, t ) );
+}
+
+Node TheoryStrings::mkSkolemCached( Node a, Node b, int id, const char * c, int isLenSplit ){
+  //return mkSkolemS( c, isLenSplit );
+  std::map< int, Node >::iterator it = d_skolem_cache[a][b].find( id );
+  if( it==d_skolem_cache[a][b].end() ){
+    Node sk = mkSkolemS( c, isLenSplit );
+    d_skolem_cache[a][b][id] = sk;
+    return sk;
+  }else{
+    return it->second;
+  }
+}
+
+//isLenSplit: -1-ignore, 0-no restriction, 1-greater than one, 2-one
+Node TheoryStrings::mkSkolemS( const char *c, int isLenSplit ) {
+  Node n = NodeManager::currentNM()->mkSkolem( c, NodeManager::currentNM()->stringType(), "string sko" );
+  d_length_lemma_terms_cache.insert( n );
+  ++(d_statistics.d_new_skolems);
+  if( isLenSplit==0 ){
+    sendLengthLemma( n );
+  } else if( isLenSplit == 1 ){
+    registerNonEmptySkolem( n );
+  }else if( isLenSplit==2 ){
+    Node len_one = NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, n ).eqNode( d_one );
+    Trace("strings-lemma") << "Strings::Lemma SK-ONE : " << len_one << std::endl;
+    Trace("strings-assert") << "(assert " << len_one << ")" << std::endl;
+    d_out->lemma( len_one );
+  }
+  return n;
+}
+
+void TheoryStrings::registerNonEmptySkolem( Node n ) {
+  if( d_skolem_ne_reg_cache.find( n )==d_skolem_ne_reg_cache.end() ){
+    d_skolem_ne_reg_cache.insert( n );
+    d_equalityEngine.assertEquality(n.eqNode(d_emptyString), false, d_true);
+    Node len_n_gt_z = NodeManager::currentNM()->mkNode(kind::GT,
+                        NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, n), d_zero);
+    Trace("strings-lemma") << "Strings::Lemma SK-NON-ZERO : " << len_n_gt_z << std::endl;
+    Trace("strings-assert") << "(assert " << len_n_gt_z << ")" << std::endl;
+    d_out->lemma(len_n_gt_z);
+  }
+}
+
+Node TheoryStrings::mkExplain( std::vector< Node >& a ) {
+  std::vector< Node > an;
+  return mkExplain( a, an );
+}
+
+Node TheoryStrings::mkExplain( std::vector< Node >& a, std::vector< Node >& an ) {
+  std::vector< TNode > antec_exp;
+  for( unsigned i=0; i<a.size(); i++ ) {
+    if( std::find( a.begin(), a.begin() + i, a[i] )==a.begin() + i ) {
+      bool exp = true;
+      Debug("strings-explain") << "Ask for explanation of " << a[i] << std::endl;
+      //assert
+      if(a[i].getKind() == kind::EQUAL) {
+        //assert( hasTerm(a[i][0]) );
+        //assert( hasTerm(a[i][1]) );
+        Assert( areEqual(a[i][0], a[i][1]) );
+        if( a[i][0]==a[i][1] ){
+          exp = false;
+        }
+      } else if( a[i].getKind()==kind::NOT && a[i][0].getKind()==kind::EQUAL ) {
+        Assert( hasTerm(a[i][0][0]) );
+        Assert( hasTerm(a[i][0][1]) );
+        AlwaysAssert( d_equalityEngine.areDisequal(a[i][0][0], a[i][0][1], true) );
+      }else if( a[i].getKind() == kind::AND ){
+        for( unsigned j=0; j<a[i].getNumChildren(); j++ ){
+          a.push_back( a[i][j] );
+        }
+        exp = false;
+      }
+      if( exp ) {
+        unsigned ps = antec_exp.size();
+        explain(a[i], antec_exp);
+        Debug("strings-explain") << "Done, explanation was : " << std::endl;
+        for( unsigned j=ps; j<antec_exp.size(); j++ ) {
+          Debug("strings-explain") << "  " << antec_exp[j] << std::endl;
+        }
+        Debug("strings-explain") << std::endl;
+      }
+    }
+  }
+  for( unsigned i=0; i<an.size(); i++ ) {
+    if( std::find( an.begin(), an.begin() + i, an[i] )==an.begin() + i ){
+      Debug("strings-explain") << "Add to explanation (new literal) " << an[i] << std::endl;
+      antec_exp.push_back(an[i]);
+    }
+  }
+  Node ant;
+  if( antec_exp.empty() ) {
+    ant = d_true;
+  } else if( antec_exp.size()==1 ) {
+    ant = antec_exp[0];
+  } else {
+    ant = NodeManager::currentNM()->mkNode( kind::AND, antec_exp );
+  }
+  //ant = Rewriter::rewrite( ant );
+  return ant;
+}
+
+Node TheoryStrings::mkAnd( std::vector< Node >& a ) {
+  std::vector< Node > au;
+  for( unsigned i=0; i<a.size(); i++ ){
+    if( std::find( au.begin(), au.end(), a[i] )==au.end() ){
+      au.push_back( a[i] );
+    }
+  }
+  if( au.empty() ) {
+    return d_true;
+  } else if( au.size() == 1 ) {
+    return au[0];
+  } else {
+    return NodeManager::currentNM()->mkNode( kind::AND, au );
+  }
+}
+
+void TheoryStrings::getConcatVec( Node n, std::vector< Node >& c ) {
+  if( n.getKind()==kind::STRING_CONCAT ) {
+    for( unsigned i=0; i<n.getNumChildren(); i++ ) {
+      if( !areEqual( n[i], d_emptyString ) ) {
+        c.push_back( n[i] );
+      }
+    }
+  }else{
+    c.push_back( n );
+  }
+}
+
+void TheoryStrings::checkDeqNF() {
+  std::vector< std::vector< Node > > cols;
+  std::vector< Node > lts;
+  std::map< Node, std::map< Node, bool > > processed;
+  
+  //for each pair of disequal strings, must determine whether their lengths are equal or disequal
+  for( NodeList::const_iterator id = d_ee_disequalities.begin(); id != d_ee_disequalities.end(); ++id ) {
+    Node eq = *id;
+    Node n[2];
+    for( unsigned i=0; i<2; i++ ){
+      n[i] = d_equalityEngine.getRepresentative( eq[i] );
+    }
+    if( processed[n[0]].find( n[1] )==processed[n[0]].end() ){
+      processed[n[0]][n[1]] = true;
+      Node lt[2];
+      for( unsigned i=0; i<2; i++ ){
+        EqcInfo* ei = getOrMakeEqcInfo( n[i], false );
+        lt[i] = ei ? ei->d_length_term : Node::null();
+        if( lt[i].isNull() ){
+          lt[i] = eq[i];
+        }
+        lt[i] = NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, lt[i] );
+      }
+      if( !areEqual( lt[0], lt[1] ) && !areDisequal( lt[0], lt[1] ) ){
+        sendSplit( lt[0], lt[1], "DEQ-LENGTH-SP" );
+      }
+    }
+  }
+  
+  if( !hasProcessed() ){
+    separateByLength( d_strings_eqc, cols, lts );
+    for( unsigned i=0; i<cols.size(); i++ ){
+      if( cols[i].size()>1 && d_lemma_cache.empty() ){
+        Trace("strings-solve") << "- Verify disequalities are processed for " << cols[i][0] << ", normal form : ";
+        printConcat( d_normal_forms[cols[i][0]], "strings-solve" );
+        Trace("strings-solve")  << "... #eql = " << cols[i].size() << std::endl;
+        //must ensure that normal forms are disequal
+        for( unsigned j=0; j<cols[i].size(); j++ ){
+          for( unsigned k=(j+1); k<cols[i].size(); k++ ){
+            //for strings that are disequal, but have the same length
+            if( areDisequal( cols[i][j], cols[i][k] ) ){
+              Assert( !d_conflict );
+              Trace("strings-solve") << "- Compare " << cols[i][j] << " ";
+              printConcat( d_normal_forms[cols[i][j]], "strings-solve" );
+              Trace("strings-solve") << " against " << cols[i][k] << " ";
+              printConcat( d_normal_forms[cols[i][k]], "strings-solve" );
+              Trace("strings-solve")  << "..." << std::endl;
+              processDeq( cols[i][j], cols[i][k] );
+              if( hasProcessed() ){
+                return;
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+void TheoryStrings::checkLengthsEqc() {
+  if( options::stringLenNorm() ){
+    for( unsigned i=0; i<d_strings_eqc.size(); i++ ){
+      //if( d_normal_forms[nodes[i]].size()>1 ) {
+      Trace("strings-process-debug") << "Process length constraints for " << d_strings_eqc[i] << std::endl;
+      //check if there is a length term for this equivalence class
+      EqcInfo* ei = getOrMakeEqcInfo( d_strings_eqc[i], false );
+      Node lt = ei ? ei->d_length_term : Node::null();
+      if( !lt.isNull() ) {
+        Node llt = NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, lt );
+        //now, check if length normalization has occurred
+        if( ei->d_normalized_length.get().isNull() ) {
+          Node nf = mkConcat( d_normal_forms[d_strings_eqc[i]] );
+          if( Trace.isOn("strings-process-debug") ){
+            Trace("strings-process-debug") << "  normal form is " << nf << " from base " << d_normal_forms_base[d_strings_eqc[i]] << std::endl;
+            Trace("strings-process-debug") << "  normal form exp is: " << std::endl;
+            for( unsigned j=0; j<d_normal_forms_exp[d_strings_eqc[i]].size(); j++ ){
+              Trace("strings-process-debug") << "   " << d_normal_forms_exp[d_strings_eqc[i]][j] << std::endl;
+            }
+          }
+          
+          //if not, add the lemma
+          std::vector< Node > ant;
+          ant.insert( ant.end(), d_normal_forms_exp[d_strings_eqc[i]].begin(), d_normal_forms_exp[d_strings_eqc[i]].end() );
+          ant.push_back( d_normal_forms_base[d_strings_eqc[i]].eqNode( lt ) );
+          Node lc = NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, nf );
+          Node lcr = Rewriter::rewrite( lc );
+          Trace("strings-process-debug") << "Rewrote length " << lc << " to " << lcr << std::endl;
+          Node eq = llt.eqNode( lcr );
+          if( llt!=lcr ){
+            ei->d_normalized_length.set( eq );
+            sendInference( ant, eq, "LEN-NORM", true );
+          }
+        }
+      }else{
+        Trace("strings-process-debug") << "No length term for eqc " << d_strings_eqc[i] << " " << d_eqc_to_len_term[d_strings_eqc[i]] << std::endl;
+        if( !options::stringEagerLen() ){
+          Node c = mkConcat( d_normal_forms[d_strings_eqc[i]] );
+          registerTerm( c, 3 );
+          /*
+          if( !c.isConst() ){
+            NodeNodeMap::const_iterator it = d_proxy_var.find( c );
+            if( it!=d_proxy_var.end() ){
+              Node pv = (*it).second;
+              Assert( d_proxy_var_to_length.find( pv )!=d_proxy_var_to_length.end() );
+              Node pvl = d_proxy_var_to_length[pv];
+              Node ceq = Rewriter::rewrite( mkLength( pv ).eqNode( pvl ) );
+              sendInference( d_empty_vec, ceq, "LEN-NORM-I", true );
+            }
+          }
+          */
+        }
+      }
+      //} else {
+      //  Trace("strings-process-debug") << "Do not process length constraints for " << nodes[i] << " " << d_normal_forms[nodes[i]].size() << std::endl;
+      //}
+    }
+  }
+}
+
+void TheoryStrings::checkCardinality() {
+  //int cardinality = options::stringCharCardinality();
+  //Trace("strings-solve-debug2") << "get cardinality: " << cardinality << endl;
+
+  //AJR: this will create a partition of eqc, where each collection has length that are pairwise propagated to be equal.
+  //  we do not require disequalities between the lengths of each collection, since we split on disequalities between lengths of string terms that are disequal (DEQ-LENGTH-SP).
+  //  TODO: revisit this?
+  std::vector< std::vector< Node > > cols;
+  std::vector< Node > lts;
+  separateByLength( d_strings_eqc, cols, lts );
+
+  for( unsigned i = 0; i<cols.size(); ++i ) {
+    Node lr = lts[i];
+    Trace("strings-card") << "Number of strings with length equal to " << lr << " is " << cols[i].size() << std::endl;
+    if( cols[i].size() > 1 ) {
+      // size > c^k
+      unsigned card_need = 1;
+      double curr = (double)cols[i].size();
+      while( curr>d_card_size ){
+        curr = curr/(double)d_card_size;
+        card_need++;
+      }
+      Trace("strings-card") << "Need length " << card_need << " for this number of strings (where alphabet size is " << d_card_size << ")." << std::endl;
+      Node cmp = NodeManager::currentNM()->mkNode( kind::GEQ, lr, NodeManager::currentNM()->mkConst( Rational( card_need ) ) );
+      cmp = Rewriter::rewrite( cmp );
+      if( cmp!=d_true ){
+        unsigned int int_k = (unsigned int)card_need;
+        for( std::vector< Node >::iterator itr1 = cols[i].begin();
+            itr1 != cols[i].end(); ++itr1) {
+          for( std::vector< Node >::iterator itr2 = itr1 + 1;
+            itr2 != cols[i].end(); ++itr2) {
+            if(!areDisequal( *itr1, *itr2 )) {
+              // add split lemma
+              sendSplit( *itr1, *itr2, "CARD-SP" );
+              return;
+            }
+          }
+        }
+        EqcInfo* ei = getOrMakeEqcInfo( lr, true );
+        Trace("strings-card") << "Previous cardinality used for " << lr << " is " << ((int)ei->d_cardinality_lem_k.get()-1) << std::endl;
+        if( int_k+1 > ei->d_cardinality_lem_k.get() ){
+          Node k_node = NodeManager::currentNM()->mkConst( ::CVC4::Rational( int_k ) );
+          //add cardinality lemma
+          Node dist = NodeManager::currentNM()->mkNode( kind::DISTINCT, cols[i] );
+          std::vector< Node > vec_node;
+          vec_node.push_back( dist );
+          for( std::vector< Node >::iterator itr1 = cols[i].begin();
+              itr1 != cols[i].end(); ++itr1) {
+            Node len = NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, *itr1 );
+            if( len!=lr ) {
+              Node len_eq_lr = len.eqNode(lr);
+              vec_node.push_back( len_eq_lr );
+            }
+          }
+          Node len = NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, cols[i][0] );
+          Node cons = NodeManager::currentNM()->mkNode( kind::GEQ, len, k_node );
+          cons = Rewriter::rewrite( cons );
+          ei->d_cardinality_lem_k.set( int_k+1 );
+          if( cons!=d_true ){
+            sendInference( d_empty_vec, vec_node, cons, "CARDINALITY", true );
+            return;
+          }
+        }
+      }
+    }
+  }
+}
+
+void TheoryStrings::getEquivalenceClasses( std::vector< Node >& eqcs ) {
+  eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( &d_equalityEngine );
+  while( !eqcs_i.isFinished() ) {
+    Node eqc = (*eqcs_i);
+    //if eqc.getType is string
+    if (eqc.getType().isString()) {
+      eqcs.push_back( eqc );
+    }
+    ++eqcs_i;
+  }
+}
+
+void TheoryStrings::separateByLength(std::vector< Node >& n,
+  std::vector< std::vector< Node > >& cols,
+  std::vector< Node >& lts ) {
+  unsigned leqc_counter = 0;
+  std::map< Node, unsigned > eqc_to_leqc;
+  std::map< unsigned, Node > leqc_to_eqc;
+  std::map< unsigned, std::vector< Node > > eqc_to_strings;
+  for( unsigned i=0; i<n.size(); i++ ) {
+    Node eqc = n[i];
+    Assert( d_equalityEngine.getRepresentative(eqc)==eqc );
+    EqcInfo* ei = getOrMakeEqcInfo( eqc, false );
+    Node lt = ei ? ei->d_length_term : Node::null();
+    if( !lt.isNull() ){
+      lt = NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, lt );
+      Node r = d_equalityEngine.getRepresentative( lt );
+      if( eqc_to_leqc.find( r )==eqc_to_leqc.end() ){
+        eqc_to_leqc[r] = leqc_counter;
+        leqc_to_eqc[leqc_counter] = r;
+        leqc_counter++;
+      }
+      eqc_to_strings[ eqc_to_leqc[r] ].push_back( eqc );
+    }else{
+      eqc_to_strings[leqc_counter].push_back( eqc );
+      leqc_counter++;
+    }
+  }
+  for( std::map< unsigned, std::vector< Node > >::iterator it = eqc_to_strings.begin(); it != eqc_to_strings.end(); ++it ){
+    cols.push_back( std::vector< Node >() );
+    cols.back().insert( cols.back().end(), it->second.begin(), it->second.end() );
+    lts.push_back( leqc_to_eqc[it->first] );
+  }
+}
+
+void TheoryStrings::printConcat( std::vector< Node >& n, const char * c ) {
+  for( unsigned i=0; i<n.size(); i++ ){
+    if( i>0 ) Trace(c) << " ++ ";
+    Trace(c) << n[i];
+  }
+}
+
+
+
+//// Finite Model Finding
+
+Node TheoryStrings::getNextDecisionRequest( unsigned& priority ) {
+  if( options::stringFMF() && !d_conflict ){
+    Node in_var_lsum = d_input_var_lsum.get();
+    //Trace("strings-fmf-debug") << "Strings::FMF: Assertion Level = " << d_valuation.getAssertionLevel() << std::endl;
+    //initialize the term we will minimize
+    if( in_var_lsum.isNull() && !d_input_vars.empty() ){
+      Trace("strings-fmf-debug") << "Input variables: ";
+      std::vector< Node > ll;
+      for(NodeSet::key_iterator itr = d_input_vars.key_begin();
+        itr != d_input_vars.key_end(); ++itr) {
+        Trace("strings-fmf-debug") << " " << (*itr) ;
+        ll.push_back( NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, *itr ) );
+      }
+      Trace("strings-fmf-debug") << std::endl;
+      in_var_lsum = ll.size()==1 ? ll[0] : NodeManager::currentNM()->mkNode( kind::PLUS, ll );
+      in_var_lsum = Rewriter::rewrite( in_var_lsum );
+      d_input_var_lsum.set( in_var_lsum );
+    }
+    if( !in_var_lsum.isNull() ){
+      //Trace("strings-fmf") << "Get next decision request." << std::endl;
+      //check if we need to decide on something
+      int decideCard = d_curr_cardinality.get();
+      if( d_cardinality_lits.find( decideCard )!=d_cardinality_lits.end() ){
+        bool value;
+        Node cnode = d_cardinality_lits[ d_curr_cardinality.get() ];
+        if( d_valuation.hasSatValue( cnode, value ) ) {
+          if( !value ){
+            d_curr_cardinality.set( d_curr_cardinality.get() + 1 );
+            decideCard = d_curr_cardinality.get();
+            Trace("strings-fmf-debug") << "Has false SAT value, increment and decide." << std::endl;
+          }else{
+            decideCard = -1;
+            Trace("strings-fmf-debug") << "Has true SAT value, do not decide." << std::endl;
+          }
+        }else{
+          Trace("strings-fmf-debug") << "No SAT value, decide." << std::endl;
+        }
+      }
+      if( decideCard!=-1 ){
+        if( d_cardinality_lits.find( decideCard )==d_cardinality_lits.end() ){
+          Node lit = NodeManager::currentNM()->mkNode( kind::LEQ, in_var_lsum, NodeManager::currentNM()->mkConst( Rational( decideCard ) ) );
+          lit = Rewriter::rewrite( lit );
+          d_cardinality_lits[decideCard] = lit;
+          Node lem = NodeManager::currentNM()->mkNode( kind::OR, lit, lit.negate() );
+          Trace("strings-fmf") << "Strings::FMF: Add decision lemma " << lem << ", decideCard = " << decideCard << std::endl;
+          d_out->lemma( lem );
+          d_out->requirePhase( lit, true );
+        }
+        Node lit = d_cardinality_lits[ decideCard ];
+        Trace("strings-fmf") << "Strings::FMF: Decide positive on " << lit << std::endl;
+        priority = 1;
+        return lit;
+      }
+    }
+  }
+  return Node::null();
+}
+
+Node TheoryStrings::ppRewrite(TNode atom) {
+  Trace("strings-ppr") << "TheoryStrings::ppRewrite " << atom << std::endl;
+  if( !options::stringLazyPreproc() ){
+    //eager preprocess here
+    std::vector< Node > new_nodes;
+    Node ret = d_preproc.processAssertion( atom, new_nodes );
+    if( ret!=atom ){
+      Trace("strings-ppr") << "  rewrote " << atom << " -> " << ret << ", with " << new_nodes.size() << " lemmas." << std::endl; 
+      for( unsigned i=0; i<new_nodes.size(); i++ ){
+        Trace("strings-ppr") << "    lemma : " << new_nodes[i] << std::endl;
+        d_out->lemma( new_nodes[i] );
+      }
+      return ret;
+    }else{
+      Assert( new_nodes.empty() );
+    }
+  }
+  return atom;
+}
+
+// Stats
+TheoryStrings::Statistics::Statistics():
+  d_splits("TheoryStrings::NumOfSplitOnDemands", 0),
+  d_eq_splits("TheoryStrings::NumOfEqSplits", 0),
+  d_deq_splits("TheoryStrings::NumOfDiseqSplits", 0),
+  d_loop_lemmas("TheoryStrings::NumOfLoops", 0),
+  d_new_skolems("TheoryStrings::NumOfNewSkolems", 0)
+{
+  smtStatisticsRegistry()->registerStat(&d_splits);
+  smtStatisticsRegistry()->registerStat(&d_eq_splits);
+  smtStatisticsRegistry()->registerStat(&d_deq_splits);
+  smtStatisticsRegistry()->registerStat(&d_loop_lemmas);
+  smtStatisticsRegistry()->registerStat(&d_new_skolems);
+}
+
+TheoryStrings::Statistics::~Statistics(){
+  smtStatisticsRegistry()->unregisterStat(&d_splits);
+  smtStatisticsRegistry()->unregisterStat(&d_eq_splits);
+  smtStatisticsRegistry()->unregisterStat(&d_deq_splits);
+  smtStatisticsRegistry()->unregisterStat(&d_loop_lemmas);
+  smtStatisticsRegistry()->unregisterStat(&d_new_skolems);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//// Regular Expressions
+
+
+unsigned TheoryStrings::getNumMemberships( Node n, bool isPos ) {
+  if( isPos ){
+    NodeIntMap::const_iterator it = d_pos_memberships.find( n );
+    if( it!=d_pos_memberships.end() ){
+      return (*it).second;
+    }
+  }else{
+    NodeIntMap::const_iterator it = d_neg_memberships.find( n );
+    if( it!=d_neg_memberships.end() ){
+      return (*it).second;
+    }
+  }
+  return 0;
+}
+
+Node TheoryStrings::getMembership( Node n, bool isPos, unsigned i ) {
+  return isPos ? d_pos_memberships_data[n][i] : d_neg_memberships_data[n][i];
+}
+
+Node TheoryStrings::mkRegExpAntec(Node atom, Node ant) {
+  if(d_regexp_ant.find(atom) == d_regexp_ant.end()) {
+    return Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::AND, ant, atom) );
+  } else {
+    Node n = d_regexp_ant[atom];
+    return Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::AND, ant, n) );
+  }
+}
+
+Node TheoryStrings::normalizeRegexp(Node r) {
+  Node nf_r = r;
+  if(d_nf_regexps.find(r) != d_nf_regexps.end()) {
+    nf_r = d_nf_regexps[r];
+  } else {
+    std::vector< Node > nf_exp;
+    if(!d_regexp_opr.checkConstRegExp(r)) {
+      switch( r.getKind() ) {
+        case kind::REGEXP_EMPTY:
+        case kind::REGEXP_SIGMA: {
+          break;
+        }
+        case kind::STRING_TO_REGEXP: {
+          if(r[0].isConst()) {
+            break;
+          } else {
+            if(d_normal_forms.find( r[0] ) != d_normal_forms.end()) {
+              nf_r = mkConcat( d_normal_forms[r[0]] );
+              Debug("regexp-nf") << "Term: " << r[0] << " has a normal form " << nf_r << std::endl;
+              nf_exp.insert(nf_exp.end(), d_normal_forms_exp[r[0]].begin(), d_normal_forms_exp[r[0]].end());
+              nf_r = Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::STRING_TO_REGEXP, nf_r) );
+            }
+          }
+        }
+        case kind::REGEXP_CONCAT:
+        case kind::REGEXP_UNION:
+        case kind::REGEXP_INTER: {
+          bool flag = false;
+          std::vector< Node > vec_nodes;
+          for(unsigned i=0; i<r.getNumChildren(); ++i) {
+            Node rtmp = normalizeRegexp(r[i]);
+            vec_nodes.push_back(rtmp);
+            if(rtmp != r[i]) {
+              flag = true;
+            }
+          }
+          if(flag) {
+            Node rtmp = vec_nodes.size()==1 ? vec_nodes[0] : NodeManager::currentNM()->mkNode(r.getKind(), vec_nodes);
+            nf_r = Rewriter::rewrite( rtmp );
+          }
+        }
+        case kind::REGEXP_STAR: {
+          Node rtmp = normalizeRegexp(r[0]);
+          if(rtmp != r[0]) {
+            rtmp = NodeManager::currentNM()->mkNode(kind::REGEXP_STAR, rtmp);
+            nf_r = Rewriter::rewrite( rtmp );
+          }
+        }
+        default: {
+          Unreachable();
+        }
+      }
+    }
+    d_nf_regexps[r] = nf_r;
+    d_nf_regexps_exp[r] = nf_exp;
+  }
+  return nf_r;
+}
+
+bool TheoryStrings::normalizePosMemberships(std::map< Node, std::vector< Node > > &memb_with_exps) {
+  std::map< Node, std::vector< Node > > unprocessed_x_exps;
+  std::map< Node, std::vector< Node > > unprocessed_memberships;
+  std::map< Node, std::vector< Node > > unprocessed_memberships_bases;
+  bool addLemma = false;
+
+  Trace("regexp-check") << "Normalizing Positive Memberships ... " << std::endl;
+
+  for( NodeIntMap::const_iterator itr_xr = d_pos_memberships.begin(); itr_xr != d_pos_memberships.end(); ++itr_xr ){
+    Node x = (*itr_xr).first;
+    Node nf_x = x;
+    std::vector< Node > nf_x_exp;
+    if(d_normal_forms.find( x ) != d_normal_forms.end()) {
+      //nf_x = mkConcat( d_normal_forms[x] );
+      nf_x_exp.insert(nf_x_exp.end(), d_normal_forms_exp[x].begin(), d_normal_forms_exp[x].end());
+      //Debug("regexp-nf") << "Term: " << x << " has a normal form " << ret << std::endl;
+    } else {
+      Assert(false);
+    }
+    Trace("regexp-nf") << "Checking Memberships for N(" << x << ") = " << nf_x << " :" << std::endl;
+
+    std::vector< Node > vec_x;
+    std::vector< Node > vec_r;
+    unsigned n_pmem = (*itr_xr).second;
+    Assert( getNumMemberships( x, true )==n_pmem );
+    for( unsigned k=0; k<n_pmem; k++ ){
+      Node r = getMembership( x, true, k );
+      Node nf_r = normalizeRegexp( r );  //AJR: fixed (was normalizing mem #0 always)
+      Node memb = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, nf_x, nf_r);
+      if(d_processed_memberships.find(memb) == d_processed_memberships.end()) {
+        if(d_regexp_opr.checkConstRegExp(nf_r)) {
+          vec_x.push_back(x);
+          vec_r.push_back(r);
+        } else {
+          Trace("regexp-nf") << "Handling Symbolic Regexp for N(" << r << ") = " << nf_r << std::endl;
+          //TODO: handle symbolic ones
+          addLemma = true;
+        }
+        d_processed_memberships.insert(memb);
+      }
+    }
+    if(!vec_x.empty()) {
+      if(unprocessed_x_exps.find(nf_x) == unprocessed_x_exps.end()) {
+        unprocessed_x_exps[nf_x] = nf_x_exp;
+        unprocessed_memberships[nf_x] = vec_r;
+        unprocessed_memberships_bases[nf_x] = vec_x;
+      } else {
+        unprocessed_x_exps[nf_x].insert(unprocessed_x_exps[nf_x].end(), nf_x_exp.begin(), nf_x_exp.end());
+        unprocessed_memberships[nf_x].insert(unprocessed_memberships[nf_x].end(), vec_r.begin(), vec_r.end());
+        unprocessed_memberships_bases[nf_x].insert(unprocessed_memberships_bases[nf_x].end(), vec_x.begin(), vec_x.end());
+      }
+    }
+  }
+  //Intersection
+  for(std::map< Node, std::vector< Node > >::const_iterator itr = unprocessed_memberships.begin();
+      itr != unprocessed_memberships.end(); ++itr) {
+    Node nf_x = itr->first;
+    std::vector< Node > exp( unprocessed_x_exps[nf_x] );
+    Node r = itr->second[0];
+    //get nf_r
+    Node inter_r = d_nf_regexps[r];
+    exp.insert(exp.end(), d_nf_regexps_exp[r].begin(), d_nf_regexps_exp[r].end());
+    Node x = unprocessed_memberships_bases[itr->first][0];
+    Node memb = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, x, r);
+    exp.push_back(memb);
+    for(std::size_t i=1; i < itr->second.size(); i++) {
+      //exps
+      Node r2 = itr->second[i];
+      Node inter_r2 = d_nf_regexps[r2];
+      exp.insert(exp.end(), d_nf_regexps_exp[r2].begin(), d_nf_regexps_exp[r2].end());
+      Node x2 = unprocessed_memberships_bases[itr->first][i];
+      memb = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, x2, r2);
+      exp.push_back(memb);
+      //intersection
+      bool spflag = false;
+      inter_r = d_regexp_opr.intersect(inter_r, inter_r2, spflag);
+      if(inter_r == d_emptyRegexp) {
+        //conflict
+        Node conc;
+        sendInference( d_empty_vec, exp, conc, "INTERSECT CONFLICT", true );
+        addLemma = true;
+        break;
+      }
+    }
+    //infer
+    if(!d_conflict) {
+      memb = Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, nf_x, inter_r) );
+      memb_with_exps[memb] = exp;
+    } else {
+      break;
+    }
+  }
+
+  return addLemma;
+}
+
+bool TheoryStrings::applyRConsume( CVC4::String &s, Node &r) {
+  Trace("regexp-derivative") << "TheoryStrings::derivative: s=" << s << ", r= " << r << std::endl;
+  Assert( d_regexp_opr.checkConstRegExp(r) );
+
+  if( !s.isEmptyString() ) {
+    Node dc = r;
+
+    for(unsigned i=0; i<s.size(); ++i) {
+      CVC4::String c = s.substr(i, 1);
+      Node dc2;
+      int rt = d_regexp_opr.derivativeS(dc, c, dc2);
+      dc = dc2;
+      if(rt == 0) {
+        Unreachable();
+      } else if(rt == 2) {
+        return false;
+      }
+    }
+    r = dc;
+  }
+
+  return true;
+}
+
+Node TheoryStrings::applyRSplit(Node s1, Node s2, Node r) {
+  Assert(d_regexp_opr.checkConstRegExp(r));
+
+  std::vector< std::pair< Node, Node > > vec_can;
+  d_regexp_opr.splitRegExp(r, vec_can);
+  //TODO: lazy cache or eager?
+  std::vector< Node > vec_or;
+
+  for(unsigned int i=0; i<vec_can.size(); i++) {
+    Node m1 = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s1, vec_can[i].first);
+    Node m2 = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s2, vec_can[i].second);
+    Node c = Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::AND, m1, m2) );
+    vec_or.push_back( c );
+  }
+  Node conc = vec_or.size()==0? Node::null() : vec_or.size()==1 ? vec_or[0] : Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::OR, vec_or) );
+  return conc;
+}
+
+bool TheoryStrings::applyRLen(std::map< Node, std::vector< Node > > &XinR_with_exps) {
+  if(XinR_with_exps.size() > 0) {
+    //TODO: get vector, var, store.
+    return true;
+  } else  {
+    return false;
+  }
+}
+
+bool TheoryStrings::checkMembershipsWithoutLength(
+  std::map< Node, std::vector< Node > > &memb_with_exps,
+  std::map< Node, std::vector< Node > > &XinR_with_exps) {
+  for(std::map< Node, std::vector< Node > >::iterator itr = memb_with_exps.begin(); itr != memb_with_exps.end(); ++itr) {
+    Node memb = itr->first;
+    Node s = memb[0];
+    Node r = memb[1];
+    if(s.isConst()) {
+      memb = Rewriter::rewrite( memb );
+      if(memb == d_false) {
+        Node conc;
+        sendInference(d_empty_vec, itr->second, conc, "MEMBERSHIP CONFLICT", true);
+        //addLemma = true;
+        return true;
+      } else {
+        Assert(memb == d_true);
+      }
+    } else if(s.getKind() == kind::VARIABLE) {
+      //add to XinR
+      XinR_with_exps[itr->first] = itr->second;
+    } else {
+      Assert(s.getKind() == kind::STRING_CONCAT);
+      Node conc;
+      for( unsigned i=0; i<s.getNumChildren(); i++ ) {
+        if(s[i].isConst()) {
+          CVC4::String str( s[0].getConst< String >() );
+          //R-Consume, see Tianyi's thesis
+          if(!applyRConsume(str, r)) {
+            sendInference(d_empty_vec, itr->second, conc, "R-Consume CONFLICT", true);
+            //addLemma = true;
+            return true;
+          }
+        } else {
+          //R-Split, see Tianyi's thesis
+          if(i == s.getNumChildren() - 1) {
+            //add to XinR
+            Node memb2 = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s[i], r);
+            XinR_with_exps[itr->first] = itr->second;
+          } else {
+            Node s1 = s[i];
+            std::vector< Node > vec_s2;
+            for( unsigned j=i+1; j<s.getNumChildren(); j++ ) {
+              vec_s2.push_back(s[j]);
+            }
+            Node s2 = mkConcat(vec_s2);
+            conc = applyRSplit(s1, s2, r);
+            if(conc == d_true) {
+              break;
+            } else if(conc.isNull() || conc == d_false) {
+              conc = Node::null();
+              sendInference(d_empty_vec, itr->second, conc, "R-Split Conflict", true);
+              //addLemma = true;
+              return true;
+            } else {
+              sendInference(d_empty_vec, itr->second, conc, "R-Split", true);
+              //addLemma = true;
+              return true;
+            }
+          }
+        }
+      }
+    }
+  }
+  return false;
+}
+
+bool TheoryStrings::checkMemberships2() {
+  bool addedLemma = false;
+  d_nf_regexps.clear();
+  d_nf_regexps_exp.clear();
+  std::map< Node, std::vector< Node > > memb_with_exps;
+  std::map< Node, std::vector< Node > > XinR_with_exps;
+
+  addedLemma = normalizePosMemberships( memb_with_exps );
+  if(!d_conflict) {
+    // main procedure
+    addedLemma |= checkMembershipsWithoutLength( memb_with_exps, XinR_with_exps );
+    //TODO: check addlemma
+    if (!addedLemma && !d_conflict) {
+      for(std::map< Node, std::vector< Node > >::const_iterator itr = XinR_with_exps.begin();
+          itr != XinR_with_exps.end(); ++itr) {
+        std::vector<Node> vec_or;
+        d_regexp_opr.disjunctRegExp( itr->first, vec_or );
+        Node tmp = NodeManager::currentNM()->mkNode(kind::REGEXP_UNION, vec_or);
+        Trace("regexp-process") << "Got r: " << itr->first << " to " << tmp << std::endl;
+        /*
+        if(r.getKind() == kind::REGEXP_STAR) {
+          //TODO: apply R-Len
+          addedLemma = applyRLen(XinR_with_exps);
+        } else {
+          //TODO: split
+        }
+        */ 
+      }
+      Assert(false); //TODO:tmp
+    }
+  }
+
+  return addedLemma;
+}
+
+void TheoryStrings::checkMemberships() {
+  //add the memberships
+  std::vector< Node > mems;
+  d_extt->getActive( mems, kind::STRING_IN_REGEXP );
+  for( unsigned i=0; i<mems.size(); i++ ){
+    Node n = mems[i];
+    Assert( d_extf_info_tmp.find( n )!=d_extf_info_tmp.end() );
+    if( d_extf_info_tmp[n].d_pol==1 || d_extf_info_tmp[n].d_pol==-1 ){
+      bool pol = d_extf_info_tmp[n].d_pol==1;
+      Trace("strings-process-debug") << "  add membership : " << n << ", pol = " << pol << std::endl;
+      addMembership( pol ? n : n.negate() );
+    }else{
+      Trace("strings-process-debug") << "  irrelevant (non-asserted) membership : " << n << std::endl;
+    }
+  }
+
+  bool addedLemma = false;
+  bool changed = false;
+  std::vector< Node > processed;
+  std::vector< Node > cprocessed;
+
+  Trace("regexp-debug") << "Checking Memberships ... " << std::endl;
+  //if(options::stringEIT()) {
+    //TODO: Opt for normal forms
+    for( NodeIntMap::const_iterator itr_xr = d_pos_memberships.begin(); itr_xr != d_pos_memberships.end(); ++itr_xr ){
+      bool spflag = false;
+      Node x = (*itr_xr).first;
+      Trace("regexp-debug") << "Checking Memberships for " << x << std::endl;
+      if(d_inter_index.find(x) == d_inter_index.end()) {
+        d_inter_index[x] = 0;
+      }
+      int cur_inter_idx = d_inter_index[x];
+      unsigned n_pmem = (*itr_xr).second;
+      Assert( getNumMemberships( x, true )==n_pmem );
+      if( cur_inter_idx != (int)n_pmem ) {
+        if( n_pmem == 1) {
+          d_inter_cache[x] = getMembership( x, true, 0 );
+          d_inter_index[x] = 1;
+          Trace("regexp-debug") << "... only one choice " << std::endl;
+        } else if(n_pmem > 1) {
+          Node r;
+          if(d_inter_cache.find(x) != d_inter_cache.end()) {
+            r = d_inter_cache[x];
+          }
+          if(r.isNull()) {
+            r = getMembership( x, true, 0 );
+            cur_inter_idx = 1;
+          }
+
+          unsigned k_start = cur_inter_idx;
+          Trace("regexp-debug") << "... staring from : " << cur_inter_idx << ", we have " << n_pmem << std::endl;
+          for(unsigned k = k_start; k<n_pmem; k++) {
+            Node r2 = getMembership( x, true, k );
+            r = d_regexp_opr.intersect(r, r2, spflag);
+            if(spflag) {
+              break;
+            } else if(r == d_emptyRegexp) {
+              std::vector< Node > vec_nodes;
+              for( unsigned kk=0; kk<=k; kk++ ){
+                Node rr = getMembership( x, true, kk );
+                Node n = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, x, rr);
+                vec_nodes.push_back( n );
+              }
+              Node conc;
+              sendInference(vec_nodes, conc, "INTERSECT CONFLICT", true);
+              addedLemma = true;
+              break;
+            }
+            if(d_conflict) {
+              break;
+            }
+          }
+          //updates
+          if(!d_conflict && !spflag) {
+            d_inter_cache[x] = r;
+            d_inter_index[x] = (int)n_pmem;
+          }
+        }
+      }
+    }
+  //}
+
+  Trace("regexp-debug") << "... No Intersect Conflict in Memberships, addedLemma: " << addedLemma << std::endl;
+  if(!addedLemma) {
+    for( unsigned i=0; i<d_regexp_memberships.size(); i++ ) {
+      //check regular expression membership
+      Node assertion = d_regexp_memberships[i];
+      Trace("regexp-debug") << "Check : " << assertion << " " << (d_regexp_ucached.find(assertion) == d_regexp_ucached.end()) << " " << (d_regexp_ccached.find(assertion) == d_regexp_ccached.end()) << std::endl;
+      if( d_regexp_ucached.find(assertion) == d_regexp_ucached.end()
+        && d_regexp_ccached.find(assertion) == d_regexp_ccached.end() ) {
+        Trace("strings-regexp") << "We have regular expression assertion : " << assertion << std::endl;
+        Node atom = assertion.getKind()==kind::NOT ? assertion[0] : assertion;
+        bool polarity = assertion.getKind()!=kind::NOT;
+        bool flag = true;
+        Node x = atom[0];
+        Node r = atom[1];
+        std::vector< Node > rnfexp;
+
+        //if(options::stringOpt1()) {
+        if(true){
+          if(!x.isConst()) {
+            x = getNormalString( x, rnfexp);
+            changed = true;
+          }
+          if(!d_regexp_opr.checkConstRegExp(r)) {
+            r = getNormalSymRegExp(r, rnfexp);
+            changed = true;
+          }
+          Trace("strings-regexp-nf") << "Term " << atom << " is normalized to " << x << " IN " << r << std::endl;
+          if(changed) {
+            Node tmp = Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, x, r) );
+            if(!polarity) {
+              tmp = tmp.negate();
+            }
+            if(tmp == d_true) {
+              d_regexp_ccached.insert(assertion);
+              continue;
+            } else if(tmp == d_false) {
+              Node antec = mkRegExpAntec(assertion, mkExplain(rnfexp));
+              Node conc = Node::null();
+              sendLemma(antec, conc, "REGEXP NF Conflict");
+              addedLemma = true;
+              break;
+            }
+          }
+        }
+
+        if( polarity ) {
+          flag = checkPDerivative(x, r, atom, addedLemma, rnfexp);
+          if(options::stringOpt2() && flag) {
+            if(d_regexp_opr.checkConstRegExp(r) && x.getKind()==kind::STRING_CONCAT) {
+              std::vector< std::pair< Node, Node > > vec_can;
+              d_regexp_opr.splitRegExp(r, vec_can);
+              //TODO: lazy cache or eager?
+              std::vector< Node > vec_or;
+              std::vector< Node > vec_s2;
+              for(unsigned int s2i=1; s2i<x.getNumChildren(); s2i++) {
+                vec_s2.push_back(x[s2i]);
+              }
+              Node s1 = x[0];
+              Node s2 = mkConcat(vec_s2);
+              for(unsigned int i=0; i<vec_can.size(); i++) {
+                Node m1 = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s1, vec_can[i].first);
+                Node m2 = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s2, vec_can[i].second);
+                Node c = Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::AND, m1, m2) );
+                vec_or.push_back( c );
+              }
+              Node conc = vec_or.size()==1 ? vec_or[0] : Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::OR, vec_or) );
+              //Trace("regexp-split") << "R " << r << " to " << conc << std::endl;
+              Node antec = mkRegExpAntec(atom, mkExplain(rnfexp));
+              if(conc == d_true) {
+                if(changed) {
+                  cprocessed.push_back( assertion );
+                } else {
+                  processed.push_back( assertion );
+                }
+              } else {
+                sendLemma(antec, conc, "RegExp-CST-SP");
+              }
+              addedLemma = true;
+              flag = false;
+            }
+          }
+        } else {
+          if(! options::stringExp()) {
+            throw LogicException("Strings Incomplete (due to Negative Membership) by default, try --strings-exp option.");
+          }
+        }
+        if(flag) {
+          //check if the term is atomic
+          Node xr = getRepresentative( x );
+          //Trace("strings-regexp") << xr << " is rep of " << x << std::endl;
+          //Assert( d_normal_forms.find( xr )!=d_normal_forms.end() );
+          //TODO
+          if( true || r.getKind()!=kind::REGEXP_STAR || ( d_normal_forms[xr].size()==1 && x.getKind()!=kind::STRING_CONCAT ) ){
+            Trace("strings-regexp") << "Unroll/simplify membership of atomic term " << xr << std::endl;
+            //if so, do simple unrolling
+            std::vector< Node > nvec;
+
+            /*if(xr.isConst()) {
+              Node tmp = Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, xr, r) );
+              if(tmp==d_true || tmp==d_false) {
+                if(!polarity) {
+                  tmp = tmp==d_true? d_false : d_true;
+                }
+                nvec.push_back( tmp );
+              }
+            }*/
+
+            if(nvec.empty()) {
+              d_regexp_opr.simplify(atom, nvec, polarity);
+            }
+            Node antec = assertion;
+            if(d_regexp_ant.find(assertion) != d_regexp_ant.end()) {
+              antec = d_regexp_ant[assertion];
+              for(std::vector< Node >::const_iterator itr=nvec.begin(); itr<nvec.end(); itr++) {
+                if(itr->getKind() == kind::STRING_IN_REGEXP) {
+                  if(d_regexp_ant.find( *itr ) == d_regexp_ant.end()) {
+                    d_regexp_ant[ *itr ] = antec;
+                  }
+                }
+              }
+            }
+            antec = Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::AND, antec, mkExplain(rnfexp)) );
+            Node conc = nvec.size()==1 ? nvec[0] : NodeManager::currentNM()->mkNode(kind::AND, nvec);
+            conc = Rewriter::rewrite(conc);
+            sendLemma( antec, conc, "REGEXP_Unfold" );
+            addedLemma = true;
+            if(changed) {
+              cprocessed.push_back( assertion );
+            } else {
+              processed.push_back( assertion );
+            }
+            //d_regexp_ucached[assertion] = true;
+          }else{
+            Trace("strings-regexp") << "Unroll/simplify membership of non-atomic term " << xr << " = ";
+            for( unsigned j=0; j<d_normal_forms[xr].size(); j++ ){
+              Trace("strings-regexp") << d_normal_forms[xr][j] << " ";
+            }
+            Trace("strings-regexp") << ", polarity = " << polarity << std::endl;
+            //otherwise, distribute unrolling over parts
+            Node p1;
+            Node p2;
+            if( d_normal_forms[xr].size()>1 ){
+              p1 = d_normal_forms[xr][0];
+              std::vector< Node > cc;
+              cc.insert( cc.begin(), d_normal_forms[xr].begin() + 1, d_normal_forms[xr].end() );
+              p2 = mkConcat( cc );
+            }
+
+            Trace("strings-regexp-debug") << "Construct antecedant..." << std::endl;
+            std::vector< Node > antec;
+            std::vector< Node > antecn;
+            antec.insert( antec.begin(), d_normal_forms_exp[xr].begin(), d_normal_forms_exp[xr].end() );
+            if( x!=xr ){
+              antec.push_back( x.eqNode( xr ) );
+            }
+            antecn.push_back( assertion );
+            Node ant = mkExplain( antec, antecn );
+            Trace("strings-regexp-debug") << "Construct conclusion..." << std::endl;
+            Node conc;
+            if( polarity ){
+              if( d_normal_forms[xr].size()==0 ){
+                conc = d_true;
+              }else if( d_normal_forms[xr].size()==1 ){
+                Trace("strings-regexp-debug") << "Case 1\n";
+                conc = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, d_normal_forms[xr][0], r);
+              }else{
+                Trace("strings-regexp-debug") << "Case 2\n";
+                std::vector< Node > conc_c;
+                Node s11 = mkSkolemS( "s11" );
+                Node s12 = mkSkolemS( "s12" );
+                Node s21 = mkSkolemS( "s21" );
+                Node s22 = mkSkolemS( "s22" );
+                conc = p1.eqNode( mkConcat(s11, s12) );
+                conc_c.push_back(conc);
+                conc = p2.eqNode( mkConcat(s21, s22) );
+                conc_c.push_back(conc);
+                conc = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s11, r);
+                conc_c.push_back(conc);
+                conc = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP,  mkConcat(s12, s21), r[0]);
+                conc_c.push_back(conc);
+                conc = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s22, r);
+                conc_c.push_back(conc);
+                conc = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::AND, conc_c));
+                Node eqz = Rewriter::rewrite(x.eqNode(d_emptyString));
+                conc = NodeManager::currentNM()->mkNode(kind::OR, eqz, conc);
+                d_pending_req_phase[eqz] = true;
+              }
+            }else{
+              if( d_normal_forms[xr].size()==0 ){
+                conc = d_false;
+              }else if( d_normal_forms[xr].size()==1 ){
+                Trace("strings-regexp-debug") << "Case 3\n";
+                conc = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, d_normal_forms[xr][0], r).negate();
+              }else{
+                Trace("strings-regexp-debug") << "Case 4\n";
+                Node len1 = NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, p1);
+                Node len2 = NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, p2);
+                Node bi = NodeManager::currentNM()->mkBoundVar(NodeManager::currentNM()->integerType());
+                Node bj = NodeManager::currentNM()->mkBoundVar(NodeManager::currentNM()->integerType());
+                Node b1v = NodeManager::currentNM()->mkNode(kind::BOUND_VAR_LIST, bi, bj);
+                Node g1 = NodeManager::currentNM()->mkNode(kind::AND,
+                      NodeManager::currentNM()->mkNode(kind::GEQ, bi, d_zero),
+                      NodeManager::currentNM()->mkNode(kind::GEQ, len1, bi),
+                      NodeManager::currentNM()->mkNode(kind::GEQ, bj, d_zero),
+                      NodeManager::currentNM()->mkNode(kind::GEQ, len2, bj));
+                Node s11 = NodeManager::currentNM()->mkNode(kind::STRING_SUBSTR, p1, d_zero, bi);
+                Node s12 = NodeManager::currentNM()->mkNode(kind::STRING_SUBSTR, p1, bi, NodeManager::currentNM()->mkNode(kind::MINUS, len1, bi));
+                Node s21 = NodeManager::currentNM()->mkNode(kind::STRING_SUBSTR, p2, d_zero, bj);
+                Node s22 = NodeManager::currentNM()->mkNode(kind::STRING_SUBSTR, p2, bj, NodeManager::currentNM()->mkNode(kind::MINUS, len2, bj));
+                Node cc1 = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s11, r).negate();
+                Node cc2 = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP,  mkConcat(s12, s21), r[0]).negate();
+                Node cc3 = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, s22, r).negate();
+                conc = NodeManager::currentNM()->mkNode(kind::OR, cc1, cc2, cc3);
+                conc = NodeManager::currentNM()->mkNode(kind::IMPLIES, g1, conc);
+                conc = NodeManager::currentNM()->mkNode(kind::FORALL, b1v, conc);
+                conc = NodeManager::currentNM()->mkNode(kind::AND, x.eqNode(d_emptyString).negate(), conc);
+              }
+            }
+            if( conc!=d_true ){
+              ant = mkRegExpAntec(assertion, ant);
+              sendLemma(ant, conc, "REGEXP CSTAR");
+              addedLemma = true;
+              if( conc==d_false ){
+                d_regexp_ccached.insert( assertion );
+              }else{
+                cprocessed.push_back( assertion );
+              }
+            }else{
+              d_regexp_ccached.insert(assertion);
+            }
+          }
+        }
+      }
+      if(d_conflict) {
+        break;
+      }
+    }
+  }
+  if( addedLemma ) {
+    if( !d_conflict ){
+      for( unsigned i=0; i<processed.size(); i++ ) {
+        Trace("strings-regexp") << "...add " << processed[i] << " to u-cache." << std::endl;
+        d_regexp_ucached.insert(processed[i]);
+      }
+      for( unsigned i=0; i<cprocessed.size(); i++ ) {
+        Trace("strings-regexp") << "...add " << cprocessed[i] << " to c-cache." << std::endl;
+        d_regexp_ccached.insert(cprocessed[i]);
+      }
+    }
+  }
+}
+
+bool TheoryStrings::checkPDerivative( Node x, Node r, Node atom, bool &addedLemma, std::vector< Node > &nf_exp ) {
+  
+  Node antnf = mkExplain(nf_exp);
+
+  if(areEqual(x, d_emptyString)) {
+    Node exp;
+    switch(d_regexp_opr.delta(r, exp)) {
+      case 0: {
+        Node antec = mkRegExpAntec(atom, x.eqNode(d_emptyString));
+        antec = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::AND, antec, antnf));
+        sendLemma(antec, exp, "RegExp Delta");
+        addedLemma = true;
+        d_regexp_ccached.insert(atom);
+        return false;
+      }
+      case 1: {
+        d_regexp_ccached.insert(atom);
+        break;
+      }
+      case 2: {
+        Node antec = mkRegExpAntec(atom, x.eqNode(d_emptyString));
+        antec = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::AND, antec, antnf));
+        Node conc = Node::null();
+        sendLemma(antec, conc, "RegExp Delta CONFLICT");
+        addedLemma = true;
+        d_regexp_ccached.insert(atom);
+        return false;
+      }
+      default:
+        //Impossible
+        break;
+    }
+  } else {
+    /*Node xr = getRepresentative( x );
+    if(x != xr) {
+      Node n = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, xr, r);
+      Node nn = Rewriter::rewrite( n );
+      if(nn == d_true) {
+        d_regexp_ccached.insert(atom);
+        return false;
+      } else if(nn == d_false) {
+        Node antec = mkRegExpAntec(atom, x.eqNode(xr));
+        Node conc = Node::null();
+        sendLemma(antec, conc, "RegExp Delta CONFLICT");
+        addedLemma = true;
+        d_regexp_ccached.insert(atom);
+        return false;
+      }
+    }*/
+    Node sREant = mkRegExpAntec(atom, d_true);
+    sREant = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::AND, sREant, antnf));
+    if(deriveRegExp( x, r, sREant )) {
+      addedLemma = true;
+      d_regexp_ccached.insert(atom);
+      return false;
+    }
+  }
+  return true;
+}
+
+CVC4::String TheoryStrings::getHeadConst( Node x ) {
+  if( x.isConst() ) {
+    return x.getConst< String >();
+  } else if( x.getKind() == kind::STRING_CONCAT ) {
+    if( x[0].isConst() ) {
+      return x[0].getConst< String >();
+    } else {
+      return d_emptyString.getConst< String >();
+    }
+  } else {
+    return d_emptyString.getConst< String >();
+  }
+}
+
+bool TheoryStrings::deriveRegExp( Node x, Node r, Node ant ) {
+  // TODO cstr in vre
+  Assert(x != d_emptyString);
+  Trace("regexp-derive") << "TheoryStrings::deriveRegExp: x=" << x << ", r= " << r << std::endl;
+  //if(x.isConst()) {
+  //  Node n = NodeManager::currentNM()->mkNode( kind::STRING_IN_REGEXP, x, r );
+  //  Node r = Rewriter::rewrite( n );
+  //  if(n != r) {
+  //    sendLemma(ant, r, "REGEXP REWRITE");
+  //    return true;
+  //  }
+  //}
+  CVC4::String s = getHeadConst( x );
+  if( !s.isEmptyString() && d_regexp_opr.checkConstRegExp( r ) ) {
+    Node conc = Node::null();
+    Node dc = r;
+    bool flag = true;
+    for(unsigned i=0; i<s.size(); ++i) {
+      CVC4::String c = s.substr(i, 1);
+      Node dc2;
+      int rt = d_regexp_opr.derivativeS(dc, c, dc2);
+      dc = dc2;
+      if(rt == 0) {
+        //TODO
+      } else if(rt == 2) {
+        // CONFLICT
+        flag = false;
+        break;
+      }
+    }
+    // send lemma
+    if(flag) {
+      if(x.isConst()) {
+        Assert(false, "Impossible: TheoryStrings::deriveRegExp: const string in const regular expression.");
+        return false;
+      } else {
+        Assert( x.getKind() == kind::STRING_CONCAT );
+        std::vector< Node > vec_nodes;
+        for(unsigned int i=1; i<x.getNumChildren(); ++i ) {
+          vec_nodes.push_back( x[i] );
+        }
+        Node left =  mkConcat( vec_nodes );
+        left = Rewriter::rewrite( left );
+        conc = NodeManager::currentNM()->mkNode( kind::STRING_IN_REGEXP, left, dc );
+
+        /*std::vector< Node > sdc;
+        d_regexp_opr.simplify(conc, sdc, true);
+        if(sdc.size() == 1) {
+          conc = sdc[0];
+        } else {
+          conc = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::AND, conc));
+        }*/
+      }
+    }
+    sendLemma(ant, conc, "RegExp-Derive");
+    return true;
+  } else {
+    return false;
+  }
+}
+
+void TheoryStrings::addMembership(Node assertion) {
+  bool polarity = assertion.getKind() != kind::NOT;
+  TNode atom = polarity ? assertion : assertion[0];
+  Node x = atom[0];
+  Node r = atom[1];
+  if(polarity) {
+    int index = 0;
+    NodeIntMap::const_iterator it = d_pos_memberships.find( x );
+    if( it!=d_nf_pairs.end() ){
+      index = (*it).second;
+      for( int k=0; k<index; k++ ){
+        if( k<(int)d_pos_memberships_data[x].size() ){
+          if( d_pos_memberships_data[x][k]==r ){
+            return;
+          }
+        }else{
+          break;
+        }
+      }
+    }
+    d_pos_memberships[x] = index + 1;
+    if( index<(int)d_pos_memberships_data[x].size() ){
+      d_pos_memberships_data[x][index] = r;
+    }else{
+      d_pos_memberships_data[x].push_back( r );
+    }
+  } else if(!options::stringIgnNegMembership()) {
+    /*if(options::stringEIT() && d_regexp_opr.checkConstRegExp(r)) {
+      int rt;
+      Node r2 = d_regexp_opr.complement(r, rt);
+      Node a = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, x, r2);
+    }*/
+    int index = 0;
+    NodeIntMap::const_iterator it = d_neg_memberships.find( x );
+    if( it!=d_nf_pairs.end() ){
+      index = (*it).second;
+      for( int k=0; k<index; k++ ){
+        if( k<(int)d_neg_memberships_data[x].size() ){
+          if( d_neg_memberships_data[x][k]==r ){
+            return;
+          }
+        }else{
+          break;
+        }
+      }
+    }
+    d_neg_memberships[x] = index + 1;
+    if( index<(int)d_neg_memberships_data[x].size() ){
+      d_neg_memberships_data[x][index] = r;
+    }else{
+      d_neg_memberships_data[x].push_back( r );
+    }
+  }
+  // old
+  if(polarity || !options::stringIgnNegMembership()) {
+    d_regexp_memberships.push_back( assertion );
+  }
+}
+
+Node TheoryStrings::getNormalString( Node x, std::vector< Node >& nf_exp ){
+  if( !x.isConst() ){
+    Node xr = getRepresentative( x );
+    if( d_normal_forms.find( xr ) != d_normal_forms.end() ){
+      Node ret = mkConcat( d_normal_forms[xr] );
+      nf_exp.insert( nf_exp.end(), d_normal_forms_exp[xr].begin(), d_normal_forms_exp[xr].end() );
+      addToExplanation( x, d_normal_forms_base[xr], nf_exp );
+      Trace("strings-debug") << "Term: " << x << " has a normal form " << ret << std::endl;
+      return ret;
+    } else {
+      if(x.getKind() == kind::STRING_CONCAT) {
+        std::vector< Node > vec_nodes;
+        for(unsigned i=0; i<x.getNumChildren(); i++) {
+          Node nc = getNormalString( x[i], nf_exp );
+          vec_nodes.push_back( nc );
+        }
+        return mkConcat( vec_nodes );
+      }
+    }
+  }
+  return x;
+}
+
+Node TheoryStrings::getNormalSymRegExp(Node r, std::vector<Node> &nf_exp) {
+  Node ret = r;
+  switch( r.getKind() ) {
+    case kind::REGEXP_EMPTY:
+    case kind::REGEXP_SIGMA:
+      break;
+    case kind::STRING_TO_REGEXP: {
+      if(!r[0].isConst()) {
+        Node tmp = getNormalString( r[0], nf_exp );
+        if(tmp != r[0]) {
+          ret = NodeManager::currentNM()->mkNode(kind::STRING_TO_REGEXP, tmp);
+        }
+      }
+      break;
+    }
+    case kind::REGEXP_CONCAT: {
+      std::vector< Node > vec_nodes;
+      for(unsigned i=0; i<r.getNumChildren(); ++i) {
+        vec_nodes.push_back( getNormalSymRegExp(r[i], nf_exp) );
+      }
+      ret = mkConcat(vec_nodes);
+      break;
+    }
+    case kind::REGEXP_UNION: {
+      std::vector< Node > vec_nodes;
+      for(unsigned i=0; i<r.getNumChildren(); ++i) {
+        vec_nodes.push_back( getNormalSymRegExp(r[i], nf_exp) );
+      }
+      ret = Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::REGEXP_UNION, vec_nodes) );
+      break;
+    }
+    case kind::REGEXP_INTER: {
+      std::vector< Node > vec_nodes;
+      for(unsigned i=0; i<r.getNumChildren(); ++i) {
+        vec_nodes.push_back( getNormalSymRegExp(r[i], nf_exp) );
+      }
+      ret = Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::REGEXP_INTER, vec_nodes) );
+      break;
+    }
+    case kind::REGEXP_STAR: {
+      ret = getNormalSymRegExp( r[0], nf_exp );
+      ret = Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::REGEXP_STAR, ret) );
+      break;
+    }
+    //case kind::REGEXP_PLUS:
+    //case kind::REGEXP_OPT:
+    //case kind::REGEXP_RANGE:
+    default: {
+      Trace("strings-error") << "Unsupported term: " << r << " in normalization SymRegExp." << std::endl;
+      Assert( false );
+      //return Node::null();
+    }
+  }
+  return ret;
+}
+
+}/* CVC4::theory::strings namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/strings/theory_strings.h b/src/theory/strings/theory_strings.h
new file mode 100644
index 0000000..0294c38
--- /dev/null
+++ b/src/theory/strings/theory_strings.h
@@ -0,0 +1,526 @@
+/*********************                                                        */
+/*! \file theory_strings.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tianyi Liang, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Theory of strings
+ **
+ ** Theory of strings.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__STRINGS__THEORY_STRINGS_H
+#define __CVC4__THEORY__STRINGS__THEORY_STRINGS_H
+
+#include "theory/theory.h"
+#include "theory/uf/equality_engine.h"
+#include "theory/strings/theory_strings_preprocess.h"
+#include "theory/strings/regexp_operation.h"
+
+#include "context/cdchunk_list.h"
+#include "context/cdhashset.h"
+#include "expr/attribute.h"
+
+#include <climits>
+#include <deque>
+
+namespace CVC4 {
+namespace theory {
+
+namespace quantifiers{
+  class TermArgTrie;
+}
+
+namespace strings {
+
+/**
+ * Decision procedure for strings.
+ *
+ */
+
+struct StringsProxyVarAttributeId {};
+typedef expr::Attribute< StringsProxyVarAttributeId, bool > StringsProxyVarAttribute;
+
+class TheoryStrings : public Theory {
+  typedef context::CDChunkList<Node> NodeList;
+  typedef context::CDHashMap<Node, bool, NodeHashFunction> NodeBoolMap;
+  typedef context::CDHashMap<Node, int, NodeHashFunction> NodeIntMap;
+  typedef context::CDHashMap<Node, Node, NodeHashFunction> NodeNodeMap;
+  typedef context::CDHashSet<Node, NodeHashFunction> NodeSet;
+
+public:
+  TheoryStrings(context::Context* c, context::UserContext* u,
+                OutputChannel& out, Valuation valuation,
+                const LogicInfo& logicInfo);
+  ~TheoryStrings();
+
+  void setMasterEqualityEngine(eq::EqualityEngine* eq);
+
+  std::string identify() const { return std::string("TheoryStrings"); }
+
+public:
+  void propagate(Effort e);
+  bool propagate(TNode literal);
+  void explain( TNode literal, std::vector<TNode>& assumptions );
+  Node explain( TNode literal );
+  eq::EqualityEngine * getEqualityEngine() { return &d_equalityEngine; }
+  bool getCurrentSubstitution( int effort, std::vector< Node >& vars, std::vector< Node >& subs, std::map< Node, std::vector< Node > >& exp );
+  int getReduction( int effort, Node n, Node& nr );
+ 
+  // NotifyClass for equality engine
+  class NotifyClass : public eq::EqualityEngineNotify {
+    TheoryStrings& d_str;
+  public:
+    NotifyClass(TheoryStrings& t_str): d_str(t_str) {}
+    bool eqNotifyTriggerEquality(TNode equality, bool value) {
+      Debug("strings") << "NotifyClass::eqNotifyTriggerEquality(" << equality << ", " << (value ? "true" : "false" )<< ")" << std::endl;
+      if (value) {
+        return d_str.propagate(equality);
+      } else {
+        // We use only literal triggers so taking not is safe
+        return d_str.propagate(equality.notNode());
+      }
+    }
+    bool eqNotifyTriggerPredicate(TNode predicate, bool value) {
+      Debug("strings") << "NotifyClass::eqNotifyTriggerPredicate(" << predicate << ", " << (value ? "true" : "false") << ")" << std::endl;
+      if (value) {
+        return d_str.propagate(predicate);
+      } else {
+         return d_str.propagate(predicate.notNode());
+      }
+    }
+    bool eqNotifyTriggerTermEquality(TheoryId tag, TNode t1, TNode t2, bool value) {
+      Debug("strings") << "NotifyClass::eqNotifyTriggerTermMerge(" << tag << ", " << t1 << ", " << t2 << ")" << std::endl;
+      if (value) {
+      return d_str.propagate(t1.eqNode(t2));
+      } else {
+      return d_str.propagate(t1.eqNode(t2).notNode());
+      }
+    }
+    void eqNotifyConstantTermMerge(TNode t1, TNode t2) {
+      Debug("strings") << "NotifyClass::eqNotifyConstantTermMerge(" << t1 << ", " << t2 << ")" << std::endl;
+      d_str.conflict(t1, t2);
+    }
+    void eqNotifyNewClass(TNode t) {
+      Debug("strings") << "NotifyClass::eqNotifyNewClass(" << t << std::endl;
+      d_str.eqNotifyNewClass(t);
+    }
+    void eqNotifyPreMerge(TNode t1, TNode t2) {
+      Debug("strings") << "NotifyClass::eqNotifyPreMerge(" << t1 << ", " << t2 << std::endl;
+      d_str.eqNotifyPreMerge(t1, t2);
+    }
+    void eqNotifyPostMerge(TNode t1, TNode t2) {
+      Debug("strings") << "NotifyClass::eqNotifyPostMerge(" << t1 << ", " << t2 << std::endl;
+      d_str.eqNotifyPostMerge(t1, t2);
+    }
+    void eqNotifyDisequal(TNode t1, TNode t2, TNode reason) {
+      Debug("strings") << "NotifyClass::eqNotifyDisequal(" << t1 << ", " << t2 << ", " << reason << std::endl;
+      d_str.eqNotifyDisequal(t1, t2, reason);
+    }
+  };/* class TheoryStrings::NotifyClass */
+
+private:
+  // Constants
+  Node d_emptyString;
+  Node d_emptyRegexp;
+  Node d_true;
+  Node d_false;
+  Node d_zero;
+  Node d_one;
+  CVC4::Rational RMAXINT;
+  unsigned d_card_size;
+  // Helper functions
+  Node getRepresentative( Node t );
+  bool hasTerm( Node a );
+  bool areEqual( Node a, Node b );
+  bool areDisequal( Node a, Node b );
+  // t is representative, te = t, add lt = te to explanation exp
+  Node getLengthExp( Node t, std::vector< Node >& exp, Node te );
+  Node getLength( Node t, std::vector< Node >& exp );
+
+private:
+  /** The notify class */
+  NotifyClass d_notify;
+  /** Equaltity engine */
+  eq::EqualityEngine d_equalityEngine;
+  /** Are we in conflict */
+  context::CDO<bool> d_conflict;
+  //list of pairs of nodes to merge
+  std::map< Node, Node > d_pending_exp;
+  std::vector< Node > d_pending;
+  std::vector< Node > d_lemma_cache;
+  std::map< Node, bool > d_pending_req_phase;
+  /** inferences: maintained to ensure ref count for internally introduced nodes */
+  NodeList d_infer;
+  NodeList d_infer_exp;
+  /** normal forms */
+  std::map< Node, Node > d_normal_forms_base;
+  std::map< Node, std::vector< Node > > d_normal_forms;
+  std::map< Node, std::vector< Node > > d_normal_forms_exp;
+  std::map< Node, std::map< Node, std::map< bool, int > > > d_normal_forms_exp_depend;
+  //map of pairs of terms that have the same normal form
+  NodeIntMap d_nf_pairs;
+  std::map< Node, std::vector< Node > > d_nf_pairs_data;
+  void addNormalFormPair( Node n1, Node n2 );
+  bool isNormalFormPair( Node n1, Node n2 );
+  bool isNormalFormPair2( Node n1, Node n2 );
+  // loop ant
+  NodeSet d_loop_antec;
+  // preReg cache
+  NodeSet d_pregistered_terms_cache;
+  NodeSet d_registered_terms_cache;
+  NodeSet d_length_lemma_terms_cache;
+  NodeSet d_skolem_ne_reg_cache;
+  // preprocess cache
+  StringsPreprocess d_preproc;
+  NodeBoolMap d_preproc_cache;
+  // extended functions inferences cache
+  NodeSet d_extf_infer_cache;
+  NodeSet d_extf_infer_cache_u;
+  std::vector< Node > d_empty_vec;
+  //
+  NodeList d_ee_disequalities;
+private:
+  NodeSet d_congruent;
+  std::map< Node, Node > d_eqc_to_const;
+  std::map< Node, Node > d_eqc_to_const_base;
+  std::map< Node, Node > d_eqc_to_const_exp;
+  Node getConstantEqc( Node eqc );
+  
+  std::map< Node, Node > d_eqc_to_len_term;
+  std::vector< Node > d_strings_eqc;
+  Node d_emptyString_r;
+  class TermIndex {
+  public:
+    Node d_data;
+    std::map< TNode, TermIndex > d_children;
+    Node add( TNode n, unsigned index, TheoryStrings* t, Node er, std::vector< Node >& c );
+    void clear(){ d_children.clear(); }
+  };
+  std::map< Kind, TermIndex > d_term_index;
+  //list of non-congruent concat terms in each eqc
+  std::map< Node, std::vector< Node > > d_eqc;
+  std::map< Node, std::vector< Node > > d_flat_form;
+  std::map< Node, std::vector< int > > d_flat_form_index;
+
+  void debugPrintFlatForms( const char * tc );
+  void debugPrintNormalForms( const char * tc );
+  /////////////////////////////////////////////////////////////////////////////
+  // MODEL GENERATION
+  /////////////////////////////////////////////////////////////////////////////
+public:
+  void collectModelInfo(TheoryModel* m, bool fullModel);
+
+  /////////////////////////////////////////////////////////////////////////////
+  // NOTIFICATIONS
+  /////////////////////////////////////////////////////////////////////////////
+public:
+  void presolve();
+  void shutdown() { }
+
+  /////////////////////////////////////////////////////////////////////////////
+  // MAIN SOLVER
+  /////////////////////////////////////////////////////////////////////////////
+private:
+  void addSharedTerm(TNode n);
+  EqualityStatus getEqualityStatus(TNode a, TNode b);
+
+private:
+  class EqcInfo {
+  public:
+    EqcInfo( context::Context* c );
+    ~EqcInfo(){}
+    //constant in this eqc
+    context::CDO< Node > d_length_term;
+    context::CDO< unsigned > d_cardinality_lem_k;
+    // 1 = added length lemma
+    context::CDO< Node > d_normalized_length;
+  };
+  /** map from representatives to information necessary for equivalence classes */
+  std::map< Node, EqcInfo* > d_eqc_info;
+  EqcInfo * getOrMakeEqcInfo( Node eqc, bool doMake = true );
+  //maintain which concat terms have the length lemma instantiated
+  NodeNodeMap d_proxy_var;
+  NodeNodeMap d_proxy_var_to_length;
+  /** All the function terms that the theory has seen */
+  context::CDList<TNode> d_functionsTerms;
+private:
+  //any non-reduced extended functions exist
+  context::CDO< bool > d_has_extf;
+  // static information about extf
+  class ExtfInfo {
+  public:
+    //all variables in this term
+    std::vector< Node > d_vars;
+  };
+  // non-static information about extf
+  class ExtfInfoTmp {
+  public:
+    void init(){
+      d_pol = 0;
+      d_model_active = true;
+    }
+    // list of terms that something (does not) contain and their explanation
+    std::map< bool, std::vector< Node > > d_ctn;
+    std::map< bool, std::vector< Node > > d_ctn_from;
+    //polarity
+    int d_pol;
+    //explanation
+    std::vector< Node > d_exp;
+    //false if it is reduced in the model
+    bool d_model_active;
+  };
+  std::map< Node, ExtfInfoTmp > d_extf_info_tmp;
+private:
+  class InferInfo {
+  public:
+    unsigned d_i;
+    unsigned d_j;
+    bool d_rev;
+    std::vector< Node > d_ant;
+    std::vector< Node > d_antn;
+    std::map< int, std::vector< Node > > d_new_skolem;
+    Node d_conc;
+    unsigned d_id;
+    std::map< Node, bool > d_pending_phase;
+    unsigned d_index;
+    const char * getId() { 
+      switch( d_id ){
+      case 1:return "S-Split(CST-P)-prop";break;
+      case 2:return "S-Split(VAR)-prop";break;
+      case 3:return "Len-Split(Len)";break;
+      case 4:return "Len-Split(Emp)";break;
+      case 5:return "S-Split(CST-P)-binary";break;
+      case 6:return "S-Split(CST-P)";break;
+      case 7:return "S-Split(VAR)";break;
+      case 8:return "F-Loop";break;
+      default:break;
+      }
+      return "";
+    }
+    bool sendAsLemma();
+  };
+  //initial check
+  void checkInit();
+  void checkConstantEquivalenceClasses( TermIndex* ti, std::vector< Node >& vecc );
+  //extended functions evaluation check
+  void checkExtfEval( int effort = 0 );
+  void checkExtfInference( Node n, Node nr, ExtfInfoTmp& in, int effort );
+  void collectVars( Node n, std::vector< Node >& vars, std::map< Node, bool >& visited );
+  Node getSymbolicDefinition( Node n, std::vector< Node >& exp );
+  //check extf reduction
+  void checkExtfReductions( int effort );
+  //flat forms check
+  void checkFlatForms();
+  Node checkCycles( Node eqc, std::vector< Node >& curr, std::vector< Node >& exp );
+  //normal forms check
+  void checkNormalForms();
+  void normalizeEquivalenceClass( Node n );
+  void getNormalForms( Node &eqc, std::vector< std::vector< Node > > &normal_forms, std::vector< Node > &normal_form_src,
+                       std::vector< std::vector< Node > > &normal_forms_exp, std::vector< std::map< Node, std::map< bool, int > > >& normal_forms_exp_depend );
+  bool detectLoop( std::vector< std::vector< Node > > &normal_forms, int i, int j, int index, int &loop_in_i, int &loop_in_j, unsigned rproc );
+  bool processLoop( std::vector< std::vector< Node > > &normal_forms, std::vector< Node > &normal_form_src,
+                    int i, int j, int loop_n_index, int other_n_index,int loop_index, int index, InferInfo& info );
+  void processNEqc( std::vector< std::vector< Node > > &normal_forms, std::vector< Node > &normal_form_src,
+                    std::vector< std::vector< Node > > &normal_forms_exp, std::vector< std::map< Node, std::map< bool, int > > >& normal_forms_exp_depend );
+  void processReverseNEq( std::vector< std::vector< Node > > &normal_forms, std::vector< Node > &normal_form_src, 
+                          std::vector< std::vector< Node > > &normal_forms_exp, std::vector< std::map< Node, std::map< bool, int > > >& normal_forms_exp_depend, 
+                          unsigned i, unsigned j, unsigned& index, unsigned rproc, std::vector< InferInfo >& pinfer );
+  void processSimpleNEq( std::vector< std::vector< Node > > &normal_forms, std::vector< Node > &normal_form_src, 
+                         std::vector< std::vector< Node > > &normal_forms_exp, std::vector< std::map< Node, std::map< bool, int > > >& normal_forms_exp_depend, 
+                         unsigned i, unsigned j, unsigned& index, bool isRev, unsigned rproc, std::vector< InferInfo >& pinfer );
+  void processDeq( Node n1, Node n2 );
+  int processReverseDeq( std::vector< Node >& nfi, std::vector< Node >& nfj, Node ni, Node nj );
+  int processSimpleDeq( std::vector< Node >& nfi, std::vector< Node >& nfj, Node ni, Node nj, unsigned& index, bool isRev );
+  void checkDeqNF();
+  void getExplanationVectorForPrefix( std::vector< std::vector< Node > > &normal_forms_exp, std::vector< std::map< Node, std::map< bool, int > > >& normal_forms_exp_depend,
+                                      unsigned i, int index, bool isRev, std::vector< Node >& curr_exp );
+  void getExplanationVectorForPrefixEq( std::vector< std::vector< Node > > &normal_forms, std::vector< Node > &normal_form_src,
+                                        std::vector< std::vector< Node > > &normal_forms_exp, std::vector< std::map< Node, std::map< bool, int > > >& normal_forms_exp_depend,
+                                        unsigned i, unsigned j, int index_i, int index_j, bool isRev, std::vector< Node >& curr_exp );
+
+  Node collectConstantStringAt( std::vector< Node >& vec, int& index, bool isRev );
+
+  //check membership constraints
+  Node mkRegExpAntec(Node atom, Node ant);
+  Node normalizeRegexp(Node r);
+  bool normalizePosMemberships( std::map< Node, std::vector< Node > > &memb_with_exps );
+  bool applyRConsume( CVC4::String &s, Node &r );
+  Node applyRSplit( Node s1, Node s2, Node r );
+  bool applyRLen( std::map< Node, std::vector< Node > > &XinR_with_exps );
+  bool checkMembershipsWithoutLength( std::map< Node, std::vector< Node > > &memb_with_exps, 
+                                      std::map< Node, std::vector< Node > > &XinR_with_exps);
+  void checkMemberships();
+  bool checkMemberships2();
+  bool checkPDerivative( Node x, Node r, Node atom, bool &addedLemma, std::vector< Node > &nf_exp);
+  //check contains
+  void checkPosContains( std::vector< Node >& posContains );
+  void checkNegContains( std::vector< Node >& negContains );
+  //lengths normalize check
+  void checkLengthsEqc();
+  //cardinality check
+  void checkCardinality();
+
+private:
+  void addCarePairs( quantifiers::TermArgTrie * t1, quantifiers::TermArgTrie * t2, unsigned arity, unsigned depth );
+public:
+  /** preregister term */
+  void preRegisterTerm(TNode n);
+  /** Expand definition */
+  Node expandDefinition(LogicRequest &logicRequest, Node n);
+  /** Check at effort e */
+  void check(Effort e);
+  /** needs check last effort */
+  bool needsCheckLastEffort();
+  /** Conflict when merging two constants */
+  void conflict(TNode a, TNode b);
+  /** called when a new equivalence class is created */
+  void eqNotifyNewClass(TNode t);
+  /** called when two equivalence classes will merge */
+  void eqNotifyPreMerge(TNode t1, TNode t2);
+  /** called when two equivalence classes have merged */
+  void eqNotifyPostMerge(TNode t1, TNode t2);
+  /** called when two equivalence classes are made disequal */
+  void eqNotifyDisequal(TNode t1, TNode t2, TNode reason);
+  /** get preprocess */
+  StringsPreprocess * getPreprocess() { return &d_preproc; }
+protected:
+  /** compute care graph */
+  void computeCareGraph();
+
+  //do pending merges
+  void assertPendingFact(Node atom, bool polarity, Node exp);
+  void doPendingFacts();
+  void doPendingLemmas();
+  bool hasProcessed();
+  void addToExplanation( Node a, Node b, std::vector< Node >& exp );
+  void addToExplanation( Node lit, std::vector< Node >& exp );
+
+  //register term
+  void registerTerm( Node n, int effort );
+  //send lemma
+  void sendInference( std::vector< Node >& exp, std::vector< Node >& exp_n, Node eq, const char * c, bool asLemma = false );
+  void sendInference( std::vector< Node >& exp, Node eq, const char * c, bool asLemma = false );
+  void sendLemma( Node ant, Node conc, const char * c );
+  void sendInfer( Node eq_exp, Node eq, const char * c );
+  void sendSplit( Node a, Node b, const char * c, bool preq = true );
+  void sendLengthLemma( Node n );
+  /** mkConcat **/
+  inline Node mkConcat( Node n1, Node n2 );
+  inline Node mkConcat( Node n1, Node n2, Node n3 );
+  inline Node mkConcat( const std::vector< Node >& c );
+  inline Node mkLength( Node n );
+  //mkSkolem
+  enum {
+    sk_id_c_spt,
+    sk_id_vc_spt,
+    sk_id_vc_bin_spt,
+    sk_id_v_spt,    
+    sk_id_c_spt_rev,
+    sk_id_vc_spt_rev,
+    sk_id_vc_bin_spt_rev,
+    sk_id_v_spt_rev,
+    sk_id_ctn_pre,
+    sk_id_ctn_post,
+    sk_id_dc_spt,
+    sk_id_dc_spt_rem,
+    sk_id_deq_x,
+    sk_id_deq_y,
+    sk_id_deq_z,
+  };
+  std::map< Node, std::map< Node, std::map< int, Node > > > d_skolem_cache;
+  Node mkSkolemCached( Node a, Node b, int id, const char * c, int isLenSplit = 0 );
+  inline Node mkSkolemS(const char * c, int isLenSplit = 0);
+  void registerNonEmptySkolem( Node sk );
+  //inline Node mkSkolemI(const char * c);
+  /** mkExplain **/
+  Node mkExplain( std::vector< Node >& a );
+  Node mkExplain( std::vector< Node >& a, std::vector< Node >& an );
+  /** mkAnd **/
+  Node mkAnd( std::vector< Node >& a );
+  /** get concat vector */
+  void getConcatVec( Node n, std::vector< Node >& c );
+
+  //get equivalence classes
+  void getEquivalenceClasses( std::vector< Node >& eqcs );
+
+  //separate into collections with equal length
+  void separateByLength( std::vector< Node >& n, std::vector< std::vector< Node > >& col, std::vector< Node >& lts );
+  void printConcat( std::vector< Node >& n, const char * c );
+
+  void inferSubstitutionProxyVars( Node n, std::vector< Node >& vars, std::vector< Node >& subs, std::vector< Node >& unproc );
+
+  // Symbolic Regular Expression
+private:
+  // regular expression memberships
+  NodeList d_regexp_memberships;
+  NodeSet d_regexp_ucached;
+  NodeSet d_regexp_ccached;
+  // stored assertions
+  NodeIntMap d_pos_memberships;
+  std::map< Node, std::vector< Node > > d_pos_memberships_data;
+  NodeIntMap d_neg_memberships;
+  std::map< Node, std::vector< Node > > d_neg_memberships_data;
+  unsigned getNumMemberships( Node n, bool isPos );
+  Node getMembership( Node n, bool isPos, unsigned i );
+  // semi normal forms for symbolic expression
+  std::map< Node, Node > d_nf_regexps;
+  std::map< Node, std::vector< Node > > d_nf_regexps_exp;
+  // intersection
+  NodeNodeMap d_inter_cache;
+  NodeIntMap d_inter_index;
+  // processed memberships
+  NodeSet d_processed_memberships;
+  // antecedant for why regexp membership must be true
+  NodeNodeMap d_regexp_ant;
+  // membership length
+  //std::map< Node, bool > d_membership_length;
+  // regular expression operations
+  RegExpOpr d_regexp_opr;
+
+  CVC4::String getHeadConst( Node x );
+  bool deriveRegExp( Node x, Node r, Node ant );
+  void addMembership(Node assertion);
+  Node getNormalString(Node x, std::vector<Node> &nf_exp);
+  Node getNormalSymRegExp(Node r, std::vector<Node> &nf_exp);
+
+
+  // Finite Model Finding
+private:
+  NodeSet d_input_vars;
+  context::CDO< Node > d_input_var_lsum;
+  context::CDHashMap< int, Node > d_cardinality_lits;
+  context::CDO< int > d_curr_cardinality;
+public:
+  //for finite model finding
+  Node getNextDecisionRequest( unsigned& priority );
+  //ppRewrite
+  Node ppRewrite(TNode atom);
+public:
+/** statistics class */
+  class Statistics {
+  public:
+    IntStat d_splits;
+    IntStat d_eq_splits;
+    IntStat d_deq_splits;
+    IntStat d_loop_lemmas;
+    IntStat d_new_skolems;
+    Statistics();
+    ~Statistics();
+  };/* class TheoryStrings::Statistics */
+  Statistics d_statistics;
+  
+};/* class TheoryStrings */
+
+}/* CVC4::theory::strings namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__STRINGS__THEORY_STRINGS_H */
diff --git a/src/theory/strings/theory_strings_preprocess.cpp b/src/theory/strings/theory_strings_preprocess.cpp
new file mode 100644
index 0000000..d8d8e39
--- /dev/null
+++ b/src/theory/strings/theory_strings_preprocess.cpp
@@ -0,0 +1,506 @@
+/*********************                                                        */
+/*! \file theory_strings_preprocess.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tianyi Liang, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Strings Preprocess
+ **
+ ** Strings Preprocess.
+ **/
+
+#include "theory/strings/theory_strings_preprocess.h"
+
+#include <stdint.h>
+
+#include "expr/kind.h"
+#include "options/strings_options.h"
+#include "proof/proof_manager.h"
+#include "smt/logic_exception.h"
+
+
+namespace CVC4 {
+namespace theory {
+namespace strings {
+
+StringsPreprocess::StringsPreprocess( context::UserContext* u ){
+  //Constants
+  d_zero = NodeManager::currentNM()->mkConst( ::CVC4::Rational(0) );
+  d_one = NodeManager::currentNM()->mkConst( ::CVC4::Rational(1) );
+}
+
+StringsPreprocess::~StringsPreprocess(){
+
+}
+
+Node StringsPreprocess::getUfForNode( Kind k, Node n, unsigned id ) {
+  std::map< unsigned, Node >::iterator it = d_uf[k].find( id );
+  if( it==d_uf[k].end() ){
+    std::vector< TypeNode > types;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      types.push_back( n[i].getType() );
+    }
+    TypeNode typ = NodeManager::currentNM()->mkFunctionType( types, n.getType() );
+    Node f = NodeManager::currentNM()->mkSkolem( "sop", typ, "op created for string op" );
+    d_uf[k][id] = f;
+    return f;
+  }else{
+    return it->second;
+  }
+}
+
+//pro: congruence possible, con: introduces UF/requires theory combination
+//  currently hurts performance
+//TODO: for all skolems below
+Node StringsPreprocess::getUfAppForNode( Kind k, Node n, unsigned id ) {
+  std::vector< Node > children;
+  children.push_back( getUfForNode( k, n, id ) );
+  for( unsigned i=0; i<n.getNumChildren(); i++ ){
+    children.push_back( n[i] );
+  }
+  return NodeManager::currentNM()->mkNode( kind::APPLY_UF, children );
+}
+
+//returns an n such that t can be replaced by n, under the assumption of lemmas in new_nodes
+
+Node StringsPreprocess::simplify( Node t, std::vector< Node > &new_nodes ) {
+  unsigned prev_new_nodes = new_nodes.size();
+  Trace("strings-preprocess-debug") << "StringsPreprocess::simplify: " << t << std::endl;
+  Node retNode = t;
+
+  if( t.getKind() == kind::STRING_SUBSTR ) {
+    Node skt;
+    if( options::stringUfReduct() ){
+      skt = getUfAppForNode( kind::STRING_SUBSTR, t );
+    }else{
+      skt = NodeManager::currentNM()->mkSkolem( "sst", NodeManager::currentNM()->stringType(), "created for substr" );
+    }
+    Node t12 = NodeManager::currentNM()->mkNode( kind::PLUS, t[1], t[2] );
+    Node lt0 = NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, t[0] );
+    //start point is greater than or equal zero
+    Node c1 = NodeManager::currentNM()->mkNode( kind::GEQ, t[1], d_zero );
+    //start point is less than end of string
+    Node c2 = NodeManager::currentNM()->mkNode( kind::GT, lt0, t[1] );
+    //length is positive
+    Node c3 = NodeManager::currentNM()->mkNode( kind::GT, t[2], d_zero );
+    Node cond = NodeManager::currentNM()->mkNode( kind::AND, c1, c2, c3 );
+  
+    Node sk1 = NodeManager::currentNM()->mkSkolem( "ss1", NodeManager::currentNM()->stringType(), "created for substr" );
+    Node sk2 = NodeManager::currentNM()->mkSkolem( "ss2", NodeManager::currentNM()->stringType(), "created for substr" );
+    Node b11 = t[0].eqNode( NodeManager::currentNM()->mkNode( kind::STRING_CONCAT, sk1, skt, sk2 ) );
+    //length of first skolem is second argument
+    Node b12 = NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, sk1 ).eqNode( t[1] );
+    //length of second skolem is abs difference between end point and end of string
+    Node b13 = NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, sk2 ).eqNode(
+                 NodeManager::currentNM()->mkNode( kind::ITE, NodeManager::currentNM()->mkNode( kind::GEQ, lt0, t12 ),
+                    NodeManager::currentNM()->mkNode( kind::MINUS, lt0, t12 ), d_zero ) );
+
+    Node b1 = NodeManager::currentNM()->mkNode( kind::AND, b11, b12, b13 );
+    Node b2 = skt.eqNode( NodeManager::currentNM()->mkConst( ::CVC4::String("") ) );
+    Node lemma = NodeManager::currentNM()->mkNode( kind::ITE, cond, b1, b2 );
+    new_nodes.push_back( lemma );
+    retNode = skt;
+  } else if( t.getKind() == kind::STRING_STRIDOF ) {
+    Node sk2 = NodeManager::currentNM()->mkSkolem( "io2", NodeManager::currentNM()->stringType(), "created for indexof" );
+    Node sk3 = NodeManager::currentNM()->mkSkolem( "io3", NodeManager::currentNM()->stringType(), "created for indexof" );
+    Node sk4 = NodeManager::currentNM()->mkSkolem( "io4", NodeManager::currentNM()->stringType(), "created for indexof" );
+    Node skk;
+    if( options::stringUfReduct() ){
+      skk = getUfAppForNode( kind::STRING_STRIDOF, t );
+    }else{
+      skk = NodeManager::currentNM()->mkSkolem( "iok", NodeManager::currentNM()->integerType(), "created for indexof" );
+    }
+    Node st = NodeManager::currentNM()->mkNode( kind::STRING_SUBSTR, t[0], t[2], NodeManager::currentNM()->mkNode( kind::MINUS, NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, t[0] ), t[2] ) );
+    //TODO: simplify this (only applies when idof != -1)
+    Node eq = st.eqNode( NodeManager::currentNM()->mkNode( kind::STRING_CONCAT, sk2, sk3, sk4 ) );
+    new_nodes.push_back( eq );
+    
+    //learn range of idof?
+    Node negone = NodeManager::currentNM()->mkConst( ::CVC4::Rational(-1) );
+    Node krange = NodeManager::currentNM()->mkNode( kind::GEQ, skk, negone );
+    new_nodes.push_back( krange );
+    krange = NodeManager::currentNM()->mkNode( kind::GT, NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, t[0] ), skk);
+    new_nodes.push_back( krange );
+
+    // s2 = ""
+    Node c1 = t[1].eqNode( NodeManager::currentNM()->mkConst( ::CVC4::String("") ) );
+    //~contain(t234, s2)
+    Node c3 = NodeManager::currentNM()->mkNode( kind::STRING_STRCTN, st, t[1] ).negate();
+    //left
+    Node left = NodeManager::currentNM()->mkNode( kind::OR, c1, c3 );
+    //t3 = s2
+    Node c4 = t[1].eqNode( sk3 );
+    //~contain(t2, s2)
+    Node c5 = NodeManager::currentNM()->mkNode( kind::STRING_STRCTN,
+                NodeManager::currentNM()->mkNode(kind::STRING_CONCAT, sk2,
+                  NodeManager::currentNM()->mkNode(kind::STRING_SUBSTR, t[1], d_zero,
+                    NodeManager::currentNM()->mkNode(kind::MINUS,
+                      NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, t[1]),
+                      NodeManager::currentNM()->mkConst( ::CVC4::Rational(1) )))),
+                t[1] ).negate();
+    //k=str.len(s2)
+    Node c6 = skk.eqNode( NodeManager::currentNM()->mkNode( kind::PLUS, t[2],
+                            NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, sk2 )) );
+    //right
+    Node right = NodeManager::currentNM()->mkNode( kind::AND, c4, c5, c6, c1.negate() );
+    Node cond = skk.eqNode( negone );
+    Node rr = NodeManager::currentNM()->mkNode( kind::ITE, cond, left, right );
+    new_nodes.push_back( rr );
+    retNode = skk;
+  } else if( t.getKind() == kind::STRING_ITOS || t.getKind() == kind::STRING_U16TOS || t.getKind() == kind::STRING_U32TOS ) {
+    //Node num = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::ITE,
+    //        NodeManager::currentNM()->mkNode(kind::GEQ, t[0], d_zero),
+    //        t[0], NodeManager::currentNM()->mkNode(kind::UMINUS, t[0])));
+    Node num = t[0];
+    Node pret;
+    if( options::stringUfReduct() ){
+      pret = NodeManager::currentNM()->mkNode(kind::STRING_ITOS, num);
+    }else{
+      pret = NodeManager::currentNM()->mkSkolem( "itost", NodeManager::currentNM()->stringType(), "created for itos" );
+    }
+    Node lenp = NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, pret);
+
+    Node nonneg = NodeManager::currentNM()->mkNode(kind::GEQ, t[0], d_zero);
+    if(t.getKind()==kind::STRING_U16TOS) {
+      nonneg = NodeManager::currentNM()->mkNode(kind::AND, nonneg, NodeManager::currentNM()->mkNode(kind::GEQ, NodeManager::currentNM()->mkConst( ::CVC4::Rational(UINT16_MAX) ), t[0]));
+      Node lencond = NodeManager::currentNM()->mkNode(kind::GEQ, NodeManager::currentNM()->mkConst( ::CVC4::Rational(5) ), lenp);
+      new_nodes.push_back(lencond);
+    } else if(t.getKind()==kind::STRING_U32TOS) {
+      nonneg = NodeManager::currentNM()->mkNode(kind::AND, nonneg, NodeManager::currentNM()->mkNode(kind::GEQ, NodeManager::currentNM()->mkConst( ::CVC4::Rational(UINT32_MAX) ), t[0]));
+      Node lencond = NodeManager::currentNM()->mkNode(kind::GEQ, NodeManager::currentNM()->mkConst( ::CVC4::Rational(10) ), lenp);
+      new_nodes.push_back(lencond);
+    }
+
+    Node lem = NodeManager::currentNM()->mkNode(kind::EQUAL, nonneg.negate(),
+      pret.eqNode(NodeManager::currentNM()->mkConst( ::CVC4::String("") ))//lenp.eqNode(d_zero)
+      );
+    new_nodes.push_back(lem);
+
+    //non-neg
+    Node b1 = NodeManager::currentNM()->mkBoundVar(NodeManager::currentNM()->integerType());
+    Node b1v = NodeManager::currentNM()->mkNode(kind::BOUND_VAR_LIST, b1);
+    Node g1 = NodeManager::currentNM()->mkNode( kind::AND, NodeManager::currentNM()->mkNode( kind::GEQ, b1, d_zero ),
+                                                           NodeManager::currentNM()->mkNode( kind::GT, lenp, b1 ) );
+    Node one = NodeManager::currentNM()->mkConst( ::CVC4::Rational(1) );
+    Node nine = NodeManager::currentNM()->mkConst( ::CVC4::Rational(9) );
+    Node ten = NodeManager::currentNM()->mkConst( ::CVC4::Rational(10) );
+
+    std::vector< TypeNode > argTypes;
+    argTypes.push_back(NodeManager::currentNM()->integerType());
+    Node ufP = NodeManager::currentNM()->mkSkolem("ufP",
+              NodeManager::currentNM()->mkFunctionType(
+                argTypes, NodeManager::currentNM()->integerType()),
+              "uf type conv P");
+    Node ufM = NodeManager::currentNM()->mkSkolem("ufM",
+              NodeManager::currentNM()->mkFunctionType(
+                argTypes, NodeManager::currentNM()->integerType()),
+              "uf type conv M");
+
+    lem = num.eqNode(NodeManager::currentNM()->mkNode(kind::APPLY_UF, ufP, d_zero));
+    new_nodes.push_back( lem );
+
+    Node ufx = NodeManager::currentNM()->mkNode(kind::APPLY_UF, ufP, b1);
+    Node ufx1 = NodeManager::currentNM()->mkNode(kind::APPLY_UF, ufP, NodeManager::currentNM()->mkNode(kind::MINUS,b1,one));
+    Node ufMx = NodeManager::currentNM()->mkNode(kind::APPLY_UF, ufM, b1);
+    Node b1gtz = NodeManager::currentNM()->mkNode(kind::GT, b1, d_zero);
+    Node cc1 = ufx1.eqNode( NodeManager::currentNM()->mkNode(kind::PLUS,
+            NodeManager::currentNM()->mkNode(kind::MULT, ufx, ten),
+            NodeManager::currentNM()->mkNode(kind::APPLY_UF, ufM, NodeManager::currentNM()->mkNode(kind::MINUS,b1,one)) ));
+    cc1 = NodeManager::currentNM()->mkNode(kind::IMPLIES, b1gtz, cc1);
+    Node lstx = lenp.eqNode(NodeManager::currentNM()->mkNode(kind::PLUS, b1, one));
+    Node cc2 = ufx.eqNode(ufMx);
+    cc2 = NodeManager::currentNM()->mkNode(kind::IMPLIES, lstx, cc2);
+    // leading zero
+    Node cl = NodeManager::currentNM()->mkNode(kind::AND, lstx, d_zero.eqNode(b1).negate());
+    Node cc21 = NodeManager::currentNM()->mkNode(kind::IMPLIES, cl, NodeManager::currentNM()->mkNode(kind::GT, ufMx, d_zero));
+    //cc3
+    Node cc3 = NodeManager::currentNM()->mkNode(kind::GEQ, ufMx, d_zero);
+    Node cc4 = NodeManager::currentNM()->mkNode(kind::GEQ, nine, ufMx);
+
+    Node b21 = NodeManager::currentNM()->mkBoundVar(NodeManager::currentNM()->stringType());
+    Node b22 = NodeManager::currentNM()->mkBoundVar(NodeManager::currentNM()->stringType());
+    Node b2v = NodeManager::currentNM()->mkNode(kind::BOUND_VAR_LIST, b21, b22);
+
+    Node c21 = NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, b21).eqNode(
+          NodeManager::currentNM()->mkNode(kind::MINUS, lenp, NodeManager::currentNM()->mkNode(kind::PLUS, b1, one) ));
+    Node ch =
+      NodeManager::currentNM()->mkNode(kind::ITE, ufMx.eqNode(NodeManager::currentNM()->mkConst(::CVC4::Rational(0))),
+      NodeManager::currentNM()->mkConst(::CVC4::String("0")),
+      NodeManager::currentNM()->mkNode(kind::ITE, ufMx.eqNode(NodeManager::currentNM()->mkConst(::CVC4::Rational(1))),
+      NodeManager::currentNM()->mkConst(::CVC4::String("1")),
+      NodeManager::currentNM()->mkNode(kind::ITE, ufMx.eqNode(NodeManager::currentNM()->mkConst(::CVC4::Rational(2))),
+      NodeManager::currentNM()->mkConst(::CVC4::String("2")),
+      NodeManager::currentNM()->mkNode(kind::ITE, ufMx.eqNode(NodeManager::currentNM()->mkConst(::CVC4::Rational(3))),
+      NodeManager::currentNM()->mkConst(::CVC4::String("3")),
+      NodeManager::currentNM()->mkNode(kind::ITE, ufMx.eqNode(NodeManager::currentNM()->mkConst(::CVC4::Rational(4))),
+      NodeManager::currentNM()->mkConst(::CVC4::String("4")),
+      NodeManager::currentNM()->mkNode(kind::ITE, ufMx.eqNode(NodeManager::currentNM()->mkConst(::CVC4::Rational(5))),
+      NodeManager::currentNM()->mkConst(::CVC4::String("5")),
+      NodeManager::currentNM()->mkNode(kind::ITE, ufMx.eqNode(NodeManager::currentNM()->mkConst(::CVC4::Rational(6))),
+      NodeManager::currentNM()->mkConst(::CVC4::String("6")),
+      NodeManager::currentNM()->mkNode(kind::ITE, ufMx.eqNode(NodeManager::currentNM()->mkConst(::CVC4::Rational(7))),
+      NodeManager::currentNM()->mkConst(::CVC4::String("7")),
+      NodeManager::currentNM()->mkNode(kind::ITE, ufMx.eqNode(NodeManager::currentNM()->mkConst(::CVC4::Rational(8))),
+      NodeManager::currentNM()->mkConst(::CVC4::String("8")),
+      NodeManager::currentNM()->mkConst(::CVC4::String("9")))))))))));
+    Node c22 = pret.eqNode( NodeManager::currentNM()->mkNode(kind::STRING_CONCAT, b21, ch, b22) );
+    Node cc5 = NodeManager::currentNM()->mkNode(kind::EXISTS, b2v, NodeManager::currentNM()->mkNode(kind::AND, c21, c22));
+    std::vector< Node > svec;
+    svec.push_back(cc1);svec.push_back(cc2);
+    svec.push_back(cc21);
+    svec.push_back(cc3);svec.push_back(cc4);svec.push_back(cc5);
+    Node conc = NodeManager::currentNM()->mkNode(kind::AND, svec);
+    conc = NodeManager::currentNM()->mkNode( kind::IMPLIES, g1, conc );
+    conc = NodeManager::currentNM()->mkNode( kind::FORALL, b1v, conc );
+    conc = NodeManager::currentNM()->mkNode( kind::IMPLIES, nonneg, conc );
+    new_nodes.push_back( conc );
+
+    /*conc = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::IMPLIES,
+            NodeManager::currentNM()->mkNode(kind::LT, t[0], d_zero),
+            t.eqNode(NodeManager::currentNM()->mkNode(kind::STRING_CONCAT,
+              NodeManager::currentNM()->mkConst(::CVC4::String("-")), pret))));
+    new_nodes.push_back( conc );*/
+    retNode = pret;
+  } else if( t.getKind() == kind::STRING_STOI || t.getKind() == kind::STRING_STOU16 || t.getKind() == kind::STRING_STOU32 ) {
+    Node str = t[0];
+    Node pret;
+    if( options::stringUfReduct() ){
+      pret = getUfAppForNode( kind::STRING_STOI, t );
+    }else{
+      pret = NodeManager::currentNM()->mkSkolem( "stoit", NodeManager::currentNM()->integerType(), "created for stoi" );
+    }
+    //Node pret = NodeManager::currentNM()->mkNode(kind::STRING_STOI, str);
+    //Node pret = getUfAppForNode( kind::STRING_STOI, t );
+    Node lenp = NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, str);
+
+    Node negone = NodeManager::currentNM()->mkConst( ::CVC4::Rational(-1) );
+    Node one = NodeManager::currentNM()->mkConst( ::CVC4::Rational(1) );
+    Node nine = NodeManager::currentNM()->mkConst( ::CVC4::Rational(9) );
+    Node ten = NodeManager::currentNM()->mkConst( ::CVC4::Rational(10) );
+    std::vector< TypeNode > argTypes;
+    argTypes.push_back(NodeManager::currentNM()->integerType());
+    Node ufP = NodeManager::currentNM()->mkSkolem("ufP",
+              NodeManager::currentNM()->mkFunctionType(
+                argTypes, NodeManager::currentNM()->integerType()),
+              "uf type conv P");
+    Node ufM = NodeManager::currentNM()->mkSkolem("ufM",
+              NodeManager::currentNM()->mkFunctionType(
+                argTypes, NodeManager::currentNM()->integerType()),
+              "uf type conv M");
+
+    //Node ufP0 = NodeManager::currentNM()->mkNode(kind::APPLY_UF, ufP, d_zero);
+    //new_nodes.push_back(pret.eqNode(ufP0));
+    //lemma
+    Node lem = NodeManager::currentNM()->mkNode(kind::IMPLIES,
+      str.eqNode(NodeManager::currentNM()->mkConst(::CVC4::String(""))),
+      pret.eqNode(negone));
+    new_nodes.push_back(lem);
+    /*lem = NodeManager::currentNM()->mkNode(kind::EQUAL,
+      t[0].eqNode(NodeManager::currentNM()->mkConst(::CVC4::String("0"))),
+      t.eqNode(d_zero));
+    new_nodes.push_back(lem);*/
+    if(t.getKind()==kind::STRING_U16TOS) {
+      lem = NodeManager::currentNM()->mkNode(kind::GEQ, NodeManager::currentNM()->mkConst(::CVC4::String("5")), lenp);
+      new_nodes.push_back(lem);
+    } else if(t.getKind()==kind::STRING_U32TOS) {
+      lem = NodeManager::currentNM()->mkNode(kind::GEQ, NodeManager::currentNM()->mkConst(::CVC4::String("9")), lenp);
+      new_nodes.push_back(lem);
+    }
+    //cc1
+    Node cc1 = str.eqNode(NodeManager::currentNM()->mkConst(::CVC4::String("")));
+    //cc1 = NodeManager::currentNM()->mkNode(kind::AND, ufP0.eqNode(negone), cc1);
+    //cc2
+    std::vector< Node > vec_n;
+    Node p = NodeManager::currentNM()->mkSkolem("p", NodeManager::currentNM()->integerType());
+    Node g = NodeManager::currentNM()->mkNode(kind::GEQ, p, d_zero);
+    vec_n.push_back(g);
+    g = NodeManager::currentNM()->mkNode(kind::GT, lenp, p);
+    vec_n.push_back(g);
+    Node z2 = NodeManager::currentNM()->mkNode(kind::STRING_SUBSTR, str, p, one);
+    char chtmp[2];
+    chtmp[1] = '\0';
+    for(unsigned i=0; i<=9; i++) {
+      chtmp[0] = i + '0';
+      std::string stmp(chtmp);
+      g = z2.eqNode( NodeManager::currentNM()->mkConst(::CVC4::String(stmp)) ).negate();
+      vec_n.push_back(g);
+    }
+    Node cc2 = NodeManager::currentNM()->mkNode(kind::AND, vec_n);
+    //cc3
+    Node b2 = NodeManager::currentNM()->mkBoundVar(NodeManager::currentNM()->integerType());
+    Node b2v = NodeManager::currentNM()->mkNode(kind::BOUND_VAR_LIST, b2);
+    Node g2 = NodeManager::currentNM()->mkNode(kind::AND,
+          NodeManager::currentNM()->mkNode(kind::GEQ, b2, d_zero),
+          NodeManager::currentNM()->mkNode(kind::GT, lenp, b2));
+    Node ufx = NodeManager::currentNM()->mkNode(kind::APPLY_UF, ufP, b2);
+    Node ufx1 = NodeManager::currentNM()->mkNode(kind::APPLY_UF, ufP, NodeManager::currentNM()->mkNode(kind::MINUS,b2,one));
+    Node ufMx = NodeManager::currentNM()->mkNode(kind::APPLY_UF, ufM, b2);
+    std::vector< Node > vec_c3;
+    std::vector< Node > vec_c3b;
+    //qx between 0 and 9
+    Node c3cc = NodeManager::currentNM()->mkNode(kind::GEQ, ufMx, d_zero);
+    vec_c3b.push_back(c3cc);
+    c3cc = NodeManager::currentNM()->mkNode(kind::GEQ, nine, ufMx);
+    vec_c3b.push_back(c3cc);
+    Node sx = NodeManager::currentNM()->mkNode(kind::STRING_SUBSTR, str, b2, one);
+    for(unsigned i=0; i<=9; i++) {
+      chtmp[0] = i + '0';
+      std::string stmp(chtmp);
+      c3cc = NodeManager::currentNM()->mkNode(kind::EQUAL,
+        ufMx.eqNode(NodeManager::currentNM()->mkConst(::CVC4::Rational(i))),
+        sx.eqNode(NodeManager::currentNM()->mkConst(::CVC4::String(stmp))));
+      vec_c3b.push_back(c3cc);
+    }
+    //c312
+    Node b2gtz = NodeManager::currentNM()->mkNode(kind::GT, b2, d_zero);
+    c3cc = NodeManager::currentNM()->mkNode(kind::IMPLIES, b2gtz,
+      ufx.eqNode(NodeManager::currentNM()->mkNode(kind::PLUS,
+        NodeManager::currentNM()->mkNode(kind::MULT, ufx1, ten),
+        ufMx)));
+    vec_c3b.push_back(c3cc);
+    c3cc = NodeManager::currentNM()->mkNode(kind::AND, vec_c3b);
+    c3cc = NodeManager::currentNM()->mkNode(kind::IMPLIES, g2, c3cc);
+    c3cc = NodeManager::currentNM()->mkNode(kind::FORALL, b2v, c3cc);
+    vec_c3.push_back(c3cc);
+    //unbound
+    c3cc = NodeManager::currentNM()->mkNode(kind::APPLY_UF, ufP, d_zero).eqNode(NodeManager::currentNM()->mkNode(kind::APPLY_UF, ufM, d_zero));
+    vec_c3.push_back(c3cc);
+    Node lstx = NodeManager::currentNM()->mkNode(kind::MINUS, lenp, one);
+    Node upflstx = NodeManager::currentNM()->mkNode(kind::APPLY_UF, ufP, lstx);
+    c3cc = upflstx.eqNode(pret);
+    vec_c3.push_back(c3cc);
+    Node cc3 = NodeManager::currentNM()->mkNode(kind::AND, vec_c3);
+    Node conc = NodeManager::currentNM()->mkNode(kind::ITE, pret.eqNode(negone),
+            NodeManager::currentNM()->mkNode(kind::OR, cc1, cc2), cc3);
+    new_nodes.push_back( conc );
+    retNode = pret;
+  } else if( t.getKind() == kind::STRING_STRREPL ) {
+    Node x = t[0];
+    Node y = t[1];
+    Node z = t[2];
+    Node sk1 = NodeManager::currentNM()->mkSkolem( "rp1", t[0].getType(), "created for replace" );
+    Node sk2 = NodeManager::currentNM()->mkSkolem( "rp2", t[0].getType(), "created for replace" );
+    Node skw = NodeManager::currentNM()->mkSkolem( "rpw", t[0].getType(), "created for replace" );
+    Node cond = NodeManager::currentNM()->mkNode( kind::STRING_STRCTN, x, y );
+    cond = NodeManager::currentNM()->mkNode( kind::AND, cond, NodeManager::currentNM()->mkNode(kind::GT, NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, y), d_zero) );
+    Node c1 = x.eqNode( NodeManager::currentNM()->mkNode( kind::STRING_CONCAT, sk1, y, sk2 ) );
+    Node c2 = skw.eqNode( NodeManager::currentNM()->mkNode( kind::STRING_CONCAT, sk1, z, sk2 ) );
+    Node c3 = NodeManager::currentNM()->mkNode(kind::STRING_STRCTN,
+                NodeManager::currentNM()->mkNode(kind::STRING_CONCAT, sk1,
+                   NodeManager::currentNM()->mkNode(kind::STRING_SUBSTR, y, d_zero,
+                      NodeManager::currentNM()->mkNode(kind::MINUS,
+                        NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, y),
+                        NodeManager::currentNM()->mkConst(::CVC4::Rational(1))))), y).negate();
+    Node rr = NodeManager::currentNM()->mkNode( kind::ITE, cond,
+                                                NodeManager::currentNM()->mkNode( kind::AND, c1, c2, c3),
+                                                skw.eqNode(x) );
+    new_nodes.push_back( rr );
+    retNode = skw;
+  } else if( t.getKind() == kind::STRING_STRCTN ){
+    Node x = t[0];
+    Node s = t[1];
+    //negative contains reduces to existential
+    Node lenx = NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, x);
+    Node lens = NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, s);
+    Node b1 = NodeManager::currentNM()->mkBoundVar(NodeManager::currentNM()->integerType());
+    Node b1v = NodeManager::currentNM()->mkNode(kind::BOUND_VAR_LIST, b1);
+    Node body = NodeManager::currentNM()->mkNode( kind::AND, 
+                  NodeManager::currentNM()->mkNode( kind::LEQ, d_zero, b1 ),
+                  NodeManager::currentNM()->mkNode( kind::LEQ, b1, NodeManager::currentNM()->mkNode( kind::MINUS, lenx, lens ) ),
+                  NodeManager::currentNM()->mkNode( kind::EQUAL, NodeManager::currentNM()->mkNode(kind::STRING_SUBSTR, x, b1, lens), s )                
+                );
+    retNode = NodeManager::currentNM()->mkNode( kind::EXISTS, b1v, body );
+  }
+
+  if( t!=retNode ){
+    Trace("strings-preprocess") << "StringsPreprocess::simplify: " << t << " -> " << retNode << std::endl;
+    if(!new_nodes.empty()) {
+      Trace("strings-preprocess") << " ... new nodes (" << (new_nodes.size()-prev_new_nodes) << "):" << std::endl;
+      for(unsigned int i=prev_new_nodes; i<new_nodes.size(); ++i) {
+        Trace("strings-preprocess") << "   " << new_nodes[i] << std::endl;
+      }
+    }
+  }
+  return retNode;
+}
+
+Node StringsPreprocess::simplifyRec( Node t, std::vector< Node > & new_nodes, std::map< Node, Node >& visited ){
+  std::map< Node, Node >::iterator it = visited.find(t);
+  if( it!=visited.end() ){
+    return it->second;
+  }else{
+    Node retNode;
+    if( t.getNumChildren()==0 ){
+      retNode = simplify( t, new_nodes );
+    }else if( t.getKind()!=kind::FORALL ){
+      bool changed = false;
+      std::vector< Node > cc;
+      if( t.getMetaKind() == kind::metakind::PARAMETERIZED ){
+        cc.push_back( t.getOperator() );
+      }
+      for(unsigned i=0; i<t.getNumChildren(); i++) {
+        Node s = simplifyRec( t[i], new_nodes, visited );
+        cc.push_back( s );
+        if( s!=t[i] ) {
+          changed = true;
+        }
+      }
+      Node tmp = t;
+      if( changed ){
+        tmp = NodeManager::currentNM()->mkNode( t.getKind(), cc );
+      }
+      retNode = simplify( tmp, new_nodes ); 
+    }
+    visited[t] = retNode;
+    return retNode;
+  }
+}
+
+Node StringsPreprocess::processAssertion( Node n, std::vector< Node > &new_nodes ) {
+  std::map< Node, Node > visited;
+  std::vector< Node > new_nodes_curr;
+  Node ret = simplifyRec( n, new_nodes_curr, visited );
+  while( !new_nodes_curr.empty() ){
+    Node curr = new_nodes_curr.back();
+    new_nodes_curr.pop_back();
+    std::vector< Node > new_nodes_tmp;
+    curr = simplifyRec( curr, new_nodes_tmp, visited );
+    new_nodes_curr.insert( new_nodes_curr.end(), new_nodes_tmp.begin(), new_nodes_tmp.end() );
+    new_nodes.push_back( curr );
+  }
+  return ret;
+}
+
+void StringsPreprocess::processAssertions( std::vector< Node > &vec_node ){
+  std::map< Node, Node > visited;
+  for( unsigned i=0; i<vec_node.size(); i++ ){
+    Trace("strings-preprocess-debug") << "Preprocessing assertion " << vec_node[i] << std::endl;
+    //preprocess until fixed point
+    std::vector< Node > new_nodes;
+    std::vector< Node > new_nodes_curr;
+    new_nodes_curr.push_back( vec_node[i] );
+    while( !new_nodes_curr.empty() ){
+      Node curr = new_nodes_curr.back();
+      new_nodes_curr.pop_back();
+      std::vector< Node > new_nodes_tmp;
+      curr = simplifyRec( curr, new_nodes_tmp, visited );
+      new_nodes_curr.insert( new_nodes_curr.end(), new_nodes_tmp.begin(), new_nodes_tmp.end() );
+      new_nodes.push_back( curr );
+    }
+    Node res = new_nodes.size()==1 ? new_nodes[0] : NodeManager::currentNM()->mkNode( kind::AND, new_nodes );
+    if( res!=vec_node[i] ){
+      res = Rewriter::rewrite( res );
+      PROOF( ProofManager::currentPM()->addDependence( res, vec_node[i] ); );
+      vec_node[i] = res;
+    }
+  }
+}
+
+}/* CVC4::theory::strings namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/strings/theory_strings_preprocess.h b/src/theory/strings/theory_strings_preprocess.h
new file mode 100644
index 0000000..faaeb53
--- /dev/null
+++ b/src/theory/strings/theory_strings_preprocess.h
@@ -0,0 +1,59 @@
+/*********************                                                        */
+/*! \file theory_strings_preprocess.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Strings Preprocess
+ **
+ ** Strings Preprocess.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__STRINGS__PREPROCESS_H
+#define __CVC4__THEORY__STRINGS__PREPROCESS_H
+
+#include <vector>
+#include "util/hash.h"
+#include "theory/theory.h"
+#include "theory/rewriter.h"
+#include "context/cdchunk_list.h"
+#include "context/cdhashmap.h"
+
+namespace CVC4 {
+namespace theory {
+namespace strings {
+
+class StringsPreprocess {
+  //Constants
+  Node d_zero;
+  Node d_one;
+  //mapping from kinds to UF
+  std::map< Kind, std::map< unsigned, Node > > d_uf;
+  //get UF for node
+  Node getUfForNode( Kind k, Node n, unsigned id = 0 );
+  Node getUfAppForNode( Kind k, Node n, unsigned id = 0 );
+  //recursive simplify
+  Node simplifyRec( Node t, std::vector< Node > &new_nodes, std::map< Node, Node >& visited );
+public:
+  StringsPreprocess( context::UserContext* u );
+  ~StringsPreprocess();
+  //returns a node that is equivalent to t under assumptions in new_nodes
+  Node simplify( Node t, std::vector< Node > &new_nodes );
+  //process assertion: guarentees to remove all extf
+  Node processAssertion( Node n, std::vector< Node > &new_nodes );
+  //proces assertions: guarentees to remove all extf, rewrite in place
+  void processAssertions( std::vector< Node > &vec_node );
+};
+
+}/* CVC4::theory::strings namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__STRINGS__PREPROCESS_H */
diff --git a/src/theory/strings/theory_strings_rewriter.cpp b/src/theory/strings/theory_strings_rewriter.cpp
new file mode 100644
index 0000000..2ee367c
--- /dev/null
+++ b/src/theory/strings/theory_strings_rewriter.cpp
@@ -0,0 +1,1781 @@
+/*********************                                                        */
+/*! \file theory_strings_rewriter.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tianyi Liang, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of the theory of strings.
+ **
+ ** Implementation of the theory of strings.
+ **/
+
+#include "theory/strings/theory_strings_rewriter.h"
+
+#include <stdint.h>
+
+#include "options/strings_options.h"
+#include "smt/logic_exception.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::theory;
+using namespace CVC4::theory::strings;
+
+Node TheoryStringsRewriter::simpleRegexpConsume( std::vector< Node >& mchildren, std::vector< Node >& children, int dir ){
+  unsigned tmin = dir<0 ? 0 : dir;
+  unsigned tmax = dir<0 ? 1 : dir;
+  //try to remove off front and back
+  for( unsigned t=0; t<2; t++ ){
+    if( tmin<=t && t<=tmax ){
+      bool do_next = true;
+      while( !children.empty() && !mchildren.empty() && do_next ){
+        do_next = false;
+        Node xc = mchildren[mchildren.size()-1];
+        Node rc = children[children.size()-1];
+        Assert( rc.getKind()!=kind::REGEXP_CONCAT );
+        Assert( xc.getKind()!=kind::STRING_CONCAT );
+        if( rc.getKind() == kind::STRING_TO_REGEXP ){
+          if( xc==rc[0] ){
+            children.pop_back();
+            mchildren.pop_back();
+            do_next = true;
+          }else if( xc.isConst() && rc[0].isConst() ){
+            //split the constant
+            int index;
+            Node s = splitConstant( xc, rc[0], index, t==0 );
+            Trace("regexp-ext-rewrite-debug") << "CRE: Regexp const split : " << xc << " " << rc[0] << " -> " << s << " " << index << " " << t << std::endl;
+            if( s.isNull() ){
+              return NodeManager::currentNM()->mkConst( false );
+            }else{
+              children.pop_back();
+              mchildren.pop_back();
+              if( index==0 ){
+                mchildren.push_back( s );
+              }else{
+                children.push_back( s );
+              }
+            }
+            do_next = true;
+          }
+        }else if( xc.isConst() ){
+          //check for constants
+          CVC4::String s = xc.getConst<String>();
+          Assert( s.size()>0 );
+          if( rc.getKind() == kind::REGEXP_RANGE || rc.getKind()==kind::REGEXP_SIGMA ){
+            CVC4::String ss( t==0 ? s.getLastChar() : s.getFirstChar() );
+            if( testConstStringInRegExp( ss, 0, rc ) ){
+              //strip off one character
+              mchildren.pop_back();
+              if( s.size()>1 ){
+                if( t==0 ){
+                  mchildren.push_back( NodeManager::currentNM()->mkConst(s.substr( 0, s.size()-1 )) );
+                }else{
+                  mchildren.push_back( NodeManager::currentNM()->mkConst(s.substr( 1 )) );
+                }
+              }
+              children.pop_back();
+              do_next = true;
+            }else{
+              return NodeManager::currentNM()->mkConst( false );
+            }
+          }else if( rc.getKind()==kind::REGEXP_INTER || rc.getKind()==kind::REGEXP_UNION ){
+            //see if any/each child does not work
+            bool result_valid = true;
+            Node result;
+            Node emp_s = NodeManager::currentNM()->mkConst( ::CVC4::String("") );
+            for( unsigned i=0; i<rc.getNumChildren(); i++ ){
+              std::vector< Node > mchildren_s;
+              std::vector< Node > children_s;
+              mchildren_s.push_back( xc );
+              getConcat( rc[i], children_s );
+              Node ret = simpleRegexpConsume( mchildren_s, children_s, t );
+              if( !ret.isNull() ){
+                // one conjunct cannot be satisfied, return false
+                if( rc.getKind()==kind::REGEXP_INTER ){
+                  return ret;
+                }
+              }else{
+                if( children_s.empty() ){
+                  //if we were able to fully consume, store the result
+                  Assert( mchildren_s.size()<=1 );
+                  if( mchildren_s.empty() ){
+                    mchildren_s.push_back( emp_s );
+                  }
+                  if( result.isNull() ){
+                    result = mchildren_s[0];
+                  }else if( result!=mchildren_s[0] ){
+                    result_valid = false;
+                  }
+                }else{
+                  result_valid = false;
+                }
+              }
+            }
+            if( result_valid ){
+              if( result.isNull() ){
+                //all disjuncts cannot be satisfied, return false
+                Assert( rc.getKind()==kind::REGEXP_UNION );
+                return NodeManager::currentNM()->mkConst( false );
+              }else{
+                //all branches led to the same result
+                children.pop_back();
+                mchildren.pop_back();
+                if( result!=emp_s ){
+                  mchildren.push_back( result );
+                }
+                do_next = true;
+              }
+            }
+          }else if( rc.getKind()==kind::REGEXP_STAR ){
+            //check if there is no way that this star can be unrolled even once
+            std::vector< Node > mchildren_s;
+            mchildren_s.insert( mchildren_s.end(), mchildren.begin(), mchildren.end() );
+            if( t==1 ){
+              std::reverse( mchildren_s.begin(), mchildren_s.end() );
+            }
+            std::vector< Node > children_s;
+            getConcat( rc[0], children_s );
+            Node ret = simpleRegexpConsume( mchildren_s, children_s, t );
+            if( !ret.isNull() ){
+              Trace("regexp-ext-rewrite-debug") << "CRE : regexp star infeasable " << xc << " " << rc << std::endl;
+              children.pop_back();
+              if( children.empty() ){
+                return NodeManager::currentNM()->mkConst( false );
+              }else{
+                do_next = true;
+              }
+            }else{
+              if( children_s.empty() ){
+                //check if beyond this, we can't do it or there is nothing left, if so, repeat
+                bool can_skip = false;
+                if( children.size()>1 ){
+                  std::vector< Node > mchildren_ss;
+                  mchildren_ss.insert( mchildren_ss.end(), mchildren.begin(), mchildren.end() );
+                  std::vector< Node > children_ss;
+                  children_ss.insert( children_ss.end(), children.begin(), children.end()-1 );
+                  if( t==1 ){
+                    std::reverse( mchildren_ss.begin(), mchildren_ss.end() );
+                    std::reverse( children_ss.begin(), children_ss.end() );
+                  }
+                  Node ret = simpleRegexpConsume( mchildren_ss, children_ss, t );
+                  if( ret.isNull() ){
+                    can_skip = true;
+                  }
+                }
+                if( !can_skip ){
+                  //take the result of fully consuming once
+                  if( t==1 ){
+                    std::reverse( mchildren_s.begin(), mchildren_s.end() );
+                  }
+                  mchildren.clear();
+                  mchildren.insert( mchildren.end(), mchildren_s.begin(), mchildren_s.end() );
+                  do_next = true;
+                }else{
+                  Trace("regexp-ext-rewrite-debug") << "CRE : can skip " << rc << " from " << xc << std::endl;
+                }
+              }
+            }
+          }
+        }
+        if( !do_next ){
+          Trace("regexp-ext-rewrite") << "Cannot consume : " << xc << " " << rc << std::endl;
+        }
+      }
+    }
+    if( dir!=0 ){
+      std::reverse( children.begin(), children.end() );
+      std::reverse( mchildren.begin(), mchildren.end() );
+    }
+  }
+  return Node::null();
+}
+
+Node TheoryStringsRewriter::rewriteConcatString( TNode node ) {
+  Trace("strings-prerewrite") << "Strings::rewriteConcatString start " << node << std::endl;
+  Node retNode = node;
+  std::vector<Node> node_vec;
+  Node preNode = Node::null();
+  for(unsigned int i=0; i<node.getNumChildren(); ++i) {
+    Node tmpNode = node[i];
+    if(node[i].getKind() == kind::STRING_CONCAT) {
+      tmpNode = rewriteConcatString(node[i]);
+      if(tmpNode.getKind() == kind::STRING_CONCAT) {
+        unsigned j=0;
+        if(!preNode.isNull()) {
+          if(tmpNode[0].isConst()) {
+            preNode = NodeManager::currentNM()->mkConst( preNode.getConst<String>().concat( tmpNode[0].getConst<String>() ) );
+            node_vec.push_back( preNode );
+          } else {
+            node_vec.push_back( preNode );
+            node_vec.push_back( tmpNode[0] );
+          }
+          preNode = Node::null();
+          ++j;
+        }
+        for(; j<tmpNode.getNumChildren() - 1; ++j) {
+          node_vec.push_back( tmpNode[j] );
+        }
+        tmpNode = tmpNode[j];
+      }
+    }
+    if(!tmpNode.isConst()) {
+      if(!preNode.isNull()) {
+        if(preNode.getKind() == kind::CONST_STRING && !preNode.getConst<String>().isEmptyString() ) {
+          node_vec.push_back( preNode );
+        }
+        preNode = Node::null();
+      }
+      node_vec.push_back( tmpNode );
+    }else{
+      if( preNode.isNull() ){
+        preNode = tmpNode;
+      }else{
+        preNode = NodeManager::currentNM()->mkConst( preNode.getConst<String>().concat( tmpNode.getConst<String>() ) );
+      }
+    }
+  }
+  if( !preNode.isNull() && ( preNode.getKind()!=kind::CONST_STRING || !preNode.getConst<String>().isEmptyString() ) ){
+    node_vec.push_back( preNode );
+  }
+  retNode = mkConcat( kind::STRING_CONCAT, node_vec );
+  Trace("strings-prerewrite") << "Strings::rewriteConcatString end " << retNode << std::endl;
+  return retNode;
+}
+
+
+void TheoryStringsRewriter::mergeInto(std::vector<Node> &t, const std::vector<Node> &s) {
+  for(std::vector<Node>::const_iterator itr=s.begin(); itr!=s.end(); itr++) {
+    if(std::find(t.begin(), t.end(), (*itr)) == t.end()) {
+      t.push_back( *itr );
+    }
+  }
+}
+
+void TheoryStringsRewriter::shrinkConVec(std::vector<Node> &vec) {
+  unsigned i = 0;
+  Node emptysingleton = NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP, NodeManager::currentNM()->mkConst( CVC4::String("") ) );
+  while(i < vec.size()) {
+    if( vec[i] == emptysingleton ) {
+      vec.erase(vec.begin() + i);
+    } else if(vec[i].getKind()==kind::STRING_TO_REGEXP && i<vec.size()-1 && vec[i+1].getKind()==kind::STRING_TO_REGEXP) {
+      Node tmp = NodeManager::currentNM()->mkNode(kind::STRING_CONCAT, vec[i][0], vec[i+1][0]);
+      tmp = rewriteConcatString(tmp);
+      vec[i] = NodeManager::currentNM()->mkNode(kind::STRING_TO_REGEXP, tmp);
+      vec.erase(vec.begin() + i + 1);
+    } else {
+      i++;
+    }
+  }
+}
+
+Node TheoryStringsRewriter::applyAX( TNode node ) {
+  Trace("regexp-ax") << "Regexp::AX start " << node << std::endl;
+  Node retNode = node;
+
+  int k = node.getKind();
+  switch( k ) {
+    case kind::REGEXP_UNION: {
+      std::vector<Node> vec_nodes;
+      for(unsigned i=0; i<node.getNumChildren(); i++) {
+        Node tmp = applyAX(node[i]);
+        if(tmp.getKind() == kind::REGEXP_UNION) {
+          for(unsigned j=0; j<tmp.getNumChildren(); j++) {
+            if(std::find(vec_nodes.begin(), vec_nodes.end(), tmp[j]) == vec_nodes.end()) {
+              vec_nodes.push_back(tmp[j]);
+            }
+          }
+        } else if(tmp.getKind() == kind::REGEXP_EMPTY) {
+          // do nothing
+        } else {
+          if(std::find(vec_nodes.begin(), vec_nodes.end(), tmp) == vec_nodes.end()) {
+            vec_nodes.push_back(tmp);
+          }
+        }
+      }
+      if(vec_nodes.empty()) {
+        std::vector< Node > nvec;
+        retNode = NodeManager::currentNM()->mkNode( kind::REGEXP_EMPTY, nvec );
+      } else {
+        retNode = vec_nodes.size() == 1 ? vec_nodes[0] : NodeManager::currentNM()->mkNode( kind::REGEXP_UNION, vec_nodes );
+      }
+      break;
+    }
+    case kind::REGEXP_CONCAT: {
+      std::vector< std::vector<Node> > vec_nodes;
+      bool emptyflag = false;
+      Node emptysingleton = NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP, NodeManager::currentNM()->mkConst( CVC4::String("") ) );
+      for(unsigned i=0; i<node.getNumChildren(); i++) {
+        Node tmp = applyAX(node[i]);
+        if(tmp.getKind() == kind::REGEXP_EMPTY) {
+          emptyflag = true;
+          break;
+        } else if(tmp == emptysingleton) {
+          //do nothing
+        } else if(vec_nodes.empty()) {
+          if(tmp.getKind() == kind::REGEXP_UNION) {
+            for(unsigned j=0; j<tmp.getNumChildren(); j++) {
+              std::vector<Node> vtmp;
+              if(tmp[j].getKind() == kind::REGEXP_CONCAT) {
+                for(unsigned j2=0; j2<tmp[j].getNumChildren(); j2++) {
+                  vtmp.push_back(tmp[j][j2]);
+                }
+              } else {
+                vtmp.push_back(tmp[j]);
+              }
+              vec_nodes.push_back(vtmp);
+            }
+          } else if(tmp.getKind() == kind::REGEXP_CONCAT) {
+            std::vector<Node> vtmp;
+            for(unsigned j=0; j<tmp.getNumChildren(); j++) {
+              vtmp.push_back(tmp[j]);
+            }
+            vec_nodes.push_back(vtmp);
+          } else {
+            std::vector<Node> vtmp;
+            vtmp.push_back(tmp);
+            vec_nodes.push_back(vtmp);
+          }
+        } else {
+          //non-empty vec
+          if(tmp.getKind() == kind::REGEXP_UNION) {
+            unsigned cnt = vec_nodes.size();
+            for(unsigned i2=0; i2<cnt; i2++) {
+              //std::vector<Node> vleft( vec_nodes[i2] );
+              for(unsigned j=0; j<tmp.getNumChildren(); j++) {
+                if(tmp[j] == emptysingleton) {
+                  vec_nodes.push_back( vec_nodes[i2] );
+                } else {
+                  std::vector<Node> vt( vec_nodes[i2] );
+                  if(tmp[j].getKind() != kind::REGEXP_CONCAT) {
+                    vt.push_back( tmp[j] );
+                  } else {
+                    for(unsigned j2=0; j2<tmp[j].getNumChildren(); j2++) {
+                      vt.push_back(tmp[j][j2]);
+                    }
+                  }
+                  vec_nodes.push_back(vt);
+                }
+              }
+            }
+            vec_nodes.erase(vec_nodes.begin(), vec_nodes.begin() + cnt);
+          } else if(tmp.getKind() == kind::REGEXP_CONCAT) {
+            for(unsigned i2=0; i2<vec_nodes.size(); i2++) {
+              for(unsigned j=0; j<tmp.getNumChildren(); j++) {
+                vec_nodes[i2].push_back(tmp[j]);
+              }
+            }
+          } else {
+            for(unsigned i2=0; i2<vec_nodes.size(); i2++) {
+              vec_nodes[i2].push_back(tmp);
+            }
+          }
+        }
+      }
+      if(emptyflag) {
+        std::vector< Node > nvec;
+        retNode = NodeManager::currentNM()->mkNode( kind::REGEXP_EMPTY, nvec );
+      } else if(vec_nodes.empty()) {
+        retNode = emptysingleton;
+      } else if(vec_nodes.size() == 1) {
+        shrinkConVec(vec_nodes[0]);
+        retNode = vec_nodes[0].empty()? emptysingleton
+          : vec_nodes[0].size()==1? vec_nodes[0][0]
+          : NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, vec_nodes[0]);
+      } else {
+        std::vector<Node> vtmp;
+        for(unsigned i=0; i<vec_nodes.size(); i++) {
+          shrinkConVec(vec_nodes[i]);
+          if(!vec_nodes[i].empty()) {
+            Node ntmp = vec_nodes[i].size()==1? vec_nodes[i][0]
+              : NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, vec_nodes[i]);
+            vtmp.push_back(ntmp);
+          }
+        }
+        retNode = vtmp.empty()? emptysingleton
+          : vtmp.size()==1? vtmp[0] : NodeManager::currentNM()->mkNode(kind::REGEXP_UNION, vtmp);
+      }
+      break;
+    }
+    case kind::REGEXP_STAR: {
+      Node tmp = applyAX(node[0]);
+      Node emptysingleton = NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP, NodeManager::currentNM()->mkConst( CVC4::String("") ) );
+      if(tmp.getKind() == kind::REGEXP_EMPTY || tmp == emptysingleton) {
+        retNode = emptysingleton;
+      } else {
+        if(tmp.getKind() == kind::REGEXP_UNION) {
+          std::vector<Node> vec;
+          for(unsigned i=0; i<tmp.getNumChildren(); i++) {
+            if(tmp[i] != emptysingleton) {
+              vec.push_back(tmp[i]);
+            }
+          }
+          if(vec.size() != tmp.getNumChildren()) {
+            tmp = vec.size()==1? vec[0] : NodeManager::currentNM()->mkNode( kind::REGEXP_UNION, vec) ;
+          }
+        } else if(tmp.getKind() == kind::REGEXP_STAR) {
+          tmp = tmp[0];
+        }
+        if(tmp != node[0]) {
+          retNode = NodeManager::currentNM()->mkNode( kind::REGEXP_STAR, tmp );
+        }
+      }
+      break;
+    }
+    case kind::REGEXP_INTER: {
+      std::vector< std::vector<Node> > vec_nodes;
+      bool emptyflag = false;
+      bool epsflag = false;
+      Node emptysingleton = NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP, NodeManager::currentNM()->mkConst( CVC4::String("") ) );
+      for(unsigned i=0; i<node.getNumChildren(); i++) {
+        Node tmp = applyAX(node[i]);
+        if(tmp.getKind() == kind::REGEXP_EMPTY) {
+          emptyflag = true;
+          break;
+        } else if(vec_nodes.empty()) {
+          if(tmp.getKind() == kind::REGEXP_INTER) {
+            std::vector<Node> vtmp;
+            for(unsigned j=0; j<tmp.getNumChildren(); j++) {
+              vtmp.push_back(tmp[j]);
+            }
+            vec_nodes.push_back(vtmp);
+          } else if(tmp.getKind() == kind::REGEXP_UNION) {
+            for(unsigned j=0; j<tmp.getNumChildren(); j++) {
+              std::vector<Node> vtmp;
+              if(tmp[j].getKind() == kind::REGEXP_INTER) {
+                for(unsigned j2=0; j2<tmp[j].getNumChildren(); j2++) {
+                  vtmp.push_back(tmp[j][j2]);
+                }
+              } else {
+                vtmp.push_back(tmp[j]);
+              }
+              vec_nodes.push_back(vtmp);
+            }
+          } else {
+            if(tmp == emptysingleton) {
+              epsflag = true;
+            }
+            std::vector<Node> vtmp;
+            vtmp.push_back(tmp);
+            vec_nodes.push_back(vtmp);
+          }
+        } else {
+          //non-empty vec
+          if(tmp.getKind() == kind::REGEXP_INTER) {
+            for(unsigned j=0; j<tmp.getNumChildren(); j++) {
+              for(unsigned i2=0; i2<vec_nodes.size(); i2++) {
+                if(std::find(vec_nodes[i2].begin(), vec_nodes[i2].end(), tmp[j]) == vec_nodes[i2].end()) {
+                  vec_nodes[i2].push_back(tmp[j]);
+                }
+              }
+            }
+          } else if(tmp == emptysingleton) {
+            if(!epsflag) {
+              epsflag = true;
+              for(unsigned j=0; j<vec_nodes.size(); j++) {
+                vec_nodes[j].insert(vec_nodes[j].begin(), emptysingleton);
+              }
+            }
+          } else if(tmp.getKind() == kind::REGEXP_UNION) {
+            unsigned cnt = vec_nodes.size();
+            for(unsigned i2=0; i2<cnt; i2++) {
+              //std::vector<Node> vleft( vec_nodes[i2] );
+              for(unsigned j=0; j<tmp.getNumChildren(); j++) {
+                std::vector<Node> vt(vec_nodes[i2]);
+                if(tmp[j].getKind() != kind::REGEXP_INTER) {
+                  if(std::find(vt.begin(), vt.end(), tmp[j]) == vt.end()) {
+                    vt.push_back(tmp[j]);
+                  }
+                } else {
+                  std::vector<Node> vtmp;
+                  for(unsigned j2=0; j2<tmp[j].getNumChildren(); j2++) {
+                    vtmp.push_back(tmp[j][j2]);
+                  }
+                  mergeInto(vt, vtmp);
+                }
+                vec_nodes.push_back(vt);
+              }
+            }
+            vec_nodes.erase(vec_nodes.begin(), vec_nodes.begin() + cnt);
+          } else {
+            for(unsigned j=0; j<vec_nodes.size(); j++) {
+              if(std::find(vec_nodes[j].begin(), vec_nodes[j].end(), tmp) == vec_nodes[j].end()) {
+                vec_nodes[j].push_back(tmp);
+              }
+            }
+          }
+        }
+      }
+      if(emptyflag) {
+        std::vector< Node > nvec;
+        retNode = NodeManager::currentNM()->mkNode( kind::REGEXP_EMPTY, nvec );
+      } else if(vec_nodes.empty()) {
+        //to check?
+        retNode = emptysingleton;
+      } else if(vec_nodes.size() == 1) {
+        retNode = vec_nodes[0].empty() ? emptysingleton : vec_nodes[0].size() == 1 ? vec_nodes[0][0] : NodeManager::currentNM()->mkNode( kind::REGEXP_INTER, vec_nodes[0] );
+      } else {
+        std::vector<Node> vtmp;
+        for(unsigned i=0; i<vec_nodes.size(); i++) {
+          Node tmp = vec_nodes[i].empty()? emptysingleton : vec_nodes[i].size() == 1 ? vec_nodes[i][0] : NodeManager::currentNM()->mkNode( kind::REGEXP_INTER, vec_nodes[i] );
+          vtmp.push_back(tmp);
+        }
+        retNode = vtmp.size() == 1? vtmp[0] : NodeManager::currentNM()->mkNode( kind::REGEXP_UNION, vtmp );
+      }
+      break;
+    }
+/*    case kind::REGEXP_UNION: {
+      break;
+    }*/
+    case kind::REGEXP_SIGMA: {
+      break;
+    }
+    case kind::REGEXP_EMPTY: {
+      break;
+    }
+    //default: {
+      //to check?
+    //}
+  }
+
+  Trace("regexp-ax") << "Regexp::AX end " << node << " to\n               " << retNode << std::endl;
+  return retNode;
+}
+
+Node TheoryStringsRewriter::prerewriteConcatRegExp( TNode node ) {
+  Assert( node.getKind() == kind::REGEXP_CONCAT );
+  Trace("strings-prerewrite") << "Strings::prerewriteConcatRegExp start " << node << std::endl;
+  Node retNode = node;
+  std::vector<Node> node_vec;
+  Node preNode = Node::null();
+  bool emptyflag = false;
+  for(unsigned int i=0; i<node.getNumChildren(); ++i) {
+    Trace("strings-prerewrite") << "Strings::prerewriteConcatRegExp preNode: " << preNode << std::endl;
+    Node tmpNode = node[i];
+    if(tmpNode.getKind() == kind::REGEXP_CONCAT) {
+      tmpNode = prerewriteConcatRegExp(node[i]);
+      if(tmpNode.getKind() == kind::REGEXP_CONCAT) {
+        unsigned j=0;
+        if(!preNode.isNull()) {
+          if(tmpNode[0].getKind() == kind::STRING_TO_REGEXP) {
+            preNode = rewriteConcatString(
+              NodeManager::currentNM()->mkNode( kind::STRING_CONCAT, preNode, tmpNode[0][0] ) );
+            node_vec.push_back( NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP, preNode ) );
+            preNode = Node::null();
+          } else {
+            node_vec.push_back( NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP, preNode ) );
+            preNode = Node::null();
+            node_vec.push_back( tmpNode[0] );
+          }
+          ++j;
+        }
+        for(; j<tmpNode.getNumChildren() - 1; ++j) {
+          node_vec.push_back( tmpNode[j] );
+        }
+        tmpNode = tmpNode[j];
+      }
+    }
+    if( tmpNode.getKind() == kind::STRING_TO_REGEXP ) {
+      if(preNode.isNull()) {
+        preNode = tmpNode[0];
+      } else {
+        preNode = rewriteConcatString(
+        NodeManager::currentNM()->mkNode( kind::STRING_CONCAT, preNode, tmpNode[0] ) );
+      }
+    } else if( tmpNode.getKind() == kind::REGEXP_EMPTY ) {
+      emptyflag = true;
+      break;
+    } else {
+      if(!preNode.isNull()) {
+        if(preNode.getKind() == kind::CONST_STRING && preNode.getConst<String>().isEmptyString() ) {
+          preNode = Node::null();
+        } else {
+          node_vec.push_back( NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP, preNode ) );
+          preNode = Node::null();
+        }
+      }
+      node_vec.push_back( tmpNode );
+    }
+  }
+  if(emptyflag) {
+    std::vector< Node > nvec;
+    retNode = NodeManager::currentNM()->mkNode( kind::REGEXP_EMPTY, nvec );
+  } else {
+    if(!preNode.isNull()) {
+      bool bflag = (preNode.getKind() == kind::CONST_STRING && preNode.getConst<String>().isEmptyString() );
+      if(node_vec.empty() || !bflag ) {
+        node_vec.push_back( NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP, preNode ) );
+      }
+    }
+    if(node_vec.size() > 1) {
+      retNode = NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, node_vec);
+    } else {
+      retNode = node_vec[0];
+    }
+  }
+  Trace("strings-prerewrite") << "Strings::prerewriteConcatRegExp end " << retNode << std::endl;
+  return retNode;
+}
+
+Node TheoryStringsRewriter::prerewriteOrRegExp(TNode node) {
+  Assert( node.getKind() == kind::REGEXP_UNION );
+  Trace("strings-prerewrite") << "Strings::prerewriteOrRegExp start " << node << std::endl;
+  Node retNode = node;
+  std::vector<Node> node_vec;
+  bool allflag = false;
+  for(unsigned i=0; i<node.getNumChildren(); ++i) {
+    if(node[i].getKind() == kind::REGEXP_UNION) {
+      Node tmpNode = prerewriteOrRegExp( node[i] );
+      if(tmpNode.getKind() == kind::REGEXP_UNION) {
+        for(unsigned int j=0; j<tmpNode.getNumChildren(); ++j) {
+          if(std::find(node_vec.begin(), node_vec.end(), tmpNode[j]) == node_vec.end()) {
+            if(std::find(node_vec.begin(), node_vec.end(), tmpNode[j]) == node_vec.end()) {
+              node_vec.push_back( tmpNode[j] );
+            }
+          }
+        }
+      } else if(tmpNode.getKind() == kind::REGEXP_EMPTY) {
+        //nothing
+      } else if(tmpNode.getKind() == kind::REGEXP_STAR && tmpNode[0].getKind() == kind::REGEXP_SIGMA) {
+        allflag = true;
+        retNode = tmpNode;
+        break;
+      } else {
+        if(std::find(node_vec.begin(), node_vec.end(), tmpNode) == node_vec.end()) {
+          node_vec.push_back( tmpNode );
+        }
+      }
+    } else if(node[i].getKind() == kind::REGEXP_EMPTY) {
+      //nothing
+    } else if(node[i].getKind() == kind::REGEXP_STAR && node[i][0].getKind() == kind::REGEXP_SIGMA) {
+      allflag = true;
+      retNode = node[i];
+      break;
+    } else {
+      if(std::find(node_vec.begin(), node_vec.end(), node[i]) == node_vec.end()) {
+        node_vec.push_back( node[i] );
+      }
+    }
+  }
+  if(!allflag) {
+    std::vector< Node > nvec;
+    retNode = node_vec.size() == 0 ? NodeManager::currentNM()->mkNode( kind::REGEXP_EMPTY, nvec ) :
+          node_vec.size() == 1 ? node_vec[0] : NodeManager::currentNM()->mkNode(kind::REGEXP_UNION, node_vec);
+  }
+  Trace("strings-prerewrite") << "Strings::prerewriteOrRegExp end " << retNode << std::endl;
+  return retNode;
+}
+
+Node TheoryStringsRewriter::prerewriteAndRegExp(TNode node) {
+  Assert( node.getKind() == kind::REGEXP_INTER );
+  Trace("strings-prerewrite") << "Strings::prerewriteOrRegExp start " << node << std::endl;
+  Node retNode = node;
+  std::vector<Node> node_vec;
+  //Node allNode = Node::null();
+  for(unsigned i=0; i<node.getNumChildren(); ++i) {
+    if(node[i].getKind() == kind::REGEXP_INTER) {
+      Node tmpNode = prerewriteAndRegExp( node[i] );
+      if(tmpNode.getKind() == kind::REGEXP_INTER) {
+        for(unsigned int j=0; j<tmpNode.getNumChildren(); ++j) {
+          if(std::find(node_vec.begin(), node_vec.end(), tmpNode[j]) == node_vec.end()) {
+            node_vec.push_back( tmpNode[j] );
+          }
+        }
+      } else if(tmpNode.getKind() == kind::REGEXP_EMPTY) {
+        retNode = tmpNode;
+        break;
+      } else if(tmpNode.getKind() == kind::REGEXP_STAR && tmpNode[0].getKind() == kind::REGEXP_SIGMA) {
+        //allNode = tmpNode;
+      } else {
+        if(std::find(node_vec.begin(), node_vec.end(), tmpNode) == node_vec.end()) {
+          node_vec.push_back( tmpNode );
+        }
+      }
+    } else if(node[i].getKind() == kind::REGEXP_EMPTY) {
+      retNode = node[i];
+      break;
+    } else if(node[i].getKind() == kind::REGEXP_STAR && node[i][0].getKind() == kind::REGEXP_SIGMA) {
+      //allNode = node[i];
+    } else {
+      if(std::find(node_vec.begin(), node_vec.end(), node[i]) == node_vec.end()) {
+        node_vec.push_back( node[i] );
+      }
+    }
+  }
+  if( retNode==node ){
+    std::vector< Node > nvec;
+    retNode = node_vec.size() == 0 ?
+          NodeManager::currentNM()->mkNode(kind::REGEXP_STAR, NodeManager::currentNM()->mkNode(kind::REGEXP_SIGMA, nvec)) :
+          node_vec.size() == 1 ? node_vec[0] : NodeManager::currentNM()->mkNode(kind::REGEXP_INTER, node_vec);
+  }
+  Trace("strings-prerewrite") << "Strings::prerewriteOrRegExp end " << retNode << std::endl;
+  return retNode;
+}
+
+bool TheoryStringsRewriter::isConstRegExp( TNode t ) {
+  if( t.getKind()==kind::STRING_TO_REGEXP ) {
+    return t[0].isConst();
+  }else{
+    for( unsigned i = 0; i<t.getNumChildren(); ++i ) {
+      if( !isConstRegExp(t[i]) ){
+        return false;
+      }
+    }
+    return true;
+  }
+}
+
+bool TheoryStringsRewriter::testConstStringInRegExp( CVC4::String &s, unsigned int index_start, TNode r ) {
+  Assert( index_start <= s.size() );
+  Trace("regexp-debug") << "Checking " << s << " in " << r << ", starting at " << index_start << std::endl;
+  int k = r.getKind();
+  switch( k ) {
+    case kind::STRING_TO_REGEXP: {
+      CVC4::String s2 = s.substr( index_start, s.size() - index_start );
+      if(r[0].getKind() == kind::CONST_STRING) {
+        return ( s2 == r[0].getConst<String>() );
+      } else {
+        Assert( false, "RegExp contains variables" );
+        return false;
+      }
+    }
+    case kind::REGEXP_CONCAT: {
+      if( s.size() != index_start ) {
+        std::vector<int> vec_k( r.getNumChildren(), -1 );
+        int start = 0;
+        int left = (int) s.size() - index_start;
+        int i=0;
+        while( i<(int) r.getNumChildren() ) {
+          bool flag = true;
+          if( i == (int) r.getNumChildren() - 1 ) {
+            if( testConstStringInRegExp( s, index_start + start, r[i] ) ) {
+              return true;
+            }
+          } else if( i == -1 ) {
+            return false;
+          } else {
+            for(vec_k[i] = vec_k[i] + 1; vec_k[i] <= left; ++vec_k[i]) {
+              CVC4::String t = s.substr(index_start + start, vec_k[i]);
+              if( testConstStringInRegExp( t, 0, r[i] ) ) {
+                start += vec_k[i]; left -= vec_k[i]; flag = false;
+                ++i; vec_k[i] = -1;
+                break;
+              }
+            }
+          }
+
+          if(flag) {
+            --i;
+            if(i >= 0) {
+              start -= vec_k[i]; left += vec_k[i];
+            }
+          }
+        }
+        return false;
+      } else {
+        for(unsigned i=0; i<r.getNumChildren(); ++i) {
+          if(!testConstStringInRegExp( s, index_start, r[i] )) return false;
+        }
+        return true;
+      }
+    }
+    case kind::REGEXP_UNION: {
+      for(unsigned i=0; i<r.getNumChildren(); ++i) {
+        if(testConstStringInRegExp( s, index_start, r[i] )) return true;
+      }
+      return false;
+    }
+    case kind::REGEXP_INTER: {
+      for(unsigned i=0; i<r.getNumChildren(); ++i) {
+        if(!testConstStringInRegExp( s, index_start, r[i] )) return false;
+      }
+      return true;
+    }
+    case kind::REGEXP_STAR: {
+      if( s.size() != index_start ) {
+        for(unsigned k=s.size() - index_start; k>0; --k) {
+          CVC4::String t = s.substr(index_start, k);
+          if( testConstStringInRegExp( t, 0, r[0] ) ) {
+            if( index_start + k == s.size() || testConstStringInRegExp( s, index_start + k, r ) ) {
+              return true;
+            }
+          }
+        }
+        return false;
+      } else {
+        return true;
+      }
+    }
+    case kind::REGEXP_EMPTY: {
+      return false;
+    }
+    case kind::REGEXP_SIGMA: {
+      if(s.size() == index_start + 1) {
+        return true;
+      } else {
+        return false;
+      }
+    }
+    case kind::REGEXP_RANGE: {
+      if(s.size() == index_start + 1) {
+        unsigned char a = r[0].getConst<String>().getFirstChar();
+        unsigned char b = r[1].getConst<String>().getFirstChar();
+        unsigned char c = s.getLastChar();
+        return (a <= c && c <= b);
+      } else {
+        return false;
+      }
+    }
+    case kind::REGEXP_LOOP: {
+      unsigned l = r[1].getConst<Rational>().getNumerator().toUnsignedInt();
+      if(s.size() == index_start) {
+        return l==0? true : testConstStringInRegExp(s, index_start, r[0]);
+      } else if(l==0 && r[1]==r[2]) {
+        return false;
+      } else {
+        Assert(r.getNumChildren() == 3, "String rewriter error: LOOP has 2 children");
+        if(l==0) {
+          //R{0,u}
+          unsigned u = r[2].getConst<Rational>().getNumerator().toUnsignedInt();
+          for(unsigned len=s.size() - index_start; len>=1; len--) {
+            CVC4::String t = s.substr(index_start, len);
+            if(testConstStringInRegExp(t, 0, r[0])) {
+              if(len + index_start == s.size()) {
+                return true;
+              } else {
+                Node num2 = NodeManager::currentNM()->mkConst( CVC4::Rational(u - 1) );
+                Node r2 = NodeManager::currentNM()->mkNode(kind::REGEXP_LOOP, r[0], r[1], num2);
+                if(testConstStringInRegExp(s, index_start+len, r2)) {
+                  return true;
+                }
+              }
+            }
+          }
+          return false;
+        } else {
+          //R{l,l}
+          Assert(r[1]==r[2], "String rewriter error: LOOP nums are not equal");
+          if(l>s.size() - index_start) {
+            if(testConstStringInRegExp(s, s.size(), r[0])) {
+              l = s.size() - index_start;
+            } else {
+              return false;
+            }
+          }
+          for(unsigned len=1; len<=s.size() - index_start; len++) {
+            CVC4::String t = s.substr(index_start, len);
+            if(testConstStringInRegExp(t, 0, r[0])) {
+              Node num2 = NodeManager::currentNM()->mkConst( CVC4::Rational(l - 1) );
+              Node r2 = NodeManager::currentNM()->mkNode(kind::REGEXP_LOOP, r[0], num2, num2);
+              if(testConstStringInRegExp(s, index_start+len, r2)) {
+                return true;
+              }
+            }
+          }
+          return false;
+        }
+      }
+    }
+    default: {
+      Trace("strings-error") << "Unsupported term: " << r << " in testConstStringInRegExp." << std::endl;
+      Unreachable();
+      return false;
+    }
+  }
+}
+
+Node TheoryStringsRewriter::rewriteMembership(TNode node) {
+  Node retNode = node;
+  Node x = node[0];
+  Node r = node[1];//applyAX(node[1]);
+
+  if(node[0].getKind() == kind::STRING_CONCAT) {
+    x = rewriteConcatString(node[0]);
+  }
+
+  if(r.getKind() == kind::REGEXP_EMPTY) {
+    retNode = NodeManager::currentNM()->mkConst( false );
+  } else if(x.getKind()==kind::CONST_STRING && isConstRegExp(r)) {
+    //test whether x in node[1]
+    CVC4::String s = x.getConst<String>();
+    retNode = NodeManager::currentNM()->mkConst( testConstStringInRegExp( s, 0, r ) );
+  } else if(r.getKind() == kind::REGEXP_SIGMA) {
+    Node one = NodeManager::currentNM()->mkConst( ::CVC4::Rational(1) );
+    retNode = one.eqNode(NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, x));
+  } else if( r.getKind() == kind::REGEXP_STAR ) {
+    if( r[0].getKind() == kind::REGEXP_SIGMA ){
+      retNode = NodeManager::currentNM()->mkConst( true );
+    }
+  }else if( r.getKind() == kind::REGEXP_CONCAT ){
+    bool allSigma = true;
+    bool allString = true;
+    std::vector< Node > cc;
+    for(unsigned i=0; i<r.getNumChildren(); i++) {
+      Assert( r[i].getKind() != kind::REGEXP_EMPTY );
+      if( r[i].getKind() != kind::REGEXP_SIGMA ){
+        allSigma = false;
+      }
+      if( r[i].getKind() != kind::STRING_TO_REGEXP ){
+        allString = false;
+      }else{
+        cc.push_back( r[i] );
+      }
+    }
+    if( allSigma ){
+      Node num = NodeManager::currentNM()->mkConst( ::CVC4::Rational( r.getNumChildren() ) );
+      retNode = num.eqNode(NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, x));
+    }else if( allString ){
+      retNode = x.eqNode( mkConcat( kind::STRING_CONCAT, cc ) );
+    }
+  }else if( r.getKind()==kind::REGEXP_INTER || r.getKind()==kind::REGEXP_UNION ){
+    std::vector< Node > mvec;
+    for( unsigned i=0; i<r.getNumChildren(); i++ ){
+      mvec.push_back( NodeManager::currentNM()->mkNode( kind::STRING_IN_REGEXP, x, r[i] ) );
+    }
+    retNode = NodeManager::currentNM()->mkNode( r.getKind()==kind::REGEXP_INTER ? kind::AND : kind::OR, mvec );
+  }else if(r.getKind() == kind::STRING_TO_REGEXP) {
+    retNode = x.eqNode(r[0]);
+  }else if(x != node[0] || r != node[1]) {
+    retNode = NodeManager::currentNM()->mkNode( kind::STRING_IN_REGEXP, x, r );
+  }
+
+  //do simple consumes
+  if( retNode==node ){
+    if( r.getKind()==kind::REGEXP_STAR ){
+      for( unsigned dir=0; dir<=1; dir++ ){
+        std::vector< Node > mchildren;
+        getConcat( x, mchildren );
+        bool success = true;
+        while( success ){
+          success = false;
+          std::vector< Node > children;
+          getConcat( r[0], children );
+          Node scn = simpleRegexpConsume( mchildren, children, dir );
+          if( !scn.isNull() ){
+            Trace("regexp-ext-rewrite") << "Regexp star : const conflict : " << node << std::endl;
+            return scn;
+          }else if( children.empty() ){
+            //fully consumed one copy of the STAR
+            if( mchildren.empty() ){
+              Trace("regexp-ext-rewrite") << "Regexp star : full consume : " << node << std::endl;
+              return NodeManager::currentNM()->mkConst( true );
+            }else{
+              retNode = NodeManager::currentNM()->mkNode( kind::STRING_IN_REGEXP, mkConcat( kind::STRING_CONCAT, mchildren ), r );
+              success = true;
+            }
+          }
+        }
+        if( retNode!=node ){
+          Trace("regexp-ext-rewrite") << "Regexp star : rewrite " << node << " -> " << retNode << std::endl;
+          break;
+        }
+      }
+    }else{
+      std::vector< Node > children;
+      getConcat( r, children );
+      std::vector< Node > mchildren;
+      getConcat( x, mchildren );
+      unsigned prevSize = children.size() + mchildren.size();
+      Node scn = simpleRegexpConsume( mchildren, children );
+      if( !scn.isNull() ){
+        Trace("regexp-ext-rewrite") << "Regexp : const conflict : " << node << std::endl;
+        return scn;
+      }else{
+        if( (children.size() + mchildren.size())!=prevSize ){
+          if( children.empty() ){
+            retNode = NodeManager::currentNM()->mkConst( mchildren.empty() );
+          }else{
+            retNode = NodeManager::currentNM()->mkNode( kind::STRING_IN_REGEXP, mkConcat( kind::STRING_CONCAT, mchildren ), mkConcat( kind::REGEXP_CONCAT, children ) );
+          }
+          Trace("regexp-ext-rewrite") << "Regexp : rewrite : " << node << " -> " << retNode << std::endl;
+        }
+      }
+    }
+  }
+  return retNode;
+}
+
+RewriteResponse TheoryStringsRewriter::postRewrite(TNode node) {
+  Trace("strings-postrewrite") << "Strings::postRewrite start " << node << std::endl;
+  Node retNode = node;
+  Node orig = retNode;
+
+  if(node.getKind() == kind::STRING_CONCAT) {
+    retNode = rewriteConcatString(node);
+  } else if(node.getKind() == kind::EQUAL) {
+    Node leftNode  = node[0];
+    if(node[0].getKind() == kind::STRING_CONCAT) {
+      leftNode = rewriteConcatString(node[0]);
+    }
+    Node rightNode = node[1];
+    if(node[1].getKind() == kind::STRING_CONCAT) {
+      rightNode = rewriteConcatString(node[1]);
+    }
+
+    if(leftNode == rightNode) {
+      retNode = NodeManager::currentNM()->mkConst(true);
+    } else if(leftNode.isConst() && rightNode.isConst()) {
+      retNode = NodeManager::currentNM()->mkConst(false);
+    } else if(leftNode > rightNode) {
+      retNode = NodeManager::currentNM()->mkNode(kind::EQUAL, rightNode, leftNode);
+    } else if( leftNode != node[0] || rightNode != node[1]) {
+      retNode = NodeManager::currentNM()->mkNode(kind::EQUAL, leftNode, rightNode);
+    }
+  } else if(node.getKind() == kind::STRING_LENGTH) {
+    if( node[0].isConst() ){
+      retNode = NodeManager::currentNM()->mkConst( ::CVC4::Rational( node[0].getConst<String>().size() ) );
+    }else if( node[0].getKind() == kind::STRING_CONCAT ){
+      Node tmpNode = rewriteConcatString(node[0]);
+      if(tmpNode.isConst()) {
+        retNode = NodeManager::currentNM()->mkConst( ::CVC4::Rational( tmpNode.getConst<String>().size() ) );
+      //} else if(tmpNode.getKind() == kind::STRING_SUBSTR) {
+        //retNode = tmpNode[2];
+      }else if( tmpNode.getKind()==kind::STRING_CONCAT ){
+        // it has to be string concat
+        std::vector<Node> node_vec;
+        for(unsigned int i=0; i<tmpNode.getNumChildren(); ++i) {
+          if(tmpNode[i].isConst()) {
+            node_vec.push_back( NodeManager::currentNM()->mkConst( ::CVC4::Rational( tmpNode[i].getConst<String>().size() ) ) );
+          //} else if(tmpNode[i].getKind() == kind::STRING_SUBSTR) {
+          //  node_vec.push_back( tmpNode[i][2] );
+          } else {
+            node_vec.push_back( NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, tmpNode[i]) );
+          }
+        }
+        retNode = NodeManager::currentNM()->mkNode(kind::PLUS, node_vec);
+      }
+    }else if( node[0].getKind()==kind::STRING_STRREPL ){
+      if( node[0][1].isConst() && node[0][2].isConst() ){
+        if( node[0][1].getConst<String>().size()==node[0][2].getConst<String>().size() ){
+          retNode = NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, node[0][0] );
+        }
+      }
+    }
+  }else if( node.getKind() == kind::STRING_CHARAT ){
+    Node one = NodeManager::currentNM()->mkConst( Rational( 1 ) );
+    retNode = NodeManager::currentNM()->mkNode(kind::STRING_SUBSTR, node[0], node[1], one);
+  }else if( node.getKind() == kind::STRING_SUBSTR ){
+    Node zero = NodeManager::currentNM()->mkConst( ::CVC4::Rational(0) );
+    if( node[2].isConst() && node[2].getConst<Rational>().sgn()<=0 ) {
+      retNode = NodeManager::currentNM()->mkConst( ::CVC4::String("") );
+    }else if( node[1].isConst() ){
+      if( node[1].getConst<Rational>().sgn()<0 ){
+        //bring forward to start at zero?  don't use this semantics, e.g. does not compose well with error conditions for str.indexof.
+        //retNode = NodeManager::currentNM()->mkNode( kind::STRING_SUBSTR, node[0], zero, NodeManager::currentNM()->mkNode( kind::PLUS, node[1], node[2] ) );
+        retNode = NodeManager::currentNM()->mkConst( ::CVC4::String("") );
+      }else{
+        if( node[2].isConst() ){
+          Assert( node[2].getConst<Rational>().sgn()>=0);
+          CVC4::Rational v1( node[1].getConst<Rational>() );
+          CVC4::Rational v2( node[2].getConst<Rational>() );
+          std::vector< Node > children;
+          getConcat( node[0], children );
+          if( children[0].isConst() ){
+            CVC4::Rational size(children[0].getConst<String>().size());
+            if( v1 >= size ){
+              if( node[0].isConst() ){
+                retNode = NodeManager::currentNM()->mkConst( ::CVC4::String("") );
+              }else{
+                children.erase( children.begin(), children.begin()+1 );
+                retNode = NodeManager::currentNM()->mkNode( kind::STRING_SUBSTR, mkConcat( kind::STRING_CONCAT, children ),
+                                                            NodeManager::currentNM()->mkNode( kind::MINUS, node[1], NodeManager::currentNM()->mkConst( size ) ),
+                                                            node[2] );
+              }
+            }else{
+              //since size is smaller than MAX_INT, v1 is smaller than MAX_INT
+              size_t i = v1.getNumerator().toUnsignedInt();
+              CVC4::Rational sum(v1 + v2);
+              bool full_spl = false;
+              size_t j;
+              if( sum>size ){
+                j = size.getNumerator().toUnsignedInt();
+              }else{
+                //similarly, sum is smaller than MAX_INT
+                j = sum.getNumerator().toUnsignedInt();
+                full_spl = true;
+              }
+              //split the first component of the string
+              Node spl = NodeManager::currentNM()->mkConst( children[0].getConst<String>().substr(i, j-i) );
+              if( node[0].isConst() || full_spl ){
+                retNode = spl;
+              }else{
+                children[0] = spl;
+                retNode = NodeManager::currentNM()->mkNode( kind::STRING_SUBSTR, mkConcat( kind::STRING_CONCAT, children ), zero, node[2] );
+              }
+            }
+          }
+        }else{
+          if( node[1]==zero ){
+            if( node[2].getKind() == kind::STRING_LENGTH && node[2][0]==node[0] ){
+              retNode = node[0];
+            }else{
+              //check if the length argument is always at least the length of the string
+              Node cmp = NodeManager::currentNM()->mkNode( kind::GEQ, node[2], NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, node[0] ) );
+              cmp = Rewriter::rewrite( cmp );
+              if( cmp==NodeManager::currentNM()->mkConst(true) ){
+                retNode = node[0];
+              }
+            }
+          }
+        }
+      }
+    }
+  }else if( node.getKind() == kind::STRING_STRCTN ){
+    retNode = rewriteContains( node );
+  }else if( node.getKind()==kind::STRING_STRIDOF ){
+    retNode = rewriteIndexof( node );
+  }else if( node.getKind() == kind::STRING_STRREPL ){
+    retNode = rewriteReplace( node );
+  }else if( node.getKind() == kind::STRING_PREFIX ){
+    if( node[0].isConst() && node[1].isConst() ){
+      CVC4::String s = node[1].getConst<String>();
+      CVC4::String t = node[0].getConst<String>();
+      retNode = NodeManager::currentNM()->mkConst( false );
+      if(s.size() >= t.size()) {
+        if(t == s.substr(0, t.size())) {
+          retNode = NodeManager::currentNM()->mkConst( true );
+        }
+      }
+    } else {
+      Node lens = NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, node[0]);
+      Node lent = NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, node[1]);
+      retNode = NodeManager::currentNM()->mkNode(kind::AND,
+            NodeManager::currentNM()->mkNode(kind::GEQ, lent, lens),
+            node[0].eqNode(NodeManager::currentNM()->mkNode(kind::STRING_SUBSTR, node[1],
+                    NodeManager::currentNM()->mkConst( ::CVC4::Rational(0) ), lens)));
+    }
+  }else if( node.getKind() == kind::STRING_SUFFIX ){
+    if(node[0].isConst() && node[1].isConst()) {
+      CVC4::String s = node[1].getConst<String>();
+      CVC4::String t = node[0].getConst<String>();
+      retNode = NodeManager::currentNM()->mkConst( false );
+      if(s.size() >= t.size()) {
+        if(t == s.substr(s.size() - t.size(), t.size())) {
+          retNode = NodeManager::currentNM()->mkConst( true );
+        }
+      }
+    } else {
+      Node lens = NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, node[0]);
+      Node lent = NodeManager::currentNM()->mkNode(kind::STRING_LENGTH, node[1]);
+      retNode = NodeManager::currentNM()->mkNode(kind::AND,
+            NodeManager::currentNM()->mkNode(kind::GEQ, lent, lens),
+            node[0].eqNode(NodeManager::currentNM()->mkNode(kind::STRING_SUBSTR, node[1],
+                    NodeManager::currentNM()->mkNode(kind::MINUS, lent, lens), lens)));
+    }
+  }else if(node.getKind() == kind::STRING_ITOS || node.getKind() == kind::STRING_U16TOS || node.getKind() == kind::STRING_U32TOS) {
+    if(node[0].isConst()) {
+      bool flag = false;
+      std::string stmp = node[0].getConst<Rational>().getNumerator().toString();
+      if(node.getKind() == kind::STRING_U16TOS) {
+        CVC4::Rational r1(UINT16_MAX);
+        CVC4::Rational r2 = node[0].getConst<Rational>();
+        if(r2>r1) {
+          flag = true;
+        }
+      } else if(node.getKind() == kind::STRING_U32TOS) {
+        CVC4::Rational r1(UINT32_MAX);
+        CVC4::Rational r2 = node[0].getConst<Rational>();
+        if(r2>r1) {
+          flag = true;
+        }
+      }
+      //std::string stmp = static_cast<std::ostringstream*>( &(std::ostringstream() << node[0]) )->str();
+      if(flag || stmp[0] == '-') {
+        retNode = NodeManager::currentNM()->mkConst( ::CVC4::String("") );
+      } else {
+        retNode = NodeManager::currentNM()->mkConst( ::CVC4::String(stmp) );
+      }
+    }
+  }else if(node.getKind() == kind::STRING_STOI || node.getKind() == kind::STRING_STOU16 || node.getKind() == kind::STRING_STOU32) {
+    if(node[0].isConst()) {
+      CVC4::String s = node[0].getConst<String>();
+      if(s.isNumber()) {
+        std::string stmp = s.toString();
+        //if(stmp[0] == '0' && stmp.size() != 1) {
+          //TODO: leading zeros
+          //retNode = NodeManager::currentNM()->mkConst(::CVC4::Rational(-1));
+        //} else {
+          bool flag = false;
+          CVC4::Rational r2(stmp.c_str());
+          if(node.getKind() == kind::STRING_U16TOS) {
+            CVC4::Rational r1(UINT16_MAX);
+            if(r2>r1) {
+              flag = true;
+            }
+          } else if(node.getKind() == kind::STRING_U32TOS) {
+            CVC4::Rational r1(UINT32_MAX);
+            if(r2>r1) {
+              flag = true;
+            }
+          }
+          if(flag) {
+            retNode = NodeManager::currentNM()->mkConst(::CVC4::Rational(-1));
+          } else {
+            retNode = NodeManager::currentNM()->mkConst( r2 );
+          }
+        //}
+      } else {
+        retNode = NodeManager::currentNM()->mkConst(::CVC4::Rational(-1));
+      }
+    } else if(node[0].getKind() == kind::STRING_CONCAT) {
+      for(unsigned i=0; i<node[0].getNumChildren(); ++i) {
+        if(node[0][i].isConst()) {
+          CVC4::String t = node[0][i].getConst<String>();
+          if(!t.isNumber()) {
+            retNode = NodeManager::currentNM()->mkConst(::CVC4::Rational(-1));
+            break;
+          }
+        }
+      }
+    }
+  } else if(node.getKind() == kind::STRING_IN_REGEXP) {
+    retNode = rewriteMembership(node);
+  }
+
+  Trace("strings-postrewrite") << "Strings::postRewrite returning " << retNode << std::endl;
+  if( orig!=retNode ){
+    Trace("strings-rewrite-debug") << "Strings: post-rewrite " << orig << " to " << retNode << std::endl;
+  }
+  return RewriteResponse(orig==retNode ? REWRITE_DONE : REWRITE_AGAIN_FULL, retNode);
+}
+
+bool TheoryStringsRewriter::hasEpsilonNode(TNode node) {
+  for(unsigned int i=0; i<node.getNumChildren(); i++) {
+    if(node[i].getKind() == kind::STRING_TO_REGEXP && node[i][0].getKind() == kind::CONST_STRING && node[i][0].getConst<String>().isEmptyString()) {
+      return true;
+    }
+  }
+  return false;
+}
+
+RewriteResponse TheoryStringsRewriter::preRewrite(TNode node) {
+  Node retNode = node;
+  Node orig = retNode;
+  Trace("strings-prerewrite") << "Strings::preRewrite start " << node << std::endl;
+
+  if(node.getKind() == kind::STRING_CONCAT) {
+    retNode = rewriteConcatString(node);
+  }else if(node.getKind() == kind::REGEXP_CONCAT) {
+    retNode = prerewriteConcatRegExp(node);
+  } else if(node.getKind() == kind::REGEXP_UNION) {
+    retNode = prerewriteOrRegExp(node);
+  } else if(node.getKind() == kind::REGEXP_INTER) {
+    retNode = prerewriteAndRegExp(node);
+  }
+  else if(node.getKind() == kind::REGEXP_STAR) {
+    if(node[0].getKind() == kind::REGEXP_STAR) {
+      retNode = node[0];
+    } else if(node[0].getKind() == kind::STRING_TO_REGEXP && node[0][0].getKind() == kind::CONST_STRING && node[0][0].getConst<String>().isEmptyString()) {
+      retNode = node[0];
+    } else if(node[0].getKind() == kind::REGEXP_EMPTY) {
+      retNode = NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP, NodeManager::currentNM()->mkConst( ::CVC4::String("") ) );
+    } else if(node[0].getKind() == kind::REGEXP_UNION) {
+      Node tmpNode = prerewriteOrRegExp(node[0]);
+      if(tmpNode.getKind() == kind::REGEXP_UNION) {
+        if(hasEpsilonNode(node[0])) {
+          std::vector< Node > node_vec;
+          for(unsigned int i=0; i<node[0].getNumChildren(); i++) {
+            if(node[0][i].getKind() == kind::STRING_TO_REGEXP && node[0][i][0].getKind() == kind::CONST_STRING && node[0][i][0].getConst<String>().isEmptyString()) {
+              //return true;
+            } else {
+              node_vec.push_back(node[0][i]);
+            }
+          }
+          retNode = node_vec.size()==1 ? node_vec[0] : NodeManager::currentNM()->mkNode(kind::REGEXP_UNION, node_vec);
+          retNode = NodeManager::currentNM()->mkNode(kind::REGEXP_STAR, retNode);
+        }
+      } else if(tmpNode.getKind() == kind::STRING_TO_REGEXP && tmpNode[0].getKind() == kind::CONST_STRING && tmpNode[0].getConst<String>().isEmptyString()) {
+        retNode = tmpNode;
+      } else {
+        retNode = NodeManager::currentNM()->mkNode(kind::REGEXP_STAR, tmpNode);
+      }
+    }
+  } else if(node.getKind() == kind::REGEXP_PLUS) {
+    retNode = NodeManager::currentNM()->mkNode( kind::REGEXP_CONCAT, node[0], NodeManager::currentNM()->mkNode( kind::REGEXP_STAR, node[0]));
+  } else if(node.getKind() == kind::REGEXP_OPT) {
+    retNode = NodeManager::currentNM()->mkNode( kind::REGEXP_UNION,
+          NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP, NodeManager::currentNM()->mkConst( ::CVC4::String("") ) ),
+          node[0]);
+  } else if(node.getKind() == kind::REGEXP_RANGE) {
+    if(node[0] == node[1]) {
+      retNode = NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP, node[0] );
+    }
+    /*std::vector< Node > vec_nodes;
+    unsigned char c = node[0].getConst<String>().getFirstChar();
+    unsigned char end = node[1].getConst<String>().getFirstChar();
+    for(; c<=end; ++c) {
+      Node n = NodeManager::currentNM()->mkNode( kind::STRING_TO_REGEXP, NodeManager::currentNM()->mkConst( ::CVC4::String( c ) ) );
+      vec_nodes.push_back( n );
+    }
+    if(vec_nodes.size() == 1) {
+      retNode = vec_nodes[0];
+    } else {
+      retNode = NodeManager::currentNM()->mkNode( kind::REGEXP_UNION, vec_nodes );
+    }*/
+  } else if(node.getKind() == kind::REGEXP_LOOP) {
+    Node r = node[0];
+    if(r.getKind() == kind::REGEXP_STAR) {
+      retNode = r;
+    } else {
+      /* //lazy
+      Node n1 = Rewriter::rewrite( node[1] );
+      if(!n1.isConst()) {
+        throw LogicException("re.loop contains non-constant integer (1).");
+      }
+      CVC4::Rational rz(0);
+      CVC4::Rational RMAXINT(LONG_MAX);
+      AlwaysAssert(rz <= n1.getConst<Rational>(), "Negative integer in string REGEXP_LOOP (1)");
+      Assert(n1.getConst<Rational>() <= RMAXINT, "Exceeded LONG_MAX in string REGEXP_LOOP (1)");
+      unsigned l = n1.getConst<Rational>().getNumerator().toUnsignedInt();
+      if(node.getNumChildren() == 3) {
+        Node n2 = Rewriter::rewrite( node[2] );
+        if(!n2.isConst()) {
+          throw LogicException("re.loop contains non-constant integer (2).");
+        }
+        if(n1 == n2) {
+          if(l == 0) {
+            retNode = NodeManager::currentNM()->mkNode(kind::STRING_TO_REGEXP,
+              NodeManager::currentNM()->mkConst(CVC4::String("")));
+          } else if(l == 1) {
+            retNode = node[0];
+          }
+        } else {
+          AlwaysAssert(rz <= n2.getConst<Rational>(), "Negative integer in string REGEXP_LOOP (2)");
+          Assert(n2.getConst<Rational>() <= RMAXINT, "Exceeded LONG_MAX in string REGEXP_LOOP (2)");
+          unsigned u = n2.getConst<Rational>().getNumerator().toUnsignedInt();
+          AlwaysAssert(l <= u, "REGEXP_LOOP (1) > REGEXP_LOOP (2)");
+          if(l != 0) {
+            Node zero = NodeManager::currentNM()->mkConst( CVC4::Rational(0) );
+            Node num = NodeManager::currentNM()->mkConst( CVC4::Rational(u - l) );
+            Node t1 = NodeManager::currentNM()->mkNode(kind::REGEXP_LOOP, node[0], n1, n1);
+            Node t2 = NodeManager::currentNM()->mkNode(kind::REGEXP_LOOP, node[0], zero, num);
+            retNode = NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, t1, t2);
+          }
+        }
+      } else {
+        retNode = l==0? NodeManager::currentNM()->mkNode(kind::REGEXP_STAR, node[0]) :
+          NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT,
+            NodeManager::currentNM()->mkNode(kind::REGEXP_LOOP, node[0], n1, n1),
+            NodeManager::currentNM()->mkNode(kind::REGEXP_STAR, node[0]));
+      }
+    }*/ //lazy
+    /*else {*/
+      // eager
+      TNode n1 = Rewriter::rewrite( node[1] );
+      //
+      if(!n1.isConst()) {
+        throw LogicException("re.loop contains non-constant integer (1).");
+      }
+      CVC4::Rational rz(0);
+      CVC4::Rational RMAXINT(LONG_MAX);
+      AlwaysAssert(rz <= n1.getConst<Rational>(), "Negative integer in string REGEXP_LOOP (1)");
+      Assert(n1.getConst<Rational>() <= RMAXINT, "Exceeded LONG_MAX in string REGEXP_LOOP (1)");
+      //
+      unsigned l = n1.getConst<Rational>().getNumerator().toUnsignedInt();
+      std::vector< Node > vec_nodes;
+      for(unsigned i=0; i<l; i++) {
+        vec_nodes.push_back(r);
+      }
+      if(node.getNumChildren() == 3) {
+        TNode n2 = Rewriter::rewrite( node[2] );
+        //if(!n2.isConst()) {
+        //  throw LogicException("re.loop contains non-constant integer (2).");
+        //}
+        Node n = vec_nodes.size()==0 ? NodeManager::currentNM()->mkNode(kind::STRING_TO_REGEXP, NodeManager::currentNM()->mkConst(CVC4::String("")))
+          : vec_nodes.size()==1 ? r : prerewriteConcatRegExp(NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, vec_nodes));
+        //Assert(n2.getConst<Rational>() <= RMAXINT, "Exceeded LONG_MAX in string REGEXP_LOOP (2)");
+        unsigned u = n2.getConst<Rational>().getNumerator().toUnsignedInt();
+        if(u <= l) {
+          retNode = n;
+        } else {
+          std::vector< Node > vec2;
+          vec2.push_back(n);
+          for(unsigned j=l; j<u; j++) {
+            vec_nodes.push_back(r);
+            n = vec_nodes.size()==1? r : prerewriteConcatRegExp(NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, vec_nodes));
+            vec2.push_back(n);
+          }
+          retNode = prerewriteOrRegExp(NodeManager::currentNM()->mkNode(kind::REGEXP_UNION, vec2));
+        }
+      } else {
+        Node rest = NodeManager::currentNM()->mkNode(kind::REGEXP_STAR, r);
+        retNode = vec_nodes.size()==0? rest : prerewriteConcatRegExp( vec_nodes.size()==1?
+                 NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, r, rest)
+                :NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT,
+                  NodeManager::currentNM()->mkNode(kind::REGEXP_CONCAT, vec_nodes), rest) );
+      }
+    }
+    Trace("strings-lp") << "Strings::lp " << node << " => " << retNode << std::endl;
+  }
+
+  Trace("strings-prerewrite") << "Strings::preRewrite returning " << retNode << std::endl;
+  if( orig!=retNode ){
+    Trace("strings-rewrite-debug") << "Strings: pre-rewrite " << orig << " to " << retNode << std::endl;
+  }
+  return RewriteResponse(orig==retNode ? REWRITE_DONE : REWRITE_AGAIN_FULL, retNode);
+}
+
+
+Node TheoryStringsRewriter::rewriteContains( Node node ) {
+  if( node[0] == node[1] ){
+    return NodeManager::currentNM()->mkConst( true );
+  }else if( node[0].isConst() && node[1].isConst() ){
+    CVC4::String s = node[0].getConst<String>();
+    CVC4::String t = node[1].getConst<String>();
+    if( s.find(t) != std::string::npos ){
+      return NodeManager::currentNM()->mkConst( true );
+    }else{
+      return NodeManager::currentNM()->mkConst( false );
+    }
+  }else if( node[0].getKind()==kind::STRING_CONCAT ){
+    //component-wise containment
+    unsigned n1 = node[0].getNumChildren();
+    std::vector< Node > nc1;
+    getConcat( node[1], nc1 );
+    unsigned n2 = nc1.size();
+    if( n1>n2 ){
+      unsigned diff = n1-n2;
+      for(unsigned i=0; i<diff; i++) {
+        if( node[0][i]==nc1[0] ){
+          bool flag = true;
+          for(unsigned j=1; j<n2; j++) {
+            if( node[0][i+j]!=nc1[j] ){
+              flag = false;
+              break;
+            }
+          }
+          if(flag) {
+            return NodeManager::currentNM()->mkConst( true );
+          }
+        }
+      }
+    }
+    if( node[1].isConst() ){
+      CVC4::String t = node[1].getConst<String>();
+      for(unsigned i=0; i<node[0].getNumChildren(); i++){
+        //constant contains
+        if( node[0][i].isConst() ){
+          CVC4::String s = node[0][i].getConst<String>();
+          if( s.find(t)!=std::string::npos ) {
+            return NodeManager::currentNM()->mkConst( true );
+          }else{
+            //if no overlap, we can split into disjunction
+            // if first child, only require no left overlap
+            // if last child, only require no right overlap
+            if( i==0 || i==node[0].getNumChildren()-1 || t.find(s)==std::string::npos ){
+              bool do_split = false;
+              int sot = s.overlap( t );
+              Trace("strings-ext-rewrite") << "Overlap " << s << " " << t << " is " << sot << std::endl;
+              if( sot==0 ){
+                do_split = i==0;
+              }
+              if( !do_split && ( i==(node[0].getNumChildren()-1) || sot==0 ) ){
+                int tos = t.overlap( s );
+                Trace("strings-ext-rewrite") << "Overlap " << t << " " << s << " is " << tos << std::endl;
+                if( tos==0 ){
+                  do_split = true;
+                }
+              }
+              if( do_split ){
+                std::vector< Node > nc0;
+                getConcat( node[0], nc0 );
+                std::vector< Node > spl[2];
+                if( i>0 ){
+                  spl[0].insert( spl[0].end(), nc0.begin(), nc0.begin()+i );
+                }
+                if( i<nc0.size()-1 ){
+                  spl[1].insert( spl[1].end(), nc0.begin()+i+1, nc0.end() );
+                }
+                return NodeManager::currentNM()->mkNode( kind::OR,
+                            NodeManager::currentNM()->mkNode( kind::STRING_STRCTN, mkConcat( kind::STRING_CONCAT, spl[0] ), node[1] ),
+                            NodeManager::currentNM()->mkNode( kind::STRING_STRCTN, mkConcat( kind::STRING_CONCAT, spl[1] ), node[1] ) );
+              }
+            }
+          }
+        }
+      }
+    }
+  }else if( node[0].isConst() ){
+    if( node[0].getConst<String>().size()==0 ){
+      return NodeManager::currentNM()->mkNode( kind::EQUAL, node[0], node[1] );
+    }else if( node[1].getKind()==kind::STRING_CONCAT ){
+      int firstc, lastc;
+      if( !canConstantContainConcat( node[0], node[1], firstc, lastc ) ){
+        return NodeManager::currentNM()->mkConst( false );
+      }
+    }
+  }
+  return node;
+}
+
+Node TheoryStringsRewriter::rewriteIndexof( Node node ) {
+  std::vector< Node > children;
+  getConcat( node[0], children );
+  //std::vector< Node > children1;
+  //getConcat( node[1], children1 );  TODO
+  std::size_t start = 0;
+  std::size_t val2 = 0;
+  if( node[2].isConst() ){
+    CVC4::Rational RMAXINT(LONG_MAX);
+    if( node[2].getConst<Rational>()>RMAXINT ){
+      Assert(node[2].getConst<Rational>() <= RMAXINT, "Number exceeds LONG_MAX in string index_of");
+      return NodeManager::currentNM()->mkConst( ::CVC4::Rational(-1) );
+    }else if( node[2].getConst<Rational>().sgn()==-1 ){
+      //constant negative
+      return NodeManager::currentNM()->mkConst( ::CVC4::Rational(-1) );
+    }else{
+      val2 = node[2].getConst<Rational>().getNumerator().toUnsignedInt();
+      start = val2;
+    }
+  }
+  bool prefixNoOverlap = false;
+  CVC4::String t;
+  if( node[1].isConst() ){
+    t = node[1].getConst<String>();
+  }
+  //unsigned ch1_index = 0;
+  for( unsigned i=0; i<children.size(); i++ ){
+    bool do_splice = false;
+    if( children[i].isConst() ){
+      CVC4::String s = children[i].getConst<String>();
+      if( node[1].isConst() ){
+        if( i==0 ){
+          std::size_t ret = s.find( t, start );
+          if( ret!=std::string::npos ) {
+            //exact if start value was constant
+            if( node[2].isConst() ){
+              return NodeManager::currentNM()->mkConst( ::CVC4::Rational((unsigned) ret) );
+            }
+          }else{
+            //exact if we scanned the entire string
+            if( node[0].isConst() ){
+              return NodeManager::currentNM()->mkConst( ::CVC4::Rational(-1) );
+            }else{
+              prefixNoOverlap = (s.overlap(t)==0);
+              Trace("strings-rewrite-debug") << "Prefix no overlap : " << s << " " << t << " " << prefixNoOverlap << std::endl;
+            }
+          }
+        }else if( !node[2].isConst() ){
+          break;
+        }else{
+          std::size_t ret = s.find(t, start);
+          //remove remaining children after finding the string
+          if( ret!=std::string::npos ){
+            Assert( ret+t.size()<=s.size() );
+            children[i] = NodeManager::currentNM()->mkConst( ::CVC4::String( s.substr(0,ret+t.size()) ) );
+            do_splice = true;
+          }else{
+            //if no overlap on last child, can remove
+            if( t.overlap( s )==0 && i==children.size()-1 ){
+              std::vector< Node > spl;
+              spl.insert( spl.end(), children.begin(), children.begin()+i );
+              return NodeManager::currentNM()->mkNode( kind::STRING_STRIDOF, mkConcat( kind::STRING_CONCAT, spl ), node[1], node[2] );
+            }
+          }
+        }
+      }
+      //decrement the start index
+      if( start>0 ){
+        if( s.size()>start ){
+          start = 0;
+        }else{
+          start = start - s.size();
+        }
+      }
+    }else if( !node[2].isConst() ){
+      break;
+    }else{
+      if( children[i]==node[1] && start==0 ){
+        //can remove beyond this
+        do_splice = true;
+      }
+    }
+    if( do_splice ){
+      std::vector< Node > spl;
+      //since we definitely will find the string, we can safely add the length of the constant non-overlapping prefix
+      if( prefixNoOverlap ){
+        Node pl = Rewriter::rewrite( NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, children[0] ) );
+        Assert( pl.isConst() );
+        Assert( node[2].isConst() );
+        int new_start = val2 - pl.getConst<Rational>().getNumerator().toUnsignedInt();
+        if( new_start<0 ){
+          new_start = 0;
+        }
+        spl.insert( spl.end(), children.begin()+1, children.begin()+i+1 );
+        return NodeManager::currentNM()->mkNode( kind::PLUS, pl,
+                 NodeManager::currentNM()->mkNode( kind::STRING_STRIDOF, mkConcat( kind::STRING_CONCAT, spl ), node[1], NodeManager::currentNM()->mkConst( Rational(new_start) ) ) );
+      }else{
+        spl.insert( spl.end(), children.begin(), children.begin()+i+1 );
+        return NodeManager::currentNM()->mkNode( kind::STRING_STRIDOF, mkConcat( kind::STRING_CONCAT, spl ), node[1], node[2] );
+      }
+    }
+  }
+  return node;
+}
+
+Node TheoryStringsRewriter::rewriteReplace( Node node ) {
+  if( node[1]==node[2] ){
+    return node[0];
+  }else{
+    std::vector< Node > children;
+    getConcat( node[0], children );
+    if( children[0].isConst() && node[1].isConst() ){
+      CVC4::String s = children[0].getConst<String>();
+      CVC4::String t = node[1].getConst<String>();
+      std::size_t p = s.find(t);
+      if( p != std::string::npos ) {
+        Node retNode;
+        if( node[2].isConst() ){
+          CVC4::String r = node[2].getConst<String>();
+          CVC4::String ret = s.replace(t, r);
+          retNode = NodeManager::currentNM()->mkConst( ::CVC4::String(ret) );
+        } else {
+          CVC4::String s1 = s.substr(0, (int)p);
+          CVC4::String s3 = s.substr((int)p + (int)t.size());
+          Node ns1 = NodeManager::currentNM()->mkConst( ::CVC4::String(s1) );
+          Node ns3 = NodeManager::currentNM()->mkConst( ::CVC4::String(s3) );
+          retNode = NodeManager::currentNM()->mkNode( kind::STRING_CONCAT, ns1, node[2], ns3 );
+        }
+        if( children.size()>1 ){
+          children[0] = retNode;
+          return mkConcat( kind::STRING_CONCAT, children );
+        }else{
+          return retNode;
+        }
+      }else{
+        //could not find replacement string
+        if( node[0].isConst() ){
+          return node[0];
+        }else{
+          //check for overlap, if none, we can remove the prefix
+          if( s.overlap(t)==0 ){
+            std::vector< Node > spl;
+            spl.insert( spl.end(), children.begin()+1, children.end() );
+            return NodeManager::currentNM()->mkNode( kind::STRING_CONCAT, children[0],
+                        NodeManager::currentNM()->mkNode( kind::STRING_STRREPL, mkConcat( kind::STRING_CONCAT, spl ), node[1], node[2] ) );
+          }
+        }
+      }
+    }
+  }
+  return node;
+}
+
+void TheoryStringsRewriter::getConcat( Node n, std::vector< Node >& c ) {
+  if( n.getKind()==kind::STRING_CONCAT || n.getKind()==kind::REGEXP_CONCAT ){
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      c.push_back( n[i] );
+    }
+  }else{
+    c.push_back( n );
+  }
+}
+
+Node TheoryStringsRewriter::mkConcat( Kind k, std::vector< Node >& c ){
+  Assert( !c.empty() || k==kind::STRING_CONCAT );
+  return c.size()>1 ? NodeManager::currentNM()->mkNode( k, c ) : ( c.size()==1 ? c[0] : NodeManager::currentNM()->mkConst( ::CVC4::String("") ) );
+}
+
+Node TheoryStringsRewriter::splitConstant( Node a, Node b, int& index, bool isRev ) {
+  Assert( a.isConst() && b.isConst() );
+  index = a.getConst<String>().size() <= b.getConst<String>().size() ? 1 : 0;
+  unsigned len_short = index==1 ? a.getConst<String>().size() : b.getConst<String>().size();
+  bool cmp = isRev ? a.getConst<String>().rstrncmp(b.getConst<String>(), len_short): a.getConst<String>().strncmp(b.getConst<String>(), len_short);
+  if( cmp ) {
+    Node l = index==0 ? a : b;
+    if( isRev ){
+      int new_len = l.getConst<String>().size() - len_short;
+      return NodeManager::currentNM()->mkConst(l.getConst<String>().substr( 0, new_len ));
+    }else{
+      return NodeManager::currentNM()->mkConst(l.getConst<String>().substr( len_short ));
+    }
+  }else{
+    //not the same prefix/suffix
+    return Node::null();
+  }
+}
+
+bool TheoryStringsRewriter::canConstantContainConcat( Node c, Node n, int& firstc, int& lastc ) {
+  Assert( c.isConst() );
+  CVC4::String t = c.getConst<String>();
+  Assert( n.getKind()==kind::STRING_CONCAT );
+  //must find constant components in order
+  size_t pos = 0;
+  firstc = -1;
+  lastc = -1;
+  for(unsigned i=0; i<n.getNumChildren(); i++) {
+    if( n[i].isConst() ){
+      firstc = firstc==-1 ? i : firstc;
+      lastc = i;
+      CVC4::String s = n[i].getConst<String>();
+      size_t new_pos = t.find(s,pos);
+      if( new_pos==std::string::npos ) {
+        return false;
+      }else{
+        pos = new_pos + s.size();
+      }
+    }
+  }
+  return true;
+}
+
+bool TheoryStringsRewriter::canConstantContainList( Node c, std::vector< Node >& l, int& firstc, int& lastc ) {
+  Assert( c.isConst() );
+  CVC4::String t = c.getConst<String>();
+  //must find constant components in order
+  size_t pos = 0;
+  firstc = -1;
+  lastc = -1;
+  for(unsigned i=0; i<l.size(); i++) {
+    if( l[i].isConst() ){
+      firstc = firstc==-1 ? i : firstc;
+      lastc = i;
+      CVC4::String s = l[i].getConst<String>();
+      size_t new_pos = t.find(s,pos);
+      if( new_pos==std::string::npos ) {
+        return false;
+      }else{
+        pos = new_pos + s.size();
+      }
+    }
+  }
+  return true;
+}
+
+Node TheoryStringsRewriter::getNextConstantAt( std::vector< Node >& vec, unsigned& start_index, unsigned& end_index, bool isRev ) {
+  while( vec.size()>start_index && !vec[ start_index ].isConst() ){
+    //return Node::null();
+    start_index++;
+  }
+  if( start_index<vec.size() ){    
+    end_index = start_index;
+    return collectConstantStringAt( vec, end_index, isRev );
+  }else{
+    return Node::null();
+  }
+}
+
+Node TheoryStringsRewriter::collectConstantStringAt( std::vector< Node >& vec, unsigned& end_index, bool isRev ) {
+  std::vector< Node > c;
+  while( vec.size()>end_index && vec[ end_index ].isConst() ){
+    c.push_back( vec[ end_index ] );
+    end_index++;
+    //break;
+  }
+  if( !c.empty() ){
+    if( isRev ){
+      std::reverse( c.begin(), c.end() );
+    }
+    Node cc = Rewriter::rewrite( mkConcat( kind::STRING_CONCAT, c ) );
+    Assert( cc.isConst() );
+    return cc;
+  }else{
+    return Node::null();
+  }
+}
+
diff --git a/src/theory/strings/theory_strings_rewriter.h b/src/theory/strings/theory_strings_rewriter.h
new file mode 100644
index 0000000..e166bfa
--- /dev/null
+++ b/src/theory/strings/theory_strings_rewriter.h
@@ -0,0 +1,76 @@
+/*********************                                                        */
+/*! \file theory_strings_rewriter.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tianyi Liang, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__STRINGS__THEORY_STRINGS_REWRITER_H
+#define __CVC4__THEORY__STRINGS__THEORY_STRINGS_REWRITER_H
+
+#include "theory/rewriter.h"
+#include "theory/type_enumerator.h"
+#include "expr/attribute.h"
+#include <climits>
+
+namespace CVC4 {
+namespace theory {
+namespace strings {
+
+class TheoryStringsRewriter {
+private:
+  static Node simpleRegexpConsume( std::vector< Node >& mchildren, std::vector< Node >& children, int dir = -1 );
+  static bool isConstRegExp( TNode t );
+  static bool testConstStringInRegExp( CVC4::String &s, unsigned int index_start, TNode r );
+
+  static Node rewriteConcatString(TNode node);
+
+  static void mergeInto(std::vector<Node> &t, const std::vector<Node> &s);
+  static void shrinkConVec(std::vector<Node> &vec);
+  static Node applyAX( TNode node );
+
+  static Node prerewriteConcatRegExp(TNode node);
+  static Node prerewriteOrRegExp(TNode node);
+  static Node prerewriteAndRegExp(TNode node);
+  static Node rewriteMembership(TNode node);
+
+  static bool hasEpsilonNode(TNode node);
+public:
+  static RewriteResponse postRewrite(TNode node);
+  static RewriteResponse preRewrite(TNode node);
+
+  static inline void init() {}
+  static inline void shutdown() {}
+
+  static Node rewriteContains( Node n );
+  static Node rewriteIndexof( Node n );
+  static Node rewriteReplace( Node n );
+  
+  static void getConcat( Node n, std::vector< Node >& c );
+  static Node mkConcat( Kind k, std::vector< Node >& c );
+  static Node splitConstant( Node a, Node b, int& index, bool isRev );
+  /** return true if constant c can contain the concat n/list l in order 
+      firstc/lastc store which indices were used */
+  static bool canConstantContainConcat( Node c, Node n, int& firstc, int& lastc );
+  static bool canConstantContainList( Node c, std::vector< Node >& l, int& firstc, int& lastc );
+  static Node getNextConstantAt( std::vector< Node >& vec, unsigned& start_index, unsigned& end_index, bool isRev );
+  static Node collectConstantStringAt( std::vector< Node >& vec, unsigned& end_index, bool isRev );
+};/* class TheoryStringsRewriter */
+
+}/* CVC4::theory::strings namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__STRINGS__THEORY_STRINGS_REWRITER_H */
diff --git a/src/theory/strings/theory_strings_type_rules.h b/src/theory/strings/theory_strings_type_rules.h
new file mode 100644
index 0000000..eae9935
--- /dev/null
+++ b/src/theory/strings/theory_strings_type_rules.h
@@ -0,0 +1,492 @@
+/*********************                                                        */
+/*! \file theory_strings_type_rules.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tianyi Liang, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Typing and cardinality rules for the theory of arrays
+ **
+ ** Typing and cardinality rules for the theory of arrays.
+ **/
+
+#include "cvc4_private.h"
+#include "options/strings_options.h"
+
+#ifndef __CVC4__THEORY__STRINGS__THEORY_STRINGS_TYPE_RULES_H
+#define __CVC4__THEORY__STRINGS__THEORY_STRINGS_TYPE_RULES_H
+
+namespace CVC4 {
+namespace theory {
+namespace strings {
+
+class StringConstantTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    return nodeManager->stringType();
+  }
+};
+
+class StringConcatTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ){
+      TNode::iterator it = n.begin();
+      TNode::iterator it_end = n.end();
+      int size = 0;
+      for (; it != it_end; ++ it) {
+       TypeNode t = (*it).getType(check);
+       if (!t.isString()) {
+         throw TypeCheckingExceptionPrivate(n, "expecting string terms in string concat");
+       }
+       ++size;
+      }
+      if(size < 2) {
+        throw TypeCheckingExceptionPrivate(n, "expecting at least 2 terms in string concat");
+      }
+    }
+    return nodeManager->stringType();
+  }
+};
+
+class StringLengthTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TypeNode t = n[0].getType(check);
+      if (!t.isString()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting string terms in string length");
+      }
+    }
+    return nodeManager->integerType();
+  }
+};
+
+class StringSubstrTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TypeNode t = n[0].getType(check);
+      if (!t.isString()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting a string term in substr");
+      }
+      t = n[1].getType(check);
+      if (!t.isInteger()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting a start int term in substr");
+      }
+      t = n[2].getType(check);
+      if (!t.isInteger()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting a length int term in substr");
+      }
+    }
+    return nodeManager->stringType();
+  }
+};
+
+class StringContainTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TypeNode t = n[0].getType(check);
+      if (!t.isString()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting an orginal string term in string contain");
+      }
+      t = n[1].getType(check);
+      if (!t.isString()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting a target string term in string contain");
+      }
+    }
+    return nodeManager->booleanType();
+  }
+};
+
+class StringCharAtTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TypeNode t = n[0].getType(check);
+      if (!t.isString()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting a string term in string char at 0");
+      }
+      t = n[1].getType(check);
+      if (!t.isInteger()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting an integer term in string char at 1");
+      }
+    }
+    return nodeManager->stringType();
+  }
+};
+
+class StringIndexOfTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TypeNode t = n[0].getType(check);
+      if (!t.isString()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting a string term in string indexof 0");
+      }
+      t = n[1].getType(check);
+      if (!t.isString()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting a string term in string indexof 1");
+      }
+      t = n[2].getType(check);
+      if (!t.isInteger()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting an integer term in string indexof 2");
+      }
+    }
+    return nodeManager->integerType();
+  }
+};
+
+class StringReplaceTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TypeNode t = n[0].getType(check);
+      if (!t.isString()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting a string term in string replace 0");
+      }
+      t = n[1].getType(check);
+      if (!t.isString()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting a string term in string replace 1");
+      }
+      t = n[2].getType(check);
+      if (!t.isString()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting a string term in string replace 2");
+      }
+    }
+    return nodeManager->stringType();
+  }
+};
+
+class StringPrefixOfTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TypeNode t = n[0].getType(check);
+      if (!t.isString()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting a string term in string prefixof 0");
+      }
+      t = n[1].getType(check);
+      if (!t.isString()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting a string term in string prefixof 1");
+      }
+    }
+    return nodeManager->booleanType();
+  }
+};
+
+class StringSuffixOfTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TypeNode t = n[0].getType(check);
+      if (!t.isString()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting a string term in string suffixof 0");
+      }
+      t = n[1].getType(check);
+      if (!t.isString()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting a string term in string suffixof 1");
+      }
+    }
+    return nodeManager->booleanType();
+  }
+};
+
+class StringIntToStrTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TypeNode t = n[0].getType(check);
+      if (!t.isInteger()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting an integer term in int to string 0");
+      }
+    }
+    return nodeManager->stringType();
+  }
+};
+
+class StringStrToIntTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TypeNode t = n[0].getType(check);
+      if (!t.isString()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting a string term in string to int 0");
+      }
+    }
+    return nodeManager->integerType();
+  }
+};
+
+class RegExpConstantTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    return nodeManager->regExpType();
+  }
+};
+
+class RegExpConcatTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TNode::iterator it = n.begin();
+      TNode::iterator it_end = n.end();
+      int size = 0;
+      for (; it != it_end; ++ it) {
+         TypeNode t = (*it).getType(check);
+         if (!t.isRegExp()) {
+           throw TypeCheckingExceptionPrivate(n, "expecting regexp terms in regexp concat");
+         }
+         ++size;
+      }
+      if(size < 2) {
+         throw TypeCheckingExceptionPrivate(n, "expecting at least 2 terms in regexp concat");
+      }
+    }
+    return nodeManager->regExpType();
+  }
+};
+
+class RegExpUnionTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TNode::iterator it = n.begin();
+      TNode::iterator it_end = n.end();
+      for (; it != it_end; ++ it) {
+         TypeNode t = (*it).getType(check);
+         if (!t.isRegExp()) {
+           throw TypeCheckingExceptionPrivate(n, "expecting regexp terms");
+         }
+      }
+    }
+    return nodeManager->regExpType();
+  }
+};
+
+class RegExpInterTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TNode::iterator it = n.begin();
+      TNode::iterator it_end = n.end();
+      for (; it != it_end; ++ it) {
+       TypeNode t = (*it).getType(check);
+       if (!t.isRegExp()) {
+         throw TypeCheckingExceptionPrivate(n, "expecting regexp terms");
+       }
+      }
+    }
+    return nodeManager->regExpType();
+  }
+};
+
+class RegExpStarTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TypeNode t = n[0].getType(check);
+      if (!t.isRegExp()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting regexp terms");
+      }
+    }
+    return nodeManager->regExpType();
+  }
+};
+
+class RegExpPlusTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TypeNode t = n[0].getType(check);
+      if (!t.isRegExp()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting regexp terms");
+      }
+    }
+    return nodeManager->regExpType();
+  }
+};
+
+class RegExpOptTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TypeNode t = n[0].getType(check);
+      if (!t.isRegExp()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting regexp terms");
+      }
+    }
+    return nodeManager->regExpType();
+  }
+};
+
+class RegExpRangeTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TNode::iterator it = n.begin();
+      unsigned char ch[2];
+
+      for(int i=0; i<2; ++i) {
+        TypeNode t = (*it).getType(check);
+        if (!t.isString()) {
+          throw TypeCheckingExceptionPrivate(n, "expecting a string term in regexp range");
+        }
+        if( (*it).getKind() != kind::CONST_STRING ) {
+          throw TypeCheckingExceptionPrivate(n, "expecting a constant string term in regexp range");
+        }
+        if( (*it).getConst<String>().size() != 1 ) {
+          throw TypeCheckingExceptionPrivate(n, "expecting a single constant string term in regexp range");
+        }
+        ch[i] = (*it).getConst<String>().getFirstChar();
+        ++it;
+      }
+      if(ch[0] > ch[1]) {
+        throw TypeCheckingExceptionPrivate(n, "expecting the first constant is less or equal to the second one in regexp range");
+      }
+      if(options::stdASCII() && ch[1] > '\x7f') {
+        throw TypeCheckingExceptionPrivate(n, "expecting standard ASCII characters in regexp range, or please set the option strings-std-ascii to be false");
+      }
+    }
+    return nodeManager->regExpType();
+  }
+};
+
+class RegExpLoopTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TNode::iterator it = n.begin();
+      TNode::iterator it_end = n.end();
+      TypeNode t = (*it).getType(check);
+      if (!t.isRegExp()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting a regexp term in regexp loop 1");
+      }
+      ++it; t = (*it).getType(check);
+      if (!t.isInteger()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting an integer term in regexp loop 2");
+      }
+      //if(!(*it).isConst()) {
+        //throw TypeCheckingExceptionPrivate(n, "expecting an const integer term in regexp loop 2");
+      //}
+      ++it;
+      if(it != it_end) {
+        t = (*it).getType(check);
+        if (!t.isInteger()) {
+          throw TypeCheckingExceptionPrivate(n, "expecting an integer term in regexp loop 3");
+        }
+        //if(!(*it).isConst()) {
+          //throw TypeCheckingExceptionPrivate(n, "expecting an const integer term in regexp loop 3");
+        //}
+        //if(++it != it_end) {
+        //  throw TypeCheckingExceptionPrivate(n, "too many regexp");
+        //}
+      }
+    }
+    return nodeManager->regExpType();
+  }
+};
+
+class StringToRegExpTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TypeNode t = n[0].getType(check);
+      if (!t.isString()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting string terms");
+      }
+      //if( (*it).getKind() != kind::CONST_STRING ) {
+      //  throw TypeCheckingExceptionPrivate(n, "expecting constant string terms");
+      //}
+    }
+    return nodeManager->regExpType();
+  }
+};
+
+class StringInRegExpTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TNode::iterator it = n.begin();
+      TypeNode t = (*it).getType(check);
+      if (!t.isString()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting string terms");
+      }
+      ++it;
+      t = (*it).getType(check);
+      if (!t.isRegExp()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting regexp terms");
+      }
+    }
+    return nodeManager->booleanType();
+  }
+};
+
+class EmptyRegExpTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+
+    Assert(n.getKind() == kind::REGEXP_EMPTY);
+    return nodeManager->regExpType();
+  }
+};
+
+class SigmaRegExpTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+
+    Assert(n.getKind() == kind::REGEXP_SIGMA);
+    return nodeManager->regExpType();
+  }
+};
+
+class RegExpRVTypeRule {
+public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+      throw (TypeCheckingExceptionPrivate, AssertionException) {
+    if( check ) {
+      TypeNode t = n[0].getType(check);
+      if (!t.isInteger()) {
+        throw TypeCheckingExceptionPrivate(n, "expecting an integer term in RV");
+      }
+    }
+    return nodeManager->regExpType();
+  }
+};
+
+
+}/* CVC4::theory::strings namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__STRINGS__THEORY_STRINGS_TYPE_RULES_H */
diff --git a/src/theory/strings/type_enumerator.h b/src/theory/strings/type_enumerator.h
new file mode 100644
index 0000000..1fe3d79
--- /dev/null
+++ b/src/theory/strings/type_enumerator.h
@@ -0,0 +1,130 @@
+/*********************                                                        */
+/*! \file type_enumerator.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tianyi Liang, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Enumerators for strings
+ **
+ ** Enumerators for strings.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__STRINGS__TYPE_ENUMERATOR_H
+#define __CVC4__THEORY__STRINGS__TYPE_ENUMERATOR_H
+
+#include <sstream>
+
+#include "util/regexp.h"
+#include "theory/type_enumerator.h"
+#include "expr/type_node.h"
+#include "expr/kind.h"
+
+namespace CVC4 {
+namespace theory {
+namespace strings {
+
+class StringEnumerator : public TypeEnumeratorBase<StringEnumerator> {
+  std::vector< unsigned > d_data;
+  unsigned d_cardinality;
+  Node d_curr;
+  void mkCurr() {
+    //make constant from d_data
+    d_curr = NodeManager::currentNM()->mkConst( ::CVC4::String( d_data ) );
+  }
+public:
+
+  StringEnumerator(TypeNode type, TypeEnumeratorProperties * tep = NULL) throw(AssertionException) :
+    TypeEnumeratorBase<StringEnumerator>(type) {
+    Assert(type.getKind() == kind::TYPE_CONSTANT &&
+           type.getConst<TypeConstant>() == STRING_TYPE);
+    d_cardinality = 256;
+    mkCurr();
+  }
+  Node operator*() throw() {
+    return d_curr;
+  }
+  StringEnumerator& operator++() throw() {
+  bool changed = false;
+  do{
+    for(unsigned i=0; i<d_data.size(); ++i) {
+      if( d_data[i] + 1 < d_cardinality ) {
+        ++d_data[i]; changed = true;
+        break;
+      } else {
+        d_data[i] = 0;
+      }
+    }
+
+    if(!changed) {
+      d_data.push_back( 0 );
+    }
+  }while(!changed);
+
+  mkCurr();
+    return *this;
+  }
+
+  bool isFinished() throw() {
+    return d_curr.isNull();
+  }
+
+};/* class StringEnumerator */
+
+
+class StringEnumeratorLength {
+private:
+  unsigned d_cardinality;
+  std::vector< unsigned > d_data;
+  Node d_curr;
+  void mkCurr() {
+    //make constant from d_data
+    d_curr = NodeManager::currentNM()->mkConst( ::CVC4::String( d_data ) );
+  }
+public:
+  StringEnumeratorLength(unsigned length, unsigned card = 256) : d_cardinality(card) {
+    for( unsigned i=0; i<length; i++ ){
+      d_data.push_back( 0 );
+    }
+    mkCurr();
+  }
+
+  Node operator*() throw() {
+    return d_curr;
+  }
+
+  StringEnumeratorLength& operator++() throw() {
+    bool changed = false;
+    for(unsigned i=0; i<d_data.size(); ++i) {
+      if( d_data[i] + 1 < d_cardinality ) {
+        ++d_data[i]; changed = true;
+        break;
+      } else {
+        d_data[i] = 0;
+      }
+    }
+
+    if(!changed) {
+      d_curr = Node::null();
+    }else{
+      mkCurr();
+    }
+    return *this;
+  }
+
+  bool isFinished() throw() {
+    return d_curr.isNull();
+  }
+};
+
+}/* CVC4::theory::strings namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__STRINGS__TYPE_ENUMERATOR_H */
diff --git a/src/theory/substitutions.cpp b/src/theory/substitutions.cpp
new file mode 100644
index 0000000..7dbfb26
--- /dev/null
+++ b/src/theory/substitutions.cpp
@@ -0,0 +1,267 @@
+/*********************                                                        */
+/*! \file substitutions.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Clark Barrett, Dejan Jovanovic, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A substitution mapping for theory simplification
+ **
+ ** A substitution mapping for theory simplification.
+ **/
+
+#include "theory/substitutions.h"
+#include "theory/rewriter.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+
+struct substitution_stack_element {
+  TNode node;
+  bool children_added;
+  substitution_stack_element(TNode node)
+  : node(node), children_added(false) {}
+};/* struct substitution_stack_element */
+
+Node SubstitutionMap::internalSubstitute(TNode t, NodeCache& cache) {
+
+  Debug("substitution::internal") << "SubstitutionMap::internalSubstitute(" << t << ")" << endl;
+
+  if (d_substitutions.empty()) {
+    return t;
+  }
+
+  // Do a topological sort of the subexpressions and substitute them
+  vector<substitution_stack_element> toVisit;
+  toVisit.push_back((TNode) t);
+
+  while (!toVisit.empty())
+  {
+    // The current node we are processing
+    substitution_stack_element& stackHead = toVisit.back();
+    TNode current = stackHead.node;
+
+    Debug("substitution::internal") << "SubstitutionMap::internalSubstitute(" << t << "): processing " << current << endl;
+
+    // If node already in the cache we're done, pop from the stack
+    NodeCache::iterator find = cache.find(current);
+    if (find != cache.end()) {
+      toVisit.pop_back();
+      continue;
+    }
+
+    if (!d_substituteUnderQuantifiers &&
+        (current.getKind() == kind::FORALL || current.getKind() == kind::EXISTS)) {
+      Debug("substitution::internal") << "--not substituting under quantifier" << endl;
+      cache[current] = current;
+      toVisit.pop_back();
+      continue;
+    }
+
+    NodeMap::iterator find2 = d_substitutions.find(current);
+    if (find2 != d_substitutions.end()) {
+      Node rhs = (*find2).second;
+      Assert(rhs != current);
+      internalSubstitute(rhs, cache);
+      d_substitutions[current] = cache[rhs];
+      cache[current] = cache[rhs];
+      toVisit.pop_back();
+      continue;
+    }
+
+    // Not yet substituted, so process
+    if (stackHead.children_added) {
+      // Children have been processed, so substitute
+      NodeBuilder<> builder(current.getKind());
+      if (current.getMetaKind() == kind::metakind::PARAMETERIZED) {
+        builder << Node(cache[current.getOperator()]);
+      }
+      for (unsigned i = 0; i < current.getNumChildren(); ++ i) {
+        Assert(cache.find(current[i]) != cache.end());
+        builder << Node(cache[current[i]]);
+      }
+      // Mark the substitution and continue
+      Node result = builder;
+      if (result != current) {
+        find = cache.find(result);
+        if (find != cache.end()) {
+          result = find->second;
+        }
+        else {
+          find2 = d_substitutions.find(result);
+          if (find2 != d_substitutions.end()) {
+            Node rhs = (*find2).second;
+            Assert(rhs != result);
+            internalSubstitute(rhs, cache);
+            d_substitutions[result] = cache[rhs];
+            cache[result] = cache[rhs];
+            result = cache[rhs];
+          }
+        }
+      }
+      Debug("substitution::internal") << "SubstitutionMap::internalSubstitute(" << t << "): setting " << current << " -> " << result << endl;
+      cache[current] = result;
+      toVisit.pop_back();
+    } else {
+      // Mark that we have added the children if any
+      if (current.getNumChildren() > 0 || current.getMetaKind() == kind::metakind::PARAMETERIZED) {
+        stackHead.children_added = true;
+        // We need to add the operator, if any
+        if(current.getMetaKind() == kind::metakind::PARAMETERIZED) {
+          TNode opNode = current.getOperator();
+          NodeCache::iterator opFind = cache.find(opNode);
+          if (opFind == cache.end()) {
+            toVisit.push_back(opNode);
+          }
+        }
+        // We need to add the children
+        for(TNode::iterator child_it = current.begin(); child_it != current.end(); ++ child_it) {
+          TNode childNode = *child_it;
+          NodeCache::iterator childFind = cache.find(childNode);
+          if (childFind == cache.end()) {
+            toVisit.push_back(childNode);
+          }
+        }
+      } else {
+        // No children, so we're done
+        Debug("substitution::internal") << "SubstitutionMap::internalSubstitute(" << t << "): setting " << current << " -> " << current << endl;
+        cache[current] = current;
+        toVisit.pop_back();
+      }
+    }
+  }
+
+  // Return the substituted version
+  return cache[t];
+}/* SubstitutionMap::internalSubstitute() */
+
+
+void SubstitutionMap::simplifyRHS(const SubstitutionMap& subMap)
+{
+  // Put the new substitutions into the old ones
+  NodeMap::iterator it = d_substitutions.begin();
+  NodeMap::iterator it_end = d_substitutions.end();
+  for(; it != it_end; ++ it) {
+    d_substitutions[(*it).first] = subMap.apply((*it).second);
+  }  
+}
+
+
+void SubstitutionMap::simplifyRHS(TNode x, TNode t) {
+  // Temporary substitution cache
+  NodeCache tempCache;
+  tempCache[x] = t;
+
+  // Put the new substitution into the old ones
+  NodeMap::iterator it = d_substitutions.begin();
+  NodeMap::iterator it_end = d_substitutions.end();
+  for(; it != it_end; ++ it) {
+    d_substitutions[(*it).first] = internalSubstitute((*it).second, tempCache);
+  }  
+  // it = d_substitutionsLazy.begin();
+  // it_end = d_substitutionsLazy.end();
+  // for(; it != it_end; ++ it) {
+  //   d_substitutionsLazy[(*it).first] = internalSubstitute((*it).second, tempCache);
+  // }  
+}
+
+
+void SubstitutionMap::addSubstitution(TNode x, TNode t, bool invalidateCache)
+{
+  Debug("substitution") << "SubstitutionMap::addSubstitution(" << x << ", " << t << ")" << endl;
+  Assert(d_substitutions.find(x) == d_substitutions.end());
+
+  // this causes a later assert-fail (the rhs != current one, above) anyway
+  // putting it here is easier to diagnose
+  Assert(x != t, "cannot substitute a term for itself");
+
+  d_substitutions[x] = t;
+
+  // Also invalidate the cache if necessary
+  if (invalidateCache) {
+    d_cacheInvalidated = true;
+  }
+  else {
+    d_substitutionCache[x] = d_substitutions[x];
+  }
+}
+
+
+void SubstitutionMap::addSubstitutions(SubstitutionMap& subMap, bool invalidateCache)
+{
+  SubstitutionMap::NodeMap::const_iterator it = subMap.begin();
+  SubstitutionMap::NodeMap::const_iterator it_end = subMap.end();
+  for (; it != it_end; ++ it) {
+    Assert(d_substitutions.find((*it).first) == d_substitutions.end());
+    d_substitutions[(*it).first] = (*it).second;
+    if (!invalidateCache) {
+      d_substitutionCache[(*it).first] = d_substitutions[(*it).first];
+    }
+  }
+  if (invalidateCache) {
+    d_cacheInvalidated = true;
+  }
+}
+
+
+static bool check(TNode node, const SubstitutionMap::NodeMap& substitutions) CVC4_UNUSED;
+static bool check(TNode node, const SubstitutionMap::NodeMap& substitutions) {
+  SubstitutionMap::NodeMap::const_iterator it = substitutions.begin();
+  SubstitutionMap::NodeMap::const_iterator it_end = substitutions.end();
+  Debug("substitution") << "checking " << node << endl;
+  for (; it != it_end; ++ it) {
+    Debug("substitution") << "-- hasSubterm( " << (*it).first << " ) ?" << endl;
+    if (node.hasSubterm((*it).first)) {
+      Debug("substitution") << "-- FAIL" << endl;
+      return false;
+    }
+  }
+  Debug("substitution") << "-- SUCCEED" << endl;
+  return true;
+}
+
+Node SubstitutionMap::apply(TNode t) {
+
+  Debug("substitution") << "SubstitutionMap::apply(" << t << ")" << endl;
+
+  // Setup the cache
+  if (d_cacheInvalidated) {
+    d_substitutionCache.clear();
+    d_cacheInvalidated = false;
+    Debug("substitution") << "-- reset the cache" << endl;
+  }
+
+  // Perform the substitution
+  Node result = internalSubstitute(t, d_substitutionCache);
+  Debug("substitution") << "SubstitutionMap::apply(" << t << ") => " << result << endl;
+
+  //  Assert(check(result, d_substitutions));
+
+  return result;
+}
+
+void SubstitutionMap::print(ostream& out) const {
+  NodeMap::const_iterator it = d_substitutions.begin();
+  NodeMap::const_iterator it_end = d_substitutions.end();
+  for (; it != it_end; ++ it) {
+    out << (*it).first << " -> " << (*it).second << endl;
+  }
+}
+
+void SubstitutionMap::debugPrint() const {
+  print(Message.getStream());
+}
+
+}/* CVC4::theory namespace */
+
+std::ostream& operator<<(std::ostream& out, const theory::SubstitutionMap::iterator& i) {
+  return out << "[CDMap-iterator]";
+}
+
+}/* CVC4 namespace */
diff --git a/src/theory/substitutions.h b/src/theory/substitutions.h
new file mode 100644
index 0000000..019fbd1
--- /dev/null
+++ b/src/theory/substitutions.h
@@ -0,0 +1,202 @@
+/*********************                                                        */
+/*! \file substitutions.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Clark Barrett
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A substitution mapping for theory simplification
+ **
+ ** A substitution mapping for theory simplification.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__SUBSTITUTIONS_H
+#define __CVC4__THEORY__SUBSTITUTIONS_H
+
+#include <utility>
+#include <vector>
+#include <algorithm>
+
+#include "expr/node.h"
+#include "context/context.h"
+#include "context/cdo.h"
+#include "context/cdhashmap.h"
+#include "util/hash.h"
+
+namespace CVC4 {
+namespace theory {
+
+/**
+ * The type for the Substitutions mapping output by
+ * Theory::simplify(), TheoryEngine::simplify(), and
+ * Valuation::simplify().  This is in its own header to
+ * avoid circular dependences between those three.
+ *
+ * This map is context-dependent.
+ */
+class SubstitutionMap {
+
+public:
+
+  typedef context::CDHashMap<Node, Node, NodeHashFunction> NodeMap;
+
+  typedef NodeMap::iterator iterator;
+  typedef NodeMap::const_iterator const_iterator;
+
+private:
+
+  typedef std::hash_map<Node, Node, NodeHashFunction> NodeCache;
+
+  /** The variables, in order of addition */
+  NodeMap d_substitutions;
+
+  /** Cache of the already performed substitutions */
+  NodeCache d_substitutionCache;
+
+  /** Whether or not to substitute under quantifiers */
+  bool d_substituteUnderQuantifiers;
+
+  /** Has the cache been invalidated? */
+  bool d_cacheInvalidated;
+
+  /** Whether to keep substitutions in solved form */
+  bool d_solvedForm;
+
+  /** Internal method that performs substitution */
+  Node internalSubstitute(TNode t, NodeCache& cache);
+
+  /** Helper class to invalidate cache on user pop */
+  class CacheInvalidator : public context::ContextNotifyObj {
+    bool& d_cacheInvalidated;
+  protected:
+    void contextNotifyPop() {
+      d_cacheInvalidated = true;
+    }
+  public:
+    CacheInvalidator(context::Context* context, bool& cacheInvalidated) :
+      context::ContextNotifyObj(context),
+      d_cacheInvalidated(cacheInvalidated) {
+    }
+
+  };/* class SubstitutionMap::CacheInvalidator */
+
+  /**
+   * This object is notified on user pop and marks the SubstitutionMap's
+   * cache as invalidated.
+   */
+  CacheInvalidator d_cacheInvalidator;
+
+public:
+
+  SubstitutionMap(context::Context* context, bool substituteUnderQuantifiers = true, bool solvedForm = false) :
+    d_substitutions(context),
+    d_substitutionCache(),
+    d_substituteUnderQuantifiers(substituteUnderQuantifiers),
+    d_cacheInvalidated(false),
+    d_solvedForm(solvedForm),
+    d_cacheInvalidator(context, d_cacheInvalidated)
+    {
+  }
+
+  /**
+   * Adds a substitution from x to t.
+   */
+  void addSubstitution(TNode x, TNode t, bool invalidateCache = true);
+
+  /**
+   * Merge subMap into current set of substitutions
+   */
+  void addSubstitutions(SubstitutionMap& subMap, bool invalidateCache = true);
+
+  /**
+   * Returns true iff x is in the substitution map
+   */
+  bool hasSubstitution(TNode x) const {
+    return d_substitutions.find(x) != d_substitutions.end();
+  }
+
+  /**
+   * Returns the substitution mapping that was given for x via
+   * addSubstitution().  Note that the returned value might itself
+   * be in the map; for the actual substitution that would be
+   * performed for x, use .apply(x).  This getSubstitution() function
+   * is mainly intended for constructing assertions about what has
+   * already been put in the map.
+   */
+  TNode getSubstitution(TNode x) const {
+    AssertArgument(hasSubstitution(x), x, "element not in this substitution map");
+    return (*d_substitutions.find(x)).second;
+  }
+
+  /**
+   * Apply the substitutions to the node.
+   */
+  Node apply(TNode t);
+
+  /**
+   * Apply the substitutions to the node.
+   */
+  Node apply(TNode t) const {
+    return const_cast<SubstitutionMap*>(this)->apply(t);
+  }
+
+  iterator begin() {
+    return d_substitutions.begin();
+  }
+
+  iterator end() {
+    return d_substitutions.end();
+  }
+
+  const_iterator begin() const {
+    return d_substitutions.begin();
+  }
+
+  const_iterator end() const {
+    return d_substitutions.end();
+  }
+
+  bool empty() const {
+    return d_substitutions.empty();
+  }
+
+  // NOTE [MGD]: removed clear() and swap() from the interface
+  // when this data structure became context-dependent
+  // because they weren't used---and it's not clear how they
+  // should best interact with cache invalidation on context
+  // pops.
+
+  // Simplify right-hand sides of current map using the given substitutions
+  void simplifyRHS(const SubstitutionMap& subMap);
+
+  // Simplify right-hand sides of current map with lhs -> rhs
+  void simplifyRHS(TNode lhs, TNode rhs);
+
+  bool isSolvedForm() const { return d_solvedForm; }
+
+  /**
+   * Print to the output stream
+   */
+  void print(std::ostream& out) const;
+  void debugPrint() const;
+
+};/* class SubstitutionMap */
+
+inline std::ostream& operator << (std::ostream& out, const SubstitutionMap& subst) {
+  subst.print(out);
+  return out;
+}
+
+}/* CVC4::theory namespace */
+
+std::ostream& operator<<(std::ostream& out, const theory::SubstitutionMap::iterator& i);
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__SUBSTITUTIONS_H */
diff --git a/src/theory/term_registration_visitor.cpp b/src/theory/term_registration_visitor.cpp
new file mode 100644
index 0000000..e758002
--- /dev/null
+++ b/src/theory/term_registration_visitor.cpp
@@ -0,0 +1,333 @@
+/*********************                                                        */
+/*! \file term_registration_visitor.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Andrew Reynolds, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/term_registration_visitor.h"
+
+#include "options/quantifiers_options.h"
+#include "theory/theory_engine.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace theory;
+
+std::string PreRegisterVisitor::toString() const {
+  std::stringstream ss;
+  TNodeToTheorySetMap::const_iterator it = d_visited.begin();
+  for (; it != d_visited.end(); ++ it) {
+    ss << (*it).first << ": " << Theory::setToString((*it).second) << std::endl;
+  }
+  return ss.str();
+}
+
+bool PreRegisterVisitor::alreadyVisited(TNode current, TNode parent) {
+
+  Debug("register::internal") << "PreRegisterVisitor::alreadyVisited(" << current << "," << parent << ")" << std::endl;
+
+  if( ( parent.getKind() == kind::FORALL ||
+        parent.getKind() == kind::EXISTS ||
+        parent.getKind() == kind::REWRITE_RULE ||
+        parent.getKind() == kind::SEP_STAR ||
+        parent.getKind() == kind::SEP_WAND ||
+        ( parent.getKind() == kind::SEP_LABEL && current.getType().isBoolean() )
+        // parent.getKind() == kind::CARDINALITY_CONSTRAINT
+      ) &&
+      current != parent ) {
+    Debug("register::internal") << "quantifier:true" << std::endl;
+    return true;
+  }
+
+  TheoryId currentTheoryId = Theory::theoryOf(current);
+  TheoryId parentTheoryId = Theory::theoryOf(parent);
+
+  d_theories = Theory::setInsert(currentTheoryId, d_theories);
+  d_theories = Theory::setInsert(parentTheoryId, d_theories);
+
+  // Should we use the theory of the type
+  bool useType = false;
+  TheoryId typeTheoryId = THEORY_LAST;
+
+  if (current != parent) {
+    if (currentTheoryId != parentTheoryId) {
+      // If enclosed by different theories it's shared -- in read(a, f(a)) f(a) should be shared with integers
+      TypeNode type = current.getType();
+      useType = true;
+      typeTheoryId = Theory::theoryOf(type);
+    } else {
+      TypeNode type = current.getType();
+      typeTheoryId = Theory::theoryOf(type);
+      if (typeTheoryId != currentTheoryId) {
+        if (type.isInterpretedFinite()) {
+          useType = true;
+        }
+      }
+    }
+  }
+  
+  // Get the theories that have already visited this node
+  TNodeToTheorySetMap::iterator find = d_visited.find(current);
+  if (find == d_visited.end()) {
+    if (useType) {
+      d_theories = Theory::setInsert(typeTheoryId, d_theories);
+    }
+    return false;
+  }
+
+  Theory::Set visitedTheories = (*find).second;
+  if (Theory::setContains(currentTheoryId, visitedTheories)) {
+    // The current theory has already visited it, so now it depends on the parent and the type
+    if (Theory::setContains(parentTheoryId, visitedTheories)) {
+      if (useType) {
+        TheoryId typeTheoryId = Theory::theoryOf(current.getType());
+        d_theories = Theory::setInsert(typeTheoryId, d_theories);
+        return Theory::setContains(typeTheoryId, visitedTheories);
+      } else {
+        return true;
+      }
+    } else {
+      return false;
+    }
+  } else {
+    return false;
+  }
+}
+
+void PreRegisterVisitor::visit(TNode current, TNode parent) {
+
+  Debug("register") << "PreRegisterVisitor::visit(" << current << "," << parent << ")" << std::endl;
+  if (Debug.isOn("register::internal")) {
+    Debug("register::internal") << toString() << std::endl;
+  }
+
+  // Get the theories of the terms
+  TheoryId currentTheoryId = Theory::theoryOf(current);
+  TheoryId parentTheoryId  = Theory::theoryOf(parent);
+
+  // Should we use the theory of the type
+  bool useType = false;
+  TheoryId typeTheoryId = THEORY_LAST;
+
+  if (current != parent) {
+    if (currentTheoryId != parentTheoryId) {
+      // If enclosed by different theories it's shared -- in read(a, f(a)) f(a) should be shared with integers
+      TypeNode type = current.getType();
+      useType = true;
+      typeTheoryId = Theory::theoryOf(type);
+    } else {
+      TypeNode type = current.getType();
+      typeTheoryId = Theory::theoryOf(type);
+      if (typeTheoryId != currentTheoryId) {
+        if (type.isInterpretedFinite()) {
+          useType = true;
+        }
+      }
+    }
+  }
+  
+  Theory::Set visitedTheories = d_visited[current];
+  Debug("register::internal") << "PreRegisterVisitor::visit(" << current << "," << parent << "): previously registered with " << Theory::setToString(visitedTheories) << std::endl;
+  if (!Theory::setContains(currentTheoryId, visitedTheories)) {
+    visitedTheories = Theory::setInsert(currentTheoryId, visitedTheories);
+    d_visited[current] = visitedTheories;
+    Theory* th = d_engine->theoryOf(currentTheoryId);
+    th->preRegisterTerm(current);
+    Debug("register::internal") << "PreRegisterVisitor::visit(" << current << "," << parent << "): adding " << currentTheoryId << std::endl;
+  }
+  if (!Theory::setContains(parentTheoryId, visitedTheories)) {
+    visitedTheories = Theory::setInsert(parentTheoryId, visitedTheories);
+    d_visited[current] = visitedTheories;
+    Theory* th = d_engine->theoryOf(parentTheoryId);
+    th->preRegisterTerm(current);
+    Debug("register::internal") << "PreRegisterVisitor::visit(" << current << "," << parent << "): adding " << parentTheoryId << std::endl;
+  }
+  if (useType) {
+    if (!Theory::setContains(typeTheoryId, visitedTheories)) {
+      visitedTheories = Theory::setInsert(typeTheoryId, visitedTheories);
+      d_visited[current] = visitedTheories;
+      Theory* th = d_engine->theoryOf(typeTheoryId);
+      th->preRegisterTerm(current);
+      Debug("register::internal") << "PreRegisterVisitor::visit(" << current << "," << parent << "): adding " << parentTheoryId << std::endl;
+    }
+  }
+  Debug("register::internal") << "PreRegisterVisitor::visit(" << current << "," << parent << "): now registered with " << Theory::setToString(visitedTheories) << std::endl;
+
+  Assert(d_visited.find(current) != d_visited.end());
+  Assert(alreadyVisited(current, parent));
+}
+
+std::string SharedTermsVisitor::toString() const {
+  std::stringstream ss;
+  TNodeVisitedMap::const_iterator it = d_visited.begin();
+  for (; it != d_visited.end(); ++ it) {
+    ss << (*it).first << ": " << Theory::setToString((*it).second) << std::endl;
+  }
+  return ss.str();
+}
+
+bool SharedTermsVisitor::alreadyVisited(TNode current, TNode parent) const {
+
+  Debug("register::internal") << "SharedTermsVisitor::alreadyVisited(" << current << "," << parent << ")" << std::endl;
+
+  if( ( parent.getKind() == kind::FORALL ||
+        parent.getKind() == kind::EXISTS ||
+        parent.getKind() == kind::REWRITE_RULE ||
+        parent.getKind() == kind::SEP_STAR ||
+        parent.getKind() == kind::SEP_WAND ||
+        ( parent.getKind() == kind::SEP_LABEL && current.getType().isBoolean() )
+        // parent.getKind() == kind::CARDINALITY_CONSTRAINT
+      ) &&
+      current != parent ) {
+    Debug("register::internal") << "quantifier:true" << std::endl;
+    return true;
+  }
+  TNodeVisitedMap::const_iterator find = d_visited.find(current);
+
+  // If node is not visited at all, just return false
+  if (find == d_visited.end()) {
+    Debug("register::internal") << "1:false" << std::endl;
+    return false;
+  }
+
+  Theory::Set theories = (*find).second;
+
+  TheoryId currentTheoryId = Theory::theoryOf(current);
+  TheoryId parentTheoryId  = Theory::theoryOf(parent);
+
+  // Should we use the theory of the type
+  bool useType = false;
+  TheoryId typeTheoryId = THEORY_LAST;
+
+  if (current != parent) {
+    if (currentTheoryId != parentTheoryId) {
+      // If enclosed by different theories it's shared -- in read(a, f(a)) f(a) should be shared with integers
+      TypeNode type = current.getType();
+      useType = true;
+      typeTheoryId = Theory::theoryOf(type);
+    } else {
+      TypeNode type = current.getType();
+      typeTheoryId = Theory::theoryOf(type);
+      if (typeTheoryId != currentTheoryId) {
+        if (type.isInterpretedFinite()) {
+          useType = true;
+        }
+      }
+    }
+  }
+  if (current != parent) {
+    if (currentTheoryId != parentTheoryId) {
+      // If enclosed by different theories it's shared -- in read(a, f(a)) f(a) should be shared with integers
+      TypeNode type = current.getType();
+      useType = true;
+      typeTheoryId = Theory::theoryOf(type);
+    } else {
+      TypeNode type = current.getType();
+      typeTheoryId = Theory::theoryOf(type);
+      if (typeTheoryId != currentTheoryId) {
+        if (type.isInterpretedFinite()) {
+          useType = true;
+        }
+      }
+    }
+  }
+
+  if (Theory::setContains(currentTheoryId, theories)) {
+      if (Theory::setContains(parentTheoryId, theories)) {
+        if (useType) {
+          return Theory::setContains(typeTheoryId, theories);
+        } else {
+          return true;
+        }
+      } else {
+        return false;
+      }
+  } else {
+    return false;
+  }
+}
+
+void SharedTermsVisitor::visit(TNode current, TNode parent) {
+
+  Debug("register") << "SharedTermsVisitor::visit(" << current << "," << parent << ")" << std::endl;
+  if (Debug.isOn("register::internal")) {
+    Debug("register::internal") << toString() << std::endl;
+  }
+
+  // Get the theories of the terms
+  TheoryId currentTheoryId = Theory::theoryOf(current);
+  TheoryId parentTheoryId  = Theory::theoryOf(parent);
+
+  // Should we use the theory of the type
+  bool useType = false;
+  TheoryId typeTheoryId = THEORY_LAST;
+
+  if (current != parent) {
+    if (currentTheoryId != parentTheoryId) {
+      // If enclosed by different theories it's shared -- in read(a, f(a)) f(a) should be shared with integers
+      TypeNode type = current.getType();
+      useType = true;
+      typeTheoryId = Theory::theoryOf(type);
+    } else {
+      TypeNode type = current.getType();
+      typeTheoryId = Theory::theoryOf(type);
+      if (typeTheoryId != currentTheoryId) {
+        if (type.isInterpretedFinite()) {
+          useType = true;
+        }
+      }
+    }
+  }
+
+  Theory::Set visitedTheories = d_visited[current];
+  Debug("register::internal") << "SharedTermsVisitor::visit(" << current << "," << parent << "): previously registered with " << Theory::setToString(visitedTheories) << std::endl;
+  if (!Theory::setContains(currentTheoryId, visitedTheories)) {
+    visitedTheories = Theory::setInsert(currentTheoryId, visitedTheories);
+    Debug("register::internal") << "SharedTermsVisitor::visit(" << current << "," << parent << "): adding " << currentTheoryId << std::endl;
+  }
+  if (!Theory::setContains(parentTheoryId, visitedTheories)) {
+    visitedTheories = Theory::setInsert(parentTheoryId, visitedTheories);
+    Debug("register::internal") << "SharedTermsVisitor::visit(" << current << "," << parent << "): adding " << parentTheoryId << std::endl;
+  }
+  if (useType) {
+    if (!Theory::setContains(typeTheoryId, visitedTheories)) {
+      visitedTheories = Theory::setInsert(typeTheoryId, visitedTheories);
+      Debug("register::internal") << "SharedTermsVisitor::visit(" << current << "," << parent << "): adding " << typeTheoryId << std::endl;
+    }
+  }
+  Debug("register::internal") << "SharedTermsVisitor::visit(" << current << "," << parent << "): now registered with " << Theory::setToString(visitedTheories) << std::endl;
+
+  // Record the new theories that we visited
+  d_visited[current] = visitedTheories;
+
+  // If there is more than two theories and a new one has been added notify the shared terms database
+  if (Theory::setDifference(visitedTheories, Theory::setInsert(currentTheoryId))) {
+    d_sharedTerms.addSharedTerm(d_atom, current, visitedTheories);
+  }
+
+  Assert(d_visited.find(current) != d_visited.end());
+  Assert(alreadyVisited(current, parent));
+}
+
+void SharedTermsVisitor::start(TNode node) {
+  clear();
+  d_atom = node;
+}
+
+void SharedTermsVisitor::done(TNode node) {
+  clear();
+}
+
+void SharedTermsVisitor::clear() {
+  d_atom = TNode();
+  d_visited.clear();
+}
diff --git a/src/theory/term_registration_visitor.h b/src/theory/term_registration_visitor.h
new file mode 100644
index 0000000..6d04910
--- /dev/null
+++ b/src/theory/term_registration_visitor.h
@@ -0,0 +1,155 @@
+/*********************                                                        */
+/*! \file term_registration_visitor.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "context/context.h"
+#include "theory/shared_terms_database.h"
+
+#include <ext/hash_map>
+
+namespace CVC4 {
+
+class TheoryEngine;
+
+/**
+ * Visitor that calls the appropriate theory to pre-register the term. The visitor also keeps track
+ * of the sets of theories that are involved in the terms, so that it can say if there are multiple
+ * theories involved.
+ *
+ * A sub-term has been visited if the theories of both the parent and the term itself have already
+ * visited this term.
+ *
+ * Computation of the set of theories in the original term are computed in the alreadyVisited method
+ * so as no to skip any theories.
+ */
+class PreRegisterVisitor {
+
+  /** The engine */
+  TheoryEngine* d_engine;
+
+  typedef context::CDHashMap<TNode, theory::Theory::Set, TNodeHashFunction> TNodeToTheorySetMap;
+
+  /**
+   * Map from terms to the theories that have already had this term pre-registered.
+   */
+  TNodeToTheorySetMap d_visited;
+
+  /**
+   * A set of all theories in the term
+   */
+  theory::Theory::Set d_theories;
+
+  /**
+   * String representation of the visited map, for debugging purposes.
+   */
+  std::string toString() const;
+
+public:
+
+  /** Returned set tells us which theories there are */
+  typedef theory::Theory::Set return_type;
+  
+  PreRegisterVisitor(TheoryEngine* engine, context::Context* context)
+  : d_engine(engine)
+  , d_visited(context)
+  , d_theories(0)
+  {}
+
+  /**
+   * Returns true is current has already been pre-registered with both current and parent theories.
+   */
+  bool alreadyVisited(TNode current, TNode parent);
+  
+  /**
+   * Pre-registeres current with any of the current and parent theories that haven't seen the term yet.
+   */
+  void visit(TNode current, TNode parent);
+  
+  /**
+   * Marks the node as the starting literal.
+   */
+  void start(TNode node) { }
+
+  /**
+   * Notifies the engine of all the theories used.
+   */
+  theory::Theory::Set done(TNode node) { return d_theories; }
+};
+
+
+/**
+ * The reason why we need to make this outside of the pre-registration loop is because we need a shared term x to 
+ * be associated with every atom that contains it. For example, if given f(x) >= 0 and f(x) + 1 >= 0, although f(x) has
+ * been visited already, we need to visit it again, since we need to associate it with both atoms.
+ */
+class SharedTermsVisitor {
+
+  /** The shared terms database */
+  SharedTermsDatabase& d_sharedTerms;
+
+  /**
+   * Cache from preprocessing of atoms.
+   */
+  typedef std::hash_map<TNode, theory::Theory::Set, TNodeHashFunction> TNodeVisitedMap;
+  TNodeVisitedMap d_visited;
+
+  /**
+   * String representation of the visited map, for debugging purposes.
+   */
+  std::string toString() const;
+
+  /** 
+   * The initial atom.
+   */
+  TNode d_atom; 
+    
+public:
+
+  typedef void return_type;
+
+  SharedTermsVisitor(SharedTermsDatabase& sharedTerms)
+  : d_sharedTerms(sharedTerms) {}
+
+  /**
+   * Returns true is current has already been pre-registered with both current and parent theories.
+   */
+  bool alreadyVisited(TNode current, TNode parent) const;
+  
+  /**
+   * Pre-registeres current with any of the current and parent theories that haven't seen the term yet.
+   */
+  void visit(TNode current, TNode parent);
+  
+  /**
+   * Marks the node as the starting literal.
+   */
+  void start(TNode node);
+
+  /**
+   * Just clears the state.
+   */
+  void done(TNode node);
+
+  /**
+   * Clears the internal state.
+   */   
+  void clear();
+};
+
+
+}
diff --git a/src/theory/theory.cpp b/src/theory/theory.cpp
new file mode 100644
index 0000000..340ab23
--- /dev/null
+++ b/src/theory/theory.cpp
@@ -0,0 +1,634 @@
+/*********************                                                        */
+/*! \file theory.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Dejan Jovanovic, Clark Barrett
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Base for theory interface.
+ **
+ ** Base for theory interface.
+ **/
+
+#include "theory/theory.h"
+
+#include <vector>
+#include <sstream>
+#include <iostream>
+#include <string>
+
+#include "base/cvc4_assert.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/substitutions.h"
+#include "theory/quantifiers_engine.h"
+
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+
+/** Default value for the uninterpreted sorts is the UF theory */
+TheoryId Theory::s_uninterpretedSortOwner = THEORY_UF;
+
+std::ostream& operator<<(std::ostream& os, Theory::Effort level){
+  switch(level){
+  case Theory::EFFORT_STANDARD:
+    os << "EFFORT_STANDARD"; break;
+  case Theory::EFFORT_FULL:
+    os << "EFFORT_FULL"; break;
+  case Theory::EFFORT_COMBINATION:
+    os << "EFFORT_COMBINATION"; break;
+  case Theory::EFFORT_LAST_CALL:
+    os << "EFFORT_LAST_CALL"; break;
+  default:
+      Unreachable();
+  }
+  return os;
+}/* ostream& operator<<(ostream&, Theory::Effort) */
+
+
+Theory::Theory(TheoryId id, context::Context* satContext,
+               context::UserContext* userContext, OutputChannel& out,
+               Valuation valuation, const LogicInfo& logicInfo,
+               std::string name) throw()
+    : d_id(id)
+    , d_instanceName(name)
+    , d_satContext(satContext)
+    , d_userContext(userContext)
+    , d_logicInfo(logicInfo)
+    , d_facts(satContext)
+    , d_factsHead(satContext, 0)
+    , d_sharedTermsIndex(satContext, 0)
+    , d_careGraph(NULL)
+    , d_quantEngine(NULL)
+    , d_extt(NULL)
+    , d_checkTime(getFullInstanceName() + "::checkTime")
+    , d_computeCareGraphTime(getFullInstanceName() + "::computeCareGraphTime")
+    , d_sharedTerms(satContext)
+    , d_out(&out)
+    , d_valuation(valuation)
+    , d_proofsEnabled(false)
+{
+  smtStatisticsRegistry()->registerStat(&d_checkTime);
+  smtStatisticsRegistry()->registerStat(&d_computeCareGraphTime);
+}
+
+Theory::~Theory() {
+  smtStatisticsRegistry()->unregisterStat(&d_checkTime);
+  smtStatisticsRegistry()->unregisterStat(&d_computeCareGraphTime);
+}
+
+TheoryId Theory::theoryOf(TheoryOfMode mode, TNode node) {
+  TheoryId tid = THEORY_BUILTIN;
+  switch(mode) {
+  case THEORY_OF_TYPE_BASED:
+    // Constants, variables, 0-ary constructors
+    if (node.isVar()) {
+      if( node.getKind() == kind::BOOLEAN_TERM_VARIABLE ){
+        tid = THEORY_UF;
+      }else{
+        tid = Theory::theoryOf(node.getType());
+      }
+    }else if (node.isConst()) {
+      tid = Theory::theoryOf(node.getType());
+    } else if (node.getKind() == kind::EQUAL) {
+      // Equality is owned by the theory that owns the domain
+      tid = Theory::theoryOf(node[0].getType());
+    } else {
+      // Regular nodes are owned by the kind
+      tid = kindToTheoryId(node.getKind());
+    }
+    break;
+  case THEORY_OF_TERM_BASED:
+    // Variables
+    if (node.isVar()) {
+      if (Theory::theoryOf(node.getType()) != theory::THEORY_BOOL) {
+        // We treat the variables as uninterpreted
+        tid = s_uninterpretedSortOwner;
+      } else {
+        if( node.getKind() == kind::BOOLEAN_TERM_VARIABLE ){
+          //Boolean vars go to UF
+          tid = THEORY_UF;
+        }else{
+          // Except for the Boolean ones
+          tid = THEORY_BOOL;
+        }
+      }
+    } else if (node.isConst()) {
+      // Constants go to the theory of the type
+      tid = Theory::theoryOf(node.getType());
+    } else if (node.getKind() == kind::EQUAL) { // Equality
+      // If one of them is an ITE, it's irelevant, since they will get replaced out anyhow
+      if (node[0].getKind() == kind::ITE) {
+        tid = Theory::theoryOf(node[0].getType());
+      } else if (node[1].getKind() == kind::ITE) {
+        tid = Theory::theoryOf(node[1].getType());
+      } else {
+        TNode l = node[0];
+        TNode r = node[1];
+        TypeNode ltype = l.getType();
+        TypeNode rtype = r.getType();
+        if( ltype != rtype ){
+          tid = Theory::theoryOf(l.getType());
+        }else {
+          // If both sides belong to the same theory the choice is easy
+          TheoryId T1 = Theory::theoryOf(l);
+          TheoryId T2 = Theory::theoryOf(r);
+          if (T1 == T2) {
+            tid = T1;
+          } else {
+            TheoryId T3 = Theory::theoryOf(ltype);
+            // This is a case of
+            // * x*y = f(z) -> UF
+            // * x = c      -> UF
+            // * f(x) = read(a, y) -> either UF or ARRAY
+            // at least one of the theories has to be parametric, i.e. theory of the type is different
+            // from the theory of the term
+            if (T1 == T3) {
+              tid = T2;
+            } else if (T2 == T3) {
+              tid = T1;
+            } else {
+              // If both are parametric, we take the smaller one (arbitrary)
+              tid = T1 < T2 ? T1 : T2;
+            }
+          }
+        }
+      }
+    } else {
+      // Regular nodes are owned by the kind
+      tid = kindToTheoryId(node.getKind());
+    }
+    break;
+  default:
+    Unreachable();
+  }
+  Trace("theory::internal") << "theoryOf(" << mode << ", " << node << ") -> " << tid << std::endl;
+  return tid;
+}
+
+void Theory::addSharedTermInternal(TNode n) {
+  Debug("sharing") << "Theory::addSharedTerm<" << getId() << ">(" << n << ")" << endl;
+  Debug("theory::assertions") << "Theory::addSharedTerm<" << getId() << ">(" << n << ")" << endl;
+  d_sharedTerms.push_back(n);
+  addSharedTerm(n);
+}
+
+void Theory::computeCareGraph() {
+  Debug("sharing") << "Theory::computeCareGraph<" << getId() << ">()" << endl;
+  for (unsigned i = 0; i < d_sharedTerms.size(); ++ i) {
+    TNode a = d_sharedTerms[i];
+    TypeNode aType = a.getType();
+    for (unsigned j = i + 1; j < d_sharedTerms.size(); ++ j) {
+      TNode b = d_sharedTerms[j];
+      if (b.getType() != aType) {
+        // We don't care about the terms of different types
+        continue;
+      }
+      switch (d_valuation.getEqualityStatus(a, b)) {
+      case EQUALITY_TRUE_AND_PROPAGATED:
+      case EQUALITY_FALSE_AND_PROPAGATED:
+  	// If we know about it, we should have propagated it, so we can skip
+  	break;
+      default:
+  	// Let's split on it
+  	addCarePair(a, b);
+  	break;
+      }
+    }
+  }
+}
+
+void Theory::printFacts(std::ostream& os) const {
+  unsigned i, n = d_facts.size();
+  for(i = 0; i < n; i++){
+    const Assertion& a_i = d_facts[i];
+    Node assertion  = a_i;
+    os << d_id << '[' << i << ']' << " " << assertion << endl;
+  }
+}
+
+void Theory::debugPrintFacts() const{
+  DebugChannel.getStream() << "Theory::debugPrintFacts()" << endl;
+  printFacts(DebugChannel.getStream());
+}
+
+std::hash_set<TNode, TNodeHashFunction> Theory::currentlySharedTerms() const{
+  std::hash_set<TNode, TNodeHashFunction> currentlyShared;
+  for (shared_terms_iterator i = shared_terms_begin(),
+           i_end = shared_terms_end(); i != i_end; ++i) {
+    currentlyShared.insert (*i);
+  }
+  return currentlyShared;
+}
+
+
+void Theory::collectTerms(TNode n, set<Node>& termSet) const
+{
+  if (termSet.find(n) != termSet.end()) {
+    return;
+  }
+  Trace("theory::collectTerms") << "Theory::collectTerms: adding " << n << endl;
+  termSet.insert(n);
+  if (n.getKind() == kind::NOT || n.getKind() == kind::EQUAL || !isLeaf(n)) {
+    for(TNode::iterator child_it = n.begin(); child_it != n.end(); ++child_it) {
+      collectTerms(*child_it, termSet);
+    }
+  }
+}
+
+
+void Theory::computeRelevantTerms(set<Node>& termSet, bool includeShared) const
+{
+  // Collect all terms appearing in assertions
+  context::CDList<Assertion>::const_iterator assert_it = facts_begin(), assert_it_end = facts_end();
+  for (; assert_it != assert_it_end; ++assert_it) {
+    collectTerms(*assert_it, termSet);
+  }
+
+  if (!includeShared) return;
+
+  // Add terms that are shared terms
+  context::CDList<TNode>::const_iterator shared_it = shared_terms_begin(), shared_it_end = shared_terms_end();
+  for (; shared_it != shared_it_end; ++shared_it) {
+    collectTerms(*shared_it, termSet);
+  }
+}
+
+
+Theory::PPAssertStatus Theory::ppAssert(TNode in,
+                                        SubstitutionMap& outSubstitutions)
+{
+  if (in.getKind() == kind::EQUAL) {
+    // (and (= x t) phi) can be replaced by phi[x/t] if
+    // 1) x is a variable
+    // 2) x is not in the term t
+    // 3) x : T and t : S, then S <: T
+    if (in[0].isVar() && !in[1].hasSubterm(in[0]) &&
+        (in[1].getType()).isSubtypeOf(in[0].getType()) ){
+      outSubstitutions.addSubstitution(in[0], in[1]);
+      return PP_ASSERT_STATUS_SOLVED;
+    }
+    if (in[1].isVar() && !in[0].hasSubterm(in[1]) &&
+        (in[0].getType()).isSubtypeOf(in[1].getType())){
+      outSubstitutions.addSubstitution(in[1], in[0]);
+      return PP_ASSERT_STATUS_SOLVED;
+    }
+    if (in[0].isConst() && in[1].isConst()) {
+      if (in[0] != in[1]) {
+        return PP_ASSERT_STATUS_CONFLICT;
+      }
+    }
+  }
+
+  return PP_ASSERT_STATUS_UNSOLVED;
+}
+
+std::pair<bool, Node> Theory::entailmentCheck(
+    TNode lit,
+    const EntailmentCheckParameters* params,
+    EntailmentCheckSideEffects* out) {
+  return make_pair(false, Node::null());
+}
+
+EntailmentCheckParameters::EntailmentCheckParameters(TheoryId tid)
+  : d_tid(tid) {
+}
+
+std::string Theory::getFullInstanceName() const {
+  std::stringstream ss;
+  ss << "theory<" << d_id << ">" << d_instanceName;
+  return ss.str();
+}
+
+EntailmentCheckParameters::~EntailmentCheckParameters(){}
+
+TheoryId EntailmentCheckParameters::getTheoryId() const {
+  return d_tid;
+}
+
+EntailmentCheckSideEffects::EntailmentCheckSideEffects(TheoryId tid)
+  : d_tid(tid)
+{}
+
+TheoryId EntailmentCheckSideEffects::getTheoryId() const {
+  return d_tid;
+}
+
+EntailmentCheckSideEffects::~EntailmentCheckSideEffects() {
+}
+
+
+ExtTheory::ExtTheory( Theory * p ) : d_parent( p ), 
+d_ext_func_terms( p->getSatContext() ), d_ci_inactive( p->getUserContext() ), 
+d_lemmas( p->getUserContext() ), d_pp_lemmas( p->getUserContext() ), d_has_extf( p->getSatContext() ){
+  d_true = NodeManager::currentNM()->mkConst( true );
+}
+
+//gets all leaf terms in n
+void ExtTheory::collectVars( Node n, std::vector< Node >& vars, std::map< Node, bool >& visited ) {
+  if( !n.isConst() ){
+    if( visited.find( n )==visited.end() ){
+      visited[n] = true;
+      //treat terms not belonging to this theory as leaf  
+      //  AJR TODO : should include terms not belonging to this theory (commented below)
+      if( n.getNumChildren()>0 ){//&& Theory::theoryOf(n)==d_parent->getId() ){
+        for( unsigned i=0; i<n.getNumChildren(); i++ ){
+          collectVars( n[i], vars, visited );
+        }
+      }else{
+        vars.push_back( n );
+      }
+    }
+  }
+}
+
+//do inferences 
+void ExtTheory::getSubstitutedTerms( int effort, std::vector< Node >& terms, std::vector< Node >& sterms, std::vector< std::vector< Node > >& exp ) {
+  Trace("extt-debug") << "Currently " << d_ext_func_terms.size() << " extended functions." << std::endl;
+  Trace("extt-debug") << "..." << terms.size() << " to reduce." << std::endl;
+  if( !terms.empty() ){
+    //all variables we need to find a substitution for
+    std::vector< Node > vars;
+    std::vector< Node > sub;
+    std::map< Node, std::vector< Node > > expc;
+    for( unsigned i=0; i<terms.size(); i++ ){
+      //do substitution, rewrite
+      Node n = terms[i];
+      std::map< Node, ExtfInfo >::iterator iti = d_extf_info.find( n );
+      Trace("extt-debug") << "Check extf : " << n << std::endl;
+      Assert( iti!=d_extf_info.end() );
+      for( unsigned i=0; i<iti->second.d_vars.size(); i++ ){
+        if( std::find( vars.begin(), vars.end(), iti->second.d_vars[i] )==vars.end() ){
+          vars.push_back( iti->second.d_vars[i] );
+        } 
+      }
+    }
+    //get the current substitution for all variables
+    if( d_parent->getCurrentSubstitution( effort, vars, sub, expc ) ){
+      Assert( vars.size()==sub.size() );
+      for( unsigned i=0; i<terms.size(); i++ ){
+        //do substitution
+        Node n = terms[i];
+        Node ns = n.substitute( vars.begin(), vars.end(), sub.begin(), sub.end() );
+        std::vector< Node > expn;
+        if( ns!=n ){
+          //build explanation: explanation vars = sub for each vars in FV( n )
+          std::map< Node, ExtfInfo >::iterator iti = d_extf_info.find( n );
+          Assert( iti!=d_extf_info.end() );
+          for( unsigned j=0; j<iti->second.d_vars.size(); j++ ){
+            Node v = iti->second.d_vars[j];
+            std::map< Node, std::vector< Node > >::iterator itx = expc.find( v );
+            if( itx!=expc.end() ){
+              for( unsigned k=0; k<itx->second.size(); k++ ){
+                if( std::find( expn.begin(), expn.end(), itx->second[k] )==expn.end() ){
+                  expn.push_back( itx->second[k] );
+                }
+              }
+            }
+          }
+        }
+        Trace("extt-debug") << "  have " << n << " == " << ns << ", exp size=" << expn.size() << "." << std::endl;
+        //add to vector
+        sterms.push_back( ns );
+        exp.push_back( expn );
+      }
+    }else{
+      for( unsigned i=0; i<terms.size(); i++ ){
+        sterms.push_back( terms[i] );
+      }
+    }
+  }
+}
+
+bool ExtTheory::doInferencesInternal( int effort, std::vector< Node >& terms, std::vector< Node >& nred, bool batch, bool isRed ) {
+  if( batch ){
+    bool addedLemma = false;
+    if( isRed ){
+      for( unsigned i=0; i<terms.size(); i++ ){
+        Node n = terms[i];
+        Node nr;
+        //TODO: reduction with substitution?
+        int ret = d_parent->getReduction( effort, n, nr );
+        if( ret==0 ){
+          nred.push_back( n );
+        }else{
+          if( !nr.isNull() && n!=nr ){
+            Node lem = NodeManager::currentNM()->mkNode( kind::EQUAL, n, nr );
+            if( sendLemma( lem, true ) ){
+              Trace("extt-lemma") << "ExtTheory : Reduction lemma : " << lem << std::endl;
+              addedLemma = true;
+            }
+          }
+          markReduced( terms[i], ret<0 );
+        }
+      }
+    }else{
+      std::vector< Node > sterms; 
+      std::vector< std::vector< Node > > exp;
+      getSubstitutedTerms( effort, terms, sterms, exp );
+      for( unsigned i=0; i<terms.size(); i++ ){
+        bool processed = false;
+        if( sterms[i]!=terms[i] ){
+          Node sr = Rewriter::rewrite( sterms[i] );
+          if( sr.isConst() ){
+            processed = true;
+            markReduced( terms[i] );
+            Node eq = terms[i].eqNode( sr );
+            Node expn = exp[i].size()>1 ? NodeManager::currentNM()->mkNode( kind::AND, exp[i] ) : ( exp[i].size()==1 ? exp[i][0] : d_true );
+            Trace("extt-debug") << "ExtTheory::doInferences : infer : " << eq << " by " << expn << std::endl;
+            Node lem = NodeManager::currentNM()->mkNode( kind::IMPLIES, expn, eq );
+            Trace("extt-debug") << "...send lemma " << lem << std::endl;
+            if( sendLemma( lem ) ){
+              Trace("extt-lemma") << "ExtTheory : Constant rewrite lemma : " << lem << std::endl;
+              addedLemma = true;
+            }
+          }
+        }
+        if( !processed ){
+          nred.push_back( terms[i] );
+        }
+      }
+    }
+    return addedLemma;
+  }else{
+    std::vector< Node > nnred;
+    if( terms.empty() ){
+      for( NodeBoolMap::iterator it = d_ext_func_terms.begin(); it != d_ext_func_terms.end(); ++it ){
+        if( (*it).second && !isContextIndependentInactive( (*it).first ) ){
+          std::vector< Node > nterms;
+          nterms.push_back( (*it).first );
+          if( doInferencesInternal( effort, nterms, nnred, true, isRed ) ){
+            return true;
+          }       
+        }
+      }
+    }else{
+      for( unsigned i=0; i<terms.size(); i++ ){
+        std::vector< Node > nterms;
+        nterms.push_back( terms[i] );
+        if( doInferencesInternal( effort, nterms, nnred, true, isRed ) ){
+          return true;
+        }   
+      }
+    }
+    return false;
+  }
+}
+
+bool ExtTheory::sendLemma( Node lem, bool preprocess ) {
+  if( preprocess ){
+    if( d_pp_lemmas.find( lem )==d_pp_lemmas.end() ){
+      d_pp_lemmas.insert( lem );
+      d_parent->getOutputChannel().lemma( lem, false, true );
+      return true;
+    }
+  }else{
+    if( d_lemmas.find( lem )==d_lemmas.end() ){
+      d_lemmas.insert( lem );
+      d_parent->getOutputChannel().lemma( lem );
+      return true;
+    }
+  }
+  return false;
+}
+
+bool ExtTheory::doInferences( int effort, std::vector< Node >& terms, std::vector< Node >& nred, bool batch ) {
+  if( !terms.empty() ){
+    return doInferencesInternal( effort, terms, nred, batch, false );
+  }else{
+    return false;
+  }
+}
+
+bool ExtTheory::doInferences( int effort, std::vector< Node >& nred, bool batch ) {
+  std::vector< Node > terms;
+  getActive( terms );
+  return doInferencesInternal( effort, terms, nred, batch, false );
+}
+
+bool ExtTheory::doReductions( int effort, std::vector< Node >& terms, std::vector< Node >& nred, bool batch ) {
+  if( !terms.empty() ){
+    return doInferencesInternal( effort, terms, nred, batch, true );
+  }else{
+    return false;
+  }
+}
+
+bool ExtTheory::doReductions( int effort, std::vector< Node >& nred, bool batch ) {
+  std::vector< Node > terms;
+  getActive( terms );
+  return doInferencesInternal( effort, terms, nred, batch, true );
+}
+
+
+//register term
+void ExtTheory::registerTerm( Node n ) {
+  if( d_extf_kind.find( n.getKind() )!=d_extf_kind.end() ){
+    if( d_ext_func_terms.find( n )==d_ext_func_terms.end() ){
+      Trace("extt-debug") << "Found extended function : " << n << " in " << d_parent->getId() << std::endl;
+      d_ext_func_terms[n] = true;
+      d_has_extf = n;
+      std::map< Node, bool > visited;
+      collectVars( n, d_extf_info[n].d_vars, visited );
+    }
+  }
+}
+
+void ExtTheory::registerTermRec( Node n ) {
+  std::map< Node, bool > visited;
+  registerTermRec( n, visited );
+}
+
+void ExtTheory::registerTermRec( Node n, std::map< Node, bool >& visited ) {
+  if( visited.find( n )==visited.end() ){
+    visited[n] = true;
+    registerTerm( n );
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      registerTermRec( n[i], visited );
+    }
+  }
+}
+
+//mark reduced
+void ExtTheory::markReduced( Node n, bool contextDepend ) {
+  registerTerm( n );
+  Assert( d_ext_func_terms.find( n )!=d_ext_func_terms.end() );
+  d_ext_func_terms[n] = false;
+  if( !contextDepend ){
+    d_ci_inactive.insert( n );
+  }
+  
+  //update has_extf
+  if( d_has_extf.get()==n ){
+    for( NodeBoolMap::iterator it = d_ext_func_terms.begin(); it != d_ext_func_terms.end(); ++it ){
+      //if not already reduced
+      if( (*it).second && !isContextIndependentInactive( (*it).first ) ){
+         d_has_extf = (*it).first;
+      }
+    }
+  
+  }
+}
+
+//mark congruent
+void ExtTheory::markCongruent( Node a, Node b ) {
+  Trace("extt-debug") << "Mark congruent : " << a << " " << b << std::endl;
+  registerTerm( a );
+  registerTerm( b );
+  NodeBoolMap::const_iterator it = d_ext_func_terms.find( b );
+  if( it!=d_ext_func_terms.end() ){
+    if( d_ext_func_terms.find( a )!=d_ext_func_terms.end() ){
+      d_ext_func_terms[a] = d_ext_func_terms[a] && (*it).second;
+    }else{
+      Assert( false );
+    }
+    d_ext_func_terms[b] = false;
+  }else{
+    Assert( false );
+  }
+}
+
+bool ExtTheory::isContextIndependentInactive( Node n ) {
+  return d_ci_inactive.find( n )!=d_ci_inactive.end();
+}
+
+bool ExtTheory::hasActiveTerm() {
+  return !d_has_extf.get().isNull();
+}
+  
+//is active
+bool ExtTheory::isActive( Node n ) {
+  NodeBoolMap::const_iterator it = d_ext_func_terms.find( n );
+  if( it!=d_ext_func_terms.end() ){
+    return (*it).second && !isContextIndependentInactive( n );
+  }else{
+    return false;
+  }
+}
+//get active 
+void ExtTheory::getActive( std::vector< Node >& active ) {
+  for( NodeBoolMap::iterator it = d_ext_func_terms.begin(); it != d_ext_func_terms.end(); ++it ){
+    //if not already reduced
+    if( (*it).second && !isContextIndependentInactive( (*it).first ) ){
+      active.push_back( (*it).first );
+    }
+  }
+}
+
+void ExtTheory::getActive( std::vector< Node >& active, Kind k ) {
+  for( NodeBoolMap::iterator it = d_ext_func_terms.begin(); it != d_ext_func_terms.end(); ++it ){
+    //if not already reduced
+    if( (*it).first.getKind()==k && (*it).second && !isContextIndependentInactive( (*it).first ) ){
+      active.push_back( (*it).first );
+    }
+  }
+}
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/theory.h b/src/theory/theory.h
new file mode 100644
index 0000000..fd8cffa
--- /dev/null
+++ b/src/theory/theory.h
@@ -0,0 +1,1070 @@
+/*********************                                                        */
+/*! \file theory.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Base of the theory interface.
+ **
+ ** Base of the theory interface.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__THEORY_H
+#define __CVC4__THEORY__THEORY_H
+
+#include <ext/hash_set>
+#include <iosfwd>
+#include <string>
+
+#include "context/cdlist.h"
+#include "context/cdhashset.h"
+#include "context/cdo.h"
+#include "context/context.h"
+#include "expr/node.h"
+#include "lib/ffs.h"
+#include "options/options.h"
+#include "options/theory_options.h"
+#include "options/theoryof_mode.h"
+#include "smt/command.h"
+#include "smt/dump.h"
+#include "smt/logic_request.h"
+#include "theory/logic_info.h"
+#include "theory/output_channel.h"
+#include "theory/valuation.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+
+class TheoryEngine;
+
+namespace theory {
+
+class QuantifiersEngine;
+class TheoryModel;
+class SubstitutionMap;
+class ExtTheory;
+
+class EntailmentCheckParameters;
+class EntailmentCheckSideEffects;
+
+namespace rrinst {
+  class CandidateGenerator;
+}/* CVC4::theory::rrinst namespace */
+
+namespace eq {
+  class EqualityEngine;
+}/* CVC4::theory::eq namespace */
+
+/**
+ * Information about an assertion for the theories.
+ */
+struct Assertion {
+
+  /** The assertion */
+  Node assertion;
+  /** Has this assertion been preregistered with this theory */
+  bool isPreregistered;
+
+  Assertion(TNode assertion, bool isPreregistered)
+  : assertion(assertion), isPreregistered(isPreregistered) {}
+
+  /**
+   * Convert the assertion to a TNode.
+   */
+  operator TNode () const {
+    return assertion;
+  }
+
+  /**
+   * Convert the assertion to a Node.
+   */
+  operator Node () const {
+    return assertion;
+  }
+
+};/* struct Assertion */
+
+/**
+ * A (oredered) pair of terms a theory cares about.
+ */
+struct CarePair {
+
+  TNode a, b;
+  TheoryId theory;
+
+public:
+
+  CarePair(TNode a, TNode b, TheoryId theory)
+  : a(a < b ? a : b), b(a < b ? b : a), theory(theory) {}
+
+  bool operator == (const CarePair& other) const {
+    return (theory == other.theory) && (a == other.a) && (b == other.b);
+  }
+
+  bool operator < (const CarePair& other) const {
+    if (theory < other.theory) return true;
+    if (theory > other.theory) return false;
+    if (a < other.a) return true;
+    if (a > other.a) return false;
+    return b < other.b;
+  }
+
+};/* struct CarePair */
+
+/**
+ * A set of care pairs.
+ */
+typedef std::set<CarePair> CareGraph;
+
+/**
+ * Base class for T-solvers.  Abstract DPLL(T).
+ *
+ * This is essentially an interface class.  The TheoryEngine has
+ * pointers to Theory.  Note that only one specific Theory type (e.g.,
+ * TheoryUF) can exist per NodeManager, because of how the
+ * RegisteredAttr works.  (If you need multiple instances of the same
+ * theory, you'll have to write a multiplexed theory that dispatches
+ * all calls to them.)
+ */
+class Theory {
+
+private:
+
+  friend class ::CVC4::TheoryEngine;
+
+  // Disallow default construction, copy, assignment.
+  Theory() CVC4_UNDEFINED;
+  Theory(const Theory&) CVC4_UNDEFINED;
+  Theory& operator=(const Theory&) CVC4_UNDEFINED;
+
+  /**
+   * An integer identifying the type of the theory
+   */
+  TheoryId d_id;
+
+  /** Name of this theory instance. Along with the TheoryId this should provide
+   * an unique string identifier for each instance of a Theory class. We need
+   * this to ensure unique statistics names over multiple theory instances. */
+  std::string d_instanceName;
+
+  /**
+   * The SAT search context for the Theory.
+   */
+  context::Context* d_satContext;
+
+  /**
+   * The user level assertion context for the Theory.
+   */
+  context::UserContext* d_userContext;
+
+  /**
+   * Information about the logic we're operating within.
+   */
+  const LogicInfo& d_logicInfo;
+
+  /**
+   * The assertFact() queue.
+   *
+   * These can not be TNodes as some atoms (such as equalities) are sent
+   * across theories without being stored in a global map.
+   */
+  context::CDList<Assertion> d_facts;
+
+  /** Index into the head of the facts list */
+  context::CDO<unsigned> d_factsHead;
+
+  /**
+   * Add shared term to the theory.
+   */
+  void addSharedTermInternal(TNode node);
+
+  /**
+   * Indices for splitting on the shared terms.
+   */
+  context::CDO<unsigned> d_sharedTermsIndex;
+
+  /**
+   * The care graph the theory will use during combination.
+   */
+  CareGraph* d_careGraph;
+
+  /**
+   * Reference to the quantifiers engine (or NULL, if quantifiers are
+   * not supported or not enabled).
+   */
+  QuantifiersEngine* d_quantEngine;
+
+protected:
+
+  /** extended theory */
+  ExtTheory * d_extt;
+
+  // === STATISTICS ===
+  /** time spent in check calls */
+  TimerStat d_checkTime;
+  /** time spent in theory combination */
+  TimerStat d_computeCareGraphTime;
+
+  /**
+   * The only method to add suff to the care graph.
+   */
+  void addCarePair(TNode t1, TNode t2) {
+    if (d_careGraph) {
+      d_careGraph->insert(CarePair(t1, t2, d_id));
+    }
+  }
+
+  /**
+   * The function should compute the care graph over the shared terms.
+   * The default function returns all the pairs among the shared variables.
+   */
+  virtual void computeCareGraph();
+
+  /**
+   * A list of shared terms that the theory has.
+   */
+  context::CDList<TNode> d_sharedTerms;
+
+  /**
+   * Helper function for computeRelevantTerms
+   */
+  void collectTerms(TNode n, std::set<Node>& termSet) const;
+  /**
+   * Scans the current set of assertions and shared terms top-down
+   * until a theory-leaf is reached, and adds all terms found to
+   * termSet.  This is used by collectModelInfo to delimit the set of
+   * terms that should be used when constructing a model
+   */
+  void computeRelevantTerms(std::set<Node>& termSet, bool includeShared = true) const;
+
+  /**
+   * Construct a Theory.
+   *
+   * The pair <id, instance> is assumed to uniquely identify this Theory
+   * w.r.t. the SmtEngine.
+   */
+  Theory(TheoryId id, context::Context* satContext,
+         context::UserContext* userContext, OutputChannel& out,
+         Valuation valuation, const LogicInfo& logicInfo,
+         std::string instance = "") throw();  // taking : No default.
+
+  /**
+   * This is called at shutdown time by the TheoryEngine, just before
+   * destruction.  It is important because there are destruction
+   * ordering issues between PropEngine and Theory (based on what
+   * hard-links to Nodes are outstanding).  As the fact queue might be
+   * nonempty, we ensure here that it's clear.  If you overload this,
+   * you must make an explicit call here to this->Theory::shutdown()
+   * too.
+   */
+  virtual void shutdown() { }
+
+  /**
+   * The output channel for the Theory.
+   */
+  OutputChannel* d_out;
+
+  /**
+   * The valuation proxy for the Theory to communicate back with the
+   * theory engine (and other theories).
+   */
+  Valuation d_valuation;
+
+  /**
+   * Whether proofs are enabled
+   *
+   */
+  bool d_proofsEnabled;
+
+  /**
+   * Returns the next assertion in the assertFact() queue.
+   *
+   * @return the next assertion in the assertFact() queue
+   */
+  inline Assertion get();
+
+  const LogicInfo& getLogicInfo() const {
+    return d_logicInfo;
+  }
+
+  /**
+   * The theory that owns the uninterpreted sort.
+   */
+  static TheoryId s_uninterpretedSortOwner;
+
+  void printFacts(std::ostream& os) const;
+  void debugPrintFacts() const;
+
+  /**
+   * Whether proofs are enabled
+   *
+   */
+  bool d_proofEnabled;
+
+public:
+
+  /**
+   * Return the ID of the theory responsible for the given type.
+   */
+  static inline TheoryId theoryOf(TypeNode typeNode) {
+    Trace("theory::internal") << "theoryOf(" << typeNode << ")" << std::endl;
+    TheoryId id;
+    while (typeNode.isPredicateSubtype()) {
+      typeNode = typeNode.getSubtypeParentType();
+    }
+    if (typeNode.getKind() == kind::TYPE_CONSTANT) {
+      id = typeConstantToTheoryId(typeNode.getConst<TypeConstant>());
+    } else {
+      id = kindToTheoryId(typeNode.getKind());
+    }
+    if (id == THEORY_BUILTIN) {
+      Trace("theory::internal") << "theoryOf(" << typeNode << ") == " << s_uninterpretedSortOwner << std::endl;
+      return s_uninterpretedSortOwner;
+    }
+    return id;
+  }
+
+  /**
+   * Returns the ID of the theory responsible for the given node.
+   */
+  static TheoryId theoryOf(TheoryOfMode mode, TNode node);
+
+  /**
+   * Returns the ID of the theory responsible for the given node.
+   */
+  static inline TheoryId theoryOf(TNode node) {
+    return theoryOf(options::theoryOfMode(), node);
+  }
+
+  /**
+   * Set the owner of the uninterpreted sort.
+   */
+  static void setUninterpretedSortOwner(TheoryId theory) {
+    s_uninterpretedSortOwner = theory;
+  }
+
+  /**
+   * Get the owner of the uninterpreted sort.
+   */
+  static TheoryId getUninterpretedSortOwner() {
+    return s_uninterpretedSortOwner;
+  }
+
+  /**
+   * Checks if the node is a leaf node of this theory
+   */
+  inline bool isLeaf(TNode node) const {
+    return node.getNumChildren() == 0 || theoryOf(node) != d_id;
+  }
+
+  /**
+   * Checks if the node is a leaf node of a theory.
+   */
+  inline static bool isLeafOf(TNode node, TheoryId theoryId) {
+    return node.getNumChildren() == 0 || theoryOf(node) != theoryId;
+  }
+
+  /**
+   * Returns true if the assertFact queue is empty
+   */
+  bool done() const throw() {
+    return d_factsHead == d_facts.size();
+  }
+
+  /**
+   * Destructs a Theory.
+   */
+  virtual ~Theory();
+
+  /**
+   * Subclasses of Theory may add additional efforts.  DO NOT CHECK
+   * equality with one of these values (e.g. if STANDARD xxx) but
+   * rather use range checks (or use the helper functions below).
+   * Normally we call QUICK_CHECK or STANDARD; at the leaves we call
+   * with FULL_EFFORT.
+   */
+  enum Effort {
+    /**
+     * Standard effort where theory need not do anything
+     */
+    EFFORT_STANDARD = 50,
+    /**
+     * Full effort requires the theory make sure its assertions are satisfiable or not
+     */
+    EFFORT_FULL = 100,
+    /**
+     * Combination effort means that the individual theories are already satisfied, and
+     * it is time to put some effort into propagation of shared term equalities
+     */
+    EFFORT_COMBINATION = 150,
+    /**
+     * Last call effort, reserved for quantifiers.
+     */
+    EFFORT_LAST_CALL = 200
+  };/* enum Effort */
+
+  static inline bool standardEffortOrMore(Effort e) CVC4_CONST_FUNCTION
+    { return e >= EFFORT_STANDARD; }
+  static inline bool standardEffortOnly(Effort e) CVC4_CONST_FUNCTION
+    { return e >= EFFORT_STANDARD && e <  EFFORT_FULL; }
+  static inline bool fullEffort(Effort e) CVC4_CONST_FUNCTION
+    { return e == EFFORT_FULL; }
+  static inline bool combination(Effort e) CVC4_CONST_FUNCTION
+    { return e == EFFORT_COMBINATION; }
+
+  /**
+   * Get the id for this Theory.
+   */
+  TheoryId getId() const {
+    return d_id;
+  }
+
+  /**
+   * Returns a string that uniquely identifies this theory solver w.r.t. the
+   * SmtEngine.
+   */
+  std::string getFullInstanceName() const;
+
+
+  /**
+   * Get the SAT context associated to this Theory.
+   */
+  context::Context* getSatContext() const {
+    return d_satContext;
+  }
+
+  /**
+   * Get the context associated to this Theory.
+   */
+  context::UserContext* getUserContext() const {
+    return d_userContext;
+  }
+
+  /**
+   * Set the output channel associated to this theory.
+   */
+  void setOutputChannel(OutputChannel& out) {
+    d_out = &out;
+  }
+
+  /**
+   * Get the output channel associated to this theory.
+   */
+  OutputChannel& getOutputChannel() {
+    return *d_out;
+  }
+
+  /**
+   * Get the valuation associated to this theory.
+   */
+  Valuation& getValuation() {
+    return d_valuation;
+  }
+
+  /**
+   * Get the quantifiers engine associated to this theory.
+   */
+  QuantifiersEngine* getQuantifiersEngine() {
+    return d_quantEngine;
+  }
+
+  /**
+   * Get the quantifiers engine associated to this theory (const version).
+   */
+  const QuantifiersEngine* getQuantifiersEngine() const {
+    return d_quantEngine;
+  }
+
+  /**
+   * Finish theory initialization.  At this point, options and the logic
+   * setting are final, and the master equality engine and quantifiers
+   * engine (if any) are initialized.  This base class implementation
+   * does nothing.
+   */
+  virtual void finishInit() { }
+
+  /**
+   * Some theories have kinds that are effectively definitions and
+   * should be expanded before they are handled.  Definitions allow
+   * a much wider range of actions than the normal forms given by the
+   * rewriter; they can enable other theories and create new terms.
+   * However no assumptions can be made about subterms having been
+   * expanded or rewritten.  Where possible rewrite rules should be
+   * used, definitions should only be used when rewrites are not
+   * possible, for example in handling under-specified operations
+   * using partially defined functions.
+   */
+  virtual Node expandDefinition(LogicRequest &logicRequest, Node node) {
+    // by default, do nothing
+    return node;
+  }
+
+  /**
+   * Pre-register a term.  Done one time for a Node per SAT context level.
+   */
+  virtual void preRegisterTerm(TNode) { }
+
+  /**
+   * Assert a fact in the current context.
+   */
+  void assertFact(TNode assertion, bool isPreregistered) {
+    Trace("theory") << "Theory<" << getId() << ">::assertFact[" << d_satContext->getLevel() << "](" << assertion << ", " << (isPreregistered ? "true" : "false") << ")" << std::endl;
+    d_facts.push_back(Assertion(assertion, isPreregistered));
+  }
+
+  /**
+   * This method is called to notify a theory that the node n should
+   * be considered a "shared term" by this theory
+   */
+  virtual void addSharedTerm(TNode n) { }
+
+  /**
+   * Called to set the master equality engine.
+   */
+  virtual void setMasterEqualityEngine(eq::EqualityEngine* eq) { }
+
+  /**
+   * Called to set the quantifiers engine.
+   */
+  virtual void setQuantifiersEngine(QuantifiersEngine* qe) {
+    d_quantEngine = qe;
+  }
+
+  /**
+   * Return the current theory care graph. Theories should overload computeCareGraph to do
+   * the actual computation, and use addCarePair to add pairs to the care graph.
+   */
+  void getCareGraph(CareGraph& careGraph) {
+    Trace("sharing") << "Theory<" << getId() << ">::getCareGraph()" << std::endl;
+    TimerStat::CodeTimer computeCareGraphTime(d_computeCareGraphTime);
+    d_careGraph = &careGraph;
+    computeCareGraph();
+    d_careGraph = NULL;
+  }
+
+  /**
+   * Return the status of two terms in the current context. Should be implemented in
+   * sub-theories to enable more efficient theory-combination.
+   */
+  virtual EqualityStatus getEqualityStatus(TNode a, TNode b) { return EQUALITY_UNKNOWN; }
+
+  /**
+   * Return the model value of the give shared term (or null if not available).
+   */
+  virtual Node getModelValue(TNode var) { return Node::null(); }
+
+  /**
+   * Check the current assignment's consistency.
+   *
+   * An implementation of check() is required to either:
+   * - return a conflict on the output channel,
+   * - be interrupted,
+   * - throw an exception
+   * - or call get() until done() is true.
+   */
+  virtual void check(Effort level = EFFORT_FULL) { }
+  
+  /**
+   * Needs last effort check?
+   */ 
+  virtual bool needsCheckLastEffort() { return false; }
+  /**
+   * T-propagate new literal assignments in the current context.
+   */
+  virtual void propagate(Effort level = EFFORT_FULL) { }
+
+  /**
+   * Return an explanation for the literal represented by parameter n
+   * (which was previously propagated by this theory).
+   */
+  virtual Node explain(TNode n) {
+    Unimplemented("Theory %s propagated a node but doesn't implement the "
+                  "Theory::explain() interface!", identify().c_str());
+  }
+
+  /**
+   * Get all relevant information in this theory regarding the current
+   * model.  This should be called after a call to check( FULL_EFFORT )
+   * for all theories with no conflicts and no lemmas added.
+   * If fullModel is true, then we must specify sufficient information for
+   * the model class to construct constant representatives for each equivalence
+   * class.
+   */
+  virtual void collectModelInfo( TheoryModel* m, bool fullModel ){ }
+  /** if theories want to do something with model after building, do it here */
+  virtual void postProcessModel( TheoryModel* m ){ }
+  
+  /**
+   * Return a decision request, if the theory has one, or the NULL node
+   * otherwise.
+   * If returning non-null node, hould set priority to
+   *                        0 if decision is necessary for model-soundness,
+   *                        1 if decision is necessary for completeness,
+   *                        >1 otherwise.
+   */
+  virtual Node getNextDecisionRequest( unsigned& priority ) { return Node(); }
+
+  /**
+   * Statically learn from assertion "in," which has been asserted
+   * true at the top level.  The theory should only add (via
+   * ::operator<< or ::append()) to the "learned" builder---it should
+   * *never* clear it.  It is a conjunction to add to the formula at
+   * the top-level and may contain other theories' contributions.
+   */
+  virtual void ppStaticLearn(TNode in, NodeBuilder<>& learned) { }
+
+  enum PPAssertStatus {
+    /** Atom has been solved  */
+    PP_ASSERT_STATUS_SOLVED,
+    /** Atom has not been solved */
+    PP_ASSERT_STATUS_UNSOLVED,
+    /** Atom is inconsistent */
+    PP_ASSERT_STATUS_CONFLICT
+  };
+
+  /**
+   * Given a literal, add the solved substitutions to the map, if any.
+   * The method should return true if the literal can be safely removed.
+   */
+  virtual PPAssertStatus ppAssert(TNode in, SubstitutionMap& outSubstitutions);
+
+  /**
+   * Given an atom of the theory coming from the input formula, this
+   * method can be overridden in a theory implementation to rewrite
+   * the atom into an equivalent form.  This is only called just
+   * before an input atom to the engine.
+   */
+  virtual Node ppRewrite(TNode atom) { return atom; }
+
+  /**
+   * Don't preprocess subterm of this term
+   */
+  virtual bool ppDontRewriteSubterm(TNode atom) { return false; }
+  
+  /** notify preprocessed assertions
+   *  Called on new assertions after preprocessing before they are asserted to theory engine.
+   *  Should not modify assertions.
+  */
+  virtual void ppNotifyAssertions( std::vector< Node >& assertions ) {}
+
+  /**
+   * A Theory is called with presolve exactly one time per user
+   * check-sat.  presolve() is called after preregistration,
+   * rewriting, and Boolean propagation, (other theories'
+   * propagation?), but the notified Theory has not yet had its
+   * check() or propagate() method called.  A Theory may empty its
+   * assertFact() queue using get().  A Theory can raise conflicts,
+   * add lemmas, and propagate literals during presolve().
+   *
+   * NOTE: The presolve property must be added to the kinds file for
+   * the theory.
+   */
+  virtual void presolve() { }
+
+  /**
+   * A Theory is called with postsolve exactly one time per user
+   * check-sat.  postsolve() is called after the query has completed
+   * (regardless of whether sat, unsat, or unknown), and after any
+   * model-querying related to the query has been performed.
+   * After this call, the theory will not get another check() or
+   * propagate() call until presolve() is called again.  A Theory
+   * cannot raise conflicts, add lemmas, or propagate literals during
+   * postsolve().
+   */
+  virtual void postsolve() { }
+
+  /**
+   * Notification sent to the theory wheneven the search restarts.
+   * Serves as a good time to do some clean-up work, and you can
+   * assume you're at DL 0 for the purposes of Contexts.  This function
+   * should not use the output channel.
+   */
+  virtual void notifyRestart() { }
+
+  /**
+   * Identify this theory (for debugging, dynamic configuration,
+   * etc..)
+   */
+  virtual std::string identify() const = 0;
+
+  /** Set user attribute
+    * This function is called when an attribute is set by a user.  In SMT-LIBv2 this is done
+    *  via the syntax (! n :attr)
+    */
+  virtual void setUserAttribute(const std::string& attr, Node n, std::vector<Node> node_values, std::string str_value) {
+    Unimplemented("Theory %s doesn't support Theory::setUserAttribute interface",
+                  identify().c_str());
+  }
+
+  /** A set of theories */
+  typedef uint32_t Set;
+
+  /** A set of all theories */
+  static const Set AllTheories = (1 << theory::THEORY_LAST) - 1;
+
+  /** Pops a first theory off the set */
+  static inline TheoryId setPop(Set& set) {
+    uint32_t i = ffs(set); // Find First Set (bit)
+    if (i == 0) { return THEORY_LAST; }
+    TheoryId id = (TheoryId)(i-1);
+    set = setRemove(id, set);
+    return id;
+  }
+
+  /** Returns the size of a set of theories */
+  static inline size_t setSize(Set set) {
+    size_t count = 0;
+    while (setPop(set) != THEORY_LAST) {
+      ++ count;
+    }
+    return count;
+  }
+
+  /** Returns the index size of a set of theories */
+  static inline size_t setIndex(TheoryId id, Set set) {
+    Assert (setContains(id, set));
+    size_t count = 0;
+    while (setPop(set) != id) {
+      ++ count;
+    }
+    return count;
+  }
+
+  /** Add the theory to the set. If no set specified, just returns a singleton set */
+  static inline Set setInsert(TheoryId theory, Set set = 0) {
+    return set | (1 << theory);
+  }
+
+  /** Add the theory to the set. If no set specified, just returns a singleton set */
+  static inline Set setRemove(TheoryId theory, Set set = 0) {
+    return setDifference(set, setInsert(theory));
+  }
+
+  /** Check if the set contains the theory */
+  static inline bool setContains(TheoryId theory, Set set) {
+    return set & (1 << theory);
+  }
+
+  static inline Set setComplement(Set a) {
+    return (~a) & AllTheories;
+  }
+
+  static inline Set setIntersection(Set a, Set b) {
+    return a & b;
+  }
+
+  static inline Set setUnion(Set a, Set b) {
+    return a | b;
+  }
+
+  /** a - b  */
+  static inline Set setDifference(Set a, Set b) {
+    return (~b) & a;
+  }
+
+  static inline std::string setToString(theory::Theory::Set theorySet) {
+    std::stringstream ss;
+    ss << "[";
+    for(unsigned theoryId = 0; theoryId < theory::THEORY_LAST; ++theoryId) {
+      if (theory::Theory::setContains((theory::TheoryId)theoryId, theorySet)) {
+        ss << (theory::TheoryId) theoryId << " ";
+      }
+    }
+    ss << "]";
+    return ss.str();
+  }
+
+  typedef context::CDList<Assertion>::const_iterator assertions_iterator;
+
+  /**
+   * Provides access to the facts queue, primarily intended for theory
+   * debugging purposes.
+   *
+   * @return the iterator to the beginning of the fact queue
+   */
+  assertions_iterator facts_begin() const {
+    return d_facts.begin();
+  }
+
+  /**
+   * Provides access to the facts queue, primarily intended for theory
+   * debugging purposes.
+   *
+   * @return the iterator to the end of the fact queue
+   */
+  assertions_iterator facts_end() const {
+    return d_facts.end();
+  }
+  /**
+   * Whether facts have been asserted to this theory.
+   *
+   * @return true iff facts have been asserted to this theory.
+   */
+  bool hasFacts() { 
+    return !d_facts.empty(); 
+  }
+
+  typedef context::CDList<TNode>::const_iterator shared_terms_iterator;
+
+  /**
+   * Provides access to the shared terms, primarily intended for theory
+   * debugging purposes.
+   *
+   * @return the iterator to the beginning of the shared terms list
+   */
+  shared_terms_iterator shared_terms_begin() const {
+    return d_sharedTerms.begin();
+  }
+
+  /**
+   * Provides access to the facts queue, primarily intended for theory
+   * debugging purposes.
+   *
+   * @return the iterator to the end of the shared terms list
+   */
+  shared_terms_iterator shared_terms_end() const {
+    return d_sharedTerms.end();
+  }
+
+
+  /**
+   * This is a utility function for constructing a copy of the currently shared terms
+   * in a queriable form.  As this is
+   */
+  std::hash_set<TNode, TNodeHashFunction> currentlySharedTerms() const;
+
+  /**
+   * This allows the theory to be queried for whether a literal, lit, is
+   * entailed by the theory.  This returns a pair of a Boolean and a node E.
+   *
+   * If the Boolean is true, then E is a formula that entails lit and E is propositionally
+   * entailed by the assertions to the theory.
+   *
+   * If the Boolean is false, it is "unknown" if lit is entailed and E may be
+   * any node.
+   *
+   * The literal lit is either an atom a or (not a), which must belong to the theory:
+   *   There is some TheoryOfMode m s.t. Theory::theoryOf(m, a) == this->getId().
+   *
+   * There are NO assumptions that a or the subterms of a have been
+   * preprocessed in any form.  This includes ppRewrite, rewriting,
+   * preregistering, registering, definition expansion or ITE removal!
+   *
+   * Theories are free to limit the amount of effort they use and so may
+   * always opt to return "unknown".  Both "unknown" and "not entailed",
+   * may return for E a non-boolean Node (e.g. Node::null()).  (There is no explicit output
+   * for the negation of lit is entailed.)
+   *
+   * If lit is theory valid, the return result may be the Boolean constant
+   * true for E.
+   *
+   * If lit is entailed by multiple assertions on the theory's getFact()
+   * queue, a_1, a_2, ... and a_k, this may return E=(and a_1 a_2 ... a_k) or
+   * another theory entailed explanation E=(and (and a_1 a_2) (and a3 a_4) ... a_k)
+   *
+   * If lit is entailed by a single assertion on the theory's getFact()
+   * queue, say a, this may return E=a.
+   *
+   * The theory may always return false!
+   *
+   * The search is controlled by the parameter params.  For default behavior,
+   * this may be left NULL.
+   *
+   * Theories that want parameters extend the virtual EntailmentCheckParameters
+   * class.  Users ask the theory for an appropriate subclass from the theory
+   * and configure that.  How this is implemented is on a per theory basis.
+   *
+   * The search may provide additional output to guide the user of
+   * this function.  This output is stored in a EntailmentCheckSideEffects*
+   * output parameter.  The implementation of this is theory specific.  For
+   * no output, this is NULL.
+   *
+   * Theories may not touch their output stream during an entailment check.
+   *
+   * @param  lit     a literal belonging to the theory.
+   * @param  params  the control parameters for the entailment check.
+   * @param  out     a theory specific output object of the entailment search.
+   * @return         a pair <b,E> s.t. if b is true, then a formula E such that
+   * E |= lit in the theory.
+   */
+  virtual std::pair<bool, Node> entailmentCheck(TNode lit, const EntailmentCheckParameters* params = NULL, EntailmentCheckSideEffects* out = NULL);
+
+  /* equality engine TODO: use? */
+  virtual eq::EqualityEngine * getEqualityEngine() { return NULL; }
+  
+  /* get extended theory */
+  virtual ExtTheory * getExtTheory() { return d_extt; }
+
+  /* get current substitution at an effort
+   *   input : vars
+   *   output : subs, exp 
+   *   where ( exp[vars[i]] => vars[i] = subs[i] ) holds for all i
+  */
+  virtual bool getCurrentSubstitution( int effort, std::vector< Node >& vars, std::vector< Node >& subs, std::map< Node, std::vector< Node > >& exp ) { return false; }
+  
+  /* get reduction for node
+       if return value is not 0, then n is reduced. 
+       if return value <0 then n is reduced SAT-context-independently (e.g. by a lemma that persists at this user-context level).
+       if nr is non-null, then ( n = nr ) should be added as a lemma by caller, and return value should be <0.
+   */
+  virtual int getReduction( int effort, Node n, Node& nr ) { return 0; }
+
+  /**
+   * Turn on proof-production mode.
+   */
+  void produceProofs() { d_proofsEnabled = true; }
+
+};/* class Theory */
+
+std::ostream& operator<<(std::ostream& os, theory::Theory::Effort level);
+inline std::ostream& operator<<(std::ostream& out, const theory::Assertion& a);
+
+inline theory::Assertion Theory::get() {
+  Assert( !done(), "Theory::get() called with assertion queue empty!" );
+
+  // Get the assertion
+  Assertion fact = d_facts[d_factsHead];
+  d_factsHead = d_factsHead + 1;
+
+  Trace("theory") << "Theory::get() => " << fact << " (" << d_facts.size() - d_factsHead << " left)" << std::endl;
+
+  if(Dump.isOn("state")) {
+    Dump("state") << AssertCommand(fact.assertion.toExpr());
+  }
+
+  return fact;
+}
+
+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) {
+  return out << theory.identify();
+}
+
+inline std::ostream& operator << (std::ostream& out, theory::Theory::PPAssertStatus status) {
+  switch (status) {
+  case theory::Theory::PP_ASSERT_STATUS_SOLVED:
+    out << "SOLVE_STATUS_SOLVED"; break;
+  case theory::Theory::PP_ASSERT_STATUS_UNSOLVED:
+    out << "SOLVE_STATUS_UNSOLVED"; break;
+  case theory::Theory::PP_ASSERT_STATUS_CONFLICT:
+    out << "SOLVE_STATUS_CONFLICT"; break;
+  default:
+    Unhandled();
+  }
+  return out;
+}
+
+class EntailmentCheckParameters {
+private:
+  TheoryId d_tid;
+protected:
+  EntailmentCheckParameters(TheoryId tid);
+public:
+  TheoryId getTheoryId() const;
+  virtual ~EntailmentCheckParameters();
+};/* class EntailmentCheckParameters */
+
+class EntailmentCheckSideEffects {
+private:
+  TheoryId d_tid;
+protected:
+  EntailmentCheckSideEffects(TheoryId tid);
+public:
+  TheoryId getTheoryId() const;
+  virtual ~EntailmentCheckSideEffects();
+};/* class EntailmentCheckSideEffects */
+
+
+class ExtTheory {
+  friend class Theory;
+  typedef context::CDHashMap<Node, bool, NodeHashFunction> NodeBoolMap;
+  typedef context::CDHashSet<Node, NodeHashFunction> NodeSet;
+protected:
+  Theory * d_parent;
+  Node d_true;
+  //extended string terms, map to whether they are active
+  NodeBoolMap d_ext_func_terms;
+  //set of terms from d_ext_func_terms that are SAT-context-independently inactive 
+  //  (e.g. term t when a reduction lemma of the form t = t' was added)
+  NodeSet d_ci_inactive;
+  //cache of all lemmas sent
+  NodeSet d_lemmas;
+  NodeSet d_pp_lemmas;
+  //watched term for checking if any non-reduced extended functions exist 
+  context::CDO< Node > d_has_extf;
+  //extf kind
+  std::map< Kind, bool > d_extf_kind;
+  //information for each term in d_ext_func_terms
+  class ExtfInfo {
+  public:
+    //all variables in this term
+    std::vector< Node > d_vars;
+  };
+  std::map< Node, ExtfInfo > d_extf_info;
+  //collect variables
+  void collectVars( Node n, std::vector< Node >& vars, std::map< Node, bool >& visited );
+  // is context dependent inactive
+  bool isContextIndependentInactive( Node n );
+  //do inferences internal
+  bool doInferencesInternal( int effort, std::vector< Node >& terms, std::vector< Node >& nred, bool batch, bool isRed ); 
+  //send lemma
+  bool sendLemma( Node lem, bool preprocess = false );
+  //register term (recursive)
+  void registerTermRec( Node n, std::map< Node, bool >& visited );
+public:
+  ExtTheory( Theory * p );
+  virtual ~ExtTheory(){}
+  //add extf kind
+  void addFunctionKind( Kind k ) { d_extf_kind[k] = true; }
+  bool hasFunctionKind( Kind k ) { return d_extf_kind.find( k )!=d_extf_kind.end(); }
+  //register term
+  //  adds n to d_ext_func_terms if addFunctionKind( n.getKind() ) was called
+  void registerTerm( Node n );
+  void registerTermRec( Node n );
+  // set n as reduced/inactive
+  //   if contextDepend = false, then n remains inactive in the duration of this user-context level
+  void markReduced( Node n, bool contextDepend = true );
+  // mark that a and b are congruent terms: set b inactive, set a to inactive if b was inactive
+  void markCongruent( Node a, Node b );
+  
+  //getSubstitutedTerms
+  //  input : effort, terms
+  //  output : sterms, exp, where ( exp[i] => terms[i] = sterms[i] ) for all i
+  void getSubstitutedTerms( int effort, std::vector< Node >& terms, std::vector< Node >& sterms, std::vector< std::vector< Node > >& exp );
+  //doInferences
+  //  * input : effort, terms, batch (whether to send one lemma or lemmas for all terms)
+  //  *   sends rewriting lemmas of the form ( exp => t = c ) where t is in terms and c is a constant, c = rewrite( t*sigma ) where exp |= sigma
+  //  * output : nred (the terms that are still active)
+  //  * return : true iff lemma is sent
+  bool doInferences( int effort, std::vector< Node >& terms, std::vector< Node >& nred, bool batch=true ); 
+  bool doInferences( int effort, std::vector< Node >& nred, bool batch=true  );
+  //doReductions 
+  //  same as doInferences, but will send reduction lemmas of the form ( t = t' ) where t is in terms, t' is equivalent, reduced term
+  bool doReductions( int effort, std::vector< Node >& terms, std::vector< Node >& nred, bool batch=true  ); 
+  bool doReductions( int effort, std::vector< Node >& nred, bool batch=true  ); 
+
+  //has active term 
+  bool hasActiveTerm();
+  //is n active
+  bool isActive( Node n );
+  //get the set of active terms from d_ext_func_terms
+  void getActive( std::vector< Node >& active );
+  //get the set of active terms from d_ext_func_terms of kind k
+  void getActive( std::vector< Node >& active, Kind k );
+};
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__THEORY_H */
diff --git a/src/theory/theory_engine.cpp b/src/theory/theory_engine.cpp
new file mode 100644
index 0000000..58f3e4f
--- /dev/null
+++ b/src/theory/theory_engine.cpp
@@ -0,0 +1,2265 @@
+/*********************                                                        */
+/*! \file theory_engine.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The theory engine
+ **
+ ** The theory engine.
+ **/
+
+#include "theory/theory_engine.h"
+
+#include <list>
+#include <vector>
+
+#include "decision/decision_engine.h"
+#include "expr/attribute.h"
+#include "expr/node.h"
+#include "expr/node_builder.h"
+#include "options/bv_options.h"
+#include "options/options.h"
+#include "options/proof_options.h"
+#include "options/quantifiers_options.h"
+#include "proof/cnf_proof.h"
+#include "proof/lemma_proof.h"
+#include "proof/proof_manager.h"
+#include "proof/theory_proof.h"
+#include "smt/term_formula_removal.h"
+#include "smt/logic_exception.h"
+#include "smt_util/lemma_output_channel.h"
+#include "smt_util/node_visitor.h"
+#include "theory/arith/arith_ite_utils.h"
+#include "theory/bv/theory_bv_utils.h"
+#include "theory/ite_utilities.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/model_engine.h"
+#include "theory/quantifiers/theory_quantifiers.h"
+#include "theory/quantifiers_engine.h"
+#include "theory/rewriter.h"
+#include "theory/theory.h"
+#include "theory/theory_model.h"
+#include "theory/theory_traits.h"
+#include "theory/uf/equality_engine.h"
+#include "theory/unconstrained_simplifier.h"
+#include "util/resource_manager.h"
+
+using namespace std;
+
+using namespace CVC4::theory;
+
+namespace CVC4 {
+
+inline void flattenAnd(Node n, std::vector<TNode>& out){
+  Assert(n.getKind() == kind::AND);
+  for(Node::iterator i=n.begin(), i_end=n.end(); i != i_end; ++i){
+    Node curr = *i;
+    if(curr.getKind() == kind::AND){
+      flattenAnd(curr, out);
+    }else{
+      out.push_back(curr);
+    }
+  }
+}
+
+inline Node flattenAnd(Node n){
+  std::vector<TNode> out;
+  flattenAnd(n, out);
+  return NodeManager::currentNM()->mkNode(kind::AND, out);
+}
+
+theory::LemmaStatus TheoryEngine::EngineOutputChannel::lemma(TNode lemma,
+                                                             ProofRule rule,
+                                                             bool removable,
+                                                             bool preprocess,
+                                                             bool sendAtoms) {
+  Debug("theory::lemma") << "EngineOutputChannel<" << d_theory << ">::lemma("
+                         << lemma << ")"
+                         << ", preprocess = " << preprocess << std::endl;
+  ++d_statistics.lemmas;
+  d_engine->d_outputChannelUsed = true;
+
+  PROOF({ registerLemmaRecipe(lemma, lemma, preprocess, d_theory); });
+
+  theory::LemmaStatus result =
+      d_engine->lemma(lemma, rule, false, removable, preprocess,
+                      sendAtoms ? d_theory : theory::THEORY_LAST);
+  return result;
+}
+
+void TheoryEngine::EngineOutputChannel::registerLemmaRecipe(Node lemma, Node originalLemma, bool preprocess, theory::TheoryId theoryId) {
+  // During CNF conversion, conjunctions will be broken down into
+  // multiple lemmas. In order for the recipes to match, we have to do
+  // the same here.
+  NodeManager* nm = NodeManager::currentNM();
+
+  if (preprocess)
+    lemma = d_engine->preprocess(lemma);
+
+  bool negated = (lemma.getKind() == kind::NOT);
+  Node nnLemma = negated ? lemma[0] : lemma;
+
+  switch (nnLemma.getKind()) {
+
+  case kind::AND:
+    if (!negated) {
+      for (unsigned i = 0; i < nnLemma.getNumChildren(); ++i)
+        registerLemmaRecipe(nnLemma[i], originalLemma, false, theoryId);
+    } else {
+      NodeBuilder<> builder(kind::OR);
+      for (unsigned i = 0; i < nnLemma.getNumChildren(); ++i)
+        builder << nnLemma[i].negate();
+
+      Node disjunction = (builder.getNumChildren() == 1) ? builder[0] : builder;
+      registerLemmaRecipe(disjunction, originalLemma, false, theoryId);
+    }
+    break;
+
+  case kind::EQUAL:
+    if( nnLemma[0].getType().isBoolean() ){
+      if (!negated) {
+        registerLemmaRecipe(nm->mkNode(kind::OR, nnLemma[0], nnLemma[1].negate()), originalLemma, false, theoryId);
+        registerLemmaRecipe(nm->mkNode(kind::OR, nnLemma[0].negate(), nnLemma[1]), originalLemma, false, theoryId);
+      } else {
+        registerLemmaRecipe(nm->mkNode(kind::OR, nnLemma[0], nnLemma[1]), originalLemma, false, theoryId);
+        registerLemmaRecipe(nm->mkNode(kind::OR, nnLemma[0].negate(), nnLemma[1].negate()), originalLemma, false, theoryId);
+      }
+    }
+    break;
+
+  case kind::ITE:
+    if (!negated) {
+      registerLemmaRecipe(nm->mkNode(kind::OR, nnLemma[0].negate(), nnLemma[1]), originalLemma, false, theoryId);
+      registerLemmaRecipe(nm->mkNode(kind::OR, nnLemma[0], nnLemma[2]), originalLemma, false, theoryId);
+    } else {
+      registerLemmaRecipe(nm->mkNode(kind::OR, nnLemma[0].negate(), nnLemma[1].negate()), originalLemma, false, theoryId);
+      registerLemmaRecipe(nm->mkNode(kind::OR, nnLemma[0], nnLemma[2].negate()), originalLemma, false, theoryId);
+    }
+    break;
+
+  default:
+    break;
+  }
+
+  // Theory lemmas have one step that proves the empty clause
+  LemmaProofRecipe proofRecipe;
+  Node emptyNode;
+  LemmaProofRecipe::ProofStep proofStep(theoryId, emptyNode);
+
+  // Remember the original lemma, so we can report this later when asked to
+  proofRecipe.setOriginalLemma(originalLemma);
+
+  // Record the assertions and rewrites
+  Node rewritten;
+  if (lemma.getKind() == kind::OR) {
+    for (unsigned i = 0; i < lemma.getNumChildren(); ++i) {
+      rewritten = theory::Rewriter::rewrite(lemma[i]);
+      if (rewritten != lemma[i]) {
+        proofRecipe.addRewriteRule(lemma[i].negate(), rewritten.negate());
+      }
+      proofStep.addAssertion(lemma[i]);
+      proofRecipe.addBaseAssertion(rewritten);
+    }
+  } else {
+    rewritten = theory::Rewriter::rewrite(lemma);
+    if (rewritten != lemma) {
+      proofRecipe.addRewriteRule(lemma.negate(), rewritten.negate());
+    }
+    proofStep.addAssertion(lemma);
+    proofRecipe.addBaseAssertion(rewritten);
+  }
+  proofRecipe.addStep(proofStep);
+  ProofManager::getCnfProof()->setProofRecipe(&proofRecipe);
+}
+
+theory::LemmaStatus TheoryEngine::EngineOutputChannel::splitLemma(
+    TNode lemma, bool removable) {
+  Debug("theory::lemma") << "EngineOutputChannel<" << d_theory << ">::lemma("
+                         << lemma << ")" << std::endl;
+  ++d_statistics.lemmas;
+  d_engine->d_outputChannelUsed = true;
+
+  Debug("pf::explain") << "TheoryEngine::EngineOutputChannel::splitLemma( "
+                       << lemma << " )" << std::endl;
+  theory::LemmaStatus result =
+      d_engine->lemma(lemma, RULE_SPLIT, false, removable, false, d_theory);
+  return result;
+}
+
+bool TheoryEngine::EngineOutputChannel::propagate(TNode literal)
+  throw(AssertionException, UnsafeInterruptException) {
+  Debug("theory::propagate") << "EngineOutputChannel<" << d_theory << ">::propagate(" << literal << ")" << std::endl;
+  ++ d_statistics.propagations;
+  d_engine->d_outputChannelUsed = true;
+  return d_engine->propagate(literal, d_theory);
+}
+
+void TheoryEngine::EngineOutputChannel::conflict(TNode conflictNode, Proof* pf)
+  throw(AssertionException, UnsafeInterruptException) {
+  Trace("theory::conflict") << "EngineOutputChannel<" << d_theory << ">::conflict(" << conflictNode << ")" << std::endl;
+  Assert (pf == NULL); // Theory shouldn't be producing proofs yet
+  ++ d_statistics.conflicts;
+  d_engine->d_outputChannelUsed = true;
+  d_engine->conflict(conflictNode, d_theory);
+}
+
+void TheoryEngine::finishInit() {
+  // initialize the quantifiers engine
+  d_quantEngine = new QuantifiersEngine(d_context, d_userContext, this);
+
+  //initialize the model
+  if( d_logicInfo.isQuantified() ) {
+    d_curr_model = d_quantEngine->getModel();
+  } else {
+    d_curr_model = new theory::TheoryModel(d_userContext, "DefaultModel", true);
+    d_aloc_curr_model = true;
+  }
+
+  if (d_logicInfo.isQuantified()) {
+    d_quantEngine->finishInit();
+    Assert(d_masterEqualityEngine == 0);
+    d_masterEqualityEngine = new eq::EqualityEngine(d_masterEENotify,getSatContext(), "theory::master", false);
+
+    for(TheoryId theoryId = theory::THEORY_FIRST; theoryId != theory::THEORY_LAST; ++ theoryId) {
+      if (d_theoryTable[theoryId]) {
+        d_theoryTable[theoryId]->setQuantifiersEngine(d_quantEngine);
+        d_theoryTable[theoryId]->setMasterEqualityEngine(d_masterEqualityEngine);
+      }
+    }
+  }
+
+  for(TheoryId theoryId = theory::THEORY_FIRST; theoryId != theory::THEORY_LAST; ++ theoryId) {
+    if (d_theoryTable[theoryId]) {
+      d_theoryTable[theoryId]->finishInit();
+    }
+  }
+}
+
+void TheoryEngine::eqNotifyNewClass(TNode t){
+  if (d_logicInfo.isQuantified()) {
+    d_quantEngine->eqNotifyNewClass( t );
+  }
+}
+
+void TheoryEngine::eqNotifyPreMerge(TNode t1, TNode t2){
+  if (d_logicInfo.isQuantified()) {
+    d_quantEngine->eqNotifyPreMerge( t1, t2 );
+  }
+}
+
+void TheoryEngine::eqNotifyPostMerge(TNode t1, TNode t2){
+  if (d_logicInfo.isQuantified()) {
+    d_quantEngine->eqNotifyPostMerge( t1, t2 );
+  }
+}
+
+void TheoryEngine::eqNotifyDisequal(TNode t1, TNode t2, TNode reason){
+  if (d_logicInfo.isQuantified()) {
+    d_quantEngine->eqNotifyDisequal( t1, t2, reason );
+  }
+}
+
+
+TheoryEngine::TheoryEngine(context::Context* context,
+                           context::UserContext* userContext,
+                           RemoveTermFormulas& iteRemover,
+                           const LogicInfo& logicInfo,
+                           LemmaChannels* channels)
+: d_propEngine(NULL),
+  d_decisionEngine(NULL),
+  d_context(context),
+  d_userContext(userContext),
+  d_logicInfo(logicInfo),
+  d_sharedTerms(this, context),
+  d_masterEqualityEngine(NULL),
+  d_masterEENotify(*this),
+  d_quantEngine(NULL),
+  d_curr_model(NULL),
+  d_aloc_curr_model(false),
+  d_curr_model_builder(NULL),
+  d_ppCache(),
+  d_possiblePropagations(context),
+  d_hasPropagated(context),
+  d_inConflict(context, false),
+  d_hasShutDown(false),
+  d_incomplete(context, false),
+  d_propagationMap(context),
+  d_propagationMapTimestamp(context, 0),
+  d_propagatedLiterals(context),
+  d_propagatedLiteralsIndex(context, 0),
+  d_atomRequests(context),
+  d_tform_remover(iteRemover),
+  d_combineTheoriesTime("TheoryEngine::combineTheoriesTime"),
+  d_true(),
+  d_false(),
+  d_interrupted(false),
+  d_resourceManager(NodeManager::currentResourceManager()),
+  d_channels(channels),
+  d_inPreregister(false),
+  d_factsAsserted(context, false),
+  d_preRegistrationVisitor(this, context),
+  d_sharedTermsVisitor(d_sharedTerms),
+  d_unconstrainedSimp(new UnconstrainedSimplifier(context, logicInfo)),
+  d_bvToBoolPreprocessor(),
+  d_theoryAlternatives(),
+  d_attr_handle(),
+  d_arithSubstitutionsAdded("theory::arith::zzz::arith::substitutions", 0)
+{
+  for(TheoryId theoryId = theory::THEORY_FIRST; theoryId != theory::THEORY_LAST;
+      ++ theoryId)
+  {
+    d_theoryTable[theoryId] = NULL;
+    d_theoryOut[theoryId] = NULL;
+  }
+
+  // build model information if applicable
+  d_curr_model_builder = new theory::TheoryEngineModelBuilder(this);
+
+  smtStatisticsRegistry()->registerStat(&d_combineTheoriesTime);
+  d_true = NodeManager::currentNM()->mkConst<bool>(true);
+  d_false = NodeManager::currentNM()->mkConst<bool>(false);
+
+#ifdef CVC4_PROOF
+  ProofManager::currentPM()->initTheoryProofEngine();
+#endif
+
+  d_iteUtilities = new ITEUtilities(d_tform_remover.getContainsVisitor());
+
+  smtStatisticsRegistry()->registerStat(&d_arithSubstitutionsAdded);
+}
+
+TheoryEngine::~TheoryEngine() {
+  Assert(d_hasShutDown);
+
+  for(TheoryId theoryId = theory::THEORY_FIRST; theoryId != theory::THEORY_LAST; ++ theoryId) {
+    if(d_theoryTable[theoryId] != NULL) {
+      delete d_theoryTable[theoryId];
+      delete d_theoryOut[theoryId];
+    }
+  }
+
+  delete d_curr_model_builder;
+  if( d_aloc_curr_model ){
+    delete d_curr_model;
+  }
+
+  delete d_quantEngine;
+
+  delete d_masterEqualityEngine;
+
+  smtStatisticsRegistry()->unregisterStat(&d_combineTheoriesTime);
+
+  delete d_unconstrainedSimp;
+
+  delete d_iteUtilities;
+
+  smtStatisticsRegistry()->unregisterStat(&d_arithSubstitutionsAdded);
+}
+
+void TheoryEngine::interrupt() throw(ModalException) {
+  d_interrupted = true;
+}
+
+void TheoryEngine::preRegister(TNode preprocessed) {
+
+  Debug("theory") << "TheoryEngine::preRegister( " << preprocessed << ")" << std::endl;
+  if(Dump.isOn("missed-t-propagations")) {
+    d_possiblePropagations.push_back(preprocessed);
+  }
+  d_preregisterQueue.push(preprocessed);
+
+  if (!d_inPreregister) {
+    // We're in pre-register
+    d_inPreregister = true;
+
+    // Process the pre-registration queue
+    while (!d_preregisterQueue.empty()) {
+      // Get the next atom to pre-register
+      preprocessed = d_preregisterQueue.front();
+      d_preregisterQueue.pop();
+
+      if (d_logicInfo.isSharingEnabled() && preprocessed.getKind() == kind::EQUAL) {
+        // When sharing is enabled, we propagate from the shared terms manager also
+        d_sharedTerms.addEqualityToPropagate(preprocessed);
+      }
+
+      // Pre-register the terms in the atom
+      Theory::Set theories = NodeVisitor<PreRegisterVisitor>::run(d_preRegistrationVisitor, preprocessed);
+      theories = Theory::setRemove(THEORY_BOOL, theories);
+      // Remove the top theory, if any more that means multiple theories were involved
+      bool multipleTheories = Theory::setRemove(Theory::theoryOf(preprocessed), theories);
+      TheoryId i;
+      // These checks don't work with finite model finding, because it
+      // uses Rational constants to represent cardinality constraints,
+      // even though arithmetic isn't actually involved.
+      if(!options::finiteModelFind()) {
+        while((i = Theory::setPop(theories)) != THEORY_LAST) {
+          if(!d_logicInfo.isTheoryEnabled(i)) {
+            LogicInfo newLogicInfo = d_logicInfo.getUnlockedCopy();
+            newLogicInfo.enableTheory(i);
+            newLogicInfo.lock();
+            stringstream ss;
+            ss << "The logic was specified as " << d_logicInfo.getLogicString()
+               << ", which doesn't include " << i
+               << ", but found a term in that theory." << endl
+               << "You might want to extend your logic to "
+               << newLogicInfo.getLogicString() << endl;
+            throw LogicException(ss.str());
+          }
+        }
+      }
+      if (multipleTheories) {
+        // Collect the shared terms if there are multiple theories
+        NodeVisitor<SharedTermsVisitor>::run(d_sharedTermsVisitor, preprocessed);
+      }
+    }
+
+    // Leaving pre-register
+    d_inPreregister = false;
+  }
+}
+
+void TheoryEngine::printAssertions(const char* tag) {
+  if (Trace.isOn(tag)) {
+
+    for (TheoryId theoryId = THEORY_FIRST; theoryId < THEORY_LAST; ++theoryId) {
+      Theory* theory = d_theoryTable[theoryId];
+      if (theory && d_logicInfo.isTheoryEnabled(theoryId)) {
+        Trace(tag) << "--------------------------------------------" << endl;
+        Trace(tag) << "Assertions of " << theory->getId() << ": " << endl;
+        context::CDList<Assertion>::const_iterator it = theory->facts_begin(), it_end = theory->facts_end();
+        for (unsigned i = 0; it != it_end; ++ it, ++i) {
+            if ((*it).isPreregistered) {
+              Trace(tag) << "[" << i << "]: ";
+            } else {
+              Trace(tag) << "(" << i << "): ";
+            }
+            Trace(tag) << (*it).assertion << endl;
+        }
+
+        if (d_logicInfo.isSharingEnabled()) {
+          Trace(tag) << "Shared terms of " << theory->getId() << ": " << endl;
+          context::CDList<TNode>::const_iterator it = theory->shared_terms_begin(), it_end = theory->shared_terms_end();
+          for (unsigned i = 0; it != it_end; ++ it, ++i) {
+              Trace(tag) << "[" << i << "]: " << (*it) << endl;
+          }
+        }
+      }
+    }
+  }
+}
+
+void TheoryEngine::dumpAssertions(const char* tag) {
+  if (Dump.isOn(tag)) {
+    Dump(tag) << CommentCommand("Starting completeness check");
+    for (TheoryId theoryId = THEORY_FIRST; theoryId < THEORY_LAST; ++theoryId) {
+      Theory* theory = d_theoryTable[theoryId];
+      if (theory && d_logicInfo.isTheoryEnabled(theoryId)) {
+        Dump(tag) << CommentCommand("Completeness check");
+        Dump(tag) << PushCommand();
+
+        // Dump the shared terms
+        if (d_logicInfo.isSharingEnabled()) {
+          Dump(tag) << CommentCommand("Shared terms");
+          context::CDList<TNode>::const_iterator it = theory->shared_terms_begin(), it_end = theory->shared_terms_end();
+          for (unsigned i = 0; it != it_end; ++ it, ++i) {
+              stringstream ss;
+              ss << (*it);
+              Dump(tag) << CommentCommand(ss.str());
+          }
+        }
+
+        // Dump the assertions
+        Dump(tag) << CommentCommand("Assertions");
+        context::CDList<Assertion>::const_iterator it = theory->facts_begin(), it_end = theory->facts_end();
+        for (; it != it_end; ++ it) {
+          // Get the assertion
+          Node assertionNode = (*it).assertion;
+          // Purify all the terms
+
+          if ((*it).isPreregistered) {
+            Dump(tag) << CommentCommand("Preregistered");
+          } else {
+            Dump(tag) << CommentCommand("Shared assertion");
+          }
+          Dump(tag) << AssertCommand(assertionNode.toExpr());
+        }
+        Dump(tag) << CheckSatCommand();
+
+        Dump(tag) << PopCommand();
+      }
+    }
+  }
+}
+
+/**
+ * Check all (currently-active) theories for conflicts.
+ * @param effort the effort level to use
+ */
+void TheoryEngine::check(Theory::Effort effort) {
+  // spendResource();
+
+  // Reset the interrupt flag
+  d_interrupted = false;
+
+#ifdef CVC4_FOR_EACH_THEORY_STATEMENT
+#undef CVC4_FOR_EACH_THEORY_STATEMENT
+#endif
+#define CVC4_FOR_EACH_THEORY_STATEMENT(THEORY) \
+    if (theory::TheoryTraits<THEORY>::hasCheck && d_logicInfo.isTheoryEnabled(THEORY)) { \
+       theoryOf(THEORY)->check(effort); \
+       if (d_inConflict) { \
+         Debug("conflict") << THEORY << " in conflict. " << std::endl; \
+         break; \
+       } \
+    }
+
+  // Do the checking
+  try {
+
+    // Mark the output channel unused (if this is FULL_EFFORT, and nothing
+    // is done by the theories, no additional check will be needed)
+    d_outputChannelUsed = false;
+
+    // Mark the lemmas flag (no lemmas added)
+    d_lemmasAdded = false;
+
+    Debug("theory") << "TheoryEngine::check(" << effort << "): d_factsAsserted = " << (d_factsAsserted ? "true" : "false") << endl;
+
+    // If in full effort, we have a fake new assertion just to jumpstart the checking
+    if (Theory::fullEffort(effort)) {
+      d_factsAsserted = true;
+    }
+
+    // Check until done
+    while (d_factsAsserted && !d_inConflict && !d_lemmasAdded) {
+
+      Debug("theory") << "TheoryEngine::check(" << effort << "): running check" << endl;
+
+      Trace("theory::assertions") << endl;
+      if (Trace.isOn("theory::assertions")) {
+        printAssertions("theory::assertions");
+      }
+
+      if(Theory::fullEffort(effort)) {
+        Trace("theory::assertions::fulleffort") << endl;
+        if (Trace.isOn("theory::assertions::fulleffort")) {
+          printAssertions("theory::assertions::fulleffort");
+        }
+      }
+
+      // Note that we've discharged all the facts
+      d_factsAsserted = false;
+
+      // Do the checking
+      CVC4_FOR_EACH_THEORY;
+
+      if(Dump.isOn("missed-t-conflicts")) {
+        Dump("missed-t-conflicts")
+            << CommentCommand("Completeness check for T-conflicts; expect sat")
+            << CheckSatCommand();
+      }
+
+      Debug("theory") << "TheoryEngine::check(" << effort << "): running propagation after the initial check" << endl;
+
+      // We are still satisfiable, propagate as much as possible
+      propagate(effort);
+
+      // We do combination if all has been processed and we are in fullcheck
+      if (Theory::fullEffort(effort) && d_logicInfo.isSharingEnabled() && !d_factsAsserted && !d_lemmasAdded && !d_inConflict) {
+        // Do the combination
+        Debug("theory") << "TheoryEngine::check(" << effort << "): running combination" << endl;
+        combineTheories();
+        if(d_logicInfo.isQuantified()){
+          d_quantEngine->notifyCombineTheories();
+        }
+      }
+    }
+
+    // Must consult quantifiers theory for last call to ensure sat, or otherwise add a lemma
+    if( effort == Theory::EFFORT_FULL && ! d_inConflict && ! needCheck() ) {
+      Trace("theory::assertions-model") << endl;
+      if (Trace.isOn("theory::assertions-model")) {
+        printAssertions("theory::assertions-model");
+      }
+      //checks for theories requiring the model go at last call
+      bool builtModel = false;
+      for (TheoryId theoryId = THEORY_FIRST; theoryId < THEORY_LAST; ++theoryId) {
+        if( theoryId!=THEORY_QUANTIFIERS ){
+          Theory* theory = d_theoryTable[theoryId];
+          if (theory && d_logicInfo.isTheoryEnabled(theoryId)) {
+            if( theory->needsCheckLastEffort() ){
+              if( !builtModel ){
+                builtModel = true;
+                d_curr_model_builder->buildModel(d_curr_model, false);
+              }
+              theory->check(Theory::EFFORT_LAST_CALL);
+            }
+          }
+        }
+      }
+      if( ! d_inConflict && ! needCheck() ){
+        if(d_logicInfo.isQuantified()) {
+          // quantifiers engine must pass effort last call check
+          d_quantEngine->check(Theory::EFFORT_LAST_CALL);
+          // if returning incomplete or SAT, we have ensured that d_curr_model has been built with fullModel=true
+        } else if(options::produceModels()) {
+          // must build model at this point
+          d_curr_model_builder->buildModel(d_curr_model, true);
+        }
+      }
+    }
+
+    Debug("theory") << "TheoryEngine::check(" << effort << "): done, we are " << (d_inConflict ? "unsat" : "sat") << (d_lemmasAdded ? " with new lemmas" : " with no new lemmas");
+    Debug("theory") << ", need check = " << (needCheck() ? "YES" : "NO") << endl;
+
+    if(!d_inConflict && Theory::fullEffort(effort) && d_masterEqualityEngine != NULL && !d_lemmasAdded) {
+      AlwaysAssert(d_masterEqualityEngine->consistent());
+    }
+  } catch(const theory::Interrupted&) {
+    Trace("theory") << "TheoryEngine::check() => interrupted" << endl;
+  }
+  // If fulleffort, check all theories
+  if(Dump.isOn("theory::fullcheck") && Theory::fullEffort(effort)) {
+    if (!d_inConflict && !needCheck()) {
+      dumpAssertions("theory::fullcheck");
+    }
+  }
+}
+
+void TheoryEngine::combineTheories() {
+
+  Trace("combineTheories") << "TheoryEngine::combineTheories()" << endl;
+
+  TimerStat::CodeTimer combineTheoriesTimer(d_combineTheoriesTime);
+
+  // Care graph we'll be building
+  CareGraph careGraph;
+
+#ifdef CVC4_FOR_EACH_THEORY_STATEMENT
+#undef CVC4_FOR_EACH_THEORY_STATEMENT
+#endif
+#define CVC4_FOR_EACH_THEORY_STATEMENT(THEORY) \
+  if (theory::TheoryTraits<THEORY>::isParametric && d_logicInfo.isTheoryEnabled(THEORY)) { \
+    theoryOf(THEORY)->getCareGraph(careGraph); \
+  }
+
+  // Call on each parametric theory to give us its care graph
+  CVC4_FOR_EACH_THEORY;
+
+  Trace("combineTheories") << "TheoryEngine::combineTheories(): care graph size = " << careGraph.size() << endl;
+
+  // Now add splitters for the ones we are interested in
+  CareGraph::const_iterator care_it = careGraph.begin();
+  CareGraph::const_iterator care_it_end = careGraph.end();
+
+  for (; care_it != care_it_end; ++ care_it) {
+    const CarePair& carePair = *care_it;
+
+    Debug("combineTheories") << "TheoryEngine::combineTheories(): checking " << carePair.a << " = " << carePair.b << " from " << carePair.theory << endl;
+
+    Assert(d_sharedTerms.isShared(carePair.a) || carePair.a.isConst());
+    Assert(d_sharedTerms.isShared(carePair.b) || carePair.b.isConst());
+
+    // The equality in question (order for no repetition)
+    Node equality = carePair.a.eqNode(carePair.b);
+    // EqualityStatus es = getEqualityStatus(carePair.a, carePair.b);
+    // Debug("combineTheories") << "TheoryEngine::combineTheories(): " <<
+    //   (es == EQUALITY_TRUE_AND_PROPAGATED ? "EQUALITY_TRUE_AND_PROPAGATED" :
+    //   es == EQUALITY_FALSE_AND_PROPAGATED ? "EQUALITY_FALSE_AND_PROPAGATED" :
+    //   es == EQUALITY_TRUE ? "EQUALITY_TRUE" :
+    //   es == EQUALITY_FALSE ? "EQUALITY_FALSE" :
+    //   es == EQUALITY_TRUE_IN_MODEL ? "EQUALITY_TRUE_IN_MODEL" :
+    //   es == EQUALITY_FALSE_IN_MODEL ? "EQUALITY_FALSE_IN_MODEL" :
+    //   es == EQUALITY_UNKNOWN ? "EQUALITY_UNKNOWN" :
+    //    "Unexpected case") << endl;
+
+    // We need to split on it
+    Debug("combineTheories") << "TheoryEngine::combineTheories(): requesting a split " << endl;
+
+    lemma(equality.orNode(equality.notNode()), RULE_INVALID, false, false, false, carePair.theory);
+
+    // This code is supposed to force preference to follow what the theory models already have
+    // but it doesn't seem to make a big difference - need to explore more -Clark
+    // if (true) {
+    //   if (es == EQUALITY_TRUE || es == EQUALITY_TRUE_IN_MODEL) {
+    Node e = ensureLiteral(equality);
+    d_propEngine->requirePhase(e, true);
+    //   }
+    //   else if (es == EQUALITY_FALSE_IN_MODEL) {
+    //     Node e = ensureLiteral(equality);
+    //     d_propEngine->requirePhase(e, false);
+    //   }
+    // }
+  }
+}
+
+void TheoryEngine::propagate(Theory::Effort effort) {
+  // Reset the interrupt flag
+  d_interrupted = false;
+
+  // Definition of the statement that is to be run by every theory
+#ifdef CVC4_FOR_EACH_THEORY_STATEMENT
+#undef CVC4_FOR_EACH_THEORY_STATEMENT
+#endif
+#define CVC4_FOR_EACH_THEORY_STATEMENT(THEORY) \
+  if (theory::TheoryTraits<THEORY>::hasPropagate && d_logicInfo.isTheoryEnabled(THEORY)) { \
+    theoryOf(THEORY)->propagate(effort); \
+  }
+
+  // Reset the interrupt flag
+  d_interrupted = false;
+
+  // Propagate for each theory using the statement above
+  CVC4_FOR_EACH_THEORY;
+
+  if(Dump.isOn("missed-t-propagations")) {
+    for(unsigned i = 0; i < d_possiblePropagations.size(); ++i) {
+      Node atom = d_possiblePropagations[i];
+      bool value;
+      if(d_propEngine->hasValue(atom, value)) {
+        continue;
+      }
+      // Doesn't have a value, check it (and the negation)
+      if(d_hasPropagated.find(atom) == d_hasPropagated.end()) {
+        Dump("missed-t-propagations")
+          << CommentCommand("Completeness check for T-propagations; expect invalid")
+          << EchoCommand(atom.toString())
+          << QueryCommand(atom.toExpr())
+          << EchoCommand(atom.notNode().toString())
+          << QueryCommand(atom.notNode().toExpr());
+      }
+    }
+  }
+}
+
+Node TheoryEngine::getNextDecisionRequest() {
+  // Definition of the statement that is to be run by every theory
+  unsigned min_priority = 0;
+  Node dec;
+#ifdef CVC4_FOR_EACH_THEORY_STATEMENT
+#undef CVC4_FOR_EACH_THEORY_STATEMENT
+#endif
+#define CVC4_FOR_EACH_THEORY_STATEMENT(THEORY) \
+  if (theory::TheoryTraits<THEORY>::hasGetNextDecisionRequest && d_logicInfo.isTheoryEnabled(THEORY)) { \
+    unsigned priority; \
+    Node n = theoryOf(THEORY)->getNextDecisionRequest( priority ); \
+    if(! n.isNull() && ( dec.isNull() || priority<min_priority ) ) { \
+      dec = n; \
+      min_priority = priority; \
+    } \
+  }
+
+  // Request decision from each theory using the statement above
+  CVC4_FOR_EACH_THEORY;
+
+  return dec;
+}
+
+bool TheoryEngine::properConflict(TNode conflict) const {
+  bool value;
+  if (conflict.getKind() == kind::AND) {
+    for (unsigned i = 0; i < conflict.getNumChildren(); ++ i) {
+      if (! getPropEngine()->hasValue(conflict[i], value)) {
+        Debug("properConflict") << "Bad conflict is due to unassigned atom: "
+                                << conflict[i] << endl;
+        return false;
+      }
+      if (! value) {
+        Debug("properConflict") << "Bad conflict is due to false atom: "
+                                << conflict[i] << endl;
+        return false;
+      }
+      if (conflict[i] != Rewriter::rewrite(conflict[i])) {
+        Debug("properConflict") << "Bad conflict is due to atom not in normal form: "
+                                << conflict[i] << " vs " << Rewriter::rewrite(conflict[i]) << endl;
+        return false;
+      }
+    }
+  } else {
+    if (! getPropEngine()->hasValue(conflict, value)) {
+      Debug("properConflict") << "Bad conflict is due to unassigned atom: "
+                              << conflict << endl;
+      return false;
+    }
+    if(! value) {
+      Debug("properConflict") << "Bad conflict is due to false atom: "
+                              << conflict << endl;
+      return false;
+    }
+    if (conflict != Rewriter::rewrite(conflict)) {
+      Debug("properConflict") << "Bad conflict is due to atom not in normal form: "
+                              << conflict << " vs " << Rewriter::rewrite(conflict) << endl;
+      return false;
+    }
+  }
+  return true;
+}
+
+bool TheoryEngine::properPropagation(TNode lit) const {
+  if(!getPropEngine()->isSatLiteral(lit)) {
+    return false;
+  }
+  bool b;
+  return !getPropEngine()->hasValue(lit, b);
+}
+
+bool TheoryEngine::properExplanation(TNode node, TNode expl) const {
+  // Explanation must be either a conjunction of true literals that have true SAT values already
+  // or a singled literal that has a true SAT value already.
+  if (expl.getKind() == kind::AND) {
+    for (unsigned i = 0; i < expl.getNumChildren(); ++ i) {
+      bool value;
+      if (!d_propEngine->hasValue(expl[i], value) || !value) {
+        return false;
+      }
+    }
+  } else {
+    bool value;
+    return d_propEngine->hasValue(expl, value) && value;
+  }
+  return true;
+}
+
+void TheoryEngine::collectModelInfo( theory::TheoryModel* m, bool fullModel ){
+  //have shared term engine collectModelInfo
+  //  d_sharedTerms.collectModelInfo( m, fullModel );
+  // Consult each active theory to get all relevant information
+  // concerning the model.
+  for(TheoryId theoryId = theory::THEORY_FIRST; theoryId < theory::THEORY_LAST; ++theoryId) {
+    if(d_logicInfo.isTheoryEnabled(theoryId)) {
+      Trace("model-builder") << "  CollectModelInfo on theory: " << theoryId << endl;
+      d_theoryTable[theoryId]->collectModelInfo( m, fullModel );
+    }
+  }
+  // Get the Boolean variables
+  vector<TNode> boolVars;
+  d_propEngine->getBooleanVariables(boolVars);
+  vector<TNode>::iterator it, iend = boolVars.end();
+  bool hasValue, value;
+  for (it = boolVars.begin(); it != iend; ++it) {
+    TNode var = *it;
+    hasValue = d_propEngine->hasValue(var, value);
+    // TODO: Assert that hasValue is true?
+    if (!hasValue) {
+      value = false;
+    }
+    Trace("model-builder-assertions") << "(assert" << (value ? " " : " (not ") << var << (value ? ");" : "));") << endl;
+    m->assertPredicate(var, value);
+  }
+}
+
+void TheoryEngine::postProcessModel( theory::TheoryModel* m ){
+  for(TheoryId theoryId = theory::THEORY_FIRST; theoryId < theory::THEORY_LAST; ++theoryId) {
+    if(d_logicInfo.isTheoryEnabled(theoryId)) {
+      Trace("model-builder-debug") << "  PostProcessModel on theory: " << theoryId << endl;
+      d_theoryTable[theoryId]->postProcessModel( m );
+    }
+  }
+}
+
+/* get model */
+TheoryModel* TheoryEngine::getModel() {
+  return d_curr_model;
+}
+
+bool TheoryEngine::presolve() {
+  // Reset the interrupt flag
+  d_interrupted = false;
+
+  try {
+    // Definition of the statement that is to be run by every theory
+#ifdef CVC4_FOR_EACH_THEORY_STATEMENT
+#undef CVC4_FOR_EACH_THEORY_STATEMENT
+#endif
+#define CVC4_FOR_EACH_THEORY_STATEMENT(THEORY) \
+    if (theory::TheoryTraits<THEORY>::hasPresolve) {    \
+      theoryOf(THEORY)->presolve(); \
+      if(d_inConflict) { \
+        return true; \
+      } \
+    }
+
+    // Presolve for each theory using the statement above
+    CVC4_FOR_EACH_THEORY;
+  } catch(const theory::Interrupted&) {
+    Trace("theory") << "TheoryEngine::presolve() => interrupted" << endl;
+  }
+  // return whether we have a conflict
+  return false;
+}/* TheoryEngine::presolve() */
+
+void TheoryEngine::postsolve() {
+  // Reset the interrupt flag
+  d_interrupted = false;
+  bool CVC4_UNUSED wasInConflict = d_inConflict;
+
+  try {
+    // Definition of the statement that is to be run by every theory
+#ifdef CVC4_FOR_EACH_THEORY_STATEMENT
+#undef CVC4_FOR_EACH_THEORY_STATEMENT
+#endif
+#define CVC4_FOR_EACH_THEORY_STATEMENT(THEORY) \
+    if (theory::TheoryTraits<THEORY>::hasPostsolve) { \
+      theoryOf(THEORY)->postsolve(); \
+      Assert(! d_inConflict || wasInConflict, "conflict raised during postsolve()"); \
+    }
+
+    // Postsolve for each theory using the statement above
+    CVC4_FOR_EACH_THEORY;
+  } catch(const theory::Interrupted&) {
+    Trace("theory") << "TheoryEngine::postsolve() => interrupted" << endl;
+  }
+}/* TheoryEngine::postsolve() */
+
+
+void TheoryEngine::notifyRestart() {
+  // Reset the interrupt flag
+  d_interrupted = false;
+
+  // Definition of the statement that is to be run by every theory
+#ifdef CVC4_FOR_EACH_THEORY_STATEMENT
+#undef CVC4_FOR_EACH_THEORY_STATEMENT
+#endif
+#define CVC4_FOR_EACH_THEORY_STATEMENT(THEORY) \
+  if (theory::TheoryTraits<THEORY>::hasNotifyRestart && d_logicInfo.isTheoryEnabled(THEORY)) { \
+    theoryOf(THEORY)->notifyRestart(); \
+  }
+
+  // notify each theory using the statement above
+  CVC4_FOR_EACH_THEORY;
+}
+
+void TheoryEngine::ppStaticLearn(TNode in, NodeBuilder<>& learned) {
+  // Reset the interrupt flag
+  d_interrupted = false;
+
+  // Definition of the statement that is to be run by every theory
+#ifdef CVC4_FOR_EACH_THEORY_STATEMENT
+#undef CVC4_FOR_EACH_THEORY_STATEMENT
+#endif
+#define CVC4_FOR_EACH_THEORY_STATEMENT(THEORY) \
+  if (theory::TheoryTraits<THEORY>::hasPpStaticLearn) { \
+    theoryOf(THEORY)->ppStaticLearn(in, learned); \
+  }
+
+  // static learning for each theory using the statement above
+  CVC4_FOR_EACH_THEORY;
+}
+
+void TheoryEngine::shutdown() {
+  // Set this first; if a Theory shutdown() throws an exception,
+  // at least the destruction of the TheoryEngine won't confound
+  // matters.
+  d_hasShutDown = true;
+
+  // Shutdown all the theories
+  for(TheoryId theoryId = theory::THEORY_FIRST; theoryId < theory::THEORY_LAST; ++theoryId) {
+    if(d_theoryTable[theoryId]) {
+      theoryOf(theoryId)->shutdown();
+    }
+  }
+
+  d_ppCache.clear();
+}
+
+theory::Theory::PPAssertStatus TheoryEngine::solve(TNode literal, SubstitutionMap& substitutionOut) {
+  // Reset the interrupt flag
+  d_interrupted = false;
+
+  TNode atom = literal.getKind() == kind::NOT ? literal[0] : literal;
+  Trace("theory::solve") << "TheoryEngine::solve(" << literal << "): solving with " << theoryOf(atom)->getId() << endl;
+
+  if(! d_logicInfo.isTheoryEnabled(Theory::theoryOf(atom)) &&
+     Theory::theoryOf(atom) != THEORY_SAT_SOLVER) {
+    stringstream ss;
+    ss << "The logic was specified as " << d_logicInfo.getLogicString()
+       << ", which doesn't include " << Theory::theoryOf(atom)
+       << ", but got a preprocessing-time fact for that theory." << endl
+       << "The fact:" << endl
+       << literal;
+    throw LogicException(ss.str());
+  }
+
+  Theory::PPAssertStatus solveStatus = theoryOf(atom)->ppAssert(literal, substitutionOut);
+  Trace("theory::solve") << "TheoryEngine::solve(" << literal << ") => " << solveStatus << endl;
+  return solveStatus;
+}
+
+// Recursively traverse a term and call the theory rewriter on its sub-terms
+Node TheoryEngine::ppTheoryRewrite(TNode term) {
+  NodeMap::iterator find = d_ppCache.find(term);
+  if (find != d_ppCache.end()) {
+    return (*find).second;
+  }
+  unsigned nc = term.getNumChildren();
+  if (nc == 0) {
+    return theoryOf(term)->ppRewrite(term);
+  }
+  Trace("theory-pp") << "ppTheoryRewrite { " << term << endl;
+
+  Node newTerm;
+  if (theoryOf(term)->ppDontRewriteSubterm(term)) {
+    newTerm = Rewriter::rewrite(term);
+  } else {
+    NodeBuilder<> newNode(term.getKind());
+    if (term.getMetaKind() == kind::metakind::PARAMETERIZED) {
+      newNode << term.getOperator();
+    }
+    unsigned i;
+    for (i = 0; i < nc; ++i) {
+      newNode << ppTheoryRewrite(term[i]);
+    }
+    newTerm = Rewriter::rewrite(Node(newNode));
+  }
+  Node newTerm2 = theoryOf(newTerm)->ppRewrite(newTerm);
+  if (newTerm != newTerm2) {
+    newTerm = ppTheoryRewrite(Rewriter::rewrite(newTerm2));
+  }
+  d_ppCache[term] = newTerm;
+  Trace("theory-pp")<< "ppTheoryRewrite returning " << newTerm << "}" << endl;
+  return newTerm;
+}
+
+
+void TheoryEngine::preprocessStart()
+{
+  d_ppCache.clear();
+}
+
+
+struct preprocess_stack_element {
+  TNode node;
+  bool children_added;
+  preprocess_stack_element(TNode node)
+  : node(node), children_added(false) {}
+};/* struct preprocess_stack_element */
+
+
+Node TheoryEngine::preprocess(TNode assertion) {
+
+  Trace("theory::preprocess") << "TheoryEngine::preprocess(" << assertion << ")" << endl;
+  // spendResource();
+
+  // Do a topological sort of the subexpressions and substitute them
+  vector<preprocess_stack_element> toVisit;
+  toVisit.push_back(assertion);
+
+  while (!toVisit.empty())
+  {
+    // The current node we are processing
+    preprocess_stack_element& stackHead = toVisit.back();
+    TNode current = stackHead.node;
+
+    Debug("theory::internal") << "TheoryEngine::preprocess(" << assertion << "): processing " << current << endl;
+
+    // If node already in the cache we're done, pop from the stack
+    NodeMap::iterator find = d_ppCache.find(current);
+    if (find != d_ppCache.end()) {
+      toVisit.pop_back();
+      continue;
+    }
+
+    if(! d_logicInfo.isTheoryEnabled(Theory::theoryOf(current)) &&
+       Theory::theoryOf(current) != THEORY_SAT_SOLVER) {
+      stringstream ss;
+      ss << "The logic was specified as " << d_logicInfo.getLogicString()
+         << ", which doesn't include " << Theory::theoryOf(current)
+         << ", but got a preprocessing-time fact for that theory." << endl
+         << "The fact:" << endl
+         << current;
+      throw LogicException(ss.str());
+    }
+
+    // If this is an atom, we preprocess its terms with the theory ppRewriter
+    if (Theory::theoryOf(current) != THEORY_BOOL) {
+      Node ppRewritten = ppTheoryRewrite(current);
+      d_ppCache[current] = ppRewritten;
+      Assert(Rewriter::rewrite(d_ppCache[current]) == d_ppCache[current]);
+      continue;
+    }
+
+    // Not yet substituted, so process
+    if (stackHead.children_added) {
+      // Children have been processed, so substitute
+      NodeBuilder<> builder(current.getKind());
+      if (current.getMetaKind() == kind::metakind::PARAMETERIZED) {
+        builder << current.getOperator();
+      }
+      for (unsigned i = 0; i < current.getNumChildren(); ++ i) {
+        Assert(d_ppCache.find(current[i]) != d_ppCache.end());
+        builder << d_ppCache[current[i]];
+      }
+      // Mark the substitution and continue
+      Node result = builder;
+      if (result != current) {
+        result = Rewriter::rewrite(result);
+      }
+      Debug("theory::internal") << "TheoryEngine::preprocess(" << assertion << "): setting " << current << " -> " << result << endl;
+      d_ppCache[current] = result;
+      toVisit.pop_back();
+    } else {
+      // Mark that we have added the children if any
+      if (current.getNumChildren() > 0) {
+        stackHead.children_added = true;
+        // We need to add the children
+        for(TNode::iterator child_it = current.begin(); child_it != current.end(); ++ child_it) {
+          TNode childNode = *child_it;
+          NodeMap::iterator childFind = d_ppCache.find(childNode);
+          if (childFind == d_ppCache.end()) {
+            toVisit.push_back(childNode);
+          }
+        }
+      } else {
+        // No children, so we're done
+        Debug("substitution::internal") << "SubstitutionMap::internalSubstitute(" << assertion << "): setting " << current << " -> " << current << endl;
+        d_ppCache[current] = current;
+        toVisit.pop_back();
+      }
+    }
+  }
+
+  // Return the substituted version
+  return d_ppCache[assertion];
+}
+
+void TheoryEngine::notifyPreprocessedAssertions( std::vector< Node >& assertions ){
+  // call all the theories
+  for(TheoryId theoryId = theory::THEORY_FIRST; theoryId < theory::THEORY_LAST; ++theoryId) {
+    if(d_theoryTable[theoryId]) {
+      theoryOf(theoryId)->ppNotifyAssertions( assertions );
+    }
+  }
+}
+
+bool TheoryEngine::markPropagation(TNode assertion, TNode originalAssertion, theory::TheoryId toTheoryId, theory::TheoryId fromTheoryId) {
+
+  // What and where we are asserting
+  NodeTheoryPair toAssert(assertion, toTheoryId, d_propagationMapTimestamp);
+  // What and where it came from
+  NodeTheoryPair toExplain(originalAssertion, fromTheoryId, d_propagationMapTimestamp);
+
+  // See if the theory already got this literal
+  PropagationMap::const_iterator find = d_propagationMap.find(toAssert);
+  if (find != d_propagationMap.end()) {
+    // The theory already knows this
+    Trace("theory::assertToTheory") << "TheoryEngine::markPropagation(): already there" << endl;
+    return false;
+  }
+
+  Trace("theory::assertToTheory") << "TheoryEngine::markPropagation(): marking [" << d_propagationMapTimestamp << "] " << assertion << ", " << toTheoryId << " from " << originalAssertion << ", " << fromTheoryId << endl;
+
+  // Mark the propagation
+  d_propagationMap[toAssert] = toExplain;
+  d_propagationMapTimestamp = d_propagationMapTimestamp + 1;
+
+  return true;
+}
+
+
+void TheoryEngine::assertToTheory(TNode assertion, TNode originalAssertion, theory::TheoryId toTheoryId, theory::TheoryId fromTheoryId) {
+
+  Trace("theory::assertToTheory") << "TheoryEngine::assertToTheory(" << assertion << ", " << originalAssertion << "," << toTheoryId << ", " << fromTheoryId << ")" << endl;
+
+  Assert(toTheoryId != fromTheoryId);
+  if(toTheoryId != THEORY_SAT_SOLVER &&
+     ! d_logicInfo.isTheoryEnabled(toTheoryId)) {
+    stringstream ss;
+    ss << "The logic was specified as " << d_logicInfo.getLogicString()
+       << ", which doesn't include " << toTheoryId
+       << ", but got an asserted fact to that theory." << endl
+       << "The fact:" << endl
+       << assertion;
+    throw LogicException(ss.str());
+  }
+
+  if (d_inConflict) {
+    return;
+  }
+
+  // If sharing is disabled, things are easy
+  if (!d_logicInfo.isSharingEnabled()) {
+    Assert(assertion == originalAssertion);
+    if (fromTheoryId == THEORY_SAT_SOLVER) {
+      // Send to the apropriate theory
+      theory::Theory* toTheory = theoryOf(toTheoryId);
+      // We assert it, and we know it's preregistereed
+      toTheory->assertFact(assertion, true);
+      // Mark that we have more information
+      d_factsAsserted = true;
+    } else {
+      Assert(toTheoryId == THEORY_SAT_SOLVER);
+      // Check for propositional conflict
+      bool value;
+      if (d_propEngine->hasValue(assertion, value)) {
+        if (!value) {
+          Trace("theory::propagate") << "TheoryEngine::assertToTheory(" << assertion << ", " << toTheoryId << ", " << fromTheoryId << "): conflict (no sharing)" << endl;
+          d_inConflict = true;
+        } else {
+          return;
+        }
+      }
+      d_propagatedLiterals.push_back(assertion);
+    }
+    return;
+  }
+
+  // Polarity of the assertion
+  bool polarity = assertion.getKind() != kind::NOT;
+
+  // Atom of the assertion
+  TNode atom = polarity ? assertion : assertion[0];
+
+  // If sending to the shared terms database, it's also simple
+  if (toTheoryId == THEORY_BUILTIN) {
+    Assert(atom.getKind() == kind::EQUAL, "atom should be an EQUALity, not `%s'", atom.toString().c_str());
+    if (markPropagation(assertion, originalAssertion, toTheoryId, fromTheoryId)) {
+      d_sharedTerms.assertEquality(atom, polarity, assertion);
+    }
+    return;
+  }
+
+  // Things from the SAT solver are already normalized, so they go
+  // directly to the apropriate theory
+  if (fromTheoryId == THEORY_SAT_SOLVER) {
+    // We know that this is normalized, so just send it off to the theory
+    if (markPropagation(assertion, originalAssertion, toTheoryId, fromTheoryId)) {
+      // Is it preregistered
+      bool preregistered = d_propEngine->isSatLiteral(assertion) && Theory::theoryOf(assertion) == toTheoryId;
+      // We assert it
+      theoryOf(toTheoryId)->assertFact(assertion, preregistered);
+      // Mark that we have more information
+      d_factsAsserted = true;
+    }
+    return;
+  }
+
+  // Propagations to the SAT solver are just enqueued for pickup by
+  // the SAT solver later
+  if (toTheoryId == THEORY_SAT_SOLVER) {
+    if (markPropagation(assertion, originalAssertion, toTheoryId, fromTheoryId)) {
+      // Enqueue for propagation to the SAT solver
+      d_propagatedLiterals.push_back(assertion);
+      // Check for propositional conflicts
+      bool value;
+      if (d_propEngine->hasValue(assertion, value) && !value) {
+          Trace("theory::propagate") << "TheoryEngine::assertToTheory(" << assertion << ", " << toTheoryId << ", " << fromTheoryId << "): conflict (sharing)" << endl;
+        d_inConflict = true;
+      }
+    }
+    return;
+  }
+
+  Assert(atom.getKind() == kind::EQUAL);
+
+  // Normalize
+  Node normalizedLiteral = Rewriter::rewrite(assertion);
+
+  // See if it rewrites false directly -> conflict
+  if (normalizedLiteral.isConst()) {
+    if (!normalizedLiteral.getConst<bool>()) {
+      // Mark the propagation for explanations
+      if (markPropagation(normalizedLiteral, originalAssertion, toTheoryId, fromTheoryId)) {
+        // Get the explanation (conflict will figure out where it came from)
+        conflict(normalizedLiteral, toTheoryId);
+      } else {
+        Unreachable();
+      }
+      return;
+    }
+  }
+
+  // Try and assert (note that we assert the non-normalized one)
+  if (markPropagation(assertion, originalAssertion, toTheoryId, fromTheoryId)) {
+    // Check if has been pre-registered with the theory
+    bool preregistered = d_propEngine->isSatLiteral(assertion) && Theory::theoryOf(assertion) == toTheoryId;
+    // Assert away
+    theoryOf(toTheoryId)->assertFact(assertion, preregistered);
+    d_factsAsserted = true;
+  }
+
+  return;
+}
+
+void TheoryEngine::assertFact(TNode literal)
+{
+  Trace("theory") << "TheoryEngine::assertFact(" << literal << ")" << endl;
+
+  // spendResource();
+
+  // If we're in conflict, nothing to do
+  if (d_inConflict) {
+    return;
+  }
+
+  // Get the atom
+  bool polarity = literal.getKind() != kind::NOT;
+  TNode atom = polarity ? literal : literal[0];
+
+  if (d_logicInfo.isSharingEnabled()) {
+
+    // If any shared terms, it's time to do sharing work
+    if (d_sharedTerms.hasSharedTerms(atom)) {
+      // Notify the theories the shared terms
+      SharedTermsDatabase::shared_terms_iterator it = d_sharedTerms.begin(atom);
+      SharedTermsDatabase::shared_terms_iterator it_end = d_sharedTerms.end(atom);
+      for (; it != it_end; ++ it) {
+        TNode term = *it;
+        Theory::Set theories = d_sharedTerms.getTheoriesToNotify(atom, term);
+        for (TheoryId id = THEORY_FIRST; id != THEORY_LAST; ++ id) {
+          if (Theory::setContains(id, theories)) {
+            theoryOf(id)->addSharedTermInternal(term);
+          }
+        }
+        d_sharedTerms.markNotified(term, theories);
+      }
+    }
+
+    // If it's an equality, assert it to the shared term manager, even though the terms are not
+    // yet shared. As the terms become shared later, the shared terms manager will then add them
+    // to the assert the equality to the interested theories
+    if (atom.getKind() == kind::EQUAL) {
+      // Assert it to the the owning theory
+      assertToTheory(literal, literal, /* to */ Theory::theoryOf(atom), /* from */ THEORY_SAT_SOLVER);
+      // Shared terms manager will assert to interested theories directly, as the terms become shared
+      assertToTheory(literal, literal, /* to */ THEORY_BUILTIN, /* from */ THEORY_SAT_SOLVER);
+
+      // Now, let's check for any atom triggers from lemmas
+      AtomRequests::atom_iterator it = d_atomRequests.getAtomIterator(atom);
+      while (!it.done()) {
+        const AtomRequests::Request& request = it.get();
+        Node toAssert = polarity ? (Node) request.atom : request.atom.notNode();
+        Debug("theory::atoms") << "TheoryEngine::assertFact(" << literal << "): sending requested " << toAssert << endl;
+        assertToTheory(toAssert, literal, request.toTheory, THEORY_SAT_SOLVER);
+        it.next();
+      }
+
+    } else {
+      // Not an equality, just assert to the appropriate theory
+      assertToTheory(literal, literal, /* to */ Theory::theoryOf(atom), /* from */ THEORY_SAT_SOLVER);
+    }
+  } else {
+    // Assert the fact to the appropriate theory directly
+    assertToTheory(literal, literal, /* to */ Theory::theoryOf(atom), /* from */ THEORY_SAT_SOLVER);
+  }
+}
+
+bool TheoryEngine::propagate(TNode literal, theory::TheoryId theory) {
+
+  Debug("theory::propagate") << "TheoryEngine::propagate(" << literal << ", " << theory << ")" << endl;
+
+  // spendResource();
+
+  if(Dump.isOn("t-propagations")) {
+    Dump("t-propagations") << CommentCommand("negation of theory propagation: expect valid")
+                           << QueryCommand(literal.toExpr());
+  }
+  if(Dump.isOn("missed-t-propagations")) {
+    d_hasPropagated.insert(literal);
+  }
+
+  // Get the atom
+  bool polarity = literal.getKind() != kind::NOT;
+  TNode atom = polarity ? literal : literal[0];
+
+  if (d_logicInfo.isSharingEnabled() && atom.getKind() == kind::EQUAL) {
+    if (d_propEngine->isSatLiteral(literal)) {
+      // We propagate SAT literals to SAT
+      assertToTheory(literal, literal, /* to */ THEORY_SAT_SOLVER, /* from */ theory);
+    }
+    if (theory != THEORY_BUILTIN) {
+      // Assert to the shared terms database
+      assertToTheory(literal, literal, /* to */ THEORY_BUILTIN, /* from */ theory);
+    }
+  } else {
+    // We could be propagating a unit-clause lemma. In this case, we need to provide a
+    // recipe.
+    // TODO: Consider putting this someplace else? This is the only refence to the proof
+    // manager in this class.
+
+    PROOF({
+        LemmaProofRecipe proofRecipe;
+        proofRecipe.addBaseAssertion(literal);
+
+        Node emptyNode;
+        LemmaProofRecipe::ProofStep proofStep(theory, emptyNode);
+        proofStep.addAssertion(literal);
+        proofRecipe.addStep(proofStep);
+
+        ProofManager::getCnfProof()->setProofRecipe(&proofRecipe);
+      });
+
+    // Just send off to the SAT solver
+    Assert(d_propEngine->isSatLiteral(literal));
+    assertToTheory(literal, literal, /* to */ THEORY_SAT_SOLVER, /* from */ theory);
+  }
+
+  return !d_inConflict;
+}
+
+
+theory::EqualityStatus TheoryEngine::getEqualityStatus(TNode a, TNode b) {
+  Assert(a.getType().isComparableTo(b.getType()));
+  if (d_sharedTerms.isShared(a) && d_sharedTerms.isShared(b)) {
+    if (d_sharedTerms.areEqual(a,b)) {
+      return EQUALITY_TRUE_AND_PROPAGATED;
+    }
+    else if (d_sharedTerms.areDisequal(a,b)) {
+      return EQUALITY_FALSE_AND_PROPAGATED;
+    }
+  }
+  return theoryOf(Theory::theoryOf(a.getType()))->getEqualityStatus(a, b);
+}
+
+Node TheoryEngine::getModelValue(TNode var) {
+  if (var.isConst()) return var;  // FIXME: HACK!!!
+  Assert(d_sharedTerms.isShared(var));
+  return theoryOf(Theory::theoryOf(var.getType()))->getModelValue(var);
+}
+
+
+Node TheoryEngine::ensureLiteral(TNode n) {
+  Debug("ensureLiteral") << "rewriting: " << n << std::endl;
+  Node rewritten = Rewriter::rewrite(n);
+  Debug("ensureLiteral") << "      got: " << rewritten << std::endl;
+  Node preprocessed = preprocess(rewritten);
+  Debug("ensureLiteral") << "preprocessed: " << preprocessed << std::endl;
+  d_propEngine->ensureLiteral(preprocessed);
+  return preprocessed;
+}
+
+
+void TheoryEngine::printInstantiations( std::ostream& out ) {
+  if( d_quantEngine ){
+    d_quantEngine->printInstantiations( out );
+  }else{
+    out << "Internal error : instantiations not available when quantifiers are not present." << std::endl;
+  }
+}
+
+void TheoryEngine::printSynthSolution( std::ostream& out ) {
+  if( d_quantEngine ){
+    d_quantEngine->printSynthSolution( out );
+  }else{
+    out << "Internal error : synth solution not available when quantifiers are not present." << std::endl;
+  }
+}
+
+void TheoryEngine::getInstantiatedQuantifiedFormulas( std::vector< Node >& qs ) {
+  if( d_quantEngine ){
+    d_quantEngine->getInstantiatedQuantifiedFormulas( qs );
+  }else{
+    Assert( false );
+  }
+}
+
+void TheoryEngine::getInstantiations( Node q, std::vector< Node >& insts ) {
+  if( d_quantEngine ){
+    d_quantEngine->getInstantiations( q, insts );
+  }else{
+    Assert( false );
+  }
+}
+
+void TheoryEngine::getInstantiationTermVectors( Node q, std::vector< std::vector< Node > >& tvecs ) {
+  if( d_quantEngine ){
+    d_quantEngine->getInstantiationTermVectors( q, tvecs );
+  }else{
+    Assert( false );
+  }
+}
+
+void TheoryEngine::getInstantiations( std::map< Node, std::vector< Node > >& insts ) {
+  if( d_quantEngine ){
+    d_quantEngine->getInstantiations( insts );
+  }else{
+    Assert( false );
+  }
+}
+
+void TheoryEngine::getInstantiationTermVectors( std::map< Node, std::vector< std::vector< Node > > >& insts ) {
+  if( d_quantEngine ){
+    d_quantEngine->getInstantiationTermVectors( insts );
+  }else{
+    Assert( false );
+  }
+}
+
+Node TheoryEngine::getInstantiatedConjunction( Node q ) {
+  if( d_quantEngine ){
+    return d_quantEngine->getInstantiatedConjunction( q );
+  }else{
+    Assert( false );
+    return Node::null();
+  }
+}
+
+
+static Node mkExplanation(const std::vector<NodeTheoryPair>& explanation) {
+
+  std::set<TNode> all;
+  for (unsigned i = 0; i < explanation.size(); ++ i) {
+    Assert(explanation[i].theory == THEORY_SAT_SOLVER);
+    all.insert(explanation[i].node);
+  }
+
+  if (all.size() == 0) {
+    // Normalize to true
+    return NodeManager::currentNM()->mkConst<bool>(true);
+  }
+
+  if (all.size() == 1) {
+    // All the same, or just one
+    return explanation[0].node;
+  }
+
+  NodeBuilder<> conjunction(kind::AND);
+  std::set<TNode>::const_iterator it = all.begin();
+  std::set<TNode>::const_iterator it_end = all.end();
+  while (it != it_end) {
+    conjunction << *it;
+    ++ it;
+  }
+
+  return conjunction;
+}
+
+Node TheoryEngine::getExplanationAndRecipe(TNode node, LemmaProofRecipe* proofRecipe) {
+  Debug("theory::explain") << "TheoryEngine::getExplanation(" << node << "): current propagation index = " << d_propagationMapTimestamp << endl;
+
+  bool polarity = node.getKind() != kind::NOT;
+  TNode atom = polarity ? node : node[0];
+
+  // If we're not in shared mode, explanations are simple
+  if (!d_logicInfo.isSharingEnabled()) {
+    Debug("theory::explain") << "TheoryEngine::getExplanation: sharing is NOT enabled. "
+                             << " Responsible theory is: "
+                             << theoryOf(atom)->getId() << std::endl;
+
+    Node explanation = theoryOf(atom)->explain(node);
+    Debug("theory::explain") << "TheoryEngine::getExplanation(" << node << ") => " << explanation << endl;
+    PROOF({
+        if(proofRecipe) {
+          Node emptyNode;
+          LemmaProofRecipe::ProofStep proofStep(theoryOf(atom)->getId(), emptyNode);
+          proofStep.addAssertion(node);
+          proofRecipe->addBaseAssertion(node);
+
+          if (explanation.getKind() == kind::AND) {
+            // If the explanation is a conjunction, the recipe for the corresponding lemma is
+            // the negation of its conjuncts.
+            Node flat = flattenAnd(explanation);
+            for (unsigned i = 0; i < flat.getNumChildren(); ++i) {
+              if (flat[i].isConst() && flat[i].getConst<bool>()) {
+                ++ i;
+                continue;
+              }
+              if (flat[i].getKind() == kind::NOT &&
+                  flat[i][0].isConst() && !flat[i][0].getConst<bool>()) {
+                ++ i;
+                continue;
+              }
+              Debug("theory::explain") << "TheoryEngine::getExplanationAndRecipe: adding recipe assertion: "
+                                       << flat[i].negate() << std::endl;
+              proofStep.addAssertion(flat[i].negate());
+              proofRecipe->addBaseAssertion(flat[i].negate());
+            }
+          } else {
+            // The recipe for proving it is by negating it. "True" is not an acceptable reason.
+            if (!((explanation.isConst() && explanation.getConst<bool>()) ||
+                  (explanation.getKind() == kind::NOT &&
+                   explanation[0].isConst() && !explanation[0].getConst<bool>()))) {
+              proofStep.addAssertion(explanation.negate());
+              proofRecipe->addBaseAssertion(explanation.negate());
+            }
+          }
+
+          proofRecipe->addStep(proofStep);
+        }
+      });
+
+    return explanation;
+  }
+
+  Debug("theory::explain") << "TheoryEngine::getExplanation: sharing IS enabled" << std::endl;
+
+  // Initial thing to explain
+  NodeTheoryPair toExplain(node, THEORY_SAT_SOLVER, d_propagationMapTimestamp);
+  Assert(d_propagationMap.find(toExplain) != d_propagationMap.end());
+
+  NodeTheoryPair nodeExplainerPair = d_propagationMap[toExplain];
+  Debug("theory::explain") << "TheoryEngine::getExplanation: explainer for node "
+                           << nodeExplainerPair.node
+                           << " is theory: " << nodeExplainerPair.theory << std::endl;
+  TheoryId explainer = nodeExplainerPair.theory;
+
+  // Create the workplace for explanations
+  std::vector<NodeTheoryPair> explanationVector;
+  explanationVector.push_back(d_propagationMap[toExplain]);
+  // Process the explanation
+  if (proofRecipe) {
+    Node emptyNode;
+    LemmaProofRecipe::ProofStep proofStep(explainer, emptyNode);
+    proofStep.addAssertion(node);
+    proofRecipe->addStep(proofStep);
+    proofRecipe->addBaseAssertion(node);
+  }
+
+  getExplanation(explanationVector, proofRecipe);
+  Node explanation = mkExplanation(explanationVector);
+
+  Debug("theory::explain") << "TheoryEngine::getExplanation(" << node << ") => " << explanation << endl;
+
+  return explanation;
+}
+
+Node TheoryEngine::getExplanation(TNode node) {
+  LemmaProofRecipe *dontCareRecipe = NULL;
+  return getExplanationAndRecipe(node, dontCareRecipe);
+}
+
+struct AtomsCollect {
+
+  std::vector<TNode> d_atoms;
+  std::hash_set<TNode, TNodeHashFunction> d_visited;
+
+public:
+
+  typedef void return_type;
+
+  bool alreadyVisited(TNode current, TNode parent) {
+    // Check if already visited
+    if (d_visited.find(current) != d_visited.end()) return true;
+    // Don't visit non-boolean
+    if (!current.getType().isBoolean()) return true;
+    // New node
+    return false;
+  }
+
+  void visit(TNode current, TNode parent) {
+    if (Theory::theoryOf(current) != theory::THEORY_BOOL) {
+      d_atoms.push_back(current);
+    }
+    d_visited.insert(current);
+  }
+
+  void start(TNode node) {}
+  void done(TNode node) {}
+
+  std::vector<TNode> getAtoms() const {
+    return d_atoms;
+  }
+};
+
+void TheoryEngine::ensureLemmaAtoms(const std::vector<TNode>& atoms, theory::TheoryId atomsTo) {
+  for (unsigned i = 0; i < atoms.size(); ++ i) {
+
+    // Non-equality atoms are either owned by theory or they don't make sense
+    if (atoms[i].getKind() != kind::EQUAL) {
+      continue;
+    }
+
+    // The equality
+    Node eq = atoms[i];
+    // Simple normalization to not repeat stuff
+    if (eq[0] > eq[1]) {
+      eq = eq[1].eqNode(eq[0]);
+    }
+
+    // Rewrite the equality
+    Node eqNormalized = Rewriter::rewrite(atoms[i]);
+
+    Debug("theory::atoms") << "TheoryEngine::ensureLemmaAtoms(): " << eq << " with nf " << eqNormalized << endl;
+
+    // If the equality is a boolean constant, we send immediately
+    if (eqNormalized.isConst()) {
+      if (eqNormalized.getConst<bool>()) {
+        assertToTheory(eq, eqNormalized, /** to */ atomsTo, /** Sat solver */ theory::THEORY_SAT_SOLVER);
+      } else {
+        assertToTheory(eq.notNode(), eqNormalized.notNode(), /** to */ atomsTo, /** Sat solver */ theory::THEORY_SAT_SOLVER);
+      }
+      continue;
+    }
+
+    Assert(eqNormalized.getKind() == kind::EQUAL);
+
+
+    // If the normalization did the just flips, keep the flip
+    if (eqNormalized[0] == eq[1] && eqNormalized[1] == eq[0]) {
+      eq = eqNormalized;
+    }
+
+    // Check if the equality is already known by the sat solver
+    if (d_propEngine->isSatLiteral(eqNormalized)) {
+      bool value;
+      if (d_propEngine->hasValue(eqNormalized, value)) {
+        if (value) {
+          assertToTheory(eq, eqNormalized, atomsTo, theory::THEORY_SAT_SOLVER);
+          continue;
+        } else {
+          assertToTheory(eq.notNode(), eqNormalized.notNode(), atomsTo, theory::THEORY_SAT_SOLVER);
+          continue;
+        }
+      }
+    }
+
+    // If the theory is asking about a different form, or the form is ok but if will go to a different theory
+    // then we must figure it out
+    if (eqNormalized != eq || Theory::theoryOf(eq) != atomsTo) {
+      // If you get eqNormalized, send atoms[i] to atomsTo
+      d_atomRequests.add(eqNormalized, eq, atomsTo);
+    }
+  }
+}
+
+theory::LemmaStatus TheoryEngine::lemma(TNode node,
+                                        ProofRule rule,
+                                        bool negated,
+                                        bool removable,
+                                        bool preprocess,
+                                        theory::TheoryId atomsTo) {
+  // For resource-limiting (also does a time check).
+  // spendResource();
+
+  // Do we need to check atoms
+  if (atomsTo != theory::THEORY_LAST) {
+    Debug("theory::atoms") << "TheoryEngine::lemma(" << node << ", " << atomsTo << ")" << endl;
+    AtomsCollect collectAtoms;
+    NodeVisitor<AtomsCollect>::run(collectAtoms, node);
+    ensureLemmaAtoms(collectAtoms.getAtoms(), atomsTo);
+  }
+
+  if(Dump.isOn("t-lemmas")) {
+    Node n = node;
+    if (negated) {
+      n = node.negate();
+    }
+    Dump("t-lemmas") << CommentCommand("theory lemma: expect valid")
+                     << QueryCommand(n.toExpr());
+  }
+
+  // Share with other portfolio threads
+  if(d_channels->getLemmaOutputChannel() != NULL) {
+    d_channels->getLemmaOutputChannel()->notifyNewLemma(node.toExpr());
+  }
+
+  std::vector<Node> additionalLemmas;
+  IteSkolemMap iteSkolemMap;
+
+  // Run theory preprocessing, maybe
+  Node ppNode = preprocess ? this->preprocess(node) : Node(node);
+
+  // Remove the ITEs
+  Debug("ite") << "Remove ITE from " << ppNode << std::endl;
+  additionalLemmas.push_back(ppNode);
+  d_tform_remover.run(additionalLemmas, iteSkolemMap);
+  Debug("ite") << "..done " << additionalLemmas[0] << std::endl;
+  additionalLemmas[0] = theory::Rewriter::rewrite(additionalLemmas[0]);
+
+  if(Debug.isOn("lemma-ites")) {
+    Debug("lemma-ites") << "removed ITEs from lemma: " << ppNode << endl;
+    Debug("lemma-ites") << " + now have the following "
+                        << additionalLemmas.size() << " lemma(s):" << endl;
+    for(std::vector<Node>::const_iterator i = additionalLemmas.begin();
+        i != additionalLemmas.end();
+        ++i) {
+      Debug("lemma-ites") << " + " << *i << endl;
+    }
+    Debug("lemma-ites") << endl;
+  }
+
+  // assert to prop engine
+  d_propEngine->assertLemma(additionalLemmas[0], negated, removable, rule, node);
+  for (unsigned i = 1; i < additionalLemmas.size(); ++ i) {
+    additionalLemmas[i] = theory::Rewriter::rewrite(additionalLemmas[i]);
+    d_propEngine->assertLemma(additionalLemmas[i], false, removable, rule, node);
+  }
+
+  // WARNING: Below this point don't assume additionalLemmas[0] to be not negated.
+  if(negated) {
+    additionalLemmas[0] = additionalLemmas[0].notNode();
+    negated = false;
+  }
+
+  // assert to decision engine
+  if(!removable) {
+    d_decisionEngine->addAssertions(additionalLemmas, 1, iteSkolemMap);
+  }
+
+  // Mark that we added some lemmas
+  d_lemmasAdded = true;
+
+  // Lemma analysis isn't online yet; this lemma may only live for this
+  // user level.
+  return theory::LemmaStatus(additionalLemmas[0], d_userContext->getLevel());
+}
+
+void TheoryEngine::conflict(TNode conflict, TheoryId theoryId) {
+
+  Debug("theory::conflict") << "TheoryEngine::conflict(" << conflict << ", " << theoryId << ")" << endl;
+
+  // Mark that we are in conflict
+  d_inConflict = true;
+
+  if(Dump.isOn("t-conflicts")) {
+    Dump("t-conflicts") << CommentCommand("theory conflict: expect unsat")
+                        << CheckSatCommand(conflict.toExpr());
+  }
+
+  LemmaProofRecipe* proofRecipe = NULL;
+  PROOF({
+      proofRecipe = new LemmaProofRecipe;
+      Node emptyNode;
+      LemmaProofRecipe::ProofStep proofStep(theoryId, emptyNode);
+
+      if (conflict.getKind() == kind::AND) {
+        for (unsigned i = 0; i < conflict.getNumChildren(); ++i) {
+          proofStep.addAssertion(conflict[i].negate());
+        }
+      } else {
+        proofStep.addAssertion(conflict.negate());
+      }
+
+      proofRecipe->addStep(proofStep);
+    });
+
+  // In the multiple-theories case, we need to reconstruct the conflict
+  if (d_logicInfo.isSharingEnabled()) {
+    // Create the workplace for explanations
+    std::vector<NodeTheoryPair> explanationVector;
+    explanationVector.push_back(NodeTheoryPair(conflict, theoryId, d_propagationMapTimestamp));
+
+    // Process the explanation
+    getExplanation(explanationVector, proofRecipe);
+    PROOF(ProofManager::getCnfProof()->setProofRecipe(proofRecipe));
+    Node fullConflict = mkExplanation(explanationVector);
+    Debug("theory::conflict") << "TheoryEngine::conflict(" << conflict << ", " << theoryId << "): full = " << fullConflict << endl;
+    Assert(properConflict(fullConflict));
+    lemma(fullConflict, RULE_CONFLICT, true, true, false, THEORY_LAST);
+
+  } else {
+    // When only one theory, the conflict should need no processing
+    Assert(properConflict(conflict));
+    PROOF({
+        if (conflict.getKind() == kind::AND) {
+          // If the conflict is a conjunction, the corresponding lemma is derived by negating
+          // its conjuncts.
+          for (unsigned i = 0; i < conflict.getNumChildren(); ++i) {
+            if (conflict[i].isConst() && conflict[i].getConst<bool>()) {
+              ++ i;
+              continue;
+            }
+            if (conflict[i].getKind() == kind::NOT &&
+                conflict[i][0].isConst() && !conflict[i][0].getConst<bool>()) {
+              ++ i;
+              continue;
+            }
+            proofRecipe->getStep(0)->addAssertion(conflict[i].negate());
+            proofRecipe->addBaseAssertion(conflict[i].negate());
+          }
+        } else {
+          proofRecipe->getStep(0)->addAssertion(conflict.negate());
+          proofRecipe->addBaseAssertion(conflict.negate());
+        }
+
+        ProofManager::getCnfProof()->setProofRecipe(proofRecipe);
+      });
+
+    lemma(conflict, RULE_CONFLICT, true, true, false, THEORY_LAST);
+  }
+
+  PROOF({
+      delete proofRecipe;
+      proofRecipe = NULL;
+    });
+}
+
+void TheoryEngine::staticInitializeBVOptions(const std::vector<Node>& assertions) {
+  bool useSlicer = true;
+  if (options::bitvectorEqualitySlicer() == bv::BITVECTOR_SLICER_ON) {
+    if (options::incrementalSolving())
+      throw ModalException("Slicer does not currently support incremental mode. Use --bv-eq-slicer=off");
+    if (options::produceModels())
+      throw ModalException("Slicer does not currently support model generation. Use --bv-eq-slicer=off");
+    useSlicer = true;
+
+  } else if (options::bitvectorEqualitySlicer() == bv::BITVECTOR_SLICER_OFF) {
+    return;
+
+  } else if (options::bitvectorEqualitySlicer() == bv::BITVECTOR_SLICER_AUTO) {
+    if (options::incrementalSolving() ||
+        options::produceModels())
+      return;
+
+    useSlicer = true;
+    bv::utils::TNodeBoolMap cache;
+    for (unsigned i = 0; i < assertions.size(); ++i) {
+      useSlicer = useSlicer && bv::utils::isCoreTerm(assertions[i], cache);
+    }
+  }
+
+  if (useSlicer) {
+    bv::TheoryBV* bv_theory = (bv::TheoryBV*)d_theoryTable[THEORY_BV];
+    bv_theory->enableCoreTheorySlicer();
+  }
+
+}
+
+void TheoryEngine::ppBvToBool(const std::vector<Node>& assertions, std::vector<Node>& new_assertions) {
+  d_bvToBoolPreprocessor.liftBvToBool(assertions, new_assertions);
+}
+
+void TheoryEngine::ppBoolToBv(const std::vector<Node>& assertions, std::vector<Node>& new_assertions) {
+  d_bvToBoolPreprocessor.lowerBoolToBv(assertions, new_assertions);
+}
+
+bool  TheoryEngine::ppBvAbstraction(const std::vector<Node>& assertions, std::vector<Node>& new_assertions) {
+  bv::TheoryBV* bv_theory = (bv::TheoryBV*)d_theoryTable[THEORY_BV];
+  return bv_theory->applyAbstraction(assertions, new_assertions);
+}
+
+void TheoryEngine::mkAckermanizationAsssertions(std::vector<Node>& assertions) {
+  bv::TheoryBV* bv_theory = (bv::TheoryBV*)d_theoryTable[THEORY_BV];
+  bv_theory->mkAckermanizationAsssertions(assertions);
+}
+
+Node TheoryEngine::ppSimpITE(TNode assertion)
+{
+  if (!d_tform_remover.containsTermITE(assertion)) {
+    return assertion;
+  } else {
+    Node result = d_iteUtilities->simpITE(assertion);
+    Node res_rewritten = Rewriter::rewrite(result);
+
+    if(options::simplifyWithCareEnabled()){
+      Chat() << "starting simplifyWithCare()" << endl;
+      Node postSimpWithCare = d_iteUtilities->simplifyWithCare(res_rewritten);
+      Chat() << "ending simplifyWithCare()"
+             << " post simplifyWithCare()" << postSimpWithCare.getId() << endl;
+      result = Rewriter::rewrite(postSimpWithCare);
+    } else {
+      result = res_rewritten;
+    }
+    return result;
+  }
+}
+
+bool TheoryEngine::donePPSimpITE(std::vector<Node>& assertions){
+  // This pass does not support dependency tracking yet
+  // (learns substitutions from all assertions so just
+  // adding addDependence is not enough)
+  if (options::unsatCores() || options::fewerPreprocessingHoles()) {
+    return true;
+  }
+  bool result = true;
+  bool simpDidALotOfWork = d_iteUtilities->simpIteDidALotOfWorkHeuristic();
+  if(simpDidALotOfWork){
+    if(options::compressItes()){
+      result = d_iteUtilities->compress(assertions);
+    }
+
+    if(result){
+      // if false, don't bother to reclaim memory here.
+      NodeManager* nm = NodeManager::currentNM();
+      if(nm->poolSize() >= options::zombieHuntThreshold()){
+        Chat() << "..ite simplifier did quite a bit of work.. " << nm->poolSize() << endl;
+        Chat() << "....node manager contains " << nm->poolSize() << " nodes before cleanup" << endl;
+        d_iteUtilities->clear();
+        Rewriter::clearCaches();
+        d_tform_remover.garbageCollect();
+        nm->reclaimZombiesUntil(options::zombieHuntThreshold());
+        Chat() << "....node manager contains " << nm->poolSize() << " nodes after cleanup" << endl;
+      }
+    }
+  }
+
+  // Do theory specific preprocessing passes
+  if(d_logicInfo.isTheoryEnabled(theory::THEORY_ARITH)
+     && !options::incrementalSolving() ){
+    if(!simpDidALotOfWork){
+      ContainsTermITEVisitor& contains = *d_tform_remover.getContainsVisitor();
+      arith::ArithIteUtils aiteu(contains, d_userContext, getModel());
+      bool anyItes = false;
+      for(size_t i = 0;  i < assertions.size(); ++i){
+        Node curr = assertions[i];
+        if(contains.containsTermITE(curr)){
+          anyItes = true;
+          Node res = aiteu.reduceVariablesInItes(curr);
+          Debug("arith::ite::red") << "@ " << i << " ... " << curr << endl << "   ->" << res << endl;
+          if(curr != res){
+            Node more = aiteu.reduceConstantIteByGCD(res);
+            Debug("arith::ite::red") << "  gcd->" << more << endl;
+            assertions[i] = Rewriter::rewrite(more);
+          }
+        }
+      }
+      if(!anyItes){
+        unsigned prevSubCount = aiteu.getSubCount();
+        aiteu.learnSubstitutions(assertions);
+        if(prevSubCount < aiteu.getSubCount()){
+          d_arithSubstitutionsAdded += aiteu.getSubCount() - prevSubCount;
+          bool anySuccess = false;
+          for(size_t i = 0, N =  assertions.size();  i < N; ++i){
+            Node curr = assertions[i];
+            Node next = Rewriter::rewrite(aiteu.applySubstitutions(curr));
+            Node res = aiteu.reduceVariablesInItes(next);
+            Debug("arith::ite::red") << "@ " << i << " ... " << next << endl << "   ->" << res << endl;
+            Node more = aiteu.reduceConstantIteByGCD(res);
+            Debug("arith::ite::red") << "  gcd->" << more << endl;
+            if(more != next){
+              anySuccess = true;
+              break;
+            }
+          }
+          for(size_t i = 0, N =  assertions.size();  anySuccess && i < N; ++i){
+            Node curr = assertions[i];
+            Node next = Rewriter::rewrite(aiteu.applySubstitutions(curr));
+            Node res = aiteu.reduceVariablesInItes(next);
+            Debug("arith::ite::red") << "@ " << i << " ... " << next << endl << "   ->" << res << endl;
+            Node more = aiteu.reduceConstantIteByGCD(res);
+            Debug("arith::ite::red") << "  gcd->" << more << endl;
+            assertions[i] = Rewriter::rewrite(more);
+          }
+        }
+      }
+    }
+  }
+  return result;
+}
+
+void TheoryEngine::getExplanation(std::vector<NodeTheoryPair>& explanationVector, LemmaProofRecipe* proofRecipe) {
+  Assert(explanationVector.size() > 0);
+
+  unsigned i = 0; // Index of the current literal we are processing
+  unsigned j = 0; // Index of the last literal we are keeping
+
+  std::set<Node> inputAssertions;
+  PROOF(inputAssertions = proofRecipe->getStep(0)->getAssertions(););
+
+  while (i < explanationVector.size()) {
+    // Get the current literal to explain
+    NodeTheoryPair toExplain = explanationVector[i];
+
+    Debug("theory::explain") << "[i=" << i << "] TheoryEngine::explain(): processing [" << toExplain.timestamp << "] " << toExplain.node << " sent from " << toExplain.theory << endl;
+
+
+    // If a true constant or a negation of a false constant we can ignore it
+    if (toExplain.node.isConst() && toExplain.node.getConst<bool>()) {
+      ++ i;
+      continue;
+    }
+    if (toExplain.node.getKind() == kind::NOT && toExplain.node[0].isConst() && !toExplain.node[0].getConst<bool>()) {
+      ++ i;
+      continue;
+    }
+
+    // If from the SAT solver, keep it
+    if (toExplain.theory == THEORY_SAT_SOLVER) {
+      Debug("theory::explain") << "\tLiteral came from THEORY_SAT_SOLVER. Kepping it." << endl;
+      explanationVector[j++] = explanationVector[i++];
+      continue;
+    }
+
+    // If an and, expand it
+    if (toExplain.node.getKind() == kind::AND) {
+      Debug("theory::explain") << "TheoryEngine::explain(): expanding " << toExplain.node << " got from " << toExplain.theory << endl;
+      for (unsigned k = 0; k < toExplain.node.getNumChildren(); ++ k) {
+        NodeTheoryPair newExplain(toExplain.node[k], toExplain.theory, toExplain.timestamp);
+        explanationVector.push_back(newExplain);
+      }
+      ++ i;
+      continue;
+    }
+
+    // See if it was sent to the theory by another theory
+    PropagationMap::const_iterator find = d_propagationMap.find(toExplain);
+    if (find != d_propagationMap.end()) {
+      Debug("theory::explain") << "\tTerm was propagated by another theory (theory = "
+                               << theoryOf((*find).second.theory)->getId() << ")" << std::endl;
+      // There is some propagation, check if its a timely one
+      if ((*find).second.timestamp < toExplain.timestamp) {
+        Debug("theory::explain") << "\tRelevant timetsamp, pushing "
+                                 << (*find).second.node << "to index = " << explanationVector.size() << std::endl;
+        explanationVector.push_back((*find).second);
+        ++i;
+
+        PROOF({
+            if (toExplain.node != (*find).second.node) {
+              Debug("pf::explain") << "TheoryEngine::getExplanation: Rewrite alert! toAssert = " << toExplain.node
+                                   << ", toExplain = " << (*find).second.node << std::endl;
+
+              if (proofRecipe) {
+                proofRecipe->addRewriteRule(toExplain.node, (*find).second.node);
+              }
+            }
+          })
+
+        continue;
+      }
+    }
+
+    // It was produced by the theory, so ask for an explanation
+    Node explanation;
+    if (toExplain.theory == THEORY_BUILTIN) {
+      explanation = d_sharedTerms.explain(toExplain.node);
+      Debug("theory::explain") << "\tTerm was propagated by THEORY_BUILTIN. Explanation: " << explanation << std::endl;
+    } else {
+      explanation = theoryOf(toExplain.theory)->explain(toExplain.node);
+      Debug("theory::explain") << "\tTerm was propagated by owner theory: "
+                               << theoryOf(toExplain.theory)->getId()
+                               << ". Explanation: " << explanation << std::endl;
+    }
+
+    Debug("theory::explain") << "TheoryEngine::explain(): got explanation " << explanation << " got from " << toExplain.theory << endl;
+    Assert( explanation != toExplain.node, "wasn't sent to you, so why are you explaining it trivially");
+    // Mark the explanation
+    NodeTheoryPair newExplain(explanation, toExplain.theory, toExplain.timestamp);
+    explanationVector.push_back(newExplain);
+
+    ++ i;
+
+    PROOF({
+        if (proofRecipe) {
+          // If we're expanding the target node of the explanation (this is the first expansion...),
+          // we don't want to add it as a separate proof step. It is already part of the assertions.
+          if (inputAssertions.find(toExplain.node) == inputAssertions.end()) {
+            LemmaProofRecipe::ProofStep proofStep(toExplain.theory, toExplain.node);
+            if (explanation.getKind() == kind::AND) {
+              Node flat = flattenAnd(explanation);
+              for (unsigned k = 0; k < flat.getNumChildren(); ++ k) {
+                // If a true constant or a negation of a false constant we can ignore it
+                if (! ((flat[k].isConst() && flat[k].getConst<bool>()) ||
+                       (flat[k].getKind() == kind::NOT && flat[k][0].isConst() && !flat[k][0].getConst<bool>()))) {
+                  proofStep.addAssertion(flat[k].negate());
+                }
+              }
+            } else {
+             if (! ((explanation.isConst() && explanation.getConst<bool>()) ||
+                    (explanation.getKind() == kind::NOT && explanation[0].isConst() && !explanation[0].getConst<bool>()))) {
+               proofStep.addAssertion(explanation.negate());
+             }
+            }
+            proofRecipe->addStep(proofStep);
+          }
+        }
+      });
+  }
+
+  // Keep only the relevant literals
+  explanationVector.resize(j);
+
+  PROOF({
+      if (proofRecipe) {
+        // The remaining literals are the base of the proof
+        for (unsigned k = 0; k < explanationVector.size(); ++k) {
+          proofRecipe->addBaseAssertion(explanationVector[k].node.negate());
+        }
+      }
+    });
+}
+
+void TheoryEngine::ppUnconstrainedSimp(vector<Node>& assertions)
+{
+  d_unconstrainedSimp->processAssertions(assertions);
+}
+
+
+void TheoryEngine::setUserAttribute(const std::string& attr, Node n, std::vector<Node>& node_values, std::string str_value) {
+  Trace("te-attr") << "set user attribute " << attr << " " << n << endl;
+  if( d_attr_handle.find( attr )!=d_attr_handle.end() ){
+    for( size_t i=0; i<d_attr_handle[attr].size(); i++ ){
+      d_attr_handle[attr][i]->setUserAttribute(attr, n, node_values, str_value);
+    }
+  } else {
+    //unhandled exception?
+  }
+}
+
+void TheoryEngine::handleUserAttribute(const char* attr, Theory* t) {
+  Trace("te-attr") << "Handle user attribute " << attr << " " << t << endl;
+  std::string str( attr );
+  d_attr_handle[ str ].push_back( t );
+}
+
+void TheoryEngine::checkTheoryAssertionsWithModel() {
+  for(TheoryId theoryId = THEORY_FIRST; theoryId < THEORY_LAST; ++theoryId) {
+    Theory* theory = d_theoryTable[theoryId];
+    if(theory && d_logicInfo.isTheoryEnabled(theoryId)) {
+      for(context::CDList<Assertion>::const_iterator it = theory->facts_begin(),
+            it_end = theory->facts_end();
+          it != it_end;
+          ++it) {
+        Node assertion = (*it).assertion;
+        Node val = getModel()->getValue(assertion);
+        if(val != d_true) {
+          stringstream ss;
+          ss << theoryId << " has an asserted fact that the model doesn't satisfy." << endl
+             << "The fact: " << assertion << endl
+             << "Model value: " << val << endl;
+          InternalError(ss.str());
+        }
+      }
+    }
+  }
+}
+
+std::pair<bool, Node> TheoryEngine::entailmentCheck(theory::TheoryOfMode mode, TNode lit, const EntailmentCheckParameters* params, EntailmentCheckSideEffects* seffects) {
+  TNode atom = (lit.getKind() == kind::NOT) ? lit[0] : lit;
+  theory::TheoryId tid = theory::Theory::theoryOf(mode, atom);
+  theory::Theory* th = theoryOf(tid);
+
+  Assert(th != NULL);
+  Assert(params == NULL || tid == params->getTheoryId());
+  Assert(seffects == NULL || tid == seffects->getTheoryId());
+
+  return th->entailmentCheck(lit, params, seffects);
+}
+
+void TheoryEngine::spendResource(unsigned ammount) {
+  d_resourceManager->spendResource(ammount);
+}
+
+void TheoryEngine::enableTheoryAlternative(const std::string& name){
+  Debug("TheoryEngine::enableTheoryAlternative")
+      << "TheoryEngine::enableTheoryAlternative(" << name << ")" << std::endl;
+
+  d_theoryAlternatives.insert(name);
+}
+
+bool TheoryEngine::useTheoryAlternative(const std::string& name) {
+  return d_theoryAlternatives.find(name) != d_theoryAlternatives.end();
+}
+
+
+TheoryEngine::Statistics::Statistics(theory::TheoryId theory):
+    conflicts(mkName("theory<", theory, ">::conflicts"), 0),
+    propagations(mkName("theory<", theory, ">::propagations"), 0),
+    lemmas(mkName("theory<", theory, ">::lemmas"), 0),
+    requirePhase(mkName("theory<", theory, ">::requirePhase"), 0),
+    flipDecision(mkName("theory<", theory, ">::flipDecision"), 0),
+    restartDemands(mkName("theory<", theory, ">::restartDemands"), 0)
+{
+  smtStatisticsRegistry()->registerStat(&conflicts);
+  smtStatisticsRegistry()->registerStat(&propagations);
+  smtStatisticsRegistry()->registerStat(&lemmas);
+  smtStatisticsRegistry()->registerStat(&requirePhase);
+  smtStatisticsRegistry()->registerStat(&flipDecision);
+  smtStatisticsRegistry()->registerStat(&restartDemands);
+}
+
+TheoryEngine::Statistics::~Statistics() {
+  smtStatisticsRegistry()->unregisterStat(&conflicts);
+  smtStatisticsRegistry()->unregisterStat(&propagations);
+  smtStatisticsRegistry()->unregisterStat(&lemmas);
+  smtStatisticsRegistry()->unregisterStat(&requirePhase);
+  smtStatisticsRegistry()->unregisterStat(&flipDecision);
+  smtStatisticsRegistry()->unregisterStat(&restartDemands);
+}
+
+}/* CVC4 namespace */
diff --git a/src/theory/theory_engine.h b/src/theory/theory_engine.h
new file mode 100644
index 0000000..d8ddf7f
--- /dev/null
+++ b/src/theory/theory_engine.h
@@ -0,0 +1,900 @@
+/*********************                                                        */
+/*! \file theory_engine.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The theory engine
+ **
+ ** The theory engine.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY_ENGINE_H
+#define __CVC4__THEORY_ENGINE_H
+
+#include <deque>
+#include <set>
+#include <vector>
+#include <utility>
+
+#include "base/cvc4_assert.h"
+#include "context/cdhashset.h"
+#include "expr/node.h"
+#include "options/options.h"
+#include "options/smt_options.h"
+#include "prop/prop_engine.h"
+#include "smt/command.h"
+#include "smt_util/lemma_channels.h"
+#include "theory/atom_requests.h"
+#include "theory/bv/bv_to_bool.h"
+#include "theory/interrupted.h"
+#include "theory/rewriter.h"
+#include "theory/shared_terms_database.h"
+#include "theory/sort_inference.h"
+#include "theory/substitutions.h"
+#include "theory/term_registration_visitor.h"
+#include "theory/theory.h"
+#include "theory/uf/equality_engine.h"
+#include "theory/valuation.h"
+#include "util/statistics_registry.h"
+#include "util/unsafe_interrupt_exception.h"
+
+namespace CVC4 {
+
+class ResourceManager;
+class LemmaProofRecipe;
+
+/**
+ * A pair of a theory and a node. This is used to mark the flow of
+ * propagations between theories.
+ */
+struct NodeTheoryPair {
+  Node node;
+  theory::TheoryId theory;
+  size_t timestamp;
+  NodeTheoryPair(TNode node, theory::TheoryId theory, size_t timestamp = 0)
+  : node(node), theory(theory), timestamp(timestamp) {}
+  NodeTheoryPair()
+  : theory(theory::THEORY_LAST) {}
+  // Comparison doesn't take into account the timestamp
+  bool operator == (const NodeTheoryPair& pair) const {
+    return node == pair.node && theory == pair.theory;
+  }
+};/* struct NodeTheoryPair */
+
+struct NodeTheoryPairHashFunction {
+  NodeHashFunction hashFunction;
+  // Hash doesn't take into account the timestamp
+  size_t operator()(const NodeTheoryPair& pair) const {
+    return hashFunction(pair.node)*0x9e3779b9 + pair.theory;
+  }
+};/* struct NodeTheoryPairHashFunction */
+
+
+/* Forward declarations */
+namespace theory {
+  class TheoryModel;
+  class TheoryEngineModelBuilder;
+  class ITEUtilities;
+
+  namespace eq {
+    class EqualityEngine;
+  }/* CVC4::theory::eq namespace */
+
+  namespace quantifiers {
+    class TermDb;
+  }
+
+  class EntailmentCheckParameters;
+  class EntailmentCheckSideEffects;
+}/* CVC4::theory namespace */
+
+class DecisionEngine;
+class RemoveTermFormulas;
+class UnconstrainedSimplifier;
+
+/**
+ * This is essentially an abstraction for a collection of theories.  A
+ * TheoryEngine provides services to a PropEngine, making various
+ * T-solvers look like a single unit to the propositional part of
+ * CVC4.
+ */
+class TheoryEngine {
+
+  /** Shared terms database can use the internals notify the theories */
+  friend class SharedTermsDatabase;
+  friend class theory::quantifiers::TermDb;
+
+  /** Associated PropEngine engine */
+  prop::PropEngine* d_propEngine;
+
+  /** Access to decision engine */
+  DecisionEngine* d_decisionEngine;
+
+  /** Our context */
+  context::Context* d_context;
+
+  /** Our user context */
+  context::UserContext* d_userContext;
+
+  /**
+   * A table of from theory IDs to theory pointers. Never use this table
+   * directly, use theoryOf() instead.
+   */
+  theory::Theory* d_theoryTable[theory::THEORY_LAST];
+
+  /**
+   * A collection of theories that are "active" for the current run.
+   * This set is provided by the user (as a logic string, say, in SMT-LIBv2
+   * format input), or else by default it's all-inclusive.  This is important
+   * because we can optimize for single-theory runs (no sharing), can reduce
+   * the cost of walking the DAG on registration, etc.
+   */
+  const LogicInfo& d_logicInfo;
+
+  /**
+   * The database of shared terms.
+   */
+  SharedTermsDatabase d_sharedTerms;
+
+  /**
+   * Master equality engine, to share with theories.
+   */
+  theory::eq::EqualityEngine* d_masterEqualityEngine;
+
+  /** notify class for master equality engine */
+  class NotifyClass : public theory::eq::EqualityEngineNotify {
+    TheoryEngine& d_te;
+  public:
+    NotifyClass(TheoryEngine& te): d_te(te) {}
+    bool eqNotifyTriggerEquality(TNode equality, bool value) { return true; }
+    bool eqNotifyTriggerPredicate(TNode predicate, bool value) { return true; }
+    bool eqNotifyTriggerTermEquality(theory::TheoryId tag, TNode t1, TNode t2, bool value) { return true; }
+    void eqNotifyConstantTermMerge(TNode t1, TNode t2) {}
+    void eqNotifyNewClass(TNode t) { d_te.eqNotifyNewClass(t); }
+    void eqNotifyPreMerge(TNode t1, TNode t2) { d_te.eqNotifyPreMerge(t1, t2); }
+    void eqNotifyPostMerge(TNode t1, TNode t2) { d_te.eqNotifyPostMerge(t1, t2); }
+    void eqNotifyDisequal(TNode t1, TNode t2, TNode reason) { d_te.eqNotifyDisequal(t1, t2, reason); }
+  };/* class TheoryEngine::NotifyClass */
+  NotifyClass d_masterEENotify;
+
+  /**
+   * notification methods
+   */
+  void eqNotifyNewClass(TNode t);
+  void eqNotifyPreMerge(TNode t1, TNode t2);
+  void eqNotifyPostMerge(TNode t1, TNode t2);
+  void eqNotifyDisequal(TNode t1, TNode t2, TNode reason);
+
+  /**
+   * The quantifiers engine
+   */
+  theory::QuantifiersEngine* d_quantEngine;
+
+  /**
+   * Default model object
+   */
+  theory::TheoryModel* d_curr_model;
+  bool d_aloc_curr_model;
+  /**
+   * Model builder object
+   */
+  theory::TheoryEngineModelBuilder* d_curr_model_builder;
+
+  typedef std::hash_map<Node, Node, NodeHashFunction> NodeMap;
+  typedef std::hash_map<TNode, Node, TNodeHashFunction> TNodeMap;
+
+  /**
+  * Cache for theory-preprocessing of assertions
+   */
+  NodeMap d_ppCache;
+
+  /**
+   * Used for "missed-t-propagations" dumping mode only.  A set of all
+   * theory-propagable literals.
+   */
+  context::CDList<TNode> d_possiblePropagations;
+
+  /**
+   * Used for "missed-t-propagations" dumping mode only.  A
+   * context-dependent set of those theory-propagable literals that
+   * have been propagated.
+   */
+  context::CDHashSet<Node, NodeHashFunction> d_hasPropagated;
+
+
+  /**
+   * Statistics for a particular theory.
+   */
+  class Statistics {
+
+    static std::string mkName(std::string prefix,
+                              theory::TheoryId theory,
+                              std::string suffix) {
+      std::stringstream ss;
+      ss << prefix << theory << suffix;
+      return ss.str();
+    }
+
+  public:
+
+    IntStat conflicts, propagations, lemmas, requirePhase, flipDecision, restartDemands;
+
+    Statistics(theory::TheoryId theory);
+    ~Statistics();
+  };/* class TheoryEngine::Statistics */
+
+
+  /**
+   * An output channel for Theory that passes messages
+   * back to a TheoryEngine.
+   */
+  class EngineOutputChannel : public theory::OutputChannel {
+
+    friend class TheoryEngine;
+
+    /**
+     * The theory engine we're communicating with.
+     */
+    TheoryEngine* d_engine;
+
+    /**
+     * The statistics of the theory interractions.
+     */
+    Statistics d_statistics;
+
+    /**
+     * The theory owning this chanell.
+     */
+    theory::TheoryId d_theory;
+
+  public:
+
+    EngineOutputChannel(TheoryEngine* engine, theory::TheoryId theory) :
+      d_engine(engine),
+      d_statistics(theory),
+      d_theory(theory)
+    {
+    }
+
+    void safePoint(uint64_t ammount) throw(theory::Interrupted, UnsafeInterruptException, AssertionException) {
+      spendResource(ammount);
+      if (d_engine->d_interrupted) {
+        throw theory::Interrupted();
+      }
+    }
+
+    void conflict(TNode conflictNode, Proof* pf = NULL) throw(AssertionException, UnsafeInterruptException);
+
+    bool propagate(TNode literal) throw(AssertionException, UnsafeInterruptException);
+
+    theory::LemmaStatus lemma(TNode lemma,
+                              ProofRule rule,
+                              bool removable = false,
+                              bool preprocess = false,
+                              bool sendAtoms = false);
+
+    theory::LemmaStatus splitLemma(TNode lemma, bool removable = false);
+
+    void demandRestart() throw(TypeCheckingExceptionPrivate, AssertionException, UnsafeInterruptException) {
+      NodeManager* curr = NodeManager::currentNM();
+      Node restartVar =  curr->mkSkolem("restartVar",
+                                        curr->booleanType(),
+                                        "A boolean variable asserted to be true to force a restart");
+      Trace("theory::restart") << "EngineOutputChannel<" << d_theory << ">::restart(" << restartVar << ")" << std::endl;
+      ++ d_statistics.restartDemands;
+      lemma(restartVar, RULE_INVALID, true);
+    }
+
+    void requirePhase(TNode n, bool phase)
+      throw(theory::Interrupted, AssertionException, UnsafeInterruptException) {
+      Debug("theory") << "EngineOutputChannel::requirePhase("
+                      << n << ", " << phase << ")" << std::endl;
+      ++ d_statistics.requirePhase;
+      d_engine->d_propEngine->requirePhase(n, phase);
+    }
+
+    bool flipDecision()
+      throw(theory::Interrupted, AssertionException, UnsafeInterruptException) {
+      Debug("theory") << "EngineOutputChannel::flipDecision()" << std::endl;
+      ++ d_statistics.flipDecision;
+      return d_engine->d_propEngine->flipDecision();
+    }
+
+    void setIncomplete() throw(AssertionException, UnsafeInterruptException) {
+      Trace("theory") << "TheoryEngine::setIncomplete()" << std::endl;
+      d_engine->setIncomplete(d_theory);
+    }
+
+    void spendResource(unsigned ammount) throw(UnsafeInterruptException) {
+      d_engine->spendResource(ammount);
+    }
+
+    void handleUserAttribute( const char* attr, theory::Theory* t ){
+      d_engine->handleUserAttribute( attr, t );
+    }
+
+  private:
+
+    /**
+     * A helper function for registering lemma recipes with the proof engine
+     */
+    void registerLemmaRecipe(Node lemma, Node originalLemma, bool preprocess, theory::TheoryId theoryId);
+  };/* class TheoryEngine::EngineOutputChannel */
+
+  /**
+   * Output channels for individual theories.
+   */
+  EngineOutputChannel* d_theoryOut[theory::THEORY_LAST];
+
+  /**
+   * Are we in conflict.
+   */
+  context::CDO<bool> d_inConflict;
+
+  /**
+   * Called by the theories to notify of a conflict.
+   */
+  void conflict(TNode conflict, theory::TheoryId theoryId);
+
+  /**
+   * Debugging flag to ensure that shutdown() is called before the
+   * destructor.
+   */
+  bool d_hasShutDown;
+
+  /**
+   * True if a theory has notified us of incompleteness (at this
+   * context level or below).
+   */
+  context::CDO<bool> d_incomplete;
+
+  /**
+   * Called by the theories to notify that the current branch is incomplete.
+   */
+  void setIncomplete(theory::TheoryId theory) {
+    d_incomplete = true;
+  }
+
+
+  /**
+   * Mapping of propagations from recievers to senders.
+   */
+  typedef context::CDHashMap<NodeTheoryPair, NodeTheoryPair, NodeTheoryPairHashFunction> PropagationMap;
+  PropagationMap d_propagationMap;
+
+  /**
+   * Timestamp of propagations
+   */
+  context::CDO<size_t> d_propagationMapTimestamp;
+
+  /**
+   * Literals that are propagated by the theory. Note that these are TNodes.
+   * The theory can only propagate nodes that have an assigned literal in the
+   * SAT solver and are hence referenced in the SAT solver.
+   */
+  context::CDList<TNode> d_propagatedLiterals;
+
+  /**
+   * The index of the next literal to be propagated by a theory.
+   */
+  context::CDO<unsigned> d_propagatedLiteralsIndex;
+
+  /**
+   * Called by the output channel to propagate literals and facts
+   * @return false if immediate conflict
+   */
+  bool propagate(TNode literal, theory::TheoryId theory);
+
+  /**
+   * Internal method to call the propagation routines and collect the
+   * propagated literals.
+   */
+  void propagate(theory::Theory::Effort effort);
+
+  /**
+   * Called by the output channel to request decisions "as soon as
+   * possible."
+   */
+  void propagateAsDecision(TNode literal, theory::TheoryId theory);
+
+  /**
+   * A variable to mark if we added any lemmas.
+   */
+  bool d_lemmasAdded;
+
+  /**
+   * A variable to mark if the OutputChannel was "used" by any theory
+   * since the start of the last check.  If it has been, we require
+   * a FULL_EFFORT check before exiting and reporting SAT.
+   *
+   * See the documentation for the needCheck() function, below.
+   */
+  bool d_outputChannelUsed;
+
+  /** Atom requests from lemmas */
+  AtomRequests d_atomRequests;
+
+  /**
+   * Adds a new lemma, returning its status.
+   * @param node the lemma
+   * @param negated should the lemma be asserted negated
+   * @param removable can the lemma be remove (restrictions apply)
+   * @param needAtoms if not THEORY_LAST, then
+   */
+  theory::LemmaStatus lemma(TNode node,
+                            ProofRule rule,
+                            bool negated,
+                            bool removable,
+                            bool preprocess,
+                            theory::TheoryId atomsTo);
+
+  /** Enusre that the given atoms are send to the given theory */
+  void ensureLemmaAtoms(const std::vector<TNode>& atoms, theory::TheoryId theory);
+
+  RemoveTermFormulas& d_tform_remover;
+
+  /** sort inference module */
+  SortInference d_sortInfer;
+
+  /** Time spent in theory combination */
+  TimerStat d_combineTheoriesTime;
+
+  Node d_true;
+  Node d_false;
+
+  /** Whether we were just interrupted (or not) */
+  bool d_interrupted;
+  ResourceManager* d_resourceManager;
+
+  /** Container for lemma input and output channels. */
+  LemmaChannels* d_channels;
+
+public:
+
+  /** Constructs a theory engine */
+  TheoryEngine(context::Context* context, context::UserContext* userContext,
+               RemoveTermFormulas& iteRemover, const LogicInfo& logic,
+               LemmaChannels* channels);
+
+  /** Destroys a theory engine */
+  ~TheoryEngine();
+
+  void interrupt() throw(ModalException);
+  /**
+   * "Spend" a resource during a search or preprocessing.
+   */
+  void spendResource(unsigned ammount);
+
+  /**
+   * Adds a theory. Only one theory per TheoryId can be present, so if
+   * there is another theory it will be deleted.
+   */
+  template <class TheoryClass>
+  inline void addTheory(theory::TheoryId theoryId) {
+    Assert(d_theoryTable[theoryId] == NULL && d_theoryOut[theoryId] == NULL);
+    d_theoryOut[theoryId] = new EngineOutputChannel(this, theoryId);
+    d_theoryTable[theoryId] =
+        new TheoryClass(d_context, d_userContext, *d_theoryOut[theoryId],
+                        theory::Valuation(this), d_logicInfo);
+  }
+
+  inline void setPropEngine(prop::PropEngine* propEngine) {
+    Assert(d_propEngine == NULL);
+    d_propEngine = propEngine;
+  }
+
+  inline void setDecisionEngine(DecisionEngine* decisionEngine) {
+    Assert(d_decisionEngine == NULL);
+    d_decisionEngine = decisionEngine;
+  }
+
+  /** Called when all initialization of options/logic is done */
+  void finishInit();
+
+  /**
+   * Get a pointer to the underlying propositional engine.
+   */
+  inline prop::PropEngine* getPropEngine() const {
+    return d_propEngine;
+  }
+
+  /**
+   * Get a pointer to the underlying sat context.
+   */
+  inline context::Context* getSatContext() const {
+    return d_context;
+  }
+
+  /**
+   * Get a pointer to the underlying user context.
+   */
+  inline context::Context* getUserContext() const {
+    return d_userContext;
+  }
+
+  /**
+   * Get a pointer to the underlying quantifiers engine.
+   */
+  theory::QuantifiersEngine* getQuantifiersEngine() const {
+    return d_quantEngine;
+  }
+
+private:
+
+  /**
+   * Helper for preprocess
+   */
+  Node ppTheoryRewrite(TNode term);
+
+  /**
+   * Queue of nodes for pre-registration.
+   */
+  std::queue<TNode> d_preregisterQueue;
+
+  /**
+   * Boolean flag denoting we are in pre-registration.
+   */
+  bool d_inPreregister;
+
+  /**
+   * Did the theories get any new facts since the last time we called
+   * check()
+   */
+  context::CDO<bool> d_factsAsserted;
+
+  /**
+   * Map from equality atoms to theories that would like to be notified about them.
+   */
+
+
+  /**
+   * Assert the formula to the given theory.
+   * @param assertion the assertion to send (not necesserily normalized)
+   * @param original the assertion as it was sent in from the propagating theory
+   * @param toTheoryId the theory to assert to
+   * @param fromTheoryId the theory that sent it
+   */
+  void assertToTheory(TNode assertion, TNode originalAssertion, theory::TheoryId toTheoryId, theory::TheoryId fromTheoryId);
+
+  /**
+   * Marks a theory propagation from a theory to a theory where a
+   * theory could be the THEORY_SAT_SOLVER for literals coming from
+   * or being propagated to the SAT solver. If the receiving theory
+   * already recieved the literal, the method returns false, otherwise
+   * it returns true.
+   *
+   * @param assertion the normalized assertion being sent
+   * @param originalAssertion the actual assertion that was sent
+   * @param toTheoryId the theory that is on the receiving end
+   * @param fromTheoryId the theory that sent the assertino
+   * @return true if a new assertion, false if theory already got it
+   */
+  bool markPropagation(TNode assertion, TNode originalAssertions, theory::TheoryId toTheoryId, theory::TheoryId fromTheoryId);
+
+  /**
+   * Computes the explanation by travarsing the propagation graph and
+   * asking relevant theories to explain the propagations. Initially
+   * the explanation vector should contain only the element (node, theory)
+   * where the node is the one to be explained, and the theory is the
+   * theory that sent the literal. The lemmaProofRecipe will contain a list
+   * of the explanation steps required to produce the original node.
+   */
+  void getExplanation(std::vector<NodeTheoryPair>& explanationVector, LemmaProofRecipe* lemmaProofRecipe);
+
+public:
+
+  /**
+   * Signal the start of a new round of assertion preprocessing
+   */
+  void preprocessStart();
+
+  /**
+   * Runs theory specific preprocessing on the non-Boolean parts of
+   * the formula.  This is only called on input assertions, after ITEs
+   * have been removed.
+   */
+  Node preprocess(TNode node);
+
+
+  /**
+   * Notify (preprocessed) assertions 
+   */
+  void notifyPreprocessedAssertions( std::vector< Node >& assertions );
+
+  /**
+   * Return whether or not we are incomplete (in the current context).
+   */
+  inline bool isIncomplete() const {
+    return d_incomplete;
+  }
+
+  /**
+   * Returns true if we need another round of checking.  If this
+   * returns true, check(FULL_EFFORT) _must_ be called by the
+   * propositional layer before reporting SAT.
+   *
+   * This is especially necessary for incomplete theories that lazily
+   * output some lemmas on FULL_EFFORT check (e.g. quantifier reasoning
+   * outputing quantifier instantiations).  In such a case, a lemma can
+   * be asserted that is simplified away (perhaps it's already true).
+   * However, we must maintain the invariant that, if a theory uses the
+   * OutputChannel, it implicitly requests that another check(FULL_EFFORT)
+   * be performed before exit, even if no new facts are on its fact queue,
+   * as it might decide to further instantiate some lemmas, precluding
+   * a SAT response.
+   */
+  inline bool needCheck() const {
+    return d_outputChannelUsed || d_lemmasAdded;
+  }
+
+  /**
+   * This is called at shutdown time by the SmtEngine, just before
+   * destruction.  It is important because there are destruction
+   * ordering issues between PropEngine and Theory.
+   */
+  void shutdown();
+
+  /**
+   * Solve the given literal with a theory that owns it.
+   */
+  theory::Theory::PPAssertStatus solve(TNode literal,
+                                    theory::SubstitutionMap& substitutionOut);
+
+  /**
+   * Preregister a Theory atom with the responsible theory (or
+   * theories).
+   */
+  void preRegister(TNode preprocessed);
+
+  /**
+   * Assert the formula to the appropriate theory.
+   * @param node the assertion
+   */
+  void assertFact(TNode node);
+
+  /**
+   * Check all (currently-active) theories for conflicts.
+   * @param effort the effort level to use
+   */
+  void check(theory::Theory::Effort effort);
+
+  /**
+   * Run the combination framework.
+   */
+  void combineTheories();
+
+  /**
+   * Calls ppStaticLearn() on all theories, accumulating their
+   * combined contributions in the "learned" builder.
+   */
+  void ppStaticLearn(TNode in, NodeBuilder<>& learned);
+
+  /**
+   * Calls presolve() on all theories and returns true
+   * if one of the theories discovers a conflict.
+   */
+  bool presolve();
+
+   /**
+   * Calls postsolve() on all theories.
+   */
+  void postsolve();
+
+  /**
+   * Calls notifyRestart() on all active theories.
+   */
+  void notifyRestart();
+
+  void getPropagatedLiterals(std::vector<TNode>& literals) {
+    for (; d_propagatedLiteralsIndex < d_propagatedLiterals.size(); d_propagatedLiteralsIndex = d_propagatedLiteralsIndex + 1) {
+      Debug("getPropagatedLiterals") << "TheoryEngine::getPropagatedLiterals: propagating: " << d_propagatedLiterals[d_propagatedLiteralsIndex] << std::endl;
+      literals.push_back(d_propagatedLiterals[d_propagatedLiteralsIndex]);
+    }
+  }
+
+  Node getNextDecisionRequest();
+
+  bool properConflict(TNode conflict) const;
+  bool properPropagation(TNode lit) const;
+  bool properExplanation(TNode node, TNode expl) const;
+
+  /**
+   * Returns an explanation of the node propagated to the SAT solver.
+   */
+  Node getExplanation(TNode node);
+
+  /**
+   * Returns an explanation of the node propagated to the SAT solver and the theory
+   * that propagated it.
+   */
+  Node getExplanationAndRecipe(TNode node, LemmaProofRecipe* proofRecipe);
+
+  /**
+   * collect model info
+   */
+  void collectModelInfo( theory::TheoryModel* m, bool fullModel );
+  /** post process model */
+  void postProcessModel( theory::TheoryModel* m );
+
+  /**
+   * Get the current model
+   */
+  theory::TheoryModel* getModel();
+
+  /**
+   * Get the model builder
+   */
+  theory::TheoryEngineModelBuilder* getModelBuilder() { return d_curr_model_builder; }
+
+  /**
+   * Get the theory associated to a given Node.
+   *
+   * @returns the theory, or NULL if the TNode is
+   * of built-in type.
+   */
+  inline theory::Theory* theoryOf(TNode node) const {
+    return d_theoryTable[theory::Theory::theoryOf(node)];
+  }
+
+  /**
+   * Get the theory associated to a the given theory id.
+   *
+   * @returns the theory
+   */
+  inline theory::Theory* theoryOf(theory::TheoryId theoryId) const {
+    return d_theoryTable[theoryId];
+  }
+
+  inline bool isTheoryEnabled(theory::TheoryId theoryId) const {
+    return d_logicInfo.isTheoryEnabled(theoryId);
+  }
+
+  /**
+   * Returns the equality status of the two terms, from the theory
+   * that owns the domain type.  The types of a and b must be the same.
+   */
+  theory::EqualityStatus getEqualityStatus(TNode a, TNode b);
+
+  /**
+   * Returns the value that a theory that owns the type of var currently
+   * has (or null if none);
+   */
+  Node getModelValue(TNode var);
+
+  /**
+   * Takes a literal and returns an equivalent literal that is guaranteed to be a SAT literal
+   */
+  Node ensureLiteral(TNode n);
+
+  /**
+   * Print all instantiations made by the quantifiers module.
+   */
+  void printInstantiations( std::ostream& out );
+
+  /**
+   * Print solution for synthesis conjectures found by ce_guided_instantiation module
+   */
+  void printSynthSolution( std::ostream& out );
+
+  /**
+   * Get list of quantified formulas that were instantiated
+   */
+  void getInstantiatedQuantifiedFormulas( std::vector< Node >& qs );
+
+  /**
+   * Get instantiation methods
+   *   first inputs forall x.q[x] and returns ( q[a], ..., q[z] )
+   *   second inputs forall x.q[x] and returns ( a, ..., z ) 
+   *   third and fourth return mappings e.g. forall x.q1[x] -> ( q1[a]...q1[z] ) , ... , forall x.qn[x] -> ( qn[a]...qn[z] )
+   */
+  void getInstantiations( Node q, std::vector< Node >& insts );
+  void getInstantiationTermVectors( Node q, std::vector< std::vector< Node > >& tvecs );
+  void getInstantiations( std::map< Node, std::vector< Node > >& insts );
+  void getInstantiationTermVectors( std::map< Node, std::vector< std::vector< Node > > >& insts );
+  
+  /**
+   * Get instantiated conjunction, returns q[t1] ^ ... ^ q[tn] where t1...tn are current set of instantiations for q.
+   *   Can be used for quantifier elimination when satisfiable and q[t1] ^ ... ^ q[tn] |= q
+   */
+  Node getInstantiatedConjunction( Node q );
+
+  /**
+   * Forwards an entailment check according to the given theoryOfMode.
+   * See theory.h for documentation on entailmentCheck().
+   */
+  std::pair<bool, Node> entailmentCheck(theory::TheoryOfMode mode, TNode lit, const theory::EntailmentCheckParameters* params = NULL, theory::EntailmentCheckSideEffects* out = NULL);
+
+private:
+
+  /** Default visitor for pre-registration */
+  PreRegisterVisitor d_preRegistrationVisitor;
+
+  /** Visitor for collecting shared terms */
+  SharedTermsVisitor d_sharedTermsVisitor;
+
+  /** Dump the assertions to the dump */
+  void dumpAssertions(const char* tag);
+
+  /**
+   * A collection of ite preprocessing passes.
+   */
+  theory::ITEUtilities* d_iteUtilities;
+
+
+  /** For preprocessing pass simplifying unconstrained expressions */
+  UnconstrainedSimplifier* d_unconstrainedSimp;
+
+  /** For preprocessing pass lifting bit-vectors of size 1 to booleans */
+  theory::bv::BvToBoolPreprocessor d_bvToBoolPreprocessor;
+public:
+  void staticInitializeBVOptions(const std::vector<Node>& assertions);
+  void ppBvToBool(const std::vector<Node>& assertions, std::vector<Node>& new_assertions);
+  void ppBoolToBv(const std::vector<Node>& assertions, std::vector<Node>& new_assertions);
+  bool ppBvAbstraction(const std::vector<Node>& assertions, std::vector<Node>& new_assertions);
+  void mkAckermanizationAsssertions(std::vector<Node>& assertions);
+
+  Node ppSimpITE(TNode assertion);
+  /** Returns false if an assertion simplified to false. */
+  bool donePPSimpITE(std::vector<Node>& assertions);
+
+  void ppUnconstrainedSimp(std::vector<Node>& assertions);
+
+  SharedTermsDatabase* getSharedTermsDatabase() { return &d_sharedTerms; }
+
+  theory::eq::EqualityEngine* getMasterEqualityEngine() { return d_masterEqualityEngine; }
+
+  RemoveTermFormulas* getTermFormulaRemover() { return &d_tform_remover; }
+
+  SortInference* getSortInference() { return &d_sortInfer; }
+
+  /** Prints the assertions to the debug stream */
+  void printAssertions(const char* tag);
+
+  /** Theory alternative is in use. */
+  bool useTheoryAlternative(const std::string& name);
+
+  /** Enables using a theory alternative by name. */
+  void enableTheoryAlternative(const std::string& name);
+
+private:
+  std::set< std::string > d_theoryAlternatives;
+
+  std::map< std::string, std::vector< theory::Theory* > > d_attr_handle;
+public:
+
+  /**
+   * Set user attribute.
+   * This function is called when an attribute is set by a user.  In SMT-LIBv2 this is done
+   * via the syntax (! n :attr)
+   */
+  void setUserAttribute(const std::string& attr, Node n, std::vector<Node>& node_values, std::string str_value);
+
+  /**
+   * Handle user attribute.
+   * Associates theory t with the attribute attr.  Theory t will be
+   * notified whenever an attribute of name attr is set.
+   */
+  void handleUserAttribute(const char* attr, theory::Theory* t);
+
+  /**
+   * Check that the theory assertions are satisfied in the model.
+   * This function is called from the smt engine's checkModel routine.
+   */
+  void checkTheoryAssertionsWithModel();
+
+private:
+  IntStat d_arithSubstitutionsAdded;
+
+};/* class TheoryEngine */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY_ENGINE_H */
diff --git a/src/theory/theory_model.cpp b/src/theory/theory_model.cpp
new file mode 100644
index 0000000..8579ad5
--- /dev/null
+++ b/src/theory/theory_model.cpp
@@ -0,0 +1,1105 @@
+/*********************                                                        */
+/*! \file theory_model.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Clark Barrett, Andrew Reynolds, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of model class
+ **/
+#include "theory/theory_model.h"
+
+#include "options/smt_options.h"
+#include "options/uf_options.h"
+#include "options/quantifiers_options.h"
+#include "smt/smt_engine.h"
+#include "theory/quantifiers_engine.h"
+#include "theory/theory_engine.h"
+#include "theory/type_enumerator.h"
+#include "theory/uf/theory_uf_model.h"
+
+using namespace std;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+
+namespace CVC4 {
+namespace theory {
+
+TheoryModel::TheoryModel(context::Context* c, std::string name, bool enableFuncModels) :
+  d_substitutions(c, false), d_modelBuilt(c, false), d_enableFuncModels(enableFuncModels)
+{
+  d_true = NodeManager::currentNM()->mkConst( true );
+  d_false = NodeManager::currentNM()->mkConst( false );
+
+  d_eeContext = new context::Context();
+  d_equalityEngine = new eq::EqualityEngine(d_eeContext, name, false);
+
+  // The kinds we are treating as function application in congruence
+  d_equalityEngine->addFunctionKind(kind::APPLY_UF);
+  d_equalityEngine->addFunctionKind(kind::SELECT);
+  // d_equalityEngine->addFunctionKind(kind::STORE);
+  d_equalityEngine->addFunctionKind(kind::APPLY_CONSTRUCTOR);
+  d_equalityEngine->addFunctionKind(kind::APPLY_SELECTOR_TOTAL);
+  d_equalityEngine->addFunctionKind(kind::APPLY_TESTER);
+  d_eeContext->push();
+}
+
+TheoryModel::~TheoryModel() throw() {
+  d_eeContext->pop();
+  delete d_equalityEngine;
+  delete d_eeContext;
+}
+
+void TheoryModel::reset(){
+  d_modelCache.clear();
+  d_comment_str.clear();
+  d_sep_heap = Node::null();
+  d_sep_nil_eq = Node::null();
+  d_reps.clear();
+  d_rep_set.clear();
+  d_uf_terms.clear();
+  d_uf_models.clear();
+  d_eeContext->pop();
+  d_eeContext->push();
+}
+
+void TheoryModel::getComments(std::ostream& out) const {
+  Trace("model-builder") << "get comments..." << std::endl;
+  out << d_comment_str.str();
+}
+
+void TheoryModel::setHeapModel( Node h, Node neq ) { 
+  d_sep_heap = h;
+  d_sep_nil_eq = neq;
+}
+
+bool TheoryModel::getHeapModel( Expr& h, Expr& neq ) const {
+  if( d_sep_heap.isNull() || d_sep_nil_eq.isNull() ){
+    return false;
+  }else{
+    h = d_sep_heap.toExpr();
+    neq = d_sep_nil_eq.toExpr();
+    return true;
+  }
+}
+
+Node TheoryModel::getValue(TNode n, bool useDontCares) const {
+  //apply substitutions
+  Node nn = d_substitutions.apply(n);
+  //get value in model
+  nn = getModelValue(nn, false, useDontCares);
+  if (nn.isNull()) return nn;
+  if(options::condenseFunctionValues() || nn.getKind() != kind::LAMBDA) {
+    //normalize
+    nn = Rewriter::rewrite(nn);
+  }
+  Debug("model-getvalue") << "[model-getvalue] getValue( " << n << " ): " << std::endl
+                          << "[model-getvalue] returning " << nn << std::endl;
+  return nn;
+}
+
+bool TheoryModel::isDontCare(Expr expr) const {
+  return getValue(Node::fromExpr(expr), true).isNull();
+}
+
+Expr TheoryModel::getValue( Expr expr ) const{
+  Node n = Node::fromExpr( expr );
+  Node ret = getValue( n );
+  return d_smt.postprocess(ret, TypeNode::fromType(expr.getType())).toExpr();
+}
+
+/** get cardinality for sort */
+Cardinality TheoryModel::getCardinality( Type t ) const{
+  TypeNode tn = TypeNode::fromType( t );
+  //for now, we only handle cardinalities for uninterpreted sorts
+  if( tn.isSort() ){
+    if( d_rep_set.hasType( tn ) ){
+      Debug("model-getvalue-debug") << "Get cardinality sort, #rep : " << d_rep_set.getNumRepresentatives( tn ) << std::endl;
+      return Cardinality( d_rep_set.getNumRepresentatives( tn ) );
+    }else{
+      Debug("model-getvalue-debug") << "Get cardinality sort, unconstrained, return 1." << std::endl;
+      return Cardinality( 1 );
+    }
+  }else{
+      Debug("model-getvalue-debug") << "Get cardinality other sort, unknown." << std::endl;
+    return Cardinality( CardinalityUnknown() );
+  }
+}
+
+Node TheoryModel::getModelValue(TNode n, bool hasBoundVars, bool useDontCares) const
+{
+  std::hash_map<Node, Node, NodeHashFunction>::iterator it = d_modelCache.find(n);
+  if (it != d_modelCache.end()) {
+    return (*it).second;
+  }
+  Node ret = n;
+  if(n.getKind() == kind::EXISTS || n.getKind() == kind::FORALL || n.getKind() == kind::COMBINED_CARDINALITY_CONSTRAINT ||
+     ( n.getKind() == kind::CARDINALITY_CONSTRAINT && options::ufssMode()!=theory::uf::UF_SS_FULL ) ) {
+    // We should have terms, thanks to TheoryQuantifiers::collectModelInfo().
+    // However, if the Decision Engine stops us early, there might be a
+    // quantifier that isn't assigned.  In conjunction with miniscoping, this
+    // might lead to a perfectly good model.  Think of
+    //     ASSERT FORALL(x) : p OR x=5
+    // The p is pulled out by miniscoping, and set to TRUE by the decision
+    // engine, then the quantifier's value in the model doesn't matter, so the
+    // Decision Engine stops.  So even though the top-level quantifier was
+    // asserted, it can't be checked directly: first, it doesn't "exist" in
+    // non-miniscoped form, and second, no quantifiers have been asserted, so
+    // none is in the model.  We used to fail an assertion here, but that's
+    // no good.  Instead, return the quantifier itself.  If we're in
+    // checkModel(), and the quantifier actually matters, we'll get an
+    // assert-fail since the quantifier isn't a constant.
+    Node nr = Rewriter::rewrite(n);
+    if(!d_equalityEngine->hasTerm(nr)) {
+      d_modelCache[n] = ret;
+      return ret;
+    } else {
+      ret = nr;
+    }
+  } else {
+    if(n.getKind() == kind::LAMBDA) {
+      NodeManager* nm = NodeManager::currentNM();
+      Node body = getModelValue(n[1], true);
+      body = Rewriter::rewrite(body);
+      ret = nm->mkNode(kind::LAMBDA, n[0], body);
+      d_modelCache[n] = ret;
+      return ret;
+    }
+    if(n.isConst() || (hasBoundVars && n.getKind() == kind::BOUND_VARIABLE)) {
+      d_modelCache[n] = ret;
+      return ret;
+    }
+
+    TypeNode t = n.getType();
+    if (t.isFunction() || t.isPredicate()) {
+      if (d_enableFuncModels) {
+        std::map< Node, Node >::const_iterator it = d_uf_models.find(n);
+        if (it != d_uf_models.end()) {
+          // Existing function
+          ret = it->second;
+          d_modelCache[n] = ret;
+          return ret;
+        }
+        // Unknown function symbol: return LAMBDA x. c, where c is the first constant in the enumeration of the range type
+        vector<TypeNode> argTypes = t.getArgTypes();
+        vector<Node> args;
+        NodeManager* nm = NodeManager::currentNM();
+        for (unsigned i = 0; i < argTypes.size(); ++i) {
+          args.push_back(nm->mkBoundVar(argTypes[i]));
+        }
+        Node boundVarList = nm->mkNode(kind::BOUND_VAR_LIST, args);
+        TypeEnumerator te(t.getRangeType());
+        ret = nm->mkNode(kind::LAMBDA, boundVarList, *te);
+        d_modelCache[n] = ret;
+        return ret;
+      }
+      // TODO: if func models not enabled, throw an error?
+      Unreachable();
+    }
+
+    if (n.getNumChildren() > 0 &&
+        n.getKind() != kind::BITVECTOR_ACKERMANIZE_UDIV &&
+        n.getKind() != kind::BITVECTOR_ACKERMANIZE_UREM) {
+      Debug("model-getvalue-debug") << "Get model value children " << n << std::endl;
+      std::vector<Node> children;
+      if (n.getKind() == APPLY_UF) {
+        Node op = getModelValue(n.getOperator(), hasBoundVars);
+        Debug("model-getvalue-debug") << "  operator : " << op << std::endl;
+        children.push_back(op);
+      }
+      else if (n.getMetaKind() == kind::metakind::PARAMETERIZED) {
+        children.push_back(n.getOperator());
+      }
+      //evaluate the children
+      for (unsigned i = 0; i < n.getNumChildren(); ++i) {
+        ret = getModelValue(n[i], hasBoundVars);
+        Debug("model-getvalue-debug") << "  " << n << "[" << i << "] is " << ret << std::endl;
+        children.push_back(ret);
+      }
+      ret = NodeManager::currentNM()->mkNode(n.getKind(), children);
+      Debug("model-getvalue-debug") << "ret (pre-rewrite): " << ret << std::endl;
+      ret = Rewriter::rewrite(ret);
+      Debug("model-getvalue-debug") << "ret (post-rewrite): " << ret << std::endl;
+      if(ret.getKind() == kind::CARDINALITY_CONSTRAINT) {
+        Debug("model-getvalue-debug") << "get cardinality constraint " << ret[0].getType() << std::endl;
+        ret = NodeManager::currentNM()->mkConst(getCardinality(ret[0].getType().toType()).getFiniteCardinality() <= ret[1].getConst<Rational>().getNumerator());
+      }else if(ret.getKind() == kind::CARDINALITY_VALUE) {
+        Debug("model-getvalue-debug") << "get cardinality value " << ret[0].getType() << std::endl;
+        ret = NodeManager::currentNM()->mkConst(Rational(getCardinality(ret[0].getType().toType()).getFiniteCardinality()));
+      }
+      d_modelCache[n] = ret;
+      return ret;
+    }
+
+    if (!d_equalityEngine->hasTerm(n)) {
+      if(n.getType().isRegExp()) {
+        ret = Rewriter::rewrite(ret);
+      } else {
+        if (options::omitDontCares() && useDontCares) {
+          return Node();
+        }
+        // Unknown term - return first enumerated value for this type
+        TypeEnumerator te(n.getType());
+        ret = *te;
+      }
+      d_modelCache[n] = ret;
+      return ret;
+    }
+  }
+  ret = d_equalityEngine->getRepresentative(ret);
+  Assert(d_reps.find(ret) != d_reps.end());
+  std::map< Node, Node >::const_iterator it2 = d_reps.find( ret );
+  if (it2 != d_reps.end()) {
+    ret = it2->second;
+  } else {
+    ret = Node::null();
+  }
+  d_modelCache[n] = ret;
+  return ret;
+}
+
+Node TheoryModel::getDomainValue( TypeNode tn, std::vector< Node >& exclude ){
+  if( d_rep_set.d_type_reps.find( tn )!=d_rep_set.d_type_reps.end() ){
+    //try to find a pre-existing arbitrary element
+    for( size_t i=0; i<d_rep_set.d_type_reps[tn].size(); i++ ){
+      if( std::find( exclude.begin(), exclude.end(), d_rep_set.d_type_reps[tn][i] )==exclude.end() ){
+        return d_rep_set.d_type_reps[tn][i];
+      }
+    }
+  }
+  return Node::null();
+}
+
+/** add substitution */
+void TheoryModel::addSubstitution( TNode x, TNode t, bool invalidateCache ){
+  if( !d_substitutions.hasSubstitution( x ) ){
+    d_substitutions.addSubstitution( x, t, invalidateCache );
+  } else {
+#ifdef CVC4_ASSERTIONS
+    Node oldX = d_substitutions.getSubstitution(x);
+    // check that either the old substitution is the same, or it now maps to the new substitution
+    if(oldX != t && d_substitutions.apply(oldX) != d_substitutions.apply(t)) {
+      stringstream ss;
+      ss << "Two incompatible substitutions added to TheoryModel:\n"
+         << "the term:    " << x << "\n"
+         << "old mapping: " << d_substitutions.apply(oldX) << "\n"
+         << "new mapping: " << d_substitutions.apply(t);
+      InternalError(ss.str());
+    }
+#endif /* CVC4_ASSERTIONS */
+  }
+}
+
+/** add term */
+void TheoryModel::addTerm(TNode n ){
+  Assert(d_equalityEngine->hasTerm(n));
+  //must collect UF terms
+  if (n.getKind()==APPLY_UF) {
+    Node op = n.getOperator();
+    if( std::find( d_uf_terms[ op ].begin(), d_uf_terms[ op ].end(), n )==d_uf_terms[ op ].end() ){
+      d_uf_terms[ op ].push_back( n );
+      Trace("model-add-term-uf") << "Add term " << n << std::endl;
+    }
+  }
+}
+
+/** assert equality */
+void TheoryModel::assertEquality(TNode a, TNode b, bool polarity ){
+  if (a == b && polarity) {
+    return;
+  }
+  Trace("model-builder-assertions") << "(assert " << (polarity ? "(= " : "(not (= ") << a << " " << b << (polarity ? "));" : ")));") << endl;
+  d_equalityEngine->assertEquality( a.eqNode(b), polarity, Node::null() );
+  Assert(d_equalityEngine->consistent());
+}
+
+/** assert predicate */
+void TheoryModel::assertPredicate(TNode a, bool polarity ){
+  if ((a == d_true && polarity) ||
+      (a == d_false && (!polarity))) {
+    return;
+  }
+  if (a.getKind() == EQUAL) {
+    Trace("model-builder-assertions") << "(assert " << (polarity ? " " : "(not ") << a << (polarity ? ");" : "));") << endl;
+    d_equalityEngine->assertEquality( a, polarity, Node::null() );
+  } else {
+    Trace("model-builder-assertions") << "(assert " << (polarity ? "" : "(not ") << a << (polarity ? ");" : "));") << endl;
+    d_equalityEngine->assertPredicate( a, polarity, Node::null() );
+    Assert(d_equalityEngine->consistent());
+  }
+}
+
+/** assert equality engine */
+void TheoryModel::assertEqualityEngine(const eq::EqualityEngine* ee, set<Node>* termSet)
+{
+  eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( ee );
+  for (; !eqcs_i.isFinished(); ++eqcs_i) {
+    Node eqc = (*eqcs_i);
+    bool predicate = false;
+    bool predTrue = false;
+    bool predFalse = false;
+    if (eqc.getType().isBoolean()) {
+      predicate = true;
+      predTrue = ee->areEqual(eqc, d_true);
+      predFalse = ee->areEqual(eqc, d_false);
+    }
+    eq::EqClassIterator eqc_i = eq::EqClassIterator(eqc, ee);
+    bool first = true;
+    Node rep;
+    for (; !eqc_i.isFinished(); ++eqc_i) {
+      if (termSet != NULL && termSet->find(*eqc_i) == termSet->end()) {
+        continue;
+      }
+      if (predicate) {
+        if (predTrue) {
+          assertPredicate(*eqc_i, true);
+        }
+        else if (predFalse) {
+          assertPredicate(*eqc_i, false);
+        }
+        else {
+          if (first) {
+            rep = (*eqc_i);
+            first = false;
+          }
+          else {
+            Trace("model-builder-assertions") << "(assert (= " << *eqc_i << " " << rep << "));" << endl;
+            d_equalityEngine->mergePredicates(*eqc_i, rep, Node::null());
+            Assert(d_equalityEngine->consistent());
+          }
+        }
+      } else {
+        if (first) {
+          rep = (*eqc_i);
+          //add the term (this is specifically for the case of singleton equivalence classes)
+          if( !rep.getType().isRegExp() ){
+            d_equalityEngine->addTerm( rep );
+            Trace("model-builder-debug") << "Add term to ee within assertEqualityEngine: " << rep << std::endl;
+          }
+          first = false;
+        }
+        else {
+          assertEquality(*eqc_i, rep, true);
+        }
+      }
+    }
+  }
+}
+
+void TheoryModel::assertRepresentative(TNode n )
+{
+  Trace("model-builder-reps") << "Assert rep : " << n << std::endl;
+  Trace("model-builder-reps") << "Rep eqc is : " << getRepresentative( n ) << std::endl;
+  d_reps[ n ] = n;
+}
+
+bool TheoryModel::hasTerm(TNode a)
+{
+  return d_equalityEngine->hasTerm( a );
+}
+
+Node TheoryModel::getRepresentative(TNode a)
+{
+  if( d_equalityEngine->hasTerm( a ) ){
+    Node r = d_equalityEngine->getRepresentative( a );
+    if( d_reps.find( r )!=d_reps.end() ){
+      return d_reps[ r ];
+    }else{
+      return r;
+    }
+  }else{
+    return a;
+  }
+}
+
+bool TheoryModel::areEqual(TNode a, TNode b)
+{
+  if( a==b ){
+    return true;
+  }else if( d_equalityEngine->hasTerm( a ) && d_equalityEngine->hasTerm( b ) ){
+    return d_equalityEngine->areEqual( a, b );
+  }else{
+    return false;
+  }
+}
+
+bool TheoryModel::areDisequal(TNode a, TNode b)
+{
+  if( d_equalityEngine->hasTerm( a ) && d_equalityEngine->hasTerm( b ) ){
+    return d_equalityEngine->areDisequal( a, b, false );
+  }else{
+    return false;
+  }
+}
+
+//for debugging
+void TheoryModel::printRepresentativeDebug( const char* c, Node r ){
+  if( r.isNull() ){
+    Trace( c ) << "null";
+  }else if( r.getType().isBoolean() ){
+    if( areEqual( r, d_true ) ){
+      Trace( c ) << "true";
+    }else{
+      Trace( c ) << "false";
+    }
+  }else{
+    Trace( c ) << getRepresentative( r );
+  }
+}
+
+void TheoryModel::printRepresentative( std::ostream& out, Node r ){
+  Assert( !r.isNull() );
+  if( r.isNull() ){
+    out << "null";
+  }else if( r.getType().isBoolean() ){
+    if( areEqual( r, d_true ) ){
+      out  << "true";
+    }else{
+      out  << "false";
+    }
+  }else{
+    out << getRepresentative( r );
+  }
+}
+
+
+TheoryEngineModelBuilder::TheoryEngineModelBuilder( TheoryEngine* te ) : d_te( te ){
+
+}
+
+
+bool TheoryEngineModelBuilder::isAssignable(TNode n)
+{
+  return (n.isVar() || n.getKind() == kind::APPLY_UF || n.getKind() == kind::SELECT || n.getKind() == kind::APPLY_SELECTOR_TOTAL);
+}
+
+
+void TheoryEngineModelBuilder::checkTerms(TNode n, TheoryModel* tm, NodeSet& cache)
+{
+  if (n.getKind()==FORALL || n.getKind()==EXISTS) {
+    return;
+  }
+  if (cache.find(n) != cache.end()) {
+    return;
+  }
+  if (isAssignable(n)) {
+    tm->d_equalityEngine->addTerm(n);
+  }
+  for(TNode::iterator child_it = n.begin(); child_it != n.end(); ++child_it) {
+    checkTerms(*child_it, tm, cache);
+  }
+  cache.insert(n);
+}
+
+void TheoryEngineModelBuilder::assignConstantRep( TheoryModel* tm, std::map<Node, Node>& constantReps, Node eqc, Node const_rep, bool fullModel ) {
+  constantReps[eqc] = const_rep;
+  Trace("model-builder") << "    Assign: Setting constant rep of " << eqc << " to " << const_rep << endl;
+  if( !fullModel ){
+    tm->d_rep_set.d_values_to_terms[const_rep] = eqc;
+  }
+}
+
+bool TheoryEngineModelBuilder::isExcludedCdtValue( Node val, std::set<Node>* repSet, std::map< Node, Node >& assertedReps, Node eqc ) {
+  Trace("model-builder-debug") << "Is " << val << " and excluded codatatype value for " << eqc << "? " << std::endl;
+  for (set<Node>::iterator i = repSet->begin(); i != repSet->end(); ++i ) {
+    Assert(assertedReps.find(*i) != assertedReps.end());
+    Node rep = assertedReps[*i];
+    Trace("model-builder-debug") << "  Rep : " << rep << std::endl;
+    //check matching val to rep with eqc as a free variable
+    Node eqc_m;
+    if( isCdtValueMatch( val, rep, eqc, eqc_m ) ){
+      Trace("model-builder-debug") << "  ...matches with " << eqc << " -> " << eqc_m << std::endl;
+      if( eqc_m.getKind()==kind::UNINTERPRETED_CONSTANT ){
+        Trace("model-builder-debug") << "*** " << val << " is excluded datatype for " << eqc << std::endl;
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+bool TheoryEngineModelBuilder::isCdtValueMatch( Node v, Node r, Node eqc, Node& eqc_m ) {
+  if( r==v ){
+    return true;
+  }else if( r==eqc ){
+    if( eqc_m.isNull() ){
+      //only if an uninterpreted constant?
+      eqc_m = v;
+      return true;
+    }else{
+      return v==eqc_m;
+    }
+  }else if( v.getKind()==kind::APPLY_CONSTRUCTOR && r.getKind()==kind::APPLY_CONSTRUCTOR ){
+    if( v.getOperator()==r.getOperator() ){
+      for( unsigned i=0; i<v.getNumChildren(); i++ ){
+        if( !isCdtValueMatch( v[i], r[i], eqc, eqc_m ) ){
+          return false;
+        }
+      }
+      return true;
+    }
+  }
+  return false;
+}
+
+bool TheoryEngineModelBuilder::involvesUSort( TypeNode tn ) {
+  if( tn.isSort() ){
+    return true;
+  }else if( tn.isArray() ){
+    return involvesUSort( tn.getArrayIndexType() ) || involvesUSort( tn.getArrayConstituentType() );
+  }else if( tn.isSet() ){
+    return involvesUSort( tn.getSetElementType() );
+  }else if( tn.isDatatype() ){
+    const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+    return dt.involvesUninterpretedType();
+  }else{
+    return false;
+  }
+}
+
+bool TheoryEngineModelBuilder::isExcludedUSortValue( std::map< TypeNode, unsigned >& eqc_usort_count, Node v, std::map< Node, bool >& visited ) {
+  Assert( v.isConst() );
+  if( visited.find( v )==visited.end() ){
+    visited[v] = true;
+    TypeNode tn = v.getType();
+    if( tn.isSort() ){
+      Trace("model-builder-debug") << "Is excluded usort value : " << v << " " << tn << std::endl;
+      unsigned card = eqc_usort_count[tn];
+      Trace("model-builder-debug") << "  Cardinality is " << card << std::endl;
+      unsigned index = v.getConst<UninterpretedConstant>().getIndex().toUnsignedInt();
+      Trace("model-builder-debug") << "  Index is " << index << std::endl;
+      return index>0 && index>=card;
+    }
+    for( unsigned i=0; i<v.getNumChildren(); i++ ){
+      if( isExcludedUSortValue( eqc_usort_count, v[i], visited ) ){
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+void TheoryEngineModelBuilder::buildModel(Model* m, bool fullModel)
+{
+  Trace("model-builder") << "TheoryEngineModelBuilder: buildModel, fullModel = " << fullModel << std::endl;
+  TheoryModel* tm = (TheoryModel*)m;
+
+  // buildModel with fullModel = true should only be called once in any context
+  Assert(!tm->isBuilt());
+  tm->d_modelBuilt = fullModel;
+
+  // Reset model
+  tm->reset();
+
+  // Collect model info from the theories
+  Trace("model-builder") << "TheoryEngineModelBuilder: Collect model info..." << std::endl;
+  d_te->collectModelInfo(tm, fullModel);
+
+  // model-builder specific initialization
+  preProcessBuildModel(tm, fullModel);
+
+  // Loop through all terms and make sure that assignable sub-terms are in the equality engine
+  // Also, record #eqc per type (for finite model finding)
+  std::map< TypeNode, unsigned > eqc_usort_count;
+  eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( tm->d_equalityEngine );
+  {
+    NodeSet cache;
+    for ( ; !eqcs_i.isFinished(); ++eqcs_i) {
+      eq::EqClassIterator eqc_i = eq::EqClassIterator((*eqcs_i),tm->d_equalityEngine);
+      for ( ; !eqc_i.isFinished(); ++eqc_i) {
+        checkTerms(*eqc_i, tm, cache);
+      }
+      TypeNode tn = (*eqcs_i).getType();
+      if( tn.isSort() ){
+        if( eqc_usort_count.find( tn )==eqc_usort_count.end() ){
+          eqc_usort_count[tn] = 1;
+        }else{
+          eqc_usort_count[tn]++;
+        }
+      }
+    }
+  }
+
+  Trace("model-builder") << "Collect representatives..." << std::endl;
+
+  // Process all terms in the equality engine, store representatives for each EC
+  std::map< Node, Node > assertedReps, constantReps;
+  TypeSet typeConstSet, typeRepSet, typeNoRepSet;
+  TypeEnumeratorProperties tep;
+  if( options::finiteModelFind() ){
+    tep.d_fixed_usort_card = true;
+    for( std::map< TypeNode, unsigned >::iterator it = eqc_usort_count.begin(); it != eqc_usort_count.end(); ++it ){
+      Trace("model-builder") << "Fixed bound (#eqc) for " << it->first << " : " << it->second << std::endl;
+      tep.d_fixed_card[it->first] = Integer(it->second);
+    }
+    typeConstSet.setTypeEnumeratorProperties( &tep );
+  }
+  std::set< TypeNode > allTypes;
+  eqcs_i = eq::EqClassesIterator(tm->d_equalityEngine);
+  for ( ; !eqcs_i.isFinished(); ++eqcs_i) {
+
+    // eqc is the equivalence class representative
+    Node eqc = (*eqcs_i);
+    Trace("model-builder") << "Processing EC: " << eqc << endl;
+    Assert(tm->d_equalityEngine->getRepresentative(eqc) == eqc);
+    TypeNode eqct = eqc.getType();
+    Assert(assertedReps.find(eqc) == assertedReps.end());
+    Assert(constantReps.find(eqc) == constantReps.end());
+
+    // Loop through terms in this EC
+    Node rep, const_rep;
+    eq::EqClassIterator eqc_i = eq::EqClassIterator(eqc, tm->d_equalityEngine);
+    for ( ; !eqc_i.isFinished(); ++eqc_i) {
+      Node n = *eqc_i;
+      Trace("model-builder") << "  Processing Term: " << n << endl;
+      // Record as rep if this node was specified as a representative
+      if (tm->d_reps.find(n) != tm->d_reps.end()){
+        //AJR: I believe this assertion is too strict, 
+        // e.g. datatypes may assert representative for two constructor terms that are not in the care graph and are merged during collectModelInfo.
+        //Assert(rep.isNull());
+        rep = tm->d_reps[n];
+        Assert(!rep.isNull() );
+        Trace("model-builder") << "  Rep( " << eqc << " ) = " << rep << std::endl;
+      }
+      // Record as const_rep if this node is constant
+      if (n.isConst()) {
+        Assert(const_rep.isNull());
+        const_rep = n;
+        Trace("model-builder") << "  ConstRep( " << eqc << " ) = " << const_rep << std::endl;
+      }
+      //model-specific processing of the term
+      tm->addTerm(n);
+    }
+
+    // Assign representative for this EC
+    if (!const_rep.isNull()) {
+      // Theories should not specify a rep if there is already a constant in the EC
+      //AJR: I believe this assertion is too strict, eqc with asserted reps may merge with constant eqc
+      //Assert(rep.isNull() || rep == const_rep);
+      assignConstantRep( tm, constantReps, eqc, const_rep, fullModel );
+      typeConstSet.add(eqct.getBaseType(), const_rep);
+    }
+    else if (!rep.isNull()) {
+      assertedReps[eqc] = rep;
+      typeRepSet.add(eqct.getBaseType(), eqc);
+      allTypes.insert(eqct.getBaseType());
+    }
+    else {
+      typeNoRepSet.add(eqct, eqc);
+      allTypes.insert(eqct);
+    }
+  }
+
+  // Need to ensure that each EC has a constant representative.
+
+  Trace("model-builder") << "Processing EC's..." << std::endl;
+
+  TypeSet::iterator it;
+  set<TypeNode>::iterator type_it;
+  set<Node>::iterator i, i2;
+  bool changed, unassignedAssignable, assignOne = false;
+  set<TypeNode> evaluableSet;
+
+  // Double-fixed-point loop
+  // Outer loop handles a special corner case (see code at end of loop for details)
+  for (;;) {
+
+    // Inner fixed-point loop: we are trying to learn constant values for every EC.  Each time through this loop, we process all of the
+    // types by type and may learn some new EC values.  EC's in one type may depend on EC's in another type, so we need a fixed-point loop
+    // to ensure that we learn as many EC values as possible
+    do {
+      changed = false;
+      unassignedAssignable = false;
+      evaluableSet.clear();
+
+      // Iterate over all types we've seen
+      for (type_it = allTypes.begin(); type_it != allTypes.end(); ++type_it) {
+        TypeNode t = *type_it;
+        TypeNode tb = t.getBaseType();
+        set<Node>* noRepSet = typeNoRepSet.getSet(t);
+
+        // 1. Try to evaluate the EC's in this type
+        if (noRepSet != NULL && !noRepSet->empty()) {
+          Trace("model-builder") << "  Eval phase, working on type: " << t << endl;
+          bool assignable, evaluable, evaluated;
+          d_normalizedCache.clear();
+          for (i = noRepSet->begin(); i != noRepSet->end(); ) {
+            i2 = i;
+            ++i;
+            assignable = false;
+            evaluable = false;
+            evaluated = false;
+            eq::EqClassIterator eqc_i = eq::EqClassIterator(*i2, tm->d_equalityEngine);
+            for ( ; !eqc_i.isFinished(); ++eqc_i) {
+              Node n = *eqc_i;
+              if (isAssignable(n)) {
+                assignable = true;
+              }
+              else {
+                evaluable = true;
+                Node normalized = normalize(tm, n, constantReps, true);
+                if (normalized.isConst()) {
+                  typeConstSet.add(tb, normalized);
+                  assignConstantRep( tm, constantReps, *i2, normalized, fullModel );
+                  Trace("model-builder") << "    Eval: Setting constant rep of " << (*i2) << " to " << normalized << endl;
+                  changed = true;
+                  evaluated = true;
+                  noRepSet->erase(i2);
+                  break;
+                }
+              }
+            }
+            if (!evaluated) {
+              if (evaluable) {
+                evaluableSet.insert(tb);
+              }
+              if (assignable) {
+                unassignedAssignable = true;
+              }
+            }
+          }
+        }
+
+        // 2. Normalize any non-const representative terms for this type
+        set<Node>* repSet = typeRepSet.getSet(t);
+        if (repSet != NULL && !repSet->empty()) {
+          Trace("model-builder") << "  Normalization phase, working on type: " << t << endl;
+          d_normalizedCache.clear();
+          for (i = repSet->begin(); i != repSet->end(); ) {
+            Assert(assertedReps.find(*i) != assertedReps.end());
+            Node rep = assertedReps[*i];
+            Node normalized = normalize(tm, rep, constantReps, false);
+            Trace("model-builder") << "    Normalizing rep (" << rep << "), normalized to (" << normalized << ")" << endl;
+            if (normalized.isConst()) {
+              changed = true;
+              typeConstSet.add(tb, normalized);
+              assignConstantRep( tm, constantReps, *i, normalized, fullModel );
+              assertedReps.erase(*i);
+              i2 = i;
+              ++i;
+              repSet->erase(i2);
+            }
+            else {
+              if (normalized != rep) {
+                assertedReps[*i] = normalized;
+                changed = true;
+              }
+              ++i;
+            }
+          }
+        }
+      }
+    } while (changed);
+
+    if (!unassignedAssignable) {
+      break;
+    }
+
+    // 3. Assign unassigned assignable EC's using type enumeration - assign a value *different* from all other EC's if the type is infinite
+    // Assign first value from type enumerator otherwise - for finite types, we rely on polite framework to ensure that EC's that have to be
+    // different are different.
+
+    // Only make assignments on a type if:
+    // 1. there are no terms that share the same base type with un-normalized representatives
+    // 2. there are no terms that share teh same base type that are unevaluated evaluable terms
+    // Alternatively, if 2 or 3 don't hold but we are in a special deadlock-breaking mode where assignOne is true, go ahead and make one assignment
+    changed = false;
+    for (it = typeNoRepSet.begin(); it != typeNoRepSet.end(); ++it) {
+      set<Node>& noRepSet = TypeSet::getSet(it);
+      if (noRepSet.empty()) {
+        continue;
+      }
+      TypeNode t = TypeSet::getType(it);
+      
+      //get properties of this type
+      bool isCorecursive = false;
+      if( t.isDatatype() ){
+        const Datatype& dt = ((DatatypeType)(t).toType()).getDatatype();
+        isCorecursive = dt.isCodatatype() && ( !dt.isFinite( t.toType() ) || dt.isRecursiveSingleton( t.toType() ) );
+      }
+#ifdef CVC4_ASSERTIONS
+      bool isUSortFiniteRestricted = false;
+      if( options::finiteModelFind() ){
+        isUSortFiniteRestricted = !t.isSort() && involvesUSort( t );
+      }
+#endif
+      
+      set<Node>* repSet = typeRepSet.getSet(t);
+      TypeNode tb = t.getBaseType();
+      if (!assignOne) {
+        set<Node>* repSet = typeRepSet.getSet(tb);
+        if (repSet != NULL && !repSet->empty()) {
+          continue;
+        }
+        if (evaluableSet.find(tb) != evaluableSet.end()) {
+          continue;
+        }
+      }
+      Trace("model-builder") << "  Assign phase, working on type: " << t << endl;
+      bool assignable, evaluable CVC4_UNUSED;
+      for (i = noRepSet.begin(); i != noRepSet.end(); ) {
+        i2 = i;
+        ++i;
+        eq::EqClassIterator eqc_i = eq::EqClassIterator(*i2, tm->d_equalityEngine);
+        assignable = false;
+        evaluable = false;
+        for ( ; !eqc_i.isFinished(); ++eqc_i) {
+          Node n = *eqc_i;
+          if (isAssignable(n)) {
+            assignable = true;
+          }
+          else {
+            evaluable = true;
+          }
+        }
+        Trace("model-builder-debug") << "    eqc " << *i2 << " is assignable=" << assignable << ", evaluable=" << evaluable << std::endl;
+        if (assignable) {
+          Assert(!evaluable || assignOne);
+          Assert(!t.isBoolean() || (*i2).getKind() == kind::APPLY_UF);
+          Node n;
+          if (t.getCardinality().isInfinite()) {
+          // if (!t.isInterpretedFinite()) {
+            bool success;
+            do{
+              Trace("model-builder-debug") << "Enumerate term of type " << t << std::endl;
+              n = typeConstSet.nextTypeEnum(t, true);
+              //--- AJR: this code checks whether n is a legal value
+              Assert( !n.isNull() );
+              success = true;
+              Trace("model-builder-debug") << "Check if excluded : " << n << std::endl;
+#ifdef CVC4_ASSERTIONS
+              if( isUSortFiniteRestricted ){
+                //must not involve uninterpreted constants beyond cardinality bound (which assumed to coincide with #eqc)
+                //this is just an assertion now, since TypeEnumeratorProperties should ensure that only legal values are enumerated wrt this constraint.
+                std::map< Node, bool > visited;
+                success = !isExcludedUSortValue( eqc_usort_count, n, visited );
+                if( !success ){
+                  Trace("model-builder") << "Excluded value for " << t << " : " << n << " due to out of range uninterpreted constant." << std::endl;
+                }
+                Assert( success );
+              }
+#endif
+              if( success && isCorecursive ){
+                if (repSet != NULL && !repSet->empty()) {
+                  // in the case of codatatypes, check if it is in the set of values that we cannot assign
+                  // this will check whether n \not\in V^x_I from page 9 of Reynolds/Blanchette CADE 2015
+                  success = !isExcludedCdtValue( n, repSet, assertedReps, *i2 );
+                  if( !success ){
+                    Trace("model-builder") << "Excluded value : " << n << " due to alpha-equivalent codatatype expression." << std::endl;
+                  }
+                }
+              }
+              //---
+            }while( !success );
+          }
+          else {
+            TypeEnumerator te(t);
+            n = *te;
+          }
+          Assert(!n.isNull());
+          assignConstantRep( tm, constantReps, *i2, n, fullModel );
+          changed = true;
+          noRepSet.erase(i2);
+          if (assignOne) {
+            assignOne = false;
+            break;
+          }
+        }
+      }
+    }
+
+    // Corner case - I'm not sure this can even happen - but it's theoretically possible to have a cyclical dependency
+    // in EC assignment/evaluation, e.g. EC1 = {a, b + 1}; EC2 = {b, a - 1}.  In this case, neither one will get assigned because we are waiting
+    // to be able to evaluate.  But we will never be able to evaluate because the variables that need to be assigned are in
+    // these same EC's.  In this case, repeat the whole fixed-point computation with the difference that the first EC
+    // that has both assignable and evaluable expressions will get assigned.
+    if (!changed) {
+      Assert(!assignOne); // check for infinite loop!
+      assignOne = true;
+    }
+  }
+
+#ifdef CVC4_ASSERTIONS
+  if (fullModel) {
+    // Assert that all representatives have been converted to constants
+    for (it = typeRepSet.begin(); it != typeRepSet.end(); ++it) {
+      set<Node>& repSet = TypeSet::getSet(it);
+      if (!repSet.empty()) {
+        Trace("model-builder") << "***Non-empty repSet, size = " << repSet.size() << ", first = " << *(repSet.begin()) << endl;
+        Assert(false);
+      }
+    }
+  }
+#endif /* CVC4_ASSERTIONS */
+
+  Trace("model-builder") << "Copy representatives to model..." << std::endl;
+  tm->d_reps.clear();
+  std::map< Node, Node >::iterator itMap;
+  for (itMap = constantReps.begin(); itMap != constantReps.end(); ++itMap) {
+    tm->d_reps[itMap->first] = itMap->second;
+    tm->d_rep_set.add(itMap->second.getType(), itMap->second);
+  }
+
+  if (!fullModel) {
+    Trace("model-builder") << "Make sure ECs have reps..." << std::endl;
+    // Make sure every EC has a rep
+    for (itMap = assertedReps.begin(); itMap != assertedReps.end(); ++itMap ) {
+      tm->d_reps[itMap->first] = itMap->second;
+      tm->d_rep_set.add(itMap->second.getType(), itMap->second);
+    }
+    for (it = typeNoRepSet.begin(); it != typeNoRepSet.end(); ++it) {
+      set<Node>& noRepSet = TypeSet::getSet(it);
+      set<Node>::iterator i;
+      for (i = noRepSet.begin(); i != noRepSet.end(); ++i) {
+        tm->d_reps[*i] = *i;
+        tm->d_rep_set.add((*i).getType(), *i);
+      }
+    }
+  }
+
+  //modelBuilder-specific initialization
+  processBuildModel( tm, fullModel );
+
+  // Do post-processing of model from the theories (used for THEORY_SEP to construct heap model)
+  if( fullModel ){
+    Trace("model-builder") << "TheoryEngineModelBuilder: Post-process model..." << std::endl;
+    d_te->postProcessModel(tm);
+  }
+  
+#ifdef CVC4_ASSERTIONS
+  if (fullModel) {
+    // Check that every term evaluates to its representative in the model
+    for (eqcs_i = eq::EqClassesIterator(tm->d_equalityEngine); !eqcs_i.isFinished(); ++eqcs_i) {
+      // eqc is the equivalence class representative
+      Node eqc = (*eqcs_i);
+      Node rep;
+      itMap = constantReps.find(eqc);
+      if (itMap == constantReps.end() && eqc.getType().isBoolean()) {
+        rep = tm->getValue(eqc);
+        Assert(rep.isConst());
+      }
+      else {
+        Assert(itMap != constantReps.end());
+        rep = itMap->second;
+      }
+      eq::EqClassIterator eqc_i = eq::EqClassIterator(eqc, tm->d_equalityEngine);
+      for ( ; !eqc_i.isFinished(); ++eqc_i) {
+        Node n = *eqc_i;
+        static int repCheckInstance = 0;
+        ++repCheckInstance;
+
+        Debug("check-model::rep-checking")
+          << "( " << repCheckInstance <<") "
+          << "n: " << n << endl
+          << "getValue(n): " << tm->getValue(n) << endl
+          << "rep: " << rep << endl;
+        Assert(tm->getValue(*eqc_i) == rep, "run with -d check-model::rep-checking for details");
+      }
+    }
+  }
+#endif /* CVC4_ASSERTIONS */
+}
+
+
+Node TheoryEngineModelBuilder::normalize(TheoryModel* m, TNode r, std::map< Node, Node >& constantReps, bool evalOnly)
+{
+  std::map<Node, Node>::iterator itMap = constantReps.find(r);
+  if (itMap != constantReps.end()) {
+    return (*itMap).second;
+  }
+  NodeMap::iterator it = d_normalizedCache.find(r);
+  if (it != d_normalizedCache.end()) {
+    return (*it).second;
+  }
+  Node retNode = r;
+  if (r.getNumChildren() > 0) {
+    std::vector<Node> children;
+    if (r.getMetaKind() == kind::metakind::PARAMETERIZED) {
+      children.push_back(r.getOperator());
+    }
+    bool childrenConst = true;
+    for (size_t i=0; i < r.getNumChildren(); ++i) {
+      Node ri = r[i];
+      bool recurse = true;
+      if (!ri.isConst()) {
+        if (m->d_equalityEngine->hasTerm(ri)) {
+          itMap = constantReps.find(m->d_equalityEngine->getRepresentative(ri));
+          if (itMap != constantReps.end()) {
+            ri = (*itMap).second;
+            recurse = false;
+          }
+          else if (!evalOnly) {
+            recurse = false;
+          }
+        }
+        if (recurse) {
+          ri = normalize(m, ri, constantReps, evalOnly);
+        }
+        if (!ri.isConst()) {
+          childrenConst = false;
+        }
+      }
+      children.push_back(ri);
+    }
+    retNode = NodeManager::currentNM()->mkNode( r.getKind(), children );
+    if (childrenConst) {
+      retNode = Rewriter::rewrite(retNode);
+      Assert(retNode.getKind()==kind::APPLY_UF || retNode.getType().isRegExp() || retNode.isConst());
+    }
+  }
+  d_normalizedCache[r] = retNode;
+  return retNode;
+}
+
+void TheoryEngineModelBuilder::preProcessBuildModel(TheoryModel* m, bool fullModel) {
+  
+}
+
+void TheoryEngineModelBuilder::processBuildModel(TheoryModel* m, bool fullModel)
+{
+  if (fullModel) {
+    Trace("model-builder") << "Assigning function values..." << endl;
+    //construct function values
+    for( std::map< Node, std::vector< Node > >::iterator it = m->d_uf_terms.begin(); it != m->d_uf_terms.end(); ++it ){
+      Node n = it->first;
+      if( m->d_uf_models.find( n )==m->d_uf_models.end() ){
+        TypeNode type = n.getType();
+        uf::UfModelTree ufmt( n );
+        Node default_v, un, simp, v;
+        for( size_t i=0; i<it->second.size(); i++ ){
+          un = it->second[i];
+          vector<TNode> children;
+          children.push_back(n);
+          for (size_t j = 0; j < un.getNumChildren(); ++j) {
+            children.push_back(m->getRepresentative(un[j]));
+          }
+          simp = NodeManager::currentNM()->mkNode(un.getKind(), children);
+          v = m->getRepresentative(un);
+          Trace("model-builder") << "  Setting (" << simp << ") to (" << v << ")" << endl;
+          ufmt.setValue(m, simp, v);
+          default_v = v;
+        }
+        if( default_v.isNull() ){
+          //choose default value from model if none exists
+          TypeEnumerator te(type.getRangeType());
+          default_v = (*te);
+        }
+        ufmt.setDefaultValue( m, default_v );
+        if(options::condenseFunctionValues()) {
+          ufmt.simplify();
+        }
+        Node val = ufmt.getFunctionValue( "_ufmt_", options::condenseFunctionValues() );
+        Trace("model-builder") << "  Assigning (" << n << ") to (" << val << ")" << endl;
+        m->d_uf_models[n] = val;
+        //ufmt.debugPrint( std::cout, m );
+      }
+    }
+  }
+}
+
+} /* namespace CVC4::theory */
+} /* namespace CVC4 */
diff --git a/src/theory/theory_model.h b/src/theory/theory_model.h
new file mode 100644
index 0000000..c30d1ea
--- /dev/null
+++ b/src/theory/theory_model.h
@@ -0,0 +1,296 @@
+/*********************                                                        */
+/*! \file theory_model.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Clark Barrett, Morgan Deters, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Model class
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__THEORY_MODEL_H
+#define __CVC4__THEORY__THEORY_MODEL_H
+
+#include "smt/model.h"
+#include "theory/uf/equality_engine.h"
+#include "theory/rep_set.h"
+#include "theory/substitutions.h"
+#include "theory/type_enumerator.h"
+
+namespace CVC4 {
+namespace theory {
+
+/**
+ * Theory Model class.
+ *    For Model m, should call m.initialize() before using.
+ */
+class TheoryModel : public Model
+{
+  friend class TheoryEngineModelBuilder;
+protected:
+  /** substitution map for this model */
+  SubstitutionMap d_substitutions;
+  context::CDO<bool> d_modelBuilt;
+public:
+  TheoryModel(context::Context* c, std::string name, bool enableFuncModels);
+  virtual ~TheoryModel() throw();
+
+  /** special local context for our equalityEngine so we can clear it independently of search context */
+  context::Context* d_eeContext;
+  /** equality engine containing all known equalities/disequalities */
+  eq::EqualityEngine* d_equalityEngine;
+  /** map of representatives of equality engine to used representatives in representative set */
+  std::map< Node, Node > d_reps;
+  /** stores set of representatives for each type */
+  RepSet d_rep_set;
+  /** true/false nodes */
+  Node d_true;
+  Node d_false;
+  mutable std::hash_map<Node, Node, NodeHashFunction> d_modelCache;
+public: 
+  /** comment stream to include in printing */
+  std::stringstream d_comment_str;
+  /** get comments */
+  void getComments(std::ostream& out) const;
+private:
+  /** information for separation logic */
+  Node d_sep_heap;
+  Node d_sep_nil_eq;
+public:
+  void setHeapModel( Node h, Node neq );
+  bool getHeapModel( Expr& h, Expr& neq ) const;
+protected:
+  /** reset the model */
+  virtual void reset();
+  /**
+   * Get model value function.  This function is called by getValue
+   */
+  Node getModelValue(TNode n, bool hasBoundVars = false, bool useDontCares = false) const;
+public:
+  /** is built */
+  bool isBuilt() { return d_modelBuilt.get(); }
+  /**
+   * Get value function.  This should be called only after a ModelBuilder has called buildModel(...)
+   * on this model.
+   */
+  Node getValue( TNode n, bool useDontCares = false ) const;
+
+  /** get existing domain value, with possible exclusions
+    *   This function returns a term in d_rep_set.d_type_reps[tn] but not in exclude
+    */
+  Node getDomainValue( TypeNode tn, std::vector< Node >& exclude );
+public:
+  /** Adds a substitution from x to t. */
+  void addSubstitution(TNode x, TNode t, bool invalidateCache = true);
+  /** add term function
+    *   addTerm( n ) will do any model-specific processing necessary for n,
+    *   such as constraining the interpretation of uninterpreted functions,
+    *   and adding n to the equality engine of this model
+    */
+  virtual void addTerm(TNode n);
+  /** assert equality holds in the model */
+  void assertEquality(TNode a, TNode b, bool polarity);
+  /** assert predicate holds in the model */
+  void assertPredicate(TNode a, bool polarity);
+  /** assert all equalities/predicates in equality engine hold in the model */
+  void assertEqualityEngine(const eq::EqualityEngine* ee, std::set<Node>* termSet = NULL);
+  /** assert representative
+    *  This function tells the model that n should be the representative of its equivalence class.
+    *  It should be called during model generation, before final representatives are chosen.  In the
+    *  case of TheoryEngineModelBuilder, it should be called during Theory's collectModelInfo( ... )
+    *  functions where fullModel = true.
+    */
+  void assertRepresentative(TNode n);
+public:
+  /** general queries */
+  bool hasTerm(TNode a);
+  Node getRepresentative(TNode a);
+  bool areEqual(TNode a, TNode b);
+  bool areDisequal(TNode a, TNode b);
+public:
+  /** return whether this node is a don't-care */
+  bool isDontCare(Expr expr) const;
+  /** get value function for Exprs. */
+  Expr getValue( Expr expr ) const;
+  /** get cardinality for sort */
+  Cardinality getCardinality( Type t ) const;
+public:
+  /** print representative debug function */
+  void printRepresentativeDebug( const char* c, Node r );
+  /** print representative function */
+  void printRepresentative( std::ostream& out, Node r );
+public:
+  /** whether function models are enabled */
+  bool d_enableFuncModels;
+  //necessary information for function models
+  std::map< Node, std::vector< Node > > d_uf_terms;
+  std::map< Node, Node > d_uf_models;
+};/* class TheoryModel */
+
+/*
+ * Class that encapsulates a map from types to sets of nodes
+ */
+class TypeSet {
+public:
+  typedef std::hash_map<TypeNode, std::set<Node>*, TypeNodeHashFunction> TypeSetMap;
+  typedef std::hash_map<TypeNode, TypeEnumerator*, TypeNodeHashFunction> TypeToTypeEnumMap;
+  typedef TypeSetMap::iterator iterator;
+  typedef TypeSetMap::const_iterator const_iterator;
+private:
+  TypeSetMap d_typeSet;
+  TypeToTypeEnumMap d_teMap;
+  TypeEnumeratorProperties * d_tep;
+
+  public:
+  TypeSet() : d_tep(NULL) {}
+  ~TypeSet() {
+    iterator it;
+    for (it = d_typeSet.begin(); it != d_typeSet.end(); ++it) {
+      if ((*it).second != NULL) {
+        delete (*it).second;
+      }
+    }
+    TypeToTypeEnumMap::iterator it2;
+    for (it2 = d_teMap.begin(); it2 != d_teMap.end(); ++it2) {
+      if ((*it2).second != NULL) {
+        delete (*it2).second;
+      }
+    }
+  }
+  void setTypeEnumeratorProperties( TypeEnumeratorProperties * tep ) { d_tep = tep; }
+  void add(TypeNode t, TNode n)
+  {
+    iterator it = d_typeSet.find(t);
+    std::set<Node>* s;
+    if (it == d_typeSet.end()) {
+      s = new std::set<Node>;
+      d_typeSet[t] = s;
+    }
+    else {
+      s = (*it).second;
+    }
+    s->insert(n);
+  }
+
+  std::set<Node>* getSet(TypeNode t) const
+  {
+    const_iterator it = d_typeSet.find(t);
+    if (it == d_typeSet.end()) {
+      return NULL;
+    }
+    return (*it).second;
+  }
+
+  Node nextTypeEnum(TypeNode t, bool useBaseType = false)
+  {
+    TypeEnumerator* te;
+    TypeToTypeEnumMap::iterator it = d_teMap.find(t);
+    if (it == d_teMap.end()) {
+      te = new TypeEnumerator(t, d_tep);
+      d_teMap[t] = te;
+    }
+    else {
+      te = (*it).second;
+    }
+    if (te->isFinished()) {
+      return Node();
+    }
+
+    if (useBaseType) {
+      t = t.getBaseType();
+    }
+    iterator itSet = d_typeSet.find(t);
+    std::set<Node>* s;
+    if (itSet == d_typeSet.end()) {
+      s = new std::set<Node>;
+      d_typeSet[t] = s;
+    }
+    else {
+      s = (*itSet).second;
+    }
+    Node n = **te;
+    while (s->find(n) != s->end()) {
+      ++(*te);
+      if (te->isFinished()) {
+        return Node();
+      }
+      n = **te;
+    }
+    s->insert(n);
+    ++(*te);
+    return n;
+  }
+
+  bool empty()
+  {
+    return d_typeSet.empty();
+  }
+
+  iterator begin()
+  {
+    return d_typeSet.begin();
+  }
+
+  iterator end()
+  {
+    return d_typeSet.end();
+  }
+
+  static TypeNode getType(iterator it)
+  {
+    return (*it).first;
+  }
+
+  static std::set<Node>& getSet(iterator it)
+  {
+    return *(*it).second;
+  }
+
+};/* class TypeSet */
+
+/** TheoryEngineModelBuilder class
+  *    This model builder will consult all theories in a theory engine for
+  *    collectModelInfo( ... ) when building a model.
+  */
+class TheoryEngineModelBuilder : public ModelBuilder
+{
+protected:
+  /** pointer to theory engine */
+  TheoryEngine* d_te;
+  typedef std::hash_map<Node, Node, NodeHashFunction> NodeMap;
+  NodeMap d_normalizedCache;
+  typedef std::hash_set<Node, NodeHashFunction> NodeSet;
+
+  /** process build model */
+  virtual void preProcessBuildModel(TheoryModel* m, bool fullModel);
+  virtual void processBuildModel(TheoryModel* m, bool fullModel);
+  /** normalize representative */
+  Node normalize(TheoryModel* m, TNode r, std::map<Node, Node>& constantReps, bool evalOnly);
+  bool isAssignable(TNode n);
+  void checkTerms(TNode n, TheoryModel* tm, NodeSet& cache);
+  void assignConstantRep( TheoryModel* tm, std::map<Node, Node>& constantReps, Node eqc, Node const_rep, bool fullModel );
+  /** is v an excluded codatatype value */
+  bool isExcludedCdtValue( Node v, std::set<Node>* repSet, std::map< Node, Node >& assertedReps, Node eqc );
+  bool isCdtValueMatch( Node v, Node r, Node eqc, Node& eqc_m );
+  /** involves usort */
+  bool involvesUSort( TypeNode tn );
+  bool isExcludedUSortValue( std::map< TypeNode, unsigned >& eqc_usort_count, Node v, std::map< Node, bool >& visited );
+public:
+  TheoryEngineModelBuilder(TheoryEngine* te);
+  virtual ~TheoryEngineModelBuilder(){}
+  /** Build model function.
+   *    Should be called only on TheoryModels m
+   */
+  void buildModel(Model* m, bool fullModel);
+};/* class TheoryEngineModelBuilder */
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__THEORY_MODEL_H */
diff --git a/src/theory/theory_registrar.h b/src/theory/theory_registrar.h
new file mode 100644
index 0000000..d0e3a5b
--- /dev/null
+++ b/src/theory/theory_registrar.h
@@ -0,0 +1,49 @@
+/*********************                                                        */
+/*! \file theory_registrar.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Liana Hadarean
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Class to encapsulate preregistration duties
+ **
+ ** Class to encapsulate preregistration duties.  This class permits the
+ ** CNF stream implementation to reach into the theory engine to
+ ** preregister only those terms with an associated SAT literal (at the
+ ** point when they get the SAT literal), without having to refer to the
+ ** TheoryEngine class directly.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__THEORY_REGISTRAR_H
+#define __CVC4__THEORY__THEORY_REGISTRAR_H
+
+#include "prop/registrar.h"
+#include "theory/theory_engine.h"
+
+namespace CVC4 {
+namespace theory {
+
+class TheoryRegistrar : public prop::Registrar {
+private:
+  TheoryEngine* d_theoryEngine;
+
+public:
+
+  TheoryRegistrar(TheoryEngine* te) : d_theoryEngine(te) { }
+
+  void preRegister(Node n) {
+    d_theoryEngine->preRegister(n);
+  }
+
+};/* class TheoryRegistrar */
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__THEORY_REGISTRAR_H */
diff --git a/src/theory/theory_test_utils.h b/src/theory/theory_test_utils.h
new file mode 100644
index 0000000..031c51d
--- /dev/null
+++ b/src/theory/theory_test_utils.h
@@ -0,0 +1,150 @@
+/*********************                                                        */
+/*! \file theory_test_utils.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Liana Hadarean
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Common utilities for testing theories
+ **
+ ** Common utilities for testing theories.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__THEORY__THEORY_TEST_UTILS_H
+#define __CVC4__THEORY__THEORY_TEST_UTILS_H
+
+#include <iostream>
+#include <utility>
+#include <vector>
+
+#include "base/cvc4_assert.h"
+#include "expr/node.h"
+#include "theory/interrupted.h"
+#include "theory/output_channel.h"
+#include "util/unsafe_interrupt_exception.h"
+
+namespace CVC4 {
+namespace theory {
+
+/**
+ * Very basic OutputChannel for testing simple Theory Behaviour.
+ * Stores a call sequence for the output channel
+ */
+enum OutputChannelCallType {
+  CONFLICT,
+  PROPAGATE,
+  PROPAGATE_AS_DECISION,
+  AUG_LEMMA,
+  LEMMA,
+  EXPLANATION
+};/* enum OutputChannelCallType */
+
+}/* CVC4::theory namespace */
+
+inline std::ostream& operator<<(std::ostream& out, theory::OutputChannelCallType type) {
+  switch(type) {
+  case theory::CONFLICT: return out << "CONFLICT";
+  case theory::PROPAGATE: return out << "PROPAGATE";
+  case theory::PROPAGATE_AS_DECISION: return out << "PROPAGATE_AS_DECISION";
+  case theory::AUG_LEMMA: return out << "AUG_LEMMA";
+  case theory::LEMMA: return out << "LEMMA";
+  case theory::EXPLANATION: return out << "EXPLANATION";
+  default: return out << "UNDEFINED-OutputChannelCallType!" << int(type);
+  }
+}
+
+namespace theory {
+
+class TestOutputChannel : public theory::OutputChannel {
+public:
+  std::vector< std::pair<enum OutputChannelCallType, Node> > d_callHistory;
+
+  TestOutputChannel() {}
+
+  ~TestOutputChannel() {}
+
+  void safePoint(uint64_t ammount)  throw(Interrupted, AssertionException) {}
+
+  void conflict(TNode n, Proof* pf = NULL)
+    throw(AssertionException, UnsafeInterruptException) {
+    push(CONFLICT, n);
+  }
+
+  bool propagate(TNode n)
+    throw(AssertionException, UnsafeInterruptException) {
+    push(PROPAGATE, n);
+    return true;
+  }
+
+  void propagateAsDecision(TNode n)
+    throw(AssertionException, UnsafeInterruptException) {
+    push(PROPAGATE_AS_DECISION, n);
+  }
+
+  LemmaStatus lemma(TNode n, ProofRule rule,
+                    bool removable = false,
+                    bool preprocess = false,
+                    bool sendAtoms = false) throw(AssertionException, UnsafeInterruptException) {
+    push(LEMMA, n);
+    return LemmaStatus(Node::null(), 0);
+  }
+
+  void requirePhase(TNode, bool) throw(Interrupted, AssertionException, UnsafeInterruptException) {
+  }
+
+  bool flipDecision() throw(Interrupted, AssertionException, UnsafeInterruptException) {
+    return true;
+  }
+
+  void setIncomplete() throw(AssertionException, UnsafeInterruptException) {
+  }
+
+  void handleUserAttribute( const char* attr, theory::Theory* t ) {
+  }
+
+  void clear() {
+    d_callHistory.clear();
+  }
+
+  LemmaStatus splitLemma(TNode n, bool removable = false) throw(TypeCheckingExceptionPrivate, AssertionException, UnsafeInterruptException) {
+    push(LEMMA, n);
+    return LemmaStatus(Node::null(), 0);
+  }
+
+  Node getIthNode(int i) {
+    Node tmp = (d_callHistory[i]).second;
+    return tmp;
+  }
+
+  OutputChannelCallType getIthCallType(int i) {
+    return (d_callHistory[i]).first;
+  }
+
+  unsigned getNumCalls() {
+    return d_callHistory.size();
+  }
+
+  void printIth(std::ostream& os, int i) {
+    os << "[TestOutputChannel " << i;
+    os << " " << getIthCallType(i);
+    os << " " << getIthNode(i) << "]";
+  }
+
+private:
+
+  void push(OutputChannelCallType call, TNode n) {
+    d_callHistory.push_back(std::make_pair(call, n));
+  }
+
+};/* class TestOutputChannel */
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__THEORY_TEST_UTILS_H */
diff --git a/src/theory/theory_traits_template.h b/src/theory/theory_traits_template.h
new file mode 100644
index 0000000..0d2d0b8
--- /dev/null
+++ b/src/theory/theory_traits_template.h
@@ -0,0 +1,54 @@
+/*********************                                                        */
+/*! \file theory_traits_template.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A template for the theory_traits.h header, defining various
+ ** (static) aspects of theories
+ **
+ ** This file is a template for the theory_traits.h header, defining
+ ** various (static) aspects of theories, combined with the theory
+ ** kinds files to produce the final header.
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include "options/theory_options.h"
+#include "theory/theory.h"
+
+${theory_includes}
+
+namespace CVC4 {
+namespace theory {
+
+template <TheoryId theoryId>
+struct TheoryTraits;
+
+${theory_traits}
+
+${theory_for_each_macro}
+
+#line 40 "${template}"
+
+struct TheoryConstructor {
+  static void addTheory(TheoryEngine* engine, TheoryId id) {
+    switch(id) {
+
+${theory_constructors}
+
+    default:
+      Unhandled(id);
+    }
+  }
+};/* struct CVC4::theory::TheoryConstructor */
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/type_enumerator.h b/src/theory/type_enumerator.h
new file mode 100644
index 0000000..bcd7e69
--- /dev/null
+++ b/src/theory/type_enumerator.h
@@ -0,0 +1,169 @@
+/*********************                                                        */
+/*! \file type_enumerator.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Enumerators for types
+ **
+ ** Enumerators for types.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__TYPE_ENUMERATOR_H
+#define __CVC4__THEORY__TYPE_ENUMERATOR_H
+
+#include "base/exception.h"
+#include "base/cvc4_assert.h"
+#include "expr/node.h"
+#include "expr/type_node.h"
+
+namespace CVC4 {
+namespace theory {
+
+class NoMoreValuesException : public Exception {
+public:
+  NoMoreValuesException(TypeNode n) throw() :
+    Exception("No more values for type `" + n.toString() + "'") {
+  }
+};/* class NoMoreValuesException */
+
+class TypeEnumeratorInterface {
+  TypeNode d_type;
+
+public:
+
+  TypeEnumeratorInterface(TypeNode type) :
+    d_type(type) {
+  }
+
+  virtual ~TypeEnumeratorInterface() {}
+
+  /** Is this enumerator out of constants to enumerate? */
+  virtual bool isFinished() throw() = 0;
+
+  /** Get the current constant of this type (throws if no such constant exists) */
+  virtual Node operator*() throw(NoMoreValuesException) = 0;
+
+  /** Increment the pointer to the next available constant */
+  virtual TypeEnumeratorInterface& operator++() throw() = 0;
+
+  /** Clone this enumerator */
+  virtual TypeEnumeratorInterface* clone() const = 0;
+
+  /** Get the type from which we're enumerating constants */
+  TypeNode getType() const throw() { return d_type; }
+
+};/* class TypeEnumeratorInterface */
+
+// AJR: This class stores particular information that is relevant to type enumeration.
+//      For finite model finding, we set d_fixed_usort=true,
+//      and store the finite cardinality bounds for each uninterpreted sort encountered in the model.
+class TypeEnumeratorProperties
+{
+public:
+  TypeEnumeratorProperties() : d_fixed_usort_card(false){}
+  Integer getFixedCardinality( TypeNode tn ) { return d_fixed_card[tn]; }
+  bool d_fixed_usort_card;
+  std::map< TypeNode, Integer > d_fixed_card;
+};
+
+template <class T>
+class TypeEnumeratorBase : public TypeEnumeratorInterface {
+public:
+
+  TypeEnumeratorBase(TypeNode type) :
+    TypeEnumeratorInterface(type) {
+  }
+
+  TypeEnumeratorInterface* clone() const { return new T(static_cast<const T&>(*this)); }
+
+};/* class TypeEnumeratorBase */
+
+class TypeEnumerator {
+  TypeEnumeratorInterface* d_te;
+
+  static TypeEnumeratorInterface* mkTypeEnumerator(TypeNode type, TypeEnumeratorProperties * tep)
+    throw(AssertionException);
+
+public:
+
+  TypeEnumerator(TypeNode type, TypeEnumeratorProperties * tep = NULL) throw() :
+    d_te(mkTypeEnumerator(type, tep)) {
+  }
+
+  TypeEnumerator(const TypeEnumerator& te) :
+    d_te(te.d_te->clone()) {
+  }
+  TypeEnumerator(TypeEnumeratorInterface* te) : d_te(te){
+  }
+  TypeEnumerator& operator=(const TypeEnumerator& te) {
+    delete d_te;
+    d_te = te.d_te->clone();
+    return *this;
+  }
+
+  ~TypeEnumerator() { delete d_te; }
+
+  bool isFinished() throw() {
+// On Mac clang, there appears to be a code generation bug in an exception
+// block here.  For now, there doesn't appear a good workaround; just disable
+// assertions on that setup.
+#if defined(CVC4_ASSERTIONS) && !(defined(__clang__))
+    if(d_te->isFinished()) {
+      try {
+        **d_te;
+        Assert(false, "expected an NoMoreValuesException to be thrown");
+      } catch(NoMoreValuesException&) {
+        // ignore the exception, we're just asserting that it would be thrown
+        //
+        // This block can crash on clang 3.0 on Mac OS, perhaps related to
+        // bug:  http://llvm.org/bugs/show_bug.cgi?id=13359
+        //
+        // Hence the #if !(defined(__APPLE__) && defined(__clang__)) above
+      }
+    } else {
+      try {
+        **d_te;
+      } catch(NoMoreValuesException&) {
+        Assert(false, "didn't expect a NoMoreValuesException to be thrown");
+      }
+    }
+#endif /* CVC4_ASSERTIONS && !(APPLE || clang) */
+    return d_te->isFinished();
+  }
+  Node operator*() throw(NoMoreValuesException) {
+// On Mac clang, there appears to be a code generation bug in an exception
+// block above (and perhaps here, too).  For now, there doesn't appear a
+// good workaround; just disable assertions on that setup.
+#if defined(CVC4_ASSERTIONS) && !(defined(__APPLE__) && defined(__clang__))
+    try {
+      Node n = **d_te;
+      Assert(n.isConst());
+      Assert(! isFinished());
+      return n;
+    } catch(NoMoreValuesException&) {
+      Assert(isFinished());
+      throw;
+    }
+#else /* CVC4_ASSERTIONS && !(APPLE || clang) */
+    return **d_te;
+#endif /* CVC4_ASSERTIONS && !(APPLE || clang) */
+  }
+  TypeEnumerator& operator++() throw() { ++*d_te; return *this; }
+  TypeEnumerator operator++(int) throw() { TypeEnumerator te = *this; ++*d_te; return te; }
+
+  TypeNode getType() const throw() { return d_te->getType(); }
+
+};/* class TypeEnumerator */
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__TYPE_ENUMERATOR_H */
diff --git a/src/theory/type_enumerator_template.cpp b/src/theory/type_enumerator_template.cpp
new file mode 100644
index 0000000..2dfefa1
--- /dev/null
+++ b/src/theory/type_enumerator_template.cpp
@@ -0,0 +1,58 @@
+/*********************                                                        */
+/*! \file type_enumerator_template.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Enumerators for types
+ **
+ ** Enumerators for types.
+ **/
+
+#include <sstream>
+
+#include "base/cvc4_assert.h"
+#include "expr/kind.h"
+#include "theory/type_enumerator.h"
+
+
+${type_enumerator_includes}
+#line 26 "${template}"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+
+TypeEnumeratorInterface* TypeEnumerator::mkTypeEnumerator(TypeNode type, TypeEnumeratorProperties * tep) throw(AssertionException) {
+  switch(type.getKind()) {
+  case kind::TYPE_CONSTANT:
+    switch(type.getConst<TypeConstant>()) {
+${mk_type_enumerator_type_constant_cases}
+    default:
+      {
+        stringstream ss;
+        ss << "No type enumerator for type `" << type << "'";
+        Unhandled(ss.str());
+      }
+    }
+    Unreachable();
+${mk_type_enumerator_cases}
+#line 47 "${template}"
+  default:
+    {
+      stringstream ss;
+      ss << "No type enumerator for type `" << type << "'";
+      Unhandled(ss.str());
+    }
+  }
+  Unreachable();
+}
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/uf/equality_engine.cpp b/src/theory/uf/equality_engine.cpp
new file mode 100644
index 0000000..f7084be
--- /dev/null
+++ b/src/theory/uf/equality_engine.cpp
@@ -0,0 +1,2246 @@
+/*********************                                                        */
+/*! \file equality_engine.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Guy Katz, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/uf/equality_engine.h"
+
+#include "smt/smt_statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace eq {
+
+EqualityEngine::Statistics::Statistics(std::string name)
+    : mergesCount(name + "::mergesCount", 0),
+      termsCount(name + "::termsCount", 0),
+      functionTermsCount(name + "::functionTermsCount", 0),
+      constantTermsCount(name + "::constantTermsCount", 0)
+{
+  smtStatisticsRegistry()->registerStat(&mergesCount);
+  smtStatisticsRegistry()->registerStat(&termsCount);
+  smtStatisticsRegistry()->registerStat(&functionTermsCount);
+  smtStatisticsRegistry()->registerStat(&constantTermsCount);
+}
+
+EqualityEngine::Statistics::~Statistics() {
+  smtStatisticsRegistry()->unregisterStat(&mergesCount);
+  smtStatisticsRegistry()->unregisterStat(&termsCount);
+  smtStatisticsRegistry()->unregisterStat(&functionTermsCount);
+  smtStatisticsRegistry()->unregisterStat(&constantTermsCount);
+}
+
+/**
+ * Data used in the BFS search through the equality graph.
+ */
+struct BfsData {
+  // The current node
+  EqualityNodeId nodeId;
+  // The index of the edge we traversed
+  EqualityEdgeId edgeId;
+  // Index in the queue of the previous node. Shouldn't be too much of them, at most the size
+  // of the biggest equivalence class
+  size_t previousIndex;
+
+  BfsData(EqualityNodeId nodeId = null_id, EqualityEdgeId edgeId = null_edge, size_t prev = 0)
+  : nodeId(nodeId), edgeId(edgeId), previousIndex(prev) {}
+};
+
+class ScopedBool {
+  bool& watch;
+  bool oldValue;
+public:
+  ScopedBool(bool& watch, bool newValue)
+  : watch(watch), oldValue(watch) {
+    watch = newValue;
+  }
+  ~ScopedBool() {
+    watch = oldValue;
+  }
+};
+
+EqualityEngineNotifyNone EqualityEngine::s_notifyNone;
+
+void EqualityEngine::init() {
+  Debug("equality") << "EqualityEdge::EqualityEngine(): id_null = " << +null_id << std::endl;
+  Debug("equality") << "EqualityEdge::EqualityEngine(): edge_null = " << +null_edge << std::endl;
+  Debug("equality") << "EqualityEdge::EqualityEngine(): trigger_null = " << +null_trigger << std::endl;
+
+  d_true = NodeManager::currentNM()->mkConst<bool>(true);
+  d_false = NodeManager::currentNM()->mkConst<bool>(false);
+
+  d_triggerDatabaseAllocatedSize = 100000;
+  d_triggerDatabase = (char*) malloc(d_triggerDatabaseAllocatedSize);
+
+  //We can't notify during the initialization because it notifies
+  // QuantifiersEngine.AddTermToDatabase that try to access to the uf
+  // instantiator that currently doesn't exist.
+  ScopedBool sb(d_performNotify, false);
+  addTermInternal(d_true);
+  addTermInternal(d_false);
+
+  d_trueId = getNodeId(d_true);
+  d_falseId = getNodeId(d_false);
+
+  d_freshMergeReasonType = eq::NUMBER_OF_MERGE_REASONS;
+}
+
+EqualityEngine::~EqualityEngine() {
+  free(d_triggerDatabase);
+}
+
+
+EqualityEngine::EqualityEngine(context::Context* context, std::string name, bool constantsAreTriggers)
+: ContextNotifyObj(context)
+, d_masterEqualityEngine(0)
+, d_context(context)
+, d_done(context, false)
+, d_performNotify(true)
+, d_notify(s_notifyNone)
+, d_applicationLookupsCount(context, 0)
+, d_nodesCount(context, 0)
+, d_assertedEqualitiesCount(context, 0)
+, d_equalityTriggersCount(context, 0)
+, d_subtermEvaluatesSize(context, 0)
+, d_stats(name)
+, d_inPropagate(false)
+, d_constantsAreTriggers(constantsAreTriggers)
+, d_triggerDatabaseSize(context, 0)
+, d_triggerTermSetUpdatesSize(context, 0)
+, d_deducedDisequalitiesSize(context, 0)
+, d_deducedDisequalityReasonsSize(context, 0)
+, d_propagatedDisequalities(context)
+, d_name(name)
+{
+  init();
+}
+
+EqualityEngine::EqualityEngine(EqualityEngineNotify& notify, context::Context* context, std::string name, bool constantsAreTriggers)
+: ContextNotifyObj(context)
+, d_masterEqualityEngine(0)
+, d_context(context)
+, d_done(context, false)
+, d_performNotify(true)
+, d_notify(notify)
+, d_applicationLookupsCount(context, 0)
+, d_nodesCount(context, 0)
+, d_assertedEqualitiesCount(context, 0)
+, d_equalityTriggersCount(context, 0)
+, d_subtermEvaluatesSize(context, 0)
+, d_stats(name)
+, d_inPropagate(false)
+, d_constantsAreTriggers(constantsAreTriggers)
+, d_triggerDatabaseSize(context, 0)
+, d_triggerTermSetUpdatesSize(context, 0)
+, d_deducedDisequalitiesSize(context, 0)
+, d_deducedDisequalityReasonsSize(context, 0)
+, d_propagatedDisequalities(context)
+, d_name(name)
+{
+  init();
+}
+
+void EqualityEngine::setMasterEqualityEngine(EqualityEngine* master) {
+  Assert(d_masterEqualityEngine == 0);
+  d_masterEqualityEngine = master;
+}
+
+void EqualityEngine::enqueue(const MergeCandidate& candidate, bool back) {
+  Debug("equality") << d_name << "::eq::enqueue(" << d_nodes[candidate.t1Id] << ", " << d_nodes[candidate.t2Id] << ", " << candidate.type << "). reason: " << candidate.reason << std::endl;
+  if (back) {
+    d_propagationQueue.push_back(candidate);
+  } else {
+    d_propagationQueue.push_front(candidate);
+  }
+}
+
+EqualityNodeId EqualityEngine::newApplicationNode(TNode original, EqualityNodeId t1, EqualityNodeId t2, FunctionApplicationType type) {
+  Debug("equality") << d_name << "::eq::newApplicationNode(" << original << ", " << t1 << ", " << t2 << ")" << std::endl;
+
+  ++ d_stats.functionTermsCount;
+
+  // Get another id for this
+  EqualityNodeId funId = newNode(original);
+  FunctionApplication funOriginal(type, t1, t2);
+  // The function application we're creating
+  EqualityNodeId t1ClassId = getEqualityNode(t1).getFind();
+  EqualityNodeId t2ClassId = getEqualityNode(t2).getFind();
+  FunctionApplication funNormalized(type, t1ClassId, t2ClassId);
+
+  // We add the original version
+  d_applications[funId] = FunctionApplicationPair(funOriginal, funNormalized);
+
+  // Add the lookup data, if it's not already there
+  ApplicationIdsMap::iterator find = d_applicationLookup.find(funNormalized);
+  if (find == d_applicationLookup.end()) {
+    Debug("equality") << d_name << "::eq::newApplicationNode(" << original << ", " << t1 << ", " << t2 << "): no lookup, setting up" << std::endl;
+    // Mark the normalization to the lookup
+    storeApplicationLookup(funNormalized, funId);
+  } else {
+    // If it's there, we need to merge these two
+    Debug("equality") << d_name << "::eq::newApplicationNode(" << original << ", " << t1 << ", " << t2 << "): lookup exists, adding to queue" << std::endl;
+    Debug("equality") << d_name << "::eq::newApplicationNode(" << original << ", " << t1 << ", " << t2 << "): lookup = " << d_nodes[find->second] << std::endl;
+    enqueue(MergeCandidate(funId, find->second, MERGED_THROUGH_CONGRUENCE, TNode::null()));
+  }
+
+  // Add to the use lists
+  Debug("equality") << d_name << "::eq::newApplicationNode(" << original << ", " << t1 << ", " << t2 << "): adding " << original << " to the uselist of " << d_nodes[t1] << std::endl;
+  d_equalityNodes[t1].usedIn(funId, d_useListNodes);
+  Debug("equality") << d_name << "::eq::newApplicationNode(" << original << ", " << t1 << ", " << t2 << "): adding " << original << " to the uselist of " << d_nodes[t2] << std::endl;
+  d_equalityNodes[t2].usedIn(funId, d_useListNodes);
+
+  // Return the new id
+  Debug("equality") << d_name << "::eq::newApplicationNode(" << original << ", " << t1 << ", " << t2 << ") => " << funId << std::endl;
+
+  return funId;
+}
+
+EqualityNodeId EqualityEngine::newNode(TNode node) {
+
+  Debug("equality") << d_name << "::eq::newNode(" << node << ")" << std::endl;
+
+  ++ d_stats.termsCount;
+
+  // Register the new id of the term
+  EqualityNodeId newId = d_nodes.size();
+  d_nodeIds[node] = newId;
+  // Add the node to it's position
+  d_nodes.push_back(node);
+  // Note if this is an application or not
+  d_applications.push_back(FunctionApplicationPair());
+  // Add the trigger list for this node
+  d_nodeTriggers.push_back(+null_trigger);
+  // Add it to the equality graph
+  d_equalityGraph.push_back(+null_edge);
+  // Mark the no-individual trigger
+  d_nodeIndividualTrigger.push_back(+null_set_id);
+  // Mark non-constant by default
+  d_isConstant.push_back(false);
+  // No terms to evaluate by defaul
+  d_subtermsToEvaluate.push_back(0);
+  // Mark equality nodes
+  d_isEquality.push_back(false);
+  // Mark the node as internal by default
+  d_isInternal.push_back(true);
+  // Add the equality node to the nodes
+  d_equalityNodes.push_back(EqualityNode(newId));
+
+  // Increase the counters
+  d_nodesCount = d_nodesCount + 1;
+
+  Debug("equality") << d_name << "::eq::newNode(" << node << ") => " << newId << std::endl;
+
+  // notify e.g. the UF theory strong solver
+  if (d_performNotify) {
+    d_notify.eqNotifyNewClass(node);
+  }
+
+  return newId;
+}
+
+void EqualityEngine::addFunctionKind(Kind fun, bool interpreted) {
+  d_congruenceKinds |= fun;
+  if (interpreted && fun != kind::EQUAL) {
+    Debug("equality::evaluation") << d_name << "::eq::addFunctionKind(): " << fun << " is interpreted " << std::endl;
+    d_congruenceKindsInterpreted |= fun;
+  }
+}
+
+void EqualityEngine::subtermEvaluates(EqualityNodeId id)  {
+  Debug("equality::evaluation") << d_name << "::eq::subtermEvaluates(" << d_nodes[id] << "): " << d_subtermsToEvaluate[id] << std::endl;
+  Assert(!d_isInternal[id]);
+  Assert(d_subtermsToEvaluate[id] > 0);
+  if ((-- d_subtermsToEvaluate[id]) == 0) {
+    d_evaluationQueue.push(id);
+  }
+  d_subtermEvaluates.push_back(id);
+  d_subtermEvaluatesSize = d_subtermEvaluates.size();
+  Debug("equality::evaluation") << d_name << "::eq::subtermEvaluates(" << d_nodes[id] << "): new " << d_subtermsToEvaluate[id] << std::endl;
+}
+
+void EqualityEngine::addTermInternal(TNode t, bool isOperator) {
+
+  Debug("equality") << d_name << "::eq::addTermInternal(" << t << ")" << std::endl;
+
+  // If there already, we're done
+  if (hasTerm(t)) {
+    Debug("equality") << d_name << "::eq::addTermInternal(" << t << "): already there" << std::endl;
+    return;
+  }
+
+  if (d_done) {
+    return;
+  }
+
+  EqualityNodeId result;
+
+  if (t.getKind() == kind::EQUAL) {
+    addTermInternal(t[0]);
+    addTermInternal(t[1]);
+    EqualityNodeId t0id = getNodeId(t[0]);
+    EqualityNodeId t1id = getNodeId(t[1]);
+    result = newApplicationNode(t, t0id, t1id, APP_EQUALITY);
+    d_isInternal[result] = false;
+    d_isConstant[result] = false;
+  } else if (t.getNumChildren() > 0 && d_congruenceKinds[t.getKind()]) {
+    TNode tOp = t.getOperator();
+    // Add the operator
+    addTermInternal(tOp, true);
+    result = getNodeId(tOp);
+    // Add all the children and Curryfy
+    bool isInterpreted = isInterpretedFunctionKind(t.getKind());
+    for (unsigned i = 0; i < t.getNumChildren(); ++ i) {
+      // Add the child
+      addTermInternal(t[i]);
+      EqualityNodeId tiId = getNodeId(t[i]);
+      // Add the application
+      result = newApplicationNode(t, result, tiId, isInterpreted ? APP_INTERPRETED : APP_UNINTERPRETED);
+    }
+    d_isInternal[result] = false;
+    d_isConstant[result] = t.isConst();
+    // If interpreted, set the number of non-interpreted children
+    if (isInterpreted) {
+      // How many children are not constants yet
+      d_subtermsToEvaluate[result] = t.getNumChildren();
+      for (unsigned i = 0; i < t.getNumChildren(); ++ i) {
+        if (isConstant(getNodeId(t[i]))) {
+          Debug("equality::evaluation") << d_name << "::eq::addTermInternal(" << t << "): evaluates " << t[i] << std::endl;
+          subtermEvaluates(result);
+        }
+      }
+    }
+  } else {
+    // Otherwise we just create the new id
+    result = newNode(t);
+    // Is this an operator
+    d_isInternal[result] = isOperator;
+    d_isConstant[result] = !isOperator && t.isConst();
+  }
+
+  if (t.getKind() == kind::EQUAL) {
+    // We set this here as this only applies to actual terms, not the
+    // intermediate application terms
+    d_isEquality[result] = true;
+  } else if (d_constantsAreTriggers && d_isConstant[result]) {
+    // Non-Boolean constants are trigger terms for all tags
+    EqualityNodeId tId = getNodeId(t);
+    // Setup the new set
+    Theory::Set newSetTags = 0;
+    EqualityNodeId newSetTriggers[THEORY_LAST];
+    unsigned newSetTriggersSize = THEORY_LAST;
+    for (TheoryId currentTheory = THEORY_FIRST; currentTheory != THEORY_LAST; ++ currentTheory) {
+      newSetTags = Theory::setInsert(currentTheory, newSetTags);
+      newSetTriggers[currentTheory] = tId;
+    }
+    // Add it to the list for backtracking
+    d_triggerTermSetUpdates.push_back(TriggerSetUpdate(tId, null_set_id));
+    d_triggerTermSetUpdatesSize = d_triggerTermSetUpdatesSize + 1;
+    // Mark the the new set as a trigger
+    d_nodeIndividualTrigger[tId] = newTriggerTermSet(newSetTags, newSetTriggers, newSetTriggersSize);
+  }
+
+  // If this is not an internal node, add it to the master
+  if (d_masterEqualityEngine && !d_isInternal[result]) {
+    d_masterEqualityEngine->addTermInternal(t);
+  }
+
+  // Empty the queue
+  propagate();
+
+  Assert(hasTerm(t));
+
+  Debug("equality") << d_name << "::eq::addTermInternal(" << t << ") => " << result << std::endl;
+}
+
+bool EqualityEngine::hasTerm(TNode t) const {
+  return d_nodeIds.find(t) != d_nodeIds.end();
+}
+
+EqualityNodeId EqualityEngine::getNodeId(TNode node) const {
+  Assert(hasTerm(node), node.toString().c_str());
+  return (*d_nodeIds.find(node)).second;
+}
+
+EqualityNode& EqualityEngine::getEqualityNode(TNode t) {
+  return getEqualityNode(getNodeId(t));
+}
+
+EqualityNode& EqualityEngine::getEqualityNode(EqualityNodeId nodeId) {
+  Assert(nodeId < d_equalityNodes.size());
+  return d_equalityNodes[nodeId];
+}
+
+const EqualityNode& EqualityEngine::getEqualityNode(TNode t) const {
+  return getEqualityNode(getNodeId(t));
+}
+
+const EqualityNode& EqualityEngine::getEqualityNode(EqualityNodeId nodeId) const {
+  Assert(nodeId < d_equalityNodes.size());
+  return d_equalityNodes[nodeId];
+}
+
+void EqualityEngine::assertEqualityInternal(TNode t1, TNode t2, TNode reason, unsigned pid) {
+
+  Debug("equality") << d_name << "::eq::addEqualityInternal(" << t1 << "," << t2 << "), reason = " << reason << ", pid = " << pid << std::endl;
+
+  if (d_done) {
+    return;
+  }
+
+  // Add the terms if they are not already in the database
+  addTermInternal(t1);
+  addTermInternal(t2);
+
+  // Add to the queue and propagate
+  EqualityNodeId t1Id = getNodeId(t1);
+  EqualityNodeId t2Id = getNodeId(t2);
+  enqueue(MergeCandidate(t1Id, t2Id, pid, reason));
+}
+
+void EqualityEngine::assertPredicate(TNode t, bool polarity, TNode reason, unsigned pid) {
+  Debug("equality") << d_name << "::eq::addPredicate(" << t << "," << (polarity ? "true" : "false") << ")" << std::endl;
+  Assert(t.getKind() != kind::EQUAL, "Use assertEquality instead");
+  assertEqualityInternal(t, polarity ? d_true : d_false, reason, pid);
+  propagate();
+}
+
+void EqualityEngine::mergePredicates(TNode p, TNode q, TNode reason) {
+  Debug("equality") << d_name << "::eq::mergePredicates(" << p << "," << q << ")" << std::endl;
+  assertEqualityInternal(p, q, reason);
+  propagate();
+}
+
+void EqualityEngine::assertEquality(TNode eq, bool polarity, TNode reason, unsigned pid) {
+  Debug("equality") << d_name << "::eq::addEquality(" << eq << "," << (polarity ? "true" : "false") << ")" << std::endl;
+  if (polarity) {
+    // If two terms are already equal, don't assert anything
+    if (hasTerm(eq[0]) && hasTerm(eq[1]) && areEqual(eq[0], eq[1])) {
+      return;
+    }
+    // Add equality between terms
+    assertEqualityInternal(eq[0], eq[1], reason, pid);
+    propagate();
+  } else {
+    // If two terms are already dis-equal, don't assert anything
+    if (hasTerm(eq[0]) && hasTerm(eq[1]) && areDisequal(eq[0], eq[1], false)) {
+      return;
+    }
+
+    // notify the theory
+    if (d_performNotify) {
+      d_notify.eqNotifyDisequal(eq[0], eq[1], reason);
+    }
+
+    Debug("equality::trigger") << d_name << "::eq::addEquality(" << eq << "," << (polarity ? "true" : "false") << ")" << std::endl;
+
+    assertEqualityInternal(eq, d_false, reason, pid);
+    propagate();
+
+    if (d_done) {
+      return;
+    }
+
+    // If both have constant representatives, we don't notify anyone
+    EqualityNodeId a = getNodeId(eq[0]);
+    EqualityNodeId b = getNodeId(eq[1]);
+    EqualityNodeId aClassId = getEqualityNode(a).getFind();
+    EqualityNodeId bClassId = getEqualityNode(b).getFind();
+    if (d_isConstant[aClassId] && d_isConstant[bClassId]) {
+      return;
+    }
+
+    // If we are adding a disequality, notify of the shared term representatives
+    EqualityNodeId eqId = getNodeId(eq);
+    TriggerTermSetRef aTriggerRef = d_nodeIndividualTrigger[aClassId];
+    TriggerTermSetRef bTriggerRef = d_nodeIndividualTrigger[bClassId];
+    if (aTriggerRef != +null_set_id && bTriggerRef != +null_set_id) {
+      Debug("equality::trigger") << d_name << "::eq::addEquality(" << eq << "," << (polarity ? "true" : "false") << ": have triggers" << std::endl;
+      // The sets of trigger terms
+      TriggerTermSet& aTriggerTerms = getTriggerTermSet(aTriggerRef);
+      TriggerTermSet& bTriggerTerms = getTriggerTermSet(bTriggerRef);
+      // Go through and notify the shared dis-equalities
+      Theory::Set aTags = aTriggerTerms.tags;
+      Theory::Set bTags = bTriggerTerms.tags;
+      TheoryId aTag = Theory::setPop(aTags);
+      TheoryId bTag = Theory::setPop(bTags);
+      int a_i = 0, b_i = 0;
+      while (aTag != THEORY_LAST && bTag != THEORY_LAST) {
+        if (aTag < bTag) {
+          aTag = Theory::setPop(aTags);
+          ++ a_i;
+        } else if (aTag > bTag) {
+          bTag = Theory::setPop(bTags);
+          ++ b_i;
+        } else {
+          // Same tags, notify
+          EqualityNodeId aSharedId = aTriggerTerms.triggers[a_i++];
+          EqualityNodeId bSharedId = bTriggerTerms.triggers[b_i++];
+          // Propagate
+          if (!hasPropagatedDisequality(aTag, aSharedId, bSharedId)) {
+            // Store a proof if not there already
+            if (!hasPropagatedDisequality(aSharedId, bSharedId)) {
+              d_deducedDisequalityReasons.push_back(EqualityPair(aSharedId, a));
+              d_deducedDisequalityReasons.push_back(EqualityPair(bSharedId, b));
+              d_deducedDisequalityReasons.push_back(EqualityPair(eqId, d_falseId));
+            }
+            // Store the propagation
+            storePropagatedDisequality(aTag, aSharedId, bSharedId);
+            // Notify
+            Debug("equality::trigger") << d_name << "::eq::addEquality(" << eq << "," << (polarity ? "true" : "false") << ": notifying " << aTag << " for " << d_nodes[aSharedId] << " != " << d_nodes[bSharedId] << std::endl;
+            if (!d_notify.eqNotifyTriggerTermEquality(aTag, d_nodes[aSharedId], d_nodes[bSharedId], false)) {
+              break;
+            }
+          }
+          // Pop the next tags
+          aTag = Theory::setPop(aTags);
+          bTag = Theory::setPop(bTags);
+        }
+      }
+    }
+  }
+}
+
+TNode EqualityEngine::getRepresentative(TNode t) const {
+  Debug("equality::internal") << d_name << "::eq::getRepresentative(" << t << ")" << std::endl;
+  Assert(hasTerm(t));
+  EqualityNodeId representativeId = getEqualityNode(t).getFind();
+  Assert(!d_isInternal[representativeId]);
+  Debug("equality::internal") << d_name << "::eq::getRepresentative(" << t << ") => " << d_nodes[representativeId] << std::endl;
+  return d_nodes[representativeId];
+}
+
+bool EqualityEngine::merge(EqualityNode& class1, EqualityNode& class2, std::vector<TriggerId>& triggersFired) {
+
+  Debug("equality") << d_name << "::eq::merge(" << class1.getFind() << "," << class2.getFind() << ")" << std::endl;
+
+  Assert(triggersFired.empty());
+
+  ++ d_stats.mergesCount;
+
+  EqualityNodeId class1Id = class1.getFind();
+  EqualityNodeId class2Id = class2.getFind();
+
+  Node n1 = d_nodes[class1Id];
+  Node n2 = d_nodes[class2Id];
+  EqualityNode cc1 = getEqualityNode(n1);
+  EqualityNode cc2 = getEqualityNode(n2);
+  bool doNotify = false;
+  // notify the theory
+  // the second part of this check is needed due to the internal implementation of this class.
+  // It ensures that we are merging terms and not operators.
+  if (d_performNotify && class1Id==cc1.getFind() && class2Id==cc2.getFind()) {
+    doNotify = true;
+  }
+  if (doNotify) {
+    d_notify.eqNotifyPreMerge(n1, n2);
+  }
+
+  // Check for constant merges
+  bool class1isConstant = d_isConstant[class1Id];
+  bool class2isConstant = d_isConstant[class2Id];
+  Assert(class1isConstant || !class2isConstant, "Should always merge into constants");
+  Assert(!class1isConstant || !class2isConstant, "Don't merge constants");
+
+  // Trigger set of class 1
+  TriggerTermSetRef class1triggerRef = d_nodeIndividualTrigger[class1Id];
+  Theory::Set class1Tags = class1triggerRef == null_set_id ? 0 : getTriggerTermSet(class1triggerRef).tags;
+  // Trigger set of class 2
+  TriggerTermSetRef class2triggerRef = d_nodeIndividualTrigger[class2Id];
+  Theory::Set class2Tags = class2triggerRef == null_set_id ? 0 : getTriggerTermSet(class2triggerRef).tags;
+
+  // Disequalities coming from class2
+  TaggedEqualitiesSet class2disequalitiesToNotify;
+  // Disequalities coming from class1
+  TaggedEqualitiesSet class1disequalitiesToNotify;
+
+  // Individual tags
+  Theory::Set class1OnlyTags = Theory::setDifference(class1Tags, class2Tags);
+  Theory::Set class2OnlyTags = Theory::setDifference(class2Tags, class1Tags);
+
+  // Only get disequalities if they are not both constant
+  if (!class1isConstant || !class2isConstant) {
+    getDisequalities(!class1isConstant, class2Id, class1OnlyTags, class2disequalitiesToNotify);
+    getDisequalities(!class2isConstant, class1Id, class2OnlyTags, class1disequalitiesToNotify);
+  }
+
+  // Update class2 representative information
+  Debug("equality") << d_name << "::eq::merge(" << class1.getFind() << "," << class2.getFind() << "): updating class " << class2Id << std::endl;
+  EqualityNodeId currentId = class2Id;
+  do {
+    // Get the current node
+    EqualityNode& currentNode = getEqualityNode(currentId);
+
+    // Update it's find to class1 id
+    Debug("equality") << d_name << "::eq::merge(" << class1.getFind() << "," << class2.getFind() << "): " << currentId << "->" << class1Id << std::endl;
+    currentNode.setFind(class1Id);
+
+    // Go through the triggers and inform if necessary
+    TriggerId currentTrigger = d_nodeTriggers[currentId];
+    while (currentTrigger != null_trigger) {
+      Trigger& trigger = d_equalityTriggers[currentTrigger];
+      Trigger& otherTrigger = d_equalityTriggers[currentTrigger ^ 1];
+
+      // If the two are not already in the same class
+      if (otherTrigger.classId != trigger.classId) {
+        trigger.classId = class1Id;
+        // If they became the same, call the trigger
+        if (otherTrigger.classId == class1Id) {
+          // Id of the real trigger is half the internal one
+          triggersFired.push_back(currentTrigger);
+        }
+      }
+
+      // Go to the next trigger
+      currentTrigger = trigger.nextTrigger;
+    }
+
+    // Move to the next node
+    currentId = currentNode.getNext();
+
+  } while (currentId != class2Id);
+
+  // Update class2 table lookup and information if not a boolean
+  // since booleans can't be in an application
+  if (!d_isEquality[class2Id]) {
+    Debug("equality") << d_name << "::eq::merge(" << class1.getFind() << "," << class2.getFind() << "): updating lookups of " << class2Id << std::endl;
+    do {
+      // Get the current node
+      EqualityNode& currentNode = getEqualityNode(currentId);
+      Debug("equality") << d_name << "::eq::merge(" << class1.getFind() << "," << class2.getFind() << "): updating lookups of node " << currentId << std::endl;
+
+      // Go through the uselist and check for congruences
+      UseListNodeId currentUseId = currentNode.getUseList();
+      while (currentUseId != null_uselist_id) {
+        // Get the node of the use list
+        UseListNode& useNode = d_useListNodes[currentUseId];
+        // Get the function application
+        EqualityNodeId funId = useNode.getApplicationId();
+        Debug("equality") << d_name << "::eq::merge(" << class1.getFind() << "," << class2.getFind() << "): " << d_nodes[currentId] << " in " << d_nodes[funId] << std::endl;
+        const FunctionApplication& fun = d_applications[useNode.getApplicationId()].normalized;
+        // If it's interpreted and we can interpret
+  if (fun.isInterpreted() && class1isConstant && !d_isInternal[currentId]) {
+    // Get the actual term id
+    TNode term = d_nodes[funId];
+    subtermEvaluates(getNodeId(term));
+  }
+  // Check if there is an application with find arguments
+        EqualityNodeId aNormalized = getEqualityNode(fun.a).getFind();
+        EqualityNodeId bNormalized = getEqualityNode(fun.b).getFind();
+        FunctionApplication funNormalized(fun.type, aNormalized, bNormalized);
+        ApplicationIdsMap::iterator find = d_applicationLookup.find(funNormalized);
+        if (find != d_applicationLookup.end()) {
+          // Applications fun and the funNormalized can be merged due to congruence
+          if (getEqualityNode(funId).getFind() != getEqualityNode(find->second).getFind()) {
+            enqueue(MergeCandidate(funId, find->second, MERGED_THROUGH_CONGRUENCE, TNode::null()));
+          }
+        } else {
+          // There is no representative, so we can add one, we remove this when backtracking
+          storeApplicationLookup(funNormalized, funId);
+        }
+
+        // Go to the next one in the use list
+        currentUseId = useNode.getNext();
+      }
+
+      // Move to the next node
+      currentId = currentNode.getNext();
+    } while (currentId != class2Id);
+  }
+
+  // Now merge the lists
+  class1.merge<true>(class2);
+
+  // notify the theory
+  if (doNotify) {
+    d_notify.eqNotifyPostMerge(n1, n2);
+  }
+
+  // Go through the trigger term disequalities and propagate
+  if (!propagateTriggerTermDisequalities(class1OnlyTags, class1triggerRef, class2disequalitiesToNotify)) {
+    return false;
+  }
+  if (!propagateTriggerTermDisequalities(class2OnlyTags, class2triggerRef, class1disequalitiesToNotify)) {
+    return false;
+  }
+
+  // Notify the trigger term merges
+  if (class2triggerRef != +null_set_id) {
+    if (class1triggerRef == +null_set_id) {
+      // If class1 doesn't have individual triggers, but class2 does, mark it
+      d_nodeIndividualTrigger[class1Id] = class2triggerRef;
+      // Add it to the list for backtracking
+      d_triggerTermSetUpdates.push_back(TriggerSetUpdate(class1Id, +null_set_id));
+      d_triggerTermSetUpdatesSize = d_triggerTermSetUpdatesSize + 1;
+    } else {
+      // Get the triggers
+      TriggerTermSet& class1triggers = getTriggerTermSet(class1triggerRef);
+      TriggerTermSet& class2triggers = getTriggerTermSet(class2triggerRef);
+
+      // Initialize the merged set
+      Theory::Set newSetTags = Theory::setUnion(class1triggers.tags, class2triggers.tags);
+      EqualityNodeId newSetTriggers[THEORY_LAST];
+      unsigned newSetTriggersSize = 0;
+
+      int i1 = 0;
+      int i2 = 0;
+      Theory::Set tags1 = class1triggers.tags;
+      Theory::Set tags2 = class2triggers.tags;
+      TheoryId tag1 = Theory::setPop(tags1);
+      TheoryId tag2 = Theory::setPop(tags2);
+
+      // Comparing the THEORY_LAST is OK because all other theories are
+      // smaller, and will therefore be preferred
+      while (tag1 != THEORY_LAST || tag2 != THEORY_LAST)
+      {
+        if (tag1 < tag2) {
+          // copy tag1
+          newSetTriggers[newSetTriggersSize++] = class1triggers.triggers[i1++];
+          tag1 = Theory::setPop(tags1);
+        } else if (tag1 > tag2) {
+          // copy tag2
+          newSetTriggers[newSetTriggersSize++] = class2triggers.triggers[i2++];
+          tag2 = Theory::setPop(tags2);
+        } else {
+          // copy tag1
+          EqualityNodeId tag1id = newSetTriggers[newSetTriggersSize++] = class1triggers.triggers[i1++];
+          // since they are both tagged notify of merge
+          if (d_performNotify) {
+            EqualityNodeId tag2id = class2triggers.triggers[i2++];
+            if (!d_notify.eqNotifyTriggerTermEquality(tag1, d_nodes[tag1id], d_nodes[tag2id], true)) {
+              return false;
+            }
+          }
+          // Next tags
+          tag1 = Theory::setPop(tags1);
+          tag2 = Theory::setPop(tags2);
+        }
+      }
+
+      // Add the new trigger set, if different from previous one
+      if (class1triggers.tags != class2triggers.tags) {
+        // Add it to the list for backtracking
+        d_triggerTermSetUpdates.push_back(TriggerSetUpdate(class1Id, class1triggerRef));
+        d_triggerTermSetUpdatesSize = d_triggerTermSetUpdatesSize + 1;
+        // Mark the the new set as a trigger
+        d_nodeIndividualTrigger[class1Id] = newTriggerTermSet(newSetTags, newSetTriggers, newSetTriggersSize);
+      }
+    }
+  }
+
+  // Everything fine
+  return true;
+}
+
+void EqualityEngine::undoMerge(EqualityNode& class1, EqualityNode& class2, EqualityNodeId class2Id) {
+
+  Debug("equality") << d_name << "::eq::undoMerge(" << class1.getFind() << "," << class2Id << ")" << std::endl;
+
+  // Now unmerge the lists (same as merge)
+  class1.merge<false>(class2);
+
+  // Update class2 representative information
+  EqualityNodeId currentId = class2Id;
+  Debug("equality") << d_name << "::eq::undoMerge(" << class1.getFind() << "," << class2Id << "): undoing representative info" << std::endl;
+  do {
+    // Get the current node
+    EqualityNode& currentNode = getEqualityNode(currentId);
+
+    // Update it's find to class1 id
+    currentNode.setFind(class2Id);
+
+    // Go through the trigger list (if any) and undo the class
+    TriggerId currentTrigger = d_nodeTriggers[currentId];
+    while (currentTrigger != null_trigger) {
+      Trigger& trigger = d_equalityTriggers[currentTrigger];
+      trigger.classId = class2Id;
+      currentTrigger = trigger.nextTrigger;
+    }
+
+    // Move to the next node
+    currentId = currentNode.getNext();
+
+  } while (currentId != class2Id);
+
+}
+
+void EqualityEngine::backtrack() {
+
+  Debug("equality::backtrack") << "backtracking" << std::endl;
+
+  // If we need to backtrack then do it
+  if (d_assertedEqualitiesCount < d_assertedEqualities.size()) {
+
+    // Clear the propagation queue
+    while (!d_propagationQueue.empty()) {
+      d_propagationQueue.pop_front();
+    }
+
+    Debug("equality") << d_name << "::eq::backtrack(): nodes" << std::endl;
+
+    for (int i = (int)d_assertedEqualities.size() - 1, i_end = (int)d_assertedEqualitiesCount; i >= i_end; --i) {
+      // Get the ids of the merged classes
+      Equality& eq = d_assertedEqualities[i];
+      // Undo the merge
+      if (eq.lhs != null_id) {
+        undoMerge(d_equalityNodes[eq.lhs], d_equalityNodes[eq.rhs], eq.rhs);
+      }
+    }
+
+    d_assertedEqualities.resize(d_assertedEqualitiesCount);
+
+    Debug("equality") << d_name << "::eq::backtrack(): edges" << std::endl;
+
+    for (int i = (int)d_equalityEdges.size() - 2, i_end = (int)(2*d_assertedEqualitiesCount); i >= i_end; i -= 2) {
+      EqualityEdge& edge1 = d_equalityEdges[i];
+      EqualityEdge& edge2 = d_equalityEdges[i | 1];
+      d_equalityGraph[edge2.getNodeId()] = edge1.getNext();
+      d_equalityGraph[edge1.getNodeId()] = edge2.getNext();
+    }
+
+    d_equalityEdges.resize(2 * d_assertedEqualitiesCount);
+  }
+
+  if (d_triggerTermSetUpdates.size() > d_triggerTermSetUpdatesSize) {
+    // Unset the individual triggers
+    for (int i = d_triggerTermSetUpdates.size() - 1, i_end = d_triggerTermSetUpdatesSize; i >= i_end; -- i) {
+      const TriggerSetUpdate& update = d_triggerTermSetUpdates[i];
+      d_nodeIndividualTrigger[update.classId] = update.oldValue;
+    }
+    d_triggerTermSetUpdates.resize(d_triggerTermSetUpdatesSize);
+  }
+
+  if (d_equalityTriggers.size() > d_equalityTriggersCount) {
+    // Unlink the triggers from the lists
+    for (int i = d_equalityTriggers.size() - 1, i_end = d_equalityTriggersCount; i >= i_end; -- i) {
+      const Trigger& trigger = d_equalityTriggers[i];
+      d_nodeTriggers[trigger.classId] = trigger.nextTrigger;
+    }
+    // Get rid of the triggers
+    d_equalityTriggers.resize(d_equalityTriggersCount);
+    d_equalityTriggersOriginal.resize(d_equalityTriggersCount);
+  }
+
+  if (d_applicationLookups.size() > d_applicationLookupsCount) {
+    for (int i = d_applicationLookups.size() - 1, i_end = (int) d_applicationLookupsCount; i >= i_end; -- i) {
+      d_applicationLookup.erase(d_applicationLookups[i]);
+    }
+    d_applicationLookups.resize(d_applicationLookupsCount);
+  }
+
+  if (d_subtermEvaluates.size() > d_subtermEvaluatesSize) {
+    for(int i = d_subtermEvaluates.size() - 1, i_end = (int)d_subtermEvaluatesSize; i >= i_end; --i) {
+      d_subtermsToEvaluate[d_subtermEvaluates[i]] ++;
+    }
+    d_subtermEvaluates.resize(d_subtermEvaluatesSize);
+  }
+
+  if (d_nodes.size() > d_nodesCount) {
+    // Go down the nodes, check the application nodes and remove them from use-lists
+    for(int i = d_nodes.size() - 1, i_end = (int)d_nodesCount; i >= i_end; -- i) {
+      // Remove from the node -> id map
+      Debug("equality") << d_name << "::eq::backtrack(): removing node " << d_nodes[i] << std::endl;
+      d_nodeIds.erase(d_nodes[i]);
+
+      const FunctionApplication& app = d_applications[i].original;
+      if (!app.isNull()) {
+        // Remove b from use-list
+        getEqualityNode(app.b).removeTopFromUseList(d_useListNodes);
+        // Remove a from use-list
+        getEqualityNode(app.a).removeTopFromUseList(d_useListNodes);
+      }
+    }
+
+    // Now get rid of the nodes and the rest
+    d_nodes.resize(d_nodesCount);
+    d_applications.resize(d_nodesCount);
+    d_nodeTriggers.resize(d_nodesCount);
+    d_nodeIndividualTrigger.resize(d_nodesCount);
+    d_isConstant.resize(d_nodesCount);
+    d_subtermsToEvaluate.resize(d_nodesCount);
+    d_isEquality.resize(d_nodesCount);
+    d_isInternal.resize(d_nodesCount);
+    d_equalityGraph.resize(d_nodesCount);
+    d_equalityNodes.resize(d_nodesCount);
+  }
+
+  if (d_deducedDisequalities.size() > d_deducedDisequalitiesSize) {
+    for(int i = d_deducedDisequalities.size() - 1, i_end = (int)d_deducedDisequalitiesSize; i >= i_end; -- i) {
+      EqualityPair pair = d_deducedDisequalities[i];
+      Assert(d_disequalityReasonsMap.find(pair) != d_disequalityReasonsMap.end());
+      // Remove from the map
+      d_disequalityReasonsMap.erase(pair);
+      std::swap(pair.first, pair.second);
+      d_disequalityReasonsMap.erase(pair);
+    }
+    d_deducedDisequalityReasons.resize(d_deducedDisequalityReasonsSize);
+    d_deducedDisequalities.resize(d_deducedDisequalitiesSize);
+  }
+
+}
+
+void EqualityEngine::addGraphEdge(EqualityNodeId t1, EqualityNodeId t2, unsigned type, TNode reason) {
+  Debug("equality") << d_name << "::eq::addGraphEdge(" << d_nodes[t1] << "," << d_nodes[t2] << "," << reason << ")" << std::endl;
+  EqualityEdgeId edge = d_equalityEdges.size();
+  d_equalityEdges.push_back(EqualityEdge(t2, d_equalityGraph[t1], type, reason));
+  d_equalityEdges.push_back(EqualityEdge(t1, d_equalityGraph[t2], type, reason));
+  d_equalityGraph[t1] = edge;
+  d_equalityGraph[t2] = edge | 1;
+
+  if (Debug.isOn("equality::internal")) {
+    debugPrintGraph();
+  }
+}
+
+std::string EqualityEngine::edgesToString(EqualityEdgeId edgeId) const {
+  std::stringstream out;
+  bool first = true;
+  if (edgeId == null_edge) {
+    out << "null";
+  } else {
+    while (edgeId != null_edge) {
+      const EqualityEdge& edge = d_equalityEdges[edgeId];
+      if (!first) out << ",";
+      out << d_nodes[edge.getNodeId()];
+      edgeId = edge.getNext();
+      first = false;
+    }
+  }
+  return out.str();
+}
+
+void EqualityEngine::explainEquality(TNode t1, TNode t2, bool polarity, std::vector<TNode>& equalities, EqProof * eqp) const {
+  Debug("equality") << d_name << "::eq::explainEquality(" << t1 << ", " << t2 << ", " << (polarity ? "true" : "false") << ")" << ", proof = " << (eqp ? "ON" : "OFF") << std::endl;
+
+  // The terms must be there already
+  Assert(hasTerm(t1) && hasTerm(t2));;
+
+  // Get the ids
+  EqualityNodeId t1Id = getNodeId(t1);
+  EqualityNodeId t2Id = getNodeId(t2);
+
+  if (polarity) {
+    // Get the explanation
+    getExplanation(t1Id, t2Id, equalities, eqp);
+  } else {
+    if (eqp) {
+      eqp->d_id = eq::MERGED_THROUGH_TRANS;
+      eqp->d_node = d_nodes[t1Id].eqNode(d_nodes[t2Id]).notNode();
+    }
+
+    // Get the reason for this disequality
+    EqualityPair pair(t1Id, t2Id);
+    Assert(d_disequalityReasonsMap.find(pair) != d_disequalityReasonsMap.end(), "Don't ask for stuff I didn't notify you about");
+    DisequalityReasonRef reasonRef = d_disequalityReasonsMap.find(pair)->second;
+
+    for (unsigned i = reasonRef.mergesStart; i < reasonRef.mergesEnd; ++ i) {
+
+      EqualityPair toExplain = d_deducedDisequalityReasons[i];
+      EqProof* eqpc = NULL;
+
+      // If we're constructing a (transitivity) proof, we don't need to include an explanation for x=x.
+      if (eqp && toExplain.first != toExplain.second) {
+        eqpc = new EqProof;
+      }
+
+      getExplanation(toExplain.first, toExplain.second, equalities, eqpc);
+
+      if (eqpc) {
+        Debug("pf::ee") << "Child proof is:" << std::endl;
+        eqpc->debug_print("pf::ee", 1);
+
+        if (eqpc->d_id == eq::MERGED_THROUGH_TRANS) {
+          std::vector<EqProof *> orderedChildren;
+          bool nullCongruenceFound = false;
+          for (unsigned i = 0; i < eqpc->d_children.size(); ++i) {
+            if (eqpc->d_children[i]->d_id==eq::MERGED_THROUGH_CONGRUENCE &&
+                eqpc->d_children[i]->d_node.isNull()) {
+              nullCongruenceFound = true;
+              Debug("pf::ee") << "Have congruence with empty d_node. Splitting..." << std::endl;
+              orderedChildren.insert(orderedChildren.begin(), eqpc->d_children[i]->d_children[0]);
+              orderedChildren.push_back(eqpc->d_children[i]->d_children[1]);
+            } else {
+              orderedChildren.push_back(eqpc->d_children[i]);
+            }
+          }
+
+          if (nullCongruenceFound) {
+            eqpc->d_children = orderedChildren;
+            Debug("pf::ee") << "Child proof's children have been reordered. It is now:" << std::endl;
+            eqpc->debug_print("pf::ee", 1);
+          }
+        }
+
+        eqp->d_children.push_back(eqpc);
+      }
+    }
+
+    if (eqp) {
+      if (eqp->d_children.size() == 0) {
+        // Corner case where this is actually a disequality between two constants
+        Debug("pf::ee") << "Encountered a constant disequality (not a transitivity proof): "
+                        << eqp->d_node << std::endl;
+        Assert(eqp->d_node[0][0].isConst());
+        Assert(eqp->d_node[0][1].isConst());
+        eqp->d_id = MERGED_THROUGH_CONSTANTS;
+      } else if (eqp->d_children.size() == 1) {
+        // The transitivity proof has just one child. Simplify.
+        EqProof* temp = eqp->d_children[0];
+        eqp->d_children.clear();
+        *eqp = *temp;
+        delete temp;
+      }
+
+      Debug("pf::ee") << "Disequality explanation final proof: " << std::endl;
+      eqp->debug_print("pf::ee", 1);
+    }
+  }
+}
+
+void EqualityEngine::explainPredicate(TNode p, bool polarity, std::vector<TNode>& assertions, EqProof * eqp) const {
+  Debug("equality") << d_name << "::eq::explainPredicate(" << p << ")" << std::endl;
+  // Must have the term
+  Assert(hasTerm(p));
+  // Get the explanation
+  getExplanation(getNodeId(p), polarity ? d_trueId : d_falseId, assertions, eqp);
+}
+
+void EqualityEngine::getExplanation(EqualityNodeId t1Id, EqualityNodeId t2Id, std::vector<TNode>& equalities, EqProof * eqp) const {
+
+  Debug("equality") << d_name << "::eq::getExplanation(" << d_nodes[t1Id] << "," << d_nodes[t2Id] << ")" << std::endl;
+
+  // We can only explain the nodes that got merged
+#ifdef CVC4_ASSERTIONS
+  bool canExplain = getEqualityNode(t1Id).getFind() == getEqualityNode(t2Id).getFind()
+                  || (d_done && isConstant(t1Id) && isConstant(t2Id));
+
+  if (!canExplain) {
+    Warning() << "Can't explain equality:" << std::endl;
+    Warning() << d_nodes[t1Id] << " with find " << d_nodes[getEqualityNode(t1Id).getFind()] << std::endl;
+    Warning() << d_nodes[t2Id] << " with find " << d_nodes[getEqualityNode(t2Id).getFind()] << std::endl;
+  }
+  Assert(canExplain);
+#endif
+
+  // If the nodes are the same, we're done
+  if (t1Id == t2Id){
+    if( eqp ) {
+      if ((d_nodes[t1Id].getKind() == kind::BUILTIN) && (d_nodes[t1Id].getConst<Kind>() == kind::SELECT)) {
+        std::vector<Node> no_children;
+        eqp->d_node = NodeManager::currentNM()->mkNode(kind::PARTIAL_SELECT_0, no_children);
+      } else {
+        eqp->d_node = ProofManager::currentPM()->mkOp(d_nodes[t1Id]);
+      }
+    }
+    return;
+  }
+
+
+  if (Debug.isOn("equality::internal")) {
+    debugPrintGraph();
+  }
+
+  // Queue for the BFS containing nodes
+  std::vector<BfsData> bfsQueue;
+
+  // Find a path from t1 to t2 in the graph (BFS)
+  bfsQueue.push_back(BfsData(t1Id, null_id, 0));
+  size_t currentIndex = 0;
+  while (true) {
+    // There should always be a path, and every node can be visited only once (tree)
+    Assert(currentIndex < bfsQueue.size());
+
+    // The next node to visit
+    BfsData current = bfsQueue[currentIndex];
+    EqualityNodeId currentNode = current.nodeId;
+
+    Debug("equality") << d_name << "::eq::getExplanation(): currentNode =  " << d_nodes[currentNode] << std::endl;
+
+    // Go through the equality edges of this node
+    EqualityEdgeId currentEdge = d_equalityGraph[currentNode];
+    if (Debug.isOn("equality")) {
+      Debug("equality") << d_name << "::eq::getExplanation(): edgesId =  " << currentEdge << std::endl;
+      Debug("equality") << d_name << "::eq::getExplanation(): edges =  " << edgesToString(currentEdge) << std::endl;
+    }
+
+    while (currentEdge != null_edge) {
+      // Get the edge
+      const EqualityEdge& edge = d_equalityEdges[currentEdge];
+
+      // If not just the backwards edge
+      if ((currentEdge | 1u) != (current.edgeId | 1u)) {
+
+        Debug("equality") << d_name << "::eq::getExplanation(): currentEdge = (" << d_nodes[currentNode] << "," << d_nodes[edge.getNodeId()] << ")" << std::endl;
+
+        // Did we find the path
+        if (edge.getNodeId() == t2Id) {
+
+          Debug("equality") << d_name << "::eq::getExplanation(): path found: " << std::endl;
+
+          std::vector<EqProof *> eqp_trans;
+
+          // Reconstruct the path
+          do {
+            // The current node
+            currentNode = bfsQueue[currentIndex].nodeId;
+            EqualityNodeId edgeNode = d_equalityEdges[currentEdge].getNodeId();
+            unsigned reasonType = d_equalityEdges[currentEdge].getReasonType();
+            Node reason = d_equalityEdges[currentEdge].getReason();
+
+            Debug("equality") << d_name << "::eq::getExplanation(): currentEdge = " << currentEdge << ", currentNode = " << currentNode << std::endl;
+            Debug("equality") << d_name << "                     targetNode = " << d_nodes[edgeNode] << std::endl;
+            Debug("equality") << d_name << "                     in currentEdge = (" << d_nodes[currentNode] << "," << d_nodes[edge.getNodeId()] << ")" << std::endl;
+            Debug("equality") << d_name << "                     reason type = " << reasonType << std::endl;
+
+            EqProof* eqpc = NULL;
+            // Make child proof if a proof is being constructed
+            if (eqp) {
+              eqpc = new EqProof;
+              eqpc->d_id = reasonType;
+            }
+
+            // Add the actual equality to the vector
+            switch (reasonType) {
+            case MERGED_THROUGH_CONGRUENCE: {
+              // f(x1, x2) == f(y1, y2) because x1 = y1 and x2 = y2
+              Debug("equality") << d_name << "::eq::getExplanation(): due to congruence, going deeper" << std::endl;
+              const FunctionApplication& f1 = d_applications[currentNode].original;
+              const FunctionApplication& f2 = d_applications[edgeNode].original;
+
+              Debug("equality") << push;
+              Debug("equality") << "Explaining left hand side equalities" << std::endl;
+              EqProof * eqpc1 = eqpc ? new EqProof : NULL;
+              getExplanation(f1.a, f2.a, equalities, eqpc1);
+              Debug("equality") << "Explaining right hand side equalities" << std::endl;
+              EqProof * eqpc2 = eqpc ? new EqProof : NULL;
+              getExplanation(f1.b, f2.b, equalities, eqpc2);
+              if( eqpc ){
+                eqpc->d_children.push_back( eqpc1 );
+                eqpc->d_children.push_back( eqpc2 );
+                if( d_nodes[currentNode].getKind()==kind::EQUAL ){
+                  //leave node null for now
+                  eqpc->d_node = Node::null();
+                } else {
+                  if(d_nodes[f1.a].getKind() == kind::APPLY_UF ||
+                     d_nodes[f1.a].getKind() == kind::SELECT ||
+                     d_nodes[f1.a].getKind() == kind::STORE) {
+                    eqpc->d_node = d_nodes[f1.a];
+                  } else {
+                    if (d_nodes[f1.a].getKind() == kind::BUILTIN && d_nodes[f1.a].getConst<Kind>() == kind::SELECT) {
+                      eqpc->d_node = NodeManager::currentNM()->mkNode(kind::PARTIAL_SELECT_1, d_nodes[f1.b]);
+                      // The first child is a PARTIAL_SELECT_0.
+                      // Give it a child so that we know what kind of (read) it is, when we dump to LFSC.
+                      Assert(eqpc->d_children[0]->d_node.getKind() == kind::PARTIAL_SELECT_0);
+                      Assert(eqpc->d_children[0]->d_children.size() == 0);
+
+                      eqpc->d_children[0]->d_node = NodeManager::currentNM()->mkNode(kind::PARTIAL_SELECT_0,
+                                                                                     d_nodes[f1.b]);
+                    } else {
+                      eqpc->d_node = NodeManager::currentNM()->mkNode(kind::PARTIAL_APPLY_UF,
+                                                                      ProofManager::currentPM()->mkOp(d_nodes[f1.a]),
+                                                                      d_nodes[f1.b]);
+                    }
+                  }
+                }
+              }
+              Debug("equality") << pop;
+              break;
+            }
+
+            case MERGED_THROUGH_REFLEXIVITY: {
+              // x1 == x1
+              Debug("equality") << d_name << "::eq::getExplanation(): due to reflexivity, going deeper" << std::endl;
+              EqualityNodeId eqId = currentNode == d_trueId ? edgeNode : currentNode;
+              const FunctionApplication& eq = d_applications[eqId].original;
+              Assert(eq.isEquality(), "Must be an equality");
+
+              // Explain why a = b constant
+              Debug("equality") << push;
+              EqProof * eqpc1 = eqpc ? new EqProof : NULL;
+              getExplanation(eq.a, eq.b, equalities, eqpc1);
+              if( eqpc ){
+                eqpc->d_children.push_back( eqpc1 );
+              }
+              Debug("equality") << pop;
+
+              break;
+            }
+
+            case MERGED_THROUGH_CONSTANTS: {
+              // f(c1, ..., cn) = c semantically, we can just ignore it
+              Debug("equality") << d_name << "::eq::getExplanation(): due to constants, explain the constants" << std::endl;
+              Debug("equality") << push;
+
+              // Get the node we interpreted
+              TNode interpreted = d_nodes[currentNode];
+              if (interpreted.isConst()) {
+                interpreted = d_nodes[edgeNode];
+              }
+
+              // Explain why a is a constant by explaining each argument
+              for (unsigned i = 0; i < interpreted.getNumChildren(); ++ i) {
+                EqualityNodeId childId = getNodeId(interpreted[i]);
+                Assert(isConstant(childId));
+                EqProof * eqpcc = eqpc ? new EqProof : NULL;
+                getExplanation(childId, getEqualityNode(childId).getFind(), equalities, eqpcc);
+                if( eqpc ) {
+                  eqpc->d_children.push_back( eqpcc );
+
+                  Debug("pf::ee") << "MERGED_THROUGH_CONSTANTS. Dumping the child proof" << std::endl;
+                  eqpc->debug_print("pf::ee", 1);
+                }
+              }
+
+              Debug("equality") << pop;
+              break;
+            }
+
+            default: {
+              // Construct the equality
+              Debug("equality") << d_name << "::eq::getExplanation(): adding: "
+                                << reason << std::endl;
+              Debug("equality") << d_name << "::eq::getExplanation(): reason type = " << reasonType << std::endl;
+              Node a = d_nodes[currentNode];
+              Node b = d_nodes[d_equalityEdges[currentEdge].getNodeId()];
+
+              if (eqpc) {
+                //apply proof reconstruction processing (when eqpc is non-null)
+                if (d_pathReconstructionTriggers.find(reasonType) != d_pathReconstructionTriggers.end()) {
+                  d_pathReconstructionTriggers.find(reasonType)->second->notify(reasonType, reason, a, b,
+                                                                                equalities, eqpc);
+                }
+                if (reasonType == MERGED_THROUGH_EQUALITY) {
+                  eqpc->d_node = reason;
+                } else {
+                  // The LFSC translator prefers (not (= a b)) over (= (= a b) false)
+
+                  if (a == NodeManager::currentNM()->mkConst(false)) {
+                    eqpc->d_node = b.notNode();
+                  } else if (b == NodeManager::currentNM()->mkConst(false)) {
+                    eqpc->d_node = a.notNode();
+                  } else {
+                    eqpc->d_node = b.eqNode(a);
+                  }
+                }
+                eqpc->d_id = reasonType;
+              }
+
+              equalities.push_back(reason);
+              break;
+            }
+            }
+
+            // Go to the previous
+            currentEdge = bfsQueue[currentIndex].edgeId;
+            currentIndex = bfsQueue[currentIndex].previousIndex;
+
+            //---from Morgan---
+            if (eqpc != NULL && eqpc->d_id == MERGED_THROUGH_REFLEXIVITY) {
+              if(eqpc->d_node.isNull()) {
+                Assert(eqpc->d_children.size() == 1);
+                EqProof *p = eqpc;
+                eqpc = p->d_children[0];
+                delete p;
+              } else {
+                Assert(eqpc->d_children.empty());
+              }
+            }
+            //---end from Morgan---
+
+            eqp_trans.push_back(eqpc);
+          } while (currentEdge != null_id);
+
+          if (eqp) {
+            if(eqp_trans.size() == 1) {
+              *eqp = *eqp_trans[0];
+              delete eqp_trans[0];
+            } else {
+              eqp->d_id = MERGED_THROUGH_TRANS;
+              eqp->d_children.insert( eqp->d_children.end(), eqp_trans.begin(), eqp_trans.end() );
+              eqp->d_node = NodeManager::currentNM()->mkNode(kind::EQUAL, d_nodes[t1Id], d_nodes[t2Id]);
+            }
+
+            eqp->debug_print("pf::ee", 1);
+          }
+
+          // Done
+          return;
+        }
+
+        // Push to the visitation queue if it's not the backward edge
+        bfsQueue.push_back(BfsData(edge.getNodeId(), currentEdge, currentIndex));
+      }
+
+      // Go to the next edge
+      currentEdge = edge.getNext();
+    }
+
+    // Go to the next node to visit
+    ++ currentIndex;
+  }
+}
+
+void EqualityEngine::addTriggerEquality(TNode eq) {
+  Assert(eq.getKind() == kind::EQUAL);
+
+  if (d_done) {
+    return;
+  }
+
+  // Add the terms
+  addTermInternal(eq[0]);
+  addTermInternal(eq[1]);
+
+  bool skipTrigger = false;
+
+  // If they are equal or disequal already, no need for the trigger
+  if (areEqual(eq[0], eq[1])) {
+    d_notify.eqNotifyTriggerEquality(eq, true);
+    skipTrigger = true;
+  }
+  if (areDisequal(eq[0], eq[1], true)) {
+    d_notify.eqNotifyTriggerEquality(eq, false);
+    skipTrigger = true;
+  }
+
+  if (skipTrigger) {
+    return;
+  }
+
+  // Add the equality
+  addTermInternal(eq);
+
+  // Positive trigger
+  addTriggerEqualityInternal(eq[0], eq[1], eq, true);
+  // Negative trigger
+  addTriggerEqualityInternal(eq, d_false, eq, false);
+}
+
+void EqualityEngine::addTriggerPredicate(TNode predicate) {
+  Assert(predicate.getKind() != kind::NOT && predicate.getKind() != kind::EQUAL);
+  Assert(d_congruenceKinds.tst(predicate.getKind()), "No point in adding non-congruence predicates");
+
+  if (d_done) {
+    return;
+  }
+
+  // Add the term
+  addTermInternal(predicate);
+
+  bool skipTrigger = false;
+
+  // If it's know already, no need for the trigger
+  if (areEqual(predicate, d_true)) {
+    d_notify.eqNotifyTriggerPredicate(predicate, true);
+    skipTrigger = true;
+  }
+  if (areEqual(predicate, d_false)) {
+    d_notify.eqNotifyTriggerPredicate(predicate, false);
+    skipTrigger = true;
+  }
+
+  if (skipTrigger) {
+    return;
+  }
+
+  // Positive trigger
+  addTriggerEqualityInternal(predicate, d_true, predicate, true);
+  // Negative trigger
+  addTriggerEqualityInternal(predicate, d_false, predicate, false);
+}
+
+void EqualityEngine::addTriggerEqualityInternal(TNode t1, TNode t2, TNode trigger, bool polarity) {
+
+  Debug("equality") << d_name << "::eq::addTrigger(" << t1 << ", " << t2 << ", " << trigger << ")" << std::endl;
+
+  Assert(hasTerm(t1));
+  Assert(hasTerm(t2));
+
+  if (d_done) {
+    return;
+  }
+
+  // Get the information about t1
+  EqualityNodeId t1Id = getNodeId(t1);
+  EqualityNodeId t1classId = getEqualityNode(t1Id).getFind();
+  // We will attach it to the class representative, since then we know how to backtrack it
+  TriggerId t1TriggerId = d_nodeTriggers[t1classId];
+
+  // Get the information about t2
+  EqualityNodeId t2Id = getNodeId(t2);
+  EqualityNodeId t2classId = getEqualityNode(t2Id).getFind();
+  // We will attach it to the class representative, since then we know how to backtrack it
+  TriggerId t2TriggerId = d_nodeTriggers[t2classId];
+
+  Debug("equality") << d_name << "::eq::addTrigger(" << trigger << "): " << t1Id << " (" << t1classId << ") = " << t2Id << " (" << t2classId << ")" << std::endl;
+
+  // Create the triggers
+  TriggerId t1NewTriggerId = d_equalityTriggers.size();
+  d_equalityTriggers.push_back(Trigger(t1classId, t1TriggerId));
+  d_equalityTriggersOriginal.push_back(TriggerInfo(trigger, polarity));
+  TriggerId t2NewTriggerId = d_equalityTriggers.size();
+  d_equalityTriggers.push_back(Trigger(t2classId, t2TriggerId));
+  d_equalityTriggersOriginal.push_back(TriggerInfo(trigger, polarity));
+
+  // Update the counters
+  d_equalityTriggersCount = d_equalityTriggers.size();
+  Assert(d_equalityTriggers.size() == d_equalityTriggersOriginal.size());
+  Assert(d_equalityTriggers.size() % 2 == 0);
+
+  // Add the trigger to the trigger graph
+  d_nodeTriggers[t1classId] = t1NewTriggerId;
+  d_nodeTriggers[t2classId] = t2NewTriggerId;
+
+  if (Debug.isOn("equality::internal")) {
+    debugPrintGraph();
+  }
+
+  Debug("equality") << d_name << "::eq::addTrigger(" << t1 << "," << t2 << ") => (" << t1NewTriggerId << ", " << t2NewTriggerId << ")" << std::endl;
+}
+
+Node EqualityEngine::evaluateTerm(TNode node) {
+  Debug("equality::evaluation") << d_name << "::eq::evaluateTerm(" << node << ")" << std::endl;
+  NodeBuilder<> builder;
+  builder << node.getKind();
+  if (node.getMetaKind() == kind::metakind::PARAMETERIZED) {
+    builder << node.getOperator();
+  }
+  for (unsigned i = 0; i < node.getNumChildren(); ++ i) {
+    TNode child = node[i];
+    TNode childRep = getRepresentative(child);
+    Debug("equality::evaluation") << d_name << "::eq::evaluateTerm: " << child << " -> " << childRep << std::endl;
+    Assert(childRep.isConst());
+    builder << childRep;
+  }
+  Node newNode = builder;
+  return Rewriter::rewrite(newNode);
+}
+
+void EqualityEngine::processEvaluationQueue() {
+
+  Debug("equality::evaluation") << d_name << "::eq::processEvaluationQueue(): start" << std::endl;
+
+  while (!d_evaluationQueue.empty()) {
+    // Get the node
+    EqualityNodeId id = d_evaluationQueue.front();
+    d_evaluationQueue.pop();
+
+    // Replace the children with their representatives (must be constants)
+    Node nodeEvaluated = evaluateTerm(d_nodes[id]);
+    Debug("equality::evaluation") << d_name << "::eq::processEvaluationQueue(): " << d_nodes[id] << " evaluates to " << nodeEvaluated << std::endl;
+    Assert(nodeEvaluated.isConst());
+    addTermInternal(nodeEvaluated);
+    EqualityNodeId nodeEvaluatedId = getNodeId(nodeEvaluated);
+
+    // Enqueue the semantic equality
+    enqueue(MergeCandidate(id, nodeEvaluatedId, MERGED_THROUGH_CONSTANTS, TNode::null()));
+  }
+
+  Debug("equality::evaluation") << d_name << "::eq::processEvaluationQueue(): done" << std::endl;
+}
+
+void EqualityEngine::propagate() {
+
+  if (d_inPropagate) {
+    // We're already in propagate, go back
+    return;
+  }
+
+  // Make sure we don't get in again
+  ScopedBool inPropagate(d_inPropagate, true);
+
+  Debug("equality") << d_name << "::eq::propagate()" << std::endl;
+
+  while (!d_propagationQueue.empty() || !d_evaluationQueue.empty()) {
+
+    if (d_done) {
+      // If we're done, just empty the queue
+      while (!d_propagationQueue.empty()) d_propagationQueue.pop_front();
+      while (!d_evaluationQueue.empty()) d_evaluationQueue.pop();
+      continue;
+    }
+
+    // Process any evaluation requests
+    if (!d_evaluationQueue.empty()) {
+      processEvaluationQueue();
+      continue;
+    }
+
+    // The current merge candidate
+    const MergeCandidate current = d_propagationQueue.front();
+    d_propagationQueue.pop_front();
+
+    // Get the representatives
+    EqualityNodeId t1classId = getEqualityNode(current.t1Id).getFind();
+    EqualityNodeId t2classId = getEqualityNode(current.t2Id).getFind();
+
+    // If already the same, we're done
+    if (t1classId == t2classId) {
+      continue;
+    }
+
+    Debug("equality::internal") << d_name << "::eq::propagate(): t1: " << (d_isInternal[t1classId] ? "internal" : "proper") << std::endl;
+    Debug("equality::internal") << d_name << "::eq::propagate(): t2: " << (d_isInternal[t2classId] ? "internal" : "proper") << std::endl;
+
+    // Get the nodes of the representatives
+    EqualityNode& node1 = getEqualityNode(t1classId);
+    EqualityNode& node2 = getEqualityNode(t2classId);
+
+    Assert(node1.getFind() == t1classId);
+    Assert(node2.getFind() == t2classId);
+
+    // Add the actual equality to the equality graph
+    addGraphEdge(current.t1Id, current.t2Id, current.type, current.reason);
+
+    // If constants are being merged we're done
+    if (d_isConstant[t1classId] && d_isConstant[t2classId]) {
+      // When merging constants we are inconsistent, hence done
+      d_done = true;
+      // But in order to keep invariants (edges = 2*equalities) we put an equalities in
+      // Note that we can explain this merge as we have a graph edge
+      d_assertedEqualities.push_back(Equality(null_id, null_id));
+      d_assertedEqualitiesCount = d_assertedEqualitiesCount + 1;
+      // Notify
+      if (d_performNotify) {
+        d_notify.eqNotifyConstantTermMerge(d_nodes[t1classId], d_nodes[t2classId]);
+      }
+      // Empty the queue and exit
+      continue;
+    }
+
+    // Vector to collect the triggered events
+    std::vector<TriggerId> triggers;
+
+    // Figure out the merge preference
+    EqualityNodeId mergeInto = t1classId;
+    if (d_isInternal[t2classId] != d_isInternal[t1classId]) {
+      // We always keep non-internal nodes as representatives: if any node in
+      // the class is non-internal, then the representative will be non-internal
+      if (d_isInternal[t1classId]) {
+        mergeInto = t2classId;
+      } else {
+        mergeInto = t1classId;
+      }
+    } else if (d_isConstant[t2classId] != d_isConstant[t1classId]) {
+      // We always keep constants as representatives: if any (at most one) node
+      // in the class in a constant, then the representative will be a constant
+      if (d_isConstant[t2classId]) {
+        mergeInto = t2classId;
+      } else {
+        mergeInto = t1classId;
+      }
+    } else if (node2.getSize() > node1.getSize()) {
+      // We always merge into the bigger class to reduce the amount of traversing
+      // we need to do
+      mergeInto = t2classId;
+    }
+
+    if (mergeInto == t2classId) {
+      Debug("equality") << d_name << "::eq::propagate(): merging " << d_nodes[current.t1Id]<< " into " << d_nodes[current.t2Id] << std::endl;
+      d_assertedEqualities.push_back(Equality(t2classId, t1classId));
+      d_assertedEqualitiesCount = d_assertedEqualitiesCount + 1;
+      if (!merge(node2, node1, triggers)) {
+        d_done = true;
+      }
+    } else {
+      Debug("equality") << d_name << "::eq::propagate(): merging " << d_nodes[current.t2Id] << " into " << d_nodes[current.t1Id] << std::endl;
+      d_assertedEqualities.push_back(Equality(t1classId, t2classId));
+      d_assertedEqualitiesCount = d_assertedEqualitiesCount + 1;
+    if (!merge(node1, node2, triggers)) {
+        d_done = true;
+      }
+    }
+
+    // If not merging internal nodes, notify the master
+    if (d_masterEqualityEngine && !d_isInternal[t1classId] && !d_isInternal[t2classId]) {
+      d_masterEqualityEngine->assertEqualityInternal(d_nodes[t1classId], d_nodes[t2classId], TNode::null());
+      d_masterEqualityEngine->propagate();
+    }
+
+    // Notify the triggers
+    if (d_performNotify && !d_done) {
+      for (size_t trigger_i = 0, trigger_end = triggers.size(); trigger_i < trigger_end && !d_done; ++ trigger_i) {
+        const TriggerInfo& triggerInfo = d_equalityTriggersOriginal[triggers[trigger_i]];
+        if (triggerInfo.trigger.getKind() == kind::EQUAL) {
+          // Special treatment for disequalities
+          if (!triggerInfo.polarity) {
+            // Store that we are propagating a diseauality
+            TNode equality = triggerInfo.trigger;
+            EqualityNodeId original = getNodeId(equality);
+            TNode lhs = equality[0];
+            TNode rhs = equality[1];
+            EqualityNodeId lhsId = getNodeId(lhs);
+            EqualityNodeId rhsId = getNodeId(rhs);
+            // We use the THEORY_LAST as a marker for "marked as propagated, reasons stored".
+            // This tag is added to an internal theories set that is only inserted in, so this is
+            // safe. Had we iterated over, or done other set operations this might be dangerous.
+            if (!hasPropagatedDisequality(THEORY_LAST, lhsId, rhsId)) {
+              if (!hasPropagatedDisequality(lhsId, rhsId)) {
+                d_deducedDisequalityReasons.push_back(EqualityPair(original, d_falseId));
+              }
+              storePropagatedDisequality(THEORY_LAST, lhsId, rhsId);
+              if (!d_notify.eqNotifyTriggerEquality(triggerInfo.trigger, triggerInfo.polarity)) {
+                d_done = true;
+              }
+            }
+          } else {
+            // Equalities are simple
+            if (!d_notify.eqNotifyTriggerEquality(triggerInfo.trigger, triggerInfo.polarity)) {
+              d_done = true;
+            }
+          }
+        } else {
+          if (!d_notify.eqNotifyTriggerPredicate(triggerInfo.trigger, triggerInfo.polarity)) {
+            d_done = true;
+          }
+        }
+      }
+    }
+  }
+}
+
+void EqualityEngine::debugPrintGraph() const {
+  Debug("equality::graph") << std::endl << "Dumping graph" << std::endl;
+  for (EqualityNodeId nodeId = 0; nodeId < d_nodes.size(); ++ nodeId) {
+
+    Debug("equality::graph") << d_nodes[nodeId] << " " << nodeId << "(" << getEqualityNode(nodeId).getFind() << "):";
+
+    EqualityEdgeId edgeId = d_equalityGraph[nodeId];
+    while (edgeId != null_edge) {
+      const EqualityEdge& edge = d_equalityEdges[edgeId];
+      Debug("equality::graph") << " [" << edge.getNodeId() << "] " << d_nodes[edge.getNodeId()] << ":" << edge.getReason();
+      edgeId = edge.getNext();
+    }
+
+    Debug("equality::graph") << std::endl;
+  }
+  Debug("equality::graph") << std::endl;
+}
+
+bool EqualityEngine::areEqual(TNode t1, TNode t2) const {
+  Debug("equality") << d_name << "::eq::areEqual(" << t1 << "," << t2 << ")";
+
+  Assert(hasTerm(t1));
+  Assert(hasTerm(t2));
+
+  bool result = getEqualityNode(t1).getFind() == getEqualityNode(t2).getFind();
+  Debug("equality") << (result ? "\t(YES)" : "\t(NO)") << std::endl;
+  return result;
+}
+
+bool EqualityEngine::areDisequal(TNode t1, TNode t2, bool ensureProof) const
+{
+  Debug("equality") << d_name << "::eq::areDisequal(" << t1 << "," << t2 << ")";
+
+  // Add the terms
+  Assert(hasTerm(t1));
+  Assert(hasTerm(t2));
+
+  // Get ids
+  EqualityNodeId t1Id = getNodeId(t1);
+  EqualityNodeId t2Id = getNodeId(t2);
+
+  // If we propagated this disequality we're true
+  if (hasPropagatedDisequality(t1Id, t2Id)) {
+    Debug("equality") << "\t(YES)" << std::endl;
+    return true;
+  }
+
+  // Get equivalence classes
+  EqualityNodeId t1ClassId = getEqualityNode(t1Id).getFind();
+  EqualityNodeId t2ClassId = getEqualityNode(t2Id).getFind();
+
+  // We are semantically const, for remembering stuff
+  EqualityEngine* nonConst = const_cast<EqualityEngine*>(this);
+
+  // Check for constants
+  if (d_isConstant[t1ClassId] && d_isConstant[t2ClassId] && t1ClassId != t2ClassId) {
+    if (ensureProof) {
+      nonConst->d_deducedDisequalityReasons.push_back(EqualityPair(t1Id, t1ClassId));
+      nonConst->d_deducedDisequalityReasons.push_back(EqualityPair(t2Id, t2ClassId));
+      nonConst->storePropagatedDisequality(THEORY_LAST, t1Id, t2Id);
+    }
+    Debug("equality") << "\t(YES)" << std::endl;
+    return true;
+  }
+
+  // Create the equality
+  FunctionApplication eqNormalized(APP_EQUALITY, t1ClassId, t2ClassId);
+  ApplicationIdsMap::const_iterator find = d_applicationLookup.find(eqNormalized);
+  if (find != d_applicationLookup.end()) {
+    if (getEqualityNode(find->second).getFind() == getEqualityNode(d_falseId).getFind()) {
+      if (ensureProof) {
+        const FunctionApplication original = d_applications[find->second].original;
+        nonConst->d_deducedDisequalityReasons.push_back(EqualityPair(t1Id, original.a));
+        nonConst->d_deducedDisequalityReasons.push_back(EqualityPair(find->second, d_falseId));
+        nonConst->d_deducedDisequalityReasons.push_back(EqualityPair(t2Id, original.b));
+        nonConst->storePropagatedDisequality(THEORY_LAST, t1Id, t2Id);
+      }
+      Debug("equality") << "\t(YES)" << std::endl;
+      return true;
+    }
+  }
+
+  // Check the symmetric disequality
+  std::swap(eqNormalized.a, eqNormalized.b);
+  find = d_applicationLookup.find(eqNormalized);
+  if (find != d_applicationLookup.end()) {
+    if (getEqualityNode(find->second).getFind() == getEqualityNode(d_falseId).getFind()) {
+      if (ensureProof) {
+        const FunctionApplication original = d_applications[find->second].original;
+        nonConst->d_deducedDisequalityReasons.push_back(EqualityPair(t2Id, original.a));
+        nonConst->d_deducedDisequalityReasons.push_back(EqualityPair(find->second, d_falseId));
+        nonConst->d_deducedDisequalityReasons.push_back(EqualityPair(t1Id, original.b));
+        nonConst->storePropagatedDisequality(THEORY_LAST, t1Id, t2Id);
+      }
+      Debug("equality") << "\t(YES)" << std::endl;
+      return true;
+    }
+  }
+
+  // Couldn't deduce dis-equalityReturn whether the terms are disequal
+  Debug("equality") << "\t(NO)" << std::endl;
+  return false;
+}
+
+size_t EqualityEngine::getSize(TNode t) {
+  // Add the term
+  addTermInternal(t);
+  return getEqualityNode(getEqualityNode(t).getFind()).getSize();
+}
+
+
+void EqualityEngine::addPathReconstructionTrigger(unsigned trigger, const PathReconstructionNotify* notify) {
+  // Currently we can only inform one callback per trigger
+  Assert(d_pathReconstructionTriggers.find(trigger) == d_pathReconstructionTriggers.end());
+  d_pathReconstructionTriggers[trigger] = notify;
+}
+
+unsigned EqualityEngine::getFreshMergeReasonType() {
+  return d_freshMergeReasonType++;
+}
+
+void EqualityEngine::addTriggerTerm(TNode t, TheoryId tag)
+{
+  Debug("equality::trigger") << d_name << "::eq::addTriggerTerm(" << t << ", " << tag << ")" << std::endl;
+
+  Assert(tag != THEORY_LAST);
+
+  if (d_done) {
+    return;
+  }
+
+  // Add the term if it's not already there
+  addTermInternal(t);
+
+  // Get the node id
+  EqualityNodeId eqNodeId = getNodeId(t);
+  EqualityNode& eqNode = getEqualityNode(eqNodeId);
+  EqualityNodeId classId = eqNode.getFind();
+
+  // Possibly existing set of triggers
+  TriggerTermSetRef triggerSetRef = d_nodeIndividualTrigger[classId];
+  if (triggerSetRef != +null_set_id && getTriggerTermSet(triggerSetRef).hasTrigger(tag)) {
+    // If the term already is in the equivalence class that a tagged representative, just notify
+    if (d_performNotify) {
+      EqualityNodeId triggerId = getTriggerTermSet(triggerSetRef).getTrigger(tag);
+      Debug("equality::trigger") << d_name << "::eq::addTriggerTerm(" << t << ", " << tag << "): already have this trigger in class with " << d_nodes[triggerId] << std::endl;
+      if (eqNodeId != triggerId && !d_notify.eqNotifyTriggerTermEquality(tag, t, d_nodes[triggerId], true)) {
+        d_done = true;
+      }
+    }
+  } else {
+
+    // Check for disequalities by going through the equivalence class looking for equalities in the
+    // uselists that have been asserted to false. All the representatives appearing on the other
+    // side of such disequalities, that have the tag on, are put in a set.
+    TaggedEqualitiesSet disequalitiesToNotify;
+    Theory::Set tags = Theory::setInsert(tag);
+    getDisequalities(!d_isConstant[classId], classId, tags, disequalitiesToNotify);
+
+    // Trigger data
+    Theory::Set newSetTags;
+    EqualityNodeId newSetTriggers[THEORY_LAST];
+    unsigned newSetTriggersSize;
+
+    // Setup the data for the new set
+    if (triggerSetRef != null_set_id) {
+      // Get the existing set
+      TriggerTermSet& triggerSet = getTriggerTermSet(triggerSetRef);
+      // Initialize the new set for copy/insert
+      newSetTags = Theory::setInsert(tag, triggerSet.tags);
+      newSetTriggersSize = 0;
+      // Copy into to new one, and insert the new tag/id
+      unsigned i = 0;
+      Theory::Set tags = newSetTags;
+      TheoryId current;
+      while ((current = Theory::setPop(tags)) != THEORY_LAST) {
+        // Remove from the tags
+        tags = Theory::setRemove(current, tags);
+        // Insert the id into the triggers
+        newSetTriggers[newSetTriggersSize++] =
+          current == tag ? eqNodeId : triggerSet.triggers[i++];
+      }
+    } else {
+      // Setup a singleton
+      newSetTags = Theory::setInsert(tag);
+      newSetTriggers[0] = eqNodeId;
+      newSetTriggersSize = 1;
+    }
+
+    // Add it to the list for backtracking
+    d_triggerTermSetUpdates.push_back(TriggerSetUpdate(classId, triggerSetRef));
+    d_triggerTermSetUpdatesSize = d_triggerTermSetUpdatesSize + 1;
+    // Mark the the new set as a trigger
+    d_nodeIndividualTrigger[classId] = triggerSetRef = newTriggerTermSet(newSetTags, newSetTriggers, newSetTriggersSize);
+
+    // Propagate trigger term disequalities we remembered
+    Debug("equality::trigger") << d_name << "::eq::addTriggerTerm(" << t << ", " << tag << "): propagating " << disequalitiesToNotify.size() << " disequalities " << std::endl;
+    propagateTriggerTermDisequalities(tags, triggerSetRef, disequalitiesToNotify);
+  }
+}
+
+bool EqualityEngine::isTriggerTerm(TNode t, TheoryId tag) const {
+  if (!hasTerm(t)) return false;
+  EqualityNodeId classId = getEqualityNode(t).getFind();
+  TriggerTermSetRef triggerSetRef = d_nodeIndividualTrigger[classId];
+  return triggerSetRef != +null_set_id && getTriggerTermSet(triggerSetRef).hasTrigger(tag);
+}
+
+
+TNode EqualityEngine::getTriggerTermRepresentative(TNode t, TheoryId tag) const {
+  Assert(isTriggerTerm(t, tag));
+  EqualityNodeId classId = getEqualityNode(t).getFind();
+  const TriggerTermSet& triggerSet = getTriggerTermSet(d_nodeIndividualTrigger[classId]);
+  unsigned i = 0;
+  Theory::Set tags = triggerSet.tags;
+  while (Theory::setPop(tags) != tag) {
+    ++ i;
+  }
+  return d_nodes[triggerSet.triggers[i]];
+}
+
+void EqualityEngine::storeApplicationLookup(FunctionApplication& funNormalized, EqualityNodeId funId) {
+  Assert(d_applicationLookup.find(funNormalized) == d_applicationLookup.end());
+  d_applicationLookup[funNormalized] = funId;
+  d_applicationLookups.push_back(funNormalized);
+  d_applicationLookupsCount = d_applicationLookupsCount + 1;
+  Debug("equality::backtrack") << "d_applicationLookupsCount = " << d_applicationLookupsCount << std::endl;
+  Debug("equality::backtrack") << "d_applicationLookups.size() = " << d_applicationLookups.size() << std::endl;
+  Assert(d_applicationLookupsCount == d_applicationLookups.size());
+
+  // If an equality over constants we merge to false
+  if (funNormalized.isEquality()) {
+    if (funNormalized.a == funNormalized.b) {
+      enqueue(MergeCandidate(funId, d_trueId, MERGED_THROUGH_REFLEXIVITY, TNode::null()));
+    } else if (d_isConstant[funNormalized.a] && d_isConstant[funNormalized.b]) {
+      enqueue(MergeCandidate(funId, d_falseId, MERGED_THROUGH_CONSTANTS, TNode::null()));
+    }
+  }
+}
+
+void EqualityEngine::getUseListTerms(TNode t, std::set<TNode>& output) {
+  if (hasTerm(t)) {
+    // Get the equivalence class
+    EqualityNodeId classId = getEqualityNode(t).getFind();
+    // Go through the equivalence class and get where t is used in
+    EqualityNodeId currentId = classId;
+    do {
+      // Get the current node
+      EqualityNode& currentNode = getEqualityNode(currentId);
+      // Go through the use-list
+      UseListNodeId currentUseId = currentNode.getUseList();
+      while (currentUseId != null_uselist_id) {
+        // Get the node of the use list
+        UseListNode& useNode = d_useListNodes[currentUseId];
+        // Get the function application
+        EqualityNodeId funId = useNode.getApplicationId();
+        output.insert(d_nodes[funId]);
+        // Go to the next one in the use list
+        currentUseId = useNode.getNext();
+      }
+      // Move to the next node
+      currentId = currentNode.getNext();
+    } while (currentId != classId);
+  }
+}
+
+EqualityEngine::TriggerTermSetRef EqualityEngine::newTriggerTermSet(Theory::Set newSetTags, EqualityNodeId* newSetTriggers, unsigned newSetTriggersSize) {
+  // Size of the required set
+  size_t size = sizeof(TriggerTermSet) + newSetTriggersSize*sizeof(EqualityNodeId);
+  // Align the size
+  size = (size + 7) & ~((size_t)7);
+  // Reallocate if necessary
+  if (d_triggerDatabaseSize + size > d_triggerDatabaseAllocatedSize) {
+    d_triggerDatabaseAllocatedSize *= 2;
+    d_triggerDatabase = (char*) realloc(d_triggerDatabase, d_triggerDatabaseAllocatedSize);
+  }
+  // New reference
+  TriggerTermSetRef newTriggerSetRef = d_triggerDatabaseSize;
+  // Update the size
+  d_triggerDatabaseSize = d_triggerDatabaseSize + size;
+  // Copy the information
+  TriggerTermSet& newSet = getTriggerTermSet(newTriggerSetRef);
+  newSet.tags = newSetTags;
+  for (unsigned i = 0; i < newSetTriggersSize; ++i) {
+    newSet.triggers[i] = newSetTriggers[i];
+  }
+  // Return the new reference
+  return newTriggerSetRef;
+}
+
+bool EqualityEngine::hasPropagatedDisequality(EqualityNodeId lhsId, EqualityNodeId rhsId) const {
+  EqualityPair eq(lhsId, rhsId);
+  bool propagated = d_propagatedDisequalities.find(eq) != d_propagatedDisequalities.end();
+#ifdef CVC4_ASSERTIONS
+  bool stored = d_disequalityReasonsMap.find(eq) != d_disequalityReasonsMap.end();
+  Assert(propagated == stored, "These two should be in sync");
+#endif
+  Debug("equality::disequality") << d_name << "::eq::hasPropagatedDisequality(" << d_nodes[lhsId] << ", " << d_nodes[rhsId] << ") => " << (propagated ? "true" : "false") << std::endl;
+  return propagated;
+}
+
+bool EqualityEngine::hasPropagatedDisequality(TheoryId tag, EqualityNodeId lhsId, EqualityNodeId rhsId) const {
+
+  EqualityPair eq(lhsId, rhsId);
+
+  PropagatedDisequalitiesMap::const_iterator it = d_propagatedDisequalities.find(eq);
+  if (it == d_propagatedDisequalities.end()) {
+    Assert(d_disequalityReasonsMap.find(eq) == d_disequalityReasonsMap.end(), "Why do we have a proof if not propagated");
+    Debug("equality::disequality") << d_name << "::eq::hasPropagatedDisequality(" << tag << ", " << d_nodes[lhsId] << ", " << d_nodes[rhsId] << ") => false" << std::endl;
+    return false;
+  }
+  Assert(d_disequalityReasonsMap.find(eq) != d_disequalityReasonsMap.end(), "We propagated but there is no proof");
+  bool result = Theory::setContains(tag, (*it).second);
+  Debug("equality::disequality") << d_name << "::eq::hasPropagatedDisequality(" << tag << ", " << d_nodes[lhsId] << ", " << d_nodes[rhsId] << ") => " << (result ? "true" : "false") << std::endl;
+  return result;
+}
+
+
+void EqualityEngine::storePropagatedDisequality(TheoryId tag, EqualityNodeId lhsId, EqualityNodeId rhsId) {
+
+  Assert(!hasPropagatedDisequality(tag, lhsId, rhsId), "Check before you store it");
+  Assert(lhsId != rhsId, "Wow, wtf!");
+
+  Debug("equality::disequality") << d_name << "::eq::storePropagatedDisequality(" << tag << ", " << d_nodes[lhsId] << ", " << d_nodes[rhsId] << ")" << std::endl;
+
+  EqualityPair pair1(lhsId, rhsId);
+  EqualityPair pair2(rhsId, lhsId);
+
+  // Store the fact that we've propagated this already
+  Theory::Set notified = 0;
+  PropagatedDisequalitiesMap::const_iterator find = d_propagatedDisequalities.find(pair1);
+  if (find == d_propagatedDisequalities.end()) {
+    notified = Theory::setInsert(tag);
+  } else {
+    notified = Theory::setInsert(tag, (*find).second);
+  }
+  d_propagatedDisequalities[pair1] = notified;
+  d_propagatedDisequalities[pair2] = notified;
+
+  // Store the proof if provided
+  if (d_deducedDisequalityReasons.size() > d_deducedDisequalityReasonsSize) {
+    Debug("equality::disequality") << d_name << "::eq::storePropagatedDisequality(" << tag << ", " << d_nodes[lhsId] << ", " << d_nodes[rhsId] << "): storing proof" << std::endl;
+    Assert(d_disequalityReasonsMap.find(pair1) == d_disequalityReasonsMap.end(), "There can't be a proof if you're adding a new one");
+    DisequalityReasonRef ref(d_deducedDisequalityReasonsSize, d_deducedDisequalityReasons.size());
+#ifdef CVC4_ASSERTIONS
+    // Check that the reasons are valid
+    for (unsigned i = ref.mergesStart; i < ref.mergesEnd; ++ i) {
+      Assert(getEqualityNode(d_deducedDisequalityReasons[i].first).getFind() == getEqualityNode(d_deducedDisequalityReasons[i].second).getFind());
+    }
+#endif
+    if (Debug.isOn("equality::disequality")) {
+      for (unsigned i = ref.mergesStart; i < ref.mergesEnd; ++ i) {
+        TNode lhs = d_nodes[d_deducedDisequalityReasons[i].first];
+        TNode rhs = d_nodes[d_deducedDisequalityReasons[i].second];
+        Debug("equality::disequality") << d_name << "::eq::storePropagatedDisequality(): because " << lhs << " == " << rhs << std::endl;
+      }
+
+    }
+
+    // Store for backtracking
+    d_deducedDisequalities.push_back(pair1);
+    d_deducedDisequalitiesSize = d_deducedDisequalities.size();
+    d_deducedDisequalityReasonsSize = d_deducedDisequalityReasons.size();
+    // Store the proof reference
+    d_disequalityReasonsMap[pair1] = ref;
+    d_disequalityReasonsMap[pair2] = ref;
+  } else {
+    Assert(d_disequalityReasonsMap.find(pair1) != d_disequalityReasonsMap.end(), "You must provide a proof initially");
+  }
+}
+
+void EqualityEngine::getDisequalities(bool allowConstants, EqualityNodeId classId, Theory::Set inputTags, TaggedEqualitiesSet& out) {
+  // Must be empty on input
+  Assert(out.size() == 0);
+  // The class we are looking for, shouldn't have any of the tags we are looking for already set
+  Assert(d_nodeIndividualTrigger[classId] == null_set_id || Theory::setIntersection(getTriggerTermSet(d_nodeIndividualTrigger[classId]).tags, inputTags) == 0);
+
+  if (inputTags == 0) {
+    return;
+  }
+
+  // Set of already (through disequalities) visited equivalence classes
+  std::set<EqualityNodeId> alreadyVisited;
+
+  // Go through the equivalence class
+  EqualityNodeId currentId = classId;
+  do {
+
+    Debug("equality::trigger") << d_name << "::getDisequalities() : going through uselist of " << d_nodes[currentId] << std::endl;
+
+    // Current node in the equivalence class
+    EqualityNode& currentNode = getEqualityNode(currentId);
+
+    // Go through the uselist and look for disequalities
+    UseListNodeId currentUseId = currentNode.getUseList();
+    while (currentUseId != null_uselist_id) {
+      UseListNode& useListNode = d_useListNodes[currentUseId];
+      EqualityNodeId funId = useListNode.getApplicationId();
+
+      Debug("equality::trigger") << d_name << "::getDisequalities() : checking " << d_nodes[funId] << std::endl;
+
+      const FunctionApplication& fun = d_applications[useListNode.getApplicationId()].original;
+      // If it's an equality asserted to false, we do the work
+      if (fun.isEquality() && getEqualityNode(funId).getFind() == getEqualityNode(d_false).getFind()) {
+        // Get the other equality member
+        bool lhs = false;
+        EqualityNodeId toCompare = fun.b;
+        if (toCompare == currentId) {
+          toCompare = fun.a;
+          lhs = true;
+        }
+        // Representative of the other member
+        EqualityNodeId toCompareRep = getEqualityNode(toCompare).getFind();
+        if (toCompareRep == classId) {
+          // We're in conflict, so we will send it out from merge
+          out.clear();
+          return;
+        }
+        // Check if we already have this one
+        if (alreadyVisited.count(toCompareRep) == 0) {
+          // Mark as visited
+          alreadyVisited.insert(toCompareRep);
+          // Get the trigger set
+          TriggerTermSetRef toCompareTriggerSetRef = d_nodeIndividualTrigger[toCompareRep];
+          // We only care if we're not both constants and there are trigger terms in the other class
+          if ((allowConstants || !d_isConstant[toCompareRep]) && toCompareTriggerSetRef != null_set_id) {
+            // Tags of the other gey
+            TriggerTermSet& toCompareTriggerSet = getTriggerTermSet(toCompareTriggerSetRef);
+            // We only care if there are things in inputTags that is also in toCompareTags
+            Theory::Set commonTags = Theory::setIntersection(inputTags, toCompareTriggerSet.tags);
+            if (commonTags) {
+              out.push_back(TaggedEquality(funId, toCompareTriggerSetRef, lhs));
+            }
+          }
+        }
+      }
+      // Go to the next one in the use list
+      currentUseId = useListNode.getNext();
+    }
+    // Next in equivalence class
+    currentId = currentNode.getNext();
+  } while (!d_done && currentId != classId);
+
+}
+
+bool EqualityEngine::propagateTriggerTermDisequalities(Theory::Set tags, TriggerTermSetRef triggerSetRef, const TaggedEqualitiesSet& disequalitiesToNotify) {
+
+  // No tags, no food
+  if (!tags) {
+    return !d_done;
+  }
+
+  Assert(triggerSetRef != null_set_id);
+
+  // This is the class trigger set
+  const TriggerTermSet& triggerSet = getTriggerTermSet(triggerSetRef);
+  // Go through the disequalities and notify
+  TaggedEqualitiesSet::const_iterator it = disequalitiesToNotify.begin();
+  TaggedEqualitiesSet::const_iterator it_end = disequalitiesToNotify.end();
+  for (; !d_done && it != it_end; ++ it) {
+    // The information about the equality that is asserted to false
+    const TaggedEquality& disequalityInfo = *it;
+    const TriggerTermSet& disequalityTriggerSet = getTriggerTermSet(disequalityInfo.triggerSetRef);
+    Theory::Set commonTags = Theory::setIntersection(disequalityTriggerSet.tags, tags);
+    Assert(commonTags);
+    // This is the actual function
+    const FunctionApplication& fun = d_applications[disequalityInfo.equalityId].original;
+    // Figure out who we are comparing to in the original equality
+    EqualityNodeId toCompare = disequalityInfo.lhs ? fun.a : fun.b;
+    EqualityNodeId myCompare = disequalityInfo.lhs ? fun.b : fun.a;
+    if (getEqualityNode(toCompare).getFind() == getEqualityNode(myCompare).getFind()) {
+      // We're propagating a != a, which means we're inconsistent, just bail and let it go into
+      // a regular conflict
+      return !d_done;
+    }
+    // Go through the tags, and add the disequalities
+    TheoryId currentTag;
+    while (!d_done && ((currentTag = Theory::setPop(commonTags)) != THEORY_LAST)) {
+      // Get the tag representative
+      EqualityNodeId tagRep = disequalityTriggerSet.getTrigger(currentTag);
+      EqualityNodeId myRep = triggerSet.getTrigger(currentTag);
+      // Propagate
+      if (!hasPropagatedDisequality(currentTag, myRep, tagRep)) {
+        // Construct the proof if not there already
+        if (!hasPropagatedDisequality(myRep, tagRep)) {
+          d_deducedDisequalityReasons.push_back(EqualityPair(myCompare, myRep));
+          d_deducedDisequalityReasons.push_back(EqualityPair(toCompare, tagRep));
+          d_deducedDisequalityReasons.push_back(EqualityPair(disequalityInfo.equalityId, d_falseId));
+        }
+        // Store the propagation
+        storePropagatedDisequality(currentTag, myRep, tagRep);
+        // Notify
+        if (d_performNotify) {
+          if (!d_notify.eqNotifyTriggerTermEquality(currentTag, d_nodes[myRep], d_nodes[tagRep], false)) {
+            d_done = true;
+          }
+        }
+      }
+    }
+  }
+
+  return !d_done;
+}
+
+EqClassesIterator::EqClassesIterator() :
+    d_ee(NULL), d_it(0) {
+}
+
+EqClassesIterator::EqClassesIterator(const eq::EqualityEngine* ee)
+: d_ee(ee)
+{
+  Assert(d_ee->consistent());
+  d_it = 0;
+  // Go to the first non-internal node that is it's own representative
+  if(d_it < d_ee->d_nodesCount && (d_ee->d_isInternal[d_it] || d_ee->getEqualityNode(d_it).getFind() != d_it)) {
+    ++d_it;
+  }
+}
+
+Node EqClassesIterator::operator*() const {
+  return d_ee->d_nodes[d_it];
+}
+
+bool EqClassesIterator::operator==(const EqClassesIterator& i) const {
+  return d_ee == i.d_ee && d_it == i.d_it;
+}
+
+bool EqClassesIterator::operator!=(const EqClassesIterator& i) const {
+  return !(*this == i);
+}
+
+EqClassesIterator& EqClassesIterator::operator++() {
+  ++d_it;
+  while(d_it < d_ee->d_nodesCount && (d_ee->d_isInternal[d_it] || d_ee->getEqualityNode(d_it).getFind() != d_it)) {
+    ++d_it;
+  }
+  return *this;
+}
+
+EqClassesIterator EqClassesIterator::operator++(int) {
+  EqClassesIterator i = *this;
+  ++*this;
+  return i;
+}
+
+bool EqClassesIterator::isFinished() const {
+  return d_it >= d_ee->d_nodesCount;
+}
+
+EqClassIterator::EqClassIterator()
+: d_ee(NULL)
+, d_start(null_id)
+, d_current(null_id)
+{}
+
+EqClassIterator::EqClassIterator(Node eqc, const eq::EqualityEngine* ee)
+: d_ee(ee)
+{
+  Assert(d_ee->consistent());
+  d_current = d_start = d_ee->getNodeId(eqc);
+  Assert(d_start == d_ee->getEqualityNode(d_start).getFind());
+  Assert (!d_ee->d_isInternal[d_start]);
+}
+
+Node EqClassIterator::operator*() const {
+  return d_ee->d_nodes[d_current];
+}
+
+bool EqClassIterator::operator==(const EqClassIterator& i) const {
+  return d_ee == i.d_ee && d_current == i.d_current;
+}
+
+bool EqClassIterator::operator!=(const EqClassIterator& i) const {
+  return !(*this == i);
+}
+
+EqClassIterator& EqClassIterator::operator++() {
+  Assert(!isFinished());
+
+  Assert(d_start == d_ee->getEqualityNode(d_current).getFind());
+  Assert(!d_ee->d_isInternal[d_current]);
+
+  // Find the next one
+  do {
+    d_current = d_ee->getEqualityNode(d_current).getNext();
+  } while(d_ee->d_isInternal[d_current]);
+
+  Assert(d_start == d_ee->getEqualityNode(d_current).getFind());
+  Assert(!d_ee->d_isInternal[d_current]);
+
+  if(d_current == d_start) {
+    // we end when we have cycled back to the original representative
+    d_current = null_id;
+  }
+  return *this;
+}
+
+EqClassIterator EqClassIterator::operator++(int) {
+  EqClassIterator i = *this;
+  ++*this;
+  return i;
+}
+
+bool EqClassIterator::isFinished() const {
+  return d_current == null_id;
+}
+
+void EqProof::debug_print(const char* c, unsigned tb, PrettyPrinter* prettyPrinter) const {
+  for(unsigned i=0; i<tb; i++) { Debug( c ) << "  "; }
+
+  if (prettyPrinter)
+    Debug( c ) << prettyPrinter->printTag(d_id);
+  else
+    Debug( c ) << d_id;
+
+  Debug( c ) << "(";
+  if( !d_children.empty() || !d_node.isNull() ){
+    if( !d_node.isNull() ){
+      Debug( c ) << std::endl;
+      for( unsigned i=0; i<tb+1; i++ ) { Debug( c ) << "  "; }
+      Debug( c ) << d_node;
+    }
+    for( unsigned i=0; i<d_children.size(); i++ ){
+      if( i>0 || !d_node.isNull() ) Debug( c ) << ",";
+      Debug( c ) << std::endl;
+      d_children[i]->debug_print( c, tb+1, prettyPrinter );
+    }
+  }
+  Debug( c ) << ")" << std::endl;
+}
+
+} // Namespace uf
+} // Namespace theory
+} // Namespace CVC4
diff --git a/src/theory/uf/equality_engine.h b/src/theory/uf/equality_engine.h
new file mode 100644
index 0000000..46ec740
--- /dev/null
+++ b/src/theory/uf/equality_engine.h
@@ -0,0 +1,920 @@
+/*********************                                                        */
+/*! \file equality_engine.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Guy Katz
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <deque>
+#include <ext/hash_map>
+#include <queue>
+#include <vector>
+
+#include "base/output.h"
+#include "context/cdhashmap.h"
+#include "context/cdo.h"
+#include "expr/kind_map.h"
+#include "expr/node.h"
+#include "theory/rewriter.h"
+#include "theory/theory.h"
+#include "theory/uf/equality_engine_types.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace eq {
+
+
+class EqProof;
+class EqClassesIterator;
+class EqClassIterator;
+
+/**
+ * Interface for equality engine notifications. All the notifications
+ * are safe as TNodes, but not necessarily for negations.
+ */
+class EqualityEngineNotify {
+
+  friend class EqualityEngine;
+
+public:
+
+  virtual ~EqualityEngineNotify() {};
+
+  /**
+   * Notifies about a trigger equality that became true or false.
+   *
+   * @param equality the equality that became true or false
+   * @param value the value of the equality
+   */
+  virtual bool eqNotifyTriggerEquality(TNode equality, bool value) = 0;
+
+  /**
+   * Notifies about a trigger predicate that became true or false.
+   *
+   * @param predicate the trigger predicate that became true or false
+   * @param value the value of the predicate
+   */
+  virtual bool eqNotifyTriggerPredicate(TNode predicate, bool value) = 0;
+
+  /**
+   * Notifies about the merge of two trigger terms.
+   *
+   * @param tag the theory that both triggers were tagged with
+   * @param t1 a term marked as trigger
+   * @param t2 a term marked as trigger
+   * @param value true if equal, false if dis-equal
+   */
+  virtual bool eqNotifyTriggerTermEquality(TheoryId tag, TNode t1, TNode t2, bool value) = 0;
+
+  /**
+   * Notifies about the merge of two constant terms. After this, all work is suspended and all you
+   * can do is ask for explanations.
+   *
+   * @param t1 a constant term
+   * @param t2 a constant term
+   */
+  virtual void eqNotifyConstantTermMerge(TNode t1, TNode t2) = 0;
+
+  /**
+   * Notifies about the creation of a new equality class.
+   *
+   * @param t the term forming the new class
+   */
+  virtual void eqNotifyNewClass(TNode t) = 0;
+
+  /**
+   * Notifies about the merge of two classes (just before the merge).
+   *
+   * @param t1 a term
+   * @param t2 a term
+   */
+  virtual void eqNotifyPreMerge(TNode t1, TNode t2) = 0;
+
+  /**
+   * Notifies about the merge of two classes (just after the merge).
+   *
+   * @param t1 a term
+   * @param t2 a term
+   */
+  virtual void eqNotifyPostMerge(TNode t1, TNode t2) = 0;
+
+  /**
+   * Notifies about the disequality of two terms.
+   *
+   * @param t1 a term
+   * @param t2 a term
+   * @param reason the reason
+   */
+  virtual void eqNotifyDisequal(TNode t1, TNode t2, TNode reason) = 0;
+
+};/* class EqualityEngineNotify */
+
+/**
+ * Implementation of the notification interface that ignores all the
+ * notifications.
+ */
+class EqualityEngineNotifyNone : public EqualityEngineNotify {
+public:
+  bool eqNotifyTriggerEquality(TNode equality, bool value) { return true; }
+  bool eqNotifyTriggerPredicate(TNode predicate, bool value) { return true; }
+  bool eqNotifyTriggerTermEquality(TheoryId tag, TNode t1, TNode t2, bool value) { return true; }
+  void eqNotifyConstantTermMerge(TNode t1, TNode t2) { }
+  void eqNotifyNewClass(TNode t) { }
+  void eqNotifyPreMerge(TNode t1, TNode t2) { }
+  void eqNotifyPostMerge(TNode t1, TNode t2) { }
+  void eqNotifyDisequal(TNode t1, TNode t2, TNode reason) { }
+};/* class EqualityEngineNotifyNone */
+
+/**
+ * An interface for equality engine notifications during equality path reconstruction.
+ * Can be used to add theory-specific logic for, e.g., proof construction.
+ */
+class PathReconstructionNotify {
+public:
+
+  virtual ~PathReconstructionNotify() {}
+
+  virtual void notify(unsigned reasonType, Node reason, Node a, Node b,
+                      std::vector<TNode>& equalities, EqProof* proof) const = 0;
+};
+
+/**
+ * Class for keeping an incremental congruence closure over a set of terms. It provides
+ * notifications via an EqualityEngineNotify object.
+ */
+class EqualityEngine : public context::ContextNotifyObj {
+
+  friend class EqClassesIterator;
+  friend class EqClassIterator;
+
+  /** Default implementation of the notification object */
+  static EqualityEngineNotifyNone s_notifyNone;
+
+  /**
+   * Master equality engine that gets all the equality information from
+   * this one, or null if none.
+   */
+  EqualityEngine* d_masterEqualityEngine;
+
+public:
+
+  /**
+   * Initialize the equality engine, given the notification class.
+   */
+  EqualityEngine(EqualityEngineNotify& notify, context::Context* context, std::string name, bool constantsAreTriggers);
+
+  /**
+   * Initialize the equality engine with no notification class.
+   */
+  EqualityEngine(context::Context* context, std::string name, bool constantsAreTriggers);
+
+  /**
+   * Just a destructor.
+   */
+  virtual ~EqualityEngine();
+
+  /**
+   * Set the master equality engine for this one. Master engine will get copies of all
+   * the terms and equalities from this engine.
+   */
+  void setMasterEqualityEngine(EqualityEngine* master);
+
+  /** Statistics about the equality engine instance */
+  struct Statistics {
+    /** Total number of merges */
+    IntStat mergesCount;
+    /** Number of terms managed by the system */
+    IntStat termsCount;
+    /** Number of function terms managed by the system */
+    IntStat functionTermsCount;
+    /** Number of constant terms managed by the system */
+    IntStat constantTermsCount;
+
+    Statistics(std::string name);
+
+    ~Statistics();
+  };/* struct EqualityEngine::statistics */
+
+private:
+
+  /** The context we are using */
+  context::Context* d_context;
+
+  /** If we are done, we don't except any new assertions */
+  context::CDO<bool> d_done;
+
+  /** Whether to notify or not (temporarily disabled on equality checks) */
+  bool d_performNotify;
+
+  /** The class to notify when a representative changes for a term */
+  EqualityEngineNotify& d_notify;
+
+  /** The map of kinds to be treated as function applications */
+  KindMap d_congruenceKinds;
+
+  /** The map of kinds to be treated as interpreted function applications (for evaluation of constants) */
+  KindMap d_congruenceKindsInterpreted;
+
+  /** Objects that need to be notified during equality path reconstruction */
+  std::map<unsigned, const PathReconstructionNotify*> d_pathReconstructionTriggers;
+
+  /** Map from nodes to their ids */
+  __gnu_cxx::hash_map<TNode, EqualityNodeId, TNodeHashFunction> d_nodeIds;
+
+  /** Map from function applications to their ids */
+  typedef __gnu_cxx::hash_map<FunctionApplication, EqualityNodeId, FunctionApplicationHashFunction> ApplicationIdsMap;
+
+  /**
+   * A map from a pair (a', b') to a function application f(a, b), where a' and b' are the current representatives
+   * of a and b.
+   */
+  ApplicationIdsMap d_applicationLookup;
+
+  /** Application lookups in order, so that we can backtrack. */
+  std::vector<FunctionApplication> d_applicationLookups;
+
+  /** Number of application lookups, for backtracking.  */
+  context::CDO<DefaultSizeType> d_applicationLookupsCount;
+
+  /**
+   * Store the application lookup, with enough information to backtrack
+   */
+  void storeApplicationLookup(FunctionApplication& funNormalized, EqualityNodeId funId);
+
+  /** Map from ids to the nodes (these need to be nodes as we pick up the operators) */
+  std::vector<Node> d_nodes;
+
+  /** A context-dependents count of nodes */
+  context::CDO<DefaultSizeType> d_nodesCount;
+
+  /** Map from ids to the applications */
+  std::vector<FunctionApplicationPair> d_applications;
+
+  /** Map from ids to the equality nodes */
+  std::vector<EqualityNode> d_equalityNodes;
+
+  /** Number of asserted equalities we have so far */
+  context::CDO<DefaultSizeType> d_assertedEqualitiesCount;
+
+  /** Memory for the use-list nodes */
+  std::vector<UseListNode> d_useListNodes;
+
+  /** A fresh merge reason type to return upon request */
+  unsigned d_freshMergeReasonType;
+
+  /**
+   * We keep a list of asserted equalities. Not among original terms, but
+   * among the class representatives.
+   */
+  struct Equality {
+    /** Left hand side of the equality */
+    EqualityNodeId lhs;
+    /** Right hand side of the equality */
+    EqualityNodeId rhs;
+    /** Equality constructor */
+    Equality(EqualityNodeId lhs = null_id, EqualityNodeId rhs = null_id)
+    : lhs(lhs), rhs(rhs) {}
+  };/* struct EqualityEngine::Equality */
+
+  /** The ids of the classes we have merged */
+  std::vector<Equality> d_assertedEqualities;
+
+  /** The reasons for the equalities */
+
+  /**
+   * An edge in the equality graph. This graph is an undirected graph (both edges added)
+   * containing the actual asserted equalities.
+   */
+  class EqualityEdge {
+
+    // The id of the RHS of this equality
+    EqualityNodeId d_nodeId;
+    // The next edge
+    EqualityEdgeId d_nextId;
+    // Type of reason for this equality
+    unsigned d_mergeType;
+    // Reason of this equality
+    TNode d_reason;
+
+  public:
+
+    EqualityEdge():
+      d_nodeId(null_edge), d_nextId(null_edge), d_mergeType(MERGED_THROUGH_CONGRUENCE) {}
+
+    EqualityEdge(EqualityNodeId nodeId, EqualityNodeId nextId, unsigned type, TNode reason):
+      d_nodeId(nodeId), d_nextId(nextId), d_mergeType(type), d_reason(reason) {}
+
+    /** Returns the id of the next edge */
+    EqualityEdgeId getNext() const { return d_nextId; }
+
+    /** Returns the id of the target edge node */
+    EqualityNodeId getNodeId() const { return d_nodeId; }
+
+    /** The reason of this edge */
+    unsigned getReasonType() const { return d_mergeType; }
+
+    /** The reason of this edge */
+    TNode getReason() const { return d_reason; }
+  };/* class EqualityEngine::EqualityEdge */
+
+  /**
+   * All the equality edges (twice as many as the number of asserted equalities. If an equality
+   * t1 = t2 is asserted, the edges added are -> t2, -> t1 (in this order). Hence, having the index
+   * of one of the edges you can reconstruct the original equality.
+   */
+  std::vector<EqualityEdge> d_equalityEdges;
+
+  /**
+   * Returns the string representation of the edges.
+   */
+  std::string edgesToString(EqualityEdgeId edgeId) const;
+
+  /**
+   * Map from a node to its first edge in the equality graph. Edges are added to the front of the
+   * list which makes the insertion/backtracking easy.
+   */
+  std::vector<EqualityEdgeId> d_equalityGraph;
+
+  /** Add an edge to the equality graph */
+  void addGraphEdge(EqualityNodeId t1, EqualityNodeId t2, unsigned type, TNode reason);
+
+  /** Returns the equality node of the given node */
+  EqualityNode& getEqualityNode(TNode node);
+
+  /** Returns the equality node of the given node */
+  const EqualityNode& getEqualityNode(TNode node) const;
+
+  /** Returns the equality node of the given node */
+  EqualityNode& getEqualityNode(EqualityNodeId nodeId);
+
+  /** Returns the equality node of the given node */
+  const EqualityNode& getEqualityNode(EqualityNodeId nodeId) const;
+
+  /** Returns the id of the node */
+  EqualityNodeId getNodeId(TNode node) const;
+
+  /**
+   * Merge the class2 into class1
+   * @return true if ok, false if to break out
+   */
+  bool merge(EqualityNode& class1, EqualityNode& class2, std::vector<TriggerId>& triggers);
+
+  /** Undo the merge of class2 into class1 */
+  void undoMerge(EqualityNode& class1, EqualityNode& class2, EqualityNodeId class2Id);
+
+  /** Backtrack the information if necessary */
+  void backtrack();
+
+  /**
+   * Trigger that will be updated
+   */
+  struct Trigger {
+    /** The current class id of the LHS of the trigger */
+    EqualityNodeId classId;
+    /** Next trigger for class */
+    TriggerId nextTrigger;
+
+    Trigger(EqualityNodeId classId = null_id, TriggerId nextTrigger = null_trigger)
+    : classId(classId), nextTrigger(nextTrigger) {}
+  };/* struct EqualityEngine::Trigger */
+
+  /**
+   * Vector of triggers. Triggers come in pairs for an
+   * equality trigger (t1, t2): one at position 2k for t1, and one at position 2k + 1 for t2. When
+   * updating triggers we always know where the other one is (^1).
+   */
+  std::vector<Trigger> d_equalityTriggers;
+
+  /**
+   * Vector of original equalities of the triggers.
+   */
+  std::vector<TriggerInfo> d_equalityTriggersOriginal;
+
+  /**
+   * Context dependent count of triggers
+   */
+  context::CDO<DefaultSizeType> d_equalityTriggersCount;
+
+  /**
+   * Trigger lists per node. The begin id changes as we merge, but the end always points to
+   * the actual end of the triggers for this node.
+   */
+  std::vector<TriggerId> d_nodeTriggers;
+
+  /**
+   * Map from ids to whether they are constants (constants are always
+   * representatives of their class.
+   */
+  std::vector<bool> d_isConstant;
+
+  /**
+   * Map from ids of proper terms, to the number of non-constant direct subterms. If we update an interpreted
+   * application to a constant, we can decrease this value. If we hit 0, we can evaluate the term.
+   *
+   */
+  std::vector<unsigned> d_subtermsToEvaluate;
+
+  /**
+   * For nodes that we need to postpone evaluation.
+   */
+  std::queue<EqualityNodeId> d_evaluationQueue;
+
+  /**
+   * Evaluate all terms in the evaluation queue.
+   */
+  void processEvaluationQueue();
+
+  /** Vector of nodes that evaluate. */
+  std::vector<EqualityNodeId> d_subtermEvaluates;
+
+  /** Size of the nodes that evaluate vector. */
+  context::CDO<unsigned> d_subtermEvaluatesSize;
+
+  /** Set the node evaluate flag */
+  void subtermEvaluates(EqualityNodeId id);
+
+  /**
+   * Returns the evaluation of the term when all (direct) children are replaced with
+   * the constant representatives.
+   */
+  Node evaluateTerm(TNode node);
+
+  /**
+   * Returns true if it's a constant
+   */
+  bool isConstant(EqualityNodeId id) const {
+    return d_isConstant[getEqualityNode(id).getFind()];
+  }
+
+  /**
+   * Map from ids to whether they are Boolean.
+   */
+  std::vector<bool> d_isEquality;
+
+  /**
+   * Map from ids to whether the nods is internal. An internal node is a node
+   * that corresponds to a partially currified node, for example.
+   */
+  std::vector<bool> d_isInternal;
+
+  /**
+   * Adds the trigger with triggerId to the beginning of the trigger list of the node with id nodeId.
+   */
+  void addTriggerToList(EqualityNodeId nodeId, TriggerId triggerId);
+
+  /** Statistics */
+  Statistics d_stats;
+
+  /** Add a new function application node to the database, i.e APP t1 t2 */
+  EqualityNodeId newApplicationNode(TNode original, EqualityNodeId t1, EqualityNodeId t2, FunctionApplicationType type);
+
+  /** Add a new node to the database */
+  EqualityNodeId newNode(TNode t);
+
+  /** Propagation queue */
+  std::deque<MergeCandidate> d_propagationQueue;
+
+  /** Enqueue to the propagation queue */
+  void enqueue(const MergeCandidate& candidate, bool back = true);
+
+  /** Do the propagation */
+  void propagate();
+
+  /** Are we in propagate */
+  bool d_inPropagate;
+
+  /**
+   * Get an explanation of the equality t1 = t2. Returns the asserted equalities that
+   * imply t1 = t2. Returns TNodes as the assertion equalities should be hashed somewhere
+   * else.
+   */
+  void getExplanation(EqualityEdgeId t1Id, EqualityNodeId t2Id, std::vector<TNode>& equalities, EqProof * eqp) const;
+
+  /**
+   * Print the equality graph.
+   */
+  void debugPrintGraph() const;
+
+  /** The true node */
+  Node d_true;
+  /** True node id */
+  EqualityNodeId d_trueId;
+
+  /** The false node */
+  Node d_false;
+  /** False node id */
+  EqualityNodeId d_falseId;
+
+  /**
+   * Adds an equality of terms t1 and t2 to the database.
+   */
+  void assertEqualityInternal(TNode t1, TNode t2, TNode reason, unsigned pid = MERGED_THROUGH_EQUALITY);
+
+  /**
+   * Adds a trigger equality to the database with the trigger node and polarity for notification.
+   */
+  void addTriggerEqualityInternal(TNode t1, TNode t2, TNode trigger, bool polarity);
+
+  /**
+   * This method gets called on backtracks from the context manager.
+   */
+  void contextNotifyPop() {
+    backtrack();
+  }
+
+  /**
+   * Constructor initialization stuff.
+   */
+  void init();
+
+  /** Set of trigger terms */
+  struct TriggerTermSet {
+    /** Set of theories in this set */
+    Theory::Set tags;
+    /** The trigger terms */
+    EqualityNodeId triggers[0];
+    /** Returns the theory tags */
+    Theory::Set hasTrigger(TheoryId tag) const { return Theory::setContains(tag, tags); }
+    /** Returns a trigger by tag */
+    EqualityNodeId getTrigger(TheoryId tag) const {
+      return triggers[Theory::setIndex(tag, tags)];
+    }
+  };/* struct EqualityEngine::TriggerTermSet */
+
+  /** Are the constants triggers */
+  bool d_constantsAreTriggers;
+
+  /** The information about trigger terms is stored in this easily maintained memory. */
+  char* d_triggerDatabase;
+
+  /** Allocated size of the trigger term database */
+  DefaultSizeType d_triggerDatabaseAllocatedSize;
+
+  /** Reference for the trigger terms set */
+  typedef DefaultSizeType TriggerTermSetRef;
+
+  /** Null reference */
+  static const TriggerTermSetRef null_set_id = (TriggerTermSetRef)(-1);
+
+  /** Create new trigger term set based on the internally set information */
+  TriggerTermSetRef newTriggerTermSet(Theory::Set newSetTags, EqualityNodeId* newSetTriggers, unsigned newSetTriggersSize);
+
+  /** Get the trigger set give a reference */
+  TriggerTermSet& getTriggerTermSet(TriggerTermSetRef ref) {
+    Assert(ref < d_triggerDatabaseSize);
+    return *(reinterpret_cast<TriggerTermSet*>(d_triggerDatabase + ref));
+  }
+
+  /** Get the trigger set give a reference */
+  const TriggerTermSet& getTriggerTermSet(TriggerTermSetRef ref) const {
+    Assert(ref < d_triggerDatabaseSize);
+    return *(reinterpret_cast<const TriggerTermSet*>(d_triggerDatabase + ref));
+  }
+
+  /** Used part of the trigger term database */
+  context::CDO<DefaultSizeType> d_triggerDatabaseSize;
+
+  struct TriggerSetUpdate {
+    EqualityNodeId classId;
+    TriggerTermSetRef oldValue;
+    TriggerSetUpdate(EqualityNodeId classId = null_id, TriggerTermSetRef oldValue = null_set_id)
+    : classId(classId), oldValue(oldValue) {}
+  };/* struct EqualityEngine::TriggerSetUpdate */
+
+  /**
+   * List of trigger updates for backtracking.
+   */
+  std::vector<TriggerSetUpdate> d_triggerTermSetUpdates;
+
+  /**
+   * Size of the individual triggers list.
+   */
+  context::CDO<unsigned> d_triggerTermSetUpdatesSize;
+
+  /**
+   * Map from ids to the individual trigger set representatives.
+   */
+  std::vector<TriggerTermSetRef> d_nodeIndividualTrigger;
+
+  typedef std::hash_map<EqualityPair, DisequalityReasonRef, EqualityPairHashFunction> DisequalityReasonsMap;
+
+  /**
+   * A map from pairs of disequal terms, to the reason why we deduced they are disequal.
+   */
+  DisequalityReasonsMap d_disequalityReasonsMap;
+
+  /**
+   * A list of all the disequalities we deduced.
+   */
+  std::vector<EqualityPair> d_deducedDisequalities;
+
+  /**
+   * Context dependent size of the deduced disequalities
+   */
+  context::CDO<size_t> d_deducedDisequalitiesSize;
+
+  /**
+   * For each disequality deduced, we add the pairs of equivalences needed to explain it.
+   */
+  std::vector<EqualityPair> d_deducedDisequalityReasons;
+
+  /**
+   * Size of the memory for disequality reasons.
+   */
+  context::CDO<size_t> d_deducedDisequalityReasonsSize;
+
+  /**
+   * Map from equalities to the tags that have received the notification.
+   */
+  typedef context::CDHashMap<EqualityPair, Theory::Set, EqualityPairHashFunction> PropagatedDisequalitiesMap;
+  PropagatedDisequalitiesMap d_propagatedDisequalities;
+
+  /**
+   * Has this equality been propagated to anyone.
+   */
+  bool hasPropagatedDisequality(EqualityNodeId lhsId, EqualityNodeId rhsId) const;
+
+  /**
+   * Has this equality been propagated to the tag owner.
+   */
+  bool hasPropagatedDisequality(TheoryId tag, EqualityNodeId lhsId, EqualityNodeId rhsId) const;
+
+  /**
+   * Stores a propagated disequality for explanation purposes and remembers the reasons. The
+   * reasons should be pushed on the reasons vector.
+   */
+  void storePropagatedDisequality(TheoryId tag, EqualityNodeId lhsId, EqualityNodeId rhsId);
+
+  /**
+   * An equality tagged with a set of tags.
+   */
+  struct TaggedEquality {
+    /** Id of the equality */
+    EqualityNodeId equalityId;
+    /** TriggerSet reference for the class of one of the sides */
+    TriggerTermSetRef triggerSetRef;
+    /** Is trigger equivalent to the lhs (rhs otherwise) */
+    bool lhs;
+
+    TaggedEquality(EqualityNodeId equalityId = null_id, TriggerTermSetRef triggerSetRef = null_set_id, bool lhs = true)
+    : equalityId(equalityId), triggerSetRef(triggerSetRef), lhs(lhs) {}
+  };
+
+  /** A map from equivalence class id's to tagged equalities */
+  typedef std::vector<TaggedEquality> TaggedEqualitiesSet;
+
+  /**
+   * Returns a set of equalities that have been asserted false where one side of the equality
+   * belongs to the given equivalence class. The equalities are restricted to the ones where
+   * one side of the equality is in the tags set, but the other one isn't. Each returned
+   * dis-equality is associated with the tags that are the subset of the input tags, such that
+   * exactly one side of the equality is not in the set yet.
+   *
+   * @param classId the equivalence class to search
+   * @param inputTags the tags to filter the equalities
+   * @param out the output equalities, as described above
+   */
+  void getDisequalities(bool allowConstants, EqualityNodeId classId, Theory::Set inputTags, TaggedEqualitiesSet& out);
+
+  /**
+   * Propagates the remembered disequalities with given tags the original triggers for those tags,
+   * and the set of disequalities produced by above.
+   */
+  bool propagateTriggerTermDisequalities(Theory::Set tags,
+    TriggerTermSetRef triggerSetRef, const TaggedEqualitiesSet& disequalitiesToNotify);
+
+  /** Name of the equality engine */
+  std::string d_name;
+
+  /** The internal addTerm */
+  void addTermInternal(TNode t, bool isOperator = false);
+
+public:
+
+  /**
+   * Adds a term to the term database.
+   */
+  void addTerm(TNode t) {
+    addTermInternal(t, false);
+  }
+
+  /**
+   * Add a kind to treat as function applications.
+   */
+  void addFunctionKind(Kind fun, bool interpreted = false);
+
+  /**
+   * Returns true if this kind is used for congruence closure.
+   */
+  bool isFunctionKind(Kind fun) const {
+    return d_congruenceKinds.tst(fun);
+  }
+
+  /**
+   * Returns true if this kind is used for congruence closure + evaluation of constants.
+   */
+  bool isInterpretedFunctionKind(Kind fun) const {
+    return d_congruenceKindsInterpreted.tst(fun);
+  }
+
+  /**
+   * Check whether the node is already in the database.
+   */
+  bool hasTerm(TNode t) const;
+
+  /**
+   * Adds a predicate p with given polarity. The predicate asserted
+   * should be in the congruence closure kinds (otherwise it's
+   * useless).
+   *
+   * @param p the (non-negated) predicate
+   * @param polarity true if asserting the predicate, false if
+   *                 asserting the negated predicate
+   * @param reason the reason to keep for building explanations
+   */
+  void assertPredicate(TNode p, bool polarity, TNode reason, unsigned pid = MERGED_THROUGH_EQUALITY);
+
+  /**
+   * Adds predicate p and q and makes them equal.
+   */
+  void mergePredicates(TNode p, TNode q, TNode reason);
+
+  /**
+   * Adds an equality eq with the given polarity to the database.
+   *
+   * @param eq the (non-negated) equality
+   * @param polarity true if asserting the equality, false if
+   *                 asserting the negated equality
+   * @param reason the reason to keep for building explanations
+   */
+  void assertEquality(TNode eq, bool polarity, TNode reason, unsigned pid = MERGED_THROUGH_EQUALITY);
+
+  /**
+   * Returns the current representative of the term t.
+   */
+  TNode getRepresentative(TNode t) const;
+
+  /**
+   * Add all the terms where the given term appears as a first child
+   * (directly or implicitly).
+   */
+  void getUseListTerms(TNode t, std::set<TNode>& output);
+
+  /**
+   * Get an explanation of the equality t1 = t2 being true or false.
+   * Returns the reasons (added when asserting) that imply it
+   * in the assertions vector.
+   */
+  void explainEquality(TNode t1, TNode t2, bool polarity, std::vector<TNode>& assertions, EqProof * eqp = NULL) const;
+
+  /**
+   * Get an explanation of the predicate being true or false.
+   * Returns the reasons (added when asserting) that imply imply it
+   * in the assertions vector.
+   */
+  void explainPredicate(TNode p, bool polarity, std::vector<TNode>& assertions, EqProof * eqp = NULL) const;
+
+  /**
+   * Add term to the set of trigger terms with a corresponding tag. The notify class will get
+   * notified when two trigger terms with the same tag become equal or dis-equal. The notification
+   * will not happen on all the terms, but only on the ones that are represent the class. Note that
+   * a term can be added more than once with different tags, and each tag appearance will merit
+   * it's own notification.
+   *
+   * @param t the trigger term
+   * @param theoryTag tag for this trigger (do NOT use THEORY_LAST)
+   */
+  void addTriggerTerm(TNode t, TheoryId theoryTag);
+
+  /**
+   * Returns true if t is a trigger term or in the same equivalence
+   * class as some other trigger term.
+   */
+  bool isTriggerTerm(TNode t, TheoryId theoryTag) const;
+
+  /**
+   * Returns the representative trigger term of the given term.
+   *
+   * @param t the term to check where isTriggerTerm(t) should be true
+   */
+  TNode getTriggerTermRepresentative(TNode t, TheoryId theoryTag) const;
+
+  /**
+   * Adds a notify trigger for equality. When equality becomes true eqNotifyTriggerEquality
+   * will be called with value = true, and when equality becomes false eqNotifyTriggerEquality
+   * will be called with value = false.
+   */
+  void addTriggerEquality(TNode equality);
+
+  /**
+   * Adds a notify trigger for the predicate p. When the predicate becomes true
+   * eqNotifyTriggerPredicate will be called with value = true, and when equality becomes false
+   * eqNotifyTriggerPredicate will be called with value = false.
+   */
+  void addTriggerPredicate(TNode predicate);
+
+  /**
+   * Returns true if the two terms are equal. Requires both terms to
+   * be in the database.
+   */
+  bool areEqual(TNode t1, TNode t2) const;
+
+  /**
+   * Check whether the two term are dis-equal. Requires both terms to
+   * be in the database.
+   */
+  bool areDisequal(TNode t1, TNode t2, bool ensureProof) const;
+
+  /**
+   * Return the number of nodes in the equivalence class containing t
+   * Adds t if not already there.
+   */
+  size_t getSize(TNode t);
+
+  /**
+   * Returns true if the engine is in a consistent state.
+   */
+  bool consistent() const { return !d_done; }
+
+  /**
+   * Marks an object for merge type based notification during equality path reconstruction.
+   */
+  void addPathReconstructionTrigger(unsigned trigger, const PathReconstructionNotify* notify);
+
+  /**
+   * Returns a fresh merge reason type tag for the client to use.
+   */
+  unsigned getFreshMergeReasonType();
+};
+
+/**
+ * Iterator to iterate over the equivalence classes.
+ */
+class EqClassesIterator {
+  const eq::EqualityEngine* d_ee;
+  size_t d_it;
+public:
+  EqClassesIterator();
+  EqClassesIterator(const eq::EqualityEngine* ee);
+  Node operator*() const;
+  bool operator==(const EqClassesIterator& i) const;
+  bool operator!=(const EqClassesIterator& i) const;
+  EqClassesIterator& operator++();
+  EqClassesIterator operator++(int);
+  bool isFinished() const;
+};/* class EqClassesIterator */
+
+/**
+ * Iterator to iterate over the equivalence class members.
+ */
+class EqClassIterator {
+  const eq::EqualityEngine* d_ee;
+  /** Starting node */
+  EqualityNodeId d_start;
+  /** Current node */
+  EqualityNodeId d_current;
+public:
+  EqClassIterator();
+  EqClassIterator(Node eqc, const eq::EqualityEngine* ee);
+  Node operator*() const;
+  bool operator==(const EqClassIterator& i) const;
+  bool operator!=(const EqClassIterator& i) const;
+  EqClassIterator& operator++();
+  EqClassIterator operator++(int);
+  bool isFinished() const;
+};/* class EqClassIterator */
+
+class EqProof
+{
+public:
+  class PrettyPrinter {
+  public:
+    virtual ~PrettyPrinter() {}
+    virtual std::string printTag(unsigned tag) = 0;
+  };
+
+  EqProof() : d_id(MERGED_THROUGH_REFLEXIVITY){}
+  unsigned d_id;
+  Node d_node;
+  std::vector< EqProof * > d_children;
+  void debug_print(const char * c, unsigned tb = 0, PrettyPrinter* prettyPrinter = NULL) const;
+};/* class EqProof */
+
+} // Namespace eq
+} // Namespace theory
+} // Namespace CVC4
diff --git a/src/theory/uf/equality_engine_types.h b/src/theory/uf/equality_engine_types.h
new file mode 100644
index 0000000..346aebc
--- /dev/null
+++ b/src/theory/uf/equality_engine_types.h
@@ -0,0 +1,364 @@
+/*********************                                                        */
+/*! \file equality_engine_types.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Andrew Reynolds, Guy Katz
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#include <string>
+#include <iostream>
+#include <sstream>
+
+namespace CVC4 {
+namespace theory {
+namespace eq {
+
+/** Default type for the size of the sizes (size_t replacement) */
+typedef uint32_t DefaultSizeType;
+
+/** Id of the node */
+typedef DefaultSizeType EqualityNodeId;
+
+/** Id of the use list */
+typedef DefaultSizeType UseListNodeId;
+
+/** The trigger ids */
+typedef DefaultSizeType TriggerId;
+
+/** The equality edge ids */
+typedef DefaultSizeType EqualityEdgeId;
+
+/** The null node */
+static const EqualityNodeId null_id = (EqualityNodeId)(-1);
+
+/** The null use list node */
+static const EqualityNodeId null_uselist_id = (EqualityNodeId)(-1);
+
+/** The null trigger */
+static const TriggerId null_trigger = (TriggerId)(-1);
+
+/** The null edge id */
+static const EqualityEdgeId null_edge = (EqualityEdgeId)(-1);
+
+/**
+ * A reason for a merge. Either an equality x = y, a merge of two
+ * function applications f(x1, x2), f(y1, y2) due to congruence,
+ * or a merge of an equality to false due to both sides being
+ * (different) constants.
+ */
+enum MergeReasonType {
+  /** Terms were merged due to application of congruence closure */
+  MERGED_THROUGH_CONGRUENCE,
+  /** Terms were merged due to application of pure equality */
+  MERGED_THROUGH_EQUALITY,
+  /** Equality was merged to true, due to both sides of equality being in the same class */
+  MERGED_THROUGH_REFLEXIVITY,
+  /** Equality was merged to false, due to both sides of equality being a constant */
+  MERGED_THROUGH_CONSTANTS,
+  /** (for proofs only) Equality was merged due to transitivity */
+  MERGED_THROUGH_TRANS,
+
+  /** Reason types beyond this constant are theory specific reasons */
+  NUMBER_OF_MERGE_REASONS
+};
+
+inline std::ostream& operator << (std::ostream& out, MergeReasonType reason) {
+  switch (reason) {
+  case MERGED_THROUGH_CONGRUENCE:
+    out << "congruence";
+    break;
+  case MERGED_THROUGH_EQUALITY:
+    out << "pure equality";
+    break;
+  case MERGED_THROUGH_REFLEXIVITY:
+    out << "reflexivity";
+    break;
+  case MERGED_THROUGH_CONSTANTS:
+    out << "constants disequal";
+    break;
+  case MERGED_THROUGH_TRANS:
+    out << "transitivity";
+    break;
+
+  default:
+    out << "[theory]";
+    break;
+  }
+  return out;
+}
+
+/**
+ * A candidate for merging two equivalence classes, with the necessary
+ * additional information.
+ */
+struct MergeCandidate {
+  EqualityNodeId t1Id, t2Id;
+  unsigned type;
+  TNode reason;
+  MergeCandidate(EqualityNodeId x, EqualityNodeId y, unsigned type, TNode reason)
+  : t1Id(x), t2Id(y), type(type), reason(reason)
+  {}
+};
+
+/**
+ * Just an index into the reasons array, and the number of merges to consume.
+ */
+struct DisequalityReasonRef {
+  DefaultSizeType mergesStart;
+  DefaultSizeType mergesEnd;
+  DisequalityReasonRef(DefaultSizeType mergesStart = 0, DefaultSizeType mergesEnd = 0)
+  : mergesStart(mergesStart), mergesEnd(mergesEnd) {}
+};
+
+/**
+ * We maintain uselist where a node appears in, and this is the node
+ * of such a list.
+ */
+class UseListNode {
+
+private:
+
+  /** The id of the application node where this representative is at */
+  EqualityNodeId d_applicationId;
+
+  /** The next one in the class */
+  UseListNodeId d_nextUseListNodeId;
+
+public:
+
+  /**
+   * Creates a new node, which is in a list of it's own.
+   */
+  UseListNode(EqualityNodeId nodeId = null_id, UseListNodeId nextId = null_uselist_id)
+  : d_applicationId(nodeId), d_nextUseListNodeId(nextId) {}
+
+  /**
+   * Returns the next node in the circular list.
+   */
+  UseListNodeId getNext() const {
+    return d_nextUseListNodeId;
+  }
+
+  /**
+   * Returns the id of the function application.
+   */
+  EqualityNodeId getApplicationId() const {
+    return d_applicationId;
+  }
+};
+
+/**
+ * Main class for representing nodes in the equivalence class. The
+ * nodes are a circular list, with the representative carrying the
+ * size. Each individual node carries with itself the uselist of
+ * function applications it appears in and the list of asserted
+ * disequalities it belongs to. In order to get these lists one must
+ * traverse the entire class and pick up all the individual lists.
+ */
+class EqualityNode {
+
+private:
+
+  /** The size of this equivalence class (if it's a representative) */
+  DefaultSizeType d_size;
+
+  /** The id (in the eq-manager) of the representative equality node */
+  EqualityNodeId d_findId;
+
+  /** The next equality node in this class */
+  EqualityNodeId d_nextId;
+
+  /** The use list of this node */
+  UseListNodeId d_useList;
+
+public:
+
+  /**
+   * Creates a new node, which is in a list of it's own.
+   */
+  EqualityNode(EqualityNodeId nodeId = null_id)
+  : d_size(1)
+  , d_findId(nodeId)
+  , d_nextId(nodeId)
+  , d_useList(null_uselist_id)
+  {}
+
+  /**
+   * Returns the requested uselist.
+   */
+  UseListNodeId getUseList() const {
+    return d_useList;
+  }
+
+  /**
+   * Returns the next node in the class circular list.
+   */
+  EqualityNodeId getNext() const {
+    return d_nextId;
+  }
+
+  /**
+   * Returns the size of this equivalence class (only valid if this is the representative).
+   */
+  DefaultSizeType getSize() const {
+    return d_size;
+  }
+
+  /**
+   * Merges the two lists. If add size is true the size of this node is increased by the size of
+   * the other node, otherwise the size is decreased by the size of the other node.
+   */
+  template<bool addSize>
+  void merge(EqualityNode& other) {
+    EqualityNodeId tmp = d_nextId; d_nextId = other.d_nextId; other.d_nextId = tmp;
+    if (addSize) {
+      d_size += other.d_size;
+    } else {
+      d_size -= other.d_size;
+    }
+  }
+
+  /**
+   * Returns the class representative.
+   */
+  EqualityNodeId getFind() const { return d_findId; }
+
+  /**
+   * Set the class representative.
+   */
+  void setFind(EqualityNodeId findId) { d_findId = findId; }
+
+  /**
+   * Note that this node is used in a function application funId, or
+   * a negatively asserted equality (dis-equality) with funId.
+   */
+  template<typename memory_class>
+  void usedIn(EqualityNodeId funId, memory_class& memory) {
+    UseListNodeId newUseId = memory.size();
+    memory.push_back(UseListNode(funId, d_useList));
+    d_useList = newUseId;
+  }
+
+  /**
+   * For backtracking: remove the first element from the uselist and pop the memory.
+   */
+  template<typename memory_class>
+  void removeTopFromUseList(memory_class& memory) {
+    Assert ((int) d_useList == (int)memory.size() - 1);
+    d_useList = memory.back().getNext();
+    memory.pop_back();
+  }
+};
+
+/** A pair of ids */
+typedef std::pair<EqualityNodeId, EqualityNodeId> EqualityPair;
+
+struct EqualityPairHashFunction {
+  size_t operator () (const EqualityPair& pair) const {
+    size_t hash = 0;
+    hash = 0x9e3779b9 + pair.first;
+    hash ^= 0x9e3779b9 + pair.second + (hash << 6) + (hash >> 2);
+    return hash;
+  }
+};
+
+enum FunctionApplicationType {
+  /** This application is an equality a = b */
+  APP_EQUALITY,
+  /** This is a part of an uninterpreted application f(t1, ...., tn) */
+  APP_UNINTERPRETED,
+  /** This is a part of an interpreted application f(t1, ..., tn) */
+  APP_INTERPRETED
+};
+
+/**
+ * Represents the function APPLY a b. If isEquality is true then it
+ * represents the predicate (a = b). Note that since one can not
+ * construct the equality over function terms, the equality and hash
+ * function below are still well defined.
+ */
+struct FunctionApplication {
+  /** Type of application */
+  FunctionApplicationType type;
+  /** The actual application elements */
+  EqualityNodeId a, b;
+
+  /** Construct an application */
+  FunctionApplication(FunctionApplicationType type = APP_EQUALITY, EqualityNodeId a = null_id, EqualityNodeId b = null_id)
+  : type(type), a(a), b(b) {}
+
+  /** Equality of two applications */
+  bool operator == (const FunctionApplication& other) const {
+    return type == other.type && a == other.a && b == other.b;
+  }
+
+  /** Is this a null application */
+  bool isNull() const {
+    return a == null_id || b == null_id;
+  }
+
+  /** Is this an equality */
+  bool isEquality() const {
+    return type == APP_EQUALITY;
+  }
+
+  /** Is this an interpreted application (equality is special, i.e. not interpreted) */
+  bool isInterpreted() const {
+    return type == APP_INTERPRETED;
+  }
+
+};
+
+struct FunctionApplicationHashFunction {
+  size_t operator () (const FunctionApplication& app) const {
+    size_t hash = 0;
+    hash = 0x9e3779b9 + app.a;
+    hash ^= 0x9e3779b9 + app.b + (hash << 6) + (hash >> 2);
+    return hash;
+  }
+};
+
+/**
+ * At time of addition a function application can already normalize to something, so
+ * we keep both the original, and the normalized version.
+ */
+struct FunctionApplicationPair {
+  FunctionApplication original;
+  FunctionApplication normalized;
+  FunctionApplicationPair() {}
+  FunctionApplicationPair(const FunctionApplication& original, const FunctionApplication& normalized)
+  : original(original), normalized(normalized) {}
+  bool isNull() const {
+    return original.isNull();
+  }
+};
+
+/**
+ * Information about the added triggers.
+ */
+struct TriggerInfo {
+  /** The trigger itself */
+  Node trigger;
+  /** Polarity of the trigger */
+  bool polarity;
+  TriggerInfo() {}
+  TriggerInfo(Node trigger, bool polarity)
+  : trigger(trigger), polarity(polarity) {}
+  };
+
+
+} // namespace eq
+} // namespace theory
+} // namespace CVC4
diff --git a/src/theory/uf/kinds b/src/theory/uf/kinds
new file mode 100644
index 0000000..e2d740e
--- /dev/null
+++ b/src/theory/uf/kinds
@@ -0,0 +1,32 @@
+# kinds                                                               -*- sh -*-
+#
+# For documentation on this file format, please refer to
+# src/theory/builtin/kinds.
+#
+
+theory THEORY_UF ::CVC4::theory::uf::TheoryUF "theory/uf/theory_uf.h"
+typechecker "theory/uf/theory_uf_type_rules.h"
+
+properties stable-infinite parametric
+properties check propagate ppStaticLearn presolve getNextDecisionRequest
+
+rewriter ::CVC4::theory::uf::TheoryUfRewriter "theory/uf/theory_uf_rewriter.h"
+parameterized APPLY_UF VARIABLE 1: "application of an uninterpreted function; first parameter is the function, remaining ones are parameters to that function"
+
+typerule APPLY_UF ::CVC4::theory::uf::UfTypeRule
+
+variable BOOLEAN_TERM_VARIABLE "Boolean term variable"
+
+operator CARDINALITY_CONSTRAINT 2 "cardinality constraint on sort S: first parameter is (any) term of sort S, second is a positive integer constant k that bounds the cardinality of S"
+typerule CARDINALITY_CONSTRAINT ::CVC4::theory::uf::CardinalityConstraintTypeRule
+
+operator COMBINED_CARDINALITY_CONSTRAINT 1 "combined cardinality constraint; parameter is a positive integer constant k that bounds the sum of the cardinalities of all sorts in the signature"
+typerule COMBINED_CARDINALITY_CONSTRAINT ::CVC4::theory::uf::CombinedCardinalityConstraintTypeRule
+
+parameterized PARTIAL_APPLY_UF APPLY_UF 1: "partial uninterpreted function application"
+typerule PARTIAL_APPLY_UF ::CVC4::theory::uf::PartialTypeRule
+
+operator CARDINALITY_VALUE 1 "cardinality value of sort S: first parameter is (any) term of sort S"
+typerule CARDINALITY_VALUE ::CVC4::theory::uf::CardinalityValueTypeRule
+
+endtheory
diff --git a/src/theory/uf/symmetry_breaker.cpp b/src/theory/uf/symmetry_breaker.cpp
new file mode 100644
index 0000000..ca72846
--- /dev/null
+++ b/src/theory/uf/symmetry_breaker.cpp
@@ -0,0 +1,801 @@
+/*********************                                                        */
+/*! \file symmetry_breaker.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of algorithm suggested by Deharbe, Fontaine,
+ ** Merz, and Paleo, "Exploiting symmetry in SMT problems," CADE 2011
+ **
+ ** Implementation of algorithm suggested by Deharbe, Fontaine, Merz,
+ ** and Paleo, "Exploiting symmetry in SMT problems," CADE 2011.
+ **
+ ** From the paper:
+ **
+ ** <pre>
+ **   \f$ P := guess\_permutations(\phi) \f$
+ **   foreach \f$ {c_0, ..., c_n} \in P \f$ do
+ **     if \f$ invariant\_by\_permutations(\phi, {c_0, ..., c_n}) \f$ then
+ **       T := \f$ select\_terms(\phi, {c_0, ..., c_n}) \f$
+ **       cts := \f$ \emptyset \f$
+ **       while T != \f$ \empty \wedge |cts| <= n \f$ do
+ **         \f$ t := select\_most\_promising\_term(T, \phi) \f$
+ **         \f$ T := T \setminus {t} \f$
+ **         cts := cts \f$ \cup used\_in(t, {c_0, ..., c_n}) \f$
+ **         let \f$ c \in {c_0, ..., c_n} \setminus cts \f$
+ **         cts := cts \f$ \cup {c} \f$
+ **         if cts != \f$ {c_0, ..., c_n} \f$ then
+ **           \f$ \phi := \phi \wedge ( \vee_{c_i \in cts} t = c_i ) \f$
+ **         end
+ **       end
+ **     end
+ **   end
+ **   return \f$ \phi \f$
+ ** </pre>
+ **/
+
+#include "theory/uf/symmetry_breaker.h"
+#include "theory/rewriter.h"
+#include "util/hash.h"
+
+#include <iterator>
+#include <queue>
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace uf {
+
+using namespace ::CVC4::context;
+
+SymmetryBreaker::Template::Template() :
+  d_template(),
+  d_sets(),
+  d_reps() {
+}
+
+TNode SymmetryBreaker::Template::find(TNode n) {
+  hash_map<TNode, TNode, TNodeHashFunction>::iterator i = d_reps.find(n);
+  if(i == d_reps.end()) {
+    return n;
+  } else {
+    return d_reps[n] = find((*i).second);
+  }
+}
+
+bool SymmetryBreaker::Template::matchRecursive(TNode t, TNode n) {
+  IndentedScope scope(Debug("ufsymm:match"));
+
+  Debug("ufsymm:match") << "UFSYMM matching " << t << endl
+                        << "UFSYMM       to " << n << endl;
+
+  if(t.getKind() != n.getKind() || t.getNumChildren() != n.getNumChildren()) {
+    Debug("ufsymm:match") << "UFSYMM BAD MATCH on kind, #children" << endl;
+    return false;
+  }
+
+  if(t.getNumChildren() == 0) {
+    if(t.isConst()) {
+      Assert(n.isConst());
+      Debug("ufsymm:match") << "UFSYMM we have constants, failing match" << endl;
+      return false;
+    }
+    Assert(t.isVar() &&
+           n.isVar());
+    t = find(t);
+    n = find(n);
+    Debug("ufsymm:match") << "UFSYMM variable match " << t << " , " << n << endl;
+    Debug("ufsymm:match") << "UFSYMM sets: " << t << " =>";
+    if(d_sets.find(t) != d_sets.end()) {
+      for(set<TNode>::iterator i = d_sets[t].begin(); i != d_sets[t].end(); ++i) {
+        Debug("ufsymm:match") << " " << *i;
+      }
+    }
+    Debug("ufsymm:match") << endl;
+    if(t != n) {
+      Debug("ufsymm:match") << "UFSYMM sets: " << n << " =>";
+      if(d_sets.find(n) != d_sets.end()) {
+        for(set<TNode>::iterator i = d_sets[n].begin(); i != d_sets[n].end(); ++i) {
+          Debug("ufsymm:match") << " " << *i;
+        }
+      }
+      Debug("ufsymm:match") << endl;
+
+      if(d_sets.find(t) == d_sets.end()) {
+        Debug("ufsymm:match") << "UFSYMM inserting " << t << " in with " << n << endl;
+        d_reps[t] = n;
+        d_sets[n].insert(t);
+      } else {
+        if(d_sets.find(n) != d_sets.end()) {
+          Debug("ufsymm:match") << "UFSYMM merging " << n << " and " << t << " in with " << n << endl;
+          d_sets[n].insert(d_sets[t].begin(), d_sets[t].end());
+          d_sets[n].insert(t);
+          d_reps[t] = n;
+          d_sets.erase(t);
+        } else {
+          Debug("ufsymm:match") << "UFSYMM inserting " << n << " in with " << t << endl;
+          d_sets[t].insert(n);
+          d_reps[n] = t;
+        }
+      }
+    }
+    return true;
+  }
+
+  if(t.getMetaKind() == kind::metakind::PARAMETERIZED) {
+    if(t.getOperator() != n.getOperator()) {
+      Debug("ufsymm:match") << "UFSYMM BAD MATCH on operators: " << t.getOperator() << " != " << n.getOperator() << endl;
+      return false;
+    }
+  }
+  TNode::iterator ti = t.begin();
+  TNode::iterator ni = n.begin();
+  while(ti != t.end()) {
+    if(*ti != *ni) { // nothing to do if equal
+      if(!matchRecursive(*ti, *ni)) {
+        Debug("ufsymm:match") << "UFSYMM BAD MATCH, withdrawing.." << endl;
+        return false;
+      }
+    }
+    ++ti;
+    ++ni;
+  }
+
+  return true;
+}
+
+bool SymmetryBreaker::Template::match(TNode n) {
+  // try to "match" n and d_template
+  if(d_template.isNull()) {
+    Debug("ufsymm") << "UFSYMM setting template " << n << endl;
+    d_template = n;
+    return true;
+  } else {
+    return matchRecursive(d_template, n);
+  }
+}
+
+void SymmetryBreaker::Template::reset() {
+  d_template = Node::null();
+  d_sets.clear();
+  d_reps.clear();
+}
+
+SymmetryBreaker::SymmetryBreaker(context::Context* context,
+                                 std::string name) :
+  ContextNotifyObj(context),
+  d_assertionsToRerun(context),
+  d_rerunningAssertions(false),
+  d_phi(),
+  d_phiSet(),
+  d_permutations(),
+  d_terms(),
+  d_template(),
+  d_normalizationCache(),
+  d_termEqs(),
+  d_termEqsOnly(),
+  d_name(name),
+  d_stats(d_name)
+{
+}
+
+class SBGuard {
+  bool& d_ref;
+  bool d_old;
+public:
+  SBGuard(bool& b) : d_ref(b), d_old(b) {}
+  ~SBGuard() { Debug("uf") << "reset to " << d_old << std::endl; d_ref = d_old; }
+};/* class SBGuard */
+
+void SymmetryBreaker::rerunAssertionsIfNecessary() {
+  if(d_rerunningAssertions || !d_phi.empty() || d_assertionsToRerun.empty()) {
+    return;
+  }
+
+  SBGuard g(d_rerunningAssertions);
+  d_rerunningAssertions = true;
+
+  Debug("ufsymm") << "UFSYMM: rerunning assertions..." << std::endl;
+  for(CDList<Node>::const_iterator i = d_assertionsToRerun.begin();
+      i != d_assertionsToRerun.end();
+      ++i) {
+    assertFormula(*i);
+  }
+  Debug("ufsymm") << "UFSYMM: DONE rerunning assertions..." << std::endl;
+}
+
+Node SymmetryBreaker::norm(TNode phi) {
+  Node n = Rewriter::rewrite(phi);
+  return normInternal(n, 0);
+}
+
+Node SymmetryBreaker::normInternal(TNode n, size_t level) {
+  Node& result = d_normalizationCache[n];
+  if(!result.isNull()) {
+    return result;
+  }
+
+  switch(Kind k = n.getKind()) {
+
+  case kind::DISTINCT: {
+    // commutative N-ary operator handling
+    vector<TNode> kids(n.begin(), n.end());
+    sort(kids.begin(), kids.end());
+    return result = NodeManager::currentNM()->mkNode(k, kids);
+  }
+
+  case kind::AND: {
+    // commutative+associative N-ary operator handling
+    vector<Node> kids;
+    kids.reserve(n.getNumChildren());
+    queue<TNode> work;
+    work.push(n);
+    Debug("ufsymm:norm") << "UFSYMM processing " << n << endl;
+    do {
+      TNode m = work.front();
+      work.pop();
+      for(TNode::iterator i = m.begin(); i != m.end(); ++i) {
+        if((*i).getKind() == k) {
+          work.push(*i);
+        } else {
+          if( (*i).getKind() == kind::OR ) {
+            kids.push_back(normInternal(*i, level));
+          } else if((*i).getKind() == kind::EQUAL) {
+            kids.push_back(normInternal(*i, level));
+            if((*i)[0].isVar() ||
+               (*i)[1].isVar()) {
+              d_termEqs[(*i)[0]].insert((*i)[1]);
+              d_termEqs[(*i)[1]].insert((*i)[0]);
+              if(level == 0) {
+                d_termEqsOnly[(*i)[0]].insert((*i)[1]);
+                d_termEqsOnly[(*i)[1]].insert((*i)[0]);
+                Debug("ufsymm:eq") << "UFSYMM " << (*i)[0] << " <==> " << (*i)[1] << endl;
+              }
+            }
+          } else {
+            kids.push_back(*i);
+          }
+        }
+      }
+    } while(!work.empty());
+    Debug("ufsymm:norm") << "UFSYMM got " << kids.size() << " kids for the " << k << "-kinded Node" << endl;
+    sort(kids.begin(), kids.end());
+    return result = NodeManager::currentNM()->mkNode(k, kids);
+  }
+
+  case kind::OR: {
+    // commutative+associative N-ary operator handling
+    vector<Node> kids;
+    kids.reserve(n.getNumChildren());
+    queue<TNode> work;
+    work.push(n);
+    Debug("ufsymm:norm") << "UFSYMM processing " << n << endl;
+    TNode matchingTerm = TNode::null();
+    vector<TNode> matchingTermEquals;
+    bool first = true, matchedVar = false;
+    do {
+      TNode m = work.front();
+      work.pop();
+      for(TNode::iterator i = m.begin(); i != m.end(); ++i) {
+        if((*i).getKind() == k) {
+          work.push(*i);
+        } else {
+          if( (*i).getKind() == kind::AND ) {
+            first = false;
+            matchingTerm = TNode::null();
+            kids.push_back(normInternal(*i, level + 1));
+          } else if((*i).getKind() == kind::EQUAL) {
+            kids.push_back(normInternal(*i, level + 1));
+            if((*i)[0].isVar() ||
+               (*i)[1].isVar()) {
+              d_termEqs[(*i)[0]].insert((*i)[1]);
+              d_termEqs[(*i)[1]].insert((*i)[0]);
+              if(level == 0) {
+                if(first) {
+                  matchingTerm = *i;
+                } else if(!matchingTerm.isNull()) {
+                  if(matchedVar) {
+                    if(matchingTerm == (*i)[0]) {
+                      matchingTermEquals.push_back((*i)[1]);
+                    } else if(matchingTerm == (*i)[1]) {
+                      matchingTermEquals.push_back((*i)[0]);
+                    } else {
+                      matchingTerm = TNode::null();
+                    }
+                  } else if((*i)[0] == matchingTerm[0]) {
+                    matchingTermEquals.push_back(matchingTerm[1]);
+                    matchingTermEquals.push_back((*i)[1]);
+                    matchingTerm = matchingTerm[0];
+                    matchedVar = true;
+                  } else if((*i)[1] == matchingTerm[0]) {
+                    matchingTermEquals.push_back(matchingTerm[1]);
+                    matchingTermEquals.push_back((*i)[0]);
+                    matchingTerm = matchingTerm[0];
+                    matchedVar = true;
+                  } else if((*i)[0] == matchingTerm[1]) {
+                    matchingTermEquals.push_back(matchingTerm[0]);
+                    matchingTermEquals.push_back((*i)[1]);
+                    matchingTerm = matchingTerm[1];
+                    matchedVar = true;
+                  } else if((*i)[1] == matchingTerm[1]) {
+                    matchingTermEquals.push_back(matchingTerm[0]);
+                    matchingTermEquals.push_back((*i)[0]);
+                    matchingTerm = matchingTerm[1];
+                    matchedVar = true;
+                  } else {
+                    matchingTerm = TNode::null();
+                  }
+                }
+              }
+            } else {
+              matchingTerm = TNode::null();
+            }
+            first = false;
+          } else {
+            first = false;
+            matchingTerm = TNode::null();
+            kids.push_back(*i);
+          }
+        }
+      }
+    } while(!work.empty());
+    if(!matchingTerm.isNull()) {
+      if(Debug.isOn("ufsymm:eq")) {
+        Debug("ufsymm:eq") << "UFSYMM here we can conclude that " << matchingTerm << " is one of {";
+        for(vector<TNode>::const_iterator i = matchingTermEquals.begin(); i != matchingTermEquals.end(); ++i) {
+          Debug("ufsymm:eq") << " " << *i;
+        }
+        Debug("ufsymm:eq") << " }" << endl;
+      }
+      d_termEqsOnly[matchingTerm].insert(matchingTermEquals.begin(), matchingTermEquals.end());
+    }
+    Debug("ufsymm:norm") << "UFSYMM got " << kids.size() << " kids for the " << k << "-kinded Node" << endl;
+    sort(kids.begin(), kids.end());
+    return result = NodeManager::currentNM()->mkNode(k, kids);
+  }
+  
+  case kind::EQUAL:
+    if(n[0].isVar() ||
+       n[1].isVar()) {
+      d_termEqs[n[0]].insert(n[1]);
+      d_termEqs[n[1]].insert(n[0]);
+      if(level == 0) {
+        d_termEqsOnly[n[0]].insert(n[1]);
+        d_termEqsOnly[n[1]].insert(n[0]);
+        Debug("ufsymm:eq") << "UFSYMM " << n[0] << " <==> " << n[1] << endl;
+      }
+    }
+    /* intentional fall-through! */
+  case kind::XOR:
+    // commutative binary operator handling
+    return n[1] < n[0] ? NodeManager::currentNM()->mkNode(k, n[1], n[0]) : Node(n);
+
+  default:
+    // Normally T-rewriting is enough; only special cases (like
+    // Boolean-layer stuff) has to go above.
+    return n;
+  }
+}
+
+void SymmetryBreaker::assertFormula(TNode phi) {
+  rerunAssertionsIfNecessary();
+  if(!d_rerunningAssertions) {
+    d_assertionsToRerun.push_back(phi);
+  }
+  // use d_phi, put into d_permutations
+  Debug("ufsymm") << "UFSYMM assertFormula(): phi is " << phi << endl;
+  d_phi.push_back(phi);
+  if(phi.getKind() == kind::OR) {
+    Template t;
+    Node::iterator i = phi.begin();
+    t.match(*i++);
+    while(i != phi.end()) {
+      if(!t.match(*i++)) {
+        break;
+      }
+    }
+    hash_map<TNode, set<TNode>, TNodeHashFunction>& ps = t.partitions();
+    for(hash_map<TNode, set<TNode>, TNodeHashFunction>::iterator i = ps.begin();
+        i != ps.end();
+        ++i) {
+      Debug("ufsymm") << "UFSYMM partition*: " << (*i).first;
+      set<TNode>& p = (*i).second;
+      for(set<TNode>::iterator j = p.begin();
+          j != p.end();
+          ++j) {
+        Debug("ufsymm") << " " << *j;
+      }
+      Debug("ufsymm") << endl;
+      p.insert((*i).first);
+      Permutations::iterator pi = d_permutations.find(p);
+      if(pi == d_permutations.end()) {
+        d_permutations.insert(p);
+      }
+    }
+  }
+  if(!d_template.match(phi)) {
+    // we hit a bad match, extract the partitions and reset the template
+    hash_map<TNode, set<TNode>, TNodeHashFunction>& ps = d_template.partitions();
+    Debug("ufsymm") << "UFSYMM hit a bad match---have " << ps.size() << " partitions:" << endl;
+    for(hash_map<TNode, set<TNode>, TNodeHashFunction>::iterator i = ps.begin();
+        i != ps.end();
+        ++i) {
+      Debug("ufsymm") << "UFSYMM partition: " << (*i).first;
+      set<TNode>& p = (*i).second;
+      if(Debug.isOn("ufsymm")) {
+        for(set<TNode>::iterator j = p.begin();
+            j != p.end();
+            ++j) {
+          Debug("ufsymm") << " " << *j;
+        }
+      }
+      Debug("ufsymm") << endl;
+      p.insert((*i).first);
+      d_permutations.insert(p);
+    }
+    d_template.reset();
+    bool good CVC4_UNUSED = d_template.match(phi);
+    Assert(good);
+  }
+}
+
+void SymmetryBreaker::clear() {
+  d_phi.clear();
+  d_phiSet.clear();
+  d_permutations.clear();
+  d_terms.clear();
+  d_template.reset();
+  d_normalizationCache.clear();
+  d_termEqs.clear();
+  d_termEqsOnly.clear();
+}
+
+void SymmetryBreaker::apply(std::vector<Node>& newClauses) {
+  rerunAssertionsIfNecessary();
+  guessPermutations();
+  Debug("ufsymm") << "UFSYMM =====================================================" << endl
+                  << "UFSYMM have " << d_permutations.size() << " permutation sets" << endl;
+  if(!d_permutations.empty()) {
+    { TimerStat::CodeTimer codeTimer(d_stats.d_initNormalizationTimer);
+      // normalize d_phi
+
+      for(vector<Node>::iterator i = d_phi.begin(); i != d_phi.end(); ++i) {
+        Node n = *i;
+        *i = norm(n);
+        d_phiSet.insert(*i);
+        Debug("ufsymm:norm") << "UFSYMM init-norm-rewrite " << n << endl
+                             << "UFSYMM                to " << *i << endl;
+      }
+    }
+
+    for(Permutations::iterator i = d_permutations.begin();
+        i != d_permutations.end();
+        ++i) {
+      ++(d_stats.d_permutationSetsConsidered);
+      const Permutation& p = *i;
+      Debug("ufsymm") << "UFSYMM looking at permutation: " << p << endl;
+      size_t n = p.size() - 1;
+      if(invariantByPermutations(p)) {
+        ++(d_stats.d_permutationSetsInvariant);
+        selectTerms(p);
+        set<Node> cts;
+        while(!d_terms.empty() && cts.size() <= n) {
+          Debug("ufsymm") << "UFSYMM ==== top of loop, d_terms.size() == " << d_terms.size() << " , cts.size() == " << cts.size() << " , n == " << n << endl;
+          Terms::iterator ti = selectMostPromisingTerm(d_terms);
+          Node t = *ti;
+          Debug("ufsymm") << "UFSYMM promising term is " << t << endl;
+          d_terms.erase(ti);
+          insertUsedIn(t, p, cts);
+          if(Debug.isOn("ufsymm")) {
+            if(cts.empty()) {
+              Debug("ufsymm") << "UFSYMM cts is empty" << endl;
+            } else {
+              for(set<Node>::iterator ctsi = cts.begin(); ctsi != cts.end(); ++ctsi) {
+                Debug("ufsymm") << "UFSYMM cts: " << *ctsi << endl;
+              }
+            }
+          }
+          TNode c;
+          Debug("ufsymm") << "UFSYMM looking for c \\in " << p << " \\ cts" << endl;
+          set<TNode>::const_iterator i;
+          for(i = p.begin(); i != p.end(); ++i) {
+            if(cts.find(*i) == cts.end()) {
+              if(c.isNull()) {
+                c = *i;
+                Debug("ufsymm") << "UFSYMM found first: " << c << endl;
+              } else {
+                Debug("ufsymm") << "UFSYMM found second: " << *i << endl;
+                break;
+              }
+            }
+          }
+          if(c.isNull()) {
+            Debug("ufsymm") << "UFSYMM can't find a c, restart outer loop" << endl;
+            break;
+          }
+          Debug("ufsymm") << "UFSYMM inserting into cts: " << c << endl;
+          cts.insert(c);
+          // This tests cts != p: if "i == p.end()", we got all the way
+          // through p without seeing two elements not in cts (on the
+          // second one, we break from the above loop).  We know we
+          // found at least one (and subsequently added it to cts).  So
+          // now cts == p.
+          Debug("ufsymm") << "UFSYMM p == " << p << endl;
+          if(i != p.end() || p.size() != cts.size()) {
+            Debug("ufsymm") << "UFSYMM cts != p" << endl;
+            NodeBuilder<> disj(kind::OR);
+            for(set<Node>::const_iterator i = cts.begin();
+                i != cts.end();
+                ++i) {
+              if(t != *i) {
+                disj << NodeManager::currentNM()->mkNode(kind::EQUAL, t, *i);
+              }
+            }
+            Node d;
+            if(disj.getNumChildren() > 1) {
+              d = disj;
+              ++(d_stats.d_clauses);
+            } else {
+              d = disj[0];
+              disj.clear();
+              ++(d_stats.d_units);
+            }
+            if(Debug.isOn("ufsymm")) {
+              Debug("ufsymm") << "UFSYMM symmetry-breaking clause: " << d << endl;
+            } else {
+              Debug("ufsymm:clauses") << "UFSYMM symmetry-breaking clause: " << d << endl;
+            }
+            newClauses.push_back(d);
+          } else {
+            Debug("ufsymm") << "UFSYMM cts == p" << endl;
+          }
+          Debug("ufsymm") << "UFSYMM ==== end of loop, d_terms.size() == " << d_terms.size() << " , cts.size() == " << cts.size() << " , n == " << n << endl;
+        }
+      }
+    }
+  }
+
+  clear();
+}
+
+void SymmetryBreaker::guessPermutations() {
+  // use d_phi, put into d_permutations
+  Debug("ufsymm") << "UFSYMM guessPermutations()" << endl;
+}
+
+bool SymmetryBreaker::invariantByPermutations(const Permutation& p) {
+  TimerStat::CodeTimer codeTimer(d_stats.d_invariantByPermutationsTimer);
+
+  // use d_phi
+  Debug("ufsymm") << "UFSYMM invariantByPermutations()? " << p << endl;
+
+  Assert(p.size() > 1);
+
+  // check that the types match
+  Permutation::iterator permIt = p.begin();
+  TypeNode type = (*permIt++).getType();
+  do {
+    if(type != (*permIt++).getType()) {
+      Debug("ufsymm") << "UFSYMM types don't match, aborting.." << endl;
+      return false;
+    }
+  } while(permIt != p.end());
+
+  // check P_swap
+  vector<Node> subs;
+  vector<Node> repls;
+  Permutation::iterator i = p.begin();
+  TNode p0 = *i++;
+  TNode p1 = *i;
+  subs.push_back(p0);
+  subs.push_back(p1);
+  repls.push_back(p1);
+  repls.push_back(p0);
+  for(vector<Node>::iterator i = d_phi.begin(); i != d_phi.end(); ++i) {
+    Node s = (*i).substitute(subs.begin(), subs.end(), repls.begin(), repls.end());
+    Node n = norm(s);
+    if(*i != n && d_phiSet.find(n) == d_phiSet.end()) {
+      Debug("ufsymm") << "UFSYMM P_swap is NOT an inv perm op for " << p << endl
+                      << "UFSYMM because this node: " << *i << endl
+                      << "UFSYMM rewrite-norms to : " << n << endl
+                      << "UFSYMM which is not in our set of normalized assertions" << endl;
+      return false;
+    } else if(Debug.isOn("ufsymm:p")) {
+      if(*i == s) {
+        Debug("ufsymm:p") << "UFSYMM P_swap passes trivially: " << *i << endl;
+      } else {
+        Debug("ufsymm:p") << "UFSYMM P_swap passes: " << *i << endl
+                          << "UFSYMM      rewrites: " << s << endl
+                          << "UFSYMM         norms: " << n << endl;
+      }
+    }
+  }
+  Debug("ufsymm") << "UFSYMM P_swap is an inv perm op for " << p << endl;
+
+  // check P_circ, unless size == 2 in which case P_circ == P_swap
+  if(p.size() > 2) {
+    subs.clear();
+    repls.clear();
+    bool first = true;
+    for(Permutation::const_iterator i = p.begin(); i != p.end(); ++i) {
+      subs.push_back(*i);
+      if(!first) {
+        repls.push_back(*i);
+      } else {
+        first = false;
+      }
+    }
+    repls.push_back(*p.begin());
+    Assert(subs.size() == repls.size());
+    for(vector<Node>::iterator i = d_phi.begin(); i != d_phi.end(); ++i) {
+      Node s = (*i).substitute(subs.begin(), subs.end(), repls.begin(), repls.end());
+      Node n = norm(s);
+      if(*i != n && d_phiSet.find(n) == d_phiSet.end()) {
+        Debug("ufsymm") << "UFSYMM P_circ is NOT an inv perm op for " << p << endl
+                        << "UFSYMM because this node: " << *i << endl
+                        << "UFSYMM rewrite-norms to : " << n << endl
+                        << "UFSYMM which is not in our set of normalized assertions" << endl;
+        return false;
+      } else if(Debug.isOn("ufsymm:p")) {
+        if(*i == s) {
+          Debug("ufsymm:p") << "UFSYMM P_circ passes trivially: " << *i << endl;
+        } else {
+          Debug("ufsymm:p") << "UFSYMM P_circ passes: " << *i << endl
+                            << "UFSYMM      rewrites: " << s << endl
+                            << "UFSYMM         norms: " << n << endl;
+        }
+      }
+    }
+    Debug("ufsymm") << "UFSYMM P_circ is an inv perm op for " << p << endl;
+  } else {
+    Debug("ufsymm") << "UFSYMM no need to check P_circ, since P_circ == P_swap for perm sets of size 2" << endl;
+  }
+
+  return true;
+}
+
+// debug-assertion-only function
+template <class T1, class T2>
+static bool isSubset(const T1& s, const T2& t) {
+  if(s.size() > t.size()) {
+    //Debug("ufsymm") << "DEBUG ASSERTION FAIL: s not a subset of t "
+    //                << "because size(s) > size(t)" << endl;
+    return false;
+  }
+  for(typename T1::const_iterator si = s.begin(); si != s.end(); ++si) {
+    if(t.find(*si) == t.end()) {
+      //Debug("ufsymm") << "DEBUG ASSERTION FAIL: s not a subset of t "
+      //                << "because s element \"" << *si << "\" not in t" << endl;
+      return false;
+    }
+  }
+
+  // At this point, didn't find any elements from s not in t, so
+  // conclude that s \subseteq t
+  return true;
+}
+
+void SymmetryBreaker::selectTerms(const Permutation& p) {
+  TimerStat::CodeTimer codeTimer(d_stats.d_selectTermsTimer);
+
+  // use d_phi, put into d_terms
+  Debug("ufsymm") << "UFSYMM selectTerms(): " << p << endl;
+  d_terms.clear();
+  set<Node> terms;
+  for(Permutation::iterator i = p.begin(); i != p.end(); ++i) {
+    const TermEq& teq = d_termEqs[*i];
+    for(TermEq::const_iterator j = teq.begin(); j != teq.end(); ++j) {
+      Debug("ufsymm") << "selectTerms: insert in terms " << *j << std::endl;
+    }
+    terms.insert(teq.begin(), teq.end());
+  }
+  for(set<Node>::iterator i = terms.begin(); i != terms.end(); ++i) {
+    if(d_termEqsOnly.find(*i) != d_termEqsOnly.end()) {
+      const TermEq& teq = d_termEqsOnly[*i];
+      if(isSubset(teq, p)) {
+        Debug("ufsymm") << "selectTerms: teq = {";
+        for(TermEq::const_iterator j = teq.begin(); j != teq.end(); ++j) {
+          Debug("ufsymm") << " " << *j << std::endl;
+        }
+        Debug("ufsymm") << " } is subset of p " << p << std::endl;
+        d_terms.insert(d_terms.end(), *i);
+      } else {
+        if(Debug.isOn("ufsymm")) {
+          Debug("ufsymm") << "UFSYMM selectTerms() threw away candidate: " << *i << endl;
+          Debug("ufsymm:eq") << "UFSYMM selectTerms() #teq == " << teq.size() << " #p == " << p.size() << endl;
+          TermEq::iterator j;
+          for(j = teq.begin(); j != teq.end(); ++j) {
+            Debug("ufsymm:eq") << "UFSYMM              -- teq " << *j << " in " << p << " ?" << endl;
+            if(p.find(*j) == p.end()) {
+              Debug("ufsymm") << "UFSYMM              -- because its teq " << *j
+                              << " isn't in " << p << endl;
+              break;
+            } else {
+              Debug("ufsymm:eq") << "UFSYMM              -- yep" << endl;
+            }
+          }
+          Assert(j != teq.end(), "failed to find a difference between p and teq ?!");
+        }
+      }
+    } else {
+      Debug("ufsymm") << "selectTerms: don't have data for " << *i << " so can't conclude anything" << endl;
+    }
+  }
+  if(Debug.isOn("ufsymm")) {
+    for(list<Term>::iterator i = d_terms.begin(); i != d_terms.end(); ++i) {
+      Debug("ufsymm") << "UFSYMM selectTerms() returning: " << *i << endl;
+    }
+  }
+}
+
+SymmetryBreaker::Statistics::Statistics(std::string name)
+  : d_clauses(name + "theory::uf::symmetry_breaker::clauses", 0)
+  , d_units(name + "theory::uf::symmetry_breaker::units", 0)
+  , d_permutationSetsConsidered(name + "theory::uf::symmetry_breaker::permutationSetsConsidered", 0)
+  , d_permutationSetsInvariant(name + "theory::uf::symmetry_breaker::permutationSetsInvariant", 0)
+  , d_invariantByPermutationsTimer(name + "theory::uf::symmetry_breaker::timers::invariantByPermutations")
+  , d_selectTermsTimer(name + "theory::uf::symmetry_breaker::timers::selectTerms")
+  , d_initNormalizationTimer(name + "theory::uf::symmetry_breaker::timers::initNormalization")
+{
+  smtStatisticsRegistry()->registerStat(&d_clauses);
+  smtStatisticsRegistry()->registerStat(&d_units);
+  smtStatisticsRegistry()->registerStat(&d_permutationSetsConsidered);
+  smtStatisticsRegistry()->registerStat(&d_permutationSetsInvariant);
+  smtStatisticsRegistry()->registerStat(&d_invariantByPermutationsTimer);
+  smtStatisticsRegistry()->registerStat(&d_selectTermsTimer);
+  smtStatisticsRegistry()->registerStat(&d_initNormalizationTimer);
+}
+
+SymmetryBreaker::Statistics::~Statistics()
+{
+  smtStatisticsRegistry()->unregisterStat(&d_clauses);
+  smtStatisticsRegistry()->unregisterStat(&d_units);
+  smtStatisticsRegistry()->unregisterStat(&d_permutationSetsConsidered);
+  smtStatisticsRegistry()->unregisterStat(&d_permutationSetsInvariant);
+  smtStatisticsRegistry()->unregisterStat(&d_invariantByPermutationsTimer);
+  smtStatisticsRegistry()->unregisterStat(&d_selectTermsTimer);
+  smtStatisticsRegistry()->unregisterStat(&d_initNormalizationTimer);
+}
+
+SymmetryBreaker::Terms::iterator
+SymmetryBreaker::selectMostPromisingTerm(Terms& terms) {
+  // use d_phi
+  Debug("ufsymm") << "UFSYMM selectMostPromisingTerm()" << endl;
+  return terms.begin();
+}
+
+void SymmetryBreaker::insertUsedIn(Term term, const Permutation& p, set<Node>& cts) {
+  // insert terms from p used in term into cts
+  //Debug("ufsymm") << "UFSYMM usedIn(): " << term << " , " << p << endl;
+  if (p.find(term) != p.end()) {
+    cts.insert(term);
+  } else {
+    for(TNode::iterator i = term.begin(); i != term.end(); ++i) {
+      insertUsedIn(*i, p, cts);
+    }
+  }
+}
+
+}/* CVC4::theory::uf namespace */
+}/* CVC4::theory namespace */
+
+std::ostream& operator<<(std::ostream& out, const theory::uf::SymmetryBreaker::Permutation& p) {
+  out << "{";
+  set<TNode>::const_iterator i = p.begin();
+  while(i != p.end()) {
+    out << *i;
+    if(++i != p.end()) {
+      out << ",";
+    }
+  }
+  out << "}";
+  return out;
+}
+
+}/* CVC4 namespace */
diff --git a/src/theory/uf/symmetry_breaker.h b/src/theory/uf/symmetry_breaker.h
new file mode 100644
index 0000000..b706f34
--- /dev/null
+++ b/src/theory/uf/symmetry_breaker.h
@@ -0,0 +1,179 @@
+/*********************                                                        */
+/*! \file symmetry_breaker.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of algorithm suggested by Deharbe, Fontaine,
+ ** Merz, and Paleo, "Exploiting symmetry in SMT problems," CADE 2011
+ **
+ ** Implementation of algorithm suggested by Deharbe, Fontaine, Merz,
+ ** and Paleo, "Exploiting symmetry in SMT problems," CADE 2011.
+ **
+ ** From the paper:
+ **
+ ** <pre>
+ **   \f$ P := guess\_permutations(\phi) \f$
+ **   foreach \f$ {c_0, ..., c_n} \in P \f$ do
+ **     if \f$ invariant\_by\_permutations(\phi, {c_0, ..., c_n}) \f$ then
+ **       T := \f$ select\_terms(\phi, {c_0, ..., c_n}) \f$
+ **       cts := \f$ \emptyset \f$
+ **       while T != \f$ \empty \wedge |cts| <= n \f$ do
+ **         \f$ t := select\_most\_promising\_term(T, \phi) \f$
+ **         \f$ T := T \setminus {t} \f$
+ **         cts := cts \f$ \cup used\_in(t, {c_0, ..., c_n}) \f$
+ **         let \f$ c \in {c_0, ..., c_n} \setminus cts \f$
+ **         cts := cts \f$ \cup {c} \f$
+ **         if cts != \f$ {c_0, ..., c_n} \f$ then
+ **           \f$ \phi := \phi \wedge ( \vee_{c_i \in cts} t = c_i ) \f$
+ **         end
+ **       end
+ **     end
+ **   end
+ **   return \f$ \phi \f$
+ ** </pre>
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__UF__SYMMETRY_BREAKER_H
+#define __CVC4__THEORY__UF__SYMMETRY_BREAKER_H
+
+#include <iostream>
+#include <list>
+#include <vector>
+
+#include "context/cdlist.h"
+#include "context/context.h"
+#include "expr/node.h"
+#include "expr/node_builder.h"
+#include "smt/smt_statistics_registry.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+namespace theory {
+namespace uf {
+
+class SymmetryBreaker : public context::ContextNotifyObj {
+
+  class Template {
+    Node d_template;
+    NodeBuilder<> d_assertions;
+    std::hash_map<TNode, std::set<TNode>, TNodeHashFunction> d_sets;
+    std::hash_map<TNode, TNode, TNodeHashFunction> d_reps;
+
+    TNode find(TNode n);
+    bool matchRecursive(TNode t, TNode n);
+
+  public:
+    Template();
+    bool match(TNode n);
+    std::hash_map<TNode, std::set<TNode>, TNodeHashFunction>& partitions() { return d_sets; }
+    Node assertions() {
+      switch(d_assertions.getNumChildren()) {
+      case 0: return Node::null();
+      case 1: return d_assertions[0];
+      default: return Node(d_assertions);
+      }
+    }
+    void reset();
+  };/* class SymmetryBreaker::Template */
+
+public:
+
+  typedef std::set<TNode> Permutation;
+  typedef std::set<Permutation> Permutations;
+  typedef TNode Term;
+  typedef std::list<Term> Terms;
+  typedef std::set<Term> TermEq;
+  typedef std::hash_map<Term, TermEq, TNodeHashFunction> TermEqs;
+
+private:
+
+  /**
+   * This class wasn't initially built to be incremental.  It should
+   * be attached to a UserContext so that it clears everything when
+   * a pop occurs.  This "assertionsToRerun" is a set of assertions to
+   * feed back through assertFormula() when we started getting things
+   * again.  It's not just a matter of effectiveness, but also soundness;
+   * if some assertions (still in scope) are not seen by a symmetry-breaking
+   * round, then some symmetries that don't actually exist might be broken,
+   * leading to unsound results!
+   */
+  context::CDList<Node> d_assertionsToRerun;
+  bool d_rerunningAssertions;
+
+  std::vector<Node> d_phi;
+  std::set<TNode> d_phiSet;
+  Permutations d_permutations;
+  Terms d_terms;
+  Template d_template;
+  std::hash_map<Node, Node, NodeHashFunction> d_normalizationCache;
+  TermEqs d_termEqs;
+  TermEqs d_termEqsOnly;
+
+  void clear();
+  void rerunAssertionsIfNecessary();
+
+  void guessPermutations();
+  bool invariantByPermutations(const Permutation& p);
+  void selectTerms(const Permutation& p);
+  Terms::iterator selectMostPromisingTerm(Terms& terms);
+  void insertUsedIn(Term term, const Permutation& p, std::set<Node>& cts);
+  Node normInternal(TNode phi, size_t level);
+  Node norm(TNode n);
+
+  std::string d_name;
+  
+  // === STATISTICS ===
+  /** number of new clauses that come from the SymmetryBreaker */
+  struct Statistics {
+    /** number of new clauses that come from the SymmetryBreaker */
+    IntStat d_clauses;
+    IntStat d_units;
+    /** number of potential permutation sets we found */
+    IntStat d_permutationSetsConsidered;
+    /** number of invariant permutation sets we found */
+    IntStat d_permutationSetsInvariant;
+    /** time spent in invariantByPermutations() */
+    TimerStat d_invariantByPermutationsTimer;
+    /** time spent in selectTerms() */
+    TimerStat d_selectTermsTimer;
+    /** time spent in initial round of normalization */
+    TimerStat d_initNormalizationTimer;
+
+    Statistics(std::string name);
+    ~Statistics();
+  };
+
+  Statistics d_stats;
+
+protected:
+
+  void contextNotifyPop() {
+    Debug("ufsymm") << "UFSYMM: clearing state due to pop" << std::endl;
+    clear();
+  }
+
+public:
+
+  SymmetryBreaker(context::Context* context, std::string name = "");
+  ~SymmetryBreaker() throw() {}
+  void assertFormula(TNode phi);
+  void apply(std::vector<Node>& newClauses);
+
+};/* class SymmetryBreaker */
+
+}/* CVC4::theory::uf namespace */
+}/* CVC4::theory namespace */
+
+std::ostream& operator<<(std::ostream& out, const ::CVC4::theory::uf::SymmetryBreaker::Permutation& p);
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__UF__SYMMETRY_BREAKER_H */
diff --git a/src/theory/uf/theory_uf.cpp b/src/theory/uf/theory_uf.cpp
new file mode 100644
index 0000000..35aee53
--- /dev/null
+++ b/src/theory/uf/theory_uf.cpp
@@ -0,0 +1,574 @@
+/*********************                                                        */
+/*! \file theory_uf.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This is the interface to TheoryUF implementations
+ **
+ ** This is the interface to TheoryUF implementations.  All
+ ** implementations of TheoryUF should inherit from this class.
+ **/
+
+#include "theory/uf/theory_uf.h"
+
+#include "options/quantifiers_options.h"
+#include "options/smt_options.h"
+#include "options/uf_options.h"
+#include "proof/proof_manager.h"
+#include "proof/theory_proof.h"
+#include "proof/uf_proof.h"
+#include "theory/theory_model.h"
+#include "theory/type_enumerator.h"
+#include "theory/uf/theory_uf_strong_solver.h"
+#include "theory/quantifiers/term_database.h"
+#include "options/theory_options.h"
+
+using namespace std;
+
+namespace CVC4 {
+namespace theory {
+namespace uf {
+
+/** Constructs a new instance of TheoryUF w.r.t. the provided context.*/
+TheoryUF::TheoryUF(context::Context* c, context::UserContext* u,
+                   OutputChannel& out, Valuation valuation,
+                   const LogicInfo& logicInfo, std::string instanceName)
+    : Theory(THEORY_UF, c, u, out, valuation, logicInfo, instanceName),
+      d_notify(*this),
+      /* The strong theory solver can be notified by EqualityEngine::init(),
+       * so make sure it's initialized first. */
+      d_thss(NULL),
+      d_equalityEngine(d_notify, c, instanceName + "theory::uf::TheoryUF",
+                       true),
+      d_conflict(c, false),
+      d_literalsToPropagate(c),
+      d_literalsToPropagateIndex(c, 0),
+      d_functionsTerms(c),
+      d_symb(u, instanceName)
+{
+  // The kinds we are treating as function application in congruence
+  d_equalityEngine.addFunctionKind(kind::APPLY_UF);
+}
+
+TheoryUF::~TheoryUF() {
+  delete d_thss;
+}
+
+void TheoryUF::setMasterEqualityEngine(eq::EqualityEngine* eq) {
+  d_equalityEngine.setMasterEqualityEngine(eq);
+}
+
+void TheoryUF::finishInit() {
+  // initialize the strong solver
+  if (options::finiteModelFind() && options::ufssMode()!=UF_SS_NONE) {
+    d_thss = new StrongSolverTheoryUF(getSatContext(), getUserContext(), *d_out, this);
+  }
+}
+
+static Node mkAnd(const std::vector<TNode>& conjunctions) {
+  Assert(conjunctions.size() > 0);
+
+  std::set<TNode> all;
+  all.insert(conjunctions.begin(), conjunctions.end());
+
+  if (all.size() == 1) {
+    // All the same, or just one
+    return conjunctions[0];
+  }
+
+  NodeBuilder<> conjunction(kind::AND);
+  std::set<TNode>::const_iterator it = all.begin();
+  std::set<TNode>::const_iterator it_end = all.end();
+  while (it != it_end) {
+    conjunction << *it;
+    ++ it;
+  }
+
+  return conjunction;
+}/* mkAnd() */
+
+void TheoryUF::check(Effort level) {
+  if (done() && !fullEffort(level)) {
+    return;
+  }
+  getOutputChannel().spendResource(options::theoryCheckStep());
+  TimerStat::CodeTimer checkTimer(d_checkTime);
+
+  while (!done() && !d_conflict)
+  {
+    // Get all the assertions
+    Assertion assertion = get();
+    TNode fact = assertion.assertion;
+
+    Debug("uf") << "TheoryUF::check(): processing " << fact << std::endl;
+    Debug("uf") << "Term's theory: " << theory::Theory::theoryOf(fact.toExpr()) << std::endl;
+
+    if (d_thss != NULL) {
+      bool isDecision = d_valuation.isSatLiteral(fact) && d_valuation.isDecision(fact);
+      d_thss->assertNode(fact, isDecision);
+      if( d_thss->isConflict() ){
+        d_conflict = true;
+        return;
+      }
+    }
+
+    // Do the work
+    bool polarity = fact.getKind() != kind::NOT;
+    TNode atom = polarity ? fact : fact[0];
+    if (atom.getKind() == kind::EQUAL) {
+      d_equalityEngine.assertEquality(atom, polarity, fact);
+    } else if (atom.getKind() == kind::CARDINALITY_CONSTRAINT || atom.getKind() == kind::COMBINED_CARDINALITY_CONSTRAINT) {
+      if( d_thss == NULL ){
+        std::stringstream ss;
+        ss << "Cardinality constraint " << atom << " was asserted, but the logic does not allow it." << std::endl;
+        ss << "Try using a logic containing \"UFC\"." << std::endl;
+        throw Exception( ss.str() );
+      }
+      //needed for models
+      if( options::produceModels() && ( atom.getKind() == kind::COMBINED_CARDINALITY_CONSTRAINT || options::ufssMode()!=UF_SS_FULL ) ){
+        d_equalityEngine.assertPredicate(atom, polarity, fact);
+      }
+    } else {
+      d_equalityEngine.assertPredicate(atom, polarity, fact);
+    }
+  }
+
+  if(! d_conflict ){
+    if (d_thss != NULL) {
+      d_thss->check(level);
+      if( d_thss->isConflict() ){
+        d_conflict = true;
+      }
+    }
+  }
+}/* TheoryUF::check() */
+
+void TheoryUF::preRegisterTerm(TNode node) {
+  Debug("uf") << "TheoryUF::preRegisterTerm(" << node << ")" << std::endl;
+
+  if (d_thss != NULL) {
+    d_thss->preRegisterTerm(node);
+  }
+
+  switch (node.getKind()) {
+  case kind::EQUAL:
+    // Add the trigger for equality
+    d_equalityEngine.addTriggerEquality(node);
+    break;
+  case kind::APPLY_UF:
+    // Maybe it's a predicate
+    if (node.getType().isBoolean()) {
+      // Get triggered for both equal and dis-equal
+      d_equalityEngine.addTriggerPredicate(node);
+    } else {
+      // Function applications/predicates
+      d_equalityEngine.addTerm(node);
+    }
+    // Remember the function and predicate terms
+    d_functionsTerms.push_back(node);
+    break;
+  case kind::CARDINALITY_CONSTRAINT:
+  case kind::COMBINED_CARDINALITY_CONSTRAINT:
+    //do nothing
+    break;
+  default:
+    // Variables etc
+    d_equalityEngine.addTerm(node);
+    break;
+  }
+}/* TheoryUF::preRegisterTerm() */
+
+bool TheoryUF::propagate(TNode literal) {
+  Debug("uf::propagate") << "TheoryUF::propagate(" << literal  << ")" << std::endl;
+  // If already in conflict, no more propagation
+  if (d_conflict) {
+    Debug("uf::propagate") << "TheoryUF::propagate(" << literal << "): already in conflict" << std::endl;
+    return false;
+  }
+  // Propagate out
+  bool ok = d_out->propagate(literal);
+  if (!ok) {
+    d_conflict = true;
+  }
+  return ok;
+}/* TheoryUF::propagate(TNode) */
+
+void TheoryUF::propagate(Effort effort) {
+  //if (d_thss != NULL) {
+  //  return d_thss->propagate(effort);
+  //}
+}
+
+Node TheoryUF::getNextDecisionRequest( unsigned& priority ){
+  if (d_thss != NULL && !d_conflict) {
+    return d_thss->getNextDecisionRequest( priority );
+  }else{
+    return Node::null();
+  }
+}
+
+void TheoryUF::explain(TNode literal, std::vector<TNode>& assumptions, eq::EqProof* pf) {
+  // Do the work
+  bool polarity = literal.getKind() != kind::NOT;
+  TNode atom = polarity ? literal : literal[0];
+  if (atom.getKind() == kind::EQUAL) {
+    d_equalityEngine.explainEquality(atom[0], atom[1], polarity, assumptions, pf);
+  } else {
+    d_equalityEngine.explainPredicate(atom, polarity, assumptions, pf);
+  }
+  if( pf ){
+    Debug("pf::uf") << std::endl;
+    pf->debug_print("pf::uf");
+  }
+
+  Debug("pf::uf") << "UF: explain( " << literal << " ):" << std::endl << "\t";
+  for (unsigned i = 0; i < assumptions.size(); ++i) {
+    Debug("pf::uf") << assumptions[i] << " ";
+  }
+  Debug("pf::uf") << std::endl;
+}
+
+Node TheoryUF::explain(TNode literal) {
+  return explain(literal, NULL);
+}
+
+Node TheoryUF::explain(TNode literal, eq::EqProof* pf) {
+  Debug("uf") << "TheoryUF::explain(" << literal << ")" << std::endl;
+  std::vector<TNode> assumptions;
+  explain(literal, assumptions, pf);
+  return mkAnd(assumptions);
+}
+
+void TheoryUF::collectModelInfo( TheoryModel* m, bool fullModel ){
+  set<Node> termSet;
+
+  // Compute terms appearing in assertions and shared terms
+  computeRelevantTerms(termSet);
+
+  m->assertEqualityEngine( &d_equalityEngine, &termSet );
+  // if( fullModel ){
+  //   std::map< TypeNode, TypeEnumerator* > type_enums;
+  //   //must choose proper representatives
+  //   // for each equivalence class, specify fresh constant as representative
+  //   eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( &d_equalityEngine );
+  //   while( !eqcs_i.isFinished() ){
+  //     Node eqc = (*eqcs_i);
+  //     TypeNode tn = eqc.getType();
+  //     if( tn.isSort() ){
+  //       if( type_enums.find( tn )==type_enums.end() ){
+  //         type_enums[tn] = new TypeEnumerator( tn );
+  //       }
+  //       Node rep = *(*type_enums[tn]);
+  //       ++(*type_enums[tn]);
+  //       //specify the constant as the representative
+  //       m->assertEquality( eqc, rep, true );
+  //       m->assertRepresentative( rep );
+  //     }
+  //     ++eqcs_i;
+  //   }
+  // }
+}
+
+void TheoryUF::presolve() {
+  // TimerStat::CodeTimer codeTimer(d_presolveTimer);
+
+  Debug("uf") << "uf: begin presolve()" << endl;
+  if(options::ufSymmetryBreaker()) {
+    vector<Node> newClauses;
+    d_symb.apply(newClauses);
+    for(vector<Node>::const_iterator i = newClauses.begin();
+        i != newClauses.end();
+        ++i) {
+      Debug("uf") << "uf: generating a lemma: " << *i << std::endl;
+      d_out->lemma(*i);
+    }
+  }
+  if( d_thss ){
+    d_thss->presolve();
+  }
+  Debug("uf") << "uf: end presolve()" << endl;
+}
+
+void TheoryUF::ppStaticLearn(TNode n, NodeBuilder<>& learned) {
+  //TimerStat::CodeTimer codeTimer(d_staticLearningTimer);
+
+  vector<TNode> workList;
+  workList.push_back(n);
+  __gnu_cxx::hash_set<TNode, TNodeHashFunction> processed;
+
+  while(!workList.empty()) {
+    n = workList.back();
+
+    if(n.getKind() == kind::FORALL || n.getKind() == kind::EXISTS) {
+      // unsafe to go under quantifiers; we might pull bound vars out of scope!
+      processed.insert(n);
+      workList.pop_back();
+      continue;
+    }
+
+    bool unprocessedChildren = false;
+    for(TNode::iterator i = n.begin(), iend = n.end(); i != iend; ++i) {
+      if(processed.find(*i) == processed.end()) {
+        // unprocessed child
+        workList.push_back(*i);
+        unprocessedChildren = true;
+      }
+    }
+
+    if(unprocessedChildren) {
+      continue;
+    }
+
+    workList.pop_back();
+    // has node n been processed in the meantime ?
+    if(processed.find(n) != processed.end()) {
+      continue;
+    }
+    processed.insert(n);
+
+    // == DIAMONDS ==
+
+    Debug("diamonds") << "===================== looking at" << endl
+                      << n << endl;
+
+    // binary OR of binary ANDs of EQUALities
+    if(n.getKind() == kind::OR && n.getNumChildren() == 2 &&
+       n[0].getKind() == kind::AND && n[0].getNumChildren() == 2 &&
+       n[1].getKind() == kind::AND && n[1].getNumChildren() == 2 &&
+       (n[0][0].getKind() == kind::EQUAL) &&
+       (n[0][1].getKind() == kind::EQUAL) &&
+       (n[1][0].getKind() == kind::EQUAL) &&
+       (n[1][1].getKind() == kind::EQUAL)) {
+      // now we have (a = b && c = d) || (e = f && g = h)
+
+      Debug("diamonds") << "has form of a diamond!" << endl;
+
+      TNode
+        a = n[0][0][0], b = n[0][0][1],
+        c = n[0][1][0], d = n[0][1][1],
+        e = n[1][0][0], f = n[1][0][1],
+        g = n[1][1][0], h = n[1][1][1];
+
+      // test that one of {a, b} = one of {c, d}, and make "b" the
+      // shared node (i.e. put in the form (a = b && b = d))
+      // note we don't actually care about the shared ones, so the
+      // "swaps" below are one-sided, ignoring b and c
+      if(a == c) {
+        a = b;
+      } else if(a == d) {
+        a = b;
+        d = c;
+      } else if(b == c) {
+        // nothing to do
+      } else if(b == d) {
+        d = c;
+      } else {
+        // condition not satisfied
+        Debug("diamonds") << "+ A fails" << endl;
+        continue;
+      }
+
+      Debug("diamonds") << "+ A holds" << endl;
+
+      // same: one of {e, f} = one of {g, h}, and make "f" the
+      // shared node (i.e. put in the form (e = f && f = h))
+      if(e == g) {
+        e = f;
+      } else if(e == h) {
+        e = f;
+        h = g;
+      } else if(f == g) {
+        // nothing to do
+      } else if(f == h) {
+        h = g;
+      } else {
+        // condition not satisfied
+        Debug("diamonds") << "+ B fails" << endl;
+        continue;
+      }
+
+      Debug("diamonds") << "+ B holds" << endl;
+
+      // now we have (a = b && b = d) || (e = f && f = h)
+      // test that {a, d} == {e, h}
+      if( (a == e && d == h) ||
+          (a == h && d == e) ) {
+        // learn: n implies a == d
+        Debug("diamonds") << "+ C holds" << endl;
+        Node newEquality = a.eqNode(d);
+        Debug("diamonds") << "  ==> " << newEquality << endl;
+        learned << n.impNode(newEquality);
+      } else {
+        Debug("diamonds") << "+ C fails" << endl;
+      }
+    }
+  }
+
+  if(options::ufSymmetryBreaker()) {
+    d_symb.assertFormula(n);
+  }
+}/* TheoryUF::ppStaticLearn() */
+
+EqualityStatus TheoryUF::getEqualityStatus(TNode a, TNode b) {
+
+  // Check for equality (simplest)
+  if (d_equalityEngine.areEqual(a, b)) {
+    // The terms are implied to be equal
+    return EQUALITY_TRUE;
+  }
+
+  // Check for disequality
+  if (d_equalityEngine.areDisequal(a, b, false)) {
+    // The terms are implied to be dis-equal
+    return EQUALITY_FALSE;
+  }
+
+  // All other terms we interpret as dis-equal in the model
+  return EQUALITY_FALSE_IN_MODEL;
+}
+
+void TheoryUF::addSharedTerm(TNode t) {
+  Debug("uf::sharing") << "TheoryUF::addSharedTerm(" << t << ")" << std::endl;
+  d_equalityEngine.addTriggerTerm(t, THEORY_UF);
+}
+
+//TODO: move quantifiers::TermArgTrie to src/theory/
+void TheoryUF::addCarePairs( quantifiers::TermArgTrie * t1, quantifiers::TermArgTrie * t2, unsigned arity, unsigned depth ){
+  if( depth==arity ){
+    if( t2!=NULL ){
+      Node f1 = t1->getNodeData();
+      Node f2 = t2->getNodeData();
+      if( !d_equalityEngine.areEqual( f1, f2 ) ){
+        Debug("uf::sharing") << "TheoryUf::computeCareGraph(): checking function " << f1 << " and " << f2 << std::endl;
+        vector< pair<TNode, TNode> > currentPairs;
+        for (unsigned k = 0; k < f1.getNumChildren(); ++ k) {
+          TNode x = f1[k];
+          TNode y = f2[k];
+          Assert( d_equalityEngine.hasTerm(x) );
+          Assert( d_equalityEngine.hasTerm(y) );
+          Assert( !d_equalityEngine.areDisequal( x, y, false ) );
+          if( !d_equalityEngine.areEqual( x, y ) ){
+            if( d_equalityEngine.isTriggerTerm(x, THEORY_UF) && d_equalityEngine.isTriggerTerm(y, THEORY_UF) ){
+              TNode x_shared = d_equalityEngine.getTriggerTermRepresentative(x, THEORY_UF);
+              TNode y_shared = d_equalityEngine.getTriggerTermRepresentative(y, THEORY_UF);
+              EqualityStatus eqStatus = d_valuation.getEqualityStatus(x_shared, y_shared);
+              if( eqStatus==EQUALITY_FALSE_AND_PROPAGATED || eqStatus==EQUALITY_FALSE || eqStatus==EQUALITY_FALSE_IN_MODEL ){
+                //an argument is disequal, we are done
+                return;
+              }else{
+                currentPairs.push_back(make_pair(x_shared, y_shared));
+              }
+            }
+          }
+        }
+        for (unsigned c = 0; c < currentPairs.size(); ++ c) {
+          Debug("uf::sharing") << "TheoryUf::computeCareGraph(): adding to care-graph" << std::endl;
+          addCarePair(currentPairs[c].first, currentPairs[c].second);
+        }
+      }
+    }
+  }else{
+    if( t2==NULL ){
+      if( depth<(arity-1) ){
+        //add care pairs internal to each child
+        for( std::map< TNode, quantifiers::TermArgTrie >::iterator it = t1->d_data.begin(); it != t1->d_data.end(); ++it ){
+          addCarePairs( &it->second, NULL, arity, depth+1 );
+        }
+      }
+      //add care pairs based on each pair of non-disequal arguments
+      for( std::map< TNode, quantifiers::TermArgTrie >::iterator it = t1->d_data.begin(); it != t1->d_data.end(); ++it ){
+        std::map< TNode, quantifiers::TermArgTrie >::iterator it2 = it;
+        ++it2;
+        for( ; it2 != t1->d_data.end(); ++it2 ){
+          if( !d_equalityEngine.areDisequal(it->first, it2->first, false) ){
+            addCarePairs( &it->second, &it2->second, arity, depth+1 );
+          }
+        }
+      }
+    }else{
+      //add care pairs based on product of indices, non-disequal arguments
+      for( std::map< TNode, quantifiers::TermArgTrie >::iterator it = t1->d_data.begin(); it != t1->d_data.end(); ++it ){
+        for( std::map< TNode, quantifiers::TermArgTrie >::iterator it2 = t2->d_data.begin(); it2 != t2->d_data.end(); ++it2 ){
+          if( !d_equalityEngine.areDisequal(it->first, it2->first, false) ){
+            addCarePairs( &it->second, &it2->second, arity, depth+1 );
+          }
+        }
+      }
+    }
+  }
+}
+
+void TheoryUF::computeCareGraph() {
+
+  if (d_sharedTerms.size() > 0) {
+    //use term indexing
+    Debug("uf::sharing") << "TheoryUf::computeCareGraph(): Build term indices..." << std::endl;
+    std::map< Node, quantifiers::TermArgTrie > index;
+    std::map< Node, unsigned > arity;
+    unsigned functionTerms = d_functionsTerms.size();
+    for (unsigned i = 0; i < functionTerms; ++ i) {
+      TNode f1 = d_functionsTerms[i];
+      Node op = f1.getOperator();
+      std::vector< TNode > reps;
+      bool has_trigger_arg = false;
+      for( unsigned j=0; j<f1.getNumChildren(); j++ ){
+        reps.push_back( d_equalityEngine.getRepresentative( f1[j] ) );
+        if( d_equalityEngine.isTriggerTerm( f1[j], THEORY_UF ) ){
+          has_trigger_arg = true;
+        }
+      }
+      if( has_trigger_arg ){
+        index[op].addTerm( f1, reps );
+        arity[op] = reps.size();
+      }
+    }
+    //for each index
+    for( std::map< Node, quantifiers::TermArgTrie >::iterator itii = index.begin(); itii != index.end(); ++itii ){
+      Debug("uf::sharing") << "TheoryUf::computeCareGraph(): Process index " << itii->first << "..." << std::endl;
+      addCarePairs( &itii->second, NULL, arity[ itii->first ], 0 );
+    }
+  }
+}/* TheoryUF::computeCareGraph() */
+
+void TheoryUF::conflict(TNode a, TNode b) {
+  eq::EqProof* pf = d_proofsEnabled ? new eq::EqProof() : NULL;
+  d_conflictNode = explain(a.eqNode(b),pf);
+  ProofUF* puf = d_proofsEnabled ? new ProofUF( pf ) : NULL;
+  d_out->conflict(d_conflictNode, puf);
+  d_conflict = true;
+}
+
+void TheoryUF::eqNotifyNewClass(TNode t) {
+  if (d_thss != NULL) {
+    d_thss->newEqClass(t);
+  }
+}
+
+void TheoryUF::eqNotifyPreMerge(TNode t1, TNode t2) {
+  //if (getLogicInfo().isQuantified()) {
+    //getQuantifiersEngine()->getEfficientEMatcher()->merge( t1, t2 );
+  //}
+}
+
+void TheoryUF::eqNotifyPostMerge(TNode t1, TNode t2) {
+  if (d_thss != NULL) {
+    d_thss->merge(t1, t2);
+  }
+}
+
+void TheoryUF::eqNotifyDisequal(TNode t1, TNode t2, TNode reason) {
+  if (d_thss != NULL) {
+    d_thss->assertDisequal(t1, t2, reason);
+  }
+}
+
+
+} /* namespace CVC4::theory::uf */
+} /* namespace CVC4::theory */
+} /* namespace CVC4 */
diff --git a/src/theory/uf/theory_uf.h b/src/theory/uf/theory_uf.h
new file mode 100644
index 0000000..ce9c70c
--- /dev/null
+++ b/src/theory/uf/theory_uf.h
@@ -0,0 +1,220 @@
+/*********************                                                        */
+/*! \file theory_uf.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This is the interface to TheoryUF implementations
+ **
+ ** This is the interface to TheoryUF implementations.  All
+ ** implementations of TheoryUF should inherit from this class.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__UF__THEORY_UF_H
+#define __CVC4__THEORY__UF__THEORY_UF_H
+
+#include "expr/node.h"
+//#include "expr/attribute.h"
+
+#include "theory/theory.h"
+#include "theory/uf/equality_engine.h"
+#include "theory/uf/symmetry_breaker.h"
+
+#include "context/cdo.h"
+#include "context/cdhashset.h"
+
+namespace CVC4 {
+namespace theory {
+
+namespace quantifiers{
+  class TermArgTrie;
+}
+
+namespace uf {
+
+class UfTermDb;
+class StrongSolverTheoryUF;
+
+class TheoryUF : public Theory {
+
+  friend class StrongSolverTheoryUF;
+
+public:
+
+  class NotifyClass : public eq::EqualityEngineNotify {
+    TheoryUF& d_uf;
+  public:
+    NotifyClass(TheoryUF& uf): d_uf(uf) {}
+
+    bool eqNotifyTriggerEquality(TNode equality, bool value) {
+      Debug("uf") << "NotifyClass::eqNotifyTriggerEquality(" << equality << ", " << (value ? "true" : "false" )<< ")" << std::endl;
+      if (value) {
+        return d_uf.propagate(equality);
+      } else {
+        // We use only literal triggers so taking not is safe
+        return d_uf.propagate(equality.notNode());
+      }
+    }
+
+    bool eqNotifyTriggerPredicate(TNode predicate, bool value) {
+      Debug("uf") << "NotifyClass::eqNotifyTriggerPredicate(" << predicate << ", " << (value ? "true" : "false") << ")" << std::endl;
+      if (value) {
+        return d_uf.propagate(predicate);
+      } else {
+       return d_uf.propagate(predicate.notNode());
+      }
+    }
+
+    bool eqNotifyTriggerTermEquality(TheoryId tag, TNode t1, TNode t2, bool value) {
+      Debug("uf") << "NotifyClass::eqNotifyTriggerTermMerge(" << tag << ", " << t1 << ", " << t2 << ")" << std::endl;
+      if (value) {
+        return d_uf.propagate(t1.eqNode(t2));
+      } else {
+        return d_uf.propagate(t1.eqNode(t2).notNode());
+      }
+    }
+
+    void eqNotifyConstantTermMerge(TNode t1, TNode t2) {
+      Debug("uf-notify") << "NotifyClass::eqNotifyConstantTermMerge(" << t1 << ", " << t2 << ")" << std::endl;
+      d_uf.conflict(t1, t2);
+    }
+
+    void eqNotifyNewClass(TNode t) {
+      Debug("uf-notify") << "NotifyClass::eqNotifyNewClass(" << t << ")" << std::endl;
+      d_uf.eqNotifyNewClass(t);
+    }
+
+    void eqNotifyPreMerge(TNode t1, TNode t2) {
+      Debug("uf-notify") << "NotifyClass::eqNotifyPreMerge(" << t1 << ", " << t2 << ")" << std::endl;
+      d_uf.eqNotifyPreMerge(t1, t2);
+    }
+
+    void eqNotifyPostMerge(TNode t1, TNode t2) {
+      Debug("uf-notify") << "NotifyClass::eqNotifyPostMerge(" << t1 << ", " << t2 << ")" << std::endl;
+      d_uf.eqNotifyPostMerge(t1, t2);
+    }
+
+    void eqNotifyDisequal(TNode t1, TNode t2, TNode reason) {
+      Debug("uf-notify") << "NotifyClass::eqNotifyDisequal(" << t1 << ", " << t2 << ", " << reason << ")" << std::endl;
+      d_uf.eqNotifyDisequal(t1, t2, reason);
+    }
+
+  };/* class TheoryUF::NotifyClass */
+
+private:
+
+  /** The notify class */
+  NotifyClass d_notify;
+
+  /** The associated theory strong solver (or NULL if none) */
+  StrongSolverTheoryUF* d_thss;
+
+  /** Equaltity engine */
+  eq::EqualityEngine d_equalityEngine;
+
+  /** Are we in conflict */
+  context::CDO<bool> d_conflict;
+
+  /** The conflict node */
+  Node d_conflictNode;
+
+  /**
+   * Should be called to propagate the literal. We use a node here
+   * since some of the propagated literals are not kept anywhere.
+   */
+  bool propagate(TNode literal);
+
+  /**
+   * Explain why this literal is true by adding assumptions
+   * with proof (if "pf" is non-NULL).
+   */
+  void explain(TNode literal, std::vector<TNode>& assumptions, eq::EqProof* pf);
+
+  /**
+   * Explain a literal, with proof (if "pf" is non-NULL).
+   */
+  Node explain(TNode literal, eq::EqProof* pf);
+
+  /** Literals to propagate */
+  context::CDList<Node> d_literalsToPropagate;
+
+  /** Index of the next literal to propagate */
+  context::CDO<unsigned> d_literalsToPropagateIndex;
+
+  /** All the function terms that the theory has seen */
+  context::CDList<TNode> d_functionsTerms;
+
+  /** Symmetry analyzer */
+  SymmetryBreaker d_symb;
+
+  /** Conflict when merging two constants */
+  void conflict(TNode a, TNode b);
+
+  /** called when a new equivalance class is created */
+  void eqNotifyNewClass(TNode t);
+
+  /** called when two equivalance classes will merge */
+  void eqNotifyPreMerge(TNode t1, TNode t2);
+
+  /** called when two equivalance classes have merged */
+  void eqNotifyPostMerge(TNode t1, TNode t2);
+
+  /** called when two equivalence classes are made disequal */
+  void eqNotifyDisequal(TNode t1, TNode t2, TNode reason);
+
+public:
+
+  /** Constructs a new instance of TheoryUF w.r.t. the provided context.*/
+  TheoryUF(context::Context* c, context::UserContext* u, OutputChannel& out,
+           Valuation valuation, const LogicInfo& logicInfo,
+           std::string instanceName = "");
+
+  ~TheoryUF();
+
+  void setMasterEqualityEngine(eq::EqualityEngine* eq);
+  void finishInit();
+
+  void check(Effort);
+  void preRegisterTerm(TNode term);
+  Node explain(TNode n);
+
+  void collectModelInfo( TheoryModel* m, bool fullModel );
+
+  void ppStaticLearn(TNode in, NodeBuilder<>& learned);
+  void presolve();
+
+  void addSharedTerm(TNode n);
+  void computeCareGraph();
+
+  void propagate(Effort effort);
+  Node getNextDecisionRequest( unsigned& priority );
+
+  EqualityStatus getEqualityStatus(TNode a, TNode b);
+
+  std::string identify() const {
+    return "THEORY_UF";
+  }
+
+  eq::EqualityEngine* getEqualityEngine() {
+    return &d_equalityEngine;
+  }
+
+  StrongSolverTheoryUF* getStrongSolver() {
+    return d_thss;
+  }
+private:
+  void addCarePairs( quantifiers::TermArgTrie * t1, quantifiers::TermArgTrie * t2, unsigned arity, unsigned depth );
+};/* class TheoryUF */
+
+}/* CVC4::theory::uf namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__UF__THEORY_UF_H */
diff --git a/src/theory/uf/theory_uf_model.cpp b/src/theory/uf/theory_uf_model.cpp
new file mode 100644
index 0000000..f6568ad
--- /dev/null
+++ b/src/theory/uf/theory_uf_model.cpp
@@ -0,0 +1,463 @@
+/*********************                                                        */
+/*! \file theory_uf_model.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of Theory UF Model
+ **/
+
+#include "theory/uf/theory_uf_model.h"
+
+#include <stack>
+#include <vector>
+
+#include "expr/attribute.h"
+#include "options/quantifiers_options.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/theory_engine.h"
+#include "theory/uf/equality_engine.h"
+#include "theory/uf/theory_uf.h"
+
+
+#define RECONSIDER_FUNC_DEFAULT_VALUE
+#define USE_PARTIAL_DEFAULT_VALUES
+
+using namespace std;
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+using namespace CVC4::theory;
+using namespace CVC4::theory::uf;
+
+//clear
+void UfModelTreeNode::clear(){
+  d_data.clear();
+  d_value = Node::null();
+}
+
+bool UfModelTreeNode::hasConcreteArgumentDefinition(){
+  if( d_data.size()>1 ){
+    return true;
+  }else if( d_data.empty() ){
+    return false;
+  }else{
+    Node r;
+    return d_data.find( r )==d_data.end();
+  }
+}
+
+//set value function
+void UfModelTreeNode::setValue( TheoryModel* m, Node n, Node v, std::vector< int >& indexOrder, bool ground, int argIndex ){
+  if( d_data.empty() ){
+    //overwrite value if either at leaf or this is a fresh tree
+    d_value = v;
+  }else if( !d_value.isNull() && d_value!=v ){
+    //value is no longer constant
+    d_value = Node::null();
+  }
+  if( argIndex<(int)indexOrder.size() ){
+    //take r = null when argument is the model basis
+    Node r;
+    if( ground || ( !n.isNull() && !n[ indexOrder[argIndex] ].getAttribute(ModelBasisAttribute()) ) ){
+      r = m->getRepresentative( n[ indexOrder[argIndex] ] );
+    }
+    d_data[ r ].setValue( m, n, v, indexOrder, ground, argIndex+1 );
+  }
+}
+
+//get value function
+Node UfModelTreeNode::getValue( TheoryModel* m, Node n, std::vector< int >& indexOrder, int& depIndex, int argIndex ){
+  if( !d_value.isNull() && isTotal( n.getOperator(), argIndex ) ){
+    //Notice() << "Constant, return " << d_value << ", depIndex = " << argIndex << std::endl;
+    depIndex = argIndex;
+    return d_value;
+  }else{
+    Node val;
+    int childDepIndex[2] = { argIndex, argIndex };
+    for( int i=0; i<2; i++ ){
+      //first check the argument, then check default
+      Node r;
+      if( i==0 ){
+        r = m->getRepresentative( n[ indexOrder[argIndex] ] );
+      }
+      std::map< Node, UfModelTreeNode >::iterator it = d_data.find( r );
+      if( it!=d_data.end() ){
+        val = it->second.getValue( m, n, indexOrder, childDepIndex[i], argIndex+1 );
+        if( !val.isNull() ){
+          break;
+        }
+      }else{
+        //argument is not a defined argument: thus, it depends on this argument
+        childDepIndex[i] = argIndex+1;
+      }
+    }
+    //update depIndex
+    depIndex = childDepIndex[0]>childDepIndex[1] ? childDepIndex[0] : childDepIndex[1];
+    //Notice() << "Return " << val << ", depIndex = " << depIndex;
+    //Notice() << " ( " << childDepIndex[0] << ", " << childDepIndex[1] << " )" << std::endl;
+    return val;
+  }
+}
+
+Node UfModelTreeNode::getValue( TheoryModel* m, Node n, std::vector< int >& indexOrder, std::vector< int >& depIndex, int argIndex ){
+  if( argIndex==(int)indexOrder.size() ){
+    return d_value;
+  }else{
+    Node val;
+    bool depArg = false;
+    //will try concrete value first, then default
+    for( int i=0; i<2; i++ ){
+      Node r;
+      if( i==0 ){
+        r = m->getRepresentative( n[ indexOrder[argIndex] ] );
+      }
+      std::map< Node, UfModelTreeNode >::iterator it = d_data.find( r );
+      if( it!=d_data.end() ){
+        val = it->second.getValue( m, n, indexOrder, depIndex, argIndex+1 );
+        //we have found a value
+        if( !val.isNull() ){
+          if( i==0 ){
+            depArg = true;
+          }
+          break;
+        }
+      }
+    }
+    //it depends on this argument if we found it via concrete argument value,
+    // or if found by default/disequal from some concrete argument value(s).
+    if( depArg || hasConcreteArgumentDefinition() ){
+      if( std::find( depIndex.begin(), depIndex.end(), indexOrder[argIndex] )==depIndex.end() ){
+        depIndex.push_back( indexOrder[argIndex] );
+      }
+    }
+    return val;
+  }
+}
+
+Node UfModelTreeNode::getFunctionValue(std::vector<Node>& args, int index, Node argDefaultValue, bool simplify) {
+  if(!d_data.empty()) {
+    Node defaultValue = argDefaultValue;
+    if(d_data.find(Node::null()) != d_data.end()) {
+      defaultValue = d_data[Node::null()].getFunctionValue(args, index + 1, argDefaultValue, simplify);
+    }
+
+    vector<Node> caseArgs;
+    map<Node, Node> caseValues;
+
+    for(map< Node, UfModelTreeNode>::iterator it = d_data.begin(); it != d_data.end(); ++it) {
+      if(!it->first.isNull()) {
+        Node val = it->second.getFunctionValue(args, index + 1, defaultValue, simplify);
+        caseArgs.push_back(it->first);
+        caseValues[it->first] = val;
+      }
+    }
+
+    NodeManager* nm = NodeManager::currentNM();
+    Node retNode = defaultValue;
+
+    if(!simplify) {
+      // "non-simplifying" mode - expand function values to things like:
+      //   IF      (x=0 AND y=0 AND z=0) THEN value1
+      //   ELSE IF (x=0 AND y=0 AND z=1) THEN value2
+      //   [...etc...]
+      for(int i = (int)caseArgs.size() - 1; i >= 0; --i) {
+        Node val = caseValues[ caseArgs[ i ] ];
+        if(val.getKind() == ITE) {
+          // use a stack to reverse the order, since we're traversing outside-in
+          stack<TNode> stk;
+          do {
+            stk.push(val);
+            val = val[2];
+          } while(val.getKind() == ITE);
+          AlwaysAssert(val == defaultValue, "default values don't match when constructing function definition!");
+          while(!stk.empty()) {
+            val = stk.top();
+            stk.pop();
+            retNode = nm->mkNode(ITE, nm->mkNode(AND, args[index].eqNode(caseArgs[i]), val[0]), val[1], retNode);
+          }
+        } else {
+          retNode = nm->mkNode(ITE, args[index].eqNode(caseArgs[i]), caseValues[caseArgs[i]], retNode);
+        }
+      }
+    } else {
+      // "simplifying" mode - condense function values
+      for(int i = (int)caseArgs.size() - 1; i >= 0; --i) {
+        retNode = nm->mkNode(ITE, args[index].eqNode(caseArgs[i]), caseValues[caseArgs[i]], retNode);
+      }
+    }
+    return retNode;
+  } else {
+    Assert(!d_value.isNull());
+    return d_value;
+  }
+}
+
+//update function
+void UfModelTreeNode::update( TheoryModel* m ){
+  if( !d_value.isNull() ){
+    d_value = m->getRepresentative( d_value );
+  }
+  std::map< Node, UfModelTreeNode > old = d_data;
+  d_data.clear();
+  for( std::map< Node, UfModelTreeNode >::iterator it = old.begin(); it != old.end(); ++it ){
+    Node rep = m->getRepresentative( it->first );
+    d_data[ rep ] = it->second;
+    d_data[ rep ].update( m );
+  }
+}
+
+//simplify function
+void UfModelTreeNode::simplify( Node op, Node defaultVal, int argIndex ){
+  if( argIndex<(int)op.getType().getNumChildren()-1 ){
+    std::vector< Node > eraseData;
+    //first process the default argument
+    Node r;
+    std::map< Node, UfModelTreeNode >::iterator it = d_data.find( r );
+    if( it!=d_data.end() ){
+      if( !defaultVal.isNull() && it->second.d_value==defaultVal ){
+        eraseData.push_back( r );
+      }else{
+        it->second.simplify( op, defaultVal, argIndex+1 );
+        if( !it->second.d_value.isNull() && it->second.isTotal( op, argIndex+1 ) ){
+          defaultVal = it->second.d_value;
+        }else{
+          defaultVal = Node::null();
+          if( it->second.isEmpty() ){
+            eraseData.push_back( r );
+          }
+        }
+      }
+    }
+    //now see if any children can be removed, and simplify the ones that cannot
+    for( std::map< Node, UfModelTreeNode >::iterator it = d_data.begin(); it != d_data.end(); ++it ){
+      if( !it->first.isNull() ){
+        if( !defaultVal.isNull() && it->second.d_value==defaultVal ){
+          eraseData.push_back( it->first );
+        }else{
+          it->second.simplify( op, defaultVal, argIndex+1 );
+          if( it->second.isEmpty() ){
+            eraseData.push_back( it->first );
+          }
+        }
+      }
+    }
+    for( int i=0; i<(int)eraseData.size(); i++ ){
+      d_data.erase( eraseData[i] );
+    }
+  }
+}
+
+//is total function
+bool UfModelTreeNode::isTotal( Node op, int argIndex ){
+  if( argIndex==(int)(op.getType().getNumChildren()-1) ){
+    return !d_value.isNull();
+  }else{
+    Node r;
+    std::map< Node, UfModelTreeNode >::iterator it = d_data.find( r );
+    if( it!=d_data.end() ){
+      return it->second.isTotal( op, argIndex+1 );
+    }else{
+      return false;
+    }
+  }
+}
+
+Node UfModelTreeNode::getConstantValue( TheoryModel* m, Node n, std::vector< int >& indexOrder, int argIndex ){
+  return d_value;
+}
+
+void indent( std::ostream& out, int ind ){
+  for( int i=0; i<ind; i++ ){
+    out << " ";
+  }
+}
+
+void UfModelTreeNode::debugPrint( std::ostream& out, TheoryModel* m, std::vector< int >& indexOrder, int ind, int arg ){
+  if( !d_data.empty() ){
+    for( std::map< Node, UfModelTreeNode >::iterator it = d_data.begin(); it != d_data.end(); ++it ){
+      if( !it->first.isNull() ){
+        indent( out, ind );
+        out << "if x_" << indexOrder[arg] << " == " << it->first << std::endl;
+        it->second.debugPrint( out, m, indexOrder, ind+2, arg+1 );
+      }
+    }
+    if( d_data.find( Node::null() )!=d_data.end() ){
+      d_data[ Node::null() ].debugPrint( out, m, indexOrder, ind, arg+1 );
+    }
+  }else{
+    indent( out, ind );
+    out << "return ";
+    m->printRepresentative( out, d_value );
+    out << std::endl;
+  }
+}
+
+Node UfModelTree::getFunctionValue( std::vector< Node >& args, bool simplify ){
+  Node body = d_tree.getFunctionValue( args, 0, Node::null(), simplify );
+  if(simplify) {
+    body = Rewriter::rewrite( body );
+  }
+  Node boundVarList = NodeManager::currentNM()->mkNode(kind::BOUND_VAR_LIST, args);
+  return NodeManager::currentNM()->mkNode(kind::LAMBDA, boundVarList, body);
+}
+
+Node UfModelTree::getFunctionValue( const char* argPrefix, bool simplify ){
+  TypeNode type = d_op.getType();
+  std::vector< Node > vars;
+  for( size_t i=0; i<type.getNumChildren()-1; i++ ){
+    std::stringstream ss;
+    ss << argPrefix << (i+1);
+    vars.push_back( NodeManager::currentNM()->mkBoundVar( ss.str(), type[i] ) );
+  }
+  return getFunctionValue( vars, simplify );
+}
+
+Node UfModelTreeGenerator::getIntersection( TheoryModel* m, Node n1, Node n2, bool& isGround ){
+  //Notice() << "Get intersection " << n1 << " " << n2 << std::endl;
+  isGround = true;
+  std::vector< Node > children;
+  children.push_back( n1.getOperator() );
+  for( int i=0; i<(int)n1.getNumChildren(); i++ ){
+    if( n1[i]==n2[i] ){
+      if( n1[i].getAttribute(ModelBasisAttribute()) ){
+        isGround = false;
+      }
+      children.push_back( n1[i] );
+    }else if( n1[i].getAttribute(ModelBasisAttribute()) ){
+      children.push_back( n2[i] );
+    }else if( n2[i].getAttribute(ModelBasisAttribute()) ){
+      children.push_back( n1[i] );
+    }else if( m->areEqual( n1[i], n2[i] ) ){
+      children.push_back( n1[i] );
+    }else{
+      return Node::null();
+    }
+  }
+  return NodeManager::currentNM()->mkNode( APPLY_UF, children );
+}
+
+void UfModelTreeGenerator::setValue( TheoryModel* m, Node n, Node v, bool ground, bool isReq ){
+  Assert( !n.isNull() );
+  Assert( !v.isNull() );
+  d_set_values[ isReq ? 1 : 0 ][ ground ? 1 : 0 ][n] = v;
+  if( optUsePartialDefaults() ){
+    if( !ground ){
+      int defSize = (int)d_defaults.size();
+      for( int i=0; i<defSize; i++ ){
+        //for soundness, to allow variable order-independent function interpretations,
+        //  we must ensure that the intersection of all default terms
+        //  is also defined.
+        //for example, if we have that f( e, a ) = ..., and f( b, e ) = ...,
+        //  then we must define f( b, a ).
+        bool isGround;
+        Node ni = getIntersection( m, n, d_defaults[i], isGround );
+        if( !ni.isNull() ){
+          //if the intersection exists, and is not already defined
+          if( d_set_values[0][ isGround ? 1 : 0 ].find( ni )==d_set_values[0][ isGround ? 1 : 0 ].end() &&
+              d_set_values[1][ isGround ? 1 : 0 ].find( ni )==d_set_values[1][ isGround ? 1 : 0 ].end() ){
+            //use the current value
+            setValue( m, ni, v, isGround, false );
+          }
+        }
+      }
+      d_defaults.push_back( n );
+    }
+    if( isReq && d_set_values[0][ ground ? 1 : 0 ].find( n )!=d_set_values[0][ ground ? 1 : 0 ].end()){
+      d_set_values[0][ ground ? 1 : 0 ].erase( n );
+    }
+  }
+}
+
+void UfModelTreeGenerator::makeModel( TheoryModel* m, UfModelTree& tree ){
+  for( int j=0; j<2; j++ ){
+    for( int k=0; k<2; k++ ){
+      for( std::map< Node, Node >::iterator it = d_set_values[j][k].begin(); it != d_set_values[j][k].end(); ++it ){
+        tree.setValue( m, it->first, it->second, k==1 );
+      }
+    }
+  }
+  if( !d_default_value.isNull() ){
+    tree.setDefaultValue( m, d_default_value );
+  }
+  tree.simplify();
+}
+
+bool UfModelTreeGenerator::optUsePartialDefaults(){
+#ifdef USE_PARTIAL_DEFAULT_VALUES
+  return true;
+#else
+  return false;
+#endif
+}
+
+void UfModelTreeGenerator::clear(){
+  d_default_value = Node::null();
+  for( int j=0; j<2; j++ ){
+    for( int k=0; k<2; k++ ){
+      d_set_values[j][k].clear();
+    }
+  }
+  d_defaults.clear();
+}
+
+
+void UfModelPreferenceData::setValuePreference( Node f, Node n, Node r, bool isPro ){
+  if( std::find( d_values.begin(), d_values.end(), r )==d_values.end() ){
+    d_values.push_back( r );
+  }
+  int index = isPro ? 0 : 1;
+  if( std::find( d_value_pro_con[index][r].begin(), d_value_pro_con[index][r].end(), f )==d_value_pro_con[index][r].end() ){
+    d_value_pro_con[index][r].push_back( f );
+  }
+  d_term_pro_con[index][n].push_back( f );
+}
+
+Node UfModelPreferenceData::getBestDefaultValue( Node defaultTerm, TheoryModel* m ){
+  Node defaultVal;
+  double maxScore = -1;
+  for( size_t i=0; i<d_values.size(); i++ ){
+    Node v = d_values[i];
+    double score = ( 1.0 + (double)d_value_pro_con[0][v].size() )/( 1.0 + (double)d_value_pro_con[1][v].size() );
+    Debug("fmf-model-cons-debug") << "  - score( ";
+    m->printRepresentativeDebug( "fmf-model-cons-debug", v );
+    Debug("fmf-model-cons-debug") << " ) = " << score << std::endl;
+    if( score>maxScore ){
+      defaultVal = v;
+      maxScore = score;
+    }
+  }
+#ifdef RECONSIDER_FUNC_DEFAULT_VALUE
+  if( maxScore<1.0 ){
+    //consider finding another value, if possible
+    Debug("fmf-model-cons-debug") << "Poor choice for default value, score = " << maxScore << std::endl;
+    TypeNode tn = defaultTerm.getType();
+    Node newDefaultVal = m->getDomainValue( tn, d_values );
+    if( !newDefaultVal.isNull() ){
+      defaultVal = newDefaultVal;
+      Debug("fmf-model-cons-debug") << "-> Change default value to ";
+      m->printRepresentativeDebug( "fmf-model-cons-debug", defaultVal );
+      Debug("fmf-model-cons-debug") << std::endl;
+    }else{
+      Debug("fmf-model-cons-debug") << "-> Could not find arbitrary element of type " << tn[(int)tn.getNumChildren()-1] << std::endl;
+      Debug("fmf-model-cons-debug") << "      Excluding: ";
+      for( int i=0; i<(int)d_values.size(); i++ ){
+        Debug("fmf-model-cons-debug") << d_values[i] << " ";
+      }
+      Debug("fmf-model-cons-debug") << std::endl;
+    }
+  }
+#endif
+  //get the default term (this term must be defined non-ground in model)
+  Debug("fmf-model-cons-debug") << "  Choose ";
+  m->printRepresentativeDebug("fmf-model-cons-debug", defaultVal );
+  Debug("fmf-model-cons-debug") << " as default value (" << defaultTerm << ")" << std::endl;
+  Debug("fmf-model-cons-debug") << "     # quantifiers pro = " << d_value_pro_con[0][defaultVal].size() << std::endl;
+  Debug("fmf-model-cons-debug") << "     # quantifiers con = " << d_value_pro_con[1][defaultVal].size() << std::endl;
+  return defaultVal;
+}
diff --git a/src/theory/uf/theory_uf_model.h b/src/theory/uf/theory_uf_model.h
new file mode 100644
index 0000000..39e7ee6
--- /dev/null
+++ b/src/theory/uf/theory_uf_model.h
@@ -0,0 +1,197 @@
+/*********************                                                        */
+/*! \file theory_uf_model.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Andrew Reynolds, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Model for Theory UF
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY_UF_MODEL_H
+#define __CVC4__THEORY_UF_MODEL_H
+
+#include "theory/theory_model.h"
+
+namespace CVC4 {
+namespace theory {
+namespace uf {
+
+class UfModelTreeNode
+{
+public:
+  UfModelTreeNode(){}
+  /** the data */
+  std::map< Node, UfModelTreeNode > d_data;
+  /** the value of this tree node (if all paths lead to same value) */
+  Node d_value;
+  /** has concrete argument defintion */
+  bool hasConcreteArgumentDefinition();
+public:
+  //is this model tree empty?
+  bool isEmpty() { return d_data.empty() && d_value.isNull(); }
+  //clear
+  void clear();
+  /** setValue function */
+  void setValue( TheoryModel* m, Node n, Node v, std::vector< int >& indexOrder, bool ground, int argIndex );
+  /**  getValue function */
+  Node getValue( TheoryModel* m, Node n, std::vector< int >& indexOrder, int& depIndex, int argIndex );
+  Node getValue( TheoryModel* m, Node n, std::vector< int >& indexOrder, std::vector< int >& depIndex, int argIndex );
+  /** getConstant Value function */
+  Node getConstantValue( TheoryModel* m, Node n, std::vector< int >& indexOrder, int argIndex );
+  /** getFunctionValue */
+  Node getFunctionValue( std::vector< Node >& args, int index, Node argDefaultValue, bool simplify = true );
+  /** update function */
+  void update( TheoryModel* m );
+  /** simplify function */
+  void simplify( Node op, Node defaultVal, int argIndex );
+  /** is total ? */
+  bool isTotal( Node op, int argIndex );
+public:
+  void debugPrint( std::ostream& out, TheoryModel* m, std::vector< int >& indexOrder, int ind = 0, int arg = 0 );
+};
+
+class UfModelTree
+{
+private:
+  //the op this model is for
+  Node d_op;
+  //the order we will treat the arguments
+  std::vector< int > d_index_order;
+  //the data
+  UfModelTreeNode d_tree;
+public:
+  //constructors
+  UfModelTree(){}
+  UfModelTree( Node op ) : d_op( op ){
+    TypeNode tn = d_op.getType();
+    for( int i=0; i<(int)(tn.getNumChildren()-1); i++ ){
+      d_index_order.push_back( i );
+    }
+  }
+  UfModelTree( Node op, std::vector< int >& indexOrder ) : d_op( op ){
+    d_index_order.insert( d_index_order.end(), indexOrder.begin(), indexOrder.end() );
+  }
+  /** clear/reset the function */
+  void clear() { d_tree.clear(); }
+  /** setValue function
+    *
+    * For each argument of n with ModelBasisAttribute() set to true will be considered default arguments if ground=false
+    *
+    */
+  void setValue( TheoryModel* m, Node n, Node v, bool ground = true ){
+    d_tree.setValue( m, n, v, d_index_order, ground, 0 );
+  }
+  /** setDefaultValue function */
+  void setDefaultValue( TheoryModel* m, Node v ){
+    d_tree.setValue( m, Node::null(), v, d_index_order, false, 0 );
+  }
+  /**  getValue function
+    *
+    *  returns val, the value of ground term n
+    *  Say n is f( t_0...t_n )
+    *    depIndex is the index for which every term of the form f( t_0 ... t_depIndex, *,... * ) is equal to val
+    *    for example, if g( x_0, x_1, x_2 ) := lambda x_0 x_1 x_2. if( x_1==a ) b else c,
+    *      then g( a, a, a ) would return b with depIndex = 1
+    *
+    */
+  Node getValue( TheoryModel* m, Node n, int& depIndex ){
+    return d_tree.getValue( m, n, d_index_order, depIndex, 0 );
+  }
+  /** -> implementation incomplete */
+  Node getValue( TheoryModel* m, Node n, std::vector< int >& depIndex ){
+    return d_tree.getValue( m, n, d_index_order, depIndex, 0 );
+  }
+  /** getConstantValue function
+    *
+    * given term n, where n may contain "all value" arguments, aka model basis arguments
+    *   if n is null, then every argument of n is considered "all value"
+    * if n is constant for the entire domain specified by n, then this function returns the value of its domain
+    * otherwise, it returns null
+    * for example, say the term e represents "all values"
+    *   if f( x_0, x_1 ) := if( x_0 = a ) b else if( x_1 = a ) a else b,
+    *     then f( a, e ) would return b, while f( e, a ) would return null
+    *  -> implementation incomplete
+    */
+  Node getConstantValue( TheoryModel* m, Node n ) {
+    return d_tree.getConstantValue( m, n, d_index_order, 0 );
+  }
+  /** getFunctionValue
+    *   Returns a representation of this function.
+    */
+  Node getFunctionValue( std::vector< Node >& args, bool simplify = true );
+  /** getFunctionValue for args with set prefix */
+  Node getFunctionValue( const char* argPrefix, bool simplify = true );
+  /** update
+    *   This will update all values in the tree to be representatives in m.
+    */
+  void update( TheoryModel* m ){ d_tree.update( m ); }
+  /** simplify the tree */
+  void simplify() { d_tree.simplify( d_op, Node::null(), 0 ); }
+  /** is this tree total? */
+  bool isTotal() { return d_tree.isTotal( d_op, 0 ); }
+  /** is this function constant? */
+  bool isConstant( TheoryModel* m ) { return !getConstantValue( m, Node::null() ).isNull(); }
+  /** is this tree empty? */
+  bool isEmpty() { return d_tree.isEmpty(); }
+public:
+  void debugPrint( std::ostream& out, TheoryModel* m, int ind = 0 ){
+    d_tree.debugPrint( out, m, d_index_order, ind );
+  }
+};
+
+
+class UfModelTreeGenerator
+{
+public:
+  //store for set values
+  Node d_default_value;
+  std::map< Node, Node > d_set_values[2][2];
+  // defaults
+  std::vector< Node > d_defaults;
+  Node getIntersection( TheoryModel* m, Node n1, Node n2, bool& isGround );
+public:
+  UfModelTreeGenerator(){}
+  ~UfModelTreeGenerator(){}
+  /** set default value */
+  void setDefaultValue( Node v ) { d_default_value = v; }
+  /** set value */
+  void setValue( TheoryModel* m, Node n, Node v, bool ground = true, bool isReq = true );
+  /** make model */
+  void makeModel( TheoryModel* m, UfModelTree& tree );
+  /** uses partial default values */
+  bool optUsePartialDefaults();
+  /** reset */
+  void clear();
+};
+
+//this class stores temporary information useful to model engine for constructing model
+class UfModelPreferenceData
+{
+public:
+  UfModelPreferenceData() : d_reconsiderModel( false ){}
+  virtual ~UfModelPreferenceData(){}
+  Node d_const_val;
+  // preferences for default values
+  std::vector< Node > d_values;
+  std::map< Node, std::vector< Node > > d_value_pro_con[2];
+  std::map< Node, std::vector< Node > > d_term_pro_con[2];
+  bool d_reconsiderModel;
+  /** set value preference */
+  void setValuePreference( Node f, Node n, Node r, bool isPro );
+  /** get best default value */
+  Node getBestDefaultValue( Node defaultTerm, TheoryModel* m );
+};
+
+
+}
+}
+}
+
+#endif
diff --git a/src/theory/uf/theory_uf_rewriter.h b/src/theory/uf/theory_uf_rewriter.h
new file mode 100644
index 0000000..bce6003
--- /dev/null
+++ b/src/theory/uf/theory_uf_rewriter.h
@@ -0,0 +1,113 @@
+/*********************                                                        */
+/*! \file theory_uf_rewriter.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__UF__THEORY_UF_REWRITER_H
+#define __CVC4__THEORY__UF__THEORY_UF_REWRITER_H
+
+#include "theory/rewriter.h"
+#include "theory/substitutions.h"
+
+namespace CVC4 {
+namespace theory {
+namespace uf {
+
+class TheoryUfRewriter {
+
+public:
+
+  static RewriteResponse postRewrite(TNode node) {
+    if(node.getKind() == kind::EQUAL) {
+      if(node[0] == node[1]) {
+        return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(true));
+      } else if(node[0].isConst() && node[1].isConst()) {
+        // uninterpreted constants are all distinct
+        return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(false));
+      }
+      if (node[0] > node[1]) {
+        Node newNode = NodeManager::currentNM()->mkNode(node.getKind(), node[1], node[0]);
+        return RewriteResponse(REWRITE_DONE, newNode);
+      }
+    }
+    if(node.getKind() == kind::APPLY_UF && node.getOperator().getKind() == kind::LAMBDA) {
+      // resolve away the lambda
+      context::Context fakeContext;
+      theory::SubstitutionMap substitutions(&fakeContext);
+      TNode lambda = node.getOperator();
+      for(TNode::iterator formal = lambda[0].begin(), arg = node.begin(); formal != lambda[0].end(); ++formal, ++arg) {
+        // typechecking should ensure that the APPLY_UF is well-typed, correct arity, etc.
+        Assert(formal != node.end());
+        // This rewrite step is important: if we have (f (f 5)) for
+        // some lambda term f, we want to beta-reduce the inside (f 5)
+        // application first.  Otherwise, we can end up in infinite
+        // recursion, because f's formal (say "x") gives the
+        // substitution "x |-> (f 5)".  Fine, the body of the lambda
+        // gets (f 5) in place for x.  But since the same lambda ("f")
+        // now occurs in the body, it's got the same bound var "x", so
+        // substitution continues and we replace that x by (f 5).  And
+        // then again.  :-(
+        //
+        // We need a better solution for distinguishing bound
+        // variables like this, but for now, handle it by going
+        // inside-out.  (Quantifiers shouldn't ever have this problem,
+        // so long as the bound vars in different quantifiers are kept
+        // different.)
+        Node n = Rewriter::rewrite(*arg);
+        substitutions.addSubstitution(*formal, n);
+      }
+      return RewriteResponse(REWRITE_DONE, substitutions.apply(lambda[1]));
+    }
+    return RewriteResponse(REWRITE_DONE, node);
+  }
+
+  static RewriteResponse preRewrite(TNode node) {
+    if(node.getKind() == kind::EQUAL) {
+      if(node[0] == node[1]) {
+        return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(true));
+      } else if(node[0].isConst() && node[1].isConst()) {
+        // uninterpreted constants are all distinct
+        return RewriteResponse(REWRITE_DONE, NodeManager::currentNM()->mkConst(false));
+      }
+    }
+    if(node.getKind() == kind::APPLY_UF && node.getOperator().getKind() == kind::LAMBDA) {
+      // resolve away the lambda
+      context::Context fakeContext;
+      theory::SubstitutionMap substitutions(&fakeContext);
+      TNode lambda = node.getOperator();
+      for(TNode::iterator formal = lambda[0].begin(), arg = node.begin(); formal != lambda[0].end(); ++formal, ++arg) {
+        // typechecking should ensure that the APPLY_UF is well-typed, correct arity, etc.
+        Assert(formal != node.end());
+        // This rewrite step is important: see note in postRewrite().
+        Node n = Rewriter::rewrite(*arg);
+        substitutions.addSubstitution(*formal, n);
+      }
+      return RewriteResponse(REWRITE_DONE, substitutions.apply(lambda[1]));
+    }
+    return RewriteResponse(REWRITE_DONE, node);
+  }
+
+  static inline void init() {}
+  static inline void shutdown() {}
+
+};/* class TheoryUfRewriter */
+
+}/* CVC4::theory::uf namespace */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__UF__THEORY_UF_REWRITER_H */
diff --git a/src/theory/uf/theory_uf_strong_solver.cpp b/src/theory/uf/theory_uf_strong_solver.cpp
new file mode 100644
index 0000000..51648fb
--- /dev/null
+++ b/src/theory/uf/theory_uf_strong_solver.cpp
@@ -0,0 +1,2354 @@
+/*********************                                                        */
+/*! \file theory_uf_strong_solver.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of theory uf strong solver class
+ **/
+
+#include "theory/uf/theory_uf_strong_solver.h"
+
+#include "options/uf_options.h"
+#include "theory/uf/theory_uf.h"
+#include "theory/uf/equality_engine.h"
+#include "theory/theory_engine.h"
+#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/theory_model.h"
+#include "theory/quantifiers/symmetry_breaking.h"
+
+//#define ONE_SPLIT_REGION
+//#define DISABLE_QUICK_CLIQUE_CHECKS
+//#define COMBINE_REGIONS_SMALL_INTO_LARGE
+//#define LAZY_REL_EQC
+
+using namespace std;
+using namespace CVC4::kind;
+using namespace CVC4::context;
+
+
+namespace CVC4 {
+namespace theory {
+namespace uf {
+
+/* These are names are unambigious are we use abbreviations. */
+typedef StrongSolverTheoryUF::SortModel SortModel;
+typedef SortModel::Region Region;
+typedef Region::RegionNodeInfo RegionNodeInfo;
+typedef RegionNodeInfo::DiseqList DiseqList;
+
+Region::Region(SortModel* cf, context::Context* c)
+  : d_cf( cf )
+  , d_testCliqueSize( c, 0 )
+  , d_splitsSize( c, 0 )
+  , d_testClique( c )
+  , d_splits( c )
+  , d_reps_size( c, 0 )
+  , d_total_diseq_external( c, 0 )
+  , d_total_diseq_internal( c, 0 )
+  , d_valid( c, true ) {}
+
+Region::~Region() {
+  for(iterator i = begin(), iend = end(); i != iend; ++i) {
+    RegionNodeInfo* regionNodeInfo = (*i).second;
+    delete regionNodeInfo;
+  }
+  d_nodes.clear();
+}
+
+void Region::addRep( Node n ) {
+  setRep( n, true );
+}
+
+void Region::takeNode( Region* r, Node n ){
+  Assert( !hasRep( n ) );
+  Assert( r->hasRep( n ) );
+  //add representative
+  setRep( n, true );
+  //take disequalities from r
+  RegionNodeInfo* rni = r->d_nodes[n];
+  for( int t=0; t<2; t++ ){
+    DiseqList* del = rni->get(t);
+    for(DiseqList::iterator it = del->begin(); it != del->end(); ++it ){
+      if( (*it).second ){
+        r->setDisequal( n, (*it).first, t, false );
+        if( t==0 ){
+          if( hasRep( (*it).first ) ){
+            setDisequal( (*it).first, n, 0, false );
+            setDisequal( (*it).first, n, 1, true );
+            setDisequal( n, (*it).first, 1, true );
+          }else{
+            setDisequal( n, (*it).first, 0, true );
+          }
+        }else{
+          r->setDisequal( (*it).first, n, 1, false );
+          r->setDisequal( (*it).first, n, 0, true );
+          setDisequal( n, (*it).first, 0, true );
+        }
+      }
+    }
+  }
+  //remove representative
+  r->setRep( n, false );
+}
+
+void Region::combine( Region* r ){
+  //take all nodes from r
+  for(Region::iterator it = r->d_nodes.begin(); it != r->d_nodes.end(); ++it) {
+    if( it->second->valid() ){
+      setRep( it->first, true );
+    }
+  }
+  for(Region::iterator it = r->d_nodes.begin(); it != r->d_nodes.end(); ++it){
+    if( it->second->valid() ){
+      //take disequalities from r
+      Node n = it->first;
+      RegionNodeInfo* rni = it->second;
+      for( int t=0; t<2; t++ ){
+        RegionNodeInfo::DiseqList* del = rni->get(t);
+        for( RegionNodeInfo::DiseqList::iterator it2 = del->begin(),
+               it2end = del->end(); it2 != it2end; ++it2 ){
+          if( (*it2).second ){
+            if( t==0 && hasRep( (*it2).first ) ){
+              setDisequal( (*it2).first, n, 0, false );
+              setDisequal( (*it2).first, n, 1, true );
+              setDisequal( n, (*it2).first, 1, true );
+            }else{
+              setDisequal( n, (*it2).first, t, true );
+            }
+          }
+        }
+      }
+    }
+  }
+  r->d_valid = false;
+}
+
+/** setEqual */
+void Region::setEqual( Node a, Node b ){
+  Assert( hasRep( a ) && hasRep( b ) );
+  //move disequalities of b over to a
+  for( int t=0; t<2; t++ ){
+    DiseqList* del = d_nodes[b]->get(t);
+    for( DiseqList::iterator it = del->begin(); it != del->end(); ++it ){
+      if( (*it).second ){
+        Node n = (*it).first;
+        //get the region that contains the endpoint of the disequality b != ...
+        Region* nr = d_cf->d_regions[ d_cf->d_regions_map[ n ] ];
+        if( !isDisequal( a, n, t ) ){
+          setDisequal( a, n, t, true );
+          nr->setDisequal( n, a, t, true );
+          //notify the disequality propagator
+          if( options::ufssDiseqPropagation() ){
+            d_cf->d_thss->getDisequalityPropagator()->assertDisequal(a, n, Node::null());
+          }
+          if( options::ufssSymBreak() ){
+            d_cf->d_thss->getSymmetryBreaker()->assertDisequal( a, n );
+          }
+        }
+        setDisequal( b, n, t, false );
+        nr->setDisequal( n, b, t, false );
+      }
+    }
+  }
+  //remove b from representatives
+  setRep( b, false );
+}
+
+void Region::setDisequal( Node n1, Node n2, int type, bool valid ){
+  //Debug("uf-ss-region-debug") << "set disequal " << n1 << " " << n2 << " "
+  //                            << type << " " << valid << std::endl;
+  //debugPrint("uf-ss-region-debug");
+  //Assert( isDisequal( n1, n2, type )!=valid );
+  if( isDisequal( n1, n2, type )!=valid ){    //DO_THIS: make assertion
+    d_nodes[ n1 ]->get(type)->setDisequal( n2, valid );
+    if( type==0 ){
+      d_total_diseq_external = d_total_diseq_external + ( valid ? 1 : -1 );
+    }else{
+      d_total_diseq_internal = d_total_diseq_internal + ( valid ? 1 : -1 );
+      if( valid ){
+        //if they are both a part of testClique, then remove split
+        if( d_testClique.find( n1 )!=d_testClique.end() && d_testClique[n1] &&
+            d_testClique.find( n2 )!=d_testClique.end() && d_testClique[n2] ){
+          Node eq = NodeManager::currentNM()->mkNode( EQUAL, n1, n2 );
+          if( d_splits.find( eq )!=d_splits.end() && d_splits[ eq ] ){
+            Debug("uf-ss-debug") << "removing split for " << n1 << " " << n2
+                                 << std::endl;
+            d_splits[ eq ] = false;
+            d_splitsSize = d_splitsSize - 1;
+          }
+        }
+      }
+    }
+  }
+}
+
+void Region::setRep( Node n, bool valid ) {
+  Assert( hasRep( n )!=valid );
+  if( valid && d_nodes.find( n )==d_nodes.end() ){
+    d_nodes[n] = new RegionNodeInfo( d_cf->d_thss->getSatContext() );
+  }
+  d_nodes[n]->setValid(valid);
+  d_reps_size = d_reps_size + ( valid ? 1 : -1 );
+  //removing a member of the test clique from this region
+  if( d_testClique.find( n ) != d_testClique.end() && d_testClique[n] ){
+    Assert( !valid );
+    d_testClique[n] = false;
+    d_testCliqueSize = d_testCliqueSize - 1;
+    //remove all splits involving n
+    for( split_iterator it = begin_splits(); it != end_splits(); ++it ){
+      if( (*it).second ){
+        if( (*it).first[0]==n || (*it).first[1]==n ){
+          d_splits[ (*it).first ] = false;
+          d_splitsSize = d_splitsSize - 1;
+        }
+      }
+    }
+  }
+}
+
+bool Region::isDisequal( Node n1, Node n2, int type ) {
+  RegionNodeInfo::DiseqList* del = d_nodes[ n1 ]->get(type);
+  return del->isSet(n2) && del->getDisequalityValue(n2);
+}
+
+struct sortInternalDegree {
+  Region* r;
+  bool operator() (Node i, Node j) {
+    return (r->getRegionInfo(i)->getNumInternalDisequalities() >
+            r->getRegionInfo(j)->getNumInternalDisequalities());
+  }
+};
+
+struct sortExternalDegree {
+  Region* r;
+  bool operator() (Node i,Node j) {
+    return (r->getRegionInfo(i)->getNumExternalDisequalities() >
+            r->getRegionInfo(j)->getNumExternalDisequalities());
+  }
+};
+
+int gmcCount = 0;
+
+bool Region::getMustCombine( int cardinality ){
+  if( options::ufssRegions() && d_total_diseq_external>=unsigned(cardinality) ){
+    //The number of external disequalities is greater than or equal to
+    //cardinality.  Thus, a clique of size cardinality+1 may exist
+    //between nodes in d_regions[i] and other regions Check if this is
+    //actually the case: must have n nodes with outgoing degree
+    //(cardinality+1-n) for some n>0
+    std::vector< int > degrees;
+    for( Region::iterator it = begin(); it != end(); ++it ){
+      RegionNodeInfo* rni = it->second;
+      if( rni->valid() ){
+        if( rni->getNumDisequalities() >= cardinality ){
+          int outDeg = rni->getNumExternalDisequalities();
+          if( outDeg>=cardinality ){
+            //we have 1 node of degree greater than (cardinality)
+            return true;
+          }else if( outDeg>=1 ){
+            degrees.push_back( outDeg );
+            if( (int)degrees.size()>=cardinality ){
+              //we have (cardinality) nodes of degree 1
+              return true;
+            }
+          }
+        }
+      }
+    }
+    gmcCount++;
+    if( gmcCount%100==0 ){
+      Trace("gmc-count") << gmcCount << " " << cardinality
+                         << " sample : " << degrees.size() << std::endl;
+    }
+    //this should happen relatively infrequently....
+    std::sort( degrees.begin(), degrees.end() );
+    for( int i=0; i<(int)degrees.size(); i++ ){
+      if( degrees[i]>=cardinality+1-((int)degrees.size()-i) ){
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+bool Region::check( Theory::Effort level, int cardinality,
+                    std::vector< Node >& clique ) {
+  if( d_reps_size>unsigned(cardinality) ){
+    if( d_total_diseq_internal==d_reps_size*( d_reps_size - 1 ) ){
+      if( d_reps_size>1 ){
+        //quick clique check, all reps form a clique
+        for( iterator it = begin(); it != end(); ++it ){
+          if( it->second->valid() ){
+            clique.push_back( it->first );
+          }
+        }
+        Trace("quick-clique") << "Found quick clique" << std::endl;
+        return true;
+      }else{
+        return false;
+      }
+    }else if( options::ufssRegions() || options::ufssEagerSplits() ||
+              level==Theory::EFFORT_FULL ) {
+      //build test clique, up to size cardinality+1
+      if( d_testCliqueSize<=unsigned(cardinality) ){
+        std::vector< Node > newClique;
+        if( d_testCliqueSize<unsigned(cardinality) ){
+          for( iterator it = begin(); it != end(); ++it ){
+            //if not in the test clique, add it to the set of new members
+            if( it->second->valid() &&
+                ( d_testClique.find( it->first ) == d_testClique.end() ||
+                  !d_testClique[ it->first ] ) ){
+              //if( it->second->getNumInternalDisequalities()>cardinality ||
+              //    level==Theory::EFFORT_FULL ){
+              newClique.push_back( it->first );
+              //}
+            }
+          }
+          //choose remaining nodes with the highest degrees
+          sortInternalDegree sidObj;
+          sidObj.r = this;
+          std::sort( newClique.begin(), newClique.end(), sidObj );
+          int offset = ( cardinality - d_testCliqueSize ) + 1;
+          newClique.erase( newClique.begin() + offset, newClique.end() );
+        }else{
+          //scan for the highest degree
+          int maxDeg = -1;
+          Node maxNode;
+          for( std::map< Node, RegionNodeInfo* >::iterator
+                 it = d_nodes.begin(); it != d_nodes.end(); ++it ){
+            //if not in the test clique, add it to the set of new members
+            if( it->second->valid() &&
+                ( d_testClique.find( it->first )==d_testClique.end() ||
+                  !d_testClique[ it->first ] ) ){
+              if( it->second->getNumInternalDisequalities()>maxDeg ){
+                maxDeg = it->second->getNumInternalDisequalities();
+                maxNode = it->first;
+              }
+            }
+          }
+          Assert( maxNode!=Node::null() );
+          newClique.push_back( maxNode );
+        }
+        //check splits internal to new members
+        for( int j=0; j<(int)newClique.size(); j++ ){
+          Debug("uf-ss-debug") << "Choose to add clique member "
+                               << newClique[j] << std::endl;
+          for( int k=(j+1); k<(int)newClique.size(); k++ ){
+            if( !isDisequal( newClique[j], newClique[k], 1 ) ){
+              Node at_j = newClique[j];
+              Node at_k = newClique[k];              
+              Node j_eq_k =
+                NodeManager::currentNM()->mkNode( EQUAL, at_j, at_k );
+              d_splits[ j_eq_k ] = true;
+              d_splitsSize = d_splitsSize + 1;
+            }
+          }
+          //check disequalities with old members
+          for( NodeBoolMap::iterator it = d_testClique.begin();
+               it != d_testClique.end(); ++it ){
+            if( (*it).second ){
+              if( !isDisequal( (*it).first, newClique[j], 1 ) ){
+                Node at_it = (*it).first;
+                Node at_j = newClique[j];
+                Node it_eq_j = at_it.eqNode(at_j);
+                d_splits[ it_eq_j ] = true;
+                d_splitsSize = d_splitsSize + 1;
+              }
+            }
+          }
+        }
+        //add new clique members to test clique
+        for( int j=0; j<(int)newClique.size(); j++ ){
+          d_testClique[ newClique[j] ] = true;
+          d_testCliqueSize = d_testCliqueSize + 1;
+        }
+      }
+      // Check if test clique has larger size than cardinality, and
+      // forms a clique.
+      if( d_testCliqueSize >= unsigned(cardinality+1) && d_splitsSize==0 ){
+        //test clique is a clique
+        for( NodeBoolMap::iterator it = d_testClique.begin();
+             it != d_testClique.end(); ++it ){
+          if( (*it).second ){
+            clique.push_back( (*it).first );
+          }
+        }
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+bool Region::getCandidateClique( int cardinality, std::vector< Node >& clique )
+{
+  if( d_testCliqueSize>=unsigned(cardinality+1) ){
+    //test clique is a clique
+    for( NodeBoolMap::iterator it = d_testClique.begin();
+         it != d_testClique.end(); ++it ){
+      if( (*it).second ){
+        clique.push_back( (*it).first );
+      }
+    }
+    return true;
+  }
+  return false;
+}
+
+void Region::getNumExternalDisequalities(
+    std::map< Node, int >& num_ext_disequalities ){
+  for( Region::iterator it = begin(); it != end(); ++it ){
+    RegionNodeInfo* rni = it->second;
+    if( rni->valid() ){
+      DiseqList* del = rni->get(0);
+      for( DiseqList::iterator it2 = del->begin(); it2 != del->end(); ++it2 ){
+        if( (*it2).second ){
+          num_ext_disequalities[ (*it2).first ]++;
+        }
+      }
+    }
+  }
+}
+
+void Region::debugPrint( const char* c, bool incClique ) {
+  Debug( c ) << "Num reps: " << d_reps_size << std::endl;
+  for( Region::iterator it = begin(); it != end(); ++it ){
+    RegionNodeInfo* rni = it->second;
+    if( rni->valid() ){
+      Node n = it->first;
+      Debug( c ) << "   " << n << std::endl;
+      for( int i=0; i<2; i++ ){
+        Debug( c ) << "      " << ( i==0 ? "Ext" : "Int" ) << " disequal:";
+        DiseqList* del = rni->get(i);
+        for( DiseqList::iterator it2 = del->begin(); it2 != del->end(); ++it2 ){
+          if( (*it2).second ){
+            Debug( c ) << " " << (*it2).first;
+          }
+        }
+        Debug( c ) << ", total = " << del->size() << std::endl;
+      }
+    }
+  }
+  Debug( c ) << "Total disequal: " << d_total_diseq_external << " external,";
+  Debug( c ) << " " << d_total_diseq_internal << " internal." << std::endl;
+
+  if( incClique ){
+    if( !d_testClique.empty() ){
+      Debug( c ) << "Candidate clique members: " << std::endl;
+      Debug( c ) << "   ";
+      for( NodeBoolMap::iterator it = d_testClique.begin();
+           it != d_testClique.end(); ++ it ){
+        if( (*it).second ){
+          Debug( c ) << (*it).first << " ";
+        }
+      }
+      Debug( c ) << ", size = " << d_testCliqueSize << std::endl;
+    }
+    if( !d_splits.empty() ){
+      Debug( c ) << "Required splits: " << std::endl;
+      Debug( c ) << "   ";
+      for( NodeBoolMap::iterator it = d_splits.begin(); it != d_splits.end();
+           ++ it ){
+        if( (*it).second ){
+          Debug( c ) << (*it).first << " ";
+        }
+      }
+      Debug( c ) << ", size = " << d_splitsSize << std::endl;
+    }
+  }
+}
+
+SortModel::SortModel( Node n,
+                      context::Context* c,
+                      context::UserContext* u,
+                      StrongSolverTheoryUF* thss )
+  : d_type( n.getType() )
+  , d_thss( thss )
+  , d_regions_index( c, 0 )
+  , d_regions_map( c )
+  , d_split_score( c )
+  , d_disequalities_index( c, 0 )
+  , d_reps( c, 0 )
+  , d_conflict( c, false )
+  , d_cardinality( c, 1 )
+  , d_aloc_cardinality( u, 0 )
+  , d_hasCard( c, false )
+  , d_maxNegCard( c, 0 )
+  , d_initialized( u, false )
+  , d_lemma_cache( u )
+{
+  d_cardinality_term = n;
+  //if( d_type.isSort() ){
+  //  TypeEnumerator te(tn);
+  //  d_cardinality_term = *te;
+  //}else{
+  //  d_cardinality_term = tn.mkGroundTerm();
+  //}
+}
+
+SortModel::~SortModel() {
+  for(std::vector<Region*>::iterator i = d_regions.begin();
+      i != d_regions.end(); ++i) {
+    Region* region = *i;
+    delete region;
+  }
+  d_regions.clear();
+}
+
+/** initialize */
+void SortModel::initialize( OutputChannel* out ){
+  if( !d_initialized ){
+    d_initialized = true;
+    allocateCardinality( out );
+  }
+}
+
+/** new node */
+void SortModel::newEqClass( Node n ){
+  if( !d_conflict ){
+    if( d_regions_map.find( n )==d_regions_map.end() ){
+      // Must generate totality axioms for every cardinality we have
+      // allocated thus far.
+      for( std::map< int, Node >::iterator it = d_cardinality_literal.begin();
+           it != d_cardinality_literal.end(); ++it ){
+        if( applyTotality( it->first ) ){
+          addTotalityAxiom( n, it->first, &d_thss->getOutputChannel() );
+        }
+      }
+      if( options::ufssTotality() ){
+        // Regions map will store whether we need to equate this term
+        // with a constant equivalence class.
+        if( std::find( d_totality_terms[0].begin(), d_totality_terms[0].end(), n )==d_totality_terms[0].end() ){
+          d_regions_map[n] = 0;
+        }else{
+          d_regions_map[n] = -1;
+        }
+      }else{
+        if( !options::ufssRegions() ){
+          // If not using regions, always add new equivalence classes
+          // to region index = 0.
+          d_regions_index = 0;
+        }
+        d_regions_map[n] = d_regions_index;
+        Debug("uf-ss") << "StrongSolverTheoryUF: New Eq Class " << n
+                       << std::endl;
+        Debug("uf-ss-debug") << d_regions_index << " "
+                             << (int)d_regions.size() << std::endl;
+        if( d_regions_index<d_regions.size() ){
+          d_regions[ d_regions_index ]->debugPrint("uf-ss-debug",true);
+          d_regions[ d_regions_index ]->setValid(true);
+          Assert( !options::ufssRegions() ||
+                  d_regions[ d_regions_index ]->getNumReps()==0 );
+        }else{
+          d_regions.push_back( new Region( this, d_thss->getSatContext() ) );
+        }
+        d_regions[ d_regions_index ]->addRep( n );
+        d_regions_index = d_regions_index + 1;
+      }
+      d_reps = d_reps + 1;
+    }
+  }
+}
+
+/** merge */
+void SortModel::merge( Node a, Node b ){
+  if( !d_conflict ){
+    if( options::ufssTotality() ){
+      if( d_regions_map[b]==-1 ){
+        d_regions_map[a] = -1;
+      }
+      d_regions_map[b] = -1;
+    }else{
+      //Assert( a==d_th->d_equalityEngine.getRepresentative( a ) );
+      //Assert( b==d_th->d_equalityEngine.getRepresentative( b ) );
+      Debug("uf-ss") << "StrongSolverTheoryUF: Merging "
+                     << a << " = " << b << "..." << std::endl;
+      if( a!=b ){
+        Assert( d_regions_map.find( a )!=d_regions_map.end() );
+        Assert( d_regions_map.find( b )!=d_regions_map.end() );
+        int ai = d_regions_map[a];
+        int bi = d_regions_map[b];
+        Debug("uf-ss") << "   regions: " << ai << " " << bi << std::endl;
+        if( ai!=bi ){
+          if( d_regions[ai]->getNumReps()==1  ){
+            int ri = combineRegions( bi, ai );
+            d_regions[ri]->setEqual( a, b );
+            checkRegion( ri );
+          }else if( d_regions[bi]->getNumReps()==1 ){
+            int ri = combineRegions( ai, bi );
+            d_regions[ri]->setEqual( a, b );
+            checkRegion( ri );
+          }else{
+            // Either move a to d_regions[bi], or b to d_regions[ai].
+            RegionNodeInfo* a_region_info = d_regions[ai]->getRegionInfo(a);
+            RegionNodeInfo* b_region_info = d_regions[bi]->getRegionInfo(b);
+            int aex = ( a_region_info->getNumInternalDisequalities() -
+                        getNumDisequalitiesToRegion( a, bi ) );
+            int bex = ( b_region_info->getNumInternalDisequalities() -
+                        getNumDisequalitiesToRegion( b, ai ) );
+            // Based on which would produce the fewest number of
+            // external disequalities.
+            if( aex<bex ){
+              moveNode( a, bi );
+              d_regions[bi]->setEqual( a, b );
+            }else{
+              moveNode( b, ai );
+              d_regions[ai]->setEqual( a, b );
+            }
+            checkRegion( ai );
+            checkRegion( bi );
+          }
+        }else{
+          d_regions[ai]->setEqual( a, b );
+          checkRegion( ai );
+        }
+        d_regions_map[b] = -1;
+      }
+      d_reps = d_reps - 1;
+
+      if( !d_conflict ){
+        if( options::ufssDiseqPropagation() ){
+          //notify the disequality propagator
+          d_thss->getDisequalityPropagator()->merge(a, b);
+        }
+        if( options::ufssSymBreak() ){
+          d_thss->getSymmetryBreaker()->merge(a, b);
+        }
+      }
+    }
+  }
+}
+
+/** assert terms are disequal */
+void SortModel::assertDisequal( Node a, Node b, Node reason ){
+  if( !d_conflict ){
+    if( options::ufssTotality() ){
+      //do nothing
+    }else{
+      //if they are not already disequal
+      a = d_thss->getTheory()->d_equalityEngine.getRepresentative( a );
+      b = d_thss->getTheory()->d_equalityEngine.getRepresentative( b );
+      int ai = d_regions_map[a];
+      int bi = d_regions_map[b];
+      if( !d_regions[ai]->isDisequal( a, b, ai==bi ) ){
+        Debug("uf-ss") << "Assert disequal " << a << " != " << b << "..." << std::endl;
+        //if( reason.getKind()!=NOT || reason[0].getKind()!=EQUAL ||
+        //    a!=reason[0][0] || b!=reason[0][1] ){
+        //  Notice() << "Assert disequal " << a << " != " << b << ", reason = " << reason << "..." << std::endl;
+        //}
+        Debug("uf-ss-disequal") << "Assert disequal " << a << " != " << b << "..." << std::endl;
+        //add to list of disequalities
+        if( d_disequalities_index<d_disequalities.size() ){
+          d_disequalities[d_disequalities_index] = reason;
+        }else{
+          d_disequalities.push_back( reason );
+        }
+        d_disequalities_index = d_disequalities_index + 1;
+        //now, add disequalities to regions
+        Assert( d_regions_map.find( a )!=d_regions_map.end() );
+        Assert( d_regions_map.find( b )!=d_regions_map.end() );
+        Debug("uf-ss") << "   regions: " << ai << " " << bi << std::endl;
+        if( ai==bi ){
+          //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 );
+          d_regions[bi]->setDisequal( b, a, 0, true );
+          checkRegion( ai );
+          checkRegion( bi );
+        }
+
+        if( !d_conflict ){
+          if( options::ufssDiseqPropagation() ){
+            //notify the disequality propagator
+            d_thss->getDisequalityPropagator()->assertDisequal(a, b, Node::null());
+          }
+          if( options::ufssSymBreak() ){
+            d_thss->getSymmetryBreaker()->assertDisequal(a, b);
+          }
+        }
+      }
+    }
+  }
+}
+
+bool SortModel::areDisequal( Node a, Node b ) {
+  Assert( a == d_thss->getTheory()->d_equalityEngine.getRepresentative( a ) );
+  Assert( b == d_thss->getTheory()->d_equalityEngine.getRepresentative( b ) );
+  if( d_regions_map.find( a )!=d_regions_map.end() &&
+      d_regions_map.find( b )!=d_regions_map.end() ){
+    int ai = d_regions_map[a];
+    int bi = d_regions_map[b];
+    return d_regions[ai]->isDisequal(a, b, ai==bi ? 1 : 0);
+  }else{
+    return false;
+  }
+}
+
+/** check */
+void SortModel::check( Theory::Effort level, OutputChannel* out ){
+  if( level>=Theory::EFFORT_STANDARD && d_hasCard && !d_conflict ){
+    Debug("uf-ss") << "StrongSolverTheoryUF: Check " << level << " " << d_type << std::endl;
+    if( level==Theory::EFFORT_FULL ){
+      Debug("fmf-full-check") << std::endl;
+      Debug("fmf-full-check") << "Full check for SortModel " << d_type << ", status : " << std::endl;
+      debugPrint("fmf-full-check");
+      Debug("fmf-full-check") << std::endl;
+    }
+    //Notice() << "StrongSolverTheoryUF: Check " << level << std::endl;
+    if( d_reps<=(unsigned)d_cardinality ){
+      Debug("uf-ss-debug") << "We have " << d_reps << " representatives for type " << d_type << ", <= " << d_cardinality << std::endl;
+      if( level==Theory::EFFORT_FULL ){
+        Debug("uf-ss-sat") << "We have " << d_reps << " representatives for type " << d_type << ", <= " << d_cardinality << std::endl;
+        //Notice() << "We have " << d_reps << " representatives for type " << d_type << ", <= " << cardinality << std::endl;
+        //Notice() << "Model size for " << d_type << " is " << cardinality << std::endl;
+        //Notice() << cardinality << " ";
+      }
+      return;
+    }else{
+      //first check if we can generate a clique conflict
+      if( !options::ufssTotality() ){
+        //do a check within each region
+        for( int i=0; i<(int)d_regions_index; i++ ){
+          if( d_regions[i]->valid() ){
+            std::vector< Node > clique;
+            if( d_regions[i]->check( level, d_cardinality, clique ) ){
+              if( options::ufssMode()==UF_SS_FULL ){
+                //add clique lemma
+                addCliqueLemma( clique, out );
+                return;
+              }
+            }else{
+              Trace("uf-ss-debug") << "No clique in Region #" << i << std::endl;
+            }
+          }
+        }
+      }
+      if( !applyTotality( d_cardinality ) ){
+        //do splitting on demand
+        bool addedLemma = false;
+        if( level==Theory::EFFORT_FULL || options::ufssEagerSplits() ){
+          Trace("uf-ss-debug") << "Add splits?" << std::endl;
+          //see if we have any recommended splits from large regions
+          for( int i=0; i<(int)d_regions_index; i++ ){
+            if( d_regions[i]->valid() && d_regions[i]->getNumReps()>d_cardinality ){
+              //just add the clique lemma
+              if( level==Theory::EFFORT_FULL && options::ufssCliqueSplits() ){
+                std::vector< Node > clique;
+                if( d_regions[i]->getCandidateClique( d_cardinality, clique ) ){
+                  //add clique lemma
+                  addCliqueLemma( clique, out );
+                  return;
+                }
+              }else{
+                int sp = addSplit( d_regions[i], out );
+                if( sp==1 ){
+                  addedLemma = true;
+#ifdef ONE_SPLIT_REGION
+                  break;
+#endif
+                }else if( sp==-1 ){
+                  check( level, out );
+                  return;
+                }
+              }
+            }
+          }
+        }
+        //If no added lemmas, force continuation via combination of regions.
+        if( level==Theory::EFFORT_FULL ){
+          if( !addedLemma ){
+            Trace("uf-ss-debug") << "No splits added. " << d_cardinality
+                                 << std::endl;
+            Trace("uf-ss-si")  << "Must combine region" << std::endl;
+            bool recheck = false;
+            if( options::sortInference()){
+              //If sort inference is enabled, search for regions with same sort.
+              std::map< int, int > sortsFound;
+              for( int i=0; i<(int)d_regions_index; i++ ){
+                if( d_regions[i]->valid() ){
+                  Node op = d_regions[i]->frontKey();
+                  int sort_id = d_thss->getSortInference()->getSortId(op);
+                  if( sortsFound.find( sort_id )!=sortsFound.end() ){
+                    Debug("fmf-full-check") << "Combined regions " << i << " " << sortsFound[sort_id] << std::endl;
+                    combineRegions( sortsFound[sort_id], i );
+                    recheck = true;
+                    break;
+                  }else{
+                    sortsFound[sort_id] = i;
+                  }
+                }
+              }
+            }
+            if( !recheck ) {
+              //naive strategy, force region combination involving the first valid region
+              for( int i=0; i<(int)d_regions_index; i++ ){
+                if( d_regions[i]->valid() ){
+                  int fcr = forceCombineRegion( i, false );
+                  Debug("fmf-full-check") << "Combined regions " << i << " " << fcr << std::endl;
+                  Trace("uf-ss-debug") << "Combined regions " << i << " " << fcr << std::endl;
+                  if( options::ufssMode()==UF_SS_FULL || fcr!=-1 ){
+                    recheck = true;
+                    break;
+                  }
+                }
+              }
+            }
+            if( recheck ){
+              Trace("uf-ss-debug") << "Must recheck." << std::endl;
+              check( level, out );
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+void SortModel::presolve() {
+  d_initialized = false;
+  d_aloc_cardinality = 0;
+}
+
+void SortModel::propagate( Theory::Effort level, OutputChannel* out ){
+
+}
+
+Node SortModel::getNextDecisionRequest(){
+  //request the current cardinality as a decision literal, if not already asserted
+  for( int i=1; i<=d_aloc_cardinality; i++ ){
+    if( !d_hasCard || i<d_cardinality ){
+      Node cn = d_cardinality_literal[ i ];
+      Assert( !cn.isNull() );
+      bool value;
+      if( !d_thss->getTheory()->d_valuation.hasSatValue( cn, value ) ){
+        Trace("uf-ss-dec") << "UFSS : Get next decision " << d_type << " " << i << std::endl;
+        return cn;
+      }else{
+        Trace("uf-ss-dec-debug") << "  dec : " << cn << " already asserted " << value << std::endl;
+        Assert( !value );
+      }
+    }
+  }
+  Trace("uf-ss-dec") << "UFSS : no decisions for " << d_type << "." << std::endl;
+  Trace("uf-ss-dec-debug") << "  aloc_cardinality = " << d_aloc_cardinality << ", cardinality = " << d_cardinality << ", hasCard = " << d_hasCard << std::endl;
+  Assert( d_hasCard );
+  return Node::null();
+}
+
+bool SortModel::minimize( OutputChannel* out, TheoryModel* m ){
+  if( options::ufssTotality() ){
+    //do nothing
+  }else{
+    if( m ){
+#if 0
+      // ensure that the constructed model is minimal
+      // if the model has terms that the strong solver does not know about
+      if( (int)m->d_rep_set.d_type_reps[ d_type ].size()>d_cardinality ){
+        eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( &m->d_equalityEngine );
+        while( !eqcs_i.isFinished() ){
+          Node eqc = (*eqcs_i);
+          if( eqc.getType()==d_type ){
+            //we must ensure that this equivalence class has been accounted for
+            if( d_regions_map.find( eqc )==d_regions_map.end() ){
+              //split on unaccounted for term and cardinality lemma term (as default)
+              Node splitEq = eqc.eqNode( d_cardinality_term );
+              splitEq = Rewriter::rewrite( splitEq );
+              Trace("uf-ss-minimize") << "Last chance minimize : " << splitEq << std::endl;
+              out->split( splitEq );
+              //tell the sat solver to explore the equals branch first
+              out->requirePhase( splitEq, true );
+              ++( d_thss->d_statistics.d_split_lemmas );
+              return false;
+            }
+          }
+          ++eqcs_i;
+        }
+        Assert( false );
+      }
+#endif
+    }else{
+      Trace("uf-ss-debug")  << "Minimize the UF model..." << std::endl;
+      //internal minimize, ensure that model forms a clique:
+      // if two equivalence classes are neither equal nor disequal, add a split
+      int validRegionIndex = -1;
+      for( int i=0; i<(int)d_regions_index; i++ ){
+        if( d_regions[i]->valid() ){
+          if( validRegionIndex!=-1 ){
+            combineRegions( validRegionIndex, i );
+            if( addSplit( d_regions[validRegionIndex], out )!=0 ){
+              Trace("uf-ss-debug") << "Minimize model : combined regions, found split. " << std::endl;
+              return false;
+            }
+          }else{
+            validRegionIndex = i;
+          }
+        }
+      }
+      Assert( validRegionIndex!=-1 );
+      if( addSplit( d_regions[validRegionIndex], out )!=0 ){
+        Trace("uf-ss-debug") << "Minimize model : found split. " << std::endl;
+        return false;
+      }
+      Trace("uf-ss-debug") << "Minimize success. " << std::endl;
+    }
+  }
+  return true;
+}
+
+
+int SortModel::getNumDisequalitiesToRegion( Node n, int ri ){
+  int ni = d_regions_map[n];
+  int counter = 0;
+  DiseqList* del = d_regions[ni]->getRegionInfo(n)->get(0);
+  for( DiseqList::iterator it = del->begin(); it != del->end(); ++it ){
+    if( (*it).second ){
+      if( d_regions_map[ (*it).first ]==ri ){
+        counter++;
+      }
+    }
+  }
+  return counter;
+}
+
+void SortModel::getDisequalitiesToRegions(int ri,
+                                          std::map< int, int >& regions_diseq)
+{
+  Region* region = d_regions[ri];
+  for(Region::iterator it = region->begin(); it != region->end(); ++it ){
+    if( it->second->valid() ){
+      DiseqList* del = it->second->get(0);
+      for( DiseqList::iterator it2 = del->begin(); it2 != del->end(); ++it2 ){
+        if( (*it2).second ){
+          Assert( isValid( d_regions_map[ (*it2).first ] ) );
+          //Notice() << "Found disequality with " << (*it2).first << ", region = " << d_regions_map[ (*it2).first ] << std::endl;
+          regions_diseq[ d_regions_map[ (*it2).first ] ]++;
+        }
+      }
+    }
+  }
+}
+
+void SortModel::setSplitScore( Node n, int s ){
+  if( d_split_score.find( n )!=d_split_score.end() ){
+    int ss = d_split_score[ n ];
+    d_split_score[ n ] = s>ss ? s : ss;
+  }else{
+    d_split_score[ n ] = s;
+  }
+  for( int i=0; i<(int)n.getNumChildren(); i++ ){
+    setSplitScore( n[i], s+1 );
+  }
+}
+
+void SortModel::assertCardinality( OutputChannel* out, int c, bool val ){
+  if( !d_conflict ){
+    Trace("uf-ss-assert")
+      << "Assert cardinality "<< d_type << " " << c << " " << val << " level = "
+      << d_thss->getTheory()->d_valuation.getAssertionLevel() << std::endl;
+    Assert( c>0 );
+    Node cl = getCardinalityLiteral( c );
+    if( val ){
+      bool doCheckRegions = !d_hasCard;
+      bool prevHasCard = d_hasCard;
+      d_hasCard = true;
+      if( !prevHasCard || c<d_cardinality ){
+        d_cardinality = c;
+        simpleCheckCardinality();
+        if( d_thss->d_conflict.get() ){
+          return;
+        }
+      }
+      //should check all regions now
+      if( doCheckRegions ){
+        for( int i=0; i<(int)d_regions_index; i++ ){
+          if( d_regions[i]->valid() ){
+            checkRegion( i );
+            if( d_conflict ){
+              return;
+            }
+          }
+        }
+      }
+    }else{
+      /*
+      if( options::ufssModelInference() ){
+        //check if we are at decision level 0
+        if( d_th->d_valuation.getAssertionLevel()==0 ){
+          Trace("uf-ss-mi") << "We have proved that no models of size " << c << " for type " << d_type << " exist." << std::endl;
+          Trace("uf-ss-mi") << "  # Clique lemmas : " << d_cliques[c].size() << std::endl;
+          if( d_cliques[c].size()==1 ){
+            if( d_totality_terms[c+1].empty() ){
+              Trace("uf-ss-mi") << "*** Establish model" << std::endl;
+              //d_totality_terms[c+1].insert( d_totality_terms[c].begin(), d_cliques[c][0].begin(), d_cliques[c][0].end() );
+            }
+          }
+        }
+      }
+      */
+      //see if we need to request a new cardinality
+      if( !d_hasCard ){
+        bool needsCard = true;
+        for( std::map< int, Node >::iterator it = d_cardinality_literal.begin(); it!=d_cardinality_literal.end(); ++it ){
+          if( it->first<=d_aloc_cardinality.get() ){
+            bool value;
+            if( !d_thss->getTheory()->d_valuation.hasSatValue( it->second, value ) ){
+              Debug("fmf-card-debug") << "..does not need allocate because we are waiting for " << it->second << std::endl;
+              needsCard = false;
+              break;
+            }
+          }
+        }
+        if( needsCard ){
+          allocateCardinality( out );
+        }
+      }else{
+        Debug("fmf-card-debug") << "..already has card = " << d_cardinality << std::endl;
+      }
+      if( c>d_maxNegCard.get() ){
+        Trace("uf-ss-com-card-debug") << "Maximum negative cardinality for " << d_type << " is now " << c << std::endl;
+        d_maxNegCard.set( c );
+        simpleCheckCardinality();
+      }
+    }
+  }
+}
+
+void SortModel::checkRegion( int ri, bool checkCombine ){
+  if( isValid(ri) && d_hasCard ){
+    Assert( d_cardinality>0 );
+    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 ){
+      //    int inDeg = d_regions[i]->d_disequalities_size[1][ it-> first ];
+      //    int outDeg = d_regions[i]->d_disequalities_size[0][ it-> first ];
+      //    if( inDeg<outDeg ){
+      //    }
+      //  }
+      //}
+      int riNew = forceCombineRegion( ri, true );
+      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 ) ){
+      if( options::ufssMode()==UF_SS_FULL ){
+        //explain clique
+        addCliqueLemma( clique, &d_thss->getOutputChannel() );
+      }
+    }
+  }
+}
+
+int SortModel::forceCombineRegion( int ri, bool useDensity ){
+  if( !useDensity ){
+    for( int i=0; i<(int)d_regions_index; i++ ){
+      if( ri!=i && d_regions[i]->valid() ){
+        return combineRegions( ri, i );
+      }
+    }
+    return -1;
+  }else{
+    //this region must merge with another
+    if( Debug.isOn("uf-ss-check-region") ){
+      Debug("uf-ss-check-region") << "We must combine Region #" << ri << ". " << std::endl;
+      d_regions[ri]->debugPrint("uf-ss-check-region");
+    }
+    //take region with maximum disequality density
+    double maxScore = 0;
+    int maxRegion = -1;
+    std::map< int, int > regions_diseq;
+    getDisequalitiesToRegions( ri, regions_diseq );
+    for( std::map< int, int >::iterator it = regions_diseq.begin(); it != regions_diseq.end(); ++it ){
+      Debug("uf-ss-check-region") << it->first << " : " << it->second << std::endl;
+    }
+    for( std::map< int, int >::iterator it = regions_diseq.begin(); it != regions_diseq.end(); ++it ){
+      Assert( it->first!=ri );
+      Assert( isValid( it->first ) );
+      Assert( d_regions[ it->first ]->getNumReps()>0 );
+      double tempScore = double(it->second)/double(d_regions[it->first]->getNumReps() );
+      if( tempScore>maxScore ){
+        maxRegion = it->first;
+        maxScore = tempScore;
+      }
+    }
+    if( maxRegion!=-1 ){
+      if( Debug.isOn("uf-ss-check-region") ){
+        Debug("uf-ss-check-region") << "Combine with region #" << maxRegion << ":" << std::endl;
+        d_regions[maxRegion]->debugPrint("uf-ss-check-region");
+      }
+      return combineRegions( ri, maxRegion );
+    }
+    return -1;
+  }
+}
+
+
+int SortModel::combineRegions( int ai, int bi ){
+#ifdef COMBINE_REGIONS_SMALL_INTO_LARGE
+  if( d_regions[ai]->getNumReps()<d_regions[bi]->getNumReps() ){
+    return combineRegions( bi, ai );
+  }
+#endif
+  Debug("uf-ss-region") << "uf-ss: Combine Region #" << bi << " with Region #" << ai << std::endl;
+  Assert( isValid( ai ) && isValid( bi ) );
+  Region* region_bi = d_regions[bi];
+  for(Region::iterator it = region_bi->begin(); it != region_bi->end(); ++it){
+    Region::RegionNodeInfo* rni = it->second;
+    if( rni->valid() ){
+      d_regions_map[ it->first ] = ai;
+    }
+  }
+  //update regions disequal DO_THIS?
+  d_regions[ai]->combine( d_regions[bi] );
+  d_regions[bi]->setValid( false );
+  return ai;
+}
+
+void SortModel::moveNode( Node n, int ri ){
+  Debug("uf-ss-region") << "uf-ss: Move node " << n << " to Region #" << ri << std::endl;
+  Assert( isValid( d_regions_map[ n ] ) );
+  Assert( isValid( ri ) );
+  //move node to region ri
+  d_regions[ri]->takeNode( d_regions[ d_regions_map[n] ], n );
+  d_regions_map[n] = ri;
+}
+
+void SortModel::allocateCardinality( OutputChannel* out ){
+  if( d_aloc_cardinality>0 ){
+    Trace("uf-ss-fmf") << "No model of size " << d_aloc_cardinality << " exists for type " << d_type << " in this branch" << std::endl;
+  }
+  Trace("uf-ss-debug") << "Allocate cardinality " << d_aloc_cardinality << " for type " << d_type << std::endl;
+  if( Trace.isOn("uf-ss-cliques") ){
+    Trace("uf-ss-cliques") << "Cliques of size " << (d_aloc_cardinality+1) << " for " << d_type << " : " << std::endl;
+    for( size_t i=0; i<d_cliques[ d_aloc_cardinality ].size(); i++ ){
+      Trace("uf-ss-cliques") << "  ";
+      for( size_t j=0; j<d_cliques[ d_aloc_cardinality ][i].size(); j++ ){
+        Trace("uf-ss-cliques") << d_cliques[ d_aloc_cardinality ][i][j] << " ";
+      }
+      Trace("uf-ss-cliques") << std::endl;
+    }
+  }
+
+  //allocate the lowest such that it is not asserted
+  Node cl;
+  bool increment;
+  do {
+    increment = false;
+    d_aloc_cardinality = d_aloc_cardinality + 1;
+    cl = getCardinalityLiteral( d_aloc_cardinality );
+    bool value;
+    if( d_thss->getTheory()->d_valuation.hasSatValue( cl, value ) ){
+      if( value ){
+        //if one is already asserted postively, abort
+        return;
+      }else{
+        increment = true;
+      }
+    }
+  }while( increment );
+
+  //check for abort case
+  if( options::ufssAbortCardinality()==d_aloc_cardinality ){
+    Message() << "Maximum cardinality reached." << std::endl;
+    exit( 1 );
+  }else{
+    if( applyTotality( d_aloc_cardinality ) ){
+      //must generate new cardinality lemma term
+      Node var;
+      if( d_aloc_cardinality==1 && !options::ufssTotalitySymBreak() ){
+        //get arbitrary ground term
+        var = d_cardinality_term;
+      }else{
+        std::stringstream ss;
+        ss << "_c_" << d_aloc_cardinality;
+        var = NodeManager::currentNM()->mkSkolem( ss.str(), d_type, "is a cardinality lemma term" );
+      }
+      if( d_aloc_cardinality-1<(int)d_totality_terms[0].size() ){
+        d_totality_terms[0][d_aloc_cardinality-1] = var;
+      }else{
+        d_totality_terms[0].push_back( var );
+      }
+      Trace("mkVar") << "allocateCardinality, mkVar : " << var << " : " << d_type << std::endl;
+      //must be distinct from all other cardinality terms
+      for( int i=0; i<(int)(d_totality_terms[0].size()-1); i++ ){
+        Node lem = NodeManager::currentNM()->mkNode( NOT, var.eqNode( d_totality_terms[0][i] ) );
+        Trace("uf-ss-lemma") << "Totality distinctness lemma : " << lem << std::endl;
+        d_thss->getOutputChannel().lemma( lem );
+      }
+    }
+
+    //add splitting lemma for cardinality constraint
+    Assert( !d_cardinality_term.isNull() );
+    Node lem = getCardinalityLiteral( d_aloc_cardinality );
+    lem = NodeManager::currentNM()->mkNode( OR, lem, lem.notNode() );
+    d_cardinality_lemma[ d_aloc_cardinality ] = lem;
+    //add as lemma to output channel
+    if( doSendLemma( lem ) ){
+      Trace("uf-ss-lemma") << "*** Cardinality split on : " << lem << std::endl;
+    }
+    //require phase
+    out->requirePhase( d_cardinality_literal[ d_aloc_cardinality ], true );
+    //add the appropriate lemma, propagate as decision
+    //Trace("uf-ss-prop-as-dec") << "Propagate as decision " << lem[0] << " " << d_type << std::endl;
+    //out->propagateAsDecision( lem[0] );
+    d_thss->d_statistics.d_max_model_size.maxAssign( d_aloc_cardinality );
+
+    if( applyTotality( d_aloc_cardinality ) ){
+      //must send totality axioms for each existing term
+      for( NodeIntMap::iterator it = d_regions_map.begin(); it != d_regions_map.end(); ++it ){
+        addTotalityAxiom( (*it).first, d_aloc_cardinality, &d_thss->getOutputChannel() );
+      }
+    }
+  }
+}
+
+int SortModel::addSplit( Region* r, OutputChannel* out ){
+  Node s;
+  if( r->hasSplits() ){
+    //take the first split you find
+    for( Region::split_iterator it = r->begin_splits();
+         it != r->end_splits(); ++it ){
+      if( (*it).second ){
+        s = (*it).first;
+        break;
+      }
+    }
+    Assert( s!=Node::null() );
+  }else{
+    if( options::ufssMode()!=UF_SS_FULL ){
+      // Since candidate clique is not reported, we may need to find
+      // splits manually.
+      for ( Region::iterator it = r->begin(); it != r->end(); ++it ){
+        if ( it->second->valid() ){
+          for ( Region::iterator it2 = r->begin(); it2 != r->end(); ++it2 ){
+            if ( it->second!=it2->second && it2->second->valid() ){
+              if( !r->isDisequal( it->first, it2->first, 1 ) ){
+                Node it_node = it->first;
+                Node it2_node = it2->first;
+                s = it_node.eqNode(it2_node);
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  if (!s.isNull() ){
+    //add lemma to output channel
+    Assert( s.getKind()==EQUAL );
+    Node ss = Rewriter::rewrite( s );
+    if( ss.getKind()!=EQUAL ){
+      Node b_t = NodeManager::currentNM()->mkConst( true );
+      Node b_f = NodeManager::currentNM()->mkConst( false );
+      if( ss==b_f ){
+        Trace("uf-ss-lemma") << "....Assert disequal directly : "
+                             << s[0] << " " << s[1] << std::endl;
+        assertDisequal( s[0], s[1], b_t );
+        return -1;
+      }else{
+        Trace("uf-ss-warn") << "Split on unknown literal : " << ss << std::endl;
+      }
+      if( ss==b_t ){
+        Message() << "Bad split " << s << std::endl;
+        exit( 16 );
+      }
+    }
+    if( options::sortInference()) {
+      for( int i=0; i<2; i++ ){
+        int si = d_thss->getSortInference()->getSortId( ss[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;
+    //Notice() << "*** Split on " << s << std::endl;
+    //split on the equality s
+    Node lem = NodeManager::currentNM()->mkNode( kind::OR, ss, ss.negate() );
+    if( doSendLemma( lem ) ){
+      Trace("uf-ss-lemma") << "*** Split on " << s << std::endl;
+      //tell the sat solver to explore the equals branch first
+      out->requirePhase( ss, true );
+      ++( d_thss->d_statistics.d_split_lemmas );
+    }
+    return 1;
+  }else{
+    return 0;
+  }
+}
+
+
+void SortModel::addCliqueLemma( std::vector< Node >& clique, OutputChannel* out ){
+  Assert( d_hasCard );
+  Assert( d_cardinality>0 );
+  while( clique.size()>size_t(d_cardinality+1) ){
+    clique.pop_back();
+  }
+  //debugging information
+  if( Trace.isOn("uf-ss-cliques") ){
+    std::vector< Node > clique_vec;
+    clique_vec.insert( clique_vec.begin(), clique.begin(), clique.end() );
+    addClique( d_cardinality, clique_vec );
+  }
+  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_thss->getTheory()->d_equalityEngine.getRepresentative(clique[i]);
+        Node r2 = d_thss->getTheory()->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 );
+    if( doSendLemma( lem ) ){
+      Trace("uf-ss-lemma") << "*** Add clique lemma " << lem << std::endl;
+      ++( d_thss->d_statistics.d_clique_lemmas );
+    }
+  }else{
+    //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_thss->getTheory()->d_equalityEngine.getRepresentative( d_disequalities[i][0][0] );
+      Node r2 = d_thss->getTheory()->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;
+        }
+      }
+    }
+    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_thss->getTheory()->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;
+        }
+      }
+      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;
+    }
+    //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_thss->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() );
+      if( doSendLemma( conflictNode ) ){
+        Trace("uf-ss-lemma") << "*** Add clique lemma " << conflictNode << std::endl;
+        ++( d_thss->d_statistics.d_clique_lemmas );
+      }
+    }
+
+    //DO_THIS: ensure that the same clique is not reported???  Check standard effort after assertDisequal can produce same clique.
+  }
+}
+
+void SortModel::addTotalityAxiom( Node n, int cardinality, OutputChannel* out ){
+  if( std::find( d_totality_terms[0].begin(), d_totality_terms[0].end(), n )==d_totality_terms[0].end() ){
+    if( std::find( d_totality_lems[n].begin(), d_totality_lems[n].end(), cardinality ) == d_totality_lems[n].end() ){
+      d_totality_lems[n].push_back( cardinality );
+      Node cardLit = d_cardinality_literal[ cardinality ];
+      int sort_id = 0;
+      if( options::sortInference() ){
+        sort_id = d_thss->getSortInference()->getSortId(n);
+      }
+      Trace("uf-ss-totality") << "Add totality lemma for " << n << " " << cardinality << ", sort id is " << sort_id << std::endl;
+      int use_cardinality = cardinality;
+      if( options::ufssTotalitySymBreak() ){
+        if( d_sym_break_index.find(n)!=d_sym_break_index.end() ){
+          use_cardinality = d_sym_break_index[n];
+        }else if( (int)d_sym_break_terms[n.getType()][sort_id].size()<cardinality-1 ){
+          use_cardinality = d_sym_break_terms[n.getType()][sort_id].size() + 1;
+          d_sym_break_terms[n.getType()][sort_id].push_back( n );
+          d_sym_break_index[n] = use_cardinality;
+          Trace("uf-ss-totality") << "Allocate symmetry breaking term " << n << ", index = " << use_cardinality << std::endl;
+          if( d_sym_break_terms[n.getType()][sort_id].size()>1 ){
+            //enforce canonicity
+            for( int i=2; i<use_cardinality; i++ ){
+              //can only be assigned to domain constant d if someone has been assigned domain constant d-1
+              Node eq = n.eqNode( getTotalityLemmaTerm( cardinality, i ) );
+              std::vector< Node > eqs;
+              for( unsigned j=0; j<(d_sym_break_terms[n.getType()][sort_id].size()-1); j++ ){
+                eqs.push_back( d_sym_break_terms[n.getType()][sort_id][j].eqNode( getTotalityLemmaTerm( cardinality, i-1 ) ) );
+              }
+              Node ax = eqs.size()==1 ? eqs[0] : NodeManager::currentNM()->mkNode( OR, eqs );
+              Node lem = NodeManager::currentNM()->mkNode( IMPLIES, eq, ax );
+              Trace("uf-ss-lemma") << "*** Add (canonicity) totality axiom " << lem << std::endl;
+              d_thss->getOutputChannel().lemma( lem );
+            }
+          }
+        }
+      }
+
+      std::vector< Node > eqs;
+      for( int i=0; i<use_cardinality; i++ ){
+        eqs.push_back( n.eqNode( getTotalityLemmaTerm( cardinality, i ) ) );
+      }
+      Node ax = NodeManager::currentNM()->mkNode( OR, eqs );
+      Node lem = NodeManager::currentNM()->mkNode( IMPLIES, cardLit, ax );
+      Trace("uf-ss-lemma") << "*** Add totality axiom " << lem << std::endl;
+      //send as lemma to the output channel
+      d_thss->getOutputChannel().lemma( lem );
+      ++( d_thss->d_statistics.d_totality_lemmas );
+    }
+  }
+}
+
+void SortModel::addClique( int c, std::vector< Node >& clique ) {
+  //if( d_clique_trie[c].add( clique ) ){
+  //  d_cliques[ c ].push_back( clique );
+  //}
+}
+
+
+/** apply totality */
+bool SortModel::applyTotality( int cardinality ){
+  return options::ufssTotality() || cardinality<=options::ufssTotalityLimited();
+  // || ( options::ufssModelInference() && !d_totality_terms[cardinality].empty() );
+}
+
+/** get totality lemma terms */
+Node SortModel::getTotalityLemmaTerm( int cardinality, int i ){
+  return d_totality_terms[0][i];
+  //}else{
+  //  return d_totality_terms[cardinality][i];
+  //}
+}
+
+void SortModel::simpleCheckCardinality() {
+  if( d_maxNegCard.get()!=0 && d_hasCard.get() && d_cardinality.get()<d_maxNegCard.get() ){
+    Node lem = NodeManager::currentNM()->mkNode( AND, getCardinalityLiteral( d_cardinality.get() ),
+                                                      getCardinalityLiteral( d_maxNegCard.get() ).negate() );
+    Trace("uf-ss-lemma") << "*** Simple cardinality conflict : " << lem << std::endl;
+    d_thss->getOutputChannel().conflict( lem );
+    d_thss->d_conflict.set( true );
+  }
+}
+
+bool SortModel::doSendLemma( Node lem ) {
+  if( d_lemma_cache.find( lem )==d_lemma_cache.end() ){
+    d_lemma_cache[lem] = true;
+    d_thss->getOutputChannel().lemma( lem );
+    return true;
+  }else{
+    return false;
+  }
+}
+
+void SortModel::debugPrint( const char* c ){
+  if( Debug.isOn( c ) ){
+    Debug( c ) << "Number of reps = " << d_reps << std::endl;
+    Debug( c ) << "Cardinality req = " << d_cardinality << std::endl;
+    unsigned debugReps = 0;
+    for( unsigned i=0; i<d_regions_index; i++ ){
+      Region* region = d_regions[i]; 
+      if( region->valid() ){
+        Debug( c ) << "Region #" << i << ": " << std::endl;
+        region->debugPrint( c, true );
+        Debug( c ) << std::endl;
+        for( Region::iterator it = region->begin(); it != region->end(); ++it ){
+          if( it->second->valid() ){
+            if( d_regions_map[ it->first ]!=(int)i ){
+              Debug( c ) << "***Bad regions map : " << it->first
+                         << " " << d_regions_map[ it->first ].get() << std::endl;
+            }
+          }
+        }
+        debugReps += region->getNumReps();
+      }
+    }
+
+    if( debugReps!=d_reps ){
+      Debug( c ) << "***Bad reps: " << d_reps << ", "
+                 << "actual = " << debugReps << std::endl;
+    }
+  }
+}
+
+bool SortModel::debugModel( TheoryModel* m ){
+  if( Trace.isOn("uf-ss-warn") ){
+    std::vector< Node > eqcs;
+    eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( m->d_equalityEngine );
+    while( !eqcs_i.isFinished() ){
+      Node eqc = (*eqcs_i);
+      if( eqc.getType()==d_type ){
+        if( std::find( eqcs.begin(), eqcs.end(), eqc )==eqcs.end() ){
+          eqcs.push_back( eqc );
+          //we must ensure that this equivalence class has been accounted for
+          if( d_regions_map.find( eqc )==d_regions_map.end() ){
+            Trace("uf-ss-warn") << "WARNING : equivalence class " << eqc << " unaccounted for." << std::endl;
+            Trace("uf-ss-warn") << "  type : " << d_type << std::endl;
+            Trace("uf-ss-warn") << "  kind : " << eqc.getKind() << std::endl;
+          }
+        }
+      }
+      ++eqcs_i;
+    }
+  }
+  int nReps = m->d_rep_set.d_type_reps.find( d_type )==m->d_rep_set.d_type_reps.end() ? 0 : (int)m->d_rep_set.d_type_reps[d_type].size();
+  if( nReps!=(d_maxNegCard+1) ){
+    Trace("uf-ss-warn") << "WARNING : Model does not have same # representatives as cardinality for " << d_type << "." << std::endl;
+    Trace("uf-ss-warn") << "   Max neg cardinality : " << d_maxNegCard << std::endl;
+    Trace("uf-ss-warn") << "   # Reps : " << nReps << std::endl;
+    if( d_maxNegCard>=nReps ){
+      /*
+      for( unsigned i=0; i<d_fresh_aloc_reps.size(); i++ ){
+        if( add>0 && !m->d_equalityEngine->hasTerm( d_fresh_aloc_reps[i] ) ){
+          m->d_rep_set.d_type_reps[d_type].push_back( d_fresh_aloc_reps[i] );
+          add--;
+        }
+      }
+      for( int i=0; i<add; i++ ){
+        std::stringstream ss;
+        ss << "r_" << d_type << "_";
+        Node nn = NodeManager::currentNM()->mkSkolem( ss.str(), d_type, "enumeration to meet negative card constraint" );
+        d_fresh_aloc_reps.push_back( nn );
+        m->d_rep_set.d_type_reps[d_type].push_back( nn );
+      }
+      */
+      while( (int)d_fresh_aloc_reps.size()<=d_maxNegCard ){
+        std::stringstream ss;
+        ss << "r_" << d_type << "_";
+        Node nn = NodeManager::currentNM()->mkSkolem( ss.str(), d_type, "enumeration to meet negative card constraint" );
+        d_fresh_aloc_reps.push_back( nn );
+      }
+      if( d_maxNegCard==0 ){
+        m->d_rep_set.d_type_reps[d_type].push_back( d_fresh_aloc_reps[0] );
+      }else{
+        //must add lemma
+        std::vector< Node > force_cl;
+        for( int i=0; i<=d_maxNegCard; i++ ){
+          for( int j=(i+1); j<=d_maxNegCard; j++ ){
+            force_cl.push_back( d_fresh_aloc_reps[i].eqNode( d_fresh_aloc_reps[j] ).negate() );
+          }
+        }
+        Node cl = getCardinalityLiteral( d_maxNegCard );
+        Node lem = NodeManager::currentNM()->mkNode( OR, cl, NodeManager::currentNM()->mkNode( AND, force_cl ) );
+        Trace("uf-ss-lemma") << "*** Enforce negative cardinality constraint lemma : " << lem << std::endl;
+        d_thss->getOutputChannel().lemma( lem );
+        return false;
+      }
+    }
+  }
+  return true;
+}
+
+int SortModel::getNumRegions(){
+  int count = 0;
+  for( int i=0; i<(int)d_regions_index; i++ ){
+    if( d_regions[i]->valid() ){
+      count++;
+    }
+  }
+  return count;
+}
+
+Node SortModel::getCardinalityLiteral( int c ) {
+  if( d_cardinality_literal.find(c) == d_cardinality_literal.end() ){
+    Node c_as_rational = NodeManager::currentNM()->mkConst(Rational(c));
+    d_cardinality_literal[c] =
+      NodeManager::currentNM()->mkNode(CARDINALITY_CONSTRAINT,
+                                       d_cardinality_term,
+                                       c_as_rational);
+
+  }
+  return d_cardinality_literal[c];
+}
+
+StrongSolverTheoryUF::StrongSolverTheoryUF(context::Context* c,
+                                           context::UserContext* u,
+                                           OutputChannel& out, TheoryUF* th)
+    : d_out(&out),
+      d_th(th),
+      d_conflict(c, false),
+      d_rep_model(),
+      d_aloc_com_card(u, 0),
+      d_com_card_assertions(c),
+      d_min_pos_com_card(c, -1),
+      d_card_assertions_eqv_lemma(u),
+      d_min_pos_tn_master_card(c, -1),
+      d_rel_eqc(c),
+      d_deq_prop(NULL),
+      d_sym_break(NULL) {
+  if (options::ufssDiseqPropagation()) {
+    d_deq_prop = new DisequalityPropagator(th->getQuantifiersEngine(), this);
+  }
+  if (options::ufssSymBreak()) {
+    d_sym_break = new SubsortSymmetryBreaker(th->getQuantifiersEngine(), c);
+  }
+}
+
+StrongSolverTheoryUF::~StrongSolverTheoryUF() {
+  for (std::map<TypeNode, SortModel*>::iterator it = d_rep_model.begin();
+       it != d_rep_model.end(); ++it) {
+    delete it->second;
+  }
+  if (d_sym_break) {
+    delete d_sym_break;
+  }
+  if (d_deq_prop) {
+    delete d_deq_prop;
+  }
+}
+
+SortInference* StrongSolverTheoryUF::getSortInference() {
+  return d_th->getQuantifiersEngine()->getTheoryEngine()->getSortInference();
+}
+
+/** get default sat context */
+context::Context* StrongSolverTheoryUF::getSatContext() {
+  return d_th->getSatContext();
+}
+
+/** get default output channel */
+OutputChannel& StrongSolverTheoryUF::getOutputChannel() {
+  return d_th->getOutputChannel();
+}
+
+/** ensure eqc */
+void StrongSolverTheoryUF::ensureEqc( SortModel* c, Node a ) {
+  if( !hasEqc( a ) ){
+    d_rel_eqc[a] = true;
+    Trace("uf-ss-solver") << "StrongSolverTheoryUF: New eq class " << a << " : " << a.getType() << std::endl;
+    c->newEqClass( a );
+    if( options::ufssSymBreak() ){
+      d_sym_break->newEqClass( a );
+    }
+    Trace("uf-ss-solver") << "StrongSolverTheoryUF: Done New eq class." << std::endl;
+  }
+}
+
+void StrongSolverTheoryUF::ensureEqcRec( Node n ) {
+  if( !hasEqc( n ) ){
+    SortModel* c = getSortModel( n );
+    if( c ){
+      ensureEqc( c, n );
+    }
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      ensureEqcRec( n[i] );
+    }
+  }
+}
+
+/** has eqc */
+bool StrongSolverTheoryUF::hasEqc( Node a ) {
+  NodeBoolMap::iterator it = d_rel_eqc.find( a );
+  return it!=d_rel_eqc.end() && (*it).second;
+}
+
+/** new node */
+void StrongSolverTheoryUF::newEqClass( Node a ){
+  SortModel* c = getSortModel( a );
+  if( c ){
+#ifdef LAZY_REL_EQC
+    //do nothing
+#else
+    Trace("uf-ss-solver") << "StrongSolverTheoryUF: New eq class " << a << " : " << a.getType() << std::endl;
+    c->newEqClass( a );
+    if( options::ufssSymBreak() ){
+      d_sym_break->newEqClass( a );
+    }
+    Trace("uf-ss-solver") << "StrongSolverTheoryUF: Done New eq class." << std::endl;
+#endif
+  }
+}
+
+/** merge */
+void StrongSolverTheoryUF::merge( Node a, Node b ){
+  //TODO: ensure they are relevant
+  SortModel* c = getSortModel( a );
+  if( c ){
+#ifdef LAZY_REL_EQC
+    ensureEqc( c, a );
+    if( hasEqc( b ) ){
+      Trace("uf-ss-solver") << "StrongSolverTheoryUF: Merge " << a << " " << b << " : " << a.getType() << std::endl;
+      c->merge( a, b );
+      Trace("uf-ss-solver") << "StrongSolverTheoryUF: Done Merge." << std::endl;
+    }else{
+      //c->assignEqClass( b, a );
+      d_rel_eqc[b] = true;
+    }
+#else
+    Trace("uf-ss-solver") << "StrongSolverTheoryUF: Merge " << a << " " << b << " : " << a.getType() << std::endl;
+    c->merge( a, b );
+    Trace("uf-ss-solver") << "StrongSolverTheoryUF: Done Merge." << std::endl;
+#endif
+  }else{
+    if( options::ufssDiseqPropagation() ){
+      d_deq_prop->merge(a, b);
+    }
+  }
+}
+
+/** assert terms are disequal */
+void StrongSolverTheoryUF::assertDisequal( Node a, Node b, Node reason ){
+  SortModel* c = getSortModel( a );
+  if( c ){
+#ifdef LAZY_REL_EQC
+    ensureEqc( c, a );
+    ensureEqc( c, b );
+#endif
+    Trace("uf-ss-solver") << "StrongSolverTheoryUF: Assert disequal " << a << " " << b << " : " << a.getType() << std::endl;
+    //Assert( d_th->d_equalityEngine.getRepresentative( a )==a );
+    //Assert( d_th->d_equalityEngine.getRepresentative( b )==b );
+    c->assertDisequal( a, b, reason );
+    Trace("uf-ss-solver") << "StrongSolverTheoryUF: Done Assert disequal." << std::endl;
+  }else{
+    if( options::ufssDiseqPropagation() ){
+      d_deq_prop->assertDisequal(a, b, reason);
+    }
+  }
+}
+
+/** assert a node */
+void StrongSolverTheoryUF::assertNode( Node n, bool isDecision ){
+  Trace("uf-ss") << "Assert " << n << " " << isDecision << std::endl;
+#ifdef LAZY_REL_EQC
+  ensureEqcRec( n );
+#endif
+  bool polarity = n.getKind() != kind::NOT;
+  TNode lit = polarity ? n : n[0];
+  if( lit.getKind()==CARDINALITY_CONSTRAINT ){
+    TypeNode tn = lit[0].getType();
+    Assert( tn.isSort() );
+    Assert( d_rep_model[tn] );
+    int nCard = lit[1].getConst<Rational>().getNumerator().getSignedInt();
+    Node ct = d_rep_model[tn]->getCardinalityTerm();
+    Trace("uf-ss-debug") << "...check cardinality terms : " << lit[0] << " " << ct << std::endl;
+    if( lit[0]==ct ){
+      if( options::ufssFairnessMonotone() ){
+        Trace("uf-ss-com-card-debug") << "...set master/slave" << std::endl;
+        if( tn!=d_tn_mono_master ){
+          std::map< TypeNode, bool >::iterator it = d_tn_mono_slave.find( tn );
+          if( it==d_tn_mono_slave.end() ){
+            bool isMonotonic;
+            if( d_th->getQuantifiersEngine() ){
+              isMonotonic = getSortInference()->isMonotonic( tn );
+            }else{
+              //if ground, everything is monotonic
+              isMonotonic = true;
+            }
+            if( isMonotonic ){
+              if( d_tn_mono_master.isNull() ){
+                Trace("uf-ss-com-card-debug") << "uf-ss-fair-monotone: Set master : " << tn << std::endl;
+                d_tn_mono_master = tn;
+              }else{
+                Trace("uf-ss-com-card-debug") << "uf-ss-fair-monotone: Set slave : " << tn << std::endl;
+                d_tn_mono_slave[tn] = true;
+              }
+            }else{
+              Trace("uf-ss-com-card-debug") << "uf-ss-fair-monotone: Set non-monotonic : " << tn << std::endl;
+              d_tn_mono_slave[tn] = false;
+            }
+          }
+        }
+        //set the minimum positive cardinality for master if necessary
+        if( polarity && tn==d_tn_mono_master ){
+          Trace("uf-ss-com-card-debug") << "...set min positive cardinality" << std::endl;
+          if( d_min_pos_tn_master_card.get()==-1 || nCard<d_min_pos_tn_master_card.get() ){
+            d_min_pos_tn_master_card.set( nCard );
+          }
+        }
+      }
+      Trace("uf-ss-com-card-debug") << "...assert cardinality" << std::endl;
+      d_rep_model[tn]->assertCardinality( d_out, nCard, polarity );
+      //check if combined cardinality is violated
+      checkCombinedCardinality();
+    }else{
+      //otherwise, make equal via lemma
+      if( d_card_assertions_eqv_lemma.find( lit )==d_card_assertions_eqv_lemma.end() ){
+        Node eqv_lit = NodeManager::currentNM()->mkNode( CARDINALITY_CONSTRAINT, ct, lit[1] );
+        eqv_lit = lit.eqNode( eqv_lit );
+        Trace("uf-ss-lemma") << "*** Cardinality equiv lemma : " << eqv_lit << std::endl;
+        getOutputChannel().lemma( eqv_lit );
+        d_card_assertions_eqv_lemma[lit] = true;
+      }
+    }
+  }else if( lit.getKind()==COMBINED_CARDINALITY_CONSTRAINT ){
+    d_com_card_assertions[lit] = polarity;
+    if( polarity ){
+      //safe to assume int here
+      int nCard = lit[0].getConst<Rational>().getNumerator().getSignedInt();
+      if( d_min_pos_com_card.get()==-1 || nCard<d_min_pos_com_card.get() ){
+        d_min_pos_com_card.set( nCard );
+        checkCombinedCardinality();
+      }
+    }else{
+      bool needsCard = true;
+      if( d_min_pos_com_card.get()==-1 ){
+        //check if all current combined cardinality constraints are asserted negatively
+        for( std::map< int, Node >::iterator it = d_com_card_literal.begin(); it != d_com_card_literal.end(); ++it ){
+          if( d_com_card_assertions.find( it->second )==d_com_card_assertions.end() ){
+            Trace("uf-ss-com-card-debug") << "Does not need combined cardinality : non-assertion : " << it->first << std::endl;
+            needsCard = false;
+            break;
+          }else{
+            Assert( !d_com_card_assertions[it->second] );
+          }
+        }
+      }else{
+        Trace("uf-ss-com-card-debug") << "Does not need combined cardinality : positive assertion : " << d_min_pos_com_card.get() << std::endl;
+        needsCard = false;
+      }
+      if( needsCard ){
+        allocateCombinedCardinality();
+      }
+    }
+  }else{
+    if( Trace.isOn("uf-ss-warn") ){
+      ////FIXME: this is too strict: theory propagations are showing up as isDecision=true, but
+      ////       a theory propagation is not a decision.
+      if( isDecision ){
+        for( std::map< TypeNode, SortModel* >::iterator it = d_rep_model.begin(); it != d_rep_model.end(); ++it ){
+          if( !it->second->hasCardinalityAsserted() ){
+            Trace("uf-ss-warn") << "WARNING: Assert " << n << " as a decision before cardinality for " << it->first << "." << std::endl;
+            //Message() << "Error: constraint asserted before cardinality for " << it->first << std::endl;
+            //Unimplemented();
+          }
+        }
+      }
+    }
+    if( lit.getKind()!=EQUAL ){
+      //it is a predicate
+      if( options::ufssDiseqPropagation() ){
+        d_deq_prop->assertPredicate(lit, polarity);
+      }
+    }
+  }
+  Trace("uf-ss") << "Assert: done " << n << " " << isDecision << std::endl;
+}
+
+bool StrongSolverTheoryUF::areDisequal( Node a, Node b ) {
+  if( a==b ){
+    return false;
+  }else{
+    a = d_th->d_equalityEngine.getRepresentative( a );
+    b = d_th->d_equalityEngine.getRepresentative( b );
+    if( d_th->d_equalityEngine.areDisequal( a, b, false ) ){
+      return true;
+    }else{
+      SortModel* c = getSortModel( a );
+      if( c ){
+        return c->areDisequal( a, b );
+      }else{
+        return false;
+      }
+    }
+  }
+}
+
+/** check */
+void StrongSolverTheoryUF::check( Theory::Effort level ){
+  if( !d_conflict ){
+    Trace("uf-ss-solver") << "StrongSolverTheoryUF: check " << level << std::endl;
+    if( level==Theory::EFFORT_FULL && Debug.isOn( "uf-ss-debug" ) ){
+      debugPrint( "uf-ss-debug" );
+    }
+    for( std::map< TypeNode, SortModel* >::iterator it = d_rep_model.begin(); it != d_rep_model.end(); ++it ){
+      it->second->check( level, d_out );
+      if( it->second->isConflict() ){
+        d_conflict = true;
+        break;
+      }
+    }
+    //check symmetry breaker
+    if( !d_conflict && options::ufssSymBreak() ){
+      d_sym_break->check( level );
+    }
+    Trace("uf-ss-solver") << "Done StrongSolverTheoryUF: check " << level << std::endl;
+  }
+}
+
+void StrongSolverTheoryUF::presolve() {
+  d_aloc_com_card.set( 0 );
+  for( std::map< TypeNode, SortModel* >::iterator it = d_rep_model.begin(); it != d_rep_model.end(); ++it ){
+    it->second->presolve();
+    it->second->initialize( d_out );
+  }
+}
+
+/** propagate */
+void StrongSolverTheoryUF::propagate( Theory::Effort level ){
+  //for( std::map< TypeNode, SortModel* >::iterator it = d_rep_model.begin(); it != d_rep_model.end(); ++it ){
+  //  it->second->propagate( level, d_out );
+  //}
+}
+
+/** get next decision request */
+Node StrongSolverTheoryUF::getNextDecisionRequest( unsigned& priority ){
+  //request the combined cardinality as a decision literal, if not already asserted
+  if( options::ufssFairness() ){
+    int comCard = 0;
+    Node com_lit;
+    do {
+      if( comCard<d_aloc_com_card.get() ){
+        com_lit = d_com_card_literal.find( comCard )!=d_com_card_literal.end() ? d_com_card_literal[comCard] : Node::null();
+        if( !com_lit.isNull() && d_com_card_assertions.find( com_lit )==d_com_card_assertions.end() ){
+          Trace("uf-ss-dec") << "Decide on combined cardinality : " << com_lit << std::endl;
+          priority = 1;
+          return com_lit;
+        }
+        comCard++;
+      }else{
+        com_lit = Node::null();
+      }
+    }while( !com_lit.isNull() );
+  }
+  //otherwise, check each individual sort
+  for( std::map< TypeNode, SortModel* >::iterator it = d_rep_model.begin(); it != d_rep_model.end(); ++it ){
+    Node n = it->second->getNextDecisionRequest();
+    if( !n.isNull() ){
+      priority = 1;
+      return n;
+    }
+  }
+  Trace("uf-ss-dec") << "...no UF SS decisions." << std::endl;
+  return Node::null();
+}
+
+void StrongSolverTheoryUF::preRegisterTerm( TNode n ){
+  //initialize combined cardinality
+  initializeCombinedCardinality();
+
+  Trace("uf-ss-register") << "Preregister " << n << "." << std::endl;
+  //shouldn't have to preregister this type (it may be that there are no quantifiers over tn)
+  TypeNode tn = n.getType();
+  std::map< TypeNode, SortModel* >::iterator it = d_rep_model.find( tn );
+  if( it==d_rep_model.end() ){
+    SortModel* rm = NULL;
+    if( tn.isSort() ){
+      Trace("uf-ss-register") << "Create sort model " << tn << "." << std::endl;
+      rm  = new SortModel( n, d_th->getSatContext(), d_th->getUserContext(), this );
+      //getOutputChannel().lemma( n.eqNode( rm->getCardinalityTerm() ) );
+    }else{
+      /*
+      if( tn==NodeManager::currentNM()->integerType() || tn==NodeManager::currentNM()->realType() ){
+        Debug("uf-ss-na") << "Error: Cannot perform finite model finding on arithmetic quantifier";
+        Debug("uf-ss-na") << " (" << f << ")";
+        Debug("uf-ss-na") << std::endl;
+        Unimplemented("Cannot perform finite model finding on arithmetic quantifier");
+      }else if( tn.isDatatype() ){
+        Debug("uf-ss-na") << "Error: Cannot perform finite model finding on datatype quantifier";
+        Debug("uf-ss-na") << " (" << f << ")";
+        Debug("uf-ss-na") << std::endl;
+        Unimplemented("Cannot perform finite model finding on datatype quantifier");
+      }
+      */
+    }
+    if( rm ){
+      rm->initialize( d_out );
+      d_rep_model[tn] = rm;
+      //d_rep_model_init[tn] = true;
+    }
+  }else{
+    //ensure sort model is initialized
+    it->second->initialize( d_out );
+  }
+}
+
+//void StrongSolverTheoryUF::registerQuantifier( Node f ){
+//  Debug("uf-ss-register") << "Register quantifier " << f << std::endl;
+  //must ensure the quantifier does not quantify over arithmetic
+  //for( int i=0; i<(int)f[0].getNumChildren(); i++ ){
+  //  TypeNode tn = f[0][i].getType();
+  //  preRegisterType( tn, true );
+  //}
+//}
+
+
+SortModel* StrongSolverTheoryUF::getSortModel( Node n ){
+  TypeNode tn = n.getType();
+  std::map< TypeNode, SortModel* >::iterator it = d_rep_model.find( tn );
+  //pre-register the type if not done already
+  if( it==d_rep_model.end() ){
+    preRegisterTerm( n );
+    it = d_rep_model.find( tn );
+  }
+  if( it!=d_rep_model.end() ){
+    return it->second;
+  }else{
+    return NULL;
+  }
+}
+
+void StrongSolverTheoryUF::notifyRestart(){}
+
+/** get cardinality for sort */
+int StrongSolverTheoryUF::getCardinality( Node n ) {
+  SortModel* c = getSortModel( n );
+  if( c ){
+    return c->getCardinality();
+  }else{
+    return -1;
+  }
+}
+
+int StrongSolverTheoryUF::getCardinality( TypeNode tn ) {
+  std::map< TypeNode, SortModel* >::iterator it = d_rep_model.find( tn );
+  if( it!=d_rep_model.end() && it->second ){
+    return it->second->getCardinality();
+  }
+  return -1;
+}
+
+bool StrongSolverTheoryUF::minimize( TheoryModel* m ){
+  for( std::map< TypeNode, SortModel* >::iterator it = d_rep_model.begin(); it != d_rep_model.end(); ++it ){
+    if( !it->second->minimize( d_out, m ) ){
+      return false;
+    }
+  }
+  for( std::map< TypeNode, SortModel* >::iterator it = d_rep_model.begin(); it != d_rep_model.end(); ++it ){
+    Trace("uf-ss-minimize") << "Cardinality( " << it->first << " ) : " << it->second->getCardinality() << std::endl;
+  }
+  return true;
+}
+
+//print debug
+void StrongSolverTheoryUF::debugPrint( const char* c ){
+  //EqClassesIterator< TheoryUF::NotifyClass > eqc_iter( &((TheoryUF*)d_th)->d_equalityEngine );
+  //while( !eqc_iter.isFinished() ){
+  //  Debug( c ) << "Eq class [[" << (*eqc_iter) << "]]" << std::endl;
+  //  EqClassIterator< TheoryUF::NotifyClass > eqc_iter2( *eqc_iter, &((TheoryUF*)d_th)->d_equalityEngine );
+  //  Debug( c ) << "   ";
+  //  while( !eqc_iter2.isFinished() ){
+  //    Debug( c ) << "[" << (*eqc_iter2) << "] ";
+  //    eqc_iter2++;
+  //  }
+  //  Debug( c ) << std::endl;
+  //  eqc_iter++;
+  //}
+
+  for( std::map< TypeNode, SortModel* >::iterator it = d_rep_model.begin(); it != d_rep_model.end(); ++it ){
+    Debug( c ) << "Conflict find structure for " << it->first << ": " << std::endl;
+    it->second->debugPrint( c );
+    Debug( c ) << std::endl;
+  }
+}
+
+bool StrongSolverTheoryUF::debugModel( TheoryModel* m ){
+  for( std::map< TypeNode, SortModel* >::iterator it = d_rep_model.begin(); it != d_rep_model.end(); ++it ){
+    if( !it->second->debugModel( m ) ){
+      return false;
+    }
+  }
+  return true;
+}
+
+/** initialize */
+void StrongSolverTheoryUF::initializeCombinedCardinality() {
+  if( options::ufssFairness() ){
+    if( d_aloc_com_card.get()==0 ){
+      Trace("uf-ss-com-card-debug") << "Initialize combined cardinality" << std::endl;
+      allocateCombinedCardinality();
+    }
+  }
+}
+
+/** check */
+void StrongSolverTheoryUF::checkCombinedCardinality() {
+  if( options::ufssFairness() ){
+    Trace("uf-ss-com-card-debug") << "Check combined cardinality, get maximum negative cardinalities..." << std::endl;
+    int totalCombinedCard = 0;
+    int maxMonoSlave = 0;
+    TypeNode maxSlaveType;
+    for( std::map< TypeNode, SortModel* >::iterator it = d_rep_model.begin(); it != d_rep_model.end(); ++it ){
+      int max_neg = it->second->getMaximumNegativeCardinality();
+      if( !options::ufssFairnessMonotone() ){
+        totalCombinedCard += max_neg;
+      }else{
+        std::map< TypeNode, bool >::iterator its = d_tn_mono_slave.find( it->first );
+        if( its==d_tn_mono_slave.end() || !its->second ){
+          totalCombinedCard += max_neg;
+        }else{
+          if( max_neg>maxMonoSlave ){
+            maxMonoSlave = max_neg;
+            maxSlaveType = it->first;
+          }
+        }
+      }
+    }
+    Trace("uf-ss-com-card-debug") << "Check combined cardinality, total combined card : " << totalCombinedCard << std::endl;
+    if( options::ufssFairnessMonotone() ){
+      Trace("uf-ss-com-card-debug") << "Max slave monotonic negated cardinality : " << maxMonoSlave << std::endl;
+      if( d_min_pos_tn_master_card.get()!=-1 && maxMonoSlave>d_min_pos_tn_master_card.get() ){
+        int mc = d_min_pos_tn_master_card.get();
+        std::vector< Node > conf;
+        conf.push_back( d_rep_model[d_tn_mono_master]->getCardinalityLiteral( mc ) );
+        conf.push_back( d_rep_model[maxSlaveType]->getCardinalityLiteral( maxMonoSlave ).negate() );
+        Node cf = NodeManager::currentNM()->mkNode( AND, conf );
+        Trace("uf-ss-lemma") << "*** Combined monotone cardinality conflict"
+                             << " : " << cf << std::endl;
+        Trace("uf-ss-com-card") << "*** Combined monotone cardinality conflict"
+                                << " : " << cf << std::endl;
+        getOutputChannel().conflict( cf );
+        d_conflict.set( true );
+        return;
+      }
+    }
+    int cc = d_min_pos_com_card.get();
+    if( cc !=-1 && totalCombinedCard > cc ){
+      //conflict
+      Assert( d_com_card_literal.find( cc ) != d_com_card_literal.end() );
+      Node com_lit = d_com_card_literal[cc];
+      Assert(d_com_card_assertions.find(com_lit)!=d_com_card_assertions.end());
+      Assert( d_com_card_assertions[com_lit] );
+      std::vector< Node > conf;
+      conf.push_back( com_lit );
+      int totalAdded = 0;
+      for( std::map< TypeNode, SortModel* >::iterator it = d_rep_model.begin(); 
+           it != d_rep_model.end(); ++it ){
+        bool doAdd = true;
+        if( options::ufssFairnessMonotone() ){
+          std::map< TypeNode, bool >::iterator its =
+            d_tn_mono_slave.find( it->first );
+          if( its!=d_tn_mono_slave.end() && its->second ){
+            doAdd = false;
+          }
+        }
+        if( doAdd ){
+          int c = it->second->getMaximumNegativeCardinality();
+          if( c>0 ){
+            conf.push_back( it->second->getCardinalityLiteral( c ).negate() );
+            totalAdded += c;
+          }
+          if( totalAdded>cc ){
+            break;
+          }
+        }
+      }
+      Node cf = NodeManager::currentNM()->mkNode( AND, conf );
+      Trace("uf-ss-lemma") << "*** Combined cardinality conflict : " << cf
+                           << std::endl;
+      Trace("uf-ss-com-card") << "*** Combined cardinality conflict : " << cf
+                              << std::endl;
+      getOutputChannel().conflict( cf );
+      d_conflict.set( true );
+    }
+  }
+}
+
+void StrongSolverTheoryUF::allocateCombinedCardinality() {
+  Trace("uf-ss-com-card") << "Allocate combined cardinality (" << d_aloc_com_card.get() << ")" << std::endl;
+  //make node
+  Node lem = NodeManager::currentNM()->mkNode( COMBINED_CARDINALITY_CONSTRAINT,
+                                               NodeManager::currentNM()->mkConst( Rational( d_aloc_com_card.get() ) ) );
+  Trace("uf-ss-com-card") << "Split on " << lem << std::endl;
+  lem = Rewriter::rewrite(lem);
+  d_com_card_literal[ d_aloc_com_card.get() ] = lem;
+  lem = NodeManager::currentNM()->mkNode( OR, lem, lem.notNode() );
+  //add as lemma to output channel
+  Trace("uf-ss-lemma") << "*** Combined cardinality split : " << lem << std::endl;
+  getOutputChannel().lemma( lem );
+  //require phase
+  getOutputChannel().requirePhase( d_com_card_literal[ d_aloc_com_card.get() ], true );
+  //increment cardinality
+  d_aloc_com_card.set( d_aloc_com_card.get() + 1 );
+}
+
+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_sym_break_lemmas("StrongSolverTheoryUF::Symmetry_Breaking_Lemmas", 0),
+  d_totality_lemmas("StrongSolverTheoryUF::Totality_Lemmas", 0),
+  d_max_model_size("StrongSolverTheoryUF::Max_Model_Size", 1)
+{
+  smtStatisticsRegistry()->registerStat(&d_clique_conflicts);
+  smtStatisticsRegistry()->registerStat(&d_clique_lemmas);
+  smtStatisticsRegistry()->registerStat(&d_split_lemmas);
+  smtStatisticsRegistry()->registerStat(&d_disamb_term_lemmas);
+  smtStatisticsRegistry()->registerStat(&d_sym_break_lemmas);
+  smtStatisticsRegistry()->registerStat(&d_totality_lemmas);
+  smtStatisticsRegistry()->registerStat(&d_max_model_size);
+}
+
+StrongSolverTheoryUF::Statistics::~Statistics(){
+  smtStatisticsRegistry()->unregisterStat(&d_clique_conflicts);
+  smtStatisticsRegistry()->unregisterStat(&d_clique_lemmas);
+  smtStatisticsRegistry()->unregisterStat(&d_split_lemmas);
+  smtStatisticsRegistry()->unregisterStat(&d_disamb_term_lemmas);
+  smtStatisticsRegistry()->unregisterStat(&d_sym_break_lemmas);
+  smtStatisticsRegistry()->unregisterStat(&d_totality_lemmas);
+  smtStatisticsRegistry()->unregisterStat(&d_max_model_size);
+}
+
+
+DisequalityPropagator::DisequalityPropagator(QuantifiersEngine* qe,
+                                             StrongSolverTheoryUF* ufss)
+  : d_qe(qe), d_ufss(ufss)
+{
+  d_true = NodeManager::currentNM()->mkConst( true );
+  d_false = NodeManager::currentNM()->mkConst( false );
+}
+
+void DisequalityPropagator::checkEquivalenceClass( Node t, Node eqc ) {
+  if( t.getKind()==APPLY_UF ){
+    Node op = t.getOperator();
+    eqc = d_ufss->getTheory()->getEqualityEngine()->getRepresentative( eqc );
+    eq::EqClassIterator eqc_i(eqc, d_ufss->getTheory()->getEqualityEngine());
+    while( !eqc_i.isFinished() ){
+      Node s = *eqc_i;
+      if( s.getKind()==APPLY_UF && s.getOperator()==op ){
+        int unkIndex = -1;
+        for( size_t i=0; i<t.getNumChildren(); i++ ){
+          //should consult strong solver since it knows more disequalities
+          if( d_ufss->areDisequal( t[i], s[i] ) ){
+          //if( d_qe->getEqualityQuery()->areDisequal( t[i], s[i] ) ){
+            unkIndex = -1;
+            break;
+          }else if( !d_qe->getEqualityQuery()->areEqual( t[i], s[i] ) ){
+            if( unkIndex==-1 ){
+              unkIndex = i;
+            }else{
+              unkIndex = -1;
+              break;
+            }
+          }
+        }
+        if( unkIndex!=-1 ){
+          Trace("deq-prop") << "propagate disequality " << t[unkIndex] << " " << s[unkIndex] << std::endl;
+          d_ufss->assertDisequal(t[unkIndex], s[unkIndex], Node::null());
+          ++( d_statistics.d_propagations );
+          if( d_ufss->isConflict() ){
+            return;
+          }
+        }
+      }
+      ++eqc_i;
+    }
+  }
+}
+
+/** merge */
+void DisequalityPropagator::merge( Node a, Node b ){
+
+}
+
+/** assert terms are disequal */
+void DisequalityPropagator::assertDisequal( Node a, Node b, Node reason ){
+  Trace("deq-prop") << "Notify disequal : " << a << " " << b << std::endl;
+}
+
+
+void DisequalityPropagator::assertPredicate( Node p, bool polarity ) {
+  Trace("deq-prop") << "Assert predicate : " << p << " " << polarity << std::endl;
+  checkEquivalenceClass( p, polarity ? d_false : d_true );
+}
+
+DisequalityPropagator::Statistics::Statistics():
+   d_propagations("StrongSolverTheoryUF::Disequality_Propagations", 0)
+{
+  smtStatisticsRegistry()->registerStat(& d_propagations);
+}
+
+DisequalityPropagator::Statistics::~Statistics(){
+  smtStatisticsRegistry()->unregisterStat(& d_propagations);
+}
+
+}/* CVC4::theory namespace::uf */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/uf/theory_uf_strong_solver.h b/src/theory/uf/theory_uf_strong_solver.h
new file mode 100644
index 0000000..4130a7d
--- /dev/null
+++ b/src/theory/uf/theory_uf_strong_solver.h
@@ -0,0 +1,518 @@
+/*********************                                                        */
+/*! \file theory_uf_strong_solver.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Theory uf strong solver
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY_UF_STRONG_SOLVER_H
+#define __CVC4__THEORY_UF_STRONG_SOLVER_H
+
+#include "context/cdchunk_list.h"
+#include "context/cdhashmap.h"
+#include "context/context.h"
+#include "context/context_mm.h"
+#include "theory/theory.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+class SortInference;
+namespace theory {
+class SubsortSymmetryBreaker;
+namespace uf {
+class TheoryUF;
+class DisequalityPropagator;
+} /* namespace CVC4::theory::uf */
+} /* namespace CVC4::theory */
+} /* namespace CVC4 */
+
+namespace CVC4 {
+namespace theory {
+namespace uf {
+
+class StrongSolverTheoryUF{
+protected:
+  typedef context::CDHashMap<Node, bool, NodeHashFunction> NodeBoolMap;
+  typedef context::CDHashMap<Node, int, NodeHashFunction> NodeIntMap;
+  typedef context::CDHashMap<Node, Node, NodeHashFunction> NodeNodeMap;
+  typedef context::CDHashMap<TypeNode, bool, TypeNodeHashFunction> TypeNodeBoolMap;
+public:
+  /**
+   * Information for incremental conflict/clique finding for a
+   * particular sort.
+   */
+  class SortModel {
+  private:
+    std::map< Node, std::vector< int > > d_totality_lems;
+    std::map< TypeNode, std::map< int, std::vector< Node > > > d_sym_break_terms;
+    std::map< Node, int > d_sym_break_index;
+  public:
+
+    /**
+     * A partition of the current equality graph for which cliques
+     * can occur internally.
+     */
+    class Region {
+    public:
+      /** information stored about each node in region */
+      class RegionNodeInfo {
+      public:
+        /** disequality list for node */
+        class DiseqList {
+        public:
+          DiseqList( context::Context* c )
+            : d_size( c, 0 ), d_disequalities( c ) {}
+          ~DiseqList(){}
+
+          void setDisequal( Node n, bool valid ){
+            Assert( (!isSet(n)) || getDisequalityValue(n) != valid );
+            d_disequalities[ n ] = valid;
+            d_size = d_size + ( valid ? 1 : -1 );
+          }
+          bool isSet(Node n) const {
+            return d_disequalities.find(n) != d_disequalities.end();
+          }
+          bool getDisequalityValue(Node n) const {
+            Assert(isSet(n));
+            return (*(d_disequalities.find(n))).second;
+          }
+
+          int size() const { return d_size; }
+          
+          typedef NodeBoolMap::iterator iterator;
+          iterator begin() { return d_disequalities.begin(); }
+          iterator end() { return d_disequalities.end(); }
+
+        private:
+          context::CDO< int > d_size;
+          NodeBoolMap d_disequalities;
+        }; /* class DiseqList */
+      public:
+        /** constructor */
+        RegionNodeInfo( context::Context* c )
+          : d_internal(c), d_external(c), d_valid(c, true) {
+          d_disequalities[0] = &d_internal;
+          d_disequalities[1] = &d_external;
+        }
+        ~RegionNodeInfo(){}
+       
+        int getNumDisequalities() const {
+          return d_disequalities[0]->size() + d_disequalities[1]->size();
+        }
+        int getNumExternalDisequalities() const {
+          return d_disequalities[0]->size();
+        }
+        int getNumInternalDisequalities() const {
+          return d_disequalities[1]->size();
+        }
+
+        bool valid() const { return d_valid; }
+        void setValid(bool valid) { d_valid = valid; }
+
+        DiseqList* get(unsigned i) { return d_disequalities[i]; }
+
+      private:
+        DiseqList d_internal;
+        DiseqList d_external;
+        context::CDO< bool > d_valid;
+        DiseqList* d_disequalities[2];
+      }; /* class RegionNodeInfo */
+
+    private:
+      /** conflict find pointer */
+      SortModel* d_cf;
+
+      context::CDO< unsigned > d_testCliqueSize;
+      context::CDO< unsigned > d_splitsSize;
+      //a postulated clique
+      NodeBoolMap d_testClique;
+      //disequalities needed for this clique to happen
+      NodeBoolMap d_splits;
+      //number of valid representatives in this region
+      context::CDO< unsigned > d_reps_size;
+      //total disequality size (external)
+      context::CDO< unsigned > d_total_diseq_external;
+      //total disequality size (internal)
+      context::CDO< unsigned > d_total_diseq_internal;
+      /** set rep */
+      void setRep( Node n, bool valid );
+      //region node infomation
+      std::map< Node, RegionNodeInfo* > d_nodes;
+      //whether region is valid
+      context::CDO< bool > d_valid;
+
+    public:
+      //constructor
+      Region( SortModel* cf, context::Context* c );
+      virtual ~Region();
+
+      typedef std::map< Node, RegionNodeInfo* >::iterator iterator;
+      iterator begin() { return d_nodes.begin(); }
+      iterator end() { return d_nodes.end(); }
+
+      typedef NodeBoolMap::iterator split_iterator;
+      split_iterator begin_splits() { return d_splits.begin(); }
+      split_iterator end_splits() { return d_splits.end(); }
+
+      /** Returns a RegionInfo. */
+      RegionNodeInfo* getRegionInfo(Node n) {
+        Assert(d_nodes.find(n) != d_nodes.end());
+        return (* (d_nodes.find(n))).second;
+      }
+
+      /** Returns whether or not d_valid is set in current context. */
+      bool valid() const { return d_valid; }
+
+      /** Sets d_valid to the value valid in the current context.*/
+      void setValid(bool valid) { d_valid = valid; }
+
+      /** add rep */
+      void addRep( Node n );
+      //take node from region
+      void takeNode( Region* r, Node n );
+      //merge with other region
+      void combine( Region* r );
+      /** merge */
+      void setEqual( Node a, Node b );
+      //set n1 != n2 to value 'valid', type is whether it is internal/external
+      void setDisequal( Node n1, Node n2, int type, bool valid );
+      //get num reps
+      int getNumReps() { return d_reps_size; }
+      //get test clique size
+      int getTestCliqueSize() { return d_testCliqueSize; }
+      // has representative
+      bool hasRep( Node n ) {
+        return d_nodes.find(n) != d_nodes.end() && d_nodes[n]->valid();
+      }
+      // is disequal
+      bool isDisequal( Node n1, Node n2, int type );
+      /** get must merge */
+      bool getMustCombine( int cardinality );
+      /** has splits */
+      bool hasSplits() { return d_splitsSize>0; }
+      /** get external disequalities */
+      void getNumExternalDisequalities(std::map< Node, int >& num_ext_disequalities );
+      /** check for cliques */
+      bool check( Theory::Effort level, int cardinality, std::vector< Node >& clique );
+      /** get candidate clique */
+      bool getCandidateClique( int cardinality, std::vector< Node >& clique );
+      //print debug
+      void debugPrint( const char* c, bool incClique = false );
+
+      // Returns the first key in d_nodes.
+      Node frontKey() const { return d_nodes.begin()->first; }
+    }; /* class Region */
+
+  private:
+    /** the type this model is for */
+    TypeNode d_type;
+    /** strong solver pointer */
+    StrongSolverTheoryUF* d_thss;
+    /** regions used to d_region_index */
+    context::CDO< unsigned > d_regions_index;
+    /** vector of regions */
+    std::vector< Region* > d_regions;
+    /** map from Nodes to index of d_regions they exist in, -1 means invalid */
+    NodeIntMap d_regions_map;
+    /** the score for each node for splitting */
+    NodeIntMap d_split_score;
+    /** number of valid disequalities in d_disequalities */
+    context::CDO< unsigned > d_disequalities_index;
+    /** list of all disequalities */
+    std::vector< Node > d_disequalities;
+    /** number of representatives in all regions */
+    context::CDO< unsigned > d_reps;
+
+    /** get number of disequalities from node n to region ri */
+    int getNumDisequalitiesToRegion( Node n, int ri );
+    /** get number of disequalities from Region r to other regions */
+    void getDisequalitiesToRegions( int ri, std::map< int, int >& regions_diseq );
+    /** is valid */
+    bool isValid( int ri ) {
+      return ri>=0 && ri<(int)d_regions_index && d_regions[ ri ]->valid();
+    }
+    /** set split score */
+    void setSplitScore( Node n, int s );
+    /** check if we need to combine region ri */
+    void checkRegion( int ri, bool checkCombine = true );
+    /** force combine region */
+    int forceCombineRegion( int ri, bool useDensity = true );
+    /** merge regions */
+    int combineRegions( int ai, int bi );
+    /** move node n to region ri */
+    void moveNode( Node n, int ri );
+    /** allocate cardinality */
+    void allocateCardinality( OutputChannel* out );
+    /**
+     * Add splits. Returns
+     *   0 = no split,
+     *  -1 = entailed disequality added, or
+     *   1 = split added.
+     */
+    int addSplit( Region* r, OutputChannel* out );
+    /** add clique lemma */
+    void addCliqueLemma( std::vector< Node >& clique, OutputChannel* out );
+    /** add totality axiom */
+    void addTotalityAxiom( Node n, int cardinality, OutputChannel* out );
+
+    class NodeTrie {
+    public:
+      bool add( std::vector< Node >& n, unsigned i = 0 ){
+        Assert( i<n.size() );
+        if( i==(n.size()-1) ){
+          bool ret = d_children.find( n[i] )==d_children.end();
+          d_children[n[i]].d_children.clear();
+          return ret;
+        }else{
+          return d_children[n[i]].add( n, i+1 );
+        }
+      }
+    private:
+      std::map< Node, NodeTrie > d_children;
+    }; /* class NodeTrie */
+
+    std::map< int, NodeTrie > d_clique_trie;
+    void addClique( int c, std::vector< Node >& clique );
+
+    /** Are we in conflict */
+    context::CDO<bool> d_conflict;
+    /** cardinality */
+    context::CDO< int > d_cardinality;
+    /** maximum allocated cardinality */
+    context::CDO< int > d_aloc_cardinality;
+    /** cardinality lemma term */
+    Node d_cardinality_term;
+    /** cardinality totality terms */
+    std::map< int, std::vector< Node > > d_totality_terms;
+    /** cardinality literals */
+    std::map< int, Node > d_cardinality_literal;
+    /** cardinality lemmas */
+    std::map< int, Node > d_cardinality_lemma;
+    /** whether a positive cardinality constraint has been asserted */
+    context::CDO< bool > d_hasCard;
+    /** clique lemmas that have been asserted */
+    std::map< int, std::vector< std::vector< Node > > > d_cliques;
+    /** maximum negatively asserted cardinality */
+    context::CDO< int > d_maxNegCard;
+    /** list of fresh representatives allocated */
+    std::vector< Node > d_fresh_aloc_reps;
+    /** whether we are initialized */
+    context::CDO< bool > d_initialized;
+    /** cache for lemmas */
+    NodeBoolMap d_lemma_cache;
+
+    /** apply totality */
+    bool applyTotality( int cardinality );
+    /** get totality lemma terms */
+    Node getTotalityLemmaTerm( int cardinality, int i );
+    /** simple check cardinality */
+    void simpleCheckCardinality();
+
+    bool doSendLemma( Node lem );
+
+  public:
+    SortModel( Node n, context::Context* c, context::UserContext* u,
+               StrongSolverTheoryUF* thss );
+    virtual ~SortModel();
+    /** 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 );
+    /** are disequal */
+    bool areDisequal( Node a, Node b );
+    /** check */
+    void check( Theory::Effort level, OutputChannel* out );
+    /** presolve */
+    void presolve();
+    /** propagate */
+    void propagate( Theory::Effort level, OutputChannel* out );
+    /** get next decision request */
+    Node getNextDecisionRequest();
+    /** minimize */
+    bool minimize( OutputChannel* out, TheoryModel* m );
+    /** assert cardinality */
+    void assertCardinality( OutputChannel* out, int c, bool val );
+    /** is in conflict */
+    bool isConflict() { return d_conflict; }
+    /** get cardinality */
+    int getCardinality() { return d_cardinality; }
+    /** has cardinality */
+    bool hasCardinalityAsserted() { return d_hasCard; }
+    /** get cardinality term */
+    Node getCardinalityTerm() { return d_cardinality_term; }
+    /** get cardinality literal */
+    Node getCardinalityLiteral( int c );
+    /** get maximum negative cardinality */
+    int getMaximumNegativeCardinality() { return d_maxNegCard.get(); }
+    //print debug
+    void debugPrint( const char* c );
+    /** debug a model */
+    bool debugModel( TheoryModel* m );
+  public:
+    /** get number of regions (for debugging) */
+    int getNumRegions();
+  }; /** class SortModel */
+
+public:
+  StrongSolverTheoryUF(context::Context* c, context::UserContext* u,
+                       OutputChannel& out, TheoryUF* th);
+  ~StrongSolverTheoryUF();
+  /** get theory */
+  TheoryUF* getTheory() { return d_th; }
+  /** disequality propagator */
+  DisequalityPropagator* getDisequalityPropagator() { return d_deq_prop; }
+  /** symmetry breaker */
+  SubsortSymmetryBreaker* getSymmetryBreaker() { return d_sym_break; }
+  /** get sort inference module */
+  SortInference* getSortInference();
+  /** get default sat context */
+  context::Context* getSatContext();
+  /** get default output channel */
+  OutputChannel& getOutputChannel();
+  /** 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 );
+  /** assert node */
+  void assertNode( Node n, bool isDecision );
+  /** are disequal */
+  bool areDisequal( Node a, Node b );
+  /** check */
+  void check( Theory::Effort level );
+  /** presolve */
+  void presolve();
+  /** propagate */
+  void propagate( Theory::Effort level );
+  /** get next decision request */
+  Node getNextDecisionRequest( unsigned& priority );
+  /** preregister a term */
+  void preRegisterTerm( TNode n );
+  /** notify restart */
+  void notifyRestart();
+  /** identify */
+  std::string identify() const { return std::string("StrongSolverTheoryUF"); }
+  //print debug
+  void debugPrint( const char* c );
+  /** debug a model */
+  bool debugModel( TheoryModel* m );
+  /** get is in conflict */
+  bool isConflict() { return d_conflict; }
+  /** get cardinality for node */
+  int getCardinality( Node n );
+  /** get cardinality for type */
+  int getCardinality( TypeNode tn );
+  /** minimize */
+  bool minimize( TheoryModel* m = NULL );
+  /** has eqc */
+  bool hasEqc(Node a);
+
+  class Statistics {
+   public:
+    IntStat d_clique_conflicts;
+    IntStat d_clique_lemmas;
+    IntStat d_split_lemmas;
+    IntStat d_disamb_term_lemmas;
+    IntStat d_sym_break_lemmas;
+    IntStat d_totality_lemmas;
+    IntStat d_max_model_size;
+    Statistics();
+    ~Statistics();
+  };
+  /** statistics class */
+  Statistics d_statistics;
+
+ private:
+  /** get sort model */
+  SortModel* getSortModel(Node n);
+  /** initialize */
+  void initializeCombinedCardinality();
+  /** allocateCombinedCardinality */
+  void allocateCombinedCardinality();
+  /** check */
+  void checkCombinedCardinality();
+  /** ensure eqc */
+  void ensureEqc(SortModel* c, Node a);
+  /** ensure eqc for all subterms of n */
+  void ensureEqcRec(Node n);
+
+  /** The output channel for the strong solver. */
+  OutputChannel* d_out;
+  /** theory uf pointer */
+  TheoryUF* d_th;
+  /** Are we in conflict */
+  context::CDO<bool> d_conflict;
+  /** rep model structure, one for each type */
+  std::map<TypeNode, SortModel*> d_rep_model;
+  /** allocated combined cardinality */
+  context::CDO<int> d_aloc_com_card;
+  /** combined cardinality constraints */
+  std::map<int, Node> d_com_card_literal;
+  /** combined cardinality assertions (indexed by cardinality literals ) */
+  NodeBoolMap d_com_card_assertions;
+  /** minimum positive combined cardinality */
+  context::CDO<int> d_min_pos_com_card;
+  /** cardinality literals for which we have added */
+  NodeBoolMap d_card_assertions_eqv_lemma;
+  /** the master monotone type (if ufssFairnessMonotone enabled) */
+  TypeNode d_tn_mono_master;
+  std::map<TypeNode, bool> d_tn_mono_slave;
+  context::CDO<int> d_min_pos_tn_master_card;
+  /** relevant eqc */
+  NodeBoolMap d_rel_eqc;
+  /** disequality propagator */
+  DisequalityPropagator* d_deq_prop;
+  /** symmetry breaking techniques */
+  SubsortSymmetryBreaker* d_sym_break;
+}; /* class StrongSolverTheoryUF */
+
+class DisequalityPropagator {
+public:
+  DisequalityPropagator(QuantifiersEngine* qe, StrongSolverTheoryUF* ufss);
+  /** merge */
+  void merge( Node a, Node b );
+  /** assert terms are disequal */
+  void assertDisequal( Node a, Node b, Node reason );
+  /** assert predicate */
+  void assertPredicate( Node p, bool polarity );
+
+  class Statistics {
+  public:
+    IntStat d_propagations;
+    Statistics();
+    ~Statistics();
+  };
+  /** statistics class */
+  Statistics d_statistics;
+
+private:
+  /** quantifiers engine */
+  QuantifiersEngine* d_qe;
+  /** strong solver */
+  StrongSolverTheoryUF* d_ufss;
+  /** true,false */
+  Node d_true;
+  Node d_false;
+  /** check term t against equivalence class that t is disequal from */
+  void checkEquivalenceClass( Node t, Node eqc );
+}; /* class DisequalityPropagator */
+
+}/* CVC4::theory namespace::uf */
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY_UF_STRONG_SOLVER_H */
diff --git a/src/theory/uf/theory_uf_type_rules.h b/src/theory/uf/theory_uf_type_rules.h
new file mode 100644
index 0000000..5d97dda
--- /dev/null
+++ b/src/theory/uf/theory_uf_type_rules.h
@@ -0,0 +1,145 @@
+/*********************                                                        */
+/*! \file theory_uf_type_rules.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add brief comments here ]]
+ **
+ ** [[ Add file-specific comments here ]]
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__UF__THEORY_UF_TYPE_RULES_H
+#define __CVC4__THEORY__UF__THEORY_UF_TYPE_RULES_H
+
+namespace CVC4 {
+namespace theory {
+namespace uf {
+
+class UfTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    TNode f = n.getOperator();
+    TypeNode fType = f.getType(check);
+    if (!fType.isFunction()) {
+      throw TypeCheckingExceptionPrivate(
+          n, "operator does not have function type");
+    }
+    if (check) {
+      if (n.getNumChildren() != fType.getNumChildren() - 1) {
+        throw TypeCheckingExceptionPrivate(
+            n, "number of arguments does not match the function type");
+      }
+      TNode::iterator argument_it = n.begin();
+      TNode::iterator argument_it_end = n.end();
+      TypeNode::iterator argument_type_it = fType.begin();
+      for (; argument_it != argument_it_end;
+           ++argument_it, ++argument_type_it) {
+        TypeNode currentArgument = (*argument_it).getType();
+        TypeNode currentArgumentType = *argument_type_it;
+        if (!currentArgument.isComparableTo(currentArgumentType)) {
+          std::stringstream ss;
+          ss << "argument type is not a subtype of the function's argument "
+             << "type:\n"
+             << "argument:  " << *argument_it << "\n"
+             << "has type:  " << (*argument_it).getType() << "\n"
+             << "not subtype: " << *argument_type_it;
+          throw TypeCheckingExceptionPrivate(n, ss.str());
+        }
+      }
+    }
+    return fType.getRangeType();
+  }
+}; /* class UfTypeRule */
+
+class CardinalityConstraintTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    if (check) {
+      // don't care what it is, but it should be well-typed
+      n[0].getType(check);
+
+      TypeNode valType = n[1].getType(check);
+      if (valType != nodeManager->integerType()) {
+        throw TypeCheckingExceptionPrivate(
+            n, "cardinality constraint must be integer");
+      }
+      if (n[1].getKind() != kind::CONST_RATIONAL) {
+        throw TypeCheckingExceptionPrivate(
+            n, "cardinality constraint must be a constant");
+      }
+      CVC4::Rational r(INT_MAX);
+      if (n[1].getConst<Rational>() > r) {
+        throw TypeCheckingExceptionPrivate(
+            n, "Exceeded INT_MAX in cardinality constraint");
+      }
+      if (n[1].getConst<Rational>().getNumerator().sgn() != 1) {
+        throw TypeCheckingExceptionPrivate(
+            n, "cardinality constraint must be positive");
+      }
+    }
+    return nodeManager->booleanType();
+  }
+}; /* class CardinalityConstraintTypeRule */
+
+class CombinedCardinalityConstraintTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    if (check) {
+      TypeNode valType = n[0].getType(check);
+      if (valType != nodeManager->integerType()) {
+        throw TypeCheckingExceptionPrivate(
+            n, "combined cardinality constraint must be integer");
+      }
+      if (n[0].getKind() != kind::CONST_RATIONAL) {
+        throw TypeCheckingExceptionPrivate(
+            n, "combined cardinality constraint must be a constant");
+      }
+      CVC4::Rational r(INT_MAX);
+      if (n[0].getConst<Rational>() > r) {
+        throw TypeCheckingExceptionPrivate(
+            n, "Exceeded INT_MAX in combined cardinality constraint");
+      }
+      if (n[0].getConst<Rational>().getNumerator().sgn() == -1) {
+        throw TypeCheckingExceptionPrivate(
+            n, "combined cardinality constraint must be non-negative");
+      }
+    }
+    return nodeManager->booleanType();
+  }
+}; /* class CardinalityConstraintTypeRule */
+
+class PartialTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    return n.getOperator().getType().getRangeType();
+  }
+}; /* class PartialTypeRule */
+
+class CardinalityValueTypeRule {
+ public:
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n,
+                                     bool check) {
+    if (check) {
+      n[0].getType(check);
+    }
+    return nodeManager->integerType();
+  }
+}; /* class CardinalityValueTypeRule */
+
+} /* CVC4::theory::uf namespace */
+} /* CVC4::theory namespace */
+} /* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__UF__THEORY_UF_TYPE_RULES_H */
diff --git a/src/theory/unconstrained_simplifier.cpp b/src/theory/unconstrained_simplifier.cpp
new file mode 100644
index 0000000..57d95d8
--- /dev/null
+++ b/src/theory/unconstrained_simplifier.cpp
@@ -0,0 +1,704 @@
+/*********************                                                        */
+/*! \file unconstrained_simplifier.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Clark Barrett, Peter Collingbourne, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Simplifications based on unconstrained variables
+ **
+ ** This module implements a preprocessing phase which replaces certain "unconstrained" expressions
+ ** by variables.  Based on Roberto Bruttomesso's PhD thesis.
+ **/
+
+
+#include "theory/unconstrained_simplifier.h"
+
+#include "theory/rewriter.h"
+#include "theory/logic_info.h"
+#include "smt/smt_statistics_registry.h"
+
+using namespace std;
+using namespace CVC4;
+using namespace theory;
+
+
+UnconstrainedSimplifier::UnconstrainedSimplifier(context::Context* context,
+                                                 const LogicInfo& logicInfo)
+  : d_numUnconstrainedElim("preprocessor::number of unconstrained elims", 0),
+    d_context(context), d_substitutions(context), d_logicInfo(logicInfo)
+{
+  smtStatisticsRegistry()->registerStat(&d_numUnconstrainedElim);
+}
+
+
+UnconstrainedSimplifier::~UnconstrainedSimplifier()
+{
+  smtStatisticsRegistry()->unregisterStat(&d_numUnconstrainedElim);
+}
+
+
+struct unc_preprocess_stack_element {
+  TNode node;
+  TNode parent;
+  unc_preprocess_stack_element(TNode n) : node(n) {}
+  unc_preprocess_stack_element(TNode n, TNode p) : node(n), parent(p) {}
+};/* struct unc_preprocess_stack_element */
+
+
+void UnconstrainedSimplifier::visitAll(TNode assertion)
+{
+  // Do a topological sort of the subexpressions and substitute them
+  vector<unc_preprocess_stack_element> toVisit;
+  toVisit.push_back(assertion);
+
+  while (!toVisit.empty())
+  {
+    // The current node we are processing
+    TNode current = toVisit.back().node;
+    TNode parent = toVisit.back().parent;
+    toVisit.pop_back();
+
+    TNodeCountMap::iterator find = d_visited.find(current);
+    if (find != d_visited.end()) {
+      if (find->second == 1) {
+        d_visitedOnce.erase(current);
+        if (current.isVar()) {
+          d_unconstrained.erase(current);
+        }
+      }
+      ++find->second;
+      continue;
+    }
+
+    d_visited[current] = 1;
+    d_visitedOnce[current] = parent;
+
+    if (current.getNumChildren() == 0) {
+      if (current.getKind()==kind::VARIABLE || current.getKind()==kind::SKOLEM) {
+        d_unconstrained.insert(current);
+      }
+    }
+    else {
+      for(TNode::iterator child_it = current.begin(); child_it != current.end(); ++ child_it) {
+        TNode childNode = *child_it;
+        toVisit.push_back(unc_preprocess_stack_element(childNode, current));
+      }
+    }
+  }
+}
+
+Node UnconstrainedSimplifier::newUnconstrainedVar(TypeNode t, TNode var)
+{
+  Node n = NodeManager::currentNM()->mkSkolem("unconstrained", t, "a new var introduced because of unconstrained variable " + var.toString());
+  return n;
+}
+
+
+void UnconstrainedSimplifier::processUnconstrained()
+{
+  TNodeSet::iterator it = d_unconstrained.begin(), iend = d_unconstrained.end();
+  vector<TNode> workList;
+  for ( ; it != iend; ++it) {
+    workList.push_back(*it);
+  }
+  Node currentSub;
+  TNode parent;
+  bool swap;
+  bool isSigned;
+  bool strict;
+  vector<TNode> delayQueueLeft;
+  vector<Node> delayQueueRight;
+
+  TNode current = workList.back();
+  workList.pop_back();
+  for (;;) {
+    Assert(d_visitedOnce.find(current) != d_visitedOnce.end());
+    parent = d_visitedOnce[current];
+    if (!parent.isNull()) {
+      swap = isSigned = strict = false;
+      bool checkParent = false;
+      switch (parent.getKind()) {
+
+        // If-then-else operator - any two unconstrained children makes the parent unconstrained
+        case kind::ITE: {
+          Assert(parent[0] == current || parent[1] == current || parent[2] == current);
+          bool uCond = parent[0] == current || d_unconstrained.find(parent[0]) != d_unconstrained.end();
+          bool uThen = parent[1] == current || d_unconstrained.find(parent[1]) != d_unconstrained.end();
+          bool uElse = parent[2] == current || d_unconstrained.find(parent[2]) != d_unconstrained.end();
+          if ((uCond && uThen) || (uCond && uElse) || (uThen && uElse)) {
+            if (d_unconstrained.find(parent) == d_unconstrained.end() &&
+                !d_substitutions.hasSubstitution(parent)) {
+              ++d_numUnconstrainedElim;
+              if (uThen) {
+                if (parent[1] != current) {
+                  if (parent[1].isVar()) {
+                    currentSub = parent[1];
+                  }
+                  else {
+                    Assert(d_substitutions.hasSubstitution(parent[1]));
+                    currentSub = d_substitutions.apply(parent[1]);
+                  }
+                }
+                else if (currentSub.isNull()) {
+                  currentSub = current;
+                }
+              }
+              else if (parent[2] != current) {
+                if (parent[2].isVar()) {
+                  currentSub = parent[2];
+                }
+                else {
+                  Assert(d_substitutions.hasSubstitution(parent[2]));
+                  currentSub = d_substitutions.apply(parent[2]);
+                }
+              }
+              else if (currentSub.isNull()) {
+                currentSub = current;
+              }
+              current = parent;
+            }
+            else {
+              currentSub = Node();
+            }
+          }
+          else if (uCond) {
+            Cardinality card = parent.getType().getCardinality();
+            if (card.isFinite() && !card.isLargeFinite() && card.getFiniteCardinality() == 2) {
+              // Special case: condition is unconstrained, then and else are different, and total cardinality of the type is 2, then the result
+              // is unconstrained
+              Node test = Rewriter::rewrite(parent[1].eqNode(parent[2]));
+              if (test == NodeManager::currentNM()->mkConst<bool>(false)) {
+                ++d_numUnconstrainedElim;
+                if (currentSub.isNull()) {
+                  currentSub = current;
+                }
+                currentSub = newUnconstrainedVar(parent.getType(), currentSub);
+                current = parent;
+              }
+            }
+          }
+          break;
+        }
+
+        // Comparisons that return a different type - assuming domains are larger than 1, any
+        // unconstrained child makes parent unconstrained as well
+        case kind::EQUAL:
+          if (parent[0].getType() != parent[1].getType()) {
+            TNode other = (parent[0] == current) ? parent[1] : parent[0];
+            if (current.getType().isSubtypeOf(other.getType())) {
+              break;
+            }
+          }
+          if( parent[0].getType().isDatatype() ){
+            TypeNode tn = parent[0].getType();
+            const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
+            if( dt.isRecursiveSingleton( tn.toType() ) ){
+              //domain size may be 1
+              break;
+            }
+          }
+          if( parent[0].getType().isBoolean() ){
+            checkParent = true;
+            break;
+          }
+        case kind::BITVECTOR_COMP:
+        case kind::LT:
+        case kind::LEQ:
+        case kind::GT:
+        case kind::GEQ:
+        {
+          if (d_unconstrained.find(parent) == d_unconstrained.end() &&
+              !d_substitutions.hasSubstitution(parent)) {
+            ++d_numUnconstrainedElim;
+            Assert(parent[0] != parent[1] &&
+                   (parent[0] == current || parent[1] == current));
+            if (currentSub.isNull()) {
+              currentSub = current;
+            }
+            currentSub = newUnconstrainedVar(parent.getType(), currentSub);
+            current = parent;
+          }
+          else {
+            currentSub = Node();
+          }
+          break;
+        }
+
+        // Unary operators that propagate unconstrainedness
+        case kind::NOT:
+        case kind::BITVECTOR_NOT:
+        case kind::BITVECTOR_NEG:
+        case kind::UMINUS:
+          ++d_numUnconstrainedElim;
+          Assert(parent[0] == current);
+          if (currentSub.isNull()) {
+            currentSub = current;
+          }
+          current = parent;
+          break;
+
+        // Unary operators that propagate unconstrainedness and return a different type
+        case kind::BITVECTOR_EXTRACT:
+          ++d_numUnconstrainedElim;
+          Assert(parent[0] == current);
+          if (currentSub.isNull()) {
+            currentSub = current;
+          }
+          currentSub = newUnconstrainedVar(parent.getType(), currentSub);
+          current = parent;
+          break;
+
+        // Operators returning same type requiring all children to be unconstrained
+        case kind::AND:
+        case kind::OR:
+        case kind::IMPLIES:
+        case kind::BITVECTOR_AND:
+        case kind::BITVECTOR_OR:
+        case kind::BITVECTOR_NAND:
+        case kind::BITVECTOR_NOR:
+        {
+          bool allUnconstrained = true;
+          for(TNode::iterator child_it = parent.begin(); child_it != parent.end(); ++child_it) {
+            if (d_unconstrained.find(*child_it) == d_unconstrained.end()) {
+              allUnconstrained = false;
+              break;
+            }
+          }
+          if (allUnconstrained) {
+            checkParent = true;
+          }
+        }
+        break;
+
+        // Require all children to be unconstrained and different
+        case kind::BITVECTOR_SHL:
+        case kind::BITVECTOR_LSHR:
+        case kind::BITVECTOR_ASHR:
+        case kind::BITVECTOR_UDIV_TOTAL:
+        case kind::BITVECTOR_UREM_TOTAL:
+        case kind::BITVECTOR_SDIV:
+        case kind::BITVECTOR_SREM:
+        case kind::BITVECTOR_SMOD: {
+          bool allUnconstrained = true;
+          bool allDifferent = true;
+          for(TNode::iterator child_it = parent.begin(); child_it != parent.end(); ++child_it) {
+            if (d_unconstrained.find(*child_it) == d_unconstrained.end()) {
+              allUnconstrained = false;
+              break;
+            }
+            for(TNode::iterator child_it2 = child_it + 1; child_it2 != parent.end(); ++child_it2) {
+              if (*child_it == *child_it2) {
+                allDifferent = false;
+                break;
+              }
+            }
+          }
+          if (allUnconstrained && allDifferent) {
+            checkParent = true;
+          }
+          break;
+        }
+
+        // Requires all children to be unconstrained and different, and returns a different type
+        case kind::BITVECTOR_CONCAT:
+        {
+          bool allUnconstrained = true;
+          bool allDifferent = true;
+          for(TNode::iterator child_it = parent.begin(); child_it != parent.end(); ++child_it) {
+            if (d_unconstrained.find(*child_it) == d_unconstrained.end()) {
+              allUnconstrained = false;
+              break;
+            }
+            for(TNode::iterator child_it2 = child_it + 1; child_it2 != parent.end(); ++child_it2) {
+              if (*child_it == *child_it2) {
+                allDifferent = false;
+                break;
+              }
+            }
+          }
+          if (allUnconstrained && allDifferent) {
+            if (d_unconstrained.find(parent) == d_unconstrained.end() &&
+                !d_substitutions.hasSubstitution(parent)) {
+              ++d_numUnconstrainedElim;
+              if (currentSub.isNull()) {
+                currentSub = current;
+              }
+              currentSub = newUnconstrainedVar(parent.getType(), currentSub);
+              current = parent;
+            }
+            else {
+              currentSub = Node();
+            }
+          }
+        }
+        break;
+
+        // N-ary operators returning same type requiring at least one child to be unconstrained
+        case kind::PLUS:
+        case kind::MINUS:
+          if (current.getType().isInteger() &&
+              !parent.getType().isInteger()) {
+            break;
+          }
+        case kind::XOR:
+        case kind::BITVECTOR_XOR:
+        case kind::BITVECTOR_XNOR:
+        case kind::BITVECTOR_PLUS:
+        case kind::BITVECTOR_SUB:
+          checkParent = true;
+          break;
+
+        // Multiplication/division: must be non-integer and other operand must be non-zero
+        case kind::MULT: {
+        case kind::DIVISION:
+          Assert(parent.getNumChildren() == 2);
+          TNode other;
+          if (parent[0] == current) {
+            other = parent[1];
+          }
+          else {
+            Assert(parent[1] == current);
+            other = parent[0];
+          }
+          if (d_unconstrained.find(other) != d_unconstrained.end()) {
+            if (d_unconstrained.find(parent) == d_unconstrained.end() &&
+                !d_substitutions.hasSubstitution(parent)) {
+              if (current.getType().isInteger() && other.getType().isInteger()) {
+                Assert(parent.getKind() == kind::DIVISION || parent.getType().isInteger());
+                if (parent.getKind() == kind::DIVISION) {
+                  break;
+                }
+              }
+              ++d_numUnconstrainedElim;
+              if (currentSub.isNull()) {
+                currentSub = current;
+              }
+              current = parent;
+            }
+            else {
+              currentSub = Node();
+            }
+          }
+          else {
+            // if only the denominator of a division is unconstrained, can't set it to 0 so the result is not unconstrained
+            if (parent.getKind() == kind::DIVISION && current == parent[1]) {
+              break;
+            }
+            NodeManager* nm = NodeManager::currentNM();
+            // if we are an integer, the only way we are unconstrained is if we are a MULT by -1
+            if (current.getType().isInteger()) {
+              // div/mult by 1 should have been simplified
+              Assert(other != nm->mkConst<Rational>(1));
+              if (other == nm->mkConst<Rational>(-1)) {
+                // div by -1 should have been simplified
+                Assert(parent.getKind() == kind::MULT);
+                Assert(parent.getType().isInteger());
+              }
+              else {
+                break;
+              }
+            }
+            else {
+              // TODO: could build ITE here
+              Node test = other.eqNode(nm->mkConst<Rational>(0));
+              if (Rewriter::rewrite(test) != nm->mkConst<bool>(false)) {
+                break;
+              }
+            }
+            ++d_numUnconstrainedElim;
+            if (currentSub.isNull()) {
+              currentSub = current;
+            }
+            current = parent;
+          }
+          break;
+        }
+
+        // Bitvector MULT - current must only appear once in the children:
+        // all other children must be unconstrained or odd
+        case kind::BITVECTOR_MULT:
+        {
+          bool found = false;
+          bool done = false;
+          for(TNode::iterator child_it = parent.begin(); child_it != parent.end(); ++child_it) {
+            if ((*child_it) == current) {
+              if (found) {
+                done = true;
+                break;
+              }
+              found = true;
+              continue;
+            }
+            else if (d_unconstrained.find(*child_it) != d_unconstrained.end()) {
+              continue;
+            }
+            else {
+              NodeManager* nm = NodeManager::currentNM();
+              Node extractOp = nm->mkConst<BitVectorExtract>(BitVectorExtract(0,0));
+              vector<Node> children;
+              children.push_back(*child_it);
+              Node test = nm->mkNode(extractOp, children);
+              BitVector one(1,unsigned(1));
+              test = test.eqNode(nm->mkConst<BitVector>(one));
+              if (Rewriter::rewrite(test) != nm->mkConst<bool>(true)) {
+                done = true;
+                break;
+              }
+            }
+          }
+          if (done) {
+            break;
+          }
+          checkParent = true;
+          break;
+        }
+
+        // Uninterpreted function - if domain is infinite, no quantifiers are used, and any child is unconstrained, result is unconstrained
+        case kind::APPLY_UF:
+          if (d_logicInfo.isQuantified() || !current.getType().getCardinality().isInfinite()) {
+            break;
+          }
+          if (d_unconstrained.find(parent) == d_unconstrained.end() &&
+              !d_substitutions.hasSubstitution(parent)) {
+            ++d_numUnconstrainedElim;
+            if (currentSub.isNull()) {
+              currentSub = current;
+            }
+            if (parent.getType() != current.getType()) {
+              currentSub = newUnconstrainedVar(parent.getType(), currentSub);
+            }
+            current = parent;
+          }
+          else {
+            currentSub = Node();
+          }
+          break;
+
+        // Array select - if array is unconstrained, so is result
+        case kind::SELECT:
+          if (parent[0] == current) {
+            ++d_numUnconstrainedElim;
+            Assert(current.getType().isArray());
+            if (currentSub.isNull()) {
+              currentSub = current;
+            }
+            currentSub = newUnconstrainedVar(current.getType().getArrayConstituentType(), currentSub);
+            current = parent;
+          }
+          break;
+
+        // Array store - if both store and value are unconstrained, so is resulting store
+        case kind::STORE:
+          if (((parent[0] == current &&
+                d_unconstrained.find(parent[2]) != d_unconstrained.end()) ||
+               (parent[2] == current &&
+                d_unconstrained.find(parent[0]) != d_unconstrained.end()))) {
+            if (d_unconstrained.find(parent) == d_unconstrained.end() &&
+                !d_substitutions.hasSubstitution(parent)) {
+              ++d_numUnconstrainedElim;
+              if (parent[0] != current) {
+                if (parent[0].isVar()) {
+                  currentSub = parent[0];
+                }
+                else {
+                  Assert(d_substitutions.hasSubstitution(parent[0]));
+                  currentSub = d_substitutions.apply(parent[0]);
+                }
+              }
+              else if (currentSub.isNull()) {
+                currentSub = current;
+              }
+              current = parent;
+            }
+            else {
+              currentSub = Node();
+            }
+          }
+          break;
+
+        // Bit-vector comparisons: replace with new Boolean variable, but have
+        // to also conjoin with a side condition as there is always one case
+        // when the comparison is forced to be false
+        case kind::BITVECTOR_ULT:
+        case kind::BITVECTOR_UGE:
+        case kind::BITVECTOR_UGT:
+        case kind::BITVECTOR_ULE:
+        case kind::BITVECTOR_SLT:
+        case kind::BITVECTOR_SGE:
+        case kind::BITVECTOR_SGT:
+        case kind::BITVECTOR_SLE: {
+          // Tuples over (signed, swap, strict).
+          switch (parent.getKind()) {
+            case kind::BITVECTOR_UGE:
+              break;
+            case kind::BITVECTOR_ULT:
+              strict = true;
+              break;
+            case kind::BITVECTOR_ULE:
+              swap = true;
+              break;
+            case kind::BITVECTOR_UGT:
+              swap = true;
+              strict = true;
+              break;
+            case kind::BITVECTOR_SGE:
+              isSigned = true;
+              break;
+            case kind::BITVECTOR_SLT:
+              isSigned = true;
+              strict = true;
+              break;
+            case kind::BITVECTOR_SLE:
+              isSigned = true;
+              swap = true;
+              break;
+            case kind::BITVECTOR_SGT:
+              isSigned = true;
+              swap = true;
+              strict = true;
+              break;
+            default:
+              Unreachable();
+          }
+          TNode other;
+          bool left = false;
+          if (parent[0] == current) {
+            other = parent[1];
+            left = true;
+          } else {
+            Assert(parent[1] == current);
+            other = parent[0];
+          }
+          if (d_unconstrained.find(other) != d_unconstrained.end()) {
+            if (d_unconstrained.find(parent) == d_unconstrained.end() &&
+                !d_substitutions.hasSubstitution(parent)) {
+              ++d_numUnconstrainedElim;
+              if (currentSub.isNull()) {
+                currentSub = current;
+              }
+              currentSub = newUnconstrainedVar(parent.getType(), currentSub);
+              current = parent;
+            } else {
+              currentSub = Node();
+            }
+          } else {
+            unsigned size = current.getType().getBitVectorSize();
+            BitVector bv =
+                isSigned ? BitVector(size, Integer(1).multiplyByPow2(size - 1))
+                         : BitVector(size, unsigned(0));
+            if (swap == left) {
+              bv = ~bv;
+            }
+            if (currentSub.isNull()) {
+              currentSub = current;
+            }
+            currentSub = newUnconstrainedVar(parent.getType(), currentSub);
+            current = parent;
+            NodeManager* nm = NodeManager::currentNM();
+            Node test =
+                Rewriter::rewrite(other.eqNode(nm->mkConst<BitVector>(bv)));
+            if (test == nm->mkConst<bool>(false)) {
+              break;
+            }
+            if (strict) {
+              currentSub = currentSub.andNode(test.notNode());
+            } else {
+              currentSub = currentSub.orNode(test);
+            }
+            // Delay adding this substitution - see comment at end of function
+            delayQueueLeft.push_back(current);
+            delayQueueRight.push_back(currentSub);
+            currentSub = Node();
+            parent = TNode();
+          }
+          break;
+        }
+
+        // Do nothing 
+        case kind::BITVECTOR_SIGN_EXTEND:
+        case kind::BITVECTOR_ZERO_EXTEND:
+        case kind::BITVECTOR_REPEAT:
+        case kind::BITVECTOR_ROTATE_LEFT:
+        case kind::BITVECTOR_ROTATE_RIGHT:
+
+        default:
+          break;
+      }
+      if( checkParent ){
+        //run for various cases from above
+        if (d_unconstrained.find(parent) == d_unconstrained.end() &&
+            !d_substitutions.hasSubstitution(parent)) {
+          ++d_numUnconstrainedElim;
+          if (currentSub.isNull()) {
+            currentSub = current;
+          }
+          current = parent;
+        }
+        else {
+          currentSub = Node();
+        }
+      }
+      if (current == parent && d_visited[parent] == 1) {
+        d_unconstrained.insert(parent);
+        continue;
+      }
+    }
+    if (!currentSub.isNull()) {
+      Assert(currentSub.isVar());
+      d_substitutions.addSubstitution(current, currentSub, false);
+    }
+    if (workList.empty()) {
+      break;
+    }
+    current = workList.back();
+    currentSub = Node();
+    workList.pop_back();
+  }
+  TNode left;
+  Node right;
+  // All substitutions except those arising from bitvector comparisons are
+  // substitutions t -> x where x is a variable.  This allows us to build the
+  // substitution very quickly (never invalidating the substitution cache).
+  // Bitvector comparisons are more complicated and may require
+  // back-substitution and cache-invalidation.  So we do these last.
+  while (!delayQueueLeft.empty()) {
+    left = delayQueueLeft.back();
+    if (!d_substitutions.hasSubstitution(left)) {
+      right = d_substitutions.apply(delayQueueRight.back());
+      d_substitutions.addSubstitution(delayQueueLeft.back(), right);
+    }
+    delayQueueLeft.pop_back();
+    delayQueueRight.pop_back();
+  }
+}
+
+
+void UnconstrainedSimplifier::processAssertions(vector<Node>& assertions)
+{
+  d_context->push();
+
+  vector<Node>::iterator it = assertions.begin(), iend = assertions.end();
+  for (; it != iend; ++it) {
+    visitAll(*it);
+  }
+
+  if (!d_unconstrained.empty()) {
+    processUnconstrained();
+    //    d_substitutions.print(Message.getStream());
+    for (it = assertions.begin(); it != iend; ++it) {
+      (*it) = Rewriter::rewrite(d_substitutions.apply(*it));
+    }
+  }
+
+  // to clear substitutions map
+  d_context->pop();
+
+  d_visited.clear();
+  d_visitedOnce.clear();
+  d_unconstrained.clear();
+}
diff --git a/src/theory/unconstrained_simplifier.h b/src/theory/unconstrained_simplifier.h
new file mode 100644
index 0000000..e10be1a
--- /dev/null
+++ b/src/theory/unconstrained_simplifier.h
@@ -0,0 +1,65 @@
+/*********************                                                        */
+/*! \file unconstrained_simplifier.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Clark Barrett, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Simplifications based on unconstrained variables
+ **
+ ** This module implements a preprocessing phase which replaces certain "unconstrained" expressions
+ ** by variables.  Based on Roberto Bruttomesso's PhD thesis.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__UNCONSTRAINED_SIMPLIFIER_H
+#define __CVC4__UNCONSTRAINED_SIMPLIFIER_H
+
+#include <vector>
+#include <utility>
+
+#include "expr/node.h"
+#include "theory/substitutions.h"
+#include "util/statistics_registry.h"
+
+namespace CVC4 {
+
+/* Forward Declarations */
+class LogicInfo;
+
+class UnconstrainedSimplifier {
+
+  /** number of expressions eliminated due to unconstrained simplification */
+  IntStat d_numUnconstrainedElim;
+
+  typedef std::hash_map<TNode, unsigned, TNodeHashFunction> TNodeCountMap;
+  typedef std::hash_map<TNode, TNode, TNodeHashFunction> TNodeMap;
+  typedef std::hash_set<TNode, TNodeHashFunction> TNodeSet;
+
+  TNodeCountMap d_visited;
+  TNodeMap d_visitedOnce;
+  TNodeSet d_unconstrained;
+
+  context::Context* d_context;
+  theory::SubstitutionMap d_substitutions;
+
+  const LogicInfo& d_logicInfo;
+
+  void visitAll(TNode assertion);
+  Node newUnconstrainedVar(TypeNode t, TNode var);
+  void processUnconstrained();
+
+public:
+  UnconstrainedSimplifier(context::Context* context, const LogicInfo& logicInfo);
+  ~UnconstrainedSimplifier();
+  void processAssertions(std::vector<Node>& assertions);
+};
+
+}
+
+#endif
diff --git a/src/theory/valuation.cpp b/src/theory/valuation.cpp
new file mode 100644
index 0000000..7e13668
--- /dev/null
+++ b/src/theory/valuation.cpp
@@ -0,0 +1,115 @@
+/*********************                                                        */
+/*! \file valuation.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A "valuation" proxy for TheoryEngine
+ **
+ ** Implementation of Valuation class.
+ **/
+
+#include "expr/node.h"
+#include "theory/valuation.h"
+#include "theory/theory_engine.h"
+#include "theory/rewriter.h"
+
+namespace CVC4 {
+namespace theory {
+
+bool equalityStatusCompatible(EqualityStatus s1, EqualityStatus s2) {
+  switch (s1) {
+  case EQUALITY_TRUE:
+  case EQUALITY_TRUE_IN_MODEL:
+  case EQUALITY_TRUE_AND_PROPAGATED:
+    switch (s2) {
+    case EQUALITY_TRUE:
+    case EQUALITY_TRUE_IN_MODEL:
+    case EQUALITY_TRUE_AND_PROPAGATED:
+      return true;
+    default:
+      return false;
+    }
+    break;
+  case EQUALITY_FALSE:
+  case EQUALITY_FALSE_IN_MODEL:
+  case EQUALITY_FALSE_AND_PROPAGATED:
+    switch (s2) {
+    case EQUALITY_FALSE:
+    case EQUALITY_FALSE_IN_MODEL:
+    case EQUALITY_FALSE_AND_PROPAGATED:
+      return true;
+    default:
+      return false;
+    }
+    break;
+  default:
+    return false;
+  }
+}
+
+bool Valuation::isSatLiteral(TNode n) const {
+  return d_engine->getPropEngine()->isSatLiteral(n);
+}
+
+Node Valuation::getSatValue(TNode n) const {
+  if(n.getKind() == kind::NOT) {
+    Node atomRes = d_engine->getPropEngine()->getValue(n[0]);
+    if(atomRes.getKind() == kind::CONST_BOOLEAN) {
+      return NodeManager::currentNM()->mkConst(!atomRes.getConst<bool>());
+    } else {
+      Assert(atomRes.isNull());
+      return atomRes;
+    }
+  } else {
+    return d_engine->getPropEngine()->getValue(n);
+  }
+}
+
+bool Valuation::hasSatValue(TNode n, bool& value) const {
+  if (d_engine->getPropEngine()->isSatLiteral(n)) {
+    return d_engine->getPropEngine()->hasValue(n, value);
+  } else {
+    return false;
+  }
+}
+
+EqualityStatus Valuation::getEqualityStatus(TNode a, TNode b) {
+  return d_engine->getEqualityStatus(a, b);
+}
+
+Node Valuation::getModelValue(TNode var) {
+  return d_engine->getModelValue(var);
+}
+
+TheoryModel* Valuation::getModel() {
+  return d_engine->getModel();
+}
+
+Node Valuation::ensureLiteral(TNode n) {
+  return d_engine->ensureLiteral(n);
+}
+
+bool Valuation::isDecision(Node lit) const {
+  return d_engine->getPropEngine()->isDecision(lit);
+}
+
+unsigned Valuation::getAssertionLevel() const{
+  return d_engine->getPropEngine()->getAssertionLevel();
+}
+
+std::pair<bool, Node> Valuation::entailmentCheck(theory::TheoryOfMode mode, TNode lit, const theory::EntailmentCheckParameters* params, theory::EntailmentCheckSideEffects* out) {
+  return d_engine->entailmentCheck(mode, lit, params, out);
+}
+
+bool Valuation::needCheck() const{
+  return d_engine->needCheck();
+}
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
diff --git a/src/theory/valuation.h b/src/theory/valuation.h
new file mode 100644
index 0000000..54af14f
--- /dev/null
+++ b/src/theory/valuation.h
@@ -0,0 +1,152 @@
+/*********************                                                        */
+/*! \file valuation.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A "valuation" proxy for TheoryEngine
+ **
+ ** A "valuation" proxy for TheoryEngine.  This class breaks the dependence
+ ** of theories' getValue() implementations on TheoryEngine.  getValue()
+ ** takes a Valuation, which delegates to TheoryEngine.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__VALUATION_H
+#define __CVC4__THEORY__VALUATION_H
+
+#include "expr/node.h"
+#include "options/theoryof_mode.h"
+
+namespace CVC4 {
+
+class TheoryEngine;
+
+namespace theory {
+
+class EntailmentCheckParameters;
+class EntailmentCheckSideEffects;
+class TheoryModel;
+
+/**
+ * The status of an equality in the current context.
+ */
+enum EqualityStatus {
+  /** The equality is known to be true and has been propagated */
+  EQUALITY_TRUE_AND_PROPAGATED,
+  /** The equality is known to be false and has been propagated */
+  EQUALITY_FALSE_AND_PROPAGATED,
+  /** The equality is known to be true */
+  EQUALITY_TRUE,
+  /** The equality is known to be false */
+  EQUALITY_FALSE,
+  /** The equality is not known, but is true in the current model */
+  EQUALITY_TRUE_IN_MODEL,
+  /** The equality is not known, but is false in the current model */
+  EQUALITY_FALSE_IN_MODEL,
+  /** The equality is completely unknown */
+  EQUALITY_UNKNOWN
+};/* enum EqualityStatus */
+
+/**
+ * Returns true if the two statuses are compatible, i.e. both TRUE
+ * or both FALSE (regardless of inmodel/propagation).
+ */
+bool equalityStatusCompatible(EqualityStatus s1, EqualityStatus s2);
+
+class Valuation {
+  TheoryEngine* d_engine;
+public:
+  Valuation(TheoryEngine* engine) :
+    d_engine(engine) {
+  }
+
+  /**
+   * Return true if n has an associated SAT literal
+   */
+  bool isSatLiteral(TNode n) const;
+
+  /**
+   * Get the current SAT assignment to the node n.
+   *
+   * This is only permitted if n is a theory atom that has an associated
+   * SAT literal (or its negation).
+   *
+   * @return Node::null() if no current assignment; otherwise true or false.
+   */
+  Node getSatValue(TNode n) const;
+
+  /**
+   * Returns true if the node has a current SAT assignment. If yes, the
+   * argument "value" is set to its value.
+   *
+   * This is only permitted if n is a theory atom that has an associated
+   * SAT literal.
+   *
+   * @return true if the literal has a current assignment, and returns the
+   * value in the "value" argument; otherwise false and the "value"
+   * argument is unmodified.
+   */
+  bool hasSatValue(TNode n, bool& value) const;
+
+  /**
+   * Returns the equality status of the two terms, from the theory that owns the domain type.
+   * The types of a and b must be the same.
+   */
+  EqualityStatus getEqualityStatus(TNode a, TNode b);
+
+  /**
+   * Returns the model value of the shared term (or null if not available).
+   */
+  Node getModelValue(TNode var);
+
+  /**
+   * Returns pointer to model.
+   */
+  TheoryModel* getModel();
+  
+  /**
+   * Ensure that the given node will have a designated SAT literal
+   * that is definitionally equal to it.  The result of this function
+   * is a Node that can be queried via getSatValue().
+   *
+   * @return the actual node that's been "literalized," which may
+   * differ from the input due to theory-rewriting and preprocessing,
+   * as well as CNF conversion
+   */
+  Node ensureLiteral(TNode n) CVC4_WARN_UNUSED_RESULT;
+
+  /**
+   * Returns whether the given lit (which must be a SAT literal) is a decision
+   * literal or not.  Throws an exception if lit is not a SAT literal.  "lit" may
+   * be in either phase; that is, if "lit" is a SAT literal, this function returns
+   * true both for lit and the negation of lit.
+   */
+  bool isDecision(Node lit) const;
+
+  /**
+   * Get the assertion level of the SAT solver.
+   */
+  unsigned getAssertionLevel() const;
+
+  /**
+   * Request an entailment check according to the given theoryOfMode.
+   * See theory.h for documentation on entailmentCheck().
+   */
+  std::pair<bool, Node> entailmentCheck(theory::TheoryOfMode mode, TNode lit, const theory::EntailmentCheckParameters* params = NULL, theory::EntailmentCheckSideEffects* out = NULL);
+
+  /** need check ? */
+  bool needCheck() const;
+  
+};/* class Valuation */
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__VALUATION_H */
diff --git a/src/util/Makefile.am b/src/util/Makefile.am
new file mode 100644
index 0000000..a8e37c9
--- /dev/null
+++ b/src/util/Makefile.am
@@ -0,0 +1,111 @@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4LIB \
+	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
+
+noinst_LTLIBRARIES = libutil.la
+
+
+# Do not list built sources (like integer.h, rational.h) here!
+# Rather, list them under BUILT_SOURCES, and their .in versions under
+# EXTRA_DIST.  Otherwise, they're packaged up in the tarball, which is
+# no good---they belong in the configured builds/ directory.  If they
+# end up in the source directory, they build the cvc4 that was
+# configured at the time of the "make dist", which (1) may not be the
+# configuration that the user wants, and (2) might cause link errors.
+libutil_la_SOURCES = \
+	Makefile.am \
+	Makefile.in \
+	abstract_value.cpp \
+	abstract_value.h \
+	bin_heap.h \
+	bitvector.h \
+	bool.h \
+	cache.h \
+	cardinality.cpp \
+	cardinality.h \
+	channel.h \
+	debug.h \
+	dense_map.h \
+	divisible.cpp \
+	divisible.h \
+	dynamic_array.h \
+	floatingpoint.cpp \
+	floatingpoint.h \
+	gmp_util.h \
+	hash.h \
+	index.h \
+	maybe.h \
+	ntuple.h \
+	proof.h \
+	regexp.cpp \
+	regexp.h \
+	resource_manager.cpp \
+	resource_manager.h \
+	result.cpp \
+	result.h \
+	sexpr.cpp \
+	sexpr.h \
+	smt2_quote_string.cpp \
+	smt2_quote_string.h \
+	statistics.cpp \
+	statistics.h \
+	statistics_registry.cpp \
+	statistics_registry.h \
+	subrange_bound.cpp \
+	subrange_bound.h \
+	tuple.h \
+	unsafe_interrupt_exception.h \
+	utility.h
+
+BUILT_SOURCES = \
+	rational.h \
+	integer.h
+
+if CVC4_CLN_IMP
+libutil_la_SOURCES += \
+	rational_cln_imp.cpp \
+	integer_cln_imp.cpp
+endif
+if CVC4_GMP_IMP
+libutil_la_SOURCES += \
+	rational_gmp_imp.cpp \
+	integer_gmp_imp.cpp
+endif
+
+
+EXTRA_DIST = \
+	bitvector.i \
+	bool.i \
+	cardinality.i \
+	divisible.i \
+	floatingpoint.i \
+	hash.i \
+	integer.h.in \
+	integer.i \
+	integer_cln_imp.cpp \
+	integer_cln_imp.h \
+	integer_gmp_imp.cpp \
+	integer_gmp_imp.h \
+	proof.i \
+	rational.h.in \
+	rational.i \
+	rational_cln_imp.cpp \
+	rational_cln_imp.h \
+	rational_gmp_imp.cpp \
+	rational_gmp_imp.h \
+	regexp.i \
+	resource_manager.i \
+	result.i \
+	sexpr.i \
+	statistics.i \
+	subrange_bound.i \
+	tuple.i \
+	unsafe_interrupt_exception.i
+
+
+DISTCLEANFILES = \
+	integer.h.tmp \
+	rational.h.tmp \
+	integer.h \
+	rational.h
diff --git a/src/util/Makefile.in b/src/util/Makefile.in
new file mode 100644
index 0000000..72a7bfb
--- /dev/null
+++ b/src/util/Makefile.in
@@ -0,0 +1,869 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at CVC4_CLN_IMP_TRUE@am__append_1 = \
+ at CVC4_CLN_IMP_TRUE@	rational_cln_imp.cpp \
+ at CVC4_CLN_IMP_TRUE@	integer_cln_imp.cpp
+
+ at CVC4_GMP_IMP_TRUE@am__append_2 = \
+ at CVC4_GMP_IMP_TRUE@	rational_gmp_imp.cpp \
+ at CVC4_GMP_IMP_TRUE@	integer_gmp_imp.cpp
+
+subdir = src/util
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES = integer.h.tmp rational.h.tmp
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libutil_la_LIBADD =
+am__libutil_la_SOURCES_DIST = Makefile.am Makefile.in \
+	abstract_value.cpp abstract_value.h bin_heap.h bitvector.h \
+	bool.h cache.h cardinality.cpp cardinality.h channel.h debug.h \
+	dense_map.h divisible.cpp divisible.h dynamic_array.h \
+	floatingpoint.cpp floatingpoint.h gmp_util.h hash.h index.h \
+	maybe.h ntuple.h proof.h regexp.cpp regexp.h \
+	resource_manager.cpp resource_manager.h result.cpp result.h \
+	sexpr.cpp sexpr.h smt2_quote_string.cpp smt2_quote_string.h \
+	statistics.cpp statistics.h statistics_registry.cpp \
+	statistics_registry.h subrange_bound.cpp subrange_bound.h \
+	tuple.h unsafe_interrupt_exception.h utility.h \
+	rational_cln_imp.cpp integer_cln_imp.cpp rational_gmp_imp.cpp \
+	integer_gmp_imp.cpp
+ at CVC4_CLN_IMP_TRUE@am__objects_1 = rational_cln_imp.lo \
+ at CVC4_CLN_IMP_TRUE@	integer_cln_imp.lo
+ at CVC4_GMP_IMP_TRUE@am__objects_2 = rational_gmp_imp.lo \
+ at CVC4_GMP_IMP_TRUE@	integer_gmp_imp.lo
+am_libutil_la_OBJECTS = abstract_value.lo cardinality.lo divisible.lo \
+	floatingpoint.lo regexp.lo resource_manager.lo result.lo \
+	sexpr.lo smt2_quote_string.lo statistics.lo \
+	statistics_registry.lo subrange_bound.lo $(am__objects_1) \
+	$(am__objects_2)
+libutil_la_OBJECTS = $(am_libutil_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(libutil_la_SOURCES)
+DIST_SOURCES = $(am__libutil_la_SOURCES_DIST)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/integer.h.in \
+	$(srcdir)/rational.h.in $(top_srcdir)/config/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+AM_CPPFLAGS = \
+	-D__BUILDING_CVC4LIB \
+	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..
+
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
+noinst_LTLIBRARIES = libutil.la
+
+# Do not list built sources (like integer.h, rational.h) here!
+# Rather, list them under BUILT_SOURCES, and their .in versions under
+# EXTRA_DIST.  Otherwise, they're packaged up in the tarball, which is
+# no good---they belong in the configured builds/ directory.  If they
+# end up in the source directory, they build the cvc4 that was
+# configured at the time of the "make dist", which (1) may not be the
+# configuration that the user wants, and (2) might cause link errors.
+libutil_la_SOURCES = Makefile.am Makefile.in abstract_value.cpp \
+	abstract_value.h bin_heap.h bitvector.h bool.h cache.h \
+	cardinality.cpp cardinality.h channel.h debug.h dense_map.h \
+	divisible.cpp divisible.h dynamic_array.h floatingpoint.cpp \
+	floatingpoint.h gmp_util.h hash.h index.h maybe.h ntuple.h \
+	proof.h regexp.cpp regexp.h resource_manager.cpp \
+	resource_manager.h result.cpp result.h sexpr.cpp sexpr.h \
+	smt2_quote_string.cpp smt2_quote_string.h statistics.cpp \
+	statistics.h statistics_registry.cpp statistics_registry.h \
+	subrange_bound.cpp subrange_bound.h tuple.h \
+	unsafe_interrupt_exception.h utility.h $(am__append_1) \
+	$(am__append_2)
+BUILT_SOURCES = \
+	rational.h \
+	integer.h
+
+EXTRA_DIST = \
+	bitvector.i \
+	bool.i \
+	cardinality.i \
+	divisible.i \
+	floatingpoint.i \
+	hash.i \
+	integer.h.in \
+	integer.i \
+	integer_cln_imp.cpp \
+	integer_cln_imp.h \
+	integer_gmp_imp.cpp \
+	integer_gmp_imp.h \
+	proof.i \
+	rational.h.in \
+	rational.i \
+	rational_cln_imp.cpp \
+	rational_cln_imp.h \
+	rational_gmp_imp.cpp \
+	rational_gmp_imp.h \
+	regexp.i \
+	resource_manager.i \
+	result.i \
+	sexpr.i \
+	statistics.i \
+	subrange_bound.i \
+	tuple.i \
+	unsafe_interrupt_exception.i
+
+DISTCLEANFILES = \
+	integer.h.tmp \
+	rational.h.tmp \
+	integer.h \
+	rational.h
+
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/util/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/util/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+integer.h.tmp: $(top_builddir)/config.status $(srcdir)/integer.h.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+rational.h.tmp: $(top_builddir)/config.status $(srcdir)/rational.h.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+libutil.la: $(libutil_la_OBJECTS) $(libutil_la_DEPENDENCIES) $(EXTRA_libutil_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK)  $(libutil_la_OBJECTS) $(libutil_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/abstract_value.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cardinality.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/divisible.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/floatingpoint.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/integer_cln_imp.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/integer_gmp_imp.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/rational_cln_imp.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/rational_gmp_imp.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/regexp.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/resource_manager.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/result.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sexpr.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/smt2_quote_string.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/statistics.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/statistics_registry.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/subrange_bound.Plo at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/util/abstract_value.cpp b/src/util/abstract_value.cpp
new file mode 100644
index 0000000..c805690
--- /dev/null
+++ b/src/util/abstract_value.cpp
@@ -0,0 +1,38 @@
+/*********************                                                        */
+/*! \file abstract_value.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Representation of abstract values
+ **
+ ** Representation of abstract values.
+ **/
+
+#include "util/abstract_value.h"
+
+#include <iostream>
+#include <sstream>
+#include <string>
+
+#include "base/cvc4_assert.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+std::ostream& operator<<(std::ostream& out, const AbstractValue& val) {
+  return out << "@" << val.getIndex();
+}
+
+AbstractValue::AbstractValue(Integer index) throw(IllegalArgumentException) :
+    d_index(index) {
+    PrettyCheckArgument(index >= 1, index, "index >= 1 required for abstract value, not `%s'", index.toString().c_str());
+}
+
+}/* CVC4 namespace */
diff --git a/src/util/abstract_value.h b/src/util/abstract_value.h
new file mode 100644
index 0000000..d85a62c
--- /dev/null
+++ b/src/util/abstract_value.h
@@ -0,0 +1,73 @@
+/*********************                                                        */
+/*! \file abstract_value.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Representation of abstract values
+ **
+ ** Representation of abstract values.
+ **/
+
+#include "cvc4_public.h"
+
+#pragma once
+
+#include <iosfwd>
+
+#include "util/integer.h"
+
+namespace CVC4 {
+
+class CVC4_PUBLIC AbstractValue {
+  const Integer d_index;
+
+public:
+
+  AbstractValue(Integer index) throw(IllegalArgumentException);
+
+  ~AbstractValue() throw() {}
+
+  const Integer& getIndex() const throw() {
+    return d_index;
+  }
+
+  bool operator==(const AbstractValue& val) const throw() {
+    return d_index == val.d_index;
+  }
+  bool operator!=(const AbstractValue& val) const throw() {
+    return !(*this == val);
+  }
+
+  bool operator<(const AbstractValue& val) const throw() {
+    return d_index < val.d_index;
+  }
+  bool operator<=(const AbstractValue& val) const throw() {
+    return d_index <= val.d_index;
+  }
+  bool operator>(const AbstractValue& val) const throw() {
+    return !(*this <= val);
+  }
+  bool operator>=(const AbstractValue& val) const throw() {
+    return !(*this < val);
+  }
+
+};/* class AbstractValue */
+
+std::ostream& operator<<(std::ostream& out, const AbstractValue& val) CVC4_PUBLIC;
+
+/**
+ * Hash function for the BitVector constants.
+ */
+struct CVC4_PUBLIC AbstractValueHashFunction {
+  inline size_t operator()(const AbstractValue& val) const {
+    return IntegerHashFunction()(val.getIndex());
+  }
+};/* struct AbstractValueHashFunction */
+
+}/* CVC4 namespace */
diff --git a/src/util/bin_heap.h b/src/util/bin_heap.h
new file mode 100644
index 0000000..4f2b25c
--- /dev/null
+++ b/src/util/bin_heap.h
@@ -0,0 +1,368 @@
+/*********************                                                        */
+/*! \file bin_heap.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An implementation of a binary heap
+ **
+ ** An implementation of a binary heap.
+ ** Attempts to roughly follow the contract of Boost's d_ary_heap.
+ ** (http://www.boost.org/doc/libs/1_49_0/doc/html/boost/heap/d_ary_heap.html)
+ ** Also attempts to generalize ext/pd_bs/priority_queue.
+ ** (http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/priority_queue.html)
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__BIN_HEAP_H
+#define __CVC4__BIN_HEAP_H
+
+#include <limits>
+#include <functional>
+
+#include "base/cvc4_assert.h"
+#include "base/exception.h"
+
+namespace CVC4 {
+
+/**
+ * BinaryHeap that orders its elements greatest-first (i.e., in the opposite
+ * direction of the provided comparator).  Update of elements is permitted
+ * via handles, which are not invalidated by mutation (pushes and pops etc.).
+ * Handles are invalidted when their element is no longer a member of the
+ * heap.  Iteration over elements is supported but iteration is unsorted and
+ * iterators are immutable.
+ */
+template <class Elem, class CmpFcn = std::less<Elem> >
+class BinaryHeap {
+private:
+  typedef Elem T;
+  struct HElement;
+
+  typedef std::vector<HElement*> ElementVector;
+
+  struct HElement {
+    HElement(size_t pos, const T& elem): d_pos(pos), d_elem(elem) {}
+    size_t d_pos;
+    T d_elem;
+  };/* struct HElement */
+
+  /** A 0 indexed binary heap. */
+  ElementVector d_heap;
+
+  /** The comparator. */
+  CmpFcn d_cmp;
+
+  // disallow copy and assignment
+  BinaryHeap(const BinaryHeap&) CVC4_UNDEFINED;
+  BinaryHeap& operator=(const BinaryHeap&) CVC4_UNDEFINED;
+
+public:
+  BinaryHeap(const CmpFcn& c = CmpFcn())
+    : d_heap()
+    , d_cmp(c)
+  {}
+
+  ~BinaryHeap(){
+    clear();
+  }
+
+  class handle {
+  private:
+    HElement* d_pointer;
+    handle(HElement* p) : d_pointer(p){}
+    friend class BinaryHeap;
+  public:
+    handle() : d_pointer(NULL) {}
+    const T& operator*() const {
+      Assert(d_pointer != NULL);
+      return d_pointer->d_elem;
+    }
+
+    bool operator==(const handle& h) const {
+      return d_pointer == h.d_pointer;
+    }
+
+    bool operator!=(const handle& h) const {
+      return d_pointer != h.d_pointer;
+    }
+
+  }; /* BinaryHeap<>::handle */
+
+  class const_iterator : public std::iterator<std::input_iterator_tag, Elem> {
+  private:
+    typename ElementVector::const_iterator d_iter;
+    friend class BinaryHeap;
+    const_iterator(const typename ElementVector::const_iterator& iter)
+      : d_iter(iter)
+    {}
+  public:
+    const_iterator(){}
+    inline bool operator==(const const_iterator& ci) const{
+      return d_iter == ci.d_iter;
+    }
+    inline bool operator!=(const const_iterator& ci) const{
+      return d_iter != ci.d_iter;
+    }
+    inline const_iterator& operator++(){
+      ++d_iter;
+      return *this;
+    }
+    inline const_iterator operator++(int){
+      const_iterator i = *this;
+      ++d_iter;
+      return i;
+    }
+    inline const T& operator*() const{
+      const HElement* he = *d_iter;
+      return he->d_elem;
+    }
+
+  };/* BinaryHeap<>::const_iterator */
+
+  typedef const_iterator iterator;
+
+  inline size_t size() const { return d_heap.size(); }
+  inline bool empty() const { return d_heap.empty(); }
+
+  inline const_iterator begin() const {
+    return const_iterator(d_heap.begin());
+  }
+
+  inline const_iterator end() const {
+    return const_iterator(d_heap.end());
+  }
+
+  void clear(){
+    typename ElementVector::iterator i=d_heap.begin(), iend=d_heap.end();
+    for(; i!=iend; ++i){
+      HElement* he = *i;
+      delete he;
+    }
+    d_heap.clear();
+  }
+
+  void swap(BinaryHeap& heap){
+    std::swap(d_heap, heap.d_heap);
+    std::swap(d_cmp, heap.d_cmp);
+  }
+
+  handle push(const T& toAdded){
+    Assert(size() < MAX_SIZE);
+    HElement* he = new HElement(size(), toAdded);
+    d_heap.push_back(he);
+    up_heap(he);
+    return handle(he);
+  }
+
+  void erase(handle h){
+    Assert(!empty());
+    Assert(debugHandle(h));
+
+    HElement* he = h.d_pointer;
+    size_t pos = he->d_pos;
+    if(pos == root()){
+      // the top element can be efficiently removed by pop
+      pop();
+    }else if(pos == last()){
+      // the last element can be safely removed
+      d_heap.pop_back();
+      delete he;
+    }else{
+      // This corresponds to
+      // 1) swapping the elements at pos with the element at last:
+      // 2) deleting the new last element
+      // 3) updating the position of the new element at pos
+      swapIndices(pos, last());
+      d_heap.pop_back();
+      delete he;
+      update(handle(d_heap[pos]));
+    }
+  }
+
+  void pop(){
+    Assert(!empty());
+    swapIndices(root(), last());
+    HElement* b = d_heap.back();
+    d_heap.pop_back();
+    delete b;
+
+    if(!empty()){
+      down_heap(d_heap.front());
+    }
+  }
+
+  const T& top() const {
+    Assert(!empty());
+    return (d_heap.front())->d_elem;
+  }
+
+private:
+  void update(handle h){
+    Assert(!empty());
+    Assert(debugHandle(h));
+
+    // The relationship between h and its parent, left and right has become unknown.
+    // But it is assumed that parent <= left, and parent <= right still hold.
+    // Figure out whether to up_heap or down_heap.
+
+    Assert(!empty());
+    HElement* he = h.d_pointer;
+
+    size_t pos = he->d_pos;
+    if(pos == root()){
+      // no parent
+      down_heap(he);
+    }else{
+      size_t par = parent(pos);
+      HElement* at_parent = d_heap[par];
+      if(gt(he->d_elem, at_parent->d_elem)){
+        // he > parent
+        up_heap(he);
+      }else{
+        down_heap(he);
+      }
+    }
+  }
+
+public:
+  void update(handle h, const T& val){
+    Assert(!empty());
+    Assert(debugHandle(h));
+    h.d_pointer->d_elem = val;
+    update(h);
+  }
+
+  /** (std::numeric_limits<size_t>::max()-2)/2; */
+  static const size_t MAX_SIZE;
+
+private:
+  inline bool gt(const T& a, const T& b) const{
+    // cmp acts like an operator<
+    return d_cmp(b, a);
+  }
+
+  inline bool lt(const T& a, const T& b) const{
+    return d_cmp(a, b);
+  }
+
+  inline static size_t parent(size_t p){
+    Assert(p != root());
+    return (p-1)/2;
+  }
+  inline static size_t right(size_t p){ return 2*p+2; }
+  inline static size_t left(size_t p){ return 2*p+1; }
+  inline static size_t root(){ return 0; }
+  inline size_t last() const{
+    Assert(!empty());
+    return size() - 1;
+  }
+
+  inline void swapIndices(size_t i, size_t j){
+    HElement* at_i = d_heap[i];
+    HElement* at_j = d_heap[j];
+    swap(i,j,at_i,at_j);
+  }
+
+  inline void swapPointers(HElement* at_i, HElement* at_j){
+    // still works if at_i == at_j
+    size_t i = at_i->d_pos;
+    size_t j = at_j->d_pos;
+    swap(i,j,at_i,at_j);
+  }
+
+  inline void swap(size_t i, size_t j, HElement* at_i, HElement* at_j){
+    // still works if i == j
+    Assert(i == at_i->d_pos);
+    Assert(j == at_j->d_pos);
+    d_heap[i] = at_j;
+    d_heap[j] = at_i;
+    at_i->d_pos = j;
+    at_j->d_pos = i;
+  }
+
+  void up_heap(HElement* he){
+    const size_t& curr = he->d_pos;
+    // The value of curr changes implicitly during swap operations.
+    while(curr != root()){
+      // he->d_elem > parent
+      size_t par = parent(curr);
+      HElement* at_parent = d_heap[par];
+      if(gt(he->d_elem, at_parent->d_elem)){
+        swap(curr, par, he, at_parent);
+      }else{
+        break;
+      }
+    }
+  }
+
+  void down_heap(HElement* he){
+    const size_t& curr = he->d_pos;
+    // The value of curr changes implicitly during swap operations.
+    size_t N = size();
+    size_t r, l;
+
+    while((r = right(curr)) < N){
+      l = left(curr);
+
+      // if at_left == at_right, favor left
+      HElement* at_left = d_heap[l];
+      HElement* at_right = d_heap[r];
+      if(lt(he->d_elem, at_left->d_elem)){
+        // he < at_left
+        if(lt(at_left->d_elem, at_right->d_elem)){
+          // he < at_left < at_right
+          swap(curr, r, he, at_right);
+        }else{
+          //       he <  at_left
+          // at_right <= at_left
+          swap(curr, l, he, at_left);
+        }
+      }else{
+        // at_left <= he
+        if(lt(he->d_elem, at_right->d_elem)){
+          // at_left <= he < at_right
+          swap(curr, r, he, at_right);
+        }else{
+          // at_left  <= he
+          // at_right <= he
+          break;
+        }
+      }
+    }
+    l = left(curr);
+    if(r >= N && l < N){
+      // there is a left but not a right
+      HElement* at_left = d_heap[l];
+      if(lt(he->d_elem, at_left->d_elem)){
+        // he < at_left
+        swap(curr, l, he, at_left);
+      }
+    }
+  }
+
+  bool debugHandle(handle h) const{
+    HElement* he = h.d_pointer;
+    if( he == NULL ){
+      return true;
+    }else if(he->d_pos >= size()){
+      return false;
+    }else{
+      return he == d_heap[he->d_pos];
+    }
+  }
+
+}; /* class BinaryHeap<> */
+
+template <class Elem, class CmpFcn>
+const size_t BinaryHeap<Elem,CmpFcn>::MAX_SIZE = (std::numeric_limits<size_t>::max()-2)/2;
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__BIN_HEAP_H */
diff --git a/src/util/bitvector.h b/src/util/bitvector.h
new file mode 100644
index 0000000..4a74c1c
--- /dev/null
+++ b/src/util/bitvector.h
@@ -0,0 +1,528 @@
+/*********************                                                        */
+/*! \file bitvector.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Dejan Jovanovic, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__BITVECTOR_H
+#define __CVC4__BITVECTOR_H
+
+#include <iosfwd>
+
+#include "base/exception.h"
+#include "util/integer.h"
+
+namespace CVC4 {
+
+class CVC4_PUBLIC BitVector {
+public:
+
+  BitVector(unsigned size, const Integer& val):
+    d_size(size),
+    d_value(val.modByPow2(size))
+      {}
+
+  BitVector(unsigned size = 0)
+    : d_size(size), d_value(0) {}
+
+  BitVector(unsigned size, unsigned int z)
+    : d_size(size), d_value(z) {
+    d_value = d_value.modByPow2(size);
+  }
+
+  BitVector(unsigned size, unsigned long int z)
+    : d_size(size), d_value(z) {
+    d_value = d_value.modByPow2(size);
+  }
+
+  BitVector(unsigned size, const BitVector& q)
+    : d_size(size), d_value(q.d_value) {}
+
+  BitVector(const std::string& num, unsigned base = 2);
+
+  ~BitVector() {}
+
+  Integer toInteger() const {
+    return d_value;
+  }
+
+  BitVector& operator =(const BitVector& x) {
+    if(this == &x)
+      return *this;
+    d_size = x.d_size;
+    d_value = x.d_value;
+    return *this;
+  }
+
+  bool operator ==(const BitVector& y) const {
+    if (d_size != y.d_size) return false;
+    return d_value == y.d_value;
+  }
+
+  bool operator !=(const BitVector& y) const {
+    if (d_size != y.d_size) return true;
+    return d_value != y.d_value;
+  }
+
+  BitVector concat (const BitVector& other) const {
+    return BitVector(d_size + other.d_size, (d_value.multiplyByPow2(other.d_size)) + other.d_value);
+  }
+
+  BitVector extract(unsigned high, unsigned low) const {
+    return BitVector(high - low + 1, d_value.extractBitRange(high - low + 1, low));
+  }
+
+  /*
+    Bitwise operations on BitVectors
+   */
+
+  // xor
+  BitVector operator ^(const BitVector& y) const {
+    CheckArgument(d_size == y.d_size, y);
+    return BitVector(d_size, d_value.bitwiseXor(y.d_value));
+  }
+
+  // or
+  BitVector operator |(const BitVector& y) const {
+    CheckArgument(d_size == y.d_size, y);
+    return BitVector(d_size, d_value.bitwiseOr(y.d_value));
+  }
+
+  // and
+  BitVector operator &(const BitVector& y) const {
+    CheckArgument(d_size == y.d_size, y);
+    return BitVector(d_size, d_value.bitwiseAnd(y.d_value));
+  }
+
+  // not
+  BitVector operator ~() const {
+    return BitVector(d_size, d_value.bitwiseNot());
+  }
+
+  /*
+    Arithmetic operations on BitVectors
+   */
+
+
+  bool operator <(const BitVector& y) const {
+    return d_value < y.d_value;
+  }
+
+  bool operator >(const BitVector& y) const {
+    return d_value > y.d_value ;
+  }
+
+  bool operator <=(const BitVector& y) const {
+    return d_value <= y.d_value;
+  }
+
+  bool operator >=(const BitVector& y) const {
+    return d_value >= y.d_value ;
+  }
+
+
+  BitVector operator +(const BitVector& y) const {
+    CheckArgument(d_size == y.d_size, y);
+    Integer sum = d_value +  y.d_value;
+    return BitVector(d_size, sum);
+  }
+
+  BitVector operator -(const BitVector& y) const {
+    CheckArgument(d_size == y.d_size, y);
+    // to maintain the invariant that we are only adding BitVectors of the
+    // same size
+    BitVector one(d_size, Integer(1));
+    return *this + ~y + one;
+  }
+
+  BitVector operator -() const {
+    BitVector one(d_size, Integer(1));
+    return ~(*this) + one;
+  }
+
+  BitVector operator *(const BitVector& y) const {
+    CheckArgument(d_size == y.d_size, y);
+    Integer prod = d_value * y.d_value;
+    return BitVector(d_size, prod);
+  }
+
+  BitVector setBit(uint32_t i) const {
+    CheckArgument(i < d_size, i);
+    Integer res = d_value.setBit(i);
+    return BitVector(d_size, res);
+  }
+
+  bool isBitSet(uint32_t i) const {
+    CheckArgument(i < d_size, i);
+    return d_value.isBitSet(i);
+  }
+
+  /**
+   * Total division function that returns 0 when the denominator is 0.
+   */
+  BitVector unsignedDivTotal (const BitVector& y) const {
+
+    CheckArgument(d_size == y.d_size, y);
+    if (y.d_value == 0) {
+      // under division by zero return -1
+      return BitVector(d_size, Integer(1).oneExtend(1, d_size - 1));
+    }
+    CheckArgument(d_value >= 0, this);
+    CheckArgument(y.d_value > 0, y);
+    return BitVector(d_size, d_value.floorDivideQuotient(y.d_value));
+  }
+
+  /**
+   * Total division function that returns 0 when the denominator is 0.
+   */
+  BitVector unsignedRemTotal(const BitVector& y) const {
+    CheckArgument(d_size == y.d_size, y);
+    if (y.d_value == 0) {
+      return BitVector(d_size, d_value);
+    }
+    CheckArgument(d_value >= 0, this);
+    CheckArgument(y.d_value > 0, y);
+    return BitVector(d_size, d_value.floorDivideRemainder(y.d_value));
+  }
+
+
+  bool signedLessThan(const BitVector& y) const {
+    CheckArgument(d_size == y.d_size, y);
+    CheckArgument(d_value >= 0, this);
+    CheckArgument(y.d_value >= 0, y);
+    Integer a = (*this).toSignedInt();
+    Integer b = y.toSignedInt();
+
+    return a < b;
+  }
+
+  bool unsignedLessThan(const BitVector& y) const {
+    CheckArgument(d_size == y.d_size, y);
+    CheckArgument(d_value >= 0, this);
+    CheckArgument(y.d_value >= 0, y);
+    return d_value < y.d_value;
+  }
+
+  bool signedLessThanEq(const BitVector& y) const {
+    CheckArgument(d_size == y.d_size, y);
+    CheckArgument(d_value >= 0, this);
+    CheckArgument(y.d_value >= 0, y);
+    Integer a = (*this).toSignedInt();
+    Integer b = y.toSignedInt();
+
+    return a <= b;
+  }
+
+  bool unsignedLessThanEq(const BitVector& y) const {
+    CheckArgument(d_size == y.d_size, this);
+    CheckArgument(d_value >= 0, this);
+    CheckArgument(y.d_value >= 0, y);
+    return d_value <= y.d_value;
+  }
+
+
+  /*
+    Extend operations
+   */
+  BitVector zeroExtend(unsigned amount) const {
+    return BitVector(d_size + amount, d_value);
+  }
+
+  BitVector signExtend(unsigned amount) const {
+    Integer sign_bit = d_value.extractBitRange(1, d_size -1);
+    if(sign_bit == Integer(0)) {
+      return BitVector(d_size + amount, d_value);
+    } else {
+      Integer val = d_value.oneExtend(d_size, amount);
+      return BitVector(d_size+ amount, val);
+    }
+  }
+
+  /*
+    Shifts on BitVectors
+   */
+  BitVector leftShift(const BitVector& y) const {
+    if (y.d_value > Integer(d_size)) {
+      return BitVector(d_size, Integer(0));
+    }
+    if (y.d_value == 0) {
+      return *this;
+    }
+
+    // making sure we don't lose information casting
+    CheckArgument(y.d_value < Integer(1).multiplyByPow2(32), y);
+    uint32_t amount = y.d_value.toUnsignedInt();
+    Integer res = d_value.multiplyByPow2(amount);
+    return BitVector(d_size, res);
+  }
+
+  BitVector logicalRightShift(const BitVector& y) const {
+    if(y.d_value > Integer(d_size)) {
+      return BitVector(d_size, Integer(0));
+    }
+
+    // making sure we don't lose information casting
+    CheckArgument(y.d_value < Integer(1).multiplyByPow2(32), y);
+    uint32_t amount = y.d_value.toUnsignedInt();
+    Integer res = d_value.divByPow2(amount);
+    return BitVector(d_size, res);
+  }
+
+  BitVector arithRightShift(const BitVector& y) const {
+    Integer sign_bit = d_value.extractBitRange(1, d_size - 1);
+    if(y.d_value > Integer(d_size)) {
+      if(sign_bit == Integer(0)) {
+        return BitVector(d_size, Integer(0));
+      } else {
+        return BitVector(d_size, Integer(d_size).multiplyByPow2(d_size) -1 );
+      }
+    }
+
+    if (y.d_value == 0) {
+      return *this;
+    }
+
+    // making sure we don't lose information casting
+    CheckArgument(y.d_value < Integer(1).multiplyByPow2(32), y);
+
+    uint32_t amount  = y.d_value.toUnsignedInt();
+    Integer rest = d_value.divByPow2(amount);
+
+    if(sign_bit == Integer(0)) {
+      return BitVector(d_size, rest);
+    }
+    Integer res = rest.oneExtend(d_size - amount, amount);
+    return BitVector(d_size, res);
+  }
+
+
+  /*
+    Convenience functions
+   */
+
+  size_t hash() const {
+    return d_value.hash() + d_size;
+  }
+
+  std::string toString(unsigned int base = 2) const {
+    std::string str = d_value.toString(base);
+    if( base == 2 && d_size > str.size() ) {
+      std::string zeroes;
+      for( unsigned int i=0; i < d_size - str.size(); ++i ) {
+        zeroes.append("0");
+      }
+      return zeroes + str;
+    } else {
+      return str;
+    }
+  }
+
+  unsigned getSize() const {
+    return d_size;
+  }
+
+  const Integer& getValue() const {
+    return d_value;
+  }
+
+  Integer toSignedInt() const {
+    // returns Integer corresponding to two's complement interpretation of bv
+    unsigned size = d_size;
+    Integer sign_bit = d_value.extractBitRange(1,size-1);
+    Integer val = d_value.extractBitRange(size-1, 0);
+    Integer res = Integer(-1) * sign_bit.multiplyByPow2(size - 1) + val;
+    return res;
+  }
+
+  /**
+   Returns k is the integer is equal to 2^{k-1} and zero
+   otherwise
+   @return k if the integer is equal to 2^{k-1} and zero otherwise
+   */
+  unsigned isPow2() {
+    return d_value.isPow2();
+  }
+
+private:
+  /*
+    Class invariants:
+    * no overflows: 2^d_size < d_value
+    * no negative numbers: d_value >= 0
+   */
+  unsigned d_size;
+  Integer d_value;
+
+};/* class BitVector */
+
+
+
+inline BitVector::BitVector(const std::string& num, unsigned base) {
+  CheckArgument(base == 2 || base == 16, base);
+
+  if( base == 2 ) {
+    d_size = num.size();
+  } else {
+    d_size = num.size() * 4;
+  }
+
+  d_value = Integer(num, base);
+}/* BitVector::BitVector() */
+
+
+/**
+ * Hash function for the BitVector constants.
+ */
+struct CVC4_PUBLIC BitVectorHashFunction {
+  inline size_t operator()(const BitVector& bv) const {
+    return bv.hash();
+  }
+};/* struct BitVectorHashFunction */
+
+/**
+ * The structure representing the extraction operation for bit-vectors. The
+ * operation maps bit-vectors to bit-vector of size <code>high - low + 1</code>
+ * by taking the bits at indices <code>high ... low</code>
+ */
+struct CVC4_PUBLIC BitVectorExtract {
+  /** The high bit of the range for this extract */
+  unsigned high;
+  /** The low bit of the range for this extract */
+  unsigned low;
+
+  BitVectorExtract(unsigned high, unsigned low)
+  : high(high), low(low) {}
+
+  bool operator == (const BitVectorExtract& extract) const {
+    return high == extract.high && low == extract.low;
+  }
+};/* struct BitVectorExtract */
+
+/**
+ * Hash function for the BitVectorExtract objects.
+ */
+struct CVC4_PUBLIC BitVectorExtractHashFunction {
+  size_t operator()(const BitVectorExtract& extract) const {
+    size_t hash = extract.low;
+    hash ^= extract.high + 0x9e3779b9 + (hash << 6) + (hash >> 2);
+    return hash;
+  }
+};/* struct BitVectorExtractHashFunction */
+
+
+/**
+ * The structure representing the extraction of one Boolean bit.
+ */
+struct CVC4_PUBLIC BitVectorBitOf {
+  /** The index of the bit */
+  unsigned bitIndex;
+  BitVectorBitOf(unsigned i)
+    : bitIndex(i) {}
+
+  bool operator == (const BitVectorBitOf& other) const {
+    return bitIndex == other.bitIndex;
+  }
+};/* struct BitVectorBitOf */
+
+/**
+ * Hash function for the BitVectorBitOf objects.
+ */
+struct CVC4_PUBLIC BitVectorBitOfHashFunction {
+  size_t operator()(const BitVectorBitOf& b) const {
+    return b.bitIndex;
+  }
+};/* struct BitVectorBitOfHashFunction */
+
+
+
+struct CVC4_PUBLIC BitVectorSize {
+  unsigned size;
+  BitVectorSize(unsigned size)
+  : size(size) {}
+  operator unsigned () const { return size; }
+};/* struct BitVectorSize */
+
+struct CVC4_PUBLIC BitVectorRepeat {
+  unsigned repeatAmount;
+  BitVectorRepeat(unsigned repeatAmount)
+  : repeatAmount(repeatAmount) {}
+  operator unsigned () const { return repeatAmount; }
+};/* struct BitVectorRepeat */
+
+struct CVC4_PUBLIC BitVectorZeroExtend {
+  unsigned zeroExtendAmount;
+  BitVectorZeroExtend(unsigned zeroExtendAmount)
+  : zeroExtendAmount(zeroExtendAmount) {}
+  operator unsigned () const { return zeroExtendAmount; }
+};/* struct BitVectorZeroExtend */
+
+struct CVC4_PUBLIC BitVectorSignExtend {
+  unsigned signExtendAmount;
+  BitVectorSignExtend(unsigned signExtendAmount)
+  : signExtendAmount(signExtendAmount) {}
+  operator unsigned () const { return signExtendAmount; }
+};/* struct BitVectorSignExtend */
+
+struct CVC4_PUBLIC BitVectorRotateLeft {
+  unsigned rotateLeftAmount;
+  BitVectorRotateLeft(unsigned rotateLeftAmount)
+  : rotateLeftAmount(rotateLeftAmount) {}
+  operator unsigned () const { return rotateLeftAmount; }
+};/* struct BitVectorRotateLeft */
+
+struct CVC4_PUBLIC BitVectorRotateRight {
+  unsigned rotateRightAmount;
+  BitVectorRotateRight(unsigned rotateRightAmount)
+  : rotateRightAmount(rotateRightAmount) {}
+  operator unsigned () const { return rotateRightAmount; }
+};/* struct BitVectorRotateRight */
+
+struct CVC4_PUBLIC IntToBitVector {
+  unsigned size;
+  IntToBitVector(unsigned size)
+  : size(size) {}
+  operator unsigned () const { return size; }
+};/* struct IntToBitVector */
+
+template <typename T>
+struct CVC4_PUBLIC UnsignedHashFunction {
+  inline size_t operator()(const T& x) const {
+    return (size_t)x;
+  }
+};/* struct UnsignedHashFunction */
+
+inline std::ostream& operator <<(std::ostream& os, const BitVector& bv) CVC4_PUBLIC;
+inline std::ostream& operator <<(std::ostream& os, const BitVector& bv) {
+  return os << bv.toString();
+}
+
+inline std::ostream& operator <<(std::ostream& os, const BitVectorExtract& bv) CVC4_PUBLIC;
+inline std::ostream& operator <<(std::ostream& os, const BitVectorExtract& bv) {
+  return os << "[" << bv.high << ":" << bv.low << "]";
+}
+
+inline std::ostream& operator <<(std::ostream& os, const BitVectorBitOf& bv) CVC4_PUBLIC;
+inline std::ostream& operator <<(std::ostream& os, const BitVectorBitOf& bv) {
+  return os << "[" << bv.bitIndex << "]";
+}
+
+inline std::ostream& operator <<(std::ostream& os, const IntToBitVector& bv) CVC4_PUBLIC;
+inline std::ostream& operator <<(std::ostream& os, const IntToBitVector& bv) {
+  return os << "[" << bv.size << "]";
+}
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__BITVECTOR_H */
diff --git a/src/util/bitvector.i b/src/util/bitvector.i
new file mode 100644
index 0000000..8eb6158
--- /dev/null
+++ b/src/util/bitvector.i
@@ -0,0 +1,43 @@
+%{
+#include "util/bitvector.h"
+%}
+
+%ignore CVC4::BitVector::BitVector(unsigned, unsigned);
+
+%rename(assign) CVC4::BitVector::operator=(const BitVector&);
+%rename(equals) CVC4::BitVector::operator==(const BitVector&) const;
+%ignore CVC4::BitVector::operator!=(const BitVector&) const;
+%rename(plus) CVC4::BitVector::operator+(const BitVector&) const;
+%rename(minus) CVC4::BitVector::operator-(const BitVector&) const;
+%rename(minus) CVC4::BitVector::operator-() const;
+%rename(times) CVC4::BitVector::operator*(const BitVector&) const;
+%rename(bitXor) CVC4::BitVector::operator^(const BitVector&) const;
+%rename(bitOr) CVC4::BitVector::operator|(const BitVector&) const;
+%rename(bitAnd) CVC4::BitVector::operator&(const BitVector&) const;
+%rename(complement) CVC4::BitVector::operator~() const;
+%rename(less) CVC4::BitVector::operator<(const BitVector&) const;
+%rename(lessEqual) CVC4::BitVector::operator<=(const BitVector&) const;
+%rename(greater) CVC4::BitVector::operator>(const BitVector&) const;
+%rename(greaterEqual) CVC4::BitVector::operator>=(const BitVector&) const;
+
+%rename(equals) CVC4::BitVectorExtract::operator==(const BitVectorExtract&) const;
+%rename(equals) CVC4::BitVectorBitOf::operator==(const BitVectorBitOf&) const;
+
+%rename(toUnsigned) CVC4::BitVectorSize::operator unsigned() const;
+%rename(toUnsigned) CVC4::BitVectorRepeat::operator unsigned() const;
+%rename(toUnsigned) CVC4::BitVectorZeroExtend::operator unsigned() const;
+%rename(toUnsigned) CVC4::BitVectorSignExtend::operator unsigned() const;
+%rename(toUnsigned) CVC4::BitVectorRotateLeft::operator unsigned() const;
+%rename(toUnsigned) CVC4::BitVectorRotateRight::operator unsigned() const;
+%rename(toUnsigned) CVC4::IntToBitVector::operator unsigned() const;
+
+%rename(apply) CVC4::BitVectorHashFunction::operator()(const BitVector&) const;
+%rename(apply) CVC4::BitVectorExtractHashFunction::operator()(const BitVectorExtract&) const;
+%rename(apply) CVC4::BitVectorBitOfHashFunction::operator()(const BitVectorBitOf&) const;
+
+%ignore CVC4::operator<<(std::ostream&, const BitVector&);
+%ignore CVC4::operator<<(std::ostream&, const BitVectorExtract&);
+%ignore CVC4::operator<<(std::ostream&, const BitVectorBitOf&);
+%ignore CVC4::operator<<(std::ostream&, const IntToBitVector&);
+
+%include "util/bitvector.h"
diff --git a/src/util/bool.h b/src/util/bool.h
new file mode 100644
index 0000000..99db6a4
--- /dev/null
+++ b/src/util/bool.h
@@ -0,0 +1,32 @@
+/*********************                                                        */
+/*! \file bool.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A hash function for Boolean
+ **
+ ** A hash function for Boolean.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__BOOL_H
+#define __CVC4__BOOL_H
+
+namespace CVC4 {
+
+struct BoolHashFunction {
+  inline size_t operator()(bool b) const {
+    return b;
+  }
+};/* struct BoolHashFunction */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__BOOL_H */
diff --git a/src/util/bool.i b/src/util/bool.i
new file mode 100644
index 0000000..47a0c42
--- /dev/null
+++ b/src/util/bool.i
@@ -0,0 +1,7 @@
+%{
+#include "util/bool.h"
+%}
+
+%rename(apply) CVC4::BoolHashFunction::operator()(bool) const;
+
+%include "util/bool.h"
diff --git a/src/util/cache.h b/src/util/cache.h
new file mode 100644
index 0000000..8dd3cd0
--- /dev/null
+++ b/src/util/cache.h
@@ -0,0 +1,127 @@
+/*********************                                                        */
+/*! \file cache.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A generic Cache<> template class for use by functions that
+ ** walk the Node DAG and want to cache results for sub-DAGs
+ **
+ ** A generic Cache<> template class for use by functions that walk
+ ** the Node DAG and want to cache results for sub-DAGs.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__CACHE_H
+#define __CVC4__CACHE_H
+
+#include <utility>
+#include <functional>
+
+namespace CVC4 {
+
+/**
+ * A generic implementation of a cache for functions that walk the
+ * Node DAG performing a computation and want to cache some or all
+ * computations.
+ */
+template <class T, class U, class Hasher = std::hash<T> >
+class Cache {
+  typedef std::hash_map<T, U, Hasher> Map;
+  Map d_map;
+  std::vector<T> d_current;
+  typename Map::iterator d_result;
+
+  // disallow copy/assignment
+  Cache(const Cache&) CVC4_UNDEFINED;
+  Cache& operator=(const Cache&) CVC4_UNDEFINED;
+
+public:
+
+  typedef T key_type;
+  typedef U value_type;
+  typedef Hasher hash_function;
+
+  /**
+   * Makes it easy and error-free to use a Cache<> in a function.
+   */
+  class Scope {
+    Cache& d_cache;
+    bool d_fired;
+
+  public:
+    Scope(Cache<T, U, Hasher>& cache, const T& elt) throw(AssertionException) :
+      d_cache(cache),
+      d_fired(d_cache.computing(elt)) {
+    }
+
+    ~Scope() {
+      if(!d_fired) {
+        d_cache();// pop stack
+      }
+    }
+
+    operator bool() throw() {
+      return d_fired;
+    }
+
+    const U& get() throw(AssertionException) {
+      Assert(d_fired, "nothing in cache");
+      return d_cache.get();
+    }
+
+    U& operator()(U& computed) throw(AssertionException) {
+      Assert(!d_fired, "can only cache a computation once");
+      d_fired = true;
+      return d_cache(computed);
+    }
+    const U& operator()(const U& computed) throw(AssertionException) {
+      Assert(!d_fired, "can only cache a computation once");
+      d_fired = true;
+      return d_cache(computed);
+    }
+  };/* class Cache::Scope */
+
+  Cache() {}
+
+  bool computing(const T& elt) {
+    d_result = d_map.find(elt);
+    bool found = (d_result != d_map.end());
+    if(!found) {
+      d_current.push_back(elt);
+    }
+    return found;
+  }
+
+  const U& get() {
+    Assert(d_result != d_map.end());
+    return (*d_result).second;
+  }
+
+  // cache nothing (just pop)
+  void operator()() {
+    d_current.pop_back();
+  }
+
+  U& operator()(U& result) {
+    d_map.insert(d_current.back(), result);
+    d_current.pop_back();
+    return result;
+  }
+  const U& operator()(const U& result) {
+    d_map.insert(std::make_pair(d_current.back(), result));
+    d_current.pop_back();
+    return result;
+  }
+};/* class Cache<> */
+
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__CACHE_H */
diff --git a/src/util/cardinality.cpp b/src/util/cardinality.cpp
new file mode 100644
index 0000000..17c7907
--- /dev/null
+++ b/src/util/cardinality.cpp
@@ -0,0 +1,261 @@
+/*********************                                                        */
+/*! \file cardinality.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Representation of cardinality
+ **
+ ** Implementation of a simple class to represent a cardinality.
+ **/
+
+#include "util/cardinality.h"
+
+#include "base/cvc4_assert.h"
+
+namespace CVC4 {
+
+const Integer Cardinality::s_unknownCard(0);
+const Integer Cardinality::s_intCard(-1);
+const Integer Cardinality::s_realCard(-2);
+const Integer Cardinality::s_largeFiniteCard(
+    Integer("18446744073709551617"));  // 2^64 + 1
+
+const Cardinality Cardinality::INTEGERS(CardinalityBeth(0));
+const Cardinality Cardinality::REALS(CardinalityBeth(1));
+const Cardinality Cardinality::UNKNOWN_CARD((CardinalityUnknown()));
+
+CardinalityBeth::CardinalityBeth(const Integer& beth) : d_index(beth) {
+  PrettyCheckArgument(beth >= 0, beth,
+                      "Beth index must be a nonnegative integer, not %s.",
+                      beth.toString().c_str());
+}
+
+Cardinality::Cardinality(long card) : d_card(card) {
+  PrettyCheckArgument(card >= 0, card,
+                      "Cardinality must be a nonnegative integer, not %ld.",
+                      card);
+  d_card += 1;
+}
+
+Cardinality::Cardinality(const Integer& card) : d_card(card) {
+  PrettyCheckArgument(card >= 0, card,
+                      "Cardinality must be a nonnegative integer, not %s.",
+                      card.toString().c_str());
+  d_card += 1;
+}
+
+Integer Cardinality::getFiniteCardinality() const {
+  PrettyCheckArgument(isFinite(), *this, "This cardinality is not finite.");
+  PrettyCheckArgument(
+      !isLargeFinite(), *this,
+      "This cardinality is finite, but too large to represent.");
+  return d_card - 1;
+}
+
+Integer Cardinality::getBethNumber() const {
+  PrettyCheckArgument(!isFinite() && !isUnknown(), *this,
+                      "This cardinality is not infinite (or is unknown).");
+  return -d_card - 1;
+}
+
+Cardinality& Cardinality::operator+=(const Cardinality& c) {
+  if (isUnknown()) {
+    return *this;
+  } else if (c.isUnknown()) {
+    d_card = s_unknownCard;
+    return *this;
+  }
+
+  if (c.isFinite() && isLargeFinite()) {
+    return *this;
+  } else if (isFinite() && c.isLargeFinite()) {
+    d_card = s_largeFiniteCard;
+    return *this;
+  }
+
+  if (isFinite() && c.isFinite()) {
+    d_card += c.d_card - 1;
+    return *this;
+  }
+  if (compare(c) == LESS) {
+    return *this = c;
+  } else {
+    return *this;
+  }
+
+  Unreachable();
+}
+
+/** Assigning multiplication of this cardinality with another. */
+Cardinality& Cardinality::operator*=(const Cardinality& c) {
+  if (isUnknown()) {
+    return *this;
+  } else if (c.isUnknown()) {
+    d_card = s_unknownCard;
+    return *this;
+  }
+
+  if (c.isFinite() && isLargeFinite()) {
+    return *this;
+  } else if (isFinite() && c.isLargeFinite()) {
+    d_card = s_largeFiniteCard;
+    return *this;
+  }
+
+  if (compare(0) == EQUAL || c.compare(0) == EQUAL) {
+    return *this = 0;
+  } else if (!isFinite() || !c.isFinite()) {
+    if (compare(c) == LESS) {
+      return *this = c;
+    } else {
+      return *this;
+    }
+  } else {
+    d_card -= 1;
+    d_card *= c.d_card - 1;
+    d_card += 1;
+    return *this;
+  }
+
+  Unreachable();
+}
+
+/** Assigning exponentiation of this cardinality with another. */
+Cardinality& Cardinality::operator^=(const Cardinality& c) {
+  if (isUnknown()) {
+    return *this;
+  } else if (c.isUnknown()) {
+    d_card = s_unknownCard;
+    return *this;
+  }
+
+  if (c.isFinite() && isLargeFinite()) {
+    return *this;
+  } else if (isFinite() && c.isLargeFinite()) {
+    d_card = s_largeFiniteCard;
+    return *this;
+  }
+
+  if (c.compare(0) == EQUAL) {
+    // (anything) ^ 0 == 1
+    d_card = 2;  // remember, +1 for finite cardinalities
+    return *this;
+  } else if (compare(0) == EQUAL) {
+    // 0 ^ (>= 1) == 0
+    return *this;
+  } else if (compare(1) == EQUAL) {
+    // 1 ^ (>= 1) == 1
+    return *this;
+  } else if (c.compare(1) == EQUAL) {
+    // (anything) ^ 1 == (that thing)
+    return *this;
+  } else if (isFinite() && c.isFinite()) {
+    // finite ^ finite == finite
+    try {
+      // Note: can throw an assertion if c is too big for
+      // exponentiation
+      if (d_card - 1 >= 2 && c.d_card - 1 >= 64) {
+        // don't bother, it's too large anyways
+        d_card = s_largeFiniteCard;
+      } else {
+        d_card = (d_card - 1).pow(c.d_card.getUnsignedLong() - 1) + 1;
+      }
+    } catch (IllegalArgumentException&) {
+      d_card = s_largeFiniteCard;
+    }
+    return *this;
+  } else if (!isFinite() && c.isFinite()) {
+    // inf ^ finite == inf
+    return *this;
+  } else {
+    Assert(compare(2) != LESS && !c.isFinite(),
+           "fall-through case not as expected:\n%s\n%s",
+           this->toString().c_str(), c.toString().c_str());
+    // (>= 2) ^ beth_k == beth_(k+1)
+    // unless the base is already > the exponent
+    if (compare(c) == GREATER) {
+      return *this;
+    }
+    d_card = c.d_card - 1;
+    return *this;
+  }
+
+  Unreachable();
+}
+
+Cardinality::CardinalityComparison Cardinality::compare(
+    const Cardinality& c) const {
+  if (isUnknown() || c.isUnknown()) {
+    return UNKNOWN;
+  } else if (isLargeFinite()) {
+    if (c.isLargeFinite()) {
+      return UNKNOWN;
+    } else if (c.isFinite()) {
+      return GREATER;
+    } else {
+      Assert(c.isInfinite());
+      return LESS;
+    }
+  } else if (c.isLargeFinite()) {
+    if (isLargeFinite()) {
+      return UNKNOWN;
+    } else if (isFinite()) {
+      return LESS;
+    } else {
+      Assert(isInfinite());
+      return GREATER;
+    }
+  } else if (isInfinite()) {
+    if (c.isFinite()) {
+      return GREATER;
+    } else {
+      return d_card < c.d_card ? GREATER : (d_card == c.d_card ? EQUAL : LESS);
+    }
+  } else if (c.isInfinite()) {
+    Assert(isFinite());
+    return LESS;
+  } else {
+    Assert(isFinite() && !isLargeFinite());
+    Assert(c.isFinite() && !c.isLargeFinite());
+    return d_card < c.d_card ? LESS : (d_card == c.d_card ? EQUAL : GREATER);
+  }
+
+  Unreachable();
+}
+
+bool Cardinality::knownLessThanOrEqual(const Cardinality& c) const {
+  CardinalityComparison cmp = this->compare(c);
+  return cmp == LESS || cmp == EQUAL;
+}
+
+std::string Cardinality::toString() const {
+  std::stringstream ss;
+  ss << *this;
+  return ss.str();
+}
+
+std::ostream& operator<<(std::ostream& out, CardinalityBeth b) {
+  out << "beth[" << b.getNumber() << ']';
+
+  return out;
+}
+
+std::ostream& operator<<(std::ostream& out, const Cardinality& c) {
+  if (c.isUnknown()) {
+    out << "Cardinality::UNKNOWN";
+  } else if (c.isFinite()) {
+    out << c.getFiniteCardinality();
+  } else {
+    out << CardinalityBeth(c.getBethNumber());
+  }
+
+  return out;
+}
+
+} /* CVC4 namespace */
diff --git a/src/util/cardinality.h b/src/util/cardinality.h
new file mode 100644
index 0000000..b16f843
--- /dev/null
+++ b/src/util/cardinality.h
@@ -0,0 +1,229 @@
+/*********************                                                        */
+/*! \file cardinality.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Representation of cardinality
+ **
+ ** Simple class to represent a cardinality; used by the CVC4 type system
+ ** give the cardinality of sorts.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__CARDINALITY_H
+#define __CVC4__CARDINALITY_H
+
+#include <iostream>
+#include <utility>
+
+#include "base/exception.h"
+#include "util/integer.h"
+
+namespace CVC4 {
+
+/**
+ * Representation for a Beth number, used only to construct
+ * Cardinality objects.
+ */
+class CVC4_PUBLIC CardinalityBeth {
+  Integer d_index;
+
+ public:
+  CardinalityBeth(const Integer& beth);
+
+  const Integer& getNumber() const { return d_index; }
+
+}; /* class CardinalityBeth */
+
+/**
+ * Representation for an unknown cardinality.
+ */
+class CVC4_PUBLIC CardinalityUnknown {
+ public:
+  CardinalityUnknown() {}
+  ~CardinalityUnknown() {}
+}; /* class CardinalityUnknown */
+
+/**
+ * A simple representation of a cardinality.  We store an
+ * arbitrary-precision integer for finite cardinalities, and we
+ * distinguish infinite cardinalities represented as Beth numbers.
+ */
+class CVC4_PUBLIC Cardinality {
+  /** Cardinality of the integers */
+  static const Integer s_intCard;
+
+  /** Cardinality of the reals */
+  static const Integer s_realCard;
+
+  /** A representation for unknown cardinality */
+  static const Integer s_unknownCard;
+
+  /** A representation for large, finite cardinality */
+  static const Integer s_largeFiniteCard;
+
+  /**
+   * In the case of finite cardinality, this is > 0, and is equal to
+   * the cardinality+1.  If infinite, it is < 0, and is Beth[|card|-1].
+   * That is, "-1" means Beth 0 == |Z|, "-2" means Beth 1 == |R|, etc.
+   * If this field is 0, the cardinality is unknown.
+   *
+   * We impose a ceiling on finite cardinalities of 2^64.  If this field
+   * is >= 2^64 + 1, we consider it at "ceiling" cardinality, and
+   * comparisons between all such cardinalities result in "unknown."
+   */
+  Integer d_card;
+
+ public:
+  /** The cardinality of the set of integers. */
+  static const Cardinality INTEGERS;
+
+  /** The cardinality of the set of real numbers. */
+  static const Cardinality REALS;
+
+  /** The unknown cardinality */
+  static const Cardinality UNKNOWN_CARD;
+
+  /** Used as a result code for Cardinality::compare(). */
+  enum CVC4_PUBLIC CardinalityComparison {
+    LESS,
+    EQUAL,
+    GREATER,
+    UNKNOWN
+  }; /* enum CardinalityComparison */
+
+  /**
+   * Construct a finite cardinality equal to the integer argument.
+   * The argument must be nonnegative.  If we change this to an
+   * "unsigned" argument to enforce the restriction, we mask some
+   * errors that automatically convert, like "Cardinality(-1)".
+   */
+  Cardinality(long card);
+
+  /**
+   * Construct a finite cardinality equal to the integer argument.
+   * The argument must be nonnegative.
+   */
+  Cardinality(const Integer& card);
+
+  /**
+   * Construct an infinite cardinality equal to the given Beth number.
+   */
+  Cardinality(CardinalityBeth beth) : d_card(-beth.getNumber() - 1) {}
+
+  /**
+   * Construct an unknown cardinality.
+   */
+  Cardinality(CardinalityUnknown) : d_card(0) {}
+
+  /**
+   * Returns true iff this cardinality is unknown.  "Unknown" in this
+   * sense means that the cardinality is completely unknown; it might
+   * be finite, or infinite---anything.  Large, finite cardinalities
+   * at the "ceiling" return "false" for isUnknown() and true for
+   * isFinite() and isLargeFinite().
+   */
+  bool isUnknown() const { return d_card == 0; }
+
+  /** Returns true iff this cardinality is finite. */
+  bool isFinite() const { return d_card > 0; }
+  /** Returns true iff this cardinality is one */
+  bool isOne() const { return d_card == 1; }
+
+  /**
+   * Returns true iff this cardinality is finite and large (i.e.,
+   * at the ceiling of representable finite cardinalities).
+   */
+  bool isLargeFinite() const { return d_card >= s_largeFiniteCard; }
+
+  /** Returns true iff this cardinality is infinite. */
+  bool isInfinite() const { return d_card < 0; }
+
+  /**
+   * Returns true iff this cardinality is finite or countably
+   * infinite.
+   */
+  bool isCountable() const { return isFinite() || d_card == s_intCard; }
+
+  /**
+   * In the case that this cardinality is finite, return its
+   * cardinality.  (If this cardinality is infinite, this function
+   * throws an IllegalArgumentException.)
+   */
+  Integer getFiniteCardinality() const;
+
+  /**
+   * In the case that this cardinality is infinite, return its Beth
+   * number.  (If this cardinality is finite, this function throws an
+   * IllegalArgumentException.)
+   */
+  Integer getBethNumber() const;
+
+  /** Assigning addition of this cardinality with another. */
+  Cardinality& operator+=(const Cardinality& c);
+
+  /** Assigning multiplication of this cardinality with another. */
+  Cardinality& operator*=(const Cardinality& c);
+
+  /** Assigning exponentiation of this cardinality with another. */
+  Cardinality& operator^=(const Cardinality& c);
+
+  /** Add two cardinalities. */
+  Cardinality operator+(const Cardinality& c) const {
+    Cardinality card(*this);
+    card += c;
+    return card;
+  }
+
+  /** Multiply two cardinalities. */
+  Cardinality operator*(const Cardinality& c) const {
+    Cardinality card(*this);
+    card *= c;
+    return card;
+  }
+
+  /**
+   * Exponentiation of two cardinalities.
+   */
+  Cardinality operator^(const Cardinality& c) const {
+    Cardinality card(*this);
+    card ^= c;
+    return card;
+  }
+
+  /**
+   * Compare two cardinalities.  This can return UNKNOWN if two
+   * finite cardinalities are at the ceiling (and thus not precisely
+   * represented), or if one or the other is the special "unknown"
+   * cardinality.
+   */
+  Cardinality::CardinalityComparison compare(const Cardinality& c) const;
+
+  /**
+   * Return a string representation of this cardinality.
+   */
+  std::string toString() const;
+
+  /**
+   * Compare two cardinalities and if it is known that the current
+   * cardinality is smaller or equal to c, it returns true.
+   */
+  bool knownLessThanOrEqual(const Cardinality& c) const;
+}; /* class Cardinality */
+
+/** Print an element of the InfiniteCardinality enumeration. */
+std::ostream& operator<<(std::ostream& out, CardinalityBeth b) CVC4_PUBLIC;
+
+/** Print a cardinality in a human-readable fashion. */
+std::ostream& operator<<(std::ostream& out, const Cardinality& c) CVC4_PUBLIC;
+
+} /* CVC4 namespace */
+
+#endif /* __CVC4__CARDINALITY_H */
diff --git a/src/util/cardinality.i b/src/util/cardinality.i
new file mode 100644
index 0000000..c88037c
--- /dev/null
+++ b/src/util/cardinality.i
@@ -0,0 +1,23 @@
+%{
+#include "util/cardinality.h"
+%}
+
+%feature("valuewrapper") CVC4::CardinalityBeth;
+
+%rename(plusAssign) CVC4::Cardinality::operator+=(const Cardinality&);
+%rename(timesAssign) CVC4::Cardinality::operator*=(const Cardinality&);
+%rename(powerAssign) CVC4::Cardinality::operator^=(const Cardinality&);
+%rename(plus) CVC4::Cardinality::operator+(const Cardinality&) const;
+%rename(times) CVC4::Cardinality::operator*(const Cardinality&) const;
+%rename(power) CVC4::Cardinality::operator^(const Cardinality&) const;
+%rename(equals) CVC4::Cardinality::operator==(const Cardinality&) const;
+%ignore CVC4::Cardinality::operator!=(const Cardinality&) const;
+%rename(less) CVC4::Cardinality::operator<(const Cardinality&) const;
+%rename(lessEqual) CVC4::Cardinality::operator<=(const Cardinality&) const;
+%rename(greater) CVC4::Cardinality::operator>(const Cardinality&) const;
+%rename(greaterEqual) CVC4::Cardinality::operator>=(const Cardinality&) const;
+
+%ignore CVC4::operator<<(std::ostream&, const Cardinality&);
+%ignore CVC4::operator<<(std::ostream&, CardinalityBeth);
+
+%include "util/cardinality.h"
diff --git a/src/util/channel.h b/src/util/channel.h
new file mode 100644
index 0000000..39aed42
--- /dev/null
+++ b/src/util/channel.h
@@ -0,0 +1,119 @@
+/*********************                                                        */
+/*! \file channel.h
+ ** \verbatim
+ ** Original author: Morgan Deters
+ ** Major contributors: none
+ ** Minor contributors (to current version): none
+ ** This file is part of the CVC4 project but is excluded from the
+ ** standard CVC4 licensing because it is a derivative work of
+ ** circular_buffer.hpp in the BOOST 1.46.1 distribution.
+ ** Thus this file is covered by the Boost Software License, version 1.0.
+ ** See below.
+ **
+ ** The combined work is:
+ **   Copyright (c) 2009-2014  New York University and The University of Iowa
+ **   Copyright (c) 2003-2008  Jan Gaspar
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__CHANNEL_H
+#define __CVC4__CHANNEL_H
+
+#include <boost/circular_buffer.hpp>
+#include <boost/thread/mutex.hpp>
+#include <boost/thread/condition.hpp>
+#include <boost/thread/thread.hpp>
+#include <boost/call_traits.hpp>
+#include <boost/progress.hpp>
+#include <boost/bind.hpp>
+
+namespace CVC4 {
+
+template <typename T>
+class CVC4_PUBLIC SharedChannel {
+private:
+  int d_maxsize;                // just call it size?
+public:
+  SharedChannel() {}
+  SharedChannel(int maxsize) : d_maxsize(maxsize) {}
+  virtual ~SharedChannel() {}
+
+  /* Tries to add element and returns true if successful */
+  virtual bool push(const T&) = 0;
+
+  /* Removes an element from the channel */
+  virtual T pop() = 0;
+
+  /* */
+  virtual bool empty() = 0;
+
+  /* */
+  virtual bool full() = 0;
+};/* class SharedChannel<T> */
+
+/*
+This code is from
+
+http://live.boost.org/doc/libs/1_46_1/libs/circular_buffer/doc/circular_buffer.html#boundedbuffer
+
+and is covered by the Boost Software License, version 1.0.
+*/
+template <typename T>
+class CVC4_PUBLIC SynchronizedSharedChannel : public SharedChannel<T> {
+public:
+  typedef boost::circular_buffer<T> container_type;
+  typedef typename container_type::size_type size_type;
+  typedef typename container_type::value_type value_type;
+  typedef typename boost::call_traits<value_type>::param_type param_type;
+
+  explicit SynchronizedSharedChannel(size_type capacity) : m_unread(0), m_container(capacity) {}
+
+  bool push(param_type item){
+  // param_type represents the "best" way to pass a parameter of type value_type to a method
+
+    boost::mutex::scoped_lock lock(m_mutex);
+    m_not_full.wait(lock, boost::bind(&SynchronizedSharedChannel<value_type>::is_not_full, this));
+    m_container.push_front(item);
+    ++m_unread;
+    lock.unlock();
+    m_not_empty.notify_one();
+    return true;
+  }//function definitions need to be moved to cpp
+
+  value_type pop(){
+    value_type ret;
+    boost::mutex::scoped_lock lock(m_mutex);
+    m_not_empty.wait(lock, boost::bind(&SynchronizedSharedChannel<value_type>::is_not_empty, this));
+    ret = m_container[--m_unread];
+    lock.unlock();
+    m_not_full.notify_one();
+    return ret;
+  }
+
+
+  bool empty() { return not is_not_empty(); }
+  bool full() { return not is_not_full(); }
+
+private:
+  SynchronizedSharedChannel(const SynchronizedSharedChannel&);              // Disabled copy constructor
+  SynchronizedSharedChannel& operator = (const SynchronizedSharedChannel&); // Disabled assign operator
+
+  bool is_not_empty() const { return m_unread > 0; }
+  bool is_not_full() const { return m_unread < m_container.capacity(); }
+
+  size_type m_unread;
+  container_type m_container;
+  boost::mutex m_mutex;
+  boost::condition m_not_empty;
+  boost::condition m_not_full;
+};/* class SynchronizedSharedChannel<T> */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__CHANNEL_H */
diff --git a/src/util/debug.h b/src/util/debug.h
new file mode 100644
index 0000000..665fa99
--- /dev/null
+++ b/src/util/debug.h
@@ -0,0 +1,37 @@
+/*********************                                                        */
+/*! \file debug.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Debugging things.
+ **
+ ** Debugging things.
+ **
+ ** These are low-level assertions!  Generally you should use
+ ** CVC4::Assert() instead (they throw an exception!).  See
+ ** util/Assert.h.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__DEBUG_H
+#define __CVC4__DEBUG_H
+
+#include <cassert>
+
+#ifdef CVC4_ASSERTIONS
+// the __builtin_expect() helps us if assert is built-in or a macro
+#  define cvc4assert(x) assert(__builtin_expect( ( x ), true ))
+#else
+// TODO: use a compiler annotation when assertions are off ?
+// (to improve optimization)
+#  define cvc4assert(x) /*__builtin_expect( ( x ), true )*/
+#endif /* CVC4_ASSERTIONS */
+
+#endif /* __CVC4__DEBUG_H */
diff --git a/src/util/dense_map.h b/src/util/dense_map.h
new file mode 100644
index 0000000..7fa3832
--- /dev/null
+++ b/src/util/dense_map.h
@@ -0,0 +1,338 @@
+/*********************                                                        */
+/*! \file dense_map.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This is an abstraction of a Map from unsigned integers to elements of type T.
+ **
+ ** This is an abstraction of a Map from an unsigned integer to elements of type T.
+ ** This class is designed to provide constant time insertion, deletion, element_of,
+ ** and fast iteration. This is done by storing backing vectors of size greater than
+ ** the maximum key.  This datastructure is appropriate for heavy use datastructures
+ ** where the Keys are a dense set of integers.
+ **
+ ** T must support T(), and operator=().
+ **
+ ** The derived utility classes DenseSet and DenseMultiset are also defined.
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <boost/integer_traits.hpp>
+#include <vector>
+
+#include "base/cvc4_assert.h"
+#include "util/index.h"
+
+
+namespace CVC4 {
+
+template <class T>
+class DenseMap {
+public:
+  typedef Index Key;
+  typedef std::vector<Key> KeyList;
+  typedef KeyList::const_iterator const_iterator;
+
+private:
+  //List of the keys in the dense map.
+  KeyList d_list;
+
+  typedef Index Position;
+  typedef std::vector<Position> PositionMap;
+  static const Position POSITION_SENTINEL = boost::integer_traits<Position>::const_max;
+
+  //Each Key in the set is mapped to its position in d_list.
+  //Each Key not in the set is mapped to KEY_SENTINEL
+  PositionMap d_posVector;
+
+  typedef std::vector<T> ImageMap;
+  //d_image : Key |-> T
+  ImageMap d_image;
+
+public:
+
+  DenseMap() :  d_list(), d_posVector(), d_image() {}
+
+  /** Returns the number of elements in the set. */
+  size_t size() const {
+    return d_list.size();
+  }
+
+  /** Returns true if the map is empty(). */
+  bool empty() const {
+    return d_list.empty();
+  }
+
+  /**
+   * Similar to a std::vector::clear().
+   *
+   * Invalidates iterators.
+   */
+  void clear() {
+    d_list.clear();
+    d_posVector.clear();
+    d_image.clear();
+    Assert(empty());
+  }
+
+  /**
+   * Similar to a clear(), but the datastructures are not reset in size.
+   * Invalidates iterators.
+   */
+  void purge() {
+    while(!empty()){
+      pop_back();
+    }
+    Assert(empty());
+  }
+
+  /** Returns true if k is a key of this datastructure. */
+  bool isKey(Key x) const{
+    if( x >= allocated()){
+      return false;
+    }else{
+      Assert(x <  allocated());
+      return d_posVector[x] != +POSITION_SENTINEL;
+    }
+  }
+
+  /**
+   * Maps the key to value in the map.
+   * Invalidates iterators.
+   */
+  void set(Key key, const T& value){
+    if( key >= allocated()){
+      increaseSize(key);
+    }
+
+    if(!isKey(key)){
+      d_posVector[key] = size();
+      d_list.push_back(key);
+    }
+    d_image[key] = value;
+  }
+
+  /** Returns a mutable reference to the element mapped by key. */
+  T& get(Key key){
+    Assert(isKey(key));
+    return d_image[key];
+  }
+
+  /** Returns a const reference to the element mapped by key.*/
+  const T& operator[](Key key) const {
+    Assert(isKey(key));
+    return d_image[key];
+  }
+
+  /** Returns an iterator over the keys of the map. */
+  const_iterator begin() const{ return d_list.begin(); }
+  const_iterator end() const{ return d_list.end(); }
+
+  const KeyList& getKeys() const{
+    return d_list;
+  }
+
+  /**
+   * Removes the mapping associated with key.
+   * This changes the order of the keys.
+   *
+   * Invalidates iterators.
+   */
+  void remove(Key x){
+    Assert(isKey(x));
+    swapToBack(x);
+    Assert(d_list.back() == x);
+    pop_back();
+  }
+
+  /** Returns the key at the back of a non-empty list.*/
+  Key back() const {
+    return d_list.back();
+  }
+
+  /** Removes the element associated with the last Key from the map. */
+  void pop_back() {
+    Assert(!empty());
+    Key atBack = back();
+    d_posVector[atBack] = +POSITION_SENTINEL;
+    d_image[atBack] = T();
+    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 {
+    Assert(d_posVector.size() == d_image.size());
+    return d_posVector.size();
+  }
+
+  void increaseSize(Key max){
+    Assert(max >= allocated());
+    d_posVector.resize(max+1, +POSITION_SENTINEL);
+    d_image.resize(max+1);
+  }
+
+  /** Swaps a member x to the back of d_list. */
+  void swapToBack(Key x){
+    Assert(isKey(x));
+
+    Position currentPos = d_posVector[x];
+    Key atBack = back();
+
+    d_list[currentPos] = atBack;
+    d_posVector[atBack] = currentPos;
+
+    Position last = size() - 1;
+
+    d_list[last] = x;
+    d_posVector[x] = last;
+  }
+}; /* class DenseMap<T> */
+
+/**
+ * This provides an abstraction for a set of unsigned integers with similar capabilities
+ * as DenseMap. This is implemented as a light wrapper for DenseMap<bool> with an
+ * interface designed for use as a set instead of a map.
+ */
+class DenseSet {
+private:
+  typedef DenseMap<bool> BackingMap;
+  BackingMap d_map;
+public:
+  typedef BackingMap::const_iterator const_iterator;
+  typedef BackingMap::Key Element;
+
+  size_t size() const { return d_map.size(); }
+  bool empty() const { return d_map.empty(); }
+
+  /** See DenseMap's documentation. */
+  void purge() { d_map.purge(); }
+  void clear() { d_map.clear(); }
+
+  bool isMember(Element x) const{ return d_map.isKey(x); }
+
+  /**
+   * Adds an element that is not a member of the set to the set.
+   */
+  void add(Element x){
+    Assert(!isMember(x));
+    d_map.set(x, true);
+  }
+
+  /** Adds an element to the set even if it is already an element of the set. */
+  void softAdd(Element x){ d_map.set(x, true); }
+
+  /** Removes an element from the set. */
+  void remove(Element x){ d_map.remove(x); }
+
+  const_iterator begin() const{ return d_map.begin(); }
+  const_iterator end() const{ return d_map.end(); }
+
+  Element back() { return d_map.back(); }
+  void pop_back() { d_map.pop_back(); }
+}; /* class DenseSet */
+
+/**
+ * This provides an abstraction for a multiset of unsigned integers with similar
+ * capabilities as DenseMap.
+ * This is implemented as a light wrapper for DenseMap<bool> with an
+ * interface designed for use as a set instead of a map.
+ */
+class DenseMultiset {
+public:
+  typedef uint32_t CountType;
+
+private:
+  typedef DenseMap<CountType> BackingMap;
+  BackingMap d_map;
+
+public:
+  typedef BackingMap::const_iterator const_iterator;
+  typedef BackingMap::Key Element;
+
+  DenseMultiset() :  d_map() {}
+
+  size_t size() const { return d_map.size(); }
+  bool empty() const { return d_map.empty(); }
+
+  void purge() { d_map.purge(); }
+  void clear() { d_map.clear(); }
+
+  bool isMember(Element x) const{ return d_map.isKey(x); }
+
+  void add(Element x, CountType c = 1u){
+    Assert(c > 0);
+    if(d_map.isKey(x)){
+      d_map.set(x, d_map.get(x)+c);
+    }else{
+      d_map.set(x,c);
+    }
+  }
+
+  void setCount(Element x, CountType c){
+    d_map.set(x, c);
+  }
+
+  void removeAll(Element x){ return d_map.remove(x); }
+
+  void removeOne(Element x){
+    CountType c = count(x);
+    switch(c){
+    case 0: break; // do nothing
+    case 1: removeAll(x); break; // remove
+    default: d_map.set(x, c-1); break; // decrease
+    }
+  }
+
+  void removeOneOfEverything(){
+    BackingMap::KeyList keys(d_map.begin(), d_map.end());
+    for(BackingMap::const_iterator i=keys.begin(), i_end = keys.end(); i != i_end; ++i){
+      removeOne(*i);
+    }
+  }
+
+  CountType count(Element x) const {
+    if(d_map.isKey(x)){
+      return d_map[x];
+    }else {
+      return 0;
+    }
+  }
+
+  const_iterator begin() const{ return d_map.begin(); }
+  const_iterator end() const{ return d_map.end(); }
+  Element back() { return d_map.back(); }
+  void pop_back() { d_map.pop_back(); }
+}; /* class DenseMultiset */
+
+}/* CVC4 namespace */
diff --git a/src/util/divisible.cpp b/src/util/divisible.cpp
new file mode 100644
index 0000000..4e0d981
--- /dev/null
+++ b/src/util/divisible.cpp
@@ -0,0 +1,31 @@
+/*********************                                                        */
+/*! \file divisible.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "util/divisible.h"
+
+#include "base/cvc4_assert.h"
+#include "base/exception.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+Divisible::Divisible(const Integer& n) : k(n) {
+  PrettyCheckArgument(n > 0, n, "Divisible predicate must be constructed over positive N");
+}
+
+}/* CVC4 namespace */
diff --git a/src/util/divisible.h b/src/util/divisible.h
new file mode 100644
index 0000000..d5651ae
--- /dev/null
+++ b/src/util/divisible.h
@@ -0,0 +1,63 @@
+/*********************                                                        */
+/*! \file divisible.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__DIVISIBLE_H
+#define __CVC4__DIVISIBLE_H
+
+#include <iosfwd>
+
+#include "base/exception.h"
+#include "util/integer.h"
+
+namespace CVC4 {
+
+/**
+ * The structure representing the divisibility-by-k predicate.
+ */
+struct CVC4_PUBLIC Divisible {
+  const Integer k;
+
+  Divisible(const Integer& n);
+
+  bool operator==(const Divisible& d) const {
+    return k == d.k;
+  }
+
+  bool operator!=(const Divisible& d) const {
+    return !(*this == d);
+  }
+};/* struct Divisible */
+
+/**
+ * Hash function for the Divisible objects.
+ */
+struct CVC4_PUBLIC DivisibleHashFunction {
+  size_t operator()(const Divisible& d) const {
+    return d.k.hash();
+  }
+};/* struct DivisibleHashFunction */
+
+inline std::ostream& operator <<(std::ostream& os, const Divisible& d) CVC4_PUBLIC;
+inline std::ostream& operator <<(std::ostream& os, const Divisible& d) {
+  return os << "divisible-by-" << d.k;
+}
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__DIVISIBLE_H */
diff --git a/src/util/divisible.i b/src/util/divisible.i
new file mode 100644
index 0000000..7599360
--- /dev/null
+++ b/src/util/divisible.i
@@ -0,0 +1,10 @@
+%{
+#include "util/divisible.h"
+%}
+
+%rename(equals) CVC4::Divisible::operator==(const Divisible&) const;
+%ignore CVC4::Divisible::operator!=(const Divisible&) const;
+
+%ignore CVC4::operator<<(std::ostream&, const Divisible&);
+
+%include "util/divisible.h"
diff --git a/src/util/dynamic_array.h b/src/util/dynamic_array.h
new file mode 100644
index 0000000..2ec85a0
--- /dev/null
+++ b/src/util/dynamic_array.h
@@ -0,0 +1,150 @@
+/*********************                                                        */
+/*! \file dynamic_array.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__UTIL__DYNAMIC_ARRAY_H
+#define __CVC4__UTIL__DYNAMIC_ARRAY_H
+
+#include "base/cvc4_assert.h"
+
+namespace CVC4 {
+
+template <class T>
+class DynamicArray {
+protected:
+  T* d_arr;
+  unsigned d_size;
+  unsigned d_allocated;
+
+  bool d_callDestructor;
+
+  void grow() {
+    bool empty = (d_arr == NULL);
+    d_allocated = empty ? 15 : d_allocated * 2 + 1;
+    unsigned allocSize = sizeof(T) * d_allocated;
+    T* tmpList = (T*) (empty ? malloc(allocSize) :realloc(d_arr, allocSize));
+    if(tmpList == NULL) {
+      throw std::bad_alloc();
+    }
+    d_arr = tmpList;
+  }
+
+public:
+  DynamicArray(bool callDestructor = false) :
+    d_arr(NULL),
+    d_size(0),
+    d_allocated(0),
+    d_callDestructor(callDestructor) {
+  }
+
+  virtual ~DynamicArray() {
+    if(d_callDestructor) {
+      for(unsigned i = 0; i < d_size; ++i) {
+        d_arr[i].~T();
+      }
+    }
+    free(d_arr);
+  }
+
+
+  unsigned size() const{
+    return d_size;
+  }
+
+  bool empty() const{
+    return size() == 0;
+  }
+
+  void push_back(const T& data) {
+    if(d_size == d_allocated) {
+      grow();
+    }
+    Assert(d_size < d_allocated);
+
+    ::new((void*)(d_arr + d_size)) T(data);
+    ++d_size;
+  }
+
+  const T& operator[](unsigned i) const {
+    Assert(i < d_size, "index out of bounds in DynamicArray::operator[]");
+    return d_arr[i];
+  }
+
+  T& operator[](unsigned i) {
+    Assert(i < d_size, "index out of bounds in DynamicArray::operator[]");
+    return d_arr[i];
+  }
+
+  const T& back() const {
+    Assert(d_size > 0, "DynamicArray::back() called on empty list");
+    return d_arr[d_size - 1];
+  }
+
+  void pop_back() {
+    Assert(d_size > 0, "DynamicArray::back() called on empty list");
+    --d_size;
+    if(d_callDestructor) {
+      d_arr[d_size].~T();
+    }
+  }
+
+  typedef T* iterator;
+  typedef const T* const_iterator;
+
+  iterator begin() { return d_arr; }
+  iterator end() { return d_arr + d_size; }
+  const_iterator begin() const { return d_arr; }
+  const_iterator end() const { return d_arr + d_size; }
+
+};/* class DynamicArray<T> */
+
+template <class T, class Ctor = T>
+class DynamicGrowingArray : public DynamicArray<T> {
+  Ctor d_ctor;
+
+public:
+  DynamicGrowingArray(bool callDestructor, const Ctor& c) :
+    DynamicArray<T>(callDestructor),
+    d_ctor(c) {
+  }
+
+  DynamicGrowingArray(bool callDestructor = false) :
+    DynamicArray<T>(callDestructor),
+    d_ctor() {
+  }
+
+  T& operator[](unsigned i) {
+    while(this->d_allocated <= i) {
+      this->grow();
+    }
+    while(this->d_size <= i) {
+      ::new((void*)(this->d_arr + this->d_size)) T(d_ctor);
+      ++this->d_size;
+    }
+    return this->d_arr[i];
+  }
+
+  const T& operator[](unsigned i) const {
+    Assert(this->d_size > i);
+    return this->d_arr[i];
+  }
+};/* CVC4::DynamicGrowingArray */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__UTIL__DYNAMIC_ARRAY_H */
diff --git a/src/util/floatingpoint.cpp b/src/util/floatingpoint.cpp
new file mode 100644
index 0000000..678d3a4
--- /dev/null
+++ b/src/util/floatingpoint.cpp
@@ -0,0 +1,39 @@
+/*********************                                                        */
+/*! \file floatingpoint.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Martin Brain
+ ** Copyright (c) 2013  University of Oxford
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Implementations of the utility functions for working with floating point theories. ]]
+ **
+ **/
+
+#include "util/floatingpoint.h"
+
+#include "base/cvc4_assert.h"
+
+namespace CVC4 {
+
+FloatingPointSize::FloatingPointSize (unsigned _e, unsigned _s) : e(_e), s(_s)
+{
+  PrettyCheckArgument(validExponentSize(_e),_e,"Invalid exponent size : %d",_e);
+  PrettyCheckArgument(validSignificandSize(_s),_s,"Invalid significand size : %d",_s);
+}
+
+FloatingPointSize::FloatingPointSize (const FloatingPointSize &old) : e(old.e), s(old.s)
+{
+  PrettyCheckArgument(validExponentSize(e),e,"Invalid exponent size : %d",e);
+  PrettyCheckArgument(validSignificandSize(s),s,"Invalid significand size : %d",s);
+}
+
+void FloatingPointLiteral::unfinished (void) const {
+  Unimplemented("Floating-point literals not yet implemented.");
+}
+
+}/* CVC4 namespace */
diff --git a/src/util/floatingpoint.h b/src/util/floatingpoint.h
new file mode 100644
index 0000000..af909df
--- /dev/null
+++ b/src/util/floatingpoint.h
@@ -0,0 +1,262 @@
+/*********************                                                        */
+/*! \file floatingpoint.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Martin Brain, Tim King
+ ** Copyright (c) 2013  University of Oxford
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Utility functions for working with floating point theories. ]]
+ **
+ ** [[ This file contains the data structures used by the constant and
+ **    parametric types of the floating point theory. ]]
+ **/
+#include "cvc4_public.h"
+
+#ifndef __CVC4__FLOATINGPOINT_H
+#define __CVC4__FLOATINGPOINT_H
+
+#include <fenv.h>
+
+#include "util/bitvector.h"
+
+namespace CVC4 {
+  // Inline these!
+  inline bool CVC4_PUBLIC validExponentSize (unsigned e) { return e >= 2; }
+  inline bool CVC4_PUBLIC validSignificandSize (unsigned s) { return s >= 2; }
+
+  /**
+   * Floating point sorts are parameterised by two non-zero constants
+   * giving the width (in bits) of the exponent and significand
+   * (including the hidden bit).
+   */
+  class CVC4_PUBLIC FloatingPointSize {
+    /*
+      Class invariants:
+      * VALIDEXPONENTSIZE(e)
+      * VALIDSIGNIFCANDSIZE(s)
+     */
+
+  private :
+    unsigned e;
+    unsigned s;
+
+  public :
+    FloatingPointSize (unsigned _e, unsigned _s);
+    FloatingPointSize (const FloatingPointSize &old);
+
+    inline unsigned exponent (void) const {
+      return this->e;
+    }
+
+    inline unsigned significand (void) const {
+      return this->s;
+    }
+
+    bool operator ==(const FloatingPointSize& fps) const {
+      return (e == fps.e) && (s == fps.s);
+    }
+
+  }; /* class FloatingPointSize */
+
+  struct CVC4_PUBLIC FloatingPointSizeHashFunction {
+    static inline size_t ROLL(size_t X, size_t N) {
+      return (((X) << (N)) | ((X) >> (8*sizeof((X)) - (N)) ));
+    }
+
+    inline size_t operator() (const FloatingPointSize& fpt) const {
+      return size_t(ROLL(fpt.exponent(), 4*sizeof(unsigned)) |
+		    fpt.significand());
+    }
+  }; /* struct FloatingPointSizeHashFunction */
+
+
+  /**
+   * A concrete instance of the rounding mode sort
+   */
+  enum CVC4_PUBLIC RoundingMode {
+    roundNearestTiesToEven = FE_TONEAREST,
+    roundTowardPositive = FE_UPWARD,
+    roundTowardNegative = FE_DOWNWARD,
+    roundTowardZero = FE_TOWARDZERO,
+    // Initializes this to the diagonalization of the 4 other values.
+    roundNearestTiesToAway = (((~FE_TONEAREST) & 0x1) | ((~FE_UPWARD) & 0x2) |
+                              ((~FE_DOWNWARD) & 0x4) | ((~FE_TOWARDZERO) & 0x8))
+  }; /* enum RoundingMode */
+
+  struct CVC4_PUBLIC RoundingModeHashFunction {
+    inline size_t operator() (const RoundingMode& rm) const {
+      return size_t(rm);
+    }
+  }; /* struct RoundingModeHashFunction */
+
+
+  /**
+   * A concrete floating point number
+   */
+
+  class CVC4_PUBLIC FloatingPointLiteral {
+  public :
+    // This intentional left unfinished as the choice of literal
+    // representation is solver specific.
+    void unfinished (void) const;
+
+    FloatingPointLiteral(unsigned, unsigned, double) { unfinished(); }
+    FloatingPointLiteral(unsigned, unsigned, const std::string &) { unfinished(); }
+    FloatingPointLiteral(const FloatingPointLiteral &) { unfinished(); }
+
+    bool operator == (const FloatingPointLiteral &op) const {
+      unfinished();
+      return false;
+    }
+
+    size_t hash (void) const {
+      unfinished();
+      return 23;
+    }
+  };
+
+  class CVC4_PUBLIC FloatingPoint {
+  protected :
+    FloatingPointLiteral fpl;
+
+  public :
+    FloatingPointSize t;
+
+    FloatingPoint (unsigned e, unsigned s, double d) : fpl(e,s,d), t(e,s) {}
+    FloatingPoint (unsigned e, unsigned s, const std::string &bitString) : fpl(e,s,bitString), t(e,s) {}
+    FloatingPoint (const FloatingPoint &fp) : fpl(fp.fpl), t(fp.t) {}
+
+    bool operator ==(const FloatingPoint& fp) const {
+      return ( (t == fp.t) && fpl == fp.fpl );
+    }
+
+    const FloatingPointLiteral & getLiteral (void) const {
+      return this->fpl;
+    }
+
+  }; /* class FloatingPoint */
+
+
+  struct CVC4_PUBLIC FloatingPointHashFunction {
+    inline size_t operator() (const FloatingPoint& fp) const {
+      FloatingPointSizeHashFunction h;
+      return h(fp.t) ^ fp.getLiteral().hash();
+    }
+  }; /* struct FloatingPointHashFunction */
+
+  /**
+   * The parameter type for the conversions to floating point.
+   */
+  class CVC4_PUBLIC FloatingPointConvertSort {
+  public :
+    FloatingPointSize t;
+
+    FloatingPointConvertSort (unsigned _e, unsigned _s)
+      : t(_e,_s) {}
+
+    bool operator ==(const FloatingPointConvertSort& fpcs) const {
+      return t == fpcs.t;
+    }
+
+  };
+
+  /**
+   * As different conversions are different parameterised kinds, there
+   * is a need for different (C++) types for each one.
+   */
+
+  class CVC4_PUBLIC FloatingPointToFPIEEEBitVector : public FloatingPointConvertSort {
+  public : FloatingPointToFPIEEEBitVector (unsigned _e, unsigned _s) : FloatingPointConvertSort(_e,_s) {}
+  };
+  class CVC4_PUBLIC FloatingPointToFPFloatingPoint : public FloatingPointConvertSort {
+  public : FloatingPointToFPFloatingPoint (unsigned _e, unsigned _s) : FloatingPointConvertSort(_e,_s) {}
+  };
+  class CVC4_PUBLIC FloatingPointToFPReal : public FloatingPointConvertSort {
+  public : FloatingPointToFPReal (unsigned _e, unsigned _s) : FloatingPointConvertSort(_e,_s) {}
+  };
+  class CVC4_PUBLIC FloatingPointToFPSignedBitVector : public FloatingPointConvertSort {
+  public : FloatingPointToFPSignedBitVector (unsigned _e, unsigned _s) : FloatingPointConvertSort(_e,_s) {}
+  };
+  class CVC4_PUBLIC FloatingPointToFPUnsignedBitVector : public FloatingPointConvertSort {
+  public : FloatingPointToFPUnsignedBitVector (unsigned _e, unsigned _s) : FloatingPointConvertSort(_e,_s) {}
+  };
+  class CVC4_PUBLIC FloatingPointToFPGeneric : public FloatingPointConvertSort {
+  public : FloatingPointToFPGeneric (unsigned _e, unsigned _s) : FloatingPointConvertSort(_e,_s) {}
+  };
+
+
+
+  template <unsigned key>
+  struct CVC4_PUBLIC FloatingPointConvertSortHashFunction {
+    inline size_t operator() (const FloatingPointConvertSort& fpcs) const {
+      FloatingPointSizeHashFunction f;
+      return f(fpcs.t) ^ (0x00005300 | (key << 24));
+    }
+  }; /* struct FloatingPointConvertSortHashFunction */
+
+
+
+
+
+
+
+
+  /**
+   * The parameter type for the conversion to bit vector.
+   */
+  class CVC4_PUBLIC FloatingPointToBV {
+  public :
+    BitVectorSize bvs;
+
+    FloatingPointToBV (unsigned s)
+      : bvs(s) {}
+    operator unsigned () const { return bvs; }
+  };
+
+  class CVC4_PUBLIC FloatingPointToUBV : public FloatingPointToBV {
+  public : FloatingPointToUBV (unsigned _s) : FloatingPointToBV(_s) {}
+  };
+  class CVC4_PUBLIC FloatingPointToSBV : public FloatingPointToBV {
+  public : FloatingPointToSBV (unsigned _s) : FloatingPointToBV(_s) {}
+  };
+
+
+  template <unsigned key>
+  struct CVC4_PUBLIC FloatingPointToBVHashFunction {
+    inline size_t operator() (const FloatingPointToBV& fptbv) const {
+      UnsignedHashFunction< ::CVC4::BitVectorSize > f;
+      return 	(key ^ 0x46504256) ^ f(fptbv.bvs);
+    }
+  }; /* struct FloatingPointToBVHashFunction */
+
+
+
+  inline std::ostream& operator <<(std::ostream& os, const FloatingPointLiteral& fp) CVC4_PUBLIC;
+  inline std::ostream& operator <<(std::ostream& os, const FloatingPointLiteral& fp) {
+    fp.unfinished();
+    return os;
+  }
+
+  inline std::ostream& operator <<(std::ostream& os, const FloatingPoint& fp) CVC4_PUBLIC;
+  inline std::ostream& operator <<(std::ostream& os, const FloatingPoint& fp) {
+    return os << fp.getLiteral();
+  }
+
+  inline std::ostream& operator <<(std::ostream& os, const FloatingPointSize& fps) CVC4_PUBLIC;
+  inline std::ostream& operator <<(std::ostream& os, const FloatingPointSize& fps) {
+    return os << "(_ FloatingPoint " << fps.exponent() << " " << fps.significand() << ")";
+  }
+
+  inline std::ostream& operator <<(std::ostream& os, const FloatingPointConvertSort& fpcs) CVC4_PUBLIC;
+  inline std::ostream& operator <<(std::ostream& os, const FloatingPointConvertSort& fpcs) {
+    return os << "(_ to_fp " << fpcs.t.exponent() << " " << fpcs.t.significand() << ")";
+  }
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__FLOATINGPOINT_H */
diff --git a/src/util/floatingpoint.i b/src/util/floatingpoint.i
new file mode 100644
index 0000000..c66cc31
--- /dev/null
+++ b/src/util/floatingpoint.i
@@ -0,0 +1,5 @@
+%{
+#include "util/floatingpoint.h"
+%}
+
+%include "util/floatingpoint.h"
diff --git a/src/util/gmp_util.h b/src/util/gmp_util.h
new file mode 100644
index 0000000..776d8a3
--- /dev/null
+++ b/src/util/gmp_util.h
@@ -0,0 +1,40 @@
+/*********************                                                        */
+/*! \file gmp_util.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__GMP_UTIL_H
+#define __CVC4__GMP_UTIL_H
+
+#include <gmpxx.h>
+
+namespace CVC4 {
+
+/** Hashes the gmp integer primitive in a word by word fashion. */
+inline size_t gmpz_hash(const mpz_t toHash) {
+  size_t hash = 0;
+  for (int i = 0, n = mpz_size(toHash); i < n; ++i){
+    mp_limb_t limb = mpz_getlimbn(toHash, i);
+    hash = hash * 2;
+    hash = hash xor limb;
+  }
+  return hash;
+}/* gmpz_hash() */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__GMP_UTIL_H */
diff --git a/src/util/hash.h b/src/util/hash.h
new file mode 100644
index 0000000..4797b5f
--- /dev/null
+++ b/src/util/hash.h
@@ -0,0 +1,64 @@
+/*********************                                                        */
+/*! \file hash.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Christopher L. Conway, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__HASH_H
+#define __CVC4__HASH_H
+
+// in case it's not been declared as a namespace yet
+namespace __gnu_cxx {}
+
+#include <ext/hash_map>
+#include <ext/hash_set>
+
+namespace __gnu_cxx {
+
+#ifdef CVC4_NEED_HASH_UINT64_T
+// on some versions and architectures of GNU C++, we need a
+// specialization of hash for 64-bit values
+template <>
+struct hash<uint64_t> {
+  size_t operator()(uint64_t v) const {
+    return v;
+  }
+};/* struct hash<uint64_t> */
+#endif /* CVC4_NEED_HASH_UINT64_T */
+
+}/* __gnu_cxx namespace */
+
+// hackish: treat hash stuff as if it were in std namespace
+namespace std { using namespace __gnu_cxx; }
+
+namespace CVC4 {
+
+struct StringHashFunction {
+  size_t operator()(const std::string& str) const {
+    return __gnu_cxx::hash<const char*>()(str.c_str());
+  }
+};/* struct StringHashFunction */
+
+template <class T, class U, class HashT = std::hash<T>, class HashU = std::hash<U> >
+struct PairHashFunction {
+  size_t operator()(const std::pair<T, U>& pr) const {
+    return HashT()(pr.first) ^ HashU()(pr.second);
+  }
+};/* struct PairHashFunction */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__HASH_H */
diff --git a/src/util/hash.i b/src/util/hash.i
new file mode 100644
index 0000000..470447f
--- /dev/null
+++ b/src/util/hash.i
@@ -0,0 +1,7 @@
+%{
+#include "util/hash.h"
+%}
+
+%rename(apply) CVC4::StringHashFunction::operator()(const std::string&) const;
+
+%include "util/hash.h"
diff --git a/src/util/index.h b/src/util/index.h
new file mode 100644
index 0000000..6c11343
--- /dev/null
+++ b/src/util/index.h
@@ -0,0 +1,47 @@
+/*********************                                                        */
+/*! \file index.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Liana Hadarean
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <stdint.h>
+#include <boost/static_assert.hpp>
+#include <limits>
+
+namespace CVC4 {
+
+/**
+ * Index is an unsigned integer used for array indexing.
+ *
+ * This gives a standardized type for independent pieces of code to use as an agreement.
+ */
+typedef uint32_t Index;
+
+BOOST_STATIC_ASSERT(sizeof(Index) <= sizeof(size_t));
+BOOST_STATIC_ASSERT(!std::numeric_limits<Index>::is_signed);
+
+/* Discussion: Why is Index a uint32_t instead of size_t (or uint_fast32_t)?
+ *
+ * size_t is a more appropriate choice than uint32_t as the choice is dictated by
+ * uniqueness in arrays and vectors. These correspond to size_t.
+ * However, the using size_t with a sizeof == 8 on 64 bit platforms is noticeably
+ * slower. (Limited testing suggests a ~1/16 of running time.)
+ * (Interestingly, uint_fast32_t also has a sizeof == 8 on x86_64. Filthy Liars!)
+ */
+
+}/* CVC4 namespace */
diff --git a/src/util/integer.h.in b/src/util/integer.h.in
new file mode 100644
index 0000000..13ae139
--- /dev/null
+++ b/src/util/integer.h.in
@@ -0,0 +1,42 @@
+/*********************                                                        */
+/*! \file integer.h.in
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A multi-precision integer constant
+ **
+ ** A multi-precision integer constant.
+ **/
+
+// these gestures are used to avoid a public header dependence on cvc4autoconfig.h
+
+#if @CVC4_NEED_INT64_T_OVERLOADS@
+#  define CVC4_NEED_INT64_T_OVERLOADS
+#endif
+
+#if /* use CLN */ @CVC4_USE_CLN_IMP@
+#  define CVC4_CLN_IMP
+#endif /* @CVC4_USE_CLN_IMP@ */
+#if /* use GMP */ @CVC4_USE_GMP_IMP@
+#  define CVC4_GMP_IMP
+#endif /* @CVC4_USE_GMP_IMP@ */
+
+#ifdef CVC4_CLN_IMP
+#  include "util/integer_cln_imp.h"
+#  if SWIG
+     %include "util/integer_cln_imp.h"
+#  endif /* SWIG */
+#endif /* CVC4_CLN_IMP */
+
+#ifdef CVC4_GMP_IMP
+#  include "util/integer_gmp_imp.h"
+#  if SWIG
+     %include "util/integer_gmp_imp.h"
+#  endif /* SWIG */
+#endif /* CVC4_GMP_IMP */
diff --git a/src/util/integer.i b/src/util/integer.i
new file mode 100644
index 0000000..c8d2f7b
--- /dev/null
+++ b/src/util/integer.i
@@ -0,0 +1,33 @@
+%{
+#include "util/integer.h"
+%}
+
+%ignore CVC4::Integer::Integer(int);
+%ignore CVC4::Integer::Integer(unsigned int);
+%ignore CVC4::Integer::Integer(const std::string&);
+%ignore CVC4::Integer::Integer(const std::string&, unsigned int);
+
+%rename(assign) CVC4::Integer::operator=(const Integer&);
+%rename(equals) CVC4::Integer::operator==(const Integer&) const;
+%ignore CVC4::Integer::operator!=(const Integer&) const;
+%rename(plus) CVC4::Integer::operator+(const Integer&) const;
+%rename(minus) CVC4::Integer::operator-() const;
+%rename(minus) CVC4::Integer::operator-(const Integer&) const;
+%rename(times) CVC4::Integer::operator*(const Integer&) const;
+%rename(dividedBy) CVC4::Integer::operator/(const Integer&) const;
+%rename(modulo) CVC4::Integer::operator%(const Integer&) const;
+%rename(plusAssign) CVC4::Integer::operator+=(const Integer&);
+%rename(minusAssign) CVC4::Integer::operator-=(const Integer&);
+%rename(timesAssign) CVC4::Integer::operator*=(const Integer&);
+%rename(dividedByAssign) CVC4::Integer::operator/=(const Integer&);
+%rename(moduloAssign) CVC4::Integer::operator%=(const Integer&);
+%rename(less) CVC4::Integer::operator<(const Integer&) const;
+%rename(lessEqual) CVC4::Integer::operator<=(const Integer&) const;
+%rename(greater) CVC4::Integer::operator>(const Integer&) const;
+%rename(greaterEqual) CVC4::Integer::operator>=(const Integer&) const;
+
+%rename(apply) CVC4::IntegerHashFunction::operator()(const CVC4::Integer&) const;
+
+%ignore CVC4::operator<<(std::ostream&, const Integer&);
+
+%include "util/integer.h"
diff --git a/src/util/integer_cln_imp.cpp b/src/util/integer_cln_imp.cpp
new file mode 100644
index 0000000..a7412b5
--- /dev/null
+++ b/src/util/integer_cln_imp.cpp
@@ -0,0 +1,158 @@
+/*********************                                                        */
+/*! \file integer_cln_imp.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+#include "util/integer.h"
+
+#include <sstream>
+#include <string>
+
+#include "cvc4autoconfig.h"
+
+
+#ifndef CVC4_CLN_IMP
+#  error "This source should only ever be built if CVC4_CLN_IMP is on !"
+#endif /* CVC4_CLN_IMP */
+
+#include "base/cvc4_assert.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+signed int Integer::s_fastSignedIntMin = -(1<<29);
+signed int Integer::s_fastSignedIntMax = (1<<29)-1;
+signed long Integer::s_slowSignedIntMin = (signed long) std::numeric_limits<signed int>::min();
+signed long Integer::s_slowSignedIntMax =  (signed long) std::numeric_limits<signed int>::max();
+
+unsigned int Integer::s_fastUnsignedIntMax = (1<<29)-1;
+unsigned long Integer::s_slowUnsignedIntMax =  (unsigned long) std::numeric_limits<unsigned int>::max();
+
+unsigned long Integer::s_signedLongMin = std::numeric_limits<signed long>::min();
+unsigned long Integer::s_signedLongMax = std::numeric_limits<signed long>::max();
+unsigned long Integer::s_unsignedLongMax = std::numeric_limits<unsigned long>::max();
+
+Integer Integer::oneExtend(uint32_t size, uint32_t amount) const {
+  DebugCheckArgument((*this) < Integer(1).multiplyByPow2(size), size);
+  cln::cl_byte range(amount, size);
+  cln::cl_I allones = (cln::cl_I(1) << (size + amount))- 1; // 2^size - 1
+  Integer temp(allones);
+
+  return Integer(cln::deposit_field(allones, d_value, range));
+}
+
+
+Integer Integer::exactQuotient(const Integer& y) const {
+  DebugCheckArgument(y.divides(*this), y);
+  return Integer( cln::exquo(d_value, y.d_value) );
+}
+
+
+void Integer::parseInt(const std::string& s, unsigned base) throw(std::invalid_argument) {
+  cln::cl_read_flags flags;
+  flags.syntax = cln::syntax_integer;
+  flags.lsyntax = cln::lsyntax_standard;
+  flags.rational_base = base;
+  if(base == 0) {
+    // infer base in a manner consistent with GMP
+    if(s[0] == '0') {
+      flags.lsyntax = cln::lsyntax_commonlisp;
+      std::string st = s;
+      if(s[1] == 'X' || s[1] == 'x') {
+        st.replace(0, 2, "#x");
+      } else if(s[1] == 'B' || s[1] == 'b') {
+        st.replace(0, 2, "#b");
+      } else {
+        st.replace(0, 1, "#o");
+      }
+      readInt(flags, st, base);
+      return;
+    } else {
+      flags.rational_base = 10;
+    }
+  }
+  readInt(flags, s, base);
+}
+
+void Integer::readInt(const cln::cl_read_flags& flags, const std::string& s, unsigned base) throw(std::invalid_argument) {
+  try {
+    // Removing leading zeroes, CLN has a bug for these inputs up to and
+    // including CLN v1.3.2.
+    // See http://www.ginac.de/CLN/cln.git/?a=commit;h=4a477b0cc3dd7fbfb23b25090ff8c8869c8fa21a for details.
+    size_t pos = s.find_first_not_of('0');
+    if(pos == std::string::npos) {
+      d_value = read_integer(flags, "0", NULL, NULL);
+    } else {
+      const char* cstr = s.c_str();
+      const char* start = cstr + pos;
+      const char* end = cstr + s.length();
+      d_value = read_integer(flags, start, end, NULL);
+    }
+  } catch(...) {
+    std::stringstream ss;
+    ss << "Integer() failed to parse value \"" << s << "\" in base " << base;
+    throw std::invalid_argument(ss.str());
+  }
+}
+
+bool Integer::fitsSignedInt() const {
+  // http://www.ginac.de/CLN/cln.html#Conversions
+  // TODO improve performance
+  Assert(s_slowSignedIntMin <= s_fastSignedIntMin);
+  Assert(s_fastSignedIntMin <= s_fastSignedIntMax);
+  Assert(s_fastSignedIntMax <= s_slowSignedIntMax);
+
+  return (d_value <= s_fastSignedIntMax || d_value <= s_slowSignedIntMax) &&
+    (d_value >= s_fastSignedIntMin || d_value >= s_slowSignedIntMax);
+}
+
+bool Integer::fitsUnsignedInt() const {
+  // TODO improve performance
+  Assert(s_fastUnsignedIntMax <= s_slowUnsignedIntMax);
+  return sgn() >= 0 &&
+    (d_value <= s_fastUnsignedIntMax || d_value <= s_slowUnsignedIntMax);
+}
+
+signed int Integer::getSignedInt() const {
+  // ensure there isn't overflow
+  CheckArgument(fitsSignedInt(), this, "Overflow detected in Integer::getSignedInt()");
+  return cln::cl_I_to_int(d_value);
+}
+
+unsigned int Integer::getUnsignedInt() const {
+  // ensure there isn't overflow
+  CheckArgument(fitsUnsignedInt(), this, "Overflow detected in Integer::getUnsignedInt()");
+  return cln::cl_I_to_uint(d_value);
+}
+
+bool Integer::fitsSignedLong() const {
+  return d_value <= s_signedLongMax && d_value >= s_signedLongMin;
+}
+
+bool Integer::fitsUnsignedLong() const {
+  return sgn() >= 0 && d_value <= s_unsignedLongMax;
+}
+
+Integer Integer::pow(unsigned long int exp) const {
+  if (exp == 0) {
+    return Integer(1);
+  } else {
+    Assert(exp > 0);
+    cln::cl_I result = cln::expt_pos(d_value, exp);
+    return Integer(result);
+  }
+}
+
+} /* namespace CVC4 */
diff --git a/src/util/integer_cln_imp.h b/src/util/integer_cln_imp.h
new file mode 100644
index 0000000..1261952
--- /dev/null
+++ b/src/util/integer_cln_imp.h
@@ -0,0 +1,524 @@
+/*********************                                                        */
+/*! \file integer_cln_imp.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Liana Hadarean
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A multiprecision integer constant; wraps a CLN multiprecision
+ ** integer.
+ **
+ ** A multiprecision integer constant; wraps a CLN multiprecision integer.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__INTEGER_H
+#define __CVC4__INTEGER_H
+
+#include <cln/input.h>
+#include <cln/integer.h>
+#include <cln/integer_io.h>
+#include <iostream>
+#include <limits>
+#include <sstream>
+#include <string>
+
+#include "base/exception.h"
+
+namespace CVC4 {
+
+class Rational;
+
+class CVC4_PUBLIC Integer {
+private:
+  /**
+   * Stores the value of the rational is stored in a C++ CLN integer class.
+   */
+  cln::cl_I d_value;
+
+  /**
+   * Gets a reference to the cln data that backs up the integer.
+   * Only accessible to friend classes.
+   */
+  const cln::cl_I& get_cl_I() const { return d_value; }
+
+  /**
+   * Constructs an Integer by copying a CLN C++ primitive.
+   */
+  Integer(const cln::cl_I& val) : d_value(val) {}
+
+  void readInt(const cln::cl_read_flags& flags, const std::string& s, unsigned base) throw(std::invalid_argument);
+
+  void parseInt(const std::string& s, unsigned base) throw(std::invalid_argument);
+
+
+  // These constants are to help with CLN conversion in 32 bit.
+  // See http://www.ginac.de/CLN/cln.html#Conversions
+  static signed int s_fastSignedIntMax; /*  2^29 - 1 */
+  static signed int s_fastSignedIntMin; /* -2^29 */
+  static unsigned int s_fastUnsignedIntMax; /* 2^29 - 1 */
+
+  static signed long s_slowSignedIntMax; /*  std::numeric_limits<signed int>::max() */
+  static signed long s_slowSignedIntMin; /*  std::numeric_limits<signed int>::min() */
+  static unsigned long s_slowUnsignedIntMax; /*  std::numeric_limits<unsigned int>::max() */
+  static unsigned long s_signedLongMin;
+  static unsigned long s_signedLongMax;
+  static unsigned long s_unsignedLongMax;
+public:
+
+  /** Constructs a rational with the value 0. */
+  Integer() : d_value(0){}
+
+  /**
+   * Constructs a Integer from a C string.
+   * Throws std::invalid_argument if the string is not a valid rational.
+   * For more information about what is a valid rational string,
+   * see GMP's documentation for mpq_set_str().
+   */
+  explicit Integer(const char* sp, unsigned base = 10) throw (std::invalid_argument) {
+    parseInt(std::string(sp), base);
+  }
+
+  explicit Integer(const std::string& s, unsigned base = 10) throw (std::invalid_argument) {
+    parseInt(s, base);
+  }
+
+  Integer(const Integer& q) : d_value(q.d_value) {}
+
+  Integer(  signed int z) : d_value((signed long int)z) {}
+  Integer(unsigned int z) : d_value((unsigned long int)z) {}
+  Integer(  signed long int z) : d_value(z) {}
+  Integer(unsigned long int z) : d_value(z) {}
+
+#ifdef CVC4_NEED_INT64_T_OVERLOADS
+  Integer( int64_t z) : d_value(static_cast<long>(z)) {}
+  Integer(uint64_t z) : d_value(static_cast<unsigned long>(z)) {}
+#endif /* CVC4_NEED_INT64_T_OVERLOADS */
+
+  ~Integer() {}
+
+  Integer& operator=(const Integer& x){
+    if(this == &x) return *this;
+    d_value = x.d_value;
+    return *this;
+  }
+
+  bool operator==(const Integer& y) const {
+    return d_value == y.d_value;
+  }
+
+  Integer operator-() const{
+    return Integer(-(d_value));
+  }
+
+
+  bool operator!=(const Integer& y) const {
+    return d_value != y.d_value;
+  }
+
+  bool operator< (const Integer& y) const {
+    return d_value < y.d_value;
+  }
+
+  bool operator<=(const Integer& y) const {
+    return d_value <= y.d_value;
+  }
+
+  bool operator> (const Integer& y) const {
+    return d_value > y.d_value;
+  }
+
+  bool operator>=(const Integer& y) const {
+    return d_value >= y.d_value;
+  }
+
+
+  Integer operator+(const Integer& y) const {
+    return Integer( d_value + y.d_value );
+  }
+  Integer& operator+=(const Integer& y) {
+    d_value += y.d_value;
+    return *this;
+  }
+
+  Integer operator-(const Integer& y) const {
+    return Integer( d_value - y.d_value );
+  }
+  Integer& operator-=(const Integer& y) {
+    d_value -= y.d_value;
+    return *this;
+  }
+
+  Integer operator*(const Integer& y) const {
+    return Integer( d_value * y.d_value );
+  }
+  Integer& operator*=(const Integer& y) {
+    d_value *= y.d_value;
+    return *this;
+  }
+
+
+  Integer bitwiseOr(const Integer& y) const {
+    return Integer(cln::logior(d_value, y.d_value));
+  }
+
+  Integer bitwiseAnd(const Integer& y) const {
+    return Integer(cln::logand(d_value, y.d_value));
+  }
+
+  Integer bitwiseXor(const Integer& y) const {
+    return Integer(cln::logxor(d_value, y.d_value));
+  }
+
+  Integer bitwiseNot() const {
+    return Integer(cln::lognot(d_value));
+  }
+
+
+  /**
+   * Return this*(2^pow).
+   */
+  Integer multiplyByPow2(uint32_t pow) const {
+    cln::cl_I ipow(pow);
+    return Integer( d_value << ipow);
+  }
+
+  bool isBitSet(uint32_t i) const {
+    return !extractBitRange(1, i).isZero();
+  }
+
+  Integer setBit(uint32_t i) const {
+    cln::cl_I mask(1);
+    mask = mask << i;
+    return Integer(cln::logior(d_value, mask));
+  }
+
+  Integer oneExtend(uint32_t size, uint32_t amount) const;
+
+  uint32_t toUnsignedInt() const {
+    return cln::cl_I_to_uint(d_value);
+  }
+
+
+  /** See CLN Documentation. */
+  Integer extractBitRange(uint32_t bitCount, uint32_t low) const {
+    cln::cl_byte range(bitCount, low);
+    return Integer(cln::ldb(d_value, range));
+  }
+
+  /**
+   * Returns the floor(this / y)
+   */
+  Integer floorDivideQuotient(const Integer& y) const {
+    return Integer( cln::floor1(d_value, y.d_value) );
+  }
+
+  /**
+   * Returns r == this - floor(this/y)*y
+   */
+  Integer floorDivideRemainder(const Integer& y) const {
+    return Integer( cln::floor2(d_value, y.d_value).remainder );
+  }
+   /**
+   * Computes a floor quoient and remainder for x divided by y.
+   */
+  static void floorQR(Integer& q, Integer& r, const Integer& x, const Integer& y) {
+    cln::cl_I_div_t res = cln::floor2(x.d_value, y.d_value);
+    q.d_value = res.quotient;
+    r.d_value = res.remainder;
+  }
+
+  /**
+   * Returns the ceil(this / y)
+   */
+  Integer ceilingDivideQuotient(const Integer& y) const {
+    return Integer( cln::ceiling1(d_value, y.d_value) );
+  }
+
+  /**
+   * Returns the ceil(this / y)
+   */
+  Integer ceilingDivideRemainder(const Integer& y) const {
+    return Integer( cln::ceiling2(d_value, y.d_value).remainder );
+  }
+
+  /**
+   * Computes a quoitent and remainder according to Boute's Euclidean definition.
+   * euclidianDivideQuotient, euclidianDivideRemainder.
+   *
+   * Boute, Raymond T. (April 1992).
+   * The Euclidean definition of the functions div and mod.
+   * ACM Transactions on Programming Languages and Systems (TOPLAS)
+   * ACM Press. 14 (2): 127 - 144. doi:10.1145/128861.128862.
+   */
+  static void euclidianQR(Integer& q, Integer& r, const Integer& x, const Integer& y) {
+    // compute the floor and then fix the value up if needed.
+    floorQR(q,r,x,y);
+
+    if(r.strictlyNegative()){
+      // if r < 0
+      // abs(r) < abs(y)
+      // - abs(y) < r < 0, then 0 < r + abs(y) < abs(y)
+      // n = y * q + r
+      // n = y * q - abs(y) + r + abs(y)
+      if(r.sgn() >= 0){
+        // y = abs(y)
+        // n = y * q - y + r + y
+        // n = y * (q-1) + (r+y)
+        q -= 1;
+        r += y;
+      }else{
+        // y = -abs(y)
+        // n = y * q + y + r - y
+        // n = y * (q+1) + (r-y)
+        q += 1;
+        r -= y;
+      }
+    }
+  }
+
+  /**
+   * Returns the quoitent according to Boute's Euclidean definition.
+   * See the documentation for euclidianQR.
+   */
+  Integer euclidianDivideQuotient(const Integer& y) const {
+    Integer q,r;
+    euclidianQR(q,r, *this, y);
+    return q;
+  }
+
+  /**
+   * Returns the remainfing according to Boute's Euclidean definition.
+   * See the documentation for euclidianQR.
+   */
+  Integer euclidianDivideRemainder(const Integer& y) const {
+    Integer q,r;
+    euclidianQR(q,r, *this, y);
+    return r;
+  }
+
+  /**
+   * If y divides *this, then exactQuotient returns (this/y)
+   */
+  Integer exactQuotient(const Integer& y) const;
+
+  Integer modByPow2(uint32_t exp) const {
+    cln::cl_byte range(exp, 0);
+    return Integer(cln::ldb(d_value, range));
+  }
+
+  Integer divByPow2(uint32_t exp) const {
+    return d_value >> exp;
+  }
+
+  /**
+   * Raise this Integer to the power <code>exp</code>.
+   *
+   * @param exp the exponent
+   */
+  Integer pow(unsigned long int exp) const;
+
+  /**
+   * Return the greatest common divisor of this integer with another.
+   */
+  Integer gcd(const Integer& y) const {
+    cln::cl_I result = cln::gcd(d_value, y.d_value);
+    return Integer(result);
+  }
+
+  /**
+   * Return the least common multiple of this integer with another.
+   */
+  Integer lcm(const Integer& y) const {
+    cln::cl_I result = cln::lcm(d_value, y.d_value);
+    return Integer(result);
+  }
+
+  /**
+   * Return true if *this exactly divides y.
+   */
+  bool divides(const Integer& y) const {
+    cln::cl_I result = cln::rem(y.d_value, d_value);
+    return cln::zerop(result);
+  }
+
+  /**
+   * Return the absolute value of this integer.
+   */
+  Integer abs() const {
+    return d_value >= 0 ? *this : -*this;
+  }
+
+  std::string toString(int base = 10) const{
+    std::stringstream ss;
+    switch(base){
+    case 2:
+      fprintbinary(ss,d_value);
+      break;
+    case 8:
+      fprintoctal(ss,d_value);
+      break;
+    case 10:
+      fprintdecimal(ss,d_value);
+      break;
+    case 16:
+      fprinthexadecimal(ss,d_value);
+      break;
+    default:
+      throw Exception("Unhandled base in Integer::toString()");
+    }
+    std::string output = ss.str();
+    for( unsigned i = 0; i <= output.length(); ++i){
+      if(isalpha(output[i])){
+        output.replace(i, 1, 1, tolower(output[i]));
+      }
+    }
+
+    return output;
+  }
+
+  int sgn() const {
+    cln::cl_I sgn = cln::signum(d_value);
+    return cln::cl_I_to_int(sgn);
+  }
+
+
+  inline bool strictlyPositive() const {
+    return sgn() > 0;
+  }
+
+  inline bool strictlyNegative() const {
+    return sgn() < 0;
+  }
+
+  inline bool isZero() const {
+    return sgn() == 0;
+  }
+
+  inline bool isOne() const {
+    return d_value == 1;
+  }
+
+  inline bool isNegativeOne() const {
+    return d_value == -1;
+  }
+
+  /** fits the C "signed int" primitive */
+  bool fitsSignedInt() const;
+
+  /** fits the C "unsigned int" primitive */
+  bool fitsUnsignedInt() const;
+
+  int getSignedInt() const;
+
+  unsigned int getUnsignedInt() const;
+
+  bool fitsSignedLong() const;
+
+  bool fitsUnsignedLong() const;
+
+  long getLong() const {
+    // ensure there isn't overflow
+    CheckArgument(d_value <= std::numeric_limits<long>::max(), this,
+                  "Overflow detected in Integer::getLong()");
+    CheckArgument(d_value >= std::numeric_limits<long>::min(), this,
+                  "Overflow detected in Integer::getLong()");
+    return cln::cl_I_to_long(d_value);
+  }
+
+  unsigned long getUnsignedLong() const {
+    // ensure there isn't overflow
+    CheckArgument(d_value <= std::numeric_limits<unsigned long>::max(), this,
+                  "Overflow detected in Integer::getUnsignedLong()");
+    CheckArgument(d_value >= std::numeric_limits<unsigned long>::min(), this,
+                  "Overflow detected in Integer::getUnsignedLong()");
+    return cln::cl_I_to_ulong(d_value);
+  }
+
+  /**
+   * Computes the hash of the node from the first word of the
+   * numerator, the denominator.
+   */
+  size_t hash() const {
+    return equal_hashcode(d_value);
+  }
+
+  /**
+   * Returns true iff bit n is set.
+   *
+   * @param n the bit to test (0 == least significant bit)
+   * @return true if bit n is set in this integer; false otherwise
+   */
+  bool testBit(unsigned n) const {
+    return cln::logbitp(n, d_value);
+  }
+
+  /**
+   * Returns k if the integer is equal to 2^(k-1)
+   * @return k if the integer is equal to 2^(k-1) and 0 otherwise
+   */
+  unsigned isPow2() const {
+    if (d_value <= 0) return 0;
+    // power2p returns n such that d_value = 2^(n-1)
+    return cln::power2p(d_value);
+  }
+
+  /**
+   * If x != 0, returns the unique n s.t. 2^{n-1} <= abs(x) < 2^{n}.
+   * If x == 0, returns 1.
+   */
+  size_t length() const {
+    int s = sgn();
+    if(s == 0){
+      return 1;
+    }else if(s < 0){
+      size_t len = cln::integer_length(d_value);
+      /*If this is -2^n, return len+1 not len to stay consistent with the definition above!
+       * From CLN's documentation of integer_length:
+       *   This is the smallest n >= 0 such that -2^n <= x < 2^n.
+       *   If x > 0, this is the unique n > 0 such that 2^(n-1) <= x < 2^n.
+       */
+      size_t ord2 = cln::ord2(d_value);
+      return (len == ord2) ? (len + 1) : len;
+    }else{
+      return cln::integer_length(d_value);
+    }
+  }
+
+/*   cl_I xgcd (const cl_I& a, const cl_I& b, cl_I* u, cl_I* v) */
+/* This function ("extended gcd") returns the greatest common divisor g of a and b and at the same time the representation of g as an integral linear combination of a and b: u and v with u*a+v*b = g, g >= 0. u and v will be normalized to be of smallest possible absolute value, in the following sense: If a and b are non-zero, and abs(a) != abs(b), u and v will satisfy the inequalities abs(u) <= abs(b)/(2*g), abs(v) <= abs(a)/(2*g). */
+  static void extendedGcd(Integer& g, Integer& s, Integer& t, const Integer& a, const Integer& b){
+    g.d_value = cln::xgcd(a.d_value, b.d_value, &s.d_value, &t.d_value);
+  }
+
+  /** Returns a reference to the minimum of two integers. */
+  static const Integer& min(const Integer& a, const Integer& b){
+    return (a <=b ) ? a : b;
+  }
+
+  /** Returns a reference to the maximum of two integers. */
+  static const Integer& max(const Integer& a, const Integer& b){
+    return (a >= b ) ? a : b;
+  }
+
+  friend class CVC4::Rational;
+};/* class Integer */
+
+struct IntegerHashFunction {
+  inline size_t operator()(const CVC4::Integer& i) const {
+    return i.hash();
+  }
+};/* struct IntegerHashFunction */
+
+inline std::ostream& operator<<(std::ostream& os, const Integer& n) {
+  return os << n.toString();
+}
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__INTEGER_H */
diff --git a/src/util/integer_gmp_imp.cpp b/src/util/integer_gmp_imp.cpp
new file mode 100644
index 0000000..e0472ac
--- /dev/null
+++ b/src/util/integer_gmp_imp.cpp
@@ -0,0 +1,103 @@
+/*********************                                                        */
+/*! \file integer_gmp_imp.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A multi-precision rational constant.
+ **
+ ** A multi-precision rational constant.
+ **/
+
+#include "util/integer.h"
+
+#include <cmath>
+#include <sstream>
+#include <string>
+
+#include "cvc4autoconfig.h"
+
+#include "base/cvc4_assert.h"
+#include "util/rational.h"
+
+#ifndef CVC4_GMP_IMP
+#  error "This source should only ever be built if CVC4_GMP_IMP is on !"
+#endif /* CVC4_GMP_IMP */
+
+
+using namespace std;
+
+namespace CVC4 {
+
+Integer::Integer(const char* s, unsigned base)
+  : d_value(s, base)
+{}
+
+Integer::Integer(const std::string& s, unsigned base)
+  : d_value(s, base)
+{}
+
+
+bool Integer::fitsSignedInt() const {
+  return d_value.fits_sint_p();
+}
+
+bool Integer::fitsUnsignedInt() const {
+  return d_value.fits_uint_p();
+}
+
+signed int Integer::getSignedInt() const {
+  // ensure there isn't overflow
+  CheckArgument(d_value <= std::numeric_limits<int>::max(), this,
+                "Overflow detected in Integer::getSignedInt().");
+  CheckArgument(d_value >= std::numeric_limits<int>::min(), this,
+                "Overflow detected in Integer::getSignedInt().");
+  CheckArgument(fitsSignedInt(), this,
+                "Overflow detected in Integer::getSignedInt().");
+  return (signed int) d_value.get_si();
+}
+
+unsigned int Integer::getUnsignedInt() const {
+  // ensure there isn't overflow
+  CheckArgument(d_value <= std::numeric_limits<unsigned int>::max(), this,
+                "Overflow detected in Integer::getUnsignedInt()");
+  CheckArgument(d_value >= std::numeric_limits<unsigned int>::min(), this,
+                "Overflow detected in Integer::getUnsignedInt()");
+  CheckArgument(fitsSignedInt(), this,
+                "Overflow detected in Integer::getUnsignedInt()");
+  return (unsigned int) d_value.get_ui();
+}
+
+bool Integer::fitsSignedLong() const {
+  return d_value.fits_slong_p();
+}
+
+bool Integer::fitsUnsignedLong() const {
+  return d_value.fits_ulong_p();
+}
+
+Integer Integer::oneExtend(uint32_t size, uint32_t amount) const {
+  // check that the size is accurate
+  DebugCheckArgument((*this) < Integer(1).multiplyByPow2(size), size);
+  mpz_class res = d_value;
+
+  for (unsigned i = size; i < size + amount; ++i) {
+    mpz_setbit(res.get_mpz_t(), i);
+  }
+
+  return Integer(res);
+}
+
+Integer Integer::exactQuotient(const Integer& y) const {
+  DebugCheckArgument(y.divides(*this), y);
+  mpz_class q;
+  mpz_divexact(q.get_mpz_t(), d_value.get_mpz_t(), y.d_value.get_mpz_t());
+  return Integer( q );
+}
+
+} /* namespace CVC4 */
diff --git a/src/util/integer_gmp_imp.h b/src/util/integer_gmp_imp.h
new file mode 100644
index 0000000..5af902a
--- /dev/null
+++ b/src/util/integer_gmp_imp.h
@@ -0,0 +1,510 @@
+/*********************                                                        */
+/*! \file integer_gmp_imp.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Liana Hadarean
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A multiprecision integer constant; wraps a GMP multiprecision
+ ** integer.
+ **
+ ** A multiprecision integer constant; wraps a GMP multiprecision integer.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__INTEGER_H
+#define __CVC4__INTEGER_H
+
+#include <string>
+#include <iosfwd>
+#include <limits>
+
+#include "base/exception.h"
+#include "util/gmp_util.h"
+
+namespace CVC4 {
+
+class Rational;
+
+class CVC4_PUBLIC Integer {
+private:
+  /**
+   * Stores the value of the rational is stored in a C++ GMP integer class.
+   * Using this instead of mpz_t allows for easier destruction.
+   */
+  mpz_class d_value;
+
+  /**
+   * Gets a reference to the gmp data that backs up the integer.
+   * Only accessible to friend classes.
+   */
+  const mpz_class& get_mpz() const { return d_value; }
+
+  /**
+   * Constructs an Integer by copying a GMP C++ primitive.
+   */
+  Integer(const mpz_class& val) : d_value(val) {}
+
+public:
+
+  /** Constructs a rational with the value 0. */
+  Integer() : d_value(0){}
+
+  /**
+   * Constructs a Integer from a C string.
+   * Throws std::invalid_argument if the string is not a valid rational.
+   * For more information about what is a valid rational string,
+   * see GMP's documentation for mpq_set_str().
+   */
+  explicit Integer(const char* s, unsigned base = 10);
+  explicit Integer(const std::string& s, unsigned base = 10);
+
+  Integer(const Integer& q) : d_value(q.d_value) {}
+
+  Integer(  signed int z) : d_value(z) {}
+  Integer(unsigned int z) : d_value(z) {}
+  Integer(  signed long int z) : d_value(z) {}
+  Integer(unsigned long int z) : d_value(z) {}
+
+#ifdef CVC4_NEED_INT64_T_OVERLOADS
+  Integer( int64_t z) : d_value(static_cast<long>(z)) {}
+  Integer(uint64_t z) : d_value(static_cast<unsigned long>(z)) {}
+#endif /* CVC4_NEED_INT64_T_OVERLOADS */
+
+  ~Integer() {}
+
+  Integer& operator=(const Integer& x){
+    if(this == &x) return *this;
+    d_value = x.d_value;
+    return *this;
+  }
+
+  bool operator==(const Integer& y) const {
+    return d_value == y.d_value;
+  }
+
+  Integer operator-() const {
+    return Integer(-(d_value));
+  }
+
+
+  bool operator!=(const Integer& y) const {
+    return d_value != y.d_value;
+  }
+
+  bool operator< (const Integer& y) const {
+    return d_value < y.d_value;
+  }
+
+  bool operator<=(const Integer& y) const {
+    return d_value <= y.d_value;
+  }
+
+  bool operator> (const Integer& y) const {
+    return d_value > y.d_value;
+  }
+
+  bool operator>=(const Integer& y) const {
+    return d_value >= y.d_value;
+  }
+
+
+  Integer operator+(const Integer& y) const {
+    return Integer( d_value + y.d_value );
+  }
+  Integer& operator+=(const Integer& y) {
+    d_value += y.d_value;
+    return *this;
+  }
+
+  Integer operator-(const Integer& y) const {
+    return Integer( d_value - y.d_value );
+  }
+  Integer& operator-=(const Integer& y) {
+    d_value -= y.d_value;
+    return *this;
+  }
+
+  Integer operator*(const Integer& y) const {
+    return Integer( d_value * y.d_value );
+  }
+  Integer& operator*=(const Integer& y) {
+    d_value *= y.d_value;
+    return *this;
+  }
+
+
+  Integer bitwiseOr(const Integer& y) const {
+    mpz_class result;
+    mpz_ior(result.get_mpz_t(), d_value.get_mpz_t(), y.d_value.get_mpz_t());
+    return Integer(result);
+  }
+
+  Integer bitwiseAnd(const Integer& y) const {
+    mpz_class result;
+    mpz_and(result.get_mpz_t(), d_value.get_mpz_t(), y.d_value.get_mpz_t());
+    return Integer(result);
+  }
+
+  Integer bitwiseXor(const Integer& y) const {
+    mpz_class result;
+    mpz_xor(result.get_mpz_t(), d_value.get_mpz_t(), y.d_value.get_mpz_t());
+    return Integer(result);
+  }
+
+  Integer bitwiseNot() const {
+    mpz_class result;
+    mpz_com(result.get_mpz_t(), d_value.get_mpz_t());
+    return Integer(result);
+  }
+
+  /**
+   * Return this*(2^pow).
+   */
+  Integer multiplyByPow2(uint32_t pow) const{
+    mpz_class result;
+    mpz_mul_2exp(result.get_mpz_t(), d_value.get_mpz_t(), pow);
+    return Integer( result );
+  }
+
+  /**
+   * Returns the Integer obtained by setting the ith bit of the
+   * current Integer to 1.
+   */
+  Integer setBit(uint32_t i) const {
+    mpz_class res = d_value;
+    mpz_setbit(res.get_mpz_t(), i);
+    return Integer(res);
+  }
+
+  bool isBitSet(uint32_t i) const {
+    return !extractBitRange(1, i).isZero();
+  }
+
+  /**
+   * Returns the integer with the binary representation of size bits
+   * extended with amount 1's
+   */
+  Integer oneExtend(uint32_t size, uint32_t amount) const;
+
+  uint32_t toUnsignedInt() const {
+    return  mpz_get_ui(d_value.get_mpz_t());
+  }
+
+  /** See GMP Documentation. */
+  Integer extractBitRange(uint32_t bitCount, uint32_t low) const {
+    // bitCount = high-low+1
+    uint32_t high = low + bitCount-1;
+    //— Function: void mpz_fdiv_r_2exp (mpz_t r, mpz_t n, mp_bitcnt_t b)
+    mpz_class rem, div;
+    mpz_fdiv_r_2exp(rem.get_mpz_t(), d_value.get_mpz_t(), high+1);
+    mpz_fdiv_q_2exp(div.get_mpz_t(), rem.get_mpz_t(), low);
+
+    return Integer(div);
+  }
+
+  /**
+   * Returns the floor(this / y)
+   */
+  Integer floorDivideQuotient(const Integer& y) const {
+    mpz_class q;
+    mpz_fdiv_q(q.get_mpz_t(), d_value.get_mpz_t(), y.d_value.get_mpz_t());
+    return Integer( q );
+  }
+
+  /**
+   * Returns r == this - floor(this/y)*y
+   */
+  Integer floorDivideRemainder(const Integer& y) const {
+    mpz_class r;
+    mpz_fdiv_r(r.get_mpz_t(), d_value.get_mpz_t(), y.d_value.get_mpz_t());
+    return Integer( r );
+  }
+
+  /**
+   * Computes a floor quotient and remainder for x divided by y.
+   */
+  static void floorQR(Integer& q, Integer& r, const Integer& x, const Integer& y) {
+    mpz_fdiv_qr(q.d_value.get_mpz_t(), r.d_value.get_mpz_t(), x.d_value.get_mpz_t(), y.d_value.get_mpz_t());
+  }
+
+  /**
+   * Returns the ceil(this / y)
+   */
+  Integer ceilingDivideQuotient(const Integer& y) const {
+    mpz_class q;
+    mpz_cdiv_q(q.get_mpz_t(), d_value.get_mpz_t(), y.d_value.get_mpz_t());
+    return Integer( q );
+  }
+
+  /**
+   * Returns the ceil(this / y)
+   */
+  Integer ceilingDivideRemainder(const Integer& y) const {
+    mpz_class r;
+    mpz_cdiv_r(r.get_mpz_t(), d_value.get_mpz_t(), y.d_value.get_mpz_t());
+    return Integer( r );
+  }
+
+  /**
+   * Computes a quoitent and remainder according to Boute's Euclidean definition.
+   * euclidianDivideQuotient, euclidianDivideRemainder.
+   *
+   * Boute, Raymond T. (April 1992).
+   * The Euclidean definition of the functions div and mod.
+   * ACM Transactions on Programming Languages and Systems (TOPLAS)
+   * ACM Press. 14 (2): 127 - 144. doi:10.1145/128861.128862.
+   */
+  static void euclidianQR(Integer& q, Integer& r, const Integer& x, const Integer& y) {
+    // compute the floor and then fix the value up if needed.
+    floorQR(q,r,x,y);
+
+    if(r.strictlyNegative()){
+      // if r < 0
+      // abs(r) < abs(y)
+      // - abs(y) < r < 0, then 0 < r + abs(y) < abs(y)
+      // n = y * q + r
+      // n = y * q - abs(y) + r + abs(y)
+      if(r.sgn() >= 0){
+        // y = abs(y)
+        // n = y * q - y + r + y
+        // n = y * (q-1) + (r+y)
+        q -= 1;
+        r += y;
+      }else{
+        // y = -abs(y)
+        // n = y * q + y + r - y
+        // n = y * (q+1) + (r-y)
+        q += 1;
+        r -= y;
+      }
+    }
+  }
+  /**
+   * Returns the quoitent according to Boute's Euclidean definition.
+   * See the documentation for euclidianQR.
+   */
+  Integer euclidianDivideQuotient(const Integer& y) const {
+    Integer q,r;
+    euclidianQR(q,r, *this, y);
+    return q;
+  }
+
+  /**
+   * Returns the remainfing according to Boute's Euclidean definition.
+   * See the documentation for euclidianQR.
+   */
+  Integer euclidianDivideRemainder(const Integer& y) const {
+    Integer q,r;
+    euclidianQR(q,r, *this, y);
+    return r;
+  }
+
+
+  /**
+   * If y divides *this, then exactQuotient returns (this/y)
+   */
+  Integer exactQuotient(const Integer& y) const;
+
+  /**
+   * Returns y mod 2^exp
+   */
+  Integer modByPow2(uint32_t exp) const {
+    mpz_class res;
+    mpz_fdiv_r_2exp(res.get_mpz_t(), d_value.get_mpz_t(), exp);
+    return Integer(res);
+  }
+
+  /**
+   * Returns y / 2^exp
+   */
+  Integer divByPow2(uint32_t exp) const {
+    mpz_class res;
+    mpz_fdiv_q_2exp(res.get_mpz_t(), d_value.get_mpz_t(), exp);
+    return Integer(res);
+  }
+
+
+  int sgn() const {
+    return mpz_sgn(d_value.get_mpz_t());
+  }
+
+  inline bool strictlyPositive() const {
+    return sgn() > 0;
+  }
+
+  inline bool strictlyNegative() const {
+    return sgn() < 0;
+  }
+
+  inline bool isZero() const {
+    return sgn() == 0;
+  }
+
+  bool isOne() const {
+    return mpz_cmp_si(d_value.get_mpz_t(), 1) == 0;
+  }
+
+  bool isNegativeOne() const {
+    return mpz_cmp_si(d_value.get_mpz_t(), -1) == 0;
+  }
+
+  /**
+   * Raise this Integer to the power <code>exp</code>.
+   *
+   * @param exp the exponent
+   */
+  Integer pow(unsigned long int exp) const {
+    mpz_class result;
+    mpz_pow_ui(result.get_mpz_t(), d_value.get_mpz_t(), exp);
+    return Integer(result);
+  }
+
+  /**
+   * Return the greatest common divisor of this integer with another.
+   */
+  Integer gcd(const Integer& y) const {
+    mpz_class result;
+    mpz_gcd(result.get_mpz_t(), d_value.get_mpz_t(), y.d_value.get_mpz_t());
+    return Integer(result);
+  }
+
+  /**
+   * Return the least common multiple of this integer with another.
+   */
+  Integer lcm(const Integer& y) const {
+    mpz_class result;
+    mpz_lcm(result.get_mpz_t(), d_value.get_mpz_t(), y.d_value.get_mpz_t());
+    return Integer(result);
+  }
+
+  /**
+   * All non-zero integers z, z.divide(0)
+   * ! zero.divides(zero)
+   */
+  bool divides(const Integer& y) const {
+    int res = mpz_divisible_p(y.d_value.get_mpz_t(), d_value.get_mpz_t());
+    return res != 0;
+  }
+
+  /**
+   * Return the absolute value of this integer.
+   */
+  Integer abs() const {
+    return d_value >= 0 ? *this : -*this;
+  }
+
+  std::string toString(int base = 10) const{
+    return d_value.get_str(base);
+  }
+
+  bool fitsSignedInt() const;
+
+  bool fitsUnsignedInt() const;
+
+  signed int getSignedInt() const;
+
+  unsigned int getUnsignedInt() const;
+
+  bool fitsSignedLong() const;
+
+  bool fitsUnsignedLong() const;
+
+  long getLong() const {
+    long si = d_value.get_si();
+    // ensure there wasn't overflow
+    CheckArgument(mpz_cmp_si(d_value.get_mpz_t(), si) == 0, this,
+                 "Overflow detected in Integer::getLong().");
+    return si;
+  }
+
+  unsigned long getUnsignedLong() const {
+    unsigned long ui = d_value.get_ui();
+    // ensure there wasn't overflow
+    CheckArgument(mpz_cmp_ui(d_value.get_mpz_t(), ui) == 0, this,
+                  "Overflow detected in Integer::getUnsignedLong().");
+    return ui;
+  }
+
+  /**
+   * Computes the hash of the node from the first word of the
+   * numerator, the denominator.
+   */
+  size_t hash() const {
+    return gmpz_hash(d_value.get_mpz_t());
+  }
+
+  /**
+   * Returns true iff bit n is set.
+   *
+   * @param n the bit to test (0 == least significant bit)
+   * @return true if bit n is set in this integer; false otherwise
+   */
+  bool testBit(unsigned n) const {
+    return mpz_tstbit(d_value.get_mpz_t(), n);
+  }
+
+  /**
+   * Returns k if the integer is equal to 2^(k-1)
+   * @return k if the integer is equal to 2^(k-1) and 0 otherwise
+   */
+  unsigned isPow2() const {
+    if (d_value <= 0) return 0;
+    // check that the number of ones in the binary representation is 1
+    if (mpz_popcount(d_value.get_mpz_t()) == 1) {
+      // return the index of the first one plus 1
+      return mpz_scan1(d_value.get_mpz_t(), 0) + 1;
+    }
+    return 0; 
+  }
+
+  
+  /**
+   * If x != 0, returns the smallest n s.t. 2^{n-1} <= abs(x) < 2^{n}.
+   * If x == 0, returns 1.
+   */
+  size_t length() const {
+    if(sgn() == 0){
+      return 1;
+    }else{
+      return mpz_sizeinbase(d_value.get_mpz_t(),2);
+    }
+  }
+
+  static void extendedGcd(Integer& g, Integer& s, Integer& t, const Integer& a, const Integer& b){
+    //see the documentation for:
+    //mpz_gcdext (mpz_t g, mpz_t s, mpz_t t, mpz_t a, mpz_t b);
+    mpz_gcdext (g.d_value.get_mpz_t(), s.d_value.get_mpz_t(), t.d_value.get_mpz_t(), a.d_value.get_mpz_t(), b.d_value.get_mpz_t());
+  }
+
+  /** Returns a reference to the minimum of two integers. */
+  static const Integer& min(const Integer& a, const Integer& b){
+    return (a <=b ) ? a : b;
+  }
+
+  /** Returns a reference to the maximum of two integers. */
+  static const Integer& max(const Integer& a, const Integer& b){
+    return (a >= b ) ? a : b;
+  }
+
+  friend class CVC4::Rational;
+};/* class Integer */
+
+struct IntegerHashFunction {
+  inline size_t operator()(const CVC4::Integer& i) const {
+    return i.hash();
+  }
+};/* struct IntegerHashFunction */
+
+inline std::ostream& operator<<(std::ostream& os, const Integer& n) {
+  return os << n.toString();
+}
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__INTEGER_H */
diff --git a/src/util/maybe.h b/src/util/maybe.h
new file mode 100644
index 0000000..7ede6f5
--- /dev/null
+++ b/src/util/maybe.h
@@ -0,0 +1,86 @@
+/*********************                                                        */
+/*! \file maybe.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief This provides a templated Maybe construct.
+ **
+ ** This class provides a templated Maybe<T> construct.
+ ** This follows the rough pattern of the Maybe monad in haskell.
+ ** A Maybe is an algebraic type that is either Nothing | Just T
+ **
+ ** T must support T() and operator=.
+ **
+ ** This has a couple of uses:
+ ** - There is no reasonable value or particularly clean way to represent
+ **   Nothing using a value of T
+ ** - High level of assurance that a value is not used before it is set.
+ **/
+#include "cvc4_private.h"
+
+#pragma once
+
+#include <ostream>
+
+#include "base/exception.h"
+
+namespace CVC4 {
+
+template <class T>
+class Maybe {
+private:
+  bool d_just;
+  T d_value;
+
+public:
+  Maybe() : d_just(false), d_value(){}
+  Maybe(const T& val): d_just(true), d_value(val){}
+
+  Maybe& operator=(const T& v){
+    d_just = true;
+    d_value = v;
+    return *this;
+  }
+
+  inline bool nothing() const { return !d_just; }
+  inline bool just() const { return d_just; }
+
+  void clear() {
+    if(just()){
+      d_just = false;
+      d_value = T();
+    }
+  }
+
+  T& value() {
+    Assert(just(), "Maybe::value() requires the maybe to be set.");
+    return d_value;
+  }
+  const T& constValue() const {
+    Assert(just(), "Maybe::constValue() requires the maybe to be set.");
+    return d_value;
+  }
+
+  operator const T&() const { return constValue(); }
+};
+
+template <class T>
+inline std::ostream& operator<<(std::ostream& out, const Maybe<T>& m){
+  out << "{";
+  if(m.nothing()){
+    out << "Nothing";
+  }else{
+    out << "Just ";
+    out << m.constValue();
+  }
+  out << "}";
+  return out;
+}
+
+}/* CVC4 namespace */
diff --git a/src/util/ntuple.h b/src/util/ntuple.h
new file mode 100644
index 0000000..21af4f4
--- /dev/null
+++ b/src/util/ntuple.h
@@ -0,0 +1,98 @@
+/*********************                                                        */
+/*! \file ntuple.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Similar to std::pair<>, for triples and quadruples
+ **
+ ** Similar to std::pair<>, for triples and quadruples.  Once we move to c++0x, this
+ ** can be removed in favor of (standard-provided) N-ary tuples.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__NTUPLE_H
+#define __CVC4__NTUPLE_H
+
+namespace CVC4 {
+
+template <class T1, class T2, class T3>
+class triple {
+public:
+  T1 first;
+  T2 second;
+  T3 third;
+  triple() {}
+  triple(const T1& t1, const T2& t2, const T3& t3) :
+    first(t1),
+    second(t2),
+    third(t3) {
+  }
+};/* class triple<> */
+
+template <class T1, class T2, class T3>
+inline triple<T1, T2, T3>
+make_triple(const T1& t1, const T2& t2, const T3& t3) {
+  return triple<T1, T2, T3>(t1, t2, t3);
+}/* make_triple() */
+
+template <class T1, class T2, class T3, class T4>
+class quad {
+public:
+  T1 first;
+  T2 second;
+  T3 third;
+  T4 fourth;
+  quad() {}
+  quad(const T1& t1, const T2& t2, const T3& t3, const T4& t4) :
+    first(t1),
+    second(t2),
+    third(t3),
+    fourth(t4) {
+  }
+};/* class quad<> */
+
+template <class T1, class T2, class T3, class T4>
+bool operator==(const quad<T1,T2,T3,T4>& x,
+                const quad<T1,T2,T3,T4>& y) {
+  return (x.first==y.first   && x.second==y.second &&
+          x.third == y.third && x.fourth==y.fourth);
+}
+
+template <class T1, class T2, class T3, class T4>
+bool operator<(const quad<T1,T2,T3,T4>& x,
+                const quad<T1,T2,T3,T4>& y) {
+  if(x.first< y.first) {
+    return true;
+  }
+  else if (x.first == y.first) {
+    if(x.second < y.second) {
+      return true;
+    }
+    else if(y.second == y.second) {
+      if(x.third < y.third) {
+        return true;
+      }
+      else if (x.fourth < y.fourth) {
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+template <class T1, class T2, class T3, class T4>
+inline quad<T1, T2, T3, T4>
+make_quad(const T1& t1, const T2& t2, const T3& t3, const T4& t4) {
+  return quad<T1, T2, T3, T4>(t1, t2, t3, t4);
+}/* make_quad() */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__NTUPLE_H */
diff --git a/src/util/proof.h b/src/util/proof.h
new file mode 100644
index 0000000..b4a8a3d
--- /dev/null
+++ b/src/util/proof.h
@@ -0,0 +1,43 @@
+/*********************                                                        */
+/*! \file proof.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__PROOF_H
+#define __CVC4__PROOF_H
+
+#include <iosfwd>
+#include <ext/hash_map>
+
+namespace CVC4 {
+
+class Expr;
+class ProofLetCount;
+struct ExprHashFunction;
+
+typedef __gnu_cxx::hash_map<Expr, ProofLetCount, ExprHashFunction> ProofLetMap;
+
+class CVC4_PUBLIC Proof {
+public:
+  virtual ~Proof() { }
+  virtual void toStream(std::ostream& out) = 0;
+  virtual void toStream(std::ostream& out, const ProofLetMap& map) = 0;
+};/* class Proof */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__PROOF_H */
diff --git a/src/util/proof.i b/src/util/proof.i
new file mode 100644
index 0000000..22dff10
--- /dev/null
+++ b/src/util/proof.i
@@ -0,0 +1,5 @@
+%{
+#include "util/proof.h"
+%}
+
+%include "util/proof.h"
diff --git a/src/util/rational.h.in b/src/util/rational.h.in
new file mode 100644
index 0000000..08c4003
--- /dev/null
+++ b/src/util/rational.h.in
@@ -0,0 +1,42 @@
+/*********************                                                        */
+/*! \file rational.h.in
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A multi-precision rational constant
+ **
+ ** A multi-precision rational constant.
+ **/
+
+// these gestures are used to avoid a public header dependence on cvc4autoconfig.h
+
+#if @CVC4_NEED_INT64_T_OVERLOADS@
+#  define CVC4_NEED_INT64_T_OVERLOADS
+#endif
+
+#if /* use CLN */ @CVC4_USE_CLN_IMP@
+#  define CVC4_CLN_IMP
+#endif /* @CVC4_USE_CLN_IMP@ */
+#if /* use GMP */ @CVC4_USE_GMP_IMP@
+#  define CVC4_GMP_IMP
+#endif /* @CVC4_USE_GMP_IMP@ */
+
+#ifdef CVC4_CLN_IMP
+#  include "util/rational_cln_imp.h"
+#  if SWIG
+     %include "util/rational_cln_imp.h"
+#  endif /* SWIG */
+#endif /* CVC4_CLN_IMP */
+
+#ifdef CVC4_GMP_IMP
+#  include "util/rational_gmp_imp.h"
+#  if SWIG
+     %include "util/rational_gmp_imp.h"
+#  endif /* SWIG */
+#endif /* CVC4_GMP_IMP */
diff --git a/src/util/rational.i b/src/util/rational.i
new file mode 100644
index 0000000..a9e3e23
--- /dev/null
+++ b/src/util/rational.i
@@ -0,0 +1,35 @@
+%{
+#include "util/rational.h"
+%}
+
+%ignore CVC4::RationalFromDoubleException::RationalFromDoubleException(double);
+
+%ignore CVC4::Rational::Rational(int);
+%ignore CVC4::Rational::Rational(unsigned int);
+%ignore CVC4::Rational::Rational(int, int);
+%ignore CVC4::Rational::Rational(unsigned int, unsigned int);
+%ignore CVC4::Rational::Rational(const std::string&);
+%ignore CVC4::Rational::Rational(const std::string&, unsigned int);
+
+%rename(assign) CVC4::Rational::operator=(const Rational&);
+%rename(equals) CVC4::Rational::operator==(const Rational&) const;
+%ignore CVC4::Rational::operator!=(const Rational&) const;
+%rename(plus) CVC4::Rational::operator+(const Rational&) const;
+%rename(minus) CVC4::Rational::operator-() const;
+%rename(minus) CVC4::Rational::operator-(const Rational&) const;
+%rename(times) CVC4::Rational::operator*(const Rational&) const;
+%rename(dividedBy) CVC4::Rational::operator/(const Rational&) const;
+%rename(plusAssign) CVC4::Rational::operator+=(const Rational&);
+%rename(minusAssign) CVC4::Rational::operator-=(const Rational&);
+%rename(timesAssign) CVC4::Rational::operator*=(const Rational&);
+%rename(dividedByAssign) CVC4::Rational::operator/=(const Rational&);
+%rename(less) CVC4::Rational::operator<(const Rational&) const;
+%rename(lessEqual) CVC4::Rational::operator<=(const Rational&) const;
+%rename(greater) CVC4::Rational::operator>(const Rational&) const;
+%rename(greaterEqual) CVC4::Rational::operator>=(const Rational&) const;
+
+%rename(apply) CVC4::RationalHashFunction::operator()(const CVC4::Rational&) const;
+
+%ignore CVC4::operator<<(std::ostream&, const Rational&);
+
+%include "util/rational.h"
diff --git a/src/util/rational_cln_imp.cpp b/src/util/rational_cln_imp.cpp
new file mode 100644
index 0000000..bee9445
--- /dev/null
+++ b/src/util/rational_cln_imp.cpp
@@ -0,0 +1,112 @@
+/*********************                                                        */
+/*! \file rational_cln_imp.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Christopher L. Conway, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A multi-precision rational constant.
+ **
+ ** A multi-precision rational constant.
+ **/
+#include "util/rational.h"
+
+#include <sstream>
+#include <string>
+
+#include "cvc4autoconfig.h"
+
+#ifndef CVC4_CLN_IMP
+#  error "This source should only ever be built if CVC4_CLN_IMP is on !"
+#endif /* CVC4_CLN_IMP */
+
+#include "base/cvc4_assert.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+/* Computes a rational given a decimal string. The rational
+ * version of <code>xxx.yyy</code> is <code>xxxyyy/(10^3)</code>.
+ */
+Rational Rational::fromDecimal(const std::string& dec) {
+  // Find the decimal point, if there is one
+  string::size_type i( dec.find(".") );
+  if( i != string::npos ) {
+    /* Erase the decimal point, so we have just the numerator. */
+    Integer numerator( string(dec).erase(i,1) );
+
+    /* Compute the denominator: 10 raise to the number of decimal places */
+    int decPlaces = dec.size() - (i + 1);
+    Integer denominator( Integer(10).pow(decPlaces) );
+
+    return Rational( numerator, denominator );
+  } else {
+    /* No decimal point, assume it's just an integer. */
+    return Rational( dec );
+  }
+}
+
+std::ostream& operator<<(std::ostream& os, const Rational& q){
+  return os << q.toString();
+}
+
+
+
+/** Equivalent to calling (this->abs()).cmp(b.abs()) */
+int Rational::absCmp(const Rational& q) const{
+  const Rational& r = *this;
+  int rsgn = r.sgn();
+  int qsgn = q.sgn();
+  if(rsgn == 0){
+    return (qsgn == 0) ? 0 : -1;
+  }else if(qsgn == 0){
+    Assert(rsgn != 0);
+    return 1;
+  }else if((rsgn > 0) && (qsgn > 0)){
+    return r.cmp(q);
+  }else if((rsgn < 0) && (qsgn < 0)){
+    // if r < q < 0, q.cmp(r) = +1, (r.abs()).cmp(q.abs()) = +1
+    // if q < r < 0, q.cmp(r) = -1, (r.abs()).cmp(q.abs()) = -1
+    // if q = r < 0, q.cmp(r) =  0, (r.abs()).cmp(q.abs()) =  0
+    return q.cmp(r);
+  }else if((rsgn < 0) && (qsgn > 0)){
+    Rational rpos = -r;
+    return rpos.cmp(q);
+  }else {
+    Assert(rsgn > 0 && (qsgn < 0));
+    Rational qpos = -q;
+    return r.cmp(qpos);
+  }
+}
+
+Rational Rational::fromDouble(double d) throw(RationalFromDoubleException){
+  try{
+    cln::cl_DF fromD = d;
+    Rational q;
+    q.d_value = cln::rationalize(fromD);
+    return q;
+  }catch(cln::floating_point_underflow_exception& fpue){
+    throw RationalFromDoubleException(d);
+  }catch(cln::floating_point_nan_exception& fpne){
+    throw RationalFromDoubleException(d);
+  }catch(cln::floating_point_overflow_exception& fpoe){
+    throw RationalFromDoubleException(d);
+  }
+}
+
+RationalFromDoubleException::RationalFromDoubleException(double d) throw()
+  : Exception()
+{
+  std::stringstream ss;
+  ss << "RationalFromDoubleException(";
+  ss << d;
+  ss << ")";
+  setMessage(ss.str());
+}
+
+} /* namespace CVC4 */
diff --git a/src/util/rational_cln_imp.h b/src/util/rational_cln_imp.h
new file mode 100644
index 0000000..9b4a8ef
--- /dev/null
+++ b/src/util/rational_cln_imp.h
@@ -0,0 +1,371 @@
+/*********************                                                        */
+/*! \file rational_cln_imp.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Multiprecision rational constants; wraps a CLN multiprecision
+ ** rational.
+ **
+ ** Multiprecision rational constants; wraps a CLN multiprecision rational.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__RATIONAL_H
+#define __CVC4__RATIONAL_H
+
+#include <gmp.h>
+#include <string>
+#include <sstream>
+#include <cassert>
+#include <cln/rational.h>
+#include <cln/input.h>
+#include <cln/io.h>
+#include <cln/output.h>
+#include <cln/rational_io.h>
+#include <cln/number_io.h>
+#include <cln/dfloat.h>
+#include <cln/real.h>
+
+#include "base/exception.h"
+#include "util/integer.h"
+
+namespace CVC4 {
+
+class CVC4_PUBLIC RationalFromDoubleException : public Exception {
+public:
+  RationalFromDoubleException(double d) throw();
+};
+
+/**
+ ** A multi-precision rational constant.
+ ** This stores the rational as a pair of multi-precision integers,
+ ** one for the numerator and one for the denominator.
+ ** The number is always stored so that the gcd of the numerator and denominator
+ ** is 1.  (This is referred to as referred to as canonical form in GMP's
+ ** literature.) A consequence is that that the numerator and denominator may be
+ ** different than the values used to construct the Rational.
+ **
+ ** NOTE: The correct way to create a Rational from an int is to use one of the
+ ** int numerator/int denominator constructors with the denominator 1.  Trying
+ ** to construct a Rational with a single int, e.g., Rational(0), will put you
+ ** in danger of invoking the char* constructor, from whence you will segfault.
+ **/
+
+class CVC4_PUBLIC Rational {
+private:
+  /**
+   * Stores the value of the rational is stored in a C++ GMP rational class.
+   * Using this instead of mpq_t allows for easier destruction.
+   */
+  cln::cl_RA d_value;
+
+  /**
+   * Constructs a Rational from a mpq_class object.
+   * Does a deep copy.
+   * Assumes that the value is in canonical form, and thus does not
+   * have to call canonicalize() on the value.
+   */
+  //Rational(const mpq_class& val) : d_value(val) {  }
+  Rational(const cln::cl_RA& val) : d_value(val) {  }
+
+public:
+
+  /**
+   * Creates a rational from a decimal string (e.g., <code>"1.5"</code>).
+   *
+   * @param dec a string encoding a decimal number in the format
+   * <code>[0-9]*\.[0-9]*</code>
+   */
+  static Rational fromDecimal(const std::string& dec);
+
+  /** Constructs a rational with the value 0/1. */
+  Rational() : d_value(0){
+  }
+
+  /**
+   * Constructs a Rational from a C string in a given base (defaults to 10).
+   * Throws std::invalid_argument if the string is not a valid rational.
+   * For more information about what is a valid rational string,
+   * see GMP's documentation for mpq_set_str().
+   */
+  explicit Rational(const char* s, unsigned base = 10) throw (std::invalid_argument){
+    cln::cl_read_flags flags;
+
+    flags.syntax = cln::syntax_rational;
+    flags.lsyntax = cln::lsyntax_standard;
+    flags.rational_base = base;
+    try{
+      d_value = read_rational(flags, s, NULL, NULL);
+    }catch(...){
+      std::stringstream ss;
+      ss << "Rational() failed to parse value \"" <<s << "\" in base=" <<base;
+      throw std::invalid_argument(ss.str());
+    }
+  }
+  Rational(const std::string& s, unsigned base = 10) throw (std::invalid_argument){
+    cln::cl_read_flags flags;
+
+    flags.syntax = cln::syntax_rational;
+    flags.lsyntax = cln::lsyntax_standard;
+    flags.rational_base = base;
+    try{
+      d_value = read_rational(flags, s.c_str(), NULL, NULL);
+    }catch(...){
+      std::stringstream ss;
+      ss << "Rational() failed to parse value \"" <<s << "\" in base=" <<base;
+      throw std::invalid_argument(ss.str());
+    }
+  }
+
+  /**
+   * Creates a Rational from another Rational, q, by performing a deep copy.
+   */
+  Rational(const Rational& q) : d_value(q.d_value) { }
+
+  /**
+   * Constructs a canonical Rational from a numerator.
+   */
+  Rational(signed int n) : d_value((signed long int)n) { }
+  Rational(unsigned int n) : d_value((unsigned long int)n) { }
+  Rational(signed long int n) : d_value(n) { }
+  Rational(unsigned long int n) : d_value(n) { }
+
+#ifdef CVC4_NEED_INT64_T_OVERLOADS
+  Rational(int64_t n) : d_value(static_cast<long>(n)) { }
+  Rational(uint64_t n) : d_value(static_cast<unsigned long>(n)) { }
+#endif /* CVC4_NEED_INT64_T_OVERLOADS */
+
+  /**
+   * Constructs a canonical Rational from a numerator and denominator.
+   */
+  Rational(signed int n, signed int d) : d_value((signed long int)n) {
+    d_value /= cln::cl_I(d);
+  }
+  Rational(unsigned int n, unsigned int d) : d_value((unsigned long int)n) {
+    d_value /= cln::cl_I(d);
+  }
+  Rational(signed long int n, signed long int d) : d_value(n) {
+    d_value /= cln::cl_I(d);
+  }
+  Rational(unsigned long int n, unsigned long int d) : d_value(n) {
+    d_value /= cln::cl_I(d);
+  }
+
+#ifdef CVC4_NEED_INT64_T_OVERLOADS
+  Rational(int64_t n, int64_t d) : d_value(static_cast<long>(n)) {
+    d_value /= cln::cl_I(d);
+  }
+  Rational(uint64_t n, uint64_t d) : d_value(static_cast<unsigned long>(n)) {
+    d_value /= cln::cl_I(d);
+  }
+#endif /* CVC4_NEED_INT64_T_OVERLOADS */
+
+  Rational(const Integer& n, const Integer& d) :
+    d_value(n.get_cl_I())
+  {
+    d_value /= d.get_cl_I();
+  }
+  Rational(const Integer& n) : d_value(n.get_cl_I()){  }
+
+  ~Rational() {}
+
+
+  /**
+   * Returns the value of numerator of the Rational.
+   * Note that this makes a deep copy of the numerator.
+   */
+  Integer getNumerator() const {
+    return Integer(cln::numerator(d_value));
+  }
+
+  /**
+   * Returns the value of denominator of the Rational.
+   * Note that this makes a deep copy of the denominator.
+   */
+  Integer getDenominator() const {
+    return Integer(cln::denominator(d_value));
+  }
+
+  /** Return an exact rational for a double d. */
+  static Rational fromDouble(double d) throw(RationalFromDoubleException);
+
+  /**
+   * Get a double representation of this Rational, which is
+   * approximate: truncation may occur, overflow may result in
+   * infinity, and underflow may result in zero.
+   */
+  double getDouble() const {
+    return cln::double_approx(d_value);
+  }
+
+  Rational inverse() const {
+    return Rational(cln::recip(d_value));
+  }
+
+  int cmp(const Rational& x) const {
+    //Don't use mpq_class's cmp() function.
+    //The name ends up conflicting with this function.
+    return cln::compare(d_value, x.d_value);
+  }
+
+
+  int sgn() const {
+    if(cln::zerop(d_value)){
+       return 0;
+    }else if(cln::minusp(d_value)){
+       return -1;
+    }else{
+      assert(cln::plusp(d_value));
+      return 1;
+    }
+  }
+
+  bool isZero() const {
+    return cln::zerop(d_value);
+  }
+
+  bool isOne() const {
+    return d_value == 1;
+  }
+
+  bool isNegativeOne() const {
+    return d_value == -1;
+  }
+
+  Rational abs() const {
+    if(sgn() < 0){
+      return -(*this);
+    }else{
+      return *this;
+    }
+  }
+
+  bool isIntegral() const{
+    return getDenominator() == 1;
+  }
+
+  Integer floor() const {
+    return Integer(cln::floor1(d_value));
+  }
+
+  Integer ceiling() const {
+    return Integer(cln::ceiling1(d_value));
+  }
+
+  Rational floor_frac() const {
+    return (*this) - Rational(floor());
+  }
+
+  Rational& operator=(const Rational& x){
+    if(this == &x) return *this;
+    d_value = x.d_value;
+    return *this;
+  }
+
+  Rational operator-() const{
+    return Rational(-(d_value));
+  }
+
+  bool operator==(const Rational& y) const {
+    return d_value == y.d_value;
+  }
+
+  bool operator!=(const Rational& y) const {
+    return d_value != y.d_value;
+  }
+
+  bool operator< (const Rational& y) const {
+    return d_value < y.d_value;
+  }
+
+  bool operator<=(const Rational& y) const {
+    return d_value <= y.d_value;
+  }
+
+  bool operator> (const Rational& y) const {
+    return d_value > y.d_value;
+  }
+
+  bool operator>=(const Rational& y) const {
+    return d_value >= y.d_value;
+  }
+
+  Rational operator+(const Rational& y) const{
+    return Rational( d_value + y.d_value );
+  }
+  Rational operator-(const Rational& y) const {
+    return Rational( d_value - y.d_value );
+  }
+
+  Rational operator*(const Rational& y) const {
+    return Rational( d_value * y.d_value );
+  }
+  Rational operator/(const Rational& y) const {
+    return Rational( d_value / y.d_value );
+  }
+
+  Rational& operator+=(const Rational& y){
+    d_value += y.d_value;
+    return (*this);
+  }
+
+  Rational& operator-=(const Rational& y){
+    d_value -= y.d_value;
+    return (*this);
+  }
+
+  Rational& operator*=(const Rational& y){
+    d_value *= y.d_value;
+    return (*this);
+  }
+
+  Rational& operator/=(const Rational& y){
+    d_value /= y.d_value;
+    return (*this);
+  }
+
+  /** Returns a string representing the rational in the given base. */
+  std::string toString(int base = 10) const {
+    cln::cl_print_flags flags;
+    flags.rational_base = base;
+    flags.rational_readably = false;
+    std::stringstream ss;
+    print_rational(ss, flags, d_value);
+    return ss.str();
+  }
+
+  /**
+   * Computes the hash of the rational from hashes of the numerator and the
+   * denominator.
+   */
+  size_t hash() const {
+    return equal_hashcode(d_value);
+  }
+
+  uint32_t complexity() const {
+    return getNumerator().length() + getDenominator().length();
+  }
+
+  /** Equivalent to calling (this->abs()).cmp(b.abs()) */
+  int absCmp(const Rational& q) const;
+
+};/* class Rational */
+
+struct RationalHashFunction {
+  inline size_t operator()(const CVC4::Rational& r) const {
+    return r.hash();
+  }
+};/* struct RationalHashFunction */
+
+CVC4_PUBLIC std::ostream& operator<<(std::ostream& os, const Rational& n);
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__RATIONAL_H */
diff --git a/src/util/rational_gmp_imp.cpp b/src/util/rational_gmp_imp.cpp
new file mode 100644
index 0000000..17bce02
--- /dev/null
+++ b/src/util/rational_gmp_imp.cpp
@@ -0,0 +1,111 @@
+/*********************                                                        */
+/*! \file rational_gmp_imp.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Christopher L. Conway, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A multi-precision rational constant.
+ **
+ ** A multi-precision rational constant.
+ **/
+#include "util/rational.h"
+
+#include <cmath>
+#include <sstream>
+#include <string>
+
+#include "cvc4autoconfig.h"
+
+#ifndef CVC4_GMP_IMP // Make sure this comes after cvc4autoconfig.h
+#  error "This source should only ever be built if CVC4_GMP_IMP is on !"
+#endif /* CVC4_GMP_IMP */
+
+#include "base/cvc4_assert.h"
+
+namespace CVC4 {
+
+std::ostream& operator<<(std::ostream& os, const Rational& q){
+  return os << q.toString();
+}
+
+
+/* Computes a rational given a decimal string. The rational
+ * version of <code>xxx.yyy</code> is <code>xxxyyy/(10^3)</code>.
+ */
+Rational Rational::fromDecimal(const std::string& dec) {
+  using std::string;
+  // Find the decimal point, if there is one
+  string::size_type i( dec.find(".") );
+  if( i != string::npos ) {
+    /* Erase the decimal point, so we have just the numerator. */
+    Integer numerator( string(dec).erase(i,1) );
+
+    /* Compute the denominator: 10 raise to the number of decimal places */
+    int decPlaces = dec.size() - (i + 1);
+    Integer denominator( Integer(10).pow(decPlaces) );
+
+    return Rational( numerator, denominator );
+  } else {
+    /* No decimal point, assume it's just an integer. */
+    return Rational( dec );
+  }
+}
+
+
+
+/** Equivalent to calling (this->abs()).cmp(b.abs()) */
+int Rational::absCmp(const Rational& q) const{
+  const Rational& r = *this;
+  int rsgn = r.sgn();
+  int qsgn = q.sgn();
+  if(rsgn == 0){
+    return (qsgn == 0) ? 0 : -1;
+  }else if(qsgn == 0){
+    Assert(rsgn != 0);
+    return 1;
+  }else if((rsgn > 0) && (qsgn > 0)){
+    return r.cmp(q);
+  }else if((rsgn < 0) && (qsgn < 0)){
+    // if r < q < 0, q.cmp(r) = +1, (r.abs()).cmp(q.abs()) = +1
+    // if q < r < 0, q.cmp(r) = -1, (r.abs()).cmp(q.abs()) = -1
+    // if q = r < 0, q.cmp(r) =  0, (r.abs()).cmp(q.abs()) =  0
+    return q.cmp(r);
+  }else if((rsgn < 0) && (qsgn > 0)){
+    Rational rpos = -r;
+    return rpos.cmp(q);
+  }else {
+    Assert(rsgn > 0 && (qsgn < 0));
+    Rational qpos = -q;
+    return r.cmp(qpos);
+  }
+}
+
+
+/** Return an exact rational for a double d. */
+Rational Rational::fromDouble(double d) throw(RationalFromDoubleException){
+  using namespace std;
+  if(isfinite(d)){
+    Rational q;
+    mpq_set_d(q.d_value.get_mpq_t(), d);
+    return q;
+  }
+
+  throw RationalFromDoubleException(d);
+}
+
+RationalFromDoubleException::RationalFromDoubleException(double d) throw()
+  : Exception()
+{
+  std::stringstream ss;
+  ss << "RationalFromDoubleException(";
+  ss << d;
+  ss << ")";
+  setMessage(ss.str());
+}
+
+} /* namespace CVC4 */
diff --git a/src/util/rational_gmp_imp.h b/src/util/rational_gmp_imp.h
new file mode 100644
index 0000000..6a1c8b4
--- /dev/null
+++ b/src/util/rational_gmp_imp.h
@@ -0,0 +1,349 @@
+/*********************                                                        */
+/*! \file rational_gmp_imp.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Dejan Jovanovic
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Multiprecision rational constants; wraps a GMP multiprecision
+ ** rational.
+ **
+ ** Multiprecision rational constants; wraps a GMP multiprecision rational.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__RATIONAL_H
+#define __CVC4__RATIONAL_H
+
+#include <gmp.h>
+#include <string>
+
+#include "base/exception.h"
+#include "util/integer.h"
+
+namespace CVC4 {
+
+class CVC4_PUBLIC RationalFromDoubleException : public Exception {
+public:
+  RationalFromDoubleException(double d) throw();
+};
+
+/**
+ ** A multi-precision rational constant.
+ ** This stores the rational as a pair of multi-precision integers,
+ ** one for the numerator and one for the denominator.
+ ** The number is always stored so that the gcd of the numerator and denominator
+ ** is 1.  (This is referred to as referred to as canonical form in GMP's
+ ** literature.) A consequence is that that the numerator and denominator may be
+ ** different than the values used to construct the Rational.
+ **
+ ** NOTE: The correct way to create a Rational from an int is to use one of the
+ ** int numerator/int denominator constructors with the denominator 1.  Trying
+ ** to construct a Rational with a single int, e.g., Rational(0), will put you
+ ** in danger of invoking the char* constructor, from whence you will segfault.
+ **/
+
+class CVC4_PUBLIC Rational {
+private:
+  /**
+   * Stores the value of the rational is stored in a C++ GMP rational class.
+   * Using this instead of mpq_t allows for easier destruction.
+   */
+  mpq_class d_value;
+
+  /**
+   * Constructs a Rational from a mpq_class object.
+   * Does a deep copy.
+   * Assumes that the value is in canonical form, and thus does not
+   * have to call canonicalize() on the value.
+   */
+  Rational(const mpq_class& val) : d_value(val) {  }
+
+public:
+
+  /**
+   * Creates a rational from a decimal string (e.g., <code>"1.5"</code>).
+   *
+   * @param dec a string encoding a decimal number in the format
+   * <code>[0-9]*\.[0-9]*</code>
+   */
+  static Rational fromDecimal(const std::string& dec);
+
+  /** Constructs a rational with the value 0/1. */
+  Rational() : d_value(0){
+    d_value.canonicalize();
+  }
+
+  /**
+   * Constructs a Rational from a C string in a given base (defaults to 10).
+   * Throws std::invalid_argument if the string is not a valid rational.
+   * For more information about what is a valid rational string,
+   * see GMP's documentation for mpq_set_str().
+   */
+  explicit Rational(const char* s, unsigned base = 10): d_value(s, base) {
+    d_value.canonicalize();
+  }
+  Rational(const std::string& s, unsigned base = 10) : d_value(s, base) {
+    d_value.canonicalize();
+  }
+
+  /**
+   * Creates a Rational from another Rational, q, by performing a deep copy.
+   */
+  Rational(const Rational& q) : d_value(q.d_value) {
+    d_value.canonicalize();
+  }
+
+  /**
+   * Constructs a canonical Rational from a numerator.
+   */
+  Rational(signed int n) : d_value(n,1) {
+    d_value.canonicalize();
+  }
+  Rational(unsigned int n) : d_value(n,1) {
+    d_value.canonicalize();
+  }
+  Rational(signed long int n) : d_value(n,1) {
+    d_value.canonicalize();
+  }
+  Rational(unsigned long int n) : d_value(n,1) {
+    d_value.canonicalize();
+  }
+
+#ifdef CVC4_NEED_INT64_T_OVERLOADS
+  Rational(int64_t n) : d_value(static_cast<long>(n), 1) {
+    d_value.canonicalize();
+  }
+  Rational(uint64_t n) : d_value(static_cast<unsigned long>(n), 1) {
+    d_value.canonicalize();
+  }
+#endif /* CVC4_NEED_INT64_T_OVERLOADS */
+
+  /**
+   * Constructs a canonical Rational from a numerator and denominator.
+   */
+  Rational(signed int n, signed int d) : d_value(n,d) {
+    d_value.canonicalize();
+  }
+  Rational(unsigned int n, unsigned int d) : d_value(n,d) {
+    d_value.canonicalize();
+  }
+  Rational(signed long int n, signed long int d) : d_value(n,d) {
+    d_value.canonicalize();
+  }
+  Rational(unsigned long int n, unsigned long int d) : d_value(n,d) {
+    d_value.canonicalize();
+  }
+
+#ifdef CVC4_NEED_INT64_T_OVERLOADS
+  Rational(int64_t n, int64_t d) : d_value(static_cast<long>(n), static_cast<long>(d)) {
+    d_value.canonicalize();
+  }
+  Rational(uint64_t n, uint64_t d) : d_value(static_cast<unsigned long>(n), static_cast<unsigned long>(d)) {
+    d_value.canonicalize();
+  }
+#endif /* CVC4_NEED_INT64_T_OVERLOADS */
+
+  Rational(const Integer& n, const Integer& d) :
+    d_value(n.get_mpz(), d.get_mpz())
+  {
+    d_value.canonicalize();
+  }
+  Rational(const Integer& n) :
+    d_value(n.get_mpz())
+  {
+    d_value.canonicalize();
+  }
+  ~Rational() {}
+
+  /**
+   * Returns the value of numerator of the Rational.
+   * Note that this makes a deep copy of the numerator.
+   */
+  Integer getNumerator() const {
+    return Integer(d_value.get_num());
+  }
+
+  /**
+   * Returns the value of denominator of the Rational.
+   * Note that this makes a deep copy of the denominator.
+   */
+  Integer getDenominator() const {
+    return Integer(d_value.get_den());
+  }
+
+  static Rational fromDouble(double d) throw(RationalFromDoubleException);
+
+  /**
+   * Get a double representation of this Rational, which is
+   * approximate: truncation may occur, overflow may result in
+   * infinity, and underflow may result in zero.
+   */
+  double getDouble() const {
+    return d_value.get_d();
+  }
+
+  Rational inverse() const {
+    return Rational(getDenominator(), getNumerator());
+  }
+
+  int cmp(const Rational& x) const {
+    //Don't use mpq_class's cmp() function.
+    //The name ends up conflicting with this function.
+    return mpq_cmp(d_value.get_mpq_t(), x.d_value.get_mpq_t());
+  }
+
+  int sgn() const {
+    return mpq_sgn(d_value.get_mpq_t());
+  }
+
+  bool isZero() const {
+    return sgn() == 0;
+  }
+
+  bool isOne() const {
+    return mpq_cmp_si(d_value.get_mpq_t(), 1, 1) == 0;
+  }
+
+  bool isNegativeOne() const {
+    return mpq_cmp_si(d_value.get_mpq_t(), -1, 1) == 0;
+  }
+
+  Rational abs() const {
+    if(sgn() < 0){
+      return -(*this);
+    }else{
+      return *this;
+    }
+  }
+
+  Integer floor() const {
+    mpz_class q;
+    mpz_fdiv_q(q.get_mpz_t(), d_value.get_num_mpz_t(), d_value.get_den_mpz_t());
+    return Integer(q);
+  }
+
+  Integer ceiling() const {
+    mpz_class q;
+    mpz_cdiv_q(q.get_mpz_t(), d_value.get_num_mpz_t(), d_value.get_den_mpz_t());
+    return Integer(q);
+  }
+
+  Rational floor_frac() const {
+    return (*this) - Rational(floor());
+  }
+
+  Rational& operator=(const Rational& x){
+    if(this == &x) return *this;
+    d_value = x.d_value;
+    return *this;
+  }
+
+  Rational operator-() const{
+    return Rational(-(d_value));
+  }
+
+  bool operator==(const Rational& y) const {
+    return d_value == y.d_value;
+  }
+
+  bool operator!=(const Rational& y) const {
+    return d_value != y.d_value;
+  }
+
+  bool operator< (const Rational& y) const {
+    return d_value < y.d_value;
+  }
+
+  bool operator<=(const Rational& y) const {
+    return d_value <= y.d_value;
+  }
+
+  bool operator> (const Rational& y) const {
+    return d_value > y.d_value;
+  }
+
+  bool operator>=(const Rational& y) const {
+    return d_value >= y.d_value;
+  }
+
+  Rational operator+(const Rational& y) const{
+    return Rational( d_value + y.d_value );
+  }
+  Rational operator-(const Rational& y) const {
+    return Rational( d_value - y.d_value );
+  }
+
+  Rational operator*(const Rational& y) const {
+    return Rational( d_value * y.d_value );
+  }
+  Rational operator/(const Rational& y) const {
+    return Rational( d_value / y.d_value );
+  }
+
+  Rational& operator+=(const Rational& y){
+    d_value += y.d_value;
+    return (*this);
+  }
+  Rational& operator-=(const Rational& y){
+    d_value -= y.d_value;
+    return (*this);
+  }
+
+  Rational& operator*=(const Rational& y){
+    d_value *= y.d_value;
+    return (*this);
+  }
+
+  Rational& operator/=(const Rational& y){
+    d_value /= y.d_value;
+    return (*this);
+  }
+
+  bool isIntegral() const{
+    return getDenominator() == 1;
+  }
+
+  /** Returns a string representing the rational in the given base. */
+  std::string toString(int base = 10) const {
+    return d_value.get_str(base);
+  }
+
+  /**
+   * Computes the hash of the rational from hashes of the numerator and the
+   * denominator.
+   */
+  size_t hash() const {
+    size_t numeratorHash = gmpz_hash(d_value.get_num_mpz_t());
+    size_t denominatorHash = gmpz_hash(d_value.get_den_mpz_t());
+
+    return numeratorHash xor denominatorHash;
+  }
+
+  uint32_t complexity() const {
+    uint32_t numLen = getNumerator().length();
+    uint32_t denLen = getDenominator().length();
+    return  numLen + denLen;
+  }
+
+  /** Equivalent to calling (this->abs()).cmp(b.abs()) */
+  int absCmp(const Rational& q) const;
+
+};/* class Rational */
+
+struct RationalHashFunction {
+  inline size_t operator()(const CVC4::Rational& r) const {
+    return r.hash();
+  }
+};/* struct RationalHashFunction */
+
+CVC4_PUBLIC std::ostream& operator<<(std::ostream& os, const Rational& n);
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__RATIONAL_H */
diff --git a/src/util/regexp.cpp b/src/util/regexp.cpp
new file mode 100644
index 0000000..a6f0de4
--- /dev/null
+++ b/src/util/regexp.cpp
@@ -0,0 +1,173 @@
+/*********************                                                        */
+/*! \file regexp.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tianyi Liang, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "util/regexp.h"
+
+#include <iomanip>
+#include <iostream>
+
+using namespace std;
+
+namespace CVC4 {
+
+void String::toInternal(const std::string &s) {
+  d_str.clear();
+  unsigned i=0;
+  while(i < s.size()) {
+    if(s[i] == '\\') {
+      i++;
+      if(i < s.size()) {
+        switch(s[i]) {
+          case 'n':  {d_str.push_back( convertCharToUnsignedInt('\n') );i++;} break;
+          case 't':  {d_str.push_back( convertCharToUnsignedInt('\t') );i++;} break;
+          case 'v':  {d_str.push_back( convertCharToUnsignedInt('\v') );i++;} break;
+          case 'b':  {d_str.push_back( convertCharToUnsignedInt('\b') );i++;} break;
+          case 'r':  {d_str.push_back( convertCharToUnsignedInt('\r') );i++;} break;
+          case 'f':  {d_str.push_back( convertCharToUnsignedInt('\f') );i++;} break;
+          case 'a':  {d_str.push_back( convertCharToUnsignedInt('\a') );i++;} break;
+          case '\\': {d_str.push_back( convertCharToUnsignedInt('\\') );i++;} break;
+          case 'x': {
+            if(i + 2 < s.size()) {
+              if(isxdigit(s[i+1]) && isxdigit(s[i+2])) {
+                d_str.push_back( convertCharToUnsignedInt( hexToDec(s[i+1]) * 16 + hexToDec(s[i+2]) ) );
+                i += 3;
+              } else {
+                throw CVC4::Exception( "Illegal String Literal: \"" + s + "\"" );
+              }
+            } else {
+              throw CVC4::Exception( "Illegal String Literal: \"" + s + "\", must have two digits after \\x" );
+            }
+          }
+          break;
+          default: {
+            if(isdigit(s[i])) {
+              int num = (int)s[i] - (int)'0';
+              bool flag = num < 4;
+              if(i+1 < s.size() && num < 8 && isdigit(s[i+1]) && s[i+1] < '8') {
+                num = num * 8 + (int)s[i+1] - (int)'0';
+                if(flag && i+2 < s.size() && isdigit(s[i+2]) && s[i+2] < '8') {
+                  num = num * 8 + (int)s[i+2] - (int)'0';
+                  d_str.push_back( convertCharToUnsignedInt((unsigned char)num) );
+                  i += 3;
+                } else {
+                  d_str.push_back( convertCharToUnsignedInt((unsigned char)num) );
+                  i += 2;
+                }
+              } else {
+                d_str.push_back( convertCharToUnsignedInt((unsigned char)num) );
+                i++;
+              }
+            } else if((unsigned)s[i] > 127) {
+              throw CVC4::Exception( "Illegal String Literal: \"" + s + "\", must use escaped sequence" );
+            } else {
+              d_str.push_back( convertCharToUnsignedInt(s[i]) );
+              i++;
+            }
+          }
+        }
+      } else {
+        throw CVC4::Exception( "should be handled by lexer: \"" + s + "\"" );
+        //d_str.push_back( convertCharToUnsignedInt('\\') );
+      }
+    } else if((unsigned)s[i] > 127) {
+      throw CVC4::Exception( "Illegal String Literal: \"" + s + "\", must use escaped sequence" );
+    } else {
+      d_str.push_back( convertCharToUnsignedInt(s[i]) );
+      i++;
+    }
+  }
+}
+
+void String::getCharSet(std::set<unsigned char> &cset) const {
+  for(std::vector<unsigned int>::const_iterator itr = d_str.begin();
+    itr != d_str.end(); itr++) {
+      cset.insert( convertUnsignedIntToChar(*itr) );
+    }
+}
+
+std::size_t String::overlap(String &y) const {
+  std::size_t i = d_str.size() < y.size() ? d_str.size() : y.size();
+  for(; i>0; i--) {
+    String s = suffix(i);
+    String p = y.prefix(i);
+    if(s == p) {
+      return i;
+    }
+  }
+  return i;
+}
+std::size_t String::roverlap(String &y) const {
+  std::size_t i = d_str.size() < y.size() ? d_str.size() : y.size();
+  for(; i>0; i--) {
+    String s = prefix(i);
+    String p = y.suffix(i);
+    if(s == p) {
+      return i;
+    }
+  }
+  return i;
+}
+
+std::string String::toString() const {
+  std::string str;
+  for(unsigned int i=0; i<d_str.size(); ++i) {
+    unsigned char c = convertUnsignedIntToChar( d_str[i] );
+    if(isprint( c )) {
+      if(c == '\\') {
+        str += "\\\\";
+      } 
+      //else if(c == '\"') {
+      //  str += "\\\"";
+      //} 
+      else {
+        str += c;
+      }
+    } else {
+      std::string s;
+      switch(c) {
+        case '\a': s = "\\a"; break;
+        case '\b': s = "\\b"; break;
+        case '\t': s = "\\t"; break;
+        case '\r': s = "\\r"; break;
+        case '\v': s = "\\v"; break;
+        case '\f': s = "\\f"; break;
+        case '\n': s = "\\n"; break;
+        case '\e': s = "\\e"; break;
+        default  : {
+          std::stringstream ss;
+          ss << std::setfill ('0') << std::setw(2) << std::hex << ((int)c);
+          std::string t = ss.str();
+          t = t.substr(t.size()-2, 2);
+          s = "\\x" + t;
+          //std::string s2 = static_cast<std::ostringstream*>( &(std::ostringstream() << (int)c) )->str();
+        }
+      }
+      str += s;
+    }
+  }
+  return str;
+}
+
+std::ostream& operator <<(std::ostream& os, const String& s) {
+  return os << "\"" << s.toString() << "\"";
+}
+
+std::ostream& operator<<(std::ostream& out, const RegExp& s) {
+  return out << "regexp(" << s.getType() << ')';
+}
+
+}/* CVC4 namespace */
diff --git a/src/util/regexp.h b/src/util/regexp.h
new file mode 100644
index 0000000..06766e0
--- /dev/null
+++ b/src/util/regexp.h
@@ -0,0 +1,394 @@
+/*********************                                                        */
+/*! \file regexp.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tianyi Liang, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__REGEXP_H
+#define __CVC4__REGEXP_H
+
+#include <vector>
+#include <string>
+#include <set>
+#include <sstream>
+#include <cassert>
+
+#include "base/exception.h"
+#include "util/hash.h"
+
+namespace CVC4 {
+
+class CVC4_PUBLIC String {
+public:
+  static unsigned convertCharToUnsignedInt( unsigned char c ) {
+    unsigned i = c;
+    i = i + 191;
+    return (i>=256 ? i-256 : i);
+  }
+  static unsigned char convertUnsignedIntToChar( unsigned i ){
+    unsigned ii = i+65;
+    return (unsigned char)(ii>=256 ? ii-256 : ii);
+  }
+  static bool isPrintable( unsigned i ){
+    unsigned char c = convertUnsignedIntToChar( i );
+    return (c>=' ' && c<='~');//isprint( (int)c );
+  }
+
+private:
+  std::vector<unsigned> d_str;
+
+  bool isVecSame(const std::vector<unsigned> &a, const std::vector<unsigned> &b) const {
+    if(a.size() != b.size()) return false;
+    else {
+      return std::equal(a.begin(), a.end(), b.begin());
+      //for(unsigned int i=0; i<a.size(); ++i)
+        //if(a[i] != b[i]) return false;
+      //return true;
+    }
+  }
+
+  //guarded
+  unsigned char hexToDec(unsigned char c) {
+    if(c>='0' && c<='9') {
+      return c - '0';
+    } else if (c >= 'a' && c <= 'f') {
+      return c - 'a' + 10;
+    } else {
+      assert(c >= 'A' && c <= 'F');
+      return c - 'A' + 10;
+    }
+  }
+
+  void toInternal(const std::string &s);
+
+public:
+  String() {}
+
+  String(const std::string &s) {
+    toInternal(s);
+  }
+
+  String(const char* s) {
+    std::string stmp(s);
+    toInternal(stmp);
+  }
+
+  String(const unsigned char c) {
+    d_str.push_back( convertCharToUnsignedInt(c) );
+  }
+
+  String(const std::vector<unsigned> &s) : d_str(s) { }
+
+  ~String() {}
+
+  String& operator =(const String& y) {
+    if(this != &y) d_str = y.d_str;
+    return *this;
+  }
+
+  bool operator ==(const String& y) const {
+    return isVecSame(d_str, y.d_str);
+  }
+
+  bool operator !=(const String& y) const {
+    return  ! ( isVecSame(d_str, y.d_str) );
+  }
+
+  String concat (const String& other) const {
+    std::vector<unsigned int> ret_vec(d_str);
+    ret_vec.insert( ret_vec.end(), other.d_str.begin(), other.d_str.end() );
+    return String(ret_vec);
+  }
+
+  bool operator <(const String& y) const {
+    if(d_str.size() != y.d_str.size()) return d_str.size() < y.d_str.size();
+    else {
+      for(unsigned int i=0; i<d_str.size(); ++i)
+        if(d_str[i] != y.d_str[i]) return convertUnsignedIntToChar(d_str[i]) < convertUnsignedIntToChar(y.d_str[i]);
+
+      return false;
+    }
+  }
+
+  bool operator >(const String& y) const {
+    if(d_str.size() != y.d_str.size()) return d_str.size() > y.d_str.size();
+    else {
+      for(unsigned int i=0; i<d_str.size(); ++i)
+        if(d_str[i] != y.d_str[i]) return convertUnsignedIntToChar(d_str[i]) > convertUnsignedIntToChar(y.d_str[i]);
+
+      return false;
+    }
+  }
+
+  bool operator <=(const String& y) const {
+    if(d_str.size() != y.d_str.size()) return d_str.size() < y.d_str.size();
+    else {
+      for(unsigned int i=0; i<d_str.size(); ++i)
+        if(d_str[i] != y.d_str[i]) return convertUnsignedIntToChar(d_str[i]) < convertUnsignedIntToChar(y.d_str[i]);
+
+      return true;
+    }
+  }
+
+  bool operator >=(const String& y) const {
+    if(d_str.size() != y.d_str.size()) return d_str.size() > y.d_str.size();
+    else {
+      for(unsigned int i=0; i<d_str.size(); ++i)
+        if(d_str[i] != y.d_str[i]) return convertUnsignedIntToChar(d_str[i]) > convertUnsignedIntToChar(y.d_str[i]);
+
+      return true;
+    }
+  }
+
+  bool strncmp(const String &y, const std::size_t np) const {
+    std::size_t n = np;
+    std::size_t b = (d_str.size() >= y.d_str.size()) ? d_str.size() : y.d_str.size();
+    std::size_t s = (d_str.size() <= y.d_str.size()) ? d_str.size() : y.d_str.size();
+    if(n > s) {
+      if(b == s) {
+        n = s;
+      } else {
+        return false;
+      }
+    }
+    for(std::size_t i=0; i<n; ++i)
+      if(d_str[i] != y.d_str[i]) return false;
+    return true;
+  }
+
+  bool rstrncmp(const String &y, const std::size_t np) const {
+    std::size_t n = np;
+    std::size_t b = (d_str.size() >= y.d_str.size()) ? d_str.size() : y.d_str.size();
+    std::size_t s = (d_str.size() <= y.d_str.size()) ? d_str.size() : y.d_str.size();
+    if(n > s) {
+      if(b == s) {
+        n = s;
+      } else {
+        return false;
+      }
+    }
+    for(std::size_t i=0; i<n; ++i)
+      if(d_str[d_str.size() - i - 1] != y.d_str[y.d_str.size() - i - 1]) return false;
+    return true;
+  }
+
+  bool isEmptyString() const {
+    return ( d_str.size() == 0 );
+  }
+
+  /*char operator[] (const std::size_t i) const {
+    assert( i < d_str.size() );
+    return convertUnsignedIntToChar(d_str[i]);
+  }*/
+  /*
+   * Convenience functions
+   */
+  std::string toString() const;
+
+  std::size_t size() const {
+    return d_str.size();
+  }
+
+  unsigned char getFirstChar() const {
+    return convertUnsignedIntToChar( d_str[0] );
+  }
+
+  unsigned char getLastChar() const {
+    assert(d_str.size() != 0);
+    return convertUnsignedIntToChar( d_str[d_str.size() - 1] );
+  }
+
+  bool isRepeated() const {
+  if(d_str.size() > 1) {
+    unsigned int f = d_str[0];
+    for(unsigned i=1; i<d_str.size(); ++i) {
+      if(f != d_str[i]) return false;
+    }
+  }
+  return true;
+  }
+
+  bool tailcmp(const String &y, int &c) const {
+    int id_x = d_str.size() - 1;
+    int id_y = y.d_str.size() - 1;
+    while(id_x>=0 && id_y>=0) {
+      if(d_str[id_x] != y.d_str[id_y]) {
+        c = id_x;
+        return false;
+      }
+      --id_x; --id_y;
+    }
+    c = id_x == -1 ? ( - (id_y+1) ) : (id_x + 1);
+    return true;
+  }
+
+  std::size_t find(const String &y, const std::size_t start = 0) const {
+    if(d_str.size() < y.d_str.size() + start) return std::string::npos;
+    if(y.d_str.size() == 0) return start;
+    if(d_str.size() == 0) return std::string::npos;
+    std::vector<unsigned>::const_iterator itr = std::search(d_str.begin() + start, d_str.end(), y.d_str.begin(), y.d_str.end());
+    if(itr != d_str.end()) {
+      return itr - d_str.begin();
+    }else{
+      return std::string::npos;
+    }
+  }
+  
+  std::size_t rfind( String &y, const std::size_t start = 0) {
+    std::reverse( d_str.begin(), d_str.end() );
+    std::reverse( y.d_str.begin(), y.d_str.end() );
+    std::size_t f = find( y, start );
+    std::reverse( d_str.begin(), d_str.end() );
+    std::reverse( y.d_str.begin(), y.d_str.end() );
+    if( f==std::string::npos ){
+      return std::string::npos;
+    }else{
+      return f;
+    }
+  }
+
+  String replace(const String &s, const String &t) const {
+    std::size_t ret = find(s);
+    if( ret != std::string::npos ) {
+      std::vector<unsigned int> vec;
+      vec.insert(vec.begin(), d_str.begin(), d_str.begin() + ret);
+      vec.insert(vec.end(), t.d_str.begin(), t.d_str.end());
+      vec.insert(vec.end(), d_str.begin() + ret + s.d_str.size(), d_str.end());
+      return String(vec);
+    } else {
+      return *this;
+    }
+  }
+
+  String substr(std::size_t i) const {
+    assert(i <= d_str.size());
+    std::vector<unsigned int> ret_vec;
+    std::vector<unsigned int>::const_iterator itr = d_str.begin() + i;
+    ret_vec.insert(ret_vec.end(), itr, d_str.end());
+    return String(ret_vec);
+  }
+  String substr(std::size_t i, std::size_t j) const {
+    assert(i+j <= d_str.size());
+    std::vector<unsigned int> ret_vec;
+    std::vector<unsigned int>::const_iterator itr = d_str.begin() + i;
+    ret_vec.insert( ret_vec.end(), itr, itr + j );
+    return String(ret_vec);
+  }
+
+  String prefix(std::size_t i) const {
+    return substr(0, i);
+  }
+  String suffix(std::size_t i) const {
+    return substr(d_str.size() - i, i);
+  }
+  // if y=y1...yn and overlap returns m, then this is x1...y1...ym
+  std::size_t overlap(String &y) const;
+  // if y=y1...yn and overlap returns m, then this is y(n+1-m)...yn...xk
+  std::size_t roverlap(String &y) const;
+
+  bool isNumber() const {
+   if(d_str.size() == 0) return false;
+   for(unsigned int i=0; i<d_str.size(); ++i) {
+     unsigned char c = convertUnsignedIntToChar( d_str[i] );
+     if(c<'0' || c>'9') {
+       return false;
+     }
+   }
+   return true;
+  }
+  int toNumber() const {
+   if(isNumber()) {
+     int ret=0;
+     for(unsigned int i=0; i<d_str.size(); ++i) {
+       unsigned char c = convertUnsignedIntToChar( d_str[i] );
+       ret = ret * 10 + (int)c - (int)'0';
+     }
+     return ret;
+   } else {
+     return -1;
+   }
+  }
+
+  void getCharSet(std::set<unsigned char> &cset) const;
+
+  std::vector<unsigned> getVec() const {
+    return d_str;
+  }
+};/* class String */
+
+namespace strings {
+
+struct CVC4_PUBLIC StringHashFunction {
+  size_t operator()(const ::CVC4::String& s) const {
+    return __gnu_cxx::hash<const char*>()(s.toString().c_str());
+  }
+};/* struct StringHashFunction */
+
+}/* CVC4::strings namespace */
+
+std::ostream& operator <<(std::ostream& os, const String& s) CVC4_PUBLIC;
+
+class CVC4_PUBLIC RegExp {
+protected:
+  int d_type;
+public:
+  RegExp() : d_type(1) {}
+
+  RegExp(const int t) : d_type(t) {}
+
+  ~RegExp() {}
+
+  bool operator ==(const RegExp& y) const {
+    return d_type == y.d_type ;
+  }
+
+  bool operator !=(const RegExp& y) const {
+    return d_type != y.d_type ;
+  }
+
+  bool operator <(const RegExp& y) const {
+    return d_type < y.d_type;
+  }
+
+  bool operator >(const RegExp& y) const {
+    return d_type > y.d_type ;
+  }
+
+  bool operator <=(const RegExp& y) const {
+    return d_type <= y.d_type;
+  }
+
+  bool operator >=(const RegExp& y) const {
+    return d_type >= y.d_type ;
+  }
+
+  int getType() const { return d_type; }
+};/* class RegExp */
+
+/**
+ * Hash function for the RegExp constants.
+ */
+struct CVC4_PUBLIC RegExpHashFunction {
+  inline size_t operator()(const RegExp& s) const {
+    return (size_t)s.getType();
+  }
+};/* struct RegExpHashFunction */
+
+std::ostream& operator <<(std::ostream& os, const RegExp& s) CVC4_PUBLIC;
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__REGEXP_H */
diff --git a/src/util/regexp.i b/src/util/regexp.i
new file mode 100644
index 0000000..9f98266
--- /dev/null
+++ b/src/util/regexp.i
@@ -0,0 +1,35 @@
+%{
+#include "util/regexp.h"
+%}
+
+%rename(CVC4String) String;
+%rename(CVC4StringHashFunction) CVC4::strings::StringHashFunction;
+
+%ignore CVC4::String::String(const std::string&);
+
+%rename(assign) CVC4::String::operator=(const String&);
+%rename(getChar) CVC4::String::operator[](const unsigned int) const;
+%rename(equals) CVC4::String::operator==(const String&) const;
+%ignore CVC4::String::operator!=(const String&) const;
+%rename(less) CVC4::String::operator<(const String&) const;
+%rename(lessEqual) CVC4::String::operator<=(const String&) const;
+%rename(greater) CVC4::String::operator>(const String&) const;
+%rename(greaterEqual) CVC4::String::operator>=(const String&) const;
+
+%rename(assign) CVC4::RegExp::operator=(const RegExp&);
+%rename(equals) CVC4::RegExp::operator==(const RegExp&) const;
+%ignore CVC4::RegExp::operator!=(const RegExp&) const;
+%rename(less) CVC4::RegExp::operator<(const RegExp&) const;
+%rename(lessEqual) CVC4::RegExp::operator<=(const RegExp&) const;
+%rename(greater) CVC4::RegExp::operator>(const RegExp&) const;
+%rename(greaterEqual) CVC4::RegExp::operator>=(const RegExp&) const;
+
+%rename(apply) CVC4::strings::StringHashFunction::operator()(const ::CVC4::String&) const;
+%rename(apply) CVC4::RegExpHashFunction::operator()(const RegExp&) const;
+
+%ignore CVC4::operator<<(std::ostream&, const String&);
+%ignore CVC4::operator<<(std::ostream&, const RegExp&);
+
+%apply int &OUTPUT { int &c };
+%include "util/regexp.h"
+%clear int &c;
diff --git a/src/util/resource_manager.cpp b/src/util/resource_manager.cpp
new file mode 100644
index 0000000..7a739a7
--- /dev/null
+++ b/src/util/resource_manager.cpp
@@ -0,0 +1,299 @@
+/*********************                                                        */
+/*! \file resource_manager.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+
+ ** \todo document this file
+
+**/
+#include "util/resource_manager.h"
+
+#include "base/cvc4_assert.h"
+#include "base/output.h"
+#include "options/smt_options.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+void Timer::set(uint64_t millis, bool wallTime) {
+  d_ms = millis;
+  Trace("limit") << "Timer::set(" << d_ms << ")" << std::endl;
+  // keep track of when it was set, even if it's disabled (i.e. == 0)
+  d_wall_time = wallTime;
+  if (d_wall_time) {
+    // Wall time
+    gettimeofday(&d_wall_limit, NULL);
+    Trace("limit") << "Timer::set(): it's " << d_wall_limit.tv_sec << "," << d_wall_limit.tv_usec << std::endl;
+    d_wall_limit.tv_sec += millis / 1000;
+    d_wall_limit.tv_usec += (millis % 1000) * 1000;
+    if(d_wall_limit.tv_usec > 1000000) {
+      ++d_wall_limit.tv_sec;
+      d_wall_limit.tv_usec -= 1000000;
+    }
+    Trace("limit") << "Timer::set(): limit is at " << d_wall_limit.tv_sec << "," << d_wall_limit.tv_usec << std::endl;
+  } else {
+    // CPU time
+    d_cpu_start_time = ((double)clock())/(CLOCKS_PER_SEC *0.001);
+    d_cpu_limit = d_cpu_start_time + d_ms;
+  }
+}
+
+/** Return the milliseconds elapsed since last set(). */
+uint64_t Timer::elapsedWall() const {
+  Assert (d_wall_time);
+  timeval tv;
+  gettimeofday(&tv, NULL);
+  Trace("limit") << "Timer::elapsedWallTime(): it's now " << tv.tv_sec << "," << tv.tv_usec << std::endl;
+  tv.tv_sec -= d_wall_limit.tv_sec - d_ms / 1000;
+  tv.tv_usec -= d_wall_limit.tv_usec - (d_ms % 1000) * 1000;
+  Trace("limit") << "Timer::elapsedWallTime(): elapsed time is " << tv.tv_sec << "," << tv.tv_usec << std::endl;
+  return tv.tv_sec * 1000 + tv.tv_usec / 1000;
+}
+
+uint64_t Timer::elapsedCPU() const {
+  Assert (!d_wall_time);
+  clock_t elapsed = ((double)clock())/(CLOCKS_PER_SEC *0.001)- d_cpu_start_time;
+  Trace("limit") << "Timer::elapsedCPUTime(): elapsed time is " << elapsed << " ms" <<std::endl;
+  return elapsed;
+}
+
+uint64_t Timer::elapsed() const {
+  if (d_wall_time)
+    return elapsedWall();
+  return elapsedCPU();
+}
+
+bool Timer::expired() const {
+  if (!on()) return false;
+
+  if (d_wall_time) {
+    timeval tv;
+    gettimeofday(&tv, NULL);
+    Debug("limit") << "Timer::expired(): current wall time is " << tv.tv_sec << "," << tv.tv_usec << std::endl;
+    Debug("limit") << "Timer::expired(): limit wall time is " << d_wall_limit.tv_sec << "," << d_wall_limit.tv_usec << std::endl;
+    if(d_wall_limit.tv_sec < tv.tv_sec ||
+       (d_wall_limit.tv_sec == tv.tv_sec && d_wall_limit.tv_usec <= tv.tv_usec)) {
+      Debug("limit") << "Timer::expired(): OVER LIMIT!" << std::endl;
+      return true;
+    }
+    Debug("limit") << "Timer::expired(): within limit" << std::endl;
+    return false;
+  }
+
+  // cpu time
+  double current = ((double)clock())/(CLOCKS_PER_SEC*0.001);
+  Debug("limit") << "Timer::expired(): current cpu time is " << current <<  std::endl;
+  Debug("limit") << "Timer::expired(): limit cpu time is " << d_cpu_limit <<  std::endl;
+  if (current >= d_cpu_limit) {
+    Debug("limit") << "Timer::expired(): OVER LIMIT!" << current <<  std::endl;
+    return true;
+  }
+  return false;
+}
+
+const uint64_t ResourceManager::s_resourceCount = 1000;
+
+ResourceManager::ResourceManager()
+  : d_cumulativeTimer()
+  , d_perCallTimer()
+  , d_timeBudgetCumulative(0)
+  , d_timeBudgetPerCall(0)
+  , d_resourceBudgetCumulative(0)
+  , d_resourceBudgetPerCall(0)
+  , d_cumulativeTimeUsed(0)
+  , d_cumulativeResourceUsed(0)
+  , d_thisCallResourceUsed(0)
+  , d_thisCallTimeBudget(0)
+  , d_thisCallResourceBudget(0)
+  , d_isHardLimit()
+  , d_on(false)
+  , d_cpuTime(false)
+  , d_spendResourceCalls(0)
+  , d_hardListeners()
+  , d_softListeners()
+{}
+
+
+void ResourceManager::setResourceLimit(uint64_t units, bool cumulative) {
+  d_on = true;
+  if(cumulative) {
+    Trace("limit") << "ResourceManager: setting cumulative resource limit to " << units << endl;
+    d_resourceBudgetCumulative = (units == 0) ? 0 : (d_cumulativeResourceUsed + units);
+    d_thisCallResourceBudget = d_resourceBudgetCumulative;
+  } else {
+    Trace("limit") << "ResourceManager: setting per-call resource limit to " << units << endl;
+    d_resourceBudgetPerCall = units;
+  }
+}
+
+void ResourceManager::setTimeLimit(uint64_t millis, bool cumulative) {
+  d_on = true;
+  if(cumulative) {
+    Trace("limit") << "ResourceManager: setting cumulative time limit to " << millis << " ms" << endl;
+    d_timeBudgetCumulative = (millis == 0) ? 0 : (d_cumulativeTimeUsed + millis);
+    d_cumulativeTimer.set(millis, !d_cpuTime);
+  } else {
+    Trace("limit") << "ResourceManager: setting per-call time limit to " << millis << " ms" << endl;
+    d_timeBudgetPerCall = millis;
+    // perCall timer will be set in beginCall
+  }
+
+}
+
+const uint64_t& ResourceManager::getResourceUsage() const {
+  return d_cumulativeResourceUsed;
+}
+
+uint64_t ResourceManager::getTimeUsage() const {
+  if (d_timeBudgetCumulative) {
+    return d_cumulativeTimer.elapsed();
+  }
+  return d_cumulativeTimeUsed;
+}
+
+uint64_t ResourceManager::getResourceRemaining() const {
+  if (d_thisCallResourceBudget <= d_thisCallResourceUsed)
+    return 0;
+  return d_thisCallResourceBudget - d_thisCallResourceUsed;
+}
+
+uint64_t ResourceManager::getTimeRemaining() const {
+  uint64_t time_passed = d_cumulativeTimer.elapsed();
+  if (time_passed >= d_thisCallTimeBudget)
+    return 0;
+  return d_thisCallTimeBudget - time_passed;
+}
+
+void ResourceManager::spendResource(unsigned ammount) throw (UnsafeInterruptException) {
+  ++d_spendResourceCalls;
+  d_cumulativeResourceUsed += ammount;
+  if (!d_on) return;
+
+  Debug("limit") << "ResourceManager::spendResource()" << std::endl;
+  d_thisCallResourceUsed += ammount;
+  if(out()) {
+    Trace("limit") << "ResourceManager::spendResource: interrupt!" << std::endl;
+    Trace("limit") << "          on call " << d_spendResourceCalls << std::endl;
+    if (outOfTime()) {
+      Trace("limit") << "ResourceManager::spendResource: elapsed time"
+                     << d_cumulativeTimer.elapsed() << std::endl;
+    }
+
+    if (d_isHardLimit) {
+      d_hardListeners.notify();
+      throw UnsafeInterruptException();
+    } else {
+      d_softListeners.notify();
+    }
+
+  }
+}
+
+void ResourceManager::beginCall() {
+
+  d_perCallTimer.set(d_timeBudgetPerCall, !d_cpuTime);
+  d_thisCallResourceUsed = 0;
+  if (!d_on) return;
+
+  if (cumulativeLimitOn()) {
+    if (d_resourceBudgetCumulative) {
+      d_thisCallResourceBudget = d_resourceBudgetCumulative <= d_cumulativeResourceUsed ? 0 :
+                                 d_resourceBudgetCumulative - d_cumulativeResourceUsed;
+    }
+
+    if (d_timeBudgetCumulative) {
+
+      AlwaysAssert(d_cumulativeTimer.on());
+      // timer was on since the option was set
+      d_cumulativeTimeUsed = d_cumulativeTimer.elapsed();
+      d_thisCallTimeBudget = d_timeBudgetCumulative <= d_cumulativeTimeUsed? 0 :
+                             d_timeBudgetCumulative - d_cumulativeTimeUsed;
+      d_cumulativeTimer.set(d_thisCallTimeBudget, d_cpuTime);
+    }
+    // we are out of resources so we shouldn't update the
+    // budget for this call to the per call budget
+    if (d_thisCallTimeBudget == 0 ||
+        d_thisCallResourceUsed == 0)
+      return;
+  }
+
+  if (perCallLimitOn()) {
+    // take min of what's left and per-call budget
+    if (d_resourceBudgetPerCall) {
+      d_thisCallResourceBudget = d_thisCallResourceBudget < d_resourceBudgetPerCall && d_thisCallResourceBudget != 0 ? d_thisCallResourceBudget : d_resourceBudgetPerCall;
+    }
+
+    if (d_timeBudgetPerCall) {
+      d_thisCallTimeBudget = d_thisCallTimeBudget < d_timeBudgetPerCall && d_thisCallTimeBudget != 0 ? d_thisCallTimeBudget : d_timeBudgetPerCall;
+    }
+  }
+}
+
+void ResourceManager::endCall() {
+  uint64_t usedInCall = d_perCallTimer.elapsed();
+  d_perCallTimer.set(0);
+  d_cumulativeTimeUsed += usedInCall;
+}
+
+bool ResourceManager::cumulativeLimitOn() const {
+  return d_timeBudgetCumulative || d_resourceBudgetCumulative;
+}
+
+bool ResourceManager::perCallLimitOn() const {
+  return d_timeBudgetPerCall || d_resourceBudgetPerCall;
+}
+
+bool ResourceManager::outOfResources() const {
+  // resource limiting not enabled
+  if (d_resourceBudgetPerCall == 0 &&
+      d_resourceBudgetCumulative == 0)
+    return false;
+
+  return getResourceRemaining() == 0;
+}
+
+bool ResourceManager::outOfTime() const {
+  if (d_timeBudgetPerCall == 0 &&
+      d_timeBudgetCumulative == 0)
+    return false;
+
+  return d_cumulativeTimer.expired() || d_perCallTimer.expired();
+}
+
+void ResourceManager::useCPUTime(bool cpu) {
+  Trace("limit") << "ResourceManager::useCPUTime("<< cpu <<")\n";
+  d_cpuTime = cpu;
+}
+
+void ResourceManager::setHardLimit(bool value) {
+  Trace("limit") << "ResourceManager::setHardLimit("<< value <<")\n";
+  d_isHardLimit = value;
+}
+
+void ResourceManager::enable(bool on) {
+  Trace("limit") << "ResourceManager::enable("<< on <<")\n";
+  d_on = on;
+}
+
+ListenerCollection::Registration* ResourceManager::registerHardListener(
+    Listener* listener)
+{
+  return d_hardListeners.registerListener(listener);
+}
+
+ListenerCollection::Registration* ResourceManager::registerSoftListener(
+    Listener* listener)
+{
+  return d_softListeners.registerListener(listener);
+}
+
+} /* namespace CVC4 */
diff --git a/src/util/resource_manager.h b/src/util/resource_manager.h
new file mode 100644
index 0000000..d21122c
--- /dev/null
+++ b/src/util/resource_manager.h
@@ -0,0 +1,199 @@
+/*********************                                                        */
+/*! \file resource_manager.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+
+ ** \todo document this file
+
+**/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__RESOURCE_MANAGER_H
+#define __CVC4__RESOURCE_MANAGER_H
+
+#include <cstddef>
+#include <sys/time.h>
+
+#include "base/exception.h"
+#include "base/listener.h"
+#include "util/unsafe_interrupt_exception.h"
+
+namespace CVC4 {
+
+/**
+ * A helper class to keep track of a time budget and signal
+ * the PropEngine when the budget expires.
+ */
+class CVC4_PUBLIC Timer {
+
+  uint64_t d_ms;
+  timeval d_wall_limit;
+  clock_t d_cpu_start_time;
+  clock_t d_cpu_limit;
+
+  bool d_wall_time;
+
+  /** Return the milliseconds elapsed since last set() cpu time. */
+  uint64_t elapsedCPU() const;
+  /** Return the milliseconds elapsed since last set() wall time. */
+  uint64_t elapsedWall() const;
+
+public:
+
+  /** Construct a Timer. */
+  Timer()
+    : d_ms(0)
+    , d_cpu_start_time(0)
+    , d_cpu_limit(0)
+    , d_wall_time(true)
+  {}
+
+  /** Is the timer currently active? */
+  bool on() const {
+    return d_ms != 0;
+  }
+
+  /** Set a millisecond timer (0==off). */
+  void set(uint64_t millis, bool wall_time = true);
+  /** Return the milliseconds elapsed since last set() wall/cpu time
+   depending on d_wall_time*/
+  uint64_t elapsed() const;
+  bool expired() const;
+
+};/* class Timer */
+
+
+class CVC4_PUBLIC ResourceManager {
+
+  Timer d_cumulativeTimer;
+  Timer d_perCallTimer;
+
+  /** A user-imposed cumulative time budget, in milliseconds. 0 = no limit. */
+  uint64_t d_timeBudgetCumulative;
+  /** A user-imposed per-call time budget, in milliseconds. 0 = no limit. */
+  uint64_t d_timeBudgetPerCall;
+  /** A user-imposed cumulative resource budget. 0 = no limit. */
+  uint64_t d_resourceBudgetCumulative;
+  /** A user-imposed per-call resource budget. 0 = no limit. */
+  uint64_t d_resourceBudgetPerCall;
+
+  /** The number of milliseconds used. */
+  uint64_t d_cumulativeTimeUsed;
+  /** The amount of resource used. */
+  uint64_t d_cumulativeResourceUsed;
+
+  /** The ammount of resource used during this call. */
+  uint64_t d_thisCallResourceUsed;
+
+  /**
+   * The ammount of resource budget for this call (min between per call
+   * budget and left-over cumulative budget.
+   */
+  uint64_t d_thisCallTimeBudget;
+  uint64_t d_thisCallResourceBudget;
+
+  bool d_isHardLimit;
+  bool d_on;
+  bool d_cpuTime;
+  uint64_t d_spendResourceCalls;
+
+  /** Counter indicating how often to check resource manager in loops */
+  static const uint64_t s_resourceCount;
+
+  /** Receives a notification on reaching a hard limit. */
+  ListenerCollection d_hardListeners;
+
+  /** Receives a notification on reaching a hard limit. */
+  ListenerCollection d_softListeners;
+
+  /**
+   * ResourceManagers cannot be copied as they are given an explicit
+   * list of Listeners to respond to.
+   */
+  ResourceManager(const ResourceManager&) CVC4_UNDEFINED;
+
+  /**
+   * ResourceManagers cannot be assigned as they are given an explicit
+   * list of Listeners to respond to.
+   */
+  ResourceManager& operator=(const ResourceManager&) CVC4_UNDEFINED;
+
+public:
+
+  ResourceManager();
+
+  bool limitOn() const { return cumulativeLimitOn() || perCallLimitOn(); }
+  bool cumulativeLimitOn() const;
+  bool perCallLimitOn() const;
+
+  bool outOfResources() const;
+  bool outOfTime() const;
+  bool out() const { return d_on && (outOfResources() || outOfTime()); }
+
+
+  /**
+   * This returns a const uint64_t& to support being used as a ReferenceStat.
+   */
+  const uint64_t& getResourceUsage() const;
+  uint64_t getTimeUsage() const;
+  uint64_t getResourceRemaining() const;
+  uint64_t getTimeRemaining() const;
+
+  uint64_t getResourceBudgetForThisCall() {
+    return d_thisCallResourceBudget;
+  }
+
+  void spendResource(unsigned ammount) throw(UnsafeInterruptException);
+
+  void setHardLimit(bool value);
+  void setResourceLimit(uint64_t units, bool cumulative = false);
+  void setTimeLimit(uint64_t millis, bool cumulative = false);
+  void useCPUTime(bool cpu);
+
+  void enable(bool on);
+
+  /**
+   * Resets perCall limits to mark the start of a new call,
+   * updates budget for current call and starts the timer
+   */
+  void beginCall();
+
+  /**
+   * Marks the end of a SmtEngine check call, stops the per
+   * call timer, updates cumulative time used.
+   */
+  void endCall();
+
+  static uint64_t getFrequencyCount() { return s_resourceCount; }
+
+  /**
+   * Registers a listener that is notified on a hard resource out.
+   *
+   * This Registration must be destroyed by the user before this
+   * ResourceManager.
+   */
+  ListenerCollection::Registration* registerHardListener(Listener* listener);
+
+  /**
+   * Registers a listener that is notified on a soft resource out.
+   *
+   * This Registration must be destroyed by the user before this
+   * ResourceManager.
+   */
+  ListenerCollection::Registration* registerSoftListener(Listener* listener);
+
+};/* class ResourceManager */
+
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__RESOURCE_MANAGER_H */
diff --git a/src/util/resource_manager.i b/src/util/resource_manager.i
new file mode 100644
index 0000000..0f55c2b
--- /dev/null
+++ b/src/util/resource_manager.i
@@ -0,0 +1,5 @@
+%{
+#include "util/resource_manager.h"
+%}
+
+%include "util/resource_manager.h"
diff --git a/src/util/result.cpp b/src/util/result.cpp
new file mode 100644
index 0000000..af28269
--- /dev/null
+++ b/src/util/result.cpp
@@ -0,0 +1,373 @@
+/*********************                                                        */
+/*! \file result.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Encapsulation of the result of a query.
+ **
+ ** Encapsulation of the result of a query.
+ **/
+#include "util/result.h"
+
+#include <algorithm>
+#include <cctype>
+#include <iostream>
+#include <string>
+
+#include "base/cvc4_assert.h"
+#include "options/set_language.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+Result::Result()
+    : d_sat(SAT_UNKNOWN),
+      d_validity(VALIDITY_UNKNOWN),
+      d_which(TYPE_NONE),
+      d_unknownExplanation(UNKNOWN_REASON),
+      d_inputName("") {}
+
+Result::Result(enum Sat s, std::string inputName)
+    : d_sat(s),
+      d_validity(VALIDITY_UNKNOWN),
+      d_which(TYPE_SAT),
+      d_unknownExplanation(UNKNOWN_REASON),
+      d_inputName(inputName) {
+  PrettyCheckArgument(s != SAT_UNKNOWN,
+                      "Must provide a reason for satisfiability being unknown");
+}
+
+Result::Result(enum Validity v, std::string inputName)
+    : d_sat(SAT_UNKNOWN),
+      d_validity(v),
+      d_which(TYPE_VALIDITY),
+      d_unknownExplanation(UNKNOWN_REASON),
+      d_inputName(inputName) {
+  PrettyCheckArgument(v != VALIDITY_UNKNOWN,
+                      "Must provide a reason for validity being unknown");
+}
+
+Result::Result(enum Sat s, enum UnknownExplanation unknownExplanation,
+               std::string inputName)
+    : d_sat(s),
+      d_validity(VALIDITY_UNKNOWN),
+      d_which(TYPE_SAT),
+      d_unknownExplanation(unknownExplanation),
+      d_inputName(inputName) {
+  PrettyCheckArgument(s == SAT_UNKNOWN,
+                      "improper use of unknown-result constructor");
+}
+
+Result::Result(enum Validity v, enum UnknownExplanation unknownExplanation,
+               std::string inputName)
+    : d_sat(SAT_UNKNOWN),
+      d_validity(v),
+      d_which(TYPE_VALIDITY),
+      d_unknownExplanation(unknownExplanation),
+      d_inputName(inputName) {
+  PrettyCheckArgument(v == VALIDITY_UNKNOWN,
+                      "improper use of unknown-result constructor");
+}
+
+Result::Result(const std::string& instr, std::string inputName)
+    : d_sat(SAT_UNKNOWN),
+      d_validity(VALIDITY_UNKNOWN),
+      d_which(TYPE_NONE),
+      d_unknownExplanation(UNKNOWN_REASON),
+      d_inputName(inputName) {
+  string s = instr;
+  transform(s.begin(), s.end(), s.begin(), ::tolower);
+  if (s == "sat" || s == "satisfiable") {
+    d_which = TYPE_SAT;
+    d_sat = SAT;
+  } else if (s == "unsat" || s == "unsatisfiable") {
+    d_which = TYPE_SAT;
+    d_sat = UNSAT;
+  } else if (s == "valid") {
+    d_which = TYPE_VALIDITY;
+    d_validity = VALID;
+  } else if (s == "invalid") {
+    d_which = TYPE_VALIDITY;
+    d_validity = INVALID;
+  } else if (s == "incomplete") {
+    d_which = TYPE_SAT;
+    d_sat = SAT_UNKNOWN;
+    d_unknownExplanation = INCOMPLETE;
+  } else if (s == "timeout") {
+    d_which = TYPE_SAT;
+    d_sat = SAT_UNKNOWN;
+    d_unknownExplanation = TIMEOUT;
+  } else if (s == "resourceout") {
+    d_which = TYPE_SAT;
+    d_sat = SAT_UNKNOWN;
+    d_unknownExplanation = RESOURCEOUT;
+  } else if (s == "memout") {
+    d_which = TYPE_SAT;
+    d_sat = SAT_UNKNOWN;
+    d_unknownExplanation = MEMOUT;
+  } else if (s == "interrupted") {
+    d_which = TYPE_SAT;
+    d_sat = SAT_UNKNOWN;
+    d_unknownExplanation = INTERRUPTED;
+  } else if (s.size() >= 7 && s.compare(0, 7, "unknown") == 0) {
+    d_which = TYPE_SAT;
+    d_sat = SAT_UNKNOWN;
+  } else {
+    IllegalArgument(s,
+                    "expected satisfiability/validity result, "
+                    "instead got `%s'",
+                    s.c_str());
+  }
+}
+
+Result::UnknownExplanation Result::whyUnknown() const {
+  PrettyCheckArgument(isUnknown(), this,
+                      "This result is not unknown, so the reason for "
+                      "being unknown cannot be inquired of it");
+  return d_unknownExplanation;
+}
+
+bool Result::operator==(const Result& r) const {
+  if (d_which != r.d_which) {
+    return false;
+  }
+  if (d_which == TYPE_SAT) {
+    return d_sat == r.d_sat && (d_sat != SAT_UNKNOWN ||
+                                d_unknownExplanation == r.d_unknownExplanation);
+  }
+  if (d_which == TYPE_VALIDITY) {
+    return d_validity == r.d_validity &&
+           (d_validity != VALIDITY_UNKNOWN ||
+            d_unknownExplanation == r.d_unknownExplanation);
+  }
+  return false;
+}
+
+bool operator==(enum Result::Sat sr, const Result& r) { return r == sr; }
+
+bool operator==(enum Result::Validity vr, const Result& r) { return r == vr; }
+bool operator!=(enum Result::Sat s, const Result& r) { return !(s == r); }
+bool operator!=(enum Result::Validity v, const Result& r) { return !(v == r); }
+
+Result Result::asSatisfiabilityResult() const {
+  if (d_which == TYPE_SAT) {
+    return *this;
+  }
+
+  if (d_which == TYPE_VALIDITY) {
+    switch (d_validity) {
+      case INVALID:
+        return Result(SAT, d_inputName);
+
+      case VALID:
+        return Result(UNSAT, d_inputName);
+
+      case VALIDITY_UNKNOWN:
+        return Result(SAT_UNKNOWN, d_unknownExplanation, d_inputName);
+
+      default:
+        Unhandled(d_validity);
+    }
+  }
+
+  // TYPE_NONE
+  return Result(SAT_UNKNOWN, NO_STATUS, d_inputName);
+}
+
+Result Result::asValidityResult() const {
+  if (d_which == TYPE_VALIDITY) {
+    return *this;
+  }
+
+  if (d_which == TYPE_SAT) {
+    switch (d_sat) {
+      case SAT:
+        return Result(INVALID, d_inputName);
+
+      case UNSAT:
+        return Result(VALID, d_inputName);
+
+      case SAT_UNKNOWN:
+        return Result(VALIDITY_UNKNOWN, d_unknownExplanation, d_inputName);
+
+      default:
+        Unhandled(d_sat);
+    }
+  }
+
+  // TYPE_NONE
+  return Result(VALIDITY_UNKNOWN, NO_STATUS, d_inputName);
+}
+
+string Result::toString() const {
+  stringstream ss;
+  ss << *this;
+  return ss.str();
+}
+
+ostream& operator<<(ostream& out, enum Result::Sat s) {
+  switch (s) {
+    case Result::UNSAT:
+      out << "UNSAT";
+      break;
+    case Result::SAT:
+      out << "SAT";
+      break;
+    case Result::SAT_UNKNOWN:
+      out << "SAT_UNKNOWN";
+      break;
+    default:
+      Unhandled(s);
+  }
+  return out;
+}
+
+ostream& operator<<(ostream& out, enum Result::Validity v) {
+  switch (v) {
+    case Result::INVALID:
+      out << "INVALID";
+      break;
+    case Result::VALID:
+      out << "VALID";
+      break;
+    case Result::VALIDITY_UNKNOWN:
+      out << "VALIDITY_UNKNOWN";
+      break;
+    default:
+      Unhandled(v);
+  }
+  return out;
+}
+
+ostream& operator<<(ostream& out, enum Result::UnknownExplanation e) {
+  switch (e) {
+    case Result::REQUIRES_FULL_CHECK:
+      out << "REQUIRES_FULL_CHECK";
+      break;
+    case Result::INCOMPLETE:
+      out << "INCOMPLETE";
+      break;
+    case Result::TIMEOUT:
+      out << "TIMEOUT";
+      break;
+    case Result::RESOURCEOUT:
+      out << "RESOURCEOUT";
+      break;
+    case Result::MEMOUT:
+      out << "MEMOUT";
+      break;
+    case Result::INTERRUPTED:
+      out << "INTERRUPTED";
+      break;
+    case Result::NO_STATUS:
+      out << "NO_STATUS";
+      break;
+    case Result::UNSUPPORTED:
+      out << "UNSUPPORTED";
+      break;
+    case Result::OTHER:
+      out << "OTHER";
+      break;
+    case Result::UNKNOWN_REASON:
+      out << "UNKNOWN_REASON";
+      break;
+    default:
+      Unhandled(e);
+  }
+  return out;
+}
+
+ostream& operator<<(ostream& out, const Result& r) {
+  r.toStream(out, language::SetLanguage::getLanguage(out));
+  return out;
+} /* operator<<(ostream&, const Result&) */
+
+void Result::toStreamDefault(std::ostream& out) const {
+  if (getType() == Result::TYPE_SAT) {
+    switch (isSat()) {
+      case Result::UNSAT:
+        out << "unsat";
+        break;
+      case Result::SAT:
+        out << "sat";
+        break;
+      case Result::SAT_UNKNOWN:
+        out << "unknown";
+        if (whyUnknown() != Result::UNKNOWN_REASON) {
+          out << " (" << whyUnknown() << ")";
+        }
+        break;
+    }
+  } else {
+    switch (isValid()) {
+      case Result::INVALID:
+        out << "invalid";
+        break;
+      case Result::VALID:
+        out << "valid";
+        break;
+      case Result::VALIDITY_UNKNOWN:
+        out << "unknown";
+        if (whyUnknown() != Result::UNKNOWN_REASON) {
+          out << " (" << whyUnknown() << ")";
+        }
+        break;
+    }
+  }
+} /* Result::toStreamDefault() */
+
+void Result::toStreamSmt2(ostream& out) const {
+  if (getType() == Result::TYPE_SAT && isSat() == Result::SAT_UNKNOWN) {
+    out << "unknown";
+  } else {
+    toStreamDefault(out);
+  }
+}
+
+void Result::toStreamTptp(std::ostream& out) const {
+  out << "% SZS status ";
+  if (isSat() == Result::SAT) {
+    out << "Satisfiable";
+  } else if (isSat() == Result::UNSAT) {
+    out << "Unsatisfiable";
+  } else if (isValid() == Result::VALID) {
+    out << "Theorem";
+  } else if (isValid() == Result::INVALID) {
+    out << "CounterSatisfiable";
+  } else {
+    out << "GaveUp";
+  }
+  out << " for " << getInputName();
+}
+
+void Result::toStream(std::ostream& out, OutputLanguage language) const {
+  switch (language) {
+    case language::output::LANG_SMTLIB_V2_0:
+    case language::output::LANG_SMTLIB_V2_5:
+    case language::output::LANG_SYGUS:
+    case language::output::LANG_Z3STR:
+      toStreamSmt2(out);
+      break;
+    case language::output::LANG_TPTP:
+      toStreamTptp(out);
+      break;
+    case language::output::LANG_AST:
+    case language::output::LANG_AUTO:
+    case language::output::LANG_CVC3:
+    case language::output::LANG_CVC4:
+    case language::output::LANG_MAX:
+    case language::output::LANG_SMTLIB_V1:
+    default:
+      toStreamDefault(out);
+      break;
+  };
+}
+
+} /* CVC4 namespace */
diff --git a/src/util/result.h b/src/util/result.h
new file mode 100644
index 0000000..80fbc0c
--- /dev/null
+++ b/src/util/result.h
@@ -0,0 +1,154 @@
+/*********************                                                        */
+/*! \file result.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Encapsulation of the result of a query.
+ **
+ ** Encapsulation of the result of a query.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__RESULT_H
+#define __CVC4__RESULT_H
+
+#include <iostream>
+#include <string>
+
+#include "base/exception.h"
+#include "options/language.h"
+
+namespace CVC4 {
+
+class Result;
+
+std::ostream& operator<<(std::ostream& out, const Result& r) CVC4_PUBLIC;
+
+/**
+ * Three-valued SMT result, with optional explanation.
+ */
+class CVC4_PUBLIC Result {
+ public:
+  enum Sat { UNSAT = 0, SAT = 1, SAT_UNKNOWN = 2 };
+
+  enum Validity { INVALID = 0, VALID = 1, VALIDITY_UNKNOWN = 2 };
+
+  enum Type { TYPE_SAT, TYPE_VALIDITY, TYPE_NONE };
+
+  enum UnknownExplanation {
+    REQUIRES_FULL_CHECK,
+    INCOMPLETE,
+    TIMEOUT,
+    RESOURCEOUT,
+    MEMOUT,
+    INTERRUPTED,
+    NO_STATUS,
+    UNSUPPORTED,
+    OTHER,
+    UNKNOWN_REASON
+  };
+
+ private:
+  enum Sat d_sat;
+  enum Validity d_validity;
+  enum Type d_which;
+  enum UnknownExplanation d_unknownExplanation;
+  std::string d_inputName;
+
+ public:
+  Result();
+
+  Result(enum Sat s, std::string inputName = "");
+
+  Result(enum Validity v, std::string inputName = "");
+
+  Result(enum Sat s, enum UnknownExplanation unknownExplanation,
+         std::string inputName = "");
+
+  Result(enum Validity v, enum UnknownExplanation unknownExplanation,
+         std::string inputName = "");
+
+  Result(const std::string& s, std::string inputName = "");
+
+  Result(const Result& r, std::string inputName) {
+    *this = r;
+    d_inputName = inputName;
+  }
+
+  enum Sat isSat() const { return d_which == TYPE_SAT ? d_sat : SAT_UNKNOWN; }
+
+  enum Validity isValid() const {
+    return d_which == TYPE_VALIDITY ? d_validity : VALIDITY_UNKNOWN;
+  }
+
+  bool isUnknown() const {
+    return isSat() == SAT_UNKNOWN && isValid() == VALIDITY_UNKNOWN;
+  }
+
+  Type getType() const { return d_which; }
+
+  bool isNull() const { return d_which == TYPE_NONE; }
+
+  enum UnknownExplanation whyUnknown() const;
+
+  bool operator==(const Result& r) const;
+  inline bool operator!=(const Result& r) const;
+  Result asSatisfiabilityResult() const;
+  Result asValidityResult() const;
+
+  std::string toString() const;
+
+  std::string getInputName() const { return d_inputName; }
+
+  /**
+   * Write a Result out to a stream in this language.
+   */
+  void toStream(std::ostream& out, OutputLanguage language) const;
+
+  /**
+   * This is mostly the same the default
+   * If getType() == Result::TYPE_SAT && isSat() == Result::SAT_UNKNOWN,
+   *
+   */
+  void toStreamSmt2(std::ostream& out) const;
+
+  /**
+   * Write a Result out to a stream in the Tptp format
+   */
+  void toStreamTptp(std::ostream& out) const;
+
+  /**
+   * Write a Result out to a stream.
+   *
+   * The default implementation writes a reasonable string in lowercase
+   * for sat, unsat, valid, invalid, or unknown results.  This behavior
+   * is overridable by each Printer, since sometimes an output language
+   * has a particular preference for how results should appear.
+   */
+  void toStreamDefault(std::ostream& out) const;
+}; /* class Result */
+
+inline bool Result::operator!=(const Result& r) const { return !(*this == r); }
+
+std::ostream& operator<<(std::ostream& out, enum Result::Sat s) CVC4_PUBLIC;
+std::ostream& operator<<(std::ostream& out,
+                         enum Result::Validity v) CVC4_PUBLIC;
+std::ostream& operator<<(std::ostream& out,
+                         enum Result::UnknownExplanation e) CVC4_PUBLIC;
+
+bool operator==(enum Result::Sat s, const Result& r) CVC4_PUBLIC;
+bool operator==(enum Result::Validity v, const Result& r) CVC4_PUBLIC;
+
+bool operator!=(enum Result::Sat s, const Result& r) CVC4_PUBLIC;
+bool operator!=(enum Result::Validity v, const Result& r) CVC4_PUBLIC;
+
+} /* CVC4 namespace */
+
+#endif /* __CVC4__RESULT_H */
diff --git a/src/util/result.i b/src/util/result.i
new file mode 100644
index 0000000..b77bfd8
--- /dev/null
+++ b/src/util/result.i
@@ -0,0 +1,20 @@
+%{
+#include "util/result.h"
+%}
+
+%ignore CVC4::operator<<(std::ostream&, const Result& r);
+
+%rename(equals) CVC4::Result::operator==(const Result& r) const;
+%ignore CVC4::Result::operator!=(const Result& r) const;
+
+%ignore CVC4::operator<<(std::ostream&, enum Result::Sat);
+%ignore CVC4::operator<<(std::ostream&, enum Result::Validity);
+%ignore CVC4::operator<<(std::ostream&, enum Result::UnknownExplanation);
+
+%ignore CVC4::operator==(enum Result::Sat, const Result&);
+%ignore CVC4::operator!=(enum Result::Sat, const Result&);
+
+%ignore CVC4::operator==(enum Result::Validity, const Result&);
+%ignore CVC4::operator!=(enum Result::Validity, const Result&);
+
+%include "util/result.h"
diff --git a/src/util/sexpr.cpp b/src/util/sexpr.cpp
new file mode 100644
index 0000000..a34689d
--- /dev/null
+++ b/src/util/sexpr.cpp
@@ -0,0 +1,383 @@
+/*********************                                                        */
+/*! \file sexpr.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Simple representation of S-expressions
+ **
+ ** Simple representation of S-expressions.
+ **
+ ** SExprs have their own language specific printing procedures. The reason for
+ ** this being implemented on SExpr and not on the Printer class is that the
+ ** Printer class lives in libcvc4. It has to currently as it prints fairly
+ ** complicated objects, like Model, which in turn uses SmtEngine pointers.
+ ** However, SExprs need to be printed by Statistics. To get the output
+ ** consistent with the previous version, the printing of SExprs in different
+ ** languages is handled in the SExpr class and the libexpr library.
+ **/
+
+#include "util/sexpr.h"
+
+#include <iostream>
+#include <sstream>
+#include <vector>
+
+#include "base/cvc4_assert.h"
+#include "options/set_language.h"
+#include "util/smt2_quote_string.h"
+
+namespace CVC4 {
+
+const int PrettySExprs::s_iosIndex = std::ios_base::xalloc();
+
+std::ostream& operator<<(std::ostream& out, PrettySExprs ps) {
+  ps.applyPrettySExprs(out);
+  return out;
+}
+
+SExpr::~SExpr() {
+  if (d_children != NULL) {
+    delete d_children;
+    d_children = NULL;
+  }
+  Assert(d_children == NULL);
+}
+
+SExpr& SExpr::operator=(const SExpr& other) {
+  d_sexprType = other.d_sexprType;
+  d_integerValue = other.d_integerValue;
+  d_rationalValue = other.d_rationalValue;
+  d_stringValue = other.d_stringValue;
+
+  if (d_children == NULL && other.d_children == NULL) {
+    // Do nothing.
+  } else if (d_children == NULL) {
+    d_children = new SExprVector(*other.d_children);
+  } else if (other.d_children == NULL) {
+    delete d_children;
+    d_children = NULL;
+  } else {
+    (*d_children) = other.getChildren();
+  }
+  Assert(isAtom() == other.isAtom());
+  Assert((d_children == NULL) == isAtom());
+  return *this;
+}
+
+SExpr::SExpr()
+    : d_sexprType(SEXPR_STRING),
+      d_integerValue(0),
+      d_rationalValue(0),
+      d_stringValue(""),
+      d_children(NULL) {}
+
+SExpr::SExpr(const SExpr& other)
+    : d_sexprType(other.d_sexprType),
+      d_integerValue(other.d_integerValue),
+      d_rationalValue(other.d_rationalValue),
+      d_stringValue(other.d_stringValue),
+      d_children(NULL) {
+  d_children =
+      (other.d_children == NULL) ? NULL : new SExprVector(*other.d_children);
+  // d_children being NULL is equivalent to the node being an atom.
+  Assert((d_children == NULL) == isAtom());
+}
+
+SExpr::SExpr(const CVC4::Integer& value)
+    : d_sexprType(SEXPR_INTEGER),
+      d_integerValue(value),
+      d_rationalValue(0),
+      d_stringValue(""),
+      d_children(NULL) {}
+
+SExpr::SExpr(int value)
+    : d_sexprType(SEXPR_INTEGER),
+      d_integerValue(value),
+      d_rationalValue(0),
+      d_stringValue(""),
+      d_children(NULL) {}
+
+SExpr::SExpr(long int value)
+    : d_sexprType(SEXPR_INTEGER),
+      d_integerValue(value),
+      d_rationalValue(0),
+      d_stringValue(""),
+      d_children(NULL) {}
+
+SExpr::SExpr(unsigned int value)
+    : d_sexprType(SEXPR_INTEGER),
+      d_integerValue(value),
+      d_rationalValue(0),
+      d_stringValue(""),
+      d_children(NULL) {}
+
+SExpr::SExpr(unsigned long int value)
+    : d_sexprType(SEXPR_INTEGER),
+      d_integerValue(value),
+      d_rationalValue(0),
+      d_stringValue(""),
+      d_children(NULL) {}
+
+SExpr::SExpr(const CVC4::Rational& value)
+    : d_sexprType(SEXPR_RATIONAL),
+      d_integerValue(0),
+      d_rationalValue(value),
+      d_stringValue(""),
+      d_children(NULL) {}
+
+SExpr::SExpr(const std::string& value)
+    : d_sexprType(SEXPR_STRING),
+      d_integerValue(0),
+      d_rationalValue(0),
+      d_stringValue(value),
+      d_children(NULL) {}
+
+/**
+ * This constructs a string expression from a const char* value.
+ * This cannot be removed in order to support SExpr("foo").
+ * Given the other constructors this SExpr("foo") converts to bool.
+ * instead of SExpr(string("foo")).
+ */
+SExpr::SExpr(const char* value)
+    : d_sexprType(SEXPR_STRING),
+      d_integerValue(0),
+      d_rationalValue(0),
+      d_stringValue(value),
+      d_children(NULL) {}
+
+SExpr::SExpr(bool value)
+    : d_sexprType(SEXPR_KEYWORD),
+      d_integerValue(0),
+      d_rationalValue(0),
+      d_stringValue(value ? "true" : "false"),
+      d_children(NULL) {}
+
+SExpr::SExpr(const Keyword& value)
+    : d_sexprType(SEXPR_KEYWORD),
+      d_integerValue(0),
+      d_rationalValue(0),
+      d_stringValue(value.getString()),
+      d_children(NULL) {}
+
+SExpr::SExpr(const std::vector<SExpr>& children)
+    : d_sexprType(SEXPR_NOT_ATOM),
+      d_integerValue(0),
+      d_rationalValue(0),
+      d_stringValue(""),
+      d_children(new SExprVector(children)) {}
+
+std::string SExpr::toString() const {
+  std::stringstream ss;
+  ss << (*this);
+  return ss.str();
+}
+
+/** Is this S-expression an atom? */
+bool SExpr::isAtom() const { return d_sexprType != SEXPR_NOT_ATOM; }
+
+/** Is this S-expression an integer? */
+bool SExpr::isInteger() const { return d_sexprType == SEXPR_INTEGER; }
+
+/** Is this S-expression a rational? */
+bool SExpr::isRational() const { return d_sexprType == SEXPR_RATIONAL; }
+
+/** Is this S-expression a string? */
+bool SExpr::isString() const { return d_sexprType == SEXPR_STRING; }
+
+/** Is this S-expression a keyword? */
+bool SExpr::isKeyword() const { return d_sexprType == SEXPR_KEYWORD; }
+
+std::ostream& operator<<(std::ostream& out, const SExpr& sexpr) {
+  SExpr::toStream(out, sexpr);
+  return out;
+}
+
+void SExpr::toStream(std::ostream& out, const SExpr& sexpr) {
+  toStream(out, sexpr, language::SetLanguage::getLanguage(out));
+}
+
+void SExpr::toStream(std::ostream& out, const SExpr& sexpr,
+                     OutputLanguage language) {
+  const int indent = PrettySExprs::getPrettySExprs(out) ? 2 : 0;
+  toStream(out, sexpr, language, indent);
+}
+
+void SExpr::toStream(std::ostream& out, const SExpr& sexpr,
+                     OutputLanguage language, int indent) {
+  if (sexpr.isKeyword() && languageQuotesKeywords(language)) {
+    out << quoteSymbol(sexpr.getValue());
+  } else {
+    toStreamRec(out, sexpr, language, indent);
+  }
+}
+
+void SExpr::toStreamRec(std::ostream& out, const SExpr& sexpr,
+                        OutputLanguage language, int indent) {
+  if (sexpr.isInteger()) {
+    out << sexpr.getIntegerValue();
+  } else if (sexpr.isRational()) {
+    const double approximation = sexpr.getRationalValue().getDouble();
+    out << std::fixed << approximation;
+  } else if (sexpr.isKeyword()) {
+    out << sexpr.getValue();
+  } else if (sexpr.isString()) {
+    std::string s = sexpr.getValue();
+    // escape backslash and quote
+    for (size_t i = 0; i < s.length(); ++i) {
+      if (s[i] == '"') {
+        s.replace(i, 1, "\\\"");
+        ++i;
+      } else if (s[i] == '\\') {
+        s.replace(i, 1, "\\\\");
+        ++i;
+      }
+    }
+    out << "\"" << s << "\"";
+  } else {
+    const std::vector<SExpr>& kids = sexpr.getChildren();
+    out << (indent > 0 && kids.size() > 1 ? "( " : "(");
+    bool first = true;
+    for (std::vector<SExpr>::const_iterator i = kids.begin(); i != kids.end();
+         ++i) {
+      if (first) {
+        first = false;
+      } else {
+        if (indent > 0) {
+          out << "\n" << std::string(indent, ' ');
+        } else {
+          out << ' ';
+        }
+      }
+      toStreamRec(out, *i, language,
+                  indent <= 0 || indent > 2 ? 0 : indent + 2);
+    }
+    if (indent > 0 && kids.size() > 1) {
+      out << '\n';
+      if (indent > 2) {
+        out << std::string(indent - 2, ' ');
+      }
+    }
+    out << ')';
+  }
+} /* toStreamRec() */
+
+bool SExpr::languageQuotesKeywords(OutputLanguage language) {
+  switch (language) {
+    case language::output::LANG_SMTLIB_V1:
+    case language::output::LANG_SMTLIB_V2_0:
+    case language::output::LANG_SMTLIB_V2_5:
+    case language::output::LANG_SYGUS:
+    case language::output::LANG_TPTP:
+    case language::output::LANG_Z3STR:
+      return true;
+    case language::output::LANG_AST:
+    case language::output::LANG_CVC3:
+    case language::output::LANG_CVC4:
+    default:
+      return false;
+  };
+}
+
+std::string SExpr::getValue() const {
+  PrettyCheckArgument(isAtom(), this);
+  switch (d_sexprType) {
+    case SEXPR_INTEGER:
+      return d_integerValue.toString();
+    case SEXPR_RATIONAL: {
+      // We choose to represent rationals as decimal strings rather than
+      // "numerator/denominator."  Perhaps an additional SEXPR_DECIMAL
+      // could be added if we need both styles, even if it's backed by
+      // the same Rational object.
+      std::stringstream ss;
+      ss << std::fixed << d_rationalValue.getDouble();
+      return ss.str();
+    }
+    case SEXPR_STRING:
+    case SEXPR_KEYWORD:
+      return d_stringValue;
+    case SEXPR_NOT_ATOM:
+      return std::string();
+  }
+  return std::string();
+}
+
+const CVC4::Integer& SExpr::getIntegerValue() const {
+  PrettyCheckArgument(isInteger(), this);
+  return d_integerValue;
+}
+
+const CVC4::Rational& SExpr::getRationalValue() const {
+  PrettyCheckArgument(isRational(), this);
+  return d_rationalValue;
+}
+
+const std::vector<SExpr>& SExpr::getChildren() const {
+  PrettyCheckArgument(!isAtom(), this);
+  Assert(d_children != NULL);
+  return *d_children;
+}
+
+bool SExpr::operator==(const SExpr& s) const {
+  if (d_sexprType == s.d_sexprType && d_integerValue == s.d_integerValue &&
+      d_rationalValue == s.d_rationalValue &&
+      d_stringValue == s.d_stringValue) {
+    if (d_children == NULL && s.d_children == NULL) {
+      return true;
+    } else if (d_children != NULL && s.d_children != NULL) {
+      return getChildren() == s.getChildren();
+    }
+  }
+  return false;
+}
+
+bool SExpr::operator!=(const SExpr& s) const { return !(*this == s); }
+
+SExpr SExpr::parseAtom(const std::string& atom) {
+  if (atom == "true") {
+    return SExpr(true);
+  } else if (atom == "false") {
+    return SExpr(false);
+  } else {
+    try {
+      Integer z(atom);
+      return SExpr(z);
+    } catch (std::invalid_argument&) {
+      // Fall through to the next case
+    }
+    try {
+      Rational q(atom);
+      return SExpr(q);
+    } catch (std::invalid_argument&) {
+      // Fall through to the next case
+    }
+    return SExpr(atom);
+  }
+}
+
+SExpr SExpr::parseListOfAtoms(const std::vector<std::string>& atoms) {
+  std::vector<SExpr> parsedAtoms;
+  typedef std::vector<std::string>::const_iterator const_iterator;
+  for (const_iterator i = atoms.begin(), i_end = atoms.end(); i != i_end; ++i) {
+    parsedAtoms.push_back(parseAtom(*i));
+  }
+  return SExpr(parsedAtoms);
+}
+
+SExpr SExpr::parseListOfListOfAtoms(
+    const std::vector<std::vector<std::string> >& atoms_lists) {
+  std::vector<SExpr> parsedListsOfAtoms;
+  typedef std::vector<std::vector<std::string> >::const_iterator const_iterator;
+  for (const_iterator i = atoms_lists.begin(), i_end = atoms_lists.end();
+       i != i_end; ++i) {
+    parsedListsOfAtoms.push_back(parseListOfAtoms(*i));
+  }
+  return SExpr(parsedListsOfAtoms);
+}
+
+} /* CVC4 namespace */
diff --git a/src/util/sexpr.h b/src/util/sexpr.h
new file mode 100644
index 0000000..0b51757
--- /dev/null
+++ b/src/util/sexpr.h
@@ -0,0 +1,304 @@
+/*********************                                                        */
+/*! \file sexpr.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters, Christopher L. Conway
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Simple representation of S-expressions
+ **
+ ** Simple representation of S-expressions.
+ ** These are used when a simple, and obvious interface for basic
+ ** expressions is appropraite.
+ **
+ ** These are quite ineffecient.
+ ** These are totally disconnected from any ExprManager.
+ ** These keep unique copies of all of their children.
+ ** These are VERY overly verbose and keep much more data than is needed.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__SEXPR_H
+#define __CVC4__SEXPR_H
+
+#include <iomanip>
+#include <iosfwd>
+#include <string>
+#include <vector>
+
+#include "base/exception.h"
+#include "options/language.h"
+#include "util/integer.h"
+#include "util/rational.h"
+
+namespace CVC4 {
+
+class CVC4_PUBLIC SExprKeyword {
+ public:
+  SExprKeyword(const std::string& s) : d_str(s) {}
+  const std::string& getString() const { return d_str; }
+
+ private:
+  std::string d_str;
+}; /* class SExpr::Keyword */
+
+/**
+ * A simple S-expression. An S-expression is either an atom with a
+ * string value, or a list of other S-expressions.
+ */
+class CVC4_PUBLIC SExpr {
+ public:
+  typedef SExprKeyword Keyword;
+
+  SExpr();
+  SExpr(const SExpr&);
+  SExpr& operator=(const SExpr& other);
+  ~SExpr();
+
+  SExpr(const CVC4::Integer& value);
+
+  SExpr(int value);
+  SExpr(long int value);
+  SExpr(unsigned int value);
+  SExpr(unsigned long int value);
+
+  SExpr(const CVC4::Rational& value);
+
+  SExpr(const std::string& value);
+
+  /**
+   * This constructs a string expression from a const char* value.
+   * This cannot be removed in order to support SExpr("foo").
+   * Given the other constructors this SExpr("foo") converts to bool.
+   * instead of SExpr(string("foo")).
+   */
+  SExpr(const char* value);
+
+  /**
+   * This adds a convenience wrapper to SExpr to cast from bools.
+   * This is internally handled as the strings "true" and "false"
+   */
+  SExpr(bool value);
+  SExpr(const Keyword& value);
+  SExpr(const std::vector<SExpr>& children);
+
+  /** Is this S-expression an atom? */
+  bool isAtom() const;
+
+  /** Is this S-expression an integer? */
+  bool isInteger() const;
+
+  /** Is this S-expression a rational? */
+  bool isRational() const;
+
+  /** Is this S-expression a string? */
+  bool isString() const;
+
+  /** Is this S-expression a keyword? */
+  bool isKeyword() const;
+
+  /**
+   * This wraps the toStream() printer.
+   * NOTE: toString() and getValue() may differ on Keywords based on
+   * the current language set in expr.
+   */
+  std::string toString() const;
+
+  /**
+   * Get the string value of this S-expression. This will cause an
+   * error if this S-expression is not an atom.
+   */
+  std::string getValue() const;
+
+  /**
+   * Get the integer value of this S-expression. This will cause an
+   * error if this S-expression is not an integer.
+   */
+  const CVC4::Integer& getIntegerValue() const;
+
+  /**
+   * Get the rational value of this S-expression. This will cause an
+   * error if this S-expression is not a rational.
+   */
+  const CVC4::Rational& getRationalValue() const;
+
+  /**
+   * Get the children of this S-expression. This will cause an error
+   * if this S-expression is not a list.
+   */
+  const std::vector<SExpr>& getChildren() const;
+
+  /** Is this S-expression equal to another? */
+  bool operator==(const SExpr& s) const;
+
+  /** Is this S-expression different from another? */
+  bool operator!=(const SExpr& s) const;
+
+  /**
+   * This returns the best match in the following order:
+   * match atom with
+   *  "true", "false" -> SExpr(value)
+   * | is and integer -> as integer
+   * | is a rational -> as rational
+   * | _ -> SExpr()
+   */
+  static SExpr parseAtom(const std::string& atom);
+
+  /**
+   * Parses a list of atoms.
+   */
+  static SExpr parseListOfAtoms(const std::vector<std::string>& atoms);
+
+  /**
+   * Parses a list of list of atoms.
+   */
+  static SExpr parseListOfListOfAtoms(
+      const std::vector<std::vector<std::string> >& atoms_lists);
+
+  /**
+   * Outputs the SExpr onto the ostream out. This version reads defaults to the
+   * OutputLanguage, language::SetLanguage::getLanguage(out). The indent level
+   * is
+   * set to 2 if PrettySExprs::getPrettySExprs() is on and is 0 otherwise.
+   */
+  static void toStream(std::ostream& out, const SExpr& sexpr);
+
+  /**
+   * Outputs the SExpr onto the ostream out. This version sets the indent level
+   * to 2 if PrettySExprs::getPrettySExprs() is on.
+   */
+  static void toStream(std::ostream& out, const SExpr& sexpr,
+                       OutputLanguage language);
+
+  /**
+   * Outputs the SExpr onto the ostream out.
+   * If the languageQuotesKeywords(language), then a top level keyword, " X",
+   * that needs quoting according to the SMT2 language standard is printed with
+   * quotes, "| X|".
+   * Otherwise this prints using toStreamRec().
+   *
+   * TIM: Keywords that are children are not currently quoted. This seems
+   * incorrect but I am just reproduicing the old behavior even if it does not
+   * make
+   * sense.
+   */
+  static void toStream(std::ostream& out, const SExpr& sexpr,
+                       OutputLanguage language, int indent);
+
+ private:
+  /**
+   * Simple printer for SExpr to an ostream.
+   * The current implementation is language independent.
+   */
+  static void toStreamRec(std::ostream& out, const SExpr& sexpr,
+                          OutputLanguage language, int indent);
+
+  /** Returns true if this language quotes Keywords when printing. */
+  static bool languageQuotesKeywords(OutputLanguage language);
+
+  enum SExprTypes {
+    SEXPR_STRING,
+    SEXPR_KEYWORD,
+    SEXPR_INTEGER,
+    SEXPR_RATIONAL,
+    SEXPR_NOT_ATOM
+  } d_sexprType;
+
+  /** The value of an atomic integer-valued S-expression. */
+  CVC4::Integer d_integerValue;
+
+  /** The value of an atomic rational-valued S-expression. */
+  CVC4::Rational d_rationalValue;
+
+  /** The value of an atomic S-expression. */
+  std::string d_stringValue;
+
+  typedef std::vector<SExpr> SExprVector;
+
+  /**
+   * The children of a list S-expression.
+   * Whenever the SExpr isAtom() holds, this points at NULL.
+   *
+   * This should be a pointer in case the implementation of vector<SExpr> ever
+   * directly contained or allocated an SExpr. If this happened this would
+   * trigger,
+   * either the size being infinite or SExpr() being an infinite loop.
+   */
+  SExprVector* d_children;
+}; /* class SExpr */
+
+/** Prints an SExpr. */
+std::ostream& operator<<(std::ostream& out, const SExpr& sexpr) CVC4_PUBLIC;
+
+/**
+ * IOStream manipulator to pretty-print SExprs.
+ */
+class CVC4_PUBLIC PrettySExprs {
+  /**
+   * The allocated index in ios_base for our setting.
+   */
+  static const int s_iosIndex;
+
+  /**
+   * When this manipulator is used, the setting is stored here.
+   */
+  bool d_prettySExprs;
+
+ public:
+  /**
+   * Construct a PrettySExprs with the given setting.
+   */
+  PrettySExprs(bool prettySExprs) : d_prettySExprs(prettySExprs) {}
+
+  inline void applyPrettySExprs(std::ostream& out) {
+    out.iword(s_iosIndex) = d_prettySExprs;
+  }
+
+  static inline bool getPrettySExprs(std::ostream& out) {
+    return out.iword(s_iosIndex);
+  }
+
+  static inline void setPrettySExprs(std::ostream& out, bool prettySExprs) {
+    out.iword(s_iosIndex) = prettySExprs;
+  }
+
+  /**
+   * Set the pretty-sexprs state on the output stream for the current
+   * stack scope.  This makes sure the old state is reset on the
+   * stream after normal OR exceptional exit from the scope, using the
+   * RAII C++ idiom.
+   */
+  class Scope {
+    std::ostream& d_out;
+    bool d_oldPrettySExprs;
+
+   public:
+    inline Scope(std::ostream& out, bool prettySExprs)
+        : d_out(out), d_oldPrettySExprs(PrettySExprs::getPrettySExprs(out)) {
+      PrettySExprs::setPrettySExprs(out, prettySExprs);
+    }
+
+    inline ~Scope() { PrettySExprs::setPrettySExprs(d_out, d_oldPrettySExprs); }
+
+  }; /* class PrettySExprs::Scope */
+
+}; /* class PrettySExprs */
+
+/**
+ * Sets the default pretty-sexprs setting for an ostream.  Use like this:
+ *
+ *   // let out be an ostream, s an SExpr
+ *   out << PrettySExprs(true) << s << endl;
+ *
+ * The setting stays permanently (until set again) with the stream.
+ */
+std::ostream& operator<<(std::ostream& out, PrettySExprs ps);
+
+} /* CVC4 namespace */
+
+#endif /* __CVC4__SEXPR_H */
diff --git a/src/util/sexpr.i b/src/util/sexpr.i
new file mode 100644
index 0000000..3c865c0
--- /dev/null
+++ b/src/util/sexpr.i
@@ -0,0 +1,22 @@
+%{
+#include "util/sexpr.h"
+%}
+
+%ignore CVC4::operator<<(std::ostream&, const SExpr&);
+%ignore CVC4::operator<<(std::ostream&, SExpr::SexprTypes);
+%ignore CVC4::operator<<(std::ostream&, PrettySExprs);
+
+// for Java and the like
+%extend CVC4::SExpr {
+  std::string toString() const { return self->getValue(); }
+};/* CVC4::SExpr */
+
+%ignore CVC4::SExpr::SExpr(int);
+%ignore CVC4::SExpr::SExpr(unsigned int);
+%ignore CVC4::SExpr::SExpr(unsigned long);
+%ignore CVC4::SExpr::SExpr(const char*);
+
+%rename(equals) CVC4::SExpr::operator==(const SExpr&) const;
+%ignore CVC4::SExpr::operator!=(const SExpr&) const;
+
+%include "util/sexpr.h"
diff --git a/src/util/smt2_quote_string.cpp b/src/util/smt2_quote_string.cpp
new file mode 100644
index 0000000..578be99
--- /dev/null
+++ b/src/util/smt2_quote_string.cpp
@@ -0,0 +1,41 @@
+/*********************                                                        */
+/*! \file smt2_quote_string.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Quotes a string if necessary for smt2.
+ **
+ ** Quotes a string if necessary for smt2.
+ **/
+
+#include "util/smt2_quote_string.h"
+
+#include <string>
+
+namespace CVC4 {
+
+/**
+ * SMT-LIB 2 quoting for symbols
+ */
+std::string quoteSymbol(const std::string& s){
+  if(s.find_first_not_of("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789~!@$%^&*_-+=<>.?/") == std::string::npos) {
+    // simple unquoted symbol
+    return s;
+  } else {
+    std::string tmp(s);
+    // must quote the symbol, but it cannot contain | or \, we turn those into _
+    size_t p;
+    while((p = tmp.find_first_of("\\|")) != std::string::npos) {
+      tmp = tmp.replace(p, 1, "_");
+    }
+    return "|" + tmp + "|";
+  }
+}
+
+}/* CVC4 namespace */
diff --git a/src/util/smt2_quote_string.h b/src/util/smt2_quote_string.h
new file mode 100644
index 0000000..2d7f0b2
--- /dev/null
+++ b/src/util/smt2_quote_string.h
@@ -0,0 +1,33 @@
+/*********************                                                        */
+/*! \file smt2_quote_string.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Quotes a string if necessary for smt2.
+ **
+ ** Quotes a string if necessary for smt2.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__UTIL__SMT2_QUOTE_STRING_H
+#define __CVC4__UTIL__SMT2_QUOTE_STRING_H
+
+#include <string>
+
+namespace CVC4 {
+
+/**
+ * SMT-LIB 2 quoting for symbols
+ */
+std::string quoteSymbol(const std::string& s);
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__UTIL__SMT2_QUOTE_STRING_H */
diff --git a/src/util/statistics.cpp b/src/util/statistics.cpp
new file mode 100644
index 0000000..368335f
--- /dev/null
+++ b/src/util/statistics.cpp
@@ -0,0 +1,134 @@
+/*********************                                                        */
+/*! \file statistics.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "util/statistics.h"
+
+#include <typeinfo>
+
+#include "util/statistics_registry.h" // for details about class Stat
+
+
+namespace CVC4 {
+
+std::string StatisticsBase::s_regDelim("::");
+
+bool StatisticsBase::StatCmp::operator()(const Stat* s1, const Stat* s2) const {
+  return s1->getName() < s2->getName();
+}
+
+StatisticsBase::iterator::value_type StatisticsBase::iterator::operator*() const {
+  return std::make_pair((*d_it)->getName(), (*d_it)->getValue());
+}
+
+StatisticsBase::StatisticsBase() :
+  d_prefix(),
+  d_stats() {
+}
+
+StatisticsBase::StatisticsBase(const StatisticsBase& stats) :
+  d_prefix(stats.d_prefix),
+  d_stats() {
+}
+
+StatisticsBase& StatisticsBase::operator=(const StatisticsBase& stats) {
+  d_prefix = stats.d_prefix;
+  return *this;
+}
+
+void Statistics::copyFrom(const StatisticsBase& stats) {
+  // This is ugly, but otherwise we have to introduce a "friend" relation for
+  // Base to its derived class (really obnoxious).
+  const StatisticsBase::const_iterator i_begin = stats.begin();
+  const StatisticsBase::const_iterator i_end = stats.end();
+  for(StatisticsBase::const_iterator i = i_begin; i != i_end; ++i) {
+    SExprStat* p = new SExprStat((*i).first, (*i).second);
+    d_stats.insert(p);
+  }
+}
+
+void Statistics::clear() {
+  for(StatSet::iterator i = d_stats.begin(); i != d_stats.end(); ++i) {
+    delete *i;
+  }
+  d_stats.clear();
+}
+
+Statistics::Statistics(const StatisticsBase& stats) :
+  StatisticsBase(stats) {
+  copyFrom(stats);
+}
+
+Statistics::Statistics(const Statistics& stats) :
+  StatisticsBase(stats) {
+  copyFrom(stats);
+}
+
+Statistics::~Statistics() {
+  clear();
+}
+
+Statistics& Statistics::operator=(const StatisticsBase& stats) {
+  clear();
+  this->StatisticsBase::operator=(stats);
+  copyFrom(stats);
+
+  return *this;
+}
+
+Statistics& Statistics::operator=(const Statistics& stats) {
+  return this->operator=((const StatisticsBase&)stats);
+}
+
+StatisticsBase::const_iterator StatisticsBase::begin() const {
+  return iterator(d_stats.begin());
+}
+
+StatisticsBase::const_iterator StatisticsBase::end() const {
+  return iterator(d_stats.end());
+}
+
+void StatisticsBase::flushInformation(std::ostream &out) const {
+#ifdef CVC4_STATISTICS_ON
+  for(StatSet::iterator i = d_stats.begin();
+      i != d_stats.end();
+      ++i) {
+    Stat* s = *i;
+    if(d_prefix != "") {
+      out << d_prefix << s_regDelim;
+    }
+    s->flushStat(out);
+    out << std::endl;
+  }
+#endif /* CVC4_STATISTICS_ON */
+}
+
+SExpr StatisticsBase::getStatistic(std::string name) const {
+  SExpr value;
+  IntStat s(name, 0);
+  StatSet::iterator i = d_stats.find(&s);
+  if(i != d_stats.end()) {
+    return (*i)->getValue();
+  } else {
+    return SExpr();
+  }
+}
+
+void StatisticsBase::setPrefix(const std::string& prefix) {
+  d_prefix = prefix;
+}
+
+}/* CVC4 namespace */
diff --git a/src/util/statistics.h b/src/util/statistics.h
new file mode 100644
index 0000000..663d207
--- /dev/null
+++ b/src/util/statistics.h
@@ -0,0 +1,129 @@
+/*********************                                                        */
+/*! \file statistics.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__STATISTICS_H
+#define __CVC4__STATISTICS_H
+
+#include <iterator>
+#include <ostream>
+#include <set>
+#include <string>
+#include <utility>
+
+#include "util/sexpr.h"
+
+namespace CVC4 {
+
+class Stat;
+
+class CVC4_PUBLIC StatisticsBase {
+protected:
+
+  static std::string s_regDelim;
+
+  /** A helper class for comparing two statistics */
+  struct StatCmp {
+    bool operator()(const Stat* s1, const Stat* s2) const;
+  };/* struct StatisticsRegistry::StatCmp */
+
+  /** A type for a set of statistics */
+  typedef std::set< Stat*, StatCmp > StatSet;
+
+  std::string d_prefix;
+
+  /** The set of statistics in this object */
+  StatSet d_stats;
+
+  StatisticsBase();
+  StatisticsBase(const StatisticsBase& stats);
+  StatisticsBase& operator=(const StatisticsBase& stats);
+
+public:
+
+  virtual ~StatisticsBase() { }
+
+  class CVC4_PUBLIC iterator : public std::iterator< std::input_iterator_tag, std::pair<std::string, SExpr> > {
+    StatSet::iterator d_it;
+
+    iterator(StatSet::iterator it) : d_it(it) { }
+
+    friend class StatisticsBase;
+
+  public:
+    iterator() : d_it() { }
+    iterator(const iterator& it) : d_it(it.d_it) { }
+    value_type operator*() const;
+    iterator& operator++() { ++d_it; return *this; }
+    iterator operator++(int) { iterator old = *this; ++d_it; return old; }
+    bool operator==(const iterator& i) const { return d_it == i.d_it; }
+    bool operator!=(const iterator& i) const { return d_it != i.d_it; }
+  };/* class StatisticsBase::iterator */
+
+  /** An iterator type over a set of statistics. */
+  typedef iterator const_iterator;
+
+  /** Set the output prefix for this set of statistics. */
+  virtual void setPrefix(const std::string& prefix);
+
+  /** Flush all statistics to the given output stream. */
+  void flushInformation(std::ostream& out) const;
+
+  /** Get the value of a named statistic. */
+  SExpr getStatistic(std::string name) const;
+
+  /**
+   * Get an iterator to the beginning of the range of the set of
+   * statistics.
+   */
+  const_iterator begin() const;
+
+  /**
+   * Get an iterator to the end of the range of the set of statistics.
+   */
+  const_iterator end() const;
+
+};/* class StatisticsBase */
+
+class CVC4_PUBLIC Statistics : public StatisticsBase {
+  void clear();
+  void copyFrom(const StatisticsBase&);
+
+public:
+
+  /**
+   * Override the copy constructor to do a "deep" copy of statistics
+   * values.
+   */
+  Statistics(const StatisticsBase& stats);
+  Statistics(const Statistics& stats);
+
+  ~Statistics();
+
+  /**
+   * Override the assignment operator to do a "deep" copy of statistics
+   * values.
+   */
+  Statistics& operator=(const StatisticsBase& stats);
+  Statistics& operator=(const Statistics& stats);
+
+};/* class Statistics */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__STATISTICS_H */
diff --git a/src/util/statistics.i b/src/util/statistics.i
new file mode 100644
index 0000000..bd3a4ee
--- /dev/null
+++ b/src/util/statistics.i
@@ -0,0 +1,79 @@
+%{
+#include "util/statistics.h"
+
+#ifdef SWIGJAVA
+
+#include "bindings/java_iterator_adapter.h"
+#include "bindings/java_stream_adapters.h"
+
+#endif /* SWIGJAVA */
+%}
+
+%rename(assign) CVC4::Statistics::operator=(const StatisticsBase&);
+%rename(assign) CVC4::Statistics::operator=(const Statistics& stats);
+
+#ifdef SWIGJAVA
+
+// Instead of StatisticsBase::begin() and end(), create an
+// iterator() method on the Java side that returns a Java-style
+// Iterator.
+%ignore CVC4::StatisticsBase::begin();
+%ignore CVC4::StatisticsBase::end();
+%ignore CVC4::StatisticsBase::begin() const;
+%ignore CVC4::StatisticsBase::end() const;
+%extend CVC4::StatisticsBase {
+  CVC4::JavaIteratorAdapter<CVC4::StatisticsBase> iterator() {
+    return CVC4::JavaIteratorAdapter<CVC4::StatisticsBase>(*$self);
+  }
+}
+
+// StatisticsBase is "iterable" on the Java side
+%typemap(javainterfaces) CVC4::StatisticsBase "java.lang.Iterable<Object[]>";
+
+// the JavaIteratorAdapter should not be public, and implements Iterator
+%typemap(javaclassmodifiers) CVC4::JavaIteratorAdapter<CVC4::StatisticsBase> "class";
+%typemap(javainterfaces) CVC4::JavaIteratorAdapter<CVC4::StatisticsBase> "java.util.Iterator<Object[]>";
+// add some functions to the Java side (do it here because there's no way to do these in C++)
+%typemap(javacode) CVC4::JavaIteratorAdapter<CVC4::StatisticsBase> "
+  public void remove() {
+    throw new java.lang.UnsupportedOperationException();
+  }
+
+  public Object[] next() {
+    if(hasNext()) {
+      return getNext();
+    } else {
+      throw new java.util.NoSuchElementException();
+    }
+  }
+"
+// getNext() just allows C++ iterator access from Java-side next(), make it private
+%javamethodmodifiers CVC4::JavaIteratorAdapter<CVC4::StatisticsBase>::getNext() "private";
+
+// map the types appropriately.  for statistics, the "payload" of the iterator is an Object[].
+// These Object arrays are always of two elements, the first is a String and the second an
+// SExpr.  (On the C++ side, it is a std::pair<std::string, SExpr>.)
+%typemap(jni) CVC4::StatisticsBase::const_iterator::value_type "jobjectArray";
+%typemap(jtype) CVC4::StatisticsBase::const_iterator::value_type "java.lang.Object[]";
+%typemap(jstype) CVC4::StatisticsBase::const_iterator::value_type "java.lang.Object[]";
+%typemap(javaout) CVC4::StatisticsBase::const_iterator::value_type { return $jnicall; }
+%typemap(out) CVC4::StatisticsBase::const_iterator::value_type {
+      $result = jenv->NewObjectArray(2, jenv->FindClass("java/lang/Object"), $null);
+      jenv->SetObjectArrayElement($result, 0, jenv->NewStringUTF($1.first.c_str()));
+      jclass clazz = jenv->FindClass("edu/nyu/acsys/CVC4/SExpr");
+      jmethodID methodid = jenv->GetMethodID(clazz, "<init>", "(JZ)V");
+      jenv->SetObjectArrayElement($result, 1, jenv->NewObject(clazz, methodid, reinterpret_cast<long>(new CVC4::SExpr($1.second)), true));
+    };
+
+#endif /* SWIGJAVA */
+
+%include "util/statistics.h"
+
+#ifdef SWIGJAVA
+
+%include "bindings/java_iterator_adapter.h"
+%include "bindings/java_stream_adapters.h"
+
+%template(JavaIteratorAdapter_StatisticsBase) CVC4::JavaIteratorAdapter<CVC4::StatisticsBase>;
+
+#endif /* SWIGJAVA */
diff --git a/src/util/statistics_registry.cpp b/src/util/statistics_registry.cpp
new file mode 100644
index 0000000..cb8e1ce
--- /dev/null
+++ b/src/util/statistics_registry.cpp
@@ -0,0 +1,245 @@
+/*********************                                                        */
+/*! \file statistics_registry.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "util/statistics_registry.h"
+
+#include "base/cvc4_assert.h"
+#include "lib/clock_gettime.h"
+
+
+#ifdef CVC4_STATISTICS_ON
+#  define __CVC4_USE_STATISTICS true
+#else
+#  define __CVC4_USE_STATISTICS false
+#endif
+
+
+/****************************************************************************/
+/* Some utility functions for timespec                                    */
+/****************************************************************************/
+namespace CVC4 {
+
+/** 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);
+  CheckArgument(b.tv_nsec >= 0 && b.tv_nsec < nsec_per_sec, b);
+  a.tv_sec += b.tv_sec;
+  long nsec = a.tv_nsec + b.tv_nsec;
+  assert(nsec >= 0);
+  if(nsec < 0) {
+    nsec += nsec_per_sec;
+    --a.tv_sec;
+  }
+  if(nsec >= nsec_per_sec) {
+    nsec -= nsec_per_sec;
+    ++a.tv_sec;
+  }
+  assert(nsec >= 0 && nsec < nsec_per_sec);
+  a.tv_nsec = nsec;
+  return a;
+}
+
+/** 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);
+  CheckArgument(b.tv_nsec >= 0 && b.tv_nsec < nsec_per_sec, b);
+  a.tv_sec -= b.tv_sec;
+  long nsec = a.tv_nsec - b.tv_nsec;
+  if(nsec < 0) {
+    nsec += nsec_per_sec;
+    --a.tv_sec;
+  }
+  if(nsec >= nsec_per_sec) {
+    nsec -= nsec_per_sec;
+    ++a.tv_sec;
+  }
+  assert(nsec >= 0 && nsec < nsec_per_sec);
+  a.tv_nsec = nsec;
+  return a;
+}
+
+/** Add two timespecs. */
+inline timespec operator+(const timespec& a, const timespec& b) {
+  timespec result = a;
+  return result += b;
+}
+
+/** Subtract two timespecs. */
+inline timespec operator-(const timespec& a, const timespec& b) {
+  timespec result = a;
+  return result -= b;
+}
+
+/**
+ * Compare two timespecs for equality.
+ * This must be kept in sync with the copy in test/util/stats_black.h
+ */
+inline bool operator==(const timespec& a, const timespec& b) {
+  // assumes a.tv_nsec and b.tv_nsec are in range
+  return a.tv_sec == b.tv_sec && a.tv_nsec == b.tv_nsec;
+}
+
+/** Compare two timespecs for disequality. */
+inline bool operator!=(const timespec& a, const timespec& b) {
+  // assumes a.tv_nsec and b.tv_nsec are in range
+  return !(a == b);
+}
+
+/** Compare two timespecs, returning true iff a < b. */
+inline bool operator<(const timespec& a, const timespec& b) {
+  // assumes a.tv_nsec and b.tv_nsec are in range
+  return a.tv_sec < b.tv_sec ||
+    (a.tv_sec == b.tv_sec && a.tv_nsec < b.tv_nsec);
+}
+
+/** Compare two timespecs, returning true iff a > b. */
+inline bool operator>(const timespec& a, const timespec& b) {
+  // assumes a.tv_nsec and b.tv_nsec are in range
+  return a.tv_sec > b.tv_sec ||
+    (a.tv_sec == b.tv_sec && a.tv_nsec > b.tv_nsec);
+}
+
+/** Compare two timespecs, returning true iff a <= b. */
+inline bool operator<=(const timespec& a, const timespec& b) {
+  // assumes a.tv_nsec and b.tv_nsec are in range
+  return !(a > b);
+}
+
+/** Compare two timespecs, returning true iff a >= b. */
+inline bool operator>=(const timespec& a, const timespec& b) {
+  // assumes a.tv_nsec and b.tv_nsec are in range
+  return !(a < b);
+}
+
+/** Output a timespec on an output stream. */
+std::ostream& operator<<(std::ostream& os, const timespec& t) {
+  // assumes t.tv_nsec is in range
+  return os << t.tv_sec << "."
+            << std::setfill('0') << std::setw(9) << std::right << t.tv_nsec;
+}
+
+
+/** Construct a statistics registry */
+StatisticsRegistry::StatisticsRegistry(const std::string& name)
+  throw(CVC4::IllegalArgumentException) :
+  Stat(name) {
+
+  d_prefix = name;
+  if(__CVC4_USE_STATISTICS) {
+    PrettyCheckArgument(d_name.find(s_regDelim) == std::string::npos, name,
+                        "StatisticsRegistry names cannot contain the string \"%s\"",
+                    s_regDelim.c_str());
+  }
+}
+
+void StatisticsRegistry::registerStat(Stat* s) throw(CVC4::IllegalArgumentException) {
+#ifdef CVC4_STATISTICS_ON
+  PrettyCheckArgument(d_stats.find(s) == d_stats.end(), s,
+                "Statistic `%s' was not registered with this registry.",
+                s->getName().c_str());
+  d_stats.insert(s);
+#endif /* CVC4_STATISTICS_ON */
+}/* StatisticsRegistry::registerStat_() */
+
+void StatisticsRegistry::unregisterStat(Stat* s) throw(CVC4::IllegalArgumentException) {
+#ifdef CVC4_STATISTICS_ON
+  PrettyCheckArgument(d_stats.find(s) != d_stats.end(), s,
+                "Statistic `%s' was not registered with this registry.",
+                s->getName().c_str());
+  d_stats.erase(s);
+#endif /* CVC4_STATISTICS_ON */
+}/* StatisticsRegistry::unregisterStat_() */
+
+void StatisticsRegistry::flushStat(std::ostream &out) const {
+#ifdef CVC4_STATISTICS_ON
+  flushInformation(out);
+#endif /* CVC4_STATISTICS_ON */
+}
+
+void StatisticsRegistry::flushInformation(std::ostream &out) const {
+#ifdef CVC4_STATISTICS_ON
+  this->StatisticsBase::flushInformation(out);
+#endif /* CVC4_STATISTICS_ON */
+}
+
+void TimerStat::start() {
+  if(__CVC4_USE_STATISTICS) {
+    PrettyCheckArgument(!d_running, *this, "timer already running");
+    clock_gettime(CLOCK_MONOTONIC, &d_start);
+    d_running = true;
+  }
+}/* TimerStat::start() */
+
+void TimerStat::stop() {
+  if(__CVC4_USE_STATISTICS) {
+    PrettyCheckArgument(d_running, *this, "timer not running");
+    ::timespec end;
+    clock_gettime(CLOCK_MONOTONIC, &end);
+    d_data += end - d_start;
+    d_running = false;
+  }
+}/* TimerStat::stop() */
+
+bool TimerStat::running() const {
+  return d_running;
+}/* TimerStat::running() */
+
+timespec TimerStat::getData() const {
+  ::timespec data = d_data;
+  if(__CVC4_USE_STATISTICS && d_running) {
+    ::timespec end;
+    clock_gettime(CLOCK_MONOTONIC, &end);
+    data += end - d_start;
+  }
+  return data;
+}
+
+SExpr TimerStat::getValue() const {
+  ::timespec data = d_data;
+  if(__CVC4_USE_STATISTICS && d_running) {
+    ::timespec end;
+    clock_gettime(CLOCK_MONOTONIC, &end);
+    data += end - d_start;
+  }
+  std::stringstream ss;
+  ss << std::fixed << std::setprecision(8) << data;
+  return SExpr(Rational::fromDecimal(ss.str()));
+}/* TimerStat::getValue() */
+
+
+RegisterStatistic::RegisterStatistic(StatisticsRegistry* reg, Stat* stat)
+    : d_reg(reg),
+      d_stat(stat) {
+  CheckArgument(reg != NULL, reg,
+                "You need to specify a statistics registry"
+                "on which to set the statistic");
+  d_reg->registerStat(d_stat);
+}
+
+RegisterStatistic::~RegisterStatistic() {
+  d_reg->unregisterStat(d_stat);
+}
+
+}/* CVC4 namespace */
+
+#undef __CVC4_USE_STATISTICS
diff --git a/src/util/statistics_registry.h b/src/util/statistics_registry.h
new file mode 100644
index 0000000..4f2c356
--- /dev/null
+++ b/src/util/statistics_registry.h
@@ -0,0 +1,766 @@
+/*********************                                                        */
+/*! \file statistics_registry.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King, Kshitij Bansal
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Statistics utility classes
+ **
+ ** Statistics utility classes, including classes for holding (and referring
+ ** to) statistics, the statistics registry, and some other associated
+ ** classes.
+ **
+ ** This file is somewhat unique in that it is a "cvc4_private_library.h"
+ ** header. Because of this, most classes need to be marked as CVC4_PUBLIC.
+ ** This is because CVC4_PUBLIC is connected to the visibility of the linkage
+ ** in the object files for the class. It does not dictate what headers are
+ ** installed.
+ ** Because the StatisticsRegistry and associated classes are built into
+ ** libutil, which is used by libcvc4, and then later used by the libmain
+ ** without referring to libutil as well. Thus the without marking these as
+ ** CVC4_PUBLIC the symbols would be external in libutil, internal in libcvc4,
+ ** and not be visible to libmain and linking would fail.
+ ** You can debug this using "nm" on the .so and .o files in the builds/
+ ** directory. See
+ ** http://eli.thegreenplace.net/2013/07/09/library-order-in-static-linking
+ ** for a longer discussion on symbol visibility.
+ **/
+
+#include "cvc4_private_library.h"
+
+#ifndef __CVC4__STATISTICS_REGISTRY_H
+#define __CVC4__STATISTICS_REGISTRY_H
+
+#include <stdint.h>
+
+#include <cassert>
+#include <ctime>
+#include <iomanip>
+#include <map>
+#include <sstream>
+#include <vector>
+
+#include "base/exception.h"
+#include "lib/clock_gettime.h"
+#include "util/statistics.h"
+
+namespace CVC4 {
+
+/**
+ * Prints a timespec.
+ *
+ * This is used in the implementation of TimerStat. This needs to be available
+ * before Stat due to ordering constraints in clang for TimerStat.
+ */
+std::ostream& operator<<(std::ostream& os, const timespec& t) CVC4_PUBLIC;
+
+#ifdef CVC4_STATISTICS_ON
+#  define __CVC4_USE_STATISTICS true
+#else
+#  define __CVC4_USE_STATISTICS false
+#endif
+
+
+/**
+ * The base class for all statistics.
+ *
+ * This base class keeps the name of the statistic and declares the (pure)
+ * virtual function flushInformation().  Derived classes must implement
+ * this function and pass their name to the base class constructor.
+ *
+ * This class also (statically) maintains the delimiter used to separate
+ * the name and the value when statistics are output.
+ */
+class Stat {
+protected:
+  /** The name of this statistic */
+  std::string d_name;
+
+public:
+
+  /** Nullary constructor, does nothing */
+  Stat() { }
+
+  /**
+   * Construct a statistic with the given name.  Debug builds of CVC4
+   * will throw an assertion exception if the given name contains the
+   * statistic delimiter string.
+   */
+  Stat(const std::string& name) throw(CVC4::IllegalArgumentException) :
+    d_name(name) {
+    if(__CVC4_USE_STATISTICS) {
+      CheckArgument(d_name.find(", ") == std::string::npos, name,
+                    "Statistics names cannot include a comma (',')");
+    }
+  }
+
+  /** Destruct a statistic.  This base-class version does nothing. */
+  virtual ~Stat() {}
+
+  /**
+   * Flush the value of this statistic to an output stream.  Should
+   * finish the output with an end-of-line character.
+   */
+  virtual void flushInformation(std::ostream& out) const = 0;
+
+  /**
+   * Flush the name,value pair of this statistic to an output stream.
+   * Uses the statistic delimiter string between name and value.
+   *
+   * May be redefined by a child class
+   */
+  virtual void flushStat(std::ostream& out) const {
+    if(__CVC4_USE_STATISTICS) {
+      out << d_name << ", ";
+      flushInformation(out);
+    }
+  }
+
+  /** Get the name of this statistic. */
+  const std::string& getName() const {
+    return d_name;
+  }
+
+  /** Get the value of this statistic as a string. */
+  virtual SExpr getValue() const {
+    std::stringstream ss;
+    flushInformation(ss);
+    return SExpr(ss.str());
+  }
+
+};/* class Stat */
+
+// A generic way of making a SExpr from templated stats code.
+// for example, the uint64_t version ensures that we create
+// Integer-SExprs for ReadOnlyDataStats (like those inside
+// Minisat) without having to specialize the entire
+// ReadOnlyDataStat class template.
+template <class T>
+inline SExpr mkSExpr(const T& x) {
+  std::stringstream ss;
+  ss << x;
+  return SExpr(ss.str());
+}
+
+template <>
+inline SExpr mkSExpr(const uint64_t& x) {
+  return SExpr(Integer(x));
+}
+
+template <>
+inline SExpr mkSExpr(const int64_t& x) {
+  return SExpr(Integer(x));
+}
+
+template <>
+inline SExpr mkSExpr(const int& x) {
+  return SExpr(Integer(x));
+}
+
+template <>
+inline SExpr mkSExpr(const Integer& x) {
+  return SExpr(x);
+}
+
+template <>
+inline SExpr mkSExpr(const double& x) {
+  // roundabout way to get a Rational from a double
+  std::stringstream ss;
+  ss << std::fixed << std::setprecision(8) << x;
+  return SExpr(Rational::fromDecimal(ss.str()));
+}
+
+template <>
+inline SExpr mkSExpr(const Rational& x) {
+  return SExpr(x);
+}
+
+/**
+ * A class to represent a "read-only" data statistic of type T.  Adds to
+ * the Stat base class the pure virtual function getData(), which returns
+ * type T, and flushInformation(), which outputs the statistic value to an
+ * output stream (using the same existing stream insertion operator).
+ *
+ * Template class T must have stream insertion operation defined:
+ * std::ostream& operator<<(std::ostream&, const T&)
+ */
+template <class T>
+class ReadOnlyDataStat : public Stat {
+public:
+  /** The "payload" type of this data statistic (that is, T). */
+  typedef T payload_t;
+
+  /** Construct a read-only data statistic with the given name. */
+  ReadOnlyDataStat(const std::string& name) :
+    Stat(name) {
+  }
+
+  /** Get the value of the statistic. */
+  virtual T getData() const = 0;
+
+  /** Flush the value of the statistic to the given output stream. */
+  void flushInformation(std::ostream& out) const {
+    if(__CVC4_USE_STATISTICS) {
+      out << getData();
+    }
+  }
+
+  SExpr getValue() const {
+    return mkSExpr(getData());
+  }
+
+};/* class ReadOnlyDataStat<T> */
+
+
+/**
+ * A data statistic class.  This class extends a read-only data statistic
+ * with assignment (the statistic can be set as well as read).  This class
+ * adds to the read-only case a pure virtual function setData(), thus
+ * providing the basic interface for a data statistic: getData() to get the
+ * statistic value, and setData() to set it.
+ *
+ * As with the read-only data statistic class, template class T must have
+ * stream insertion operation defined:
+ * std::ostream& operator<<(std::ostream&, const T&)
+ */
+template <class T>
+class DataStat : public ReadOnlyDataStat<T> {
+public:
+
+  /** Construct a data statistic with the given name. */
+  DataStat(const std::string& name) :
+    ReadOnlyDataStat<T>(name) {
+  }
+
+  /** Set the data statistic. */
+  virtual void setData(const T&) = 0;
+
+};/* class DataStat<T> */
+
+
+/**
+ * A data statistic that references a data cell of type T,
+ * implementing getData() by referencing that memory cell, and
+ * setData() by reassigning the statistic to point to the new
+ * data cell.  The referenced data cell is kept as a const
+ * reference, meaning the referenced data is never actually
+ * modified by this class (it must be externally modified for
+ * a reference statistic to make sense).  A common use for
+ * this type of statistic is to output a statistic that is kept
+ * outside the statistics package (for example, one that's kept
+ * by a theory implementation for internal heuristic purposes,
+ * which is important to keep even if statistics are turned off).
+ *
+ * Template class T must have an assignment operator=().
+ */
+template <class T>
+class ReferenceStat : public DataStat<T> {
+private:
+  /** The referenced data cell */
+  const T* d_data;
+
+public:
+  /**
+   * Construct a reference stat with the given name and a reference
+   * to NULL.
+   */
+  ReferenceStat(const std::string& name) :
+    DataStat<T>(name),
+    d_data(NULL) {
+  }
+
+  /**
+   * Construct a reference stat with the given name and a reference to
+   * the given data.
+   */
+  ReferenceStat(const std::string& name, const T& data) :
+    DataStat<T>(name),
+    d_data(NULL) {
+    setData(data);
+  }
+
+  /** Set this reference statistic to refer to the given data cell. */
+  void setData(const T& t) {
+    if(__CVC4_USE_STATISTICS) {
+      d_data = &t;
+    }
+  }
+
+  /** Get the value of the referenced data cell. */
+  T getData() const {
+    return *d_data;
+  }
+
+};/* class ReferenceStat<T> */
+
+
+/**
+ * A data statistic that keeps a T and sets it with setData().
+ *
+ * Template class T must have an operator=() and a copy constructor.
+ */
+template <class T>
+class BackedStat : public DataStat<T> {
+protected:
+  /** The internally-kept statistic value */
+  T d_data;
+
+public:
+
+  /** Construct a backed statistic with the given name and initial value. */
+  BackedStat(const std::string& name, const T& init) :
+    DataStat<T>(name),
+    d_data(init) {
+  }
+
+  /** Set the underlying data value to the given value. */
+  void setData(const T& t) {
+    if(__CVC4_USE_STATISTICS) {
+      d_data = t;
+    }
+  }
+
+  /** Identical to setData(). */
+  BackedStat<T>& operator=(const T& t) {
+    if(__CVC4_USE_STATISTICS) {
+      d_data = t;
+    }
+    return *this;
+  }
+
+  /** Get the underlying data value. */
+  T getData() const {
+    return d_data;
+  }
+
+};/* class BackedStat<T> */
+
+
+/**
+ * A wrapper Stat for another Stat.
+ *
+ * This type of Stat is useful in cases where a module (like the
+ * CongruenceClosure module) might keep its own statistics, but might
+ * be instantiated in many contexts by many clients.  This makes such
+ * a statistic inappopriate to register with the StatisticsRegistry
+ * directly, as all would be output with the same name (and may be
+ * unregistered too quickly anyway).  A WrappedStat allows the calling
+ * client (say, TheoryUF) to wrap the Stat from the client module,
+ * giving it a globally unique name.
+ */
+template <class Stat>
+class WrappedStat : public ReadOnlyDataStat<typename Stat::payload_t> {
+  typedef typename Stat::payload_t T;
+
+  const ReadOnlyDataStat<T>& d_stat;
+
+  /** Private copy constructor undefined (no copy permitted). */
+  WrappedStat(const WrappedStat&) CVC4_UNDEFINED;
+  /** Private assignment operator undefined (no copy permitted). */
+  WrappedStat<T>& operator=(const WrappedStat&) CVC4_UNDEFINED;
+
+public:
+
+  /**
+   * Construct a wrapped statistic with the given name that wraps the
+   * given statistic.
+   */
+  WrappedStat(const std::string& name, const ReadOnlyDataStat<T>& stat) :
+    ReadOnlyDataStat<T>(name),
+    d_stat(stat) {
+  }
+
+  /** Get the data of the underlying (wrapped) statistic. */
+  T getData() const {
+    return d_stat.getData();
+  }
+
+  SExpr getValue() const {
+    return d_stat.getValue();
+  }
+
+};/* class WrappedStat<T> */
+
+/**
+ * A backed integer-valued (64-bit signed) statistic.
+ * This doesn't functionally differ from its base class BackedStat<int64_t>,
+ * except for adding convenience functions for dealing with integers.
+ */
+class IntStat : public BackedStat<int64_t> {
+public:
+
+  /**
+   * Construct an integer-valued statistic with the given name and
+   * initial value.
+   */
+  IntStat(const std::string& name, int64_t init) :
+    BackedStat<int64_t>(name, init) {
+  }
+
+  /** Increment the underlying integer statistic. */
+  IntStat& operator++() {
+    if(__CVC4_USE_STATISTICS) {
+      ++d_data;
+    }
+    return *this;
+  }
+
+  /** Increment the underlying integer statistic by the given amount. */
+  IntStat& operator+=(int64_t val) {
+    if(__CVC4_USE_STATISTICS) {
+      d_data += val;
+    }
+    return *this;
+  }
+
+  /** Keep the maximum of the current statistic value and the given one. */
+  void maxAssign(int64_t val) {
+    if(__CVC4_USE_STATISTICS) {
+      if(d_data < val) {
+        d_data = val;
+      }
+    }
+  }
+
+  /** Keep the minimum of the current statistic value and the given one. */
+  void minAssign(int64_t val) {
+    if(__CVC4_USE_STATISTICS) {
+      if(d_data > val) {
+        d_data = val;
+      }
+    }
+  }
+
+  SExpr getValue() const {
+    return SExpr(Integer(d_data));
+  }
+
+};/* class IntStat */
+
+template <class T>
+class SizeStat : public Stat {
+private:
+  const T& d_sized;
+public:
+  SizeStat(const std::string&name, const T& sized) :
+    Stat(name), d_sized(sized) {}
+  ~SizeStat() {}
+
+  void flushInformation(std::ostream& out) const {
+    out << d_sized.size();
+  }
+
+  SExpr getValue() const {
+    return SExpr(Integer(d_sized.size()));
+  }
+
+};/* class SizeStat */
+
+/**
+ * The value for an AverageStat is the running average of (e1, e_2, ..., e_n),
+ *   (e1 + e_2 + ... + e_n)/n,
+ * where e_i is an entry added by an addEntry(e_i) call.
+ * The value is initially always 0.
+ * (This is to avoid making parsers confused.)
+ *
+ * A call to setData() will change the running average but not reset the
+ * running count, so should generally be avoided.  Call addEntry() to add
+ * an entry to the average calculation.
+ */
+class AverageStat : public BackedStat<double> {
+private:
+  /**
+   * The number of accumulations of the running average that we
+   * have seen so far.
+   */
+  uint32_t d_count;
+  double d_sum;
+
+public:
+  /** Construct an average statistic with the given name. */
+  AverageStat(const std::string& name) :
+    BackedStat<double>(name, 0.0), d_count(0), d_sum(0.0) {
+  }
+
+  /** Add an entry to the running-average calculation. */
+  void addEntry(double e) {
+    if(__CVC4_USE_STATISTICS) {
+      ++d_count;
+      d_sum += e;
+      setData(d_sum / d_count);
+    }
+  }
+
+  SExpr getValue() const {
+    std::stringstream ss;
+    ss << std::fixed << std::setprecision(8) << d_data;
+    return SExpr(Rational::fromDecimal(ss.str()));
+  }
+
+};/* class AverageStat */
+
+/** A statistic that contains a SExpr. */
+class SExprStat : public Stat {
+private:
+  SExpr d_data;
+
+public:
+
+  /**
+   * Construct a SExpr-valued statistic with the given name and
+   * initial value.
+   */
+  SExprStat(const std::string& name, const SExpr& init) :
+    Stat(name), d_data(init){}
+
+  virtual void flushInformation(std::ostream& out) const {
+    out << d_data << std::endl;
+  }
+
+  SExpr getValue() const {
+    return d_data;
+  }
+
+};/* class SExprStat */
+
+template <class T>
+class ListStat : public Stat {
+private:
+  typedef std::vector<T> List;
+  List d_list;
+public:
+
+  /**
+   * Construct an integer-valued statistic with the given name and
+   * initial value.
+   */
+  ListStat(const std::string& name) : Stat(name) {}
+  ~ListStat() {}
+
+  void flushInformation(std::ostream& out) const{
+    if(__CVC4_USE_STATISTICS) {
+      typename List::const_iterator i = d_list.begin(), end =  d_list.end();
+      out << "[";
+      if(i != end){
+        out << *i;
+        ++i;
+        for(; i != end; ++i){
+          out << ", " << *i;
+        }
+      }
+      out << "]";
+    }
+  }
+
+  ListStat& operator<<(const T& val){
+    if(__CVC4_USE_STATISTICS) {
+      d_list.push_back(val);
+    }
+    return (*this);
+  }
+
+};/* class ListStat */
+
+template <class T>
+class HistogramStat : public Stat {
+private:
+  typedef std::map<T, unsigned int> Histogram;
+  Histogram d_hist;
+public:
+
+  /** Construct a histogram of a stream of entries. */
+  HistogramStat(const std::string& name) : Stat(name) {}
+  ~HistogramStat() {}
+
+  void flushInformation(std::ostream& out) const{
+    if(__CVC4_USE_STATISTICS) {
+      typename Histogram::const_iterator i = d_hist.begin();
+      typename Histogram::const_iterator end =  d_hist.end();
+      out << "[";
+      while(i != end){
+        const T& key = (*i).first;
+        unsigned int count = (*i).second;
+        out << "("<<key<<" : "<<count<< ")";
+        ++i;
+        if(i != end){
+          out << ", ";
+        }
+      }
+      out << "]";
+    }
+  }
+
+  HistogramStat& operator<<(const T& val){
+    if(__CVC4_USE_STATISTICS) {
+      if(d_hist.find(val) == d_hist.end()){
+        d_hist.insert(std::make_pair(val,0));
+      }
+      d_hist[val]++;
+    }
+    return (*this);
+  }
+
+};/* class HistogramStat */
+
+/****************************************************************************/
+/* Statistics Registry                                                      */
+/****************************************************************************/
+
+/**
+ * The main statistics registry.  This registry maintains the list of
+ * currently active statistics and is able to "flush" them all.
+ */
+class CVC4_PUBLIC StatisticsRegistry : public StatisticsBase, public Stat {
+private:
+
+  /** Private copy constructor undefined (no copy permitted). */
+  StatisticsRegistry(const StatisticsRegistry&) CVC4_UNDEFINED;
+
+public:
+
+  /** Construct an nameless statistics registry */
+  StatisticsRegistry() {}
+
+  /** Construct a statistics registry */
+  StatisticsRegistry(const std::string& name)
+    throw(CVC4::IllegalArgumentException);
+
+  /**
+   * Set the name of this statistic registry, used as prefix during
+   * output.  (This version overrides StatisticsBase::setPrefix().)
+   */
+  void setPrefix(const std::string& name) {
+    d_prefix = d_name = name;
+  }
+
+  /** Overridden to avoid the name being printed */
+  void flushStat(std::ostream &out) const;
+
+  virtual void flushInformation(std::ostream& out) const;
+
+  SExpr getValue() const {
+    std::vector<SExpr> v;
+    for(StatSet::iterator i = d_stats.begin(); i != d_stats.end(); ++i) {
+      std::vector<SExpr> w;
+      w.push_back(SExpr((*i)->getName()));
+      w.push_back((*i)->getValue());
+      v.push_back(SExpr(w));
+    }
+    return SExpr(v);
+  }
+
+  /** Register a new statistic */
+  void registerStat(Stat* s) throw(CVC4::IllegalArgumentException);
+
+  /** Unregister a new statistic */
+  void unregisterStat(Stat* s) throw(CVC4::IllegalArgumentException);
+
+};/* class StatisticsRegistry */
+
+class CodeTimer;
+
+/**
+ * A timer statistic.  The timer can be started and stopped
+ * arbitrarily, like a stopwatch; the value of the statistic at the
+ * end is the accumulated time over all (start,stop) pairs.
+ */
+class CVC4_PUBLIC TimerStat : public BackedStat<timespec> {
+
+  // strange: timespec isn't placed in 'std' namespace ?!
+  /** The last start time of this timer */
+  timespec d_start;
+
+  /** Whether this timer is currently running */
+  bool d_running;
+
+public:
+
+  typedef CVC4::CodeTimer CodeTimer;
+
+  /**
+   * Construct a timer statistic with the given name.  Newly-constructed
+   * timers have a 0.0 value and are not running.
+   */
+  TimerStat(const std::string& name) :
+    BackedStat< timespec >(name, timespec()),
+    d_running(false) {
+    /* timespec is POD and so may not be initialized to zero;
+     * here, ensure it is */
+    d_data.tv_sec = d_data.tv_nsec = 0;
+  }
+
+  /** Start the timer. */
+  void start();
+
+  /**
+   * Stop the timer and update the statistic value with the
+   * accumulated time.
+   */
+  void stop();
+
+  /** If the timer is currently running */
+  bool running() const;
+
+  timespec getData() const;
+
+  SExpr getValue() const;
+
+};/* 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
+ * destructed, it stops the timer.
+ */
+class CodeTimer {
+  TimerStat& d_timer;
+  bool d_reentrant;
+
+  /** Private copy constructor undefined (no copy permitted). */
+  CodeTimer(const CodeTimer& timer) CVC4_UNDEFINED;
+  /** Private assignment operator undefined (no copy permitted). */
+  CodeTimer& operator=(const CodeTimer& timer) CVC4_UNDEFINED;
+
+public:
+  CodeTimer(TimerStat& timer, bool allow_reentrant = false) : d_timer(timer), d_reentrant(false) {
+    if(!allow_reentrant || !(d_reentrant = d_timer.running())) {
+      d_timer.start();
+    }
+  }
+  ~CodeTimer() {
+    if(!d_reentrant) {
+      d_timer.stop();
+    }
+  }
+};/* class CodeTimer */
+
+/**
+ * Resource-acquisition-is-initialization idiom for statistics
+ * registry.  Useful for stack-based statistics (like in the driver).
+ * Generally, for statistics kept in a member field of class, it's
+ * better to use the above KEEP_STATISTIC(), which does declaration of
+ * the member, construction of the statistic, and
+ * registration/unregistration.  This RAII class only does
+ * registration and unregistration.
+ */
+class CVC4_PUBLIC RegisterStatistic {
+public:
+  RegisterStatistic(StatisticsRegistry* reg, Stat* stat);
+  ~RegisterStatistic();
+
+private:
+  StatisticsRegistry* d_reg;
+  Stat* d_stat;
+
+};/* class RegisterStatistic */
+
+#undef __CVC4_USE_STATISTICS
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__STATISTICS_REGISTRY_H */
diff --git a/src/util/subrange_bound.cpp b/src/util/subrange_bound.cpp
new file mode 100644
index 0000000..a33c22f
--- /dev/null
+++ b/src/util/subrange_bound.cpp
@@ -0,0 +1,61 @@
+/*********************                                                        */
+/*! \file subrange_bound.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Representation of subrange bounds
+ **
+ ** Simple class to represent a subrange bound, either infinite
+ ** (no bound) or finite (an arbitrary precision integer).
+ **/
+
+#include "util/subrange_bound.h"
+
+#include <limits>
+
+#include "base/cvc4_assert.h"
+#include "base/exception.h"
+#include "util/integer.h"
+
+namespace CVC4 {
+
+std::ostream& operator<<(std::ostream& out, const SubrangeBounds& bounds) {
+  out << bounds.lower << ".." << bounds.upper;
+
+  return out;
+}
+
+/** Get the finite SubrangeBound, failing an assertion if infinite. */
+const Integer& SubrangeBound::getBound() const {
+  PrettyCheckArgument(!d_nobound, this, "SubrangeBound is infinite");
+  return d_bound;
+}
+
+SubrangeBounds::SubrangeBounds(const SubrangeBound& l, const SubrangeBound& u)
+    : lower(l), upper(u) {
+  PrettyCheckArgument(
+      !l.hasBound() || !u.hasBound() || l.getBound() <= u.getBound(), l,
+      "Bad subrange bounds specified");
+}
+
+bool SubrangeBounds::joinIsBounded(const SubrangeBounds& a,
+                                   const SubrangeBounds& b) {
+  return (a.lower.hasBound() && b.lower.hasBound()) ||
+         (a.upper.hasBound() && b.upper.hasBound());
+}
+
+SubrangeBounds SubrangeBounds::join(const SubrangeBounds& a,
+                                    const SubrangeBounds& b) {
+  DebugCheckArgument(joinIsBounded(a, b), a);
+  SubrangeBound newLower = SubrangeBound::min(a.lower, b.lower);
+  SubrangeBound newUpper = SubrangeBound::max(a.upper, b.upper);
+  return SubrangeBounds(newLower, newUpper);
+}
+
+} /* namespace CVC4 */
diff --git a/src/util/subrange_bound.h b/src/util/subrange_bound.h
new file mode 100644
index 0000000..91c91af
--- /dev/null
+++ b/src/util/subrange_bound.h
@@ -0,0 +1,234 @@
+/*********************                                                        */
+/*! \file subrange_bound.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Representation of subrange bounds
+ **
+ ** Simple class to represent a subrange bound, either infinite
+ ** (no bound) or finite (an arbitrary precision integer).
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__SUBRANGE_BOUND_H
+#define __CVC4__SUBRANGE_BOUND_H
+
+#include <limits>
+
+#include "base/exception.h"
+#include "util/integer.h"
+
+namespace CVC4 {
+
+/**
+ * Representation of a subrange bound.  A bound can either exist and be
+ * a finite arbitrary-precision integer, or not exist (and thus be
+ * an infinite bound).  For example, the CVC language subrange [-5.._]
+ * has a lower bound of -5 and an infinite upper bound.
+ */
+class CVC4_PUBLIC SubrangeBound {
+ public:
+  /** Construct an infinite SubrangeBound. */
+  SubrangeBound() : d_nobound(true), d_bound() {}
+
+  /** Construct a finite SubrangeBound. */
+  SubrangeBound(const Integer& i) : d_nobound(false), d_bound(i) {}
+
+  ~SubrangeBound() {}
+
+  /**
+   * Get the finite SubrangeBound, failing an assertion if infinite.
+   *
+   * @throws IllegalArgumentException if the bound is infinite.
+   */
+  const Integer& getBound() const;
+
+  /** Returns true iff this is a finite SubrangeBound. */
+  bool hasBound() const { return !d_nobound; }
+
+  /** Test two SubrangeBounds for equality. */
+  bool operator==(const SubrangeBound& b) const {
+    return hasBound() == b.hasBound() &&
+           (!hasBound() || getBound() == b.getBound());
+  }
+
+  /** Test two SubrangeBounds for disequality. */
+  bool operator!=(const SubrangeBound& b) const { return !(*this == b); }
+
+  /**
+   * Is this SubrangeBound "less than" another?  For two
+   * SubrangeBounds that "have bounds," this is defined as expected.
+   * For a finite SubrangeBound b1 and a SubrangeBounds b2 without a
+   * bound, b1 < b2 (but note also that b1 > b2).  This strange
+   * behavior is due to the fact that a SubrangeBound without a bound
+   * is the representation for both +infinity and -infinity.
+   */
+  bool operator<(const SubrangeBound& b) const {
+    return (!hasBound() && b.hasBound()) || (hasBound() && !b.hasBound()) ||
+           (hasBound() && b.hasBound() && getBound() < b.getBound());
+  }
+
+  /**
+   * Is this SubrangeBound "less than or equal to" another?  For two
+   * SubrangeBounds that "have bounds," this is defined as expected.
+   * For a finite SubrangeBound b1 and a SubrangeBounds b2 without a
+   * bound, b1 < b2 (but note also that b1 > b2).  This strange
+   * behavior is due to the fact that a SubrangeBound without a bound
+   * is the representation for both +infinity and -infinity.
+   */
+  bool operator<=(const SubrangeBound& b) const {
+    return !hasBound() || !b.hasBound() ||
+           (hasBound() && b.hasBound() && getBound() <= b.getBound());
+  }
+
+  /**
+   * Is this SubrangeBound "greater than" another?  For two
+   * SubrangeBounds that "have bounds," this is defined as expected.
+   * For a finite SubrangeBound b1 and a SubrangeBounds b2 without a
+   * bound, b1 > b2 (but note also that b1 < b2).  This strange
+   * behavior is due to the fact that a SubrangeBound without a bound
+   * is the representation for both +infinity and -infinity.
+   */
+  bool operator>(const SubrangeBound& b) const {
+    return (!hasBound() && b.hasBound()) || (hasBound() && !b.hasBound()) ||
+           (hasBound() && b.hasBound() && getBound() < b.getBound());
+  }
+
+  /**
+   * Is this SubrangeBound "greater than or equal to" another?  For
+   * two SubrangeBounds that "have bounds," this is defined as
+   * expected.  For a finite SubrangeBound b1 and a SubrangeBounds b2
+   * without a bound, b1 > b2 (but note also that b1 < b2).  This
+   * strange behavior is due to the fact that a SubrangeBound without
+   * a bound is the representation for both +infinity and -infinity.
+   */
+  bool operator>=(const SubrangeBound& b) const {
+    return !hasBound() || !b.hasBound() ||
+           (hasBound() && b.hasBound() && getBound() <= b.getBound());
+  }
+
+  static SubrangeBound min(const SubrangeBound& a, const SubrangeBound& b) {
+    if (a.hasBound() && b.hasBound()) {
+      return SubrangeBound(Integer::min(a.getBound(), b.getBound()));
+    } else {
+      return SubrangeBound();
+    }
+  }
+
+  static SubrangeBound max(const SubrangeBound& a, const SubrangeBound& b) {
+    if (a.hasBound() && b.hasBound()) {
+      return SubrangeBound(Integer::max(a.getBound(), b.getBound()));
+    } else {
+      return SubrangeBound();
+    }
+  }
+
+ private:
+  bool d_nobound;
+  Integer d_bound;
+}; /* class SubrangeBound */
+
+class CVC4_PUBLIC SubrangeBounds {
+ public:
+  SubrangeBound lower;
+  SubrangeBound upper;
+
+  SubrangeBounds(const SubrangeBound& l, const SubrangeBound& u);
+
+  bool operator==(const SubrangeBounds& bounds) const {
+    return lower == bounds.lower && upper == bounds.upper;
+  }
+
+  bool operator!=(const SubrangeBounds& bounds) const {
+    return !(*this == bounds);
+  }
+
+  /**
+   * Is this pair of SubrangeBounds "less than" (contained inside) the
+   * given pair of SubrangeBounds?  Think of this as a subtype
+   * relation, e.g., [0,2] < [0,3]
+   */
+  bool operator<(const SubrangeBounds& bounds) const {
+    return (lower > bounds.lower && upper <= bounds.upper) ||
+           (lower >= bounds.lower && upper < bounds.upper);
+  }
+
+  /**
+   * Is this pair of SubrangeBounds "less than or equal" (contained
+   * inside) the given pair of SubrangeBounds?  Think of this as a
+   * subtype relation, e.g., [0,2] < [0,3]
+   */
+  bool operator<=(const SubrangeBounds& bounds) const {
+    return lower >= bounds.lower && upper <= bounds.upper;
+  }
+
+  /**
+   * Is this pair of SubrangeBounds "greater than" (does it contain)
+   * the given pair of SubrangeBounds?  Think of this as a supertype
+   * relation, e.g., [0,3] > [0,2]
+   */
+  bool operator>(const SubrangeBounds& bounds) const {
+    return (lower < bounds.lower && upper >= bounds.upper) ||
+           (lower <= bounds.lower && upper > bounds.upper);
+  }
+
+  /**
+   * Is this pair of SubrangeBounds "greater than" (does it contain)
+   * the given pair of SubrangeBounds?  Think of this as a supertype
+   * relation, e.g., [0,3] > [0,2]
+   */
+  bool operator>=(const SubrangeBounds& bounds) const {
+    return lower <= bounds.lower && upper >= bounds.upper;
+  }
+
+  /**
+   * Returns true if the join of two subranges is not (- infinity, + infinity).
+   */
+  static bool joinIsBounded(const SubrangeBounds& a, const SubrangeBounds& b);
+
+  /**
+   * Returns the join of two subranges, a and b.
+   * precondition: joinIsBounded(a,b) is true
+   */
+  static SubrangeBounds join(const SubrangeBounds& a, const SubrangeBounds& b);
+
+}; /* class SubrangeBounds */
+
+struct CVC4_PUBLIC SubrangeBoundsHashFunction {
+  inline size_t operator()(const SubrangeBounds& bounds) const {
+    // We use Integer::hash() rather than Integer::getUnsignedLong()
+    // because the latter might overflow and throw an exception
+    size_t l = bounds.lower.hasBound() ? bounds.lower.getBound().hash()
+                                       : std::numeric_limits<size_t>::max();
+    size_t u = bounds.upper.hasBound() ? bounds.upper.getBound().hash()
+                                       : std::numeric_limits<size_t>::max();
+    return l + 0x9e3779b9 + (u << 6) + (u >> 2);
+  }
+}; /* struct SubrangeBoundsHashFunction */
+
+inline std::ostream& operator<<(std::ostream& out,
+                                const SubrangeBound& bound) CVC4_PUBLIC;
+
+inline std::ostream& operator<<(std::ostream& out, const SubrangeBound& bound) {
+  if (bound.hasBound()) {
+    out << bound.getBound();
+  } else {
+    out << '_';
+  }
+
+  return out;
+}
+
+std::ostream& operator<<(std::ostream& out,
+                         const SubrangeBounds& bounds) CVC4_PUBLIC;
+
+} /* CVC4 namespace */
+
+#endif /* __CVC4__SUBRANGE_BOUND_H */
diff --git a/src/util/subrange_bound.i b/src/util/subrange_bound.i
new file mode 100644
index 0000000..c12bd11
--- /dev/null
+++ b/src/util/subrange_bound.i
@@ -0,0 +1,24 @@
+%{
+#include "util/subrange_bound.h"
+%}
+
+%rename(equals) CVC4::SubrangeBound::operator==(const SubrangeBound&) const;
+%ignore CVC4::SubrangeBound::operator!=(const SubrangeBound&) const;
+%rename(less) CVC4::SubrangeBound::operator<(const SubrangeBound&) const;
+%rename(lessEqual) CVC4::SubrangeBound::operator<=(const SubrangeBound&) const;
+%rename(greater) CVC4::SubrangeBound::operator>(const SubrangeBound&) const;
+%rename(greaterEqual) CVC4::SubrangeBound::operator>=(const SubrangeBound&) const;
+
+%rename(equals) CVC4::SubrangeBounds::operator==(const SubrangeBounds&) const;
+%ignore CVC4::SubrangeBounds::operator!=(const SubrangeBounds&) const;
+%rename(less) CVC4::SubrangeBounds::operator<(const SubrangeBounds&) const;
+%rename(lessEqual) CVC4::SubrangeBounds::operator<=(const SubrangeBounds&) const;
+%rename(greater) CVC4::SubrangeBounds::operator>(const SubrangeBounds&) const;
+%rename(greaterEqual) CVC4::SubrangeBounds::operator>=(const SubrangeBounds&) const;
+
+%rename(apply) CVC4::SubrangeBoundsHashFunction::operator()(const SubrangeBounds&) const;
+
+%ignore CVC4::operator<<(std::ostream&, const SubrangeBound&);
+%ignore CVC4::operator<<(std::ostream&, const SubrangeBounds&);
+
+%include "util/subrange_bound.h"
diff --git a/src/util/tuple.h b/src/util/tuple.h
new file mode 100644
index 0000000..14763d2
--- /dev/null
+++ b/src/util/tuple.h
@@ -0,0 +1,72 @@
+/*********************                                                        */
+/*! \file tuple.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Tuple operators
+ **
+ ** Tuple operators.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__TUPLE_H
+#define __CVC4__TUPLE_H
+
+#include <iostream>
+#include <string>
+#include <vector>
+#include <utility>
+
+namespace CVC4 {
+
+class CVC4_PUBLIC TupleSelect {
+  unsigned d_index;
+public:
+  TupleSelect(unsigned index) throw() : d_index(index) { }
+  unsigned getIndex() const throw() { return d_index; }
+  bool operator==(const TupleSelect& t) const throw() { return d_index == t.d_index; }
+  bool operator!=(const TupleSelect& t) const throw() { return d_index != t.d_index; }
+};/* class TupleSelect */
+
+class CVC4_PUBLIC TupleUpdate {
+  unsigned d_index;
+public:
+  TupleUpdate(unsigned index) throw() : d_index(index) { }
+  unsigned getIndex() const throw() { return d_index; }
+  bool operator==(const TupleUpdate& t) const throw() { return d_index == t.d_index; }
+  bool operator!=(const TupleUpdate& t) const throw() { return d_index != t.d_index; }
+};/* class TupleUpdate */
+
+struct CVC4_PUBLIC TupleSelectHashFunction {
+  inline size_t operator()(const TupleSelect& t) const {
+    return t.getIndex();
+  }
+};/* struct TupleSelectHashFunction */
+
+struct CVC4_PUBLIC TupleUpdateHashFunction {
+  inline size_t operator()(const TupleUpdate& t) const {
+    return t.getIndex();
+  }
+};/* struct TupleUpdateHashFunction */
+
+std::ostream& operator<<(std::ostream& out, const TupleSelect& t) CVC4_PUBLIC;
+std::ostream& operator<<(std::ostream& out, const TupleUpdate& t) CVC4_PUBLIC;
+
+inline std::ostream& operator<<(std::ostream& out, const TupleSelect& t) {
+  return out << "[" << t.getIndex() << "]";
+}
+
+inline std::ostream& operator<<(std::ostream& out, const TupleUpdate& t) {
+  return out << "[" << t.getIndex() << "]";
+}
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__TUPLE_H */
diff --git a/src/util/tuple.i b/src/util/tuple.i
new file mode 100644
index 0000000..1498f92
--- /dev/null
+++ b/src/util/tuple.i
@@ -0,0 +1,17 @@
+%{
+#include "util/tuple.h"
+%}
+
+%rename(equals) CVC4::TupleSelect::operator==(const TupleSelect&) const;
+%ignore CVC4::TupleSelect::operator!=(const TupleSelect&) const;
+
+%rename(equals) CVC4::TupleUpdate::operator==(const TupleUpdate&) const;
+%ignore CVC4::TupleUpdate::operator!=(const TupleUpdate&) const;
+
+%rename(apply) CVC4::TupleSelectHashFunction::operator()(const TupleSelect&) const;
+%rename(apply) CVC4::TupleUpdateHashFunction::operator()(const TupleUpdate&) const;
+
+%ignore CVC4::operator<<(std::ostream&, const TupleSelect&);
+%ignore CVC4::operator<<(std::ostream&, const TupleUpdate&);
+
+%include "util/tuple.h"
diff --git a/src/util/unsafe_interrupt_exception.h b/src/util/unsafe_interrupt_exception.h
new file mode 100644
index 0000000..345daf6
--- /dev/null
+++ b/src/util/unsafe_interrupt_exception.h
@@ -0,0 +1,43 @@
+/*********************                                                        */
+/*! \file unsafe_interrupt_exception.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief An exception that is thrown when the solver is out of time/resources
+ ** and is interrupted in an unsafe state
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__UNSAFE_INTERRUPT_EXCEPTION_H
+#define __CVC4__UNSAFE_INTERRUPT_EXCEPTION_H
+
+#include "base/exception.h"
+
+namespace CVC4 {
+
+class CVC4_PUBLIC UnsafeInterruptException : public CVC4::Exception {
+public:
+  UnsafeInterruptException() :
+    Exception("Interrupted in unsafe state due to "
+              "time/resource limit.") {
+  }
+
+  UnsafeInterruptException(const std::string& msg) :
+    Exception(msg) {
+  }
+
+  UnsafeInterruptException(const char* msg) :
+    Exception(msg) {
+  }
+};/* class UnsafeInterruptException */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__UNSAFE_INTERRUPT_EXCEPTION_H */
diff --git a/src/util/unsafe_interrupt_exception.i b/src/util/unsafe_interrupt_exception.i
new file mode 100644
index 0000000..94a5528
--- /dev/null
+++ b/src/util/unsafe_interrupt_exception.i
@@ -0,0 +1,7 @@
+%{
+#include "util/unsafe_interrupt_exception.h"
+%}
+
+%ignore CVC4::UnsafeInterruptException::UnsafeInterruptException(const char*);
+
+%include "util/unsafe_interrupt_exception.h"
diff --git a/src/util/utility.h b/src/util/utility.h
new file mode 100644
index 0000000..1d51d42
--- /dev/null
+++ b/src/util/utility.h
@@ -0,0 +1,72 @@
+/*********************                                                        */
+/*! \file utility.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Some standard STL-related utility functions for CVC4
+ **
+ ** Some standard STL-related utility functions for CVC4.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__UTILITY_H
+#define __CVC4__UTILITY_H
+
+#include <utility>
+#include <functional>
+
+namespace CVC4 {
+
+
+/**
+ * Like std::equal_to<>, but tests equality between the first element
+ * of a pair and an element.
+ */
+template <class T, class U>
+struct first_equal_to : std::binary_function<std::pair<T, U>, T, bool> {
+  bool operator()(const std::pair<T, U>& pr, const T& x) const {
+    return pr.first == x;
+  }
+};/* struct first_equal_to<T> */
+
+
+/**
+ * Like std::equal_to<>, but tests equality between the second element
+ * of a pair and an element.
+ */
+template <class T, class U>
+struct second_equal_to : std::binary_function<std::pair<T, U>, U, bool> {
+  bool operator()(const std::pair<T, U>& pr, const U& x) const {
+    return pr.second == x;
+  }
+};/* struct first_equal_to<T> */
+
+
+/**
+ * Using std::find_if(), finds the first iterator in [first,last)
+ * range that satisfies predicate.  If none, return last; otherwise,
+ * search for a second one.  If there IS a second one, return last,
+ * otherwise return the first (and unique) iterator satisfying pred().
+ */
+template <class InputIterator, class Predicate>
+inline InputIterator find_if_unique(InputIterator first, InputIterator last, Predicate pred) {
+  InputIterator match = std::find_if(first, last, pred);
+  if(match == last) {
+    return last;
+  }
+
+  InputIterator match2 = match;
+  match2 = std::find_if(++match2, last, pred);
+  return (match2 == last) ? match : last;
+}
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__UTILITY_H */
diff --git a/test/Makefile.am b/test/Makefile.am
new file mode 100644
index 0000000..89ac66a
--- /dev/null
+++ b/test/Makefile.am
@@ -0,0 +1,147 @@
+SUBDIRS = unit system regress .
+
+MAKEFLAGS = -k
+
+.PHONY: units systemtests regress regress0 regress1 regress2 regress3 regress4
+units systemtests regress regress0 regress1 regress2 regress3 regress4:
+	@$(MAKE) check-pre; \
+	for dir in $(SUBDIRS); do \
+		test $$dir = . || (cd $$dir && $(MAKE) $(AM_MAKEFLAGS) $@); \
+	done; \
+	$(MAKE) check-local
+
+# synonyms for "check" in this directory
+.PHONY: test
+test: check
+
+am__tty_colors = \
+red=; grn=; lgn=; blu=; mag=; std=; \
+test "X$(AM_COLOR_TESTS)" != Xno \
+&& test "X$$TERM" != Xdumb \
+&& { test "X$(AM_COLOR_TESTS)" = Xalways || test -t 1 2>/dev/null; } \
+&& { \
+  red=''; \
+  grn=''; \
+  lgn=''; \
+  blu=''; \
+  mag=''; \
+  std=''; \
+}
+
+subdirs_to_check = \
+	regress/regress0 \
+	regress/regress0/arith \
+	regress/regress0/arith/integers \
+	regress/regress0/arrays \
+	regress/regress0/aufbv \
+	regress/regress0/auflia \
+	regress/regress0/bv \
+	regress/regress0/bv/core \
+	regress/regress0/datatypes \
+	regress/regress0/decision \
+	regress/regress0/expect \
+	regress/regress0/fmf \
+	regress/regress0/lemmas \
+	regress/regress0/parser \
+	regress/regress0/precedence \
+	regress/regress0/preprocess \
+	regress/regress0/push-pop \
+	regress/regress0/push-pop/arith \
+	regress/regress0/push-pop/boolean \
+	regress/regress0/quantifiers \
+	regress/regress0/rels \
+	regress/regress0/rewriterules \
+	regress/regress0/sep \
+	regress/regress0/sets \
+	regress/regress0/strings \
+	regress/regress0/sygus \
+	regress/regress0/tptp \
+	regress/regress0/uf \
+	regress/regress0/uflia \
+	regress/regress0/uflra \
+	regress/regress0/unconstrained \
+	regress/regress1 \
+	regress/regress1/aufbv \
+	regress/regress1/auflia \
+	regress/regress1/bv \
+	regress/regress1/datatypes \
+	regress/regress1/decision \
+	regress/regress1/fmf \
+	regress/regress1/lemmas \
+	regress/regress1/rewriterules \
+	regress/regress1/sep \
+	regress/regress1/sets \
+	regress/regress1/strings \
+	regress/regress1/sygus \
+	regress/regress2 \
+	regress/regress2/arith \
+	regress/regress3 \
+	regress/regress4 \
+	system \
+	unit
+
+check-recursive: check-pre
+.PHONY: check-pre
+check-pre:
+	@rm -f $(subdirs_to_check:=/test-suite.log)
+
+if HAVE_CXXTESTGEN
+HANDLE_UNIT_TEST_SUMMARY = \
+	if test -s "unit/test-suite.log"; then :; else \
+		echo "$${red}Unit tests did not run; maybe there were compilation problems ?$$std"; \
+	fi
+else
+HANDLE_UNIT_TEST_SUMMARY = \
+	echo "$${mag}Unit tests not supported, since CxxTest wasn't found$$std"; \
+	rm -f "unit/test-suite.log"
+endif
+
+if AUTOMAKE_1_11
+# automake 1.11 version
+check-local:
+	@$(am__tty_colors); \
+	echo $${blu}===============================  TESTING SUMMARY  =============================$$std; \
+	$(HANDLE_UNIT_TEST_SUMMARY); \
+	if test -s "system/test-suite.log"; then :; else \
+		echo "$${red}System tests did not run; maybe there were compilation problems ?$$std"; \
+	fi; \
+	for dir in $(subdirs_to_check); do \
+		log=$$dir/test-suite.log; \
+		if test -s "$$log"; then \
+			status="`head -n 5 $$log | tail -1`"; \
+			if echo "$$status" | grep -q failed; then \
+				echo "$$red$$status"; \
+				echo "    @abs_builddir@/$$log$$std"; \
+			else \
+				printf "$$grn%-30s in $$dir$$std\\n" "$$status"; \
+			fi; \
+		fi; \
+	done; \
+	echo $${blu}===============================  TESTING SUMMARY  =============================$$std
+else
+# automake 1.12 version
+check-local:
+	@$(am__tty_colors); \
+	echo $${blu}===============================  TESTING SUMMARY  =============================$$std; \
+	$(HANDLE_UNIT_TEST_SUMMARY); \
+	if test -s "system/test-suite.log"; then :; else \
+		echo "$${red}System tests did not run; maybe there were compilation problems ?$$std"; \
+	fi; \
+	for dir in $(subdirs_to_check); do \
+		log=$$dir/test-suite.log; \
+		if test -s "$$log"; then \
+			status="`head -n 11 $$log | tail -7`"; \
+			nicestatus="`echo $$status | sed 's/# [A-Z]*: 0 *//g;s/# \([A-Z]*\): \([0-9]*\)/\2 \1,/g;s/, *$$//;'`"; \
+			if	echo "$$status" | grep -q '# FAIL:  0' && \
+				echo "$$status" | grep -q '# XPASS: 0' && \
+				echo "$$status" | grep -q '# ERROR: 0' && \
+				echo "$$status" | grep -q '# SKIP:  0'; then \
+				printf "$$grn%-30s in $$dir$$std\\n" "$$nicestatus"; \
+			else \
+				echo "$$red$$nicestatus"; \
+				echo "    @abs_builddir@/$$log$$std"; \
+			fi; \
+		fi; \
+	done; \
+	echo $${blu}===============================  TESTING SUMMARY  =============================$$std
+endif
diff --git a/test/Makefile.in b/test/Makefile.in
new file mode 100644
index 0000000..ed4fb91
--- /dev/null
+++ b/test/Makefile.in
@@ -0,0 +1,906 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+SUBDIRS = unit system regress .
+MAKEFLAGS = -k
+am__tty_colors = \
+red=; grn=; lgn=; blu=; mag=; std=; \
+test "X$(AM_COLOR_TESTS)" != Xno \
+&& test "X$$TERM" != Xdumb \
+&& { test "X$(AM_COLOR_TESTS)" = Xalways || test -t 1 2>/dev/null; } \
+&& { \
+  red=''; \
+  grn=''; \
+  lgn=''; \
+  blu=''; \
+  mag=''; \
+  std=''; \
+}
+
+subdirs_to_check = \
+	regress/regress0 \
+	regress/regress0/arith \
+	regress/regress0/arith/integers \
+	regress/regress0/arrays \
+	regress/regress0/aufbv \
+	regress/regress0/auflia \
+	regress/regress0/bv \
+	regress/regress0/bv/core \
+	regress/regress0/datatypes \
+	regress/regress0/decision \
+	regress/regress0/expect \
+	regress/regress0/fmf \
+	regress/regress0/lemmas \
+	regress/regress0/parser \
+	regress/regress0/precedence \
+	regress/regress0/preprocess \
+	regress/regress0/push-pop \
+	regress/regress0/push-pop/arith \
+	regress/regress0/push-pop/boolean \
+	regress/regress0/quantifiers \
+	regress/regress0/rels \
+	regress/regress0/rewriterules \
+	regress/regress0/sep \
+	regress/regress0/sets \
+	regress/regress0/strings \
+	regress/regress0/sygus \
+	regress/regress0/tptp \
+	regress/regress0/uf \
+	regress/regress0/uflia \
+	regress/regress0/uflra \
+	regress/regress0/unconstrained \
+	regress/regress1 \
+	regress/regress1/aufbv \
+	regress/regress1/auflia \
+	regress/regress1/bv \
+	regress/regress1/datatypes \
+	regress/regress1/decision \
+	regress/regress1/fmf \
+	regress/regress1/lemmas \
+	regress/regress1/rewriterules \
+	regress/regress1/sep \
+	regress/regress1/sets \
+	regress/regress1/strings \
+	regress/regress1/sygus \
+	regress/regress2 \
+	regress/regress2/arith \
+	regress/regress3 \
+	regress/regress4 \
+	system \
+	unit
+
+ at HAVE_CXXTESTGEN_FALSE@HANDLE_UNIT_TEST_SUMMARY = \
+ at HAVE_CXXTESTGEN_FALSE@	echo "$${mag}Unit tests not supported, since CxxTest wasn't found$$std"; \
+ at HAVE_CXXTESTGEN_FALSE@	rm -f "unit/test-suite.log"
+
+ at HAVE_CXXTESTGEN_TRUE@HANDLE_UNIT_TEST_SUMMARY = \
+ at HAVE_CXXTESTGEN_TRUE@	if test -s "unit/test-suite.log"; then :; else \
+ at HAVE_CXXTESTGEN_TRUE@		echo "$${red}Unit tests did not run; maybe there were compilation problems ?$$std"; \
+ at HAVE_CXXTESTGEN_TRUE@	fi
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am check-local clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+	uninstall-am
+
+.PRECIOUS: Makefile
+
+
+.PHONY: units systemtests regress regress0 regress1 regress2 regress3 regress4
+units systemtests regress regress0 regress1 regress2 regress3 regress4:
+	@$(MAKE) check-pre; \
+	for dir in $(SUBDIRS); do \
+		test $$dir = . || (cd $$dir && $(MAKE) $(AM_MAKEFLAGS) $@); \
+	done; \
+	$(MAKE) check-local
+
+# synonyms for "check" in this directory
+.PHONY: test
+test: check
+
+check-recursive: check-pre
+.PHONY: check-pre
+check-pre:
+	@rm -f $(subdirs_to_check:=/test-suite.log)
+
+# automake 1.11 version
+ at AUTOMAKE_1_11_TRUE@check-local:
+ at AUTOMAKE_1_11_TRUE@	@$(am__tty_colors); \
+ at AUTOMAKE_1_11_TRUE@	echo $${blu}===============================  TESTING SUMMARY  =============================$$std; \
+ at AUTOMAKE_1_11_TRUE@	$(HANDLE_UNIT_TEST_SUMMARY); \
+ at AUTOMAKE_1_11_TRUE@	if test -s "system/test-suite.log"; then :; else \
+ at AUTOMAKE_1_11_TRUE@		echo "$${red}System tests did not run; maybe there were compilation problems ?$$std"; \
+ at AUTOMAKE_1_11_TRUE@	fi; \
+ at AUTOMAKE_1_11_TRUE@	for dir in $(subdirs_to_check); do \
+ at AUTOMAKE_1_11_TRUE@		log=$$dir/test-suite.log; \
+ at AUTOMAKE_1_11_TRUE@		if test -s "$$log"; then \
+ at AUTOMAKE_1_11_TRUE@			status="`head -n 5 $$log | tail -1`"; \
+ at AUTOMAKE_1_11_TRUE@			if echo "$$status" | grep -q failed; then \
+ at AUTOMAKE_1_11_TRUE@				echo "$$red$$status"; \
+ at AUTOMAKE_1_11_TRUE@				echo "    @abs_builddir@/$$log$$std"; \
+ at AUTOMAKE_1_11_TRUE@			else \
+ at AUTOMAKE_1_11_TRUE@				printf "$$grn%-30s in $$dir$$std\\n" "$$status"; \
+ at AUTOMAKE_1_11_TRUE@			fi; \
+ at AUTOMAKE_1_11_TRUE@		fi; \
+ at AUTOMAKE_1_11_TRUE@	done; \
+ at AUTOMAKE_1_11_TRUE@	echo $${blu}===============================  TESTING SUMMARY  =============================$$std
+# automake 1.12 version
+ at AUTOMAKE_1_11_FALSE@check-local:
+ at AUTOMAKE_1_11_FALSE@	@$(am__tty_colors); \
+ at AUTOMAKE_1_11_FALSE@	echo $${blu}===============================  TESTING SUMMARY  =============================$$std; \
+ at AUTOMAKE_1_11_FALSE@	$(HANDLE_UNIT_TEST_SUMMARY); \
+ at AUTOMAKE_1_11_FALSE@	if test -s "system/test-suite.log"; then :; else \
+ at AUTOMAKE_1_11_FALSE@		echo "$${red}System tests did not run; maybe there were compilation problems ?$$std"; \
+ at AUTOMAKE_1_11_FALSE@	fi; \
+ at AUTOMAKE_1_11_FALSE@	for dir in $(subdirs_to_check); do \
+ at AUTOMAKE_1_11_FALSE@		log=$$dir/test-suite.log; \
+ at AUTOMAKE_1_11_FALSE@		if test -s "$$log"; then \
+ at AUTOMAKE_1_11_FALSE@			status="`head -n 11 $$log | tail -7`"; \
+ at AUTOMAKE_1_11_FALSE@			nicestatus="`echo $$status | sed 's/# [A-Z]*: 0 *//g;s/# \([A-Z]*\): \([0-9]*\)/\2 \1,/g;s/, *$$//;'`"; \
+ at AUTOMAKE_1_11_FALSE@			if	echo "$$status" | grep -q '# FAIL:  0' && \
+ at AUTOMAKE_1_11_FALSE@				echo "$$status" | grep -q '# XPASS: 0' && \
+ at AUTOMAKE_1_11_FALSE@				echo "$$status" | grep -q '# ERROR: 0' && \
+ at AUTOMAKE_1_11_FALSE@				echo "$$status" | grep -q '# SKIP:  0'; then \
+ at AUTOMAKE_1_11_FALSE@				printf "$$grn%-30s in $$dir$$std\\n" "$$nicestatus"; \
+ at AUTOMAKE_1_11_FALSE@			else \
+ at AUTOMAKE_1_11_FALSE@				echo "$$red$$nicestatus"; \
+ at AUTOMAKE_1_11_FALSE@				echo "    @abs_builddir@/$$log$$std"; \
+ at AUTOMAKE_1_11_FALSE@			fi; \
+ at AUTOMAKE_1_11_FALSE@		fi; \
+ at AUTOMAKE_1_11_FALSE@	done; \
+ at AUTOMAKE_1_11_FALSE@	echo $${blu}===============================  TESTING SUMMARY  =============================$$std
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/Makefile.am b/test/regress/Makefile.am
new file mode 100644
index 0000000..b9864d5
--- /dev/null
+++ b/test/regress/Makefile.am
@@ -0,0 +1,29 @@
+SUBDIRS = regress0
+DIST_SUBDIRS = regress0 regress1 regress2 regress3 regress4
+
+ at mk_include@ @srcdir@/Makefile.levels
+
+MAKEFLAGS = -k
+
+export VERBOSE = 1
+
+.PHONY: regress0 regress1 regress2 regress3 regress4
+regress1: regress0
+regress2: regress0 regress1
+regress3: regress0 regress1 regress2
+regress4: regress0 regress1 regress2 regress3
+regress0 regress1 regress2 regress3 regress4:
+	-cd $@ && $(MAKE) check
+
+# synonyms for "check" in this directory
+.PHONY: regress test
+regress test: check
+
+# no-ops here
+.PHONY: units systemtests
+units systemtests:
+
+EXTRA_DIST = \
+	Makefile.levels \
+	run_regression \
+	README
diff --git a/test/regress/Makefile.in b/test/regress/Makefile.in
new file mode 100644
index 0000000..f159e02
--- /dev/null
+++ b/test/regress/Makefile.in
@@ -0,0 +1,790 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in README
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+SUBDIRS = regress0
+DIST_SUBDIRS = regress0 regress1 regress2 regress3 regress4
+MAKEFLAGS = -k
+EXTRA_DIST = \
+	Makefile.levels \
+	run_regression \
+	README
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am clean clean-generic clean-libtool cscopelist-am ctags \
+	ctags-am distclean distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+ at mk_include@ @srcdir@/Makefile.levels
+
+export VERBOSE = 1
+
+.PHONY: regress0 regress1 regress2 regress3 regress4
+regress1: regress0
+regress2: regress0 regress1
+regress3: regress0 regress1 regress2
+regress4: regress0 regress1 regress2 regress3
+regress0 regress1 regress2 regress3 regress4:
+	-cd $@ && $(MAKE) check
+
+# synonyms for "check" in this directory
+.PHONY: regress test
+regress test: check
+
+# no-ops here
+.PHONY: units systemtests
+units systemtests:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/Makefile.levels b/test/regress/Makefile.levels
new file mode 100644
index 0000000..ecfb0c2
--- /dev/null
+++ b/test/regress/Makefile.levels
@@ -0,0 +1,14 @@
+# This Makefile fragment allows one to use "make check" but also specify
+# a regression level.
+ifeq ($(REGRESSION_LEVEL),1)
+SUBDIRS += regress1
+endif
+ifeq ($(REGRESSION_LEVEL),2)
+SUBDIRS += regress1 regress2
+endif
+ifeq ($(REGRESSION_LEVEL),3)
+SUBDIRS += regress1 regress2 regress3
+endif
+ifeq ($(REGRESSION_LEVEL),4)
+SUBDIRS += regress1 regress2 regress3 regress4
+endif
diff --git a/test/regress/README b/test/regress/README
new file mode 100644
index 0000000..6fcdf16
--- /dev/null
+++ b/test/regress/README
@@ -0,0 +1,63 @@
+Regressions
+===========
+
+To insert a new regression, add the file to Subversion, for example:
+
+  git add regress/regress0/testMyFunctionality.cvc
+
+Also add it to the relevant Makefile.am, here, in regress/regress0/Makefile.am.
+
+A number of regressions exist under test/regress that aren't listed in any
+Makefile.am.  These are regressions that may someday be included in the standard
+suite of tests, but aren't yet included (perhaps they test functionality not
+yet supported).
+
+If you want to add a new directory of regressions, add the directory name to
+SUBDIRS (with . running first, by convention), and set up the new directory
+with a new Makefile.am, adding all to the Subversion repository.
+
+=== EXPECTED OUTPUT, ERROR, AND EXIT CODES ===
+
+In the case of CVC input, you can specify expected stdout, stderr, and exit
+codes with the following lines directly in the CVC regression file:
+
+% EXPECT: stdout
+% EXPECT-ERROR: stderr
+% EXIT: 0
+
+expects an exit status of 0 from cvc4, the single line "stderr" on stderr,
+and the single line "stdout" on stdout.  You can repeat EXPECT and EXPECT-ERROR
+lines as many times as you like, and at different points of the file.  This is
+useful for multiple queries:
+
+% EXPECT: INVALID
+QUERY FALSE;
+% EXPECT: VALID
+QUERY TRUE;
+% EXPECT-ERROR: CVC4 Error:
+% EXPECT-ERROR: Parse Error: regress.cvc:7.13: Unexpected token: 'error'.
+syntax error;
+% EXIT: 1
+
+[Outdated: please also see edit below as an addendum.]
+Use of % gestures in CVC format is natural, as these are comments and ignored
+by the CVC presentation language lexer.  In SMT and SMT2 formats, you can do the
+same, putting % gestures in the file.  However, the run_regression script
+separates these from the benchmark before running cvc4, so the cvc4 SMT and SMT2
+lexers never see (and get tripped up on) the % gestures.  But there's then the
+annoyance that you can't run SMT and SMT2 regressions from the command line
+without the aid of the run_regression script.  So, if you prefer, you can separate
+the benchmark from the output expectations yourself, putting the benchmark in
+(e.g.) regress/regress0/benchmark.smt, and the % EXPECT: lines in
+regress/regress0/benchmark.smt.expect, which is specifically looked for by
+the run_regression script.  If such an .expect file exists, the benchmark
+is left verbatim (and never processed to remove the % EXPECT: lines) by the
+run_regression script.
+
+ -- Morgan Deters <mdeters at cs.nyu.edu>  Thu, 01 Jul 2010 13:36:53 -0400
+
+[Edit 2014/03/14: No support for '%' in .smt2 files any
+longer. Please use ';' or create separate .expect files. Very few test
+were using this "feature" and was causing issues because temp file
+name changed the expected error output string. '%' works for .smt files
+--Kshitij]
diff --git a/test/regress/regress0/Makefile.am b/test/regress/regress0/Makefile.am
new file mode 100644
index 0000000..1e533cc
--- /dev/null
+++ b/test/regress/regress0/Makefile.am
@@ -0,0 +1,218 @@
+SUBDIRS = . expect arith precedence uf uflra uflia bv arrays aufbv auflia datatypes quantifiers rewriterules lemmas push-pop preprocess tptp unconstrained decision fmf strings sets rels parser sygus sep
+DIST_SUBDIRS = $(SUBDIRS)
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+
+# Regression tests for SMT inputs
+SMT_TESTS = \
+	distinct.smt \
+	flet.smt \
+	flet2.smt \
+	fuzz_1.smt \
+	fuzz_3.smt \
+	ineq_basic.smt \
+	ineq_slack.smt \
+	ite_real_int_type.smt \
+	ite_real_valid.smt \
+	let.smt \
+	let2.smt \
+	simplification_bug.smt \
+	simplification_bug2.smt \
+	simple.smt \
+	simple2.smt \
+	simple-lra.smt \
+	simple-rdl.smt \
+	simple-uf.smt \
+	constant-rewrite.smt
+
+# Regression tests for SMT2 inputs
+SMT2_TESTS = \
+	arrayinuf_declare.smt2 \
+	boolean-terms-kernel1.smt2 \
+	boolean-terms-kernel2.smt2 \
+	boolean-terms-bug-array.smt2 \
+	chained-equality.smt2 \
+	ite2.smt2 \
+	ite3.smt2 \
+	ite4.smt2 \
+	ite5.smt2 \
+	simple-lra.smt2 \
+	simple-rdl.smt2 \
+	simple-uf.smt2 \
+	simplification_bug4.smt2 \
+	parallel-let.smt2 \
+	get-value-incremental.smt2 \
+	get-value-reals.smt2 \
+	get-value-ints.smt2 \
+	get-value-reals-ints.smt2 \
+	hung13sdk_output1.smt2 \
+	hung10_itesdk_output2.smt2 \
+	hung10_itesdk_output1.smt2 \
+	hung13sdk_output2.smt2 \
+	declare-funs.smt2
+
+# Regression tests for PL inputs
+CVC_TESTS = \
+	boolean.cvc \
+	boolean-prec.cvc \
+	boolean-terms.cvc \
+	hole6.cvc \
+	ite.cvc \
+	let.cvc \
+	logops.01.cvc \
+	logops.02.cvc \
+	logops.03.cvc \
+	logops.04.cvc \
+	logops.05.cvc \
+	simple.cvc \
+	smallcnf.cvc \
+	test9.cvc \
+	test11.cvc \
+	uf20-03.cvc \
+	wiki.01.cvc \
+	wiki.02.cvc \
+	wiki.03.cvc \
+	wiki.04.cvc \
+	wiki.05.cvc \
+	wiki.06.cvc \
+	wiki.07.cvc \
+	wiki.08.cvc \
+	wiki.09.cvc \
+	wiki.10.cvc \
+	wiki.11.cvc \
+	wiki.12.cvc \
+	wiki.13.cvc \
+	wiki.14.cvc \
+	wiki.15.cvc \
+	wiki.16.cvc \
+	wiki.17.cvc \
+	wiki.18.cvc \
+	wiki.19.cvc \
+	wiki.20.cvc \
+	wiki.21.cvc \
+	queries0.cvc \
+	trim.cvc \
+	print_lambda.cvc \
+	cvc3.userdoc.01.cvc \
+	cvc3.userdoc.02.cvc \
+	cvc3.userdoc.03.cvc \
+	cvc3.userdoc.04.cvc \
+	cvc3.userdoc.05.cvc \
+	cvc3.userdoc.06.cvc
+
+# Regression tests for TPTP inputs
+TPTP_TESTS =
+
+# Regression tests derived from bug reports
+BUG_TESTS = \
+	smt2output.smt2 \
+	bug32.cvc \
+	bug49.smt \
+	bug161.smt \
+	bug164.smt \
+	bug167.smt \
+	bug168.smt \
+	bug187.smt2 \
+	bug216.smt2 \
+	bug217.smt2 \
+	bug220.smt2 \
+	bug239.smt \
+	bug274.cvc \
+	bug288.smt \
+	bug288b.smt \
+	bug288c.smt \
+	bug296.smt2 \
+	buggy-ite.smt2 \
+	bug303.smt2 \
+	bug310.cvc \
+	bug322.cvc \
+	bug322b.cvc \
+	bug339.smt2 \
+	bug365.smt2 \
+	bug382.smt2 \
+	bug383.smt2 \
+	bug398.smt2 \
+	bug421.smt2 \
+	bug421b.smt2 \
+	bug480.smt2 \
+	bug484.smt2 \
+	bug486.cvc \
+	bug507.smt2 \
+	bug512.minimized.smt2 \
+	bug516.smt2 \
+	bug520.smt2 \
+	bug521.minimized.smt2 \
+	bug522.smt2 \
+	bug528a.smt2 \
+	bug541.smt2 \
+	bug543.smt2 \
+	bug544.smt2 \
+	bug548a.smt2 \
+	bug567.smt2 \
+	bug576.smt2 \
+	bug576a.smt2 \
+	bug578.smt2 \
+	bug585.cvc \
+	bug586.cvc \
+	bug593.smt2 \
+	bug595.cvc \
+	bug596.cvc \
+	bug596b.cvc \
+	bug605.cvc \
+	bt-test-00.smt2 \
+	bt-test-01.smt2
+#bug590.smt2
+
+TESTS = $(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(TPTP_TESTS) $(BUG_TESTS)
+
+# bug512 -- taking too long, --time-per not working perhaps? in any case,
+# we have a minimized version still getting tested
+DISABLED_TESTS = \
+	bug512.smt2
+
+EXTRA_DIST = $(TESTS) \
+	simplification_bug4.smt2.expect \
+	bug216.smt2.expect \
+	bug590.smt2.expect
+
+if CVC4_BUILD_PROFILE_COMPETITION
+else
+TESTS += \
+	error.cvc \
+	errorcrash.smt2 \
+	arrayinuf_error.smt2
+endif
+
+# and make sure to distribute it
+EXTRA_DIST += $(DISABLED_TESTS) \
+	subranges.cvc \
+	arrayinuf_error.smt2 \
+	errorcrash.smt2 \
+	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/Makefile.in b/test/regress/regress0/Makefile.in
new file mode 100644
index 0000000..4d0a50b
--- /dev/null
+++ b/test/regress/regress0/Makefile.in
@@ -0,0 +1,2367 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+TESTS = $(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(am__EXEEXT_1) \
+	$(BUG_TESTS) $(am__append_1)
+ at CVC4_BUILD_PROFILE_COMPETITION_FALSE@am__append_1 = \
+ at CVC4_BUILD_PROFILE_COMPETITION_FALSE@	error.cvc \
+ at CVC4_BUILD_PROFILE_COMPETITION_FALSE@	errorcrash.smt2 \
+ at CVC4_BUILD_PROFILE_COMPETITION_FALSE@	arrayinuf_error.smt2
+
+subdir = test/regress/regress0
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+am__EXEEXT_1 =
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+SUBDIRS = . expect arith precedence uf uflra uflia bv arrays aufbv auflia datatypes quantifiers rewriterules lemmas push-pop preprocess tptp unconstrained decision fmf strings sets rels parser sygus sep
+DIST_SUBDIRS = $(SUBDIRS)
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+
+# Regression tests for SMT inputs
+SMT_TESTS = \
+	distinct.smt \
+	flet.smt \
+	flet2.smt \
+	fuzz_1.smt \
+	fuzz_3.smt \
+	ineq_basic.smt \
+	ineq_slack.smt \
+	ite_real_int_type.smt \
+	ite_real_valid.smt \
+	let.smt \
+	let2.smt \
+	simplification_bug.smt \
+	simplification_bug2.smt \
+	simple.smt \
+	simple2.smt \
+	simple-lra.smt \
+	simple-rdl.smt \
+	simple-uf.smt \
+	constant-rewrite.smt
+
+
+# Regression tests for SMT2 inputs
+SMT2_TESTS = \
+	arrayinuf_declare.smt2 \
+	boolean-terms-kernel1.smt2 \
+	boolean-terms-kernel2.smt2 \
+	boolean-terms-bug-array.smt2 \
+	chained-equality.smt2 \
+	ite2.smt2 \
+	ite3.smt2 \
+	ite4.smt2 \
+	ite5.smt2 \
+	simple-lra.smt2 \
+	simple-rdl.smt2 \
+	simple-uf.smt2 \
+	simplification_bug4.smt2 \
+	parallel-let.smt2 \
+	get-value-incremental.smt2 \
+	get-value-reals.smt2 \
+	get-value-ints.smt2 \
+	get-value-reals-ints.smt2 \
+	hung13sdk_output1.smt2 \
+	hung10_itesdk_output2.smt2 \
+	hung10_itesdk_output1.smt2 \
+	hung13sdk_output2.smt2 \
+	declare-funs.smt2
+
+
+# Regression tests for PL inputs
+CVC_TESTS = \
+	boolean.cvc \
+	boolean-prec.cvc \
+	boolean-terms.cvc \
+	hole6.cvc \
+	ite.cvc \
+	let.cvc \
+	logops.01.cvc \
+	logops.02.cvc \
+	logops.03.cvc \
+	logops.04.cvc \
+	logops.05.cvc \
+	simple.cvc \
+	smallcnf.cvc \
+	test9.cvc \
+	test11.cvc \
+	uf20-03.cvc \
+	wiki.01.cvc \
+	wiki.02.cvc \
+	wiki.03.cvc \
+	wiki.04.cvc \
+	wiki.05.cvc \
+	wiki.06.cvc \
+	wiki.07.cvc \
+	wiki.08.cvc \
+	wiki.09.cvc \
+	wiki.10.cvc \
+	wiki.11.cvc \
+	wiki.12.cvc \
+	wiki.13.cvc \
+	wiki.14.cvc \
+	wiki.15.cvc \
+	wiki.16.cvc \
+	wiki.17.cvc \
+	wiki.18.cvc \
+	wiki.19.cvc \
+	wiki.20.cvc \
+	wiki.21.cvc \
+	queries0.cvc \
+	trim.cvc \
+	print_lambda.cvc \
+	cvc3.userdoc.01.cvc \
+	cvc3.userdoc.02.cvc \
+	cvc3.userdoc.03.cvc \
+	cvc3.userdoc.04.cvc \
+	cvc3.userdoc.05.cvc \
+	cvc3.userdoc.06.cvc
+
+
+# Regression tests for TPTP inputs
+TPTP_TESTS = 
+
+# Regression tests derived from bug reports
+BUG_TESTS = \
+	smt2output.smt2 \
+	bug32.cvc \
+	bug49.smt \
+	bug161.smt \
+	bug164.smt \
+	bug167.smt \
+	bug168.smt \
+	bug187.smt2 \
+	bug216.smt2 \
+	bug217.smt2 \
+	bug220.smt2 \
+	bug239.smt \
+	bug274.cvc \
+	bug288.smt \
+	bug288b.smt \
+	bug288c.smt \
+	bug296.smt2 \
+	buggy-ite.smt2 \
+	bug303.smt2 \
+	bug310.cvc \
+	bug322.cvc \
+	bug322b.cvc \
+	bug339.smt2 \
+	bug365.smt2 \
+	bug382.smt2 \
+	bug383.smt2 \
+	bug398.smt2 \
+	bug421.smt2 \
+	bug421b.smt2 \
+	bug480.smt2 \
+	bug484.smt2 \
+	bug486.cvc \
+	bug507.smt2 \
+	bug512.minimized.smt2 \
+	bug516.smt2 \
+	bug520.smt2 \
+	bug521.minimized.smt2 \
+	bug522.smt2 \
+	bug528a.smt2 \
+	bug541.smt2 \
+	bug543.smt2 \
+	bug544.smt2 \
+	bug548a.smt2 \
+	bug567.smt2 \
+	bug576.smt2 \
+	bug576a.smt2 \
+	bug578.smt2 \
+	bug585.cvc \
+	bug586.cvc \
+	bug593.smt2 \
+	bug595.cvc \
+	bug596.cvc \
+	bug596b.cvc \
+	bug605.cvc \
+	bt-test-00.smt2 \
+	bt-test-01.smt2
+
+
+# bug512 -- taking too long, --time-per not working perhaps? in any case,
+# we have a minimized version still getting tested
+DISABLED_TESTS = \
+	bug512.smt2
+
+
+# and make sure to distribute it
+EXTRA_DIST = $(TESTS) simplification_bug4.smt2.expect \
+	bug216.smt2.expect bug590.smt2.expect $(DISABLED_TESTS) \
+	subranges.cvc arrayinuf_error.smt2 errorcrash.smt2 error.cvc
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+distinct.smt.log: distinct.smt
+	@p='distinct.smt'; \
+	b='distinct.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+flet.smt.log: flet.smt
+	@p='flet.smt'; \
+	b='flet.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+flet2.smt.log: flet2.smt
+	@p='flet2.smt'; \
+	b='flet2.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_1.smt.log: fuzz_1.smt
+	@p='fuzz_1.smt'; \
+	b='fuzz_1.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_3.smt.log: fuzz_3.smt
+	@p='fuzz_3.smt'; \
+	b='fuzz_3.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ineq_basic.smt.log: ineq_basic.smt
+	@p='ineq_basic.smt'; \
+	b='ineq_basic.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ineq_slack.smt.log: ineq_slack.smt
+	@p='ineq_slack.smt'; \
+	b='ineq_slack.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ite_real_int_type.smt.log: ite_real_int_type.smt
+	@p='ite_real_int_type.smt'; \
+	b='ite_real_int_type.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ite_real_valid.smt.log: ite_real_valid.smt
+	@p='ite_real_valid.smt'; \
+	b='ite_real_valid.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+let.smt.log: let.smt
+	@p='let.smt'; \
+	b='let.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+let2.smt.log: let2.smt
+	@p='let2.smt'; \
+	b='let2.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simplification_bug.smt.log: simplification_bug.smt
+	@p='simplification_bug.smt'; \
+	b='simplification_bug.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simplification_bug2.smt.log: simplification_bug2.smt
+	@p='simplification_bug2.smt'; \
+	b='simplification_bug2.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple.smt.log: simple.smt
+	@p='simple.smt'; \
+	b='simple.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple2.smt.log: simple2.smt
+	@p='simple2.smt'; \
+	b='simple2.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple-lra.smt.log: simple-lra.smt
+	@p='simple-lra.smt'; \
+	b='simple-lra.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple-rdl.smt.log: simple-rdl.smt
+	@p='simple-rdl.smt'; \
+	b='simple-rdl.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple-uf.smt.log: simple-uf.smt
+	@p='simple-uf.smt'; \
+	b='simple-uf.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+constant-rewrite.smt.log: constant-rewrite.smt
+	@p='constant-rewrite.smt'; \
+	b='constant-rewrite.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arrayinuf_declare.smt2.log: arrayinuf_declare.smt2
+	@p='arrayinuf_declare.smt2'; \
+	b='arrayinuf_declare.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+boolean-terms-kernel1.smt2.log: boolean-terms-kernel1.smt2
+	@p='boolean-terms-kernel1.smt2'; \
+	b='boolean-terms-kernel1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+boolean-terms-kernel2.smt2.log: boolean-terms-kernel2.smt2
+	@p='boolean-terms-kernel2.smt2'; \
+	b='boolean-terms-kernel2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+boolean-terms-bug-array.smt2.log: boolean-terms-bug-array.smt2
+	@p='boolean-terms-bug-array.smt2'; \
+	b='boolean-terms-bug-array.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+chained-equality.smt2.log: chained-equality.smt2
+	@p='chained-equality.smt2'; \
+	b='chained-equality.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ite2.smt2.log: ite2.smt2
+	@p='ite2.smt2'; \
+	b='ite2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ite3.smt2.log: ite3.smt2
+	@p='ite3.smt2'; \
+	b='ite3.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ite4.smt2.log: ite4.smt2
+	@p='ite4.smt2'; \
+	b='ite4.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ite5.smt2.log: ite5.smt2
+	@p='ite5.smt2'; \
+	b='ite5.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple-lra.smt2.log: simple-lra.smt2
+	@p='simple-lra.smt2'; \
+	b='simple-lra.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple-rdl.smt2.log: simple-rdl.smt2
+	@p='simple-rdl.smt2'; \
+	b='simple-rdl.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple-uf.smt2.log: simple-uf.smt2
+	@p='simple-uf.smt2'; \
+	b='simple-uf.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simplification_bug4.smt2.log: simplification_bug4.smt2
+	@p='simplification_bug4.smt2'; \
+	b='simplification_bug4.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+parallel-let.smt2.log: parallel-let.smt2
+	@p='parallel-let.smt2'; \
+	b='parallel-let.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+get-value-incremental.smt2.log: get-value-incremental.smt2
+	@p='get-value-incremental.smt2'; \
+	b='get-value-incremental.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+get-value-reals.smt2.log: get-value-reals.smt2
+	@p='get-value-reals.smt2'; \
+	b='get-value-reals.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+get-value-ints.smt2.log: get-value-ints.smt2
+	@p='get-value-ints.smt2'; \
+	b='get-value-ints.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+get-value-reals-ints.smt2.log: get-value-reals-ints.smt2
+	@p='get-value-reals-ints.smt2'; \
+	b='get-value-reals-ints.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+hung13sdk_output1.smt2.log: hung13sdk_output1.smt2
+	@p='hung13sdk_output1.smt2'; \
+	b='hung13sdk_output1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+hung10_itesdk_output2.smt2.log: hung10_itesdk_output2.smt2
+	@p='hung10_itesdk_output2.smt2'; \
+	b='hung10_itesdk_output2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+hung10_itesdk_output1.smt2.log: hung10_itesdk_output1.smt2
+	@p='hung10_itesdk_output1.smt2'; \
+	b='hung10_itesdk_output1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+hung13sdk_output2.smt2.log: hung13sdk_output2.smt2
+	@p='hung13sdk_output2.smt2'; \
+	b='hung13sdk_output2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+declare-funs.smt2.log: declare-funs.smt2
+	@p='declare-funs.smt2'; \
+	b='declare-funs.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+boolean.cvc.log: boolean.cvc
+	@p='boolean.cvc'; \
+	b='boolean.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+boolean-prec.cvc.log: boolean-prec.cvc
+	@p='boolean-prec.cvc'; \
+	b='boolean-prec.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+boolean-terms.cvc.log: boolean-terms.cvc
+	@p='boolean-terms.cvc'; \
+	b='boolean-terms.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+hole6.cvc.log: hole6.cvc
+	@p='hole6.cvc'; \
+	b='hole6.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ite.cvc.log: ite.cvc
+	@p='ite.cvc'; \
+	b='ite.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+let.cvc.log: let.cvc
+	@p='let.cvc'; \
+	b='let.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+logops.01.cvc.log: logops.01.cvc
+	@p='logops.01.cvc'; \
+	b='logops.01.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+logops.02.cvc.log: logops.02.cvc
+	@p='logops.02.cvc'; \
+	b='logops.02.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+logops.03.cvc.log: logops.03.cvc
+	@p='logops.03.cvc'; \
+	b='logops.03.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+logops.04.cvc.log: logops.04.cvc
+	@p='logops.04.cvc'; \
+	b='logops.04.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+logops.05.cvc.log: logops.05.cvc
+	@p='logops.05.cvc'; \
+	b='logops.05.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple.cvc.log: simple.cvc
+	@p='simple.cvc'; \
+	b='simple.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+smallcnf.cvc.log: smallcnf.cvc
+	@p='smallcnf.cvc'; \
+	b='smallcnf.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+test9.cvc.log: test9.cvc
+	@p='test9.cvc'; \
+	b='test9.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+test11.cvc.log: test11.cvc
+	@p='test11.cvc'; \
+	b='test11.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+uf20-03.cvc.log: uf20-03.cvc
+	@p='uf20-03.cvc'; \
+	b='uf20-03.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.01.cvc.log: wiki.01.cvc
+	@p='wiki.01.cvc'; \
+	b='wiki.01.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.02.cvc.log: wiki.02.cvc
+	@p='wiki.02.cvc'; \
+	b='wiki.02.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.03.cvc.log: wiki.03.cvc
+	@p='wiki.03.cvc'; \
+	b='wiki.03.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.04.cvc.log: wiki.04.cvc
+	@p='wiki.04.cvc'; \
+	b='wiki.04.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.05.cvc.log: wiki.05.cvc
+	@p='wiki.05.cvc'; \
+	b='wiki.05.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.06.cvc.log: wiki.06.cvc
+	@p='wiki.06.cvc'; \
+	b='wiki.06.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.07.cvc.log: wiki.07.cvc
+	@p='wiki.07.cvc'; \
+	b='wiki.07.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.08.cvc.log: wiki.08.cvc
+	@p='wiki.08.cvc'; \
+	b='wiki.08.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.09.cvc.log: wiki.09.cvc
+	@p='wiki.09.cvc'; \
+	b='wiki.09.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.10.cvc.log: wiki.10.cvc
+	@p='wiki.10.cvc'; \
+	b='wiki.10.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.11.cvc.log: wiki.11.cvc
+	@p='wiki.11.cvc'; \
+	b='wiki.11.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.12.cvc.log: wiki.12.cvc
+	@p='wiki.12.cvc'; \
+	b='wiki.12.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.13.cvc.log: wiki.13.cvc
+	@p='wiki.13.cvc'; \
+	b='wiki.13.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.14.cvc.log: wiki.14.cvc
+	@p='wiki.14.cvc'; \
+	b='wiki.14.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.15.cvc.log: wiki.15.cvc
+	@p='wiki.15.cvc'; \
+	b='wiki.15.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.16.cvc.log: wiki.16.cvc
+	@p='wiki.16.cvc'; \
+	b='wiki.16.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.17.cvc.log: wiki.17.cvc
+	@p='wiki.17.cvc'; \
+	b='wiki.17.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.18.cvc.log: wiki.18.cvc
+	@p='wiki.18.cvc'; \
+	b='wiki.18.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.19.cvc.log: wiki.19.cvc
+	@p='wiki.19.cvc'; \
+	b='wiki.19.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.20.cvc.log: wiki.20.cvc
+	@p='wiki.20.cvc'; \
+	b='wiki.20.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wiki.21.cvc.log: wiki.21.cvc
+	@p='wiki.21.cvc'; \
+	b='wiki.21.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+queries0.cvc.log: queries0.cvc
+	@p='queries0.cvc'; \
+	b='queries0.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+trim.cvc.log: trim.cvc
+	@p='trim.cvc'; \
+	b='trim.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+print_lambda.cvc.log: print_lambda.cvc
+	@p='print_lambda.cvc'; \
+	b='print_lambda.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cvc3.userdoc.01.cvc.log: cvc3.userdoc.01.cvc
+	@p='cvc3.userdoc.01.cvc'; \
+	b='cvc3.userdoc.01.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cvc3.userdoc.02.cvc.log: cvc3.userdoc.02.cvc
+	@p='cvc3.userdoc.02.cvc'; \
+	b='cvc3.userdoc.02.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cvc3.userdoc.03.cvc.log: cvc3.userdoc.03.cvc
+	@p='cvc3.userdoc.03.cvc'; \
+	b='cvc3.userdoc.03.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cvc3.userdoc.04.cvc.log: cvc3.userdoc.04.cvc
+	@p='cvc3.userdoc.04.cvc'; \
+	b='cvc3.userdoc.04.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cvc3.userdoc.05.cvc.log: cvc3.userdoc.05.cvc
+	@p='cvc3.userdoc.05.cvc'; \
+	b='cvc3.userdoc.05.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cvc3.userdoc.06.cvc.log: cvc3.userdoc.06.cvc
+	@p='cvc3.userdoc.06.cvc'; \
+	b='cvc3.userdoc.06.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+smt2output.smt2.log: smt2output.smt2
+	@p='smt2output.smt2'; \
+	b='smt2output.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug32.cvc.log: bug32.cvc
+	@p='bug32.cvc'; \
+	b='bug32.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug49.smt.log: bug49.smt
+	@p='bug49.smt'; \
+	b='bug49.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug161.smt.log: bug161.smt
+	@p='bug161.smt'; \
+	b='bug161.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug164.smt.log: bug164.smt
+	@p='bug164.smt'; \
+	b='bug164.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug167.smt.log: bug167.smt
+	@p='bug167.smt'; \
+	b='bug167.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug168.smt.log: bug168.smt
+	@p='bug168.smt'; \
+	b='bug168.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug187.smt2.log: bug187.smt2
+	@p='bug187.smt2'; \
+	b='bug187.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug216.smt2.log: bug216.smt2
+	@p='bug216.smt2'; \
+	b='bug216.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug217.smt2.log: bug217.smt2
+	@p='bug217.smt2'; \
+	b='bug217.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug220.smt2.log: bug220.smt2
+	@p='bug220.smt2'; \
+	b='bug220.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug239.smt.log: bug239.smt
+	@p='bug239.smt'; \
+	b='bug239.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug274.cvc.log: bug274.cvc
+	@p='bug274.cvc'; \
+	b='bug274.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug288.smt.log: bug288.smt
+	@p='bug288.smt'; \
+	b='bug288.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug288b.smt.log: bug288b.smt
+	@p='bug288b.smt'; \
+	b='bug288b.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug288c.smt.log: bug288c.smt
+	@p='bug288c.smt'; \
+	b='bug288c.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug296.smt2.log: bug296.smt2
+	@p='bug296.smt2'; \
+	b='bug296.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+buggy-ite.smt2.log: buggy-ite.smt2
+	@p='buggy-ite.smt2'; \
+	b='buggy-ite.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug303.smt2.log: bug303.smt2
+	@p='bug303.smt2'; \
+	b='bug303.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug310.cvc.log: bug310.cvc
+	@p='bug310.cvc'; \
+	b='bug310.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug322.cvc.log: bug322.cvc
+	@p='bug322.cvc'; \
+	b='bug322.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug322b.cvc.log: bug322b.cvc
+	@p='bug322b.cvc'; \
+	b='bug322b.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug339.smt2.log: bug339.smt2
+	@p='bug339.smt2'; \
+	b='bug339.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug365.smt2.log: bug365.smt2
+	@p='bug365.smt2'; \
+	b='bug365.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug382.smt2.log: bug382.smt2
+	@p='bug382.smt2'; \
+	b='bug382.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug383.smt2.log: bug383.smt2
+	@p='bug383.smt2'; \
+	b='bug383.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug398.smt2.log: bug398.smt2
+	@p='bug398.smt2'; \
+	b='bug398.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug421.smt2.log: bug421.smt2
+	@p='bug421.smt2'; \
+	b='bug421.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug421b.smt2.log: bug421b.smt2
+	@p='bug421b.smt2'; \
+	b='bug421b.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug480.smt2.log: bug480.smt2
+	@p='bug480.smt2'; \
+	b='bug480.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug484.smt2.log: bug484.smt2
+	@p='bug484.smt2'; \
+	b='bug484.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug486.cvc.log: bug486.cvc
+	@p='bug486.cvc'; \
+	b='bug486.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug507.smt2.log: bug507.smt2
+	@p='bug507.smt2'; \
+	b='bug507.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug512.minimized.smt2.log: bug512.minimized.smt2
+	@p='bug512.minimized.smt2'; \
+	b='bug512.minimized.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug516.smt2.log: bug516.smt2
+	@p='bug516.smt2'; \
+	b='bug516.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug520.smt2.log: bug520.smt2
+	@p='bug520.smt2'; \
+	b='bug520.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug521.minimized.smt2.log: bug521.minimized.smt2
+	@p='bug521.minimized.smt2'; \
+	b='bug521.minimized.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug522.smt2.log: bug522.smt2
+	@p='bug522.smt2'; \
+	b='bug522.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug528a.smt2.log: bug528a.smt2
+	@p='bug528a.smt2'; \
+	b='bug528a.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug541.smt2.log: bug541.smt2
+	@p='bug541.smt2'; \
+	b='bug541.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug543.smt2.log: bug543.smt2
+	@p='bug543.smt2'; \
+	b='bug543.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug544.smt2.log: bug544.smt2
+	@p='bug544.smt2'; \
+	b='bug544.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug548a.smt2.log: bug548a.smt2
+	@p='bug548a.smt2'; \
+	b='bug548a.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug567.smt2.log: bug567.smt2
+	@p='bug567.smt2'; \
+	b='bug567.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug576.smt2.log: bug576.smt2
+	@p='bug576.smt2'; \
+	b='bug576.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug576a.smt2.log: bug576a.smt2
+	@p='bug576a.smt2'; \
+	b='bug576a.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug578.smt2.log: bug578.smt2
+	@p='bug578.smt2'; \
+	b='bug578.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug585.cvc.log: bug585.cvc
+	@p='bug585.cvc'; \
+	b='bug585.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug586.cvc.log: bug586.cvc
+	@p='bug586.cvc'; \
+	b='bug586.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug593.smt2.log: bug593.smt2
+	@p='bug593.smt2'; \
+	b='bug593.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug595.cvc.log: bug595.cvc
+	@p='bug595.cvc'; \
+	b='bug595.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug596.cvc.log: bug596.cvc
+	@p='bug596.cvc'; \
+	b='bug596.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug596b.cvc.log: bug596b.cvc
+	@p='bug596b.cvc'; \
+	b='bug596b.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug605.cvc.log: bug605.cvc
+	@p='bug605.cvc'; \
+	b='bug605.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bt-test-00.smt2.log: bt-test-00.smt2
+	@p='bt-test-00.smt2'; \
+	b='bt-test-00.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bt-test-01.smt2.log: bt-test-01.smt2
+	@p='bt-test-01.smt2'; \
+	b='bt-test-01.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+error.cvc.log: error.cvc
+	@p='error.cvc'; \
+	b='error.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+errorcrash.smt2.log: errorcrash.smt2
+	@p='errorcrash.smt2'; \
+	b='errorcrash.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arrayinuf_error.smt2.log: arrayinuf_error.smt2
+	@p='arrayinuf_error.smt2'; \
+	b='arrayinuf_error.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/arith/Makefile.am b/test/regress/regress0/arith/Makefile.am
new file mode 100644
index 0000000..048effc
--- /dev/null
+++ b/test/regress/regress0/arith/Makefile.am
@@ -0,0 +1,81 @@
+SUBDIRS = . integers
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	arith.01.cvc \
+	arith.02.cvc \
+	arith.03.cvc \
+	delta-minimized-row-vector-bug.smt \
+	fuzz_3-eq.smt \
+	leq.01.smt \
+	mod.01.smt2 \
+	mod.02.smt2 \
+	mod.03.smt2 \
+	div.01.smt2 \
+	div.02.smt2 \
+	div.03.smt2 \
+	div.04.smt2 \
+	div.05.smt2 \
+	div.06.smt2 \
+	div.07.smt2 \
+	div.08.smt2 \
+	mult.01.smt2 \
+	mult.02.smt2 \
+	bug443.delta01.smt \
+	miplib.cvc \
+	miplib2.cvc \
+	miplib3.cvc \
+	miplib4.cvc \
+	miplibtrick.smt \
+	bug547.1.smt2 \
+	bug547.2.smt2 \
+	bug569.smt2 \
+	div.09.smt2 \
+	bug716.0.smt2 \
+	bug716.1.cvc
+#	problem__003.smt2
+
+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
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/arith/Makefile.in b/test/regress/regress0/arith/Makefile.in
new file mode 100644
index 0000000..7166af1
--- /dev/null
+++ b/test/regress/regress0/arith/Makefile.in
@@ -0,0 +1,1425 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/arith
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+SUBDIRS = . integers
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	arith.01.cvc \
+	arith.02.cvc \
+	arith.03.cvc \
+	delta-minimized-row-vector-bug.smt \
+	fuzz_3-eq.smt \
+	leq.01.smt \
+	mod.01.smt2 \
+	mod.02.smt2 \
+	mod.03.smt2 \
+	div.01.smt2 \
+	div.02.smt2 \
+	div.03.smt2 \
+	div.04.smt2 \
+	div.05.smt2 \
+	div.06.smt2 \
+	div.07.smt2 \
+	div.08.smt2 \
+	mult.01.smt2 \
+	mult.02.smt2 \
+	bug443.delta01.smt \
+	miplib.cvc \
+	miplib2.cvc \
+	miplib3.cvc \
+	miplib4.cvc \
+	miplibtrick.smt \
+	bug547.1.smt2 \
+	bug547.2.smt2 \
+	bug569.smt2 \
+	div.09.smt2 \
+	bug716.0.smt2 \
+	bug716.1.cvc
+
+#	problem__003.smt2
+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
+
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/arith/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/arith/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+arith.01.cvc.log: arith.01.cvc
+	@p='arith.01.cvc'; \
+	b='arith.01.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith.02.cvc.log: arith.02.cvc
+	@p='arith.02.cvc'; \
+	b='arith.02.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith.03.cvc.log: arith.03.cvc
+	@p='arith.03.cvc'; \
+	b='arith.03.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+delta-minimized-row-vector-bug.smt.log: delta-minimized-row-vector-bug.smt
+	@p='delta-minimized-row-vector-bug.smt'; \
+	b='delta-minimized-row-vector-bug.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_3-eq.smt.log: fuzz_3-eq.smt
+	@p='fuzz_3-eq.smt'; \
+	b='fuzz_3-eq.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+leq.01.smt.log: leq.01.smt
+	@p='leq.01.smt'; \
+	b='leq.01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mod.01.smt2.log: mod.01.smt2
+	@p='mod.01.smt2'; \
+	b='mod.01.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mod.02.smt2.log: mod.02.smt2
+	@p='mod.02.smt2'; \
+	b='mod.02.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mod.03.smt2.log: mod.03.smt2
+	@p='mod.03.smt2'; \
+	b='mod.03.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+div.01.smt2.log: div.01.smt2
+	@p='div.01.smt2'; \
+	b='div.01.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+div.02.smt2.log: div.02.smt2
+	@p='div.02.smt2'; \
+	b='div.02.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+div.03.smt2.log: div.03.smt2
+	@p='div.03.smt2'; \
+	b='div.03.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+div.04.smt2.log: div.04.smt2
+	@p='div.04.smt2'; \
+	b='div.04.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+div.05.smt2.log: div.05.smt2
+	@p='div.05.smt2'; \
+	b='div.05.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+div.06.smt2.log: div.06.smt2
+	@p='div.06.smt2'; \
+	b='div.06.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+div.07.smt2.log: div.07.smt2
+	@p='div.07.smt2'; \
+	b='div.07.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+div.08.smt2.log: div.08.smt2
+	@p='div.08.smt2'; \
+	b='div.08.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mult.01.smt2.log: mult.01.smt2
+	@p='mult.01.smt2'; \
+	b='mult.01.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mult.02.smt2.log: mult.02.smt2
+	@p='mult.02.smt2'; \
+	b='mult.02.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug443.delta01.smt.log: bug443.delta01.smt
+	@p='bug443.delta01.smt'; \
+	b='bug443.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+miplib.cvc.log: miplib.cvc
+	@p='miplib.cvc'; \
+	b='miplib.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+miplib2.cvc.log: miplib2.cvc
+	@p='miplib2.cvc'; \
+	b='miplib2.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+miplib3.cvc.log: miplib3.cvc
+	@p='miplib3.cvc'; \
+	b='miplib3.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+miplib4.cvc.log: miplib4.cvc
+	@p='miplib4.cvc'; \
+	b='miplib4.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+miplibtrick.smt.log: miplibtrick.smt
+	@p='miplibtrick.smt'; \
+	b='miplibtrick.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug547.1.smt2.log: bug547.1.smt2
+	@p='bug547.1.smt2'; \
+	b='bug547.1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug547.2.smt2.log: bug547.2.smt2
+	@p='bug547.2.smt2'; \
+	b='bug547.2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug569.smt2.log: bug569.smt2
+	@p='bug569.smt2'; \
+	b='bug569.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+div.09.smt2.log: div.09.smt2
+	@p='div.09.smt2'; \
+	b='div.09.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug716.0.smt2.log: bug716.0.smt2
+	@p='bug716.0.smt2'; \
+	b='bug716.0.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug716.1.cvc.log: bug716.1.cvc
+	@p='bug716.1.cvc'; \
+	b='bug716.1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/arith/arith.01.cvc b/test/regress/regress0/arith/arith.01.cvc
new file mode 100644
index 0000000..1de397a
--- /dev/null
+++ b/test/regress/regress0/arith/arith.01.cvc
@@ -0,0 +1,5 @@
+% EXPECT: valid
+x : REAL;
+y : REAL;
+
+QUERY (x * y ) = (y * x);
diff --git a/test/regress/regress0/arith/arith.02.cvc b/test/regress/regress0/arith/arith.02.cvc
new file mode 100644
index 0000000..d7b0291
--- /dev/null
+++ b/test/regress/regress0/arith/arith.02.cvc
@@ -0,0 +1,6 @@
+% EXPECT: valid
+x : REAL;
+y : REAL;
+z : REAL;
+
+QUERY x*(y*z) = (x*y)*z;
diff --git a/test/regress/regress0/arith/arith.03.cvc b/test/regress/regress0/arith/arith.03.cvc
new file mode 100644
index 0000000..288c341
--- /dev/null
+++ b/test/regress/regress0/arith/arith.03.cvc
@@ -0,0 +1,5 @@
+% EXPECT: valid
+x : REAL;
+y : REAL;
+
+QUERY (x + y)*(x + y) = x*x + 2*x*y + y*y;
diff --git a/test/regress/regress0/arith/bug443.delta01.smt b/test/regress/regress0/arith/bug443.delta01.smt
new file mode 100644
index 0000000..0b8a0d9
--- /dev/null
+++ b/test/regress/regress0/arith/bug443.delta01.smt
@@ -0,0 +1,37 @@
+(benchmark fuzzsmt
+:logic QF_UFLRA
+:extrafuns ((v1 Real))
+:extrafuns ((v2 Real))
+:extrafuns ((v0 Real))
+:extrapreds ((p1 Real))
+:status sat
+:formula
+(let (?n1 0)
+(flet ($n2 (p1 ?n1))
+(let (?n3 1)
+(flet ($n4 (= ?n3 v2))
+(let (?n5 5)
+(let (?n6 (~ ?n5))
+(let (?n7 (* v2 ?n6))
+(let (?n8 (+ ?n7 v1))
+(flet ($n9 (= ?n5 ?n8))
+(let (?n10 (ite $n9 ?n3 v1))
+(flet ($n11 (= ?n7 ?n10))
+(flet ($n12 (p1 v0))
+(let (?n13 (ite $n12 ?n1 v1))
+(flet ($n14 (p1 ?n13))
+(let (?n15 (~ ?n7))
+(let (?n16 (- ?n3 ?n15))
+(flet ($n17 (>= ?n16 ?n8))
+(flet ($n18 (> ?n16 ?n1))
+(flet ($n19 (= ?n8 v0))
+(let (?n20 (ite $n19 ?n8 ?n16))
+(let (?n21 (ite $n18 ?n20 ?n7))
+(let (?n22 (ite $n17 ?n21 v2))
+(flet ($n23 (> ?n22 v1))
+(flet ($n24 (implies $n14 $n23))
+(flet ($n25 (and $n11 $n24))
+(flet ($n26 (implies $n4 $n25))
+(flet ($n27 (xor $n2 $n26))
+$n27
+))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/arith/bug547.1.smt2 b/test/regress/regress0/arith/bug547.1.smt2
new file mode 100644
index 0000000..4b7cf97
--- /dev/null
+++ b/test/regress/regress0/arith/bug547.1.smt2
@@ -0,0 +1,8 @@
+; COMMAND-LINE: --rewrite-divk
+; EXPECT: unknown
+(set-logic QF_NIA)
+(declare-fun x () Int)
+(declare-fun y () Int)
+(assert (= 1 (mod (* x y) 3)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/arith/bug547.2.smt2 b/test/regress/regress0/arith/bug547.2.smt2
new file mode 100644
index 0000000..f39262c
--- /dev/null
+++ b/test/regress/regress0/arith/bug547.2.smt2
@@ -0,0 +1,9 @@
+; COMMAND-LINE: --rewrite-divk
+; EXPECT: unknown
+(set-logic QF_NIA)
+(declare-fun x () Int)
+(declare-fun y () Int)
+(declare-fun z () Int)
+(assert (= (+ (* z 2) 1) (* x y)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/arith/bug569.smt2 b/test/regress/regress0/arith/bug569.smt2
new file mode 100644
index 0000000..e1ca49a
--- /dev/null
+++ b/test/regress/regress0/arith/bug569.smt2
@@ -0,0 +1,14 @@
+; COMMAND-LINE: --no-check-unsat-cores
+; EXPECT: unsat
+(set-logic QF_AUFLIRA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-fun v1 () Int)
+(declare-fun v3 () Int)
+(declare-fun v5 () Real)
+(assert (= (to_real v1) (+ (to_real v3) v5)))
+(assert (< v5 1))
+(assert (> v5 0))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/arith/bug716.0.smt2 b/test/regress/regress0/arith/bug716.0.smt2
new file mode 100644
index 0000000..20a5ca3
--- /dev/null
+++ b/test/regress/regress0/arith/bug716.0.smt2
@@ -0,0 +1,662 @@
+; SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/' -e 's/in a linear logic: .*$/in a linear logic: TERM/'
+; EXPECT: (error "A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: TERM
+; EXPECT: if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.
+; EXPECT: The fact in question: TERM
+; EXPECT: ")
+; EXIT: 1
+(set-logic AUFBVDTLIRA)
+;; produced by cvc4_15.drv ;;
+(set-info :source |VC generated by SPARK 2014|)
+(set-info :smt-lib-version 2.0)
+(set-info :category industrial)
+(set-info :status unknown)
+;;; generated by SMT-LIB2 driver
+;;; SMT-LIB2 driver: bit-vectors, common part
+(set-option :produce-models true)
+;;; SMT-LIB2: integer arithmetic
+;;; SMT-LIB2: real arithmetic
+(declare-datatypes () ((tuple0 (Tuple0))))
+(declare-sort us_private 0)
+
+(declare-fun us_null_ext__ () us_private)
+
+(declare-sort us_type_of_heap 0)
+
+(declare-datatypes ()
+((us_type_of_heap__ref
+ (mk___type_of_heap__ref (us_type_of_heap__content us_type_of_heap)))))
+(declare-sort us_image 0)
+
+(declare-datatypes () ((int__ref (mk_int__ref (int__content Int)))))
+(declare-datatypes () ((bool__ref (mk_bool__ref (bool__content Bool)))))
+(declare-datatypes () ((real__ref (mk_real__ref (real__content Real)))))
+(declare-datatypes ()
+((us_private__ref (mk___private__ref (us_private__content us_private)))))
+(define-fun int__ref___projection ((a int__ref)) Int (int__content a))
+
+(define-fun bool__ref___projection ((a bool__ref)) Bool (bool__content a))
+
+(define-fun real__ref___projection ((a real__ref)) Real (real__content a))
+
+(define-fun us_private__ref___projection ((a us_private__ref)) us_private
+  (us_private__content a))
+
+(declare-fun us_compatible_tags (Int Int) Bool)
+
+;; __compatible_tags_refl
+  (assert (forall ((tag Int)) (us_compatible_tags tag tag)))
+
+(define-fun to_int1 ((b Bool)) Int (ite (= b true) 1 0))
+
+(define-fun of_int ((i Int)) Bool (ite (= i 0) false true))
+
+(define-fun in_range ((x Int)) Bool (or (= x 0) (= x 1)))
+
+(declare-fun attr__ATTRIBUTE_IMAGE (Bool) us_image)
+
+(declare-fun attr__ATTRIBUTE_VALUE__pre_check (us_image) Bool)
+
+(declare-fun attr__ATTRIBUTE_VALUE (us_image) Bool)
+
+(declare-fun power (Real Int) Real)
+
+;; Power_0
+  (assert (forall ((x Real)) (= (power x 0) 1.0)))
+
+;; Power_s
+  (assert
+  (forall ((x Real) (n Int))
+  (=> (<= 0 n) (= (power x (+ n 1)) (* x (power x n))))))
+
+;; Power_s_alt
+  (assert
+  (forall ((x Real) (n Int))
+  (=> (< 0 n) (= (power x n) (* x (power x (- n 1)))))))
+
+;; Power_1
+  (assert (forall ((x Real)) (= (power x 1) x)))
+
+;; Power_sum
+  (assert
+  (forall ((x Real) (n Int) (m Int))
+  (=> (<= 0 n)
+  (=> (<= 0 m) (= (power x (+ n m)) (* (power x n) (power x m)))))))
+
+;; Power_mult
+  (assert
+  (forall ((x Real) (n Int) (m Int))
+  (=> (<= 0 n) (=> (<= 0 m) (= (power x (* n m)) (power (power x n) m))))))
+
+;; Power_mult2
+  (assert
+  (forall ((x Real) (y Real) (n Int))
+  (=> (<= 0 n) (= (power (* x y) n) (* (power x n) (power y n))))))
+
+;; Pow_ge_one
+  (assert
+  (forall ((x Real) (n Int))
+  (=> (and (<= 0 n) (<= 1.0 x)) (<= 1.0 (power x n)))))
+
+(declare-datatypes ()
+((mode (NearestTiesToEven) (ToZero) (Up) (Down) (NearestTiesToAway))))
+(declare-sort single 0)
+
+(declare-fun round (mode Real) Real)
+
+(declare-fun value (single) Real)
+
+(declare-fun exact (single) Real)
+
+(declare-fun model (single) Real)
+
+(define-fun round_error ((x single)) Real (ite (>= (- (value x) (exact x)) 0.0) (-
+  (value x) (exact x)) (- (- (value x) (exact x)))))
+
+(define-fun total_error ((x single)) Real (ite (>= (- (value x) (model x)) 0.0) (-
+  (value x) (model x)) (- (- (value x) (model x)))))
+
+(define-fun no_overflow ((m mode)
+  (x Real)) Bool (<= (ite (>= (round m x) 0.0) (round m x) (- (round m x))) 340282346638528859811704183484516925440.0))
+
+;; Bounded_real_no_overflow
+  (assert
+  (forall ((m mode) (x Real))
+  (=> (<= (ite (>= x 0.0) x (- x)) 340282346638528859811704183484516925440.0)
+  (no_overflow m x))))
+
+;; Round_monotonic
+  (assert
+  (forall ((m mode) (x Real) (y Real))
+  (=> (<= x y) (<= (round m x) (round m y)))))
+
+;; Round_idempotent
+  (assert
+  (forall ((m1 mode) (m2 mode) (x Real))
+  (= (round m1 (round m2 x)) (round m2 x))))
+
+;; Round_value
+  (assert (forall ((m mode) (x single)) (= (round m (value x)) (value x))))
+
+;; Bounded_value
+  (assert
+  (forall ((x single))
+  (<= (ite (>= (value x) 0.0) (value x) (- (value x))) 340282346638528859811704183484516925440.0)))
+
+;; Exact_rounding_for_integers
+  (assert
+  (forall ((m mode) (i Int))
+  (=> (and (<= (- 16777216) i) (<= i 16777216))
+  (= (round m (to_real i)) (to_real i)))))
+
+;; Round_down_le
+  (assert (forall ((x Real)) (<= (round Down x) x)))
+
+;; Round_up_ge
+  (assert (forall ((x Real)) (<= x (round Up x))))
+
+;; Round_down_neg
+  (assert (forall ((x Real)) (= (round Down (- x)) (- (round Up x)))))
+
+;; Round_up_neg
+  (assert (forall ((x Real)) (= (round Up (- x)) (- (round Down x)))))
+
+(declare-fun round_logic (mode Real) single)
+
+;; Round_logic_def
+  (assert
+  (forall ((m mode) (x Real))
+  (=> (no_overflow m x) (= (value (round_logic m x)) (round m x)))))
+
+(define-fun of_real_post ((m mode) (x Real)
+  (res single)) Bool (and (= (value res) (round m x))
+                     (and (= (exact res) x) (= (model res) x))))
+
+(define-fun add_post ((m mode) (x single) (y single)
+  (res single)) Bool (and (= (value res) (round m (+ (value x) (value y))))
+                     (and (= (exact res) (+ (exact x) (exact y)))
+                     (= (model res) (+ (model x) (model y))))))
+
+(define-fun sub_post ((m mode) (x single) (y single)
+  (res single)) Bool (and (= (value res) (round m (- (value x) (value y))))
+                     (and (= (exact res) (- (exact x) (exact y)))
+                     (= (model res) (- (model x) (model y))))))
+
+(define-fun mul_post ((m mode) (x single) (y single)
+  (res single)) Bool (and (= (value res) (round m (* (value x) (value y))))
+                     (and (= (exact res) (* (exact x) (exact y)))
+                     (= (model res) (* (model x) (model y))))))
+
+(define-fun div_post ((m mode) (x single) (y single)
+  (res single)) Bool (and (= (value res) (round m (/ (value x) (value y))))
+                     (and (= (exact res) (/ (exact x) (exact y)))
+                     (= (model res) (/ (model x) (model y))))))
+
+(define-fun neg_post ((x single)
+  (res single)) Bool (and (= (value res) (- (value x)))
+                     (and (= (exact res) (- (exact x)))
+                     (= (model res) (- (model x))))))
+
+(define-fun lt ((x single) (y single)) Bool (< (value x) (value y)))
+
+(define-fun gt ((x single) (y single)) Bool (< (value y) (value x)))
+
+(declare-sort double 0)
+
+(declare-fun round1 (mode Real) Real)
+
+(declare-fun value1 (double) Real)
+
+(declare-fun exact1 (double) Real)
+
+(declare-fun model1 (double) Real)
+
+(define-fun round_error1 ((x double)) Real (ite (>= (- (value1 x) (exact1 x)) 0.0) (-
+  (value1 x) (exact1 x)) (- (- (value1 x) (exact1 x)))))
+
+(define-fun total_error1 ((x double)) Real (ite (>= (- (value1 x) (model1 x)) 0.0) (-
+  (value1 x) (model1 x)) (- (- (value1 x) (model1 x)))))
+
+(define-fun no_overflow1 ((m mode)
+  (x Real)) Bool (<= (ite (>= (round1 m x) 0.0) (round1 m x) (- (round1 m x))) 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0))
+
+;; Bounded_real_no_overflow
+  (assert
+  (forall ((m mode) (x Real))
+  (=>
+  (<= (ite (>= x 0.0) x (- x)) 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0)
+  (no_overflow1 m x))))
+
+;; Round_monotonic
+  (assert
+  (forall ((m mode) (x Real) (y Real))
+  (=> (<= x y) (<= (round1 m x) (round1 m y)))))
+
+;; Round_idempotent
+  (assert
+  (forall ((m1 mode) (m2 mode) (x Real))
+  (= (round1 m1 (round1 m2 x)) (round1 m2 x))))
+
+;; Round_value
+  (assert
+  (forall ((m mode) (x double)) (= (round1 m (value1 x)) (value1 x))))
+
+;; Bounded_value
+  (assert
+  (forall ((x double))
+  (<= (ite (>= (value1 x) 0.0) (value1 x) (- (value1 x))) 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0)))
+
+;; Exact_rounding_for_integers
+  (assert
+  (forall ((m mode) (i Int))
+  (=> (and (<= (- 9007199254740992) i) (<= i 9007199254740992))
+  (= (round1 m (to_real i)) (to_real i)))))
+
+;; Round_down_le
+  (assert (forall ((x Real)) (<= (round1 Down x) x)))
+
+;; Round_up_ge
+  (assert (forall ((x Real)) (<= x (round1 Up x))))
+
+;; Round_down_neg
+  (assert (forall ((x Real)) (= (round1 Down (- x)) (- (round1 Up x)))))
+
+;; Round_up_neg
+  (assert (forall ((x Real)) (= (round1 Up (- x)) (- (round1 Down x)))))
+
+(declare-fun round_logic1 (mode Real) double)
+
+;; Round_logic_def
+  (assert
+  (forall ((m mode) (x Real))
+  (=> (no_overflow1 m x) (= (value1 (round_logic1 m x)) (round1 m x)))))
+
+(define-fun of_real_post1 ((m mode) (x Real)
+  (res double)) Bool (and (= (value1 res) (round1 m x))
+                     (and (= (exact1 res) x) (= (model1 res) x))))
+
+(define-fun add_post1 ((m mode) (x double) (y double)
+  (res double)) Bool (and
+                     (= (value1 res) (round1 m (+ (value1 x) (value1 y))))
+                     (and (= (exact1 res) (+ (exact1 x) (exact1 y)))
+                     (= (model1 res) (+ (model1 x) (model1 y))))))
+
+(define-fun sub_post1 ((m mode) (x double) (y double)
+  (res double)) Bool (and
+                     (= (value1 res) (round1 m (- (value1 x) (value1 y))))
+                     (and (= (exact1 res) (- (exact1 x) (exact1 y)))
+                     (= (model1 res) (- (model1 x) (model1 y))))))
+
+(define-fun mul_post1 ((m mode) (x double) (y double)
+  (res double)) Bool (and
+                     (= (value1 res) (round1 m (* (value1 x) (value1 y))))
+                     (and (= (exact1 res) (* (exact1 x) (exact1 y)))
+                     (= (model1 res) (* (model1 x) (model1 y))))))
+
+(define-fun div_post1 ((m mode) (x double) (y double)
+  (res double)) Bool (and
+                     (= (value1 res) (round1 m (/ (value1 x) (value1 y))))
+                     (and (= (exact1 res) (/ (exact1 x) (exact1 y)))
+                     (= (model1 res) (/ (model1 x) (model1 y))))))
+
+(define-fun neg_post1 ((x double)
+  (res double)) Bool (and (= (value1 res) (- (value1 x)))
+                     (and (= (exact1 res) (- (exact1 x)))
+                     (= (model1 res) (- (model1 x))))))
+
+(define-fun lt1 ((x double) (y double)) Bool (< (value1 x) (value1 y)))
+
+(define-fun gt1 ((x double) (y double)) Bool (< (value1 y) (value1 x)))
+
+;; round_single_bound
+  (assert
+  (forall ((x Real))
+  (! (and
+     (<= (- (- x (* (/ 1.0 16777216.0) (ite (>= x 0.0) x (- x)))) (/ 1.0 1427247692705959881058285969449495136382746624.0))
+     (round NearestTiesToEven x))
+     (<= (round NearestTiesToEven x) (+ (+ x (* (/ 1.0 16777216.0) (ite (>= x 0.0) x (- x)))) (/ 1.0 1427247692705959881058285969449495136382746624.0)))) :pattern (
+  (round NearestTiesToEven x)) )))
+
+;; round_double_bound
+  (assert
+  (forall ((x Real))
+  (! (and
+     (<= (- (- x (* (/ 1.0 9007199254740992.0) (ite (>= x 0.0) x (- x)))) (/ 1.0 404804506614621236704990693437834614099113299528284236713802716054860679135990693783920767402874248990374155728633623822779617474771586953734026799881477019843034848553132722728933815484186432682479535356945490137124014966849385397236206711298319112681620113024717539104666829230461005064372655017292012526615415482186989568.0))
+     (round1 NearestTiesToEven x))
+     (<= (round1 NearestTiesToEven x) (+ (+ x (* (/ 1.0 9007199254740992.0) (ite (>= x 0.0) x (- x)))) (/ 1.0 404804506614621236704990693437834614099113299528284236713802716054860679135990693783920767402874248990374155728633623822779617474771586953734026799881477019843034848553132722728933815484186432682479535356945490137124014966849385397236206711298319112681620113024717539104666829230461005064372655017292012526615415482186989568.0)))) :pattern (
+  (round1 NearestTiesToEven x)) )))
+
+;; round_double_single
+  (assert
+  (forall ((x Real))
+  (! (= (round1 NearestTiesToEven (round NearestTiesToEven x)) (round
+                                                               NearestTiesToEven
+                                                               x)) :pattern (
+  (round NearestTiesToEven x)) )))
+
+(declare-fun round2 (Real) Int)
+
+;; Round_down
+  (assert
+  (forall ((x Real))
+  (=> (< (- x (to_real (to_int x))) (/ 5.0 10.0)) (= (round2 x) (to_int x)))))
+
+;; Round_up
+  (assert
+  (forall ((x Real))
+  (=> (< (- (to_real (- 1 (to_int (- 1.0 x)))) x) (/ 5.0 10.0))
+  (= (round2 x) (- 1 (to_int (- 1.0 x)))))))
+
+;; Round_neg_tie
+  (assert
+  (forall ((x Real))
+  (=> (and (= (- x (to_real (to_int x))) (/ 5.0 10.0)) (< x 0.0))
+  (= (round2 x) (to_int x)))))
+
+;; Round_pos_tie
+  (assert
+  (forall ((x Real))
+  (=>
+  (and (= (- (to_real (- 1 (to_int (- 1.0 x)))) x) (/ 5.0 10.0)) (< 0.0 x))
+  (= (round2 x) (- 1 (to_int (- 1.0 x)))))))
+
+;; Round_int
+  (assert
+  (forall ((i Int))
+  (! (= (round2 (to_real i)) i) :pattern ((round2 (to_real i))) )))
+
+;; Round_near_int
+  (assert
+  (forall ((i Int))
+  (forall ((x Real))
+  (=> (and (< (- (/ 5.0 10.0)) x) (< x (/ 5.0 10.0)))
+  (= (round2 (+ (to_real i) x)) i)))))
+
+;; Round_monotonic
+  (assert
+  (forall ((x Real) (y Real)) (=> (<= x y) (<= (round2 x) (round2 y)))))
+
+;; Round_monotonic_int1
+  (assert
+  (forall ((x Real) (i Int)) (=> (<= x (to_real i)) (<= (round2 x) i))))
+
+;; Round_monotonic_int2
+  (assert
+  (forall ((x Real) (i Int)) (=> (<= (to_real i) x) (<= i (round2 x)))))
+
+;; Round_bound
+  (assert
+  (forall ((x Real))
+  (and (<= (- x (/ 5.0 10.0)) (to_real (round2 x)))
+  (<= (to_real (round2 x)) (+ x (/ 5.0 10.0))))))
+
+(declare-fun remainder (Real Real) Real)
+
+(declare-sort float 0)
+
+(define-fun in_range1 ((x Real)) Bool (and
+                                      (<= (- 340282346638528859811704183484516925440.0) x)
+                                      (<= x 340282346638528859811704183484516925440.0)))
+
+(declare-fun to_real1 (float) Real)
+
+(declare-fun of_real (Real) float)
+
+(declare-fun user_eq (float float) Bool)
+
+(declare-fun next_representable (Real) Real)
+
+(declare-fun prev_representable (Real) Real)
+
+;; next_representable_def
+  (assert
+  (forall ((x Real))
+  (! (< x (next_representable x)) :pattern ((next_representable x)) )))
+
+;; prev_representable_def
+  (assert
+  (forall ((x Real))
+  (! (< (prev_representable x) x) :pattern ((prev_representable x)) )))
+
+(declare-fun attr__ATTRIBUTE_IMAGE1 (Real) us_image)
+
+(declare-fun attr__ATTRIBUTE_VALUE__pre_check1 (us_image) Bool)
+
+(declare-fun attr__ATTRIBUTE_VALUE1 (us_image) Real)
+
+(declare-fun dummy () float)
+
+;; inversion_axiom
+  (assert
+  (forall ((x float))
+  (! (= (of_real (to_real1 x)) x) :pattern ((to_real1 x)) )))
+
+;; representable_first
+  (assert
+  (= (round NearestTiesToEven (- 340282346638528859811704183484516925440.0)) (- 340282346638528859811704183484516925440.0)))
+
+;; representable_last
+  (assert
+  (= (round NearestTiesToEven 340282346638528859811704183484516925440.0) 340282346638528859811704183484516925440.0))
+
+;; range_axiom
+  (assert (forall ((x float)) (in_range1 (to_real1 x))))
+
+(declare-datatypes () ((float__ref (mk_float__ref (float__content float)))))
+(define-fun float__ref___projection ((a float__ref)) float (float__content a))
+
+(declare-sort weapon_kind 0)
+
+(define-fun in_range2 ((x Int)) Bool (and (<= 0 x) (<= x 2)))
+
+(define-fun bool_eq ((x Int) (y Int)) Bool (ite (= x y) true false))
+
+(declare-fun attr__ATTRIBUTE_IMAGE2 (Int) us_image)
+
+(declare-fun attr__ATTRIBUTE_VALUE__pre_check2 (us_image) Bool)
+
+(declare-fun attr__ATTRIBUTE_VALUE2 (us_image) Int)
+
+(declare-fun to_rep (weapon_kind) Int)
+
+(declare-fun of_rep (Int) weapon_kind)
+
+(declare-fun user_eq1 (weapon_kind weapon_kind) Bool)
+
+(declare-fun dummy1 () weapon_kind)
+
+;; inversion_axiom
+  (assert
+  (forall ((x weapon_kind))
+  (! (= (of_rep (to_rep x)) x) :pattern ((to_rep x)) )))
+
+;; range_axiom
+  (assert
+  (forall ((x weapon_kind)) (! (in_range2
+  (to_rep x)) :pattern ((to_rep x)) )))
+
+;; coerce_axiom
+  (assert
+  (forall ((x Int))
+  (! (=> (in_range2 x) (= (to_rep (of_rep x)) x)) :pattern ((to_rep
+                                                            (of_rep x))) )))
+
+(declare-datatypes ()
+((weapon_kind__ref (mk_weapon_kind__ref (weapon_kind__content weapon_kind)))))
+(define-fun weapon_kind__ref___projection ((a weapon_kind__ref)) weapon_kind
+  (weapon_kind__content a))
+
+(declare-fun dps (Int) float)
+
+(declare-fun damage (Int) Int)
+
+(declare-fun bullet (Int) Int)
+
+(declare-fun cooldown (Int) Int)
+
+;; dps__post_axiom
+  (assert true)
+
+;; dps__def_axiom
+  (assert
+  (forall ((self Int))
+  (! (=> (in_range2 self)
+     (= (to_real1 (dps self)) (round NearestTiesToEven
+                              (/ (round NearestTiesToEven
+                                 (to_real (damage (bullet self)))) (round
+                                                                   NearestTiesToEven
+                                                                   (to_real
+                                                                   (cooldown
+                                                                   self))))))) :pattern (
+  (dps self)) )))
+
+(declare-sort integer 0)
+
+(define-fun in_range3 ((x Int)) Bool (and (<= (- 2147483648) x)
+                                     (<= x 2147483647)))
+
+(define-fun bool_eq1 ((x Int) (y Int)) Bool (ite (= x y) true false))
+
+(declare-fun attr__ATTRIBUTE_IMAGE3 (Int) us_image)
+
+(declare-fun attr__ATTRIBUTE_VALUE__pre_check3 (us_image) Bool)
+
+(declare-fun attr__ATTRIBUTE_VALUE3 (us_image) Int)
+
+(declare-fun to_rep1 (integer) Int)
+
+(declare-fun of_rep1 (Int) integer)
+
+(declare-fun user_eq2 (integer integer) Bool)
+
+(declare-fun dummy2 () integer)
+
+;; inversion_axiom
+  (assert
+  (forall ((x integer))
+  (! (= (of_rep1 (to_rep1 x)) x) :pattern ((to_rep1 x)) )))
+
+;; range_axiom
+  (assert
+  (forall ((x integer)) (! (in_range3 (to_rep1 x)) :pattern ((to_rep1 x)) )))
+
+;; coerce_axiom
+  (assert
+  (forall ((x Int))
+  (! (=> (in_range3 x) (= (to_rep1 (of_rep1 x)) x)) :pattern ((to_rep1
+                                                              (of_rep1 x))) )))
+
+(declare-datatypes ()
+((integer__ref (mk_integer__ref (integer__content integer)))))
+(define-fun integer__ref___projection ((a integer__ref)) integer (integer__content
+                                                                 a))
+
+(define-fun dynamic_invariant ((temp___expr_15 Int) (temp___is_init_12 Bool)
+  (temp___do_constant_13 Bool)
+  (temp___do_toplevel_14 Bool)) Bool (=>
+                                     (or (= temp___is_init_12 true)
+                                     (<= (- 2147483648) 2147483647))
+                                     (in_range3 temp___expr_15)))
+
+(declare-sort bullet_kind 0)
+
+(define-fun in_range4 ((x Int)) Bool (and (<= 0 x) (<= x 4)))
+
+(define-fun bool_eq2 ((x Int) (y Int)) Bool (ite (= x y) true false))
+
+(declare-fun attr__ATTRIBUTE_IMAGE4 (Int) us_image)
+
+(declare-fun attr__ATTRIBUTE_VALUE__pre_check4 (us_image) Bool)
+
+(declare-fun attr__ATTRIBUTE_VALUE4 (us_image) Int)
+
+(declare-fun to_rep2 (bullet_kind) Int)
+
+(declare-fun of_rep2 (Int) bullet_kind)
+
+(declare-fun user_eq3 (bullet_kind bullet_kind) Bool)
+
+(declare-fun dummy3 () bullet_kind)
+
+;; inversion_axiom
+  (assert
+  (forall ((x bullet_kind))
+  (! (= (of_rep2 (to_rep2 x)) x) :pattern ((to_rep2 x)) )))
+
+;; range_axiom
+  (assert
+  (forall ((x bullet_kind)) (! (in_range4
+  (to_rep2 x)) :pattern ((to_rep2 x)) )))
+
+;; coerce_axiom
+  (assert
+  (forall ((x Int))
+  (! (=> (in_range4 x) (= (to_rep2 (of_rep2 x)) x)) :pattern ((to_rep2
+                                                              (of_rep2 x))) )))
+
+(declare-datatypes ()
+((bullet_kind__ref (mk_bullet_kind__ref (bullet_kind__content bullet_kind)))))
+(define-fun bullet_kind__ref___projection ((a bullet_kind__ref)) bullet_kind
+  (bullet_kind__content a))
+
+(define-fun dynamic_invariant1 ((temp___expr_180 Int)
+  (temp___is_init_177 Bool) (temp___do_constant_178 Bool)
+  (temp___do_toplevel_179 Bool)) Bool (=>
+                                      (or (= temp___is_init_177 true)
+                                      (<= 0 4)) (in_range4 temp___expr_180)))
+
+;; damage__post_axiom
+  (assert
+  (forall ((self Int))
+  (! (=> (in_range4 self) (dynamic_invariant (damage self) true false true)) :pattern (
+  (damage self)) )))
+
+;; damage__def_axiom
+  (assert
+  (forall ((self Int))
+  (! (=> (in_range4 self)
+     (= (damage self) (ite (= self 0) 0
+                      (ite (= self 1) 1
+                      (ite (= self 2) 8 (ite (= self 3) 10 1)))))) :pattern (
+  (damage self)) )))
+
+(define-fun dynamic_invariant2 ((temp___expr_186 Int)
+  (temp___is_init_183 Bool) (temp___do_constant_184 Bool)
+  (temp___do_toplevel_185 Bool)) Bool (=>
+                                      (or (= temp___is_init_183 true)
+                                      (<= 0 2)) (in_range2 temp___expr_186)))
+
+;; bullet__post_axiom
+  (assert
+  (forall ((self Int))
+  (! (=> (in_range2 self) (dynamic_invariant1 (bullet self) true false true)) :pattern (
+  (bullet self)) )))
+
+;; bullet__def_axiom
+  (assert
+  (forall ((self Int))
+  (! (=> (in_range2 self)
+     (= (bullet self) (ite (= self 0) 1 (ite (= self 1) 1 2)))) :pattern (
+  (bullet self)) )))
+
+;; cooldown__post_axiom
+  (assert
+  (forall ((self Int))
+  (! (=> (in_range2 self) (dynamic_invariant (cooldown self) true false
+     true)) :pattern ((cooldown self)) )))
+
+;; cooldown__def_axiom
+  (assert
+  (forall ((self Int))
+  (! (=> (in_range2 self)
+     (= (cooldown self) (ite (= self 0) 4 (ite (= self 1) 1 8)))) :pattern (
+  (cooldown self)) )))
+
+(assert
+;; WP_parameter_def
+ ;; File "weapons.ads", line 34, characters 0-0
+  (not
+  (forall ((w Int))
+  (=> (and (<= 0 w) (<= w 2))
+  (or (= w 2) (<= (to_real1 (dps w)) (to_real1 (dps (+ w 1)))))))))
+(check-sat)
+(get-info :reason-unknown)
diff --git a/test/regress/regress0/arith/bug716.1.cvc b/test/regress/regress0/arith/bug716.1.cvc
new file mode 100644
index 0000000..3c0e987
--- /dev/null
+++ b/test/regress/regress0/arith/bug716.1.cvc
@@ -0,0 +1,6 @@
+% EXPECT: The POW(^) operator can only be used with a natural number in the exponent.  Exception occured in:
+% EXPECT:   2 ^ x
+% EXIT: 1
+x: INT;
+ASSERT 2^x = 8;
+QUERY x=3;
diff --git a/test/regress/regress0/arith/delta-minimized-row-vector-bug.smt b/test/regress/regress0/arith/delta-minimized-row-vector-bug.smt
new file mode 100644
index 0000000..5cf44c9
--- /dev/null
+++ b/test/regress/regress0/arith/delta-minimized-row-vector-bug.smt
@@ -0,0 +1,12 @@
+(benchmark delta_minimized_row_vector_bug.smt
+:logic QF_LRA
+:extrafuns ((x_120 Real))
+:extrafuns ((x_11 Real))
+:extrafuns ((x_102 Real))
+:status sat
+:formula
+  (and (>= x_11 0)
+    (or (= x_120 x_102) (<= x_102 (~ x_11)) (= x_120 (+ x_102 x_11) ))
+  )
+
+)
diff --git a/test/regress/regress0/arith/div.01.smt2 b/test/regress/regress0/arith/div.01.smt2
new file mode 100644
index 0000000..d7d5870
--- /dev/null
+++ b/test/regress/regress0/arith/div.01.smt2
@@ -0,0 +1,12 @@
+(set-logic QF_NIA)
+(set-info :smt-lib-version 2.0)
+(set-info :status unsat)
+(declare-fun n () Int)
+
+(assert (= n 0))
+(assert (= (div (div n n) n)
+           (div (div (div n n) n) n)))
+(assert (distinct (div (div n n) n)
+                  (div (div (div (div (div n n) n) n) n) n)))
+
+(check-sat)
diff --git a/test/regress/regress0/arith/div.02.smt2 b/test/regress/regress0/arith/div.02.smt2
new file mode 100644
index 0000000..4ed27f8
--- /dev/null
+++ b/test/regress/regress0/arith/div.02.smt2
@@ -0,0 +1,9 @@
+; EXPECT: unknown
+(set-logic QF_NIA)
+(set-info :smt-lib-version 2.0)
+(set-info :status unknown)
+(declare-fun n () Int)
+
+(assert (distinct (div n n) 1))
+
+(check-sat)
diff --git a/test/regress/regress0/arith/div.03.smt2 b/test/regress/regress0/arith/div.03.smt2
new file mode 100644
index 0000000..0f67a3d
--- /dev/null
+++ b/test/regress/regress0/arith/div.03.smt2
@@ -0,0 +1,12 @@
+; EXPECT: unknown
+(set-logic QF_NIA)
+(set-info :smt-lib-version 2.0)
+(set-info :status unknown)
+(declare-fun x () Int)
+(declare-fun n () Int)
+
+(assert (> n 0))
+(assert (>= x n))
+(assert (< (div x n) 1))
+
+(check-sat)
diff --git a/test/regress/regress0/arith/div.04.smt2 b/test/regress/regress0/arith/div.04.smt2
new file mode 100644
index 0000000..c30b1cd
--- /dev/null
+++ b/test/regress/regress0/arith/div.04.smt2
@@ -0,0 +1,12 @@
+(set-logic QF_NRA)
+(set-info :smt-lib-version 2.0)
+(set-info :status unsat)
+(declare-fun x () Real)
+(declare-fun y () Real)
+(declare-fun n () Real)
+
+(assert (not (=> (= x y) (= (/ x n) (/ y n)))))
+(assert (<= n 0))
+(assert (>= n 0))
+
+(check-sat)
diff --git a/test/regress/regress0/arith/div.05.smt2 b/test/regress/regress0/arith/div.05.smt2
new file mode 100644
index 0000000..9e4972e
--- /dev/null
+++ b/test/regress/regress0/arith/div.05.smt2
@@ -0,0 +1,12 @@
+; EXPECT: unknown
+(set-logic QF_NRA)
+(set-info :smt-lib-version 2.0)
+(set-info :status unknown)
+(declare-fun x () Real)
+(declare-fun y () Real)
+(declare-fun n () Real)
+
+(assert (= (/ x n) 0))
+(assert (= (/ y n) 1))
+
+(check-sat)
diff --git a/test/regress/regress0/arith/div.06.smt2 b/test/regress/regress0/arith/div.06.smt2
new file mode 100644
index 0000000..3fb4b12
--- /dev/null
+++ b/test/regress/regress0/arith/div.06.smt2
@@ -0,0 +1,14 @@
+; EXPECT: unknown
+(set-logic QF_NRA)
+(set-info :smt-lib-version 2.0)
+(set-info :status unknown)
+(declare-fun x () Real)
+(declare-fun y () Real)
+(declare-fun n () Real)
+
+(assert (= (/ x n) 0))
+(assert (= (/ y n) 1))
+(assert (<= n 0))
+(assert (>= n 0))
+
+(check-sat)
diff --git a/test/regress/regress0/arith/div.07.smt2 b/test/regress/regress0/arith/div.07.smt2
new file mode 100644
index 0000000..4c45b32
--- /dev/null
+++ b/test/regress/regress0/arith/div.07.smt2
@@ -0,0 +1,14 @@
+(set-logic QF_NRA)
+(set-info :smt-lib-version 2.0)
+(set-info :status unsat)
+(declare-fun x () Real)
+(declare-fun y () Real)
+(declare-fun n () Real)
+
+(assert (= (/ x n) 0))
+(assert (= (/ y (/ x n)) 1))
+(assert (<= n 0))
+(assert (>= n 0))
+(assert (= x y))
+
+(check-sat)
diff --git a/test/regress/regress0/arith/div.08.smt2 b/test/regress/regress0/arith/div.08.smt2
new file mode 100644
index 0000000..0b0d73a
--- /dev/null
+++ b/test/regress/regress0/arith/div.08.smt2
@@ -0,0 +1,11 @@
+(set-logic QF_NIA)
+(set-info :smt-lib-version 2.0)
+(set-info :status unsat)
+(declare-fun n () Int)
+
+
+(assert (= (div n n) (div (div n n) n)))
+(assert (distinct (div (div n n) n) (div (div (div n n) n) n)))
+(assert (<= n 0))
+(assert (>= n 0))
+(check-sat)
diff --git a/test/regress/regress0/arith/div.09.smt2 b/test/regress/regress0/arith/div.09.smt2
new file mode 100644
index 0000000..e457734
--- /dev/null
+++ b/test/regress/regress0/arith/div.09.smt2
@@ -0,0 +1,15 @@
+; SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/'
+; EXPECT: (error "A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: (/ n n)
+; EXPECT: if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.
+; EXPECT: The fact in question: TERM
+; EXPECT: ")
+; EXIT: 1
+(set-logic QF_LRA)
+(set-info :status unknown)
+(declare-fun n () Real)
+
+; This example is test that LRA rejects multiplication terms
+
+(assert (= (/ n n) 1))
+
+(check-sat)
diff --git a/test/regress/regress0/arith/fuzz_3-eq.smt b/test/regress/regress0/arith/fuzz_3-eq.smt
new file mode 100644
index 0000000..ef44444
--- /dev/null
+++ b/test/regress/regress0/arith/fuzz_3-eq.smt
@@ -0,0 +1,46 @@
+(benchmark fuzzsmt
+:logic QF_LRA
+:extrafuns ((v0 Real))
+:extrafuns ((v2 Real))
+:extrafuns ((v1 Real))
+:status sat
+:formula
+(let (?n1 2)
+(let (?n2 (* ?n1 ?n1))
+(let (?n3 (~ v0))
+(let (?n4 (* ?n1 ?n3))
+(let (?n5 (- ?n1 ?n1))
+(let (?n6 (- ?n5 v0))
+(let (?n7 (- ?n4 ?n6))
+(flet ($n8 (= ?n2 ?n7))
+(flet ($n9 false)
+(let (?n10 (ite $n9 ?n1 v1))
+(let (?n11 (+ ?n1 v2))
+(flet ($n12 (= ?n10 ?n11))
+(let (?n13 (ite $n9 v0 ?n2))
+(let (?n14 (~ ?n1))
+(let (?n15 (ite $n9 ?n14 ?n1))
+(flet ($n16 (= ?n13 ?n15))
+(flet ($n17 (= ?n1 ?n7))
+(let (?n18 (+ ?n1 ?n1))
+(flet ($n19 (= v2 ?n18))
+(let (?n20 (ite $n19 v2 ?n1))
+(let (?n21 (ite $n17 ?n18 ?n20))
+(flet ($n22 (= ?n21 ?n2))
+(let (?n23 (ite $n9 ?n21 ?n2))
+(flet ($n24 (= ?n23 ?n1))
+(flet ($n25 (= ?n7 ?n2))
+(flet ($n26 (iff $n24 $n25))
+(let (?n27 (~ ?n7))
+(flet ($n28 (= ?n27 ?n1))
+(let (?n29 (ite $n28 ?n1 ?n1))
+(flet ($n30 (= ?n1 ?n29))
+(flet ($n31 (implies $n26 $n30))
+(flet ($n32 (implies $n9 $n9))
+(flet ($n33 (if_then_else $n22 $n31 $n32))
+(flet ($n34 (and $n9 $n33))
+(flet ($n35 (if_then_else $n16 $n34 $n9))
+(flet ($n36 (iff $n12 $n35))
+(flet ($n37 (and $n8 $n36))
+$n37
+))))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/arith/integers/Makefile.am b/test/regress/regress0/arith/integers/Makefile.am
new file mode 100644
index 0000000..aa24e9c
--- /dev/null
+++ b/test/regress/regress0/arith/integers/Makefile.am
@@ -0,0 +1,149 @@
+SUBDIRS = .
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+
+
+TESTS =	\
+	arith-int-004.cvc \
+	arith-int-011.cvc \
+	arith-int-012.cvc \
+	arith-int-013.cvc \
+	arith-int-022.cvc \
+	arith-int-024.cvc \
+	arith-int-042.cvc \
+	arith-int-042.min.cvc \
+	arith-int-047.cvc \
+	arith-int-048.cvc \
+	arith-int-050.cvc \
+	arith-int-084.cvc \
+	arith-int-085.cvc \
+	arith-int-097.cvc
+
+EXTRA_DIST = $(TESTS) \
+	arith-int-001.cvc \
+	arith-int-002.cvc \
+	arith-int-003.cvc \
+	arith-int-005.cvc \
+	arith-int-006.cvc \
+	arith-int-008.cvc \
+	arith-int-009.cvc \
+	arith-int-010.cvc \
+	arith-int-014.cvc \
+	arith-int-015.cvc \
+	arith-int-016.cvc \
+	arith-int-017.cvc \
+	arith-int-018.cvc \
+	arith-int-019.cvc \
+	arith-int-020.cvc \
+	arith-int-021.cvc \
+	arith-int-023.cvc \
+	arith-int-025.cvc \
+	arith-int-026.cvc \
+	arith-int-027.cvc \
+	arith-int-028.cvc \
+	arith-int-029.cvc \
+	arith-int-030.cvc \
+	arith-int-031.cvc \
+	arith-int-032.cvc \
+	arith-int-033.cvc \
+	arith-int-034.cvc \
+	arith-int-035.cvc \
+	arith-int-036.cvc \
+	arith-int-037.cvc \
+	arith-int-038.cvc \
+	arith-int-039.cvc \
+	arith-int-040.cvc \
+	arith-int-041.cvc \
+	arith-int-043.cvc \
+	arith-int-044.cvc \
+	arith-int-045.cvc \
+	arith-int-046.cvc \
+	arith-int-049.cvc \
+	arith-int-051.cvc \
+	arith-int-052.cvc \
+	arith-int-053.cvc \
+	arith-int-054.cvc \
+	arith-int-055.cvc \
+	arith-int-056.cvc \
+	arith-int-057.cvc \
+	arith-int-058.cvc \
+	arith-int-059.cvc \
+	arith-int-060.cvc \
+	arith-int-061.cvc \
+	arith-int-062.cvc \
+	arith-int-063.cvc \
+	arith-int-064.cvc \
+	arith-int-065.cvc \
+	arith-int-066.cvc \
+	arith-int-067.cvc \
+	arith-int-068.cvc \
+	arith-int-069.cvc \
+	arith-int-070.cvc \
+	arith-int-071.cvc \
+	arith-int-072.cvc \
+	arith-int-073.cvc \
+	arith-int-074.cvc \
+	arith-int-075.cvc \
+	arith-int-076.cvc \
+	arith-int-077.cvc \
+	arith-int-078.cvc \
+	arith-int-079.cvc \
+	arith-int-080.cvc \
+	arith-int-081.cvc \
+	arith-int-083.cvc \
+	arith-int-086.cvc \
+	arith-int-087.cvc \
+	arith-int-088.cvc \
+	arith-int-089.cvc \
+	arith-int-090.cvc \
+	arith-int-091.cvc \
+	arith-int-092.cvc \
+	arith-int-093.cvc \
+	arith-int-094.cvc \
+	arith-int-095.cvc \
+	arith-int-096.cvc \
+	arith-int-098.cvc \
+	arith-int-099.cvc \
+	arith-int-100.cvc
+
+FAILING_TESTS = \
+	arith-int-007.cvc \
+	arith-int-082.cvc \
+	arith-int-098.cvc
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/arith/integers/Makefile.in b/test/regress/regress0/arith/integers/Makefile.in
new file mode 100644
index 0000000..a31674e
--- /dev/null
+++ b/test/regress/regress0/arith/integers/Makefile.in
@@ -0,0 +1,1372 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/arith/integers
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+SUBDIRS = .
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	arith-int-004.cvc \
+	arith-int-011.cvc \
+	arith-int-012.cvc \
+	arith-int-013.cvc \
+	arith-int-022.cvc \
+	arith-int-024.cvc \
+	arith-int-042.cvc \
+	arith-int-042.min.cvc \
+	arith-int-047.cvc \
+	arith-int-048.cvc \
+	arith-int-050.cvc \
+	arith-int-084.cvc \
+	arith-int-085.cvc \
+	arith-int-097.cvc
+
+EXTRA_DIST = $(TESTS) \
+	arith-int-001.cvc \
+	arith-int-002.cvc \
+	arith-int-003.cvc \
+	arith-int-005.cvc \
+	arith-int-006.cvc \
+	arith-int-008.cvc \
+	arith-int-009.cvc \
+	arith-int-010.cvc \
+	arith-int-014.cvc \
+	arith-int-015.cvc \
+	arith-int-016.cvc \
+	arith-int-017.cvc \
+	arith-int-018.cvc \
+	arith-int-019.cvc \
+	arith-int-020.cvc \
+	arith-int-021.cvc \
+	arith-int-023.cvc \
+	arith-int-025.cvc \
+	arith-int-026.cvc \
+	arith-int-027.cvc \
+	arith-int-028.cvc \
+	arith-int-029.cvc \
+	arith-int-030.cvc \
+	arith-int-031.cvc \
+	arith-int-032.cvc \
+	arith-int-033.cvc \
+	arith-int-034.cvc \
+	arith-int-035.cvc \
+	arith-int-036.cvc \
+	arith-int-037.cvc \
+	arith-int-038.cvc \
+	arith-int-039.cvc \
+	arith-int-040.cvc \
+	arith-int-041.cvc \
+	arith-int-043.cvc \
+	arith-int-044.cvc \
+	arith-int-045.cvc \
+	arith-int-046.cvc \
+	arith-int-049.cvc \
+	arith-int-051.cvc \
+	arith-int-052.cvc \
+	arith-int-053.cvc \
+	arith-int-054.cvc \
+	arith-int-055.cvc \
+	arith-int-056.cvc \
+	arith-int-057.cvc \
+	arith-int-058.cvc \
+	arith-int-059.cvc \
+	arith-int-060.cvc \
+	arith-int-061.cvc \
+	arith-int-062.cvc \
+	arith-int-063.cvc \
+	arith-int-064.cvc \
+	arith-int-065.cvc \
+	arith-int-066.cvc \
+	arith-int-067.cvc \
+	arith-int-068.cvc \
+	arith-int-069.cvc \
+	arith-int-070.cvc \
+	arith-int-071.cvc \
+	arith-int-072.cvc \
+	arith-int-073.cvc \
+	arith-int-074.cvc \
+	arith-int-075.cvc \
+	arith-int-076.cvc \
+	arith-int-077.cvc \
+	arith-int-078.cvc \
+	arith-int-079.cvc \
+	arith-int-080.cvc \
+	arith-int-081.cvc \
+	arith-int-083.cvc \
+	arith-int-086.cvc \
+	arith-int-087.cvc \
+	arith-int-088.cvc \
+	arith-int-089.cvc \
+	arith-int-090.cvc \
+	arith-int-091.cvc \
+	arith-int-092.cvc \
+	arith-int-093.cvc \
+	arith-int-094.cvc \
+	arith-int-095.cvc \
+	arith-int-096.cvc \
+	arith-int-098.cvc \
+	arith-int-099.cvc \
+	arith-int-100.cvc
+
+FAILING_TESTS = \
+	arith-int-007.cvc \
+	arith-int-082.cvc \
+	arith-int-098.cvc
+
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/arith/integers/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/arith/integers/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+arith-int-004.cvc.log: arith-int-004.cvc
+	@p='arith-int-004.cvc'; \
+	b='arith-int-004.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith-int-011.cvc.log: arith-int-011.cvc
+	@p='arith-int-011.cvc'; \
+	b='arith-int-011.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith-int-012.cvc.log: arith-int-012.cvc
+	@p='arith-int-012.cvc'; \
+	b='arith-int-012.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith-int-013.cvc.log: arith-int-013.cvc
+	@p='arith-int-013.cvc'; \
+	b='arith-int-013.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith-int-022.cvc.log: arith-int-022.cvc
+	@p='arith-int-022.cvc'; \
+	b='arith-int-022.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith-int-024.cvc.log: arith-int-024.cvc
+	@p='arith-int-024.cvc'; \
+	b='arith-int-024.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith-int-042.cvc.log: arith-int-042.cvc
+	@p='arith-int-042.cvc'; \
+	b='arith-int-042.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith-int-042.min.cvc.log: arith-int-042.min.cvc
+	@p='arith-int-042.min.cvc'; \
+	b='arith-int-042.min.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith-int-047.cvc.log: arith-int-047.cvc
+	@p='arith-int-047.cvc'; \
+	b='arith-int-047.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith-int-048.cvc.log: arith-int-048.cvc
+	@p='arith-int-048.cvc'; \
+	b='arith-int-048.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith-int-050.cvc.log: arith-int-050.cvc
+	@p='arith-int-050.cvc'; \
+	b='arith-int-050.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith-int-084.cvc.log: arith-int-084.cvc
+	@p='arith-int-084.cvc'; \
+	b='arith-int-084.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith-int-085.cvc.log: arith-int-085.cvc
+	@p='arith-int-085.cvc'; \
+	b='arith-int-085.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith-int-097.cvc.log: arith-int-097.cvc
+	@p='arith-int-097.cvc'; \
+	b='arith-int-097.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/arith/integers/arith-int-001.cvc b/test/regress/regress0/arith/integers/arith-int-001.cvc
new file mode 100644
index 0000000..03ed1a6
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-001.cvc
@@ -0,0 +1,14 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-23 * x0) + (-23 * x1) + (5 * x2) + (-17 * x3) = 7 ;
+ASSERT  (-14 * x0) + (-14 * x1) + (19 * x2) + (-24 * x3) = 29 ;
+ASSERT (-16 * x0) + (-17 * x1) + (8 * x2) + (4 * x3) > -10 ;
+ASSERT  (6 * x0) + (-10 * x1) + (-22 * x2) + (-22 * x3) >= 0 ;
+ASSERT  (18 * x0) + (0 * x1) + (27 * x2) + (7 * x3) <= -2 ;
+ASSERT  (-23 * x0) + (27 * x1) + (24 * x2) + (-23 * x3) > -25 ;
+ASSERT  (3 * x0) + (32 * x1) + (15 * x2) + (-21 * x3) >= -10 ;
+ASSERT  (-27 * x0) + (-16 * x1) + (21 * x2) + (-2 * x3) < 30 ;
+ASSERT  (-25 * x0) + (-18 * x1) + (-23 * x2) + (22 * x3) < -15 ;
+ASSERT  (-20 * x0) + (0 * x1) + (4 * x2) + (-26 * x3) >= 15 ;
+ASSERT  (-8 * x0) + (32 * x1) + (9 * x2) + (17 * x3) > -26;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-002.cvc b/test/regress/regress0/arith/integers/arith-int-002.cvc
new file mode 100644
index 0000000..849daba
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-002.cvc
@@ -0,0 +1,14 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (17 * x0) + (-23 * x1) + (2 * x2) + (-19 * x3) = -18 ;
+ASSERT  (25 * x0) + (23 * x1) + (21 * x2) + (20 * x3) = 2 ;
+ASSERT (-24 * x0) + (-30 * x1) + (-14 * x2) + (13 * x3) <= 15 ;
+ASSERT  (-26 * x0) + (7 * x1) + (8 * x2) + (14 * x3) <= 16 ;
+ASSERT  (-1 * x0) + (-3 * x1) + (-19 * x2) + (26 * x3) <= -15 ;
+ASSERT  (31 * x0) + (19 * x1) + (-19 * x2) + (24 * x3) < -25 ;
+ASSERT  (8 * x0) + (-27 * x1) + (22 * x2) + (-20 * x3) < -30 ;
+ASSERT  (25 * x0) + (7 * x1) + (-18 * x2) + (-18 * x3) >= -31 ;
+ASSERT  (7 * x0) + (-22 * x1) + (-8 * x2) + (-6 * x3) >= -17 ;
+ASSERT  (-23 * x0) + (14 * x1) + (23 * x2) + (22 * x3) > -29 ;
+ASSERT  (-6 * x0) + (-6 * x1) + (-19 * x2) + (-4 * x3) > -5;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-003.cvc b/test/regress/regress0/arith/integers/arith-int-003.cvc
new file mode 100644
index 0000000..9c060c4
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-003.cvc
@@ -0,0 +1,14 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (17 * x0) + (-7 * x1) + (15 * x2) + (21 * x3) = 19 ;
+ASSERT (6 * x0) + (-24 * x1) + (25 * x2) + (-18 * x3) > -25 ;
+ASSERT  (-26 * x0) + (-28 * x1) + (-23 * x2) + (0 * x3) < -14 ;
+ASSERT  (-12 * x0) + (16 * x1) + (26 * x2) + (-23 * x3) <= 11 ;
+ASSERT  (14 * x0) + (6 * x1) + (9 * x2) + (-29 * x3) > 24 ;
+ASSERT  (5 * x0) + (-10 * x1) + (21 * x2) + (-26 * x3) > -12 ;
+ASSERT  (31 * x0) + (6 * x1) + (30 * x2) + (10 * x3) <= -25 ;
+ASSERT  (-18 * x0) + (-25 * x1) + (-24 * x2) + (-30 * x3) >= -18 ;
+ASSERT  (29 * x0) + (25 * x1) + (29 * x2) + (-31 * x3) < 6 ;
+ASSERT  (21 * x0) + (-27 * x1) + (-28 * x2) + (-15 * x3) >= 25 ;
+ASSERT  (-13 * x0) + (10 * x1) + (-7 * x2) + (-10 * x3) <= -4;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-004.cvc b/test/regress/regress0/arith/integers/arith-int-004.cvc
new file mode 100644
index 0000000..314b76d
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-004.cvc
@@ -0,0 +1,15 @@
+% EXPECT: invalid
+
+x0, x1, x2, x3 : INT;
+ASSERT (12 * x0) + (-25 * x1) + (21 * x2) + (7 * x3) < 27 ;
+ASSERT  (9 * x0) + (2 * x1) + (26 * x2) + (-3 * x3) >= 11 ;
+ASSERT  (3 * x0) + (-29 * x1) + (-4 * x2) + (-17 * x3) > 2 ;
+ASSERT  (7 * x0) + (-29 * x1) + (12 * x2) + (16 * x3) >= -14 ;
+ASSERT  (21 * x0) + (32 * x1) + (16 * x2) + (4 * x3) >= -19 ;
+ASSERT  (6 * x0) + (23 * x1) + (-10 * x2) + (-25 * x3) > 5 ;
+ASSERT  (-26 * x0) + (4 * x1) + (-23 * x2) + (-30 * x3) >= 25 ;
+ASSERT  (-4 * x0) + (-13 * x1) + (15 * x2) + (-12 * x3) > -13 ;
+ASSERT  (-11 * x0) + (31 * x1) + (0 * x2) + (-2 * x3) < 8 ;
+ASSERT  (7 * x0) + (14 * x1) + (-21 * x2) + (-5 * x3) >= -19 ;
+ASSERT  (-28 * x0) + (-12 * x1) + (7 * x2) + (-5 * x3) <= 28;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-005.cvc b/test/regress/regress0/arith/integers/arith-int-005.cvc
new file mode 100644
index 0000000..9b9776a
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-005.cvc
@@ -0,0 +1,14 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (13 * x0) + (0 * x1) + (6 * x2) + (-30 * x3) = -16 ;
+ASSERT  (-4 * x0) + (-8 * x1) + (14 * x2) + (-8 * x3) = -11 ;
+ASSERT (-23 * x0) + (-26 * x1) + (4 * x2) + (-6 * x3) <= -2 ;
+ASSERT  (-22 * x0) + (-18 * x1) + (-23 * x2) + (5 * x3) < -32 ;
+ASSERT  (27 * x0) + (-12 * x1) + (-19 * x2) + (-17 * x3) <= -29 ;
+ASSERT  (12 * x0) + (21 * x1) + (-22 * x2) + (15 * x3) > 4 ;
+ASSERT  (-15 * x0) + (16 * x1) + (2 * x2) + (-14 * x3) >= -26 ;
+ASSERT  (4 * x0) + (4 * x1) + (-21 * x2) + (10 * x3) >= -6 ;
+ASSERT  (-6 * x0) + (25 * x1) + (-14 * x2) + (8 * x3) >= -31 ;
+ASSERT  (-23 * x0) + (2 * x1) + (-9 * x2) + (19 * x3) <= 10 ;
+ASSERT  (21 * x0) + (24 * x1) + (14 * x2) + (-6 * x3) <= 0;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-006.cvc b/test/regress/regress0/arith/integers/arith-int-006.cvc
new file mode 100644
index 0000000..999b4a5
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-006.cvc
@@ -0,0 +1,10 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (-7 * x0) + (-28 * x1) + (8 * x2) + (29 * x3) = -18 ;
+ASSERT  (11 * x0) + (2 * x1) + (4 * x2) + (23 * x3) = 6 ;
+ASSERT  (24 * x0) + (-20 * x1) + (23 * x2) + (-2 * x3) = 19 ;
+ASSERT  (17 * x0) + (-6 * x1) + (2 * x2) + (-22 * x3) = -31 ;
+ASSERT  (16 * x0) + (-7 * x1) + (27 * x2) + (17 * x3) = -8;
+ASSERT  (-5 * x0) + (18 * x1) + (3 * x2) + (-1 * x3) <= 29 ;
+ASSERT  (9 * x0) + (29 * x1) + (30 * x2) + (23 * x3) >= 21 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-008.cvc b/test/regress/regress0/arith/integers/arith-int-008.cvc
new file mode 100644
index 0000000..1ae22c9
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-008.cvc
@@ -0,0 +1,10 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT  (-12 * x0) + (-15 * x1) + (-31 * x2) + (17 * x3) = -16 ;
+ASSERT (11 * x0) + (-5 * x1) + (-8 * x2) + (-17 * x3) > -4 ;
+ASSERT  (-12 * x0) + (-22 * x1) + (9 * x2) + (-20 * x3) >= 32 ;
+ASSERT  (24 * x0) + (-32 * x1) + (5 * x2) + (31 * x3) > 20 ;
+ASSERT  (-30 * x0) + (-4 * x1) + (-4 * x2) + (0 * x3) >= -20 ;
+ASSERT  (-10 * x0) + (18 * x1) + (17 * x2) + (20 * x3) <= 30 ;
+ASSERT  (12 * x0) + (-13 * x1) + (4 * x2) + (-27 * x3) > 3;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-009.cvc b/test/regress/regress0/arith/integers/arith-int-009.cvc
new file mode 100644
index 0000000..9bd7a2c
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-009.cvc
@@ -0,0 +1,10 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-16 * x0) + (-21 * x1) + (32 * x2) + (32 * x3) = -19 ;
+ASSERT  (-10 * x0) + (-21 * x1) + (13 * x2) + (-7 * x3) = 2 ;
+ASSERT  (11 * x0) + (15 * x1) + (-8 * x2) + (-24 * x3) = 29 ;
+ASSERT (3 * x0) + (-28 * x1) + (-14 * x2) + (-18 * x3) < 5 ;
+ASSERT  (-18 * x0) + (-13 * x1) + (25 * x2) + (22 * x3) <= -24 ;
+ASSERT  (-16 * x0) + (-17 * x1) + (-27 * x2) + (4 * x3) >= -5 ;
+ASSERT  (21 * x0) + (13 * x1) + (20 * x2) + (-1 * x3) < 19;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-010.cvc b/test/regress/regress0/arith/integers/arith-int-010.cvc
new file mode 100644
index 0000000..4ac85a9
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-010.cvc
@@ -0,0 +1,10 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (19 * x0) + (-2 * x1) + (-29 * x2) + (-24 * x3) = 3 ;
+ASSERT  (3 * x0) + (11 * x1) + (-14 * x2) + (6 * x3) = 4 ;
+ASSERT  (-1 * x0) + (-22 * x1) + (4 * x2) + (5 * x3) = -22;
+ASSERT (8 * x0) + (-8 * x1) + (18 * x2) + (-14 * x3) < -20 ;
+ASSERT  (22 * x0) + (27 * x1) + (6 * x2) + (-3 * x3) <= -11 ;
+ASSERT  (-23 * x0) + (-29 * x1) + (-27 * x2) + (13 * x3) <= 3 ;
+ASSERT  (8 * x0) + (0 * x1) + (28 * x2) + (0 * x3) >= -29 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-011.cvc b/test/regress/regress0/arith/integers/arith-int-011.cvc
new file mode 100644
index 0000000..bd2fa2a
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-011.cvc
@@ -0,0 +1,5 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (13 * x0) + (-1 * x1) + (11 * x2) + (10 * x3) = 9 ;
+ASSERT  (-7 * x0) + (3 * x1) + (-22 * x2) + (16 * x3) >= 9;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-012.cvc b/test/regress/regress0/arith/integers/arith-int-012.cvc
new file mode 100644
index 0000000..11b0dab
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-012.cvc
@@ -0,0 +1,5 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (18 * x0) + (32 * x1) + (-11 * x2) + (18 * x3) < -25 ;
+ASSERT  (-31 * x0) + (16 * x1) + (24 * x2) + (9 * x3) >= -24;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-013.cvc b/test/regress/regress0/arith/integers/arith-int-013.cvc
new file mode 100644
index 0000000..329251c
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-013.cvc
@@ -0,0 +1,5 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (-22 * x0) + (-14 * x1) + (4 * x2) + (-12 * x3) > 25 ;
+ASSERT  (14 * x0) + (11 * x1) + (32 * x2) + (-8 * x3) >= 2;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-014.cvc b/test/regress/regress0/arith/integers/arith-int-014.cvc
new file mode 100644
index 0000000..265d18a
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-014.cvc
@@ -0,0 +1,5 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (10 * x0) + (25 * x1) + (10 * x2) + (-28 * x3) <= 20 ;
+ASSERT  (24 * x0) + (-9 * x1) + (-12 * x2) + (15 * x3) <= 3;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-015.cvc b/test/regress/regress0/arith/integers/arith-int-015.cvc
new file mode 100644
index 0000000..d2e2639
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-015.cvc
@@ -0,0 +1,5 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (-22 * x0) + (-3 * x1) + (9 * x2) + (-13 * x3) > -31 ;
+ASSERT  (31 * x0) + (-17 * x1) + (28 * x2) + (-16 * x3) > -28;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-016.cvc b/test/regress/regress0/arith/integers/arith-int-016.cvc
new file mode 100644
index 0000000..6774dd2
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-016.cvc
@@ -0,0 +1,20 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-13 * x0) + (-4 * x1) + (-20 * x2) + (-26 * x3) = 2 ;
+ASSERT  (13 * x0) + (13 * x1) + (-14 * x2) + (26 * x3) = -8 ;
+ASSERT  (-13 * x0) + (1 * x1) + (16 * x2) + (4 * x3) = -22 ;
+ASSERT  (17 * x0) + (7 * x1) + (32 * x2) + (19 * x3) = 16 ;
+ASSERT (11 * x0) + (-8 * x1) + (-10 * x2) + (-10 * x3) <= -1 ;
+ASSERT  (-25 * x0) + (-18 * x1) + (-10 * x2) + (-19 * x3) <= 32 ;
+ASSERT  (0 * x0) + (-14 * x1) + (30 * x2) + (-5 * x3) > -13 ;
+ASSERT  (2 * x0) + (-17 * x1) + (-13 * x2) + (8 * x3) > 1 ;
+ASSERT  (-4 * x0) + (-1 * x1) + (29 * x2) + (-9 * x3) > -8 ;
+ASSERT  (-32 * x0) + (26 * x1) + (5 * x2) + (6 * x3) <= -1 ;
+ASSERT  (-26 * x0) + (3 * x1) + (22 * x2) + (27 * x3) > -2 ;
+ASSERT  (13 * x0) + (3 * x1) + (1 * x2) + (9 * x3) < 24 ;
+ASSERT  (-10 * x0) + (22 * x1) + (5 * x2) + (-5 * x3) >= -21 ;
+ASSERT  (-20 * x0) + (-28 * x1) + (-11 * x2) + (6 * x3) >= -17 ;
+ASSERT  (14 * x0) + (16 * x1) + (-15 * x2) + (17 * x3) < 27 ;
+ASSERT  (-23 * x0) + (-4 * x1) + (-19 * x2) + (-23 * x3) < 20 ;
+ASSERT  (-8 * x0) + (-5 * x1) + (-17 * x2) + (32 * x3) <= 20;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-017.cvc b/test/regress/regress0/arith/integers/arith-int-017.cvc
new file mode 100644
index 0000000..e9a0612
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-017.cvc
@@ -0,0 +1,20 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (23 * x0) + (-4 * x1) + (-26 * x2) + (-1 * x3) = 10 ;
+ASSERT  (15 * x0) + (31 * x1) + (31 * x2) + (31 * x3) = 13 ;
+ASSERT  (19 * x0) + (-15 * x1) + (25 * x2) + (30 * x3) = 23 ;
+ASSERT (10 * x0) + (-17 * x1) + (15 * x2) + (13 * x3) < 22 ;
+ASSERT  (-7 * x0) + (22 * x1) + (8 * x2) + (24 * x3) < 14 ;
+ASSERT  (24 * x0) + (-12 * x1) + (0 * x2) + (-25 * x3) <= -19 ;
+ASSERT  (-27 * x0) + (17 * x1) + (-20 * x2) + (-25 * x3) >= 11 ;
+ASSERT  (3 * x0) + (-12 * x1) + (-18 * x2) + (15 * x3) > -27 ;
+ASSERT  (-19 * x0) + (24 * x1) + (9 * x2) + (4 * x3) <= 16 ;
+ASSERT  (28 * x0) + (-20 * x1) + (-21 * x2) + (4 * x3) > -13 ;
+ASSERT  (-21 * x0) + (-23 * x1) + (-31 * x2) + (-6 * x3) < 6 ;
+ASSERT  (-30 * x0) + (8 * x1) + (-22 * x2) + (8 * x3) > 14 ;
+ASSERT  (-1 * x0) + (17 * x1) + (-22 * x2) + (-4 * x3) >= 4 ;
+ASSERT  (2 * x0) + (-4 * x1) + (10 * x2) + (30 * x3) < -15 ;
+ASSERT  (29 * x0) + (27 * x1) + (23 * x2) + (-4 * x3) < 21 ;
+ASSERT  (-28 * x0) + (0 * x1) + (19 * x2) + (7 * x3) <= -18 ;
+ASSERT  (-20 * x0) + (-7 * x1) + (26 * x2) + (-17 * x3) < 23;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-018.cvc b/test/regress/regress0/arith/integers/arith-int-018.cvc
new file mode 100644
index 0000000..4cb97b7
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-018.cvc
@@ -0,0 +1,20 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (-11 * x0) + (-26 * x1) + (9 * x2) + (32 * x3) = -11 ;
+ASSERT  (-5 * x0) + (-11 * x1) + (-10 * x2) + (-31 * x3) = -23 ;
+ASSERT  (-12 * x0) + (9 * x1) + (-22 * x2) + (11 * x3) = 11 ;
+ASSERT  (-27 * x0) + (8 * x1) + (-28 * x2) + (-7 * x3) = 23 ;
+ASSERT  (19 * x0) + (4 * x1) + (5 * x2) + (-10 * x3) >= 2 ;
+ASSERT  (-6 * x0) + (-20 * x1) + (30 * x2) + (20 * x3) >= 12 ;
+ASSERT  (19 * x0) + (26 * x1) + (-21 * x2) + (18 * x3) <= -21 ;
+ASSERT  (8 * x0) + (-29 * x1) + (7 * x2) + (20 * x3) >= 29 ;
+ASSERT  (-28 * x0) + (6 * x1) + (11 * x2) + (0 * x3) >= -4 ;
+ASSERT  (-20 * x0) + (-30 * x1) + (17 * x2) + (25 * x3) >= 4 ;
+ASSERT  (-15 * x0) + (9 * x1) + (9 * x2) + (26 * x3) > 11 ;
+ASSERT  (-30 * x0) + (-20 * x1) + (-20 * x2) + (14 * x3) <= -27 ;
+ASSERT  (-22 * x0) + (-11 * x1) + (-6 * x2) + (18 * x3) > -13 ;
+ASSERT  (-22 * x0) + (-25 * x1) + (22 * x2) + (-24 * x3) <= 1 ;
+ASSERT  (-24 * x0) + (22 * x1) + (-28 * x2) + (-14 * x3) >= 18 ;
+ASSERT  (17 * x0) + (31 * x1) + (-13 * x2) + (-23 * x3) < -5 ;
+ASSERT  (-12 * x0) + (-28 * x1) + (19 * x2) + (-21 * x3) < -27;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-019.cvc b/test/regress/regress0/arith/integers/arith-int-019.cvc
new file mode 100644
index 0000000..cf9ae2d
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-019.cvc
@@ -0,0 +1,20 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (25 * x0) + (6 * x1) + (-30 * x2) + (29 * x3) = -5 ;
+ASSERT (14 * x0) + (16 * x1) + (24 * x2) + (-7 * x3) <= 31 ;
+ASSERT  (1 * x0) + (20 * x1) + (14 * x2) + (5 * x3) >= 3 ;
+ASSERT  (-5 * x0) + (24 * x1) + (-21 * x2) + (-13 * x3) >= -12 ;
+ASSERT  (9 * x0) + (-16 * x1) + (23 * x2) + (-11 * x3) > -5 ;
+ASSERT  (-24 * x0) + (26 * x1) + (19 * x2) + (29 * x3) > -27 ;
+ASSERT  (-30 * x0) + (31 * x1) + (27 * x2) + (-26 * x3) < 23 ;
+ASSERT  (14 * x0) + (1 * x1) + (0 * x2) + (29 * x3) > 21 ;
+ASSERT  (-32 * x0) + (-5 * x1) + (27 * x2) + (31 * x3) <= 23 ;
+ASSERT  (30 * x0) + (10 * x1) + (30 * x2) + (29 * x3) < -28 ;
+ASSERT  (7 * x0) + (-4 * x1) + (-25 * x2) + (0 * x3) > -28 ;
+ASSERT  (3 * x0) + (-19 * x1) + (11 * x2) + (-21 * x3) <= 10 ;
+ASSERT  (-31 * x0) + (21 * x1) + (24 * x2) + (-17 * x3) >= 21 ;
+ASSERT  (-20 * x0) + (19 * x1) + (6 * x2) + (5 * x3) >= -27 ;
+ASSERT  (-8 * x0) + (-27 * x1) + (0 * x2) + (13 * x3) >= 12 ;
+ASSERT  (-21 * x0) + (7 * x1) + (-26 * x2) + (19 * x3) < -10 ;
+ASSERT  (32 * x0) + (-26 * x1) + (-24 * x2) + (14 * x3) < 13;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-020.cvc b/test/regress/regress0/arith/integers/arith-int-020.cvc
new file mode 100644
index 0000000..07a8274
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-020.cvc
@@ -0,0 +1,20 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (-32 * x0) + (31 * x1) + (-32 * x2) + (-21 * x3) = 5 ;
+ASSERT  (32 * x0) + (5 * x1) + (23 * x2) + (-16 * x3) = 8 ;
+ASSERT  (-17 * x0) + (-17 * x1) + (-22 * x2) + (30 * x3) = -5 ;
+ASSERT  (30 * x0) + (18 * x1) + (26 * x2) + (6 * x3) = -8 ;
+ASSERT  (17 * x0) + (-4 * x1) + (-16 * x2) + (-22 * x3) = 11;
+ASSERT  (0 * x0) + (-26 * x1) + (-15 * x2) + (12 * x3) > 7 ;
+ASSERT  (-30 * x0) + (4 * x1) + (-1 * x2) + (27 * x3) > 11 ;
+ASSERT  (23 * x0) + (12 * x1) + (11 * x2) + (-2 * x3) <= -10 ;
+ASSERT  (-26 * x0) + (-8 * x1) + (7 * x2) + (-18 * x3) > 1 ;
+ASSERT  (3 * x0) + (0 * x1) + (5 * x2) + (24 * x3) > 2 ;
+ASSERT  (-13 * x0) + (15 * x1) + (2 * x2) + (2 * x3) <= 17 ;
+ASSERT  (-24 * x0) + (21 * x1) + (-21 * x2) + (-13 * x3) >= -30 ;
+ASSERT  (7 * x0) + (-11 * x1) + (2 * x2) + (21 * x3) >= -24 ;
+ASSERT  (-15 * x0) + (-1 * x1) + (6 * x2) + (-10 * x3) <= -25 ;
+ASSERT  (-21 * x0) + (8 * x1) + (3 * x2) + (-5 * x3) <= 22 ;
+ASSERT  (-18 * x0) + (-16 * x1) + (21 * x2) + (20 * x3) >= 9 ;
+ASSERT  (-17 * x0) + (-10 * x1) + (-20 * x2) + (16 * x3) >= 3 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-021.cvc b/test/regress/regress0/arith/integers/arith-int-021.cvc
new file mode 100644
index 0000000..345c908
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-021.cvc
@@ -0,0 +1,4 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (8 * x0) + (-27 * x1) + (29 * x2) + (-13 * x3) < 12;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-022.cvc b/test/regress/regress0/arith/integers/arith-int-022.cvc
new file mode 100644
index 0000000..584348d
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-022.cvc
@@ -0,0 +1,4 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (-24 * x0) + (25 * x1) + (-28 * x2) + (31 * x3) > 18;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-023.cvc b/test/regress/regress0/arith/integers/arith-int-023.cvc
new file mode 100644
index 0000000..01d51a2
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-023.cvc
@@ -0,0 +1,4 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (29 * x0) + (-19 * x1) + (23 * x2) + (15 * x3) <= 9;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-024.cvc b/test/regress/regress0/arith/integers/arith-int-024.cvc
new file mode 100644
index 0000000..f57136d
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-024.cvc
@@ -0,0 +1,4 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (4 * x0) + (8 * x1) + (27 * x2) + (-12 * x3) = -5;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-025.cvc b/test/regress/regress0/arith/integers/arith-int-025.cvc
new file mode 100644
index 0000000..5a11212
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-025.cvc
@@ -0,0 +1,4 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (-19 * x0) + (-29 * x1) + (2 * x2) + (26 * x3) >= 3;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-026.cvc b/test/regress/regress0/arith/integers/arith-int-026.cvc
new file mode 100644
index 0000000..9e69aa2
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-026.cvc
@@ -0,0 +1,21 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (22 * x0) + (25 * x1) + (1 * x2) + (-11 * x3) = 19 ;
+ASSERT  (-10 * x0) + (-27 * x1) + (6 * x2) + (6 * x3) = 28 ;
+ASSERT  (0 * x0) + (-30 * x1) + (-31 * x2) + (12 * x3) = -21 ;
+ASSERT  (29 * x0) + (-6 * x1) + (-12 * x2) + (22 * x3) = -13;
+ASSERT (-7 * x0) + (23 * x1) + (-1 * x2) + (-14 * x3) > -6 ;
+ASSERT  (-27 * x0) + (-31 * x1) + (25 * x2) + (-23 * x3) <= 12 ;
+ASSERT  (-19 * x0) + (6 * x1) + (0 * x2) + (-28 * x3) > -1 ;
+ASSERT  (-12 * x0) + (19 * x1) + (2 * x2) + (-4 * x3) <= 12 ;
+ASSERT  (10 * x0) + (-26 * x1) + (7 * x2) + (-6 * x3) < 12 ;
+ASSERT  (25 * x0) + (-18 * x1) + (-30 * x2) + (-9 * x3) < -2 ;
+ASSERT  (-9 * x0) + (-13 * x1) + (-9 * x2) + (-28 * x3) > 18 ;
+ASSERT  (-12 * x0) + (-28 * x1) + (-21 * x2) + (32 * x3) > 18 ;
+ASSERT  (-23 * x0) + (-26 * x1) + (-21 * x2) + (-24 * x3) <= 3 ;
+ASSERT  (-15 * x0) + (13 * x1) + (-4 * x2) + (-1 * x3) <= 0 ;
+ASSERT  (11 * x0) + (-30 * x1) + (3 * x2) + (-6 * x3) >= 3 ;
+ASSERT  (28 * x0) + (0 * x1) + (0 * x2) + (-22 * x3) >= 9 ;
+ASSERT  (-18 * x0) + (15 * x1) + (-27 * x2) + (31 * x3) < 5 ;
+ASSERT  (10 * x0) + (30 * x1) + (-28 * x2) + (27 * x3) <= -1 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-027.cvc b/test/regress/regress0/arith/integers/arith-int-027.cvc
new file mode 100644
index 0000000..b45622f
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-027.cvc
@@ -0,0 +1,21 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (17 * x0) + (29 * x1) + (-11 * x2) + (24 * x3) = 13 ;
+ASSERT  (16 * x0) + (-20 * x1) + (-5 * x2) + (12 * x3) = 13 ;
+ASSERT  (-12 * x0) + (-3 * x1) + (-19 * x2) + (4 * x3) = -21 ;
+ASSERT  (-3 * x0) + (10 * x1) + (-6 * x2) + (-31 * x3) = 21 ;
+ASSERT  (10 * x0) + (-14 * x1) + (-12 * x2) + (8 * x3) = 5 ;
+ASSERT  (-4 * x0) + (15 * x1) + (29 * x2) + (2 * x3) = -32 ;
+ASSERT  (-14 * x0) + (-12 * x1) + (16 * x2) + (-14 * x3) = -8 ;
+ASSERT  (-31 * x0) + (14 * x1) + (30 * x2) + (-19 * x3) < -20 ;
+ASSERT  (-5 * x0) + (9 * x1) + (11 * x2) + (-32 * x3) < 3 ;
+ASSERT  (27 * x0) + (-6 * x1) + (0 * x2) + (30 * x3) <= -20 ;
+ASSERT  (-15 * x0) + (-13 * x1) + (-21 * x2) + (-5 * x3) > -8 ;
+ASSERT  (19 * x0) + (31 * x1) + (-16 * x2) + (-8 * x3) > -15 ;
+ASSERT  (9 * x0) + (-9 * x1) + (-4 * x2) + (-16 * x3) < 21 ;
+ASSERT  (24 * x0) + (4 * x1) + (28 * x2) + (-14 * x3) >= -1 ;
+ASSERT  (5 * x0) + (23 * x1) + (-22 * x2) + (-28 * x3) >= -21 ;
+ASSERT  (-31 * x0) + (14 * x1) + (14 * x2) + (-9 * x3) > -32 ;
+ASSERT  (25 * x0) + (-18 * x1) + (21 * x2) + (-17 * x3) < -20 ;
+ASSERT  (1 * x0) + (-29 * x1) + (11 * x2) + (-24 * x3) >= -20;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-028.cvc b/test/regress/regress0/arith/integers/arith-int-028.cvc
new file mode 100644
index 0000000..61fee42
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-028.cvc
@@ -0,0 +1,21 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-31 * x0) + (-5 * x1) + (-28 * x2) + (16 * x3) = 10 ;
+ASSERT  (3 * x0) + (-20 * x1) + (-11 * x2) + (-2 * x3) = 25 ;
+ASSERT  (31 * x0) + (28 * x1) + (-20 * x2) + (15 * x3) = -30;
+ASSERT (15 * x0) + (-16 * x1) + (29 * x2) + (-2 * x3) >= -6 ;
+ASSERT  (-29 * x0) + (-17 * x1) + (-7 * x2) + (11 * x3) < 26 ;
+ASSERT  (-4 * x0) + (14 * x1) + (-29 * x2) + (-7 * x3) >= 28 ;
+ASSERT  (-29 * x0) + (-25 * x1) + (9 * x2) + (-17 * x3) <= -25 ;
+ASSERT  (10 * x0) + (-25 * x1) + (28 * x2) + (8 * x3) > 6 ;
+ASSERT  (10 * x0) + (17 * x1) + (-1 * x2) + (21 * x3) > 24 ;
+ASSERT  (-19 * x0) + (-29 * x1) + (-26 * x2) + (-7 * x3) <= -11 ;
+ASSERT  (30 * x0) + (-7 * x1) + (-8 * x2) + (6 * x3) >= -32 ;
+ASSERT  (-3 * x0) + (24 * x1) + (30 * x2) + (-30 * x3) >= 19 ;
+ASSERT  (-9 * x0) + (5 * x1) + (17 * x2) + (-24 * x3) < -22 ;
+ASSERT  (11 * x0) + (-16 * x1) + (-1 * x2) + (26 * x3) >= 1 ;
+ASSERT  (-13 * x0) + (5 * x1) + (19 * x2) + (4 * x3) >= 27 ;
+ASSERT  (23 * x0) + (4 * x1) + (30 * x2) + (-28 * x3) > 13 ;
+ASSERT  (-8 * x0) + (-24 * x1) + (0 * x2) + (22 * x3) < -6 ;
+ASSERT  (-1 * x0) + (1 * x1) + (-30 * x2) + (12 * x3) >= -26 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-029.cvc b/test/regress/regress0/arith/integers/arith-int-029.cvc
new file mode 100644
index 0000000..ee49bbb
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-029.cvc
@@ -0,0 +1,21 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-29 * x0) + (-17 * x1) + (11 * x2) + (1 * x3) = -15 ;
+ASSERT  (-13 * x0) + (1 * x1) + (-6 * x2) + (-15 * x3) = 32 ;
+ASSERT  (-19 * x0) + (29 * x1) + (27 * x2) + (-8 * x3) = -4 ;
+ASSERT  (-28 * x0) + (-15 * x1) + (-20 * x2) + (-1 * x3) = -2 ;
+ASSERT  (-2 * x0) + (2 * x1) + (3 * x2) + (-4 * x3) = 16 ;
+ASSERT  (31 * x0) + (22 * x1) + (15 * x2) + (28 * x3) = -19 ;
+ASSERT (-32 * x0) + (2 * x1) + (-8 * x2) + (6 * x3) <= -21 ;
+ASSERT  (-10 * x0) + (23 * x1) + (-9 * x2) + (-26 * x3) < -7 ;
+ASSERT  (-11 * x0) + (-13 * x1) + (-17 * x2) + (-19 * x3) >= -11 ;
+ASSERT  (20 * x0) + (11 * x1) + (-11 * x2) + (-7 * x3) <= 14 ;
+ASSERT  (17 * x0) + (0 * x1) + (-27 * x2) + (-32 * x3) > -1 ;
+ASSERT  (17 * x0) + (-7 * x1) + (18 * x2) + (-29 * x3) > -19 ;
+ASSERT  (12 * x0) + (-14 * x1) + (27 * x2) + (5 * x3) <= 23 ;
+ASSERT  (-2 * x0) + (-6 * x1) + (-6 * x2) + (19 * x3) < -5 ;
+ASSERT  (-3 * x0) + (-10 * x1) + (-30 * x2) + (18 * x3) >= -27 ;
+ASSERT  (-18 * x0) + (-25 * x1) + (3 * x2) + (2 * x3) < -25 ;
+ASSERT  (-19 * x0) + (16 * x1) + (-11 * x2) + (-26 * x3) >= -24 ;
+ASSERT  (-2 * x0) + (21 * x1) + (25 * x2) + (28 * x3) > 10;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-030.cvc b/test/regress/regress0/arith/integers/arith-int-030.cvc
new file mode 100644
index 0000000..70b6a37
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-030.cvc
@@ -0,0 +1,21 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (-13 * x0) + (26 * x1) + (-11 * x2) + (17 * x3) = 17 ;
+ASSERT  (-15 * x0) + (2 * x1) + (-9 * x2) + (17 * x3) = -11 ;
+ASSERT  (8 * x0) + (-24 * x1) + (20 * x2) + (23 * x3) = -23 ;
+ASSERT  (-2 * x0) + (26 * x1) + (4 * x2) + (31 * x3) < 31 ;
+ASSERT  (23 * x0) + (14 * x1) + (-29 * x2) + (-11 * x3) > 14 ;
+ASSERT  (-19 * x0) + (-32 * x1) + (11 * x2) + (31 * x3) < -4 ;
+ASSERT  (3 * x0) + (13 * x1) + (-19 * x2) + (26 * x3) >= -20 ;
+ASSERT  (-6 * x0) + (4 * x1) + (-17 * x2) + (-31 * x3) <= 32 ;
+ASSERT  (-13 * x0) + (32 * x1) + (-18 * x2) + (7 * x3) < -27 ;
+ASSERT  (-19 * x0) + (6 * x1) + (-28 * x2) + (-15 * x3) >= 30 ;
+ASSERT  (30 * x0) + (-24 * x1) + (-10 * x2) + (-4 * x3) >= -9 ;
+ASSERT  (-4 * x0) + (4 * x1) + (-27 * x2) + (-17 * x3) < 12 ;
+ASSERT  (-21 * x0) + (13 * x1) + (31 * x2) + (4 * x3) >= -16 ;
+ASSERT  (-11 * x0) + (30 * x1) + (-20 * x2) + (21 * x3) <= 9 ;
+ASSERT  (-12 * x0) + (23 * x1) + (2 * x2) + (12 * x3) <= 18 ;
+ASSERT  (30 * x0) + (8 * x1) + (4 * x2) + (-5 * x3) <= -24 ;
+ASSERT  (12 * x0) + (22 * x1) + (9 * x2) + (30 * x3) >= -3 ;
+ASSERT  (10 * x0) + (15 * x1) + (25 * x2) + (-5 * x3) <= 4;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-031.cvc b/test/regress/regress0/arith/integers/arith-int-031.cvc
new file mode 100644
index 0000000..86242f7
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-031.cvc
@@ -0,0 +1,19 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-21 * x0) + (-24 * x1) + (-31 * x2) + (12 * x3) = -10 ;
+ASSERT (-4 * x0) + (22 * x1) + (9 * x2) + (17 * x3) > -20 ;
+ASSERT  (0 * x0) + (22 * x1) + (-11 * x2) + (-22 * x3) <= 26 ;
+ASSERT  (17 * x0) + (-11 * x1) + (32 * x2) + (8 * x3) < 20 ;
+ASSERT  (-30 * x0) + (24 * x1) + (-30 * x2) + (-12 * x3) >= 19 ;
+ASSERT  (-27 * x0) + (5 * x1) + (31 * x2) + (-12 * x3) <= -24 ;
+ASSERT  (-12 * x0) + (-23 * x1) + (-27 * x2) + (29 * x3) >= 13 ;
+ASSERT  (23 * x0) + (-21 * x1) + (24 * x2) + (-17 * x3) >= -20 ;
+ASSERT  (-30 * x0) + (-27 * x1) + (-21 * x2) + (-11 * x3) < -24 ;
+ASSERT  (31 * x0) + (-14 * x1) + (-3 * x2) + (-9 * x3) >= 13 ;
+ASSERT  (8 * x0) + (-2 * x1) + (-13 * x2) + (23 * x3) < 31 ;
+ASSERT  (-1 * x0) + (9 * x1) + (-29 * x2) + (17 * x3) >= -7 ;
+ASSERT  (11 * x0) + (-8 * x1) + (-29 * x2) + (-25 * x3) >= -5 ;
+ASSERT  (19 * x0) + (-32 * x1) + (27 * x2) + (17 * x3) > 17 ;
+ASSERT  (23 * x0) + (-1 * x1) + (-9 * x2) + (-12 * x3) < -25 ;
+ASSERT  (16 * x0) + (-22 * x1) + (3 * x2) + (30 * x3) >= 11;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-032.cvc b/test/regress/regress0/arith/integers/arith-int-032.cvc
new file mode 100644
index 0000000..1ee4c98
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-032.cvc
@@ -0,0 +1,19 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (4 * x0) + (-29 * x1) + (-9 * x2) + (9 * x3) = 8 ;
+ASSERT  (-26 * x0) + (-26 * x1) + (26 * x2) + (-18 * x3) = -20 ;
+ASSERT  (-15 * x0) + (-4 * x1) + (-28 * x2) + (-25 * x3) = 13 ;
+ASSERT  (17 * x0) + (-29 * x1) + (19 * x2) + (-32 * x3) = 26 ;
+ASSERT  (20 * x0) + (-29 * x1) + (-32 * x2) + (28 * x3) = -12 ;
+ASSERT  (17 * x0) + (18 * x1) + (-18 * x2) + (28 * x3) <= 21 ;
+ASSERT  (-28 * x0) + (-17 * x1) + (-15 * x2) + (30 * x3) > -19 ;
+ASSERT  (-6 * x0) + (-25 * x1) + (-22 * x2) + (-13 * x3) < -8 ;
+ASSERT  (12 * x0) + (8 * x1) + (15 * x2) + (-7 * x3) >= 12 ;
+ASSERT  (14 * x0) + (6 * x1) + (3 * x2) + (25 * x3) > 3 ;
+ASSERT  (31 * x0) + (5 * x1) + (26 * x2) + (-1 * x3) < -13 ;
+ASSERT  (31 * x0) + (-27 * x1) + (15 * x2) + (-16 * x3) >= 11 ;
+ASSERT  (20 * x0) + (-20 * x1) + (25 * x2) + (18 * x3) > 18 ;
+ASSERT  (-2 * x0) + (-30 * x1) + (25 * x2) + (-9 * x3) < -9 ;
+ASSERT  (29 * x0) + (-22 * x1) + (-18 * x2) + (-25 * x3) < -2 ;
+ASSERT  (-12 * x0) + (9 * x1) + (17 * x2) + (-16 * x3) > 3;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-033.cvc b/test/regress/regress0/arith/integers/arith-int-033.cvc
new file mode 100644
index 0000000..599ba4e
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-033.cvc
@@ -0,0 +1,19 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-14 * x0) + (16 * x1) + (-16 * x2) + (0 * x3) = -8 ;
+ASSERT  (3 * x0) + (-20 * x1) + (-12 * x2) + (-3 * x3) = -7 ;
+ASSERT  (-28 * x0) + (31 * x1) + (32 * x2) + (-11 * x3) = 0 ;
+ASSERT  (-20 * x0) + (-11 * x1) + (-27 * x2) + (-6 * x3) = -6 ;
+ASSERT (-7 * x0) + (-7 * x1) + (17 * x2) + (-25 * x3) <= -15 ;
+ASSERT  (8 * x0) + (28 * x1) + (8 * x2) + (7 * x3) > -28 ;
+ASSERT  (25 * x0) + (7 * x1) + (-17 * x2) + (-28 * x3) > 5 ;
+ASSERT  (-19 * x0) + (0 * x1) + (-20 * x2) + (0 * x3) <= 20 ;
+ASSERT  (6 * x0) + (2 * x1) + (29 * x2) + (-19 * x3) <= -3 ;
+ASSERT  (-9 * x0) + (-1 * x1) + (-18 * x2) + (32 * x3) > 11 ;
+ASSERT  (2 * x0) + (21 * x1) + (0 * x2) + (19 * x3) >= 13 ;
+ASSERT  (-26 * x0) + (-6 * x1) + (-23 * x2) + (-8 * x3) < -24 ;
+ASSERT  (-23 * x0) + (22 * x1) + (12 * x2) + (19 * x3) < -27 ;
+ASSERT  (-25 * x0) + (-31 * x1) + (28 * x2) + (14 * x3) < 14 ;
+ASSERT  (-29 * x0) + (1 * x1) + (26 * x2) + (-27 * x3) < -14 ;
+ASSERT  (23 * x0) + (26 * x1) + (-5 * x2) + (6 * x3) <= -19;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-034.cvc b/test/regress/regress0/arith/integers/arith-int-034.cvc
new file mode 100644
index 0000000..ec615a7
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-034.cvc
@@ -0,0 +1,19 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (-20 * x0) + (-5 * x1) + (30 * x2) + (-24 * x3) = 12 ;
+ASSERT  (24 * x0) + (27 * x1) + (18 * x2) + (-5 * x3) = -16 ;
+ASSERT  (14 * x0) + (11 * x1) + (17 * x2) + (12 * x3) = -5 ;
+ASSERT  (-29 * x0) + (-29 * x1) + (-16 * x2) + (14 * x3) = 10 ;
+ASSERT  (30 * x0) + (13 * x1) + (10 * x2) + (24 * x3) = 3 ;
+ASSERT  (-20 * x0) + (29 * x1) + (28 * x2) + (27 * x3) < -21 ;
+ASSERT  (-31 * x0) + (17 * x1) + (14 * x2) + (-14 * x3) <= 14 ;
+ASSERT  (-23 * x0) + (19 * x1) + (28 * x2) + (-2 * x3) > -28 ;
+ASSERT  (-23 * x0) + (23 * x1) + (19 * x2) + (25 * x3) > 13 ;
+ASSERT  (-32 * x0) + (8 * x1) + (-24 * x2) + (10 * x3) >= -5 ;
+ASSERT  (-30 * x0) + (1 * x1) + (-22 * x2) + (12 * x3) >= -30 ;
+ASSERT  (8 * x0) + (28 * x1) + (17 * x2) + (-7 * x3) < -20 ;
+ASSERT  (-28 * x0) + (-8 * x1) + (27 * x2) + (25 * x3) >= 7 ;
+ASSERT  (-15 * x0) + (26 * x1) + (9 * x2) + (15 * x3) > -12 ;
+ASSERT  (-3 * x0) + (15 * x1) + (-6 * x2) + (-31 * x3) < -24 ;
+ASSERT  (-26 * x0) + (22 * x1) + (16 * x2) + (30 * x3) <= -2;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-035.cvc b/test/regress/regress0/arith/integers/arith-int-035.cvc
new file mode 100644
index 0000000..e7dee24
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-035.cvc
@@ -0,0 +1,19 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-3 * x0) + (2 * x1) + (17 * x2) + (-4 * x3) = -17 ;
+ASSERT  (5 * x0) + (-4 * x1) + (22 * x2) + (14 * x3) = -15 ;
+ASSERT (8 * x0) + (23 * x1) + (26 * x2) + (-1 * x3) >= -6 ;
+ASSERT  (-7 * x0) + (4 * x1) + (9 * x2) + (-30 * x3) > -26 ;
+ASSERT  (-14 * x0) + (-31 * x1) + (-18 * x2) + (-5 * x3) <= 6 ;
+ASSERT  (15 * x0) + (26 * x1) + (3 * x2) + (-24 * x3) >= 6 ;
+ASSERT  (13 * x0) + (0 * x1) + (25 * x2) + (-27 * x3) <= -13 ;
+ASSERT  (11 * x0) + (20 * x1) + (-28 * x2) + (8 * x3) < 0 ;
+ASSERT  (-10 * x0) + (13 * x1) + (20 * x2) + (19 * x3) >= 29 ;
+ASSERT  (12 * x0) + (-9 * x1) + (-16 * x2) + (26 * x3) >= -11 ;
+ASSERT  (-2 * x0) + (32 * x1) + (-6 * x2) + (21 * x3) > -31 ;
+ASSERT  (-1 * x0) + (-22 * x1) + (-22 * x2) + (-5 * x3) > 29 ;
+ASSERT  (-8 * x0) + (19 * x1) + (18 * x2) + (32 * x3) >= 12 ;
+ASSERT  (26 * x0) + (16 * x1) + (-25 * x2) + (29 * x3) < 29 ;
+ASSERT  (1 * x0) + (-18 * x1) + (11 * x2) + (-10 * x3) > 10 ;
+ASSERT  (-21 * x0) + (5 * x1) + (-2 * x2) + (-28 * x3) <= -5;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-036.cvc b/test/regress/regress0/arith/integers/arith-int-036.cvc
new file mode 100644
index 0000000..9594f95
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-036.cvc
@@ -0,0 +1,16 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (-9 * x0) + (-21 * x1) + (-25 * x2) + (-1 * x3) = -11 ;
+ASSERT  (31 * x0) + (-18 * x1) + (5 * x2) + (-11 * x3) = 10 ;
+ASSERT  (15 * x0) + (5 * x1) + (5 * x2) + (19 * x3) = -29 ;
+ASSERT  (-9 * x0) + (-23 * x1) + (7 * x2) + (-21 * x3) = 28 ;
+ASSERT  (-24 * x0) + (-22 * x1) + (30 * x2) + (-31 * x3) = -24 ;
+ASSERT  (-29 * x0) + (-21 * x1) + (26 * x2) + (-13 * x3) < -12 ;
+ASSERT  (31 * x0) + (6 * x1) + (-23 * x2) + (30 * x3) < -3 ;
+ASSERT  (21 * x0) + (-7 * x1) + (-4 * x2) + (-25 * x3) <= -17 ;
+ASSERT  (4 * x0) + (24 * x1) + (21 * x2) + (8 * x3) <= 19 ;
+ASSERT  (19 * x0) + (30 * x1) + (14 * x2) + (-23 * x3) > 21 ;
+ASSERT  (30 * x0) + (3 * x1) + (-28 * x2) + (25 * x3) <= -27 ;
+ASSERT  (0 * x0) + (-17 * x1) + (-9 * x2) + (-8 * x3) <= 31 ;
+ASSERT  (-6 * x0) + (-23 * x1) + (21 * x2) + (18 * x3) >= 31;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-037.cvc b/test/regress/regress0/arith/integers/arith-int-037.cvc
new file mode 100644
index 0000000..4d4422d
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-037.cvc
@@ -0,0 +1,16 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (12 * x0) + (14 * x1) + (-22 * x2) + (-6 * x3) = 29 ;
+ASSERT  (-9 * x0) + (14 * x1) + (-23 * x2) + (-31 * x3) = 4 ;
+ASSERT (-10 * x0) + (7 * x1) + (-23 * x2) + (18 * x3) <= -16 ;
+ASSERT  (-12 * x0) + (7 * x1) + (-16 * x2) + (16 * x3) > -31 ;
+ASSERT  (10 * x0) + (11 * x1) + (-17 * x2) + (19 * x3) <= 9 ;
+ASSERT  (-1 * x0) + (-8 * x1) + (-31 * x2) + (16 * x3) > 20 ;
+ASSERT  (-9 * x0) + (18 * x1) + (9 * x2) + (-14 * x3) <= -8 ;
+ASSERT  (-9 * x0) + (27 * x1) + (-22 * x2) + (-16 * x3) > 27 ;
+ASSERT  (-24 * x0) + (-25 * x1) + (-28 * x2) + (29 * x3) <= -9 ;
+ASSERT  (4 * x0) + (13 * x1) + (27 * x2) + (-5 * x3) >= -22 ;
+ASSERT  (-20 * x0) + (-14 * x1) + (21 * x2) + (-28 * x3) <= 17 ;
+ASSERT  (18 * x0) + (-32 * x1) + (-23 * x2) + (-9 * x3) <= -21 ;
+ASSERT  (19 * x0) + (-9 * x1) + (18 * x2) + (-9 * x3) <= -19;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-038.cvc b/test/regress/regress0/arith/integers/arith-int-038.cvc
new file mode 100644
index 0000000..476133b
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-038.cvc
@@ -0,0 +1,16 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-24 * x0) + (25 * x1) + (28 * x2) + (-31 * x3) = -1 ;
+ASSERT (29 * x0) + (17 * x1) + (-2 * x2) + (-6 * x3) <= 4 ;
+ASSERT  (-16 * x0) + (-4 * x1) + (-2 * x2) + (-1 * x3) >= -28 ;
+ASSERT  (4 * x0) + (-26 * x1) + (2 * x2) + (-8 * x3) > 7 ;
+ASSERT  (-17 * x0) + (-6 * x1) + (11 * x2) + (-9 * x3) > -27 ;
+ASSERT  (-25 * x0) + (13 * x1) + (-29 * x2) + (15 * x3) > 2 ;
+ASSERT  (32 * x0) + (-10 * x1) + (15 * x2) + (-25 * x3) < -25 ;
+ASSERT  (-16 * x0) + (-26 * x1) + (16 * x2) + (3 * x3) > -26 ;
+ASSERT  (-14 * x0) + (13 * x1) + (4 * x2) + (-24 * x3) >= -14 ;
+ASSERT  (-5 * x0) + (-21 * x1) + (-7 * x2) + (10 * x3) < 0 ;
+ASSERT  (0 * x0) + (25 * x1) + (31 * x2) + (30 * x3) <= -25 ;
+ASSERT  (-1 * x0) + (2 * x1) + (26 * x2) + (4 * x3) <= 4 ;
+ASSERT  (14 * x0) + (23 * x1) + (18 * x2) + (-18 * x3) > 19;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-039.cvc b/test/regress/regress0/arith/integers/arith-int-039.cvc
new file mode 100644
index 0000000..9e9235a
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-039.cvc
@@ -0,0 +1,16 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (22 * x0) + (21 * x1) + (-18 * x2) + (21 * x3) = 30 ;
+ASSERT  (-31 * x0) + (22 * x1) + (-20 * x2) + (18 * x3) = -32 ;
+ASSERT  (12 * x0) + (18 * x1) + (29 * x2) + (17 * x3) = 0 ;
+ASSERT  (-8 * x0) + (-10 * x1) + (-27 * x2) + (30 * x3) = 32 ;
+ASSERT  (-21 * x0) + (-2 * x1) + (20 * x2) + (-7 * x3) <= -27 ;
+ASSERT  (-7 * x0) + (-22 * x1) + (8 * x2) + (20 * x3) > -20 ;
+ASSERT  (-10 * x0) + (1 * x1) + (21 * x2) + (-6 * x3) > 10 ;
+ASSERT  (-21 * x0) + (-24 * x1) + (-15 * x2) + (4 * x3) <= 11 ;
+ASSERT  (-32 * x0) + (10 * x1) + (-21 * x2) + (-17 * x3) <= 5 ;
+ASSERT  (7 * x0) + (-19 * x1) + (28 * x2) + (27 * x3) <= 14 ;
+ASSERT  (-32 * x0) + (5 * x1) + (26 * x2) + (-23 * x3) < -23 ;
+ASSERT  (-28 * x0) + (5 * x1) + (22 * x2) + (25 * x3) < 6 ;
+ASSERT  (4 * x0) + (17 * x1) + (11 * x2) + (26 * x3) >= 20;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-040.cvc b/test/regress/regress0/arith/integers/arith-int-040.cvc
new file mode 100644
index 0000000..6850234
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-040.cvc
@@ -0,0 +1,16 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (-1 * x0) + (-24 * x1) + (3 * x2) + (-8 * x3) > -5 ;
+ASSERT  (29 * x0) + (17 * x1) + (-26 * x2) + (20 * x3) > 11 ;
+ASSERT  (18 * x0) + (15 * x1) + (-27 * x2) + (8 * x3) > -11 ;
+ASSERT  (-14 * x0) + (4 * x1) + (27 * x2) + (-9 * x3) < -13 ;
+ASSERT  (24 * x0) + (11 * x1) + (17 * x2) + (-15 * x3) > 5 ;
+ASSERT  (-28 * x0) + (-1 * x1) + (10 * x2) + (-12 * x3) > -14 ;
+ASSERT  (-11 * x0) + (-4 * x1) + (7 * x2) + (-32 * x3) >= 31 ;
+ASSERT  (18 * x0) + (32 * x1) + (-24 * x2) + (-19 * x3) <= -6 ;
+ASSERT  (-15 * x0) + (23 * x1) + (-19 * x2) + (-12 * x3) < 2 ;
+ASSERT  (-21 * x0) + (-8 * x1) + (-30 * x2) + (31 * x3) >= -29 ;
+ASSERT  (5 * x0) + (-24 * x1) + (-21 * x2) + (-10 * x3) >= -8 ;
+ASSERT  (-31 * x0) + (-26 * x1) + (13 * x2) + (-7 * x3) <= -32 ;
+ASSERT  (-18 * x0) + (-11 * x1) + (9 * x2) + (6 * x3) >= 8;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-041.cvc b/test/regress/regress0/arith/integers/arith-int-041.cvc
new file mode 100644
index 0000000..a0c2dc0
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-041.cvc
@@ -0,0 +1,9 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (-31 * x0) + (8 * x1) + (16 * x2) + (5 * x3) >= 1 ;
+ASSERT  (-30 * x0) + (13 * x1) + (-17 * x2) + (13 * x3) < -24 ;
+ASSERT  (-16 * x0) + (-11 * x1) + (-32 * x2) + (-18 * x3) > -29 ;
+ASSERT  (32 * x0) + (-2 * x1) + (27 * x2) + (0 * x3) >= -1 ;
+ASSERT  (12 * x0) + (-17 * x1) + (21 * x2) + (-3 * x3) <= 1 ;
+ASSERT  (-26 * x0) + (29 * x1) + (-13 * x2) + (15 * x3) <= 2;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-042.cvc b/test/regress/regress0/arith/integers/arith-int-042.cvc
new file mode 100644
index 0000000..c382316
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-042.cvc
@@ -0,0 +1,9 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-9 * x0) + (25 * x1) + (0 * x2) + (13 * x3) = 17 ;
+ASSERT  (-6 * x0) + (32 * x1) + (2 * x2) + (-32 * x3) = -5 ;
+ASSERT (19 * x0) + (25 * x1) + (-32 * x2) + (-29 * x3) <= 14 ;
+ASSERT  (6 * x0) + (22 * x1) + (-24 * x2) + (-6 * x3) < -21 ;
+ASSERT  (-18 * x0) + (-21 * x1) + (-29 * x2) + (12 * x3) > 17 ;
+ASSERT  (-25 * x0) + (-5 * x1) + (-22 * x2) + (-7 * x3) > -21;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-042.min.cvc b/test/regress/regress0/arith/integers/arith-int-042.min.cvc
new file mode 100644
index 0000000..77571e5
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-042.min.cvc
@@ -0,0 +1,4 @@
+% EXPECT: valid
+x1: INT;
+x0: INT;
+QUERY NOT (((x0 * 6) + (x1 * 32)) = 1);
diff --git a/test/regress/regress0/arith/integers/arith-int-043.cvc b/test/regress/regress0/arith/integers/arith-int-043.cvc
new file mode 100644
index 0000000..7efea85
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-043.cvc
@@ -0,0 +1,9 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT  (-21 * x0) + (-23 * x1) + (29 * x2) + (-4 * x3) = 25 ;
+ASSERT (20 * x0) + (-19 * x1) + (3 * x2) + (-1 * x3) <= -8 ;
+ASSERT  (2 * x0) + (-22 * x1) + (-30 * x2) + (-9 * x3) >= 17 ;
+ASSERT  (21 * x0) + (5 * x1) + (-13 * x2) + (0 * x3) <= 18 ;
+ASSERT  (9 * x0) + (-5 * x1) + (30 * x2) + (17 * x3) > -12 ;
+ASSERT  (-2 * x0) + (-27 * x1) + (-5 * x2) + (-23 * x3) < 24;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-044.cvc b/test/regress/regress0/arith/integers/arith-int-044.cvc
new file mode 100644
index 0000000..f933b01
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-044.cvc
@@ -0,0 +1,10 @@
+% EXPECT: valid
+%%%% down from 24, up from 6, up from 39
+x0, x1, x2, x3 : INT;
+ASSERT  (-30 * x0) + (18 * x1) + (17 * x2) + (3 * x3) = 0;
+ASSERT (-25 * x0) + (-16 * x1) + (17 * x2) + (26 * x3) < 23 ;
+ASSERT  (-27 * x0) + (9 * x1) + (7 * x2) + (-24 * x3) < -27 ;
+ASSERT  (14 * x0) + (-27 * x1) + (-10 * x2) + (16 * x3) >= -23 ;
+ASSERT  (14 * x0) + (-27 * x1) + (-3 * x2) + (2 * x3) > -9 ;
+ASSERT  (-19 * x0) + (-9 * x1) + (-3 * x2) + (29 * x3) <= 5 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-045.cvc b/test/regress/regress0/arith/integers/arith-int-045.cvc
new file mode 100644
index 0000000..ca1a12b
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-045.cvc
@@ -0,0 +1,9 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-22 * x0) + (-5 * x1) + (-5 * x2) + (25 * x3) = 22 ;
+ASSERT (2 * x0) + (-25 * x1) + (4 * x2) + (-21 * x3) >= 0 ;
+ASSERT  (30 * x0) + (6 * x1) + (-17 * x2) + (-6 * x3) > 8 ;
+ASSERT  (28 * x0) + (-17 * x1) + (26 * x2) + (-1 * x3) >= 17 ;
+ASSERT  (2 * x0) + (-32 * x1) + (30 * x2) + (10 * x3) < -23 ;
+ASSERT  (22 * x0) + (-18 * x1) + (7 * x2) + (28 * x3) < -26;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-046.cvc b/test/regress/regress0/arith/integers/arith-int-046.cvc
new file mode 100644
index 0000000..d4d206c
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-046.cvc
@@ -0,0 +1,6 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (2 * x0) + (-6 * x1) + (14 * x2) + (-24 * x3) > 4 ;
+ASSERT  (-13 * x0) + (-2 * x1) + (-9 * x2) + (-7 * x3) >= 29 ;
+ASSERT  (-11 * x0) + (28 * x1) + (-20 * x2) + (-2 * x3) >= 31;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-047.cvc b/test/regress/regress0/arith/integers/arith-int-047.cvc
new file mode 100644
index 0000000..0763e5d
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-047.cvc
@@ -0,0 +1,6 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT  (-14 * x0) + (27 * x1) + (10 * x2) + (1 * x3) = 10;
+ASSERT (-29 * x0) + (-26 * x1) + (-16 * x2) + (17 * x3) >= 16 ;
+ASSERT  (-3 * x0) + (-2 * x1) + (26 * x2) + (30 * x3) < -27 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-048.cvc b/test/regress/regress0/arith/integers/arith-int-048.cvc
new file mode 100644
index 0000000..e7c0533
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-048.cvc
@@ -0,0 +1,6 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (-13 * x0) + (-11 * x1) + (-14 * x2) + (21 * x3) = 6 ;
+ASSERT  (7 * x0) + (5 * x1) + (13 * x2) + (21 * x3) <= 27 ;
+ASSERT  (15 * x0) + (-11 * x1) + (-19 * x2) + (-13 * x3) < 5;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-049.cvc b/test/regress/regress0/arith/integers/arith-int-049.cvc
new file mode 100644
index 0000000..8eabc78
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-049.cvc
@@ -0,0 +1,6 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (-15 * x0) + (-20 * x1) + (-32 * x2) + (-16 * x3) = -19 ;
+ASSERT  (24 * x0) + (23 * x1) + (22 * x2) + (30 * x3) >= 19 ;
+ASSERT  (14 * x0) + (-6 * x1) + (28 * x2) + (-22 * x3) < -16;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-050.cvc b/test/regress/regress0/arith/integers/arith-int-050.cvc
new file mode 100644
index 0000000..f0ba939
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-050.cvc
@@ -0,0 +1,6 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (-20 * x0) + (-19 * x1) + (6 * x2) + (32 * x3) > 16 ;
+ASSERT  (-1 * x0) + (-30 * x1) + (15 * x2) + (7 * x3) < -10 ;
+ASSERT  (-13 * x0) + (24 * x1) + (27 * x2) + (20 * x3) < -5;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-051.cvc b/test/regress/regress0/arith/integers/arith-int-051.cvc
new file mode 100644
index 0000000..9a24974
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-051.cvc
@@ -0,0 +1,12 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (-13 * x0) + (7 * x1) + (-3 * x2) + (9 * x3) = -3 ;
+ASSERT  (17 * x0) + (-22 * x1) + (-15 * x2) + (-21 * x3) >= 9 ;
+ASSERT  (-9 * x0) + (12 * x1) + (23 * x2) + (-24 * x3) >= -30 ;
+ASSERT  (-13 * x0) + (-3 * x1) + (-15 * x2) + (32 * x3) <= 26 ;
+ASSERT  (-27 * x0) + (9 * x1) + (-21 * x2) + (-5 * x3) < -9 ;
+ASSERT  (22 * x0) + (24 * x1) + (-10 * x2) + (-6 * x3) > -1 ;
+ASSERT  (20 * x0) + (-24 * x1) + (29 * x2) + (-21 * x3) <= 29 ;
+ASSERT  (25 * x0) + (11 * x1) + (8 * x2) + (-5 * x3) < -29 ;
+ASSERT  (-12 * x0) + (24 * x1) + (4 * x2) + (27 * x3) < 31;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-052.cvc b/test/regress/regress0/arith/integers/arith-int-052.cvc
new file mode 100644
index 0000000..83fdc89
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-052.cvc
@@ -0,0 +1,12 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-25 * x0) + (-23 * x1) + (11 * x2) + (10 * x3) = 7 ;
+ASSERT (32 * x0) + (-15 * x1) + (-1 * x2) + (29 * x3) > -25 ;
+ASSERT  (29 * x0) + (-8 * x1) + (22 * x2) + (20 * x3) < 14 ;
+ASSERT  (31 * x0) + (-16 * x1) + (-17 * x2) + (-21 * x3) >= 32 ;
+ASSERT  (-24 * x0) + (-29 * x1) + (9 * x2) + (14 * x3) <= -4 ;
+ASSERT  (13 * x0) + (13 * x1) + (14 * x2) + (5 * x3) <= 25 ;
+ASSERT  (5 * x0) + (12 * x1) + (-5 * x2) + (-9 * x3) >= -28 ;
+ASSERT  (27 * x0) + (19 * x1) + (6 * x2) + (25 * x3) >= -12 ;
+ASSERT  (24 * x0) + (-26 * x1) + (2 * x2) + (0 * x3) >= -25;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-053.cvc b/test/regress/regress0/arith/integers/arith-int-053.cvc
new file mode 100644
index 0000000..fa38fa3
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-053.cvc
@@ -0,0 +1,12 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-21 * x0) + (21 * x1) + (23 * x2) + (-20 * x3) = -8 ;
+ASSERT  (-31 * x0) + (-15 * x1) + (-23 * x2) + (29 * x3) = 17;
+ASSERT (28 * x0) + (30 * x1) + (26 * x2) + (2 * x3) < 8 ;
+ASSERT  (17 * x0) + (-11 * x1) + (6 * x2) + (8 * x3) > 11 ;
+ASSERT  (20 * x0) + (-14 * x1) + (16 * x2) + (-3 * x3) < 9 ;
+ASSERT  (-11 * x0) + (2 * x1) + (4 * x2) + (-4 * x3) < -21 ;
+ASSERT  (25 * x0) + (6 * x1) + (-22 * x2) + (8 * x3) <= 7 ;
+ASSERT  (-8 * x0) + (9 * x1) + (-13 * x2) + (27 * x3) >= 0 ;
+ASSERT  (-16 * x0) + (-8 * x1) + (23 * x2) + (25 * x3) >= -13 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-054.cvc b/test/regress/regress0/arith/integers/arith-int-054.cvc
new file mode 100644
index 0000000..9b00669
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-054.cvc
@@ -0,0 +1,12 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-31 * x0) + (-29 * x1) + (6 * x2) + (8 * x3) = -10 ;
+ASSERT  (0 * x0) + (8 * x1) + (-20 * x2) + (12 * x3) = 16 ;
+ASSERT  (19 * x0) + (-30 * x1) + (8 * x2) + (-4 * x3) = -17 ;
+ASSERT  (-10 * x0) + (26 * x1) + (11 * x2) + (-31 * x3) = -26;
+ASSERT (-22 * x0) + (15 * x1) + (14 * x2) + (3 * x3) <= -3 ;
+ASSERT  (-15 * x0) + (7 * x1) + (29 * x2) + (16 * x3) >= -6 ;
+ASSERT  (-20 * x0) + (20 * x1) + (31 * x2) + (-24 * x3) <= 14 ;
+ASSERT  (2 * x0) + (31 * x1) + (15 * x2) + (-1 * x3) >= -6 ;
+ASSERT  (-30 * x0) + (-11 * x1) + (26 * x2) + (6 * x3) >= -30 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-055.cvc b/test/regress/regress0/arith/integers/arith-int-055.cvc
new file mode 100644
index 0000000..9729fb5
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-055.cvc
@@ -0,0 +1,12 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-21 * x0) + (-4 * x1) + (-28 * x2) + (-7 * x3) = -23 ;
+ASSERT  (-7 * x0) + (-21 * x1) + (29 * x2) + (11 * x3) = 29 ;
+ASSERT (-26 * x0) + (-7 * x1) + (-25 * x2) + (-19 * x3) < -4 ;
+ASSERT  (4 * x0) + (14 * x1) + (-16 * x2) + (-32 * x3) >= -16 ;
+ASSERT  (10 * x0) + (-9 * x1) + (20 * x2) + (-27 * x3) <= 31 ;
+ASSERT  (29 * x0) + (16 * x1) + (25 * x2) + (-1 * x3) < -26 ;
+ASSERT  (-29 * x0) + (1 * x1) + (11 * x2) + (32 * x3) < 12 ;
+ASSERT  (-4 * x0) + (-22 * x1) + (0 * x2) + (-29 * x3) < 31 ;
+ASSERT  (12 * x0) + (-8 * x1) + (-17 * x2) + (-8 * x3) > 8;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-056.cvc b/test/regress/regress0/arith/integers/arith-int-056.cvc
new file mode 100644
index 0000000..e1c3ee1
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-056.cvc
@@ -0,0 +1,15 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-25 * x0) + (23 * x1) + (29 * x2) + (21 * x3) = -2 ;
+ASSERT  (1 * x0) + (10 * x1) + (-32 * x2) + (-17 * x3) = -2 ;
+ASSERT  (3 * x0) + (-32 * x1) + (-23 * x2) + (13 * x3) = 16 ;
+ASSERT (25 * x0) + (-14 * x1) + (-17 * x2) + (16 * x3) <= 24 ;
+ASSERT  (1 * x0) + (-21 * x1) + (2 * x2) + (2 * x3) >= 15 ;
+ASSERT  (24 * x0) + (9 * x1) + (23 * x2) + (-2 * x3) >= -26 ;
+%%ASSERT  (-25 * x0) + (26 * x1) + (-3 * x2) + (-26 * x3) >= -20 ;
+%%ASSERT  (4 * x0) + (23 * x1) + (-24 * x2) + (7 * x3) <= -18 ;
+%%ASSERT  (-16 * x0) + (-24 * x1) + (26 * x2) + (1 * x3) > 15 ;
+%%%%ASSERT  (1 * x0) + (9 * x1) + (-18 * x2) + (11 * x3) > -3 ;
+%%ASSERT  (-9 * x0) + (20 * x1) + (15 * x2) + (4 * x3) < -17 ;
+%%ASSERT  (25 * x0) + (-22 * x1) + (-26 * x2) + (-21 * x3) > 17;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-057.cvc b/test/regress/regress0/arith/integers/arith-int-057.cvc
new file mode 100644
index 0000000..4e7b939
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-057.cvc
@@ -0,0 +1,15 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-8 * x0) + (10 * x1) + (-25 * x2) + (-10 * x3) = -18 ;
+ASSERT  (27 * x0) + (5 * x1) + (8 * x2) + (13 * x3) = -8;
+ASSERT (2 * x0) + (22 * x1) + (-13 * x2) + (16 * x3) <= 17 ;
+ASSERT  (18 * x0) + (18 * x1) + (15 * x2) + (-17 * x3) < -13 ;
+ASSERT  (-24 * x0) + (-8 * x1) + (31 * x2) + (-25 * x3) > 23 ;
+ASSERT  (-13 * x0) + (-22 * x1) + (11 * x2) + (28 * x3) >= -6 ;
+ASSERT  (20 * x0) + (-26 * x1) + (-20 * x2) + (-7 * x3) < -5 ;
+ASSERT  (-23 * x0) + (8 * x1) + (28 * x2) + (17 * x3) > 23 ;
+ASSERT  (32 * x0) + (31 * x1) + (-26 * x2) + (29 * x3) <= -1 ;
+ASSERT  (-2 * x0) + (-11 * x1) + (15 * x2) + (17 * x3) > -27 ;
+ASSERT  (-13 * x0) + (-30 * x1) + (-25 * x2) + (-18 * x3) <= 24 ;
+ASSERT  (23 * x0) + (-4 * x1) + (26 * x2) + (32 * x3) >= 23 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-058.cvc b/test/regress/regress0/arith/integers/arith-int-058.cvc
new file mode 100644
index 0000000..4d964f1
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-058.cvc
@@ -0,0 +1,15 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-15 * x0) + (3 * x1) + (31 * x2) + (2 * x3) = -18 ;
+ASSERT  (-25 * x0) + (-10 * x1) + (15 * x2) + (29 * x3) = -18 ;
+ASSERT  (-17 * x0) + (31 * x1) + (-11 * x2) + (-29 * x3) = -2 ;
+ASSERT (18 * x0) + (11 * x1) + (13 * x2) + (-16 * x3) >= 5 ;
+ASSERT  (-28 * x0) + (-30 * x1) + (13 * x2) + (-20 * x3) <= -19 ;
+ASSERT  (-10 * x0) + (-20 * x1) + (-13 * x2) + (-4 * x3) < 3 ;
+ASSERT  (-30 * x0) + (-5 * x1) + (-15 * x2) + (-1 * x3) > 19 ;
+ASSERT  (-8 * x0) + (28 * x1) + (17 * x2) + (23 * x3) <= 30 ;
+ASSERT  (-28 * x0) + (-16 * x1) + (-19 * x2) + (-23 * x3) >= 9 ;
+ASSERT  (-8 * x0) + (-15 * x1) + (-19 * x2) + (29 * x3) > -28 ;
+ASSERT  (-27 * x0) + (-12 * x1) + (-2 * x2) + (-29 * x3) >= -5 ;
+ASSERT  (32 * x0) + (-16 * x1) + (29 * x2) + (-12 * x3) < 26;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-059.cvc b/test/regress/regress0/arith/integers/arith-int-059.cvc
new file mode 100644
index 0000000..841d9c8
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-059.cvc
@@ -0,0 +1,15 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (31 * x0) + (-19 * x1) + (0 * x2) + (32 * x3) = -14 ;
+ASSERT  (12 * x0) + (-25 * x1) + (-32 * x2) + (-18 * x3) = 18 ;
+ASSERT  (-6 * x0) + (-21 * x1) + (-11 * x2) + (-10 * x3) = 11 ;
+ASSERT  (22 * x0) + (-7 * x1) + (2 * x2) + (-16 * x3) = 16;
+ASSERT  (15 * x0) + (-14 * x1) + (29 * x2) + (24 * x3) >= 14 ;
+ASSERT  (-26 * x0) + (-6 * x1) + (-13 * x2) + (25 * x3) < -4 ;
+ASSERT  (-24 * x0) + (-22 * x1) + (-21 * x2) + (-6 * x3) > -21 ;
+ASSERT  (17 * x0) + (-21 * x1) + (25 * x2) + (-13 * x3) >= 16 ;
+ASSERT  (14 * x0) + (-25 * x1) + (-22 * x2) + (18 * x3) >= -30 ;
+ASSERT  (-27 * x0) + (8 * x1) + (-12 * x2) + (26 * x3) >= 15 ;
+ASSERT  (-31 * x0) + (2 * x1) + (19 * x2) + (-11 * x3) >= -27 ;
+ASSERT  (32 * x0) + (-29 * x1) + (9 * x2) + (-4 * x3) < 3 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-060.cvc b/test/regress/regress0/arith/integers/arith-int-060.cvc
new file mode 100644
index 0000000..227cb49
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-060.cvc
@@ -0,0 +1,15 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (3 * x0) + (8 * x1) + (26 * x2) + (-17 * x3) = 31 ;
+ASSERT  (-14 * x0) + (25 * x1) + (4 * x2) + (-8 * x3) = 15 ;
+ASSERT  (-21 * x0) + (26 * x1) + (-10 * x2) + (-28 * x3) = 5;
+ASSERT (2 * x0) + (-15 * x1) + (12 * x2) + (22 * x3) < -22 ;
+ASSERT  (10 * x0) + (24 * x1) + (11 * x2) + (-17 * x3) < 17 ;
+ASSERT  (26 * x0) + (32 * x1) + (-17 * x2) + (-3 * x3) >= 20 ;
+ASSERT  (11 * x0) + (26 * x1) + (-23 * x2) + (22 * x3) <= 32 ;
+ASSERT  (-19 * x0) + (22 * x1) + (-21 * x2) + (-28 * x3) <= -5 ;
+ASSERT  (-5 * x0) + (-18 * x1) + (10 * x2) + (-27 * x3) < -26 ;
+ASSERT  (21 * x0) + (-26 * x1) + (25 * x2) + (-13 * x3) < 15 ;
+ASSERT  (22 * x0) + (-2 * x1) + (3 * x2) + (-21 * x3) < 7 ;
+ASSERT  (20 * x0) + (-3 * x1) + (27 * x2) + (-21 * x3) < -18 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-061.cvc b/test/regress/regress0/arith/integers/arith-int-061.cvc
new file mode 100644
index 0000000..4a3cc28
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-061.cvc
@@ -0,0 +1,23 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (16 * x0) + (20 * x1) + (-8 * x2) + (-27 * x3) = -2 ;
+ASSERT  (15 * x0) + (9 * x1) + (-1 * x2) + (4 * x3) = 1 ;
+ASSERT  (-25 * x0) + (19 * x1) + (-26 * x2) + (-20 * x3) = 22 ;
+ASSERT  (-11 * x0) + (28 * x1) + (-16 * x2) + (-15 * x3) = 15 ;
+ASSERT  (-11 * x0) + (-25 * x1) + (-16 * x2) + (25 * x3) = -3 ;
+ASSERT  (-15 * x0) + (-25 * x1) + (11 * x2) + (-24 * x3) = 29 ;
+ASSERT  (-12 * x0) + (-32 * x1) + (-28 * x2) + (-27 * x3) = -7 ;
+ASSERT  (16 * x0) + (5 * x1) + (10 * x2) + (-18 * x3) = 18 ;
+ASSERT  (-2 * x0) + (5 * x1) + (30 * x2) + (29 * x3) = -29 ;
+ASSERT  (-14 * x0) + (-20 * x1) + (21 * x2) + (1 * x3) = 31 ;
+ASSERT  (15 * x0) + (-7 * x1) + (-3 * x2) + (-24 * x3) > 3 ;
+ASSERT  (-16 * x0) + (-30 * x1) + (-31 * x2) + (16 * x3) > -9 ;
+ASSERT  (12 * x0) + (27 * x1) + (-11 * x2) + (-10 * x3) > -6 ;
+ASSERT  (0 * x0) + (29 * x1) + (32 * x2) + (9 * x3) <= -24 ;
+ASSERT  (11 * x0) + (-7 * x1) + (24 * x2) + (-30 * x3) >= 8 ;
+ASSERT  (1 * x0) + (25 * x1) + (29 * x2) + (15 * x3) <= -13 ;
+ASSERT  (-25 * x0) + (31 * x1) + (-32 * x2) + (-1 * x3) <= 9 ;
+ASSERT  (-22 * x0) + (-23 * x1) + (-4 * x2) + (-12 * x3) > 32 ;
+ASSERT  (22 * x0) + (-1 * x1) + (27 * x2) + (-22 * x3) > 20 ;
+ASSERT  (-20 * x0) + (-21 * x1) + (1 * x2) + (-32 * x3) >= 16;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-062.cvc b/test/regress/regress0/arith/integers/arith-int-062.cvc
new file mode 100644
index 0000000..f9a3156
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-062.cvc
@@ -0,0 +1,23 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (11 * x0) + (22 * x1) + (19 * x2) + (-8 * x3) = 12 ;
+ASSERT  (23 * x0) + (-6 * x1) + (-5 * x2) + (26 * x3) = 0 ;
+ASSERT  (1 * x0) + (-23 * x1) + (22 * x2) + (10 * x3) = -18 ;
+ASSERT  (-13 * x0) + (-17 * x1) + (-8 * x2) + (-16 * x3) = 16 ;
+ASSERT  (24 * x0) + (-4 * x1) + (-26 * x2) + (9 * x3) = -26 ;
+ASSERT  (24 * x0) + (23 * x1) + (17 * x2) + (-10 * x3) >= 5 ;
+ASSERT  (-12 * x0) + (-12 * x1) + (-13 * x2) + (-22 * x3) <= 9 ;
+ASSERT  (-7 * x0) + (17 * x1) + (-24 * x2) + (-8 * x3) <= -31 ;
+ASSERT  (-28 * x0) + (-10 * x1) + (3 * x2) + (-23 * x3) <= -19 ;
+ASSERT  (12 * x0) + (-16 * x1) + (27 * x2) + (-28 * x3) > -27 ;
+ASSERT  (-15 * x0) + (-24 * x1) + (12 * x2) + (21 * x3) < 21 ;
+ASSERT  (6 * x0) + (31 * x1) + (5 * x2) + (-5 * x3) >= 10 ;
+ASSERT  (-7 * x0) + (-20 * x1) + (-9 * x2) + (-32 * x3) >= 7 ;
+ASSERT  (3 * x0) + (24 * x1) + (-18 * x2) + (-9 * x3) < -30 ;
+ASSERT  (-14 * x0) + (22 * x1) + (22 * x2) + (-22 * x3) < -16 ;
+ASSERT  (1 * x0) + (4 * x1) + (10 * x2) + (28 * x3) > -31 ;
+ASSERT  (-14 * x0) + (-15 * x1) + (-8 * x2) + (2 * x3) >= 3 ;
+ASSERT  (13 * x0) + (-27 * x1) + (-14 * x2) + (28 * x3) < 28 ;
+ASSERT  (26 * x0) + (-12 * x1) + (-21 * x2) + (-16 * x3) < -26 ;
+ASSERT  (-6 * x0) + (-19 * x1) + (-8 * x2) + (18 * x3) >= 27;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-063.cvc b/test/regress/regress0/arith/integers/arith-int-063.cvc
new file mode 100644
index 0000000..d881046
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-063.cvc
@@ -0,0 +1,23 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (20 * x0) + (-10 * x1) + (-10 * x2) + (26 * x3) = -9 ;
+ASSERT  (10 * x0) + (0 * x1) + (16 * x2) + (7 * x3) = 7 ;
+ASSERT  (6 * x0) + (-10 * x1) + (4 * x2) + (23 * x3) = 10;
+ASSERT (-8 * x0) + (12 * x1) + (-19 * x2) + (-17 * x3) >= 21 ;
+ASSERT  (-20 * x0) + (6 * x1) + (-12 * x2) + (-31 * x3) > -31 ;
+ASSERT  (32 * x0) + (-6 * x1) + (-14 * x2) + (-32 * x3) >= 13 ;
+ASSERT  (29 * x0) + (12 * x1) + (17 * x2) + (9 * x3) > 32 ;
+ASSERT  (1 * x0) + (21 * x1) + (12 * x2) + (23 * x3) <= 14 ;
+ASSERT  (-12 * x0) + (-9 * x1) + (26 * x2) + (26 * x3) < 3 ;
+ASSERT  (-8 * x0) + (27 * x1) + (29 * x2) + (-10 * x3) >= 22 ;
+ASSERT  (-15 * x0) + (29 * x1) + (29 * x2) + (17 * x3) <= 22 ;
+ASSERT  (-4 * x0) + (0 * x1) + (1 * x2) + (-24 * x3) < -24 ;
+ASSERT  (25 * x0) + (17 * x1) + (31 * x2) + (-28 * x3) >= -12 ;
+ASSERT  (32 * x0) + (8 * x1) + (-3 * x2) + (19 * x3) > -19 ;
+ASSERT  (-27 * x0) + (-18 * x1) + (18 * x2) + (22 * x3) > 26 ;
+ASSERT  (29 * x0) + (29 * x1) + (4 * x2) + (-6 * x3) >= 8 ;
+ASSERT  (-12 * x0) + (17 * x1) + (-22 * x2) + (1 * x3) < 30 ;
+ASSERT  (-24 * x0) + (16 * x1) + (-26 * x2) + (-27 * x3) > 29 ;
+ASSERT  (9 * x0) + (15 * x1) + (-28 * x2) + (0 * x3) > -2 ;
+ASSERT  (-5 * x0) + (30 * x1) + (-21 * x2) + (-6 * x3) >= 12 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-064.cvc b/test/regress/regress0/arith/integers/arith-int-064.cvc
new file mode 100644
index 0000000..21ca822
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-064.cvc
@@ -0,0 +1,23 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-8 * x0) + (-11 * x1) + (27 * x2) + (4 * x3) = 6 ;
+ASSERT  (32 * x0) + (27 * x1) + (31 * x2) + (-13 * x3) = 21 ;
+ASSERT (-6 * x0) + (17 * x1) + (-20 * x2) + (11 * x3) < -5 ;
+ASSERT  (15 * x0) + (-15 * x1) + (-13 * x2) + (-21 * x3) < 27 ;
+ASSERT  (-24 * x0) + (-22 * x1) + (5 * x2) + (22 * x3) < 23 ;
+ASSERT  (27 * x0) + (23 * x1) + (-19 * x2) + (20 * x3) >= -8 ;
+ASSERT  (27 * x0) + (-27 * x1) + (23 * x2) + (17 * x3) < -5 ;
+ASSERT  (-11 * x0) + (-8 * x1) + (14 * x2) + (-10 * x3) <= 1 ;
+ASSERT  (12 * x0) + (7 * x1) + (-26 * x2) + (-28 * x3) >= -7 ;
+ASSERT  (25 * x0) + (-25 * x1) + (5 * x2) + (32 * x3) > -10 ;
+ASSERT  (-29 * x0) + (-24 * x1) + (26 * x2) + (-31 * x3) < -16 ;
+ASSERT  (10 * x0) + (29 * x1) + (9 * x2) + (23 * x3) < 13 ;
+ASSERT  (-26 * x0) + (6 * x1) + (-14 * x2) + (-21 * x3) > -15 ;
+ASSERT  (24 * x0) + (-14 * x1) + (-32 * x2) + (22 * x3) > -31 ;
+ASSERT  (-31 * x0) + (-16 * x1) + (-9 * x2) + (-32 * x3) > -19 ;
+ASSERT  (-1 * x0) + (17 * x1) + (26 * x2) + (-16 * x3) > -27 ;
+ASSERT  (10 * x0) + (-11 * x1) + (-20 * x2) + (-25 * x3) < -30 ;
+ASSERT  (-16 * x0) + (9 * x1) + (-10 * x2) + (-8 * x3) < -9 ;
+ASSERT  (19 * x0) + (10 * x1) + (18 * x2) + (7 * x3) < -30 ;
+ASSERT  (20 * x0) + (-25 * x1) + (-18 * x2) + (-2 * x3) <= -11;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-065.cvc b/test/regress/regress0/arith/integers/arith-int-065.cvc
new file mode 100644
index 0000000..b1b9e1b
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-065.cvc
@@ -0,0 +1,23 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (3 * x0) + (-21 * x1) + (-3 * x2) + (6 * x3) = -18 ;
+ASSERT  (-15 * x0) + (19 * x1) + (-21 * x2) + (-29 * x3) = -8 ;
+ASSERT  (32 * x0) + (-2 * x1) + (14 * x2) + (5 * x3) = -15 ;
+ASSERT  (-16 * x0) + (22 * x1) + (0 * x2) + (-26 * x3) >= 18 ;
+ASSERT  (11 * x0) + (-19 * x1) + (10 * x2) + (26 * x3) >= -20 ;
+ASSERT  (-25 * x0) + (-24 * x1) + (12 * x2) + (4 * x3) >= -14 ;
+ASSERT  (-20 * x0) + (-10 * x1) + (21 * x2) + (23 * x3) >= 28 ;
+ASSERT  (6 * x0) + (-31 * x1) + (11 * x2) + (-3 * x3) <= 4 ;
+ASSERT  (2 * x0) + (11 * x1) + (-13 * x2) + (-16 * x3) >= 23 ;
+ASSERT  (-6 * x0) + (-24 * x1) + (24 * x2) + (7 * x3) <= 14 ;
+ASSERT  (0 * x0) + (3 * x1) + (-14 * x2) + (-19 * x3) >= 15 ;
+ASSERT  (-31 * x0) + (-27 * x1) + (-32 * x2) + (-28 * x3) <= -15 ;
+ASSERT  (-11 * x0) + (3 * x1) + (-6 * x2) + (-5 * x3) < -31 ;
+ASSERT  (-2 * x0) + (-21 * x1) + (2 * x2) + (28 * x3) >= 7 ;
+ASSERT  (-12 * x0) + (19 * x1) + (-17 * x2) + (-14 * x3) > 11 ;
+ASSERT  (32 * x0) + (-29 * x1) + (-12 * x2) + (24 * x3) < -9 ;
+ASSERT  (-19 * x0) + (1 * x1) + (8 * x2) + (4 * x3) <= 3 ;
+ASSERT  (13 * x0) + (17 * x1) + (22 * x2) + (13 * x3) <= -25 ;
+ASSERT  (2 * x0) + (-4 * x1) + (-3 * x2) + (19 * x3) <= -12 ;
+ASSERT  (-16 * x0) + (-20 * x1) + (21 * x2) + (-30 * x3) <= 2;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-066.cvc b/test/regress/regress0/arith/integers/arith-int-066.cvc
new file mode 100644
index 0000000..9532b41
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-066.cvc
@@ -0,0 +1,17 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (28 * x0) + (-8 * x1) + (32 * x2) + (-3 * x3) = -18 ;
+ASSERT (-4 * x0) + (5 * x1) + (-2 * x2) + (-17 * x3) > 19 ;
+ASSERT  (-9 * x0) + (14 * x1) + (-16 * x2) + (15 * x3) > 18 ;
+ASSERT  (-28 * x0) + (-25 * x1) + (-10 * x2) + (-10 * x3) < -10 ;
+ASSERT  (19 * x0) + (-4 * x1) + (11 * x2) + (22 * x3) <= -6 ;
+ASSERT  (2 * x0) + (32 * x1) + (-16 * x2) + (-29 * x3) > 6 ;
+ASSERT  (-7 * x0) + (9 * x1) + (-25 * x2) + (6 * x3) <= 5 ;
+ASSERT  (4 * x0) + (-18 * x1) + (-21 * x2) + (12 * x3) >= -32 ;
+ASSERT  (-27 * x0) + (11 * x1) + (-3 * x2) + (-6 * x3) < 1 ;
+ASSERT  (10 * x0) + (13 * x1) + (11 * x2) + (28 * x3) > -15 ;
+ASSERT  (-1 * x0) + (-4 * x1) + (30 * x2) + (6 * x3) > 9 ;
+ASSERT  (19 * x0) + (14 * x1) + (17 * x2) + (-8 * x3) <= -21 ;
+ASSERT  (-15 * x0) + (20 * x1) + (9 * x2) + (19 * x3) <= 4 ;
+ASSERT  (-9 * x0) + (-22 * x1) + (29 * x2) + (-6 * x3) <= 3;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-067.cvc b/test/regress/regress0/arith/integers/arith-int-067.cvc
new file mode 100644
index 0000000..5d7b52e
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-067.cvc
@@ -0,0 +1,17 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (-25 * x0) + (-32 * x1) + (-29 * x2) + (-9 * x3) = -2 ;
+ASSERT  (22 * x0) + (10 * x1) + (-18 * x2) + (2 * x3) = -17 ;
+ASSERT  (22 * x0) + (6 * x1) + (-9 * x2) + (27 * x3) = 10 ;
+ASSERT  (1 * x0) + (-26 * x1) + (27 * x2) + (-19 * x3) = 29 ;
+ASSERT  (-13 * x0) + (18 * x1) + (5 * x2) + (22 * x3) < -10 ;
+ASSERT  (5 * x0) + (1 * x1) + (4 * x2) + (-7 * x3) > -12 ;
+ASSERT  (-30 * x0) + (-12 * x1) + (-22 * x2) + (-32 * x3) <= 1 ;
+ASSERT  (-15 * x0) + (19 * x1) + (22 * x2) + (-9 * x3) >= 12 ;
+ASSERT  (-6 * x0) + (-16 * x1) + (30 * x2) + (-13 * x3) <= -9 ;
+ASSERT  (-3 * x0) + (1 * x1) + (10 * x2) + (7 * x3) < -32 ;
+ASSERT  (5 * x0) + (-17 * x1) + (25 * x2) + (-31 * x3) >= -6 ;
+ASSERT  (18 * x0) + (28 * x1) + (-6 * x2) + (10 * x3) <= -31 ;
+ASSERT  (-11 * x0) + (-25 * x1) + (2 * x2) + (-3 * x3) > -3 ;
+ASSERT  (-14 * x0) + (-28 * x1) + (-2 * x2) + (20 * x3) < -25;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-068.cvc b/test/regress/regress0/arith/integers/arith-int-068.cvc
new file mode 100644
index 0000000..107a21a
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-068.cvc
@@ -0,0 +1,17 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-20 * x0) + (-8 * x1) + (5 * x2) + (-7 * x3) = -7 ;
+ASSERT  (-30 * x0) + (24 * x1) + (-4 * x2) + (-30 * x3) = 22 ;
+ASSERT  (31 * x0) + (-32 * x1) + (27 * x2) + (29 * x3) = 23 ;
+ASSERT (8 * x0) + (-19 * x1) + (-7 * x2) + (0 * x3) <= -1 ;
+ASSERT  (-32 * x0) + (30 * x1) + (9 * x2) + (-21 * x3) <= 24 ;
+ASSERT  (15 * x0) + (-4 * x1) + (27 * x2) + (-26 * x3) >= 23 ;
+ASSERT  (7 * x0) + (26 * x1) + (-16 * x2) + (21 * x3) >= 16 ;
+ASSERT  (-24 * x0) + (-17 * x1) + (-9 * x2) + (27 * x3) <= 2 ;
+ASSERT  (29 * x0) + (-7 * x1) + (-8 * x2) + (32 * x3) <= -2 ;
+ASSERT  (32 * x0) + (31 * x1) + (7 * x2) + (-26 * x3) < 1 ;
+ASSERT  (-17 * x0) + (-13 * x1) + (-20 * x2) + (29 * x3) >= -21 ;
+ASSERT  (-32 * x0) + (27 * x1) + (-29 * x2) + (-11 * x3) >= -23 ;
+ASSERT  (29 * x0) + (-4 * x1) + (21 * x2) + (-16 * x3) < 23 ;
+ASSERT  (-15 * x0) + (26 * x1) + (14 * x2) + (13 * x3) <= -29;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-069.cvc b/test/regress/regress0/arith/integers/arith-int-069.cvc
new file mode 100644
index 0000000..3fab229
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-069.cvc
@@ -0,0 +1,17 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-12 * x0) + (20 * x1) + (2 * x2) + (-24 * x3) = 16 ;
+ASSERT  (-32 * x0) + (27 * x1) + (1 * x2) + (-3 * x3) = -3 ;
+ASSERT (13 * x0) + (27 * x1) + (-17 * x2) + (25 * x3) <= -17 ;
+ASSERT  (27 * x0) + (-30 * x1) + (-16 * x2) + (-3 * x3) > -19 ;
+ASSERT  (-18 * x0) + (-25 * x1) + (-5 * x2) + (3 * x3) < -10 ;
+ASSERT  (9 * x0) + (-32 * x1) + (30 * x2) + (11 * x3) >= 23 ;
+ASSERT  (14 * x0) + (18 * x1) + (-21 * x2) + (-19 * x3) > 9 ;
+ASSERT  (28 * x0) + (2 * x1) + (23 * x2) + (17 * x3) < -6 ;
+ASSERT  (13 * x0) + (-17 * x1) + (-1 * x2) + (29 * x3) < -22 ;
+ASSERT  (-19 * x0) + (22 * x1) + (6 * x2) + (12 * x3) <= -9 ;
+ASSERT  (24 * x0) + (-14 * x1) + (31 * x2) + (12 * x3) > -26 ;
+ASSERT  (-1 * x0) + (24 * x1) + (-1 * x2) + (-31 * x3) > -21 ;
+ASSERT  (-22 * x0) + (28 * x1) + (-27 * x2) + (0 * x3) >= 3 ;
+ASSERT  (-28 * x0) + (29 * x1) + (-3 * x2) + (-22 * x3) >= -23;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-070.cvc b/test/regress/regress0/arith/integers/arith-int-070.cvc
new file mode 100644
index 0000000..cd828da
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-070.cvc
@@ -0,0 +1,17 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (0 * x0) + (-16 * x1) + (14 * x2) + (20 * x3) = 1 ;
+ASSERT  (-27 * x0) + (-5 * x1) + (-22 * x2) + (-24 * x3) = -7 ;
+ASSERT  (-3 * x0) + (-28 * x1) + (-15 * x2) + (7 * x3) = -9 ;
+ASSERT  (27 * x0) + (4 * x1) + (-31 * x2) + (-32 * x3) <= -12 ;
+ASSERT  (16 * x0) + (6 * x1) + (17 * x2) + (22 * x3) <= 5 ;
+ASSERT  (-27 * x0) + (-16 * x1) + (1 * x2) + (23 * x3) >= 9 ;
+ASSERT  (21 * x0) + (-28 * x1) + (-26 * x2) + (-26 * x3) <= -25 ;
+ASSERT  (-12 * x0) + (-32 * x1) + (-22 * x2) + (-20 * x3) > -32 ;
+ASSERT  (26 * x0) + (26 * x1) + (30 * x2) + (4 * x3) < 21 ;
+ASSERT  (-22 * x0) + (-21 * x1) + (0 * x2) + (30 * x3) < 13 ;
+ASSERT  (13 * x0) + (17 * x1) + (-7 * x2) + (-31 * x3) < 29 ;
+ASSERT  (-12 * x0) + (30 * x1) + (1 * x2) + (4 * x3) > -24 ;
+ASSERT  (-23 * x0) + (-2 * x1) + (29 * x2) + (11 * x3) > 26 ;
+ASSERT  (-18 * x0) + (-16 * x1) + (31 * x2) + (14 * x3) <= 32;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-071.cvc b/test/regress/regress0/arith/integers/arith-int-071.cvc
new file mode 100644
index 0000000..ce53364
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-071.cvc
@@ -0,0 +1,18 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (22 * x0) + (3 * x1) + (-17 * x2) + (-21 * x3) = -9 ;
+ASSERT  (-12 * x0) + (-9 * x1) + (-9 * x2) + (-16 * x3) = -12 ;
+ASSERT (-5 * x0) + (16 * x1) + (-15 * x2) + (-13 * x3) > 27 ;
+ASSERT  (16 * x0) + (-4 * x1) + (17 * x2) + (-24 * x3) > -9 ;
+ASSERT  (3 * x0) + (13 * x1) + (-15 * x2) + (-13 * x3) <= -32 ;
+ASSERT  (-18 * x0) + (21 * x1) + (-7 * x2) + (2 * x3) >= 13 ;
+ASSERT  (5 * x0) + (11 * x1) + (-11 * x2) + (-11 * x3) <= 9 ;
+ASSERT  (-9 * x0) + (8 * x1) + (-25 * x2) + (-14 * x3) >= 10 ;
+ASSERT  (17 * x0) + (-29 * x1) + (23 * x2) + (7 * x3) <= -31 ;
+ASSERT  (20 * x0) + (0 * x1) + (1 * x2) + (-6 * x3) <= 23 ;
+ASSERT  (-25 * x0) + (0 * x1) + (-32 * x2) + (17 * x3) > -14 ;
+ASSERT  (6 * x0) + (-30 * x1) + (-11 * x2) + (29 * x3) < 28 ;
+ASSERT  (-19 * x0) + (23 * x1) + (-19 * x2) + (3 * x3) >= 7 ;
+ASSERT  (29 * x0) + (21 * x1) + (-28 * x2) + (-28 * x3) < 22 ;
+ASSERT  (28 * x0) + (25 * x1) + (2 * x2) + (-23 * x3) <= -28;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-072.cvc b/test/regress/regress0/arith/integers/arith-int-072.cvc
new file mode 100644
index 0000000..10222de
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-072.cvc
@@ -0,0 +1,18 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (1 * x0) + (-1 * x1) + (-16 * x2) + (6 * x3) = -11 ;
+ASSERT  (-17 * x0) + (17 * x1) + (-15 * x2) + (24 * x3) = -21 ;
+ASSERT  (-31 * x0) + (28 * x1) + (-4 * x2) + (31 * x3) = -32 ;
+ASSERT  (1 * x0) + (-12 * x1) + (29 * x2) + (-6 * x3) = 25 ;
+ASSERT  (2 * x0) + (7 * x1) + (-24 * x2) + (28 * x3) >= -12 ;
+ASSERT  (-23 * x0) + (-22 * x1) + (14 * x2) + (-24 * x3) >= 22 ;
+ASSERT  (23 * x0) + (-21 * x1) + (22 * x2) + (26 * x3) >= -4 ;
+ASSERT  (25 * x0) + (27 * x1) + (14 * x2) + (5 * x3) <= 9 ;
+ASSERT  (16 * x0) + (2 * x1) + (24 * x2) + (-11 * x3) < -32 ;
+ASSERT  (0 * x0) + (23 * x1) + (29 * x2) + (-15 * x3) < -14 ;
+ASSERT  (5 * x0) + (-12 * x1) + (-7 * x2) + (29 * x3) <= -16 ;
+ASSERT  (25 * x0) + (26 * x1) + (14 * x2) + (-2 * x3) <= 13 ;
+ASSERT  (-30 * x0) + (19 * x1) + (24 * x2) + (7 * x3) < -23 ;
+ASSERT  (24 * x0) + (28 * x1) + (12 * x2) + (-25 * x3) >= -22 ;
+ASSERT  (27 * x0) + (-13 * x1) + (-16 * x2) + (-3 * x3) < 24;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-073.cvc b/test/regress/regress0/arith/integers/arith-int-073.cvc
new file mode 100644
index 0000000..98e74be
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-073.cvc
@@ -0,0 +1,18 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (8 * x0) + (-14 * x1) + (0 * x2) + (7 * x3) = 26 ;
+ASSERT  (-7 * x0) + (-14 * x1) + (15 * x2) + (31 * x3) = 8 ;
+ASSERT  (-4 * x0) + (16 * x1) + (3 * x2) + (-1 * x3) = 12 ;
+ASSERT  (2 * x0) + (24 * x1) + (-7 * x2) + (4 * x3) = 24 ;
+ASSERT  (26 * x0) + (-8 * x1) + (28 * x2) + (9 * x3) = -12 ;
+ASSERT  (19 * x0) + (-3 * x1) + (25 * x2) + (10 * x3) <= -19 ;
+ASSERT  (-13 * x0) + (-16 * x1) + (-14 * x2) + (8 * x3) <= 25 ;
+ASSERT  (-21 * x0) + (-2 * x1) + (-20 * x2) + (8 * x3) <= -22 ;
+ASSERT  (16 * x0) + (4 * x1) + (11 * x2) + (-15 * x3) >= -12 ;
+ASSERT  (-24 * x0) + (-8 * x1) + (2 * x2) + (-24 * x3) <= -22 ;
+ASSERT  (29 * x0) + (23 * x1) + (-20 * x2) + (8 * x3) > 21 ;
+ASSERT  (-24 * x0) + (-28 * x1) + (-23 * x2) + (-24 * x3) < -5 ;
+ASSERT  (-1 * x0) + (17 * x1) + (19 * x2) + (-7 * x3) > -5 ;
+ASSERT  (24 * x0) + (3 * x1) + (6 * x2) + (10 * x3) <= 15 ;
+ASSERT  (27 * x0) + (-11 * x1) + (-8 * x2) + (-22 * x3) > -30;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-074.cvc b/test/regress/regress0/arith/integers/arith-int-074.cvc
new file mode 100644
index 0000000..28cc481
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-074.cvc
@@ -0,0 +1,18 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (14 * x0) + (-6 * x1) + (-23 * x2) + (-8 * x3) = -18 ;
+ASSERT  (-11 * x0) + (12 * x1) + (8 * x2) + (-1 * x3) = -32 ;
+ASSERT  (24 * x0) + (-10 * x1) + (19 * x2) + (7 * x3) = -30 ;
+ASSERT  (1 * x0) + (-12 * x1) + (-13 * x2) + (-17 * x3) = -28 ;
+ASSERT  (-17 * x0) + (14 * x1) + (7 * x2) + (-18 * x3) = -14 ;
+ASSERT  (7 * x0) + (14 * x1) + (-22 * x2) + (29 * x3) = -6;
+ASSERT (15 * x0) + (-6 * x1) + (3 * x2) + (-19 * x3) > 26 ;
+ASSERT  (-20 * x0) + (-18 * x1) + (-24 * x2) + (5 * x3) >= -1 ;
+ASSERT  (11 * x0) + (-26 * x1) + (-20 * x2) + (-16 * x3) > -7 ;
+ASSERT  (31 * x0) + (-2 * x1) + (6 * x2) + (32 * x3) > -22 ;
+ASSERT  (-25 * x0) + (26 * x1) + (-26 * x2) + (-21 * x3) >= -27 ;
+ASSERT  (-17 * x0) + (-30 * x1) + (14 * x2) + (17 * x3) <= -19 ;
+ASSERT  (-16 * x0) + (4 * x1) + (1 * x2) + (-24 * x3) <= -24 ;
+ASSERT  (-13 * x0) + (29 * x1) + (-27 * x2) + (12 * x3) < -15 ;
+ASSERT  (26 * x0) + (-2 * x1) + (-28 * x2) + (20 * x3) < -20 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-075.cvc b/test/regress/regress0/arith/integers/arith-int-075.cvc
new file mode 100644
index 0000000..3b5131e
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-075.cvc
@@ -0,0 +1,18 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-8 * x0) + (29 * x1) + (15 * x2) + (32 * x3) = 32 ;
+ASSERT  (18 * x0) + (-8 * x1) + (18 * x2) + (22 * x3) = 20 ;
+ASSERT (11 * x0) + (9 * x1) + (32 * x2) + (-15 * x3) > 21 ;
+ASSERT  (12 * x0) + (1 * x1) + (25 * x2) + (-17 * x3) > -13 ;
+ASSERT  (-20 * x0) + (7 * x1) + (13 * x2) + (-15 * x3) <= -3 ;
+ASSERT  (32 * x0) + (4 * x1) + (-30 * x2) + (13 * x3) <= -15 ;
+ASSERT  (-32 * x0) + (-27 * x1) + (20 * x2) + (22 * x3) <= -28 ;
+ASSERT  (28 * x0) + (23 * x1) + (10 * x2) + (20 * x3) < 9 ;
+ASSERT  (-30 * x0) + (-32 * x1) + (-28 * x2) + (-30 * x3) > 17 ;
+ASSERT  (-26 * x0) + (14 * x1) + (30 * x2) + (31 * x3) < 20 ;
+ASSERT  (21 * x0) + (23 * x1) + (-7 * x2) + (-16 * x3) > -19 ;
+ASSERT  (6 * x0) + (0 * x1) + (0 * x2) + (21 * x3) < -1 ;
+ASSERT  (13 * x0) + (29 * x1) + (17 * x2) + (-29 * x3) < -32 ;
+ASSERT  (22 * x0) + (-9 * x1) + (-25 * x2) + (11 * x3) > 29 ;
+ASSERT  (-25 * x0) + (-19 * x1) + (22 * x2) + (-27 * x3) >= 10;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-076.cvc b/test/regress/regress0/arith/integers/arith-int-076.cvc
new file mode 100644
index 0000000..2c8de7c
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-076.cvc
@@ -0,0 +1,11 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-20 * x0) + (0 * x1) + (4 * x2) + (29 * x3) = -15 ;
+ASSERT  (3 * x0) + (19 * x1) + (21 * x2) + (-32 * x3) = 11 ;
+ASSERT (-23 * x0) + (-8 * x1) + (-12 * x2) + (-14 * x3) >= -25 ;
+ASSERT  (13 * x0) + (30 * x1) + (-12 * x2) + (22 * x3) < -12 ;
+ASSERT  (-12 * x0) + (-17 * x1) + (20 * x2) + (14 * x3) > -26 ;
+ASSERT  (-13 * x0) + (-17 * x1) + (-25 * x2) + (27 * x3) <= -29 ;
+ASSERT  (-8 * x0) + (-31 * x1) + (-3 * x2) + (-22 * x3) > -22 ;
+ASSERT  (30 * x0) + (11 * x1) + (-32 * x2) + (32 * x3) >= 28;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-077.cvc b/test/regress/regress0/arith/integers/arith-int-077.cvc
new file mode 100644
index 0000000..d14da38
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-077.cvc
@@ -0,0 +1,11 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (26 * x0) + (-28 * x1) + (27 * x2) + (8 * x3) = 31 ;
+ASSERT  (-32 * x0) + (11 * x1) + (-5 * x2) + (14 * x3) = 2;
+ASSERT  (3 * x0) + (17 * x1) + (30 * x2) + (31 * x3) < 13 ;
+ASSERT  (-17 * x0) + (-21 * x1) + (10 * x2) + (8 * x3) > 23 ;
+ASSERT  (-14 * x0) + (10 * x1) + (11 * x2) + (27 * x3) > -13 ;
+ASSERT  (-14 * x0) + (24 * x1) + (3 * x2) + (-26 * x3) > 1 ;
+ASSERT  (-14 * x0) + (20 * x1) + (-2 * x2) + (-24 * x3) > -26 ;
+ASSERT  (20 * x0) + (-23 * x1) + (30 * x2) + (-30 * x3) < 24 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-078.cvc b/test/regress/regress0/arith/integers/arith-int-078.cvc
new file mode 100644
index 0000000..3197c65
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-078.cvc
@@ -0,0 +1,11 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (17 * x0) + (-14 * x1) + (13 * x2) + (13 * x3) = -18 ;
+ASSERT  (13 * x0) + (16 * x1) + (-12 * x2) + (19 * x3) = -20 ;
+ASSERT  (-28 * x0) + (20 * x1) + (-9 * x2) + (9 * x3) = -3 ;
+ASSERT  (24 * x0) + (22 * x1) + (24 * x2) + (20 * x3) = 5;
+ASSERT (-1 * x0) + (-12 * x1) + (20 * x2) + (26 * x3) >= 22 ;
+ASSERT  (-23 * x0) + (-20 * x1) + (-8 * x2) + (1 * x3) < 2 ;
+ASSERT  (5 * x0) + (-27 * x1) + (-24 * x2) + (25 * x3) > -21 ;
+ASSERT  (1 * x0) + (-8 * x1) + (-17 * x2) + (-27 * x3) < -24 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-079.cvc b/test/regress/regress0/arith/integers/arith-int-079.cvc
new file mode 100644
index 0000000..7fa2fc9
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-079.cvc
@@ -0,0 +1,11 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (6 * x0) + (2 * x1) + (22 * x2) + (-18 * x3) = -15 ;
+ASSERT (-8 * x0) + (-25 * x1) + (-25 * x2) + (7 * x3) > 10 ;
+ASSERT  (8 * x0) + (25 * x1) + (-7 * x2) + (-29 * x3) < -25 ;
+ASSERT  (27 * x0) + (17 * x1) + (-24 * x2) + (-5 * x3) <= 13 ;
+ASSERT  (5 * x0) + (-3 * x1) + (0 * x2) + (4 * x3) < -26 ;
+ASSERT  (25 * x0) + (7 * x1) + (27 * x2) + (-14 * x3) < 30 ;
+ASSERT  (-22 * x0) + (-17 * x1) + (9 * x2) + (-20 * x3) < -19 ;
+ASSERT  (31 * x0) + (-16 * x1) + (0 * x2) + (6 * x3) >= 18;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-080.cvc b/test/regress/regress0/arith/integers/arith-int-080.cvc
new file mode 100644
index 0000000..8be0f9a
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-080.cvc
@@ -0,0 +1,11 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (5 * x0) + (-17 * x1) + (15 * x2) + (-15 * x3) = -14 ;
+ASSERT  (-28 * x0) + (-17 * x1) + (-29 * x2) + (-19 * x3) = 14;
+ASSERT (9 * x0) + (-26 * x1) + (-16 * x2) + (-9 * x3) >= 28 ;
+ASSERT  (14 * x0) + (-32 * x1) + (-31 * x2) + (0 * x3) >= 30 ;
+ASSERT  (-31 * x0) + (-27 * x1) + (23 * x2) + (4 * x3) >= 21 ;
+ASSERT  (27 * x0) + (-30 * x1) + (8 * x2) + (13 * x3) < 31 ;
+ASSERT  (-1 * x0) + (-29 * x1) + (23 * x2) + (10 * x3) < -10 ;
+ASSERT  (15 * x0) + (-2 * x1) + (22 * x2) + (-28 * x3) >= 2 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-081.cvc b/test/regress/regress0/arith/integers/arith-int-081.cvc
new file mode 100644
index 0000000..5461483
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-081.cvc
@@ -0,0 +1,7 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT  (-8 * x0) + (31 * x1) + (-23 * x2) + (-8 * x3) = 8;
+ASSERT (24 * x0) + (-2 * x1) + (2 * x2) + (-2 * x3) >= -17 ;
+ASSERT  (-6 * x0) + (17 * x1) + (27 * x2) + (26 * x3) >= -30 ;
+ASSERT  (-19 * x0) + (-15 * x1) + (5 * x2) + (-27 * x3) < -3 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-083.cvc b/test/regress/regress0/arith/integers/arith-int-083.cvc
new file mode 100644
index 0000000..6b10843
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-083.cvc
@@ -0,0 +1,7 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (19 * x0) + (-31 * x1) + (31 * x2) + (28 * x3) = -13 ;
+ASSERT  (1 * x0) + (13 * x1) + (12 * x2) + (-15 * x3) > -8 ;
+ASSERT  (7 * x0) + (17 * x1) + (-20 * x2) + (13 * x3) > -26 ;
+ASSERT  (-17 * x0) + (14 * x1) + (-23 * x2) + (17 * x3) <= -27;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-084.cvc b/test/regress/regress0/arith/integers/arith-int-084.cvc
new file mode 100644
index 0000000..5f0e17a
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-084.cvc
@@ -0,0 +1,7 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (-2 * x0) + (-13 * x1) + (-14 * x2) + (-26 * x3) <= 4 ;
+ASSERT  (-17 * x0) + (-17 * x1) + (21 * x2) + (-4 * x3) < 18 ;
+ASSERT  (-31 * x0) + (23 * x1) + (4 * x2) + (29 * x3) > -6 ;
+ASSERT  (-14 * x0) + (32 * x1) + (-8 * x2) + (-8 * x3) <= -1;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-085.cvc b/test/regress/regress0/arith/integers/arith-int-085.cvc
new file mode 100644
index 0000000..74dd714
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-085.cvc
@@ -0,0 +1,8 @@
+% EXPECT: invalid
+%% down from 3
+x0, x1, x2, x3 : INT;
+ASSERT (22 * x0) + (-25 * x1) + (-20 * x2) + (8 * x3) = -6 ;
+ASSERT  (-9 * x0) + (30 * x1) + (-17 * x2) + (29 * x3) >= -15 ;
+ASSERT  (21 * x0) + (29 * x1) + (12 * x2) + (-3 * x3) <= -21 ;
+ASSERT  (-16 * x0) + (-26 * x1) + (11 * x2) + (-12 * x3) >= -14;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-086.cvc b/test/regress/regress0/arith/integers/arith-int-086.cvc
new file mode 100644
index 0000000..64c212b
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-086.cvc
@@ -0,0 +1,13 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-16 * x0) + (28 * x1) + (2 * x2) + (7 * x3) = -25 ;
+ASSERT  (-20 * x0) + (-24 * x1) + (4 * x2) + (32 * x3) = -22 ;
+ASSERT (19 * x0) + (28 * x1) + (-15 * x2) + (18 * x3) < -9 ;
+ASSERT  (-10 * x0) + (1 * x1) + (-3 * x2) + (6 * x3) <= 1 ;
+ASSERT  (-15 * x0) + (-32 * x1) + (28 * x2) + (6 * x3) >= -8 ;
+ASSERT  (-18 * x0) + (-16 * x1) + (15 * x2) + (-28 * x3) <= 1 ;
+ASSERT  (-20 * x0) + (-31 * x1) + (20 * x2) + (13 * x3) >= -7 ;
+ASSERT  (29 * x0) + (16 * x1) + (7 * x2) + (14 * x3) < 11 ;
+ASSERT  (-10 * x0) + (22 * x1) + (25 * x2) + (24 * x3) >= 5 ;
+ASSERT  (-3 * x0) + (11 * x1) + (27 * x2) + (11 * x3) <= 9;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-087.cvc b/test/regress/regress0/arith/integers/arith-int-087.cvc
new file mode 100644
index 0000000..312c089
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-087.cvc
@@ -0,0 +1,13 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-4 * x0) + (25 * x1) + (-2 * x2) + (-16 * x3) = 27 ;
+ASSERT  (-11 * x0) + (26 * x1) + (18 * x2) + (-18 * x3) = -15 ;
+ASSERT  (-19 * x0) + (-27 * x1) + (-31 * x2) + (15 * x3) = 12;
+ASSERT (10 * x0) + (-10 * x1) + (25 * x2) + (-3 * x3) < -30 ;
+ASSERT  (5 * x0) + (-18 * x1) + (21 * x2) + (-28 * x3) <= -4 ;
+ASSERT  (-6 * x0) + (15 * x1) + (-10 * x2) + (0 * x3) < -20 ;
+ASSERT  (10 * x0) + (23 * x1) + (-20 * x2) + (12 * x3) >= -15 ;
+ASSERT  (-31 * x0) + (-30 * x1) + (12 * x2) + (11 * x3) > 29 ;
+ASSERT  (26 * x0) + (23 * x1) + (28 * x2) + (-5 * x3) > 8 ;
+ASSERT  (6 * x0) + (-29 * x1) + (12 * x2) + (16 * x3) < 27 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-088.cvc b/test/regress/regress0/arith/integers/arith-int-088.cvc
new file mode 100644
index 0000000..5212640
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-088.cvc
@@ -0,0 +1,13 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-19 * x0) + (-9 * x1) + (-27 * x2) + (9 * x3) = -1 ;
+ASSERT (-26 * x0) + (11 * x1) + (23 * x2) + (-5 * x3) >= 20 ;
+ASSERT  (7 * x0) + (28 * x1) + (6 * x2) + (-20 * x3) <= -16 ;
+ASSERT  (-15 * x0) + (21 * x1) + (5 * x2) + (-2 * x3) <= 11 ;
+ASSERT  (-5 * x0) + (-16 * x1) + (-16 * x2) + (14 * x3) <= 12 ;
+ASSERT  (3 * x0) + (28 * x1) + (22 * x2) + (-6 * x3) >= -31 ;
+ASSERT  (15 * x0) + (-13 * x1) + (10 * x2) + (21 * x3) <= -25 ;
+ASSERT  (1 * x0) + (-24 * x1) + (-30 * x2) + (25 * x3) > 17 ;
+ASSERT  (12 * x0) + (-3 * x1) + (0 * x2) + (23 * x3) < -12 ;
+ASSERT  (16 * x0) + (-9 * x1) + (1 * x2) + (-15 * x3) < -6;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-089.cvc b/test/regress/regress0/arith/integers/arith-int-089.cvc
new file mode 100644
index 0000000..7ff36d2
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-089.cvc
@@ -0,0 +1,13 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (14 * x0) + (-14 * x1) + (-29 * x2) + (31 * x3) = -15 ;
+ASSERT  (-14 * x0) + (2 * x1) + (26 * x2) + (29 * x3) = 25 ;
+ASSERT  (19 * x0) + (-7 * x1) + (-15 * x2) + (12 * x3) = 32 ;
+ASSERT  (5 * x0) + (32 * x1) + (22 * x2) + (1 * x3) = -13 ;
+ASSERT  (-12 * x0) + (-9 * x1) + (-30 * x2) + (-13 * x3) >= 0 ;
+ASSERT  (-9 * x0) + (7 * x1) + (-24 * x2) + (22 * x3) >= 11 ;
+ASSERT  (28 * x0) + (-5 * x1) + (12 * x2) + (15 * x3) >= 31 ;
+ASSERT  (5 * x0) + (-6 * x1) + (5 * x2) + (-2 * x3) >= -5 ;
+ASSERT  (-14 * x0) + (-17 * x1) + (-29 * x2) + (-8 * x3) < -32 ;
+ASSERT  (20 * x0) + (-19 * x1) + (-27 * x2) + (-20 * x3) >= -2;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-090.cvc b/test/regress/regress0/arith/integers/arith-int-090.cvc
new file mode 100644
index 0000000..52b9c13
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-090.cvc
@@ -0,0 +1,13 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT  (-13 * x0) + (-14 * x1) + (-10 * x2) + (32 * x3) = 11 ;
+ASSERT (28 * x0) + (21 * x1) + (-20 * x2) + (-32 * x3) > -31 ;
+ASSERT  (10 * x0) + (19 * x1) + (-10 * x2) + (-2 * x3) > -31 ;
+ASSERT  (-31 * x0) + (17 * x1) + (15 * x2) + (31 * x3) > -12 ;
+ASSERT  (-17 * x0) + (16 * x1) + (17 * x2) + (-11 * x3) >= 17 ;
+ASSERT  (19 * x0) + (-31 * x1) + (-16 * x2) + (-29 * x3) >= 15 ;
+ASSERT  (24 * x0) + (-32 * x1) + (27 * x2) + (11 * x3) < 26 ;
+ASSERT  (-2 * x0) + (5 * x1) + (-21 * x2) + (24 * x3) >= -17 ;
+ASSERT  (13 * x0) + (11 * x1) + (-28 * x2) + (-5 * x3) > 16 ;
+ASSERT  (-16 * x0) + (17 * x1) + (22 * x2) + (6 * x3) > 21;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-091.cvc b/test/regress/regress0/arith/integers/arith-int-091.cvc
new file mode 100644
index 0000000..29a19db
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-091.cvc
@@ -0,0 +1,22 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (26 * x0) + (32 * x1) + (-26 * x2) + (-26 * x3) = -26 ;
+ASSERT  (30 * x0) + (17 * x1) + (28 * x2) + (-9 * x3) = -21 ;
+ASSERT  (15 * x0) + (9 * x1) + (-13 * x2) + (-21 * x3) = -13 ;
+ASSERT  (-4 * x0) + (16 * x1) + (-5 * x2) + (8 * x3) = -25 ;
+ASSERT  (-11 * x0) + (26 * x1) + (1 * x2) + (23 * x3) < 6 ;
+ASSERT  (-31 * x0) + (-25 * x1) + (1 * x2) + (16 * x3) > -8 ;
+ASSERT  (9 * x0) + (-19 * x1) + (28 * x2) + (15 * x3) < -30 ;
+ASSERT  (32 * x0) + (18 * x1) + (2 * x2) + (31 * x3) > -7 ;
+ASSERT  (24 * x0) + (29 * x1) + (20 * x2) + (-16 * x3) >= 3 ;
+ASSERT  (-1 * x0) + (17 * x1) + (-27 * x2) + (-32 * x3) >= 20 ;
+ASSERT  (26 * x0) + (-23 * x1) + (6 * x2) + (30 * x3) <= 5 ;
+ASSERT  (13 * x0) + (6 * x1) + (-26 * x2) + (1 * x3) > -29 ;
+ASSERT  (26 * x0) + (2 * x1) + (8 * x2) + (-18 * x3) <= 32 ;
+ASSERT  (-21 * x0) + (28 * x1) + (23 * x2) + (4 * x3) <= -31 ;
+ASSERT  (26 * x0) + (2 * x1) + (-28 * x2) + (12 * x3) > 6 ;
+ASSERT  (-20 * x0) + (-22 * x1) + (-16 * x2) + (-21 * x3) <= -1 ;
+ASSERT  (21 * x0) + (-22 * x1) + (19 * x2) + (32 * x3) <= -10 ;
+ASSERT  (3 * x0) + (28 * x1) + (-11 * x2) + (0 * x3) > 0 ;
+ASSERT  (-13 * x0) + (-16 * x1) + (-17 * x2) + (-2 * x3) <= -17;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-092.cvc b/test/regress/regress0/arith/integers/arith-int-092.cvc
new file mode 100644
index 0000000..51c8a6b
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-092.cvc
@@ -0,0 +1,22 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (-20 * x0) + (19 * x1) + (16 * x2) + (-27 * x3) = -22 ;
+ASSERT  (12 * x0) + (-18 * x1) + (-25 * x2) + (-1 * x3) = -22 ;
+ASSERT  (17 * x0) + (11 * x1) + (24 * x2) + (16 * x3) = -3 ;
+ASSERT  (15 * x0) + (-10 * x1) + (-15 * x2) + (25 * x3) = -30 ;
+ASSERT (7 * x0) + (26 * x1) + (-8 * x2) + (-29 * x3) >= -32 ;
+ASSERT  (20 * x0) + (25 * x1) + (-23 * x2) + (13 * x3) >= -30 ;
+ASSERT  (27 * x0) + (-32 * x1) + (-27 * x2) + (13 * x3) >= -12 ;
+ASSERT  (25 * x0) + (-16 * x1) + (32 * x2) + (-6 * x3) >= -30 ;
+ASSERT  (32 * x0) + (-18 * x1) + (-6 * x2) + (-32 * x3) <= -26 ;
+ASSERT  (25 * x0) + (12 * x1) + (25 * x2) + (-14 * x3) > 5 ;
+ASSERT  (-4 * x0) + (-20 * x1) + (12 * x2) + (-30 * x3) >= 13 ;
+ASSERT  (8 * x0) + (18 * x1) + (0 * x2) + (-28 * x3) <= 18 ;
+ASSERT  (-32 * x0) + (-25 * x1) + (23 * x2) + (5 * x3) < 29 ;
+ASSERT  (7 * x0) + (19 * x1) + (2 * x2) + (-31 * x3) > 7 ;
+ASSERT  (24 * x0) + (-17 * x1) + (-31 * x2) + (31 * x3) > 0 ;
+ASSERT  (13 * x0) + (20 * x1) + (-1 * x2) + (17 * x3) > 1 ;
+ASSERT  (17 * x0) + (26 * x1) + (6 * x2) + (29 * x3) >= -10 ;
+ASSERT  (-25 * x0) + (4 * x1) + (-22 * x2) + (14 * x3) < -23 ;
+ASSERT  (24 * x0) + (2 * x1) + (4 * x2) + (2 * x3) < 1;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-093.cvc b/test/regress/regress0/arith/integers/arith-int-093.cvc
new file mode 100644
index 0000000..7d2123d
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-093.cvc
@@ -0,0 +1,22 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT  (22 * x0) + (-2 * x1) + (-1 * x2) + (-24 * x3) = 8 ;
+ASSERT  (-6 * x0) + (9 * x1) + (-20 * x2) + (-23 * x3) = 14 ;
+ASSERT (-11 * x0) + (4 * x1) + (24 * x2) + (-6 * x3) <= -23 ;
+ASSERT  (3 * x0) + (5 * x1) + (-5 * x2) + (17 * x3) < -17 ;
+ASSERT  (-10 * x0) + (-20 * x1) + (-16 * x2) + (-29 * x3) >= 6 ;
+ASSERT  (-28 * x0) + (1 * x1) + (-22 * x2) + (-16 * x3) >= 4 ;
+ASSERT  (19 * x0) + (8 * x1) + (-8 * x2) + (-2 * x3) > -23 ;
+ASSERT  (11 * x0) + (17 * x1) + (30 * x2) + (31 * x3) < -32 ;
+ASSERT  (23 * x0) + (30 * x1) + (-12 * x2) + (16 * x3) <= 4 ;
+ASSERT  (-23 * x0) + (-8 * x1) + (21 * x2) + (21 * x3) <= -14 ;
+ASSERT  (13 * x0) + (15 * x1) + (-6 * x2) + (-1 * x3) >= -8 ;
+ASSERT  (-21 * x0) + (18 * x1) + (27 * x2) + (-16 * x3) <= 11 ;
+ASSERT  (30 * x0) + (-6 * x1) + (5 * x2) + (-27 * x3) <= -7 ;
+ASSERT  (0 * x0) + (3 * x1) + (13 * x2) + (28 * x3) > -21 ;
+ASSERT  (-15 * x0) + (-20 * x1) + (10 * x2) + (-23 * x3) < 27 ;
+ASSERT  (24 * x0) + (6 * x1) + (-29 * x2) + (1 * x3) <= -23 ;
+ASSERT  (-24 * x0) + (-14 * x1) + (-15 * x2) + (8 * x3) > -19 ;
+ASSERT  (17 * x0) + (15 * x1) + (8 * x2) + (-31 * x3) >= -16 ;
+ASSERT  (-19 * x0) + (7 * x1) + (-28 * x2) + (20 * x3) < -19;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-094.cvc b/test/regress/regress0/arith/integers/arith-int-094.cvc
new file mode 100644
index 0000000..a5f1aef
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-094.cvc
@@ -0,0 +1,22 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (-7 * x0) + (-11 * x1) + (26 * x2) + (10 * x3) = 31 ;
+ASSERT  (-17 * x0) + (-20 * x1) + (24 * x2) + (-9 * x3) = -32 ;
+ASSERT  (5 * x0) + (14 * x1) + (7 * x2) + (-29 * x3) = 31 ;
+ASSERT  (17 * x0) + (8 * x1) + (23 * x2) + (-26 * x3) <= -12 ;
+ASSERT  (7 * x0) + (29 * x1) + (24 * x2) + (4 * x3) <= -21 ;
+ASSERT  (-16 * x0) + (7 * x1) + (7 * x2) + (-29 * x3) < -16 ;
+ASSERT  (-7 * x0) + (-11 * x1) + (-17 * x2) + (22 * x3) > -11 ;
+ASSERT  (-10 * x0) + (-17 * x1) + (21 * x2) + (29 * x3) > -7 ;
+ASSERT  (-28 * x0) + (-26 * x1) + (-24 * x2) + (-21 * x3) < -20 ;
+ASSERT  (-32 * x0) + (26 * x1) + (-8 * x2) + (2 * x3) >= -18 ;
+ASSERT  (18 * x0) + (-23 * x1) + (-26 * x2) + (-24 * x3) > -30 ;
+ASSERT  (-9 * x0) + (31 * x1) + (-26 * x2) + (-22 * x3) < -15 ;
+ASSERT  (27 * x0) + (-1 * x1) + (10 * x2) + (28 * x3) < -20 ;
+ASSERT  (-4 * x0) + (-22 * x1) + (-24 * x2) + (2 * x3) < -13 ;
+ASSERT  (-4 * x0) + (-23 * x1) + (-16 * x2) + (18 * x3) > -20 ;
+ASSERT  (13 * x0) + (-30 * x1) + (-3 * x2) + (-25 * x3) <= 31 ;
+ASSERT  (21 * x0) + (-28 * x1) + (22 * x2) + (19 * x3) > 7 ;
+ASSERT  (-2 * x0) + (-31 * x1) + (24 * x2) + (18 * x3) > 27 ;
+ASSERT  (-14 * x0) + (-5 * x1) + (-22 * x2) + (1 * x3) <= -15;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-095.cvc b/test/regress/regress0/arith/integers/arith-int-095.cvc
new file mode 100644
index 0000000..bc47d6f
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-095.cvc
@@ -0,0 +1,22 @@
+% EXPECT: valid
+x0, x1, x2, x3 : INT;
+ASSERT (2 * x0) + (28 * x1) + (3 * x2) + (8 * x3) > -32 ;
+ASSERT  (-15 * x0) + (21 * x1) + (-11 * x2) + (28 * x3) <= -19 ;
+ASSERT  (32 * x0) + (29 * x1) + (-1 * x2) + (-10 * x3) < -23 ;
+ASSERT  (6 * x0) + (-27 * x1) + (29 * x2) + (28 * x3) < 5 ;
+ASSERT  (-7 * x0) + (-7 * x1) + (-28 * x2) + (32 * x3) <= -32 ;
+ASSERT  (-10 * x0) + (20 * x1) + (-28 * x2) + (-28 * x3) >= -6 ;
+ASSERT  (-13 * x0) + (-9 * x1) + (4 * x2) + (-32 * x3) > -1 ;
+ASSERT  (-21 * x0) + (4 * x1) + (0 * x2) + (-13 * x3) >= -1 ;
+ASSERT  (18 * x0) + (-21 * x1) + (-16 * x2) + (24 * x3) <= -12 ;
+ASSERT  (18 * x0) + (-10 * x1) + (-10 * x2) + (-3 * x3) <= -10 ;
+ASSERT  (-32 * x0) + (9 * x1) + (-24 * x2) + (-19 * x3) < -4 ;
+ASSERT  (12 * x0) + (20 * x1) + (31 * x2) + (-25 * x3) <= 23 ;
+ASSERT  (-22 * x0) + (15 * x1) + (-12 * x2) + (-6 * x3) < 18 ;
+ASSERT  (-25 * x0) + (-8 * x1) + (32 * x2) + (26 * x3) > -20 ;
+ASSERT  (-30 * x0) + (27 * x1) + (0 * x2) + (27 * x3) >= 7 ;
+ASSERT  (-8 * x0) + (-2 * x1) + (-6 * x2) + (-21 * x3) <= 21 ;
+ASSERT  (8 * x0) + (-31 * x1) + (-4 * x2) + (1 * x3) > -11 ;
+ASSERT  (22 * x0) + (-25 * x1) + (-26 * x2) + (10 * x3) < -32 ;
+ASSERT  (-12 * x0) + (-13 * x1) + (15 * x2) + (4 * x3) < 26;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-096.cvc b/test/regress/regress0/arith/integers/arith-int-096.cvc
new file mode 100644
index 0000000..2f6cf31
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-096.cvc
@@ -0,0 +1,8 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (23 * x0) + (24 * x1) + (19 * x2) + (-3 * x3) = -16 ;
+ASSERT  (2 * x0) + (-13 * x1) + (5 * x2) + (-1 * x3) = 28;
+ASSERT  (-6 * x0) + (-5 * x1) + (-2 * x2) + (-9 * x3) > -3 ;
+ASSERT  (30 * x0) + (22 * x1) + (-20 * x2) + (1 * x3) > -12 ;
+ASSERT  (-8 * x0) + (-25 * x1) + (28 * x2) + (-25 * x3) <= -8 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-097.cvc b/test/regress/regress0/arith/integers/arith-int-097.cvc
new file mode 100644
index 0000000..b050611
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-097.cvc
@@ -0,0 +1,8 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (19 * x0) + (-11 * x1) + (-19 * x2) + (5 * x3) = 26 ;
+ASSERT  (1 * x0) + (-28 * x1) + (-2 * x2) + (15 * x3) < 9 ;
+ASSERT  (-8 * x0) + (-1 * x1) + (-25 * x2) + (-7 * x3) <= -31 ;
+ASSERT  (-7 * x0) + (11 * x1) + (-5 * x2) + (-19 * x3) > 32 ;
+ASSERT  (-22 * x0) + (13 * x1) + (-16 * x2) + (-12 * x3) <= 32;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-098.cvc b/test/regress/regress0/arith/integers/arith-int-098.cvc
new file mode 100644
index 0000000..08cfd9c
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-098.cvc
@@ -0,0 +1,8 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT  (-28 * x0) + (12 * x1) + (-19 * x2) + (10 * x3) = 16 ;
+ASSERT  (19 * x0) + (-25 * x1) + (-8 * x2) + (-32 * x3) = 12;
+ASSERT (18 * x0) + (21 * x1) + (5 * x2) + (-14 * x3) < -12 ;
+ASSERT  (-13 * x0) + (32 * x1) + (-5 * x2) + (-13 * x3) <= -15 ;
+ASSERT  (30 * x0) + (-19 * x1) + (28 * x2) + (-27 * x3) <= -18 ;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-099.cvc b/test/regress/regress0/arith/integers/arith-int-099.cvc
new file mode 100644
index 0000000..0d74dcb
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-099.cvc
@@ -0,0 +1,8 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (-31 * x0) + (-20 * x1) + (-30 * x2) + (-28 * x3) = -24 ;
+ASSERT  (11 * x0) + (-32 * x1) + (-2 * x2) + (8 * x3) <= 16 ;
+ASSERT  (-10 * x0) + (16 * x1) + (31 * x2) + (19 * x3) >= -21 ;
+ASSERT  (-15 * x0) + (18 * x1) + (-16 * x2) + (7 * x3) <= -12 ;
+ASSERT  (14 * x0) + (-1 * x1) + (12 * x2) + (27 * x3) >= -12;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/integers/arith-int-100.cvc b/test/regress/regress0/arith/integers/arith-int-100.cvc
new file mode 100644
index 0000000..7e07bee
--- /dev/null
+++ b/test/regress/regress0/arith/integers/arith-int-100.cvc
@@ -0,0 +1,8 @@
+% EXPECT: invalid
+x0, x1, x2, x3 : INT;
+ASSERT (27 * x0) + (-21 * x1) + (-6 * x2) + (-6 * x3) > -15 ;
+ASSERT  (-5 * x0) + (-10 * x1) + (2 * x2) + (-16 * x3) <= -7 ;
+ASSERT  (25 * x0) + (25 * x1) + (-15 * x2) + (-32 * x3) > -31 ;
+ASSERT  (17 * x0) + (-26 * x1) + (9 * x2) + (-28 * x3) >= -29 ;
+ASSERT  (-10 * x0) + (-18 * x1) + (15 * x2) + (0 * x3) <= 32;
+QUERY FALSE;
diff --git a/test/regress/regress0/arith/leq.01.smt b/test/regress/regress0/arith/leq.01.smt
new file mode 100644
index 0000000..8cb0884
--- /dev/null
+++ b/test/regress/regress0/arith/leq.01.smt
@@ -0,0 +1,6 @@
+(benchmark fuzzsmt
+:logic QF_LRA
+:status unsat
+:formula
+(<= 3 (~ 3))
+)
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 0000000..f942cbc
--- /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 at 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 )  [...]
+    ( >= ( + ( + ( * 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 )  [...]
+    ( >= ( + ( + ( * 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 )  [...]
+    ( >= ( + ( + ( * 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 )  [...]
+    ( >= ( + ( + ( * 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 )  [...]
+    ( >= ( + ( + ( * 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 )  [...]
+    ( >= ( + ( + ( * 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 )  [...]
+    ( >= ( + ( + ( * 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 )  [...]
+    ( >= ( + ( + ( * 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 )  [...]
+    ( >= ( + ( + ( * 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 )  [...]
+    ( >= ( + ( + ( * 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 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )  [...]
+    ( >= ( + ( + ( * 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 ) [...]
+    ( >= ( + ( + ( * 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 ) ) ) ) ) ) ) ) ) ) )  [...]
+    ( >= ( + ( + ( * 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 ) ) ) ) ) ) ) ) ) ) )  [...]
+    ( >= ( + ( + ( * 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 ) ) ) ) ) ) ) ) ) ) )  [...]
+    ( >= ( + ( + ( * 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 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) [...]
+    ( <= 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 0000000..f0bc97e
--- /dev/null
+++ b/test/regress/regress0/arith/miplib-opt1217--27.smt.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --enable-miplib-trick
+% EXPECT: unsat
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 0000000..dc0ca78
--- /dev/null
+++ b/test/regress/regress0/arith/miplib-opt1217--27.smt2
@@ -0,0 +1,1549 @@
+; COMMAND-LINE: --enable-miplib-trick
+; EXPECT: unsat
+(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 at 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 [...]
+(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 0000000..21c588a
--- /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 at 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 ) (  [...]
+    ( <= ( + ( + ( * 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 0000000..f0bc97e
--- /dev/null
+++ b/test/regress/regress0/arith/miplib-pp08a-3000.smt.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --enable-miplib-trick
+% EXPECT: unsat
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 0000000..3e34bad
--- /dev/null
+++ b/test/regress/regress0/arith/miplib-pp08a-3000.smt2
@@ -0,0 +1,329 @@
+; COMMAND-LINE: --enable-miplib-trick
+; EXPECT: unsat
+(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 at 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 (*  [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/arith/miplib.cvc b/test/regress/regress0/arith/miplib.cvc
new file mode 100644
index 0000000..49c0b61
--- /dev/null
+++ b/test/regress/regress0/arith/miplib.cvc
@@ -0,0 +1,28 @@
+% COMMAND-LINE: --enable-miplib-trick
+% EXPECT: sat
+
+tmp1, tmp2, tmp3 : INT;
+x, y, z : BOOLEAN;
+
+% x = {0, 1}, (NOT x) = 1 - x
+% i*Nx + j*Ny + k = 0
+% i*x + j*Ny + k = 4
+% i*Nx + j*y + k = 6
+% i*x + j*y + k = 10
+
+ASSERT NOT x AND (NOT y AND TRUE) => tmp1 = 0;
+ASSERT     x AND (NOT y AND TRUE) => tmp1 = 4;
+ASSERT NOT x AND (    y AND TRUE) => tmp1 = 6;
+ASSERT     x AND (    y AND TRUE) => tmp1 = 10;
+
+ASSERT NOT x AND (NOT z AND TRUE) => tmp2 = 0;
+ASSERT     x AND (NOT z AND TRUE) => tmp2 = 2;
+ASSERT NOT x AND (    z AND TRUE) => tmp2 = 9;
+ASSERT     x AND (    z AND TRUE) => tmp2 = 11;
+
+ASSERT NOT y AND (NOT z AND TRUE) => tmp3 = 0;
+ASSERT     y AND (NOT z AND TRUE) => tmp3 = 5;
+ASSERT NOT y AND (    z AND TRUE) => tmp3 = 16;
+ASSERT     y AND (    z AND TRUE) => tmp3 = 21;
+
+CHECKSAT;
diff --git a/test/regress/regress0/arith/miplib2.cvc b/test/regress/regress0/arith/miplib2.cvc
new file mode 100644
index 0000000..5cd2f54
--- /dev/null
+++ b/test/regress/regress0/arith/miplib2.cvc
@@ -0,0 +1,32 @@
+% COMMAND-LINE: --enable-miplib-trick
+% EXPECT: sat
+
+tmp1, tmp2, tmp3 : INT;
+x, y, z : BOOLEAN;
+
+% x = {0, 1}, (NOT x) = 1 - x
+% i*Nx + j*Ny + k = 0
+% i*x + j*Ny + k = 4
+% i*Nx + j*y + k = 6
+% i*x + j*y + k = 10
+
+ASSERT NOT x AND (NOT y AND TRUE) => tmp1 = 0;
+ASSERT     x AND (NOT y AND TRUE) => tmp1 = 4;
+ASSERT NOT x AND (    y AND TRUE) => tmp1 = 6;
+ASSERT     x AND (    y AND TRUE) => tmp1 = 10;
+
+ASSERT NOT x AND (NOT z AND TRUE) => tmp2 = 0;
+ASSERT     x AND (NOT z AND TRUE) => tmp2 = 2;
+ASSERT NOT x AND (    z AND TRUE) => tmp2 = 9;
+ASSERT     x AND (    z AND TRUE) => tmp2 = 11;
+
+ASSERT NOT y AND (NOT z AND TRUE) => tmp3 = 0;
+ASSERT     y AND (NOT z AND TRUE) => tmp3 = 5;
+ASSERT NOT y AND (    z AND TRUE) => tmp3 = 16;
+ASSERT     y AND (    z AND TRUE) => tmp3 = 21;
+
+% miplib trick does not apply to blocks 1 and 2, x occurs outside
+% of the tmp definitions
+ASSERT x;
+
+CHECKSAT;
diff --git a/test/regress/regress0/arith/miplib3.cvc b/test/regress/regress0/arith/miplib3.cvc
new file mode 100644
index 0000000..9e1ae5a
--- /dev/null
+++ b/test/regress/regress0/arith/miplib3.cvc
@@ -0,0 +1,33 @@
+% COMMAND-LINE: --enable-miplib-trick
+% EXPECT: sat
+
+tmp1, tmp2, tmp3, tmp4 : INT;
+x, y, z : BOOLEAN;
+
+% x = {0, 1}, (NOT x) = 1 - x
+% i*Nx + j*Ny + k = 0
+% i*x + j*Ny + k = 4
+% i*Nx + j*y + k = 6
+% i*x + j*y + k = 10
+
+ASSERT NOT x AND (NOT y AND TRUE) => tmp1 = 0;
+ASSERT     x AND (NOT y AND TRUE) => tmp1 = 4;
+ASSERT NOT x AND (    y AND TRUE) => tmp1 = 6;
+ASSERT     x AND (    y AND TRUE) => tmp1 = 10;
+
+ASSERT NOT x AND (NOT z AND TRUE) => tmp2 = 0;
+ASSERT     x AND (NOT z AND TRUE) => tmp2 = 2;
+ASSERT NOT x AND (    z AND TRUE) => tmp2 = 9;
+ASSERT     x AND (    z AND TRUE) => tmp2 = 11;
+
+ASSERT NOT y AND (NOT z AND TRUE) => tmp3 = 0;
+ASSERT     y AND (NOT z AND TRUE) => tmp3 = 5;
+ASSERT NOT y AND (    z AND TRUE) => tmp3 = 16;
+ASSERT     y AND (    z AND TRUE) => tmp3 = 21;
+
+ASSERT NOT x AND (NOT y AND TRUE) => tmp4 = 0;
+ASSERT     x AND (NOT y AND TRUE) => tmp4 = 4;
+ASSERT NOT x AND (    y AND TRUE) => tmp4 = 6;
+ASSERT     x AND (    y AND TRUE) => tmp4 = 10;
+
+CHECKSAT;
diff --git a/test/regress/regress0/arith/miplib4.cvc b/test/regress/regress0/arith/miplib4.cvc
new file mode 100644
index 0000000..9d7c459
--- /dev/null
+++ b/test/regress/regress0/arith/miplib4.cvc
@@ -0,0 +1,15 @@
+% COMMAND-LINE: --enable-miplib-trick
+% EXPECT: sat
+
+tmp1 : INT;
+x, y : BOOLEAN;
+
+% nonlinear combination, not eligible for miplib trick replacement
+ASSERT NOT x AND (NOT y AND TRUE) => tmp1 = 0;
+ASSERT     x AND (NOT y AND TRUE) => tmp1 = 4;
+ASSERT NOT x AND (    y AND TRUE) => tmp1 = 6;
+ASSERT     x AND (    y AND TRUE) => tmp1 = 12;
+
+ASSERT tmp1 > 10;
+
+CHECKSAT;
diff --git a/test/regress/regress0/arith/miplibtrick.smt b/test/regress/regress0/arith/miplibtrick.smt
new file mode 100644
index 0000000..93cd6d2
--- /dev/null
+++ b/test/regress/regress0/arith/miplibtrick.smt
@@ -0,0 +1,11 @@
+(benchmark miplibtrick
+  :status sat
+  :logic QF_LRA
+  :extrafuns ((tmp1 Real))
+  :extrapreds ((x177))
+
+  :formula( and
+    ( implies ( and ( not x177 ) true ) ( = tmp1 0 ) )
+    ( implies ( and x177 true ) ( = tmp1 (~ 350) ) )
+  )
+)
diff --git a/test/regress/regress0/arith/mod.01.smt2 b/test/regress/regress0/arith/mod.01.smt2
new file mode 100644
index 0000000..f9633c5
--- /dev/null
+++ b/test/regress/regress0/arith/mod.01.smt2
@@ -0,0 +1,11 @@
+; EXPECT: unknown
+(set-logic QF_NIA)
+(set-info :smt-lib-version 2.0)
+(set-info :status unknown)
+(declare-fun n () Int)
+(declare-fun x () Int)
+
+(assert (>= n 1))
+(assert (< (mod x n) n))
+
+(check-sat)
diff --git a/test/regress/regress0/arith/mod.02.smt2 b/test/regress/regress0/arith/mod.02.smt2
new file mode 100644
index 0000000..c6281a5
--- /dev/null
+++ b/test/regress/regress0/arith/mod.02.smt2
@@ -0,0 +1,10 @@
+; EXPECT: unknown
+(set-logic QF_NIA)
+(set-info :smt-lib-version 2.0)
+(set-info :status unknown)
+(declare-fun n () Int)
+
+(assert (distinct n 0))
+(assert (> (mod n n) 0))
+
+(check-sat)
diff --git a/test/regress/regress0/arith/mod.03.smt2 b/test/regress/regress0/arith/mod.03.smt2
new file mode 100644
index 0000000..110de05
--- /dev/null
+++ b/test/regress/regress0/arith/mod.03.smt2
@@ -0,0 +1,11 @@
+; EXPECT: unknown
+(set-logic QF_NIA)
+(set-info :smt-lib-version 2.0)
+(set-info :status unknown)
+(declare-fun n () Int)
+(declare-fun x () Int)
+
+(assert (< (mod x n) 0))
+(assert (< (div x n) 0))
+
+(check-sat)
diff --git a/test/regress/regress0/arith/mult.01.smt2 b/test/regress/regress0/arith/mult.01.smt2
new file mode 100644
index 0000000..f415e0f
--- /dev/null
+++ b/test/regress/regress0/arith/mult.01.smt2
@@ -0,0 +1,16 @@
+; EXPECT: unknown
+(set-logic QF_NRA)
+(set-info :smt-lib-version 2.0)
+(set-info :status unknown)
+(declare-fun n () Real)
+(declare-fun x () Real)
+
+; This example is to exercise the model builder with unknown results
+
+(assert (>= n 1))
+(assert (<= n 1))
+(assert (<= x 1))
+(assert (>= x 1))
+(assert (not (= (* x n) 1)))
+
+(check-sat)
diff --git a/test/regress/regress0/arith/mult.02.smt2 b/test/regress/regress0/arith/mult.02.smt2
new file mode 100644
index 0000000..54b876d
--- /dev/null
+++ b/test/regress/regress0/arith/mult.02.smt2
@@ -0,0 +1,13 @@
+; EXPECT: (error "A non-linear fact was asserted to arithmetic in a linear logic.
+; EXPECT: The fact in question: (>= (* (- 1) (* n n)) (- 1))
+; EXPECT: ")
+; EXIT: 1
+(set-logic QF_LRA)
+(set-info :status unknown)
+(declare-fun n () Real)
+
+; This example is test that LRA rejects multiplication terms
+
+(assert (= (* n n) 1))
+
+(check-sat)
diff --git a/test/regress/regress0/arrayinuf_declare.smt2 b/test/regress/regress0/arrayinuf_declare.smt2
new file mode 100644
index 0000000..5b73f24
--- /dev/null
+++ b/test/regress/regress0/arrayinuf_declare.smt2
@@ -0,0 +1,4 @@
+; EXIT: 0
+(set-logic QF_UF)
+(declare-sort Array 1)
+(declare-fun a ((Array Bool) Bool Bool) Bool)
diff --git a/test/regress/regress0/arrayinuf_error.smt2 b/test/regress/regress0/arrayinuf_error.smt2
new file mode 100644
index 0000000..1fedd95
--- /dev/null
+++ b/test/regress/regress0/arrayinuf_error.smt2
@@ -0,0 +1,8 @@
+; EXPECT: (error "Parse Error: arrayinuf_error.smt2:7.21: Symbol 'Array' not declared as a type
+; EXPECT: 
+; EXPECT:   (declare-fun a (Array Bool Bool))
+; EXPECT:                   ^
+; EXPECT: ")
+(set-logic QF_UF)
+(declare-fun a (Array Bool Bool))
+; EXIT: 1
diff --git a/test/regress/regress0/arrays/Makefile.am b/test/regress/regress0/arrays/Makefile.am
new file mode 100644
index 0000000..17cfa3f
--- /dev/null
+++ b/test/regress/regress0/arrays/Makefile.am
@@ -0,0 +1,73 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	arrays0.smt2 \
+	arrays1.smt2 \
+	arrays2.smt2 \
+	arrays3.smt2 \
+	arrays4.smt2 \
+	incorrect1.smt \
+	incorrect2.smt \
+	incorrect2.minimized.smt \
+	incorrect3.smt \
+	incorrect4.smt \
+	incorrect5.smt \
+	incorrect6.smt \
+	incorrect7.smt \
+	incorrect8.smt \
+	incorrect8.minimized.smt \
+	incorrect9.smt \
+	incorrect10.smt \
+	incorrect11.smt \
+	swap_t1_np_nf_ai_00005_007.cvc.smt \
+	x2.smt \
+	x3.smt \
+	bug272.smt \
+	bug272.minimized.smt \
+	constarr.smt2 \
+	constarr2.smt2 \
+	constarr3.smt2 \
+	constarr.cvc \
+	constarr2.cvc \
+	constarr3.cvc \
+	parsing_ringer.cvc \
+	bug637.delta.smt2 \
+	bool-array.smt2
+
+EXTRA_DIST = $(TESTS)
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/arrays/Makefile.in b/test/regress/regress0/arrays/Makefile.in
new file mode 100644
index 0000000..138c8ae
--- /dev/null
+++ b/test/regress/regress0/arrays/Makefile.in
@@ -0,0 +1,1245 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/arrays
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	arrays0.smt2 \
+	arrays1.smt2 \
+	arrays2.smt2 \
+	arrays3.smt2 \
+	arrays4.smt2 \
+	incorrect1.smt \
+	incorrect2.smt \
+	incorrect2.minimized.smt \
+	incorrect3.smt \
+	incorrect4.smt \
+	incorrect5.smt \
+	incorrect6.smt \
+	incorrect7.smt \
+	incorrect8.smt \
+	incorrect8.minimized.smt \
+	incorrect9.smt \
+	incorrect10.smt \
+	incorrect11.smt \
+	swap_t1_np_nf_ai_00005_007.cvc.smt \
+	x2.smt \
+	x3.smt \
+	bug272.smt \
+	bug272.minimized.smt \
+	constarr.smt2 \
+	constarr2.smt2 \
+	constarr3.smt2 \
+	constarr.cvc \
+	constarr2.cvc \
+	constarr3.cvc \
+	parsing_ringer.cvc \
+	bug637.delta.smt2 \
+	bool-array.smt2
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/arrays/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/arrays/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+arrays0.smt2.log: arrays0.smt2
+	@p='arrays0.smt2'; \
+	b='arrays0.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arrays1.smt2.log: arrays1.smt2
+	@p='arrays1.smt2'; \
+	b='arrays1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arrays2.smt2.log: arrays2.smt2
+	@p='arrays2.smt2'; \
+	b='arrays2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arrays3.smt2.log: arrays3.smt2
+	@p='arrays3.smt2'; \
+	b='arrays3.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arrays4.smt2.log: arrays4.smt2
+	@p='arrays4.smt2'; \
+	b='arrays4.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+incorrect1.smt.log: incorrect1.smt
+	@p='incorrect1.smt'; \
+	b='incorrect1.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+incorrect2.smt.log: incorrect2.smt
+	@p='incorrect2.smt'; \
+	b='incorrect2.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+incorrect2.minimized.smt.log: incorrect2.minimized.smt
+	@p='incorrect2.minimized.smt'; \
+	b='incorrect2.minimized.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+incorrect3.smt.log: incorrect3.smt
+	@p='incorrect3.smt'; \
+	b='incorrect3.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+incorrect4.smt.log: incorrect4.smt
+	@p='incorrect4.smt'; \
+	b='incorrect4.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+incorrect5.smt.log: incorrect5.smt
+	@p='incorrect5.smt'; \
+	b='incorrect5.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+incorrect6.smt.log: incorrect6.smt
+	@p='incorrect6.smt'; \
+	b='incorrect6.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+incorrect7.smt.log: incorrect7.smt
+	@p='incorrect7.smt'; \
+	b='incorrect7.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+incorrect8.smt.log: incorrect8.smt
+	@p='incorrect8.smt'; \
+	b='incorrect8.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+incorrect8.minimized.smt.log: incorrect8.minimized.smt
+	@p='incorrect8.minimized.smt'; \
+	b='incorrect8.minimized.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+incorrect9.smt.log: incorrect9.smt
+	@p='incorrect9.smt'; \
+	b='incorrect9.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+incorrect10.smt.log: incorrect10.smt
+	@p='incorrect10.smt'; \
+	b='incorrect10.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+incorrect11.smt.log: incorrect11.smt
+	@p='incorrect11.smt'; \
+	b='incorrect11.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+swap_t1_np_nf_ai_00005_007.cvc.smt.log: swap_t1_np_nf_ai_00005_007.cvc.smt
+	@p='swap_t1_np_nf_ai_00005_007.cvc.smt'; \
+	b='swap_t1_np_nf_ai_00005_007.cvc.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+x2.smt.log: x2.smt
+	@p='x2.smt'; \
+	b='x2.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+x3.smt.log: x3.smt
+	@p='x3.smt'; \
+	b='x3.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug272.smt.log: bug272.smt
+	@p='bug272.smt'; \
+	b='bug272.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug272.minimized.smt.log: bug272.minimized.smt
+	@p='bug272.minimized.smt'; \
+	b='bug272.minimized.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+constarr.smt2.log: constarr.smt2
+	@p='constarr.smt2'; \
+	b='constarr.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+constarr2.smt2.log: constarr2.smt2
+	@p='constarr2.smt2'; \
+	b='constarr2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+constarr3.smt2.log: constarr3.smt2
+	@p='constarr3.smt2'; \
+	b='constarr3.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+constarr.cvc.log: constarr.cvc
+	@p='constarr.cvc'; \
+	b='constarr.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+constarr2.cvc.log: constarr2.cvc
+	@p='constarr2.cvc'; \
+	b='constarr2.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+constarr3.cvc.log: constarr3.cvc
+	@p='constarr3.cvc'; \
+	b='constarr3.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+parsing_ringer.cvc.log: parsing_ringer.cvc
+	@p='parsing_ringer.cvc'; \
+	b='parsing_ringer.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug637.delta.smt2.log: bug637.delta.smt2
+	@p='bug637.delta.smt2'; \
+	b='bug637.delta.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bool-array.smt2.log: bool-array.smt2
+	@p='bool-array.smt2'; \
+	b='bool-array.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/arrays/arrays0.smt2 b/test/regress/regress0/arrays/arrays0.smt2
new file mode 100644
index 0000000..652ff0b
--- /dev/null
+++ b/test/regress/regress0/arrays/arrays0.smt2
@@ -0,0 +1,22 @@
+(set-logic QF_AX)
+(set-info :source |
+Benchmarks used in the followin paper:
+Big proof engines as little proof engines: new results on rewrite-based satisfiability procedure
+Alessandro Armando, Maria Paola Bonacina, Silvio Ranise, Stephan Schulz. 
+PDPAR'05
+http://www.ai.dist.unige.it/pdpar05/
+
+
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-sort Index 0)
+(declare-sort Element 0)
+(declare-fun a1 () (Array Index Element))
+(declare-fun a2 () (Array Index Element))
+(declare-fun i1 () Index)
+(assert (= (store a1 i1 (select a2 i1)) (store a2 i1 (select a1 i1))))
+(assert (not (= a1 a2)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/arrays/arrays1.smt2 b/test/regress/regress0/arrays/arrays1.smt2
new file mode 100644
index 0000000..f001cc3
--- /dev/null
+++ b/test/regress/regress0/arrays/arrays1.smt2
@@ -0,0 +1,21 @@
+(set-logic QF_AX)
+(set-info :source |
+Benchmarks used in the followin paper:
+Big proof engines as little proof engines: new results on rewrite-based satisfiability procedure
+Alessandro Armando, Maria Paola Bonacina, Silvio Ranise, Stephan Schulz. 
+PDPAR'05
+http://www.ai.dist.unige.it/pdpar05/
+
+
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-sort Index 0)
+(declare-sort Element 0)
+(declare-fun a1 () (Array Index Element))
+(declare-fun i0 () Index)
+(declare-fun i1 () Index)
+(assert (let ((?v_0 (select a1 i1))) (let ((?v_1 (store (store a1 i1 ?v_0) i1 ?v_0))) (let ((?v_2 (select ?v_1 i0))) (let ((?v_3 (store (store ?v_1 i0 ?v_2) i0 ?v_2))) (not (= ?v_3 ?v_3)))))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/arrays/arrays2.smt2 b/test/regress/regress0/arrays/arrays2.smt2
new file mode 100644
index 0000000..7c14477
--- /dev/null
+++ b/test/regress/regress0/arrays/arrays2.smt2
@@ -0,0 +1,21 @@
+(set-logic QF_AX)
+(set-info :source |
+Benchmarks used in the followin paper:
+Big proof engines as little proof engines: new results on rewrite-based satisfiability procedure
+Alessandro Armando, Maria Paola Bonacina, Silvio Ranise, Stephan Schulz. 
+PDPAR'05
+http://www.ai.dist.unige.it/pdpar05/
+
+
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-sort Index 0)
+(declare-sort Element 0)
+(declare-fun a1 () (Array Index Element))
+(declare-fun i0 () Index)
+(declare-fun i1 () Index)
+(assert (let ((?v_0 (select a1 i1))) (let ((?v_1 (store (store a1 i1 ?v_0) i1 ?v_0))) (let ((?v_2 (select ?v_1 i0))) (not (= (store (store ?v_1 i0 (select ?v_1 i1)) i1 ?v_2) (store (store ?v_1 i0 ?v_2) i0 ?v_2)))))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/arrays/arrays3.smt2 b/test/regress/regress0/arrays/arrays3.smt2
new file mode 100644
index 0000000..a21397b
--- /dev/null
+++ b/test/regress/regress0/arrays/arrays3.smt2
@@ -0,0 +1,23 @@
+(set-logic QF_AX)
+(set-info :source |
+Benchmarks used in the followin paper:
+Big proof engines as little proof engines: new results on rewrite-based satisfiability procedure
+Alessandro Armando, Maria Paola Bonacina, Silvio Ranise, Stephan Schulz. 
+PDPAR'05
+http://www.ai.dist.unige.it/pdpar05/
+
+
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-sort Index 0)
+(declare-sort Element 0)
+(declare-fun a1 () (Array Index Element))
+(declare-fun a2 () (Array Index Element))
+(declare-fun i1 () Index)
+(declare-fun i2 () Index)
+(assert (let ((?v_0 (store a2 i1 (select a1 i1))) (?v_1 (store a1 i1 (select a2 i1)))) (= (store ?v_1 i1 (select ?v_0 i2)) (store ?v_0 i2 (select ?v_1 i2)))))
+(assert (not (= a1 a2)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/arrays/arrays4.smt2 b/test/regress/regress0/arrays/arrays4.smt2
new file mode 100644
index 0000000..f4afded
--- /dev/null
+++ b/test/regress/regress0/arrays/arrays4.smt2
@@ -0,0 +1,23 @@
+(set-logic QF_AX)
+(set-info :source |
+Benchmarks used in the followin paper:
+Big proof engines as little proof engines: new results on rewrite-based satisfiability procedure
+Alessandro Armando, Maria Paola Bonacina, Silvio Ranise, Stephan Schulz. 
+PDPAR'05
+http://www.ai.dist.unige.it/pdpar05/
+
+
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-sort Index 0)
+(declare-sort Element 0)
+(declare-fun a1 () (Array Index Element))
+(declare-fun a2 () (Array Index Element))
+(declare-fun i1 () Index)
+(declare-fun i2 () Index)
+(assert (let ((?v_0 (store a2 i1 (select a1 i1))) (?v_1 (store a1 i1 (select a2 i1)))) (= (store ?v_1 i2 (select ?v_0 i2)) (store ?v_0 i2 (select ?v_1 i2)))))
+(assert (not (= a1 a2)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/arrays/bool-array.smt2 b/test/regress/regress0/arrays/bool-array.smt2
new file mode 100644
index 0000000..f05d026
--- /dev/null
+++ b/test/regress/regress0/arrays/bool-array.smt2
@@ -0,0 +1,13 @@
+; COMMAND-LINE: --no-check-proofs --no-check-unsat-cores
+; EXPECT: unsat
+(set-logic QF_AX)
+(set-info :status unsat)
+
+(declare-fun a () (Array Bool Bool))
+(declare-fun b () (Array Bool Bool))
+
+(assert (not (= (select a (= a b)) (select a (not (= a b))))))
+(assert (= (select a true) (select a false)))
+
+(check-sat)
+
diff --git a/test/regress/regress0/arrays/bug272.minimized.smt b/test/regress/regress0/arrays/bug272.minimized.smt
new file mode 100644
index 0000000..3607403
--- /dev/null
+++ b/test/regress/regress0/arrays/bug272.minimized.smt
@@ -0,0 +1,32 @@
+(benchmark fuzzsmt
+:logic QF_AX
+:extrafuns ((v2 Index))
+:extrafuns ((v0 Array))
+:extrafuns ((v3 Element))
+:extrafuns ((v1 Index))
+:status sat
+:formula
+(flet ($n1 true)
+(let (?n2 (select v0 v2))
+(flet ($n3 (= v3 ?n2))
+(let (?n4 (store v0 v1 v3))
+(let (?n5 (store ?n4 v2 v3))
+(let (?n6 (store ?n4 v2 ?n2))
+(flet ($n7 (= ?n5 ?n6))
+(let (?n8 (store ?n5 v1 ?n2))
+(let (?n9 (ite $n7 ?n5 ?n8))
+(flet ($n10 (= v0 ?n6))
+(flet ($n11 (distinct ?n5 ?n8))
+(let (?n12 (select ?n5 v1))
+(flet ($n13 (distinct v3 ?n12))
+(let (?n14 (ite $n13 v3 ?n12))
+(let (?n15 (ite $n11 v3 ?n14))
+(flet ($n16 (= ?n4 ?n6))
+(let (?n17 (ite $n16 ?n2 ?n2))
+(let (?n18 (ite $n10 ?n15 ?n17))
+(let (?n19 (store ?n5 v1 ?n18))
+(flet ($n20 (distinct ?n9 ?n19))
+(flet ($n21 (or $n3 $n20))
+(flet ($n22 (xor $n1 $n21))
+$n22
+)))))))))))))))))))))))
diff --git a/test/regress/regress0/arrays/bug272.smt b/test/regress/regress0/arrays/bug272.smt
new file mode 100644
index 0000000..c7e779a
--- /dev/null
+++ b/test/regress/regress0/arrays/bug272.smt
@@ -0,0 +1,312 @@
+(benchmark fuzzsmt
+:logic QF_AX
+:status sat
+:extrafuns ((v0 Array))
+:extrafuns ((v1 Index))
+:extrafuns ((v2 Index))
+:extrafuns ((v3 Element))
+:formula
+(let (?e4 (store v0 v1 v3))
+(let (?e5 (store ?e4 v2 v3))
+(let (?e6 (store ?e4 v2 v3))
+(let (?e7 (select v0 v2))
+(let (?e8 (store ?e6 v1 ?e7))
+(let (?e9 (select ?e6 v1))
+(let (?e10 (store ?e4 v2 ?e7))
+(flet ($e11 (distinct v0 ?e6))
+(flet ($e12 (distinct ?e6 ?e5))
+(flet ($e13 (distinct ?e8 ?e6))
+(flet ($e14 (= ?e10 v0))
+(flet ($e15 (= ?e10 ?e6))
+(flet ($e16 (distinct ?e6 ?e6))
+(flet ($e17 (= v0 ?e10))
+(flet ($e18 (= ?e4 ?e10))
+(flet ($e19 (distinct v2 v2))
+(flet ($e20 (distinct v2 v2))
+(flet ($e21 (= v1 v2))
+(flet ($e22 (distinct v3 ?e7))
+(flet ($e23 (distinct ?e9 v3))
+(let (?e24 (ite $e21 ?e4 ?e8))
+(let (?e25 (ite $e22 ?e5 ?e8))
+(let (?e26 (ite $e20 ?e24 ?e6))
+(let (?e27 (ite $e15 ?e6 ?e10))
+(let (?e28 (ite $e23 ?e10 ?e27))
+(let (?e29 (ite $e11 v0 ?e28))
+(let (?e30 (ite $e15 ?e25 ?e8))
+(let (?e31 (ite $e18 ?e4 ?e25))
+(let (?e32 (ite $e23 ?e31 ?e26))
+(let (?e33 (ite $e14 ?e6 ?e32))
+(let (?e34 (ite $e16 ?e31 ?e33))
+(let (?e35 (ite $e19 ?e10 ?e29))
+(let (?e36 (ite $e17 v0 ?e6))
+(let (?e37 (ite $e13 ?e36 ?e32))
+(let (?e38 (ite $e20 ?e26 ?e27))
+(let (?e39 (ite $e12 ?e29 ?e25))
+(let (?e40 (ite $e15 v1 v1))
+(let (?e41 (ite $e21 ?e40 v2))
+(let (?e42 (ite $e17 v1 v1))
+(let (?e43 (ite $e13 ?e42 ?e42))
+(let (?e44 (ite $e20 ?e41 ?e40))
+(let (?e45 (ite $e22 ?e40 ?e43))
+(let (?e46 (ite $e19 ?e41 ?e45))
+(let (?e47 (ite $e21 v2 ?e42))
+(let (?e48 (ite $e11 v2 v2))
+(let (?e49 (ite $e13 ?e43 ?e45))
+(let (?e50 (ite $e20 ?e45 v1))
+(let (?e51 (ite $e12 v1 ?e46))
+(let (?e52 (ite $e15 ?e41 ?e49))
+(let (?e53 (ite $e23 ?e44 ?e48))
+(let (?e54 (ite $e20 ?e48 ?e52))
+(let (?e55 (ite $e17 ?e50 v2))
+(let (?e56 (ite $e16 ?e46 v2))
+(let (?e57 (ite $e18 ?e55 ?e52))
+(let (?e58 (ite $e14 ?e43 ?e53))
+(let (?e59 (ite $e18 ?e7 ?e7))
+(let (?e60 (ite $e19 v3 v3))
+(let (?e61 (ite $e14 ?e59 ?e60))
+(let (?e62 (ite $e23 v3 ?e9))
+(let (?e63 (ite $e22 ?e59 ?e59))
+(let (?e64 (ite $e13 ?e62 ?e61))
+(let (?e65 (ite $e15 ?e7 ?e9))
+(let (?e66 (ite $e13 ?e60 ?e62))
+(let (?e67 (ite $e21 ?e62 ?e65))
+(let (?e68 (ite $e20 ?e60 ?e62))
+(let (?e69 (ite $e12 ?e64 ?e9))
+(let (?e70 (ite $e16 v3 ?e68))
+(let (?e71 (ite $e14 ?e62 ?e64))
+(let (?e72 (ite $e16 ?e60 ?e62))
+(let (?e73 (ite $e11 ?e7 ?e63))
+(let (?e74 (ite $e17 ?e66 ?e59))
+(let (?e75 (store ?e36 ?e51 ?e70))
+(let (?e76 (store ?e26 ?e43 ?e74))
+(let (?e77 (store ?e76 ?e50 ?e7))
+(let (?e78 (select ?e31 ?e44))
+(let (?e79 (select v0 ?e40))
+(let (?e80 (store ?e33 ?e48 ?e7))
+(let (?e81 (select ?e39 ?e57))
+(let (?e82 (store ?e26 ?e57 ?e81))
+(flet ($e83 (= ?e35 ?e31))
+(flet ($e84 (= ?e28 ?e4))
+(flet ($e85 (= ?e75 ?e80))
+(flet ($e86 (distinct ?e37 ?e30))
+(flet ($e87 (= ?e39 ?e39))
+(flet ($e88 (= ?e30 ?e82))
+(flet ($e89 (distinct ?e26 ?e31))
+(flet ($e90 (= ?e31 ?e8))
+(flet ($e91 (= ?e33 ?e76))
+(flet ($e92 (distinct ?e77 ?e27))
+(flet ($e93 (= ?e32 ?e38))
+(flet ($e94 (= ?e75 ?e82))
+(flet ($e95 (distinct ?e39 ?e75))
+(flet ($e96 (= ?e30 ?e82))
+(flet ($e97 (distinct ?e39 ?e33))
+(flet ($e98 (= ?e32 ?e6))
+(flet ($e99 (distinct ?e35 ?e4))
+(flet ($e100 (distinct ?e6 ?e75))
+(flet ($e101 (distinct ?e76 v0))
+(flet ($e102 (distinct ?e76 ?e76))
+(flet ($e103 (distinct ?e76 ?e30))
+(flet ($e104 (distinct ?e25 ?e35))
+(flet ($e105 (= ?e39 ?e8))
+(flet ($e106 (distinct ?e38 ?e26))
+(flet ($e107 (distinct ?e10 ?e4))
+(flet ($e108 (= ?e24 ?e82))
+(flet ($e109 (= ?e30 ?e24))
+(flet ($e110 (= ?e5 ?e5))
+(flet ($e111 (distinct ?e82 ?e80))
+(flet ($e112 (= ?e36 ?e26))
+(flet ($e113 (distinct ?e82 ?e6))
+(flet ($e114 (= ?e4 ?e80))
+(flet ($e115 (distinct ?e80 ?e32))
+(flet ($e116 (= ?e37 ?e4))
+(flet ($e117 (distinct ?e24 ?e29))
+(flet ($e118 (= ?e80 ?e10))
+(flet ($e119 (distinct ?e24 ?e34))
+(flet ($e120 (= ?e49 ?e43))
+(flet ($e121 (distinct ?e54 ?e41))
+(flet ($e122 (= ?e46 ?e45))
+(flet ($e123 (distinct v2 v2))
+(flet ($e124 (distinct v1 ?e58))
+(flet ($e125 (distinct ?e56 ?e45))
+(flet ($e126 (= ?e48 ?e47))
+(flet ($e127 (distinct ?e46 ?e43))
+(flet ($e128 (distinct ?e58 ?e43))
+(flet ($e129 (= ?e58 ?e47))
+(flet ($e130 (distinct ?e50 ?e40))
+(flet ($e131 (= ?e44 ?e42))
+(flet ($e132 (= v2 ?e46))
+(flet ($e133 (distinct ?e50 ?e53))
+(flet ($e134 (distinct ?e42 ?e54))
+(flet ($e135 (= ?e53 ?e58))
+(flet ($e136 (distinct v1 ?e52))
+(flet ($e137 (distinct ?e58 ?e53))
+(flet ($e138 (distinct v1 ?e54))
+(flet ($e139 (= ?e47 ?e43))
+(flet ($e140 (= ?e44 ?e41))
+(flet ($e141 (= ?e44 ?e40))
+(flet ($e142 (distinct ?e50 ?e55))
+(flet ($e143 (= ?e52 ?e40))
+(flet ($e144 (= ?e56 ?e43))
+(flet ($e145 (= ?e44 ?e48))
+(flet ($e146 (distinct ?e42 ?e51))
+(flet ($e147 (= ?e56 v2))
+(flet ($e148 (= ?e56 ?e57))
+(flet ($e149 (= ?e61 ?e73))
+(flet ($e150 (distinct ?e73 v3))
+(flet ($e151 (distinct ?e69 ?e70))
+(flet ($e152 (= ?e59 ?e63))
+(flet ($e153 (= ?e9 ?e65))
+(flet ($e154 (= ?e71 ?e64))
+(flet ($e155 (distinct ?e69 ?e73))
+(flet ($e156 (distinct ?e71 ?e78))
+(flet ($e157 (distinct ?e63 ?e78))
+(flet ($e158 (distinct ?e7 ?e66))
+(flet ($e159 (= ?e7 ?e62))
+(flet ($e160 (= ?e81 ?e65))
+(flet ($e161 (= ?e73 ?e63))
+(flet ($e162 (distinct ?e72 ?e73))
+(flet ($e163 (= v3 ?e68))
+(flet ($e164 (= ?e72 ?e73))
+(flet ($e165 (= ?e73 ?e60))
+(flet ($e166 (= ?e73 v3))
+(flet ($e167 (= ?e63 ?e73))
+(flet ($e168 (= v3 ?e59))
+(flet ($e169 (distinct ?e68 ?e67))
+(flet ($e170 (distinct ?e63 ?e66))
+(flet ($e171 (distinct ?e72 ?e64))
+(flet ($e172 (= ?e72 ?e65))
+(flet ($e173 (= ?e72 ?e7))
+(flet ($e174 (distinct ?e67 ?e62))
+(flet ($e175 (distinct ?e66 ?e72))
+(flet ($e176 (distinct ?e68 ?e79))
+(flet ($e177 (distinct ?e70 ?e63))
+(flet ($e178 (distinct ?e9 ?e73))
+(flet ($e179 (distinct ?e7 ?e60))
+(flet ($e180 (= ?e66 ?e71))
+(flet ($e181 (distinct ?e63 ?e63))
+(flet ($e182 (distinct ?e9 ?e74))
+(flet ($e183 (implies $e123 $e123))
+(flet ($e184 (iff $e148 $e146))
+(flet ($e185 (or $e91 $e160))
+(flet ($e186 (xor $e95 $e100))
+(flet ($e187 (not $e164))
+(flet ($e188 (iff $e135 $e128))
+(flet ($e189 (iff $e11 $e153))
+(flet ($e190 (iff $e16 $e151))
+(flet ($e191 (not $e23))
+(flet ($e192 (and $e90 $e84))
+(flet ($e193 (or $e161 $e145))
+(flet ($e194 (implies $e112 $e129))
+(flet ($e195 (iff $e102 $e109))
+(flet ($e196 (or $e188 $e124))
+(flet ($e197 (implies $e21 $e87))
+(flet ($e198 (not $e12))
+(flet ($e199 (and $e139 $e173))
+(flet ($e200 (if_then_else $e85 $e108 $e169))
+(flet ($e201 (implies $e152 $e88))
+(flet ($e202 (iff $e105 $e178))
+(flet ($e203 (xor $e133 $e162))
+(flet ($e204 (or $e167 $e154))
+(flet ($e205 (or $e150 $e194))
+(flet ($e206 (not $e119))
+(flet ($e207 (if_then_else $e184 $e199 $e17))
+(flet ($e208 (xor $e200 $e141))
+(flet ($e209 (not $e185))
+(flet ($e210 (not $e176))
+(flet ($e211 (or $e210 $e177))
+(flet ($e212 (or $e97 $e193))
+(flet ($e213 (iff $e92 $e158))
+(flet ($e214 (if_then_else $e204 $e180 $e174))
+(flet ($e215 (or $e103 $e165))
+(flet ($e216 (and $e116 $e138))
+(flet ($e217 (not $e168))
+(flet ($e218 (implies $e157 $e106))
+(flet ($e219 (or $e93 $e182))
+(flet ($e220 (xor $e203 $e186))
+(flet ($e221 (implies $e122 $e83))
+(flet ($e222 (implies $e137 $e14))
+(flet ($e223 (xor $e192 $e94))
+(flet ($e224 (if_then_else $e89 $e207 $e111))
+(flet ($e225 (if_then_else $e127 $e224 $e15))
+(flet ($e226 (implies $e22 $e212))
+(flet ($e227 (or $e110 $e125))
+(flet ($e228 (not $e104))
+(flet ($e229 (not $e209))
+(flet ($e230 (and $e172 $e214))
+(flet ($e231 (not $e101))
+(flet ($e232 (not $e126))
+(flet ($e233 (not $e196))
+(flet ($e234 (or $e228 $e86))
+(flet ($e235 (xor $e201 $e18))
+(flet ($e236 (if_then_else $e223 $e231 $e147))
+(flet ($e237 (implies $e144 $e208))
+(flet ($e238 (not $e175))
+(flet ($e239 (if_then_else $e211 $e225 $e159))
+(flet ($e240 (or $e190 $e156))
+(flet ($e241 (not $e233))
+(flet ($e242 (if_then_else $e220 $e170 $e205))
+(flet ($e243 (xor $e238 $e136))
+(flet ($e244 (and $e149 $e163))
+(flet ($e245 (and $e206 $e155))
+(flet ($e246 (and $e219 $e187))
+(flet ($e247 (and $e235 $e227))
+(flet ($e248 (iff $e222 $e239))
+(flet ($e249 (implies $e179 $e195))
+(flet ($e250 (not $e191))
+(flet ($e251 (or $e249 $e197))
+(flet ($e252 (xor $e221 $e242))
+(flet ($e253 (if_then_else $e130 $e240 $e202))
+(flet ($e254 (not $e244))
+(flet ($e255 (and $e230 $e120))
+(flet ($e256 (iff $e189 $e140))
+(flet ($e257 (implies $e213 $e19))
+(flet ($e258 (and $e96 $e252))
+(flet ($e259 (and $e256 $e257))
+(flet ($e260 (xor $e259 $e134))
+(flet ($e261 (not $e166))
+(flet ($e262 (implies $e216 $e181))
+(flet ($e263 (not $e260))
+(flet ($e264 (xor $e258 $e142))
+(flet ($e265 (if_then_else $e131 $e229 $e13))
+(flet ($e266 (not $e143))
+(flet ($e267 (or $e237 $e262))
+(flet ($e268 (if_then_else $e267 $e245 $e248))
+(flet ($e269 (implies $e171 $e254))
+(flet ($e270 (if_then_else $e243 $e269 $e268))
+(flet ($e271 (xor $e250 $e265))
+(flet ($e272 (implies $e121 $e253))
+(flet ($e273 (not $e113))
+(flet ($e274 (and $e232 $e198))
+(flet ($e275 (implies $e99 $e263))
+(flet ($e276 (implies $e117 $e275))
+(flet ($e277 (or $e270 $e114))
+(flet ($e278 (or $e246 $e247))
+(flet ($e279 (and $e255 $e241))
+(flet ($e280 (not $e278))
+(flet ($e281 (and $e217 $e280))
+(flet ($e282 (if_then_else $e277 $e251 $e251))
+(flet ($e283 (or $e274 $e282))
+(flet ($e284 (and $e98 $e236))
+(flet ($e285 (or $e271 $e115))
+(flet ($e286 (or $e272 $e284))
+(flet ($e287 (not $e279))
+(flet ($e288 (implies $e283 $e273))
+(flet ($e289 (not $e20))
+(flet ($e290 (or $e289 $e286))
+(flet ($e291 (if_then_else $e276 $e226 $e118))
+(flet ($e292 (and $e285 $e266))
+(flet ($e293 (xor $e218 $e218))
+(flet ($e294 (iff $e292 $e281))
+(flet ($e295 (if_then_else $e293 $e183 $e234))
+(flet ($e296 (or $e132 $e295))
+(flet ($e297 (xor $e288 $e261))
+(flet ($e298 (xor $e294 $e107))
+(flet ($e299 (and $e290 $e215))
+(flet ($e300 (and $e297 $e264))
+(flet ($e301 (or $e300 $e287))
+(flet ($e302 (or $e296 $e298))
+(flet ($e303 (xor $e291 $e299))
+(flet ($e304 (if_then_else $e302 $e303 $e301))
+$e304
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/arrays/bug637.delta.smt2 b/test/regress/regress0/arrays/bug637.delta.smt2
new file mode 100644
index 0000000..45e09f2
--- /dev/null
+++ b/test/regress/regress0/arrays/bug637.delta.smt2
@@ -0,0 +1,14 @@
+(set-logic QF_ABV)
+(set-info :status unsat)
+(declare-fun x2 () (_ BitVec 32))
+(declare-fun a () (Array (_ BitVec 32) (_ BitVec 8)))
+(declare-fun x3 () (_ BitVec 32))
+
+(assert (not (=
+(store (store (store a x2 (select a (bvadd x2 (_ bv1 32))))
+	      (bvadd x2 (_ bv1 32)) (select a (bvadd x2 (_ bv1 32))))
+       x2 (select a x2))
+
+       a)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/arrays/constarr.cvc b/test/regress/regress0/arrays/constarr.cvc
new file mode 100644
index 0000000..406a1ce
--- /dev/null
+++ b/test/regress/regress0/arrays/constarr.cvc
@@ -0,0 +1,7 @@
+% EXPECT: unsat
+all1 : ARRAY INT OF INT;
+a, i : INT;
+ASSERT all1 = ARRAY(INT OF INT) : 1;
+ASSERT a = all1[i];
+ASSERT a /= 1;
+CHECKSAT TRUE;
diff --git a/test/regress/regress0/arrays/constarr.smt2 b/test/regress/regress0/arrays/constarr.smt2
new file mode 100644
index 0000000..b1fb02b
--- /dev/null
+++ b/test/regress/regress0/arrays/constarr.smt2
@@ -0,0 +1,9 @@
+(set-logic QF_ALIA)
+(set-info :status unsat)
+(declare-const all1 (Array Int Int))
+(declare-const a Int)
+(declare-const i Int)
+(assert (= all1 ((as const (Array Int Int)) 1)))
+(assert (= a (select all1 i)))
+(assert (not (= a 1)))
+(check-sat)
diff --git a/test/regress/regress0/arrays/constarr2.cvc b/test/regress/regress0/arrays/constarr2.cvc
new file mode 100644
index 0000000..90ff114
--- /dev/null
+++ b/test/regress/regress0/arrays/constarr2.cvc
@@ -0,0 +1,7 @@
+% EXPECT: unsat
+all1, all2 : ARRAY INT OF INT;
+a, i : INT;
+ASSERT all1 = ARRAY(INT OF INT) : 1;
+ASSERT all2 = ARRAY(INT OF INT) : 2;
+ASSERT all1 = all2;
+CHECKSAT;
diff --git a/test/regress/regress0/arrays/constarr2.smt2 b/test/regress/regress0/arrays/constarr2.smt2
new file mode 100644
index 0000000..c84e678
--- /dev/null
+++ b/test/regress/regress0/arrays/constarr2.smt2
@@ -0,0 +1,10 @@
+(set-logic QF_ALIA)
+(set-info :status unsat)
+(declare-const all1 (Array Int Int))
+(declare-const all2 (Array Int Int))
+(declare-const a Int)
+(declare-const i Int)
+(assert (= all1 ((as const (Array Int Int)) 1)))
+(assert (= all2 ((as const (Array Int Int)) 2)))
+(assert (= all1 all2))
+(check-sat)
diff --git a/test/regress/regress0/arrays/constarr3.cvc b/test/regress/regress0/arrays/constarr3.cvc
new file mode 100644
index 0000000..bf5cf96
--- /dev/null
+++ b/test/regress/regress0/arrays/constarr3.cvc
@@ -0,0 +1,12 @@
+% EXIT: 1
+% EXPECT: Array theory solver does not yet support write-chains connecting two different constant arrays
+% should be unsat
+all1, all2 : ARRAY INT OF INT;
+aa, bb : ARRAY INT OF INT;
+a, i : INT;
+ASSERT all1 = ARRAY(INT OF INT) : 1;
+ASSERT aa = all1 WITH [i] := 0;
+ASSERT all2 = ARRAY(INT OF INT) : 2;
+ASSERT bb = all2 WITH [i] := 0;
+ASSERT aa = bb;
+CHECKSAT;
diff --git a/test/regress/regress0/arrays/constarr3.smt2 b/test/regress/regress0/arrays/constarr3.smt2
new file mode 100644
index 0000000..d514fff
--- /dev/null
+++ b/test/regress/regress0/arrays/constarr3.smt2
@@ -0,0 +1,16 @@
+; EXIT: 1
+; EXPECT: (error "Array theory solver does not yet support write-chains connecting two different constant arrays")
+(set-logic QF_ALIA)
+(set-info :status unsat)
+(declare-const all1 (Array Int Int))
+(declare-const all2 (Array Int Int))
+(declare-const aa (Array Int Int))
+(declare-const bb (Array Int Int))
+(declare-const a Int)
+(declare-const i Int)
+(assert (= all1 ((as const (Array Int Int)) 1)))
+(assert (= aa (store all1 i 0)))
+(assert (= all2 ((as const (Array Int Int)) 2)))
+(assert (= bb (store all2 i 0)))
+(assert (= aa bb))
+(check-sat)
diff --git a/test/regress/regress0/arrays/incorrect1.smt b/test/regress/regress0/arrays/incorrect1.smt
new file mode 100644
index 0000000..03b7433
--- /dev/null
+++ b/test/regress/regress0/arrays/incorrect1.smt
@@ -0,0 +1,132 @@
+(benchmark fuzzsmt
+:logic QF_AX
+:status unsat
+:extrafuns ((v0 Array))
+:extrafuns ((v1 Index))
+:extrafuns ((v2 Index))
+:extrafuns ((v3 Index))
+:extrafuns ((v4 Element))
+:formula
+(flet ($e5 (distinct v0 v0))
+(flet ($e6 (= v3 v2))
+(flet ($e7 (= v1 v2))
+(flet ($e8 (distinct v4 v4))
+(let (?e9 (ite $e6 v0 v0))
+(let (?e10 (ite $e8 ?e9 v0))
+(let (?e11 (ite $e8 ?e9 ?e9))
+(let (?e12 (ite $e7 v0 ?e11))
+(let (?e13 (ite $e5 ?e10 ?e11))
+(let (?e14 (ite $e5 v3 v1))
+(let (?e15 (ite $e8 v2 v2))
+(let (?e16 (ite $e6 v3 v1))
+(let (?e17 (ite $e6 ?e15 ?e15))
+(let (?e18 (ite $e8 ?e17 ?e16))
+(let (?e19 (ite $e8 ?e15 ?e15))
+(let (?e20 (ite $e6 v3 ?e19))
+(let (?e21 (ite $e6 ?e15 ?e18))
+(let (?e22 (ite $e6 v1 ?e20))
+(let (?e23 (ite $e7 v3 ?e15))
+(let (?e24 (ite $e8 v4 v4))
+(let (?e25 (ite $e5 v4 v4))
+(let (?e26 (ite $e6 ?e25 ?e25))
+(let (?e27 (ite $e7 v4 ?e25))
+(let (?e28 (select ?e12 ?e18))
+(flet ($e29 (distinct ?e12 ?e9))
+(flet ($e30 (distinct v0 ?e12))
+(flet ($e31 (distinct ?e9 v0))
+(flet ($e32 (= ?e11 ?e9))
+(flet ($e33 (= ?e11 ?e10))
+(flet ($e34 (= ?e10 v0))
+(flet ($e35 (= ?e11 ?e10))
+(flet ($e36 (= v0 ?e9))
+(flet ($e37 (distinct ?e11 ?e12))
+(flet ($e38 (distinct ?e11 ?e9))
+(flet ($e39 (distinct ?e10 ?e11))
+(flet ($e40 (distinct ?e11 ?e13))
+(flet ($e41 (= ?e14 ?e21))
+(flet ($e42 (distinct ?e19 ?e17))
+(flet ($e43 (= ?e22 ?e21))
+(flet ($e44 (distinct ?e14 ?e18))
+(flet ($e45 (distinct v1 ?e21))
+(flet ($e46 (distinct ?e15 v3))
+(flet ($e47 (= v3 ?e19))
+(flet ($e48 (= ?e21 ?e22))
+(flet ($e49 (distinct ?e16 ?e21))
+(flet ($e50 (distinct ?e18 ?e14))
+(flet ($e51 (= v2 v2))
+(flet ($e52 (= ?e15 ?e22))
+(flet ($e53 (distinct ?e18 ?e21))
+(flet ($e54 (= v1 ?e19))
+(flet ($e55 (distinct ?e19 ?e16))
+(flet ($e56 (= ?e21 v2))
+(flet ($e57 (distinct v2 ?e22))
+(flet ($e58 (distinct ?e19 ?e21))
+(flet ($e59 (= v2 ?e19))
+(flet ($e60 (distinct ?e20 v1))
+(flet ($e61 (distinct ?e19 ?e21))
+(flet ($e62 (= ?e19 ?e16))
+(flet ($e63 (distinct ?e19 ?e19))
+(flet ($e64 (distinct ?e16 v1))
+(flet ($e65 (distinct v2 ?e20))
+(flet ($e66 (distinct ?e18 ?e23))
+(flet ($e67 (distinct ?e25 v4))
+(flet ($e68 (= ?e27 ?e27))
+(flet ($e69 (distinct ?e28 ?e27))
+(flet ($e70 (distinct ?e26 ?e26))
+(flet ($e71 (= ?e28 v4))
+(flet ($e72 (= ?e27 ?e24))
+(flet ($e73 (if_then_else $e29 $e38 $e34))
+(flet ($e74 (iff $e57 $e57))
+(flet ($e75 (iff $e71 $e42))
+(flet ($e76 (xor $e61 $e58))
+(flet ($e77 (and $e39 $e30))
+(flet ($e78 (implies $e63 $e36))
+(flet ($e79 (and $e41 $e52))
+(flet ($e80 (not $e70))
+(flet ($e81 (implies $e8 $e33))
+(flet ($e82 (or $e56 $e65))
+(flet ($e83 (or $e78 $e47))
+(flet ($e84 (if_then_else $e77 $e73 $e77))
+(flet ($e85 (or $e45 $e54))
+(flet ($e86 (or $e80 $e43))
+(flet ($e87 (iff $e6 $e32))
+(flet ($e88 (xor $e44 $e40))
+(flet ($e89 (iff $e66 $e55))
+(flet ($e90 (and $e87 $e84))
+(flet ($e91 (not $e67))
+(flet ($e92 (xor $e79 $e31))
+(flet ($e93 (or $e75 $e72))
+(flet ($e94 (and $e51 $e90))
+(flet ($e95 (and $e60 $e35))
+(flet ($e96 (xor $e68 $e82))
+(flet ($e97 (and $e88 $e89))
+(flet ($e98 (and $e59 $e96))
+(flet ($e99 (and $e93 $e92))
+(flet ($e100 (if_then_else $e86 $e76 $e37))
+(flet ($e101 (if_then_else $e81 $e64 $e97))
+(flet ($e102 (or $e5 $e100))
+(flet ($e103 (if_then_else $e48 $e85 $e99))
+(flet ($e104 (if_then_else $e95 $e69 $e94))
+(flet ($e105 (iff $e50 $e98))
+(flet ($e106 (xor $e62 $e83))
+(flet ($e107 (implies $e104 $e7))
+(flet ($e108 (if_then_else $e103 $e102 $e53))
+(flet ($e109 (iff $e105 $e105))
+(flet ($e110 (implies $e74 $e46))
+(flet ($e111 (not $e106))
+(flet ($e112 (xor $e109 $e101))
+(flet ($e113 (or $e111 $e91))
+(flet ($e114 (if_then_else $e107 $e108 $e108))
+(flet ($e115 (iff $e112 $e113))
+(flet ($e116 (iff $e115 $e115))
+(flet ($e117 (and $e110 $e116))
+(flet ($e118 (and $e114 $e114))
+(flet ($e119 (not $e49))
+(flet ($e120 (or $e118 $e118))
+(flet ($e121 (not $e119))
+(flet ($e122 (and $e117 $e121))
+(flet ($e123 (not $e122))
+(flet ($e124 (and $e120 $e123))
+$e124
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/arrays/incorrect10.smt b/test/regress/regress0/arrays/incorrect10.smt
new file mode 100644
index 0000000..402fcc1
--- /dev/null
+++ b/test/regress/regress0/arrays/incorrect10.smt
@@ -0,0 +1,275 @@
+(benchmark fuzzsmt
+:logic QF_AX
+:status unsat
+:extrafuns ((v0 Array))
+:extrafuns ((v1 Index))
+:extrafuns ((v2 Index))
+:extrafuns ((v3 Element))
+:formula
+(let (?e4 (store v0 v1 v3))
+(let (?e5 (store ?e4 v2 v3))
+(let (?e6 (select ?e5 v1))
+(let (?e7 (select ?e4 v1))
+(let (?e8 (select ?e4 v1))
+(let (?e9 (store ?e4 v2 ?e8))
+(let (?e10 (select ?e9 v1))
+(let (?e11 (select ?e9 v1))
+(flet ($e12 (= v0 v0))
+(flet ($e13 (distinct ?e5 v0))
+(flet ($e14 (= ?e5 ?e9))
+(flet ($e15 (= v0 v0))
+(flet ($e16 (= ?e5 ?e4))
+(flet ($e17 (= v2 v1))
+(flet ($e18 (= ?e10 ?e11))
+(flet ($e19 (= v3 ?e6))
+(flet ($e20 (= ?e6 ?e8))
+(flet ($e21 (distinct ?e6 ?e11))
+(flet ($e22 (= ?e11 ?e10))
+(flet ($e23 (= ?e7 ?e6))
+(let (?e24 (ite $e18 ?e4 ?e4))
+(let (?e25 (ite $e16 ?e5 ?e24))
+(let (?e26 (ite $e14 v0 ?e4))
+(let (?e27 (ite $e17 ?e9 ?e26))
+(let (?e28 (ite $e22 v0 v0))
+(let (?e29 (ite $e20 ?e28 ?e28))
+(let (?e30 (ite $e21 ?e27 ?e9))
+(let (?e31 (ite $e14 ?e27 ?e4))
+(let (?e32 (ite $e15 ?e27 ?e25))
+(let (?e33 (ite $e13 ?e28 ?e4))
+(let (?e34 (ite $e12 ?e33 ?e27))
+(let (?e35 (ite $e23 ?e25 ?e9))
+(let (?e36 (ite $e14 ?e9 ?e9))
+(let (?e37 (ite $e15 ?e26 ?e5))
+(let (?e38 (ite $e19 ?e26 ?e5))
+(let (?e39 (ite $e15 v1 v2))
+(let (?e40 (ite $e16 v2 ?e39))
+(let (?e41 (ite $e18 ?e40 v1))
+(let (?e42 (ite $e21 ?e39 v2))
+(let (?e43 (ite $e17 v1 ?e39))
+(let (?e44 (ite $e13 v1 v2))
+(let (?e45 (ite $e22 ?e40 ?e42))
+(let (?e46 (ite $e23 ?e41 v2))
+(let (?e47 (ite $e12 ?e41 ?e39))
+(let (?e48 (ite $e19 ?e47 ?e39))
+(let (?e49 (ite $e18 v1 v2))
+(let (?e50 (ite $e14 ?e43 ?e49))
+(let (?e51 (ite $e20 ?e49 ?e46))
+(let (?e52 (ite $e16 v3 v3))
+(let (?e53 (ite $e17 ?e10 v3))
+(let (?e54 (ite $e12 ?e6 ?e8))
+(let (?e55 (ite $e12 ?e11 ?e10))
+(let (?e56 (ite $e13 v3 ?e10))
+(let (?e57 (ite $e15 ?e7 ?e54))
+(let (?e58 (ite $e19 ?e10 ?e55))
+(let (?e59 (ite $e18 ?e52 ?e7))
+(let (?e60 (ite $e23 ?e56 ?e8))
+(let (?e61 (ite $e14 ?e57 ?e59))
+(let (?e62 (ite $e12 ?e55 v3))
+(let (?e63 (ite $e22 ?e52 ?e11))
+(let (?e64 (ite $e13 ?e61 v3))
+(let (?e65 (ite $e20 ?e6 ?e63))
+(let (?e66 (ite $e21 ?e11 ?e63))
+(let (?e67 (store ?e28 ?e41 ?e66))
+(let (?e68 (store v0 ?e42 ?e8))
+(let (?e69 (select ?e27 ?e43))
+(let (?e70 (select ?e35 ?e40))
+(let (?e71 (select ?e28 ?e44))
+(let (?e72 (store ?e25 ?e39 ?e65))
+(let (?e73 (select ?e67 ?e45))
+(let (?e74 (store ?e25 v1 ?e66))
+(let (?e75 (select ?e34 ?e48))
+(flet ($e76 (= ?e37 ?e33))
+(flet ($e77 (distinct ?e34 ?e34))
+(flet ($e78 (= ?e32 ?e30))
+(flet ($e79 (distinct ?e31 ?e74))
+(flet ($e80 (= ?e33 ?e26))
+(flet ($e81 (= ?e31 ?e36))
+(flet ($e82 (distinct ?e34 ?e9))
+(flet ($e83 (distinct ?e9 ?e67))
+(flet ($e84 (= ?e28 ?e27))
+(flet ($e85 (distinct ?e33 ?e33))
+(flet ($e86 (= v0 ?e68))
+(flet ($e87 (distinct ?e29 ?e27))
+(flet ($e88 (distinct ?e72 ?e4))
+(flet ($e89 (distinct ?e37 ?e5))
+(flet ($e90 (= ?e67 ?e38))
+(flet ($e91 (distinct ?e27 ?e67))
+(flet ($e92 (distinct ?e30 ?e25))
+(flet ($e93 (distinct ?e33 ?e38))
+(flet ($e94 (= ?e30 ?e25))
+(flet ($e95 (distinct ?e5 ?e37))
+(flet ($e96 (distinct ?e37 ?e35))
+(flet ($e97 (distinct ?e38 ?e29))
+(flet ($e98 (distinct ?e4 ?e4))
+(flet ($e99 (distinct ?e25 ?e26))
+(flet ($e100 (= ?e32 ?e24))
+(flet ($e101 (= ?e40 ?e46))
+(flet ($e102 (distinct ?e51 ?e47))
+(flet ($e103 (= ?e51 ?e47))
+(flet ($e104 (= ?e46 ?e51))
+(flet ($e105 (= ?e41 ?e41))
+(flet ($e106 (distinct ?e43 ?e41))
+(flet ($e107 (distinct ?e49 ?e42))
+(flet ($e108 (distinct ?e44 ?e46))
+(flet ($e109 (distinct ?e45 ?e49))
+(flet ($e110 (= ?e50 ?e43))
+(flet ($e111 (= ?e51 ?e39))
+(flet ($e112 (= ?e45 ?e47))
+(flet ($e113 (= ?e41 v2))
+(flet ($e114 (= ?e51 ?e50))
+(flet ($e115 (distinct ?e45 ?e46))
+(flet ($e116 (distinct v2 ?e47))
+(flet ($e117 (= ?e45 ?e44))
+(flet ($e118 (distinct ?e41 ?e51))
+(flet ($e119 (= ?e46 ?e49))
+(flet ($e120 (distinct ?e50 ?e41))
+(flet ($e121 (= ?e50 ?e49))
+(flet ($e122 (distinct ?e50 ?e50))
+(flet ($e123 (distinct ?e41 ?e48))
+(flet ($e124 (distinct ?e46 ?e46))
+(flet ($e125 (= ?e39 v1))
+(flet ($e126 (distinct ?e6 ?e71))
+(flet ($e127 (= ?e58 ?e61))
+(flet ($e128 (= ?e7 ?e58))
+(flet ($e129 (distinct ?e66 ?e71))
+(flet ($e130 (= ?e7 ?e63))
+(flet ($e131 (= ?e53 ?e59))
+(flet ($e132 (distinct ?e63 ?e55))
+(flet ($e133 (= ?e66 ?e7))
+(flet ($e134 (distinct ?e60 ?e53))
+(flet ($e135 (distinct ?e52 ?e65))
+(flet ($e136 (distinct ?e11 ?e11))
+(flet ($e137 (= ?e54 ?e57))
+(flet ($e138 (= ?e73 v3))
+(flet ($e139 (= ?e70 ?e66))
+(flet ($e140 (distinct ?e59 ?e61))
+(flet ($e141 (distinct ?e7 ?e54))
+(flet ($e142 (= ?e70 ?e73))
+(flet ($e143 (distinct v3 ?e10))
+(flet ($e144 (= ?e7 ?e58))
+(flet ($e145 (= ?e57 ?e69))
+(flet ($e146 (distinct ?e52 ?e58))
+(flet ($e147 (distinct ?e55 ?e62))
+(flet ($e148 (= ?e10 ?e66))
+(flet ($e149 (distinct ?e70 ?e75))
+(flet ($e150 (= v3 ?e60))
+(flet ($e151 (= ?e7 ?e52))
+(flet ($e152 (distinct ?e73 ?e64))
+(flet ($e153 (= ?e56 ?e57))
+(flet ($e154 (distinct ?e52 ?e75))
+(flet ($e155 (distinct ?e66 ?e69))
+(flet ($e156 (= ?e56 ?e63))
+(flet ($e157 (= ?e11 ?e10))
+(flet ($e158 (= ?e69 ?e65))
+(flet ($e159 (distinct ?e52 ?e7))
+(flet ($e160 (= ?e53 ?e8))
+(flet ($e161 (implies $e83 $e151))
+(flet ($e162 (and $e156 $e109))
+(flet ($e163 (not $e133))
+(flet ($e164 (implies $e100 $e143))
+(flet ($e165 (iff $e114 $e162))
+(flet ($e166 (or $e76 $e152))
+(flet ($e167 (and $e12 $e93))
+(flet ($e168 (xor $e164 $e78))
+(flet ($e169 (and $e15 $e106))
+(flet ($e170 (not $e111))
+(flet ($e171 (xor $e18 $e135))
+(flet ($e172 (not $e14))
+(flet ($e173 (iff $e125 $e20))
+(flet ($e174 (iff $e84 $e142))
+(flet ($e175 (if_then_else $e129 $e150 $e153))
+(flet ($e176 (iff $e80 $e118))
+(flet ($e177 (xor $e99 $e103))
+(flet ($e178 (or $e97 $e91))
+(flet ($e179 (if_then_else $e127 $e77 $e172))
+(flet ($e180 (and $e169 $e101))
+(flet ($e181 (or $e147 $e90))
+(flet ($e182 (implies $e181 $e157))
+(flet ($e183 (or $e94 $e119))
+(flet ($e184 (and $e120 $e174))
+(flet ($e185 (iff $e23 $e177))
+(flet ($e186 (or $e86 $e85))
+(flet ($e187 (implies $e132 $e16))
+(flet ($e188 (if_then_else $e187 $e186 $e21))
+(flet ($e189 (or $e92 $e92))
+(flet ($e190 (xor $e113 $e128))
+(flet ($e191 (iff $e179 $e171))
+(flet ($e192 (not $e104))
+(flet ($e193 (and $e137 $e107))
+(flet ($e194 (or $e170 $e176))
+(flet ($e195 (or $e134 $e188))
+(flet ($e196 (and $e112 $e116))
+(flet ($e197 (if_then_else $e122 $e163 $e17))
+(flet ($e198 (if_then_else $e102 $e87 $e13))
+(flet ($e199 (or $e184 $e197))
+(flet ($e200 (implies $e189 $e196))
+(flet ($e201 (and $e191 $e79))
+(flet ($e202 (iff $e145 $e124))
+(flet ($e203 (if_then_else $e139 $e199 $e182))
+(flet ($e204 (iff $e146 $e141))
+(flet ($e205 (iff $e98 $e175))
+(flet ($e206 (or $e190 $e148))
+(flet ($e207 (and $e159 $e185))
+(flet ($e208 (xor $e144 $e165))
+(flet ($e209 (if_then_else $e202 $e167 $e19))
+(flet ($e210 (or $e208 $e180))
+(flet ($e211 (or $e89 $e203))
+(flet ($e212 (not $e198))
+(flet ($e213 (iff $e210 $e211))
+(flet ($e214 (implies $e205 $e81))
+(flet ($e215 (not $e192))
+(flet ($e216 (or $e110 $e213))
+(flet ($e217 (implies $e96 $e154))
+(flet ($e218 (not $e155))
+(flet ($e219 (xor $e136 $e105))
+(flet ($e220 (iff $e217 $e130))
+(flet ($e221 (or $e138 $e126))
+(flet ($e222 (not $e178))
+(flet ($e223 (if_then_else $e215 $e82 $e140))
+(flet ($e224 (not $e221))
+(flet ($e225 (implies $e204 $e220))
+(flet ($e226 (xor $e168 $e209))
+(flet ($e227 (or $e95 $e214))
+(flet ($e228 (implies $e218 $e218))
+(flet ($e229 (not $e225))
+(flet ($e230 (not $e229))
+(flet ($e231 (implies $e222 $e228))
+(flet ($e232 (and $e226 $e121))
+(flet ($e233 (iff $e206 $e108))
+(flet ($e234 (and $e230 $e166))
+(flet ($e235 (implies $e231 $e232))
+(flet ($e236 (not $e88))
+(flet ($e237 (not $e201))
+(flet ($e238 (if_then_else $e237 $e236 $e173))
+(flet ($e239 (and $e235 $e193))
+(flet ($e240 (xor $e239 $e238))
+(flet ($e241 (implies $e123 $e219))
+(flet ($e242 (if_then_else $e234 $e212 $e149))
+(flet ($e243 (or $e115 $e242))
+(flet ($e244 (and $e200 $e183))
+(flet ($e245 (implies $e207 $e233))
+(flet ($e246 (iff $e22 $e241))
+(flet ($e247 (implies $e194 $e240))
+(flet ($e248 (implies $e223 $e131))
+(flet ($e249 (or $e227 $e158))
+(flet ($e250 (and $e160 $e224))
+(flet ($e251 (or $e250 $e243))
+(flet ($e252 (or $e117 $e117))
+(flet ($e253 (and $e195 $e248))
+(flet ($e254 (xor $e253 $e249))
+(flet ($e255 (implies $e246 $e254))
+(flet ($e256 (iff $e251 $e161))
+(flet ($e257 (xor $e216 $e245))
+(flet ($e258 (xor $e255 $e256))
+(flet ($e259 (iff $e244 $e257))
+(flet ($e260 (if_then_else $e247 $e259 $e247))
+(flet ($e261 (xor $e258 $e252))
+(flet ($e262 (not $e260))
+(flet ($e263 (or $e262 $e262))
+(flet ($e264 (iff $e263 $e263))
+(flet ($e265 (and $e261 $e261))
+(flet ($e266 (implies $e264 $e264))
+(flet ($e267 (and $e265 $e266))
+$e267
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/arrays/incorrect11.smt b/test/regress/regress0/arrays/incorrect11.smt
new file mode 100644
index 0000000..0815e98
--- /dev/null
+++ b/test/regress/regress0/arrays/incorrect11.smt
@@ -0,0 +1,96 @@
+(benchmark fuzzsmt
+:logic QF_AX
+:status unsat
+:extrafuns ((v0 Array))
+:extrafuns ((v1 Index))
+:extrafuns ((v2 Element))
+:extrafuns ((v3 Element))
+:extrafuns ((v4 Element))
+:formula
+(flet ($e5 (distinct v0 v0))
+(flet ($e6 (distinct v1 v1))
+(flet ($e7 (= v2 v3))
+(flet ($e8 (distinct v2 v4))
+(let (?e9 (ite $e7 v0 v0))
+(let (?e10 (ite $e5 v0 v0))
+(let (?e11 (ite $e8 v0 ?e9))
+(let (?e12 (ite $e8 ?e9 ?e9))
+(let (?e13 (ite $e6 ?e10 v0))
+(let (?e14 (ite $e8 v1 v1))
+(let (?e15 (ite $e5 ?e14 v1))
+(let (?e16 (ite $e7 v1 ?e15))
+(let (?e17 (ite $e6 ?e14 ?e15))
+(let (?e18 (ite $e7 v4 v2))
+(let (?e19 (ite $e5 v3 v3))
+(let (?e20 (ite $e8 ?e18 ?e18))
+(let (?e21 (ite $e6 v3 v3))
+(let (?e22 (select ?e13 v1))
+(flet ($e23 (distinct ?e9 ?e9))
+(flet ($e24 (= v0 ?e10))
+(flet ($e25 (distinct ?e9 ?e12))
+(flet ($e26 (= ?e11 v0))
+(flet ($e27 (distinct ?e13 ?e11))
+(flet ($e28 (distinct ?e14 v1))
+(flet ($e29 (= ?e15 ?e16))
+(flet ($e30 (= ?e16 v1))
+(flet ($e31 (distinct v1 ?e15))
+(flet ($e32 (= ?e17 v1))
+(flet ($e33 (= ?e21 ?e18))
+(flet ($e34 (distinct v3 v3))
+(flet ($e35 (= ?e21 ?e20))
+(flet ($e36 (distinct ?e18 v4))
+(flet ($e37 (distinct v2 v4))
+(flet ($e38 (= ?e20 ?e21))
+(flet ($e39 (= v3 v2))
+(flet ($e40 (distinct v3 ?e19))
+(flet ($e41 (distinct v4 ?e18))
+(flet ($e42 (= v3 v3))
+(flet ($e43 (= ?e21 ?e21))
+(flet ($e44 (distinct v2 ?e18))
+(flet ($e45 (distinct v2 v2))
+(flet ($e46 (distinct v3 v3))
+(flet ($e47 (= ?e19 v3))
+(flet ($e48 (= v4 v4))
+(flet ($e49 (= ?e19 v2))
+(flet ($e50 (= ?e20 ?e18))
+(flet ($e51 (distinct ?e22 ?e22))
+(flet ($e52 (or $e42 $e31))
+(flet ($e53 (xor $e39 $e35))
+(flet ($e54 (and $e51 $e30))
+(flet ($e55 (or $e43 $e54))
+(flet ($e56 (xor $e26 $e33))
+(flet ($e57 (not $e41))
+(flet ($e58 (implies $e32 $e50))
+(flet ($e59 (not $e24))
+(flet ($e60 (if_then_else $e53 $e7 $e27))
+(flet ($e61 (and $e48 $e38))
+(flet ($e62 (and $e61 $e52))
+(flet ($e63 (xor $e25 $e58))
+(flet ($e64 (and $e49 $e8))
+(flet ($e65 (xor $e62 $e34))
+(flet ($e66 (iff $e29 $e37))
+(flet ($e67 (if_then_else $e65 $e65 $e65))
+(flet ($e68 (xor $e46 $e55))
+(flet ($e69 (xor $e66 $e56))
+(flet ($e70 (or $e40 $e69))
+(flet ($e71 (xor $e36 $e6))
+(flet ($e72 (iff $e59 $e68))
+(flet ($e73 (and $e64 $e64))
+(flet ($e74 (iff $e57 $e63))
+(flet ($e75 (xor $e67 $e5))
+(flet ($e76 (or $e60 $e60))
+(flet ($e77 (and $e47 $e71))
+(flet ($e78 (xor $e23 $e76))
+(flet ($e79 (xor $e74 $e74))
+(flet ($e80 (and $e28 $e45))
+(flet ($e81 (if_then_else $e75 $e70 $e79))
+(flet ($e82 (if_then_else $e78 $e44 $e77))
+(flet ($e83 (or $e73 $e73))
+(flet ($e84 (iff $e72 $e80))
+(flet ($e85 (not $e82))
+(flet ($e86 (if_then_else $e81 $e81 $e85))
+(flet ($e87 (iff $e86 $e84))
+(flet ($e88 (and $e87 $e83))
+$e88
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/arrays/incorrect2.minimized.smt b/test/regress/regress0/arrays/incorrect2.minimized.smt
new file mode 100644
index 0000000..6bb3bbf
--- /dev/null
+++ b/test/regress/regress0/arrays/incorrect2.minimized.smt
@@ -0,0 +1,19 @@
+(benchmark fuzzsmt
+:logic QF_AX
+:extrafuns ((v3 Index))
+:extrafuns ((v4 Index))
+:extrafuns ((v2 Index))
+:status unsat
+:formula
+(flet ($n1 true)
+(flet ($n2 (= v4 v3))
+(flet ($n3 (xor $n1 $n2))
+(flet ($n4 (distinct v2 v3))
+(let (?n5 (ite $n4 v3 v4))
+(let (?n6 (ite $n4 ?n5 v3))
+(flet ($n7 (distinct v4 ?n6))
+(flet ($n8 false)
+(flet ($n9 (if_then_else $n7 $n8 $n1))
+(flet ($n10 (and $n3 $n9))
+$n10
+)))))))))))
diff --git a/test/regress/regress0/arrays/incorrect2.smt b/test/regress/regress0/arrays/incorrect2.smt
new file mode 100644
index 0000000..2172bbc
--- /dev/null
+++ b/test/regress/regress0/arrays/incorrect2.smt
@@ -0,0 +1,350 @@
+(benchmark fuzzsmt
+:logic QF_AX
+:status unsat
+:extrafuns ((v0 Array))
+:extrafuns ((v1 Index))
+:extrafuns ((v2 Index))
+:extrafuns ((v3 Index))
+:extrafuns ((v4 Index))
+:extrafuns ((v5 Element))
+:formula
+(flet ($e6 (= v0 v0))
+(flet ($e7 (= v4 v2))
+(flet ($e8 (distinct v3 v2))
+(flet ($e9 (= v3 v3))
+(flet ($e10 (= v2 v3))
+(flet ($e11 (distinct v2 v2))
+(flet ($e12 (distinct v4 v3))
+(flet ($e13 (distinct v4 v2))
+(flet ($e14 (distinct v4 v4))
+(flet ($e15 (distinct v3 v2))
+(flet ($e16 (= v2 v3))
+(flet ($e17 (distinct v1 v2))
+(flet ($e18 (= v5 v5))
+(let (?e19 (ite $e15 v0 v0))
+(let (?e20 (ite $e7 v0 ?e19))
+(let (?e21 (ite $e16 ?e19 ?e19))
+(let (?e22 (ite $e14 ?e19 ?e21))
+(let (?e23 (ite $e9 ?e20 ?e21))
+(let (?e24 (ite $e17 ?e23 ?e23))
+(let (?e25 (ite $e6 ?e19 ?e19))
+(let (?e26 (ite $e9 ?e22 ?e22))
+(let (?e27 (ite $e13 ?e21 ?e19))
+(let (?e28 (ite $e8 ?e21 ?e23))
+(let (?e29 (ite $e18 ?e23 ?e21))
+(let (?e30 (ite $e15 ?e26 ?e19))
+(let (?e31 (ite $e12 ?e19 ?e19))
+(let (?e32 (ite $e14 ?e21 v0))
+(let (?e33 (ite $e10 ?e21 ?e23))
+(let (?e34 (ite $e11 ?e29 ?e27))
+(let (?e35 (ite $e11 v3 v4))
+(let (?e36 (ite $e10 ?e35 v4))
+(let (?e37 (ite $e14 v1 v2))
+(let (?e38 (ite $e17 v3 ?e37))
+(let (?e39 (ite $e16 ?e35 v4))
+(let (?e40 (ite $e10 ?e36 v1))
+(let (?e41 (ite $e18 ?e38 v2))
+(let (?e42 (ite $e16 ?e38 ?e37))
+(let (?e43 (ite $e15 ?e41 v4))
+(let (?e44 (ite $e9 ?e36 ?e35))
+(let (?e45 (ite $e13 ?e36 v1))
+(let (?e46 (ite $e7 ?e36 v2))
+(let (?e47 (ite $e6 ?e43 ?e41))
+(let (?e48 (ite $e8 ?e47 ?e38))
+(let (?e49 (ite $e12 ?e46 v3))
+(let (?e50 (ite $e11 v5 v5))
+(let (?e51 (ite $e16 v5 v5))
+(let (?e52 (ite $e14 ?e51 ?e50))
+(let (?e53 (ite $e12 ?e50 ?e51))
+(let (?e54 (ite $e17 ?e52 v5))
+(let (?e55 (ite $e6 ?e51 ?e53))
+(let (?e56 (ite $e7 v5 ?e51))
+(let (?e57 (ite $e15 ?e51 ?e56))
+(let (?e58 (ite $e13 ?e51 v5))
+(let (?e59 (ite $e17 ?e55 ?e50))
+(let (?e60 (ite $e6 v5 ?e56))
+(let (?e61 (ite $e8 ?e56 ?e58))
+(let (?e62 (ite $e15 ?e59 ?e52))
+(let (?e63 (ite $e14 ?e50 ?e52))
+(let (?e64 (ite $e6 ?e55 ?e54))
+(let (?e65 (ite $e16 ?e54 ?e60))
+(let (?e66 (ite $e9 ?e65 ?e58))
+(let (?e67 (ite $e12 ?e57 ?e62))
+(let (?e68 (ite $e18 ?e51 ?e58))
+(let (?e69 (ite $e10 ?e54 ?e58))
+(let (?e70 (select ?e29 ?e40))
+(flet ($e71 (= ?e23 ?e28))
+(flet ($e72 (= ?e23 ?e26))
+(flet ($e73 (distinct ?e21 ?e19))
+(flet ($e74 (distinct ?e19 ?e32))
+(flet ($e75 (distinct ?e24 ?e26))
+(flet ($e76 (distinct ?e26 ?e30))
+(flet ($e77 (distinct v0 ?e26))
+(flet ($e78 (distinct ?e33 ?e22))
+(flet ($e79 (= ?e34 ?e28))
+(flet ($e80 (= ?e19 ?e32))
+(flet ($e81 (distinct ?e24 ?e30))
+(flet ($e82 (distinct ?e34 ?e23))
+(flet ($e83 (= ?e21 ?e27))
+(flet ($e84 (= v0 ?e21))
+(flet ($e85 (distinct ?e27 ?e21))
+(flet ($e86 (= ?e21 ?e30))
+(flet ($e87 (= ?e26 ?e34))
+(flet ($e88 (= ?e27 ?e33))
+(flet ($e89 (distinct ?e24 ?e26))
+(flet ($e90 (= ?e24 ?e19))
+(flet ($e91 (= ?e33 ?e21))
+(flet ($e92 (= ?e24 ?e33))
+(flet ($e93 (= ?e34 ?e33))
+(flet ($e94 (= ?e33 v0))
+(flet ($e95 (= ?e29 ?e26))
+(flet ($e96 (= ?e25 ?e31))
+(flet ($e97 (distinct ?e19 ?e31))
+(flet ($e98 (= ?e19 ?e29))
+(flet ($e99 (distinct ?e31 ?e31))
+(flet ($e100 (= ?e27 ?e27))
+(flet ($e101 (distinct ?e27 v0))
+(flet ($e102 (distinct ?e23 ?e29))
+(flet ($e103 (distinct ?e27 ?e29))
+(flet ($e104 (= ?e31 ?e29))
+(flet ($e105 (= ?e25 ?e26))
+(flet ($e106 (= ?e26 ?e31))
+(flet ($e107 (= ?e28 ?e33))
+(flet ($e108 (distinct v0 ?e27))
+(flet ($e109 (distinct ?e30 ?e23))
+(flet ($e110 (distinct ?e34 ?e30))
+(flet ($e111 (= ?e30 ?e31))
+(flet ($e112 (= ?e27 ?e32))
+(flet ($e113 (= ?e24 ?e27))
+(flet ($e114 (distinct ?e31 ?e26))
+(flet ($e115 (distinct ?e23 ?e30))
+(flet ($e116 (distinct v0 ?e34))
+(flet ($e117 (= ?e30 ?e21))
+(flet ($e118 (= v0 ?e34))
+(flet ($e119 (= ?e27 ?e26))
+(flet ($e120 (= ?e26 v0))
+(flet ($e121 (distinct ?e26 ?e34))
+(flet ($e122 (= ?e31 ?e33))
+(flet ($e123 (distinct ?e28 ?e21))
+(flet ($e124 (= ?e22 ?e34))
+(flet ($e125 (distinct ?e21 v0))
+(flet ($e126 (distinct ?e34 ?e29))
+(flet ($e127 (= ?e28 ?e30))
+(flet ($e128 (= ?e20 ?e26))
+(flet ($e129 (distinct ?e36 ?e36))
+(flet ($e130 (= v2 ?e41))
+(flet ($e131 (distinct ?e39 ?e38))
+(flet ($e132 (distinct v1 v3))
+(flet ($e133 (= ?e48 ?e38))
+(flet ($e134 (= ?e43 ?e44))
+(flet ($e135 (= ?e41 v4))
+(flet ($e136 (= ?e45 ?e47))
+(flet ($e137 (distinct ?e36 ?e48))
+(flet ($e138 (= ?e47 ?e46))
+(flet ($e139 (= v2 ?e40))
+(flet ($e140 (= ?e45 ?e44))
+(flet ($e141 (= ?e35 v1))
+(flet ($e142 (= v4 v4))
+(flet ($e143 (= ?e42 ?e35))
+(flet ($e144 (= v1 ?e41))
+(flet ($e145 (= ?e47 ?e40))
+(flet ($e146 (= ?e47 v1))
+(flet ($e147 (distinct ?e41 ?e44))
+(flet ($e148 (= ?e35 ?e35))
+(flet ($e149 (distinct ?e35 v1))
+(flet ($e150 (= ?e40 ?e44))
+(flet ($e151 (= ?e45 v2))
+(flet ($e152 (= v2 ?e35))
+(flet ($e153 (distinct ?e38 v3))
+(flet ($e154 (distinct ?e45 ?e38))
+(flet ($e155 (distinct v4 ?e48))
+(flet ($e156 (= ?e49 ?e46))
+(flet ($e157 (distinct ?e40 ?e44))
+(flet ($e158 (= ?e42 ?e46))
+(flet ($e159 (= ?e39 ?e39))
+(flet ($e160 (distinct ?e44 ?e41))
+(flet ($e161 (= ?e48 v2))
+(flet ($e162 (distinct ?e49 ?e46))
+(flet ($e163 (= ?e39 ?e44))
+(flet ($e164 (distinct ?e41 ?e40))
+(flet ($e165 (distinct ?e46 ?e46))
+(flet ($e166 (distinct v3 ?e37))
+(flet ($e167 (= ?e51 ?e53))
+(flet ($e168 (= ?e59 ?e53))
+(flet ($e169 (= ?e67 ?e59))
+(flet ($e170 (distinct ?e55 ?e64))
+(flet ($e171 (distinct ?e58 ?e52))
+(flet ($e172 (= ?e52 ?e52))
+(flet ($e173 (distinct ?e69 ?e61))
+(flet ($e174 (distinct ?e67 ?e56))
+(flet ($e175 (= ?e62 ?e62))
+(flet ($e176 (distinct ?e50 ?e52))
+(flet ($e177 (= ?e52 ?e60))
+(flet ($e178 (distinct ?e68 ?e58))
+(flet ($e179 (= ?e62 ?e50))
+(flet ($e180 (distinct v5 ?e62))
+(flet ($e181 (distinct ?e53 ?e57))
+(flet ($e182 (= ?e63 ?e50))
+(flet ($e183 (= ?e62 ?e56))
+(flet ($e184 (= ?e54 ?e61))
+(flet ($e185 (distinct ?e69 ?e59))
+(flet ($e186 (= ?e65 ?e52))
+(flet ($e187 (distinct ?e64 ?e63))
+(flet ($e188 (= ?e63 ?e66))
+(flet ($e189 (distinct ?e64 ?e67))
+(flet ($e190 (= v5 v5))
+(flet ($e191 (distinct ?e52 ?e60))
+(flet ($e192 (distinct ?e51 ?e70))
+(flet ($e193 (xor $e181 $e149))
+(flet ($e194 (xor $e188 $e96))
+(flet ($e195 (implies $e179 $e73))
+(flet ($e196 (iff $e83 $e91))
+(flet ($e197 (or $e105 $e123))
+(flet ($e198 (and $e121 $e172))
+(flet ($e199 (not $e147))
+(flet ($e200 (iff $e189 $e117))
+(flet ($e201 (or $e155 $e108))
+(flet ($e202 (iff $e144 $e175))
+(flet ($e203 (or $e107 $e201))
+(flet ($e204 (and $e8 $e168))
+(flet ($e205 (iff $e90 $e171))
+(flet ($e206 (or $e157 $e10))
+(flet ($e207 (xor $e92 $e82))
+(flet ($e208 (xor $e180 $e148))
+(flet ($e209 (iff $e191 $e124))
+(flet ($e210 (xor $e110 $e152))
+(flet ($e211 (implies $e102 $e18))
+(flet ($e212 (not $e139))
+(flet ($e213 (implies $e205 $e203))
+(flet ($e214 (not $e209))
+(flet ($e215 (xor $e94 $e192))
+(flet ($e216 (or $e122 $e6))
+(flet ($e217 (and $e145 $e113))
+(flet ($e218 (implies $e161 $e88))
+(flet ($e219 (xor $e202 $e199))
+(flet ($e220 (xor $e135 $e213))
+(flet ($e221 (not $e100))
+(flet ($e222 (not $e87))
+(flet ($e223 (and $e127 $e208))
+(flet ($e224 (implies $e166 $e212))
+(flet ($e225 (not $e115))
+(flet ($e226 (not $e15))
+(flet ($e227 (or $e170 $e120))
+(flet ($e228 (not $e101))
+(flet ($e229 (implies $e156 $e162))
+(flet ($e230 (iff $e125 $e75))
+(flet ($e231 (xor $e223 $e81))
+(flet ($e232 (implies $e174 $e160))
+(flet ($e233 (implies $e97 $e200))
+(flet ($e234 (if_then_else $e103 $e134 $e176))
+(flet ($e235 (and $e133 $e89))
+(flet ($e236 (not $e17))
+(flet ($e237 (implies $e225 $e98))
+(flet ($e238 (or $e130 $e104))
+(flet ($e239 (not $e169))
+(flet ($e240 (implies $e118 $e16))
+(flet ($e241 (iff $e237 $e190))
+(flet ($e242 (not $e227))
+(flet ($e243 (and $e154 $e217))
+(flet ($e244 (if_then_else $e137 $e76 $e236))
+(flet ($e245 (not $e153))
+(flet ($e246 (and $e138 $e93))
+(flet ($e247 (not $e197))
+(flet ($e248 (xor $e141 $e210))
+(flet ($e249 (iff $e140 $e246))
+(flet ($e250 (or $e187 $e72))
+(flet ($e251 (implies $e228 $e14))
+(flet ($e252 (if_then_else $e193 $e11 $e85))
+(flet ($e253 (iff $e158 $e80))
+(flet ($e254 (or $e167 $e86))
+(flet ($e255 (not $e243))
+(flet ($e256 (or $e79 $e7))
+(flet ($e257 (implies $e109 $e9))
+(flet ($e258 (xor $e177 $e126))
+(flet ($e259 (xor $e254 $e13))
+(flet ($e260 (or $e226 $e250))
+(flet ($e261 (not $e95))
+(flet ($e262 (iff $e99 $e234))
+(flet ($e263 (implies $e260 $e242))
+(flet ($e264 (implies $e173 $e233))
+(flet ($e265 (if_then_else $e218 $e214 $e12))
+(flet ($e266 (and $e221 $e248))
+(flet ($e267 (or $e106 $e206))
+(flet ($e268 (iff $e263 $e245))
+(flet ($e269 (if_then_else $e262 $e216 $e266))
+(flet ($e270 (and $e257 $e247))
+(flet ($e271 (if_then_else $e198 $e270 $e132))
+(flet ($e272 (xor $e230 $e204))
+(flet ($e273 (not $e235))
+(flet ($e274 (and $e143 $e220))
+(flet ($e275 (and $e128 $e142))
+(flet ($e276 (and $e114 $e74))
+(flet ($e277 (if_then_else $e252 $e195 $e146))
+(flet ($e278 (xor $e277 $e275))
+(flet ($e279 (implies $e232 $e259))
+(flet ($e280 (xor $e264 $e164))
+(flet ($e281 (or $e112 $e159))
+(flet ($e282 (xor $e240 $e78))
+(flet ($e283 (or $e231 $e258))
+(flet ($e284 (if_then_else $e77 $e136 $e71))
+(flet ($e285 (implies $e279 $e251))
+(flet ($e286 (or $e241 $e238))
+(flet ($e287 (and $e274 $e244))
+(flet ($e288 (or $e185 $e196))
+(flet ($e289 (and $e84 $e267))
+(flet ($e290 (and $e219 $e215))
+(flet ($e291 (or $e268 $e278))
+(flet ($e292 (if_then_else $e186 $e119 $e256))
+(flet ($e293 (iff $e253 $e289))
+(flet ($e294 (not $e151))
+(flet ($e295 (implies $e239 $e294))
+(flet ($e296 (iff $e207 $e290))
+(flet ($e297 (if_then_else $e291 $e182 $e283))
+(flet ($e298 (iff $e131 $e150))
+(flet ($e299 (if_then_else $e184 $e269 $e288))
+(flet ($e300 (xor $e249 $e229))
+(flet ($e301 (not $e272))
+(flet ($e302 (if_then_else $e281 $e261 $e129))
+(flet ($e303 (or $e296 $e183))
+(flet ($e304 (not $e299))
+(flet ($e305 (and $e222 $e178))
+(flet ($e306 (implies $e224 $e255))
+(flet ($e307 (not $e302))
+(flet ($e308 (xor $e271 $e285))
+(flet ($e309 (and $e301 $e305))
+(flet ($e310 (or $e297 $e116))
+(flet ($e311 (and $e287 $e295))
+(flet ($e312 (if_then_else $e310 $e282 $e303))
+(flet ($e313 (and $e304 $e312))
+(flet ($e314 (implies $e211 $e286))
+(flet ($e315 (implies $e273 $e307))
+(flet ($e316 (xor $e165 $e292))
+(flet ($e317 (iff $e306 $e300))
+(flet ($e318 (implies $e313 $e314))
+(flet ($e319 (and $e298 $e194))
+(flet ($e320 (not $e308))
+(flet ($e321 (not $e311))
+(flet ($e322 (not $e321))
+(flet ($e323 (not $e319))
+(flet ($e324 (implies $e280 $e276))
+(flet ($e325 (or $e111 $e323))
+(flet ($e326 (and $e315 $e315))
+(flet ($e327 (iff $e265 $e316))
+(flet ($e328 (iff $e325 $e324))
+(flet ($e329 (implies $e163 $e284))
+(flet ($e330 (not $e320))
+(flet ($e331 (and $e293 $e330))
+(flet ($e332 (or $e326 $e318))
+(flet ($e333 (implies $e328 $e328))
+(flet ($e334 (iff $e309 $e309))
+(flet ($e335 (iff $e334 $e332))
+(flet ($e336 (not $e322))
+(flet ($e337 (and $e331 $e333))
+(flet ($e338 (or $e327 $e337))
+(flet ($e339 (implies $e329 $e317))
+(flet ($e340 (iff $e338 $e335))
+(flet ($e341 (implies $e339 $e340))
+(flet ($e342 (xor $e336 $e341))
+$e342
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/arrays/incorrect3.smt b/test/regress/regress0/arrays/incorrect3.smt
new file mode 100644
index 0000000..f818478
--- /dev/null
+++ b/test/regress/regress0/arrays/incorrect3.smt
@@ -0,0 +1,446 @@
+(benchmark fuzzsmt
+:logic QF_AX
+:status unsat
+:extrafuns ((v0 Array))
+:extrafuns ((v1 Index))
+:extrafuns ((v2 Element))
+:extrafuns ((v3 Element))
+:extrafuns ((v4 Element))
+:extrafuns ((v5 Element))
+:extrafuns ((v6 Element))
+:formula
+(let (?e7 (store v0 v1 v2))
+(let (?e8 (select ?e7 v1))
+(let (?e9 (select ?e7 v1))
+(flet ($e10 (distinct v0 v0))
+(flet ($e11 (= ?e7 v0))
+(flet ($e12 (distinct v1 v1))
+(flet ($e13 (distinct v4 ?e9))
+(flet ($e14 (distinct v2 v6))
+(flet ($e15 (= ?e9 ?e9))
+(flet ($e16 (distinct v2 v5))
+(flet ($e17 (= v6 v5))
+(flet ($e18 (= v3 v3))
+(flet ($e19 (= v2 v2))
+(flet ($e20 (distinct v2 v2))
+(flet ($e21 (distinct v3 v4))
+(flet ($e22 (distinct v4 ?e9))
+(flet ($e23 (distinct v4 v5))
+(flet ($e24 (= ?e9 v3))
+(flet ($e25 (= v3 ?e8))
+(let (?e26 (ite $e21 v0 v0))
+(let (?e27 (ite $e20 ?e7 v0))
+(let (?e28 (ite $e13 ?e26 v0))
+(let (?e29 (ite $e22 ?e7 ?e7))
+(let (?e30 (ite $e17 ?e29 ?e29))
+(let (?e31 (ite $e16 ?e28 ?e28))
+(let (?e32 (ite $e18 ?e29 ?e30))
+(let (?e33 (ite $e11 ?e28 ?e29))
+(let (?e34 (ite $e15 ?e29 ?e31))
+(let (?e35 (ite $e21 ?e30 ?e26))
+(let (?e36 (ite $e11 ?e32 ?e30))
+(let (?e37 (ite $e14 ?e35 ?e34))
+(let (?e38 (ite $e17 ?e7 ?e28))
+(let (?e39 (ite $e19 ?e7 ?e7))
+(let (?e40 (ite $e23 ?e32 v0))
+(let (?e41 (ite $e12 ?e26 ?e29))
+(let (?e42 (ite $e10 ?e36 ?e27))
+(let (?e43 (ite $e10 v0 ?e7))
+(let (?e44 (ite $e16 ?e41 ?e43))
+(let (?e45 (ite $e11 ?e41 ?e43))
+(let (?e46 (ite $e24 ?e33 ?e32))
+(let (?e47 (ite $e17 ?e38 v0))
+(let (?e48 (ite $e25 ?e27 ?e28))
+(let (?e49 (ite $e20 v1 v1))
+(let (?e50 (ite $e16 v1 ?e49))
+(let (?e51 (ite $e12 ?e50 v1))
+(let (?e52 (ite $e16 ?e51 ?e51))
+(let (?e53 (ite $e19 ?e51 ?e52))
+(let (?e54 (ite $e11 v1 v1))
+(let (?e55 (ite $e14 ?e49 ?e50))
+(let (?e56 (ite $e19 ?e52 ?e52))
+(let (?e57 (ite $e14 ?e51 ?e54))
+(let (?e58 (ite $e20 v1 ?e53))
+(let (?e59 (ite $e15 ?e50 ?e53))
+(let (?e60 (ite $e17 ?e55 ?e49))
+(let (?e61 (ite $e10 ?e60 ?e50))
+(let (?e62 (ite $e23 ?e57 ?e52))
+(let (?e63 (ite $e23 ?e62 ?e61))
+(let (?e64 (ite $e13 ?e51 ?e57))
+(let (?e65 (ite $e21 ?e55 ?e63))
+(let (?e66 (ite $e25 ?e51 ?e56))
+(let (?e67 (ite $e24 ?e50 ?e55))
+(let (?e68 (ite $e14 ?e66 ?e66))
+(let (?e69 (ite $e19 ?e52 ?e67))
+(let (?e70 (ite $e11 ?e53 ?e54))
+(let (?e71 (ite $e18 ?e56 ?e69))
+(let (?e72 (ite $e22 ?e55 ?e52))
+(let (?e73 (ite $e16 v6 v5))
+(let (?e74 (ite $e12 v4 v3))
+(let (?e75 (ite $e25 v6 v3))
+(let (?e76 (ite $e17 v5 v6))
+(let (?e77 (ite $e20 ?e8 v2))
+(let (?e78 (ite $e24 v5 ?e9))
+(let (?e79 (ite $e23 v3 v5))
+(let (?e80 (ite $e13 ?e8 ?e77))
+(let (?e81 (ite $e23 v5 ?e75))
+(let (?e82 (ite $e21 v4 v5))
+(let (?e83 (ite $e19 v5 v5))
+(let (?e84 (ite $e12 v4 ?e78))
+(let (?e85 (ite $e11 ?e76 v4))
+(let (?e86 (ite $e20 ?e77 ?e82))
+(let (?e87 (ite $e12 v5 ?e75))
+(let (?e88 (ite $e18 ?e76 ?e84))
+(let (?e89 (ite $e16 ?e76 ?e75))
+(let (?e90 (ite $e17 ?e77 ?e85))
+(let (?e91 (ite $e17 ?e77 v4))
+(let (?e92 (ite $e10 ?e91 ?e78))
+(let (?e93 (ite $e18 v2 ?e73))
+(let (?e94 (ite $e12 v3 ?e93))
+(let (?e95 (ite $e15 ?e74 ?e73))
+(let (?e96 (ite $e22 ?e95 v2))
+(let (?e97 (ite $e25 v6 v5))
+(let (?e98 (ite $e14 ?e97 v3))
+(let (?e99 (store ?e45 ?e61 ?e74))
+(let (?e100 (select ?e44 ?e60))
+(let (?e101 (select ?e46 ?e57))
+(let (?e102 (store ?e37 ?e67 ?e79))
+(let (?e103 (select ?e33 ?e61))
+(flet ($e104 (= ?e48 ?e43))
+(flet ($e105 (distinct ?e40 ?e35))
+(flet ($e106 (distinct ?e32 ?e44))
+(flet ($e107 (distinct v0 ?e42))
+(flet ($e108 (= ?e32 ?e38))
+(flet ($e109 (distinct ?e41 ?e28))
+(flet ($e110 (distinct ?e34 ?e31))
+(flet ($e111 (= ?e26 v0))
+(flet ($e112 (distinct ?e31 ?e46))
+(flet ($e113 (distinct ?e48 ?e42))
+(flet ($e114 (distinct ?e44 ?e29))
+(flet ($e115 (distinct ?e31 ?e102))
+(flet ($e116 (distinct ?e37 ?e102))
+(flet ($e117 (= ?e38 ?e27))
+(flet ($e118 (distinct ?e46 ?e46))
+(flet ($e119 (distinct ?e26 ?e48))
+(flet ($e120 (= ?e38 ?e33))
+(flet ($e121 (distinct ?e31 ?e48))
+(flet ($e122 (= ?e7 ?e40))
+(flet ($e123 (= ?e27 ?e41))
+(flet ($e124 (distinct ?e39 ?e36))
+(flet ($e125 (distinct ?e36 ?e37))
+(flet ($e126 (distinct ?e44 ?e41))
+(flet ($e127 (= ?e40 ?e34))
+(flet ($e128 (distinct ?e27 ?e43))
+(flet ($e129 (distinct ?e43 ?e32))
+(flet ($e130 (distinct ?e46 ?e44))
+(flet ($e131 (= ?e37 ?e32))
+(flet ($e132 (= ?e99 ?e43))
+(flet ($e133 (distinct ?e42 ?e102))
+(flet ($e134 (distinct ?e30 ?e99))
+(flet ($e135 (distinct ?e27 ?e48))
+(flet ($e136 (= ?e34 ?e41))
+(flet ($e137 (= ?e31 ?e48))
+(flet ($e138 (distinct ?e48 ?e40))
+(flet ($e139 (= ?e46 ?e43))
+(flet ($e140 (distinct ?e32 ?e42))
+(flet ($e141 (distinct ?e42 ?e102))
+(flet ($e142 (= ?e36 ?e27))
+(flet ($e143 (distinct ?e28 ?e45))
+(flet ($e144 (= ?e43 ?e36))
+(flet ($e145 (= ?e32 ?e40))
+(flet ($e146 (= ?e31 ?e28))
+(flet ($e147 (distinct ?e47 ?e102))
+(flet ($e148 (= ?e58 ?e71))
+(flet ($e149 (distinct ?e49 ?e50))
+(flet ($e150 (distinct ?e71 ?e70))
+(flet ($e151 (= ?e57 ?e59))
+(flet ($e152 (distinct ?e66 ?e67))
+(flet ($e153 (distinct ?e56 ?e69))
+(flet ($e154 (distinct ?e62 ?e57))
+(flet ($e155 (distinct ?e67 ?e61))
+(flet ($e156 (distinct ?e63 ?e55))
+(flet ($e157 (distinct ?e63 ?e69))
+(flet ($e158 (= ?e63 ?e64))
+(flet ($e159 (= ?e50 ?e68))
+(flet ($e160 (= ?e72 ?e63))
+(flet ($e161 (distinct ?e59 ?e57))
+(flet ($e162 (distinct ?e61 ?e58))
+(flet ($e163 (distinct ?e53 ?e71))
+(flet ($e164 (distinct ?e57 ?e66))
+(flet ($e165 (= ?e60 ?e64))
+(flet ($e166 (distinct ?e65 ?e54))
+(flet ($e167 (distinct ?e63 ?e72))
+(flet ($e168 (distinct ?e68 ?e66))
+(flet ($e169 (= ?e66 v1))
+(flet ($e170 (distinct ?e65 ?e59))
+(flet ($e171 (= ?e61 v1))
+(flet ($e172 (= v1 ?e53))
+(flet ($e173 (= ?e60 ?e57))
+(flet ($e174 (= ?e54 ?e49))
+(flet ($e175 (distinct ?e53 ?e54))
+(flet ($e176 (= ?e63 ?e70))
+(flet ($e177 (distinct ?e58 ?e60))
+(flet ($e178 (= ?e54 ?e59))
+(flet ($e179 (distinct ?e60 ?e67))
+(flet ($e180 (distinct ?e54 ?e59))
+(flet ($e181 (= ?e71 ?e72))
+(flet ($e182 (= ?e71 ?e66))
+(flet ($e183 (= ?e66 ?e54))
+(flet ($e184 (distinct ?e56 ?e66))
+(flet ($e185 (distinct ?e59 ?e72))
+(flet ($e186 (= ?e50 ?e50))
+(flet ($e187 (= ?e55 ?e63))
+(flet ($e188 (= ?e58 ?e51))
+(flet ($e189 (= ?e67 ?e72))
+(flet ($e190 (distinct ?e66 ?e71))
+(flet ($e191 (distinct ?e66 ?e68))
+(flet ($e192 (= ?e55 ?e56))
+(flet ($e193 (distinct ?e49 ?e63))
+(flet ($e194 (= ?e61 ?e53))
+(flet ($e195 (distinct ?e57 v1))
+(flet ($e196 (distinct ?e66 ?e68))
+(flet ($e197 (distinct ?e60 ?e71))
+(flet ($e198 (= ?e52 ?e53))
+(flet ($e199 (distinct v2 v5))
+(flet ($e200 (= ?e82 ?e84))
+(flet ($e201 (= ?e94 ?e76))
+(flet ($e202 (distinct ?e9 v6))
+(flet ($e203 (= v2 ?e92))
+(flet ($e204 (= ?e83 ?e88))
+(flet ($e205 (= ?e79 ?e81))
+(flet ($e206 (= ?e93 ?e95))
+(flet ($e207 (= ?e86 ?e73))
+(flet ($e208 (= ?e96 v2))
+(flet ($e209 (distinct ?e84 ?e88))
+(flet ($e210 (distinct ?e93 v5))
+(flet ($e211 (distinct v6 ?e92))
+(flet ($e212 (distinct ?e86 ?e96))
+(flet ($e213 (distinct ?e8 ?e86))
+(flet ($e214 (distinct v5 ?e103))
+(flet ($e215 (= ?e77 ?e9))
+(flet ($e216 (= ?e93 ?e75))
+(flet ($e217 (= v6 ?e79))
+(flet ($e218 (= v3 ?e75))
+(flet ($e219 (= ?e79 ?e75))
+(flet ($e220 (= ?e91 ?e92))
+(flet ($e221 (distinct ?e93 ?e78))
+(flet ($e222 (= ?e98 ?e77))
+(flet ($e223 (= ?e76 ?e98))
+(flet ($e224 (distinct ?e88 ?e94))
+(flet ($e225 (distinct ?e9 ?e74))
+(flet ($e226 (distinct ?e79 ?e91))
+(flet ($e227 (= ?e75 v6))
+(flet ($e228 (distinct ?e86 ?e90))
+(flet ($e229 (distinct ?e101 ?e86))
+(flet ($e230 (= ?e93 v5))
+(flet ($e231 (distinct ?e84 ?e94))
+(flet ($e232 (distinct v2 ?e83))
+(flet ($e233 (distinct ?e85 ?e9))
+(flet ($e234 (distinct ?e87 ?e81))
+(flet ($e235 (distinct v5 ?e77))
+(flet ($e236 (= ?e96 ?e87))
+(flet ($e237 (distinct ?e87 ?e100))
+(flet ($e238 (= ?e73 ?e80))
+(flet ($e239 (= v4 ?e87))
+(flet ($e240 (= ?e73 ?e86))
+(flet ($e241 (distinct v2 ?e90))
+(flet ($e242 (distinct ?e74 ?e9))
+(flet ($e243 (= ?e95 ?e8))
+(flet ($e244 (= v2 v6))
+(flet ($e245 (= ?e97 ?e88))
+(flet ($e246 (distinct ?e74 ?e73))
+(flet ($e247 (distinct ?e94 ?e76))
+(flet ($e248 (= ?e103 ?e85))
+(flet ($e249 (= ?e84 ?e85))
+(flet ($e250 (= ?e73 ?e77))
+(flet ($e251 (= ?e73 v6))
+(flet ($e252 (distinct v4 ?e84))
+(flet ($e253 (distinct ?e98 ?e101))
+(flet ($e254 (distinct ?e87 ?e81))
+(flet ($e255 (= ?e94 ?e77))
+(flet ($e256 (= ?e73 v5))
+(flet ($e257 (distinct ?e81 ?e101))
+(flet ($e258 (distinct ?e103 ?e73))
+(flet ($e259 (distinct ?e92 ?e89))
+(flet ($e260 (and $e120 $e210))
+(flet ($e261 (and $e127 $e173))
+(flet ($e262 (iff $e174 $e249))
+(flet ($e263 (if_then_else $e114 $e240 $e185))
+(flet ($e264 (implies $e198 $e156))
+(flet ($e265 (or $e203 $e263))
+(flet ($e266 (and $e255 $e204))
+(flet ($e267 (implies $e243 $e209))
+(flet ($e268 (if_then_else $e222 $e112 $e199))
+(flet ($e269 (or $e145 $e257))
+(flet ($e270 (if_then_else $e10 $e134 $e136))
+(flet ($e271 (or $e264 $e131))
+(flet ($e272 (iff $e218 $e226))
+(flet ($e273 (xor $e152 $e195))
+(flet ($e274 (xor $e262 $e13))
+(flet ($e275 (if_then_else $e177 $e108 $e12))
+(flet ($e276 (not $e247))
+(flet ($e277 (implies $e180 $e275))
+(flet ($e278 (not $e196))
+(flet ($e279 (and $e242 $e151))
+(flet ($e280 (xor $e273 $e148))
+(flet ($e281 (or $e212 $e235))
+(flet ($e282 (if_then_else $e172 $e201 $e25))
+(flet ($e283 (not $e14))
+(flet ($e284 (if_then_else $e267 $e168 $e146))
+(flet ($e285 (and $e219 $e16))
+(flet ($e286 (xor $e272 $e105))
+(flet ($e287 (xor $e21 $e141))
+(flet ($e288 (xor $e160 $e266))
+(flet ($e289 (xor $e208 $e245))
+(flet ($e290 (or $e116 $e135))
+(flet ($e291 (xor $e202 $e225))
+(flet ($e292 (iff $e133 $e268))
+(flet ($e293 (xor $e179 $e278))
+(flet ($e294 (iff $e110 $e287))
+(flet ($e295 (not $e241))
+(flet ($e296 (and $e163 $e106))
+(flet ($e297 (xor $e265 $e122))
+(flet ($e298 (not $e295))
+(flet ($e299 (iff $e164 $e290))
+(flet ($e300 (and $e244 $e143))
+(flet ($e301 (xor $e238 $e189))
+(flet ($e302 (if_then_else $e15 $e284 $e260))
+(flet ($e303 (or $e259 $e297))
+(flet ($e304 (and $e197 $e190))
+(flet ($e305 (iff $e250 $e296))
+(flet ($e306 (implies $e153 $e118))
+(flet ($e307 (or $e288 $e270))
+(flet ($e308 (if_then_else $e298 $e221 $e253))
+(flet ($e309 (if_then_else $e111 $e23 $e170))
+(flet ($e310 (implies $e159 $e228))
+(flet ($e311 (not $e138))
+(flet ($e312 (or $e167 $e11))
+(flet ($e313 (xor $e279 $e289))
+(flet ($e314 (xor $e206 $e227))
+(flet ($e315 (or $e312 $e157))
+(flet ($e316 (xor $e261 $e313))
+(flet ($e317 (implies $e314 $e183))
+(flet ($e318 (or $e317 $e165))
+(flet ($e319 (implies $e22 $e175))
+(flet ($e320 (if_then_else $e213 $e293 $e293))
+(flet ($e321 (iff $e280 $e299))
+(flet ($e322 (not $e169))
+(flet ($e323 (or $e234 $e117))
+(flet ($e324 (not $e150))
+(flet ($e325 (if_then_else $e223 $e258 $e184))
+(flet ($e326 (xor $e237 $e178))
+(flet ($e327 (or $e307 $e19))
+(flet ($e328 (if_then_else $e303 $e192 $e274))
+(flet ($e329 (xor $e230 $e316))
+(flet ($e330 (implies $e239 $e24))
+(flet ($e331 (and $e324 $e154))
+(flet ($e332 (implies $e246 $e132))
+(flet ($e333 (implies $e121 $e128))
+(flet ($e334 (xor $e181 $e107))
+(flet ($e335 (xor $e322 $e321))
+(flet ($e336 (iff $e200 $e139))
+(flet ($e337 (and $e325 $e147))
+(flet ($e338 (iff $e220 $e166))
+(flet ($e339 (implies $e276 $e326))
+(flet ($e340 (if_then_else $e20 $e104 $e254))
+(flet ($e341 (not $e292))
+(flet ($e342 (implies $e306 $e335))
+(flet ($e343 (implies $e294 $e229))
+(flet ($e344 (or $e328 $e186))
+(flet ($e345 (if_then_else $e162 $e333 $e256))
+(flet ($e346 (iff $e125 $e217))
+(flet ($e347 (and $e345 $e336))
+(flet ($e348 (or $e271 $e251))
+(flet ($e349 (implies $e144 $e342))
+(flet ($e350 (if_then_else $e302 $e308 $e302))
+(flet ($e351 (xor $e182 $e347))
+(flet ($e352 (if_then_else $e18 $e188 $e343))
+(flet ($e353 (iff $e126 $e349))
+(flet ($e354 (or $e233 $e320))
+(flet ($e355 (implies $e215 $e341))
+(flet ($e356 (not $e211))
+(flet ($e357 (not $e344))
+(flet ($e358 (or $e334 $e309))
+(flet ($e359 (or $e315 $e337))
+(flet ($e360 (if_then_else $e277 $e155 $e283))
+(flet ($e361 (not $e339))
+(flet ($e362 (not $e232))
+(flet ($e363 (or $e123 $e142))
+(flet ($e364 (not $e363))
+(flet ($e365 (not $e353))
+(flet ($e366 (and $e124 $e231))
+(flet ($e367 (not $e161))
+(flet ($e368 (or $e364 $e137))
+(flet ($e369 (iff $e367 $e109))
+(flet ($e370 (xor $e360 $e310))
+(flet ($e371 (not $e362))
+(flet ($e372 (and $e357 $e331))
+(flet ($e373 (and $e252 $e207))
+(flet ($e374 (if_then_else $e140 $e140 $e115))
+(flet ($e375 (or $e291 $e214))
+(flet ($e376 (not $e351))
+(flet ($e377 (iff $e311 $e236))
+(flet ($e378 (if_then_else $e372 $e248 $e361))
+(flet ($e379 (xor $e374 $e350))
+(flet ($e380 (and $e216 $e370))
+(flet ($e381 (implies $e301 $e224))
+(flet ($e382 (iff $e379 $e130))
+(flet ($e383 (iff $e158 $e354))
+(flet ($e384 (not $e346))
+(flet ($e385 (or $e171 $e338))
+(flet ($e386 (xor $e191 $e378))
+(flet ($e387 (iff $e282 $e330))
+(flet ($e388 (and $e281 $e281))
+(flet ($e389 (implies $e387 $e318))
+(flet ($e390 (implies $e176 $e359))
+(flet ($e391 (and $e358 $e366))
+(flet ($e392 (implies $e365 $e371))
+(flet ($e393 (and $e383 $e340))
+(flet ($e394 (or $e390 $e369))
+(flet ($e395 (not $e389))
+(flet ($e396 (not $e323))
+(flet ($e397 (and $e394 $e193))
+(flet ($e398 (implies $e391 $e368))
+(flet ($e399 (iff $e395 $e398))
+(flet ($e400 (and $e392 $e129))
+(flet ($e401 (or $e17 $e399))
+(flet ($e402 (implies $e396 $e396))
+(flet ($e403 (iff $e401 $e386))
+(flet ($e404 (implies $e376 $e319))
+(flet ($e405 (if_then_else $e269 $e205 $e194))
+(flet ($e406 (and $e380 $e332))
+(flet ($e407 (xor $e402 $e403))
+(flet ($e408 (if_then_else $e329 $e113 $e382))
+(flet ($e409 (and $e286 $e187))
+(flet ($e410 (implies $e393 $e300))
+(flet ($e411 (implies $e388 $e355))
+(flet ($e412 (implies $e409 $e352))
+(flet ($e413 (implies $e397 $e405))
+(flet ($e414 (xor $e373 $e400))
+(flet ($e415 (not $e285))
+(flet ($e416 (not $e119))
+(flet ($e417 (not $e305))
+(flet ($e418 (xor $e348 $e408))
+(flet ($e419 (if_then_else $e149 $e304 $e415))
+(flet ($e420 (if_then_else $e407 $e377 $e419))
+(flet ($e421 (xor $e381 $e385))
+(flet ($e422 (not $e420))
+(flet ($e423 (iff $e422 $e411))
+(flet ($e424 (or $e375 $e404))
+(flet ($e425 (xor $e414 $e384))
+(flet ($e426 (implies $e327 $e406))
+(flet ($e427 (implies $e424 $e412))
+(flet ($e428 (implies $e421 $e417))
+(flet ($e429 (and $e427 $e413))
+(flet ($e430 (or $e410 $e356))
+(flet ($e431 (if_then_else $e429 $e425 $e418))
+(flet ($e432 (xor $e430 $e430))
+(flet ($e433 (iff $e431 $e426))
+(flet ($e434 (and $e432 $e423))
+(flet ($e435 (xor $e434 $e428))
+(flet ($e436 (xor $e433 $e433))
+(flet ($e437 (and $e416 $e435))
+(flet ($e438 (implies $e437 $e436))
+$e438
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/arrays/incorrect4.smt b/test/regress/regress0/arrays/incorrect4.smt
new file mode 100644
index 0000000..62f2883
--- /dev/null
+++ b/test/regress/regress0/arrays/incorrect4.smt
@@ -0,0 +1,170 @@
+(benchmark fuzzsmt
+:logic QF_AX
+:status unsat
+:extrafuns ((v0 Array))
+:extrafuns ((v1 Index))
+:extrafuns ((v2 Index))
+:extrafuns ((v3 Index))
+:extrafuns ((v4 Element))
+:extrafuns ((v5 Element))
+:extrafuns ((v6 Element))
+:formula
+(flet ($e7 (= v0 v0))
+(flet ($e8 (= v2 v2))
+(flet ($e9 (= v1 v2))
+(flet ($e10 (distinct v1 v2))
+(flet ($e11 (distinct v3 v2))
+(flet ($e12 (distinct v5 v5))
+(flet ($e13 (= v6 v4))
+(let (?e14 (ite $e9 v0 v0))
+(let (?e15 (ite $e7 v0 v0))
+(let (?e16 (ite $e11 ?e14 ?e15))
+(let (?e17 (ite $e8 ?e15 ?e15))
+(let (?e18 (ite $e10 ?e16 v0))
+(let (?e19 (ite $e9 ?e14 ?e15))
+(let (?e20 (ite $e12 ?e17 ?e19))
+(let (?e21 (ite $e8 ?e20 ?e16))
+(let (?e22 (ite $e13 ?e20 ?e16))
+(let (?e23 (ite $e10 v3 v1))
+(let (?e24 (ite $e13 v2 v3))
+(let (?e25 (ite $e11 v2 ?e23))
+(let (?e26 (ite $e12 v2 ?e23))
+(let (?e27 (ite $e8 ?e25 ?e23))
+(let (?e28 (ite $e7 v3 ?e26))
+(let (?e29 (ite $e9 ?e28 v1))
+(let (?e30 (ite $e8 v5 v5))
+(let (?e31 (ite $e10 v4 ?e30))
+(let (?e32 (ite $e11 v6 ?e30))
+(let (?e33 (ite $e7 ?e31 v4))
+(let (?e34 (ite $e10 ?e30 ?e32))
+(let (?e35 (ite $e9 v5 ?e32))
+(let (?e36 (ite $e12 ?e30 v4))
+(let (?e37 (ite $e11 v6 v4))
+(let (?e38 (ite $e12 ?e32 ?e33))
+(let (?e39 (ite $e8 v4 v6))
+(let (?e40 (ite $e13 ?e32 ?e33))
+(let (?e41 (store ?e17 v2 ?e33))
+(let (?e42 (select ?e41 v2))
+(flet ($e43 (= ?e17 ?e22))
+(flet ($e44 (distinct v0 ?e20))
+(flet ($e45 (= ?e14 ?e22))
+(flet ($e46 (= ?e17 ?e17))
+(flet ($e47 (distinct ?e21 ?e17))
+(flet ($e48 (= ?e41 ?e14))
+(flet ($e49 (distinct ?e19 ?e14))
+(flet ($e50 (= ?e14 ?e22))
+(flet ($e51 (= ?e20 ?e21))
+(flet ($e52 (= ?e14 ?e21))
+(flet ($e53 (= ?e19 ?e20))
+(flet ($e54 (= ?e22 ?e20))
+(flet ($e55 (= ?e15 ?e17))
+(flet ($e56 (= ?e16 ?e19))
+(flet ($e57 (= ?e16 ?e15))
+(flet ($e58 (distinct ?e41 ?e41))
+(flet ($e59 (distinct ?e20 ?e21))
+(flet ($e60 (distinct ?e17 ?e14))
+(flet ($e61 (distinct ?e15 ?e22))
+(flet ($e62 (distinct ?e22 ?e22))
+(flet ($e63 (= ?e18 v0))
+(flet ($e64 (= ?e27 ?e28))
+(flet ($e65 (distinct ?e23 v2))
+(flet ($e66 (= ?e23 ?e25))
+(flet ($e67 (distinct ?e24 ?e24))
+(flet ($e68 (distinct ?e28 ?e28))
+(flet ($e69 (= v1 ?e24))
+(flet ($e70 (= ?e29 ?e28))
+(flet ($e71 (distinct v3 ?e26))
+(flet ($e72 (distinct ?e36 ?e33))
+(flet ($e73 (distinct ?e30 v4))
+(flet ($e74 (= ?e39 ?e39))
+(flet ($e75 (= v4 ?e30))
+(flet ($e76 (= ?e33 ?e38))
+(flet ($e77 (= ?e34 ?e40))
+(flet ($e78 (= ?e36 ?e42))
+(flet ($e79 (distinct v4 ?e34))
+(flet ($e80 (distinct ?e30 ?e37))
+(flet ($e81 (= v6 ?e37))
+(flet ($e82 (= v5 ?e39))
+(flet ($e83 (distinct ?e35 ?e30))
+(flet ($e84 (distinct ?e39 ?e38))
+(flet ($e85 (distinct ?e32 ?e30))
+(flet ($e86 (= ?e42 ?e33))
+(flet ($e87 (distinct ?e36 v5))
+(flet ($e88 (distinct ?e30 ?e36))
+(flet ($e89 (= ?e42 v4))
+(flet ($e90 (distinct ?e42 ?e30))
+(flet ($e91 (distinct ?e36 v5))
+(flet ($e92 (= ?e34 ?e38))
+(flet ($e93 (distinct ?e42 v6))
+(flet ($e94 (distinct ?e37 ?e32))
+(flet ($e95 (distinct v6 ?e39))
+(flet ($e96 (= ?e35 ?e37))
+(flet ($e97 (= ?e42 ?e31))
+(flet ($e98 (implies $e89 $e93))
+(flet ($e99 (xor $e10 $e77))
+(flet ($e100 (or $e8 $e71))
+(flet ($e101 (iff $e7 $e43))
+(flet ($e102 (or $e46 $e54))
+(flet ($e103 (and $e78 $e50))
+(flet ($e104 (if_then_else $e67 $e58 $e82))
+(flet ($e105 (not $e85))
+(flet ($e106 (implies $e105 $e9))
+(flet ($e107 (xor $e83 $e66))
+(flet ($e108 (if_then_else $e53 $e57 $e107))
+(flet ($e109 (if_then_else $e97 $e13 $e106))
+(flet ($e110 (and $e60 $e79))
+(flet ($e111 (not $e99))
+(flet ($e112 (implies $e47 $e104))
+(flet ($e113 (and $e73 $e109))
+(flet ($e114 (or $e68 $e11))
+(flet ($e115 (xor $e44 $e96))
+(flet ($e116 (iff $e75 $e102))
+(flet ($e117 (if_then_else $e90 $e86 $e94))
+(flet ($e118 (xor $e62 $e70))
+(flet ($e119 (not $e113))
+(flet ($e120 (iff $e103 $e115))
+(flet ($e121 (or $e98 $e80))
+(flet ($e122 (not $e49))
+(flet ($e123 (or $e48 $e101))
+(flet ($e124 (xor $e108 $e123))
+(flet ($e125 (xor $e91 $e118))
+(flet ($e126 (xor $e56 $e84))
+(flet ($e127 (if_then_else $e110 $e114 $e117))
+(flet ($e128 (iff $e87 $e88))
+(flet ($e129 (implies $e95 $e127))
+(flet ($e130 (and $e52 $e116))
+(flet ($e131 (not $e69))
+(flet ($e132 (iff $e112 $e130))
+(flet ($e133 (or $e128 $e72))
+(flet ($e134 (if_then_else $e133 $e74 $e124))
+(flet ($e135 (implies $e55 $e51))
+(flet ($e136 (and $e126 $e61))
+(flet ($e137 (xor $e65 $e81))
+(flet ($e138 (or $e122 $e111))
+(flet ($e139 (or $e121 $e138))
+(flet ($e140 (implies $e119 $e136))
+(flet ($e141 (not $e140))
+(flet ($e142 (if_then_else $e12 $e59 $e132))
+(flet ($e143 (or $e142 $e129))
+(flet ($e144 (and $e45 $e63))
+(flet ($e145 (if_then_else $e76 $e141 $e131))
+(flet ($e146 (implies $e145 $e137))
+(flet ($e147 (if_then_else $e139 $e139 $e146))
+(flet ($e148 (xor $e144 $e147))
+(flet ($e149 (not $e120))
+(flet ($e150 (iff $e125 $e92))
+(flet ($e151 (or $e135 $e135))
+(flet ($e152 (or $e151 $e100))
+(flet ($e153 (implies $e149 $e152))
+(flet ($e154 (not $e134))
+(flet ($e155 (xor $e154 $e150))
+(flet ($e156 (if_then_else $e64 $e155 $e64))
+(flet ($e157 (or $e153 $e153))
+(flet ($e158 (not $e143))
+(flet ($e159 (and $e148 $e157))
+(flet ($e160 (xor $e159 $e159))
+(flet ($e161 (and $e156 $e158))
+(flet ($e162 (xor $e160 $e161))
+$e162
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/arrays/incorrect5.smt b/test/regress/regress0/arrays/incorrect5.smt
new file mode 100644
index 0000000..a9c8d85
--- /dev/null
+++ b/test/regress/regress0/arrays/incorrect5.smt
@@ -0,0 +1,313 @@
+(benchmark fuzzsmt
+:logic QF_AX
+:status unsat
+:extrafuns ((v0 Array))
+:extrafuns ((v1 Index))
+:extrafuns ((v2 Index))
+:extrafuns ((v3 Index))
+:extrafuns ((v4 Element))
+:formula
+(let (?e5 (store v0 v3 v4))
+(let (?e6 (select v0 v2))
+(let (?e7 (select ?e5 v2))
+(flet ($e8 (= v0 ?e5))
+(flet ($e9 (distinct v2 v1))
+(flet ($e10 (= v3 v2))
+(flet ($e11 (distinct ?e7 ?e7))
+(flet ($e12 (distinct ?e7 ?e7))
+(flet ($e13 (= ?e7 v4))
+(flet ($e14 (distinct ?e6 v4))
+(let (?e15 (ite $e12 ?e5 ?e5))
+(let (?e16 (ite $e13 ?e15 ?e5))
+(let (?e17 (ite $e13 ?e16 ?e5))
+(let (?e18 (ite $e11 ?e15 v0))
+(let (?e19 (ite $e8 ?e5 ?e18))
+(let (?e20 (ite $e10 ?e5 ?e15))
+(let (?e21 (ite $e9 ?e17 ?e5))
+(let (?e22 (ite $e10 ?e16 ?e15))
+(let (?e23 (ite $e14 ?e5 ?e16))
+(let (?e24 (ite $e14 v3 v3))
+(let (?e25 (ite $e10 v2 v1))
+(let (?e26 (ite $e13 ?e25 v1))
+(let (?e27 (ite $e11 v3 ?e24))
+(let (?e28 (ite $e12 ?e24 ?e27))
+(let (?e29 (ite $e9 v1 ?e28))
+(let (?e30 (ite $e12 ?e28 ?e28))
+(let (?e31 (ite $e11 ?e30 ?e25))
+(let (?e32 (ite $e12 v2 ?e27))
+(let (?e33 (ite $e8 ?e25 v2))
+(let (?e34 (ite $e8 ?e7 v4))
+(let (?e35 (ite $e12 ?e6 ?e6))
+(let (?e36 (ite $e11 ?e34 ?e35))
+(let (?e37 (ite $e14 ?e6 ?e6))
+(let (?e38 (ite $e10 v4 ?e34))
+(let (?e39 (ite $e13 ?e6 ?e37))
+(let (?e40 (ite $e10 ?e36 ?e36))
+(let (?e41 (ite $e14 v4 ?e37))
+(let (?e42 (ite $e13 ?e41 ?e37))
+(let (?e43 (ite $e9 ?e36 ?e6))
+(let (?e44 (store ?e16 ?e32 ?e37))
+(let (?e45 (select ?e15 v2))
+(let (?e46 (select ?e18 ?e33))
+(let (?e47 (store ?e44 ?e28 ?e39))
+(let (?e48 (select ?e20 v2))
+(flet ($e49 (distinct ?e44 ?e21))
+(flet ($e50 (= ?e18 ?e18))
+(flet ($e51 (distinct ?e44 ?e15))
+(flet ($e52 (distinct ?e21 ?e19))
+(flet ($e53 (= ?e47 v0))
+(flet ($e54 (distinct v0 ?e17))
+(flet ($e55 (= ?e21 ?e21))
+(flet ($e56 (= ?e19 ?e23))
+(flet ($e57 (= ?e44 ?e5))
+(flet ($e58 (= ?e17 ?e21))
+(flet ($e59 (= ?e44 ?e23))
+(flet ($e60 (distinct ?e47 ?e19))
+(flet ($e61 (distinct ?e5 ?e20))
+(flet ($e62 (distinct ?e20 ?e19))
+(flet ($e63 (= v0 ?e16))
+(flet ($e64 (distinct ?e16 ?e5))
+(flet ($e65 (distinct ?e44 ?e17))
+(flet ($e66 (= ?e5 ?e5))
+(flet ($e67 (distinct ?e47 ?e5))
+(flet ($e68 (distinct ?e19 ?e5))
+(flet ($e69 (distinct ?e18 ?e16))
+(flet ($e70 (= ?e18 ?e22))
+(flet ($e71 (distinct ?e29 v1))
+(flet ($e72 (distinct ?e26 ?e26))
+(flet ($e73 (distinct ?e27 ?e26))
+(flet ($e74 (distinct v3 ?e31))
+(flet ($e75 (= ?e25 ?e28))
+(flet ($e76 (= ?e32 v2))
+(flet ($e77 (= v1 ?e26))
+(flet ($e78 (= ?e32 ?e29))
+(flet ($e79 (distinct ?e24 ?e29))
+(flet ($e80 (= v2 ?e32))
+(flet ($e81 (= v2 ?e24))
+(flet ($e82 (distinct ?e32 ?e25))
+(flet ($e83 (= ?e31 v3))
+(flet ($e84 (= ?e29 ?e29))
+(flet ($e85 (distinct v3 v1))
+(flet ($e86 (= ?e28 ?e27))
+(flet ($e87 (distinct ?e27 ?e26))
+(flet ($e88 (distinct ?e26 ?e26))
+(flet ($e89 (distinct ?e29 v3))
+(flet ($e90 (= ?e26 ?e32))
+(flet ($e91 (= ?e30 v1))
+(flet ($e92 (= ?e31 ?e25))
+(flet ($e93 (= ?e32 v1))
+(flet ($e94 (distinct ?e26 ?e31))
+(flet ($e95 (distinct ?e29 ?e26))
+(flet ($e96 (= v3 v3))
+(flet ($e97 (= v2 ?e29))
+(flet ($e98 (distinct v3 v2))
+(flet ($e99 (= ?e29 v2))
+(flet ($e100 (distinct v1 v3))
+(flet ($e101 (= v2 ?e29))
+(flet ($e102 (distinct ?e24 ?e28))
+(flet ($e103 (= ?e31 ?e30))
+(flet ($e104 (distinct ?e32 ?e33))
+(flet ($e105 (= ?e34 v4))
+(flet ($e106 (= ?e43 ?e45))
+(flet ($e107 (= ?e48 ?e48))
+(flet ($e108 (= ?e46 ?e34))
+(flet ($e109 (= ?e40 ?e40))
+(flet ($e110 (= ?e35 ?e7))
+(flet ($e111 (distinct ?e37 ?e37))
+(flet ($e112 (= ?e34 ?e7))
+(flet ($e113 (= ?e37 ?e6))
+(flet ($e114 (= ?e48 ?e41))
+(flet ($e115 (distinct ?e6 ?e48))
+(flet ($e116 (distinct v4 ?e45))
+(flet ($e117 (distinct ?e45 ?e45))
+(flet ($e118 (distinct ?e42 ?e35))
+(flet ($e119 (distinct ?e37 ?e39))
+(flet ($e120 (distinct ?e6 ?e40))
+(flet ($e121 (= ?e34 ?e41))
+(flet ($e122 (distinct ?e37 ?e46))
+(flet ($e123 (= ?e7 ?e34))
+(flet ($e124 (= ?e35 ?e45))
+(flet ($e125 (= ?e40 ?e37))
+(flet ($e126 (= ?e39 ?e38))
+(flet ($e127 (= ?e46 ?e34))
+(flet ($e128 (= ?e42 ?e48))
+(flet ($e129 (= ?e34 ?e37))
+(flet ($e130 (distinct v4 v4))
+(flet ($e131 (= ?e41 ?e40))
+(flet ($e132 (distinct ?e43 ?e38))
+(flet ($e133 (distinct ?e39 ?e45))
+(flet ($e134 (distinct ?e42 v4))
+(flet ($e135 (= ?e48 ?e34))
+(flet ($e136 (distinct ?e38 ?e35))
+(flet ($e137 (= ?e41 ?e45))
+(flet ($e138 (distinct ?e7 ?e35))
+(flet ($e139 (= ?e7 ?e35))
+(flet ($e140 (= ?e46 ?e7))
+(flet ($e141 (distinct ?e45 v4))
+(flet ($e142 (= v4 ?e35))
+(flet ($e143 (= ?e48 ?e43))
+(flet ($e144 (= ?e37 ?e35))
+(flet ($e145 (distinct ?e34 v4))
+(flet ($e146 (distinct ?e35 ?e41))
+(flet ($e147 (= ?e40 ?e34))
+(flet ($e148 (= ?e46 ?e35))
+(flet ($e149 (= ?e43 ?e41))
+(flet ($e150 (= ?e39 ?e43))
+(flet ($e151 (distinct ?e41 ?e46))
+(flet ($e152 (= ?e7 ?e42))
+(flet ($e153 (distinct ?e43 ?e38))
+(flet ($e154 (distinct ?e37 ?e6))
+(flet ($e155 (= ?e7 ?e7))
+(flet ($e156 (distinct ?e43 ?e7))
+(flet ($e157 (= ?e43 ?e39))
+(flet ($e158 (distinct ?e43 ?e42))
+(flet ($e159 (= ?e39 ?e46))
+(flet ($e160 (distinct ?e41 ?e6))
+(flet ($e161 (= ?e7 ?e43))
+(flet ($e162 (= ?e39 ?e40))
+(flet ($e163 (distinct ?e42 v4))
+(flet ($e164 (distinct ?e35 v4))
+(flet ($e165 (= ?e40 ?e46))
+(flet ($e166 (distinct ?e45 ?e36))
+(flet ($e167 (iff $e137 $e129))
+(flet ($e168 (not $e106))
+(flet ($e169 (if_then_else $e86 $e140 $e85))
+(flet ($e170 (if_then_else $e136 $e56 $e69))
+(flet ($e171 (if_then_else $e169 $e79 $e100))
+(flet ($e172 (xor $e145 $e92))
+(flet ($e173 (implies $e64 $e101))
+(flet ($e174 (not $e171))
+(flet ($e175 (xor $e96 $e71))
+(flet ($e176 (and $e75 $e135))
+(flet ($e177 (or $e143 $e91))
+(flet ($e178 (not $e111))
+(flet ($e179 (if_then_else $e175 $e94 $e168))
+(flet ($e180 (not $e110))
+(flet ($e181 (or $e72 $e8))
+(flet ($e182 (not $e130))
+(flet ($e183 (iff $e10 $e88))
+(flet ($e184 (iff $e103 $e165))
+(flet ($e185 (xor $e76 $e13))
+(flet ($e186 (xor $e172 $e116))
+(flet ($e187 (iff $e180 $e102))
+(flet ($e188 (iff $e183 $e126))
+(flet ($e189 (iff $e121 $e186))
+(flet ($e190 (implies $e90 $e139))
+(flet ($e191 (iff $e124 $e58))
+(flet ($e192 (xor $e57 $e80))
+(flet ($e193 (xor $e133 $e164))
+(flet ($e194 (implies $e60 $e179))
+(flet ($e195 (iff $e170 $e87))
+(flet ($e196 (if_then_else $e63 $e107 $e189))
+(flet ($e197 (xor $e125 $e182))
+(flet ($e198 (implies $e55 $e141))
+(flet ($e199 (xor $e148 $e73))
+(flet ($e200 (iff $e195 $e74))
+(flet ($e201 (not $e67))
+(flet ($e202 (implies $e153 $e166))
+(flet ($e203 (iff $e190 $e118))
+(flet ($e204 (iff $e70 $e187))
+(flet ($e205 (implies $e152 $e131))
+(flet ($e206 (xor $e84 $e122))
+(flet ($e207 (or $e108 $e159))
+(flet ($e208 (implies $e12 $e196))
+(flet ($e209 (xor $e193 $e9))
+(flet ($e210 (implies $e146 $e138))
+(flet ($e211 (and $e194 $e147))
+(flet ($e212 (or $e104 $e65))
+(flet ($e213 (or $e54 $e200))
+(flet ($e214 (and $e114 $e157))
+(flet ($e215 (not $e158))
+(flet ($e216 (implies $e61 $e211))
+(flet ($e217 (implies $e109 $e151))
+(flet ($e218 (if_then_else $e199 $e134 $e132))
+(flet ($e219 (iff $e167 $e119))
+(flet ($e220 (and $e49 $e185))
+(flet ($e221 (or $e155 $e113))
+(flet ($e222 (not $e192))
+(flet ($e223 (not $e99))
+(flet ($e224 (if_then_else $e93 $e89 $e81))
+(flet ($e225 (and $e77 $e221))
+(flet ($e226 (if_then_else $e78 $e214 $e178))
+(flet ($e227 (and $e62 $e123))
+(flet ($e228 (and $e154 $e144))
+(flet ($e229 (xor $e14 $e225))
+(flet ($e230 (if_then_else $e163 $e217 $e163))
+(flet ($e231 (not $e230))
+(flet ($e232 (implies $e174 $e11))
+(flet ($e233 (not $e52))
+(flet ($e234 (if_then_else $e160 $e117 $e53))
+(flet ($e235 (not $e105))
+(flet ($e236 (iff $e51 $e177))
+(flet ($e237 (iff $e203 $e176))
+(flet ($e238 (if_then_else $e120 $e233 $e207))
+(flet ($e239 (or $e50 $e59))
+(flet ($e240 (xor $e115 $e181))
+(flet ($e241 (xor $e112 $e68))
+(flet ($e242 (if_then_else $e236 $e97 $e227))
+(flet ($e243 (not $e66))
+(flet ($e244 (not $e98))
+(flet ($e245 (not $e234))
+(flet ($e246 (if_then_else $e238 $e127 $e184))
+(flet ($e247 (not $e215))
+(flet ($e248 (implies $e224 $e209))
+(flet ($e249 (xor $e220 $e229))
+(flet ($e250 (if_then_else $e128 $e128 $e149))
+(flet ($e251 (implies $e208 $e161))
+(flet ($e252 (or $e222 $e240))
+(flet ($e253 (xor $e201 $e218))
+(flet ($e254 (xor $e232 $e251))
+(flet ($e255 (xor $e244 $e250))
+(flet ($e256 (iff $e249 $e212))
+(flet ($e257 (if_then_else $e142 $e255 $e253))
+(flet ($e258 (if_then_else $e256 $e228 $e198))
+(flet ($e259 (xor $e156 $e243))
+(flet ($e260 (implies $e239 $e242))
+(flet ($e261 (or $e257 $e206))
+(flet ($e262 (and $e204 $e150))
+(flet ($e263 (not $e248))
+(flet ($e264 (and $e258 $e202))
+(flet ($e265 (and $e226 $e247))
+(flet ($e266 (implies $e162 $e265))
+(flet ($e267 (if_then_else $e213 $e173 $e213))
+(flet ($e268 (xor $e246 $e267))
+(flet ($e269 (implies $e252 $e262))
+(flet ($e270 (or $e205 $e223))
+(flet ($e271 (not $e188))
+(flet ($e272 (not $e260))
+(flet ($e273 (and $e219 $e263))
+(flet ($e274 (xor $e95 $e259))
+(flet ($e275 (or $e191 $e191))
+(flet ($e276 (or $e197 $e261))
+(flet ($e277 (and $e216 $e254))
+(flet ($e278 (or $e276 $e264))
+(flet ($e279 (iff $e271 $e237))
+(flet ($e280 (iff $e279 $e269))
+(flet ($e281 (xor $e270 $e210))
+(flet ($e282 (and $e281 $e241))
+(flet ($e283 (and $e235 $e235))
+(flet ($e284 (xor $e283 $e283))
+(flet ($e285 (and $e83 $e277))
+(flet ($e286 (iff $e231 $e278))
+(flet ($e287 (implies $e272 $e275))
+(flet ($e288 (not $e273))
+(flet ($e289 (not $e245))
+(flet ($e290 (and $e274 $e282))
+(flet ($e291 (implies $e266 $e280))
+(flet ($e292 (implies $e288 $e287))
+(flet ($e293 (not $e268))
+(flet ($e294 (xor $e293 $e284))
+(flet ($e295 (if_then_else $e82 $e285 $e290))
+(flet ($e296 (or $e291 $e295))
+(flet ($e297 (not $e286))
+(flet ($e298 (implies $e292 $e292))
+(flet ($e299 (and $e294 $e297))
+(flet ($e300 (implies $e299 $e299))
+(flet ($e301 (xor $e298 $e300))
+(flet ($e302 (if_then_else $e301 $e289 $e289))
+(flet ($e303 (not $e296))
+(flet ($e304 (implies $e302 $e302))
+(flet ($e305 (implies $e304 $e303))
+$e305
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/arrays/incorrect6.smt b/test/regress/regress0/arrays/incorrect6.smt
new file mode 100644
index 0000000..5e9de90
--- /dev/null
+++ b/test/regress/regress0/arrays/incorrect6.smt
@@ -0,0 +1,265 @@
+(benchmark fuzzsmt
+:logic QF_AX
+:status unsat
+:extrafuns ((v0 Array))
+:extrafuns ((v1 Array))
+:extrafuns ((v2 Index))
+:extrafuns ((v3 Index))
+:extrafuns ((v4 Element))
+:extrafuns ((v5 Element))
+:extrafuns ((v6 Element))
+:extrafuns ((v7 Element))
+:extrafuns ((v8 Element))
+:formula
+(let (?e9 (select v0 v3))
+(flet ($e10 (= v0 v1))
+(flet ($e11 (distinct v2 v2))
+(flet ($e12 (= v3 v2))
+(flet ($e13 (distinct ?e9 v5))
+(flet ($e14 (= ?e9 v6))
+(flet ($e15 (= ?e9 ?e9))
+(flet ($e16 (= v4 v8))
+(flet ($e17 (= v4 v8))
+(flet ($e18 (= v8 v6))
+(flet ($e19 (= ?e9 v5))
+(flet ($e20 (distinct v7 v5))
+(let (?e21 (ite $e20 v0 v0))
+(let (?e22 (ite $e20 ?e21 ?e21))
+(let (?e23 (ite $e11 v1 v0))
+(let (?e24 (ite $e17 ?e22 ?e22))
+(let (?e25 (ite $e10 ?e22 ?e23))
+(let (?e26 (ite $e17 ?e24 v0))
+(let (?e27 (ite $e16 v0 v1))
+(let (?e28 (ite $e13 v1 ?e22))
+(let (?e29 (ite $e18 ?e26 ?e26))
+(let (?e30 (ite $e12 ?e24 ?e28))
+(let (?e31 (ite $e19 ?e27 ?e28))
+(let (?e32 (ite $e15 ?e29 ?e25))
+(let (?e33 (ite $e14 ?e26 ?e26))
+(let (?e34 (ite $e12 v2 v3))
+(let (?e35 (ite $e13 ?e34 ?e34))
+(let (?e36 (ite $e16 v3 v3))
+(let (?e37 (ite $e10 ?e34 ?e34))
+(let (?e38 (ite $e11 ?e35 v2))
+(let (?e39 (ite $e19 ?e34 ?e37))
+(let (?e40 (ite $e14 ?e35 ?e34))
+(let (?e41 (ite $e20 ?e40 v3))
+(let (?e42 (ite $e17 ?e39 ?e36))
+(let (?e43 (ite $e20 ?e40 v2))
+(let (?e44 (ite $e15 ?e43 v2))
+(let (?e45 (ite $e18 ?e43 v2))
+(let (?e46 (ite $e11 v6 v7))
+(let (?e47 (ite $e19 v5 v6))
+(let (?e48 (ite $e10 v8 v5))
+(let (?e49 (ite $e11 v6 ?e48))
+(let (?e50 (ite $e15 ?e9 ?e49))
+(let (?e51 (ite $e15 v4 v4))
+(let (?e52 (ite $e12 ?e50 ?e47))
+(let (?e53 (ite $e13 v6 ?e51))
+(let (?e54 (ite $e18 ?e49 ?e46))
+(let (?e55 (ite $e20 ?e9 ?e50))
+(let (?e56 (ite $e17 ?e53 ?e52))
+(let (?e57 (ite $e14 ?e47 ?e9))
+(let (?e58 (ite $e16 ?e48 ?e52))
+(let (?e59 (select ?e23 ?e39))
+(flet ($e60 (distinct v1 ?e22))
+(flet ($e61 (= ?e25 ?e25))
+(flet ($e62 (distinct ?e32 ?e27))
+(flet ($e63 (distinct ?e31 ?e25))
+(flet ($e64 (distinct ?e22 ?e28))
+(flet ($e65 (= v1 ?e28))
+(flet ($e66 (distinct ?e25 ?e28))
+(flet ($e67 (= v1 ?e25))
+(flet ($e68 (= ?e30 v0))
+(flet ($e69 (distinct ?e25 ?e23))
+(flet ($e70 (distinct ?e21 ?e24))
+(flet ($e71 (= ?e30 ?e25))
+(flet ($e72 (distinct ?e21 v0))
+(flet ($e73 (distinct v1 ?e29))
+(flet ($e74 (distinct ?e32 ?e31))
+(flet ($e75 (distinct ?e25 ?e23))
+(flet ($e76 (= ?e32 ?e21))
+(flet ($e77 (distinct ?e32 ?e31))
+(flet ($e78 (distinct ?e28 ?e24))
+(flet ($e79 (distinct v1 ?e26))
+(flet ($e80 (distinct v1 ?e23))
+(flet ($e81 (distinct v1 v0))
+(flet ($e82 (= ?e29 v1))
+(flet ($e83 (distinct ?e29 ?e22))
+(flet ($e84 (distinct v0 ?e29))
+(flet ($e85 (= ?e28 ?e27))
+(flet ($e86 (distinct ?e25 ?e21))
+(flet ($e87 (distinct ?e28 ?e25))
+(flet ($e88 (= ?e29 ?e21))
+(flet ($e89 (= ?e31 ?e33))
+(flet ($e90 (distinct ?e45 ?e35))
+(flet ($e91 (= ?e37 v3))
+(flet ($e92 (distinct ?e43 ?e35))
+(flet ($e93 (distinct v2 v3))
+(flet ($e94 (distinct ?e40 ?e45))
+(flet ($e95 (distinct ?e38 v3))
+(flet ($e96 (distinct ?e43 ?e37))
+(flet ($e97 (= ?e36 ?e44))
+(flet ($e98 (= ?e39 ?e36))
+(flet ($e99 (distinct ?e38 ?e44))
+(flet ($e100 (distinct ?e44 ?e34))
+(flet ($e101 (distinct ?e43 ?e40))
+(flet ($e102 (distinct v2 v3))
+(flet ($e103 (= ?e43 ?e41))
+(flet ($e104 (= ?e38 ?e40))
+(flet ($e105 (= v3 ?e37))
+(flet ($e106 (= v2 ?e44))
+(flet ($e107 (distinct ?e34 ?e45))
+(flet ($e108 (distinct ?e39 ?e37))
+(flet ($e109 (= ?e36 ?e38))
+(flet ($e110 (= v3 ?e38))
+(flet ($e111 (= ?e39 v3))
+(flet ($e112 (distinct ?e44 ?e45))
+(flet ($e113 (distinct ?e41 ?e40))
+(flet ($e114 (= ?e38 ?e40))
+(flet ($e115 (distinct ?e44 ?e38))
+(flet ($e116 (distinct ?e37 ?e44))
+(flet ($e117 (distinct ?e34 ?e39))
+(flet ($e118 (distinct ?e37 ?e40))
+(flet ($e119 (distinct ?e37 ?e36))
+(flet ($e120 (distinct ?e45 ?e42))
+(flet ($e121 (distinct ?e58 ?e48))
+(flet ($e122 (distinct ?e9 v7))
+(flet ($e123 (distinct v7 v4))
+(flet ($e124 (= ?e59 ?e59))
+(flet ($e125 (= ?e46 ?e49))
+(flet ($e126 (distinct ?e58 ?e48))
+(flet ($e127 (distinct ?e53 ?e46))
+(flet ($e128 (distinct v4 ?e47))
+(flet ($e129 (distinct v4 v5))
+(flet ($e130 (= v7 ?e49))
+(flet ($e131 (distinct v8 v6))
+(flet ($e132 (= ?e48 ?e51))
+(flet ($e133 (distinct ?e51 ?e47))
+(flet ($e134 (= ?e55 ?e49))
+(flet ($e135 (= ?e54 ?e58))
+(flet ($e136 (distinct ?e47 ?e57))
+(flet ($e137 (= ?e48 v4))
+(flet ($e138 (= ?e48 ?e55))
+(flet ($e139 (distinct v8 ?e48))
+(flet ($e140 (distinct ?e55 v7))
+(flet ($e141 (= v4 v6))
+(flet ($e142 (distinct ?e56 ?e53))
+(flet ($e143 (distinct ?e58 ?e49))
+(flet ($e144 (distinct ?e50 v5))
+(flet ($e145 (distinct ?e58 ?e47))
+(flet ($e146 (distinct v8 ?e56))
+(flet ($e147 (= ?e50 ?e52))
+(flet ($e148 (xor $e19 $e117))
+(flet ($e149 (or $e106 $e64))
+(flet ($e150 (or $e74 $e14))
+(flet ($e151 (or $e127 $e110))
+(flet ($e152 (iff $e140 $e113))
+(flet ($e153 (implies $e71 $e144))
+(flet ($e154 (iff $e142 $e85))
+(flet ($e155 (implies $e13 $e13))
+(flet ($e156 (not $e118))
+(flet ($e157 (if_then_else $e123 $e62 $e95))
+(flet ($e158 (implies $e63 $e101))
+(flet ($e159 (iff $e77 $e125))
+(flet ($e160 (or $e73 $e80))
+(flet ($e161 (if_then_else $e143 $e99 $e107))
+(flet ($e162 (iff $e72 $e102))
+(flet ($e163 (or $e100 $e126))
+(flet ($e164 (or $e91 $e162))
+(flet ($e165 (iff $e11 $e75))
+(flet ($e166 (and $e84 $e158))
+(flet ($e167 (or $e16 $e60))
+(flet ($e168 (implies $e149 $e137))
+(flet ($e169 (not $e109))
+(flet ($e170 (and $e61 $e145))
+(flet ($e171 (and $e121 $e68))
+(flet ($e172 (and $e120 $e124))
+(flet ($e173 (and $e165 $e90))
+(flet ($e174 (implies $e168 $e166))
+(flet ($e175 (or $e174 $e173))
+(flet ($e176 (xor $e114 $e105))
+(flet ($e177 (xor $e97 $e66))
+(flet ($e178 (xor $e128 $e122))
+(flet ($e179 (xor $e167 $e176))
+(flet ($e180 (iff $e177 $e108))
+(flet ($e181 (not $e159))
+(flet ($e182 (iff $e178 $e138))
+(flet ($e183 (or $e98 $e169))
+(flet ($e184 (iff $e87 $e83))
+(flet ($e185 (not $e12))
+(flet ($e186 (and $e78 $e151))
+(flet ($e187 (not $e69))
+(flet ($e188 (xor $e94 $e88))
+(flet ($e189 (and $e81 $e141))
+(flet ($e190 (or $e96 $e184))
+(flet ($e191 (iff $e116 $e103))
+(flet ($e192 (or $e147 $e136))
+(flet ($e193 (if_then_else $e179 $e89 $e139))
+(flet ($e194 (implies $e193 $e134))
+(flet ($e195 (iff $e191 $e10))
+(flet ($e196 (iff $e152 $e190))
+(flet ($e197 (iff $e163 $e161))
+(flet ($e198 (iff $e170 $e129))
+(flet ($e199 (or $e195 $e67))
+(flet ($e200 (not $e164))
+(flet ($e201 (and $e104 $e192))
+(flet ($e202 (iff $e65 $e150))
+(flet ($e203 (xor $e200 $e70))
+(flet ($e204 (and $e183 $e79))
+(flet ($e205 (or $e185 $e172))
+(flet ($e206 (not $e18))
+(flet ($e207 (implies $e181 $e198))
+(flet ($e208 (not $e189))
+(flet ($e209 (xor $e171 $e203))
+(flet ($e210 (not $e201))
+(flet ($e211 (implies $e196 $e206))
+(flet ($e212 (iff $e211 $e182))
+(flet ($e213 (implies $e155 $e132))
+(flet ($e214 (if_then_else $e199 $e205 $e148))
+(flet ($e215 (xor $e154 $e86))
+(flet ($e216 (not $e119))
+(flet ($e217 (implies $e20 $e133))
+(flet ($e218 (if_then_else $e215 $e180 $e15))
+(flet ($e219 (implies $e197 $e112))
+(flet ($e220 (implies $e156 $e115))
+(flet ($e221 (and $e204 $e212))
+(flet ($e222 (if_then_else $e220 $e214 $e209))
+(flet ($e223 (implies $e218 $e213))
+(flet ($e224 (if_then_else $e93 $e221 $e130))
+(flet ($e225 (and $e223 $e222))
+(flet ($e226 (xor $e202 $e17))
+(flet ($e227 (not $e225))
+(flet ($e228 (if_then_else $e208 $e210 $e207))
+(flet ($e229 (or $e135 $e131))
+(flet ($e230 (not $e157))
+(flet ($e231 (and $e216 $e216))
+(flet ($e232 (or $e229 $e82))
+(flet ($e233 (implies $e187 $e160))
+(flet ($e234 (implies $e76 $e219))
+(flet ($e235 (not $e186))
+(flet ($e236 (xor $e230 $e188))
+(flet ($e237 (xor $e146 $e227))
+(flet ($e238 (implies $e235 $e235))
+(flet ($e239 (or $e92 $e232))
+(flet ($e240 (implies $e236 $e228))
+(flet ($e241 (not $e217))
+(flet ($e242 (or $e237 $e238))
+(flet ($e243 (implies $e233 $e241))
+(flet ($e244 (iff $e175 $e224))
+(flet ($e245 (if_then_else $e239 $e242 $e244))
+(flet ($e246 (xor $e153 $e234))
+(flet ($e247 (if_then_else $e194 $e246 $e226))
+(flet ($e248 (implies $e247 $e247))
+(flet ($e249 (or $e240 $e245))
+(flet ($e250 (xor $e248 $e111))
+(flet ($e251 (implies $e249 $e249))
+(flet ($e252 (iff $e243 $e243))
+(flet ($e253 (xor $e251 $e251))
+(flet ($e254 (iff $e253 $e253))
+(flet ($e255 (if_then_else $e250 $e254 $e254))
+(flet ($e256 (iff $e255 $e252))
+(flet ($e257 (xor $e231 $e256))
+$e257
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/arrays/incorrect7.smt b/test/regress/regress0/arrays/incorrect7.smt
new file mode 100644
index 0000000..4b406f9
--- /dev/null
+++ b/test/regress/regress0/arrays/incorrect7.smt
@@ -0,0 +1,80 @@
+(benchmark fuzzsmt
+:logic QF_AX
+:status unsat
+:extrafuns ((v0 Array))
+:extrafuns ((v1 Array))
+:extrafuns ((v2 Index))
+:extrafuns ((v3 Element))
+:extrafuns ((v4 Element))
+:formula
+(flet ($e5 (distinct v0 v0))
+(flet ($e6 (distinct v0 v1))
+(flet ($e7 (distinct v2 v2))
+(flet ($e8 (distinct v3 v4))
+(let (?e9 (ite $e5 v1 v1))
+(let (?e10 (ite $e7 ?e9 v0))
+(let (?e11 (ite $e6 ?e10 v0))
+(let (?e12 (ite $e8 v1 v0))
+(let (?e13 (ite $e8 v2 v2))
+(let (?e14 (ite $e7 ?e13 ?e13))
+(let (?e15 (ite $e5 ?e13 ?e14))
+(let (?e16 (ite $e7 v2 ?e13))
+(let (?e17 (ite $e6 v2 ?e13))
+(let (?e18 (ite $e7 v3 v4))
+(let (?e19 (ite $e8 ?e18 v3))
+(let (?e20 (ite $e6 v3 v4))
+(let (?e21 (ite $e8 ?e19 v4))
+(let (?e22 (ite $e6 ?e20 ?e18))
+(let (?e23 (ite $e5 ?e22 ?e21))
+(let (?e24 (store ?e9 ?e17 ?e23))
+(let (?e25 (select ?e11 ?e15))
+(flet ($e26 (= ?e11 ?e12))
+(flet ($e27 (= ?e11 ?e11))
+(flet ($e28 (= ?e12 ?e11))
+(flet ($e29 (= v0 ?e9))
+(flet ($e30 (= ?e9 v1))
+(flet ($e31 (distinct ?e10 v1))
+(flet ($e32 (= ?e12 ?e24))
+(flet ($e33 (distinct ?e17 ?e14))
+(flet ($e34 (distinct v2 ?e17))
+(flet ($e35 (= ?e13 v2))
+(flet ($e36 (distinct ?e15 ?e16))
+(flet ($e37 (= v4 ?e22))
+(flet ($e38 (distinct v4 ?e18))
+(flet ($e39 (= ?e22 ?e23))
+(flet ($e40 (= ?e23 ?e20))
+(flet ($e41 (distinct ?e21 ?e22))
+(flet ($e42 (= ?e21 ?e23))
+(flet ($e43 (distinct ?e23 v4))
+(flet ($e44 (distinct v4 v3))
+(flet ($e45 (= ?e21 ?e19))
+(flet ($e46 (= ?e22 ?e22))
+(flet ($e47 (distinct ?e20 ?e25))
+(flet ($e48 (not $e7))
+(flet ($e49 (not $e33))
+(flet ($e50 (iff $e35 $e39))
+(flet ($e51 (xor $e28 $e42))
+(flet ($e52 (xor $e31 $e38))
+(flet ($e53 (implies $e46 $e36))
+(flet ($e54 (or $e50 $e37))
+(flet ($e55 (or $e52 $e5))
+(flet ($e56 (and $e34 $e55))
+(flet ($e57 (iff $e47 $e8))
+(flet ($e58 (implies $e48 $e44))
+(flet ($e59 (iff $e45 $e57))
+(flet ($e60 (iff $e41 $e29))
+(flet ($e61 (if_then_else $e58 $e40 $e27))
+(flet ($e62 (iff $e53 $e59))
+(flet ($e63 (if_then_else $e32 $e26 $e54))
+(flet ($e64 (xor $e51 $e60))
+(flet ($e65 (iff $e62 $e6))
+(flet ($e66 (implies $e64 $e49))
+(flet ($e67 (or $e63 $e65))
+(flet ($e68 (if_then_else $e30 $e66 $e61))
+(flet ($e69 (or $e56 $e68))
+(flet ($e70 (and $e69 $e43))
+(flet ($e71 (iff $e67 $e67))
+(flet ($e72 (and $e70 $e71))
+$e72
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/arrays/incorrect8.minimized.smt b/test/regress/regress0/arrays/incorrect8.minimized.smt
new file mode 100644
index 0000000..d08b71e
--- /dev/null
+++ b/test/regress/regress0/arrays/incorrect8.minimized.smt
@@ -0,0 +1,20 @@
+(benchmark fuzzsmt
+:logic QF_AX
+:extrafuns ((v4 Index))
+:extrafuns ((v3 Index))
+:extrafuns ((v5 Element))
+:extrafuns ((v1 Array))
+:status unsat
+:formula
+(let (?n1 (store v1 v4 v5))
+(let (?n2 (select ?n1 v3))
+(let (?n3 (select v1 v3))
+(flet ($n4 (distinct ?n2 ?n3))
+(let (?n5 (ite $n4 v4 v3))
+(let (?n6 (store ?n1 v4 v5))
+(let (?n7 (select ?n6 v3))
+(flet ($n8 (= ?n2 ?n7))
+(let (?n9 (ite $n8 v3 v4))
+(flet ($n10 (distinct ?n5 ?n9))
+$n10
+)))))))))))
diff --git a/test/regress/regress0/arrays/incorrect8.smt b/test/regress/regress0/arrays/incorrect8.smt
new file mode 100644
index 0000000..a118fec
--- /dev/null
+++ b/test/regress/regress0/arrays/incorrect8.smt
@@ -0,0 +1,491 @@
+(benchmark fuzzsmt
+:logic QF_AX
+:status unsat
+:extrafuns ((v0 Array))
+:extrafuns ((v1 Array))
+:extrafuns ((v2 Array))
+:extrafuns ((v3 Index))
+:extrafuns ((v4 Index))
+:extrafuns ((v5 Element))
+:formula
+(let (?e6 (store v1 v4 v5))
+(let (?e7 (store ?e6 v4 v5))
+(let (?e8 (select v0 v3))
+(let (?e9 (select ?e6 v3))
+(let (?e10 (select v0 v3))
+(let (?e11 (store ?e7 v3 ?e8))
+(let (?e12 (select ?e7 v3))
+(let (?e13 (store ?e7 v3 ?e8))
+(let (?e14 (select v1 v3))
+(flet ($e15 (distinct ?e13 ?e13))
+(flet ($e16 (distinct v2 ?e6))
+(flet ($e17 (distinct v1 v2))
+(flet ($e18 (= v2 ?e7))
+(flet ($e19 (= v0 v0))
+(flet ($e20 (distinct ?e13 v2))
+(flet ($e21 (= ?e6 ?e6))
+(flet ($e22 (distinct ?e11 ?e13))
+(flet ($e23 (= v3 v3))
+(flet ($e24 (= v3 v3))
+(flet ($e25 (distinct v3 v3))
+(flet ($e26 (distinct v4 v3))
+(flet ($e27 (distinct ?e9 ?e14))
+(flet ($e28 (= ?e9 v5))
+(flet ($e29 (= ?e12 v5))
+(flet ($e30 (distinct ?e10 ?e10))
+(flet ($e31 (= ?e12 ?e9))
+(flet ($e32 (= ?e10 ?e10))
+(flet ($e33 (= ?e12 v5))
+(flet ($e34 (= ?e8 ?e8))
+(let (?e35 (ite $e24 ?e6 ?e11))
+(let (?e36 (ite $e17 ?e35 ?e6))
+(let (?e37 (ite $e23 v2 v2))
+(let (?e38 (ite $e31 ?e35 ?e36))
+(let (?e39 (ite $e16 ?e36 ?e38))
+(let (?e40 (ite $e15 v2 v2))
+(let (?e41 (ite $e28 ?e7 ?e36))
+(let (?e42 (ite $e22 ?e7 ?e13))
+(let (?e43 (ite $e34 ?e38 v1))
+(let (?e44 (ite $e33 v0 v1))
+(let (?e45 (ite $e21 ?e44 v1))
+(let (?e46 (ite $e18 ?e35 ?e11))
+(let (?e47 (ite $e19 ?e44 ?e43))
+(let (?e48 (ite $e27 ?e37 v1))
+(let (?e49 (ite $e17 v2 ?e48))
+(let (?e50 (ite $e28 ?e37 v2))
+(let (?e51 (ite $e29 ?e42 ?e41))
+(let (?e52 (ite $e23 ?e49 v2))
+(let (?e53 (ite $e16 ?e47 ?e35))
+(let (?e54 (ite $e25 ?e45 ?e41))
+(let (?e55 (ite $e23 ?e41 ?e45))
+(let (?e56 (ite $e32 ?e6 ?e51))
+(let (?e57 (ite $e34 ?e39 v2))
+(let (?e58 (ite $e27 ?e49 ?e13))
+(let (?e59 (ite $e26 ?e55 ?e53))
+(let (?e60 (ite $e22 ?e37 ?e36))
+(let (?e61 (ite $e26 ?e50 ?e46))
+(let (?e62 (ite $e29 ?e47 ?e61))
+(let (?e63 (ite $e16 ?e59 ?e53))
+(let (?e64 (ite $e20 ?e55 ?e56))
+(let (?e65 (ite $e30 ?e42 ?e52))
+(let (?e66 (ite $e21 v3 v3))
+(let (?e67 (ite $e26 v3 v3))
+(let (?e68 (ite $e28 v4 v4))
+(let (?e69 (ite $e33 ?e67 ?e66))
+(let (?e70 (ite $e18 v4 ?e69))
+(let (?e71 (ite $e17 v3 ?e67))
+(let (?e72 (ite $e23 v3 ?e71))
+(let (?e73 (ite $e27 ?e68 ?e67))
+(let (?e74 (ite $e29 v4 ?e73))
+(let (?e75 (ite $e24 ?e70 ?e72))
+(let (?e76 (ite $e32 ?e73 ?e75))
+(let (?e77 (ite $e17 ?e75 v4))
+(let (?e78 (ite $e25 ?e68 ?e72))
+(let (?e79 (ite $e30 v4 ?e77))
+(let (?e80 (ite $e19 v3 ?e70))
+(let (?e81 (ite $e15 ?e66 v3))
+(let (?e82 (ite $e16 ?e72 ?e76))
+(let (?e83 (ite $e21 ?e70 ?e75))
+(let (?e84 (ite $e23 ?e70 ?e66))
+(let (?e85 (ite $e31 ?e81 ?e74))
+(let (?e86 (ite $e22 ?e69 ?e84))
+(let (?e87 (ite $e34 ?e73 v3))
+(let (?e88 (ite $e20 ?e79 ?e67))
+(let (?e89 (ite $e28 ?e12 ?e9))
+(let (?e90 (ite $e17 ?e10 v5))
+(let (?e91 (ite $e21 ?e8 ?e14))
+(let (?e92 (ite $e23 ?e10 v5))
+(let (?e93 (ite $e24 ?e90 ?e9))
+(let (?e94 (ite $e16 ?e90 ?e10))
+(let (?e95 (ite $e32 ?e8 ?e14))
+(let (?e96 (ite $e18 ?e94 ?e92))
+(let (?e97 (ite $e34 ?e8 ?e14))
+(let (?e98 (ite $e25 ?e90 ?e91))
+(let (?e99 (ite $e15 v5 ?e10))
+(let (?e100 (ite $e31 ?e98 ?e94))
+(let (?e101 (ite $e21 ?e90 ?e14))
+(let (?e102 (ite $e20 ?e95 ?e10))
+(let (?e103 (ite $e22 ?e10 ?e92))
+(let (?e104 (ite $e17 ?e97 ?e94))
+(let (?e105 (ite $e27 ?e102 ?e97))
+(let (?e106 (ite $e29 ?e14 ?e8))
+(let (?e107 (ite $e33 ?e105 ?e95))
+(let (?e108 (ite $e19 ?e100 ?e100))
+(let (?e109 (ite $e19 ?e93 v5))
+(let (?e110 (ite $e30 ?e90 ?e95))
+(let (?e111 (ite $e26 ?e93 ?e108))
+(let (?e112 (store v2 ?e67 ?e100))
+(let (?e113 (store ?e57 ?e80 ?e92))
+(let (?e114 (store ?e52 ?e75 ?e97))
+(let (?e115 (select ?e54 ?e87))
+(let (?e116 (select ?e51 v3))
+(let (?e117 (select ?e13 ?e71))
+(let (?e118 (store ?e112 ?e85 ?e93))
+(let (?e119 (select ?e62 ?e75))
+(let (?e120 (store ?e45 ?e81 ?e91))
+(let (?e121 (select ?e56 ?e76))
+(flet ($e122 (= ?e58 ?e56))
+(flet ($e123 (distinct ?e60 ?e49))
+(flet ($e124 (= ?e62 ?e46))
+(flet ($e125 (= ?e54 ?e113))
+(flet ($e126 (= ?e61 ?e47))
+(flet ($e127 (distinct ?e36 ?e113))
+(flet ($e128 (= ?e40 ?e38))
+(flet ($e129 (= ?e62 ?e112))
+(flet ($e130 (distinct ?e56 ?e65))
+(flet ($e131 (distinct ?e35 ?e114))
+(flet ($e132 (= ?e35 ?e63))
+(flet ($e133 (distinct ?e53 ?e114))
+(flet ($e134 (distinct ?e36 ?e6))
+(flet ($e135 (= ?e51 ?e53))
+(flet ($e136 (= ?e118 ?e61))
+(flet ($e137 (= ?e120 ?e37))
+(flet ($e138 (= ?e35 ?e63))
+(flet ($e139 (= ?e13 ?e57))
+(flet ($e140 (= ?e46 ?e65))
+(flet ($e141 (= ?e120 ?e13))
+(flet ($e142 (= ?e45 ?e51))
+(flet ($e143 (distinct v0 ?e64))
+(flet ($e144 (distinct ?e41 ?e56))
+(flet ($e145 (distinct ?e46 ?e38))
+(flet ($e146 (= v0 ?e38))
+(flet ($e147 (= ?e47 v0))
+(flet ($e148 (distinct ?e47 ?e7))
+(flet ($e149 (distinct ?e56 ?e58))
+(flet ($e150 (= ?e58 ?e52))
+(flet ($e151 (distinct ?e11 ?e55))
+(flet ($e152 (distinct ?e60 ?e57))
+(flet ($e153 (= ?e44 ?e120))
+(flet ($e154 (distinct ?e48 ?e40))
+(flet ($e155 (= ?e46 ?e53))
+(flet ($e156 (distinct ?e44 ?e49))
+(flet ($e157 (distinct v0 ?e13))
+(flet ($e158 (distinct ?e51 ?e56))
+(flet ($e159 (distinct ?e62 ?e13))
+(flet ($e160 (= ?e61 ?e47))
+(flet ($e161 (distinct v2 ?e47))
+(flet ($e162 (distinct ?e52 ?e35))
+(flet ($e163 (= ?e43 ?e48))
+(flet ($e164 (= ?e47 ?e113))
+(flet ($e165 (= ?e112 ?e6))
+(flet ($e166 (distinct ?e52 ?e47))
+(flet ($e167 (distinct ?e41 ?e51))
+(flet ($e168 (= ?e45 ?e55))
+(flet ($e169 (distinct ?e48 ?e58))
+(flet ($e170 (= ?e58 ?e112))
+(flet ($e171 (= ?e58 ?e57))
+(flet ($e172 (= ?e11 ?e39))
+(flet ($e173 (distinct ?e114 ?e54))
+(flet ($e174 (= ?e58 ?e52))
+(flet ($e175 (distinct ?e58 ?e65))
+(flet ($e176 (= v0 ?e11))
+(flet ($e177 (distinct ?e118 ?e38))
+(flet ($e178 (distinct v1 ?e48))
+(flet ($e179 (distinct ?e53 ?e59))
+(flet ($e180 (= ?e11 ?e49))
+(flet ($e181 (= ?e120 ?e42))
+(flet ($e182 (= ?e61 ?e45))
+(flet ($e183 (= ?e42 ?e65))
+(flet ($e184 (= ?e58 ?e57))
+(flet ($e185 (distinct ?e46 ?e51))
+(flet ($e186 (= ?e42 ?e113))
+(flet ($e187 (distinct ?e37 ?e64))
+(flet ($e188 (distinct ?e63 ?e37))
+(flet ($e189 (distinct ?e43 v1))
+(flet ($e190 (distinct ?e62 ?e51))
+(flet ($e191 (= ?e50 ?e6))
+(flet ($e192 (distinct ?e73 ?e83))
+(flet ($e193 (distinct ?e83 ?e76))
+(flet ($e194 (distinct ?e81 ?e87))
+(flet ($e195 (= ?e76 ?e78))
+(flet ($e196 (distinct ?e81 ?e84))
+(flet ($e197 (distinct v4 ?e83))
+(flet ($e198 (= ?e73 ?e68))
+(flet ($e199 (= ?e81 ?e76))
+(flet ($e200 (distinct ?e77 ?e70))
+(flet ($e201 (distinct ?e88 ?e84))
+(flet ($e202 (= ?e79 ?e82))
+(flet ($e203 (= ?e69 ?e81))
+(flet ($e204 (= ?e74 ?e78))
+(flet ($e205 (= ?e87 ?e77))
+(flet ($e206 (distinct ?e80 ?e88))
+(flet ($e207 (distinct v4 ?e73))
+(flet ($e208 (distinct ?e84 ?e67))
+(flet ($e209 (= ?e76 ?e87))
+(flet ($e210 (distinct ?e84 ?e67))
+(flet ($e211 (distinct ?e88 ?e77))
+(flet ($e212 (distinct ?e79 ?e88))
+(flet ($e213 (= ?e78 v3))
+(flet ($e214 (distinct ?e84 ?e70))
+(flet ($e215 (= ?e86 ?e85))
+(flet ($e216 (= ?e75 ?e71))
+(flet ($e217 (= ?e76 ?e87))
+(flet ($e218 (distinct ?e85 ?e73))
+(flet ($e219 (= ?e67 ?e71))
+(flet ($e220 (distinct ?e74 ?e80))
+(flet ($e221 (distinct ?e67 ?e82))
+(flet ($e222 (= ?e76 ?e78))
+(flet ($e223 (distinct ?e70 ?e77))
+(flet ($e224 (= ?e81 ?e67))
+(flet ($e225 (= ?e75 ?e78))
+(flet ($e226 (distinct ?e72 ?e67))
+(flet ($e227 (= ?e80 ?e73))
+(flet ($e228 (= ?e71 ?e69))
+(flet ($e229 (distinct ?e87 ?e83))
+(flet ($e230 (distinct v4 ?e86))
+(flet ($e231 (distinct ?e81 ?e67))
+(flet ($e232 (distinct ?e75 ?e84))
+(flet ($e233 (= ?e70 ?e85))
+(flet ($e234 (distinct ?e83 v4))
+(flet ($e235 (distinct ?e80 ?e88))
+(flet ($e236 (= ?e79 ?e68))
+(flet ($e237 (distinct ?e87 ?e66))
+(flet ($e238 (= ?e98 ?e9))
+(flet ($e239 (= ?e106 ?e119))
+(flet ($e240 (= ?e104 ?e115))
+(flet ($e241 (distinct ?e10 ?e99))
+(flet ($e242 (= ?e99 ?e111))
+(flet ($e243 (= ?e89 ?e92))
+(flet ($e244 (= ?e101 v5))
+(flet ($e245 (distinct ?e106 ?e10))
+(flet ($e246 (distinct ?e14 ?e91))
+(flet ($e247 (= ?e111 ?e93))
+(flet ($e248 (distinct ?e9 ?e95))
+(flet ($e249 (distinct ?e10 ?e12))
+(flet ($e250 (= ?e97 ?e115))
+(flet ($e251 (= v5 ?e9))
+(flet ($e252 (= ?e95 ?e117))
+(flet ($e253 (distinct ?e9 ?e94))
+(flet ($e254 (distinct ?e9 ?e93))
+(flet ($e255 (distinct ?e121 ?e9))
+(flet ($e256 (distinct ?e117 ?e89))
+(flet ($e257 (= ?e96 ?e90))
+(flet ($e258 (= ?e108 ?e121))
+(flet ($e259 (distinct ?e14 ?e98))
+(flet ($e260 (distinct ?e95 v5))
+(flet ($e261 (distinct ?e108 ?e105))
+(flet ($e262 (= ?e107 ?e90))
+(flet ($e263 (distinct ?e119 ?e109))
+(flet ($e264 (= ?e107 ?e14))
+(flet ($e265 (distinct ?e109 ?e108))
+(flet ($e266 (distinct ?e117 ?e100))
+(flet ($e267 (= ?e101 ?e102))
+(flet ($e268 (distinct ?e92 ?e12))
+(flet ($e269 (distinct ?e9 ?e109))
+(flet ($e270 (= ?e90 ?e101))
+(flet ($e271 (distinct ?e12 ?e111))
+(flet ($e272 (= ?e106 ?e104))
+(flet ($e273 (= ?e115 ?e93))
+(flet ($e274 (distinct ?e104 ?e108))
+(flet ($e275 (distinct ?e8 ?e100))
+(flet ($e276 (distinct ?e97 ?e10))
+(flet ($e277 (distinct ?e100 ?e111))
+(flet ($e278 (distinct ?e89 ?e104))
+(flet ($e279 (= ?e8 ?e105))
+(flet ($e280 (distinct ?e110 ?e121))
+(flet ($e281 (= ?e89 ?e100))
+(flet ($e282 (distinct ?e93 ?e117))
+(flet ($e283 (distinct ?e121 ?e116))
+(flet ($e284 (= ?e107 ?e104))
+(flet ($e285 (distinct ?e10 v5))
+(flet ($e286 (distinct ?e116 ?e9))
+(flet ($e287 (= ?e103 ?e98))
+(flet ($e288 (implies $e272 $e127))
+(flet ($e289 (implies $e275 $e25))
+(flet ($e290 (if_then_else $e204 $e223 $e241))
+(flet ($e291 (if_then_else $e226 $e209 $e280))
+(flet ($e292 (and $e243 $e218))
+(flet ($e293 (xor $e230 $e191))
+(flet ($e294 (and $e27 $e32))
+(flet ($e295 (iff $e15 $e163))
+(flet ($e296 (implies $e124 $e270))
+(flet ($e297 (xor $e150 $e200))
+(flet ($e298 (not $e221))
+(flet ($e299 (implies $e211 $e211))
+(flet ($e300 (and $e145 $e251))
+(flet ($e301 (implies $e278 $e22))
+(flet ($e302 (and $e215 $e153))
+(flet ($e303 (and $e300 $e228))
+(flet ($e304 (iff $e210 $e30))
+(flet ($e305 (if_then_else $e135 $e291 $e152))
+(flet ($e306 (not $e195))
+(flet ($e307 (not $e143))
+(flet ($e308 (or $e132 $e138))
+(flet ($e309 (or $e253 $e307))
+(flet ($e310 (iff $e229 $e294))
+(flet ($e311 (or $e182 $e173))
+(flet ($e312 (and $e233 $e188))
+(flet ($e313 (iff $e246 $e130))
+(flet ($e314 (xor $e212 $e126))
+(flet ($e315 (implies $e168 $e18))
+(flet ($e316 (or $e21 $e287))
+(flet ($e317 (or $e183 $e203))
+(flet ($e318 (or $e159 $e277))
+(flet ($e319 (if_then_else $e258 $e238 $e224))
+(flet ($e320 (implies $e262 $e312))
+(flet ($e321 (not $e271))
+(flet ($e322 (xor $e167 $e193))
+(flet ($e323 (xor $e304 $e290))
+(flet ($e324 (iff $e125 $e199))
+(flet ($e325 (and $e19 $e186))
+(flet ($e326 (implies $e279 $e321))
+(flet ($e327 (or $e139 $e263))
+(flet ($e328 (not $e137))
+(flet ($e329 (or $e136 $e319))
+(flet ($e330 (and $e318 $e234))
+(flet ($e331 (or $e24 $e299))
+(flet ($e332 (or $e33 $e254))
+(flet ($e333 (or $e295 $e206))
+(flet ($e334 (iff $e283 $e236))
+(flet ($e335 (and $e252 $e123))
+(flet ($e336 (or $e141 $e317))
+(flet ($e337 (and $e166 $e249))
+(flet ($e338 (implies $e198 $e160))
+(flet ($e339 (not $e242))
+(flet ($e340 (or $e324 $e217))
+(flet ($e341 (implies $e265 $e185))
+(flet ($e342 (or $e245 $e171))
+(flet ($e343 (implies $e337 $e296))
+(flet ($e344 (if_then_else $e292 $e161 $e220))
+(flet ($e345 (implies $e122 $e335))
+(flet ($e346 (if_then_else $e176 $e261 $e257))
+(flet ($e347 (xor $e187 $e256))
+(flet ($e348 (if_then_else $e344 $e284 $e327))
+(flet ($e349 (xor $e293 $e31))
+(flet ($e350 (xor $e336 $e142))
+(flet ($e351 (iff $e302 $e313))
+(flet ($e352 (if_then_else $e154 $e174 $e285))
+(flet ($e353 (iff $e316 $e208))
+(flet ($e354 (if_then_else $e309 $e133 $e158))
+(flet ($e355 (not $e348))
+(flet ($e356 (or $e140 $e255))
+(flet ($e357 (iff $e216 $e219))
+(flet ($e358 (if_then_else $e169 $e129 $e331))
+(flet ($e359 (and $e164 $e147))
+(flet ($e360 (if_then_else $e311 $e250 $e181))
+(flet ($e361 (not $e332))
+(flet ($e362 (not $e320))
+(flet ($e363 (iff $e205 $e175))
+(flet ($e364 (and $e247 $e194))
+(flet ($e365 (not $e148))
+(flet ($e366 (not $e346))
+(flet ($e367 (or $e269 $e297))
+(flet ($e368 (iff $e322 $e180))
+(flet ($e369 (if_then_else $e131 $e259 $e367))
+(flet ($e370 (iff $e298 $e239))
+(flet ($e371 (iff $e352 $e306))
+(flet ($e372 (not $e202))
+(flet ($e373 (implies $e315 $e264))
+(flet ($e374 (or $e357 $e192))
+(flet ($e375 (iff $e214 $e281))
+(flet ($e376 (and $e26 $e156))
+(flet ($e377 (xor $e308 $e17))
+(flet ($e378 (or $e268 $e162))
+(flet ($e379 (if_then_else $e353 $e333 $e177))
+(flet ($e380 (not $e377))
+(flet ($e381 (xor $e235 $e235))
+(flet ($e382 (not $e338))
+(flet ($e383 (and $e360 $e144))
+(flet ($e384 (if_then_else $e345 $e149 $e170))
+(flet ($e385 (or $e362 $e323))
+(flet ($e386 (not $e369))
+(flet ($e387 (iff $e289 $e273))
+(flet ($e388 (xor $e222 $e213))
+(flet ($e389 (iff $e178 $e356))
+(flet ($e390 (xor $e165 $e248))
+(flet ($e391 (if_then_else $e379 $e34 $e288))
+(flet ($e392 (iff $e301 $e155))
+(flet ($e393 (implies $e370 $e260))
+(flet ($e394 (implies $e392 $e373))
+(flet ($e395 (xor $e378 $e310))
+(flet ($e396 (or $e359 $e276))
+(flet ($e397 (iff $e387 $e244))
+(flet ($e398 (if_then_else $e266 $e267 $e394))
+(flet ($e399 (implies $e366 $e365))
+(flet ($e400 (implies $e397 $e350))
+(flet ($e401 (and $e314 $e343))
+(flet ($e402 (not $e134))
+(flet ($e403 (and $e382 $e157))
+(flet ($e404 (if_then_else $e363 $e151 $e190))
+(flet ($e405 (implies $e381 $e231))
+(flet ($e406 (xor $e179 $e20))
+(flet ($e407 (xor $e325 $e282))
+(flet ($e408 (and $e396 $e384))
+(flet ($e409 (not $e407))
+(flet ($e410 (not $e375))
+(flet ($e411 (not $e358))
+(flet ($e412 (and $e16 $e286))
+(flet ($e413 (implies $e364 $e172))
+(flet ($e414 (iff $e406 $e404))
+(flet ($e415 (or $e342 $e334))
+(flet ($e416 (if_then_else $e349 $e400 $e413))
+(flet ($e417 (xor $e398 $e414))
+(flet ($e418 (not $e399))
+(flet ($e419 (and $e380 $e374))
+(flet ($e420 (xor $e128 $e393))
+(flet ($e421 (not $e385))
+(flet ($e422 (implies $e326 $e303))
+(flet ($e423 (if_then_else $e405 $e412 $e412))
+(flet ($e424 (implies $e395 $e423))
+(flet ($e425 (if_then_else $e386 $e355 $e227))
+(flet ($e426 (xor $e383 $e237))
+(flet ($e427 (xor $e146 $e402))
+(flet ($e428 (or $e420 $e418))
+(flet ($e429 (if_then_else $e376 $e354 $e371))
+(flet ($e430 (or $e409 $e424))
+(flet ($e431 (if_then_else $e361 $e429 $e225))
+(flet ($e432 (or $e330 $e329))
+(flet ($e433 (not $e232))
+(flet ($e434 (if_then_else $e340 $e184 $e432))
+(flet ($e435 (or $e197 $e389))
+(flet ($e436 (not $e426))
+(flet ($e437 (if_then_else $e207 $e347 $e339))
+(flet ($e438 (if_then_else $e427 $e391 $e411))
+(flet ($e439 (xor $e430 $e410))
+(flet ($e440 (or $e390 $e437))
+(flet ($e441 (implies $e368 $e240))
+(flet ($e442 (and $e441 $e408))
+(flet ($e443 (xor $e201 $e434))
+(flet ($e444 (if_then_else $e305 $e23 $e328))
+(flet ($e445 (xor $e415 $e419))
+(flet ($e446 (implies $e444 $e417))
+(flet ($e447 (if_then_else $e351 $e416 $e29))
+(flet ($e448 (implies $e431 $e446))
+(flet ($e449 (if_then_else $e439 $e388 $e440))
+(flet ($e450 (and $e403 $e442))
+(flet ($e451 (implies $e448 $e448))
+(flet ($e452 (not $e189))
+(flet ($e453 (and $e451 $e449))
+(flet ($e454 (or $e425 $e28))
+(flet ($e455 (if_then_else $e372 $e454 $e447))
+(flet ($e456 (not $e428))
+(flet ($e457 (or $e341 $e421))
+(flet ($e458 (or $e452 $e433))
+(flet ($e459 (iff $e455 $e453))
+(flet ($e460 (or $e445 $e459))
+(flet ($e461 (and $e457 $e450))
+(flet ($e462 (or $e438 $e456))
+(flet ($e463 (not $e461))
+(flet ($e464 (xor $e443 $e274))
+(flet ($e465 (xor $e460 $e462))
+(flet ($e466 (xor $e401 $e401))
+(flet ($e467 (not $e436))
+(flet ($e468 (or $e464 $e464))
+(flet ($e469 (iff $e196 $e196))
+(flet ($e470 (not $e467))
+(flet ($e471 (not $e470))
+(flet ($e472 (or $e466 $e465))
+(flet ($e473 (implies $e435 $e472))
+(flet ($e474 (not $e463))
+(flet ($e475 (not $e458))
+(flet ($e476 (iff $e422 $e475))
+(flet ($e477 (and $e473 $e468))
+(flet ($e478 (iff $e471 $e474))
+(flet ($e479 (or $e476 $e469))
+(flet ($e480 (iff $e479 $e479))
+(flet ($e481 (not $e477))
+(flet ($e482 (or $e481 $e480))
+(flet ($e483 (xor $e478 $e482))
+$e483
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/arrays/incorrect9.smt b/test/regress/regress0/arrays/incorrect9.smt
new file mode 100644
index 0000000..36bf7a2
--- /dev/null
+++ b/test/regress/regress0/arrays/incorrect9.smt
@@ -0,0 +1,189 @@
+(benchmark fuzzsmt
+:logic QF_AX
+:status unsat
+:extrafuns ((v0 Array))
+:extrafuns ((v1 Index))
+:extrafuns ((v2 Index))
+:extrafuns ((v3 Element))
+:extrafuns ((v4 Element))
+:extrafuns ((v5 Element))
+:extrafuns ((v6 Element))
+:extrafuns ((v7 Element))
+:formula
+(let (?e8 (store v0 v2 v7))
+(let (?e9 (select ?e8 v1))
+(flet ($e10 (= v0 ?e8))
+(flet ($e11 (distinct v2 v1))
+(flet ($e12 (distinct v6 ?e9))
+(flet ($e13 (distinct v4 v3))
+(flet ($e14 (= v6 v4))
+(flet ($e15 (distinct v4 v4))
+(flet ($e16 (= v6 v7))
+(flet ($e17 (= v5 v6))
+(let (?e18 (ite $e10 v0 ?e8))
+(let (?e19 (ite $e13 v0 v0))
+(let (?e20 (ite $e13 v0 v0))
+(let (?e21 (ite $e11 ?e19 v0))
+(let (?e22 (ite $e14 ?e18 ?e20))
+(let (?e23 (ite $e10 v0 ?e21))
+(let (?e24 (ite $e13 ?e21 ?e21))
+(let (?e25 (ite $e13 ?e22 ?e21))
+(let (?e26 (ite $e15 ?e23 ?e18))
+(let (?e27 (ite $e12 ?e23 ?e26))
+(let (?e28 (ite $e16 ?e26 ?e23))
+(let (?e29 (ite $e17 ?e27 ?e26))
+(let (?e30 (ite $e10 v1 v1))
+(let (?e31 (ite $e12 v2 v1))
+(let (?e32 (ite $e17 v2 v1))
+(let (?e33 (ite $e15 v1 v2))
+(let (?e34 (ite $e14 ?e30 ?e32))
+(let (?e35 (ite $e11 ?e33 ?e34))
+(let (?e36 (ite $e16 ?e32 ?e31))
+(let (?e37 (ite $e11 ?e35 v1))
+(let (?e38 (ite $e13 v1 ?e37))
+(let (?e39 (ite $e15 v4 v6))
+(let (?e40 (ite $e13 v5 v6))
+(let (?e41 (ite $e16 ?e9 v3))
+(let (?e42 (ite $e12 ?e40 v3))
+(let (?e43 (ite $e11 v5 v7))
+(let (?e44 (ite $e10 ?e40 ?e43))
+(let (?e45 (ite $e14 v4 ?e44))
+(let (?e46 (ite $e17 ?e39 v4))
+(let (?e47 (store ?e8 ?e38 v7))
+(let (?e48 (select ?e18 ?e33))
+(flet ($e49 (= ?e18 ?e18))
+(flet ($e50 (distinct ?e23 ?e26))
+(flet ($e51 (distinct ?e28 ?e19))
+(flet ($e52 (distinct ?e47 ?e18))
+(flet ($e53 (= ?e27 ?e18))
+(flet ($e54 (distinct ?e19 ?e26))
+(flet ($e55 (distinct ?e47 v0))
+(flet ($e56 (distinct ?e19 ?e24))
+(flet ($e57 (= ?e8 ?e26))
+(flet ($e58 (distinct ?e18 ?e8))
+(flet ($e59 (distinct ?e26 ?e29))
+(flet ($e60 (= ?e19 ?e25))
+(flet ($e61 (distinct ?e29 ?e22))
+(flet ($e62 (distinct ?e22 v0))
+(flet ($e63 (distinct ?e29 ?e18))
+(flet ($e64 (distinct v0 ?e26))
+(flet ($e65 (= ?e24 ?e47))
+(flet ($e66 (distinct ?e29 ?e23))
+(flet ($e67 (distinct ?e27 ?e27))
+(flet ($e68 (distinct ?e27 ?e24))
+(flet ($e69 (= ?e29 ?e23))
+(flet ($e70 (distinct ?e8 ?e20))
+(flet ($e71 (= ?e25 ?e8))
+(flet ($e72 (= ?e18 ?e47))
+(flet ($e73 (distinct ?e22 ?e24))
+(flet ($e74 (distinct ?e21 ?e24))
+(flet ($e75 (distinct ?e38 v2))
+(flet ($e76 (distinct ?e30 ?e34))
+(flet ($e77 (distinct ?e34 ?e34))
+(flet ($e78 (distinct ?e35 ?e33))
+(flet ($e79 (distinct ?e33 ?e36))
+(flet ($e80 (distinct ?e38 ?e30))
+(flet ($e81 (= ?e35 ?e35))
+(flet ($e82 (distinct v2 ?e33))
+(flet ($e83 (= ?e34 ?e34))
+(flet ($e84 (distinct ?e37 ?e33))
+(flet ($e85 (distinct ?e30 ?e35))
+(flet ($e86 (distinct ?e37 v2))
+(flet ($e87 (distinct ?e31 v1))
+(flet ($e88 (distinct ?e32 ?e30))
+(flet ($e89 (distinct ?e40 v5))
+(flet ($e90 (distinct ?e44 v4))
+(flet ($e91 (distinct ?e9 ?e46))
+(flet ($e92 (= ?e40 ?e46))
+(flet ($e93 (= ?e46 v3))
+(flet ($e94 (distinct ?e43 v6))
+(flet ($e95 (distinct v6 v4))
+(flet ($e96 (= v4 ?e43))
+(flet ($e97 (= ?e44 ?e9))
+(flet ($e98 (distinct ?e42 ?e41))
+(flet ($e99 (distinct v4 ?e48))
+(flet ($e100 (distinct v4 ?e9))
+(flet ($e101 (distinct ?e44 v7))
+(flet ($e102 (distinct v3 ?e45))
+(flet ($e103 (= v7 ?e46))
+(flet ($e104 (distinct ?e40 v6))
+(flet ($e105 (= v4 ?e41))
+(flet ($e106 (distinct ?e45 ?e40))
+(flet ($e107 (distinct v7 v4))
+(flet ($e108 (= v6 v3))
+(flet ($e109 (distinct ?e39 v3))
+(flet ($e110 (or $e81 $e90))
+(flet ($e111 (xor $e92 $e10))
+(flet ($e112 (iff $e11 $e57))
+(flet ($e113 (iff $e50 $e49))
+(flet ($e114 (not $e91))
+(flet ($e115 (if_then_else $e69 $e51 $e64))
+(flet ($e116 (if_then_else $e98 $e97 $e82))
+(flet ($e117 (xor $e67 $e71))
+(flet ($e118 (if_then_else $e61 $e88 $e55))
+(flet ($e119 (implies $e59 $e99))
+(flet ($e120 (or $e13 $e117))
+(flet ($e121 (iff $e73 $e112))
+(flet ($e122 (and $e94 $e68))
+(flet ($e123 (not $e60))
+(flet ($e124 (and $e100 $e15))
+(flet ($e125 (or $e70 $e111))
+(flet ($e126 (or $e75 $e119))
+(flet ($e127 (xor $e121 $e17))
+(flet ($e128 (iff $e127 $e76))
+(flet ($e129 (if_then_else $e72 $e16 $e115))
+(flet ($e130 (not $e65))
+(flet ($e131 (xor $e85 $e93))
+(flet ($e132 (and $e103 $e89))
+(flet ($e133 (if_then_else $e128 $e14 $e79))
+(flet ($e134 (implies $e114 $e12))
+(flet ($e135 (not $e133))
+(flet ($e136 (iff $e129 $e105))
+(flet ($e137 (xor $e87 $e135))
+(flet ($e138 (and $e137 $e118))
+(flet ($e139 (implies $e131 $e74))
+(flet ($e140 (iff $e126 $e116))
+(flet ($e141 (or $e120 $e120))
+(flet ($e142 (if_then_else $e101 $e113 $e134))
+(flet ($e143 (and $e52 $e140))
+(flet ($e144 (iff $e139 $e122))
+(flet ($e145 (or $e136 $e104))
+(flet ($e146 (not $e54))
+(flet ($e147 (if_then_else $e96 $e95 $e109))
+(flet ($e148 (iff $e123 $e78))
+(flet ($e149 (and $e146 $e146))
+(flet ($e150 (implies $e108 $e107))
+(flet ($e151 (xor $e62 $e147))
+(flet ($e152 (not $e77))
+(flet ($e153 (if_then_else $e150 $e145 $e102))
+(flet ($e154 (iff $e142 $e130))
+(flet ($e155 (and $e86 $e138))
+(flet ($e156 (and $e149 $e155))
+(flet ($e157 (implies $e80 $e66))
+(flet ($e158 (implies $e156 $e143))
+(flet ($e159 (iff $e154 $e157))
+(flet ($e160 (not $e56))
+(flet ($e161 (xor $e63 $e141))
+(flet ($e162 (or $e125 $e151))
+(flet ($e163 (iff $e58 $e83))
+(flet ($e164 (or $e110 $e132))
+(flet ($e165 (or $e163 $e153))
+(flet ($e166 (and $e53 $e159))
+(flet ($e167 (and $e152 $e165))
+(flet ($e168 (not $e160))
+(flet ($e169 (iff $e164 $e166))
+(flet ($e170 (not $e106))
+(flet ($e171 (and $e124 $e169))
+(flet ($e172 (if_then_else $e167 $e144 $e167))
+(flet ($e173 (iff $e162 $e170))
+(flet ($e174 (and $e172 $e171))
+(flet ($e175 (iff $e161 $e168))
+(flet ($e176 (and $e173 $e175))
+(flet ($e177 (implies $e174 $e176))
+(flet ($e178 (iff $e148 $e158))
+(flet ($e179 (iff $e177 $e84))
+(flet ($e180 (iff $e178 $e178))
+(flet ($e181 (implies $e180 $e179))
+$e181
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/arrays/parsing_ringer.cvc b/test/regress/regress0/arrays/parsing_ringer.cvc
new file mode 100644
index 0000000..2c2018e
--- /dev/null
+++ b/test/regress/regress0/arrays/parsing_ringer.cvc
@@ -0,0 +1,94 @@
+% Test for presentiation language parsing, some edge cases with cascading
+% store terms.  Intended to put this part of the parser "through the ringer,"
+% hence the name.
+
+% COMMAND-LINE: --incremental
+% EXPECT: sat
+% EXPECT: sat
+% EXPECT: sat
+% EXPECT: sat
+% EXPECT: sat
+% EXPECT: sat
+% EXPECT: sat
+% EXPECT: sat
+% EXPECT: unsat
+% EXPECT: unsat
+% EXPECT: sat
+
+PUSH;
+
+x, y : ARRAY INT OF ARRAY INT OF ARRAY INT OF INT;
+
+% multidimensional arrays
+ASSERT x[0][0][0] = 0; %% select
+ASSERT y = x WITH [0][0][1] := 1; %% partial store
+
+CHECKSAT;
+
+% mixed stores: records of arrays of tuples, oh my
+z : [# x:ARRAY INT OF [# x:INT #], y:[ARRAY INT OF INT, ARRAY INT OF INT] #];
+
+arr1 : ARRAY INT OF [# x:INT #];
+arr2 : [ ARRAY INT OF INT, ARRAY INT OF INT ];
+
+ASSERT arr1[0].x = 0;
+ASSERT arr2.0[0] = 1;
+ASSERT arr2.1[0] = 5;
+
+ASSERT z.y.1[1] /= 1;
+ASSERT (# x:=arr1, y:=arr2 #) = z;
+
+CHECKSAT;
+
+ASSERT z.x[0].x /= z.y.0[5];
+
+CHECKSAT;
+
+ASSERT z.y.0[1] = z.x[5].x;
+
+CHECKSAT;
+
+ASSERT z.y.0[5] = z.x[-2].x;
+
+CHECKSAT;
+
+POP;
+
+a : ARRAY INT OF ARRAY INT OF INT;
+b : ARRAY INT OF INT;
+
+% ambiguity in presentation language, comma needs to bind to innermost WITH
+% causes type error if the [2]:=2 at the end is attached to the wrong WITH
+ASSERT a = a WITH [0]:=b WITH [1]:=1,[2]:=2;
+
+CHECKSAT;
+
+RESET;
+
+% more mixed stores, this time with constant arrays
+z : [# x:ARRAY INT OF [# x:INT #], y:[ARRAY INT OF INT, ARRAY INT OF INT] #];
+
+ASSERT z.y.1[1] /= 1;
+ASSERT (# x:=ARRAY(INT OF [# x:INT #]):(# x:=0 #), y:=(ARRAY(INT OF INT):1, ARRAY(INT OF INT):5) #) = z;
+
+CHECKSAT;
+
+ASSERT z.x[0].x /= z.y.0[5];
+
+CHECKSAT;
+
+ASSERT z.y.0[1] = z.x[5].x;
+
+CHECKSAT;
+
+ASSERT z.y.0[5] = z.x[-2].x;
+
+CHECKSAT;
+
+RESET;
+
+a : ARRAY INT OF INT;
+
+ASSERT a = a WITH [0]:=0, [1]:=1;
+
+CHECKSAT;
diff --git a/test/regress/regress0/arrays/swap_t1_np_nf_ai_00005_007.cvc.smt b/test/regress/regress0/arrays/swap_t1_np_nf_ai_00005_007.cvc.smt
new file mode 100644
index 0000000..af609c8
--- /dev/null
+++ b/test/regress/regress0/arrays/swap_t1_np_nf_ai_00005_007.cvc.smt
@@ -0,0 +1,23 @@
+(benchmark swap
+  :source {
+Benchmarks used in the followin paper:
+Big proof engines as little proof engines: new results on rewrite-based satisfiability procedure
+Alessandro Armando, Maria Paola Bonacina, Silvio Ranise, Stephan Schulz. 
+PDPAR'05
+http://www.ai.dist.unige.it/pdpar05/
+
+
+}
+  :status unsat
+:difficulty { 0 }
+:category { crafted }
+  :logic QF_AX
+  :extrafuns ((a1 Array))
+  :extrafuns ((i0 Index))
+  :extrafuns ((i1 Index))
+  :extrafuns ((i2 Index))
+  :extrafuns ((i3 Index))
+  :extrafuns ((i4 Index))
+  :formula
+(let (?cvc_4 (select a1 i4)) (let (?cvc_5 (select a1 i2)) (let (?cvc_0 (store (store a1 i4 ?cvc_5) i2 ?cvc_4)) (let (?cvc_1 (store (store ?cvc_0 i0 (select ?cvc_0 i3)) i3 (select ?cvc_0 i0))) (let (?cvc_2 (store (store ?cvc_1 i2 (select ?cvc_1 i1)) i1 (select ?cvc_1 i2))) (let (?cvc_3 (store (store ?cvc_2 i4 (select ?cvc_2 i3)) i3 (select ?cvc_2 i4))) (let (?cvc_6 (store (store a1 i2 ?cvc_4) i4 ?cvc_5)) (let (?cvc_7 (store (store ?cvc_6 i0 (select ?cvc_6 i3)) i3 (select ?cvc_6 i0))) (let [...]
+)
diff --git a/test/regress/regress0/arrays/x2.smt b/test/regress/regress0/arrays/x2.smt
new file mode 100644
index 0000000..c043e88
--- /dev/null
+++ b/test/regress/regress0/arrays/x2.smt
@@ -0,0 +1,17 @@
+(benchmark read5.smt
+:logic QF_AX
+:status unsat
+:extrafuns ((a Index))
+:extrafuns ((S Array))
+:extrafuns ((SS Array))
+:status unknown
+:formula
+(flet ($n1 (= S SS))
+(let (?n2 (select S a))
+(let (?n3 (store SS a ?n2))
+(flet ($n4 (= S ?n3))
+(flet ($n5 true)
+(flet ($n6 (if_then_else $n1 $n4 $n5))
+(flet ($n7 (not $n6))
+$n7
+))))))))
diff --git a/test/regress/regress0/arrays/x3.smt b/test/regress/regress0/arrays/x3.smt
new file mode 100644
index 0000000..ff070f1
--- /dev/null
+++ b/test/regress/regress0/arrays/x3.smt
@@ -0,0 +1,46 @@
+(benchmark fuzzsmt
+:logic QF_AX
+:status sat
+:extrafuns ((v4 Index))
+:extrafuns ((v2 Index))
+:extrafuns ((v3 Index))
+:extrafuns ((v1 Array))
+:extrafuns ((v6 Element))
+:extrafuns ((v0 Array))
+:extrafuns ((v5 Element))
+:status unknown
+:formula
+(let (?n1 (store v1 v3 v6))
+(flet ($n2 (distinct ?n1 v0))
+(flet ($n3 (= v4 v2))
+(flet ($n4 true)
+(let (?n5 (store v1 v4 v6))
+(let (?n6 (select ?n5 v2))
+(let (?n7 (ite $n4 ?n6 v6))
+(let (?n8 (select v1 v3))
+(let (?n9 (ite $n3 ?n7 ?n8))
+(flet ($n10 (distinct ?n8 ?n8))
+(let (?n11 (ite $n10 v6 ?n6))
+(let (?n12 (ite $n2 ?n9 ?n11))
+(flet ($n13 (= v6 ?n12))
+(flet ($n14 (distinct ?n8 v5))
+(let (?n15 (ite $n2 v1 v0))
+(let (?n16 (ite $n14 v1 ?n15))
+(flet ($n17 (distinct ?n5 ?n16))
+(flet ($n18 (and $n13 $n17))
+(flet ($n19 (distinct v0 ?n5))
+(let (?n20 (ite $n19 v2 v4))
+(flet ($n21 (= v3 v2))
+(flet ($n22 (= v0 v0))
+(flet ($n23 (= v6 ?n8))
+(flet ($n24 false)
+(flet ($n25 (= ?n6 ?n8))
+(let (?n26 (ite $n25 v3 v2))
+(let (?n27 (ite $n24 v4 ?n26))
+(let (?n28 (ite $n23 v3 ?n27))
+(let (?n29 (ite $n22 ?n28 v4))
+(let (?n30 (ite $n21 v3 ?n29))
+(flet ($n31 (distinct ?n20 ?n30))
+(flet ($n32 (or $n18 $n31))
+$n32
+)))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/aufbv/Makefile.am b/test/regress/regress0/aufbv/Makefile.am
new file mode 100644
index 0000000..e23368e
--- /dev/null
+++ b/test/regress/regress0/aufbv/Makefile.am
@@ -0,0 +1,79 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	bug00.smt \
+	bug338.smt2 \
+	bug347.smt \
+	bug451.smt \
+	bug509.smt \
+	bug580.smt2 \
+	bug580.delta.smt2 \
+	try5_small_difret_functions_wp_su.set_char_quoting.il.wp.delta01.smt \
+	try3_sameret_functions_fse-bfs_tac.calc_next.il.fse-bfs.delta01.smt \
+	diseqprop.01.smt \
+	wchains010ue.delta01.smt \
+	wchains010ue.delta02.smt \
+	dubreva005ue.delta01.smt \
+	fuzz00.smt \
+	fuzz01.smt \
+	fuzz01.delta01.smt \
+	fuzz02.delta01.smt \
+	fuzz02.smt \
+	fuzz03.delta01.smt \
+	fuzz03.smt \
+	fuzz04.delta01.smt \
+	fuzz04.smt \
+	fuzz05.delta01.smt \
+	fuzz05.smt \
+	fuzz06.delta01.smt \
+	fuzz06.smt \
+	fuzz07.smt \
+	fuzz08.smt \
+	fuzz09.smt \
+	fuzz11.smt \
+	fuzz12.smt \
+	fuzz13.smt \
+	fuzz14.smt \
+	fuzz15.smt \
+	fifo32bc06k08.delta01.smt \
+	rewrite_bug.smt \
+	array_rewrite_bug.smt
+
+
+EXTRA_DIST = $(TESTS)
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/aufbv/Makefile.in b/test/regress/regress0/aufbv/Makefile.in
new file mode 100644
index 0000000..aa30257
--- /dev/null
+++ b/test/regress/regress0/aufbv/Makefile.in
@@ -0,0 +1,1285 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/aufbv
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	bug00.smt \
+	bug338.smt2 \
+	bug347.smt \
+	bug451.smt \
+	bug509.smt \
+	bug580.smt2 \
+	bug580.delta.smt2 \
+	try5_small_difret_functions_wp_su.set_char_quoting.il.wp.delta01.smt \
+	try3_sameret_functions_fse-bfs_tac.calc_next.il.fse-bfs.delta01.smt \
+	diseqprop.01.smt \
+	wchains010ue.delta01.smt \
+	wchains010ue.delta02.smt \
+	dubreva005ue.delta01.smt \
+	fuzz00.smt \
+	fuzz01.smt \
+	fuzz01.delta01.smt \
+	fuzz02.delta01.smt \
+	fuzz02.smt \
+	fuzz03.delta01.smt \
+	fuzz03.smt \
+	fuzz04.delta01.smt \
+	fuzz04.smt \
+	fuzz05.delta01.smt \
+	fuzz05.smt \
+	fuzz06.delta01.smt \
+	fuzz06.smt \
+	fuzz07.smt \
+	fuzz08.smt \
+	fuzz09.smt \
+	fuzz11.smt \
+	fuzz12.smt \
+	fuzz13.smt \
+	fuzz14.smt \
+	fuzz15.smt \
+	fifo32bc06k08.delta01.smt \
+	rewrite_bug.smt \
+	array_rewrite_bug.smt
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/aufbv/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/aufbv/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+bug00.smt.log: bug00.smt
+	@p='bug00.smt'; \
+	b='bug00.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug338.smt2.log: bug338.smt2
+	@p='bug338.smt2'; \
+	b='bug338.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug347.smt.log: bug347.smt
+	@p='bug347.smt'; \
+	b='bug347.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug451.smt.log: bug451.smt
+	@p='bug451.smt'; \
+	b='bug451.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug509.smt.log: bug509.smt
+	@p='bug509.smt'; \
+	b='bug509.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug580.smt2.log: bug580.smt2
+	@p='bug580.smt2'; \
+	b='bug580.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug580.delta.smt2.log: bug580.delta.smt2
+	@p='bug580.delta.smt2'; \
+	b='bug580.delta.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+try5_small_difret_functions_wp_su.set_char_quoting.il.wp.delta01.smt.log: try5_small_difret_functions_wp_su.set_char_quoting.il.wp.delta01.smt
+	@p='try5_small_difret_functions_wp_su.set_char_quoting.il.wp.delta01.smt'; \
+	b='try5_small_difret_functions_wp_su.set_char_quoting.il.wp.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+try3_sameret_functions_fse-bfs_tac.calc_next.il.fse-bfs.delta01.smt.log: try3_sameret_functions_fse-bfs_tac.calc_next.il.fse-bfs.delta01.smt
+	@p='try3_sameret_functions_fse-bfs_tac.calc_next.il.fse-bfs.delta01.smt'; \
+	b='try3_sameret_functions_fse-bfs_tac.calc_next.il.fse-bfs.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+diseqprop.01.smt.log: diseqprop.01.smt
+	@p='diseqprop.01.smt'; \
+	b='diseqprop.01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wchains010ue.delta01.smt.log: wchains010ue.delta01.smt
+	@p='wchains010ue.delta01.smt'; \
+	b='wchains010ue.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wchains010ue.delta02.smt.log: wchains010ue.delta02.smt
+	@p='wchains010ue.delta02.smt'; \
+	b='wchains010ue.delta02.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dubreva005ue.delta01.smt.log: dubreva005ue.delta01.smt
+	@p='dubreva005ue.delta01.smt'; \
+	b='dubreva005ue.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz00.smt.log: fuzz00.smt
+	@p='fuzz00.smt'; \
+	b='fuzz00.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz01.smt.log: fuzz01.smt
+	@p='fuzz01.smt'; \
+	b='fuzz01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz01.delta01.smt.log: fuzz01.delta01.smt
+	@p='fuzz01.delta01.smt'; \
+	b='fuzz01.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz02.delta01.smt.log: fuzz02.delta01.smt
+	@p='fuzz02.delta01.smt'; \
+	b='fuzz02.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz02.smt.log: fuzz02.smt
+	@p='fuzz02.smt'; \
+	b='fuzz02.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz03.delta01.smt.log: fuzz03.delta01.smt
+	@p='fuzz03.delta01.smt'; \
+	b='fuzz03.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz03.smt.log: fuzz03.smt
+	@p='fuzz03.smt'; \
+	b='fuzz03.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz04.delta01.smt.log: fuzz04.delta01.smt
+	@p='fuzz04.delta01.smt'; \
+	b='fuzz04.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz04.smt.log: fuzz04.smt
+	@p='fuzz04.smt'; \
+	b='fuzz04.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz05.delta01.smt.log: fuzz05.delta01.smt
+	@p='fuzz05.delta01.smt'; \
+	b='fuzz05.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz05.smt.log: fuzz05.smt
+	@p='fuzz05.smt'; \
+	b='fuzz05.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz06.delta01.smt.log: fuzz06.delta01.smt
+	@p='fuzz06.delta01.smt'; \
+	b='fuzz06.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz06.smt.log: fuzz06.smt
+	@p='fuzz06.smt'; \
+	b='fuzz06.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz07.smt.log: fuzz07.smt
+	@p='fuzz07.smt'; \
+	b='fuzz07.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz08.smt.log: fuzz08.smt
+	@p='fuzz08.smt'; \
+	b='fuzz08.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz09.smt.log: fuzz09.smt
+	@p='fuzz09.smt'; \
+	b='fuzz09.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz11.smt.log: fuzz11.smt
+	@p='fuzz11.smt'; \
+	b='fuzz11.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz12.smt.log: fuzz12.smt
+	@p='fuzz12.smt'; \
+	b='fuzz12.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz13.smt.log: fuzz13.smt
+	@p='fuzz13.smt'; \
+	b='fuzz13.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz14.smt.log: fuzz14.smt
+	@p='fuzz14.smt'; \
+	b='fuzz14.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz15.smt.log: fuzz15.smt
+	@p='fuzz15.smt'; \
+	b='fuzz15.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fifo32bc06k08.delta01.smt.log: fifo32bc06k08.delta01.smt
+	@p='fifo32bc06k08.delta01.smt'; \
+	b='fifo32bc06k08.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rewrite_bug.smt.log: rewrite_bug.smt
+	@p='rewrite_bug.smt'; \
+	b='rewrite_bug.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+array_rewrite_bug.smt.log: array_rewrite_bug.smt
+	@p='array_rewrite_bug.smt'; \
+	b='array_rewrite_bug.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/aufbv/array_rewrite_bug.smt b/test/regress/regress0/aufbv/array_rewrite_bug.smt
new file mode 100644
index 0000000..972dec5
--- /dev/null
+++ b/test/regress/regress0/aufbv/array_rewrite_bug.smt
@@ -0,0 +1,19 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:extrafuns ((a1 Array[14:11]))
+:status sat
+:formula
+(let (?n1 bv1[16])
+(let (?n2 (extract[13:0] ?n1))
+(let (?n3 bv0[11])
+(let (?n4 (store a1 ?n2 ?n3))
+(let (?n5 bv0[14])
+(let (?n6 (select a1 ?n5))
+(let (?n7 (store ?n4 ?n5 ?n6))
+(let (?n8 (zero_extend[3] ?n6))
+(let (?n9 (select ?n7 ?n8))
+(let (?n10 (sign_extend[2] ?n9))
+(let (?n11 (zero_extend[3] ?n10))
+(flet ($n12 (bvugt ?n1 ?n11))
+$n12
+)))))))))))))
diff --git a/test/regress/regress0/aufbv/bug00.smt b/test/regress/regress0/aufbv/bug00.smt
new file mode 100644
index 0000000..d662207
--- /dev/null
+++ b/test/regress/regress0/aufbv/bug00.smt
@@ -0,0 +1,35 @@
+(benchmark no_init_multi_member7.smt
+:logic QF_AUFBV
+:status unsat
+:extrafuns ((member_6_curr_2 BitVec[32]))
+:extrafuns ((arr_next_15 Array[32:32]))
+:extrafuns ((member_3_curr_4 BitVec[32]))
+:extrafuns ((main_0_x_3 BitVec[32]))
+:extrafuns ((member_3_curr_5 BitVec[32]))
+:extrafuns ((arr_val_8 Array[32:32]))
+:status unknown
+:formula
+(flet ($n1 true)
+(let (?n2 bv0[32])
+(let (?n3 bv1[32])
+(let (?n4 (select arr_val_8 member_6_curr_2))
+(flet ($n5 (= ?n3 ?n4))
+(let (?n6 (ite $n5 ?n3 ?n2))
+(flet ($n7 (= ?n2 ?n6))
+(let (?n8 (select arr_next_15 member_3_curr_5))
+(flet ($n9 (= ?n2 ?n8))
+(let (?n10 (select arr_next_15 ?n3))
+(flet ($n11 (= ?n10 member_3_curr_4))
+(let (?n12 (select arr_next_15 ?n2))
+(flet ($n13 (= ?n3 ?n12))
+(flet ($n14 (= ?n2 main_0_x_3))
+(flet ($n15 (= ?n3 member_3_curr_4))
+(flet ($n16 (and $n14 $n15))
+(let (?n17 (ite $n16 ?n2 member_3_curr_4))
+(flet ($n18 (= member_3_curr_5 ?n17))
+(flet ($n19 (= member_6_curr_2 ?n12))
+(let (?n20 (select arr_next_15 member_6_curr_2))
+(flet ($n21 (= ?n2 ?n20))
+(flet ($n22 (and $n7 $n9 $n11 $n13 $n18 $n19 $n1 $n21))
+$n22
+)))))))))))))))))))))))
diff --git a/test/regress/regress0/aufbv/bug338.smt2 b/test/regress/regress0/aufbv/bug338.smt2
new file mode 100644
index 0000000..b245228
--- /dev/null
+++ b/test/regress/regress0/aufbv/bug338.smt2
@@ -0,0 +1,14 @@
+(set-logic QF_AUFBV)
+(declare-sort U 0)
+(declare-sort Index 0)
+(declare-sort Element 0)
+(declare-fun memory_0 () (Array (_ BitVec 32) (_ BitVec 8)))
+(set-info :status sat)
+
+(set-info :notes "RewriteRule <ExtractBitwise>; expect unsat")
+
+(assert (not (= ((_ extract 7 0) (bvor (_ bv65536 32) (concat (_ bv0 25) ((_ extract 7 1) (select memory_0 (_ bv1 32)))) (concat (_ bv0 24) (select memory_0 (_ bv1 32))))) (bvor ((_ extract 7 0) (_ bv65536 32)) ((_ extract 7 0) (concat (_ bv0 25) ((_ extract 7 1) (select memory_0 (_ bv1 32)))))))))
+(check-sat)
+
+
+(exit)
diff --git a/test/regress/regress0/aufbv/bug347.smt b/test/regress/regress0/aufbv/bug347.smt
new file mode 100644
index 0000000..f467cd4
--- /dev/null
+++ b/test/regress/regress0/aufbv/bug347.smt
@@ -0,0 +1,11 @@
+(benchmark B_
+  :status sat
+  :category { unknown }
+  :logic QF_AUFBV
+  :extrafuns ((delete_0_val_1 BitVec[32]))
+  :extrafuns ((delete_0_curr_6 BitVec[32]))
+  :extrafuns ((arr_next_13 Array[32:32]))
+  :extrafuns ((arr_next_14 Array[32:32]))
+  :extrafuns ((delete_0_head_1 BitVec[32]))
+  :formula (and (= bv0[32] (ite (= bv0[32] delete_0_head_1) (select arr_next_14 delete_0_curr_6) delete_0_curr_6)) (= arr_next_14 arr_next_13) (= bv1[32] (select arr_next_13 bv1[32])) (= delete_0_curr_6 (ite (= bv0[32] delete_0_val_1) bv0[32] bv1[32])))
+)
diff --git a/test/regress/regress0/aufbv/bug451.smt b/test/regress/regress0/aufbv/bug451.smt
new file mode 100644
index 0000000..a3e0454
--- /dev/null
+++ b/test/regress/regress0/aufbv/bug451.smt
@@ -0,0 +1,67 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status unsat
+:extrafuns ((v0 BitVec[15]))
+:extrafuns ((a1 Array[9:14]))
+:formula
+(let (?e2 bv37005[16])
+(let (?e3 bv1274[11])
+(let (?e4 (ite (bvugt v0 (zero_extend[4] ?e3)) bv1[1] bv0[1]))
+(let (?e5 (ite (= ?e2 ?e2) bv1[1] bv0[1]))
+(let (?e6 (store a1 (extract[8:0] v0) (zero_extend[13] ?e4)))
+(let (?e7 (store ?e6 (extract[14:6] v0) (extract[14:1] ?e2)))
+(let (?e8 (store ?e6 (extract[8:0] ?e3) (extract[15:2] ?e2)))
+(let (?e9 (select a1 (extract[8:0] v0)))
+(let (?e10 (store ?e7 (extract[9:1] ?e9) (zero_extend[13] ?e5)))
+(let (?e11 (store ?e7 (extract[9:1] ?e9) (zero_extend[3] ?e3)))
+(let (?e12 (bvxor ?e2 ?e2))
+(let (?e13 (bvmul (zero_extend[15] ?e5) ?e2))
+(let (?e14 (ite (bvuge ?e13 (sign_extend[1] v0)) bv1[1] bv0[1]))
+(let (?e15 (ite (= (sign_extend[14] ?e4) v0) bv1[1] bv0[1]))
+(let (?e16 (bvashr ?e3 (sign_extend[10] ?e14)))
+(let (?e17 (bvnand ?e9 (sign_extend[3] ?e16)))
+(flet ($e18 (bvsgt ?e2 (sign_extend[15] ?e5)))
+(flet ($e19 (distinct (sign_extend[2] ?e17) ?e12))
+(flet ($e20 (bvult ?e17 ?e17))
+(flet ($e21 (bvsge ?e16 (zero_extend[10] ?e14)))
+(flet ($e22 (bvsge v0 (zero_extend[4] ?e16)))
+(flet ($e23 (bvuge (zero_extend[14] ?e4) v0))
+(flet ($e24 (bvsle (sign_extend[2] ?e17) ?e12))
+(flet ($e25 (= ?e13 (zero_extend[2] ?e17)))
+(flet ($e26 (bvsgt v0 (sign_extend[14] ?e5)))
+(flet ($e27 (distinct ?e13 ?e13))
+(flet ($e28 (bvule ?e13 (zero_extend[5] ?e16)))
+(flet ($e29 (bvule ?e17 ?e17))
+(flet ($e30 (bvsle ?e13 (sign_extend[15] ?e4)))
+(flet ($e31 (bvsge ?e2 (sign_extend[5] ?e3)))
+(flet ($e32 (bvule ?e13 (sign_extend[5] ?e3)))
+(flet ($e33 (bvule ?e13 (zero_extend[2] ?e17)))
+(flet ($e34 (= (sign_extend[14] ?e14) v0))
+(flet ($e35 (bvsgt ?e3 (zero_extend[10] ?e15)))
+(flet ($e36 (bvuge ?e9 (sign_extend[13] ?e15)))
+(flet ($e37 (not $e20))
+(flet ($e38 (and $e30 $e22))
+(flet ($e39 (not $e33))
+(flet ($e40 (xor $e28 $e36))
+(flet ($e41 (implies $e37 $e37))
+(flet ($e42 (xor $e40 $e18))
+(flet ($e43 (or $e25 $e38))
+(flet ($e44 (iff $e43 $e23))
+(flet ($e45 (if_then_else $e27 $e32 $e34))
+(flet ($e46 (or $e24 $e19))
+(flet ($e47 (iff $e46 $e21))
+(flet ($e48 (or $e44 $e41))
+(flet ($e49 (iff $e39 $e26))
+(flet ($e50 (implies $e49 $e48))
+(flet ($e51 (or $e42 $e42))
+(flet ($e52 (xor $e35 $e31))
+(flet ($e53 (iff $e47 $e52))
+(flet ($e54 (implies $e53 $e29))
+(flet ($e55 (if_then_else $e51 $e50 $e51))
+(flet ($e56 (and $e55 $e54))
+(flet ($e57 (xor $e56 $e56))
+(flet ($e58 (not $e57))
+(flet ($e59 (and $e58 $e45))
+$e59
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/aufbv/bug509.smt b/test/regress/regress0/aufbv/bug509.smt
new file mode 100644
index 0000000..b23f9c6
--- /dev/null
+++ b/test/regress/regress0/aufbv/bug509.smt
@@ -0,0 +1,117 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status sat
+:extrafuns ((v0 BitVec[1]))
+:extrafuns ((v1 BitVec[13]))
+:extrafuns ((v2 BitVec[5]))
+:extrafuns ((a3 Array[1:16]))
+:formula
+(let (?e4 bv1[1])
+(let (?e5 (sign_extend[1] v1))
+(let (?e6 (bvneg v0))
+(let (?e7 (rotate_right[0] ?e4))
+(let (?e8 (bvnand v1 v1))
+(let (?e9 (zero_extend[11] v2))
+(let (?e10 (store a3 (extract[14:14] ?e9) (sign_extend[3] ?e8)))
+(let (?e11 (select a3 ?e6))
+(let (?e12 (select a3 (extract[14:14] ?e11)))
+(let (?e13 (select a3 (extract[14:14] ?e11)))
+(let (?e14 (select a3 ?e4))
+(let (?e15 (select a3 ?e4))
+(let (?e16 (ite (bvsgt ?e14 (zero_extend[15] ?e6)) bv1[1] bv0[1]))
+(let (?e17 (bvnand (sign_extend[12] ?e4) ?e8))
+(let (?e18 (ite (bvsge ?e12 ?e14) bv1[1] bv0[1]))
+(let (?e19 (bvxor ?e15 (zero_extend[15] ?e7)))
+(let (?e20 (ite (bvslt (sign_extend[12] ?e6) v1) bv1[1] bv0[1]))
+(let (?e21 (bvand ?e11 (sign_extend[15] ?e16)))
+(let (?e22 (ite (bvult (sign_extend[8] v2) v1) bv1[1] bv0[1]))
+(let (?e23 (bvsrem (sign_extend[2] ?e5) ?e11))
+(let (?e24 (bvurem ?e9 ?e12))
+(let (?e25 (bvashr (zero_extend[3] ?e8) ?e19))
+(let (?e26 (bvlshr ?e13 (sign_extend[15] ?e20)))
+(let (?e27 (ite (= ?e13 ?e12) bv1[1] bv0[1]))
+(let (?e28 (bvxnor v0 v0))
+(flet ($e29 (bvugt (sign_extend[15] ?e4) ?e26))
+(flet ($e30 (bvugt ?e11 (sign_extend[15] v0)))
+(flet ($e31 (distinct (zero_extend[11] v2) ?e12))
+(flet ($e32 (bvsge ?e14 (zero_extend[15] ?e18)))
+(flet ($e33 (bvsle (sign_extend[15] ?e27) ?e19))
+(flet ($e34 (distinct (sign_extend[12] ?e16) v1))
+(flet ($e35 (bvsle ?e24 ?e15))
+(flet ($e36 (distinct ?e13 (zero_extend[15] ?e16)))
+(flet ($e37 (bvugt ?e22 ?e18))
+(flet ($e38 (bvslt ?e19 ?e24))
+(flet ($e39 (bvule ?e26 ?e9))
+(flet ($e40 (bvslt ?e7 ?e16))
+(flet ($e41 (bvuge ?e21 ?e9))
+(flet ($e42 (bvule ?e24 ?e9))
+(flet ($e43 (bvuge ?e7 ?e16))
+(flet ($e44 (distinct (zero_extend[12] ?e28) v1))
+(flet ($e45 (bvsge ?e4 v0))
+(flet ($e46 (bvule ?e17 (sign_extend[12] ?e22)))
+(flet ($e47 (bvugt ?e15 (zero_extend[15] ?e27)))
+(flet ($e48 (bvsgt ?e12 ?e24))
+(flet ($e49 (bvsgt ?e13 ?e13))
+(flet ($e50 (bvslt ?e20 ?e6))
+(flet ($e51 (bvsgt ?e19 (zero_extend[15] ?e28)))
+(flet ($e52 (bvsgt ?e21 (sign_extend[15] ?e7)))
+(flet ($e53 (bvslt ?e9 ?e15))
+(flet ($e54 (bvule ?e21 ?e12))
+(flet ($e55 (= ?e24 (zero_extend[3] v1)))
+(flet ($e56 (bvsle v0 ?e16))
+(flet ($e57 (= (sign_extend[15] ?e4) ?e12))
+(flet ($e58 (distinct (sign_extend[2] ?e5) ?e9))
+(flet ($e59 (bvult (sign_extend[15] ?e22) ?e25))
+(flet ($e60 (bvsge ?e20 ?e20))
+(flet ($e61 (distinct ?e14 ?e24))
+(flet ($e62 (bvuge (sign_extend[15] v0) ?e19))
+(flet ($e63 (bvuge ?e25 (sign_extend[3] ?e8)))
+(flet ($e64 (bvult ?e4 ?e7))
+(flet ($e65 (bvsle (zero_extend[12] ?e16) ?e17))
+(flet ($e66 (bvule ?e26 ?e9))
+(flet ($e67 (bvugt ?e14 ?e23))
+(flet ($e68 (or $e37 $e45))
+(flet ($e69 (or $e31 $e30))
+(flet ($e70 (iff $e46 $e65))
+(flet ($e71 (or $e42 $e44))
+(flet ($e72 (iff $e43 $e69))
+(flet ($e73 (iff $e32 $e35))
+(flet ($e74 (or $e49 $e49))
+(flet ($e75 (or $e33 $e51))
+(flet ($e76 (xor $e53 $e61))
+(flet ($e77 (implies $e38 $e34))
+(flet ($e78 (and $e57 $e41))
+(flet ($e79 (iff $e50 $e68))
+(flet ($e80 (implies $e73 $e77))
+(flet ($e81 (if_then_else $e60 $e62 $e55))
+(flet ($e82 (and $e56 $e54))
+(flet ($e83 (if_then_else $e67 $e80 $e81))
+(flet ($e84 (iff $e72 $e36))
+(flet ($e85 (if_then_else $e83 $e39 $e59))
+(flet ($e86 (iff $e58 $e29))
+(flet ($e87 (and $e47 $e64))
+(flet ($e88 (not $e40))
+(flet ($e89 (not $e82))
+(flet ($e90 (xor $e76 $e78))
+(flet ($e91 (not $e79))
+(flet ($e92 (if_then_else $e74 $e85 $e89))
+(flet ($e93 (xor $e75 $e92))
+(flet ($e94 (not $e86))
+(flet ($e95 (if_then_else $e84 $e88 $e70))
+(flet ($e96 (and $e91 $e94))
+(flet ($e97 (and $e96 $e95))
+(flet ($e98 (not $e97))
+(flet ($e99 (if_then_else $e90 $e98 $e52))
+(flet ($e100 (implies $e71 $e48))
+(flet ($e101 (or $e93 $e87))
+(flet ($e102 (xor $e100 $e66))
+(flet ($e103 (if_then_else $e102 $e102 $e63))
+(flet ($e104 (if_then_else $e101 $e99 $e101))
+(flet ($e105 (xor $e103 $e103))
+(flet ($e106 (or $e104 $e105))
+(flet ($e107 (and $e106 (not (= ?e12 bv0[16]))))
+(flet ($e108 (and $e107 (not (= ?e11 bv0[16]))))
+(flet ($e109 (and $e108 (not (= ?e11 (bvnot bv0[16])))))
+$e109
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/aufbv/bug580.delta.smt2 b/test/regress/regress0/aufbv/bug580.delta.smt2
new file mode 100644
index 0000000..bc9a66f
--- /dev/null
+++ b/test/regress/regress0/aufbv/bug580.delta.smt2
@@ -0,0 +1,10 @@
+(set-info :source |fuzzsmt|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "random")
+(set-info :status sat)
+(set-logic QF_AUFBV)
+(declare-fun _substvar_43_ () (_ BitVec 3))
+(declare-fun a2 () (Array (_ BitVec 8) (_ BitVec 1)))
+(assert (let ((e5 (_ bv53513 16))) (let ((e7 (ite (bvult e5 ((_ zero_extend 13) _substvar_43_)) (_ bv1 1) (_ bv0 1)))) (let ((e8 a2)) (let ((e9 (store e8 ((_ zero_extend 5) _substvar_43_) (_ bv0 1)))) (let ((e11 (select a2 (_ bv0 8)))) (let ((e12 (select e9 ((_ sign_extend 5) _substvar_43_)))) (let ((e14 (select e8 ((_ sign_extend 7) e7)))) (let ((e28 (bvult e11 e12))) (let ((e30 (bvslt e12 e7))) (let ((e32 (bvult (_ bv0 1) e14))) (let ((e38 (bvslt (_ bv0 1) e12))) (let ((e60 (bvslt e14  [...]
+(check-sat)
+
diff --git a/test/regress/regress0/aufbv/bug580.smt2 b/test/regress/regress0/aufbv/bug580.smt2
new file mode 100644
index 0000000..2f20743
--- /dev/null
+++ b/test/regress/regress0/aufbv/bug580.smt2
@@ -0,0 +1,116 @@
+(set-info :source |fuzzsmt|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "random")
+(set-info :status sat)
+(set-logic QF_AUFBV)
+(declare-fun v0 () (_ BitVec 3))
+(declare-fun a1 () (Array  (_ BitVec 3)  (_ BitVec 2)))
+(declare-fun a2 () (Array  (_ BitVec 8)  (_ BitVec 1)))
+(declare-fun a3 () (Array  (_ BitVec 5)  (_ BitVec 15)))
+(assert (let ((e4(_ bv230 8)))
+(let ((e5(_ bv53513 16)))
+(let ((e6 (bvurem ((_ zero_extend 8) e4) e5)))
+(let ((e7 (ite (bvult e5 ((_ zero_extend 13) v0)) (_ bv1 1) (_ bv0 1))))
+(let ((e8 (store a2 ((_ extract 10 3) e6) ((_ extract 0 0) v0))))
+(let ((e9 (store e8 ((_ zero_extend 5) v0) ((_ extract 13 13) e5))))
+(let ((e10 (store a1 ((_ extract 12 10) e6) ((_ extract 9 8) e6))))
+(let ((e11 (select a2 ((_ zero_extend 7) e7))))
+(let ((e12 (select e9 ((_ sign_extend 5) v0))))
+(let ((e13 (store a3 ((_ zero_extend 2) v0) ((_ extract 14 0) e5))))
+(let ((e14 (select e8 ((_ sign_extend 7) e7))))
+(let ((e15 (store e13 ((_ zero_extend 4) e14) ((_ zero_extend 12) v0))))
+(let ((e16 (ite (= e6 e5) (_ bv1 1) (_ bv0 1))))
+(let ((e17 ((_ sign_extend 15) e16)))
+(let ((e18 (ite (bvsle ((_ zero_extend 7) e16) e4) (_ bv1 1) (_ bv0 1))))
+(let ((e19 ((_ rotate_right 0) v0)))
+(let ((e20 (bvshl e12 e7)))
+(let ((e21 (bvnand e14 e14)))
+(let ((e22 (ite (bvugt e7 e18) (_ bv1 1) (_ bv0 1))))
+(let ((e23 ((_ extract 0 0) e11)))
+(let ((e24 (distinct ((_ zero_extend 2) e16) e19)))
+(let ((e25 (bvslt ((_ zero_extend 13) v0) e5)))
+(let ((e26 (bvule e19 ((_ zero_extend 2) e20))))
+(let ((e27 (bvult e17 ((_ zero_extend 15) e11))))
+(let ((e28 (bvult e11 e12)))
+(let ((e29 (= e19 ((_ zero_extend 2) e21))))
+(let ((e30 (bvslt e12 e7)))
+(let ((e31 (= e21 e7)))
+(let ((e32 (bvult e16 e14)))
+(let ((e33 (= ((_ sign_extend 7) e23) e4)))
+(let ((e34 (bvult ((_ sign_extend 15) e7) e6)))
+(let ((e35 (bvsge e14 e23)))
+(let ((e36 (bvsgt e17 ((_ zero_extend 15) e23))))
+(let ((e37 (bvult ((_ sign_extend 15) e12) e6)))
+(let ((e38 (bvslt e23 e12)))
+(let ((e39 (bvule e17 ((_ sign_extend 13) e19))))
+(let ((e40 (distinct ((_ sign_extend 5) e19) e4)))
+(let ((e41 (distinct ((_ sign_extend 15) e21) e6)))
+(let ((e42 (bvsle ((_ zero_extend 15) e16) e6)))
+(let ((e43 (bvsle e12 e23)))
+(let ((e44 (bvult e22 e20)))
+(let ((e45 (bvule e14 e20)))
+(let ((e46 (bvsge ((_ sign_extend 15) e23) e6)))
+(let ((e47 (bvugt e6 ((_ zero_extend 15) e20))))
+(let ((e48 (= e17 e17)))
+(let ((e49 (bvule ((_ zero_extend 15) e20) e6)))
+(let ((e50 (bvsle ((_ sign_extend 15) e11) e17)))
+(let ((e51 (distinct ((_ zero_extend 15) e20) e6)))
+(let ((e52 (bvsge e23 e7)))
+(let ((e53 (bvuge e17 e5)))
+(let ((e54 (distinct e12 e23)))
+(let ((e55 (bvugt ((_ sign_extend 2) e16) v0)))
+(let ((e56 (bvuge e5 e5)))
+(let ((e57 (distinct e17 ((_ zero_extend 15) e14))))
+(let ((e58 (distinct ((_ sign_extend 8) e4) e6)))
+(let ((e59 (bvugt ((_ sign_extend 15) e12) e6)))
+(let ((e60 (bvslt e14 e11)))
+(let ((e61 (bvult ((_ sign_extend 13) v0) e17)))
+(let ((e62 (bvslt e19 ((_ zero_extend 2) e20))))
+(let ((e63 (= v0 ((_ zero_extend 2) e11))))
+(let ((e64 (bvugt ((_ zero_extend 15) e18) e6)))
+(let ((e65 (=> e62 e60)))
+(let ((e66 (xor e27 e26)))
+(let ((e67 (xor e42 e31)))
+(let ((e68 (or e29 e50)))
+(let ((e69 (=> e24 e46)))
+(let ((e70 (not e54)))
+(let ((e71 (=> e58 e55)))
+(let ((e72 (and e63 e45)))
+(let ((e73 (and e37 e36)))
+(let ((e74 (ite e39 e70 e38)))
+(let ((e75 (and e64 e34)))
+(let ((e76 (or e65 e61)))
+(let ((e77 (=> e47 e66)))
+(let ((e78 (=> e56 e33)))
+(let ((e79 (and e74 e74)))
+(let ((e80 (=> e52 e67)))
+(let ((e81 (not e41)))
+(let ((e82 (ite e79 e69 e43)))
+(let ((e83 (and e48 e51)))
+(let ((e84 (=> e68 e32)))
+(let ((e85 (not e40)))
+(let ((e86 (ite e76 e75 e85)))
+(let ((e87 (xor e49 e44)))
+(let ((e88 (ite e35 e57 e59)))
+(let ((e89 (= e25 e87)))
+(let ((e90 (=> e82 e73)))
+(let ((e91 (=> e78 e72)))
+(let ((e92 (= e80 e89)))
+(let ((e93 (not e53)))
+(let ((e94 (= e84 e77)))
+(let ((e95 (and e91 e81)))
+(let ((e96 (xor e95 e88)))
+(let ((e97 (ite e93 e30 e83)))
+(let ((e98 (not e94)))
+(let ((e99 (= e98 e96)))
+(let ((e100 (and e97 e97)))
+(let ((e101 (not e71)))
+(let ((e102 (= e92 e99)))
+(let ((e103 (and e101 e86)))
+(let ((e104 (= e103 e90)))
+(let ((e105 (and e102 e100)))
+(let ((e106 (ite e104 e28 e105)))
+(let ((e107 (and e106 (not (= e5 (_ bv0 16))))))
+e107
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+(check-sat)
diff --git a/test/regress/regress0/aufbv/diseqprop.01.smt b/test/regress/regress0/aufbv/diseqprop.01.smt
new file mode 100644
index 0000000..4b31304
--- /dev/null
+++ b/test/regress/regress0/aufbv/diseqprop.01.smt
@@ -0,0 +1,13 @@
+(benchmark B_
+  :status unsat
+  :logic QF_AUFBV
+  
+  :extrafuns ((x BitVec[32]))
+  :extrafuns ((y BitVec[32]))
+  :extrafuns ((a Array[32:8]))
+  
+  :assumption (not (= (store a x bv0[8]) (store a x (extract[7:0] y))))
+  :assumption (= y bv0[32])
+
+  :formula true
+)
diff --git a/test/regress/regress0/aufbv/dubreva005ue.delta01.smt b/test/regress/regress0/aufbv/dubreva005ue.delta01.smt
new file mode 100644
index 0000000..4f2f91e
--- /dev/null
+++ b/test/regress/regress0/aufbv/dubreva005ue.delta01.smt
@@ -0,0 +1,33 @@
+(benchmark dubreva005ue.smt
+:logic QF_AUFBV
+:extrafuns ((a1 Array[32:8]))
+:status unsat
+:formula
+(let (?n1 bv0[1])
+(let (?n2 bv0[32])
+(let (?n3 bv1[8])
+(let (?n4 (store a1 ?n2 ?n3))
+(let (?n5 (select a1 ?n2))
+(let (?n6 (bvnot ?n3))
+(let (?n7 (bvand ?n5 ?n6))
+(let (?n8 (bvnot ?n7))
+(let (?n9 (bvand ?n3 ?n8))
+(let (?n10 (store ?n4 ?n2 ?n9))
+(let (?n11 (select ?n10 ?n2))
+(let (?n12 (store a1 ?n2 ?n11))
+(let (?n13 (select ?n12 ?n2))
+(let (?n14 (store a1 ?n2 ?n13))
+(let (?n15 (select ?n14 ?n2))
+(let (?n16 (store a1 ?n2 ?n15))
+(let (?n17 (select ?n16 ?n2))
+(let (?n18 (store a1 ?n2 ?n17))
+(let (?n19 (select ?n18 ?n2))
+(let (?n20 (store a1 ?n2 ?n19))
+(flet ($n21 (= ?n4 ?n20))
+(let (?n22 bv1[1])
+(let (?n23 (ite $n21 ?n22 ?n1))
+(let (?n24 (bvnot ?n23))
+(flet ($n25 (= ?n1 ?n24))
+(flet ($n26 (not $n25))
+$n26
+)))))))))))))))))))))))))))
diff --git a/test/regress/regress0/aufbv/fifo32bc06k08.delta01.smt b/test/regress/regress0/aufbv/fifo32bc06k08.delta01.smt
new file mode 100644
index 0000000..9059239
--- /dev/null
+++ b/test/regress/regress0/aufbv/fifo32bc06k08.delta01.smt
@@ -0,0 +1,37 @@
+(benchmark fifo32bc06k08.smt
+:logic QF_AUFBV
+:extrafuns ((a1179 Array[6:32]))
+:extrafuns ((reset_3 BitVec[1]))
+:extrafuns ((full_fq_3 BitVec[1]))
+:extrafuns ((a741 Array[6:32]))
+:extrafuns ((a960 Array[6:32]))
+:status unsat
+:formula
+(let (?n1 bv0[1])
+(flet ($n2 (= a1179 a960))
+(let (?n3 bv1[1])
+(let (?n4 (ite $n2 ?n3 ?n1))
+(flet ($n5 (= ?n3 full_fq_3))
+(let (?n6 bv0[6])
+(let (?n7 bv0[32])
+(let (?n8 (store a741 ?n6 ?n7))
+(let (?n9 (ite $n5 a741 ?n8))
+(flet ($n10 (= a960 ?n9))
+(let (?n11 (ite $n10 ?n3 ?n1))
+(flet ($n12 (= ?n1 full_fq_3))
+(let (?n13 (ite $n12 ?n3 ?n1))
+(let (?n14 (bvnot ?n13))
+(let (?n15 (bvand ?n14 reset_3))
+(let (?n16 (bvnot ?n15))
+(let (?n17 (bvand reset_3 ?n16))
+(let (?n18 (bvand ?n11 ?n17))
+(let (?n19 (bvand ?n4 ?n18))
+(let (?n20 bv1[32])
+(let (?n21 (select a1179 ?n6))
+(flet ($n22 (= ?n20 ?n21))
+(let (?n23 (ite $n22 ?n3 ?n1))
+(let (?n24 (bvand ?n19 ?n23))
+(flet ($n25 (= ?n1 ?n24))
+(flet ($n26 (not $n25))
+$n26
+)))))))))))))))))))))))))))
diff --git a/test/regress/regress0/aufbv/fuzz00.smt b/test/regress/regress0/aufbv/fuzz00.smt
new file mode 100644
index 0000000..c9095e3
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz00.smt
@@ -0,0 +1,147 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status sat
+:extrafuns ((v0 BitVec[2]))
+:extrafuns ((v1 BitVec[11]))
+:extrafuns ((a2 Array[5:15]))
+:formula
+(let (?e3 bv270[9])
+(let (?e4 bv10435[15])
+(let (?e5 (ite (bvugt ?e4 ?e4) bv1[1] bv0[1]))
+(let (?e6 (bvsub (sign_extend[13] v0) ?e4))
+(let (?e7 (ite (= bv1[1] (extract[0:0] v1)) ?e4 (sign_extend[6] ?e3)))
+(let (?e8 (store a2 (extract[8:4] ?e3) ?e4))
+(let (?e9 (store ?e8 (extract[7:3] ?e3) ?e6))
+(let (?e10 (select ?e8 (extract[6:2] ?e3)))
+(let (?e11 (select ?e9 (extract[9:5] ?e10)))
+(let (?e12 (select ?e8 (extract[6:2] v1)))
+(let (?e13 (store ?e8 (extract[4:0] ?e7) (zero_extend[13] v0)))
+(let (?e14 (select ?e8 (extract[4:0] ?e10)))
+(let (?e15 (store a2 (extract[6:2] ?e3) ?e6))
+(let (?e16 (select ?e13 (zero_extend[4] ?e5)))
+(let (?e17 (ite (= ?e4 ?e16) bv1[1] bv0[1]))
+(let (?e18 (bvnor (zero_extend[6] ?e3) ?e14))
+(let (?e19 (ite (bvsgt ?e14 ?e16) bv1[1] bv0[1]))
+(let (?e20 (bvashr ?e7 (zero_extend[13] v0)))
+(let (?e21 (extract[12:1] ?e11))
+(let (?e22 (ite (bvuge ?e10 (sign_extend[14] ?e19)) bv1[1] bv0[1]))
+(let (?e23 (bvmul (sign_extend[1] ?e5) v0))
+(let (?e24 (zero_extend[1] ?e12))
+(let (?e25 (ite (= ?e6 ?e11) bv1[1] bv0[1]))
+(let (?e26 (ite (bvslt v1 (sign_extend[10] ?e5)) bv1[1] bv0[1]))
+(flet ($e27 (= ?e7 (zero_extend[14] ?e17)))
+(flet ($e28 (= ?e24 (zero_extend[15] ?e26)))
+(flet ($e29 (= ?e19 ?e5))
+(flet ($e30 (= (sign_extend[15] ?e19) ?e24))
+(flet ($e31 (= ?e3 (zero_extend[7] ?e23)))
+(flet ($e32 (= ?e11 (zero_extend[14] ?e19)))
+(flet ($e33 (= ?e12 (sign_extend[4] v1)))
+(flet ($e34 (= (zero_extend[14] ?e25) ?e14))
+(flet ($e35 (= ?e12 (sign_extend[14] ?e19)))
+(flet ($e36 (= (zero_extend[14] ?e25) ?e12))
+(flet ($e37 (= (zero_extend[14] ?e5) ?e18))
+(flet ($e38 (= ?e16 (sign_extend[14] ?e22)))
+(flet ($e39 (= ?e24 (sign_extend[4] ?e21)))
+(flet ($e40 (= (zero_extend[8] ?e22) ?e3))
+(flet ($e41 (= ?e11 ?e10))
+(flet ($e42 (= (sign_extend[14] ?e26) ?e18))
+(flet ($e43 (= ?e18 ?e11))
+(flet ($e44 (= (zero_extend[10] ?e19) v1))
+(flet ($e45 (= ?e25 ?e22))
+(flet ($e46 (= ?e11 (zero_extend[14] ?e25)))
+(flet ($e47 (= (zero_extend[6] ?e3) ?e6))
+(flet ($e48 (= ?e7 (zero_extend[6] ?e3)))
+(flet ($e49 (= ?e24 (zero_extend[15] ?e19)))
+(flet ($e50 (= (sign_extend[14] ?e19) ?e11))
+(flet ($e51 (= (sign_extend[14] ?e22) ?e6))
+(flet ($e52 (= v1 (zero_extend[2] ?e3)))
+(flet ($e53 (= v1 v1))
+(flet ($e54 (= (sign_extend[1] ?e5) ?e23))
+(flet ($e55 (= ?e6 (zero_extend[4] v1)))
+(flet ($e56 (= (zero_extend[14] ?e22) ?e4))
+(flet ($e57 (= ?e24 (zero_extend[15] ?e22)))
+(flet ($e58 (= (zero_extend[13] v0) ?e11))
+(flet ($e59 (= ?e3 (sign_extend[7] ?e23)))
+(flet ($e60 (= (zero_extend[14] ?e26) ?e10))
+(flet ($e61 (= (sign_extend[7] ?e3) ?e24))
+(flet ($e62 (= ?e23 (sign_extend[1] ?e17)))
+(flet ($e63 (= (sign_extend[1] ?e10) ?e24))
+(flet ($e64 (= ?e3 (zero_extend[7] v0)))
+(flet ($e65 (= (zero_extend[1] ?e11) ?e24))
+(flet ($e66 (= (sign_extend[14] ?e22) ?e14))
+(flet ($e67 (= (zero_extend[13] ?e23) ?e10))
+(flet ($e68 (= (zero_extend[6] ?e3) ?e6))
+(flet ($e69 (= ?e22 ?e25))
+(flet ($e70 (= ?e26 ?e22))
+(flet ($e71 (= ?e4 ?e7))
+(flet ($e72 (= ?e7 (zero_extend[14] ?e26)))
+(flet ($e73 (= ?e14 (sign_extend[4] v1)))
+(flet ($e74 (= ?e4 ?e10))
+(flet ($e75 (= ?e17 ?e5))
+(flet ($e76 (= ?e6 (sign_extend[14] ?e5)))
+(flet ($e77 (= (zero_extend[14] ?e17) ?e16))
+(flet ($e78 (= ?e11 (sign_extend[14] ?e26)))
+(flet ($e79 (= ?e12 (sign_extend[13] v0)))
+(flet ($e80 (= ?e17 ?e5))
+(flet ($e81 (= (sign_extend[13] v0) ?e20))
+(flet ($e82 (implies $e64 $e68))
+(flet ($e83 (iff $e72 $e77))
+(flet ($e84 (and $e51 $e34))
+(flet ($e85 (implies $e76 $e80))
+(flet ($e86 (or $e59 $e58))
+(flet ($e87 (iff $e49 $e52))
+(flet ($e88 (xor $e55 $e60))
+(flet ($e89 (not $e50))
+(flet ($e90 (and $e41 $e47))
+(flet ($e91 (if_then_else $e39 $e46 $e78))
+(flet ($e92 (or $e56 $e44))
+(flet ($e93 (not $e82))
+(flet ($e94 (implies $e42 $e71))
+(flet ($e95 (if_then_else $e93 $e63 $e36))
+(flet ($e96 (if_then_else $e75 $e83 $e74))
+(flet ($e97 (iff $e30 $e29))
+(flet ($e98 (implies $e40 $e84))
+(flet ($e99 (if_then_else $e45 $e48 $e70))
+(flet ($e100 (xor $e95 $e33))
+(flet ($e101 (iff $e99 $e96))
+(flet ($e102 (xor $e81 $e98))
+(flet ($e103 (not $e62))
+(flet ($e104 (if_then_else $e90 $e31 $e90))
+(flet ($e105 (not $e61))
+(flet ($e106 (or $e37 $e102))
+(flet ($e107 (iff $e28 $e89))
+(flet ($e108 (not $e35))
+(flet ($e109 (if_then_else $e67 $e38 $e27))
+(flet ($e110 (implies $e108 $e57))
+(flet ($e111 (and $e79 $e94))
+(flet ($e112 (not $e101))
+(flet ($e113 (iff $e66 $e66))
+(flet ($e114 (not $e86))
+(flet ($e115 (iff $e85 $e112))
+(flet ($e116 (and $e54 $e111))
+(flet ($e117 (iff $e53 $e106))
+(flet ($e118 (if_then_else $e105 $e107 $e104))
+(flet ($e119 (implies $e91 $e91))
+(flet ($e120 (if_then_else $e97 $e100 $e110))
+(flet ($e121 (or $e65 $e117))
+(flet ($e122 (iff $e87 $e116))
+(flet ($e123 (if_then_else $e109 $e92 $e32))
+(flet ($e124 (iff $e103 $e73))
+(flet ($e125 (iff $e88 $e114))
+(flet ($e126 (not $e43))
+(flet ($e127 (xor $e121 $e115))
+(flet ($e128 (or $e122 $e126))
+(flet ($e129 (xor $e69 $e118))
+(flet ($e130 (if_then_else $e123 $e127 $e125))
+(flet ($e131 (or $e120 $e124))
+(flet ($e132 (implies $e113 $e113))
+(flet ($e133 (not $e132))
+(flet ($e134 (implies $e128 $e119))
+(flet ($e135 (implies $e133 $e134))
+(flet ($e136 (and $e131 $e135))
+(flet ($e137 (xor $e129 $e136))
+(flet ($e138 (or $e130 $e130))
+(flet ($e139 (or $e138 $e137))
+$e139
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/aufbv/fuzz01.delta01.smt b/test/regress/regress0/aufbv/fuzz01.delta01.smt
new file mode 100644
index 0000000..f448b04
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz01.delta01.smt
@@ -0,0 +1,25 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:extrafuns ((v1 BitVec[3]))
+:extrafuns ((v2 BitVec[11]))
+:extrafuns ((a9 Array[8:5]))
+:extrafuns ((a6 Array[1:13]))
+:status sat
+:formula
+(let (?n1 bv0[15])
+(let (?n2 bv0[1])
+(let (?n3 (zero_extend[8] v1))
+(let (?n4 (bvnor v2 ?n3))
+(let (?n5 (extract[7:0] ?n4))
+(let (?n6 bv0[5])
+(let (?n7 (store a9 ?n5 ?n6))
+(let (?n8 bv0[8])
+(let (?n9 (select ?n7 ?n8))
+(let (?n10 (zero_extend[8] ?n9))
+(let (?n11 (store a6 ?n2 ?n10))
+(let (?n12 (extract[0:0] ?n4))
+(let (?n13 (select ?n11 ?n12))
+(let (?n14 (zero_extend[2] ?n13))
+(flet ($n15 (= ?n1 ?n14))
+$n15
+))))))))))))))))
diff --git a/test/regress/regress0/aufbv/fuzz01.smt b/test/regress/regress0/aufbv/fuzz01.smt
new file mode 100644
index 0000000..6605e2f
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz01.smt
@@ -0,0 +1,365 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status sat
+:extrafuns ((v0 BitVec[15]))
+:extrafuns ((v1 BitVec[3]))
+:extrafuns ((v2 BitVec[11]))
+:extrafuns ((a3 Array[3:5]))
+:extrafuns ((a4 Array[5:15]))
+:extrafuns ((a5 Array[2:13]))
+:extrafuns ((a6 Array[1:13]))
+:extrafuns ((a7 Array[3:7]))
+:extrafuns ((a8 Array[4:14]))
+:extrafuns ((a9 Array[8:5]))
+:extrafuns ((a10 Array[3:14]))
+:formula
+(let (?e11 bv1572[12])
+(let (?e12 bv33[9])
+(let (?e13 bv33[6])
+(let (?e14 bv18[7])
+(let (?e15 bv19308[16])
+(let (?e16 bv1[1])
+(let (?e17 bv13[4])
+(let (?e18 (bvlshr (zero_extend[7] ?e17) v2))
+(let (?e19 (ite (= bv1[1] (extract[4:4] ?e12)) ?e15 (sign_extend[9] ?e14)))
+(let (?e20 (ite (bvugt ?e12 (zero_extend[8] ?e16)) bv1[1] bv0[1]))
+(let (?e21 (bvnor (zero_extend[8] v1) v2))
+(let (?e22 (bvnot ?e21))
+(let (?e23 (ite (bvsge (sign_extend[5] ?e13) v2) bv1[1] bv0[1]))
+(let (?e24 (ite (bvsge ?e11 (zero_extend[1] ?e22)) bv1[1] bv0[1]))
+(let (?e25 (ite (bvsle v0 (sign_extend[4] v2)) bv1[1] bv0[1]))
+(let (?e26 (store a9 (extract[9:2] ?e21) (extract[5:1] ?e18)))
+(let (?e27 (store a6 (extract[0:0] ?e22) (sign_extend[10] v1)))
+(let (?e28 (store a6 (extract[2:2] v1) (zero_extend[12] ?e24)))
+(let (?e29 (store a9 (extract[7:0] ?e22) (extract[8:4] v0)))
+(let (?e30 (store a10 (extract[7:5] ?e22) (zero_extend[10] ?e17)))
+(let (?e31 (ite (= a8 a8) bv1[1] bv0[1]))
+(let (?e32 (select ?e28 ?e16))
+(let (?e33 (select ?e29 (extract[13:6] ?e15)))
+(let (?e34 (select a3 (zero_extend[2] ?e23)))
+(let (?e35 (select ?e30 (zero_extend[2] ?e20)))
+(let (?e36 (select a5 (sign_extend[1] ?e20)))
+(let (?e37 (select a4 (sign_extend[4] ?e24)))
+(let (?e38 (select ?e26 (zero_extend[7] ?e31)))
+(let (?e39 (store a6 ?e16 (zero_extend[8] ?e33)))
+(let (?e40 (store a7 (extract[7:5] ?e15) (zero_extend[6] ?e16)))
+(let (?e41 (store a9 (extract[8:1] ?e21) ?e38))
+(let (?e42 (select a3 (zero_extend[2] ?e23)))
+(let (?e43 (select a4 (extract[6:2] ?e22)))
+(let (?e44 (select a4 (extract[5:1] ?e13)))
+(let (?e45 (store ?e30 (extract[4:2] ?e42) (sign_extend[5] ?e12)))
+(let (?e46 (select ?e39 (extract[0:0] ?e22)))
+(let (?e47 (select ?e40 (extract[2:0] ?e14)))
+(let (?e48 (store ?e28 (extract[0:0] ?e18) ?e46))
+(let (?e49 (select ?e40 (extract[5:3] v2)))
+(let (?e50 (bvxor (zero_extend[8] ?e34) ?e46))
+(let (?e51 (bvneg ?e49))
+(let (?e52 (ite (bvsge (zero_extend[4] ?e21) ?e44) bv1[1] bv0[1]))
+(let (?e53 (ite (bvuge ?e12 (zero_extend[2] ?e51)) bv1[1] bv0[1]))
+(let (?e54 (bvor ?e32 (zero_extend[12] ?e53)))
+(let (?e55 (repeat[10] ?e23))
+(let (?e56 (bvnot ?e13))
+(let (?e57 (rotate_right[0] ?e23))
+(let (?e58 (ite (bvsge ?e35 (sign_extend[1] ?e46)) bv1[1] bv0[1]))
+(let (?e59 (bvxor ?e47 ?e47))
+(let (?e60 (sign_extend[2] ?e18))
+(let (?e61 (rotate_right[2] v1))
+(let (?e62 (bvadd (zero_extend[2] ?e36) ?e44))
+(let (?e63 (bvand ?e25 ?e53))
+(let (?e64 (bvneg ?e19))
+(let (?e65 (extract[8:2] ?e22))
+(let (?e66 (rotate_right[0] ?e16))
+(let (?e67 (bvlshr (zero_extend[11] v1) ?e35))
+(let (?e68 (zero_extend[7] ?e59))
+(let (?e69 (ite (bvsle ?e22 (sign_extend[10] ?e20)) bv1[1] bv0[1]))
+(let (?e70 (rotate_right[4] ?e55))
+(let (?e71 (bvshl v0 (sign_extend[8] ?e51)))
+(let (?e72 (bvshl ?e33 (sign_extend[4] ?e31)))
+(let (?e73 (bvxor ?e19 (sign_extend[15] ?e52)))
+(let (?e74 (bvnor (sign_extend[13] ?e31) ?e68))
+(let (?e75 (extract[0:0] ?e24))
+(let (?e76 (ite (= bv1[1] (extract[6:6] ?e71)) (zero_extend[4] ?e23) ?e42))
+(let (?e77 (bvand (sign_extend[1] ?e37) ?e15))
+(let (?e78 (bvashr ?e43 ?e62))
+(let (?e79 (repeat[1] ?e15))
+(let (?e80 (ite (bvule (sign_extend[8] ?e14) v0) bv1[1] bv0[1]))
+(let (?e81 (ite (bvslt (zero_extend[10] v1) ?e54) bv1[1] bv0[1]))
+(let (?e82 (ite (= (sign_extend[6] ?e38) ?e18) bv1[1] bv0[1]))
+(let (?e83 (ite (bvsgt (zero_extend[8] ?e56) ?e67) bv1[1] bv0[1]))
+(let (?e84 (bvmul ?e32 (sign_extend[2] ?e22)))
+(let (?e85 (extract[7:6] ?e11))
+(let (?e86 (repeat[1] ?e55))
+(let (?e87 (bvashr (sign_extend[2] ?e54) ?e62))
+(let (?e88 (rotate_left[1] ?e55))
+(let (?e89 (concat ?e83 ?e69))
+(let (?e90 (bvadd (zero_extend[5] v2) ?e15))
+(let (?e91 (bvor ?e22 (sign_extend[8] ?e61)))
+(let (?e92 (extract[12:10] ?e79))
+(let (?e93 (ite (bvslt (zero_extend[14] ?e83) ?e62) bv1[1] bv0[1]))
+(let (?e94 (ite (bvsgt (sign_extend[9] ?e17) ?e60) bv1[1] bv0[1]))
+(flet ($e95 (bvugt (sign_extend[8] v1) v2))
+(flet ($e96 (bvult (sign_extend[1] ?e87) ?e19))
+(flet ($e97 (bvule ?e47 (zero_extend[5] ?e85)))
+(flet ($e98 (bvsge ?e68 (sign_extend[7] ?e59)))
+(flet ($e99 (bvuge ?e51 (sign_extend[2] ?e38)))
+(flet ($e100 (bvule (zero_extend[11] ?e42) ?e73))
+(flet ($e101 (bvuge ?e87 (sign_extend[2] ?e32)))
+(flet ($e102 (distinct ?e47 (zero_extend[1] ?e56)))
+(flet ($e103 (distinct ?e32 (sign_extend[4] ?e12)))
+(flet ($e104 (bvuge (sign_extend[6] ?e69) ?e47))
+(flet ($e105 (bvsle ?e59 (zero_extend[6] ?e52)))
+(flet ($e106 (bvsgt ?e67 (zero_extend[8] ?e56)))
+(flet ($e107 (bvsle (zero_extend[2] ?e93) ?e92))
+(flet ($e108 (bvuge ?e72 (zero_extend[4] ?e81)))
+(flet ($e109 (bvult (zero_extend[13] ?e57) ?e35))
+(flet ($e110 (bvsge ?e74 (sign_extend[13] ?e69)))
+(flet ($e111 (bvslt ?e68 (sign_extend[8] ?e13)))
+(flet ($e112 (bvslt (sign_extend[4] ?e69) ?e38))
+(flet ($e113 (bvsle (zero_extend[3] ?e36) ?e79))
+(flet ($e114 (bvule ?e51 (zero_extend[6] ?e23)))
+(flet ($e115 (bvsle (sign_extend[7] ?e85) ?e12))
+(flet ($e116 (bvsge (sign_extend[2] ?e31) ?e61))
+(flet ($e117 (bvugt ?e77 (sign_extend[11] ?e76)))
+(flet ($e118 (bvsge (sign_extend[11] ?e85) ?e46))
+(flet ($e119 (= (sign_extend[9] ?e25) ?e70))
+(flet ($e120 (bvsge ?e47 (zero_extend[6] ?e52)))
+(flet ($e121 (= (sign_extend[7] ?e51) ?e35))
+(flet ($e122 (= ?e78 (zero_extend[8] ?e14)))
+(flet ($e123 (bvslt (zero_extend[4] ?e91) ?e87))
+(flet ($e124 (bvslt (sign_extend[12] ?e92) ?e44))
+(flet ($e125 (distinct ?e58 ?e80))
+(flet ($e126 (bvugt ?e53 ?e58))
+(flet ($e127 (bvsgt (sign_extend[5] ?e88) ?e87))
+(flet ($e128 (bvslt ?e37 v0))
+(flet ($e129 (bvsge (zero_extend[2] ?e23) v1))
+(flet ($e130 (bvule ?e50 ?e36))
+(flet ($e131 (bvsgt (zero_extend[13] ?e92) ?e73))
+(flet ($e132 (bvult (zero_extend[10] ?e72) ?e37))
+(flet ($e133 (bvsle ?e93 ?e53))
+(flet ($e134 (bvsge (sign_extend[2] ?e91) ?e46))
+(flet ($e135 (bvuge (sign_extend[13] ?e52) ?e67))
+(flet ($e136 (bvsge (sign_extend[13] ?e23) ?e67))
+(flet ($e137 (bvslt ?e70 (sign_extend[9] ?e69)))
+(flet ($e138 (bvult ?e88 ?e55))
+(flet ($e139 (bvsle ?e87 ?e78))
+(flet ($e140 (bvsle ?e62 (zero_extend[14] ?e83)))
+(flet ($e141 (bvugt ?e67 (zero_extend[13] ?e69)))
+(flet ($e142 (= ?e71 (zero_extend[2] ?e46)))
+(flet ($e143 (bvslt (zero_extend[9] ?e34) ?e67))
+(flet ($e144 (bvsge ?e14 ?e51))
+(flet ($e145 (bvult ?e51 (sign_extend[2] ?e33)))
+(flet ($e146 (bvugt (zero_extend[9] ?e25) ?e70))
+(flet ($e147 (bvule ?e64 (sign_extend[6] ?e86)))
+(flet ($e148 (bvugt ?e65 (sign_extend[6] ?e24)))
+(flet ($e149 (bvugt (sign_extend[11] ?e85) ?e50))
+(flet ($e150 (bvult (zero_extend[4] ?e91) ?e71))
+(flet ($e151 (= (zero_extend[5] ?e18) ?e77))
+(flet ($e152 (bvult (zero_extend[14] ?e93) ?e43))
+(flet ($e153 (bvsge ?e46 (sign_extend[3] ?e70)))
+(flet ($e154 (= v0 (sign_extend[8] ?e51)))
+(flet ($e155 (distinct ?e78 (sign_extend[3] ?e11)))
+(flet ($e156 (= ?e23 ?e25))
+(flet ($e157 (bvslt (zero_extend[1] ?e60) ?e67))
+(flet ($e158 (bvule ?e74 (zero_extend[13] ?e25)))
+(flet ($e159 (bvsgt ?e46 ?e50))
+(flet ($e160 (bvult (sign_extend[12] ?e93) ?e84))
+(flet ($e161 (= ?e70 (zero_extend[9] ?e82)))
+(flet ($e162 (bvugt (sign_extend[14] ?e63) ?e62))
+(flet ($e163 (bvslt ?e67 (zero_extend[7] ?e14)))
+(flet ($e164 (= ?e54 ?e54))
+(flet ($e165 (bvslt ?e67 (sign_extend[7] ?e49)))
+(flet ($e166 (bvugt ?e36 (zero_extend[12] ?e94)))
+(flet ($e167 (bvsle (zero_extend[1] ?e13) ?e49))
+(flet ($e168 (bvule (zero_extend[4] ?e18) ?e44))
+(flet ($e169 (bvult (zero_extend[3] ?e92) ?e13))
+(flet ($e170 (bvuge ?e70 (zero_extend[9] ?e20)))
+(flet ($e171 (bvule (zero_extend[10] ?e56) ?e64))
+(flet ($e172 (distinct (sign_extend[12] ?e80) ?e54))
+(flet ($e173 (bvult (sign_extend[5] ?e88) ?e71))
+(flet ($e174 (bvsge ?e50 (zero_extend[12] ?e75)))
+(flet ($e175 (bvsgt ?e36 (sign_extend[12] ?e66)))
+(flet ($e176 (bvslt (zero_extend[4] ?e51) ?e91))
+(flet ($e177 (bvugt (zero_extend[3] ?e65) ?e86))
+(flet ($e178 (= ?e60 ?e54))
+(flet ($e179 (bvslt v2 ?e18))
+(flet ($e180 (bvslt (zero_extend[10] ?e25) v2))
+(flet ($e181 (bvule ?e91 (sign_extend[4] ?e51)))
+(flet ($e182 (bvule ?e79 (zero_extend[10] ?e13)))
+(flet ($e183 (bvult ?e50 (zero_extend[9] ?e17)))
+(flet ($e184 (bvsgt ?e36 (sign_extend[12] ?e31)))
+(flet ($e185 (bvult (sign_extend[5] ?e18) ?e64))
+(flet ($e186 (bvule v2 (zero_extend[6] ?e38)))
+(flet ($e187 (bvsgt ?e62 (sign_extend[14] ?e31)))
+(flet ($e188 (bvsle ?e70 (zero_extend[1] ?e12)))
+(flet ($e189 (bvugt ?e22 (zero_extend[10] ?e20)))
+(flet ($e190 (bvsle (zero_extend[10] ?e31) ?e21))
+(flet ($e191 (bvsge (sign_extend[3] ?e36) ?e90))
+(flet ($e192 (bvule (zero_extend[4] ?e31) ?e38))
+(flet ($e193 (bvugt ?e91 (sign_extend[8] v1)))
+(flet ($e194 (bvuge (sign_extend[2] ?e11) ?e74))
+(flet ($e195 (distinct (sign_extend[13] ?e16) ?e67))
+(flet ($e196 (bvugt (zero_extend[6] ?e14) ?e36))
+(flet ($e197 (bvsgt ?e64 (zero_extend[15] ?e63)))
+(flet ($e198 (bvult ?e89 ?e89))
+(flet ($e199 (bvsgt ?e19 (zero_extend[15] ?e25)))
+(flet ($e200 (bvuge (zero_extend[9] ?e69) ?e86))
+(flet ($e201 (bvule ?e71 (zero_extend[8] ?e49)))
+(flet ($e202 (bvsgt ?e77 (zero_extend[2] ?e35)))
+(flet ($e203 (distinct (sign_extend[7] ?e14) ?e68))
+(flet ($e204 (distinct ?e78 ?e78))
+(flet ($e205 (bvsge (zero_extend[10] ?e31) ?e22))
+(flet ($e206 (bvsge ?e56 (zero_extend[5] ?e75)))
+(flet ($e207 (bvult ?e20 ?e82))
+(flet ($e208 (bvsge ?e79 (zero_extend[10] ?e56)))
+(flet ($e209 (= (zero_extend[5] ?e12) ?e74))
+(flet ($e210 (bvult (sign_extend[14] ?e93) ?e37))
+(flet ($e211 (bvugt (zero_extend[11] ?e52) ?e11))
+(flet ($e212 (bvugt (zero_extend[10] ?e66) ?e91))
+(flet ($e213 (bvugt (zero_extend[14] ?e52) ?e44))
+(flet ($e214 (bvuge ?e35 (zero_extend[13] ?e52)))
+(flet ($e215 (bvsge (zero_extend[9] ?e34) ?e68))
+(flet ($e216 (distinct ?e51 ?e51))
+(flet ($e217 (bvule ?e37 (sign_extend[12] v1)))
+(flet ($e218 (bvsle ?e18 (sign_extend[10] ?e31)))
+(flet ($e219 (bvuge (zero_extend[9] ?e16) ?e86))
+(flet ($e220 (distinct ?e15 ?e79))
+(flet ($e221 (= a3 a3))
+(flet ($e222 (xor $e106 $e207))
+(flet ($e223 (xor $e143 $e193))
+(flet ($e224 (xor $e218 $e144))
+(flet ($e225 (or $e161 $e165))
+(flet ($e226 (if_then_else $e194 $e136 $e108))
+(flet ($e227 (and $e168 $e183))
+(flet ($e228 (xor $e221 $e125))
+(flet ($e229 (not $e154))
+(flet ($e230 (or $e114 $e173))
+(flet ($e231 (iff $e105 $e132))
+(flet ($e232 (xor $e130 $e181))
+(flet ($e233 (xor $e199 $e96))
+(flet ($e234 (implies $e148 $e150))
+(flet ($e235 (xor $e200 $e210))
+(flet ($e236 (iff $e158 $e220))
+(flet ($e237 (or $e184 $e107))
+(flet ($e238 (xor $e223 $e120))
+(flet ($e239 (not $e115))
+(flet ($e240 (not $e172))
+(flet ($e241 (iff $e118 $e126))
+(flet ($e242 (not $e198))
+(flet ($e243 (if_then_else $e236 $e98 $e188))
+(flet ($e244 (xor $e170 $e127))
+(flet ($e245 (not $e190))
+(flet ($e246 (iff $e95 $e102))
+(flet ($e247 (and $e121 $e149))
+(flet ($e248 (implies $e109 $e197))
+(flet ($e249 (and $e164 $e216))
+(flet ($e250 (not $e234))
+(flet ($e251 (and $e152 $e233))
+(flet ($e252 (or $e238 $e176))
+(flet ($e253 (and $e116 $e187))
+(flet ($e254 (implies $e145 $e249))
+(flet ($e255 (implies $e229 $e206))
+(flet ($e256 (xor $e101 $e112))
+(flet ($e257 (xor $e97 $e178))
+(flet ($e258 (or $e119 $e124))
+(flet ($e259 (if_then_else $e133 $e141 $e215))
+(flet ($e260 (xor $e196 $e248))
+(flet ($e261 (or $e237 $e251))
+(flet ($e262 (and $e205 $e201))
+(flet ($e263 (xor $e192 $e128))
+(flet ($e264 (if_then_else $e103 $e254 $e163))
+(flet ($e265 (if_then_else $e182 $e250 $e224))
+(flet ($e266 (implies $e203 $e204))
+(flet ($e267 (implies $e252 $e253))
+(flet ($e268 (iff $e167 $e159))
+(flet ($e269 (implies $e232 $e137))
+(flet ($e270 (or $e169 $e259))
+(flet ($e271 (not $e142))
+(flet ($e272 (or $e255 $e202))
+(flet ($e273 (implies $e217 $e104))
+(flet ($e274 (or $e231 $e257))
+(flet ($e275 (xor $e214 $e227))
+(flet ($e276 (if_then_else $e162 $e195 $e122))
+(flet ($e277 (xor $e230 $e153))
+(flet ($e278 (or $e242 $e186))
+(flet ($e279 (and $e185 $e222))
+(flet ($e280 (and $e177 $e262))
+(flet ($e281 (if_then_else $e260 $e189 $e267))
+(flet ($e282 (and $e160 $e270))
+(flet ($e283 (not $e129))
+(flet ($e284 (xor $e264 $e146))
+(flet ($e285 (implies $e147 $e284))
+(flet ($e286 (if_then_else $e247 $e123 $e274))
+(flet ($e287 (xor $e265 $e175))
+(flet ($e288 (not $e174))
+(flet ($e289 (iff $e244 $e157))
+(flet ($e290 (implies $e281 $e281))
+(flet ($e291 (and $e289 $e110))
+(flet ($e292 (iff $e211 $e179))
+(flet ($e293 (implies $e279 $e191))
+(flet ($e294 (implies $e272 $e266))
+(flet ($e295 (iff $e140 $e166))
+(flet ($e296 (implies $e287 $e100))
+(flet ($e297 (not $e213))
+(flet ($e298 (and $e286 $e171))
+(flet ($e299 (if_then_else $e246 $e228 $e292))
+(flet ($e300 (and $e256 $e297))
+(flet ($e301 (not $e240))
+(flet ($e302 (and $e282 $e245))
+(flet ($e303 (xor $e280 $e298))
+(flet ($e304 (not $e235))
+(flet ($e305 (not $e225))
+(flet ($e306 (or $e300 $e277))
+(flet ($e307 (implies $e268 $e209))
+(flet ($e308 (not $e263))
+(flet ($e309 (iff $e117 $e285))
+(flet ($e310 (not $e156))
+(flet ($e311 (implies $e151 $e288))
+(flet ($e312 (or $e275 $e306))
+(flet ($e313 (iff $e271 $e243))
+(flet ($e314 (if_then_else $e312 $e219 $e311))
+(flet ($e315 (or $e226 $e305))
+(flet ($e316 (implies $e290 $e241))
+(flet ($e317 (or $e139 $e309))
+(flet ($e318 (xor $e299 $e301))
+(flet ($e319 (iff $e314 $e310))
+(flet ($e320 (and $e295 $e135))
+(flet ($e321 (not $e269))
+(flet ($e322 (if_then_else $e278 $e321 $e278))
+(flet ($e323 (if_then_else $e131 $e155 $e276))
+(flet ($e324 (and $e261 $e212))
+(flet ($e325 (iff $e307 $e323))
+(flet ($e326 (implies $e316 $e113))
+(flet ($e327 (not $e291))
+(flet ($e328 (xor $e99 $e313))
+(flet ($e329 (and $e308 $e304))
+(flet ($e330 (implies $e322 $e318))
+(flet ($e331 (xor $e138 $e319))
+(flet ($e332 (and $e180 $e315))
+(flet ($e333 (iff $e283 $e283))
+(flet ($e334 (implies $e332 $e325))
+(flet ($e335 (xor $e324 $e327))
+(flet ($e336 (xor $e317 $e303))
+(flet ($e337 (xor $e296 $e302))
+(flet ($e338 (iff $e335 $e337))
+(flet ($e339 (iff $e326 $e326))
+(flet ($e340 (and $e339 $e111))
+(flet ($e341 (or $e328 $e330))
+(flet ($e342 (not $e340))
+(flet ($e343 (if_then_else $e320 $e320 $e333))
+(flet ($e344 (iff $e336 $e329))
+(flet ($e345 (if_then_else $e334 $e331 $e294))
+(flet ($e346 (not $e345))
+(flet ($e347 (xor $e293 $e293))
+(flet ($e348 (and $e347 $e239))
+(flet ($e349 (iff $e208 $e341))
+(flet ($e350 (implies $e338 $e343))
+(flet ($e351 (iff $e258 $e342))
+(flet ($e352 (implies $e134 $e134))
+(flet ($e353 (if_then_else $e350 $e344 $e351))
+(flet ($e354 (if_then_else $e353 $e346 $e273))
+(flet ($e355 (and $e348 $e354))
+(flet ($e356 (iff $e352 $e349))
+(flet ($e357 (xor $e355 $e356))
+$e357
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/aufbv/fuzz02.delta01.smt b/test/regress/regress0/aufbv/fuzz02.delta01.smt
new file mode 100644
index 0000000..3ad73d5
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz02.delta01.smt
@@ -0,0 +1,19 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:extrafuns ((a5 Array[5:13]))
+:extrafuns ((v4 BitVec[11]))
+:status sat
+:formula
+(let (?n1 bv0[11])
+(flet ($n2 (bvsle v4 ?n1))
+(let (?n3 bv1[1])
+(let (?n4 bv0[1])
+(let (?n5 (ite $n2 ?n3 ?n4))
+(let (?n6 bv0[5])
+(let (?n7 (select a5 ?n6))
+(let (?n8 bv0[13])
+(flet ($n9 (bvugt ?n7 ?n8))
+(let (?n10 (ite $n9 ?n3 ?n4))
+(flet ($n11 (bvslt ?n5 ?n10))
+$n11
+))))))))))))
diff --git a/test/regress/regress0/aufbv/fuzz02.smt b/test/regress/regress0/aufbv/fuzz02.smt
new file mode 100644
index 0000000..2ada96d
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz02.smt
@@ -0,0 +1,411 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status sat
+:extrafuns ((v0 BitVec[14]))
+:extrafuns ((v1 BitVec[10]))
+:extrafuns ((v2 BitVec[10]))
+:extrafuns ((v3 BitVec[8]))
+:extrafuns ((v4 BitVec[11]))
+:extrafuns ((a5 Array[5:13]))
+:extrafuns ((a6 Array[15:15]))
+:extrafuns ((a7 Array[3:1]))
+:extrafuns ((a8 Array[8:14]))
+:extrafuns ((a9 Array[6:16]))
+:extrafuns ((a10 Array[13:9]))
+:extrafuns ((a11 Array[3:14]))
+:extrafuns ((a12 Array[1:3]))
+:formula
+(let (?e13 bv37[10])
+(let (?e14 bv27[6])
+(let (?e15 bv60[7])
+(let (?e16 bv486[9])
+(let (?e17 bv7[5])
+(let (?e18 (ite (bvsle v4 (sign_extend[6] ?e17)) bv1[1] bv0[1]))
+(let (?e19 (ite (bvsge v0 (zero_extend[4] ?e13)) bv1[1] bv0[1]))
+(let (?e20 (bvneg v3))
+(let (?e21 (rotate_left[5] v1))
+(let (?e22 (ite (bvsge v4 v4) bv1[1] bv0[1]))
+(let (?e23 (ite (= (zero_extend[4] ?e14) ?e13) bv1[1] bv0[1]))
+(let (?e24 (sign_extend[4] v2))
+(let (?e25 (bvneg ?e16))
+(let (?e26 (bvashr ?e15 (zero_extend[6] ?e23)))
+(let (?e27 (store a12 (extract[6:6] ?e21) (extract[13:11] v0)))
+(let (?e28 (store a10 (sign_extend[5] v3) (extract[9:1] v0)))
+(let (?e29 (store a12 (extract[5:5] ?e16) (extract[9:7] ?e21)))
+(let (?e30 (store a11 (extract[9:7] v0) (sign_extend[4] v1)))
+(let (?e31 (store a5 (extract[5:1] ?e14) (zero_extend[12] ?e22)))
+(let (?e32 (ite (= ?e30 ?e30) bv1[1] bv0[1]))
+(let (?e33 (select a10 (extract[13:1] v0)))
+(let (?e34 (select ?e29 (extract[2:2] ?e17)))
+(let (?e35 (select ?e30 ?e34))
+(let (?e36 (select a8 (extract[13:6] ?e35)))
+(let (?e37 (select ?e31 (extract[4:0] ?e15)))
+(let (?e38 (select a9 (extract[9:4] v1)))
+(let (?e39 (select a8 (zero_extend[1] ?e26)))
+(let (?e40 (store a7 (extract[2:0] ?e24) ?e18))
+(let (?e41 (store ?e31 (extract[11:7] ?e24) (sign_extend[12] ?e23)))
+(let (?e42 (store a8 (zero_extend[7] ?e23) ?e36))
+(let (?e43 (select ?e42 (zero_extend[1] ?e26)))
+(let (?e44 (select ?e29 (extract[6:6] v2)))
+(let (?e45 (select a5 (zero_extend[4] ?e32)))
+(let (?e46 (store a6 (sign_extend[14] ?e23) (zero_extend[1] v0)))
+(let (?e47 (select ?e27 ?e18))
+(let (?e48 (select ?e40 (extract[13:11] ?e43)))
+(let (?e49 (store a6 (zero_extend[1] ?e39) (sign_extend[14] ?e23)))
+(let (?e50 (select ?e27 (extract[10:10] ?e36)))
+(let (?e51 (bvnot ?e15))
+(let (?e52 (repeat[2] v3))
+(let (?e53 (bvmul (zero_extend[10] ?e34) ?e37))
+(let (?e54 (bvsub ?e21 (zero_extend[3] ?e15)))
+(let (?e55 (bvneg ?e39))
+(let (?e56 (bvsub (zero_extend[8] ?e17) ?e37))
+(let (?e57 (ite (bvsgt ?e24 (sign_extend[7] ?e26)) bv1[1] bv0[1]))
+(let (?e58 (bvcomp (sign_extend[9] ?e32) ?e13))
+(let (?e59 (rotate_left[3] ?e33))
+(let (?e60 (bvadd ?e37 (sign_extend[8] ?e17)))
+(let (?e61 (rotate_right[0] ?e44))
+(let (?e62 (ite (bvsgt (zero_extend[6] ?e13) ?e52) bv1[1] bv0[1]))
+(let (?e63 (ite (bvsle ?e38 (zero_extend[6] v2)) bv1[1] bv0[1]))
+(let (?e64 (ite (bvuge (zero_extend[15] ?e23) ?e52) bv1[1] bv0[1]))
+(let (?e65 (bvlshr (zero_extend[10] ?e47) ?e45))
+(let (?e66 (bvnand ?e18 ?e23))
+(let (?e67 (bvashr ?e36 (zero_extend[13] ?e58)))
+(let (?e68 (bvxnor (zero_extend[6] ?e50) ?e25))
+(let (?e69 (ite (bvugt ?e55 (sign_extend[4] v2)) bv1[1] bv0[1]))
+(let (?e70 (bvshl (zero_extend[13] ?e19) ?e35))
+(let (?e71 (bvashr (zero_extend[2] ?e23) ?e61))
+(let (?e72 (bvcomp (sign_extend[3] v2) ?e65))
+(let (?e73 (ite (bvugt ?e56 (sign_extend[7] ?e14)) bv1[1] bv0[1]))
+(let (?e74 (bvneg ?e70))
+(let (?e75 (bvsub ?e16 ?e59))
+(let (?e76 (ite (bvsgt (sign_extend[5] ?e57) ?e14) bv1[1] bv0[1]))
+(let (?e77 (repeat[3] ?e22))
+(let (?e78 (bvcomp ?e65 ?e65))
+(let (?e79 (bvneg ?e48))
+(let (?e80 (ite (bvsge (zero_extend[8] ?e20) ?e38) bv1[1] bv0[1]))
+(let (?e81 (ite (bvult (zero_extend[4] ?e68) ?e45) bv1[1] bv0[1]))
+(let (?e82 (sign_extend[1] v1))
+(let (?e83 (bvor (sign_extend[2] ?e33) v4))
+(let (?e84 (bvshl v0 ?e39))
+(let (?e85 (ite (bvugt (sign_extend[9] ?e62) v2) bv1[1] bv0[1]))
+(let (?e86 (bvnot ?e43))
+(flet ($e87 (bvsge (zero_extend[11] ?e50) ?e86))
+(flet ($e88 (bvsle ?e73 ?e76))
+(flet ($e89 (bvult ?e50 (zero_extend[2] ?e76)))
+(flet ($e90 (= ?e63 ?e79))
+(flet ($e91 (bvsgt (zero_extend[13] ?e72) ?e84))
+(flet ($e92 (bvsle (sign_extend[13] ?e44) ?e52))
+(flet ($e93 (distinct ?e32 ?e76))
+(flet ($e94 (bvult (sign_extend[8] ?e78) ?e33))
+(flet ($e95 (bvuge (sign_extend[11] ?e71) ?e35))
+(flet ($e96 (bvule (zero_extend[15] ?e72) ?e38))
+(flet ($e97 (bvsge ?e65 (zero_extend[2] ?e82)))
+(flet ($e98 (bvuge v0 (sign_extend[5] ?e33)))
+(flet ($e99 (distinct (sign_extend[2] ?e25) v4))
+(flet ($e100 (bvsge ?e33 (zero_extend[8] ?e58)))
+(flet ($e101 (bvsge ?e35 (zero_extend[11] ?e44)))
+(flet ($e102 (= ?e53 (zero_extend[12] ?e57)))
+(flet ($e103 (bvugt ?e39 (zero_extend[4] v1)))
+(flet ($e104 (bvult (zero_extend[11] ?e34) ?e24))
+(flet ($e105 (bvuge ?e47 (sign_extend[2] ?e32)))
+(flet ($e106 (bvsgt ?e84 (sign_extend[1] ?e56)))
+(flet ($e107 (bvsle ?e17 (sign_extend[4] ?e85)))
+(flet ($e108 (bvsle ?e56 (zero_extend[10] ?e61)))
+(flet ($e109 (bvsle (zero_extend[11] ?e47) ?e35))
+(flet ($e110 (bvslt ?e67 v0))
+(flet ($e111 (bvsgt (zero_extend[13] ?e69) ?e74))
+(flet ($e112 (bvslt ?e36 v0))
+(flet ($e113 (bvsge (zero_extend[3] ?e61) ?e14))
+(flet ($e114 (bvsgt (zero_extend[11] ?e61) ?e36))
+(flet ($e115 (bvsge (zero_extend[8] ?e22) ?e25))
+(flet ($e116 (bvuge ?e33 ?e59))
+(flet ($e117 (bvuge (zero_extend[5] ?e23) ?e14))
+(flet ($e118 (bvugt (sign_extend[6] ?e85) ?e51))
+(flet ($e119 (distinct (zero_extend[2] ?e69) ?e34))
+(flet ($e120 (bvugt (zero_extend[8] ?e19) ?e59))
+(flet ($e121 (distinct (zero_extend[8] ?e72) ?e75))
+(flet ($e122 (distinct v1 (zero_extend[7] ?e77)))
+(flet ($e123 (distinct ?e21 (zero_extend[3] ?e15)))
+(flet ($e124 (bvult ?e86 (zero_extend[11] ?e44)))
+(flet ($e125 (bvslt ?e60 (zero_extend[4] ?e68)))
+(flet ($e126 (distinct ?e66 ?e72))
+(flet ($e127 (bvslt v1 (sign_extend[9] ?e64)))
+(flet ($e128 (bvult (zero_extend[8] ?e23) ?e68))
+(flet ($e129 (bvult (zero_extend[1] v3) ?e33))
+(flet ($e130 (= (sign_extend[6] ?e32) ?e26))
+(flet ($e131 (bvsgt ?e84 (zero_extend[13] ?e76)))
+(flet ($e132 (bvslt ?e24 (sign_extend[6] v3)))
+(flet ($e133 (bvugt ?e33 (zero_extend[6] ?e34)))
+(flet ($e134 (bvsgt ?e68 (sign_extend[8] ?e57)))
+(flet ($e135 (bvult ?e84 (zero_extend[11] ?e44)))
+(flet ($e136 (bvsle (zero_extend[10] ?e50) ?e53))
+(flet ($e137 (bvuge v2 (zero_extend[1] ?e68)))
+(flet ($e138 (bvsle (sign_extend[11] ?e44) ?e39))
+(flet ($e139 (bvule (sign_extend[4] ?e13) ?e36))
+(flet ($e140 (bvslt ?e38 (zero_extend[15] ?e64)))
+(flet ($e141 (bvsge (sign_extend[5] ?e64) ?e14))
+(flet ($e142 (bvsge (sign_extend[10] ?e61) ?e65))
+(flet ($e143 (bvslt (zero_extend[3] ?e51) ?e13))
+(flet ($e144 (distinct ?e83 (sign_extend[10] ?e81)))
+(flet ($e145 (bvsle (zero_extend[10] ?e66) ?e83))
+(flet ($e146 (bvule (sign_extend[8] ?e61) ?e83))
+(flet ($e147 (bvule (zero_extend[5] ?e16) ?e55))
+(flet ($e148 (bvuge ?e83 (sign_extend[2] ?e25)))
+(flet ($e149 (bvule ?e50 (sign_extend[2] ?e32)))
+(flet ($e150 (= (sign_extend[1] ?e37) v0))
+(flet ($e151 (bvugt (sign_extend[5] v3) ?e45))
+(flet ($e152 (bvugt ?e55 (sign_extend[8] ?e14)))
+(flet ($e153 (bvsle (zero_extend[13] ?e78) ?e74))
+(flet ($e154 (bvule ?e61 (sign_extend[2] ?e73)))
+(flet ($e155 (bvule ?e22 ?e57))
+(flet ($e156 (bvugt ?e78 ?e32))
+(flet ($e157 (bvuge ?e65 ?e60))
+(flet ($e158 (distinct ?e52 (sign_extend[10] ?e14)))
+(flet ($e159 (bvsge ?e24 ?e43))
+(flet ($e160 (bvsge ?e25 (sign_extend[2] ?e26)))
+(flet ($e161 (bvsgt v0 (zero_extend[9] ?e17)))
+(flet ($e162 (bvult ?e18 ?e72))
+(flet ($e163 (bvsgt ?e53 (sign_extend[3] ?e21)))
+(flet ($e164 (bvsgt ?e77 (sign_extend[2] ?e85)))
+(flet ($e165 (distinct (sign_extend[15] ?e62) ?e38))
+(flet ($e166 (bvsle ?e50 ?e44))
+(flet ($e167 (bvuge ?e39 (zero_extend[1] ?e65)))
+(flet ($e168 (bvsgt v4 (sign_extend[10] ?e85)))
+(flet ($e169 (= (sign_extend[5] ?e68) ?e55))
+(flet ($e170 (= (zero_extend[5] ?e16) ?e67))
+(flet ($e171 (distinct ?e53 (sign_extend[12] ?e32)))
+(flet ($e172 (bvule ?e58 ?e72))
+(flet ($e173 (bvsgt v2 (sign_extend[9] ?e32)))
+(flet ($e174 (bvuge ?e59 (sign_extend[2] ?e15)))
+(flet ($e175 (distinct (zero_extend[8] ?e63) ?e25))
+(flet ($e176 (bvslt (sign_extend[4] ?e59) ?e45))
+(flet ($e177 (bvule v0 (zero_extend[5] ?e25)))
+(flet ($e178 (bvslt ?e25 (zero_extend[4] ?e17)))
+(flet ($e179 (bvule (sign_extend[13] ?e85) ?e70))
+(flet ($e180 (bvsge ?e26 ?e26))
+(flet ($e181 (bvsgt ?e86 (zero_extend[4] ?e54)))
+(flet ($e182 (bvsle (sign_extend[9] ?e57) v2))
+(flet ($e183 (bvuge ?e86 (sign_extend[13] ?e80)))
+(flet ($e184 (distinct ?e38 (sign_extend[2] ?e43)))
+(flet ($e185 (bvugt ?e74 ?e39))
+(flet ($e186 (bvsge ?e56 (sign_extend[3] ?e13)))
+(flet ($e187 (bvsge ?e32 ?e76))
+(flet ($e188 (bvugt ?e36 ?e36))
+(flet ($e189 (distinct (zero_extend[6] ?e17) ?e82))
+(flet ($e190 (bvsle ?e67 (zero_extend[5] ?e59)))
+(flet ($e191 (bvugt ?e51 (zero_extend[2] ?e17)))
+(flet ($e192 (= ?e51 (sign_extend[6] ?e18)))
+(flet ($e193 (bvsge ?e81 ?e32))
+(flet ($e194 (bvuge (zero_extend[4] v2) ?e84))
+(flet ($e195 (= ?e43 (zero_extend[9] ?e17)))
+(flet ($e196 (bvsgt ?e74 (zero_extend[11] ?e77)))
+(flet ($e197 (bvugt ?e83 (sign_extend[10] ?e78)))
+(flet ($e198 (bvsgt ?e25 (zero_extend[1] v3)))
+(flet ($e199 (bvsge (sign_extend[7] ?e32) v3))
+(flet ($e200 (bvuge ?e39 (zero_extend[13] ?e64)))
+(flet ($e201 (bvsgt ?e65 (sign_extend[12] ?e32)))
+(flet ($e202 (bvuge ?e45 ?e60))
+(flet ($e203 (distinct ?e59 (sign_extend[8] ?e62)))
+(flet ($e204 (bvsle (sign_extend[4] ?e47) ?e15))
+(flet ($e205 (bvsle (zero_extend[8] ?e81) ?e16))
+(flet ($e206 (bvugt ?e16 (sign_extend[4] ?e17)))
+(flet ($e207 (bvule ?e77 (zero_extend[2] ?e64)))
+(flet ($e208 (bvule ?e64 ?e19))
+(flet ($e209 (bvule ?e86 ?e43))
+(flet ($e210 (bvsgt (zero_extend[1] ?e60) ?e55))
+(flet ($e211 (bvsle (sign_extend[2] ?e19) ?e47))
+(flet ($e212 (bvuge v0 (sign_extend[1] ?e65)))
+(flet ($e213 (bvult (zero_extend[9] ?e18) ?e13))
+(flet ($e214 (distinct ?e35 (sign_extend[13] ?e32)))
+(flet ($e215 (distinct (zero_extend[2] ?e58) ?e47))
+(flet ($e216 (bvsge (zero_extend[1] ?e56) ?e43))
+(flet ($e217 (bvslt ?e81 ?e19))
+(flet ($e218 (distinct (sign_extend[6] ?e20) ?e35))
+(flet ($e219 (bvsgt (sign_extend[2] ?e67) ?e52))
+(flet ($e220 (bvsgt (zero_extend[2] ?e82) ?e56))
+(flet ($e221 (bvule ?e77 (zero_extend[2] ?e19)))
+(flet ($e222 (bvuge ?e65 (zero_extend[6] ?e51)))
+(flet ($e223 (bvuge ?e47 ?e34))
+(flet ($e224 (bvult ?e38 (sign_extend[15] ?e85)))
+(flet ($e225 (bvsgt v4 (zero_extend[10] ?e78)))
+(flet ($e226 (bvugt (sign_extend[11] ?e17) ?e38))
+(flet ($e227 (bvult (zero_extend[2] ?e69) ?e77))
+(flet ($e228 (bvuge ?e39 (sign_extend[13] ?e63)))
+(flet ($e229 (distinct (zero_extend[13] ?e85) ?e39))
+(flet ($e230 (bvsgt (zero_extend[12] ?e57) ?e60))
+(flet ($e231 (bvugt ?e71 (sign_extend[2] ?e18)))
+(flet ($e232 (= (zero_extend[4] ?e50) ?e26))
+(flet ($e233 (bvuge ?e70 (zero_extend[13] ?e22)))
+(flet ($e234 (bvsgt v2 (sign_extend[9] ?e19)))
+(flet ($e235 (bvuge (sign_extend[13] ?e22) ?e39))
+(flet ($e236 (bvuge (sign_extend[7] ?e51) ?e70))
+(flet ($e237 (bvslt ?e18 ?e73))
+(flet ($e238 (bvult ?e54 (sign_extend[9] ?e78)))
+(flet ($e239 (bvuge v2 (sign_extend[1] ?e25)))
+(flet ($e240 (= ?e21 (sign_extend[9] ?e85)))
+(flet ($e241 (bvsle v3 (zero_extend[7] ?e62)))
+(flet ($e242 (= ?e71 (sign_extend[2] ?e63)))
+(flet ($e243 (bvsgt ?e45 (zero_extend[12] ?e85)))
+(flet ($e244 (bvsle ?e55 (zero_extend[13] ?e48)))
+(flet ($e245 (= ?e30 ?e30))
+(flet ($e246 (and $e97 $e119))
+(flet ($e247 (if_then_else $e217 $e186 $e127))
+(flet ($e248 (iff $e99 $e89))
+(flet ($e249 (implies $e241 $e226))
+(flet ($e250 (implies $e102 $e114))
+(flet ($e251 (if_then_else $e236 $e117 $e184))
+(flet ($e252 (if_then_else $e111 $e138 $e219))
+(flet ($e253 (or $e227 $e135))
+(flet ($e254 (xor $e93 $e221))
+(flet ($e255 (and $e104 $e210))
+(flet ($e256 (if_then_else $e158 $e238 $e172))
+(flet ($e257 (and $e113 $e136))
+(flet ($e258 (not $e190))
+(flet ($e259 (implies $e163 $e94))
+(flet ($e260 (iff $e243 $e228))
+(flet ($e261 (not $e155))
+(flet ($e262 (if_then_else $e147 $e141 $e216))
+(flet ($e263 (xor $e194 $e160))
+(flet ($e264 (or $e103 $e233))
+(flet ($e265 (and $e179 $e140))
+(flet ($e266 (if_then_else $e173 $e198 $e150))
+(flet ($e267 (xor $e167 $e231))
+(flet ($e268 (if_then_else $e223 $e252 $e258))
+(flet ($e269 (iff $e177 $e200))
+(flet ($e270 (or $e245 $e132))
+(flet ($e271 (implies $e148 $e218))
+(flet ($e272 (or $e265 $e195))
+(flet ($e273 (not $e96))
+(flet ($e274 (or $e123 $e182))
+(flet ($e275 (if_then_else $e239 $e193 $e178))
+(flet ($e276 (xor $e249 $e110))
+(flet ($e277 (xor $e251 $e264))
+(flet ($e278 (if_then_else $e181 $e222 $e244))
+(flet ($e279 (if_then_else $e207 $e128 $e152))
+(flet ($e280 (not $e274))
+(flet ($e281 (if_then_else $e92 $e255 $e214))
+(flet ($e282 (iff $e234 $e115))
+(flet ($e283 (xor $e260 $e209))
+(flet ($e284 (and $e191 $e180))
+(flet ($e285 (or $e183 $e95))
+(flet ($e286 (or $e259 $e100))
+(flet ($e287 (if_then_else $e273 $e153 $e101))
+(flet ($e288 (not $e188))
+(flet ($e289 (not $e229))
+(flet ($e290 (iff $e284 $e268))
+(flet ($e291 (or $e269 $e124))
+(flet ($e292 (or $e202 $e145))
+(flet ($e293 (or $e169 $e129))
+(flet ($e294 (iff $e204 $e142))
+(flet ($e295 (and $e271 $e146))
+(flet ($e296 (implies $e185 $e144))
+(flet ($e297 (iff $e118 $e143))
+(flet ($e298 (and $e242 $e263))
+(flet ($e299 (or $e283 $e125))
+(flet ($e300 (xor $e130 $e168))
+(flet ($e301 (if_then_else $e213 $e257 $e293))
+(flet ($e302 (xor $e277 $e280))
+(flet ($e303 (or $e199 $e187))
+(flet ($e304 (and $e109 $e237))
+(flet ($e305 (implies $e165 $e205))
+(flet ($e306 (xor $e91 $e299))
+(flet ($e307 (or $e246 $e175))
+(flet ($e308 (implies $e133 $e302))
+(flet ($e309 (xor $e307 $e174))
+(flet ($e310 (or $e261 $e298))
+(flet ($e311 (iff $e297 $e122))
+(flet ($e312 (xor $e267 $e170))
+(flet ($e313 (iff $e292 $e300))
+(flet ($e314 (implies $e256 $e287))
+(flet ($e315 (and $e201 $e120))
+(flet ($e316 (and $e106 $e304))
+(flet ($e317 (or $e126 $e290))
+(flet ($e318 (implies $e262 $e108))
+(flet ($e319 (and $e107 $e310))
+(flet ($e320 (implies $e220 $e206))
+(flet ($e321 (iff $e196 $e225))
+(flet ($e322 (xor $e295 $e294))
+(flet ($e323 (xor $e87 $e321))
+(flet ($e324 (and $e240 $e151))
+(flet ($e325 (xor $e121 $e161))
+(flet ($e326 (iff $e90 $e319))
+(flet ($e327 (iff $e215 $e248))
+(flet ($e328 (xor $e285 $e288))
+(flet ($e329 (or $e232 $e98))
+(flet ($e330 (not $e317))
+(flet ($e331 (and $e315 $e270))
+(flet ($e332 (iff $e318 $e279))
+(flet ($e333 (or $e328 $e253))
+(flet ($e334 (xor $e276 $e306))
+(flet ($e335 (iff $e88 $e235))
+(flet ($e336 (xor $e211 $e313))
+(flet ($e337 (iff $e286 $e324))
+(flet ($e338 (implies $e266 $e166))
+(flet ($e339 (if_then_else $e250 $e312 $e212))
+(flet ($e340 (not $e131))
+(flet ($e341 (xor $e329 $e275))
+(flet ($e342 (iff $e208 $e289))
+(flet ($e343 (and $e338 $e154))
+(flet ($e344 (not $e149))
+(flet ($e345 (and $e134 $e272))
+(flet ($e346 (implies $e301 $e322))
+(flet ($e347 (and $e346 $e176))
+(flet ($e348 (not $e343))
+(flet ($e349 (xor $e316 $e308))
+(flet ($e350 (or $e281 $e281))
+(flet ($e351 (not $e333))
+(flet ($e352 (implies $e351 $e327))
+(flet ($e353 (xor $e345 $e112))
+(flet ($e354 (xor $e311 $e157))
+(flet ($e355 (implies $e350 $e341))
+(flet ($e356 (implies $e344 $e171))
+(flet ($e357 (implies $e326 $e347))
+(flet ($e358 (implies $e332 $e162))
+(flet ($e359 (iff $e320 $e342))
+(flet ($e360 (iff $e159 $e339))
+(flet ($e361 (if_then_else $e337 $e334 $e358))
+(flet ($e362 (iff $e116 $e224))
+(flet ($e363 (or $e278 $e197))
+(flet ($e364 (if_then_else $e137 $e362 $e296))
+(flet ($e365 (or $e336 $e323))
+(flet ($e366 (and $e356 $e330))
+(flet ($e367 (implies $e230 $e348))
+(flet ($e368 (not $e365))
+(flet ($e369 (iff $e352 $e353))
+(flet ($e370 (or $e189 $e354))
+(flet ($e371 (and $e331 $e139))
+(flet ($e372 (not $e254))
+(flet ($e373 (implies $e370 $e291))
+(flet ($e374 (xor $e349 $e367))
+(flet ($e375 (iff $e305 $e361))
+(flet ($e376 (not $e364))
+(flet ($e377 (if_then_else $e314 $e340 $e309))
+(flet ($e378 (iff $e335 $e357))
+(flet ($e379 (xor $e355 $e366))
+(flet ($e380 (or $e359 $e359))
+(flet ($e381 (implies $e375 $e105))
+(flet ($e382 (if_then_else $e203 $e380 $e164))
+(flet ($e383 (implies $e371 $e325))
+(flet ($e384 (implies $e282 $e360))
+(flet ($e385 (xor $e376 $e373))
+(flet ($e386 (not $e363))
+(flet ($e387 (implies $e247 $e383))
+(flet ($e388 (implies $e378 $e156))
+(flet ($e389 (implies $e382 $e369))
+(flet ($e390 (not $e386))
+(flet ($e391 (not $e389))
+(flet ($e392 (implies $e379 $e384))
+(flet ($e393 (iff $e381 $e192))
+(flet ($e394 (if_then_else $e385 $e388 $e374))
+(flet ($e395 (not $e377))
+(flet ($e396 (if_then_else $e390 $e387 $e387))
+(flet ($e397 (if_then_else $e394 $e396 $e396))
+(flet ($e398 (implies $e303 $e392))
+(flet ($e399 (or $e397 $e398))
+(flet ($e400 (implies $e399 $e368))
+(flet ($e401 (implies $e391 $e372))
+(flet ($e402 (and $e400 $e393))
+(flet ($e403 (if_then_else $e401 $e395 $e402))
+$e403
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/aufbv/fuzz03.delta01.smt b/test/regress/regress0/aufbv/fuzz03.delta01.smt
new file mode 100644
index 0000000..f1abfed
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz03.delta01.smt
@@ -0,0 +1,52 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:extrafuns ((a8 Array[14:12]))
+:extrafuns ((v1 BitVec[5]))
+:status sat
+:formula
+(let (?n1 bv1[14])
+(let (?n2 bv1[12])
+(let (?n3 (store a8 ?n1 ?n2))
+(flet ($n4 (bvugt v1 v1))
+(let (?n5 bv1[1])
+(let (?n6 bv0[1])
+(let (?n7 (ite $n4 ?n5 ?n6))
+(let (?n8 (sign_extend[13] ?n7))
+(let (?n9 (store ?n3 ?n8 ?n2))
+(let (?n10 bv0[12])
+(let (?n11 (store ?n9 ?n1 ?n10))
+(let (?n12 bv0[14])
+(let (?n13 (select ?n3 ?n12))
+(let (?n14 (zero_extend[2] ?n13))
+(let (?n15 (store ?n11 ?n14 ?n10))
+(let (?n16 (select ?n15 ?n12))
+(flet ($n17 (bvsgt ?n16 ?n10))
+(let (?n18 (bvnor ?n2 ?n10))
+(let (?n19 (zero_extend[2] ?n18))
+(let (?n20 (store ?n9 ?n19 ?n10))
+(flet ($n21 (= a8 ?n9))
+(let (?n22 (ite $n21 ?n5 ?n6))
+(let (?n23 (sign_extend[13] ?n22))
+(let (?n24 (select ?n20 ?n23))
+(let (?n25 (zero_extend[2] ?n24))
+(let (?n26 (select ?n3 ?n25))
+(flet ($n27 (bvuge ?n10 ?n26))
+(flet ($n28 (= ?n9 ?n15))
+(flet ($n29 false)
+(flet ($n30 (bvsle ?n24 ?n10))
+(flet ($n31 (if_then_else $n28 $n29 $n30))
+(let (?n32 (sign_extend[11] ?n5))
+(flet ($n33 (= ?n9 ?n20))
+(let (?n34 (ite $n33 ?n5 ?n6))
+(let (?n35 (sign_extend[13] ?n34))
+(let (?n36 (select ?n3 ?n35))
+(let (?n37 (bvor ?n18 ?n36))
+(flet ($n38 (bvsge ?n32 ?n37))
+(flet ($n39 (if_then_else $n31 $n38 $n31))
+(flet ($n40 (implies $n27 $n39))
+(let (?n41 (store a8 ?n12 ?n10))
+(flet ($n42 (= ?n3 ?n41))
+(flet ($n43 (or $n40 $n42))
+(flet ($n44 (implies $n17 $n43))
+$n44
+)))))))))))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/aufbv/fuzz03.smt b/test/regress/regress0/aufbv/fuzz03.smt
new file mode 100644
index 0000000..1bbc671
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz03.smt
@@ -0,0 +1,501 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status sat
+:extrafuns ((v0 BitVec[15]))
+:extrafuns ((v1 BitVec[5]))
+:extrafuns ((a2 Array[2:16]))
+:extrafuns ((a3 Array[5:1]))
+:extrafuns ((a4 Array[16:14]))
+:extrafuns ((a5 Array[12:2]))
+:extrafuns ((a6 Array[1:4]))
+:extrafuns ((a7 Array[12:16]))
+:extrafuns ((a8 Array[14:12]))
+:extrafuns ((a9 Array[7:7]))
+:formula
+(let (?e10 bv0[4])
+(let (?e11 bv519[12])
+(let (?e12 bv15320[15])
+(let (?e13 bv56[6])
+(let (?e14 bv583[13])
+(let (?e15 (ite (bvugt v1 v1) bv1[1] bv0[1]))
+(let (?e16 (rotate_right[8] ?e14))
+(let (?e17 (rotate_left[5] ?e11))
+(let (?e18 (zero_extend[0] ?e13))
+(let (?e19 (rotate_right[2] ?e10))
+(let (?e20 (sign_extend[12] ?e15))
+(let (?e21 (bvnor (zero_extend[8] ?e10) ?e17))
+(let (?e22 (bvxnor v0 (zero_extend[2] ?e20)))
+(let (?e23 (rotate_right[1] ?e19))
+(let (?e24 (bvneg ?e12))
+(let (?e25 (store a8 (zero_extend[2] ?e11) ?e17))
+(let (?e26 (store a5 (sign_extend[8] ?e10) (extract[1:0] ?e16)))
+(let (?e27 (store ?e25 (sign_extend[13] ?e15) (sign_extend[6] ?e18)))
+(let (?e28 (store ?e27 (sign_extend[2] ?e11) (extract[14:3] ?e12)))
+(let (?e29 (store ?e27 (zero_extend[2] ?e21) (extract[12:1] ?e16)))
+(let (?e30 (ite (= ?e27 a8) bv1[1] bv0[1]))
+(let (?e31 (ite (= ?e27 ?e29) bv1[1] bv0[1]))
+(let (?e32 (select a3 (zero_extend[4] ?e15)))
+(let (?e33 (select a4 (sign_extend[1] v0)))
+(let (?e34 (select ?e29 (sign_extend[13] ?e30)))
+(let (?e35 (select ?e25 (sign_extend[13] ?e31)))
+(let (?e36 (select ?e25 (sign_extend[10] ?e23)))
+(let (?e37 (select a8 (sign_extend[10] ?e10)))
+(let (?e38 (store a6 (extract[11:11] ?e11) ?e10))
+(let (?e39 (store ?e28 (zero_extend[2] ?e36) (sign_extend[8] ?e10)))
+(let (?e40 (store a8 (sign_extend[1] ?e20) (zero_extend[8] ?e19)))
+(let (?e41 (ite (= a8 ?e29) bv1[1] bv0[1]))
+(let (?e42 (select ?e39 (sign_extend[1] ?e20)))
+(let (?e43 (select ?e40 (zero_extend[2] ?e17)))
+(let (?e44 (select a2 (extract[8:7] v0)))
+(let (?e45 (store ?e29 (zero_extend[1] ?e16) (extract[11:0] v0)))
+(let (?e46 (select ?e27 (zero_extend[13] ?e32)))
+(let (?e47 (select ?e28 (zero_extend[13] ?e31)))
+(let (?e48 (store a4 (zero_extend[10] ?e18) ?e33))
+(let (?e49 (select ?e25 (zero_extend[2] ?e34)))
+(let (?e50 (ite (bvsge (zero_extend[14] ?e32) ?e22) bv1[1] bv0[1]))
+(let (?e51 (bvand ?e19 ?e10))
+(let (?e52 (ite (bvslt ?e43 (zero_extend[11] ?e50)) bv1[1] bv0[1]))
+(let (?e53 (bvashr ?e11 ?e42))
+(let (?e54 (bvcomp (sign_extend[12] ?e30) ?e14))
+(let (?e55 (bvor ?e13 ?e13))
+(let (?e56 (bvneg ?e21))
+(let (?e57 (repeat[1] ?e56))
+(let (?e58 (bvcomp (zero_extend[3] ?e17) ?e22))
+(let (?e59 (bvnand ?e21 (sign_extend[11] ?e50)))
+(let (?e60 (ite (= bv1[1] (extract[0:0] ?e15)) ?e57 ?e11))
+(let (?e61 (extract[9:9] ?e20))
+(let (?e62 (extract[10:8] v0))
+(let (?e63 (concat ?e47 ?e41))
+(let (?e64 (extract[8:7] ?e33))
+(let (?e65 (bvand (sign_extend[1] ?e37) ?e16))
+(let (?e66 (ite (= ?e44 (sign_extend[15] ?e58)) bv1[1] bv0[1]))
+(let (?e67 (bvashr (zero_extend[7] v1) ?e34))
+(let (?e68 (ite (bvuge ?e59 (zero_extend[11] ?e58)) bv1[1] bv0[1]))
+(let (?e69 (bvor ?e35 ?e21))
+(let (?e70 (bvashr (sign_extend[8] ?e23) ?e36))
+(let (?e71 (sign_extend[3] ?e51))
+(let (?e72 (bvxnor ?e13 (zero_extend[5] ?e50)))
+(let (?e73 (rotate_right[5] ?e34))
+(let (?e74 (bvxnor ?e41 ?e68))
+(let (?e75 (rotate_right[0] ?e12))
+(let (?e76 (ite (bvslt (zero_extend[14] ?e31) ?e75) bv1[1] bv0[1]))
+(let (?e77 (ite (bvuge ?e18 ?e72) bv1[1] bv0[1]))
+(let (?e78 (ite (bvsle ?e60 (zero_extend[10] ?e64)) bv1[1] bv0[1]))
+(let (?e79 (ite (bvugt (zero_extend[11] ?e66) ?e67) bv1[1] bv0[1]))
+(let (?e80 (ite (bvult (zero_extend[11] ?e31) ?e43) bv1[1] bv0[1]))
+(let (?e81 (bvshl ?e49 (sign_extend[11] ?e41)))
+(let (?e82 (ite (bvsle (sign_extend[1] ?e37) ?e20) bv1[1] bv0[1]))
+(let (?e83 (bvnot ?e30))
+(let (?e84 (bvmul ?e36 ?e42))
+(let (?e85 (bvand ?e46 (sign_extend[11] ?e31)))
+(let (?e86 (bvadd ?e12 (sign_extend[9] ?e18)))
+(let (?e87 (bvshl ?e35 ?e36))
+(let (?e88 (bvxor ?e73 ?e17))
+(let (?e89 (ite (= bv1[1] (extract[3:3] ?e22)) ?e70 (sign_extend[11] ?e82)))
+(let (?e90 (bvmul ?e14 (sign_extend[12] ?e30)))
+(let (?e91 (bvnor ?e90 (sign_extend[11] ?e64)))
+(let (?e92 (bvnand ?e37 ?e70))
+(let (?e93 (ite (= ?e65 (zero_extend[1] ?e87)) bv1[1] bv0[1]))
+(let (?e94 (sign_extend[0] ?e64))
+(let (?e95 (bvnot ?e24))
+(flet ($e96 (bvslt (zero_extend[11] ?e52) ?e67))
+(flet ($e97 (distinct ?e21 ?e67))
+(flet ($e98 (distinct (sign_extend[5] ?e93) ?e18))
+(flet ($e99 (distinct (zero_extend[3] ?e42) ?e95))
+(flet ($e100 (bvugt (zero_extend[6] ?e72) ?e17))
+(flet ($e101 (= ?e43 (zero_extend[11] ?e93)))
+(flet ($e102 (bvslt (zero_extend[11] ?e58) ?e85))
+(flet ($e103 (bvugt (sign_extend[14] ?e74) ?e22))
+(flet ($e104 (bvule (zero_extend[6] ?e76) ?e71))
+(flet ($e105 (bvsgt (zero_extend[3] ?e79) ?e23))
+(flet ($e106 (bvsge (zero_extend[3] ?e58) ?e10))
+(flet ($e107 (= ?e59 ?e60))
+(flet ($e108 (bvule (sign_extend[11] ?e15) ?e87))
+(flet ($e109 (bvslt ?e63 (zero_extend[10] ?e62)))
+(flet ($e110 (bvult ?e90 (sign_extend[12] ?e31)))
+(flet ($e111 (distinct (zero_extend[5] ?e74) ?e13))
+(flet ($e112 (distinct ?e74 ?e74))
+(flet ($e113 (distinct ?e20 (sign_extend[7] ?e72)))
+(flet ($e114 (bvsle ?e82 ?e68))
+(flet ($e115 (bvuge ?e14 (sign_extend[1] ?e67)))
+(flet ($e116 (distinct ?e84 ?e59))
+(flet ($e117 (bvsle ?e46 ?e60))
+(flet ($e118 (bvsle ?e15 ?e74))
+(flet ($e119 (bvslt v0 (zero_extend[3] ?e88)))
+(flet ($e120 (bvule (zero_extend[5] ?e58) ?e13))
+(flet ($e121 (bvugt (sign_extend[8] ?e19) ?e47))
+(flet ($e122 (bvult ?e63 (sign_extend[1] ?e87)))
+(flet ($e123 (bvslt ?e91 (zero_extend[12] ?e66)))
+(flet ($e124 (bvule (sign_extend[11] ?e80) ?e36))
+(flet ($e125 (bvule ?e60 ?e42))
+(flet ($e126 (bvuge (sign_extend[11] ?e52) ?e11))
+(flet ($e127 (bvslt ?e22 (zero_extend[2] ?e63)))
+(flet ($e128 (bvsge (zero_extend[12] ?e15) ?e90))
+(flet ($e129 (bvsle (zero_extend[1] ?e37) ?e16))
+(flet ($e130 (bvslt ?e34 (zero_extend[11] ?e79)))
+(flet ($e131 (bvuge (sign_extend[11] ?e32) ?e67))
+(flet ($e132 (distinct (sign_extend[13] ?e54) ?e33))
+(flet ($e133 (bvuge ?e61 ?e76))
+(flet ($e134 (bvsge ?e62 (sign_extend[2] ?e32)))
+(flet ($e135 (bvsgt ?e88 (zero_extend[11] ?e50)))
+(flet ($e136 (distinct ?e56 (sign_extend[8] ?e10)))
+(flet ($e137 (bvslt ?e61 ?e80))
+(flet ($e138 (bvsle (zero_extend[12] ?e82) ?e65))
+(flet ($e139 (bvuge ?e11 (sign_extend[11] ?e82)))
+(flet ($e140 (bvslt (sign_extend[6] ?e55) ?e67))
+(flet ($e141 (bvule ?e95 (zero_extend[3] ?e81)))
+(flet ($e142 (bvult ?e34 (sign_extend[6] ?e55)))
+(flet ($e143 (bvuge (sign_extend[14] ?e52) ?e86))
+(flet ($e144 (bvsge ?e92 ?e60))
+(flet ($e145 (bvule ?e13 (sign_extend[1] v1)))
+(flet ($e146 (distinct (sign_extend[3] ?e32) ?e23))
+(flet ($e147 (distinct ?e69 ?e17))
+(flet ($e148 (bvult (zero_extend[11] ?e54) ?e53))
+(flet ($e149 (distinct (sign_extend[8] ?e10) ?e36))
+(flet ($e150 (bvuge (zero_extend[1] ?e58) ?e94))
+(flet ($e151 (= ?e47 (zero_extend[11] ?e83)))
+(flet ($e152 (bvsgt ?e42 (zero_extend[11] ?e32)))
+(flet ($e153 (distinct ?e91 (sign_extend[1] ?e87)))
+(flet ($e154 (bvugt (zero_extend[6] ?e13) ?e87))
+(flet ($e155 (bvsge (sign_extend[11] ?e76) ?e69))
+(flet ($e156 (bvsge ?e69 ?e53))
+(flet ($e157 (bvugt ?e11 ?e46))
+(flet ($e158 (distinct (sign_extend[5] ?e71) ?e85))
+(flet ($e159 (bvuge ?e75 (zero_extend[14] ?e31)))
+(flet ($e160 (bvugt (zero_extend[11] ?e76) ?e42))
+(flet ($e161 (bvsgt ?e12 (zero_extend[14] ?e31)))
+(flet ($e162 (bvule ?e66 ?e82))
+(flet ($e163 (bvsle ?e86 (zero_extend[11] ?e51)))
+(flet ($e164 (distinct ?e85 (sign_extend[11] ?e58)))
+(flet ($e165 (bvugt ?e14 (sign_extend[1] ?e56)))
+(flet ($e166 (bvslt (zero_extend[8] ?e23) ?e36))
+(flet ($e167 (bvuge ?e69 ?e60))
+(flet ($e168 (bvult (sign_extend[12] ?e62) ?e24))
+(flet ($e169 (bvsle (zero_extend[4] ?e81) ?e44))
+(flet ($e170 (bvslt (sign_extend[3] ?e58) ?e51))
+(flet ($e171 (bvuge (sign_extend[4] ?e73) ?e44))
+(flet ($e172 (bvult ?e37 (zero_extend[8] ?e51)))
+(flet ($e173 (bvsle (sign_extend[1] ?e81) ?e90))
+(flet ($e174 (bvslt ?e49 (zero_extend[7] v1)))
+(flet ($e175 (bvsge (sign_extend[6] ?e93) ?e71))
+(flet ($e176 (bvuge (zero_extend[15] ?e61) ?e44))
+(flet ($e177 (bvslt ?e37 (zero_extend[5] ?e71)))
+(flet ($e178 (bvuge (sign_extend[1] ?e10) v1))
+(flet ($e179 (bvslt (zero_extend[3] ?e89) ?e22))
+(flet ($e180 (bvuge (zero_extend[12] ?e77) ?e65))
+(flet ($e181 (bvsle (sign_extend[9] ?e13) ?e12))
+(flet ($e182 (bvsle ?e87 (zero_extend[10] ?e64)))
+(flet ($e183 (= (zero_extend[3] ?e91) ?e44))
+(flet ($e184 (bvule ?e65 (sign_extend[9] ?e19)))
+(flet ($e185 (bvsle ?e24 (zero_extend[3] ?e67)))
+(flet ($e186 (bvslt ?e91 (sign_extend[1] ?e67)))
+(flet ($e187 (bvuge ?e42 ?e56))
+(flet ($e188 (bvult ?e85 (zero_extend[11] ?e83)))
+(flet ($e189 (bvule ?e47 ?e92))
+(flet ($e190 (= (zero_extend[1] ?e92) ?e20))
+(flet ($e191 (bvuge (zero_extend[8] ?e51) ?e36))
+(flet ($e192 (bvsgt ?e12 (zero_extend[9] ?e18)))
+(flet ($e193 (bvule (sign_extend[12] ?e94) ?e33))
+(flet ($e194 (distinct ?e46 (zero_extend[11] ?e31)))
+(flet ($e195 (bvult (sign_extend[13] ?e94) ?e86))
+(flet ($e196 (bvslt ?e12 (sign_extend[14] ?e80)))
+(flet ($e197 (bvsgt ?e13 (zero_extend[5] ?e58)))
+(flet ($e198 (bvule (sign_extend[3] ?e53) ?e12))
+(flet ($e199 (bvslt ?e86 (zero_extend[3] ?e36)))
+(flet ($e200 (bvslt (zero_extend[11] ?e19) ?e86))
+(flet ($e201 (distinct (zero_extend[3] ?e73) ?e75))
+(flet ($e202 (bvuge ?e88 ?e85))
+(flet ($e203 (bvult (sign_extend[14] ?e31) ?e75))
+(flet ($e204 (bvugt ?e90 (sign_extend[7] ?e13)))
+(flet ($e205 (bvsle (zero_extend[1] ?e36) ?e91))
+(flet ($e206 (bvuge ?e56 ?e49))
+(flet ($e207 (bvugt ?e37 (zero_extend[11] ?e52)))
+(flet ($e208 (bvsgt ?e42 (zero_extend[11] ?e82)))
+(flet ($e209 (bvugt ?e21 ?e21))
+(flet ($e210 (bvsle ?e60 ?e85))
+(flet ($e211 (bvugt (zero_extend[11] ?e30) ?e35))
+(flet ($e212 (bvsle ?e17 ?e89))
+(flet ($e213 (bvsgt ?e42 ?e37))
+(flet ($e214 (bvsle ?e34 (sign_extend[8] ?e51)))
+(flet ($e215 (bvugt (zero_extend[3] ?e83) ?e23))
+(flet ($e216 (bvuge ?e64 (zero_extend[1] ?e79)))
+(flet ($e217 (= ?e22 (sign_extend[3] ?e70)))
+(flet ($e218 (= ?e67 (zero_extend[11] ?e78)))
+(flet ($e219 (= ?e55 (zero_extend[5] ?e79)))
+(flet ($e220 (= (sign_extend[11] ?e19) ?e95))
+(flet ($e221 (distinct (zero_extend[3] ?e59) ?e95))
+(flet ($e222 (bvslt (sign_extend[5] ?e54) ?e18))
+(flet ($e223 (bvslt ?e92 ?e67))
+(flet ($e224 (distinct (sign_extend[3] ?e85) ?e24))
+(flet ($e225 (bvult ?e36 (zero_extend[11] ?e82)))
+(flet ($e226 (distinct (zero_extend[11] ?e54) ?e46))
+(flet ($e227 (bvsgt ?e95 (sign_extend[9] ?e72)))
+(flet ($e228 (bvslt ?e90 (zero_extend[12] ?e15)))
+(flet ($e229 (bvuge ?e44 (zero_extend[4] ?e46)))
+(flet ($e230 (bvult ?e57 ?e43))
+(flet ($e231 (bvuge (zero_extend[14] ?e30) ?e24))
+(flet ($e232 (distinct ?e43 ?e73))
+(flet ($e233 (bvsge (sign_extend[2] ?e61) ?e62))
+(flet ($e234 (bvslt ?e56 ?e21))
+(flet ($e235 (bvuge ?e63 (sign_extend[9] ?e10)))
+(flet ($e236 (bvuge ?e95 ?e75))
+(flet ($e237 (bvult (sign_extend[3] ?e74) ?e23))
+(flet ($e238 (bvuge (zero_extend[3] ?e85) ?e86))
+(flet ($e239 (bvult (sign_extend[6] ?e66) ?e71))
+(flet ($e240 (= ?e86 (sign_extend[14] ?e77)))
+(flet ($e241 (bvult (zero_extend[12] ?e52) ?e14))
+(flet ($e242 (distinct (sign_extend[8] ?e19) ?e35))
+(flet ($e243 (bvsgt ?e42 (zero_extend[9] ?e62)))
+(flet ($e244 (bvsgt (sign_extend[2] ?e65) ?e12))
+(flet ($e245 (bvslt ?e16 ?e14))
+(flet ($e246 (bvslt (zero_extend[5] ?e74) ?e55))
+(flet ($e247 (= ?e33 (zero_extend[13] ?e66)))
+(flet ($e248 (bvsle (sign_extend[14] ?e79) ?e95))
+(flet ($e249 (distinct ?e85 ?e70))
+(flet ($e250 (bvsgt ?e88 (sign_extend[6] ?e55)))
+(flet ($e251 (= ?e49 (sign_extend[6] ?e13)))
+(flet ($e252 (bvsle (zero_extend[3] ?e36) ?e24))
+(flet ($e253 (bvugt ?e35 (sign_extend[11] ?e15)))
+(flet ($e254 (= (sign_extend[9] ?e72) ?e75))
+(flet ($e255 (bvsge (sign_extend[5] ?e30) ?e55))
+(flet ($e256 (bvsle (sign_extend[1] ?e92) ?e90))
+(flet ($e257 (bvult ?e91 (zero_extend[12] ?e80)))
+(flet ($e258 (bvugt ?e11 ?e35))
+(flet ($e259 (bvult (sign_extend[8] ?e10) ?e81))
+(flet ($e260 (bvsge ?e85 (zero_extend[6] ?e18)))
+(flet ($e261 (bvslt ?e21 (zero_extend[8] ?e23)))
+(flet ($e262 (bvuge ?e10 (sign_extend[3] ?e52)))
+(flet ($e263 (distinct ?e51 ?e19))
+(flet ($e264 (bvuge (zero_extend[5] ?e71) ?e43))
+(flet ($e265 (bvuge (zero_extend[3] ?e58) ?e10))
+(flet ($e266 (bvuge (zero_extend[9] ?e62) ?e89))
+(flet ($e267 (bvsge ?e46 (zero_extend[10] ?e64)))
+(flet ($e268 (bvsgt ?e95 (zero_extend[3] ?e21)))
+(flet ($e269 (distinct ?e22 (sign_extend[14] ?e30)))
+(flet ($e270 (distinct ?e73 ?e37))
+(flet ($e271 (bvsge (sign_extend[2] ?e34) ?e33))
+(flet ($e272 (bvsgt ?e35 ?e11))
+(flet ($e273 (bvsle ?e60 (sign_extend[11] ?e52)))
+(flet ($e274 (bvsgt (zero_extend[8] ?e23) ?e11))
+(flet ($e275 (bvsgt ?e85 (sign_extend[11] ?e93)))
+(flet ($e276 (= (sign_extend[6] ?e77) ?e71))
+(flet ($e277 (bvule ?e54 ?e68))
+(flet ($e278 (bvule (sign_extend[6] ?e18) ?e49))
+(flet ($e279 (bvslt (zero_extend[4] ?e73) ?e44))
+(flet ($e280 (bvule ?e47 ?e57))
+(flet ($e281 (distinct (zero_extend[1] ?e51) v1))
+(flet ($e282 (bvult (zero_extend[12] ?e77) ?e90))
+(flet ($e283 (bvuge v0 (zero_extend[14] ?e76)))
+(flet ($e284 (= (zero_extend[5] ?e74) ?e18))
+(flet ($e285 (bvugt ?e21 ?e57))
+(flet ($e286 (distinct (sign_extend[2] ?e64) ?e10))
+(flet ($e287 (= (zero_extend[3] ?e64) v1))
+(flet ($e288 (bvsge ?e14 ?e20))
+(flet ($e289 (bvule (zero_extend[3] ?e53) ?e86))
+(flet ($e290 (= ?e73 (sign_extend[11] ?e31)))
+(flet ($e291 (bvsge (zero_extend[12] ?e41) ?e90))
+(flet ($e292 (= ?e27 ?e39))
+(flet ($e293 (= ?e40 ?e25))
+(flet ($e294 (iff $e286 $e100))
+(flet ($e295 (and $e156 $e231))
+(flet ($e296 (implies $e288 $e123))
+(flet ($e297 (not $e243))
+(flet ($e298 (iff $e238 $e146))
+(flet ($e299 (not $e295))
+(flet ($e300 (implies $e107 $e121))
+(flet ($e301 (xor $e250 $e120))
+(flet ($e302 (and $e209 $e296))
+(flet ($e303 (implies $e178 $e167))
+(flet ($e304 (or $e195 $e131))
+(flet ($e305 (implies $e128 $e148))
+(flet ($e306 (or $e223 $e214))
+(flet ($e307 (iff $e136 $e180))
+(flet ($e308 (if_then_else $e132 $e188 $e282))
+(flet ($e309 (not $e101))
+(flet ($e310 (if_then_else $e140 $e142 $e305))
+(flet ($e311 (xor $e242 $e116))
+(flet ($e312 (if_then_else $e114 $e187 $e279))
+(flet ($e313 (implies $e183 $e204))
+(flet ($e314 (iff $e289 $e160))
+(flet ($e315 (not $e97))
+(flet ($e316 (iff $e252 $e273))
+(flet ($e317 (if_then_else $e297 $e245 $e232))
+(flet ($e318 (not $e235))
+(flet ($e319 (xor $e301 $e258))
+(flet ($e320 (or $e254 $e177))
+(flet ($e321 (implies $e230 $e202))
+(flet ($e322 (if_then_else $e175 $e244 $e138))
+(flet ($e323 (and $e302 $e163))
+(flet ($e324 (implies $e113 $e300))
+(flet ($e325 (and $e322 $e211))
+(flet ($e326 (iff $e124 $e278))
+(flet ($e327 (if_then_else $e185 $e221 $e229))
+(flet ($e328 (or $e280 $e251))
+(flet ($e329 (xor $e106 $e226))
+(flet ($e330 (iff $e303 $e308))
+(flet ($e331 (not $e237))
+(flet ($e332 (xor $e111 $e225))
+(flet ($e333 (implies $e155 $e207))
+(flet ($e334 (and $e269 $e317))
+(flet ($e335 (xor $e108 $e133))
+(flet ($e336 (iff $e158 $e172))
+(flet ($e337 (if_then_else $e159 $e323 $e103))
+(flet ($e338 (and $e186 $e104))
+(flet ($e339 (not $e179))
+(flet ($e340 (xor $e304 $e337))
+(flet ($e341 (or $e272 $e293))
+(flet ($e342 (and $e115 $e255))
+(flet ($e343 (and $e198 $e102))
+(flet ($e344 (and $e262 $e343))
+(flet ($e345 (iff $e330 $e336))
+(flet ($e346 (iff $e149 $e122))
+(flet ($e347 (or $e119 $e339))
+(flet ($e348 (or $e222 $e137))
+(flet ($e349 (implies $e319 $e345))
+(flet ($e350 (or $e299 $e117))
+(flet ($e351 (and $e126 $e271))
+(flet ($e352 (xor $e212 $e341))
+(flet ($e353 (if_then_else $e145 $e320 $e265))
+(flet ($e354 (if_then_else $e249 $e268 $e147))
+(flet ($e355 (xor $e331 $e130))
+(flet ($e356 (iff $e274 $e213))
+(flet ($e357 (iff $e246 $e125))
+(flet ($e358 (not $e200))
+(flet ($e359 (if_then_else $e199 $e327 $e355))
+(flet ($e360 (implies $e310 $e354))
+(flet ($e361 (and $e333 $e96))
+(flet ($e362 (and $e318 $e227))
+(flet ($e363 (implies $e321 $e189))
+(flet ($e364 (iff $e247 $e261))
+(flet ($e365 (iff $e351 $e353))
+(flet ($e366 (not $e143))
+(flet ($e367 (and $e256 $e193))
+(flet ($e368 (iff $e340 $e335))
+(flet ($e369 (xor $e118 $e166))
+(flet ($e370 (xor $e357 $e266))
+(flet ($e371 (or $e153 $e157))
+(flet ($e372 (if_then_else $e165 $e240 $e344))
+(flet ($e373 (or $e196 $e342))
+(flet ($e374 (or $e350 $e338))
+(flet ($e375 (not $e315))
+(flet ($e376 (or $e361 $e253))
+(flet ($e377 (xor $e169 $e348))
+(flet ($e378 (not $e373))
+(flet ($e379 (implies $e263 $e311))
+(flet ($e380 (implies $e324 $e135))
+(flet ($e381 (and $e233 $e217))
+(flet ($e382 (implies $e190 $e203))
+(flet ($e383 (if_then_else $e248 $e309 $e224))
+(flet ($e384 (implies $e379 $e349))
+(flet ($e385 (xor $e382 $e292))
+(flet ($e386 (if_then_else $e385 $e257 $e306))
+(flet ($e387 (implies $e380 $e312))
+(flet ($e388 (and $e287 $e161))
+(flet ($e389 (or $e307 $e174))
+(flet ($e390 (implies $e372 $e374))
+(flet ($e391 (implies $e181 $e182))
+(flet ($e392 (iff $e228 $e216))
+(flet ($e393 (and $e141 $e291))
+(flet ($e394 (implies $e367 $e316))
+(flet ($e395 (or $e219 $e368))
+(flet ($e396 (iff $e197 $e236))
+(flet ($e397 (implies $e220 $e326))
+(flet ($e398 (implies $e294 $e260))
+(flet ($e399 (xor $e290 $e285))
+(flet ($e400 (implies $e154 $e154))
+(flet ($e401 (iff $e366 $e396))
+(flet ($e402 (or $e105 $e110))
+(flet ($e403 (xor $e283 $e325))
+(flet ($e404 (iff $e394 $e239))
+(flet ($e405 (iff $e403 $e358))
+(flet ($e406 (xor $e352 $e194))
+(flet ($e407 (or $e378 $e377))
+(flet ($e408 (iff $e388 $e281))
+(flet ($e409 (or $e383 $e171))
+(flet ($e410 (if_then_else $e360 $e402 $e234))
+(flet ($e411 (or $e150 $e264))
+(flet ($e412 (or $e387 $e184))
+(flet ($e413 (if_then_else $e314 $e134 $e392))
+(flet ($e414 (if_then_else $e164 $e267 $e139))
+(flet ($e415 (not $e206))
+(flet ($e416 (not $e277))
+(flet ($e417 (if_then_else $e384 $e276 $e109))
+(flet ($e418 (iff $e389 $e329))
+(flet ($e419 (implies $e410 $e176))
+(flet ($e420 (implies $e418 $e191))
+(flet ($e421 (and $e334 $e170))
+(flet ($e422 (and $e364 $e259))
+(flet ($e423 (and $e412 $e275))
+(flet ($e424 (iff $e404 $e419))
+(flet ($e425 (or $e407 $e129))
+(flet ($e426 (and $e397 $e270))
+(flet ($e427 (not $e313))
+(flet ($e428 (not $e401))
+(flet ($e429 (xor $e152 $e347))
+(flet ($e430 (not $e144))
+(flet ($e431 (and $e201 $e425))
+(flet ($e432 (iff $e431 $e393))
+(flet ($e433 (not $e284))
+(flet ($e434 (or $e328 $e417))
+(flet ($e435 (or $e162 $e428))
+(flet ($e436 (iff $e430 $e390))
+(flet ($e437 (or $e99 $e381))
+(flet ($e438 (if_then_else $e395 $e437 $e356))
+(flet ($e439 (xor $e112 $e432))
+(flet ($e440 (not $e409))
+(flet ($e441 (xor $e415 $e413))
+(flet ($e442 (iff $e359 $e168))
+(flet ($e443 (and $e408 $e436))
+(flet ($e444 (not $e424))
+(flet ($e445 (iff $e414 $e218))
+(flet ($e446 (iff $e405 $e435))
+(flet ($e447 (if_then_else $e440 $e429 $e208))
+(flet ($e448 (not $e439))
+(flet ($e449 (if_then_else $e443 $e416 $e447))
+(flet ($e450 (if_then_else $e438 $e448 $e369))
+(flet ($e451 (xor $e445 $e441))
+(flet ($e452 (and $e375 $e423))
+(flet ($e453 (iff $e451 $e452))
+(flet ($e454 (if_then_else $e363 $e427 $e298))
+(flet ($e455 (iff $e210 $e362))
+(flet ($e456 (implies $e127 $e173))
+(flet ($e457 (not $e192))
+(flet ($e458 (implies $e215 $e411))
+(flet ($e459 (implies $e453 $e433))
+(flet ($e460 (and $e400 $e450))
+(flet ($e461 (iff $e205 $e241))
+(flet ($e462 (and $e399 $e454))
+(flet ($e463 (xor $e98 $e462))
+(flet ($e464 (if_then_else $e370 $e420 $e398))
+(flet ($e465 (xor $e458 $e391))
+(flet ($e466 (and $e365 $e456))
+(flet ($e467 (implies $e455 $e446))
+(flet ($e468 (and $e459 $e442))
+(flet ($e469 (xor $e371 $e457))
+(flet ($e470 (and $e422 $e332))
+(flet ($e471 (implies $e444 $e465))
+(flet ($e472 (not $e421))
+(flet ($e473 (implies $e460 $e406))
+(flet ($e474 (iff $e449 $e469))
+(flet ($e475 (or $e426 $e464))
+(flet ($e476 (and $e376 $e434))
+(flet ($e477 (not $e467))
+(flet ($e478 (not $e475))
+(flet ($e479 (xor $e477 $e346))
+(flet ($e480 (or $e470 $e478))
+(flet ($e481 (implies $e480 $e480))
+(flet ($e482 (and $e481 $e479))
+(flet ($e483 (if_then_else $e461 $e482 $e463))
+(flet ($e484 (and $e386 $e466))
+(flet ($e485 (iff $e483 $e474))
+(flet ($e486 (if_then_else $e484 $e476 $e484))
+(flet ($e487 (iff $e471 $e486))
+(flet ($e488 (not $e151))
+(flet ($e489 (if_then_else $e472 $e488 $e485))
+(flet ($e490 (implies $e468 $e487))
+(flet ($e491 (implies $e473 $e473))
+(flet ($e492 (or $e491 $e490))
+(flet ($e493 (implies $e489 $e492))
+$e493
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/aufbv/fuzz04.delta01.smt b/test/regress/regress0/aufbv/fuzz04.delta01.smt
new file mode 100644
index 0000000..4e1cb5a
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz04.delta01.smt
@@ -0,0 +1,17 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:extrafuns ((v0 BitVec[12]))
+:extrafuns ((v1 BitVec[11]))
+:extrafuns ((a3 Array[1:6]))
+:status sat
+:formula
+(let (?n1 bv0[6])
+(let (?n2 bv0[1])
+(let (?n3 (store a3 ?n2 ?n1))
+(let (?n4 (sign_extend[1] v1))
+(let (?n5 (bvor ?n4 v0))
+(let (?n6 (extract[11:11] ?n5))
+(let (?n7 (select ?n3 ?n6))
+(flet ($n8 (bvult ?n1 ?n7))
+$n8
+)))))))))
diff --git a/test/regress/regress0/aufbv/fuzz04.smt b/test/regress/regress0/aufbv/fuzz04.smt
new file mode 100644
index 0000000..2d7ed9d
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz04.smt
@@ -0,0 +1,119 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status sat
+:extrafuns ((v0 BitVec[12]))
+:extrafuns ((v1 BitVec[11]))
+:extrafuns ((a2 Array[1:14]))
+:extrafuns ((a3 Array[1:6]))
+:formula
+(let (?e4 bv80[7])
+(let (?e5 (bvor (sign_extend[1] v1) v0))
+(let (?e6 (rotate_right[8] ?e5))
+(let (?e7 (bvsmod (sign_extend[4] ?e4) v1))
+(let (?e8 (store a3 (extract[7:7] v0) (extract[5:0] ?e6)))
+(let (?e9 (store ?e8 (extract[5:5] ?e4) (extract[8:3] ?e6)))
+(let (?e10 (select a3 (extract[4:4] ?e5)))
+(let (?e11 (select ?e8 (extract[3:3] ?e7)))
+(let (?e12 (store ?e8 (extract[5:5] ?e6) (extract[8:3] ?e6)))
+(let (?e13 (select ?e9 (extract[11:11] ?e5)))
+(let (?e14 (select ?e12 (extract[5:5] ?e6)))
+(let (?e15 (bvashr ?e13 ?e10))
+(let (?e16 (zero_extend[9] ?e11))
+(let (?e17 (ite (bvslt v0 ?e5) bv1[1] bv0[1]))
+(let (?e18 (zero_extend[0] ?e4))
+(let (?e19 (bvxor ?e16 (zero_extend[3] ?e5)))
+(let (?e20 (ite (bvuge (sign_extend[3] ?e6) ?e16) bv1[1] bv0[1]))
+(let (?e21 (repeat[1] v1))
+(let (?e22 (bvor (zero_extend[5] ?e10) v1))
+(let (?e23 (rotate_right[0] ?e20))
+(let (?e24 (bvurem (zero_extend[9] ?e13) ?e16))
+(let (?e25 (ite (bvsle (sign_extend[6] ?e14) ?e5) bv1[1] bv0[1]))
+(let (?e26 (bvsdiv (sign_extend[4] ?e7) ?e24))
+(flet ($e27 (bvuge ?e16 (zero_extend[4] ?e7)))
+(flet ($e28 (bvsle ?e21 (zero_extend[5] ?e11)))
+(flet ($e29 (bvsgt ?e24 (zero_extend[14] ?e25)))
+(flet ($e30 (bvsge ?e4 (sign_extend[6] ?e17)))
+(flet ($e31 (bvult (zero_extend[14] ?e20) ?e16))
+(flet ($e32 (bvslt (sign_extend[10] ?e25) v1))
+(flet ($e33 (= (zero_extend[8] ?e4) ?e24))
+(flet ($e34 (bvule (sign_extend[3] ?e5) ?e26))
+(flet ($e35 (bvsge ?e18 (zero_extend[6] ?e20)))
+(flet ($e36 (distinct (sign_extend[5] ?e11) ?e21))
+(flet ($e37 (bvsge ?e24 ?e19))
+(flet ($e38 (bvult (zero_extend[5] ?e14) ?e7))
+(flet ($e39 (bvsge (sign_extend[11] ?e25) v0))
+(flet ($e40 (bvult (sign_extend[11] ?e25) ?e6))
+(flet ($e41 (bvuge v1 (sign_extend[5] ?e11)))
+(flet ($e42 (distinct (zero_extend[4] ?e21) ?e24))
+(flet ($e43 (bvule ?e26 (sign_extend[3] v0)))
+(flet ($e44 (bvult ?e19 (zero_extend[4] v1)))
+(flet ($e45 (bvuge (zero_extend[6] ?e11) ?e5))
+(flet ($e46 (distinct (sign_extend[8] ?e18) ?e26))
+(flet ($e47 (bvuge ?e26 (zero_extend[9] ?e13)))
+(flet ($e48 (bvult v0 (sign_extend[1] v1)))
+(flet ($e49 (bvugt ?e22 (sign_extend[5] ?e14)))
+(flet ($e50 (bvult ?e26 (sign_extend[14] ?e17)))
+(flet ($e51 (bvsge ?e4 (zero_extend[1] ?e15)))
+(flet ($e52 (bvsle ?e24 (zero_extend[3] ?e6)))
+(flet ($e53 (bvsgt ?e4 (sign_extend[1] ?e10)))
+(flet ($e54 (bvuge ?e14 (sign_extend[5] ?e25)))
+(flet ($e55 (bvult (sign_extend[4] ?e22) ?e19))
+(flet ($e56 (bvule ?e5 (sign_extend[1] ?e7)))
+(flet ($e57 (bvult (sign_extend[5] ?e17) ?e13))
+(flet ($e58 (bvsgt (zero_extend[6] ?e17) ?e18))
+(flet ($e59 (bvsgt ?e16 (zero_extend[3] ?e5)))
+(flet ($e60 (bvult ?e4 (sign_extend[6] ?e23)))
+(flet ($e61 (not $e51))
+(flet ($e62 (not $e33))
+(flet ($e63 (xor $e55 $e55))
+(flet ($e64 (not $e52))
+(flet ($e65 (or $e57 $e28))
+(flet ($e66 (if_then_else $e65 $e37 $e49))
+(flet ($e67 (if_then_else $e58 $e59 $e54))
+(flet ($e68 (if_then_else $e34 $e45 $e27))
+(flet ($e69 (xor $e40 $e60))
+(flet ($e70 (not $e31))
+(flet ($e71 (and $e63 $e32))
+(flet ($e72 (or $e56 $e68))
+(flet ($e73 (not $e41))
+(flet ($e74 (iff $e50 $e50))
+(flet ($e75 (and $e39 $e39))
+(flet ($e76 (and $e53 $e62))
+(flet ($e77 (not $e47))
+(flet ($e78 (xor $e71 $e66))
+(flet ($e79 (iff $e46 $e72))
+(flet ($e80 (xor $e79 $e29))
+(flet ($e81 (not $e75))
+(flet ($e82 (xor $e35 $e48))
+(flet ($e83 (or $e77 $e42))
+(flet ($e84 (iff $e44 $e30))
+(flet ($e85 (or $e43 $e76))
+(flet ($e86 (and $e36 $e85))
+(flet ($e87 (or $e86 $e83))
+(flet ($e88 (if_then_else $e73 $e64 $e82))
+(flet ($e89 (xor $e78 $e74))
+(flet ($e90 (implies $e84 $e38))
+(flet ($e91 (and $e80 $e80))
+(flet ($e92 (not $e70))
+(flet ($e93 (if_then_else $e89 $e67 $e87))
+(flet ($e94 (iff $e69 $e92))
+(flet ($e95 (if_then_else $e93 $e91 $e88))
+(flet ($e96 (not $e90))
+(flet ($e97 (and $e61 $e61))
+(flet ($e98 (not $e81))
+(flet ($e99 (not $e94))
+(flet ($e100 (not $e98))
+(flet ($e101 (iff $e97 $e97))
+(flet ($e102 (and $e100 $e101))
+(flet ($e103 (and $e96 $e96))
+(flet ($e104 (iff $e99 $e102))
+(flet ($e105 (and $e104 $e95))
+(flet ($e106 (or $e105 $e103))
+(flet ($e107 (and $e106 (not (= ?e24 bv0[15]))))
+(flet ($e108 (and $e107 (not (= ?e24 (bvnot bv0[15])))))
+(flet ($e109 (and $e108 (not (= v1 bv0[11]))))
+(flet ($e110 (and $e109 (not (= v1 (bvnot bv0[11])))))
+(flet ($e111 (and $e110 (not (= ?e16 bv0[15]))))
+$e111
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/aufbv/fuzz05.delta01.smt b/test/regress/regress0/aufbv/fuzz05.delta01.smt
new file mode 100644
index 0000000..7b6addb
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz05.delta01.smt
@@ -0,0 +1,14 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:extrafuns ((a2 Array[12:9]))
+:status sat
+:formula
+(let (?n1 bv0[13])
+(let (?n2 (bvsdiv ?n1 ?n1))
+(let (?n3 bv0[12])
+(let (?n4 (select a2 ?n3))
+(let (?n5 (sign_extend[4] ?n4))
+(let (?n6 (bvmul ?n2 ?n5))
+(flet ($n7 (bvsge ?n1 ?n6))
+$n7
+))))))))
diff --git a/test/regress/regress0/aufbv/fuzz05.smt b/test/regress/regress0/aufbv/fuzz05.smt
new file mode 100644
index 0000000..b838f5f
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz05.smt
@@ -0,0 +1,78 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status sat
+:extrafuns ((v0 BitVec[13]))
+:extrafuns ((a1 Array[5:5]))
+:extrafuns ((a2 Array[12:9]))
+:extrafuns ((a3 Array[8:7]))
+:formula
+(let (?e4 bv6[4])
+(let (?e5 (bvsdiv v0 v0))
+(let (?e6 (bvurem ?e4 ?e4))
+(let (?e7 (store a3 (extract[10:3] v0) (sign_extend[3] ?e6)))
+(let (?e8 (store a2 (extract[11:0] v0) (zero_extend[5] ?e4)))
+(let (?e9 (store a3 (sign_extend[4] ?e4) (zero_extend[3] ?e6)))
+(let (?e10 (select ?e8 (sign_extend[8] ?e6)))
+(let (?e11 (select a1 (extract[6:2] v0)))
+(let (?e12 (select a2 (extract[11:0] ?e5)))
+(let (?e13 (store a1 (extract[8:4] ?e10) (zero_extend[1] ?e6)))
+(let (?e14 (select a2 (sign_extend[8] ?e6)))
+(let (?e15 (store ?e8 (zero_extend[3] ?e10) ?e14))
+(let (?e16 (select a2 (extract[12:1] v0)))
+(let (?e17 (bvmul (sign_extend[4] ?e16) ?e5))
+(let (?e18 (bvadd ?e10 (zero_extend[5] ?e6)))
+(let (?e19 (ite (bvuge ?e16 (sign_extend[4] ?e11)) bv1[1] bv0[1]))
+(let (?e20 (bvnor ?e4 ?e4))
+(let (?e21 (bvcomp v0 (zero_extend[9] ?e4)))
+(let (?e22 (bvnand ?e6 ?e6))
+(let (?e23 (ite (bvsge (zero_extend[4] ?e14) ?e17) bv1[1] bv0[1]))
+(let (?e24 (rotate_left[1] ?e20))
+(let (?e25 (ite (bvuge ?e12 (zero_extend[8] ?e21)) bv1[1] bv0[1]))
+(flet ($e26 (= ?e18 (zero_extend[8] ?e19)))
+(flet ($e27 (bvsge (sign_extend[8] ?e25) ?e10))
+(flet ($e28 (= (zero_extend[4] ?e14) v0))
+(flet ($e29 (bvuge ?e16 ?e18))
+(flet ($e30 (bvult (sign_extend[5] ?e20) ?e16))
+(flet ($e31 (bvslt (zero_extend[4] ?e11) ?e14))
+(flet ($e32 (bvult ?e12 (sign_extend[5] ?e4)))
+(flet ($e33 (bvult ?e12 (sign_extend[5] ?e22)))
+(flet ($e34 (bvsge ?e10 (zero_extend[8] ?e23)))
+(flet ($e35 (bvult (sign_extend[5] ?e6) ?e14))
+(flet ($e36 (bvult (zero_extend[3] ?e19) ?e20))
+(flet ($e37 (= ?e11 (sign_extend[1] ?e6)))
+(flet ($e38 (bvsle (zero_extend[9] ?e24) ?e5))
+(flet ($e39 (bvule ?e5 (sign_extend[4] ?e12)))
+(flet ($e40 (bvugt (zero_extend[1] ?e4) ?e11))
+(flet ($e41 (bvsgt ?e12 (sign_extend[8] ?e23)))
+(flet ($e42 (bvsge ?e6 (sign_extend[3] ?e25)))
+(flet ($e43 (bvsge ?e17 (zero_extend[4] ?e14)))
+(flet ($e44 (bvuge (zero_extend[9] ?e6) v0))
+(flet ($e45 (bvsgt (sign_extend[8] ?e21) ?e14))
+(flet ($e46 (xor $e27 $e36))
+(flet ($e47 (xor $e45 $e33))
+(flet ($e48 (if_then_else $e40 $e39 $e42))
+(flet ($e49 (xor $e31 $e32))
+(flet ($e50 (and $e47 $e28))
+(flet ($e51 (xor $e34 $e29))
+(flet ($e52 (not $e48))
+(flet ($e53 (not $e50))
+(flet ($e54 (if_then_else $e43 $e44 $e41))
+(flet ($e55 (and $e37 $e26))
+(flet ($e56 (not $e38))
+(flet ($e57 (implies $e52 $e56))
+(flet ($e58 (xor $e55 $e35))
+(flet ($e59 (and $e53 $e49))
+(flet ($e60 (if_then_else $e54 $e58 $e54))
+(flet ($e61 (if_then_else $e60 $e59 $e59))
+(flet ($e62 (iff $e46 $e57))
+(flet ($e63 (and $e62 $e61))
+(flet ($e64 (or $e63 $e63))
+(flet ($e65 (and $e30 $e51))
+(flet ($e66 (not $e65))
+(flet ($e67 (xor $e64 $e66))
+(flet ($e68 (and $e67 (not (= v0 bv0[13]))))
+(flet ($e69 (and $e68 (not (= v0 (bvnot bv0[13])))))
+(flet ($e70 (and $e69 (not (= ?e4 bv0[4]))))
+$e70
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/aufbv/fuzz06.delta01.smt b/test/regress/regress0/aufbv/fuzz06.delta01.smt
new file mode 100644
index 0000000..6e411c6
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz06.delta01.smt
@@ -0,0 +1,17 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:extrafuns ((a5 Array[6:11]))
+:extrafuns ((v2 BitVec[1]))
+:status sat
+:formula
+(let (?n1 bv0[11])
+(let (?n2 (sign_extend[9] v2))
+(let (?n3 (extract[7:2] ?n2))
+(let (?n4 (select a5 ?n3))
+(flet ($n5 (= ?n1 ?n4))
+(let (?n6 bv0[6])
+(let (?n7 (select a5 ?n6))
+(flet ($n8 (bvule ?n7 ?n1))
+(flet ($n9 (implies $n5 $n8))
+$n9
+))))))))))
diff --git a/test/regress/regress0/aufbv/fuzz06.smt b/test/regress/regress0/aufbv/fuzz06.smt
new file mode 100644
index 0000000..bc8b233
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz06.smt
@@ -0,0 +1,154 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status sat
+:extrafuns ((v0 BitVec[3]))
+:extrafuns ((v1 BitVec[10]))
+:extrafuns ((v2 BitVec[1]))
+:extrafuns ((v3 BitVec[10]))
+:extrafuns ((v4 BitVec[10]))
+:extrafuns ((a5 Array[6:11]))
+:formula
+(let (?e6 bv5[3])
+(let (?e7 bv71[8])
+(let (?e8 (bvnot v2))
+(let (?e9 (bvsub (zero_extend[5] ?e6) ?e7))
+(let (?e10 (ite (bvugt v1 (zero_extend[9] v2)) bv1[1] bv0[1]))
+(let (?e11 (bvxnor v3 (sign_extend[9] ?e8)))
+(let (?e12 (rotate_left[2] ?e7))
+(let (?e13 (bvudiv v4 ?e11))
+(let (?e14 (bvor v0 (zero_extend[2] ?e10)))
+(let (?e15 (store a5 (extract[6:1] ?e7) (sign_extend[10] v2)))
+(let (?e16 (select ?e15 (zero_extend[3] ?e6)))
+(let (?e17 (store ?e15 (extract[6:1] v1) (sign_extend[3] ?e9)))
+(let (?e18 (select ?e17 (extract[7:2] ?e11)))
+(let (?e19 (bvudiv (zero_extend[7] ?e14) ?e11))
+(let (?e20 (extract[7:3] ?e12))
+(let (?e21 (bvxor (zero_extend[9] ?e10) v3))
+(let (?e22 (bvudiv (zero_extend[7] v0) ?e13))
+(let (?e23 (bvneg ?e16))
+(let (?e24 (ite (bvuge (sign_extend[9] ?e8) ?e21) bv1[1] bv0[1]))
+(let (?e25 (ite (= bv1[1] (extract[7:7] ?e18)) ?e14 (zero_extend[2] ?e24)))
+(let (?e26 (bvand ?e23 (sign_extend[10] v2)))
+(let (?e27 (bvmul ?e7 (sign_extend[3] ?e20)))
+(let (?e28 (ite (distinct ?e6 (sign_extend[2] ?e8)) bv1[1] bv0[1]))
+(let (?e29 (bvnand v1 ?e13))
+(let (?e30 (bvudiv (zero_extend[2] ?e8) ?e14))
+(let (?e31 (bvcomp ?e9 (zero_extend[7] ?e10)))
+(let (?e32 (ite (bvsgt v0 ?e25) bv1[1] bv0[1]))
+(let (?e33 (bvxor v4 ?e19))
+(flet ($e34 (bvuge (zero_extend[2] ?e24) ?e6))
+(flet ($e35 (bvuge (sign_extend[1] ?e13) ?e16))
+(flet ($e36 (bvult ?e22 (zero_extend[9] ?e32)))
+(flet ($e37 (bvugt v3 v3))
+(flet ($e38 (bvsge (sign_extend[2] ?e27) ?e33))
+(flet ($e39 (bvule ?e23 (zero_extend[3] ?e12)))
+(flet ($e40 (bvule (sign_extend[2] ?e27) ?e19))
+(flet ($e41 (bvuge ?e33 ?e19))
+(flet ($e42 (bvsle (zero_extend[9] ?e8) ?e21))
+(flet ($e43 (bvsle (sign_extend[2] ?e12) ?e11))
+(flet ($e44 (= v2 ?e24))
+(flet ($e45 (bvugt (zero_extend[3] ?e9) ?e18))
+(flet ($e46 (bvugt ?e11 (zero_extend[2] ?e27)))
+(flet ($e47 (bvsge ?e18 ?e18))
+(flet ($e48 (bvsge ?e11 (sign_extend[9] ?e31)))
+(flet ($e49 (bvslt v1 (zero_extend[9] v2)))
+(flet ($e50 (bvult ?e26 (zero_extend[1] ?e11)))
+(flet ($e51 (bvule (sign_extend[9] ?e31) v4))
+(flet ($e52 (bvsgt v4 (zero_extend[2] ?e9)))
+(flet ($e53 (bvule v3 (sign_extend[7] v0)))
+(flet ($e54 (bvuge ?e16 (sign_extend[8] ?e6)))
+(flet ($e55 (bvugt ?e31 ?e10))
+(flet ($e56 (bvugt (zero_extend[1] ?e29) ?e18))
+(flet ($e57 (bvslt v4 (sign_extend[7] v0)))
+(flet ($e58 (bvsle ?e13 (zero_extend[9] ?e31)))
+(flet ($e59 (distinct (zero_extend[7] ?e6) ?e22))
+(flet ($e60 (bvule (zero_extend[5] ?e30) ?e9))
+(flet ($e61 (bvult (sign_extend[2] ?e9) v1))
+(flet ($e62 (bvult v1 ?e29))
+(flet ($e63 (bvsge (sign_extend[3] ?e20) ?e12))
+(flet ($e64 (bvslt ?e14 (sign_extend[2] ?e31)))
+(flet ($e65 (bvult (zero_extend[3] ?e9) ?e18))
+(flet ($e66 (= (zero_extend[9] v2) v3))
+(flet ($e67 (bvuge ?e24 ?e31))
+(flet ($e68 (bvult ?e8 ?e10))
+(flet ($e69 (bvugt ?e9 ?e27))
+(flet ($e70 (= ?e13 (zero_extend[7] v0)))
+(flet ($e71 (bvsle v4 ?e33))
+(flet ($e72 (bvule (sign_extend[7] ?e31) ?e12))
+(flet ($e73 (bvult ?e11 ?e29))
+(flet ($e74 (bvult ?e25 (sign_extend[2] ?e24)))
+(flet ($e75 (= (sign_extend[2] ?e7) v3))
+(flet ($e76 (= (sign_extend[7] v0) ?e19))
+(flet ($e77 (bvslt (zero_extend[9] v2) ?e29))
+(flet ($e78 (bvsge ?e25 (sign_extend[2] ?e32)))
+(flet ($e79 (bvsle (zero_extend[9] ?e32) ?e21))
+(flet ($e80 (bvult ?e11 ?e19))
+(flet ($e81 (bvugt ?e27 (zero_extend[5] ?e25)))
+(flet ($e82 (distinct ?e13 (zero_extend[7] ?e14)))
+(flet ($e83 (bvugt (zero_extend[3] ?e9) ?e26))
+(flet ($e84 (= ?e18 (sign_extend[8] ?e25)))
+(flet ($e85 (bvsgt (sign_extend[4] ?e8) ?e20))
+(flet ($e86 (bvult (sign_extend[9] ?e28) ?e33))
+(flet ($e87 (iff $e74 $e56))
+(flet ($e88 (xor $e54 $e45))
+(flet ($e89 (or $e64 $e80))
+(flet ($e90 (if_then_else $e83 $e62 $e89))
+(flet ($e91 (implies $e67 $e71))
+(flet ($e92 (iff $e50 $e34))
+(flet ($e93 (not $e73))
+(flet ($e94 (implies $e58 $e91))
+(flet ($e95 (not $e40))
+(flet ($e96 (and $e55 $e75))
+(flet ($e97 (if_then_else $e46 $e63 $e36))
+(flet ($e98 (or $e70 $e38))
+(flet ($e99 (iff $e59 $e49))
+(flet ($e100 (and $e41 $e88))
+(flet ($e101 (not $e60))
+(flet ($e102 (and $e78 $e61))
+(flet ($e103 (if_then_else $e102 $e48 $e101))
+(flet ($e104 (and $e90 $e93))
+(flet ($e105 (implies $e52 $e47))
+(flet ($e106 (xor $e53 $e103))
+(flet ($e107 (and $e97 $e100))
+(flet ($e108 (xor $e81 $e69))
+(flet ($e109 (xor $e107 $e37))
+(flet ($e110 (not $e98))
+(flet ($e111 (not $e105))
+(flet ($e112 (implies $e43 $e76))
+(flet ($e113 (and $e68 $e42))
+(flet ($e114 (if_then_else $e112 $e57 $e44))
+(flet ($e115 (iff $e72 $e86))
+(flet ($e116 (or $e82 $e114))
+(flet ($e117 (xor $e116 $e104))
+(flet ($e118 (implies $e110 $e65))
+(flet ($e119 (if_then_else $e106 $e106 $e108))
+(flet ($e120 (not $e79))
+(flet ($e121 (if_then_else $e77 $e99 $e95))
+(flet ($e122 (xor $e87 $e94))
+(flet ($e123 (and $e117 $e120))
+(flet ($e124 (xor $e85 $e92))
+(flet ($e125 (or $e118 $e123))
+(flet ($e126 (and $e119 $e121))
+(flet ($e127 (iff $e109 $e124))
+(flet ($e128 (or $e96 $e125))
+(flet ($e129 (iff $e51 $e66))
+(flet ($e130 (implies $e127 $e39))
+(flet ($e131 (if_then_else $e126 $e130 $e130))
+(flet ($e132 (or $e128 $e128))
+(flet ($e133 (iff $e35 $e115))
+(flet ($e134 (iff $e122 $e133))
+(flet ($e135 (not $e111))
+(flet ($e136 (iff $e131 $e113))
+(flet ($e137 (if_then_else $e134 $e129 $e129))
+(flet ($e138 (implies $e132 $e84))
+(flet ($e139 (not $e136))
+(flet ($e140 (implies $e135 $e139))
+(flet ($e141 (implies $e138 $e140))
+(flet ($e142 (not $e137))
+(flet ($e143 (and $e142 $e141))
+(flet ($e144 (and $e143 (not (= ?e14 bv0[3]))))
+(flet ($e145 (and $e144 (not (= ?e11 bv0[10]))))
+(flet ($e146 (and $e145 (not (= ?e13 bv0[10]))))
+$e146
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/aufbv/fuzz07.smt b/test/regress/regress0/aufbv/fuzz07.smt
new file mode 100644
index 0000000..e57d45e
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz07.smt
@@ -0,0 +1,143 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status sat
+:extrafuns ((v0 BitVec[6]))
+:extrafuns ((v1 BitVec[16]))
+:extrafuns ((v2 BitVec[1]))
+:extrafuns ((a3 Array[1:16]))
+:extrafuns ((a4 Array[16:1]))
+:formula
+(let (?e5 bv6[4])
+(let (?e6 (ite (bvult v0 (sign_extend[5] v2)) bv1[1] bv0[1]))
+(let (?e7 (sign_extend[0] v1))
+(let (?e8 (ite (bvslt ?e5 (zero_extend[3] ?e6)) bv1[1] bv0[1]))
+(let (?e9 (store a4 (sign_extend[15] ?e6) ?e8))
+(let (?e10 (select ?e9 (zero_extend[15] ?e6)))
+(let (?e11 (select a3 (extract[4:4] v0)))
+(let (?e12 (select a3 (extract[0:0] ?e5)))
+(let (?e13 (store ?e9 (sign_extend[15] ?e6) (extract[4:4] v1)))
+(let (?e14 (select ?e13 ?e11))
+(let (?e15 (select ?e13 ?e12))
+(let (?e16 (bvadd (sign_extend[15] ?e15) v1))
+(let (?e17 (bvlshr ?e12 (sign_extend[12] ?e5)))
+(let (?e18 (bvsdiv (zero_extend[15] ?e10) ?e11))
+(let (?e19 (bvlshr ?e14 ?e8))
+(let (?e20 (rotate_right[0] ?e6))
+(let (?e21 (ite (bvugt ?e7 (sign_extend[15] ?e15)) bv1[1] bv0[1]))
+(let (?e22 (bvxnor (zero_extend[5] ?e15) v0))
+(let (?e23 (bvsdiv (sign_extend[15] v2) ?e18))
+(flet ($e24 (distinct (zero_extend[15] ?e8) ?e12))
+(flet ($e25 (bvult (sign_extend[5] ?e10) v0))
+(flet ($e26 (bvsle ?e12 ?e16))
+(flet ($e27 (bvsle (zero_extend[15] ?e19) ?e11))
+(flet ($e28 (bvult ?e17 ?e16))
+(flet ($e29 (bvsgt ?e14 ?e15))
+(flet ($e30 (bvsgt v0 (zero_extend[5] ?e14)))
+(flet ($e31 (bvslt (zero_extend[15] ?e19) ?e7))
+(flet ($e32 (bvuge v1 ?e7))
+(flet ($e33 (bvsge ?e5 ?e5))
+(flet ($e34 (bvsge (sign_extend[15] ?e20) ?e7))
+(flet ($e35 (= (zero_extend[15] ?e14) v1))
+(flet ($e36 (bvugt ?e15 ?e10))
+(flet ($e37 (bvugt (zero_extend[15] ?e19) ?e18))
+(flet ($e38 (bvule ?e23 (sign_extend[15] ?e19)))
+(flet ($e39 (bvsle (sign_extend[15] v2) ?e17))
+(flet ($e40 (bvsle ?e21 v2))
+(flet ($e41 (bvult ?e21 v2))
+(flet ($e42 (bvugt v0 (zero_extend[2] ?e5)))
+(flet ($e43 (bvule ?e19 ?e15))
+(flet ($e44 (bvuge v0 (zero_extend[5] v2)))
+(flet ($e45 (bvsle ?e8 v2))
+(flet ($e46 (bvsle ?e5 (zero_extend[3] ?e6)))
+(flet ($e47 (bvuge ?e15 ?e6))
+(flet ($e48 (bvslt (sign_extend[10] v0) v1))
+(flet ($e49 (distinct ?e11 (sign_extend[10] v0)))
+(flet ($e50 (distinct ?e11 ?e18))
+(flet ($e51 (bvugt (zero_extend[15] ?e15) ?e12))
+(flet ($e52 (bvuge ?e16 ?e23))
+(flet ($e53 (bvult ?e15 ?e15))
+(flet ($e54 (distinct ?e20 ?e20))
+(flet ($e55 (= v1 ?e7))
+(flet ($e56 (bvult (zero_extend[15] ?e21) ?e7))
+(flet ($e57 (distinct ?e12 ?e23))
+(flet ($e58 (bvult (zero_extend[5] ?e8) v0))
+(flet ($e59 (bvsle ?e8 ?e19))
+(flet ($e60 (= ?e10 ?e14))
+(flet ($e61 (bvult ?e6 ?e19))
+(flet ($e62 (bvsle ?e17 (zero_extend[15] ?e10)))
+(flet ($e63 (bvugt ?e12 ?e18))
+(flet ($e64 (bvsgt ?e20 ?e10))
+(flet ($e65 (= ?e17 v1))
+(flet ($e66 (bvule ?e6 ?e19))
+(flet ($e67 (bvsle (sign_extend[15] ?e8) ?e12))
+(flet ($e68 (bvsle (sign_extend[15] ?e10) v1))
+(flet ($e69 (bvslt ?e23 (zero_extend[15] ?e10)))
+(flet ($e70 (bvule ?e7 ?e12))
+(flet ($e71 (bvsle ?e7 (sign_extend[15] v2)))
+(flet ($e72 (bvult ?e21 ?e10))
+(flet ($e73 (= v1 (zero_extend[10] v0)))
+(flet ($e74 (bvsgt (zero_extend[3] ?e20) ?e5))
+(flet ($e75 (bvule ?e23 (zero_extend[10] ?e22)))
+(flet ($e76 (xor $e41 $e34))
+(flet ($e77 (xor $e57 $e53))
+(flet ($e78 (xor $e43 $e46))
+(flet ($e79 (if_then_else $e59 $e49 $e77))
+(flet ($e80 (not $e42))
+(flet ($e81 (iff $e26 $e63))
+(flet ($e82 (xor $e45 $e79))
+(flet ($e83 (xor $e69 $e58))
+(flet ($e84 (xor $e29 $e51))
+(flet ($e85 (iff $e60 $e81))
+(flet ($e86 (or $e55 $e55))
+(flet ($e87 (if_then_else $e33 $e52 $e35))
+(flet ($e88 (if_then_else $e37 $e70 $e87))
+(flet ($e89 (not $e86))
+(flet ($e90 (or $e28 $e84))
+(flet ($e91 (and $e83 $e56))
+(flet ($e92 (and $e85 $e91))
+(flet ($e93 (and $e32 $e80))
+(flet ($e94 (or $e92 $e72))
+(flet ($e95 (and $e36 $e47))
+(flet ($e96 (implies $e40 $e89))
+(flet ($e97 (implies $e94 $e95))
+(flet ($e98 (iff $e71 $e61))
+(flet ($e99 (iff $e93 $e38))
+(flet ($e100 (implies $e27 $e30))
+(flet ($e101 (and $e97 $e96))
+(flet ($e102 (if_then_else $e50 $e99 $e99))
+(flet ($e103 (and $e65 $e48))
+(flet ($e104 (not $e44))
+(flet ($e105 (xor $e103 $e39))
+(flet ($e106 (if_then_else $e82 $e101 $e104))
+(flet ($e107 (or $e68 $e54))
+(flet ($e108 (or $e90 $e90))
+(flet ($e109 (or $e107 $e100))
+(flet ($e110 (xor $e67 $e88))
+(flet ($e111 (xor $e110 $e31))
+(flet ($e112 (or $e102 $e64))
+(flet ($e113 (not $e78))
+(flet ($e114 (if_then_else $e74 $e98 $e66))
+(flet ($e115 (iff $e108 $e109))
+(flet ($e116 (and $e25 $e73))
+(flet ($e117 (xor $e111 $e116))
+(flet ($e118 (xor $e115 $e106))
+(flet ($e119 (or $e112 $e24))
+(flet ($e120 (implies $e76 $e76))
+(flet ($e121 (xor $e113 $e62))
+(flet ($e122 (or $e120 $e120))
+(flet ($e123 (not $e75))
+(flet ($e124 (and $e122 $e118))
+(flet ($e125 (and $e119 $e123))
+(flet ($e126 (or $e105 $e105))
+(flet ($e127 (iff $e124 $e114))
+(flet ($e128 (or $e126 $e117))
+(flet ($e129 (xor $e125 $e121))
+(flet ($e130 (iff $e127 $e129))
+(flet ($e131 (or $e130 $e128))
+(flet ($e132 (and $e131 (not (= ?e11 bv0[16]))))
+(flet ($e133 (and $e132 (not (= ?e11 (bvnot bv0[16])))))
+(flet ($e134 (and $e133 (not (= ?e18 bv0[16]))))
+(flet ($e135 (and $e134 (not (= ?e18 (bvnot bv0[16])))))
+$e135
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/aufbv/fuzz08.smt b/test/regress/regress0/aufbv/fuzz08.smt
new file mode 100644
index 0000000..5e0c090
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz08.smt
@@ -0,0 +1,162 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status sat
+:extrafuns ((v0 BitVec[12]))
+:extrafuns ((v1 BitVec[14]))
+:extrafuns ((v2 BitVec[9]))
+:extrafuns ((a3 Array[5:3]))
+:formula
+(let (?e4 bv0[2])
+(let (?e5 bv3960[12])
+(let (?e6 (ite (bvsge v0 (sign_extend[3] v2)) bv1[1] bv0[1]))
+(let (?e7 (concat ?e4 v1))
+(let (?e8 (ite (bvule (zero_extend[2] ?e5) v1) bv1[1] bv0[1]))
+(let (?e9 (select a3 (zero_extend[4] ?e6)))
+(let (?e10 (select a3 (extract[7:3] v2)))
+(let (?e11 (select a3 (sign_extend[2] ?e9)))
+(let (?e12 (select a3 (extract[11:7] v0)))
+(let (?e13 (bvneg ?e8))
+(let (?e14 (bvnot ?e9))
+(let (?e15 (rotate_left[2] ?e12))
+(let (?e16 (bvnand (sign_extend[2] ?e6) ?e15))
+(let (?e17 (zero_extend[0] ?e7))
+(let (?e18 (zero_extend[13] ?e9))
+(let (?e19 (bvsrem (zero_extend[6] ?e10) v2))
+(let (?e20 (bvsdiv (sign_extend[4] ?e5) ?e7))
+(let (?e21 (bvxnor v0 (sign_extend[9] ?e14)))
+(let (?e22 (bvnot ?e11))
+(let (?e23 (ite (distinct ?e4 ?e4) bv1[1] bv0[1]))
+(let (?e24 (ite (= bv1[1] (extract[9:9] v1)) ?e15 ?e9))
+(flet ($e25 (bvsle (zero_extend[13] ?e10) ?e17))
+(flet ($e26 (bvsle ?e5 ?e21))
+(flet ($e27 (bvsgt (zero_extend[1] ?e4) ?e11))
+(flet ($e28 (bvult v1 (sign_extend[11] ?e15)))
+(flet ($e29 (= v0 (zero_extend[11] ?e23)))
+(flet ($e30 (bvuge ?e7 (sign_extend[15] ?e8)))
+(flet ($e31 (bvslt (sign_extend[6] ?e22) ?e19))
+(flet ($e32 (bvuge ?e10 ?e15))
+(flet ($e33 (bvsgt (zero_extend[13] ?e12) ?e7))
+(flet ($e34 (= ?e11 ?e16))
+(flet ($e35 (bvslt (zero_extend[1] ?e4) ?e10))
+(flet ($e36 (= ?e17 (sign_extend[4] ?e21)))
+(flet ($e37 (bvsgt (sign_extend[14] ?e4) ?e18))
+(flet ($e38 (bvsgt (zero_extend[15] ?e8) ?e20))
+(flet ($e39 (bvult (zero_extend[13] ?e16) ?e20))
+(flet ($e40 (bvslt v1 (zero_extend[11] ?e12)))
+(flet ($e41 (bvsge (sign_extend[11] ?e8) v0))
+(flet ($e42 (bvsge ?e21 ?e5))
+(flet ($e43 (distinct (sign_extend[1] ?e4) ?e12))
+(flet ($e44 (bvsgt ?e17 (sign_extend[13] ?e12)))
+(flet ($e45 (bvult v2 (sign_extend[6] ?e9)))
+(flet ($e46 (bvuge ?e9 ?e12))
+(flet ($e47 (bvugt ?e24 ?e10))
+(flet ($e48 (bvule (zero_extend[2] ?e13) ?e12))
+(flet ($e49 (bvugt ?e16 ?e10))
+(flet ($e50 (bvuge (sign_extend[2] ?e23) ?e10))
+(flet ($e51 (bvult ?e5 (zero_extend[11] ?e13)))
+(flet ($e52 (bvsge ?e17 (zero_extend[13] ?e10)))
+(flet ($e53 (bvsle (zero_extend[11] ?e9) v1))
+(flet ($e54 (bvsgt ?e19 (zero_extend[6] ?e10)))
+(flet ($e55 (bvslt ?e10 ?e10))
+(flet ($e56 (bvsgt (sign_extend[2] ?e13) ?e10))
+(flet ($e57 (= ?e18 ?e20))
+(flet ($e58 (bvsgt v0 (zero_extend[3] v2)))
+(flet ($e59 (distinct (zero_extend[1] ?e6) ?e4))
+(flet ($e60 (bvsge ?e16 ?e15))
+(flet ($e61 (distinct (sign_extend[1] ?e4) ?e10))
+(flet ($e62 (bvule ?e13 ?e6))
+(flet ($e63 (bvsle (sign_extend[2] ?e23) ?e15))
+(flet ($e64 (bvuge (zero_extend[11] ?e6) ?e5))
+(flet ($e65 (bvslt ?e13 ?e6))
+(flet ($e66 (bvule v0 (zero_extend[11] ?e23)))
+(flet ($e67 (= (zero_extend[2] ?e8) ?e16))
+(flet ($e68 (bvule ?e24 (sign_extend[2] ?e23)))
+(flet ($e69 (bvslt ?e22 ?e16))
+(flet ($e70 (bvslt (zero_extend[5] v2) v1))
+(flet ($e71 (bvult ?e18 (zero_extend[13] ?e10)))
+(flet ($e72 (= ?e20 (sign_extend[13] ?e10)))
+(flet ($e73 (bvuge ?e11 ?e9))
+(flet ($e74 (bvule ?e13 ?e8))
+(flet ($e75 (= (zero_extend[11] ?e13) ?e5))
+(flet ($e76 (= v2 (sign_extend[8] ?e8)))
+(flet ($e77 (distinct (zero_extend[9] ?e24) ?e21))
+(flet ($e78 (bvsgt ?e11 (zero_extend[2] ?e23)))
+(flet ($e79 (bvsgt ?e24 (zero_extend[1] ?e4)))
+(flet ($e80 (bvslt ?e5 (zero_extend[11] ?e8)))
+(flet ($e81 (bvult v0 (sign_extend[9] ?e11)))
+(flet ($e82 (bvult ?e20 (zero_extend[13] ?e11)))
+(flet ($e83 (bvule ?e18 (zero_extend[13] ?e15)))
+(flet ($e84 (bvsgt v0 (sign_extend[9] ?e10)))
+(flet ($e85 (= ?e17 (sign_extend[15] ?e8)))
+(flet ($e86 (distinct v2 (zero_extend[8] ?e8)))
+(flet ($e87 (bvsge ?e18 (zero_extend[13] ?e22)))
+(flet ($e88 (bvsle ?e14 (zero_extend[1] ?e4)))
+(flet ($e89 (and $e52 $e30))
+(flet ($e90 (xor $e61 $e77))
+(flet ($e91 (or $e32 $e29))
+(flet ($e92 (or $e84 $e66))
+(flet ($e93 (xor $e49 $e39))
+(flet ($e94 (implies $e48 $e73))
+(flet ($e95 (and $e79 $e50))
+(flet ($e96 (or $e88 $e92))
+(flet ($e97 (xor $e28 $e67))
+(flet ($e98 (implies $e75 $e76))
+(flet ($e99 (not $e68))
+(flet ($e100 (iff $e34 $e83))
+(flet ($e101 (iff $e90 $e56))
+(flet ($e102 (xor $e60 $e74))
+(flet ($e103 (if_then_else $e37 $e36 $e100))
+(flet ($e104 (implies $e53 $e26))
+(flet ($e105 (or $e87 $e27))
+(flet ($e106 (if_then_else $e55 $e105 $e59))
+(flet ($e107 (and $e63 $e31))
+(flet ($e108 (if_then_else $e99 $e91 $e106))
+(flet ($e109 (iff $e69 $e103))
+(flet ($e110 (iff $e57 $e44))
+(flet ($e111 (not $e40))
+(flet ($e112 (or $e70 $e108))
+(flet ($e113 (xor $e81 $e71))
+(flet ($e114 (iff $e51 $e41))
+(flet ($e115 (not $e86))
+(flet ($e116 (implies $e82 $e42))
+(flet ($e117 (if_then_else $e107 $e97 $e47))
+(flet ($e118 (and $e80 $e45))
+(flet ($e119 (and $e78 $e115))
+(flet ($e120 (xor $e102 $e85))
+(flet ($e121 (not $e25))
+(flet ($e122 (if_then_else $e110 $e117 $e116))
+(flet ($e123 (and $e109 $e96))
+(flet ($e124 (if_then_else $e101 $e35 $e122))
+(flet ($e125 (iff $e121 $e104))
+(flet ($e126 (if_then_else $e119 $e94 $e125))
+(flet ($e127 (and $e120 $e120))
+(flet ($e128 (not $e58))
+(flet ($e129 (iff $e98 $e38))
+(flet ($e130 (implies $e43 $e111))
+(flet ($e131 (implies $e93 $e54))
+(flet ($e132 (if_then_else $e72 $e129 $e124))
+(flet ($e133 (xor $e33 $e113))
+(flet ($e134 (and $e127 $e133))
+(flet ($e135 (not $e131))
+(flet ($e136 (or $e123 $e64))
+(flet ($e137 (xor $e118 $e134))
+(flet ($e138 (not $e95))
+(flet ($e139 (iff $e62 $e62))
+(flet ($e140 (or $e139 $e89))
+(flet ($e141 (implies $e130 $e135))
+(flet ($e142 (if_then_else $e132 $e128 $e132))
+(flet ($e143 (iff $e46 $e136))
+(flet ($e144 (if_then_else $e137 $e138 $e138))
+(flet ($e145 (and $e126 $e141))
+(flet ($e146 (if_then_else $e114 $e140 $e145))
+(flet ($e147 (implies $e144 $e143))
+(flet ($e148 (iff $e147 $e146))
+(flet ($e149 (if_then_else $e142 $e148 $e65))
+(flet ($e150 (or $e149 $e112))
+(flet ($e151 (and $e150 (not (= ?e7 bv0[16]))))
+(flet ($e152 (and $e151 (not (= ?e7 (bvnot bv0[16])))))
+(flet ($e153 (and $e152 (not (= v2 bv0[9]))))
+(flet ($e154 (and $e153 (not (= v2 (bvnot bv0[9])))))
+$e154
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/aufbv/fuzz09.smt b/test/regress/regress0/aufbv/fuzz09.smt
new file mode 100644
index 0000000..ac9101b
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz09.smt
@@ -0,0 +1,176 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status sat
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[6]))
+:extrafuns ((v2 BitVec[11]))
+:extrafuns ((v3 BitVec[1]))
+:extrafuns ((v4 BitVec[10]))
+:extrafuns ((a5 Array[13:16]))
+:formula
+(let (?e6 bv2[2])
+(let (?e7 (bvnand v2 (sign_extend[7] v0)))
+(let (?e8 (bvsrem (zero_extend[8] ?e6) v4))
+(let (?e9 (bvand (sign_extend[5] v1) v2))
+(let (?e10 (bvneg v3))
+(let (?e11 (store a5 (zero_extend[2] v2) (zero_extend[15] ?e10)))
+(let (?e12 (store ?e11 (zero_extend[2] ?e9) (sign_extend[14] ?e6)))
+(let (?e13 (store ?e11 (zero_extend[7] v1) (sign_extend[14] ?e6)))
+(let (?e14 (select ?e12 (zero_extend[9] v0)))
+(let (?e15 (select ?e13 (sign_extend[12] ?e10)))
+(let (?e16 (store ?e12 (zero_extend[2] ?e9) ?e15))
+(let (?e17 (select ?e11 (zero_extend[12] ?e10)))
+(let (?e18 (store ?e16 (extract[13:1] ?e17) (sign_extend[6] v4)))
+(let (?e19 (select ?e16 (sign_extend[12] v3)))
+(let (?e20 (ite (bvsge ?e8 (zero_extend[8] ?e6)) bv1[1] bv0[1]))
+(let (?e21 (bvnor (zero_extend[15] ?e10) ?e17))
+(let (?e22 (bvand ?e21 (zero_extend[15] ?e20)))
+(let (?e23 (bvsdiv (sign_extend[2] v0) v1))
+(let (?e24 (ite (bvsle (zero_extend[9] ?e6) ?e9) bv1[1] bv0[1]))
+(let (?e25 (bvxnor ?e15 ?e15))
+(let (?e26 (bvcomp ?e14 ?e25))
+(let (?e27 (bvsdiv (zero_extend[5] ?e7) ?e21))
+(let (?e28 (ite (bvsge ?e19 (sign_extend[15] v3)) bv1[1] bv0[1]))
+(let (?e29 (bvnand (zero_extend[10] ?e20) v2))
+(let (?e30 (ite (bvult (zero_extend[1] v4) ?e9) bv1[1] bv0[1]))
+(flet ($e31 (bvugt ?e23 (zero_extend[5] ?e24)))
+(flet ($e32 (bvslt ?e24 v3))
+(flet ($e33 (bvsle ?e14 (zero_extend[15] v3)))
+(flet ($e34 (bvslt (sign_extend[10] v1) ?e17))
+(flet ($e35 (bvult v1 (zero_extend[5] ?e24)))
+(flet ($e36 (= (zero_extend[15] ?e24) ?e15))
+(flet ($e37 (bvule (zero_extend[6] v4) ?e14))
+(flet ($e38 (= ?e27 (sign_extend[15] ?e26)))
+(flet ($e39 (bvsle ?e8 (zero_extend[8] ?e6)))
+(flet ($e40 (bvult ?e21 (zero_extend[5] ?e29)))
+(flet ($e41 (bvsge ?e15 (sign_extend[15] ?e24)))
+(flet ($e42 (bvsle (zero_extend[5] ?e28) v1))
+(flet ($e43 (bvslt (sign_extend[15] ?e28) ?e21))
+(flet ($e44 (bvsle (zero_extend[10] v1) ?e25))
+(flet ($e45 (bvule ?e8 (zero_extend[9] ?e10)))
+(flet ($e46 (bvsle ?e14 (sign_extend[5] ?e9)))
+(flet ($e47 (distinct (sign_extend[9] v3) ?e8))
+(flet ($e48 (bvsle ?e8 (sign_extend[4] v1)))
+(flet ($e49 (bvuge ?e26 ?e28))
+(flet ($e50 (bvsge ?e21 ?e14))
+(flet ($e51 (= (sign_extend[15] ?e10) ?e22))
+(flet ($e52 (bvsge ?e8 ?e8))
+(flet ($e53 (bvslt ?e14 (sign_extend[6] v4)))
+(flet ($e54 (bvugt ?e10 ?e28))
+(flet ($e55 (bvslt v4 (sign_extend[4] ?e23)))
+(flet ($e56 (bvsge (zero_extend[15] ?e20) ?e21))
+(flet ($e57 (bvugt v4 (sign_extend[9] ?e28)))
+(flet ($e58 (bvsge ?e9 (zero_extend[10] v3)))
+(flet ($e59 (bvugt ?e17 ?e27))
+(flet ($e60 (bvsge ?e6 (sign_extend[1] ?e28)))
+(flet ($e61 (bvult ?e25 ?e17))
+(flet ($e62 (bvugt ?e25 ?e19))
+(flet ($e63 (bvslt (zero_extend[10] ?e10) ?e9))
+(flet ($e64 (bvsgt v1 (zero_extend[4] ?e6)))
+(flet ($e65 (bvsle ?e14 (zero_extend[15] ?e30)))
+(flet ($e66 (bvuge ?e22 ?e14))
+(flet ($e67 (bvuge (zero_extend[6] ?e8) ?e27))
+(flet ($e68 (bvsle (sign_extend[10] v3) ?e9))
+(flet ($e69 (bvsge (sign_extend[14] ?e6) ?e21))
+(flet ($e70 (bvugt (sign_extend[15] ?e24) ?e14))
+(flet ($e71 (bvuge (sign_extend[6] v4) ?e22))
+(flet ($e72 (bvslt ?e14 (sign_extend[15] ?e10)))
+(flet ($e73 (bvslt (sign_extend[10] ?e23) ?e21))
+(flet ($e74 (bvsle (sign_extend[15] v3) ?e15))
+(flet ($e75 (bvslt ?e21 (zero_extend[15] ?e20)))
+(flet ($e76 (bvult (zero_extend[1] v4) v2))
+(flet ($e77 (bvsle ?e25 ?e17))
+(flet ($e78 (bvsle ?e6 (sign_extend[1] ?e30)))
+(flet ($e79 (bvsgt ?e27 (zero_extend[5] ?e9)))
+(flet ($e80 (bvuge v2 (zero_extend[10] ?e20)))
+(flet ($e81 (distinct (zero_extend[15] ?e26) ?e14))
+(flet ($e82 (bvult ?e15 (sign_extend[5] ?e29)))
+(flet ($e83 (bvsge (sign_extend[15] ?e26) ?e21))
+(flet ($e84 (bvslt (sign_extend[14] ?e6) ?e19))
+(flet ($e85 (bvule (zero_extend[5] ?e20) ?e23))
+(flet ($e86 (= ?e8 (zero_extend[8] ?e6)))
+(flet ($e87 (distinct (sign_extend[10] ?e28) ?e29))
+(flet ($e88 (bvult (zero_extend[14] ?e6) ?e19))
+(flet ($e89 (= v4 (zero_extend[6] v0)))
+(flet ($e90 (distinct ?e10 ?e28))
+(flet ($e91 (bvsge v0 (sign_extend[3] ?e20)))
+(flet ($e92 (= ?e25 (zero_extend[15] ?e24)))
+(flet ($e93 (bvsge (zero_extend[1] ?e10) ?e6))
+(flet ($e94 (bvule v4 (sign_extend[9] ?e30)))
+(flet ($e95 (bvugt (zero_extend[6] v4) ?e25))
+(flet ($e96 (distinct (sign_extend[5] ?e7) ?e19))
+(flet ($e97 (not $e90))
+(flet ($e98 (and $e42 $e37))
+(flet ($e99 (and $e46 $e59))
+(flet ($e100 (iff $e31 $e71))
+(flet ($e101 (and $e51 $e43))
+(flet ($e102 (and $e34 $e82))
+(flet ($e103 (iff $e58 $e69))
+(flet ($e104 (implies $e48 $e66))
+(flet ($e105 (xor $e101 $e86))
+(flet ($e106 (or $e103 $e63))
+(flet ($e107 (and $e60 $e76))
+(flet ($e108 (xor $e94 $e54))
+(flet ($e109 (if_then_else $e106 $e57 $e100))
+(flet ($e110 (iff $e73 $e61))
+(flet ($e111 (xor $e95 $e65))
+(flet ($e112 (xor $e75 $e111))
+(flet ($e113 (or $e108 $e84))
+(flet ($e114 (not $e41))
+(flet ($e115 (not $e62))
+(flet ($e116 (if_then_else $e104 $e114 $e99))
+(flet ($e117 (not $e91))
+(flet ($e118 (iff $e50 $e53))
+(flet ($e119 (if_then_else $e113 $e89 $e72))
+(flet ($e120 (and $e79 $e93))
+(flet ($e121 (or $e120 $e83))
+(flet ($e122 (and $e64 $e38))
+(flet ($e123 (if_then_else $e35 $e70 $e39))
+(flet ($e124 (if_then_else $e33 $e87 $e55))
+(flet ($e125 (iff $e109 $e80))
+(flet ($e126 (implies $e122 $e78))
+(flet ($e127 (and $e118 $e45))
+(flet ($e128 (not $e96))
+(flet ($e129 (if_then_else $e112 $e127 $e117))
+(flet ($e130 (not $e121))
+(flet ($e131 (xor $e52 $e77))
+(flet ($e132 (and $e105 $e32))
+(flet ($e133 (iff $e132 $e36))
+(flet ($e134 (and $e92 $e128))
+(flet ($e135 (not $e130))
+(flet ($e136 (iff $e102 $e56))
+(flet ($e137 (xor $e44 $e85))
+(flet ($e138 (and $e126 $e135))
+(flet ($e139 (or $e110 $e49))
+(flet ($e140 (xor $e68 $e67))
+(flet ($e141 (or $e98 $e97))
+(flet ($e142 (xor $e137 $e131))
+(flet ($e143 (or $e115 $e124))
+(flet ($e144 (or $e116 $e40))
+(flet ($e145 (implies $e140 $e107))
+(flet ($e146 (if_then_else $e123 $e123 $e136))
+(flet ($e147 (and $e129 $e119))
+(flet ($e148 (or $e81 $e145))
+(flet ($e149 (if_then_else $e125 $e144 $e144))
+(flet ($e150 (and $e141 $e74))
+(flet ($e151 (not $e148))
+(flet ($e152 (or $e143 $e151))
+(flet ($e153 (implies $e88 $e138))
+(flet ($e154 (or $e146 $e134))
+(flet ($e155 (and $e47 $e150))
+(flet ($e156 (if_then_else $e147 $e142 $e155))
+(flet ($e157 (implies $e139 $e149))
+(flet ($e158 (not $e152))
+(flet ($e159 (if_then_else $e153 $e158 $e154))
+(flet ($e160 (if_then_else $e157 $e133 $e156))
+(flet ($e161 (not $e159))
+(flet ($e162 (xor $e161 $e160))
+(flet ($e163 (and $e162 (not (= ?e21 bv0[16]))))
+(flet ($e164 (and $e163 (not (= ?e21 (bvnot bv0[16])))))
+(flet ($e165 (and $e164 (not (= v1 bv0[6]))))
+(flet ($e166 (and $e165 (not (= v1 (bvnot bv0[6])))))
+(flet ($e167 (and $e166 (not (= v4 bv0[10]))))
+(flet ($e168 (and $e167 (not (= v4 (bvnot bv0[10])))))
+$e168
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/aufbv/fuzz11.smt b/test/regress/regress0/aufbv/fuzz11.smt
new file mode 100644
index 0000000..4e00564
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz11.smt
@@ -0,0 +1,131 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status sat
+:extrafuns ((v0 BitVec[11]))
+:extrafuns ((v1 BitVec[2]))
+:extrafuns ((v2 BitVec[9]))
+:extrafuns ((a3 Array[9:10]))
+:extrafuns ((a4 Array[9:14]))
+:extrafuns ((a5 Array[13:4]))
+:formula
+(let (?e6 bv28452[16])
+(let (?e7 (bvnand ?e6 (zero_extend[7] v2)))
+(let (?e8 (bvurem (sign_extend[7] v1) v2))
+(let (?e9 (ite (bvult (zero_extend[7] v2) ?e7) bv1[1] bv0[1]))
+(let (?e10 (bvmul (sign_extend[14] v1) ?e6))
+(let (?e11 (bvcomp v0 (sign_extend[2] v2)))
+(let (?e12 (select a3 (extract[8:0] v0)))
+(let (?e13 (select a4 (extract[9:1] ?e12)))
+(let (?e14 (select a3 (extract[11:3] ?e10)))
+(let (?e15 (select a4 (extract[8:0] ?e12)))
+(let (?e16 (bvmul v0 v0))
+(let (?e17 (ite (bvsge ?e14 (zero_extend[8] v1)) bv1[1] bv0[1]))
+(let (?e18 (bvsmod (zero_extend[6] ?e14) ?e10))
+(let (?e19 (repeat[1] ?e15))
+(let (?e20 (bvurem (sign_extend[12] v1) ?e19))
+(let (?e21 (bvnand (sign_extend[6] ?e12) ?e7))
+(let (?e22 (ite (bvslt (sign_extend[2] ?e20) ?e18) bv1[1] bv0[1]))
+(let (?e23 (ite (bvult (sign_extend[9] ?e11) ?e12) bv1[1] bv0[1]))
+(let (?e24 (ite (bvuge (zero_extend[1] ?e9) v1) bv1[1] bv0[1]))
+(let (?e25 (ite (distinct ?e6 (sign_extend[2] ?e15)) bv1[1] bv0[1]))
+(let (?e26 (ite (bvult ?e13 (zero_extend[3] v0)) bv1[1] bv0[1]))
+(let (?e27 (bvand ?e8 (zero_extend[8] ?e9)))
+(let (?e28 (bvxor (sign_extend[2] v2) v0))
+(flet ($e29 (bvuge (zero_extend[2] ?e19) ?e10))
+(flet ($e30 (bvult ?e10 (sign_extend[2] ?e20)))
+(flet ($e31 (bvuge ?e23 ?e24))
+(flet ($e32 (bvule (sign_extend[15] ?e23) ?e6))
+(flet ($e33 (bvsge (zero_extend[6] ?e12) ?e10))
+(flet ($e34 (bvule ?e9 ?e9))
+(flet ($e35 (bvugt ?e15 (sign_extend[13] ?e23)))
+(flet ($e36 (bvsge ?e8 (zero_extend[8] ?e17)))
+(flet ($e37 (bvule ?e20 (zero_extend[3] v0)))
+(flet ($e38 (bvsle ?e15 (zero_extend[5] ?e8)))
+(flet ($e39 (bvuge ?e17 ?e11))
+(flet ($e40 (bvuge ?e26 ?e26))
+(flet ($e41 (bvslt (sign_extend[10] ?e23) v0))
+(flet ($e42 (bvule (sign_extend[2] ?e13) ?e7))
+(flet ($e43 (bvugt ?e25 ?e26))
+(flet ($e44 (= (sign_extend[12] v1) ?e15))
+(flet ($e45 (distinct (zero_extend[13] ?e26) ?e13))
+(flet ($e46 (bvsge ?e26 ?e24))
+(flet ($e47 (bvsgt ?e7 ?e18))
+(flet ($e48 (bvugt (zero_extend[3] v0) ?e19))
+(flet ($e49 (bvslt ?e18 (zero_extend[15] ?e17)))
+(flet ($e50 (bvuge ?e14 (sign_extend[9] ?e25)))
+(flet ($e51 (distinct (sign_extend[15] ?e23) ?e6))
+(flet ($e52 (= ?e8 (sign_extend[8] ?e25)))
+(flet ($e53 (bvule ?e14 ?e12))
+(flet ($e54 (bvsle (sign_extend[8] ?e25) ?e8))
+(flet ($e55 (bvuge (sign_extend[14] v1) ?e6))
+(flet ($e56 (= (zero_extend[2] ?e13) ?e7))
+(flet ($e57 (bvult ?e20 (sign_extend[3] ?e28)))
+(flet ($e58 (= (sign_extend[1] ?e22) v1))
+(flet ($e59 (bvslt ?e6 (sign_extend[15] ?e23)))
+(flet ($e60 (bvuge ?e22 ?e17))
+(flet ($e61 (bvsle (sign_extend[2] v2) v0))
+(flet ($e62 (bvsge (sign_extend[13] ?e11) ?e13))
+(flet ($e63 (bvugt (sign_extend[15] ?e11) ?e7))
+(flet ($e64 (distinct ?e27 (zero_extend[8] ?e17)))
+(flet ($e65 (bvult (zero_extend[1] ?e9) v1))
+(flet ($e66 (bvslt ?e26 ?e22))
+(flet ($e67 (= ?e12 (sign_extend[9] ?e25)))
+(flet ($e68 (bvugt (sign_extend[3] ?e16) ?e13))
+(flet ($e69 (bvsgt (sign_extend[8] ?e9) ?e27))
+(flet ($e70 (bvsgt (zero_extend[15] ?e11) ?e21))
+(flet ($e71 (iff $e36 $e60))
+(flet ($e72 (iff $e59 $e35))
+(flet ($e73 (and $e70 $e66))
+(flet ($e74 (or $e69 $e57))
+(flet ($e75 (if_then_else $e62 $e64 $e47))
+(flet ($e76 (if_then_else $e56 $e52 $e73))
+(flet ($e77 (and $e58 $e49))
+(flet ($e78 (xor $e72 $e30))
+(flet ($e79 (not $e54))
+(flet ($e80 (iff $e45 $e34))
+(flet ($e81 (iff $e38 $e37))
+(flet ($e82 (or $e40 $e74))
+(flet ($e83 (not $e42))
+(flet ($e84 (and $e29 $e77))
+(flet ($e85 (if_then_else $e41 $e76 $e48))
+(flet ($e86 (iff $e53 $e44))
+(flet ($e87 (if_then_else $e82 $e46 $e50))
+(flet ($e88 (or $e78 $e79))
+(flet ($e89 (and $e87 $e88))
+(flet ($e90 (not $e51))
+(flet ($e91 (xor $e65 $e84))
+(flet ($e92 (or $e75 $e31))
+(flet ($e93 (not $e68))
+(flet ($e94 (or $e67 $e67))
+(flet ($e95 (or $e85 $e89))
+(flet ($e96 (if_then_else $e61 $e32 $e83))
+(flet ($e97 (or $e71 $e71))
+(flet ($e98 (not $e94))
+(flet ($e99 (if_then_else $e97 $e33 $e98))
+(flet ($e100 (implies $e43 $e43))
+(flet ($e101 (implies $e91 $e100))
+(flet ($e102 (and $e101 $e90))
+(flet ($e103 (or $e39 $e95))
+(flet ($e104 (if_then_else $e86 $e99 $e80))
+(flet ($e105 (iff $e102 $e96))
+(flet ($e106 (or $e63 $e63))
+(flet ($e107 (iff $e103 $e103))
+(flet ($e108 (implies $e93 $e55))
+(flet ($e109 (implies $e105 $e81))
+(flet ($e110 (if_then_else $e104 $e104 $e109))
+(flet ($e111 (and $e107 $e110))
+(flet ($e112 (if_then_else $e108 $e106 $e106))
+(flet ($e113 (or $e92 $e92))
+(flet ($e114 (not $e113))
+(flet ($e115 (iff $e114 $e114))
+(flet ($e116 (iff $e115 $e111))
+(flet ($e117 (and $e112 $e112))
+(flet ($e118 (not $e116))
+(flet ($e119 (implies $e117 $e118))
+(flet ($e120 (and $e119 (not (= v2 bv0[9]))))
+(flet ($e121 (and $e120 (not (= ?e19 bv0[14]))))
+(flet ($e122 (and $e121 (not (= ?e10 bv0[16]))))
+(flet ($e123 (and $e122 (not (= ?e10 (bvnot bv0[16])))))
+$e123
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/aufbv/fuzz12.smt b/test/regress/regress0/aufbv/fuzz12.smt
new file mode 100644
index 0000000..1bc3f16
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz12.smt
@@ -0,0 +1,181 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status sat
+:extrafuns ((v0 BitVec[15]))
+:extrafuns ((v1 BitVec[9]))
+:extrafuns ((v2 BitVec[15]))
+:extrafuns ((a3 Array[2:9]))
+:formula
+(let (?e4 bv4[3])
+(let (?e5 bv52[6])
+(let (?e6 (bvsdiv v2 v0))
+(let (?e7 (bvxor (zero_extend[9] ?e5) v2))
+(let (?e8 (zero_extend[0] ?e6))
+(let (?e9 (bvadd ?e6 (zero_extend[9] ?e5)))
+(let (?e10 (ite (bvule v1 v1) bv1[1] bv0[1]))
+(let (?e11 (bvxnor (sign_extend[12] ?e4) ?e9))
+(let (?e12 (store a3 (extract[1:0] ?e8) (extract[14:6] v2)))
+(let (?e13 (select ?e12 (extract[10:9] v0)))
+(let (?e14 (select ?e12 (extract[1:0] ?e4)))
+(let (?e15 (select a3 (extract[7:6] ?e8)))
+(let (?e16 (select a3 (extract[2:1] ?e5)))
+(let (?e17 (bvsmod (zero_extend[9] ?e5) v2))
+(let (?e18 (ite (distinct ?e7 ?e11) bv1[1] bv0[1]))
+(let (?e19 (bvsdiv (zero_extend[6] v1) ?e9))
+(let (?e20 (rotate_left[6] ?e14))
+(let (?e21 (bvadd v2 (sign_extend[6] ?e16)))
+(let (?e22 (bvsdiv (sign_extend[6] ?e20) ?e8))
+(let (?e23 (bvcomp ?e9 ?e11))
+(let (?e24 (sign_extend[0] ?e17))
+(let (?e25 (repeat[1] ?e13))
+(let (?e26 (extract[2:0] ?e11))
+(let (?e27 (bvudiv (zero_extend[6] ?e4) ?e13))
+(let (?e28 (bvxnor ?e15 ?e13))
+(let (?e29 (zero_extend[1] v0))
+(let (?e30 (bvmul ?e21 (zero_extend[12] ?e4)))
+(let (?e31 (extract[13:12] ?e19))
+(let (?e32 (ite (bvule ?e15 ?e13) bv1[1] bv0[1]))
+(let (?e33 (ite (bvugt ?e6 ?e24) bv1[1] bv0[1]))
+(let (?e34 (ite (distinct (zero_extend[1] ?e10) ?e31) bv1[1] bv0[1]))
+(flet ($e35 (= ?e24 (sign_extend[14] ?e23)))
+(flet ($e36 (= ?e27 ?e15))
+(flet ($e37 (bvule ?e29 (zero_extend[1] ?e24)))
+(flet ($e38 (bvule v1 (sign_extend[8] ?e33)))
+(flet ($e39 (bvule (zero_extend[6] ?e28) ?e17))
+(flet ($e40 (distinct (zero_extend[2] ?e23) ?e26))
+(flet ($e41 (bvugt ?e21 (sign_extend[6] ?e25)))
+(flet ($e42 (bvult (sign_extend[6] ?e20) ?e30))
+(flet ($e43 (bvsgt (zero_extend[6] v1) ?e11))
+(flet ($e44 (bvult ?e26 (zero_extend[2] ?e34)))
+(flet ($e45 (bvsle ?e31 ?e31))
+(flet ($e46 (distinct (zero_extend[8] ?e33) ?e28))
+(flet ($e47 (distinct v0 (sign_extend[12] ?e4)))
+(flet ($e48 (bvslt ?e19 (zero_extend[14] ?e10)))
+(flet ($e49 (bvsgt (sign_extend[6] v1) ?e22))
+(flet ($e50 (bvule (sign_extend[12] ?e4) ?e24))
+(flet ($e51 (bvugt (zero_extend[8] ?e23) ?e25))
+(flet ($e52 (bvugt v1 (sign_extend[6] ?e26)))
+(flet ($e53 (bvule ?e14 ?e27))
+(flet ($e54 (bvslt ?e27 ?e16))
+(flet ($e55 (bvugt ?e7 (zero_extend[6] ?e14)))
+(flet ($e56 (bvule ?e21 ?e11))
+(flet ($e57 (bvsge v2 (zero_extend[14] ?e18)))
+(flet ($e58 (distinct (zero_extend[6] ?e15) ?e22))
+(flet ($e59 (bvult ?e13 ?e25))
+(flet ($e60 (bvult (sign_extend[12] ?e26) ?e9))
+(flet ($e61 (bvsgt ?e29 (sign_extend[15] ?e18)))
+(flet ($e62 (bvule ?e27 (zero_extend[8] ?e23)))
+(flet ($e63 (bvuge ?e30 ?e7))
+(flet ($e64 (bvsgt (zero_extend[7] ?e14) ?e29))
+(flet ($e65 (bvugt (zero_extend[14] ?e33) ?e7))
+(flet ($e66 (bvslt v2 (zero_extend[14] ?e10)))
+(flet ($e67 (bvsle (sign_extend[12] ?e4) ?e19))
+(flet ($e68 (bvsle ?e6 v0))
+(flet ($e69 (bvult ?e25 ?e28))
+(flet ($e70 (bvugt ?e29 (zero_extend[13] ?e4)))
+(flet ($e71 (bvuge ?e8 ?e30))
+(flet ($e72 (bvuge ?e21 (zero_extend[12] ?e26)))
+(flet ($e73 (bvule ?e14 (zero_extend[6] ?e4)))
+(flet ($e74 (bvslt ?e24 (sign_extend[14] ?e10)))
+(flet ($e75 (bvugt v0 (zero_extend[6] ?e13)))
+(flet ($e76 (= ?e15 ?e16))
+(flet ($e77 (distinct ?e29 (sign_extend[1] v0)))
+(flet ($e78 (= ?e5 (sign_extend[5] ?e23)))
+(flet ($e79 (= (zero_extend[8] ?e34) ?e16))
+(flet ($e80 (bvsle ?e15 (sign_extend[3] ?e5)))
+(flet ($e81 (= (zero_extend[6] ?e14) ?e24))
+(flet ($e82 (bvslt ?e17 (sign_extend[6] ?e25)))
+(flet ($e83 (distinct v2 ?e8))
+(flet ($e84 (bvule v0 (zero_extend[6] ?e14)))
+(flet ($e85 (bvslt (sign_extend[6] ?e16) ?e9))
+(flet ($e86 (bvsge ?e7 (sign_extend[6] ?e25)))
+(flet ($e87 (bvuge v1 ?e15))
+(flet ($e88 (bvugt ?e13 (sign_extend[6] ?e4)))
+(flet ($e89 (= ?e19 (sign_extend[6] ?e20)))
+(flet ($e90 (bvugt ?e9 (sign_extend[6] ?e13)))
+(flet ($e91 (bvule ?e15 (zero_extend[7] ?e31)))
+(flet ($e92 (bvsle ?e21 ?e19))
+(flet ($e93 (bvsle ?e29 (sign_extend[15] ?e23)))
+(flet ($e94 (bvugt (zero_extend[14] ?e32) ?e6))
+(flet ($e95 (and $e78 $e39))
+(flet ($e96 (implies $e35 $e94))
+(flet ($e97 (xor $e69 $e88))
+(flet ($e98 (and $e89 $e64))
+(flet ($e99 (and $e82 $e90))
+(flet ($e100 (or $e51 $e58))
+(flet ($e101 (and $e91 $e85))
+(flet ($e102 (and $e98 $e45))
+(flet ($e103 (and $e41 $e43))
+(flet ($e104 (iff $e60 $e67))
+(flet ($e105 (xor $e84 $e46))
+(flet ($e106 (iff $e71 $e70))
+(flet ($e107 (iff $e42 $e96))
+(flet ($e108 (not $e61))
+(flet ($e109 (or $e101 $e76))
+(flet ($e110 (if_then_else $e83 $e102 $e38))
+(flet ($e111 (or $e37 $e92))
+(flet ($e112 (and $e54 $e62))
+(flet ($e113 (and $e47 $e57))
+(flet ($e114 (iff $e104 $e53))
+(flet ($e115 (or $e63 $e49))
+(flet ($e116 (xor $e56 $e108))
+(flet ($e117 (not $e109))
+(flet ($e118 (or $e59 $e72))
+(flet ($e119 (implies $e36 $e103))
+(flet ($e120 (and $e110 $e44))
+(flet ($e121 (iff $e99 $e80))
+(flet ($e122 (iff $e112 $e50))
+(flet ($e123 (and $e75 $e119))
+(flet ($e124 (iff $e87 $e68))
+(flet ($e125 (iff $e123 $e95))
+(flet ($e126 (or $e100 $e97))
+(flet ($e127 (not $e118))
+(flet ($e128 (iff $e115 $e116))
+(flet ($e129 (or $e126 $e66))
+(flet ($e130 (xor $e121 $e128))
+(flet ($e131 (iff $e106 $e79))
+(flet ($e132 (not $e105))
+(flet ($e133 (iff $e130 $e125))
+(flet ($e134 (implies $e120 $e81))
+(flet ($e135 (xor $e73 $e55))
+(flet ($e136 (implies $e129 $e132))
+(flet ($e137 (implies $e65 $e122))
+(flet ($e138 (or $e52 $e133))
+(flet ($e139 (not $e74))
+(flet ($e140 (and $e139 $e114))
+(flet ($e141 (implies $e113 $e140))
+(flet ($e142 (implies $e40 $e48))
+(flet ($e143 (not $e134))
+(flet ($e144 (and $e107 $e107))
+(flet ($e145 (if_then_else $e77 $e117 $e138))
+(flet ($e146 (implies $e135 $e131))
+(flet ($e147 (xor $e127 $e136))
+(flet ($e148 (or $e137 $e147))
+(flet ($e149 (implies $e141 $e93))
+(flet ($e150 (or $e149 $e144))
+(flet ($e151 (xor $e143 $e145))
+(flet ($e152 (implies $e124 $e86))
+(flet ($e153 (and $e111 $e111))
+(flet ($e154 (xor $e153 $e152))
+(flet ($e155 (xor $e154 $e146))
+(flet ($e156 (iff $e155 $e142))
+(flet ($e157 (implies $e148 $e156))
+(flet ($e158 (implies $e150 $e151))
+(flet ($e159 (and $e158 $e158))
+(flet ($e160 (implies $e157 $e157))
+(flet ($e161 (iff $e159 $e159))
+(flet ($e162 (xor $e161 $e161))
+(flet ($e163 (or $e160 $e160))
+(flet ($e164 (or $e162 $e163))
+(flet ($e165 (and $e164 (not (= ?e8 bv0[15]))))
+(flet ($e166 (and $e165 (not (= ?e8 (bvnot bv0[15])))))
+(flet ($e167 (and $e166 (not (= ?e13 bv0[9]))))
+(flet ($e168 (and $e167 (not (= v2 bv0[15]))))
+(flet ($e169 (and $e168 (not (= v2 (bvnot bv0[15])))))
+(flet ($e170 (and $e169 (not (= ?e9 bv0[15]))))
+(flet ($e171 (and $e170 (not (= ?e9 (bvnot bv0[15])))))
+(flet ($e172 (and $e171 (not (= v0 bv0[15]))))
+(flet ($e173 (and $e172 (not (= v0 (bvnot bv0[15])))))
+$e173
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/aufbv/fuzz13.smt b/test/regress/regress0/aufbv/fuzz13.smt
new file mode 100644
index 0000000..d8c0b84
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz13.smt
@@ -0,0 +1,90 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status sat
+:extrafuns ((v0 BitVec[9]))
+:extrafuns ((v1 BitVec[14]))
+:extrafuns ((a2 Array[2:5]))
+:extrafuns ((a3 Array[8:5]))
+:formula
+(let (?e4 bv712[10])
+(let (?e5 (ite (bvslt ?e4 ?e4) bv1[1] bv0[1]))
+(let (?e6 (ite (= bv1[1] (extract[2:2] v1)) (sign_extend[5] v0) v1))
+(let (?e7 (store a2 (sign_extend[1] ?e5) (extract[12:8] ?e6)))
+(let (?e8 (store ?e7 (zero_extend[1] ?e5) (extract[6:2] v1)))
+(let (?e9 (select ?e8 (extract[12:11] v1)))
+(let (?e10 (select a2 (extract[2:1] ?e4)))
+(let (?e11 (store ?e8 (zero_extend[1] ?e5) ?e10))
+(let (?e12 (select ?e11 (extract[1:0] ?e10)))
+(let (?e13 (select a2 (extract[3:2] ?e9)))
+(let (?e14 (ite (bvsge (zero_extend[4] ?e10) v0) bv1[1] bv0[1]))
+(let (?e15 (bvnand ?e4 (zero_extend[5] ?e13)))
+(let (?e16 (ite (bvule ?e12 ?e12) bv1[1] bv0[1]))
+(let (?e17 (extract[0:0] ?e5))
+(let (?e18 (zero_extend[0] ?e6))
+(let (?e19 (bvsdiv (zero_extend[9] ?e12) v1))
+(let (?e20 (bvsdiv (zero_extend[9] ?e9) ?e6))
+(flet ($e21 (bvugt v1 (zero_extend[9] ?e12)))
+(flet ($e22 (bvuge ?e9 (sign_extend[4] ?e14)))
+(flet ($e23 (bvslt ?e6 (sign_extend[9] ?e10)))
+(flet ($e24 (bvugt ?e19 v1))
+(flet ($e25 (bvult (sign_extend[4] ?e12) v0))
+(flet ($e26 (= (sign_extend[4] ?e15) v1))
+(flet ($e27 (= ?e19 (sign_extend[9] ?e12)))
+(flet ($e28 (bvsge (zero_extend[9] ?e9) ?e6))
+(flet ($e29 (bvuge ?e13 (zero_extend[4] ?e5)))
+(flet ($e30 (distinct (zero_extend[4] ?e14) ?e9))
+(flet ($e31 (bvsle (zero_extend[4] ?e14) ?e12))
+(flet ($e32 (bvslt ?e10 ?e12))
+(flet ($e33 (distinct ?e6 ?e18))
+(flet ($e34 (bvsge (sign_extend[4] ?e12) v0))
+(flet ($e35 (bvsge ?e6 (zero_extend[5] v0)))
+(flet ($e36 (distinct v0 (sign_extend[4] ?e13)))
+(flet ($e37 (= ?e18 (sign_extend[5] v0)))
+(flet ($e38 (bvugt ?e16 ?e5))
+(flet ($e39 (bvslt ?e9 (sign_extend[4] ?e16)))
+(flet ($e40 (distinct (zero_extend[9] ?e13) ?e19))
+(flet ($e41 (bvsle ?e19 (zero_extend[13] ?e5)))
+(flet ($e42 (bvslt (zero_extend[4] ?e12) v0))
+(flet ($e43 (bvugt ?e14 ?e17))
+(flet ($e44 (bvsle (sign_extend[4] ?e14) ?e13))
+(flet ($e45 (bvugt (zero_extend[4] ?e14) ?e12))
+(flet ($e46 (bvsge ?e19 ?e6))
+(flet ($e47 (bvsle ?e10 (zero_extend[4] ?e14)))
+(flet ($e48 (bvsle ?e20 (zero_extend[4] ?e4)))
+(flet ($e49 (and $e22 $e30))
+(flet ($e50 (or $e38 $e29))
+(flet ($e51 (xor $e41 $e34))
+(flet ($e52 (iff $e21 $e48))
+(flet ($e53 (iff $e46 $e23))
+(flet ($e54 (iff $e33 $e44))
+(flet ($e55 (and $e24 $e43))
+(flet ($e56 (implies $e32 $e31))
+(flet ($e57 (or $e56 $e47))
+(flet ($e58 (xor $e50 $e40))
+(flet ($e59 (or $e57 $e45))
+(flet ($e60 (iff $e42 $e59))
+(flet ($e61 (or $e35 $e36))
+(flet ($e62 (if_then_else $e51 $e60 $e25))
+(flet ($e63 (or $e55 $e54))
+(flet ($e64 (xor $e53 $e39))
+(flet ($e65 (and $e63 $e63))
+(flet ($e66 (or $e61 $e28))
+(flet ($e67 (and $e27 $e27))
+(flet ($e68 (or $e26 $e26))
+(flet ($e69 (or $e65 $e49))
+(flet ($e70 (xor $e58 $e62))
+(flet ($e71 (implies $e68 $e37))
+(flet ($e72 (if_then_else $e52 $e52 $e70))
+(flet ($e73 (implies $e66 $e67))
+(flet ($e74 (xor $e64 $e71))
+(flet ($e75 (and $e73 $e73))
+(flet ($e76 (implies $e72 $e69))
+(flet ($e77 (xor $e76 $e75))
+(flet ($e78 (iff $e77 $e74))
+(flet ($e79 (and $e78 (not (= v1 bv0[14]))))
+(flet ($e80 (and $e79 (not (= v1 (bvnot bv0[14])))))
+(flet ($e81 (and $e80 (not (= ?e6 bv0[14]))))
+(flet ($e82 (and $e81 (not (= ?e6 (bvnot bv0[14])))))
+$e82
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/aufbv/fuzz14.smt b/test/regress/regress0/aufbv/fuzz14.smt
new file mode 100644
index 0000000..094e7ec
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz14.smt
@@ -0,0 +1,67 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status sat
+:extrafuns ((v0 BitVec[6]))
+:extrafuns ((v1 BitVec[2]))
+:extrafuns ((v2 BitVec[13]))
+:extrafuns ((v3 BitVec[9]))
+:extrafuns ((a4 Array[5:15]))
+:formula
+(let (?e5 bv2[3])
+(let (?e6 (bvand v3 v3))
+(let (?e7 (bvxor (sign_extend[7] v1) ?e6))
+(let (?e8 (bvashr (zero_extend[7] v0) v2))
+(let (?e9 (sign_extend[2] ?e5))
+(let (?e10 (store a4 (extract[4:0] ?e8) (sign_extend[12] ?e5)))
+(let (?e11 (store ?e10 (zero_extend[3] v1) (sign_extend[6] ?e6)))
+(let (?e12 (store a4 (extract[4:0] ?e7) (sign_extend[6] ?e6)))
+(let (?e13 (select ?e10 (zero_extend[2] ?e5)))
+(let (?e14 (store ?e10 (sign_extend[3] v1) (zero_extend[10] ?e9)))
+(let (?e15 (store ?e11 (sign_extend[3] v1) (sign_extend[6] v3)))
+(let (?e16 (ite (bvsge (zero_extend[7] v1) ?e6) bv1[1] bv0[1]))
+(let (?e17 (bvcomp ?e8 (sign_extend[4] ?e7)))
+(let (?e18 (ite (= bv1[1] (extract[4:4] ?e6)) (zero_extend[2] v2) ?e13))
+(let (?e19 (ite (bvuge ?e8 ?e8) bv1[1] bv0[1]))
+(let (?e20 (repeat[1] ?e9))
+(let (?e21 (bvor (zero_extend[6] ?e5) ?e6))
+(let (?e22 (bvnot v3))
+(let (?e23 (bvnand v0 (sign_extend[1] ?e20)))
+(flet ($e24 (bvsge v2 (sign_extend[7] ?e23)))
+(flet ($e25 (bvsgt (sign_extend[6] v3) ?e13))
+(flet ($e26 (distinct (zero_extend[2] ?e16) ?e5))
+(flet ($e27 (= v1 (sign_extend[1] ?e17)))
+(flet ($e28 (bvule ?e8 (zero_extend[4] ?e6)))
+(flet ($e29 (bvule (sign_extend[4] ?e7) ?e8))
+(flet ($e30 (bvslt (sign_extend[12] ?e16) ?e8))
+(flet ($e31 (bvsgt ?e6 ?e6))
+(flet ($e32 (bvsgt ?e18 (zero_extend[14] ?e19)))
+(flet ($e33 (bvult (zero_extend[3] v1) ?e20))
+(flet ($e34 (distinct v3 (sign_extend[4] ?e9)))
+(flet ($e35 (bvule ?e22 (sign_extend[8] ?e17)))
+(flet ($e36 (bvule (zero_extend[2] v2) ?e13))
+(flet ($e37 (bvuge ?e18 (sign_extend[9] ?e23)))
+(flet ($e38 (= (sign_extend[10] ?e5) v2))
+(flet ($e39 (= ?e13 (zero_extend[2] v2)))
+(flet ($e40 (bvslt (sign_extend[8] ?e19) ?e21))
+(flet ($e41 (bvule (sign_extend[5] ?e19) v0))
+(flet ($e42 (if_then_else $e31 $e25 $e27))
+(flet ($e43 (implies $e26 $e41))
+(flet ($e44 (or $e29 $e38))
+(flet ($e45 (or $e42 $e28))
+(flet ($e46 (xor $e30 $e35))
+(flet ($e47 (not $e46))
+(flet ($e48 (if_then_else $e37 $e39 $e33))
+(flet ($e49 (or $e32 $e47))
+(flet ($e50 (xor $e43 $e34))
+(flet ($e51 (not $e44))
+(flet ($e52 (xor $e51 $e48))
+(flet ($e53 (and $e24 $e36))
+(flet ($e54 (or $e53 $e49))
+(flet ($e55 (if_then_else $e45 $e45 $e54))
+(flet ($e56 (if_then_else $e52 $e40 $e50))
+(flet ($e57 (not $e56))
+(flet ($e58 (and $e55 $e55))
+(flet ($e59 (or $e58 $e57))
+$e59
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/aufbv/fuzz15.smt b/test/regress/regress0/aufbv/fuzz15.smt
new file mode 100644
index 0000000..83950d3
--- /dev/null
+++ b/test/regress/regress0/aufbv/fuzz15.smt
@@ -0,0 +1,103 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status sat
+:extrafuns ((v0 BitVec[12]))
+:extrafuns ((a1 Array[10:2]))
+:formula
+(let (?e2 bv62635[16])
+(let (?e3 (bvand ?e2 ?e2))
+(let (?e4 (bvnand v0 v0))
+(let (?e5 (store a1 (extract[9:0] v0) (extract[5:4] ?e3)))
+(let (?e6 (store ?e5 (extract[10:1] ?e4) (extract[10:9] ?e4)))
+(let (?e7 (select ?e5 (extract[10:1] v0)))
+(let (?e8 (select ?e6 (extract[14:5] ?e3)))
+(let (?e9 (store ?e5 (extract[15:6] ?e3) (extract[11:10] ?e2)))
+(let (?e10 (select ?e6 (sign_extend[8] ?e8)))
+(let (?e11 (select ?e5 (extract[9:0] ?e4)))
+(let (?e12 (bvnot v0))
+(let (?e13 (zero_extend[10] ?e10))
+(let (?e14 (bvsub ?e2 (sign_extend[14] ?e8)))
+(let (?e15 (bvsmod (sign_extend[10] ?e8) ?e13))
+(let (?e16 (bvurem ?e14 ?e14))
+(let (?e17 (ite (= ?e15 ?e12) bv1[1] bv0[1]))
+(let (?e18 (bvadd (sign_extend[14] ?e7) ?e3))
+(let (?e19 (sign_extend[3] ?e13))
+(let (?e20 (bvurem (zero_extend[11] ?e17) ?e12))
+(let (?e21 (sign_extend[8] ?e11))
+(let (?e22 (bvxnor (zero_extend[4] ?e4) ?e14))
+(flet ($e23 (bvult ?e22 (sign_extend[4] v0)))
+(flet ($e24 (bvsge ?e18 (sign_extend[4] ?e4)))
+(flet ($e25 (bvsgt ?e2 (sign_extend[4] ?e15)))
+(flet ($e26 (bvsge ?e22 (sign_extend[4] ?e15)))
+(flet ($e27 (= ?e20 ?e12))
+(flet ($e28 (distinct (sign_extend[10] ?e7) ?e12))
+(flet ($e29 (distinct (zero_extend[13] ?e7) ?e19))
+(flet ($e30 (bvsgt ?e2 (sign_extend[4] ?e4)))
+(flet ($e31 (bvult ?e2 (zero_extend[4] v0)))
+(flet ($e32 (bvslt (zero_extend[10] ?e8) ?e12))
+(flet ($e33 (bvslt ?e4 ?e4))
+(flet ($e34 (bvsle ?e15 ?e15))
+(flet ($e35 (bvugt (zero_extend[14] ?e10) ?e2))
+(flet ($e36 (bvult ?e8 ?e7))
+(flet ($e37 (bvugt (sign_extend[14] ?e10) ?e16))
+(flet ($e38 (bvult v0 ?e20))
+(flet ($e39 (bvsgt ?e8 ?e10))
+(flet ($e40 (bvsle (zero_extend[11] ?e17) v0))
+(flet ($e41 (distinct (zero_extend[14] ?e17) ?e19))
+(flet ($e42 (distinct (zero_extend[11] ?e17) ?e20))
+(flet ($e43 (bvule (sign_extend[10] ?e7) ?e12))
+(flet ($e44 (bvsle ?e18 (sign_extend[14] ?e10)))
+(flet ($e45 (bvsgt ?e2 ?e14))
+(flet ($e46 (bvult ?e13 v0))
+(flet ($e47 (bvsge ?e20 (zero_extend[11] ?e17)))
+(flet ($e48 (bvule (sign_extend[5] ?e21) ?e19))
+(flet ($e49 (bvsgt ?e16 (sign_extend[6] ?e21)))
+(flet ($e50 (bvult (sign_extend[14] ?e11) ?e14))
+(flet ($e51 (distinct ?e22 (zero_extend[4] ?e12)))
+(flet ($e52 (bvuge (sign_extend[4] ?e12) ?e22))
+(flet ($e53 (bvsgt (sign_extend[2] ?e21) ?e13))
+(flet ($e54 (bvslt (sign_extend[14] ?e8) ?e2))
+(flet ($e55 (bvule ?e13 (zero_extend[10] ?e11)))
+(flet ($e56 (= ?e2 ?e14))
+(flet ($e57 (distinct ?e22 ?e3))
+(flet ($e58 (or $e52 $e23))
+(flet ($e59 (implies $e48 $e41))
+(flet ($e60 (if_then_else $e25 $e58 $e37))
+(flet ($e61 (implies $e51 $e32))
+(flet ($e62 (not $e40))
+(flet ($e63 (not $e54))
+(flet ($e64 (and $e34 $e31))
+(flet ($e65 (and $e47 $e59))
+(flet ($e66 (implies $e43 $e28))
+(flet ($e67 (iff $e49 $e65))
+(flet ($e68 (if_then_else $e56 $e53 $e60))
+(flet ($e69 (implies $e57 $e30))
+(flet ($e70 (if_then_else $e69 $e42 $e38))
+(flet ($e71 (iff $e68 $e39))
+(flet ($e72 (xor $e44 $e33))
+(flet ($e73 (implies $e70 $e67))
+(flet ($e74 (or $e45 $e24))
+(flet ($e75 (and $e26 $e74))
+(flet ($e76 (not $e36))
+(flet ($e77 (and $e76 $e71))
+(flet ($e78 (not $e50))
+(flet ($e79 (implies $e46 $e61))
+(flet ($e80 (iff $e66 $e72))
+(flet ($e81 (or $e73 $e29))
+(flet ($e82 (if_then_else $e27 $e77 $e79))
+(flet ($e83 (implies $e35 $e81))
+(flet ($e84 (xor $e62 $e55))
+(flet ($e85 (not $e80))
+(flet ($e86 (iff $e84 $e82))
+(flet ($e87 (implies $e64 $e63))
+(flet ($e88 (implies $e87 $e83))
+(flet ($e89 (if_then_else $e75 $e85 $e88))
+(flet ($e90 (xor $e86 $e78))
+(flet ($e91 (implies $e89 $e90))
+(flet ($e92 (and $e91 (not (= ?e13 bv0[12]))))
+(flet ($e93 (and $e92 (not (= ?e13 (bvnot bv0[12])))))
+(flet ($e94 (and $e93 (not (= ?e14 bv0[16]))))
+(flet ($e95 (and $e94 (not (= ?e12 bv0[12]))))
+$e95
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/aufbv/rewrite_bug.smt b/test/regress/regress0/aufbv/rewrite_bug.smt
new file mode 100644
index 0000000..c0906ba
--- /dev/null
+++ b/test/regress/regress0/aufbv/rewrite_bug.smt
@@ -0,0 +1,28 @@
+(benchmark B_
+:logic QF_AUFBV
+:extrafuns ((a Array[32:8]))
+:status sat
+:formula
+(flet ($n1 true)
+(let (?n2 bv0[8])
+(let (?n3 (sign_extend[24] ?n2))
+(let (?n4 bv1[32])
+(let (?n5 bv1[8])
+(let (?n6 (store a ?n4 ?n5))
+(let (?n7 bv0[32])
+(let (?n8 (select a ?n4))
+(let (?n9 (sign_extend[24] ?n8))
+(let (?n10 (extract[7:0] ?n9))
+(let (?n11 (store ?n6 ?n7 ?n10))
+(let (?n12 (select ?n11 ?n4))
+(let (?n13 (store ?n11 ?n4 ?n12))
+(let (?n14 (select ?n13 ?n7))
+(let (?n15 (sign_extend[24] ?n14))
+(flet ($n16 (bvslt ?n3 ?n15))
+(flet ($n17 (not $n16))
+(let (?n18 (select ?n13 ?n4))
+(let (?n19 (sign_extend[24] ?n18))
+(flet ($n20 (bvslt ?n7 ?n19))
+(flet ($n21 (and $n1 $n1 $n1 $n1 $n17 $n20))
+$n21
+))))))))))))))))))))))
diff --git a/test/regress/regress0/aufbv/try3_sameret_functions_fse-bfs_tac.calc_next.il.fse-bfs.delta01.smt b/test/regress/regress0/aufbv/try3_sameret_functions_fse-bfs_tac.calc_next.il.fse-bfs.delta01.smt
new file mode 100644
index 0000000..8d1b9f6
--- /dev/null
+++ b/test/regress/regress0/aufbv/try3_sameret_functions_fse-bfs_tac.calc_next.il.fse-bfs.delta01.smt
@@ -0,0 +1,48 @@
+(benchmark B_
+:logic QF_AUFBV
+:extrafuns ((R_ESP_1_58 BitVec[32]))
+:extrafuns ((mem_35_224 Array[32:8]))
+:status sat
+:formula
+(let (?n1 bv0[32])
+(let (?n2 bv0[24])
+(let (?n3 bv0[8])
+(let (?n4 (store mem_35_224 ?n1 ?n3))
+(let (?n5 bv16[32])
+(let (?n6 bv1[32])
+(let (?n7 (bvsub R_ESP_1_58 ?n6))
+(let (?n8 (select ?n4 ?n7))
+(let (?n9 (concat ?n2 ?n8))
+(let (?n10 (bvadd ?n5 ?n9))
+(let (?n11 (select ?n4 ?n10))
+(let (?n12 (concat ?n2 ?n11))
+(let (?n13 (extract[7:0] ?n12))
+(let (?n14 (store ?n4 ?n1 ?n13))
+(let (?n15 (select ?n4 ?n6))
+(let (?n16 (concat ?n2 ?n15))
+(let (?n17 (bvadd ?n5 ?n16))
+(let (?n18 (bvadd ?n6 ?n17))
+(let (?n19 (store ?n14 ?n18 ?n3))
+(let (?n20 (store ?n19 ?n17 ?n3))
+(let (?n21 (select ?n20 ?n6))
+(let (?n22 (concat ?n2 ?n21))
+(let (?n23 bv8[32])
+(let (?n24 (bvadd ?n23 ?n9))
+(let (?n25 (select ?n20 ?n24))
+(let (?n26 (concat ?n2 ?n25))
+(let (?n27 (bvor ?n22 ?n26))
+(let (?n28 (store ?n20 ?n27 ?n3))
+(let (?n29 (select ?n20 ?n10))
+(let (?n30 (concat ?n2 ?n29))
+(let (?n31 bv2[32])
+(let (?n32 (bvadd ?n31 ?n10))
+(let (?n33 (select ?n20 ?n32))
+(let (?n34 (concat ?n2 ?n33))
+(let (?n35 (bvor ?n30 ?n34))
+(let (?n36 (extract[7:0] ?n35))
+(let (?n37 (store ?n28 ?n1 ?n36))
+(let (?n38 (select ?n37 R_ESP_1_58))
+(let (?n39 (concat ?n2 ?n38))
+(flet ($n40 (= ?n1 ?n39))
+$n40
+)))))))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/aufbv/try5_small_difret_functions_wp_su.set_char_quoting.il.wp.delta01.smt b/test/regress/regress0/aufbv/try5_small_difret_functions_wp_su.set_char_quoting.il.wp.delta01.smt
new file mode 100644
index 0000000..028427a
--- /dev/null
+++ b/test/regress/regress0/aufbv/try5_small_difret_functions_wp_su.set_char_quoting.il.wp.delta01.smt
@@ -0,0 +1,28 @@
+(benchmark B_
+:logic QF_AUFBV
+:extrafuns ((R_ESP_1_58 BitVec[32]))
+:extrafuns ((mem_35_197 Array[32:8]))
+:status sat
+:formula
+(let (?n1 bv0[32])
+(let (?n2 bv0[24])
+(let (?n3 bv1[32])
+(let (?n4 (bvadd ?n3 R_ESP_1_58))
+(let (?n5 bv0[8])
+(let (?n6 (store mem_35_197 ?n4 ?n5))
+(let (?n7 (bvadd ?n3 ?n4))
+(let (?n8 (store ?n6 ?n7 ?n5))
+(let (?n9 (store ?n8 ?n1 ?n5))
+(let (?n10 (select ?n6 R_ESP_1_58))
+(let (?n11 (concat ?n2 ?n10))
+(let (?n12 (bvadd ?n3 ?n11))
+(let (?n13 (select ?n9 ?n12))
+(let (?n14 (concat ?n2 ?n13))
+(let (?n15 (bvxor ?n3 ?n14))
+(let (?n16 (extract[7:0] ?n15))
+(let (?n17 (store ?n9 ?n12 ?n16))
+(let (?n18 (select ?n17 ?n1))
+(let (?n19 (concat ?n2 ?n18))
+(flet ($n20 (= ?n1 ?n19))
+$n20
+)))))))))))))))))))))
diff --git a/test/regress/regress0/aufbv/wchains010ue.delta01.smt b/test/regress/regress0/aufbv/wchains010ue.delta01.smt
new file mode 100644
index 0000000..28a892e
--- /dev/null
+++ b/test/regress/regress0/aufbv/wchains010ue.delta01.smt
@@ -0,0 +1,36 @@
+(benchmark wchains010ue.smt
+:logic QF_AUFBV
+:extrafuns ((v6 BitVec[32]))
+:extrafuns ((a1 Array[32:8]))
+:extrafuns ((v15 BitVec[32]))
+:status sat
+:formula
+(let (?n1 bv0[1])
+(let (?n2 (extract[1:0] v6))
+(let (?n3 bv0[2])
+(flet ($n4 (= ?n2 ?n3))
+(let (?n5 bv1[1])
+(let (?n6 (ite $n4 ?n5 ?n1))
+(let (?n7 bv0[8])
+(let (?n8 (store a1 v15 ?n7))
+(let (?n9 bv1[32])
+(let (?n10 (bvadd ?n9 v15))
+(let (?n11 (store ?n8 ?n10 ?n7))
+(let (?n12 bv3[32])
+(let (?n13 (bvadd ?n12 v15))
+(let (?n14 (store ?n11 ?n13 ?n7))
+(let (?n15 (extract[7:0] v6))
+(let (?n16 (store a1 v6 ?n15))
+(let (?n17 (bvadd ?n9 v6))
+(let (?n18 bv1[8])
+(let (?n19 (store ?n16 ?n17 ?n18))
+(let (?n20 (bvadd ?n12 v6))
+(let (?n21 (store ?n19 ?n20 ?n18))
+(flet ($n22 (= ?n14 ?n21))
+(let (?n23 (ite $n22 ?n5 ?n1))
+(let (?n24 (bvnot ?n23))
+(let (?n25 (bvand ?n6 ?n24))
+(flet ($n26 (= ?n1 ?n25))
+(flet ($n27 (not $n26))
+$n27
+))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/aufbv/wchains010ue.delta02.smt b/test/regress/regress0/aufbv/wchains010ue.delta02.smt
new file mode 100644
index 0000000..d5ddf64
--- /dev/null
+++ b/test/regress/regress0/aufbv/wchains010ue.delta02.smt
@@ -0,0 +1,35 @@
+(benchmark wchains010ue.smt
+:logic QF_AUFBV
+:extrafuns ((v6 BitVec[32]))
+:extrafuns ((v7 BitVec[32]))
+:extrafuns ((a1 Array[32:8]))
+:status unsat
+:formula
+(let (?n1 bv0[1])
+(let (?n2 bv0[2])
+(let (?n3 (extract[1:0] v6))
+(flet ($n4 (= ?n2 ?n3))
+(let (?n5 bv1[1])
+(let (?n6 (ite $n4 ?n5 ?n1))
+(let (?n7 (extract[23:16] v6))
+(let (?n8 (store a1 v6 ?n7))
+(let (?n9 bv0[32])
+(let (?n10 bv0[8])
+(let (?n11 (store ?n8 ?n9 ?n10))
+(let (?n12 (extract[23:16] v7))
+(let (?n13 (store ?n11 v7 ?n12))
+(let (?n14 bv1[32])
+(let (?n15 (store ?n13 ?n14 ?n10))
+(let (?n16 (store ?n15 ?n9 ?n10))
+(let (?n17 (store a1 ?n9 ?n10))
+(let (?n18 (store ?n17 v7 ?n12))
+(let (?n19 (store ?n18 ?n14 ?n10))
+(let (?n20 (store ?n19 v6 ?n7))
+(flet ($n21 (= ?n16 ?n20))
+(let (?n22 (ite $n21 ?n5 ?n1))
+(let (?n23 (bvnot ?n22))
+(let (?n24 (bvand ?n6 ?n23))
+(flet ($n25 (= ?n1 ?n24))
+(flet ($n26 (not $n25))
+$n26
+)))))))))))))))))))))))))))
diff --git a/test/regress/regress0/auflia/Makefile.am b/test/regress/regress0/auflia/Makefile.am
new file mode 100644
index 0000000..8ce7ae1
--- /dev/null
+++ b/test/regress/regress0/auflia/Makefile.am
@@ -0,0 +1,52 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	bug336.smt2 \
+	fuzz01.delta01.smt \
+	fuzz02.smt \
+	fuzz03.smt \
+	fuzz04.smt \
+	fuzz05.smt \
+	fuzz-error232.smt \
+	fuzz-error1099.smt \
+	a17.smt \
+	error72.delta2.smt \
+	x2.smt
+
+EXTRA_DIST = $(TESTS)
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/auflia/Makefile.in b/test/regress/regress0/auflia/Makefile.in
new file mode 100644
index 0000000..ac71532
--- /dev/null
+++ b/test/regress/regress0/auflia/Makefile.in
@@ -0,0 +1,1077 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/auflia
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	bug336.smt2 \
+	fuzz01.delta01.smt \
+	fuzz02.smt \
+	fuzz03.smt \
+	fuzz04.smt \
+	fuzz05.smt \
+	fuzz-error232.smt \
+	fuzz-error1099.smt \
+	a17.smt \
+	error72.delta2.smt \
+	x2.smt
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/auflia/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/auflia/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+bug336.smt2.log: bug336.smt2
+	@p='bug336.smt2'; \
+	b='bug336.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz01.delta01.smt.log: fuzz01.delta01.smt
+	@p='fuzz01.delta01.smt'; \
+	b='fuzz01.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz02.smt.log: fuzz02.smt
+	@p='fuzz02.smt'; \
+	b='fuzz02.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz03.smt.log: fuzz03.smt
+	@p='fuzz03.smt'; \
+	b='fuzz03.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz04.smt.log: fuzz04.smt
+	@p='fuzz04.smt'; \
+	b='fuzz04.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz05.smt.log: fuzz05.smt
+	@p='fuzz05.smt'; \
+	b='fuzz05.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz-error232.smt.log: fuzz-error232.smt
+	@p='fuzz-error232.smt'; \
+	b='fuzz-error232.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz-error1099.smt.log: fuzz-error1099.smt
+	@p='fuzz-error1099.smt'; \
+	b='fuzz-error1099.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+a17.smt.log: a17.smt
+	@p='a17.smt'; \
+	b='a17.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+error72.delta2.smt.log: error72.delta2.smt
+	@p='error72.delta2.smt'; \
+	b='error72.delta2.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+x2.smt.log: x2.smt
+	@p='x2.smt'; \
+	b='x2.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/auflia/a17.smt b/test/regress/regress0/auflia/a17.smt
new file mode 100644
index 0000000..c9c1112
--- /dev/null
+++ b/test/regress/regress0/auflia/a17.smt
@@ -0,0 +1,21 @@
+(benchmark fuzzsmt
+:logic QF_AUFLIA
+:extrafuns ((a Array))
+:extrafuns ((x1 Int))
+:extrafuns ((y1 Int))
+:extrafuns ((z0 Int))
+:extrapreds ((p Array))
+:status sat
+:formula
+(and
+     (>= (select (store a (+ x1 z0) 1) x1) 1)
+     (p a)
+     (p (store a (+ x1 z0) 1))
+     (p (store (store a (+ x1 z0) 1) y1 1))
+     (>= x1 1)
+     (>= z0 0)
+     (<= z0 0)
+     (<= y1 1)
+     (>= y1 1)
+)
+)
diff --git a/test/regress/regress0/auflia/bug336.smt2 b/test/regress/regress0/auflia/bug336.smt2
new file mode 100644
index 0000000..f8909c2
--- /dev/null
+++ b/test/regress/regress0/auflia/bug336.smt2
@@ -0,0 +1,19 @@
+(set-logic QF_AUFLIA)
+(set-info :source | This is based on an example in Section 6.2 of "A Decision
+Procedure for an Extensional Theory of Arrays" by Stump, Barrett, Dill, and
+Levitt. |)
+(set-info :smt-lib-version 2.0)
+(set-info :category "check")
+(set-info :status unsat)
+(set-info :notes |This benchmark is designed to require an array DP to propagate a properly entailed disjunction of equalities between shared terms.|)
+(declare-fun a () (Array Int Int))
+(declare-fun b () (Array Int Int))
+(declare-fun v () Int)
+(declare-fun w () Int)
+(declare-fun x () Int)
+(declare-fun y () Int)
+(declare-fun g ((Array Int Int)) Int)
+(declare-fun f (Int) Int)
+(assert (and (= (store a x v) b) (= (store a y w) b) (not (= (f x) (f y))) (not (= (g a) (g b)))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/auflia/error72.delta2.smt b/test/regress/regress0/auflia/error72.delta2.smt
new file mode 100644
index 0000000..e843e0b
--- /dev/null
+++ b/test/regress/regress0/auflia/error72.delta2.smt
@@ -0,0 +1,12 @@
+(benchmark fuzzsmt
+:logic QF_AUFLIA
+:extrafuns ((v1 Int))
+:status sat
+:formula
+(let (?n1 0)
+(flet ($n2 (distinct v1 ?n1))
+(let (?n3 (ite $n2 v1 ?n1))
+(let (?n4 (~ ?n3))
+(flet ($n5 (>= ?n4 ?n1))
+$n5
+))))))
diff --git a/test/regress/regress0/auflia/fuzz-error1099.smt b/test/regress/regress0/auflia/fuzz-error1099.smt
new file mode 100644
index 0000000..6a465ab
--- /dev/null
+++ b/test/regress/regress0/auflia/fuzz-error1099.smt
@@ -0,0 +1,1126 @@
+(benchmark fuzzsmt
+:logic AUFLIA
+:status sat
+:extrafuns ((f0 Int Int Int))
+:extrafuns ((f1 Array Array Array Array))
+:extrapreds ((p0 Int))
+:extrapreds ((p1 Array))
+:extrafuns ((v0 Int))
+:extrafuns ((v1 Int))
+:extrafuns ((v2 Int))
+:extrafuns ((v3 Array))
+:assumption
+(forall (?qvar0 Int) 
+(exists (?qvar1 Int) (?qvar2 Int) (?qvar3 Int) 
+(flet ($qf0 (p0 ?qvar1))
+(flet ($qf1 (p0 ?qvar2))
+(flet ($qf2 (p0 ?qvar2))
+(flet ($qf3 (< (f0 ?qvar0 ?qvar1) (f0 ?qvar2 ?qvar0)))
+(flet ($qf4 (p0 ?qvar1))
+(flet ($qf5 (p0 ?qvar1))
+(flet ($qf6 (= (f0 ?qvar0 ?qvar3) (f0 ?qvar3 ?qvar2)))
+(flet ($qf7 (if_then_else $qf2 $qf3 $qf5))
+(flet ($qf8 (if_then_else $qf6 $qf7 $qf6))
+(flet ($qf9 (or $qf0 $qf0))
+(flet ($qf10 (iff $qf8 $qf8))
+(flet ($qf11 (and $qf9 $qf1))
+(flet ($qf12 (iff $qf4 $qf10))
+(flet ($qf13 (or $qf11 $qf12))
+$qf13
+))))))))))))))))
+:formula
+(let (?e4 14)
+(let (?e5 0)
+(let (?e6 13)
+(let (?e7 (~ v0))
+(let (?e8 (~ v2))
+(let (?e9 (- v1 v2))
+(let (?e10 (* ?e8 (~ ?e6)))
+(let (?e11 (ite (p0 v0) 1 0))
+(let (?e12 (+ v1 ?e9))
+(let (?e13 (+ ?e10 v0))
+(let (?e14 (- v1 ?e12))
+(let (?e15 (+ ?e8 v0))
+(let (?e16 (f0 ?e8 ?e14))
+(let (?e17 (+ ?e15 ?e10))
+(let (?e18 (f0 v2 v1))
+(let (?e19 (+ v2 ?e12))
+(let (?e20 (f0 ?e17 v2))
+(let (?e21 (~ ?e7))
+(let (?e22 (* ?e13 ?e6))
+(let (?e23 (~ ?e9))
+(let (?e24 (~ ?e13))
+(let (?e25 (~ ?e13))
+(let (?e26 (* v2 ?e6))
+(let (?e27 (~ ?e8))
+(let (?e28 (~ ?e16))
+(let (?e29 (f0 ?e25 ?e27))
+(let (?e30 (* ?e9 ?e5))
+(let (?e31 (- ?e10 ?e29))
+(let (?e32 (f0 ?e18 ?e16))
+(let (?e33 (~ ?e27))
+(let (?e34 (+ ?e25 ?e9))
+(let (?e35 (~ ?e21))
+(let (?e36 (ite (p0 ?e25) 1 0))
+(let (?e37 (+ ?e12 ?e20))
+(let (?e38 (* ?e4 ?e25))
+(let (?e39 (select v3 ?e28))
+(let (?e40 (select v3 ?e23))
+(let (?e41 (f1 v3 v3 v3))
+(flet ($e42 (p1 ?e41))
+(flet ($e43 (p1 ?e41))
+(flet ($e44 (p1 ?e41))
+(flet ($e45 (p1 v3))
+(flet ($e46 (p0 ?e24))
+(flet ($e47 (= ?e32 ?e15))
+(flet ($e48 (> ?e33 ?e9))
+(flet ($e49 (<= ?e23 ?e8))
+(flet ($e50 (= v2 ?e40))
+(flet ($e51 (>= v0 ?e24))
+(flet ($e52 (distinct ?e29 ?e28))
+(flet ($e53 (>= ?e21 ?e21))
+(flet ($e54 (> ?e14 ?e34))
+(flet ($e55 (<= ?e24 ?e21))
+(flet ($e56 (> ?e26 ?e38))
+(flet ($e57 (< ?e35 v0))
+(flet ($e58 (p0 ?e37))
+(flet ($e59 (>= ?e30 ?e13))
+(flet ($e60 (= ?e12 ?e19))
+(flet ($e61 (<= ?e21 ?e27))
+(flet ($e62 (p0 ?e17))
+(flet ($e63 (distinct ?e31 ?e40))
+(flet ($e64 (>= ?e7 ?e12))
+(flet ($e65 (= ?e12 ?e28))
+(flet ($e66 (>= ?e11 v0))
+(flet ($e67 (p0 ?e17))
+(flet ($e68 (= ?e22 ?e18))
+(flet ($e69 (= ?e39 ?e8))
+(flet ($e70 (= ?e26 ?e12))
+(flet ($e71 (> v1 ?e22))
+(flet ($e72 (distinct ?e10 ?e34))
+(flet ($e73 (<= ?e36 ?e13))
+(flet ($e74 (> ?e20 ?e13))
+(flet ($e75 (> ?e25 ?e17))
+(flet ($e76 (< ?e10 ?e15))
+(flet ($e77 (> ?e16 ?e28))
+(let (?e78 (ite $e48 v3 ?e41))
+(let (?e79 (ite $e44 v3 ?e78))
+(let (?e80 (ite $e73 v3 ?e78))
+(let (?e81 (ite $e75 ?e79 ?e79))
+(let (?e82 (ite $e59 ?e81 ?e78))
+(let (?e83 (ite $e66 ?e81 ?e80))
+(let (?e84 (ite $e71 ?e80 ?e79))
+(let (?e85 (ite $e52 ?e78 ?e84))
+(let (?e86 (ite $e55 ?e80 ?e83))
+(let (?e87 (ite $e65 ?e41 ?e83))
+(let (?e88 (ite $e55 ?e80 ?e78))
+(let (?e89 (ite $e73 ?e80 ?e82))
+(let (?e90 (ite $e64 ?e87 v3))
+(let (?e91 (ite $e53 ?e85 ?e86))
+(let (?e92 (ite $e61 ?e80 ?e90))
+(let (?e93 (ite $e51 ?e92 ?e86))
+(let (?e94 (ite $e50 ?e84 ?e89))
+(let (?e95 (ite $e60 ?e91 ?e78))
+(let (?e96 (ite $e76 ?e87 ?e83))
+(let (?e97 (ite $e69 ?e95 ?e41))
+(let (?e98 (ite $e69 ?e88 ?e41))
+(let (?e99 (ite $e54 ?e93 ?e92))
+(let (?e100 (ite $e49 ?e86 ?e85))
+(let (?e101 (ite $e46 ?e92 ?e88))
+(let (?e102 (ite $e76 ?e79 ?e86))
+(let (?e103 (ite $e43 ?e83 ?e94))
+(let (?e104 (ite $e42 ?e79 ?e91))
+(let (?e105 (ite $e58 ?e100 ?e87))
+(let (?e106 (ite $e75 ?e95 ?e80))
+(let (?e107 (ite $e47 ?e100 ?e95))
+(let (?e108 (ite $e61 ?e97 ?e86))
+(let (?e109 (ite $e57 ?e87 ?e80))
+(let (?e110 (ite $e77 ?e106 ?e84))
+(let (?e111 (ite $e70 v3 ?e41))
+(let (?e112 (ite $e67 ?e96 ?e104))
+(let (?e113 (ite $e65 ?e84 ?e103))
+(let (?e114 (ite $e60 ?e101 ?e78))
+(let (?e115 (ite $e72 ?e91 ?e110))
+(let (?e116 (ite $e74 ?e110 ?e87))
+(let (?e117 (ite $e63 ?e106 ?e102))
+(let (?e118 (ite $e54 ?e108 ?e99))
+(let (?e119 (ite $e45 ?e93 ?e91))
+(let (?e120 (ite $e75 ?e117 ?e78))
+(let (?e121 (ite $e62 ?e108 ?e106))
+(let (?e122 (ite $e64 ?e79 ?e106))
+(let (?e123 (ite $e42 ?e104 ?e83))
+(let (?e124 (ite $e63 ?e88 ?e111))
+(let (?e125 (ite $e54 ?e81 ?e103))
+(let (?e126 (ite $e58 ?e99 ?e79))
+(let (?e127 (ite $e54 ?e83 ?e101))
+(let (?e128 (ite $e75 ?e101 ?e83))
+(let (?e129 (ite $e56 ?e84 ?e106))
+(let (?e130 (ite $e63 ?e110 ?e103))
+(let (?e131 (ite $e68 ?e80 v3))
+(let (?e132 (ite $e50 ?e16 ?e27))
+(let (?e133 (ite $e47 v1 ?e19))
+(let (?e134 (ite $e69 ?e38 ?e26))
+(let (?e135 (ite $e62 ?e17 ?e19))
+(let (?e136 (ite $e44 ?e30 ?e38))
+(let (?e137 (ite $e67 ?e15 ?e7))
+(let (?e138 (ite $e72 ?e33 ?e12))
+(let (?e139 (ite $e46 v2 v1))
+(let (?e140 (ite $e53 ?e39 ?e36))
+(let (?e141 (ite $e60 ?e11 ?e18))
+(let (?e142 (ite $e61 ?e32 ?e134))
+(let (?e143 (ite $e49 ?e24 ?e22))
+(let (?e144 (ite $e66 ?e28 ?e24))
+(let (?e145 (ite $e76 ?e8 ?e35))
+(let (?e146 (ite $e64 ?e22 ?e134))
+(let (?e147 (ite $e51 ?e9 ?e18))
+(let (?e148 (ite $e56 ?e34 ?e27))
+(let (?e149 (ite $e42 ?e137 ?e28))
+(let (?e150 (ite $e56 ?e20 ?e18))
+(let (?e151 (ite $e75 ?e23 ?e35))
+(let (?e152 (ite $e76 ?e28 ?e134))
+(let (?e153 (ite $e76 ?e13 ?e24))
+(let (?e154 (ite $e45 v0 ?e10))
+(let (?e155 (ite $e43 ?e37 ?e15))
+(let (?e156 (ite $e47 ?e33 ?e155))
+(let (?e157 (ite $e48 ?e151 ?e26))
+(let (?e158 (ite $e70 ?e154 ?e140))
+(let (?e159 (ite $e77 ?e14 ?e17))
+(let (?e160 (ite $e71 ?e27 ?e132))
+(let (?e161 (ite $e44 ?e38 ?e136))
+(let (?e162 (ite $e57 ?e40 ?e14))
+(let (?e163 (ite $e52 ?e31 ?e26))
+(let (?e164 (ite $e74 ?e11 ?e28))
+(let (?e165 (ite $e50 ?e24 ?e154))
+(let (?e166 (ite $e73 ?e132 ?e27))
+(let (?e167 (ite $e68 ?e153 ?e24))
+(let (?e168 (ite $e64 ?e164 ?e148))
+(let (?e169 (ite $e63 ?e38 ?e26))
+(let (?e170 (ite $e45 ?e32 ?e14))
+(let (?e171 (ite $e61 ?e162 ?e11))
+(let (?e172 (ite $e45 ?e29 ?e137))
+(let (?e173 (ite $e54 ?e143 ?e144))
+(let (?e174 (ite $e53 ?e25 ?e155))
+(let (?e175 (ite $e69 ?e147 ?e174))
+(let (?e176 (ite $e65 ?e21 ?e160))
+(let (?e177 (ite $e59 ?e26 ?e158))
+(let (?e178 (ite $e55 ?e172 ?e138))
+(let (?e179 (ite $e67 ?e173 ?e153))
+(let (?e180 (ite $e58 ?e37 ?e26))
+(let (?e181 (select ?e115 ?e140))
+(let (?e182 (select ?e113 ?e144))
+(let (?e183 (f1 ?e122 ?e107 ?e127))
+(let (?e184 (f1 ?e100 ?e120 ?e122))
+(let (?e185 (f1 ?e124 ?e101 ?e97))
+(let (?e186 (f1 ?e102 ?e183 ?e101))
+(let (?e187 (f1 ?e123 ?e123 ?e123))
+(let (?e188 (f1 ?e101 ?e84 ?e113))
+(let (?e189 (f1 ?e117 ?e117 ?e41))
+(let (?e190 (f1 ?e185 ?e117 ?e106))
+(let (?e191 (f1 ?e103 ?e101 ?e103))
+(let (?e192 (f1 ?e126 ?e126 ?e126))
+(let (?e193 (f1 ?e108 ?e106 ?e128))
+(let (?e194 (f1 ?e85 ?e109 ?e103))
+(let (?e195 (f1 ?e125 ?e88 ?e83))
+(let (?e196 (f1 ?e99 ?e185 ?e87))
+(let (?e197 (f1 ?e196 ?e97 ?e129))
+(let (?e198 (f1 ?e116 ?e186 ?e126))
+(let (?e199 (f1 ?e88 ?e125 ?e195))
+(let (?e200 (f1 ?e114 ?e114 ?e114))
+(let (?e201 (f1 ?e81 ?e199 ?e131))
+(let (?e202 (f1 ?e103 ?e183 ?e130))
+(let (?e203 (f1 ?e41 ?e115 ?e93))
+(let (?e204 (f1 ?e82 ?e103 ?e202))
+(let (?e205 (f1 ?e117 ?e188 ?e109))
+(let (?e206 (f1 ?e104 ?e195 ?e130))
+(let (?e207 (f1 ?e119 ?e106 ?e84))
+(let (?e208 (f1 ?e103 ?e108 ?e88))
+(let (?e209 (f1 ?e98 ?e117 ?e203))
+(let (?e210 (f1 ?e196 ?e91 ?e85))
+(let (?e211 (f1 ?e118 ?e105 ?e95))
+(let (?e212 (f1 ?e95 ?e190 ?e195))
+(let (?e213 (f1 ?e112 ?e112 ?e209))
+(let (?e214 (f1 ?e99 ?e205 ?e104))
+(let (?e215 (f1 ?e86 ?e86 ?e197))
+(let (?e216 (f1 ?e89 ?e89 ?e89))
+(let (?e217 (f1 ?e78 ?e78 ?e78))
+(let (?e218 (f1 ?e90 ?e130 ?e123))
+(let (?e219 (f1 ?e202 ?e91 ?e86))
+(let (?e220 (f1 ?e92 ?e212 ?e123))
+(let (?e221 (f1 ?e129 ?e187 ?e78))
+(let (?e222 (f1 ?e111 ?e216 ?e220))
+(let (?e223 (f1 ?e126 ?e212 ?e112))
+(let (?e224 (f1 ?e111 ?e186 ?e187))
+(let (?e225 (f1 ?e79 ?e101 ?e115))
+(let (?e226 (f1 ?e92 ?e223 ?e117))
+(let (?e227 (f1 ?e80 ?e80 ?e120))
+(let (?e228 (f1 ?e94 ?e94 ?e94))
+(let (?e229 (f1 v3 v3 v3))
+(let (?e230 (f1 ?e121 ?e121 ?e226))
+(let (?e231 (f1 ?e94 ?e189 ?e126))
+(let (?e232 (f1 ?e99 ?e109 ?e98))
+(let (?e233 (f1 ?e110 ?e110 ?e110))
+(let (?e234 (f1 ?e211 ?e194 ?e108))
+(let (?e235 (f1 ?e96 ?e96 ?e81))
+(let (?e236 (f0 ?e179 ?e136))
+(let (?e237 (- ?e159 ?e38))
+(let (?e238 (ite (p0 ?e23) 1 0))
+(let (?e239 (* ?e173 (~ ?e4)))
+(let (?e240 (+ ?e29 ?e154))
+(let (?e241 (+ ?e28 ?e144))
+(let (?e242 (~ ?e16))
+(let (?e243 (~ ?e27))
+(let (?e244 (* ?e172 ?e4))
+(let (?e245 (+ ?e10 ?e31))
+(let (?e246 (* ?e4 ?e20))
+(let (?e247 (~ ?e154))
+(let (?e248 (+ ?e33 ?e23))
+(let (?e249 (* ?e35 (~ ?e4)))
+(let (?e250 (* ?e177 (~ ?e4)))
+(let (?e251 (- ?e16 ?e39))
+(let (?e252 (- ?e137 v1))
+(let (?e253 (* ?e31 (~ ?e4)))
+(let (?e254 (ite (p0 ?e150) 1 0))
+(let (?e255 (ite (p0 ?e38) 1 0))
+(let (?e256 (* ?e18 ?e6))
+(let (?e257 (ite (p0 ?e159) 1 0))
+(let (?e258 (+ ?e133 ?e181))
+(let (?e259 (* ?e6 v0))
+(let (?e260 (- ?e151 ?e31))
+(let (?e261 (f0 ?e12 ?e142))
+(let (?e262 (* ?e171 (~ ?e5)))
+(let (?e263 (* ?e176 (~ ?e6)))
+(let (?e264 (- ?e250 ?e38))
+(let (?e265 (f0 ?e153 ?e133))
+(let (?e266 (ite (p0 ?e138) 1 0))
+(let (?e267 (f0 ?e257 ?e151))
+(let (?e268 (* (~ ?e5) ?e174))
+(let (?e269 (ite (p0 ?e144) 1 0))
+(let (?e270 (f0 ?e132 v1))
+(let (?e271 (* ?e174 ?e6))
+(let (?e272 (- ?e7 ?e165))
+(let (?e273 (f0 ?e9 ?e243))
+(let (?e274 (- ?e148 ?e269))
+(let (?e275 (f0 ?e26 ?e132))
+(let (?e276 (ite (p0 ?e178) 1 0))
+(let (?e277 (+ ?e272 ?e172))
+(let (?e278 (+ ?e30 ?e261))
+(let (?e279 (+ ?e167 ?e143))
+(let (?e280 (* ?e247 (~ ?e4)))
+(let (?e281 (+ ?e154 ?e27))
+(let (?e282 (* ?e168 (~ ?e5)))
+(let (?e283 (+ ?e139 ?e21))
+(let (?e284 (+ ?e175 ?e180))
+(let (?e285 (* ?e4 ?e271))
+(let (?e286 (ite (p0 ?e244) 1 0))
+(let (?e287 (* ?e6 ?e152))
+(let (?e288 (- ?e168 ?e36))
+(let (?e289 (* ?e144 (~ ?e5)))
+(let (?e290 (f0 ?e17 ?e148))
+(let (?e291 (ite (p0 ?e176) 1 0))
+(let (?e292 (f0 ?e10 ?e284))
+(let (?e293 (ite (p0 ?e279) 1 0))
+(let (?e294 (~ ?e158))
+(let (?e295 (ite (p0 ?e146) 1 0))
+(let (?e296 (+ ?e29 ?e273))
+(let (?e297 (* ?e149 (~ ?e4)))
+(let (?e298 (~ ?e11))
+(let (?e299 (f0 ?e161 ?e162))
+(let (?e300 (ite (p0 ?e240) 1 0))
+(let (?e301 (f0 ?e182 ?e256))
+(let (?e302 (f0 ?e238 ?e31))
+(let (?e303 (f0 ?e236 ?e274))
+(let (?e304 (ite (p0 ?e19) 1 0))
+(let (?e305 (+ ?e143 ?e291))
+(let (?e306 (f0 ?e167 ?e166))
+(let (?e307 (* ?e5 ?e147))
+(let (?e308 (ite (p0 ?e169) 1 0))
+(let (?e309 (ite (p0 ?e25) 1 0))
+(let (?e310 (f0 ?e34 ?e280))
+(let (?e311 (- ?e24 ?e182))
+(let (?e312 (+ v2 ?e245))
+(let (?e313 (* ?e282 (~ ?e6)))
+(let (?e314 (~ ?e172))
+(let (?e315 (f0 ?e170 ?e294))
+(let (?e316 (* (~ ?e5) ?e147))
+(let (?e317 (+ ?e14 ?e245))
+(let (?e318 (f0 ?e141 ?e153))
+(let (?e319 (* ?e297 ?e6))
+(let (?e320 (+ ?e135 ?e311))
+(let (?e321 (f0 ?e138 ?e241))
+(let (?e322 (ite (p0 ?e156) 1 0))
+(let (?e323 (- ?e13 ?e260))
+(let (?e324 (f0 ?e243 ?e12))
+(let (?e325 (~ ?e31))
+(let (?e326 (* ?e6 ?e180))
+(let (?e327 (f0 ?e140 ?e276))
+(let (?e328 (- ?e253 ?e271))
+(let (?e329 (- ?e32 ?e20))
+(let (?e330 (* ?e6 ?e145))
+(let (?e331 (+ ?e22 ?e277))
+(let (?e332 (+ ?e163 ?e269))
+(let (?e333 (- ?e9 ?e246))
+(let (?e334 (f0 ?e157 ?e173))
+(let (?e335 (+ ?e33 v0))
+(let (?e336 (* ?e40 (~ ?e4)))
+(let (?e337 (- ?e330 ?e7))
+(let (?e338 (ite (p0 ?e160) 1 0))
+(let (?e339 (f0 ?e164 ?e242))
+(let (?e340 (* ?e5 ?e156))
+(let (?e341 (- ?e8 ?e259))
+(let (?e342 (+ ?e134 ?e160))
+(let (?e343 (f0 ?e165 ?e305))
+(let (?e344 (ite (p0 ?e37) 1 0))
+(let (?e345 (f0 ?e293 ?e278))
+(let (?e346 (f0 ?e155 ?e153))
+(let (?e347 (+ ?e40 ?e325))
+(let (?e348 (~ ?e15))
+(flet ($e349 (p1 ?e190))
+(flet ($e350 (p1 ?e214))
+(flet ($e351 (p1 ?e80))
+(flet ($e352 (p1 ?e203))
+(flet ($e353 (p1 ?e116))
+(flet ($e354 (p1 ?e209))
+(flet ($e355 (p1 ?e232))
+(flet ($e356 (p1 ?e81))
+(flet ($e357 (p1 ?e183))
+(flet ($e358 (p1 ?e95))
+(flet ($e359 (p1 ?e206))
+(flet ($e360 (p1 ?e196))
+(flet ($e361 (p1 ?e232))
+(flet ($e362 (p1 ?e234))
+(flet ($e363 (p1 ?e230))
+(flet ($e364 (p1 ?e80))
+(flet ($e365 (p1 ?e212))
+(flet ($e366 (p1 ?e186))
+(flet ($e367 (p1 ?e234))
+(flet ($e368 (p1 ?e104))
+(flet ($e369 (p1 ?e198))
+(flet ($e370 (p1 ?e128))
+(flet ($e371 (p1 ?e189))
+(flet ($e372 (p1 ?e120))
+(flet ($e373 (p1 ?e91))
+(flet ($e374 (p1 ?e233))
+(flet ($e375 (p1 ?e191))
+(flet ($e376 (p1 ?e227))
+(flet ($e377 (p1 ?e197))
+(flet ($e378 (p1 ?e119))
+(flet ($e379 (p1 ?e129))
+(flet ($e380 (p1 ?e101))
+(flet ($e381 (p1 ?e117))
+(flet ($e382 (p1 ?e105))
+(flet ($e383 (p1 ?e216))
+(flet ($e384 (p1 ?e199))
+(flet ($e385 (p1 ?e130))
+(flet ($e386 (p1 ?e93))
+(flet ($e387 (p1 ?e93))
+(flet ($e388 (p1 ?e226))
+(flet ($e389 (p1 ?e207))
+(flet ($e390 (p1 ?e90))
+(flet ($e391 (p1 ?e127))
+(flet ($e392 (p1 ?e124))
+(flet ($e393 (p1 ?e84))
+(flet ($e394 (p1 ?e222))
+(flet ($e395 (p1 ?e220))
+(flet ($e396 (p1 ?e107))
+(flet ($e397 (p1 ?e223))
+(flet ($e398 (p1 ?e193))
+(flet ($e399 (p1 ?e187))
+(flet ($e400 (p1 ?e188))
+(flet ($e401 (p1 ?e228))
+(flet ($e402 (p1 ?e195))
+(flet ($e403 (p1 ?e211))
+(flet ($e404 (p1 ?e219))
+(flet ($e405 (p1 ?e229))
+(flet ($e406 (p1 ?e186))
+(flet ($e407 (p1 ?e79))
+(flet ($e408 (p1 ?e231))
+(flet ($e409 (p1 ?e94))
+(flet ($e410 (p1 ?e208))
+(flet ($e411 (p1 ?e192))
+(flet ($e412 (p1 ?e203))
+(flet ($e413 (p1 ?e100))
+(flet ($e414 (p1 ?e208))
+(flet ($e415 (p1 ?e86))
+(flet ($e416 (p1 ?e121))
+(flet ($e417 (p1 ?e193))
+(flet ($e418 (p1 ?e118))
+(flet ($e419 (p1 ?e126))
+(flet ($e420 (p1 ?e110))
+(flet ($e421 (p1 ?e187))
+(flet ($e422 (p1 ?e123))
+(flet ($e423 (p1 ?e214))
+(flet ($e424 (p1 ?e106))
+(flet ($e425 (p1 ?e122))
+(flet ($e426 (p1 ?e87))
+(flet ($e427 (p1 ?e220))
+(flet ($e428 (p1 ?e198))
+(flet ($e429 (p1 ?e100))
+(flet ($e430 (p1 ?e107))
+(flet ($e431 (p1 ?e100))
+(flet ($e432 (p1 ?e113))
+(flet ($e433 (p1 ?e97))
+(flet ($e434 (p1 ?e114))
+(flet ($e435 (p1 ?e221))
+(flet ($e436 (p1 ?e113))
+(flet ($e437 (p1 ?e128))
+(flet ($e438 (p1 ?e212))
+(flet ($e439 (p1 ?e225))
+(flet ($e440 (p1 ?e130))
+(flet ($e441 (p1 ?e131))
+(flet ($e442 (p1 ?e102))
+(flet ($e443 (p1 ?e217))
+(flet ($e444 (p1 ?e205))
+(flet ($e445 (p1 ?e221))
+(flet ($e446 (p1 ?e115))
+(flet ($e447 (p1 ?e115))
+(flet ($e448 (p1 ?e92))
+(flet ($e449 (p1 ?e122))
+(flet ($e450 (p1 ?e232))
+(flet ($e451 (p1 ?e215))
+(flet ($e452 (p1 ?e86))
+(flet ($e453 (p1 ?e210))
+(flet ($e454 (p1 ?e125))
+(flet ($e455 (p1 ?e88))
+(flet ($e456 (p1 ?e99))
+(flet ($e457 (p1 ?e186))
+(flet ($e458 (p1 ?e94))
+(flet ($e459 (p1 ?e96))
+(flet ($e460 (p1 ?e110))
+(flet ($e461 (p1 ?e198))
+(flet ($e462 (p1 ?e123))
+(flet ($e463 (p1 ?e111))
+(flet ($e464 (p1 ?e196))
+(flet ($e465 (p1 ?e217))
+(flet ($e466 (p1 ?e217))
+(flet ($e467 (p1 ?e98))
+(flet ($e468 (p1 ?e184))
+(flet ($e469 (p1 ?e118))
+(flet ($e470 (p1 ?e91))
+(flet ($e471 (p1 ?e201))
+(flet ($e472 (p1 ?e200))
+(flet ($e473 (p1 ?e109))
+(flet ($e474 (p1 ?e103))
+(flet ($e475 (p1 v3))
+(flet ($e476 (p1 ?e117))
+(flet ($e477 (p1 ?e114))
+(flet ($e478 (p1 ?e108))
+(flet ($e479 (p1 ?e215))
+(flet ($e480 (p1 ?e82))
+(flet ($e481 (p1 ?e83))
+(flet ($e482 (p1 ?e235))
+(flet ($e483 (p1 ?e213))
+(flet ($e484 (p1 ?e112))
+(flet ($e485 (p1 ?e197))
+(flet ($e486 (p1 ?e90))
+(flet ($e487 (p1 ?e107))
+(flet ($e488 (p1 ?e85))
+(flet ($e489 (p1 ?e193))
+(flet ($e490 (p1 ?e220))
+(flet ($e491 (p1 ?e194))
+(flet ($e492 (p1 ?e224))
+(flet ($e493 (p1 ?e183))
+(flet ($e494 (p1 ?e89))
+(flet ($e495 (p1 ?e85))
+(flet ($e496 (p1 ?e109))
+(flet ($e497 (p1 ?e202))
+(flet ($e498 (p1 ?e41))
+(flet ($e499 (p1 ?e98))
+(flet ($e500 (p1 ?e221))
+(flet ($e501 (p1 ?e193))
+(flet ($e502 (p1 ?e185))
+(flet ($e503 (p1 ?e124))
+(flet ($e504 (p1 ?e204))
+(flet ($e505 (p1 ?e78))
+(flet ($e506 (p1 ?e209))
+(flet ($e507 (p1 ?e218))
+(flet ($e508 (distinct ?e34 ?e35))
+(flet ($e509 (p0 ?e150))
+(flet ($e510 (<= ?e311 ?e23))
+(flet ($e511 (> ?e271 ?e241))
+(flet ($e512 (p0 ?e135))
+(flet ($e513 (<= ?e335 ?e345))
+(flet ($e514 (< ?e301 ?e158))
+(flet ($e515 (>= ?e269 ?e340))
+(flet ($e516 (< ?e27 ?e132))
+(flet ($e517 (p0 ?e147))
+(flet ($e518 (< ?e38 ?e13))
+(flet ($e519 (>= ?e31 ?e146))
+(flet ($e520 (>= ?e32 ?e175))
+(flet ($e521 (<= ?e304 ?e317))
+(flet ($e522 (< ?e166 ?e341))
+(flet ($e523 (< ?e166 ?e169))
+(flet ($e524 (>= ?e282 ?e283))
+(flet ($e525 (distinct ?e27 ?e134))
+(flet ($e526 (<= ?e298 ?e151))
+(flet ($e527 (= v1 ?e137))
+(flet ($e528 (< v0 ?e285))
+(flet ($e529 (p0 ?e284))
+(flet ($e530 (< ?e332 ?e345))
+(flet ($e531 (= ?e316 ?e38))
+(flet ($e532 (p0 ?e155))
+(flet ($e533 (<= ?e293 ?e335))
+(flet ($e534 (> ?e20 ?e279))
+(flet ($e535 (= ?e8 ?e178))
+(flet ($e536 (= ?e167 ?e237))
+(flet ($e537 (>= ?e310 ?e347))
+(flet ($e538 (distinct ?e253 ?e182))
+(flet ($e539 (distinct ?e170 ?e10))
+(flet ($e540 (= ?e326 ?e255))
+(flet ($e541 (< ?e241 ?e286))
+(flet ($e542 (p0 ?e40))
+(flet ($e543 (> v2 ?e340))
+(flet ($e544 (p0 ?e346))
+(flet ($e545 (>= ?e242 ?e132))
+(flet ($e546 (distinct ?e328 ?e132))
+(flet ($e547 (>= ?e285 ?e281))
+(flet ($e548 (> ?e299 ?e290))
+(flet ($e549 (p0 ?e236))
+(flet ($e550 (> ?e181 ?e244))
+(flet ($e551 (<= ?e17 ?e175))
+(flet ($e552 (< ?e14 ?e37))
+(flet ($e553 (distinct ?e329 ?e137))
+(flet ($e554 (> ?e320 ?e150))
+(flet ($e555 (= ?e144 ?e236))
+(flet ($e556 (<= ?e34 ?e169))
+(flet ($e557 (<= ?e348 v1))
+(flet ($e558 (<= ?e29 ?e320))
+(flet ($e559 (distinct ?e39 ?e260))
+(flet ($e560 (< ?e265 ?e329))
+(flet ($e561 (> ?e346 ?e278))
+(flet ($e562 (> ?e273 ?e11))
+(flet ($e563 (> ?e250 ?e251))
+(flet ($e564 (= ?e315 ?e298))
+(flet ($e565 (p0 ?e239))
+(flet ($e566 (< ?e36 ?e153))
+(flet ($e567 (> ?e165 ?e148))
+(flet ($e568 (> ?e344 ?e14))
+(flet ($e569 (p0 ?e19))
+(flet ($e570 (distinct ?e177 ?e135))
+(flet ($e571 (< ?e255 ?e272))
+(flet ($e572 (= ?e176 ?e10))
+(flet ($e573 (>= ?e11 ?e179))
+(flet ($e574 (>= ?e241 ?e257))
+(flet ($e575 (= ?e256 ?e283))
+(flet ($e576 (>= ?e318 ?e282))
+(flet ($e577 (< ?e142 ?e296))
+(flet ($e578 (distinct ?e174 ?e296))
+(flet ($e579 (= ?e339 ?e156))
+(flet ($e580 (> ?e300 ?e319))
+(flet ($e581 (>= ?e270 ?e33))
+(flet ($e582 (= ?e163 ?e158))
+(flet ($e583 (= ?e336 ?e14))
+(flet ($e584 (> ?e274 ?e140))
+(flet ($e585 (> ?e245 ?e326))
+(flet ($e586 (p0 ?e21))
+(flet ($e587 (distinct ?e300 ?e37))
+(flet ($e588 (= ?e314 ?e314))
+(flet ($e589 (<= ?e132 ?e333))
+(flet ($e590 (p0 ?e266))
+(flet ($e591 (< ?e152 ?e168))
+(flet ($e592 (= ?e13 ?e178))
+(flet ($e593 (distinct ?e246 ?e248))
+(flet ($e594 (> ?e254 ?e144))
+(flet ($e595 (> ?e277 ?e338))
+(flet ($e596 (p0 ?e181))
+(flet ($e597 (< ?e28 ?e154))
+(flet ($e598 (= ?e270 ?e320))
+(flet ($e599 (distinct ?e276 ?e163))
+(flet ($e600 (> ?e293 ?e281))
+(flet ($e601 (> ?e18 ?e136))
+(flet ($e602 (= ?e334 ?e22))
+(flet ($e603 (<= ?e258 ?e339))
+(flet ($e604 (>= ?e344 ?e288))
+(flet ($e605 (<= ?e237 ?e176))
+(flet ($e606 (< ?e143 ?e288))
+(flet ($e607 (= ?e24 ?e309))
+(flet ($e608 (distinct ?e180 ?e176))
+(flet ($e609 (p0 ?e345))
+(flet ($e610 (> ?e295 ?e298))
+(flet ($e611 (distinct ?e164 ?e307))
+(flet ($e612 (p0 ?e322))
+(flet ($e613 (<= ?e261 ?e307))
+(flet ($e614 (< ?e145 ?e347))
+(flet ($e615 (= ?e346 ?e156))
+(flet ($e616 (distinct ?e264 ?e344))
+(flet ($e617 (< ?e133 ?e274))
+(flet ($e618 (p0 ?e320))
+(flet ($e619 (distinct ?e13 ?e283))
+(flet ($e620 (< ?e323 ?e335))
+(flet ($e621 (> ?e305 ?e133))
+(flet ($e622 (p0 ?e317))
+(flet ($e623 (distinct ?e309 ?e139))
+(flet ($e624 (distinct ?e237 ?e26))
+(flet ($e625 (< ?e313 ?e242))
+(flet ($e626 (> ?e140 ?e140))
+(flet ($e627 (>= ?e20 ?e19))
+(flet ($e628 (>= ?e13 ?e268))
+(flet ($e629 (p0 ?e294))
+(flet ($e630 (distinct ?e291 ?e13))
+(flet ($e631 (>= ?e238 ?e325))
+(flet ($e632 (distinct ?e161 ?e146))
+(flet ($e633 (>= ?e142 ?e36))
+(flet ($e634 (< ?e247 ?e254))
+(flet ($e635 (< ?e157 ?e181))
+(flet ($e636 (p0 ?e275))
+(flet ($e637 (< ?e30 ?e24))
+(flet ($e638 (p0 ?e302))
+(flet ($e639 (> ?e162 ?e344))
+(flet ($e640 (>= ?e327 ?e344))
+(flet ($e641 (distinct ?e151 ?e348))
+(flet ($e642 (> ?e9 ?e257))
+(flet ($e643 (< ?e155 ?e181))
+(flet ($e644 (> v2 ?e296))
+(flet ($e645 (distinct ?e257 ?e39))
+(flet ($e646 (> ?e173 ?e286))
+(flet ($e647 (>= ?e23 ?e338))
+(flet ($e648 (<= ?e342 ?e346))
+(flet ($e649 (<= ?e336 ?e292))
+(flet ($e650 (= ?e15 ?e303))
+(flet ($e651 (= ?e16 ?e31))
+(flet ($e652 (< ?e38 ?e327))
+(flet ($e653 (< ?e294 ?e265))
+(flet ($e654 (= ?e171 ?e16))
+(flet ($e655 (< ?e284 ?e179))
+(flet ($e656 (> ?e252 ?e342))
+(flet ($e657 (= ?e149 ?e40))
+(flet ($e658 (distinct ?e12 ?e169))
+(flet ($e659 (> ?e249 ?e180))
+(flet ($e660 (distinct ?e272 ?e308))
+(flet ($e661 (p0 ?e287))
+(flet ($e662 (> ?e337 ?e7))
+(flet ($e663 (< ?e159 ?e26))
+(flet ($e664 (>= ?e138 ?e304))
+(flet ($e665 (distinct ?e303 ?e19))
+(flet ($e666 (distinct ?e324 ?e339))
+(flet ($e667 (p0 ?e171))
+(flet ($e668 (>= ?e154 ?e19))
+(flet ($e669 (> ?e30 ?e36))
+(flet ($e670 (> ?e267 ?e275))
+(flet ($e671 (= ?e291 ?e258))
+(flet ($e672 (< ?e257 ?e292))
+(flet ($e673 (> ?e312 ?e32))
+(flet ($e674 (> ?e25 ?e179))
+(flet ($e675 (distinct ?e170 ?e344))
+(flet ($e676 (distinct ?e132 ?e151))
+(flet ($e677 (>= ?e141 ?e241))
+(flet ($e678 (< ?e280 ?e303))
+(flet ($e679 (< ?e306 v1))
+(flet ($e680 (>= ?e259 ?e176))
+(flet ($e681 (>= ?e338 ?e245))
+(flet ($e682 (> ?e330 ?e256))
+(flet ($e683 (> ?e160 ?e154))
+(flet ($e684 (>= ?e9 ?e239))
+(flet ($e685 (>= ?e331 ?e285))
+(flet ($e686 (> ?e321 ?e333))
+(flet ($e687 (< ?e343 ?e249))
+(flet ($e688 (= ?e158 ?e291))
+(flet ($e689 (p0 ?e274))
+(flet ($e690 (>= ?e331 ?e245))
+(flet ($e691 (<= ?e289 ?e347))
+(flet ($e692 (<= ?e138 ?e18))
+(flet ($e693 (< ?e297 ?e311))
+(flet ($e694 (<= ?e243 ?e17))
+(flet ($e695 (<= ?e263 ?e346))
+(flet ($e696 (p0 ?e240))
+(flet ($e697 (<= ?e306 ?e141))
+(flet ($e698 (= ?e290 ?e181))
+(flet ($e699 (= ?e262 ?e342))
+(flet ($e700 (= ?e172 ?e284))
+(flet ($e701 (or $e695 $e668))
+(flet ($e702 (or $e373 $e424))
+(flet ($e703 (and $e522 $e652))
+(flet ($e704 (if_then_else $e62 $e599 $e392))
+(flet ($e705 (or $e636 $e409))
+(flet ($e706 (xor $e72 $e622))
+(flet ($e707 (implies $e677 $e545))
+(flet ($e708 (or $e613 $e582))
+(flet ($e709 (or $e386 $e655))
+(flet ($e710 (if_then_else $e43 $e621 $e541))
+(flet ($e711 (implies $e588 $e614))
+(flet ($e712 (if_then_else $e403 $e436 $e539))
+(flet ($e713 (and $e681 $e604))
+(flet ($e714 (iff $e400 $e57))
+(flet ($e715 (not $e435))
+(flet ($e716 (if_then_else $e450 $e697 $e547))
+(flet ($e717 (implies $e607 $e438))
+(flet ($e718 (or $e714 $e444))
+(flet ($e719 (or $e443 $e395))
+(flet ($e720 (if_then_else $e446 $e398 $e675))
+(flet ($e721 (and $e470 $e76))
+(flet ($e722 (iff $e388 $e510))
+(flet ($e723 (if_then_else $e75 $e427 $e640))
+(flet ($e724 (iff $e375 $e679))
+(flet ($e725 (implies $e421 $e653))
+(flet ($e726 (not $e54))
+(flet ($e727 (iff $e565 $e466))
+(flet ($e728 (or $e724 $e459))
+(flet ($e729 (implies $e65 $e524))
+(flet ($e730 (if_then_else $e384 $e667 $e608))
+(flet ($e731 (xor $e486 $e442))
+(flet ($e732 (not $e698))
+(flet ($e733 (and $e518 $e645))
+(flet ($e734 (not $e529))
+(flet ($e735 (implies $e523 $e708))
+(flet ($e736 (not $e729))
+(flet ($e737 (implies $e59 $e479))
+(flet ($e738 (xor $e553 $e511))
+(flet ($e739 (or $e74 $e540))
+(flet ($e740 (implies $e456 $e557))
+(flet ($e741 (if_then_else $e644 $e377 $e46))
+(flet ($e742 (xor $e380 $e720))
+(flet ($e743 (implies $e663 $e405))
+(flet ($e744 (iff $e683 $e502))
+(flet ($e745 (and $e691 $e391))
+(flet ($e746 (or $e457 $e627))
+(flet ($e747 (xor $e69 $e743))
+(flet ($e748 (iff $e671 $e658))
+(flet ($e749 (and $e702 $e531))
+(flet ($e750 (or $e487 $e705))
+(flet ($e751 (and $e366 $e696))
+(flet ($e752 (and $e390 $e717))
+(flet ($e753 (not $e354))
+(flet ($e754 (if_then_else $e734 $e509 $e587))
+(flet ($e755 (iff $e631 $e372))
+(flet ($e756 (if_then_else $e478 $e356 $e48))
+(flet ($e757 (and $e497 $e725))
+(flet ($e758 (and $e617 $e418))
+(flet ($e759 (not $e441))
+(flet ($e760 (xor $e549 $e733))
+(flet ($e761 (if_then_else $e731 $e693 $e475))
+(flet ($e762 (xor $e750 $e469))
+(flet ($e763 (not $e572))
+(flet ($e764 (not $e445))
+(flet ($e765 (implies $e472 $e596))
+(flet ($e766 (and $e60 $e422))
+(flet ($e767 (or $e710 $e431))
+(flet ($e768 (and $e460 $e73))
+(flet ($e769 (not $e465))
+(flet ($e770 (not $e581))
+(flet ($e771 (or $e639 $e699))
+(flet ($e772 (if_then_else $e464 $e692 $e609))
+(flet ($e773 (if_then_else $e563 $e685 $e381))
+(flet ($e774 (or $e704 $e625))
+(flet ($e775 (and $e404 $e651))
+(flet ($e776 (not $e597))
+(flet ($e777 (or $e566 $e352))
+(flet ($e778 (not $e741))
+(flet ($e779 (and $e577 $e593))
+(flet ($e780 (iff $e642 $e763))
+(flet ($e781 (xor $e64 $e420))
+(flet ($e782 (iff $e562 $e575))
+(flet ($e783 (or $e430 $e727))
+(flet ($e784 (xor $e453 $e52))
+(flet ($e785 (implies $e71 $e739))
+(flet ($e786 (xor $e632 $e63))
+(flet ($e787 (implies $e49 $e473))
+(flet ($e788 (implies $e528 $e555))
+(flet ($e789 (if_then_else $e661 $e748 $e481))
+(flet ($e790 (xor $e713 $e361))
+(flet ($e791 (and $e67 $e783))
+(flet ($e792 (not $e791))
+(flet ($e793 (not $e483))
+(flet ($e794 (or $e730 $e56))
+(flet ($e795 (not $e394))
+(flet ($e796 (if_then_else $e784 $e496 $e51))
+(flet ($e797 (implies $e690 $e350))
+(flet ($e798 (xor $e389 $e519))
+(flet ($e799 (xor $e703 $e629))
+(flet ($e800 (if_then_else $e349 $e360 $e526))
+(flet ($e801 (not $e684))
+(flet ($e802 (xor $e425 $e462))
+(flet ($e803 (xor $e458 $e532))
+(flet ($e804 (implies $e778 $e439))
+(flet ($e805 (or $e618 $e707))
+(flet ($e806 (iff $e770 $e795))
+(flet ($e807 (implies $e546 $e365))
+(flet ($e808 (and $e408 $e47))
+(flet ($e809 (and $e358 $e584))
+(flet ($e810 (if_then_else $e500 $e536 $e680))
+(flet ($e811 (iff $e423 $e550))
+(flet ($e812 (xor $e635 $e689))
+(flet ($e813 (iff $e754 $e506))
+(flet ($e814 (iff $e809 $e601))
+(flet ($e815 (xor $e637 $e633))
+(flet ($e816 (if_then_else $e673 $e490 $e504))
+(flet ($e817 (or $e538 $e371))
+(flet ($e818 (xor $e77 $e591))
+(flet ($e819 (implies $e58 $e382))
+(flet ($e820 (xor $e804 $e674))
+(flet ($e821 (or $e753 $e628))
+(flet ($e822 (or $e719 $e558))
+(flet ($e823 (xor $e780 $e535))
+(flet ($e824 (and $e737 $e448))
+(flet ($e825 (or $e771 $e811))
+(flet ($e826 (not $e559))
+(flet ($e827 (implies $e682 $e414))
+(flet ($e828 (implies $e790 $e53))
+(flet ($e829 (if_then_else $e759 $e626 $e45))
+(flet ($e830 (not $e449))
+(flet ($e831 (or $e471 $e564))
+(flet ($e832 (implies $e586 $e687))
+(flet ($e833 (if_then_else $e686 $e814 $e568))
+(flet ($e834 (implies $e567 $e385))
+(flet ($e835 (or $e505 $e461))
+(flet ($e836 (xor $e779 $e738))
+(flet ($e837 (implies $e756 $e406))
+(flet ($e838 (if_then_else $e611 $e722 $e777))
+(flet ($e839 (implies $e433 $e428))
+(flet ($e840 (or $e484 $e672))
+(flet ($e841 (and $e548 $e374))
+(flet ($e842 (and $e833 $e669))
+(flet ($e843 (iff $e837 $e634))
+(flet ($e844 (or $e772 $e806))
+(flet ($e845 (or $e595 $e495))
+(flet ($e846 (implies $e646 $e561))
+(flet ($e847 (implies $e751 $e721))
+(flet ($e848 (if_then_else $e551 $e747 $e508))
+(flet ($e849 (if_then_else $e796 $e801 $e802))
+(flet ($e850 (if_then_else $e527 $e616 $e42))
+(flet ($e851 (implies $e507 $e752))
+(flet ($e852 (if_then_else $e606 $e827 $e590))
+(flet ($e853 (iff $e825 $e768))
+(flet ($e854 (if_then_else $e569 $e583 $e774))
+(flet ($e855 (iff $e787 $e396))
+(flet ($e856 (if_then_else $e513 $e718 $e755))
+(flet ($e857 (or $e468 $e376))
+(flet ($e858 (iff $e855 $e823))
+(flet ($e859 (xor $e854 $e670))
+(flet ($e860 (implies $e357 $e516))
+(flet ($e861 (if_then_else $e859 $e849 $e412))
+(flet ($e862 (or $e474 $e775))
+(flet ($e863 (iff $e781 $e831))
+(flet ($e864 (and $e455 $e740))
+(flet ($e865 (iff $e419 $e701))
+(flet ($e866 (if_then_else $e578 $e794 $e50))
+(flet ($e867 (or $e589 $e454))
+(flet ($e868 (if_then_else $e841 $e525 $e762))
+(flet ($e869 (and $e648 $e765))
+(flet ($e870 (or $e851 $e353))
+(flet ($e871 (and $e364 $e853))
+(flet ($e872 (xor $e813 $e817))
+(flet ($e873 (not $e429))
+(flet ($e874 (or $e761 $e715))
+(flet ($e875 (xor $e800 $e840))
+(flet ($e876 (not $e848))
+(flet ($e877 (or $e716 $e368))
+(flet ($e878 (and $e657 $e847))
+(flet ($e879 (xor $e514 $e818))
+(flet ($e880 (iff $e592 $e447))
+(flet ($e881 (and $e440 $e678))
+(flet ($e882 (and $e826 $e411))
+(flet ($e883 (xor $e432 $e757))
+(flet ($e884 (and $e832 $e351))
+(flet ($e885 (iff $e610 $e877))
+(flet ($e886 (and $e624 $e55))
+(flet ($e887 (and $e498 $e764))
+(flet ($e888 (and $e416 $e362))
+(flet ($e889 (iff $e410 $e819))
+(flet ($e890 (not $e594))
+(flet ($e891 (and $e600 $e735))
+(flet ($e892 (implies $e863 $e489))
+(flet ($e893 (or $e712 $e874))
+(flet ($e894 (xor $e688 $e688))
+(flet ($e895 (and $e786 $e370))
+(flet ($e896 (not $e570))
+(flet ($e897 (not $e649))
+(flet ($e898 (xor $e797 $e820))
+(flet ($e899 (iff $e369 $e852))
+(flet ($e900 (not $e893))
+(flet ($e901 (if_then_else $e660 $e485 $e534))
+(flet ($e902 (or $e650 $e709))
+(flet ($e903 (and $e619 $e758))
+(flet ($e904 (not $e799))
+(flet ($e905 (or $e902 $e630))
+(flet ($e906 (xor $e662 $e706))
+(flet ($e907 (xor $e864 $e766))
+(flet ($e908 (or $e402 $e760))
+(flet ($e909 (and $e493 $e463))
+(flet ($e910 (and $e723 $e785))
+(flet ($e911 (if_then_else $e834 $e654 $e605))
+(flet ($e912 (xor $e615 $e846))
+(flet ($e913 (xor $e554 $e530))
+(flet ($e914 (not $e451))
+(flet ($e915 (not $e665))
+(flet ($e916 (xor $e835 $e560))
+(flet ($e917 (iff $e782 $e393))
+(flet ($e918 (if_then_else $e492 $e61 $e875))
+(flet ($e919 (xor $e838 $e892))
+(flet ($e920 (and $e437 $e769))
+(flet ($e921 (not $e773))
+(flet ($e922 (and $e480 $e571))
+(flet ($e923 (iff $e656 $e857))
+(flet ($e924 (xor $e367 $e873))
+(flet ($e925 (and $e886 $e732))
+(flet ($e926 (or $e861 $e641))
+(flet ($e927 (xor $e517 $e901))
+(flet ($e928 (not $e927))
+(flet ($e929 (or $e711 $e920))
+(flet ($e930 (or $e363 $e808))
+(flet ($e931 (not $e912))
+(flet ($e932 (if_then_else $e881 $e397 $e910))
+(flet ($e933 (xor $e824 $e70))
+(flet ($e934 (iff $e700 $e850))
+(flet ($e935 (iff $e891 $e909))
+(flet ($e936 (not $e383))
+(flet ($e937 (implies $e576 $e935))
+(flet ($e938 (if_then_else $e579 $e807 $e387))
+(flet ($e939 (iff $e598 $e925))
+(flet ($e940 (not $e862))
+(flet ($e941 (implies $e643 $e844))
+(flet ($e942 (xor $e894 $e895))
+(flet ($e943 (or $e896 $e736))
+(flet ($e944 (if_then_else $e872 $e482 $e866))
+(flet ($e945 (not $e792))
+(flet ($e946 (if_then_else $e830 $e491 $e638))
+(flet ($e947 (iff $e919 $e533))
+(flet ($e948 (if_then_else $e666 $e860 $e915))
+(flet ($e949 (iff $e44 $e836))
+(flet ($e950 (implies $e520 $e869))
+(flet ($e951 (implies $e776 $e889))
+(flet ($e952 (or $e949 $e574))
+(flet ($e953 (if_then_else $e694 $e659 $e821))
+(flet ($e954 (iff $e789 $e664))
+(flet ($e955 (or $e911 $e884))
+(flet ($e956 (and $e544 $e544))
+(flet ($e957 (implies $e926 $e941))
+(flet ($e958 (not $e950))
+(flet ($e959 (xor $e945 $e767))
+(flet ($e960 (not $e612))
+(flet ($e961 (implies $e899 $e868))
+(flet ($e962 (and $e870 $e379))
+(flet ($e963 (if_then_else $e933 $e960 $e913))
+(flet ($e964 (not $e865))
+(flet ($e965 (xor $e788 $e918))
+(flet ($e966 (xor $e905 $e900))
+(flet ($e967 (or $e728 $e880))
+(flet ($e968 (or $e413 $e966))
+(flet ($e969 (xor $e917 $e958))
+(flet ($e970 (not $e967))
+(flet ($e971 (and $e839 $e962))
+(flet ($e972 (if_then_else $e882 $e812 $e858))
+(flet ($e973 (if_then_else $e890 $e951 $e537))
+(flet ($e974 (and $e930 $e434))
+(flet ($e975 (not $e742))
+(flet ($e976 (if_then_else $e415 $e355 $e887))
+(flet ($e977 (implies $e503 $e878))
+(flet ($e978 (if_then_else $e931 $e904 $e745))
+(flet ($e979 (xor $e968 $e585))
+(flet ($e980 (iff $e879 $e952))
+(flet ($e981 (xor $e477 $e867))
+(flet ($e982 (or $e972 $e556))
+(flet ($e983 (and $e407 $e943))
+(flet ($e984 (and $e542 $e948))
+(flet ($e985 (implies $e975 $e803))
+(flet ($e986 (or $e984 $e977))
+(flet ($e987 (and $e888 $e647))
+(flet ($e988 (and $e499 $e749))
+(flet ($e989 (implies $e973 $e938))
+(flet ($e990 (not $e603))
+(flet ($e991 (implies $e982 $e982))
+(flet ($e992 (and $e417 $e793))
+(flet ($e993 (not $e987))
+(flet ($e994 (iff $e974 $e969))
+(flet ($e995 (iff $e954 $e426))
+(flet ($e996 (not $e501))
+(flet ($e997 (iff $e907 $e946))
+(flet ($e998 (implies $e822 $e997))
+(flet ($e999 (xor $e988 $e378))
+(flet ($e1000 (not $e939))
+(flet ($e1001 (not $e543))
+(flet ($e1002 (if_then_else $e816 $e580 $e961))
+(flet ($e1003 (or $e68 $e921))
+(flet ($e1004 (not $e942))
+(flet ($e1005 (iff $e980 $e979))
+(flet ($e1006 (iff $e871 $e805))
+(flet ($e1007 (xor $e903 $e842))
+(flet ($e1008 (implies $e956 $e399))
+(flet ($e1009 (iff $e986 $e883))
+(flet ($e1010 (if_then_else $e885 $e947 $e798))
+(flet ($e1011 (implies $e494 $e906))
+(flet ($e1012 (xor $e936 $e916))
+(flet ($e1013 (not $e66))
+(flet ($e1014 (or $e994 $e1002))
+(flet ($e1015 (or $e957 $e744))
+(flet ($e1016 (xor $e620 $e1009))
+(flet ($e1017 (if_then_else $e521 $e452 $e856))
+(flet ($e1018 (or $e515 $e929))
+(flet ($e1019 (not $e928))
+(flet ($e1020 (iff $e934 $e1018))
+(flet ($e1021 (not $e476))
+(flet ($e1022 (implies $e953 $e1013))
+(flet ($e1023 (iff $e1005 $e923))
+(flet ($e1024 (xor $e897 $e843))
+(flet ($e1025 (if_then_else $e993 $e845 $e1023))
+(flet ($e1026 (and $e932 $e1004))
+(flet ($e1027 (implies $e914 $e573))
+(flet ($e1028 (implies $e1000 $e1025))
+(flet ($e1029 (not $e1017))
+(flet ($e1030 (implies $e963 $e964))
+(flet ($e1031 (xor $e810 $e944))
+(flet ($e1032 (xor $e1011 $e359))
+(flet ($e1033 (iff $e971 $e992))
+(flet ($e1034 (xor $e1014 $e1030))
+(flet ($e1035 (or $e983 $e937))
+(flet ($e1036 (not $e990))
+(flet ($e1037 (iff $e908 $e676))
+(flet ($e1038 (if_then_else $e815 $e1020 $e1006))
+(flet ($e1039 (and $e995 $e512))
+(flet ($e1040 (iff $e1024 $e1007))
+(flet ($e1041 (iff $e1031 $e726))
+(flet ($e1042 (implies $e1027 $e828))
+(flet ($e1043 (and $e1041 $e1019))
+(flet ($e1044 (xor $e1012 $e1028))
+(flet ($e1045 (not $e602))
+(flet ($e1046 (and $e1040 $e1022))
+(flet ($e1047 (xor $e1035 $e1021))
+(flet ($e1048 (implies $e552 $e1045))
+(flet ($e1049 (iff $e1029 $e924))
+(flet ($e1050 (implies $e991 $e1038))
+(flet ($e1051 (implies $e981 $e976))
+(flet ($e1052 (if_then_else $e1033 $e488 $e1026))
+(flet ($e1053 (not $e1039))
+(flet ($e1054 (implies $e1049 $e1016))
+(flet ($e1055 (iff $e1053 $e1043))
+(flet ($e1056 (if_then_else $e1044 $e1032 $e959))
+(flet ($e1057 (or $e965 $e922))
+(flet ($e1058 (or $e829 $e1050))
+(flet ($e1059 (iff $e1042 $e876))
+(flet ($e1060 (or $e1037 $e998))
+(flet ($e1061 (not $e1010))
+(flet ($e1062 (and $e1052 $e1015))
+(flet ($e1063 (iff $e1048 $e746))
+(flet ($e1064 (implies $e999 $e999))
+(flet ($e1065 (and $e898 $e1008))
+(flet ($e1066 (not $e1036))
+(flet ($e1067 (implies $e940 $e1058))
+(flet ($e1068 (xor $e1003 $e978))
+(flet ($e1069 (iff $e1051 $e1060))
+(flet ($e1070 (if_then_else $e1047 $e1056 $e1057))
+(flet ($e1071 (or $e401 $e1061))
+(flet ($e1072 (iff $e1001 $e1055))
+(flet ($e1073 (iff $e989 $e985))
+(flet ($e1074 (not $e1071))
+(flet ($e1075 (if_then_else $e1073 $e996 $e1063))
+(flet ($e1076 (implies $e1072 $e1064))
+(flet ($e1077 (iff $e1034 $e1062))
+(flet ($e1078 (xor $e1068 $e1069))
+(flet ($e1079 (implies $e1077 $e1067))
+(flet ($e1080 (xor $e955 $e1046))
+(flet ($e1081 (and $e1076 $e970))
+(flet ($e1082 (or $e1065 $e1080))
+(flet ($e1083 (iff $e1059 $e1079))
+(flet ($e1084 (xor $e1054 $e623))
+(flet ($e1085 (implies $e467 $e1078))
+(flet ($e1086 (not $e1083))
+(flet ($e1087 (implies $e1081 $e1085))
+(flet ($e1088 (and $e1066 $e1070))
+(flet ($e1089 (xor $e1082 $e1088))
+(flet ($e1090 (if_then_else $e1089 $e1084 $e1087))
+(flet ($e1091 (not $e1075))
+(flet ($e1092 (or $e1090 $e1086))
+(flet ($e1093 (if_then_else $e1091 $e1091 $e1074))
+(flet ($e1094 (iff $e1092 $e1092))
+(flet ($e1095 (or $e1094 $e1093))
+$e1095
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) [...]
+
diff --git a/test/regress/regress0/auflia/fuzz-error232.smt b/test/regress/regress0/auflia/fuzz-error232.smt
new file mode 100644
index 0000000..e8319c7
--- /dev/null
+++ b/test/regress/regress0/auflia/fuzz-error232.smt
@@ -0,0 +1,508 @@
+(benchmark fuzzsmt
+:logic AUFLIA
+:status sat
+:extrafuns ((f0 Int Int))
+:extrafuns ((f1 Array Array Array Array))
+:extrapreds ((p0 Int))
+:extrapreds ((p1 Array Array))
+:extrafuns ((v0 Int))
+:extrafuns ((v1 Int))
+:extrafuns ((v2 Int))
+:extrafuns ((v3 Array))
+:assumption
+(exists (?qvar0 Int) (?qvar1 Int) 
+(flet ($qf0 (p0 ?qvar1))
+(flet ($qf1 (p0 ?qvar0))
+(flet ($qf2 (or $qf0 $qf0))
+(flet ($qf3 (or $qf1 $qf2))
+$qf3
+)))))
+:formula
+(let (?e4 14)
+(let (?e5 3)
+(let (?e6 (- v1 v1))
+(let (?e7 (- v2 v2))
+(let (?e8 (~ v0))
+(let (?e9 (ite (p0 v0) 1 0))
+(let (?e10 (* v2 (~ ?e4)))
+(let (?e11 (* ?e4 ?e6))
+(let (?e12 (- ?e7 ?e8))
+(let (?e13 (* ?e4 ?e10))
+(let (?e14 (* v0 ?e5))
+(let (?e15 (~ ?e10))
+(let (?e16 (- ?e15 ?e14))
+(let (?e17 (+ ?e12 v1))
+(let (?e18 (ite (p0 ?e17) 1 0))
+(let (?e19 (~ ?e16))
+(let (?e20 (f0 ?e14))
+(let (?e21 (store v3 ?e7 v2))
+(let (?e22 (select v3 ?e11))
+(let (?e23 (f1 ?e21 v3 ?e21))
+(flet ($e24 (p1 ?e21 ?e23))
+(flet ($e25 (p1 ?e23 v3))
+(flet ($e26 (>= ?e22 ?e8))
+(flet ($e27 (<= ?e20 ?e20))
+(flet ($e28 (p0 ?e7))
+(flet ($e29 (< ?e19 ?e8))
+(flet ($e30 (>= ?e6 ?e14))
+(flet ($e31 (< ?e12 v2))
+(flet ($e32 (= ?e16 ?e18))
+(flet ($e33 (< ?e10 ?e10))
+(flet ($e34 (> ?e19 v2))
+(flet ($e35 (distinct ?e17 v0))
+(flet ($e36 (< v1 ?e15))
+(flet ($e37 (>= ?e15 v2))
+(flet ($e38 (<= ?e9 ?e19))
+(flet ($e39 (<= ?e13 ?e6))
+(flet ($e40 (p0 ?e11))
+(let (?e41 (ite $e39 ?e21 v3))
+(let (?e42 (ite $e36 ?e23 ?e23))
+(let (?e43 (ite $e34 v3 ?e21))
+(let (?e44 (ite $e29 ?e43 ?e21))
+(let (?e45 (ite $e24 ?e41 ?e44))
+(let (?e46 (ite $e35 ?e45 ?e42))
+(let (?e47 (ite $e37 ?e45 ?e23))
+(let (?e48 (ite $e28 ?e46 ?e41))
+(let (?e49 (ite $e25 ?e42 ?e44))
+(let (?e50 (ite $e35 ?e41 v3))
+(let (?e51 (ite $e29 ?e43 ?e50))
+(let (?e52 (ite $e27 ?e49 ?e43))
+(let (?e53 (ite $e40 ?e46 ?e23))
+(let (?e54 (ite $e33 ?e23 ?e46))
+(let (?e55 (ite $e40 ?e42 v3))
+(let (?e56 (ite $e28 ?e49 ?e51))
+(let (?e57 (ite $e26 ?e46 ?e21))
+(let (?e58 (ite $e32 ?e44 ?e52))
+(let (?e59 (ite $e30 ?e55 ?e54))
+(let (?e60 (ite $e25 ?e46 ?e54))
+(let (?e61 (ite $e31 ?e58 ?e59))
+(let (?e62 (ite $e38 ?e50 ?e48))
+(let (?e63 (ite $e37 ?e18 ?e15))
+(let (?e64 (ite $e39 ?e13 ?e15))
+(let (?e65 (ite $e36 v0 ?e13))
+(let (?e66 (ite $e31 ?e8 ?e10))
+(let (?e67 (ite $e28 ?e9 ?e12))
+(let (?e68 (ite $e25 v0 ?e18))
+(let (?e69 (ite $e33 ?e14 ?e22))
+(let (?e70 (ite $e30 ?e16 ?e64))
+(let (?e71 (ite $e33 v2 ?e66))
+(let (?e72 (ite $e34 ?e6 ?e13))
+(let (?e73 (ite $e26 ?e7 v2))
+(let (?e74 (ite $e37 ?e17 ?e65))
+(let (?e75 (ite $e26 ?e11 ?e64))
+(let (?e76 (ite $e33 ?e19 ?e68))
+(let (?e77 (ite $e27 ?e67 ?e73))
+(let (?e78 (ite $e34 ?e10 ?e16))
+(let (?e79 (ite $e40 ?e15 ?e6))
+(let (?e80 (ite $e37 ?e71 ?e70))
+(let (?e81 (ite $e31 v1 ?e73))
+(let (?e82 (ite $e32 ?e75 ?e64))
+(let (?e83 (ite $e35 ?e7 ?e67))
+(let (?e84 (ite $e38 ?e78 ?e66))
+(let (?e85 (ite $e24 ?e7 ?e11))
+(let (?e86 (ite $e29 ?e10 v0))
+(let (?e87 (ite $e32 ?e20 ?e80))
+(let (?e88 (store ?e23 ?e85 ?e17))
+(let (?e89 (select ?e53 ?e87))
+(let (?e90 (store ?e54 ?e20 ?e17))
+(let (?e91 (f1 ?e56 ?e59 ?e54))
+(let (?e92 (f1 v3 ?e54 ?e58))
+(let (?e93 (f1 ?e52 ?e52 v3))
+(let (?e94 (f1 ?e61 ?e50 ?e21))
+(let (?e95 (f1 ?e61 ?e43 ?e58))
+(let (?e96 (f1 ?e53 ?e53 ?e53))
+(let (?e97 (f1 ?e51 ?e54 ?e49))
+(let (?e98 (f1 ?e55 ?e55 ?e92))
+(let (?e99 (f1 ?e45 ?e55 ?e62))
+(let (?e100 (f1 ?e49 ?e50 ?e53))
+(let (?e101 (f1 ?e49 ?e52 ?e60))
+(let (?e102 (f1 ?e59 ?e97 ?e44))
+(let (?e103 (f1 ?e23 ?e47 ?e50))
+(let (?e104 (f1 ?e88 ?e98 ?e59))
+(let (?e105 (f1 ?e42 ?e42 ?e42))
+(let (?e106 (f1 ?e48 ?e47 ?e92))
+(let (?e107 (f1 ?e46 ?e46 ?e92))
+(let (?e108 (f1 ?e62 ?e104 ?e55))
+(let (?e109 (f1 ?e45 ?e59 ?e93))
+(let (?e110 (f1 ?e41 ?e41 ?e41))
+(let (?e111 (f1 ?e49 ?e57 ?e42))
+(let (?e112 (f1 ?e53 ?e91 ?e106))
+(let (?e113 (f1 ?e90 ?e90 ?e59))
+(let (?e114 (+ ?e18 ?e73))
+(let (?e115 (- ?e71 ?e17))
+(let (?e116 (~ ?e75))
+(let (?e117 (~ ?e115))
+(let (?e118 (+ ?e10 ?e18))
+(let (?e119 (ite (p0 ?e115) 1 0))
+(let (?e120 (* (~ ?e4) ?e6))
+(let (?e121 (* ?e63 (~ ?e4)))
+(let (?e122 (~ ?e6))
+(let (?e123 (* ?e19 ?e5))
+(let (?e124 (~ ?e16))
+(let (?e125 (- ?e65 ?e117))
+(let (?e126 (* ?e5 ?e80))
+(let (?e127 (~ ?e83))
+(let (?e128 (ite (p0 ?e86) 1 0))
+(let (?e129 (* (~ ?e5) ?e118))
+(let (?e130 (ite (p0 ?e85) 1 0))
+(let (?e131 (* ?e4 ?e118))
+(let (?e132 (f0 ?e69))
+(let (?e133 (- ?e20 ?e15))
+(let (?e134 (* ?e64 ?e5))
+(let (?e135 (f0 ?e9))
+(let (?e136 (f0 ?e74))
+(let (?e137 (~ ?e22))
+(let (?e138 (* ?e77 ?e5))
+(let (?e139 (ite (p0 ?e81) 1 0))
+(let (?e140 (* (~ ?e5) ?e73))
+(let (?e141 (ite (p0 ?e65) 1 0))
+(let (?e142 (* ?e82 (~ ?e5)))
+(let (?e143 (ite (p0 ?e67) 1 0))
+(let (?e144 (- ?e120 ?e13))
+(let (?e145 (* ?e19 ?e5))
+(let (?e146 (f0 ?e87))
+(let (?e147 (f0 ?e76))
+(let (?e148 (ite (p0 ?e139) 1 0))
+(let (?e149 (ite (p0 ?e75) 1 0))
+(let (?e150 (ite (p0 ?e135) 1 0))
+(let (?e151 (~ ?e16))
+(let (?e152 (ite (p0 ?e66) 1 0))
+(let (?e153 (ite (p0 ?e11) 1 0))
+(let (?e154 (~ v0))
+(let (?e155 (* ?e5 ?e70))
+(let (?e156 (~ v2))
+(let (?e157 (~ ?e80))
+(let (?e158 (f0 ?e12))
+(let (?e159 (* ?e5 ?e72))
+(let (?e160 (f0 ?e64))
+(let (?e161 (~ ?e89))
+(let (?e162 (- ?e14 ?e79))
+(let (?e163 (f0 ?e14))
+(let (?e164 (+ ?e18 ?e69))
+(let (?e165 (* ?e68 (~ ?e5)))
+(let (?e166 (- ?e22 ?e124))
+(let (?e167 (ite (p0 ?e78) 1 0))
+(let (?e168 (* v1 (~ ?e5)))
+(let (?e169 (* (~ ?e4) ?e66))
+(let (?e170 (ite (p0 ?e136) 1 0))
+(let (?e171 (~ ?e80))
+(let (?e172 (ite (p0 ?e7) 1 0))
+(let (?e173 (f0 ?e139))
+(let (?e174 (- ?e20 ?e15))
+(let (?e175 (* ?e8 ?e4))
+(let (?e176 (+ ?e84 ?e76))
+(flet ($e177 (p1 ?e111 ?e105))
+(flet ($e178 (p1 ?e44 ?e54))
+(flet ($e179 (p1 ?e103 ?e88))
+(flet ($e180 (p1 ?e55 ?e104))
+(flet ($e181 (p1 ?e60 ?e43))
+(flet ($e182 (p1 ?e50 ?e111))
+(flet ($e183 (p1 ?e61 ?e101))
+(flet ($e184 (p1 ?e21 ?e107))
+(flet ($e185 (p1 ?e102 ?e88))
+(flet ($e186 (p1 ?e95 ?e98))
+(flet ($e187 (p1 ?e100 ?e47))
+(flet ($e188 (p1 ?e109 ?e92))
+(flet ($e189 (p1 ?e59 ?e62))
+(flet ($e190 (p1 ?e49 ?e102))
+(flet ($e191 (p1 ?e52 ?e103))
+(flet ($e192 (p1 ?e99 ?e93))
+(flet ($e193 (p1 v3 ?e96))
+(flet ($e194 (p1 ?e53 ?e21))
+(flet ($e195 (p1 ?e91 ?e112))
+(flet ($e196 (p1 ?e110 ?e90))
+(flet ($e197 (p1 ?e106 ?e93))
+(flet ($e198 (p1 ?e45 ?e94))
+(flet ($e199 (p1 ?e43 ?e107))
+(flet ($e200 (p1 ?e93 ?e57))
+(flet ($e201 (p1 ?e56 ?e45))
+(flet ($e202 (p1 ?e108 ?e88))
+(flet ($e203 (p1 ?e23 ?e54))
+(flet ($e204 (p1 ?e101 ?e21))
+(flet ($e205 (p1 ?e57 ?e58))
+(flet ($e206 (p1 ?e42 ?e44))
+(flet ($e207 (p1 ?e100 ?e48))
+(flet ($e208 (p1 ?e52 ?e57))
+(flet ($e209 (p1 ?e113 ?e93))
+(flet ($e210 (p1 ?e41 ?e92))
+(flet ($e211 (p1 ?e42 v3))
+(flet ($e212 (p1 ?e41 v3))
+(flet ($e213 (p1 ?e93 ?e57))
+(flet ($e214 (p1 ?e97 ?e46))
+(flet ($e215 (p1 ?e91 ?e97))
+(flet ($e216 (p1 ?e51 ?e44))
+(flet ($e217 (>= ?e132 ?e86))
+(flet ($e218 (distinct v2 ?e132))
+(flet ($e219 (<= ?e146 ?e164))
+(flet ($e220 (= ?e151 ?e164))
+(flet ($e221 (p0 ?e69))
+(flet ($e222 (p0 ?e157))
+(flet ($e223 (distinct ?e12 ?e116))
+(flet ($e224 (>= ?e8 ?e155))
+(flet ($e225 (> ?e66 ?e15))
+(flet ($e226 (<= ?e140 ?e13))
+(flet ($e227 (distinct ?e170 ?e115))
+(flet ($e228 (<= ?e162 ?e142))
+(flet ($e229 (>= ?e19 ?e163))
+(flet ($e230 (distinct ?e129 ?e70))
+(flet ($e231 (> ?e157 ?e175))
+(flet ($e232 (> ?e73 ?e13))
+(flet ($e233 (>= ?e81 ?e76))
+(flet ($e234 (>= ?e144 ?e135))
+(flet ($e235 (distinct ?e89 ?e170))
+(flet ($e236 (distinct ?e134 ?e161))
+(flet ($e237 (> ?e153 ?e8))
+(flet ($e238 (>= ?e124 ?e124))
+(flet ($e239 (= ?e162 ?e19))
+(flet ($e240 (<= ?e167 ?e166))
+(flet ($e241 (= ?e87 ?e137))
+(flet ($e242 (= ?e83 ?e159))
+(flet ($e243 (>= ?e174 ?e140))
+(flet ($e244 (distinct ?e77 ?e172))
+(flet ($e245 (p0 ?e122))
+(flet ($e246 (< ?e74 ?e12))
+(flet ($e247 (p0 ?e129))
+(flet ($e248 (> ?e123 ?e127))
+(flet ($e249 (<= ?e114 ?e162))
+(flet ($e250 (<= ?e75 ?e11))
+(flet ($e251 (> ?e154 ?e147))
+(flet ($e252 (<= ?e125 ?e156))
+(flet ($e253 (>= ?e153 ?e89))
+(flet ($e254 (distinct ?e69 ?e154))
+(flet ($e255 (= ?e136 ?e87))
+(flet ($e256 (p0 ?e148))
+(flet ($e257 (> ?e131 ?e171))
+(flet ($e258 (<= ?e7 ?e86))
+(flet ($e259 (= ?e164 ?e172))
+(flet ($e260 (<= ?e126 v2))
+(flet ($e261 (>= ?e169 ?e172))
+(flet ($e262 (<= ?e67 ?e159))
+(flet ($e263 (p0 ?e79))
+(flet ($e264 (>= ?e143 ?e175))
+(flet ($e265 (<= ?e176 ?e165))
+(flet ($e266 (>= ?e10 ?e168))
+(flet ($e267 (= ?e80 ?e122))
+(flet ($e268 (<= ?e78 ?e82))
+(flet ($e269 (> ?e10 ?e122))
+(flet ($e270 (< v2 ?e165))
+(flet ($e271 (= ?e85 ?e138))
+(flet ($e272 (< ?e130 ?e170))
+(flet ($e273 (> ?e173 ?e18))
+(flet ($e274 (distinct ?e20 ?e71))
+(flet ($e275 (p0 ?e86))
+(flet ($e276 (p0 ?e14))
+(flet ($e277 (< ?e72 ?e114))
+(flet ($e278 (> ?e22 ?e75))
+(flet ($e279 (p0 ?e150))
+(flet ($e280 (p0 ?e139))
+(flet ($e281 (> ?e174 ?e151))
+(flet ($e282 (< ?e119 ?e22))
+(flet ($e283 (< ?e133 ?e14))
+(flet ($e284 (<= ?e9 v2))
+(flet ($e285 (distinct v0 ?e170))
+(flet ($e286 (<= ?e121 ?e136))
+(flet ($e287 (= ?e176 ?e85))
+(flet ($e288 (< ?e118 ?e123))
+(flet ($e289 (< ?e174 ?e63))
+(flet ($e290 (< ?e174 ?e19))
+(flet ($e291 (p0 ?e78))
+(flet ($e292 (distinct ?e160 ?e167))
+(flet ($e293 (<= ?e17 ?e18))
+(flet ($e294 (<= ?e147 ?e173))
+(flet ($e295 (distinct ?e68 ?e146))
+(flet ($e296 (< ?e117 ?e149))
+(flet ($e297 (>= ?e120 ?e168))
+(flet ($e298 (< ?e122 ?e74))
+(flet ($e299 (<= ?e66 ?e140))
+(flet ($e300 (= ?e141 ?e63))
+(flet ($e301 (p0 ?e132))
+(flet ($e302 (distinct ?e6 ?e14))
+(flet ($e303 (= ?e152 ?e133))
+(flet ($e304 (distinct ?e142 ?e153))
+(flet ($e305 (<= ?e145 ?e122))
+(flet ($e306 (>= ?e167 ?e123))
+(flet ($e307 (>= ?e128 ?e139))
+(flet ($e308 (> ?e12 ?e75))
+(flet ($e309 (distinct ?e84 ?e175))
+(flet ($e310 (> ?e64 ?e143))
+(flet ($e311 (p0 ?e158))
+(flet ($e312 (p0 ?e157))
+(flet ($e313 (<= v1 ?e18))
+(flet ($e314 (= ?e149 ?e119))
+(flet ($e315 (= ?e87 ?e127))
+(flet ($e316 (p0 ?e152))
+(flet ($e317 (p0 ?e16))
+(flet ($e318 (= ?e170 ?e124))
+(flet ($e319 (<= ?e157 ?e139))
+(flet ($e320 (>= ?e155 ?e66))
+(flet ($e321 (< ?e65 ?e118))
+(flet ($e322 (xor $e271 $e229))
+(flet ($e323 (iff $e237 $e269))
+(flet ($e324 (xor $e181 $e262))
+(flet ($e325 (and $e292 $e312))
+(flet ($e326 (not $e261))
+(flet ($e327 (xor $e193 $e310))
+(flet ($e328 (implies $e236 $e191))
+(flet ($e329 (and $e242 $e27))
+(flet ($e330 (xor $e295 $e326))
+(flet ($e331 (iff $e209 $e184))
+(flet ($e332 (not $e225))
+(flet ($e333 (if_then_else $e245 $e201 $e208))
+(flet ($e334 (iff $e251 $e234))
+(flet ($e335 (not $e239))
+(flet ($e336 (xor $e36 $e230))
+(flet ($e337 (implies $e314 $e333))
+(flet ($e338 (not $e316))
+(flet ($e339 (and $e222 $e223))
+(flet ($e340 (xor $e231 $e315))
+(flet ($e341 (and $e340 $e195))
+(flet ($e342 (xor $e220 $e29))
+(flet ($e343 (implies $e249 $e241))
+(flet ($e344 (implies $e332 $e182))
+(flet ($e345 (not $e330))
+(flet ($e346 (if_then_else $e30 $e246 $e185))
+(flet ($e347 (not $e337))
+(flet ($e348 (not $e240))
+(flet ($e349 (if_then_else $e183 $e328 $e278))
+(flet ($e350 (xor $e319 $e280))
+(flet ($e351 (and $e180 $e343))
+(flet ($e352 (or $e254 $e28))
+(flet ($e353 (and $e34 $e297))
+(flet ($e354 (if_then_else $e202 $e347 $e286))
+(flet ($e355 (iff $e320 $e226))
+(flet ($e356 (and $e227 $e268))
+(flet ($e357 (implies $e317 $e345))
+(flet ($e358 (or $e313 $e279))
+(flet ($e359 (and $e186 $e284))
+(flet ($e360 (iff $e256 $e33))
+(flet ($e361 (or $e346 $e196))
+(flet ($e362 (if_then_else $e39 $e302 $e289))
+(flet ($e363 (implies $e294 $e275))
+(flet ($e364 (iff $e192 $e276))
+(flet ($e365 (or $e204 $e358))
+(flet ($e366 (and $e235 $e212))
+(flet ($e367 (if_then_else $e197 $e194 $e348))
+(flet ($e368 (or $e362 $e199))
+(flet ($e369 (and $e270 $e215))
+(flet ($e370 (implies $e260 $e187))
+(flet ($e371 (not $e263))
+(flet ($e372 (not $e272))
+(flet ($e373 (not $e266))
+(flet ($e374 (and $e353 $e336))
+(flet ($e375 (implies $e368 $e283))
+(flet ($e376 (iff $e232 $e211))
+(flet ($e377 (if_then_else $e25 $e352 $e253))
+(flet ($e378 (implies $e377 $e200))
+(flet ($e379 (if_then_else $e219 $e264 $e288))
+(flet ($e380 (implies $e210 $e339))
+(flet ($e381 (iff $e35 $e217))
+(flet ($e382 (if_then_else $e306 $e309 $e351))
+(flet ($e383 (not $e304))
+(flet ($e384 (implies $e228 $e189))
+(flet ($e385 (or $e214 $e267))
+(flet ($e386 (and $e243 $e354))
+(flet ($e387 (xor $e341 $e350))
+(flet ($e388 (or $e281 $e366))
+(flet ($e389 (and $e324 $e274))
+(flet ($e390 (and $e322 $e375))
+(flet ($e391 (if_then_else $e387 $e305 $e359))
+(flet ($e392 (iff $e287 $e293))
+(flet ($e393 (or $e389 $e371))
+(flet ($e394 (or $e188 $e224))
+(flet ($e395 (iff $e216 $e325))
+(flet ($e396 (if_then_else $e300 $e258 $e364))
+(flet ($e397 (if_then_else $e395 $e394 $e32))
+(flet ($e398 (iff $e344 $e296))
+(flet ($e399 (and $e255 $e363))
+(flet ($e400 (not $e248))
+(flet ($e401 (or $e323 $e365))
+(flet ($e402 (not $e391))
+(flet ($e403 (not $e31))
+(flet ($e404 (not $e190))
+(flet ($e405 (and $e327 $e393))
+(flet ($e406 (or $e397 $e388))
+(flet ($e407 (xor $e329 $e342))
+(flet ($e408 (or $e298 $e299))
+(flet ($e409 (xor $e233 $e233))
+(flet ($e410 (not $e282))
+(flet ($e411 (implies $e40 $e356))
+(flet ($e412 (xor $e335 $e357))
+(flet ($e413 (implies $e402 $e376))
+(flet ($e414 (implies $e378 $e303))
+(flet ($e415 (and $e247 $e401))
+(flet ($e416 (and $e321 $e385))
+(flet ($e417 (not $e290))
+(flet ($e418 (not $e398))
+(flet ($e419 (iff $e360 $e38))
+(flet ($e420 (implies $e418 $e273))
+(flet ($e421 (implies $e415 $e411))
+(flet ($e422 (xor $e338 $e409))
+(flet ($e423 (not $e26))
+(flet ($e424 (xor $e413 $e218))
+(flet ($e425 (not $e285))
+(flet ($e426 (if_then_else $e422 $e396 $e252))
+(flet ($e427 (and $e291 $e412))
+(flet ($e428 (implies $e369 $e417))
+(flet ($e429 (or $e361 $e198))
+(flet ($e430 (implies $e406 $e24))
+(flet ($e431 (iff $e179 $e203))
+(flet ($e432 (implies $e238 $e428))
+(flet ($e433 (if_then_else $e355 $e349 $e318))
+(flet ($e434 (not $e177))
+(flet ($e435 (iff $e434 $e404))
+(flet ($e436 (xor $e207 $e384))
+(flet ($e437 (if_then_else $e37 $e380 $e250))
+(flet ($e438 (if_then_else $e259 $e433 $e370))
+(flet ($e439 (not $e400))
+(flet ($e440 (xor $e429 $e213))
+(flet ($e441 (implies $e308 $e257))
+(flet ($e442 (or $e403 $e440))
+(flet ($e443 (if_then_else $e432 $e221 $e178))
+(flet ($e444 (iff $e334 $e244))
+(flet ($e445 (iff $e383 $e386))
+(flet ($e446 (iff $e444 $e437))
+(flet ($e447 (or $e405 $e416))
+(flet ($e448 (if_then_else $e441 $e420 $e382))
+(flet ($e449 (iff $e419 $e390))
+(flet ($e450 (iff $e448 $e206))
+(flet ($e451 (xor $e265 $e424))
+(flet ($e452 (implies $e446 $e205))
+(flet ($e453 (implies $e438 $e450))
+(flet ($e454 (or $e447 $e453))
+(flet ($e455 (implies $e454 $e445))
+(flet ($e456 (xor $e451 $e410))
+(flet ($e457 (if_then_else $e455 $e442 $e439))
+(flet ($e458 (implies $e452 $e311))
+(flet ($e459 (implies $e423 $e407))
+(flet ($e460 (xor $e443 $e373))
+(flet ($e461 (iff $e457 $e331))
+(flet ($e462 (not $e459))
+(flet ($e463 (xor $e379 $e430))
+(flet ($e464 (xor $e461 $e301))
+(flet ($e465 (iff $e427 $e456))
+(flet ($e466 (if_then_else $e307 $e464 $e436))
+(flet ($e467 (not $e466))
+(flet ($e468 (iff $e462 $e426))
+(flet ($e469 (iff $e449 $e374))
+(flet ($e470 (or $e367 $e367))
+(flet ($e471 (implies $e408 $e470))
+(flet ($e472 (xor $e467 $e421))
+(flet ($e473 (or $e399 $e435))
+(flet ($e474 (or $e468 $e472))
+(flet ($e475 (or $e277 $e460))
+(flet ($e476 (iff $e471 $e381))
+(flet ($e477 (not $e476))
+(flet ($e478 (or $e392 $e431))
+(flet ($e479 (iff $e425 $e463))
+(flet ($e480 (or $e479 $e475))
+(flet ($e481 (if_then_else $e478 $e372 $e465))
+(flet ($e482 (if_then_else $e474 $e414 $e477))
+(flet ($e483 (xor $e482 $e480))
+(flet ($e484 (xor $e473 $e458))
+(flet ($e485 (xor $e484 $e483))
+(flet ($e486 (iff $e469 $e469))
+(flet ($e487 (if_then_else $e485 $e485 $e486))
+(flet ($e488 (iff $e487 $e481))
+$e488
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/auflia/fuzz01.delta01.smt b/test/regress/regress0/auflia/fuzz01.delta01.smt
new file mode 100644
index 0000000..6c22a75
--- /dev/null
+++ b/test/regress/regress0/auflia/fuzz01.delta01.smt
@@ -0,0 +1,45 @@
+(benchmark fuzzsmt
+:logic QF_AUFLIA
+:extrapreds ((p1 Array))
+:extrafuns ((f1 Array Array Array Array))
+:extrafuns ((v0 Int))
+:extrafuns ((v4 Array))
+:extrafuns ((v3 Array))
+:extrafuns ((v1 Int))
+:extrapreds ((p0 Int))
+:extrafuns ((f0 Int Int Int Int))
+:status sat
+:formula
+(let (?n1 0)
+(flet ($n2 (> ?n1 v0))
+(let (?n3 (store v4 v1 ?n1))
+(flet ($n4 (p0 v0))
+(let (?n5 (store v4 ?n1 v0))
+(let (?n6 (ite $n4 ?n5 v4))
+(let (?n7 (ite $n2 ?n3 ?n6))
+(flet ($n8 (p0 ?n1))
+(let (?n9 1)
+(let (?n10 (ite $n8 ?n9 ?n1))
+(flet ($n11 (= ?n1 ?n10))
+(flet ($n12 (p0 ?n9))
+(let (?n13 (ite $n12 ?n9 ?n1))
+(let (?n14 3)
+(let (?n15 (* v1 ?n14))
+(flet ($n16 (< ?n13 ?n15))
+(flet ($n17 (p1 ?n5))
+(let (?n18 (ite $n17 ?n3 ?n5))
+(let (?n19 (ite $n16 v3 ?n18))
+(let (?n20 (ite $n11 ?n19 v3))
+(let (?n21 (f1 ?n7 v4 ?n20))
+(flet ($n22 (p1 ?n21))
+(let (?n23 (f0 ?n1 ?n1 ?n1))
+(flet ($n24 (p0 ?n23))
+(let (?n25 (ite $n24 ?n9 ?n1))
+(flet ($n26 (<= ?n15 ?n25))
+(let (?n27 (ite $n26 v4 v3))
+(let (?n28 (ite $n16 v3 ?n5))
+(let (?n29 (f1 v4 ?n27 ?n28))
+(flet ($n30 (p1 ?n29))
+(flet ($n31 (or $n22 $n30))
+$n31
+))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/auflia/fuzz02.smt b/test/regress/regress0/auflia/fuzz02.smt
new file mode 100644
index 0000000..7f34226
--- /dev/null
+++ b/test/regress/regress0/auflia/fuzz02.smt
@@ -0,0 +1,244 @@
+(benchmark fuzzsmt
+:logic QF_AUFLIA
+:status sat
+:extrafuns ((f0 Int Int))
+:extrafuns ((f1 Array Array))
+:extrapreds ((p0 Int Int Int))
+:extrapreds ((p1 Array Array Array))
+:extrafuns ((v0 Int))
+:extrafuns ((v1 Int))
+:extrafuns ((v2 Array))
+:extrafuns ((v3 Array))
+:formula
+(let (?e4 1)
+(let (?e5 (+ v0 v0))
+(let (?e6 (f0 v0))
+(let (?e7 (ite (p0 ?e6 v1 ?e5) 1 0))
+(let (?e8 (* v0 ?e4))
+(let (?e9 (select v3 ?e6))
+(let (?e10 (select v3 ?e5))
+(let (?e11 (f1 v3))
+(let (?e12 (f1 ?e11))
+(let (?e13 (f1 ?e12))
+(let (?e14 (f1 v2))
+(flet ($e15 (p1 v3 v3 v3))
+(flet ($e16 (p1 ?e11 ?e11 ?e13))
+(flet ($e17 (p1 ?e14 ?e13 ?e12))
+(flet ($e18 (p1 v2 v3 ?e11))
+(flet ($e19 (p0 v1 ?e9 v0))
+(flet ($e20 (p0 ?e8 v1 ?e7))
+(flet ($e21 (> v0 ?e6))
+(flet ($e22 (< ?e5 ?e10))
+(let (?e23 (ite $e20 ?e12 ?e12))
+(let (?e24 (ite $e21 ?e23 v3))
+(let (?e25 (ite $e22 ?e13 ?e12))
+(let (?e26 (ite $e18 v2 ?e24))
+(let (?e27 (ite $e15 ?e11 ?e26))
+(let (?e28 (ite $e22 ?e14 ?e26))
+(let (?e29 (ite $e16 ?e13 ?e23))
+(let (?e30 (ite $e17 ?e11 ?e28))
+(let (?e31 (ite $e19 ?e13 ?e11))
+(let (?e32 (ite $e21 v0 ?e7))
+(let (?e33 (ite $e20 ?e8 v1))
+(let (?e34 (ite $e20 ?e32 ?e32))
+(let (?e35 (ite $e16 v1 ?e8))
+(let (?e36 (ite $e17 ?e6 ?e7))
+(let (?e37 (ite $e19 ?e32 ?e7))
+(let (?e38 (ite $e21 ?e9 ?e8))
+(let (?e39 (ite $e15 ?e10 ?e37))
+(let (?e40 (ite $e19 ?e7 ?e6))
+(let (?e41 (ite $e22 ?e5 ?e8))
+(let (?e42 (ite $e18 ?e32 ?e8))
+(let (?e43 (select ?e13 ?e35))
+(let (?e44 (select ?e26 ?e37))
+(let (?e45 (f1 ?e26))
+(let (?e46 (f1 ?e12))
+(let (?e47 (f1 ?e25))
+(let (?e48 (f1 ?e25))
+(let (?e49 (f1 ?e24))
+(let (?e50 (f1 ?e14))
+(let (?e51 (f1 ?e23))
+(let (?e52 (f1 ?e27))
+(let (?e53 (f1 ?e30))
+(let (?e54 (f1 ?e29))
+(let (?e55 (f1 ?e31))
+(let (?e56 (f1 v3))
+(let (?e57 (f1 ?e50))
+(let (?e58 (f1 ?e13))
+(let (?e59 (f1 ?e11))
+(let (?e60 (f1 ?e12))
+(let (?e61 (f1 ?e28))
+(let (?e62 (f1 ?e49))
+(let (?e63 (f1 v2))
+(let (?e64 (f0 ?e36))
+(let (?e65 (+ v0 ?e36))
+(let (?e66 (- v1 ?e35))
+(let (?e67 (f0 ?e65))
+(let (?e68 (f0 ?e32))
+(let (?e69 (f0 ?e6))
+(let (?e70 (- ?e35 ?e68))
+(let (?e71 (* ?e4 ?e40))
+(let (?e72 (~ ?e42))
+(let (?e73 (- ?e38 ?e37))
+(let (?e74 (~ ?e39))
+(let (?e75 (ite (p0 ?e64 ?e34 ?e70) 1 0))
+(let (?e76 (- ?e10 ?e5))
+(let (?e77 (* ?e41 ?e4))
+(let (?e78 (ite (p0 ?e73 ?e7 ?e34) 1 0))
+(let (?e79 (~ ?e10))
+(let (?e80 (- ?e42 ?e64))
+(let (?e81 (* ?e10 (~ ?e4)))
+(let (?e82 (+ ?e9 ?e69))
+(let (?e83 (- ?e34 ?e39))
+(let (?e84 (~ ?e33))
+(let (?e85 (+ ?e43 ?e33))
+(let (?e86 (- ?e37 ?e37))
+(let (?e87 (ite (p0 ?e5 ?e64 ?e83) 1 0))
+(let (?e88 (f0 ?e74))
+(let (?e89 (ite (p0 ?e88 ?e9 ?e73) 1 0))
+(let (?e90 (+ ?e88 ?e80))
+(let (?e91 (- ?e8 ?e8))
+(let (?e92 (~ ?e44))
+(flet ($e93 (p1 ?e52 ?e59 ?e30))
+(flet ($e94 (p1 ?e61 ?e29 ?e46))
+(flet ($e95 (p1 ?e51 ?e50 ?e63))
+(flet ($e96 (p1 ?e13 ?e63 ?e23))
+(flet ($e97 (p1 ?e57 ?e25 ?e57))
+(flet ($e98 (p1 v2 ?e58 ?e31))
+(flet ($e99 (p1 ?e14 ?e28 ?e14))
+(flet ($e100 (p1 ?e62 ?e57 ?e30))
+(flet ($e101 (p1 ?e53 ?e12 ?e62))
+(flet ($e102 (p1 ?e49 ?e12 ?e52))
+(flet ($e103 (p1 ?e46 ?e49 ?e14))
+(flet ($e104 (p1 ?e57 v2 ?e31))
+(flet ($e105 (p1 ?e24 ?e55 ?e14))
+(flet ($e106 (p1 ?e53 ?e59 ?e30))
+(flet ($e107 (p1 v3 ?e11 ?e30))
+(flet ($e108 (p1 ?e56 ?e59 ?e60))
+(flet ($e109 (p1 ?e62 ?e23 ?e55))
+(flet ($e110 (p1 ?e29 ?e59 ?e51))
+(flet ($e111 (p1 ?e30 ?e28 ?e59))
+(flet ($e112 (p1 v2 ?e54 ?e13))
+(flet ($e113 (p1 ?e14 ?e50 ?e48))
+(flet ($e114 (p1 ?e26 ?e60 ?e30))
+(flet ($e115 (p1 ?e27 ?e12 ?e47))
+(flet ($e116 (p1 ?e45 ?e53 ?e62))
+(flet ($e117 (<= ?e91 ?e85))
+(flet ($e118 (>= ?e40 ?e89))
+(flet ($e119 (distinct ?e76 ?e77))
+(flet ($e120 (>= ?e91 ?e5))
+(flet ($e121 (= ?e84 ?e68))
+(flet ($e122 (p0 ?e41 v1 ?e36))
+(flet ($e123 (= ?e77 ?e69))
+(flet ($e124 (> ?e38 ?e10))
+(flet ($e125 (p0 v1 ?e77 ?e5))
+(flet ($e126 (= ?e64 ?e41))
+(flet ($e127 (>= ?e81 ?e40))
+(flet ($e128 (< ?e67 ?e39))
+(flet ($e129 (distinct ?e78 ?e65))
+(flet ($e130 (<= ?e34 ?e33))
+(flet ($e131 (<= ?e72 ?e76))
+(flet ($e132 (> ?e87 ?e88))
+(flet ($e133 (>= ?e92 ?e8))
+(flet ($e134 (>= ?e86 ?e36))
+(flet ($e135 (> ?e32 ?e33))
+(flet ($e136 (distinct ?e90 ?e6))
+(flet ($e137 (< ?e88 ?e35))
+(flet ($e138 (p0 ?e9 ?e38 ?e78))
+(flet ($e139 (> ?e80 ?e32))
+(flet ($e140 (p0 ?e79 ?e91 ?e88))
+(flet ($e141 (p0 ?e75 ?e10 ?e74))
+(flet ($e142 (>= ?e34 ?e39))
+(flet ($e143 (p0 ?e66 ?e67 ?e66))
+(flet ($e144 (= ?e90 ?e39))
+(flet ($e145 (< ?e37 ?e79))
+(flet ($e146 (distinct ?e44 ?e78))
+(flet ($e147 (< ?e83 v0))
+(flet ($e148 (>= ?e7 ?e69))
+(flet ($e149 (>= ?e73 ?e10))
+(flet ($e150 (p0 ?e71 ?e90 ?e65))
+(flet ($e151 (p0 ?e36 ?e33 ?e33))
+(flet ($e152 (> ?e82 ?e80))
+(flet ($e153 (distinct ?e79 ?e10))
+(flet ($e154 (p0 ?e42 ?e64 v0))
+(flet ($e155 (< ?e70 ?e86))
+(flet ($e156 (<= ?e43 ?e7))
+(flet ($e157 (or $e16 $e139))
+(flet ($e158 (if_then_else $e103 $e93 $e141))
+(flet ($e159 (not $e132))
+(flet ($e160 (or $e111 $e100))
+(flet ($e161 (iff $e160 $e134))
+(flet ($e162 (and $e19 $e133))
+(flet ($e163 (and $e146 $e128))
+(flet ($e164 (and $e157 $e156))
+(flet ($e165 (xor $e140 $e155))
+(flet ($e166 (implies $e113 $e153))
+(flet ($e167 (iff $e164 $e102))
+(flet ($e168 (implies $e121 $e116))
+(flet ($e169 (if_then_else $e142 $e119 $e104))
+(flet ($e170 (implies $e129 $e99))
+(flet ($e171 (or $e135 $e161))
+(flet ($e172 (or $e126 $e15))
+(flet ($e173 (implies $e158 $e137))
+(flet ($e174 (iff $e166 $e117))
+(flet ($e175 (iff $e105 $e174))
+(flet ($e176 (not $e125))
+(flet ($e177 (iff $e120 $e171))
+(flet ($e178 (xor $e168 $e149))
+(flet ($e179 (and $e96 $e96))
+(flet ($e180 (and $e130 $e143))
+(flet ($e181 (and $e108 $e20))
+(flet ($e182 (if_then_else $e173 $e159 $e167))
+(flet ($e183 (xor $e118 $e107))
+(flet ($e184 (implies $e98 $e169))
+(flet ($e185 (and $e177 $e136))
+(flet ($e186 (not $e185))
+(flet ($e187 (and $e170 $e138))
+(flet ($e188 (iff $e109 $e147))
+(flet ($e189 (or $e188 $e145))
+(flet ($e190 (implies $e152 $e94))
+(flet ($e191 (if_then_else $e97 $e181 $e163))
+(flet ($e192 (iff $e115 $e190))
+(flet ($e193 (if_then_else $e183 $e172 $e17))
+(flet ($e194 (not $e127))
+(flet ($e195 (iff $e179 $e101))
+(flet ($e196 (iff $e186 $e154))
+(flet ($e197 (if_then_else $e178 $e176 $e150))
+(flet ($e198 (xor $e122 $e124))
+(flet ($e199 (not $e182))
+(flet ($e200 (and $e112 $e197))
+(flet ($e201 (iff $e151 $e184))
+(flet ($e202 (or $e106 $e192))
+(flet ($e203 (iff $e162 $e95))
+(flet ($e204 (and $e199 $e199))
+(flet ($e205 (if_then_else $e131 $e187 $e131))
+(flet ($e206 (xor $e144 $e201))
+(flet ($e207 (and $e18 $e202))
+(flet ($e208 (and $e193 $e22))
+(flet ($e209 (or $e123 $e203))
+(flet ($e210 (not $e196))
+(flet ($e211 (and $e209 $e200))
+(flet ($e212 (xor $e208 $e114))
+(flet ($e213 (xor $e212 $e175))
+(flet ($e214 (and $e148 $e206))
+(flet ($e215 (or $e198 $e210))
+(flet ($e216 (or $e213 $e215))
+(flet ($e217 (xor $e189 $e194))
+(flet ($e218 (and $e214 $e204))
+(flet ($e219 (and $e211 $e21))
+(flet ($e220 (and $e165 $e191))
+(flet ($e221 (xor $e180 $e180))
+(flet ($e222 (and $e218 $e205))
+(flet ($e223 (iff $e195 $e219))
+(flet ($e224 (not $e221))
+(flet ($e225 (iff $e222 $e220))
+(flet ($e226 (implies $e225 $e223))
+(flet ($e227 (not $e207))
+(flet ($e228 (if_then_else $e226 $e226 $e216))
+(flet ($e229 (iff $e217 $e110))
+(flet ($e230 (not $e229))
+(flet ($e231 (if_then_else $e224 $e230 $e227))
+(flet ($e232 (or $e231 $e228))
+$e232
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/auflia/fuzz03.smt b/test/regress/regress0/auflia/fuzz03.smt
new file mode 100644
index 0000000..151250a
--- /dev/null
+++ b/test/regress/regress0/auflia/fuzz03.smt
@@ -0,0 +1,15 @@
+(benchmark fuzzsmt
+:logic QF_AUFLIA
+:extrapreds ((p1 Array Array Array))
+:extrafuns ((v1 Array))
+:extrafuns ((f1 Array Array Array Array))
+:status sat
+:formula
+(let (?n1 0)
+(let (?n2 (store v1 ?n1 ?n1))
+(let (?n3 (f1 v1 v1 ?n2))
+(let (?n4 (f1 v1 ?n2 v1))
+(let (?n5 (f1 v1 ?n4 ?n2))
+(flet ($n6 (p1 ?n3 ?n5 v1))
+$n6
+)))))))
diff --git a/test/regress/regress0/auflia/fuzz04.smt b/test/regress/regress0/auflia/fuzz04.smt
new file mode 100644
index 0000000..7523aae
--- /dev/null
+++ b/test/regress/regress0/auflia/fuzz04.smt
@@ -0,0 +1,15 @@
+(benchmark fuzzsmt
+:logic QF_AUFLIA
+:extrapreds ((p1 Array Array))
+:extrafuns ((f1 Array Array Array Array))
+:extrafuns ((v3 Array))
+:status sat
+:formula
+(let (?n1 (f1 v3 v3 v3))
+(let (?n2 0)
+(let (?n3 (store v3 ?n2 ?n2))
+(let (?n4 (f1 v3 v3 ?n3))
+(let (?n5 (f1 v3 ?n4 v3))
+(flet ($n6 (p1 ?n1 ?n5))
+$n6
+)))))))
diff --git a/test/regress/regress0/auflia/fuzz05.smt b/test/regress/regress0/auflia/fuzz05.smt
new file mode 100644
index 0000000..538f86e
--- /dev/null
+++ b/test/regress/regress0/auflia/fuzz05.smt
@@ -0,0 +1,183 @@
+(benchmark fuzzsmt
+:logic QF_AUFLIA
+:status sat
+:extrafuns ((f0 Int Int Int))
+:extrafuns ((f1 Array Array Array Array))
+:extrapreds ((p0 Int))
+:extrapreds ((p1 Array Array Array))
+:extrafuns ((v0 Int))
+:extrafuns ((v1 Int))
+:extrafuns ((v2 Int))
+:extrafuns ((v3 Array))
+:formula
+(let (?e4 2)
+(let (?e5 (- v2 v2))
+(let (?e6 (f0 v1 v0))
+(let (?e7 (* ?e6 ?e4))
+(let (?e8 (ite (p0 v2) 1 0))
+(let (?e9 (f1 v3 v3 v3))
+(flet ($e10 (p1 ?e9 v3 v3))
+(flet ($e11 (> ?e7 v1))
+(flet ($e12 (<= ?e8 ?e6))
+(flet ($e13 (p0 ?e8))
+(flet ($e14 (>= v2 v0))
+(flet ($e15 (p0 ?e5))
+(let (?e16 (ite $e12 v3 ?e9))
+(let (?e17 (ite $e15 ?e16 v3))
+(let (?e18 (ite $e11 ?e17 ?e16))
+(let (?e19 (ite $e14 ?e9 ?e9))
+(let (?e20 (ite $e13 ?e16 v3))
+(let (?e21 (ite $e12 v3 ?e19))
+(let (?e22 (ite $e10 ?e16 v3))
+(let (?e23 (ite $e15 ?e5 v0))
+(let (?e24 (ite $e12 v1 ?e6))
+(let (?e25 (ite $e11 ?e6 v0))
+(let (?e26 (ite $e15 ?e25 ?e23))
+(let (?e27 (ite $e12 v1 v0))
+(let (?e28 (ite $e14 ?e23 ?e24))
+(let (?e29 (ite $e10 ?e6 ?e23))
+(let (?e30 (ite $e13 v2 ?e29))
+(let (?e31 (ite $e12 ?e7 ?e25))
+(let (?e32 (ite $e12 ?e8 ?e8))
+(let (?e33 (store v3 ?e27 ?e7))
+(let (?e34 (select ?e21 ?e30))
+(let (?e35 (f1 ?e9 ?e21 ?e18))
+(let (?e36 (f1 ?e9 ?e17 v3))
+(let (?e37 (f1 ?e18 ?e21 ?e19))
+(let (?e38 (f1 ?e33 ?e18 ?e35))
+(let (?e39 (f1 ?e22 ?e22 v3))
+(let (?e40 (f1 ?e18 ?e20 ?e22))
+(let (?e41 (f1 ?e16 ?e33 ?e36))
+(let (?e42 (f0 ?e31 ?e26))
+(let (?e43 (+ ?e25 ?e5))
+(let (?e44 (f0 ?e42 v0))
+(let (?e45 (ite (p0 ?e24) 1 0))
+(let (?e46 (f0 ?e8 v0))
+(let (?e47 (ite (p0 v1) 1 0))
+(let (?e48 (+ ?e23 ?e26))
+(let (?e49 (~ ?e28))
+(let (?e50 (ite (p0 ?e27) 1 0))
+(let (?e51 (~ ?e46))
+(let (?e52 (~ ?e32))
+(let (?e53 (* (~ ?e4) ?e30))
+(let (?e54 (~ ?e29))
+(let (?e55 (- ?e48 ?e31))
+(let (?e56 (* ?e4 ?e7))
+(let (?e57 (f0 ?e29 ?e24))
+(let (?e58 (+ ?e34 v2))
+(let (?e59 (f0 ?e26 ?e50))
+(let (?e60 (f0 ?e6 ?e54))
+(flet ($e61 (p1 ?e38 ?e19 ?e9))
+(flet ($e62 (p1 ?e41 ?e18 ?e40))
+(flet ($e63 (p1 ?e21 ?e35 ?e40))
+(flet ($e64 (p1 ?e16 ?e37 ?e19))
+(flet ($e65 (p1 ?e33 ?e38 ?e18))
+(flet ($e66 (p1 ?e39 ?e20 ?e35))
+(flet ($e67 (p1 ?e38 ?e36 ?e40))
+(flet ($e68 (p1 ?e21 ?e35 ?e20))
+(flet ($e69 (p1 ?e9 ?e33 ?e19))
+(flet ($e70 (p1 ?e18 ?e18 ?e35))
+(flet ($e71 (p1 v3 ?e18 ?e41))
+(flet ($e72 (p1 ?e39 ?e35 v3))
+(flet ($e73 (p1 ?e37 ?e22 ?e38))
+(flet ($e74 (p1 ?e16 ?e9 ?e16))
+(flet ($e75 (p1 ?e17 ?e9 ?e37))
+(flet ($e76 (= ?e53 ?e32))
+(flet ($e77 (>= ?e26 ?e55))
+(flet ($e78 (distinct ?e23 ?e7))
+(flet ($e79 (< ?e28 ?e5))
+(flet ($e80 (<= ?e42 ?e30))
+(flet ($e81 (>= ?e58 ?e50))
+(flet ($e82 (= ?e45 ?e46))
+(flet ($e83 (<= ?e59 ?e32))
+(flet ($e84 (p0 ?e56))
+(flet ($e85 (p0 v2))
+(flet ($e86 (p0 ?e31))
+(flet ($e87 (> ?e25 ?e32))
+(flet ($e88 (= ?e44 ?e54))
+(flet ($e89 (< ?e60 ?e23))
+(flet ($e90 (p0 ?e29))
+(flet ($e91 (distinct v2 ?e6))
+(flet ($e92 (<= ?e59 ?e58))
+(flet ($e93 (= ?e43 ?e47))
+(flet ($e94 (distinct ?e54 v2))
+(flet ($e95 (> ?e8 ?e5))
+(flet ($e96 (distinct ?e59 ?e8))
+(flet ($e97 (distinct ?e48 ?e23))
+(flet ($e98 (> ?e24 ?e60))
+(flet ($e99 (>= ?e34 ?e44))
+(flet ($e100 (< ?e49 ?e7))
+(flet ($e101 (distinct ?e51 ?e53))
+(flet ($e102 (<= ?e52 ?e23))
+(flet ($e103 (<= v1 ?e57))
+(flet ($e104 (>= ?e48 ?e52))
+(flet ($e105 (distinct ?e32 ?e29))
+(flet ($e106 (p0 ?e46))
+(flet ($e107 (<= v0 v0))
+(flet ($e108 (= ?e27 ?e43))
+(flet ($e109 (and $e67 $e107))
+(flet ($e110 (or $e75 $e69))
+(flet ($e111 (implies $e15 $e76))
+(flet ($e112 (xor $e98 $e96))
+(flet ($e113 (and $e78 $e62))
+(flet ($e114 (or $e100 $e77))
+(flet ($e115 (xor $e83 $e12))
+(flet ($e116 (and $e13 $e71))
+(flet ($e117 (xor $e116 $e112))
+(flet ($e118 (not $e86))
+(flet ($e119 (or $e81 $e64))
+(flet ($e120 (iff $e72 $e70))
+(flet ($e121 (iff $e108 $e114))
+(flet ($e122 (or $e88 $e74))
+(flet ($e123 (xor $e105 $e118))
+(flet ($e124 (xor $e103 $e104))
+(flet ($e125 (implies $e93 $e119))
+(flet ($e126 (or $e102 $e90))
+(flet ($e127 (iff $e126 $e89))
+(flet ($e128 (if_then_else $e66 $e109 $e106))
+(flet ($e129 (implies $e85 $e101))
+(flet ($e130 (xor $e110 $e128))
+(flet ($e131 (iff $e63 $e11))
+(flet ($e132 (not $e84))
+(flet ($e133 (not $e68))
+(flet ($e134 (or $e124 $e113))
+(flet ($e135 (if_then_else $e82 $e121 $e94))
+(flet ($e136 (iff $e132 $e80))
+(flet ($e137 (or $e95 $e131))
+(flet ($e138 (and $e129 $e122))
+(flet ($e139 (or $e92 $e135))
+(flet ($e140 (xor $e133 $e139))
+(flet ($e141 (if_then_else $e140 $e91 $e130))
+(flet ($e142 (implies $e117 $e117))
+(flet ($e143 (implies $e14 $e79))
+(flet ($e144 (not $e97))
+(flet ($e145 (and $e120 $e143))
+(flet ($e146 (xor $e134 $e87))
+(flet ($e147 (iff $e125 $e111))
+(flet ($e148 (iff $e147 $e146))
+(flet ($e149 (not $e99))
+(flet ($e150 (or $e145 $e148))
+(flet ($e151 (iff $e149 $e141))
+(flet ($e152 (and $e61 $e61))
+(flet ($e153 (if_then_else $e10 $e142 $e152))
+(flet ($e154 (and $e73 $e115))
+(flet ($e155 (or $e138 $e150))
+(flet ($e156 (and $e127 $e136))
+(flet ($e157 (and $e123 $e137))
+(flet ($e158 (if_then_else $e151 $e155 $e155))
+(flet ($e159 (and $e65 $e153))
+(flet ($e160 (not $e144))
+(flet ($e161 (implies $e156 $e156))
+(flet ($e162 (not $e161))
+(flet ($e163 (if_then_else $e162 $e157 $e159))
+(flet ($e164 (implies $e158 $e154))
+(flet ($e165 (or $e160 $e163))
+(flet ($e166 (not $e164))
+(flet ($e167 (iff $e165 $e165))
+(flet ($e168 (and $e166 $e166))
+(flet ($e169 (and $e168 $e168))
+(flet ($e170 (not $e169))
+(flet ($e171 (iff $e167 $e170))
+$e171
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/auflia/x2.smt b/test/regress/regress0/auflia/x2.smt
new file mode 100644
index 0000000..3566d98
--- /dev/null
+++ b/test/regress/regress0/auflia/x2.smt
@@ -0,0 +1,28 @@
+(benchmark fuzzsmt
+:logic QF_AUFLIA
+:extrafuns ((v4 Array))
+:extrafuns ((f0 Int Int))
+:extrapreds ((p0 Int Int Int))
+:status sat
+:formula
+(let (?n1 0)
+(flet ($n2 (p0 ?n1 ?n1 ?n1))
+(let (?n3 1)
+(let (?n4 (ite $n2 ?n3 ?n1))
+(flet ($n5 (< ?n1 ?n4))
+(flet ($n6 (p0 ?n3 ?n1 ?n1))
+(let (?n7 (ite $n6 ?n3 ?n1))
+(let (?n8 (ite $n5 ?n7 ?n3))
+(flet ($n9 (< ?n1 ?n8))
+(flet ($n10 true)
+(let (?n11 3)
+(let (?n12 (f0 ?n1))
+(let (?n13 (* ?n11 ?n12))
+(let (?n14 (select v4 ?n1))
+(flet ($n15 (> ?n13 ?n14))
+(flet ($n16 (xor $n10 $n15))
+(flet ($n17 false)
+(flet ($n18 (implies $n16 $n17))
+(flet ($n19 (and $n9 $n18))
+$n19
+))))))))))))))))))))
diff --git a/test/regress/regress0/boolean-prec.cvc b/test/regress/regress0/boolean-prec.cvc
new file mode 100644
index 0000000..9d1029c
--- /dev/null
+++ b/test/regress/regress0/boolean-prec.cvc
@@ -0,0 +1,6 @@
+% EXPECT: valid
+% Simple test for right precedence of AND, <=>, NOT.
+
+A, B, C: BOOLEAN;
+
+QUERY (NOT A AND NOT B <=> C) <=> (((NOT A) AND (NOT B)) <=> C);
diff --git a/test/regress/regress0/boolean-terms-bug-array.smt2 b/test/regress/regress0/boolean-terms-bug-array.smt2
new file mode 100644
index 0000000..1183487
--- /dev/null
+++ b/test/regress/regress0/boolean-terms-bug-array.smt2
@@ -0,0 +1,9 @@
+(set-logic AUFLIRA)
+(set-info :status sat)
+
+(declare-fun f ((Array Int Bool)) Bool)
+(declare-fun y () (Array Int Bool))
+
+(assert (forall ((x (Array Int Bool))) (f y)))
+
+(check-sat)
diff --git a/test/regress/regress0/boolean-terms-kernel1.smt2 b/test/regress/regress0/boolean-terms-kernel1.smt2
new file mode 100644
index 0000000..a999a6a
--- /dev/null
+++ b/test/regress/regress0/boolean-terms-kernel1.smt2
@@ -0,0 +1,13 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_ABV)
+(declare-fun b () (_ BitVec 32))
+(declare-fun hk () (Array Bool (_ BitVec 32)))
+(push 1)
+(assert (not (= b (select hk true))))
+(check-sat)
+(pop 1)
+(assert (not (= b (_ bv0 32))))
+(assert (= b (select hk true)))
+(check-sat)
diff --git a/test/regress/regress0/boolean-terms-kernel2.smt2 b/test/regress/regress0/boolean-terms-kernel2.smt2
new file mode 100644
index 0000000..a4e49dd
--- /dev/null
+++ b/test/regress/regress0/boolean-terms-kernel2.smt2
@@ -0,0 +1,19 @@
+; COMMAND-LINE: --incremental
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_ABV)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(declare-fun a () (Array Bool (Array (_ BitVec 32) (_ BitVec 32))))
+(declare-fun v2 () (_ BitVec 32))
+(declare-fun r0 () (_ BitVec 32))
+(declare-fun r1 () (_ BitVec 32))
+(declare-fun l () (_ BitVec 32))
+(declare-fun i () (_ BitVec 32))
+(assert c)
+(push 1)
+(assert (not (=> false (not (= i (select (select a true) (bvsub (bvmul (bvsdiv v2 (_ bv2 32)) (bvadd (bvmul (_ bv2 32) l) (_ bv1 32))) (_ bv1 32))))))))
+(check-sat)
+(pop 1)
+(assert (not (=> (= i (select (select a true) (bvsub (bvmul (bvsdiv v2 (_ bv2 32)) (bvadd (bvmul (_ bv2 32) l) (_ bv1 32))) (_ bv1 32)))) (not (= r1 (ite b i r0))))))
+(check-sat)
diff --git a/test/regress/regress0/boolean-terms.cvc b/test/regress/regress0/boolean-terms.cvc
new file mode 100644
index 0000000..00bcf38
--- /dev/null
+++ b/test/regress/regress0/boolean-terms.cvc
@@ -0,0 +1,15 @@
+% EXPECT: sat
+%OPTION "produce-models";
+
+f : BOOLEAN -> INT;
+x : INT;
+p : BOOLEAN -> BOOLEAN;
+
+ASSERT f(p(TRUE)) = x;
+ASSERT f(p(FALSE)) = x + 1;
+
+CHECKSAT;
+%GET_VALUE f(p(TRUE));
+%GET_VALUE f(p(TRUE)) = x;
+%GET_VALUE f(p(FALSE)) = x + 1;
+%COUNTERMODEL;
diff --git a/test/regress/regress0/boolean.cvc b/test/regress/regress0/boolean.cvc
new file mode 100644
index 0000000..eb0e7ab
--- /dev/null
+++ b/test/regress/regress0/boolean.cvc
@@ -0,0 +1,806 @@
+% EXPECT: valid
+p : BOOLEAN;
+q : BOOLEAN;
+r : BOOLEAN;
+s : BOOLEAN;
+t : BOOLEAN;
+u : BOOLEAN;
+v : BOOLEAN;
+P1 : BOOLEAN;
+P2 : BOOLEAN;
+P3 : BOOLEAN;
+P4 : BOOLEAN;
+P6 : BOOLEAN;
+P5 : BOOLEAN;
+a41 : BOOLEAN = 
+        IF p THEN FALSE
+        ELSE TRUE
+        ENDIF;
+a42 : BOOLEAN = 
+        IF a41 THEN FALSE
+        ELSE TRUE
+        ENDIF;
+a45 : BOOLEAN = 
+        IF p THEN p
+        ELSE a41
+        ENDIF;
+a46 : BOOLEAN = 
+        IF q THEN FALSE
+        ELSE TRUE
+        ENDIF;
+a49 : BOOLEAN = 
+        IF s THEN t
+        ELSE FALSE
+        ENDIF;
+a58 : BOOLEAN = 
+        IF q THEN q
+        ELSE a46
+        ENDIF;
+a59 : BOOLEAN = 
+        IF r THEN FALSE
+        ELSE TRUE
+        ENDIF;
+a61 : BOOLEAN = 
+        IF s THEN FALSE
+        ELSE TRUE
+        ENDIF;
+a62 : BOOLEAN = 
+        IF s THEN s
+        ELSE a61
+        ENDIF;
+a65 : BOOLEAN = 
+        IF t THEN FALSE
+        ELSE TRUE
+        ENDIF;
+a67 : BOOLEAN = 
+        IF u THEN FALSE
+        ELSE TRUE
+        ENDIF;
+a73 : BOOLEAN = 
+        IF p THEN q
+        ELSE FALSE
+        ENDIF;
+a74 : BOOLEAN = 
+        IF q THEN p
+        ELSE FALSE
+        ENDIF;
+a77 : BOOLEAN = 
+        IF r THEN TRUE
+        ELSE s
+        ENDIF;
+a78 : BOOLEAN = 
+        IF s THEN TRUE
+        ELSE r
+        ENDIF;
+a81 : BOOLEAN = 
+        IF t THEN u
+        ELSE a67
+        ENDIF;
+a82 : BOOLEAN = 
+        IF u THEN t
+        ELSE a65
+        ENDIF;
+a88 : BOOLEAN = 
+        IF q THEN r
+        ELSE FALSE
+        ENDIF;
+a89 : BOOLEAN = 
+        IF p THEN a88
+        ELSE FALSE
+        ENDIF;
+a92 : BOOLEAN = 
+        IF s THEN TRUE
+        ELSE t
+        ENDIF;
+a94 : BOOLEAN = 
+        IF t THEN TRUE
+        ELSE u
+        ENDIF;
+a95 : BOOLEAN = 
+        IF s THEN TRUE
+        ELSE a94
+        ENDIF;
+a105 : BOOLEAN = 
+        IF t THEN u
+        ELSE FALSE
+        ENDIF;
+a111 : BOOLEAN = 
+        IF p THEN q
+        ELSE TRUE
+        ENDIF;
+a112 : BOOLEAN = 
+        IF q THEN r
+        ELSE TRUE
+        ENDIF;
+a114 : BOOLEAN = 
+        IF p THEN r
+        ELSE TRUE
+        ENDIF;
+a116 : BOOLEAN = 
+        IF s THEN t
+        ELSE a65
+        ENDIF;
+a121 : BOOLEAN = 
+        IF a46 THEN a41
+        ELSE TRUE
+        ENDIF;
+a126 : BOOLEAN = 
+        IF a59 THEN a61
+        ELSE 
+          IF a61 THEN FALSE
+          ELSE TRUE
+          ENDIF
+        ENDIF;
+a130 : BOOLEAN = 
+        IF q THEN TRUE
+        ELSE r
+        ENDIF;
+a132 : BOOLEAN = 
+        IF p THEN r
+        ELSE FALSE
+        ENDIF;
+a133 : BOOLEAN = 
+        IF a73 THEN TRUE
+        ELSE a132
+        ENDIF;
+a138 : BOOLEAN = 
+        IF a92 THEN 
+          IF s THEN TRUE
+          ELSE u
+          ENDIF
+        ELSE FALSE
+        ENDIF;
+a143 : BOOLEAN = 
+        IF a114 THEN a112
+        ELSE FALSE
+        ENDIF;
+a145 : BOOLEAN = 
+        IF 
+          IF 
+            IF p THEN TRUE
+            ELSE q
+            ENDIF THEN r
+          ELSE TRUE
+          ENDIF THEN a143
+        ELSE 
+          IF a143 THEN FALSE
+          ELSE TRUE
+          ENDIF
+        ENDIF;
+a147 : BOOLEAN = 
+        IF s THEN t
+        ELSE TRUE
+        ENDIF;
+a148 : BOOLEAN = 
+        IF s THEN u
+        ELSE TRUE
+        ENDIF;
+a149 : BOOLEAN = 
+        IF a147 THEN TRUE
+        ELSE a148
+        ENDIF;
+a153 : BOOLEAN = 
+        IF a73 THEN r
+        ELSE TRUE
+        ENDIF;
+a154 : BOOLEAN = 
+        IF a114 THEN TRUE
+        ELSE a112
+        ENDIF;
+a158 : BOOLEAN = 
+        IF a147 THEN a148
+        ELSE FALSE
+        ENDIF;
+a162 : BOOLEAN = 
+        IF p THEN a112
+        ELSE TRUE
+        ENDIF;
+a167 : BOOLEAN = 
+        IF a46 THEN TRUE
+        ELSE a59
+        ENDIF;
+a171 : BOOLEAN = 
+        IF a61 THEN a65
+        ELSE FALSE
+        ENDIF;
+a176 : BOOLEAN = 
+        IF p THEN q
+        ELSE r
+        ENDIF;
+a178 : BOOLEAN = 
+        IF p THEN a46
+        ELSE a59
+        ENDIF;
+a183 : BOOLEAN = 
+        IF s THEN a65
+        ELSE 
+          IF a65 THEN FALSE
+          ELSE TRUE
+          ENDIF
+        ENDIF;
+a187 : BOOLEAN = 
+        IF a41 THEN TRUE
+        ELSE q
+        ENDIF;
+a192 : BOOLEAN = 
+        IF 
+          IF r THEN s
+          ELSE FALSE
+          ENDIF THEN TRUE
+        ELSE 
+          IF a59 THEN t
+          ELSE FALSE
+          ENDIF
+        ENDIF;
+a197 : BOOLEAN = 
+        IF a111 THEN 
+          IF a41 THEN r
+          ELSE TRUE
+          ENDIF
+        ELSE FALSE
+        ENDIF;
+a200 : BOOLEAN = 
+        IF a49 THEN TRUE
+        ELSE a171
+        ENDIF;
+a204 : BOOLEAN = 
+        IF p THEN q
+        ELSE a46
+        ENDIF;
+a205 : BOOLEAN = 
+        IF q THEN p
+        ELSE TRUE
+        ENDIF;
+a206 : BOOLEAN = 
+        IF a111 THEN a205
+        ELSE FALSE
+        ENDIF;
+a210 : BOOLEAN = 
+        IF p THEN a46
+        ELSE TRUE
+        ENDIF;
+a214 : BOOLEAN = 
+        IF a73 THEN FALSE
+        ELSE TRUE
+        ENDIF;
+a221 : BOOLEAN = 
+        IF 
+          IF p THEN a46
+          ELSE FALSE
+          ENDIF THEN r
+        ELSE TRUE
+        ENDIF;
+a225 : BOOLEAN = 
+        IF a187 THEN a132
+        ELSE TRUE
+        ENDIF;
+a228 : BOOLEAN = 
+        IF q THEN r
+        ELSE a59
+        ENDIF;
+a231 : BOOLEAN = 
+        IF a204 THEN r
+        ELSE a59
+        ENDIF;
+a237 : BOOLEAN = 
+        IF q THEN a132
+        ELSE 
+          IF a41 THEN s
+          ELSE FALSE
+          ENDIF
+        ENDIF;
+a288 : BOOLEAN = 
+        IF 
+          IF 
+            IF p THEN a41
+            ELSE a42
+            ENDIF THEN FALSE
+          ELSE TRUE
+          ENDIF THEN 
+          IF 
+            IF a45 THEN 
+              IF 
+                IF q THEN TRUE
+                ELSE a46
+                ENDIF THEN 
+                IF 
+                  IF r THEN r
+                  ELSE TRUE
+                  ENDIF THEN 
+                  IF 
+                    IF a49 THEN s
+                    ELSE TRUE
+                    ENDIF THEN 
+                    IF u THEN 
+                      IF u THEN TRUE
+                      ELSE v
+                      ENDIF
+                    ELSE TRUE
+                    ENDIF
+                  ELSE FALSE
+                  ENDIF
+                ELSE FALSE
+                ENDIF
+              ELSE FALSE
+              ENDIF
+            ELSE FALSE
+            ENDIF THEN 
+            IF 
+              IF a58 THEN 
+                IF 
+                  IF r THEN r
+                  ELSE a59
+                  ENDIF THEN a62
+                ELSE FALSE
+                ENDIF
+              ELSE FALSE
+              ENDIF THEN 
+              IF 
+                IF a45 THEN 
+                  IF a62 THEN 
+                    IF 
+                      IF t THEN t
+                      ELSE a65
+                      ENDIF THEN 
+                      IF a67 THEN a67
+                      ELSE 
+                        IF a67 THEN FALSE
+                        ELSE TRUE
+                        ENDIF
+                      ENDIF
+                    ELSE FALSE
+                    ENDIF
+                  ELSE FALSE
+                  ENDIF
+                ELSE FALSE
+                ENDIF THEN 
+                IF 
+                  IF 
+                    IF a73 THEN a74
+                    ELSE 
+                      IF a74 THEN FALSE
+                      ELSE TRUE
+                      ENDIF
+                    ENDIF THEN 
+                    IF 
+                      IF a77 THEN a78
+                      ELSE 
+                        IF a78 THEN FALSE
+                        ELSE TRUE
+                        ENDIF
+                      ENDIF THEN 
+                      IF a81 THEN a82
+                      ELSE 
+                        IF a82 THEN FALSE
+                        ELSE TRUE
+                        ENDIF
+                      ENDIF
+                    ELSE FALSE
+                    ENDIF
+                  ELSE FALSE
+                  ENDIF THEN 
+                  IF 
+                    IF 
+                      IF 
+                        IF a73 THEN r
+                        ELSE FALSE
+                        ENDIF THEN a89
+                      ELSE 
+                        IF a89 THEN FALSE
+                        ELSE TRUE
+                        ENDIF
+                      ENDIF THEN 
+                      IF 
+                        IF a92 THEN TRUE
+                        ELSE u
+                        ENDIF THEN a95
+                      ELSE 
+                        IF a95 THEN FALSE
+                        ELSE TRUE
+                        ENDIF
+                      ENDIF
+                    ELSE FALSE
+                    ENDIF THEN 
+                    IF 
+                      IF 
+                        IF 
+                          IF p THEN p
+                          ELSE FALSE
+                          ENDIF THEN p
+                        ELSE a41
+                        ENDIF THEN 
+                        IF 
+                          IF 
+                            IF q THEN TRUE
+                            ELSE q
+                            ENDIF THEN q
+                          ELSE a46
+                          ENDIF THEN 
+                          IF 
+                            IF 
+                              IF r THEN a77
+                              ELSE FALSE
+                              ENDIF THEN r
+                            ELSE a59
+                            ENDIF THEN 
+                            IF 
+                              IF t THEN TRUE
+                              ELSE a105
+                              ENDIF THEN t
+                            ELSE a65
+                            ENDIF
+                          ELSE FALSE
+                          ENDIF
+                        ELSE FALSE
+                        ENDIF
+                      ELSE FALSE
+                      ENDIF THEN 
+                      IF a58 THEN 
+                        IF 
+                          IF 
+                            IF 
+                              IF a111 THEN a112
+                              ELSE FALSE
+                              ENDIF THEN a114
+                            ELSE TRUE
+                            ENDIF THEN 
+                            IF 
+                              IF a116 THEN a81
+                              ELSE FALSE
+                              ENDIF THEN 
+                              IF s THEN u
+                              ELSE a67
+                              ENDIF
+                            ELSE TRUE
+                            ENDIF
+                          ELSE FALSE
+                          ENDIF THEN 
+                          IF 
+                            IF 
+                              IF a111 THEN a121
+                              ELSE 
+                                IF a121 THEN FALSE
+                                ELSE TRUE
+                                ENDIF
+                              ENDIF THEN 
+                              IF 
+                                IF r THEN s
+                                ELSE a61
+                                ENDIF THEN a126
+                              ELSE 
+                                IF a126 THEN FALSE
+                                ELSE TRUE
+                                ENDIF
+                              ENDIF
+                            ELSE FALSE
+                            ENDIF THEN 
+                            IF 
+                              IF 
+                                IF 
+                                  IF p THEN a130
+                                  ELSE FALSE
+                                  ENDIF THEN a133
+                                ELSE 
+                                  IF a133 THEN FALSE
+                                  ELSE TRUE
+                                  ENDIF
+                                ENDIF THEN 
+                                IF 
+                                  IF s THEN TRUE
+                                  ELSE a105
+                                  ENDIF THEN a138
+                                ELSE 
+                                  IF a138 THEN FALSE
+                                  ELSE TRUE
+                                  ENDIF
+                                ENDIF
+                              ELSE FALSE
+                              ENDIF THEN 
+                              IF 
+                                IF a145 THEN 
+                                  IF 
+                                    IF s THEN a94
+                                    ELSE TRUE
+                                    ENDIF THEN a149
+                                  ELSE 
+                                    IF a149 THEN FALSE
+                                    ELSE TRUE
+                                    ENDIF
+                                  ENDIF
+                                ELSE FALSE
+                                ENDIF THEN 
+                                IF 
+                                  IF 
+                                    IF a153 THEN a154
+                                    ELSE 
+                                      IF a154 THEN FALSE
+                                      ELSE TRUE
+                                      ENDIF
+                                    ENDIF THEN 
+                                    IF 
+                                      IF s THEN a105
+                                      ELSE TRUE
+                                      ENDIF THEN a158
+                                    ELSE 
+                                      IF a158 THEN FALSE
+                                      ELSE TRUE
+                                      ENDIF
+                                    ENDIF
+                                  ELSE FALSE
+                                  ENDIF THEN 
+                                  IF 
+                                    IF a153 THEN a162
+                                    ELSE 
+                                      IF a162 THEN FALSE
+                                      ELSE TRUE
+                                      ENDIF
+                                    ENDIF THEN 
+                                    IF 
+                                      IF 
+                                        IF a42 THEN p
+                                        ELSE a41
+                                        ENDIF THEN 
+                                        IF 
+                                          IF 
+                                            IF a88 THEN FALSE
+                                            ELSE TRUE
+                                            ENDIF THEN a167
+                                          ELSE 
+                                            IF a167 THEN FALSE
+                                            ELSE TRUE
+                                            ENDIF
+                                          ENDIF THEN 
+                                          IF 
+                                            IF a92 THEN FALSE
+                                            ELSE TRUE
+                                            ENDIF THEN a171
+                                          ELSE 
+                                            IF a171 THEN FALSE
+                                            ELSE TRUE
+                                            ENDIF
+                                          ENDIF
+                                        ELSE FALSE
+                                        ENDIF
+                                      ELSE FALSE
+                                      ENDIF THEN 
+                                      IF 
+                                        IF 
+                                          IF 
+                                            IF a176 THEN FALSE
+                                            ELSE TRUE
+                                            ENDIF THEN a178
+                                          ELSE 
+                                            IF a178 THEN FALSE
+                                            ELSE TRUE
+                                            ENDIF
+                                          ENDIF THEN 
+                                          IF 
+                                            IF a116 THEN FALSE
+                                            ELSE TRUE
+                                            ENDIF THEN a183
+                                          ELSE 
+                                            IF a183 THEN FALSE
+                                            ELSE TRUE
+                                            ENDIF
+                                          ENDIF
+                                        ELSE FALSE
+                                        ENDIF THEN 
+                                        IF 
+                                          IF 
+                                            IF a111 THEN a187
+                                            ELSE 
+                                              IF a187 THEN FALSE
+                                              ELSE TRUE
+                                              ENDIF
+                                            ENDIF THEN 
+                                            IF 
+                                              IF r THEN s
+                                              ELSE t
+                                              ENDIF THEN a192
+                                            ELSE 
+                                              IF a192 THEN FALSE
+                                              ELSE TRUE
+                                              ENDIF
+                                            ENDIF
+                                          ELSE FALSE
+                                          ENDIF THEN 
+                                          IF 
+                                            IF 
+                                              IF a176 THEN a197
+                                              ELSE 
+                                                IF a197 THEN FALSE
+                                                ELSE TRUE
+                                                ENDIF
+                                              ENDIF THEN 
+                                              IF a116 THEN a200
+                                              ELSE 
+                                                IF a200 THEN FALSE
+                                                ELSE TRUE
+                                                ENDIF
+                                              ENDIF
+                                            ELSE FALSE
+                                            ENDIF THEN 
+                                            IF 
+                                              IF a204 THEN a206
+                                              ELSE 
+                                                IF a206 THEN FALSE
+                                                ELSE TRUE
+                                                ENDIF
+                                              ENDIF THEN 
+                                              IF 
+                                                IF a111 THEN TRUE
+                                                ELSE a205
+                                                ENDIF THEN 
+                                                IF 
+                                                  IF a46 THEN TRUE
+                                                  ELSE 
+                                                    IF 
+                                                      IF a210 THEN p
+                                                      ELSE FALSE
+                                                      ENDIF THEN FALSE
+                                                    ELSE TRUE
+                                                    ENDIF
+                                                  ENDIF THEN 
+                                                  IF 
+                                                    IF a210 THEN a214
+                                                    ELSE 
+                                                      IF a214 THEN FALSE
+                                                      ELSE TRUE
+                                                      ENDIF
+                                                    ENDIF THEN 
+                                                    IF a145 THEN 
+                                                      IF 
+                                                        IF a162 THEN a153
+                                                        ELSE 
+                                                          IF a153 THEN FALSE
+                                                          ELSE TRUE
+                                                          ENDIF
+                                                        ENDIF THEN 
+                                                        IF 
+                                                          IF 
+                                                            IF p THEN a130
+                                                            ELSE TRUE
+                                                            ENDIF THEN a221
+                                                          ELSE 
+                                                            IF a221 THEN FALSE
+                                                            ELSE TRUE
+                                                            ENDIF
+                                                          ENDIF THEN 
+                                                          IF 
+                                                            IF 
+                                                              IF p THEN a112
+                                                              ELSE FALSE
+                                                              ENDIF THEN a225
+                                                            ELSE 
+                                                              IF a225 THEN FALSE
+                                                              ELSE TRUE
+                                                              ENDIF
+                                                            ENDIF THEN 
+                                                            IF 
+                                                              IF 
+                                                                IF p THEN a228
+                                                                ELSE 
+                                                                  IF a228 THEN FALSE
+                                                                  ELSE TRUE
+                                                                  ENDIF
+                                                                ENDIF THEN a231
+                                                              ELSE 
+                                                                IF a231 THEN FALSE
+                                                                ELSE TRUE
+                                                                ENDIF
+                                                              ENDIF THEN 
+                                                              IF 
+                                                                IF 
+                                                                  IF p THEN a88
+                                                                  ELSE 
+                                                                    IF a46 THEN s
+                                                                    ELSE FALSE
+                                                                    ENDIF
+                                                                  ENDIF THEN a237
+                                                                ELSE 
+                                                                  IF a237 THEN FALSE
+                                                                  ELSE TRUE
+                                                                  ENDIF
+                                                                ENDIF THEN 
+                                                                IF 
+                                                                  IF 
+                                                                    IF P1 THEN 
+                                                                      IF P2 THEN TRUE
+                                                                      ELSE P3
+                                                                      ENDIF
+                                                                    ELSE 
+                                                                      IF P3 THEN TRUE
+                                                                      ELSE P4
+                                                                      ENDIF
+                                                                    ENDIF THEN 
+                                                                    IF 
+                                                                      IF P3 THEN 
+                                                                        IF P6 THEN FALSE
+                                                                        ELSE TRUE
+                                                                        ENDIF
+                                                                      ELSE 
+                                                                        IF P4 THEN P1
+                                                                        ELSE TRUE
+                                                                        ENDIF
+                                                                      ENDIF THEN 
+                                                                      IF 
+                                                                        IF 
+                                                                          IF P2 THEN P5
+                                                                          ELSE FALSE
+                                                                          ENDIF THEN FALSE
+                                                                        ELSE TRUE
+                                                                        ENDIF THEN 
+                                                                        IF P2 THEN P5
+                                                                        ELSE TRUE
+                                                                        ENDIF
+                                                                      ELSE FALSE
+                                                                      ENDIF
+                                                                    ELSE FALSE
+                                                                    ENDIF
+                                                                  ELSE FALSE
+                                                                  ENDIF THEN 
+                                                                  IF 
+                                                                    IF P3 THEN P6
+                                                                    ELSE TRUE
+                                                                    ENDIF THEN FALSE
+                                                                  ELSE TRUE
+                                                                  ENDIF
+                                                                ELSE TRUE
+                                                                ENDIF
+                                                              ELSE FALSE
+                                                              ENDIF
+                                                            ELSE FALSE
+                                                            ENDIF
+                                                          ELSE FALSE
+                                                          ENDIF
+                                                        ELSE FALSE
+                                                        ENDIF
+                                                      ELSE FALSE
+                                                      ENDIF
+                                                    ELSE FALSE
+                                                    ENDIF
+                                                  ELSE FALSE
+                                                  ENDIF
+                                                ELSE FALSE
+                                                ENDIF
+                                              ELSE FALSE
+                                              ENDIF
+                                            ELSE FALSE
+                                            ENDIF
+                                          ELSE FALSE
+                                          ENDIF
+                                        ELSE FALSE
+                                        ENDIF
+                                      ELSE FALSE
+                                      ENDIF
+                                    ELSE FALSE
+                                    ENDIF
+                                  ELSE FALSE
+                                  ENDIF
+                                ELSE FALSE
+                                ENDIF
+                              ELSE FALSE
+                              ENDIF
+                            ELSE FALSE
+                            ENDIF
+                          ELSE FALSE
+                          ENDIF
+                        ELSE FALSE
+                        ENDIF
+                      ELSE FALSE
+                      ENDIF
+                    ELSE FALSE
+                    ENDIF
+                  ELSE FALSE
+                  ENDIF
+                ELSE FALSE
+                ENDIF
+              ELSE FALSE
+              ENDIF
+            ELSE FALSE
+            ENDIF
+          ELSE FALSE
+          ENDIF
+        ELSE FALSE
+        ENDIF;
+QUERY a288;
diff --git a/test/regress/regress0/bt-test-00.smt2 b/test/regress/regress0/bt-test-00.smt2
new file mode 100644
index 0000000..5178065
--- /dev/null
+++ b/test/regress/regress0/bt-test-00.smt2
@@ -0,0 +1,21 @@
+; EXPECT: unsat
+(set-logic QF_UF)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+
+(declare-fun f (Bool) Bool)
+(declare-fun g (Bool) Bool)
+(declare-fun h (Bool) Bool)
+
+(declare-fun x () Bool)
+(declare-fun y () Bool)
+(declare-fun z () Bool)
+
+(assert (not (= (f x) (f y))))
+(assert (not (= (g y) (g z))))
+(assert (not (= (h z) (h x))))
+
+(check-sat)
+
+(exit)
diff --git a/test/regress/regress0/bt-test-01.smt2 b/test/regress/regress0/bt-test-01.smt2
new file mode 100644
index 0000000..e17bd2d
--- /dev/null
+++ b/test/regress/regress0/bt-test-01.smt2
@@ -0,0 +1,26 @@
+; EXPECT: unsat
+(set-logic QF_UF)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+
+(declare-fun x0 () Bool)
+(declare-fun y0 () Bool)
+(declare-fun z0 () Bool)
+
+(assert (or x0 y0))
+(assert (or (not y0) z0))
+
+(declare-fun x1 () Bool)
+(declare-fun y1 () Bool)
+
+(assert x1)
+(assert y1)
+
+(declare-fun f (Bool) Bool)
+
+(assert (not (= (f (or x0 z0)) (f (and x1 y1)))))
+
+(check-sat)
+
+(exit)
diff --git a/test/regress/regress0/bug161.smt b/test/regress/regress0/bug161.smt
new file mode 100644
index 0000000..be9b7c4
--- /dev/null
+++ b/test/regress/regress0/bug161.smt
@@ -0,0 +1,12 @@
+(benchmark uart
+:logic QF_LRA
+:extrafuns ((x_1 Real))
+:status unsat
+:formula
+(let (?n1 10)
+(flet ($n2 (= x_1 ?n1))
+(let (?n3 1)
+(flet ($n4 (< x_1 ?n3))
+(flet ($n5 (and $n2 $n4))
+$n5
+))))))
diff --git a/test/regress/regress0/bug164.smt b/test/regress/regress0/bug164.smt
new file mode 100644
index 0000000..c992b7f
--- /dev/null
+++ b/test/regress/regress0/bug164.smt
@@ -0,0 +1,13 @@
+(benchmark Carpark2_t1_1.smt
+:logic QF_LRA
+:extrafuns ((x_34 Real))
+:extrafuns ((x_13 Real))
+:extrafuns ((x_30 Real))
+:extrafuns ((x_59 Real))
+:status unsat
+:formula
+(and (not (<= x_59 0))
+     (= x_30 x_59)
+     (= x_30 0)
+     (or true (= x_13 x_34)))
+)
diff --git a/test/regress/regress0/bug167.smt b/test/regress/regress0/bug167.smt
new file mode 100644
index 0000000..075cf39
--- /dev/null
+++ b/test/regress/regress0/bug167.smt
@@ -0,0 +1,19 @@
+(benchmark tta_startup
+:logic QF_LRA
+:extrafuns ((x_62 Real))
+:extrafuns ((x_63 Real))
+:extrafuns ((x_65 Real))
+:extrafuns ((x_22 Real))
+:extrafuns ((x_21 Real))
+:extrafuns ((x_53 Real))
+:extrafuns ((x_54 Real))
+:status sat
+:formula
+(and
+ (= x_54 (ite (= 2 x_53) x_22 x_21))
+ (or (= 4 x_65) (= 3 x_65) (= 2 x_65) (= 1 x_65))
+ (or (= 4 x_63) (= 1 x_63))
+ (<= x_62 4)
+ (or (= 1 x_62) (= 4 x_62))
+)
+)
diff --git a/test/regress/regress0/bug168.smt b/test/regress/regress0/bug168.smt
new file mode 100644
index 0000000..8fb0ddf
--- /dev/null
+++ b/test/regress/regress0/bug168.smt
@@ -0,0 +1,9 @@
+(benchmark fuzzsmt
+:logic QF_LRA
+:extrafuns ((v0 Real))
+:status sat
+:formula
+(let (?n1 3)
+(flet ($n2 (distinct ?n1 v0))
+$n2
+)))
diff --git a/test/regress/regress0/bug187.smt2 b/test/regress/regress0/bug187.smt2
new file mode 100644
index 0000000..9315674
--- /dev/null
+++ b/test/regress/regress0/bug187.smt2
@@ -0,0 +1,8 @@
+(set-logic QF_LRA)
+(set-info :status sat)
+(declare-fun v0 () Real)
+(assert
+   (= (>= v0 5) (< v0 0))
+ )
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/bug216.smt2 b/test/regress/regress0/bug216.smt2
new file mode 100644
index 0000000..78e0f71
--- /dev/null
+++ b/test/regress/regress0/bug216.smt2
@@ -0,0 +1,8 @@
+(set-logic QF_UF)
+(declare-fun x () Bool)
+(declare-fun y () Bool)
+(assert (=> x y))
+(check-sat) ; returns sat
+(assert (=> y x))
+(assert (and x (not y)))
+(check-sat) ; returns sat --> ERROR
diff --git a/test/regress/regress0/bug216.smt2.expect b/test/regress/regress0/bug216.smt2.expect
new file mode 100644
index 0000000..fe11817
--- /dev/null
+++ b/test/regress/regress0/bug216.smt2.expect
@@ -0,0 +1,3 @@
+% COMMAND-LINE: --incremental
+% EXPECT: sat
+% EXPECT: unsat
diff --git a/test/regress/regress0/bug217.smt2 b/test/regress/regress0/bug217.smt2
new file mode 100644
index 0000000..4d2e828
--- /dev/null
+++ b/test/regress/regress0/bug217.smt2
@@ -0,0 +1,13 @@
+; EXPECT: unsat
+(set-logic QF_UF)
+(set-info :status unsat)
+(set-option :produce-models true)
+(declare-fun f (Bool) Bool)
+(declare-fun x () Bool)
+(declare-fun y () Bool)
+(declare-fun z () Bool)
+(assert (or (f x) (f y) (f z)))
+(assert (not (f false)))
+(assert (not (f true)))
+(check-sat)
+;(get-value ((f true) (f false) (f x) (f y) (f z) x y z))
diff --git a/test/regress/regress0/bug220.smt2 b/test/regress/regress0/bug220.smt2
new file mode 100644
index 0000000..1520bcd
--- /dev/null
+++ b/test/regress/regress0/bug220.smt2
@@ -0,0 +1,2 @@
+; EXIT: 0
+(exit)
diff --git a/test/regress/regress0/bug239.smt b/test/regress/regress0/bug239.smt
new file mode 100644
index 0000000..b80f56c
--- /dev/null
+++ b/test/regress/regress0/bug239.smt
@@ -0,0 +1,185 @@
+(benchmark fuzzsmt
+:logic QF_LRA
+:status sat
+:extrafuns ((v0 Real))
+:extrafuns ((v1 Real))
+:extrafuns ((v2 Real))
+:formula
+(let (?e3 5)
+(let (?e4 0)
+(let (?e5 2)
+(let (?e6 (+ v0 v1))
+(let (?e7 (* v1 ?e3))
+(let (?e8 (~ v0))
+(let (?e9 (- v2 v1))
+(let (?e10 (- v0 ?e9))
+(let (?e11 (* v0 (~ ?e3)))
+(let (?e12 (/ ?e4 (~ ?e3)))
+(let (?e13 (+ ?e8 ?e7))
+(let (?e14 (/ ?e4 (~ ?e5)))
+(flet ($e15 (<= v2 ?e7))
+(flet ($e16 (<= ?e11 ?e11))
+(flet ($e17 (= ?e11 ?e13))
+(flet ($e18 (<= ?e7 ?e14))
+(flet ($e19 (> ?e14 v1))
+(flet ($e20 (< v0 ?e10))
+(flet ($e21 (= ?e8 ?e11))
+(flet ($e22 (>= ?e8 ?e13))
+(flet ($e23 (< ?e10 v2))
+(flet ($e24 (>= ?e10 ?e8))
+(flet ($e25 (= ?e6 ?e7))
+(flet ($e26 (distinct ?e12 ?e11))
+(flet ($e27 (distinct ?e10 ?e9))
+(let (?e28 (ite $e27 ?e13 ?e6))
+(let (?e29 (ite $e21 v2 ?e28))
+(let (?e30 (ite $e26 ?e12 ?e12))
+(let (?e31 (ite $e18 ?e28 v0))
+(let (?e32 (ite $e20 ?e9 ?e10))
+(let (?e33 (ite $e22 ?e11 ?e28))
+(let (?e34 (ite $e17 ?e8 ?e13))
+(let (?e35 (ite $e26 ?e14 v1))
+(let (?e36 (ite $e21 ?e14 ?e30))
+(let (?e37 (ite $e19 ?e7 ?e11))
+(let (?e38 (ite $e25 v1 ?e8))
+(let (?e39 (ite $e22 ?e28 ?e28))
+(let (?e40 (ite $e25 v0 ?e14))
+(let (?e41 (ite $e24 ?e37 v2))
+(let (?e42 (ite $e16 ?e6 v2))
+(let (?e43 (ite $e19 ?e11 ?e7))
+(let (?e44 (ite $e23 ?e36 v2))
+(let (?e45 (ite $e20 v1 ?e7))
+(let (?e46 (ite $e15 ?e45 ?e13))
+(flet ($e47 (= ?e32 ?e9))
+(flet ($e48 (< ?e41 v0))
+(flet ($e49 (distinct ?e14 ?e43))
+(flet ($e50 (distinct ?e8 ?e10))
+(flet ($e51 (> ?e8 ?e37))
+(flet ($e52 (< v1 ?e11))
+(flet ($e53 (< ?e30 ?e8))
+(flet ($e54 (< v2 ?e12))
+(flet ($e55 (>= ?e8 ?e31))
+(flet ($e56 (= ?e12 ?e44))
+(flet ($e57 (= ?e45 v0))
+(flet ($e58 (= ?e36 ?e39))
+(flet ($e59 (= ?e31 v0))
+(flet ($e60 (< ?e9 ?e43))
+(flet ($e61 (distinct ?e14 ?e44))
+(flet ($e62 (= ?e45 ?e29))
+(flet ($e63 (<= ?e12 ?e9))
+(flet ($e64 (>= ?e41 ?e28))
+(flet ($e65 (<= ?e11 v0))
+(flet ($e66 (< ?e29 ?e14))
+(flet ($e67 (< ?e44 v2))
+(flet ($e68 (< ?e40 ?e45))
+(flet ($e69 (> ?e34 ?e7))
+(flet ($e70 (= ?e38 ?e30))
+(flet ($e71 (>= ?e36 ?e31))
+(flet ($e72 (= ?e32 ?e38))
+(flet ($e73 (<= ?e30 ?e42))
+(flet ($e74 (= ?e11 ?e9))
+(flet ($e75 (> ?e40 ?e7))
+(flet ($e76 (distinct ?e39 ?e41))
+(flet ($e77 (< ?e11 ?e28))
+(flet ($e78 (distinct ?e31 ?e45))
+(flet ($e79 (= ?e45 ?e11))
+(flet ($e80 (>= ?e11 ?e42))
+(flet ($e81 (< ?e12 ?e7))
+(flet ($e82 (>= ?e11 ?e41))
+(flet ($e83 (<= ?e8 v0))
+(flet ($e84 (< ?e8 ?e8))
+(flet ($e85 (> ?e30 v2))
+(flet ($e86 (= ?e9 ?e30))
+(flet ($e87 (= ?e33 ?e7))
+(flet ($e88 (<= ?e32 ?e44))
+(flet ($e89 (<= ?e36 ?e33))
+(flet ($e90 (distinct ?e45 ?e45))
+(flet ($e91 (distinct ?e14 ?e44))
+(flet ($e92 (<= v1 ?e12))
+(flet ($e93 (>= v0 ?e12))
+(flet ($e94 (>= ?e46 ?e29))
+(flet ($e95 (> ?e14 ?e6))
+(flet ($e96 (>= v2 ?e14))
+(flet ($e97 (>= ?e39 ?e44))
+(flet ($e98 (>= ?e38 ?e28))
+(flet ($e99 (> v2 ?e9))
+(flet ($e100 (<= ?e42 ?e33))
+(flet ($e101 (= ?e30 ?e29))
+(flet ($e102 (= ?e9 v0))
+(flet ($e103 (distinct ?e37 ?e40))
+(flet ($e104 (= ?e43 ?e14))
+(flet ($e105 (<= ?e35 ?e13))
+(flet ($e106 (and $e102 $e70))
+(flet ($e107 (implies $e84 $e84))
+(flet ($e108 (implies $e69 $e60))
+(flet ($e109 (iff $e105 $e99))
+(flet ($e110 (iff $e100 $e80))
+(flet ($e111 (or $e52 $e86))
+(flet ($e112 (xor $e26 $e18))
+(flet ($e113 (or $e20 $e107))
+(flet ($e114 (not $e94))
+(flet ($e115 (or $e79 $e104))
+(flet ($e116 (not $e76))
+(flet ($e117 (if_then_else $e112 $e22 $e90))
+(flet ($e118 (xor $e77 $e57))
+(flet ($e119 (xor $e88 $e55))
+(flet ($e120 (and $e92 $e68))
+(flet ($e121 (or $e82 $e25))
+(flet ($e122 (implies $e19 $e119))
+(flet ($e123 (implies $e66 $e117))
+(flet ($e124 (if_then_else $e15 $e73 $e65))
+(flet ($e125 (iff $e64 $e103))
+(flet ($e126 (iff $e121 $e122))
+(flet ($e127 (if_then_else $e50 $e47 $e101))
+(flet ($e128 (iff $e81 $e127))
+(flet ($e129 (implies $e124 $e21))
+(flet ($e130 (iff $e87 $e129))
+(flet ($e131 (iff $e116 $e51))
+(flet ($e132 (implies $e72 $e97))
+(flet ($e133 (and $e56 $e98))
+(flet ($e134 (implies $e91 $e53))
+(flet ($e135 (xor $e133 $e114))
+(flet ($e136 (xor $e17 $e110))
+(flet ($e137 (iff $e96 $e128))
+(flet ($e138 (or $e125 $e59))
+(flet ($e139 (or $e23 $e48))
+(flet ($e140 (iff $e62 $e95))
+(flet ($e141 (not $e61))
+(flet ($e142 (and $e132 $e63))
+(flet ($e143 (xor $e109 $e131))
+(flet ($e144 (iff $e54 $e126))
+(flet ($e145 (xor $e74 $e67))
+(flet ($e146 (if_then_else $e89 $e93 $e140))
+(flet ($e147 (iff $e71 $e138))
+(flet ($e148 (and $e143 $e146))
+(flet ($e149 (xor $e147 $e142))
+(flet ($e150 (implies $e85 $e58))
+(flet ($e151 (or $e24 $e78))
+(flet ($e152 (if_then_else $e137 $e113 $e123))
+(flet ($e153 (and $e145 $e16))
+(flet ($e154 (not $e150))
+(flet ($e155 (implies $e151 $e154))
+(flet ($e156 (if_then_else $e118 $e136 $e75))
+(flet ($e157 (and $e108 $e108))
+(flet ($e158 (or $e83 $e141))
+(flet ($e159 (iff $e155 $e149))
+(flet ($e160 (iff $e158 $e156))
+(flet ($e161 (or $e115 $e130))
+(flet ($e162 (or $e157 $e160))
+(flet ($e163 (if_then_else $e152 $e153 $e139))
+(flet ($e164 (not $e144))
+(flet ($e165 (not $e27))
+(flet ($e166 (or $e148 $e162))
+(flet ($e167 (iff $e134 $e166))
+(flet ($e168 (or $e111 $e159))
+(flet ($e169 (or $e106 $e164))
+(flet ($e170 (xor $e161 $e120))
+(flet ($e171 (and $e168 $e165))
+(flet ($e172 (or $e170 $e135))
+(flet ($e173 (or $e169 $e163))
+(flet ($e174 (implies $e49 $e172))
+(flet ($e175 (xor $e174 $e173))
+(flet ($e176 (and $e171 $e175))
+(flet ($e177 (implies $e167 $e176))
+$e177
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bug274.cvc b/test/regress/regress0/bug274.cvc
new file mode 100644
index 0000000..c30f955
--- /dev/null
+++ b/test/regress/regress0/bug274.cvc
@@ -0,0 +1,64 @@
+% EXPECT: unsat
+DATATYPE DT1 = 
+  DT1_a |
+  DT1_b |
+  DT1_c |
+  DT1_d |
+  DT1_e |
+  DT1_f |
+  DT1_g |
+  DT1_h |
+  DT1_i |
+  DT1_j |
+  DT1_k |
+  DT1_l |
+  DT1_m |
+  DT1_n |
+  DT1_o |
+  DT1_p |
+  DT1_q |
+  DT1_r |
+  DT1_s |
+  DT1_t |
+  DT1_u |
+  DT1_v |
+  DT1_w |
+  DT1_x |
+  DT1_y |
+  DT1_z
+END;
+DATATYPE DT2 = 
+  DT2_a |
+  DT2_b |
+  DT2_c |
+  DT2_d
+END;
+DATATYPE DT3 = 
+  DT3_a |
+  DT3_b
+END;
+var1 : DT3;
+var2 : DT3;
+var3 : DT1;
+var4 : DT3;
+var5 : DT3;
+var6 : DT3;
+var7 : DT3;
+var8 : DT3;
+var9 : DT3;
+var10 : DT3;
+var11 : DT2;
+var12 : DT3;
+var13 : DT3;
+var14 : DT3;
+var16 : DT3;
+var17 : DT3;
+var18 : DT3;
+var20 : DT3;
+var21 : DT3;
+CHECKSAT
+(
+        (((NOT(var13 = DT3_a)) AND (NOT(var10 = DT3_b))) AND (NOT((((((var7 = DT3_b) AND (var4 = DT3_b)) AND (var1 = DT3_a)) OR ((((var5 = DT3_a) AND (var17 = DT3_b)) OR ((var21 = DT3_b) AND ((var3 = DT1_f) OR (var3 = DT1_g)))) <=> (DT3_b = DT3_b))) OR (((var14 = DT3_a) AND (var2 = DT3_a)) AND (((((var8 = DT3_a) AND (var18 = DT3_b)) OR ((var6 = DT3_a) AND (var11 /= DT2_a))) OR (var20 = DT3_b)) OR (var9 = DT3_b)))) OR ((NOT(((((var7 = DT3_b) AND (var4 = DT3_b)) AND (var1 = DT3_a)) OR (((( [...]
+    AND
+        (NOT((var12 = DT3_a) OR ((var12 = DT3_b) AND ((var16 = DT3_b) OR (TRUE)))))
+);
diff --git a/test/regress/regress0/bug288.smt b/test/regress/regress0/bug288.smt
new file mode 100644
index 0000000..f63b567
--- /dev/null
+++ b/test/regress/regress0/bug288.smt
@@ -0,0 +1,8 @@
+(benchmark delta
+:logic QF_LIA
+:extrafuns ((x Int))
+:extrafuns ((y Int))
+:status sat
+:formula
+(not (<= x y))
+)
diff --git a/test/regress/regress0/bug288b.smt b/test/regress/regress0/bug288b.smt
new file mode 100644
index 0000000..659c90a
--- /dev/null
+++ b/test/regress/regress0/bug288b.smt
@@ -0,0 +1,8 @@
+(benchmark delta
+:logic QF_LIA
+:extrafuns ((x Int))
+:extrafuns ((y Int))
+:status sat
+:formula
+ (>= (* 2 (- x y)) 1)
+)
diff --git a/test/regress/regress0/bug288c.smt b/test/regress/regress0/bug288c.smt
new file mode 100644
index 0000000..acf40ce
--- /dev/null
+++ b/test/regress/regress0/bug288c.smt
@@ -0,0 +1,9 @@
+(benchmark delta
+:logic QF_LIA
+:extrafuns ((x Int))
+:extrafuns ((y Int))
+:extrafuns ((z Int))
+:status sat
+:formula
+  (and (= z 0) (>= (+ (- (* 2 x) (* 2 y)) z) 1))
+)
diff --git a/test/regress/regress0/bug296.smt2 b/test/regress/regress0/bug296.smt2
new file mode 100644
index 0000000..92e5409
--- /dev/null
+++ b/test/regress/regress0/bug296.smt2
@@ -0,0 +1,1696 @@
+(set-logic QF_ALL)
+(set-info :status unsat)
+(declare-datatypes
+  () (
+    (MsgResult (MsgResult_MsgOK (destMsgResult_MsgOK Real))
+      (MsgResult_MsgAudit (destMsgResult_MsgAudit Real)))
+    (MsgTree (MsgTree_Leaf)
+      (MsgTree_Node (destMsgTree_Node MsgTree_Node_recd)))
+    (TreeResult (TreeResult_TreeOK (destTreeResult_TreeOK MsgTree))
+      (TreeResult_TreeAudit (destTreeResult_TreeAudit Real)))
+    (MsgTree_Node_recd
+      (MsgTree_Node_recd (MsgTree_Node_recd_Value Real)
+        (MsgTree_Node_recd_Left MsgTree)
+        (MsgTree_Node_recd_Right MsgTree)))))
+(declare-fun Guardfn (MsgTree) TreeResult)
+(declare-fun Input () MsgTree)
+(declare-fun M () Real)
+(declare-fun f (Real) MsgResult)
+(declare-fun n () MsgTree_Node_recd)
+(declare-fun ARB () Bool)
+(declare-fun Guard_Checkfn (MsgTree) Bool)
+(define-fun DWS_Idempotentfn ((M1 Real)) Bool
+  (ite (is-MsgResult_MsgOK (f M1))
+    (and (is-MsgResult_MsgOK (f (destMsgResult_MsgOK (f M1))))
+      (= (destMsgResult_MsgOK (f M1))
+        (destMsgResult_MsgOK (f (destMsgResult_MsgOK (f M1))))))
+    (or (is-MsgResult_MsgAudit (f M1)) ARB)))
+(assert
+  (and
+    (=>
+      (and (not (is-MsgTree_Leaf Input))
+        (and (is-MsgTree_Node Input)
+          (and
+            (not
+              (is-MsgResult_MsgAudit
+                (f
+                  (MsgTree_Node_recd_Value (destMsgTree_Node Input)))))
+            (and
+              (is-MsgResult_MsgOK
+                (f
+                  (MsgTree_Node_recd_Value (destMsgTree_Node Input))))
+              (and
+                (not
+                  (is-TreeResult_TreeAudit
+                    (Guardfn
+                      (MsgTree_Node_recd_Left
+                        (destMsgTree_Node Input)))))
+                (and
+                  (is-TreeResult_TreeOK
+                    (Guardfn
+                      (MsgTree_Node_recd_Left
+                        (destMsgTree_Node Input))))
+                  (is-TreeResult_TreeOK
+                    (Guardfn
+                      (MsgTree_Node_recd_Right
+                        (destMsgTree_Node Input))))))))))
+      (Guard_Checkfn
+        (destTreeResult_TreeOK
+          (Guardfn
+            (MsgTree_Node_recd_Right (destMsgTree_Node Input))))))
+    (and
+      (=>
+        (and (not (is-MsgTree_Leaf Input))
+          (and (is-MsgTree_Node Input)
+            (and
+              (not
+                (is-MsgResult_MsgAudit
+                  (f
+                    (MsgTree_Node_recd_Value
+                      (destMsgTree_Node Input)))))
+              (and
+                (is-MsgResult_MsgOK
+                  (f
+                    (MsgTree_Node_recd_Value
+                      (destMsgTree_Node Input))))
+                (is-TreeResult_TreeOK
+                  (Guardfn
+                    (MsgTree_Node_recd_Left (destMsgTree_Node Input))))))))
+        (Guard_Checkfn
+          (destTreeResult_TreeOK
+            (Guardfn
+              (MsgTree_Node_recd_Left (destMsgTree_Node Input))))))
+      (and
+        (DWS_Idempotentfn
+          (MsgTree_Node_recd_Value (destMsgTree_Node Input)))
+        (and
+          (is-TreeResult_TreeOK
+            (ite (is-MsgTree_Leaf Input)
+              (TreeResult_TreeOK MsgTree_Leaf)
+              (ite
+                (is-MsgResult_MsgAudit
+                  (f
+                    (MsgTree_Node_recd_Value
+                      (destMsgTree_Node Input))))
+                (TreeResult_TreeAudit
+                  (destMsgResult_MsgAudit
+                    (f
+                      (MsgTree_Node_recd_Value
+                        (destMsgTree_Node Input)))))
+                (ite
+                  (is-TreeResult_TreeAudit
+                    (Guardfn
+                      (MsgTree_Node_recd_Left
+                        (destMsgTree_Node Input))))
+                  (Guardfn
+                    (MsgTree_Node_recd_Left (destMsgTree_Node Input)))
+                  (ite
+                    (is-TreeResult_TreeAudit
+                      (Guardfn
+                        (MsgTree_Node_recd_Right
+                          (destMsgTree_Node Input))))
+                    (Guardfn
+                      (MsgTree_Node_recd_Right
+                        (destMsgTree_Node Input)))
+                    (TreeResult_TreeOK
+                      (MsgTree_Node
+                        (MsgTree_Node_recd
+                          (destMsgResult_MsgOK
+                            (f
+                              (MsgTree_Node_recd_Value
+                                (destMsgTree_Node Input))))
+                          (destTreeResult_TreeOK
+                            (Guardfn
+                              (MsgTree_Node_recd_Left
+                                (destMsgTree_Node Input))))
+                          (destTreeResult_TreeOK
+                            (Guardfn
+                              (MsgTree_Node_recd_Right
+                                (destMsgTree_Node Input))))))))))))
+          (not
+            (Guard_Checkfn
+              (destTreeResult_TreeOK
+                (ite (is-MsgTree_Leaf Input)
+                  (TreeResult_TreeOK MsgTree_Leaf)
+                  (ite
+                    (is-MsgResult_MsgAudit
+                      (f
+                        (MsgTree_Node_recd_Value
+                          (destMsgTree_Node Input))))
+                    (TreeResult_TreeAudit
+                      (destMsgResult_MsgAudit
+                        (f
+                          (MsgTree_Node_recd_Value
+                            (destMsgTree_Node Input)))))
+                    (ite
+                      (is-TreeResult_TreeAudit
+                        (Guardfn
+                          (MsgTree_Node_recd_Left
+                            (destMsgTree_Node Input))))
+                      (Guardfn
+                        (MsgTree_Node_recd_Left
+                          (destMsgTree_Node Input)))
+                      (ite
+                        (is-TreeResult_TreeAudit
+                          (Guardfn
+                            (MsgTree_Node_recd_Right
+                              (destMsgTree_Node Input))))
+                        (Guardfn
+                          (MsgTree_Node_recd_Right
+                            (destMsgTree_Node Input)))
+                        (TreeResult_TreeOK
+                          (MsgTree_Node
+                            (MsgTree_Node_recd
+                              (destMsgResult_MsgOK
+                                (f
+                                  (MsgTree_Node_recd_Value
+                                    (destMsgTree_Node Input))))
+                              (destTreeResult_TreeOK
+                                (Guardfn
+                                  (MsgTree_Node_recd_Left
+                                    (destMsgTree_Node Input))))
+                              (destTreeResult_TreeOK
+                                (Guardfn
+                                  (MsgTree_Node_recd_Right
+                                    (destMsgTree_Node Input)))))))))))))))))))
+(assert
+  (=
+    (Guard_Checkfn
+      (destTreeResult_TreeOK
+        (Guardfn (MsgTree_Node_recd_Right (destMsgTree_Node Input)))))
+    (ite
+      (is-MsgTree_Leaf
+        (destTreeResult_TreeOK
+          (Guardfn
+            (MsgTree_Node_recd_Right (destMsgTree_Node Input)))))
+      true
+      (and
+        (is-MsgResult_MsgOK
+          (f
+            (MsgTree_Node_recd_Value
+              (destMsgTree_Node
+                (destTreeResult_TreeOK
+                  (Guardfn
+                    (MsgTree_Node_recd_Right
+                      (destMsgTree_Node Input))))))))
+        (and
+          (=
+            (MsgTree_Node_recd_Value
+              (destMsgTree_Node
+                (destTreeResult_TreeOK
+                  (Guardfn
+                    (MsgTree_Node_recd_Right
+                      (destMsgTree_Node Input))))))
+            (destMsgResult_MsgOK
+              (f
+                (MsgTree_Node_recd_Value
+                  (destMsgTree_Node
+                    (destTreeResult_TreeOK
+                      (Guardfn
+                        (MsgTree_Node_recd_Right
+                          (destMsgTree_Node Input)))))))))
+          (and
+            (Guard_Checkfn
+              (MsgTree_Node_recd_Left
+                (destMsgTree_Node
+                  (destTreeResult_TreeOK
+                    (Guardfn
+                      (MsgTree_Node_recd_Right
+                        (destMsgTree_Node Input)))))))
+            (Guard_Checkfn
+              (MsgTree_Node_recd_Right
+                (destMsgTree_Node
+                  (destTreeResult_TreeOK
+                    (Guardfn
+                      (MsgTree_Node_recd_Right
+                        (destMsgTree_Node Input)))))))))))))
+(assert
+  (=
+    (Guard_Checkfn
+      (destTreeResult_TreeOK
+        (Guardfn (MsgTree_Node_recd_Left (destMsgTree_Node Input)))))
+    (ite
+      (is-MsgTree_Leaf
+        (destTreeResult_TreeOK
+          (Guardfn
+            (MsgTree_Node_recd_Left (destMsgTree_Node Input)))))
+      true
+      (and
+        (is-MsgResult_MsgOK
+          (f
+            (MsgTree_Node_recd_Value
+              (destMsgTree_Node
+                (destTreeResult_TreeOK
+                  (Guardfn
+                    (MsgTree_Node_recd_Left (destMsgTree_Node Input))))))))
+        (and
+          (=
+            (MsgTree_Node_recd_Value
+              (destMsgTree_Node
+                (destTreeResult_TreeOK
+                  (Guardfn
+                    (MsgTree_Node_recd_Left (destMsgTree_Node Input))))))
+            (destMsgResult_MsgOK
+              (f
+                (MsgTree_Node_recd_Value
+                  (destMsgTree_Node
+                    (destTreeResult_TreeOK
+                      (Guardfn
+                        (MsgTree_Node_recd_Left
+                          (destMsgTree_Node Input)))))))))
+          (and
+            (Guard_Checkfn
+              (MsgTree_Node_recd_Left
+                (destMsgTree_Node
+                  (destTreeResult_TreeOK
+                    (Guardfn
+                      (MsgTree_Node_recd_Left
+                        (destMsgTree_Node Input)))))))
+            (Guard_Checkfn
+              (MsgTree_Node_recd_Right
+                (destMsgTree_Node
+                  (destTreeResult_TreeOK
+                    (Guardfn
+                      (MsgTree_Node_recd_Left
+                        (destMsgTree_Node Input)))))))))))))
+(assert
+  (=
+    (Guard_Checkfn
+      (destTreeResult_TreeOK
+        (ite (is-MsgTree_Leaf Input)
+          (TreeResult_TreeOK MsgTree_Leaf)
+          (ite
+            (is-MsgResult_MsgAudit
+              (f (MsgTree_Node_recd_Value (destMsgTree_Node Input))))
+            (TreeResult_TreeAudit
+              (destMsgResult_MsgAudit
+                (f
+                  (MsgTree_Node_recd_Value (destMsgTree_Node Input)))))
+            (ite
+              (is-TreeResult_TreeAudit
+                (Guardfn
+                  (MsgTree_Node_recd_Left (destMsgTree_Node Input))))
+              (Guardfn
+                (MsgTree_Node_recd_Left (destMsgTree_Node Input)))
+              (ite
+                (is-TreeResult_TreeAudit
+                  (Guardfn
+                    (MsgTree_Node_recd_Right
+                      (destMsgTree_Node Input))))
+                (Guardfn
+                  (MsgTree_Node_recd_Right (destMsgTree_Node Input)))
+                (TreeResult_TreeOK
+                  (MsgTree_Node
+                    (MsgTree_Node_recd
+                      (destMsgResult_MsgOK
+                        (f
+                          (MsgTree_Node_recd_Value
+                            (destMsgTree_Node Input))))
+                      (destTreeResult_TreeOK
+                        (Guardfn
+                          (MsgTree_Node_recd_Left
+                            (destMsgTree_Node Input))))
+                      (destTreeResult_TreeOK
+                        (Guardfn
+                          (MsgTree_Node_recd_Right
+                            (destMsgTree_Node Input)))))))))))))
+    (ite
+      (is-MsgTree_Leaf
+        (destTreeResult_TreeOK
+          (ite (is-MsgTree_Leaf Input)
+            (TreeResult_TreeOK MsgTree_Leaf)
+            (ite
+              (is-MsgResult_MsgAudit
+                (f
+                  (MsgTree_Node_recd_Value (destMsgTree_Node Input))))
+              (TreeResult_TreeAudit
+                (destMsgResult_MsgAudit
+                  (f
+                    (MsgTree_Node_recd_Value
+                      (destMsgTree_Node Input)))))
+              (ite
+                (is-TreeResult_TreeAudit
+                  (Guardfn
+                    (MsgTree_Node_recd_Left (destMsgTree_Node Input))))
+                (Guardfn
+                  (MsgTree_Node_recd_Left (destMsgTree_Node Input)))
+                (ite
+                  (is-TreeResult_TreeAudit
+                    (Guardfn
+                      (MsgTree_Node_recd_Right
+                        (destMsgTree_Node Input))))
+                  (Guardfn
+                    (MsgTree_Node_recd_Right
+                      (destMsgTree_Node Input)))
+                  (TreeResult_TreeOK
+                    (MsgTree_Node
+                      (MsgTree_Node_recd
+                        (destMsgResult_MsgOK
+                          (f
+                            (MsgTree_Node_recd_Value
+                              (destMsgTree_Node Input))))
+                        (destTreeResult_TreeOK
+                          (Guardfn
+                            (MsgTree_Node_recd_Left
+                              (destMsgTree_Node Input))))
+                        (destTreeResult_TreeOK
+                          (Guardfn
+                            (MsgTree_Node_recd_Right
+                              (destMsgTree_Node Input)))))))))))))
+      true
+      (and
+        (is-MsgResult_MsgOK
+          (f
+            (MsgTree_Node_recd_Value
+              (destMsgTree_Node
+                (destTreeResult_TreeOK
+                  (ite (is-MsgTree_Leaf Input)
+                    (TreeResult_TreeOK MsgTree_Leaf)
+                    (ite
+                      (is-MsgResult_MsgAudit
+                        (f
+                          (MsgTree_Node_recd_Value
+                            (destMsgTree_Node Input))))
+                      (TreeResult_TreeAudit
+                        (destMsgResult_MsgAudit
+                          (f
+                            (MsgTree_Node_recd_Value
+                              (destMsgTree_Node Input)))))
+                      (ite
+                        (is-TreeResult_TreeAudit
+                          (Guardfn
+                            (MsgTree_Node_recd_Left
+                              (destMsgTree_Node Input))))
+                        (Guardfn
+                          (MsgTree_Node_recd_Left
+                            (destMsgTree_Node Input)))
+                        (ite
+                          (is-TreeResult_TreeAudit
+                            (Guardfn
+                              (MsgTree_Node_recd_Right
+                                (destMsgTree_Node Input))))
+                          (Guardfn
+                            (MsgTree_Node_recd_Right
+                              (destMsgTree_Node Input)))
+                          (TreeResult_TreeOK
+                            (MsgTree_Node
+                              (MsgTree_Node_recd
+                                (destMsgResult_MsgOK
+                                  (f
+                                    (MsgTree_Node_recd_Value
+                                      (destMsgTree_Node Input))))
+                                (destTreeResult_TreeOK
+                                  (Guardfn
+                                    (MsgTree_Node_recd_Left
+                                      (destMsgTree_Node Input))))
+                                (destTreeResult_TreeOK
+                                  (Guardfn
+                                    (MsgTree_Node_recd_Right
+                                      (destMsgTree_Node Input))))))))))))))))
+        (and
+          (=
+            (MsgTree_Node_recd_Value
+              (destMsgTree_Node
+                (destTreeResult_TreeOK
+                  (ite (is-MsgTree_Leaf Input)
+                    (TreeResult_TreeOK MsgTree_Leaf)
+                    (ite
+                      (is-MsgResult_MsgAudit
+                        (f
+                          (MsgTree_Node_recd_Value
+                            (destMsgTree_Node Input))))
+                      (TreeResult_TreeAudit
+                        (destMsgResult_MsgAudit
+                          (f
+                            (MsgTree_Node_recd_Value
+                              (destMsgTree_Node Input)))))
+                      (ite
+                        (is-TreeResult_TreeAudit
+                          (Guardfn
+                            (MsgTree_Node_recd_Left
+                              (destMsgTree_Node Input))))
+                        (Guardfn
+                          (MsgTree_Node_recd_Left
+                            (destMsgTree_Node Input)))
+                        (ite
+                          (is-TreeResult_TreeAudit
+                            (Guardfn
+                              (MsgTree_Node_recd_Right
+                                (destMsgTree_Node Input))))
+                          (Guardfn
+                            (MsgTree_Node_recd_Right
+                              (destMsgTree_Node Input)))
+                          (TreeResult_TreeOK
+                            (MsgTree_Node
+                              (MsgTree_Node_recd
+                                (destMsgResult_MsgOK
+                                  (f
+                                    (MsgTree_Node_recd_Value
+                                      (destMsgTree_Node Input))))
+                                (destTreeResult_TreeOK
+                                  (Guardfn
+                                    (MsgTree_Node_recd_Left
+                                      (destMsgTree_Node Input))))
+                                (destTreeResult_TreeOK
+                                  (Guardfn
+                                    (MsgTree_Node_recd_Right
+                                      (destMsgTree_Node Input))))))))))))))
+            (destMsgResult_MsgOK
+              (f
+                (MsgTree_Node_recd_Value
+                  (destMsgTree_Node
+                    (destTreeResult_TreeOK
+                      (ite (is-MsgTree_Leaf Input)
+                        (TreeResult_TreeOK MsgTree_Leaf)
+                        (ite
+                          (is-MsgResult_MsgAudit
+                            (f
+                              (MsgTree_Node_recd_Value
+                                (destMsgTree_Node Input))))
+                          (TreeResult_TreeAudit
+                            (destMsgResult_MsgAudit
+                              (f
+                                (MsgTree_Node_recd_Value
+                                  (destMsgTree_Node Input)))))
+                          (ite
+                            (is-TreeResult_TreeAudit
+                              (Guardfn
+                                (MsgTree_Node_recd_Left
+                                  (destMsgTree_Node Input))))
+                            (Guardfn
+                              (MsgTree_Node_recd_Left
+                                (destMsgTree_Node Input)))
+                            (ite
+                              (is-TreeResult_TreeAudit
+                                (Guardfn
+                                  (MsgTree_Node_recd_Right
+                                    (destMsgTree_Node Input))))
+                              (Guardfn
+                                (MsgTree_Node_recd_Right
+                                  (destMsgTree_Node Input)))
+                              (TreeResult_TreeOK
+                                (MsgTree_Node
+                                  (MsgTree_Node_recd
+                                    (destMsgResult_MsgOK
+                                      (f
+                                        (MsgTree_Node_recd_Value
+                                          (destMsgTree_Node Input))))
+                                    (destTreeResult_TreeOK
+                                      (Guardfn
+                                        (MsgTree_Node_recd_Left
+                                          (destMsgTree_Node Input))))
+                                    (destTreeResult_TreeOK
+                                      (Guardfn
+                                        (MsgTree_Node_recd_Right
+                                          (destMsgTree_Node Input)))))))))))))))))
+          (and
+            (Guard_Checkfn
+              (MsgTree_Node_recd_Left
+                (destMsgTree_Node
+                  (destTreeResult_TreeOK
+                    (ite (is-MsgTree_Leaf Input)
+                      (TreeResult_TreeOK MsgTree_Leaf)
+                      (ite
+                        (is-MsgResult_MsgAudit
+                          (f
+                            (MsgTree_Node_recd_Value
+                              (destMsgTree_Node Input))))
+                        (TreeResult_TreeAudit
+                          (destMsgResult_MsgAudit
+                            (f
+                              (MsgTree_Node_recd_Value
+                                (destMsgTree_Node Input)))))
+                        (ite
+                          (is-TreeResult_TreeAudit
+                            (Guardfn
+                              (MsgTree_Node_recd_Left
+                                (destMsgTree_Node Input))))
+                          (Guardfn
+                            (MsgTree_Node_recd_Left
+                              (destMsgTree_Node Input)))
+                          (ite
+                            (is-TreeResult_TreeAudit
+                              (Guardfn
+                                (MsgTree_Node_recd_Right
+                                  (destMsgTree_Node Input))))
+                            (Guardfn
+                              (MsgTree_Node_recd_Right
+                                (destMsgTree_Node Input)))
+                            (TreeResult_TreeOK
+                              (MsgTree_Node
+                                (MsgTree_Node_recd
+                                  (destMsgResult_MsgOK
+                                    (f
+                                      (MsgTree_Node_recd_Value
+                                        (destMsgTree_Node Input))))
+                                  (destTreeResult_TreeOK
+                                    (Guardfn
+                                      (MsgTree_Node_recd_Left
+                                        (destMsgTree_Node Input))))
+                                  (destTreeResult_TreeOK
+                                    (Guardfn
+                                      (MsgTree_Node_recd_Right
+                                        (destMsgTree_Node Input)))))))))))))))
+            (Guard_Checkfn
+              (MsgTree_Node_recd_Right
+                (destMsgTree_Node
+                  (destTreeResult_TreeOK
+                    (ite (is-MsgTree_Leaf Input)
+                      (TreeResult_TreeOK MsgTree_Leaf)
+                      (ite
+                        (is-MsgResult_MsgAudit
+                          (f
+                            (MsgTree_Node_recd_Value
+                              (destMsgTree_Node Input))))
+                        (TreeResult_TreeAudit
+                          (destMsgResult_MsgAudit
+                            (f
+                              (MsgTree_Node_recd_Value
+                                (destMsgTree_Node Input)))))
+                        (ite
+                          (is-TreeResult_TreeAudit
+                            (Guardfn
+                              (MsgTree_Node_recd_Left
+                                (destMsgTree_Node Input))))
+                          (Guardfn
+                            (MsgTree_Node_recd_Left
+                              (destMsgTree_Node Input)))
+                          (ite
+                            (is-TreeResult_TreeAudit
+                              (Guardfn
+                                (MsgTree_Node_recd_Right
+                                  (destMsgTree_Node Input))))
+                            (Guardfn
+                              (MsgTree_Node_recd_Right
+                                (destMsgTree_Node Input)))
+                            (TreeResult_TreeOK
+                              (MsgTree_Node
+                                (MsgTree_Node_recd
+                                  (destMsgResult_MsgOK
+                                    (f
+                                      (MsgTree_Node_recd_Value
+                                        (destMsgTree_Node Input))))
+                                  (destTreeResult_TreeOK
+                                    (Guardfn
+                                      (MsgTree_Node_recd_Left
+                                        (destMsgTree_Node Input))))
+                                  (destTreeResult_TreeOK
+                                    (Guardfn
+                                      (MsgTree_Node_recd_Right
+                                        (destMsgTree_Node Input)))))))))))))))))))))
+(assert
+  (=
+    (Guard_Checkfn
+      (MsgTree_Node_recd_Left
+        (destMsgTree_Node
+          (destTreeResult_TreeOK
+            (Guardfn
+              (MsgTree_Node_recd_Right (destMsgTree_Node Input)))))))
+    (ite
+      (is-MsgTree_Leaf
+        (MsgTree_Node_recd_Left
+          (destMsgTree_Node
+            (destTreeResult_TreeOK
+              (Guardfn
+                (MsgTree_Node_recd_Right (destMsgTree_Node Input)))))))
+      true
+      (and
+        (is-MsgResult_MsgOK
+          (f
+            (MsgTree_Node_recd_Value
+              (destMsgTree_Node
+                (MsgTree_Node_recd_Left
+                  (destMsgTree_Node
+                    (destTreeResult_TreeOK
+                      (Guardfn
+                        (MsgTree_Node_recd_Right
+                          (destMsgTree_Node Input))))))))))
+        (and
+          (=
+            (MsgTree_Node_recd_Value
+              (destMsgTree_Node
+                (MsgTree_Node_recd_Left
+                  (destMsgTree_Node
+                    (destTreeResult_TreeOK
+                      (Guardfn
+                        (MsgTree_Node_recd_Right
+                          (destMsgTree_Node Input))))))))
+            (destMsgResult_MsgOK
+              (f
+                (MsgTree_Node_recd_Value
+                  (destMsgTree_Node
+                    (MsgTree_Node_recd_Left
+                      (destMsgTree_Node
+                        (destTreeResult_TreeOK
+                          (Guardfn
+                            (MsgTree_Node_recd_Right
+                              (destMsgTree_Node Input)))))))))))
+          (and
+            (Guard_Checkfn
+              (MsgTree_Node_recd_Left
+                (destMsgTree_Node
+                  (MsgTree_Node_recd_Left
+                    (destMsgTree_Node
+                      (destTreeResult_TreeOK
+                        (Guardfn
+                          (MsgTree_Node_recd_Right
+                            (destMsgTree_Node Input)))))))))
+            (Guard_Checkfn
+              (MsgTree_Node_recd_Right
+                (destMsgTree_Node
+                  (MsgTree_Node_recd_Left
+                    (destMsgTree_Node
+                      (destTreeResult_TreeOK
+                        (Guardfn
+                          (MsgTree_Node_recd_Right
+                            (destMsgTree_Node Input)))))))))))))))
+(assert
+  (=
+    (Guard_Checkfn
+      (MsgTree_Node_recd_Right
+        (destMsgTree_Node
+          (destTreeResult_TreeOK
+            (Guardfn
+              (MsgTree_Node_recd_Right (destMsgTree_Node Input)))))))
+    (ite
+      (is-MsgTree_Leaf
+        (MsgTree_Node_recd_Right
+          (destMsgTree_Node
+            (destTreeResult_TreeOK
+              (Guardfn
+                (MsgTree_Node_recd_Right (destMsgTree_Node Input)))))))
+      true
+      (and
+        (is-MsgResult_MsgOK
+          (f
+            (MsgTree_Node_recd_Value
+              (destMsgTree_Node
+                (MsgTree_Node_recd_Right
+                  (destMsgTree_Node
+                    (destTreeResult_TreeOK
+                      (Guardfn
+                        (MsgTree_Node_recd_Right
+                          (destMsgTree_Node Input))))))))))
+        (and
+          (=
+            (MsgTree_Node_recd_Value
+              (destMsgTree_Node
+                (MsgTree_Node_recd_Right
+                  (destMsgTree_Node
+                    (destTreeResult_TreeOK
+                      (Guardfn
+                        (MsgTree_Node_recd_Right
+                          (destMsgTree_Node Input))))))))
+            (destMsgResult_MsgOK
+              (f
+                (MsgTree_Node_recd_Value
+                  (destMsgTree_Node
+                    (MsgTree_Node_recd_Right
+                      (destMsgTree_Node
+                        (destTreeResult_TreeOK
+                          (Guardfn
+                            (MsgTree_Node_recd_Right
+                              (destMsgTree_Node Input)))))))))))
+          (and
+            (Guard_Checkfn
+              (MsgTree_Node_recd_Left
+                (destMsgTree_Node
+                  (MsgTree_Node_recd_Right
+                    (destMsgTree_Node
+                      (destTreeResult_TreeOK
+                        (Guardfn
+                          (MsgTree_Node_recd_Right
+                            (destMsgTree_Node Input)))))))))
+            (Guard_Checkfn
+              (MsgTree_Node_recd_Right
+                (destMsgTree_Node
+                  (MsgTree_Node_recd_Right
+                    (destMsgTree_Node
+                      (destTreeResult_TreeOK
+                        (Guardfn
+                          (MsgTree_Node_recd_Right
+                            (destMsgTree_Node Input)))))))))))))))
+(assert
+  (=
+    (Guard_Checkfn
+      (MsgTree_Node_recd_Left
+        (destMsgTree_Node
+          (destTreeResult_TreeOK
+            (Guardfn
+              (MsgTree_Node_recd_Left (destMsgTree_Node Input)))))))
+    (ite
+      (is-MsgTree_Leaf
+        (MsgTree_Node_recd_Left
+          (destMsgTree_Node
+            (destTreeResult_TreeOK
+              (Guardfn
+                (MsgTree_Node_recd_Left (destMsgTree_Node Input)))))))
+      true
+      (and
+        (is-MsgResult_MsgOK
+          (f
+            (MsgTree_Node_recd_Value
+              (destMsgTree_Node
+                (MsgTree_Node_recd_Left
+                  (destMsgTree_Node
+                    (destTreeResult_TreeOK
+                      (Guardfn
+                        (MsgTree_Node_recd_Left
+                          (destMsgTree_Node Input))))))))))
+        (and
+          (=
+            (MsgTree_Node_recd_Value
+              (destMsgTree_Node
+                (MsgTree_Node_recd_Left
+                  (destMsgTree_Node
+                    (destTreeResult_TreeOK
+                      (Guardfn
+                        (MsgTree_Node_recd_Left
+                          (destMsgTree_Node Input))))))))
+            (destMsgResult_MsgOK
+              (f
+                (MsgTree_Node_recd_Value
+                  (destMsgTree_Node
+                    (MsgTree_Node_recd_Left
+                      (destMsgTree_Node
+                        (destTreeResult_TreeOK
+                          (Guardfn
+                            (MsgTree_Node_recd_Left
+                              (destMsgTree_Node Input)))))))))))
+          (and
+            (Guard_Checkfn
+              (MsgTree_Node_recd_Left
+                (destMsgTree_Node
+                  (MsgTree_Node_recd_Left
+                    (destMsgTree_Node
+                      (destTreeResult_TreeOK
+                        (Guardfn
+                          (MsgTree_Node_recd_Left
+                            (destMsgTree_Node Input)))))))))
+            (Guard_Checkfn
+              (MsgTree_Node_recd_Right
+                (destMsgTree_Node
+                  (MsgTree_Node_recd_Left
+                    (destMsgTree_Node
+                      (destTreeResult_TreeOK
+                        (Guardfn
+                          (MsgTree_Node_recd_Left
+                            (destMsgTree_Node Input)))))))))))))))
+(assert
+  (=
+    (Guard_Checkfn
+      (MsgTree_Node_recd_Right
+        (destMsgTree_Node
+          (destTreeResult_TreeOK
+            (Guardfn
+              (MsgTree_Node_recd_Left (destMsgTree_Node Input)))))))
+    (ite
+      (is-MsgTree_Leaf
+        (MsgTree_Node_recd_Right
+          (destMsgTree_Node
+            (destTreeResult_TreeOK
+              (Guardfn
+                (MsgTree_Node_recd_Left (destMsgTree_Node Input)))))))
+      true
+      (and
+        (is-MsgResult_MsgOK
+          (f
+            (MsgTree_Node_recd_Value
+              (destMsgTree_Node
+                (MsgTree_Node_recd_Right
+                  (destMsgTree_Node
+                    (destTreeResult_TreeOK
+                      (Guardfn
+                        (MsgTree_Node_recd_Left
+                          (destMsgTree_Node Input))))))))))
+        (and
+          (=
+            (MsgTree_Node_recd_Value
+              (destMsgTree_Node
+                (MsgTree_Node_recd_Right
+                  (destMsgTree_Node
+                    (destTreeResult_TreeOK
+                      (Guardfn
+                        (MsgTree_Node_recd_Left
+                          (destMsgTree_Node Input))))))))
+            (destMsgResult_MsgOK
+              (f
+                (MsgTree_Node_recd_Value
+                  (destMsgTree_Node
+                    (MsgTree_Node_recd_Right
+                      (destMsgTree_Node
+                        (destTreeResult_TreeOK
+                          (Guardfn
+                            (MsgTree_Node_recd_Left
+                              (destMsgTree_Node Input)))))))))))
+          (and
+            (Guard_Checkfn
+              (MsgTree_Node_recd_Left
+                (destMsgTree_Node
+                  (MsgTree_Node_recd_Right
+                    (destMsgTree_Node
+                      (destTreeResult_TreeOK
+                        (Guardfn
+                          (MsgTree_Node_recd_Left
+                            (destMsgTree_Node Input)))))))))
+            (Guard_Checkfn
+              (MsgTree_Node_recd_Right
+                (destMsgTree_Node
+                  (MsgTree_Node_recd_Right
+                    (destMsgTree_Node
+                      (destTreeResult_TreeOK
+                        (Guardfn
+                          (MsgTree_Node_recd_Left
+                            (destMsgTree_Node Input)))))))))))))))
+(assert
+  (=
+    (Guard_Checkfn
+      (MsgTree_Node_recd_Left
+        (destMsgTree_Node
+          (destTreeResult_TreeOK
+            (ite (is-MsgTree_Leaf Input)
+              (TreeResult_TreeOK MsgTree_Leaf)
+              (ite
+                (is-MsgResult_MsgAudit
+                  (f
+                    (MsgTree_Node_recd_Value
+                      (destMsgTree_Node Input))))
+                (TreeResult_TreeAudit
+                  (destMsgResult_MsgAudit
+                    (f
+                      (MsgTree_Node_recd_Value
+                        (destMsgTree_Node Input)))))
+                (ite
+                  (is-TreeResult_TreeAudit
+                    (Guardfn
+                      (MsgTree_Node_recd_Left
+                        (destMsgTree_Node Input))))
+                  (Guardfn
+                    (MsgTree_Node_recd_Left (destMsgTree_Node Input)))
+                  (ite
+                    (is-TreeResult_TreeAudit
+                      (Guardfn
+                        (MsgTree_Node_recd_Right
+                          (destMsgTree_Node Input))))
+                    (Guardfn
+                      (MsgTree_Node_recd_Right
+                        (destMsgTree_Node Input)))
+                    (TreeResult_TreeOK
+                      (MsgTree_Node
+                        (MsgTree_Node_recd
+                          (destMsgResult_MsgOK
+                            (f
+                              (MsgTree_Node_recd_Value
+                                (destMsgTree_Node Input))))
+                          (destTreeResult_TreeOK
+                            (Guardfn
+                              (MsgTree_Node_recd_Left
+                                (destMsgTree_Node Input))))
+                          (destTreeResult_TreeOK
+                            (Guardfn
+                              (MsgTree_Node_recd_Right
+                                (destMsgTree_Node Input)))))))))))))))
+    (ite
+      (is-MsgTree_Leaf
+        (MsgTree_Node_recd_Left
+          (destMsgTree_Node
+            (destTreeResult_TreeOK
+              (ite (is-MsgTree_Leaf Input)
+                (TreeResult_TreeOK MsgTree_Leaf)
+                (ite
+                  (is-MsgResult_MsgAudit
+                    (f
+                      (MsgTree_Node_recd_Value
+                        (destMsgTree_Node Input))))
+                  (TreeResult_TreeAudit
+                    (destMsgResult_MsgAudit
+                      (f
+                        (MsgTree_Node_recd_Value
+                          (destMsgTree_Node Input)))))
+                  (ite
+                    (is-TreeResult_TreeAudit
+                      (Guardfn
+                        (MsgTree_Node_recd_Left
+                          (destMsgTree_Node Input))))
+                    (Guardfn
+                      (MsgTree_Node_recd_Left
+                        (destMsgTree_Node Input)))
+                    (ite
+                      (is-TreeResult_TreeAudit
+                        (Guardfn
+                          (MsgTree_Node_recd_Right
+                            (destMsgTree_Node Input))))
+                      (Guardfn
+                        (MsgTree_Node_recd_Right
+                          (destMsgTree_Node Input)))
+                      (TreeResult_TreeOK
+                        (MsgTree_Node
+                          (MsgTree_Node_recd
+                            (destMsgResult_MsgOK
+                              (f
+                                (MsgTree_Node_recd_Value
+                                  (destMsgTree_Node Input))))
+                            (destTreeResult_TreeOK
+                              (Guardfn
+                                (MsgTree_Node_recd_Left
+                                  (destMsgTree_Node Input))))
+                            (destTreeResult_TreeOK
+                              (Guardfn
+                                (MsgTree_Node_recd_Right
+                                  (destMsgTree_Node Input)))))))))))))))
+      true
+      (and
+        (is-MsgResult_MsgOK
+          (f
+            (MsgTree_Node_recd_Value
+              (destMsgTree_Node
+                (MsgTree_Node_recd_Left
+                  (destMsgTree_Node
+                    (destTreeResult_TreeOK
+                      (ite (is-MsgTree_Leaf Input)
+                        (TreeResult_TreeOK MsgTree_Leaf)
+                        (ite
+                          (is-MsgResult_MsgAudit
+                            (f
+                              (MsgTree_Node_recd_Value
+                                (destMsgTree_Node Input))))
+                          (TreeResult_TreeAudit
+                            (destMsgResult_MsgAudit
+                              (f
+                                (MsgTree_Node_recd_Value
+                                  (destMsgTree_Node Input)))))
+                          (ite
+                            (is-TreeResult_TreeAudit
+                              (Guardfn
+                                (MsgTree_Node_recd_Left
+                                  (destMsgTree_Node Input))))
+                            (Guardfn
+                              (MsgTree_Node_recd_Left
+                                (destMsgTree_Node Input)))
+                            (ite
+                              (is-TreeResult_TreeAudit
+                                (Guardfn
+                                  (MsgTree_Node_recd_Right
+                                    (destMsgTree_Node Input))))
+                              (Guardfn
+                                (MsgTree_Node_recd_Right
+                                  (destMsgTree_Node Input)))
+                              (TreeResult_TreeOK
+                                (MsgTree_Node
+                                  (MsgTree_Node_recd
+                                    (destMsgResult_MsgOK
+                                      (f
+                                        (MsgTree_Node_recd_Value
+                                          (destMsgTree_Node Input))))
+                                    (destTreeResult_TreeOK
+                                      (Guardfn
+                                        (MsgTree_Node_recd_Left
+                                          (destMsgTree_Node Input))))
+                                    (destTreeResult_TreeOK
+                                      (Guardfn
+                                        (MsgTree_Node_recd_Right
+                                          (destMsgTree_Node Input))))))))))))))))))
+        (and
+          (=
+            (MsgTree_Node_recd_Value
+              (destMsgTree_Node
+                (MsgTree_Node_recd_Left
+                  (destMsgTree_Node
+                    (destTreeResult_TreeOK
+                      (ite (is-MsgTree_Leaf Input)
+                        (TreeResult_TreeOK MsgTree_Leaf)
+                        (ite
+                          (is-MsgResult_MsgAudit
+                            (f
+                              (MsgTree_Node_recd_Value
+                                (destMsgTree_Node Input))))
+                          (TreeResult_TreeAudit
+                            (destMsgResult_MsgAudit
+                              (f
+                                (MsgTree_Node_recd_Value
+                                  (destMsgTree_Node Input)))))
+                          (ite
+                            (is-TreeResult_TreeAudit
+                              (Guardfn
+                                (MsgTree_Node_recd_Left
+                                  (destMsgTree_Node Input))))
+                            (Guardfn
+                              (MsgTree_Node_recd_Left
+                                (destMsgTree_Node Input)))
+                            (ite
+                              (is-TreeResult_TreeAudit
+                                (Guardfn
+                                  (MsgTree_Node_recd_Right
+                                    (destMsgTree_Node Input))))
+                              (Guardfn
+                                (MsgTree_Node_recd_Right
+                                  (destMsgTree_Node Input)))
+                              (TreeResult_TreeOK
+                                (MsgTree_Node
+                                  (MsgTree_Node_recd
+                                    (destMsgResult_MsgOK
+                                      (f
+                                        (MsgTree_Node_recd_Value
+                                          (destMsgTree_Node Input))))
+                                    (destTreeResult_TreeOK
+                                      (Guardfn
+                                        (MsgTree_Node_recd_Left
+                                          (destMsgTree_Node Input))))
+                                    (destTreeResult_TreeOK
+                                      (Guardfn
+                                        (MsgTree_Node_recd_Right
+                                          (destMsgTree_Node Input))))))))))))))))
+            (destMsgResult_MsgOK
+              (f
+                (MsgTree_Node_recd_Value
+                  (destMsgTree_Node
+                    (MsgTree_Node_recd_Left
+                      (destMsgTree_Node
+                        (destTreeResult_TreeOK
+                          (ite (is-MsgTree_Leaf Input)
+                            (TreeResult_TreeOK MsgTree_Leaf)
+                            (ite
+                              (is-MsgResult_MsgAudit
+                                (f
+                                  (MsgTree_Node_recd_Value
+                                    (destMsgTree_Node Input))))
+                              (TreeResult_TreeAudit
+                                (destMsgResult_MsgAudit
+                                  (f
+                                    (MsgTree_Node_recd_Value
+                                      (destMsgTree_Node Input)))))
+                              (ite
+                                (is-TreeResult_TreeAudit
+                                  (Guardfn
+                                    (MsgTree_Node_recd_Left
+                                      (destMsgTree_Node Input))))
+                                (Guardfn
+                                  (MsgTree_Node_recd_Left
+                                    (destMsgTree_Node Input)))
+                                (ite
+                                  (is-TreeResult_TreeAudit
+                                    (Guardfn
+                                      (MsgTree_Node_recd_Right
+                                        (destMsgTree_Node Input))))
+                                  (Guardfn
+                                    (MsgTree_Node_recd_Right
+                                      (destMsgTree_Node Input)))
+                                  (TreeResult_TreeOK
+                                    (MsgTree_Node
+                                      (MsgTree_Node_recd
+                                        (destMsgResult_MsgOK
+                                          (f
+                                            (MsgTree_Node_recd_Value
+                                              (destMsgTree_Node Input))))
+                                        (destTreeResult_TreeOK
+                                          (Guardfn
+                                            (MsgTree_Node_recd_Left
+                                              (destMsgTree_Node Input))))
+                                        (destTreeResult_TreeOK
+                                          (Guardfn
+                                            (MsgTree_Node_recd_Right
+                                              (destMsgTree_Node Input)))))))))))))))))))
+          (and
+            (Guard_Checkfn
+              (MsgTree_Node_recd_Left
+                (destMsgTree_Node
+                  (MsgTree_Node_recd_Left
+                    (destMsgTree_Node
+                      (destTreeResult_TreeOK
+                        (ite (is-MsgTree_Leaf Input)
+                          (TreeResult_TreeOK MsgTree_Leaf)
+                          (ite
+                            (is-MsgResult_MsgAudit
+                              (f
+                                (MsgTree_Node_recd_Value
+                                  (destMsgTree_Node Input))))
+                            (TreeResult_TreeAudit
+                              (destMsgResult_MsgAudit
+                                (f
+                                  (MsgTree_Node_recd_Value
+                                    (destMsgTree_Node Input)))))
+                            (ite
+                              (is-TreeResult_TreeAudit
+                                (Guardfn
+                                  (MsgTree_Node_recd_Left
+                                    (destMsgTree_Node Input))))
+                              (Guardfn
+                                (MsgTree_Node_recd_Left
+                                  (destMsgTree_Node Input)))
+                              (ite
+                                (is-TreeResult_TreeAudit
+                                  (Guardfn
+                                    (MsgTree_Node_recd_Right
+                                      (destMsgTree_Node Input))))
+                                (Guardfn
+                                  (MsgTree_Node_recd_Right
+                                    (destMsgTree_Node Input)))
+                                (TreeResult_TreeOK
+                                  (MsgTree_Node
+                                    (MsgTree_Node_recd
+                                      (destMsgResult_MsgOK
+                                        (f
+                                          (MsgTree_Node_recd_Value
+                                            (destMsgTree_Node Input))))
+                                      (destTreeResult_TreeOK
+                                        (Guardfn
+                                          (MsgTree_Node_recd_Left
+                                            (destMsgTree_Node Input))))
+                                      (destTreeResult_TreeOK
+                                        (Guardfn
+                                          (MsgTree_Node_recd_Right
+                                            (destMsgTree_Node Input)))))))))))))))))
+            (Guard_Checkfn
+              (MsgTree_Node_recd_Right
+                (destMsgTree_Node
+                  (MsgTree_Node_recd_Left
+                    (destMsgTree_Node
+                      (destTreeResult_TreeOK
+                        (ite (is-MsgTree_Leaf Input)
+                          (TreeResult_TreeOK MsgTree_Leaf)
+                          (ite
+                            (is-MsgResult_MsgAudit
+                              (f
+                                (MsgTree_Node_recd_Value
+                                  (destMsgTree_Node Input))))
+                            (TreeResult_TreeAudit
+                              (destMsgResult_MsgAudit
+                                (f
+                                  (MsgTree_Node_recd_Value
+                                    (destMsgTree_Node Input)))))
+                            (ite
+                              (is-TreeResult_TreeAudit
+                                (Guardfn
+                                  (MsgTree_Node_recd_Left
+                                    (destMsgTree_Node Input))))
+                              (Guardfn
+                                (MsgTree_Node_recd_Left
+                                  (destMsgTree_Node Input)))
+                              (ite
+                                (is-TreeResult_TreeAudit
+                                  (Guardfn
+                                    (MsgTree_Node_recd_Right
+                                      (destMsgTree_Node Input))))
+                                (Guardfn
+                                  (MsgTree_Node_recd_Right
+                                    (destMsgTree_Node Input)))
+                                (TreeResult_TreeOK
+                                  (MsgTree_Node
+                                    (MsgTree_Node_recd
+                                      (destMsgResult_MsgOK
+                                        (f
+                                          (MsgTree_Node_recd_Value
+                                            (destMsgTree_Node Input))))
+                                      (destTreeResult_TreeOK
+                                        (Guardfn
+                                          (MsgTree_Node_recd_Left
+                                            (destMsgTree_Node Input))))
+                                      (destTreeResult_TreeOK
+                                        (Guardfn
+                                          (MsgTree_Node_recd_Right
+                                            (destMsgTree_Node Input)))))))))))))))))))))))
+(assert
+  (=
+    (Guard_Checkfn
+      (MsgTree_Node_recd_Right
+        (destMsgTree_Node
+          (destTreeResult_TreeOK
+            (ite (is-MsgTree_Leaf Input)
+              (TreeResult_TreeOK MsgTree_Leaf)
+              (ite
+                (is-MsgResult_MsgAudit
+                  (f
+                    (MsgTree_Node_recd_Value
+                      (destMsgTree_Node Input))))
+                (TreeResult_TreeAudit
+                  (destMsgResult_MsgAudit
+                    (f
+                      (MsgTree_Node_recd_Value
+                        (destMsgTree_Node Input)))))
+                (ite
+                  (is-TreeResult_TreeAudit
+                    (Guardfn
+                      (MsgTree_Node_recd_Left
+                        (destMsgTree_Node Input))))
+                  (Guardfn
+                    (MsgTree_Node_recd_Left (destMsgTree_Node Input)))
+                  (ite
+                    (is-TreeResult_TreeAudit
+                      (Guardfn
+                        (MsgTree_Node_recd_Right
+                          (destMsgTree_Node Input))))
+                    (Guardfn
+                      (MsgTree_Node_recd_Right
+                        (destMsgTree_Node Input)))
+                    (TreeResult_TreeOK
+                      (MsgTree_Node
+                        (MsgTree_Node_recd
+                          (destMsgResult_MsgOK
+                            (f
+                              (MsgTree_Node_recd_Value
+                                (destMsgTree_Node Input))))
+                          (destTreeResult_TreeOK
+                            (Guardfn
+                              (MsgTree_Node_recd_Left
+                                (destMsgTree_Node Input))))
+                          (destTreeResult_TreeOK
+                            (Guardfn
+                              (MsgTree_Node_recd_Right
+                                (destMsgTree_Node Input)))))))))))))))
+    (ite
+      (is-MsgTree_Leaf
+        (MsgTree_Node_recd_Right
+          (destMsgTree_Node
+            (destTreeResult_TreeOK
+              (ite (is-MsgTree_Leaf Input)
+                (TreeResult_TreeOK MsgTree_Leaf)
+                (ite
+                  (is-MsgResult_MsgAudit
+                    (f
+                      (MsgTree_Node_recd_Value
+                        (destMsgTree_Node Input))))
+                  (TreeResult_TreeAudit
+                    (destMsgResult_MsgAudit
+                      (f
+                        (MsgTree_Node_recd_Value
+                          (destMsgTree_Node Input)))))
+                  (ite
+                    (is-TreeResult_TreeAudit
+                      (Guardfn
+                        (MsgTree_Node_recd_Left
+                          (destMsgTree_Node Input))))
+                    (Guardfn
+                      (MsgTree_Node_recd_Left
+                        (destMsgTree_Node Input)))
+                    (ite
+                      (is-TreeResult_TreeAudit
+                        (Guardfn
+                          (MsgTree_Node_recd_Right
+                            (destMsgTree_Node Input))))
+                      (Guardfn
+                        (MsgTree_Node_recd_Right
+                          (destMsgTree_Node Input)))
+                      (TreeResult_TreeOK
+                        (MsgTree_Node
+                          (MsgTree_Node_recd
+                            (destMsgResult_MsgOK
+                              (f
+                                (MsgTree_Node_recd_Value
+                                  (destMsgTree_Node Input))))
+                            (destTreeResult_TreeOK
+                              (Guardfn
+                                (MsgTree_Node_recd_Left
+                                  (destMsgTree_Node Input))))
+                            (destTreeResult_TreeOK
+                              (Guardfn
+                                (MsgTree_Node_recd_Right
+                                  (destMsgTree_Node Input)))))))))))))))
+      true
+      (and
+        (is-MsgResult_MsgOK
+          (f
+            (MsgTree_Node_recd_Value
+              (destMsgTree_Node
+                (MsgTree_Node_recd_Right
+                  (destMsgTree_Node
+                    (destTreeResult_TreeOK
+                      (ite (is-MsgTree_Leaf Input)
+                        (TreeResult_TreeOK MsgTree_Leaf)
+                        (ite
+                          (is-MsgResult_MsgAudit
+                            (f
+                              (MsgTree_Node_recd_Value
+                                (destMsgTree_Node Input))))
+                          (TreeResult_TreeAudit
+                            (destMsgResult_MsgAudit
+                              (f
+                                (MsgTree_Node_recd_Value
+                                  (destMsgTree_Node Input)))))
+                          (ite
+                            (is-TreeResult_TreeAudit
+                              (Guardfn
+                                (MsgTree_Node_recd_Left
+                                  (destMsgTree_Node Input))))
+                            (Guardfn
+                              (MsgTree_Node_recd_Left
+                                (destMsgTree_Node Input)))
+                            (ite
+                              (is-TreeResult_TreeAudit
+                                (Guardfn
+                                  (MsgTree_Node_recd_Right
+                                    (destMsgTree_Node Input))))
+                              (Guardfn
+                                (MsgTree_Node_recd_Right
+                                  (destMsgTree_Node Input)))
+                              (TreeResult_TreeOK
+                                (MsgTree_Node
+                                  (MsgTree_Node_recd
+                                    (destMsgResult_MsgOK
+                                      (f
+                                        (MsgTree_Node_recd_Value
+                                          (destMsgTree_Node Input))))
+                                    (destTreeResult_TreeOK
+                                      (Guardfn
+                                        (MsgTree_Node_recd_Left
+                                          (destMsgTree_Node Input))))
+                                    (destTreeResult_TreeOK
+                                      (Guardfn
+                                        (MsgTree_Node_recd_Right
+                                          (destMsgTree_Node Input))))))))))))))))))
+        (and
+          (=
+            (MsgTree_Node_recd_Value
+              (destMsgTree_Node
+                (MsgTree_Node_recd_Right
+                  (destMsgTree_Node
+                    (destTreeResult_TreeOK
+                      (ite (is-MsgTree_Leaf Input)
+                        (TreeResult_TreeOK MsgTree_Leaf)
+                        (ite
+                          (is-MsgResult_MsgAudit
+                            (f
+                              (MsgTree_Node_recd_Value
+                                (destMsgTree_Node Input))))
+                          (TreeResult_TreeAudit
+                            (destMsgResult_MsgAudit
+                              (f
+                                (MsgTree_Node_recd_Value
+                                  (destMsgTree_Node Input)))))
+                          (ite
+                            (is-TreeResult_TreeAudit
+                              (Guardfn
+                                (MsgTree_Node_recd_Left
+                                  (destMsgTree_Node Input))))
+                            (Guardfn
+                              (MsgTree_Node_recd_Left
+                                (destMsgTree_Node Input)))
+                            (ite
+                              (is-TreeResult_TreeAudit
+                                (Guardfn
+                                  (MsgTree_Node_recd_Right
+                                    (destMsgTree_Node Input))))
+                              (Guardfn
+                                (MsgTree_Node_recd_Right
+                                  (destMsgTree_Node Input)))
+                              (TreeResult_TreeOK
+                                (MsgTree_Node
+                                  (MsgTree_Node_recd
+                                    (destMsgResult_MsgOK
+                                      (f
+                                        (MsgTree_Node_recd_Value
+                                          (destMsgTree_Node Input))))
+                                    (destTreeResult_TreeOK
+                                      (Guardfn
+                                        (MsgTree_Node_recd_Left
+                                          (destMsgTree_Node Input))))
+                                    (destTreeResult_TreeOK
+                                      (Guardfn
+                                        (MsgTree_Node_recd_Right
+                                          (destMsgTree_Node Input))))))))))))))))
+            (destMsgResult_MsgOK
+              (f
+                (MsgTree_Node_recd_Value
+                  (destMsgTree_Node
+                    (MsgTree_Node_recd_Right
+                      (destMsgTree_Node
+                        (destTreeResult_TreeOK
+                          (ite (is-MsgTree_Leaf Input)
+                            (TreeResult_TreeOK MsgTree_Leaf)
+                            (ite
+                              (is-MsgResult_MsgAudit
+                                (f
+                                  (MsgTree_Node_recd_Value
+                                    (destMsgTree_Node Input))))
+                              (TreeResult_TreeAudit
+                                (destMsgResult_MsgAudit
+                                  (f
+                                    (MsgTree_Node_recd_Value
+                                      (destMsgTree_Node Input)))))
+                              (ite
+                                (is-TreeResult_TreeAudit
+                                  (Guardfn
+                                    (MsgTree_Node_recd_Left
+                                      (destMsgTree_Node Input))))
+                                (Guardfn
+                                  (MsgTree_Node_recd_Left
+                                    (destMsgTree_Node Input)))
+                                (ite
+                                  (is-TreeResult_TreeAudit
+                                    (Guardfn
+                                      (MsgTree_Node_recd_Right
+                                        (destMsgTree_Node Input))))
+                                  (Guardfn
+                                    (MsgTree_Node_recd_Right
+                                      (destMsgTree_Node Input)))
+                                  (TreeResult_TreeOK
+                                    (MsgTree_Node
+                                      (MsgTree_Node_recd
+                                        (destMsgResult_MsgOK
+                                          (f
+                                            (MsgTree_Node_recd_Value
+                                              (destMsgTree_Node Input))))
+                                        (destTreeResult_TreeOK
+                                          (Guardfn
+                                            (MsgTree_Node_recd_Left
+                                              (destMsgTree_Node Input))))
+                                        (destTreeResult_TreeOK
+                                          (Guardfn
+                                            (MsgTree_Node_recd_Right
+                                              (destMsgTree_Node Input)))))))))))))))))))
+          (and
+            (Guard_Checkfn
+              (MsgTree_Node_recd_Left
+                (destMsgTree_Node
+                  (MsgTree_Node_recd_Right
+                    (destMsgTree_Node
+                      (destTreeResult_TreeOK
+                        (ite (is-MsgTree_Leaf Input)
+                          (TreeResult_TreeOK MsgTree_Leaf)
+                          (ite
+                            (is-MsgResult_MsgAudit
+                              (f
+                                (MsgTree_Node_recd_Value
+                                  (destMsgTree_Node Input))))
+                            (TreeResult_TreeAudit
+                              (destMsgResult_MsgAudit
+                                (f
+                                  (MsgTree_Node_recd_Value
+                                    (destMsgTree_Node Input)))))
+                            (ite
+                              (is-TreeResult_TreeAudit
+                                (Guardfn
+                                  (MsgTree_Node_recd_Left
+                                    (destMsgTree_Node Input))))
+                              (Guardfn
+                                (MsgTree_Node_recd_Left
+                                  (destMsgTree_Node Input)))
+                              (ite
+                                (is-TreeResult_TreeAudit
+                                  (Guardfn
+                                    (MsgTree_Node_recd_Right
+                                      (destMsgTree_Node Input))))
+                                (Guardfn
+                                  (MsgTree_Node_recd_Right
+                                    (destMsgTree_Node Input)))
+                                (TreeResult_TreeOK
+                                  (MsgTree_Node
+                                    (MsgTree_Node_recd
+                                      (destMsgResult_MsgOK
+                                        (f
+                                          (MsgTree_Node_recd_Value
+                                            (destMsgTree_Node Input))))
+                                      (destTreeResult_TreeOK
+                                        (Guardfn
+                                          (MsgTree_Node_recd_Left
+                                            (destMsgTree_Node Input))))
+                                      (destTreeResult_TreeOK
+                                        (Guardfn
+                                          (MsgTree_Node_recd_Right
+                                            (destMsgTree_Node Input)))))))))))))))))
+            (Guard_Checkfn
+              (MsgTree_Node_recd_Right
+                (destMsgTree_Node
+                  (MsgTree_Node_recd_Right
+                    (destMsgTree_Node
+                      (destTreeResult_TreeOK
+                        (ite (is-MsgTree_Leaf Input)
+                          (TreeResult_TreeOK MsgTree_Leaf)
+                          (ite
+                            (is-MsgResult_MsgAudit
+                              (f
+                                (MsgTree_Node_recd_Value
+                                  (destMsgTree_Node Input))))
+                            (TreeResult_TreeAudit
+                              (destMsgResult_MsgAudit
+                                (f
+                                  (MsgTree_Node_recd_Value
+                                    (destMsgTree_Node Input)))))
+                            (ite
+                              (is-TreeResult_TreeAudit
+                                (Guardfn
+                                  (MsgTree_Node_recd_Left
+                                    (destMsgTree_Node Input))))
+                              (Guardfn
+                                (MsgTree_Node_recd_Left
+                                  (destMsgTree_Node Input)))
+                              (ite
+                                (is-TreeResult_TreeAudit
+                                  (Guardfn
+                                    (MsgTree_Node_recd_Right
+                                      (destMsgTree_Node Input))))
+                                (Guardfn
+                                  (MsgTree_Node_recd_Right
+                                    (destMsgTree_Node Input)))
+                                (TreeResult_TreeOK
+                                  (MsgTree_Node
+                                    (MsgTree_Node_recd
+                                      (destMsgResult_MsgOK
+                                        (f
+                                          (MsgTree_Node_recd_Value
+                                            (destMsgTree_Node Input))))
+                                      (destTreeResult_TreeOK
+                                        (Guardfn
+                                          (MsgTree_Node_recd_Left
+                                            (destMsgTree_Node Input))))
+                                      (destTreeResult_TreeOK
+                                        (Guardfn
+                                          (MsgTree_Node_recd_Right
+                                            (destMsgTree_Node Input)))))))))))))))))))))))
+(assert
+  (not
+    (not
+      (is-MsgTree_Leaf
+        (MsgTree_Node_recd_Left
+          (destMsgTree_Node
+            (destTreeResult_TreeOK
+              (Guardfn
+                (MsgTree_Node_recd_Right (destMsgTree_Node Input))))))))))
+(assert
+  (not
+    (not
+      (is-MsgTree_Leaf
+        (MsgTree_Node_recd_Right
+          (destMsgTree_Node
+            (destTreeResult_TreeOK
+              (Guardfn
+                (MsgTree_Node_recd_Right (destMsgTree_Node Input))))))))))
+(assert
+  (not
+    (not
+      (is-MsgTree_Leaf
+        (MsgTree_Node_recd_Left
+          (destMsgTree_Node
+            (destTreeResult_TreeOK
+              (Guardfn
+                (MsgTree_Node_recd_Left (destMsgTree_Node Input))))))))))
+(assert
+  (not
+    (not
+      (is-MsgTree_Leaf
+        (MsgTree_Node_recd_Right
+          (destMsgTree_Node
+            (destTreeResult_TreeOK
+              (Guardfn
+                (MsgTree_Node_recd_Left (destMsgTree_Node Input))))))))))
+(assert
+  (not
+    (not
+      (is-MsgTree_Leaf
+        (MsgTree_Node_recd_Left
+          (destMsgTree_Node
+            (destTreeResult_TreeOK
+              (ite (is-MsgTree_Leaf Input)
+                (TreeResult_TreeOK MsgTree_Leaf)
+                (ite
+                  (is-MsgResult_MsgAudit
+                    (f
+                      (MsgTree_Node_recd_Value
+                        (destMsgTree_Node Input))))
+                  (TreeResult_TreeAudit
+                    (destMsgResult_MsgAudit
+                      (f
+                        (MsgTree_Node_recd_Value
+                          (destMsgTree_Node Input)))))
+                  (ite
+                    (is-TreeResult_TreeAudit
+                      (Guardfn
+                        (MsgTree_Node_recd_Left
+                          (destMsgTree_Node Input))))
+                    (Guardfn
+                      (MsgTree_Node_recd_Left
+                        (destMsgTree_Node Input)))
+                    (ite
+                      (is-TreeResult_TreeAudit
+                        (Guardfn
+                          (MsgTree_Node_recd_Right
+                            (destMsgTree_Node Input))))
+                      (Guardfn
+                        (MsgTree_Node_recd_Right
+                          (destMsgTree_Node Input)))
+                      (TreeResult_TreeOK
+                        (MsgTree_Node
+                          (MsgTree_Node_recd
+                            (destMsgResult_MsgOK
+                              (f
+                                (MsgTree_Node_recd_Value
+                                  (destMsgTree_Node Input))))
+                            (destTreeResult_TreeOK
+                              (Guardfn
+                                (MsgTree_Node_recd_Left
+                                  (destMsgTree_Node Input))))
+                            (destTreeResult_TreeOK
+                              (Guardfn
+                                (MsgTree_Node_recd_Right
+                                  (destMsgTree_Node Input))))))))))))))))))
+(assert
+  (not
+    (not
+      (is-MsgTree_Leaf
+        (MsgTree_Node_recd_Right
+          (destMsgTree_Node
+            (destTreeResult_TreeOK
+              (ite (is-MsgTree_Leaf Input)
+                (TreeResult_TreeOK MsgTree_Leaf)
+                (ite
+                  (is-MsgResult_MsgAudit
+                    (f
+                      (MsgTree_Node_recd_Value
+                        (destMsgTree_Node Input))))
+                  (TreeResult_TreeAudit
+                    (destMsgResult_MsgAudit
+                      (f
+                        (MsgTree_Node_recd_Value
+                          (destMsgTree_Node Input)))))
+                  (ite
+                    (is-TreeResult_TreeAudit
+                      (Guardfn
+                        (MsgTree_Node_recd_Left
+                          (destMsgTree_Node Input))))
+                    (Guardfn
+                      (MsgTree_Node_recd_Left
+                        (destMsgTree_Node Input)))
+                    (ite
+                      (is-TreeResult_TreeAudit
+                        (Guardfn
+                          (MsgTree_Node_recd_Right
+                            (destMsgTree_Node Input))))
+                      (Guardfn
+                        (MsgTree_Node_recd_Right
+                          (destMsgTree_Node Input)))
+                      (TreeResult_TreeOK
+                        (MsgTree_Node
+                          (MsgTree_Node_recd
+                            (destMsgResult_MsgOK
+                              (f
+                                (MsgTree_Node_recd_Value
+                                  (destMsgTree_Node Input))))
+                            (destTreeResult_TreeOK
+                              (Guardfn
+                                (MsgTree_Node_recd_Left
+                                  (destMsgTree_Node Input))))
+                            (destTreeResult_TreeOK
+                              (Guardfn
+                                (MsgTree_Node_recd_Right
+                                  (destMsgTree_Node Input))))))))))))))))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/bug303.smt2 b/test/regress/regress0/bug303.smt2
new file mode 100644
index 0000000..611147e
--- /dev/null
+++ b/test/regress/regress0/bug303.smt2
@@ -0,0 +1,23 @@
+(set-logic QF_UFLIA)
+(set-info :status unsat)
+
+;; don't use a datatypes for currently focusing in uf
+(declare-sort list 0)
+
+(declare-fun cons (Int list) list)
+(declare-fun nil () list)
+
+;;define length
+(declare-fun length (list) Int)
+
+(assert (= (length nil) 0))
+
+(declare-fun one_cons (list) list)
+
+(assert (= (length (cons 1 nil)) (+ 1 (length nil))))
+(assert (= (one_cons nil) (cons 1 nil)))
+(assert (not (= (length (one_cons nil)) 1)))
+
+(check-sat)
+
+(exit)
diff --git a/test/regress/regress0/bug310.cvc b/test/regress/regress0/bug310.cvc
new file mode 100644
index 0000000..0cb6cf0
--- /dev/null
+++ b/test/regress/regress0/bug310.cvc
@@ -0,0 +1,4 @@
+% EXPECT: valid
+b : BOOLEAN;
+DATATYPE D = c(s:INT) END;
+QUERY c(IF b THEN 1 ELSE 0 ENDIF) = IF b THEN c(1) ELSE c(0) ENDIF;
diff --git a/test/regress/regress0/bug32.cvc b/test/regress/regress0/bug32.cvc
new file mode 100644
index 0000000..304dd6e
--- /dev/null
+++ b/test/regress/regress0/bug32.cvc
@@ -0,0 +1,6 @@
+% EXPECT: valid
+a:BOOLEAN;
+b:BOOLEAN;
+ASSERT(a);
+QUERY(a OR b);
+
diff --git a/test/regress/regress0/bug322.cvc b/test/regress/regress0/bug322.cvc
new file mode 100644
index 0000000..2790370
--- /dev/null
+++ b/test/regress/regress0/bug322.cvc
@@ -0,0 +1,22 @@
+% EXPECT: sat
+% Preamble  --------------
+DATATYPE UNIT = Unit END;
+DATATYPE BOOL = Truth | Falsity END;
+
+% Decls     --------------
+node$type: TYPE;
+value$type: TYPE;
+Nodes$elem$type: TYPE = node$type;
+Nodes$t$type: TYPE;
+node_pair_set$type: TYPE = ARRAY node$type OF ARRAY node$type OF BOOL;
+failure_pattern$type: TYPE = node_pair_set$type;
+is_faulty:(node$type, failure_pattern$type) -> BOOL = (LAMBDA (p: node$type, 
+                                                               deliver: failure_pattern$type): 
+                                                      (IF (EXISTS (q: node$type): 
+                                                          (NOT ((((deliver)[
+                                                                 (p)])[
+                                                                (q)]) = 
+                                                               (Truth)))) THEN 
+                                                      (Truth) ELSE (Falsity) ENDIF));
+
+CHECKSAT;
diff --git a/test/regress/regress0/bug322b.cvc b/test/regress/regress0/bug322b.cvc
new file mode 100644
index 0000000..fa9462f
--- /dev/null
+++ b/test/regress/regress0/bug322b.cvc
@@ -0,0 +1,11 @@
+% COMMAND-LINE: --incremental
+% EXPECT: valid
+% EXPECT: valid
+% EXPECT: valid
+x : INT;
+y : INT = x + 1;
+z : INT = -10;
+identity : INT -> INT = LAMBDA(x:INT) : x;
+QUERY identity(x) = x;
+QUERY identity(y) > x;
+QUERY identity(z) = -10;
diff --git a/test/regress/regress0/bug339.smt2 b/test/regress/regress0/bug339.smt2
new file mode 100644
index 0000000..bb03cf9
--- /dev/null
+++ b/test/regress/regress0/bug339.smt2
@@ -0,0 +1,15 @@
+(set-logic QF_LRA)
+(set-info :status sat)
+
+(declare-fun x () Real)
+(declare-fun P () Bool)
+
+(assert
+ (let ((y (ite P 1 x)))
+   (and (not (= y 1))
+        (> y 0)
+        (<= y 1))))
+
+(check-sat)
+
+(exit)
diff --git a/test/regress/regress0/bug365.smt2 b/test/regress/regress0/bug365.smt2
new file mode 100644
index 0000000..6dd48a8
--- /dev/null
+++ b/test/regress/regress0/bug365.smt2
@@ -0,0 +1,9 @@
+(set-logic QF_LIA)
+(set-info :smt-lib-version 2.0)
+(set-info :status unsat)
+(assert (let
+	   ((a 2))
+	   (= a (let ((a 7)) a))))
+(check-sat)
+(exit)
+
diff --git a/test/regress/regress0/bug382.smt2 b/test/regress/regress0/bug382.smt2
new file mode 100644
index 0000000..c296fe1
--- /dev/null
+++ b/test/regress/regress0/bug382.smt2
@@ -0,0 +1,14 @@
+; EXPECT: sat
+; EXPECT: ((x 0))
+; EXPECT: ((x 0))
+; EXPECT: (((f x) 0))
+; EXPECT: (((f x) 0))
+(set-option :produce-models true)
+(set-logic QF_UFLIA)
+(declare-fun f (Int) Int)
+(declare-fun x () Int)
+(check-sat)
+(get-value (x)); returns 0
+(get-value (x)); returns 1 ?!
+(get-value ((f x))); assert-fails in EqualityEngine
+(get-value ((f x)))
diff --git a/test/regress/regress0/bug383.smt2 b/test/regress/regress0/bug383.smt2
new file mode 100644
index 0000000..b0349c0
--- /dev/null
+++ b/test/regress/regress0/bug383.smt2
@@ -0,0 +1,8 @@
+(set-logic QF_LIA)
+(set-info :status sat)
+(declare-fun f1 () Int)
+(declare-fun f2 () Int)
+(declare-fun f3 () Int)
+(assert (< 1 f1 f2 f3 5))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/bug398.smt2 b/test/regress/regress0/bug398.smt2
new file mode 100644
index 0000000..3e4a1fa
--- /dev/null
+++ b/test/regress/regress0/bug398.smt2
@@ -0,0 +1,3 @@
+; EXIT: 0
+(set-logic QF_LRA)
+(define-fun x () Real (+ 4 1))
diff --git a/test/regress/regress0/bug421.smt2 b/test/regress/regress0/bug421.smt2
new file mode 100644
index 0000000..fd7b4a7
--- /dev/null
+++ b/test/regress/regress0/bug421.smt2
@@ -0,0 +1,10 @@
+; COMMAND-LINE: --incremental --abstract-values
+; EXPECT: sat
+; EXPECT: ((a (as @1 (Array Int Int))) (b (as @2 (Array Int Int))))
+(set-logic QF_AUFLIA)
+(set-option :produce-models true)
+(declare-fun a () (Array Int Int))
+(declare-fun b () (Array Int Int))
+(assert (not (= a b)))
+(check-sat)
+(get-value (a b))
diff --git a/test/regress/regress0/bug421b.smt2 b/test/regress/regress0/bug421b.smt2
new file mode 100644
index 0000000..aed7f7c
--- /dev/null
+++ b/test/regress/regress0/bug421b.smt2
@@ -0,0 +1,14 @@
+; same as bug421.smt2 but adds --check-models on command line:
+; this actually caused the same bug for a different reason, so
+; we check them both independently in regressions
+;
+; COMMAND-LINE: --incremental --abstract-values --check-models
+; EXPECT: sat
+; EXPECT: ((a (as @1 (Array Int Int))) (b (as @2 (Array Int Int))))
+(set-logic QF_AUFLIA)
+(set-option :produce-models true)
+(declare-fun a () (Array Int Int))
+(declare-fun b () (Array Int Int))
+(assert (not (= a b)))
+(check-sat)
+(get-value (a b))
diff --git a/test/regress/regress0/bug480.smt2 b/test/regress/regress0/bug480.smt2
new file mode 100644
index 0000000..0dc366a
--- /dev/null
+++ b/test/regress/regress0/bug480.smt2
@@ -0,0 +1,10 @@
+; EXPECT: sat
+; EXPECT: ((foo true) (bar false) (baz true))
+(set-logic QF_LIA)
+(set-option :produce-assignments true)
+(declare-fun x () Int)
+(declare-fun y () Int)
+(assert (! (or (! (= x (+ y 5)) :named foo) (! (= x (- y 5)) :named bar)) :named baz))
+(assert (and (> x 0) (<= y 5)))
+(check-sat)
+(get-assignment)
diff --git a/test/regress/regress0/bug484.smt2 b/test/regress/regress0/bug484.smt2
new file mode 100644
index 0000000..3c73e26
--- /dev/null
+++ b/test/regress/regress0/bug484.smt2
@@ -0,0 +1,111 @@
+; Preamble  --------------
+(set-logic ALL)
+(set-info :status sat)
+(declare-datatypes () ((UNIT (Unit))))
+(declare-datatypes () ((BOOL (Truth) (Falsity))))
+
+; Decls     --------------
+(declare-sort A 0)
+(declare-sort B 0)
+(declare-sort C 0)
+(declare-sort D 0)
+(declare-datatypes () ((E (one) (two) (three))))
+(declare-datatypes () ((F (four) (five) (six))))
+(declare-datatypes () ((G (c_G (seven BOOL)))))
+
+(declare-datatypes () 
+  ((H
+    (c_H 
+      (foo1 BOOL) 
+      (foo2 A) 
+      (foo3 B) 
+      (foo4 B) 
+      (foo5 Int)
+    )
+  ))
+)
+
+(declare-datatypes () 
+  ((I 
+    (c_I 
+      (bar1 E) 
+      (bar2 Int) 
+      (bar3 Int) 
+      (bar4 A)
+    )
+  ))
+)
+
+(declare-datatypes () 
+  ((J 
+    (c_J 
+      (f1 BOOL) 
+      (f2 Int) 
+      (f3 Int) 
+      (f4 Int) 
+      (f5 I) 
+      (f6 B) 
+      (f7 C)
+    )
+  ))
+)
+
+(declare-datatypes () 
+  ((K 
+    (c_K 
+      (g1 BOOL) 
+      (g2 F) 
+      (g3 A) 
+      (g4 BOOL)
+    )
+  ))
+)
+
+; Var Decls --------------
+(declare-fun s1 () (Array A J))
+(declare-fun s2 () (Array A J))
+(declare-fun e1 () (Array A K))
+(declare-fun e2 () (Array A K))
+(declare-fun x  () A)
+(declare-fun y  () A)
+(declare-fun foo (A) A)
+(declare-fun bar (A) C)
+
+
+; Asserts   --------------
+(assert 
+  (not 
+    (= 
+      (ite 
+        (=> 
+          (= y (g3 (select e1 x)))
+          (=> 
+            (= s2 
+               (store 
+                 s1 
+                 y 
+                 (let ((z (select s1 y)))
+                   (c_J 
+                     (f1 z) 
+                     (f2 z) 
+                     (- (f3 (select s1 y)) 1) 
+                     (f4 z)
+                     (f5 z) 
+                     (f6 z) 
+                     (f7 z)
+                   )
+                 )
+               )
+            ) 
+            (forall ((s A)) (= (g3 (select e2 s)) s))
+          )
+        )
+       Truth 
+       Falsity
+      ) 
+      Truth
+    )
+  )
+)
+                           
+(check-sat)
diff --git a/test/regress/regress0/bug486.cvc b/test/regress/regress0/bug486.cvc
new file mode 100644
index 0000000..c51af4e
--- /dev/null
+++ b/test/regress/regress0/bug486.cvc
@@ -0,0 +1,28 @@
+% COMMAND-LINE: --finite-model-find -i
+% EXPECT: invalid
+% EXPECT: valid
+prin:TYPE;
+form:TYPE;
+
+signed:(prin,form)->BOOLEAN;
+says:(prin,form)->BOOLEAN;
+
+speaksfor:(prin,prin)->form;
+signedE:BOOLEAN = FORALL(x:prin,y:form) : signed(x,y) => says(x,y);
+saysE:BOOLEAN = FORALL(x,y:prin,z:form) : says(x,speaksfor(y,x)) AND says(y,z) => says(x,z); 
+
+ASSERT(signedE);
+ASSERT(saysE);
+
+julie:prin;
+dave:prin;
+alice:prin;
+openfile:form;
+
+x2:BOOLEAN = signed(alice,openfile);
+ASSERT(x2);
+x3:BOOLEAN = signed(dave,speaksfor(alice,dave));
+ASSERT(x3);
+
+QUERY NOT says(dave,openfile); % this is invalid
+QUERY says(dave,openfile); % this is valid
diff --git a/test/regress/regress0/bug49.smt b/test/regress/regress0/bug49.smt
new file mode 100644
index 0000000..3f3d40b
--- /dev/null
+++ b/test/regress/regress0/bug49.smt
@@ -0,0 +1,67 @@
+(benchmark PEQ012_size3_segsat.smt
+:source {
+
+CADE ATP System competition. See http://www.cs.miami.edu/~tptp/CASC
+ for more information. 
+
+This benchmark was obtained by trying to find a finite model of a first-order 
+formula (Albert Oliveras).
+
+Original source is QF_UF/PEQ/PEQ012_size3.smt
+Mucked up by Tim
+}
+:status sat
+:category { crafted }
+:difficulty { 0 }
+:logic QF_UF
+
+:extrafuns ((f1 U U U))
+:extrafuns ((c6 U))
+:extrafuns ((c3 U))
+:extrafuns ((c7 U))
+:extrafuns ((c5 U))
+:extrafuns ((c2 U))
+:extrafuns ((c4 U))
+:extrafuns ((c8 U))
+:extrafuns ((c9 U))
+:extrafuns ((c_0 U))
+:extrafuns ((c_1 U))
+:extrafuns ((c_2 U))
+:formula 
+( and 
+  (not (= c_0 c_1))
+  (not (= c_0 c_2))
+  (not (= c_1 c_2))
+  (or (not (= (f1 c_0 c_1) (f1 c_0 c_1))) (= c_1 c_1) )
+  (or (not (= (f1 c_0 c_2) (f1 c_0 c_0))) (= c_2 c_0) )
+  (or (not (= (f1 c_0 c_2) (f1 c_0 c_2))) (= c_2 c_2) )
+  (or (not (= (f1 c_1 c_0) (f1 c_1 c_0))) (= c_0 c_0) )
+  (or (not (= (f1 c_1 c_0) (f1 c_1 c_2))) (= c_0 c_2) )
+  (or (not (= (f1 c_1 c_1) (f1 c_1 c_0))) (= c_1 c_0) )
+  (= (f1 (f1 c_0 c_0) c_0) (f1 c_0 (f1 c_0 c_0)))
+  (= (f1 (f1 c_0 c_0) c_2) (f1 c_0 (f1 c_0 c_2)))
+  (= (f1 (f1 c_0 c_1) c_1) (f1 c_0 (f1 c_1 c_1)))
+  (= (f1 (f1 c_0 c_1) c_2) (f1 c_0 (f1 c_1 c_2)))
+  (= (f1 (f1 c_2 c_1) c_2) (f1 c_2 (f1 c_1 c_2)))
+  (= (f1 (f1 c_2 c_2) c_0) (f1 c_2 (f1 c_2 c_0)))
+  (= (f1 (f1 c_2 c_2) c_1) (f1 c_2 (f1 c_2 c_1)))
+  (= (f1 c_0 (f1 c_2 (f1 c_2 (f1 c_2 c_0)))) (f1 c_2 (f1 c_0 (f1 c_2 (f1 c_0 c_2)))))
+  (= (f1 c2 c8) (f1 c4 c9))
+  (not (= (f1 c6 c8) (f1 c7 c9)))
+  (or (= (f1 c_0 c_0) c_0)(= (f1 c_0 c_0) c_1)(= (f1 c_0 c_0) c_2))
+  (or (= (f1 c_0 c_1) c_0)(= (f1 c_0 c_1) c_1)(= (f1 c_0 c_1) c_2))
+  (or (= (f1 c_1 c_0) c_0)(= (f1 c_1 c_0) c_1)(= (f1 c_1 c_0) c_2))
+  (or (= (f1 c_1 c_1) c_0)(= (f1 c_1 c_1) c_1)(= (f1 c_1 c_1) c_2))
+  (or (= (f1 c_1 c_2) c_0)(= (f1 c_1 c_2) c_1)(= (f1 c_1 c_2) c_2))
+  (or (= (f1 c_2 c_0) c_0)(= (f1 c_2 c_0) c_1)(= (f1 c_2 c_0) c_2))
+  (or (= (f1 c_2 c_1) c_0)(= (f1 c_2 c_1) c_1)(= (f1 c_2 c_1) c_2))
+  (or (= (f1 c_2 c_2) c_0)(= (f1 c_2 c_2) c_1)(= (f1 c_2 c_2) c_2))
+  (or (= c6 c_0)(= c6 c_1)(= c6 c_2))
+  (or (= c3 c_0)(= c3 c_1)(= c3 c_2))
+  (or (= c7 c_0)(= c7 c_1)(= c7 c_2))
+  (or (= c5 c_0)(= c5 c_1)(= c5 c_2))
+  (or (= c2 c_0)(= c2 c_1)(= c2 c_2))
+  (or (= c4 c_0)(= c4 c_1)(= c4 c_2))
+  (or (= c8 c_0)(= c8 c_1)(= c8 c_2))
+  (or (= c9 c_0)(= c9 c_1)(= c9 c_2))
+))
diff --git a/test/regress/regress0/bug507.smt2 b/test/regress/regress0/bug507.smt2
new file mode 100644
index 0000000..75a63e3
--- /dev/null
+++ b/test/regress/regress0/bug507.smt2
@@ -0,0 +1,78 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Datatype declarations
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(declare-datatypes () 
+  ((ColorType (ColorType_Red) (ColorType_Black))
+))
+
+(declare-datatypes () 
+  ((RBTree (RBTree_Leaf) (RBTree_Node (destRBTree_Node RBTree_Node_recd)))
+
+   (RBTree_Node_recd (RBTree_Node_recd (RBTree_Node_recd_color ColorType)
+  (RBTree_Node_recd_left RBTree) (RBTree_Node_recd_elem Int)
+  (RBTree_Node_recd_right RBTree)))
+))
+
+(declare-datatypes () 
+  ((BoolColor (BoolColor (BoolColor_res Bool) (BoolColor_color ColorType)))
+))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Uninterpreted symbols
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(declare-fun v0 () Int)
+(declare-fun t () RBTree)
+;; (declare-fun NoTwoRedsFn (RBTree) BoolColor)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Defined symbols
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(define-fun assembleFn ((ll RBTree) (le Int) (lr RBTree) (e Int) (rl RBTree) (re Int) (rr RBTree)) RBTree
+  (RBTree_Node (RBTree_Node_recd ColorType_Red (RBTree_Node (RBTree_Node_recd ColorType_Black ll le lr)) e (RBTree_Node (RBTree_Node_recd ColorType_Black rl re rr)))))
+
+(define-fun balanceFn ((c ColorType) (left RBTree) (elem Int) (right RBTree)) RBTree
+  (ite (= c ColorType_Black) (ite (not (ite (is-RBTree_Leaf left) false (ite (not (ite (is-RBTree_Leaf (RBTree_Node_recd_left (destRBTree_Node left))) false (ite (and (= (RBTree_Node_recd_color (destRBTree_Node left)) ColorType_Red) (= (RBTree_Node_recd_color (destRBTree_Node (RBTree_Node_recd_left (destRBTree_Node left)))) ColorType_Red)) true false))) (ite (is-RBTree_Leaf (RBTree_Node_recd_right (destRBTree_Node left))) false (ite (and (= (RBTree_Node_recd_color (destRBTree_Node left)) [...]
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Catamorphisms
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+( declare-fun memberFn ( Int RBTree ) Bool )
+
+( declare-fun EqualBlackPathsFn ( RBTree ) Int )
+
+( declare-fun insFn ( Int RBTree ) RBTree )
+
+( declare-fun insertFn ( Int RBTree ) RBTree )
+
+( declare-fun NoTwoRedsFn ( RBTree ) BoolColor )
+  
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Goals
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+;;(push)
+(assert (and (is-RBTree_Leaf t) 
+        (and (not (is-RBTree_Leaf (insertFn v0 t))) 
+             (not (BoolColor_res (NoTwoRedsFn (RBTree_Node_recd_left (destRBTree_Node (insertFn v0 t)))))))))
+
+;;(pop)
+
+( assert ( = ( insertFn v0 t ) ( ite ( is-RBTree_Leaf ( insFn v0 t ) ) ( insFn v0 t ) ( RBTree_Node ( RBTree_Node_recd ColorType_Black ( RBTree_Node_recd_left ( destRBTree_Node ( insFn v0 t ) ) ) ( RBTree_Node_recd_elem ( destRBTree_Node ( insFn v0 t ) ) ) ( RBTree_Node_recd_right ( destRBTree_Node ( insFn v0 t ) ) ) ) ) ) ) )
+( assert ( = ( NoTwoRedsFn ( RBTree_Node_recd_left ( destRBTree_Node ( insertFn v0 t ) ) ) ) ( ite ( is-RBTree_Leaf ( RBTree_Node_recd_left ( destRBTree_Node ( insertFn v0 t ) ) ) ) ( BoolColor true ColorType_Black ) ( BoolColor ( and ( BoolColor_res ( NoTwoRedsFn ( RBTree_Node_recd_left ( destRBTree_Node ( RBTree_Node_recd_left ( destRBTree_Node ( insertFn v0 t ) ) ) ) ) ) ) ( and ( BoolColor_res ( NoTwoRedsFn ( RBTree_Node_recd_right ( destRBTree_Node ( RBTree_Node_recd_left ( destRBTr [...]
+( assert ( = ( NoTwoRedsFn ( RBTree_Node_recd_right ( destRBTree_Node ( insertFn v0 t ) ) ) ) ( ite ( is-RBTree_Leaf ( RBTree_Node_recd_right ( destRBTree_Node ( insertFn v0 t ) ) ) ) ( BoolColor true ColorType_Black ) ( BoolColor ( and ( BoolColor_res ( NoTwoRedsFn ( RBTree_Node_recd_left ( destRBTree_Node ( RBTree_Node_recd_right ( destRBTree_Node ( insertFn v0 t ) ) ) ) ) ) ) ( and ( BoolColor_res ( NoTwoRedsFn ( RBTree_Node_recd_right ( destRBTree_Node ( RBTree_Node_recd_right ( dest [...]
+( assert ( = ( NoTwoRedsFn ( RBTree_Node_recd_left ( destRBTree_Node t ) ) ) ( ite ( is-RBTree_Leaf ( RBTree_Node_recd_left ( destRBTree_Node t ) ) ) ( BoolColor true ColorType_Black ) ( BoolColor ( and ( BoolColor_res ( NoTwoRedsFn ( RBTree_Node_recd_left ( destRBTree_Node ( RBTree_Node_recd_left ( destRBTree_Node t ) ) ) ) ) ) ( and ( BoolColor_res ( NoTwoRedsFn ( RBTree_Node_recd_right ( destRBTree_Node ( RBTree_Node_recd_left ( destRBTree_Node t ) ) ) ) ) ) ( or ( not ( = ( RBTree_No [...]
+( assert ( = ( NoTwoRedsFn ( RBTree_Node_recd_right ( destRBTree_Node t ) ) ) ( ite ( is-RBTree_Leaf ( RBTree_Node_recd_right ( destRBTree_Node t ) ) ) ( BoolColor true ColorType_Black ) ( BoolColor ( and ( BoolColor_res ( NoTwoRedsFn ( RBTree_Node_recd_left ( destRBTree_Node ( RBTree_Node_recd_right ( destRBTree_Node t ) ) ) ) ) ) ( and ( BoolColor_res ( NoTwoRedsFn ( RBTree_Node_recd_right ( destRBTree_Node ( RBTree_Node_recd_right ( destRBTree_Node t ) ) ) ) ) ) ( or ( not ( = ( RBTre [...]
+( assert ( = ( insertFn v0 ( RBTree_Node_recd_right ( destRBTree_Node t ) ) ) ( ite ( is-RBTree_Leaf ( insFn v0 ( RBTree_Node_recd_right ( destRBTree_Node t ) ) ) ) ( insFn v0 ( RBTree_Node_recd_right ( destRBTree_Node t ) ) ) ( RBTree_Node ( RBTree_Node_recd ColorType_Black ( RBTree_Node_recd_left ( destRBTree_Node ( insFn v0 ( RBTree_Node_recd_right ( destRBTree_Node t ) ) ) ) ) ( RBTree_Node_recd_elem ( destRBTree_Node ( insFn v0 ( RBTree_Node_recd_right ( destRBTree_Node t ) ) ) ) )  [...]
+( assert ( = ( NoTwoRedsFn ( insertFn v0 ( RBTree_Node_recd_right ( destRBTree_Node t ) ) ) ) ( ite ( is-RBTree_Leaf ( insertFn v0 ( RBTree_Node_recd_right ( destRBTree_Node t ) ) ) ) ( BoolColor true ColorType_Black ) ( BoolColor ( and ( BoolColor_res ( NoTwoRedsFn ( RBTree_Node_recd_left ( destRBTree_Node ( insertFn v0 ( RBTree_Node_recd_right ( destRBTree_Node t ) ) ) ) ) ) ) ( and ( BoolColor_res ( NoTwoRedsFn ( RBTree_Node_recd_right ( destRBTree_Node ( insertFn v0 ( RBTree_Node_rec [...]
+( assert ( = ( insertFn v0 ( RBTree_Node_recd_left ( destRBTree_Node t ) ) ) ( ite ( is-RBTree_Leaf ( insFn v0 ( RBTree_Node_recd_left ( destRBTree_Node t ) ) ) ) ( insFn v0 ( RBTree_Node_recd_left ( destRBTree_Node t ) ) ) ( RBTree_Node ( RBTree_Node_recd ColorType_Black ( RBTree_Node_recd_left ( destRBTree_Node ( insFn v0 ( RBTree_Node_recd_left ( destRBTree_Node t ) ) ) ) ) ( RBTree_Node_recd_elem ( destRBTree_Node ( insFn v0 ( RBTree_Node_recd_left ( destRBTree_Node t ) ) ) ) ) ( RBT [...]
+( assert ( = ( NoTwoRedsFn ( insertFn v0 ( RBTree_Node_recd_left ( destRBTree_Node t ) ) ) ) ( ite ( is-RBTree_Leaf ( insertFn v0 ( RBTree_Node_recd_left ( destRBTree_Node t ) ) ) ) ( BoolColor true ColorType_Black ) ( BoolColor ( and ( BoolColor_res ( NoTwoRedsFn ( RBTree_Node_recd_left ( destRBTree_Node ( insertFn v0 ( RBTree_Node_recd_left ( destRBTree_Node t ) ) ) ) ) ) ) ( and ( BoolColor_res ( NoTwoRedsFn ( RBTree_Node_recd_right ( destRBTree_Node ( insertFn v0 ( RBTree_Node_recd_l [...]
+( check-sat )
diff --git a/test/regress/regress0/bug512.minimized.smt2 b/test/regress/regress0/bug512.minimized.smt2
new file mode 100644
index 0000000..1a2aaf5
--- /dev/null
+++ b/test/regress/regress0/bug512.minimized.smt2
@@ -0,0 +1,8 @@
+; COMMAND-LINE: --tlimit-per 1000
+; EXPECT: unknown
+(set-logic UF)
+(declare-sort T 0)
+(declare-fun bool_2_U (Bool) T)
+(declare-fun U_2_bool (T) Bool)
+(assert (forall ((x T)) (= (bool_2_U (U_2_bool x)) x)))
+(check-sat)
diff --git a/test/regress/regress0/bug512.smt2 b/test/regress/regress0/bug512.smt2
new file mode 100644
index 0000000..1c8a062
--- /dev/null
+++ b/test/regress/regress0/bug512.smt2
@@ -0,0 +1,146 @@
+; COMMAND-LINE: --tlimit-per 2500 -iq
+; EXPECT: unknown
+; EXPECT: (:reason-unknown incomplete)
+; EXPECT: unsat
+(set-option :print-success false)
+(set-info :smt-lib-version 2.0)
+;(set-option :AUTO_CONFIG false)
+;(set-option :MODEL_HIDE_UNUSED_PARTITIONS false)
+;(set-option :MODEL_V2 true)
+;(set-option :ASYNC_COMMANDS false)
+;(set-option :PHASE_SELECTION 0)
+;(set-option :RESTART_STRATEGY 0)
+;(set-option :RESTART_FACTOR |1.5|)
+;(set-option :ARITH_RANDOM_INITIAL_VALUE true)
+;(set-option :CASE_SPLIT 3)
+;(set-option :DELAY_UNITS true)
+;(set-option :DELAY_UNITS_THRESHOLD 16)
+;(set-option :NNF_SK_HACK true)
+;(set-option :MBQI false)
+;(set-option :QI_EAGER_THRESHOLD 100)
+;(set-option :QI_COST |"(+ weight generation)"|)
+;(set-option :TYPE_CHECK true)
+;(set-option :BV_REFLECT true)
+; done setting options
+
+; Boogie universal background predicate
+; Copyright (c) 2004-2010, Microsoft Corp.
+(set-info :category "industrial")
+(declare-sort |T at U| 0)
+(declare-sort |T at T| 0)
+(declare-fun real_pow (Real Real) Real)
+(declare-fun UOrdering2 (|T at U| |T at U|) Bool)
+(declare-fun UOrdering3 (|T at T| |T at U| |T at U|) Bool)
+
+(declare-fun tickleBool (Bool) Bool)
+(assert (and (tickleBool true) (tickleBool false)))
+(declare-fun Ctor (T at T) Int)
+(declare-fun intType () T at T)
+(declare-fun realType () T at T)
+(declare-fun boolType () T at T)
+(declare-fun int_2_U (Int) T at U)
+(declare-fun U_2_int (T at U) Int)
+(declare-fun type (T at U) T at T)
+(declare-fun real_2_U (Real) T at U)
+(declare-fun U_2_real (T at U) Real)
+(declare-fun bool_2_U (Bool) T at U)
+(declare-fun U_2_bool (T at U) Bool)
+(declare-fun %lbl%+67 () Bool)
+(declare-fun i at 0 () Int)
+(declare-fun x@@5 () Int)
+(declare-fun y@@1 () Int)
+(declare-fun i at 1 () Int)
+(declare-fun %lbl%@186 () Bool)
+(declare-fun %lbl%+69 () Bool)
+(declare-fun %lbl%@157 () Bool)
+(declare-fun %lbl%+65 () Bool)
+(declare-fun %lbl%+63 () Bool)
+(declare-fun %lbl%@125 () Bool)
+(declare-fun %lbl%+97 () Bool)
+(assert (and
+(= (Ctor intType) 0)
+(= (Ctor realType) 1)
+(= (Ctor boolType) 2)
+(forall ((arg0 Int) ) (! (= (U_2_int (int_2_U arg0)) arg0)
+ :qid |typeInv:U_2_int|
+ :pattern ( (int_2_U arg0))
+))
+(forall ((x T at U) ) (! (=> (= (type x) intType) (= (int_2_U (U_2_int x)) x))
+ :qid |cast:U_2_int|
+ :pattern ( (U_2_int x))
+))
+(forall ((arg0@@0 Int) ) (! (= (type (int_2_U arg0@@0)) intType)
+ :qid |funType:int_2_U|
+ :pattern ( (int_2_U arg0@@0))
+))
+(forall ((arg0@@1 Real) ) (! (= (U_2_real (real_2_U arg0@@1)) arg0@@1)
+ :qid |typeInv:U_2_real|
+ :pattern ( (real_2_U arg0@@1))
+))
+(forall ((x@@0 T at U) ) (! (=> (= (type x@@0) realType) (= (real_2_U (U_2_real x@@0)) x@@0))
+ :qid |cast:U_2_real|
+ :pattern ( (U_2_real x@@0))
+))
+(forall ((arg0@@2 Real) ) (! (= (type (real_2_U arg0@@2)) realType)
+ :qid |funType:real_2_U|
+ :pattern ( (real_2_U arg0@@2))
+))
+(forall ((arg0@@3 Bool) ) (! (= (U_2_bool (bool_2_U arg0@@3)) arg0@@3)
+ :qid |typeInv:U_2_bool|
+ :pattern ( (bool_2_U arg0@@3))
+))
+(forall ((x@@1 T at U) ) (! (=> (= (type x@@1) boolType) (= (bool_2_U (U_2_bool x@@1)) x@@1))
+ :qid |cast:U_2_bool|
+ :pattern ( (U_2_bool x@@1))
+))
+(forall ((arg0@@4 Bool) ) (! (= (type (bool_2_U arg0@@4)) boolType)
+ :qid |funType:bool_2_U|
+ :pattern ( (bool_2_U arg0@@4))
+))))
+(assert (forall ((x@@2 T at U) ) (! (UOrdering2 x@@2 x@@2)
+ :qid |bg:subtype-refl|
+ :no-pattern (U_2_int x@@2)
+ :no-pattern (U_2_bool x@@2)
+)))
+(assert (forall ((x@@3 T at U) (y T at U) (z T at U) ) (! (let ((alpha (type x@@3)))
+(=> (and
+(= (type y) alpha)
+(= (type z) alpha)
+(UOrdering2 x@@3 y)
+(UOrdering2 y z)) (UOrdering2 x@@3 z)))
+ :qid |bg:subtype-trans|
+ :pattern ( (UOrdering2 x@@3 y) (UOrdering2 y z))
+)))
+(assert (forall ((x@@4 T at U) (y@@0 T at U) ) (! (let ((alpha@@0 (type x@@4)))
+(=> (= (type y@@0) alpha@@0) (=> (and
+(UOrdering2 x@@4 y@@0)
+(UOrdering2 y@@0 x@@4)) (= x@@4 y@@0))))
+ :qid |bg:subtype-antisymm|
+ :pattern ( (UOrdering2 x@@4 y@@0) (UOrdering2 y@@0 x@@4))
+)))
+(push 1)
+(set-info :boogie-vc-id foo)
+(assert (not
+(let ((anon3_LoopBody_correct (=> (! (and %lbl%+67 true) :lblpos +67) (=> (and
+(< i at 0 (+ x@@5 y@@1))
+(= i at 1 (+ i at 0 1))) (and
+(! (or %lbl%@186 (<= i at 1 (+ x@@5 y@@1))) :lblneg @186)
+(=> (<= i at 1 (+ x@@5 y@@1)) true))))))
+(let ((anon3_LoopDone_correct (=> (! (and %lbl%+69 true) :lblpos +69) (=> (<= (+ x@@5 y@@1) i at 0) (and
+(! (or %lbl%@157 (= i at 0 (- x@@5 y@@1))) :lblneg @157)
+(=> (= i at 0 (- x@@5 y@@1)) true))))))
+(let ((anon3_LoopHead_correct (=> (! (and %lbl%+65 true) :lblpos +65) (=> (<= i at 0 (+ x@@5 y@@1)) (and
+anon3_LoopDone_correct
+anon3_LoopBody_correct)))))
+(let ((anon0_correct (=> (! (and %lbl%+63 true) :lblpos +63) (and
+(! (or %lbl%@125 (<= x@@5 (+ x@@5 y@@1))) :lblneg @125)
+(=> (<= x@@5 (+ x@@5 y@@1)) anon3_LoopHead_correct)))))
+(let ((PreconditionGeneratedEntry_correct (=> (! (and %lbl%+97 true) :lblpos +97) (=> (>= y@@1 0) anon0_correct))))
+PreconditionGeneratedEntry_correct)))))
+))
+(check-sat)
+(get-info :reason-unknown)
+;(labels)
+(assert %lbl%@157)
+(check-sat)
+(pop 1)
diff --git a/test/regress/regress0/bug516.smt2 b/test/regress/regress0/bug516.smt2
new file mode 100644
index 0000000..a01eb97
--- /dev/null
+++ b/test/regress/regress0/bug516.smt2
@@ -0,0 +1,15 @@
+; COMMAND-LINE: --finite-model-find --fmf-bound-int
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(set-option :incremental true)
+(declare-fun P (Int) Bool)
+(declare-fun ten () Int)
+
+(assert (forall ((x Int)) (=> (<= 1 x ten) (P x))))
+
+(push)
+(assert (= ten 10))
+
+(check-sat)
+(pop)
diff --git a/test/regress/regress0/bug520.smt2 b/test/regress/regress0/bug520.smt2
new file mode 100644
index 0000000..4bdb968
--- /dev/null
+++ b/test/regress/regress0/bug520.smt2
@@ -0,0 +1,173 @@
+; Automatically generated by SBV. Do not edit.
+(set-option :produce-models true)
+(set-logic QF_UFBV)
+(set-info :status sat)
+; --- uninterpreted sorts ---
+; --- literal constants ---
+(define-fun s_2 () Bool false)
+(define-fun s_1 () Bool true)
+(define-fun s77 () (_ BitVec 8) #x00)
+(define-fun s78 () (_ BitVec 8) #x04)
+(define-fun s81 () (_ BitVec 8) #x01)
+(define-fun s83 () (_ BitVec 8) #xff)
+; --- skolem constants ---
+(declare-fun s0 () (_ BitVec 8))
+(declare-fun s1 () (_ BitVec 8))
+(declare-fun s2 () (_ BitVec 8))
+(declare-fun s3 () Bool)
+(declare-fun s4 () (_ BitVec 8))
+(declare-fun s5 () Bool)
+(declare-fun s6 () (_ BitVec 8))
+(declare-fun s7 () Bool)
+(declare-fun s8 () (_ BitVec 8))
+(declare-fun s9 () Bool)
+(declare-fun s10 () (_ BitVec 8))
+(declare-fun s11 () Bool)
+(declare-fun s12 () (_ BitVec 8))
+(declare-fun s13 () Bool)
+(declare-fun s14 () (_ BitVec 8))
+(declare-fun s15 () Bool)
+(declare-fun s16 () (_ BitVec 8))
+(declare-fun s17 () Bool)
+(declare-fun s18 () (_ BitVec 8))
+(declare-fun s19 () Bool)
+(declare-fun s20 () (_ BitVec 8))
+(declare-fun s21 () Bool)
+(declare-fun s22 () (_ BitVec 8))
+(declare-fun s23 () Bool)
+(declare-fun s24 () (_ BitVec 8))
+(declare-fun s25 () Bool)
+(declare-fun s26 () (_ BitVec 8))
+(declare-fun s27 () Bool)
+(declare-fun s28 () (_ BitVec 8))
+(declare-fun s29 () Bool)
+(declare-fun s30 () (_ BitVec 8))
+(declare-fun s31 () Bool)
+(declare-fun s32 () (_ BitVec 8))
+(declare-fun s33 () Bool)
+(declare-fun s34 () (_ BitVec 8))
+(declare-fun s35 () Bool)
+(declare-fun s36 () (_ BitVec 8))
+(declare-fun s37 () Bool)
+(declare-fun s38 () (_ BitVec 8))
+(declare-fun s39 () Bool)
+(declare-fun s40 () (_ BitVec 8))
+(declare-fun s41 () Bool)
+(declare-fun s42 () (_ BitVec 8))
+; --- constant tables ---
+; --- skolemized tables ---
+(declare-fun table0 ((_ BitVec 8)) (_ BitVec 8))
+(declare-fun table1 ((_ BitVec 8)) Bool)
+(declare-fun table2 ((_ BitVec 8)) (_ BitVec 8))
+(declare-fun table3 ((_ BitVec 8)) Bool)
+; --- arrays ---
+; --- uninterpreted constants ---
+; --- user given axioms ---
+; --- formula ---
+(assert ; no quantifiers
+   (let ((s43 (and s3 s5)))
+   (let ((s44 (or s3 s5)))
+   (let ((s45 (not s44)))
+   (let ((s46 (= (bvcomp s4 s6) #b1)))
+   (let ((s47 (and s45 s46)))
+   (let ((s48 (or s43 s47)))
+   (let ((s49 (and s11 s13)))
+   (let ((s50 (or s11 s13)))
+   (let ((s51 (not s50)))
+   (let ((s52 (= (bvcomp s12 s14) #b1)))
+   (let ((s53 (and s51 s52)))
+   (let ((s54 (or s49 s53)))
+   (let ((s55 (and s19 s21)))
+   (let ((s56 (or s19 s21)))
+   (let ((s57 (not s56)))
+   (let ((s58 (= (bvcomp s20 s22) #b1)))
+   (let ((s59 (and s57 s58)))
+   (let ((s60 (or s55 s59)))
+   (let ((s61 (and s27 s29)))
+   (let ((s62 (or s27 s29)))
+   (let ((s63 (not s62)))
+   (let ((s64 (= (bvcomp s28 s30) #b1)))
+   (let ((s65 (and s63 s64)))
+   (let ((s66 (or s61 s65)))
+   (let ((s67 (and s35 s37)))
+   (let ((s68 (or s35 s37)))
+   (let ((s69 (not s68)))
+   (let ((s70 (= (bvcomp s36 s38) #b1)))
+   (let ((s71 (and s69 s70)))
+   (let ((s72 (or s67 s71)))
+   (let ((s73 (and s66 s72)))
+   (let ((s74 (and s60 s73)))
+   (let ((s75 (and s54 s74)))
+   (let ((s76 (and s48 s75)))
+   (let ((s79 (bvurem s0 s78)))
+   (let ((s80 (not (= (bvcomp s77 s79) #b1))))
+   (let ((s82 (ite s80 s81 s77)))
+   (let ((s84 (= (bvcomp s82 s83) #b1)))
+   (let ((s85 (bvadd s78 s79)))
+   (let ((s86 (ite s84 s85 s79)))
+   (let ((s87 (ite (bvule #x04 s86) s77 (table0 s86))))
+   (let ((s88 (= (bvcomp s8 s87) #b1)))
+   (let ((s89 (ite (bvule #x04 s86) s_2 (table1 s86))))
+   (let ((s90 (= s7 s89)))
+   (let ((s91 (ite (bvule #x04 s86) s77 (table2 s86))))
+   (let ((s92 (= (bvcomp s10 s91) #b1)))
+   (let ((s93 (ite (bvule #x04 s86) s_2 (table3 s86))))
+   (let ((s94 (= s9 s93)))
+   (let ((s95 (and s92 s94)))
+   (let ((s96 (and s90 s95)))
+   (let ((s97 (and s88 s96)))
+   (let ((s98 (and s7 s9)))
+   (let ((s99 (or s7 s9)))
+   (let ((s100 (not s99)))
+   (let ((s101 (= (bvcomp s8 s10) #b1)))
+   (let ((s102 (and s100 s101)))
+   (let ((s103 (or s98 s102)))
+   (let ((s104 (and s15 s17)))
+   (let ((s105 (or s15 s17)))
+   (let ((s106 (not s105)))
+   (let ((s107 (= (bvcomp s16 s18) #b1)))
+   (let ((s108 (and s106 s107)))
+   (let ((s109 (or s104 s108)))
+   (let ((s110 (and s23 s25)))
+   (let ((s111 (or s23 s25)))
+   (let ((s112 (not s111)))
+   (let ((s113 (= (bvcomp s24 s26) #b1)))
+   (let ((s114 (and s112 s113)))
+   (let ((s115 (or s110 s114)))
+   (let ((s116 (and s31 s33)))
+   (let ((s117 (or s31 s33)))
+   (let ((s118 (not s117)))
+   (let ((s119 (= (bvcomp s32 s34) #b1)))
+   (let ((s120 (and s118 s119)))
+   (let ((s121 (or s116 s120)))
+   (let ((s122 (and s39 s41)))
+   (let ((s123 (or s39 s41)))
+   (let ((s124 (not s123)))
+   (let ((s125 (= (bvcomp s40 s42) #b1)))
+   (let ((s126 (and s124 s125)))
+   (let ((s127 (or s122 s126)))
+   (let ((s128 (and s121 s127)))
+   (let ((s129 (and s115 s128)))
+   (let ((s130 (and s109 s129)))
+   (let ((s131 (and s103 s130)))
+   (let ((s132 (not s131)))
+   (let ((s133 (and s97 s132)))
+   (let ((s134 (and s76 s133)))
+   (and (= (table0 #x00) s12)
+        (= (table0 #x01) s20)
+        (= (table0 #x02) s28)
+        (= (table0 #x03) s36)
+        (= (table1 #x00) s11)
+        (= (table1 #x01) s19)
+        (= (table1 #x02) s27)
+        (= (table1 #x03) s35)
+        (= (table2 #x00) s14)
+        (= (table2 #x01) s22)
+        (= (table2 #x02) s30)
+        (= (table2 #x03) s38)
+        (= (table3 #x00) s13)
+        (= (table3 #x01) s21)
+        (= (table3 #x02) s29)
+        (= (table3 #x03) s37)
+        s134))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+(check-sat)
diff --git a/test/regress/regress0/bug521.minimized.smt2 b/test/regress/regress0/bug521.minimized.smt2
new file mode 100644
index 0000000..6751d40
--- /dev/null
+++ b/test/regress/regress0/bug521.minimized.smt2
@@ -0,0 +1,15 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(declare-fun _substvar_301_ () Bool)
+(declare-fun _substvar_300_ () Bool)
+(declare-fun group_size_x () (_ BitVec 32))
+(declare-fun _WRITE_OFFSET_$$p$1 at 1 () (_ BitVec 32))
+(declare-fun inline$_LOG_WRITE_$$p$1$_offset$1 at 0 () (_ BitVec 32))
+(declare-fun _WRITE_OFFSET_$$p$1 at 0 () (_ BitVec 32))
+(declare-fun group_id_x$1 () (_ BitVec 32))
+(declare-fun local_id_x$1 () (_ BitVec 32))
+(declare-fun inline$_LOG_WRITE_$$p$0$_offset$1 at 0 () (_ BitVec 32))
+(define-fun $foo () Bool (=> true (let ((inline$_LOG_WRITE_$$p$1$_LOG_WRITE_correct (=> true (=> true (=> (= _WRITE_OFFSET_$$p$1 at 1 (ite _substvar_300_ inline$_LOG_WRITE_$$p$1$_offset$1 at 0 _WRITE_OFFSET_$$p$1 at 0)) false))))) (let ((inline$_LOG_WRITE_$$p$1$Entry_correct (=> true (=> (= inline$_LOG_WRITE_$$p$1$_offset$1 at 0 (bvadd (bvadd (bvmul group_size_x group_id_x$1) local_id_x$1) #x00000001)) (=> true inline$_LOG_WRITE_$$p$1$_LOG_WRITE_correct))))) (let ((inline$$bugle_barrier$0$anon1_Else [...]
+(assert (not (=> true $foo)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/bug522.smt2 b/test/regress/regress0/bug522.smt2
new file mode 100644
index 0000000..3a9ea0e
--- /dev/null
+++ b/test/regress/regress0/bug522.smt2
@@ -0,0 +1,14 @@
+; EXPECT: sat
+; EXPECT: sat
+(set-option :incremental "true")
+(set-logic QF_UF)
+
+(push 1)
+(declare-sort U 0)
+(declare-fun x () U)
+(declare-fun y () U)
+(assert (= x y))
+(check-sat)
+(pop 1)
+
+(check-sat)
diff --git a/test/regress/regress0/bug528a.smt2 b/test/regress/regress0/bug528a.smt2
new file mode 100644
index 0000000..fb48994
--- /dev/null
+++ b/test/regress/regress0/bug528a.smt2
@@ -0,0 +1,8 @@
+; EXPECT: unsat
+; COMMAND-LINE: --incremental --repeat-simp
+(set-logic QF_LIA)
+(declare-fun i () Int)
+(assert (ite (= i 0) false true))
+(push 1)
+(assert (= i 0))
+(check-sat)
diff --git a/test/regress/regress0/bug541.smt2 b/test/regress/regress0/bug541.smt2
new file mode 100644
index 0000000..4828239
--- /dev/null
+++ b/test/regress/regress0/bug541.smt2
@@ -0,0 +1,6 @@
+; EXPECT: unsat
+(set-logic ALL_SUPPORTED)
+(declare-datatypes (T1 T2) ((Pair (mk-pair (first T1) (second T2)))))
+(assert (= (mk-pair 0.0 0.0) (mk-pair 1.5 2.5)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/bug543.smt2 b/test/regress/regress0/bug543.smt2
new file mode 100644
index 0000000..9155de7
--- /dev/null
+++ b/test/regress/regress0/bug543.smt2
@@ -0,0 +1,20 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+(set-option :produce-models true)
+(set-logic QF_ALL_SUPPORTED)
+(declare-fun _substvar_1807_ () Bool)
+(declare-fun local_id_x$1 () (_ BitVec 32))
+(declare-fun local_id_x$2 () (_ BitVec 32))
+(declare-fun $$_ZZ19bitonic_sort_kernelPfjjE7sh_data at 5 () (Array Bool (Array (_ BitVec 32) (_ BitVec 32))))
+(declare-fun $$_ZZ19bitonic_sort_kernelPfjjE7sh_data () (Array Bool (Array (_ BitVec 32) (_ BitVec 32))))
+(declare-fun $0$1 at 2 () (_ BitVec 32))
+(declare-fun $$_ZZ19bitonic_sort_kernelPfjjE7sh_data at 0 () (Array Bool (Array (_ BitVec 32) (_ BitVec 32))))
+(declare-fun v1$1 at 0 () (_ BitVec 32))
+(declare-fun $$_ZZ19bitonic_sort_kernelPfjjE7sh_data at 1 () (Array Bool (Array (_ BitVec 32) (_ BitVec 32))))
+(declare-fun v1$2 at 0 () (_ BitVec 32))
+(assert (not (= #b1 #b0)))
+(define-fun $_Z19bitonic_sort_kernelPfjj () Bool (=> true (let ((__partitioned_block_$truebb_0$7_correct (=> true (=> true (=> (and true true (= $$_ZZ19bitonic_sort_kernelPfjjE7sh_data at 5 (store $$_ZZ19bitonic_sort_kernelPfjjE7sh_data true (store (select $$_ZZ19bitonic_sort_kernelPfjjE7sh_data true) local_id_x$1 $0$1 at 2))) true true) false))))) (let ((inline$_UPDATE_WRITE_READ_BENIGN_FLAG_$$_ZZ19bitonic_sort_kernelPfjjE7sh_data$1$_UPDATE_BENIGN_FLAG_correct (=> true (=> true __partitioned_ [...]
+(push 1)
+(assert (not (=> true $_Z19bitonic_sort_kernelPfjj)))
+(check-sat)
+
diff --git a/test/regress/regress0/bug544.smt2 b/test/regress/regress0/bug544.smt2
new file mode 100644
index 0000000..ec2ef00
--- /dev/null
+++ b/test/regress/regress0/bug544.smt2
@@ -0,0 +1,10 @@
+; EXPECT: sat
+; EXPECT: (((not (select a x)) false))
+(set-option :produce-models true)
+(set-logic QF_AUFLIA)
+(declare-sort U 0)
+(declare-fun x () U)
+(declare-fun a () (Array U Bool))
+(assert (select a x))
+(check-sat)
+(get-value ((not (select a x))))
diff --git a/test/regress/regress0/bug548a.smt2 b/test/regress/regress0/bug548a.smt2
new file mode 100644
index 0000000..75d82d9
--- /dev/null
+++ b/test/regress/regress0/bug548a.smt2
@@ -0,0 +1,17 @@
+; COMMAND-LINE: --rewrite-divk --tlimit 1000
+; EXPECT: unknown
+(set-logic AUFLIA)
+(declare-fun f (Int) Int)
+
+
+; instantiated version : cvc4 answers sat
+;(assert (= (f 1) (div 1 10)))
+;(assert (= (f 11) (div 11 10)))
+
+; cvc4 answers unsat, should be "sat", cvc4 expected to timeout or answer "unknown"
+(assert (forall ((x Int)) (= (f x) (div x 10))))
+
+(assert (= (f 1) 0))
+(assert (= (f 11) 1))
+
+(check-sat)
diff --git a/test/regress/regress0/bug567.smt2 b/test/regress/regress0/bug567.smt2
new file mode 100644
index 0000000..37403d8
--- /dev/null
+++ b/test/regress/regress0/bug567.smt2
@@ -0,0 +1,48 @@
+(set-logic ALL_SUPPORTED)
+; COMMAND-LINE: --incremental
+; EXPECT: unknown
+; EXPECT: unsat
+; EXPECT: unknown
+(declare-datatypes () ((OptInt0 (Some (value0 Int)) (None))))
+(declare-datatypes () ((List0 (Cons (head0 Int) (tail0 List0)) (Nil))))
+
+(declare-fun errorValue2 () Bool)
+(declare-fun errorValue1 () Bool)
+
+
+
+
+
+(declare-fun size (List0) Int)
+(declare-fun mergeInto (List0 List0) List0)
+(declare-fun isSorted (List0) Bool)
+(declare-fun buggySortedIns (Int List0) List0)
+(declare-fun sortedIns (Int List0) List0)
+(declare-fun sort (List0) List0)
+(declare-fun contents (List0) (Set Int))
+
+(assert (forall ((l List0)) (! (= (size l) (ite (is-Nil l) 0 (+ 1 (size (tail0 l))))) :pattern ((size l)))))
+(assert (forall ((l1 List0) (l2 List0)) (! (= (mergeInto l1 l2) (ite (is-Nil l1) l2 (mergeInto (tail0 l1) (sortedIns (head0 l1) l2)))) :pattern ((mergeInto l1 l2)))))
+(assert (forall ((l2 List0)) (! (= (isSorted l2) (ite (is-Nil l2) true (ite (and (is-Cons l2) (is-Nil (tail0 l2))) true (ite (and (is-Cons l2) (is-Cons (tail0 l2))) (and (<= (head0 l2) (head0 (tail0 l2))) (isSorted (Cons (head0 (tail0 l2)) (tail0 (tail0 l2))))) errorValue1)))) :pattern ((isSorted l2)))))
+(assert (forall ((l4 List0) (e1 Int)) (! (= (buggySortedIns e1 l4) (ite (is-Nil l4) (Cons e1 Nil) (ite (<= (head0 l4) e1) (Cons (head0 l4) (buggySortedIns e1 (tail0 l4))) (Cons e1 l4)))) :pattern ((buggySortedIns e1 l4)))))
+(assert (forall ((l3 List0) (e Int)) (! (= (sortedIns e l3) (ite (is-Nil l3) (Cons e Nil) (ite (<= (head0 l3) e) (Cons (head0 l3) (sortedIns e (tail0 l3))) (Cons e l3)))) :pattern ((sortedIns e l3)))))
+(assert (forall ((l5 List0)) (! (= (sort l5) (ite (is-Nil l5) Nil (sortedIns (head0 l5) (sort (tail0 l5))))) :pattern ((sort l5)))))
+(assert (forall ((l1 List0)) (! (= (contents l1) (ite (is-Nil l1) (as emptyset (Set Int)) (union (contents (tail0 l1)) (singleton (head0 l1))))) :pattern ((contents l1)))))
+
+
+
+(push)
+(assert (forall ((l List0)) (not (let ((result (ite (is-Nil l) 0 (+ 1 (size (tail0 l)))))) (>= result 0)))))
+(check-sat)
+(pop)
+
+(push)
+(assert (forall ((l2 List0)) (not (not (and (not (is-Nil l2)) (not (and (is-Cons l2) (is-Nil (tail0 l2)))) (not (and (is-Cons l2) (is-Cons (tail0 l2)))))))))
+(check-sat)
+(pop)
+
+(push)
+(assert (forall ((l4 List0) (e1 Int)) (not (let ((result2 (ite (is-Nil l4) (Cons e1 Nil) (ite (<= (head0 l4) e1) (Cons (head0 l4) (buggySortedIns e1 (tail0 l4))) (Cons e1 l4))))) (and (= (contents result2) (union (contents l4) (singleton e1))) (isSorted result2) (= (size result2) (+ (size l4) 1)))))))
+(check-sat)
+(pop)
+
diff --git a/test/regress/regress0/bug576.smt2 b/test/regress/regress0/bug576.smt2
new file mode 100644
index 0000000..c9ca241
--- /dev/null
+++ b/test/regress/regress0/bug576.smt2
@@ -0,0 +1,27 @@
+(set-logic QF_UF)
+(set-info :status sat)
+(declare-sort var 0)
+(declare-sort reg 0)
+(declare-fun var5_1 () var)
+(declare-fun b_1 () var)
+(declare-fun a_1 () var)
+(declare-fun r0 () reg)
+(declare-fun r1 () reg)
+(declare-fun r2 () reg)
+(declare-fun r3 () reg)
+(assert (not (= r0 r1)))
+(assert (not (= r0 r2)))
+(assert (not (= r0 r3)))
+(assert (not (= r1 r2)))
+(assert (not (= r1 r3)))
+(assert (not (= r2 r3)))
+(declare-fun assign (var) reg)
+(assert (or (= (assign var5_1) r0) (= (assign var5_1) r1) (= (assign var5_1) r2) (= (assign var5_1) r3) ))
+(assert (or (= (assign b_1) r1) ))
+(assert (or (= (assign a_1) r0) ))
+(assert (not (= (assign b_1) (assign a_1))))
+(assert (= (assign var5_1) r0))
+(assert (= (assign b_1) r1))
+(assert (= (assign a_1) r0))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/bug576a.smt2 b/test/regress/regress0/bug576a.smt2
new file mode 100644
index 0000000..00487a1
--- /dev/null
+++ b/test/regress/regress0/bug576a.smt2
@@ -0,0 +1,48 @@
+(set-logic QF_UF)
+(set-info :status sat)
+(declare-sort var 0)
+(declare-sort reg 0)
+(declare-fun a1_1 () var)
+(declare-fun a2_1 () var)
+(declare-fun c_3 () var)
+(declare-fun c_4 () var)
+(declare-fun b_3 () var)
+(declare-fun r0 () reg)
+(declare-fun r1 () reg)
+(declare-fun r2 () reg)
+(declare-fun r3 () reg)
+(declare-fun r4 () reg)
+(declare-fun r6 () reg)
+(assert (not (= r0 r1)))
+(assert (not (= r0 r2)))
+(assert (not (= r0 r3)))
+(assert (not (= r0 r4)))
+(assert (not (= r0 r6)))
+(assert (not (= r1 r2)))
+(assert (not (= r1 r3)))
+(assert (not (= r1 r4)))
+(assert (not (= r1 r6)))
+(assert (not (= r2 r3)))
+(assert (not (= r2 r4)))
+(assert (not (= r2 r6)))
+(assert (not (= r3 r4)))
+(assert (not (= r3 r6)))
+(assert (not (= r4 r6)))
+(declare-fun assign (var) reg)
+(assert (or (= (assign a1_1) r0) (= (assign a1_1) r1) (= (assign a1_1) r2) (= (assign a1_1) r3) (= (assign a1_1) r4) (= (assign a1_1) r6) ))
+(assert (or (= (assign a2_1) r0) (= (assign a2_1) r1) (= (assign a2_1) r2) (= (assign a2_1) r3) (= (assign a2_1) r4) (= (assign a2_1) r6) ))
+(assert (or (= (assign c_3) r0) (= (assign c_3) r1) (= (assign c_3) r2) (= (assign c_3) r3) (= (assign c_3) r4) (= (assign c_3) r6) ))
+(assert (or (= (assign c_4) r0) (= (assign c_4) r1) (= (assign c_4) r2) (= (assign c_4) r3) (= (assign c_4) r4) (= (assign c_4) r6) ))
+(assert (or (= (assign b_3) r0) (= (assign b_3) r1) (= (assign b_3) r2) (= (assign b_3) r3) (= (assign b_3) r4) (= (assign b_3) r6) ))
+(assert (not (= (assign a1_1) (assign c_4))))
+(assert (not (= (assign a2_1) (assign c_3))))
+(assert (not (= (assign a2_1) (assign b_3))))
+(assert (not (= (assign c_3) (assign b_3))))
+(assert (not (= (assign c_4) (assign b_3))))
+(assert (= (assign a1_1) r0))
+(assert (= (assign a2_1) r2))
+(assert (= (assign c_3) r1))
+(assert (= (assign c_4) r1))
+(assert (= (assign b_3) r0))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/bug578.smt2 b/test/regress/regress0/bug578.smt2
new file mode 100644
index 0000000..a4d53f8
--- /dev/null
+++ b/test/regress/regress0/bug578.smt2
@@ -0,0 +1,7 @@
+(set-info :smt-lib-version 2.0)
+(set-info :status sat)
+(set-logic QF_BV)
+(declare-fun v0 () (_ BitVec 1))
+(declare-fun v1 () (_ BitVec 10))
+(assert (= v1 ((_ repeat 10) v0)))
+(check-sat)
diff --git a/test/regress/regress0/bug585.cvc b/test/regress/regress0/bug585.cvc
new file mode 100644
index 0000000..825cb00
--- /dev/null
+++ b/test/regress/regress0/bug585.cvc
@@ -0,0 +1,9 @@
+% EXPECT: sat
+
+Cache: TYPE = ARRAY [0..100] OF [# addr: INT, data: REAL #];
+State: TYPE = [# pc: INT, cache: Cache #];
+
+s0: State;
+s1: State = s0 WITH .cache[10].data := 2/3;
+
+CHECKSAT;
diff --git a/test/regress/regress0/bug586.cvc b/test/regress/regress0/bug586.cvc
new file mode 100644
index 0000000..7f6f247
--- /dev/null
+++ b/test/regress/regress0/bug586.cvc
@@ -0,0 +1,26 @@
+% EXPECT: sat
+%%%
+%%% DATA TYPES DEFINITIONS
+%%%
+
+%%% the roles
+DATATYPE
+	role = r1 | r2 | r3
+	%%% adding two more roles ( | r4 | r5 ) to the type, but never referring to them make things work
+END;
+
+%%% structured datatypes
+roleSet: TYPE = SET OF role;
+roleGammaSet: TYPE = [# pos: roleSet, neg: roleSet #];
+delta: TYPE = ARRAY role OF roleGammaSet;
+
+emptyRoleSet : roleSet;
+ASSERT emptyRoleSet = {} :: SET OF role;
+
+d: delta;
+ASSERT d[r3].pos = {r1};
+ASSERT d[r2].pos = {r2,r3};
+ASSERT d[r2].neg = {r1};
+
+CHECKSAT;
+%COUNTEREXAMPLE;
diff --git a/test/regress/regress0/bug590.smt2.expect b/test/regress/regress0/bug590.smt2.expect
new file mode 100644
index 0000000..b24a807
--- /dev/null
+++ b/test/regress/regress0/bug590.smt2.expect
@@ -0,0 +1,2 @@
+% EXPECT: unknown
+% EXPECT: ((charlst2 ((as const (Array Int String)) "")))
diff --git a/test/regress/regress0/bug593.smt2 b/test/regress/regress0/bug593.smt2
new file mode 100644
index 0000000..2c28bb4
--- /dev/null
+++ b/test/regress/regress0/bug593.smt2
@@ -0,0 +1,20 @@
+(set-logic QF_UFBV)
+(set-info :status unsat)
+
+(declare-sort A 0)
+
+(declare-fun f ((_ BitVec 1)) A)
+(declare-fun g (A) (_ BitVec 1))
+
+(declare-fun x () A)
+(declare-fun y () A)
+(declare-fun z () A)
+ 
+(assert (and
+ 
+(not (= (f (g x)) (f (g y))))
+(not (= (f (g x)) (f (g z))))
+(not (= (f (g y)) (f (g z))))))
+  
+(check-sat)
+
diff --git a/test/regress/regress0/bug595.cvc b/test/regress/regress0/bug595.cvc
new file mode 100644
index 0000000..c11cfb6
--- /dev/null
+++ b/test/regress/regress0/bug595.cvc
@@ -0,0 +1,7 @@
+% EXPECT: sat
+
+f : INT -> [# i:INT, b:INT #];
+a : INT;
+ASSERT f(a) /= (# i := 0, b := 0 #);
+
+CHECKSAT;
diff --git a/test/regress/regress0/bug596.cvc b/test/regress/regress0/bug596.cvc
new file mode 100644
index 0000000..8e1f6f7
--- /dev/null
+++ b/test/regress/regress0/bug596.cvc
@@ -0,0 +1,7 @@
+% EXPECT: sat
+
+f : INT -> [# i:INT, b:BOOLEAN #];
+a : INT;
+ASSERT f(a) /= (# i := 0, b := FALSE #);
+
+CHECKSAT;
diff --git a/test/regress/regress0/bug596b.cvc b/test/regress/regress0/bug596b.cvc
new file mode 100644
index 0000000..4765e03
--- /dev/null
+++ b/test/regress/regress0/bug596b.cvc
@@ -0,0 +1,7 @@
+% EXPECT: sat
+
+f : INT -> [ INT, BOOLEAN ];
+a : INT;
+ASSERT f(a) /= ( 0, FALSE );
+
+CHECKSAT;
diff --git a/test/regress/regress0/bug605.cvc b/test/regress/regress0/bug605.cvc
new file mode 100644
index 0000000..5644649
--- /dev/null
+++ b/test/regress/regress0/bug605.cvc
@@ -0,0 +1,30 @@
+% EXPECT: sat
+OPTION "produce-models";
+
+% GeoLocation
+GeoLocation: TYPE = [# longitude: INT, latitude: INT #];
+
+% Stationary object
+StationaryObject: TYPE = [# geoLoc: SET OF GeoLocation #];
+Facet: TYPE = [# base: StationaryObject #];
+
+Segment: TYPE = [# s_f: Facet #];
+A : TYPE = ARRAY INT OF Segment;
+a : A;
+
+p1: GeoLocation = (# longitude := 0, latitude := 0 #);
+
+s1: StationaryObject = (# geoLoc := {p1} #);
+
+
+f0: Facet = (# base := s1 #);
+
+
+init: (A, INT, Facet) -> BOOLEAN
+  = LAMBDA (v: A, i: INT, f: Facet): 
+    v[0].s_f = f;
+    
+    
+ASSERT (init(a, 2, f0));
+
+CHECKSAT TRUE;
diff --git a/test/regress/regress0/buggy-ite.smt2 b/test/regress/regress0/buggy-ite.smt2
new file mode 100644
index 0000000..79e91b5
--- /dev/null
+++ b/test/regress/regress0/buggy-ite.smt2
@@ -0,0 +1,13 @@
+; This was causing trouble in CVC4 r1434 due to mishandling of ITE
+; removal for PARAMETERIZED kinds.
+; Thanks to Andrew Reynolds for catching this.
+(set-logic QF_UF)
+(set-info :smt-lib-version 2.0)
+(set-info :status sat)
+(declare-sort U 0)
+(declare-fun a () U)
+(declare-fun c () Bool)
+(declare-fun g (U) Bool)
+(assert (g (ite c a a)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/bv/Makefile.am b/test/regress/regress0/bv/Makefile.am
new file mode 100644
index 0000000..dc87e10
--- /dev/null
+++ b/test/regress/regress0/bv/Makefile.am
@@ -0,0 +1,134 @@
+SUBDIRS = . core
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+
+# FIXME: Proof checking takes too long. Add this back.
+# 	fuzz15.delta01.smt 
+
+# Regression tests for SMT inputs
+SMT_TESTS = \
+	fuzz01.smt \
+	fuzz02.delta01.smt \
+	fuzz02.smt \
+	fuzz03.smt \
+	fuzz04.smt \
+	fuzz05.smt \
+	fuzz06.smt \
+	fuzz07.smt \
+	fuzz08.smt \
+	fuzz09.smt \
+	fuzz10.smt \
+	fuzz11.smt \
+	fuzz12.smt \
+	fuzz13.smt \
+	fuzz14.smt \
+	fuzz16.delta01.smt \
+	fuzz17.delta01.smt \
+	fuzz18.delta01.smt \
+	fuzz18.delta02.smt \
+	fuzz18.delta03.smt \
+	fuzz18.smt \
+	fuzz19.delta01.smt \
+	fuzz19.smt \
+	fuzz20.delta01.smt \
+	fuzz20.smt \
+	fuzz21.delta01.smt \
+	fuzz21.smt \
+	fuzz22.delta01.smt \
+	fuzz22.smt \
+	fuzz23.delta01.smt \
+	fuzz23.smt \
+	fuzz24.delta01.smt \
+	fuzz24.smt \
+	fuzz25.delta01.smt \
+	fuzz25.smt \
+	fuzz26.delta01.smt \
+	fuzz26.smt \
+	fuzz27.delta01.smt \
+	fuzz27.smt \
+	fuzz28.delta01.smt \
+	fuzz28.smt \
+	fuzz29.delta01.smt \
+	fuzz29.smt \
+	fuzz30.delta01.smt \
+	fuzz30.smt \
+	fuzz31.delta01.smt \
+	fuzz31.smt \
+	fuzz32.delta01.smt \
+	fuzz32.smt \
+	fuzz33.delta01.smt \
+	fuzz33.smt \
+	fuzz34.delta01.smt \
+	fuzz35.delta01.smt \
+	fuzz35.smt \
+	fuzz36.delta01.smt \
+	fuzz36.smt \
+	fuzz37.delta01.smt \
+	fuzz37.smt \
+	fuzz38.delta01.smt \
+	fuzz39.delta01.smt \
+	fuzz39.smt \
+	fuzz40.delta01.smt \
+	fuzz40.smt \
+	fuzz41.smt \
+	calc2_sec2_shifter_mult_bmc15.atlas.delta01.smt \
+	smtcompbug.smt \
+	unsound1.smt2 \
+	unsound1-reduced.smt2 \
+	bv2nat-ground.smt2 \
+	bv2nat-ground-c.smt2 \
+	cmu-rdk-3.smt2 \
+	bv2nat-simp-range.smt2 \
+	bv-int-collapse1.smt2 \
+	bv-int-collapse2.smt2 \
+	bv-int-collapse2-sat.smt2
+
+# This benchmark is currently disabled as it uses --check-proof
+# bench_38.delta.smt2
+
+# Regression tests for SMT2 inputs
+SMT2_TESTS = divtest.smt2
+
+# Regression tests for PL inputs
+CVC_TESTS = bvsimple.cvc sizecheck.cvc
+
+# Regression tests derived from bug reports
+BUG_TESTS = \
+	bug260a.smt \
+	bug260b.smt \
+	bug440.smt \
+	bug734.smt2 \
+	bug_extract_mult_leading_bit.smt2
+
+TESTS =	$(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(BUG_TESTS)
+
+EXTRA_DIST = $(TESTS) \
+	test00.smt \
+	bvcomp.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/bv/Makefile.in b/test/regress/regress0/bv/Makefile.in
new file mode 100644
index 0000000..c138c1e
--- /dev/null
+++ b/test/regress/regress0/bv/Makefile.in
@@ -0,0 +1,1842 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/bv
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+SUBDIRS = . core
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+
+# FIXME: Proof checking takes too long. Add this back.
+# 	fuzz15.delta01.smt 
+
+# Regression tests for SMT inputs
+SMT_TESTS = \
+	fuzz01.smt \
+	fuzz02.delta01.smt \
+	fuzz02.smt \
+	fuzz03.smt \
+	fuzz04.smt \
+	fuzz05.smt \
+	fuzz06.smt \
+	fuzz07.smt \
+	fuzz08.smt \
+	fuzz09.smt \
+	fuzz10.smt \
+	fuzz11.smt \
+	fuzz12.smt \
+	fuzz13.smt \
+	fuzz14.smt \
+	fuzz16.delta01.smt \
+	fuzz17.delta01.smt \
+	fuzz18.delta01.smt \
+	fuzz18.delta02.smt \
+	fuzz18.delta03.smt \
+	fuzz18.smt \
+	fuzz19.delta01.smt \
+	fuzz19.smt \
+	fuzz20.delta01.smt \
+	fuzz20.smt \
+	fuzz21.delta01.smt \
+	fuzz21.smt \
+	fuzz22.delta01.smt \
+	fuzz22.smt \
+	fuzz23.delta01.smt \
+	fuzz23.smt \
+	fuzz24.delta01.smt \
+	fuzz24.smt \
+	fuzz25.delta01.smt \
+	fuzz25.smt \
+	fuzz26.delta01.smt \
+	fuzz26.smt \
+	fuzz27.delta01.smt \
+	fuzz27.smt \
+	fuzz28.delta01.smt \
+	fuzz28.smt \
+	fuzz29.delta01.smt \
+	fuzz29.smt \
+	fuzz30.delta01.smt \
+	fuzz30.smt \
+	fuzz31.delta01.smt \
+	fuzz31.smt \
+	fuzz32.delta01.smt \
+	fuzz32.smt \
+	fuzz33.delta01.smt \
+	fuzz33.smt \
+	fuzz34.delta01.smt \
+	fuzz35.delta01.smt \
+	fuzz35.smt \
+	fuzz36.delta01.smt \
+	fuzz36.smt \
+	fuzz37.delta01.smt \
+	fuzz37.smt \
+	fuzz38.delta01.smt \
+	fuzz39.delta01.smt \
+	fuzz39.smt \
+	fuzz40.delta01.smt \
+	fuzz40.smt \
+	fuzz41.smt \
+	calc2_sec2_shifter_mult_bmc15.atlas.delta01.smt \
+	smtcompbug.smt \
+	unsound1.smt2 \
+	unsound1-reduced.smt2 \
+	bv2nat-ground.smt2 \
+	bv2nat-ground-c.smt2 \
+	cmu-rdk-3.smt2 \
+	bv2nat-simp-range.smt2 \
+	bv-int-collapse1.smt2 \
+	bv-int-collapse2.smt2 \
+	bv-int-collapse2-sat.smt2
+
+
+# This benchmark is currently disabled as it uses --check-proof
+# bench_38.delta.smt2
+
+# Regression tests for SMT2 inputs
+SMT2_TESTS = divtest.smt2
+
+# Regression tests for PL inputs
+CVC_TESTS = bvsimple.cvc sizecheck.cvc
+
+# Regression tests derived from bug reports
+BUG_TESTS = \
+	bug260a.smt \
+	bug260b.smt \
+	bug440.smt \
+	bug734.smt2 \
+	bug_extract_mult_leading_bit.smt2
+
+TESTS = $(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(BUG_TESTS)
+EXTRA_DIST = $(TESTS) \
+	test00.smt \
+	bvcomp.cvc
+
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/bv/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/bv/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+fuzz01.smt.log: fuzz01.smt
+	@p='fuzz01.smt'; \
+	b='fuzz01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz02.delta01.smt.log: fuzz02.delta01.smt
+	@p='fuzz02.delta01.smt'; \
+	b='fuzz02.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz02.smt.log: fuzz02.smt
+	@p='fuzz02.smt'; \
+	b='fuzz02.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz03.smt.log: fuzz03.smt
+	@p='fuzz03.smt'; \
+	b='fuzz03.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz04.smt.log: fuzz04.smt
+	@p='fuzz04.smt'; \
+	b='fuzz04.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz05.smt.log: fuzz05.smt
+	@p='fuzz05.smt'; \
+	b='fuzz05.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz06.smt.log: fuzz06.smt
+	@p='fuzz06.smt'; \
+	b='fuzz06.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz07.smt.log: fuzz07.smt
+	@p='fuzz07.smt'; \
+	b='fuzz07.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz08.smt.log: fuzz08.smt
+	@p='fuzz08.smt'; \
+	b='fuzz08.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz09.smt.log: fuzz09.smt
+	@p='fuzz09.smt'; \
+	b='fuzz09.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz10.smt.log: fuzz10.smt
+	@p='fuzz10.smt'; \
+	b='fuzz10.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz11.smt.log: fuzz11.smt
+	@p='fuzz11.smt'; \
+	b='fuzz11.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz12.smt.log: fuzz12.smt
+	@p='fuzz12.smt'; \
+	b='fuzz12.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz13.smt.log: fuzz13.smt
+	@p='fuzz13.smt'; \
+	b='fuzz13.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz14.smt.log: fuzz14.smt
+	@p='fuzz14.smt'; \
+	b='fuzz14.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz16.delta01.smt.log: fuzz16.delta01.smt
+	@p='fuzz16.delta01.smt'; \
+	b='fuzz16.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz17.delta01.smt.log: fuzz17.delta01.smt
+	@p='fuzz17.delta01.smt'; \
+	b='fuzz17.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz18.delta01.smt.log: fuzz18.delta01.smt
+	@p='fuzz18.delta01.smt'; \
+	b='fuzz18.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz18.delta02.smt.log: fuzz18.delta02.smt
+	@p='fuzz18.delta02.smt'; \
+	b='fuzz18.delta02.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz18.delta03.smt.log: fuzz18.delta03.smt
+	@p='fuzz18.delta03.smt'; \
+	b='fuzz18.delta03.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz18.smt.log: fuzz18.smt
+	@p='fuzz18.smt'; \
+	b='fuzz18.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz19.delta01.smt.log: fuzz19.delta01.smt
+	@p='fuzz19.delta01.smt'; \
+	b='fuzz19.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz19.smt.log: fuzz19.smt
+	@p='fuzz19.smt'; \
+	b='fuzz19.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz20.delta01.smt.log: fuzz20.delta01.smt
+	@p='fuzz20.delta01.smt'; \
+	b='fuzz20.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz20.smt.log: fuzz20.smt
+	@p='fuzz20.smt'; \
+	b='fuzz20.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz21.delta01.smt.log: fuzz21.delta01.smt
+	@p='fuzz21.delta01.smt'; \
+	b='fuzz21.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz21.smt.log: fuzz21.smt
+	@p='fuzz21.smt'; \
+	b='fuzz21.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz22.delta01.smt.log: fuzz22.delta01.smt
+	@p='fuzz22.delta01.smt'; \
+	b='fuzz22.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz22.smt.log: fuzz22.smt
+	@p='fuzz22.smt'; \
+	b='fuzz22.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz23.delta01.smt.log: fuzz23.delta01.smt
+	@p='fuzz23.delta01.smt'; \
+	b='fuzz23.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz23.smt.log: fuzz23.smt
+	@p='fuzz23.smt'; \
+	b='fuzz23.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz24.delta01.smt.log: fuzz24.delta01.smt
+	@p='fuzz24.delta01.smt'; \
+	b='fuzz24.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz24.smt.log: fuzz24.smt
+	@p='fuzz24.smt'; \
+	b='fuzz24.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz25.delta01.smt.log: fuzz25.delta01.smt
+	@p='fuzz25.delta01.smt'; \
+	b='fuzz25.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz25.smt.log: fuzz25.smt
+	@p='fuzz25.smt'; \
+	b='fuzz25.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz26.delta01.smt.log: fuzz26.delta01.smt
+	@p='fuzz26.delta01.smt'; \
+	b='fuzz26.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz26.smt.log: fuzz26.smt
+	@p='fuzz26.smt'; \
+	b='fuzz26.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz27.delta01.smt.log: fuzz27.delta01.smt
+	@p='fuzz27.delta01.smt'; \
+	b='fuzz27.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz27.smt.log: fuzz27.smt
+	@p='fuzz27.smt'; \
+	b='fuzz27.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz28.delta01.smt.log: fuzz28.delta01.smt
+	@p='fuzz28.delta01.smt'; \
+	b='fuzz28.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz28.smt.log: fuzz28.smt
+	@p='fuzz28.smt'; \
+	b='fuzz28.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz29.delta01.smt.log: fuzz29.delta01.smt
+	@p='fuzz29.delta01.smt'; \
+	b='fuzz29.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz29.smt.log: fuzz29.smt
+	@p='fuzz29.smt'; \
+	b='fuzz29.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz30.delta01.smt.log: fuzz30.delta01.smt
+	@p='fuzz30.delta01.smt'; \
+	b='fuzz30.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz30.smt.log: fuzz30.smt
+	@p='fuzz30.smt'; \
+	b='fuzz30.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz31.delta01.smt.log: fuzz31.delta01.smt
+	@p='fuzz31.delta01.smt'; \
+	b='fuzz31.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz31.smt.log: fuzz31.smt
+	@p='fuzz31.smt'; \
+	b='fuzz31.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz32.delta01.smt.log: fuzz32.delta01.smt
+	@p='fuzz32.delta01.smt'; \
+	b='fuzz32.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz32.smt.log: fuzz32.smt
+	@p='fuzz32.smt'; \
+	b='fuzz32.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz33.delta01.smt.log: fuzz33.delta01.smt
+	@p='fuzz33.delta01.smt'; \
+	b='fuzz33.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz33.smt.log: fuzz33.smt
+	@p='fuzz33.smt'; \
+	b='fuzz33.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz34.delta01.smt.log: fuzz34.delta01.smt
+	@p='fuzz34.delta01.smt'; \
+	b='fuzz34.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz35.delta01.smt.log: fuzz35.delta01.smt
+	@p='fuzz35.delta01.smt'; \
+	b='fuzz35.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz35.smt.log: fuzz35.smt
+	@p='fuzz35.smt'; \
+	b='fuzz35.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz36.delta01.smt.log: fuzz36.delta01.smt
+	@p='fuzz36.delta01.smt'; \
+	b='fuzz36.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz36.smt.log: fuzz36.smt
+	@p='fuzz36.smt'; \
+	b='fuzz36.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz37.delta01.smt.log: fuzz37.delta01.smt
+	@p='fuzz37.delta01.smt'; \
+	b='fuzz37.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz37.smt.log: fuzz37.smt
+	@p='fuzz37.smt'; \
+	b='fuzz37.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz38.delta01.smt.log: fuzz38.delta01.smt
+	@p='fuzz38.delta01.smt'; \
+	b='fuzz38.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz39.delta01.smt.log: fuzz39.delta01.smt
+	@p='fuzz39.delta01.smt'; \
+	b='fuzz39.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz39.smt.log: fuzz39.smt
+	@p='fuzz39.smt'; \
+	b='fuzz39.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz40.delta01.smt.log: fuzz40.delta01.smt
+	@p='fuzz40.delta01.smt'; \
+	b='fuzz40.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz40.smt.log: fuzz40.smt
+	@p='fuzz40.smt'; \
+	b='fuzz40.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz41.smt.log: fuzz41.smt
+	@p='fuzz41.smt'; \
+	b='fuzz41.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+calc2_sec2_shifter_mult_bmc15.atlas.delta01.smt.log: calc2_sec2_shifter_mult_bmc15.atlas.delta01.smt
+	@p='calc2_sec2_shifter_mult_bmc15.atlas.delta01.smt'; \
+	b='calc2_sec2_shifter_mult_bmc15.atlas.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+smtcompbug.smt.log: smtcompbug.smt
+	@p='smtcompbug.smt'; \
+	b='smtcompbug.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+unsound1.smt2.log: unsound1.smt2
+	@p='unsound1.smt2'; \
+	b='unsound1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+unsound1-reduced.smt2.log: unsound1-reduced.smt2
+	@p='unsound1-reduced.smt2'; \
+	b='unsound1-reduced.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bv2nat-ground.smt2.log: bv2nat-ground.smt2
+	@p='bv2nat-ground.smt2'; \
+	b='bv2nat-ground.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bv2nat-ground-c.smt2.log: bv2nat-ground-c.smt2
+	@p='bv2nat-ground-c.smt2'; \
+	b='bv2nat-ground-c.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cmu-rdk-3.smt2.log: cmu-rdk-3.smt2
+	@p='cmu-rdk-3.smt2'; \
+	b='cmu-rdk-3.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bv2nat-simp-range.smt2.log: bv2nat-simp-range.smt2
+	@p='bv2nat-simp-range.smt2'; \
+	b='bv2nat-simp-range.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bv-int-collapse1.smt2.log: bv-int-collapse1.smt2
+	@p='bv-int-collapse1.smt2'; \
+	b='bv-int-collapse1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bv-int-collapse2.smt2.log: bv-int-collapse2.smt2
+	@p='bv-int-collapse2.smt2'; \
+	b='bv-int-collapse2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bv-int-collapse2-sat.smt2.log: bv-int-collapse2-sat.smt2
+	@p='bv-int-collapse2-sat.smt2'; \
+	b='bv-int-collapse2-sat.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+divtest.smt2.log: divtest.smt2
+	@p='divtest.smt2'; \
+	b='divtest.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvsimple.cvc.log: bvsimple.cvc
+	@p='bvsimple.cvc'; \
+	b='bvsimple.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sizecheck.cvc.log: sizecheck.cvc
+	@p='sizecheck.cvc'; \
+	b='sizecheck.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug260a.smt.log: bug260a.smt
+	@p='bug260a.smt'; \
+	b='bug260a.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug260b.smt.log: bug260b.smt
+	@p='bug260b.smt'; \
+	b='bug260b.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug440.smt.log: bug440.smt
+	@p='bug440.smt'; \
+	b='bug440.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug734.smt2.log: bug734.smt2
+	@p='bug734.smt2'; \
+	b='bug734.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug_extract_mult_leading_bit.smt2.log: bug_extract_mult_leading_bit.smt2
+	@p='bug_extract_mult_leading_bit.smt2'; \
+	b='bug_extract_mult_leading_bit.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/bv/bug260a.smt b/test/regress/regress0/bv/bug260a.smt
new file mode 100644
index 0000000..984c160
--- /dev/null
+++ b/test/regress/regress0/bv/bug260a.smt
@@ -0,0 +1,12 @@
+(benchmark B_
+:logic QF_BV
+:extrafuns ((a BitVec[32]))
+:status sat
+:formula
+(let (?n1 (extract[6:2] a))
+(let (?n2 bv0[3])
+(let (?n3 (extract[6:5] a))
+(let (?n4 (concat ?n2 ?n3))
+(flet ($n5 (= ?n1 ?n4))
+$n5
+))))))
diff --git a/test/regress/regress0/bv/bug260b.smt b/test/regress/regress0/bv/bug260b.smt
new file mode 100644
index 0000000..f185aba
--- /dev/null
+++ b/test/regress/regress0/bv/bug260b.smt
@@ -0,0 +1,12 @@
+(benchmark B_
+:logic QF_BV
+:extrafuns ((a BitVec[32]))
+:status sat
+:formula
+(let (?n1 bv0[5])
+(let (?n2 bv0[3])
+(let (?n3 (extract[6:5] a))
+(let (?n4 (concat ?n2 ?n3))
+(flet ($n5 (= ?n1 ?n4))
+$n5
+))))))
diff --git a/test/regress/regress0/bv/bug440.smt b/test/regress/regress0/bv/bug440.smt
new file mode 100644
index 0000000..57b5ea8
--- /dev/null
+++ b/test/regress/regress0/bv/bug440.smt
@@ -0,0 +1,97 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status sat
+:extrafuns ((v0 BitVec[7]))
+:extrafuns ((v1 BitVec[3]))
+:extrafuns ((v2 BitVec[2]))
+:extrafuns ((v3 BitVec[15]))
+:extrafuns ((v4 BitVec[11]))
+:formula
+(let (?e5 bv715[10])
+(let (?e6 bv331[9])
+(let (?e7 (rotate_left[7] ?e5))
+(let (?e8 (bvsub ?e7 ?e7))
+(let (?e9 (ite (bvuge ?e5 (sign_extend[1] ?e6)) bv1[1] bv0[1]))
+(let (?e10 (concat v0 v0))
+(let (?e11 (bvsmod (zero_extend[5] ?e7) v3))
+(let (?e12 (bvsub ?e8 (zero_extend[3] v0)))
+(let (?e13 (bvnot v4))
+(let (?e14 (bvsmod (sign_extend[5] v2) v0))
+(let (?e15 (bvurem (zero_extend[7] v0) ?e10))
+(let (?e16 (bvashr v3 (sign_extend[5] ?e5)))
+(let (?e17 (bvneg v2))
+(let (?e18 (bvmul ?e15 (sign_extend[7] v0)))
+(let (?e19 (sign_extend[3] v0))
+(let (?e20 (bvnand (sign_extend[9] v2) v4))
+(let (?e21 (ite (= bv1[1] (extract[1:1] ?e11)) ?e16 (sign_extend[4] v4)))
+(let (?e22 (ite (= bv1[1] (extract[1:1] v2)) ?e6 (sign_extend[6] v1)))
+(flet ($e23 (= ?e16 ?e11))
+(flet ($e24 (bvsgt ?e10 (sign_extend[4] ?e12)))
+(flet ($e25 (bvsge ?e11 (zero_extend[13] v2)))
+(flet ($e26 (= v0 (zero_extend[6] ?e9)))
+(flet ($e27 (bvsge (sign_extend[12] ?e17) ?e18))
+(flet ($e28 (= ?e10 (zero_extend[12] v2)))
+(flet ($e29 (bvugt ?e5 (sign_extend[3] ?e14)))
+(flet ($e30 (bvugt ?e19 (zero_extend[1] ?e22)))
+(flet ($e31 (bvult ?e6 (zero_extend[6] v1)))
+(flet ($e32 (bvult ?e11 (zero_extend[5] ?e7)))
+(flet ($e33 (bvsgt (sign_extend[1] ?e5) ?e20))
+(flet ($e34 (bvsge ?e16 ?e16))
+(flet ($e35 (bvugt (zero_extend[1] ?e15) ?e21))
+(flet ($e36 (= (sign_extend[14] ?e9) v3))
+(flet ($e37 (bvule ?e21 (zero_extend[13] ?e17)))
+(flet ($e38 (bvuge ?e12 (sign_extend[9] ?e9)))
+(flet ($e39 (bvult (zero_extend[5] ?e6) ?e15))
+(flet ($e40 (bvslt (sign_extend[12] ?e17) ?e10))
+(flet ($e41 (bvule v3 v3))
+(flet ($e42 (bvuge ?e10 (zero_extend[4] ?e8)))
+(flet ($e43 (bvslt ?e11 (zero_extend[1] ?e18)))
+(flet ($e44 (= (zero_extend[4] ?e8) ?e10))
+(flet ($e45 (bvslt ?e6 ?e22))
+(flet ($e46 (bvsgt (zero_extend[12] v1) ?e16))
+(flet ($e47 (bvsgt (sign_extend[1] ?e12) ?e13))
+(flet ($e48 (distinct ?e11 (sign_extend[6] ?e22)))
+(flet ($e49 (distinct v4 (zero_extend[2] ?e22)))
+(flet ($e50 (xor $e49 $e43))
+(flet ($e51 (or $e23 $e39))
+(flet ($e52 (implies $e51 $e48))
+(flet ($e53 (xor $e50 $e36))
+(flet ($e54 (and $e40 $e37))
+(flet ($e55 (implies $e44 $e31))
+(flet ($e56 (not $e53))
+(flet ($e57 (not $e28))
+(flet ($e58 (or $e24 $e56))
+(flet ($e59 (iff $e27 $e25))
+(flet ($e60 (or $e55 $e29))
+(flet ($e61 (iff $e54 $e30))
+(flet ($e62 (xor $e32 $e47))
+(flet ($e63 (iff $e41 $e59))
+(flet ($e64 (if_then_else $e46 $e60 $e26))
+(flet ($e65 (not $e52))
+(flet ($e66 (and $e35 $e62))
+(flet ($e67 (not $e63))
+(flet ($e68 (xor $e33 $e61))
+(flet ($e69 (implies $e45 $e64))
+(flet ($e70 (iff $e68 $e38))
+(flet ($e71 (not $e65))
+(flet ($e72 (not $e58))
+(flet ($e73 (or $e57 $e67))
+(flet ($e74 (or $e70 $e73))
+(flet ($e75 (and $e34 $e34))
+(flet ($e76 (implies $e66 $e74))
+(flet ($e77 (or $e42 $e71))
+(flet ($e78 (implies $e72 $e72))
+(flet ($e79 (and $e69 $e78))
+(flet ($e80 (or $e77 $e77))
+(flet ($e81 (or $e79 $e75))
+(flet ($e82 (xor $e81 $e80))
+(flet ($e83 (not $e76))
+(flet ($e84 (iff $e83 $e82))
+(flet ($e85 (and $e84 (not (= v3 bv0[15]))))
+(flet ($e86 (and $e85 (not (= v3 (bvnot bv0[15])))))
+(flet ($e87 (and $e86 (not (= v0 bv0[7]))))
+(flet ($e88 (and $e87 (not (= v0 (bvnot bv0[7])))))
+(flet ($e89 (and $e88 (not (= ?e10 bv0[14]))))
+$e89
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/bug734.smt2 b/test/regress/regress0/bv/bug734.smt2
new file mode 100644
index 0000000..1747c6c
--- /dev/null
+++ b/test/regress/regress0/bv/bug734.smt2
@@ -0,0 +1,9 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_BV)
+(declare-fun x0 () (_ BitVec 3))
+(assert (not (= #b001 x0)))
+(assert (bvult #b000 x0))
+(check-sat)
+(check-sat)
diff --git a/test/regress/regress0/bv/bug_extract_mult_leading_bit.smt2 b/test/regress/regress0/bv/bug_extract_mult_leading_bit.smt2
new file mode 100644
index 0000000..8e37285
--- /dev/null
+++ b/test/regress/regress0/bv/bug_extract_mult_leading_bit.smt2
@@ -0,0 +1,7 @@
+(set-logic QF_BV)
+(set-info :status sat)
+(declare-fun x1 () (_ BitVec 15))
+(declare-fun x2 () (_ BitVec 15))
+(assert (not (= ((_ extract 64 60) (bvmul (concat #b00000000000000000000000000000000000000000000000000 x1) (concat #b10000000000000000000000000000000000000000000000000 x2))) #b00000)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/bv/bv-int-collapse1.smt2 b/test/regress/regress0/bv/bv-int-collapse1.smt2
new file mode 100644
index 0000000..5b631a7
--- /dev/null
+++ b/test/regress/regress0/bv/bv-int-collapse1.smt2
@@ -0,0 +1,7 @@
+; COMMAND-LINE: --no-check-proofs --no-check-unsat-cores
+; EXPECT: unsat
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-fun t () (_ BitVec 16))
+(assert (not (= t ((_ int2bv 16) (bv2nat t)))))
+(check-sat)
diff --git a/test/regress/regress0/bv/bv-int-collapse2-sat.smt2 b/test/regress/regress0/bv/bv-int-collapse2-sat.smt2
new file mode 100644
index 0000000..1a355a4
--- /dev/null
+++ b/test/regress/regress0/bv/bv-int-collapse2-sat.smt2
@@ -0,0 +1,8 @@
+; COMMAND-LINE: --no-check-proofs --no-check-unsat-cores
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(declare-fun t () Int)
+(assert (> t 0))
+(assert (not (= t (bv2nat ((_ int2bv 16) t)))))
+(check-sat)
diff --git a/test/regress/regress0/bv/bv-int-collapse2.smt2 b/test/regress/regress0/bv/bv-int-collapse2.smt2
new file mode 100644
index 0000000..a630049
--- /dev/null
+++ b/test/regress/regress0/bv/bv-int-collapse2.smt2
@@ -0,0 +1,7 @@
+; COMMAND-LINE: --no-check-proofs --no-check-unsat-cores
+; EXPECT: unsat
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-fun t () Int)
+(assert (= (+ t 1) (bv2nat ((_ int2bv 16) t))))
+(check-sat)
diff --git a/test/regress/regress0/bv/bv2nat-ground-c.smt2 b/test/regress/regress0/bv/bv2nat-ground-c.smt2
new file mode 100644
index 0000000..aa5acde
--- /dev/null
+++ b/test/regress/regress0/bv/bv2nat-ground-c.smt2
@@ -0,0 +1,17 @@
+; COMMAND-LINE: --no-check-proofs --no-check-unsat-cores
+; EXPECT: unsat
+(set-logic QF_BVLIA)
+(set-info :status unsat)
+(declare-const a (_ BitVec 32))
+(declare-const b (_ BitVec 32))
+(declare-const c (_ BitVec 32))
+(declare-const d (_ BitVec 32))
+(declare-const e (_ BitVec 32))
+
+(assert (or (= a #x00000007) (= a #x00000005) (= a #x00000100)))
+
+(assert (not (= (bv2nat a) 7)))
+(assert (not (= (bv2nat a) 5)))
+(assert (< (bv2nat a) 10))
+
+(check-sat)
diff --git a/test/regress/regress0/bv/bv2nat-ground.smt2 b/test/regress/regress0/bv/bv2nat-ground.smt2
new file mode 100644
index 0000000..bfc2285
--- /dev/null
+++ b/test/regress/regress0/bv/bv2nat-ground.smt2
@@ -0,0 +1,18 @@
+; COMMAND-LINE: --no-check-proofs --no-check-unsat-cores
+; EXPECT: unsat
+(set-logic QF_BVLIA)
+(set-info :status unsat)
+(declare-const a (_ BitVec 32))
+(declare-const b (_ BitVec 32))
+(declare-const c (_ BitVec 32))
+(declare-const d (_ BitVec 32))
+(declare-const e (_ BitVec 32))
+
+(assert (or (= a b) (= a c) (= a d) (= a e)))
+
+(assert (not (= (bv2nat a) (bv2nat b))))
+(assert (not (= (bv2nat a) (bv2nat c))))
+(assert (not (= (bv2nat a) (bv2nat d))))
+(assert (not (= (bv2nat a) (bv2nat e))))
+
+(check-sat)
diff --git a/test/regress/regress0/bv/bv2nat-simp-range.smt2 b/test/regress/regress0/bv/bv2nat-simp-range.smt2
new file mode 100644
index 0000000..e5ea208
--- /dev/null
+++ b/test/regress/regress0/bv/bv2nat-simp-range.smt2
@@ -0,0 +1,7 @@
+; COMMAND-LINE: --no-check-proofs --no-check-unsat-cores
+; EXPECT: unsat
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-fun t () (_ BitVec 16))
+(assert (not (and (<= 0 (bv2nat t)) (< (bv2nat t) 65536))))
+(check-sat)
diff --git a/test/regress/regress0/bv/bvcomp.cvc b/test/regress/regress0/bv/bvcomp.cvc
new file mode 100644
index 0000000..b9b4b8e
--- /dev/null
+++ b/test/regress/regress0/bv/bvcomp.cvc
@@ -0,0 +1,5 @@
+% EXPECT: valid
+
+x : BITVECTOR(10);
+
+QUERY x /= ~x;
diff --git a/test/regress/regress0/bv/bvsimple.cvc b/test/regress/regress0/bv/bvsimple.cvc
new file mode 100644
index 0000000..dcacd64
--- /dev/null
+++ b/test/regress/regress0/bv/bvsimple.cvc
@@ -0,0 +1,46 @@
+% EXPECT: valid
+
+% Some tests from the CVC3 user manual.
+% http://www.cs.nyu.edu/acsys/cvc3/doc/user_doc.html
+
+x : BITVECTOR(5);
+y : BITVECTOR(4);
+yy : BITVECTOR(3);
+
+bv : BITVECTOR(10);
+a : BOOLEAN;
+
+xx : BITVECTOR(8);
+zz : BITVECTOR(12);
+
+x4, y4 : BITVECTOR(4);
+
+QUERY
+( 0bin0000111101010000 = 0hex0f50 ) AND
+( 0bin01 at 0bin0 = 0bin010 ) AND
+( 0bin1000 >> 3 = 0bin0001 ) AND
+( 0bin0011 << 3 = 0bin0011000 ) AND
+( 0bin1000 >> 3 = 0bin0001 ) AND
+
+( BVZEROEXTEND(0bin100, 2) = 0bin00100 ) AND
+( SX(0bin100, 5) = 0bin11100 ) AND
+
+( BVZEROEXTEND(0bin100, 0) = 0bin100 ) AND
+( SX(0bin100, 3) = 0bin100 ) AND
+
+( (BVPLUS(9, x at 0bin0000, (0bin000@(~y)@0bin11)))[8:4] = BVPLUS(5, x, ~(y[3:2])) ) AND
+
+( x4 = 0hex5 AND y4 = 0bin0101 ) =>
+( ( BVMULT(8,x4,y4)=BVMULT(8,y4,x4) ) AND
+  ( NOT(BVLT(x4,y4)) ) AND
+  ( BVLE(BVSUB(8,x4,y4), BVPLUS(8, x4, BVUMINUS(x4))) ) AND
+  ( x4 = BVSUB(4, BVUMINUS(x4), BVPLUS(4, x4,0hex1)) ) ) AND
+
+( 0bin01100000[5:3]=(0bin1111001 at bv[0:0])[4:2] ) AND
+( 0bin1@(IF a THEN 0bin0 ELSE 0bin1 ENDIF) = (IF a THEN 0bin110 ELSE 0bin011 ENDIF)[1:0] ) AND
+
+( xx = 0hexff AND zz = 0hexff0 =>
+  ( zz = xx << 4 ) AND
+  ( (zz >> 4)[7:0] = xx ) ) AND
+
+TRUE;
diff --git a/test/regress/regress0/bv/calc2_sec2_shifter_mult_bmc15.atlas.delta01.smt b/test/regress/regress0/bv/calc2_sec2_shifter_mult_bmc15.atlas.delta01.smt
new file mode 100644
index 0000000..467f10c
--- /dev/null
+++ b/test/regress/regress0/bv/calc2_sec2_shifter_mult_bmc15.atlas.delta01.smt
@@ -0,0 +1,80 @@
+(benchmark B_
+:logic QF_BV
+:extrapreds ((UCL_p16))
+:extrapreds ((UCL_p34))
+:status sat
+:formula
+(let (?n1 bv1[1])
+(let (?n2 bv0[2])
+(let (?n3 bv1[5])
+(let (?n4 bv0[5])
+(let (?n5 bv0[4])
+(let (?n6 bv1[4])
+(let (?n7 (ite UCL_p16 ?n6 ?n5))
+(flet ($n8 (= ?n5 ?n7))
+(let (?n9 bv1[2])
+(let (?n10 (ite $n8 ?n9 ?n2))
+(flet ($n11 (= ?n2 ?n10))
+(flet ($n12 (= ?n9 ?n10))
+(flet ($n13 (or $n11 $n12))
+(let (?n14 (ite $n13 ?n3 ?n4))
+(flet ($n15 (= ?n4 ?n14))
+(let (?n16 (ite $n15 ?n3 ?n4))
+(flet ($n17 (= ?n4 ?n16))
+(let (?n18 (ite UCL_p34 ?n2 ?n9))
+(flet ($n19 (= ?n9 ?n18))
+(let (?n20 (ite $n19 ?n6 ?n5))
+(flet ($n21 (= ?n5 ?n20))
+(let (?n22 (ite $n21 ?n3 ?n4))
+(let (?n23 (bvadd ?n22 ?n16))
+(let (?n24 (bvadd ?n3 ?n23))
+(let (?n25 (ite $n17 ?n24 ?n23))
+(flet ($n26 (= ?n3 ?n25))
+(let (?n27 bv1[6])
+(let (?n28 (concat ?n27 ?n9))
+(let (?n29 bv0[32])
+(let (?n30 (concat ?n28 ?n29))
+(let (?n31 (concat ?n30 ?n29))
+(let (?n32 bv0[72])
+(let (?n33 (ite $n26 ?n31 ?n32))
+(let (?n34 (extract[67:64] ?n33))
+(let (?n35 (extract[3:2] ?n34))
+(flet ($n36 (= ?n2 ?n35))
+(let (?n37 (ite $n36 ?n9 ?n2))
+(flet ($n38 (= ?n2 ?n37))
+(let (?n39 bv0[3])
+(let (?n40 bv1[3])
+(let (?n41 (ite $n38 ?n39 ?n40))
+(let (?n42 (extract[0:0] ?n41))
+(flet ($n43 (= ?n1 ?n42))
+(let (?n44 (ite $n43 ?n9 ?n2))
+(let (?n45 (ite $n12 ?n3 ?n4))
+(flet ($n46 (= ?n4 ?n45))
+(let (?n47 (ite $n8 ?n3 ?n4))
+(flet ($n48 (= ?n4 ?n47))
+(let (?n49 (ite $n48 ?n14 ?n4))
+(flet ($n50 (= ?n4 ?n49))
+(let (?n51 (bvsub ?n4 ?n3))
+(let (?n52 (ite $n50 ?n4 ?n51))
+(flet ($n53 (= ?n4 ?n52))
+(let (?n54 (ite $n53 ?n3 ?n52))
+(let (?n55 (ite $n46 ?n4 ?n54))
+(flet ($n56 (= ?n3 ?n55))
+(let (?n57 (concat ?n6 ?n9))
+(let (?n58 (concat ?n57 ?n2))
+(let (?n59 (concat ?n58 ?n29))
+(let (?n60 (concat ?n59 ?n29))
+(let (?n61 (bvadd ?n45 ?n52))
+(flet ($n62 (= ?n3 ?n61))
+(let (?n63 (ite $n62 ?n32 ?n31))
+(let (?n64 (ite $n56 ?n60 ?n63))
+(let (?n65 (extract[67:64] ?n64))
+(let (?n66 (extract[3:2] ?n65))
+(flet ($n67 (= ?n2 ?n66))
+(let (?n68 (extract[71:68] ?n64))
+(flet ($n69 (= ?n5 ?n68))
+(let (?n70 (ite $n69 ?n2 ?n9))
+(let (?n71 (ite $n67 ?n70 ?n2))
+(flet ($n72 (= ?n44 ?n71))
+$n72
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/bv/cmu-rdk-3.smt2 b/test/regress/regress0/bv/cmu-rdk-3.smt2
new file mode 100644
index 0000000..742dd59
--- /dev/null
+++ b/test/regress/regress0/bv/cmu-rdk-3.smt2
@@ -0,0 +1,9 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+
+(declare-fun y () Int)
+(declare-fun x () Int)
+
+(assert (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (not (not (not (= (ite (= (bv2nat (bvand ((_ int2bv 3) (bv2nat (bvor ((_ int2bv 3) (bv2nat (bvashr ((_ int2bv 3) x) ((_ int2bv 3) 1)))) ((_ int2bv 3) (bv2nat (bvashr ((_ int2bv 3) x) ((_ int2bv 3) 1))))))) ((_ int2bv 3) 1))) 0) 1 0) 0)))) (not (= (ite (>= x 0) 1 0) 0))) (not (= (ite (>= y 0) 1 0) 0))) (not (= (ite (= x y) 1 0) 0))) (not (not (= (ite (= x 0) 1 0) 0)))) (not (not (= (ite (= y  [...]
+
+(check-sat)
diff --git a/test/regress/regress0/bv/core/Makefile.am b/test/regress/regress0/bv/core/Makefile.am
new file mode 100644
index 0000000..ce65bca
--- /dev/null
+++ b/test/regress/regress0/bv/core/Makefile.am
@@ -0,0 +1,96 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	concat-merge-0.smt \
+	concat-merge-1.smt \
+	concat-merge-2.smt \
+	concat-merge-3.smt \
+	extract-concat-0.smt \
+	extract-concat-1.smt \
+	extract-concat-2.smt \
+	extract-concat-3.smt \
+	extract-concat-4.smt \
+	extract-concat-5.smt \
+	extract-concat-6.smt \
+	extract-concat-7.smt \
+	extract-concat-8.smt \
+	extract-concat-9.smt \
+	extract-concat-10.smt \
+	extract-concat-11.smt \
+	extract-constant.smt \
+	extract-extract-0.smt \
+	extract-extract-1.smt \
+	extract-extract-2.smt \
+	extract-extract-3.smt \
+	extract-extract-4.smt \
+	extract-extract-5.smt \
+	extract-extract-6.smt \
+	extract-extract-7.smt \
+	extract-extract-8.smt \
+	extract-extract-9.smt \
+	extract-extract-10.smt \
+	extract-extract-11.smt \
+	extract-whole-0.smt \
+	extract-whole-1.smt \
+	extract-whole-2.smt \
+	extract-whole-3.smt \
+	extract-whole-4.smt \
+	equality-00.smt \
+	equality-01.smt \
+	equality-02.smt \
+	equality-05.smt \
+	bv_eq_diamond10.smt \
+	slice-01.smt \
+	slice-02.smt \
+	slice-03.smt \
+	slice-04.smt \
+	slice-05.smt \
+	slice-06.smt \
+	slice-07.smt \
+	slice-08.smt \
+	slice-09.smt \
+	slice-10.smt \
+	slice-11.smt \
+	slice-12.smt \
+	slice-13.smt \
+	slice-14.smt \
+	slice-15.smt \
+	slice-16.smt \
+	slice-17.smt \
+	slice-18.smt \
+	slice-19.smt \
+	slice-20.smt \
+	a78test0002.smt \
+	a95test0002.smt \
+	bitvec0.smt \
+	bitvec2.smt \
+	bitvec5.smt \
+	bitvec7.smt
+
+EXTRA_DIST = $(TESTS)
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/bv/core/Makefile.in b/test/regress/regress0/bv/core/Makefile.in
new file mode 100644
index 0000000..bd0a98d
--- /dev/null
+++ b/test/regress/regress0/bv/core/Makefile.in
@@ -0,0 +1,1499 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/bv/core
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	concat-merge-0.smt \
+	concat-merge-1.smt \
+	concat-merge-2.smt \
+	concat-merge-3.smt \
+	extract-concat-0.smt \
+	extract-concat-1.smt \
+	extract-concat-2.smt \
+	extract-concat-3.smt \
+	extract-concat-4.smt \
+	extract-concat-5.smt \
+	extract-concat-6.smt \
+	extract-concat-7.smt \
+	extract-concat-8.smt \
+	extract-concat-9.smt \
+	extract-concat-10.smt \
+	extract-concat-11.smt \
+	extract-constant.smt \
+	extract-extract-0.smt \
+	extract-extract-1.smt \
+	extract-extract-2.smt \
+	extract-extract-3.smt \
+	extract-extract-4.smt \
+	extract-extract-5.smt \
+	extract-extract-6.smt \
+	extract-extract-7.smt \
+	extract-extract-8.smt \
+	extract-extract-9.smt \
+	extract-extract-10.smt \
+	extract-extract-11.smt \
+	extract-whole-0.smt \
+	extract-whole-1.smt \
+	extract-whole-2.smt \
+	extract-whole-3.smt \
+	extract-whole-4.smt \
+	equality-00.smt \
+	equality-01.smt \
+	equality-02.smt \
+	equality-05.smt \
+	bv_eq_diamond10.smt \
+	slice-01.smt \
+	slice-02.smt \
+	slice-03.smt \
+	slice-04.smt \
+	slice-05.smt \
+	slice-06.smt \
+	slice-07.smt \
+	slice-08.smt \
+	slice-09.smt \
+	slice-10.smt \
+	slice-11.smt \
+	slice-12.smt \
+	slice-13.smt \
+	slice-14.smt \
+	slice-15.smt \
+	slice-16.smt \
+	slice-17.smt \
+	slice-18.smt \
+	slice-19.smt \
+	slice-20.smt \
+	a78test0002.smt \
+	a95test0002.smt \
+	bitvec0.smt \
+	bitvec2.smt \
+	bitvec5.smt \
+	bitvec7.smt
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/bv/core/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/bv/core/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+concat-merge-0.smt.log: concat-merge-0.smt
+	@p='concat-merge-0.smt'; \
+	b='concat-merge-0.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+concat-merge-1.smt.log: concat-merge-1.smt
+	@p='concat-merge-1.smt'; \
+	b='concat-merge-1.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+concat-merge-2.smt.log: concat-merge-2.smt
+	@p='concat-merge-2.smt'; \
+	b='concat-merge-2.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+concat-merge-3.smt.log: concat-merge-3.smt
+	@p='concat-merge-3.smt'; \
+	b='concat-merge-3.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-concat-0.smt.log: extract-concat-0.smt
+	@p='extract-concat-0.smt'; \
+	b='extract-concat-0.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-concat-1.smt.log: extract-concat-1.smt
+	@p='extract-concat-1.smt'; \
+	b='extract-concat-1.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-concat-2.smt.log: extract-concat-2.smt
+	@p='extract-concat-2.smt'; \
+	b='extract-concat-2.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-concat-3.smt.log: extract-concat-3.smt
+	@p='extract-concat-3.smt'; \
+	b='extract-concat-3.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-concat-4.smt.log: extract-concat-4.smt
+	@p='extract-concat-4.smt'; \
+	b='extract-concat-4.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-concat-5.smt.log: extract-concat-5.smt
+	@p='extract-concat-5.smt'; \
+	b='extract-concat-5.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-concat-6.smt.log: extract-concat-6.smt
+	@p='extract-concat-6.smt'; \
+	b='extract-concat-6.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-concat-7.smt.log: extract-concat-7.smt
+	@p='extract-concat-7.smt'; \
+	b='extract-concat-7.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-concat-8.smt.log: extract-concat-8.smt
+	@p='extract-concat-8.smt'; \
+	b='extract-concat-8.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-concat-9.smt.log: extract-concat-9.smt
+	@p='extract-concat-9.smt'; \
+	b='extract-concat-9.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-concat-10.smt.log: extract-concat-10.smt
+	@p='extract-concat-10.smt'; \
+	b='extract-concat-10.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-concat-11.smt.log: extract-concat-11.smt
+	@p='extract-concat-11.smt'; \
+	b='extract-concat-11.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-constant.smt.log: extract-constant.smt
+	@p='extract-constant.smt'; \
+	b='extract-constant.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-extract-0.smt.log: extract-extract-0.smt
+	@p='extract-extract-0.smt'; \
+	b='extract-extract-0.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-extract-1.smt.log: extract-extract-1.smt
+	@p='extract-extract-1.smt'; \
+	b='extract-extract-1.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-extract-2.smt.log: extract-extract-2.smt
+	@p='extract-extract-2.smt'; \
+	b='extract-extract-2.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-extract-3.smt.log: extract-extract-3.smt
+	@p='extract-extract-3.smt'; \
+	b='extract-extract-3.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-extract-4.smt.log: extract-extract-4.smt
+	@p='extract-extract-4.smt'; \
+	b='extract-extract-4.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-extract-5.smt.log: extract-extract-5.smt
+	@p='extract-extract-5.smt'; \
+	b='extract-extract-5.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-extract-6.smt.log: extract-extract-6.smt
+	@p='extract-extract-6.smt'; \
+	b='extract-extract-6.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-extract-7.smt.log: extract-extract-7.smt
+	@p='extract-extract-7.smt'; \
+	b='extract-extract-7.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-extract-8.smt.log: extract-extract-8.smt
+	@p='extract-extract-8.smt'; \
+	b='extract-extract-8.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-extract-9.smt.log: extract-extract-9.smt
+	@p='extract-extract-9.smt'; \
+	b='extract-extract-9.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-extract-10.smt.log: extract-extract-10.smt
+	@p='extract-extract-10.smt'; \
+	b='extract-extract-10.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-extract-11.smt.log: extract-extract-11.smt
+	@p='extract-extract-11.smt'; \
+	b='extract-extract-11.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-whole-0.smt.log: extract-whole-0.smt
+	@p='extract-whole-0.smt'; \
+	b='extract-whole-0.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-whole-1.smt.log: extract-whole-1.smt
+	@p='extract-whole-1.smt'; \
+	b='extract-whole-1.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-whole-2.smt.log: extract-whole-2.smt
+	@p='extract-whole-2.smt'; \
+	b='extract-whole-2.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-whole-3.smt.log: extract-whole-3.smt
+	@p='extract-whole-3.smt'; \
+	b='extract-whole-3.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+extract-whole-4.smt.log: extract-whole-4.smt
+	@p='extract-whole-4.smt'; \
+	b='extract-whole-4.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+equality-00.smt.log: equality-00.smt
+	@p='equality-00.smt'; \
+	b='equality-00.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+equality-01.smt.log: equality-01.smt
+	@p='equality-01.smt'; \
+	b='equality-01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+equality-02.smt.log: equality-02.smt
+	@p='equality-02.smt'; \
+	b='equality-02.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+equality-05.smt.log: equality-05.smt
+	@p='equality-05.smt'; \
+	b='equality-05.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bv_eq_diamond10.smt.log: bv_eq_diamond10.smt
+	@p='bv_eq_diamond10.smt'; \
+	b='bv_eq_diamond10.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+slice-01.smt.log: slice-01.smt
+	@p='slice-01.smt'; \
+	b='slice-01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+slice-02.smt.log: slice-02.smt
+	@p='slice-02.smt'; \
+	b='slice-02.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+slice-03.smt.log: slice-03.smt
+	@p='slice-03.smt'; \
+	b='slice-03.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+slice-04.smt.log: slice-04.smt
+	@p='slice-04.smt'; \
+	b='slice-04.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+slice-05.smt.log: slice-05.smt
+	@p='slice-05.smt'; \
+	b='slice-05.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+slice-06.smt.log: slice-06.smt
+	@p='slice-06.smt'; \
+	b='slice-06.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+slice-07.smt.log: slice-07.smt
+	@p='slice-07.smt'; \
+	b='slice-07.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+slice-08.smt.log: slice-08.smt
+	@p='slice-08.smt'; \
+	b='slice-08.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+slice-09.smt.log: slice-09.smt
+	@p='slice-09.smt'; \
+	b='slice-09.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+slice-10.smt.log: slice-10.smt
+	@p='slice-10.smt'; \
+	b='slice-10.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+slice-11.smt.log: slice-11.smt
+	@p='slice-11.smt'; \
+	b='slice-11.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+slice-12.smt.log: slice-12.smt
+	@p='slice-12.smt'; \
+	b='slice-12.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+slice-13.smt.log: slice-13.smt
+	@p='slice-13.smt'; \
+	b='slice-13.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+slice-14.smt.log: slice-14.smt
+	@p='slice-14.smt'; \
+	b='slice-14.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+slice-15.smt.log: slice-15.smt
+	@p='slice-15.smt'; \
+	b='slice-15.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+slice-16.smt.log: slice-16.smt
+	@p='slice-16.smt'; \
+	b='slice-16.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+slice-17.smt.log: slice-17.smt
+	@p='slice-17.smt'; \
+	b='slice-17.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+slice-18.smt.log: slice-18.smt
+	@p='slice-18.smt'; \
+	b='slice-18.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+slice-19.smt.log: slice-19.smt
+	@p='slice-19.smt'; \
+	b='slice-19.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+slice-20.smt.log: slice-20.smt
+	@p='slice-20.smt'; \
+	b='slice-20.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+a78test0002.smt.log: a78test0002.smt
+	@p='a78test0002.smt'; \
+	b='a78test0002.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+a95test0002.smt.log: a95test0002.smt
+	@p='a95test0002.smt'; \
+	b='a95test0002.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bitvec0.smt.log: bitvec0.smt
+	@p='bitvec0.smt'; \
+	b='bitvec0.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bitvec2.smt.log: bitvec2.smt
+	@p='bitvec2.smt'; \
+	b='bitvec2.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bitvec5.smt.log: bitvec5.smt
+	@p='bitvec5.smt'; \
+	b='bitvec5.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bitvec7.smt.log: bitvec7.smt
+	@p='bitvec7.smt'; \
+	b='bitvec7.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/bv/core/a78test0002.smt b/test/regress/regress0/bv/core/a78test0002.smt
new file mode 100644
index 0000000..28f6aea
--- /dev/null
+++ b/test/regress/regress0/bv/core/a78test0002.smt
@@ -0,0 +1,19 @@
+(benchmark a78test0002.smt
+  :source {
+Bit-vector benchmarks from Dawson Engler's tool contributed by Vijay Ganesh
+(vganesh at stanford.edu).  Translated into SMT-LIB format by Clark Barrett using
+CVC3.
+
+}
+  :status sat
+  :difficulty { 0 }
+  :category { industrial }
+  :logic QF_BV
+  :extrafuns ((r1 BitVec[16]))
+  :assumption
+(not (= r1 bv0[16]))
+  :assumption
+(not (not (= (concat bv0[16] r1) bv65535[32])))
+  :formula
+(not false)
+)
diff --git a/test/regress/regress0/bv/core/a95test0002.smt b/test/regress/regress0/bv/core/a95test0002.smt
new file mode 100644
index 0000000..3a4862a
--- /dev/null
+++ b/test/regress/regress0/bv/core/a95test0002.smt
@@ -0,0 +1,17 @@
+(benchmark a95test0002.smt
+  :source {
+Bit-vector benchmarks from Dawson Engler's tool contributed by Vijay Ganesh
+(vganesh at stanford.edu).  Translated into SMT-LIB format by Clark Barrett using
+CVC3.
+
+}
+  :status sat
+  :difficulty { 0 }
+  :category { industrial }
+  :logic QF_BV
+  :extrafuns ((a BitVec[32]))
+  :assumption
+(not (not (= (concat bv0[16] (extract[15:0] a)) a)))
+  :formula
+(not false)
+)
diff --git a/test/regress/regress0/bv/core/bitvec0.smt b/test/regress/regress0/bv/core/bitvec0.smt
new file mode 100644
index 0000000..1276637
--- /dev/null
+++ b/test/regress/regress0/bv/core/bitvec0.smt
@@ -0,0 +1,24 @@
+(benchmark bitvec0.smt
+  :source {
+Hand-crafted bit-vector benchmarks.  Some are from the SVC benchmark suite.
+Contributed by Vijay Ganesh (vganesh at stanford.edu).  Translated into SMT-LIB
+format by Clark Barrett using CVC3.
+
+}
+  :status unsat
+  :difficulty { 0 }
+  :category { crafted }
+  :logic QF_BV
+  :extrafuns ((a BitVec[32]))
+  :extrafuns ((t BitVec[32]))
+  :extrafuns ((b BitVec[32]))
+  :extrafuns ((aa BitVec[32]))
+  :extrafuns ((c BitVec[32]))
+  :extrafuns ((d BitVec[32]))
+  :extrafuns ((aaaa BitVec[32]))
+  :extrafuns ((bbb BitVec[32]))
+  :extrafuns ((aaa BitVec[32]))
+  :extrafuns ((z BitVec[32]))
+  :formula
+(let (?cvc_0 (extract[6:2] a)) (let (?cvc_1 (extract[2:2] t)) (let (?cvc_2 (extract[6:6] t)) (let (?cvc_3 (extract[2:0] b)) (let (?cvc_4 (extract[2:0] c)) (not (and (and (and (if_then_else (= (concat (concat bv0[1] (extract[3:2] a)) (extract[6:5] a)) ?cvc_0) (= ?cvc_0 bv0[5]) (if_then_else (or (or (= bv2[3] bv6[3])  (= bv0[3] bv6[3]) )  (= bv7[3] bv6[3]) ) false true)) (and (if_then_else (= (concat (extract[3:2] t) (extract[6:5] t)) (extract[5:2] t)) (= ?cvc_1 ?cvc_2) true) (if_then_else [...]
+)
diff --git a/test/regress/regress0/bv/core/bitvec2.smt b/test/regress/regress0/bv/core/bitvec2.smt
new file mode 100644
index 0000000..bb479a5
--- /dev/null
+++ b/test/regress/regress0/bv/core/bitvec2.smt
@@ -0,0 +1,15 @@
+(benchmark bitvec2.smt
+  :source {
+Hand-crafted bit-vector benchmarks.  Some are from the SVC benchmark suite.
+Contributed by Vijay Ganesh (vganesh at stanford.edu).  Translated into SMT-LIB
+format by Clark Barrett using CVC3.
+
+}
+  :status unsat
+  :difficulty { 0 }
+  :category { crafted }
+  :logic QF_BV
+  :extrapreds ((a))
+  :formula
+(not (= (concat bv1[1] (ite a bv0[1] bv1[1])) (ite a bv2[2] bv3[2])))
+)
diff --git a/test/regress/regress0/bv/core/bitvec5.smt b/test/regress/regress0/bv/core/bitvec5.smt
new file mode 100644
index 0000000..3b6f2f3
--- /dev/null
+++ b/test/regress/regress0/bv/core/bitvec5.smt
@@ -0,0 +1,19 @@
+(benchmark bitvec5.smt
+  :source {
+Hand-crafted bit-vector benchmarks.  Some are from the SVC benchmark suite.
+Contributed by Vijay Ganesh (vganesh at stanford.edu).  Translated into SMT-LIB
+format by Clark Barrett using CVC3.
+
+}
+  :status unsat
+  :difficulty { 0 }
+  :category { crafted }
+  :logic QF_BV
+  :extrafuns ((a BitVec[32]))
+  :extrafuns ((b BitVec[32]))
+  :extrafuns ((c BitVec[32]))
+  :extrafuns ((d BitVec[32]))
+  :extrafuns ((e BitVec[32]))
+  :formula
+(not (and (implies (and (and (= (extract[31:0] a) (extract[31:0] b)) (= (extract[31:16] a) (extract[15:0] c))) (= (extract[31:8] b) (extract[23:0] d))) (= (extract[11:8] c) (extract[19:16] d))) (implies (= (extract[30:0] e) (extract[31:1] e)) (= (extract[0:0] e) (extract[31:31] e)))))
+)
diff --git a/test/regress/regress0/bv/core/bitvec7.smt b/test/regress/regress0/bv/core/bitvec7.smt
new file mode 100644
index 0000000..52229ed
--- /dev/null
+++ b/test/regress/regress0/bv/core/bitvec7.smt
@@ -0,0 +1,16 @@
+(benchmark bitvec7.smt
+  :source {
+Hand-crafted bit-vector benchmarks.  Some are from the SVC benchmark suite.
+Contributed by Vijay Ganesh (vganesh at stanford.edu).  Translated into SMT-LIB
+format by Clark Barrett using CVC3.
+
+}
+  :status unsat
+  :difficulty { 0 }
+  :category { crafted }
+  :logic QF_BV
+  :extrafuns ((bv BitVec[10]))
+  :extrapreds ((a))
+  :formula
+(not (and (= (extract[5:3] bv96[8]) (extract[4:2] (concat bv121[7] (extract[0:0] bv)))) (= (concat bv1[1] (ite a bv0[1] bv1[1])) (extract[1:0] (ite a bv6[3] bv3[3])))))
+)
diff --git a/test/regress/regress0/bv/core/bv_eq_diamond10.smt b/test/regress/regress0/bv/core/bv_eq_diamond10.smt
new file mode 100644
index 0000000..6d80425
--- /dev/null
+++ b/test/regress/regress0/bv/core/bv_eq_diamond10.smt
@@ -0,0 +1,33 @@
+(benchmark eq_diamond10
+:source{
+Generating minimum transitivity constraints in P-time for deciding Equality Logic,
+Ofer Strichman and Mirron Rozanov,
+SMT Workshop 2005.
+
+Translator: Leonardo de Moura. }
+:status unsat
+:category { crafted }
+:logic QF_BV
+:difficulty { 0 }
+:extrafuns ((x0 BitVec[32]) (y0 BitVec[32]) (z0 BitVec[32])
+(x1 BitVec[32]) (y1 BitVec[32]) (z1 BitVec[32])
+(x2 BitVec[32]) (y2 BitVec[32]) (z2 BitVec[32])
+(x3 BitVec[32]) (y3 BitVec[32]) (z3 BitVec[32])
+(x4 BitVec[32]) (y4 BitVec[32]) (z4 BitVec[32])
+(x5 BitVec[32]) (y5 BitVec[32]) (z5 BitVec[32])
+(x6 BitVec[32]) (y6 BitVec[32]) (z6 BitVec[32])
+(x7 BitVec[32]) (y7 BitVec[32]) (z7 BitVec[32])
+(x8 BitVec[32]) (y8 BitVec[32]) (z8 BitVec[32])
+(x9 BitVec[32]) (y9 BitVec[32]) (z9 BitVec[32])
+)
+:formula (and 
+(or (and (= x0 y0) (= y0 x1)) (and (= x0 z0) (= z0 x1)))
+(or (and (= x1 y1) (= y1 x2)) (and (= x1 z1) (= z1 x2)))
+(or (and (= x2 y2) (= y2 x3)) (and (= x2 z2) (= z2 x3)))
+(or (and (= x3 y3) (= y3 x4)) (and (= x3 z3) (= z3 x4)))
+(or (and (= x4 y4) (= y4 x5)) (and (= x4 z4) (= z4 x5)))
+(or (and (= x5 y5) (= y5 x6)) (and (= x5 z5) (= z5 x6)))
+(or (and (= x6 y6) (= y6 x7)) (and (= x6 z6) (= z6 x7)))
+(or (and (= x7 y7) (= y7 x8)) (and (= x7 z7) (= z7 x8)))
+(or (and (= x8 y8) (= y8 x9)) (and (= x8 z8) (= z8 x9)))
+(not (= x0 x9))))
diff --git a/test/regress/regress0/bv/core/concat-merge-0.smt b/test/regress/regress0/bv/core/concat-merge-0.smt
new file mode 100644
index 0000000..2d43101
--- /dev/null
+++ b/test/regress/regress0/bv/core/concat-merge-0.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(not (= (concat (extract[2:1] x) (extract[0:0] x)) (extract[2:0] x)))
+)
diff --git a/test/regress/regress0/bv/core/concat-merge-1.smt b/test/regress/regress0/bv/core/concat-merge-1.smt
new file mode 100644
index 0000000..e032628
--- /dev/null
+++ b/test/regress/regress0/bv/core/concat-merge-1.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(not (= (concat (extract[4:2] x) (extract[1:0] x)) (extract[4:0] x)))
+)
diff --git a/test/regress/regress0/bv/core/concat-merge-2.smt b/test/regress/regress0/bv/core/concat-merge-2.smt
new file mode 100644
index 0000000..4fe5e59
--- /dev/null
+++ b/test/regress/regress0/bv/core/concat-merge-2.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(not (= (concat (extract[8:4] x) (extract[3:0] x)) (extract[8:0] x)))
+)
diff --git a/test/regress/regress0/bv/core/concat-merge-3.smt b/test/regress/regress0/bv/core/concat-merge-3.smt
new file mode 100644
index 0000000..64b3010
--- /dev/null
+++ b/test/regress/regress0/bv/core/concat-merge-3.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(not (= (concat (extract[16:8] x) (extract[7:0] x)) (extract[16:0] x)))
+)
diff --git a/test/regress/regress0/bv/core/equality-00.smt b/test/regress/regress0/bv/core/equality-00.smt
new file mode 100644
index 0000000..dabdae5
--- /dev/null
+++ b/test/regress/regress0/bv/core/equality-00.smt
@@ -0,0 +1,10 @@
+(benchmark B_
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x BitVec[32]))
+  :extrafuns ((y BitVec[32]))
+  :extrafuns ((z BitVec[32]))
+  :assumption (= x y)
+  :assumption (= y z)
+  :formula (not (= x z))
+)
diff --git a/test/regress/regress0/bv/core/equality-01.smt b/test/regress/regress0/bv/core/equality-01.smt
new file mode 100644
index 0000000..48506d2
--- /dev/null
+++ b/test/regress/regress0/bv/core/equality-01.smt
@@ -0,0 +1,12 @@
+(benchmark B_
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x BitVec[32]))
+  :extrafuns ((y BitVec[32]))
+  :extrafuns ((z BitVec[32]))
+  :extrafuns ((w BitVec[32]))
+  :assumption (= x y)
+  :assumption (= y z)
+  :assumption (= z w)
+  :formula (not (= x w))
+)
diff --git a/test/regress/regress0/bv/core/equality-02.smt b/test/regress/regress0/bv/core/equality-02.smt
new file mode 100644
index 0000000..ee011ce
--- /dev/null
+++ b/test/regress/regress0/bv/core/equality-02.smt
@@ -0,0 +1,20 @@
+(benchmark B_
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x0 BitVec[32]))
+  :extrafuns ((x1 BitVec[32]))
+  :extrafuns ((x2 BitVec[32]))
+  :extrafuns ((x3 BitVec[32]))
+  :extrafuns ((y0 BitVec[32]))
+  :extrafuns ((y1 BitVec[32]))
+  :extrafuns ((y2 BitVec[32]))
+  :extrafuns ((y3 BitVec[32]))
+  :assumption (= x0 x1)
+  :assumption (= x1 x2)
+  :assumption (= x2 x3)
+  :assumption (= y0 y1)
+  :assumption (= y1 y2)
+  :assumption (= y2 y3)
+  :assumption (= x0 y0)
+  :formula (not (= x3 y3))
+)
diff --git a/test/regress/regress0/bv/core/equality-05.smt b/test/regress/regress0/bv/core/equality-05.smt
new file mode 100644
index 0000000..a7b9f61
--- /dev/null
+++ b/test/regress/regress0/bv/core/equality-05.smt
@@ -0,0 +1,11 @@
+(benchmark equality
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x BitVec[1]))
+  :extrafuns ((y BitVec[1]))
+  :assumption (= x bv0[1])
+  :assumption (= y bv1[1])
+  :assumption (= x y)
+  :formula
+true
+)
diff --git a/test/regress/regress0/bv/core/extract-concat-0.smt b/test/regress/regress0/bv/core/extract-concat-0.smt
new file mode 100644
index 0000000..edbbe5c
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-concat-0.smt
@@ -0,0 +1,8 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :extrafuns ((y BitVec[32]))
+  :formula
+(not (= (extract[63:32] (concat x y)) (extract[31:0] x)))
+)
diff --git a/test/regress/regress0/bv/core/extract-concat-1.smt b/test/regress/regress0/bv/core/extract-concat-1.smt
new file mode 100644
index 0000000..193fc58
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-concat-1.smt
@@ -0,0 +1,8 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :extrafuns ((y BitVec[32]))
+  :formula
+(not (= (extract[62:33] (concat x y)) (extract[30:1] x)))
+)
diff --git a/test/regress/regress0/bv/core/extract-concat-10.smt b/test/regress/regress0/bv/core/extract-concat-10.smt
new file mode 100644
index 0000000..65265c7
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-concat-10.smt
@@ -0,0 +1,8 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :extrafuns ((y BitVec[32]))
+  :formula
+(not (= (extract[60:3] (concat x y)) (concat (extract[28:0] x) (extract[31:3] y))))
+)
diff --git a/test/regress/regress0/bv/core/extract-concat-11.smt b/test/regress/regress0/bv/core/extract-concat-11.smt
new file mode 100644
index 0000000..c9b04d4
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-concat-11.smt
@@ -0,0 +1,8 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :extrafuns ((y BitVec[32]))
+  :formula
+(not (= (extract[59:4] (concat x y)) (concat (extract[27:0] x) (extract[31:4] y))))
+)
diff --git a/test/regress/regress0/bv/core/extract-concat-2.smt b/test/regress/regress0/bv/core/extract-concat-2.smt
new file mode 100644
index 0000000..c08573a
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-concat-2.smt
@@ -0,0 +1,8 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :extrafuns ((y BitVec[32]))
+  :formula
+(not (= (extract[61:34] (concat x y)) (extract[29:2] x)))
+)
diff --git a/test/regress/regress0/bv/core/extract-concat-3.smt b/test/regress/regress0/bv/core/extract-concat-3.smt
new file mode 100644
index 0000000..86c90db
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-concat-3.smt
@@ -0,0 +1,8 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :extrafuns ((y BitVec[32]))
+  :formula
+(not (= (extract[60:35] (concat x y)) (extract[28:3] x)))
+)
diff --git a/test/regress/regress0/bv/core/extract-concat-4.smt b/test/regress/regress0/bv/core/extract-concat-4.smt
new file mode 100644
index 0000000..380f495
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-concat-4.smt
@@ -0,0 +1,8 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :extrafuns ((y BitVec[32]))
+  :formula
+(not (= (extract[31:0] (concat x y)) (extract[31:0] y)))
+)
diff --git a/test/regress/regress0/bv/core/extract-concat-5.smt b/test/regress/regress0/bv/core/extract-concat-5.smt
new file mode 100644
index 0000000..822fedc
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-concat-5.smt
@@ -0,0 +1,8 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :extrafuns ((y BitVec[32]))
+  :formula
+(not (= (extract[30:1] (concat x y)) (extract[30:1] y)))
+)
diff --git a/test/regress/regress0/bv/core/extract-concat-6.smt b/test/regress/regress0/bv/core/extract-concat-6.smt
new file mode 100644
index 0000000..23dcade
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-concat-6.smt
@@ -0,0 +1,8 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :extrafuns ((y BitVec[32]))
+  :formula
+(not (= (extract[29:2] (concat x y)) (extract[29:2] y)))
+)
diff --git a/test/regress/regress0/bv/core/extract-concat-7.smt b/test/regress/regress0/bv/core/extract-concat-7.smt
new file mode 100644
index 0000000..4d3bc7c
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-concat-7.smt
@@ -0,0 +1,8 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :extrafuns ((y BitVec[32]))
+  :formula
+(not (= (extract[28:3] (concat x y)) (extract[28:3] y)))
+)
diff --git a/test/regress/regress0/bv/core/extract-concat-8.smt b/test/regress/regress0/bv/core/extract-concat-8.smt
new file mode 100644
index 0000000..f6dc143
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-concat-8.smt
@@ -0,0 +1,8 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :extrafuns ((y BitVec[32]))
+  :formula
+(not (= (extract[62:1] (concat x y)) (concat (extract[30:0] x) (extract[31:1] y))))
+)
diff --git a/test/regress/regress0/bv/core/extract-concat-9.smt b/test/regress/regress0/bv/core/extract-concat-9.smt
new file mode 100644
index 0000000..17870bd
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-concat-9.smt
@@ -0,0 +1,8 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :extrafuns ((y BitVec[32]))
+  :formula
+(not (= (extract[61:2] (concat x y)) (concat (extract[29:0] x) (extract[31:2] y))))
+)
diff --git a/test/regress/regress0/bv/core/extract-constant.smt b/test/regress/regress0/bv/core/extract-constant.smt
new file mode 100644
index 0000000..bfa3389
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-constant.smt
@@ -0,0 +1,6 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :formula
+(not (= (extract[6:2] bv56[9]) bv14[5]))
+)
diff --git a/test/regress/regress0/bv/core/extract-extract-0.smt b/test/regress/regress0/bv/core/extract-extract-0.smt
new file mode 100644
index 0000000..5ec2bcf
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-extract-0.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(let (?cvc_0 (extract[31:0] x)) (not (= (extract[31:0] ?cvc_0) ?cvc_0)))
+)
diff --git a/test/regress/regress0/bv/core/extract-extract-1.smt b/test/regress/regress0/bv/core/extract-extract-1.smt
new file mode 100644
index 0000000..e57d85e
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-extract-1.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(not (= (extract[15:1] (extract[31:0] x)) (extract[15:1] x)))
+)
diff --git a/test/regress/regress0/bv/core/extract-extract-10.smt b/test/regress/regress0/bv/core/extract-extract-10.smt
new file mode 100644
index 0000000..d806c6e
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-extract-10.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(not (= (extract[2:2] (extract[7:2] x)) (extract[4:4] x)))
+)
diff --git a/test/regress/regress0/bv/core/extract-extract-11.smt b/test/regress/regress0/bv/core/extract-extract-11.smt
new file mode 100644
index 0000000..488b22f
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-extract-11.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(not (= (extract[0:0] (extract[8:7] (extract[14:6] (extract[19:5] (extract[23:4] (extract[26:3] (extract[28:2] (extract[30:1] x)))))))) (extract[28:28] x)))
+)
diff --git a/test/regress/regress0/bv/core/extract-extract-2.smt b/test/regress/regress0/bv/core/extract-extract-2.smt
new file mode 100644
index 0000000..86f61bf
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-extract-2.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(not (= (extract[7:2] (extract[31:0] x)) (extract[7:2] x)))
+)
diff --git a/test/regress/regress0/bv/core/extract-extract-3.smt b/test/regress/regress0/bv/core/extract-extract-3.smt
new file mode 100644
index 0000000..2723702
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-extract-3.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(not (= (extract[4:4] (extract[31:0] x)) (extract[4:4] x)))
+)
diff --git a/test/regress/regress0/bv/core/extract-extract-4.smt b/test/regress/regress0/bv/core/extract-extract-4.smt
new file mode 100644
index 0000000..f8df127
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-extract-4.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(let (?cvc_0 (extract[15:1] x)) (not (= (extract[14:0] ?cvc_0) ?cvc_0)))
+)
diff --git a/test/regress/regress0/bv/core/extract-extract-5.smt b/test/regress/regress0/bv/core/extract-extract-5.smt
new file mode 100644
index 0000000..4179cc3
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-extract-5.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(not (= (extract[7:1] (extract[15:1] x)) (extract[8:2] x)))
+)
diff --git a/test/regress/regress0/bv/core/extract-extract-6.smt b/test/regress/regress0/bv/core/extract-extract-6.smt
new file mode 100644
index 0000000..33220b2
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-extract-6.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(not (= (extract[3:2] (extract[15:1] x)) (extract[4:3] x)))
+)
diff --git a/test/regress/regress0/bv/core/extract-extract-7.smt b/test/regress/regress0/bv/core/extract-extract-7.smt
new file mode 100644
index 0000000..5407c22
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-extract-7.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(not (= (extract[3:3] (extract[15:1] x)) (extract[4:4] x)))
+)
diff --git a/test/regress/regress0/bv/core/extract-extract-8.smt b/test/regress/regress0/bv/core/extract-extract-8.smt
new file mode 100644
index 0000000..785ba44
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-extract-8.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(let (?cvc_0 (extract[7:2] x)) (not (= (extract[5:0] ?cvc_0) ?cvc_0)))
+)
diff --git a/test/regress/regress0/bv/core/extract-extract-9.smt b/test/regress/regress0/bv/core/extract-extract-9.smt
new file mode 100644
index 0000000..27e9978
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-extract-9.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(not (= (extract[3:1] (extract[7:2] x)) (extract[5:3] x)))
+)
diff --git a/test/regress/regress0/bv/core/extract-whole-0.smt b/test/regress/regress0/bv/core/extract-whole-0.smt
new file mode 100644
index 0000000..5464f91
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-whole-0.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(not (= (concat (concat (concat (concat (concat (concat bv0[1] (extract[31:31] x)) (extract[30:20] x)) (extract[19:10] x)) (extract[9:1] x)) (extract[0:0] x)) bv0[1]) (concat (concat bv0[1] x) bv0[1])))
+)
diff --git a/test/regress/regress0/bv/core/extract-whole-1.smt b/test/regress/regress0/bv/core/extract-whole-1.smt
new file mode 100644
index 0000000..67f55b0
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-whole-1.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(not (= (concat (concat (concat (concat (extract[31:31] x) (extract[30:20] x)) (extract[19:10] x)) (extract[9:1] x)) (extract[0:0] x)) x))
+)
diff --git a/test/regress/regress0/bv/core/extract-whole-2.smt b/test/regress/regress0/bv/core/extract-whole-2.smt
new file mode 100644
index 0000000..5e016f6
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-whole-2.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(not (= (concat (concat (concat (concat (concat (concat x bv0[1]) bv1[1]) bv0[1]) bv1[1]) bv0[1]) bv1[1]) (concat x bv21[6])))
+)
diff --git a/test/regress/regress0/bv/core/extract-whole-3.smt b/test/regress/regress0/bv/core/extract-whole-3.smt
new file mode 100644
index 0000000..42464cb
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-whole-3.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(not (= (concat (concat (concat (concat (concat (concat bv0[1] bv1[1]) bv0[1]) bv1[1]) bv0[1]) bv1[1]) x) (concat bv21[6] x)))
+)
diff --git a/test/regress/regress0/bv/core/extract-whole-4.smt b/test/regress/regress0/bv/core/extract-whole-4.smt
new file mode 100644
index 0000000..c26b217
--- /dev/null
+++ b/test/regress/regress0/bv/core/extract-whole-4.smt
@@ -0,0 +1,7 @@
+(benchmark B_
+  :logic QF_BV
+  :status unsat
+  :extrafuns ((x BitVec[32]))
+  :formula
+(not (= (extract[31:0] x) x))
+)
diff --git a/test/regress/regress0/bv/core/slice-01.smt b/test/regress/regress0/bv/core/slice-01.smt
new file mode 100644
index 0000000..f0fc250
--- /dev/null
+++ b/test/regress/regress0/bv/core/slice-01.smt
@@ -0,0 +1,9 @@
+(benchmark slice
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x BitVec[64]))
+  :extrafuns ((y BitVec[32]))
+  :extrafuns ((z BitVec[32]))
+  :assumption (= x (concat y z))
+  :formula (not (= (extract[63:32] x) y))
+)
diff --git a/test/regress/regress0/bv/core/slice-02.smt b/test/regress/regress0/bv/core/slice-02.smt
new file mode 100644
index 0000000..182c89b
--- /dev/null
+++ b/test/regress/regress0/bv/core/slice-02.smt
@@ -0,0 +1,9 @@
+(benchmark slice
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x BitVec[64]))
+  :extrafuns ((y BitVec[32]))
+  :extrafuns ((z BitVec[32]))
+  :assumption (= x (concat y z))
+  :formula (not (= (extract[31:0] x) z))
+)
diff --git a/test/regress/regress0/bv/core/slice-03.smt b/test/regress/regress0/bv/core/slice-03.smt
new file mode 100644
index 0000000..c827f92
--- /dev/null
+++ b/test/regress/regress0/bv/core/slice-03.smt
@@ -0,0 +1,12 @@
+(benchmark slice
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x1 BitVec[64]))
+  :extrafuns ((x2 BitVec[64]))
+  :extrafuns ((y BitVec[32]))
+  :extrafuns ((z BitVec[32]))
+  :assumption (= x1 (concat y z))
+  :assumption (= (extract[63:32] x2) y)
+  :assumption (= (extract[31:0] x2) z)
+  :formula (not (= x1 x2))
+)
diff --git a/test/regress/regress0/bv/core/slice-04.smt b/test/regress/regress0/bv/core/slice-04.smt
new file mode 100644
index 0000000..ef9cc6e
--- /dev/null
+++ b/test/regress/regress0/bv/core/slice-04.smt
@@ -0,0 +1,18 @@
+(benchmark slice
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x1 BitVec[64]))
+  :extrafuns ((x2 BitVec[32]))
+  :extrafuns ((x3 BitVec[16]))
+  :extrafuns ((x4 BitVec[8]))
+  :extrafuns ((x5 BitVec[4]))
+  :extrafuns ((x6 BitVec[2]))
+  :extrafuns ((x7 BitVec[1]))
+  :assumption (= x1 (concat x2 x2))
+  :assumption (= x2 (concat x3 x3))
+  :assumption (= x3 (concat x4 x4))
+  :assumption (= x4 (concat x5 x5))
+  :assumption (= x5 (concat x6 x6))
+  :assumption (= x6 (concat x7 x7))
+  :formula (not (= (extract[0:0] x1) x7))
+)
diff --git a/test/regress/regress0/bv/core/slice-05.smt b/test/regress/regress0/bv/core/slice-05.smt
new file mode 100644
index 0000000..75af2cd
--- /dev/null
+++ b/test/regress/regress0/bv/core/slice-05.smt
@@ -0,0 +1,18 @@
+(benchmark slice
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x1 BitVec[64]))
+  :extrafuns ((x2 BitVec[32]))
+  :extrafuns ((x3 BitVec[16]))
+  :extrafuns ((x4 BitVec[8]))
+  :extrafuns ((x5 BitVec[4]))
+  :extrafuns ((x6 BitVec[2]))
+  :extrafuns ((x7 BitVec[1]))
+  :assumption (= x1 (concat x2 x2))
+  :assumption (= x2 (concat x3 x3))
+  :assumption (= x3 (concat x4 x4))
+  :assumption (= x4 (concat x5 x5))
+  :assumption (= x5 (concat x6 x6))
+  :assumption (= x6 (concat x7 x7))
+  :formula (not (= (extract[63:63] x1) x7))
+)
diff --git a/test/regress/regress0/bv/core/slice-06.smt b/test/regress/regress0/bv/core/slice-06.smt
new file mode 100644
index 0000000..da3c7fc
--- /dev/null
+++ b/test/regress/regress0/bv/core/slice-06.smt
@@ -0,0 +1,18 @@
+(benchmark slice
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x1 BitVec[64]))
+  :extrafuns ((x2 BitVec[32]))
+  :extrafuns ((x3 BitVec[16]))
+  :extrafuns ((x4 BitVec[8]))
+  :extrafuns ((x5 BitVec[4]))
+  :extrafuns ((x6 BitVec[2]))
+  :extrafuns ((x7 BitVec[1]))
+  :assumption (= x1 (concat x2 x2))
+  :assumption (= x2 (concat x3 x3))
+  :assumption (= x3 (concat x4 x4))
+  :assumption (= x4 (concat x5 x5))
+  :assumption (= x5 (concat x6 x6))
+  :assumption (= x6 (concat x7 x7))
+  :formula (not (= (extract[63:63] x1) (extract[0:0] x1)))
+)
diff --git a/test/regress/regress0/bv/core/slice-07.smt b/test/regress/regress0/bv/core/slice-07.smt
new file mode 100644
index 0000000..4918f1b
--- /dev/null
+++ b/test/regress/regress0/bv/core/slice-07.smt
@@ -0,0 +1,7 @@
+(benchmark slice
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x BitVec[5]))
+  :assumption (= (extract[4:1] x) (extract[3:0] x))
+  :formula (not (= (extract[4:4] x) (extract[0:0] x)))
+)
diff --git a/test/regress/regress0/bv/core/slice-08.smt b/test/regress/regress0/bv/core/slice-08.smt
new file mode 100644
index 0000000..6c9c016
--- /dev/null
+++ b/test/regress/regress0/bv/core/slice-08.smt
@@ -0,0 +1,7 @@
+(benchmark slice
+  :status sat
+  :logic QF_BV
+  :extrafuns ((x BitVec[5]))
+  :assumption (= (extract[4:3] x) (extract[1:0] x))
+  :formula (not (= (extract[4:4] x) (extract[0:0] x)))
+)
diff --git a/test/regress/regress0/bv/core/slice-09.smt b/test/regress/regress0/bv/core/slice-09.smt
new file mode 100644
index 0000000..6a65544
--- /dev/null
+++ b/test/regress/regress0/bv/core/slice-09.smt
@@ -0,0 +1,7 @@
+(benchmark slice
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x BitVec[6]))
+  :assumption (= (extract[5:2] x) (extract[3:0] x))
+  :formula (not (= (extract[5:4] x) (extract[1:0] x)))
+)
diff --git a/test/regress/regress0/bv/core/slice-10.smt b/test/regress/regress0/bv/core/slice-10.smt
new file mode 100644
index 0000000..cc2a9b9
--- /dev/null
+++ b/test/regress/regress0/bv/core/slice-10.smt
@@ -0,0 +1,8 @@
+(benchmark slice
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x BitVec[8]))
+  :assumption (= (extract[3:0] x) bv0[4])
+  :assumption (= (extract[7:4] x) bv15[4])
+  :formula (not (= x bv240[8]))
+)
diff --git a/test/regress/regress0/bv/core/slice-11.smt b/test/regress/regress0/bv/core/slice-11.smt
new file mode 100644
index 0000000..b69151d
--- /dev/null
+++ b/test/regress/regress0/bv/core/slice-11.smt
@@ -0,0 +1,7 @@
+(benchmark slice
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x BitVec[8]))
+  :assumption (= x bv85[8])
+  :formula (not (= (concat (concat (concat (extract[0:0] x) (extract[2:2] x)) (extract[4:4] x)) (extract[6:6] x)) bv15[4]))
+)
diff --git a/test/regress/regress0/bv/core/slice-12.smt b/test/regress/regress0/bv/core/slice-12.smt
new file mode 100644
index 0000000..998dee6
--- /dev/null
+++ b/test/regress/regress0/bv/core/slice-12.smt
@@ -0,0 +1,13 @@
+(benchmark slice
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x BitVec[8]))
+  :extrafuns ((y BitVec[8]))
+  :extrafuns ((z1 BitVec[4]))
+  :extrafuns ((z2 BitVec[4]))
+  :assumption (= x bv85[8])
+  :assumption (= y bv170[8])
+  :assumption (= z1 (concat (concat (concat (extract[0:0] x) (extract[2:2] x)) (extract[4:4] x)) (extract[6:6] x)))
+  :assumption (= z2 (concat (concat (concat (extract[7:7] y) (extract[5:5] y)) (extract[3:3] y)) (extract[1:1] y)))
+  :formula (not (= z1 z2))
+)
diff --git a/test/regress/regress0/bv/core/slice-13.smt b/test/regress/regress0/bv/core/slice-13.smt
new file mode 100644
index 0000000..1c61a8f
--- /dev/null
+++ b/test/regress/regress0/bv/core/slice-13.smt
@@ -0,0 +1,13 @@
+(benchmark slice
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x BitVec[8]))
+  :extrafuns ((y BitVec[8]))
+  :extrafuns ((z1 BitVec[4]))
+  :extrafuns ((z2 BitVec[4]))
+  :assumption (= z1 (concat (concat (concat (extract[0:0] x) (extract[2:2] x)) (extract[4:4] x)) (extract[6:6] x)))
+  :assumption (= z2 (concat (concat (concat (extract[7:7] y) (extract[5:5] y)) (extract[3:3] y)) (extract[1:1] y)))
+  :assumption (= x bv85[8])
+  :assumption (= y bv170[8])
+  :formula (not (= z1 z2))
+)
diff --git a/test/regress/regress0/bv/core/slice-14.smt b/test/regress/regress0/bv/core/slice-14.smt
new file mode 100644
index 0000000..db3a3a7
--- /dev/null
+++ b/test/regress/regress0/bv/core/slice-14.smt
@@ -0,0 +1,8 @@
+(benchmark slice
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x BitVec[6]))
+  :assumption (= (extract[5:1] x) (extract[4:0] x))
+  :assumption (= (extract[0:0] x) bv0[1])
+  :formula (not (= x bv0[6]))
+)
diff --git a/test/regress/regress0/bv/core/slice-15.smt b/test/regress/regress0/bv/core/slice-15.smt
new file mode 100644
index 0000000..b45e603
--- /dev/null
+++ b/test/regress/regress0/bv/core/slice-15.smt
@@ -0,0 +1,8 @@
+(benchmark slice
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x BitVec[16]))
+  :assumption (= (extract[15:15] x) bv1[1])
+  :assumption (= (extract[15:1] x) (extract[14:0] x))
+  :formula (not (= x bv65535[16]))
+)
diff --git a/test/regress/regress0/bv/core/slice-16.smt b/test/regress/regress0/bv/core/slice-16.smt
new file mode 100644
index 0000000..5cadd29
--- /dev/null
+++ b/test/regress/regress0/bv/core/slice-16.smt
@@ -0,0 +1,8 @@
+(benchmark slice  
+  :status sat
+  :logic QF_BV
+  :extrafuns ((x BitVec[16]))
+  :assumption (= (extract[15:15] x) bv1[1])
+  :assumption (= (extract[15:2] x) (extract[13:0] x))
+  :formula (not (= x bv65535[16]))
+)
diff --git a/test/regress/regress0/bv/core/slice-17.smt b/test/regress/regress0/bv/core/slice-17.smt
new file mode 100644
index 0000000..5894446
--- /dev/null
+++ b/test/regress/regress0/bv/core/slice-17.smt
@@ -0,0 +1,11 @@
+(benchmark slice
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x BitVec[16]))
+  :extrafuns ((y BitVec[12]))
+  :assumption (= y (extract[11:0] x))
+  :assumption (= y (extract[15:4] x))
+  :assumption (= (extract[3:1] y) (extract[2:0] y))
+  :assumption (= (extract[0:0] x) bv1[1])
+  :formula (not (= x bv65535[16]))
+)
diff --git a/test/regress/regress0/bv/core/slice-18.smt b/test/regress/regress0/bv/core/slice-18.smt
new file mode 100644
index 0000000..7a97e74
--- /dev/null
+++ b/test/regress/regress0/bv/core/slice-18.smt
@@ -0,0 +1,11 @@
+(benchmark slice
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x BitVec[16]))
+  :extrafuns ((y BitVec[12]))
+  :assumption (= (extract[0:0] x) bv1[1])
+  :assumption (= y (extract[11:0] x))
+  :assumption (= y (extract[15:4] x))
+  :assumption (= (extract[3:1] y) (extract[2:0] y))
+  :formula (not (= x bv65535[16]))
+)
diff --git a/test/regress/regress0/bv/core/slice-19.smt b/test/regress/regress0/bv/core/slice-19.smt
new file mode 100644
index 0000000..3e98d61
--- /dev/null
+++ b/test/regress/regress0/bv/core/slice-19.smt
@@ -0,0 +1,11 @@
+(benchmark slice
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x BitVec[16]))
+  :extrafuns ((y BitVec[12]))
+  :assumption (= y (extract[11:0] x))
+  :assumption (= y (extract[15:4] x))
+  :assumption (= (extract[3:2] y) (extract[1:0] y))
+  :assumption (= (extract[1:0] x) bv1[2])
+  :formula (not (= x bv21845[16]))
+)
diff --git a/test/regress/regress0/bv/core/slice-20.smt b/test/regress/regress0/bv/core/slice-20.smt
new file mode 100644
index 0000000..66fac57
--- /dev/null
+++ b/test/regress/regress0/bv/core/slice-20.smt
@@ -0,0 +1,16 @@
+(benchmark slice
+  :status unsat
+  :logic QF_BV
+  :extrafuns ((x1 BitVec[4]))
+  :extrafuns ((y1 BitVec[4]))
+  :extrafuns ((x2 BitVec[2]))
+  :extrafuns ((y2 BitVec[2]))
+  :extrafuns ((x3 BitVec[1]))
+  :extrafuns ((y3 BitVec[1]))
+  :assumption (= x1 y1)
+  :assumption (= x1 (concat x2 x2))
+  :assumption (= x2 (concat x3 x3))
+  :assumption (= y1 (concat y2 y2))
+  :assumption (= y2 (concat y3 y3))
+  :formula (not (= x3 y3))
+)
diff --git a/test/regress/regress0/bv/divtest.smt2 b/test/regress/regress0/bv/divtest.smt2
new file mode 100644
index 0000000..fe91cb8
--- /dev/null
+++ b/test/regress/regress0/bv/divtest.smt2
@@ -0,0 +1,53 @@
+(set-logic QF_BV)
+(set-info :status unsat)
+(declare-fun x1 () (_ BitVec 12))
+(declare-fun x2 () (_ BitVec 12))
+(declare-fun x3 () (_ BitVec 12))
+
+(declare-fun y1 () (_ BitVec 12))
+(declare-fun y2 () (_ BitVec 12))
+(declare-fun y3 () (_ BitVec 12))
+
+(declare-fun z1 () (_ BitVec 12))
+(declare-fun z2 () (_ BitVec 12))
+(declare-fun z3 () (_ BitVec 12))
+
+(declare-fun a () (_ BitVec 12))
+
+(declare-fun x01 () (_ BitVec 10))
+(declare-fun x02 () (_ BitVec 10))
+(declare-fun x03 () (_ BitVec 10))
+
+(declare-fun y01 () (_ BitVec 10))
+(declare-fun y02 () (_ BitVec 10))
+(declare-fun y03 () (_ BitVec 10))
+
+(declare-fun z01 () (_ BitVec 10))
+(declare-fun z02 () (_ BitVec 10))
+(declare-fun z03 () (_ BitVec 10))
+
+(declare-fun a0 () (_ BitVec 10))
+
+(assert
+(or 
+(and 
+	(= a (_ bv0 12))
+	(or (not (= (bvudiv x1 a) (bvudiv x2 a)))
+	    (not (= (bvudiv x1 a) (bvudiv x3 a)))
+	    (not (= (bvudiv x2 a) (bvudiv x3 a))))
+	(or (and (= x1 y1) (= y1 x2))
+	    (and (= x1 z1) (= z1 x2)))
+	(or (and (= x2 y2) (= y2 x3))
+	    (and (= x2 z2) (= z2 x3))))
+
+(and 
+	(= a0 (_ bv0 10))
+	(or (not (= (bvurem x01 a0) (bvurem x02 a0)))
+	    (not (= (bvurem x01 a0) (bvurem x03 a0)))
+	    (not (= (bvurem x02 a0) (bvurem x03 a0))))
+	(or (and (= x01 y01) (= y01 x02))
+	    (and (= x01 z01) (= z01 x02)))
+	(or (and (= x02 y02) (= y02 x03))
+	    (and (= x02 z02) (= z02 x03))))))
+	    
+(check-sat)
diff --git a/test/regress/regress0/bv/fuzz01.smt b/test/regress/regress0/bv/fuzz01.smt
new file mode 100644
index 0000000..df6b543
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz01.smt
@@ -0,0 +1,183 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status sat
+:extrafuns ((v0 BitVec[16]))
+:extrafuns ((v1 BitVec[2]))
+:extrafuns ((v2 BitVec[11]))
+:extrafuns ((v3 BitVec[5]))
+:extrafuns ((v4 BitVec[15]))
+:formula
+(let (?e5 bv0[1])
+(let (?e6 (ite (bvult v4 (sign_extend[13] v1)) bv1[1] bv0[1]))
+(let (?e7 (bvadd (sign_extend[9] v1) v2))
+(let (?e8 (bvcomp v4 v4))
+(let (?e9 (bvadd ?e7 (zero_extend[10] ?e6)))
+(let (?e10 (bvand v0 (sign_extend[11] v3)))
+(let (?e11 (ite (bvsge (zero_extend[11] v3) v0) bv1[1] bv0[1]))
+(let (?e12 (ite (bvsge (zero_extend[9] v1) ?e9) bv1[1] bv0[1]))
+(let (?e13 (repeat[1] v0))
+(let (?e14 (bvshl ?e6 ?e12))
+(let (?e15 (ite (= bv1[1] (extract[0:0] v0)) ?e9 (zero_extend[10] ?e6)))
+(let (?e16 (ite (bvsle (sign_extend[9] v1) v2) bv1[1] bv0[1]))
+(let (?e17 (ite (bvsge v4 (zero_extend[14] ?e6)) bv1[1] bv0[1]))
+(let (?e18 (bvcomp (sign_extend[10] ?e6) ?e9))
+(let (?e19 (ite (bvsle ?e15 ?e15) bv1[1] bv0[1]))
+(let (?e20 (ite (bvule ?e10 (zero_extend[15] ?e5)) bv1[1] bv0[1]))
+(flet ($e21 (= (zero_extend[10] ?e18) ?e9))
+(flet ($e22 (= ?e7 ?e7))
+(flet ($e23 (= ?e17 ?e6))
+(flet ($e24 (= (zero_extend[15] ?e17) ?e10))
+(flet ($e25 (= (zero_extend[10] ?e16) ?e7))
+(flet ($e26 (= (sign_extend[13] v1) v4))
+(flet ($e27 (= (sign_extend[15] ?e16) v0))
+(flet ($e28 (= (sign_extend[15] ?e18) ?e10))
+(flet ($e29 (= ?e7 (sign_extend[10] ?e18)))
+(flet ($e30 (= ?e9 (sign_extend[9] v1)))
+(flet ($e31 (= ?e11 ?e18))
+(flet ($e32 (= (sign_extend[15] ?e20) ?e10))
+(flet ($e33 (= ?e18 ?e8))
+(flet ($e34 (= ?e14 ?e6))
+(flet ($e35 (= (zero_extend[15] ?e20) v0))
+(flet ($e36 (= v4 (sign_extend[14] ?e11)))
+(flet ($e37 (= (sign_extend[1] v4) ?e13))
+(flet ($e38 (= ?e20 ?e16))
+(flet ($e39 (= v1 (sign_extend[1] ?e14)))
+(flet ($e40 (= ?e5 ?e19))
+(flet ($e41 (= ?e7 (sign_extend[10] ?e14)))
+(flet ($e42 (= ?e15 (sign_extend[6] v3)))
+(flet ($e43 (= ?e18 ?e18))
+(flet ($e44 (= ?e16 ?e8))
+(flet ($e45 (= (sign_extend[15] ?e8) v0))
+(flet ($e46 (= (zero_extend[4] ?e15) v4))
+(flet ($e47 (= (sign_extend[14] ?e20) v4))
+(flet ($e48 (= v3 (sign_extend[4] ?e17)))
+(flet ($e49 (= ?e17 ?e6))
+(flet ($e50 (= ?e10 (sign_extend[15] ?e16)))
+(flet ($e51 (= ?e16 ?e18))
+(flet ($e52 (= (sign_extend[10] ?e12) ?e9))
+(flet ($e53 (= ?e8 ?e19))
+(flet ($e54 (= (zero_extend[1] ?e14) v1))
+(flet ($e55 (= v1 (sign_extend[1] ?e6)))
+(flet ($e56 (= v4 (zero_extend[14] ?e14)))
+(flet ($e57 (= ?e17 ?e20))
+(flet ($e58 (= ?e20 ?e11))
+(flet ($e59 (= (zero_extend[4] ?e6) v3))
+(flet ($e60 (= v0 (zero_extend[5] ?e9)))
+(flet ($e61 (= v0 (sign_extend[15] ?e17)))
+(flet ($e62 (= ?e15 ?e9))
+(flet ($e63 (= (sign_extend[4] ?e15) v4))
+(flet ($e64 (= (zero_extend[10] ?e16) ?e15))
+(flet ($e65 (= v4 (zero_extend[14] ?e18)))
+(flet ($e66 (= (sign_extend[10] ?e14) ?e9))
+(flet ($e67 (= ?e20 ?e17))
+(flet ($e68 (= ?e14 ?e18))
+(flet ($e69 (= ?e10 (sign_extend[5] ?e9)))
+(flet ($e70 (= ?e5 ?e16))
+(flet ($e71 (= (zero_extend[10] ?e19) ?e15))
+(flet ($e72 (= ?e15 ?e9))
+(flet ($e73 (= ?e12 ?e11))
+(flet ($e74 (= (sign_extend[10] ?e14) ?e7))
+(flet ($e75 (= ?e20 ?e20))
+(flet ($e76 (= ?e12 ?e18))
+(flet ($e77 (= ?e20 ?e16))
+(flet ($e78 (= ?e17 ?e16))
+(flet ($e79 (= (zero_extend[14] ?e17) v4))
+(flet ($e80 (= ?e7 (sign_extend[10] ?e8)))
+(flet ($e81 (= ?e11 ?e20))
+(flet ($e82 (= ?e9 (sign_extend[10] ?e8)))
+(flet ($e83 (= v0 (zero_extend[15] ?e18)))
+(flet ($e84 (= ?e17 ?e12))
+(flet ($e85 (= (zero_extend[4] ?e18) v3))
+(flet ($e86 (= v1 (sign_extend[1] ?e5)))
+(flet ($e87 (= ?e14 ?e5))
+(flet ($e88 (= ?e13 (zero_extend[15] ?e14)))
+(flet ($e89 (= ?e19 ?e16))
+(flet ($e90 (= ?e20 ?e17))
+(flet ($e91 (= ?e15 v2))
+(flet ($e92 (or $e72 $e38))
+(flet ($e93 (if_then_else $e58 $e65 $e60))
+(flet ($e94 (not $e71))
+(flet ($e95 (and $e75 $e63))
+(flet ($e96 (and $e82 $e53))
+(flet ($e97 (iff $e22 $e59))
+(flet ($e98 (if_then_else $e96 $e41 $e29))
+(flet ($e99 (not $e46))
+(flet ($e100 (not $e39))
+(flet ($e101 (not $e62))
+(flet ($e102 (iff $e91 $e83))
+(flet ($e103 (implies $e51 $e61))
+(flet ($e104 (not $e33))
+(flet ($e105 (xor $e84 $e45))
+(flet ($e106 (implies $e54 $e50))
+(flet ($e107 (iff $e40 $e57))
+(flet ($e108 (xor $e30 $e89))
+(flet ($e109 (implies $e68 $e103))
+(flet ($e110 (if_then_else $e101 $e52 $e99))
+(flet ($e111 (or $e80 $e110))
+(flet ($e112 (iff $e108 $e88))
+(flet ($e113 (xor $e86 $e78))
+(flet ($e114 (not $e48))
+(flet ($e115 (if_then_else $e67 $e92 $e49))
+(flet ($e116 (implies $e77 $e93))
+(flet ($e117 (and $e26 $e25))
+(flet ($e118 (or $e47 $e117))
+(flet ($e119 (or $e87 $e21))
+(flet ($e120 (not $e64))
+(flet ($e121 (not $e119))
+(flet ($e122 (and $e106 $e118))
+(flet ($e123 (or $e114 $e43))
+(flet ($e124 (implies $e100 $e74))
+(flet ($e125 (iff $e123 $e109))
+(flet ($e126 (iff $e23 $e37))
+(flet ($e127 (not $e121))
+(flet ($e128 (and $e70 $e98))
+(flet ($e129 (if_then_else $e76 $e90 $e122))
+(flet ($e130 (iff $e81 $e111))
+(flet ($e131 (implies $e24 $e24))
+(flet ($e132 (iff $e130 $e42))
+(flet ($e133 (if_then_else $e79 $e34 $e94))
+(flet ($e134 (implies $e102 $e56))
+(flet ($e135 (or $e66 $e27))
+(flet ($e136 (and $e131 $e55))
+(flet ($e137 (iff $e105 $e120))
+(flet ($e138 (if_then_else $e129 $e85 $e32))
+(flet ($e139 (xor $e44 $e132))
+(flet ($e140 (xor $e133 $e139))
+(flet ($e141 (and $e134 $e128))
+(flet ($e142 (or $e127 $e113))
+(flet ($e143 (implies $e136 $e136))
+(flet ($e144 (iff $e143 $e36))
+(flet ($e145 (not $e144))
+(flet ($e146 (if_then_else $e35 $e137 $e142))
+(flet ($e147 (if_then_else $e116 $e126 $e112))
+(flet ($e148 (and $e141 $e97))
+(flet ($e149 (implies $e146 $e115))
+(flet ($e150 (not $e140))
+(flet ($e151 (and $e150 $e95))
+(flet ($e152 (if_then_else $e147 $e138 $e147))
+(flet ($e153 (or $e135 $e31))
+(flet ($e154 (iff $e148 $e73))
+(flet ($e155 (or $e152 $e69))
+(flet ($e156 (not $e107))
+(flet ($e157 (if_then_else $e149 $e28 $e104))
+(flet ($e158 (iff $e157 $e124))
+(flet ($e159 (iff $e125 $e151))
+(flet ($e160 (if_then_else $e154 $e159 $e145))
+(flet ($e161 (iff $e155 $e155))
+(flet ($e162 (iff $e160 $e160))
+(flet ($e163 (iff $e158 $e156))
+(flet ($e164 (iff $e162 $e162))
+(flet ($e165 (and $e163 $e161))
+(flet ($e166 (xor $e164 $e165))
+(flet ($e167 (or $e166 $e166))
+(flet ($e168 (or $e167 $e167))
+(flet ($e169 (iff $e153 $e153))
+(flet ($e170 (or $e168 $e168))
+(flet ($e171 (or $e169 $e169))
+(flet ($e172 (not $e171))
+(flet ($e173 (implies $e170 $e170))
+(flet ($e174 (not $e172))
+(flet ($e175 (iff $e173 $e174))
+$e175
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz02.delta01.smt b/test/regress/regress0/bv/fuzz02.delta01.smt
new file mode 100644
index 0000000..1ef924e
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz02.delta01.smt
@@ -0,0 +1,18 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v2 BitVec[9]))
+:status unsat
+:formula
+(let (?n1 bv0[2])
+(let (?n2 bv0[6])
+(flet ($n3 (bvult v2 v2))
+(let (?n4 bv1[1])
+(let (?n5 bv0[1])
+(let (?n6 (ite $n3 ?n4 ?n5))
+(let (?n7 (concat ?n2 ?n6))
+(let (?n8 bv0[7])
+(let (?n9 (bvcomp ?n7 ?n8))
+(let (?n10 (zero_extend[1] ?n9))
+(flet ($n11 (= ?n1 ?n10))
+$n11
+))))))))))))
diff --git a/test/regress/regress0/bv/fuzz02.smt b/test/regress/regress0/bv/fuzz02.smt
new file mode 100644
index 0000000..41b616e
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz02.smt
@@ -0,0 +1,122 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status sat
+:extrafuns ((v0 BitVec[3]))
+:extrafuns ((v1 BitVec[12]))
+:extrafuns ((v2 BitVec[9]))
+:formula
+(let (?e3 bv10[9])
+(let (?e4 (extract[6:6] ?e3))
+(let (?e5 (ite (bvult v2 v2) bv1[1] bv0[1]))
+(let (?e6 (ite (bvsgt ?e4 ?e4) bv1[1] bv0[1]))
+(let (?e7 (sign_extend[5] ?e6))
+(let (?e8 (concat ?e7 ?e5))
+(let (?e9 (bvcomp ?e8 (zero_extend[1] ?e7)))
+(let (?e10 (ite (bvule ?e7 (zero_extend[5] ?e9)) bv1[1] bv0[1]))
+(let (?e11 (bvadd (sign_extend[2] ?e10) v0))
+(let (?e12 (extract[1:0] v0))
+(let (?e13 (ite (bvslt ?e12 ?e12) bv1[1] bv0[1]))
+(let (?e14 (ite (bvult ?e7 (sign_extend[4] ?e12)) bv1[1] bv0[1]))
+(let (?e15 (bvlshr (sign_extend[8] ?e4) v2))
+(let (?e16 (repeat[2] v0))
+(let (?e17 (rotate_right[4] ?e15))
+(let (?e18 (bvxor ?e14 ?e14))
+(let (?e19 (bvand v2 (sign_extend[7] ?e12)))
+(let (?e20 (bvnot v1))
+(flet ($e21 (= ?e15 ?e3))
+(flet ($e22 (= (sign_extend[6] ?e9) ?e8))
+(flet ($e23 (= ?e6 ?e4))
+(flet ($e24 (= ?e11 (zero_extend[2] ?e13)))
+(flet ($e25 (= v0 (zero_extend[2] ?e13)))
+(flet ($e26 (= (sign_extend[1] ?e4) ?e12))
+(flet ($e27 (= ?e15 ?e3))
+(flet ($e28 (= ?e3 ?e19))
+(flet ($e29 (= (zero_extend[8] ?e14) ?e15))
+(flet ($e30 (= v0 (sign_extend[2] ?e6)))
+(flet ($e31 (= ?e11 (sign_extend[2] ?e4)))
+(flet ($e32 (= ?e7 (zero_extend[5] ?e6)))
+(flet ($e33 (= ?e5 ?e5))
+(flet ($e34 (= (zero_extend[8] ?e6) v2))
+(flet ($e35 (= ?e20 (zero_extend[3] ?e3)))
+(flet ($e36 (= (zero_extend[8] ?e4) ?e15))
+(flet ($e37 (= ?e3 (sign_extend[8] ?e5)))
+(flet ($e38 (= (sign_extend[11] ?e9) v1))
+(flet ($e39 (= (zero_extend[1] ?e9) ?e12))
+(flet ($e40 (= (sign_extend[6] v0) ?e15))
+(flet ($e41 (= ?e7 (zero_extend[5] ?e14)))
+(flet ($e42 (= ?e6 ?e14))
+(flet ($e43 (= ?e16 (zero_extend[5] ?e4)))
+(flet ($e44 (= (zero_extend[8] ?e9) v2))
+(flet ($e45 (= v1 (zero_extend[11] ?e5)))
+(flet ($e46 (= ?e8 (zero_extend[6] ?e4)))
+(flet ($e47 (= (sign_extend[1] ?e13) ?e12))
+(flet ($e48 (= (zero_extend[11] ?e18) v1))
+(flet ($e49 (= (zero_extend[11] ?e5) v1))
+(flet ($e50 (= ?e15 (sign_extend[8] ?e4)))
+(flet ($e51 (= ?e13 ?e14))
+(flet ($e52 (= (zero_extend[2] ?e5) ?e11))
+(flet ($e53 (= (sign_extend[11] ?e9) v1))
+(flet ($e54 (= ?e8 (sign_extend[6] ?e5)))
+(flet ($e55 (= (sign_extend[7] ?e12) v2))
+(flet ($e56 (= ?e20 (sign_extend[3] ?e15)))
+(flet ($e57 (= ?e15 (sign_extend[6] ?e11)))
+(flet ($e58 (= ?e6 ?e4))
+(flet ($e59 (= (sign_extend[8] ?e10) v2))
+(flet ($e60 (= (zero_extend[8] ?e10) ?e19))
+(flet ($e61 (= ?e9 ?e6))
+(flet ($e62 (= ?e11 (sign_extend[2] ?e9)))
+(flet ($e63 (= v2 (zero_extend[8] ?e18)))
+(flet ($e64 (= (sign_extend[2] ?e10) ?e11))
+(flet ($e65 (= ?e5 ?e5))
+(flet ($e66 (= (zero_extend[3] ?e16) ?e17))
+(flet ($e67 (if_then_else $e34 $e37 $e22))
+(flet ($e68 (xor $e61 $e63))
+(flet ($e69 (iff $e55 $e53))
+(flet ($e70 (not $e51))
+(flet ($e71 (or $e70 $e56))
+(flet ($e72 (or $e23 $e54))
+(flet ($e73 (or $e43 $e39))
+(flet ($e74 (implies $e58 $e32))
+(flet ($e75 (and $e21 $e59))
+(flet ($e76 (implies $e33 $e38))
+(flet ($e77 (and $e41 $e57))
+(flet ($e78 (if_then_else $e77 $e74 $e64))
+(flet ($e79 (iff $e36 $e52))
+(flet ($e80 (or $e29 $e25))
+(flet ($e81 (iff $e68 $e62))
+(flet ($e82 (xor $e78 $e76))
+(flet ($e83 (xor $e66 $e69))
+(flet ($e84 (or $e45 $e27))
+(flet ($e85 (xor $e83 $e79))
+(flet ($e86 (if_then_else $e72 $e72 $e65))
+(flet ($e87 (iff $e28 $e75))
+(flet ($e88 (if_then_else $e26 $e73 $e47))
+(flet ($e89 (xor $e60 $e60))
+(flet ($e90 (xor $e49 $e42))
+(flet ($e91 (iff $e44 $e48))
+(flet ($e92 (and $e71 $e80))
+(flet ($e93 (not $e88))
+(flet ($e94 (iff $e35 $e35))
+(flet ($e95 (iff $e81 $e90))
+(flet ($e96 (xor $e89 $e85))
+(flet ($e97 (xor $e82 $e94))
+(flet ($e98 (or $e92 $e40))
+(flet ($e99 (implies $e93 $e24))
+(flet ($e100 (if_then_else $e46 $e31 $e50))
+(flet ($e101 (or $e86 $e97))
+(flet ($e102 (and $e101 $e67))
+(flet ($e103 (if_then_else $e87 $e96 $e30))
+(flet ($e104 (not $e100))
+(flet ($e105 (xor $e91 $e104))
+(flet ($e106 (if_then_else $e84 $e102 $e84))
+(flet ($e107 (implies $e106 $e98))
+(flet ($e108 (implies $e107 $e103))
+(flet ($e109 (or $e95 $e95))
+(flet ($e110 (implies $e108 $e109))
+(flet ($e111 (not $e99))
+(flet ($e112 (or $e110 $e105))
+(flet ($e113 (or $e112 $e112))
+(flet ($e114 (xor $e111 $e113))
+$e114
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz03.smt b/test/regress/regress0/bv/fuzz03.smt
new file mode 100644
index 0000000..fe0b5b1
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz03.smt
@@ -0,0 +1,81 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status sat
+:extrafuns ((v0 BitVec[1]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v2 BitVec[11]))
+:extrafuns ((v3 BitVec[9]))
+:formula
+(let (?e4 bv0[1])
+(let (?e5 bv125[7])
+(let (?e6 (bvxor v2 (zero_extend[2] v3)))
+(let (?e7 (ite (bvule (zero_extend[2] v3) ?e6) bv1[1] bv0[1]))
+(let (?e8 (ite (= ?e6 v2) bv1[1] bv0[1]))
+(let (?e9 (ite (= bv1[1] (extract[0:0] ?e8)) (zero_extend[10] ?e4) ?e6))
+(let (?e10 (ite (bvule (sign_extend[4] ?e5) ?e6) bv1[1] bv0[1]))
+(let (?e11 (bvnor (zero_extend[8] ?e10) v3))
+(let (?e12 (ite (bvugt (sign_extend[8] ?e7) ?e11) bv1[1] bv0[1]))
+(let (?e13 (bvor ?e6 (zero_extend[10] ?e12)))
+(let (?e14 (bvor ?e4 v0))
+(let (?e15 (bvnor ?e13 (zero_extend[2] ?e11)))
+(let (?e16 (sign_extend[5] ?e15))
+(let (?e17 (zero_extend[5] ?e6))
+(let (?e18 (ite (bvugt (sign_extend[8] v0) ?e11) bv1[1] bv0[1]))
+(let (?e19 (rotate_right[0] v1))
+(flet ($e20 (= ?e18 ?e12))
+(flet ($e21 (= (sign_extend[10] ?e8) ?e13))
+(flet ($e22 (= ?e16 ?e16))
+(flet ($e23 (= (sign_extend[10] ?e14) ?e9))
+(flet ($e24 (= v3 (zero_extend[8] ?e14)))
+(flet ($e25 (= v0 ?e10))
+(flet ($e26 (= (sign_extend[8] ?e7) v3))
+(flet ($e27 (= (sign_extend[5] ?e9) ?e16))
+(flet ($e28 (= ?e14 ?e7))
+(flet ($e29 (= ?e12 ?e18))
+(flet ($e30 (= ?e6 ?e13))
+(flet ($e31 (= ?e9 (zero_extend[10] ?e12)))
+(flet ($e32 (= ?e16 (sign_extend[5] v2)))
+(flet ($e33 (= v1 v1))
+(flet ($e34 (= (sign_extend[12] v1) ?e16))
+(flet ($e35 (= (sign_extend[5] ?e15) ?e16))
+(flet ($e36 (= v2 (zero_extend[7] ?e19)))
+(flet ($e37 (= ?e13 (sign_extend[4] ?e5)))
+(flet ($e38 (= (zero_extend[10] ?e14) ?e15))
+(flet ($e39 (= (sign_extend[5] v1) ?e11))
+(flet ($e40 (= (zero_extend[3] ?e7) v1))
+(flet ($e41 (= (sign_extend[7] v1) ?e13))
+(flet ($e42 (= v2 (zero_extend[10] v0)))
+(flet ($e43 (= ?e13 (zero_extend[10] ?e4)))
+(flet ($e44 (= ?e9 (sign_extend[7] ?e19)))
+(flet ($e45 (= ?e15 (sign_extend[10] v0)))
+(flet ($e46 (= ?e17 (zero_extend[5] ?e6)))
+(flet ($e47 (iff $e38 $e44))
+(flet ($e48 (and $e23 $e36))
+(flet ($e49 (not $e25))
+(flet ($e50 (xor $e32 $e39))
+(flet ($e51 (if_then_else $e30 $e26 $e29))
+(flet ($e52 (not $e24))
+(flet ($e53 (if_then_else $e43 $e34 $e41))
+(flet ($e54 (iff $e47 $e33))
+(flet ($e55 (iff $e28 $e37))
+(flet ($e56 (or $e27 $e53))
+(flet ($e57 (and $e52 $e56))
+(flet ($e58 (if_then_else $e48 $e50 $e50))
+(flet ($e59 (if_then_else $e21 $e40 $e57))
+(flet ($e60 (implies $e58 $e55))
+(flet ($e61 (implies $e54 $e45))
+(flet ($e62 (implies $e35 $e61))
+(flet ($e63 (iff $e22 $e62))
+(flet ($e64 (or $e63 $e59))
+(flet ($e65 (and $e42 $e60))
+(flet ($e66 (or $e20 $e51))
+(flet ($e67 (or $e49 $e65))
+(flet ($e68 (not $e31))
+(flet ($e69 (xor $e64 $e68))
+(flet ($e70 (implies $e66 $e66))
+(flet ($e71 (iff $e46 $e69))
+(flet ($e72 (implies $e70 $e71))
+(flet ($e73 (implies $e72 $e67))
+$e73
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz04.smt b/test/regress/regress0/bv/fuzz04.smt
new file mode 100644
index 0000000..c5598a2
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz04.smt
@@ -0,0 +1,249 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status sat
+:extrafuns ((v0 BitVec[3]))
+:extrafuns ((v1 BitVec[9]))
+:extrafuns ((v2 BitVec[15]))
+:extrafuns ((v3 BitVec[5]))
+:formula
+(let (?e4 bv111[9])
+(let (?e5 bv6[3])
+(let (?e6 (bvor v1 (zero_extend[6] v0)))
+(let (?e7 (bvxor (sign_extend[4] v3) v1))
+(let (?e8 (bvlshr v1 ?e6))
+(let (?e9 (bvnot v0))
+(let (?e10 (bvshl v1 (sign_extend[6] v0)))
+(let (?e11 (bvnot v1))
+(let (?e12 (bvmul ?e7 ?e7))
+(let (?e13 (ite (bvsgt ?e10 (zero_extend[4] v3)) bv1[1] bv0[1]))
+(let (?e14 (bvnor ?e11 ?e6))
+(let (?e15 (bvnor v2 (zero_extend[6] ?e7)))
+(let (?e16 (ite (= bv1[1] (extract[0:0] v3)) v1 ?e6))
+(let (?e17 (ite (bvule ?e10 ?e14) bv1[1] bv0[1]))
+(let (?e18 (ite (bvuge (sign_extend[2] ?e17) ?e5) bv1[1] bv0[1]))
+(let (?e19 (bvnot ?e10))
+(let (?e20 (ite (bvuge ?e13 ?e18) bv1[1] bv0[1]))
+(let (?e21 (bvneg ?e15))
+(let (?e22 (bvmul ?e7 ?e10))
+(let (?e23 (rotate_left[2] v1))
+(let (?e24 (bvneg ?e13))
+(let (?e25 (sign_extend[7] ?e22))
+(let (?e26 (bvnand (sign_extend[6] v0) v1))
+(let (?e27 (bvxnor (zero_extend[1] ?e21) ?e25))
+(let (?e28 (bvnand ?e9 v0))
+(let (?e29 (bvor ?e15 (sign_extend[6] ?e26)))
+(let (?e30 (bvsub ?e16 (sign_extend[8] ?e20)))
+(let (?e31 (bvand (sign_extend[2] ?e13) ?e28))
+(let (?e32 (rotate_right[2] ?e12))
+(let (?e33 (repeat[1] ?e25))
+(let (?e34 (ite (= bv1[1] (extract[4:4] ?e19)) (zero_extend[6] ?e9) ?e23))
+(let (?e35 (bvlshr ?e8 (zero_extend[6] ?e31)))
+(let (?e36 (rotate_left[5] ?e4))
+(flet ($e37 (= (sign_extend[8] ?e24) ?e12))
+(flet ($e38 (= (sign_extend[10] v3) v2))
+(flet ($e39 (= ?e29 (sign_extend[6] ?e32)))
+(flet ($e40 (= ?e19 (sign_extend[6] ?e9)))
+(flet ($e41 (= (zero_extend[6] ?e9) ?e6))
+(flet ($e42 (= ?e25 (zero_extend[15] ?e17)))
+(flet ($e43 (= ?e25 (sign_extend[15] ?e17)))
+(flet ($e44 (= ?e25 ?e25))
+(flet ($e45 (= v2 (sign_extend[12] ?e31)))
+(flet ($e46 (= (sign_extend[15] ?e17) ?e25))
+(flet ($e47 (= ?e12 (zero_extend[6] ?e9)))
+(flet ($e48 (= ?e29 (zero_extend[6] ?e4)))
+(flet ($e49 (= (zero_extend[8] ?e24) ?e26))
+(flet ($e50 (= (zero_extend[4] ?e17) v3))
+(flet ($e51 (= ?e7 ?e23))
+(flet ($e52 (= (sign_extend[8] ?e18) ?e4))
+(flet ($e53 (= v1 ?e26))
+(flet ($e54 (= (sign_extend[8] ?e18) ?e16))
+(flet ($e55 (= ?e16 ?e36))
+(flet ($e56 (= ?e35 v1))
+(flet ($e57 (= ?e11 ?e36))
+(flet ($e58 (= ?e16 (sign_extend[6] ?e5)))
+(flet ($e59 (= ?e22 ?e35))
+(flet ($e60 (= ?e33 (sign_extend[7] ?e6)))
+(flet ($e61 (= v2 (sign_extend[12] ?e9)))
+(flet ($e62 (= ?e12 ?e12))
+(flet ($e63 (= v0 (zero_extend[2] ?e18)))
+(flet ($e64 (= ?e16 ?e7))
+(flet ($e65 (= ?e22 (sign_extend[8] ?e13)))
+(flet ($e66 (= (zero_extend[7] ?e8) ?e33))
+(flet ($e67 (= v1 ?e35))
+(flet ($e68 (= ?e30 (zero_extend[6] ?e28)))
+(flet ($e69 (= ?e6 (sign_extend[6] ?e31)))
+(flet ($e70 (= ?e23 ?e35))
+(flet ($e71 (= ?e11 ?e14))
+(flet ($e72 (= (zero_extend[2] ?e20) v0))
+(flet ($e73 (= (sign_extend[8] ?e18) ?e26))
+(flet ($e74 (= (zero_extend[10] v3) ?e21))
+(flet ($e75 (= ?e19 (zero_extend[8] ?e20)))
+(flet ($e76 (= ?e26 (sign_extend[8] ?e20)))
+(flet ($e77 (= ?e29 (sign_extend[6] ?e16)))
+(flet ($e78 (= (sign_extend[2] ?e17) ?e28))
+(flet ($e79 (= ?e30 ?e10))
+(flet ($e80 (= ?e20 ?e20))
+(flet ($e81 (= ?e15 (zero_extend[6] ?e19)))
+(flet ($e82 (= ?e10 (zero_extend[8] ?e18)))
+(flet ($e83 (= (zero_extend[14] ?e24) v2))
+(flet ($e84 (= (sign_extend[8] ?e17) ?e4))
+(flet ($e85 (= ?e21 (sign_extend[14] ?e24)))
+(flet ($e86 (= ?e22 (sign_extend[8] ?e24)))
+(flet ($e87 (= (zero_extend[8] ?e18) ?e23))
+(flet ($e88 (= (sign_extend[6] ?e31) ?e10))
+(flet ($e89 (= ?e21 (sign_extend[6] ?e7)))
+(flet ($e90 (= ?e30 (sign_extend[6] v0)))
+(flet ($e91 (= ?e33 (sign_extend[7] ?e36)))
+(flet ($e92 (= ?e34 (sign_extend[6] ?e9)))
+(flet ($e93 (= (zero_extend[2] ?e17) ?e9))
+(flet ($e94 (= ?e15 (zero_extend[6] ?e16)))
+(flet ($e95 (= ?e25 (sign_extend[7] ?e8)))
+(flet ($e96 (= ?e12 ?e8))
+(flet ($e97 (= v1 (sign_extend[8] ?e13)))
+(flet ($e98 (= ?e32 ?e8))
+(flet ($e99 (= v0 v0))
+(flet ($e100 (= ?e14 (sign_extend[6] ?e5)))
+(flet ($e101 (= (sign_extend[6] ?e34) ?e29))
+(flet ($e102 (= ?e35 (sign_extend[8] ?e13)))
+(flet ($e103 (= ?e6 ?e12))
+(flet ($e104 (= (zero_extend[8] ?e18) ?e36))
+(flet ($e105 (= ?e36 (zero_extend[8] ?e17)))
+(flet ($e106 (= (zero_extend[6] ?e5) ?e4))
+(flet ($e107 (= ?e34 (zero_extend[6] ?e5)))
+(flet ($e108 (= (sign_extend[8] ?e17) ?e6))
+(flet ($e109 (= (sign_extend[8] ?e20) ?e4))
+(flet ($e110 (= ?e21 (zero_extend[6] ?e32)))
+(flet ($e111 (= (zero_extend[6] ?e9) ?e19))
+(flet ($e112 (= ?e6 (zero_extend[8] ?e13)))
+(flet ($e113 (= ?e25 (zero_extend[15] ?e24)))
+(flet ($e114 (= (sign_extend[8] ?e20) ?e10))
+(flet ($e115 (= (sign_extend[6] v1) v2))
+(flet ($e116 (= (sign_extend[6] v0) ?e7))
+(flet ($e117 (= v1 ?e8))
+(flet ($e118 (= (zero_extend[6] ?e11) ?e15))
+(flet ($e119 (= (sign_extend[6] ?e22) v2))
+(flet ($e120 (= (zero_extend[4] ?e18) v3))
+(flet ($e121 (= ?e10 v1))
+(flet ($e122 (= ?e10 ?e32))
+(flet ($e123 (= v1 (zero_extend[6] ?e28)))
+(flet ($e124 (= ?e25 ?e25))
+(flet ($e125 (= (zero_extend[2] ?e31) v3))
+(flet ($e126 (= ?e10 ?e8))
+(flet ($e127 (= ?e29 (sign_extend[12] v0)))
+(flet ($e128 (= ?e30 (zero_extend[6] ?e9)))
+(flet ($e129 (= v2 v2))
+(flet ($e130 (= (sign_extend[8] ?e18) ?e4))
+(flet ($e131 (= (sign_extend[8] ?e20) ?e36))
+(flet ($e132 (= ?e32 ?e22))
+(flet ($e133 (= ?e8 ?e16))
+(flet ($e134 (= (zero_extend[13] ?e5) ?e33))
+(flet ($e135 (= v2 (sign_extend[14] ?e20)))
+(flet ($e136 (= ?e27 ?e27))
+(flet ($e137 (xor $e68 $e88))
+(flet ($e138 (and $e111 $e56))
+(flet ($e139 (and $e39 $e84))
+(flet ($e140 (if_then_else $e139 $e116 $e75))
+(flet ($e141 (xor $e108 $e110))
+(flet ($e142 (xor $e78 $e44))
+(flet ($e143 (xor $e131 $e133))
+(flet ($e144 (and $e97 $e95))
+(flet ($e145 (or $e80 $e124))
+(flet ($e146 (xor $e58 $e45))
+(flet ($e147 (or $e99 $e42))
+(flet ($e148 (or $e67 $e118))
+(flet ($e149 (if_then_else $e47 $e102 $e102))
+(flet ($e150 (and $e106 $e43))
+(flet ($e151 (iff $e82 $e86))
+(flet ($e152 (if_then_else $e61 $e109 $e81))
+(flet ($e153 (iff $e120 $e150))
+(flet ($e154 (not $e144))
+(flet ($e155 (xor $e49 $e69))
+(flet ($e156 (iff $e48 $e115))
+(flet ($e157 (not $e57))
+(flet ($e158 (and $e154 $e94))
+(flet ($e159 (not $e113))
+(flet ($e160 (and $e126 $e89))
+(flet ($e161 (or $e157 $e159))
+(flet ($e162 (and $e77 $e98))
+(flet ($e163 (not $e85))
+(flet ($e164 (implies $e55 $e137))
+(flet ($e165 (xor $e148 $e100))
+(flet ($e166 (not $e60))
+(flet ($e167 (implies $e153 $e65))
+(flet ($e168 (implies $e76 $e141))
+(flet ($e169 (if_then_else $e51 $e165 $e149))
+(flet ($e170 (not $e70))
+(flet ($e171 (xor $e92 $e37))
+(flet ($e172 (and $e104 $e134))
+(flet ($e173 (xor $e130 $e64))
+(flet ($e174 (not $e138))
+(flet ($e175 (implies $e174 $e145))
+(flet ($e176 (iff $e38 $e101))
+(flet ($e177 (or $e146 $e122))
+(flet ($e178 (or $e123 $e172))
+(flet ($e179 (and $e63 $e114))
+(flet ($e180 (xor $e117 $e41))
+(flet ($e181 (or $e136 $e161))
+(flet ($e182 (implies $e121 $e151))
+(flet ($e183 (iff $e52 $e53))
+(flet ($e184 (implies $e79 $e103))
+(flet ($e185 (or $e87 $e183))
+(flet ($e186 (not $e50))
+(flet ($e187 (iff $e173 $e186))
+(flet ($e188 (if_then_else $e170 $e156 $e112))
+(flet ($e189 (implies $e179 $e142))
+(flet ($e190 (not $e71))
+(flet ($e191 (iff $e164 $e93))
+(flet ($e192 (if_then_else $e143 $e191 $e127))
+(flet ($e193 (and $e59 $e189))
+(flet ($e194 (if_then_else $e178 $e132 $e129))
+(flet ($e195 (and $e152 $e167))
+(flet ($e196 (if_then_else $e171 $e62 $e162))
+(flet ($e197 (xor $e192 $e192))
+(flet ($e198 (and $e188 $e135))
+(flet ($e199 (iff $e175 $e196))
+(flet ($e200 (xor $e73 $e193))
+(flet ($e201 (and $e168 $e176))
+(flet ($e202 (iff $e185 $e201))
+(flet ($e203 (xor $e190 $e91))
+(flet ($e204 (iff $e74 $e182))
+(flet ($e205 (xor $e194 $e147))
+(flet ($e206 (and $e128 $e187))
+(flet ($e207 (iff $e83 $e169))
+(flet ($e208 (iff $e177 $e197))
+(flet ($e209 (if_then_else $e166 $e199 $e96))
+(flet ($e210 (or $e119 $e46))
+(flet ($e211 (xor $e200 $e207))
+(flet ($e212 (xor $e205 $e209))
+(flet ($e213 (iff $e212 $e184))
+(flet ($e214 (or $e105 $e180))
+(flet ($e215 (and $e181 $e210))
+(flet ($e216 (xor $e155 $e204))
+(flet ($e217 (and $e213 $e66))
+(flet ($e218 (implies $e214 $e211))
+(flet ($e219 (if_then_else $e206 $e208 $e198))
+(flet ($e220 (xor $e215 $e216))
+(flet ($e221 (if_then_else $e218 $e90 $e203))
+(flet ($e222 (xor $e202 $e160))
+(flet ($e223 (xor $e125 $e158))
+(flet ($e224 (or $e220 $e195))
+(flet ($e225 (or $e219 $e54))
+(flet ($e226 (not $e223))
+(flet ($e227 (if_then_else $e140 $e217 $e140))
+(flet ($e228 (not $e226))
+(flet ($e229 (or $e222 $e224))
+(flet ($e230 (iff $e225 $e221))
+(flet ($e231 (and $e72 $e163))
+(flet ($e232 (and $e227 $e40))
+(flet ($e233 (not $e107))
+(flet ($e234 (and $e232 $e231))
+(flet ($e235 (and $e228 $e228))
+(flet ($e236 (not $e235))
+(flet ($e237 (iff $e229 $e230))
+(flet ($e238 (and $e236 $e233))
+(flet ($e239 (xor $e237 $e238))
+(flet ($e240 (not $e234))
+(flet ($e241 (and $e239 $e240))
+$e241
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz05.smt b/test/regress/regress0/bv/fuzz05.smt
new file mode 100644
index 0000000..6a64a72
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz05.smt
@@ -0,0 +1,282 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status sat
+:extrafuns ((v0 BitVec[12]))
+:extrafuns ((v1 BitVec[2]))
+:extrafuns ((v2 BitVec[13]))
+:extrafuns ((v3 BitVec[10]))
+:formula
+(let (?e4 bv47[10])
+(let (?e5 (bvshl (zero_extend[8] v1) v3))
+(let (?e6 (bvcomp v2 (zero_extend[11] v1)))
+(let (?e7 (ite (bvslt ?e5 ?e4) bv1[1] bv0[1]))
+(let (?e8 (ite (bvsgt ?e4 (zero_extend[9] ?e6)) bv1[1] bv0[1]))
+(let (?e9 (bvadd v1 (zero_extend[1] ?e6)))
+(let (?e10 (ite (bvsle (zero_extend[9] ?e7) ?e4) bv1[1] bv0[1]))
+(let (?e11 (rotate_left[0] ?e8))
+(let (?e12 (ite (= bv1[1] (extract[0:0] ?e7)) (zero_extend[1] ?e8) ?e9))
+(let (?e13 (bvadd ?e9 ?e9))
+(let (?e14 (rotate_right[0] ?e7))
+(let (?e15 (ite (bvslt (sign_extend[9] ?e6) ?e5) bv1[1] bv0[1]))
+(let (?e16 (ite (distinct ?e7 ?e6) bv1[1] bv0[1]))
+(let (?e17 (bvor ?e7 ?e8))
+(let (?e18 (bvand (zero_extend[1] ?e6) ?e9))
+(let (?e19 (ite (bvuge ?e18 (sign_extend[1] ?e16)) bv1[1] bv0[1]))
+(let (?e20 (ite (bvsgt ?e18 (sign_extend[1] ?e17)) bv1[1] bv0[1]))
+(let (?e21 (ite (= (sign_extend[3] v3) v2) bv1[1] bv0[1]))
+(let (?e22 (bvxor ?e10 ?e19))
+(let (?e23 (bvxor (zero_extend[1] ?e19) v1))
+(let (?e24 (ite (bvule v1 (sign_extend[1] ?e19)) bv1[1] bv0[1]))
+(let (?e25 (ite (bvuge ?e8 ?e17) bv1[1] bv0[1]))
+(let (?e26 (ite (bvsge ?e20 ?e22) bv1[1] bv0[1]))
+(let (?e27 (zero_extend[1] ?e22))
+(let (?e28 (bvsub (sign_extend[1] ?e10) v1))
+(let (?e29 (bvlshr ?e27 (sign_extend[1] ?e17)))
+(let (?e30 (concat ?e17 ?e4))
+(let (?e31 (bvnand (zero_extend[11] ?e23) v2))
+(let (?e32 (bvashr (zero_extend[9] ?e19) ?e5))
+(let (?e33 (bvmul ?e23 (zero_extend[1] ?e25)))
+(let (?e34 (repeat[1] ?e27))
+(let (?e35 (ite (bvuge ?e27 (zero_extend[1] ?e11)) bv1[1] bv0[1]))
+(let (?e36 (ite (= (sign_extend[1] ?e11) v1) bv1[1] bv0[1]))
+(let (?e37 (bvneg ?e31))
+(let (?e38 (ite (bvsgt ?e22 ?e14) bv1[1] bv0[1]))
+(let (?e39 (ite (bvsge ?e36 ?e8) bv1[1] bv0[1]))
+(let (?e40 (bvand ?e8 ?e14))
+(let (?e41 (bvand (zero_extend[12] ?e17) v2))
+(let (?e42 (ite (bvsle ?e35 ?e26) bv1[1] bv0[1]))
+(let (?e43 (ite (bvsle v2 (sign_extend[12] ?e21)) bv1[1] bv0[1]))
+(let (?e44 (bvshl ?e16 ?e42))
+(let (?e45 (ite (= ?e23 ?e29) bv1[1] bv0[1]))
+(let (?e46 (repeat[1] ?e41))
+(let (?e47 (bvcomp ?e10 ?e21))
+(let (?e48 (ite (= (zero_extend[9] ?e47) ?e4) bv1[1] bv0[1]))
+(let (?e49 (bvnand (zero_extend[11] ?e33) ?e41))
+(let (?e50 (ite (bvslt ?e44 ?e20) bv1[1] bv0[1]))
+(let (?e51 (ite (bvsgt ?e31 (sign_extend[12] ?e21)) bv1[1] bv0[1]))
+(let (?e52 (ite (bvslt v0 (zero_extend[11] ?e38)) bv1[1] bv0[1]))
+(flet ($e53 (= v1 ?e29))
+(flet ($e54 (= (zero_extend[1] ?e44) ?e13))
+(flet ($e55 (= ?e17 ?e44))
+(flet ($e56 (= ?e4 (zero_extend[9] ?e39)))
+(flet ($e57 (= (sign_extend[11] ?e14) v0))
+(flet ($e58 (= (zero_extend[12] ?e42) ?e37))
+(flet ($e59 (= ?e40 ?e36))
+(flet ($e60 (= ?e23 ?e33))
+(flet ($e61 (= (zero_extend[1] ?e24) ?e29))
+(flet ($e62 (= ?e28 (zero_extend[1] ?e50)))
+(flet ($e63 (= ?e6 ?e25))
+(flet ($e64 (= ?e49 (sign_extend[12] ?e21)))
+(flet ($e65 (= ?e20 ?e38))
+(flet ($e66 (= (zero_extend[1] ?e16) ?e18))
+(flet ($e67 (= ?e50 ?e16))
+(flet ($e68 (= ?e20 ?e48))
+(flet ($e69 (= ?e17 ?e21))
+(flet ($e70 (= (sign_extend[12] ?e44) ?e46))
+(flet ($e71 (= ?e51 ?e47))
+(flet ($e72 (= ?e5 (sign_extend[9] ?e16)))
+(flet ($e73 (= ?e16 ?e21))
+(flet ($e74 (= ?e5 (sign_extend[8] ?e27)))
+(flet ($e75 (= (zero_extend[9] ?e21) ?e5))
+(flet ($e76 (= (sign_extend[8] ?e28) ?e5))
+(flet ($e77 (= (sign_extend[9] ?e10) ?e32))
+(flet ($e78 (= ?e28 (sign_extend[1] ?e11)))
+(flet ($e79 (= ?e29 (sign_extend[1] ?e17)))
+(flet ($e80 (= ?e36 ?e15))
+(flet ($e81 (= (sign_extend[11] ?e45) v0))
+(flet ($e82 (= ?e27 (sign_extend[1] ?e40)))
+(flet ($e83 (= ?e28 (zero_extend[1] ?e44)))
+(flet ($e84 (= v2 (zero_extend[1] v0)))
+(flet ($e85 (= ?e32 (sign_extend[9] ?e47)))
+(flet ($e86 (= v3 (sign_extend[9] ?e24)))
+(flet ($e87 (= ?e46 (sign_extend[12] ?e52)))
+(flet ($e88 (= ?e46 ?e46))
+(flet ($e89 (= v2 (sign_extend[12] ?e20)))
+(flet ($e90 (= v0 (sign_extend[10] ?e23)))
+(flet ($e91 (= (zero_extend[9] ?e11) ?e4))
+(flet ($e92 (= ?e52 ?e17))
+(flet ($e93 (= v2 (zero_extend[12] ?e40)))
+(flet ($e94 (= ?e35 ?e51))
+(flet ($e95 (= ?e42 ?e10))
+(flet ($e96 (= ?e47 ?e43))
+(flet ($e97 (= (zero_extend[1] ?e11) v1))
+(flet ($e98 (= (zero_extend[1] ?e32) ?e30))
+(flet ($e99 (= ?e23 (zero_extend[1] ?e11)))
+(flet ($e100 (= ?e44 ?e22))
+(flet ($e101 (= ?e31 (sign_extend[12] ?e16)))
+(flet ($e102 (= ?e32 (zero_extend[8] ?e27)))
+(flet ($e103 (= (zero_extend[9] ?e45) ?e5))
+(flet ($e104 (= ?e27 ?e13))
+(flet ($e105 (= (zero_extend[1] ?e7) ?e13))
+(flet ($e106 (= ?e33 (zero_extend[1] ?e26)))
+(flet ($e107 (= ?e13 (zero_extend[1] ?e51)))
+(flet ($e108 (= ?e32 (zero_extend[9] ?e40)))
+(flet ($e109 (= ?e29 v1))
+(flet ($e110 (= ?e35 ?e20))
+(flet ($e111 (= ?e34 (sign_extend[1] ?e19)))
+(flet ($e112 (= ?e52 ?e52))
+(flet ($e113 (= (sign_extend[12] ?e40) ?e49))
+(flet ($e114 (= ?e47 ?e47))
+(flet ($e115 (= (zero_extend[12] ?e35) ?e46))
+(flet ($e116 (= (sign_extend[11] ?e35) v0))
+(flet ($e117 (= ?e4 (zero_extend[9] ?e38)))
+(flet ($e118 (= v2 (sign_extend[12] ?e7)))
+(flet ($e119 (= ?e47 ?e20))
+(flet ($e120 (= (zero_extend[1] ?e11) ?e9))
+(flet ($e121 (= ?e29 (zero_extend[1] ?e16)))
+(flet ($e122 (= v0 (zero_extend[11] ?e24)))
+(flet ($e123 (= ?e51 ?e36))
+(flet ($e124 (= (sign_extend[8] ?e13) v3))
+(flet ($e125 (= v1 (zero_extend[1] ?e45)))
+(flet ($e126 (= (sign_extend[1] ?e48) ?e33))
+(flet ($e127 (= ?e45 ?e7))
+(flet ($e128 (= ?e26 ?e47))
+(flet ($e129 (= (zero_extend[11] v1) ?e41))
+(flet ($e130 (= (sign_extend[1] v0) v2))
+(flet ($e131 (= ?e5 (sign_extend[9] ?e26)))
+(flet ($e132 (= (sign_extend[11] ?e48) v0))
+(flet ($e133 (= ?e38 ?e50))
+(flet ($e134 (= ?e13 v1))
+(flet ($e135 (= (sign_extend[1] ?e42) ?e23))
+(flet ($e136 (= ?e20 ?e7))
+(flet ($e137 (= ?e39 ?e19))
+(flet ($e138 (= ?e52 ?e38))
+(flet ($e139 (= ?e5 (zero_extend[9] ?e11)))
+(flet ($e140 (= (sign_extend[11] ?e34) ?e49))
+(flet ($e141 (= ?e18 ?e28))
+(flet ($e142 (= ?e43 ?e26))
+(flet ($e143 (= ?e14 ?e16))
+(flet ($e144 (= ?e10 ?e40))
+(flet ($e145 (= ?e6 ?e45))
+(flet ($e146 (= ?e29 ?e18))
+(flet ($e147 (= ?e5 (sign_extend[9] ?e48)))
+(flet ($e148 (= (zero_extend[9] ?e19) v3))
+(flet ($e149 (= ?e33 (sign_extend[1] ?e22)))
+(flet ($e150 (= ?e50 ?e10))
+(flet ($e151 (= (sign_extend[9] ?e35) v3))
+(flet ($e152 (= ?e23 (zero_extend[1] ?e21)))
+(flet ($e153 (= v2 (zero_extend[12] ?e15)))
+(flet ($e154 (= v1 (sign_extend[1] ?e38)))
+(flet ($e155 (= ?e23 (zero_extend[1] ?e22)))
+(flet ($e156 (= ?e34 (zero_extend[1] ?e42)))
+(flet ($e157 (= (zero_extend[9] ?e15) ?e4))
+(flet ($e158 (= v3 (sign_extend[9] ?e8)))
+(flet ($e159 (= (sign_extend[9] ?e14) ?e32))
+(flet ($e160 (= (sign_extend[10] ?e13) v0))
+(flet ($e161 (= (zero_extend[1] ?e35) ?e12))
+(flet ($e162 (iff $e69 $e132))
+(flet ($e163 (and $e62 $e124))
+(flet ($e164 (iff $e152 $e133))
+(flet ($e165 (not $e65))
+(flet ($e166 (and $e159 $e57))
+(flet ($e167 (and $e163 $e56))
+(flet ($e168 (and $e129 $e90))
+(flet ($e169 (if_then_else $e54 $e102 $e91))
+(flet ($e170 (xor $e127 $e61))
+(flet ($e171 (iff $e137 $e59))
+(flet ($e172 (implies $e87 $e78))
+(flet ($e173 (iff $e77 $e81))
+(flet ($e174 (if_then_else $e170 $e161 $e171))
+(flet ($e175 (if_then_else $e174 $e94 $e92))
+(flet ($e176 (or $e168 $e55))
+(flet ($e177 (and $e121 $e88))
+(flet ($e178 (or $e167 $e131))
+(flet ($e179 (or $e126 $e125))
+(flet ($e180 (or $e151 $e79))
+(flet ($e181 (not $e122))
+(flet ($e182 (or $e112 $e83))
+(flet ($e183 (or $e130 $e136))
+(flet ($e184 (xor $e105 $e153))
+(flet ($e185 (if_then_else $e148 $e128 $e66))
+(flet ($e186 (iff $e109 $e154))
+(flet ($e187 (and $e119 $e96))
+(flet ($e188 (if_then_else $e179 $e64 $e140))
+(flet ($e189 (xor $e134 $e123))
+(flet ($e190 (implies $e97 $e165))
+(flet ($e191 (or $e188 $e71))
+(flet ($e192 (and $e145 $e185))
+(flet ($e193 (or $e191 $e99))
+(flet ($e194 (implies $e53 $e89))
+(flet ($e195 (iff $e180 $e116))
+(flet ($e196 (and $e84 $e117))
+(flet ($e197 (or $e135 $e75))
+(flet ($e198 (xor $e82 $e197))
+(flet ($e199 (if_then_else $e142 $e195 $e177))
+(flet ($e200 (implies $e181 $e73))
+(flet ($e201 (or $e169 $e70))
+(flet ($e202 (or $e150 $e106))
+(flet ($e203 (xor $e110 $e115))
+(flet ($e204 (or $e60 $e60))
+(flet ($e205 (implies $e138 $e187))
+(flet ($e206 (and $e194 $e156))
+(flet ($e207 (not $e114))
+(flet ($e208 (if_then_else $e147 $e63 $e118))
+(flet ($e209 (not $e86))
+(flet ($e210 (xor $e202 $e178))
+(flet ($e211 (if_then_else $e210 $e58 $e100))
+(flet ($e212 (implies $e113 $e166))
+(flet ($e213 (iff $e120 $e141))
+(flet ($e214 (and $e157 $e196))
+(flet ($e215 (if_then_else $e72 $e199 $e68))
+(flet ($e216 (not $e146))
+(flet ($e217 (and $e215 $e95))
+(flet ($e218 (not $e139))
+(flet ($e219 (xor $e214 $e176))
+(flet ($e220 (or $e175 $e211))
+(flet ($e221 (if_then_else $e162 $e198 $e172))
+(flet ($e222 (xor $e221 $e189))
+(flet ($e223 (xor $e213 $e104))
+(flet ($e224 (not $e206))
+(flet ($e225 (and $e203 $e108))
+(flet ($e226 (iff $e200 $e155))
+(flet ($e227 (if_then_else $e111 $e208 $e144))
+(flet ($e228 (implies $e227 $e85))
+(flet ($e229 (not $e223))
+(flet ($e230 (implies $e217 $e205))
+(flet ($e231 (iff $e204 $e80))
+(flet ($e232 (implies $e107 $e143))
+(flet ($e233 (if_then_else $e209 $e220 $e209))
+(flet ($e234 (or $e74 $e225))
+(flet ($e235 (or $e103 $e103))
+(flet ($e236 (implies $e67 $e234))
+(flet ($e237 (xor $e232 $e182))
+(flet ($e238 (xor $e190 $e235))
+(flet ($e239 (or $e231 $e233))
+(flet ($e240 (implies $e212 $e186))
+(flet ($e241 (iff $e218 $e237))
+(flet ($e242 (not $e238))
+(flet ($e243 (xor $e193 $e240))
+(flet ($e244 (implies $e228 $e222))
+(flet ($e245 (not $e230))
+(flet ($e246 (iff $e224 $e93))
+(flet ($e247 (and $e158 $e207))
+(flet ($e248 (if_then_else $e229 $e245 $e183))
+(flet ($e249 (iff $e98 $e184))
+(flet ($e250 (iff $e244 $e242))
+(flet ($e251 (if_then_else $e149 $e101 $e250))
+(flet ($e252 (xor $e236 $e173))
+(flet ($e253 (xor $e248 $e226))
+(flet ($e254 (and $e249 $e192))
+(flet ($e255 (if_then_else $e246 $e254 $e247))
+(flet ($e256 (if_then_else $e76 $e255 $e239))
+(flet ($e257 (not $e256))
+(flet ($e258 (or $e257 $e164))
+(flet ($e259 (or $e243 $e258))
+(flet ($e260 (iff $e219 $e216))
+(flet ($e261 (xor $e160 $e201))
+(flet ($e262 (not $e241))
+(flet ($e263 (not $e252))
+(flet ($e264 (not $e259))
+(flet ($e265 (and $e261 $e251))
+(flet ($e266 (if_then_else $e253 $e260 $e253))
+(flet ($e267 (implies $e264 $e264))
+(flet ($e268 (if_then_else $e266 $e266 $e265))
+(flet ($e269 (iff $e263 $e267))
+(flet ($e270 (if_then_else $e262 $e269 $e269))
+(flet ($e271 (and $e270 $e270))
+(flet ($e272 (not $e271))
+(flet ($e273 (xor $e272 $e272))
+(flet ($e274 (iff $e273 $e268))
+$e274
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz06.smt b/test/regress/regress0/bv/fuzz06.smt
new file mode 100644
index 0000000..6fc41f3
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz06.smt
@@ -0,0 +1,218 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status sat
+:extrafuns ((v0 BitVec[9]))
+:extrafuns ((v1 BitVec[2]))
+:extrafuns ((v2 BitVec[1]))
+:extrafuns ((v3 BitVec[3]))
+:formula
+(let (?e4 bv256[9])
+(let (?e5 bv68[7])
+(let (?e6 (extract[0:0] v1))
+(let (?e7 (extract[1:0] v1))
+(let (?e8 (bvsub ?e4 (sign_extend[8] ?e6)))
+(let (?e9 (zero_extend[1] v3))
+(let (?e10 (rotate_right[1] v1))
+(let (?e11 (ite (bvult ?e7 ?e7) bv1[1] bv0[1]))
+(let (?e12 (extract[1:1] ?e9))
+(let (?e13 (extract[3:1] ?e9))
+(let (?e14 (ite (bvule (sign_extend[2] ?e12) v3) bv1[1] bv0[1]))
+(let (?e15 (rotate_left[0] v2))
+(let (?e16 (bvadd ?e14 ?e6))
+(let (?e17 (extract[0:0] ?e16))
+(let (?e18 (bvxnor ?e10 (zero_extend[1] v2)))
+(let (?e19 (bvnot v2))
+(let (?e20 (bvadd ?e18 ?e18))
+(let (?e21 (bvnand v3 (sign_extend[2] v2)))
+(let (?e22 (bvnot ?e9))
+(let (?e23 (ite (bvslt ?e15 ?e14) bv1[1] bv0[1]))
+(let (?e24 (bvcomp (sign_extend[2] ?e10) ?e9))
+(let (?e25 (bvor (zero_extend[1] ?e17) ?e10))
+(let (?e26 (bvand (zero_extend[1] ?e15) ?e25))
+(let (?e27 (ite (distinct (sign_extend[1] ?e26) ?e21) bv1[1] bv0[1]))
+(let (?e28 (ite (bvult ?e11 ?e11) bv1[1] bv0[1]))
+(let (?e29 (ite (bvugt ?e26 ?e10) bv1[1] bv0[1]))
+(let (?e30 (bvadd ?e18 (sign_extend[1] ?e19)))
+(let (?e31 (ite (= bv1[1] (extract[0:0] ?e5)) ?e9 (sign_extend[3] ?e19)))
+(let (?e32 (bvmul (zero_extend[3] ?e24) ?e31))
+(let (?e33 (ite (bvslt ?e10 (zero_extend[1] ?e12)) bv1[1] bv0[1]))
+(let (?e34 (ite (= bv1[1] (extract[0:0] ?e16)) ?e21 (zero_extend[2] ?e15)))
+(let (?e35 (ite (bvslt v3 (zero_extend[2] ?e23)) bv1[1] bv0[1]))
+(let (?e36 (rotate_right[0] ?e23))
+(let (?e37 (extract[1:1] ?e10))
+(let (?e38 (bvcomp (sign_extend[3] ?e19) ?e31))
+(let (?e39 (bvmul (sign_extend[8] ?e6) v0))
+(flet ($e40 (= ?e15 ?e27))
+(flet ($e41 (= v1 (sign_extend[1] ?e33)))
+(flet ($e42 (= ?e36 ?e35))
+(flet ($e43 (= ?e22 (zero_extend[2] ?e30)))
+(flet ($e44 (= (sign_extend[1] ?e33) ?e25))
+(flet ($e45 (= ?e18 ?e26))
+(flet ($e46 (= (zero_extend[5] ?e20) ?e5))
+(flet ($e47 (= ?e9 ?e32))
+(flet ($e48 (= (zero_extend[2] ?e37) ?e34))
+(flet ($e49 (= ?e32 (sign_extend[2] ?e25)))
+(flet ($e50 (= (sign_extend[2] ?e20) ?e22))
+(flet ($e51 (= v0 (sign_extend[5] ?e9)))
+(flet ($e52 (= ?e5 (sign_extend[6] ?e15)))
+(flet ($e53 (= ?e11 ?e36))
+(flet ($e54 (= ?e6 ?e15))
+(flet ($e55 (= (zero_extend[8] ?e23) ?e8))
+(flet ($e56 (= ?e8 (zero_extend[8] ?e14)))
+(flet ($e57 (= ?e20 ?e25))
+(flet ($e58 (= ?e11 ?e38))
+(flet ($e59 (= ?e11 ?e12))
+(flet ($e60 (= (zero_extend[5] ?e22) ?e4))
+(flet ($e61 (= (sign_extend[5] ?e32) ?e4))
+(flet ($e62 (= (sign_extend[1] ?e35) ?e7))
+(flet ($e63 (= ?e39 ?e39))
+(flet ($e64 (= ?e16 ?e11))
+(flet ($e65 (= ?e29 ?e14))
+(flet ($e66 (= (sign_extend[7] ?e30) v0))
+(flet ($e67 (= ?e4 (zero_extend[5] ?e22)))
+(flet ($e68 (= ?e26 ?e18))
+(flet ($e69 (= ?e8 (zero_extend[7] ?e26)))
+(flet ($e70 (= (sign_extend[3] ?e33) ?e31))
+(flet ($e71 (= ?e38 v2))
+(flet ($e72 (= (sign_extend[1] ?e24) ?e10))
+(flet ($e73 (= (zero_extend[8] ?e27) ?e4))
+(flet ($e74 (= (sign_extend[1] ?e28) ?e7))
+(flet ($e75 (= (sign_extend[8] v2) ?e8))
+(flet ($e76 (= ?e15 ?e24))
+(flet ($e77 (= ?e22 ?e31))
+(flet ($e78 (= ?e23 ?e6))
+(flet ($e79 (= ?e6 ?e27))
+(flet ($e80 (= ?e18 (sign_extend[1] ?e27)))
+(flet ($e81 (= (sign_extend[1] ?e18) v3))
+(flet ($e82 (= ?e5 (zero_extend[6] ?e16)))
+(flet ($e83 (= ?e23 ?e12))
+(flet ($e84 (= ?e30 (zero_extend[1] ?e37)))
+(flet ($e85 (= (zero_extend[1] ?e38) ?e20))
+(flet ($e86 (= (sign_extend[8] ?e19) ?e8))
+(flet ($e87 (= ?e39 (zero_extend[6] ?e21)))
+(flet ($e88 (= ?e21 (zero_extend[2] ?e6)))
+(flet ($e89 (= (zero_extend[3] ?e28) ?e31))
+(flet ($e90 (= ?e32 (zero_extend[2] ?e25)))
+(flet ($e91 (= ?e22 (zero_extend[1] ?e34)))
+(flet ($e92 (= (zero_extend[6] ?e21) ?e39))
+(flet ($e93 (= ?e18 (sign_extend[1] ?e15)))
+(flet ($e94 (= (zero_extend[1] ?e28) ?e20))
+(flet ($e95 (= ?e7 v1))
+(flet ($e96 (= (sign_extend[5] ?e31) ?e4))
+(flet ($e97 (= ?e17 ?e37))
+(flet ($e98 (= (zero_extend[3] ?e6) ?e31))
+(flet ($e99 (= ?e21 (sign_extend[2] ?e24)))
+(flet ($e100 (= (zero_extend[3] ?e19) ?e22))
+(flet ($e101 (= ?e22 (sign_extend[3] ?e15)))
+(flet ($e102 (= ?e11 ?e24))
+(flet ($e103 (= ?e34 (zero_extend[2] ?e16)))
+(flet ($e104 (= ?e12 v2))
+(flet ($e105 (= ?e12 ?e37))
+(flet ($e106 (= ?e26 (zero_extend[1] ?e15)))
+(flet ($e107 (= (zero_extend[2] ?e26) ?e22))
+(flet ($e108 (= (zero_extend[3] v2) ?e9))
+(flet ($e109 (= (sign_extend[5] ?e32) ?e8))
+(flet ($e110 (= ?e24 ?e17))
+(flet ($e111 (= ?e20 (sign_extend[1] ?e28)))
+(flet ($e112 (= (sign_extend[6] ?e27) ?e5))
+(flet ($e113 (= (zero_extend[6] ?e34) ?e8))
+(flet ($e114 (= (sign_extend[7] ?e25) ?e8))
+(flet ($e115 (= ?e8 (zero_extend[7] ?e20)))
+(flet ($e116 (= ?e20 (sign_extend[1] ?e36)))
+(flet ($e117 (= ?e20 (sign_extend[1] ?e37)))
+(flet ($e118 (= (sign_extend[7] ?e10) ?e39))
+(flet ($e119 (= ?e36 ?e16))
+(flet ($e120 (= ?e21 (zero_extend[1] ?e10)))
+(flet ($e121 (= ?e38 ?e11))
+(flet ($e122 (= (sign_extend[1] ?e20) ?e34))
+(flet ($e123 (= ?e5 (zero_extend[4] ?e13)))
+(flet ($e124 (not $e79))
+(flet ($e125 (if_then_else $e50 $e63 $e115))
+(flet ($e126 (if_then_else $e54 $e120 $e40))
+(flet ($e127 (if_then_else $e85 $e117 $e87))
+(flet ($e128 (iff $e127 $e95))
+(flet ($e129 (and $e76 $e46))
+(flet ($e130 (if_then_else $e93 $e42 $e65))
+(flet ($e131 (implies $e113 $e92))
+(flet ($e132 (not $e125))
+(flet ($e133 (implies $e62 $e61))
+(flet ($e134 (iff $e74 $e110))
+(flet ($e135 (and $e66 $e56))
+(flet ($e136 (if_then_else $e78 $e64 $e83))
+(flet ($e137 (if_then_else $e84 $e124 $e43))
+(flet ($e138 (if_then_else $e128 $e89 $e67))
+(flet ($e139 (not $e136))
+(flet ($e140 (or $e73 $e121))
+(flet ($e141 (if_then_else $e129 $e138 $e101))
+(flet ($e142 (and $e131 $e139))
+(flet ($e143 (if_then_else $e41 $e123 $e130))
+(flet ($e144 (xor $e100 $e81))
+(flet ($e145 (implies $e98 $e97))
+(flet ($e146 (xor $e71 $e143))
+(flet ($e147 (xor $e126 $e80))
+(flet ($e148 (if_then_else $e99 $e111 $e103))
+(flet ($e149 (implies $e47 $e88))
+(flet ($e150 (not $e140))
+(flet ($e151 (xor $e146 $e86))
+(flet ($e152 (and $e119 $e148))
+(flet ($e153 (not $e106))
+(flet ($e154 (xor $e114 $e104))
+(flet ($e155 (and $e58 $e91))
+(flet ($e156 (xor $e44 $e57))
+(flet ($e157 (if_then_else $e141 $e154 $e135))
+(flet ($e158 (if_then_else $e134 $e102 $e132))
+(flet ($e159 (iff $e108 $e109))
+(flet ($e160 (or $e90 $e53))
+(flet ($e161 (not $e77))
+(flet ($e162 (not $e157))
+(flet ($e163 (implies $e55 $e82))
+(flet ($e164 (implies $e69 $e51))
+(flet ($e165 (and $e164 $e116))
+(flet ($e166 (and $e133 $e161))
+(flet ($e167 (not $e165))
+(flet ($e168 (or $e159 $e162))
+(flet ($e169 (or $e112 $e153))
+(flet ($e170 (iff $e149 $e94))
+(flet ($e171 (or $e156 $e49))
+(flet ($e172 (and $e105 $e170))
+(flet ($e173 (and $e168 $e48))
+(flet ($e174 (iff $e172 $e151))
+(flet ($e175 (or $e60 $e118))
+(flet ($e176 (if_then_else $e155 $e142 $e175))
+(flet ($e177 (implies $e150 $e137))
+(flet ($e178 (if_then_else $e173 $e158 $e158))
+(flet ($e179 (not $e152))
+(flet ($e180 (not $e176))
+(flet ($e181 (xor $e144 $e59))
+(flet ($e182 (not $e171))
+(flet ($e183 (implies $e70 $e75))
+(flet ($e184 (and $e166 $e182))
+(flet ($e185 (and $e184 $e169))
+(flet ($e186 (not $e183))
+(flet ($e187 (not $e68))
+(flet ($e188 (implies $e185 $e180))
+(flet ($e189 (and $e122 $e188))
+(flet ($e190 (not $e181))
+(flet ($e191 (not $e174))
+(flet ($e192 (or $e145 $e72))
+(flet ($e193 (not $e160))
+(flet ($e194 (if_then_else $e177 $e178 $e45))
+(flet ($e195 (xor $e193 $e147))
+(flet ($e196 (or $e190 $e190))
+(flet ($e197 (xor $e179 $e192))
+(flet ($e198 (iff $e52 $e195))
+(flet ($e199 (or $e187 $e196))
+(flet ($e200 (implies $e194 $e96))
+(flet ($e201 (not $e189))
+(flet ($e202 (or $e191 $e167))
+(flet ($e203 (if_then_else $e198 $e186 $e202))
+(flet ($e204 (iff $e163 $e201))
+(flet ($e205 (if_then_else $e199 $e199 $e200))
+(flet ($e206 (implies $e197 $e204))
+(flet ($e207 (or $e203 $e107))
+(flet ($e208 (and $e205 $e206))
+(flet ($e209 (and $e208 $e208))
+(flet ($e210 (and $e209 $e207))
+$e210
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz07.smt b/test/regress/regress0/bv/fuzz07.smt
new file mode 100644
index 0000000..c813a31
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz07.smt
@@ -0,0 +1,395 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status sat
+:extrafuns ((v0 BitVec[5]))
+:extrafuns ((v1 BitVec[2]))
+:extrafuns ((v2 BitVec[4]))
+:formula
+(let (?e3 bv2[2])
+(let (?e4 bv2[2])
+(let (?e5 (bvnot ?e3))
+(let (?e6 (bvadd ?e4 v1))
+(let (?e7 (bvand ?e5 ?e6))
+(let (?e8 (bvashr v0 (sign_extend[3] ?e5)))
+(let (?e9 (bvshl ?e4 ?e4))
+(let (?e10 (ite (bvsle ?e3 ?e6) bv1[1] bv0[1]))
+(let (?e11 (bvxor ?e3 (sign_extend[1] ?e10)))
+(let (?e12 (ite (= (sign_extend[3] ?e7) ?e8) bv1[1] bv0[1]))
+(let (?e13 (bvor (zero_extend[1] ?e10) ?e5))
+(let (?e14 (concat ?e12 v0))
+(let (?e15 (bvand (zero_extend[1] ?e12) ?e6))
+(let (?e16 (bvnot ?e15))
+(let (?e17 (ite (bvsgt ?e8 (zero_extend[3] ?e13)) bv1[1] bv0[1]))
+(let (?e18 (extract[0:0] ?e9))
+(let (?e19 (repeat[1] ?e7))
+(let (?e20 (ite (distinct ?e5 (zero_extend[1] ?e17)) bv1[1] bv0[1]))
+(let (?e21 (bvlshr ?e3 (zero_extend[1] ?e12)))
+(let (?e22 (bvcomp (zero_extend[1] ?e10) ?e6))
+(let (?e23 (sign_extend[2] ?e10))
+(let (?e24 (ite (bvule ?e16 ?e11) bv1[1] bv0[1]))
+(let (?e25 (bvcomp ?e20 ?e10))
+(let (?e26 (bvshl (sign_extend[1] ?e17) ?e21))
+(let (?e27 (bvnot ?e11))
+(let (?e28 (bvsub (sign_extend[4] ?e16) ?e14))
+(let (?e29 (bvlshr ?e21 ?e27))
+(let (?e30 (bvneg ?e14))
+(let (?e31 (ite (bvugt ?e22 ?e17) bv1[1] bv0[1]))
+(let (?e32 (ite (bvsge ?e19 ?e6) bv1[1] bv0[1]))
+(let (?e33 (bvlshr ?e15 (sign_extend[1] ?e31)))
+(let (?e34 (bvcomp (sign_extend[4] ?e15) ?e28))
+(let (?e35 (bvcomp (zero_extend[4] ?e26) ?e14))
+(let (?e36 (ite (bvsge ?e16 ?e13) bv1[1] bv0[1]))
+(let (?e37 (rotate_right[0] ?e22))
+(let (?e38 (rotate_left[0] ?e35))
+(let (?e39 (bvsub ?e15 (sign_extend[1] ?e35)))
+(let (?e40 (ite (= bv1[1] (extract[0:0] ?e31)) ?e6 ?e5))
+(let (?e41 (bvand (sign_extend[1] ?e31) ?e33))
+(let (?e42 (bvxor (zero_extend[3] ?e41) ?e8))
+(let (?e43 (bvmul ?e3 (zero_extend[1] ?e12)))
+(let (?e44 (ite (bvsle (sign_extend[1] ?e18) ?e41) bv1[1] bv0[1]))
+(let (?e45 (bvnand ?e26 ?e3))
+(let (?e46 (ite (bvsgt ?e23 (zero_extend[1] ?e4)) bv1[1] bv0[1]))
+(let (?e47 (bvand ?e38 ?e37))
+(let (?e48 (bvneg ?e27))
+(let (?e49 (ite (= bv1[1] (extract[1:1] ?e13)) ?e3 (sign_extend[1] ?e24)))
+(let (?e50 (concat ?e5 ?e38))
+(let (?e51 (bvadd ?e13 (sign_extend[1] ?e10)))
+(let (?e52 (bvxnor (zero_extend[1] ?e6) ?e50))
+(let (?e53 (concat v1 ?e35))
+(let (?e54 (bvlshr ?e27 ?e41))
+(let (?e55 (ite (bvsle ?e29 ?e40) bv1[1] bv0[1]))
+(let (?e56 (ite (bvugt (sign_extend[3] ?e45) ?e42) bv1[1] bv0[1]))
+(let (?e57 (zero_extend[12] ?e5))
+(let (?e58 (bvcomp (sign_extend[3] ?e40) v0))
+(let (?e59 (ite (distinct ?e23 (zero_extend[2] ?e35)) bv1[1] bv0[1]))
+(let (?e60 (bvor (sign_extend[1] ?e17) ?e26))
+(let (?e61 (ite (distinct ?e55 ?e38) bv1[1] bv0[1]))
+(let (?e62 (bvnot ?e21))
+(let (?e63 (ite (bvuge (zero_extend[1] ?e32) ?e21) bv1[1] bv0[1]))
+(let (?e64 (bvneg ?e17))
+(let (?e65 (rotate_right[0] ?e20))
+(let (?e66 (sign_extend[13] ?e15))
+(let (?e67 (ite (= ?e61 ?e55) bv1[1] bv0[1]))
+(let (?e68 (bvor (sign_extend[1] ?e65) ?e49))
+(let (?e69 (zero_extend[4] ?e64))
+(let (?e70 (ite (bvugt ?e23 (zero_extend[1] ?e19)) bv1[1] bv0[1]))
+(let (?e71 (bvneg ?e68))
+(let (?e72 (sign_extend[14] ?e54))
+(let (?e73 (ite (bvslt ?e14 (zero_extend[5] ?e37)) bv1[1] bv0[1]))
+(let (?e74 (bvshl ?e53 (zero_extend[1] ?e7)))
+(let (?e75 (repeat[4] ?e16))
+(let (?e76 (repeat[3] ?e51))
+(let (?e77 (ite (bvsle ?e28 ?e76) bv1[1] bv0[1]))
+(let (?e78 (rotate_right[1] ?e42))
+(let (?e79 (bvor ?e65 ?e20))
+(let (?e80 (bvashr ?e19 ?e3))
+(let (?e81 (ite (distinct ?e23 (zero_extend[2] ?e44)) bv1[1] bv0[1]))
+(let (?e82 (rotate_right[0] ?e15))
+(let (?e83 (bvashr ?e35 ?e35))
+(let (?e84 (bvsub ?e78 (sign_extend[2] ?e53)))
+(let (?e85 (bvsub ?e11 (zero_extend[1] ?e36)))
+(let (?e86 (ite (bvugt ?e53 (zero_extend[1] ?e33)) bv1[1] bv0[1]))
+(let (?e87 (ite (bvugt (zero_extend[6] ?e48) ?e75) bv1[1] bv0[1]))
+(let (?e88 (bvmul (zero_extend[3] ?e3) v0))
+(let (?e89 (concat ?e9 ?e14))
+(let (?e90 (ite (bvsle v2 v2) bv1[1] bv0[1]))
+(flet ($e91 (= ?e54 ?e26))
+(flet ($e92 (= ?e3 (sign_extend[1] ?e77)))
+(flet ($e93 (= ?e49 (sign_extend[1] ?e10)))
+(flet ($e94 (= ?e85 (sign_extend[1] ?e73)))
+(flet ($e95 (= ?e52 (sign_extend[2] ?e73)))
+(flet ($e96 (= (sign_extend[1] ?e47) v1))
+(flet ($e97 (= (zero_extend[7] ?e20) ?e75))
+(flet ($e98 (= ?e57 (zero_extend[12] ?e15)))
+(flet ($e99 (= ?e25 ?e90))
+(flet ($e100 (= ?e26 (sign_extend[1] ?e46)))
+(flet ($e101 (= v1 (sign_extend[1] ?e31)))
+(flet ($e102 (= ?e89 (zero_extend[7] ?e77)))
+(flet ($e103 (= (zero_extend[4] ?e41) ?e30))
+(flet ($e104 (= ?e71 v1))
+(flet ($e105 (= (sign_extend[1] ?e83) ?e51))
+(flet ($e106 (= ?e32 ?e56))
+(flet ($e107 (= ?e25 ?e24))
+(flet ($e108 (= (sign_extend[1] ?e27) ?e74))
+(flet ($e109 (= ?e7 ?e15))
+(flet ($e110 (= (zero_extend[1] ?e70) ?e49))
+(flet ($e111 (= (sign_extend[1] ?e44) ?e15))
+(flet ($e112 (= ?e24 ?e63))
+(flet ($e113 (= ?e39 (sign_extend[1] ?e83)))
+(flet ($e114 (= v1 (sign_extend[1] ?e70)))
+(flet ($e115 (= ?e76 (sign_extend[1] v0)))
+(flet ($e116 (= ?e77 ?e22))
+(flet ($e117 (= v1 (sign_extend[1] ?e59)))
+(flet ($e118 (= ?e3 (sign_extend[1] ?e67)))
+(flet ($e119 (= ?e39 ?e45))
+(flet ($e120 (= ?e42 (zero_extend[2] ?e50)))
+(flet ($e121 (= (zero_extend[8] ?e14) ?e57))
+(flet ($e122 (= ?e28 (sign_extend[3] ?e23)))
+(flet ($e123 (= (zero_extend[1] ?e37) ?e40))
+(flet ($e124 (= (sign_extend[5] ?e63) ?e30))
+(flet ($e125 (= ?e16 (sign_extend[1] ?e37)))
+(flet ($e126 (= ?e81 ?e24))
+(flet ($e127 (= (zero_extend[1] ?e46) ?e54))
+(flet ($e128 (= ?e3 (sign_extend[1] ?e90)))
+(flet ($e129 (= (zero_extend[1] ?e12) ?e21))
+(flet ($e130 (= ?e89 (zero_extend[3] ?e88)))
+(flet ($e131 (= ?e31 ?e63))
+(flet ($e132 (= ?e15 ?e16))
+(flet ($e133 (= ?e72 (zero_extend[15] ?e81)))
+(flet ($e134 (= ?e27 ?e41))
+(flet ($e135 (= ?e67 ?e12))
+(flet ($e136 (= (sign_extend[1] ?e65) ?e41))
+(flet ($e137 (= ?e69 (sign_extend[4] ?e81)))
+(flet ($e138 (= ?e40 (zero_extend[1] ?e87)))
+(flet ($e139 (= ?e59 ?e44))
+(flet ($e140 (= (zero_extend[5] ?e67) ?e28))
+(flet ($e141 (= ?e68 (sign_extend[1] ?e86)))
+(flet ($e142 (= (zero_extend[2] ?e37) ?e23))
+(flet ($e143 (= (zero_extend[13] ?e6) ?e66))
+(flet ($e144 (= (zero_extend[5] ?e25) ?e76))
+(flet ($e145 (= ?e14 (zero_extend[4] ?e71)))
+(flet ($e146 (= ?e5 ?e26))
+(flet ($e147 (= ?e17 ?e44))
+(flet ($e148 (= ?e64 ?e81))
+(flet ($e149 (= ?e60 (zero_extend[1] ?e83)))
+(flet ($e150 (= ?e28 (sign_extend[5] ?e22)))
+(flet ($e151 (= ?e50 (zero_extend[2] ?e87)))
+(flet ($e152 (= ?e34 ?e47))
+(flet ($e153 (= (zero_extend[1] ?e65) ?e60))
+(flet ($e154 (= (zero_extend[1] ?e44) ?e5))
+(flet ($e155 (= ?e40 (sign_extend[1] ?e31)))
+(flet ($e156 (= ?e78 ?e78))
+(flet ($e157 (= ?e76 (zero_extend[4] ?e49)))
+(flet ($e158 (= ?e34 ?e67))
+(flet ($e159 (= ?e33 ?e45))
+(flet ($e160 (= ?e26 ?e4))
+(flet ($e161 (= ?e89 (sign_extend[6] ?e11)))
+(flet ($e162 (= ?e86 ?e47))
+(flet ($e163 (= ?e32 ?e46))
+(flet ($e164 (= (zero_extend[2] ?e58) ?e23))
+(flet ($e165 (= ?e24 ?e64))
+(flet ($e166 (= ?e10 ?e24))
+(flet ($e167 (= ?e78 (zero_extend[3] ?e19)))
+(flet ($e168 (= (sign_extend[6] ?e54) ?e89))
+(flet ($e169 (= ?e89 (sign_extend[7] ?e37)))
+(flet ($e170 (= ?e42 (zero_extend[3] ?e13)))
+(flet ($e171 (= ?e54 (sign_extend[1] ?e56)))
+(flet ($e172 (= ?e27 ?e62))
+(flet ($e173 (= ?e75 (sign_extend[6] ?e4)))
+(flet ($e174 (= ?e33 ?e80))
+(flet ($e175 (= (sign_extend[1] ?e17) ?e16))
+(flet ($e176 (= ?e17 ?e17))
+(flet ($e177 (= ?e80 ?e68))
+(flet ($e178 (= ?e15 ?e26))
+(flet ($e179 (= ?e82 (zero_extend[1] ?e22)))
+(flet ($e180 (= (zero_extend[1] ?e79) ?e45))
+(flet ($e181 (= ?e50 (sign_extend[2] ?e90)))
+(flet ($e182 (= ?e62 ?e80))
+(flet ($e183 (= ?e4 (zero_extend[1] ?e18)))
+(flet ($e184 (= ?e60 (sign_extend[1] ?e36)))
+(flet ($e185 (= ?e56 ?e32))
+(flet ($e186 (= ?e15 (sign_extend[1] ?e61)))
+(flet ($e187 (= ?e59 ?e37))
+(flet ($e188 (= ?e36 ?e65))
+(flet ($e189 (= (sign_extend[2] v2) ?e14))
+(flet ($e190 (= ?e36 ?e35))
+(flet ($e191 (= (zero_extend[5] ?e53) ?e75))
+(flet ($e192 (= (sign_extend[13] ?e55) ?e57))
+(flet ($e193 (= (sign_extend[3] ?e84) ?e89))
+(flet ($e194 (= ?e27 (zero_extend[1] ?e77)))
+(flet ($e195 (= (sign_extend[2] ?e43) v2))
+(flet ($e196 (= ?e62 (zero_extend[1] ?e47)))
+(flet ($e197 (= ?e14 (zero_extend[5] ?e59)))
+(flet ($e198 (= ?e75 (sign_extend[6] ?e43)))
+(flet ($e199 (= (zero_extend[12] v1) ?e57))
+(flet ($e200 (= ?e23 ?e50))
+(flet ($e201 (= (sign_extend[1] ?e70) ?e54))
+(flet ($e202 (= ?e45 ?e26))
+(flet ($e203 (= v2 (sign_extend[2] ?e41)))
+(flet ($e204 (= ?e45 ?e62))
+(flet ($e205 (= (zero_extend[1] ?e32) ?e19))
+(flet ($e206 (= ?e49 (zero_extend[1] ?e81)))
+(flet ($e207 (= ?e89 (zero_extend[6] ?e26)))
+(flet ($e208 (= (sign_extend[4] ?e87) v0))
+(flet ($e209 (= ?e13 ?e4))
+(flet ($e210 (= v2 (sign_extend[2] ?e33)))
+(flet ($e211 (= ?e66 (zero_extend[14] ?e61)))
+(flet ($e212 (= (zero_extend[1] ?e24) ?e80))
+(flet ($e213 (= ?e5 ?e21))
+(flet ($e214 (= ?e21 ?e16))
+(flet ($e215 (= (zero_extend[13] ?e22) ?e57))
+(flet ($e216 (= ?e33 (zero_extend[1] ?e47)))
+(flet ($e217 (= (sign_extend[4] ?e71) ?e76))
+(flet ($e218 (= (zero_extend[4] ?e86) ?e69))
+(flet ($e219 (= ?e63 ?e63))
+(flet ($e220 (= (zero_extend[1] ?e44) ?e33))
+(flet ($e221 (= ?e8 (zero_extend[3] ?e62)))
+(flet ($e222 (= ?e71 ?e60))
+(flet ($e223 (= ?e56 ?e55))
+(flet ($e224 (= ?e48 ?e85))
+(flet ($e225 (= ?e52 (zero_extend[1] ?e27)))
+(flet ($e226 (= ?e4 (sign_extend[1] ?e36)))
+(flet ($e227 (= (sign_extend[1] ?e38) ?e49))
+(flet ($e228 (= ?e7 ?e11))
+(flet ($e229 (= (zero_extend[3] ?e44) v2))
+(flet ($e230 (= (zero_extend[4] ?e58) ?e88))
+(flet ($e231 (= ?e85 ?e5))
+(flet ($e232 (= ?e16 (zero_extend[1] ?e86)))
+(flet ($e233 (= ?e75 (sign_extend[7] ?e12)))
+(flet ($e234 (= ?e9 ?e9))
+(flet ($e235 (= ?e4 (sign_extend[1] ?e22)))
+(flet ($e236 (= ?e84 (zero_extend[4] ?e70)))
+(flet ($e237 (= ?e41 ?e29))
+(flet ($e238 (and $e142 $e200))
+(flet ($e239 (xor $e187 $e214))
+(flet ($e240 (or $e136 $e160))
+(flet ($e241 (xor $e144 $e224))
+(flet ($e242 (and $e151 $e181))
+(flet ($e243 (if_then_else $e158 $e141 $e148))
+(flet ($e244 (iff $e218 $e164))
+(flet ($e245 (iff $e92 $e156))
+(flet ($e246 (xor $e183 $e155))
+(flet ($e247 (xor $e134 $e185))
+(flet ($e248 (xor $e219 $e178))
+(flet ($e249 (if_then_else $e174 $e132 $e212))
+(flet ($e250 (implies $e152 $e246))
+(flet ($e251 (or $e194 $e215))
+(flet ($e252 (iff $e204 $e137))
+(flet ($e253 (and $e249 $e135))
+(flet ($e254 (xor $e115 $e171))
+(flet ($e255 (implies $e192 $e105))
+(flet ($e256 (or $e201 $e95))
+(flet ($e257 (or $e250 $e175))
+(flet ($e258 (xor $e213 $e113))
+(flet ($e259 (if_then_else $e248 $e143 $e248))
+(flet ($e260 (implies $e179 $e163))
+(flet ($e261 (and $e220 $e227))
+(flet ($e262 (xor $e261 $e193))
+(flet ($e263 (iff $e190 $e233))
+(flet ($e264 (or $e239 $e159))
+(flet ($e265 (or $e221 $e149))
+(flet ($e266 (not $e150))
+(flet ($e267 (or $e103 $e109))
+(flet ($e268 (implies $e139 $e262))
+(flet ($e269 (implies $e231 $e217))
+(flet ($e270 (not $e138))
+(flet ($e271 (or $e235 $e147))
+(flet ($e272 (and $e131 $e166))
+(flet ($e273 (xor $e207 $e191))
+(flet ($e274 (or $e123 $e91))
+(flet ($e275 (implies $e259 $e222))
+(flet ($e276 (not $e275))
+(flet ($e277 (if_then_else $e114 $e165 $e276))
+(flet ($e278 (and $e243 $e264))
+(flet ($e279 (implies $e154 $e273))
+(flet ($e280 (if_then_else $e119 $e236 $e226))
+(flet ($e281 (or $e228 $e176))
+(flet ($e282 (not $e229))
+(flet ($e283 (not $e208))
+(flet ($e284 (not $e128))
+(flet ($e285 (or $e230 $e254))
+(flet ($e286 (xor $e118 $e253))
+(flet ($e287 (not $e146))
+(flet ($e288 (not $e98))
+(flet ($e289 (or $e210 $e121))
+(flet ($e290 (not $e189))
+(flet ($e291 (and $e279 $e157))
+(flet ($e292 (implies $e117 $e281))
+(flet ($e293 (iff $e206 $e282))
+(flet ($e294 (iff $e101 $e172))
+(flet ($e295 (iff $e184 $e173))
+(flet ($e296 (or $e272 $e257))
+(flet ($e297 (and $e104 $e244))
+(flet ($e298 (if_then_else $e122 $e284 $e202))
+(flet ($e299 (not $e140))
+(flet ($e300 (not $e145))
+(flet ($e301 (not $e274))
+(flet ($e302 (implies $e170 $e205))
+(flet ($e303 (xor $e153 $e97))
+(flet ($e304 (if_then_else $e265 $e300 $e96))
+(flet ($e305 (xor $e255 $e296))
+(flet ($e306 (and $e294 $e267))
+(flet ($e307 (xor $e297 $e209))
+(flet ($e308 (or $e127 $e278))
+(flet ($e309 (if_then_else $e238 $e232 $e280))
+(flet ($e310 (or $e129 $e182))
+(flet ($e311 (iff $e100 $e216))
+(flet ($e312 (implies $e295 $e203))
+(flet ($e313 (if_then_else $e309 $e309 $e167))
+(flet ($e314 (iff $e162 $e289))
+(flet ($e315 (if_then_else $e130 $e234 $e304))
+(flet ($e316 (if_then_else $e251 $e94 $e195))
+(flet ($e317 (xor $e285 $e112))
+(flet ($e318 (or $e93 $e308))
+(flet ($e319 (or $e252 $e168))
+(flet ($e320 (not $e292))
+(flet ($e321 (if_then_else $e111 $e198 $e196))
+(flet ($e322 (not $e277))
+(flet ($e323 (if_then_else $e268 $e319 $e293))
+(flet ($e324 (or $e161 $e245))
+(flet ($e325 (or $e317 $e177))
+(flet ($e326 (if_then_else $e311 $e197 $e323))
+(flet ($e327 (or $e241 $e266))
+(flet ($e328 (and $e327 $e288))
+(flet ($e329 (not $e124))
+(flet ($e330 (and $e126 $e302))
+(flet ($e331 (if_then_else $e169 $e240 $e326))
+(flet ($e332 (if_then_else $e225 $e269 $e328))
+(flet ($e333 (and $e99 $e314))
+(flet ($e334 (not $e298))
+(flet ($e335 (implies $e263 $e283))
+(flet ($e336 (and $e313 $e331))
+(flet ($e337 (or $e258 $e325))
+(flet ($e338 (iff $e120 $e299))
+(flet ($e339 (xor $e211 $e306))
+(flet ($e340 (not $e106))
+(flet ($e341 (iff $e301 $e320))
+(flet ($e342 (if_then_else $e223 $e287 $e223))
+(flet ($e343 (or $e188 $e307))
+(flet ($e344 (xor $e247 $e199))
+(flet ($e345 (if_then_else $e260 $e286 $e318))
+(flet ($e346 (implies $e256 $e337))
+(flet ($e347 (and $e329 $e186))
+(flet ($e348 (if_then_else $e291 $e339 $e107))
+(flet ($e349 (not $e316))
+(flet ($e350 (if_then_else $e305 $e116 $e348))
+(flet ($e351 (not $e125))
+(flet ($e352 (and $e335 $e321))
+(flet ($e353 (not $e338))
+(flet ($e354 (iff $e336 $e180))
+(flet ($e355 (and $e345 $e347))
+(flet ($e356 (not $e350))
+(flet ($e357 (iff $e102 $e237))
+(flet ($e358 (if_then_else $e312 $e322 $e133))
+(flet ($e359 (or $e344 $e333))
+(flet ($e360 (xor $e332 $e315))
+(flet ($e361 (implies $e110 $e324))
+(flet ($e362 (implies $e360 $e349))
+(flet ($e363 (or $e342 $e330))
+(flet ($e364 (implies $e270 $e270))
+(flet ($e365 (and $e361 $e108))
+(flet ($e366 (and $e341 $e346))
+(flet ($e367 (xor $e352 $e343))
+(flet ($e368 (iff $e353 $e362))
+(flet ($e369 (iff $e310 $e357))
+(flet ($e370 (if_then_else $e355 $e303 $e354))
+(flet ($e371 (iff $e364 $e370))
+(flet ($e372 (not $e367))
+(flet ($e373 (if_then_else $e368 $e371 $e366))
+(flet ($e374 (or $e340 $e351))
+(flet ($e375 (xor $e334 $e271))
+(flet ($e376 (and $e373 $e374))
+(flet ($e377 (if_then_else $e369 $e242 $e358))
+(flet ($e378 (implies $e363 $e363))
+(flet ($e379 (xor $e365 $e378))
+(flet ($e380 (iff $e375 $e377))
+(flet ($e381 (or $e372 $e372))
+(flet ($e382 (xor $e380 $e356))
+(flet ($e383 (implies $e379 $e359))
+(flet ($e384 (implies $e376 $e290))
+(flet ($e385 (iff $e384 $e383))
+(flet ($e386 (implies $e382 $e385))
+(flet ($e387 (or $e381 $e386))
+$e387
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz08.smt b/test/regress/regress0/bv/fuzz08.smt
new file mode 100644
index 0000000..e2a73db
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz08.smt
@@ -0,0 +1,19 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v1 BitVec[9]))
+:status sat
+:formula
+(let (?n1 bv0[6])
+(let (?n2 bv0[9])
+(flet ($n3 (bvult ?n2 v1))
+(let (?n4 bv1[1])
+(let (?n5 bv0[1])
+(let (?n6 (ite $n3 ?n4 ?n5))
+(let (?n7 (sign_extend[5] ?n6))
+(flet ($n8 (bvsgt ?n1 ?n7))
+(let (?n9 (ite $n8 ?n4 ?n5))
+(let (?n10 (sign_extend[8] ?n9))
+(let (?n11 (bvcomp v1 ?n10))
+(flet ($n12 (= ?n9 ?n11))
+$n12
+)))))))))))))
diff --git a/test/regress/regress0/bv/fuzz09.smt b/test/regress/regress0/bv/fuzz09.smt
new file mode 100644
index 0000000..ce8e9bf
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz09.smt
@@ -0,0 +1,370 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status sat
+:extrafuns ((v0 BitVec[7]))
+:extrafuns ((v1 BitVec[5]))
+:extrafuns ((v2 BitVec[13]))
+:extrafuns ((v3 BitVec[16]))
+:formula
+(let (?e4 bv15872[14])
+(let (?e5 bv148[12])
+(let (?e6 (repeat[1] v2))
+(let (?e7 (ite (bvugt (sign_extend[6] v0) ?e6) bv1[1] bv0[1]))
+(let (?e8 (bvnor (sign_extend[2] v1) v0))
+(let (?e9 (sign_extend[1] v2))
+(let (?e10 (ite (bvsgt (sign_extend[6] v0) v2) bv1[1] bv0[1]))
+(let (?e11 (concat v0 v1))
+(let (?e12 (bvneg ?e6))
+(let (?e13 (bvsub (sign_extend[8] v1) v2))
+(let (?e14 (ite (bvule (sign_extend[13] ?e7) ?e9) bv1[1] bv0[1]))
+(let (?e15 (ite (bvult v1 (zero_extend[4] ?e7)) bv1[1] bv0[1]))
+(let (?e16 (bvnand (sign_extend[1] ?e5) v2))
+(let (?e17 (bvor ?e9 (sign_extend[9] v1)))
+(let (?e18 (bvxnor ?e9 (sign_extend[7] v0)))
+(let (?e19 (bvmul (sign_extend[1] ?e11) ?e16))
+(let (?e20 (bvand ?e18 (sign_extend[13] ?e14)))
+(let (?e21 (bvsub (zero_extend[12] ?e7) v2))
+(let (?e22 (bvmul ?e18 (zero_extend[7] v0)))
+(let (?e23 (rotate_right[13] ?e20))
+(let (?e24 (ite (bvult ?e22 (zero_extend[1] v2)) bv1[1] bv0[1]))
+(let (?e25 (bvneg ?e19))
+(let (?e26 (ite (bvult ?e5 (zero_extend[11] ?e10)) bv1[1] bv0[1]))
+(let (?e27 (bvxor ?e22 ?e4))
+(let (?e28 (ite (distinct (sign_extend[1] ?e5) ?e21) bv1[1] bv0[1]))
+(let (?e29 (bvlshr ?e6 (zero_extend[6] v0)))
+(let (?e30 (bvashr ?e10 ?e28))
+(let (?e31 (bvmul ?e24 ?e26))
+(let (?e32 (bvnand (sign_extend[2] ?e5) ?e20))
+(let (?e33 (bvxor v1 (sign_extend[4] ?e31)))
+(let (?e34 (bvor ?e26 ?e7))
+(let (?e35 (bvnot ?e6))
+(let (?e36 (extract[10:5] ?e21))
+(let (?e37 (ite (= ?e31 ?e15) bv1[1] bv0[1]))
+(let (?e38 (bvnot ?e11))
+(let (?e39 (extract[5:5] ?e13))
+(let (?e40 (bvadd (zero_extend[12] ?e24) ?e29))
+(let (?e41 (bvshl ?e13 (zero_extend[12] ?e7)))
+(let (?e42 (ite (bvuge ?e4 (zero_extend[1] ?e13)) bv1[1] bv0[1]))
+(let (?e43 (bvor (sign_extend[13] ?e15) ?e22))
+(let (?e44 (ite (bvsle ?e25 (zero_extend[6] v0)) bv1[1] bv0[1]))
+(let (?e45 (ite (bvslt ?e19 (sign_extend[8] v1)) bv1[1] bv0[1]))
+(let (?e46 (bvshl (zero_extend[1] ?e35) ?e22))
+(let (?e47 (sign_extend[4] ?e7))
+(let (?e48 (bvxor ?e6 (zero_extend[12] ?e30)))
+(let (?e49 (bvand v0 v0))
+(let (?e50 (bvand (sign_extend[12] ?e28) ?e16))
+(let (?e51 (bvmul (sign_extend[12] ?e34) ?e21))
+(let (?e52 (sign_extend[15] ?e45))
+(let (?e53 (bvnot ?e23))
+(let (?e54 (extract[5:3] ?e12))
+(let (?e55 (ite (bvslt (zero_extend[15] ?e42) ?e52) bv1[1] bv0[1]))
+(let (?e56 (bvneg ?e6))
+(let (?e57 (repeat[3] ?e47))
+(let (?e58 (ite (bvsle ?e38 (sign_extend[11] ?e44)) bv1[1] bv0[1]))
+(let (?e59 (sign_extend[0] ?e21))
+(let (?e60 (ite (bvsle ?e22 (zero_extend[13] ?e58)) bv1[1] bv0[1]))
+(let (?e61 (bvadd ?e7 ?e37))
+(let (?e62 (bvnor v3 (zero_extend[3] ?e50)))
+(flet ($e63 (= ?e46 (zero_extend[13] ?e7)))
+(flet ($e64 (= (zero_extend[12] ?e30) ?e29))
+(flet ($e65 (= (zero_extend[10] ?e54) ?e6))
+(flet ($e66 (= ?e20 (sign_extend[13] ?e44)))
+(flet ($e67 (= ?e43 (zero_extend[1] ?e19)))
+(flet ($e68 (= ?e9 (sign_extend[8] ?e36)))
+(flet ($e69 (= ?e56 (zero_extend[6] ?e49)))
+(flet ($e70 (= ?e52 (sign_extend[3] v2)))
+(flet ($e71 (= ?e6 (zero_extend[8] ?e47)))
+(flet ($e72 (= ?e56 (zero_extend[6] v0)))
+(flet ($e73 (= ?e33 (zero_extend[4] ?e34)))
+(flet ($e74 (= ?e32 ?e27))
+(flet ($e75 (= ?e12 (sign_extend[12] ?e34)))
+(flet ($e76 (= ?e21 ?e6))
+(flet ($e77 (= (sign_extend[12] ?e37) v2))
+(flet ($e78 (= ?e36 (sign_extend[5] ?e30)))
+(flet ($e79 (= v2 ?e13))
+(flet ($e80 (= (zero_extend[12] ?e55) ?e56))
+(flet ($e81 (= ?e52 (zero_extend[2] ?e9)))
+(flet ($e82 (= (sign_extend[12] ?e55) ?e13))
+(flet ($e83 (= ?e57 (sign_extend[1] ?e23)))
+(flet ($e84 (= (zero_extend[7] v0) ?e27))
+(flet ($e85 (= (sign_extend[15] ?e14) v3))
+(flet ($e86 (= ?e62 (sign_extend[2] ?e9)))
+(flet ($e87 (= (zero_extend[13] ?e31) ?e23))
+(flet ($e88 (= (zero_extend[2] ?e5) ?e46))
+(flet ($e89 (= ?e12 (zero_extend[1] ?e38)))
+(flet ($e90 (= ?e13 (zero_extend[12] ?e61)))
+(flet ($e91 (= (zero_extend[12] ?e30) ?e12))
+(flet ($e92 (= (zero_extend[4] ?e61) ?e33))
+(flet ($e93 (= ?e32 (sign_extend[1] ?e12)))
+(flet ($e94 (= ?e40 (sign_extend[12] ?e31)))
+(flet ($e95 (= (sign_extend[11] ?e28) ?e38))
+(flet ($e96 (= ?e36 (sign_extend[5] ?e26)))
+(flet ($e97 (= ?e6 ?e35))
+(flet ($e98 (= ?e52 (zero_extend[9] ?e8)))
+(flet ($e99 (= (sign_extend[7] ?e8) ?e53))
+(flet ($e100 (= (zero_extend[12] ?e42) ?e21))
+(flet ($e101 (= ?e46 (sign_extend[1] ?e51)))
+(flet ($e102 (= ?e46 (zero_extend[13] ?e26)))
+(flet ($e103 (= ?e31 ?e15))
+(flet ($e104 (= ?e59 (sign_extend[12] ?e7)))
+(flet ($e105 (= (sign_extend[12] ?e45) ?e48))
+(flet ($e106 (= ?e4 ?e4))
+(flet ($e107 (= ?e52 (sign_extend[4] ?e38)))
+(flet ($e108 (= ?e62 (sign_extend[3] ?e56)))
+(flet ($e109 (= ?e37 ?e60))
+(flet ($e110 (= (sign_extend[1] ?e36) ?e8))
+(flet ($e111 (= (sign_extend[1] ?e29) ?e22))
+(flet ($e112 (= ?e53 (sign_extend[13] ?e44)))
+(flet ($e113 (= ?e27 (sign_extend[13] ?e31)))
+(flet ($e114 (= (sign_extend[1] ?e59) ?e9))
+(flet ($e115 (= (zero_extend[1] ?e16) ?e22))
+(flet ($e116 (= (zero_extend[13] ?e7) ?e9))
+(flet ($e117 (= ?e40 ?e35))
+(flet ($e118 (= (zero_extend[13] ?e60) ?e22))
+(flet ($e119 (= ?e50 (sign_extend[1] ?e38)))
+(flet ($e120 (= ?e56 ?e35))
+(flet ($e121 (= ?e16 (sign_extend[12] ?e7)))
+(flet ($e122 (= (zero_extend[1] ?e5) ?e59))
+(flet ($e123 (= (sign_extend[7] ?e8) ?e22))
+(flet ($e124 (= ?e9 (sign_extend[1] v2)))
+(flet ($e125 (= (zero_extend[2] ?e39) ?e54))
+(flet ($e126 (= ?e36 (sign_extend[5] ?e34)))
+(flet ($e127 (= (zero_extend[9] ?e8) v3))
+(flet ($e128 (= ?e23 (zero_extend[2] ?e11)))
+(flet ($e129 (= (sign_extend[12] ?e55) ?e56))
+(flet ($e130 (= ?e57 (sign_extend[10] ?e33)))
+(flet ($e131 (= ?e23 ?e32))
+(flet ($e132 (= ?e62 (zero_extend[15] ?e58)))
+(flet ($e133 (= ?e30 ?e42))
+(flet ($e134 (= ?e26 ?e7))
+(flet ($e135 (= v2 ?e21))
+(flet ($e136 (= ?e53 ?e23))
+(flet ($e137 (= ?e23 (sign_extend[13] ?e37)))
+(flet ($e138 (= (sign_extend[13] ?e24) ?e53))
+(flet ($e139 (= (zero_extend[1] ?e13) ?e17))
+(flet ($e140 (= ?e58 ?e7))
+(flet ($e141 (= ?e6 (zero_extend[12] ?e14)))
+(flet ($e142 (= ?e15 ?e37))
+(flet ($e143 (= ?e16 (sign_extend[12] ?e39)))
+(flet ($e144 (= (zero_extend[12] ?e58) ?e59))
+(flet ($e145 (= ?e52 (sign_extend[2] ?e27)))
+(flet ($e146 (= (zero_extend[15] ?e15) ?e52))
+(flet ($e147 (= ?e43 (sign_extend[1] ?e56)))
+(flet ($e148 (= (zero_extend[10] ?e54) ?e35))
+(flet ($e149 (= ?e20 (zero_extend[13] ?e34)))
+(flet ($e150 (= (sign_extend[12] ?e44) ?e41))
+(flet ($e151 (= ?e41 (sign_extend[12] ?e34)))
+(flet ($e152 (= ?e18 (zero_extend[13] ?e55)))
+(flet ($e153 (= (zero_extend[2] ?e9) v3))
+(flet ($e154 (= (sign_extend[13] ?e45) ?e43))
+(flet ($e155 (= ?e40 ?e35))
+(flet ($e156 (= ?e19 (zero_extend[12] ?e61)))
+(flet ($e157 (= (zero_extend[1] ?e5) ?e59))
+(flet ($e158 (= ?e35 (zero_extend[12] ?e37)))
+(flet ($e159 (= ?e53 ?e43))
+(flet ($e160 (= ?e32 (zero_extend[2] ?e5)))
+(flet ($e161 (= ?e54 (sign_extend[2] ?e55)))
+(flet ($e162 (= ?e51 ?e12))
+(flet ($e163 (= (sign_extend[12] ?e34) ?e6))
+(flet ($e164 (= ?e17 ?e53))
+(flet ($e165 (= ?e53 ?e9))
+(flet ($e166 (= ?e8 (sign_extend[6] ?e10)))
+(flet ($e167 (= ?e10 ?e24))
+(flet ($e168 (= (sign_extend[11] ?e47) ?e62))
+(flet ($e169 (= (zero_extend[12] ?e42) v2))
+(flet ($e170 (= (sign_extend[11] ?e15) ?e5))
+(flet ($e171 (= (zero_extend[12] ?e45) v2))
+(flet ($e172 (= (zero_extend[1] ?e56) ?e20))
+(flet ($e173 (= ?e5 (sign_extend[7] v1)))
+(flet ($e174 (= ?e36 (sign_extend[3] ?e54)))
+(flet ($e175 (= ?e6 (sign_extend[12] ?e31)))
+(flet ($e176 (= (sign_extend[13] ?e42) ?e22))
+(flet ($e177 (= (sign_extend[2] ?e17) ?e62))
+(flet ($e178 (= (sign_extend[7] ?e33) ?e11))
+(flet ($e179 (= ?e27 (zero_extend[13] ?e14)))
+(flet ($e180 (= (zero_extend[2] v2) ?e57))
+(flet ($e181 (= v3 (zero_extend[3] ?e40)))
+(flet ($e182 (= ?e30 ?e24))
+(flet ($e183 (= (sign_extend[11] ?e30) ?e11))
+(flet ($e184 (= ?e17 (zero_extend[9] ?e33)))
+(flet ($e185 (= (sign_extend[7] ?e36) ?e51))
+(flet ($e186 (= (zero_extend[13] ?e61) ?e23))
+(flet ($e187 (= (sign_extend[15] ?e44) ?e52))
+(flet ($e188 (= ?e39 ?e34))
+(flet ($e189 (= ?e59 (sign_extend[12] ?e55)))
+(flet ($e190 (= v2 ?e16))
+(flet ($e191 (= ?e36 (zero_extend[5] ?e24)))
+(flet ($e192 (= (sign_extend[12] ?e10) ?e41))
+(flet ($e193 (= ?e57 (zero_extend[2] ?e6)))
+(flet ($e194 (= ?e31 ?e10))
+(flet ($e195 (= ?e38 (zero_extend[11] ?e58)))
+(flet ($e196 (= ?e27 (zero_extend[13] ?e58)))
+(flet ($e197 (= (zero_extend[13] ?e60) ?e4))
+(flet ($e198 (= ?e50 (sign_extend[12] ?e39)))
+(flet ($e199 (= ?e20 ?e32))
+(flet ($e200 (= (zero_extend[1] ?e12) ?e22))
+(flet ($e201 (= ?e51 (sign_extend[12] ?e14)))
+(flet ($e202 (= (sign_extend[2] ?e4) v3))
+(flet ($e203 (= (sign_extend[8] ?e36) ?e20))
+(flet ($e204 (= ?e62 (zero_extend[15] ?e42)))
+(flet ($e205 (= ?e21 (sign_extend[8] v1)))
+(flet ($e206 (= ?e33 (zero_extend[4] ?e60)))
+(flet ($e207 (= ?e55 ?e45))
+(flet ($e208 (= ?e55 ?e45))
+(flet ($e209 (= (zero_extend[13] ?e44) ?e20))
+(flet ($e210 (= (zero_extend[1] ?e11) ?e51))
+(flet ($e211 (= v3 (zero_extend[2] ?e27)))
+(flet ($e212 (= ?e25 ?e21))
+(flet ($e213 (iff $e200 $e110))
+(flet ($e214 (iff $e209 $e138))
+(flet ($e215 (if_then_else $e204 $e156 $e75))
+(flet ($e216 (xor $e191 $e126))
+(flet ($e217 (and $e175 $e151))
+(flet ($e218 (xor $e80 $e196))
+(flet ($e219 (xor $e202 $e187))
+(flet ($e220 (and $e114 $e163))
+(flet ($e221 (or $e63 $e203))
+(flet ($e222 (implies $e131 $e134))
+(flet ($e223 (iff $e152 $e108))
+(flet ($e224 (xor $e119 $e85))
+(flet ($e225 (not $e184))
+(flet ($e226 (implies $e88 $e213))
+(flet ($e227 (not $e161))
+(flet ($e228 (if_then_else $e201 $e103 $e112))
+(flet ($e229 (not $e118))
+(flet ($e230 (and $e82 $e122))
+(flet ($e231 (implies $e90 $e149))
+(flet ($e232 (implies $e120 $e193))
+(flet ($e233 (xor $e109 $e140))
+(flet ($e234 (or $e190 $e113))
+(flet ($e235 (or $e228 $e150))
+(flet ($e236 (or $e76 $e220))
+(flet ($e237 (iff $e144 $e155))
+(flet ($e238 (or $e142 $e159))
+(flet ($e239 (if_then_else $e222 $e158 $e100))
+(flet ($e240 (not $e129))
+(flet ($e241 (and $e164 $e179))
+(flet ($e242 (implies $e73 $e226))
+(flet ($e243 (xor $e166 $e66))
+(flet ($e244 (iff $e168 $e102))
+(flet ($e245 (not $e86))
+(flet ($e246 (if_then_else $e244 $e183 $e83))
+(flet ($e247 (if_then_else $e137 $e225 $e236))
+(flet ($e248 (if_then_else $e79 $e171 $e239))
+(flet ($e249 (xor $e217 $e176))
+(flet ($e250 (xor $e249 $e145))
+(flet ($e251 (implies $e194 $e195))
+(flet ($e252 (iff $e197 $e206))
+(flet ($e253 (xor $e95 $e243))
+(flet ($e254 (xor $e98 $e218))
+(flet ($e255 (not $e157))
+(flet ($e256 (if_then_else $e182 $e221 $e115))
+(flet ($e257 (or $e216 $e177))
+(flet ($e258 (iff $e139 $e235))
+(flet ($e259 (not $e172))
+(flet ($e260 (not $e77))
+(flet ($e261 (and $e180 $e125))
+(flet ($e262 (or $e91 $e87))
+(flet ($e263 (not $e135))
+(flet ($e264 (implies $e130 $e232))
+(flet ($e265 (if_then_else $e240 $e111 $e123))
+(flet ($e266 (not $e121))
+(flet ($e267 (xor $e199 $e147))
+(flet ($e268 (xor $e74 $e170))
+(flet ($e269 (implies $e192 $e267))
+(flet ($e270 (implies $e245 $e65))
+(flet ($e271 (implies $e230 $e148))
+(flet ($e272 (implies $e264 $e205))
+(flet ($e273 (and $e143 $e78))
+(flet ($e274 (not $e257))
+(flet ($e275 (xor $e261 $e167))
+(flet ($e276 (not $e268))
+(flet ($e277 (iff $e93 $e260))
+(flet ($e278 (if_then_else $e242 $e258 $e247))
+(flet ($e279 (if_then_else $e252 $e116 $e214))
+(flet ($e280 (implies $e259 $e189))
+(flet ($e281 (not $e141))
+(flet ($e282 (if_then_else $e96 $e208 $e127))
+(flet ($e283 (iff $e211 $e165))
+(flet ($e284 (implies $e255 $e185))
+(flet ($e285 (if_then_else $e278 $e162 $e272))
+(flet ($e286 (and $e128 $e282))
+(flet ($e287 (or $e263 $e273))
+(flet ($e288 (or $e106 $e215))
+(flet ($e289 (not $e71))
+(flet ($e290 (iff $e207 $e250))
+(flet ($e291 (or $e68 $e68))
+(flet ($e292 (implies $e72 $e212))
+(flet ($e293 (implies $e254 $e277))
+(flet ($e294 (not $e280))
+(flet ($e295 (not $e274))
+(flet ($e296 (implies $e256 $e233))
+(flet ($e297 (implies $e275 $e64))
+(flet ($e298 (or $e234 $e248))
+(flet ($e299 (or $e153 $e223))
+(flet ($e300 (if_then_else $e286 $e224 $e276))
+(flet ($e301 (or $e94 $e124))
+(flet ($e302 (or $e279 $e287))
+(flet ($e303 (if_then_else $e302 $e292 $e174))
+(flet ($e304 (if_then_else $e265 $e104 $e294))
+(flet ($e305 (or $e186 $e173))
+(flet ($e306 (if_then_else $e270 $e133 $e288))
+(flet ($e307 (and $e81 $e305))
+(flet ($e308 (xor $e293 $e291))
+(flet ($e309 (iff $e84 $e303))
+(flet ($e310 (xor $e262 $e284))
+(flet ($e311 (iff $e297 $e178))
+(flet ($e312 (iff $e198 $e132))
+(flet ($e313 (if_then_else $e169 $e304 $e146))
+(flet ($e314 (if_then_else $e306 $e285 $e307))
+(flet ($e315 (and $e281 $e289))
+(flet ($e316 (if_then_else $e309 $e299 $e97))
+(flet ($e317 (or $e266 $e117))
+(flet ($e318 (and $e227 $e301))
+(flet ($e319 (or $e300 $e317))
+(flet ($e320 (iff $e313 $e237))
+(flet ($e321 (or $e241 $e318))
+(flet ($e322 (and $e308 $e188))
+(flet ($e323 (xor $e269 $e154))
+(flet ($e324 (xor $e69 $e246))
+(flet ($e325 (or $e310 $e296))
+(flet ($e326 (implies $e136 $e311))
+(flet ($e327 (or $e326 $e160))
+(flet ($e328 (if_then_else $e295 $e238 $e229))
+(flet ($e329 (or $e316 $e322))
+(flet ($e330 (and $e319 $e89))
+(flet ($e331 (not $e298))
+(flet ($e332 (or $e219 $e92))
+(flet ($e333 (implies $e324 $e271))
+(flet ($e334 (iff $e251 $e323))
+(flet ($e335 (xor $e181 $e327))
+(flet ($e336 (implies $e331 $e210))
+(flet ($e337 (implies $e231 $e290))
+(flet ($e338 (iff $e312 $e99))
+(flet ($e339 (implies $e105 $e337))
+(flet ($e340 (implies $e325 $e339))
+(flet ($e341 (xor $e335 $e101))
+(flet ($e342 (iff $e253 $e330))
+(flet ($e343 (iff $e328 $e341))
+(flet ($e344 (and $e321 $e340))
+(flet ($e345 (and $e314 $e343))
+(flet ($e346 (iff $e333 $e329))
+(flet ($e347 (not $e70))
+(flet ($e348 (or $e283 $e107))
+(flet ($e349 (or $e336 $e345))
+(flet ($e350 (not $e332))
+(flet ($e351 (and $e315 $e342))
+(flet ($e352 (xor $e349 $e348))
+(flet ($e353 (xor $e67 $e344))
+(flet ($e354 (not $e334))
+(flet ($e355 (and $e354 $e352))
+(flet ($e356 (if_then_else $e351 $e355 $e347))
+(flet ($e357 (and $e346 $e320))
+(flet ($e358 (iff $e350 $e338))
+(flet ($e359 (not $e353))
+(flet ($e360 (or $e359 $e357))
+(flet ($e361 (xor $e360 $e356))
+(flet ($e362 (implies $e361 $e358))
+$e362
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz10.smt b/test/regress/regress0/bv/fuzz10.smt
new file mode 100644
index 0000000..859c1ec
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz10.smt
@@ -0,0 +1,7 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v0 BitVec[1]))
+:status unsat:formula
+(flet ($n1 (bvsgt v0 v0))
+$n1
+))
diff --git a/test/regress/regress0/bv/fuzz11.smt b/test/regress/regress0/bv/fuzz11.smt
new file mode 100644
index 0000000..b789d40
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz11.smt
@@ -0,0 +1,15 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v0 BitVec[11]))
+:status unsat
+:formula
+(let (?n1 bv0[16])
+(let (?n2 (zero_extend[5] v0))
+(flet ($n3 (bvsge ?n1 ?n2))
+(let (?n4 bv1[1])
+(let (?n5 bv0[1])
+(let (?n6 (ite $n3 ?n4 ?n5))
+(let (?n7 (zero_extend[10] ?n6))
+(flet ($n8 (= v0 ?n7))
+$n8
+)))))))))
diff --git a/test/regress/regress0/bv/fuzz12.smt b/test/regress/regress0/bv/fuzz12.smt
new file mode 100644
index 0000000..017732c
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz12.smt
@@ -0,0 +1,57 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v1 BitVec[9]))
+:extrafuns ((v2 BitVec[10]))
+:extrafuns ((v0 BitVec[3]))
+:status sat
+:formula
+(let (?n1 bv1[3])
+(flet ($n2 (= ?n1 v0))
+(let (?n3 bv0[9])
+(let (?n4 bv1[1])
+(let (?n5 (sign_extend[2] v2))
+(let (?n6 (extract[9:9] ?n5))
+(flet ($n7 (= ?n4 ?n6))
+(let (?n8 (bvneg v1))
+(let (?n9 bv1[11])
+(let (?n10 (zero_extend[8] v0))
+(flet ($n11 (bvsgt ?n9 ?n10))
+(let (?n12 bv0[1])
+(let (?n13 (ite $n11 ?n4 ?n12))
+(let (?n14 (zero_extend[8] ?n13))
+(let (?n15 (ite $n7 ?n8 ?n14))
+(flet ($n16 (= ?n3 ?n15))
+(let (?n17 bv1[12])
+(let (?n18 (zero_extend[3] v1))
+(flet ($n19 (bvult ?n17 ?n18))
+(let (?n20 (ite $n19 ?n4 ?n12))
+(let (?n21 (zero_extend[1] v1))
+(let (?n22 (bvlshr v2 ?n21))
+(let (?n23 (zero_extend[2] ?n22))
+(let (?n24 bv0[12])
+(flet ($n25 (= ?n23 ?n24))
+(let (?n26 (ite $n25 ?n4 ?n12))
+(flet ($n27 (= ?n20 ?n26))
+(flet ($n28 (or $n16 $n27))
+(let (?n29 (sign_extend[9] v0))
+(flet ($n30 (= ?n24 ?n29))
+(let (?n31 bv0[10])
+(let (?n32 (rotate_left[3] ?n8))
+(let (?n33 (zero_extend[1] ?n32))
+(let (?n34 (bvmul ?n22 ?n33))
+(let (?n35 (bvcomp ?n31 ?n34))
+(flet ($n36 (= ?n4 ?n35))
+(let (?n37 bv1[9])
+(let (?n38 (bvadd v1 ?n37))
+(let (?n39 (zero_extend[6] v0))
+(flet ($n40 (bvsge ?n38 ?n39))
+(let (?n41 (ite $n40 ?n4 ?n12))
+(let (?n42 (bvnor ?n41 ?n41))
+(flet ($n43 (= ?n4 ?n42))
+(let (?n44 (ite $n43 ?n31 ?n22))
+(flet ($n45 (= ?n31 ?n44))
+(flet ($n46 (if_then_else $n30 $n36 $n45))
+(flet ($n47 (xor $n28 $n46))
+(flet ($n48 (implies $n2 $n47))
+$n48
+)))))))))))))))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/bv/fuzz13.smt b/test/regress/regress0/bv/fuzz13.smt
new file mode 100644
index 0000000..6d84c00
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz13.smt
@@ -0,0 +1,23 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v1 BitVec[13]))
+:status sat
+:formula
+(let (?n1 bv1[13])
+(flet ($n2 (bvult v1 ?n1))
+(let (?n3 bv1[1])
+(let (?n4 bv0[1])
+(let (?n5 (ite $n2 ?n3 ?n4))
+(let (?n6 (zero_extend[12] ?n5))
+(flet ($n7 (bvuge ?n6 v1))
+(let (?n8 (ite $n7 ?n3 ?n4))
+(let (?n9 (zero_extend[12] ?n8))
+(flet ($n10 (bvult ?n9 ?n1))
+(let (?n11 (ite $n10 ?n3 ?n4))
+(let (?n12 (sign_extend[5] ?n5))
+(let (?n13 bv0[6])
+(flet ($n14 (bvsgt ?n12 ?n13))
+(let (?n15 (ite $n14 ?n3 ?n4))
+(flet ($n16 (= ?n11 ?n15))
+$n16
+)))))))))))))))))
diff --git a/test/regress/regress0/bv/fuzz14.smt b/test/regress/regress0/bv/fuzz14.smt
new file mode 100644
index 0000000..51a7b7c
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz14.smt
@@ -0,0 +1,43 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v2 BitVec[13]))
+:extrafuns ((v1 BitVec[2]))
+:status sat
+:formula
+(let (?n1 bv1[1])
+(let (?n2 bv0[2])
+(flet ($n3 (bvsge ?n2 v1))
+(let (?n4 bv0[1])
+(let (?n5 (ite $n3 ?n1 ?n4))
+(flet ($n6 (= ?n1 ?n5))
+(let (?n7 bv0[13])
+(flet ($n8 (bvslt ?n7 v2))
+(let (?n9 (ite $n8 ?n1 ?n4))
+(let (?n10 (bvneg ?n9))
+(let (?n11 (ite $n6 ?n10 ?n9))
+(let (?n12 (zero_extend[12] ?n11))
+(flet ($n13 (= v2 ?n12))
+(flet ($n14 (= ?n1 ?n9))
+(flet ($n15 (and $n13 $n14))
+(flet ($n16 (not $n15))
+(let (?n17 (bvashr v2 v2))
+(let (?n18 (bvshl v2 ?n17))
+(flet ($n19 (= ?n7 ?n18))
+(let (?n20 bv1[13])
+(let (?n21 (bvsub ?n20 v2))
+(flet ($n22 (= ?n17 ?n21))
+(let (?n23 bv1[10])
+(let (?n24 (sign_extend[9] ?n11))
+(flet ($n25 (= ?n23 ?n24))
+(flet ($n26 (if_then_else $n19 $n22 $n25))
+(flet ($n27 (bvult ?n10 ?n1))
+(let (?n28 (ite $n27 ?n1 ?n4))
+(flet ($n29 (= ?n11 ?n28))
+(let (?n30 bv0[4])
+(let (?n31 (sign_extend[3] ?n11))
+(flet ($n32 (= ?n30 ?n31))
+(flet ($n33 (implies $n29 $n32))
+(flet ($n34 (if_then_else $n26 $n33 $n26))
+(flet ($n35 (implies $n16 $n34))
+$n35
+))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/bv/fuzz16.delta01.smt b/test/regress/regress0/bv/fuzz16.delta01.smt
new file mode 100644
index 0000000..c9fef69
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz16.delta01.smt
@@ -0,0 +1,69 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v1 BitVec[12]))
+:extrafuns ((v15 BitVec[8]))
+:extrafuns ((v11 BitVec[12]))
+:extrafuns ((v12 BitVec[15]))
+:status unsat
+:formula
+(flet ($n1 true)
+(let (?n2 bv0[12])
+(flet ($n3 (bvslt ?n2 v1))
+(flet ($n4 (not $n3))
+(let (?n5 bv0[1])
+(let (?n6 bv1[1])
+(let (?n7 bv1[12])
+(flet ($n8 (bvult v11 ?n7))
+(let (?n9 (ite $n8 ?n6 ?n5))
+(flet ($n10 (= ?n6 ?n9))
+(let (?n11 (ite $n10 v11 ?n2))
+(let (?n12 (sign_extend[3] ?n11))
+(flet ($n13 (bvult ?n12 v12))
+(let (?n14 (ite $n13 ?n6 ?n5))
+(flet ($n15 (bvult ?n5 ?n14))
+(flet ($n16 (not $n15))
+(let (?n17 bv0[5])
+(let (?n18 (sign_extend[1] v1))
+(let (?n19 (sign_extend[2] ?n18))
+(let (?n20 (bvxnor v12 ?n19))
+(flet ($n21 (bvult ?n19 ?n20))
+(let (?n22 (ite $n21 ?n6 ?n5))
+(let (?n23 (repeat[5] ?n22))
+(flet ($n24 (bvult ?n17 ?n23))
+(let (?n25 bv0[10])
+(let (?n26 bv0[15])
+(flet ($n27 (bvsge ?n20 ?n26))
+(let (?n28 (ite $n27 ?n6 ?n5))
+(let (?n29 (sign_extend[9] ?n28))
+(flet ($n30 (= ?n25 ?n29))
+(let (?n31 bv1[14])
+(flet ($n32 (bvult ?n22 ?n6))
+(let (?n33 (ite $n32 ?n6 ?n5))
+(let (?n34 (zero_extend[13] ?n33))
+(let (?n35 (bvadd ?n31 ?n34))
+(let (?n36 bv0[14])
+(flet ($n37 (bvugt ?n35 ?n36))
+(flet ($n38 false)
+(let (?n39 bv1[15])
+(let (?n40 (zero_extend[4] v15))
+(let (?n41 (bvcomp v11 ?n40))
+(let (?n42 (zero_extend[14] ?n41))
+(flet ($n43 (distinct ?n39 ?n42))
+(let (?n44 (ite $n43 ?n6 ?n5))
+(let (?n45 (sign_extend[11] ?n44))
+(let (?n46 (bvxor v1 ?n45))
+(flet ($n47 (bvsgt ?n2 ?n46))
+(let (?n48 (zero_extend[12] ?n44))
+(let (?n49 bv0[13])
+(flet ($n50 (bvule ?n48 ?n49))
+(flet ($n51 (or $n38 $n47 $n50))
+(flet ($n52 (bvsle ?n2 v1))
+(let (?n53 (ite $n52 ?n6 ?n5))
+(let (?n54 (bvadd ?n6 ?n53))
+(flet ($n55 (bvugt ?n54 ?n5))
+(let (?n56 (ite $n55 ?n6 ?n5))
+(let (?n57 (sign_extend[14] ?n56))
+(flet ($n58 (bvuge ?n57 ?n39))
+(flet ($n59 (and $n4 $n16 $n24 $n30 $n37 $n51 $n58))
+$n59
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/bv/fuzz17.delta01.smt b/test/regress/regress0/bv/fuzz17.delta01.smt
new file mode 100644
index 0000000..568658e
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz17.delta01.smt
@@ -0,0 +1,105 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v13 BitVec[16]))
+:extrafuns ((v9 BitVec[14]))
+:extrafuns ((v11 BitVec[13]))
+:extrafuns ((v3 BitVec[11]))
+:extrafuns ((v8 BitVec[9]))
+:extrafuns ((v4 BitVec[14]))
+:status sat
+:formula
+(let (?n1 bv0[1])
+(let (?n2 bv1[16])
+(let (?n3 (sign_extend[2] v4))
+(let (?n4 (bvshl ?n2 ?n3))
+(let (?n5 (extract[5:2] v8))
+(let (?n6 (sign_extend[9] ?n5))
+(let (?n7 (bvxnor ?n6 v11))
+(let (?n8 (sign_extend[3] ?n7))
+(let (?n9 (bvnand ?n4 ?n8))
+(let (?n10 (bvneg ?n9))
+(let (?n11 bv0[16])
+(flet ($n12 (bvugt ?n4 ?n11))
+(let (?n13 bv1[1])
+(let (?n14 (ite $n12 ?n13 ?n1))
+(let (?n15 (zero_extend[8] ?n14))
+(let (?n16 (extract[13:5] v9))
+(let (?n17 (bvashr ?n15 ?n16))
+(let (?n18 (zero_extend[7] ?n17))
+(let (?n19 (bvsub ?n10 ?n18))
+(flet ($n20 (distinct ?n2 ?n19))
+(let (?n21 (ite $n20 ?n13 ?n1))
+(flet ($n22 (= ?n1 ?n21))
+(flet ($n23 (not $n22))
+(let (?n24 (sign_extend[1] v11))
+(flet ($n25 (bvugt ?n24 v4))
+(let (?n26 (ite $n25 ?n13 ?n1))
+(let (?n27 bv21[8])
+(let (?n28 (zero_extend[1] ?n27))
+(flet ($n29 (bvuge ?n28 v8))
+(let (?n30 (ite $n29 ?n13 ?n1))
+(flet ($n31 (bvugt ?n26 ?n30))
+(let (?n32 (ite $n31 ?n13 ?n1))
+(let (?n33 (sign_extend[14] ?n32))
+(let (?n34 (sign_extend[2] v11))
+(let (?n35 (bvand ?n33 ?n34))
+(let (?n36 bv0[15])
+(flet ($n37 (bvslt ?n35 ?n36))
+(let (?n38 (ite $n37 ?n13 ?n1))
+(let (?n39 (sign_extend[3] ?n38))
+(flet ($n40 (bvsle ?n5 ?n39))
+(flet ($n41 false)
+(let (?n42 bv0[14])
+(flet ($n43 (bvslt v4 ?n42))
+(let (?n44 (ite $n43 ?n13 ?n1))
+(let (?n45 (zero_extend[7] v8))
+(let (?n46 (bvand ?n45 v13))
+(let (?n47 (bvsub ?n2 ?n46))
+(let (?n48 (sign_extend[7] v8))
+(flet ($n49 (= ?n47 ?n48))
+(let (?n50 (ite $n49 ?n13 ?n1))
+(let (?n51 (zero_extend[8] ?n50))
+(let (?n52 bv1[9])
+(let (?n53 (bvnor ?n52 ?n52))
+(let (?n54 (bvsub ?n51 ?n53))
+(let (?n55 (zero_extend[6] ?n54))
+(let (?n56 (bvshl ?n35 ?n55))
+(let (?n57 (zero_extend[1] ?n56))
+(flet ($n58 (distinct ?n11 ?n57))
+(let (?n59 (ite $n58 ?n13 ?n1))
+(let (?n60 (bvcomp ?n44 ?n59))
+(let (?n61 (zero_extend[13] ?n60))
+(flet ($n62 (bvult ?n42 ?n61))
+(flet ($n63 (bvsgt ?n46 ?n45))
+(let (?n64 (ite $n63 ?n13 ?n1))
+(let (?n65 (sign_extend[8] ?n64))
+(let (?n66 (sign_extend[8] ?n13))
+(let (?n67 (bvadd ?n65 ?n66))
+(let (?n68 bv0[9])
+(flet ($n69 (= ?n67 ?n68))
+(flet ($n70 (or $n41 $n62 $n69))
+(let (?n71 (zero_extend[2] v9))
+(flet ($n72 (bvsle ?n71 ?n46))
+(let (?n73 (ite $n72 ?n13 ?n1))
+(flet ($n74 (= ?n1 ?n73))
+(let (?n75 bv1[13])
+(flet ($n76 (= ?n7 ?n75))
+(let (?n77 (ite $n76 ?n13 ?n1))
+(let (?n78 (sign_extend[10] ?n77))
+(flet ($n79 (bvsge ?n78 v3))
+(let (?n80 (ite $n79 ?n13 ?n1))
+(let (?n81 (zero_extend[15] ?n80))
+(flet ($n82 (bvsge ?n81 ?n11))
+(let (?n83 (bvxnor v11 ?n75))
+(let (?n84 (zero_extend[3] ?n83))
+(let (?n85 bv1[14])
+(flet ($n86 (bvsgt ?n85 v9))
+(let (?n87 (ite $n86 ?n13 ?n1))
+(flet ($n88 (= ?n13 ?n87))
+(let (?n89 (ite $n88 v13 ?n11))
+(let (?n90 (bvxnor ?n84 ?n89))
+(flet ($n91 (distinct ?n2 ?n90))
+(flet ($n92 (not $n91))
+(flet ($n93 (and $n23 $n40 $n70 $n74 $n82 $n92))
+$n93
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/bv/fuzz18.delta01.smt b/test/regress/regress0/bv/fuzz18.delta01.smt
new file mode 100644
index 0000000..87cceb8
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz18.delta01.smt
@@ -0,0 +1,117 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v2 BitVec[4]))
+:extrafuns ((v4 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v6 BitVec[4]))
+:status unsat
+:formula
+(let (?n1 bv1[1])
+(let (?n2 (extract[1:1] v2))
+(flet ($n3 (= ?n1 ?n2))
+(let (?n4 bv0[4])
+(let (?n5 bv1[4])
+(let (?n6 (ite $n3 ?n4 ?n5))
+(let (?n7 (bvlshr v2 v4))
+(flet ($n8 (bvule ?n6 ?n7))
+(let (?n9 bv0[1])
+(let (?n10 (ite $n8 ?n1 ?n9))
+(flet ($n11 (distinct ?n1 ?n10))
+(let (?n12 (ite $n11 ?n1 ?n9))
+(let (?n13 (sign_extend[3] ?n12))
+(flet ($n14 (bvuge ?n13 ?n5))
+(flet ($n15 (bvuge v1 v6))
+(let (?n16 (ite $n15 ?n1 ?n9))
+(let (?n17 (sign_extend[3] ?n16))
+(let (?n18 (bvand v1 ?n17))
+(flet ($n19 (bvult ?n18 ?n5))
+(let (?n20 (ite $n19 ?n1 ?n9))
+(flet ($n21 (bvslt ?n1 ?n20))
+(let (?n22 (ite $n21 ?n1 ?n9))
+(let (?n23 (zero_extend[1] ?n22))
+(let (?n24 bv0[2])
+(flet ($n25 (bvsgt ?n23 ?n24))
+(let (?n26 (ite $n25 ?n1 ?n9))
+(let (?n27 (sign_extend[3] ?n26))
+(flet ($n28 (bvsle v2 ?n27))
+(let (?n29 (rotate_left[3] v4))
+(let (?n30 (bvnot ?n29))
+(flet ($n31 (bvslt ?n4 ?n30))
+(let (?n32 (ite $n31 ?n1 ?n9))
+(let (?n33 (zero_extend[3] ?n32))
+(flet ($n34 (bvsge ?n5 ?n33))
+(let (?n35 (bvsub ?n5 ?n30))
+(let (?n36 bv4[4])
+(flet ($n37 (bvule ?n35 ?n36))
+(flet ($n38 false)
+(flet ($n39 (bvult v0 ?n5))
+(let (?n40 (bvshl ?n36 v1))
+(let (?n41 (bvmul v4 ?n18))
+(flet ($n42 (distinct ?n40 ?n41))
+(let (?n43 (ite $n42 ?n1 ?n9))
+(let (?n44 bv1[2])
+(let (?n45 (bvnor v1 ?n30))
+(flet ($n46 (bvuge ?n45 v6))
+(let (?n47 (ite $n46 ?n1 ?n9))
+(let (?n48 (sign_extend[3] ?n47))
+(flet ($n49 (bvult ?n4 ?n48))
+(let (?n50 (ite $n49 ?n1 ?n9))
+(let (?n51 (sign_extend[1] ?n50))
+(flet ($n52 (bvule ?n44 ?n51))
+(let (?n53 (ite $n52 ?n1 ?n9))
+(flet ($n54 (= ?n43 ?n53))
+(let (?n55 (ite $n54 ?n1 ?n9))
+(let (?n56 (sign_extend[3] ?n55))
+(flet ($n57 (bvugt ?n5 ?n56))
+(flet ($n58 (or $n38 $n39 $n57))
+(let (?n59 (sign_extend[3] ?n1))
+(let (?n60 (bvmul v2 ?n36))
+(let (?n61 (bvnor ?n5 ?n60))
+(let (?n62 (bvadd ?n59 ?n61))
+(flet ($n63 (bvsge ?n62 ?n4))
+(flet ($n64 (bvugt ?n59 v2))
+(flet ($n65 (bvsge v6 ?n61))
+(let (?n66 (ite $n65 ?n1 ?n9))
+(let (?n67 (bvshl v1 v0))
+(flet ($n68 (bvuge ?n4 ?n40))
+(let (?n69 (ite $n68 ?n1 ?n9))
+(let (?n70 (bvxnor ?n9 ?n69))
+(let (?n71 (sign_extend[3] ?n70))
+(flet ($n72 (bvuge v6 ?n71))
+(let (?n73 (ite $n72 ?n1 ?n9))
+(let (?n74 (zero_extend[3] ?n73))
+(flet ($n75 (bvsle ?n67 ?n74))
+(let (?n76 (ite $n75 ?n1 ?n9))
+(flet ($n77 (bvugt ?n66 ?n76))
+(flet ($n78 (or $n38 $n64 $n77))
+(flet ($n79 (bvult ?n4 ?n18))
+(let (?n80 (ite $n79 ?n1 ?n9))
+(flet ($n81 (bvule ?n1 ?n80))
+(flet ($n82 (not $n81))
+(let (?n83 (sign_extend[1] ?n66))
+(flet ($n84 (= ?n24 ?n83))
+(flet ($n85 (or $n38 $n82 $n84))
+(flet ($n86 (bvuge ?n29 ?n62))
+(flet ($n87 (bvsgt ?n45 ?n4))
+(let (?n88 (ite $n87 ?n1 ?n9))
+(flet ($n89 (bvsge ?n10 ?n88))
+(flet ($n90 (bvsgt ?n4 v0))
+(let (?n91 (ite $n90 ?n1 ?n9))
+(let (?n92 (zero_extend[3] ?n91))
+(flet ($n93 (bvsgt v0 ?n92))
+(flet ($n94 (or $n38 $n89 $n93))
+(let (?n95 (bvcomp ?n4 ?n7))
+(let (?n96 (sign_extend[3] ?n95))
+(flet ($n97 (bvugt ?n96 ?n5))
+(let (?n98 (ite $n97 ?n1 ?n9))
+(flet ($n99 (bvsgt ?n98 ?n1))
+(flet ($n100 (bvule ?n45 ?n5))
+(let (?n101 (ite $n100 ?n1 ?n9))
+(flet ($n102 (bvslt ?n101 ?n9))
+(flet ($n103 (bvsge v2 ?n59))
+(let (?n104 (ite $n103 ?n1 ?n9))
+(flet ($n105 (bvugt ?n104 ?n9))
+(flet ($n106 (and $n14 $n28 $n34 $n37 $n58 $n63 $n78 $n85 $n86 $n94 $n99 $n102 $n105))
+$n106
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/bv/fuzz18.delta02.smt b/test/regress/regress0/bv/fuzz18.delta02.smt
new file mode 100644
index 0000000..e0fb866
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz18.delta02.smt
@@ -0,0 +1,115 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v5 BitVec[4]))
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v8 BitVec[4]))
+:extrafuns ((v3 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:extrafuns ((v6 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:status sat
+:formula
+(flet ($n1 true)
+(let (?n2 bv1[1])
+(let (?n3 (extract[1:1] v2))
+(flet ($n4 (= ?n2 ?n3))
+(let (?n5 bv4[4])
+(let (?n6 (bvadd v1 v6))
+(let (?n7 (bvsub ?n6 v6))
+(let (?n8 (ite $n4 ?n5 ?n7))
+(flet ($n9 (bvule ?n8 v2))
+(let (?n10 bv0[1])
+(let (?n11 (ite $n9 ?n2 ?n10))
+(let (?n12 (zero_extend[3] ?n11))
+(let (?n13 bv1[4])
+(flet ($n14 (bvsge ?n12 ?n13))
+(flet ($n15 false)
+(let (?n16 bv0[4])
+(let (?n17 (bvand ?n5 v3))
+(let (?n18 (bvlshr v1 ?n17))
+(flet ($n19 (bvslt ?n5 v2))
+(let (?n20 (ite $n19 ?n2 ?n10))
+(let (?n21 (zero_extend[3] ?n20))
+(flet ($n22 (bvugt ?n18 ?n21))
+(let (?n23 (ite $n22 ?n2 ?n10))
+(let (?n24 (zero_extend[3] ?n23))
+(flet ($n25 (bvsge ?n16 ?n24))
+(let (?n26 (ite $n25 ?n2 ?n10))
+(let (?n27 (sign_extend[3] ?n26))
+(flet ($n28 (bvugt ?n13 ?n27))
+(flet ($n29 (bvsle ?n16 v1))
+(let (?n30 (ite $n29 ?n2 ?n10))
+(let (?n31 (zero_extend[3] ?n30))
+(flet ($n32 (bvslt ?n16 ?n31))
+(let (?n33 (ite $n32 ?n2 ?n10))
+(let (?n34 (zero_extend[3] ?n33))
+(flet ($n35 (bvslt ?n34 ?n13))
+(flet ($n36 (or $n15 $n28 $n35))
+(flet ($n37 (bvuge v0 v6))
+(let (?n38 (ite $n37 ?n2 ?n10))
+(let (?n39 (sign_extend[3] ?n38))
+(flet ($n40 (bvule ?n39 ?n16))
+(let (?n41 (ite $n40 ?n2 ?n10))
+(let (?n42 (zero_extend[3] ?n41))
+(flet ($n43 (bvule ?n42 ?n16))
+(flet ($n44 (bvuge v1 v6))
+(let (?n45 (ite $n44 ?n2 ?n10))
+(flet ($n46 (= ?n2 ?n45))
+(let (?n47 (ite $n46 ?n13 ?n16))
+(flet ($n48 (bvsge ?n47 ?n16))
+(flet ($n49 (not $n48))
+(flet ($n50 (or $n15 $n43 $n49))
+(let (?n51 (bvshl ?n5 v1))
+(flet ($n52 (bvule ?n51 ?n16))
+(let (?n53 (sign_extend[3] ?n45))
+(flet ($n54 (bvult v0 ?n53))
+(let (?n55 (ite $n54 ?n2 ?n10))
+(let (?n56 (bvlshr ?n2 ?n55))
+(flet ($n57 (= ?n2 ?n56))
+(flet ($n58 (bvuge ?n16 ?n51))
+(let (?n59 (ite $n58 ?n2 ?n10))
+(let (?n60 (zero_extend[3] ?n59))
+(flet ($n61 (bvugt ?n60 ?n16))
+(flet ($n62 (bvslt v6 ?n16))
+(let (?n63 (ite $n62 ?n2 ?n10))
+(flet ($n64 (distinct ?n2 ?n63))
+(flet ($n65 (or $n15 $n61 $n64))
+(flet ($n66 (bvsgt v3 ?n31))
+(let (?n67 (ite $n66 ?n2 ?n10))
+(let (?n68 (zero_extend[3] ?n67))
+(flet ($n69 (= v1 ?n68))
+(let (?n70 (bvnot v5))
+(flet ($n71 (bvule v6 ?n70))
+(flet ($n72 (or $n15 $n69 $n71))
+(flet ($n73 (bvule v0 v6))
+(let (?n74 (ite $n73 ?n2 ?n10))
+(let (?n75 (extract[2:2] ?n47))
+(flet ($n76 (bvule ?n74 ?n75))
+(flet ($n77 (bvsle ?n16 ?n17))
+(flet ($n78 (or $n15 $n76 $n77))
+(let (?n79 (bvadd ?n13 ?n13))
+(let (?n80 (bvshl ?n18 ?n79))
+(flet ($n81 (bvsge ?n16 ?n80))
+(flet ($n82 (not $n81))
+(let (?n83 (bvand ?n5 ?n70))
+(flet ($n84 (bvuge ?n16 ?n83))
+(flet ($n85 (not $n84))
+(flet ($n86 (or $n15 $n82 $n85))
+(let (?n87 (sign_extend[3] ?n2))
+(flet ($n88 (bvuge v6 ?n87))
+(let (?n89 (ite $n88 ?n2 ?n10))
+(flet ($n90 (bvslt ?n23 ?n89))
+(let (?n91 (bvand v1 v6))
+(let (?n92 (bvxnor ?n16 ?n91))
+(let (?n93 (bvxnor ?n16 ?n92))
+(flet ($n94 (bvsle ?n79 ?n93))
+(flet ($n95 (not $n94))
+(let (?n96 (bvcomp v2 v3))
+(flet ($n97 (= ?n2 ?n96))
+(let (?n98 (bvcomp v0 v5))
+(let (?n99 (zero_extend[3] ?n98))
+(let (?n100 (ite $n97 v8 ?n99))
+(flet ($n101 (distinct ?n16 ?n100))
+(flet ($n102 (and $n14 $n36 $n50 $n52 $n57 $n65 $n72 $n78 $n86 $n90 $n95 $n101))
+$n102
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/bv/fuzz18.delta03.smt b/test/regress/regress0/bv/fuzz18.delta03.smt
new file mode 100644
index 0000000..685f5c1
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz18.delta03.smt
@@ -0,0 +1,35 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v4 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:extrafuns ((v6 BitVec[4]))
+:status sat
+:formula
+(flet ($n1 true)
+(let (?n2 bv1[1])
+(let (?n3 (sign_extend[3] ?n2))
+(flet ($n4 (bvuge v6 ?n3))
+(let (?n5 bv0[1])
+(let (?n6 (ite $n4 ?n2 ?n5))
+(let (?n7 (zero_extend[3] ?n6))
+(let (?n8 bv1[4])
+(flet ($n9 (bvugt ?n7 ?n8))
+(let (?n10 (ite $n9 ?n2 ?n5))
+(let (?n11 (sign_extend[3] ?n10))
+(let (?n12 (bvlshr v2 v4))
+(let (?n13 (bvashr ?n12 v6))
+(flet ($n14 (bvult ?n11 ?n13))
+(let (?n15 bv0[4])
+(flet ($n16 (distinct v4 ?n15))
+(flet ($n17 (bvslt ?n15 ?n12))
+(let (?n18 (ite $n17 ?n2 ?n5))
+(let (?n19 (zero_extend[3] ?n18))
+(flet ($n20 (bvugt ?n8 ?n19))
+(let (?n21 (ite $n20 ?n2 ?n5))
+(let (?n22 (sign_extend[3] ?n21))
+(flet ($n23 (bvslt ?n15 ?n22))
+(let (?n24 (ite $n23 ?n2 ?n5))
+(flet ($n25 (bvsle ?n5 ?n24))
+(flet ($n26 (and $n14 $n16 $n25))
+$n26
+)))))))))))))))))))))))))))
diff --git a/test/regress/regress0/bv/fuzz18.smt b/test/regress/regress0/bv/fuzz18.smt
new file mode 100644
index 0000000..aae85a3
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz18.smt
@@ -0,0 +1,1426 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v6 BitVec[4]))
+:extrafuns ((v4 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v8 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v5 BitVec[4]))
+:extrafuns ((v3 BitVec[4]))
+:extrafuns ((v7 BitVec[4]))
+:status unsat
+:formula
+(flet ($n1 true)
+(let (?n2 (bvcomp v3 v2))
+(let (?n3 (zero_extend[3] ?n2))
+(let (?n4 bv4[4])
+(let (?n5 (bvshl ?n4 v1))
+(flet ($n6 (bvuge ?n3 ?n5))
+(let (?n7 bv1[1])
+(let (?n8 bv0[1])
+(let (?n9 (ite $n6 ?n7 ?n8))
+(let (?n10 (extract[0:0] ?n9))
+(let (?n11 (zero_extend[1] ?n10))
+(let (?n12 bv8[4])
+(let (?n13 (bvnot ?n12))
+(let (?n14 (bvashr ?n4 ?n13))
+(let (?n15 (bvlshr v2 v4))
+(flet ($n16 (bvslt ?n14 ?n15))
+(let (?n17 (ite $n16 ?n7 ?n8))
+(let (?n18 (sign_extend[1] ?n17))
+(flet ($n19 (bvugt ?n11 ?n18))
+(let (?n20 (rotate_right[1] v1))
+(let (?n21 (repeat[1] ?n20))
+(flet ($n22 (bvuge v1 v6))
+(let (?n23 (ite $n22 ?n7 ?n8))
+(let (?n24 (sign_extend[3] ?n23))
+(let (?n25 (bvadd ?n13 ?n24))
+(let (?n26 (bvand ?n21 ?n25))
+(let (?n27 (bvmul v4 ?n26))
+(flet ($n28 (distinct ?n5 ?n27))
+(let (?n29 (ite $n28 ?n7 ?n8))
+(let (?n30 (sign_extend[3] ?n29))
+(let (?n31 (rotate_right[0] v6))
+(flet ($n32 (bvuge v0 ?n31))
+(let (?n33 (ite $n32 ?n7 ?n8))
+(let (?n34 (zero_extend[3] ?n33))
+(flet ($n35 (bvsge ?n4 ?n4))
+(let (?n36 (ite $n35 ?n7 ?n8))
+(let (?n37 (repeat[2] ?n36))
+(let (?n38 (zero_extend[2] ?n37))
+(let (?n39 (bvxnor ?n4 ?n38))
+(let (?n40 (sign_extend[3] ?n36))
+(let (?n41 (bvcomp v0 v5))
+(let (?n42 (zero_extend[3] ?n41))
+(let (?n43 (bvshl ?n42 ?n20))
+(let (?n44 (bvxor ?n43 ?n40))
+(flet ($n45 (bvugt ?n40 ?n44))
+(let (?n46 (ite $n45 ?n7 ?n8))
+(let (?n47 (sign_extend[3] ?n46))
+(flet ($n48 (bvsgt ?n39 ?n47))
+(let (?n49 (ite $n48 ?n7 ?n8))
+(let (?n50 (sign_extend[3] ?n49))
+(let (?n51 (bvxnor ?n12 ?n50))
+(let (?n52 (zero_extend[0] ?n4))
+(let (?n53 (bvlshr ?n51 ?n52))
+(let (?n54 (extract[1:1] ?n53))
+(flet ($n55 (= ?n7 ?n54))
+(let (?n56 (zero_extend[0] v8))
+(let (?n57 (bvand ?n4 v3))
+(let (?n58 (ite $n55 ?n56 ?n57))
+(let (?n59 (bvsub ?n34 ?n58))
+(flet ($n60 (bvsle ?n30 ?n59))
+(let (?n61 (ite $n60 ?n7 ?n8))
+(let (?n62 (sign_extend[3] ?n61))
+(let (?n63 (bvadd v6 ?n20))
+(let (?n64 (bvsub ?n63 ?n31))
+(let (?n65 (sign_extend[3] ?n2))
+(let (?n66 (bvcomp ?n15 ?n65))
+(let (?n67 (sign_extend[3] ?n66))
+(let (?n68 (bvxor ?n64 ?n67))
+(let (?n69 (bvashr ?n26 ?n68))
+(flet ($n70 (bvsge ?n62 ?n69))
+(let (?n71 (bvnot v5))
+(let (?n72 (bvand ?n4 ?n71))
+(let (?n73 (bvmul v2 ?n72))
+(let (?n74 (extract[1:1] ?n5))
+(flet ($n75 (= ?n7 ?n74))
+(let (?n76 (bvnot ?n41))
+(let (?n77 (sign_extend[3] ?n76))
+(flet ($n78 (bvsle ?n4 ?n77))
+(let (?n79 (ite $n78 ?n7 ?n8))
+(let (?n80 (rotate_left[0] ?n17))
+(let (?n81 (rotate_right[0] ?n80))
+(let (?n82 (ite $n75 ?n79 ?n81))
+(let (?n83 (zero_extend[3] ?n82))
+(let (?n84 (bvnor ?n73 ?n83))
+(let (?n85 (sign_extend[3] ?n81))
+(let (?n86 (bvadd ?n84 ?n85))
+(let (?n87 (rotate_right[0] ?n86))
+(let (?n88 (zero_extend[3] ?n23))
+(flet ($n89 (bvsle ?n88 ?n20))
+(let (?n90 (ite $n89 ?n7 ?n8))
+(let (?n91 (zero_extend[3] ?n90))
+(flet ($n92 (bvsge ?n87 ?n91))
+(let (?n93 (bvlshr ?n20 ?n57))
+(let (?n94 (extract[1:1] v2))
+(flet ($n95 (= ?n7 ?n94))
+(let (?n96 (ite $n95 ?n14 ?n64))
+(let (?n97 (repeat[1] v6))
+(let (?n98 (bvand ?n20 ?n97))
+(let (?n99 (extract[0:0] ?n26))
+(let (?n100 (zero_extend[3] ?n99))
+(flet ($n101 (bvugt ?n98 ?n100))
+(let (?n102 (ite $n101 ?n7 ?n8))
+(let (?n103 (sign_extend[3] ?n102))
+(let (?n104 (bvxor ?n96 ?n103))
+(flet ($n105 (bvuge ?n93 ?n104))
+(let (?n106 (zero_extend[3] ?n17))
+(flet ($n107 (bvugt ?n93 ?n106))
+(let (?n108 (ite $n107 ?n7 ?n8))
+(let (?n109 (zero_extend[3] ?n108))
+(flet ($n110 (bvsge ?n13 ?n109))
+(let (?n111 (ite $n110 ?n7 ?n8))
+(let (?n112 (bvxnor v0 ?n40))
+(let (?n113 (bvashr ?n15 v6))
+(let (?n114 (rotate_right[0] ?n2))
+(let (?n115 (zero_extend[3] ?n114))
+(let (?n116 (bvashr ?n113 ?n115))
+(flet ($n117 (bvule ?n4 ?n88))
+(let (?n118 (ite $n117 ?n7 ?n8))
+(let (?n119 (zero_extend[3] ?n118))
+(flet ($n120 (bvsle ?n116 ?n119))
+(let (?n121 (ite $n120 ?n7 ?n8))
+(let (?n122 (sign_extend[3] ?n121))
+(flet ($n123 (bvsgt ?n112 ?n122))
+(let (?n124 (ite $n123 ?n7 ?n8))
+(flet ($n125 (bvult ?n111 ?n124))
+(let (?n126 (rotate_left[3] v4))
+(let (?n127 (bvnot ?n126))
+(let (?n128 (bvnor v1 ?n127))
+(flet ($n129 (bvuge ?n128 ?n31))
+(let (?n130 (ite $n129 ?n7 ?n8))
+(let (?n131 (sign_extend[3] ?n130))
+(flet ($n132 (bvult v8 ?n131))
+(let (?n133 (ite $n132 ?n7 ?n8))
+(let (?n134 (rotate_left[0] ?n133))
+(let (?n135 (bvashr ?n134 ?n134))
+(let (?n136 (sign_extend[1] ?n135))
+(let (?n137 (bvadd ?n112 ?n34))
+(flet ($n138 (bvslt ?n137 ?n116))
+(let (?n139 (ite $n138 ?n7 ?n8))
+(let (?n140 (concat ?n139 ?n121))
+(let (?n141 (bvsub ?n136 ?n140))
+(let (?n142 (zero_extend[2] ?n141))
+(flet ($n143 (bvugt ?n142 ?n53))
+(flet ($n144 (not $n143))
+(flet ($n145 (or $n105 $n125 $n144))
+(let (?n146 (rotate_left[3] ?n44))
+(let (?n147 (zero_extend[3] ?n139))
+(flet ($n148 (bvsgt ?n146 ?n147))
+(let (?n149 (bvxnor ?n13 ?n137))
+(let (?n150 (sign_extend[3] ?n135))
+(flet ($n151 (bvult ?n149 ?n150))
+(let (?n152 (zero_extend[3] ?n66))
+(let (?n153 (bvsub ?n152 ?n4))
+(let (?n154 (rotate_right[1] ?n153))
+(let (?n155 (rotate_right[1] ?n43))
+(let (?n156 (bvshl ?n15 ?n127))
+(let (?n157 (zero_extend[3] ?n81))
+(flet ($n158 (bvule ?n156 ?n157))
+(let (?n159 (ite $n158 ?n7 ?n8))
+(let (?n160 (sign_extend[3] ?n159))
+(let (?n161 (bvxor ?n155 ?n160))
+(flet ($n162 (bvsgt ?n154 ?n161))
+(flet ($n163 (not $n162))
+(flet ($n164 (or $n148 $n151 $n163))
+(let (?n165 (extract[0:0] ?n2))
+(let (?n166 (sign_extend[3] ?n165))
+(flet ($n167 (bvule ?n44 ?n166))
+(let (?n168 (extract[0:0] ?n23))
+(flet ($n169 (= ?n7 ?n168))
+(let (?n170 (rotate_left[3] ?n4))
+(let (?n171 (ite $n169 ?n112 ?n170))
+(let (?n172 (bvnot ?n118))
+(let (?n173 (extract[0:0] ?n172))
+(flet ($n174 (= ?n7 ?n173))
+(let (?n175 (bvneg ?n112))
+(let (?n176 (ite $n174 ?n153 ?n175))
+(let (?n177 (bvand ?n57 ?n176))
+(flet ($n178 (bvule ?n171 ?n177))
+(let (?n179 (sign_extend[3] ?n33))
+(let (?n180 (bvadd v7 ?n179))
+(let (?n181 (rotate_right[0] ?n79))
+(let (?n182 (repeat[1] ?n46))
+(let (?n183 (bvlshr ?n181 ?n182))
+(let (?n184 (zero_extend[3] ?n183))
+(flet ($n185 (bvule ?n180 ?n184))
+(let (?n186 (ite $n185 ?n7 ?n8))
+(let (?n187 (bvmul ?n126 ?n128))
+(let (?n188 (bvshl v2 ?n187))
+(flet ($n189 (bvsge ?n188 ?n146))
+(let (?n190 (ite $n189 ?n7 ?n8))
+(let (?n191 (bvmul ?n186 ?n190))
+(let (?n192 (sign_extend[3] ?n191))
+(let (?n193 (extract[2:2] ?n171))
+(let (?n194 (zero_extend[3] ?n193))
+(let (?n195 (bvmul ?n86 ?n194))
+(flet ($n196 (bvule ?n192 ?n195))
+(flet ($n197 (or $n167 $n178 $n196))
+(let (?n198 (bvshl ?n21 v0))
+(let (?n199 (bvxnor ?n2 ?n9))
+(let (?n200 (sign_extend[3] ?n199))
+(flet ($n201 (bvuge v6 ?n200))
+(let (?n202 (ite $n201 ?n7 ?n8))
+(let (?n203 (zero_extend[3] ?n202))
+(flet ($n204 (bvsle ?n198 ?n203))
+(let (?n205 (ite $n204 ?n7 ?n8))
+(let (?n206 (bvadd ?n108 ?n205))
+(let (?n207 (zero_extend[3] ?n206))
+(let (?n208 (bvneg ?n52))
+(flet ($n209 (bvuge ?n207 ?n208))
+(let (?n210 (extract[1:1] v8))
+(let (?n211 (sign_extend[3] ?n210))
+(let (?n212 (bvand ?n5 ?n211))
+(let (?n213 (bvnor ?n29 ?n108))
+(let (?n214 (sign_extend[3] ?n213))
+(let (?n215 (bvand ?n212 ?n214))
+(flet ($n216 (bvslt ?n119 ?n215))
+(let (?n217 (extract[0:0] ?n186))
+(let (?n218 (zero_extend[3] ?n217))
+(flet ($n219 (bvugt ?n218 ?n27))
+(flet ($n220 (not $n219))
+(flet ($n221 (or $n209 $n216 $n220))
+(let (?n222 (bvor ?n93 ?n152))
+(flet ($n223 (bvslt ?n222 ?n51))
+(let (?n224 (ite $n223 ?n7 ?n8))
+(flet ($n225 (bvsle ?n224 ?n159))
+(flet ($n226 (bvult ?n65 ?n57))
+(let (?n227 (ite $n226 ?n7 ?n8))
+(let (?n228 (sign_extend[3] ?n227))
+(let (?n229 (bvlshr ?n228 ?n91))
+(flet ($n230 (bvugt ?n68 ?n229))
+(let (?n231 (ite $n230 ?n7 ?n8))
+(flet ($n232 (bvult ?n116 ?n15))
+(let (?n233 (ite $n232 ?n7 ?n8))
+(flet ($n234 (bvsgt ?n20 v7))
+(let (?n235 (ite $n234 ?n7 ?n8))
+(let (?n236 (zero_extend[3] ?n235))
+(let (?n237 (bvnor ?n236 v8))
+(let (?n238 (bvashr ?n34 ?n237))
+(flet ($n239 (bvsle ?n119 ?n238))
+(let (?n240 (ite $n239 ?n7 ?n8))
+(let (?n241 (zero_extend[3] ?n240))
+(flet ($n242 (bvult ?n26 ?n241))
+(let (?n243 (ite $n242 ?n7 ?n8))
+(flet ($n244 (bvslt ?n233 ?n243))
+(let (?n245 (ite $n244 ?n7 ?n8))
+(let (?n246 (bvneg ?n245))
+(let (?n247 (bvxnor ?n10 ?n246))
+(flet ($n248 (bvsgt ?n231 ?n247))
+(let (?n249 (sign_extend[0] ?n126))
+(let (?n250 (sign_extend[3] ?n224))
+(flet ($n251 (distinct ?n97 ?n250))
+(let (?n252 (ite $n251 ?n7 ?n8))
+(let (?n253 (zero_extend[3] ?n252))
+(flet ($n254 (= ?n249 ?n253))
+(flet ($n255 (not $n254))
+(flet ($n256 (or $n225 $n248 $n255))
+(let (?n257 (sign_extend[3] ?n172))
+(flet ($n258 (bvslt ?n257 ?n127))
+(let (?n259 (ite $n258 ?n7 ?n8))
+(let (?n260 (sign_extend[0] ?n128))
+(let (?n261 (extract[0:0] ?n33))
+(flet ($n262 (= ?n7 ?n261))
+(let (?n263 (rotate_right[1] ?n63))
+(let (?n264 (bvxnor ?n4 ?n263))
+(flet ($n265 (bvule ?n236 ?n264))
+(let (?n266 (ite $n265 ?n7 ?n8))
+(let (?n267 (ite $n262 ?n10 ?n266))
+(let (?n268 (zero_extend[1] ?n267))
+(let (?n269 (zero_extend[2] ?n268))
+(let (?n270 (bvxnor ?n31 ?n269))
+(flet ($n271 (bvule ?n260 ?n270))
+(let (?n272 (ite $n271 ?n7 ?n8))
+(let (?n273 (sign_extend[1] ?n272))
+(flet ($n274 (distinct ?n37 ?n273))
+(let (?n275 (ite $n274 ?n7 ?n8))
+(flet ($n276 (distinct ?n259 ?n275))
+(let (?n277 (zero_extend[3] ?n227))
+(flet ($n278 (bvslt ?n12 ?n277))
+(let (?n279 (ite $n278 ?n7 ?n8))
+(let (?n280 (sign_extend[3] ?n279))
+(let (?n281 (bvcomp ?n43 ?n72))
+(let (?n282 (zero_extend[3] ?n281))
+(let (?n283 (bvmul ?n127 ?n282))
+(let (?n284 (bvand ?n63 ?n283))
+(flet ($n285 (bvsle ?n280 ?n284))
+(let (?n286 (sign_extend[3] ?n41))
+(flet ($n287 (bvsgt ?n286 ?n112))
+(let (?n288 (ite $n287 ?n7 ?n8))
+(let (?n289 (zero_extend[3] ?n288))
+(let (?n290 (bvmul ?n126 ?n289))
+(let (?n291 (sign_extend[0] ?n290))
+(let (?n292 (sign_extend[3] ?n183))
+(flet ($n293 (distinct ?n291 ?n292))
+(let (?n294 (ite $n293 ?n7 ?n8))
+(let (?n295 (sign_extend[3] ?n294))
+(flet ($n296 (= ?n161 ?n295))
+(flet ($n297 (not $n296))
+(flet ($n298 (or $n276 $n285 $n297))
+(let (?n299 (bvmul ?n47 ?n73))
+(flet ($n300 (= ?n299 ?n277))
+(let (?n301 (sign_extend[3] ?n124))
+(let (?n302 (bvmul ?n4 ?n26))
+(let (?n303 (zero_extend[3] ?n134))
+(let (?n304 (bvashr ?n302 ?n303))
+(let (?n305 (bvxnor ?n31 ?n304))
+(let (?n306 (bvxnor ?n41 ?n36))
+(let (?n307 (zero_extend[3] ?n306))
+(let (?n308 (bvor ?n307 ?n302))
+(let (?n309 (bvsub ?n305 ?n308))
+(flet ($n310 (bvsgt ?n301 ?n309))
+(flet ($n311 (bvult ?n68 ?n63))
+(let (?n312 (ite $n311 ?n7 ?n8))
+(flet ($n313 (bvsgt ?n17 ?n312))
+(flet ($n314 (not $n313))
+(flet ($n315 (or $n300 $n310 $n314))
+(let (?n316 (bvshl ?n33 ?n130))
+(let (?n317 (zero_extend[1] ?n46))
+(let (?n318 (sign_extend[1] ?n133))
+(flet ($n319 (bvule ?n317 ?n318))
+(let (?n320 (ite $n319 ?n7 ?n8))
+(flet ($n321 (= ?n29 ?n320))
+(let (?n322 (ite $n321 ?n7 ?n8))
+(let (?n323 (bvnor ?n316 ?n322))
+(let (?n324 (sign_extend[3] ?n323))
+(flet ($n325 (bvugt ?n137 ?n324))
+(let (?n326 (bvnot ?n175))
+(let (?n327 (bvmul ?n199 ?n183))
+(let (?n328 (zero_extend[3] ?n327))
+(flet ($n329 (bvule ?n328 v8))
+(let (?n330 (ite $n329 ?n7 ?n8))
+(let (?n331 (sign_extend[3] ?n330))
+(let (?n332 (bvand ?n326 ?n331))
+(let (?n333 (bvshl ?n93 ?n137))
+(let (?n334 (zero_extend[3] ?n111))
+(let (?n335 (bvxor ?n333 ?n334))
+(let (?n336 (bvmul ?n335 ?n87))
+(flet ($n337 (bvult ?n332 ?n336))
+(flet ($n338 (not $n337))
+(flet ($n339 (= ?n88 ?n128))
+(let (?n340 (ite $n339 ?n7 ?n8))
+(let (?n341 (sign_extend[3] ?n340))
+(flet ($n342 (bvslt ?n341 ?n177))
+(flet ($n343 (not $n342))
+(flet ($n344 (or $n325 $n338 $n343))
+(let (?n345 (rotate_left[0] ?n10))
+(let (?n346 (sign_extend[3] ?n345))
+(flet ($n347 (bvsgt v3 ?n91))
+(let (?n348 (ite $n347 ?n7 ?n8))
+(let (?n349 (zero_extend[3] ?n348))
+(flet ($n350 (bvsgt ?n349 ?n68))
+(let (?n351 (ite $n350 ?n7 ?n8))
+(let (?n352 (sign_extend[3] ?n351))
+(let (?n353 (sign_extend[3] ?n202))
+(flet ($n354 (bvult ?n352 ?n353))
+(let (?n355 (ite $n354 ?n7 ?n8))
+(let (?n356 (zero_extend[3] ?n355))
+(let (?n357 (bvadd ?n71 ?n356))
+(flet ($n358 (bvsle ?n346 ?n357))
+(flet ($n359 (not $n358))
+(flet ($n360 (= ?n7 ?n165))
+(let (?n361 (zero_extend[3] ?n76))
+(let (?n362 (ite $n360 ?n237 ?n361))
+(let (?n363 (zero_extend[1] ?n111))
+(let (?n364 (zero_extend[2] ?n363))
+(let (?n365 (bvadd ?n362 ?n364))
+(let (?n366 (bvxnor v4 ?n365))
+(let (?n367 (sign_extend[3] ?n320))
+(flet ($n368 (bvugt ?n366 ?n367))
+(flet ($n369 (not $n368))
+(let (?n370 (rotate_right[1] ?n69))
+(flet ($n371 (bvule ?n112 ?n370))
+(flet ($n372 (not $n371))
+(flet ($n373 (or $n359 $n369 $n372))
+(flet ($n374 (bvsgt ?n245 ?n17))
+(let (?n375 (bvxor v0 ?n25))
+(flet ($n376 (bvsle ?n375 ?n91))
+(let (?n377 (ite $n376 ?n7 ?n8))
+(let (?n378 (extract[0:0] ?n377))
+(let (?n379 (zero_extend[3] ?n378))
+(flet ($n380 (bvugt ?n379 ?n26))
+(flet ($n381 (not $n380))
+(let (?n382 (bvnot ?n320))
+(flet ($n383 (bvult ?n66 ?n382))
+(flet ($n384 (not $n383))
+(flet ($n385 (or $n374 $n381 $n384))
+(let (?n386 (zero_extend[3] ?n9))
+(let (?n387 (bvmul ?n127 ?n308))
+(let (?n388 (bvshl ?n386 ?n387))
+(let (?n389 (extract[3:2] ?n388))
+(flet ($n390 (bvsge ?n97 ?n84))
+(let (?n391 (ite $n390 ?n7 ?n8))
+(let (?n392 (sign_extend[1] ?n391))
+(flet ($n393 (= ?n389 ?n392))
+(flet ($n394 (= ?n238 ?n72))
+(let (?n395 (ite $n394 ?n7 ?n8))
+(let (?n396 (sign_extend[3] ?n395))
+(flet ($n397 (bvugt ?n237 ?n396))
+(let (?n398 (ite $n397 ?n7 ?n8))
+(let (?n399 (bvneg ?n36))
+(let (?n400 (sign_extend[3] ?n399))
+(flet ($n401 (bvult ?n400 ?n370))
+(let (?n402 (ite $n401 ?n7 ?n8))
+(flet ($n403 (bvule ?n398 ?n402))
+(flet ($n404 (not $n403))
+(let (?n405 (sign_extend[1] ?n172))
+(flet ($n406 (= ?n37 ?n405))
+(flet ($n407 (not $n406))
+(flet ($n408 (or $n393 $n404 $n407))
+(flet ($n409 (bvule ?n330 ?n135))
+(let (?n410 (zero_extend[3] ?n80))
+(let (?n411 (bvsub ?n410 ?n127))
+(let (?n412 (rotate_left[1] ?n411))
+(flet ($n413 (bvslt ?n126 ?n412))
+(flet ($n414 (not $n413))
+(flet ($n415 (bvuge ?n375 ?n116))
+(let (?n416 (ite $n415 ?n7 ?n8))
+(let (?n417 (bvxor ?n80 ?n243))
+(let (?n418 (bvsub ?n417 ?n172))
+(flet ($n419 (bvsgt ?n418 ?n99))
+(let (?n420 (ite $n419 ?n7 ?n8))
+(let (?n421 (bvsub ?n416 ?n420))
+(let (?n422 (zero_extend[3] ?n421))
+(flet ($n423 (= ?n412 ?n422))
+(flet ($n424 (not $n423))
+(flet ($n425 (or $n409 $n414 $n424))
+(flet ($n426 (bvsge ?n73 ?n4))
+(flet ($n427 (bvsle ?n3 ?n388))
+(let (?n428 (bvand ?n139 ?n227))
+(let (?n429 (zero_extend[3] ?n428))
+(let (?n430 (sign_extend[2] ?n37))
+(let (?n431 (bvashr ?n430 ?n64))
+(let (?n432 (rotate_left[3] ?n431))
+(let (?n433 (repeat[1] ?n432))
+(flet ($n434 (bvslt ?n429 ?n433))
+(flet ($n435 (not $n434))
+(flet ($n436 (or $n426 $n427 $n435))
+(let (?n437 (zero_extend[3] ?n199))
+(let (?n438 (sign_extend[0] v2))
+(flet ($n439 (bvslt ?n437 ?n438))
+(let (?n440 (bvxor ?n4 ?n24))
+(flet ($n441 (bvule ?n411 ?n440))
+(let (?n442 (extract[0:0] ?n199))
+(let (?n443 (sign_extend[3] ?n442))
+(flet ($n444 (bvuge ?n4 ?n443))
+(flet ($n445 (not $n444))
+(flet ($n446 (or $n439 $n441 $n445))
+(let (?n447 (rotate_left[0] ?n63))
+(flet ($n448 (bvuge ?n438 ?n116))
+(let (?n449 (ite $n448 ?n7 ?n8))
+(let (?n450 (zero_extend[3] ?n449))
+(flet ($n451 (= ?n447 ?n450))
+(let (?n452 (sign_extend[3] ?n108))
+(let (?n453 (bvxnor ?n283 ?n452))
+(flet ($n454 (= ?n375 ?n453))
+(let (?n455 (sign_extend[3] ?n243))
+(flet ($n456 (bvuge ?n299 ?n455))
+(flet ($n457 (not $n456))
+(flet ($n458 (or $n451 $n454 $n457))
+(flet ($n459 (bvslt ?n153 ?n192))
+(flet ($n460 (bvsle ?n183 ?n417))
+(let (?n461 (bvor ?n176 ?n160))
+(let (?n462 (rotate_left[3] ?n461))
+(let (?n463 (rotate_right[2] ?n154))
+(let (?n464 (bvlshr ?n153 ?n463))
+(flet ($n465 (bvslt ?n462 ?n464))
+(flet ($n466 (not $n465))
+(flet ($n467 (or $n459 $n460 $n466))
+(let (?n468 (bvxor ?n139 ?n206))
+(flet ($n469 (bvule ?n327 ?n468))
+(flet ($n470 (bvugt ?n260 ?n192))
+(let (?n471 (sign_extend[3] ?n272))
+(let (?n472 (bvlshr v8 ?n228))
+(flet ($n473 (bvule ?n471 ?n472))
+(flet ($n474 (not $n473))
+(flet ($n475 (or $n469 $n470 $n474))
+(let (?n476 (zero_extend[0] ?n432))
+(let (?n477 (extract[0:0] ?n10))
+(let (?n478 (bvxor ?n96 ?n187))
+(flet ($n479 (bvule ?n478 ?n113))
+(let (?n480 (ite $n479 ?n7 ?n8))
+(flet ($n481 (distinct ?n477 ?n480))
+(let (?n482 (ite $n481 ?n7 ?n8))
+(let (?n483 (zero_extend[3] ?n482))
+(let (?n484 (bvlshr ?n71 ?n39))
+(let (?n485 (bvxnor ?n348 ?n210))
+(let (?n486 (zero_extend[3] ?n485))
+(let (?n487 (bvand ?n484 ?n486))
+(flet ($n488 (bvslt ?n483 ?n487))
+(let (?n489 (ite $n488 ?n7 ?n8))
+(let (?n490 (sign_extend[3] ?n489))
+(flet ($n491 (bvslt ?n476 ?n490))
+(let (?n492 (ite $n491 ?n7 ?n8))
+(flet ($n493 (= ?n205 ?n492))
+(let (?n494 (bvor ?n171 ?n307))
+(let (?n495 (repeat[1] ?n494))
+(let (?n496 (sign_extend[3] ?n377))
+(flet ($n497 (bvsgt ?n495 ?n496))
+(flet ($n498 (not $n497))
+(let (?n499 (repeat[1] ?n284))
+(flet ($n500 (bvuge ?n499 ?n447))
+(flet ($n501 (not $n500))
+(flet ($n502 (or $n493 $n498 $n501))
+(flet ($n503 (= ?n64 ?n432))
+(let (?n504 (rotate_right[0] ?n202))
+(let (?n505 (sign_extend[3] ?n181))
+(flet ($n506 (distinct ?n63 ?n505))
+(let (?n507 (ite $n506 ?n7 ?n8))
+(let (?n508 (bvxnor ?n504 ?n507))
+(let (?n509 (zero_extend[3] ?n508))
+(flet ($n510 (bvugt ?n509 ?n112))
+(let (?n511 (ite $n510 ?n7 ?n8))
+(let (?n512 (sign_extend[3] ?n511))
+(flet ($n513 (bvsgt ?n512 ?n188))
+(flet ($n514 (not $n513))
+(let (?n515 (bvsub ?n127 ?n12))
+(flet ($n516 (bvsge ?n67 ?n93))
+(let (?n517 (ite $n516 ?n7 ?n8))
+(let (?n518 (zero_extend[3] ?n517))
+(flet ($n519 (= ?n515 ?n518))
+(flet ($n520 (not $n519))
+(flet ($n521 (or $n503 $n514 $n520))
+(let (?n522 (sign_extend[3] ?n504))
+(flet ($n523 (bvsge ?n522 ?n69))
+(let (?n524 (ite $n523 ?n7 ?n8))
+(let (?n525 (zero_extend[1] ?n524))
+(let (?n526 (extract[1:0] ?n4))
+(flet ($n527 (bvule ?n525 ?n526))
+(let (?n528 (extract[1:1] ?n453))
+(let (?n529 (zero_extend[3] ?n528))
+(flet ($n530 (= ?n112 ?n529))
+(let (?n531 (zero_extend[2] ?n140))
+(flet ($n532 (bvult ?n229 ?n531))
+(flet ($n533 (not $n532))
+(flet ($n534 (or $n527 $n530 $n533))
+(let (?n535 (rotate_right[0] ?n245))
+(let (?n536 (zero_extend[1] ?n535))
+(let (?n537 (bvlshr ?n363 ?n536))
+(let (?n538 (sign_extend[2] ?n537))
+(flet ($n539 (bvsgt ?n72 ?n538))
+(let (?n540 (rotate_left[3] ?n238))
+(let (?n541 (bvor ?n411 ?n540))
+(flet ($n542 (bvsle ?n83 ?n541))
+(flet ($n543 (not $n542))
+(flet ($n544 (bvule ?n218 ?n499))
+(flet ($n545 (not $n544))
+(flet ($n546 (or $n539 $n543 $n545))
+(let (?n547 (zero_extend[3] ?n130))
+(flet ($n548 (bvule ?n57 ?n547))
+(let (?n549 (sign_extend[1] ?n46))
+(let (?n550 (bvand ?n389 ?n549))
+(let (?n551 (zero_extend[2] ?n550))
+(flet ($n552 (bvule ?n57 ?n551))
+(let (?n553 (sign_extend[3] ?n233))
+(let (?n554 (bvashr ?n553 ?n237))
+(flet ($n555 (bvuge ?n554 ?n364))
+(flet ($n556 (not $n555))
+(flet ($n557 (or $n548 $n552 $n556))
+(let (?n558 (zero_extend[3] ?n10))
+(flet ($n559 (distinct ?n284 ?n558))
+(flet ($n560 (not $n559))
+(flet ($n561 (bvule ?n11 ?n550))
+(flet ($n562 (not $n561))
+(let (?n563 (sign_extend[2] ?n389))
+(flet ($n564 (bvugt ?n563 ?n336))
+(flet ($n565 (not $n564))
+(flet ($n566 (or $n560 $n562 $n565))
+(flet ($n567 (bvslt ?n203 ?n91))
+(let (?n568 (ite $n567 ?n7 ?n8))
+(let (?n569 (bvxnor ?n259 ?n568))
+(let (?n570 (zero_extend[3] ?n569))
+(let (?n571 (bvxnor ?n43 ?n570))
+(let (?n572 (bvnand ?n236 ?n571))
+(let (?n573 (zero_extend[3] ?n442))
+(flet ($n574 (bvule ?n572 ?n573))
+(flet ($n575 (bvsle ?n13 ?n146))
+(flet ($n576 (bvsgt ?n260 ?n238))
+(let (?n577 (ite $n576 ?n7 ?n8))
+(let (?n578 (sign_extend[3] ?n577))
+(flet ($n579 (= ?n308 ?n578))
+(flet ($n580 (or $n574 $n575 $n579))
+(let (?n581 (sign_extend[3] ?n524))
+(flet ($n582 (bvsge ?n387 ?n581))
+(let (?n583 (zero_extend[3] ?n418))
+(flet ($n584 (bvult ?n212 ?n583))
+(flet ($n585 (not $n584))
+(let (?n586 (sign_extend[3] ?n90))
+(flet ($n587 (bvult ?n388 ?n586))
+(flet ($n588 (not $n587))
+(flet ($n589 (or $n582 $n585 $n588))
+(let (?n590 (bvadd ?n13 ?n137))
+(let (?n591 (bvor ?n91 ?n51))
+(flet ($n592 (distinct ?n590 ?n591))
+(let (?n593 (ite $n592 ?n7 ?n8))
+(let (?n594 (zero_extend[3] ?n593))
+(let (?n595 (bvor ?n198 ?n594))
+(flet ($n596 (= ?n116 ?n595))
+(flet ($n597 (bvsle ?n213 ?n90))
+(let (?n598 (ite $n597 ?n7 ?n8))
+(let (?n599 (sign_extend[3] ?n598))
+(flet ($n600 (= ?n440 ?n599))
+(flet ($n601 (bvslt ?n468 ?n508))
+(flet ($n602 (or $n596 $n600 $n601))
+(flet ($n603 (bvugt ?n263 ?n222))
+(let (?n604 (sign_extend[3] ?n139))
+(flet ($n605 (bvsge ?n177 ?n604))
+(let (?n606 (zero_extend[3] ?n49))
+(let (?n607 (sign_extend[0] ?n71))
+(flet ($n608 (bvsgt ?n606 ?n607))
+(flet ($n609 (not $n608))
+(flet ($n610 (or $n603 $n605 $n609))
+(flet ($n611 (bvule ?n113 ?n447))
+(flet ($n612 (bvsgt ?n537 ?n268))
+(let (?n613 (ite $n612 ?n7 ?n8))
+(let (?n614 (sign_extend[3] ?n613))
+(flet ($n615 (bvsle ?n188 ?n614))
+(let (?n616 (bvashr ?n586 ?n453))
+(flet ($n617 (distinct ?n27 ?n616))
+(flet ($n618 (not $n617))
+(flet ($n619 (or $n611 $n615 $n618))
+(let (?n620 (bvcomp ?n128 ?n51))
+(flet ($n621 (bvslt ?n199 ?n620))
+(flet ($n622 (bvule ?n166 ?n96))
+(let (?n623 (sign_extend[3] ?n528))
+(flet ($n624 (bvugt ?n623 ?n438))
+(flet ($n625 (not $n624))
+(flet ($n626 (or $n621 $n622 $n625))
+(flet ($n627 (bvult v0 ?n24))
+(let (?n628 (ite $n627 ?n7 ?n8))
+(let (?n629 (zero_extend[3] ?n628))
+(flet ($n630 (bvugt ?n212 ?n629))
+(flet ($n631 (bvslt ?n64 ?n96))
+(flet ($n632 (not $n631))
+(let (?n633 (zero_extend[3] ?n399))
+(let (?n634 (bvshl ?n412 ?n633))
+(flet ($n635 (bvsge ?n634 ?n72))
+(flet ($n636 (not $n635))
+(flet ($n637 (or $n630 $n632 $n636))
+(flet ($n638 (bvslt ?n3 ?n12))
+(let (?n639 (ite $n638 ?n7 ?n8))
+(let (?n640 (rotate_right[0] ?n639))
+(let (?n641 (zero_extend[3] ?n640))
+(flet ($n642 (distinct ?n171 ?n641))
+(flet ($n643 (not $n642))
+(let (?n644 (zero_extend[3] ?n190))
+(flet ($n645 (bvsle ?n53 ?n644))
+(let (?n646 (ite $n645 ?n7 ?n8))
+(flet ($n647 (bvslt ?n266 ?n646))
+(flet ($n648 (not $n647))
+(let (?n649 (zero_extend[3] ?n243))
+(let (?n650 (bvsub ?n453 ?n72))
+(flet ($n651 (bvsge ?n649 ?n650))
+(flet ($n652 (not $n651))
+(flet ($n653 (or $n643 $n648 $n652))
+(let (?n654 (sign_extend[3] ?n391))
+(let (?n655 (bvsub ?n113 ?n4))
+(flet ($n656 (bvugt ?n654 ?n655))
+(let (?n657 (bvmul ?n628 ?n205))
+(let (?n658 (zero_extend[3] ?n657))
+(flet ($n659 (bvuge ?n21 ?n658))
+(let (?n660 (zero_extend[3] ?n159))
+(let (?n661 (bvashr ?n308 ?n660))
+(let (?n662 (sign_extend[3] ?n114))
+(flet ($n663 (bvsgt ?n661 ?n662))
+(let (?n664 (ite $n663 ?n7 ?n8))
+(let (?n665 (sign_extend[3] ?n664))
+(let (?n666 (bvneg ?n97))
+(flet ($n667 (bvslt ?n665 ?n666))
+(flet ($n668 (not $n667))
+(flet ($n669 (or $n656 $n659 $n668))
+(let (?n670 (bvnor ?n56 ?n156))
+(flet ($n671 (bvule ?n670 ?n84))
+(flet ($n672 (bvsle ?n661 ?n304))
+(flet ($n673 (not $n672))
+(let (?n674 (sign_extend[1] ?n327))
+(flet ($n675 (bvuge ?n18 ?n674))
+(flet ($n676 (not $n675))
+(flet ($n677 (or $n671 $n673 $n676))
+(flet ($n678 (bvule ?n661 v6))
+(let (?n679 bv11[4])
+(let (?n680 (zero_extend[3] ?n259))
+(let (?n681 (bvxnor ?n51 ?n680))
+(flet ($n682 (bvule ?n679 ?n681))
+(flet ($n683 (not $n682))
+(let (?n684 (bvadd ?n119 ?n52))
+(let (?n685 (rotate_right[2] ?n684))
+(let (?n686 (bvlshr ?n685 ?n250))
+(flet ($n687 (= ?n472 ?n686))
+(flet ($n688 (not $n687))
+(flet ($n689 (or $n678 $n683 $n688))
+(let (?n690 (sign_extend[3] ?n398))
+(flet ($n691 (bvule ?n284 ?n690))
+(let (?n692 (bvashr ?n52 ?n97))
+(flet ($n693 (bvsge ?n692 ?n386))
+(let (?n694 (ite $n693 ?n7 ?n8))
+(let (?n695 (zero_extend[3] ?n694))
+(flet ($n696 (bvugt ?n650 ?n695))
+(flet ($n697 (not $n696))
+(flet ($n698 (bvslt ?n13 ?n126))
+(flet ($n699 (not $n698))
+(flet ($n700 (or $n691 $n697 $n699))
+(let (?n701 (sign_extend[3] ?n240))
+(flet ($n702 (bvsgt ?n284 ?n701))
+(flet ($n703 (bvsgt ?n20 ?n187))
+(flet ($n704 (bvsge ?n155 ?n607))
+(flet ($n705 (not $n704))
+(flet ($n706 (or $n702 $n703 $n705))
+(let (?n707 (sign_extend[3] ?n205))
+(flet ($n708 (bvslt ?n51 ?n707))
+(flet ($n709 (bvugt ?n291 ?n65))
+(flet ($n710 (not $n709))
+(flet ($n711 (distinct ?n156 ?n486))
+(flet ($n712 (not $n711))
+(flet ($n713 (or $n708 $n710 $n712))
+(let (?n714 (rotate_right[1] ?n515))
+(let (?n715 (sign_extend[3] ?n482))
+(flet ($n716 (= ?n714 ?n715))
+(flet ($n717 (not $n716))
+(flet ($n718 (not $n441))
+(let (?n719 (sign_extend[2] ?n268))
+(flet ($n720 (bvuge ?n719 ?n431))
+(flet ($n721 (not $n720))
+(flet ($n722 (or $n717 $n718 $n721))
+(let (?n723 (bvxor ?n31 ?n147))
+(flet ($n724 (bvule ?n723 ?n71))
+(flet ($n725 (distinct ?n478 ?n249))
+(let (?n726 (ite $n725 ?n7 ?n8))
+(let (?n727 (sign_extend[3] ?n726))
+(flet ($n728 (distinct ?n96 ?n727))
+(flet ($n729 (not $n728))
+(let (?n730 (zero_extend[3] ?n233))
+(flet ($n731 (distinct ?n237 ?n730))
+(let (?n732 (ite $n731 ?n7 ?n8))
+(let (?n733 (sign_extend[3] ?n732))
+(flet ($n734 (bvslt ?n595 ?n733))
+(flet ($n735 (not $n734))
+(flet ($n736 (or $n724 $n729 $n735))
+(flet ($n737 (= ?n400 ?n486))
+(flet ($n738 (not $n737))
+(flet ($n739 (bvsgt ?n568 ?n418))
+(let (?n740 (ite $n739 ?n7 ?n8))
+(let (?n741 (bvor ?n289 ?n326))
+(let (?n742 (sign_extend[3] ?n79))
+(let (?n743 (bvcomp ?n741 ?n742))
+(flet ($n744 (= ?n740 ?n743))
+(flet ($n745 (not $n744))
+(flet ($n746 (or $n380 $n738 $n745))
+(let (?n747 (bvadd ?n199 ?n46))
+(let (?n748 (zero_extend[3] ?n747))
+(flet ($n749 (bvsge ?n308 ?n748))
+(flet ($n750 (= ?n20 ?n349))
+(flet ($n751 (not $n750))
+(flet ($n752 (not $n724))
+(flet ($n753 (or $n749 $n751 $n752))
+(let (?n754 (zero_extend[3] ?n247))
+(flet ($n755 (distinct ?n365 ?n754))
+(flet ($n756 (bvugt ?n252 ?n402))
+(flet ($n757 (not $n756))
+(flet ($n758 (or $n755 $n384 $n757))
+(let (?n759 (sign_extend[1] ?n90))
+(flet ($n760 (bvsle ?n759 ?n18))
+(flet ($n761 (distinct ?n233 ?n231))
+(flet ($n762 (not $n761))
+(flet ($n763 (bvsgt ?n233 ?n172))
+(let (?n764 (ite $n763 ?n7 ?n8))
+(flet ($n765 (bvuge ?n598 ?n764))
+(flet ($n766 (not $n765))
+(flet ($n767 (or $n760 $n762 $n766))
+(flet ($n768 (distinct v3 ?n263))
+(flet ($n769 (bvsle ?n387 ?n440))
+(let (?n770 (sign_extend[3] ?n246))
+(flet ($n771 (bvsge ?n375 ?n770))
+(flet ($n772 (not $n771))
+(flet ($n773 (or $n768 $n769 $n772))
+(flet ($n774 (distinct ?n9 ?n111))
+(let (?n775 (sign_extend[1] ?n181))
+(flet ($n776 (bvule ?n775 ?n389))
+(flet ($n777 (= ?n524 ?n492))
+(flet ($n778 (not $n777))
+(flet ($n779 (or $n774 $n776 $n778))
+(flet ($n780 (bvugt ?n90 ?n133))
+(let (?n781 (bvshl ?n463 ?n387))
+(let (?n782 (bvxnor ?n155 ?n606))
+(flet ($n783 (bvuge ?n781 ?n782))
+(flet ($n784 (not $n783))
+(let (?n785 (zero_extend[0] ?n370))
+(flet ($n786 (= ?n128 ?n785))
+(let (?n787 (ite $n786 ?n7 ?n8))
+(let (?n788 (zero_extend[3] ?n787))
+(flet ($n789 (= ?n284 ?n788))
+(flet ($n790 (not $n789))
+(flet ($n791 (or $n780 $n784 $n790))
+(flet ($n792 (bvult ?n215 v1))
+(let (?n793 (zero_extend[0] ?n43))
+(let (?n794 (zero_extend[3] ?n133))
+(let (?n795 (bvnor ?n793 ?n794))
+(flet ($n796 (bvugt ?n795 ?n308))
+(flet ($n797 (not $n796))
+(flet ($n798 (not $n615))
+(flet ($n799 (or $n792 $n797 $n798))
+(flet ($n800 (bvsge ?n231 ?n17))
+(flet ($n801 (bvslt ?n428 ?n190))
+(flet ($n802 (not $n801))
+(flet ($n803 (bvslt ?n180 ?n695))
+(flet ($n804 (not $n803))
+(flet ($n805 (or $n800 $n802 $n804))
+(let (?n806 (zero_extend[1] ?n199))
+(flet ($n807 (bvule ?n806 ?n526))
+(flet ($n808 (bvugt ?n165 ?n23))
+(flet ($n809 (not $n808))
+(flet ($n810 (or $n720 $n807 $n809))
+(let (?n811 (rotate_left[1] ?n12))
+(flet ($n812 (bvule ?n91 ?n811))
+(let (?n813 (repeat[3] ?n183))
+(let (?n814 (sign_extend[1] ?n813))
+(flet ($n815 (bvule ?n814 ?n73))
+(let (?n816 (ite $n815 ?n7 ?n8))
+(flet ($n817 (bvult ?n210 ?n816))
+(flet ($n818 (bvult ?n170 ?n361))
+(flet ($n819 (not $n818))
+(flet ($n820 (or $n812 $n817 $n819))
+(flet ($n821 (bvuge ?n97 ?n187))
+(let (?n822 (ite $n821 ?n7 ?n8))
+(flet ($n823 (bvsle ?n822 ?n382))
+(let (?n824 (sign_extend[1] ?n628))
+(flet ($n825 (distinct ?n37 ?n824))
+(let (?n826 (ite $n825 ?n7 ?n8))
+(let (?n827 (extract[0:0] ?n826))
+(flet ($n828 (bvsge ?n639 ?n827))
+(flet ($n829 (not $n828))
+(flet ($n830 (or $n818 $n823 $n829))
+(flet ($n831 (bvult ?n323 ?n747))
+(let (?n832 (bvashr ?n41 ?n81))
+(flet ($n833 (bvslt ?n224 ?n832))
+(flet ($n834 (bvugt ?n787 ?n598))
+(flet ($n835 (not $n834))
+(flet ($n836 (or $n831 $n833 $n835))
+(let (?n837 (bvcomp ?n463 ?n573))
+(let (?n838 (zero_extend[3] ?n837))
+(let (?n839 (bvmul ?n794 ?n229))
+(flet ($n840 (bvsle ?n838 ?n839))
+(flet ($n841 (bvult ?n512 ?n113))
+(flet ($n842 (not $n691))
+(flet ($n843 (or $n840 $n841 $n842))
+(let (?n844 (zero_extend[3] ?n417))
+(let (?n845 (bvxnor ?n98 ?n844))
+(let (?n846 (bvxnor ?n730 ?n845))
+(flet ($n847 (= ?n846 ?n733))
+(flet ($n848 (distinct ?n31 ?n65))
+(flet ($n849 (bvsle ?n150 ?n249))
+(flet ($n850 (not $n849))
+(flet ($n851 (or $n847 $n848 $n850))
+(let (?n852 (bvneg ?n171))
+(flet ($n853 (distinct ?n249 ?n852))
+(flet ($n854 (not $n853))
+(let (?n855 (sign_extend[1] ?n593))
+(flet ($n856 (bvsle ?n526 ?n855))
+(flet ($n857 (not $n856))
+(flet ($n858 (or $n659 $n854 $n857))
+(let (?n859 (bvshl ?n730 ?n12))
+(let (?n860 (bvnand ?n859 ?n741))
+(flet ($n861 (bvsle ?n366 ?n860))
+(let (?n862 (bvxnor ?n66 ?n133))
+(let (?n863 (bvashr ?n29 ?n862))
+(flet ($n864 (bvugt ?n743 ?n863))
+(flet ($n865 (not $n864))
+(flet ($n866 (bvsgt ?n640 ?n816))
+(flet ($n867 (not $n866))
+(flet ($n868 (or $n861 $n865 $n867))
+(flet ($n869 (bvuge ?n692 ?n665))
+(flet ($n870 (bvuge ?n289 ?n51))
+(flet ($n871 (bvugt ?n476 ?n614))
+(flet ($n872 (not $n871))
+(flet ($n873 (or $n869 $n870 $n872))
+(flet ($n874 (bvslt ?n97 ?n214))
+(let (?n875 (ite $n874 ?n7 ?n8))
+(flet ($n876 (bvult ?n80 ?n875))
+(let (?n877 (sign_extend[3] ?n9))
+(flet ($n878 (bvsge v5 ?n877))
+(let (?n879 (zero_extend[3] ?n294))
+(flet ($n880 (bvule ?n5 ?n879))
+(flet ($n881 (or $n876 $n878 $n880))
+(flet ($n882 (distinct ?n182 ?n322))
+(let (?n883 (bvashr ?n229 ?n187))
+(let (?n884 (zero_extend[2] ?n389))
+(let (?n885 (bvand v3 ?n884))
+(flet ($n886 (bvslt ?n883 ?n885))
+(let (?n887 (zero_extend[2] ?n317))
+(flet ($n888 (bvult ?n887 ?n291))
+(flet ($n889 (not $n888))
+(flet ($n890 (or $n882 $n886 $n889))
+(let (?n891 (bvxnor ?n237 ?n437))
+(let (?n892 (bvnot ?n891))
+(flet ($n893 (= ?n171 ?n892))
+(flet ($n894 (not $n893))
+(flet ($n895 (bvsle ?n146 v2))
+(flet ($n896 (not $n895))
+(flet ($n897 (or $n807 $n894 $n896))
+(flet ($n898 (bvugt ?n190 ?n664))
+(flet ($n899 (bvsle ?n50 v7))
+(let (?n900 (sign_extend[3] ?n288))
+(flet ($n901 (bvsge ?n591 ?n900))
+(flet ($n902 (not $n901))
+(flet ($n903 (or $n898 $n899 $n902))
+(let (?n904 (zero_extend[3] ?n172))
+(flet ($n905 (= ?n304 ?n904))
+(flet ($n906 (bvsge ?n72 ?n464))
+(let (?n907 (zero_extend[3] ?n402))
+(let (?n908 (bvcomp ?n13 ?n907))
+(let (?n909 (zero_extend[3] ?n908))
+(flet ($n910 (bvule ?n909 ?n149))
+(flet ($n911 (not $n910))
+(flet ($n912 (or $n905 $n906 $n911))
+(flet ($n913 (distinct ?n131 ?n86))
+(flet ($n914 (not $n913))
+(flet ($n915 (bvsle ?n420 ?n442))
+(let (?n916 (ite $n915 ?n7 ?n8))
+(let (?n917 (bvashr ?n235 ?n49))
+(flet ($n918 (bvugt ?n916 ?n917))
+(flet ($n919 (not $n918))
+(flet ($n920 (not $n869))
+(flet ($n921 (or $n914 $n919 $n920))
+(let (?n922 (extract[0:0] ?n227))
+(flet ($n923 (= ?n7 ?n922))
+(let (?n924 (zero_extend[2] ?n121))
+(let (?n925 (ite $n923 ?n813 ?n924))
+(let (?n926 (zero_extend[2] ?n246))
+(flet ($n927 (bvslt ?n925 ?n926))
+(let (?n928 (bvadd ?n12 ?n891))
+(flet ($n929 (bvugt ?n928 ?n195))
+(let (?n930 (sign_extend[3] ?n247))
+(let (?n931 (bvcomp ?n215 ?n930))
+(let (?n932 (zero_extend[3] ?n931))
+(flet ($n933 (bvsgt ?n932 ?n432))
+(flet ($n934 (not $n933))
+(flet ($n935 (or $n927 $n929 $n934))
+(flet ($n936 (bvsgt ?n86 ?n649))
+(flet ($n937 (bvsgt ?n29 ?n832))
+(flet ($n938 (not $n937))
+(let (?n939 (zero_extend[3] ?n420))
+(flet ($n940 (bvsle ?n249 ?n939))
+(flet ($n941 (not $n940))
+(flet ($n942 (or $n936 $n938 $n941))
+(let (?n943 (bvlshr v0 ?n5))
+(flet ($n944 (= v7 ?n943))
+(flet ($n945 (distinct v7 ?n629))
+(let (?n946 (bvor ?n4 ?n103))
+(let (?n947 (sign_extend[3] ?n266))
+(flet ($n948 (= ?n946 ?n947))
+(flet ($n949 (not $n948))
+(flet ($n950 (or $n944 $n945 $n949))
+(let (?n951 (bvlshr ?n159 ?n628))
+(flet ($n952 (= ?n10 ?n951))
+(let (?n953 (extract[2:2] ?n494))
+(flet ($n954 (= ?n7 ?n953))
+(let (?n955 (sign_extend[3] ?n507))
+(let (?n956 (ite $n954 ?n126 ?n955))
+(flet ($n957 (bvsge ?n86 ?n956))
+(flet ($n958 (not $n957))
+(flet ($n959 (bvuge ?n472 ?n241))
+(flet ($n960 (not $n959))
+(flet ($n961 (or $n952 $n958 $n960))
+(flet ($n962 (bvsgt ?n326 ?n741))
+(flet ($n963 (bvsge ?n480 ?n577))
+(flet ($n964 (not $n671))
+(flet ($n965 (or $n962 $n963 $n964))
+(flet ($n966 (bvsgt ?n166 ?n362))
+(flet ($n967 (bvugt ?n666 ?n20))
+(flet ($n968 (not $n967))
+(let (?n969 (sign_extend[3] ?n133))
+(let (?n970 (bvcomp ?n113 ?n969))
+(flet ($n971 (bvsgt ?n970 ?n202))
+(let (?n972 (ite $n971 ?n7 ?n8))
+(flet ($n973 (bvugt ?n972 ?n49))
+(flet ($n974 (not $n973))
+(flet ($n975 (or $n966 $n968 $n974))
+(flet ($n976 (bvugt ?n487 ?n429))
+(flet ($n977 (bvult ?n438 ?n305))
+(let (?n978 (ite $n977 ?n7 ?n8))
+(let (?n979 (zero_extend[3] ?n978))
+(flet ($n980 (bvsgt ?n478 ?n979))
+(flet ($n981 (bvsle ?n885 ?n5))
+(flet ($n982 (not $n981))
+(flet ($n983 (or $n976 $n980 $n982))
+(flet ($n984 (bvult ?n26 ?n375))
+(flet ($n985 (= ?n10 ?n231))
+(let (?n986 (zero_extend[3] ?n79))
+(flet ($n987 (bvsge ?n986 ?n260))
+(flet ($n988 (not $n987))
+(flet ($n989 (or $n984 $n985 $n988))
+(flet ($n990 (bvsle ?n956 ?n512))
+(flet ($n991 (distinct ?n165 ?n246))
+(let (?n992 (sign_extend[3] ?n517))
+(flet ($n993 (bvsge ?n146 ?n992))
+(flet ($n994 (not $n993))
+(flet ($n995 (or $n990 $n991 $n994))
+(flet ($n996 (bvugt ?n205 ?n121))
+(flet ($n997 (not $n996))
+(flet ($n998 (bvule ?n20 ?n616))
+(flet ($n999 (not $n998))
+(flet ($n1000 (or $n850 $n997 $n999))
+(flet ($n1001 (bvsge ?n119 ?n290))
+(let (?n1002 (bvxor ?n679 ?n39))
+(flet ($n1003 (bvuge ?n86 ?n1002))
+(flet ($n1004 (not $n1003))
+(let (?n1005 (zero_extend[3] ?n246))
+(flet ($n1006 (bvsle ?n1005 ?n304))
+(flet ($n1007 (not $n1006))
+(flet ($n1008 (or $n1001 $n1004 $n1007))
+(flet ($n1009 (not $n656))
+(flet ($n1010 (distinct ?n214 ?n655))
+(flet ($n1011 (not $n1010))
+(flet ($n1012 (or $n997 $n1009 $n1011))
+(flet ($n1013 (distinct ?n153 ?n629))
+(let (?n1014 (ite $n1013 ?n7 ?n8))
+(let (?n1015 (zero_extend[3] ?n1014))
+(flet ($n1016 (bvsgt ?n1015 ?n229))
+(let (?n1017 (zero_extend[3] ?n135))
+(flet ($n1018 (bvsge ?n154 ?n1017))
+(flet ($n1019 (not $n1018))
+(flet ($n1020 (or $n1016 $n254 $n1019))
+(flet ($n1021 (distinct ?n187 ?n461))
+(flet ($n1022 (bvuge ?n12 ?n264))
+(flet ($n1023 (not $n1022))
+(let (?n1024 (sign_extend[3] ?n862))
+(flet ($n1025 (bvsgt ?n20 ?n1024))
+(let (?n1026 (ite $n1025 ?n7 ?n8))
+(flet ($n1027 (bvugt ?n535 ?n1026))
+(flet ($n1028 (not $n1027))
+(flet ($n1029 (or $n1021 $n1023 $n1028))
+(flet ($n1030 (bvult ?n302 ?n149))
+(let (?n1031 (zero_extend[3] ?n266))
+(flet ($n1032 (bvugt ?n655 ?n1031))
+(flet ($n1033 (bvsgt ?n554 ?n286))
+(flet ($n1034 (not $n1033))
+(flet ($n1035 (or $n1030 $n1032 $n1034))
+(flet ($n1036 (bvsle ?n715 ?n432))
+(flet ($n1037 (bvuge ?n400 ?n65))
+(flet ($n1038 (bvule ?n199 ?n186))
+(flet ($n1039 (or $n1036 $n1037 $n1038))
+(flet ($n1040 (bvsge ?n633 ?n51))
+(flet ($n1041 (bvule ?n655 ?n723))
+(flet ($n1042 (not $n1041))
+(flet ($n1043 (or $n1040 $n738 $n1042))
+(flet ($n1044 (bvuge ?n623 ?n93))
+(flet ($n1045 (distinct v2 ?n365))
+(flet ($n1046 (not $n1045))
+(flet ($n1047 (or $n1044 $n310 $n1046))
+(let (?n1048 (sign_extend[3] ?n1014))
+(flet ($n1049 (bvsge ?n476 ?n1048))
+(flet ($n1050 (bvule ?n433 ?n411))
+(flet ($n1051 (or $n1049 $n441 $n1050))
+(flet ($n1052 (= ?n237 ?n375))
+(flet ($n1053 (bvuge ?n291 ?n375))
+(flet ($n1054 (not $n1053))
+(flet ($n1055 (or $n1052 $n575 $n1054))
+(let (?n1056 (bvsub ?n386 ?n153))
+(let (?n1057 (zero_extend[0] ?n188))
+(flet ($n1058 (bvule ?n1056 ?n1057))
+(flet ($n1059 (bvsge ?n366 ?n723))
+(flet ($n1060 (not $n1059))
+(flet ($n1061 (bvugt ?n845 ?n623))
+(flet ($n1062 (not $n1061))
+(flet ($n1063 (or $n1058 $n1060 $n1062))
+(flet ($n1064 (bvsgt ?n13 ?n64))
+(flet ($n1065 (bvult ?n181 ?n628))
+(flet ($n1066 (= ?n51 ?n686))
+(flet ($n1067 (not $n1066))
+(flet ($n1068 (or $n1064 $n1065 $n1067))
+(flet ($n1069 (bvsgt v5 ?n375))
+(let (?n1070 (rotate_left[0] ?n76))
+(flet ($n1071 (bvslt ?n1070 ?n391))
+(flet ($n1072 (not $n1071))
+(flet ($n1073 (bvule ?n551 ?n71))
+(flet ($n1074 (not $n1073))
+(flet ($n1075 (or $n1069 $n1072 $n1074))
+(let (?n1076 (sign_extend[3] ?n267))
+(flet ($n1077 (bvuge ?n1076 ?n156))
+(flet ($n1078 (= ?n139 ?n266))
+(flet ($n1079 (not $n1078))
+(let (?n1080 (bvcomp ?n12 ?n811))
+(flet ($n1081 (distinct ?n186 ?n1080))
+(flet ($n1082 (not $n1081))
+(flet ($n1083 (or $n1077 $n1079 $n1082))
+(flet ($n1084 (not $n848))
+(flet ($n1085 (bvugt ?n154 ?n26))
+(flet ($n1086 (not $n1085))
+(flet ($n1087 (or $n1062 $n1084 $n1086))
+(let (?n1088 (zero_extend[3] ?n391))
+(flet ($n1089 (bvult ?n1088 ?n515))
+(flet ($n1090 (bvsgt ?n159 ?n135))
+(flet ($n1091 (bvult ?n487 ?n4))
+(let (?n1092 (ite $n1091 ?n7 ?n8))
+(let (?n1093 (sign_extend[3] ?n1092))
+(flet ($n1094 (bvslt ?n1093 ?n71))
+(flet ($n1095 (or $n1089 $n1090 $n1094))
+(let (?n1096 (sign_extend[3] ?n970))
+(flet ($n1097 (= ?n291 ?n1096))
+(let (?n1098 (zero_extend[3] ?n1070))
+(flet ($n1099 (bvslt ?n1098 ?n87))
+(flet ($n1100 (bvsge ?n391 ?n76))
+(flet ($n1101 (not $n1100))
+(flet ($n1102 (or $n1097 $n1099 $n1101))
+(let (?n1103 (zero_extend[3] ?n320))
+(let (?n1104 (bvsub ?n93 ?n1103))
+(flet ($n1105 (distinct ?n1104 ?n607))
+(flet ($n1106 (distinct ?n227 ?n348))
+(flet ($n1107 (not $n882))
+(flet ($n1108 (or $n1105 $n1106 $n1107))
+(flet ($n1109 (bvuge ?n249 ?n86))
+(flet ($n1110 (not $n1109))
+(let (?n1111 (zero_extend[3] ?n951))
+(flet ($n1112 (bvsge ?n1111 ?n333))
+(flet ($n1113 (not $n1112))
+(flet ($n1114 (bvsgt ?n79 ?n231))
+(flet ($n1115 (not $n1114))
+(flet ($n1116 (or $n1110 $n1113 $n1115))
+(let (?n1117 (zero_extend[3] ?n1092))
+(flet ($n1118 (bvsge ?n1117 ?n13))
+(flet ($n1119 (bvsle ?n295 ?n785))
+(flet ($n1120 (bvslt ?n41 ?n418))
+(flet ($n1121 (or $n1118 $n1119 $n1120))
+(let (?n1122 (zero_extend[3] ?n598))
+(let (?n1123 (bvand ?n590 ?n1122))
+(flet ($n1124 (bvsge ?n1123 ?n229))
+(flet ($n1125 (bvslt ?n686 ?n486))
+(flet ($n1126 (bvsle ?n719 ?n464))
+(flet ($n1127 (not $n1126))
+(flet ($n1128 (or $n1124 $n1125 $n1127))
+(flet ($n1129 (bvugt ?n391 ?n206))
+(flet ($n1130 (bvugt ?n250 ?n438))
+(flet ($n1131 (bvsgt ?n193 ?n511))
+(flet ($n1132 (or $n1129 $n1130 $n1131))
+(let (?n1133 (sign_extend[1] ?n191))
+(flet ($n1134 (bvsle ?n550 ?n1133))
+(flet ($n1135 (not $n807))
+(let (?n1136 (zero_extend[3] ?n224))
+(flet ($n1137 (distinct ?n634 ?n1136))
+(flet ($n1138 (not $n1137))
+(flet ($n1139 (or $n1134 $n1135 $n1138))
+(let (?n1140 (sign_extend[3] ?n428))
+(flet ($n1141 (distinct ?n494 ?n1140))
+(let (?n1142 (zero_extend[3] ?n492))
+(flet ($n1143 (bvsle ?n43 ?n1142))
+(flet ($n1144 (bvugt ?n289 ?n14))
+(flet ($n1145 (not $n1144))
+(flet ($n1146 (or $n1141 $n1143 $n1145))
+(flet ($n1147 (bvsgt ?n558 ?n229))
+(flet ($n1148 (bvsge ?n182 ?n657))
+(flet ($n1149 (not $n1148))
+(flet ($n1150 (or $n998 $n1147 $n1149))
+(flet ($n1151 (bvuge ?n1057 ?n396))
+(let (?n1152 (extract[2:1] ?n12))
+(flet ($n1153 (bvult ?n759 ?n1152))
+(flet ($n1154 (or $n548 $n1151 $n1153))
+(flet ($n1155 (bvsgt ?n541 ?n463))
+(let (?n1156 (zero_extend[3] ?n863))
+(flet ($n1157 (distinct ?n68 ?n1156))
+(flet ($n1158 (not $n1157))
+(flet ($n1159 (not $n548))
+(flet ($n1160 (or $n1155 $n1158 $n1159))
+(let (?n1161 (bvsub ?n202 ?n316))
+(let (?n1162 (extract[0:0] ?n1161))
+(let (?n1163 (zero_extend[3] ?n1162))
+(flet ($n1164 (bvslt ?n1163 ?n883))
+(flet ($n1165 (not $n1164))
+(flet ($n1166 (bvsgt ?n416 ?n646))
+(flet ($n1167 (not $n1166))
+(let (?n1168 (zero_extend[3] ?n480))
+(flet ($n1169 (bvsge ?n1168 ?n793))
+(flet ($n1170 (not $n1169))
+(flet ($n1171 (or $n1165 $n1167 $n1170))
+(let (?n1172 (zero_extend[3] ?n124))
+(flet ($n1173 (bvsgt v1 ?n1172))
+(let (?n1174 (sign_extend[3] ?n10))
+(flet ($n1175 (bvsle ?n1174 ?n679))
+(flet ($n1176 (bvule ?n160 ?n357))
+(flet ($n1177 (or $n1173 $n1175 $n1176))
+(flet ($n1178 (not $n927))
+(flet ($n1179 (distinct ?n283 ?n212))
+(let (?n1180 (ite $n1179 ?n7 ?n8))
+(let (?n1181 (zero_extend[1] ?n1180))
+(let (?n1182 (sign_extend[1] ?n235))
+(flet ($n1183 (bvule ?n1181 ?n1182))
+(flet ($n1184 (not $n1183))
+(flet ($n1185 (or $n737 $n1178 $n1184))
+(let (?n1186 (zero_extend[1] ?n1026))
+(flet ($n1187 (bvsge ?n141 ?n1186))
+(flet ($n1188 (not $n1187))
+(flet ($n1189 (or $n19 $n1058 $n1188))
+(flet ($n1190 (bvule ?n61 ?n517))
+(flet ($n1191 (bvsge ?n992 v2))
+(flet ($n1192 (or $n1190 $n1191 $n1175))
+(flet ($n1193 (bvsle ?n650 ?n370))
+(flet ($n1194 (bvuge ?n156 ?n438))
+(let (?n1195 (zero_extend[0] ?n593))
+(let (?n1196 (sign_extend[3] ?n1195))
+(flet ($n1197 (bvult ?n476 ?n1196))
+(flet ($n1198 (not $n1197))
+(flet ($n1199 (or $n1193 $n1194 $n1198))
+(flet ($n1200 (bvslt ?n272 ?n41))
+(flet ($n1201 (not $n1200))
+(flet ($n1202 (bvsge ?n487 ?n670))
+(flet ($n1203 (not $n1202))
+(flet ($n1204 (bvugt ?n531 ?n781))
+(flet ($n1205 (not $n1204))
+(flet ($n1206 (or $n1201 $n1203 $n1205))
+(flet ($n1207 (bvule ?n192 ?n146))
+(let (?n1208 (zero_extend[3] ?n1080))
+(flet ($n1209 (bvsge ?n852 ?n1208))
+(flet ($n1210 (not $n1209))
+(flet ($n1211 (= ?n80 ?n99))
+(flet ($n1212 (not $n1211))
+(flet ($n1213 (or $n1207 $n1210 $n1212))
+(flet ($n1214 (bvule ?n943 ?n263))
+(flet ($n1215 (or $n1214 $n973 $n144))
+(flet ($n1216 (bvult ?n666 ?n1031))
+(let (?n1217 (ite $n1216 ?n7 ?n8))
+(flet ($n1218 (bvuge ?n1217 ?n485))
+(flet ($n1219 (bvule ?n176 ?n31))
+(flet ($n1220 (not $n1219))
+(flet ($n1221 (= ?n461 ?n432))
+(flet ($n1222 (not $n1221))
+(flet ($n1223 (or $n1218 $n1220 $n1222))
+(flet ($n1224 (bvule ?n13 ?n782))
+(flet ($n1225 (bvsgt ?n686 ?n410))
+(flet ($n1226 (bvugt ?n2 ?n243))
+(flet ($n1227 (not $n1226))
+(flet ($n1228 (or $n1224 $n1225 $n1227))
+(let (?n1229 (zero_extend[3] ?n205))
+(flet ($n1230 (= ?n238 ?n1229))
+(flet ($n1231 (not $n527))
+(flet ($n1232 (or $n1230 $n1210 $n1231))
+(let (?n1233 (bvcomp ?n170 ?n25))
+(flet ($n1234 (distinct ?n1233 ?n875))
+(flet ($n1235 (bvugt ?n1056 ?n400))
+(let (?n1236 (sign_extend[3] ?n468))
+(flet ($n1237 (bvule ?n12 ?n1236))
+(flet ($n1238 (not $n1237))
+(flet ($n1239 (or $n1234 $n1235 $n1238))
+(flet ($n1240 (bvsle ?n266 ?n875))
+(let (?n1241 (zero_extend[3] ?n577))
+(flet ($n1242 (bvule ?n86 ?n1241))
+(flet ($n1243 (not $n1242))
+(flet ($n1244 (bvule ?n172 ?n82))
+(flet ($n1245 (not $n1244))
+(flet ($n1246 (or $n1240 $n1243 $n1245))
+(flet ($n1247 (not $n1069))
+(let (?n1248 (zero_extend[3] ?n862))
+(flet ($n1249 (bvsge ?n1248 ?n541))
+(flet ($n1250 (not $n1249))
+(let (?n1251 (bvxnor ?n4 ?n171))
+(flet ($n1252 (bvslt ?n1251 ?n335))
+(flet ($n1253 (not $n1252))
+(flet ($n1254 (or $n1247 $n1250 $n1253))
+(flet ($n1255 (bvugt ?n690 ?n781))
+(flet ($n1256 (not $n1255))
+(flet ($n1257 (bvule ?n291 ?n723))
+(flet ($n1258 (not $n1257))
+(flet ($n1259 (or $n254 $n1256 $n1258))
+(let (?n1260 (sign_extend[3] ?n837))
+(flet ($n1261 (bvsgt ?n249 ?n1260))
+(flet ($n1262 (not $n1261))
+(flet ($n1263 (not $n574))
+(flet ($n1264 (or $n1085 $n1262 $n1263))
+(flet ($n1265 (bvsle ?n134 ?n206))
+(flet ($n1266 (or $n1265 $n342 $n1074))
+(flet ($n1267 (bvugt ?n463 ?n295))
+(let (?n1268 (bvshl ?n569 ?n428))
+(let (?n1269 (zero_extend[3] ?n1268))
+(flet ($n1270 (bvslt ?n1269 ?n859))
+(let (?n1271 (sign_extend[3] ?n111))
+(flet ($n1272 (bvugt ?n69 ?n1271))
+(flet ($n1273 (not $n1272))
+(flet ($n1274 (or $n1267 $n1270 $n1273))
+(flet ($n1275 (distinct ?n554 ?n634))
+(flet ($n1276 (not $n300))
+(flet ($n1277 (or $n1275 $n1101 $n1276))
+(let (?n1278 (bvmul ?n130 ?n1161))
+(flet ($n1279 (bvuge ?n1278 ?n210))
+(flet ($n1280 (not $n1279))
+(flet ($n1281 (bvult ?n253 ?n290))
+(flet ($n1282 (not $n1281))
+(flet ($n1283 (or $n1009 $n1280 $n1282))
+(let (?n1284 (sign_extend[3] ?n355))
+(flet ($n1285 (bvslt ?n1284 ?n222))
+(flet ($n1286 (bvsgt ?n455 ?n72))
+(flet ($n1287 (= ?n17 ?n243))
+(flet ($n1288 (or $n1285 $n1286 $n1287))
+(let (?n1289 (zero_extend[3] ?n416))
+(flet ($n1290 (bvult ?n1289 ?n462))
+(flet ($n1291 (bvslt ?n939 ?n198))
+(flet ($n1292 (bvult ?n395 ?n646))
+(flet ($n1293 (or $n1290 $n1291 $n1292))
+(let (?n1294 (sign_extend[1] ?n345))
+(flet ($n1295 (bvsge ?n140 ?n1294))
+(let (?n1296 (ite $n1295 ?n7 ?n8))
+(let (?n1297 (zero_extend[3] ?n1296))
+(flet ($n1298 (bvugt ?n431 ?n1297))
+(flet ($n1299 (bvugt ?n51 ?n249))
+(flet ($n1300 (bvult ?n205 ?n764))
+(flet ($n1301 (or $n1298 $n1299 $n1300))
+(flet ($n1302 (bvsgt ?n5 ?n149))
+(flet ($n1303 (bvult ?n205 ?n416))
+(flet ($n1304 (bvslt ?n641 ?n462))
+(flet ($n1305 (not $n1304))
+(flet ($n1306 (or $n1302 $n1303 $n1305))
+(flet ($n1307 (bvule ?n943 v6))
+(let (?n1308 (ite $n1307 ?n7 ?n8))
+(flet ($n1309 (bvule ?n1308 ?n193))
+(flet ($n1310 (bvsle ?n137 ?n846))
+(flet ($n1311 (bvule ?n1251 ?n472))
+(flet ($n1312 (not $n1311))
+(flet ($n1313 (or $n1309 $n1310 $n1312))
+(flet ($n1314 (bvsle ?n614 ?n177))
+(flet ($n1315 (not $n1314))
+(flet ($n1316 (or $n1006 $n1309 $n1315))
+(flet ($n1317 (bvslt ?n628 ?n468))
+(flet ($n1318 (distinct ?n524 ?n613))
+(flet ($n1319 (not $n1318))
+(flet ($n1320 (bvugt ?n547 ?n928))
+(flet ($n1321 (not $n1320))
+(flet ($n1322 (or $n1317 $n1319 $n1321))
+(flet ($n1323 (bvsge ?n816 ?n99))
+(flet ($n1324 (not $n1323))
+(flet ($n1325 (bvsge ?n1233 ?n628))
+(flet ($n1326 (not $n1325))
+(let (?n1327 (bvashr ?n182 ?n972))
+(let (?n1328 (sign_extend[3] ?n1327))
+(let (?n1329 (bvand ?n412 ?n1328))
+(flet ($n1330 (= ?n1329 ?n541))
+(flet ($n1331 (not $n1330))
+(flet ($n1332 (or $n1324 $n1326 $n1331))
+(flet ($n1333 (bvult ?n482 ?n787))
+(flet ($n1334 (bvsgt ?n681 ?n388))
+(flet ($n1335 (or $n1333 $n1211 $n1334))
+(flet ($n1336 (= ?n72 ?n616))
+(flet ($n1337 (bvule ?n235 ?n281))
+(flet ($n1338 (not $n1337))
+(flet ($n1339 (not $n1310))
+(flet ($n1340 (or $n1336 $n1338 $n1339))
+(let (?n1341 (zero_extend[3] ?n121))
+(flet ($n1342 (bvule ?n462 ?n1341))
+(flet ($n1343 (bvslt ?n795 ?n852))
+(let (?n1344 (ite $n1343 ?n7 ?n8))
+(flet ($n1345 (distinct ?n139 ?n1344))
+(flet ($n1346 (bvugt ?n97 ?n730))
+(flet ($n1347 (not $n1346))
+(flet ($n1348 (or $n1342 $n1345 $n1347))
+(flet ($n1349 (not $n1190))
+(let (?n1350 (sign_extend[3] ?n134))
+(flet ($n1351 (bvugt ?n1350 ?n860))
+(flet ($n1352 (not $n1351))
+(flet ($n1353 (or $n776 $n1349 $n1352))
+(flet ($n1354 (bvsge ?n793 ?n1168))
+(let (?n1355 (sign_extend[3] ?n17))
+(flet ($n1356 (bvule ?n1355 ?n590))
+(flet ($n1357 (or $n1354 $n630 $n1356))
+(flet ($n1358 (bvuge ?n715 ?n12))
+(flet ($n1359 (or $n1045 $n1358 $n762))
+(flet ($n1360 (bvslt ?n1260 ?n650))
+(flet ($n1361 (not $n1360))
+(flet ($n1362 (not $n1131))
+(flet ($n1363 (bvuge ?n33 ?n931))
+(flet ($n1364 (not $n1363))
+(flet ($n1365 (or $n1361 $n1362 $n1364))
+(let (?n1366 (zero_extend[1] ?n620))
+(flet ($n1367 (bvsge ?n1366 ?n317))
+(flet ($n1368 (bvuge ?n39 ?n412))
+(flet ($n1369 (not $n1368))
+(flet ($n1370 (bvsge ?n264 ?n570))
+(flet ($n1371 (not $n1370))
+(flet ($n1372 (or $n1367 $n1369 $n1371))
+(flet ($n1373 (= ?n10 ?n485))
+(let (?n1374 (sign_extend[2] ?n140))
+(flet ($n1375 (bvsge ?n171 ?n1374))
+(flet ($n1376 (not $n1375))
+(flet ($n1377 (or $n1373 $n544 $n1376))
+(flet ($n1378 (bvslt ?n478 v7))
+(flet ($n1379 (not $n1016))
+(flet ($n1380 (or $n1378 $n1061 $n1379))
+(flet ($n1381 (bvslt ?n17 ?n323))
+(flet ($n1382 (not $n1381))
+(flet ($n1383 (or $n1209 $n1240 $n1382))
+(flet ($n1384 (bvsgt ?n56 v8))
+(flet ($n1385 (not $n1384))
+(flet ($n1386 (bvsge v1 ?n228))
+(flet ($n1387 (not $n1386))
+(flet ($n1388 (bvsge ?n25 ?n375))
+(flet ($n1389 (not $n1388))
+(flet ($n1390 (or $n1385 $n1387 $n1389))
+(flet ($n1391 (bvult ?n154 ?n63))
+(flet ($n1392 (bvslt ?n540 ?n494))
+(flet ($n1393 (not $n1392))
+(flet ($n1394 (or $n1391 $n1257 $n1393))
+(let (?n1395 (bvadd ?n181 ?n190))
+(let (?n1396 (sign_extend[3] ?n1395))
+(flet ($n1397 (bvuge ?n309 ?n1396))
+(flet ($n1398 (bvuge ?n36 ?n646))
+(flet ($n1399 (bvuge ?n740 ?n17))
+(flet ($n1400 (or $n1397 $n1398 $n1399))
+(let (?n1401 (zero_extend[3] ?n620))
+(flet ($n1402 (= ?n811 ?n1401))
+(flet ($n1403 (bvuge ?n18 ?n363))
+(flet ($n1404 (bvsge ?n1374 ?n175))
+(flet ($n1405 (not $n1404))
+(flet ($n1406 (or $n1402 $n1403 $n1405))
+(flet ($n1407 (bvsgt ?n440 ?n356))
+(flet ($n1408 (= ?n104 ?n979))
+(flet ($n1409 (not $n1408))
+(flet ($n1410 (or $n1407 $n841 $n1409))
+(flet ($n1411 (and $n1 $n1 $n1 $n1 $n1 $n19 $n70 $n92 $n145 $n164 $n197 $n221 $n256 $n298 $n315 $n344 $n373 $n385 $n408 $n425 $n436 $n446 $n458 $n467 $n475 $n502 $n521 $n534 $n546 $n557 $n566 $n580 $n589 $n602 $n610 $n619 $n626 $n637 $n1 $n653 $n669 $n677 $n689 $n700 $n706 $n713 $n722 $n736 $n746 $n753 $n758 $n767 $n773 $n779 $n791 $n799 $n805 $n810 $n820 $n830 $n836 $n843 $n851 $n858 $n868 $n873 $n881 $n890 $n897 $n903 $n912 $n921 $n935 $n942 $n950 $n961 $n965 $n975 $n983 $n989 $n995 $n [...]
+$n1411
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) [...]
diff --git a/test/regress/regress0/bv/fuzz19.delta01.smt b/test/regress/regress0/bv/fuzz19.delta01.smt
new file mode 100644
index 0000000..fd04407
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz19.delta01.smt
@@ -0,0 +1,129 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:extrafuns ((v3 BitVec[4]))
+:extrafuns ((v4 BitVec[4]))
+:extrafuns ((v5 BitVec[4]))
+:status unsat
+:formula
+(flet ($n1 true)
+(let (?n2 (extract[0:0] v2))
+(let (?n3 (zero_extend[1] ?n2))
+(let (?n4 (zero_extend[2] ?n3))
+(let (?n5 bv0[4])
+(flet ($n6 (distinct ?n5 v4))
+(let (?n7 bv1[1])
+(let (?n8 bv0[1])
+(let (?n9 (ite $n6 ?n7 ?n8))
+(let (?n10 (sign_extend[3] ?n9))
+(let (?n11 (bvadd ?n4 ?n10))
+(flet ($n12 (bvsle ?n11 ?n5))
+(let (?n13 (ite $n12 ?n7 ?n8))
+(let (?n14 (sign_extend[3] ?n13))
+(let (?n15 bv11[4])
+(flet ($n16 (bvsge ?n15 v5))
+(let (?n17 (ite $n16 ?n7 ?n8))
+(let (?n18 (zero_extend[3] ?n17))
+(flet ($n19 (bvult ?n14 ?n18))
+(let (?n20 (ite $n19 ?n7 ?n8))
+(flet ($n21 (bvsge v2 ?n15))
+(let (?n22 (ite $n21 ?n7 ?n8))
+(let (?n23 (sign_extend[3] ?n22))
+(let (?n24 (bvlshr v4 ?n23))
+(let (?n25 (bvmul v5 ?n24))
+(flet ($n26 (bvslt ?n25 v2))
+(let (?n27 (ite $n26 ?n7 ?n8))
+(flet ($n28 (bvsge ?n20 ?n27))
+(let (?n29 (ite $n28 ?n7 ?n8))
+(let (?n30 (zero_extend[3] ?n29))
+(flet ($n31 (bvugt v3 ?n30))
+(flet ($n32 (bvugt v0 ?n5))
+(let (?n33 (ite $n32 ?n7 ?n8))
+(let (?n34 (zero_extend[3] ?n33))
+(flet ($n35 (bvsge v1 ?n34))
+(let (?n36 (ite $n35 ?n7 ?n8))
+(let (?n37 (sign_extend[3] ?n36))
+(let (?n38 (bvashr v1 ?n37))
+(let (?n39 bv10[4])
+(flet ($n40 (bvult ?n38 ?n39))
+(flet ($n41 false)
+(let (?n42 (bvashr v3 ?n4))
+(let (?n43 bv1[4])
+(flet ($n44 (bvule ?n42 ?n43))
+(let (?n45 (ite $n44 ?n7 ?n8))
+(let (?n46 (zero_extend[3] ?n45))
+(flet ($n47 (bvsge ?n46 ?n38))
+(let (?n48 (ite $n47 ?n7 ?n8))
+(let (?n49 (sign_extend[1] ?n48))
+(let (?n50 bv0[2])
+(flet ($n51 (bvsge ?n49 ?n50))
+(let (?n52 (ite $n51 ?n7 ?n8))
+(flet ($n53 (= ?n27 ?n52))
+(let (?n54 (ite $n53 ?n7 ?n8))
+(flet ($n55 (bvult ?n25 v1))
+(let (?n56 (ite $n55 ?n7 ?n8))
+(let (?n57 (bvadd ?n7 ?n56))
+(let (?n58 (bvneg v4))
+(flet ($n59 (bvslt ?n58 ?n5))
+(let (?n60 (ite $n59 ?n7 ?n8))
+(let (?n61 (bvashr ?n57 ?n60))
+(let (?n62 (sign_extend[3] ?n61))
+(let (?n63 (sign_extend[3] ?n54))
+(flet ($n64 (bvugt ?n62 ?n63))
+(let (?n65 (ite $n64 ?n7 ?n8))
+(flet ($n66 (distinct ?n54 ?n65))
+(flet ($n67 (not $n66))
+(let (?n68 (sign_extend[3] ?n45))
+(let (?n69 (bvcomp v3 ?n68))
+(flet ($n70 (bvule ?n7 ?n69))
+(flet ($n71 (or $n41 $n67 $n70))
+(let (?n72 (sign_extend[3] ?n7))
+(flet ($n73 (bvsle ?n72 ?n58))
+(let (?n74 (sign_extend[3] ?n2))
+(flet ($n75 (distinct ?n5 ?n74))
+(let (?n76 (ite $n75 ?n7 ?n8))
+(let (?n77 (sign_extend[3] ?n76))
+(flet ($n78 (bvsle ?n25 ?n5))
+(let (?n79 (ite $n78 ?n7 ?n8))
+(let (?n80 (zero_extend[3] ?n79))
+(let (?n81 (bvxnor ?n11 ?n80))
+(flet ($n82 (bvsle ?n77 ?n81))
+(flet ($n83 (not $n82))
+(let (?n84 (extract[2:0] v3))
+(let (?n85 (concat ?n84 ?n52))
+(flet ($n86 (bvsle ?n85 ?n72))
+(flet ($n87 (bvuge ?n5 ?n10))
+(let (?n88 (ite $n87 ?n7 ?n8))
+(let (?n89 (zero_extend[3] ?n88))
+(let (?n90 (bvmul v4 ?n89))
+(flet ($n91 (bvsgt ?n90 ?n5))
+(let (?n92 (ite $n91 ?n7 ?n8))
+(let (?n93 (sign_extend[3] ?n92))
+(flet ($n94 (bvsgt ?n18 ?n5))
+(let (?n95 (ite $n94 ?n7 ?n8))
+(flet ($n96 (bvult v4 v4))
+(let (?n97 (ite $n96 ?n7 ?n8))
+(flet ($n98 (bvsge ?n95 ?n97))
+(let (?n99 (ite $n98 ?n7 ?n8))
+(let (?n100 (zero_extend[3] ?n99))
+(flet ($n101 (bvsge ?n93 ?n100))
+(let (?n102 (ite $n101 ?n7 ?n8))
+(flet ($n103 (bvsle ?n8 ?n102))
+(flet ($n104 (or $n41 $n86 $n103))
+(let (?n105 (zero_extend[3] ?n20))
+(flet ($n106 (bvuge ?n5 ?n105))
+(flet ($n107 (bvule ?n25 ?n5))
+(let (?n108 (ite $n107 ?n7 ?n8))
+(let (?n109 (sign_extend[2] ?n108))
+(flet ($n110 (= ?n2 ?n7))
+(let (?n111 (ite $n110 ?n25 ?n42))
+(flet ($n112 (bvsle ?n5 ?n111))
+(let (?n113 (ite $n112 ?n7 ?n8))
+(let (?n114 (extract[1:0] ?n38))
+(let (?n115 (concat ?n113 ?n114))
+(flet ($n116 (= ?n109 ?n115))
+(flet ($n117 (and $n31 $n40 $n71 $n73 $n83 $n104 $n106 $n116))
+$n117
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/bv/fuzz19.smt b/test/regress/regress0/bv/fuzz19.smt
new file mode 100644
index 0000000..91bf1e0
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz19.smt
@@ -0,0 +1,1641 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:extrafuns ((v5 BitVec[4]))
+:extrafuns ((v3 BitVec[4]))
+:extrafuns ((v4 BitVec[4]))
+:status unsat
+:formula
+(flet ($n1 true)
+(let (?n2 (extract[0:0] v2))
+(let (?n3 (zero_extend[1] ?n2))
+(let (?n4 (zero_extend[2] ?n3))
+(let (?n5 (bvashr v3 ?n4))
+(let (?n6 bv11[4])
+(flet ($n7 (bvsge ?n6 v5))
+(let (?n8 bv1[1])
+(let (?n9 bv0[1])
+(let (?n10 (ite $n7 ?n8 ?n9))
+(let (?n11 (rotate_left[0] ?n10))
+(let (?n12 (zero_extend[3] ?n11))
+(flet ($n13 (bvule ?n5 ?n12))
+(let (?n14 (ite $n13 ?n8 ?n9))
+(let (?n15 (zero_extend[3] ?n14))
+(let (?n16 bv4[4])
+(flet ($n17 (bvugt v0 ?n16))
+(let (?n18 (ite $n17 ?n8 ?n9))
+(let (?n19 (zero_extend[3] ?n18))
+(flet ($n20 (bvsge v1 ?n19))
+(let (?n21 (ite $n20 ?n8 ?n9))
+(let (?n22 (sign_extend[3] ?n21))
+(let (?n23 (bvashr v1 ?n22))
+(flet ($n24 (bvsge ?n15 ?n23))
+(let (?n25 (ite $n24 ?n8 ?n9))
+(let (?n26 (repeat[3] ?n25))
+(let (?n27 (zero_extend[1] ?n3))
+(let (?n28 (bvand ?n26 ?n27))
+(let (?n29 (repeat[1] ?n28))
+(let (?n30 bv10[4])
+(let (?n31 (extract[1:1] ?n30))
+(flet ($n32 (= ?n8 ?n31))
+(let (?n33 (ite $n32 v3 v5))
+(let (?n34 (bvnand ?n16 ?n23))
+(flet ($n35 (bvule ?n34 v5))
+(let (?n36 (ite $n35 ?n8 ?n9))
+(let (?n37 (zero_extend[3] ?n36))
+(flet ($n38 (bvult ?n33 ?n37))
+(let (?n39 (ite $n38 ?n8 ?n9))
+(let (?n40 (zero_extend[2] ?n39))
+(flet ($n41 (bvsge ?n29 ?n40))
+(let (?n42 bv14[4])
+(let (?n43 (bvxor ?n30 ?n42))
+(let (?n44 (bvadd ?n30 v0))
+(let (?n45 (bvlshr ?n22 ?n44))
+(let (?n46 (sign_extend[3] ?n2))
+(let (?n47 (bvadd ?n45 ?n46))
+(flet ($n48 (distinct ?n43 ?n47))
+(let (?n49 (ite $n48 ?n8 ?n9))
+(let (?n50 (sign_extend[3] ?n49))
+(flet ($n51 (bvult ?n6 ?n50))
+(flet ($n52 (bvugt ?n16 ?n42))
+(let (?n53 (ite $n52 ?n8 ?n9))
+(let (?n54 (sign_extend[3] ?n53))
+(let (?n55 (bvnot v4))
+(let (?n56 (zero_extend[0] ?n55))
+(let (?n57 (sign_extend[0] ?n56))
+(flet ($n58 (bvslt ?n54 ?n57))
+(let (?n59 (ite $n58 ?n8 ?n9))
+(let (?n60 bv13[4])
+(let (?n61 bv5[4])
+(flet ($n62 (distinct ?n61 v4))
+(let (?n63 (ite $n62 ?n8 ?n9))
+(let (?n64 (sign_extend[3] ?n63))
+(let (?n65 (bvashr ?n64 v4))
+(flet ($n66 (bvuge ?n60 ?n65))
+(let (?n67 (ite $n66 ?n8 ?n9))
+(let (?n68 (zero_extend[3] ?n67))
+(let (?n69 (bvcomp ?n16 ?n68))
+(let (?n70 (rotate_left[0] ?n69))
+(flet ($n71 (bvsgt ?n59 ?n70))
+(flet ($n72 (not $n71))
+(let (?n73 (sign_extend[1] ?n25))
+(let (?n74 (extract[1:0] ?n23))
+(flet ($n75 (bvsge v2 ?n6))
+(let (?n76 (ite $n75 ?n8 ?n9))
+(let (?n77 (zero_extend[1] ?n76))
+(let (?n78 (bvxnor ?n74 ?n77))
+(flet ($n79 (bvsge ?n73 ?n78))
+(let (?n80 (ite $n79 ?n8 ?n9))
+(flet ($n81 (= v5 ?n46))
+(let (?n82 (ite $n81 ?n8 ?n9))
+(flet ($n83 (bvugt ?n18 ?n82))
+(let (?n84 (ite $n83 ?n8 ?n9))
+(let (?n85 (bvsub ?n80 ?n84))
+(let (?n86 (zero_extend[3] ?n76))
+(let (?n87 (bvneg v4))
+(flet ($n88 (bvuge ?n86 ?n87))
+(let (?n89 (ite $n88 ?n8 ?n9))
+(let (?n90 (bvshl ?n56 v4))
+(flet ($n91 (bvule ?n87 ?n33))
+(let (?n92 (ite $n91 ?n8 ?n9))
+(let (?n93 (sign_extend[3] ?n92))
+(flet ($n94 (bvult ?n90 ?n93))
+(let (?n95 (ite $n94 ?n8 ?n9))
+(flet ($n96 (= ?n89 ?n95))
+(let (?n97 (ite $n96 ?n8 ?n9))
+(let (?n98 (zero_extend[3] ?n97))
+(let (?n99 (repeat[1] ?n30))
+(let (?n100 (bvnand ?n4 ?n99))
+(flet ($n101 (bvsle ?n98 ?n100))
+(let (?n102 (ite $n101 ?n8 ?n9))
+(let (?n103 (bvxnor ?n85 ?n102))
+(let (?n104 (extract[0:0] ?n2))
+(flet ($n105 (= ?n8 ?n104))
+(let (?n106 (sign_extend[3] ?n76))
+(let (?n107 (bvlshr v4 ?n106))
+(let (?n108 (bvmul v5 ?n107))
+(let (?n109 (ite $n105 ?n108 ?n5))
+(flet ($n110 (bvult ?n109 ?n109))
+(let (?n111 (ite $n110 ?n8 ?n9))
+(let (?n112 (zero_extend[3] ?n111))
+(let (?n113 (bvlshr ?n112 ?n108))
+(let (?n114 (zero_extend[3] ?n2))
+(flet ($n115 (= ?n113 ?n114))
+(let (?n116 (ite $n115 ?n8 ?n9))
+(flet ($n117 (bvsgt ?n103 ?n116))
+(flet ($n118 (not $n117))
+(flet ($n119 (or $n51 $n72 $n118))
+(let (?n120 (bvadd ?n65 ?n4))
+(let (?n121 (extract[1:1] ?n120))
+(let (?n122 (zero_extend[3] ?n121))
+(flet ($n123 (bvsle ?n120 ?n122))
+(let (?n124 (ite $n123 ?n8 ?n9))
+(let (?n125 (sign_extend[3] ?n124))
+(let (?n126 (rotate_right[3] v3))
+(let (?n127 (extract[2:2] ?n126))
+(flet ($n128 (= ?n8 ?n127))
+(let (?n129 (zero_extend[3] ?n10))
+(let (?n130 (ite $n128 ?n129 v1))
+(flet ($n131 (bvult ?n125 ?n130))
+(let (?n132 (ite $n131 ?n8 ?n9))
+(let (?n133 (sign_extend[3] ?n132))
+(flet ($n134 (bvult ?n65 ?n133))
+(flet ($n135 (not $n134))
+(let (?n136 (bvmul v4 ?n107))
+(let (?n137 (bvxnor ?n30 ?n136))
+(let (?n138 (bvmul ?n68 ?n137))
+(flet ($n139 (bvsgt ?n138 ?n61))
+(let (?n140 (ite $n139 ?n8 ?n9))
+(let (?n141 (sign_extend[3] ?n140))
+(let (?n142 (bvmul v1 ?n141))
+(let (?n143 (extract[0:0] ?n142))
+(flet ($n144 (= ?n8 ?n143))
+(let (?n145 (sign_extend[3] ?n25))
+(let (?n146 (ite $n144 ?n65 ?n145))
+(let (?n147 (repeat[2] ?n97))
+(let (?n148 (sign_extend[2] ?n147))
+(flet ($n149 (bvsle ?n146 ?n148))
+(let (?n150 (sign_extend[2] ?n74))
+(let (?n151 (sign_extend[2] ?n3))
+(let (?n152 (bvlshr ?n30 ?n151))
+(let (?n153 (bvashr ?n150 ?n152))
+(let (?n154 (repeat[1] ?n153))
+(let (?n155 (zero_extend[3] ?n95))
+(let (?n156 (bvxor ?n154 ?n155))
+(let (?n157 (bvashr ?n156 v2))
+(let (?n158 (extract[1:1] ?n157))
+(flet ($n159 (= ?n8 ?n158))
+(let (?n160 (bvneg ?n82))
+(let (?n161 (sign_extend[3] ?n160))
+(let (?n162 (extract[3:0] v2))
+(flet ($n163 (bvult ?n6 ?n162))
+(let (?n164 (ite $n163 ?n8 ?n9))
+(let (?n165 (zero_extend[3] ?n164))
+(let (?n166 (bvsub ?n165 ?n126))
+(let (?n167 (sign_extend[0] ?n166))
+(let (?n168 (ite $n159 ?n161 ?n167))
+(let (?n169 (rotate_left[0] ?n132))
+(flet ($n170 (bvslt ?n108 v2))
+(let (?n171 (ite $n170 ?n8 ?n9))
+(flet ($n172 (bvsge ?n169 ?n171))
+(let (?n173 (ite $n172 ?n8 ?n9))
+(let (?n174 (zero_extend[3] ?n173))
+(flet ($n175 (bvugt ?n168 ?n174))
+(let (?n176 (sign_extend[3] ?n80))
+(let (?n177 (sign_extend[3] ?n89))
+(let (?n178 (bvlshr ?n177 ?n34))
+(let (?n179 (bvnand ?n150 ?n178))
+(flet ($n180 (distinct ?n176 ?n179))
+(flet ($n181 (not $n180))
+(flet ($n182 (or $n149 $n175 $n181))
+(let (?n183 (rotate_left[0] ?n124))
+(let (?n184 (extract[0:0] ?n14))
+(let (?n185 (bvadd ?n183 ?n184))
+(let (?n186 (zero_extend[3] ?n185))
+(flet ($n187 (distinct ?n44 ?n186))
+(flet ($n188 (bvsgt ?n2 ?n10))
+(let (?n189 (ite $n188 ?n8 ?n9))
+(let (?n190 (zero_extend[3] ?n189))
+(let (?n191 (bvand ?n130 ?n190))
+(flet ($n192 (bvule ?n60 ?n5))
+(let (?n193 (ite $n192 ?n8 ?n9))
+(let (?n194 (zero_extend[3] ?n193))
+(flet ($n195 (bvsge ?n191 ?n194))
+(let (?n196 (ite $n195 ?n8 ?n9))
+(let (?n197 (bvneg ?n196))
+(let (?n198 (bvneg ?n111))
+(let (?n199 (zero_extend[3] ?n198))
+(flet ($n200 (= ?n42 v0))
+(let (?n201 (ite $n200 ?n8 ?n9))
+(let (?n202 (zero_extend[3] ?n201))
+(flet ($n203 (bvsle ?n108 ?n202))
+(let (?n204 (ite $n203 ?n8 ?n9))
+(let (?n205 (sign_extend[3] ?n204))
+(let (?n206 (bvlshr ?n86 ?n126))
+(flet ($n207 (bvugt ?n206 v5))
+(let (?n208 (ite $n207 ?n8 ?n9))
+(let (?n209 (zero_extend[3] ?n208))
+(let (?n210 (bvor ?n42 ?n209))
+(let (?n211 (bvmul ?n30 ?n210))
+(let (?n212 (bvshl ?n205 ?n211))
+(let (?n213 (repeat[1] ?n212))
+(flet ($n214 (bvule ?n199 ?n213))
+(let (?n215 (ite $n214 ?n8 ?n9))
+(flet ($n216 (bvsle ?n197 ?n215))
+(let (?n217 (bvadd ?n10 ?n189))
+(flet ($n218 (= ?n153 ?n54))
+(let (?n219 (ite $n218 ?n8 ?n9))
+(let (?n220 (sign_extend[3] ?n11))
+(flet ($n221 (distinct v3 ?n220))
+(let (?n222 (ite $n221 ?n8 ?n9))
+(let (?n223 (zero_extend[3] ?n222))
+(flet ($n224 (bvuge ?n223 ?n42))
+(let (?n225 (ite $n224 ?n8 ?n9))
+(flet ($n226 (bvuge v0 ?n56))
+(let (?n227 (ite $n226 ?n8 ?n9))
+(let (?n228 (bvlshr ?n225 ?n227))
+(let (?n229 (bvcomp ?n219 ?n228))
+(let (?n230 (bvmul ?n217 ?n229))
+(let (?n231 (sign_extend[3] ?n230))
+(flet ($n232 (bvule ?n44 ?n231))
+(let (?n233 (ite $n232 ?n8 ?n9))
+(let (?n234 (sign_extend[2] ?n84))
+(let (?n235 (bvlshr ?n28 ?n234))
+(let (?n236 (sign_extend[2] ?n219))
+(let (?n237 (bvmul ?n235 ?n236))
+(let (?n238 (rotate_right[2] v0))
+(flet ($n239 (bvsge ?n42 ?n190))
+(let (?n240 (ite $n239 ?n8 ?n9))
+(let (?n241 (sign_extend[3] ?n240))
+(flet ($n242 (bvsge ?n238 ?n241))
+(let (?n243 (ite $n242 ?n8 ?n9))
+(let (?n244 (sign_extend[2] ?n243))
+(let (?n245 (bvxor ?n237 ?n244))
+(let (?n246 (zero_extend[1] ?n245))
+(let (?n247 (bvor ?n87 ?n191))
+(flet ($n248 (bvugt ?n246 ?n247))
+(let (?n249 (ite $n248 ?n8 ?n9))
+(flet ($n250 (bvugt ?n233 ?n249))
+(flet ($n251 (not $n250))
+(flet ($n252 (or $n187 $n216 $n251))
+(let (?n253 (zero_extend[2] ?n227))
+(flet ($n254 (distinct ?n29 ?n253))
+(let (?n255 (extract[1:1] ?n235))
+(let (?n256 (sign_extend[3] ?n255))
+(let (?n257 (zero_extend[3] ?n21))
+(let (?n258 (bvand ?n60 ?n257))
+(flet ($n259 (bvsle ?n155 ?n258))
+(let (?n260 (ite $n259 ?n8 ?n9))
+(let (?n261 (zero_extend[3] ?n260))
+(let (?n262 (bvnand ?n5 ?n261))
+(flet ($n263 (bvsle ?n256 ?n262))
+(let (?n264 (bvsub ?n258 ?n165))
+(flet ($n265 (bvult ?n44 ?n23))
+(let (?n266 (ite $n265 ?n8 ?n9))
+(let (?n267 (extract[0:0] ?n266))
+(flet ($n268 (= ?n8 ?n267))
+(let (?n269 (bvand ?n19 ?n130))
+(let (?n270 (ite $n268 ?n178 ?n269))
+(flet ($n271 (bvult ?n162 ?n270))
+(let (?n272 (ite $n271 ?n8 ?n9))
+(let (?n273 (sign_extend[3] ?n272))
+(flet ($n274 (bvugt ?n264 ?n273))
+(flet ($n275 (not $n274))
+(flet ($n276 (or $n254 $n263 $n275))
+(let (?n277 (sign_extend[3] ?n266))
+(flet ($n278 (bvsgt ?n270 ?n277))
+(let (?n279 (ite $n278 ?n8 ?n9))
+(let (?n280 (concat ?n279 ?n140))
+(flet ($n281 (bvult ?n80 ?n164))
+(let (?n282 (ite $n281 ?n8 ?n9))
+(let (?n283 (zero_extend[1] ?n282))
+(flet ($n284 (distinct ?n280 ?n283))
+(let (?n285 (bvnot ?n44))
+(flet ($n286 (distinct v5 ?n285))
+(flet ($n287 (not $n286))
+(let (?n288 (bvxnor ?n30 ?n47))
+(let (?n289 (bvand ?n288 ?n241))
+(flet ($n290 (distinct ?n206 ?n5))
+(let (?n291 (ite $n290 ?n8 ?n9))
+(let (?n292 (sign_extend[3] ?n291))
+(flet ($n293 (bvugt ?n99 ?n292))
+(let (?n294 (ite $n293 ?n8 ?n9))
+(flet ($n295 (bvsle ?n45 ?n176))
+(let (?n296 (ite $n295 ?n8 ?n9))
+(let (?n297 (zero_extend[3] ?n296))
+(let (?n298 (bvcomp ?n288 ?n297))
+(flet ($n299 (bvsle ?n294 ?n298))
+(let (?n300 (ite $n299 ?n8 ?n9))
+(flet ($n301 (bvsgt ?n208 ?n300))
+(let (?n302 (ite $n301 ?n8 ?n9))
+(let (?n303 (zero_extend[3] ?n302))
+(flet ($n304 (bvslt ?n289 ?n303))
+(flet ($n305 (not $n304))
+(flet ($n306 (or $n284 $n287 $n305))
+(flet ($n307 (bvslt ?n270 ?n176))
+(let (?n308 (bvxnor ?n116 ?n39))
+(let (?n309 (bvnot ?n308))
+(flet ($n310 (bvsle ?n291 ?n309))
+(let (?n311 (ite $n310 ?n8 ?n9))
+(let (?n312 (sign_extend[3] ?n311))
+(flet ($n313 (bvugt ?n108 v0))
+(let (?n314 (ite $n313 ?n8 ?n9))
+(let (?n315 (sign_extend[3] ?n314))
+(flet ($n316 (= ?n171 ?n80))
+(let (?n317 (ite $n316 ?n8 ?n9))
+(let (?n318 (sign_extend[3] ?n317))
+(let (?n319 (bvadd ?n269 ?n318))
+(let (?n320 (bvsub ?n315 ?n319))
+(let (?n321 (bvlshr ?n190 ?n320))
+(flet ($n322 (distinct ?n240 ?n53))
+(let (?n323 (ite $n322 ?n8 ?n9))
+(flet ($n324 (bvsle ?n152 ?n109))
+(let (?n325 (ite $n324 ?n8 ?n9))
+(flet ($n326 (bvsle ?n325 ?n171))
+(let (?n327 (ite $n326 ?n8 ?n9))
+(let (?n328 (bvcomp ?n323 ?n327))
+(let (?n329 (sign_extend[3] ?n328))
+(let (?n330 (sign_extend[3] ?n10))
+(let (?n331 (bvashr ?n330 ?n61))
+(let (?n332 (bvxnor ?n30 ?n331))
+(let (?n333 (bvashr ?n329 ?n332))
+(let (?n334 (bvxnor ?n321 ?n333))
+(flet ($n335 (bvslt ?n312 ?n334))
+(let (?n336 (extract[1:1] ?n107))
+(flet ($n337 (= ?n8 ?n336))
+(flet ($n338 (bvslt ?n108 ?n190))
+(let (?n339 (ite $n338 ?n8 ?n9))
+(let (?n340 (zero_extend[3] ?n339))
+(flet ($n341 (bvsgt ?n340 ?n210))
+(let (?n342 (ite $n341 ?n8 ?n9))
+(let (?n343 (sign_extend[3] ?n342))
+(let (?n344 (ite $n337 ?n343 ?n178))
+(flet ($n345 (bvult ?n344 ?n65))
+(flet ($n346 (not $n345))
+(flet ($n347 (or $n307 $n335 $n346))
+(let (?n348 (bvneg ?n282))
+(let (?n349 (sign_extend[3] ?n348))
+(flet ($n350 (bvsgt ?n349 ?n45))
+(let (?n351 (bvand ?n152 ?n167))
+(let (?n352 (bvnor ?n42 ?n55))
+(let (?n353 (zero_extend[0] ?n352))
+(let (?n354 (zero_extend[3] ?n204))
+(let (?n355 (bvxor ?n269 ?n112))
+(let (?n356 (bvlshr ?n354 ?n355))
+(let (?n357 (bvashr ?n353 ?n356))
+(flet ($n358 (bvsle ?n351 ?n357))
+(let (?n359 bv15[4])
+(let (?n360 (zero_extend[2] ?n74))
+(flet ($n361 (bvugt ?n359 ?n360))
+(flet ($n362 (or $n350 $n358 $n361))
+(let (?n363 (zero_extend[3] ?n314))
+(flet ($n364 (bvult ?n206 ?n363))
+(let (?n365 (ite $n364 ?n8 ?n9))
+(let (?n366 (bvmul ?n291 ?n365))
+(let (?n367 (bvnot ?n366))
+(let (?n368 (zero_extend[3] ?n367))
+(flet ($n369 (bvsge ?n264 ?n368))
+(let (?n370 (sign_extend[3] ?n282))
+(let (?n371 (bvlshr ?n55 ?n370))
+(flet ($n372 (bvule ?n87 ?n56))
+(let (?n373 (ite $n372 ?n8 ?n9))
+(flet ($n374 (bvsgt ?n89 ?n373))
+(let (?n375 (ite $n374 ?n8 ?n9))
+(let (?n376 (extract[0:0] ?n375))
+(let (?n377 (sign_extend[3] ?n376))
+(flet ($n378 (distinct ?n371 ?n377))
+(let (?n379 (bvneg ?n156))
+(flet ($n380 (bvule ?n269 ?n379))
+(let (?n381 (ite $n380 ?n8 ?n9))
+(let (?n382 (zero_extend[2] ?n381))
+(let (?n383 (bvxnor ?n235 ?n382))
+(let (?n384 (zero_extend[1] ?n383))
+(flet ($n385 (bvugt ?n285 ?n384))
+(flet ($n386 (or $n369 $n378 $n385))
+(let (?n387 (rotate_right[0] ?n217))
+(let (?n388 (extract[0:0] ?n387))
+(let (?n389 (sign_extend[3] ?n388))
+(flet ($n390 (bvsle ?n167 ?n389))
+(let (?n391 (ite $n390 ?n8 ?n9))
+(let (?n392 (sign_extend[3] ?n391))
+(let (?n393 (rotate_right[2] ?n43))
+(flet ($n394 (bvsle ?n99 ?n45))
+(let (?n395 (ite $n394 ?n8 ?n9))
+(flet ($n396 (bvule ?n395 ?n184))
+(let (?n397 (ite $n396 ?n8 ?n9))
+(let (?n398 (zero_extend[3] ?n397))
+(let (?n399 (bvxnor ?n393 ?n398))
+(let (?n400 (rotate_right[2] ?n399))
+(flet ($n401 (bvsle ?n392 ?n400))
+(flet ($n402 (not $n401))
+(let (?n403 (repeat[2] ?n240))
+(let (?n404 (sign_extend[2] ?n403))
+(let (?n405 (bvashr ?n150 ?n191))
+(let (?n406 (bvor ?n30 ?n405))
+(let (?n407 (bvsub ?n404 ?n406))
+(flet ($n408 (bvslt ?n106 ?n407))
+(flet ($n409 (not $n408))
+(let (?n410 (bvand ?n34 ?n120))
+(let (?n411 (sign_extend[3] ?n95))
+(let (?n412 (bvnand ?n410 ?n411))
+(let (?n413 (bvsub ?n247 ?n155))
+(let (?n414 (sign_extend[3] ?n294))
+(let (?n415 (bvxor ?n413 ?n414))
+(flet ($n416 (bvsle ?n412 ?n415))
+(flet ($n417 (not $n416))
+(flet ($n418 (or $n402 $n409 $n417))
+(let (?n419 (bvadd ?n86 ?n288))
+(let (?n420 (sign_extend[3] ?n308))
+(flet ($n421 (= ?n419 ?n420))
+(let (?n422 (ite $n421 ?n8 ?n9))
+(let (?n423 (zero_extend[3] ?n422))
+(flet ($n424 (bvsge ?n288 ?n423))
+(flet ($n425 (not $n424))
+(flet ($n426 (bvult ?n57 ?n56))
+(let (?n427 (ite $n426 ?n8 ?n9))
+(flet ($n428 (bvsge ?n279 ?n427))
+(let (?n429 (ite $n428 ?n8 ?n9))
+(let (?n430 (zero_extend[3] ?n429))
+(flet ($n431 (bvsge ?n142 ?n430))
+(let (?n432 (ite $n431 ?n8 ?n9))
+(let (?n433 (sign_extend[3] ?n82))
+(flet ($n434 (bvsle ?n433 ?n213))
+(let (?n435 (ite $n434 ?n8 ?n9))
+(let (?n436 (zero_extend[3] ?n435))
+(flet ($n437 (= ?n87 ?n436))
+(let (?n438 (ite $n437 ?n8 ?n9))
+(flet ($n439 (bvslt ?n432 ?n438))
+(let (?n440 (bvcomp ?n42 ?n343))
+(let (?n441 (sign_extend[3] ?n440))
+(flet ($n442 (bvsge ?n154 ?n441))
+(let (?n443 (ite $n442 ?n8 ?n9))
+(let (?n444 (zero_extend[3] ?n443))
+(let (?n445 (bvor ?n342 ?n314))
+(let (?n446 (sign_extend[3] ?n445))
+(flet ($n447 (bvuge ?n446 ?n16))
+(let (?n448 (ite $n447 ?n8 ?n9))
+(let (?n449 (extract[0:0] ?n448))
+(flet ($n450 (= ?n8 ?n449))
+(let (?n451 (sign_extend[3] ?n339))
+(let (?n452 (bvshl ?n366 ?n375))
+(let (?n453 (zero_extend[3] ?n452))
+(let (?n454 (bvlshr ?n156 ?n453))
+(let (?n455 (ite $n450 ?n451 ?n454))
+(flet ($n456 (bvsgt ?n444 ?n455))
+(flet ($n457 (not $n456))
+(let (?n458 (sign_extend[3] ?n69))
+(let (?n459 (repeat[1] ?n162))
+(let (?n460 (bvashr ?n166 ?n459))
+(flet ($n461 (bvult ?n458 ?n460))
+(flet ($n462 (not $n461))
+(flet ($n463 (or $n439 $n457 $n462))
+(let (?n464 (sign_extend[3] ?n171))
+(flet ($n465 (bvuge ?n464 ?n211))
+(let (?n466 (ite $n465 ?n8 ?n9))
+(let (?n467 (bvcomp ?n89 ?n296))
+(let (?n468 (sign_extend[3] ?n467))
+(flet ($n469 (bvsge ?n468 v4))
+(let (?n470 (ite $n469 ?n8 ?n9))
+(let (?n471 (zero_extend[3] ?n470))
+(let (?n472 (bvshl ?n471 ?n65))
+(let (?n473 (extract[1:0] ?n74))
+(let (?n474 (rotate_right[1] ?n473))
+(let (?n475 (sign_extend[2] ?n474))
+(flet ($n476 (bvult ?n472 ?n475))
+(let (?n477 (ite $n476 ?n8 ?n9))
+(flet ($n478 (bvslt ?n466 ?n477))
+(let (?n479 (ite $n478 ?n8 ?n9))
+(let (?n480 (extract[0:0] ?n479))
+(flet ($n481 (= ?n8 ?n480))
+(let (?n482 (rotate_left[0] ?n2))
+(let (?n483 (bvashr ?n63 ?n21))
+(flet ($n484 (bvult ?n113 v1))
+(let (?n485 (ite $n484 ?n8 ?n9))
+(let (?n486 (bvadd ?n483 ?n485))
+(let (?n487 (bvnot ?n485))
+(let (?n488 (zero_extend[3] ?n487))
+(flet ($n489 (bvslt ?n413 ?n488))
+(let (?n490 (ite $n489 ?n8 ?n9))
+(let (?n491 (bvashr ?n486 ?n490))
+(let (?n492 (zero_extend[3] ?n491))
+(flet ($n493 (bvugt ?n344 ?n492))
+(let (?n494 (ite $n493 ?n8 ?n9))
+(let (?n495 (ite $n481 ?n482 ?n494))
+(let (?n496 (bvadd ?n6 ?n86))
+(flet ($n497 (bvslt ?n496 ?n496))
+(let (?n498 (ite $n497 ?n8 ?n9))
+(flet ($n499 (bvsgt ?n498 ?n498))
+(let (?n500 (ite $n499 ?n8 ?n9))
+(flet ($n501 (bvslt ?n495 ?n500))
+(flet ($n502 (not $n501))
+(let (?n503 (bvxnor ?n120 ?n354))
+(let (?n504 (zero_extend[0] ?n503))
+(flet ($n505 (bvule ?n504 ?n269))
+(let (?n506 (ite $n505 ?n8 ?n9))
+(let (?n507 (extract[0:0] ?n506))
+(let (?n508 (sign_extend[3] ?n198))
+(flet ($n509 (bvult ?n508 ?n87))
+(let (?n510 (ite $n509 ?n8 ?n9))
+(flet ($n511 (bvslt ?n507 ?n510))
+(flet ($n512 (not $n511))
+(let (?n513 (zero_extend[3] ?n69))
+(let (?n514 (bvxnor ?n405 ?n513))
+(let (?n515 (bvneg ?n375))
+(let (?n516 (zero_extend[3] ?n515))
+(flet ($n517 (bvsle ?n514 ?n516))
+(flet ($n518 (not $n517))
+(flet ($n519 (or $n502 $n512 $n518))
+(flet ($n520 (bvsle ?n198 ?n339))
+(let (?n521 (ite $n520 ?n8 ?n9))
+(let (?n522 (bvneg ?n521))
+(let (?n523 (zero_extend[3] ?n522))
+(flet ($n524 (bvult ?n211 ?n523))
+(let (?n525 (zero_extend[1] ?n28))
+(let (?n526 (bvor ?n137 ?n525))
+(let (?n527 (extract[0:0] ?n171))
+(flet ($n528 (= ?n8 ?n527))
+(let (?n529 (ite $n528 ?n152 v0))
+(let (?n530 (bvadd ?n191 ?n529))
+(flet ($n531 (bvule ?n530 ?n202))
+(let (?n532 (ite $n531 ?n8 ?n9))
+(let (?n533 (zero_extend[3] ?n532))
+(let (?n534 (bvnor ?n526 ?n533))
+(flet ($n535 (bvuge ?n534 ?n194))
+(let (?n536 (sign_extend[3] ?n164))
+(flet ($n537 (bvslt ?n130 ?n536))
+(flet ($n538 (not $n537))
+(flet ($n539 (or $n524 $n535 $n538))
+(flet ($n540 (bvugt ?n269 ?n411))
+(flet ($n541 (not $n540))
+(flet ($n542 (bvslt ?n68 ?n210))
+(let (?n543 (ite $n542 ?n8 ?n9))
+(let (?n544 (bvxor ?n543 ?n483))
+(let (?n545 (zero_extend[3] ?n544))
+(flet ($n546 (bvult ?n545 ?n530))
+(flet ($n547 (not $n546))
+(flet ($n548 (= ?n171 ?n111))
+(let (?n549 (ite $n548 ?n8 ?n9))
+(let (?n550 (sign_extend[0] ?n549))
+(let (?n551 (zero_extend[3] ?n550))
+(flet ($n552 (bvsle ?n551 ?n5))
+(flet ($n553 (not $n552))
+(flet ($n554 (or $n541 $n547 $n553))
+(flet ($n555 (distinct ?n258 ?n352))
+(flet ($n556 (distinct ?n342 ?n395))
+(flet ($n557 (not $n175))
+(flet ($n558 (or $n555 $n556 $n557))
+(flet ($n559 (bvslt ?n311 ?n373))
+(flet ($n560 (= ?n472 ?n504))
+(flet ($n561 (not $n560))
+(let (?n562 (zero_extend[3] ?n309))
+(flet ($n563 (bvsgt ?n107 ?n562))
+(flet ($n564 (not $n563))
+(flet ($n565 (or $n559 $n561 $n564))
+(let (?n566 (zero_extend[3] ?n25))
+(let (?n567 (bvlshr ?n166 ?n566))
+(let (?n568 (bvnot ?n567))
+(let (?n569 (bvashr ?n568 ?n190))
+(let (?n570 (sign_extend[0] ?n569))
+(flet ($n571 (bvugt ?n492 ?n570))
+(flet ($n572 (distinct ?n86 ?n166))
+(let (?n573 (ite $n572 ?n8 ?n9))
+(let (?n574 (sign_extend[3] ?n573))
+(let (?n575 (bvand ?n33 ?n574))
+(flet ($n576 (bvslt ?n30 v5))
+(let (?n577 (ite $n576 ?n8 ?n9))
+(let (?n578 (sign_extend[3] ?n577))
+(flet ($n579 (distinct ?n575 ?n578))
+(let (?n580 (ite $n579 ?n8 ?n9))
+(flet ($n581 (bvslt ?n500 ?n580))
+(flet ($n582 (not $n581))
+(let (?n583 (zero_extend[3] ?n366))
+(let (?n584 (bvcomp ?n57 ?n583))
+(let (?n585 (sign_extend[3] ?n584))
+(flet ($n586 (bvslt ?n585 ?n534))
+(flet ($n587 (not $n586))
+(flet ($n588 (or $n571 $n582 $n587))
+(let (?n589 (sign_extend[3] ?n18))
+(let (?n590 (bvnot ?n575))
+(flet ($n591 (bvslt ?n589 ?n590))
+(let (?n592 (bvnot ?n570))
+(let (?n593 (zero_extend[3] ?n291))
+(flet ($n594 (= ?n55 ?n593))
+(let (?n595 (ite $n594 ?n8 ?n9))
+(let (?n596 (sign_extend[3] ?n595))
+(flet ($n597 (bvsgt ?n592 ?n596))
+(flet ($n598 (not $n597))
+(flet ($n599 (or $n591 $n118 $n598))
+(let (?n600 (bvneg ?n61))
+(let (?n601 (zero_extend[0] ?n204))
+(let (?n602 (sign_extend[3] ?n601))
+(let (?n603 (bvcomp ?n600 ?n602))
+(let (?n604 (sign_extend[1] ?n603))
+(let (?n605 (bvxor ?n549 ?n366))
+(let (?n606 (sign_extend[2] ?n605))
+(let (?n607 (sign_extend[2] ?n294))
+(flet ($n608 (bvult ?n606 ?n607))
+(let (?n609 (ite $n608 ?n8 ?n9))
+(let (?n610 (extract[0:0] ?n339))
+(let (?n611 (concat ?n609 ?n610))
+(flet ($n612 (bvult ?n604 ?n611))
+(flet ($n613 (not $n612))
+(let (?n614 (bvadd ?n42 ?n212))
+(flet ($n615 (bvugt ?n50 ?n247))
+(let (?n616 (ite $n615 ?n8 ?n9))
+(let (?n617 (sign_extend[3] ?n616))
+(flet ($n618 (bvult ?n614 ?n617))
+(flet ($n619 (not $n618))
+(let (?n620 (zero_extend[3] ?n427))
+(let (?n621 (bvxnor ?n567 ?n161))
+(flet ($n622 (bvsle ?n620 ?n621))
+(flet ($n623 (not $n622))
+(flet ($n624 (or $n613 $n619 $n623))
+(flet ($n625 (distinct ?n178 ?n146))
+(let (?n626 (zero_extend[3] ?n63))
+(let (?n627 (bvashr ?n626 ?n162))
+(let (?n628 (bvxor ?n627 ?n405))
+(flet ($n629 (bvuge ?n628 ?n262))
+(flet ($n630 (not $n41))
+(flet ($n631 (or $n625 $n629 $n630))
+(flet ($n632 (distinct ?n191 ?n277))
+(flet ($n633 (not $n632))
+(let (?n634 (zero_extend[3] ?n266))
+(let (?n635 (bvcomp ?n30 ?n634))
+(let (?n636 (zero_extend[1] ?n635))
+(flet ($n637 (bvsgt ?n636 ?n147))
+(let (?n638 (bvneg ?n225))
+(flet ($n639 (= ?n367 ?n638))
+(let (?n640 (zero_extend[3] ?n84))
+(flet ($n641 (bvult ?n44 ?n640))
+(flet ($n642 (not $n641))
+(flet ($n643 (or $n637 $n639 $n642))
+(let (?n644 (zero_extend[1] ?n53))
+(let (?n645 (bvcomp ?n78 ?n644))
+(let (?n646 (sign_extend[3] ?n645))
+(let (?n647 (sign_extend[3] ?n635))
+(flet ($n648 (bvsgt ?n647 ?n108))
+(let (?n649 (ite $n648 ?n8 ?n9))
+(let (?n650 (zero_extend[3] ?n649))
+(let (?n651 (bvxnor ?n113 ?n650))
+(flet ($n652 (bvule ?n646 ?n651))
+(flet ($n653 (not $n652))
+(let (?n654 (bvnot ?n302))
+(flet ($n655 (bvult ?n654 ?n225))
+(flet ($n656 (not $n655))
+(flet ($n657 (not $n639))
+(flet ($n658 (or $n653 $n656 $n657))
+(flet ($n659 (bvugt ?n160 ?n228))
+(let (?n660 (rotate_right[0] ?n67))
+(flet ($n661 (bvsge ?n660 ?n309))
+(let (?n662 (zero_extend[3] ?n328))
+(flet ($n663 (bvsgt ?n662 ?n34))
+(flet ($n664 (or $n659 $n661 $n663))
+(let (?n665 (bvcomp ?n111 ?n97))
+(flet ($n666 (distinct ?n665 ?n348))
+(flet ($n667 (not $n666))
+(let (?n668 (zero_extend[1] ?n522))
+(flet ($n669 (bvsgt ?n280 ?n668))
+(flet ($n670 (not $n669))
+(flet ($n671 (bvslt ?n410 ?n330))
+(flet ($n672 (not $n671))
+(flet ($n673 (or $n667 $n670 $n672))
+(flet ($n674 (bvult ?n262 ?n211))
+(let (?n675 (ite $n674 ?n8 ?n9))
+(let (?n676 (sign_extend[3] ?n675))
+(let (?n677 (bvmul ?n269 ?n154))
+(flet ($n678 (bvugt ?n676 ?n677))
+(flet ($n679 (bvsle ?n225 ?n432))
+(let (?n680 (bvxor ?n331 v3))
+(let (?n681 (extract[2:0] ?n680))
+(let (?n682 (concat ?n681 ?n80))
+(let (?n683 (sign_extend[3] ?n260))
+(flet ($n684 (bvsle ?n682 ?n683))
+(flet ($n685 (or $n678 $n679 $n684))
+(let (?n686 (zero_extend[3] ?n323))
+(flet ($n687 (bvuge v5 ?n686))
+(let (?n688 (rotate_right[0] ?n448))
+(let (?n689 (sign_extend[3] ?n688))
+(flet ($n690 (bvsgt ?n651 ?n689))
+(flet ($n691 (not $n690))
+(let (?n692 (extract[2:2] v0))
+(flet ($n693 (= ?n8 ?n692))
+(let (?n694 (bvashr ?n50 ?n33))
+(let (?n695 (extract[0:0] ?n694))
+(let (?n696 (zero_extend[3] ?n695))
+(let (?n697 (bvor ?n319 ?n696))
+(let (?n698 (zero_extend[3] ?n80))
+(let (?n699 (ite $n693 ?n697 ?n698))
+(flet ($n700 (distinct ?n468 ?n699))
+(flet ($n701 (not $n700))
+(flet ($n702 (or $n687 $n691 $n701))
+(let (?n703 (bvmul ?n410 ?n145))
+(let (?n704 (bvadd ?n569 ?n703))
+(let (?n705 (bvlshr ?n427 ?n482))
+(let (?n706 (sign_extend[3] ?n705))
+(flet ($n707 (bvsle ?n704 ?n706))
+(let (?n708 (sign_extend[3] ?n649))
+(flet ($n709 (bvuge ?n708 v5))
+(let (?n710 (ite $n709 ?n8 ?n9))
+(let (?n711 (sign_extend[3] ?n710))
+(let (?n712 (bvor ?n247 ?n711))
+(let (?n713 (bvsub ?n222 ?n69))
+(let (?n714 (sign_extend[1] ?n713))
+(let (?n715 (bvand ?n474 ?n714))
+(let (?n716 (rotate_right[0] ?n715))
+(let (?n717 (sign_extend[2] ?n716))
+(flet ($n718 (bvslt ?n712 ?n717))
+(flet ($n719 (not $n718))
+(let (?n720 (bvnot ?n677))
+(flet ($n721 (distinct ?n363 ?n720))
+(flet ($n722 (not $n721))
+(flet ($n723 (or $n707 $n719 $n722))
+(let (?n724 (sign_extend[3] ?n490))
+(let (?n725 (sign_extend[3] ?n59))
+(flet ($n726 (bvugt ?n724 ?n725))
+(flet ($n727 (not $n726))
+(flet ($n728 (bvule ?n288 ?n23))
+(let (?n729 (ite $n728 ?n8 ?n9))
+(let (?n730 (zero_extend[3] ?n729))
+(flet ($n731 (bvsle ?n730 ?n55))
+(let (?n732 (ite $n731 ?n8 ?n9))
+(let (?n733 (sign_extend[3] ?n732))
+(flet ($n734 (bvsge ?n733 v0))
+(flet ($n735 (not $n734))
+(flet ($n736 (bvult ?n448 ?n387))
+(flet ($n737 (not $n736))
+(flet ($n738 (or $n727 $n735 $n737))
+(flet ($n739 (bvule ?n173 ?n300))
+(let (?n740 (ite $n739 ?n8 ?n9))
+(flet ($n741 (bvsle ?n365 ?n740))
+(let (?n742 (bvlshr v5 ?n475))
+(flet ($n743 (bvult ?n89 ?n116))
+(let (?n744 (ite $n743 ?n8 ?n9))
+(let (?n745 (sign_extend[3] ?n744))
+(let (?n746 (bvadd ?n742 ?n745))
+(let (?n747 (sign_extend[3] ?n713))
+(let (?n748 (bvnand ?n238 ?n747))
+(let (?n749 (bvxor ?n49 ?n470))
+(let (?n750 (sign_extend[3] ?n749))
+(flet ($n751 (bvsgt ?n748 ?n750))
+(let (?n752 (ite $n751 ?n8 ?n9))
+(let (?n753 (rotate_left[0] ?n752))
+(let (?n754 (sign_extend[2] ?n753))
+(let (?n755 (bvor ?n235 ?n754))
+(let (?n756 (sign_extend[1] ?n755))
+(flet ($n757 (bvugt ?n746 ?n756))
+(flet ($n758 (not $n679))
+(flet ($n759 (or $n741 $n757 $n758))
+(let (?n760 (zero_extend[2] ?n477))
+(let (?n761 (bvnand ?n26 ?n760))
+(let (?n762 (sign_extend[1] ?n761))
+(flet ($n763 (bvult v5 ?n762))
+(flet ($n764 (distinct v2 ?n47))
+(let (?n765 (ite $n764 ?n8 ?n9))
+(let (?n766 (zero_extend[3] ?n765))
+(flet ($n767 (= ?n153 ?n766))
+(let (?n768 (zero_extend[3] ?n732))
+(flet ($n769 (bvult ?n768 ?n269))
+(flet ($n770 (not $n769))
+(flet ($n771 (or $n763 $n767 $n770))
+(flet ($n772 (bvslt ?n39 ?n302))
+(let (?n773 (sign_extend[3] ?n302))
+(flet ($n774 (bvult ?n773 ?n514))
+(flet ($n775 (not $n774))
+(let (?n776 (concat ?n486 ?n375))
+(let (?n777 (zero_extend[1] ?n67))
+(flet ($n778 (distinct ?n776 ?n777))
+(flet ($n779 (not $n778))
+(flet ($n780 (or $n772 $n775 $n779))
+(flet ($n781 (= ?n8 ?n376))
+(let (?n782 (sign_extend[1] ?n235))
+(let (?n783 (ite $n781 ?n782 ?n621))
+(flet ($n784 (= ?n332 ?n783))
+(let (?n785 (sign_extend[3] ?n753))
+(flet ($n786 (bvult ?n90 ?n785))
+(flet ($n787 (not $n786))
+(let (?n788 (sign_extend[3] ?n765))
+(flet ($n789 (bvslt ?n788 ?n270))
+(let (?n790 (ite $n789 ?n8 ?n9))
+(let (?n791 (zero_extend[2] ?n790))
+(flet ($n792 (bvsge ?n681 ?n791))
+(let (?n793 (ite $n792 ?n8 ?n9))
+(flet ($n794 (bvuge ?n550 ?n793))
+(flet ($n795 (not $n794))
+(flet ($n796 (or $n784 $n787 $n795))
+(flet ($n797 (bvult ?n455 ?n269))
+(flet ($n798 (bvult ?n427 ?n483))
+(let (?n799 (ite $n798 ?n8 ?n9))
+(let (?n800 (zero_extend[3] ?n799))
+(flet ($n801 (bvuge ?n800 ?n568))
+(let (?n802 (ite $n801 ?n8 ?n9))
+(let (?n803 (bvshl ?n183 ?n802))
+(let (?n804 (sign_extend[3] ?n803))
+(flet ($n805 (bvuge ?n455 ?n804))
+(let (?n806 (zero_extend[3] ?n580))
+(flet ($n807 (bvugt ?n651 ?n806))
+(flet ($n808 (not $n807))
+(flet ($n809 (or $n797 $n805 $n808))
+(let (?n810 (sign_extend[3] ?n222))
+(flet ($n811 (bvsle ?n810 ?n247))
+(let (?n812 (bvcomp ?n279 ?n197))
+(let (?n813 (sign_extend[3] ?n477))
+(flet ($n814 (bvugt ?n742 ?n813))
+(let (?n815 (ite $n814 ?n8 ?n9))
+(flet ($n816 (bvugt ?n812 ?n815))
+(let (?n817 (zero_extend[3] ?n373))
+(let (?n818 (bvashr ?n113 ?n817))
+(flet ($n819 (bvule ?n818 ?n634))
+(flet ($n820 (not $n819))
+(flet ($n821 (or $n811 $n816 $n820))
+(let (?n822 (sign_extend[3] ?n111))
+(let (?n823 (bvlshr ?n210 ?n46))
+(let (?n824 (bvadd v4 ?n823))
+(flet ($n825 (bvule ?n822 ?n824))
+(let (?n826 (ite $n825 ?n8 ?n9))
+(flet ($n827 (distinct ?n21 ?n826))
+(let (?n828 (extract[2:2] ?n56))
+(flet ($n829 (= ?n8 ?n828))
+(let (?n830 (zero_extend[3] ?n82))
+(let (?n831 (bvxor v4 ?n830))
+(let (?n832 (ite $n829 ?n142 ?n831))
+(let (?n833 (zero_extend[0] ?n832))
+(flet ($n834 (bvule ?n833 ?n711))
+(flet ($n835 (not $n834))
+(flet ($n836 (not $n358))
+(flet ($n837 (or $n827 $n835 $n836))
+(let (?n838 (sign_extend[3] ?n365))
+(let (?n839 (bvnand ?n6 ?n838))
+(let (?n840 (bvadd ?n570 ?n839))
+(let (?n841 (bvnot ?n208))
+(let (?n842 (sign_extend[3] ?n841))
+(flet ($n843 (= ?n840 ?n842))
+(let (?n844 (zero_extend[3] ?n445))
+(flet ($n845 (bvsgt ?n844 ?n703))
+(let (?n846 (sign_extend[3] ?n323))
+(let (?n847 (bvashr ?n65 ?n529))
+(let (?n848 (zero_extend[3] ?n482))
+(let (?n849 (bvshl ?n100 ?n848))
+(let (?n850 (bvor ?n847 ?n849))
+(flet ($n851 (bvsgt ?n846 ?n850))
+(flet ($n852 (not $n851))
+(flet ($n853 (or $n843 $n845 $n852))
+(flet ($n854 (bvult ?n23 ?n30))
+(let (?n855 (sign_extend[3] ?n790))
+(let (?n856 (bvcomp ?n47 ?n855))
+(let (?n857 (zero_extend[3] ?n856))
+(flet ($n858 (bvuge ?n651 ?n857))
+(let (?n859 (ite $n858 ?n8 ?n9))
+(let (?n860 (bvshl ?n479 ?n859))
+(flet ($n861 (bvult ?n860 ?n826))
+(let (?n862 (bvneg ?n359))
+(flet ($n863 (bvsge ?n513 ?n862))
+(flet ($n864 (not $n863))
+(flet ($n865 (or $n854 $n861 $n864))
+(let (?n866 (zero_extend[3] ?n217))
+(flet ($n867 (bvslt ?n168 ?n866))
+(let (?n868 (sign_extend[3] ?n549))
+(let (?n869 (bvcomp ?n126 ?n868))
+(let (?n870 (bvlshr ?n869 ?n291))
+(flet ($n871 (= ?n102 ?n870))
+(flet ($n872 (not $n871))
+(let (?n873 (bvsub ?n330 ?n503))
+(let (?n874 (bvor ?n212 ?n873))
+(flet ($n875 (bvuge ?n874 ?n614))
+(flet ($n876 (not $n875))
+(flet ($n877 (or $n867 $n872 $n876))
+(let (?n878 (bvshl ?n360 ?n156))
+(flet ($n879 (bvsge ?n213 ?n878))
+(let (?n880 (ite $n879 ?n8 ?n9))
+(let (?n881 (sign_extend[3] ?n14))
+(let (?n882 (bvcomp v3 ?n881))
+(flet ($n883 (bvule ?n880 ?n882))
+(let (?n884 (bvneg ?n317))
+(let (?n885 (sign_extend[3] ?n491))
+(flet ($n886 (bvugt ?n885 ?n318))
+(let (?n887 (ite $n886 ?n8 ?n9))
+(flet ($n888 (distinct ?n884 ?n887))
+(flet ($n889 (not $n888))
+(let (?n890 (sign_extend[2] ?n280))
+(flet ($n891 (bvsge ?n57 ?n890))
+(let (?n892 (ite $n891 ?n8 ?n9))
+(let (?n893 (bvneg ?n314))
+(flet ($n894 (bvslt ?n892 ?n893))
+(flet ($n895 (not $n894))
+(flet ($n896 (or $n883 $n889 $n895))
+(let (?n897 (sign_extend[3] ?n189))
+(flet ($n898 (bvuge ?n108 ?n897))
+(flet ($n899 (not $n898))
+(let (?n900 (zero_extend[1] ?n249))
+(flet ($n901 (bvsgt ?n74 ?n900))
+(flet ($n902 (not $n901))
+(flet ($n903 (or $n555 $n899 $n902))
+(flet ($n904 (bvsle ?n744 ?n184))
+(flet ($n905 (distinct ?n55 ?n356))
+(flet ($n906 (bvule ?n373 ?n892))
+(flet ($n907 (not $n906))
+(flet ($n908 (or $n904 $n905 $n907))
+(flet ($n909 (distinct ?n410 ?n165))
+(let (?n910 (ite $n909 ?n8 ?n9))
+(let (?n911 (sign_extend[3] ?n910))
+(flet ($n912 (bvult ?n168 ?n911))
+(let (?n913 (bvneg ?n325))
+(flet ($n914 (bvslt ?n654 ?n913))
+(flet ($n915 (not $n914))
+(let (?n916 (zero_extend[1] ?n765))
+(flet ($n917 (bvsgt ?n916 ?n3))
+(let (?n918 (ite $n917 ?n8 ?n9))
+(let (?n919 (sign_extend[3] ?n918))
+(let (?n920 (bvadd ?n42 v0))
+(flet ($n921 (bvuge ?n919 ?n920))
+(flet ($n922 (not $n921))
+(flet ($n923 (or $n912 $n915 $n922))
+(let (?n924 (sign_extend[3] ?n438))
+(let (?n925 (bvlshr ?n924 ?n238))
+(let (?n926 (zero_extend[3] ?n279))
+(flet ($n927 (bvslt ?n925 ?n926))
+(let (?n928 (bvneg ?n55))
+(flet ($n929 (bvugt ?n179 ?n928))
+(flet ($n930 (not $n929))
+(let (?n931 (zero_extend[3] ?n841))
+(flet ($n932 (bvslt ?n179 ?n931))
+(let (?n933 (ite $n932 ?n8 ?n9))
+(let (?n934 (sign_extend[3] ?n933))
+(let (?n935 (bvand ?n514 ?n934))
+(flet ($n936 (bvult v1 ?n935))
+(flet ($n937 (not $n936))
+(flet ($n938 (or $n927 $n930 $n937))
+(flet ($n939 (distinct ?n65 ?n138))
+(let (?n940 (ite $n939 ?n8 ?n9))
+(let (?n941 (zero_extend[3] ?n940))
+(flet ($n942 (bvule ?n677 ?n941))
+(let (?n943 (ite $n942 ?n8 ?n9))
+(flet ($n944 (bvuge ?n240 ?n943))
+(flet ($n945 (bvule ?n55 ?n145))
+(flet ($n946 (not $n945))
+(flet ($n947 (or $n378 $n944 $n946))
+(let (?n948 (sign_extend[1] ?n483))
+(flet ($n949 (= ?n78 ?n948))
+(let (?n950 (ite $n949 ?n8 ?n9))
+(let (?n951 (zero_extend[3] ?n950))
+(flet ($n952 (bvule ?n6 ?n951))
+(flet ($n953 (not $n952))
+(flet ($n954 (or $n456 $n287 $n953))
+(let (?n955 (bvlshr ?n85 ?n466))
+(let (?n956 (zero_extend[1] ?n955))
+(flet ($n957 (bvsgt ?n280 ?n956))
+(let (?n958 (zero_extend[0] ?n89))
+(let (?n959 (bvmul ?n958 ?n452))
+(let (?n960 (sign_extend[3] ?n959))
+(flet ($n961 (bvuge ?n960 ?n885))
+(flet ($n962 (not $n961))
+(flet ($n963 (bvugt ?n460 ?n156))
+(flet ($n964 (not $n963))
+(flet ($n965 (or $n957 $n962 $n964))
+(let (?n966 (zero_extend[3] ?n92))
+(flet ($n967 (bvuge ?n966 ?n504))
+(flet ($n968 (bvuge ?n400 ?n334))
+(flet ($n969 (bvult ?n881 v1))
+(flet ($n970 (not $n969))
+(flet ($n971 (or $n967 $n968 $n970))
+(flet ($n972 (bvult ?n18 ?n486))
+(let (?n973 (sign_extend[3] ?n506))
+(flet ($n974 (bvule ?n371 ?n973))
+(let (?n975 (ite $n974 ?n8 ?n9))
+(flet ($n976 (= ?n584 ?n975))
+(let (?n977 (sign_extend[3] ?n802))
+(flet ($n978 (bvsge ?n977 ?n353))
+(flet ($n979 (not $n978))
+(flet ($n980 (or $n972 $n976 $n979))
+(flet ($n981 (bvult ?n444 ?n178))
+(flet ($n982 (not $n981))
+(let (?n983 (bvsub ?n11 ?n765))
+(flet ($n984 (bvuge ?n85 ?n983))
+(flet ($n985 (not $n984))
+(flet ($n986 (or $n571 $n982 $n985))
+(let (?n987 (zero_extend[3] ?n880))
+(let (?n988 (zero_extend[3] ?n342))
+(flet ($n989 (bvsgt ?n987 ?n988))
+(let (?n990 (ite $n989 ?n8 ?n9))
+(let (?n991 (zero_extend[1] ?n990))
+(flet ($n992 (distinct ?n473 ?n991))
+(flet ($n993 (bvsgt ?n435 ?n638))
+(let (?n994 (ite $n993 ?n8 ?n9))
+(let (?n995 (sign_extend[1] ?n994))
+(flet ($n996 (bvslt ?n995 ?n715))
+(flet ($n997 (not $n996))
+(flet ($n998 (bvsge ?n765 ?n892))
+(flet ($n999 (not $n998))
+(flet ($n1000 (or $n992 $n997 $n999))
+(let (?n1001 (rotate_left[1] ?n74))
+(let (?n1002 (sign_extend[2] ?n1001))
+(flet ($n1003 (bvuge v0 ?n1002))
+(flet ($n1004 (bvsge ?n569 ?n331))
+(let (?n1005 (ite $n1004 ?n8 ?n9))
+(let (?n1006 (sign_extend[3] ?n1005))
+(flet ($n1007 (bvult ?n107 ?n1006))
+(let (?n1008 (ite $n1007 ?n8 ?n9))
+(flet ($n1009 (bvule ?n1008 ?n466))
+(let (?n1010 (sign_extend[3] ?n102))
+(flet ($n1011 (bvsle ?n34 ?n1010))
+(let (?n1012 (ite $n1011 ?n8 ?n9))
+(let (?n1013 (zero_extend[3] ?n1012))
+(let (?n1014 (extract[0:0] ?n113))
+(flet ($n1015 (= ?n8 ?n1014))
+(let (?n1016 (zero_extend[3] ?n132))
+(let (?n1017 (ite $n1015 ?n1016 ?n168))
+(flet ($n1018 (bvuge ?n1013 ?n1017))
+(flet ($n1019 (not $n1018))
+(flet ($n1020 (or $n1003 $n1009 $n1019))
+(flet ($n1021 (bvsgt ?n694 ?n570))
+(let (?n1022 (sign_extend[1] ?n245))
+(flet ($n1023 (distinct ?n30 ?n1022))
+(flet ($n1024 (bvsgt ?n487 ?n164))
+(flet ($n1025 (not $n1024))
+(flet ($n1026 (or $n1021 $n1023 $n1025))
+(let (?n1027 (sign_extend[1] ?n82))
+(flet ($n1028 (bvslt ?n716 ?n1027))
+(flet ($n1029 (bvule ?n833 ?n122))
+(flet ($n1030 (not $n1029))
+(flet ($n1031 (or $n1028 $n808 $n1030))
+(flet ($n1032 (bvslt ?n826 ?n240))
+(let (?n1033 (sign_extend[0] ?n47))
+(let (?n1034 (bvneg ?n166))
+(flet ($n1035 (bvslt ?n1033 ?n1034))
+(flet ($n1036 (or $n1032 $n1035 $n770))
+(let (?n1037 (zero_extend[3] ?n616))
+(let (?n1038 (extract[3:0] ?n100))
+(flet ($n1039 (bvslt ?n1037 ?n1038))
+(flet ($n1040 (= ?n610 ?n880))
+(flet ($n1041 (not $n1040))
+(flet ($n1042 (or $n944 $n1039 $n1041))
+(flet ($n1043 (bvule ?n495 ?n841))
+(flet ($n1044 (= ?n54 ?n99))
+(flet ($n1045 (bvuge ?n61 ?n823))
+(flet ($n1046 (or $n1043 $n1044 $n1045))
+(let (?n1047 (zero_extend[3] ?n197))
+(let (?n1048 (bvnot ?n410))
+(flet ($n1049 (bvuge ?n1047 ?n1048))
+(flet ($n1050 (bvsle ?n219 ?n958))
+(flet ($n1051 (or $n1049 $n981 $n1050))
+(let (?n1052 (sign_extend[3] ?n487))
+(let (?n1053 (bvsub ?n441 ?n33))
+(flet ($n1054 (bvsle ?n1052 ?n1053))
+(flet ($n1055 (bvslt ?n603 ?n204))
+(flet ($n1056 (not $n1055))
+(flet ($n1057 (bvule ?n1048 ?n488))
+(flet ($n1058 (not $n1057))
+(flet ($n1059 (or $n1054 $n1056 $n1058))
+(flet ($n1060 (bvsle ?n878 ?n167))
+(flet ($n1061 (bvuge ?n30 ?n50))
+(let (?n1062 (ite $n1061 ?n8 ?n9))
+(let (?n1063 (sign_extend[3] ?n1062))
+(flet ($n1064 (bvuge ?n534 ?n1063))
+(flet ($n1065 (= ?n152 ?n412))
+(let (?n1066 (ite $n1065 ?n8 ?n9))
+(let (?n1067 (zero_extend[3] ?n1066))
+(flet ($n1068 (bvsle ?n1067 ?n179))
+(flet ($n1069 (not $n1068))
+(flet ($n1070 (or $n1060 $n1064 $n1069))
+(flet ($n1071 (bvule v3 ?n112))
+(let (?n1072 (ite $n1071 ?n8 ?n9))
+(flet ($n1073 (bvugt ?n1072 ?n243))
+(flet ($n1074 (bvsle ?n237 ?n606))
+(let (?n1075 (sign_extend[3] ?n893))
+(let (?n1076 (bvxnor ?n213 ?n1075))
+(let (?n1077 (sign_extend[3] ?n975))
+(let (?n1078 (bvashr ?n1076 ?n1077))
+(let (?n1079 (zero_extend[3] ?n228))
+(flet ($n1080 (bvsle ?n179 ?n1079))
+(let (?n1081 (ite $n1080 ?n8 ?n9))
+(let (?n1082 (sign_extend[3] ?n1081))
+(flet ($n1083 (bvugt ?n1076 ?n1082))
+(let (?n1084 (ite $n1083 ?n8 ?n9))
+(let (?n1085 (sign_extend[3] ?n1084))
+(flet ($n1086 (bvsge ?n1078 ?n1085))
+(flet ($n1087 (not $n1086))
+(flet ($n1088 (or $n1073 $n1074 $n1087))
+(flet ($n1089 (bvsgt ?n97 ?n933))
+(let (?n1090 (ite $n1089 ?n8 ?n9))
+(let (?n1091 (zero_extend[3] ?n1090))
+(flet ($n1092 (bvule ?n108 ?n1091))
+(let (?n1093 (ite $n1092 ?n8 ?n9))
+(flet ($n1094 (bvult ?n1093 ?n229))
+(let (?n1095 (zero_extend[3] ?n39))
+(flet ($n1096 (bvslt ?n530 ?n1095))
+(let (?n1097 (ite $n1096 ?n8 ?n9))
+(let (?n1098 (sign_extend[1] ?n1097))
+(flet ($n1099 (bvsge ?n280 ?n1098))
+(let (?n1100 (bvmul ?n130 ?n849))
+(flet ($n1101 (bvsge ?n289 ?n1100))
+(flet ($n1102 (not $n1101))
+(flet ($n1103 (or $n1094 $n1099 $n1102))
+(let (?n1104 (repeat[1] ?n126))
+(flet ($n1105 (bvsge ?n1104 ?n332))
+(let (?n1106 (zero_extend[3] ?n325))
+(flet ($n1107 (distinct ?n823 ?n1106))
+(let (?n1108 (zero_extend[3] ?n595))
+(let (?n1109 (bvxnor ?n410 ?n205))
+(flet ($n1110 (bvult ?n1108 ?n1109))
+(flet ($n1111 (or $n1105 $n1107 $n1110))
+(flet ($n1112 (bvslt ?n720 ?n704))
+(flet ($n1113 (bvsle ?n1109 ?n444))
+(let (?n1114 (zero_extend[2] ?n82))
+(let (?n1115 (zero_extend[1] ?n1114))
+(flet ($n1116 (bvule ?n288 ?n1115))
+(flet ($n1117 (not $n1116))
+(flet ($n1118 (or $n1112 $n1113 $n1117))
+(flet ($n1119 (bvuge ?n373 ?n749))
+(let (?n1120 (ite $n1119 ?n8 ?n9))
+(flet ($n1121 (bvsle ?n1120 ?n635))
+(let (?n1122 (bvcomp v1 ?n620))
+(let (?n1123 (bvxnor ?n435 ?n1122))
+(flet ($n1124 (bvsgt ?n826 ?n1123))
+(flet ($n1125 (not $n1124))
+(flet ($n1126 (bvsgt ?n294 ?n543))
+(let (?n1127 (ite $n1126 ?n8 ?n9))
+(flet ($n1128 (distinct ?n440 ?n1127))
+(flet ($n1129 (not $n1128))
+(flet ($n1130 (or $n1121 $n1125 $n1129))
+(let (?n1131 (bvneg ?n665))
+(flet ($n1132 (bvugt ?n160 ?n1131))
+(let (?n1133 (zero_extend[0] ?n211))
+(flet ($n1134 (bvugt ?n1133 ?n54))
+(flet ($n1135 (not $n1134))
+(flet ($n1136 (or $n1132 $n889 $n1135))
+(flet ($n1137 (bvuge ?n432 ?n765))
+(flet ($n1138 (bvsge ?n121 ?n67))
+(flet ($n1139 (not $n1138))
+(let (?n1140 (sign_extend[3] ?n1012))
+(flet ($n1141 (distinct ?n100 ?n1140))
+(flet ($n1142 (not $n1141))
+(flet ($n1143 (or $n1137 $n1139 $n1142))
+(let (?n1144 (zero_extend[2] ?n184))
+(let (?n1145 (zero_extend[1] ?n1144))
+(flet ($n1146 (bvult ?n1145 ?n454))
+(let (?n1147 (sign_extend[3] ?n185))
+(let (?n1148 (zero_extend[3] ?n240))
+(let (?n1149 (bvshl ?n213 ?n1148))
+(flet ($n1150 (bvsgt ?n1147 ?n1149))
+(flet ($n1151 (bvsle ?n472 ?n177))
+(flet ($n1152 (not $n1151))
+(flet ($n1153 (or $n1146 $n1150 $n1152))
+(let (?n1154 (bvlshr ?n106 ?n87))
+(let (?n1155 (bvnot ?n1154))
+(flet ($n1156 (bvsge ?n142 ?n1155))
+(let (?n1157 (bvnot ?n67))
+(let (?n1158 (zero_extend[3] ?n1157))
+(flet ($n1159 (bvsgt ?n534 ?n1158))
+(flet ($n1160 (not $n1159))
+(flet ($n1161 (or $n625 $n1156 $n1160))
+(flet ($n1162 (bvsgt ?n950 ?n215))
+(flet ($n1163 (not $n1162))
+(flet ($n1164 (bvslt ?n156 ?n988))
+(flet ($n1165 (not $n1164))
+(let (?n1166 (concat ?n325 ?n716))
+(let (?n1167 (sign_extend[2] ?n1093))
+(flet ($n1168 (= ?n1166 ?n1167))
+(flet ($n1169 (not $n1168))
+(flet ($n1170 (or $n1163 $n1165 $n1169))
+(let (?n1171 (sign_extend[2] ?n603))
+(flet ($n1172 (bvsge ?n1171 ?n755))
+(flet ($n1173 (bvugt ?n640 ?n168))
+(flet ($n1174 (not $n1173))
+(flet ($n1175 (or $n378 $n1172 $n1174))
+(flet ($n1176 (= ?n325 ?n1093))
+(let (?n1177 (sign_extend[3] ?n373))
+(flet ($n1178 (distinct ?n288 ?n1177))
+(flet ($n1179 (bvsgt ?n1157 ?n222))
+(flet ($n1180 (not $n1179))
+(flet ($n1181 (or $n1176 $n1178 $n1180))
+(flet ($n1182 (bvuge ?n645 ?n507))
+(let (?n1183 (zero_extend[1] ?n208))
+(let (?n1184 (bvsub ?n3 ?n1183))
+(let (?n1185 (zero_extend[1] ?n729))
+(flet ($n1186 (= ?n1184 ?n1185))
+(flet ($n1187 (bvsgt ?n706 ?n472))
+(flet ($n1188 (not $n1187))
+(flet ($n1189 (or $n1182 $n1186 $n1188))
+(flet ($n1190 (bvsle ?n155 ?n839))
+(let (?n1191 (ite $n1190 ?n8 ?n9))
+(flet ($n1192 (= ?n427 ?n1191))
+(let (?n1193 (ite $n1192 ?n8 ?n9))
+(flet ($n1194 (distinct ?n893 ?n1193))
+(flet ($n1195 (not $n1194))
+(flet ($n1196 (bvuge ?n454 ?n157))
+(let (?n1197 (ite $n1196 ?n8 ?n9))
+(let (?n1198 (sign_extend[3] ?n1197))
+(flet ($n1199 (bvult ?n1198 ?n407))
+(flet ($n1200 (not $n1199))
+(flet ($n1201 (or $n726 $n1195 $n1200))
+(let (?n1202 (rotate_left[0] ?n319))
+(flet ($n1203 (bvugt ?n47 ?n1202))
+(flet ($n1204 (bvuge ?n61 ?n179))
+(flet ($n1205 (not $n1204))
+(let (?n1206 (bvor ?n6 ?n130))
+(flet ($n1207 (bvugt ?n472 ?n1206))
+(flet ($n1208 (not $n1207))
+(flet ($n1209 (or $n1203 $n1205 $n1208))
+(flet ($n1210 (bvule ?n1155 ?n526))
+(let (?n1211 (sign_extend[3] ?n448))
+(let (?n1212 (bvnot ?n925))
+(flet ($n1213 (bvugt ?n1211 ?n1212))
+(flet ($n1214 (bvsge ?n109 ?n151))
+(flet ($n1215 (not $n1214))
+(flet ($n1216 (or $n1210 $n1213 $n1215))
+(flet ($n1217 (bvuge ?n379 ?n370))
+(let (?n1218 (zero_extend[3] ?n233))
+(flet ($n1219 (bvsgt ?n1218 ?n167))
+(let (?n1220 (bvmul ?n11 ?n111))
+(let (?n1221 (sign_extend[3] ?n1220))
+(flet ($n1222 (bvult ?n1221 ?n113))
+(flet ($n1223 (not $n1222))
+(flet ($n1224 (or $n1217 $n1219 $n1223))
+(let (?n1225 (rotate_left[0] ?n491))
+(flet ($n1226 (bvsge ?n366 ?n1225))
+(flet ($n1227 (bvsge ?n179 ?n680))
+(flet ($n1228 (not $n1227))
+(flet ($n1229 (or $n1226 $n1112 $n1228))
+(flet ($n1230 (= ?n54 ?n1109))
+(flet ($n1231 (not $n1003))
+(flet ($n1232 (bvule ?n63 ?n365))
+(flet ($n1233 (not $n1232))
+(flet ($n1234 (or $n1230 $n1231 $n1233))
+(let (?n1235 (zero_extend[3] ?n219))
+(flet ($n1236 (bvsle ?n1235 ?n100))
+(flet ($n1237 (bvsgt ?n217 ?n943))
+(flet ($n1238 (not $n1237))
+(let (?n1239 (zero_extend[1] ?n580))
+(flet ($n1240 (bvuge ?n403 ?n1239))
+(flet ($n1241 (not $n1240))
+(flet ($n1242 (or $n1236 $n1238 $n1241))
+(let (?n1243 (zero_extend[3] ?n510))
+(let (?n1244 (bvxnor ?n130 ?n1243))
+(flet ($n1245 (bvule ?n1244 ?n621))
+(flet ($n1246 (bvule ?n569 ?n178))
+(flet ($n1247 (bvslt ?n133 ?n334))
+(flet ($n1248 (not $n1247))
+(flet ($n1249 (or $n1245 $n1246 $n1248))
+(let (?n1250 (rotate_right[1] ?n592))
+(flet ($n1251 (distinct ?n696 ?n1250))
+(flet ($n1252 (not $n1251))
+(flet ($n1253 (not $n1213))
+(flet ($n1254 (or $n1199 $n1252 $n1253))
+(flet ($n1255 (bvsgt ?n225 ?n311))
+(let (?n1256 (sign_extend[3] ?n859))
+(flet ($n1257 (bvult ?n1256 ?n849))
+(flet ($n1258 (not $n1257))
+(let (?n1259 (sign_extend[0] ?n393))
+(flet ($n1260 (bvuge ?n534 ?n1259))
+(flet ($n1261 (not $n1260))
+(flet ($n1262 (or $n1255 $n1258 $n1261))
+(let (?n1263 (sign_extend[3] ?n36))
+(flet ($n1264 (bvsge ?n568 ?n1263))
+(let (?n1265 (rotate_right[0] ?n549))
+(let (?n1266 (zero_extend[3] ?n1265))
+(flet ($n1267 (= ?n34 ?n1266))
+(flet ($n1268 (not $n1267))
+(let (?n1269 (zero_extend[0] ?n288))
+(let (?n1270 (sign_extend[3] ?n1123))
+(flet ($n1271 (bvult ?n1269 ?n1270))
+(flet ($n1272 (not $n1271))
+(flet ($n1273 (or $n1264 $n1268 $n1272))
+(flet ($n1274 (bvsle ?n833 ?n238))
+(flet ($n1275 (not $n1274))
+(flet ($n1276 (bvsgt ?n219 ?n18))
+(let (?n1277 (ite $n1276 ?n8 ?n9))
+(flet ($n1278 (bvslt ?n1066 ?n1277))
+(flet ($n1279 (not $n1278))
+(flet ($n1280 (bvugt ?n208 ?n1120))
+(flet ($n1281 (not $n1280))
+(flet ($n1282 (or $n1275 $n1279 $n1281))
+(let (?n1283 (sign_extend[0] ?n649))
+(let (?n1284 (extract[0:0] ?n1283))
+(let (?n1285 (sign_extend[3] ?n1284))
+(flet ($n1286 (bvult ?n333 ?n1285))
+(let (?n1287 (sign_extend[3] ?n532))
+(flet ($n1288 (bvslt ?n1287 ?n878))
+(flet ($n1289 (not $n1288))
+(let (?n1290 (rotate_right[1] ?n334))
+(flet ($n1291 (bvult ?n1290 ?n1063))
+(flet ($n1292 (not $n1291))
+(flet ($n1293 (or $n1286 $n1289 $n1292))
+(flet ($n1294 (= ?n202 ?n703))
+(flet ($n1295 (or $n1294 $n912 $n670))
+(let (?n1296 (sign_extend[3] ?n215))
+(let (?n1297 (bvadd ?n928 ?n145))
+(flet ($n1298 (bvugt ?n1296 ?n1297))
+(flet ($n1299 (bvult ?n496 ?n64))
+(flet ($n1300 (or $n1298 $n117 $n1299))
+(let (?n1301 (bvneg ?n776))
+(let (?n1302 (sign_extend[1] ?n59))
+(flet ($n1303 (bvsle ?n1301 ?n1302))
+(flet ($n1304 (bvsge v1 ?n332))
+(flet ($n1305 (not $n1304))
+(flet ($n1306 (or $n1303 $n1222 $n1305))
+(let (?n1307 (zero_extend[3] ?n171))
+(let (?n1308 (bvadd ?n162 ?n1307))
+(flet ($n1309 (bvsgt ?n1308 ?n277))
+(flet ($n1310 (not $n1309))
+(flet ($n1311 (or $n827 $n805 $n1310))
+(let (?n1312 (zero_extend[3] ?n790))
+(flet ($n1313 (bvslt ?n1312 ?n332))
+(let (?n1314 (bvand ?n222 ?n228))
+(flet ($n1315 (distinct ?n1097 ?n1314))
+(flet ($n1316 (bvsge ?n411 ?n697))
+(flet ($n1317 (or $n1313 $n1315 $n1316))
+(let (?n1318 (sign_extend[3] ?n422))
+(flet ($n1319 (distinct ?n407 ?n1318))
+(let (?n1320 (zero_extend[3] ?n494))
+(flet ($n1321 (bvugt ?n651 ?n1320))
+(flet ($n1322 (not $n1321))
+(flet ($n1323 (or $n1319 $n1255 $n1322))
+(let (?n1324 (sign_extend[1] ?n448))
+(flet ($n1325 (distinct ?n1001 ?n1324))
+(let (?n1326 (sign_extend[3] ?n225))
+(flet ($n1327 (bvslt ?n5 ?n1326))
+(let (?n1328 (zero_extend[3] ?n1283))
+(flet ($n1329 (= ?n407 ?n1328))
+(flet ($n1330 (not $n1329))
+(flet ($n1331 (or $n1325 $n1327 $n1330))
+(let (?n1332 (zero_extend[3] ?n294))
+(flet ($n1333 (= ?n874 ?n1332))
+(let (?n1334 (ite $n1333 ?n8 ?n9))
+(flet ($n1335 (bvult ?n869 ?n1334))
+(let (?n1336 (zero_extend[3] ?n466))
+(flet ($n1337 (bvule ?n60 ?n1336))
+(flet ($n1338 (not $n1337))
+(flet ($n1339 (or $n1335 $n175 $n1338))
+(flet ($n1340 (bvslt ?n371 ?n455))
+(flet ($n1341 (bvsge ?n86 ?n285))
+(flet ($n1342 (or $n1340 $n1341 $n982))
+(let (?n1343 (bvcomp ?n157 ?n857))
+(let (?n1344 (sign_extend[3] ?n1343))
+(flet ($n1345 (= ?n399 ?n1344))
+(flet ($n1346 (bvule ?n665 ?n495))
+(let (?n1347 (sign_extend[3] ?n799))
+(flet ($n1348 (bvule ?n1347 ?n935))
+(flet ($n1349 (not $n1348))
+(flet ($n1350 (or $n1345 $n1346 $n1349))
+(flet ($n1351 (bvsge ?n294 ?n1120))
+(let (?n1352 (bvadd ?n330 ?n832))
+(let (?n1353 (bvnor ?n823 ?n1352))
+(flet ($n1354 (bvsle ?n472 ?n1353))
+(flet ($n1355 (not $n1354))
+(flet ($n1356 (or $n1303 $n1351 $n1355))
+(let (?n1357 (repeat[1] ?n592))
+(flet ($n1358 (distinct ?n925 ?n1357))
+(let (?n1359 (ite $n1358 ?n8 ?n9))
+(flet ($n1360 (bvule ?n884 ?n1359))
+(let (?n1361 (sign_extend[1] ?n29))
+(flet ($n1362 (bvule ?n1361 ?n138))
+(let (?n1363 (sign_extend[3] ?n940))
+(flet ($n1364 (= ?n1259 ?n1363))
+(flet ($n1365 (not $n1364))
+(flet ($n1366 (or $n1360 $n1362 $n1365))
+(let (?n1367 (rotate_left[0] ?n178))
+(flet ($n1368 (bvsgt ?n321 ?n1367))
+(let (?n1369 (rotate_right[0] ?n573))
+(let (?n1370 (sign_extend[3] ?n1369))
+(flet ($n1371 (bvsgt ?n1370 ?n1033))
+(let (?n1372 (zero_extend[1] ?n755))
+(flet ($n1373 (bvugt ?n162 ?n1372))
+(flet ($n1374 (or $n1368 $n1371 $n1373))
+(flet ($n1375 (bvuge ?n530 ?n65))
+(let (?n1376 (ite $n1375 ?n8 ?n9))
+(let (?n1377 (sign_extend[3] ?n1376))
+(flet ($n1378 (bvsgt ?n1377 ?n44))
+(flet ($n1379 (not $n1378))
+(let (?n1380 (sign_extend[3] ?n603))
+(let (?n1381 (extract[3:3] ?n210))
+(flet ($n1382 (= ?n8 ?n1381))
+(let (?n1383 (zero_extend[3] ?n638))
+(let (?n1384 (ite $n1382 ?n1383 ?n1154))
+(flet ($n1385 (bvult ?n1380 ?n1384))
+(flet ($n1386 (not $n1385))
+(flet ($n1387 (or $n863 $n1379 $n1386))
+(flet ($n1388 (bvslt ?n389 ?n1038))
+(flet ($n1389 (bvugt ?n225 ?n705))
+(flet ($n1390 (not $n1389))
+(flet ($n1391 (or $n1388 $n1028 $n1390))
+(flet ($n1392 (bvule ?n640 ?n410))
+(let (?n1393 (ite $n1392 ?n8 ?n9))
+(let (?n1394 (zero_extend[2] ?n1393))
+(flet ($n1395 (bvugt ?n1394 ?n1144))
+(flet ($n1396 (bvsle ?n803 ?n39))
+(let (?n1397 (sign_extend[3] ?n70))
+(flet ($n1398 (bvsgt ?n455 ?n1397))
+(flet ($n1399 (not $n1398))
+(flet ($n1400 (or $n1395 $n1396 $n1399))
+(flet ($n1401 (distinct ?n272 ?n1090))
+(let (?n1402 (zero_extend[3] ?n543))
+(let (?n1403 (bvlshr ?n138 ?n1402))
+(flet ($n1404 (= ?n1403 ?n1047))
+(flet ($n1405 (not $n1404))
+(flet ($n1406 (or $n1401 $n854 $n1405))
+(flet ($n1407 (or $n1395 $n784 $n1056))
+(let (?n1408 (zero_extend[3] ?n85))
+(flet ($n1409 (bvsle ?n1408 ?n862))
+(flet ($n1410 (bvuge ?n230 ?n486))
+(let (?n1411 (sign_extend[3] ?n550))
+(flet ($n1412 (= ?n575 ?n1411))
+(flet ($n1413 (not $n1412))
+(flet ($n1414 (or $n1409 $n1410 $n1413))
+(let (?n1415 (zero_extend[3] ?n610))
+(flet ($n1416 (= ?n359 ?n1415))
+(flet ($n1417 (bvslt ?n675 ?n233))
+(flet ($n1418 (not $n1417))
+(flet ($n1419 (bvule ?n1277 ?n892))
+(flet ($n1420 (not $n1419))
+(flet ($n1421 (or $n1416 $n1418 $n1420))
+(let (?n1422 (sign_extend[3] ?n500))
+(flet ($n1423 (bvuge ?n1155 ?n1422))
+(flet ($n1424 (bvslt ?n15 ?n1206))
+(flet ($n1425 (or $n1423 $n1424 $n561))
+(flet ($n1426 (bvugt ?n464 ?n136))
+(flet ($n1427 (distinct ?n823 ?n545))
+(flet ($n1428 (bvsgt ?n184 ?n339))
+(flet ($n1429 (or $n1426 $n1427 $n1428))
+(flet ($n1430 (bvsle ?n530 ?n319))
+(flet ($n1431 (= ?n282 ?n958))
+(flet ($n1432 (not $n1431))
+(flet ($n1433 (or $n1430 $n1271 $n1432))
+(flet ($n1434 (bvult ?n90 ?n162))
+(let (?n1435 (ite $n1434 ?n8 ?n9))
+(let (?n1436 (sign_extend[0] ?n1435))
+(let (?n1437 (zero_extend[2] ?n1436))
+(flet ($n1438 (= ?n383 ?n1437))
+(let (?n1439 (sign_extend[2] ?n611))
+(flet ($n1440 (bvsgt ?n1439 ?n146))
+(let (?n1441 (rotate_right[0] ?n753))
+(flet ($n1442 (bvuge ?n1441 ?n975))
+(flet ($n1443 (not $n1442))
+(flet ($n1444 (or $n1438 $n1440 $n1443))
+(flet ($n1445 (bvsgt ?n419 ?n138))
+(let (?n1446 (ite $n1445 ?n8 ?n9))
+(let (?n1447 (sign_extend[2] ?n1446))
+(flet ($n1448 (bvsle ?n1447 ?n26))
+(flet ($n1449 (bvuge ?n410 ?n108))
+(let (?n1450 (ite $n1449 ?n8 ?n9))
+(flet ($n1451 (bvsgt ?n1450 ?n603))
+(flet ($n1452 (bvule ?n494 ?n375))
+(flet ($n1453 (not $n1452))
+(flet ($n1454 (or $n1448 $n1451 $n1453))
+(flet ($n1455 (not $n1438))
+(let (?n1456 (bvlshr ?n233 ?n1197))
+(flet ($n1457 (bvsle ?n85 ?n1456))
+(flet ($n1458 (not $n1457))
+(flet ($n1459 (bvugt ?n375 ?n479))
+(flet ($n1460 (not $n1459))
+(flet ($n1461 (or $n1455 $n1458 $n1460))
+(let (?n1462 (bvcomp ?n36 ?n483))
+(flet ($n1463 (bvsgt ?n1462 ?n443))
+(flet ($n1464 (not $n1325))
+(flet ($n1465 (distinct ?n352 ?n881))
+(let (?n1466 (ite $n1465 ?n8 ?n9))
+(let (?n1467 (sign_extend[3] ?n1466))
+(flet ($n1468 (bvslt ?n1467 ?n108))
+(flet ($n1469 (not $n1468))
+(flet ($n1470 (or $n1463 $n1464 $n1469))
+(let (?n1471 (zero_extend[2] ?n1184))
+(flet ($n1472 (= ?n212 ?n1471))
+(flet ($n1473 (bvult ?n975 ?n222))
+(flet ($n1474 (or $n1472 $n1473 $n1274))
+(let (?n1475 (sign_extend[1] ?n228))
+(flet ($n1476 (bvule ?n403 ?n1475))
+(flet ($n1477 (distinct v5 ?n186))
+(flet ($n1478 (not $n1477))
+(flet ($n1479 (bvule ?n1369 ?n339))
+(let (?n1480 (ite $n1479 ?n8 ?n9))
+(let (?n1481 (zero_extend[3] ?n1480))
+(flet ($n1482 (bvsle ?n1481 ?n258))
+(flet ($n1483 (not $n1482))
+(flet ($n1484 (or $n1476 $n1478 $n1483))
+(let (?n1485 (zero_extend[3] ?n116))
+(let (?n1486 (bvxnor ?n748 ?n1485))
+(let (?n1487 (bvmul ?n225 ?n802))
+(let (?n1488 (zero_extend[3] ?n1487))
+(flet ($n1489 (bvsgt ?n1486 ?n1488))
+(flet ($n1490 (not $n1489))
+(let (?n1491 (sign_extend[3] ?n443))
+(flet ($n1492 (bvugt ?n1486 ?n1491))
+(flet ($n1493 (not $n1492))
+(flet ($n1494 (or $n1278 $n1490 $n1493))
+(let (?n1495 (repeat[1] ?n266))
+(let (?n1496 (sign_extend[2] ?n1495))
+(flet ($n1497 (distinct ?n383 ?n1496))
+(let (?n1498 (zero_extend[3] ?n577))
+(let (?n1499 (bvmul ?n694 ?n1498))
+(flet ($n1500 (bvugt ?n65 ?n1499))
+(flet ($n1501 (not $n1500))
+(flet ($n1502 (or $n1396 $n1497 $n1501))
+(flet ($n1503 (= ?n99 ?n459))
+(flet ($n1504 (not $n1503))
+(flet ($n1505 (bvsgt ?n210 ?n55))
+(let (?n1506 (ite $n1505 ?n8 ?n9))
+(flet ($n1507 (bvslt ?n573 ?n1506))
+(flet ($n1508 (not $n1507))
+(flet ($n1509 (bvsgt ?n1033 ?n1149))
+(let (?n1510 (ite $n1509 ?n8 ?n9))
+(let (?n1511 (zero_extend[3] ?n1510))
+(flet ($n1512 (bvsge ?n357 ?n1511))
+(flet ($n1513 (not $n1512))
+(flet ($n1514 (or $n1504 $n1508 $n1513))
+(flet ($n1515 (bvugt ?n108 ?n30))
+(let (?n1516 (ite $n1515 ?n8 ?n9))
+(let (?n1517 (zero_extend[3] ?n1516))
+(flet ($n1518 (= ?n331 ?n1517))
+(let (?n1519 (zero_extend[3] ?n802))
+(flet ($n1520 (bvsle ?n191 ?n1519))
+(flet ($n1521 (not $n1520))
+(flet ($n1522 (not $n1319))
+(flet ($n1523 (or $n1518 $n1521 $n1522))
+(flet ($n1524 (= ?n405 ?n1332))
+(flet ($n1525 (not $n843))
+(let (?n1526 (bvcomp ?n76 ?n69))
+(let (?n1527 (bvsub ?n1526 ?n467))
+(let (?n1528 (sign_extend[2] ?n1527))
+(flet ($n1529 (bvsle ?n26 ?n1528))
+(let (?n1530 (ite $n1529 ?n8 ?n9))
+(flet ($n1531 (bvuge ?n1530 ?n1220))
+(flet ($n1532 (not $n1531))
+(flet ($n1533 (or $n1524 $n1525 $n1532))
+(flet ($n1534 (not $n1035))
+(flet ($n1535 (or $n1021 $n637 $n1534))
+(flet ($n1536 (bvult ?n256 ?n504))
+(let (?n1537 (ite $n1536 ?n8 ?n9))
+(flet ($n1538 (bvslt ?n549 ?n1537))
+(flet ($n1539 (not $n1538))
+(flet ($n1540 (not $n1299))
+(let (?n1541 (sign_extend[2] ?n473))
+(flet ($n1542 (bvugt v1 ?n1541))
+(flet ($n1543 (not $n1542))
+(flet ($n1544 (or $n1539 $n1540 $n1543))
+(flet ($n1545 (bvslt ?n376 ?n435))
+(let (?n1546 (rotate_right[1] ?n412))
+(flet ($n1547 (bvsle ?n45 ?n1546))
+(let (?n1548 (zero_extend[3] ?n230))
+(flet ($n1549 (bvuge ?n65 ?n1548))
+(flet ($n1550 (or $n1545 $n1547 $n1549))
+(flet ($n1551 (bvsge ?n327 ?n1369))
+(flet ($n1552 (not $n1551))
+(let (?n1553 (bvnor ?n379 ?n404))
+(flet ($n1554 (bvsle ?n1553 ?n340))
+(flet ($n1555 (not $n1554))
+(let (?n1556 (sign_extend[3] ?n990))
+(flet ($n1557 (bvslt ?n526 ?n1556))
+(flet ($n1558 (not $n1557))
+(flet ($n1559 (or $n1552 $n1555 $n1558))
+(flet ($n1560 (bvsgt ?n1191 ?n856))
+(flet ($n1561 (bvuge ?n590 ?n156))
+(flet ($n1562 (bvugt ?n785 ?n145))
+(flet ($n1563 (or $n1560 $n1561 $n1562))
+(let (?n1564 (sign_extend[3] ?n654))
+(flet ($n1565 (distinct ?n614 ?n1564))
+(let (?n1566 (zero_extend[3] ?n958))
+(let (?n1567 (zero_extend[3] ?n483))
+(let (?n1568 (bvxor ?n530 ?n1567))
+(flet ($n1569 (bvsle ?n1566 ?n1568))
+(flet ($n1570 (not $n1569))
+(let (?n1571 (zero_extend[2] ?n1093))
+(flet ($n1572 (bvult ?n26 ?n1571))
+(flet ($n1573 (not $n1572))
+(flet ($n1574 (or $n1565 $n1570 $n1573))
+(let (?n1575 (sign_extend[3] ?n1127))
+(flet ($n1576 (bvsgt ?n1575 ?n100))
+(flet ($n1577 (not $n1074))
+(let (?n1578 (bvlshr ?n1008 ?n124))
+(flet ($n1579 (bvslt ?n272 ?n1578))
+(flet ($n1580 (not $n1579))
+(flet ($n1581 (or $n1576 $n1577 $n1580))
+(flet ($n1582 (distinct v5 ?n108))
+(let (?n1583 (ite $n1582 ?n8 ?n9))
+(let (?n1584 (sign_extend[3] ?n1583))
+(let (?n1585 (zero_extend[3] ?n317))
+(let (?n1586 (bvnand ?n920 ?n1585))
+(flet ($n1587 (bvsgt ?n1584 ?n1586))
+(let (?n1588 (zero_extend[3] ?n432))
+(flet ($n1589 (bvsgt ?n61 ?n1588))
+(flet ($n1590 (not $n1589))
+(flet ($n1591 (or $n1587 $n1121 $n1590))
+(flet ($n1592 (bvsge ?n109 ?n130))
+(flet ($n1593 (bvult ?n1530 ?n884))
+(flet ($n1594 (not $n1593))
+(flet ($n1595 (or $n1592 $n867 $n1594))
+(flet ($n1596 (not $n1427))
+(flet ($n1597 (or $n1003 $n1534 $n1596))
+(flet ($n1598 (bvule ?n486 ?n76))
+(flet ($n1599 (not $n1598))
+(flet ($n1600 (bvult ?n6 ?n1145))
+(flet ($n1601 (not $n1600))
+(let (?n1602 (sign_extend[3] ?n169))
+(let (?n1603 (zero_extend[3] ?n609))
+(let (?n1604 (bvand ?n333 ?n1603))
+(flet ($n1605 (bvugt ?n1602 ?n1604))
+(flet ($n1606 (not $n1605))
+(flet ($n1607 (or $n1599 $n1601 $n1606))
+(flet ($n1608 (distinct ?n89 ?n884))
+(let (?n1609 (ite $n1608 ?n8 ?n9))
+(let (?n1610 (zero_extend[3] ?n1609))
+(flet ($n1611 (bvsge ?n1610 ?n459))
+(let (?n1612 (zero_extend[3] ?n1120))
+(let (?n1613 (bvshl ?n1612 ?n935))
+(let (?n1614 (zero_extend[3] ?n311))
+(flet ($n1615 (= ?n1613 ?n1614))
+(let (?n1616 (ite $n1615 ?n8 ?n9))
+(let (?n1617 (sign_extend[3] ?n1616))
+(flet ($n1618 (bvslt ?n831 ?n1617))
+(flet ($n1619 (not $n1618))
+(flet ($n1620 (bvsle ?n1499 ?n503))
+(flet ($n1621 (not $n1620))
+(flet ($n1622 (or $n1611 $n1619 $n1621))
+(flet ($n1623 (bvsle ?n356 ?n924))
+(flet ($n1624 (bvuge ?n42 ?n174))
+(let (?n1625 (sign_extend[1] ?n28))
+(flet ($n1626 (bvuge ?n1625 ?n258))
+(flet ($n1627 (not $n1626))
+(flet ($n1628 (or $n1623 $n1624 $n1627))
+(flet ($n1629 (and $n1 $n1 $n1 $n41 $n119 $n135 $n182 $n252 $n276 $n306 $n347 $n362 $n386 $n418 $n425 $n463 $n519 $n539 $n554 $n558 $n565 $n588 $n599 $n624 $n631 $n633 $n643 $n658 $n664 $n673 $n685 $n702 $n723 $n738 $n759 $n771 $n780 $n796 $n809 $n821 $n837 $n853 $n865 $n877 $n896 $n903 $n908 $n923 $n938 $n947 $n954 $n965 $n971 $n980 $n986 $n1000 $n1020 $n1026 $n1031 $n1036 $n1042 $n1046 $n1051 $n1059 $n1070 $n1088 $n1103 $n1111 $n1118 $n1130 $n1136 $n1143 $n1153 $n1161 $n1170 $n1175 $n1 [...]
+$n1629
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) [...]
diff --git a/test/regress/regress0/bv/fuzz20.delta01.smt b/test/regress/regress0/bv/fuzz20.delta01.smt
new file mode 100644
index 0000000..66208cf
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz20.delta01.smt
@@ -0,0 +1,18 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v2 BitVec[4]))
+:status unsat
+:formula
+(let (?n1 bv1[1])
+(let (?n2 bv0[4])
+(flet ($n3 (distinct v2 ?n2))
+(let (?n4 bv0[1])
+(let (?n5 (ite $n3 ?n1 ?n4))
+(let (?n6 (zero_extend[3] ?n5))
+(flet ($n7 (bvslt ?n6 ?n2))
+(let (?n8 (ite $n7 ?n1 ?n4))
+(let (?n9 (bvnot ?n8))
+(let (?n10 (bvsub ?n1 ?n9))
+(flet ($n11 (= ?n1 ?n10))
+$n11
+))))))))))))
diff --git a/test/regress/regress0/bv/fuzz20.smt b/test/regress/regress0/bv/fuzz20.smt
new file mode 100644
index 0000000..b7b493c
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz20.smt
@@ -0,0 +1,191 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status unsat
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:formula
+(let (?e3 bv2[4])
+(let (?e4 bv6[4])
+(let (?e5 bv8[4])
+(let (?e6 bv7[4])
+(let (?e7 bv3[4])
+(let (?e8 (bvmul v2 v2))
+(let (?e9 (bvnand ?e3 v0))
+(let (?e10 (bvnot v0))
+(let (?e11 (bvor ?e6 v1))
+(let (?e12 (zero_extend[0] v1))
+(let (?e13 (bvor v2 v0))
+(let (?e14 (bvlshr v2 ?e11))
+(let (?e15 (rotate_right[0] ?e8))
+(let (?e16 (ite (distinct ?e14 ?e15) bv1[1] bv0[1]))
+(let (?e17 (bvnor ?e11 (sign_extend[3] ?e16)))
+(let (?e18 (bvshl ?e3 ?e15))
+(let (?e19 (bvashr ?e9 ?e5))
+(let (?e20 (ite (bvule ?e3 ?e12) bv1[1] bv0[1]))
+(let (?e21 (bvnot ?e16))
+(let (?e22 (bvadd ?e8 ?e15))
+(let (?e23 (ite (bvsgt ?e12 ?e9) bv1[1] bv0[1]))
+(let (?e24 (zero_extend[0] v1))
+(let (?e25 (bvxor ?e14 v1))
+(let (?e26 (ite (bvsle ?e8 ?e25) bv1[1] bv0[1]))
+(let (?e27 (bvashr (sign_extend[3] ?e26) v0))
+(let (?e28 (rotate_right[1] ?e27))
+(let (?e29 (bvashr ?e22 ?e22))
+(let (?e30 (bvadd ?e3 ?e28))
+(let (?e31 (bvneg ?e27))
+(let (?e32 (ite (distinct ?e5 ?e5) bv1[1] bv0[1]))
+(let (?e33 (ite (bvslt (zero_extend[3] ?e16) ?e30) bv1[1] bv0[1]))
+(let (?e34 (rotate_left[0] ?e21))
+(let (?e35 (bvmul ?e9 ?e11))
+(let (?e36 (ite (distinct ?e18 ?e27) bv1[1] bv0[1]))
+(let (?e37 (bvand (zero_extend[3] ?e20) v0))
+(let (?e38 (rotate_left[1] ?e8))
+(let (?e39 (repeat[1] ?e22))
+(let (?e40 (ite (distinct ?e5 ?e17) bv1[1] bv0[1]))
+(let (?e41 (bvxnor (sign_extend[3] ?e40) v0))
+(let (?e42 (bvor v0 ?e7))
+(let (?e43 (ite (bvsgt ?e24 ?e15) bv1[1] bv0[1]))
+(let (?e44 (bvnot ?e33))
+(let (?e45 (bvsub ?e24 ?e11))
+(let (?e46 (bvsub ?e26 ?e44))
+(let (?e47 (bvneg ?e29))
+(let (?e48 (ite (bvsgt ?e37 ?e7) bv1[1] bv0[1]))
+(let (?e49 (bvlshr ?e29 ?e14))
+(let (?e50 (ite (bvsgt ?e18 ?e4) bv1[1] bv0[1]))
+(flet ($e51 (bvsle ?e20 ?e21))
+(flet ($e52 (bvsle ?e3 ?e41))
+(flet ($e53 (bvult ?e39 ?e39))
+(flet ($e54 (bvsgt (sign_extend[3] ?e32) ?e35))
+(flet ($e55 (= (zero_extend[3] ?e20) ?e18))
+(flet ($e56 (bvugt ?e41 ?e6))
+(flet ($e57 (bvsge ?e41 ?e38))
+(flet ($e58 (bvugt ?e5 ?e25))
+(flet ($e59 (bvult ?e12 ?e30))
+(flet ($e60 (bvslt ?e11 ?e8))
+(flet ($e61 (bvugt ?e35 ?e15))
+(flet ($e62 (bvugt ?e47 ?e17))
+(flet ($e63 (= ?e17 (zero_extend[3] ?e33)))
+(flet ($e64 (bvsge (sign_extend[3] ?e43) v0))
+(flet ($e65 (bvugt ?e6 ?e5))
+(flet ($e66 (bvugt (sign_extend[3] ?e43) ?e30))
+(flet ($e67 (bvsgt (sign_extend[3] ?e34) ?e22))
+(flet ($e68 (= ?e13 ?e12))
+(flet ($e69 (bvslt ?e45 ?e4))
+(flet ($e70 (distinct ?e19 (sign_extend[3] ?e50)))
+(flet ($e71 (distinct ?e47 v0))
+(flet ($e72 (bvsgt ?e8 (sign_extend[3] ?e36)))
+(flet ($e73 (bvule ?e25 ?e8))
+(flet ($e74 (bvsgt ?e10 ?e3))
+(flet ($e75 (distinct ?e31 ?e10))
+(flet ($e76 (= ?e29 ?e8))
+(flet ($e77 (= v0 (zero_extend[3] ?e21)))
+(flet ($e78 (bvsgt ?e49 v1))
+(flet ($e79 (bvsgt ?e19 ?e35))
+(flet ($e80 (bvule ?e16 ?e21))
+(flet ($e81 (bvslt ?e14 ?e10))
+(flet ($e82 (distinct ?e35 ?e14))
+(flet ($e83 (= ?e25 ?e3))
+(flet ($e84 (distinct ?e29 (zero_extend[3] ?e20)))
+(flet ($e85 (bvult ?e22 (zero_extend[3] ?e23)))
+(flet ($e86 (bvugt ?e23 ?e16))
+(flet ($e87 (bvult (sign_extend[3] ?e34) ?e35))
+(flet ($e88 (bvule ?e29 (zero_extend[3] ?e46)))
+(flet ($e89 (bvsgt ?e13 (sign_extend[3] ?e32)))
+(flet ($e90 (bvugt ?e42 ?e31))
+(flet ($e91 (bvuge ?e47 (zero_extend[3] ?e34)))
+(flet ($e92 (distinct ?e42 ?e28))
+(flet ($e93 (= ?e44 ?e20))
+(flet ($e94 (bvsle ?e35 (zero_extend[3] ?e34)))
+(flet ($e95 (bvule ?e42 ?e12))
+(flet ($e96 (bvsgt (zero_extend[3] ?e23) v1))
+(flet ($e97 (bvule v2 (sign_extend[3] ?e16)))
+(flet ($e98 (bvuge (sign_extend[3] ?e43) ?e37))
+(flet ($e99 (bvult ?e28 ?e3))
+(flet ($e100 (bvugt ?e19 (zero_extend[3] ?e26)))
+(flet ($e101 (= ?e27 ?e7))
+(flet ($e102 (bvsge ?e18 ?e14))
+(flet ($e103 (bvsgt ?e31 ?e18))
+(flet ($e104 (= (zero_extend[3] ?e50) ?e9))
+(flet ($e105 (bvult ?e39 v0))
+(flet ($e106 (distinct ?e19 v1))
+(flet ($e107 (bvsle ?e4 ?e4))
+(flet ($e108 (= ?e26 ?e46))
+(flet ($e109 (bvsle ?e35 ?e3))
+(flet ($e110 (bvuge ?e10 ?e14))
+(flet ($e111 (distinct ?e5 (zero_extend[3] ?e44)))
+(flet ($e112 (bvule v1 ?e27))
+(flet ($e113 (bvugt ?e41 (zero_extend[3] ?e23)))
+(flet ($e114 (bvule (sign_extend[3] ?e33) ?e11))
+(flet ($e115 (bvugt ?e48 ?e34))
+(flet ($e116 (= ?e47 ?e45))
+(flet ($e117 (bvugt ?e12 v0))
+(flet ($e118 (bvslt ?e41 ?e5))
+(flet ($e119 (bvsge (sign_extend[3] ?e21) ?e38))
+(flet ($e120 (bvugt ?e42 ?e47))
+(flet ($e121 (bvslt ?e18 (zero_extend[3] ?e16)))
+(flet ($e122 (bvsge ?e4 ?e45))
+(flet ($e123 (bvslt ?e37 (sign_extend[3] ?e48)))
+(flet ($e124 (bvugt ?e28 (zero_extend[3] ?e21)))
+(flet ($e125 (bvuge ?e30 ?e19))
+(flet ($e126 (bvsgt ?e35 ?e22))
+(flet ($e127 (bvuge (zero_extend[3] ?e34) ?e13))
+(flet ($e128 (bvsgt ?e5 ?e3))
+(flet ($e129 (bvslt ?e24 (zero_extend[3] ?e44)))
+(flet ($e130 (bvule ?e48 ?e33))
+(flet ($e131 (distinct ?e10 (zero_extend[3] ?e50)))
+(flet ($e132 (bvsle (sign_extend[3] ?e32) ?e28))
+(flet ($e133 (bvugt ?e3 v1))
+(flet ($e134 (= (sign_extend[3] ?e33) ?e42))
+(flet ($e135 (distinct ?e21 ?e46))
+(flet ($e136 (bvsle ?e15 ?e41))
+(flet ($e137 (bvsle (sign_extend[3] ?e40) v2))
+(flet ($e138 
+(and
+ (or (not $e65) (not $e121) $e55)
+ (or $e98 $e77 (not $e80))
+ (or (not $e135) $e133 $e66)
+ (or (not $e74) (not $e104) (not $e66))
+ (or (not $e120) (not $e65) $e125)
+ (or (not $e117) $e132 $e129)
+ (or $e76 (not $e106) (not $e55))
+ (or $e128 (not $e79) $e83)
+ (or $e80 (not $e96) (not $e107))
+ (or (not $e72) $e70 (not $e79))
+ (or $e114 $e118 (not $e94))
+ (or $e54 (not $e128) $e78)
+ (or $e79 $e79 $e126)
+ (or $e116 $e69 (not $e52))
+ (or $e111 $e99 $e62)
+ (or $e108 (not $e126) $e131)
+ (or $e71 $e96 (not $e121))
+ (or (not $e70) (not $e60) $e89)
+ (or (not $e57) $e128 (not $e73))
+ (or (not $e118) (not $e59) (not $e81))
+ (or $e112 (not $e102) $e91)
+ (or (not $e66) (not $e74) (not $e63))
+ (or $e134 (not $e111) (not $e134))
+ (or (not $e126) (not $e70) $e137)
+ (or $e76 $e124 $e74)
+ (or (not $e108) $e96 $e65)
+ (or $e122 (not $e92) $e59)
+ (or (not $e107) (not $e136) (not $e123))
+ (or (not $e76) (not $e53) (not $e118))
+ (or (not $e105) (not $e121) $e85)
+ (or (not $e99) $e102 $e106)
+ (or (not $e61) $e121 $e90)
+ (or (not $e53) (not $e77) (not $e54))
+ (or (not $e72) $e76 (not $e114))
+ (or (not $e104) $e101 (not $e105))
+ (or $e128 (not $e129) $e84)
+ (or (not $e95) (not $e128) (not $e130))
+ (or (not $e90) $e129 $e133)
+ (or $e131 $e72 (not $e82))
+ (or $e128 (not $e113) (not $e120))
+ (or (not $e80) (not $e87) (not $e59))
+ (or $e57 $e123 $e118)
+ (or (not $e109) $e73 $e81)
+))
+$e138
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz21.delta01.smt b/test/regress/regress0/bv/fuzz21.delta01.smt
new file mode 100644
index 0000000..e74eaff
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz21.delta01.smt
@@ -0,0 +1,11 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v1 BitVec[4]))
+:status sat
+:formula
+(let (?n1 (bvmul v1 v1))
+(let (?n2 bv0[4])
+(let (?n3 (bvsub ?n2 ?n1))
+(flet ($n4 (distinct ?n1 ?n3))
+$n4
+)))))
diff --git a/test/regress/regress0/bv/fuzz21.smt b/test/regress/regress0/bv/fuzz21.smt
new file mode 100644
index 0000000..9ad27d8
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz21.smt
@@ -0,0 +1,438 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status unsat
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:extrafuns ((v3 BitVec[4]))
+:extrafuns ((v4 BitVec[4]))
+:formula
+(let (?e5 bv1[4])
+(let (?e6 bv4[4])
+(let (?e7 bv0[4])
+(let (?e8 (ite (bvsge v0 v0) bv1[1] bv0[1]))
+(let (?e9 (bvxnor v0 v1))
+(let (?e10 (bvadd ?e6 ?e5))
+(let (?e11 (zero_extend[0] ?e6))
+(let (?e12 (ite (bvuge ?e9 ?e9) bv1[1] bv0[1]))
+(let (?e13 (ite (bvugt ?e7 v3) bv1[1] bv0[1]))
+(let (?e14 (bvnor ?e10 v0))
+(let (?e15 (ite (bvslt ?e6 v4) bv1[1] bv0[1]))
+(let (?e16 (zero_extend[0] v1))
+(let (?e17 (bvor ?e14 (zero_extend[3] ?e15)))
+(let (?e18 (ite (bvslt v1 v4) bv1[1] bv0[1]))
+(let (?e19 (bvlshr ?e16 v0))
+(let (?e20 (ite (distinct ?e7 ?e17) bv1[1] bv0[1]))
+(let (?e21 (ite (bvslt ?e12 ?e20) bv1[1] bv0[1]))
+(let (?e22 (bvxnor (sign_extend[3] ?e20) ?e7))
+(let (?e23 (bvcomp ?e9 v4))
+(let (?e24 (ite (distinct (zero_extend[3] ?e15) ?e7) bv1[1] bv0[1]))
+(let (?e25 (bvand (sign_extend[3] ?e18) v3))
+(let (?e26 (bvmul ?e21 ?e12))
+(let (?e27 (rotate_left[1] v3))
+(let (?e28 (bvshl ?e25 (sign_extend[3] ?e26)))
+(let (?e29 (ite (= ?e11 (sign_extend[3] ?e15)) bv1[1] bv0[1]))
+(let (?e30 (bvmul ?e16 ?e16))
+(let (?e31 (repeat[1] ?e10))
+(let (?e32 (ite (bvule ?e11 v1) bv1[1] bv0[1]))
+(let (?e33 (bvashr ?e16 (zero_extend[3] ?e32)))
+(let (?e34 (ite (bvsge v3 ?e31) bv1[1] bv0[1]))
+(let (?e35 (ite (= (sign_extend[3] ?e20) v0) bv1[1] bv0[1]))
+(let (?e36 (bvadd ?e13 ?e21))
+(let (?e37 (repeat[1] ?e26))
+(let (?e38 (bvsub ?e30 ?e6))
+(let (?e39 (ite (distinct ?e19 ?e14) bv1[1] bv0[1]))
+(let (?e40 (rotate_right[1] ?e19))
+(let (?e41 (bvsub (sign_extend[3] ?e21) ?e27))
+(let (?e42 (bvashr ?e36 ?e36))
+(let (?e43 (bvxor (zero_extend[3] ?e21) ?e6))
+(let (?e44 (ite (bvugt v4 ?e9) bv1[1] bv0[1]))
+(let (?e45 (bvadd (sign_extend[3] ?e44) ?e41))
+(let (?e46 (extract[0:0] ?e12))
+(let (?e47 (bvand ?e7 ?e38))
+(let (?e48 (bvashr v1 ?e28))
+(let (?e49 (ite (bvsgt (sign_extend[3] ?e35) ?e28) bv1[1] bv0[1]))
+(let (?e50 (ite (= bv1[1] (extract[3:3] ?e11)) ?e10 (sign_extend[3] ?e36)))
+(let (?e51 (ite (bvsle ?e7 (zero_extend[3] ?e46)) bv1[1] bv0[1]))
+(let (?e52 (repeat[3] ?e35))
+(let (?e53 (sign_extend[3] ?e34))
+(let (?e54 (ite (= bv1[1] (extract[2:2] ?e6)) ?e25 (sign_extend[3] ?e13)))
+(let (?e55 (extract[0:0] ?e47))
+(let (?e56 (bvsub v4 ?e30))
+(let (?e57 (repeat[3] ?e26))
+(let (?e58 (bvneg ?e19))
+(let (?e59 (bvadd ?e14 (zero_extend[3] ?e18)))
+(let (?e60 (bvcomp ?e38 ?e58))
+(let (?e61 (bvsub ?e17 ?e38))
+(let (?e62 (ite (distinct ?e41 (sign_extend[3] ?e46)) bv1[1] bv0[1]))
+(let (?e63 (bvsub ?e33 (sign_extend[3] ?e37)))
+(let (?e64 (ite (bvuge ?e33 (zero_extend[3] ?e51)) bv1[1] bv0[1]))
+(let (?e65 (bvxor v4 ?e14))
+(let (?e66 (extract[2:2] ?e31))
+(let (?e67 (repeat[4] ?e21))
+(let (?e68 (bvadd ?e43 ?e47))
+(let (?e69 (bvadd ?e65 ?e67))
+(let (?e70 (zero_extend[0] ?e62))
+(let (?e71 (bvneg ?e52))
+(let (?e72 (bvmul ?e9 ?e7))
+(let (?e73 (ite (bvsgt (zero_extend[3] ?e70) ?e28) bv1[1] bv0[1]))
+(let (?e74 (bvshl ?e41 (zero_extend[3] ?e18)))
+(let (?e75 (repeat[1] v1))
+(let (?e76 (bvcomp ?e26 ?e8))
+(let (?e77 (bvxor ?e60 ?e8))
+(let (?e78 (ite (= ?e27 (sign_extend[1] ?e52)) bv1[1] bv0[1]))
+(let (?e79 (extract[0:0] ?e51))
+(let (?e80 (ite (bvugt ?e64 ?e44) bv1[1] bv0[1]))
+(let (?e81 (bvsub ?e69 (sign_extend[3] ?e77)))
+(let (?e82 (bvxor ?e75 ?e50))
+(let (?e83 (repeat[3] ?e66))
+(let (?e84 (ite (bvult ?e30 ?e6) bv1[1] bv0[1]))
+(let (?e85 (bvxnor ?e20 ?e77))
+(let (?e86 (sign_extend[0] ?e38))
+(let (?e87 (bvsub ?e11 ?e14))
+(let (?e88 (ite (bvsge (sign_extend[1] ?e57) ?e75) bv1[1] bv0[1]))
+(let (?e89 (bvneg ?e87))
+(let (?e90 (ite (bvsgt ?e20 ?e23) bv1[1] bv0[1]))
+(let (?e91 (rotate_right[0] ?e42))
+(let (?e92 (rotate_left[0] ?e83))
+(let (?e93 (bvand ?e76 ?e73))
+(let (?e94 (bvnot ?e57))
+(let (?e95 (bvmul ?e83 (sign_extend[2] ?e29)))
+(let (?e96 (ite (bvslt (sign_extend[2] ?e60) ?e71) bv1[1] bv0[1]))
+(let (?e97 (ite (bvule ?e45 v1) bv1[1] bv0[1]))
+(let (?e98 (bvmul (sign_extend[3] ?e77) ?e81))
+(let (?e99 (bvshl ?e96 ?e32))
+(let (?e100 (bvxor v4 ?e7))
+(let (?e101 (bvmul ?e43 (sign_extend[3] ?e84)))
+(let (?e102 (rotate_left[2] ?e43))
+(let (?e103 (bvcomp ?e25 (sign_extend[3] ?e66)))
+(let (?e104 (bvneg ?e77))
+(let (?e105 (bvashr (sign_extend[2] ?e35) ?e57))
+(let (?e106 (ite (distinct (zero_extend[3] ?e24) ?e67) bv1[1] bv0[1]))
+(let (?e107 (rotate_left[1] ?e72))
+(let (?e108 (bvnand (sign_extend[1] ?e52) ?e53))
+(let (?e109 (ite (bvule (sign_extend[3] ?e79) v2) bv1[1] bv0[1]))
+(flet ($e110 (bvuge (sign_extend[3] ?e93) ?e100))
+(flet ($e111 (bvugt ?e72 (zero_extend[3] ?e73)))
+(flet ($e112 (bvuge v0 ?e41))
+(flet ($e113 (bvult ?e79 ?e91))
+(flet ($e114 (bvsgt ?e27 (sign_extend[3] ?e13)))
+(flet ($e115 (bvult ?e56 ?e53))
+(flet ($e116 (= ?e20 ?e12))
+(flet ($e117 (bvsgt ?e104 ?e13))
+(flet ($e118 (bvsgt ?e29 ?e93))
+(flet ($e119 (bvsle ?e108 (sign_extend[3] ?e46)))
+(flet ($e120 (bvslt ?e31 ?e100))
+(flet ($e121 (bvsle ?e69 (sign_extend[3] ?e44)))
+(flet ($e122 (bvuge v0 ?e82))
+(flet ($e123 (bvugt (zero_extend[2] ?e79) ?e92))
+(flet ($e124 (bvule ?e66 ?e24))
+(flet ($e125 (distinct (sign_extend[3] ?e80) ?e22))
+(flet ($e126 (bvuge ?e103 ?e84))
+(flet ($e127 (bvuge ?e45 ?e68))
+(flet ($e128 (bvult ?e40 ?e9))
+(flet ($e129 (bvslt (sign_extend[3] ?e23) ?e86))
+(flet ($e130 (bvslt (sign_extend[3] ?e84) ?e101))
+(flet ($e131 (bvsle ?e69 (zero_extend[3] ?e42)))
+(flet ($e132 (bvult ?e74 (zero_extend[1] ?e94)))
+(flet ($e133 (bvule (sign_extend[3] ?e79) ?e81))
+(flet ($e134 (distinct ?e34 ?e97))
+(flet ($e135 (distinct (sign_extend[3] ?e35) ?e40))
+(flet ($e136 (bvugt ?e51 ?e44))
+(flet ($e137 (bvule ?e65 (zero_extend[3] ?e84)))
+(flet ($e138 (bvsgt ?e102 (sign_extend[3] ?e60)))
+(flet ($e139 (= (sign_extend[3] ?e12) v2))
+(flet ($e140 (bvslt (zero_extend[3] ?e44) ?e19))
+(flet ($e141 (bvuge ?e24 ?e106))
+(flet ($e142 (= (sign_extend[1] ?e71) ?e102))
+(flet ($e143 (bvsge (sign_extend[1] ?e92) v0))
+(flet ($e144 (bvslt ?e72 (zero_extend[3] ?e70)))
+(flet ($e145 (bvuge ?e58 (zero_extend[3] ?e13)))
+(flet ($e146 (bvugt ?e95 (sign_extend[2] ?e13)))
+(flet ($e147 (bvsle ?e10 ?e56))
+(flet ($e148 (bvsge ?e6 ?e69))
+(flet ($e149 (bvult (sign_extend[3] ?e80) ?e58))
+(flet ($e150 (bvule ?e16 (sign_extend[1] ?e83)))
+(flet ($e151 (bvsle ?e58 ?e5))
+(flet ($e152 (bvsgt ?e98 (zero_extend[1] ?e95)))
+(flet ($e153 (= (sign_extend[3] ?e49) ?e6))
+(flet ($e154 (distinct ?e5 ?e101))
+(flet ($e155 (bvult (sign_extend[3] ?e96) ?e7))
+(flet ($e156 (= v0 ?e98))
+(flet ($e157 (bvuge v4 ?e86))
+(flet ($e158 (distinct ?e33 (zero_extend[3] ?e46)))
+(flet ($e159 (bvult ?e35 ?e77))
+(flet ($e160 (bvsle ?e50 ?e28))
+(flet ($e161 (bvsgt (sign_extend[2] ?e104) ?e95))
+(flet ($e162 (bvult ?e31 (sign_extend[3] ?e78)))
+(flet ($e163 (bvule ?e62 ?e80))
+(flet ($e164 (= (sign_extend[1] ?e52) ?e9))
+(flet ($e165 (bvsle ?e12 ?e106))
+(flet ($e166 (= (sign_extend[3] ?e96) ?e69))
+(flet ($e167 (bvugt ?e96 ?e39))
+(flet ($e168 (bvsge ?e19 (sign_extend[3] ?e8)))
+(flet ($e169 (bvuge ?e22 (sign_extend[3] ?e96)))
+(flet ($e170 (bvugt ?e88 ?e73))
+(flet ($e171 (bvuge (sign_extend[1] ?e71) ?e10))
+(flet ($e172 (bvuge ?e98 (sign_extend[3] ?e20)))
+(flet ($e173 (distinct ?e18 ?e62))
+(flet ($e174 (bvule ?e32 ?e32))
+(flet ($e175 (bvsgt ?e89 (sign_extend[1] ?e94)))
+(flet ($e176 (bvuge ?e33 (sign_extend[3] ?e64)))
+(flet ($e177 (distinct v3 (sign_extend[3] ?e93)))
+(flet ($e178 (bvslt ?e41 ?e86))
+(flet ($e179 (bvugt (sign_extend[3] ?e76) ?e14))
+(flet ($e180 (distinct ?e48 ?e5))
+(flet ($e181 (bvsge ?e88 ?e34))
+(flet ($e182 (= ?e74 ?e27))
+(flet ($e183 (distinct ?e72 (sign_extend[3] ?e80)))
+(flet ($e184 (bvule ?e33 ?e53))
+(flet ($e185 (bvugt ?e47 (sign_extend[3] ?e8)))
+(flet ($e186 (distinct ?e21 ?e96))
+(flet ($e187 (bvslt ?e11 (sign_extend[3] ?e15)))
+(flet ($e188 (bvule (zero_extend[2] ?e55) ?e71))
+(flet ($e189 (bvsgt ?e58 (zero_extend[3] ?e23)))
+(flet ($e190 (bvult ?e91 ?e90))
+(flet ($e191 (bvult ?e87 (sign_extend[3] ?e26)))
+(flet ($e192 (distinct ?e56 (zero_extend[3] ?e91)))
+(flet ($e193 (bvsle (sign_extend[2] ?e18) ?e71))
+(flet ($e194 (bvult ?e102 ?e41))
+(flet ($e195 (distinct ?e27 ?e89))
+(flet ($e196 (bvslt ?e38 ?e81))
+(flet ($e197 (bvule ?e19 ?e58))
+(flet ($e198 (= (sign_extend[2] ?e37) ?e105))
+(flet ($e199 (bvsle ?e53 (sign_extend[3] ?e85)))
+(flet ($e200 (bvule ?e59 ?e69))
+(flet ($e201 (bvugt (sign_extend[3] ?e96) ?e102))
+(flet ($e202 (bvsge ?e82 ?e86))
+(flet ($e203 (bvsge (sign_extend[1] ?e105) ?e75))
+(flet ($e204 (bvugt ?e54 ?e81))
+(flet ($e205 (= ?e89 ?e28))
+(flet ($e206 (bvuge v2 (zero_extend[3] ?e20)))
+(flet ($e207 (bvule (zero_extend[3] ?e21) ?e108))
+(flet ($e208 (bvsle ?e16 ?e89))
+(flet ($e209 (bvslt ?e30 ?e72))
+(flet ($e210 (bvugt (zero_extend[3] ?e96) ?e40))
+(flet ($e211 (= ?e103 ?e8))
+(flet ($e212 (bvsgt ?e16 (zero_extend[3] ?e76)))
+(flet ($e213 (distinct ?e38 ?e89))
+(flet ($e214 (bvugt (sign_extend[1] ?e71) ?e48))
+(flet ($e215 (distinct ?e39 ?e8))
+(flet ($e216 (bvslt ?e62 ?e91))
+(flet ($e217 (bvsge ?e40 ?e87))
+(flet ($e218 (bvuge v0 ?e67))
+(flet ($e219 (distinct ?e38 ?e56))
+(flet ($e220 (bvule ?e6 (sign_extend[3] ?e66)))
+(flet ($e221 (bvsgt ?e16 ?e68))
+(flet ($e222 (bvule ?e36 ?e44))
+(flet ($e223 (bvuge (sign_extend[1] ?e92) ?e98))
+(flet ($e224 (bvsge ?e44 ?e78))
+(flet ($e225 (bvule ?e5 (zero_extend[1] ?e94)))
+(flet ($e226 (bvsgt ?e11 ?e101))
+(flet ($e227 (bvuge ?e65 ?e108))
+(flet ($e228 (bvugt ?e56 ?e61))
+(flet ($e229 (distinct ?e56 ?e65))
+(flet ($e230 (bvult ?e33 ?e22))
+(flet ($e231 (bvugt ?e37 ?e80))
+(flet ($e232 (bvuge (zero_extend[2] ?e109) ?e92))
+(flet ($e233 (bvult ?e105 ?e95))
+(flet ($e234 (distinct (sign_extend[2] ?e84) ?e94))
+(flet ($e235 (bvslt ?e9 (sign_extend[1] ?e83)))
+(flet ($e236 (bvslt ?e18 ?e106))
+(flet ($e237 (bvuge ?e46 ?e39))
+(flet ($e238 (distinct ?e76 ?e39))
+(flet ($e239 (bvugt ?e38 v4))
+(flet ($e240 (bvule ?e16 (sign_extend[1] ?e105)))
+(flet ($e241 (bvslt (zero_extend[3] ?e91) ?e30))
+(flet ($e242 (bvsge ?e40 (zero_extend[3] ?e80)))
+(flet ($e243 (distinct ?e41 ?e107))
+(flet ($e244 (bvuge ?e14 ?e81))
+(flet ($e245 (bvslt ?e16 ?e81))
+(flet ($e246 (bvsgt (sign_extend[3] ?e66) ?e67))
+(flet ($e247 (bvult ?e18 ?e91))
+(flet ($e248 (bvult ?e41 ?e75))
+(flet ($e249 (distinct ?e80 ?e15))
+(flet ($e250 (bvule ?e28 (zero_extend[3] ?e84)))
+(flet ($e251 (bvslt ?e10 ?e72))
+(flet ($e252 (bvult ?e59 (sign_extend[3] ?e93)))
+(flet ($e253 (bvsge ?e69 ?e87))
+(flet ($e254 (bvuge ?e98 (sign_extend[1] ?e95)))
+(flet ($e255 (bvsgt (zero_extend[2] ?e55) ?e57))
+(flet ($e256 (bvslt (sign_extend[2] ?e80) ?e105))
+(flet ($e257 (bvuge (sign_extend[1] ?e95) ?e74))
+(flet ($e258 (bvsle ?e5 v3))
+(flet ($e259 (bvsge (zero_extend[3] ?e18) ?e100))
+(flet ($e260 (bvugt (sign_extend[3] ?e20) ?e69))
+(flet ($e261 (bvsgt (sign_extend[3] ?e76) ?e45))
+(flet ($e262 (bvslt (zero_extend[3] ?e70) ?e108))
+(flet ($e263 (= ?e108 (zero_extend[3] ?e109)))
+(flet ($e264 (bvslt ?e82 ?e30))
+(flet ($e265 (bvugt (zero_extend[3] ?e109) ?e41))
+(flet ($e266 (bvule (zero_extend[3] ?e73) ?e14))
+(flet ($e267 (bvsgt (zero_extend[3] ?e66) ?e17))
+(flet ($e268 (bvuge v2 (zero_extend[3] ?e37)))
+(flet ($e269 (bvsge ?e108 ?e87))
+(flet ($e270 (= ?e63 ?e40))
+(flet ($e271 (bvugt (sign_extend[2] ?e109) ?e95))
+(flet ($e272 (bvsle ?e34 ?e29))
+(flet ($e273 (bvule ?e59 (sign_extend[3] ?e73)))
+(flet ($e274 (distinct ?e68 (zero_extend[3] ?e90)))
+(flet ($e275 (bvule (zero_extend[1] ?e71) ?e33))
+(flet ($e276 (bvult ?e38 v0))
+(flet ($e277 (= (sign_extend[2] ?e78) ?e92))
+(flet ($e278 (bvule ?e19 ?e61))
+(flet ($e279 (bvugt (sign_extend[2] ?e84) ?e105))
+(flet ($e280 (bvuge ?e26 ?e97))
+(flet ($e281 (bvsge v0 ?e28))
+(flet ($e282 (bvugt ?e96 ?e36))
+(flet ($e283 (bvsgt ?e6 (zero_extend[3] ?e18)))
+(flet ($e284 (bvuge ?e31 (zero_extend[3] ?e70)))
+(flet ($e285 (bvuge v4 ?e81))
+(flet ($e286 (bvsgt ?e96 ?e64))
+(flet ($e287 (bvslt (sign_extend[3] ?e85) ?e61))
+(flet ($e288 (bvsgt ?e83 (zero_extend[2] ?e64)))
+(flet ($e289 (distinct ?e107 (sign_extend[3] ?e35)))
+(flet ($e290 (bvsle (zero_extend[3] ?e97) ?e50))
+(flet ($e291 (bvuge ?e98 (sign_extend[3] ?e78)))
+(flet ($e292 (bvsle ?e14 ?e33))
+(flet ($e293 (distinct ?e43 (sign_extend[3] ?e49)))
+(flet ($e294 (bvuge (sign_extend[3] ?e96) ?e56))
+(flet ($e295 (bvslt ?e99 ?e64))
+(flet ($e296 (bvule ?e98 (sign_extend[3] ?e106)))
+(flet ($e297 (bvsgt ?e67 ?e69))
+(flet ($e298 (= ?e46 ?e88))
+(flet ($e299 (= ?e5 (sign_extend[3] ?e91)))
+(flet ($e300 (bvsgt ?e65 ?e25))
+(flet ($e301 (bvsgt ?e105 (sign_extend[2] ?e79)))
+(flet ($e302 (= (zero_extend[2] ?e64) ?e83))
+(flet ($e303 (bvule ?e80 ?e12))
+(flet ($e304 (bvule ?e97 ?e79))
+(flet ($e305 (bvsle ?e80 ?e51))
+(flet ($e306 (bvult (sign_extend[2] ?e13) ?e105))
+(flet ($e307 (distinct ?e10 (zero_extend[1] ?e71)))
+(flet ($e308 (bvsge v2 ?e11))
+(flet ($e309 (= ?e89 ?e45))
+(flet ($e310 (distinct ?e68 (sign_extend[3] ?e62)))
+(flet ($e311 (bvugt ?e28 (zero_extend[3] ?e39)))
+(flet ($e312 (bvsle ?e17 (zero_extend[3] ?e84)))
+(flet ($e313 (distinct ?e40 (sign_extend[3] ?e73)))
+(flet ($e314 (bvsgt ?e88 ?e77))
+(flet ($e315 (bvult ?e82 (sign_extend[3] ?e24)))
+(flet ($e316 (distinct ?e105 (zero_extend[2] ?e51)))
+(flet ($e317 (bvslt ?e93 ?e32))
+(flet ($e318 (distinct ?e35 ?e91))
+(flet ($e319 (bvslt (zero_extend[3] ?e39) v4))
+(flet ($e320 (bvugt ?e97 ?e46))
+(flet ($e321 (bvsle (zero_extend[1] ?e57) v1))
+(flet ($e322 
+(and
+ (or (not $e187) (not $e283) $e268)
+ (or (not $e166) (not $e216) $e236)
+ (or (not $e210) (not $e143) (not $e232))
+ (or $e173 (not $e193) $e209)
+ (or $e265 $e141 $e202)
+ (or $e143 (not $e221) (not $e318))
+ (or $e142 $e211 (not $e302))
+ (or (not $e297) (not $e317) (not $e306))
+ (or $e215 $e189 $e216)
+ (or $e112 (not $e288) (not $e292))
+ (or (not $e187) $e152 (not $e198))
+ (or $e151 (not $e311) $e234)
+ (or $e143 $e142 (not $e164))
+ (or $e255 (not $e219) (not $e241))
+ (or (not $e236) (not $e164) $e169)
+ (or $e159 (not $e142) $e191)
+ (or $e282 $e295 (not $e263))
+ (or (not $e292) (not $e292) (not $e201))
+ (or $e168 (not $e284) (not $e163))
+ (or $e312 $e121 (not $e224))
+ (or (not $e191) $e255 $e227)
+ (or (not $e163) $e148 $e171)
+ (or $e222 (not $e203) $e308)
+ (or (not $e139) $e299 $e144)
+ (or (not $e128) (not $e120) $e219)
+ (or (not $e305) $e167 (not $e308))
+ (or (not $e141) (not $e292) (not $e164))
+ (or $e190 $e220 $e210)
+ (or $e160 $e187 (not $e238))
+ (or (not $e243) $e233 $e147)
+ (or (not $e142) (not $e126) $e236)
+ (or $e302 $e222 (not $e295))
+ (or (not $e208) (not $e179) $e181)
+ (or (not $e198) (not $e271) $e139)
+ (or (not $e258) (not $e298) $e155)
+ (or (not $e150) $e274 $e259)
+ (or $e147 $e244 $e161)
+ (or (not $e114) (not $e301) $e245)
+ (or $e229 $e173 $e234)
+ (or (not $e277) (not $e313) (not $e216))
+ (or $e178 $e172 $e123)
+ (or $e188 $e151 (not $e299))
+ (or $e182 $e219 $e198)
+ (or (not $e153) $e272 (not $e238))
+ (or $e153 (not $e166) (not $e241))
+ (or $e217 $e133 $e263)
+ (or (not $e213) $e214 (not $e240))
+ (or (not $e179) $e241 (not $e302))
+ (or (not $e304) $e179 $e254)
+ (or (not $e241) (not $e271) $e166)
+ (or $e224 $e250 $e256)
+ (or (not $e133) $e216 $e316)
+ (or $e256 $e308 (not $e118))
+ (or (not $e169) $e122 (not $e218))
+ (or $e127 $e239 $e296)
+ (or $e241 (not $e207) (not $e253))
+ (or (not $e316) $e275 $e220)
+ (or (not $e158) (not $e129) $e305)
+ (or $e189 (not $e226) (not $e293))
+ (or $e279 $e155 (not $e290))
+ (or (not $e197) (not $e274) (not $e279))
+ (or (not $e144) (not $e209) (not $e225))
+ (or $e285 $e208 $e115)
+ (or (not $e264) (not $e198) $e244)
+ (or (not $e272) $e255 $e279)
+ (or $e281 $e230 $e278)
+ (or $e155 $e307 $e174)
+ (or $e262 (not $e188) $e267)
+ (or (not $e179) $e167 $e237)
+ (or $e132 (not $e169) (not $e227))
+ (or $e297 (not $e193) $e318)
+ (or $e113 (not $e114) (not $e160))
+ (or $e180 (not $e175) $e195)
+ (or (not $e202) $e128 (not $e143))
+ (or $e242 (not $e305) $e148)
+ (or (not $e126) (not $e186) $e264)
+ (or (not $e138) (not $e183) (not $e190))
+ (or $e113 (not $e250) (not $e284))
+ (or (not $e179) $e194 (not $e215))
+ (or (not $e111) $e237 $e155)
+ (or $e170 $e251 (not $e130))
+ (or (not $e189) $e197 (not $e264))
+ (or $e113 $e197 $e141)
+ (or (not $e269) (not $e256) (not $e257))
+ (or $e148 $e285 $e239)
+ (or (not $e162) (not $e146) (not $e125))
+ (or (not $e126) (not $e276) (not $e312))
+ (or $e187 $e297 $e193)
+ (or $e300 (not $e250) (not $e155))
+ (or $e201 (not $e217) $e267)
+ (or (not $e206) (not $e235) (not $e313))
+ (or $e241 (not $e156) (not $e317))
+ (or (not $e150) (not $e185) (not $e117))
+ (or (not $e200) $e216 $e198)
+ (or (not $e314) (not $e133) (not $e205))
+ (or $e302 $e259 (not $e253))
+ (or $e135 (not $e155) $e293)
+ (or $e245 $e128 $e194)
+ (or (not $e217) (not $e130) $e176)
+ (or (not $e215) (not $e290) (not $e246))
+ (or $e314 (not $e314) $e318)
+ (or $e116 (not $e299) $e258)
+ (or (not $e278) $e119 $e229)
+ (or $e230 $e188 $e307)
+ (or (not $e185) $e271 $e156)
+ (or (not $e271) $e161 $e246)
+))
+$e322
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz22.delta01.smt b/test/regress/regress0/bv/fuzz22.delta01.smt
new file mode 100644
index 0000000..a1ef9e4
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz22.delta01.smt
@@ -0,0 +1,58 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v3 BitVec[4]))
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:extrafuns ((v4 BitVec[4]))
+:status sat
+:formula
+(flet ($n1 true)
+(let (?n2 bv12[4])
+(flet ($n3 (bvuge ?n2 v2))
+(flet ($n4 (not $n3))
+(flet ($n5 false)
+(let (?n6 bv0[4])
+(let (?n7 (bvnot v0))
+(let (?n8 (bvlshr v1 ?n7))
+(let (?n9 (bvneg ?n8))
+(flet ($n10 (= ?n6 ?n9))
+(flet ($n11 (not $n10))
+(flet ($n12 (or $n5 $n10 $n11))
+(let (?n13 (bvnot v2))
+(let (?n14 (bvcomp ?n2 v0))
+(let (?n15 (zero_extend[3] ?n14))
+(let (?n16 (bvxnor ?n13 ?n15))
+(flet ($n17 (distinct v2 ?n16))
+(let (?n18 bv1[1])
+(flet ($n19 (bvsgt v0 ?n13))
+(let (?n20 bv0[1])
+(let (?n21 (ite $n19 ?n18 ?n20))
+(flet ($n22 (= ?n18 ?n21))
+(flet ($n23 (bvsge v1 ?n6))
+(let (?n24 (ite $n23 ?n18 ?n20))
+(let (?n25 (zero_extend[3] ?n24))
+(let (?n26 (ite $n22 ?n25 ?n13))
+(flet ($n27 (bvsge ?n8 ?n26))
+(flet ($n28 (not $n27))
+(flet ($n29 (or $n5 $n17 $n28))
+(flet ($n30 (bvule ?n2 ?n9))
+(let (?n31 (ite $n30 ?n18 ?n20))
+(let (?n32 (sign_extend[3] ?n31))
+(flet ($n33 (bvsle ?n32 ?n16))
+(flet ($n34 (not $n33))
+(let (?n35 (bvxor v0 v4))
+(flet ($n36 (bvugt ?n8 ?n35))
+(let (?n37 (bvneg ?n13))
+(flet ($n38 (bvslt ?n37 v4))
+(let (?n39 (ite $n38 ?n18 ?n20))
+(flet ($n40 (distinct ?n24 ?n39))
+(let (?n41 (bvlshr ?n8 v3))
+(flet ($n42 (bvslt ?n41 ?n9))
+(flet ($n43 (or $n5 $n40 $n42))
+(flet ($n44 (bvsle ?n7 ?n13))
+(flet ($n45 (bvsle ?n6 ?n41))
+(flet ($n46 (or $n5 $n44 $n45))
+(flet ($n47 (and $n4 $n12 $n29 $n34 $n36 $n43 $n46))
+$n47
+))))))))))))))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/bv/fuzz22.smt b/test/regress/regress0/bv/fuzz22.smt
new file mode 100644
index 0000000..5aad8f7
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz22.smt
@@ -0,0 +1,158 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status sat
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:extrafuns ((v3 BitVec[4]))
+:extrafuns ((v4 BitVec[4]))
+:formula
+(let (?e5 bv12[4])
+(let (?e6 bv12[4])
+(let (?e7 (ite (= bv1[1] (extract[2:2] v0)) v1 v2))
+(let (?e8 (rotate_left[1] v0))
+(let (?e9 (bvnot ?e8))
+(let (?e10 (bvnot v2))
+(let (?e11 (bvcomp v0 ?e5))
+(let (?e12 (bvashr v1 ?e10))
+(let (?e13 (repeat[1] ?e9))
+(let (?e14 (zero_extend[0] ?e6))
+(let (?e15 (ite (bvsge ?e7 ?e14) bv1[1] bv0[1]))
+(let (?e16 (bvlshr ?e12 ?e9))
+(let (?e17 (bvxor v4 ?e8))
+(let (?e18 (bvneg ?e10))
+(let (?e19 (bvnor ?e14 ?e5))
+(let (?e20 (bvneg ?e16))
+(let (?e21 (ite (bvsgt ?e8 ?e10) bv1[1] bv0[1]))
+(let (?e22 (ite (bvslt ?e18 v4) bv1[1] bv0[1]))
+(let (?e23 (ite (= bv1[1] (extract[0:0] ?e21)) (zero_extend[3] ?e15) ?e10))
+(let (?e24 (bvshl ?e6 ?e14))
+(let (?e25 (rotate_left[0] ?e10))
+(let (?e26 (ite (bvult ?e25 ?e17) bv1[1] bv0[1]))
+(let (?e27 (ite (bvult v1 ?e9) bv1[1] bv0[1]))
+(let (?e28 (zero_extend[0] ?e19))
+(let (?e29 (bvor ?e10 ?e9))
+(let (?e30 (ite (bvule ?e6 ?e20) bv1[1] bv0[1]))
+(let (?e31 (bvxor v2 ?e6))
+(let (?e32 (bvmul ?e13 (zero_extend[3] ?e21)))
+(let (?e33 (bvnot ?e27))
+(let (?e34 (sign_extend[0] ?e16))
+(let (?e35 (bvashr ?e16 ?e13))
+(let (?e36 (bvnot ?e7))
+(let (?e37 (bvxnor ?e25 (zero_extend[3] ?e11)))
+(let (?e38 (rotate_right[3] ?e37))
+(let (?e39 (ite (bvult ?e14 (sign_extend[3] ?e33)) bv1[1] bv0[1]))
+(let (?e40 (bvxor ?e34 ?e6))
+(let (?e41 (bvlshr ?e16 v3))
+(flet ($e42 (bvult ?e14 ?e6))
+(flet ($e43 (distinct ?e22 ?e15))
+(flet ($e44 (bvslt v0 ?e7))
+(flet ($e45 (= ?e7 ?e37))
+(flet ($e46 (bvslt ?e13 ?e9))
+(flet ($e47 (bvsge ?e32 (sign_extend[3] ?e39)))
+(flet ($e48 (bvuge ?e37 ?e32))
+(flet ($e49 (bvsgt ?e36 ?e17))
+(flet ($e50 (bvslt v3 ?e7))
+(flet ($e51 (bvult ?e24 ?e16))
+(flet ($e52 (bvuge ?e16 (zero_extend[3] ?e39)))
+(flet ($e53 (= v3 ?e38))
+(flet ($e54 (bvult ?e8 (sign_extend[3] ?e21)))
+(flet ($e55 (= ?e37 v4))
+(flet ($e56 (bvslt v2 (sign_extend[3] ?e30)))
+(flet ($e57 (bvule ?e37 (zero_extend[3] ?e26)))
+(flet ($e58 (bvult v3 ?e19))
+(flet ($e59 (bvslt ?e10 (sign_extend[3] ?e15)))
+(flet ($e60 (= ?e6 ?e12))
+(flet ($e61 (bvule ?e28 (sign_extend[3] ?e39)))
+(flet ($e62 (= ?e17 ?e35))
+(flet ($e63 (bvslt ?e41 (zero_extend[3] ?e21)))
+(flet ($e64 (bvugt v0 ?e13))
+(flet ($e65 (bvuge ?e14 v1))
+(flet ($e66 (bvuge (sign_extend[3] ?e26) ?e18))
+(flet ($e67 (bvult v3 ?e29))
+(flet ($e68 (bvule ?e10 v1))
+(flet ($e69 (bvule ?e19 ?e13))
+(flet ($e70 (= ?e23 ?e12))
+(flet ($e71 (bvslt ?e17 ?e28))
+(flet ($e72 (bvule (zero_extend[3] ?e33) ?e16))
+(flet ($e73 (bvsge ?e23 ?e8))
+(flet ($e74 (bvsle ?e9 ?e10))
+(flet ($e75 (bvslt ?e41 ?e20))
+(flet ($e76 (bvsle (sign_extend[3] ?e30) ?e38))
+(flet ($e77 (bvuge ?e41 (sign_extend[3] ?e11)))
+(flet ($e78 (bvsle ?e24 ?e41))
+(flet ($e79 (bvuge ?e25 (sign_extend[3] ?e21)))
+(flet ($e80 (bvuge ?e24 ?e9))
+(flet ($e81 (bvuge ?e6 v2))
+(flet ($e82 (bvsge ?e13 (sign_extend[3] ?e30)))
+(flet ($e83 (bvsge ?e5 (sign_extend[3] ?e39)))
+(flet ($e84 (bvsgt ?e7 (sign_extend[3] ?e27)))
+(flet ($e85 (bvsle ?e23 ?e14))
+(flet ($e86 (bvult ?e8 (zero_extend[3] ?e39)))
+(flet ($e87 (bvugt ?e25 v2))
+(flet ($e88 (bvslt ?e12 (sign_extend[3] ?e11)))
+(flet ($e89 (bvult v3 ?e14))
+(flet ($e90 (distinct ?e8 ?e38))
+(flet ($e91 (bvslt ?e10 ?e9))
+(flet ($e92 (bvslt ?e32 ?e8))
+(flet ($e93 (bvsle v0 (sign_extend[3] ?e39)))
+(flet ($e94 (= v1 ?e32))
+(flet ($e95 (bvule ?e30 ?e15))
+(flet ($e96 (bvult (sign_extend[3] ?e33) ?e9))
+(flet ($e97 (bvsge ?e16 ?e23))
+(flet ($e98 (bvsge ?e40 (sign_extend[3] ?e21)))
+(flet ($e99 (bvuge ?e14 ?e31))
+(flet ($e100 (bvslt ?e40 ?e9))
+(flet ($e101 (bvsge ?e41 ?e6))
+(flet ($e102 (bvsgt ?e24 ?e24))
+(flet ($e103 (distinct ?e37 v2))
+(flet ($e104 (distinct ?e35 v3))
+(flet ($e105 (distinct v1 (zero_extend[3] ?e21)))
+(flet ($e106 (bvsgt ?e9 v1))
+(flet ($e107 (bvugt ?e10 ?e37))
+(flet ($e108 (bvsgt ?e8 (zero_extend[3] ?e21)))
+(flet ($e109 (bvule (sign_extend[3] ?e27) ?e16))
+(flet ($e110 (= ?e19 ?e20))
+(flet ($e111 (bvslt (sign_extend[3] ?e22) ?e38))
+(flet ($e112 (bvugt ?e34 ?e17))
+(flet ($e113 
+(and
+ (or (not $e110) $e45 $e110)
+ (or $e45 $e103 (not $e97))
+ (or (not $e58) (not $e78) (not $e74))
+ (or (not $e42) (not $e55) (not $e70))
+ (or $e101 (not $e66) $e107)
+ (or $e50 $e98 (not $e86))
+ (or $e74 (not $e76) (not $e106))
+ (or $e93 (not $e79) (not $e49))
+ (or (not $e80) (not $e98) (not $e108))
+ (or (not $e47) (not $e103) $e55)
+ (or (not $e112) (not $e88) (not $e108))
+ (or $e75 (not $e43) $e45)
+ (or (not $e54) (not $e83) (not $e62))
+ (or (not $e45) (not $e56) $e84)
+ (or $e43 (not $e73) $e84)
+ (or (not $e90) (not $e94) $e72)
+ (or (not $e101) $e80 $e91)
+ (or (not $e64) $e89 $e71)
+ (or $e43 $e100 $e101)
+ (or (not $e106) (not $e65) (not $e70))
+ (or (not $e47) $e103 (not $e63))
+ (or (not $e81) (not $e90) $e55)
+ (or $e67 (not $e109) (not $e84))
+ (or $e70 $e73 $e67)
+ (or $e109 $e85 $e89)
+ (or (not $e86) $e75 (not $e70))
+ (or $e91 $e109 $e68)
+ (or (not $e110) $e102 (not $e106))
+ (or (not $e63) (not $e62) $e111)
+ (or $e87 (not $e53) (not $e92))
+ (or $e99 $e43 (not $e94))
+ (or $e69 $e60 $e90)
+ (or (not $e53) $e103 (not $e79))
+ (or (not $e89) (not $e82) $e64)
+ (or $e69 (not $e91) $e103)
+))
+$e113
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz23.delta01.smt b/test/regress/regress0/bv/fuzz23.delta01.smt
new file mode 100644
index 0000000..d7aa145
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz23.delta01.smt
@@ -0,0 +1,13 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v1 BitVec[4]))
+:status sat
+:formula
+(let (?n1 bv1[1])
+(let (?n2 (bvnot v1))
+(let (?n3 bv1[4])
+(let (?n4 (bvsub ?n2 ?n3))
+(let (?n5 (extract[0:0] ?n4))
+(flet ($n6 (= ?n1 ?n5))
+$n6
+)))))))
diff --git a/test/regress/regress0/bv/fuzz23.smt b/test/regress/regress0/bv/fuzz23.smt
new file mode 100644
index 0000000..11b2078
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz23.smt
@@ -0,0 +1,215 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status unsat
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:formula
+(let (?e3 bv1[4])
+(let (?e4 bv11[4])
+(let (?e5 bv2[4])
+(let (?e6 (ite (= bv1[1] (extract[3:3] v2)) v1 ?e3))
+(let (?e7 (bvshl v1 ?e3))
+(let (?e8 (repeat[1] ?e5))
+(let (?e9 (ite (bvslt v2 v2) bv1[1] bv0[1]))
+(let (?e10 (repeat[1] ?e6))
+(let (?e11 (ite (bvuge ?e8 ?e8) bv1[1] bv0[1]))
+(let (?e12 (bvadd (zero_extend[3] ?e11) v2))
+(let (?e13 (bvshl ?e3 v1))
+(let (?e14 (bvnot ?e13))
+(let (?e15 (ite (bvuge ?e12 ?e4) bv1[1] bv0[1]))
+(let (?e16 (ite (bvslt ?e10 ?e10) bv1[1] bv0[1]))
+(let (?e17 (ite (bvsge ?e8 (sign_extend[3] ?e16)) bv1[1] bv0[1]))
+(let (?e18 (sign_extend[0] ?e12))
+(let (?e19 (bvlshr v1 ?e18))
+(let (?e20 (ite (bvuge ?e17 ?e9) bv1[1] bv0[1]))
+(let (?e21 (bvsub ?e14 (sign_extend[3] ?e11)))
+(let (?e22 (repeat[1] ?e13))
+(let (?e23 (bvcomp v2 ?e22))
+(let (?e24 (ite (bvslt ?e7 ?e13) bv1[1] bv0[1]))
+(let (?e25 (bvor (sign_extend[3] ?e9) v1))
+(let (?e26 (bvashr v2 (sign_extend[3] ?e15)))
+(let (?e27 (zero_extend[0] v1))
+(let (?e28 (bvcomp ?e10 ?e12))
+(let (?e29 (ite (bvsle (sign_extend[3] ?e28) ?e5) bv1[1] bv0[1]))
+(let (?e30 (ite (bvsge (zero_extend[3] ?e24) ?e12) bv1[1] bv0[1]))
+(let (?e31 (bvnor ?e25 ?e18))
+(let (?e32 (bvneg ?e11))
+(let (?e33 (bvmul ?e12 v2))
+(let (?e34 (sign_extend[0] ?e4))
+(let (?e35 (ite (bvuge (zero_extend[3] ?e15) ?e26) bv1[1] bv0[1]))
+(let (?e36 (ite (bvslt ?e8 (zero_extend[3] ?e32)) bv1[1] bv0[1]))
+(let (?e37 (ite (distinct ?e27 (zero_extend[3] ?e17)) bv1[1] bv0[1]))
+(let (?e38 (bvxor v2 (sign_extend[3] ?e28)))
+(let (?e39 (ite (bvsle (zero_extend[3] ?e23) ?e25) bv1[1] bv0[1]))
+(let (?e40 (bvor (sign_extend[3] ?e36) ?e8))
+(let (?e41 (repeat[1] ?e18))
+(let (?e42 (bvneg ?e28))
+(let (?e43 (extract[0:0] ?e29))
+(let (?e44 (rotate_right[2] ?e41))
+(let (?e45 (ite (= bv1[1] (extract[0:0] ?e21)) ?e30 ?e36))
+(let (?e46 (bvnand ?e26 ?e18))
+(let (?e47 (bvmul (zero_extend[3] ?e36) ?e44))
+(let (?e48 (bvnor ?e38 v0))
+(flet ($e49 (distinct ?e38 ?e8))
+(flet ($e50 (bvule ?e10 ?e40))
+(flet ($e51 (bvult (zero_extend[3] ?e17) ?e18))
+(flet ($e52 (bvslt (zero_extend[3] ?e45) ?e19))
+(flet ($e53 (bvsge ?e8 ?e31))
+(flet ($e54 (distinct ?e21 ?e5))
+(flet ($e55 (bvsgt ?e11 ?e45))
+(flet ($e56 (bvult ?e33 ?e8))
+(flet ($e57 (bvuge ?e17 ?e43))
+(flet ($e58 (bvugt ?e12 (zero_extend[3] ?e16)))
+(flet ($e59 (= ?e27 (zero_extend[3] ?e20)))
+(flet ($e60 (= ?e7 (sign_extend[3] ?e32)))
+(flet ($e61 (= ?e12 ?e14))
+(flet ($e62 (distinct ?e20 ?e45))
+(flet ($e63 (distinct ?e25 ?e38))
+(flet ($e64 (bvsgt ?e48 ?e6))
+(flet ($e65 (bvsgt ?e32 ?e9))
+(flet ($e66 (bvsge ?e10 ?e10))
+(flet ($e67 (bvuge ?e31 (sign_extend[3] ?e30)))
+(flet ($e68 (bvugt ?e3 v0))
+(flet ($e69 (bvsle ?e8 (sign_extend[3] ?e42)))
+(flet ($e70 (bvule ?e44 ?e46))
+(flet ($e71 (bvsgt (zero_extend[3] ?e24) ?e14))
+(flet ($e72 (bvsgt ?e22 (sign_extend[3] ?e20)))
+(flet ($e73 (distinct ?e11 ?e43))
+(flet ($e74 (bvsgt ?e31 (zero_extend[3] ?e42)))
+(flet ($e75 (bvsgt ?e14 (zero_extend[3] ?e29)))
+(flet ($e76 (bvult (zero_extend[3] ?e20) ?e46))
+(flet ($e77 (bvult (sign_extend[3] ?e37) ?e25))
+(flet ($e78 (bvsle ?e44 ?e3))
+(flet ($e79 (bvsge (sign_extend[3] ?e39) ?e38))
+(flet ($e80 (bvsge ?e31 (zero_extend[3] ?e11)))
+(flet ($e81 (bvsge ?e13 ?e6))
+(flet ($e82 (bvsgt ?e26 (sign_extend[3] ?e24)))
+(flet ($e83 (bvsgt ?e31 ?e19))
+(flet ($e84 (distinct (zero_extend[3] ?e23) ?e13))
+(flet ($e85 (bvsle ?e28 ?e29))
+(flet ($e86 (bvuge ?e46 (sign_extend[3] ?e16)))
+(flet ($e87 (bvugt ?e42 ?e30))
+(flet ($e88 (bvsge ?e10 (zero_extend[3] ?e24)))
+(flet ($e89 (bvsge ?e4 ?e46))
+(flet ($e90 (bvslt ?e20 ?e39))
+(flet ($e91 (bvsgt (zero_extend[3] ?e16) ?e7))
+(flet ($e92 (= ?e19 (zero_extend[3] ?e23)))
+(flet ($e93 (bvuge ?e47 ?e26))
+(flet ($e94 (bvsgt ?e40 ?e7))
+(flet ($e95 (bvsgt ?e11 ?e9))
+(flet ($e96 (bvult ?e26 ?e18))
+(flet ($e97 (= ?e40 ?e41))
+(flet ($e98 (bvslt v0 ?e14))
+(flet ($e99 (bvsgt v0 (zero_extend[3] ?e24)))
+(flet ($e100 (bvule (zero_extend[3] ?e11) ?e33))
+(flet ($e101 (= ?e22 ?e21))
+(flet ($e102 (bvult ?e4 ?e44))
+(flet ($e103 (bvsgt ?e31 ?e34))
+(flet ($e104 (bvuge ?e12 v2))
+(flet ($e105 (bvult ?e24 ?e29))
+(flet ($e106 (bvslt ?e48 ?e33))
+(flet ($e107 (bvult (zero_extend[3] ?e30) ?e13))
+(flet ($e108 (= ?e4 ?e25))
+(flet ($e109 (bvsle ?e15 ?e28))
+(flet ($e110 (bvslt ?e32 ?e32))
+(flet ($e111 (bvule (zero_extend[3] ?e39) ?e38))
+(flet ($e112 (bvugt ?e40 ?e12))
+(flet ($e113 (bvsge (sign_extend[3] ?e30) v1))
+(flet ($e114 (bvugt (sign_extend[3] ?e39) ?e4))
+(flet ($e115 (bvsle ?e26 (zero_extend[3] ?e37)))
+(flet ($e116 (bvult ?e18 ?e33))
+(flet ($e117 (bvsge ?e11 ?e37))
+(flet ($e118 (distinct ?e48 (sign_extend[3] ?e29)))
+(flet ($e119 (bvule ?e42 ?e15))
+(flet ($e120 (distinct (zero_extend[3] ?e20) v1))
+(flet ($e121 (bvsge (zero_extend[3] ?e23) ?e44))
+(flet ($e122 (bvsle ?e44 ?e21))
+(flet ($e123 (bvugt ?e13 ?e14))
+(flet ($e124 (bvslt ?e7 (sign_extend[3] ?e35)))
+(flet ($e125 (bvule ?e13 (zero_extend[3] ?e20)))
+(flet ($e126 (bvugt ?e7 (sign_extend[3] ?e28)))
+(flet ($e127 (bvule ?e12 ?e38))
+(flet ($e128 (bvuge (zero_extend[3] ?e42) ?e22))
+(flet ($e129 (bvult ?e6 ?e44))
+(flet ($e130 (bvsge (zero_extend[3] ?e45) ?e40))
+(flet ($e131 (bvslt ?e25 ?e6))
+(flet ($e132 (distinct ?e19 (zero_extend[3] ?e30)))
+(flet ($e133 (bvugt (zero_extend[3] ?e37) ?e34))
+(flet ($e134 (bvsgt ?e33 ?e22))
+(flet ($e135 (distinct (sign_extend[3] ?e16) ?e25))
+(flet ($e136 (distinct (zero_extend[3] ?e42) ?e34))
+(flet ($e137 (bvslt ?e23 ?e9))
+(flet ($e138 (bvule v0 (zero_extend[3] ?e16)))
+(flet ($e139 (bvsgt ?e5 ?e27))
+(flet ($e140 (bvult ?e35 ?e43))
+(flet ($e141 (bvsle (sign_extend[3] ?e29) ?e18))
+(flet ($e142 (distinct (zero_extend[3] ?e39) ?e33))
+(flet ($e143 (distinct ?e5 ?e8))
+(flet ($e144 (distinct ?e28 ?e17))
+(flet ($e145 (distinct (zero_extend[3] ?e17) ?e14))
+(flet ($e146 (bvuge (sign_extend[3] ?e37) ?e14))
+(flet ($e147 (bvult ?e44 (sign_extend[3] ?e11)))
+(flet ($e148 (bvule (zero_extend[3] ?e35) ?e44))
+(flet ($e149 (= ?e4 (zero_extend[3] ?e28)))
+(flet ($e150 (bvule ?e8 v2))
+(flet ($e151 (bvsle (zero_extend[3] ?e37) ?e6))
+(flet ($e152 (bvuge ?e36 ?e43))
+(flet ($e153 
+(and
+ (or (not $e74) $e58 $e57)
+ (or $e119 (not $e138) $e95)
+ (or (not $e106) $e63 (not $e56))
+ (or $e126 $e64 (not $e137))
+ (or (not $e101) (not $e109) $e59)
+ (or (not $e132) (not $e57) (not $e54))
+ (or $e61 (not $e104) (not $e66))
+ (or (not $e50) $e133 $e83)
+ (or $e53 $e151 (not $e113))
+ (or $e104 (not $e75) (not $e82))
+ (or (not $e74) $e56 $e101)
+ (or $e149 (not $e83) (not $e61))
+ (or (not $e88) (not $e122) (not $e122))
+ (or $e98 $e114 $e109)
+ (or $e85 $e60 $e130)
+ (or (not $e61) (not $e118) $e75)
+ (or (not $e107) $e138 $e55)
+ (or $e81 $e129 (not $e88))
+ (or $e102 $e129 $e97)
+ (or (not $e99) (not $e130) (not $e89))
+ (or (not $e53) (not $e49) (not $e107))
+ (or $e152 (not $e134) (not $e58))
+ (or (not $e141) $e120 (not $e104))
+ (or (not $e138) (not $e101) $e148)
+ (or (not $e64) $e78 $e50)
+ (or $e98 (not $e152) $e74)
+ (or (not $e53) (not $e146) (not $e114))
+ (or $e113 (not $e105) (not $e133))
+ (or $e89 $e92 (not $e115))
+ (or $e119 (not $e91) (not $e129))
+ (or $e138 (not $e101) (not $e88))
+ (or $e125 (not $e111) $e135)
+ (or $e131 (not $e114) $e134)
+ (or $e126 $e136 (not $e122))
+ (or (not $e131) (not $e143) (not $e68))
+ (or $e113 (not $e141) $e101)
+ (or $e80 (not $e110) $e102)
+ (or $e138 (not $e102) (not $e145))
+ (or $e81 $e78 (not $e65))
+ (or (not $e94) $e74 (not $e54))
+ (or (not $e145) $e49 (not $e49))
+ (or $e126 $e52 $e80)
+ (or (not $e127) $e71 (not $e86))
+ (or (not $e140) $e70 $e129)
+ (or $e137 $e55 (not $e108))
+ (or (not $e57) $e93 (not $e142))
+ (or $e56 (not $e116) $e65)
+ (or (not $e151) $e51 $e50)
+ (or $e55 (not $e132) (not $e145))
+ (or $e83 $e148 $e79)
+ (or (not $e141) (not $e68) (not $e76))
+ (or (not $e107) (not $e63) (not $e99))
+))
+$e153
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz24.delta01.smt b/test/regress/regress0/bv/fuzz24.delta01.smt
new file mode 100644
index 0000000..84c9db8
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz24.delta01.smt
@@ -0,0 +1,15 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v1 BitVec[4]))
+:status unsat
+:formula
+(let (?n1 bv0[4])
+(flet ($n2 (bvslt v1 ?n1))
+(let (?n3 bv1[1])
+(let (?n4 bv0[1])
+(let (?n5 (ite $n2 ?n3 ?n4))
+(let (?n6 (bvnot ?n5))
+(let (?n7 (bvneg ?n5))
+(flet ($n8 (= ?n6 ?n7))
+$n8
+)))))))))
diff --git a/test/regress/regress0/bv/fuzz24.smt b/test/regress/regress0/bv/fuzz24.smt
new file mode 100644
index 0000000..a32c1e8
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz24.smt
@@ -0,0 +1,203 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status unsat
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:formula
+(let (?e2 bv15[4])
+(let (?e3 bv6[4])
+(let (?e4 bv13[4])
+(let (?e5 bv12[4])
+(let (?e6 (ite (bvslt v1 ?e4) bv1[1] bv0[1]))
+(let (?e7 (bvxor ?e2 ?e5))
+(let (?e8 (sign_extend[1] ?e6))
+(let (?e9 (rotate_right[2] ?e2))
+(let (?e10 (bvshl v1 ?e4))
+(let (?e11 (bvmul v1 (zero_extend[2] ?e8)))
+(let (?e12 (ite (bvugt ?e11 ?e10) bv1[1] bv0[1]))
+(let (?e13 (bvshl ?e4 ?e5))
+(let (?e14 (bvashr (zero_extend[3] ?e12) ?e5))
+(let (?e15 (bvnor ?e4 ?e10))
+(let (?e16 (ite (bvsgt ?e5 ?e13) bv1[1] bv0[1]))
+(let (?e17 (zero_extend[0] ?e11))
+(let (?e18 (bvneg ?e14))
+(let (?e19 (repeat[4] ?e6))
+(let (?e20 (sign_extend[0] ?e9))
+(let (?e21 (bvsub v1 ?e2))
+(let (?e22 (ite (distinct ?e17 (sign_extend[3] ?e16)) bv1[1] bv0[1]))
+(let (?e23 (ite (bvult ?e2 ?e11) bv1[1] bv0[1]))
+(let (?e24 (ite (= bv1[1] (extract[3:3] ?e21)) ?e13 ?e4))
+(let (?e25 (bvand ?e10 ?e24))
+(let (?e26 (ite (= bv1[1] (extract[2:2] ?e14)) (sign_extend[3] ?e6) ?e24))
+(let (?e27 (rotate_left[0] ?e23))
+(let (?e28 (ite (bvule ?e18 (zero_extend[3] ?e22)) bv1[1] bv0[1]))
+(let (?e29 (ite (bvult ?e19 ?e3) bv1[1] bv0[1]))
+(let (?e30 (ite (= bv1[1] (extract[0:0] ?e27)) ?e20 ?e20))
+(let (?e31 (bvneg ?e29))
+(let (?e32 (ite (bvsge ?e10 ?e30) bv1[1] bv0[1]))
+(let (?e33 (bvashr ?e28 ?e27))
+(let (?e34 (bvnot ?e6))
+(let (?e35 (bvnand (zero_extend[3] ?e6) ?e26))
+(let (?e36 (ite (bvsge (sign_extend[3] ?e16) ?e18) bv1[1] bv0[1]))
+(let (?e37 (ite (bvsgt (sign_extend[3] ?e16) ?e30) bv1[1] bv0[1]))
+(let (?e38 (ite (bvsgt ?e31 ?e28) bv1[1] bv0[1]))
+(let (?e39 (ite (bvuge ?e32 ?e22) bv1[1] bv0[1]))
+(let (?e40 (ite (distinct ?e21 (sign_extend[3] ?e27)) bv1[1] bv0[1]))
+(let (?e41 (bvsub ?e15 ?e20))
+(let (?e42 (bvcomp (zero_extend[3] ?e34) ?e25))
+(let (?e43 (bvneg ?e6))
+(let (?e44 (ite (bvslt ?e34 ?e39) bv1[1] bv0[1]))
+(let (?e45 (ite (bvsge ?e31 ?e42) bv1[1] bv0[1]))
+(let (?e46 (bvnand ?e44 ?e32))
+(let (?e47 (ite (bvslt ?e39 ?e6) bv1[1] bv0[1]))
+(let (?e48 (ite (distinct v0 ?e35) bv1[1] bv0[1]))
+(flet ($e49 (bvult ?e13 (sign_extend[2] ?e8)))
+(flet ($e50 (bvsgt ?e39 ?e46))
+(flet ($e51 (bvult ?e38 ?e42))
+(flet ($e52 (bvult ?e14 (zero_extend[3] ?e33)))
+(flet ($e53 (= ?e30 ?e24))
+(flet ($e54 (bvult (zero_extend[3] ?e34) ?e35))
+(flet ($e55 (bvsle ?e41 (zero_extend[3] ?e27)))
+(flet ($e56 (distinct (sign_extend[3] ?e46) v1))
+(flet ($e57 (bvsge (sign_extend[3] ?e12) ?e26))
+(flet ($e58 (bvule ?e13 (sign_extend[3] ?e22)))
+(flet ($e59 (bvsle ?e47 ?e28))
+(flet ($e60 (= (zero_extend[3] ?e47) ?e11))
+(flet ($e61 (bvsge (zero_extend[3] ?e22) ?e9))
+(flet ($e62 (bvult ?e44 ?e37))
+(flet ($e63 (distinct ?e30 ?e19))
+(flet ($e64 (bvugt ?e38 ?e42))
+(flet ($e65 (bvult ?e21 (zero_extend[3] ?e47)))
+(flet ($e66 (= ?e43 ?e34))
+(flet ($e67 (bvult ?e38 ?e38))
+(flet ($e68 (= v0 (sign_extend[3] ?e6)))
+(flet ($e69 (bvsle (zero_extend[3] ?e37) ?e7))
+(flet ($e70 (bvult ?e12 ?e47))
+(flet ($e71 (bvsle (zero_extend[3] ?e6) v1))
+(flet ($e72 (bvsle ?e5 ?e13))
+(flet ($e73 (bvult ?e33 ?e39))
+(flet ($e74 (bvule (sign_extend[3] ?e46) ?e24))
+(flet ($e75 (distinct ?e20 ?e20))
+(flet ($e76 (bvslt ?e17 (zero_extend[3] ?e40)))
+(flet ($e77 (= ?e7 (zero_extend[3] ?e34)))
+(flet ($e78 (bvslt ?e15 ?e41))
+(flet ($e79 (bvsle ?e34 ?e47))
+(flet ($e80 (bvslt (zero_extend[3] ?e36) ?e2))
+(flet ($e81 (bvult (sign_extend[3] ?e37) ?e18))
+(flet ($e82 (bvugt (zero_extend[3] ?e27) ?e18))
+(flet ($e83 (bvugt ?e30 ?e2))
+(flet ($e84 (bvsle (sign_extend[3] ?e12) ?e41))
+(flet ($e85 (bvsgt ?e10 (zero_extend[3] ?e47)))
+(flet ($e86 (bvslt ?e36 ?e38))
+(flet ($e87 (bvsgt ?e25 (sign_extend[3] ?e40)))
+(flet ($e88 (bvsle (sign_extend[3] ?e32) ?e17))
+(flet ($e89 (bvugt (zero_extend[3] ?e6) v0))
+(flet ($e90 (bvugt ?e39 ?e47))
+(flet ($e91 (bvule ?e18 (zero_extend[3] ?e34)))
+(flet ($e92 (bvult ?e43 ?e47))
+(flet ($e93 (bvsge (sign_extend[3] ?e29) ?e20))
+(flet ($e94 (bvsgt ?e13 (zero_extend[3] ?e36)))
+(flet ($e95 (distinct ?e7 ?e7))
+(flet ($e96 (bvslt (zero_extend[3] ?e16) ?e30))
+(flet ($e97 (bvsgt v1 ?e35))
+(flet ($e98 (bvugt ?e22 ?e44))
+(flet ($e99 (bvuge ?e2 ?e5))
+(flet ($e100 (distinct ?e19 (sign_extend[3] ?e39)))
+(flet ($e101 (bvsge ?e4 (sign_extend[3] ?e44)))
+(flet ($e102 (bvsgt ?e6 ?e6))
+(flet ($e103 (bvsge ?e32 ?e12))
+(flet ($e104 (bvsle ?e17 ?e17))
+(flet ($e105 (bvsgt ?e16 ?e34))
+(flet ($e106 (bvsle ?e26 v1))
+(flet ($e107 (bvult ?e13 v0))
+(flet ($e108 (bvugt (zero_extend[3] ?e12) ?e25))
+(flet ($e109 (= ?e27 ?e34))
+(flet ($e110 (bvsge ?e26 (zero_extend[3] ?e28)))
+(flet ($e111 (bvslt ?e22 ?e33))
+(flet ($e112 (= (zero_extend[1] ?e48) ?e8))
+(flet ($e113 (bvslt (sign_extend[3] ?e12) ?e15))
+(flet ($e114 (bvsle ?e11 ?e26))
+(flet ($e115 (bvult ?e38 ?e16))
+(flet ($e116 (bvuge (sign_extend[3] ?e38) ?e4))
+(flet ($e117 (= ?e10 (zero_extend[3] ?e32)))
+(flet ($e118 (bvsgt (zero_extend[3] ?e27) ?e41))
+(flet ($e119 (bvslt ?e10 ?e21))
+(flet ($e120 (= ?e12 ?e44))
+(flet ($e121 (bvugt ?e9 (sign_extend[3] ?e22)))
+(flet ($e122 (bvsle ?e24 (sign_extend[3] ?e29)))
+(flet ($e123 (bvule ?e16 ?e44))
+(flet ($e124 (bvuge (zero_extend[3] ?e48) ?e11))
+(flet ($e125 (bvult ?e39 ?e45))
+(flet ($e126 (bvugt ?e40 ?e16))
+(flet ($e127 (bvsgt ?e9 ?e3))
+(flet ($e128 (bvsgt ?e36 ?e47))
+(flet ($e129 (= (zero_extend[3] ?e22) ?e9))
+(flet ($e130 (bvule ?e11 (zero_extend[3] ?e16)))
+(flet ($e131 (bvslt ?e32 ?e39))
+(flet ($e132 (= (zero_extend[3] ?e38) ?e35))
+(flet ($e133 (bvsge (sign_extend[3] ?e12) ?e7))
+(flet ($e134 (bvult ?e13 ?e14))
+(flet ($e135 (bvuge (sign_extend[1] ?e16) ?e8))
+(flet ($e136 (bvuge ?e9 (zero_extend[3] ?e33)))
+(flet ($e137 (bvule ?e14 ?e10))
+(flet ($e138 (= (sign_extend[3] ?e43) ?e11))
+(flet ($e139 (bvsge ?e39 ?e44))
+(flet ($e140 (bvsle ?e2 ?e18))
+(flet ($e141 (bvslt (sign_extend[3] ?e31) ?e4))
+(flet ($e142 (bvsge ?e9 (zero_extend[3] ?e27)))
+(flet ($e143 (bvsgt ?e18 (zero_extend[3] ?e39)))
+(flet ($e144 (bvsge ?e5 (zero_extend[3] ?e23)))
+(flet ($e145 
+(and
+ (or $e117 (not $e78) $e113)
+ (or (not $e104) (not $e95) (not $e138))
+ (or (not $e105) $e83 (not $e138))
+ (or $e121 (not $e67) (not $e106))
+ (or (not $e75) $e116 $e131)
+ (or $e96 (not $e103) $e120)
+ (or $e64 (not $e105) $e86)
+ (or $e132 (not $e131) (not $e127))
+ (or $e67 (not $e121) $e135)
+ (or $e58 (not $e73) (not $e120))
+ (or (not $e90) (not $e54) $e119)
+ (or $e103 (not $e122) (not $e144))
+ (or (not $e141) $e140 $e89)
+ (or (not $e73) $e60 $e79)
+ (or $e89 $e129 (not $e74))
+ (or $e92 (not $e112) (not $e60))
+ (or (not $e139) (not $e126) (not $e101))
+ (or $e64 $e104 $e101)
+ (or (not $e112) $e53 $e91)
+ (or (not $e128) $e93 (not $e131))
+ (or $e113 (not $e99) (not $e73))
+ (or $e86 (not $e70) $e66)
+ (or $e131 (not $e125) $e140)
+ (or (not $e51) $e140 (not $e102))
+ (or $e68 (not $e144) (not $e119))
+ (or (not $e132) $e66 $e114)
+ (or (not $e137) (not $e73) $e108)
+ (or $e86 (not $e57) (not $e75))
+ (or (not $e59) (not $e124) (not $e81))
+ (or $e130 $e121 $e130)
+ (or $e138 (not $e136) (not $e129))
+ (or $e108 $e115 $e55)
+ (or (not $e130) $e63 $e107)
+ (or $e142 $e92 $e65)
+ (or (not $e130) $e140 (not $e64))
+ (or $e123 (not $e92) (not $e115))
+ (or (not $e51) $e54 (not $e77))
+ (or $e70 (not $e75) $e129)
+ (or $e93 (not $e74) (not $e144))
+ (or $e104 $e68 (not $e136))
+ (or (not $e92) (not $e126) $e111)
+ (or (not $e105) $e91 (not $e52))
+ (or (not $e57) (not $e88) (not $e75))
+ (or $e127 $e114 $e99)
+ (or $e125 (not $e85) $e123)
+ (or (not $e90) (not $e49) (not $e112))
+ (or $e135 (not $e110) (not $e61))
+ (or $e73 $e124 (not $e115))
+))
+$e145
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz25.delta01.smt b/test/regress/regress0/bv/fuzz25.delta01.smt
new file mode 100644
index 0000000..01a7da5
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz25.delta01.smt
@@ -0,0 +1,17 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:status sat
+:formula
+(let (?n1 bv0[4])
+(flet ($n2 (bvule v0 ?n1))
+(let (?n3 bv1[1])
+(let (?n4 bv0[1])
+(let (?n5 (ite $n2 ?n3 ?n4))
+(let (?n6 (sign_extend[3] ?n5))
+(let (?n7 (bvmul v1 ?n6))
+(let (?n8 (bvsub v0 ?n7))
+(flet ($n9 (distinct ?n7 ?n8))
+$n9
+))))))))))
diff --git a/test/regress/regress0/bv/fuzz25.smt b/test/regress/regress0/bv/fuzz25.smt
new file mode 100644
index 0000000..a73ddb5
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz25.smt
@@ -0,0 +1,356 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status unsat
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:formula
+(let (?e3 bv2[4])
+(let (?e4 bv3[4])
+(let (?e5 bv15[4])
+(let (?e6 bv13[4])
+(let (?e7 (ite (bvule v0 ?e3) bv1[1] bv0[1]))
+(let (?e8 (zero_extend[0] v1))
+(let (?e9 (bvnor v0 v1))
+(let (?e10 (bvneg v1))
+(let (?e11 (bvxnor ?e8 v1))
+(let (?e12 (ite (bvugt ?e5 ?e11) bv1[1] bv0[1]))
+(let (?e13 (ite (bvugt ?e10 ?e11) bv1[1] bv0[1]))
+(let (?e14 (repeat[1] v1))
+(let (?e15 (ite (= ?e5 ?e5) bv1[1] bv0[1]))
+(let (?e16 (bvnot ?e14))
+(let (?e17 (ite (bvslt ?e11 (sign_extend[3] ?e7)) bv1[1] bv0[1]))
+(let (?e18 (ite (bvule ?e4 ?e16) bv1[1] bv0[1]))
+(let (?e19 (ite (bvsge v1 (sign_extend[3] ?e18)) bv1[1] bv0[1]))
+(let (?e20 (ite (= v0 (sign_extend[3] ?e15)) bv1[1] bv0[1]))
+(let (?e21 (ite (bvule ?e3 v0) bv1[1] bv0[1]))
+(let (?e22 (ite (bvsgt ?e16 ?e9) bv1[1] bv0[1]))
+(let (?e23 (extract[0:0] ?e21))
+(let (?e24 (bvnot ?e10))
+(let (?e25 (rotate_right[0] ?e17))
+(let (?e26 (bvnand v0 ?e11))
+(let (?e27 (ite (bvult ?e7 ?e25) bv1[1] bv0[1]))
+(let (?e28 (bvmul (sign_extend[3] ?e7) v1))
+(let (?e29 (ite (= bv1[1] (extract[1:1] ?e8)) (zero_extend[3] ?e20) ?e26))
+(let (?e30 (ite (= bv1[1] (extract[0:0] ?e12)) ?e29 (zero_extend[3] ?e12)))
+(let (?e31 (bvsub v0 ?e28))
+(let (?e32 (bvand v1 (zero_extend[3] ?e20)))
+(let (?e33 (bvcomp (sign_extend[3] ?e27) v1))
+(let (?e34 (ite (= (zero_extend[3] ?e19) ?e11) bv1[1] bv0[1]))
+(let (?e35 (bvashr ?e34 ?e20))
+(let (?e36 (bvadd ?e31 (sign_extend[3] ?e19)))
+(let (?e37 (bvashr ?e32 (zero_extend[3] ?e19)))
+(let (?e38 (repeat[1] ?e30))
+(let (?e39 (bvand ?e3 (zero_extend[3] ?e15)))
+(let (?e40 (ite (bvult ?e12 ?e17) bv1[1] bv0[1]))
+(let (?e41 (ite (distinct ?e39 ?e28) bv1[1] bv0[1]))
+(let (?e42 (extract[1:1] ?e14))
+(let (?e43 (rotate_right[2] ?e29))
+(let (?e44 (bvand (sign_extend[3] ?e13) ?e4))
+(let (?e45 (bvsub ?e29 (zero_extend[3] ?e35)))
+(let (?e46 (bvlshr v0 (zero_extend[3] ?e20)))
+(let (?e47 (bvsub ?e41 ?e17))
+(let (?e48 (bvnor ?e29 (zero_extend[3] ?e18)))
+(let (?e49 (ite (bvsle ?e25 ?e12) bv1[1] bv0[1]))
+(let (?e50 (ite (bvsle (sign_extend[3] ?e35) ?e31) bv1[1] bv0[1]))
+(let (?e51 (zero_extend[0] ?e31))
+(let (?e52 (ite (bvugt v2 (sign_extend[3] ?e15)) bv1[1] bv0[1]))
+(let (?e53 (bvshl ?e16 (sign_extend[3] ?e47)))
+(let (?e54 (ite (= ?e44 v0) bv1[1] bv0[1]))
+(let (?e55 (bvshl (zero_extend[3] ?e34) ?e44))
+(let (?e56 (bvmul ?e10 ?e36))
+(let (?e57 (ite (= ?e38 (sign_extend[3] ?e27)) bv1[1] bv0[1]))
+(let (?e58 (bvadd (sign_extend[3] ?e13) ?e36))
+(let (?e59 (repeat[1] ?e5))
+(let (?e60 (ite (bvule ?e9 (zero_extend[3] ?e12)) bv1[1] bv0[1]))
+(let (?e61 (ite (bvuge v1 (sign_extend[3] ?e19)) bv1[1] bv0[1]))
+(let (?e62 (bvnot ?e33))
+(let (?e63 (bvnand ?e49 ?e25))
+(let (?e64 (ite (bvugt (sign_extend[3] ?e62) ?e44) bv1[1] bv0[1]))
+(let (?e65 (ite (bvslt (sign_extend[3] ?e33) ?e8) bv1[1] bv0[1]))
+(let (?e66 (ite (bvsge ?e6 ?e11) bv1[1] bv0[1]))
+(flet ($e67 (bvugt ?e13 ?e65))
+(flet ($e68 (bvslt ?e58 ?e48))
+(flet ($e69 (bvult ?e32 ?e10))
+(flet ($e70 (bvugt v1 (zero_extend[3] ?e66)))
+(flet ($e71 (distinct ?e28 ?e51))
+(flet ($e72 (bvult ?e32 (zero_extend[3] ?e23)))
+(flet ($e73 (= ?e9 ?e9))
+(flet ($e74 (bvsle ?e65 ?e50))
+(flet ($e75 (bvslt ?e32 (sign_extend[3] ?e40)))
+(flet ($e76 (bvult ?e20 ?e7))
+(flet ($e77 (bvule ?e24 (sign_extend[3] ?e19)))
+(flet ($e78 (bvsgt ?e39 (zero_extend[3] ?e18)))
+(flet ($e79 (bvuge ?e22 ?e25))
+(flet ($e80 (= ?e3 ?e10))
+(flet ($e81 (bvule ?e43 (sign_extend[3] ?e7)))
+(flet ($e82 (bvugt ?e55 ?e44))
+(flet ($e83 (bvslt ?e51 ?e30))
+(flet ($e84 (= ?e32 (zero_extend[3] ?e40)))
+(flet ($e85 (bvugt (sign_extend[3] ?e35) ?e48))
+(flet ($e86 (distinct ?e6 ?e32))
+(flet ($e87 (distinct (sign_extend[3] ?e19) ?e32))
+(flet ($e88 (bvsgt ?e32 (zero_extend[3] ?e65)))
+(flet ($e89 (bvugt ?e21 ?e13))
+(flet ($e90 (= v0 (zero_extend[3] ?e13)))
+(flet ($e91 (bvsgt (sign_extend[3] ?e64) ?e14))
+(flet ($e92 (distinct ?e58 (zero_extend[3] ?e21)))
+(flet ($e93 (bvule (zero_extend[3] ?e66) ?e28))
+(flet ($e94 (bvugt ?e24 ?e37))
+(flet ($e95 (bvule v0 (sign_extend[3] ?e60)))
+(flet ($e96 (bvslt ?e5 (zero_extend[3] ?e40)))
+(flet ($e97 (bvule ?e27 ?e17))
+(flet ($e98 (= ?e17 ?e47))
+(flet ($e99 (bvsge ?e53 v2))
+(flet ($e100 (bvsle (sign_extend[3] ?e35) ?e32))
+(flet ($e101 (bvugt ?e24 (zero_extend[3] ?e15)))
+(flet ($e102 (bvugt ?e52 ?e50))
+(flet ($e103 (bvuge v2 (sign_extend[3] ?e57)))
+(flet ($e104 (bvule ?e35 ?e57))
+(flet ($e105 (bvsgt (sign_extend[3] ?e62) ?e4))
+(flet ($e106 (bvsgt ?e9 v2))
+(flet ($e107 (bvsge ?e56 (zero_extend[3] ?e52)))
+(flet ($e108 (bvsle ?e21 ?e27))
+(flet ($e109 (bvsge ?e58 ?e30))
+(flet ($e110 (bvsgt ?e23 ?e40))
+(flet ($e111 (distinct ?e20 ?e40))
+(flet ($e112 (bvsge ?e9 ?e28))
+(flet ($e113 (bvule ?e32 ?e37))
+(flet ($e114 (bvsge (sign_extend[3] ?e15) ?e8))
+(flet ($e115 (bvsgt ?e46 (sign_extend[3] ?e27)))
+(flet ($e116 (distinct (sign_extend[3] ?e49) ?e30))
+(flet ($e117 (bvugt (zero_extend[3] ?e27) ?e26))
+(flet ($e118 (bvule (zero_extend[3] ?e64) ?e5))
+(flet ($e119 (bvugt v0 ?e29))
+(flet ($e120 (bvsgt ?e34 ?e17))
+(flet ($e121 (distinct ?e6 (sign_extend[3] ?e50)))
+(flet ($e122 (bvult (zero_extend[3] ?e7) ?e39))
+(flet ($e123 (bvsgt ?e26 ?e4))
+(flet ($e124 (bvslt ?e11 ?e30))
+(flet ($e125 (bvuge ?e28 ?e6))
+(flet ($e126 (= ?e55 (sign_extend[3] ?e42)))
+(flet ($e127 (bvugt ?e29 (zero_extend[3] ?e27)))
+(flet ($e128 (bvsge ?e6 (sign_extend[3] ?e50)))
+(flet ($e129 (bvugt ?e19 ?e50))
+(flet ($e130 (bvsle ?e14 (zero_extend[3] ?e25)))
+(flet ($e131 (bvule ?e55 (sign_extend[3] ?e64)))
+(flet ($e132 (bvslt ?e56 ?e59))
+(flet ($e133 (bvsgt ?e17 ?e13))
+(flet ($e134 (bvsle (zero_extend[3] ?e61) ?e45))
+(flet ($e135 (bvsge ?e44 (sign_extend[3] ?e62)))
+(flet ($e136 (bvsle ?e40 ?e41))
+(flet ($e137 (bvsgt ?e13 ?e40))
+(flet ($e138 (bvsge ?e53 ?e45))
+(flet ($e139 (bvugt ?e32 (zero_extend[3] ?e25)))
+(flet ($e140 (distinct ?e57 ?e65))
+(flet ($e141 (bvsgt v1 ?e3))
+(flet ($e142 (distinct ?e9 ?e9))
+(flet ($e143 (bvsle ?e62 ?e34))
+(flet ($e144 (distinct ?e24 (sign_extend[3] ?e22)))
+(flet ($e145 (bvsle ?e45 (sign_extend[3] ?e12)))
+(flet ($e146 (bvslt ?e31 (sign_extend[3] ?e15)))
+(flet ($e147 (bvult ?e29 ?e11))
+(flet ($e148 (= ?e23 ?e62))
+(flet ($e149 (bvsge ?e50 ?e17))
+(flet ($e150 (bvugt (sign_extend[3] ?e63) ?e9))
+(flet ($e151 (bvule ?e37 (sign_extend[3] ?e27)))
+(flet ($e152 (bvule ?e65 ?e64))
+(flet ($e153 (distinct ?e10 v1))
+(flet ($e154 (distinct ?e24 ?e44))
+(flet ($e155 (bvslt ?e60 ?e18))
+(flet ($e156 (bvsle (sign_extend[3] ?e66) ?e6))
+(flet ($e157 (bvugt ?e14 ?e28))
+(flet ($e158 (bvule v1 ?e43))
+(flet ($e159 (distinct ?e30 (sign_extend[3] ?e33)))
+(flet ($e160 (bvult ?e46 ?e48))
+(flet ($e161 (bvsle ?e36 ?e32))
+(flet ($e162 (bvuge ?e9 ?e11))
+(flet ($e163 (bvslt ?e34 ?e22))
+(flet ($e164 (bvsle ?e55 (sign_extend[3] ?e41)))
+(flet ($e165 (bvule ?e58 (sign_extend[3] ?e41)))
+(flet ($e166 (bvsle ?e56 (zero_extend[3] ?e42)))
+(flet ($e167 (bvslt ?e58 (sign_extend[3] ?e61)))
+(flet ($e168 (distinct ?e34 ?e64))
+(flet ($e169 (bvule ?e45 (zero_extend[3] ?e27)))
+(flet ($e170 (bvult ?e35 ?e41))
+(flet ($e171 (bvugt (sign_extend[3] ?e41) ?e37))
+(flet ($e172 (= ?e4 ?e31))
+(flet ($e173 (bvuge ?e28 ?e24))
+(flet ($e174 (= ?e25 ?e21))
+(flet ($e175 (bvsle ?e40 ?e57))
+(flet ($e176 (bvule ?e26 (zero_extend[3] ?e47)))
+(flet ($e177 (= ?e28 v0))
+(flet ($e178 (bvult ?e44 (zero_extend[3] ?e20)))
+(flet ($e179 (bvugt ?e59 (sign_extend[3] ?e23)))
+(flet ($e180 (bvsgt ?e32 (zero_extend[3] ?e20)))
+(flet ($e181 (bvult v0 ?e26))
+(flet ($e182 (bvule ?e16 ?e56))
+(flet ($e183 (bvuge ?e5 ?e36))
+(flet ($e184 (bvsgt ?e33 ?e42))
+(flet ($e185 (bvsge v2 (sign_extend[3] ?e12)))
+(flet ($e186 (bvule ?e12 ?e7))
+(flet ($e187 (bvsgt ?e59 ?e46))
+(flet ($e188 (= ?e45 (zero_extend[3] ?e22)))
+(flet ($e189 (bvule ?e10 ?e16))
+(flet ($e190 (bvslt ?e51 (zero_extend[3] ?e66)))
+(flet ($e191 (bvsle (sign_extend[3] ?e15) ?e37))
+(flet ($e192 (bvsle (zero_extend[3] ?e63) ?e38))
+(flet ($e193 (bvugt ?e43 ?e11))
+(flet ($e194 (bvsgt (zero_extend[3] ?e17) ?e48))
+(flet ($e195 (bvsgt ?e10 (zero_extend[3] ?e42)))
+(flet ($e196 (bvsle ?e33 ?e20))
+(flet ($e197 (bvslt ?e29 (zero_extend[3] ?e27)))
+(flet ($e198 (distinct ?e53 ?e44))
+(flet ($e199 (bvule ?e11 (zero_extend[3] ?e63)))
+(flet ($e200 (bvsge ?e19 ?e47))
+(flet ($e201 (= ?e17 ?e27))
+(flet ($e202 (bvuge (zero_extend[3] ?e15) ?e43))
+(flet ($e203 (= ?e10 (sign_extend[3] ?e60)))
+(flet ($e204 (bvugt ?e43 (zero_extend[3] ?e57)))
+(flet ($e205 (distinct ?e48 (zero_extend[3] ?e41)))
+(flet ($e206 (bvsge ?e56 ?e53))
+(flet ($e207 (bvsge (sign_extend[3] ?e23) ?e4))
+(flet ($e208 (bvsle v0 ?e31))
+(flet ($e209 (bvslt ?e28 (zero_extend[3] ?e27)))
+(flet ($e210 (distinct (sign_extend[3] ?e41) ?e46))
+(flet ($e211 (bvslt (sign_extend[3] ?e12) ?e38))
+(flet ($e212 (bvsgt (zero_extend[3] ?e49) ?e39))
+(flet ($e213 (bvsgt ?e31 (sign_extend[3] ?e62)))
+(flet ($e214 (bvuge ?e40 ?e52))
+(flet ($e215 (bvsle ?e44 (sign_extend[3] ?e65)))
+(flet ($e216 (bvsle v0 (zero_extend[3] ?e13)))
+(flet ($e217 (bvugt ?e35 ?e57))
+(flet ($e218 (bvsgt (sign_extend[3] ?e64) ?e8))
+(flet ($e219 (bvule (sign_extend[3] ?e41) ?e32))
+(flet ($e220 (bvugt ?e56 ?e39))
+(flet ($e221 (bvuge (zero_extend[3] ?e25) ?e38))
+(flet ($e222 (bvuge (sign_extend[3] ?e57) ?e36))
+(flet ($e223 (bvsge ?e27 ?e7))
+(flet ($e224 (bvuge ?e66 ?e15))
+(flet ($e225 (bvuge ?e56 (zero_extend[3] ?e63)))
+(flet ($e226 (bvuge ?e4 ?e36))
+(flet ($e227 (bvugt ?e37 ?e9))
+(flet ($e228 (bvule ?e44 (sign_extend[3] ?e61)))
+(flet ($e229 (= ?e19 ?e47))
+(flet ($e230 (bvuge ?e28 (zero_extend[3] ?e25)))
+(flet ($e231 (bvsgt ?e32 (zero_extend[3] ?e18)))
+(flet ($e232 (bvuge ?e57 ?e57))
+(flet ($e233 (bvuge v2 ?e38))
+(flet ($e234 (bvuge ?e15 ?e57))
+(flet ($e235 (bvuge ?e58 v2))
+(flet ($e236 (bvuge ?e4 ?e43))
+(flet ($e237 (bvsle v0 (sign_extend[3] ?e19)))
+(flet ($e238 (bvslt (zero_extend[3] ?e20) ?e51))
+(flet ($e239 (= ?e58 (sign_extend[3] ?e49)))
+(flet ($e240 (bvult ?e5 (zero_extend[3] ?e33)))
+(flet ($e241 (bvugt ?e42 ?e61))
+(flet ($e242 (bvugt ?e46 v1))
+(flet ($e243 (= ?e30 (zero_extend[3] ?e15)))
+(flet ($e244 (bvult ?e36 (sign_extend[3] ?e61)))
+(flet ($e245 (bvsle ?e62 ?e65))
+(flet ($e246 (bvsgt ?e10 (zero_extend[3] ?e65)))
+(flet ($e247 (bvule ?e16 (sign_extend[3] ?e66)))
+(flet ($e248 (= ?e14 ?e44))
+(flet ($e249 (bvule ?e30 ?e58))
+(flet ($e250 (bvslt (zero_extend[3] ?e42) ?e48))
+(flet ($e251 (bvsle (sign_extend[3] ?e35) ?e31))
+(flet ($e252 (bvugt (sign_extend[3] ?e54) ?e4))
+(flet ($e253 
+(and
+ (or $e183 $e232 (not $e143))
+ (or $e127 (not $e74) $e73)
+ (or (not $e112) (not $e81) $e71)
+ (or $e245 $e180 $e130)
+ (or $e115 (not $e249) (not $e82))
+ (or $e99 (not $e177) (not $e182))
+ (or (not $e243) (not $e183) (not $e79))
+ (or (not $e150) (not $e171) $e161)
+ (or (not $e91) $e105 $e129)
+ (or (not $e187) $e119 $e107)
+ (or (not $e166) (not $e74) $e209)
+ (or (not $e203) (not $e69) (not $e143))
+ (or $e163 $e210 $e192)
+ (or $e188 $e207 (not $e222))
+ (or $e117 $e222 $e196)
+ (or (not $e90) (not $e83) $e150)
+ (or (not $e227) (not $e211) (not $e235))
+ (or $e82 $e146 (not $e96))
+ (or $e72 (not $e108) $e103)
+ (or (not $e115) (not $e74) $e215)
+ (or (not $e234) (not $e241) $e163)
+ (or (not $e173) (not $e154) $e73)
+ (or (not $e228) $e113 $e77)
+ (or (not $e93) $e226 (not $e194))
+ (or $e243 (not $e157) (not $e126))
+ (or $e242 $e79 (not $e92))
+ (or $e168 (not $e94) $e145)
+ (or (not $e167) $e200 (not $e100))
+ (or (not $e221) $e188 $e217)
+ (or $e106 (not $e87) (not $e203))
+ (or (not $e243) (not $e166) $e172)
+ (or $e82 $e215 (not $e124))
+ (or (not $e137) (not $e136) (not $e209))
+ (or $e135 (not $e222) (not $e182))
+ (or $e144 (not $e224) (not $e163))
+ (or (not $e237) (not $e89) $e206)
+ (or (not $e217) (not $e88) $e77)
+ (or $e165 $e76 (not $e246))
+ (or $e192 $e158 $e115)
+ (or $e242 (not $e202) (not $e196))
+ (or $e130 $e231 $e88)
+ (or $e78 $e213 (not $e189))
+ (or (not $e170) (not $e146) (not $e154))
+ (or $e170 $e162 (not $e177))
+ (or $e128 (not $e76) (not $e161))
+ (or $e167 (not $e169) $e212)
+ (or (not $e103) (not $e148) (not $e215))
+ (or $e210 (not $e198) (not $e168))
+ (or $e73 $e195 $e203)
+ (or (not $e190) $e139 $e227)
+ (or $e226 (not $e123) $e206)
+ (or (not $e228) (not $e248) $e211)
+ (or (not $e85) $e200 $e198)
+ (or $e233 (not $e172) (not $e250))
+ (or $e141 $e123 (not $e129))
+ (or (not $e129) (not $e126) $e249)
+ (or $e247 (not $e174) $e243)
+ (or $e100 (not $e191) (not $e242))
+ (or (not $e205) (not $e189) $e82)
+ (or $e204 $e127 (not $e251))
+ (or $e95 (not $e121) (not $e136))
+ (or (not $e163) $e204 $e98)
+ (or $e153 $e167 $e212)
+ (or (not $e95) $e251 $e168)
+ (or $e192 (not $e236) (not $e145))
+ (or (not $e125) (not $e240) $e69)
+ (or (not $e148) (not $e251) (not $e85))
+ (or $e143 (not $e252) (not $e216))
+ (or $e233 (not $e204) $e96)
+ (or $e126 $e68 (not $e69))
+ (or (not $e251) (not $e209) $e238)
+ (or $e248 (not $e114) $e228)
+ (or $e78 $e239 $e200)
+ (or (not $e201) (not $e108) (not $e118))
+ (or (not $e234) $e249 $e252)
+ (or $e113 (not $e108) $e184)
+ (or $e77 $e149 $e226)
+ (or $e166 $e218 $e183)
+ (or $e135 $e101 $e184)
+ (or (not $e156) (not $e218) (not $e97))
+ (or $e88 (not $e180) $e191)
+ (or (not $e127) (not $e170) $e97)
+ (or $e204 (not $e220) $e154)
+ (or $e214 $e181 $e250)
+ (or (not $e105) $e89 $e111)
+ (or (not $e95) (not $e206) (not $e119))
+ (or $e224 (not $e232) (not $e244))
+ (or $e228 $e219 (not $e250))
+ (or (not $e172) $e97 $e142)
+ (or (not $e129) $e112 $e144)
+ (or (not $e171) $e78 (not $e136))
+ (or (not $e230) $e225 (not $e236))
+ (or $e101 $e68 $e155)
+))
+$e253
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz26.delta01.smt b/test/regress/regress0/bv/fuzz26.delta01.smt
new file mode 100644
index 0000000..8ea0741
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz26.delta01.smt
@@ -0,0 +1,24 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v1 BitVec[4]))
+:status unsat
+:formula
+(let (?n1 bv0[4])
+(let (?n2 bv14[4])
+(flet ($n3 (bvslt v1 v1))
+(let (?n4 bv1[1])
+(let (?n5 bv0[1])
+(let (?n6 (ite $n3 ?n4 ?n5))
+(let (?n7 (sign_extend[3] ?n6))
+(flet ($n8 (= ?n2 ?n7))
+(let (?n9 (ite $n8 ?n4 ?n5))
+(let (?n10 (zero_extend[3] ?n9))
+(let (?n11 (bvcomp ?n1 ?n10))
+(let (?n12 (zero_extend[3] ?n11))
+(let (?n13 bv8[4])
+(let (?n14 (repeat[1] ?n2))
+(let (?n15 (bvmul ?n13 ?n14))
+(let (?n16 (bvmul ?n12 ?n15))
+(flet ($n17 (bvugt ?n16 ?n1))
+$n17
+))))))))))))))))))
diff --git a/test/regress/regress0/bv/fuzz26.smt b/test/regress/regress0/bv/fuzz26.smt
new file mode 100644
index 0000000..af360df
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz26.smt
@@ -0,0 +1,729 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status unsat
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:formula
+(let (?e3 bv14[4])
+(let (?e4 bv8[4])
+(let (?e5 (bvnot ?e4))
+(let (?e6 (ite (= ?e3 ?e5) bv1[1] bv0[1]))
+(let (?e7 (bvmul ?e4 v0))
+(let (?e8 (ite (bvult ?e4 ?e4) bv1[1] bv0[1]))
+(let (?e9 (ite (bvuge ?e4 ?e7) bv1[1] bv0[1]))
+(let (?e10 (sign_extend[3] ?e8))
+(let (?e11 (repeat[1] ?e3))
+(let (?e12 (ite (bvslt v1 v1) bv1[1] bv0[1]))
+(let (?e13 (rotate_left[0] ?e4))
+(let (?e14 (rotate_right[2] ?e5))
+(let (?e15 (rotate_right[0] ?e11))
+(let (?e16 (bvnor ?e8 ?e6))
+(let (?e17 (ite (= (sign_extend[3] ?e12) ?e3) bv1[1] bv0[1]))
+(let (?e18 (bvxor ?e5 ?e7))
+(let (?e19 (ite (bvsle (zero_extend[3] ?e6) ?e15) bv1[1] bv0[1]))
+(let (?e20 (bvadd ?e14 ?e10))
+(let (?e21 (ite (bvule ?e18 v1) bv1[1] bv0[1]))
+(let (?e22 (bvadd v0 (sign_extend[3] ?e19)))
+(let (?e23 (bvmul ?e4 ?e15))
+(let (?e24 (bvashr ?e5 ?e18))
+(let (?e25 (bvand (zero_extend[3] ?e8) ?e15))
+(let (?e26 (bvlshr v0 (sign_extend[3] ?e19)))
+(let (?e27 (zero_extend[2] ?e8))
+(let (?e28 (bvmul ?e18 (zero_extend[3] ?e16)))
+(let (?e29 (bvor ?e3 ?e4))
+(let (?e30 (ite (bvugt (sign_extend[3] ?e9) ?e3) bv1[1] bv0[1]))
+(let (?e31 (ite (= (zero_extend[3] ?e19) ?e7) bv1[1] bv0[1]))
+(let (?e32 (bvshl ?e10 (sign_extend[3] ?e21)))
+(let (?e33 (ite (= bv1[1] (extract[0:0] ?e30)) ?e27 (sign_extend[2] ?e31)))
+(let (?e34 (bvlshr ?e15 ?e24))
+(let (?e35 (ite (bvugt ?e29 ?e10) bv1[1] bv0[1]))
+(let (?e36 (ite (bvsle (sign_extend[3] ?e9) ?e23) bv1[1] bv0[1]))
+(let (?e37 (ite (bvule v0 ?e11) bv1[1] bv0[1]))
+(let (?e38 (ite (bvule ?e9 ?e21) bv1[1] bv0[1]))
+(let (?e39 (ite (bvsgt v0 ?e34) bv1[1] bv0[1]))
+(let (?e40 (ite (bvsle (sign_extend[3] ?e12) ?e7) bv1[1] bv0[1]))
+(let (?e41 (repeat[1] ?e10))
+(let (?e42 (ite (bvsge ?e22 ?e3) bv1[1] bv0[1]))
+(let (?e43 (sign_extend[1] ?e33))
+(let (?e44 (bvnand (sign_extend[3] ?e19) v0))
+(let (?e45 (bvnor ?e24 v0))
+(let (?e46 (bvcomp ?e41 (zero_extend[3] ?e17)))
+(let (?e47 (bvcomp ?e24 (sign_extend[3] ?e6)))
+(let (?e48 (bvlshr (zero_extend[3] ?e39) ?e34))
+(let (?e49 (bvnor ?e34 ?e29))
+(let (?e50 (ite (bvuge ?e25 ?e13) bv1[1] bv0[1]))
+(let (?e51 (bvor ?e45 ?e44))
+(let (?e52 (ite (bvuge ?e11 ?e43) bv1[1] bv0[1]))
+(let (?e53 (bvsub (zero_extend[3] ?e30) ?e32))
+(let (?e54 (extract[1:1] ?e4))
+(let (?e55 (bvxor (zero_extend[3] ?e46) ?e23))
+(let (?e56 (ite (distinct ?e42 ?e52) bv1[1] bv0[1]))
+(let (?e57 (sign_extend[0] ?e3))
+(let (?e58 (bvxnor (zero_extend[3] ?e19) ?e48))
+(let (?e59 (bvmul ?e23 (zero_extend[3] ?e46)))
+(let (?e60 (repeat[4] ?e38))
+(let (?e61 (ite (bvslt ?e22 (zero_extend[3] ?e40)) bv1[1] bv0[1]))
+(let (?e62 (bvnand ?e12 ?e17))
+(let (?e63 (rotate_left[0] ?e19))
+(let (?e64 (rotate_right[0] ?e56))
+(let (?e65 (bvnot ?e5))
+(let (?e66 (zero_extend[0] ?e23))
+(let (?e67 (ite (bvsge ?e18 ?e59) bv1[1] bv0[1]))
+(let (?e68 (extract[3:3] ?e25))
+(let (?e69 (ite (= bv1[1] (extract[0:0] ?e8)) ?e64 ?e38))
+(let (?e70 (bvneg ?e27))
+(let (?e71 (ite (= bv1[1] (extract[3:3] ?e48)) ?e24 (sign_extend[3] ?e50)))
+(let (?e72 (bvadd (zero_extend[3] ?e63) ?e13))
+(let (?e73 (ite (= ?e52 ?e54) bv1[1] bv0[1]))
+(let (?e74 (bvand (sign_extend[3] ?e16) ?e43))
+(let (?e75 (bvnor ?e72 (sign_extend[3] ?e9)))
+(let (?e76 (ite (= ?e48 v0) bv1[1] bv0[1]))
+(let (?e77 (ite (bvsle ?e69 ?e30) bv1[1] bv0[1]))
+(let (?e78 (ite (bvsle ?e51 ?e43) bv1[1] bv0[1]))
+(let (?e79 (ite (distinct ?e22 (sign_extend[3] ?e77)) bv1[1] bv0[1]))
+(let (?e80 (ite (bvugt ?e65 ?e25) bv1[1] bv0[1]))
+(let (?e81 (bvor (zero_extend[1] ?e70) ?e7))
+(let (?e82 (ite (bvult (sign_extend[3] ?e76) ?e43) bv1[1] bv0[1]))
+(let (?e83 (ite (bvslt ?e51 (zero_extend[3] ?e54)) bv1[1] bv0[1]))
+(let (?e84 (ite (bvule ?e61 ?e62) bv1[1] bv0[1]))
+(let (?e85 (ite (= bv1[1] (extract[0:0] ?e80)) ?e84 ?e67))
+(let (?e86 (bvxor ?e60 (zero_extend[3] ?e35)))
+(let (?e87 (ite (bvsge ?e45 ?e72) bv1[1] bv0[1]))
+(let (?e88 (bvneg ?e67))
+(let (?e89 (ite (bvsle (zero_extend[3] ?e8) ?e28) bv1[1] bv0[1]))
+(let (?e90 (rotate_right[3] ?e32))
+(let (?e91 (zero_extend[1] ?e54))
+(let (?e92 (bvneg ?e84))
+(let (?e93 (bvand (sign_extend[3] ?e42) ?e49))
+(let (?e94 (bvneg ?e56))
+(let (?e95 (sign_extend[1] ?e62))
+(let (?e96 (rotate_right[1] ?e14))
+(let (?e97 (bvnor ?e65 ?e60))
+(let (?e98 (bvnot ?e56))
+(let (?e99 (bvneg ?e20))
+(let (?e100 (ite (bvugt (zero_extend[3] ?e87) ?e10) bv1[1] bv0[1]))
+(let (?e101 (ite (bvule (zero_extend[3] ?e78) ?e86) bv1[1] bv0[1]))
+(let (?e102 (bvlshr ?e22 (zero_extend[3] ?e9)))
+(let (?e103 (repeat[1] ?e3))
+(let (?e104 (ite (bvslt ?e57 ?e24) bv1[1] bv0[1]))
+(let (?e105 (bvadd ?e104 ?e82))
+(let (?e106 (ite (bvsgt ?e20 (zero_extend[3] ?e62)) bv1[1] bv0[1]))
+(let (?e107 (bvnand ?e25 ?e23))
+(let (?e108 (extract[0:0] ?e50))
+(let (?e109 (ite (bvuge ?e108 ?e77) bv1[1] bv0[1]))
+(let (?e110 (ite (= (sign_extend[3] ?e108) ?e44) bv1[1] bv0[1]))
+(let (?e111 (ite (bvslt ?e72 ?e96) bv1[1] bv0[1]))
+(let (?e112 (ite (bvule ?e109 ?e17) bv1[1] bv0[1]))
+(let (?e113 (repeat[2] ?e94))
+(let (?e114 (bvor (sign_extend[3] ?e89) ?e81))
+(let (?e115 (bvcomp (sign_extend[3] ?e101) ?e71))
+(let (?e116 (bvor ?e53 (sign_extend[3] ?e38)))
+(let (?e117 (zero_extend[2] ?e79))
+(let (?e118 (bvxor ?e75 ?e103))
+(let (?e119 (sign_extend[3] ?e101))
+(let (?e120 (zero_extend[3] ?e76))
+(let (?e121 (bvlshr ?e45 ?e119))
+(let (?e122 (ite (bvult (zero_extend[3] ?e87) ?e96) bv1[1] bv0[1]))
+(let (?e123 (ite (bvslt ?e103 (zero_extend[3] ?e94)) bv1[1] bv0[1]))
+(let (?e124 (bvadd (zero_extend[1] ?e77) ?e91))
+(let (?e125 (bvashr ?e107 (sign_extend[3] ?e100)))
+(let (?e126 (bvneg ?e93))
+(let (?e127 (ite (= bv1[1] (extract[0:0] ?e35)) (zero_extend[3] ?e50) ?e74))
+(let (?e128 (zero_extend[0] ?e38))
+(let (?e129 (ite (= bv1[1] (extract[0:0] ?e9)) ?e39 ?e122))
+(let (?e130 (bvcomp (zero_extend[3] ?e84) ?e103))
+(let (?e131 (bvxor ?e6 ?e16))
+(let (?e132 (extract[0:0] ?e95))
+(let (?e133 (bvmul ?e78 ?e76))
+(let (?e134 (bvmul ?e23 (zero_extend[3] ?e50)))
+(let (?e135 (ite (bvsle ?e31 ?e77) bv1[1] bv0[1]))
+(let (?e136 (bvor ?e126 (zero_extend[3] ?e109)))
+(let (?e137 (bvxnor ?e45 (zero_extend[3] ?e88)))
+(let (?e138 (ite (bvsge (sign_extend[3] ?e131) v2) bv1[1] bv0[1]))
+(flet ($e139 (distinct ?e137 ?e24))
+(flet ($e140 (bvslt ?e105 ?e135))
+(flet ($e141 (bvsle ?e65 ?e57))
+(flet ($e142 (bvsge ?e85 ?e76))
+(flet ($e143 (distinct ?e11 ?e22))
+(flet ($e144 (= ?e35 ?e132))
+(flet ($e145 (distinct ?e122 ?e83))
+(flet ($e146 (bvult ?e124 (zero_extend[1] ?e111)))
+(flet ($e147 (bvuge ?e10 (sign_extend[3] ?e110)))
+(flet ($e148 (bvslt ?e82 ?e62))
+(flet ($e149 (bvult (sign_extend[3] ?e39) ?e81))
+(flet ($e150 (bvuge ?e59 (zero_extend[3] ?e109)))
+(flet ($e151 (bvuge ?e48 (zero_extend[3] ?e108)))
+(flet ($e152 (bvsle ?e112 ?e94))
+(flet ($e153 (bvugt ?e70 (sign_extend[2] ?e73)))
+(flet ($e154 (bvsgt ?e136 (sign_extend[3] ?e17)))
+(flet ($e155 (bvugt (sign_extend[3] ?e130) ?e71))
+(flet ($e156 (bvsle ?e133 ?e17))
+(flet ($e157 (bvule ?e74 v0))
+(flet ($e158 (bvuge ?e130 ?e17))
+(flet ($e159 (bvule (sign_extend[3] ?e61) ?e13))
+(flet ($e160 (bvule ?e22 (zero_extend[3] ?e47)))
+(flet ($e161 (bvsge ?e94 ?e63))
+(flet ($e162 (bvuge ?e66 (sign_extend[3] ?e21)))
+(flet ($e163 (bvule v0 (sign_extend[3] ?e8)))
+(flet ($e164 (bvule ?e51 ?e81))
+(flet ($e165 (bvugt ?e71 ?e4))
+(flet ($e166 (= (sign_extend[3] ?e21) ?e10))
+(flet ($e167 (= (sign_extend[3] ?e80) ?e5))
+(flet ($e168 (bvugt ?e25 ?e96))
+(flet ($e169 (bvule ?e85 ?e40))
+(flet ($e170 (bvslt ?e99 ?e25))
+(flet ($e171 (= ?e32 (sign_extend[3] ?e6)))
+(flet ($e172 (bvsge (zero_extend[3] ?e56) ?e99))
+(flet ($e173 (bvsge (zero_extend[2] ?e108) ?e70))
+(flet ($e174 (bvsgt (zero_extend[3] ?e109) ?e72))
+(flet ($e175 (= ?e96 (sign_extend[3] ?e54)))
+(flet ($e176 (= ?e54 ?e62))
+(flet ($e177 (bvslt ?e124 (sign_extend[1] ?e54)))
+(flet ($e178 (bvsgt ?e36 ?e78))
+(flet ($e179 (bvslt (zero_extend[1] ?e117) ?e81))
+(flet ($e180 (bvuge (sign_extend[3] ?e8) ?e59))
+(flet ($e181 (bvuge (zero_extend[1] ?e27) ?e3))
+(flet ($e182 (bvsge ?e23 (sign_extend[3] ?e100)))
+(flet ($e183 (bvule (sign_extend[3] ?e128) ?e119))
+(flet ($e184 (bvult ?e8 ?e50))
+(flet ($e185 (distinct (zero_extend[3] ?e128) ?e20))
+(flet ($e186 (= (zero_extend[3] ?e123) ?e14))
+(flet ($e187 (bvslt v2 (zero_extend[3] ?e42)))
+(flet ($e188 (bvugt (zero_extend[3] ?e16) ?e71))
+(flet ($e189 (= ?e104 ?e69))
+(flet ($e190 (bvugt ?e91 (zero_extend[1] ?e54)))
+(flet ($e191 (bvuge ?e91 (sign_extend[1] ?e17)))
+(flet ($e192 (distinct (sign_extend[1] ?e70) ?e15))
+(flet ($e193 (bvsgt (sign_extend[3] ?e64) ?e136))
+(flet ($e194 (bvult (sign_extend[1] ?e54) ?e124))
+(flet ($e195 (bvugt (zero_extend[2] ?e21) ?e27))
+(flet ($e196 (bvsle ?e26 ?e7))
+(flet ($e197 (bvsle ?e4 ?e134))
+(flet ($e198 (bvsgt ?e75 (zero_extend[3] ?e56)))
+(flet ($e199 (= ?e67 ?e100))
+(flet ($e200 (bvsle (sign_extend[3] ?e62) v0))
+(flet ($e201 (bvuge (zero_extend[3] ?e85) v0))
+(flet ($e202 (bvsge (zero_extend[3] ?e17) ?e5))
+(flet ($e203 (bvsgt (zero_extend[3] ?e87) ?e86))
+(flet ($e204 (bvult (sign_extend[3] ?e6) ?e93))
+(flet ($e205 (bvuge ?e113 (zero_extend[1] ?e128)))
+(flet ($e206 (bvsge ?e8 ?e98))
+(flet ($e207 (bvugt (zero_extend[3] ?e106) v0))
+(flet ($e208 (bvugt ?e82 ?e42))
+(flet ($e209 (= ?e55 (sign_extend[3] ?e79)))
+(flet ($e210 (bvugt (zero_extend[2] ?e91) ?e90))
+(flet ($e211 (bvuge ?e49 (sign_extend[3] ?e131)))
+(flet ($e212 (bvule (zero_extend[3] ?e89) ?e74))
+(flet ($e213 (bvslt ?e124 (sign_extend[1] ?e38)))
+(flet ($e214 (bvsle ?e71 (sign_extend[3] ?e138)))
+(flet ($e215 (bvsgt ?e10 (zero_extend[3] ?e19)))
+(flet ($e216 (bvule ?e103 (sign_extend[3] ?e12)))
+(flet ($e217 (bvsgt ?e52 ?e47))
+(flet ($e218 (bvult (zero_extend[3] ?e83) ?e10))
+(flet ($e219 (bvslt ?e76 ?e104))
+(flet ($e220 (bvult ?e114 (zero_extend[3] ?e128)))
+(flet ($e221 (bvult (zero_extend[3] ?e138) ?e103))
+(flet ($e222 (= ?e131 ?e78))
+(flet ($e223 (= ?e47 ?e38))
+(flet ($e224 (bvsge ?e136 (zero_extend[3] ?e89)))
+(flet ($e225 (bvule ?e25 ?e32))
+(flet ($e226 (bvsge ?e40 ?e78))
+(flet ($e227 (bvult ?e102 ?e34))
+(flet ($e228 (distinct (sign_extend[3] ?e129) ?e103))
+(flet ($e229 (bvsge ?e110 ?e83))
+(flet ($e230 (bvsge ?e98 ?e104))
+(flet ($e231 (bvult ?e22 ?e11))
+(flet ($e232 (bvugt ?e113 (zero_extend[1] ?e67)))
+(flet ($e233 (bvule ?e53 (sign_extend[3] ?e39)))
+(flet ($e234 (bvslt ?e135 ?e67))
+(flet ($e235 (= ?e136 ?e45))
+(flet ($e236 (bvugt ?e72 ?e107))
+(flet ($e237 (bvsle ?e89 ?e88))
+(flet ($e238 (bvult (zero_extend[3] ?e122) ?e55))
+(flet ($e239 (= ?e31 ?e84))
+(flet ($e240 (bvuge (zero_extend[3] ?e21) ?e24))
+(flet ($e241 (distinct ?e71 ?e10))
+(flet ($e242 (bvsge (zero_extend[3] ?e17) ?e97))
+(flet ($e243 (bvsge ?e20 (sign_extend[2] ?e91)))
+(flet ($e244 (bvult ?e41 ?e127))
+(flet ($e245 (bvslt (zero_extend[3] ?e77) v2))
+(flet ($e246 (bvsgt ?e30 ?e69))
+(flet ($e247 (bvslt ?e124 (sign_extend[1] ?e8)))
+(flet ($e248 (bvugt ?e5 ?e116))
+(flet ($e249 (bvsgt ?e70 (zero_extend[2] ?e106)))
+(flet ($e250 (bvule ?e90 (zero_extend[3] ?e37)))
+(flet ($e251 (bvsge ?e81 (zero_extend[3] ?e112)))
+(flet ($e252 (bvsgt ?e114 ?e137))
+(flet ($e253 (= ?e98 ?e37))
+(flet ($e254 (bvult ?e51 (zero_extend[2] ?e124)))
+(flet ($e255 (bvsle ?e48 (sign_extend[3] ?e82)))
+(flet ($e256 (bvule ?e108 ?e73))
+(flet ($e257 (bvslt ?e77 ?e129))
+(flet ($e258 (distinct ?e110 ?e84))
+(flet ($e259 (bvslt ?e18 (sign_extend[3] ?e105)))
+(flet ($e260 (bvsge ?e121 (zero_extend[3] ?e85)))
+(flet ($e261 (bvslt ?e137 (zero_extend[1] ?e117)))
+(flet ($e262 (bvsle (zero_extend[1] ?e33) ?e120))
+(flet ($e263 (bvule (sign_extend[3] ?e21) ?e24))
+(flet ($e264 (distinct ?e97 (sign_extend[3] ?e115)))
+(flet ($e265 (bvsgt ?e15 (sign_extend[3] ?e135)))
+(flet ($e266 (bvult ?e11 (sign_extend[3] ?e100)))
+(flet ($e267 (distinct ?e125 ?e18))
+(flet ($e268 (bvsge (zero_extend[2] ?e124) ?e45))
+(flet ($e269 (bvugt ?e46 ?e31))
+(flet ($e270 (bvslt ?e137 (sign_extend[3] ?e94)))
+(flet ($e271 (bvsgt (zero_extend[3] ?e61) ?e102))
+(flet ($e272 (bvugt ?e60 (sign_extend[3] ?e17)))
+(flet ($e273 (distinct ?e25 ?e13))
+(flet ($e274 (= ?e72 ?e11))
+(flet ($e275 (bvsge (sign_extend[3] ?e100) ?e41))
+(flet ($e276 (bvule v1 ?e127))
+(flet ($e277 (bvult ?e89 ?e108))
+(flet ($e278 (bvsle ?e38 ?e109))
+(flet ($e279 (bvsgt ?e83 ?e30))
+(flet ($e280 (bvugt ?e34 ?e120))
+(flet ($e281 (bvsge (zero_extend[3] ?e79) ?e71))
+(flet ($e282 (bvsle (sign_extend[3] ?e100) ?e58))
+(flet ($e283 (bvsgt ?e71 ?e66))
+(flet ($e284 (distinct ?e103 (zero_extend[1] ?e27)))
+(flet ($e285 (distinct ?e71 (zero_extend[3] ?e110)))
+(flet ($e286 (bvslt ?e92 ?e82))
+(flet ($e287 (bvult ?e118 ?e44))
+(flet ($e288 (bvuge ?e115 ?e21))
+(flet ($e289 (distinct ?e10 ?e25))
+(flet ($e290 (bvsge ?e27 (sign_extend[2] ?e138)))
+(flet ($e291 (bvuge (sign_extend[3] ?e61) ?e13))
+(flet ($e292 (bvsgt ?e137 ?e51))
+(flet ($e293 (bvuge ?e39 ?e131))
+(flet ($e294 (bvsgt (sign_extend[3] ?e39) ?e66))
+(flet ($e295 (bvult (sign_extend[3] ?e64) ?e55))
+(flet ($e296 (bvult (sign_extend[3] ?e73) ?e60))
+(flet ($e297 (distinct ?e22 (zero_extend[3] ?e129)))
+(flet ($e298 (bvslt ?e136 (zero_extend[3] ?e108)))
+(flet ($e299 (bvuge ?e93 (sign_extend[3] ?e47)))
+(flet ($e300 (= ?e100 ?e39))
+(flet ($e301 (bvslt ?e45 ?e43))
+(flet ($e302 (bvsgt (sign_extend[3] ?e6) ?e15))
+(flet ($e303 (bvsle ?e97 (sign_extend[3] ?e6)))
+(flet ($e304 (= ?e86 (sign_extend[3] ?e115)))
+(flet ($e305 (bvult (sign_extend[3] ?e104) ?e116))
+(flet ($e306 (bvuge ?e49 ?e23))
+(flet ($e307 (distinct ?e96 (zero_extend[3] ?e67)))
+(flet ($e308 (= ?e119 ?e14))
+(flet ($e309 (bvult ?e9 ?e83))
+(flet ($e310 (bvuge (zero_extend[3] ?e35) ?e29))
+(flet ($e311 (distinct ?e30 ?e130))
+(flet ($e312 (bvslt (sign_extend[1] ?e52) ?e113))
+(flet ($e313 (bvsgt (zero_extend[2] ?e37) ?e33))
+(flet ($e314 (bvslt (zero_extend[3] ?e63) ?e49))
+(flet ($e315 (= (zero_extend[3] ?e112) ?e5))
+(flet ($e316 (distinct ?e53 ?e127))
+(flet ($e317 (bvule (sign_extend[3] ?e69) ?e55))
+(flet ($e318 (bvugt ?e10 (sign_extend[3] ?e132)))
+(flet ($e319 (bvslt ?e28 (sign_extend[3] ?e77)))
+(flet ($e320 (bvule (zero_extend[3] ?e123) ?e66))
+(flet ($e321 (bvslt ?e65 (zero_extend[3] ?e19)))
+(flet ($e322 (distinct ?e137 (zero_extend[3] ?e64)))
+(flet ($e323 (bvslt ?e25 ?e66))
+(flet ($e324 (bvult ?e105 ?e63))
+(flet ($e325 (bvsgt ?e89 ?e36))
+(flet ($e326 (= (zero_extend[3] ?e84) ?e28))
+(flet ($e327 (distinct ?e75 ?e29))
+(flet ($e328 (bvugt ?e11 ?e48))
+(flet ($e329 (bvule ?e12 ?e8))
+(flet ($e330 (= ?e128 ?e16))
+(flet ($e331 (bvsle ?e11 (zero_extend[3] ?e64)))
+(flet ($e332 (bvsge (zero_extend[2] ?e98) ?e70))
+(flet ($e333 (= ?e97 (sign_extend[3] ?e40)))
+(flet ($e334 (bvuge ?e75 ?e127))
+(flet ($e335 (bvslt ?e22 ?e114))
+(flet ($e336 (bvslt ?e74 (zero_extend[3] ?e109)))
+(flet ($e337 (bvslt ?e37 ?e42))
+(flet ($e338 (bvsge ?e93 ?e7))
+(flet ($e339 (bvult ?e55 ?e99))
+(flet ($e340 (bvslt ?e49 (zero_extend[3] ?e54)))
+(flet ($e341 (bvugt ?e137 (sign_extend[3] ?e87)))
+(flet ($e342 (bvuge ?e25 (sign_extend[3] ?e133)))
+(flet ($e343 (bvslt ?e45 (zero_extend[3] ?e38)))
+(flet ($e344 (distinct ?e75 (zero_extend[3] ?e106)))
+(flet ($e345 (bvugt ?e90 ?e32))
+(flet ($e346 (distinct (zero_extend[3] ?e132) ?e34))
+(flet ($e347 (bvslt ?e120 (zero_extend[3] ?e9)))
+(flet ($e348 (bvugt ?e103 ?e23))
+(flet ($e349 (bvslt ?e12 ?e47))
+(flet ($e350 (bvsge ?e128 ?e62))
+(flet ($e351 (bvule ?e76 ?e122))
+(flet ($e352 (bvslt (zero_extend[3] ?e123) v2))
+(flet ($e353 (bvsgt (zero_extend[3] ?e108) ?e51))
+(flet ($e354 (bvsle ?e117 (sign_extend[1] ?e91)))
+(flet ($e355 (bvule (zero_extend[3] ?e110) ?e81))
+(flet ($e356 (= ?e47 ?e82))
+(flet ($e357 (bvsgt ?e13 (zero_extend[3] ?e129)))
+(flet ($e358 (bvslt (zero_extend[3] ?e52) ?e72))
+(flet ($e359 (bvult ?e91 (sign_extend[1] ?e138)))
+(flet ($e360 (distinct (sign_extend[1] ?e19) ?e124))
+(flet ($e361 (bvugt ?e48 (zero_extend[3] ?e47)))
+(flet ($e362 (distinct (zero_extend[3] ?e79) ?e134))
+(flet ($e363 (bvsge (sign_extend[3] ?e115) ?e81))
+(flet ($e364 (bvule ?e81 (sign_extend[3] ?e135)))
+(flet ($e365 (bvuge ?e25 (sign_extend[1] ?e27)))
+(flet ($e366 (bvsgt ?e86 ?e20))
+(flet ($e367 (bvult ?e125 (zero_extend[3] ?e79)))
+(flet ($e368 (bvuge v1 (sign_extend[3] ?e108)))
+(flet ($e369 (bvugt (sign_extend[1] ?e27) ?e43))
+(flet ($e370 (bvult ?e133 ?e100))
+(flet ($e371 (bvsge ?e109 ?e42))
+(flet ($e372 (= ?e18 (zero_extend[3] ?e89)))
+(flet ($e373 (= ?e48 (zero_extend[3] ?e98)))
+(flet ($e374 (bvule ?e4 ?e29))
+(flet ($e375 (distinct (sign_extend[3] ?e88) ?e18))
+(flet ($e376 (bvsgt ?e77 ?e17))
+(flet ($e377 (bvult ?e8 ?e73))
+(flet ($e378 (bvsgt ?e25 ?e13))
+(flet ($e379 (distinct ?e126 (zero_extend[2] ?e113)))
+(flet ($e380 (bvult ?e76 ?e40))
+(flet ($e381 (= ?e128 ?e50))
+(flet ($e382 (bvsge ?e66 ?e97))
+(flet ($e383 (bvuge ?e74 (sign_extend[3] ?e77)))
+(flet ($e384 (bvsge (zero_extend[3] ?e16) ?e66))
+(flet ($e385 (bvsle (zero_extend[1] ?e33) ?e24))
+(flet ($e386 (= ?e44 (sign_extend[3] ?e39)))
+(flet ($e387 (= (zero_extend[3] ?e84) ?e41))
+(flet ($e388 (bvsge ?e11 ?e118))
+(flet ($e389 (bvuge ?e136 ?e53))
+(flet ($e390 (bvsgt ?e35 ?e105))
+(flet ($e391 (bvsge ?e71 (sign_extend[3] ?e39)))
+(flet ($e392 (bvsge (sign_extend[3] ?e105) ?e86))
+(flet ($e393 (bvult ?e20 (sign_extend[3] ?e47)))
+(flet ($e394 (bvsle ?e95 (zero_extend[1] ?e94)))
+(flet ($e395 (bvsge (zero_extend[3] ?e50) ?e71))
+(flet ($e396 (bvugt v1 ?e71))
+(flet ($e397 (bvugt ?e103 ?e136))
+(flet ($e398 (bvuge ?e8 ?e112))
+(flet ($e399 (= ?e77 ?e84))
+(flet ($e400 (bvsgt (sign_extend[3] ?e67) ?e32))
+(flet ($e401 (distinct ?e103 ?e66))
+(flet ($e402 (bvsle ?e53 ?e74))
+(flet ($e403 (bvugt ?e30 ?e78))
+(flet ($e404 (= ?e72 ?e7))
+(flet ($e405 (bvsge (zero_extend[3] ?e135) ?e137))
+(flet ($e406 (bvuge ?e102 (zero_extend[3] ?e62)))
+(flet ($e407 (bvult (zero_extend[1] ?e84) ?e124))
+(flet ($e408 (bvugt ?e24 (zero_extend[3] ?e61)))
+(flet ($e409 (bvugt (sign_extend[2] ?e124) ?e90))
+(flet ($e410 (bvuge ?e5 (zero_extend[3] ?e83)))
+(flet ($e411 (bvugt v2 ?e126))
+(flet ($e412 (distinct ?e74 ?e81))
+(flet ($e413 (bvugt ?e27 (zero_extend[1] ?e124)))
+(flet ($e414 (bvugt ?e119 (zero_extend[3] ?e82)))
+(flet ($e415 (= ?e118 ?e58))
+(flet ($e416 (= ?e72 (sign_extend[3] ?e35)))
+(flet ($e417 (bvsge ?e118 (sign_extend[3] ?e92)))
+(flet ($e418 (bvugt v1 ?e90))
+(flet ($e419 (= ?e83 ?e88))
+(flet ($e420 (bvsle ?e40 ?e50))
+(flet ($e421 (bvugt (sign_extend[3] ?e40) ?e22))
+(flet ($e422 (bvule (zero_extend[3] ?e108) ?e23))
+(flet ($e423 (distinct (zero_extend[3] ?e42) ?e74))
+(flet ($e424 (bvsge ?e25 (zero_extend[3] ?e109)))
+(flet ($e425 (distinct ?e79 ?e8))
+(flet ($e426 (distinct ?e46 ?e67))
+(flet ($e427 (bvsgt ?e108 ?e135))
+(flet ($e428 (distinct ?e106 ?e19))
+(flet ($e429 (bvult ?e130 ?e73))
+(flet ($e430 (bvslt v1 (sign_extend[3] ?e80)))
+(flet ($e431 (bvult ?e16 ?e37))
+(flet ($e432 (distinct (sign_extend[3] ?e89) ?e120))
+(flet ($e433 (bvsle ?e124 (zero_extend[1] ?e94)))
+(flet ($e434 (bvuge ?e70 (sign_extend[2] ?e36)))
+(flet ($e435 (bvslt ?e123 ?e80))
+(flet ($e436 (bvuge ?e91 (zero_extend[1] ?e123)))
+(flet ($e437 (distinct (sign_extend[3] ?e38) ?e44))
+(flet ($e438 (bvslt ?e72 (zero_extend[3] ?e39)))
+(flet ($e439 (bvult v1 ?e86))
+(flet ($e440 (bvuge ?e13 (zero_extend[3] ?e89)))
+(flet ($e441 (bvslt ?e66 ?e60))
+(flet ($e442 (bvsgt ?e57 ?e18))
+(flet ($e443 (bvuge ?e97 ?e137))
+(flet ($e444 (bvuge (sign_extend[1] ?e46) ?e113))
+(flet ($e445 (bvule ?e45 (zero_extend[3] ?e87)))
+(flet ($e446 (bvslt (zero_extend[3] ?e77) ?e13))
+(flet ($e447 (distinct ?e121 (sign_extend[3] ?e39)))
+(flet ($e448 (= ?e91 ?e113))
+(flet ($e449 (bvuge ?e109 ?e76))
+(flet ($e450 (bvult (zero_extend[3] ?e88) ?e26))
+(flet ($e451 (bvugt ?e14 ?e102))
+(flet ($e452 (= (zero_extend[3] ?e76) ?e26))
+(flet ($e453 (bvule (zero_extend[3] ?e8) ?e107))
+(flet ($e454 (bvult ?e61 ?e31))
+(flet ($e455 (bvsgt ?e89 ?e8))
+(flet ($e456 (distinct ?e60 ?e55))
+(flet ($e457 (= (zero_extend[3] ?e83) ?e22))
+(flet ($e458 (distinct ?e33 (zero_extend[2] ?e6)))
+(flet ($e459 (bvugt ?e45 ?e28))
+(flet ($e460 (bvsge (zero_extend[3] ?e78) ?e93))
+(flet ($e461 (bvslt ?e9 ?e17))
+(flet ($e462 (bvugt ?e122 ?e64))
+(flet ($e463 (= ?e114 (sign_extend[3] ?e19)))
+(flet ($e464 (bvuge ?e89 ?e64))
+(flet ($e465 (bvsge ?e3 ?e114))
+(flet ($e466 (= ?e96 ?e74))
+(flet ($e467 (bvsle ?e37 ?e115))
+(flet ($e468 (bvult ?e114 (sign_extend[1] ?e33)))
+(flet ($e469 (bvslt (zero_extend[3] ?e131) v0))
+(flet ($e470 (= ?e125 (sign_extend[1] ?e27)))
+(flet ($e471 (bvsge (sign_extend[3] ?e47) v1))
+(flet ($e472 (distinct ?e136 (zero_extend[3] ?e87)))
+(flet ($e473 (bvsle ?e94 ?e39))
+(flet ($e474 (distinct ?e118 (sign_extend[3] ?e123)))
+(flet ($e475 (bvult ?e49 ?e29))
+(flet ($e476 (bvult (sign_extend[3] ?e37) ?e11))
+(flet ($e477 (distinct ?e37 ?e110))
+(flet ($e478 (bvsgt ?e131 ?e30))
+(flet ($e479 (bvslt ?e85 ?e130))
+(flet ($e480 (bvult ?e74 ?e26))
+(flet ($e481 (bvsgt ?e49 ?e97))
+(flet ($e482 (bvule (zero_extend[3] ?e112) ?e45))
+(flet ($e483 (bvuge ?e14 (zero_extend[3] ?e37)))
+(flet ($e484 (= ?e32 ?e7))
+(flet ($e485 (bvuge ?e43 (sign_extend[2] ?e91)))
+(flet ($e486 (bvsge (zero_extend[3] ?e12) v1))
+(flet ($e487 (distinct ?e138 ?e101))
+(flet ($e488 (bvult (zero_extend[3] ?e69) ?e26))
+(flet ($e489 (bvugt ?e107 ?e120))
+(flet ($e490 (bvule ?e107 ?e120))
+(flet ($e491 (bvule ?e100 ?e73))
+(flet ($e492 (bvugt ?e119 (sign_extend[3] ?e54)))
+(flet ($e493 (distinct (sign_extend[2] ?e78) ?e27))
+(flet ($e494 (bvsle (zero_extend[1] ?e104) ?e91))
+(flet ($e495 (distinct ?e7 (sign_extend[1] ?e70)))
+(flet ($e496 (bvsge ?e47 ?e83))
+(flet ($e497 (bvugt ?e106 ?e108))
+(flet ($e498 (bvsgt (sign_extend[3] ?e82) ?e5))
+(flet ($e499 (bvsgt (sign_extend[2] ?e124) ?e75))
+(flet ($e500 (bvugt ?e24 (zero_extend[3] ?e9)))
+(flet ($e501 (= (zero_extend[3] ?e46) ?e5))
+(flet ($e502 (bvsle ?e66 ?e58))
+(flet ($e503 (distinct ?e134 (zero_extend[3] ?e36)))
+(flet ($e504 (distinct (sign_extend[3] ?e31) ?e58))
+(flet ($e505 (bvsgt ?e121 ?e15))
+(flet ($e506 (bvsge (sign_extend[3] ?e38) ?e5))
+(flet ($e507 (bvuge (sign_extend[3] ?e84) ?e118))
+(flet ($e508 (bvsge ?e50 ?e73))
+(flet ($e509 (bvugt ?e59 ?e74))
+(flet ($e510 (bvsgt ?e134 (zero_extend[1] ?e27)))
+(flet ($e511 (bvsge ?e29 (zero_extend[3] ?e138)))
+(flet ($e512 (bvule (sign_extend[3] ?e123) ?e43))
+(flet ($e513 (bvsgt ?e45 (sign_extend[3] ?e73)))
+(flet ($e514 (bvsgt ?e3 (zero_extend[3] ?e31)))
+(flet ($e515 (bvslt ?e61 ?e83))
+(flet ($e516 (bvugt (sign_extend[3] ?e61) ?e71))
+(flet ($e517 (bvuge ?e34 ?e121))
+(flet ($e518 (bvuge ?e33 (zero_extend[2] ?e80)))
+(flet ($e519 (bvule ?e127 ?e25))
+(flet ($e520 (bvsge (zero_extend[1] ?e92) ?e91))
+(flet ($e521 (bvslt (sign_extend[3] ?e89) ?e45))
+(flet ($e522 (= (zero_extend[3] ?e56) ?e43))
+(flet ($e523 (bvsle ?e47 ?e88))
+(flet ($e524 (bvslt ?e71 (sign_extend[3] ?e77)))
+(flet ($e525 (bvslt (sign_extend[3] ?e68) ?e66))
+(flet ($e526 
+(and
+ (or (not $e228) (not $e348) (not $e245))
+ (or (not $e172) (not $e486) $e501)
+ (or (not $e183) $e438 (not $e297))
+ (or $e280 $e501 (not $e364))
+ (or (not $e509) $e230 (not $e375))
+ (or $e209 $e347 $e289)
+ (or (not $e364) (not $e406) (not $e159))
+ (or (not $e412) (not $e344) (not $e291))
+ (or (not $e452) (not $e359) (not $e361))
+ (or (not $e430) (not $e303) (not $e244))
+ (or (not $e336) $e141 (not $e364))
+ (or (not $e448) (not $e520) $e278)
+ (or $e287 (not $e153) (not $e440))
+ (or $e406 $e257 (not $e297))
+ (or (not $e484) (not $e189) (not $e381))
+ (or $e523 $e186 $e522)
+ (or $e170 (not $e513) $e396)
+ (or (not $e276) (not $e338) (not $e209))
+ (or $e325 $e156 $e432)
+ (or (not $e444) (not $e192) $e317)
+ (or (not $e515) (not $e152) (not $e161))
+ (or (not $e319) $e267 $e368)
+ (or $e377 $e344 (not $e503))
+ (or $e141 (not $e319) (not $e245))
+ (or $e453 (not $e493) $e511)
+ (or $e518 (not $e299) (not $e139))
+ (or (not $e511) $e225 $e386)
+ (or (not $e292) (not $e412) (not $e190))
+ (or $e246 $e165 (not $e253))
+ (or (not $e345) (not $e221) (not $e458))
+ (or (not $e204) $e203 (not $e255))
+ (or (not $e418) (not $e393) (not $e445))
+ (or $e501 $e479 (not $e340))
+ (or (not $e220) (not $e294) $e371)
+ (or $e225 $e499 $e235)
+ (or $e139 (not $e251) (not $e402))
+ (or (not $e334) (not $e357) (not $e369))
+ (or $e313 $e479 $e513)
+ (or $e341 (not $e394) (not $e411))
+ (or $e368 (not $e360) (not $e294))
+ (or $e428 (not $e525) $e503)
+ (or (not $e447) (not $e233) $e414)
+ (or (not $e365) (not $e198) $e473)
+ (or (not $e188) (not $e489) (not $e313))
+ (or (not $e309) $e453 (not $e287))
+ (or $e358 (not $e247) (not $e334))
+ (or $e454 $e376 (not $e336))
+ (or (not $e218) $e334 $e494)
+ (or $e160 $e175 (not $e402))
+ (or (not $e473) $e306 $e143)
+ (or (not $e364) (not $e252) $e402)
+ (or (not $e256) (not $e306) $e427)
+ (or $e397 (not $e512) (not $e354))
+ (or (not $e233) (not $e167) $e428)
+ (or (not $e380) $e322 $e304)
+ (or $e344 $e219 $e211)
+ (or (not $e411) $e422 $e217)
+ (or (not $e338) $e467 (not $e463))
+ (or $e447 (not $e313) $e320)
+ (or $e447 (not $e149) (not $e292))
+ (or (not $e411) $e197 $e352)
+ (or (not $e239) $e231 $e400)
+ (or $e331 (not $e263) (not $e445))
+ (or (not $e189) $e302 $e235)
+ (or $e144 $e467 (not $e333))
+ (or (not $e266) (not $e369) (not $e469))
+ (or $e457 (not $e206) $e197)
+ (or $e322 $e509 $e518)
+ (or (not $e168) $e355 $e341)
+ (or (not $e166) $e319 (not $e288))
+ (or $e377 (not $e472) $e399)
+ (or (not $e340) $e523 (not $e400))
+ (or (not $e270) $e428 $e167)
+ (or $e417 $e358 (not $e269))
+ (or (not $e196) (not $e424) $e241)
+ (or $e382 (not $e151) $e139)
+ (or (not $e353) (not $e418) (not $e372))
+ (or (not $e451) $e339 $e191)
+ (or $e426 (not $e418) $e483)
+ (or (not $e308) (not $e257) $e360)
+ (or (not $e142) (not $e220) (not $e354))
+ (or (not $e296) $e480 (not $e462))
+ (or (not $e428) $e316 (not $e230))
+ (or (not $e500) $e290 (not $e427))
+ (or $e283 (not $e169) (not $e420))
+ (or $e146 $e400 (not $e434))
+ (or (not $e470) $e408 $e438)
+ (or $e373 (not $e391) (not $e405))
+ (or (not $e443) $e166 $e337)
+ (or (not $e157) (not $e458) (not $e157))
+ (or (not $e139) (not $e484) $e245)
+ (or (not $e283) $e490 (not $e311))
+ (or (not $e420) $e456 $e448)
+ (or $e350 $e311 $e364)
+ (or $e357 $e451 $e507)
+ (or $e384 (not $e478) $e415)
+ (or $e282 (not $e455) $e164)
+ (or $e491 $e200 (not $e323))
+ (or $e502 (not $e225) $e276)
+ (or $e158 (not $e318) $e169)
+ (or (not $e342) $e385 $e247)
+ (or $e389 $e487 (not $e470))
+ (or $e218 $e516 (not $e257))
+ (or $e288 (not $e269) $e488)
+ (or $e398 (not $e207) (not $e432))
+ (or (not $e510) $e329 $e250)
+ (or (not $e246) $e392 (not $e387))
+ (or $e280 $e511 (not $e292))
+ (or $e431 (not $e315) (not $e198))
+ (or (not $e264) $e229 $e514)
+ (or $e235 (not $e357) (not $e458))
+ (or (not $e472) $e379 (not $e431))
+ (or (not $e244) $e474 $e426)
+ (or (not $e297) $e151 (not $e273))
+ (or $e152 (not $e149) (not $e267))
+ (or (not $e389) (not $e435) $e389)
+ (or $e364 (not $e433) $e350)
+ (or (not $e488) (not $e500) $e514)
+ (or $e148 $e401 $e175)
+ (or $e315 $e156 (not $e378))
+ (or (not $e141) $e361 $e437)
+ (or (not $e348) (not $e184) (not $e409))
+ (or $e242 $e421 $e285)
+ (or $e245 (not $e412) (not $e421))
+ (or $e248 $e158 $e416)
+ (or (not $e296) $e504 (not $e489))
+ (or (not $e352) $e251 (not $e361))
+ (or $e295 (not $e261) $e404)
+ (or $e267 $e518 $e431)
+ (or $e469 (not $e356) (not $e227))
+ (or $e146 $e324 $e294)
+ (or $e495 (not $e333) $e519)
+ (or $e362 (not $e222) $e240)
+ (or $e376 (not $e460) (not $e407))
+ (or (not $e192) $e412 (not $e175))
+ (or (not $e185) $e488 (not $e247))
+ (or (not $e236) $e298 (not $e198))
+ (or $e188 $e242 (not $e259))
+ (or $e393 (not $e378) (not $e227))
+ (or (not $e365) (not $e247) (not $e474))
+ (or $e525 (not $e376) $e468)
+ (or $e467 $e501 (not $e274))
+ (or (not $e391) (not $e359) (not $e235))
+ (or (not $e441) (not $e371) (not $e506))
+ (or $e409 $e463 (not $e271))
+ (or $e332 $e353 $e390)
+ (or (not $e358) (not $e304) (not $e503))
+ (or $e422 $e461 $e187)
+ (or (not $e227) $e462 (not $e485))
+ (or $e419 $e216 (not $e344))
+ (or $e197 $e516 (not $e458))
+ (or (not $e488) $e218 (not $e275))
+ (or (not $e287) $e383 $e430)
+ (or $e253 (not $e171) $e324)
+ (or $e523 $e156 (not $e330))
+ (or (not $e244) (not $e407) $e279)
+ (or $e154 (not $e234) (not $e250))
+ (or $e484 $e176 (not $e197))
+ (or $e422 $e278 (not $e319))
+ (or (not $e425) $e203 (not $e245))
+ (or (not $e275) (not $e244) (not $e267))
+ (or (not $e520) (not $e483) (not $e441))
+ (or $e419 (not $e157) $e228)
+ (or (not $e151) (not $e447) $e382)
+ (or $e206 (not $e495) $e305)
+ (or $e349 $e177 (not $e474))
+ (or (not $e347) (not $e521) (not $e143))
+ (or (not $e407) (not $e410) $e472)
+ (or (not $e475) $e212 (not $e382))
+ (or $e179 (not $e462) (not $e145))
+ (or (not $e289) (not $e489) $e318)
+ (or (not $e504) (not $e380) $e162)
+ (or $e383 (not $e164) $e361)
+ (or $e353 $e407 (not $e413))
+ (or (not $e215) (not $e419) $e224)
+ (or (not $e201) (not $e366) (not $e174))
+ (or $e256 (not $e196) (not $e406))
+ (or $e507 (not $e220) $e258)
+ (or $e262 $e394 (not $e179))
+ (or (not $e370) $e377 (not $e316))
+ (or $e487 (not $e282) (not $e358))
+ (or $e275 $e520 $e188)
+ (or $e260 $e265 $e255)
+ (or $e490 (not $e291) $e327)
+ (or $e218 $e410 $e265)
+ (or $e358 $e175 (not $e307))
+ (or (not $e487) $e499 (not $e431))
+ (or (not $e153) $e164 $e515)
+ (or $e459 (not $e447) $e253)
+ (or (not $e254) $e467 $e445)
+ (or $e219 $e429 (not $e311))
+ (or (not $e286) (not $e438) (not $e240))
+ (or (not $e502) $e243 $e276)
+))
+$e526
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) [...]
+
diff --git a/test/regress/regress0/bv/fuzz27.delta01.smt b/test/regress/regress0/bv/fuzz27.delta01.smt
new file mode 100644
index 0000000..f7a118b
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz27.delta01.smt
@@ -0,0 +1,15 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v0 BitVec[4]))
+:status sat
+:formula
+(let (?n1 bv0[4])
+(flet ($n2 (bvslt v0 ?n1))
+(let (?n3 bv1[1])
+(let (?n4 bv0[1])
+(let (?n5 (ite $n2 ?n3 ?n4))
+(let (?n6 (bvneg ?n5))
+(let (?n7 (bvnot ?n5))
+(flet ($n8 (distinct ?n6 ?n7))
+$n8
+)))))))))
diff --git a/test/regress/regress0/bv/fuzz27.smt b/test/regress/regress0/bv/fuzz27.smt
new file mode 100644
index 0000000..786a6aa
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz27.smt
@@ -0,0 +1,143 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status sat
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:extrafuns ((v3 BitVec[4]))
+:formula
+(let (?e4 bv8[4])
+(let (?e5 bv9[4])
+(let (?e6 bv11[4])
+(let (?e7 (ite (bvslt ?e6 ?e5) bv1[1] bv0[1]))
+(let (?e8 (bvor (sign_extend[3] ?e7) ?e4))
+(let (?e9 (ite (bvslt v0 ?e6) bv1[1] bv0[1]))
+(let (?e10 (bvxnor ?e8 ?e5))
+(let (?e11 (zero_extend[0] v3))
+(let (?e12 (bvxnor (sign_extend[3] ?e7) ?e6))
+(let (?e13 (bvnot v3))
+(let (?e14 (ite (bvugt ?e12 v3) bv1[1] bv0[1]))
+(let (?e15 (bvcomp ?e10 ?e12))
+(let (?e16 (bvxnor v3 ?e6))
+(let (?e17 (rotate_right[0] ?e9))
+(let (?e18 (bvneg ?e17))
+(let (?e19 (bvor (zero_extend[3] ?e7) ?e10))
+(let (?e20 (bvnot ?e17))
+(let (?e21 (ite (bvsle ?e4 ?e12) bv1[1] bv0[1]))
+(let (?e22 (bvxnor ?e9 ?e15))
+(let (?e23 (bvadd v1 ?e19))
+(let (?e24 (bvashr ?e17 ?e22))
+(let (?e25 (bvnor (sign_extend[3] ?e15) ?e16))
+(let (?e26 (ite (bvule ?e11 ?e4) bv1[1] bv0[1]))
+(let (?e27 (ite (bvsle ?e4 (sign_extend[3] ?e9)) bv1[1] bv0[1]))
+(let (?e28 (ite (bvuge ?e23 v3) bv1[1] bv0[1]))
+(let (?e29 (ite (bvsgt ?e11 (sign_extend[3] ?e7)) bv1[1] bv0[1]))
+(let (?e30 (ite (= bv1[1] (extract[0:0] ?e29)) (sign_extend[3] ?e24) ?e6))
+(let (?e31 (ite (bvugt v1 ?e16) bv1[1] bv0[1]))
+(let (?e32 (bvand v2 ?e23))
+(flet ($e33 (bvugt (sign_extend[3] ?e29) ?e11))
+(flet ($e34 (distinct ?e20 ?e18))
+(flet ($e35 (bvult ?e19 ?e30))
+(flet ($e36 (bvult ?e11 ?e25))
+(flet ($e37 (bvuge (zero_extend[3] ?e14) ?e4))
+(flet ($e38 (= ?e15 ?e17))
+(flet ($e39 (bvslt (sign_extend[3] ?e17) ?e16))
+(flet ($e40 (bvult (zero_extend[3] ?e24) ?e30))
+(flet ($e41 (distinct ?e13 ?e12))
+(flet ($e42 (bvslt ?e16 ?e11))
+(flet ($e43 (bvsle ?e12 (sign_extend[3] ?e22)))
+(flet ($e44 (bvuge ?e15 ?e26))
+(flet ($e45 (bvsgt ?e19 (zero_extend[3] ?e18)))
+(flet ($e46 (bvslt ?e30 ?e23))
+(flet ($e47 (bvsgt ?e32 ?e8))
+(flet ($e48 (bvule ?e10 (sign_extend[3] ?e31)))
+(flet ($e49 (bvslt (sign_extend[3] ?e15) v0))
+(flet ($e50 (bvsgt (sign_extend[3] ?e14) v1))
+(flet ($e51 (bvslt v3 ?e23))
+(flet ($e52 (distinct ?e6 (sign_extend[3] ?e20)))
+(flet ($e53 (bvugt v2 ?e32))
+(flet ($e54 (bvsge ?e18 ?e15))
+(flet ($e55 (bvsgt ?e32 (sign_extend[3] ?e20)))
+(flet ($e56 (bvuge ?e21 ?e21))
+(flet ($e57 (bvule ?e22 ?e14))
+(flet ($e58 (= ?e28 ?e17))
+(flet ($e59 (bvslt (sign_extend[3] ?e27) ?e19))
+(flet ($e60 (bvult ?e24 ?e20))
+(flet ($e61 (bvugt ?e5 (sign_extend[3] ?e20)))
+(flet ($e62 (bvsle ?e26 ?e28))
+(flet ($e63 (bvule ?e31 ?e26))
+(flet ($e64 (bvuge ?e21 ?e18))
+(flet ($e65 (bvuge (sign_extend[3] ?e24) ?e13))
+(flet ($e66 (bvsge ?e23 ?e16))
+(flet ($e67 (bvugt (zero_extend[3] ?e17) ?e12))
+(flet ($e68 (bvsgt ?e30 v1))
+(flet ($e69 (bvule ?e16 ?e30))
+(flet ($e70 (bvult ?e22 ?e17))
+(flet ($e71 (bvult v1 ?e19))
+(flet ($e72 (bvuge ?e24 ?e28))
+(flet ($e73 (bvsge ?e11 (sign_extend[3] ?e22)))
+(flet ($e74 (bvsgt ?e7 ?e18))
+(flet ($e75 (distinct ?e32 ?e16))
+(flet ($e76 (bvsge v3 ?e16))
+(flet ($e77 (bvsle (sign_extend[3] ?e15) v1))
+(flet ($e78 (bvule ?e8 ?e23))
+(flet ($e79 (bvsge ?e30 (sign_extend[3] ?e14)))
+(flet ($e80 (bvsge ?e4 (zero_extend[3] ?e18)))
+(flet ($e81 (bvslt v1 ?e4))
+(flet ($e82 (bvslt ?e5 v3))
+(flet ($e83 (distinct ?e29 ?e7))
+(flet ($e84 (bvult v1 ?e32))
+(flet ($e85 (bvslt (zero_extend[3] ?e27) ?e5))
+(flet ($e86 (bvslt v0 (zero_extend[3] ?e17)))
+(flet ($e87 (bvsge (sign_extend[3] ?e24) ?e8))
+(flet ($e88 (bvslt ?e16 ?e12))
+(flet ($e89 (bvsge ?e29 ?e18))
+(flet ($e90 (bvsge v1 (sign_extend[3] ?e26)))
+(flet ($e91 (bvsle (sign_extend[3] ?e26) ?e25))
+(flet ($e92 (bvsgt v0 ?e32))
+(flet ($e93 (bvult ?e17 ?e17))
+(flet ($e94 (distinct v0 ?e11))
+(flet ($e95 (bvsgt ?e4 ?e5))
+(flet ($e96 (bvsge ?e7 ?e18))
+(flet ($e97 (distinct ?e16 ?e32))
+(flet ($e98 (bvslt v3 (sign_extend[3] ?e22)))
+(flet ($e99 (bvsge ?e28 ?e9))
+(flet ($e100 
+(and
+ (or $e96 $e47 $e61)
+ (or (not $e97) (not $e88) (not $e40))
+ (or $e40 (not $e45) $e61)
+ (or (not $e86) (not $e95) $e82)
+ (or $e65 $e59 (not $e50))
+ (or $e35 (not $e70) (not $e83))
+ (or $e40 $e98 (not $e96))
+ (or $e84 (not $e87) (not $e95))
+ (or (not $e58) $e98 $e41)
+ (or (not $e64) (not $e46) $e85)
+ (or $e43 (not $e60) $e89)
+ (or $e55 (not $e38) (not $e34))
+ (or $e35 $e58 (not $e39))
+ (or $e87 (not $e47) $e68)
+ (or $e52 (not $e79) $e35)
+ (or (not $e67) $e65 $e43)
+ (or $e60 (not $e71) (not $e84))
+ (or (not $e46) $e63 (not $e67))
+ (or $e57 $e41 $e88)
+ (or (not $e60) $e52 $e50)
+ (or (not $e57) $e88 (not $e99))
+ (or $e69 $e45 $e35)
+ (or (not $e38) (not $e48) $e77)
+ (or (not $e38) $e60 $e69)
+ (or (not $e94) (not $e77) $e68)
+ (or (not $e76) (not $e68) $e97)
+ (or (not $e75) (not $e43) $e72)
+ (or (not $e54) $e42 (not $e61))
+ (or (not $e89) $e42 $e44)
+ (or (not $e73) $e68 $e39)
+ (or $e82 $e69 (not $e89))
+ (or (not $e38) (not $e67) $e55)
+ (or (not $e92) (not $e63) $e99)
+))
+$e100
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz28.delta01.smt b/test/regress/regress0/bv/fuzz28.delta01.smt
new file mode 100644
index 0000000..5f8ca0f
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz28.delta01.smt
@@ -0,0 +1,13 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v0 BitVec[4]))
+:status sat
+:formula
+(let (?n1 (bvnot v0))
+(let (?n2 bv1[4])
+(let (?n3 (bvadd ?n1 ?n2))
+(let (?n4 (extract[0:0] ?n3))
+(let (?n5 bv0[1])
+(flet ($n6 (= ?n4 ?n5))
+$n6
+)))))))
diff --git a/test/regress/regress0/bv/fuzz28.smt b/test/regress/regress0/bv/fuzz28.smt
new file mode 100644
index 0000000..7320177
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz28.smt
@@ -0,0 +1,363 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status unsat
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:extrafuns ((v3 BitVec[4]))
+:formula
+(let (?e4 bv12[4])
+(let (?e5 bv14[4])
+(let (?e6 bv5[4])
+(let (?e7 bv6[4])
+(let (?e8 bv13[4])
+(let (?e9 (bvneg v0))
+(let (?e10 (rotate_left[0] v0))
+(let (?e11 (bvxnor v3 ?e6))
+(let (?e12 (bvnot v0))
+(let (?e13 (bvnand v0 ?e10))
+(let (?e14 (ite (bvslt v0 ?e4) bv1[1] bv0[1]))
+(let (?e15 (bvnand ?e6 ?e11))
+(let (?e16 (bvadd ?e13 ?e11))
+(let (?e17 (bvadd ?e12 ?e8))
+(let (?e18 (bvcomp ?e10 ?e15))
+(let (?e19 (ite (bvsgt ?e8 ?e5) bv1[1] bv0[1]))
+(let (?e20 (ite (bvugt (sign_extend[3] ?e19) ?e15) bv1[1] bv0[1]))
+(let (?e21 (bvxor v2 (sign_extend[3] ?e18)))
+(let (?e22 (bvadd ?e13 (zero_extend[3] ?e18)))
+(let (?e23 (ite (= ?e10 ?e13) bv1[1] bv0[1]))
+(let (?e24 (ite (bvslt ?e9 (sign_extend[3] ?e23)) bv1[1] bv0[1]))
+(let (?e25 (ite (bvsgt ?e8 (sign_extend[3] ?e24)) bv1[1] bv0[1]))
+(let (?e26 (bvxnor ?e8 (zero_extend[3] ?e14)))
+(let (?e27 (zero_extend[0] ?e25))
+(let (?e28 (extract[0:0] ?e15))
+(let (?e29 (ite (= (zero_extend[3] ?e19) ?e22) bv1[1] bv0[1]))
+(let (?e30 (rotate_right[1] ?e9))
+(let (?e31 (bvmul ?e10 v0))
+(let (?e32 (bvmul (zero_extend[3] ?e20) ?e10))
+(let (?e33 (bvshl ?e6 (sign_extend[3] ?e29)))
+(let (?e34 (ite (bvuge ?e15 (zero_extend[3] ?e28)) bv1[1] bv0[1]))
+(let (?e35 (bvmul (sign_extend[3] ?e18) ?e16))
+(let (?e36 (rotate_left[0] ?e22))
+(let (?e37 (bvshl v3 ?e15))
+(let (?e38 (ite (bvsgt ?e30 ?e8) bv1[1] bv0[1]))
+(let (?e39 (bvadd ?e30 (sign_extend[3] ?e27)))
+(let (?e40 (ite (bvsle v1 ?e15) bv1[1] bv0[1]))
+(let (?e41 (bvlshr ?e8 (zero_extend[3] ?e14)))
+(let (?e42 (ite (bvsgt ?e32 ?e22) bv1[1] bv0[1]))
+(let (?e43 (rotate_right[1] ?e31))
+(let (?e44 (ite (bvsge (sign_extend[3] ?e19) ?e10) bv1[1] bv0[1]))
+(let (?e45 (bvxor ?e12 ?e39))
+(let (?e46 (ite (= (zero_extend[3] ?e19) ?e4) bv1[1] bv0[1]))
+(let (?e47 (zero_extend[3] ?e18))
+(let (?e48 (zero_extend[2] ?e20))
+(let (?e49 (ite (bvslt ?e16 (zero_extend[3] ?e18)) bv1[1] bv0[1]))
+(let (?e50 (bvnand ?e25 ?e29))
+(let (?e51 (ite (= ?e15 ?e9) bv1[1] bv0[1]))
+(let (?e52 (bvcomp ?e12 ?e6))
+(let (?e53 (concat ?e51 ?e42))
+(let (?e54 (bvnand ?e27 ?e29))
+(let (?e55 (bvnor ?e26 ?e39))
+(let (?e56 (bvand (sign_extend[3] ?e46) ?e41))
+(let (?e57 (bvnor ?e4 ?e36))
+(let (?e58 (repeat[2] ?e44))
+(let (?e59 (ite (bvslt (sign_extend[3] ?e46) ?e17) bv1[1] bv0[1]))
+(let (?e60 (bvxnor (sign_extend[3] ?e20) ?e21))
+(let (?e61 (bvxnor v0 ?e35))
+(let (?e62 (bvnor ?e6 ?e60))
+(let (?e63 (ite (bvugt ?e29 ?e28) bv1[1] bv0[1]))
+(let (?e64 (ite (bvule ?e23 ?e49) bv1[1] bv0[1]))
+(let (?e65 (bvnot ?e23))
+(let (?e66 (repeat[1] ?e5))
+(let (?e67 (rotate_left[1] ?e17))
+(let (?e68 (ite (bvsle ?e56 ?e61) bv1[1] bv0[1]))
+(let (?e69 (sign_extend[0] ?e6))
+(let (?e70 (ite (bvslt ?e31 (sign_extend[3] ?e44)) bv1[1] bv0[1]))
+(let (?e71 (ite (= bv1[1] (extract[0:0] ?e17)) (zero_extend[3] ?e18) ?e41))
+(let (?e72 (bvor (zero_extend[3] ?e28) ?e12))
+(let (?e73 (bvashr ?e8 (sign_extend[3] ?e23)))
+(let (?e74 (extract[0:0] ?e70))
+(let (?e75 (bvnor ?e67 ?e62))
+(let (?e76 (zero_extend[0] ?e61))
+(let (?e77 (bvlshr ?e51 ?e54))
+(let (?e78 (bvand ?e7 ?e8))
+(flet ($e79 (bvule ?e19 ?e59))
+(flet ($e80 (= ?e30 (zero_extend[3] ?e19)))
+(flet ($e81 (bvult ?e28 ?e38))
+(flet ($e82 (bvslt ?e7 ?e31))
+(flet ($e83 (bvsgt ?e47 (sign_extend[3] ?e29)))
+(flet ($e84 (bvslt ?e30 (sign_extend[3] ?e18)))
+(flet ($e85 (= (sign_extend[3] ?e46) ?e47))
+(flet ($e86 (distinct ?e61 ?e36))
+(flet ($e87 (bvsge v3 (sign_extend[3] ?e52)))
+(flet ($e88 (bvslt ?e56 ?e75))
+(flet ($e89 (bvult ?e52 ?e14))
+(flet ($e90 (bvslt ?e12 (sign_extend[3] ?e29)))
+(flet ($e91 (bvslt ?e66 ?e76))
+(flet ($e92 (bvult ?e37 ?e36))
+(flet ($e93 (bvsgt ?e73 ?e69))
+(flet ($e94 (bvslt ?e33 (zero_extend[3] ?e64)))
+(flet ($e95 (distinct ?e75 (sign_extend[3] ?e54)))
+(flet ($e96 (bvsge ?e30 ?e75))
+(flet ($e97 (bvult (zero_extend[3] ?e25) ?e15))
+(flet ($e98 (bvsle (zero_extend[3] ?e40) v1))
+(flet ($e99 (bvsgt ?e32 ?e16))
+(flet ($e100 (bvuge (sign_extend[1] ?e54) ?e58))
+(flet ($e101 (bvuge ?e61 ?e41))
+(flet ($e102 (bvsle ?e4 ?e10))
+(flet ($e103 (bvsge ?e60 (zero_extend[1] ?e48)))
+(flet ($e104 (bvugt ?e73 ?e17))
+(flet ($e105 (bvugt ?e12 (sign_extend[3] ?e18)))
+(flet ($e106 (bvslt ?e11 ?e11))
+(flet ($e107 (bvugt (sign_extend[2] ?e58) v3))
+(flet ($e108 (bvuge (sign_extend[1] ?e48) ?e66))
+(flet ($e109 (distinct ?e30 ?e17))
+(flet ($e110 (bvslt ?e33 ?e43))
+(flet ($e111 (bvule ?e63 ?e25))
+(flet ($e112 (= ?e35 ?e30))
+(flet ($e113 (bvsgt ?e16 ?e33))
+(flet ($e114 (= (zero_extend[3] ?e34) ?e26))
+(flet ($e115 (distinct v0 (sign_extend[3] ?e28)))
+(flet ($e116 (bvsge (zero_extend[3] ?e18) ?e6))
+(flet ($e117 (= ?e15 ?e31))
+(flet ($e118 (bvult (zero_extend[1] ?e40) ?e53))
+(flet ($e119 (distinct (sign_extend[3] ?e28) ?e30))
+(flet ($e120 (bvsge ?e16 v1))
+(flet ($e121 (bvsge (sign_extend[3] ?e19) ?e78))
+(flet ($e122 (bvule ?e59 ?e38))
+(flet ($e123 (bvugt ?e73 v2))
+(flet ($e124 (distinct ?e75 (sign_extend[3] ?e27)))
+(flet ($e125 (bvslt (zero_extend[1] ?e59) ?e58))
+(flet ($e126 (bvsge ?e12 ?e21))
+(flet ($e127 (= ?e41 ?e12))
+(flet ($e128 (bvugt ?e56 v1))
+(flet ($e129 (bvsgt (zero_extend[3] ?e50) ?e45))
+(flet ($e130 (= (sign_extend[2] ?e58) ?e57))
+(flet ($e131 (bvugt ?e73 ?e10))
+(flet ($e132 (bvult ?e4 ?e47))
+(flet ($e133 (= (sign_extend[3] ?e68) ?e60))
+(flet ($e134 (bvugt (sign_extend[3] ?e74) ?e33))
+(flet ($e135 (bvult (sign_extend[3] ?e68) ?e47))
+(flet ($e136 (bvslt ?e49 ?e63))
+(flet ($e137 (bvugt ?e45 ?e13))
+(flet ($e138 (bvugt ?e51 ?e19))
+(flet ($e139 (bvslt ?e30 (sign_extend[3] ?e68)))
+(flet ($e140 (distinct (zero_extend[3] ?e52) v1))
+(flet ($e141 (= ?e17 ?e60))
+(flet ($e142 (bvuge ?e40 ?e77))
+(flet ($e143 (bvsge (sign_extend[3] ?e18) ?e5))
+(flet ($e144 (bvult ?e35 (sign_extend[3] ?e27)))
+(flet ($e145 (bvsgt ?e60 (zero_extend[3] ?e14)))
+(flet ($e146 (bvsle ?e26 (zero_extend[3] ?e27)))
+(flet ($e147 (bvule ?e72 ?e57))
+(flet ($e148 (= ?e41 (sign_extend[3] ?e59)))
+(flet ($e149 (bvuge (sign_extend[3] ?e52) ?e45))
+(flet ($e150 (bvule (sign_extend[3] ?e70) v2))
+(flet ($e151 (bvslt v1 (sign_extend[3] ?e49)))
+(flet ($e152 (distinct ?e22 (sign_extend[1] ?e48)))
+(flet ($e153 (distinct v1 ?e15))
+(flet ($e154 (bvuge ?e5 ?e62))
+(flet ($e155 (= ?e12 v3))
+(flet ($e156 (bvsge (zero_extend[3] ?e68) ?e62))
+(flet ($e157 (bvuge ?e76 (zero_extend[3] ?e65)))
+(flet ($e158 (= ?e26 ?e55))
+(flet ($e159 (bvsgt (zero_extend[3] ?e54) ?e72))
+(flet ($e160 (bvsle (sign_extend[3] ?e29) ?e41))
+(flet ($e161 (= (zero_extend[3] ?e18) v1))
+(flet ($e162 (bvsle ?e8 (sign_extend[3] ?e46)))
+(flet ($e163 (bvule ?e21 (zero_extend[3] ?e65)))
+(flet ($e164 (bvuge ?e36 (zero_extend[3] ?e64)))
+(flet ($e165 (= (zero_extend[3] ?e18) ?e43))
+(flet ($e166 (bvugt v0 (sign_extend[3] ?e70)))
+(flet ($e167 (bvslt (sign_extend[3] ?e24) ?e60))
+(flet ($e168 (bvsgt ?e10 (sign_extend[2] ?e53)))
+(flet ($e169 (bvugt ?e70 ?e70))
+(flet ($e170 (bvuge (sign_extend[3] ?e34) ?e43))
+(flet ($e171 (bvult ?e65 ?e19))
+(flet ($e172 (bvult ?e71 ?e17))
+(flet ($e173 (= ?e7 (zero_extend[3] ?e64)))
+(flet ($e174 (bvslt v0 ?e78))
+(flet ($e175 (bvsge ?e60 ?e78))
+(flet ($e176 (bvuge v2 ?e10))
+(flet ($e177 (bvsge ?e34 ?e40))
+(flet ($e178 (bvuge (sign_extend[3] ?e49) ?e17))
+(flet ($e179 (bvuge ?e71 (zero_extend[3] ?e14)))
+(flet ($e180 (bvult ?e66 (sign_extend[3] ?e25)))
+(flet ($e181 (bvsge (sign_extend[3] ?e23) v2))
+(flet ($e182 (bvsge ?e64 ?e65))
+(flet ($e183 (bvugt ?e72 ?e8))
+(flet ($e184 (bvule ?e70 ?e34))
+(flet ($e185 (distinct ?e25 ?e49))
+(flet ($e186 (bvsgt ?e41 (sign_extend[3] ?e40)))
+(flet ($e187 (bvslt ?e26 (sign_extend[3] ?e42)))
+(flet ($e188 (bvsgt ?e9 (sign_extend[3] ?e23)))
+(flet ($e189 (distinct ?e56 ?e21))
+(flet ($e190 (bvugt ?e35 v2))
+(flet ($e191 (bvsle ?e61 ?e33))
+(flet ($e192 (bvsge (sign_extend[3] ?e46) ?e69))
+(flet ($e193 (= ?e27 ?e18))
+(flet ($e194 (bvsgt ?e75 (zero_extend[3] ?e52)))
+(flet ($e195 (bvsgt ?e36 (sign_extend[3] ?e18)))
+(flet ($e196 (bvsgt (zero_extend[3] ?e20) ?e15))
+(flet ($e197 (bvsge ?e78 ?e36))
+(flet ($e198 (= (sign_extend[3] ?e51) ?e4))
+(flet ($e199 (bvsge ?e47 ?e37))
+(flet ($e200 (bvsgt ?e5 (sign_extend[3] ?e51)))
+(flet ($e201 (bvsgt ?e13 ?e75))
+(flet ($e202 (bvsle ?e15 ?e55))
+(flet ($e203 (bvsgt ?e47 ?e33))
+(flet ($e204 (bvsle (sign_extend[3] ?e28) v1))
+(flet ($e205 (bvsle (sign_extend[3] ?e77) ?e13))
+(flet ($e206 (bvsgt ?e48 (zero_extend[2] ?e46)))
+(flet ($e207 (bvsgt (zero_extend[3] ?e52) ?e56))
+(flet ($e208 (bvule (zero_extend[3] ?e46) ?e21))
+(flet ($e209 (bvuge ?e9 (zero_extend[3] ?e40)))
+(flet ($e210 (bvuge (sign_extend[3] ?e46) ?e26))
+(flet ($e211 (bvule (zero_extend[3] ?e40) ?e55))
+(flet ($e212 (distinct ?e12 v2))
+(flet ($e213 (distinct v2 ?e4))
+(flet ($e214 (bvslt ?e63 ?e65))
+(flet ($e215 (bvsge ?e28 ?e77))
+(flet ($e216 (bvsle (zero_extend[3] ?e70) ?e11))
+(flet ($e217 (bvult (sign_extend[3] ?e49) v0))
+(flet ($e218 (bvslt ?e76 ?e72))
+(flet ($e219 (bvuge ?e28 ?e14))
+(flet ($e220 (bvsgt ?e7 ?e7))
+(flet ($e221 (bvuge ?e53 (zero_extend[1] ?e28)))
+(flet ($e222 (bvslt (zero_extend[3] ?e27) ?e33))
+(flet ($e223 (bvuge (sign_extend[3] ?e38) ?e57))
+(flet ($e224 (bvugt ?e44 ?e14))
+(flet ($e225 (bvugt ?e36 (sign_extend[3] ?e44)))
+(flet ($e226 (bvugt ?e41 ?e41))
+(flet ($e227 (bvsge v2 ?e35))
+(flet ($e228 (distinct ?e9 v1))
+(flet ($e229 (bvuge ?e25 ?e42))
+(flet ($e230 (bvsgt (sign_extend[3] ?e40) ?e66))
+(flet ($e231 (bvule ?e24 ?e14))
+(flet ($e232 (bvsge ?e62 ?e37))
+(flet ($e233 (bvsge ?e47 ?e16))
+(flet ($e234 (bvugt ?e32 (sign_extend[3] ?e51)))
+(flet ($e235 (bvule ?e6 ?e15))
+(flet ($e236 (bvuge ?e36 ?e57))
+(flet ($e237 (bvult ?e9 ?e16))
+(flet ($e238 (bvule ?e56 (zero_extend[3] ?e51)))
+(flet ($e239 (bvsgt ?e15 (zero_extend[3] ?e23)))
+(flet ($e240 (bvugt (zero_extend[3] ?e18) ?e21))
+(flet ($e241 (bvsge v3 (zero_extend[3] ?e40)))
+(flet ($e242 (bvult ?e36 (zero_extend[3] ?e59)))
+(flet ($e243 (bvugt ?e75 (zero_extend[1] ?e48)))
+(flet ($e244 (bvult ?e21 ?e33))
+(flet ($e245 (= ?e32 v2))
+(flet ($e246 (bvsgt ?e21 ?e69))
+(flet ($e247 (bvsle ?e7 ?e37))
+(flet ($e248 (distinct (sign_extend[3] ?e64) ?e12))
+(flet ($e249 (distinct v0 (sign_extend[3] ?e27)))
+(flet ($e250 (distinct (sign_extend[3] ?e42) ?e56))
+(flet ($e251 (bvult ?e56 ?e22))
+(flet ($e252 (bvslt ?e7 ?e6))
+(flet ($e253 (bvsle ?e31 ?e16))
+(flet ($e254 (bvslt v1 (zero_extend[3] ?e18)))
+(flet ($e255 (bvuge ?e15 ?e30))
+(flet ($e256 (distinct ?e45 ?e11))
+(flet ($e257 (distinct ?e7 ?e66))
+(flet ($e258 (bvule ?e56 (zero_extend[1] ?e48)))
+(flet ($e259 (bvugt ?e26 ?e55))
+(flet ($e260 (bvsle ?e39 (zero_extend[3] ?e14)))
+(flet ($e261 (bvsgt ?e75 ?e67))
+(flet ($e262 
+(and
+ (or (not $e246) $e254 $e237)
+ (or (not $e151) (not $e150) $e92)
+ (or (not $e177) (not $e178) (not $e205))
+ (or $e82 (not $e127) $e187)
+ (or (not $e169) $e88 (not $e90))
+ (or (not $e98) $e130 (not $e87))
+ (or (not $e235) $e207 $e129)
+ (or (not $e163) (not $e207) $e109)
+ (or (not $e236) (not $e124) $e123)
+ (or (not $e194) $e261 $e178)
+ (or $e172 $e159 (not $e261))
+ (or $e154 $e100 $e123)
+ (or (not $e195) $e213 $e194)
+ (or (not $e184) (not $e202) (not $e137))
+ (or (not $e81) (not $e248) $e92)
+ (or $e119 $e189 $e223)
+ (or $e199 (not $e160) (not $e208))
+ (or (not $e85) (not $e82) (not $e170))
+ (or (not $e153) (not $e172) $e119)
+ (or (not $e182) $e151 (not $e257))
+ (or (not $e243) $e224 (not $e192))
+ (or (not $e79) (not $e152) (not $e100))
+ (or (not $e178) $e158 $e195)
+ (or (not $e148) (not $e146) $e166)
+ (or $e235 (not $e152) (not $e255))
+ (or (not $e177) (not $e237) (not $e138))
+ (or $e210 (not $e191) (not $e95))
+ (or $e138 $e260 (not $e232))
+ (or $e180 (not $e112) (not $e96))
+ (or (not $e223) (not $e215) $e137)
+ (or (not $e175) (not $e192) (not $e170))
+ (or (not $e175) (not $e256) (not $e138))
+ (or $e91 $e143 $e147)
+ (or $e253 $e206 $e217)
+ (or $e249 (not $e205) $e252)
+ (or $e153 $e212 $e151)
+ (or $e175 $e84 (not $e105))
+ (or (not $e210) $e185 $e236)
+ (or (not $e83) $e248 $e165)
+ (or $e202 (not $e106) $e145)
+ (or (not $e129) (not $e153) (not $e235))
+ (or $e253 (not $e122) (not $e174))
+ (or $e191 (not $e209) (not $e235))
+ (or $e256 $e216 (not $e142))
+ (or $e237 (not $e132) $e81)
+ (or $e121 (not $e250) $e162)
+ (or $e175 (not $e133) (not $e82))
+ (or $e217 (not $e90) (not $e220))
+ (or $e210 $e188 (not $e124))
+ (or (not $e153) (not $e110) $e229)
+ (or (not $e224) $e177 $e83)
+ (or (not $e233) $e170 (not $e233))
+ (or (not $e152) $e241 $e178)
+ (or $e192 (not $e209) $e177)
+ (or $e191 $e143 (not $e117))
+ (or (not $e133) $e91 (not $e120))
+ (or (not $e227) (not $e217) $e197)
+ (or (not $e99) (not $e223) (not $e261))
+ (or $e139 $e85 $e128)
+ (or $e219 (not $e156) (not $e208))
+ (or (not $e112) (not $e219) $e235)
+ (or $e104 (not $e98) (not $e190))
+ (or $e247 (not $e129) (not $e254))
+ (or $e110 $e186 $e225)
+ (or $e215 $e170 $e135)
+ (or $e92 (not $e256) (not $e143))
+ (or $e160 (not $e89) $e173)
+ (or $e238 (not $e188) (not $e144))
+ (or $e164 (not $e247) (not $e87))
+ (or $e83 $e251 (not $e169))
+ (or (not $e149) (not $e166) $e97)
+ (or (not $e205) (not $e166) (not $e218))
+ (or $e163 (not $e137) $e190)
+ (or (not $e151) (not $e207) (not $e144))
+ (or (not $e110) $e84 (not $e82))
+ (or $e211 (not $e105) (not $e117))
+ (or $e233 $e218 (not $e188))
+ (or $e165 $e197 $e235)
+ (or $e107 (not $e222) (not $e203))
+ (or $e157 (not $e215) $e245)
+ (or $e140 $e151 (not $e255))
+ (or $e126 $e192 (not $e225))
+ (or (not $e257) (not $e143) $e213)
+ (or $e100 (not $e98) $e103)
+ (or (not $e173) $e132 $e113)
+ (or $e250 (not $e250) $e122)
+ (or $e201 $e119 $e230)
+ (or $e128 (not $e184) (not $e228))
+ (or $e211 $e120 (not $e124))
+ (or (not $e80) $e91 $e139)
+ (or $e205 (not $e220) $e91)
+))
+$e262
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz29.delta01.smt b/test/regress/regress0/bv/fuzz29.delta01.smt
new file mode 100644
index 0000000..ec5e74e
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz29.delta01.smt
@@ -0,0 +1,54 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:status sat
+:formula
+(flet ($n1 true)
+(flet ($n2 false)
+(flet ($n3 (bvsge v2 v1))
+(let (?n4 (bvashr v0 v1))
+(let (?n5 (bvnand v1 ?n4))
+(flet ($n6 (bvsgt ?n5 v0))
+(flet ($n7 (or $n2 $n3 $n6))
+(let (?n8 (extract[2:1] v1))
+(flet ($n9 (bvugt ?n8 ?n8))
+(flet ($n10 (bvsge v0 v1))
+(let (?n11 bv1[1])
+(let (?n12 bv0[1])
+(let (?n13 (ite $n10 ?n11 ?n12))
+(let (?n14 (sign_extend[1] ?n13))
+(flet ($n15 (bvule ?n8 ?n14))
+(flet ($n16 (not $n15))
+(let (?n17 bv0[4])
+(let (?n18 (bvor v1 ?n4))
+(let (?n19 (bvxnor ?n17 ?n18))
+(let (?n20 (sign_extend[3] ?n13))
+(flet ($n21 (bvsge ?n20 ?n17))
+(let (?n22 (ite $n21 ?n11 ?n12))
+(let (?n23 (sign_extend[3] ?n22))
+(flet ($n24 (distinct ?n19 ?n23))
+(flet ($n25 (not $n24))
+(flet ($n26 (or $n9 $n16 $n25))
+(let (?n27 bv1[4])
+(flet ($n28 (bvsgt v0 ?n27))
+(let (?n29 (bvnor v2 ?n5))
+(flet ($n30 (bvule ?n29 ?n18))
+(flet ($n31 (not $n30))
+(flet ($n32 (bvsgt ?n18 ?n18))
+(let (?n33 (ite $n32 ?n11 ?n12))
+(flet ($n34 (bvugt ?n11 ?n33))
+(flet ($n35 (or $n31 $n34 $n34))
+(flet ($n36 (distinct ?n27 ?n5))
+(let (?n37 (rotate_right[2] ?n5))
+(flet ($n38 (bvuge ?n37 ?n27))
+(flet ($n39 (or $n2 $n36 $n38))
+(flet ($n40 (bvult ?n20 ?n27))
+(flet ($n41 (not $n40))
+(flet ($n42 (bvule ?n11 ?n33))
+(flet ($n43 (not $n42))
+(flet ($n44 (or $n2 $n41 $n43))
+(flet ($n45 (and $n7 $n26 $n28 $n35 $n39 $n44))
+$n45
+))))))))))))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/bv/fuzz29.smt b/test/regress/regress0/bv/fuzz29.smt
new file mode 100644
index 0000000..1a9fb0b
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz29.smt
@@ -0,0 +1,98 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status sat
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:formula
+(let (?e3 bv6[4])
+(let (?e4 bv1[4])
+(let (?e5 bv2[4])
+(let (?e6 (bvashr v0 v1))
+(let (?e7 (bvor v1 ?e6))
+(let (?e8 (ite (bvsge v0 v1) bv1[1] bv0[1]))
+(let (?e9 (bvxnor ?e6 ?e7))
+(let (?e10 (ite (bvsgt ?e7 ?e7) bv1[1] bv0[1]))
+(let (?e11 (ite (bvsge (sign_extend[3] ?e8) ?e5) bv1[1] bv0[1]))
+(let (?e12 (bvxnor ?e5 ?e7))
+(let (?e13 (bvnand v1 ?e9))
+(let (?e14 (bvnor ?e5 ?e4))
+(let (?e15 (bvshl ?e7 (zero_extend[3] ?e11)))
+(let (?e16 (repeat[1] ?e13))
+(let (?e17 (bvnor v2 ?e13))
+(let (?e18 (bvnot ?e12))
+(let (?e19 (ite (bvsgt v1 (sign_extend[3] ?e8)) bv1[1] bv0[1]))
+(let (?e20 (bvcomp ?e5 ?e13))
+(let (?e21 (rotate_right[2] ?e16))
+(let (?e22 (extract[2:1] v1))
+(let (?e23 (bvashr ?e21 ?e3))
+(flet ($e24 (distinct v0 ?e17))
+(flet ($e25 (bvule ?e13 (sign_extend[3] ?e11)))
+(flet ($e26 (bvsge v2 v1))
+(flet ($e27 (bvsge v0 v0))
+(flet ($e28 (bvslt ?e23 v2))
+(flet ($e29 (= ?e6 ?e5))
+(flet ($e30 (bvule ?e19 ?e10))
+(flet ($e31 (bvsle (zero_extend[2] ?e22) ?e17))
+(flet ($e32 (bvsgt ?e14 (sign_extend[3] ?e8)))
+(flet ($e33 (bvsgt ?e13 v0))
+(flet ($e34 (bvuge v2 ?e23))
+(flet ($e35 (bvule ?e6 v2))
+(flet ($e36 (bvule ?e22 (sign_extend[1] ?e8)))
+(flet ($e37 (bvuge (zero_extend[3] ?e10) ?e13))
+(flet ($e38 (= ?e5 (sign_extend[3] ?e19)))
+(flet ($e39 (bvsle ?e16 (sign_extend[3] ?e10)))
+(flet ($e40 (bvuge ?e14 ?e18))
+(flet ($e41 (bvugt ?e19 ?e10))
+(flet ($e42 (bvsle (sign_extend[3] ?e11) ?e21))
+(flet ($e43 (bvsge ?e18 ?e13))
+(flet ($e44 (distinct ?e16 ?e15))
+(flet ($e45 (bvult ?e4 ?e6))
+(flet ($e46 (bvule ?e15 ?e5))
+(flet ($e47 (bvugt ?e22 ?e22))
+(flet ($e48 (bvsge (zero_extend[3] ?e20) ?e23))
+(flet ($e49 (bvsle ?e12 ?e5))
+(flet ($e50 (bvsge (zero_extend[2] ?e22) ?e15))
+(flet ($e51 (bvsgt v0 ?e15))
+(flet ($e52 (bvuge ?e6 v1))
+(flet ($e53 (bvsgt ?e7 ?e15))
+(flet ($e54 (bvsge ?e15 (zero_extend[3] ?e19)))
+(flet ($e55 (bvult ?e23 v1))
+(flet ($e56 (bvsge ?e23 ?e6))
+(flet ($e57 (distinct ?e12 (sign_extend[3] ?e11)))
+(flet ($e58 (bvuge v0 ?e6))
+(flet ($e59 (bvsge (zero_extend[3] ?e11) ?e12))
+(flet ($e60 (bvule ?e17 ?e7))
+(flet ($e61 (bvult (sign_extend[3] ?e8) ?e3))
+(flet ($e62 (= ?e14 (sign_extend[3] ?e11)))
+(flet ($e63 (bvuge ?e23 (zero_extend[3] ?e20)))
+(flet ($e64 (bvslt ?e7 v2))
+(flet ($e65 (bvsge (zero_extend[3] ?e10) v0))
+(flet ($e66 (bvsge (sign_extend[3] ?e8) ?e9))
+(flet ($e67 
+(and
+ (or $e42 $e44 (not $e63))
+ (or (not $e44) (not $e30) (not $e61))
+ (or $e41 $e41 (not $e60))
+ (or (not $e46) $e29 (not $e65))
+ (or $e65 $e46 (not $e44))
+ (or $e52 $e59 $e41)
+ (or $e36 $e50 $e33)
+ (or (not $e26) $e33 $e26)
+ (or (not $e65) $e50 (not $e52))
+ (or $e57 (not $e36) (not $e60))
+ (or $e47 $e27 (not $e50))
+ (or (not $e25) (not $e64) $e24)
+ (or (not $e52) $e34 (not $e58))
+ (or (not $e63) (not $e56) $e28)
+ (or (not $e51) (not $e60) $e59)
+ (or $e52 (not $e54) $e24)
+ (or (not $e36) $e47 (not $e57))
+ (or (not $e66) $e36 $e65)
+ (or (not $e46) (not $e61) $e51)
+ (or $e24 (not $e24) $e53)
+ (or (not $e58) $e56 $e31)
+))
+$e67
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz30.delta01.smt b/test/regress/regress0/bv/fuzz30.delta01.smt
new file mode 100644
index 0000000..e999953
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz30.delta01.smt
@@ -0,0 +1,11 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v2 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:status sat
+:formula
+(let (?n1 (bvmul v1 v2))
+(let (?n2 (bvneg ?n1))
+(flet ($n3 (distinct ?n1 ?n2))
+$n3
+))))
diff --git a/test/regress/regress0/bv/fuzz30.smt b/test/regress/regress0/bv/fuzz30.smt
new file mode 100644
index 0000000..494cde3
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz30.smt
@@ -0,0 +1,72 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status sat
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:extrafuns ((v3 BitVec[4]))
+:formula
+(let (?e4 bv4[4])
+(let (?e5 bv9[4])
+(let (?e6 (bvnand ?e4 v0))
+(let (?e7 (bvsub v0 v1))
+(let (?e8 (bvmul v2 v1))
+(let (?e9 (bvand ?e8 v1))
+(let (?e10 (bvneg ?e8))
+(let (?e11 (bvxor ?e9 ?e10))
+(let (?e12 (ite (= bv1[1] (extract[0:0] ?e11)) v1 v0))
+(let (?e13 (bvand ?e7 v1))
+(let (?e14 (ite (bvslt ?e12 ?e4) bv1[1] bv0[1]))
+(let (?e15 (ite (distinct ?e4 ?e6) bv1[1] bv0[1]))
+(let (?e16 (bvlshr ?e9 ?e5))
+(let (?e17 (repeat[2] ?e14))
+(let (?e18 (ite (bvsge ?e11 ?e8) bv1[1] bv0[1]))
+(let (?e19 (ite (bvslt (sign_extend[2] ?e17) v3) bv1[1] bv0[1]))
+(flet ($e20 (bvuge ?e16 ?e12))
+(flet ($e21 (bvsgt ?e11 (sign_extend[3] ?e15)))
+(flet ($e22 (bvsle (zero_extend[2] ?e17) ?e8))
+(flet ($e23 (= ?e6 ?e5))
+(flet ($e24 (bvslt ?e11 (zero_extend[3] ?e14)))
+(flet ($e25 (bvslt ?e9 ?e8))
+(flet ($e26 (bvugt (sign_extend[3] ?e15) ?e6))
+(flet ($e27 (bvsge ?e10 v3))
+(flet ($e28 (bvsge ?e5 v1))
+(flet ($e29 (bvult ?e6 ?e16))
+(flet ($e30 (bvugt ?e7 ?e16))
+(flet ($e31 (bvsge ?e11 ?e7))
+(flet ($e32 (bvugt ?e9 ?e13))
+(flet ($e33 (distinct ?e5 ?e16))
+(flet ($e34 (bvuge ?e6 (zero_extend[2] ?e17)))
+(flet ($e35 (bvuge ?e9 ?e7))
+(flet ($e36 (bvult v3 v0))
+(flet ($e37 (bvsgt v2 ?e16))
+(flet ($e38 (bvult ?e11 v1))
+(flet ($e39 (bvuge v2 v1))
+(flet ($e40 (bvugt ?e12 (zero_extend[2] ?e17)))
+(flet ($e41 (bvsle (zero_extend[3] ?e15) ?e4))
+(flet ($e42 (= ?e8 ?e9))
+(flet ($e43 (distinct ?e10 ?e8))
+(flet ($e44 (bvsge v3 ?e8))
+(flet ($e45 (bvule ?e9 (sign_extend[3] ?e18)))
+(flet ($e46 (bvsge ?e13 (sign_extend[3] ?e18)))
+(flet ($e47 (distinct (sign_extend[3] ?e19) ?e10))
+(flet ($e48 
+(and
+ (or $e37 $e24 (not $e32))
+ (or (not $e27) (not $e35) (not $e24))
+ (or (not $e32) (not $e35) (not $e30))
+ (or (not $e36) $e35 $e41)
+ (or (not $e45) $e23 (not $e37))
+ (or $e45 (not $e20) $e28)
+ (or $e29 $e37 $e20)
+ (or (not $e21) $e25 $e22)
+ (or (not $e24) (not $e40) (not $e46))
+ (or (not $e47) (not $e22) (not $e33))
+ (or $e41 $e40 (not $e43))
+ (or $e25 (not $e38) $e28)
+ (or $e22 (not $e28) $e44)
+ (or (not $e40) $e37 (not $e31))
+))
+$e48
+))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz31.delta01.smt b/test/regress/regress0/bv/fuzz31.delta01.smt
new file mode 100644
index 0000000..07f8b4a
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz31.delta01.smt
@@ -0,0 +1,19 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v1 BitVec[4]))
+:status sat
+:formula
+(let (?n1 bv8[4])
+(let (?n2 bv12[4])
+(let (?n3 (repeat[1] ?n2))
+(flet ($n4 (bvule ?n1 v1))
+(let (?n5 bv1[1])
+(let (?n6 bv0[1])
+(let (?n7 (ite $n4 ?n5 ?n6))
+(let (?n8 (sign_extend[3] ?n7))
+(let (?n9 (bvmul ?n3 ?n8))
+(let (?n10 (bvmul ?n1 ?n9))
+(let (?n11 bv0[4])
+(flet ($n12 (= ?n10 ?n11))
+$n12
+)))))))))))))
diff --git a/test/regress/regress0/bv/fuzz31.smt b/test/regress/regress0/bv/fuzz31.smt
new file mode 100644
index 0000000..452e3d2
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz31.smt
@@ -0,0 +1,418 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status unsat
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:extrafuns ((v3 BitVec[4]))
+:formula
+(let (?e4 bv8[4])
+(let (?e5 bv12[4])
+(let (?e6 bv6[4])
+(let (?e7 bv0[4])
+(let (?e8 bv15[4])
+(let (?e9 (ite (bvuge ?e4 v1) bv1[1] bv0[1]))
+(let (?e10 (ite (bvsle ?e4 ?e6) bv1[1] bv0[1]))
+(let (?e11 (repeat[1] v2))
+(let (?e12 (ite (bvsge ?e6 ?e5) bv1[1] bv0[1]))
+(let (?e13 (bvnor ?e12 ?e12))
+(let (?e14 (ite (bvult ?e6 ?e4) bv1[1] bv0[1]))
+(let (?e15 (bvand ?e4 ?e5))
+(let (?e16 (repeat[1] ?e5))
+(let (?e17 (bvor (zero_extend[3] ?e9) ?e4))
+(let (?e18 (ite (bvule ?e4 v1) bv1[1] bv0[1]))
+(let (?e19 (bvcomp ?e17 (sign_extend[3] ?e9)))
+(let (?e20 (bvxor (sign_extend[3] ?e13) ?e15))
+(let (?e21 (ite (bvsle ?e6 v2) bv1[1] bv0[1]))
+(let (?e22 (ite (bvsge ?e5 ?e4) bv1[1] bv0[1]))
+(let (?e23 (bvnor v1 (zero_extend[3] ?e19)))
+(let (?e24 (ite (bvule ?e23 (sign_extend[3] ?e19)) bv1[1] bv0[1]))
+(let (?e25 (bvnand v1 ?e11))
+(let (?e26 (ite (bvsle (zero_extend[3] ?e18) ?e23) bv1[1] bv0[1]))
+(let (?e27 (bvlshr ?e20 ?e23))
+(let (?e28 (zero_extend[3] ?e21))
+(let (?e29 (bvnot ?e14))
+(let (?e30 (rotate_right[2] ?e5))
+(let (?e31 (bvxnor ?e10 ?e14))
+(let (?e32 (ite (= ?e5 ?e28) bv1[1] bv0[1]))
+(let (?e33 (bvshl ?e5 ?e25))
+(let (?e34 (bvnot ?e30))
+(let (?e35 (sign_extend[0] ?e23))
+(let (?e36 (zero_extend[0] ?e16))
+(let (?e37 (bvxor ?e30 ?e30))
+(let (?e38 (bvneg ?e26))
+(let (?e39 (bvnand (sign_extend[3] ?e9) ?e5))
+(let (?e40 (bvlshr ?e23 (sign_extend[3] ?e10)))
+(let (?e41 (bvnor ?e40 ?e7))
+(let (?e42 (bvshl (sign_extend[3] ?e12) ?e35))
+(let (?e43 (bvashr ?e30 ?e28))
+(let (?e44 (ite (distinct (zero_extend[3] ?e19) ?e25) bv1[1] bv0[1]))
+(let (?e45 (bvmul ?e16 (sign_extend[3] ?e18)))
+(let (?e46 (bvnot ?e33))
+(let (?e47 (bvmul ?e15 ?e45))
+(let (?e48 (bvxnor ?e4 ?e45))
+(let (?e49 (zero_extend[3] ?e29))
+(let (?e50 (bvor (sign_extend[3] ?e44) ?e36))
+(let (?e51 (ite (distinct ?e5 ?e35) bv1[1] bv0[1]))
+(let (?e52 (bvashr ?e39 (zero_extend[3] ?e18)))
+(let (?e53 (bvnor ?e25 (zero_extend[3] ?e24)))
+(let (?e54 (ite (bvugt ?e53 ?e23) bv1[1] bv0[1]))
+(let (?e55 (bvlshr ?e39 (zero_extend[3] ?e19)))
+(let (?e56 (ite (bvuge (sign_extend[3] ?e24) ?e39) bv1[1] bv0[1]))
+(let (?e57 (ite (bvuge ?e23 ?e48) bv1[1] bv0[1]))
+(let (?e58 (bvnand ?e45 ?e34))
+(let (?e59 (bvand (zero_extend[3] ?e18) ?e6))
+(let (?e60 (ite (bvsge ?e6 ?e36) bv1[1] bv0[1]))
+(let (?e61 (bvadd ?e6 ?e11))
+(let (?e62 (ite (bvule ?e20 ?e48) bv1[1] bv0[1]))
+(let (?e63 (bvmul ?e11 (zero_extend[3] ?e51)))
+(let (?e64 (bvnot ?e56))
+(let (?e65 (bvor ?e55 (zero_extend[3] ?e60)))
+(let (?e66 (bvnand ?e50 (sign_extend[3] ?e13)))
+(let (?e67 (ite (bvsle (sign_extend[3] ?e9) ?e59) bv1[1] bv0[1]))
+(let (?e68 (bvlshr ?e61 (zero_extend[3] ?e13)))
+(let (?e69 (ite (bvsgt v2 ?e49) bv1[1] bv0[1]))
+(let (?e70 (extract[0:0] ?e60))
+(let (?e71 (rotate_left[1] ?e33))
+(let (?e72 (bvor (sign_extend[3] ?e10) ?e39))
+(let (?e73 (bvneg ?e71))
+(let (?e74 (extract[0:0] ?e26))
+(let (?e75 (ite (bvsge ?e28 (sign_extend[3] ?e14)) bv1[1] bv0[1]))
+(let (?e76 (ite (= ?e40 (sign_extend[3] ?e51)) bv1[1] bv0[1]))
+(let (?e77 (bvashr ?e37 ?e28))
+(let (?e78 (ite (bvugt ?e49 ?e52) bv1[1] bv0[1]))
+(let (?e79 (ite (bvule ?e71 (zero_extend[3] ?e74)) bv1[1] bv0[1]))
+(let (?e80 (ite (distinct (zero_extend[3] ?e62) ?e28) bv1[1] bv0[1]))
+(let (?e81 (bvadd (zero_extend[3] ?e13) v3))
+(let (?e82 (extract[0:0] ?e46))
+(let (?e83 (zero_extend[3] ?e69))
+(let (?e84 (bvsub ?e58 ?e43))
+(let (?e85 (ite (= bv1[1] (extract[0:0] ?e57)) ?e14 ?e9))
+(let (?e86 (ite (bvule (zero_extend[3] ?e9) ?e48) bv1[1] bv0[1]))
+(let (?e87 (bvadd ?e30 (zero_extend[3] ?e60)))
+(let (?e88 (ite (bvugt ?e66 (sign_extend[3] ?e31)) bv1[1] bv0[1]))
+(let (?e89 (bvcomp ?e48 (zero_extend[3] ?e86)))
+(let (?e90 (bvnand v3 v0))
+(let (?e91 (bvnor ?e84 v1))
+(let (?e92 (bvxor (zero_extend[3] ?e64) ?e8))
+(flet ($e93 (bvuge (sign_extend[3] ?e64) ?e48))
+(flet ($e94 (bvugt v2 ?e45))
+(flet ($e95 (= ?e30 (sign_extend[3] ?e12)))
+(flet ($e96 (bvsgt ?e71 ?e15))
+(flet ($e97 (bvsle ?e18 ?e67))
+(flet ($e98 (bvugt (sign_extend[3] ?e51) ?e87))
+(flet ($e99 (bvslt v2 ?e52))
+(flet ($e100 (bvugt ?e48 ?e35))
+(flet ($e101 (bvsle (sign_extend[3] ?e62) ?e30))
+(flet ($e102 (bvule ?e33 (sign_extend[3] ?e18)))
+(flet ($e103 (bvslt v0 ?e90))
+(flet ($e104 (bvuge ?e52 (sign_extend[3] ?e31)))
+(flet ($e105 (bvuge ?e62 ?e54))
+(flet ($e106 (bvule ?e33 ?e63))
+(flet ($e107 (bvsle (zero_extend[3] ?e89) ?e23))
+(flet ($e108 (bvslt ?e92 (sign_extend[3] ?e82)))
+(flet ($e109 (bvugt ?e31 ?e32))
+(flet ($e110 (= ?e33 (sign_extend[3] ?e80)))
+(flet ($e111 (bvsle ?e12 ?e75))
+(flet ($e112 (= ?e56 ?e60))
+(flet ($e113 (bvsge ?e66 ?e46))
+(flet ($e114 (bvult ?e41 (sign_extend[3] ?e56)))
+(flet ($e115 (bvsle v2 (zero_extend[3] ?e60)))
+(flet ($e116 (bvsle ?e63 (zero_extend[3] ?e14)))
+(flet ($e117 (bvule v3 ?e50))
+(flet ($e118 (bvsgt ?e32 ?e85))
+(flet ($e119 (bvule (sign_extend[3] ?e24) ?e91))
+(flet ($e120 (distinct ?e91 ?e59))
+(flet ($e121 (bvsle ?e24 ?e12))
+(flet ($e122 (bvugt ?e43 ?e55))
+(flet ($e123 (= ?e68 (zero_extend[3] ?e85)))
+(flet ($e124 (= ?e48 ?e72))
+(flet ($e125 (bvugt ?e30 (zero_extend[3] ?e24)))
+(flet ($e126 (bvugt ?e87 ?e61))
+(flet ($e127 (bvult ?e79 ?e62))
+(flet ($e128 (bvslt ?e84 (sign_extend[3] ?e21)))
+(flet ($e129 (distinct (sign_extend[3] ?e70) ?e20))
+(flet ($e130 (bvslt ?e41 ?e36))
+(flet ($e131 (distinct ?e24 ?e14))
+(flet ($e132 (distinct ?e11 (zero_extend[3] ?e31)))
+(flet ($e133 (bvsge ?e45 ?e81))
+(flet ($e134 (bvuge ?e81 v0))
+(flet ($e135 (bvult ?e53 (sign_extend[3] ?e21)))
+(flet ($e136 (bvuge (zero_extend[3] ?e12) ?e71))
+(flet ($e137 (bvslt ?e84 ?e30))
+(flet ($e138 (bvsge v0 ?e73))
+(flet ($e139 (bvuge ?e15 ?e48))
+(flet ($e140 (bvsle v2 (sign_extend[3] ?e26)))
+(flet ($e141 (= ?e72 v2))
+(flet ($e142 (bvult ?e6 ?e35))
+(flet ($e143 (bvslt ?e77 (zero_extend[3] ?e22)))
+(flet ($e144 (bvsle (zero_extend[3] ?e38) ?e84))
+(flet ($e145 (bvsgt ?e59 (sign_extend[3] ?e80)))
+(flet ($e146 (bvsgt ?e89 ?e22))
+(flet ($e147 (bvslt (zero_extend[3] ?e64) v0))
+(flet ($e148 (bvsle ?e42 ?e17))
+(flet ($e149 (bvugt ?e84 (sign_extend[3] ?e82)))
+(flet ($e150 (bvsle (sign_extend[3] ?e44) ?e8))
+(flet ($e151 (bvsle ?e72 (sign_extend[3] ?e13)))
+(flet ($e152 (bvuge ?e28 (zero_extend[3] ?e31)))
+(flet ($e153 (bvugt v0 ?e48))
+(flet ($e154 (= ?e37 ?e23))
+(flet ($e155 (bvsgt (zero_extend[3] ?e12) ?e34))
+(flet ($e156 (= ?e50 (sign_extend[3] ?e82)))
+(flet ($e157 (distinct ?e52 ?e46))
+(flet ($e158 (distinct (zero_extend[3] ?e21) ?e66))
+(flet ($e159 (bvsle (zero_extend[3] ?e13) ?e43))
+(flet ($e160 (distinct ?e49 (zero_extend[3] ?e64)))
+(flet ($e161 (distinct ?e90 ?e8))
+(flet ($e162 (distinct ?e89 ?e21))
+(flet ($e163 (bvule ?e61 ?e45))
+(flet ($e164 (bvsgt (sign_extend[3] ?e38) ?e61))
+(flet ($e165 (bvslt (sign_extend[3] ?e57) ?e25))
+(flet ($e166 (bvslt ?e59 (sign_extend[3] ?e12)))
+(flet ($e167 (distinct (zero_extend[3] ?e74) ?e17))
+(flet ($e168 (bvuge ?e11 ?e20))
+(flet ($e169 (= ?e23 (zero_extend[3] ?e70)))
+(flet ($e170 (bvugt ?e81 (zero_extend[3] ?e51)))
+(flet ($e171 (bvslt ?e16 (sign_extend[3] ?e26)))
+(flet ($e172 (bvule ?e84 ?e28))
+(flet ($e173 (bvsge ?e45 (sign_extend[3] ?e74)))
+(flet ($e174 (bvult ?e59 (zero_extend[3] ?e79)))
+(flet ($e175 (distinct ?e66 (zero_extend[3] ?e19)))
+(flet ($e176 (bvult (sign_extend[3] ?e19) ?e11))
+(flet ($e177 (bvuge (zero_extend[3] ?e21) ?e52))
+(flet ($e178 (bvult ?e51 ?e10))
+(flet ($e179 (bvult v0 (zero_extend[3] ?e54)))
+(flet ($e180 (distinct ?e44 ?e80))
+(flet ($e181 (bvult ?e16 ?e37))
+(flet ($e182 (bvslt (zero_extend[3] ?e29) ?e40))
+(flet ($e183 (bvsle ?e31 ?e12))
+(flet ($e184 (distinct ?e78 ?e74))
+(flet ($e185 (= ?e43 ?e47))
+(flet ($e186 (bvsle (sign_extend[3] ?e76) ?e46))
+(flet ($e187 (distinct ?e83 ?e27))
+(flet ($e188 (bvugt ?e22 ?e24))
+(flet ($e189 (bvsle ?e41 (sign_extend[3] ?e38)))
+(flet ($e190 (bvule (sign_extend[3] ?e67) ?e50))
+(flet ($e191 (distinct ?e81 (sign_extend[3] ?e85)))
+(flet ($e192 (distinct ?e20 (zero_extend[3] ?e76)))
+(flet ($e193 (bvsge (sign_extend[3] ?e10) ?e59))
+(flet ($e194 (bvugt (zero_extend[3] ?e70) ?e68))
+(flet ($e195 (bvsle ?e55 ?e47))
+(flet ($e196 (bvugt ?e46 (sign_extend[3] ?e76)))
+(flet ($e197 (bvslt ?e11 (sign_extend[3] ?e26)))
+(flet ($e198 (bvugt ?e48 ?e42))
+(flet ($e199 (bvult ?e46 ?e25))
+(flet ($e200 (bvsle ?e72 (zero_extend[3] ?e76)))
+(flet ($e201 (bvult (zero_extend[3] ?e44) ?e6))
+(flet ($e202 (bvugt (sign_extend[3] ?e21) ?e87))
+(flet ($e203 (= ?e14 ?e22))
+(flet ($e204 (= ?e6 ?e77))
+(flet ($e205 (bvugt ?e84 ?e34))
+(flet ($e206 (= ?e91 (sign_extend[3] ?e26)))
+(flet ($e207 (distinct ?e52 v3))
+(flet ($e208 (= (zero_extend[3] ?e44) ?e40))
+(flet ($e209 (bvule (zero_extend[3] ?e13) ?e40))
+(flet ($e210 (bvult (zero_extend[3] ?e67) ?e59))
+(flet ($e211 (bvslt ?e40 ?e35))
+(flet ($e212 (= ?e4 ?e15))
+(flet ($e213 (bvuge ?e4 (sign_extend[3] ?e57)))
+(flet ($e214 (bvsle ?e39 ?e17))
+(flet ($e215 (bvslt (sign_extend[3] ?e44) ?e11))
+(flet ($e216 (bvult (sign_extend[3] ?e9) ?e55))
+(flet ($e217 (bvugt (sign_extend[3] ?e67) ?e50))
+(flet ($e218 (bvsle ?e4 (sign_extend[3] ?e26)))
+(flet ($e219 (bvule ?e48 ?e50))
+(flet ($e220 (bvsle ?e55 ?e46))
+(flet ($e221 (bvsle v1 ?e73))
+(flet ($e222 (bvule (sign_extend[3] ?e24) ?e66))
+(flet ($e223 (bvsle ?e85 ?e51))
+(flet ($e224 (bvuge (zero_extend[3] ?e78) ?e71))
+(flet ($e225 (bvsge ?e49 ?e23))
+(flet ($e226 (bvslt ?e57 ?e44))
+(flet ($e227 (bvuge ?e77 (sign_extend[3] ?e85)))
+(flet ($e228 (bvslt ?e43 ?e16))
+(flet ($e229 (bvsgt ?e69 ?e10))
+(flet ($e230 (= ?e32 ?e9))
+(flet ($e231 (bvslt ?e16 ?e25))
+(flet ($e232 (bvsge ?e84 v3))
+(flet ($e233 (bvsgt ?e5 ?e52))
+(flet ($e234 (bvsle ?e61 ?e30))
+(flet ($e235 (bvsge (sign_extend[3] ?e26) ?e15))
+(flet ($e236 (distinct (zero_extend[3] ?e67) ?e58))
+(flet ($e237 (bvugt ?e49 (sign_extend[3] ?e76)))
+(flet ($e238 (distinct (zero_extend[3] ?e18) ?e40))
+(flet ($e239 (bvslt ?e34 ?e28))
+(flet ($e240 (bvslt ?e13 ?e51))
+(flet ($e241 (bvugt ?e65 ?e17))
+(flet ($e242 (bvsgt (zero_extend[3] ?e38) ?e87))
+(flet ($e243 (bvsgt (sign_extend[3] ?e67) ?e87))
+(flet ($e244 (bvsge (sign_extend[3] ?e69) ?e65))
+(flet ($e245 (bvslt ?e84 (zero_extend[3] ?e9)))
+(flet ($e246 (bvsge v0 ?e41))
+(flet ($e247 (bvult ?e45 (sign_extend[3] ?e51)))
+(flet ($e248 (= ?e40 v2))
+(flet ($e249 (bvslt v2 (zero_extend[3] ?e86)))
+(flet ($e250 (bvugt ?e23 ?e43))
+(flet ($e251 (bvslt ?e62 ?e32))
+(flet ($e252 (bvult ?e53 ?e17))
+(flet ($e253 (bvsge ?e11 (sign_extend[3] ?e80)))
+(flet ($e254 (bvule ?e81 ?e4))
+(flet ($e255 (bvsle ?e23 (sign_extend[3] ?e22)))
+(flet ($e256 (= ?e72 ?e45))
+(flet ($e257 (bvugt ?e15 ?e23))
+(flet ($e258 (bvslt ?e72 ?e83))
+(flet ($e259 (distinct (sign_extend[3] ?e29) ?e49))
+(flet ($e260 (bvslt ?e36 (zero_extend[3] ?e76)))
+(flet ($e261 (= ?e30 ?e71))
+(flet ($e262 (= (zero_extend[3] ?e56) ?e58))
+(flet ($e263 (distinct ?e70 ?e70))
+(flet ($e264 (bvugt (zero_extend[3] ?e9) ?e33))
+(flet ($e265 (bvslt ?e6 (sign_extend[3] ?e75)))
+(flet ($e266 (bvugt ?e52 (zero_extend[3] ?e75)))
+(flet ($e267 (bvult (sign_extend[3] ?e24) ?e91))
+(flet ($e268 (distinct ?e41 (sign_extend[3] ?e44)))
+(flet ($e269 (bvslt (sign_extend[3] ?e88) ?e20))
+(flet ($e270 (distinct (sign_extend[3] ?e60) ?e91))
+(flet ($e271 (bvsge (sign_extend[3] ?e76) ?e27))
+(flet ($e272 (bvugt ?e11 ?e11))
+(flet ($e273 (bvult (zero_extend[3] ?e24) v2))
+(flet ($e274 (= ?e28 (zero_extend[3] ?e75)))
+(flet ($e275 (bvuge (zero_extend[3] ?e60) v0))
+(flet ($e276 (bvule ?e88 ?e44))
+(flet ($e277 (bvule ?e50 ?e43))
+(flet ($e278 (bvslt (zero_extend[3] ?e12) ?e48))
+(flet ($e279 (bvslt v2 (sign_extend[3] ?e56)))
+(flet ($e280 (= (sign_extend[3] ?e21) ?e27))
+(flet ($e281 (bvule ?e35 ?e25))
+(flet ($e282 (bvult (sign_extend[3] ?e86) v0))
+(flet ($e283 (bvugt ?e61 ?e77))
+(flet ($e284 (bvslt ?e87 (sign_extend[3] ?e13)))
+(flet ($e285 (bvule v2 ?e47))
+(flet ($e286 (bvule (sign_extend[3] ?e22) ?e37))
+(flet ($e287 (= ?e60 ?e76))
+(flet ($e288 (bvslt (zero_extend[3] ?e19) v0))
+(flet ($e289 (bvuge ?e84 ?e73))
+(flet ($e290 (bvult ?e25 v3))
+(flet ($e291 (distinct ?e61 (sign_extend[3] ?e14)))
+(flet ($e292 (bvuge v3 ?e46))
+(flet ($e293 (bvuge (sign_extend[3] ?e78) ?e72))
+(flet ($e294 (bvugt ?e52 (sign_extend[3] ?e62)))
+(flet ($e295 (bvsle ?e61 ?e83))
+(flet ($e296 (= ?e72 (sign_extend[3] ?e32)))
+(flet ($e297 (= (sign_extend[3] ?e9) ?e48))
+(flet ($e298 (distinct ?e35 ?e43))
+(flet ($e299 (distinct (zero_extend[3] ?e56) ?e34))
+(flet ($e300 (bvule ?e35 (zero_extend[3] ?e82)))
+(flet ($e301 (bvsgt (sign_extend[3] ?e18) ?e83))
+(flet ($e302 (bvugt ?e7 ?e39))
+(flet ($e303 
+(and
+ (or $e221 (not $e268) $e300)
+ (or $e95 $e118 $e243)
+ (or (not $e240) (not $e174) (not $e290))
+ (or (not $e191) (not $e185) (not $e161))
+ (or $e94 $e123 $e102)
+ (or $e103 (not $e183) $e244)
+ (or $e200 $e270 $e193)
+ (or (not $e159) (not $e102) $e237)
+ (or (not $e148) $e143 $e223)
+ (or $e275 (not $e242) (not $e100))
+ (or $e243 $e300 $e260)
+ (or (not $e175) $e155 $e254)
+ (or (not $e237) (not $e279) (not $e137))
+ (or $e94 $e287 (not $e116))
+ (or $e194 (not $e133) (not $e93))
+ (or (not $e271) $e187 (not $e179))
+ (or $e288 $e218 (not $e169))
+ (or (not $e106) (not $e254) $e197)
+ (or $e221 $e112 $e291)
+ (or (not $e160) (not $e139) (not $e299))
+ (or (not $e154) (not $e291) (not $e182))
+ (or (not $e93) (not $e265) (not $e184))
+ (or $e256 (not $e179) (not $e185))
+ (or $e100 (not $e123) $e128)
+ (or (not $e212) (not $e131) $e223)
+ (or (not $e284) $e188 $e194)
+ (or (not $e293) (not $e162) $e151)
+ (or (not $e171) $e293 (not $e197))
+ (or $e132 $e176 (not $e302))
+ (or $e212 (not $e196) (not $e213))
+ (or (not $e165) (not $e286) $e251)
+ (or (not $e186) (not $e232) $e190)
+ (or (not $e268) $e237 (not $e125))
+ (or $e146 (not $e153) $e302)
+ (or (not $e135) (not $e119) $e168)
+ (or $e276 (not $e151) $e131)
+ (or $e97 (not $e290) (not $e210))
+ (or (not $e194) $e146 (not $e274))
+ (or $e221 $e173 (not $e272))
+ (or $e261 $e211 (not $e188))
+ (or (not $e300) (not $e218) $e154)
+ (or (not $e164) (not $e166) (not $e151))
+ (or (not $e105) $e288 $e254)
+ (or $e176 $e176 $e236)
+ (or (not $e121) (not $e177) $e211)
+ (or $e292 (not $e267) $e138)
+ (or (not $e281) $e190 $e132)
+ (or (not $e285) (not $e230) $e277)
+ (or $e154 (not $e191) $e192)
+ (or $e131 $e230 (not $e264))
+ (or (not $e260) $e113 $e269)
+ (or $e239 (not $e229) (not $e233))
+ (or (not $e267) $e129 $e129)
+ (or $e198 (not $e205) (not $e186))
+ (or $e137 $e129 (not $e164))
+ (or (not $e205) $e94 $e273)
+ (or (not $e124) $e217 $e192)
+ (or $e211 $e99 $e184)
+ (or (not $e158) $e233 $e125)
+ (or $e217 (not $e134) $e135)
+ (or $e239 (not $e135) (not $e234))
+ (or (not $e104) (not $e153) $e188)
+ (or $e98 $e240 (not $e271))
+ (or (not $e190) $e152 (not $e264))
+ (or $e167 (not $e93) $e234)
+ (or (not $e257) (not $e258) (not $e173))
+ (or $e288 (not $e204) $e110)
+ (or $e277 (not $e262) (not $e259))
+ (or $e100 $e153 $e174)
+ (or (not $e101) $e161 (not $e257))
+ (or (not $e266) $e225 $e161)
+ (or (not $e277) (not $e161) (not $e114))
+ (or (not $e124) $e291 $e271)
+ (or $e115 (not $e232) $e294)
+ (or (not $e117) (not $e115) (not $e216))
+ (or $e241 $e124 $e224)
+ (or $e272 (not $e175) (not $e115))
+ (or $e150 (not $e246) (not $e261))
+ (or (not $e238) (not $e142) $e220)
+ (or $e106 (not $e160) $e194)
+ (or $e207 $e123 (not $e109))
+ (or $e132 (not $e156) (not $e208))
+ (or $e213 (not $e151) $e292)
+ (or (not $e295) $e212 (not $e156))
+ (or $e204 $e282 $e250)
+ (or $e226 $e144 $e148)
+ (or (not $e221) $e142 $e259)
+ (or $e251 $e183 $e189)
+ (or (not $e209) (not $e137) $e149)
+ (or (not $e188) (not $e258) (not $e150))
+ (or (not $e238) (not $e173) (not $e205))
+ (or (not $e221) $e194 $e234)
+ (or $e160 (not $e288) $e184)
+ (or (not $e208) $e206 $e260)
+ (or (not $e205) (not $e145) (not $e239))
+ (or $e202 (not $e236) (not $e289))
+ (or (not $e238) (not $e196) (not $e161))
+ (or (not $e258) $e258 (not $e289))
+ (or (not $e98) $e181 (not $e267))
+ (or $e253 $e155 $e257)
+ (or $e181 $e115 (not $e172))
+ (or $e152 $e229 $e202)
+ (or (not $e200) $e219 (not $e235))
+ (or $e186 $e168 (not $e184))
+ (or $e98 $e118 (not $e200))
+))
+$e303
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz32.delta01.smt b/test/regress/regress0/bv/fuzz32.delta01.smt
new file mode 100644
index 0000000..18fed3a
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz32.delta01.smt
@@ -0,0 +1,23 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v2 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:status sat
+:formula
+(let (?n1 bv1[1])
+(let (?n2 bv0[4])
+(flet ($n3 (bvslt ?n2 v1))
+(let (?n4 bv0[1])
+(let (?n5 (ite $n3 ?n1 ?n4))
+(let (?n6 (sign_extend[3] ?n5))
+(flet ($n7 (bvsgt ?n2 ?n6))
+(let (?n8 (ite $n7 ?n1 ?n4))
+(flet ($n9 (= v2 ?n2))
+(let (?n10 (ite $n9 ?n1 ?n4))
+(flet ($n11 (bvsle ?n4 ?n10))
+(let (?n12 (ite $n11 ?n1 ?n4))
+(let (?n13 (bvand ?n8 ?n12))
+(let (?n14 (bvsub ?n1 ?n13))
+(flet ($n15 (= ?n1 ?n14))
+$n15
+))))))))))))))))
diff --git a/test/regress/regress0/bv/fuzz32.smt b/test/regress/regress0/bv/fuzz32.smt
new file mode 100644
index 0000000..5384eee
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz32.smt
@@ -0,0 +1,1014 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status unsat
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:extrafuns ((v3 BitVec[4]))
+:formula
+(let (?e4 bv12[4])
+(let (?e5 bv8[4])
+(let (?e6 bv9[4])
+(let (?e7 (bvadd ?e4 ?e5))
+(let (?e8 (bvnot ?e5))
+(let (?e9 (ite (= ?e6 ?e7) bv1[1] bv0[1]))
+(let (?e10 (ite (bvslt v0 v1) bv1[1] bv0[1]))
+(let (?e11 (bvsub (zero_extend[3] ?e9) v2))
+(let (?e12 (bvor ?e4 v0))
+(let (?e13 (rotate_left[0] ?e12))
+(let (?e14 (ite (= ?e6 v2) bv1[1] bv0[1]))
+(let (?e15 (ite (= ?e8 ?e5) bv1[1] bv0[1]))
+(let (?e16 (ite (bvuge ?e13 ?e7) bv1[1] bv0[1]))
+(let (?e17 (zero_extend[0] v1))
+(let (?e18 (ite (bvsgt ?e5 (sign_extend[3] ?e10)) bv1[1] bv0[1]))
+(let (?e19 (zero_extend[1] ?e18))
+(let (?e20 (bvadd (zero_extend[3] ?e18) v1))
+(let (?e21 (bvneg ?e17))
+(let (?e22 (repeat[1] ?e12))
+(let (?e23 (sign_extend[1] ?e19))
+(let (?e24 (bvshl ?e12 (zero_extend[3] ?e15)))
+(let (?e25 (bvnand ?e12 ?e12))
+(let (?e26 (rotate_right[3] ?e5))
+(let (?e27 (bvor ?e11 (zero_extend[1] ?e23)))
+(let (?e28 (ite (bvsgt ?e13 ?e17) bv1[1] bv0[1]))
+(let (?e29 (ite (bvult ?e27 ?e25) bv1[1] bv0[1]))
+(let (?e30 (bvor ?e7 ?e6))
+(let (?e31 (ite (= bv1[1] (extract[3:3] ?e20)) v0 ?e6))
+(let (?e32 (ite (bvugt (zero_extend[3] ?e29) v1) bv1[1] bv0[1]))
+(let (?e33 (ite (bvugt (zero_extend[1] ?e23) ?e21) bv1[1] bv0[1]))
+(let (?e34 (zero_extend[0] ?e23))
+(let (?e35 (ite (bvsle (sign_extend[3] ?e29) ?e22) bv1[1] bv0[1]))
+(let (?e36 (zero_extend[0] ?e12))
+(let (?e37 (bvnor (sign_extend[3] ?e29) v2))
+(let (?e38 (ite (bvuge ?e26 ?e27) bv1[1] bv0[1]))
+(let (?e39 (ite (bvuge ?e15 ?e35) bv1[1] bv0[1]))
+(let (?e40 (extract[1:1] ?e24))
+(let (?e41 (bvsub ?e40 ?e10))
+(let (?e42 (bvashr (sign_extend[3] ?e29) ?e21))
+(let (?e43 (bvmul ?e37 (zero_extend[3] ?e38)))
+(let (?e44 (rotate_right[0] ?e42))
+(let (?e45 (ite (= bv1[1] (extract[2:2] ?e37)) (sign_extend[2] ?e14) ?e34))
+(let (?e46 (bvnand ?e17 (zero_extend[1] ?e23)))
+(let (?e47 (bvneg ?e46))
+(let (?e48 (ite (bvule ?e7 ?e4) bv1[1] bv0[1]))
+(let (?e49 (bvashr ?e21 ?e46))
+(let (?e50 (bvxor ?e36 ?e47))
+(let (?e51 (bvnot ?e36))
+(let (?e52 (ite (= bv1[1] (extract[0:0] ?e10)) ?e46 (zero_extend[3] ?e9)))
+(let (?e53 (rotate_left[0] ?e39))
+(let (?e54 (rotate_right[0] ?e7))
+(let (?e55 (bvand ?e30 ?e11))
+(let (?e56 (ite (bvugt ?e6 ?e52) bv1[1] bv0[1]))
+(let (?e57 (ite (bvsle ?e48 ?e14) bv1[1] bv0[1]))
+(let (?e58 (bvcomp ?e51 (sign_extend[1] ?e23)))
+(let (?e59 (bvlshr ?e37 (sign_extend[3] ?e48)))
+(let (?e60 (bvand ?e57 ?e18))
+(let (?e61 (ite (= bv1[1] (extract[0:0] ?e38)) ?e18 ?e10))
+(let (?e62 (ite (bvult ?e26 ?e54) bv1[1] bv0[1]))
+(let (?e63 (bvneg ?e56))
+(let (?e64 (bvnor (zero_extend[3] ?e33) ?e52))
+(let (?e65 (rotate_left[1] v1))
+(let (?e66 (bvshl ?e45 (sign_extend[2] ?e39)))
+(let (?e67 (ite (= ?e65 ?e8) bv1[1] bv0[1]))
+(let (?e68 (bvnot ?e36))
+(let (?e69 (ite (distinct (zero_extend[3] ?e63) ?e30) bv1[1] bv0[1]))
+(let (?e70 (bvnot ?e69))
+(let (?e71 (sign_extend[0] ?e24))
+(let (?e72 (ite (bvuge ?e20 (sign_extend[1] ?e23)) bv1[1] bv0[1]))
+(let (?e73 (ite (bvslt ?e65 v2) bv1[1] bv0[1]))
+(let (?e74 (ite (= bv1[1] (extract[0:0] ?e70)) ?e21 ?e22))
+(let (?e75 (bvashr ?e73 ?e40))
+(let (?e76 (rotate_right[0] ?e58))
+(let (?e77 (ite (bvule ?e30 ?e27) bv1[1] bv0[1]))
+(let (?e78 (bvnot ?e4))
+(let (?e79 (rotate_left[0] ?e60))
+(let (?e80 (sign_extend[3] ?e32))
+(let (?e81 (bvashr ?e32 ?e53))
+(let (?e82 (ite (bvuge ?e27 ?e25) bv1[1] bv0[1]))
+(let (?e83 (rotate_left[0] ?e61))
+(let (?e84 (bvnand (zero_extend[3] ?e82) v0))
+(let (?e85 (bvnot ?e8))
+(let (?e86 (ite (bvule ?e85 (zero_extend[3] ?e32)) bv1[1] bv0[1]))
+(let (?e87 (bvxnor ?e26 (sign_extend[3] ?e35)))
+(let (?e88 (bvashr ?e16 ?e53))
+(let (?e89 (bvsub ?e71 v0))
+(let (?e90 (repeat[4] ?e41))
+(let (?e91 (ite (bvule ?e16 ?e60) bv1[1] bv0[1]))
+(let (?e92 (bvashr ?e42 ?e6))
+(let (?e93 (bvsub ?e53 ?e79))
+(let (?e94 (bvneg ?e54))
+(let (?e95 (bvand ?e75 ?e38))
+(let (?e96 (ite (bvsgt ?e34 (zero_extend[2] ?e69)) bv1[1] bv0[1]))
+(let (?e97 (bvnor ?e63 ?e32))
+(let (?e98 (repeat[3] ?e72))
+(let (?e99 (bvneg ?e40))
+(let (?e100 (bvnor ?e27 ?e84))
+(let (?e101 (ite (bvsgt ?e34 (sign_extend[2] ?e10)) bv1[1] bv0[1]))
+(let (?e102 (bvashr ?e93 ?e101))
+(let (?e103 (bvlshr ?e66 (sign_extend[2] ?e61)))
+(let (?e104 (ite (bvsge ?e87 (sign_extend[3] ?e32)) bv1[1] bv0[1]))
+(let (?e105 (rotate_left[0] ?e91))
+(let (?e106 (repeat[1] ?e21))
+(let (?e107 (bvand ?e30 ?e90))
+(let (?e108 (bvshl ?e71 ?e68))
+(let (?e109 (bvlshr (sign_extend[3] ?e14) ?e68))
+(let (?e110 (bvnot ?e48))
+(let (?e111 (ite (bvuge ?e101 ?e99) bv1[1] bv0[1]))
+(let (?e112 (ite (distinct ?e8 ?e51) bv1[1] bv0[1]))
+(let (?e113 (bvxnor ?e79 ?e91))
+(let (?e114 (ite (= bv1[1] (extract[0:0] ?e14)) (zero_extend[3] ?e112) v1))
+(let (?e115 (bvxnor ?e44 ?e74))
+(let (?e116 (bvor ?e5 (zero_extend[1] ?e103)))
+(let (?e117 (rotate_right[0] ?e107))
+(let (?e118 (ite (bvsgt ?e97 ?e57) bv1[1] bv0[1]))
+(let (?e119 (ite (bvsle ?e27 ?e50) bv1[1] bv0[1]))
+(let (?e120 (ite (= ?e115 (sign_extend[3] ?e18)) bv1[1] bv0[1]))
+(let (?e121 (bvor ?e99 ?e60))
+(let (?e122 (ite (bvslt (sign_extend[3] ?e112) ?e8) bv1[1] bv0[1]))
+(let (?e123 (ite (bvsgt ?e71 ?e71) bv1[1] bv0[1]))
+(let (?e124 (rotate_left[0] ?e118))
+(let (?e125 (bvmul v0 (sign_extend[3] ?e118)))
+(let (?e126 (zero_extend[0] ?e71))
+(let (?e127 (ite (bvsle (sign_extend[2] ?e19) ?e84) bv1[1] bv0[1]))
+(let (?e128 (ite (= (zero_extend[2] ?e40) ?e98) bv1[1] bv0[1]))
+(let (?e129 (sign_extend[0] ?e38))
+(let (?e130 (sign_extend[0] ?e17))
+(let (?e131 (bvnot ?e9))
+(let (?e132 (sign_extend[0] ?e96))
+(let (?e133 (bvnor ?e80 ?e5))
+(let (?e134 (bvashr v1 (sign_extend[1] ?e23)))
+(let (?e135 (bvshl ?e44 ?e6))
+(let (?e136 (bvxor ?e58 ?e76))
+(let (?e137 (zero_extend[0] ?e93))
+(let (?e138 (repeat[2] ?e39))
+(let (?e139 (rotate_left[0] ?e105))
+(let (?e140 (ite (bvslt (zero_extend[1] ?e98) ?e17) bv1[1] bv0[1]))
+(let (?e141 (bvand ?e122 ?e67))
+(let (?e142 (bvmul ?e48 ?e28))
+(let (?e143 (extract[2:2] ?e130))
+(let (?e144 (bvcomp ?e134 ?e13))
+(let (?e145 (bvxnor ?e34 ?e98))
+(let (?e146 (ite (bvuge ?e11 ?e6) bv1[1] bv0[1]))
+(let (?e147 (bvand v2 ?e4))
+(let (?e148 (bvnot ?e52))
+(let (?e149 (ite (bvuge ?e93 ?e62) bv1[1] bv0[1]))
+(let (?e150 (ite (bvule ?e7 (zero_extend[3] ?e143)) bv1[1] bv0[1]))
+(let (?e151 (extract[0:0] ?e86))
+(let (?e152 (bvashr ?e127 ?e29))
+(let (?e153 (ite (bvugt ?e136 ?e91) bv1[1] bv0[1]))
+(let (?e154 (bvsub ?e74 ?e55))
+(let (?e155 (ite (= bv1[1] (extract[2:2] ?e23)) ?e68 ?e100))
+(let (?e156 (ite (bvslt ?e43 ?e24) bv1[1] bv0[1]))
+(let (?e157 (ite (bvsgt (sign_extend[3] ?e112) ?e126) bv1[1] bv0[1]))
+(let (?e158 (rotate_right[3] ?e31))
+(let (?e159 (extract[0:0] ?e148))
+(let (?e160 (ite (bvsgt ?e46 (sign_extend[2] ?e19)) bv1[1] bv0[1]))
+(let (?e161 (bvlshr (sign_extend[3] ?e79) ?e20))
+(let (?e162 (ite (bvuge (sign_extend[1] ?e145) v3) bv1[1] bv0[1]))
+(flet ($e163 (bvult ?e75 ?e16))
+(flet ($e164 (bvuge ?e37 (zero_extend[3] ?e123)))
+(flet ($e165 (bvuge (zero_extend[3] ?e16) ?e44))
+(flet ($e166 (bvsge ?e81 ?e16))
+(flet ($e167 (bvsge ?e9 ?e83))
+(flet ($e168 (bvule ?e115 (sign_extend[3] ?e140)))
+(flet ($e169 (distinct ?e24 (sign_extend[3] ?e18)))
+(flet ($e170 (bvsgt ?e62 ?e29))
+(flet ($e171 (bvult ?e84 (zero_extend[3] ?e105)))
+(flet ($e172 (bvult ?e50 (zero_extend[3] ?e112)))
+(flet ($e173 (bvsge ?e19 (zero_extend[1] ?e32)))
+(flet ($e174 (distinct ?e133 ?e92))
+(flet ($e175 (distinct (zero_extend[3] ?e157) ?e89))
+(flet ($e176 (bvsge ?e52 v2))
+(flet ($e177 (bvult ?e146 ?e77))
+(flet ($e178 (bvugt ?e64 (sign_extend[3] ?e79)))
+(flet ($e179 (bvult (zero_extend[3] ?e16) ?e116))
+(flet ($e180 (bvsle ?e74 ?e65))
+(flet ($e181 (bvsle ?e133 (sign_extend[1] ?e23)))
+(flet ($e182 (distinct ?e20 ?e126))
+(flet ($e183 (= ?e160 ?e96))
+(flet ($e184 (bvsge ?e101 ?e118))
+(flet ($e185 (bvule ?e129 ?e83))
+(flet ($e186 (distinct ?e109 ?e27))
+(flet ($e187 (bvule (zero_extend[1] ?e93) ?e138))
+(flet ($e188 (bvsgt ?e31 (zero_extend[3] ?e33)))
+(flet ($e189 (bvsge ?e44 (sign_extend[3] ?e61)))
+(flet ($e190 (bvsge ?e72 ?e39))
+(flet ($e191 (bvult ?e20 (zero_extend[3] ?e101)))
+(flet ($e192 (bvsgt ?e106 ?e51))
+(flet ($e193 (bvuge ?e116 (zero_extend[3] ?e131)))
+(flet ($e194 (bvsle (zero_extend[3] ?e153) ?e154))
+(flet ($e195 (bvule ?e106 ?e126))
+(flet ($e196 (bvsgt (sign_extend[3] ?e111) ?e130))
+(flet ($e197 (bvsge ?e92 (zero_extend[3] ?e48)))
+(flet ($e198 (= ?e7 ?e90))
+(flet ($e199 (bvsge ?e49 ?e158))
+(flet ($e200 (bvugt ?e161 ?e49))
+(flet ($e201 (bvule ?e74 (sign_extend[3] ?e101)))
+(flet ($e202 (bvule ?e145 (sign_extend[2] ?e61)))
+(flet ($e203 (bvsgt (sign_extend[3] ?e110) ?e117))
+(flet ($e204 (bvsge ?e106 ?e64))
+(flet ($e205 (bvuge ?e40 ?e139))
+(flet ($e206 (bvult ?e117 (zero_extend[3] ?e18)))
+(flet ($e207 (bvslt ?e49 ?e92))
+(flet ($e208 (bvsge (zero_extend[3] ?e118) ?e154))
+(flet ($e209 (bvult ?e92 ?e125))
+(flet ($e210 (= ?e125 (sign_extend[3] ?e97)))
+(flet ($e211 (bvsge ?e78 (zero_extend[3] ?e10)))
+(flet ($e212 (bvugt ?e116 ?e71))
+(flet ($e213 (= ?e130 ?e87))
+(flet ($e214 (bvuge ?e48 ?e129))
+(flet ($e215 (bvuge ?e44 v1))
+(flet ($e216 (bvsgt ?e134 (zero_extend[3] ?e105)))
+(flet ($e217 (bvuge ?e15 ?e131))
+(flet ($e218 (= ?e18 ?e18))
+(flet ($e219 (bvuge ?e134 (sign_extend[3] ?e153)))
+(flet ($e220 (bvult (zero_extend[3] ?e33) ?e65))
+(flet ($e221 (bvuge ?e25 (sign_extend[3] ?e60)))
+(flet ($e222 (bvule ?e77 ?e140))
+(flet ($e223 (bvuge (zero_extend[3] ?e120) ?e126))
+(flet ($e224 (bvsle ?e21 (sign_extend[3] ?e96)))
+(flet ($e225 (bvugt (sign_extend[3] ?e76) v3))
+(flet ($e226 (bvuge ?e128 ?e119))
+(flet ($e227 (bvslt (sign_extend[2] ?e58) ?e103))
+(flet ($e228 (bvugt (sign_extend[3] ?e162) ?e54))
+(flet ($e229 (bvugt (sign_extend[2] ?e19) ?e55))
+(flet ($e230 (bvugt ?e114 ?e13))
+(flet ($e231 (bvule (sign_extend[3] ?e88) ?e7))
+(flet ($e232 (bvuge ?e107 (sign_extend[3] ?e79)))
+(flet ($e233 (bvsle ?e74 (sign_extend[3] ?e96)))
+(flet ($e234 (bvugt ?e51 ?e134))
+(flet ($e235 (bvsle (sign_extend[3] ?e67) ?e24))
+(flet ($e236 (bvuge ?e96 ?e162))
+(flet ($e237 (bvsge ?e148 ?e158))
+(flet ($e238 (distinct ?e120 ?e88))
+(flet ($e239 (= (zero_extend[3] ?e118) ?e106))
+(flet ($e240 (bvsge ?e91 ?e101))
+(flet ($e241 (bvsgt (sign_extend[3] ?e72) ?e52))
+(flet ($e242 (bvsle ?e80 (zero_extend[3] ?e73)))
+(flet ($e243 (bvugt (sign_extend[3] ?e18) ?e133))
+(flet ($e244 (bvsge ?e83 ?e139))
+(flet ($e245 (bvult (sign_extend[3] ?e105) ?e90))
+(flet ($e246 (bvult ?e30 ?e87))
+(flet ($e247 (bvugt ?e6 (zero_extend[1] ?e23)))
+(flet ($e248 (bvslt ?e137 ?e112))
+(flet ($e249 (bvsle ?e46 ?e59))
+(flet ($e250 (bvult (sign_extend[3] ?e35) ?e30))
+(flet ($e251 (bvsgt ?e4 (zero_extend[3] ?e119)))
+(flet ($e252 (bvugt ?e7 (sign_extend[3] ?e144)))
+(flet ($e253 (bvule (zero_extend[3] ?e70) ?e89))
+(flet ($e254 (bvult v2 ?e107))
+(flet ($e255 (= (zero_extend[3] ?e113) ?e107))
+(flet ($e256 (bvsle (zero_extend[1] ?e66) ?e68))
+(flet ($e257 (bvule ?e69 ?e139))
+(flet ($e258 (bvsle (sign_extend[3] ?e142) ?e49))
+(flet ($e259 (bvuge (sign_extend[3] ?e113) ?e55))
+(flet ($e260 (distinct ?e55 (zero_extend[3] ?e162)))
+(flet ($e261 (bvugt ?e40 ?e160))
+(flet ($e262 (bvult ?e99 ?e61))
+(flet ($e263 (bvuge ?e56 ?e86))
+(flet ($e264 (bvsgt ?e94 (zero_extend[3] ?e33)))
+(flet ($e265 (bvsge ?e105 ?e29))
+(flet ($e266 (bvslt ?e77 ?e150))
+(flet ($e267 (bvule (sign_extend[3] ?e129) ?e116))
+(flet ($e268 (bvult (zero_extend[3] ?e123) ?e107))
+(flet ($e269 (bvult ?e118 ?e150))
+(flet ($e270 (bvsgt ?e106 ?e26))
+(flet ($e271 (distinct ?e161 ?e54))
+(flet ($e272 (bvsge ?e156 ?e40))
+(flet ($e273 (bvugt ?e36 ?e92))
+(flet ($e274 (bvsle ?e5 ?e24))
+(flet ($e275 (bvslt ?e112 ?e77))
+(flet ($e276 (bvule ?e89 (sign_extend[3] ?e157)))
+(flet ($e277 (bvsgt ?e71 ?e65))
+(flet ($e278 (bvugt ?e130 ?e80))
+(flet ($e279 (bvult ?e158 ?e50))
+(flet ($e280 (bvuge ?e12 ?e158))
+(flet ($e281 (bvugt ?e39 ?e97))
+(flet ($e282 (bvslt ?e94 ?e130))
+(flet ($e283 (bvuge ?e11 (zero_extend[1] ?e66)))
+(flet ($e284 (bvsle (zero_extend[3] ?e162) ?e11))
+(flet ($e285 (bvult ?e79 ?e122))
+(flet ($e286 (bvugt ?e92 (zero_extend[3] ?e128)))
+(flet ($e287 (bvsle ?e17 ?e147))
+(flet ($e288 (distinct (zero_extend[3] ?e129) ?e12))
+(flet ($e289 (= ?e56 ?e124))
+(flet ($e290 (bvsge ?e71 (sign_extend[1] ?e103)))
+(flet ($e291 (bvsgt (sign_extend[3] ?e79) ?e114))
+(flet ($e292 (bvsle ?e108 ?e46))
+(flet ($e293 (distinct ?e49 (sign_extend[3] ?e29)))
+(flet ($e294 (bvsge (sign_extend[3] ?e10) ?e92))
+(flet ($e295 (= ?e56 ?e150))
+(flet ($e296 (bvsle ?e52 (sign_extend[3] ?e60)))
+(flet ($e297 (= (zero_extend[3] ?e137) ?e59))
+(flet ($e298 (bvsgt ?e143 ?e152))
+(flet ($e299 (bvsle (sign_extend[3] ?e101) ?e55))
+(flet ($e300 (bvule (zero_extend[3] ?e38) ?e130))
+(flet ($e301 (bvugt (zero_extend[3] ?e29) ?e108))
+(flet ($e302 (bvult (zero_extend[3] ?e18) ?e89))
+(flet ($e303 (bvsgt (sign_extend[3] ?e123) ?e109))
+(flet ($e304 (bvult ?e139 ?e104))
+(flet ($e305 (bvule (zero_extend[3] ?e143) ?e78))
+(flet ($e306 (bvule (sign_extend[3] ?e110) ?e71))
+(flet ($e307 (bvsle ?e134 (zero_extend[3] ?e123)))
+(flet ($e308 (bvsle (zero_extend[2] ?e138) ?e47))
+(flet ($e309 (bvule ?e87 (sign_extend[3] ?e69)))
+(flet ($e310 (bvsle ?e66 (sign_extend[2] ?e96)))
+(flet ($e311 (bvuge ?e89 (sign_extend[3] ?e9)))
+(flet ($e312 (bvult ?e28 ?e77))
+(flet ($e313 (bvsle ?e41 ?e91))
+(flet ($e314 (distinct (zero_extend[1] ?e145) ?e51))
+(flet ($e315 (bvsle ?e23 (sign_extend[2] ?e88)))
+(flet ($e316 (bvuge (zero_extend[3] ?e112) ?e20))
+(flet ($e317 (distinct ?e90 (sign_extend[3] ?e60)))
+(flet ($e318 (distinct (sign_extend[3] ?e151) ?e54))
+(flet ($e319 (bvule ?e97 ?e137))
+(flet ($e320 (bvult (zero_extend[3] ?e140) ?e154))
+(flet ($e321 (bvsle (sign_extend[3] ?e60) ?e84))
+(flet ($e322 (= (zero_extend[3] ?e79) ?e94))
+(flet ($e323 (bvult (zero_extend[2] ?e96) ?e103))
+(flet ($e324 (bvslt ?e41 ?e91))
+(flet ($e325 (bvslt ?e153 ?e62))
+(flet ($e326 (bvugt ?e132 ?e124))
+(flet ($e327 (bvuge ?e103 (sign_extend[2] ?e128)))
+(flet ($e328 (bvuge ?e138 (sign_extend[1] ?e81)))
+(flet ($e329 (bvsgt ?e40 ?e58))
+(flet ($e330 (bvsgt ?e40 ?e99))
+(flet ($e331 (bvsgt (sign_extend[1] ?e34) ?e8))
+(flet ($e332 (bvult ?e36 (zero_extend[3] ?e33)))
+(flet ($e333 (bvult (zero_extend[3] ?e69) ?e100))
+(flet ($e334 (bvsle (zero_extend[3] ?e81) ?e6))
+(flet ($e335 (bvsge (sign_extend[3] ?e132) v0))
+(flet ($e336 (distinct v1 (sign_extend[3] ?e121)))
+(flet ($e337 (bvsgt (sign_extend[3] ?e136) ?e89))
+(flet ($e338 (bvule ?e107 ?e126))
+(flet ($e339 (bvule ?e144 ?e88))
+(flet ($e340 (bvuge ?e46 (zero_extend[3] ?e156)))
+(flet ($e341 (bvult ?e43 (zero_extend[3] ?e123)))
+(flet ($e342 (bvslt ?e42 ?e135))
+(flet ($e343 (bvuge ?e116 (sign_extend[3] ?e75)))
+(flet ($e344 (bvule ?e49 (sign_extend[3] ?e119)))
+(flet ($e345 (bvule ?e44 (zero_extend[3] ?e110)))
+(flet ($e346 (bvsge ?e46 (sign_extend[3] ?e137)))
+(flet ($e347 (distinct (zero_extend[3] ?e153) ?e12))
+(flet ($e348 (bvslt (zero_extend[3] ?e156) ?e24))
+(flet ($e349 (bvsle ?e81 ?e159))
+(flet ($e350 (bvult ?e128 ?e104))
+(flet ($e351 (bvsle ?e42 ?e87))
+(flet ($e352 (bvsle ?e160 ?e151))
+(flet ($e353 (bvuge ?e22 (sign_extend[3] ?e120)))
+(flet ($e354 (bvsle ?e111 ?e14))
+(flet ($e355 (bvule ?e62 ?e118))
+(flet ($e356 (distinct ?e109 (sign_extend[3] ?e146)))
+(flet ($e357 (= ?e65 ?e46))
+(flet ($e358 (bvult ?e31 (sign_extend[3] ?e113)))
+(flet ($e359 (bvsge ?e105 ?e16))
+(flet ($e360 (bvsle v0 (sign_extend[3] ?e111)))
+(flet ($e361 (bvugt (zero_extend[3] ?e128) ?e27))
+(flet ($e362 (bvult ?e148 (zero_extend[3] ?e95)))
+(flet ($e363 (bvuge ?e106 (sign_extend[1] ?e23)))
+(flet ($e364 (bvugt ?e149 ?e112))
+(flet ($e365 (bvsle ?e65 (zero_extend[3] ?e15)))
+(flet ($e366 (bvult ?e13 (sign_extend[3] ?e57)))
+(flet ($e367 (bvsge (sign_extend[3] ?e104) ?e74))
+(flet ($e368 (bvsgt ?e41 ?e151))
+(flet ($e369 (bvuge (zero_extend[3] ?e121) ?e25))
+(flet ($e370 (bvsgt (sign_extend[3] ?e157) ?e90))
+(flet ($e371 (bvsle (sign_extend[1] ?e145) ?e125))
+(flet ($e372 (bvult ?e133 (sign_extend[3] ?e129)))
+(flet ($e373 (bvult ?e70 ?e63))
+(flet ($e374 (bvsgt ?e39 ?e132))
+(flet ($e375 (bvuge (zero_extend[3] ?e95) ?e47))
+(flet ($e376 (distinct ?e108 (sign_extend[3] ?e122)))
+(flet ($e377 (bvsge (zero_extend[3] ?e18) ?e52))
+(flet ($e378 (bvsgt ?e68 (sign_extend[3] ?e128)))
+(flet ($e379 (bvult (zero_extend[3] ?e112) ?e22))
+(flet ($e380 (bvsle (sign_extend[3] ?e118) ?e31))
+(flet ($e381 (= ?e87 (sign_extend[3] ?e143)))
+(flet ($e382 (bvslt ?e107 ?e92))
+(flet ($e383 (bvsgt ?e49 ?e11))
+(flet ($e384 (bvugt (sign_extend[3] ?e53) ?e20))
+(flet ($e385 (bvuge ?e139 ?e122))
+(flet ($e386 (bvsgt ?e92 (sign_extend[3] ?e91)))
+(flet ($e387 (bvsle (zero_extend[3] ?e112) ?e155))
+(flet ($e388 (bvule (sign_extend[3] ?e156) ?e42))
+(flet ($e389 (bvsgt ?e14 ?e110))
+(flet ($e390 (bvugt (sign_extend[3] ?e120) ?e85))
+(flet ($e391 (= (sign_extend[3] ?e72) ?e7))
+(flet ($e392 (bvule (zero_extend[3] ?e111) ?e46))
+(flet ($e393 (bvsge ?e54 ?e13))
+(flet ($e394 (bvule ?e37 ?e155))
+(flet ($e395 (bvuge (sign_extend[1] ?e103) ?e4))
+(flet ($e396 (bvult ?e120 ?e35))
+(flet ($e397 (bvult ?e51 (sign_extend[3] ?e143)))
+(flet ($e398 (bvugt ?e64 ?e47))
+(flet ($e399 (bvsgt ?e78 ?e100))
+(flet ($e400 (distinct (sign_extend[3] ?e77) ?e11))
+(flet ($e401 (distinct ?e144 ?e69))
+(flet ($e402 (bvsle ?e126 ?e24))
+(flet ($e403 (bvult ?e44 ?e80))
+(flet ($e404 (bvsle (sign_extend[3] ?e105) ?e17))
+(flet ($e405 (bvslt (sign_extend[3] ?e79) ?e74))
+(flet ($e406 (bvult ?e113 ?e149))
+(flet ($e407 (bvslt ?e141 ?e29))
+(flet ($e408 (bvuge (zero_extend[3] ?e48) ?e94))
+(flet ($e409 (bvule (sign_extend[3] ?e88) ?e50))
+(flet ($e410 (bvuge ?e54 (sign_extend[3] ?e32)))
+(flet ($e411 (bvsgt ?e141 ?e61))
+(flet ($e412 (= ?e78 ?e85))
+(flet ($e413 (bvsge ?e78 ?e44))
+(flet ($e414 (bvslt ?e87 ?e22))
+(flet ($e415 (bvult ?e74 (zero_extend[3] ?e56)))
+(flet ($e416 (bvule (zero_extend[3] ?e152) ?e36))
+(flet ($e417 (bvuge ?e56 ?e153))
+(flet ($e418 (bvsgt (zero_extend[3] ?e40) ?e135))
+(flet ($e419 (bvule ?e37 (zero_extend[3] ?e162)))
+(flet ($e420 (bvsge ?e41 ?e123))
+(flet ($e421 (bvsle (sign_extend[3] ?e124) ?e108))
+(flet ($e422 (= ?e65 (sign_extend[3] ?e61)))
+(flet ($e423 (bvslt ?e49 (zero_extend[3] ?e70)))
+(flet ($e424 (bvslt ?e87 ?e117))
+(flet ($e425 (bvule ?e125 ?e36))
+(flet ($e426 (bvslt ?e8 ?e46))
+(flet ($e427 (bvult ?e53 ?e162))
+(flet ($e428 (bvslt ?e21 ?e130))
+(flet ($e429 (bvugt ?e15 ?e63))
+(flet ($e430 (bvsgt (sign_extend[2] ?e162) ?e98))
+(flet ($e431 (bvult ?e47 (zero_extend[3] ?e39)))
+(flet ($e432 (bvult ?e123 ?e29))
+(flet ($e433 (distinct ?e85 (zero_extend[3] ?e29)))
+(flet ($e434 (= ?e66 (zero_extend[2] ?e83)))
+(flet ($e435 (bvsle ?e54 ?e114))
+(flet ($e436 (bvsle ?e83 ?e57))
+(flet ($e437 (distinct (sign_extend[3] ?e99) ?e155))
+(flet ($e438 (bvsgt ?e17 ?e107))
+(flet ($e439 (= ?e87 ?e115))
+(flet ($e440 (bvsle ?e134 (zero_extend[3] ?e132)))
+(flet ($e441 (bvslt (zero_extend[3] ?e143) ?e30))
+(flet ($e442 (bvsle ?e28 ?e129))
+(flet ($e443 (bvsgt ?e136 ?e149))
+(flet ($e444 (bvule ?e111 ?e141))
+(flet ($e445 (bvsgt ?e84 ?e11))
+(flet ($e446 (bvsge ?e94 (zero_extend[3] ?e72)))
+(flet ($e447 (bvsle ?e7 ?e24))
+(flet ($e448 (bvugt ?e88 ?e83))
+(flet ($e449 (bvult ?e76 ?e86))
+(flet ($e450 (bvsle ?e63 ?e160))
+(flet ($e451 (bvule (zero_extend[1] ?e56) ?e19))
+(flet ($e452 (bvule ?e100 ?e31))
+(flet ($e453 (bvsgt (zero_extend[1] ?e23) ?e68))
+(flet ($e454 (distinct (zero_extend[2] ?e138) ?e4))
+(flet ($e455 (bvule ?e115 (sign_extend[3] ?e119)))
+(flet ($e456 (bvslt (sign_extend[3] ?e105) ?e17))
+(flet ($e457 (bvule (sign_extend[3] ?e153) ?e55))
+(flet ($e458 (bvsge ?e78 (sign_extend[3] ?e10)))
+(flet ($e459 (bvult ?e37 (zero_extend[3] ?e33)))
+(flet ($e460 (bvsge (zero_extend[3] ?e83) ?e68))
+(flet ($e461 (bvsle ?e43 (sign_extend[3] ?e69)))
+(flet ($e462 (bvslt ?e44 ?e37))
+(flet ($e463 (= ?e21 (sign_extend[3] ?e14)))
+(flet ($e464 (bvslt ?e15 ?e97))
+(flet ($e465 (bvsge (sign_extend[3] ?e127) ?e42))
+(flet ($e466 (bvslt ?e160 ?e121))
+(flet ($e467 (bvsle ?e118 ?e82))
+(flet ($e468 (bvugt v1 (zero_extend[3] ?e110)))
+(flet ($e469 (bvule ?e115 (zero_extend[3] ?e56)))
+(flet ($e470 (bvule ?e102 ?e111))
+(flet ($e471 (bvugt (sign_extend[3] ?e29) v2))
+(flet ($e472 (bvuge ?e126 (sign_extend[3] ?e69)))
+(flet ($e473 (= ?e13 (zero_extend[3] ?e122)))
+(flet ($e474 (bvsgt ?e81 ?e143))
+(flet ($e475 (bvuge ?e141 ?e104))
+(flet ($e476 (bvslt ?e70 ?e40))
+(flet ($e477 (bvugt ?e16 ?e124))
+(flet ($e478 (bvslt ?e17 (zero_extend[3] ?e132)))
+(flet ($e479 (bvult (sign_extend[3] ?e149) ?e36))
+(flet ($e480 (bvsge (sign_extend[3] ?e62) ?e92))
+(flet ($e481 (distinct ?e13 (zero_extend[3] ?e60)))
+(flet ($e482 (distinct ?e109 (zero_extend[3] ?e102)))
+(flet ($e483 (bvuge ?e37 (sign_extend[3] ?e35)))
+(flet ($e484 (bvuge ?e125 (sign_extend[3] ?e140)))
+(flet ($e485 (bvuge ?e122 ?e73))
+(flet ($e486 (distinct ?e48 ?e141))
+(flet ($e487 (= ?e124 ?e146))
+(flet ($e488 (= (zero_extend[3] ?e63) ?e37))
+(flet ($e489 (bvslt (sign_extend[3] ?e151) ?e59))
+(flet ($e490 (distinct (zero_extend[1] ?e144) ?e138))
+(flet ($e491 (bvsgt ?e116 ?e59))
+(flet ($e492 (bvuge ?e66 (zero_extend[2] ?e48)))
+(flet ($e493 (bvsge ?e43 ?e54))
+(flet ($e494 (= ?e75 ?e142))
+(flet ($e495 (bvuge ?e52 (sign_extend[3] ?e160)))
+(flet ($e496 (bvule ?e55 (zero_extend[3] ?e157)))
+(flet ($e497 (distinct ?e154 (sign_extend[3] ?e63)))
+(flet ($e498 (bvsle ?e26 (zero_extend[3] ?e15)))
+(flet ($e499 (bvsge ?e99 ?e121))
+(flet ($e500 (bvslt ?e72 ?e91))
+(flet ($e501 (bvuge (sign_extend[2] ?e138) ?e55))
+(flet ($e502 (bvsle ?e142 ?e121))
+(flet ($e503 (bvule ?e102 ?e29))
+(flet ($e504 (= (zero_extend[2] ?e152) ?e66))
+(flet ($e505 (bvsgt ?e26 (sign_extend[1] ?e66)))
+(flet ($e506 (= ?e26 ?e114))
+(flet ($e507 (bvslt ?e158 (zero_extend[2] ?e19)))
+(flet ($e508 (= ?e107 ?e107))
+(flet ($e509 (bvsle (zero_extend[1] ?e66) ?e20))
+(flet ($e510 (bvult ?e64 (sign_extend[3] ?e159)))
+(flet ($e511 (bvsle ?e11 ?e114))
+(flet ($e512 (bvslt ?e68 (zero_extend[3] ?e88)))
+(flet ($e513 (bvuge ?e73 ?e132))
+(flet ($e514 (bvsgt (zero_extend[3] ?e160) ?e89))
+(flet ($e515 (bvsge ?e16 ?e113))
+(flet ($e516 (bvult (zero_extend[3] ?e120) ?e30))
+(flet ($e517 (bvuge ?e69 ?e38))
+(flet ($e518 (distinct ?e92 (zero_extend[3] ?e142)))
+(flet ($e519 (bvsge (sign_extend[3] ?e162) ?e8))
+(flet ($e520 (= (sign_extend[3] ?e16) ?e22))
+(flet ($e521 (bvuge ?e52 ?e51))
+(flet ($e522 (bvule ?e158 (sign_extend[2] ?e138)))
+(flet ($e523 (distinct ?e112 ?e141))
+(flet ($e524 (distinct ?e12 ?e52))
+(flet ($e525 (bvslt ?e43 (sign_extend[3] ?e29)))
+(flet ($e526 (bvsge ?e139 ?e139))
+(flet ($e527 (bvuge ?e150 ?e79))
+(flet ($e528 (bvsle ?e115 (sign_extend[1] ?e66)))
+(flet ($e529 (bvsge ?e78 (zero_extend[3] ?e123)))
+(flet ($e530 (bvsge ?e84 ?e158))
+(flet ($e531 (distinct ?e109 ?e135))
+(flet ($e532 (bvult ?e73 ?e9))
+(flet ($e533 (bvult (zero_extend[3] ?e124) ?e94))
+(flet ($e534 (bvsle (zero_extend[3] ?e104) ?e6))
+(flet ($e535 (bvsgt ?e19 (zero_extend[1] ?e88)))
+(flet ($e536 (= (sign_extend[3] ?e149) ?e106))
+(flet ($e537 (= (zero_extend[3] ?e40) ?e6))
+(flet ($e538 (= ?e142 ?e151))
+(flet ($e539 (bvuge ?e26 ?e161))
+(flet ($e540 (bvule v0 (sign_extend[3] ?e131)))
+(flet ($e541 (bvsle ?e135 (zero_extend[3] ?e99)))
+(flet ($e542 (bvult ?e133 ?e11))
+(flet ($e543 (bvult (sign_extend[3] ?e152) v1))
+(flet ($e544 (bvsge ?e48 ?e57))
+(flet ($e545 (bvsge ?e104 ?e105))
+(flet ($e546 (= ?e7 ?e42))
+(flet ($e547 (bvsgt (zero_extend[3] ?e10) ?e49))
+(flet ($e548 (bvuge ?e52 ?e92))
+(flet ($e549 (bvsgt (sign_extend[2] ?e19) ?e12))
+(flet ($e550 (bvslt ?e22 ?e54))
+(flet ($e551 (bvule ?e93 ?e38))
+(flet ($e552 (bvsgt (sign_extend[2] ?e19) ?e22))
+(flet ($e553 (bvule ?e74 ?e108))
+(flet ($e554 (bvuge ?e88 ?e132))
+(flet ($e555 (bvuge (zero_extend[3] ?e32) ?e133))
+(flet ($e556 (bvuge (sign_extend[2] ?e67) ?e23))
+(flet ($e557 (= ?e142 ?e111))
+(flet ($e558 (bvule ?e133 (sign_extend[3] ?e93)))
+(flet ($e559 (= ?e13 ?e5))
+(flet ($e560 (bvsge ?e5 (sign_extend[3] ?e112)))
+(flet ($e561 (bvsgt ?e62 ?e14))
+(flet ($e562 (bvuge ?e92 ?e31))
+(flet ($e563 (bvsgt ?e159 ?e35))
+(flet ($e564 (bvsle ?e43 (sign_extend[3] ?e123)))
+(flet ($e565 (bvsge ?e29 ?e9))
+(flet ($e566 (bvsge v2 (zero_extend[1] ?e98)))
+(flet ($e567 (distinct ?e49 ?e8))
+(flet ($e568 (bvsle (sign_extend[1] ?e160) ?e138))
+(flet ($e569 (bvult ?e64 (sign_extend[3] ?e132)))
+(flet ($e570 (bvugt (sign_extend[3] ?e60) ?e130))
+(flet ($e571 (distinct ?e10 ?e75))
+(flet ($e572 (bvult ?e133 (zero_extend[3] ?e128)))
+(flet ($e573 (bvuge (sign_extend[3] ?e62) ?e107))
+(flet ($e574 (bvsge ?e17 ?e148))
+(flet ($e575 (bvuge ?e21 (zero_extend[3] ?e77)))
+(flet ($e576 (bvult ?e84 (zero_extend[3] ?e73)))
+(flet ($e577 (distinct ?e11 ?e133))
+(flet ($e578 (bvsgt (sign_extend[1] ?e66) ?e89))
+(flet ($e579 (bvuge ?e36 (zero_extend[3] ?e60)))
+(flet ($e580 (bvsgt ?e58 ?e79))
+(flet ($e581 (bvult ?e46 ?e89))
+(flet ($e582 (bvult ?e150 ?e41))
+(flet ($e583 (bvult ?e27 ?e31))
+(flet ($e584 (bvuge (zero_extend[3] ?e77) ?e148))
+(flet ($e585 (bvuge (sign_extend[1] ?e145) ?e6))
+(flet ($e586 (bvult (zero_extend[3] ?e121) ?e100))
+(flet ($e587 (bvslt ?e87 ?e4))
+(flet ($e588 (bvslt ?e97 ?e153))
+(flet ($e589 (= ?e17 ?e43))
+(flet ($e590 (bvsle ?e38 ?e63))
+(flet ($e591 (bvsle (zero_extend[3] ?e124) ?e21))
+(flet ($e592 (distinct ?e152 ?e119))
+(flet ($e593 (bvugt (zero_extend[3] ?e118) ?e161))
+(flet ($e594 (bvsle ?e72 ?e33))
+(flet ($e595 (bvsle ?e122 ?e131))
+(flet ($e596 (bvslt ?e160 ?e132))
+(flet ($e597 (bvult ?e77 ?e48))
+(flet ($e598 (bvsle ?e49 (zero_extend[2] ?e19)))
+(flet ($e599 (bvule ?e120 ?e159))
+(flet ($e600 (bvuge ?e162 ?e151))
+(flet ($e601 (bvule ?e36 (sign_extend[1] ?e34)))
+(flet ($e602 (bvsle ?e134 (sign_extend[3] ?e113)))
+(flet ($e603 (bvuge ?e95 ?e9))
+(flet ($e604 (bvslt ?e123 ?e127))
+(flet ($e605 (= ?e137 ?e124))
+(flet ($e606 (bvult (zero_extend[2] ?e14) ?e34))
+(flet ($e607 (= ?e93 ?e39))
+(flet ($e608 (bvult ?e130 ?e55))
+(flet ($e609 (bvslt ?e20 (sign_extend[1] ?e145)))
+(flet ($e610 (bvugt ?e122 ?e58))
+(flet ($e611 (= ?e41 ?e118))
+(flet ($e612 (= ?e155 (sign_extend[3] ?e63)))
+(flet ($e613 (bvuge ?e95 ?e131))
+(flet ($e614 (= (zero_extend[3] ?e150) ?e116))
+(flet ($e615 (bvuge ?e91 ?e14))
+(flet ($e616 (bvsge ?e90 ?e7))
+(flet ($e617 (bvsle ?e13 ?e158))
+(flet ($e618 (bvsgt ?e8 (sign_extend[3] ?e131)))
+(flet ($e619 (bvsge ?e157 ?e118))
+(flet ($e620 (bvult ?e46 (zero_extend[3] ?e146)))
+(flet ($e621 (= ?e8 (sign_extend[1] ?e66)))
+(flet ($e622 (bvsge ?e97 ?e162))
+(flet ($e623 (= v2 (zero_extend[3] ?e112)))
+(flet ($e624 (bvsle ?e157 ?e121))
+(flet ($e625 (bvuge ?e148 ?e87))
+(flet ($e626 (bvuge ?e47 (zero_extend[3] ?e150)))
+(flet ($e627 (= ?e7 (sign_extend[1] ?e66)))
+(flet ($e628 (bvsge ?e26 (sign_extend[3] ?e112)))
+(flet ($e629 (bvugt ?e160 ?e82))
+(flet ($e630 (bvsge (zero_extend[2] ?e75) ?e66))
+(flet ($e631 (bvsle v2 (sign_extend[3] ?e124)))
+(flet ($e632 (bvsge ?e20 (sign_extend[3] ?e53)))
+(flet ($e633 (bvslt ?e143 ?e151))
+(flet ($e634 (bvsge ?e133 (sign_extend[3] ?e28)))
+(flet ($e635 (distinct ?e30 (zero_extend[3] ?e67)))
+(flet ($e636 (bvsge ?e40 ?e121))
+(flet ($e637 (bvugt ?e13 (zero_extend[2] ?e19)))
+(flet ($e638 (bvugt ?e23 (sign_extend[2] ?e83)))
+(flet ($e639 (bvsle (zero_extend[3] ?e157) ?e50))
+(flet ($e640 (= v2 ?e26))
+(flet ($e641 (bvult (sign_extend[2] ?e123) ?e66))
+(flet ($e642 (bvule ?e87 ?e125))
+(flet ($e643 (distinct ?e128 ?e99))
+(flet ($e644 (= (sign_extend[3] ?e70) ?e13))
+(flet ($e645 (bvsge ?e48 ?e38))
+(flet ($e646 (bvsge ?e12 (sign_extend[3] ?e159)))
+(flet ($e647 (bvule (sign_extend[3] ?e151) ?e116))
+(flet ($e648 (distinct ?e109 (zero_extend[3] ?e132)))
+(flet ($e649 (= (zero_extend[3] ?e16) ?e89))
+(flet ($e650 (bvslt (sign_extend[3] ?e139) ?e12))
+(flet ($e651 (bvsle ?e57 ?e128))
+(flet ($e652 (bvsle ?e137 ?e40))
+(flet ($e653 (bvugt (zero_extend[3] ?e113) ?e42))
+(flet ($e654 (bvuge ?e132 ?e39))
+(flet ($e655 (bvsle ?e78 (sign_extend[3] ?e129)))
+(flet ($e656 (= ?e25 (zero_extend[3] ?e102)))
+(flet ($e657 (bvugt (zero_extend[3] ?e29) ?e44))
+(flet ($e658 (bvsle (sign_extend[3] ?e137) ?e20))
+(flet ($e659 (bvsge (sign_extend[3] ?e131) ?e134))
+(flet ($e660 (bvsle (zero_extend[3] ?e152) ?e161))
+(flet ($e661 (bvslt ?e94 ?e24))
+(flet ($e662 (bvsge ?e12 (sign_extend[3] ?e129)))
+(flet ($e663 (bvsge (sign_extend[3] ?e57) ?e130))
+(flet ($e664 (bvsge ?e4 ?e117))
+(flet ($e665 (distinct ?e12 ?e71))
+(flet ($e666 (bvult (sign_extend[3] ?e72) ?e133))
+(flet ($e667 (bvsle (sign_extend[1] ?e110) ?e138))
+(flet ($e668 (bvsge ?e50 ?e20))
+(flet ($e669 (bvsgt (zero_extend[3] ?e157) ?e64))
+(flet ($e670 (bvsle (sign_extend[3] ?e112) ?e6))
+(flet ($e671 (bvuge (zero_extend[3] ?e99) ?e117))
+(flet ($e672 (bvsgt ?e89 ?e125))
+(flet ($e673 (bvsgt ?e86 ?e153))
+(flet ($e674 (bvsle (zero_extend[2] ?e139) ?e103))
+(flet ($e675 (bvsgt ?e60 ?e57))
+(flet ($e676 (bvuge ?e131 ?e61))
+(flet ($e677 (bvsle ?e116 ?e161))
+(flet ($e678 (bvslt ?e37 (sign_extend[3] ?e152)))
+(flet ($e679 (bvsgt ?e151 ?e38))
+(flet ($e680 (bvsgt (zero_extend[3] ?e48) ?e100))
+(flet ($e681 (bvult ?e142 ?e146))
+(flet ($e682 (distinct ?e25 ?e42))
+(flet ($e683 (bvsge ?e8 (zero_extend[3] ?e149)))
+(flet ($e684 (distinct (zero_extend[3] ?e149) ?e106))
+(flet ($e685 (bvslt ?e147 (zero_extend[3] ?e97)))
+(flet ($e686 (distinct v2 ?e42))
+(flet ($e687 (bvsgt ?e59 (zero_extend[3] ?e39)))
+(flet ($e688 (bvugt (sign_extend[3] ?e32) ?e135))
+(flet ($e689 (bvslt (zero_extend[1] ?e66) ?e24))
+(flet ($e690 (bvule ?e7 (sign_extend[3] ?e14)))
+(flet ($e691 (bvuge ?e115 ?e89))
+(flet ($e692 (bvult (zero_extend[3] ?e18) ?e17))
+(flet ($e693 (bvsgt (sign_extend[1] ?e103) ?e20))
+(flet ($e694 (bvsge (zero_extend[3] ?e136) ?e107))
+(flet ($e695 (bvslt ?e55 (zero_extend[3] ?e15)))
+(flet ($e696 (bvslt ?e27 ?e161))
+(flet ($e697 (bvugt v1 (zero_extend[3] ?e53)))
+(flet ($e698 (bvsgt ?e29 ?e48))
+(flet ($e699 (bvsgt v1 (sign_extend[3] ?e128)))
+(flet ($e700 (bvuge ?e66 (zero_extend[2] ?e139)))
+(flet ($e701 (bvuge ?e125 ?e130))
+(flet ($e702 (distinct ?e12 ?e89))
+(flet ($e703 (= ?e40 ?e143))
+(flet ($e704 (bvule (zero_extend[3] ?e60) ?e155))
+(flet ($e705 (bvuge (sign_extend[3] ?e10) ?e17))
+(flet ($e706 (bvule ?e67 ?e156))
+(flet ($e707 (= (sign_extend[3] ?e39) ?e114))
+(flet ($e708 (bvsgt ?e84 ?e17))
+(flet ($e709 (bvslt ?e97 ?e141))
+(flet ($e710 (bvult ?e74 ?e54))
+(flet ($e711 (= ?e120 ?e82))
+(flet ($e712 (= ?e51 (sign_extend[3] ?e139)))
+(flet ($e713 (bvslt ?e6 ?e100))
+(flet ($e714 (bvult ?e139 ?e67))
+(flet ($e715 (bvult ?e94 ?e106))
+(flet ($e716 (bvult ?e25 (sign_extend[1] ?e145)))
+(flet ($e717 (bvult (sign_extend[3] ?e122) ?e37))
+(flet ($e718 (distinct (zero_extend[3] ?e95) ?e12))
+(flet ($e719 (distinct ?e18 ?e146))
+(flet ($e720 (bvsge ?e92 ?e78))
+(flet ($e721 (bvule v2 (sign_extend[3] ?e157)))
+(flet ($e722 (bvsle ?e12 ?e27))
+(flet ($e723 (bvult ?e45 ?e103))
+(flet ($e724 
+(and
+ (or (not $e249) (not $e525) (not $e176))
+ (or (not $e331) $e598 $e604)
+ (or (not $e256) $e622 (not $e534))
+ (or (not $e466) (not $e589) (not $e670))
+ (or $e652 $e248 $e452)
+ (or $e487 $e443 $e606)
+ (or $e392 $e689 (not $e191))
+ (or (not $e425) (not $e377) (not $e722))
+ (or (not $e321) (not $e270) (not $e384))
+ (or $e247 (not $e384) (not $e443))
+ (or $e298 $e632 $e185)
+ (or $e565 $e433 (not $e425))
+ (or $e525 (not $e218) (not $e448))
+ (or (not $e504) (not $e300) $e391)
+ (or $e379 $e300 (not $e398))
+ (or $e573 (not $e667) (not $e354))
+ (or (not $e519) (not $e556) (not $e552))
+ (or $e572 (not $e534) (not $e352))
+ (or (not $e696) (not $e693) $e310)
+ (or $e216 (not $e222) $e406)
+ (or (not $e655) $e322 $e390)
+ (or $e231 $e509 $e316)
+ (or (not $e598) $e260 (not $e599))
+ (or $e440 $e710 $e394)
+ (or (not $e457) $e300 $e508)
+ (or $e228 $e526 $e446)
+ (or $e659 (not $e268) $e636)
+ (or (not $e716) (not $e303) $e306)
+ (or (not $e173) (not $e685) $e312)
+ (or (not $e236) $e278 $e542)
+ (or (not $e186) (not $e260) (not $e280))
+ (or $e185 $e568 $e502)
+ (or $e646 (not $e667) (not $e702))
+ (or $e522 (not $e472) (not $e247))
+ (or $e469 $e443 $e718)
+ (or (not $e474) $e224 $e422)
+ (or (not $e216) (not $e614) $e552)
+ (or $e543 (not $e447) (not $e347))
+ (or (not $e249) (not $e398) $e294)
+ (or $e344 $e421 (not $e667))
+ (or (not $e394) $e168 $e423)
+ (or (not $e635) $e443 $e488)
+ (or (not $e419) $e549 (not $e278))
+ (or (not $e630) $e522 (not $e436))
+ (or (not $e636) (not $e172) (not $e264))
+ (or (not $e540) $e624 (not $e410))
+ (or $e698 $e400 $e229)
+ (or (not $e252) $e596 $e661)
+ (or $e354 (not $e313) $e327)
+ (or $e257 (not $e336) (not $e270))
+ (or (not $e431) (not $e353) $e250)
+ (or (not $e355) $e511 (not $e176))
+ (or (not $e377) $e214 (not $e413))
+ (or (not $e464) $e658 (not $e261))
+ (or $e289 $e524 (not $e541))
+ (or $e653 $e206 $e588)
+ (or (not $e475) (not $e329) (not $e681))
+ (or (not $e377) $e408 (not $e183))
+ (or $e620 (not $e453) (not $e657))
+ (or $e217 $e343 $e250)
+ (or (not $e719) (not $e482) (not $e199))
+ (or $e442 (not $e718) $e284)
+ (or (not $e531) (not $e551) $e509)
+ (or $e545 (not $e600) (not $e416))
+ (or (not $e423) $e576 $e280)
+ (or (not $e279) $e378 $e617)
+ (or $e207 (not $e444) (not $e229))
+ (or $e217 (not $e433) $e348)
+ (or (not $e276) (not $e428) $e343)
+ (or $e485 $e631 $e718)
+ (or $e401 (not $e491) (not $e286))
+ (or (not $e451) (not $e293) (not $e656))
+ (or $e455 (not $e382) $e681)
+ (or (not $e212) (not $e655) (not $e686))
+ (or (not $e183) $e433 (not $e413))
+ (or $e164 (not $e716) (not $e502))
+ (or (not $e674) $e363 $e547)
+ (or (not $e563) $e399 $e350)
+ (or (not $e553) (not $e608) $e327)
+ (or (not $e344) $e219 $e427)
+ (or $e471 $e605 $e709)
+ (or $e231 $e679 (not $e167))
+ (or $e236 (not $e368) (not $e270))
+ (or $e578 (not $e701) $e322)
+ (or (not $e657) (not $e713) $e201)
+ (or $e579 (not $e212) (not $e268))
+ (or (not $e246) $e577 (not $e208))
+ (or (not $e286) (not $e353) $e656)
+ (or (not $e656) (not $e273) (not $e591))
+ (or (not $e675) (not $e542) $e479)
+ (or $e686 (not $e265) (not $e484))
+ (or (not $e507) (not $e470) $e643)
+ (or $e447 (not $e227) $e511)
+ (or (not $e631) (not $e582) $e636)
+ (or (not $e426) (not $e389) (not $e306))
+ (or (not $e364) (not $e694) $e417)
+ (or (not $e352) (not $e466) (not $e654))
+ (or (not $e218) (not $e611) (not $e477))
+ (or $e680 $e646 (not $e207))
+ (or (not $e408) $e518 $e430)
+ (or (not $e599) (not $e656) $e602)
+ (or (not $e390) $e597 $e714)
+ (or $e580 (not $e471) $e632)
+ (or (not $e694) (not $e645) $e340)
+ (or (not $e246) $e471 (not $e622))
+ (or (not $e410) $e469 (not $e600))
+ (or $e514 $e498 $e344)
+ (or $e347 $e559 $e595)
+ (or $e532 $e282 (not $e707))
+ (or (not $e462) $e304 (not $e302))
+ (or (not $e600) (not $e432) (not $e720))
+ (or $e411 $e593 $e177)
+ (or $e507 $e337 $e317)
+ (or $e638 $e601 $e585)
+ (or $e357 (not $e269) (not $e345))
+ (or $e565 (not $e691) (not $e594))
+ (or (not $e524) $e651 (not $e272))
+ (or $e537 (not $e619) (not $e380))
+ (or $e496 $e643 $e596)
+ (or (not $e313) $e293 $e274)
+ (or (not $e512) $e281 (not $e483))
+ (or $e317 $e337 (not $e507))
+ (or $e193 (not $e629) (not $e473))
+ (or $e322 (not $e425) $e193)
+ (or $e639 $e492 (not $e512))
+ (or $e391 (not $e374) $e202)
+ (or (not $e572) (not $e690) $e192)
+ (or (not $e426) $e652 $e274)
+ (or $e493 $e522 (not $e522))
+ (or $e477 $e346 $e379)
+ (or $e398 (not $e267) $e465)
+ (or $e216 (not $e253) $e626)
+ (or (not $e462) $e173 $e340)
+ (or $e628 (not $e184) $e677)
+ (or (not $e540) (not $e395) $e239)
+ (or $e320 (not $e172) (not $e357))
+ (or $e292 $e506 $e497)
+ (or (not $e388) $e277 (not $e410))
+ (or (not $e219) $e295 (not $e168))
+ (or $e585 (not $e500) $e710)
+ (or $e352 $e420 $e524)
+ (or (not $e203) $e372 (not $e321))
+ (or (not $e558) (not $e254) $e627)
+ (or (not $e669) (not $e253) (not $e302))
+ (or $e172 (not $e624) $e421)
+ (or (not $e514) (not $e704) (not $e397))
+ (or (not $e527) (not $e274) (not $e257))
+ (or (not $e721) (not $e380) (not $e516))
+ (or (not $e425) $e333 $e539)
+ (or (not $e583) (not $e552) $e340)
+ (or (not $e467) $e608 (not $e392))
+ (or $e545 (not $e650) (not $e637))
+ (or $e247 $e320 $e716)
+ (or (not $e227) $e501 (not $e396))
+ (or (not $e544) $e276 (not $e487))
+ (or (not $e453) (not $e241) $e403)
+ (or $e368 (not $e623) $e655)
+ (or (not $e556) (not $e578) $e187)
+ (or (not $e553) $e602 (not $e340))
+ (or $e329 $e693 $e506)
+ (or (not $e705) (not $e401) (not $e187))
+ (or $e407 $e222 (not $e311))
+ (or (not $e322) (not $e402) $e343)
+ (or $e636 (not $e458) $e444)
+ (or $e723 $e364 (not $e576))
+ (or $e359 $e295 (not $e639))
+ (or $e307 (not $e370) $e426)
+ (or $e266 $e596 (not $e294))
+ (or $e518 (not $e402) $e504)
+ (or $e543 $e664 $e464)
+ (or (not $e639) $e574 $e196)
+ (or (not $e715) (not $e359) (not $e421))
+ (or $e575 (not $e387) $e269)
+ (or $e433 (not $e218) $e272)
+ (or $e653 (not $e363) (not $e525))
+ (or (not $e610) $e208 $e332)
+ (or (not $e403) $e268 $e265)
+ (or $e565 (not $e393) (not $e569))
+ (or (not $e345) $e509 (not $e194))
+ (or $e634 (not $e220) $e368)
+ (or (not $e176) (not $e294) $e708)
+ (or (not $e219) $e185 (not $e693))
+ (or $e541 $e591 (not $e401))
+ (or $e241 (not $e458) $e553)
+ (or (not $e458) (not $e406) $e216)
+ (or (not $e473) (not $e186) (not $e709))
+ (or (not $e219) (not $e695) (not $e435))
+ (or (not $e575) (not $e465) (not $e462))
+ (or (not $e404) (not $e197) $e358)
+ (or $e679 (not $e674) $e299)
+ (or (not $e611) (not $e396) (not $e668))
+ (or (not $e530) $e332 $e281)
+ (or $e687 (not $e233) $e423)
+ (or (not $e452) $e192 $e706)
+ (or (not $e526) (not $e538) (not $e582))
+ (or (not $e200) (not $e213) $e182)
+ (or (not $e196) $e567 (not $e400))
+ (or (not $e691) (not $e649) (not $e279))
+ (or $e206 $e203 (not $e458))
+ (or $e255 (not $e175) (not $e495))
+ (or (not $e555) $e224 (not $e253))
+ (or (not $e497) $e173 (not $e537))
+ (or $e288 (not $e309) (not $e349))
+ (or $e481 (not $e597) (not $e425))
+ (or $e493 $e300 $e447)
+ (or $e651 $e578 (not $e455))
+ (or (not $e272) $e658 $e483)
+ (or (not $e229) (not $e607) $e379)
+ (or (not $e169) (not $e658) $e624)
+ (or $e261 (not $e183) (not $e715))
+ (or (not $e238) $e478 $e258)
+ (or (not $e447) (not $e472) $e188)
+ (or (not $e687) $e423 (not $e569))
+ (or $e532 (not $e506) (not $e173))
+ (or $e196 $e699 $e672)
+ (or (not $e207) $e163 (not $e308))
+ (or (not $e317) $e681 $e199)
+ (or $e177 (not $e642) $e198)
+ (or (not $e259) (not $e386) (not $e428))
+ (or (not $e257) $e295 (not $e582))
+ (or $e469 $e650 (not $e636))
+ (or (not $e289) (not $e474) (not $e370))
+ (or $e383 $e637 (not $e671))
+ (or $e464 (not $e678) (not $e193))
+ (or $e324 (not $e181) (not $e534))
+ (or $e348 $e530 (not $e176))
+ (or $e287 $e583 (not $e619))
+ (or $e398 $e535 $e651)
+ (or $e366 $e340 $e555)
+ (or $e534 (not $e322) (not $e238))
+ (or (not $e404) (not $e415) $e632)
+ (or $e546 $e533 $e653)
+ (or $e540 (not $e270) $e435)
+ (or $e662 (not $e691) (not $e676))
+ (or $e237 (not $e518) $e650)
+ (or (not $e457) $e304 (not $e428))
+ (or $e378 (not $e654) $e425)
+ (or $e209 (not $e548) $e370)
+ (or (not $e463) $e414 (not $e175))
+ (or $e192 $e441 (not $e456))
+ (or $e588 $e270 (not $e211))
+ (or (not $e450) $e653 (not $e684))
+ (or $e469 (not $e611) (not $e208))
+ (or (not $e498) (not $e651) (not $e613))
+ (or $e374 (not $e210) (not $e575))
+ (or $e295 $e691 $e585)
+ (or $e408 $e433 $e426)
+ (or (not $e563) $e522 (not $e293))
+ (or $e239 $e582 (not $e313))
+ (or $e375 $e406 $e377)
+ (or $e242 (not $e639) (not $e494))
+ (or $e573 (not $e470) $e315)
+ (or $e276 (not $e272) $e684)
+ (or $e275 $e347 $e702)
+ (or (not $e408) (not $e422) $e261)
+ (or (not $e424) $e474 $e328)
+ (or (not $e245) $e515 (not $e575))
+ (or (not $e357) $e256 (not $e466))
+ (or (not $e707) (not $e708) $e502)
+ (or (not $e233) (not $e300) (not $e342))
+ (or $e477 $e270 $e476)
+ (or (not $e280) (not $e477) $e326)
+ (or $e287 (not $e572) $e558)
+ (or $e464 (not $e238) $e612)
+ (or $e687 (not $e217) $e215)
+ (or $e618 (not $e300) $e313)
+ (or (not $e702) $e661 $e348)
+ (or $e694 $e417 (not $e655))
+ (or $e308 (not $e610) $e535)
+ (or (not $e259) $e183 $e219)
+ (or (not $e643) (not $e391) (not $e616))
+ (or $e500 (not $e286) $e170)
+ (or $e323 (not $e439) (not $e374))
+ (or $e713 (not $e433) $e414)
+ (or (not $e224) $e635 $e262)
+ (or (not $e359) (not $e225) (not $e235))
+ (or $e520 $e183 (not $e388))
+ (or $e276 (not $e618) (not $e513))
+ (or (not $e254) (not $e218) (not $e259))
+ (or (not $e280) (not $e242) (not $e530))
+))
+$e724
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) [...]
+
diff --git a/test/regress/regress0/bv/fuzz33.delta01.smt b/test/regress/regress0/bv/fuzz33.delta01.smt
new file mode 100644
index 0000000..6d7589c
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz33.delta01.smt
@@ -0,0 +1,13 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v0 BitVec[4]))
+:status sat
+:formula
+(let (?n1 bv0[1])
+(let (?n2 bv1[4])
+(let (?n3 (bvnot v0))
+(let (?n4 (bvadd ?n2 ?n3))
+(let (?n5 (extract[0:0] ?n4))
+(flet ($n6 (= ?n1 ?n5))
+$n6
+)))))))
diff --git a/test/regress/regress0/bv/fuzz33.smt b/test/regress/regress0/bv/fuzz33.smt
new file mode 100644
index 0000000..b7898b8
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz33.smt
@@ -0,0 +1,118 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status sat
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:formula
+(let (?e2 bv1[4])
+(let (?e3 bv9[4])
+(let (?e4 bv12[4])
+(let (?e5 bv9[4])
+(let (?e6 bv3[4])
+(let (?e7 (zero_extend[0] v0))
+(let (?e8 (extract[3:2] v1))
+(let (?e9 (ite (= ?e6 ?e7) bv1[1] bv0[1]))
+(let (?e10 (bvnot v0))
+(let (?e11 (ite (= bv1[1] (extract[0:0] ?e4)) ?e10 ?e3))
+(let (?e12 (bvadd ?e7 (zero_extend[3] ?e9)))
+(let (?e13 (ite (bvule ?e5 ?e4) bv1[1] bv0[1]))
+(let (?e14 (bvadd ?e10 ?e3))
+(let (?e15 (ite (bvuge ?e3 ?e14) bv1[1] bv0[1]))
+(let (?e16 (bvsub ?e10 ?e10))
+(let (?e17 (repeat[1] ?e16))
+(let (?e18 (rotate_right[0] ?e13))
+(let (?e19 (ite (bvugt (zero_extend[3] ?e13) ?e3) bv1[1] bv0[1]))
+(let (?e20 (ite (bvsle v0 (zero_extend[3] ?e13)) bv1[1] bv0[1]))
+(let (?e21 (bvlshr ?e17 ?e14))
+(let (?e22 (sign_extend[0] ?e3))
+(let (?e23 (bvsub ?e3 ?e6))
+(let (?e24 (bvnot ?e17))
+(let (?e25 (bvand ?e4 v0))
+(let (?e26 (bvnor ?e14 ?e21))
+(let (?e27 (extract[3:1] ?e4))
+(let (?e28 (bvmul ?e24 (zero_extend[3] ?e20)))
+(let (?e29 (bvneg ?e8))
+(let (?e30 (ite (bvuge ?e5 ?e10) bv1[1] bv0[1]))
+(let (?e31 (ite (bvugt (sign_extend[3] ?e30) ?e28) bv1[1] bv0[1]))
+(let (?e32 (bvlshr ?e6 ?e25))
+(let (?e33 (ite (bvslt ?e4 ?e6) bv1[1] bv0[1]))
+(let (?e34 (ite (distinct (zero_extend[3] ?e33) ?e24) bv1[1] bv0[1]))
+(let (?e35 (ite (= bv1[1] (extract[0:0] ?e14)) ?e11 ?e2))
+(flet ($e36 (bvugt ?e8 ?e8))
+(flet ($e37 (bvule ?e2 (zero_extend[2] ?e29)))
+(flet ($e38 (bvslt ?e21 v0))
+(flet ($e39 (distinct (zero_extend[1] ?e27) ?e26))
+(flet ($e40 (bvuge ?e25 (zero_extend[3] ?e13)))
+(flet ($e41 (bvslt ?e8 ?e29))
+(flet ($e42 (bvuge ?e22 ?e28))
+(flet ($e43 (bvsgt ?e30 ?e31))
+(flet ($e44 (bvsle ?e3 (sign_extend[3] ?e19)))
+(flet ($e45 (distinct ?e35 (zero_extend[3] ?e18)))
+(flet ($e46 (bvuge ?e3 ?e16))
+(flet ($e47 (bvsge ?e28 ?e5))
+(flet ($e48 (bvuge ?e16 (zero_extend[3] ?e9)))
+(flet ($e49 (= (sign_extend[3] ?e33) ?e24))
+(flet ($e50 (bvuge ?e14 (sign_extend[3] ?e9)))
+(flet ($e51 (bvsle ?e5 (zero_extend[3] ?e31)))
+(flet ($e52 (bvult ?e11 ?e4))
+(flet ($e53 (= ?e17 (zero_extend[3] ?e30)))
+(flet ($e54 (bvsge ?e28 (sign_extend[3] ?e9)))
+(flet ($e55 (bvuge (zero_extend[3] ?e9) ?e25))
+(flet ($e56 (bvuge v1 (zero_extend[3] ?e20)))
+(flet ($e57 (bvuge ?e6 ?e24))
+(flet ($e58 (bvsle ?e3 (zero_extend[3] ?e18)))
+(flet ($e59 (= (sign_extend[3] ?e18) ?e4))
+(flet ($e60 (bvsge ?e29 ?e8))
+(flet ($e61 (bvule (zero_extend[2] ?e8) ?e21))
+(flet ($e62 (bvsgt ?e23 ?e16))
+(flet ($e63 (bvuge v0 v0))
+(flet ($e64 (bvslt ?e12 ?e26))
+(flet ($e65 (bvsle (sign_extend[3] ?e9) ?e6))
+(flet ($e66 (bvugt ?e32 (sign_extend[3] ?e31)))
+(flet ($e67 (bvult ?e11 (zero_extend[3] ?e20)))
+(flet ($e68 (bvule ?e2 ?e32))
+(flet ($e69 (bvule ?e6 (sign_extend[2] ?e29)))
+(flet ($e70 (bvugt ?e24 ?e10))
+(flet ($e71 (distinct ?e26 ?e17))
+(flet ($e72 (bvslt (sign_extend[3] ?e30) ?e11))
+(flet ($e73 (distinct ?e21 (sign_extend[3] ?e31)))
+(flet ($e74 (= v0 (sign_extend[1] ?e27)))
+(flet ($e75 (bvult (sign_extend[3] ?e18) ?e24))
+(flet ($e76 (bvule ?e12 ?e14))
+(flet ($e77 (bvsle v1 ?e7))
+(flet ($e78 (bvule ?e16 ?e17))
+(flet ($e79 (bvuge ?e32 ?e2))
+(flet ($e80 (bvslt (sign_extend[2] ?e15) ?e27))
+(flet ($e81 (distinct ?e10 ?e21))
+(flet ($e82 (bvugt ?e26 (sign_extend[2] ?e8)))
+(flet ($e83 (bvule ?e32 (sign_extend[3] ?e34)))
+(flet ($e84 
+(and
+ (or $e42 (not $e41) $e77)
+ (or $e53 (not $e47) $e78)
+ (or (not $e56) $e58 $e43)
+ (or $e41 $e45 (not $e77))
+ (or (not $e45) (not $e73) (not $e68))
+ (or $e68 $e41 (not $e42))
+ (or (not $e81) (not $e80) (not $e66))
+ (or $e81 $e67 (not $e42))
+ (or (not $e66) $e47 (not $e81))
+ (or (not $e56) (not $e62) (not $e59))
+ (or (not $e45) (not $e71) $e52)
+ (or $e58 $e50 (not $e48))
+ (or $e45 $e56 $e56)
+ (or $e37 $e61 $e78)
+ (or (not $e76) (not $e50) (not $e80))
+ (or (not $e44) (not $e42) $e62)
+ (or (not $e45) (not $e77) (not $e53))
+ (or $e41 (not $e68) $e55)
+ (or $e75 (not $e45) $e65)
+ (or (not $e58) $e83 (not $e64))
+ (or $e40 $e78 $e64)
+ (or (not $e46) $e56 (not $e55))
+ (or (not $e61) (not $e64) (not $e43))
+ (or (not $e82) $e48 (not $e73))
+))
+$e84
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz34.delta01.smt b/test/regress/regress0/bv/fuzz34.delta01.smt
new file mode 100644
index 0000000..2bd2896
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz34.delta01.smt
@@ -0,0 +1,22 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v0 BitVec[4]))
+:status sat
+:formula
+(let (?n1 bv0[1])
+(let (?n2 bv0[4])
+(let (?n3 (bvcomp v0 ?n2))
+(flet ($n4 (distinct v0 ?n2))
+(let (?n5 bv1[1])
+(let (?n6 (ite $n4 ?n5 ?n1))
+(let (?n7 (zero_extend[3] ?n6))
+(flet ($n8 (bvslt ?n7 ?n2))
+(let (?n9 (ite $n8 ?n5 ?n1))
+(let (?n10 (sign_extend[3] ?n9))
+(flet ($n11 (bvslt ?n2 ?n10))
+(let (?n12 (ite $n11 ?n5 ?n1))
+(let (?n13 (bvor ?n3 ?n12))
+(let (?n14 (bvsub ?n13 ?n5))
+(flet ($n15 (distinct ?n1 ?n14))
+$n15
+))))))))))))))))
diff --git a/test/regress/regress0/bv/fuzz35.delta01.smt b/test/regress/regress0/bv/fuzz35.delta01.smt
new file mode 100644
index 0000000..640e44f
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz35.delta01.smt
@@ -0,0 +1,14 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v0 BitVec[4]))
+:status unsat
+:formula
+(let (?n1 bv4[4])
+(let (?n2 bv12[4])
+(let (?n3 (bvsub ?n1 ?n2))
+(let (?n4 (bvmul v0 ?n3))
+(let (?n5 (bvadd ?n4 ?n4))
+(let (?n6 bv0[4])
+(flet ($n7 (bvsgt ?n5 ?n6))
+$n7
+))))))))
diff --git a/test/regress/regress0/bv/fuzz35.smt b/test/regress/regress0/bv/fuzz35.smt
new file mode 100644
index 0000000..73ae721
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz35.smt
@@ -0,0 +1,304 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status unsat
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:extrafuns ((v3 BitVec[4]))
+:extrafuns ((v4 BitVec[4]))
+:formula
+(let (?e5 bv4[4])
+(let (?e6 bv12[4])
+(let (?e7 bv4[4])
+(let (?e8 (bvlshr ?e5 v0))
+(let (?e9 (ite (= bv1[1] (extract[1:1] ?e5)) v2 v1))
+(let (?e10 (bvsub ?e7 ?e6))
+(let (?e11 (zero_extend[0] ?e7))
+(let (?e12 (sign_extend[0] ?e9))
+(let (?e13 (bvnot ?e7))
+(let (?e14 (bvlshr ?e7 v3))
+(let (?e15 (extract[1:0] v0))
+(let (?e16 (bvneg ?e10))
+(let (?e17 (ite (= ?e9 v2) bv1[1] bv0[1]))
+(let (?e18 (bvmul ?e10 v0))
+(let (?e19 (bvadd ?e8 ?e14))
+(let (?e20 (zero_extend[0] ?e18))
+(let (?e21 (bvmul ?e8 ?e18))
+(let (?e22 (bvsub ?e11 ?e14))
+(let (?e23 (ite (bvugt v1 ?e5) bv1[1] bv0[1]))
+(let (?e24 (bvashr ?e14 ?e18))
+(let (?e25 (bvadd ?e21 ?e9))
+(let (?e26 (bvadd ?e20 ?e20))
+(let (?e27 (ite (bvslt (zero_extend[3] ?e23) v3) bv1[1] bv0[1]))
+(let (?e28 (ite (bvugt ?e9 ?e12) bv1[1] bv0[1]))
+(let (?e29 (bvnot ?e26))
+(let (?e30 (ite (bvult ?e21 ?e11) bv1[1] bv0[1]))
+(let (?e31 (bvsub v1 ?e20))
+(let (?e32 (ite (bvslt ?e19 (zero_extend[3] ?e28)) bv1[1] bv0[1]))
+(let (?e33 (rotate_right[0] ?e15))
+(let (?e34 (bvnot ?e14))
+(let (?e35 (zero_extend[0] ?e24))
+(let (?e36 (sign_extend[0] ?e22))
+(let (?e37 (ite (bvult ?e25 ?e10) bv1[1] bv0[1]))
+(let (?e38 (bvashr ?e27 ?e23))
+(let (?e39 (bvcomp v0 ?e31))
+(let (?e40 (bvand v0 ?e31))
+(let (?e41 (zero_extend[0] ?e21))
+(let (?e42 (ite (= bv1[1] (extract[0:0] ?e14)) ?e40 (sign_extend[3] ?e23)))
+(let (?e43 (sign_extend[0] ?e32))
+(let (?e44 (sign_extend[0] ?e19))
+(let (?e45 (ite (= bv1[1] (extract[2:2] ?e40)) (sign_extend[3] ?e27) ?e24))
+(let (?e46 (bvnot ?e21))
+(let (?e47 (rotate_right[3] v3))
+(let (?e48 (bvxnor (zero_extend[2] ?e15) ?e45))
+(let (?e49 (bvand ?e40 ?e46))
+(let (?e50 (ite (bvsle ?e20 ?e31) bv1[1] bv0[1]))
+(let (?e51 (bvneg ?e22))
+(let (?e52 (bvor ?e41 ?e22))
+(let (?e53 (ite (bvslt v1 ?e13) bv1[1] bv0[1]))
+(let (?e54 (bvshl ?e11 (sign_extend[3] ?e38)))
+(let (?e55 (ite (bvsge (zero_extend[3] ?e17) ?e40) bv1[1] bv0[1]))
+(let (?e56 (ite (distinct ?e52 (zero_extend[3] ?e17)) bv1[1] bv0[1]))
+(let (?e57 (bvneg ?e17))
+(let (?e58 (extract[3:0] ?e47))
+(let (?e59 (ite (bvugt ?e30 ?e17) bv1[1] bv0[1]))
+(let (?e60 (zero_extend[0] ?e48))
+(let (?e61 (bvshl (sign_extend[3] ?e59) v4))
+(flet ($e62 (bvsgt ?e60 (zero_extend[3] ?e57)))
+(flet ($e63 (bvule ?e15 (zero_extend[1] ?e38)))
+(flet ($e64 (distinct ?e16 (sign_extend[3] ?e30)))
+(flet ($e65 (= ?e25 ?e14))
+(flet ($e66 (bvsgt (sign_extend[3] ?e43) ?e10))
+(flet ($e67 (bvule (sign_extend[3] ?e39) ?e41))
+(flet ($e68 (bvult ?e25 ?e36))
+(flet ($e69 (bvugt ?e36 ?e24))
+(flet ($e70 (bvslt (zero_extend[3] ?e50) ?e12))
+(flet ($e71 (bvsle ?e25 (zero_extend[3] ?e32)))
+(flet ($e72 (bvsgt ?e37 ?e57))
+(flet ($e73 (bvuge ?e48 ?e47))
+(flet ($e74 (bvsle v2 ?e41))
+(flet ($e75 (bvule ?e48 (zero_extend[3] ?e53)))
+(flet ($e76 (bvsge (zero_extend[1] ?e28) ?e33))
+(flet ($e77 (distinct ?e33 (sign_extend[1] ?e55)))
+(flet ($e78 (bvule ?e27 ?e53))
+(flet ($e79 (= ?e55 ?e55))
+(flet ($e80 (bvule ?e55 ?e17))
+(flet ($e81 (bvuge ?e47 (sign_extend[3] ?e39)))
+(flet ($e82 (= ?e26 ?e22))
+(flet ($e83 (bvslt (sign_extend[2] ?e15) ?e35))
+(flet ($e84 (bvugt ?e23 ?e53))
+(flet ($e85 (bvslt ?e22 (zero_extend[3] ?e56)))
+(flet ($e86 (bvuge ?e10 (sign_extend[3] ?e38)))
+(flet ($e87 (bvsge ?e24 (zero_extend[3] ?e57)))
+(flet ($e88 (bvsgt ?e29 ?e21))
+(flet ($e89 (= ?e8 (sign_extend[3] ?e37)))
+(flet ($e90 (bvslt ?e41 ?e24))
+(flet ($e91 (bvsgt v3 (sign_extend[3] ?e43)))
+(flet ($e92 (= ?e57 ?e55))
+(flet ($e93 (bvsgt ?e16 (sign_extend[3] ?e28)))
+(flet ($e94 (bvsge (sign_extend[3] ?e37) v0))
+(flet ($e95 (bvsge ?e13 ?e44))
+(flet ($e96 (bvsle ?e18 ?e18))
+(flet ($e97 (bvuge ?e17 ?e38))
+(flet ($e98 (bvugt ?e51 ?e42))
+(flet ($e99 (= ?e47 ?e49))
+(flet ($e100 (bvule ?e43 ?e39))
+(flet ($e101 (bvsle ?e47 ?e45))
+(flet ($e102 (bvuge (zero_extend[3] ?e50) v3))
+(flet ($e103 (distinct ?e5 ?e34))
+(flet ($e104 (bvugt (zero_extend[3] ?e38) ?e29))
+(flet ($e105 (bvuge (sign_extend[3] ?e38) ?e58))
+(flet ($e106 (bvsge ?e28 ?e56))
+(flet ($e107 (distinct ?e51 ?e10))
+(flet ($e108 (bvsge ?e21 ?e10))
+(flet ($e109 (bvsle (zero_extend[3] ?e32) ?e5))
+(flet ($e110 (bvsle ?e7 (sign_extend[3] ?e38)))
+(flet ($e111 (bvugt ?e8 v3))
+(flet ($e112 (= ?e21 ?e49))
+(flet ($e113 (bvugt ?e34 (sign_extend[3] ?e27)))
+(flet ($e114 (bvugt (sign_extend[3] ?e50) v3))
+(flet ($e115 (= ?e25 ?e6))
+(flet ($e116 (distinct ?e13 (sign_extend[3] ?e27)))
+(flet ($e117 (bvugt ?e10 ?e7))
+(flet ($e118 (= ?e8 ?e58))
+(flet ($e119 (bvsgt ?e45 ?e42))
+(flet ($e120 (distinct ?e38 ?e53))
+(flet ($e121 (bvule (zero_extend[3] ?e50) ?e35))
+(flet ($e122 (distinct ?e51 ?e25))
+(flet ($e123 (bvslt v4 ?e44))
+(flet ($e124 (= ?e14 v0))
+(flet ($e125 (bvsge (zero_extend[1] ?e39) ?e33))
+(flet ($e126 (bvslt v0 (zero_extend[3] ?e57)))
+(flet ($e127 (bvsle ?e6 ?e36))
+(flet ($e128 (bvugt ?e13 (zero_extend[3] ?e28)))
+(flet ($e129 (bvsle ?e40 v1))
+(flet ($e130 (bvuge (sign_extend[3] ?e23) ?e44))
+(flet ($e131 (bvule (sign_extend[3] ?e56) ?e41))
+(flet ($e132 (bvule ?e20 ?e13))
+(flet ($e133 (bvult ?e6 (sign_extend[2] ?e15)))
+(flet ($e134 (bvugt ?e51 (zero_extend[3] ?e28)))
+(flet ($e135 (bvslt ?e10 (zero_extend[3] ?e57)))
+(flet ($e136 (= (zero_extend[3] ?e32) ?e14))
+(flet ($e137 (bvsge ?e29 ?e47))
+(flet ($e138 (= v3 ?e54))
+(flet ($e139 (= ?e60 ?e16))
+(flet ($e140 (bvsgt ?e24 ?e52))
+(flet ($e141 (bvuge v0 ?e34))
+(flet ($e142 (distinct v1 ?e34))
+(flet ($e143 (bvugt ?e61 v2))
+(flet ($e144 (bvsgt ?e33 (sign_extend[1] ?e27)))
+(flet ($e145 (bvsgt ?e55 ?e27))
+(flet ($e146 (bvsgt (zero_extend[3] ?e32) ?e61))
+(flet ($e147 (bvsgt ?e44 (zero_extend[3] ?e43)))
+(flet ($e148 (= ?e42 ?e45))
+(flet ($e149 (bvult ?e51 (zero_extend[3] ?e37)))
+(flet ($e150 (bvugt ?e31 ?e54))
+(flet ($e151 (bvsle ?e41 ?e22))
+(flet ($e152 (bvsge ?e20 ?e44))
+(flet ($e153 (bvsge (sign_extend[3] ?e50) ?e24))
+(flet ($e154 (distinct ?e45 ?e20))
+(flet ($e155 (= ?e29 (zero_extend[3] ?e30)))
+(flet ($e156 (bvslt ?e10 ?e44))
+(flet ($e157 (distinct ?e56 ?e30))
+(flet ($e158 (bvsle ?e17 ?e28))
+(flet ($e159 (bvuge ?e60 ?e44))
+(flet ($e160 (bvule ?e42 ?e24))
+(flet ($e161 (distinct ?e25 (sign_extend[3] ?e55)))
+(flet ($e162 (bvslt (sign_extend[3] ?e37) ?e21))
+(flet ($e163 (distinct ?e5 (sign_extend[3] ?e27)))
+(flet ($e164 (bvule ?e25 v1))
+(flet ($e165 (= v0 ?e60))
+(flet ($e166 (bvuge (sign_extend[3] ?e50) ?e26))
+(flet ($e167 (bvslt ?e58 ?e48))
+(flet ($e168 (bvsgt (sign_extend[3] ?e23) ?e42))
+(flet ($e169 (= ?e46 ?e34))
+(flet ($e170 (bvsgt ?e7 ?e20))
+(flet ($e171 (bvule ?e31 ?e12))
+(flet ($e172 (distinct ?e60 ?e18))
+(flet ($e173 (bvslt (sign_extend[3] ?e27) ?e40))
+(flet ($e174 (bvsge ?e42 ?e49))
+(flet ($e175 (bvugt ?e26 ?e11))
+(flet ($e176 (bvsgt ?e20 ?e35))
+(flet ($e177 (bvult ?e19 ?e19))
+(flet ($e178 (= ?e25 ?e10))
+(flet ($e179 (bvule (sign_extend[3] ?e23) ?e45))
+(flet ($e180 (bvslt v2 v3))
+(flet ($e181 (bvsgt ?e42 ?e42))
+(flet ($e182 (bvugt ?e58 ?e54))
+(flet ($e183 (bvsle ?e61 (zero_extend[3] ?e37)))
+(flet ($e184 (bvslt ?e60 (zero_extend[3] ?e57)))
+(flet ($e185 (distinct ?e21 (zero_extend[3] ?e27)))
+(flet ($e186 (bvule ?e58 v0))
+(flet ($e187 (= (sign_extend[3] ?e43) ?e13))
+(flet ($e188 (bvsge ?e52 (zero_extend[3] ?e50)))
+(flet ($e189 (bvsle ?e10 ?e51))
+(flet ($e190 (= ?e52 ?e29))
+(flet ($e191 (= ?e49 ?e25))
+(flet ($e192 (bvslt ?e60 ?e46))
+(flet ($e193 (bvugt ?e12 (zero_extend[2] ?e33)))
+(flet ($e194 (bvult ?e37 ?e28))
+(flet ($e195 (bvslt ?e20 (sign_extend[3] ?e30)))
+(flet ($e196 (bvult ?e8 ?e7))
+(flet ($e197 (bvsge ?e53 ?e37))
+(flet ($e198 (bvule ?e56 ?e50))
+(flet ($e199 (bvuge ?e11 ?e12))
+(flet ($e200 (bvsgt ?e24 ?e51))
+(flet ($e201 (bvsle (zero_extend[3] ?e59) ?e40))
+(flet ($e202 (bvule ?e21 ?e47))
+(flet ($e203 (bvsge ?e60 ?e11))
+(flet ($e204 (bvuge (zero_extend[3] ?e38) ?e29))
+(flet ($e205 (distinct ?e58 (sign_extend[3] ?e38)))
+(flet ($e206 (bvuge ?e11 (zero_extend[2] ?e33)))
+(flet ($e207 (bvult ?e42 ?e11))
+(flet ($e208 (distinct ?e10 ?e26))
+(flet ($e209 (bvult ?e5 ?e54))
+(flet ($e210 (bvsgt ?e21 v2))
+(flet ($e211 (bvsgt ?e49 ?e34))
+(flet ($e212 (bvuge ?e29 (zero_extend[3] ?e23)))
+(flet ($e213 (bvult ?e45 ?e35))
+(flet ($e214 (bvult ?e45 (sign_extend[3] ?e50)))
+(flet ($e215 (bvsle ?e19 ?e18))
+(flet ($e216 (= ?e9 ?e52))
+(flet ($e217 
+(and
+ (or (not $e88) $e135 $e139)
+ (or $e160 (not $e134) $e82)
+ (or (not $e215) $e85 (not $e71))
+ (or $e121 (not $e131) $e147)
+ (or $e101 (not $e188) (not $e174))
+ (or $e158 $e68 (not $e167))
+ (or $e90 $e63 $e138)
+ (or $e169 $e131 $e121)
+ (or $e185 (not $e109) (not $e169))
+ (or (not $e204) (not $e197) (not $e75))
+ (or (not $e209) (not $e165) (not $e94))
+ (or (not $e182) $e189 $e142)
+ (or $e160 (not $e202) (not $e172))
+ (or $e164 $e187 $e148)
+ (or $e155 (not $e166) $e118)
+ (or (not $e102) (not $e113) $e109)
+ (or (not $e160) (not $e196) (not $e213))
+ (or $e116 $e128 (not $e80))
+ (or (not $e111) (not $e163) (not $e159))
+ (or (not $e80) $e118 $e197)
+ (or (not $e149) (not $e121) $e72)
+ (or $e64 (not $e173) $e126)
+ (or (not $e140) (not $e189) $e95)
+ (or $e98 $e78 (not $e207))
+ (or (not $e115) $e117 $e123)
+ (or (not $e112) $e204 $e193)
+ (or (not $e158) $e190 (not $e103))
+ (or $e63 $e178 $e213)
+ (or $e134 (not $e215) $e101)
+ (or $e132 $e116 $e72)
+ (or (not $e63) (not $e174) $e161)
+ (or (not $e90) (not $e120) (not $e145))
+ (or (not $e147) (not $e201) (not $e195))
+ (or (not $e157) (not $e90) $e187)
+ (or $e205 (not $e164) $e104)
+ (or $e100 $e178 $e96)
+ (or (not $e62) (not $e134) $e152)
+ (or (not $e87) (not $e146) $e150)
+ (or $e80 (not $e183) $e147)
+ (or (not $e215) (not $e110) $e193)
+ (or $e182 (not $e152) (not $e164))
+ (or (not $e93) (not $e67) (not $e82))
+ (or (not $e95) (not $e172) $e115)
+ (or (not $e216) (not $e120) (not $e92))
+ (or (not $e82) (not $e80) $e164)
+ (or $e159 (not $e208) (not $e194))
+ (or $e159 (not $e134) (not $e185))
+ (or (not $e115) (not $e119) (not $e209))
+ (or $e200 $e126 (not $e127))
+ (or $e82 $e71 $e157)
+ (or (not $e75) (not $e163) (not $e117))
+ (or $e134 $e117 $e197)
+ (or $e64 $e80 (not $e171))
+ (or (not $e197) (not $e108) (not $e156))
+ (or $e124 (not $e171) (not $e183))
+ (or (not $e159) $e110 (not $e215))
+ (or $e195 $e203 $e79)
+ (or (not $e147) $e107 $e163)
+ (or $e67 $e170 (not $e215))
+ (or (not $e94) (not $e127) (not $e124))
+ (or (not $e125) (not $e192) $e87)
+ (or $e139 (not $e86) $e88)
+ (or (not $e164) (not $e76) (not $e116))
+ (or $e120 $e116 $e180)
+ (or (not $e165) (not $e175) $e76)
+ (or (not $e117) (not $e187) (not $e159))
+ (or $e122 (not $e69) (not $e127))
+ (or $e142 $e123 $e103)
+ (or (not $e178) (not $e155) $e73)
+ (or $e139 (not $e202) $e170)
+ (or $e103 $e205 (not $e136))
+ (or (not $e86) $e115 $e87)
+ (or (not $e205) (not $e173) $e65)
+ (or (not $e67) $e69 (not $e93))
+ (or (not $e98) $e159 $e121)
+ (or (not $e136) $e132 $e90)
+ (or (not $e105) (not $e103) $e212)
+))
+$e217
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz36.delta01.smt b/test/regress/regress0/bv/fuzz36.delta01.smt
new file mode 100644
index 0000000..65c88ad
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz36.delta01.smt
@@ -0,0 +1,47 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:extrafuns ((v3 BitVec[4]))
+:status sat
+:formula
+(flet ($n1 true)
+(flet ($n2 false)
+(let (?n3 (bvashr v2 v0))
+(flet ($n4 (distinct ?n3 v3))
+(let (?n5 bv1[4])
+(let (?n6 bv0[4])
+(flet ($n7 (= v2 ?n6))
+(let (?n8 bv1[1])
+(let (?n9 bv0[1])
+(let (?n10 (ite $n7 ?n8 ?n9))
+(let (?n11 (sign_extend[3] ?n10))
+(flet ($n12 (bvugt ?n5 ?n11))
+(flet ($n13 (or $n2 $n4 $n12))
+(flet ($n14 (bvslt v2 ?n3))
+(let (?n15 (bvnor ?n5 ?n6))
+(let (?n16 (bvmul v0 ?n15))
+(flet ($n17 (bvuge v3 ?n16))
+(let (?n18 (ite $n17 ?n8 ?n9))
+(let (?n19 (sign_extend[3] ?n18))
+(let (?n20 (bvnor v0 ?n19))
+(flet ($n21 (bvuge ?n20 ?n3))
+(let (?n22 bv13[4])
+(let (?n23 (bvadd v0 ?n22))
+(flet ($n24 (bvslt ?n3 ?n23))
+(flet ($n25 (bvsle v0 ?n5))
+(flet ($n26 (distinct ?n6 ?n16))
+(flet ($n27 (bvslt v0 ?n5))
+(let (?n28 (ite $n27 ?n8 ?n9))
+(let (?n29 (sign_extend[3] ?n28))
+(flet ($n30 (= ?n6 ?n29))
+(flet ($n31 (or $n2 $n26 $n30))
+(flet ($n32 (= v2 v0))
+(let (?n33 (ite $n32 ?n8 ?n9))
+(flet ($n34 (bvsgt ?n9 ?n33))
+(let (?n35 (bvshl ?n5 ?n29))
+(flet ($n36 (bvsle ?n6 ?n35))
+(flet ($n37 (or $n2 $n34 $n36))
+(flet ($n38 (and $n13 $n14 $n21 $n24 $n25 $n31 $n37))
+$n38
+)))))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/bv/fuzz36.smt b/test/regress/regress0/bv/fuzz36.smt
new file mode 100644
index 0000000..b128ef1
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz36.smt
@@ -0,0 +1,274 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status sat
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:extrafuns ((v3 BitVec[4]))
+:extrafuns ((v4 BitVec[4]))
+:formula
+(let (?e5 bv15[4])
+(let (?e6 bv11[4])
+(let (?e7 bv13[4])
+(let (?e8 bv11[4])
+(let (?e9 (bvshl v3 v3))
+(let (?e10 (bvmul ?e5 ?e5))
+(let (?e11 (ite (bvuge ?e9 v0) bv1[1] bv0[1]))
+(let (?e12 (bvnor v2 v2))
+(let (?e13 (ite (= bv1[1] (extract[2:2] v4)) v1 v4))
+(let (?e14 (bvashr ?e12 v0))
+(let (?e15 (bvnor v2 v0))
+(let (?e16 (bvnor v1 ?e10))
+(let (?e17 (ite (= (sign_extend[3] ?e11) v2) bv1[1] bv0[1]))
+(let (?e18 (ite (bvugt ?e7 ?e5) bv1[1] bv0[1]))
+(let (?e19 (bvxnor ?e7 v4))
+(let (?e20 (ite (bvule ?e9 v4) bv1[1] bv0[1]))
+(let (?e21 (bvashr ?e6 (sign_extend[3] ?e18)))
+(let (?e22 (bvxnor ?e7 ?e9))
+(let (?e23 (bvadd ?e16 v0))
+(let (?e24 (bvmul v0 ?e16))
+(let (?e25 (ite (bvsge v2 ?e24) bv1[1] bv0[1]))
+(let (?e26 (ite (bvslt ?e23 ?e15) bv1[1] bv0[1]))
+(let (?e27 (bvnot ?e15))
+(let (?e28 (ite (= bv1[1] (extract[0:0] v4)) ?e16 (sign_extend[3] ?e17)))
+(let (?e29 (ite (= (sign_extend[3] ?e25) ?e12) bv1[1] bv0[1]))
+(let (?e30 (bvadd ?e7 ?e23))
+(let (?e31 (ite (bvuge (sign_extend[3] ?e26) ?e5) bv1[1] bv0[1]))
+(let (?e32 (bvlshr v3 ?e27))
+(let (?e33 (bvnand ?e10 ?e19))
+(let (?e34 (sign_extend[1] ?e25))
+(let (?e35 (ite (= v2 v0) bv1[1] bv0[1]))
+(let (?e36 (zero_extend[0] ?e14))
+(let (?e37 (repeat[1] ?e28))
+(let (?e38 (ite (bvugt ?e17 ?e29) bv1[1] bv0[1]))
+(let (?e39 (ite (bvuge v3 ?e24) bv1[1] bv0[1]))
+(let (?e40 (ite (= ?e31 ?e17) bv1[1] bv0[1]))
+(let (?e41 (ite (distinct ?e10 (sign_extend[3] ?e39)) bv1[1] bv0[1]))
+(let (?e42 (zero_extend[0] ?e28))
+(let (?e43 (sign_extend[0] ?e36))
+(let (?e44 (ite (bvule ?e34 (sign_extend[1] ?e11)) bv1[1] bv0[1]))
+(let (?e45 (bvxnor ?e22 ?e28))
+(let (?e46 (bvashr (sign_extend[3] ?e38) ?e14))
+(let (?e47 (rotate_left[0] ?e17))
+(let (?e48 (ite (bvsle ?e46 ?e27) bv1[1] bv0[1]))
+(let (?e49 (bvadd ?e15 (zero_extend[3] ?e25)))
+(let (?e50 (bvmul ?e21 ?e24))
+(let (?e51 (bvadd (sign_extend[3] ?e26) ?e50))
+(let (?e52 (bvnor (sign_extend[3] ?e20) ?e43))
+(let (?e53 (bvmul v0 v3))
+(let (?e54 (bvnor v0 (sign_extend[3] ?e39)))
+(let (?e55 (bvor ?e46 ?e5))
+(let (?e56 (zero_extend[0] ?e50))
+(let (?e57 (repeat[1] ?e15))
+(let (?e58 (repeat[1] ?e5))
+(let (?e59 (bvxor ?e51 v3))
+(let (?e60 (bvcomp ?e58 ?e19))
+(let (?e61 (ite (bvugt ?e28 ?e56) bv1[1] bv0[1]))
+(let (?e62 (bvxnor ?e55 ?e53))
+(let (?e63 (ite (bvsle ?e46 ?e30) bv1[1] bv0[1]))
+(let (?e64 (ite (bvsle ?e51 ?e28) bv1[1] bv0[1]))
+(let (?e65 (bvshl ?e15 ?e59))
+(let (?e66 (ite (bvult ?e10 ?e42) bv1[1] bv0[1]))
+(let (?e67 (bvor ?e56 (zero_extend[3] ?e48)))
+(let (?e68 (ite (= ?e36 ?e8) bv1[1] bv0[1]))
+(flet ($e69 (bvsle ?e28 ?e13))
+(flet ($e70 (bvsgt ?e51 (sign_extend[3] ?e17)))
+(flet ($e71 (bvule (zero_extend[3] ?e66) ?e16))
+(flet ($e72 (distinct (sign_extend[3] ?e29) ?e10))
+(flet ($e73 (bvult ?e27 ?e62))
+(flet ($e74 (bvsgt ?e62 ?e33))
+(flet ($e75 (bvule ?e52 ?e67))
+(flet ($e76 (bvsle ?e46 ?e24))
+(flet ($e77 (bvsgt ?e64 ?e35))
+(flet ($e78 (bvuge ?e19 (zero_extend[3] ?e41)))
+(flet ($e79 (bvsge (sign_extend[3] ?e18) ?e33))
+(flet ($e80 (bvuge ?e32 (zero_extend[3] ?e25)))
+(flet ($e81 (bvslt ?e12 ?e36))
+(flet ($e82 (= v3 ?e42))
+(flet ($e83 (bvuge ?e54 ?e50))
+(flet ($e84 (bvuge ?e67 ?e27))
+(flet ($e85 (bvsge ?e37 (zero_extend[3] ?e26)))
+(flet ($e86 (bvsle ?e54 (zero_extend[3] ?e38)))
+(flet ($e87 (bvule (zero_extend[3] ?e40) ?e30))
+(flet ($e88 (bvuge ?e54 ?e36))
+(flet ($e89 (bvslt ?e10 ?e36))
+(flet ($e90 (bvsgt ?e44 ?e61))
+(flet ($e91 (distinct ?e59 ?e13))
+(flet ($e92 (bvsle ?e65 ?e21))
+(flet ($e93 (bvult v2 (zero_extend[3] ?e17)))
+(flet ($e94 (bvsge ?e51 v2))
+(flet ($e95 (bvslt ?e14 ?e30))
+(flet ($e96 (bvult (zero_extend[3] ?e38) ?e21))
+(flet ($e97 (bvugt ?e59 (zero_extend[3] ?e26)))
+(flet ($e98 (bvugt ?e13 (zero_extend[2] ?e34)))
+(flet ($e99 (= (zero_extend[3] ?e39) ?e7))
+(flet ($e100 (= (sign_extend[3] ?e20) ?e10))
+(flet ($e101 (bvsgt ?e13 ?e59))
+(flet ($e102 (bvult (sign_extend[3] ?e41) ?e59))
+(flet ($e103 (bvuge ?e52 ?e67))
+(flet ($e104 (bvuge ?e8 ?e59))
+(flet ($e105 (bvsgt ?e67 (zero_extend[3] ?e38)))
+(flet ($e106 (bvsle (zero_extend[3] ?e29) ?e28))
+(flet ($e107 (bvult ?e6 ?e24))
+(flet ($e108 (bvult ?e12 v1))
+(flet ($e109 (bvsle ?e7 ?e24))
+(flet ($e110 (bvule ?e38 ?e47))
+(flet ($e111 (bvugt (zero_extend[3] ?e60) ?e49))
+(flet ($e112 (bvult ?e19 ?e55))
+(flet ($e113 (bvuge ?e33 ?e55))
+(flet ($e114 (bvslt ?e39 ?e31))
+(flet ($e115 (distinct (zero_extend[3] ?e18) ?e56))
+(flet ($e116 (bvult ?e45 v1))
+(flet ($e117 (bvsgt ?e43 (sign_extend[3] ?e39)))
+(flet ($e118 (bvsge ?e64 ?e68))
+(flet ($e119 (bvsle v4 v1))
+(flet ($e120 (distinct ?e56 (zero_extend[3] ?e61)))
+(flet ($e121 (distinct ?e10 ?e7))
+(flet ($e122 (bvsgt (sign_extend[3] ?e17) ?e52))
+(flet ($e123 (bvsle ?e42 (zero_extend[3] ?e61)))
+(flet ($e124 (bvsle ?e5 ?e13))
+(flet ($e125 (bvule ?e38 ?e39))
+(flet ($e126 (bvugt ?e9 ?e53))
+(flet ($e127 (bvsgt ?e62 (sign_extend[3] ?e39)))
+(flet ($e128 (bvsge ?e27 ?e24))
+(flet ($e129 (bvuge (sign_extend[3] ?e48) ?e65))
+(flet ($e130 (distinct ?e46 (zero_extend[3] ?e17)))
+(flet ($e131 (bvsle (sign_extend[3] ?e47) ?e33))
+(flet ($e132 (bvslt ?e36 ?e67))
+(flet ($e133 (bvule v4 (sign_extend[3] ?e17)))
+(flet ($e134 (distinct ?e13 (zero_extend[3] ?e31)))
+(flet ($e135 (= ?e59 (sign_extend[3] ?e38)))
+(flet ($e136 (bvsle ?e27 ?e28))
+(flet ($e137 (bvsle v0 (sign_extend[3] ?e47)))
+(flet ($e138 (bvule ?e65 (zero_extend[3] ?e11)))
+(flet ($e139 (bvsgt ?e37 ?e16))
+(flet ($e140 (bvugt ?e25 ?e60))
+(flet ($e141 (bvuge ?e15 ?e7))
+(flet ($e142 (= ?e58 ?e52))
+(flet ($e143 (distinct ?e52 ?e23))
+(flet ($e144 (bvsgt ?e30 ?e54))
+(flet ($e145 (bvugt ?e6 ?e7))
+(flet ($e146 (bvugt ?e45 ?e37))
+(flet ($e147 (bvuge ?e62 ?e43))
+(flet ($e148 (bvult (zero_extend[3] ?e18) ?e42))
+(flet ($e149 (bvsgt ?e23 (zero_extend[3] ?e61)))
+(flet ($e150 (bvslt (sign_extend[3] ?e40) ?e15))
+(flet ($e151 (bvugt ?e28 (sign_extend[3] ?e11)))
+(flet ($e152 (bvugt ?e25 ?e66))
+(flet ($e153 (bvugt ?e28 ?e19))
+(flet ($e154 (= ?e52 (zero_extend[3] ?e47)))
+(flet ($e155 (bvuge ?e7 ?e16))
+(flet ($e156 (bvult (zero_extend[3] ?e17) ?e43))
+(flet ($e157 (bvsle (zero_extend[3] ?e60) ?e21))
+(flet ($e158 (= ?e16 ?e27))
+(flet ($e159 (bvsgt ?e12 (sign_extend[3] ?e35)))
+(flet ($e160 (distinct ?e42 ?e19))
+(flet ($e161 (bvult (zero_extend[3] ?e48) ?e14))
+(flet ($e162 (bvsle ?e7 (sign_extend[3] ?e41)))
+(flet ($e163 (bvuge ?e14 ?e13))
+(flet ($e164 (distinct ?e14 v3))
+(flet ($e165 (bvsle (zero_extend[3] ?e64) ?e65))
+(flet ($e166 (bvule ?e7 ?e58))
+(flet ($e167 (distinct ?e15 (sign_extend[3] ?e64)))
+(flet ($e168 (bvuge ?e42 ?e30))
+(flet ($e169 (bvule ?e8 v0))
+(flet ($e170 (bvsge ?e50 ?e62))
+(flet ($e171 (bvsgt v2 ?e58))
+(flet ($e172 (bvsge ?e40 ?e44))
+(flet ($e173 (bvsle ?e49 (sign_extend[3] ?e39)))
+(flet ($e174 (bvule (sign_extend[3] ?e44) v1))
+(flet ($e175 (bvugt ?e50 (zero_extend[3] ?e41)))
+(flet ($e176 (bvule ?e66 ?e20))
+(flet ($e177 (bvule ?e43 v3))
+(flet ($e178 (distinct (sign_extend[3] ?e39) ?e50))
+(flet ($e179 (bvslt ?e57 (zero_extend[3] ?e18)))
+(flet ($e180 (bvsle ?e59 ?e23))
+(flet ($e181 (bvule ?e13 ?e19))
+(flet ($e182 (bvuge (sign_extend[3] ?e60) ?e55))
+(flet ($e183 (bvult ?e56 ?e49))
+(flet ($e184 (bvult (zero_extend[3] ?e11) ?e14))
+(flet ($e185 (bvslt (zero_extend[3] ?e39) ?e52))
+(flet ($e186 (bvslt ?e53 (sign_extend[3] ?e41)))
+(flet ($e187 (bvule (zero_extend[3] ?e20) ?e33))
+(flet ($e188 (distinct (zero_extend[3] ?e26) ?e12))
+(flet ($e189 (bvult ?e8 v2))
+(flet ($e190 (bvslt ?e8 ?e22))
+(flet ($e191 (bvsge ?e9 ?e12))
+(flet ($e192 (distinct (sign_extend[3] ?e39) ?e27))
+(flet ($e193 (bvule ?e55 ?e15))
+(flet ($e194 (bvsle ?e53 ?e37))
+(flet ($e195 (bvule (sign_extend[3] ?e66) ?e14))
+(flet ($e196 (bvugt ?e53 ?e57))
+(flet ($e197 (bvsle v0 (zero_extend[3] ?e47)))
+(flet ($e198 (bvugt ?e23 (sign_extend[3] ?e63)))
+(flet ($e199 
+(and
+ (or $e103 $e102 (not $e168))
+ (or (not $e149) (not $e88) (not $e180))
+ (or (not $e126) $e179 (not $e114))
+ (or $e197 $e131 (not $e132))
+ (or (not $e143) (not $e107) $e156)
+ (or (not $e181) $e120 $e109)
+ (or $e135 (not $e78) $e163)
+ (or $e198 $e187 $e100)
+ (or (not $e128) (not $e138) $e192)
+ (or $e181 $e161 (not $e186))
+ (or $e153 $e167 $e182)
+ (or (not $e94) (not $e151) $e164)
+ (or $e104 (not $e72) $e157)
+ (or $e159 $e141 $e183)
+ (or $e191 $e147 (not $e79))
+ (or (not $e71) $e138 (not $e183))
+ (or (not $e184) $e184 $e143)
+ (or (not $e145) $e193 (not $e136))
+ (or (not $e196) $e160 $e91)
+ (or $e130 $e152 (not $e177))
+ (or $e174 (not $e95) (not $e111))
+ (or (not $e165) $e163 $e196)
+ (or $e69 (not $e183) (not $e187))
+ (or (not $e169) $e112 (not $e174))
+ (or $e109 $e76 (not $e141))
+ (or (not $e119) (not $e170) $e112)
+ (or (not $e172) (not $e122) (not $e108))
+ (or (not $e143) $e95 (not $e118))
+ (or (not $e156) (not $e172) $e97)
+ (or $e188 (not $e169) $e85)
+ (or (not $e115) (not $e135) $e158)
+ (or (not $e133) $e134 $e71)
+ (or $e129 (not $e102) (not $e124))
+ (or (not $e180) (not $e181) $e81)
+ (or (not $e161) (not $e82) (not $e102))
+ (or (not $e148) (not $e167) (not $e91))
+ (or (not $e161) (not $e90) $e104)
+ (or (not $e178) $e180 $e165)
+ (or (not $e151) (not $e81) (not $e81))
+ (or $e128 (not $e156) $e197)
+ (or (not $e125) (not $e123) $e125)
+ (or (not $e76) $e141 (not $e126))
+ (or (not $e122) (not $e94) $e139)
+ (or $e122 $e109 $e101)
+ (or $e104 (not $e170) (not $e92))
+ (or (not $e122) $e180 $e105)
+ (or $e169 $e78 (not $e114))
+ (or (not $e161) $e95 $e73)
+ (or (not $e93) (not $e144) (not $e169))
+ (or (not $e135) $e85 $e144)
+ (or $e121 $e197 $e189)
+ (or $e131 $e162 $e154)
+ (or $e163 $e84 $e135)
+ (or $e122 $e191 $e167)
+ (or (not $e105) (not $e90) $e71)
+ (or $e171 $e163 $e153)
+ (or (not $e141) (not $e164) (not $e146))
+ (or (not $e140) $e155 (not $e164))
+ (or (not $e118) (not $e135) $e78)
+ (or (not $e127) $e175 (not $e100))
+ (or $e196 $e81 (not $e116))
+ (or (not $e100) $e195 $e85)
+ (or (not $e159) (not $e112) (not $e168))
+ (or $e120 (not $e173) (not $e155))
+ (or $e198 (not $e77) $e165)
+))
+$e199
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz37.delta01.smt b/test/regress/regress0/bv/fuzz37.delta01.smt
new file mode 100644
index 0000000..0448941
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz37.delta01.smt
@@ -0,0 +1,17 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v1 BitVec[4]))
+:status sat
+:formula
+(let (?n1 bv1[4])
+(flet ($n2 (bvugt ?n1 v1))
+(let (?n3 bv1[1])
+(let (?n4 bv0[1])
+(let (?n5 (ite $n2 ?n3 ?n4))
+(let (?n6 (zero_extend[3] ?n5))
+(let (?n7 (bvmul v1 ?n6))
+(let (?n8 bv0[4])
+(let (?n9 (bvsub ?n8 ?n7))
+(flet ($n10 (= ?n7 ?n9))
+$n10
+)))))))))))
diff --git a/test/regress/regress0/bv/fuzz37.smt b/test/regress/regress0/bv/fuzz37.smt
new file mode 100644
index 0000000..98fdfda
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz37.smt
@@ -0,0 +1,122 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status sat
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:extrafuns ((v3 BitVec[4]))
+:extrafuns ((v4 BitVec[4]))
+:formula
+(let (?e5 bv2[4])
+(let (?e6 bv2[4])
+(let (?e7 (bvlshr v4 v3))
+(let (?e8 (ite (bvugt ?e5 v1) bv1[1] bv0[1]))
+(let (?e9 (bvor v3 v1))
+(let (?e10 (bvnot v4))
+(let (?e11 (bvsub v0 ?e6))
+(let (?e12 (bvnor ?e5 (zero_extend[3] ?e8)))
+(let (?e13 (bvmul ?e12 v1))
+(let (?e14 (ite (= ?e10 v3) bv1[1] bv0[1]))
+(let (?e15 (ite (bvult v0 ?e11) bv1[1] bv0[1]))
+(let (?e16 (bvashr ?e9 ?e5))
+(let (?e17 (bvnor v1 ?e11))
+(let (?e18 (bvcomp ?e17 ?e11))
+(let (?e19 (zero_extend[0] ?e13))
+(let (?e20 (bvsub v3 ?e19))
+(let (?e21 (bvshl v4 ?e10))
+(let (?e22 (ite (bvule ?e10 (sign_extend[3] ?e14)) bv1[1] bv0[1]))
+(let (?e23 (concat ?e15 ?e15))
+(let (?e24 (rotate_left[0] v1))
+(let (?e25 (bvshl ?e21 v1))
+(let (?e26 (bvnor ?e24 ?e7))
+(let (?e27 (bvand ?e11 v0))
+(let (?e28 (bvlshr ?e20 (zero_extend[3] ?e8)))
+(let (?e29 (bvcomp ?e10 v2))
+(flet ($e30 (bvuge (zero_extend[3] ?e14) v2))
+(flet ($e31 (bvult ?e17 ?e12))
+(flet ($e32 (distinct ?e16 ?e17))
+(flet ($e33 (bvuge (zero_extend[3] ?e18) ?e21))
+(flet ($e34 (= ?e20 ?e19))
+(flet ($e35 (bvuge ?e27 (sign_extend[3] ?e18)))
+(flet ($e36 (bvult ?e10 ?e27))
+(flet ($e37 (bvugt v3 v1))
+(flet ($e38 (bvuge ?e24 ?e17))
+(flet ($e39 (bvult v1 (sign_extend[2] ?e23)))
+(flet ($e40 (bvsle (sign_extend[3] ?e22) ?e5))
+(flet ($e41 (bvult ?e25 ?e5))
+(flet ($e42 (distinct ?e10 ?e16))
+(flet ($e43 (bvugt ?e24 (sign_extend[3] ?e22)))
+(flet ($e44 (bvuge (zero_extend[3] ?e8) ?e20))
+(flet ($e45 (bvsgt ?e6 ?e11))
+(flet ($e46 (bvslt v1 ?e26))
+(flet ($e47 (bvsgt v1 ?e16))
+(flet ($e48 (bvsgt ?e7 v3))
+(flet ($e49 (bvugt ?e16 ?e12))
+(flet ($e50 (bvule ?e14 ?e22))
+(flet ($e51 (bvsgt v3 ?e9))
+(flet ($e52 (bvugt ?e24 (zero_extend[3] ?e14)))
+(flet ($e53 (= v2 (zero_extend[3] ?e22)))
+(flet ($e54 (bvuge ?e5 (sign_extend[3] ?e29)))
+(flet ($e55 (bvsgt ?e13 ?e16))
+(flet ($e56 (bvsge ?e21 ?e6))
+(flet ($e57 (bvuge ?e11 v4))
+(flet ($e58 (bvslt ?e6 ?e28))
+(flet ($e59 (bvsle (sign_extend[3] ?e29) ?e27))
+(flet ($e60 (bvslt ?e20 ?e24))
+(flet ($e61 (bvsge (zero_extend[3] ?e14) ?e28))
+(flet ($e62 (bvsle ?e20 ?e13))
+(flet ($e63 (bvsge ?e25 ?e21))
+(flet ($e64 (distinct (sign_extend[3] ?e29) v4))
+(flet ($e65 (distinct (zero_extend[3] ?e29) ?e10))
+(flet ($e66 (bvsle (zero_extend[2] ?e23) ?e27))
+(flet ($e67 (bvsgt ?e17 v3))
+(flet ($e68 (bvule v1 (sign_extend[3] ?e18)))
+(flet ($e69 (bvule ?e25 ?e7))
+(flet ($e70 (bvuge v1 ?e28))
+(flet ($e71 (bvugt v2 ?e9))
+(flet ($e72 (distinct (zero_extend[3] ?e29) ?e6))
+(flet ($e73 (bvslt v1 ?e13))
+(flet ($e74 (bvuge (zero_extend[3] ?e14) ?e12))
+(flet ($e75 (bvult (zero_extend[3] ?e8) v4))
+(flet ($e76 (bvslt v0 ?e19))
+(flet ($e77 (bvule ?e29 ?e22))
+(flet ($e78 (distinct (sign_extend[3] ?e14) ?e16))
+(flet ($e79 (bvule ?e27 ?e20))
+(flet ($e80 (bvsgt v0 (zero_extend[2] ?e23)))
+(flet ($e81 (bvule ?e21 v2))
+(flet ($e82 (bvsge ?e28 v3))
+(flet ($e83 (distinct (sign_extend[3] ?e8) ?e13))
+(flet ($e84 (bvule (sign_extend[3] ?e15) v2))
+(flet ($e85 
+(and
+ (or $e32 $e81 (not $e60))
+ (or (not $e60) $e69 $e50)
+ (or (not $e53) (not $e67) $e51)
+ (or $e30 $e62 $e78)
+ (or $e37 $e65 (not $e81))
+ (or $e38 (not $e81) (not $e69))
+ (or $e80 (not $e84) $e36)
+ (or (not $e46) (not $e63) $e33)
+ (or (not $e78) (not $e61) (not $e84))
+ (or $e50 (not $e35) (not $e52))
+ (or (not $e32) (not $e77) (not $e63))
+ (or $e66 $e65 (not $e84))
+ (or $e72 (not $e53) $e42)
+ (or $e44 (not $e60) $e78)
+ (or (not $e61) (not $e34) $e53)
+ (or (not $e49) (not $e40) $e79)
+ (or $e81 $e42 (not $e44))
+ (or $e37 (not $e74) $e51)
+ (or (not $e47) (not $e57) $e72)
+ (or (not $e34) (not $e52) (not $e62))
+ (or $e58 (not $e56) $e72)
+ (or $e43 $e34 (not $e62))
+ (or (not $e50) (not $e75) (not $e42))
+ (or $e61 $e39 (not $e73))
+ (or $e34 (not $e50) $e78)
+ (or $e46 $e68 (not $e37))
+ (or $e79 (not $e78) (not $e31))
+))
+$e85
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz38.delta01.smt b/test/regress/regress0/bv/fuzz38.delta01.smt
new file mode 100644
index 0000000..969c2e8
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz38.delta01.smt
@@ -0,0 +1,20 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v1 BitVec[1]))
+:status unsat
+:formula
+(let (?n1 bv416[10])
+(let (?n2 (zero_extend[9] v1))
+(flet ($n3 (bvsgt ?n2 ?n2))
+(let (?n4 bv1[1])
+(let (?n5 bv0[1])
+(let (?n6 (ite $n3 ?n4 ?n5))
+(let (?n7 (zero_extend[9] ?n6))
+(let (?n8 (bvmul ?n1 ?n7))
+(let (?n9 (sign_extend[9] v1))
+(let (?n10 (bvmul ?n8 ?n9))
+(let (?n11 bv0[10])
+(flet ($n12 (= ?n10 ?n11))
+(flet ($n13 (not $n12))
+$n13
+))))))))))))))
diff --git a/test/regress/regress0/bv/fuzz39.delta01.smt b/test/regress/regress0/bv/fuzz39.delta01.smt
new file mode 100644
index 0000000..819815a
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz39.delta01.smt
@@ -0,0 +1,18 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v2 BitVec[14]))
+:status sat
+:formula
+(let (?n1 bv2692[12])
+(let (?n2 bv1[14])
+(flet ($n3 (bvugt ?n2 v2))
+(let (?n4 bv1[1])
+(let (?n5 bv0[1])
+(let (?n6 (ite $n3 ?n4 ?n5))
+(let (?n7 (sign_extend[11] ?n6))
+(let (?n8 (bvsub ?n1 ?n7))
+(let (?n9 (bvmul ?n1 ?n8))
+(let (?n10 bv1[12])
+(flet ($n11 (bvuge ?n9 ?n10))
+$n11
+))))))))))))
diff --git a/test/regress/regress0/bv/fuzz39.smt b/test/regress/regress0/bv/fuzz39.smt
new file mode 100644
index 0000000..bc75285
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz39.smt
@@ -0,0 +1,119 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status unsat
+:extrafuns ((v0 BitVec[3]))
+:extrafuns ((v1 BitVec[13]))
+:extrafuns ((v2 BitVec[14]))
+:extrafuns ((v3 BitVec[14]))
+:formula
+(let (?e4 bv2692[12])
+(let (?e5 (bvashr v1 (sign_extend[1] ?e4)))
+(let (?e6 (ite (bvugt (zero_extend[1] v1) v2) bv1[1] bv0[1]))
+(let (?e7 (ite (bvult v2 (zero_extend[1] ?e5)) bv1[1] bv0[1]))
+(let (?e8 (ite (distinct v3 (zero_extend[13] ?e7)) bv1[1] bv0[1]))
+(let (?e9 (bvsub ?e4 (sign_extend[11] ?e6)))
+(let (?e10 (ite (bvsle v2 (sign_extend[2] ?e9)) bv1[1] bv0[1]))
+(let (?e11 (bvmul ?e9 ?e4))
+(let (?e12 (bvneg ?e11))
+(let (?e13 (bvsdiv (zero_extend[1] ?e9) ?e5))
+(let (?e14 (bvsdiv (sign_extend[11] ?e8) ?e4))
+(let (?e15 (bvnor (zero_extend[2] ?e7) v0))
+(flet ($e16 (bvule (sign_extend[11] ?e10) ?e4))
+(flet ($e17 (bvuge (zero_extend[11] ?e8) ?e9))
+(flet ($e18 (bvugt (zero_extend[2] ?e6) v0))
+(flet ($e19 (bvsgt ?e15 ?e15))
+(flet ($e20 (bvsle v3 (zero_extend[2] ?e12)))
+(flet ($e21 (bvult ?e11 ?e14))
+(flet ($e22 (bvule (zero_extend[9] v0) ?e9))
+(flet ($e23 (bvult (zero_extend[11] v0) v3))
+(flet ($e24 (distinct (sign_extend[11] ?e6) ?e9))
+(flet ($e25 (bvult ?e12 ?e9))
+(flet ($e26 (= (sign_extend[2] ?e14) v2))
+(flet ($e27 (bvuge ?e12 ?e14))
+(flet ($e28 (bvsge ?e7 ?e8))
+(flet ($e29 (bvsle v3 (sign_extend[1] ?e13)))
+(flet ($e30 (bvsgt (zero_extend[2] ?e11) v2))
+(flet ($e31 (bvugt ?e7 ?e7))
+(flet ($e32 (bvsgt v1 v1))
+(flet ($e33 (bvslt (zero_extend[2] ?e12) v2))
+(flet ($e34 (bvuge ?e4 ?e4))
+(flet ($e35 (bvule (zero_extend[10] v0) ?e13))
+(flet ($e36 (bvugt ?e4 ?e9))
+(flet ($e37 (= ?e9 (zero_extend[11] ?e10)))
+(flet ($e38 (bvule ?e14 (zero_extend[9] ?e15)))
+(flet ($e39 (= v1 (sign_extend[10] v0)))
+(flet ($e40 (bvsle ?e12 ?e14))
+(flet ($e41 (= ?e4 (zero_extend[9] ?e15)))
+(flet ($e42 (bvuge ?e4 (sign_extend[11] ?e6)))
+(flet ($e43 (bvslt v1 (zero_extend[12] ?e10)))
+(flet ($e44 (bvsge ?e9 (zero_extend[11] ?e10)))
+(flet ($e45 (bvsge ?e11 (sign_extend[11] ?e6)))
+(flet ($e46 (bvuge ?e7 ?e7))
+(flet ($e47 (distinct v0 v0))
+(flet ($e48 (bvule v2 (zero_extend[13] ?e8)))
+(flet ($e49 (bvsgt ?e13 (sign_extend[12] ?e8)))
+(flet ($e50 (= ?e9 ?e4))
+(flet ($e51 (distinct (sign_extend[11] ?e7) ?e4))
+(flet ($e52 (= v0 (zero_extend[2] ?e10)))
+(flet ($e53 (distinct (zero_extend[12] ?e6) v1))
+(flet ($e54 (bvugt ?e4 ?e9))
+(flet ($e55 (bvslt ?e14 (sign_extend[11] ?e7)))
+(flet ($e56 (bvult ?e14 ?e4))
+(flet ($e57 (= (zero_extend[1] ?e13) v3))
+(flet ($e58 (bvsle ?e9 (zero_extend[11] ?e7)))
+(flet ($e59 (bvult (zero_extend[9] ?e15) ?e4))
+(flet ($e60 (bvult ?e5 (zero_extend[10] v0)))
+(flet ($e61 (and $e28 $e55))
+(flet ($e62 (or $e50 $e37))
+(flet ($e63 (xor $e49 $e23))
+(flet ($e64 (or $e21 $e45))
+(flet ($e65 (implies $e43 $e32))
+(flet ($e66 (implies $e44 $e54))
+(flet ($e67 (iff $e40 $e24))
+(flet ($e68 (if_then_else $e26 $e30 $e65))
+(flet ($e69 (not $e36))
+(flet ($e70 (if_then_else $e46 $e39 $e16))
+(flet ($e71 (iff $e25 $e33))
+(flet ($e72 (not $e62))
+(flet ($e73 (xor $e56 $e47))
+(flet ($e74 (or $e38 $e61))
+(flet ($e75 (if_then_else $e67 $e34 $e59))
+(flet ($e76 (if_then_else $e58 $e75 $e52))
+(flet ($e77 (or $e22 $e27))
+(flet ($e78 (xor $e64 $e64))
+(flet ($e79 (implies $e18 $e17))
+(flet ($e80 (implies $e29 $e42))
+(flet ($e81 (if_then_else $e70 $e76 $e73))
+(flet ($e82 (xor $e31 $e19))
+(flet ($e83 (and $e71 $e80))
+(flet ($e84 (not $e51))
+(flet ($e85 (if_then_else $e77 $e66 $e69))
+(flet ($e86 (or $e81 $e41))
+(flet ($e87 (or $e57 $e63))
+(flet ($e88 (not $e86))
+(flet ($e89 (xor $e82 $e83))
+(flet ($e90 (if_then_else $e74 $e68 $e84))
+(flet ($e91 (xor $e53 $e79))
+(flet ($e92 (implies $e91 $e78))
+(flet ($e93 (or $e89 $e60))
+(flet ($e94 (and $e93 $e48))
+(flet ($e95 (not $e35))
+(flet ($e96 (not $e20))
+(flet ($e97 (xor $e96 $e90))
+(flet ($e98 (xor $e85 $e92))
+(flet ($e99 (if_then_else $e72 $e97 $e95))
+(flet ($e100 (and $e87 $e88))
+(flet ($e101 (not $e98))
+(flet ($e102 (not $e100))
+(flet ($e103 (if_then_else $e101 $e101 $e94))
+(flet ($e104 (if_then_else $e103 $e103 $e103))
+(flet ($e105 (or $e102 $e99))
+(flet ($e106 (not $e105))
+(flet ($e107 (implies $e104 $e106))
+(flet ($e108 (and $e107 (not (= ?e5 bv0[13]))))
+(flet ($e109 (and $e108 (not (= ?e5 (bvnot bv0[13])))))
+(flet ($e110 (and $e109 (not (= ?e4 bv0[12]))))
+(flet ($e111 (and $e110 (not (= ?e4 (bvnot bv0[12])))))
+$e111
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz40.delta01.smt b/test/regress/regress0/bv/fuzz40.delta01.smt
new file mode 100644
index 0000000..3161c16
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz40.delta01.smt
@@ -0,0 +1,12 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:extrafuns ((v0 BitVec[4]))
+:status sat
+:formula
+(let (?n1 bv1[4])
+(let (?n2 (bvmul ?n1 v0))
+(let (?n3 (extract[3:0] ?n2))
+(let (?n4 bv0[4])
+(flet ($n5 (bvsge ?n3 ?n4))
+$n5
+))))))
diff --git a/test/regress/regress0/bv/fuzz40.smt b/test/regress/regress0/bv/fuzz40.smt
new file mode 100644
index 0000000..30f6f5a
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz40.smt
@@ -0,0 +1,85 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status unsat
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[10]))
+:extrafuns ((v2 BitVec[15]))
+:formula
+(let (?e3 bv1[3])
+(let (?e4 (ite (bvsgt (sign_extend[7] ?e3) v1) bv1[1] bv0[1]))
+(let (?e5 (bvmul (zero_extend[1] ?e3) v0))
+(let (?e6 (extract[3:0] ?e5))
+(let (?e7 (bvneg ?e3))
+(let (?e8 (bvudiv (zero_extend[6] v0) v1))
+(let (?e9 (extract[9:4] v1))
+(let (?e10 (bvor ?e8 (zero_extend[9] ?e4)))
+(let (?e11 (rotate_right[0] ?e4))
+(let (?e12 (bvxor ?e10 (zero_extend[7] ?e7)))
+(let (?e13 (bvneg ?e11))
+(let (?e14 (ite (bvsle (sign_extend[7] ?e7) v1) bv1[1] bv0[1]))
+(let (?e15 (bvand (zero_extend[11] ?e6) v2))
+(flet ($e16 (bvsgt ?e8 (zero_extend[6] v0)))
+(flet ($e17 (bvuge (zero_extend[12] ?e7) v2))
+(flet ($e18 (= v2 (sign_extend[14] ?e13)))
+(flet ($e19 (bvule (sign_extend[14] ?e13) ?e15))
+(flet ($e20 (bvule (sign_extend[6] ?e6) ?e12))
+(flet ($e21 (bvugt (sign_extend[9] ?e9) v2))
+(flet ($e22 (bvslt (sign_extend[6] ?e6) ?e8))
+(flet ($e23 (bvult v2 (zero_extend[11] v0)))
+(flet ($e24 (bvsgt ?e8 (sign_extend[9] ?e13)))
+(flet ($e25 (bvsgt (zero_extend[4] ?e9) ?e12))
+(flet ($e26 (bvugt (zero_extend[12] ?e7) ?e15))
+(flet ($e27 (bvslt v2 (zero_extend[14] ?e11)))
+(flet ($e28 (bvult (sign_extend[5] ?e13) ?e9))
+(flet ($e29 (= ?e8 (sign_extend[9] ?e11)))
+(flet ($e30 (bvult ?e15 ?e15))
+(flet ($e31 (bvult ?e15 (zero_extend[14] ?e4)))
+(flet ($e32 (bvsge (zero_extend[7] ?e7) v1))
+(flet ($e33 (bvuge (sign_extend[2] ?e6) ?e9))
+(flet ($e34 (bvslt (zero_extend[2] ?e14) ?e7))
+(flet ($e35 (bvsge ?e6 (zero_extend[3] ?e4)))
+(flet ($e36 (bvsgt ?e10 v1))
+(flet ($e37 (bvult ?e10 ?e10))
+(flet ($e38 (bvslt v2 (sign_extend[14] ?e11)))
+(flet ($e39 (bvule v0 (zero_extend[3] ?e14)))
+(flet ($e40 (bvult (sign_extend[9] ?e13) ?e10))
+(flet ($e41 (bvsgt v1 (sign_extend[7] ?e3)))
+(flet ($e42 (bvule ?e9 (sign_extend[2] ?e5)))
+(flet ($e43 (and $e17 $e39))
+(flet ($e44 (not $e43))
+(flet ($e45 (or $e23 $e44))
+(flet ($e46 (xor $e16 $e25))
+(flet ($e47 (if_then_else $e29 $e22 $e45))
+(flet ($e48 (if_then_else $e19 $e37 $e18))
+(flet ($e49 (implies $e46 $e35))
+(flet ($e50 (iff $e48 $e48))
+(flet ($e51 (iff $e28 $e24))
+(flet ($e52 (xor $e20 $e51))
+(flet ($e53 (xor $e47 $e42))
+(flet ($e54 (and $e32 $e41))
+(flet ($e55 (iff $e31 $e21))
+(flet ($e56 (and $e54 $e36))
+(flet ($e57 (and $e56 $e40))
+(flet ($e58 (xor $e57 $e34))
+(flet ($e59 (not $e58))
+(flet ($e60 (xor $e55 $e53))
+(flet ($e61 (not $e52))
+(flet ($e62 (and $e38 $e33))
+(flet ($e63 (implies $e50 $e49))
+(flet ($e64 (and $e59 $e61))
+(flet ($e65 (or $e26 $e60))
+(flet ($e66 (if_then_else $e62 $e65 $e64))
+(flet ($e67 (not $e30))
+(flet ($e68 (implies $e63 $e66))
+(flet ($e69 (xor $e27 $e68))
+(flet ($e70 (not $e67))
+(flet ($e71 (iff $e70 $e70))
+(flet ($e72 (xor $e71 $e71))
+(flet ($e73 (or $e72 $e72))
+(flet ($e74 (and $e69 $e69))
+(flet ($e75 (xor $e73 $e73))
+(flet ($e76 (and $e74 $e75))
+(flet ($e77 (and $e76 (not (= v1 bv0[10]))))
+$e77
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/fuzz41.smt b/test/regress/regress0/bv/fuzz41.smt
new file mode 100644
index 0000000..7f45db1
--- /dev/null
+++ b/test/regress/regress0/bv/fuzz41.smt
@@ -0,0 +1,212 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status sat
+:extrafuns ((v0 BitVec[15]))
+:extrafuns ((v1 BitVec[7]))
+:extrafuns ((v2 BitVec[13]))
+:extrafuns ((v3 BitVec[8]))
+:extrafuns ((v4 BitVec[9]))
+:formula
+(let (?e5 bv452[11])
+(let (?e6 (bvmul (zero_extend[3] v3) ?e5))
+(let (?e7 (bvsdiv (zero_extend[2] ?e5) v2))
+(let (?e8 (ite (bvslt ?e6 (sign_extend[2] v4)) bv1[1] bv0[1]))
+(let (?e9 (repeat[1] v3))
+(let (?e10 (ite (bvsgt (sign_extend[7] ?e8) v3) bv1[1] bv0[1]))
+(let (?e11 (bvurem (sign_extend[10] ?e8) ?e6))
+(let (?e12 (bvnand (zero_extend[8] ?e8) v4))
+(let (?e13 (bvnor (sign_extend[2] ?e11) ?e7))
+(let (?e14 (rotate_left[1] ?e5))
+(let (?e15 (bvmul ?e6 ?e5))
+(let (?e16 (bvsmod (sign_extend[2] ?e12) ?e5))
+(let (?e17 (bvashr (zero_extend[14] ?e8) v0))
+(let (?e18 (bvneg v4))
+(let (?e19 (extract[3:1] ?e17))
+(let (?e20 (bvand v0 ?e17))
+(let (?e21 (bvsdiv (sign_extend[4] ?e15) ?e17))
+(let (?e22 (ite (= ?e13 (zero_extend[4] ?e12)) bv1[1] bv0[1]))
+(let (?e23 (ite (= bv1[1] (extract[2:2] ?e15)) (sign_extend[7] ?e10) ?e9))
+(let (?e24 (ite (bvuge (sign_extend[10] ?e8) ?e6) bv1[1] bv0[1]))
+(let (?e25 (bvurem (sign_extend[8] ?e24) ?e18))
+(let (?e26 (extract[0:0] v4))
+(let (?e27 (bvxnor (zero_extend[2] ?e5) v2))
+(let (?e28 (rotate_left[2] ?e16))
+(let (?e29 (bvudiv (zero_extend[2] ?e18) ?e16))
+(let (?e30 (sign_extend[0] ?e21))
+(let (?e31 (bvadd v0 v0))
+(let (?e32 (bvxnor (zero_extend[7] ?e10) ?e23))
+(let (?e33 (bvadd (sign_extend[2] ?e18) ?e15))
+(let (?e34 (bvxor ?e20 (zero_extend[2] ?e13)))
+(let (?e35 (bvneg ?e11))
+(let (?e36 (ite (= (zero_extend[6] ?e8) v1) bv1[1] bv0[1]))
+(flet ($e37 (= (zero_extend[8] ?e22) ?e25))
+(flet ($e38 (bvsgt ?e30 (sign_extend[7] ?e23)))
+(flet ($e39 (distinct ?e16 (sign_extend[10] ?e36)))
+(flet ($e40 (bvult ?e6 (sign_extend[3] ?e9)))
+(flet ($e41 (bvsge v2 ?e13))
+(flet ($e42 (bvult v2 (sign_extend[12] ?e8)))
+(flet ($e43 (bvsle (sign_extend[12] ?e10) ?e27))
+(flet ($e44 (bvsgt (sign_extend[14] ?e26) ?e30))
+(flet ($e45 (bvuge ?e17 (zero_extend[4] ?e15)))
+(flet ($e46 (bvslt ?e29 (zero_extend[3] v3)))
+(flet ($e47 (= ?e10 ?e22))
+(flet ($e48 (bvsge (zero_extend[4] v1) ?e35))
+(flet ($e49 (= ?e26 ?e10))
+(flet ($e50 (bvuge ?e30 (zero_extend[14] ?e26)))
+(flet ($e51 (distinct (zero_extend[1] v3) v4))
+(flet ($e52 (bvugt (sign_extend[3] ?e23) ?e15))
+(flet ($e53 (bvsge v0 (sign_extend[14] ?e26)))
+(flet ($e54 (bvsgt ?e20 (zero_extend[6] ?e25)))
+(flet ($e55 (bvuge (zero_extend[2] ?e33) v2))
+(flet ($e56 (bvsgt ?e33 (zero_extend[2] ?e25)))
+(flet ($e57 (bvult ?e23 ?e9))
+(flet ($e58 (bvugt ?e9 ?e32))
+(flet ($e59 (bvsgt ?e17 (sign_extend[6] ?e25)))
+(flet ($e60 (bvult ?e29 (sign_extend[3] v3)))
+(flet ($e61 (bvult (sign_extend[14] ?e8) ?e17))
+(flet ($e62 (bvult (zero_extend[7] ?e9) v0))
+(flet ($e63 (distinct ?e16 ?e16))
+(flet ($e64 (bvslt ?e35 (sign_extend[3] ?e23)))
+(flet ($e65 (bvslt ?e33 ?e33))
+(flet ($e66 (distinct ?e17 (sign_extend[2] v2)))
+(flet ($e67 (= (sign_extend[2] ?e25) ?e14))
+(flet ($e68 (distinct ?e29 ?e16))
+(flet ($e69 (bvuge ?e35 (zero_extend[10] ?e26)))
+(flet ($e70 (bvugt (zero_extend[4] ?e11) ?e30))
+(flet ($e71 (bvugt v4 (zero_extend[8] ?e36)))
+(flet ($e72 (bvule v0 (sign_extend[6] ?e25)))
+(flet ($e73 (distinct (sign_extend[3] v3) ?e16))
+(flet ($e74 (= v2 ?e7))
+(flet ($e75 (distinct (zero_extend[2] ?e15) ?e27))
+(flet ($e76 (bvsge ?e21 (zero_extend[12] ?e19)))
+(flet ($e77 (bvsgt ?e7 (sign_extend[10] ?e19)))
+(flet ($e78 (bvugt ?e13 (sign_extend[2] ?e5)))
+(flet ($e79 (= (sign_extend[10] ?e26) ?e6))
+(flet ($e80 (bvule ?e7 (sign_extend[12] ?e24)))
+(flet ($e81 (bvsge (sign_extend[14] ?e26) ?e20))
+(flet ($e82 (= (sign_extend[4] ?e35) ?e34))
+(flet ($e83 (bvsle (sign_extend[2] v1) ?e18))
+(flet ($e84 (= ?e21 (sign_extend[12] ?e19)))
+(flet ($e85 (= ?e22 ?e22))
+(flet ($e86 (bvslt (zero_extend[10] ?e24) ?e6))
+(flet ($e87 (bvslt ?e12 (zero_extend[1] ?e23)))
+(flet ($e88 (bvsgt (sign_extend[10] ?e24) ?e5))
+(flet ($e89 (bvugt (sign_extend[3] v3) ?e6))
+(flet ($e90 (bvslt ?e20 (sign_extend[4] ?e11)))
+(flet ($e91 (= (zero_extend[14] ?e36) ?e30))
+(flet ($e92 (bvult ?e27 (zero_extend[12] ?e26)))
+(flet ($e93 (bvuge (sign_extend[2] ?e26) ?e19))
+(flet ($e94 (bvsge (sign_extend[3] v3) ?e33))
+(flet ($e95 (bvugt (zero_extend[2] ?e18) ?e16))
+(flet ($e96 (bvule v4 (sign_extend[8] ?e10)))
+(flet ($e97 (= v1 (sign_extend[6] ?e24)))
+(flet ($e98 (bvugt (zero_extend[5] ?e9) ?e7))
+(flet ($e99 (bvule (sign_extend[7] ?e9) ?e20))
+(flet ($e100 (bvule (zero_extend[2] v2) ?e21))
+(flet ($e101 (bvslt v0 (sign_extend[2] ?e13)))
+(flet ($e102 (bvsge ?e20 (sign_extend[4] ?e33)))
+(flet ($e103 (bvuge ?e35 (zero_extend[2] ?e12)))
+(flet ($e104 (= ?e33 ?e35))
+(flet ($e105 (bvslt ?e17 (sign_extend[2] ?e7)))
+(flet ($e106 (bvsgt (sign_extend[12] ?e19) v0))
+(flet ($e107 (bvslt ?e15 ?e28))
+(flet ($e108 (bvsgt (zero_extend[3] ?e32) ?e35))
+(flet ($e109 (bvsge ?e6 (zero_extend[2] ?e12)))
+(flet ($e110 (bvugt ?e36 ?e36))
+(flet ($e111 (bvugt ?e15 ?e11))
+(flet ($e112 (bvule (sign_extend[6] v4) ?e30))
+(flet ($e113 (bvult ?e25 v4))
+(flet ($e114 (bvult ?e29 ?e15))
+(flet ($e115 (bvsge ?e21 (sign_extend[14] ?e26)))
+(flet ($e116 (bvule v0 ?e31))
+(flet ($e117 (iff $e86 $e92))
+(flet ($e118 (if_then_else $e114 $e61 $e100))
+(flet ($e119 (and $e63 $e115))
+(flet ($e120 (if_then_else $e53 $e82 $e79))
+(flet ($e121 (if_then_else $e80 $e90 $e38))
+(flet ($e122 (iff $e120 $e121))
+(flet ($e123 (and $e73 $e108))
+(flet ($e124 (xor $e40 $e93))
+(flet ($e125 (or $e78 $e41))
+(flet ($e126 (or $e85 $e87))
+(flet ($e127 (iff $e112 $e51))
+(flet ($e128 (xor $e58 $e70))
+(flet ($e129 (and $e74 $e83))
+(flet ($e130 (xor $e84 $e103))
+(flet ($e131 (or $e75 $e104))
+(flet ($e132 (or $e72 $e94))
+(flet ($e133 (iff $e89 $e46))
+(flet ($e134 (implies $e50 $e55))
+(flet ($e135 (not $e110))
+(flet ($e136 (xor $e44 $e113))
+(flet ($e137 (not $e62))
+(flet ($e138 (not $e69))
+(flet ($e139 (xor $e43 $e118))
+(flet ($e140 (and $e88 $e117))
+(flet ($e141 (and $e71 $e105))
+(flet ($e142 (not $e123))
+(flet ($e143 (not $e48))
+(flet ($e144 (and $e130 $e101))
+(flet ($e145 (implies $e47 $e37))
+(flet ($e146 (xor $e45 $e126))
+(flet ($e147 (iff $e42 $e145))
+(flet ($e148 (if_then_else $e57 $e96 $e135))
+(flet ($e149 (if_then_else $e68 $e122 $e52))
+(flet ($e150 (xor $e95 $e129))
+(flet ($e151 (and $e149 $e67))
+(flet ($e152 (not $e146))
+(flet ($e153 (or $e125 $e128))
+(flet ($e154 (and $e107 $e131))
+(flet ($e155 (or $e150 $e99))
+(flet ($e156 (implies $e152 $e119))
+(flet ($e157 (implies $e133 $e65))
+(flet ($e158 (if_then_else $e106 $e60 $e102))
+(flet ($e159 (if_then_else $e154 $e66 $e143))
+(flet ($e160 (iff $e109 $e116))
+(flet ($e161 (not $e153))
+(flet ($e162 (and $e54 $e39))
+(flet ($e163 (not $e77))
+(flet ($e164 (xor $e132 $e148))
+(flet ($e165 (iff $e111 $e59))
+(flet ($e166 (iff $e124 $e49))
+(flet ($e167 (or $e163 $e158))
+(flet ($e168 (if_then_else $e64 $e136 $e56))
+(flet ($e169 (iff $e76 $e98))
+(flet ($e170 (if_then_else $e151 $e97 $e134))
+(flet ($e171 (iff $e162 $e147))
+(flet ($e172 (if_then_else $e140 $e81 $e166))
+(flet ($e173 (if_then_else $e157 $e160 $e142))
+(flet ($e174 (iff $e171 $e137))
+(flet ($e175 (and $e156 $e167))
+(flet ($e176 (if_then_else $e175 $e138 $e173))
+(flet ($e177 (or $e174 $e127))
+(flet ($e178 (not $e172))
+(flet ($e179 (not $e155))
+(flet ($e180 (and $e168 $e169))
+(flet ($e181 (not $e178))
+(flet ($e182 (iff $e181 $e159))
+(flet ($e183 (iff $e91 $e177))
+(flet ($e184 (if_then_else $e144 $e179 $e182))
+(flet ($e185 (not $e176))
+(flet ($e186 (xor $e139 $e139))
+(flet ($e187 (implies $e161 $e186))
+(flet ($e188 (if_then_else $e165 $e164 $e183))
+(flet ($e189 (or $e141 $e170))
+(flet ($e190 (xor $e184 $e180))
+(flet ($e191 (and $e189 $e188))
+(flet ($e192 (and $e187 $e191))
+(flet ($e193 (or $e190 $e192))
+(flet ($e194 (xor $e193 $e193))
+(flet ($e195 (xor $e185 $e194))
+(flet ($e196 (and $e195 (not (= ?e16 bv0[11]))))
+(flet ($e197 (and $e196 (not (= v2 bv0[13]))))
+(flet ($e198 (and $e197 (not (= v2 (bvnot bv0[13])))))
+(flet ($e199 (and $e198 (not (= ?e18 bv0[9]))))
+(flet ($e200 (and $e199 (not (= ?e5 bv0[11]))))
+(flet ($e201 (and $e200 (not (= ?e5 (bvnot bv0[11])))))
+(flet ($e202 (and $e201 (not (= ?e6 bv0[11]))))
+(flet ($e203 (and $e202 (not (= ?e17 bv0[15]))))
+(flet ($e204 (and $e203 (not (= ?e17 (bvnot bv0[15])))))
+$e204
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/bv/sizecheck.cvc b/test/regress/regress0/bv/sizecheck.cvc
new file mode 100644
index 0000000..3f84490
--- /dev/null
+++ b/test/regress/regress0/bv/sizecheck.cvc
@@ -0,0 +1,6 @@
+x : BITVECTOR(10);
+y : BITVECTOR(12);
+
+ASSERT (0bin0001000000000000 = BVPLUS(16, x, y));
+CHECKSAT;
+% EXPECT: sat
diff --git a/test/regress/regress0/bv/smtcompbug.smt b/test/regress/regress0/bv/smtcompbug.smt
new file mode 100644
index 0000000..7efe301
--- /dev/null
+++ b/test/regress/regress0/bv/smtcompbug.smt
@@ -0,0 +1,13 @@
+(benchmark B_
+  :status sat
+  :category { unknown }
+  :logic QF_BV
+  :extrafuns ((x781 BitVec[32]))
+  :extrafuns ((x803 BitVec[8]))
+  :extrafuns ((x804 BitVec[8]))
+  :extrafuns ((x791 BitVec[8]))
+  :formula (and
+(= x804 (bvxor (bvxor (extract[7:0] (bvadd bv1[32] x781)) x791) x803))
+(= (bvnot (extract[0:0] x804)) bv0[1])
+(= x781 bv0[32]))
+)
diff --git a/test/regress/regress0/bv/test00.smt b/test/regress/regress0/bv/test00.smt
new file mode 100644
index 0000000..20fe681
--- /dev/null
+++ b/test/regress/regress0/bv/test00.smt
@@ -0,0 +1,49 @@
+(benchmark umulov1bw016.smt
+:source {
+We verify the correctness of an unsigned multiplication
+overflow detection unit, which is described in
+"Combined Unsigned and Two's Complement Saturating Multipliers"
+by M. Schulte et al.
+
+Bit-width: 4
+
+Contributed by Robert Brummayer (robert.brummayer at gmail.com).
+}
+:status unsat
+:category { industrial }
+:logic QF_BV
+:difficulty { 0 }
+:extrafuns ((v1 BitVec[4]))
+:extrafuns ((v2 BitVec[4]))
+:formula
+(let (?e3 bv0[4])
+(let (?e4 (concat ?e3 v1))
+(let (?e5 (concat ?e3 v2))
+(let (?e6 (bvmul ?e4 ?e5))
+(let (?e7 (extract[7:4] ?e6))
+(let (?e8 (ite (= ?e7 ?e3) bv1[1] bv0[1]))
+
+(let (?e32 (extract[3:3] v2))
+(let (?e34 (extract[2:2] v2))
+(let (?e35 (bvand (bvnot ?e32) (bvnot ?e34)))
+(let (?e36 (extract[1:1] v2))
+(let (?e37 (bvand ?e35 (bvnot ?e36)))
+(let (?e38 (extract[1:1] v1))
+
+(let (?e39 (bvand ?e38 ?e32))
+(let (?e40 (extract[2:2] v1))
+(let (?e41 (bvand ?e40 (bvnot ?e35)))
+(let (?e42 (bvand (bvnot ?e39) (bvnot ?e41)))
+(let (?e43 (extract[3:3] v1))
+(let (?e44 (bvand ?e43 (bvnot ?e37)))
+(let (?e45 (bvand ?e42 (bvnot ?e44)))
+
+(let (?e82 bv0[1])
+(let (?e83 (concat ?e82 v1))
+(let (?e84 (concat ?e82 v2))
+(let (?e85 (bvmul ?e83 ?e84))
+(let (?e86 (extract[4:4] ?e85))
+(let (?e87 (bvand ?e45 (bvnot ?e86)))
+(let (?e88 (ite (= (bvnot ?e8) (bvnot ?e87)) bv1[1] bv0[1]))
+(not (= (bvnot ?e88) bv0[1]))
+)))))))))))))))))))))))))))
diff --git a/test/regress/regress0/bv/unsound1-reduced.smt2 b/test/regress/regress0/bv/unsound1-reduced.smt2
new file mode 100644
index 0000000..9485816
--- /dev/null
+++ b/test/regress/regress0/bv/unsound1-reduced.smt2
@@ -0,0 +1,11 @@
+(set-logic QF_BV)
+(set-info :status sat)
+(declare-fun v0 () (_ BitVec 2))
+(assert
+	(xor
+		(bvslt (_ bv0 5)
+		       (bvlshr (bvadd (_ bv5 5) ((_ sign_extend 3) v0)) ((_ sign_extend 3) v0)))
+	     	 (bvult (_ bv5 5)
+	     	        (bvlshr (bvadd (_ bv5 5) ((_ sign_extend 3) v0)) ((_ sign_extend 3) v0)))))
+(check-sat)
+
diff --git a/test/regress/regress0/bv/unsound1.smt2 b/test/regress/regress0/bv/unsound1.smt2
new file mode 100644
index 0000000..60e7645
--- /dev/null
+++ b/test/regress/regress0/bv/unsound1.smt2
@@ -0,0 +1,23 @@
+(set-logic QF_BV)
+(set-info :status sat)
+(declare-fun v0 () (_ BitVec 4))
+(assert (let ((e1(_ bv0 1)))
+(let ((e2(_ bv11134 16)))
+(let ((e3 (bvadd e2 ((_ sign_extend 12) v0))))
+(let ((e4 (ite (= e2 ((_ sign_extend 12) v0)) (_ bv1 1) (_ bv0 1))))
+(let ((e5 (bvlshr e3 ((_ sign_extend 12) v0))))
+(let ((e6 (bvxnor e2 ((_ zero_extend 12) v0))))
+(let ((e7 (ite (bvult ((_ sign_extend 15) e1) e2) (_ bv1 1) (_ bv0 1))))
+(let ((e8 (bvugt e7 e1)))
+(let ((e9 (bvule ((_ sign_extend 3) e7) v0)))
+(let ((e10 (bvsgt e5 ((_ zero_extend 12) v0))))
+(let ((e11 (= e6 e3)))
+(let ((e12 (bvslt ((_ zero_extend 15) e4) e5)))
+(let ((e13 (bvugt e5 e2)))
+(let ((e14 (ite e10 e8 e10)))
+(let ((e15 (xor e13 e11)))
+(let ((e16 (xor e14 e15)))
+(let ((e17 (ite e9 e12 e16)))
+e17
+))))))))))))))))))
+(check-sat)
diff --git a/test/regress/regress0/chained-equality.smt2 b/test/regress/regress0/chained-equality.smt2
new file mode 100644
index 0000000..fb3a25b
--- /dev/null
+++ b/test/regress/regress0/chained-equality.smt2
@@ -0,0 +1,10 @@
+(set-option :produce-models true)
+(set-info :status unsat)
+(set-logic QF_UF)
+(declare-fun x () Bool)
+(declare-fun y () Bool)
+(declare-fun z () Bool)
+(assert (= x y z))
+(assert (not x))
+(assert z)
+(check-sat)
diff --git a/test/regress/regress0/constant-rewrite.smt b/test/regress/regress0/constant-rewrite.smt
new file mode 100644
index 0000000..b70b53b
--- /dev/null
+++ b/test/regress/regress0/constant-rewrite.smt
@@ -0,0 +1,12 @@
+(benchmark ConstantRewrite
+:logic QF_LRA
+:status sat
+:extrafuns ((v0 Real))
+:formula
+(and
+ (not (<= v0 0))
+ (not (iff (= v0 0)
+           (= v0 (/ 1 2))))
+ )
+)
+
diff --git a/test/regress/regress0/cvc3.userdoc.01.cvc b/test/regress/regress0/cvc3.userdoc.01.cvc
new file mode 100644
index 0000000..7c89de4
--- /dev/null
+++ b/test/regress/regress0/cvc3.userdoc.01.cvc
@@ -0,0 +1,31 @@
+% COMMAND-LINE: --incremental
+
+% EXPECT: valid
+QUERY 0bin0000111101010000  = 0hex0f50;
+
+% EXPECT: valid
+QUERY 0bin01 at 0bin0          = 0bin010;
+
+% EXPECT: valid
+QUERY 0bin0011[3:1]         = 0bin001;
+
+% EXPECT: valid
+QUERY 0bin0011 << 3         = 0bin0011000;
+
+% EXPECT: valid
+QUERY 0bin1000 >> 3         = 0bin0001;
+
+% EXPECT: valid
+QUERY SX(0bin100, 5)        = 0bin11100;
+
+% EXPECT: valid
+QUERY BVZEROEXTEND(0bin1,3) = 0bin0001;
+
+% EXPECT: valid
+QUERY BVREPEAT(0bin10,3)    = 0bin101010;
+
+% EXPECT: valid
+QUERY BVROTL(0bin101,1)     = 0bin011;
+
+% EXPECT: valid
+QUERY BVROTR(0bin101,1)     = 0bin110;
diff --git a/test/regress/regress0/cvc3.userdoc.02.cvc b/test/regress/regress0/cvc3.userdoc.02.cvc
new file mode 100644
index 0000000..b6329e9
--- /dev/null
+++ b/test/regress/regress0/cvc3.userdoc.02.cvc
@@ -0,0 +1,7 @@
+x : BITVECTOR(5);
+y : BITVECTOR(4);
+yy : BITVECTOR(3);
+
+% EXPECT: valid
+QUERY
+ BVPLUS(9, x at 0bin0000, (0bin000@(~y)@0bin11))[8:4] = BVPLUS(5, x, ~(y[3:2])) ;
diff --git a/test/regress/regress0/cvc3.userdoc.03.cvc b/test/regress/regress0/cvc3.userdoc.03.cvc
new file mode 100644
index 0000000..4fc6a5f
--- /dev/null
+++ b/test/regress/regress0/cvc3.userdoc.03.cvc
@@ -0,0 +1,8 @@
+bv : BITVECTOR(10);
+a : BOOLEAN;
+
+% EXPECT: valid
+QUERY
+ 0bin01100000[5:3]=(0bin1111001 at bv[0:0])[4:2]
+ AND
+ 0bin1@(IF a THEN 0bin0 ELSE 0bin1 ENDIF) = (IF a THEN 0bin110 ELSE 0bin011 ENDIF)[1:0] ;
diff --git a/test/regress/regress0/cvc3.userdoc.04.cvc b/test/regress/regress0/cvc3.userdoc.04.cvc
new file mode 100644
index 0000000..824690b
--- /dev/null
+++ b/test/regress/regress0/cvc3.userdoc.04.cvc
@@ -0,0 +1,9 @@
+x, y, z, t, q : BITVECTOR(1024);
+
+ASSERT x = ~x;
+ASSERT x&y&t&z&q = x;
+ASSERT x|y = t;
+ASSERT BVXOR(x,~x) = t;
+
+% EXPECT: valid
+QUERY  FALSE;
diff --git a/test/regress/regress0/cvc3.userdoc.05.cvc b/test/regress/regress0/cvc3.userdoc.05.cvc
new file mode 100644
index 0000000..37da96b
--- /dev/null
+++ b/test/regress/regress0/cvc3.userdoc.05.cvc
@@ -0,0 +1,14 @@
+x, y : BITVECTOR(4);
+
+ASSERT x = 0hex5;
+ASSERT y = 0bin0101;
+
+% EXPECT: valid
+QUERY
+ BVMULT(8,x,y)=BVMULT(8,y,x)
+ AND
+ NOT(BVLT(x,y))
+ AND
+ BVLE(BVSUB(8,x,y), BVPLUS(8, x, BVUMINUS(x)))
+ AND
+ x = BVSUB(4, BVUMINUS(x), BVPLUS(4, x,0hex1)) ;
diff --git a/test/regress/regress0/cvc3.userdoc.06.cvc b/test/regress/regress0/cvc3.userdoc.06.cvc
new file mode 100644
index 0000000..3801b6d
--- /dev/null
+++ b/test/regress/regress0/cvc3.userdoc.06.cvc
@@ -0,0 +1,13 @@
+% COMMAND-LINE: --incremental
+
+x, y : BITVECTOR(8);
+z, t : BITVECTOR(12);
+
+ASSERT x = 0hexff;
+ASSERT z = 0hexff0;
+
+% EXPECT: valid
+QUERY  z = x << 4;
+
+% EXPECT: valid
+QUERY (z >> 4)[7:0] = x;
diff --git a/test/regress/regress0/datatypes/Makefile.am b/test/regress/regress0/datatypes/Makefile.am
new file mode 100644
index 0000000..fed6592
--- /dev/null
+++ b/test/regress/regress0/datatypes/Makefile.am
@@ -0,0 +1,103 @@
+SUBDIRS = .
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	tuple.cvc \
+	tuple-model.cvc \
+	tuple-record-bug.cvc \
+	rec1.cvc \
+	rec2.cvc \
+	rec4.cvc \
+	rec5.cvc \
+	datatype.cvc \
+	datatype0.cvc \
+	datatype1.cvc \
+	datatype2.cvc \
+	datatype4.cvc \
+	datatype13.cvc \
+	empty_tuprec.cvc \
+	mutually-recursive.cvc \
+	pair-real-bool.smt2 \
+	pair-bool-bool.cvc \
+	rewriter.cvc \
+	typed_v10l30054.cvc \
+	typed_v1l80005.cvc \
+	typed_v2l30079.cvc \
+	typed_v3l20092.cvc \
+	typed_v5l30069.cvc \
+	boolean-equality.cvc \
+	boolean-terms-datatype.cvc \
+	boolean-terms-parametric-datatype-1.cvc \
+	boolean-terms-parametric-datatype-2.cvc \
+	boolean-terms-tuple.cvc \
+	boolean-terms-record.cvc \
+	boolean-terms-rewrite.cvc \
+	some-boolean-tests.cvc \
+	v10l40099.cvc \
+	v2l40025.cvc \
+	v3l60006.cvc \
+	v5l30058.cvc \
+	bug286.cvc \
+	bug438.cvc \
+	bug438b.cvc \
+	wrong-sel-simp.cvc \
+	tenum-bug.smt2 \
+	cdt-non-canon-stream.smt2 \
+	stream-singleton.smt2 \
+	is_test.smt2 \
+	bug625.smt2 \
+	cdt-model-cade15.smt2 \
+	sc-cdt1.smt2  \
+	conqueue-dt-enum-iloop.smt2 \
+	coda_simp_model.smt2 \
+	Test1-tup-mp.cvc \
+	dt-param-card4-unsat.smt2 \
+	dt-param-card4-bool-sat.smt2 \
+	bug604.smt2 \
+	bug597-rbt.smt2 \
+	example-dailler-min.smt2
+
+FAILING_TESTS = \
+	datatype-dump.cvc
+
+# takes a long time to build model on debug : datatype3.cvc
+
+EXTRA_DIST = $(TESTS)
+
+if CVC4_BUILD_PROFILE_COMPETITION
+else
+TESTS += \
+	error.cvc
+endif
+
+# and make sure to distribute it
+EXTRA_DIST += \
+	error.cvc \
+	$(FAILING_TESTS)
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/datatypes/Makefile.in b/test/regress/regress0/datatypes/Makefile.in
new file mode 100644
index 0000000..23455ed
--- /dev/null
+++ b/test/regress/regress0/datatypes/Makefile.in
@@ -0,0 +1,1572 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at CVC4_BUILD_PROFILE_COMPETITION_FALSE@am__append_1 = \
+ at CVC4_BUILD_PROFILE_COMPETITION_FALSE@	error.cvc
+
+subdir = test/regress/regress0/datatypes
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+SUBDIRS = .
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = tuple.cvc tuple-model.cvc tuple-record-bug.cvc rec1.cvc \
+	rec2.cvc rec4.cvc rec5.cvc datatype.cvc datatype0.cvc \
+	datatype1.cvc datatype2.cvc datatype4.cvc datatype13.cvc \
+	empty_tuprec.cvc mutually-recursive.cvc pair-real-bool.smt2 \
+	pair-bool-bool.cvc rewriter.cvc typed_v10l30054.cvc \
+	typed_v1l80005.cvc typed_v2l30079.cvc typed_v3l20092.cvc \
+	typed_v5l30069.cvc boolean-equality.cvc \
+	boolean-terms-datatype.cvc \
+	boolean-terms-parametric-datatype-1.cvc \
+	boolean-terms-parametric-datatype-2.cvc \
+	boolean-terms-tuple.cvc boolean-terms-record.cvc \
+	boolean-terms-rewrite.cvc some-boolean-tests.cvc v10l40099.cvc \
+	v2l40025.cvc v3l60006.cvc v5l30058.cvc bug286.cvc bug438.cvc \
+	bug438b.cvc wrong-sel-simp.cvc tenum-bug.smt2 \
+	cdt-non-canon-stream.smt2 stream-singleton.smt2 is_test.smt2 \
+	bug625.smt2 cdt-model-cade15.smt2 sc-cdt1.smt2 \
+	conqueue-dt-enum-iloop.smt2 coda_simp_model.smt2 \
+	Test1-tup-mp.cvc dt-param-card4-unsat.smt2 \
+	dt-param-card4-bool-sat.smt2 bug604.smt2 bug597-rbt.smt2 \
+	example-dailler-min.smt2 $(am__append_1)
+FAILING_TESTS = \
+	datatype-dump.cvc
+
+
+# takes a long time to build model on debug : datatype3.cvc
+
+# and make sure to distribute it
+EXTRA_DIST = $(TESTS) error.cvc $(FAILING_TESTS)
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/datatypes/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/datatypes/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+tuple.cvc.log: tuple.cvc
+	@p='tuple.cvc'; \
+	b='tuple.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tuple-model.cvc.log: tuple-model.cvc
+	@p='tuple-model.cvc'; \
+	b='tuple-model.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tuple-record-bug.cvc.log: tuple-record-bug.cvc
+	@p='tuple-record-bug.cvc'; \
+	b='tuple-record-bug.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rec1.cvc.log: rec1.cvc
+	@p='rec1.cvc'; \
+	b='rec1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rec2.cvc.log: rec2.cvc
+	@p='rec2.cvc'; \
+	b='rec2.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rec4.cvc.log: rec4.cvc
+	@p='rec4.cvc'; \
+	b='rec4.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rec5.cvc.log: rec5.cvc
+	@p='rec5.cvc'; \
+	b='rec5.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+datatype.cvc.log: datatype.cvc
+	@p='datatype.cvc'; \
+	b='datatype.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+datatype0.cvc.log: datatype0.cvc
+	@p='datatype0.cvc'; \
+	b='datatype0.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+datatype1.cvc.log: datatype1.cvc
+	@p='datatype1.cvc'; \
+	b='datatype1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+datatype2.cvc.log: datatype2.cvc
+	@p='datatype2.cvc'; \
+	b='datatype2.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+datatype4.cvc.log: datatype4.cvc
+	@p='datatype4.cvc'; \
+	b='datatype4.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+datatype13.cvc.log: datatype13.cvc
+	@p='datatype13.cvc'; \
+	b='datatype13.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+empty_tuprec.cvc.log: empty_tuprec.cvc
+	@p='empty_tuprec.cvc'; \
+	b='empty_tuprec.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mutually-recursive.cvc.log: mutually-recursive.cvc
+	@p='mutually-recursive.cvc'; \
+	b='mutually-recursive.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pair-real-bool.smt2.log: pair-real-bool.smt2
+	@p='pair-real-bool.smt2'; \
+	b='pair-real-bool.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pair-bool-bool.cvc.log: pair-bool-bool.cvc
+	@p='pair-bool-bool.cvc'; \
+	b='pair-bool-bool.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rewriter.cvc.log: rewriter.cvc
+	@p='rewriter.cvc'; \
+	b='rewriter.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+typed_v10l30054.cvc.log: typed_v10l30054.cvc
+	@p='typed_v10l30054.cvc'; \
+	b='typed_v10l30054.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+typed_v1l80005.cvc.log: typed_v1l80005.cvc
+	@p='typed_v1l80005.cvc'; \
+	b='typed_v1l80005.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+typed_v2l30079.cvc.log: typed_v2l30079.cvc
+	@p='typed_v2l30079.cvc'; \
+	b='typed_v2l30079.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+typed_v3l20092.cvc.log: typed_v3l20092.cvc
+	@p='typed_v3l20092.cvc'; \
+	b='typed_v3l20092.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+typed_v5l30069.cvc.log: typed_v5l30069.cvc
+	@p='typed_v5l30069.cvc'; \
+	b='typed_v5l30069.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+boolean-equality.cvc.log: boolean-equality.cvc
+	@p='boolean-equality.cvc'; \
+	b='boolean-equality.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+boolean-terms-datatype.cvc.log: boolean-terms-datatype.cvc
+	@p='boolean-terms-datatype.cvc'; \
+	b='boolean-terms-datatype.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+boolean-terms-parametric-datatype-1.cvc.log: boolean-terms-parametric-datatype-1.cvc
+	@p='boolean-terms-parametric-datatype-1.cvc'; \
+	b='boolean-terms-parametric-datatype-1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+boolean-terms-parametric-datatype-2.cvc.log: boolean-terms-parametric-datatype-2.cvc
+	@p='boolean-terms-parametric-datatype-2.cvc'; \
+	b='boolean-terms-parametric-datatype-2.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+boolean-terms-tuple.cvc.log: boolean-terms-tuple.cvc
+	@p='boolean-terms-tuple.cvc'; \
+	b='boolean-terms-tuple.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+boolean-terms-record.cvc.log: boolean-terms-record.cvc
+	@p='boolean-terms-record.cvc'; \
+	b='boolean-terms-record.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+boolean-terms-rewrite.cvc.log: boolean-terms-rewrite.cvc
+	@p='boolean-terms-rewrite.cvc'; \
+	b='boolean-terms-rewrite.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+some-boolean-tests.cvc.log: some-boolean-tests.cvc
+	@p='some-boolean-tests.cvc'; \
+	b='some-boolean-tests.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+v10l40099.cvc.log: v10l40099.cvc
+	@p='v10l40099.cvc'; \
+	b='v10l40099.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+v2l40025.cvc.log: v2l40025.cvc
+	@p='v2l40025.cvc'; \
+	b='v2l40025.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+v3l60006.cvc.log: v3l60006.cvc
+	@p='v3l60006.cvc'; \
+	b='v3l60006.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+v5l30058.cvc.log: v5l30058.cvc
+	@p='v5l30058.cvc'; \
+	b='v5l30058.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug286.cvc.log: bug286.cvc
+	@p='bug286.cvc'; \
+	b='bug286.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug438.cvc.log: bug438.cvc
+	@p='bug438.cvc'; \
+	b='bug438.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug438b.cvc.log: bug438b.cvc
+	@p='bug438b.cvc'; \
+	b='bug438b.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wrong-sel-simp.cvc.log: wrong-sel-simp.cvc
+	@p='wrong-sel-simp.cvc'; \
+	b='wrong-sel-simp.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tenum-bug.smt2.log: tenum-bug.smt2
+	@p='tenum-bug.smt2'; \
+	b='tenum-bug.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cdt-non-canon-stream.smt2.log: cdt-non-canon-stream.smt2
+	@p='cdt-non-canon-stream.smt2'; \
+	b='cdt-non-canon-stream.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+stream-singleton.smt2.log: stream-singleton.smt2
+	@p='stream-singleton.smt2'; \
+	b='stream-singleton.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+is_test.smt2.log: is_test.smt2
+	@p='is_test.smt2'; \
+	b='is_test.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug625.smt2.log: bug625.smt2
+	@p='bug625.smt2'; \
+	b='bug625.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cdt-model-cade15.smt2.log: cdt-model-cade15.smt2
+	@p='cdt-model-cade15.smt2'; \
+	b='cdt-model-cade15.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sc-cdt1.smt2.log: sc-cdt1.smt2
+	@p='sc-cdt1.smt2'; \
+	b='sc-cdt1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+conqueue-dt-enum-iloop.smt2.log: conqueue-dt-enum-iloop.smt2
+	@p='conqueue-dt-enum-iloop.smt2'; \
+	b='conqueue-dt-enum-iloop.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+coda_simp_model.smt2.log: coda_simp_model.smt2
+	@p='coda_simp_model.smt2'; \
+	b='coda_simp_model.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+Test1-tup-mp.cvc.log: Test1-tup-mp.cvc
+	@p='Test1-tup-mp.cvc'; \
+	b='Test1-tup-mp.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dt-param-card4-unsat.smt2.log: dt-param-card4-unsat.smt2
+	@p='dt-param-card4-unsat.smt2'; \
+	b='dt-param-card4-unsat.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dt-param-card4-bool-sat.smt2.log: dt-param-card4-bool-sat.smt2
+	@p='dt-param-card4-bool-sat.smt2'; \
+	b='dt-param-card4-bool-sat.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug604.smt2.log: bug604.smt2
+	@p='bug604.smt2'; \
+	b='bug604.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug597-rbt.smt2.log: bug597-rbt.smt2
+	@p='bug597-rbt.smt2'; \
+	b='bug597-rbt.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+example-dailler-min.smt2.log: example-dailler-min.smt2
+	@p='example-dailler-min.smt2'; \
+	b='example-dailler-min.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+error.cvc.log: error.cvc
+	@p='error.cvc'; \
+	b='error.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/datatypes/Test1-tup-mp.cvc b/test/regress/regress0/datatypes/Test1-tup-mp.cvc
new file mode 100644
index 0000000..6f49496
--- /dev/null
+++ b/test/regress/regress0/datatypes/Test1-tup-mp.cvc
@@ -0,0 +1,10 @@
+% EXPECT: sat
+TEST : TYPE = INT -> [INT, INT];
+
+test: TEST;
+
+ASSERT test(5) = (2, 3);
+ASSERT test(7) = (3, 4);
+
+CHECKSAT;
+
diff --git a/test/regress/regress0/datatypes/boolean-equality.cvc b/test/regress/regress0/datatypes/boolean-equality.cvc
new file mode 100644
index 0000000..e4eec64
--- /dev/null
+++ b/test/regress/regress0/datatypes/boolean-equality.cvc
@@ -0,0 +1,7 @@
+% EXPECT: sat
+
+x : [# b:BOOLEAN #];
+
+ASSERT x = x;
+
+CHECKSAT;
diff --git a/test/regress/regress0/datatypes/boolean-terms-datatype.cvc b/test/regress/regress0/datatypes/boolean-terms-datatype.cvc
new file mode 100644
index 0000000..f20d11b
--- /dev/null
+++ b/test/regress/regress0/datatypes/boolean-terms-datatype.cvc
@@ -0,0 +1,11 @@
+% EXPECT: sat
+
+DATATYPE List =
+  cons(car:BOOLEAN, cdr:List) | nil
+END;
+
+x : List;
+
+ASSERT x /= nil;
+
+CHECKSAT;
diff --git a/test/regress/regress0/datatypes/boolean-terms-parametric-datatype-1.cvc b/test/regress/regress0/datatypes/boolean-terms-parametric-datatype-1.cvc
new file mode 100644
index 0000000..62c0dd5
--- /dev/null
+++ b/test/regress/regress0/datatypes/boolean-terms-parametric-datatype-1.cvc
@@ -0,0 +1,12 @@
+% EXPECT: sat
+
+DATATYPE RightistTree[T] =
+  node(left:BOOLEAN, right:RightistTree[T]) |
+  leaf(data:T)
+END;
+
+x : RightistTree[INT];
+
+ASSERT x /= leaf(0);
+
+CHECKSAT;
diff --git a/test/regress/regress0/datatypes/boolean-terms-parametric-datatype-2.cvc b/test/regress/regress0/datatypes/boolean-terms-parametric-datatype-2.cvc
new file mode 100644
index 0000000..62c0dd5
--- /dev/null
+++ b/test/regress/regress0/datatypes/boolean-terms-parametric-datatype-2.cvc
@@ -0,0 +1,12 @@
+% EXPECT: sat
+
+DATATYPE RightistTree[T] =
+  node(left:BOOLEAN, right:RightistTree[T]) |
+  leaf(data:T)
+END;
+
+x : RightistTree[INT];
+
+ASSERT x /= leaf(0);
+
+CHECKSAT;
diff --git a/test/regress/regress0/datatypes/boolean-terms-record.cvc b/test/regress/regress0/datatypes/boolean-terms-record.cvc
new file mode 100644
index 0000000..4dc0dd7
--- /dev/null
+++ b/test/regress/regress0/datatypes/boolean-terms-record.cvc
@@ -0,0 +1,7 @@
+% EXPECT: sat
+
+x : [# i:INT, b:BOOLEAN #];
+
+ASSERT x /= (# i := 0, b := FALSE #);
+
+CHECKSAT;
diff --git a/test/regress/regress0/datatypes/boolean-terms-rewrite.cvc b/test/regress/regress0/datatypes/boolean-terms-rewrite.cvc
new file mode 100644
index 0000000..9f828b2
--- /dev/null
+++ b/test/regress/regress0/datatypes/boolean-terms-rewrite.cvc
@@ -0,0 +1,7 @@
+% EXPECT: sat
+
+x : [# b:BITVECTOR(1) #];
+
+ASSERT FALSE = ((x = (# b := 0bin0 #)) = (x = (# b := 0bin1 #)));
+
+CHECKSAT;
diff --git a/test/regress/regress0/datatypes/boolean-terms-tuple.cvc b/test/regress/regress0/datatypes/boolean-terms-tuple.cvc
new file mode 100644
index 0000000..5704e7d
--- /dev/null
+++ b/test/regress/regress0/datatypes/boolean-terms-tuple.cvc
@@ -0,0 +1,7 @@
+% EXPECT: sat
+
+x : [ INT, BOOLEAN ];
+
+ASSERT x /= ( 0, FALSE );
+
+CHECKSAT;
diff --git a/test/regress/regress0/datatypes/bug286.cvc b/test/regress/regress0/datatypes/bug286.cvc
new file mode 100644
index 0000000..501f5f7
--- /dev/null
+++ b/test/regress/regress0/datatypes/bug286.cvc
@@ -0,0 +1,5 @@
+% EXPECT: invalid
+DATATYPE foo = f(i:INT) END;
+x : foo;
+y : INT;
+QUERY x = f(y);
diff --git a/test/regress/regress0/datatypes/bug438.cvc b/test/regress/regress0/datatypes/bug438.cvc
new file mode 100644
index 0000000..8326b81
--- /dev/null
+++ b/test/regress/regress0/datatypes/bug438.cvc
@@ -0,0 +1,5 @@
+% EXPECT: sat
+DATATYPE list[T] = cons(car:T, cdr:list[T]) | nil END;
+x : list[REAL];
+ASSERT x = cons(1.0,nil::list[REAL])::list[REAL];
+CHECKSAT;
diff --git a/test/regress/regress0/datatypes/bug438b.cvc b/test/regress/regress0/datatypes/bug438b.cvc
new file mode 100644
index 0000000..16d27fe
--- /dev/null
+++ b/test/regress/regress0/datatypes/bug438b.cvc
@@ -0,0 +1,6 @@
+% EXPECT: sat
+DATATYPE list[T] = cons(car:T, cdr:list[T]) | nil END;
+x : list[REAL];
+ASSERT x = cons(1.0,nil::list[REAL]);
+ASSERT x = cons(1.0,nil::list[REAL])::list[REAL];
+CHECKSAT;
diff --git a/test/regress/regress0/datatypes/bug597-rbt.smt2 b/test/regress/regress0/datatypes/bug597-rbt.smt2
new file mode 100644
index 0000000..45d82a5
--- /dev/null
+++ b/test/regress/regress0/datatypes/bug597-rbt.smt2
@@ -0,0 +1,12 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+
+; Tree type
+(declare-datatypes () ((Tree (node (data Int) (color Bool) (left Tree) (right Tree)) (nil))))
+
+; content function
+(declare-fun size (Tree) Int)
+(assert (= (size nil) 0))
+
+
+(check-sat)
diff --git a/test/regress/regress0/datatypes/bug604.smt2 b/test/regress/regress0/datatypes/bug604.smt2
new file mode 100644
index 0000000..15a60c3
--- /dev/null
+++ b/test/regress/regress0/datatypes/bug604.smt2
@@ -0,0 +1,9 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(declare-datatypes () ( (PairIntInt (pair (firstPairIntInt Int)
+(secondPairIntInt Int)) ) ))
+(declare-fun /ArrayIntOfPair () (Array Int PairIntInt))
+(declare-datatypes () ( (SequenceABC (sequenceABC (a Int) (b Bool) (c Int)) )
+))
+(declare-fun /ArrayIntOfSequenceABC () (Array Int SequenceABC))
+(check-sat)
diff --git a/test/regress/regress0/datatypes/bug625.smt2 b/test/regress/regress0/datatypes/bug625.smt2
new file mode 100644
index 0000000..3f4312a
--- /dev/null
+++ b/test/regress/regress0/datatypes/bug625.smt2
@@ -0,0 +1,13 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun y1 () Int)
+(declare-fun y2 () Int)
+(declare-datatypes () ( (type
+    (constructor1 (f1 Int))
+    (constructor2 (f2 Int))
+)))
+(define-fun mktest ((constructor Int) (p1 Int) (p2 Int)) type (ite (= constructor 1) (constructor1 p1) (constructor2 p2)))
+(assert (distinct (mktest x1 x2 x2) (mktest y1 y2 y2)))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/datatypes/cdt-model-cade15.smt2 b/test/regress/regress0/datatypes/cdt-model-cade15.smt2
new file mode 100644
index 0000000..c23a9d5
--- /dev/null
+++ b/test/regress/regress0/datatypes/cdt-model-cade15.smt2
@@ -0,0 +1,17 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(declare-codatatypes () ((Stream (C (c Stream)) (D (d Stream)) (E (e Stream)))))
+
+(declare-const z Stream)
+(declare-const x Stream)
+(declare-const y Stream)
+(declare-const u Stream)
+(declare-const v Stream)
+(declare-const w Stream)
+
+(assert (= u (C z)))
+(assert (= v (D z)))
+(assert (= w (E y)))
+(assert (= x (C v)))
+(assert (distinct x y z u v w))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/datatypes/cdt-non-canon-stream.smt2 b/test/regress/regress0/datatypes/cdt-non-canon-stream.smt2
new file mode 100644
index 0000000..4a111b4
--- /dev/null
+++ b/test/regress/regress0/datatypes/cdt-non-canon-stream.smt2
@@ -0,0 +1,11 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-codatatypes () ((list (cons (head Int) (tail list)))))
+
+(declare-fun x () list)
+(declare-fun y () list)
+
+(assert (= x (cons 0 (cons 0 x))))
+(assert (= y (cons 0 y)))
+(assert (not (= x y)))
+(check-sat)
diff --git a/test/regress/regress0/datatypes/coda_simp_model.smt2 b/test/regress/regress0/datatypes/coda_simp_model.smt2
new file mode 100644
index 0000000..1e000ce
--- /dev/null
+++ b/test/regress/regress0/datatypes/coda_simp_model.smt2
@@ -0,0 +1,12 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(declare-sort a_ 0)
+(declare-fun __nun_card_witness_0 () a_)
+(declare-codatatypes ()
+   ((llist_ (LCons_ (_select_LCons__0 a_) (_select_LCons__1 llist_)) 
+       (LNil_ ))))
+(declare-fun s () llist_)
+(declare-fun a () a_)
+(declare-fun b () a_)
+(assert (= s (LCons_ a (LCons_ b s))))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/datatypes/conqueue-dt-enum-iloop.smt2 b/test/regress/regress0/datatypes/conqueue-dt-enum-iloop.smt2
new file mode 100644
index 0000000..6f82cd8
--- /dev/null
+++ b/test/regress/regress0/datatypes/conqueue-dt-enum-iloop.smt2
@@ -0,0 +1,75 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(declare-fun start!13 () Bool)
+
+(assert start!13)
+
+(declare-fun b!39 () Bool)
+
+(declare-sort T!14 0)
+
+(declare-datatypes () ( 
+(LazyConQ!5 
+  (Lazyarg1!5 (carry!37 Conc!6) (srear!9 LazyConQ!5)) 
+  (Lazyarg2!5 (t!270 ConQ!6)) 
+  (Lazyarg3!5 (carry!38 Conc!6) (t!271 ConQ!6)) 
+  (Lazyarg4!5 (tree!19 Conc!6) (carry!39 Conc!6)) 
+  (Lazyarg5!5 (tree!20 Conc!6) (carry!40 Conc!6)) 
+  (PushLeft!5 (ys!22 Conc!6) (xs!60 LazyConQ!5)) 
+  (PushLeftLazy!5 (ys!23 Conc!6) (xs!61 LazyConQ!5)))  
+(Conc!6 
+  (CC!5 (left!9 Conc!6) (right!9 Conc!6)) 
+  (Empty!5) 
+  (Single!5 (x!106 T!14)))  
+(ConQ!6 
+  (Spine!5 (head!10 Conc!6) (rear!5 LazyConQ!5)) 
+  (Tip!5 (t!272 Conc!6))) 
+))
+
+(declare-fun e!41 () LazyConQ!5)
+
+(declare-fun l!2 () LazyConQ!5)
+
+(declare-fun st!3 () (Set LazyConQ!5))
+
+(declare-fun firstUnevaluated!3 (LazyConQ!5 (Set LazyConQ!5)) LazyConQ!5)
+
+(declare-fun evalLazyConQ2!7 (LazyConQ!5) ConQ!6)
+
+(assert (=> b!39 (= e!41 (firstUnevaluated!3 (rear!5 (evalLazyConQ2!7 l!2)) st!3))))
+
+(declare-fun b!40 () Bool)
+
+(declare-fun e!42 () LazyConQ!5)
+
+(assert (=> b!40 (= e!42 e!41)))
+
+(assert (=> b!40 (= b!39 (is-Spine!5 (evalLazyConQ2!7 l!2)))))
+
+(declare-fun b!41 () Bool)
+
+(assert (=> b!40 (or (not b!39) (not b!41))))
+
+(assert (=> b!40 (or b!39 b!41)))
+
+(assert (=> b!41 (= e!41 l!2)))
+
+(declare-fun b!42 () Bool)
+
+(assert (=> b!42 (= e!42 l!2)))
+
+(declare-fun lt!14 () LazyConQ!5)
+
+(declare-fun isTip!5 (ConQ!6) Bool)
+
+(assert (=> start!13 (and (not (isTip!5 (evalLazyConQ2!7 lt!14))) (member lt!14 st!3))))
+
+(assert (=> start!13 (= lt!14 e!42)))
+
+(assert (=> start!13 (= b!40 (member l!2 st!3))))
+
+(assert (=> start!13 (or (not b!40) (not b!42))))
+
+(assert (=> start!13 (or b!40 b!42)))
+
+(check-sat)
diff --git a/test/regress/regress0/datatypes/datatype-dump.cvc b/test/regress/regress0/datatypes/datatype-dump.cvc
new file mode 100644
index 0000000..2f64579
--- /dev/null
+++ b/test/regress/regress0/datatypes/datatype-dump.cvc
@@ -0,0 +1,19 @@
+% This regression is the same as datatype.cvc but tests the
+% dumping infrastructure.
+%
+% COMMAND-LINE: --dump assertions
+%
+% EXPECT: DATATYPE
+% EXPECT:   nat = succ(pred: nat) | zero
+% EXPECT: END;
+% EXPECT: x : nat;
+% EXPECT: ASSERT NOT(NOT(is_succ(x)) AND NOT(is_zero(x)));
+% EXPECT: CHECKSAT;
+% EXPECT: invalid
+%
+
+DATATYPE nat = succ(pred : nat) | zero END;
+
+x : nat;
+
+QUERY (NOT is_succ(x) AND NOT is_zero(x));
diff --git a/test/regress/regress0/datatypes/datatype.cvc b/test/regress/regress0/datatypes/datatype.cvc
new file mode 100644
index 0000000..20fec4f
--- /dev/null
+++ b/test/regress/regress0/datatypes/datatype.cvc
@@ -0,0 +1,7 @@
+% EXPECT: invalid
+
+DATATYPE nat = succ(pred : nat) | zero END;
+
+x : nat;
+
+QUERY (NOT is_succ(x) AND NOT is_zero(x));
diff --git a/test/regress/regress0/datatypes/datatype0.cvc b/test/regress/regress0/datatypes/datatype0.cvc
new file mode 100644
index 0000000..8fff50a
--- /dev/null
+++ b/test/regress/regress0/datatypes/datatype0.cvc
@@ -0,0 +1,7 @@
+% EXPECT: valid
+
+DATATYPE nat = succ(pred : nat) | zero END;
+
+x : nat;
+
+QUERY (is_succ(x) OR is_zero(x));
diff --git a/test/regress/regress0/datatypes/datatype1.cvc b/test/regress/regress0/datatypes/datatype1.cvc
new file mode 100644
index 0000000..3934959
--- /dev/null
+++ b/test/regress/regress0/datatypes/datatype1.cvc
@@ -0,0 +1,10 @@
+% EXPECT: invalid
+
+DATATYPE
+  tree = node(left : tree, right : tree) | leaf
+END;
+
+x : tree;
+z : tree;
+
+QUERY NOT (left(left(z)) = x AND is_node(z) AND z = x);
diff --git a/test/regress/regress0/datatypes/datatype13.cvc b/test/regress/regress0/datatypes/datatype13.cvc
new file mode 100644
index 0000000..91e582d
--- /dev/null
+++ b/test/regress/regress0/datatypes/datatype13.cvc
@@ -0,0 +1,43 @@
+% EXPECT: valid
+
+DATATYPE enum = enum1
+| enum2
+| enum3
+| enum4
+| enum5
+| enum6
+| enum7
+| enum8
+| enum9
+| enum10
+| enum11
+| enum12
+| enum13
+| enum14
+| enum15
+| enum16
+| enum17
+| enum18
+| enum19
+| enum20
+| enum21
+| enum22
+| enum23
+| enum24
+| enum25
+| enum26
+| enum27
+| enum28
+| enum29
+| enum30
+| enum31
+| enum32
+| enum33
+END;
+
+x,y:enum;
+
+ASSERT x = enum1;
+ASSERT y = enum33;
+QUERY x /= y;
+
diff --git a/test/regress/regress0/datatypes/datatype2.cvc b/test/regress/regress0/datatypes/datatype2.cvc
new file mode 100644
index 0000000..939dff1
--- /dev/null
+++ b/test/regress/regress0/datatypes/datatype2.cvc
@@ -0,0 +1,16 @@
+% EXPECT: valid
+
+DATATYPE
+  nat = succ(pred : nat) | zero,
+  list = cons(car : tree, cdr : list) | null,
+  tree = node(data : nat, children : list) | leaf
+END;
+
+x : nat;
+y : list;
+z : tree;
+
+ASSERT x = succ(zero);
+ASSERT z = IF is_cons(y) THEN car(y) ELSE node(x, null) ENDIF;
+
+QUERY (NOT is_cons(y)) => pred(data(z)) = zero;
diff --git a/test/regress/regress0/datatypes/datatype4.cvc b/test/regress/regress0/datatypes/datatype4.cvc
new file mode 100644
index 0000000..217777b
--- /dev/null
+++ b/test/regress/regress0/datatypes/datatype4.cvc
@@ -0,0 +1,9 @@
+% EXPECT: invalid
+DATATYPE
+   TypeGeneric = generic
+END;
+
+f: TypeGeneric -> INT;
+a: TypeGeneric;
+
+QUERY(f(a) = 0);
diff --git a/test/regress/regress0/datatypes/dt-param-card4-bool-sat.smt2 b/test/regress/regress0/datatypes/dt-param-card4-bool-sat.smt2
new file mode 100644
index 0000000..ca5791c
--- /dev/null
+++ b/test/regress/regress0/datatypes/dt-param-card4-bool-sat.smt2
@@ -0,0 +1,11 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+(declare-datatypes (T S) ( (Pair (pair (first T) (second S)) ) ) )
+
+(declare-fun p1 () (Pair Bool Bool))
+(declare-fun p2 () (Pair Bool Bool))
+(declare-fun p3 () (Pair Bool Bool))
+(declare-fun p4 () (Pair Bool Bool))
+
+(assert (distinct p1 p2 p3 p4))
+(check-sat)
diff --git a/test/regress/regress0/datatypes/dt-param-card4-unsat.smt2 b/test/regress/regress0/datatypes/dt-param-card4-unsat.smt2
new file mode 100644
index 0000000..9676745
--- /dev/null
+++ b/test/regress/regress0/datatypes/dt-param-card4-unsat.smt2
@@ -0,0 +1,14 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-datatypes (T S) ( (Pair (pair (first T) (second S)) ) ) )
+
+(declare-datatypes () ((Color (red) (blue))))
+
+(declare-fun p1 () (Pair Color Color))
+(declare-fun p2 () (Pair Color Color))
+(declare-fun p3 () (Pair Color Color))
+(declare-fun p4 () (Pair Color Color))
+(declare-fun p5 () (Pair Color Color))
+
+(assert (distinct p1 p2 p3 p4 p5))
+(check-sat)
diff --git a/test/regress/regress0/datatypes/empty_tuprec.cvc b/test/regress/regress0/datatypes/empty_tuprec.cvc
new file mode 100644
index 0000000..4f63200
--- /dev/null
+++ b/test/regress/regress0/datatypes/empty_tuprec.cvc
@@ -0,0 +1,21 @@
+% COMMAND-LINE: --no-check-proofs --no-check-unsat-cores
+%
+OPTION "incremental";
+
+a1, a2 : []; % empty tuples (a unit type)
+b1, b2 : [##]; % empty records (a unit type)
+c1, c2 : [[]]; % 1-tuples of the empty tuple (a unit type)
+d1, d2 : [#x:[[##]],y:[#z:[]#]#]; % more complicated records (still a unit type)
+
+% EXPECT: valid
+QUERY a1 = a2;
+
+% EXPECT: valid
+QUERY b1 = b2;
+
+% EXPECT: valid
+QUERY c1 = c2;
+
+% EXPECT: valid
+QUERY d1 = d2;
+
diff --git a/test/regress/regress0/datatypes/error.cvc b/test/regress/regress0/datatypes/error.cvc
new file mode 100644
index 0000000..66fa17e
--- /dev/null
+++ b/test/regress/regress0/datatypes/error.cvc
@@ -0,0 +1,7 @@
+% EXPECT-ERROR: CVC4 Error:
+% EXPECT-ERROR: Parse Error: foo already declared
+% EXIT: 1
+
+DATATYPE single_ctor = foo(bar:REAL) END;
+DATATYPE double_ctor = foo(bar:REAL) END;
+
diff --git a/test/regress/regress0/datatypes/example-dailler-min.smt2 b/test/regress/regress0/datatypes/example-dailler-min.smt2
new file mode 100644
index 0000000..1698fc3
--- /dev/null
+++ b/test/regress/regress0/datatypes/example-dailler-min.smt2
@@ -0,0 +1,7 @@
+(set-logic ALL)
+(set-info :status sat)
+(declare-datatypes () ((D (C (R Bool)))))
+(declare-fun a () (Array Int D))
+(declare-fun P ((Array Int D)) Bool)
+(assert (P a))
+(check-sat)
diff --git a/test/regress/regress0/datatypes/is_test.smt2 b/test/regress/regress0/datatypes/is_test.smt2
new file mode 100644
index 0000000..9c38ffc
--- /dev/null
+++ b/test/regress/regress0/datatypes/is_test.smt2
@@ -0,0 +1,6 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-datatypes () ((Unit (u))))
+(declare-fun x () Unit)
+(assert (not (is-u x)))
+(check-sat)
diff --git a/test/regress/regress0/datatypes/mutually-recursive.cvc b/test/regress/regress0/datatypes/mutually-recursive.cvc
new file mode 100644
index 0000000..b86b647
--- /dev/null
+++ b/test/regress/regress0/datatypes/mutually-recursive.cvc
@@ -0,0 +1,14 @@
+% EXPECT: valid
+
+DATATYPE nat = succ(pred : nat2) | zero,
+         nat2 = succ2(pred2 : nat) | zero2 END;
+
+x : nat;
+
+DATATYPE list = cons(car : tree, cdr: list) | nil,
+         tree = node(left : tree, right : tree) | leaf(data : list) END;
+
+y : tree;
+
+QUERY (is_succ(x) => is_zero2(pred(x)) OR is_succ2(pred(x)))
+  AND (is_leaf(y) => is_cons(data(y)) OR is_nil(data(y)));
diff --git a/test/regress/regress0/datatypes/pair-bool-bool.cvc b/test/regress/regress0/datatypes/pair-bool-bool.cvc
new file mode 100644
index 0000000..7525e2d
--- /dev/null
+++ b/test/regress/regress0/datatypes/pair-bool-bool.cvc
@@ -0,0 +1,10 @@
+% EXPECT: sat
+
+DATATYPE
+  pair[T1,T2] = mkpair(first:T1, second:T2)
+END;
+
+x : pair[BOOLEAN,BOOLEAN];
+
+ASSERT x = mkpair(TRUE,TRUE);
+CHECKSAT;
diff --git a/test/regress/regress0/datatypes/pair-real-bool.smt2 b/test/regress/regress0/datatypes/pair-real-bool.smt2
new file mode 100644
index 0000000..5d028d7
--- /dev/null
+++ b/test/regress/regress0/datatypes/pair-real-bool.smt2
@@ -0,0 +1,25 @@
+;(set-option :produce-models true)
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+(declare-datatypes () (
+  ( RealTree 
+    ( Node 
+      (left RealTree) 
+		  (elem Real) 
+		  (right RealTree)) 
+    (Leaf)
+   )
+))
+
+(declare-datatypes (T1 T2) ((Pair (mk-pair (first T1) (second T2)))))
+
+( declare-fun SumeAndPositiveTree ( RealTree ) (Pair Real Bool) )
+
+(declare-fun l1 () RealTree)
+(declare-fun l2 () RealTree)
+(declare-const result (Pair Real Bool))
+(assert (= l1 (Node l2 5.0 l2)))
+(assert (= result (SumeAndPositiveTree l1)))
+(assert (= (first result) 5))
+(assert (= (second result) true))
+(check-sat)
diff --git a/test/regress/regress0/datatypes/rec1.cvc b/test/regress/regress0/datatypes/rec1.cvc
new file mode 100644
index 0000000..79c9fac
--- /dev/null
+++ b/test/regress/regress0/datatypes/rec1.cvc
@@ -0,0 +1,7 @@
+% EXPECT: valid
+c : BOOLEAN;
+a17 : BOOLEAN = ((# _a := 2, _b := 2 #) = (
+          IF c THEN (# _a := 3, _b := 2 #)
+          ELSE (# _a := 1, _b := 2 #)
+          ENDIF WITH ._a := 2));
+QUERY a17;
diff --git a/test/regress/regress0/datatypes/rec2.cvc b/test/regress/regress0/datatypes/rec2.cvc
new file mode 100644
index 0000000..44d523a
--- /dev/null
+++ b/test/regress/regress0/datatypes/rec2.cvc
@@ -0,0 +1,11 @@
+% EXPECT: valid
+c : BOOLEAN;
+a16 : [# _a : INT, _b : INT #] = (
+        IF c THEN (# _a := 3, _b := 2 #)
+        ELSE (# _a := 1, _b := 5 #)
+        ENDIF WITH ._a := 2);
+a21 : BOOLEAN = 
+        IF c THEN ((# _a := 2, _b := 2 #) = a16)
+        ELSE ((# _a := 2, _b := 5 #) = a16)
+        ENDIF;
+QUERY a21;
diff --git a/test/regress/regress0/datatypes/rec4.cvc b/test/regress/regress0/datatypes/rec4.cvc
new file mode 100644
index 0000000..08a9988
--- /dev/null
+++ b/test/regress/regress0/datatypes/rec4.cvc
@@ -0,0 +1,10 @@
+% EXPECT: valid
+a : BOOLEAN;
+a49 : BOOLEAN = (
+          IF a THEN (# _a := 1 #)
+          ELSE (# _a := 2 #)
+          ENDIF = (# _a := 
+          IF a THEN 1
+          ELSE 2
+          ENDIF #));
+QUERY a49;
diff --git a/test/regress/regress0/datatypes/rec5.cvc b/test/regress/regress0/datatypes/rec5.cvc
new file mode 100644
index 0000000..b4da49d
--- /dev/null
+++ b/test/regress/regress0/datatypes/rec5.cvc
@@ -0,0 +1,204 @@
+% EXPECT: invalid
+bit__ty: TYPE = [0..1];
+bc1553__lru_name: TYPE = [0..11];
+bus__inputs__type: TYPE;
+bus__word_index: TYPE = INT;
+cartesian__position: TYPE = [# x: INT, y: INT, z: INT #];
+ibit__phase: TYPE = [0..6];
+measuretypes__meter: TYPE = INT;
+bc1553__asi: [0..11];
+bc1553__barometer: [0..11];
+bc1553__compass: [0..11];
+bc1553__destruct: [0..11];
+bc1553__fins: [0..11];
+bc1553__fuel: [0..11];
+bc1553__fuze: [0..11];
+bc1553__infrared: [0..11];
+bc1553__ins: [0..11];
+bc1553__lru_name__base__first: [0..11];
+bc1553__lru_name__base__last: [0..11];
+bc1553__lru_name__first: [0..11];
+bc1553__lru_name__last: [0..11];
+bc1553__lru_name__size: INT;
+bc1553__motor: [0..11];
+bc1553__radar: [0..11];
+bc1553__warhead: [0..11];
+bus__all_msg_index__base__first: INT;
+bus__all_msg_index__base__last: INT;
+bus__all_msg_index__first: INT;
+bus__all_msg_index__last: INT;
+bus__all_msg_index__size: INT;
+bus__lru_subaddress_index__base__first: INT;
+bus__lru_subaddress_index__base__last: INT;
+bus__lru_subaddress_index__first: INT;
+bus__lru_subaddress_index__last: INT;
+bus__lru_subaddress_index__size: INT;
+bus__word__base__first: INT;
+bus__word__base__last: INT;
+bus__word__first: INT;
+bus__word__last: INT;
+bus__word__size: INT;
+bus__word_index__base__first: INT;
+bus__word_index__base__last: INT;
+bus__word_index__first: INT;
+bus__word_index__last: INT;
+bus__word_index__size: INT;
+bus_id: [0..11];
+ibit__fail: [0..6];
+ibit__in_progress: [0..6];
+ibit__off: [0..6];
+ibit__pass: [0..6];
+ibit__phase__base__first: [0..6];
+ibit__phase__base__last: [0..6];
+ibit__phase__first: [0..6];
+ibit__phase__last: [0..6];
+ibit__phase__size: INT;
+ibit__request_start: [0..6];
+ibit__request_stop: [0..6];
+ibit__timeout: [0..6];
+integer__base__first: INT;
+integer__base__last: INT;
+integer__first: INT;
+integer__last: INT;
+integer__size: INT;
+measuretypes__meter__base__first: INT;
+measuretypes__meter__base__last: INT;
+measuretypes__meter__first: INT;
+measuretypes__meter__last: INT;
+measuretypes__meter__size: INT;
+systemtypes__unsigned16__base__first: INT;
+systemtypes__unsigned16__base__last: INT;
+systemtypes__unsigned16__first: INT;
+systemtypes__unsigned16__last: INT;
+systemtypes__unsigned16__size: INT;
+bus__inputs: bus__inputs__type;
+bus__inputs__tilde: bus__inputs__type;
+ibit_request: [0..6];
+ibit_request__5: [0..6];
+ibit_request__5__tilde: [0..6];
+ibit_request__tilde: [0..6];
+last_position: [# x: INT, y: INT, z: INT #];
+last_position__1: [# x: INT, y: INT, z: INT #];
+last_position__1__tilde: [# x: INT, y: INT, z: INT #];
+last_position__2: [# x: INT, y: INT, z: INT #];
+last_position__2__tilde: [# x: INT, y: INT, z: INT #];
+last_position__3: [# x: INT, y: INT, z: INT #];
+last_position__3__tilde: [# x: INT, y: INT, z: INT #];
+last_position__tilde: [# x: INT, y: INT, z: INT #];
+word: INT;
+word__4: INT;
+word__4__tilde: INT;
+word__tilde: INT;
+bc1553__is_fresh: ([0..11], INT, bus__inputs__type) ->  BOOLEAN;
+bc1553__is_valid: ([0..11], INT, bus__inputs__type) ->  BOOLEAN;
+bc1553__lru_name__LE: ([0..11], [0..11]) ->  BOOLEAN;
+bc1553__lru_name__pos: [0..11] ->  INT;
+bc1553__lru_name__pred: [0..11] ->  [0..11];
+bc1553__lru_name__succ: [0..11] ->  [0..11];
+bc1553__lru_name__val: INT ->  [0..11];
+character__pos: INT ->  INT;
+character__val: INT ->  INT;
+ibit__phase__LE: ([0..6], [0..6]) ->  BOOLEAN;
+ibit__phase__pos: [0..6] ->  INT;
+ibit__phase__pred: [0..6] ->  [0..6];
+ibit__phase__succ: [0..6] ->  [0..6];
+ibit__phase__val: INT ->  [0..6];
+integer__pred: INT ->  INT;
+integer__succ: INT ->  INT;
+round__: REAL ->  INT;
+int__div: (INT, INT) ->  INT;
+int__mod: (INT, INT) ->  INT;
+ASSERT (bus_id = bc1553__ins);
+ASSERT (0 <= integer__size);
+ASSERT (integer__first = -(2147483647));
+ASSERT (integer__last = 2147483647);
+ASSERT (integer__base__first = -(2147483647));
+ASSERT (integer__base__last = 2147483647);
+ASSERT (0 <= systemtypes__unsigned16__size);
+ASSERT (systemtypes__unsigned16__first = 0);
+ASSERT (systemtypes__unsigned16__last = 65535);
+ASSERT (systemtypes__unsigned16__base__first = -(2147483647));
+ASSERT (systemtypes__unsigned16__base__last = 2147483647);
+ASSERT (0 <= measuretypes__meter__size);
+ASSERT (measuretypes__meter__first = -(200000));
+ASSERT (measuretypes__meter__last = 200000);
+ASSERT (measuretypes__meter__base__first = -(2147483647));
+ASSERT (measuretypes__meter__base__last = 2147483647);
+ASSERT (0 <= bus__word_index__size);
+ASSERT (bus__word_index__first = 1);
+ASSERT (bus__word_index__last = 31);
+ASSERT (bus__word_index__base__first <= bus__word_index__base__last);
+ASSERT (bus__word_index__base__first <= bus__word_index__first);
+ASSERT (bus__word_index__last <= bus__word_index__base__last);
+ASSERT (0 <= bus__word__size);
+ASSERT (bus__word__first = 0);
+ASSERT (bus__word__last = 65535);
+ASSERT (bus__word__base__first = -(2147483647));
+ASSERT (bus__word__base__last = 2147483647);
+ASSERT (0 <= bus__all_msg_index__size);
+ASSERT (bus__all_msg_index__first = 0);
+ASSERT (bus__all_msg_index__last = 63);
+ASSERT (bus__all_msg_index__base__first = -(32768));
+ASSERT (bus__all_msg_index__base__last = 32767);
+ASSERT (0 <= bus__lru_subaddress_index__size);
+ASSERT (bus__lru_subaddress_index__first = 1);
+ASSERT (bus__lru_subaddress_index__last = 8);
+ASSERT (bus__lru_subaddress_index__base__first = -(32768));
+ASSERT (bus__lru_subaddress_index__base__last = 32767);
+ASSERT (0 <= bc1553__lru_name__size);
+ASSERT (bc1553__lru_name__first = bc1553__barometer);
+ASSERT (bc1553__lru_name__last = bc1553__warhead);
+ASSERT (bc1553__lru_name__base__first = bc1553__barometer);
+ASSERT (bc1553__lru_name__base__last = bc1553__warhead);
+ASSERT (0 <= ibit__phase__size);
+ASSERT (ibit__phase__first = ibit__off);
+ASSERT (ibit__phase__last = ibit__timeout);
+ASSERT (ibit__phase__base__first = ibit__off);
+ASSERT (ibit__phase__base__last = ibit__timeout);
+ASSERT (bc1553__barometer = 0);
+ASSERT (bc1553__asi = 1);
+ASSERT (bc1553__ins = 2);
+ASSERT (bc1553__compass = 3);
+ASSERT (bc1553__fuel = 4);
+ASSERT (bc1553__fuze = 5);
+ASSERT (bc1553__radar = 6);
+ASSERT (bc1553__infrared = 7);
+ASSERT (bc1553__fins = 8);
+ASSERT (bc1553__motor = 9);
+ASSERT (bc1553__destruct = 10);
+ASSERT (bc1553__warhead = 11);
+ASSERT (ibit__off = 0);
+ASSERT (ibit__request_start = 1);
+ASSERT (ibit__in_progress = 2);
+ASSERT (ibit__request_stop = 3);
+ASSERT (ibit__pass = 4);
+ASSERT (ibit__fail = 5);
+ASSERT (ibit__timeout = 6);
+ASSERT TRUE;
+ASSERT (measuretypes__meter__first <= (last_position).z);
+ASSERT ((last_position).z <= measuretypes__meter__last);
+ASSERT (measuretypes__meter__first <= (last_position).y);
+ASSERT ((last_position).y <= measuretypes__meter__last);
+ASSERT (measuretypes__meter__first <= (last_position).x);
+ASSERT ((last_position).x <= measuretypes__meter__last);
+ASSERT TRUE;
+ASSERT (ibit__phase__first <= ibit_request);
+ASSERT (ibit_request <= ibit__phase__last);
+ASSERT (bus__lru_subaddress_index__first <= 1);
+ASSERT (1 <= bus__lru_subaddress_index__last);
+ASSERT (bc1553__lru_name__first <= bus_id);
+ASSERT (bus_id <= bc1553__lru_name__last);
+ASSERT TRUE;
+ASSERT (bc1553__is_valid(bus_id, 1, bus__inputs) => ((bus__lru_subaddress_index__first <= 1) AND (1 <= bus__lru_subaddress_index__last)));
+ASSERT (bc1553__is_valid(bus_id, 1, bus__inputs) => ((bc1553__lru_name__first <= bus_id) AND (bus_id <= bc1553__lru_name__last)));
+ASSERT (bc1553__is_valid(bus_id, 1, bus__inputs) => TRUE);
+ASSERT bc1553__is_valid(bus_id, 1, bus__inputs);
+ASSERT bc1553__is_fresh(bus_id, 1, bus__inputs);
+ASSERT (bus__word_index__first <= 2);
+ASSERT (2 <= bus__word_index__last);
+ASSERT (bus__word_index__first <= 1);
+ASSERT (1 <= bus__word_index__last);
+ASSERT (measuretypes__meter__first <= (last_position__1).x);
+ASSERT ((last_position__1).x <= measuretypes__meter__last);
+ASSERT ((last_position__1).y = (last_position).y);
+QUERY (last_position = last_position__1);
diff --git a/test/regress/regress0/datatypes/rewriter.cvc b/test/regress/regress0/datatypes/rewriter.cvc
new file mode 100644
index 0000000..18f8b34
--- /dev/null
+++ b/test/regress/regress0/datatypes/rewriter.cvc
@@ -0,0 +1,12 @@
+% EXPECT: valid
+
+% simple test for rewriter cases
+
+DATATYPE single_ctor = foo(bar:REAL) END;
+DATATYPE double_ctor = foo2(bar2:REAL) | baz END;
+
+x: single_ctor;
+y: double_ctor;
+
+QUERY is_foo(x) AND bar2(foo2(0.0)) = 0.0;
+
diff --git a/test/regress/regress0/datatypes/sc-cdt1.smt2 b/test/regress/regress0/datatypes/sc-cdt1.smt2
new file mode 100644
index 0000000..672acfa
--- /dev/null
+++ b/test/regress/regress0/datatypes/sc-cdt1.smt2
@@ -0,0 +1,19 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(declare-sort term 0)
+(declare-codatatypes () (
+    (llist_tree (lnil_tree )
+        (lcons_tree (_select_llist_tree_0 tree)
+        (_select_llist_tree_1 llist_tree)))
+    (tree (leaf (_select_tree_0 term))
+        (node (_select_tree_1 llist_tree)))
+))
+(declare-fun nun_sk_2 () term)
+(declare-fun nun_sk_1 () term)
+(declare-fun nun_sk_0 () tree)
+(assert
+    (= nun_sk_0
+        (node
+         (lcons_tree (leaf nun_sk_1)
+          (lcons_tree (leaf nun_sk_2) (lcons_tree nun_sk_0 lnil_tree))))))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/datatypes/some-boolean-tests.cvc b/test/regress/regress0/datatypes/some-boolean-tests.cvc
new file mode 100644
index 0000000..ae57666
--- /dev/null
+++ b/test/regress/regress0/datatypes/some-boolean-tests.cvc
@@ -0,0 +1,11 @@
+% EXPECT: sat
+DATATYPE list[T] = cons(car:T, care:BOOLEAN, cdr:list[T]) | nil END;
+x : list[REAL];
+
+y : [INT,BOOLEAN,INT];
+ASSERT y = (5,TRUE,4);
+
+ASSERT y.1;
+
+ASSERT x = cons(1.1,TRUE,nil::list[REAL])::list[REAL];
+CHECKSAT;
diff --git a/test/regress/regress0/datatypes/stream-singleton.smt2 b/test/regress/regress0/datatypes/stream-singleton.smt2
new file mode 100644
index 0000000..6884059
--- /dev/null
+++ b/test/regress/regress0/datatypes/stream-singleton.smt2
@@ -0,0 +1,11 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-codatatypes () ((Stream (S (s Stream)))))
+
+(declare-fun x () Stream)
+(declare-fun y () Stream)
+
+(assert (not (= x y)))
+
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/datatypes/tenum-bug.smt2 b/test/regress/regress0/datatypes/tenum-bug.smt2
new file mode 100644
index 0000000..bf82c7b
--- /dev/null
+++ b/test/regress/regress0/datatypes/tenum-bug.smt2
@@ -0,0 +1,11 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+
+(declare-datatypes () ((DNat (dnat (data Nat)))
+                       (Nat (succ (pred DNat)) (zero))))
+
+(declare-fun x () Nat)
+
+(assert (not (= x zero)))
+
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/datatypes/tuple-model.cvc b/test/regress/regress0/datatypes/tuple-model.cvc
new file mode 100644
index 0000000..1d1b400
--- /dev/null
+++ b/test/regress/regress0/datatypes/tuple-model.cvc
@@ -0,0 +1,5 @@
+% This was breaking with --check-models due to tuple model breakage.
+% EXPECT: sat
+x : [ INT, INT ];
+ASSERT x.0 = 5;
+CHECKSAT;
diff --git a/test/regress/regress0/datatypes/tuple-record-bug.cvc b/test/regress/regress0/datatypes/tuple-record-bug.cvc
new file mode 100644
index 0000000..33c68de
--- /dev/null
+++ b/test/regress/regress0/datatypes/tuple-record-bug.cvc
@@ -0,0 +1,20 @@
+% EXPECT: invalid
+
+Mem_0 : TYPE = ARRAY INT OF INT;
+
+MEMORY : TYPE = [# int : Mem_0, queries : Mem_0 #];
+
+x : INT;
+
+foo : MEMORY -> MEMORY
+    = LAMBDA (x : MEMORY) : LET y = x WITH .int := x.int IN y;
+
+m : MEMORY;
+
+w : [MEMORY,INT] =
+        IF x = 0
+        THEN (foo(m),0)
+        ELSE (m, 0)
+        ENDIF;
+
+QUERY w.1 = 1;
diff --git a/test/regress/regress0/datatypes/tuple.cvc b/test/regress/regress0/datatypes/tuple.cvc
new file mode 100644
index 0000000..3667375
--- /dev/null
+++ b/test/regress/regress0/datatypes/tuple.cvc
@@ -0,0 +1,10 @@
+% EXPECT: valid
+x: [REAL,INT,REAL] = ( 4/5, 9, 11/9 );
+first_elem: REAL = x.0;
+third_elem: REAL = x.2;
+
+Tup: TYPE = [REAL,INT,REAL];
+y:  Tup = ( 4/5, 9, 11/9 );
+y1: Tup = y WITH .1 := 3; 
+
+QUERY x=y AND first_elem = y1.0 AND third_elem = y1.2 AND y1.1 = 3;
diff --git a/test/regress/regress0/datatypes/typed_v10l30054.cvc b/test/regress/regress0/datatypes/typed_v10l30054.cvc
new file mode 100644
index 0000000..ee414ed
--- /dev/null
+++ b/test/regress/regress0/datatypes/typed_v10l30054.cvc
@@ -0,0 +1,43 @@
+% EXPECT: valid
+DATATYPE
+  nat = succ(pred : nat) | zero,
+  list = cons(car : tree, cdr : list) | null,
+  tree = node(children : list) | leaf(data : nat)
+END;
+
+x1 : nat ;
+x2 : nat ;
+x3 : nat ;
+x4 : nat ;
+x5 : nat ;
+x6 : nat ;
+x7 : nat ;
+x8 : nat ;
+x9 : nat ;
+x10 : nat ;
+x11 : list ;
+x12 : list ;
+x13 : list ;
+x14 : list ;
+x15 : list ;
+x16 : list ;
+x17 : list ;
+x18 : list ;
+x19 : list ;
+x20 : list ;
+x21 : tree ;
+x22 : tree ;
+x23 : tree ;
+x24 : tree ;
+x25 : tree ;
+x26 : tree ;
+x27 : tree ;
+x28 : tree ;
+x29 : tree ;
+x30 : tree ;
+
+QUERY 
+
+(NOT (((x4 = x4)
+ AND (NOT is_leaf((LET x81 = null IN (IF is_cons(x81) THEN car(x81) ELSE leaf(zero) ENDIF)))))
+ AND (NOT (x10 = x2))));
diff --git a/test/regress/regress0/datatypes/typed_v1l80005.cvc b/test/regress/regress0/datatypes/typed_v1l80005.cvc
new file mode 100644
index 0000000..988646f
--- /dev/null
+++ b/test/regress/regress0/datatypes/typed_v1l80005.cvc
@@ -0,0 +1,21 @@
+% EXPECT: valid
+DATATYPE
+  nat = succ(pred : nat) | zero,
+  list = cons(car : tree, cdr : list) | null,
+  tree = node(children : list) | leaf(data : nat)
+END;
+
+x1 : nat ;
+x2 : list ;
+x3 : tree ;
+
+QUERY 
+
+(NOT ((((((((NOT is_succ((LET x90 = (LET x91 = node(cons(x3,cons((LET x92 = (LET x93 = cons(node(x2),(LET x94 = node((LET x95 = null IN (IF is_cons(x95) THEN cdr(x95) ELSE null ENDIF))) IN (IF is_node(x94) THEN children(x94) ELSE null ENDIF))) IN (IF is_cons(x93) THEN cdr(x93) ELSE null ENDIF)) IN (IF is_cons(x92) THEN car(x92) ELSE leaf(zero) ENDIF)),cons(node(cons(node((LET x96 = node(x2) IN (IF is_node(x96) THEN children(x96) ELSE null ENDIF))),cons((LET x97 = (LET x98 = leaf((LET x99 [...]
+ AND (node((LET x87 = cons((LET x88 = null IN (IF is_cons(x88) THEN car(x88) ELSE leaf(zero) ENDIF)),(LET x89 = cons(node(cons(x3,x2)),null) IN (IF is_cons(x89) THEN cdr(x89) ELSE null ENDIF))) IN (IF is_cons(x87) THEN cdr(x87) ELSE null ENDIF))) = (LET x85 = (LET x86 = x3 IN (IF is_node(x86) THEN children(x86) ELSE null ENDIF)) IN (IF is_cons(x85) THEN car(x85) ELSE leaf(zero) ENDIF))))
+ AND is_null((LET x83 = cons(node(null),(LET x84 = x2 IN (IF is_cons(x84) THEN cdr(x84) ELSE null ENDIF))) IN (IF is_cons(x83) THEN cdr(x83) ELSE null ENDIF))))
+ AND is_null(cons(leaf((LET x77 = succ((LET x78 = (LET x79 = zero IN (IF is_succ(x79) THEN pred(x79) ELSE zero ENDIF)) IN (IF is_succ(x78) THEN pred(x78) ELSE zero ENDIF))) IN (IF is_succ(x77) THEN pred(x77) ELSE zero ENDIF))),(LET x80 = leaf((LET x81 = succ((LET x82 = x3 IN (IF is_leaf(x82) THEN data(x82) ELSE zero ENDIF))) IN (IF is_succ(x81) THEN pred(x81) ELSE zero ENDIF))) IN (IF is_node(x80) THEN children(x80) ELSE null ENDIF)))))
+ AND is_node(leaf(zero)))
+ AND (NOT (x2 = null)))
+ AND (NOT is_zero((LET x76 = node(cons(leaf(succ(zero)),null)) IN (IF is_leaf(x76) THEN data(x76) ELSE zero ENDIF)))))
+ AND is_null((LET x74 = (LET x75 = null IN (IF is_cons(x75) THEN cdr(x75) ELSE null ENDIF)) IN (IF is_cons(x74) THEN cdr(x74) ELSE null ENDIF)))));
diff --git a/test/regress/regress0/datatypes/typed_v2l30079.cvc b/test/regress/regress0/datatypes/typed_v2l30079.cvc
new file mode 100644
index 0000000..f32c9e5
--- /dev/null
+++ b/test/regress/regress0/datatypes/typed_v2l30079.cvc
@@ -0,0 +1,19 @@
+% EXPECT: invalid
+DATATYPE
+  nat = succ(pred : nat) | zero,
+  list = cons(car : tree, cdr : list) | null,
+  tree = node(children : list) | leaf(data : nat)
+END;
+
+x1 : nat ;
+x2 : nat ;
+x3 : list ;
+x4 : list ;
+x5 : tree ;
+x6 : tree ;
+
+QUERY 
+
+(NOT ((is_node(x6)
+ AND (x6 = x5))
+ AND (NOT (null = cons(x6,x3)))));
diff --git a/test/regress/regress0/datatypes/typed_v3l20092.cvc b/test/regress/regress0/datatypes/typed_v3l20092.cvc
new file mode 100644
index 0000000..c6260e2
--- /dev/null
+++ b/test/regress/regress0/datatypes/typed_v3l20092.cvc
@@ -0,0 +1,21 @@
+% EXPECT: valid
+DATATYPE
+  nat = succ(pred : nat) | zero,
+  list = cons(car : tree, cdr : list) | null,
+  tree = node(children : list) | leaf(data : nat)
+END;
+
+x1 : nat ;
+x2 : nat ;
+x3 : nat ;
+x4 : list ;
+x5 : list ;
+x6 : list ;
+x7 : tree ;
+x8 : tree ;
+x9 : tree ;
+
+QUERY 
+
+(NOT (((LET x137 = x1 IN (IF is_succ(x137) THEN pred(x137) ELSE zero ENDIF)) = (LET x135 = (LET x136 = null IN (IF is_cons(x136) THEN car(x136) ELSE leaf(zero) ENDIF)) IN (IF is_leaf(x135) THEN data(x135) ELSE zero ENDIF)))
+ AND (cons(node(x6),(LET x134 = x7 IN (IF is_node(x134) THEN children(x134) ELSE null ENDIF))) = (LET x132 = node((LET x133 = x6 IN (IF is_cons(x133) THEN cdr(x133) ELSE null ENDIF))) IN (IF is_node(x132) THEN children(x132) ELSE null ENDIF)))));
diff --git a/test/regress/regress0/datatypes/typed_v5l30069.cvc b/test/regress/regress0/datatypes/typed_v5l30069.cvc
new file mode 100644
index 0000000..05d0247
--- /dev/null
+++ b/test/regress/regress0/datatypes/typed_v5l30069.cvc
@@ -0,0 +1,28 @@
+% EXPECT: valid
+DATATYPE
+  nat = succ(pred : nat) | zero,
+  list = cons(car : tree, cdr : list) | null,
+  tree = node(children : list) | leaf(data : nat)
+END;
+
+x1 : nat ;
+x2 : nat ;
+x3 : nat ;
+x4 : nat ;
+x5 : nat ;
+x6 : list ;
+x7 : list ;
+x8 : list ;
+x9 : list ;
+x10 : list ;
+x11 : tree ;
+x12 : tree ;
+x13 : tree ;
+x14 : tree ;
+x15 : tree ;
+
+QUERY 
+
+(NOT ((is_cons((LET x121 = leaf((LET x122 = x13 IN (IF is_leaf(x122) THEN data(x122) ELSE zero ENDIF))) IN (IF is_node(x121) THEN children(x121) ELSE null ENDIF)))
+ AND (x15 = node(x6)))
+ AND (NOT is_cons(x10))));
diff --git a/test/regress/regress0/datatypes/v10l40099.cvc b/test/regress/regress0/datatypes/v10l40099.cvc
new file mode 100644
index 0000000..7b2da4b
--- /dev/null
+++ b/test/regress/regress0/datatypes/v10l40099.cvc
@@ -0,0 +1,44 @@
+% EXPECT: valid
+DATATYPE
+  nat = succ(pred : nat) | zero,
+  list = cons(car : tree, cdr : list) | null,
+  tree = node(children : list) | leaf(data : nat)
+END;
+
+x1 : nat ;
+x2 : nat ;
+x3 : nat ;
+x4 : nat ;
+x5 : nat ;
+x6 : nat ;
+x7 : nat ;
+x8 : nat ;
+x9 : nat ;
+x10 : nat ;
+x11 : list ;
+x12 : list ;
+x13 : list ;
+x14 : list ;
+x15 : list ;
+x16 : list ;
+x17 : list ;
+x18 : list ;
+x19 : list ;
+x20 : list ;
+x21 : tree ;
+x22 : tree ;
+x23 : tree ;
+x24 : tree ;
+x25 : tree ;
+x26 : tree ;
+x27 : tree ;
+x28 : tree ;
+x29 : tree ;
+x30 : tree ;
+
+QUERY 
+
+(NOT ((((NOT is_zero(x3))
+ AND (x8 = zero))
+ AND (NOT (x25 = x28)))
+ AND (NOT is_zero(x8))));
diff --git a/test/regress/regress0/datatypes/v2l40025.cvc b/test/regress/regress0/datatypes/v2l40025.cvc
new file mode 100644
index 0000000..fc466f3
--- /dev/null
+++ b/test/regress/regress0/datatypes/v2l40025.cvc
@@ -0,0 +1,20 @@
+% EXPECT: valid
+DATATYPE
+  nat = succ(pred : nat) | zero,
+  list = cons(car : tree, cdr : list) | null,
+  tree = node(children : list) | leaf(data : nat)
+END;
+
+x1 : nat ;
+x2 : nat ;
+x3 : list ;
+x4 : list ;
+x5 : tree ;
+x6 : tree ;
+
+QUERY 
+
+(NOT (((is_leaf(x5)
+ AND (NOT (x2 = x1)))
+ AND (x2 = pred(pred(zero))))
+ AND (NOT is_node(node(null)))));
diff --git a/test/regress/regress0/datatypes/v3l60006.cvc b/test/regress/regress0/datatypes/v3l60006.cvc
new file mode 100644
index 0000000..b7019e7
--- /dev/null
+++ b/test/regress/regress0/datatypes/v3l60006.cvc
@@ -0,0 +1,25 @@
+% EXPECT: invalid
+DATATYPE
+  nat = succ(pred : nat) | zero,
+  list = cons(car : tree, cdr : list) | null,
+  tree = node(children : list) | leaf(data : nat)
+END;
+
+x1 : nat ;
+x2 : nat ;
+x3 : nat ;
+x4 : list ;
+x5 : list ;
+x6 : list ;
+x7 : tree ;
+x8 : tree ;
+x9 : tree ;
+
+QUERY 
+
+(NOT ((((((NOT is_succ(pred(data(leaf(x3)))))
+ AND (x1 = zero))
+ AND (NOT is_zero(succ(succ(zero)))))
+ AND (NOT (x3 = x2)))
+ AND (x4 = cdr(x5)))
+ AND is_cons(cons(x8,x5))));
diff --git a/test/regress/regress0/datatypes/v5l30058.cvc b/test/regress/regress0/datatypes/v5l30058.cvc
new file mode 100644
index 0000000..be101b8
--- /dev/null
+++ b/test/regress/regress0/datatypes/v5l30058.cvc
@@ -0,0 +1,28 @@
+% EXPECT: invalid
+DATATYPE
+  nat = succ(pred : nat) | zero,
+  list = cons(car : tree, cdr : list) | null,
+  tree = node(children : list) | leaf(data : nat)
+END;
+
+x1 : nat ;
+x2 : nat ;
+x3 : nat ;
+x4 : nat ;
+x5 : nat ;
+x6 : list ;
+x7 : list ;
+x8 : list ;
+x9 : list ;
+x10 : list ;
+x11 : tree ;
+x12 : tree ;
+x13 : tree ;
+x14 : tree ;
+x15 : tree ;
+
+QUERY 
+
+(NOT (((NOT (node(x9) = car(x8)))
+ AND (node(x6) = x11))
+ AND (NOT is_node(x15))));
diff --git a/test/regress/regress0/datatypes/wrong-sel-simp.cvc b/test/regress/regress0/datatypes/wrong-sel-simp.cvc
new file mode 100644
index 0000000..b0dbdc4
--- /dev/null
+++ b/test/regress/regress0/datatypes/wrong-sel-simp.cvc
@@ -0,0 +1,6 @@
+% EXPECT: invalid
+DATATYPE
+  nat = succ(pred : nat) | zero
+END;
+
+QUERY pred(zero) = zero;
diff --git a/test/regress/regress0/decision/Makefile.am b/test/regress/regress0/decision/Makefile.am
new file mode 100644
index 0000000..ccf86e8
--- /dev/null
+++ b/test/regress/regress0/decision/Makefile.am
@@ -0,0 +1,77 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	wchains010ue.delta02.smt \
+	bitvec0.smt \
+	bitvec0.delta01.smt \
+	bitvec5.smt \
+	quant-Arrays_Q1-noinfer.smt2 \
+	quant-ex1.smt2 \
+	uflia-xs-09-16-3-4-1-5.delta03.smt \
+	aufbv-fuzz01.smt \
+	bug347.smt \
+	bug374a.smt \
+	bug374b.smt2 \
+	error20.smt \
+	error20.delta01.smt \
+	error122.smt \
+	error122.delta01.smt \
+	error3.delta01.smt \
+	pp-regfile.delta01.smt \
+	pp-regfile.delta02.smt
+
+EXTRA_DIST = $(TESTS) \
+	aufbv-fuzz01.smt.expect \
+	pp-regfile.delta01.smt.expect \
+	bitvec0.delta01.smt.expect \
+	pp-regfile.delta02.smt.expect \
+	uflia-xs-09-16-3-4-1-5.delta03.smt.expect \
+	bitvec0.smt.expect \
+	bitvec5.smt.expect \
+	quant-Arrays_Q1-noinfer.smt2.expect \
+	wchains010ue.delta02.smt.expect \
+	bug347.smt.expect \
+	bug374a.smt.expect \
+	bug374b.smt2.expect \
+	quant-ex1.disable_miniscope.smt2.expect \
+	wchains010ue.smt.expect \
+	just_sat.expect \
+	quant-ex1.smt2.expect \
+	just_unsat.expect \
+	quant-symmetric_unsat_7.smt2.expect
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/decision/Makefile.in b/test/regress/regress0/decision/Makefile.in
new file mode 100644
index 0000000..582c236
--- /dev/null
+++ b/test/regress/regress0/decision/Makefile.in
@@ -0,0 +1,1152 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/decision
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	wchains010ue.delta02.smt \
+	bitvec0.smt \
+	bitvec0.delta01.smt \
+	bitvec5.smt \
+	quant-Arrays_Q1-noinfer.smt2 \
+	quant-ex1.smt2 \
+	uflia-xs-09-16-3-4-1-5.delta03.smt \
+	aufbv-fuzz01.smt \
+	bug347.smt \
+	bug374a.smt \
+	bug374b.smt2 \
+	error20.smt \
+	error20.delta01.smt \
+	error122.smt \
+	error122.delta01.smt \
+	error3.delta01.smt \
+	pp-regfile.delta01.smt \
+	pp-regfile.delta02.smt
+
+EXTRA_DIST = $(TESTS) \
+	aufbv-fuzz01.smt.expect \
+	pp-regfile.delta01.smt.expect \
+	bitvec0.delta01.smt.expect \
+	pp-regfile.delta02.smt.expect \
+	uflia-xs-09-16-3-4-1-5.delta03.smt.expect \
+	bitvec0.smt.expect \
+	bitvec5.smt.expect \
+	quant-Arrays_Q1-noinfer.smt2.expect \
+	wchains010ue.delta02.smt.expect \
+	bug347.smt.expect \
+	bug374a.smt.expect \
+	bug374b.smt2.expect \
+	quant-ex1.disable_miniscope.smt2.expect \
+	wchains010ue.smt.expect \
+	just_sat.expect \
+	quant-ex1.smt2.expect \
+	just_unsat.expect \
+	quant-symmetric_unsat_7.smt2.expect
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/decision/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/decision/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+wchains010ue.delta02.smt.log: wchains010ue.delta02.smt
+	@p='wchains010ue.delta02.smt'; \
+	b='wchains010ue.delta02.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bitvec0.smt.log: bitvec0.smt
+	@p='bitvec0.smt'; \
+	b='bitvec0.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bitvec0.delta01.smt.log: bitvec0.delta01.smt
+	@p='bitvec0.delta01.smt'; \
+	b='bitvec0.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bitvec5.smt.log: bitvec5.smt
+	@p='bitvec5.smt'; \
+	b='bitvec5.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+quant-Arrays_Q1-noinfer.smt2.log: quant-Arrays_Q1-noinfer.smt2
+	@p='quant-Arrays_Q1-noinfer.smt2'; \
+	b='quant-Arrays_Q1-noinfer.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+quant-ex1.smt2.log: quant-ex1.smt2
+	@p='quant-ex1.smt2'; \
+	b='quant-ex1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+uflia-xs-09-16-3-4-1-5.delta03.smt.log: uflia-xs-09-16-3-4-1-5.delta03.smt
+	@p='uflia-xs-09-16-3-4-1-5.delta03.smt'; \
+	b='uflia-xs-09-16-3-4-1-5.delta03.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+aufbv-fuzz01.smt.log: aufbv-fuzz01.smt
+	@p='aufbv-fuzz01.smt'; \
+	b='aufbv-fuzz01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug347.smt.log: bug347.smt
+	@p='bug347.smt'; \
+	b='bug347.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug374a.smt.log: bug374a.smt
+	@p='bug374a.smt'; \
+	b='bug374a.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug374b.smt2.log: bug374b.smt2
+	@p='bug374b.smt2'; \
+	b='bug374b.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+error20.smt.log: error20.smt
+	@p='error20.smt'; \
+	b='error20.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+error20.delta01.smt.log: error20.delta01.smt
+	@p='error20.delta01.smt'; \
+	b='error20.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+error122.smt.log: error122.smt
+	@p='error122.smt'; \
+	b='error122.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+error122.delta01.smt.log: error122.delta01.smt
+	@p='error122.delta01.smt'; \
+	b='error122.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+error3.delta01.smt.log: error3.delta01.smt
+	@p='error3.delta01.smt'; \
+	b='error3.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pp-regfile.delta01.smt.log: pp-regfile.delta01.smt
+	@p='pp-regfile.delta01.smt'; \
+	b='pp-regfile.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pp-regfile.delta02.smt.log: pp-regfile.delta02.smt
+	@p='pp-regfile.delta02.smt'; \
+	b='pp-regfile.delta02.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/decision/aufbv-fuzz01.smt b/test/regress/regress0/decision/aufbv-fuzz01.smt
new file mode 100644
index 0000000..6605e2f
--- /dev/null
+++ b/test/regress/regress0/decision/aufbv-fuzz01.smt
@@ -0,0 +1,365 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status sat
+:extrafuns ((v0 BitVec[15]))
+:extrafuns ((v1 BitVec[3]))
+:extrafuns ((v2 BitVec[11]))
+:extrafuns ((a3 Array[3:5]))
+:extrafuns ((a4 Array[5:15]))
+:extrafuns ((a5 Array[2:13]))
+:extrafuns ((a6 Array[1:13]))
+:extrafuns ((a7 Array[3:7]))
+:extrafuns ((a8 Array[4:14]))
+:extrafuns ((a9 Array[8:5]))
+:extrafuns ((a10 Array[3:14]))
+:formula
+(let (?e11 bv1572[12])
+(let (?e12 bv33[9])
+(let (?e13 bv33[6])
+(let (?e14 bv18[7])
+(let (?e15 bv19308[16])
+(let (?e16 bv1[1])
+(let (?e17 bv13[4])
+(let (?e18 (bvlshr (zero_extend[7] ?e17) v2))
+(let (?e19 (ite (= bv1[1] (extract[4:4] ?e12)) ?e15 (sign_extend[9] ?e14)))
+(let (?e20 (ite (bvugt ?e12 (zero_extend[8] ?e16)) bv1[1] bv0[1]))
+(let (?e21 (bvnor (zero_extend[8] v1) v2))
+(let (?e22 (bvnot ?e21))
+(let (?e23 (ite (bvsge (sign_extend[5] ?e13) v2) bv1[1] bv0[1]))
+(let (?e24 (ite (bvsge ?e11 (zero_extend[1] ?e22)) bv1[1] bv0[1]))
+(let (?e25 (ite (bvsle v0 (sign_extend[4] v2)) bv1[1] bv0[1]))
+(let (?e26 (store a9 (extract[9:2] ?e21) (extract[5:1] ?e18)))
+(let (?e27 (store a6 (extract[0:0] ?e22) (sign_extend[10] v1)))
+(let (?e28 (store a6 (extract[2:2] v1) (zero_extend[12] ?e24)))
+(let (?e29 (store a9 (extract[7:0] ?e22) (extract[8:4] v0)))
+(let (?e30 (store a10 (extract[7:5] ?e22) (zero_extend[10] ?e17)))
+(let (?e31 (ite (= a8 a8) bv1[1] bv0[1]))
+(let (?e32 (select ?e28 ?e16))
+(let (?e33 (select ?e29 (extract[13:6] ?e15)))
+(let (?e34 (select a3 (zero_extend[2] ?e23)))
+(let (?e35 (select ?e30 (zero_extend[2] ?e20)))
+(let (?e36 (select a5 (sign_extend[1] ?e20)))
+(let (?e37 (select a4 (sign_extend[4] ?e24)))
+(let (?e38 (select ?e26 (zero_extend[7] ?e31)))
+(let (?e39 (store a6 ?e16 (zero_extend[8] ?e33)))
+(let (?e40 (store a7 (extract[7:5] ?e15) (zero_extend[6] ?e16)))
+(let (?e41 (store a9 (extract[8:1] ?e21) ?e38))
+(let (?e42 (select a3 (zero_extend[2] ?e23)))
+(let (?e43 (select a4 (extract[6:2] ?e22)))
+(let (?e44 (select a4 (extract[5:1] ?e13)))
+(let (?e45 (store ?e30 (extract[4:2] ?e42) (sign_extend[5] ?e12)))
+(let (?e46 (select ?e39 (extract[0:0] ?e22)))
+(let (?e47 (select ?e40 (extract[2:0] ?e14)))
+(let (?e48 (store ?e28 (extract[0:0] ?e18) ?e46))
+(let (?e49 (select ?e40 (extract[5:3] v2)))
+(let (?e50 (bvxor (zero_extend[8] ?e34) ?e46))
+(let (?e51 (bvneg ?e49))
+(let (?e52 (ite (bvsge (zero_extend[4] ?e21) ?e44) bv1[1] bv0[1]))
+(let (?e53 (ite (bvuge ?e12 (zero_extend[2] ?e51)) bv1[1] bv0[1]))
+(let (?e54 (bvor ?e32 (zero_extend[12] ?e53)))
+(let (?e55 (repeat[10] ?e23))
+(let (?e56 (bvnot ?e13))
+(let (?e57 (rotate_right[0] ?e23))
+(let (?e58 (ite (bvsge ?e35 (sign_extend[1] ?e46)) bv1[1] bv0[1]))
+(let (?e59 (bvxor ?e47 ?e47))
+(let (?e60 (sign_extend[2] ?e18))
+(let (?e61 (rotate_right[2] v1))
+(let (?e62 (bvadd (zero_extend[2] ?e36) ?e44))
+(let (?e63 (bvand ?e25 ?e53))
+(let (?e64 (bvneg ?e19))
+(let (?e65 (extract[8:2] ?e22))
+(let (?e66 (rotate_right[0] ?e16))
+(let (?e67 (bvlshr (zero_extend[11] v1) ?e35))
+(let (?e68 (zero_extend[7] ?e59))
+(let (?e69 (ite (bvsle ?e22 (sign_extend[10] ?e20)) bv1[1] bv0[1]))
+(let (?e70 (rotate_right[4] ?e55))
+(let (?e71 (bvshl v0 (sign_extend[8] ?e51)))
+(let (?e72 (bvshl ?e33 (sign_extend[4] ?e31)))
+(let (?e73 (bvxor ?e19 (sign_extend[15] ?e52)))
+(let (?e74 (bvnor (sign_extend[13] ?e31) ?e68))
+(let (?e75 (extract[0:0] ?e24))
+(let (?e76 (ite (= bv1[1] (extract[6:6] ?e71)) (zero_extend[4] ?e23) ?e42))
+(let (?e77 (bvand (sign_extend[1] ?e37) ?e15))
+(let (?e78 (bvashr ?e43 ?e62))
+(let (?e79 (repeat[1] ?e15))
+(let (?e80 (ite (bvule (sign_extend[8] ?e14) v0) bv1[1] bv0[1]))
+(let (?e81 (ite (bvslt (zero_extend[10] v1) ?e54) bv1[1] bv0[1]))
+(let (?e82 (ite (= (sign_extend[6] ?e38) ?e18) bv1[1] bv0[1]))
+(let (?e83 (ite (bvsgt (zero_extend[8] ?e56) ?e67) bv1[1] bv0[1]))
+(let (?e84 (bvmul ?e32 (sign_extend[2] ?e22)))
+(let (?e85 (extract[7:6] ?e11))
+(let (?e86 (repeat[1] ?e55))
+(let (?e87 (bvashr (sign_extend[2] ?e54) ?e62))
+(let (?e88 (rotate_left[1] ?e55))
+(let (?e89 (concat ?e83 ?e69))
+(let (?e90 (bvadd (zero_extend[5] v2) ?e15))
+(let (?e91 (bvor ?e22 (sign_extend[8] ?e61)))
+(let (?e92 (extract[12:10] ?e79))
+(let (?e93 (ite (bvslt (zero_extend[14] ?e83) ?e62) bv1[1] bv0[1]))
+(let (?e94 (ite (bvsgt (sign_extend[9] ?e17) ?e60) bv1[1] bv0[1]))
+(flet ($e95 (bvugt (sign_extend[8] v1) v2))
+(flet ($e96 (bvult (sign_extend[1] ?e87) ?e19))
+(flet ($e97 (bvule ?e47 (zero_extend[5] ?e85)))
+(flet ($e98 (bvsge ?e68 (sign_extend[7] ?e59)))
+(flet ($e99 (bvuge ?e51 (sign_extend[2] ?e38)))
+(flet ($e100 (bvule (zero_extend[11] ?e42) ?e73))
+(flet ($e101 (bvuge ?e87 (sign_extend[2] ?e32)))
+(flet ($e102 (distinct ?e47 (zero_extend[1] ?e56)))
+(flet ($e103 (distinct ?e32 (sign_extend[4] ?e12)))
+(flet ($e104 (bvuge (sign_extend[6] ?e69) ?e47))
+(flet ($e105 (bvsle ?e59 (zero_extend[6] ?e52)))
+(flet ($e106 (bvsgt ?e67 (zero_extend[8] ?e56)))
+(flet ($e107 (bvsle (zero_extend[2] ?e93) ?e92))
+(flet ($e108 (bvuge ?e72 (zero_extend[4] ?e81)))
+(flet ($e109 (bvult (zero_extend[13] ?e57) ?e35))
+(flet ($e110 (bvsge ?e74 (sign_extend[13] ?e69)))
+(flet ($e111 (bvslt ?e68 (sign_extend[8] ?e13)))
+(flet ($e112 (bvslt (sign_extend[4] ?e69) ?e38))
+(flet ($e113 (bvsle (zero_extend[3] ?e36) ?e79))
+(flet ($e114 (bvule ?e51 (zero_extend[6] ?e23)))
+(flet ($e115 (bvsle (sign_extend[7] ?e85) ?e12))
+(flet ($e116 (bvsge (sign_extend[2] ?e31) ?e61))
+(flet ($e117 (bvugt ?e77 (sign_extend[11] ?e76)))
+(flet ($e118 (bvsge (sign_extend[11] ?e85) ?e46))
+(flet ($e119 (= (sign_extend[9] ?e25) ?e70))
+(flet ($e120 (bvsge ?e47 (zero_extend[6] ?e52)))
+(flet ($e121 (= (sign_extend[7] ?e51) ?e35))
+(flet ($e122 (= ?e78 (zero_extend[8] ?e14)))
+(flet ($e123 (bvslt (zero_extend[4] ?e91) ?e87))
+(flet ($e124 (bvslt (sign_extend[12] ?e92) ?e44))
+(flet ($e125 (distinct ?e58 ?e80))
+(flet ($e126 (bvugt ?e53 ?e58))
+(flet ($e127 (bvsgt (sign_extend[5] ?e88) ?e87))
+(flet ($e128 (bvslt ?e37 v0))
+(flet ($e129 (bvsge (zero_extend[2] ?e23) v1))
+(flet ($e130 (bvule ?e50 ?e36))
+(flet ($e131 (bvsgt (zero_extend[13] ?e92) ?e73))
+(flet ($e132 (bvult (zero_extend[10] ?e72) ?e37))
+(flet ($e133 (bvsle ?e93 ?e53))
+(flet ($e134 (bvsge (sign_extend[2] ?e91) ?e46))
+(flet ($e135 (bvuge (sign_extend[13] ?e52) ?e67))
+(flet ($e136 (bvsge (sign_extend[13] ?e23) ?e67))
+(flet ($e137 (bvslt ?e70 (sign_extend[9] ?e69)))
+(flet ($e138 (bvult ?e88 ?e55))
+(flet ($e139 (bvsle ?e87 ?e78))
+(flet ($e140 (bvsle ?e62 (zero_extend[14] ?e83)))
+(flet ($e141 (bvugt ?e67 (zero_extend[13] ?e69)))
+(flet ($e142 (= ?e71 (zero_extend[2] ?e46)))
+(flet ($e143 (bvslt (zero_extend[9] ?e34) ?e67))
+(flet ($e144 (bvsge ?e14 ?e51))
+(flet ($e145 (bvult ?e51 (sign_extend[2] ?e33)))
+(flet ($e146 (bvugt (zero_extend[9] ?e25) ?e70))
+(flet ($e147 (bvule ?e64 (sign_extend[6] ?e86)))
+(flet ($e148 (bvugt ?e65 (sign_extend[6] ?e24)))
+(flet ($e149 (bvugt (sign_extend[11] ?e85) ?e50))
+(flet ($e150 (bvult (zero_extend[4] ?e91) ?e71))
+(flet ($e151 (= (zero_extend[5] ?e18) ?e77))
+(flet ($e152 (bvult (zero_extend[14] ?e93) ?e43))
+(flet ($e153 (bvsge ?e46 (sign_extend[3] ?e70)))
+(flet ($e154 (= v0 (sign_extend[8] ?e51)))
+(flet ($e155 (distinct ?e78 (sign_extend[3] ?e11)))
+(flet ($e156 (= ?e23 ?e25))
+(flet ($e157 (bvslt (zero_extend[1] ?e60) ?e67))
+(flet ($e158 (bvule ?e74 (zero_extend[13] ?e25)))
+(flet ($e159 (bvsgt ?e46 ?e50))
+(flet ($e160 (bvult (sign_extend[12] ?e93) ?e84))
+(flet ($e161 (= ?e70 (zero_extend[9] ?e82)))
+(flet ($e162 (bvugt (sign_extend[14] ?e63) ?e62))
+(flet ($e163 (bvslt ?e67 (zero_extend[7] ?e14)))
+(flet ($e164 (= ?e54 ?e54))
+(flet ($e165 (bvslt ?e67 (sign_extend[7] ?e49)))
+(flet ($e166 (bvugt ?e36 (zero_extend[12] ?e94)))
+(flet ($e167 (bvsle (zero_extend[1] ?e13) ?e49))
+(flet ($e168 (bvule (zero_extend[4] ?e18) ?e44))
+(flet ($e169 (bvult (zero_extend[3] ?e92) ?e13))
+(flet ($e170 (bvuge ?e70 (zero_extend[9] ?e20)))
+(flet ($e171 (bvule (zero_extend[10] ?e56) ?e64))
+(flet ($e172 (distinct (sign_extend[12] ?e80) ?e54))
+(flet ($e173 (bvult (sign_extend[5] ?e88) ?e71))
+(flet ($e174 (bvsge ?e50 (zero_extend[12] ?e75)))
+(flet ($e175 (bvsgt ?e36 (sign_extend[12] ?e66)))
+(flet ($e176 (bvslt (zero_extend[4] ?e51) ?e91))
+(flet ($e177 (bvugt (zero_extend[3] ?e65) ?e86))
+(flet ($e178 (= ?e60 ?e54))
+(flet ($e179 (bvslt v2 ?e18))
+(flet ($e180 (bvslt (zero_extend[10] ?e25) v2))
+(flet ($e181 (bvule ?e91 (sign_extend[4] ?e51)))
+(flet ($e182 (bvule ?e79 (zero_extend[10] ?e13)))
+(flet ($e183 (bvult ?e50 (zero_extend[9] ?e17)))
+(flet ($e184 (bvsgt ?e36 (sign_extend[12] ?e31)))
+(flet ($e185 (bvult (sign_extend[5] ?e18) ?e64))
+(flet ($e186 (bvule v2 (zero_extend[6] ?e38)))
+(flet ($e187 (bvsgt ?e62 (sign_extend[14] ?e31)))
+(flet ($e188 (bvsle ?e70 (zero_extend[1] ?e12)))
+(flet ($e189 (bvugt ?e22 (zero_extend[10] ?e20)))
+(flet ($e190 (bvsle (zero_extend[10] ?e31) ?e21))
+(flet ($e191 (bvsge (sign_extend[3] ?e36) ?e90))
+(flet ($e192 (bvule (zero_extend[4] ?e31) ?e38))
+(flet ($e193 (bvugt ?e91 (sign_extend[8] v1)))
+(flet ($e194 (bvuge (sign_extend[2] ?e11) ?e74))
+(flet ($e195 (distinct (sign_extend[13] ?e16) ?e67))
+(flet ($e196 (bvugt (zero_extend[6] ?e14) ?e36))
+(flet ($e197 (bvsgt ?e64 (zero_extend[15] ?e63)))
+(flet ($e198 (bvult ?e89 ?e89))
+(flet ($e199 (bvsgt ?e19 (zero_extend[15] ?e25)))
+(flet ($e200 (bvuge (zero_extend[9] ?e69) ?e86))
+(flet ($e201 (bvule ?e71 (zero_extend[8] ?e49)))
+(flet ($e202 (bvsgt ?e77 (zero_extend[2] ?e35)))
+(flet ($e203 (distinct (sign_extend[7] ?e14) ?e68))
+(flet ($e204 (distinct ?e78 ?e78))
+(flet ($e205 (bvsge (zero_extend[10] ?e31) ?e22))
+(flet ($e206 (bvsge ?e56 (zero_extend[5] ?e75)))
+(flet ($e207 (bvult ?e20 ?e82))
+(flet ($e208 (bvsge ?e79 (zero_extend[10] ?e56)))
+(flet ($e209 (= (zero_extend[5] ?e12) ?e74))
+(flet ($e210 (bvult (sign_extend[14] ?e93) ?e37))
+(flet ($e211 (bvugt (zero_extend[11] ?e52) ?e11))
+(flet ($e212 (bvugt (zero_extend[10] ?e66) ?e91))
+(flet ($e213 (bvugt (zero_extend[14] ?e52) ?e44))
+(flet ($e214 (bvuge ?e35 (zero_extend[13] ?e52)))
+(flet ($e215 (bvsge (zero_extend[9] ?e34) ?e68))
+(flet ($e216 (distinct ?e51 ?e51))
+(flet ($e217 (bvule ?e37 (sign_extend[12] v1)))
+(flet ($e218 (bvsle ?e18 (sign_extend[10] ?e31)))
+(flet ($e219 (bvuge (zero_extend[9] ?e16) ?e86))
+(flet ($e220 (distinct ?e15 ?e79))
+(flet ($e221 (= a3 a3))
+(flet ($e222 (xor $e106 $e207))
+(flet ($e223 (xor $e143 $e193))
+(flet ($e224 (xor $e218 $e144))
+(flet ($e225 (or $e161 $e165))
+(flet ($e226 (if_then_else $e194 $e136 $e108))
+(flet ($e227 (and $e168 $e183))
+(flet ($e228 (xor $e221 $e125))
+(flet ($e229 (not $e154))
+(flet ($e230 (or $e114 $e173))
+(flet ($e231 (iff $e105 $e132))
+(flet ($e232 (xor $e130 $e181))
+(flet ($e233 (xor $e199 $e96))
+(flet ($e234 (implies $e148 $e150))
+(flet ($e235 (xor $e200 $e210))
+(flet ($e236 (iff $e158 $e220))
+(flet ($e237 (or $e184 $e107))
+(flet ($e238 (xor $e223 $e120))
+(flet ($e239 (not $e115))
+(flet ($e240 (not $e172))
+(flet ($e241 (iff $e118 $e126))
+(flet ($e242 (not $e198))
+(flet ($e243 (if_then_else $e236 $e98 $e188))
+(flet ($e244 (xor $e170 $e127))
+(flet ($e245 (not $e190))
+(flet ($e246 (iff $e95 $e102))
+(flet ($e247 (and $e121 $e149))
+(flet ($e248 (implies $e109 $e197))
+(flet ($e249 (and $e164 $e216))
+(flet ($e250 (not $e234))
+(flet ($e251 (and $e152 $e233))
+(flet ($e252 (or $e238 $e176))
+(flet ($e253 (and $e116 $e187))
+(flet ($e254 (implies $e145 $e249))
+(flet ($e255 (implies $e229 $e206))
+(flet ($e256 (xor $e101 $e112))
+(flet ($e257 (xor $e97 $e178))
+(flet ($e258 (or $e119 $e124))
+(flet ($e259 (if_then_else $e133 $e141 $e215))
+(flet ($e260 (xor $e196 $e248))
+(flet ($e261 (or $e237 $e251))
+(flet ($e262 (and $e205 $e201))
+(flet ($e263 (xor $e192 $e128))
+(flet ($e264 (if_then_else $e103 $e254 $e163))
+(flet ($e265 (if_then_else $e182 $e250 $e224))
+(flet ($e266 (implies $e203 $e204))
+(flet ($e267 (implies $e252 $e253))
+(flet ($e268 (iff $e167 $e159))
+(flet ($e269 (implies $e232 $e137))
+(flet ($e270 (or $e169 $e259))
+(flet ($e271 (not $e142))
+(flet ($e272 (or $e255 $e202))
+(flet ($e273 (implies $e217 $e104))
+(flet ($e274 (or $e231 $e257))
+(flet ($e275 (xor $e214 $e227))
+(flet ($e276 (if_then_else $e162 $e195 $e122))
+(flet ($e277 (xor $e230 $e153))
+(flet ($e278 (or $e242 $e186))
+(flet ($e279 (and $e185 $e222))
+(flet ($e280 (and $e177 $e262))
+(flet ($e281 (if_then_else $e260 $e189 $e267))
+(flet ($e282 (and $e160 $e270))
+(flet ($e283 (not $e129))
+(flet ($e284 (xor $e264 $e146))
+(flet ($e285 (implies $e147 $e284))
+(flet ($e286 (if_then_else $e247 $e123 $e274))
+(flet ($e287 (xor $e265 $e175))
+(flet ($e288 (not $e174))
+(flet ($e289 (iff $e244 $e157))
+(flet ($e290 (implies $e281 $e281))
+(flet ($e291 (and $e289 $e110))
+(flet ($e292 (iff $e211 $e179))
+(flet ($e293 (implies $e279 $e191))
+(flet ($e294 (implies $e272 $e266))
+(flet ($e295 (iff $e140 $e166))
+(flet ($e296 (implies $e287 $e100))
+(flet ($e297 (not $e213))
+(flet ($e298 (and $e286 $e171))
+(flet ($e299 (if_then_else $e246 $e228 $e292))
+(flet ($e300 (and $e256 $e297))
+(flet ($e301 (not $e240))
+(flet ($e302 (and $e282 $e245))
+(flet ($e303 (xor $e280 $e298))
+(flet ($e304 (not $e235))
+(flet ($e305 (not $e225))
+(flet ($e306 (or $e300 $e277))
+(flet ($e307 (implies $e268 $e209))
+(flet ($e308 (not $e263))
+(flet ($e309 (iff $e117 $e285))
+(flet ($e310 (not $e156))
+(flet ($e311 (implies $e151 $e288))
+(flet ($e312 (or $e275 $e306))
+(flet ($e313 (iff $e271 $e243))
+(flet ($e314 (if_then_else $e312 $e219 $e311))
+(flet ($e315 (or $e226 $e305))
+(flet ($e316 (implies $e290 $e241))
+(flet ($e317 (or $e139 $e309))
+(flet ($e318 (xor $e299 $e301))
+(flet ($e319 (iff $e314 $e310))
+(flet ($e320 (and $e295 $e135))
+(flet ($e321 (not $e269))
+(flet ($e322 (if_then_else $e278 $e321 $e278))
+(flet ($e323 (if_then_else $e131 $e155 $e276))
+(flet ($e324 (and $e261 $e212))
+(flet ($e325 (iff $e307 $e323))
+(flet ($e326 (implies $e316 $e113))
+(flet ($e327 (not $e291))
+(flet ($e328 (xor $e99 $e313))
+(flet ($e329 (and $e308 $e304))
+(flet ($e330 (implies $e322 $e318))
+(flet ($e331 (xor $e138 $e319))
+(flet ($e332 (and $e180 $e315))
+(flet ($e333 (iff $e283 $e283))
+(flet ($e334 (implies $e332 $e325))
+(flet ($e335 (xor $e324 $e327))
+(flet ($e336 (xor $e317 $e303))
+(flet ($e337 (xor $e296 $e302))
+(flet ($e338 (iff $e335 $e337))
+(flet ($e339 (iff $e326 $e326))
+(flet ($e340 (and $e339 $e111))
+(flet ($e341 (or $e328 $e330))
+(flet ($e342 (not $e340))
+(flet ($e343 (if_then_else $e320 $e320 $e333))
+(flet ($e344 (iff $e336 $e329))
+(flet ($e345 (if_then_else $e334 $e331 $e294))
+(flet ($e346 (not $e345))
+(flet ($e347 (xor $e293 $e293))
+(flet ($e348 (and $e347 $e239))
+(flet ($e349 (iff $e208 $e341))
+(flet ($e350 (implies $e338 $e343))
+(flet ($e351 (iff $e258 $e342))
+(flet ($e352 (implies $e134 $e134))
+(flet ($e353 (if_then_else $e350 $e344 $e351))
+(flet ($e354 (if_then_else $e353 $e346 $e273))
+(flet ($e355 (and $e348 $e354))
+(flet ($e356 (iff $e352 $e349))
+(flet ($e357 (xor $e355 $e356))
+$e357
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/decision/aufbv-fuzz01.smt.expect b/test/regress/regress0/decision/aufbv-fuzz01.smt.expect
new file mode 100644
index 0000000..849b886
--- /dev/null
+++ b/test/regress/regress0/decision/aufbv-fuzz01.smt.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --decision=justification
+% EXPECT: sat
diff --git a/test/regress/regress0/decision/bitvec0.delta01.smt b/test/regress/regress0/decision/bitvec0.delta01.smt
new file mode 100644
index 0000000..55aec06
--- /dev/null
+++ b/test/regress/regress0/decision/bitvec0.delta01.smt
@@ -0,0 +1,20 @@
+(benchmark bitvec0.smt
+:logic QF_BV
+:extrafuns ((t BitVec[32]))
+:status unknown
+:formula
+(let (?n1 (extract[4:0] t))
+(let (?n2 (extract[6:2] t))
+(flet ($n3 (= ?n1 ?n2))
+(let (?n4 (extract[6:6] t))
+(let (?n5 (extract[0:0] t))
+(flet ($n6 (= ?n4 ?n5))
+(let (?n7 (extract[1:1] t))
+(let (?n8 (extract[5:5] t))
+(flet ($n9 (= ?n7 ?n8))
+(flet ($n10 (and $n6 $n9))
+(flet ($n11 true)
+(flet ($n12 (if_then_else $n3 $n10 $n11))
+(flet ($n13 (not $n12))
+$n13
+))))))))))))))
diff --git a/test/regress/regress0/decision/bitvec0.delta01.smt.expect b/test/regress/regress0/decision/bitvec0.delta01.smt.expect
new file mode 100644
index 0000000..7fd1d5a
--- /dev/null
+++ b/test/regress/regress0/decision/bitvec0.delta01.smt.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --decision=justification
+% EXPECT: unsat
diff --git a/test/regress/regress0/decision/bitvec0.smt b/test/regress/regress0/decision/bitvec0.smt
new file mode 100644
index 0000000..1276637
--- /dev/null
+++ b/test/regress/regress0/decision/bitvec0.smt
@@ -0,0 +1,24 @@
+(benchmark bitvec0.smt
+  :source {
+Hand-crafted bit-vector benchmarks.  Some are from the SVC benchmark suite.
+Contributed by Vijay Ganesh (vganesh at stanford.edu).  Translated into SMT-LIB
+format by Clark Barrett using CVC3.
+
+}
+  :status unsat
+  :difficulty { 0 }
+  :category { crafted }
+  :logic QF_BV
+  :extrafuns ((a BitVec[32]))
+  :extrafuns ((t BitVec[32]))
+  :extrafuns ((b BitVec[32]))
+  :extrafuns ((aa BitVec[32]))
+  :extrafuns ((c BitVec[32]))
+  :extrafuns ((d BitVec[32]))
+  :extrafuns ((aaaa BitVec[32]))
+  :extrafuns ((bbb BitVec[32]))
+  :extrafuns ((aaa BitVec[32]))
+  :extrafuns ((z BitVec[32]))
+  :formula
+(let (?cvc_0 (extract[6:2] a)) (let (?cvc_1 (extract[2:2] t)) (let (?cvc_2 (extract[6:6] t)) (let (?cvc_3 (extract[2:0] b)) (let (?cvc_4 (extract[2:0] c)) (not (and (and (and (if_then_else (= (concat (concat bv0[1] (extract[3:2] a)) (extract[6:5] a)) ?cvc_0) (= ?cvc_0 bv0[5]) (if_then_else (or (or (= bv2[3] bv6[3])  (= bv0[3] bv6[3]) )  (= bv7[3] bv6[3]) ) false true)) (and (if_then_else (= (concat (extract[3:2] t) (extract[6:5] t)) (extract[5:2] t)) (= ?cvc_1 ?cvc_2) true) (if_then_else [...]
+)
diff --git a/test/regress/regress0/decision/bitvec0.smt.expect b/test/regress/regress0/decision/bitvec0.smt.expect
new file mode 100644
index 0000000..7fd1d5a
--- /dev/null
+++ b/test/regress/regress0/decision/bitvec0.smt.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --decision=justification
+% EXPECT: unsat
diff --git a/test/regress/regress0/decision/bitvec5.smt b/test/regress/regress0/decision/bitvec5.smt
new file mode 100644
index 0000000..3b6f2f3
--- /dev/null
+++ b/test/regress/regress0/decision/bitvec5.smt
@@ -0,0 +1,19 @@
+(benchmark bitvec5.smt
+  :source {
+Hand-crafted bit-vector benchmarks.  Some are from the SVC benchmark suite.
+Contributed by Vijay Ganesh (vganesh at stanford.edu).  Translated into SMT-LIB
+format by Clark Barrett using CVC3.
+
+}
+  :status unsat
+  :difficulty { 0 }
+  :category { crafted }
+  :logic QF_BV
+  :extrafuns ((a BitVec[32]))
+  :extrafuns ((b BitVec[32]))
+  :extrafuns ((c BitVec[32]))
+  :extrafuns ((d BitVec[32]))
+  :extrafuns ((e BitVec[32]))
+  :formula
+(not (and (implies (and (and (= (extract[31:0] a) (extract[31:0] b)) (= (extract[31:16] a) (extract[15:0] c))) (= (extract[31:8] b) (extract[23:0] d))) (= (extract[11:8] c) (extract[19:16] d))) (implies (= (extract[30:0] e) (extract[31:1] e)) (= (extract[0:0] e) (extract[31:31] e)))))
+)
diff --git a/test/regress/regress0/decision/bitvec5.smt.expect b/test/regress/regress0/decision/bitvec5.smt.expect
new file mode 100644
index 0000000..7fd1d5a
--- /dev/null
+++ b/test/regress/regress0/decision/bitvec5.smt.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --decision=justification
+% EXPECT: unsat
diff --git a/test/regress/regress0/decision/bug347.smt b/test/regress/regress0/decision/bug347.smt
new file mode 100644
index 0000000..f467cd4
--- /dev/null
+++ b/test/regress/regress0/decision/bug347.smt
@@ -0,0 +1,11 @@
+(benchmark B_
+  :status sat
+  :category { unknown }
+  :logic QF_AUFBV
+  :extrafuns ((delete_0_val_1 BitVec[32]))
+  :extrafuns ((delete_0_curr_6 BitVec[32]))
+  :extrafuns ((arr_next_13 Array[32:32]))
+  :extrafuns ((arr_next_14 Array[32:32]))
+  :extrafuns ((delete_0_head_1 BitVec[32]))
+  :formula (and (= bv0[32] (ite (= bv0[32] delete_0_head_1) (select arr_next_14 delete_0_curr_6) delete_0_curr_6)) (= arr_next_14 arr_next_13) (= bv1[32] (select arr_next_13 bv1[32])) (= delete_0_curr_6 (ite (= bv0[32] delete_0_val_1) bv0[32] bv1[32])))
+)
diff --git a/test/regress/regress0/decision/bug347.smt.expect b/test/regress/regress0/decision/bug347.smt.expect
new file mode 100644
index 0000000..849b886
--- /dev/null
+++ b/test/regress/regress0/decision/bug347.smt.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --decision=justification
+% EXPECT: sat
diff --git a/test/regress/regress0/decision/bug374a.smt b/test/regress/regress0/decision/bug374a.smt
new file mode 100644
index 0000000..e338417
--- /dev/null
+++ b/test/regress/regress0/decision/bug374a.smt
@@ -0,0 +1,1197 @@
+(benchmark fuzzsmt
+:logic AUFLIA
+:status unknown
+:extrafuns ((f0 Int Int Int))
+:extrafuns ((f1 Array Array Array Array))
+:extrapreds ((p0 Int))
+:extrapreds ((p1 Array))
+:extrafuns ((v0 Int))
+:extrafuns ((v1 Array))
+:assumption
+(exists (?qvar0 Int) (?qvar1 Int) (?qvar2 Int) 
+(flet ($qf0 (<= (f0 ?qvar1 ?qvar2) (f0 ?qvar0 ?qvar2)))
+$qf0
+))
+:formula
+(let (?e2 1)
+(let (?e3 0)
+(let (?e4 (ite (p0 v0) 1 0))
+(let (?e5 (* ?e3 v0))
+(let (?e6 (+ ?e5 ?e5))
+(let (?e7 (f0 ?e6 ?e4))
+(let (?e8 (~ v0))
+(let (?e9 (f0 ?e4 ?e5))
+(let (?e10 (f0 ?e6 ?e6))
+(let (?e11 (- ?e9 ?e7))
+(let (?e12 (+ ?e10 ?e7))
+(let (?e13 (ite (p0 ?e12) 1 0))
+(let (?e14 (* ?e3 ?e12))
+(let (?e15 (+ ?e8 ?e7))
+(let (?e16 (f0 ?e15 ?e10))
+(let (?e17 (* ?e15 ?e2))
+(let (?e18 (store v1 ?e12 ?e14))
+(let (?e19 (store v1 ?e8 ?e12))
+(let (?e20 (f1 v1 v1 v1))
+(let (?e21 (f1 ?e18 ?e20 ?e19))
+(flet ($e22 (p1 v1))
+(flet ($e23 (p1 ?e18))
+(flet ($e24 (p1 v1))
+(flet ($e25 (p1 ?e19))
+(flet ($e26 (p1 ?e20))
+(flet ($e27 (p1 ?e21))
+(flet ($e28 (<= ?e14 ?e16))
+(flet ($e29 (>= ?e4 v0))
+(flet ($e30 (< ?e13 ?e13))
+(flet ($e31 (<= ?e9 ?e6))
+(flet ($e32 (< ?e5 ?e13))
+(flet ($e33 (< ?e8 ?e11))
+(flet ($e34 (> ?e8 ?e9))
+(flet ($e35 (<= ?e7 ?e4))
+(flet ($e36 (distinct ?e13 ?e11))
+(flet ($e37 (distinct ?e17 ?e15))
+(flet ($e38 (= ?e8 ?e8))
+(flet ($e39 (distinct ?e16 ?e17))
+(flet ($e40 (= ?e12 ?e8))
+(flet ($e41 (distinct v0 ?e12))
+(flet ($e42 (= ?e11 ?e16))
+(flet ($e43 (< ?e10 ?e14))
+(flet ($e44 (> ?e17 ?e5))
+(flet ($e45 (distinct ?e11 ?e9))
+(flet ($e46 (> ?e14 v0))
+(flet ($e47 (<= v0 ?e7))
+(flet ($e48 (<= ?e13 ?e17))
+(flet ($e49 (> ?e13 ?e7))
+(flet ($e50 (> ?e17 v0))
+(flet ($e51 (>= ?e11 ?e14))
+(flet ($e52 (<= ?e14 ?e13))
+(flet ($e53 (<= ?e8 ?e6))
+(flet ($e54 (<= v0 ?e16))
+(flet ($e55 (distinct ?e6 v0))
+(flet ($e56 (> ?e7 ?e10))
+(flet ($e57 (distinct ?e11 ?e13))
+(flet ($e58 (> ?e6 ?e13))
+(flet ($e59 (distinct v0 ?e12))
+(flet ($e60 (distinct ?e14 ?e9))
+(flet ($e61 (> ?e8 ?e15))
+(flet ($e62 (= ?e9 ?e16))
+(flet ($e63 (= ?e14 ?e13))
+(flet ($e64 (> ?e11 ?e6))
+(flet ($e65 (distinct ?e16 ?e9))
+(flet ($e66 (>= ?e5 ?e7))
+(flet ($e67 (<= ?e9 ?e17))
+(flet ($e68 (= ?e13 v0))
+(flet ($e69 (p0 ?e13))
+(let (?e70 (ite $e33 ?e18 ?e18))
+(let (?e71 (ite $e25 ?e21 ?e19))
+(let (?e72 (ite $e23 ?e71 ?e18))
+(let (?e73 (ite $e36 v1 ?e71))
+(let (?e74 (ite $e44 v1 ?e21))
+(let (?e75 (ite $e65 ?e20 ?e20))
+(let (?e76 (ite $e30 v1 ?e71))
+(let (?e77 (ite $e28 ?e21 ?e20))
+(let (?e78 (ite $e67 ?e77 ?e75))
+(let (?e79 (ite $e29 ?e21 ?e70))
+(let (?e80 (ite $e54 ?e18 ?e74))
+(let (?e81 (ite $e53 ?e80 ?e79))
+(let (?e82 (ite $e27 v1 ?e79))
+(let (?e83 (ite $e37 ?e18 ?e75))
+(let (?e84 (ite $e30 ?e78 ?e82))
+(let (?e85 (ite $e47 ?e74 ?e21))
+(let (?e86 (ite $e67 ?e19 ?e21))
+(let (?e87 (ite $e32 ?e78 ?e86))
+(let (?e88 (ite $e50 ?e72 ?e80))
+(let (?e89 (ite $e63 ?e84 ?e88))
+(let (?e90 (ite $e46 ?e73 ?e21))
+(let (?e91 (ite $e27 ?e20 ?e74))
+(let (?e92 (ite $e60 ?e91 ?e83))
+(let (?e93 (ite $e55 ?e71 ?e19))
+(let (?e94 (ite $e40 ?e85 ?e81))
+(let (?e95 (ite $e56 ?e78 ?e20))
+(let (?e96 (ite $e27 ?e92 ?e79))
+(let (?e97 (ite $e68 ?e95 ?e86))
+(let (?e98 (ite $e39 ?e77 ?e94))
+(let (?e99 (ite $e57 ?e87 ?e79))
+(let (?e100 (ite $e60 ?e91 ?e99))
+(let (?e101 (ite $e33 ?e89 ?e93))
+(let (?e102 (ite $e43 ?e72 ?e82))
+(let (?e103 (ite $e24 ?e74 ?e81))
+(let (?e104 (ite $e38 ?e99 ?e99))
+(let (?e105 (ite $e64 ?e91 ?e77))
+(let (?e106 (ite $e57 ?e93 ?e79))
+(let (?e107 (ite $e51 ?e96 ?e88))
+(let (?e108 (ite $e24 ?e76 ?e102))
+(let (?e109 (ite $e62 ?e93 ?e97))
+(let (?e110 (ite $e26 ?e106 v1))
+(let (?e111 (ite $e48 ?e106 ?e70))
+(let (?e112 (ite $e58 ?e73 ?e76))
+(let (?e113 (ite $e61 ?e111 ?e106))
+(let (?e114 (ite $e69 ?e105 ?e81))
+(let (?e115 (ite $e22 ?e96 ?e100))
+(let (?e116 (ite $e48 ?e109 ?e88))
+(let (?e117 (ite $e31 v1 ?e77))
+(let (?e118 (ite $e41 ?e93 ?e86))
+(let (?e119 (ite $e24 ?e113 ?e20))
+(let (?e120 (ite $e46 ?e101 ?e110))
+(let (?e121 (ite $e28 ?e77 ?e96))
+(let (?e122 (ite $e49 ?e107 ?e105))
+(let (?e123 (ite $e59 ?e21 ?e73))
+(let (?e124 (ite $e22 ?e116 ?e116))
+(let (?e125 (ite $e31 ?e77 ?e111))
+(let (?e126 (ite $e66 ?e103 ?e93))
+(let (?e127 (ite $e45 ?e96 ?e100))
+(let (?e128 (ite $e52 ?e125 ?e78))
+(let (?e129 (ite $e38 ?e70 ?e112))
+(let (?e130 (ite $e42 ?e105 ?e77))
+(let (?e131 (ite $e38 ?e91 ?e119))
+(let (?e132 (ite $e35 ?e113 ?e96))
+(let (?e133 (ite $e34 ?e115 ?e86))
+(let (?e134 (ite $e57 v0 ?e9))
+(let (?e135 (ite $e22 ?e7 ?e11))
+(let (?e136 (ite $e44 ?e135 ?e10))
+(let (?e137 (ite $e46 ?e10 ?e14))
+(let (?e138 (ite $e31 ?e4 ?e16))
+(let (?e139 (ite $e63 ?e17 ?e10))
+(let (?e140 (ite $e62 ?e4 ?e8))
+(let (?e141 (ite $e69 ?e12 ?e138))
+(let (?e142 (ite $e44 ?e13 ?e140))
+(let (?e143 (ite $e53 ?e15 ?e15))
+(let (?e144 (ite $e59 ?e142 ?e137))
+(let (?e145 (ite $e24 ?e4 ?e137))
+(let (?e146 (ite $e68 ?e13 ?e4))
+(let (?e147 (ite $e49 ?e12 ?e14))
+(let (?e148 (ite $e49 ?e6 ?e134))
+(let (?e149 (ite $e54 ?e137 ?e9))
+(let (?e150 (ite $e60 ?e5 ?e9))
+(let (?e151 (ite $e64 ?e13 ?e4))
+(let (?e152 (ite $e65 ?e139 ?e149))
+(let (?e153 (ite $e34 ?e143 ?e138))
+(let (?e154 (ite $e40 ?e145 ?e151))
+(let (?e155 (ite $e32 ?e141 ?e137))
+(let (?e156 (ite $e56 ?e16 ?e148))
+(let (?e157 (ite $e28 ?e152 ?e14))
+(let (?e158 (ite $e47 ?e141 ?e152))
+(let (?e159 (ite $e43 ?e8 ?e6))
+(let (?e160 (ite $e51 ?e135 ?e146))
+(let (?e161 (ite $e50 ?e141 ?e151))
+(let (?e162 (ite $e69 ?e14 ?e148))
+(let (?e163 (ite $e45 ?e145 ?e154))
+(let (?e164 (ite $e55 ?e150 ?e4))
+(let (?e165 (ite $e46 ?e146 ?e4))
+(let (?e166 (ite $e63 ?e142 ?e143))
+(let (?e167 (ite $e24 ?e156 ?e5))
+(let (?e168 (ite $e30 ?e164 ?e146))
+(let (?e169 (ite $e38 ?e11 ?e165))
+(let (?e170 (ite $e48 ?e12 ?e135))
+(let (?e171 (ite $e25 ?e168 ?e4))
+(let (?e172 (ite $e33 ?e163 ?e142))
+(let (?e173 (ite $e49 ?e7 ?e159))
+(let (?e174 (ite $e69 ?e16 ?e10))
+(let (?e175 (ite $e46 ?e156 ?e166))
+(let (?e176 (ite $e39 ?e135 ?e134))
+(let (?e177 (ite $e57 ?e161 ?e9))
+(let (?e178 (ite $e33 ?e153 ?e139))
+(let (?e179 (ite $e62 ?e138 ?e169))
+(let (?e180 (ite $e23 ?e146 ?e166))
+(let (?e181 (ite $e66 ?e140 ?e148))
+(let (?e182 (ite $e32 ?e163 ?e136))
+(let (?e183 (ite $e58 ?e134 ?e141))
+(let (?e184 (ite $e61 ?e9 ?e174))
+(let (?e185 (ite $e37 ?e155 ?e148))
+(let (?e186 (ite $e34 ?e157 ?e185))
+(let (?e187 (ite $e68 ?e139 ?e12))
+(let (?e188 (ite $e34 ?e164 ?e168))
+(let (?e189 (ite $e42 ?e160 ?e139))
+(let (?e190 (ite $e36 ?e17 ?e138))
+(let (?e191 (ite $e52 ?e173 ?e143))
+(let (?e192 (ite $e35 ?e157 ?e140))
+(let (?e193 (ite $e65 ?e139 ?e184))
+(let (?e194 (ite $e27 ?e9 ?e141))
+(let (?e195 (ite $e24 ?e167 ?e144))
+(let (?e196 (ite $e67 ?e177 ?e144))
+(let (?e197 (ite $e26 ?e14 ?e174))
+(let (?e198 (ite $e47 ?e182 ?e156))
+(let (?e199 (ite $e28 ?e156 ?e158))
+(let (?e200 (ite $e41 ?e163 ?e185))
+(let (?e201 (ite $e52 ?e190 ?e178))
+(let (?e202 (ite $e29 ?e186 ?e171))
+(let (?e203 (store ?e133 ?e177 ?e190))
+(let (?e204 (store ?e102 ?e193 ?e151))
+(let (?e205 (select ?e120 ?e173))
+(let (?e206 (store ?e101 ?e6 ?e202))
+(let (?e207 (f1 ?e114 ?e124 ?e87))
+(let (?e208 (f1 ?e99 ?e19 ?e116))
+(let (?e209 (f1 ?e91 ?e91 ?e91))
+(let (?e210 (f1 ?e92 ?e112 ?e95))
+(let (?e211 (f1 ?e210 ?e123 ?e72))
+(let (?e212 (f1 ?e82 ?e203 ?e84))
+(let (?e213 (f1 ?e127 ?e91 ?e122))
+(let (?e214 (f1 ?e75 ?e75 ?e75))
+(let (?e215 (f1 ?e126 ?e111 ?e209))
+(let (?e216 (f1 ?e77 ?e77 ?e77))
+(let (?e217 (f1 ?e94 ?e94 ?e94))
+(let (?e218 (f1 ?e80 ?e80 ?e87))
+(let (?e219 (f1 ?e80 ?e207 ?e73))
+(let (?e220 (f1 ?e76 ?e76 ?e90))
+(let (?e221 (f1 ?e128 ?e128 ?e207))
+(let (?e222 (f1 ?e86 ?e108 ?e98))
+(let (?e223 (f1 ?e109 ?e73 ?e72))
+(let (?e224 (f1 ?e97 ?e97 ?e80))
+(let (?e225 (f1 ?e223 ?e76 ?e206))
+(let (?e226 (f1 ?e113 ?e113 ?e113))
+(let (?e227 (f1 ?e86 ?e118 ?e204))
+(let (?e228 (f1 ?e116 ?e203 ?e214))
+(let (?e229 (f1 ?e88 ?e219 ?e120))
+(let (?e230 (f1 ?e70 ?e77 ?e220))
+(let (?e231 (f1 ?e109 ?e72 ?e91))
+(let (?e232 (f1 v1 ?e130 ?e211))
+(let (?e233 (f1 ?e91 ?e128 ?e130))
+(let (?e234 (f1 ?e21 ?e207 ?e117))
+(let (?e235 (f1 ?e78 ?e78 ?e133))
+(let (?e236 (f1 ?e115 ?e94 ?e210))
+(let (?e237 (f1 ?e100 ?e80 ?e214))
+(let (?e238 (f1 ?e113 ?e77 ?e120))
+(let (?e239 (f1 ?e113 ?e108 ?e212))
+(let (?e240 (f1 ?e107 ?e107 ?e226))
+(let (?e241 (f1 ?e106 ?e106 ?e235))
+(let (?e242 (f1 ?e121 ?e121 ?e219))
+(let (?e243 (f1 ?e110 ?e110 ?e110))
+(let (?e244 (f1 ?e115 ?e107 ?e225))
+(let (?e245 (f1 ?e226 ?e83 ?e100))
+(let (?e246 (f1 ?e18 ?e18 ?e116))
+(let (?e247 (f1 v1 ?e107 ?e98))
+(let (?e248 (f1 ?e235 ?e121 ?e241))
+(let (?e249 (f1 ?e71 ?e96 ?e210))
+(let (?e250 (f1 ?e101 ?e212 ?e237))
+(let (?e251 (f1 ?e132 ?e132 ?e110))
+(let (?e252 (f1 ?e133 ?e233 ?e129))
+(let (?e253 (f1 ?e77 ?e81 ?e118))
+(let (?e254 (f1 ?e231 ?e106 ?e98))
+(let (?e255 (f1 ?e87 ?e76 ?e73))
+(let (?e256 (f1 ?e248 ?e103 ?e222))
+(let (?e257 (f1 ?e105 ?e105 ?e254))
+(let (?e258 (f1 ?e243 ?e104 ?e120))
+(let (?e259 (f1 ?e20 ?e126 ?e243))
+(let (?e260 (f1 ?e259 ?e102 ?e115))
+(let (?e261 (f1 ?e128 ?e73 ?e222))
+(let (?e262 (f1 ?e125 ?e101 ?e126))
+(let (?e263 (f1 ?e119 ?e77 ?e240))
+(let (?e264 (f1 ?e131 ?e225 ?e229))
+(let (?e265 (f1 ?e254 ?e109 ?e230))
+(let (?e266 (f1 ?e211 ?e242 ?e219))
+(let (?e267 (f1 ?e85 ?e128 ?e76))
+(let (?e268 (f1 ?e89 ?e241 ?e262))
+(let (?e269 (f1 ?e74 ?e122 ?e117))
+(let (?e270 (f1 ?e93 ?e93 ?e93))
+(let (?e271 (f1 ?e79 ?e79 ?e79))
+(let (?e272 (* ?e192 (~ ?e2)))
+(let (?e273 (ite (p0 ?e177) 1 0))
+(let (?e274 (ite (p0 ?e165) 1 0))
+(let (?e275 (~ ?e156))
+(let (?e276 (+ ?e162 ?e12))
+(let (?e277 (f0 ?e148 ?e272))
+(let (?e278 (f0 ?e8 ?e11))
+(let (?e279 (+ ?e198 ?e6))
+(let (?e280 (~ ?e182))
+(let (?e281 (+ ?e16 ?e141))
+(let (?e282 (* (~ ?e3) ?e157))
+(let (?e283 (ite (p0 ?e146) 1 0))
+(let (?e284 (~ ?e189))
+(let (?e285 (- ?e277 ?e189))
+(let (?e286 (- ?e284 ?e158))
+(let (?e287 (~ ?e176))
+(let (?e288 (* ?e3 ?e178))
+(let (?e289 (* ?e3 ?e136))
+(let (?e290 (* ?e3 ?e4))
+(let (?e291 (- ?e146 ?e152))
+(let (?e292 (f0 ?e135 ?e136))
+(let (?e293 (f0 ?e278 ?e161))
+(let (?e294 (~ ?e10))
+(let (?e295 (ite (p0 ?e163) 1 0))
+(let (?e296 (f0 ?e8 ?e192))
+(let (?e297 (* ?e159 (~ ?e3)))
+(let (?e298 (- ?e145 ?e159))
+(let (?e299 (- ?e158 ?e200))
+(let (?e300 (+ ?e170 ?e7))
+(let (?e301 (f0 ?e142 ?e295))
+(let (?e302 (+ ?e193 ?e149))
+(let (?e303 (* ?e301 (~ ?e3)))
+(let (?e304 (* ?e190 ?e2))
+(let (?e305 (- ?e15 ?e152))
+(let (?e306 (+ ?e179 ?e138))
+(let (?e307 (* (~ ?e3) ?e147))
+(let (?e308 (- ?e178 ?e202))
+(let (?e309 (* ?e172 ?e2))
+(let (?e310 (ite (p0 ?e183) 1 0))
+(let (?e311 (f0 ?e294 ?e149))
+(let (?e312 (- ?e151 ?e202))
+(let (?e313 (f0 ?e164 v0))
+(let (?e314 (f0 ?e165 ?e4))
+(let (?e315 (- ?e143 ?e285))
+(let (?e316 (f0 ?e134 ?e174))
+(let (?e317 (~ ?e175))
+(let (?e318 (+ ?e9 ?e185))
+(let (?e319 (* (~ ?e2) ?e137))
+(let (?e320 (* ?e169 ?e2))
+(let (?e321 (* ?e3 ?e146))
+(let (?e322 (* ?e184 ?e2))
+(let (?e323 (f0 ?e179 ?e169))
+(let (?e324 (f0 ?e144 ?e297))
+(let (?e325 (+ ?e153 ?e154))
+(let (?e326 (f0 ?e173 ?e151))
+(let (?e327 (~ ?e191))
+(let (?e328 (f0 ?e201 ?e323))
+(let (?e329 (+ ?e278 ?e272))
+(let (?e330 (* ?e150 (~ ?e2)))
+(let (?e331 (* ?e197 (~ ?e3)))
+(let (?e332 (- ?e205 ?e169))
+(let (?e333 (- ?e17 ?e288))
+(let (?e334 (ite (p0 ?e199) 1 0))
+(let (?e335 (f0 ?e181 ?e304))
+(let (?e336 (- ?e14 ?e201))
+(let (?e337 (f0 ?e168 ?e291))
+(let (?e338 (f0 ?e279 ?e180))
+(let (?e339 (+ ?e160 ?e162))
+(let (?e340 (- ?e196 ?e163))
+(let (?e341 (f0 ?e140 ?e175))
+(let (?e342 (- ?e147 ?e282))
+(let (?e343 (* ?e5 (~ ?e3)))
+(let (?e344 (f0 ?e284 ?e298))
+(let (?e345 (- ?e284 ?e272))
+(let (?e346 (* ?e2 ?e326))
+(let (?e347 (ite (p0 ?e139) 1 0))
+(let (?e348 (f0 ?e273 ?e285))
+(let (?e349 (* ?e2 ?e315))
+(let (?e350 (* (~ ?e3) ?e15))
+(let (?e351 (ite (p0 ?e320) 1 0))
+(let (?e352 (- ?e155 ?e317))
+(let (?e353 (* ?e194 ?e3))
+(let (?e354 (~ ?e143))
+(let (?e355 (ite (p0 ?e338) 1 0))
+(let (?e356 (- ?e158 ?e151))
+(let (?e357 (ite (p0 ?e296) 1 0))
+(let (?e358 (- ?e166 ?e9))
+(let (?e359 (~ ?e195))
+(let (?e360 (+ ?e148 ?e200))
+(let (?e361 (- ?e186 ?e162))
+(let (?e362 (- ?e192 ?e136))
+(let (?e363 (- ?e167 ?e301))
+(let (?e364 (ite (p0 ?e13) 1 0))
+(let (?e365 (ite (p0 ?e282) 1 0))
+(let (?e366 (* (~ ?e3) ?e8))
+(let (?e367 (- ?e342 ?e360))
+(let (?e368 (- ?e181 ?e4))
+(let (?e369 (* ?e3 ?e188))
+(let (?e370 (- ?e171 ?e146))
+(let (?e371 (* ?e293 (~ ?e2)))
+(let (?e372 (* (~ ?e2) ?e187))
+(flet ($e373 (p1 ?e101))
+(flet ($e374 (p1 ?e247))
+(flet ($e375 (p1 ?e270))
+(flet ($e376 (p1 ?e125))
+(flet ($e377 (p1 ?e235))
+(flet ($e378 (p1 ?e254))
+(flet ($e379 (p1 ?e214))
+(flet ($e380 (p1 ?e111))
+(flet ($e381 (p1 ?e112))
+(flet ($e382 (p1 ?e239))
+(flet ($e383 (p1 ?e110))
+(flet ($e384 (p1 ?e212))
+(flet ($e385 (p1 ?e75))
+(flet ($e386 (p1 ?e261))
+(flet ($e387 (p1 ?e258))
+(flet ($e388 (p1 ?e223))
+(flet ($e389 (p1 ?e124))
+(flet ($e390 (p1 ?e209))
+(flet ($e391 (p1 ?e120))
+(flet ($e392 (p1 ?e89))
+(flet ($e393 (p1 ?e207))
+(flet ($e394 (p1 ?e90))
+(flet ($e395 (p1 ?e81))
+(flet ($e396 (p1 ?e204))
+(flet ($e397 (p1 ?e94))
+(flet ($e398 (p1 ?e125))
+(flet ($e399 (p1 ?e230))
+(flet ($e400 (p1 ?e132))
+(flet ($e401 (p1 ?e93))
+(flet ($e402 (p1 ?e266))
+(flet ($e403 (p1 ?e79))
+(flet ($e404 (p1 ?e92))
+(flet ($e405 (p1 ?e241))
+(flet ($e406 (p1 ?e70))
+(flet ($e407 (p1 ?e95))
+(flet ($e408 (p1 ?e250))
+(flet ($e409 (p1 ?e110))
+(flet ($e410 (p1 ?e267))
+(flet ($e411 (p1 ?e234))
+(flet ($e412 (p1 ?e248))
+(flet ($e413 (p1 ?e98))
+(flet ($e414 (p1 ?e133))
+(flet ($e415 (p1 ?e128))
+(flet ($e416 (p1 ?e84))
+(flet ($e417 (p1 ?e83))
+(flet ($e418 (p1 ?e77))
+(flet ($e419 (p1 ?e251))
+(flet ($e420 (p1 ?e21))
+(flet ($e421 (p1 ?e263))
+(flet ($e422 (p1 ?e114))
+(flet ($e423 (p1 ?e19))
+(flet ($e424 (p1 ?e229))
+(flet ($e425 (p1 ?e242))
+(flet ($e426 (p1 ?e209))
+(flet ($e427 (p1 ?e221))
+(flet ($e428 (p1 ?e78))
+(flet ($e429 (p1 ?e70))
+(flet ($e430 (p1 ?e264))
+(flet ($e431 (p1 ?e224))
+(flet ($e432 (p1 ?e20))
+(flet ($e433 (p1 ?e246))
+(flet ($e434 (p1 ?e90))
+(flet ($e435 (p1 ?e90))
+(flet ($e436 (p1 ?e129))
+(flet ($e437 (p1 ?e129))
+(flet ($e438 (p1 ?e247))
+(flet ($e439 (p1 ?e252))
+(flet ($e440 (p1 ?e255))
+(flet ($e441 (p1 ?e106))
+(flet ($e442 (p1 ?e228))
+(flet ($e443 (p1 ?e242))
+(flet ($e444 (p1 ?e108))
+(flet ($e445 (p1 ?e86))
+(flet ($e446 (p1 ?e88))
+(flet ($e447 (p1 ?e238))
+(flet ($e448 (p1 ?e233))
+(flet ($e449 (p1 ?e241))
+(flet ($e450 (p1 ?e255))
+(flet ($e451 (p1 ?e74))
+(flet ($e452 (p1 ?e95))
+(flet ($e453 (p1 ?e103))
+(flet ($e454 (p1 ?e130))
+(flet ($e455 (p1 ?e269))
+(flet ($e456 (p1 ?e240))
+(flet ($e457 (p1 ?e117))
+(flet ($e458 (p1 ?e241))
+(flet ($e459 (p1 ?e127))
+(flet ($e460 (p1 ?e232))
+(flet ($e461 (p1 ?e73))
+(flet ($e462 (p1 ?e253))
+(flet ($e463 (p1 ?e268))
+(flet ($e464 (p1 ?e133))
+(flet ($e465 (p1 ?e101))
+(flet ($e466 (p1 ?e216))
+(flet ($e467 (p1 ?e72))
+(flet ($e468 (p1 ?e118))
+(flet ($e469 (p1 ?e109))
+(flet ($e470 (p1 ?e123))
+(flet ($e471 (p1 ?e71))
+(flet ($e472 (p1 ?e103))
+(flet ($e473 (p1 ?e111))
+(flet ($e474 (p1 ?e215))
+(flet ($e475 (p1 ?e102))
+(flet ($e476 (p1 ?e260))
+(flet ($e477 (p1 ?e107))
+(flet ($e478 (p1 ?e244))
+(flet ($e479 (p1 ?e87))
+(flet ($e480 (p1 ?e18))
+(flet ($e481 (p1 ?e88))
+(flet ($e482 (p1 ?e208))
+(flet ($e483 (p1 ?e84))
+(flet ($e484 (p1 ?e217))
+(flet ($e485 (p1 ?e233))
+(flet ($e486 (p1 ?e265))
+(flet ($e487 (p1 ?e100))
+(flet ($e488 (p1 ?e210))
+(flet ($e489 (p1 ?e242))
+(flet ($e490 (p1 ?e214))
+(flet ($e491 (p1 ?e230))
+(flet ($e492 (p1 ?e116))
+(flet ($e493 (p1 ?e104))
+(flet ($e494 (p1 ?e80))
+(flet ($e495 (p1 ?e203))
+(flet ($e496 (p1 ?e76))
+(flet ($e497 (p1 ?e271))
+(flet ($e498 (p1 v1))
+(flet ($e499 (p1 ?e106))
+(flet ($e500 (p1 ?e204))
+(flet ($e501 (p1 ?e113))
+(flet ($e502 (p1 ?e262))
+(flet ($e503 (p1 ?e105))
+(flet ($e504 (p1 ?e225))
+(flet ($e505 (p1 ?e131))
+(flet ($e506 (p1 ?e121))
+(flet ($e507 (p1 ?e119))
+(flet ($e508 (p1 ?e248))
+(flet ($e509 (p1 ?e219))
+(flet ($e510 (p1 ?e71))
+(flet ($e511 (p1 ?e96))
+(flet ($e512 (p1 ?e74))
+(flet ($e513 (p1 ?e270))
+(flet ($e514 (p1 ?e211))
+(flet ($e515 (p1 ?e236))
+(flet ($e516 (p1 ?e82))
+(flet ($e517 (p1 ?e229))
+(flet ($e518 (p1 ?e85))
+(flet ($e519 (p1 ?e122))
+(flet ($e520 (p1 ?e243))
+(flet ($e521 (p1 ?e97))
+(flet ($e522 (p1 ?e96))
+(flet ($e523 (p1 ?e231))
+(flet ($e524 (p1 ?e234))
+(flet ($e525 (p1 ?e112))
+(flet ($e526 (p1 ?e259))
+(flet ($e527 (p1 ?e213))
+(flet ($e528 (p1 v1))
+(flet ($e529 (p1 ?e206))
+(flet ($e530 (p1 ?e222))
+(flet ($e531 (p1 ?e249))
+(flet ($e532 (p1 ?e218))
+(flet ($e533 (p1 ?e256))
+(flet ($e534 (p1 ?e220))
+(flet ($e535 (p1 ?e264))
+(flet ($e536 (p1 ?e246))
+(flet ($e537 (p1 ?e94))
+(flet ($e538 (p1 ?e125))
+(flet ($e539 (p1 ?e18))
+(flet ($e540 (p1 ?e119))
+(flet ($e541 (p1 ?e127))
+(flet ($e542 (p1 ?e99))
+(flet ($e543 (p1 ?e126))
+(flet ($e544 (p1 ?e263))
+(flet ($e545 (p1 ?e78))
+(flet ($e546 (p1 ?e257))
+(flet ($e547 (p1 ?e81))
+(flet ($e548 (p1 ?e76))
+(flet ($e549 (p1 ?e115))
+(flet ($e550 (p1 ?e96))
+(flet ($e551 (p1 ?e99))
+(flet ($e552 (p1 ?e265))
+(flet ($e553 (p1 ?e237))
+(flet ($e554 (p1 ?e226))
+(flet ($e555 (p1 ?e244))
+(flet ($e556 (p1 ?e91))
+(flet ($e557 (p1 ?e245))
+(flet ($e558 (p1 ?e72))
+(flet ($e559 (p1 ?e130))
+(flet ($e560 (p1 ?e219))
+(flet ($e561 (p1 ?e227))
+(flet ($e562 (p0 ?e8))
+(flet ($e563 (>= ?e162 ?e164))
+(flet ($e564 (>= ?e346 ?e289))
+(flet ($e565 (< ?e317 ?e287))
+(flet ($e566 (<= ?e16 ?e363))
+(flet ($e567 (distinct ?e357 ?e317))
+(flet ($e568 (>= ?e294 ?e141))
+(flet ($e569 (> ?e358 ?e10))
+(flet ($e570 (= ?e12 ?e328))
+(flet ($e571 (> ?e301 ?e307))
+(flet ($e572 (< ?e280 ?e321))
+(flet ($e573 (p0 ?e153))
+(flet ($e574 (< ?e137 ?e315))
+(flet ($e575 (distinct ?e370 ?e200))
+(flet ($e576 (> ?e350 ?e202))
+(flet ($e577 (> ?e165 ?e298))
+(flet ($e578 (distinct ?e178 ?e282))
+(flet ($e579 (<= ?e201 ?e338))
+(flet ($e580 (distinct ?e324 ?e158))
+(flet ($e581 (= ?e9 ?e14))
+(flet ($e582 (>= ?e281 ?e359))
+(flet ($e583 (< ?e329 ?e175))
+(flet ($e584 (< ?e311 ?e325))
+(flet ($e585 (>= ?e188 ?e146))
+(flet ($e586 (= ?e174 ?e17))
+(flet ($e587 (distinct ?e277 ?e279))
+(flet ($e588 (< ?e294 ?e295))
+(flet ($e589 (= ?e361 ?e369))
+(flet ($e590 (<= ?e347 ?e277))
+(flet ($e591 (<= ?e277 ?e163))
+(flet ($e592 (> ?e157 ?e332))
+(flet ($e593 (>= ?e320 ?e320))
+(flet ($e594 (distinct ?e364 ?e332))
+(flet ($e595 (<= ?e349 ?e184))
+(flet ($e596 (distinct ?e284 ?e195))
+(flet ($e597 (> ?e301 ?e335))
+(flet ($e598 (<= ?e205 ?e156))
+(flet ($e599 (<= ?e136 ?e345))
+(flet ($e600 (<= ?e354 ?e357))
+(flet ($e601 (< ?e339 ?e282))
+(flet ($e602 (< ?e341 ?e135))
+(flet ($e603 (< ?e7 ?e289))
+(flet ($e604 (p0 ?e364))
+(flet ($e605 (p0 ?e187))
+(flet ($e606 (distinct ?e149 ?e319))
+(flet ($e607 (p0 ?e297))
+(flet ($e608 (= ?e151 ?e9))
+(flet ($e609 (< ?e367 ?e148))
+(flet ($e610 (= ?e287 ?e13))
+(flet ($e611 (= ?e168 ?e278))
+(flet ($e612 (< ?e345 ?e290))
+(flet ($e613 (p0 ?e196))
+(flet ($e614 (p0 ?e313))
+(flet ($e615 (<= ?e305 ?e149))
+(flet ($e616 (>= ?e372 ?e330))
+(flet ($e617 (distinct ?e366 ?e341))
+(flet ($e618 (= ?e344 ?e329))
+(flet ($e619 (<= ?e145 ?e310))
+(flet ($e620 (> ?e140 ?e367))
+(flet ($e621 (> ?e191 ?e196))
+(flet ($e622 (> ?e323 ?e326))
+(flet ($e623 (< ?e181 ?e190))
+(flet ($e624 (< ?e273 ?e139))
+(flet ($e625 (= ?e316 ?e361))
+(flet ($e626 (> ?e346 ?e154))
+(flet ($e627 (< ?e332 ?e304))
+(flet ($e628 (p0 ?e300))
+(flet ($e629 (<= ?e302 ?e359))
+(flet ($e630 (<= ?e357 ?e341))
+(flet ($e631 (p0 ?e337))
+(flet ($e632 (>= ?e318 ?e143))
+(flet ($e633 (= ?e173 ?e338))
+(flet ($e634 (= ?e11 ?e359))
+(flet ($e635 (<= ?e276 ?e10))
+(flet ($e636 (<= ?e333 ?e290))
+(flet ($e637 (<= ?e286 ?e293))
+(flet ($e638 (< ?e150 ?e173))
+(flet ($e639 (distinct ?e306 ?e153))
+(flet ($e640 (>= ?e272 ?e176))
+(flet ($e641 (distinct ?e343 ?e346))
+(flet ($e642 (distinct ?e371 ?e283))
+(flet ($e643 (distinct v0 ?e365))
+(flet ($e644 (= ?e312 ?e317))
+(flet ($e645 (<= ?e134 ?e151))
+(flet ($e646 (> ?e322 ?e189))
+(flet ($e647 (p0 ?e356))
+(flet ($e648 (>= ?e166 ?e341))
+(flet ($e649 (< ?e342 ?e313))
+(flet ($e650 (p0 ?e336))
+(flet ($e651 (= ?e187 ?e10))
+(flet ($e652 (distinct ?e362 ?e195))
+(flet ($e653 (>= ?e167 ?e305))
+(flet ($e654 (< ?e170 ?e288))
+(flet ($e655 (distinct ?e161 ?e166))
+(flet ($e656 (< ?e299 ?e283))
+(flet ($e657 (p0 ?e327))
+(flet ($e658 (= ?e340 ?e9))
+(flet ($e659 (p0 ?e340))
+(flet ($e660 (<= ?e177 ?e330))
+(flet ($e661 (distinct ?e205 ?e12))
+(flet ($e662 (distinct ?e339 ?e8))
+(flet ($e663 (= ?e330 ?e311))
+(flet ($e664 (p0 ?e171))
+(flet ($e665 (= ?e5 ?e161))
+(flet ($e666 (< ?e136 ?e277))
+(flet ($e667 (p0 ?e15))
+(flet ($e668 (p0 ?e168))
+(flet ($e669 (= ?e334 ?e328))
+(flet ($e670 (p0 ?e367))
+(flet ($e671 (<= ?e342 ?e6))
+(flet ($e672 (distinct ?e306 ?e14))
+(flet ($e673 (<= ?e274 ?e320))
+(flet ($e674 (> ?e171 ?e173))
+(flet ($e675 (distinct ?e365 ?e5))
+(flet ($e676 (distinct ?e327 ?e351))
+(flet ($e677 (distinct ?e16 ?e277))
+(flet ($e678 (= ?e361 ?e371))
+(flet ($e679 (>= ?e179 ?e319))
+(flet ($e680 (>= ?e188 ?e303))
+(flet ($e681 (p0 ?e161))
+(flet ($e682 (> ?e353 ?e354))
+(flet ($e683 (> ?e142 ?e337))
+(flet ($e684 (< ?e159 ?e281))
+(flet ($e685 (>= ?e306 ?e183))
+(flet ($e686 (>= ?e198 ?e143))
+(flet ($e687 (= ?e285 ?e194))
+(flet ($e688 (= ?e138 ?e273))
+(flet ($e689 (<= ?e172 ?e290))
+(flet ($e690 (< ?e16 ?e12))
+(flet ($e691 (= ?e368 ?e287))
+(flet ($e692 (>= ?e340 ?e308))
+(flet ($e693 (= ?e194 ?e370))
+(flet ($e694 (distinct ?e296 ?e198))
+(flet ($e695 (= ?e4 ?e139))
+(flet ($e696 (> ?e275 ?e296))
+(flet ($e697 (p0 ?e352))
+(flet ($e698 (= ?e205 ?e138))
+(flet ($e699 (>= ?e331 ?e308))
+(flet ($e700 (>= ?e147 ?e287))
+(flet ($e701 (p0 ?e306))
+(flet ($e702 (> ?e348 ?e344))
+(flet ($e703 (>= ?e169 ?e353))
+(flet ($e704 (<= ?e180 ?e337))
+(flet ($e705 (< ?e287 ?e301))
+(flet ($e706 (> ?e360 ?e309))
+(flet ($e707 (distinct ?e184 ?e17))
+(flet ($e708 (>= ?e173 ?e153))
+(flet ($e709 (> ?e339 ?e14))
+(flet ($e710 (> ?e370 ?e327))
+(flet ($e711 (distinct ?e368 ?e301))
+(flet ($e712 (< ?e160 ?e279))
+(flet ($e713 (distinct ?e163 ?e5))
+(flet ($e714 (>= ?e356 ?e156))
+(flet ($e715 (< ?e192 ?e176))
+(flet ($e716 (distinct ?e302 ?e140))
+(flet ($e717 (> ?e300 ?e355))
+(flet ($e718 (<= ?e291 ?e324))
+(flet ($e719 (p0 ?e314))
+(flet ($e720 (>= ?e199 ?e369))
+(flet ($e721 (= ?e274 ?e364))
+(flet ($e722 (p0 ?e205))
+(flet ($e723 (distinct ?e317 ?e10))
+(flet ($e724 (> ?e155 ?e169))
+(flet ($e725 (>= ?e182 ?e280))
+(flet ($e726 (>= ?e292 ?e331))
+(flet ($e727 (p0 ?e193))
+(flet ($e728 (< ?e190 ?e366))
+(flet ($e729 (<= ?e179 ?e324))
+(flet ($e730 (> ?e289 ?e4))
+(flet ($e731 (>= ?e186 ?e283))
+(flet ($e732 (<= ?e185 ?e339))
+(flet ($e733 (<= ?e308 ?e365))
+(flet ($e734 (> ?e317 ?e367))
+(flet ($e735 (p0 v0))
+(flet ($e736 (>= ?e300 ?e288))
+(flet ($e737 (>= ?e317 ?e192))
+(flet ($e738 (distinct ?e187 ?e190))
+(flet ($e739 (> ?e272 ?e189))
+(flet ($e740 (> ?e152 ?e159))
+(flet ($e741 (<= ?e274 ?e179))
+(flet ($e742 (< ?e304 ?e281))
+(flet ($e743 (p0 ?e135))
+(flet ($e744 (>= ?e366 ?e156))
+(flet ($e745 (<= ?e197 ?e338))
+(flet ($e746 (distinct ?e349 ?e339))
+(flet ($e747 (distinct ?e284 ?e167))
+(flet ($e748 (= ?e144 ?e134))
+(flet ($e749 (not $e411))
+(flet ($e750 (xor $e519 $e498))
+(flet ($e751 (implies $e639 $e39))
+(flet ($e752 (or $e60 $e590))
+(flet ($e753 (or $e644 $e62))
+(flet ($e754 (or $e447 $e683))
+(flet ($e755 (if_then_else $e712 $e387 $e26))
+(flet ($e756 (implies $e727 $e661))
+(flet ($e757 (if_then_else $e653 $e749 $e31))
+(flet ($e758 (implies $e757 $e607))
+(flet ($e759 (not $e591))
+(flet ($e760 (or $e725 $e677))
+(flet ($e761 (xor $e614 $e461))
+(flet ($e762 (and $e500 $e713))
+(flet ($e763 (iff $e584 $e656))
+(flet ($e764 (implies $e422 $e487))
+(flet ($e765 (if_then_else $e420 $e423 $e692))
+(flet ($e766 (xor $e27 $e480))
+(flet ($e767 (or $e602 $e43))
+(flet ($e768 (or $e723 $e453))
+(flet ($e769 (not $e389))
+(flet ($e770 (and $e600 $e391))
+(flet ($e771 (and $e493 $e706))
+(flet ($e772 (implies $e716 $e655))
+(flet ($e773 (not $e633))
+(flet ($e774 (iff $e528 $e22))
+(flet ($e775 (if_then_else $e431 $e474 $e507))
+(flet ($e776 (implies $e437 $e388))
+(flet ($e777 (if_then_else $e45 $e593 $e440))
+(flet ($e778 (implies $e703 $e549))
+(flet ($e779 (xor $e581 $e574))
+(flet ($e780 (xor $e401 $e38))
+(flet ($e781 (not $e646))
+(flet ($e782 (iff $e376 $e729))
+(flet ($e783 (if_then_else $e777 $e451 $e696))
+(flet ($e784 (and $e565 $e627))
+(flet ($e785 (implies $e415 $e617))
+(flet ($e786 (if_then_else $e746 $e785 $e408))
+(flet ($e787 (or $e648 $e414))
+(flet ($e788 (and $e527 $e473))
+(flet ($e789 (xor $e66 $e709))
+(flet ($e790 (and $e564 $e479))
+(flet ($e791 (xor $e448 $e520))
+(flet ($e792 (if_then_else $e702 $e385 $e413))
+(flet ($e793 (or $e611 $e46))
+(flet ($e794 (implies $e485 $e418))
+(flet ($e795 (and $e542 $e396))
+(flet ($e796 (or $e454 $e740))
+(flet ($e797 (iff $e782 $e640))
+(flet ($e798 (xor $e658 $e637))
+(flet ($e799 (and $e753 $e626))
+(flet ($e800 (or $e442 $e523))
+(flet ($e801 (implies $e642 $e776))
+(flet ($e802 (implies $e625 $e524))
+(flet ($e803 (if_then_else $e559 $e596 $e790))
+(flet ($e804 (xor $e750 $e50))
+(flet ($e805 (not $e463))
+(flet ($e806 (not $e651))
+(flet ($e807 (or $e419 $e674))
+(flet ($e808 (implies $e622 $e435))
+(flet ($e809 (if_then_else $e700 $e405 $e689))
+(flet ($e810 (iff $e583 $e34))
+(flet ($e811 (iff $e561 $e707))
+(flet ($e812 (implies $e562 $e735))
+(flet ($e813 (not $e58))
+(flet ($e814 (iff $e481 $e615))
+(flet ($e815 (not $e450))
+(flet ($e816 (and $e813 $e638))
+(flet ($e817 (and $e695 $e536))
+(flet ($e818 (and $e477 $e569))
+(flet ($e819 (iff $e784 $e478))
+(flet ($e820 (not $e384))
+(flet ($e821 (implies $e510 $e508))
+(flet ($e822 (iff $e526 $e56))
+(flet ($e823 (not $e634))
+(flet ($e824 (iff $e531 $e538))
+(flet ($e825 (or $e787 $e445))
+(flet ($e826 (iff $e63 $e578))
+(flet ($e827 (and $e496 $e618))
+(flet ($e828 (or $e662 $e613))
+(flet ($e829 (iff $e601 $e25))
+(flet ($e830 (not $e691))
+(flet ($e831 (not $e530))
+(flet ($e832 (and $e654 $e570))
+(flet ($e833 (or $e754 $e802))
+(flet ($e834 (and $e551 $e717))
+(flet ($e835 (xor $e53 $e586))
+(flet ($e836 (implies $e763 $e64))
+(flet ($e837 (iff $e760 $e766))
+(flet ($e838 (if_then_else $e805 $e444 $e395))
+(flet ($e839 (xor $e718 $e816))
+(flet ($e840 (if_then_else $e592 $e57 $e681))
+(flet ($e841 (iff $e379 $e488))
+(flet ($e842 (iff $e775 $e428))
+(flet ($e843 (not $e636))
+(flet ($e844 (and $e623 $e624))
+(flet ($e845 (xor $e409 $e705))
+(flet ($e846 (and $e489 $e557))
+(flet ($e847 (if_then_else $e41 $e460 $e724))
+(flet ($e848 (implies $e779 $e834))
+(flet ($e849 (implies $e769 $e739))
+(flet ($e850 (implies $e686 $e759))
+(flet ($e851 (if_then_else $e483 $e789 $e719))
+(flet ($e852 (not $e641))
+(flet ($e853 (implies $e567 $e803))
+(flet ($e854 (if_then_else $e742 $e378 $e843))
+(flet ($e855 (iff $e434 $e398))
+(flet ($e856 (or $e827 $e400))
+(flet ($e857 (xor $e563 $e687))
+(flet ($e858 (implies $e33 $e744))
+(flet ($e859 (implies $e793 $e455))
+(flet ($e860 (iff $e539 $e823))
+(flet ($e861 (or $e61 $e443))
+(flet ($e862 (and $e425 $e629))
+(flet ($e863 (not $e585))
+(flet ($e864 (not $e664))
+(flet ($e865 (and $e678 $e669))
+(flet ($e866 (or $e30 $e667))
+(flet ($e867 (or $e647 $e861))
+(flet ($e868 (xor $e35 $e492))
+(flet ($e869 (or $e577 $e685))
+(flet ($e870 (if_then_else $e393 $e51 $e69))
+(flet ($e871 (or $e711 $e589))
+(flet ($e872 (or $e466 $e863))
+(flet ($e873 (and $e44 $e858))
+(flet ($e874 (implies $e786 $e798))
+(flet ($e875 (implies $e558 $e844))
+(flet ($e876 (or $e441 $e649))
+(flet ($e877 (implies $e36 $e518))
+(flet ($e878 (xor $e751 $e675))
+(flet ($e879 (xor $e575 $e682))
+(flet ($e880 (iff $e821 $e801))
+(flet ($e881 (not $e791))
+(flet ($e882 (not $e394))
+(flet ($e883 (and $e630 $e459))
+(flet ($e884 (iff $e877 $e40))
+(flet ($e885 (if_then_else $e495 $e399 $e374))
+(flet ($e886 (or $e869 $e29))
+(flet ($e887 (iff $e486 $e845))
+(flet ($e888 (iff $e738 $e603))
+(flet ($e889 (xor $e521 $e566))
+(flet ($e890 (xor $e604 $e814))
+(flet ($e891 (if_then_else $e694 $e541 $e535))
+(flet ($e892 (and $e554 $e732))
+(flet ($e893 (implies $e880 $e822))
+(flet ($e894 (implies $e668 $e870))
+(flet ($e895 (if_then_else $e795 $e672 $e470))
+(flet ($e896 (implies $e806 $e560))
+(flet ($e897 (implies $e893 $e841))
+(flet ($e898 (if_then_else $e812 $e835 $e887))
+(flet ($e899 (or $e842 $e576))
+(flet ($e900 (not $e676))
+(flet ($e901 (or $e878 $e768))
+(flet ($e902 (and $e726 $e889))
+(flet ($e903 (not $e587))
+(flet ($e904 (and $e375 $e652))
+(flet ($e905 (implies $e874 $e761))
+(flet ($e906 (not $e469))
+(flet ($e907 (xor $e728 $e888))
+(flet ($e908 (if_then_else $e547 $e458 $e905))
+(flet ($e909 (not $e848))
+(flet ($e910 (xor $e810 $e799))
+(flet ($e911 (not $e553))
+(flet ($e912 (if_then_else $e612 $e772 $e433))
+(flet ($e913 (and $e745 $e872))
+(flet ($e914 (xor $e688 $e882))
+(flet ($e915 (xor $e421 $e780))
+(flet ($e916 (implies $e714 $e693))
+(flet ($e917 (implies $e424 $e467))
+(flet ($e918 (or $e770 $e482))
+(flet ($e919 (if_then_else $e765 $e839 $e608))
+(flet ($e920 (implies $e494 $e430))
+(flet ($e921 (and $e620 $e873))
+(flet ($e922 (if_then_else $e901 $e833 $e511))
+(flet ($e923 (and $e643 $e800))
+(flet ($e924 (xor $e912 $e820))
+(flet ($e925 (iff $e49 $e23))
+(flet ($e926 (iff $e830 $e914))
+(flet ($e927 (xor $e919 $e32))
+(flet ($e928 (implies $e859 $e853))
+(flet ($e929 (or $e771 $e406))
+(flet ($e930 (and $e824 $e514))
+(flet ($e931 (if_then_else $e509 $e548 $e851))
+(flet ($e932 (or $e865 $e606))
+(flet ($e933 (not $e47))
+(flet ($e934 (if_then_else $e571 $e894 $e657))
+(flet ($e935 (implies $e891 $e758))
+(flet ($e936 (or $e502 $e532))
+(flet ($e937 (and $e619 $e831))
+(flet ($e938 (or $e529 $e794))
+(flet ($e939 (and $e819 $e807))
+(flet ($e940 (if_then_else $e383 $e24 $e896))
+(flet ($e941 (iff $e934 $e934))
+(flet ($e942 (implies $e417 $e402))
+(flet ($e943 (implies $e426 $e412))
+(flet ($e944 (not $e849))
+(flet ($e945 (or $e941 $e499))
+(flet ($e946 (if_then_else $e631 $e895 $e663))
+(flet ($e947 (iff $e928 $e403))
+(flet ($e948 (and $e826 $e730))
+(flet ($e949 (not $e397))
+(flet ($e950 (implies $e390 $e710))
+(flet ($e951 (iff $e932 $e920))
+(flet ($e952 (not $e52))
+(flet ($e953 (or $e862 $e28))
+(flet ($e954 (if_then_else $e597 $e599 $e762))
+(flet ($e955 (implies $e54 $e946))
+(flet ($e956 (or $e513 $e755))
+(flet ($e957 (if_then_else $e505 $e955 $e809))
+(flet ($e958 (if_then_else $e884 $e792 $e927))
+(flet ($e959 (and $e540 $e438))
+(flet ($e960 (or $e909 $e462))
+(flet ($e961 (and $e491 $e860))
+(flet ($e962 (xor $e943 $e788))
+(flet ($e963 (xor $e736 $e55))
+(flet ($e964 (iff $e825 $e864))
+(flet ($e965 (if_then_else $e933 $e846 $e582))
+(flet ($e966 (implies $e836 $e452))
+(flet ($e967 (implies $e796 $e811))
+(flet ($e968 (and $e867 $e818))
+(flet ($e969 (iff $e944 $e621))
+(flet ($e970 (or $e650 $e721))
+(flet ($e971 (if_then_else $e381 $e690 $e773))
+(flet ($e972 (implies $e947 $e950))
+(flet ($e973 (and $e948 $e898))
+(flet ($e974 (implies $e840 $e490))
+(flet ($e975 (if_then_else $e537 $e465 $e949))
+(flet ($e976 (and $e924 $e446))
+(flet ($e977 (and $e572 $e525))
+(flet ($e978 (xor $e817 $e464))
+(flet ($e979 (implies $e883 $e722))
+(flet ($e980 (implies $e545 $e767))
+(flet ($e981 (and $e48 $e966))
+(flet ($e982 (not $e890))
+(flet ($e983 (if_then_else $e456 $e876 $e837))
+(flet ($e984 (not $e962))
+(flet ($e985 (and $e808 $e930))
+(flet ($e986 (not $e850))
+(flet ($e987 (xor $e377 $e472))
+(flet ($e988 (if_then_else $e973 $e904 $e980))
+(flet ($e989 (xor $e940 $e847))
+(flet ($e990 (if_then_else $e911 $e902 $e942))
+(flet ($e991 (if_then_else $e449 $e982 $e915))
+(flet ($e992 (xor $e580 $e987))
+(flet ($e993 (xor $e938 $e737))
+(flet ($e994 (implies $e953 $e954))
+(flet ($e995 (xor $e879 $e734))
+(flet ($e996 (if_then_else $e522 $e990 $e937))
+(flet ($e997 (or $e609 $e989))
+(flet ($e998 (not $e436))
+(flet ($e999 (if_then_else $e957 $e429 $e854))
+(flet ($e1000 (implies $e543 $e684))
+(flet ($e1001 (and $e984 $e715))
+(flet ($e1002 (or $e829 $e720))
+(flet ($e1003 (implies $e951 $e503))
+(flet ($e1004 (xor $e704 $e958))
+(flet ($e1005 (if_then_else $e42 $e908 $e988))
+(flet ($e1006 (or $e515 $e382))
+(flet ($e1007 (xor $e963 $e594))
+(flet ($e1008 (implies $e59 $e632))
+(flet ($e1009 (or $e568 $e517))
+(flet ($e1010 (xor $e504 $e991))
+(flet ($e1011 (and $e1002 $e556))
+(flet ($e1012 (if_then_else $e598 $e670 $e971))
+(flet ($e1013 (iff $e981 $e857))
+(flet ($e1014 (or $e929 $e986))
+(flet ($e1015 (not $e595))
+(flet ($e1016 (iff $e555 $e68))
+(flet ($e1017 (or $e918 $e960))
+(flet ($e1018 (iff $e856 $e939))
+(flet ($e1019 (implies $e497 $e665))
+(flet ($e1020 (implies $e921 $e906))
+(flet ($e1021 (xor $e897 $e969))
+(flet ($e1022 (and $e380 $e475))
+(flet ($e1023 (xor $e468 $e868))
+(flet ($e1024 (not $e903))
+(flet ($e1025 (not $e1007))
+(flet ($e1026 (or $e783 $e756))
+(flet ($e1027 (and $e733 $e512))
+(flet ($e1028 (not $e832))
+(flet ($e1029 (if_then_else $e1020 $e1028 $e610))
+(flet ($e1030 (xor $e731 $e673))
+(flet ($e1031 (not $e995))
+(flet ($e1032 (or $e1003 $e952))
+(flet ($e1033 (or $e1011 $e959))
+(flet ($e1034 (and $e1000 $e1013))
+(flet ($e1035 (and $e1016 $e427))
+(flet ($e1036 (xor $e985 $e534))
+(flet ($e1037 (and $e1010 $e881))
+(flet ($e1038 (xor $e1035 $e546))
+(flet ($e1039 (and $e1036 $e922))
+(flet ($e1040 (or $e855 $e506))
+(flet ($e1041 (if_then_else $e774 $e1008 $e925))
+(flet ($e1042 (implies $e975 $e752))
+(flet ($e1043 (and $e1034 $e907))
+(flet ($e1044 (or $e679 $e797))
+(flet ($e1045 (iff $e533 $e471))
+(flet ($e1046 (if_then_else $e993 $e645 $e605))
+(flet ($e1047 (implies $e67 $e1006))
+(flet ($e1048 (implies $e968 $e994))
+(flet ($e1049 (not $e579))
+(flet ($e1050 (if_then_else $e1005 $e1027 $e956))
+(flet ($e1051 (iff $e476 $e628))
+(flet ($e1052 (if_then_else $e926 $e1017 $e871))
+(flet ($e1053 (or $e936 $e1025))
+(flet ($e1054 (implies $e983 $e1053))
+(flet ($e1055 (implies $e977 $e978))
+(flet ($e1056 (iff $e588 $e698))
+(flet ($e1057 (or $e1019 $e999))
+(flet ($e1058 (and $e917 $e931))
+(flet ($e1059 (and $e972 $e432))
+(flet ($e1060 (xor $e979 $e457))
+(flet ($e1061 (and $e1018 $e923))
+(flet ($e1062 (if_then_else $e516 $e1047 $e708))
+(flet ($e1063 (not $e1050))
+(flet ($e1064 (and $e1048 $e886))
+(flet ($e1065 (implies $e815 $e815))
+(flet ($e1066 (iff $e1044 $e741))
+(flet ($e1067 (xor $e974 $e945))
+(flet ($e1068 (if_then_else $e1022 $e660 $e1056))
+(flet ($e1069 (if_then_else $e996 $e701 $e1049))
+(flet ($e1070 (implies $e1039 $e1059))
+(flet ($e1071 (not $e828))
+(flet ($e1072 (if_then_else $e404 $e550 $e852))
+(flet ($e1073 (and $e1065 $e386))
+(flet ($e1074 (or $e804 $e1040))
+(flet ($e1075 (not $e1057))
+(flet ($e1076 (implies $e1067 $e1033))
+(flet ($e1077 (or $e1068 $e1004))
+(flet ($e1078 (implies $e1072 $e1061))
+(flet ($e1079 (or $e1026 $e1021))
+(flet ($e1080 (xor $e1037 $e910))
+(flet ($e1081 (not $e37))
+(flet ($e1082 (xor $e1030 $e900))
+(flet ($e1083 (not $e671))
+(flet ($e1084 (implies $e666 $e697))
+(flet ($e1085 (and $e961 $e764))
+(flet ($e1086 (or $e1085 $e1063))
+(flet ($e1087 (implies $e892 $e680))
+(flet ($e1088 (iff $e1066 $e1069))
+(flet ($e1089 (or $e416 $e635))
+(flet ($e1090 (and $e1051 $e1080))
+(flet ($e1091 (or $e838 $e1073))
+(flet ($e1092 (iff $e1081 $e1060))
+(flet ($e1093 (or $e1086 $e1014))
+(flet ($e1094 (implies $e373 $e1024))
+(flet ($e1095 (and $e1038 $e1087))
+(flet ($e1096 (iff $e1054 $e573))
+(flet ($e1097 (if_then_else $e778 $e992 $e659))
+(flet ($e1098 (not $e552))
+(flet ($e1099 (xor $e913 $e781))
+(flet ($e1100 (xor $e899 $e998))
+(flet ($e1101 (or $e439 $e1074))
+(flet ($e1102 (xor $e1062 $e699))
+(flet ($e1103 (iff $e1052 $e967))
+(flet ($e1104 (and $e1070 $e935))
+(flet ($e1105 (if_then_else $e1029 $e976 $e976))
+(flet ($e1106 (implies $e1015 $e1090))
+(flet ($e1107 (xor $e1045 $e1084))
+(flet ($e1108 (iff $e1082 $e964))
+(flet ($e1109 (not $e1100))
+(flet ($e1110 (if_then_else $e1023 $e1091 $e1107))
+(flet ($e1111 (or $e743 $e747))
+(flet ($e1112 (implies $e1075 $e1094))
+(flet ($e1113 (if_then_else $e1104 $e1083 $e1103))
+(flet ($e1114 (and $e1076 $e501))
+(flet ($e1115 (iff $e1058 $e1092))
+(flet ($e1116 (xor $e748 $e1055))
+(flet ($e1117 (and $e1112 $e1089))
+(flet ($e1118 (not $e1102))
+(flet ($e1119 (if_then_else $e1116 $e65 $e1096))
+(flet ($e1120 (or $e1041 $e1119))
+(flet ($e1121 (or $e392 $e1109))
+(flet ($e1122 (iff $e1114 $e1106))
+(flet ($e1123 (or $e1078 $e965))
+(flet ($e1124 (or $e875 $e997))
+(flet ($e1125 (and $e407 $e1108))
+(flet ($e1126 (or $e1125 $e1043))
+(flet ($e1127 (iff $e1064 $e1117))
+(flet ($e1128 (iff $e1123 $e1042))
+(flet ($e1129 (xor $e1113 $e1124))
+(flet ($e1130 (and $e484 $e1127))
+(flet ($e1131 (iff $e1130 $e1079))
+(flet ($e1132 (implies $e1111 $e1046))
+(flet ($e1133 (implies $e1132 $e410))
+(flet ($e1134 (xor $e970 $e1071))
+(flet ($e1135 (implies $e1121 $e1122))
+(flet ($e1136 (and $e1120 $e1088))
+(flet ($e1137 (xor $e885 $e1093))
+(flet ($e1138 (or $e916 $e1118))
+(flet ($e1139 (implies $e1095 $e1115))
+(flet ($e1140 (if_then_else $e1098 $e1138 $e1126))
+(flet ($e1141 (xor $e1131 $e1131))
+(flet ($e1142 (not $e1032))
+(flet ($e1143 (and $e1141 $e1001))
+(flet ($e1144 (not $e866))
+(flet ($e1145 (not $e1128))
+(flet ($e1146 (iff $e1031 $e1139))
+(flet ($e1147 (not $e1137))
+(flet ($e1148 (and $e1077 $e1105))
+(flet ($e1149 (not $e1144))
+(flet ($e1150 (if_then_else $e1140 $e1009 $e1145))
+(flet ($e1151 (if_then_else $e1097 $e1143 $e1101))
+(flet ($e1152 (implies $e1134 $e1110))
+(flet ($e1153 (xor $e1142 $e1099))
+(flet ($e1154 (not $e1135))
+(flet ($e1155 (if_then_else $e1147 $e1149 $e1136))
+(flet ($e1156 (or $e1152 $e616))
+(flet ($e1157 (not $e1156))
+(flet ($e1158 (xor $e1148 $e1151))
+(flet ($e1159 (implies $e1153 $e1153))
+(flet ($e1160 (and $e1157 $e1133))
+(flet ($e1161 (or $e1154 $e1159))
+(flet ($e1162 (implies $e1155 $e1160))
+(flet ($e1163 (implies $e1162 $e1161))
+(flet ($e1164 (iff $e1163 $e1163))
+(flet ($e1165 (xor $e1146 $e1129))
+(flet ($e1166 (not $e1012))
+(flet ($e1167 (xor $e544 $e1166))
+(flet ($e1168 (iff $e1165 $e1150))
+(flet ($e1169 (xor $e1164 $e1158))
+(flet ($e1170 (if_then_else $e1167 $e1167 $e1169))
+(flet ($e1171 (not $e1168))
+(flet ($e1172 (and $e1171 $e1171))
+(flet ($e1173 (xor $e1170 $e1170))
+(flet ($e1174 (and $e1173 $e1173))
+(flet ($e1175 (iff $e1174 $e1174))
+(flet ($e1176 (xor $e1175 $e1175))
+(flet ($e1177 (implies $e1172 $e1172))
+(flet ($e1178 (and $e1176 $e1176))
+(flet ($e1179 (not $e1177))
+(flet ($e1180 (xor $e1179 $e1178))
+$e1180
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) [...]
+
diff --git a/test/regress/regress0/decision/bug374a.smt.expect b/test/regress/regress0/decision/bug374a.smt.expect
new file mode 100644
index 0000000..7fd1d5a
--- /dev/null
+++ b/test/regress/regress0/decision/bug374a.smt.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --decision=justification
+% EXPECT: unsat
diff --git a/test/regress/regress0/decision/bug374b.smt2 b/test/regress/regress0/decision/bug374b.smt2
new file mode 100644
index 0000000..a253cf1
--- /dev/null
+++ b/test/regress/regress0/decision/bug374b.smt2
@@ -0,0 +1,14 @@
+(set-logic QF_ALL_SUPPORTED)
+(declare-fun _substvar_245_ () Bool)
+(declare-fun _substvar_246_ () Bool)
+(declare-fun _substvar_247_ () Bool)
+(declare-fun group_size_x () (_ BitVec 32))
+(declare-fun group_id_x$2 () (_ BitVec 32))
+(declare-fun local_id_x$2 () (_ BitVec 32))
+(assert (= _substvar_245_ _substvar_246_))
+(assert
+    (and (bvsge group_id_x$2 #x00000000) (bvsge local_id_x$2 #x00000000) (bvslt local_id_x$2 group_size_x)
+         (or (not (bvsgt group_size_x #x00000000)) (not (and (=> _substvar_247_ (bvsge group_id_x$2 #x00000000)) (= _substvar_245_ _substvar_246_))))
+    )
+  )
+(check-sat)
diff --git a/test/regress/regress0/decision/bug374b.smt2.expect b/test/regress/regress0/decision/bug374b.smt2.expect
new file mode 100644
index 0000000..0be4713
--- /dev/null
+++ b/test/regress/regress0/decision/bug374b.smt2.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --decision=justification --no-unconstrained
+% EXPECT: unsat
diff --git a/test/regress/regress0/decision/error122.delta01.smt b/test/regress/regress0/decision/error122.delta01.smt
new file mode 100644
index 0000000..7c8f930
--- /dev/null
+++ b/test/regress/regress0/decision/error122.delta01.smt
@@ -0,0 +1,19 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:extrafuns ((v0 BitVec[16]))
+:extrafuns ((a2 Array[16:7]))
+:status sat
+:formula
+(let (?n1 bv0[7])
+(let (?n2 (store a2 v0 ?n1))
+(let (?n3 bv1[16])
+(let (?n4 (select ?n2 ?n3))
+(flet ($n5 (bvult ?n1 ?n4))
+(let (?n6 bv1[1])
+(let (?n7 bv0[1])
+(let (?n8 (ite $n5 ?n6 ?n7))
+(let (?n9 (sign_extend[15] ?n8))
+(flet ($n10 (distinct v0 ?n9))
+(flet ($n11 (not $n10))
+$n11
+))))))))))))
diff --git a/test/regress/regress0/decision/error122.smt b/test/regress/regress0/decision/error122.smt
new file mode 100644
index 0000000..2503ba0
--- /dev/null
+++ b/test/regress/regress0/decision/error122.smt
@@ -0,0 +1,53 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status unsat
+:extrafuns ((v0 BitVec[16]))
+:extrafuns ((a1 Array[16:4]))
+:extrafuns ((a2 Array[16:7]))
+:formula
+(let (?e3 bv8911[14])
+(let (?e4 (ite (bvsgt (zero_extend[2] ?e3) v0) bv1[1] bv0[1]))
+(let (?e5 (store a2 v0 (extract[13:7] v0)))
+(let (?e6 (store a2 (zero_extend[15] ?e4) (zero_extend[6] ?e4)))
+(let (?e7 (select ?e5 (zero_extend[2] ?e3)))
+(let (?e8 (store ?e5 (sign_extend[2] ?e3) (sign_extend[6] ?e4)))
+(let (?e9 (select a1 v0))
+(let (?e10 (store ?e8 (zero_extend[15] ?e4) (extract[6:0] v0)))
+(let (?e11 (bvadd (zero_extend[6] ?e4) ?e7))
+(let (?e12 (ite (bvult ?e11 ?e7) bv1[1] bv0[1]))
+(let (?e13 (ite (bvult (zero_extend[3] ?e12) ?e9) bv1[1] bv0[1]))
+(let (?e14 (bvlshr (sign_extend[12] ?e9) v0))
+(let (?e15 (ite (= bv1[1] (extract[12:12] ?e3)) ?e14 ?e14))
+(flet ($e16 (bvslt ?e15 v0))
+(flet ($e17 (bvult (sign_extend[15] ?e4) ?e14))
+(flet ($e18 (= (sign_extend[15] ?e12) ?e15))
+(flet ($e19 (distinct (sign_extend[15] ?e12) v0))
+(flet ($e20 (bvugt ?e11 ?e11))
+(flet ($e21 (bvule ?e13 ?e13))
+(flet ($e22 (bvslt ?e15 (sign_extend[9] ?e11)))
+(flet ($e23 (bvslt (zero_extend[9] ?e11) v0))
+(flet ($e24 (bvult v0 (sign_extend[15] ?e12)))
+(flet ($e25 (bvslt ?e7 (sign_extend[6] ?e4)))
+(flet ($e26 (bvule (zero_extend[12] ?e9) ?e15))
+(flet ($e27 (bvuge ?e13 ?e13))
+(flet ($e28 (distinct (zero_extend[6] ?e12) ?e7))
+(flet ($e29 (distinct ?e3 (sign_extend[13] ?e12)))
+(flet ($e30 (xor $e27 $e17))
+(flet ($e31 (or $e25 $e28))
+(flet ($e32 (iff $e31 $e21))
+(flet ($e33 (and $e18 $e22))
+(flet ($e34 (iff $e30 $e33))
+(flet ($e35 (and $e24 $e24))
+(flet ($e36 (and $e29 $e20))
+(flet ($e37 (and $e34 $e26))
+(flet ($e38 (iff $e36 $e16))
+(flet ($e39 (or $e38 $e32))
+(flet ($e40 (not $e19))
+(flet ($e41 (xor $e23 $e35))
+(flet ($e42 (and $e41 $e40))
+(flet ($e43 (implies $e42 $e37))
+(flet ($e44 (not $e43))
+(flet ($e45 (and $e39 $e44))
+$e45
+))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/decision/error20.delta01.smt b/test/regress/regress0/decision/error20.delta01.smt
new file mode 100644
index 0000000..dfa582b
--- /dev/null
+++ b/test/regress/regress0/decision/error20.delta01.smt
@@ -0,0 +1,19 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:extrafuns ((v0 BitVec[16]))
+:extrafuns ((v1 BitVec[1]))
+:extrafuns ((a4 Array[1:7]))
+:status sat
+:formula
+(let (?n1 (select a4 v1))
+(let (?n2 bv0[7])
+(flet ($n3 (bvsle ?n1 ?n2))
+(let (?n4 bv0[16])
+(let (?n5 bv0[1])
+(flet ($n6 (= v1 ?n5))
+(let (?n7 (ite $n6 ?n4 v0))
+(flet ($n8 (= ?n4 ?n7))
+(flet ($n9 (not $n8))
+(flet ($n10 (and $n3 $n9))
+$n10
+)))))))))))
diff --git a/test/regress/regress0/decision/error20.smt b/test/regress/regress0/decision/error20.smt
new file mode 100644
index 0000000..adc6385
--- /dev/null
+++ b/test/regress/regress0/decision/error20.smt
@@ -0,0 +1,66 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status sat
+:extrafuns ((v0 BitVec[16]))
+:extrafuns ((v1 BitVec[1]))
+:extrafuns ((a2 Array[12:10]))
+:extrafuns ((a3 Array[14:11]))
+:extrafuns ((a4 Array[1:7]))
+:formula
+(let (?e5 bv1[1])
+(let (?e6 (ite (= bv1[1] (extract[0:0] v1)) (sign_extend[15] ?e5) v0))
+(let (?e7 (store a4 (extract[4:4] v0) (extract[9:3] v0)))
+(let (?e8 (store ?e7 ?e5 (extract[12:6] v0)))
+(let (?e9 (store ?e8 v1 (sign_extend[6] ?e5)))
+(let (?e10 (select a4 v1))
+(let (?e11 (store ?e8 ?e5 (zero_extend[6] v1)))
+(let (?e12 (select ?e8 v1))
+(let (?e13 (store a2 (extract[14:3] v0) (zero_extend[3] ?e10)))
+(let (?e14 (rotate_right[0] v1))
+(let (?e15 (rotate_right[3] ?e10))
+(let (?e16 (ite (bvsge ?e12 (zero_extend[6] v1)) bv1[1] bv0[1]))
+(let (?e17 (repeat[5] ?e14))
+(let (?e18 (bvsdiv (sign_extend[9] ?e15) ?e6))
+(let (?e19 (bvmul (zero_extend[15] ?e5) v0))
+(flet ($e20 (= (zero_extend[15] ?e5) ?e18))
+(flet ($e21 (bvugt (zero_extend[9] ?e10) ?e19))
+(flet ($e22 (bvsgt ?e15 (zero_extend[6] v1)))
+(flet ($e23 (bvslt ?e14 ?e16))
+(flet ($e24 (bvugt ?e19 (zero_extend[15] v1)))
+(flet ($e25 (distinct ?e12 ?e12))
+(flet ($e26 (bvule ?e17 (sign_extend[4] ?e5)))
+(flet ($e27 (bvsle ?e18 (zero_extend[15] ?e16)))
+(flet ($e28 (bvsle ?e10 ?e15))
+(flet ($e29 (bvsgt ?e12 (zero_extend[6] ?e16)))
+(flet ($e30 (bvsgt (sign_extend[4] ?e5) ?e17))
+(flet ($e31 (bvsle ?e17 (zero_extend[4] ?e14)))
+(flet ($e32 (bvult (zero_extend[11] ?e17) ?e6))
+(flet ($e33 (bvult ?e5 ?e5))
+(flet ($e34 (bvugt ?e12 (sign_extend[2] ?e17)))
+(flet ($e35 (bvsle (sign_extend[6] v1) ?e15))
+(flet ($e36 (bvule ?e15 (zero_extend[6] ?e14)))
+(flet ($e37 (bvsgt v0 ?e6))
+(flet ($e38 (if_then_else $e23 $e25 $e26))
+(flet ($e39 (iff $e33 $e35))
+(flet ($e40 (or $e21 $e36))
+(flet ($e41 (or $e20 $e32))
+(flet ($e42 (and $e22 $e39))
+(flet ($e43 (not $e41))
+(flet ($e44 (implies $e24 $e31))
+(flet ($e45 (or $e42 $e44))
+(flet ($e46 (iff $e27 $e37))
+(flet ($e47 (or $e29 $e46))
+(flet ($e48 (not $e28))
+(flet ($e49 (and $e47 $e43))
+(flet ($e50 (iff $e40 $e30))
+(flet ($e51 (xor $e34 $e50))
+(flet ($e52 (iff $e45 $e51))
+(flet ($e53 (if_then_else $e49 $e49 $e52))
+(flet ($e54 (or $e53 $e38))
+(flet ($e55 (iff $e54 $e54))
+(flet ($e56 (and $e48 $e55))
+(flet ($e57 (and $e56 (not (= ?e6 bv0[16]))))
+(flet ($e58 (and $e57 (not (= ?e6 (bvnot bv0[16])))))
+$e58
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/decision/error3.delta01.smt b/test/regress/regress0/decision/error3.delta01.smt
new file mode 100644
index 0000000..de4bccd
--- /dev/null
+++ b/test/regress/regress0/decision/error3.delta01.smt
@@ -0,0 +1,32 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:extrafuns ((v1 BitVec[3]))
+:extrafuns ((a2 Array[13:3]))
+:status unsat
+:formula
+(let (?n1 bv0[3])
+(flet ($n2 (bvsgt v1 v1))
+(let (?n3 bv1[1])
+(let (?n4 bv0[1])
+(let (?n5 (ite $n2 ?n3 ?n4))
+(let (?n6 (sign_extend[2] ?n5))
+(flet ($n7 (bvslt ?n6 v1))
+(let (?n8 (ite $n7 ?n3 ?n4))
+(let (?n9 (sign_extend[2] ?n8))
+(let (?n10 bv0[13])
+(let (?n11 (select a2 ?n10))
+(let (?n12 (bvshl ?n9 ?n11))
+(flet ($n13 (= ?n1 ?n12))
+(flet ($n14 (not $n13))
+(let (?n15 (bvnot ?n8))
+(let (?n16 (zero_extend[10] ?n15))
+(let (?n17 bv0[11])
+(flet ($n18 (= ?n16 ?n17))
+(flet ($n19 (not $n18))
+(let (?n20 (repeat[2] ?n15))
+(let (?n21 (zero_extend[9] ?n20))
+(flet ($n22 (bvult ?n17 ?n21))
+(flet ($n23 (and $n19 $n22))
+(flet ($n24 (and $n14 $n23))
+$n24
+)))))))))))))))))))))))))
diff --git a/test/regress/regress0/decision/just_sat.expect b/test/regress/regress0/decision/just_sat.expect
new file mode 100644
index 0000000..849b886
--- /dev/null
+++ b/test/regress/regress0/decision/just_sat.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --decision=justification
+% EXPECT: sat
diff --git a/test/regress/regress0/decision/just_unsat.expect b/test/regress/regress0/decision/just_unsat.expect
new file mode 100644
index 0000000..7fd1d5a
--- /dev/null
+++ b/test/regress/regress0/decision/just_unsat.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --decision=justification
+% EXPECT: unsat
diff --git a/test/regress/regress0/decision/pp-regfile.delta01.smt b/test/regress/regress0/decision/pp-regfile.delta01.smt
new file mode 100644
index 0000000..7eb3277
--- /dev/null
+++ b/test/regress/regress0/decision/pp-regfile.delta01.smt
@@ -0,0 +1,35 @@
+(benchmark pp_regfile.smt
+:logic QF_AUFLIA
+:extrafuns ((REGFILE_INIT Array))
+:extrafuns ((BDEST_S2E_INIT Int))
+:extrafuns ((IMEM_INIT Array))
+:extrafuns ((OPCODE_OF Int Int))
+:status unknown
+:formula
+(let (?n1 0)
+(let (?n2 (select REGFILE_INIT ?n1))
+(let (?n3 (select IMEM_INIT ?n1))
+(let (?n4 (OPCODE_OF ?n3))
+(let (?n5 1)
+(flet ($n6 (= ?n4 ?n5))
+(flet ($n7 (= ?n1 ?n3))
+(flet ($n8 false)
+(flet ($n9 true)
+(flet ($n10 (if_then_else $n7 $n8 $n9))
+(flet ($n11 (= BDEST_S2E_INIT ?n1))
+(flet ($n12 (if_then_else $n11 $n8 $n9))
+(let (?n13 (store REGFILE_INIT BDEST_S2E_INIT ?n1))
+(let (?n14 (ite $n12 ?n13 REGFILE_INIT))
+(let (?n15 (store ?n14 ?n3 ?n1))
+(let (?n16 (ite $n10 ?n15 ?n14))
+(flet ($n17 (= ?n1 ?n4))
+(let (?n18 16)
+(flet ($n19 (= ?n18 ?n4))
+(let (?n20 (ite $n19 ?n16 ?n14))
+(let (?n21 (ite $n17 ?n14 ?n20))
+(let (?n22 (ite $n6 ?n16 ?n21))
+(let (?n23 (select ?n22 ?n1))
+(flet ($n24 (= ?n2 ?n23))
+(flet ($n25 (not $n24))
+$n25
+))))))))))))))))))))))))))
diff --git a/test/regress/regress0/decision/pp-regfile.delta01.smt.expect b/test/regress/regress0/decision/pp-regfile.delta01.smt.expect
new file mode 100644
index 0000000..7fd1d5a
--- /dev/null
+++ b/test/regress/regress0/decision/pp-regfile.delta01.smt.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --decision=justification
+% EXPECT: unsat
diff --git a/test/regress/regress0/decision/pp-regfile.delta02.smt b/test/regress/regress0/decision/pp-regfile.delta02.smt
new file mode 100644
index 0000000..1c461eb
--- /dev/null
+++ b/test/regress/regress0/decision/pp-regfile.delta02.smt
@@ -0,0 +1,34 @@
+(benchmark pp_regfile.smt
+:logic QF_AUFLIA
+:extrafuns ((REGFILE_INIT Array))
+:extrafuns ((BDEST_S2M_INIT Int))
+:extrapreds ((CLOCK_INIT))
+:status unknown
+:formula
+(let (?n1 0)
+(let (?n2 (select REGFILE_INIT ?n1))
+(let (?n3 1)
+(let (?n4 (ite CLOCK_INIT ?n3 ?n1))
+(flet ($n5 (= ?n1 ?n4))
+(let (?n6 (ite $n5 ?n1 ?n3))
+(flet ($n7 (= ?n3 ?n6))
+(flet ($n8 (= ?n1 BDEST_S2M_INIT))
+(flet ($n9 false)
+(flet ($n10 true)
+(flet ($n11 (if_then_else $n8 $n9 $n10))
+(let (?n12 (store REGFILE_INIT BDEST_S2M_INIT ?n1))
+(let (?n13 (ite $n11 ?n12 REGFILE_INIT))
+(let (?n14 (select ?n13 ?n4))
+(let (?n15 (ite $n7 ?n1 ?n14))
+(flet ($n16 (= ?n1 ?n15))
+(flet ($n17 (if_then_else $n16 $n9 $n10))
+(flet ($n18 (if_then_else CLOCK_INIT $n9 $n10))
+(let (?n19 (store ?n13 ?n3 ?n1))
+(let (?n20 (ite $n18 ?n19 ?n13))
+(let (?n21 (store ?n20 ?n3 ?n1))
+(let (?n22 (ite $n17 ?n20 ?n21))
+(let (?n23 (select ?n22 ?n1))
+(flet ($n24 (= ?n2 ?n23))
+(flet ($n25 (not $n24))
+$n25
+))))))))))))))))))))))))))
diff --git a/test/regress/regress0/decision/pp-regfile.delta02.smt.expect b/test/regress/regress0/decision/pp-regfile.delta02.smt.expect
new file mode 100644
index 0000000..7fd1d5a
--- /dev/null
+++ b/test/regress/regress0/decision/pp-regfile.delta02.smt.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --decision=justification
+% EXPECT: unsat
diff --git a/test/regress/regress0/decision/quant-Arrays_Q1-noinfer.smt2 b/test/regress/regress0/decision/quant-Arrays_Q1-noinfer.smt2
new file mode 100644
index 0000000..3398f5f
--- /dev/null
+++ b/test/regress/regress0/decision/quant-Arrays_Q1-noinfer.smt2
@@ -0,0 +1,73 @@
+(set-logic AUFLIA)
+(set-info :source | 
+  Boogie/Spec# benchmarks.
+  This benchmark was translated by Michal Moskal.
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-fun InRange (Int Int) Bool)
+(declare-fun o () Int)
+(declare-fun q () Int)
+(declare-fun int_18446744073709551615 () Int)
+(declare-fun Smt.false () Int)
+(declare-fun anyEqual (Int Int) Int)
+(declare-fun y () Int)
+(declare-fun select1 (Int Int) Int)
+(declare-fun select2 (Int Int Int) Int)
+(declare-fun CONCVARSYM (Int) Int)
+(declare-fun divides (Int Int) Int)
+(declare-fun intAtMost (Int Int) Int)
+(declare-fun subtypes (Int Int) Bool)
+(declare-fun store1 (Int Int Int) Int)
+(declare-fun store2 (Int Int Int Int) Int)
+(declare-fun B_0 () Int)
+(declare-fun B_1 () Int)
+(declare-fun intAtLeast (Int Int) Int)
+(declare-fun int_2147483647 () Int)
+(declare-fun boolOr (Int Int) Int)
+(declare-fun ReallyLastGeneratedExit_correct () Int)
+(declare-fun int_m9223372036854775808 () Int)
+(declare-fun Smt.true () Int)
+(declare-fun int_4294967295 () Int)
+(declare-fun start_correct () Int)
+(declare-fun B () Int)
+(declare-fun F () Int)
+(declare-fun G () Int)
+(declare-fun boolAnd (Int Int) Int)
+(declare-fun boolNot (Int) Int)
+(declare-fun k_0 () Int)
+(declare-fun intLess (Int Int) Int)
+(declare-fun intGreater (Int Int) Int)
+(declare-fun anyNeq (Int Int) Int)
+(declare-fun is (Int Int) Int)
+(declare-fun int_m2147483648 () Int)
+(declare-fun modulo (Int Int) Int)
+(declare-fun boolImplies (Int Int) Int)
+(declare-fun boolIff (Int Int) Int)
+(declare-fun int_9223372036854775807 () Int)
+(assert true)
+(assert true)
+(assert (forall ((?A Int) (?i Int) (?v Int)) (= (select1 (store1 ?A ?i ?v) ?i) ?v)))
+(assert (forall ((?A Int) (?i Int) (?j Int) (?v Int)) (=> (not (= ?i ?j)) (= (select1 (store1 ?A ?i ?v) ?j) (select1 ?A ?j)))))
+(assert (forall ((?A Int) (?o Int) (?f Int) (?v Int)) (= (select2 (store2 ?A ?o ?f ?v) ?o ?f) ?v)))
+(assert (forall ((?A Int) (?o Int) (?f Int) (?p Int) (?g Int) (?v Int)) (=> (not (= ?o ?p)) (= (select2 (store2 ?A ?o ?f ?v) ?p ?g) (select2 ?A ?p ?g)))))
+(assert (forall ((?A Int) (?o Int) (?f Int) (?p Int) (?g Int) (?v Int)) (=> (not (= ?f ?g)) (= (select2 (store2 ?A ?o ?f ?v) ?p ?g) (select2 ?A ?p ?g)))))
+(assert (forall ((?x Int) (?y Int)) (= (= (boolIff ?x ?y) Smt.true) (= (= ?x Smt.true) (= ?y Smt.true)))))
+(assert (forall ((?x Int) (?y Int)) (= (= (boolImplies ?x ?y) Smt.true) (=> (= ?x Smt.true) (= ?y Smt.true)))))
+(assert (forall ((?x Int) (?y Int)) (= (= (boolAnd ?x ?y) Smt.true) (and (= ?x Smt.true) (= ?y Smt.true)))))
+(assert (forall ((?x Int) (?y Int)) (= (= (boolOr ?x ?y) Smt.true) (or (= ?x Smt.true) (= ?y Smt.true)))))
+(assert (forall ((?x Int)) (! (= (= (boolNot ?x) Smt.true) (not (= ?x Smt.true))) :pattern ((boolNot ?x)) )))
+(assert (forall ((?x Int) (?y Int)) (= (= (anyEqual ?x ?y) Smt.true) (= ?x ?y))))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (anyNeq ?x ?y) Smt.true) (not (= ?x ?y))) :pattern ((anyNeq ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (= (= (intLess ?x ?y) Smt.true) (< ?x ?y))))
+(assert (forall ((?x Int) (?y Int)) (= (= (intAtMost ?x ?y) Smt.true) (<= ?x ?y))))
+(assert (forall ((?x Int) (?y Int)) (= (= (intAtLeast ?x ?y) Smt.true) (>= ?x ?y))))
+(assert (forall ((?x Int) (?y Int)) (= (= (intGreater ?x ?y) Smt.true) (> ?x ?y))))
+(assert (distinct Smt.false Smt.true))
+(assert (forall ((?t Int)) (! (subtypes ?t ?t) :pattern ((subtypes ?t ?t)) )))
+(assert (forall ((?t Int) (?u Int) (?v Int)) (! (=> (and (subtypes ?t ?u) (subtypes ?u ?v)) (subtypes ?t ?v)) :pattern ((subtypes ?t ?u) (subtypes ?u ?v)) )))
+(assert (forall ((?t Int) (?u Int)) (! (=> (and (subtypes ?t ?u) (subtypes ?u ?t)) (= ?t ?u)) :pattern ((subtypes ?t ?u) (subtypes ?u ?t)) )))
+(assert (let ((?v_0 (forall ((?p Int) (?f Int)) (or (= (select2 B_1 ?p ?f) (select2 B ?p ?f)) (and (= ?p o) (= ?f F))))) (?v_1 (= ReallyLastGeneratedExit_correct Smt.true)) (?v_2 (= start_correct Smt.true))) (not (=> (=> (=> true (=> (= k_0 (select2 B q G)) (=> (= B_0 (store2 B o F (+ y (select2 B o F)))) (=> (= B_1 (store2 B_0 q G k_0)) (=> (=> (=> true (and ?v_0 (=> ?v_0 (=> true true)))) ?v_1) ?v_1))))) ?v_2) ?v_2))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/decision/quant-Arrays_Q1-noinfer.smt2.expect b/test/regress/regress0/decision/quant-Arrays_Q1-noinfer.smt2.expect
new file mode 100644
index 0000000..7fd1d5a
--- /dev/null
+++ b/test/regress/regress0/decision/quant-Arrays_Q1-noinfer.smt2.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --decision=justification
+% EXPECT: unsat
diff --git a/test/regress/regress0/decision/quant-ex1.disable_miniscope.smt2.expect b/test/regress/regress0/decision/quant-ex1.disable_miniscope.smt2.expect
new file mode 100644
index 0000000..0642910
--- /dev/null
+++ b/test/regress/regress0/decision/quant-ex1.disable_miniscope.smt2.expect
@@ -0,0 +1,3 @@
+% COMMAND-LINE: --decision=justification --disable-miniscope-quant-fv --disable-miniscope-quant
+% EXPECT: unknown
+% EXPECT: (:reason-unknown incomplete)
diff --git a/test/regress/regress0/decision/quant-ex1.smt2 b/test/regress/regress0/decision/quant-ex1.smt2
new file mode 100644
index 0000000..a8f4ff2
--- /dev/null
+++ b/test/regress/regress0/decision/quant-ex1.smt2
@@ -0,0 +1,12 @@
+(set-logic AUFLIRA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status sat)
+(declare-sort U 0)
+(declare-fun a () U)
+(declare-fun b () U)
+(declare-fun f (U) U)
+(declare-fun p () Bool)
+(assert (and (= a b) (forall ((x U)) (=> (and (= (f x) a) (not (= (f x) b))) p))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/decision/quant-ex1.smt2.expect b/test/regress/regress0/decision/quant-ex1.smt2.expect
new file mode 100644
index 0000000..849b886
--- /dev/null
+++ b/test/regress/regress0/decision/quant-ex1.smt2.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --decision=justification
+% EXPECT: sat
diff --git a/test/regress/regress0/decision/quant-symmetric_unsat_7.smt2.expect b/test/regress/regress0/decision/quant-symmetric_unsat_7.smt2.expect
new file mode 100644
index 0000000..7fd1d5a
--- /dev/null
+++ b/test/regress/regress0/decision/quant-symmetric_unsat_7.smt2.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --decision=justification
+% EXPECT: unsat
diff --git a/test/regress/regress0/decision/uflia-xs-09-16-3-4-1-5.delta03.smt b/test/regress/regress0/decision/uflia-xs-09-16-3-4-1-5.delta03.smt
new file mode 100644
index 0000000..6f65e83
--- /dev/null
+++ b/test/regress/regress0/decision/uflia-xs-09-16-3-4-1-5.delta03.smt
@@ -0,0 +1,45 @@
+(benchmark mathsat
+:logic QF_UFLIA
+:extrafuns ((fmt_length Int))
+:extrafuns ((fmt1 Int))
+:extrafuns ((arg1 Int))
+:extrafuns ((select_format Int Int))
+:status sat
+:formula
+(let (?n1 1)
+(let (?n2 (+ ?n1 fmt1))
+(let (?n3 (select_format ?n2))
+(flet ($n4 (= ?n1 ?n3))
+(let (?n5 (select_format arg1))
+(let (?n6 0)
+(flet ($n7 (= ?n5 ?n6))
+(flet ($n8 (and $n4 $n7))
+(let (?n9 7)
+(let (?n10 (select_format ?n9))
+(flet ($n11 (= ?n1 ?n10))
+(let (?n12 (select_format ?n6))
+(flet ($n13 (= ?n1 ?n12))
+(let (?n14 (select_format ?n1))
+(flet ($n15 (= ?n1 ?n14))
+(flet ($n16 (or $n13 $n15))
+(let (?n17 5)
+(let (?n18 (select_format ?n17))
+(flet ($n19 (= ?n6 ?n18))
+(flet ($n20 (or $n16 $n19))
+(let (?n21 6)
+(let (?n22 (select_format ?n21))
+(flet ($n23 (= ?n6 ?n22))
+(flet ($n24 (or $n20 $n23))
+(flet ($n25 (or $n11 $n24))
+(let (?n26 9)
+(flet ($n27 (= ?n26 fmt_length))
+(let (?n28 2)
+(let (?n29 (- fmt1 ?n28))
+(flet ($n30 (= arg1 ?n29))
+(flet ($n31 (< fmt1 fmt_length))
+(flet ($n32 (and $n30 $n31))
+(flet ($n33 (and $n27 $n32))
+(flet ($n34 (and $n25 $n33))
+(flet ($n35 (and $n8 $n34))
+$n35
+))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/decision/uflia-xs-09-16-3-4-1-5.delta03.smt.expect b/test/regress/regress0/decision/uflia-xs-09-16-3-4-1-5.delta03.smt.expect
new file mode 100644
index 0000000..849b886
--- /dev/null
+++ b/test/regress/regress0/decision/uflia-xs-09-16-3-4-1-5.delta03.smt.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --decision=justification
+% EXPECT: sat
diff --git a/test/regress/regress0/decision/wchains010ue.delta02.smt b/test/regress/regress0/decision/wchains010ue.delta02.smt
new file mode 100644
index 0000000..d5ddf64
--- /dev/null
+++ b/test/regress/regress0/decision/wchains010ue.delta02.smt
@@ -0,0 +1,35 @@
+(benchmark wchains010ue.smt
+:logic QF_AUFBV
+:extrafuns ((v6 BitVec[32]))
+:extrafuns ((v7 BitVec[32]))
+:extrafuns ((a1 Array[32:8]))
+:status unsat
+:formula
+(let (?n1 bv0[1])
+(let (?n2 bv0[2])
+(let (?n3 (extract[1:0] v6))
+(flet ($n4 (= ?n2 ?n3))
+(let (?n5 bv1[1])
+(let (?n6 (ite $n4 ?n5 ?n1))
+(let (?n7 (extract[23:16] v6))
+(let (?n8 (store a1 v6 ?n7))
+(let (?n9 bv0[32])
+(let (?n10 bv0[8])
+(let (?n11 (store ?n8 ?n9 ?n10))
+(let (?n12 (extract[23:16] v7))
+(let (?n13 (store ?n11 v7 ?n12))
+(let (?n14 bv1[32])
+(let (?n15 (store ?n13 ?n14 ?n10))
+(let (?n16 (store ?n15 ?n9 ?n10))
+(let (?n17 (store a1 ?n9 ?n10))
+(let (?n18 (store ?n17 v7 ?n12))
+(let (?n19 (store ?n18 ?n14 ?n10))
+(let (?n20 (store ?n19 v6 ?n7))
+(flet ($n21 (= ?n16 ?n20))
+(let (?n22 (ite $n21 ?n5 ?n1))
+(let (?n23 (bvnot ?n22))
+(let (?n24 (bvand ?n6 ?n23))
+(flet ($n25 (= ?n1 ?n24))
+(flet ($n26 (not $n25))
+$n26
+)))))))))))))))))))))))))))
diff --git a/test/regress/regress0/decision/wchains010ue.delta02.smt.expect b/test/regress/regress0/decision/wchains010ue.delta02.smt.expect
new file mode 100644
index 0000000..7fd1d5a
--- /dev/null
+++ b/test/regress/regress0/decision/wchains010ue.delta02.smt.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --decision=justification
+% EXPECT: unsat
diff --git a/test/regress/regress0/decision/wchains010ue.smt.expect b/test/regress/regress0/decision/wchains010ue.smt.expect
new file mode 100644
index 0000000..7fd1d5a
--- /dev/null
+++ b/test/regress/regress0/decision/wchains010ue.smt.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --decision=justification
+% EXPECT: unsat
diff --git a/test/regress/regress0/declare-funs.smt2 b/test/regress/regress0/declare-funs.smt2
new file mode 100644
index 0000000..9cbbd8f
--- /dev/null
+++ b/test/regress/regress0/declare-funs.smt2
@@ -0,0 +1,5 @@
+(set-logic QF_LIA)
+(set-info :status sat)
+(declare-funs ((f Int) (g Int)))
+(assert (= f g))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/distinct.smt b/test/regress/regress0/distinct.smt
new file mode 100644
index 0000000..8c36a9a
--- /dev/null
+++ b/test/regress/regress0/distinct.smt
@@ -0,0 +1,5 @@
+(benchmark distinct_test
+  :logic QF_UF
+  :status unsat
+  :extrafuns ((x U) (y U) (z U))
+  :formula (not (iff (distinct x y z) (and (not (= x y)) (not (= x z)) (not (= y z))))))
diff --git a/test/regress/regress0/error.cvc b/test/regress/regress0/error.cvc
new file mode 100644
index 0000000..de4d8e1
--- /dev/null
+++ b/test/regress/regress0/error.cvc
@@ -0,0 +1,8 @@
+% EXPECT-ERROR: CVC4 Error:
+% EXPECT-ERROR: Parse Error: error.cvc:7.8: Symbol 'BOOL' not declared as a type
+% EXPECT-ERROR: 
+% EXPECT-ERROR:   p : BOOL;
+% EXPECT-ERROR:       ^
+% EXPECT-ERROR: 
+p : BOOL;
+% EXIT: 1
diff --git a/test/regress/regress0/errorcrash.smt2 b/test/regress/regress0/errorcrash.smt2
new file mode 100644
index 0000000..6b8a0a8
--- /dev/null
+++ b/test/regress/regress0/errorcrash.smt2
@@ -0,0 +1,9 @@
+; EXIT: 1
+; EXPECT: (error "Parse Error: errorcrash.smt2:5.29: Symbol 'Array' not declared as a type")
+(set-logic QF_UF)
+(declare-sort U 0)
+(declare-fun x () (Array U U))
+(declare-fun y () (Array U U))
+(assert (= x y))
+(check-sat)
+(get-value (x y))
diff --git a/test/regress/regress0/expect/Makefile.am b/test/regress/regress0/expect/Makefile.am
new file mode 100644
index 0000000..e1518d8
--- /dev/null
+++ b/test/regress/regress0/expect/Makefile.am
@@ -0,0 +1,44 @@
+SUBDIRS = .
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	scrub.01.smt \
+	scrub.02.smt \
+	scrub.03.smt2 \
+	scrub.04.smt2 \
+	scrub.06.cvc \
+	scrub.07.sy \
+	scrub.08.sy \
+	scrub.09.p
+
+EXTRA_DIST = $(TESTS) \
+	scrub.01.smt.expect \
+	scrub.03.smt2.expect \
+	scrub.07.sy.expect
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/expect/Makefile.in b/test/regress/regress0/expect/Makefile.in
new file mode 100644
index 0000000..12d00cb
--- /dev/null
+++ b/test/regress/regress0/expect/Makefile.in
@@ -0,0 +1,1227 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/expect
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver README
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+SUBDIRS = .
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	scrub.01.smt \
+	scrub.02.smt \
+	scrub.03.smt2 \
+	scrub.04.smt2 \
+	scrub.06.cvc \
+	scrub.07.sy \
+	scrub.08.sy \
+	scrub.09.p
+
+EXTRA_DIST = $(TESTS) \
+	scrub.01.smt.expect \
+	scrub.03.smt2.expect \
+	scrub.07.sy.expect
+
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/expect/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/expect/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+scrub.01.smt.log: scrub.01.smt
+	@p='scrub.01.smt'; \
+	b='scrub.01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+scrub.02.smt.log: scrub.02.smt
+	@p='scrub.02.smt'; \
+	b='scrub.02.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+scrub.03.smt2.log: scrub.03.smt2
+	@p='scrub.03.smt2'; \
+	b='scrub.03.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+scrub.04.smt2.log: scrub.04.smt2
+	@p='scrub.04.smt2'; \
+	b='scrub.04.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+scrub.06.cvc.log: scrub.06.cvc
+	@p='scrub.06.cvc'; \
+	b='scrub.06.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+scrub.07.sy.log: scrub.07.sy
+	@p='scrub.07.sy'; \
+	b='scrub.07.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+scrub.08.sy.log: scrub.08.sy
+	@p='scrub.08.sy'; \
+	b='scrub.08.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+scrub.09.p.log: scrub.09.p
+	@p='scrub.09.p'; \
+	b='scrub.09.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/expect/README b/test/regress/regress0/expect/README
new file mode 100644
index 0000000..7569824
--- /dev/null
+++ b/test/regress/regress0/expect/README
@@ -0,0 +1 @@
+This directory contains integration tests for the test/regress/run_regression script.
\ No newline at end of file
diff --git a/test/regress/regress0/expect/scrub.01.smt b/test/regress/regress0/expect/scrub.01.smt
new file mode 100644
index 0000000..592a350
--- /dev/null
+++ b/test/regress/regress0/expect/scrub.01.smt
@@ -0,0 +1,7 @@
+(benchmark reject_nonlinear
+:logic QF_LRA
+:extrafuns ((n Real))
+:status unknown
+:formula
+(= (/ n n) 1)
+)
diff --git a/test/regress/regress0/expect/scrub.01.smt.expect b/test/regress/regress0/expect/scrub.01.smt.expect
new file mode 100644
index 0000000..b21f2d9
--- /dev/null
+++ b/test/regress/regress0/expect/scrub.01.smt.expect
@@ -0,0 +1,6 @@
+% SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/'
+% EXPECT: (error "A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: (/ n n)
+% EXPECT: if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.
+% EXPECT: The fact in question: TERM
+% EXPECT: ")
+% EXIT: 1
diff --git a/test/regress/regress0/expect/scrub.02.smt b/test/regress/regress0/expect/scrub.02.smt
new file mode 100644
index 0000000..f2e6554
--- /dev/null
+++ b/test/regress/regress0/expect/scrub.02.smt
@@ -0,0 +1,13 @@
+% SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/'
+% EXPECT: (error "A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: (/ n n)
+% EXPECT: if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.
+% EXPECT: The fact in question: TERM
+% EXPECT: ")
+% EXIT: 1
+(benchmark reject_nonlinear
+:logic QF_LRA
+:extrafuns ((n Real))
+:status unknown
+:formula
+(= (/ n n) 1)
+)
diff --git a/test/regress/regress0/expect/scrub.03.smt2 b/test/regress/regress0/expect/scrub.03.smt2
new file mode 100644
index 0000000..a5a2c9b
--- /dev/null
+++ b/test/regress/regress0/expect/scrub.03.smt2
@@ -0,0 +1,9 @@
+(set-logic QF_LRA)
+(set-info :status unknown)
+(declare-fun n () Real)
+
+; This example is test that LRA rejects multiplication terms
+
+(assert (= (/ n n) 1))
+
+(check-sat)
diff --git a/test/regress/regress0/expect/scrub.03.smt2.expect b/test/regress/regress0/expect/scrub.03.smt2.expect
new file mode 100644
index 0000000..b21f2d9
--- /dev/null
+++ b/test/regress/regress0/expect/scrub.03.smt2.expect
@@ -0,0 +1,6 @@
+% SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/'
+% EXPECT: (error "A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: (/ n n)
+% EXPECT: if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.
+% EXPECT: The fact in question: TERM
+% EXPECT: ")
+% EXIT: 1
diff --git a/test/regress/regress0/expect/scrub.04.smt2 b/test/regress/regress0/expect/scrub.04.smt2
new file mode 100644
index 0000000..e457734
--- /dev/null
+++ b/test/regress/regress0/expect/scrub.04.smt2
@@ -0,0 +1,15 @@
+; SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/'
+; EXPECT: (error "A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: (/ n n)
+; EXPECT: if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.
+; EXPECT: The fact in question: TERM
+; EXPECT: ")
+; EXIT: 1
+(set-logic QF_LRA)
+(set-info :status unknown)
+(declare-fun n () Real)
+
+; This example is test that LRA rejects multiplication terms
+
+(assert (= (/ n n) 1))
+
+(check-sat)
diff --git a/test/regress/regress0/expect/scrub.06.cvc b/test/regress/regress0/expect/scrub.06.cvc
new file mode 100644
index 0000000..b9cb1cd
--- /dev/null
+++ b/test/regress/regress0/expect/scrub.06.cvc
@@ -0,0 +1,9 @@
+% SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/' -e 's/in a linear logic: .*$/in a linear logic: TERM/' -e '/^$/d'
+% EXPECT: A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: TERM
+% EXPECT: if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.
+% EXPECT: The fact in question: TERM
+% EXIT: 1
+
+n : REAL;
+
+QUERY (n/n) = 1;
\ No newline at end of file
diff --git a/test/regress/regress0/expect/scrub.07.sy b/test/regress/regress0/expect/scrub.07.sy
new file mode 100644
index 0000000..cf0e37c
--- /dev/null
+++ b/test/regress/regress0/expect/scrub.07.sy
@@ -0,0 +1,7 @@
+; COMMAND-LINE: --cegqi-si=all --no-dump-synth
+(set-logic LIA)
+(declare-var n Int)
+
+(synth-fun f ((n Int)) Int)
+(constraint (= (/ n n) 1))
+(check-synth)
diff --git a/test/regress/regress0/expect/scrub.07.sy.expect b/test/regress/regress0/expect/scrub.07.sy.expect
new file mode 100644
index 0000000..dfcd45a
--- /dev/null
+++ b/test/regress/regress0/expect/scrub.07.sy.expect
@@ -0,0 +1,6 @@
+% SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/'  -e 's/in a linear logic: .*$/in a linear logic: TERM/'
+% EXPECT: (error "A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: TERM
+% EXPECT: if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.
+% EXPECT: The fact in question: TERM
+% EXPECT: ")
+% EXIT: 1
diff --git a/test/regress/regress0/expect/scrub.08.sy b/test/regress/regress0/expect/scrub.08.sy
new file mode 100644
index 0000000..3b9574c
--- /dev/null
+++ b/test/regress/regress0/expect/scrub.08.sy
@@ -0,0 +1,13 @@
+; COMMAND-LINE: --cegqi-si=all --no-dump-synth
+; SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/' -e 's/in a linear logic: .*$/in a linear logic: TERM/'
+; EXPECT: (error "A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: TERM
+; EXPECT: if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.
+; EXPECT: The fact in question: TERM
+; EXPECT: ")
+; EXIT: 1
+(set-logic LIA)
+(declare-var n Int)
+
+(synth-fun f ((n Int)) Int)
+(constraint (= (/ n n) 1))
+(check-synth)
\ No newline at end of file
diff --git a/test/regress/regress0/expect/scrub.09.p b/test/regress/regress0/expect/scrub.09.p
new file mode 100644
index 0000000..17eef44
--- /dev/null
+++ b/test/regress/regress0/expect/scrub.09.p
@@ -0,0 +1,11 @@
+% COMMAND-LINE: --cegqi-si=all --no-dump-synth
+% SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/' -e 's/in a linear logic: .*$/in a linear logic: TERM/'
+% EXPECT: (error "A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: TERM
+% EXPECT: if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.
+% EXPECT: The fact in question: TERM
+% EXPECT: ")
+% EXIT: 1
+tff(reject_division,conjecture,
+    ! [X: $int] :
+       ( $quotient(X,X) = 1 )
+    ).
diff --git a/test/regress/regress0/flet.smt b/test/regress/regress0/flet.smt
new file mode 100644
index 0000000..95742de
--- /dev/null
+++ b/test/regress/regress0/flet.smt
@@ -0,0 +1,5 @@
+(benchmark flet_test
+  :logic QF_UF
+  :status unsat
+  :extrapreds ((a) (b)) 
+  :formula (flet ($x (and a b)) (and $x (or (not a) (not b)))))
\ No newline at end of file
diff --git a/test/regress/regress0/flet2.smt b/test/regress/regress0/flet2.smt
new file mode 100644
index 0000000..4d71ebf
--- /dev/null
+++ b/test/regress/regress0/flet2.smt
@@ -0,0 +1,5 @@
+(benchmark flet_test
+  :logic QF_UF
+  :status sat
+  :extrapreds ((a) (b)) 
+  :formula (flet ($x (and a b)) (and $x (or a b))))
\ No newline at end of file
diff --git a/test/regress/regress0/fmf/ALG008-1.smt2 b/test/regress/regress0/fmf/ALG008-1.smt2
new file mode 100644
index 0000000..2c3bab8
--- /dev/null
+++ b/test/regress/regress0/fmf/ALG008-1.smt2
@@ -0,0 +1,72 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+;%--------------------------------------------------------------------------
+;% File     : ALG008-1 : TPTP v5.4.0. Released v2.2.0.
+;% Domain   : General Algebra
+;% Problem  : TC + right identity does not give RC.
+;% Version  : [MP96] (equality) axioms : Especial.
+;% English  : An algebra with a right identity satisfying the Thomsen
+;%            Closure (RC) condition does not necessarily satisfy the
+;%            Reidemeister Closure (RC) condition.
+
+;% Refs     : [McC98] McCune (1998), Email to G. Sutcliffe
+;%          : [MP96]  McCune & Padmanabhan (1996), Automated Deduction in Eq
+;% Source   : [McC98]
+;% Names    : TC-3 [MP96]
+
+;% Status   : Satisfiable
+;% Rating   : 0.50 v5.4.0, 0.80 v5.3.0, 0.78 v5.2.0, 0.80 v5.0.0, 0.78 v4.1.0, 0.71 v4.0.1, 0.80 v4.0.0, 0.50 v3.7.0, 0.33 v3.4.0, 0.50 v3.3.0, 0.33 v3.2.0, 0.80 v3.1.0, 0.67 v2.7.0, 0.33 v2.6.0, 0.86 v2.5.0, 0.50 v2.4.0, 0.67 v2.3.0, 1.00 v2.2.1
+;% Syntax   : Number of clauses     :    6 (   0 non-Horn;   5 unit;   5 RR)
+;%            Number of atoms       :   10 (  10 equality)
+;%            Maximal clause size   :    5 (   2 average)
+;%            Number of predicates  :    1 (   0 propositional; 2-2 arity)
+;%            Number of functors    :    9 (   8 constant; 0-2 arity)
+;%            Number of variables   :    9 (   0 singleton)
+;%            Maximal term depth    :    2 (   2 average)
+;% SPC      : CNF_SAT_RFO_EQU_NUE
+
+;% Comments : The smallest model has 3 elements.
+;%--------------------------------------------------------------------------
+;%----Thomsen Closure (TC) condition:
+(set-logic UF)
+(set-info :status sat)
+(declare-sort sort__smt2 0)
+; functions
+(declare-fun multiply__smt2_2 ( sort__smt2 sort__smt2 ) sort__smt2)
+(declare-fun identity__smt2_0 ( ) sort__smt2)
+(declare-fun c4__smt2_0 ( ) sort__smt2)
+(declare-fun a__smt2_0 ( ) sort__smt2)
+(declare-fun c3__smt2_0 ( ) sort__smt2)
+(declare-fun b__smt2_0 ( ) sort__smt2)
+(declare-fun c2__smt2_0 ( ) sort__smt2)
+(declare-fun c1__smt2_0 ( ) sort__smt2)
+(declare-fun f__smt2_0 ( ) sort__smt2)
+; predicates
+
+; thomsen_closure axiom
+(assert (forall ((?V7 sort__smt2) (?V6 sort__smt2) (?W sort__smt2) (?V sort__smt2) (?U sort__smt2) (?Z sort__smt2) (?Y sort__smt2) (?X sort__smt2)) 
+    (or (not (= (multiply__smt2_2 ?X ?Y) ?Z))
+        (not (= (multiply__smt2_2 ?U ?V) ?Z))
+        (not (= (multiply__smt2_2 ?X ?W) ?V6))
+        (not (= (multiply__smt2_2 ?V7 ?V) ?V6))
+        (= (multiply__smt2_2 ?U ?W) (multiply__smt2_2 ?V7 ?Y)))) )
+
+;%----Right identity:
+; right_identity axiom
+(assert (forall ((?X sort__smt2)) (= (multiply__smt2_2 ?X identity__smt2_0) ?X)) )
+
+;%----Denial of Reidimeister Closure (RC) condidition.
+; prove_reidimeister1 negated_conjecture
+(assert (= (multiply__smt2_2 c4__smt2_0 a__smt2_0) (multiply__smt2_2 c3__smt2_0 b__smt2_0)) )
+
+; prove_reidimeister2 negated_conjecture
+(assert (= (multiply__smt2_2 c2__smt2_0 a__smt2_0) (multiply__smt2_2 c1__smt2_0 b__smt2_0)) )
+
+; prove_reidimeister3 negated_conjecture
+(assert (= (multiply__smt2_2 c4__smt2_0 f__smt2_0) (multiply__smt2_2 c3__smt2_0 identity__smt2_0)) )
+
+; prove_reidimeister4 negated_conjecture
+(assert (not (= (multiply__smt2_2 c2__smt2_0 f__smt2_0) (multiply__smt2_2 c1__smt2_0 identity__smt2_0))) )
+
+
+(check-sat)
diff --git a/test/regress/regress0/fmf/Arrow_Order-smtlib.778341.smt b/test/regress/regress0/fmf/Arrow_Order-smtlib.778341.smt
new file mode 100644
index 0000000..f62f057
--- /dev/null
+++ b/test/regress/regress0/fmf/Arrow_Order-smtlib.778341.smt
@@ -0,0 +1,264 @@
+% COMMAND-LINE: --finite-model-find --mbqi=gen-ev
+% EXPECT: unsat
+(benchmark Isabelle
+:status sat
+:logic AUFLIA
+:extrasorts ( S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S13 S14 S15 S16 S17 S18 S19 S20 S21 S22 S23 S24 S25 S26 S27 S28 S29 S30 S31 S32 S33 S34 S35 S36 S37)
+:extrafuns (
+  (f1 S1)
+  (f2 S1)
+  (f3 S3 S2 S1)
+  (f4 S4 S2 S3)
+  (f5 S4)
+  (f6 S6 S5 S1)
+  (f7 S7 S5 S6)
+  (f8 S7)
+  (f9 S9 S8 S1)
+  (f10 S10 S8 S9)
+  (f11 S10)
+  (f12 S1)
+  (f13 S12 S1)
+  (f14 S12)
+  (f15 S12 S1)
+  (f16 S2)
+  (f17 S13 S2 S2)
+  (f18 S14 S11 S13)
+  (f19 S14)
+  (f20 S5)
+  (f21 S16 S5 S5)
+  (f22 S17 S15 S16)
+  (f23 S17)
+  (f24 S8)
+  (f25 S18 S8 S8)
+  (f26 S19 S5 S18)
+  (f27 S19)
+  (f28 S20 S2 S13)
+  (f29 S20)
+  (f30 S21 S5 S16)
+  (f31 S21)
+  (f32 S22 S8 S18)
+  (f33 S22)
+  (f34 S14)
+  (f35 S17)
+  (f36 S19)
+  (f37 S24 S23 S2)
+  (f38 S25 S2 S24)
+  (f39 S25)
+  (f40 S26 S23 S1)
+  (f41 S27 Int S26)
+  (f42 S27)
+  (f43 S28 S23 S5)
+  (f44 S29 S5 S28)
+  (f45 S29)
+  (f46 S30 S23 S8)
+  (f47 S31 S8 S30)
+  (f48 S31)
+  (f49 S2 S1)
+  (f50 S5 S1)
+  (f51 S8 S1)
+  (f52 S4)
+  (f53 S7)
+  (f54 S10)
+  (f55 S32 S2 S11)
+  (f56 S32)
+  (f57 S33 S5 S15)
+  (f58 S33)
+  (f59 S34 S8 S5)
+  (f60 S34)
+  (f61 S35 S11 S1)
+  (f62 S2 S35)
+  (f63 S36 S15 S1)
+  (f64 S5 S36)
+  (f65 S8 S6)
+  (f66 S35 S3)
+  (f67 S36 S6)
+  (f68 S6 S9)
+  (f69 S11 S3)
+  (f70 S5 S9)
+  (f71 S15 S6)
+  (f72 S13)
+  (f73 S16)
+  (f74 S18)
+  (f75 S20)
+  (f76 S21)
+  (f77 S22)
+  (f78 S37 S26 Int)
+  (f79 S37)
+)
+:assumption (not (= f1 f2))
+:assumption (forall (?v0 S2) (?v1 S2) (iff (= (f3 (f4 f5 ?v0) ?v1) f1) (= ?v0 ?v1)) )
+:assumption (forall (?v0 S5) (?v1 S5) (iff (= (f6 (f7 f8 ?v0) ?v1) f1) (= ?v0 ?v1)) )
+:assumption (forall (?v0 S8) (?v1 S8) (iff (= (f9 (f10 f11 ?v0) ?v1) f1) (= ?v0 ?v1)) )
+:assumption (not (= f12 f1))
+:assumption (forall (?v0 S11) (?v1 S11) (implies (not (= ?v0 ?v1)) (= f12 f1)))
+:assumption (exists (?v0 S11) (?v1 S11) (?v2 S11) (distinct ?v0 ?v1 ?v2))
+:assumption (exists (?v0 S11) (?v1 S11) (?v2 S11) (distinct ?v0 ?v1 ?v2) )
+:assumption (= (f13 f14) f1)
+:assumption (= (f15 f14) f1)
+:assumption (forall (?v0 S11) (?v1 S11) (implies (not (= ?v0 ?v1)) (exists (?v2 S11) (distinct ?v0 ?v1 ?v2))) )
+:assumption (forall (?v0 S11) (?v1 S2) (not (= f16 (f17 (f18 f19 ?v0) ?v1))) )
+:assumption (forall (?v0 S15) (?v1 S5) (not (= f20 (f21 (f22 f23 ?v0) ?v1))) )
+:assumption (forall (?v0 S5) (?v1 S8) (not (= f24 (f25 (f26 f27 ?v0) ?v1))) )
+:assumption (forall (?v0 S11) (?v1 S2) (not (= (f17 (f18 f19 ?v0) ?v1) f16)) )
+:assumption (forall (?v0 S15) (?v1 S5) (not (= (f21 (f22 f23 ?v0) ?v1) f20)) )
+:assumption (forall (?v0 S5) (?v1 S8) (not (= (f25 (f26 f27 ?v0) ?v1) f24)) )
+:assumption (forall (?v0 S2) (iff (not (= ?v0 f16)) (exists (?v1 S11) (?v2 S2) (= ?v0 (f17 (f18 f19 ?v1) ?v2)))) )
+:assumption (forall (?v0 S5) (iff (not (= ?v0 f20)) (exists (?v1 S15) (?v2 S5) (= ?v0 (f21 (f22 f23 ?v1) ?v2)))) )
+:assumption (forall (?v0 S8) (iff (not (= ?v0 f24)) (exists (?v1 S5) (?v2 S8) (= ?v0 (f25 (f26 f27 ?v1) ?v2)))) )
+:assumption (forall (?v0 S2) (implies (implies (= ?v0 f16) false) (implies (forall (?v1 S11) (?v2 S2) (implies (= ?v0 (f17 (f18 f19 ?v1) ?v2)) false)) false)) )
+:assumption (forall (?v0 S5) (implies (implies (= ?v0 f20) false) (implies (forall (?v1 S15) (?v2 S5) (implies (= ?v0 (f21 (f22 f23 ?v1) ?v2)) false)) false)) )
+:assumption (forall (?v0 S8) (implies (implies (= ?v0 f24) false) (implies (forall (?v1 S5) (?v2 S8) (implies (= ?v0 (f25 (f26 f27 ?v1) ?v2)) false)) false)) )
+:assumption (forall (?v0 S2) (?v1 S11) (not (= ?v0 (f17 (f18 f19 ?v1) ?v0))) )
+:assumption (forall (?v0 S8) (?v1 S5) (not (= ?v0 (f25 (f26 f27 ?v1) ?v0))) )
+:assumption (forall (?v0 S5) (?v1 S15) (not (= ?v0 (f21 (f22 f23 ?v1) ?v0))) )
+:assumption (forall (?v0 S11) (?v1 S2) (not (= (f17 (f18 f19 ?v0) ?v1) ?v1)) )
+:assumption (forall (?v0 S5) (?v1 S8) (not (= (f25 (f26 f27 ?v0) ?v1) ?v1)) )
+:assumption (forall (?v0 S15) (?v1 S5) (not (= (f21 (f22 f23 ?v0) ?v1) ?v1)) )
+:assumption (forall (?v0 S11) (?v1 S2) (?v2 S11) (?v3 S2) (iff (= (f17 (f18 f19 ?v0) ?v1) (f17 (f18 f19 ?v2) ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3))) )
+:assumption (forall (?v0 S5) (?v1 S8) (?v2 S5) (?v3 S8) (iff (= (f25 (f26 f27 ?v0) ?v1) (f25 (f26 f27 ?v2) ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3))) )
+:assumption (forall (?v0 S15) (?v1 S5) (?v2 S15) (?v3 S5) (iff (= (f21 (f22 f23 ?v0) ?v1) (f21 (f22 f23 ?v2) ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3))) )
+:assumption (forall (?v0 S11) (?v1 S2) (= (f17 (f28 f29 (f17 (f18 f19 ?v0) ?v1)) f16) (f17 (f18 f19 ?v0) ?v1))  )
+:assumption (forall (?v0 S15) (?v1 S5) (= (f21 (f30 f31 (f21 (f22 f23 ?v0) ?v1)) f20) (f21 (f22 f23 ?v0) ?v1))  )
+:assumption (forall (?v0 S5) (?v1 S8) (= (f25 (f32 f33 (f25 (f26 f27 ?v0) ?v1)) f24) (f25 (f26 f27 ?v0) ?v1))  )
+:assumption (forall (?v0 S11) (= (f17 (f18 f34 ?v0) f16) (f17 (f18 f19 ?v0) f16))  )
+:assumption (forall (?v0 S15) (= (f21 (f22 f35 ?v0) f20) (f21 (f22 f23 ?v0) f20))  )
+:assumption (forall (?v0 S5) (= (f25 (f26 f36 ?v0) f24) (f25 (f26 f27 ?v0) f24))  )
+:assumption (forall (?v0 S2) (?v1 S3) (implies (not (= ?v0 f16)) (implies (forall (?v2 S11) (= (f3 ?v1 (f17 (f18 f19 ?v2) f16)) f1)) (implies (forall (?v2 S11) (?v3 S2) (implies (not (= ?v3 f16)) (implies (= (f3 ?v1 ?v3) f1) (= (f3 ?v1 (f17 (f18 f19 ?v2) ?v3)) f1)))) (= (f3 ?v1 ?v0) f1)))) )
+:assumption (forall (?v0 S5) (?v1 S6) (implies (not (= ?v0 f20)) (implies (forall (?v2 S15) (= (f6 ?v1 (f21 (f22 f23 ?v2) f20)) f1)) (implies (forall (?v2 S15) (?v3 S5) (implies (not (= ?v3 f20)) (implies (= (f6 ?v1 ?v3) f1) (= (f6 ?v1 (f21 (f22 f23 ?v2) ?v3)) f1)))) (= (f6 ?v1 ?v0) f1)))) )
+:assumption (forall (?v0 S8) (?v1 S9) (implies (not (= ?v0 f24)) (implies (forall (?v2 S5) (= (f9 ?v1 (f25 (f26 f27 ?v2) f24)) f1)) (implies (forall (?v2 S5) (?v3 S8) (implies (not (= ?v3 f24)) (implies (= (f9 ?v1 ?v3) f1) (= (f9 ?v1 (f25 (f26 f27 ?v2) ?v3)) f1)))) (= (f9 ?v1 ?v0) f1)))) )
+:assumption (forall (?v0 S11) (?v1 S23) (= (f37 (f38 f39 (f17 (f18 f19 ?v0) f16)) ?v1) (ite (= (f40 (f41 f42 0) ?v1) f1) (f17 (f18 f19 ?v0) f16) f16))  )
+:assumption (forall (?v0 S15) (?v1 S23) (= (f43 (f44 f45 (f21 (f22 f23 ?v0) f20)) ?v1) (ite (= (f40 (f41 f42 0) ?v1) f1) (f21 (f22 f23 ?v0) f20) f20))  )
+:assumption (forall (?v0 S5) (?v1 S23) (= (f46 (f47 f48 (f25 (f26 f27 ?v0) f24)) ?v1) (ite (= (f40 (f41 f42 0) ?v1) f1) (f25 (f26 f27 ?v0) f24) f24))  )
+:assumption (forall (?v0 S23) (= (f37 (f38 f39 f16) ?v0) f16)  )
+:assumption (forall (?v0 S23) (= (f43 (f44 f45 f20) ?v0) f20)  )
+:assumption (forall (?v0 S23) (= (f46 (f47 f48 f24) ?v0) f24)  )
+:assumption (forall (?v0 S11) (?v1 S2) (?v2 S11) (?v3 S2) (= (f17 (f28 f29 (f17 (f18 f19 ?v0) ?v1)) (f17 (f18 f19 ?v2) ?v3)) (f17 (f18 f19 ?v0) (f17 (f18 f19 ?v2) (f17 (f28 f29 ?v1) ?v3))))  )
+:assumption (forall (?v0 S5) (?v1 S8) (?v2 S5) (?v3 S8) (= (f25 (f32 f33 (f25 (f26 f27 ?v0) ?v1)) (f25 (f26 f27 ?v2) ?v3)) (f25 (f26 f27 ?v0) (f25 (f26 f27 ?v2) (f25 (f32 f33 ?v1) ?v3))))  )
+:assumption (forall (?v0 S15) (?v1 S5) (?v2 S15) (?v3 S5) (= (f21 (f30 f31 (f21 (f22 f23 ?v0) ?v1)) (f21 (f22 f23 ?v2) ?v3)) (f21 (f22 f23 ?v0) (f21 (f22 f23 ?v2) (f21 (f30 f31 ?v1) ?v3))))  )
+:assumption (forall (?v0 S2) (= (f17 (f28 f29 ?v0) f16) ?v0)  )
+:assumption (forall (?v0 S5) (= (f21 (f30 f31 ?v0) f20) ?v0)  )
+:assumption (forall (?v0 S8) (= (f25 (f32 f33 ?v0) f24) ?v0)  )
+:assumption (forall (?v0 S2) (= (f17 (f28 f29 f16) ?v0) ?v0)  )
+:assumption (forall (?v0 S5) (= (f21 (f30 f31 f20) ?v0) ?v0)  )
+:assumption (forall (?v0 S8) (= (f25 (f32 f33 f24) ?v0) ?v0)  )
+:assumption (forall (?v0 S2) (iff (= ?v0 f16) (= (f49 ?v0) f1)) )
+:assumption (forall (?v0 S5) (iff (= ?v0 f20) (= (f50 ?v0) f1)) )
+:assumption (forall (?v0 S8) (iff (= ?v0 f24) (= (f51 ?v0) f1)) )
+:assumption (forall (?v0 S2) (iff (= (f49 ?v0) f1) (= ?v0 f16))  )
+:assumption (forall (?v0 S5) (iff (= (f50 ?v0) f1) (= ?v0 f20))  )
+:assumption (forall (?v0 S8) (iff (= (f51 ?v0) f1) (= ?v0 f24))  )
+:assumption (iff (= (f49 f16) f1) true)
+:assumption (iff (= (f50 f20) f1) true)
+:assumption (iff (= (f51 f24) f1) true)
+:assumption (forall (?v0 S11) (?v1 S2) (iff (= (f49 (f17 (f18 f19 ?v0) ?v1)) f1) false)  )
+:assumption (forall (?v0 S5) (?v1 S8) (iff (= (f51 (f25 (f26 f27 ?v0) ?v1)) f1) false)  )
+:assumption (forall (?v0 S15) (?v1 S5) (iff (= (f50 (f21 (f22 f23 ?v0) ?v1)) f1) false)  )
+:assumption (forall (?v0 S2) (iff (= (f3 (f4 f52 ?v0) f16) f1) (= (f49 ?v0) f1))  )
+:assumption (forall (?v0 S5) (iff (= (f6 (f7 f53 ?v0) f20) f1) (= (f50 ?v0) f1))  )
+:assumption (forall (?v0 S8) (iff (= (f9 (f10 f54 ?v0) f24) f1) (= (f51 ?v0) f1))  )
+:assumption (forall (?v0 S11) (?v1 S2) (= (f55 f56 (f17 (f18 f19 ?v0) ?v1)) (ite (= ?v1 f16) ?v0 (f55 f56 ?v1)))  )
+:assumption (forall (?v0 S15) (?v1 S5) (= (f57 f58 (f21 (f22 f23 ?v0) ?v1)) (ite (= ?v1 f20) ?v0 (f57 f58 ?v1)))  )
+:assumption (forall (?v0 S5) (?v1 S8) (= (f59 f60 (f25 (f26 f27 ?v0) ?v1)) (ite (= ?v1 f24) ?v0 (f59 f60 ?v1)))  )
+:assumption (forall (?v0 S2) (?v1 S11) (implies (not (= ?v0 f16)) (= (f55 f56 (f17 (f18 f19 ?v1) ?v0)) (f55 f56 ?v0)))  )
+:assumption (forall (?v0 S5) (?v1 S15) (implies (not (= ?v0 f20)) (= (f57 f58 (f21 (f22 f23 ?v1) ?v0)) (f57 f58 ?v0)))  )
+:assumption (forall (?v0 S8) (?v1 S5) (implies (not (= ?v0 f24)) (= (f59 f60 (f25 (f26 f27 ?v1) ?v0)) (f59 f60 ?v0)))  )
+:assumption (forall (?v0 S2) (?v1 S11) (implies (= ?v0 f16) (= (f55 f56 (f17 (f18 f19 ?v1) ?v0)) ?v1))  )
+:assumption (forall (?v0 S5) (?v1 S15) (implies (= ?v0 f20) (= (f57 f58 (f21 (f22 f23 ?v1) ?v0)) ?v1))  )
+:assumption (forall (?v0 S8) (?v1 S5) (implies (= ?v0 f24) (= (f59 f60 (f25 (f26 f27 ?v1) ?v0)) ?v1))  )
+:assumption (forall (?v0 S11) (iff (= (f61 (f62 f16) ?v0) f1) false)  )
+:assumption (forall (?v0 S15) (iff (= (f63 (f64 f20) ?v0) f1) false)  )
+:assumption (forall (?v0 S5) (iff (= (f6 (f65 f24) ?v0) f1) false)  )
+:assumption (forall (?v0 S35) (iff (= (f3 (f66 ?v0) f16) f1) false)  )
+:assumption (forall (?v0 S36) (iff (= (f6 (f67 ?v0) f20) f1) false)  )
+:assumption (forall (?v0 S6) (iff (= (f9 (f68 ?v0) f24) f1) false)  )
+:assumption (forall (?v0 S11) (?v1 S2) (= (f3 (f69 ?v0) (f17 (f18 f19 ?v0) ?v1)) f1) )
+:assumption (forall (?v0 S5) (?v1 S8) (= (f9 (f70 ?v0) (f25 (f26 f27 ?v0) ?v1)) f1) )
+:assumption (forall (?v0 S15) (?v1 S5) (= (f6 (f71 ?v0) (f21 (f22 f23 ?v0) ?v1)) f1) )
+:assumption (forall (?v0 S11) (?v1 S2) (?v2 S11) (iff (= (f61 (f62 (f17 (f18 f19 ?v0) ?v1)) ?v2) f1) (or (= ?v0 ?v2) (= (f61 (f62 ?v1) ?v2) f1)))  )
+:assumption (forall (?v0 S5) (?v1 S8) (?v2 S5) (iff (= (f6 (f65 (f25 (f26 f27 ?v0) ?v1)) ?v2) f1) (or (= ?v0 ?v2) (= (f6 (f65 ?v1) ?v2) f1)))  )
+:assumption (forall (?v0 S15) (?v1 S5) (?v2 S15) (iff (= (f63 (f64 (f21 (f22 f23 ?v0) ?v1)) ?v2) f1) (or (= ?v0 ?v2) (= (f63 (f64 ?v1) ?v2) f1)))  )
+:assumption (forall (?v0 S8) (?v1 S8) (iff (= (f9 (f10 f54 ?v0) ?v1) f1) (= ?v0 ?v1))  )
+:assumption (forall (?v0 S5) (?v1 S5) (iff (= (f6 (f7 f53 ?v0) ?v1) f1) (= ?v0 ?v1))  )
+:assumption (forall (?v0 S2) (?v1 S2) (iff (= (f3 (f4 f52 ?v0) ?v1) f1) (= ?v0 ?v1))  )
+:assumption (= (f17 f72 f16) f16)
+:assumption (= (f21 f73 f20) f20)
+:assumption (= (f25 f74 f24) f24)
+:assumption (forall (?v0 S11) (?v1 S2) (= (f17 f72 (f17 (f18 f19 ?v0) ?v1)) (ite (= ?v1 f16) f16 (f17 (f18 f19 ?v0) (f17 f72 ?v1)))) )
+:assumption (forall (?v0 S15) (?v1 S5) (= (f21 f73 (f21 (f22 f23 ?v0) ?v1)) (ite (= ?v1 f20) f20 (f21 (f22 f23 ?v0) (f21 f73 ?v1)))) )
+:assumption (forall (?v0 S5) (?v1 S8) (= (f25 f74 (f25 (f26 f27 ?v0) ?v1)) (ite (= ?v1 f24) f24 (f25 (f26 f27 ?v0) (f25 f74 ?v1)))) )
+:assumption (forall (?v0 S11) (?v1 S2) (?v2 S11) (implies (= (f3 (f69 ?v0) ?v1) f1) (= (f3 (f69 ?v0) (f17 (f18 f19 ?v2) ?v1)) f1)) )
+:assumption (forall (?v0 S5) (?v1 S8) (?v2 S5) (implies (= (f9 (f70 ?v0) ?v1) f1) (= (f9 (f70 ?v0) (f25 (f26 f27 ?v2) ?v1)) f1)) )
+:assumption (forall (?v0 S15) (?v1 S5) (?v2 S15) (implies (= (f6 (f71 ?v0) ?v1) f1) (= (f6 (f71 ?v0) (f21 (f22 f23 ?v2) ?v1)) f1)) )
+:assumption (forall (?v0 S2) (implies (not (= ?v0 f16)) (= (f17 (f28 f75 (f17 f72 ?v0)) (f17 (f18 f19 (f55 f56 ?v0)) f16)) ?v0)) )
+:assumption (forall (?v0 S5) (implies (not (= ?v0 f20)) (= (f21 (f30 f76 (f21 f73 ?v0)) (f21 (f22 f23 (f57 f58 ?v0)) f20)) ?v0)) )
+:assumption (forall (?v0 S8) (implies (not (= ?v0 f24)) (= (f25 (f32 f77 (f25 f74 ?v0)) (f25 (f26 f27 (f59 f60 ?v0)) f24)) ?v0)) )
+:assumption (forall (?v0 S2) (?v1 S11) (?v2 S2) (iff (= (f17 (f28 f75 ?v0) (f17 (f18 f19 ?v1) f16)) ?v2) (and (not (= ?v2 f16)) (and (= (f17 f72 ?v2) ?v0) (= (f55 f56 ?v2) ?v1)))) )
+:assumption (forall (?v0 S5) (?v1 S15) (?v2 S5) (iff (= (f21 (f30 f76 ?v0) (f21 (f22 f23 ?v1) f20)) ?v2) (and (not (= ?v2 f20)) (and (= (f21 f73 ?v2) ?v0) (= (f57 f58 ?v2) ?v1)))) )
+:assumption (forall (?v0 S8) (?v1 S5) (?v2 S8) (iff (= (f25 (f32 f77 ?v0) (f25 (f26 f27 ?v1) f24)) ?v2) (and (not (= ?v2 f24)) (and (= (f25 f74 ?v2) ?v0) (= (f59 f60 ?v2) ?v1)))) )
+:assumption (= f11 f54)
+:assumption (= f8 f53)
+:assumption (= f5 f52)
+:assumption (forall (?v0 S8) (?v1 S8) (iff (= (f9 (f10 f54 ?v0) ?v1) f1) (= ?v0 ?v1))  )
+:assumption (forall (?v0 S5) (?v1 S5) (iff (= (f6 (f7 f53 ?v0) ?v1) f1) (= ?v0 ?v1))  )
+:assumption (forall (?v0 S2) (?v1 S2) (iff (= (f3 (f4 f52 ?v0) ?v1) f1) (= ?v0 ?v1))  )
+:assumption (forall (?v0 S8) (iff (= (f9 (f10 f54 ?v0) ?v0) f1) true)  )
+:assumption (forall (?v0 S5) (iff (= (f6 (f7 f53 ?v0) ?v0) f1) true)  )
+:assumption (forall (?v0 S2) (iff (= (f3 (f4 f52 ?v0) ?v0) f1) true)  )
+:assumption (= f54 f11)
+:assumption (= f53 f8)
+:assumption (= f52 f5)
+:assumption (forall (?v0 S11) (?v1 S2) (iff (= (f3 (f69 ?v0) ?v1) f1) (or (exists (?v2 S11) (?v3 S2) (and (= ?v0 ?v2) (= ?v1 (f17 (f18 f19 ?v2) ?v3)))) (exists (?v2 S11) (?v3 S2) (?v4 S11) (and (= ?v0 ?v2) (and (= ?v1 (f17 (f18 f19 ?v4) ?v3)) (= (f3 (f69 ?v2) ?v3) f1)))))) )
+:assumption (forall (?v0 S5) (?v1 S8) (iff (= (f9 (f70 ?v0) ?v1) f1) (or (exists (?v2 S5) (?v3 S8) (and (= ?v0 ?v2) (= ?v1 (f25 (f26 f27 ?v2) ?v3)))) (exists (?v2 S5) (?v3 S8) (?v4 S5) (and (= ?v0 ?v2) (and (= ?v1 (f25 (f26 f27 ?v4) ?v3)) (= (f9 (f70 ?v2) ?v3) f1)))))) )
+:assumption (forall (?v0 S15) (?v1 S5) (iff (= (f6 (f71 ?v0) ?v1) f1) (or (exists (?v2 S15) (?v3 S5) (and (= ?v0 ?v2) (= ?v1 (f21 (f22 f23 ?v2) ?v3)))) (exists (?v2 S15) (?v3 S5) (?v4 S15) (and (= ?v0 ?v2) (and (= ?v1 (f21 (f22 f23 ?v4) ?v3)) (= (f6 (f71 ?v2) ?v3) f1)))))) )
+:assumption (forall (?v0 S2) (?v1 S11) (= (f55 f56 (f17 (f28 f75 ?v0) (f17 (f18 f19 ?v1) f16))) ?v1) )
+:assumption (forall (?v0 S5) (?v1 S15) (= (f57 f58 (f21 (f30 f76 ?v0) (f21 (f22 f23 ?v1) f20))) ?v1) )
+:assumption (forall (?v0 S8) (?v1 S5) (= (f59 f60 (f25 (f32 f77 ?v0) (f25 (f26 f27 ?v1) f24))) ?v1) )
+:assumption (forall (?v0 S8) (?v1 S8) (?v2 S8) (?v3 S8) (?v4 S8) (implies (= (f25 (f32 f77 ?v0) ?v1) ?v2) (implies (= ?v3 (f25 (f32 f77 ?v1) ?v4)) (= (f25 (f32 f77 ?v0) ?v3) (f25 (f32 f77 ?v2) ?v4)))) )
+:assumption (forall (?v0 S5) (?v1 S5) (?v2 S5) (?v3 S5) (?v4 S5) (implies (= (f21 (f30 f76 ?v0) ?v1) ?v2) (implies (= ?v3 (f21 (f30 f76 ?v1) ?v4)) (= (f21 (f30 f76 ?v0) ?v3) (f21 (f30 f76 ?v2) ?v4)))) )
+:assumption (forall (?v0 S2) (?v1 S2) (?v2 S2) (?v3 S2) (?v4 S2) (implies (= (f17 (f28 f75 ?v0) ?v1) ?v2) (implies (= ?v3 (f17 (f28 f75 ?v1) ?v4)) (= (f17 (f28 f75 ?v0) ?v3) (f17 (f28 f75 ?v2) ?v4)))) )
+:assumption (forall (?v0 S8) (?v1 S8) (?v2 S8) (iff (= (f25 (f32 f77 ?v0) ?v1) (f25 (f32 f77 ?v2) ?v1)) (= ?v0 ?v2)) )
+:assumption (forall (?v0 S5) (?v1 S5) (?v2 S5) (iff (= (f21 (f30 f76 ?v0) ?v1) (f21 (f30 f76 ?v2) ?v1)) (= ?v0 ?v2)) )
+:assumption (forall (?v0 S2) (?v1 S2) (?v2 S2) (iff (= (f17 (f28 f75 ?v0) ?v1) (f17 (f28 f75 ?v2) ?v1)) (= ?v0 ?v2)) )
+:assumption (forall (?v0 S8) (?v1 S8) (?v2 S8) (iff (= (f25 (f32 f77 ?v0) ?v1) (f25 (f32 f77 ?v0) ?v2)) (= ?v1 ?v2)) )
+:assumption (forall (?v0 S5) (?v1 S5) (?v2 S5) (iff (= (f21 (f30 f76 ?v0) ?v1) (f21 (f30 f76 ?v0) ?v2)) (= ?v1 ?v2)) )
+:assumption (forall (?v0 S2) (?v1 S2) (?v2 S2) (iff (= (f17 (f28 f75 ?v0) ?v1) (f17 (f28 f75 ?v0) ?v2)) (= ?v1 ?v2)) )
+:assumption (forall (?v0 S8) (?v1 S8) (?v2 S8) (?v3 S8) (iff (= (f25 (f32 f77 ?v0) ?v1) (f25 (f32 f77 ?v2) ?v3)) (exists (?v4 S8) (or (and (= ?v0 (f25 (f32 f77 ?v2) ?v4)) (= (f25 (f32 f77 ?v4) ?v1) ?v3)) (and (= (f25 (f32 f77 ?v0) ?v4) ?v2) (= ?v1 (f25 (f32 f77 ?v4) ?v3)))))) )
+:assumption (forall (?v0 S5) (?v1 S5) (?v2 S5) (?v3 S5) (iff (= (f21 (f30 f76 ?v0) ?v1) (f21 (f30 f76 ?v2) ?v3)) (exists (?v4 S5) (or (and (= ?v0 (f21 (f30 f76 ?v2) ?v4)) (= (f21 (f30 f76 ?v4) ?v1) ?v3)) (and (= (f21 (f30 f76 ?v0) ?v4) ?v2) (= ?v1 (f21 (f30 f76 ?v4) ?v3)))))) )
+:assumption (forall (?v0 S2) (?v1 S2) (?v2 S2) (?v3 S2) (iff (= (f17 (f28 f75 ?v0) ?v1) (f17 (f28 f75 ?v2) ?v3)) (exists (?v4 S2) (or (and (= ?v0 (f17 (f28 f75 ?v2) ?v4)) (= (f17 (f28 f75 ?v4) ?v1) ?v3)) (and (= (f17 (f28 f75 ?v0) ?v4) ?v2) (= ?v1 (f17 (f28 f75 ?v4) ?v3)))))) )
+:assumption (forall (?v0 S8) (?v1 S8) (?v2 S8) (= (f25 (f32 f77 (f25 (f32 f77 ?v0) ?v1)) ?v2) (f25 (f32 f77 ?v0) (f25 (f32 f77 ?v1) ?v2))) )
+:assumption (forall (?v0 S5) (?v1 S5) (?v2 S5) (= (f21 (f30 f76 (f21 (f30 f76 ?v0) ?v1)) ?v2) (f21 (f30 f76 ?v0) (f21 (f30 f76 ?v1) ?v2))) )
+:assumption (forall (?v0 S2) (?v1 S2) (?v2 S2) (= (f17 (f28 f75 (f17 (f28 f75 ?v0) ?v1)) ?v2) (f17 (f28 f75 ?v0) (f17 (f28 f75 ?v1) ?v2))) )
+:assumption (forall (?v0 S11) (?v1 S2) (?v2 S2) (= (f17 (f28 f75 (f17 (f18 f19 ?v0) ?v1)) ?v2) (f17 (f18 f19 ?v0) (f17 (f28 f75 ?v1) ?v2)))  )
+:assumption (forall (?v0 S5) (?v1 S8) (?v2 S8) (= (f25 (f32 f77 (f25 (f26 f27 ?v0) ?v1)) ?v2) (f25 (f26 f27 ?v0) (f25 (f32 f77 ?v1) ?v2)))  )
+:assumption (forall (?v0 S15) (?v1 S5) (?v2 S5) (= (f21 (f30 f76 (f21 (f22 f23 ?v0) ?v1)) ?v2) (f21 (f22 f23 ?v0) (f21 (f30 f76 ?v1) ?v2)))  )
+:assumption (forall (?v0 S11) (?v1 S2) (?v2 S2) (?v3 S2) (?v4 S2) (implies (= (f17 (f18 f19 ?v0) ?v1) ?v2) (implies (= ?v3 (f17 (f28 f75 ?v1) ?v4)) (= (f17 (f18 f19 ?v0) ?v3) (f17 (f28 f75 ?v2) ?v4)))) )
+:assumption (forall (?v0 S5) (?v1 S8) (?v2 S8) (?v3 S8) (?v4 S8) (implies (= (f25 (f26 f27 ?v0) ?v1) ?v2) (implies (= ?v3 (f25 (f32 f77 ?v1) ?v4)) (= (f25 (f26 f27 ?v0) ?v3) (f25 (f32 f77 ?v2) ?v4)))) )
+:assumption (forall (?v0 S15) (?v1 S5) (?v2 S5) (?v3 S5) (?v4 S5) (implies (= (f21 (f22 f23 ?v0) ?v1) ?v2) (implies (= ?v3 (f21 (f30 f76 ?v1) ?v4)) (= (f21 (f22 f23 ?v0) ?v3) (f21 (f30 f76 ?v2) ?v4)))) )
+:assumption (forall (?v0 S2) (= (f17 (f28 f75 f16) ?v0) ?v0)  )
+:assumption (forall (?v0 S5) (= (f21 (f30 f76 f20) ?v0) ?v0)  )
+:assumption (forall (?v0 S8) (= (f25 (f32 f77 f24) ?v0) ?v0)  )
+:assumption (forall (?v0 S2) (?v1 S2) (iff (= f16 (f17 (f28 f75 ?v0) ?v1)) (and (= ?v0 f16) (= ?v1 f16))) )
+:assumption (forall (?v0 S5) (?v1 S5) (iff (= f20 (f21 (f30 f76 ?v0) ?v1)) (and (= ?v0 f20) (= ?v1 f20))) )
+:assumption (forall (?v0 S8) (?v1 S8) (iff (= f24 (f25 (f32 f77 ?v0) ?v1)) (and (= ?v0 f24) (= ?v1 f24))) )
+:assumption (forall (?v0 S2) (= (f17 (f28 f75 ?v0) f16) ?v0)  )
+:assumption (forall (?v0 S5) (= (f21 (f30 f76 ?v0) f20) ?v0)  )
+:assumption (forall (?v0 S8) (= (f25 (f32 f77 ?v0) f24) ?v0)  )
+:assumption (forall (?v0 S2) (?v1 S2) (iff (= ?v0 (f17 (f28 f75 ?v0) ?v1)) (= ?v1 f16)) )
+:assumption (forall (?v0 S5) (?v1 S5) (iff (= ?v0 (f21 (f30 f76 ?v0) ?v1)) (= ?v1 f20)) )
+:assumption (forall (?v0 S8) (?v1 S8) (iff (= ?v0 (f25 (f32 f77 ?v0) ?v1)) (= ?v1 f24)) )
+:assumption (forall (?v0 S2) (?v1 S2) (iff (= ?v0 (f17 (f28 f75 ?v1) ?v0)) (= ?v1 f16)) )
+:assumption (forall (?v0 S5) (?v1 S5) (iff (= ?v0 (f21 (f30 f76 ?v1) ?v0)) (= ?v1 f20)) )
+:assumption (forall (?v0 S8) (?v1 S8) (iff (= ?v0 (f25 (f32 f77 ?v1) ?v0)) (= ?v1 f24)) )
+:assumption (forall (?v0 S26) (= (f41 f42 (f78 f79 ?v0)) ?v0))
+:assumption (forall (?v0 Int) (implies (<= 0 ?v0) (= (f78 f79 (f41 f42 ?v0)) ?v0)))
+:assumption (forall (?v0 Int) (implies (< ?v0 0) (= (f78 f79 (f41 f42 ?v0)) 0)))
+:formula true)
+; solver: z3
+; timeout: 5.0
+; random seed: 1
+; arguments:
+; DISPLAY_PROOF=true
+; PROOF_MODE=2
+; -rs:1
+; MODEL=true
+; -smt
diff --git a/test/regress/regress0/fmf/Hoare-z3.931718.smt b/test/regress/regress0/fmf/Hoare-z3.931718.smt
new file mode 100644
index 0000000..754e19e
--- /dev/null
+++ b/test/regress/regress0/fmf/Hoare-z3.931718.smt
@@ -0,0 +1,49 @@
+% COMMAND-LINE: --finite-model-find
+% EXPECT: sat
+(benchmark Isabelle
+:status sat
+:logic AUFLIA
+:extrasorts ( S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11)
+:extrafuns (
+  (f1 S1)
+  (f2 S1)
+  (f3 S3 S2 S1)
+  (f4 S4 S2 S3)
+  (f5 S4)
+  (f6 S5 S5 S1)
+  (f7 S5)
+  (f8 S6 S5 S5)
+  (f9 S7 S6)
+  (f10 S8 S4 S7)
+  (f11 S9 S10 S8)
+  (f12 S11 S4 S9)
+  (f13 S11)
+  (f14 S4)
+  (f15 S10)
+  (f16 S4)
+  (f17 S10 S4)
+  (f18 S5 S5 S1)
+)
+:assumption (not (= f1 f2))
+:assumption (forall (?v0 S2) (?v1 S2) (iff (= (f3 (f4 f5 ?v0) ?v1) f1) (= ?v0 ?v1)) )
+:assumption (not (= (f6 f7 (f8 (f9 (f10 (f11 (f12 f13 f14) f15) f16)) f7)) f1))
+:assumption (= (f6 f7 (f8 (f9 (f10 (f11 (f12 f13 f5) f15) (f17 f15))) f7)) f1)
+:assumption (= (f18 f7 (f8 (f9 (f10 (f11 (f12 f13 f14) f15) f16)) f7)) f1)
+:assumption (forall (?v0 S5) (= (f6 ?v0 f7) f1) )
+:assumption (forall (?v0 S4) (?v1 S10) (?v2 S4) (?v3 S4) (?v4 S10) (?v5 S4) (iff (= (f10 (f11 (f12 f13 ?v0) ?v1) ?v2) (f10 (f11 (f12 f13 ?v3) ?v4) ?v5)) (and (= ?v0 ?v3) (and (= ?v1 ?v4) (= ?v2 ?v5)))) )
+:assumption (forall (?v0 S5) (?v1 S5) (implies (= (f6 ?v0 ?v1) f1) (= (f18 ?v0 ?v1) f1)) )
+:assumption (forall (?v0 S5) (?v1 S5) (?v2 S5) (implies (= (f6 ?v0 ?v1) f1) (implies (= (f6 ?v2 ?v0) f1) (= (f6 ?v2 ?v1) f1))) )
+:assumption (forall (?v0 S5) (?v1 S7) (?v2 S5) (implies (= (f6 ?v0 (f8 (f9 ?v1) f7)) f1) (implies (= (f6 ?v0 ?v2) f1) (= (f6 ?v0 (f8 (f9 ?v1) ?v2)) f1))) )
+:assumption (forall (?v0 S5) (?v1 S7) (?v2 S5) (implies (= (f6 ?v0 (f8 (f9 ?v1) ?v2)) f1) (and (= (f6 ?v0 (f8 (f9 ?v1) f7)) f1) (= (f6 ?v0 ?v2) f1))) )
+:assumption (forall (?v0 S5) (?v1 S4) (?v2 S10) (?v3 S4) (?v4 S4) (implies (= (f6 ?v0 (f8 (f9 (f10 (f11 (f12 f13 ?v1) ?v2) ?v3)) f7)) f1) (implies (forall (?v5 S2) (?v6 S2) (implies (= (f3 (f4 ?v3 ?v5) ?v6) f1) (= (f3 (f4 ?v4 ?v5) ?v6) f1))) (= (f6 ?v0 (f8 (f9 (f10 (f11 (f12 f13 ?v1) ?v2) ?v4)) f7)) f1))) )
+:assumption (forall (?v0 S5) (?v1 S4) (?v2 S10) (?v3 S4) (?v4 S4) (implies (= (f6 ?v0 (f8 (f9 (f10 (f11 (f12 f13 ?v1) ?v2) ?v3)) f7)) f1) (implies (forall (?v5 S2) (?v6 S2) (implies (= (f3 (f4 ?v4 ?v5) ?v6) f1) (= (f3 (f4 ?v1 ?v5) ?v6) f1))) (= (f6 ?v0 (f8 (f9 (f10 (f11 (f12 f13 ?v4) ?v2) ?v3)) f7)) f1))) )
+:formula true)
+; solver: z3
+; timeout: 5.0
+; random seed: 1
+; arguments:
+; DISPLAY_PROOF=true
+; PROOF_MODE=2
+; -rs:1
+; MODEL=true
+; -smt
diff --git a/test/regress/regress0/fmf/LeftistHeap.scala-8-ncm.smt2 b/test/regress/regress0/fmf/LeftistHeap.scala-8-ncm.smt2
new file mode 100644
index 0000000..9ef5f14
--- /dev/null
+++ b/test/regress/regress0/fmf/LeftistHeap.scala-8-ncm.smt2
@@ -0,0 +1,33 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(declare-datatypes () ((array!896 (array!896!897 (size!898 (_ BitVec 32)) (content!899 (Array (_ BitVec 32) (_ BitVec 32)))))))
+(declare-datatypes () ((tuple2!900 (tuple2!900!901 (_1!902 array!896) (_2!903 (_ BitVec 32))))))
+(declare-fun error_value!904 () (_ BitVec 32))
+(declare-fun error_value!905 () (_ BitVec 32))
+(declare-fun error_value!906 () array!896)
+(declare-fun error_value!907 () (_ BitVec 32))
+(declare-fun error_value!908 () array!896)
+(declare-fun error_value!909 () (_ BitVec 32))
+(declare-fun while0!216 (array!896 (_ BitVec 32) array!896) tuple2!900)
+(declare-fun isPositive!206 (array!896 (_ BitVec 32)) Bool)
+(declare-fun rec!210 ((_ BitVec 32) array!896 (_ BitVec 32)) Bool)
+(declare-fun arrayconst!910 () (Array (_ BitVec 32) (_ BitVec 32)))
+(declare-sort I_while0!216 0)
+(declare-fun while0!216_arg_0_1 (I_while0!216) array!896)
+(declare-fun while0!216_arg_1_2 (I_while0!216) (_ BitVec 32))
+(declare-fun while0!216_arg_2_3 (I_while0!216) array!896)
+(declare-sort I_isPositive!206 0)
+(declare-fun isPositive!206_arg_0_4 (I_isPositive!206) array!896)
+(declare-fun isPositive!206_arg_1_5 (I_isPositive!206) (_ BitVec 32))
+(declare-sort I_rec!210 0)
+(declare-fun rec!210_arg_0_6 (I_rec!210) (_ BitVec 32))
+(declare-fun rec!210_arg_1_7 (I_rec!210) array!896)
+(declare-fun rec!210_arg_2_8 (I_rec!210) (_ BitVec 32))
+(assert (forall ((?i I_while0!216)) (and (= (while0!216 (while0!216_arg_0_1 ?i) (while0!216_arg_1_2 ?i) (while0!216_arg_2_3 ?i)) (ite (bvslt (while0!216_arg_1_2 ?i) (size!898 (while0!216_arg_2_3 ?i))) (while0!216 (ite (bvslt (ite (and (bvslt (while0!216_arg_1_2 ?i) (size!898 (while0!216_arg_2_3 ?i))) (not (bvslt (while0!216_arg_1_2 ?i) (_ bv0 32)))) (select (content!899 (while0!216_arg_2_3 ?i)) (while0!216_arg_1_2 ?i)) error_value!904) (_ bv0 32)) (ite (and (bvslt (while0!216_arg_1_2 ?i) [...]
+(assert (forall ((?i I_isPositive!206)) (and (= (isPositive!206 (isPositive!206_arg_0_4 ?i) (isPositive!206_arg_1_5 ?i)) (rec!210 (_ bv0 32) (isPositive!206_arg_0_4 ?i) (isPositive!206_arg_1_5 ?i))) (not (forall ((?z I_rec!210)) (not (and (= (rec!210_arg_0_6 ?z) (_ bv0 32)) (= (rec!210_arg_1_7 ?z) (isPositive!206_arg_0_4 ?i)) (= (rec!210_arg_2_8 ?z) (isPositive!206_arg_1_5 ?i)))) ))) ))
+(assert (forall ((?i I_rec!210)) (and (= (rec!210 (rec!210_arg_0_6 ?i) (rec!210_arg_1_7 ?i) (rec!210_arg_2_8 ?i)) (ite (not (bvslt (rec!210_arg_0_6 ?i) (rec!210_arg_2_8 ?i))) true (ite (bvslt (ite (and (bvslt (rec!210_arg_0_6 ?i) (size!898 (rec!210_arg_1_7 ?i))) (not (bvslt (rec!210_arg_0_6 ?i) (_ bv0 32)))) (select (content!899 (rec!210_arg_1_7 ?i)) (rec!210_arg_0_6 ?i)) error_value!909) (_ bv0 32)) false (rec!210 (bvadd (rec!210_arg_0_6 ?i) (_ bv1 32)) (rec!210_arg_1_7 ?i) (rec!210_arg [...]
+(assert (not (forall ((tab!211 array!896)) (or (or (bvslt (size!898 (_1!902 (while0!216 (array!896!897 (size!898 tab!211) arrayconst!910) (_ bv0 32) tab!211))) (_ bv0 32)) (forall ((?z I_while0!216)) (not (and (= (while0!216_arg_0_1 ?z) (array!896!897 (size!898 tab!211) arrayconst!910)) (= (while0!216_arg_1_2 ?z) (_ bv0 32)) (= (while0!216_arg_2_3 ?z) tab!211))) )) (or (isPositive!206 (_1!902 (while0!216 (array!896!897 (size!898 tab!211) arrayconst!910) (_ bv0 32) tab!211)) (size!898 tab [...]
+(check-sat)
+
diff --git a/test/regress/regress0/fmf/Makefile.am b/test/regress/regress0/fmf/Makefile.am
new file mode 100644
index 0000000..ec5255d
--- /dev/null
+++ b/test/regress/regress0/fmf/Makefile.am
@@ -0,0 +1,93 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	array_card.smt2 \
+	ALG008-1.smt2 \
+	german169.smt2 \
+	QEpres-uf.855035.smt \
+	agree467.smt2 \
+	Arrow_Order-smtlib.778341.smt \
+	german73.smt2 \
+	PUZ001+1.smt2 \
+	refcount24.cvc.smt2 \
+	fmf-bound-int.smt2 \
+	fc-simple.smt2 \
+	fc-unsat-tot-2.smt2 \
+	fc-unsat-pent.smt2 \
+	fc-pigeonhole19.smt2 \
+	Hoare-z3.931718.smt \
+	bug0909.smt2 \
+	lst-no-self-rev-exp.smt2 \
+	fib-core.smt2 \
+	fore19-exp2-core.smt2 \
+	with-ind-104-core.smt2 \
+	syn002-si-real-int.smt2 \
+	krs-sat.smt2 \
+	forall_unit_data2.smt2 \
+	sc_bad_model_1221.smt2 \
+ 	dt-proper-model.smt2 \
+	fd-false.smt2 \
+	tail_rec.smt2 \
+	jasmin-cdt-crash.smt2 \
+	loopy_coda.smt2 \
+	fmc_unsound_model.smt2 \
+	am-bad-model.cvc \
+	nun-0208-to.smt2 \
+	datatypes-ufinite.smt2 \
+	datatypes-ufinite-nested.smt2 \
+	agree466.smt2 \
+	LeftistHeap.scala-8-ncm.smt2 \
+	sc-crash-052316.smt2 \
+	bound-int-alt.smt2 \
+	bug723-irrelevant-funs.smt2 \
+	bounded_sets.smt2 \
+	fmf-strange-bounds.smt2 \
+	fmf-strange-bounds-2.smt2 \
+	fmf-bound-2dim.smt2 \
+	memory_model-R_cpp-dd.cvc \
+	bug764.smt2 \
+	ko-bound-set.cvc \
+	cons-sets-bounds.smt2 \
+	bug651.smt2 \
+	bug652.smt2 \
+	bug782.smt2
+
+EXTRA_DIST = $(TESTS)
+
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+# 
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/fmf/Makefile.in b/test/regress/regress0/fmf/Makefile.in
new file mode 100644
index 0000000..e3d3e13
--- /dev/null
+++ b/test/regress/regress0/fmf/Makefile.in
@@ -0,0 +1,1389 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/fmf
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	array_card.smt2 \
+	ALG008-1.smt2 \
+	german169.smt2 \
+	QEpres-uf.855035.smt \
+	agree467.smt2 \
+	Arrow_Order-smtlib.778341.smt \
+	german73.smt2 \
+	PUZ001+1.smt2 \
+	refcount24.cvc.smt2 \
+	fmf-bound-int.smt2 \
+	fc-simple.smt2 \
+	fc-unsat-tot-2.smt2 \
+	fc-unsat-pent.smt2 \
+	fc-pigeonhole19.smt2 \
+	Hoare-z3.931718.smt \
+	bug0909.smt2 \
+	lst-no-self-rev-exp.smt2 \
+	fib-core.smt2 \
+	fore19-exp2-core.smt2 \
+	with-ind-104-core.smt2 \
+	syn002-si-real-int.smt2 \
+	krs-sat.smt2 \
+	forall_unit_data2.smt2 \
+	sc_bad_model_1221.smt2 \
+ 	dt-proper-model.smt2 \
+	fd-false.smt2 \
+	tail_rec.smt2 \
+	jasmin-cdt-crash.smt2 \
+	loopy_coda.smt2 \
+	fmc_unsound_model.smt2 \
+	am-bad-model.cvc \
+	nun-0208-to.smt2 \
+	datatypes-ufinite.smt2 \
+	datatypes-ufinite-nested.smt2 \
+	agree466.smt2 \
+	LeftistHeap.scala-8-ncm.smt2 \
+	sc-crash-052316.smt2 \
+	bound-int-alt.smt2 \
+	bug723-irrelevant-funs.smt2 \
+	bounded_sets.smt2 \
+	fmf-strange-bounds.smt2 \
+	fmf-strange-bounds-2.smt2 \
+	fmf-bound-2dim.smt2 \
+	memory_model-R_cpp-dd.cvc \
+	bug764.smt2 \
+	ko-bound-set.cvc \
+	cons-sets-bounds.smt2 \
+	bug651.smt2 \
+	bug652.smt2 \
+	bug782.smt2
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/fmf/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/fmf/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+array_card.smt2.log: array_card.smt2
+	@p='array_card.smt2'; \
+	b='array_card.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ALG008-1.smt2.log: ALG008-1.smt2
+	@p='ALG008-1.smt2'; \
+	b='ALG008-1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+german169.smt2.log: german169.smt2
+	@p='german169.smt2'; \
+	b='german169.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+QEpres-uf.855035.smt.log: QEpres-uf.855035.smt
+	@p='QEpres-uf.855035.smt'; \
+	b='QEpres-uf.855035.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+agree467.smt2.log: agree467.smt2
+	@p='agree467.smt2'; \
+	b='agree467.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+Arrow_Order-smtlib.778341.smt.log: Arrow_Order-smtlib.778341.smt
+	@p='Arrow_Order-smtlib.778341.smt'; \
+	b='Arrow_Order-smtlib.778341.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+german73.smt2.log: german73.smt2
+	@p='german73.smt2'; \
+	b='german73.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+PUZ001+1.smt2.log: PUZ001+1.smt2
+	@p='PUZ001+1.smt2'; \
+	b='PUZ001+1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+refcount24.cvc.smt2.log: refcount24.cvc.smt2
+	@p='refcount24.cvc.smt2'; \
+	b='refcount24.cvc.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fmf-bound-int.smt2.log: fmf-bound-int.smt2
+	@p='fmf-bound-int.smt2'; \
+	b='fmf-bound-int.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fc-simple.smt2.log: fc-simple.smt2
+	@p='fc-simple.smt2'; \
+	b='fc-simple.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fc-unsat-tot-2.smt2.log: fc-unsat-tot-2.smt2
+	@p='fc-unsat-tot-2.smt2'; \
+	b='fc-unsat-tot-2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fc-unsat-pent.smt2.log: fc-unsat-pent.smt2
+	@p='fc-unsat-pent.smt2'; \
+	b='fc-unsat-pent.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fc-pigeonhole19.smt2.log: fc-pigeonhole19.smt2
+	@p='fc-pigeonhole19.smt2'; \
+	b='fc-pigeonhole19.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+Hoare-z3.931718.smt.log: Hoare-z3.931718.smt
+	@p='Hoare-z3.931718.smt'; \
+	b='Hoare-z3.931718.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug0909.smt2.log: bug0909.smt2
+	@p='bug0909.smt2'; \
+	b='bug0909.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+lst-no-self-rev-exp.smt2.log: lst-no-self-rev-exp.smt2
+	@p='lst-no-self-rev-exp.smt2'; \
+	b='lst-no-self-rev-exp.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fib-core.smt2.log: fib-core.smt2
+	@p='fib-core.smt2'; \
+	b='fib-core.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fore19-exp2-core.smt2.log: fore19-exp2-core.smt2
+	@p='fore19-exp2-core.smt2'; \
+	b='fore19-exp2-core.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+with-ind-104-core.smt2.log: with-ind-104-core.smt2
+	@p='with-ind-104-core.smt2'; \
+	b='with-ind-104-core.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+syn002-si-real-int.smt2.log: syn002-si-real-int.smt2
+	@p='syn002-si-real-int.smt2'; \
+	b='syn002-si-real-int.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+krs-sat.smt2.log: krs-sat.smt2
+	@p='krs-sat.smt2'; \
+	b='krs-sat.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+forall_unit_data2.smt2.log: forall_unit_data2.smt2
+	@p='forall_unit_data2.smt2'; \
+	b='forall_unit_data2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sc_bad_model_1221.smt2.log: sc_bad_model_1221.smt2
+	@p='sc_bad_model_1221.smt2'; \
+	b='sc_bad_model_1221.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dt-proper-model.smt2.log: dt-proper-model.smt2
+	@p='dt-proper-model.smt2'; \
+	b='dt-proper-model.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fd-false.smt2.log: fd-false.smt2
+	@p='fd-false.smt2'; \
+	b='fd-false.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tail_rec.smt2.log: tail_rec.smt2
+	@p='tail_rec.smt2'; \
+	b='tail_rec.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+jasmin-cdt-crash.smt2.log: jasmin-cdt-crash.smt2
+	@p='jasmin-cdt-crash.smt2'; \
+	b='jasmin-cdt-crash.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+loopy_coda.smt2.log: loopy_coda.smt2
+	@p='loopy_coda.smt2'; \
+	b='loopy_coda.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fmc_unsound_model.smt2.log: fmc_unsound_model.smt2
+	@p='fmc_unsound_model.smt2'; \
+	b='fmc_unsound_model.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+am-bad-model.cvc.log: am-bad-model.cvc
+	@p='am-bad-model.cvc'; \
+	b='am-bad-model.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+nun-0208-to.smt2.log: nun-0208-to.smt2
+	@p='nun-0208-to.smt2'; \
+	b='nun-0208-to.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+datatypes-ufinite.smt2.log: datatypes-ufinite.smt2
+	@p='datatypes-ufinite.smt2'; \
+	b='datatypes-ufinite.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+datatypes-ufinite-nested.smt2.log: datatypes-ufinite-nested.smt2
+	@p='datatypes-ufinite-nested.smt2'; \
+	b='datatypes-ufinite-nested.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+agree466.smt2.log: agree466.smt2
+	@p='agree466.smt2'; \
+	b='agree466.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+LeftistHeap.scala-8-ncm.smt2.log: LeftistHeap.scala-8-ncm.smt2
+	@p='LeftistHeap.scala-8-ncm.smt2'; \
+	b='LeftistHeap.scala-8-ncm.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sc-crash-052316.smt2.log: sc-crash-052316.smt2
+	@p='sc-crash-052316.smt2'; \
+	b='sc-crash-052316.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bound-int-alt.smt2.log: bound-int-alt.smt2
+	@p='bound-int-alt.smt2'; \
+	b='bound-int-alt.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug723-irrelevant-funs.smt2.log: bug723-irrelevant-funs.smt2
+	@p='bug723-irrelevant-funs.smt2'; \
+	b='bug723-irrelevant-funs.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bounded_sets.smt2.log: bounded_sets.smt2
+	@p='bounded_sets.smt2'; \
+	b='bounded_sets.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fmf-strange-bounds.smt2.log: fmf-strange-bounds.smt2
+	@p='fmf-strange-bounds.smt2'; \
+	b='fmf-strange-bounds.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fmf-strange-bounds-2.smt2.log: fmf-strange-bounds-2.smt2
+	@p='fmf-strange-bounds-2.smt2'; \
+	b='fmf-strange-bounds-2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fmf-bound-2dim.smt2.log: fmf-bound-2dim.smt2
+	@p='fmf-bound-2dim.smt2'; \
+	b='fmf-bound-2dim.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+memory_model-R_cpp-dd.cvc.log: memory_model-R_cpp-dd.cvc
+	@p='memory_model-R_cpp-dd.cvc'; \
+	b='memory_model-R_cpp-dd.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug764.smt2.log: bug764.smt2
+	@p='bug764.smt2'; \
+	b='bug764.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ko-bound-set.cvc.log: ko-bound-set.cvc
+	@p='ko-bound-set.cvc'; \
+	b='ko-bound-set.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cons-sets-bounds.smt2.log: cons-sets-bounds.smt2
+	@p='cons-sets-bounds.smt2'; \
+	b='cons-sets-bounds.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug651.smt2.log: bug651.smt2
+	@p='bug651.smt2'; \
+	b='bug651.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug652.smt2.log: bug652.smt2
+	@p='bug652.smt2'; \
+	b='bug652.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug782.smt2.log: bug782.smt2
+	@p='bug782.smt2'; \
+	b='bug782.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+# 
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/fmf/PUZ001+1.smt2 b/test/regress/regress0/fmf/PUZ001+1.smt2
new file mode 100644
index 0000000..f3db784
--- /dev/null
+++ b/test/regress/regress0/fmf/PUZ001+1.smt2
@@ -0,0 +1,118 @@
+; COMMAND-LINE: --finite-model-find --no-check-proofs --no-check-unsat-core
+; EXPECT: unsat
+;%------------------------------------------------------------------------------
+;% File     : PUZ001+1 : TPTP v5.4.0. Released v2.0.0.
+;% Domain   : Puzzles
+;% Problem  : Dreadbury Mansion
+;% Version  : Especial.
+;%            Theorem formulation : Reduced > Complete.
+;% English  : Someone who lives in Dreadbury Mansion killed Aunt Agatha.
+;%            Agatha, the butler, and Charles live in Dreadbury Mansion,
+;%            and are the only people who live therein. A killer always
+;%            hates his victim, and is never richer than his victim.
+;%            Charles hates no one that Aunt Agatha hates. Agatha hates
+;%            everyone except the butler. The butler hates everyone not
+;%            richer than Aunt Agatha. The butler hates everyone Aunt
+;%            Agatha hates. No one hates everyone. Agatha is not the
+;%            butler. Therefore : Agatha killed herself.
+
+;% Refs     : [Pel86] Pelletier (1986), Seventy-five Problems for Testing Au
+;%          : [Hah94] Haehnle (1994), Email to G. Sutcliffe
+;% Source   : [Hah94]
+;% Names    : Pelletier 55 [Pel86]
+
+;% Status   : Theorem
+;% Rating   : 0.07 v5.3.0, 0.19 v5.2.0, 0.00 v5.0.0, 0.08 v4.1.0, 0.13 v4.0.0, 0.12 v3.7.0, 0.14 v3.5.0, 0.00 v3.4.0, 0.08 v3.3.0, 0.11 v3.2.0, 0.22 v3.1.0, 0.17 v2.7.0, 0.00 v2.5.0, 0.33 v2.4.0, 0.33 v2.2.1, 0.00 v2.1.0
+;% Syntax   : Number of formulae    :   14 (   6 unit)
+;%            Number of atoms       :   24 (   5 equality)
+;%            Maximal formula depth :    5 (   3 average)
+;%            Number of connectives :   16 (   6   ~;   2   |;   1   &)
+;%                                         (   0 <=>;   7  =>;   0  <=;   0 <~>)
+;%                                         (   0  ~|;   0  ~&)
+;%            Number of predicates  :    5 (   0 propositional; 1-2 arity)
+;%            Number of functors    :    3 (   3 constant; 0-0 arity)
+;%            Number of variables   :   12 (   0 sgn;  10   !;   2   ?)
+;%            Maximal term depth    :    1 (   1 average)
+;% SPC      : FOF_THM_RFO_SEQ
+
+;% Comments : Modified by Geoff Sutcliffe.
+;%          : Also known as "Who killed Aunt Agatha"
+;%------------------------------------------------------------------------------
+;%----Problem axioms
+(set-logic UF)
+(set-info :status unsat)
+(declare-sort sort__smt2 0)
+; functions
+(declare-fun agatha__smt2_0 ( ) sort__smt2)
+(declare-fun butler__smt2_0 ( ) sort__smt2)
+(declare-fun charles__smt2_0 ( ) sort__smt2)
+; predicates
+(declare-fun lives__smt2_1 ( sort__smt2 ) Bool)
+(declare-fun killed__smt2_2 ( sort__smt2 sort__smt2 ) Bool)
+(declare-fun hates__smt2_2 ( sort__smt2 sort__smt2 ) Bool)
+(declare-fun richer__smt2_2 ( sort__smt2 sort__smt2 ) Bool)
+
+; pel55_1 axiom
+(assert (exists ((?X sort__smt2)) 
+    (and (lives__smt2_1 ?X)
+        (killed__smt2_2 ?X agatha__smt2_0))))
+
+; pel55_2_1 axiom
+(assert (lives__smt2_1 agatha__smt2_0))
+
+; pel55_2_2 axiom
+(assert (lives__smt2_1 butler__smt2_0))
+
+; pel55_2_3 axiom
+(assert (lives__smt2_1 charles__smt2_0))
+
+; pel55_3 axiom
+(assert (forall ((?X sort__smt2)) 
+    (=> (lives__smt2_1 ?X)
+        (or (= ?X agatha__smt2_0)
+            (= ?X butler__smt2_0)
+            (= ?X charles__smt2_0)))))
+
+; pel55_4 axiom
+(assert (forall ((?X sort__smt2) (?Y sort__smt2)) 
+    (=> (killed__smt2_2 ?X ?Y)
+        (hates__smt2_2 ?X ?Y))))
+
+; pel55_5 axiom
+(assert (forall ((?X sort__smt2) (?Y sort__smt2)) 
+    (=> (killed__smt2_2 ?X ?Y)
+        (not (richer__smt2_2 ?X ?Y)))))
+
+; pel55_6 axiom
+(assert (forall ((?X sort__smt2)) 
+    (=> (hates__smt2_2 agatha__smt2_0 ?X)
+        (not (hates__smt2_2 charles__smt2_0 ?X)))))
+
+; pel55_7 axiom
+(assert (forall ((?X sort__smt2)) 
+    (=> (not (= ?X butler__smt2_0))
+        (hates__smt2_2 agatha__smt2_0 ?X))))
+
+; pel55_8 axiom
+(assert (forall ((?X sort__smt2)) 
+    (=> (not (richer__smt2_2 ?X agatha__smt2_0))
+        (hates__smt2_2 butler__smt2_0 ?X))))
+
+; pel55_9 axiom
+(assert (forall ((?X sort__smt2)) 
+    (=> (hates__smt2_2 agatha__smt2_0 ?X)
+        (hates__smt2_2 butler__smt2_0 ?X))))
+
+; pel55_10 axiom
+(assert (forall ((?X sort__smt2)) 
+(exists ((?Y sort__smt2)) (not (hates__smt2_2 ?X ?Y)))))
+
+; pel55_11 axiom
+(assert (not (= agatha__smt2_0 butler__smt2_0)))
+
+;----This is the conjecture with negated conjecture
+; pel55 conjecture
+(assert (not (killed__smt2_2 agatha__smt2_0 agatha__smt2_0)))
+
+
+(check-sat)
diff --git a/test/regress/regress0/fmf/QEpres-uf.855035.smt b/test/regress/regress0/fmf/QEpres-uf.855035.smt
new file mode 100644
index 0000000..2945c8f
--- /dev/null
+++ b/test/regress/regress0/fmf/QEpres-uf.855035.smt
@@ -0,0 +1,84 @@
+% COMMAND-LINE: --finite-model-find --mbqi=gen-ev
+% EXPECT: sat
+(benchmark Isabelle
+:status sat
+:logic AUFLIA
+:extrasorts ( S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S13 S14 S15 S16 S17 S18)
+:extrafuns (
+  (f1 S1)
+  (f2 S1)
+  (f3 S2 S3 S4)
+  (f4 S2)
+  (f5 S3)
+  (f6 S4)
+  (f7 S3 S5 S1)
+  (f8 S6 S5)
+  (f9 S6)
+  (f10 S7 S6 S6)
+  (f11 S7)
+  (f12 S8 S4 S4)
+  (f13 S8)
+  (f14 S10 S3 S3)
+  (f15 S11 S9 S10)
+  (f16 S12 S4 S11)
+  (f17 S12)
+  (f18 S4 S13 S1)
+  (f19 S13)
+  (f20 S4 S1)
+  (f21 S2)
+  (f22 S10)
+  (f23 S3 S9 S1)
+  (f24 S14 S9 S9)
+  (f25 S15 S4 S14)
+  (f26 S15)
+  (f27 S13)
+  (f28 S8)
+  (f29 S16 S9 S3)
+  (f30 S17 S4 S16)
+  (f31 S18 S4 S17)
+  (f32 S18)
+  (f33 S18)
+  (f34 S4 S4 S1)
+)
+:assumption (not (= f1 f2))
+:assumption (not (not (= (f3 f4 f5) f6)))
+:assumption (forall (?v0 S3) (implies (= (f7 ?v0 (f8 f9)) f1) (not (= (f3 f4 ?v0) f6))) )
+:assumption (= (f7 f5 (f8 (f10 f11 f9))) f1)
+:assumption (forall (?v0 S4) (iff (= f6 ?v0) (= ?v0 f6)) )
+:assumption (= (f12 f13 f6) f6)
+:assumption (forall (?v0 S4) (iff (= f6 (f12 f13 ?v0)) (= ?v0 f6)) )
+:assumption (forall (?v0 S4) (iff (= (f12 f13 ?v0) f6) (= ?v0 f6)) )
+:assumption (forall (?v0 S4) (?v1 S9) (?v2 S3) (= (f3 f4 (f14 (f15 (f16 f17 ?v0) ?v1) ?v2)) (f3 f4 ?v2)) )
+:assumption (= (f18 f6 f19) f1)
+:assumption (= (f20 f6) f1)
+:assumption (forall (?v0 S4) (iff (= (f20 ?v0) f1) (= ?v0 f6))  )
+:assumption (forall (?v0 S3) (implies (= (f7 ?v0 (f8 f9)) f1) (not (= (f3 f21 ?v0) f6))) )
+:assumption (forall (?v0 S3) (implies (not (not (= (f3 f21 ?v0) f6))) (implies (not (= (f3 f4 ?v0) f6)) (not (= (f3 f4 (f14 f22 ?v0)) f6)))) )
+:assumption (forall (?v0 S4) (?v1 S4) (iff (= (f12 f13 ?v0) (f12 f13 ?v1)) (= ?v0 ?v1)) )
+:assumption (forall (?v0 S6) (?v1 S9) (implies (forall (?v2 S3) (implies (= (f7 ?v2 (f8 ?v0)) f1) (not (= (f3 f21 ?v2) f6)))) (iff (exists (?v2 S4) (forall (?v3 S3) (implies (= (f7 ?v3 (f8 (f10 f11 ?v0))) f1) (= (f23 ?v3 (f24 (f25 f26 ?v2) ?v1)) f1)))) (exists (?v2 S4) (forall (?v3 S3) (implies (= (f7 ?v3 (f8 ?v0)) f1) (= (f23 ?v3 (f24 (f25 f26 ?v2) ?v1)) f1)))))) )
+:assumption (forall (?v0 S4) (= (f18 (f12 f13 ?v0) f27) f1) )
+:assumption (= (f12 f28 f6) f6)
+:assumption (forall (?v0 S4) (?v1 S4) (?v2 S9) (= (f3 f4 (f29 (f30 (f31 f32 ?v0) ?v1) ?v2)) ?v0)  )
+:assumption (forall (?v0 S4) (?v1 S4) (?v2 S9) (= (f3 f4 (f29 (f30 (f31 f33 ?v0) ?v1) ?v2)) ?v0)  )
+:assumption (= (f18 f6 f27) f1)
+:assumption (forall (?v0 S3) (?v1 S4) (?v2 S9) (implies (not (not (= (f3 f21 ?v0) f6))) (iff (= (f23 ?v0 (f24 (f25 f26 ?v1) ?v2)) f1) (= (f23 (f14 f22 ?v0) ?v2) f1)))  )
+:assumption (forall (?v0 S4) (iff (= (f34 (f12 f13 ?v0) f6) f1) (= (f34 ?v0 f6) f1)) )
+:assumption (forall (?v0 S4) (iff (= (f34 f6 (f12 f13 ?v0)) f1) (= (f34 f6 ?v0) f1)) )
+:assumption (forall (?v0 S4) (?v1 S4) (?v2 S9) (?v3 S4) (?v4 S4) (?v5 S9) (not (= (f29 (f30 (f31 f33 ?v0) ?v1) ?v2) (f29 (f30 (f31 f32 ?v3) ?v4) ?v5))) )
+:assumption (forall (?v0 S4) (?v1 S4) (?v2 S9) (?v3 S4) (?v4 S4) (?v5 S9) (not (= (f29 (f30 (f31 f32 ?v0) ?v1) ?v2) (f29 (f30 (f31 f33 ?v3) ?v4) ?v5))) )
+:assumption (forall (?v0 S4) (= (f34 ?v0 ?v0) f1) )
+:assumption (forall (?v0 S4) (?v1 S4) (or (= (f34 ?v0 ?v1) f1) (= (f34 ?v1 ?v0) f1)) )
+:assumption (forall (?v0 S4) (?v1 S4) (?v2 S9) (?v3 S4) (?v4 S4) (?v5 S9) (iff (= (f29 (f30 (f31 f33 ?v0) ?v1) ?v2) (f29 (f30 (f31 f33 ?v3) ?v4) ?v5)) (and (= ?v0 ?v3) (and (= ?v1 ?v4) (= ?v2 ?v5)))) )
+:assumption (forall (?v0 S4) (?v1 S4) (?v2 S9) (?v3 S4) (?v4 S4) (?v5 S9) (iff (= (f29 (f30 (f31 f32 ?v0) ?v1) ?v2) (f29 (f30 (f31 f32 ?v3) ?v4) ?v5)) (and (= ?v0 ?v3) (and (= ?v1 ?v4) (= ?v2 ?v5)))) )
+:assumption (forall (?v0 S4) (?v1 S4) (?v2 S4) (implies (= (f34 ?v0 ?v1) f1) (implies (= (f34 ?v1 ?v2) f1) (= (f34 ?v0 ?v2) f1))) )
+:assumption (forall (?v0 S4) (?v1 S4) (implies (= (f34 ?v0 ?v1) f1) (implies (= (f34 ?v1 ?v0) f1) (= ?v0 ?v1))) )
+:formula true)
+; solver: z3
+; timeout: 1.897
+; random seed: 1
+; arguments:
+; DISPLAY_PROOF=true
+; PROOF_MODE=2
+; -rs:1
+; MODEL=true
+; -smt
diff --git a/test/regress/regress0/fmf/agree466.smt2 b/test/regress/regress0/fmf/agree466.smt2
new file mode 100644
index 0000000..bfe4819
--- /dev/null
+++ b/test/regress/regress0/fmf/agree466.smt2
@@ -0,0 +1,474 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+; Preamble  --------------
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(declare-datatypes () ((UNIT (Unit))))
+(declare-datatypes () ((BOOL (Truth) (Falsity))))
+
+; Decls     --------------
+(declare-sort node$type 0)
+(declare-sort value$type 0)
+(define-sort Nodes$elem$type () node$type)
+(declare-sort Nodes$t$type 0)
+(declare-fun Nodes$empty () Nodes$t$type)
+(declare-fun Nodes$mem (Nodes$elem$type Nodes$t$type) BOOL)
+(declare-fun Nodes$add (Nodes$elem$type Nodes$t$type) Nodes$t$type)
+(declare-fun Nodes$remove (Nodes$elem$type Nodes$t$type) Nodes$t$type)
+(declare-fun Nodes$cardinality (Nodes$t$type) Int)
+(declare-fun Nodes$union (Nodes$t$type Nodes$t$type) Nodes$t$type)
+(declare-fun Nodes$disjoint (Nodes$t$type Nodes$t$type) BOOL)
+;Nodes$disjoint_empty :
+(assert (forall ((a Nodes$t$type)) (= (Nodes$disjoint a Nodes$empty) Truth)))
+;Nodes$disjoint_comm :
+(assert (forall ((a Nodes$t$type) (b Nodes$t$type)) (= (Nodes$disjoint a b) 
+                                                    (Nodes$disjoint b a))))
+;Nodes$mem_empty :
+(assert (forall ((e Nodes$elem$type)) (not (= (Nodes$mem e Nodes$empty) 
+                                           Truth))))
+;Nodes$mem_add :
+(assert (forall ((x Nodes$elem$type) (y Nodes$elem$type) (s Nodes$t$type)) 
+        (= (Nodes$mem x (Nodes$add y s)) (ite (or (= x y) (= (Nodes$mem x s) 
+                                                          Truth)) Truth 
+                                         Falsity))))
+;Nodes$mem_remove :
+(assert (forall ((x Nodes$elem$type) (y Nodes$elem$type) (s Nodes$t$type)) 
+        (= (Nodes$mem x (Nodes$remove y s)) (ite (and (not (= x y)) (= 
+                                                                    (Nodes$mem 
+                                                                    x s) 
+                                                                    Truth)) 
+                                            Truth Falsity))))
+;Nodes$mem_union1 :
+(assert (forall ((x Nodes$elem$type) (a Nodes$t$type)) (=> (= (Nodes$mem x a) 
+                                                           Truth) (forall 
+                                                                  ((b Nodes$t$type)) 
+                                                                  (= 
+                                                                  (Nodes$mem 
+                                                                  x (Nodes$union 
+                                                                    a b)) 
+                                                                  Truth)))))
+;Nodes$mem_union2 :
+(assert (forall ((a Nodes$t$type) (b Nodes$t$type)) (= (Nodes$union a b) 
+                                                    (Nodes$union b a))))
+;Nodes$mem_union3 :
+(assert (forall ((x Nodes$elem$type) (a Nodes$t$type) (b Nodes$t$type)) 
+        (=> (= (Nodes$mem x (Nodes$union a b)) Truth) (or (= (Nodes$mem x a) 
+                                                          Truth) (= (Nodes$mem 
+                                                                    x b) 
+                                                                 Truth)))))
+;Nodes$mem_union4 :
+(assert (forall ((a Nodes$t$type)) (= (Nodes$union a a) a)))
+;Nodes$mem_union5 :
+(assert (forall ((a Nodes$t$type)) (= (Nodes$union a Nodes$empty) a)))
+;Nodes$empty_union :
+(assert (forall ((a Nodes$t$type) (b Nodes$t$type)) (=> (= (Nodes$union a b) 
+                                                        Nodes$empty) 
+                                                    (= a Nodes$empty))))
+;Nodes$card_empty :
+(assert (= (Nodes$cardinality Nodes$empty) 0))
+;Nodes$card_zero :
+(assert (forall ((s Nodes$t$type)) (=> (= (Nodes$cardinality s) 0) (= 
+                                                                   s 
+                                                                   Nodes$empty))))
+;Nodes$card_non_negative :
+(assert (forall ((s Nodes$t$type)) (>= (Nodes$cardinality s) 0)))
+;Nodes$card_add :
+(assert (forall ((x Nodes$elem$type) (s Nodes$t$type)) (= (Nodes$cardinality 
+                                                          (Nodes$add x s)) 
+                                                       (ite (= (Nodes$mem 
+                                                               x s) Truth) 
+                                                       (Nodes$cardinality 
+                                                       s) (+ (Nodes$cardinality 
+                                                             s) 1)))))
+;Nodes$card_remove :
+(assert (forall ((x Nodes$elem$type) (s Nodes$t$type)) (= (Nodes$cardinality 
+                                                          (Nodes$remove x s)) 
+                                                       (ite (= (Nodes$mem 
+                                                               x s) Truth) (- 
+                                                       (Nodes$cardinality 
+                                                       s) 1) (Nodes$cardinality 
+                                                             s)))))
+;Nodes$card_union :
+(assert (forall ((a Nodes$t$type) (b Nodes$t$type)) (=> (= (Nodes$disjoint 
+                                                           a b) Truth) 
+                                                    (= (Nodes$cardinality 
+                                                       (Nodes$union a b)) (+ 
+                                                    (Nodes$cardinality 
+                                                    a) (Nodes$cardinality b))))))
+(declare-fun Nodes$eq (Nodes$t$type Nodes$t$type) BOOL)
+;Nodes$eq_is_equality :
+(assert (forall ((a Nodes$t$type) (b Nodes$t$type)) (= (Nodes$eq a b) 
+                                                    (ite (= a b) Truth 
+                                                    Falsity))))
+;Nodes$equal1 :
+(assert (forall ((a Nodes$t$type) (b Nodes$t$type)) (=> (forall ((x Nodes$elem$type)) 
+                                                        (= (Nodes$mem x a) 
+                                                        (Nodes$mem x b))) 
+                                                    (= (Nodes$eq a b) 
+                                                    Truth))))
+(define-sort Values$elem$type () value$type)
+(declare-sort Values$t$type 0)
+(declare-fun Values$empty () Values$t$type)
+(declare-fun Values$mem (Values$elem$type Values$t$type) BOOL)
+(declare-fun Values$add (Values$elem$type Values$t$type) Values$t$type)
+(declare-fun Values$remove (Values$elem$type Values$t$type) Values$t$type)
+(declare-fun Values$cardinality (Values$t$type) Int)
+(declare-fun Values$union (Values$t$type Values$t$type) Values$t$type)
+(declare-fun Values$disjoint (Values$t$type Values$t$type) BOOL)
+;Values$disjoint_empty :
+(assert (forall ((a Values$t$type)) (= (Values$disjoint a Values$empty) 
+                                    Truth)))
+;Values$disjoint_comm :
+(assert (forall ((a Values$t$type) (b Values$t$type)) (= (Values$disjoint 
+                                                         a b) (Values$disjoint 
+                                                              b a))))
+;Values$mem_empty :
+(assert (forall ((e Values$elem$type)) (not (= (Values$mem e Values$empty) 
+                                            Truth))))
+;Values$mem_add :
+(assert (forall ((x Values$elem$type) (y Values$elem$type) (s Values$t$type)) 
+        (= (Values$mem x (Values$add y s)) (ite (or (= x y) (= (Values$mem 
+                                                               x s) Truth)) 
+                                           Truth Falsity))))
+;Values$mem_remove :
+(assert (forall ((x Values$elem$type) (y Values$elem$type) (s Values$t$type)) 
+        (= (Values$mem x (Values$remove y s)) (ite (and (not (= x y)) 
+                                                   (= (Values$mem x s) 
+                                                   Truth)) Truth Falsity))))
+;Values$mem_union1 :
+(assert (forall ((x Values$elem$type) (a Values$t$type)) (=> (= (Values$mem 
+                                                                x a) 
+                                                             Truth) (forall 
+                                                                    (
+                                                                    (b Values$t$type)) 
+                                                                    (= 
+                                                                    (Values$mem 
+                                                                    x 
+                                                                    (Values$union 
+                                                                    a b)) 
+                                                                    Truth)))))
+;Values$mem_union2 :
+(assert (forall ((a Values$t$type) (b Values$t$type)) (= (Values$union a b) 
+                                                      (Values$union b a))))
+;Values$mem_union3 :
+(assert (forall ((x Values$elem$type) (a Values$t$type) (b Values$t$type)) 
+        (=> (= (Values$mem x (Values$union a b)) Truth) (or (= (Values$mem 
+                                                               x a) Truth) 
+                                                        (= (Values$mem x b) 
+                                                        Truth)))))
+;Values$mem_union4 :
+(assert (forall ((a Values$t$type)) (= (Values$union a a) a)))
+;Values$mem_union5 :
+(assert (forall ((a Values$t$type)) (= (Values$union a Values$empty) a)))
+;Values$empty_union :
+(assert (forall ((a Values$t$type) (b Values$t$type)) (=> (= (Values$union 
+                                                             a b) Values$empty) 
+                                                      (= a Values$empty))))
+;Values$card_empty :
+(assert (= (Values$cardinality Values$empty) 0))
+;Values$card_zero :
+(assert (forall ((s Values$t$type)) (=> (= (Values$cardinality s) 0) 
+                                    (= s Values$empty))))
+;Values$card_non_negative :
+(assert (forall ((s Values$t$type)) (>= (Values$cardinality s) 0)))
+;Values$card_add :
+(assert (forall ((x Values$elem$type) (s Values$t$type)) (= (Values$cardinality 
+                                                            (Values$add x s)) 
+                                                         (ite (= (Values$mem 
+                                                                 x s) 
+                                                              Truth) 
+                                                         (Values$cardinality 
+                                                         s) (+ (Values$cardinality 
+                                                               s) 1)))))
+;Values$card_remove :
+(assert (forall ((x Values$elem$type) (s Values$t$type)) (= (Values$cardinality 
+                                                            (Values$remove 
+                                                            x s)) (ite 
+                                                                  (= 
+                                                                  (Values$mem 
+                                                                  x s) 
+                                                                  Truth) (- 
+                                                                  (Values$cardinality 
+                                                                  s) 
+                                                                  1) 
+                                                                  (Values$cardinality 
+                                                                  s)))))
+;Values$card_union :
+(assert (forall ((a Values$t$type) (b Values$t$type)) (=> (= (Values$disjoint 
+                                                             a b) Truth) 
+                                                      (= (Values$cardinality 
+                                                         (Values$union a b)) (+ 
+                                                      (Values$cardinality 
+                                                      a) (Values$cardinality 
+                                                         b))))))
+(declare-fun Values$eq (Values$t$type Values$t$type) BOOL)
+;Values$eq_is_equality :
+(assert (forall ((a Values$t$type) (b Values$t$type)) (= (Values$eq a b) 
+                                                      (ite (= a b) Truth 
+                                                      Falsity))))
+;Values$equal1 :
+(assert (forall ((a Values$t$type) (b Values$t$type)) (=> (forall ((x Values$elem$type)) 
+                                                          (= (Values$mem x a) 
+                                                          (Values$mem 
+                                                          x b))) (= (Values$eq 
+                                                                    a b) 
+                                                                 Truth))))
+(define-sort node_set$type () (Array node$type BOOL))
+(declare-fun mk_array_1 () (Array node$type BOOL))
+;mk_array_1_def :
+(assert (forall ((mk_array_1_index node$type)) (= (select mk_array_1 
+                                                  mk_array_1_index) Falsity)))
+(define-fun empty_node_set () node_set$type mk_array_1)
+(define-sort node_pair_set$type () (Array node$type (Array node$type BOOL)))
+(declare-fun mk_array_2 () (Array node$type BOOL))
+;mk_array_2_def :
+(assert (forall ((mk_array_2_index node$type)) (= (select mk_array_2 
+                                                  mk_array_2_index) Falsity)))
+(declare-fun mk_array_3 () (Array node$type (Array node$type BOOL)))
+;mk_array_3_def :
+(assert (forall ((mk_array_3_index node$type)) (= (select mk_array_3 
+                                                  mk_array_3_index) mk_array_2)))
+(define-fun empty_node_pair_set () node_pair_set$type mk_array_3)
+(declare-fun mk_array_4 () (Array node$type BOOL))
+;mk_array_4_def :
+(assert (forall ((mk_array_4_index node$type)) (= (select mk_array_4 
+                                                  mk_array_4_index) Truth)))
+(declare-fun mk_array_5 () (Array node$type (Array node$type BOOL)))
+;mk_array_5_def :
+(assert (forall ((mk_array_5_index node$type)) (= (select mk_array_5 
+                                                  mk_array_5_index) mk_array_4)))
+(define-fun full_node_pair_set () node_pair_set$type mk_array_5)
+(declare-fun input () (Array node$type value$type))
+(declare-fun t () Int)
+;positive_bound :
+(assert (> t 0))
+(define-sort message$type () Values$t$type)
+(define-sort message_set$type () (Array node$type message$type))
+(define-sort state$type () Values$t$type)
+(define-sort state_set$type () (Array node$type state$type))
+(define-fun null_message () message$type Values$empty)
+(declare-fun mk_array_6 () (Array node$type message$type))
+;mk_array_6_def :
+(assert (forall ((mk_array_6_index node$type)) (= (select mk_array_6 
+                                                  mk_array_6_index) null_message)))
+(define-fun null_message_set () message_set$type mk_array_6)
+(define-fun null_state () state$type Values$empty)
+(declare-fun mk_array_7 () (Array node$type state$type))
+;mk_array_7_def :
+(assert (forall ((mk_array_7_index node$type)) (= (select mk_array_7 
+                                                  mk_array_7_index) null_state)))
+(define-fun null_state_set () state_set$type mk_array_7)
+(declare-fun choose (Values$t$type) value$type)
+;choosen_value :
+(assert (forall ((vals Values$t$type)) (or (= vals Values$empty) (= (Values$mem 
+                                                                    (choose 
+                                                                    vals) 
+                                                                    vals) 
+                                                                 Truth))))
+(define-sort failure_pattern$type () node_pair_set$type)
+(define-fun is_faulty ((p node$type) (deliver failure_pattern$type)) BOOL 
+(ite (exists ((q node$type)) (not (= (select (select deliver p) q) Truth))) 
+Truth Falsity))
+(define-fun is_silent ((p node$type) (deliver failure_pattern$type)) BOOL 
+(ite (forall ((q node$type)) (not (= (select (select deliver p) q) Truth))) 
+Truth Falsity))
+(declare-datatypes () ((phase_state$type (init_phase) (send_phase) (recv_phase) (comp_phase))))
+(declare-datatypes () ((clean_state$type (before) (active) (after))))
+
+; Var Decls --------------
+(declare-fun my_compute$result$1 () state$type)
+(declare-fun output$1 () (Array node$type value$type))
+(declare-fun comp_done () node_set$type)
+(declare-fun compute$can_decide$0$1 () BOOL)
+(declare-fun chosen () (Array node$type BOOL))
+(declare-fun recv_done () node_pair_set$type)
+(declare-fun output () (Array node$type value$type))
+(declare-fun phase () phase_state$type)
+(declare-fun global_state () state_set$type)
+(declare-fun my_decide$result$1 () value$type)
+(declare-fun round () Int)
+(declare-fun compute$n () node$type)
+(declare-fun send_done () node_pair_set$type)
+(declare-fun my_can_decide$result$1 () BOOL)
+(declare-fun chosen$1 () (Array node$type BOOL))
+(declare-fun comp_done$1 () node_set$type)
+(declare-fun global_state$1 () state_set$type)
+
+; Asserts   --------------
+(assert (not (=> (forall ((n node$type)) (=> 
+                                                                    (and 
+                                                                    (= 
+                                                                    (select 
+                                                                    chosen 
+                                                                    n) 
+                                                                    Truth) 
+                                                                    (= 
+                                                                    round (+ 
+                                                                    t 
+                                                                    1))) 
+                                                                    (and 
+                                                                    (forall 
+                                                                    (
+                                                                    (n node$type) (m node$type)) 
+                                                                    (= 
+                                                                    (select 
+                                                                    (select 
+                                                                    send_done 
+                                                                    n) 
+                                                                    m) 
+                                                                    Truth)) 
+                                                                    (forall 
+                                                                    (
+                                                                    (n node$type) (m node$type)) 
+                                                                    (= 
+                                                                    (select 
+                                                                    (select 
+                                                                    recv_done 
+                                                                    n) 
+                                                                    m) 
+                                                                    Truth))))) 
+                                        (=> (= phase comp_phase) (=> 
+                                                                 (not 
+                                                                 (= (select 
+                                                                    comp_done 
+                                                                    compute$n) 
+                                                                 Truth)) 
+                                                                 (=> 
+                                                                 (= my_compute$result$1 
+                                                                 (select 
+                                                                 global_state 
+                                                                 compute$n)) 
+                                                                 (=> 
+                                                                 (= global_state$1 
+                                                                 (store 
+                                                                 global_state 
+                                                                 compute$n 
+                                                                 my_compute$result$1)) 
+                                                                 (=> 
+                                                                 (= my_can_decide$result$1 
+                                                                 (ite 
+                                                                 (= round (+ 
+                                                                 t 1)) 
+                                                                 Truth 
+                                                                 Falsity)) 
+                                                                 (=> 
+                                                                 (= compute$can_decide$0$1 
+                                                                 my_can_decide$result$1) 
+                                                                 (= (ite 
+                                                                    (= 
+                                                                    compute$can_decide$0$1 
+                                                                    Truth) 
+                                                                    (ite 
+                                                                    (=> 
+                                                                    (= 
+                                                                    my_decide$result$1 
+                                                                    (choose 
+                                                                    (select 
+                                                                    global_state$1 
+                                                                    compute$n))) 
+                                                                    (=> 
+                                                                    (= 
+                                                                    output$1 
+                                                                    (store 
+                                                                    output 
+                                                                    compute$n 
+                                                                    my_decide$result$1)) 
+                                                                    (=> 
+                                                                    (= 
+                                                                    chosen$1 
+                                                                    (store 
+                                                                    chosen 
+                                                                    compute$n 
+                                                                    Truth)) 
+                                                                    (=> 
+                                                                    (= 
+                                                                    comp_done$1 
+                                                                    (store 
+                                                                    comp_done 
+                                                                    compute$n 
+                                                                    Truth)) 
+                                                                    (forall 
+                                                                    (
+                                                                    (n node$type)) 
+                                                                    (=> 
+                                                                    (and 
+                                                                    (= 
+                                                                    (select 
+                                                                    chosen$1 
+                                                                    n) 
+                                                                    Truth) 
+                                                                    (= 
+                                                                    round (+ 
+                                                                    t 
+                                                                    1))) 
+                                                                    (and 
+                                                                    (forall 
+                                                                    (
+                                                                    (n node$type) (m node$type)) 
+                                                                    (= 
+                                                                    (select 
+                                                                    (select 
+                                                                    send_done 
+                                                                    n) 
+                                                                    m) 
+                                                                    Truth)) 
+                                                                    (forall 
+                                                                    (
+                                                                    (n node$type) (m node$type)) 
+                                                                    (= 
+                                                                    (select 
+                                                                    (select 
+                                                                    recv_done 
+                                                                    n) 
+                                                                    m) 
+                                                                    Truth))))))))) 
+                                                                    Truth 
+                                                                    Falsity) 
+                                                                    (ite 
+                                                                    (=> 
+                                                                    (= 
+                                                                    comp_done$1 
+                                                                    (store 
+                                                                    comp_done 
+                                                                    compute$n 
+                                                                    Truth)) 
+                                                                    (forall 
+                                                                    (
+                                                                    (n node$type)) 
+                                                                    (=> 
+                                                                    (and 
+                                                                    (= 
+                                                                    (select 
+                                                                    chosen 
+                                                                    n) 
+                                                                    Truth) 
+                                                                    (= 
+                                                                    round (+ 
+                                                                    t 
+                                                                    1))) 
+                                                                    (and 
+                                                                    (forall 
+                                                                    (
+                                                                    (n node$type) (m node$type)) 
+                                                                    (= 
+                                                                    (select 
+                                                                    (select 
+                                                                    send_done 
+                                                                    n) 
+                                                                    m) 
+                                                                    Truth)) 
+                                                                    (forall 
+                                                                    (
+                                                                    (n node$type) (m node$type)) 
+                                                                    (= 
+                                                                    (select 
+                                                                    (select 
+                                                                    recv_done 
+                                                                    n) 
+                                                                    m) 
+                                                                    Truth)))))) 
+                                                                    Truth 
+                                                                    Falsity)) 
+                                                                 Truth))))))))))
+                           
+(check-sat)
diff --git a/test/regress/regress0/fmf/agree467.smt2 b/test/regress/regress0/fmf/agree467.smt2
new file mode 100644
index 0000000..1bfdb9f
--- /dev/null
+++ b/test/regress/regress0/fmf/agree467.smt2
@@ -0,0 +1,341 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: unsat
+; Preamble  --------------
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-datatypes () ((UNIT (Unit))))
+(declare-datatypes () ((BOOL (Truth) (Falsity))))
+
+; Decls     --------------
+(declare-sort node$type 0)
+(declare-sort value$type 0)
+(define-sort Nodes$elem$type () node$type)
+(declare-sort Nodes$t$type 0)
+(declare-fun Nodes$empty () Nodes$t$type)
+(declare-fun Nodes$mem (Nodes$elem$type Nodes$t$type) BOOL)
+(declare-fun Nodes$add (Nodes$elem$type Nodes$t$type) Nodes$t$type)
+(declare-fun Nodes$remove (Nodes$elem$type Nodes$t$type) Nodes$t$type)
+(declare-fun Nodes$cardinality (Nodes$t$type) Int)
+(declare-fun Nodes$union (Nodes$t$type Nodes$t$type) Nodes$t$type)
+(declare-fun Nodes$disjoint (Nodes$t$type Nodes$t$type) BOOL)
+;Nodes$disjoint_empty :
+(assert (forall ((a Nodes$t$type)) (= (Nodes$disjoint a Nodes$empty) Truth)))
+;Nodes$disjoint_comm :
+(assert (forall ((a Nodes$t$type) (b Nodes$t$type)) (= (Nodes$disjoint a b) 
+                                                    (Nodes$disjoint b a))))
+;Nodes$mem_empty :
+(assert (forall ((e Nodes$elem$type)) (not (= (Nodes$mem e Nodes$empty) 
+                                           Truth))))
+;Nodes$mem_add :
+(assert (forall ((x Nodes$elem$type) (y Nodes$elem$type) (s Nodes$t$type)) 
+        (= (Nodes$mem x (Nodes$add y s)) (ite (or (= x y) (= (Nodes$mem x s) 
+                                                          Truth)) Truth 
+                                         Falsity))))
+;Nodes$mem_remove :
+(assert (forall ((x Nodes$elem$type) (y Nodes$elem$type) (s Nodes$t$type)) 
+        (= (Nodes$mem x (Nodes$remove y s)) (ite (and (not (= x y)) (= 
+                                                                    (Nodes$mem 
+                                                                    x s) 
+                                                                    Truth)) 
+                                            Truth Falsity))))
+;Nodes$mem_union1 :
+(assert (forall ((x Nodes$elem$type) (a Nodes$t$type)) (=> (= (Nodes$mem x a) 
+                                                           Truth) (forall 
+                                                                  ((b Nodes$t$type)) 
+                                                                  (= 
+                                                                  (Nodes$mem 
+                                                                  x (Nodes$union 
+                                                                    a b)) 
+                                                                  Truth)))))
+;Nodes$mem_union2 :
+(assert (forall ((a Nodes$t$type) (b Nodes$t$type)) (= (Nodes$union a b) 
+                                                    (Nodes$union b a))))
+;Nodes$mem_union3 :
+(assert (forall ((x Nodes$elem$type) (a Nodes$t$type) (b Nodes$t$type)) 
+        (=> (= (Nodes$mem x (Nodes$union a b)) Truth) (or (= (Nodes$mem x a) 
+                                                          Truth) (= (Nodes$mem 
+                                                                    x b) 
+                                                                 Truth)))))
+;Nodes$mem_union4 :
+(assert (forall ((a Nodes$t$type)) (= (Nodes$union a a) a)))
+;Nodes$mem_union5 :
+(assert (forall ((a Nodes$t$type)) (= (Nodes$union a Nodes$empty) a)))
+;Nodes$empty_union :
+(assert (forall ((a Nodes$t$type) (b Nodes$t$type)) (=> (= (Nodes$union a b) 
+                                                        Nodes$empty) 
+                                                    (= a Nodes$empty))))
+;Nodes$card_empty :
+(assert (= (Nodes$cardinality Nodes$empty) 0))
+;Nodes$card_zero :
+(assert (forall ((s Nodes$t$type)) (=> (= (Nodes$cardinality s) 0) (= 
+                                                                   s 
+                                                                   Nodes$empty))))
+;Nodes$card_non_negative :
+(assert (forall ((s Nodes$t$type)) (>= (Nodes$cardinality s) 0)))
+;Nodes$card_add :
+(assert (forall ((x Nodes$elem$type) (s Nodes$t$type)) (= (Nodes$cardinality 
+                                                          (Nodes$add x s)) 
+                                                       (ite (= (Nodes$mem 
+                                                               x s) Truth) 
+                                                       (Nodes$cardinality 
+                                                       s) (+ (Nodes$cardinality 
+                                                             s) 1)))))
+;Nodes$card_remove :
+(assert (forall ((x Nodes$elem$type) (s Nodes$t$type)) (= (Nodes$cardinality 
+                                                          (Nodes$remove x s)) 
+                                                       (ite (= (Nodes$mem 
+                                                               x s) Truth) (- 
+                                                       (Nodes$cardinality 
+                                                       s) 1) (Nodes$cardinality 
+                                                             s)))))
+;Nodes$card_union :
+(assert (forall ((a Nodes$t$type) (b Nodes$t$type)) (=> (= (Nodes$disjoint 
+                                                           a b) Truth) 
+                                                    (= (Nodes$cardinality 
+                                                       (Nodes$union a b)) (+ 
+                                                    (Nodes$cardinality 
+                                                    a) (Nodes$cardinality b))))))
+(declare-fun Nodes$eq (Nodes$t$type Nodes$t$type) BOOL)
+;Nodes$eq_is_equality :
+(assert (forall ((a Nodes$t$type) (b Nodes$t$type)) (= (Nodes$eq a b) 
+                                                    (ite (= a b) Truth 
+                                                    Falsity))))
+;Nodes$equal1 :
+(assert (forall ((a Nodes$t$type) (b Nodes$t$type)) (=> (forall ((x Nodes$elem$type)) 
+                                                        (= (Nodes$mem x a) 
+                                                        (Nodes$mem x b))) 
+                                                    (= (Nodes$eq a b) 
+                                                    Truth))))
+(define-sort Values$elem$type () value$type)
+(declare-sort Values$t$type 0)
+(declare-fun Values$empty () Values$t$type)
+(declare-fun Values$mem (Values$elem$type Values$t$type) BOOL)
+(declare-fun Values$add (Values$elem$type Values$t$type) Values$t$type)
+(declare-fun Values$remove (Values$elem$type Values$t$type) Values$t$type)
+(declare-fun Values$cardinality (Values$t$type) Int)
+(declare-fun Values$union (Values$t$type Values$t$type) Values$t$type)
+(declare-fun Values$disjoint (Values$t$type Values$t$type) BOOL)
+;Values$disjoint_empty :
+(assert (forall ((a Values$t$type)) (= (Values$disjoint a Values$empty) 
+                                    Truth)))
+;Values$disjoint_comm :
+(assert (forall ((a Values$t$type) (b Values$t$type)) (= (Values$disjoint 
+                                                         a b) (Values$disjoint 
+                                                              b a))))
+;Values$mem_empty :
+(assert (forall ((e Values$elem$type)) (not (= (Values$mem e Values$empty) 
+                                            Truth))))
+;Values$mem_add :
+(assert (forall ((x Values$elem$type) (y Values$elem$type) (s Values$t$type)) 
+        (= (Values$mem x (Values$add y s)) (ite (or (= x y) (= (Values$mem 
+                                                               x s) Truth)) 
+                                           Truth Falsity))))
+;Values$mem_remove :
+(assert (forall ((x Values$elem$type) (y Values$elem$type) (s Values$t$type)) 
+        (= (Values$mem x (Values$remove y s)) (ite (and (not (= x y)) 
+                                                   (= (Values$mem x s) 
+                                                   Truth)) Truth Falsity))))
+;Values$mem_union1 :
+(assert (forall ((x Values$elem$type) (a Values$t$type)) (=> (= (Values$mem 
+                                                                x a) 
+                                                             Truth) (forall 
+                                                                    (
+                                                                    (b Values$t$type)) 
+                                                                    (= 
+                                                                    (Values$mem 
+                                                                    x 
+                                                                    (Values$union 
+                                                                    a b)) 
+                                                                    Truth)))))
+;Values$mem_union2 :
+(assert (forall ((a Values$t$type) (b Values$t$type)) (= (Values$union a b) 
+                                                      (Values$union b a))))
+;Values$mem_union3 :
+(assert (forall ((x Values$elem$type) (a Values$t$type) (b Values$t$type)) 
+        (=> (= (Values$mem x (Values$union a b)) Truth) (or (= (Values$mem 
+                                                               x a) Truth) 
+                                                        (= (Values$mem x b) 
+                                                        Truth)))))
+;Values$mem_union4 :
+(assert (forall ((a Values$t$type)) (= (Values$union a a) a)))
+;Values$mem_union5 :
+(assert (forall ((a Values$t$type)) (= (Values$union a Values$empty) a)))
+;Values$empty_union :
+(assert (forall ((a Values$t$type) (b Values$t$type)) (=> (= (Values$union 
+                                                             a b) Values$empty) 
+                                                      (= a Values$empty))))
+;Values$card_empty :
+(assert (= (Values$cardinality Values$empty) 0))
+;Values$card_zero :
+(assert (forall ((s Values$t$type)) (=> (= (Values$cardinality s) 0) 
+                                    (= s Values$empty))))
+;Values$card_non_negative :
+(assert (forall ((s Values$t$type)) (>= (Values$cardinality s) 0)))
+;Values$card_add :
+(assert (forall ((x Values$elem$type) (s Values$t$type)) (= (Values$cardinality 
+                                                            (Values$add x s)) 
+                                                         (ite (= (Values$mem 
+                                                                 x s) 
+                                                              Truth) 
+                                                         (Values$cardinality 
+                                                         s) (+ (Values$cardinality 
+                                                               s) 1)))))
+;Values$card_remove :
+(assert (forall ((x Values$elem$type) (s Values$t$type)) (= (Values$cardinality 
+                                                            (Values$remove 
+                                                            x s)) (ite 
+                                                                  (= 
+                                                                  (Values$mem 
+                                                                  x s) 
+                                                                  Truth) (- 
+                                                                  (Values$cardinality 
+                                                                  s) 
+                                                                  1) 
+                                                                  (Values$cardinality 
+                                                                  s)))))
+;Values$card_union :
+(assert (forall ((a Values$t$type) (b Values$t$type)) (=> (= (Values$disjoint 
+                                                             a b) Truth) 
+                                                      (= (Values$cardinality 
+                                                         (Values$union a b)) (+ 
+                                                      (Values$cardinality 
+                                                      a) (Values$cardinality 
+                                                         b))))))
+(declare-fun Values$eq (Values$t$type Values$t$type) BOOL)
+;Values$eq_is_equality :
+(assert (forall ((a Values$t$type) (b Values$t$type)) (= (Values$eq a b) 
+                                                      (ite (= a b) Truth 
+                                                      Falsity))))
+;Values$equal1 :
+(assert (forall ((a Values$t$type) (b Values$t$type)) (=> (forall ((x Values$elem$type)) 
+                                                          (= (Values$mem x a) 
+                                                          (Values$mem 
+                                                          x b))) (= (Values$eq 
+                                                                    a b) 
+                                                                 Truth))))
+(define-sort node_set$type () (Array node$type BOOL))
+(declare-fun mk_array_1 () (Array node$type BOOL))
+;mk_array_1_def :
+(assert (forall ((mk_array_1_index node$type)) (= (select mk_array_1 
+                                                  mk_array_1_index) Falsity)))
+(define-fun empty_node_set () node_set$type mk_array_1)
+(define-sort node_pair_set$type () (Array node$type (Array node$type BOOL)))
+(declare-fun mk_array_2 () (Array node$type BOOL))
+;mk_array_2_def :
+(assert (forall ((mk_array_2_index node$type)) (= (select mk_array_2 
+                                                  mk_array_2_index) Falsity)))
+(declare-fun mk_array_3 () (Array node$type (Array node$type BOOL)))
+;mk_array_3_def :
+(assert (forall ((mk_array_3_index node$type)) (= (select mk_array_3 
+                                                  mk_array_3_index) mk_array_2)))
+(define-fun empty_node_pair_set () node_pair_set$type mk_array_3)
+(declare-fun mk_array_4 () (Array node$type BOOL))
+;mk_array_4_def :
+(assert (forall ((mk_array_4_index node$type)) (= (select mk_array_4 
+                                                  mk_array_4_index) Truth)))
+(declare-fun mk_array_5 () (Array node$type (Array node$type BOOL)))
+;mk_array_5_def :
+(assert (forall ((mk_array_5_index node$type)) (= (select mk_array_5 
+                                                  mk_array_5_index) mk_array_4)))
+(define-fun full_node_pair_set () node_pair_set$type mk_array_5)
+(declare-fun input () (Array node$type value$type))
+(declare-fun t () Int)
+;positive_bound :
+(assert (> t 0))
+(define-sort message$type () Values$t$type)
+(define-sort message_set$type () (Array node$type message$type))
+(define-sort state$type () Values$t$type)
+(define-sort state_set$type () (Array node$type state$type))
+(define-fun null_message () message$type Values$empty)
+(declare-fun mk_array_6 () (Array node$type message$type))
+;mk_array_6_def :
+(assert (forall ((mk_array_6_index node$type)) (= (select mk_array_6 
+                                                  mk_array_6_index) null_message)))
+(define-fun null_message_set () message_set$type mk_array_6)
+(define-fun null_state () state$type Values$empty)
+(declare-fun mk_array_7 () (Array node$type state$type))
+;mk_array_7_def :
+(assert (forall ((mk_array_7_index node$type)) (= (select mk_array_7 
+                                                  mk_array_7_index) null_state)))
+(define-fun null_state_set () state_set$type mk_array_7)
+(declare-fun choose (Values$t$type) value$type)
+;choosen_value :
+(assert (forall ((vals Values$t$type)) (or (= vals Values$empty) (= (Values$mem 
+                                                                    (choose 
+                                                                    vals) 
+                                                                    vals) 
+                                                                 Truth))))
+(define-sort failure_pattern$type () node_pair_set$type)
+(define-fun is_faulty ((p node$type) (deliver failure_pattern$type)) BOOL 
+(ite (exists ((q node$type)) (not (= (select (select deliver p) q) Truth))) 
+Truth Falsity))
+(define-fun is_silent ((p node$type) (deliver failure_pattern$type)) BOOL 
+(ite (forall ((q node$type)) (not (= (select (select deliver p) q) Truth))) 
+Truth Falsity))
+(declare-datatypes () ((phase_state$type (init_phase) (send_phase) (recv_phase) (comp_phase))))
+(declare-datatypes () ((clean_state$type (before) (active) (after))))
+
+; Var Decls --------------
+(declare-fun init_done () node_set$type)
+(declare-fun crashed () Nodes$t$type)
+(declare-fun comp_done () node_set$type)
+(declare-fun chosen () (Array node$type BOOL))
+(declare-fun recv_done () node_pair_set$type)
+(declare-fun phase () phase_state$type)
+(declare-fun clean () clean_state$type)
+(declare-fun global_state () state_set$type)
+(declare-fun messages () (Array node$type message_set$type))
+(declare-fun deliver_message () failure_pattern$type)
+(declare-fun crashing () Nodes$t$type)
+(declare-fun round () Int)
+(declare-fun send_done () node_pair_set$type)
+
+; Asserts   --------------
+(declare-fun mk_array_8 () (Array node$type BOOL))
+;mk_array_8_def :
+(assert (forall ((mk_array_8_index node$type)) (= (select mk_array_8 
+                                                  mk_array_8_index) Falsity)))
+(declare-fun mk_array_9 () (Array node$type message_set$type))
+;mk_array_9_def :
+(assert (forall ((mk_array_9_index node$type)) (= (select mk_array_9 
+                                                  mk_array_9_index) null_message_set)))
+(assert (not (=> (and (and (and (and (and (and (and (and (and (and (and 
+                                                                   (and 
+                                                                   (= 
+                                                                   clean 
+                                                                   before) 
+                                                                   (= 
+                                                                   global_state 
+                                                                   null_state_set)) 
+                                                                   (= 
+                                                                   messages 
+                                                                   mk_array_9)) 
+                                                              (= deliver_message 
+                                                              full_node_pair_set)) 
+                                                         (= comp_done 
+                                                         empty_node_set)) 
+                                                    (= recv_done empty_node_pair_set)) 
+                                               (= send_done empty_node_pair_set)) 
+                                          (= init_done empty_node_set)) 
+                                     (= phase init_phase)) (= crashing 
+                                                           Nodes$empty)) 
+                           (= crashed Nodes$empty)) (= round 0)) (= chosen 
+                                                                 mk_array_8)) 
+             (forall ((n node$type)) (=> (and (= (select chosen n) Truth) 
+                                         (= round (+ t 1))) (and (forall 
+                                                                 ((n node$type) (m node$type)) 
+                                                                 (= (select 
+                                                                    (select 
+                                                                    send_done 
+                                                                    n) 
+                                                                    m) 
+                                                                 Truth)) 
+                                                            (forall (
+                                                                    (n node$type) (m node$type)) 
+                                                            (= (select 
+                                                               (select 
+                                                               recv_done 
+                                                               n) m) 
+                                                            Truth))))))))
+
+(check-sat)
diff --git a/test/regress/regress0/fmf/am-bad-model.cvc b/test/regress/regress0/fmf/am-bad-model.cvc
new file mode 100644
index 0000000..e30b5e0
--- /dev/null
+++ b/test/regress/regress0/fmf/am-bad-model.cvc
@@ -0,0 +1,22 @@
+% EXPECT: sat
+OPTION "produce-models";
+OPTION "finite-model-find";
+
+f     : (BITVECTOR(2),BITVECTOR(2)) ->ARRAY INT OF INT;
+f0    : BITVECTOR(2) -> ARRAY INT OF INT;
+
+td,td1,td2: ARRAY INT OF INT;
+ASSERT td1 = td WITH[0]:= 1;
+ASSERT td2 = td WITH[0]:= 2;
+ASSERT f(0bin01,0bin00)=td1;
+ASSERT f(0bin10,0bin00)=td2;
+%ASSERT FORALL(i:BITVECTOR(2)) : f0(i)=f(0bin00,i) ;
+%Artificial bypass of quantifier for f0 definition
+ASSERT f0(0bin00) = f(0bin00,0bin00);
+ASSERT f0(0bin01) = f(0bin00,0bin01);
+ASSERT f0(0bin10) = f(0bin00,0bin10);
+ASSERT f0(0bin11) = f(0bin00,0bin11);
+ASSERT FORALL(i:BITVECTOR(2)) : f0(i)=td2 ;
+
+CHECKSAT;
+
diff --git a/test/regress/regress0/fmf/array_card.smt2 b/test/regress/regress0/fmf/array_card.smt2
new file mode 100644
index 0000000..42293e2
--- /dev/null
+++ b/test/regress/regress0/fmf/array_card.smt2
@@ -0,0 +1,17 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+(set-logic AUFLIA)
+(set-option :produce-models true)
+(declare-sort U 0)
+(declare-fun f () (Array U U))
+(declare-fun a () U)
+(declare-fun b () U)
+(declare-fun c () U)
+
+(assert (distinct a b c))
+
+(assert (distinct (select f a) (select f b)))
+
+(assert (forall ((x U)) (or (= (select f x) c) (= (select f x) b))))
+
+(check-sat)
diff --git a/test/regress/regress0/fmf/bound-int-alt.smt2 b/test/regress/regress0/fmf/bound-int-alt.smt2
new file mode 100644
index 0000000..1464879
--- /dev/null
+++ b/test/regress/regress0/fmf/bound-int-alt.smt2
@@ -0,0 +1,18 @@
+; COMMAND-LINE: --fmf-bound-int
+; EXPECT: sat
+(set-logic UFLIA)
+(set-info :status sat)
+(declare-sort U 0)
+(declare-sort V 0)
+(declare-fun P (U Int V Int U Int) Bool)
+
+(assert (forall ((x U) (y Int) (z V) (w Int) (v U) (d Int)) (=> (and (<= 0 d 1) (<= 2 y 6) (<= 40 w (+ 37 y))) (P x y z w v d))))
+
+(declare-fun a () U)
+(declare-fun b () V)
+
+(assert (not (P a 2 b 40 a 0)))
+(assert (not (P a 6 b 39 a 0)))
+(assert (not (P a 6 b 44 a 0)))
+
+(check-sat)
diff --git a/test/regress/regress0/fmf/bounded_sets.smt2 b/test/regress/regress0/fmf/bounded_sets.smt2
new file mode 100644
index 0000000..b06c363
--- /dev/null
+++ b/test/regress/regress0/fmf/bounded_sets.smt2
@@ -0,0 +1,18 @@
+; COMMAND-LINE: --fmf-bound
+; EXPECT: sat
+(set-logic ALL)
+(set-info :status sat)
+
+(declare-fun S () (Set Int))
+(declare-fun P (Int) Bool)
+(declare-fun a () Int)
+(assert (member a S))
+(assert (forall ((y Int)) (=> (member y S) (P y))))
+
+
+(declare-fun T () (Set Int))
+(declare-fun b () Int)
+(assert (member b T))
+(assert (forall ((y Int)) (=> (member y T) (not (P y)))))
+
+(check-sat)
diff --git a/test/regress/regress0/fmf/bug0909.smt2 b/test/regress/regress0/fmf/bug0909.smt2
new file mode 100644
index 0000000..9577e8f
--- /dev/null
+++ b/test/regress/regress0/fmf/bug0909.smt2
@@ -0,0 +1,54 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: unsat
+; Preamble  --------------
+(set-option :produce-models true)
+(set-logic ALL_SUPPORTED)
+;(declare-datatypes () ((x2 (x1))))
+(declare-datatypes () ((x5 (x3) (x4))))
+(declare-sort x6 0)
+(declare-fun x7 (x6) x5)
+(declare-fun x8 () x6)
+(assert (not (= x3 (x7 x8))))
+(declare-fun x9 () x6)
+(assert (not (= x3 (x7 x9))))
+(declare-fun x11 () Int)
+(declare-sort x12 0)
+(declare-fun x13 () x12)
+(declare-datatypes () ((x17 (x14) (x15) (x16))))
+(declare-datatypes () ((x22 (x21 (x18 Int) (x19 Int) (x20 x5)))))
+(declare-datatypes () ((x29 (x28 (x23 x5) (x24 x5) (x25 Int) (x26 Int) (x27 Int)))))
+(declare-sort x30 0)
+(declare-sort x31 0)
+(declare-fun x32 () x31)
+(declare-datatypes () ((x36 (x35 (x33 Int) (x34 Int)))))
+(declare-fun x37 () x36)
+(declare-datatypes () ((x45 (x44 (x38 x5) (x39 x6) (x40 x6) (x41 x6) (x42 x36) (x43 x31)))))
+(declare-fun x47 (x12) x31)
+(declare-fun x46 (x31) x12)
+(declare-datatypes () ((x54 (x49 (x48 x22)) (x51 (x50 x29)) (d53 (s52 x12)))))
+(declare-fun x57 (x22) x29)
+(declare-fun x56 (x12) x22)
+(declare-fun x55 (x29) x22)
+(declare-fun x61 () (Array x6 x5))
+(declare-fun x66 () (Array x6 x17))
+(declare-fun x64 () (Array x6 x54))
+(declare-fun x67 () (Array x6 x54))
+(declare-fun x65 () (Array x6 x54))
+(declare-fun x62 () (Array x30 x45))
+(declare-fun x70 () (Array x30 x45))
+(declare-fun x68 () (Array x30 x45))
+(declare-fun x63 () x30)
+(declare-fun x59 (x22) x12)
+(declare-fun x60 (x29) x12)
+(declare-fun x58 (x12) x29)
+(declare-fun x71 () x6)
+(declare-fun x69 () x6)
+(assert 
+(not 
+  (=> (and 
+    (forall ((x73 x30)) (=> (= x3 (x38 (select x62 x73))) (and (= (select x66 (x40 (select x62 x73))) x15) (= x3 (x7 (x40 (select x62 x73)))) (= (select x61 (x40 (select x62 x73))) x3) (= (x23 (ite (is-x49 (select x67 (x40 (select x62 x73)))) (let ((x74 (x48 (select x67 (x40 (select x62 x73)))))) (x57 x74)) (ite (is-x51 (select x67 (x40 (select x62 x73)))) (let ((x75 (x50 (select x67 (x40 (select x62 x73)))))) x75) (let ((x76 (s52 (select x67 (x40 (select x62 x73)))))) (x58 x76))))) x3)))) 
+    (forall ((x72 x6)) (=> (and (= x16 (select x66 x72)) (= (x7 x72) x3) (= (select x61 x72) x3)) (= (ite (is-d53 (select x67 x72)) x3 x4) x3)))) 
+    
+    (= (ite (= (x38 (select x62 x63)) x3) (ite (and (=> (= (x40 (select x62 x63)) x69) (=> (= (x41 (select x62 x63)) x71) (=> (= x65 (store x67 x71 (d53 (x46 (x43 (select x62 x63)))))) (=> (= x70 (store x62 x63 (let ((x77 (select x62 x63))) (x44 (x38 x77) (x39 x77) (x40 x77) (x41 x77) (x42 x77) x32)))) (=> (= x68 (store x70 x63 (let ((x78 (select x70 x63))) (x44 x4 (x39 x78) (x40 x78) (x41 x78) (x42 x78) (x43 x78)))))
+    (=> (= (store x65 x69 (x51 (let ((x82 (ite (is-x49 (select x65 x69)) (let ((x79 (x48 (select x65 x69)))) (x57 x79)) (ite (is-x51 (select x65 x69)) (let ((x80 (x50 (select x65 x69)))) x80) (let ((x81 (s52 (select x65 x69)))) (x58 x81)))))) (x28 x4 x3 (x25 x82) (x26 x82) (+ (x27 (ite (is-x49 (select x65 x69)) (let ((x83 (x48 (select x65 x69)))) (x57 x83)) (ite (is-x51 (select x65 x69)) (let ((x84 (x50 (select x65 x69)))) x84) (let ((x85 (s52 (select x65 x69)))) (x58 x85))))) 1))))) x64 [...]
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/fmf/bug651.smt2 b/test/regress/regress0/fmf/bug651.smt2
new file mode 100644
index 0000000..9afc479
--- /dev/null
+++ b/test/regress/regress0/fmf/bug651.smt2
@@ -0,0 +1,43 @@
+; COMMAND-LINE: --fmf-fun --no-check-models
+; EXPECT: sat
+(set-logic UFDTSLIA)
+(set-info :smt-lib-version 2.5)
+(set-option :produce-models true)
+
+(declare-datatypes () (
+    (Conditional_Int (Conditional_Int$CAbsent_Int) (Conditional_Int$CPresent_Int (Conditional_Int$CPresent_Int$value Int)))
+    (Conditional_T_titleType (Conditional_T_titleType$CAbsent_T_titleType) (Conditional_T_titleType$CPresent_T_titleType (Conditional_T_titleType$CPresent_T_titleType$value T_titleType)))
+    (Conditional_boolean (Conditional_boolean$CAbsent_boolean) (Conditional_boolean$CPresent_boolean (Conditional_boolean$CPresent_boolean$value Bool)))
+    (Conditional_string (Conditional_string$CAbsent_string) (Conditional_string$CPresent_string (Conditional_string$CPresent_string$value String)))
+    (Double (Double$CINF) (Double$CNINF) (Double$CNaN) (Double$CValue (Double$CValue$value Int)))
+    (List_T_titleType (List_T_titleType$CNil_T_titleType) (List_T_titleType$Cstr_T_titleType (List_T_titleType$Cstr_T_titleType$head T_titleType) (List_T_titleType$Cstr_T_titleType$tail List_T_titleType)))
+    (List_boolean (List_boolean$CNil_boolean) (List_boolean$Cstr_boolean (List_boolean$Cstr_boolean$head Bool) (List_boolean$Cstr_boolean$tail List_boolean)))
+    (List_string (List_string$CNil_string) (List_string$Cstr_string (List_string$Cstr_string$head String) (List_string$Cstr_string$tail List_string)))
+    (T_titleType (T_titleType$C_T_titleType (T_titleType$C_T_titleType$base String)))
+) )
+
+(define-fun f1361$isValid_string((x String)) Bool true)
+(define-fun f5131$isValid_T_titleType((x T_titleType)) Bool (and (f1361$isValid_string (T_titleType$C_T_titleType$base x)) (<= (str.len (T_titleType$C_T_titleType$base x)) 80)))
+(define-funs-rec
+  (
+    (f5242$isValidElementsList_T_titleType((x List_T_titleType)) Bool)
+  )
+  (
+    (=> (is-List_T_titleType$Cstr_T_titleType x) (and (f5131$isValid_T_titleType (List_T_titleType$Cstr_T_titleType$head x)) (f5242$isValidElementsList_T_titleType (List_T_titleType$Cstr_T_titleType$tail x))))
+  )
+)
+(define-fun f1348$isValid_boolean((x Bool)) Bool true)
+(define-funs-rec
+  (
+    (f4169$isValidElementsList_boolean((x List_boolean)) Bool)
+  )
+  (
+    (=> (is-List_boolean$Cstr_boolean x) (and (f1348$isValid_boolean (List_boolean$Cstr_boolean$head x)) (f4169$isValidElementsList_boolean (List_boolean$Cstr_boolean$tail x))))
+  )
+)
+
+
+(declare-const title T_titleType)
+(check-sat)
+
+
diff --git a/test/regress/regress0/fmf/bug652.smt2 b/test/regress/regress0/fmf/bug652.smt2
new file mode 100644
index 0000000..13748ee
--- /dev/null
+++ b/test/regress/regress0/fmf/bug652.smt2
@@ -0,0 +1,22 @@
+; COMMAND-LINE: --fmf-fun --no-check-models
+; EXPECT: sat
+(set-logic UFDTSLIA)
+(set-info :smt-lib-version 2.5)
+(set-option :produce-models true)
+
+(declare-datatypes () (
+    (List_boolean (List_boolean$CNil_boolean) (List_boolean$Cstr_boolean (List_boolean$Cstr_boolean$head Bool) (List_boolean$Cstr_boolean$tail List_boolean)))
+) )
+
+(define-funs-rec
+  (
+    (f4208$lengthList_boolean((x List_boolean)) Int)
+  )
+  (
+    (ite (is-List_boolean$CNil_boolean x) 0 (+ 1 (f4208$lengthList_boolean (List_boolean$Cstr_boolean$tail x))))
+  )
+)
+
+
+(declare-const boolean Bool)
+(check-sat)
diff --git a/test/regress/regress0/fmf/bug723-irrelevant-funs.smt2 b/test/regress/regress0/fmf/bug723-irrelevant-funs.smt2
new file mode 100644
index 0000000..1a27bf1
--- /dev/null
+++ b/test/regress/regress0/fmf/bug723-irrelevant-funs.smt2
@@ -0,0 +1,52 @@
+; COMMAND-LINE: --fmf-fun-rlv --no-check-models
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(define-fun $$isTrue$$ ((b Bool)) Bool b)
+(define-fun $$isFalse$$ ((b Bool)) Bool (not b))
+(define-fun $$toString$$ ((b Bool)) String (ite b "true" "false") )
+(define-fun $$fromString$$ ((s String)) Bool (= s "true") )
+(define-fun $$inttostr$$ ((i Int)) String (ite (< i 0) (str.++ "-" (int.to.str (- i))) (int.to.str i)))
+(declare-fun $$takeWhile$$ (String String) String)
+(declare-fun $$takeWhileNot$$ (String String) String)
+(declare-fun $$dropWhile$$ (String String) String)
+(declare-fun $$dropWhileNot$$ (String String) String)
+(declare-datatypes () (
+    (AddressType (AddressType$C_AddressType (AddressType$C_AddressType$address String) (AddressType$C_AddressType$city String) (AddressType$C_AddressType$region String) (AddressType$C_AddressType$postalCode String) (AddressType$C_AddressType$country String)))
+    (Conditional_Int (Conditional_Int$CAbsent_Int) (Conditional_Int$CPresent_Int (Conditional_Int$CPresent_Int$value Int)))
+    (Conditional_dateTime (Conditional_dateTime$CAbsent_dateTime) (Conditional_dateTime$CPresent_dateTime (Conditional_dateTime$CPresent_dateTime$value Int)))
+    (Conditional_string (Conditional_string$CAbsent_string) (Conditional_string$CPresent_string (Conditional_string$CPresent_string$value String)))
+    (CustomerType (CustomerType$C_CustomerType (CustomerType$C_CustomerType$companyName String) (CustomerType$C_CustomerType$contactName String) (CustomerType$C_CustomerType$contactTitle String) (CustomerType$C_CustomerType$phone String) (CustomerType$C_CustomerType$fax Conditional_string) (CustomerType$C_CustomerType$fullAddress AddressType) (CustomerType$C_CustomerType$customerID Int)))
+    (List_CustomerType (List_CustomerType$CNil_CustomerType) (List_CustomerType$Cstr_CustomerType (List_CustomerType$Cstr_CustomerType$head CustomerType) (List_CustomerType$Cstr_CustomerType$tail List_CustomerType)))
+    (List_OrderType (List_OrderType$CNil_OrderType) (List_OrderType$Cstr_OrderType (List_OrderType$Cstr_OrderType$head OrderType) (List_OrderType$Cstr_OrderType$tail List_OrderType)))
+    (OrderType (OrderType$C_OrderType (OrderType$C_OrderType$customerID Int) (OrderType$C_OrderType$employeeID Int) (OrderType$C_OrderType$orderDate Int) (OrderType$C_OrderType$requiredDate Int) (OrderType$C_OrderType$shipInfo ShipInfoType)))
+    (RootType (RootType$C_RootType (RootType$C_RootType$customers List_CustomerType) (RootType$C_RootType$orders List_OrderType)))
+    (ShipInfoType (ShipInfoType$C_ShipInfoType (ShipInfoType$C_ShipInfoType$shipVia Int) (ShipInfoType$C_ShipInfoType$freight Int) (ShipInfoType$C_ShipInfoType$shipName String) (ShipInfoType$C_ShipInfoType$shipAddress String) (ShipInfoType$C_ShipInfoType$shipCity String) (ShipInfoType$C_ShipInfoType$shipRegion String) (ShipInfoType$C_ShipInfoType$shipPostalCode String) (ShipInfoType$C_ShipInfoType$shipCountry String) (ShipInfoType$C_ShipInfoType$shippedDate Conditional_dateTime)))
+) )
+
+(define-fun f2866$toXml((a$$2869 AddressType)) String (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ "<FullAddress>" "<Address>") (AddressType$C_AddressType$address a$$2869)) "</Address>") "<City>") (AddressType$C_AddressType$city a$$2869)) "</City>") "<Region>") (AddressType$C_AddressType$region a$$2869)) "</Region>") "<PostalCode>") (AddressType$C_AddressType$postalCode a$$2869)) "</PostalCode>") "<Country [...]
+(define-fun f2656$toXml((c$$2659 CustomerType)) String (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ "<Customer CustomerID=" ($$inttostr$$ (CustomerType$C_CustomerType$customerID c$$2659))) ">") "<CompanyName>") (CustomerType$C_CustomerType$companyName c$$2659)) "</CompanyName>") "<ContactName>") (CustomerType$C_CustomerType$contactName c$$2659)) "</ContactName>") "<ContactTitle>") (CustomerType$C_C [...]
+(define-funs-rec
+  (
+    (f2574$toXml((lc$$2577 List_CustomerType)) String)
+  )
+  (
+    (ite (is-List_CustomerType$CNil_CustomerType lc$$2577) "" (str.++ (f2656$toXml (List_CustomerType$Cstr_CustomerType$head lc$$2577)) (f2574$toXml (List_CustomerType$Cstr_CustomerType$tail lc$$2577))))
+  )
+)
+(define-fun f2942$toXml((s$$2945 ShipInfoType)) String (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ "<ShipInfo" (ite (is-Conditional_dateTime$CPresent_dateTime (ShipInfoType$C_ShipInfoType$shippedDate s$$2945)) (str.++ (str.++ " ShippedDate=" ($$inttostr$$ (Conditional_dateTime$CPresent_dateTime$value (ShipInfoType$C_ShipInfoTy [...]
+(define-fun f2776$toXml((o$$2779 OrderType)) String (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ "<Order>" "<CustomerID>") ($$inttostr$$ (OrderType$C_OrderType$customerID o$$2779))) "</CustomerID>") "<EmployeeID>") ($$inttostr$$ (OrderType$C_OrderType$employeeID o$$2779))) "</EmployeeID>") "<OrderDate>") ($$inttostr$$ (OrderType$C_OrderType$orderDate o$$2779))) "</OrderDate>") "<RequiredDate>") ($$inttostr$$ (OrderType$C_ [...]
+(define-funs-rec
+  (
+    (f2615$toXml((lo$$2618 List_OrderType)) String)
+  )
+  (
+    (ite (is-List_OrderType$CNil_OrderType lo$$2618) "" (str.++ (f2776$toXml (List_OrderType$Cstr_OrderType$head lo$$2618)) (f2615$toXml (List_OrderType$Cstr_OrderType$tail lo$$2618))))
+  )
+)
+(define-fun f2526$toXml((r$$2529 RootType)) String (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ (str.++ "<Root>" "<Customers>") (f2574$toXml (RootType$C_RootType$customers r$$2529))) "</Customers>") "<Orders>") (f2615$toXml (RootType$C_RootType$orders r$$2529))) "</Orders>") "</Root>"))
+
+(declare-fun $Report$3105$0$1$() String)
+(assert (= $Report$3105$0$1$ "<Root><Customers></Customers><Orders></Orders></Root>"))
+; should be fast since functions introduced by define-fun-rec do not appear in the ground assertion
+(check-sat)
+
diff --git a/test/regress/regress0/fmf/bug764.smt2 b/test/regress/regress0/fmf/bug764.smt2
new file mode 100644
index 0000000..d030c3e
--- /dev/null
+++ b/test/regress/regress0/fmf/bug764.smt2
@@ -0,0 +1,28 @@
+; COMMAND-LINE: --fmf-fun --no-check-models
+; EXPECT: sat
+(set-logic ALL)
+(set-info :status sat)
+
+(define-fun BoolToString ((b Bool)) String (ite b "true" "false") )
+
+(declare-datatypes () (
+    (Color (red) (white) (blue))
+) )
+
+(define-fun ColorToString ((c Color)) String (ite (is-red c) "red" (ite (is-white c) "white" "blue")) )
+
+(declare-datatypes () (
+    (CP (cp (b Bool) (c Color)))
+) )
+
+(define-fun-rec CPToString ((cp CP)) String (str.++ "cp(" (BoolToString (b cp)) "," (ColorToString (c cp)) ")"))
+
+(declare-fun CPFromString (String) CP)
+
+(assert (forall ((cp1 CP)) (= cp1 (CPFromString (CPToString cp1)))))
+
+(declare-fun cpx() CP)
+(assert (= cpx (CPFromString "cp(true,white)")))
+
+(check-sat)
+
diff --git a/test/regress/regress0/fmf/bug782.smt2 b/test/regress/regress0/fmf/bug782.smt2
new file mode 100644
index 0000000..603c783
--- /dev/null
+++ b/test/regress/regress0/fmf/bug782.smt2
@@ -0,0 +1,24 @@
+; COMMAND-LINE: --fmf-fun --no-check-models
+; EXPECT: sat
+(set-logic ALL)
+(set-info :status sat)
+(define-fun $$Bool.isTrue$$ ((b Bool)) Bool b)
+(define-fun $$Bool.isFalse$$ ((b Bool)) Bool (not b))
+
+(define-funs-rec
+  (
+    (f123454321$multipleArgsFunction((x$$645421 Bool) (y$$645422 Bool)) Bool)
+    (f12345678$myConst() Int)
+  )
+  (
+    (= x$$645421 y$$645422)
+    3
+  )
+)
+
+(declare-fun i1000$$1000() Bool)
+(declare-fun i1001$$1001() Bool)
+(declare-fun i1002$$1002() Int)
+(assert (f123454321$multipleArgsFunction i1000$$1000 i1001$$1001))
+(assert (= i1002$$1002 f12345678$myConst))
+(check-sat)
diff --git a/test/regress/regress0/fmf/cons-sets-bounds.smt2 b/test/regress/regress0/fmf/cons-sets-bounds.smt2
new file mode 100644
index 0000000..db9788a
--- /dev/null
+++ b/test/regress/regress0/fmf/cons-sets-bounds.smt2
@@ -0,0 +1,26 @@
+; COMMAND-LINE: --fmf-bound
+; EXPECT: sat
+(set-logic ALL)
+(declare-datatypes () ((list (cons (head Int) (tail list)) (nil))))
+
+(declare-fun P (Int) Bool)
+(declare-fun S () (Set list))
+
+; can use simple unification to infer bounds on x and y
+(assert (forall ((x Int) (y list)) (=> (member (cons x y) S) (P x))))
+
+(assert (member (cons 4 (cons 1 nil)) S))
+(assert (member (cons 2 nil) S))
+
+; should construct instantiation involving selectors for l 
+(declare-fun l () list)
+(assert (is-cons l))
+(assert (member l S))
+
+; should not contribute to instantiations
+(assert (member nil S))
+
+(assert (not (P 1)))
+(assert (not (P 0)))
+
+(check-sat)
diff --git a/test/regress/regress0/fmf/datatypes-ufinite-nested.smt2 b/test/regress/regress0/fmf/datatypes-ufinite-nested.smt2
new file mode 100644
index 0000000..3ffc36d
--- /dev/null
+++ b/test/regress/regress0/fmf/datatypes-ufinite-nested.smt2
@@ -0,0 +1,17 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(declare-sort U 0)
+(declare-fun a () U)
+(declare-fun b () U)
+(declare-fun c () U)
+(declare-fun d () U)
+(assert (distinct a b c))
+(declare-sort V 0)
+(declare-datatypes () ((ufin1 (cons1 (s11 U) (s13 ufin2))) (ufin2 (cons2 (s21 V) (s22 U)) (cons3))))
+(declare-fun P (ufin1 ufin2) Bool)
+(declare-fun Q (ufin1 ufin1) Bool)
+(assert (forall ((x ufin1) (y ufin2) (z ufin1)) (or (P x y) (Q x z))))
+(assert (not (P (cons1 a cons3) cons3)))
+(assert (not (Q (cons1 b cons3) (cons1 a cons3))))
+(check-sat)
diff --git a/test/regress/regress0/fmf/datatypes-ufinite.smt2 b/test/regress/regress0/fmf/datatypes-ufinite.smt2
new file mode 100644
index 0000000..3564bff
--- /dev/null
+++ b/test/regress/regress0/fmf/datatypes-ufinite.smt2
@@ -0,0 +1,17 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(declare-sort U 0)
+(declare-fun a () U)
+(declare-fun b () U)
+(declare-fun c () U)
+(declare-fun d () U)
+(assert (distinct a b c))
+(declare-sort V 0)
+(declare-datatypes () ((ufin1 (cons1 (s11 U) (s12 U))) (ufin2 (cons2 (s21 V) (s22 U)) (cons3))))
+(declare-fun P (ufin1 ufin2) Bool)
+(declare-fun Q (ufin1 ufin1) Bool)
+(assert (forall ((x ufin1) (y ufin2) (z ufin1)) (or (P x y) (Q x z))))
+(assert (not (P (cons1 a a) cons3)))
+(assert (not (Q (cons1 a d) (cons1 a b))))
+(check-sat)
diff --git a/test/regress/regress0/fmf/dt-proper-model.smt2 b/test/regress/regress0/fmf/dt-proper-model.smt2
new file mode 100644
index 0000000..60a0b63
--- /dev/null
+++ b/test/regress/regress0/fmf/dt-proper-model.smt2
@@ -0,0 +1,16 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(declare-sort U 0)
+(declare-datatypes () ((D (cons (x Int) (y U)))))
+(declare-fun d1 () D)
+(declare-fun d2 () D)
+(declare-fun d3 () D)
+(declare-fun d4 () D)
+(assert (distinct d1 d2 d3 d4))
+(assert (forall ((x U) (y U)) (= x y)))
+(declare-fun a () U)
+(declare-fun P (U) Bool)
+(assert (P a))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/fmf/fc-pigeonhole19.smt2 b/test/regress/regress0/fmf/fc-pigeonhole19.smt2
new file mode 100644
index 0000000..f145013
--- /dev/null
+++ b/test/regress/regress0/fmf/fc-pigeonhole19.smt2
@@ -0,0 +1,20 @@
+(set-logic UFC)
+(set-info :status unsat)
+
+(declare-sort P 0)
+(declare-sort H 0)
+
+(declare-fun p () P)
+(declare-fun h () H)
+
+; pigeonhole using native cardinality constraints
+(assert (fmf.card p 19))
+(assert (not (fmf.card p 18)))
+(assert (fmf.card h 18))
+(assert (not (fmf.card h 17)))
+
+; each pigeon has different holes
+(declare-fun f (P) H)
+(assert (forall ((p1 P) (p2 P)) (=> (not (= p1 p2)) (not (= (f p1) (f p2))))))
+
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/fmf/fc-simple.smt2 b/test/regress/regress0/fmf/fc-simple.smt2
new file mode 100644
index 0000000..d1fd230
--- /dev/null
+++ b/test/regress/regress0/fmf/fc-simple.smt2
@@ -0,0 +1,12 @@
+(set-logic QF_UFC)
+(set-info :status unsat)
+
+(declare-sort U 0)
+
+(declare-fun a () U)
+(declare-fun c () U)
+
+(assert (fmf.card c 2))
+(assert (not (fmf.card a 4)))
+
+(check-sat)
diff --git a/test/regress/regress0/fmf/fc-unsat-pent.smt2 b/test/regress/regress0/fmf/fc-unsat-pent.smt2
new file mode 100644
index 0000000..2d4000e
--- /dev/null
+++ b/test/regress/regress0/fmf/fc-unsat-pent.smt2
@@ -0,0 +1,20 @@
+(set-logic QF_UFC)
+(set-info :status unsat)
+
+(declare-sort U 0)
+
+(declare-fun a () U)
+(declare-fun b () U)
+(declare-fun c () U)
+(declare-fun d () U)
+(declare-fun e () U)
+
+(assert (not (= a b)))
+(assert (not (= b c)))
+(assert (not (= c d)))
+(assert (not (= d e)))
+(assert (not (= e a)))
+
+(assert (fmf.card c 2))
+
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/fmf/fc-unsat-tot-2.smt2 b/test/regress/regress0/fmf/fc-unsat-tot-2.smt2
new file mode 100644
index 0000000..0d438f7
--- /dev/null
+++ b/test/regress/regress0/fmf/fc-unsat-tot-2.smt2
@@ -0,0 +1,14 @@
+(set-logic UFC)
+(set-info :status unsat)
+
+(declare-sort U 0)
+
+(declare-fun a () U)
+(declare-fun b () U)
+(declare-fun c () U)
+
+(assert (not (fmf.card a 2)))
+
+(assert (forall ((x U)) (or (= x a) (= x b))))
+
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/fmf/fd-false.smt2 b/test/regress/regress0/fmf/fd-false.smt2
new file mode 100644
index 0000000..4e1ff64
--- /dev/null
+++ b/test/regress/regress0/fmf/fd-false.smt2
@@ -0,0 +1,6 @@
+; COMMAND-LINE: --fmf-fun --no-check-models
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(define-fun-rec f ((x Int)) Bool false)
+(assert (not (f 0)))
+(check-sat)
diff --git a/test/regress/regress0/fmf/fib-core.smt2 b/test/regress/regress0/fmf/fib-core.smt2
new file mode 100644
index 0000000..e00f19a
--- /dev/null
+++ b/test/regress/regress0/fmf/fib-core.smt2
@@ -0,0 +1,19 @@
+; COMMAND-LINE: --finite-model-find --fmf-inst-engine
+; EXPECT: unsat
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-sort I_fb 0)
+(declare-fun fb_arg_0_1 (I_fb) Int)
+(declare-fun fb (Int) Int)
+
+(assert (forall ((?j I_fb)) (= (fb (fb_arg_0_1 ?j)) (ite (not (>= (fb_arg_0_1 ?j) 2)) (fb_arg_0_1 ?j) (+ (fb (+ (- 1) (fb_arg_0_1 ?j))) (fb (+ (- 2) (fb_arg_0_1 ?j)))))) ) )
+
+(assert (forall ((?i I_fb)) (ite (not (>= (fb_arg_0_1 ?i) 2)) true (and (not (forall ((?z I_fb)) (not (= (fb_arg_0_1 ?i) (+ 1 (fb_arg_0_1 ?z)))) )) (not (forall ((?z I_fb)) (not (= (fb_arg_0_1 ?i) (+ 2 (fb_arg_0_1 ?z)))) )))) ) )
+
+(assert (forall ((?i I_fb)) (or (>= (fb_arg_0_1 ?i) 2) (and (not (>= (fb_arg_0_1 ?i) 2)) (not (forall ((?z I_fb)) (not (= (fb_arg_0_1 ?i) (+ 1 (fb_arg_0_1 ?z)))) )) (not (forall ((?z I_fb)) (not (= (fb_arg_0_1 ?i) (+ 2 (fb_arg_0_1 ?z)))) )))) ))
+
+
+(assert (not (= (fb 5) 5)) )
+(assert (not (forall ((?z I_fb)) (not (= (fb_arg_0_1 ?z) 5)) )))
+
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/fmf/fmc_unsound_model.smt2 b/test/regress/regress0/fmf/fmc_unsound_model.smt2
new file mode 100644
index 0000000..813f897
--- /dev/null
+++ b/test/regress/regress0/fmf/fmc_unsound_model.smt2
@@ -0,0 +1,27 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+; this problem produced a model where incorrectly card(a)=1 due to --mbqi=fmc
+(set-logic ALL_SUPPORTED)
+
+(declare-sort a 0)
+(declare-datatypes () ((tree (Leaf (lab a)))))
+
+(declare-sort alpha 0)
+(declare-fun alphabet (tree a) Bool)
+(declare-fun g1 (alpha) tree)
+(declare-fun g2 (alpha) a)
+
+(assert
+ (forall ((x alpha))
+    (=>
+     (= (lab (g1 x)) (g2 x))
+     (alphabet (g1 x) (g2 x)))))
+
+(declare-fun x () a)
+(declare-fun y () a)
+; (assert (= x y))
+(assert
+  (and
+   (exists ((b alpha)) (and (= (Leaf y) (g1 b)) (= x (g2 b))))
+   (not (alphabet (Leaf y) x))))
+(check-sat)
diff --git a/test/regress/regress0/fmf/fmf-bound-2dim.smt2 b/test/regress/regress0/fmf/fmf-bound-2dim.smt2
new file mode 100644
index 0000000..5f5c227
--- /dev/null
+++ b/test/regress/regress0/fmf/fmf-bound-2dim.smt2
@@ -0,0 +1,15 @@
+; COMMAND-LINE: --fmf-bound
+; EXPECT: sat
+(set-logic ALL)
+(set-info :status sat)
+(declare-fun P (Int Int) Bool)
+
+(declare-fun a () Int)
+(assert (> a 10))
+
+(assert (forall ((x Int) (y Int))
+(=> (and (<= a x) (<= x (+ a 5)) (<= 14 y) (<= y (+ 7 x)))
+(P x y))))
+(assert (not (P 15 4)))
+
+(check-sat)
diff --git a/test/regress/regress0/fmf/fmf-bound-int.smt2 b/test/regress/regress0/fmf/fmf-bound-int.smt2
new file mode 100644
index 0000000..fb3106b
--- /dev/null
+++ b/test/regress/regress0/fmf/fmf-bound-int.smt2
@@ -0,0 +1,7 @@
+; COMMAND-LINE: --finite-model-find --fmf-bound-int
+; EXPECT: sat
+(set-logic UFLIA)
+(declare-fun P (Int Int) Bool)
+(declare-fun Q (Int) Bool)
+(assert (forall ((x Int)) (=> (and (<= 0 x) (<= x (ite (P 0 0) 10 20))) (Q x))))
+(check-sat)
diff --git a/test/regress/regress0/fmf/fmf-strange-bounds-2.smt2 b/test/regress/regress0/fmf/fmf-strange-bounds-2.smt2
new file mode 100644
index 0000000..f1c53c4
--- /dev/null
+++ b/test/regress/regress0/fmf/fmf-strange-bounds-2.smt2
@@ -0,0 +1,24 @@
+; COMMAND-LINE: --fmf-bound
+; EXPECT: unsat
+(set-logic ALL)
+(set-info :status unsat)
+(declare-sort U 0)
+(declare-fun P (Int U) Bool)
+
+(declare-fun S (U) (Set Int))
+
+(declare-fun f (U) U)
+
+(assert (forall ((x Int) (z U))
+(=> (member x (S (f z)))
+(P x z))))
+
+; need model of U size 2 to satisfy these
+(declare-fun a () U)
+(assert (member 77 (S a)))
+(assert (not (P 77 a)))
+
+; unsat
+(assert (forall ((x U) (y U)) (= x y)))
+
+(check-sat)
diff --git a/test/regress/regress0/fmf/fmf-strange-bounds.smt2 b/test/regress/regress0/fmf/fmf-strange-bounds.smt2
new file mode 100644
index 0000000..7812c24
--- /dev/null
+++ b/test/regress/regress0/fmf/fmf-strange-bounds.smt2
@@ -0,0 +1,35 @@
+; COMMAND-LINE: --fmf-bound
+; EXPECT: sat
+(set-logic ALL)
+(set-info :status sat)
+(declare-sort U 0)
+(declare-fun P (Int Int U) Bool)
+
+(declare-fun S () (Set Int))
+
+(declare-fun f (Int) U)
+(declare-fun g (Int) U)
+
+(declare-fun h (U) Int)
+
+(assert (member 77 S))
+(assert (>= (h (f 77)) 3))
+(assert (>= (h (g 77)) 2))
+(assert (not (= (g 77) (f 77))))
+
+(assert (forall ((x Int) (y Int) (z U)) (=> 
+(or (= z (f x)) (= z (g x)))
+(=> (member x S)
+(=> (and (<= 0 y) (<= y (h z)))
+(P x y z))))))
+
+
+(declare-fun Q (U Int) Bool)
+(declare-const a U)
+(declare-const b U)
+(declare-const c U)
+(assert (distinct a b c))
+(assert (forall ((x U) (y Int)) (=> (and (<= 3 y) (<= y 10) (or (= x c) (= x (f y)))) (Q x y))))
+(assert (not (Q b 6)))
+
+(check-sat)
diff --git a/test/regress/regress0/fmf/forall_unit_data2.smt2 b/test/regress/regress0/fmf/forall_unit_data2.smt2
new file mode 100644
index 0000000..64847d6
--- /dev/null
+++ b/test/regress/regress0/fmf/forall_unit_data2.smt2
@@ -0,0 +1,8 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: unsat
+(set-logic ALL_SUPPORTED)
+(declare-sort a 0)
+(declare-datatypes () ((prod (Pair (gx a) (gy a)))))
+(declare-fun p () prod)
+(assert (forall ((x a) (y a)) (not (= p (Pair x y)))))
+(check-sat)
diff --git a/test/regress/regress0/fmf/fore19-exp2-core.smt2 b/test/regress/regress0/fmf/fore19-exp2-core.smt2
new file mode 100644
index 0000000..9a6e1e2
--- /dev/null
+++ b/test/regress/regress0/fmf/fore19-exp2-core.smt2
@@ -0,0 +1,70 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-datatypes () ((St (Block!2236 (body!2237 List!2293)) (For!2238 (init!2239 St) (expr!2240 Ex) (step!2241 St) (body!2242 St)) (IfTE (expr!2244 Ex) (then!2245 St) (elze!2246 St)) (Skip!2250) (While (expr!2252 Ex) (body St)))
+(Ex (Var!2291 (varID!2292 (_ BitVec 32))))
+(List!2293 (Cons!2294 (head!2295 St) (tail!2296 List!2293)) (Nil!2297))
+))
+(declare-fun error_value!2298 () Bool)
+(declare-fun error_value!2299 () List!2293)
+(declare-fun s () St)
+(declare-fun body!2242_uf_1 (St) St)
+(declare-fun step!2241_uf_2 (St) St)
+(declare-fun init!2239_uf_3 (St) St)
+(declare-fun elze!2246_uf_4 (St) St)
+(declare-fun then!2245_uf_5 (St) St)
+(declare-fun body!2237_uf_6 (St) List!2293)
+(declare-fun tail!2296_uf_7 (List!2293) List!2293)
+(declare-fun head!2295_uf_8 (List!2293) St)
+(declare-fun expr!2240_uf_9 (St) Ex)
+(declare-fun body_uf_10 (St) St)
+(declare-fun expr!2252_uf_11 (St) Ex)
+(declare-fun expr!2244_uf_12 (St) Ex)
+(declare-fun iwf (St) Bool)
+(declare-fun iwfl (List!2293) Bool)
+(declare-fun ewl (St) St)
+(declare-fun ewlList!211 (List!2293) List!2293)
+(declare-sort I_iwf 0)
+(declare-fun iwf_arg_0_13 (I_iwf) St)
+(declare-sort I_iwfl 0)
+(declare-fun iwfl_arg_0_14 (I_iwfl) List!2293)
+(declare-sort I_ewl 0)
+(declare-fun ewl_arg_0_15 (I_ewl) St)
+(declare-sort I_ewlList!211 0)
+(declare-fun ewlList!211_arg_0_16 (I_ewlList!211) List!2293)
+(declare-fun termITE_17 () St)
+(declare-fun termITE_18 () St)
+(declare-fun termITE_19 () St)
+(declare-fun termITE_20 () St)
+
+(assert
+(and
+(forall ((?i1 I_ewl)) (= (ewl (ewl_arg_0_15 ?i1)) 
+
+(ite (is-IfTE (ewl_arg_0_15 ?i1)) (IfTE (ite (is-IfTE (ewl_arg_0_15 ?i1)) (expr!2244 (ewl_arg_0_15 ?i1)) (expr!2244_uf_12 (ewl_arg_0_15 ?i1))) (ewl (ite (is-IfTE (ewl_arg_0_15 ?i1)) (then!2245 (ewl_arg_0_15 ?i1)) (then!2245_uf_5 (ewl_arg_0_15 ?i1)))) (ewl (ite (is-IfTE (ewl_arg_0_15 ?i1)) (elze!2246 (ewl_arg_0_15 ?i1)) (elze!2246_uf_4 (ewl_arg_0_15 ?i1))))) 
+
+(ite (is-While (ewl_arg_0_15 ?i1)) (For!2238 Skip!2250 (ite (is-While (ewl_arg_0_15 ?i1)) (expr!2252 (ewl_arg_0_15 ?i1)) (expr!2252_uf_11 (ewl_arg_0_15 ?i1))) Skip!2250 (ewl (ite (is-While (ewl_arg_0_15 ?i1)) (body (ewl_arg_0_15 ?i1)) (body_uf_10 (ewl_arg_0_15 ?i1))))) 
+
+(ite (is-For!2238 (ewl_arg_0_15 ?i1)) (For!2238 (ewl (ite (is-For!2238 (ewl_arg_0_15 ?i1)) (init!2239 (ewl_arg_0_15 ?i1)) (init!2239_uf_3 (ewl_arg_0_15 ?i1)))) (ite (is-For!2238 (ewl_arg_0_15 ?i1)) (expr!2240 (ewl_arg_0_15 ?i1)) (expr!2240_uf_9 (ewl_arg_0_15 ?i1))) (ewl (ite (is-For!2238 (ewl_arg_0_15 ?i1)) (step!2241 (ewl_arg_0_15 ?i1)) (step!2241_uf_2 (ewl_arg_0_15 ?i1)))) (ewl (ite (is-For!2238 (ewl_arg_0_15 ?i1)) (body!2242 (ewl_arg_0_15 ?i1)) (body!2242_uf_1 (ewl_arg_0_15 ?i1))))) 
+
+(ewl_arg_0_15 ?i1))))) )
+
+
+(forall ((?i2 I_ewl)) (ite (is-IfTE (ewl_arg_0_15 ?i2)) (and (not (forall ((?z I_ewl)) (not (= (ewl_arg_0_15 ?z) (ite (is-IfTE (ewl_arg_0_15 ?i2)) (then!2245 (ewl_arg_0_15 ?i2)) (then!2245_uf_5 (ewl_arg_0_15 ?i2))))) )) (not (forall ((?z I_ewl)) (not (= (ewl_arg_0_15 ?z) (ite (is-IfTE (ewl_arg_0_15 ?i2)) (elze!2246 (ewl_arg_0_15 ?i2)) (elze!2246_uf_4 (ewl_arg_0_15 ?i2))))) ))) (ite (is-While (ewl_arg_0_15 ?i2)) (not (forall ((?z I_ewl)) (not (= (ewl_arg_0_15 ?z) (ite (is-While (ewl_arg_0 [...]
+(forall ((?i3 I_iwf)) (= (iwf (iwf_arg_0_13 ?i3)) (ite (is-Block!2236 (iwf_arg_0_13 ?i3)) (iwfl (ite (is-Block!2236 (iwf_arg_0_13 ?i3)) (body!2237 (iwf_arg_0_13 ?i3)) (body!2237_uf_6 (iwf_arg_0_13 ?i3)))) (ite (is-IfTE (iwf_arg_0_13 ?i3)) (and (iwf (ite (is-IfTE (iwf_arg_0_13 ?i3)) (elze!2246 (iwf_arg_0_13 ?i3)) (elze!2246_uf_4 (iwf_arg_0_13 ?i3)))) (iwf (ite (is-IfTE (iwf_arg_0_13 ?i3)) (then!2245 (iwf_arg_0_13 ?i3)) (then!2245_uf_5 (iwf_arg_0_13 ?i3))))) (ite (is-While (iwf_arg_0_13 ?i [...]
+(forall ((?i4 I_iwf)) (ite (is-Block!2236 (iwf_arg_0_13 ?i4)) (not (forall ((?z I_iwfl)) (not (= (iwfl_arg_0_14 ?z) (ite (is-Block!2236 (iwf_arg_0_13 ?i4)) (body!2237 (iwf_arg_0_13 ?i4)) (body!2237_uf_6 (iwf_arg_0_13 ?i4))))) )) (ite (is-IfTE (iwf_arg_0_13 ?i4)) (and (not (forall ((?z I_iwf)) (not (= (iwf_arg_0_13 ?z) (ite (is-IfTE (iwf_arg_0_13 ?i4)) (elze!2246 (iwf_arg_0_13 ?i4)) (elze!2246_uf_4 (iwf_arg_0_13 ?i4))))) )) (not (forall ((?z I_iwf)) (not (= (iwf_arg_0_13 ?z) (ite (is-IfTE [...]
+(is-IfTE s)
+(iwf s) 
+(not (forall ((?z I_iwf)) (not (= (iwf_arg_0_13 ?z) s)) ))
+(ite (is-IfTE s) (= termITE_17 (then!2245 s)) (= termITE_17 (then!2245_uf_5 s)))
+(ite (is-IfTE s) (= termITE_18 (then!2245 s)) (= termITE_18 (then!2245_uf_5 s)))
+(=> (and (iwf termITE_17) (not (forall ((?z I_iwf)) (not (= (iwf_arg_0_13 ?z) termITE_18)) ))) (and (= (ewl termITE_17) termITE_17) (not (forall ((?z I_ewl)) (not (= (ewl_arg_0_15 ?z) termITE_18)) ))))
+(ite (is-IfTE s) (= termITE_19 (elze!2246 s)) (= termITE_19 (elze!2246_uf_4 s)))
+(ite (is-IfTE s) (= termITE_20 (elze!2246 s)) (= termITE_20 (elze!2246_uf_4 s)))
+(=> (and (iwf termITE_19) (not (forall ((?z I_iwf)) (not (= (iwf_arg_0_13 ?z) termITE_20)) ))) (and (= (ewl termITE_19) termITE_19) (not (forall ((?z I_ewl)) (not (= (ewl_arg_0_15 ?z) termITE_20)) ))))
+(not (= (ewl s) s))
+(not (forall ((?z I_ewl)) (not (= (ewl_arg_0_15 ?z) s)) ))
+
+
+)
+)
+(check-sat)
diff --git a/test/regress/regress0/fmf/german169.smt2 b/test/regress/regress0/fmf/german169.smt2
new file mode 100644
index 0000000..3558715
--- /dev/null
+++ b/test/regress/regress0/fmf/german169.smt2
@@ -0,0 +1,103 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(declare-datatypes () ((UNIT (Unit))))
+(declare-datatypes () ((BOOL (Truth) (Falsity))))
+
+; Decls     --------------
+(declare-sort node$type 0)
+(declare-sort data$type 0)
+(declare-datatypes () ((cache_state$type (invalid) (shared) (exclusive))))
+(declare-datatypes () ((cache$type (c_cache$type (c_state cache_state$type) (c_data data$type)))))
+(declare-datatypes () ((msg_cmd$type (empty) (reqs) (reqe) (inv) (invack) (gnts) (gnte))))
+(declare-datatypes () ((msg$type (c_msg$type (m_cmd msg_cmd$type) (m_data data$type)))))
+(declare-fun dummy () data$type)
+
+; Var Decls --------------
+(declare-fun memdata$1 () data$type)
+(declare-fun shrset$1 () (Array node$type BOOL))
+(declare-fun recv_invack$i () node$type)
+(declare-fun exgntd () BOOL)
+(declare-fun chan3$1 () (Array node$type msg$type))
+(declare-fun shrset () (Array node$type BOOL))
+(declare-fun exgntd$1 () BOOL)
+(declare-fun chan2 () (Array node$type msg$type))
+(declare-fun chan3 () (Array node$type msg$type))
+(declare-fun auxnode () node$type)
+(declare-fun curcmd () msg_cmd$type)
+
+; Asserts   --------------
+(assert (not (=> (and (and (forall ((n node$type)) 
+                                                      (=> (= (m_cmd (select 
+                                                                    chan2 
+                                                                    n)) 
+                                                          gnte) (= exgntd 
+                                                                Truth))) 
+                                                 (forall ((n node$type)) 
+                                                 (=> (= exgntd Truth) 
+                                                 (= (select shrset n) 
+                                                 (ite (= n auxnode) Truth 
+                                                 Falsity))))) (forall 
+                                                              ((n node$type)) 
+                                                              (=> (= 
+                                                                  (m_cmd 
+                                                                  (select 
+                                                                  chan3 
+                                                                  n)) 
+                                                                  invack) 
+                                                              (= (m_cmd 
+                                                                 (select 
+                                                                 chan2 
+                                                                 n)) 
+                                                              empty)))) 
+                                        (=> (= (m_cmd (select chan3 recv_invack$i)) 
+                                            invack) (=> (not (= curcmd empty)) 
+                                                    (=> (= chan3$1 (store 
+                                                                   chan3 
+                                                                   recv_invack$i 
+                                                                   (let (
+                                                                   (vup_228 
+                                                                   (select 
+                                                                   chan3 
+                                                                   recv_invack$i))) 
+                                                                   (c_msg$type 
+                                                                   empty 
+                                                                   (m_data 
+                                                                   vup_228))))) 
+                                                    (=> (= shrset$1 (store 
+                                                                    shrset 
+                                                                    recv_invack$i 
+                                                                    Falsity)) 
+                                                    (= (ite (= exgntd Truth) 
+                                                       (ite (=> (= exgntd$1 
+                                                                Falsity) 
+                                                            (=> (= memdata$1 
+                                                                (m_data 
+                                                                (select 
+                                                                chan3$1 
+                                                                recv_invack$i))) 
+                                                            (forall (
+                                                                    (n node$type)) 
+                                                            (=> (= (m_cmd 
+                                                                   (select 
+                                                                   chan2 
+                                                                   n)) 
+                                                                gnte) 
+                                                            (= exgntd$1 
+                                                            Truth))))) 
+                                                       Truth Falsity) 
+                                                       (ite (forall (
+                                                                    (n node$type)) 
+                                                            (=> (= (m_cmd 
+                                                                   (select 
+                                                                   chan2 
+                                                                   n)) 
+                                                                gnte) 
+                                                            (= exgntd 
+                                                            Truth))) 
+                                                       Truth Falsity)) 
+                                                    Truth))))))))
+                           
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/fmf/german73.smt2 b/test/regress/regress0/fmf/german73.smt2
new file mode 100644
index 0000000..e1d4999
--- /dev/null
+++ b/test/regress/regress0/fmf/german73.smt2
@@ -0,0 +1,105 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: unsat
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-datatypes () ((UNIT (Unit))))
+(declare-datatypes () ((BOOL (Truth) (Falsity))))
+
+; Decls     --------------
+(declare-sort node$type 0)
+(declare-sort data$type 0)
+(declare-datatypes () ((cache_state$type (invalid) (shared) (exclusive))))
+(declare-datatypes () ((cache$type (c_cache$type (c_state cache_state$type) (c_data data$type)))))
+(declare-datatypes () ((msg_cmd$type (empty) (reqs) (reqe) (inv) (invack) (gnts) (gnte))))
+(declare-datatypes () ((msg$type (c_msg$type (m_cmd msg_cmd$type) (m_data data$type)))))
+(declare-fun dummy () data$type)
+
+; Var Decls --------------
+(declare-fun memdata$1 () data$type)
+(declare-fun shrset$1 () (Array node$type BOOL))
+(declare-fun recv_invack$i () node$type)
+(declare-fun exgntd () BOOL)
+(declare-fun invset () (Array node$type BOOL))
+(declare-fun chan3$1 () (Array node$type msg$type))
+(declare-fun shrset () (Array node$type BOOL))
+(declare-fun exgntd$1 () BOOL)
+(declare-fun chan2 () (Array node$type msg$type))
+(declare-fun chan3 () (Array node$type msg$type))
+(declare-fun curcmd () msg_cmd$type)
+
+; Asserts   --------------
+(assert (not (=> (and (forall ((n node$type)) 
+                                                 (=> (= (select invset n) 
+                                                     Truth) (= (select 
+                                                               shrset 
+                                                               n) Truth))) 
+                                            (forall ((n node$type)) (=> 
+                                                                    (or 
+                                                                    (= 
+                                                                    (m_cmd 
+                                                                    (select 
+                                                                    chan2 
+                                                                    n)) 
+                                                                    inv) 
+                                                                    (= 
+                                                                    (m_cmd 
+                                                                    (select 
+                                                                    chan3 
+                                                                    n)) 
+                                                                    invack)) 
+                                                                    (not 
+                                                                    (= 
+                                                                    (select 
+                                                                    invset 
+                                                                    n) 
+                                                                    Truth))))) 
+                                        (=> (= (m_cmd (select chan3 recv_invack$i)) 
+                                            invack) (=> (not (= curcmd empty)) 
+                                                    (=> (= chan3$1 (store 
+                                                                   chan3 
+                                                                   recv_invack$i 
+                                                                   (let (
+                                                                   (vup_101 
+                                                                   (select 
+                                                                   chan3 
+                                                                   recv_invack$i))) 
+                                                                   (c_msg$type 
+                                                                   empty 
+                                                                   (m_data 
+                                                                   vup_101))))) 
+                                                    (=> (= shrset$1 (store 
+                                                                    shrset 
+                                                                    recv_invack$i 
+                                                                    Falsity)) 
+                                                    (= (ite (= exgntd Truth) 
+                                                       (ite (=> (= exgntd$1 
+                                                                Falsity) 
+                                                            (=> (= memdata$1 
+                                                                (m_data 
+                                                                (select 
+                                                                chan3$1 
+                                                                recv_invack$i))) 
+                                                            (forall (
+                                                                    (n node$type)) 
+                                                            (=> (= (select 
+                                                                   invset 
+                                                                   n) 
+                                                                Truth) 
+                                                            (= (select 
+                                                               shrset$1 
+                                                               n) Truth))))) 
+                                                       Truth Falsity) 
+                                                       (ite (forall (
+                                                                    (n node$type)) 
+                                                            (=> (= (select 
+                                                                   invset 
+                                                                   n) 
+                                                                Truth) 
+                                                            (= (select 
+                                                               shrset$1 
+                                                               n) Truth))) 
+                                                       Truth Falsity)) 
+                                                    Truth))))))))
+                           
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/fmf/jasmin-cdt-crash.smt2 b/test/regress/regress0/fmf/jasmin-cdt-crash.smt2
new file mode 100644
index 0000000..1f72142
--- /dev/null
+++ b/test/regress/regress0/fmf/jasmin-cdt-crash.smt2
@@ -0,0 +1,100 @@
+; COMMAND-LINE: --finite-model-find --fmf-inst-engine --uf-ss-fair-monotone
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(declare-sort a_ 0)
+(declare-fun __nun_card_witness_0 () a_)
+(declare-codatatypes ()
+   ((llist_ (LCons_ (_select_LCons__0 a_) (_select_LCons__1 llist_)) 
+       (LNil_ ))))
+(declare-fun xs_ () llist_)
+(declare-fun y_ () a_)
+(declare-fun ys_ () llist_)
+(declare-datatypes () ((_nat (_succ (_select__succ_0 _nat)) (_zero ))))
+(declare-fun decr_lprefix_ () _nat)
+(declare-sort G_lprefix__neg 0)
+(declare-fun __nun_card_witness_1 () G_lprefix__neg)
+(declare-fun lprefix__- (_nat llist_ llist_) Bool)
+(declare-fun proj_G_lprefix__neg_0 (G_lprefix__neg) _nat)
+(declare-fun proj_G_lprefix__neg_1 (G_lprefix__neg) llist_)
+(declare-fun proj_G_lprefix__neg_2 (G_lprefix__neg) llist_)
+(assert
+ (forall ((a/60 G_lprefix__neg))
+    (=>
+     (or (= (proj_G_lprefix__neg_0 a/60) _zero) 
+      (and (is-_succ (proj_G_lprefix__neg_0 a/60)) 
+       (= (proj_G_lprefix__neg_1 a/60) LNil_)) 
+      (and
+       (=>
+        (exists ((a/68 G_lprefix__neg))
+           (and
+            (= (_select_LCons__1 (proj_G_lprefix__neg_2 a/60))
+             (proj_G_lprefix__neg_2 a/68)) 
+            (= (_select_LCons__1 (proj_G_lprefix__neg_1 a/60))
+             (proj_G_lprefix__neg_1 a/68)) 
+            (= (_select__succ_0 (proj_G_lprefix__neg_0 a/60))
+             (proj_G_lprefix__neg_0 a/68))))
+        (lprefix__- (_select__succ_0 (proj_G_lprefix__neg_0 a/60)) 
+         (_select_LCons__1 (proj_G_lprefix__neg_1 a/60)) 
+         (_select_LCons__1 (proj_G_lprefix__neg_2 a/60)))) 
+       (is-_succ (proj_G_lprefix__neg_0 a/60)) 
+       (is-LCons_ (proj_G_lprefix__neg_1 a/60)) 
+       (is-LCons_ (proj_G_lprefix__neg_2 a/60)) 
+       (= (_select_LCons__0 (proj_G_lprefix__neg_2 a/60))
+        (_select_LCons__0 (proj_G_lprefix__neg_1 a/60)))))
+     (lprefix__- (proj_G_lprefix__neg_0 a/60) (proj_G_lprefix__neg_1 a/60) 
+      (proj_G_lprefix__neg_2 a/60)))))
+(declare-sort G_lprefix__pos 0)
+(declare-fun __nun_card_witness_2 () G_lprefix__pos)
+(declare-fun lprefix__+ (llist_ llist_) Bool)
+(declare-fun proj_G_lprefix__pos_0 (G_lprefix__pos) llist_)
+(declare-fun proj_G_lprefix__pos_1 (G_lprefix__pos) llist_)
+(assert
+ (forall ((a/69 G_lprefix__pos))
+    (=>
+     (lprefix__+ (proj_G_lprefix__pos_0 a/69) (proj_G_lprefix__pos_1 a/69))
+     (or (= (proj_G_lprefix__pos_0 a/69) LNil_) 
+      (and
+       (lprefix__+ (_select_LCons__1 (proj_G_lprefix__pos_0 a/69)) 
+        (_select_LCons__1 (proj_G_lprefix__pos_1 a/69))) 
+       (exists ((a/77 G_lprefix__pos))
+          (and
+           (= (_select_LCons__1 (proj_G_lprefix__pos_1 a/69))
+            (proj_G_lprefix__pos_1 a/77)) 
+           (= (_select_LCons__1 (proj_G_lprefix__pos_0 a/69))
+            (proj_G_lprefix__pos_0 a/77)))) 
+       (is-LCons_ (proj_G_lprefix__pos_0 a/69)) 
+       (is-LCons_ (proj_G_lprefix__pos_1 a/69)) 
+       (= (_select_LCons__0 (proj_G_lprefix__pos_1 a/69))
+        (_select_LCons__0 (proj_G_lprefix__pos_0 a/69))))))))
+(declare-fun nun_sk_0 () llist_)
+(assert
+ (or
+  (and
+   (not
+    (=>
+     (exists ((a/109 G_lprefix__neg))
+        (and (= (LCons_ y_ ys_) (proj_G_lprefix__neg_2 a/109)) 
+         (= xs_ (proj_G_lprefix__neg_1 a/109)) 
+         (= decr_lprefix_ (proj_G_lprefix__neg_0 a/109))))
+     (lprefix__- decr_lprefix_ xs_ (LCons_ y_ ys_)))) 
+   (or (= xs_ LNil_) 
+    (and (= xs_ (LCons_ y_ nun_sk_0)) (lprefix__+ xs_ ys_) 
+     (exists ((a/113 G_lprefix__pos))
+        (and (= ys_ (proj_G_lprefix__pos_1 a/113)) 
+         (= xs_ (proj_G_lprefix__pos_0 a/113))))))) 
+  (and (not (= xs_ LNil_)) 
+   (forall ((xs_H_/120 llist_))
+      (or (not (= xs_ (LCons_ y_ xs_H_/120))) 
+       (not
+        (=>
+         (exists ((a/124 G_lprefix__neg))
+            (and (= ys_ (proj_G_lprefix__neg_2 a/124)) 
+             (= xs_ (proj_G_lprefix__neg_1 a/124)) 
+             (= decr_lprefix_ (proj_G_lprefix__neg_0 a/124))))
+         (lprefix__- decr_lprefix_ xs_ ys_))))) 
+   (lprefix__+ xs_ (LCons_ y_ ys_)) 
+   (exists ((a/125 G_lprefix__pos))
+      (and (= (LCons_ y_ ys_) (proj_G_lprefix__pos_1 a/125)) 
+       (= xs_ (proj_G_lprefix__pos_0 a/125)))))))
+(check-sat)
diff --git a/test/regress/regress0/fmf/ko-bound-set.cvc b/test/regress/regress0/fmf/ko-bound-set.cvc
new file mode 100644
index 0000000..eebcbc2
--- /dev/null
+++ b/test/regress/regress0/fmf/ko-bound-set.cvc
@@ -0,0 +1,10 @@
+% EXPECT: invalid
+OPTION "finite-model-find";
+OPTION "fmf-bound-int";
+OPTION "produce-models";
+
+X, Y : SET OF INT;
+
+ASSERT FORALL(x : INT): x IS_IN X => x > 0;
+QUERY ||X|| = 5 AND Y = X | {9} => ||Y|| <= 4;
+
diff --git a/test/regress/regress0/fmf/krs-sat.smt2 b/test/regress/regress0/fmf/krs-sat.smt2
new file mode 100644
index 0000000..22d9e44
--- /dev/null
+++ b/test/regress/regress0/fmf/krs-sat.smt2
@@ -0,0 +1,16 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(declare-sort $$unsorted 0)
+(declare-fun cowlNothing ($$unsorted) Bool)
+(declare-fun cowlThing ($$unsorted) Bool)
+(declare-fun xsd_integer ($$unsorted) Bool)
+(declare-fun xsd_string ($$unsorted) Bool)
+(declare-fun is () $$unsorted)
+(assert (and (forall ((X $$unsorted)) (cowlThing X) ) (forall ((X $$unsorted)) (not (cowlNothing X)) )))
+(assert (forall ((X $$unsorted)) (= (xsd_string X) (not (xsd_integer X))) ))
+(assert (and (forall ((X $$unsorted)) (or (not (cowlThing X)) (= X is)) ) (cowlThing is)))
+(assert (cowlThing is))
+(assert (and (forall ((X $$unsorted)) (cowlThing X) ) (forall ((X $$unsorted)) (not (cowlNothing X)) ) (forall ((X $$unsorted)) (or (not (cowlThing X)) (= X is)) )))
+(check-sat)
diff --git a/test/regress/regress0/fmf/loopy_coda.smt2 b/test/regress/regress0/fmf/loopy_coda.smt2
new file mode 100644
index 0000000..7c1d308
--- /dev/null
+++ b/test/regress/regress0/fmf/loopy_coda.smt2
@@ -0,0 +1,38 @@
+; COMMAND-LINE: --finite-model-find --fmf-inst-engine --uf-ss-fair-monotone
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(declare-sort a 0)
+(declare-fun __nun_card_witness_0 () a)
+(declare-codatatypes ()
+   ((llist (LCons (_select_LCons_0 a) (_select_LCons_1 llist)) (LNil ))))
+(declare-fun xs () llist)
+(declare-fun y () a)
+(declare-fun ys () llist)
+(declare-sort G_lappend 0)
+(declare-fun __nun_card_witness_1 () G_lappend)
+(declare-fun lappend (llist llist) llist)
+(declare-fun proj_G_lappend_0 (G_lappend) llist)
+(declare-fun proj_G_lappend_1 (G_lappend) llist)
+(assert
+ (forall ((a/33 G_lappend))
+    (and
+     (= (lappend (proj_G_lappend_0 a/33) (proj_G_lappend_1 a/33))
+      (ite (is-LCons (proj_G_lappend_0 a/33))
+        (LCons (_select_LCons_0 (proj_G_lappend_0 a/33))
+         (lappend (_select_LCons_1 (proj_G_lappend_0 a/33))
+          (proj_G_lappend_1 a/33)))
+        (proj_G_lappend_1 a/33)))
+     (=> (is-LCons (proj_G_lappend_0 a/33))
+      (exists ((a/35 G_lappend))
+         (and (= (proj_G_lappend_1 a/33) (proj_G_lappend_1 a/35))
+          (= (_select_LCons_1 (proj_G_lappend_0 a/33))
+           (proj_G_lappend_0 a/35))))))))
+(assert
+ (not
+  (=>
+   (exists ((a/37 G_lappend))
+      (and (= (LCons y ys) (proj_G_lappend_1 a/37))
+       (= xs (proj_G_lappend_0 a/37))))
+   (= (lappend xs (LCons y ys)) xs))))
+(check-sat)
diff --git a/test/regress/regress0/fmf/lst-no-self-rev-exp.smt2 b/test/regress/regress0/fmf/lst-no-self-rev-exp.smt2
new file mode 100644
index 0000000..5e1f3de
--- /dev/null
+++ b/test/regress/regress0/fmf/lst-no-self-rev-exp.smt2
@@ -0,0 +1,35 @@
+; COMMAND-LINE: --finite-model-find --dt-rewrite-error-sel
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(declare-datatypes () ((Nat (succ (pred Nat)) (zero)) (Lst (cons (hd Nat) (tl Lst)) (nil))))
+
+(declare-fun app (Lst Lst) Lst)
+(declare-fun rev (Lst) Lst)
+ 
+(declare-sort I_app 0)
+(declare-sort I_rev 0)
+
+(declare-fun a () I_app)
+(declare-fun b () I_app)
+(assert (not (= a b)))
+
+(declare-fun app_0_3 (I_app) Lst)
+(declare-fun app_1_4 (I_app) Lst)
+(declare-fun rev_0_5 (I_rev) Lst)
+
+(declare-fun xs () Lst)
+
+(assert (and
+ 
+(forall ((?i I_app)) (= (app (app_0_3 ?i) (app_1_4 ?i)) (ite (is-cons (app_0_3 ?i)) (cons (hd (app_0_3 ?i)) (app (tl (app_0_3 ?i)) (app_1_4 ?i))) (app_1_4 ?i))) ) 
+ 
+(forall ((?i I_rev)) (= (rev (rev_0_5 ?i)) (ite (is-cons (rev_0_5 ?i)) (app (rev (tl (rev_0_5 ?i))) (cons (hd (rev_0_5 ?i)) nil)) nil)) ) 
+
+(forall ((?i I_rev)) (or (not (is-cons (rev_0_5 ?i))) (and (not (forall ((?z I_app)) (not (and (= (app_0_3 ?z) (rev (tl (rev_0_5 ?i)))) (= (app_1_4 ?z) (cons (hd (rev_0_5 ?i))  nil)))) )) (not (forall ((?z I_rev)) (not (= (rev_0_5 ?z) (tl (rev_0_5 ?i)) )) )))) )
+
+(not (or (= xs (rev xs)) (forall ((?z I_rev)) (not (= (rev_0_5 ?z) xs)) )))
+  
+))
+  
+(check-sat)
+
diff --git a/test/regress/regress0/fmf/memory_model-R_cpp-dd.cvc b/test/regress/regress0/fmf/memory_model-R_cpp-dd.cvc
new file mode 100644
index 0000000..5d12899
--- /dev/null
+++ b/test/regress/regress0/fmf/memory_model-R_cpp-dd.cvc
@@ -0,0 +1,52 @@
+% EXPECT: sat
+OPTION "produce-models";
+OPTION "fmf-bound";
+
+DATATYPE MOPERATION = R | W | M END;
+DATATYPE ORDER = I | SC | U END;
+DATATYPE ATOM = AT | NA END;
+
+DATATYPE BINT = I0 | I1 | I2 | I3 END;
+
+DATATYPE TEAR_TYPE = TEAR_TRUE | TEAR_FALSE END;
+SDBLOCK_TYPE: TYPE;
+VALUE_TYPE: TYPE;
+ADDRESS_TYPE: TYPE = SET OF BINT;
+
+MEM_OP_TYPE : TYPE = [# O:MOPERATION, T:TEAR_TYPE, R:ORDER, A:ATOM, B:SDBLOCK_TYPE, M:ADDRESS_TYPE, V:VALUE_TYPE #];
+EV_REL: TYPE = SET OF [MEM_OP_TYPE, MEM_OP_TYPE];
+THREAD_TYPE : TYPE = [# E:SET OF MEM_OP_TYPE, PO:EV_REL #];
+
+m1 : SDBLOCK_TYPE;
+
+ow1 : MEM_OP_TYPE;
+or2 : MEM_OP_TYPE;
+
+v1 : VALUE_TYPE;
+v2 : VALUE_TYPE;
+
+ASSERT (ow1.O = W) AND
+       (ow1.T = TEAR_FALSE) AND
+       (ow1.R = U) AND
+       (ow1.A = NA) AND
+       (ow1.B = m1) AND
+       (ow1.M = {I0}) AND
+       (ow1.V = v1);
+
+ASSERT (or2.O = R) AND
+       (or2.T = TEAR_FALSE) AND
+       (or2.R = U) AND
+       (or2.A = NA) AND
+       (or2.B = m1) AND
+       (or2.M = {I0}) AND
+       (or2.V = v2);
+
+ev_set : SET OF MEM_OP_TYPE;
+
+ASSERT ev_set = {ow1, or2};
+
+RF : EV_REL;
+
+ASSERT FORALL (r,w: MEM_OP_TYPE) : (((r IS_IN ev_set) AND (w IS_IN ev_set)) => (((r,w) IS_IN RF) <=> ((r.O = R) AND (w.O = W))));
+
+CHECKSAT;
diff --git a/test/regress/regress0/fmf/nun-0208-to.smt2 b/test/regress/regress0/fmf/nun-0208-to.smt2
new file mode 100644
index 0000000..f831af1
--- /dev/null
+++ b/test/regress/regress0/fmf/nun-0208-to.smt2
@@ -0,0 +1,180 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+  (set-logic ALL_SUPPORTED)
+  (declare-sort b__ 0)
+  (declare-fun __nun_card_witness_0_ () b__)
+  (declare-sort a__ 0)
+  (declare-fun __nun_card_witness_1_ () a__)
+  (declare-datatypes ()
+     ((prod__ (Pair__ (_select_Pair___0 a__) (_select_Pair___1 b__)))))
+  (declare-datatypes ()
+     ((list2__
+         (Cons2__ (_select_Cons2___0 prod__) (_select_Cons2___1 list2__)) 
+         (Nil2__ ))))
+  (declare-datatypes ()
+     ((list__ (Cons__ (_select_Cons___0 a__) (_select_Cons___1 list__)) 
+         (Nil__ ))))
+  (declare-datatypes ()
+     ((list1__ (Cons1__ (_select_Cons1___0 b__) (_select_Cons1___1 list1__)) 
+         (Nil1__ ))))
+  (declare-sort G_zip__ 0)
+  (declare-fun __nun_card_witness_2_ () G_zip__)
+  (declare-fun zip__ (list__ list1__) list2__)
+  (declare-fun proj_G_zip__0_ (G_zip__) list__)
+  (declare-fun proj_G_zip__1_ (G_zip__) list1__)
+  (assert
+   (forall ((a/166 G_zip__))
+      (and
+       (= (zip__ (proj_G_zip__0_ a/166) (proj_G_zip__1_ a/166))
+        (ite (is-Cons1__ (proj_G_zip__1_ a/166))
+          (ite (is-Cons__ (proj_G_zip__0_ a/166))
+            (Cons2__
+             (Pair__ (_select_Cons___0 (proj_G_zip__0_ a/166)) 
+              (_select_Cons1___0 (proj_G_zip__1_ a/166))) 
+             (zip__ (_select_Cons___1 (proj_G_zip__0_ a/166)) 
+              (_select_Cons1___1 (proj_G_zip__1_ a/166))))
+            Nil2__)
+          Nil2__)) 
+       (=> (is-Cons1__ (proj_G_zip__1_ a/166))
+        (=> (is-Cons__ (proj_G_zip__0_ a/166))
+         (exists ((a/168 G_zip__))
+            (and
+             (= (_select_Cons1___1 (proj_G_zip__1_ a/166))
+              (proj_G_zip__1_ a/168)) 
+             (= (_select_Cons___1 (proj_G_zip__0_ a/166))
+              (proj_G_zip__0_ a/168)))))))))
+  (declare-datatypes () ((nat__ (Suc__ (_select_Suc___0 nat__)) (zero__ ))))
+  (declare-sort G_replicate__ 0)
+  (declare-fun __nun_card_witness_3_ () G_replicate__)
+  (declare-fun replicate__ (nat__ a__) list__)
+  (declare-fun proj_G_replicate__0_ (G_replicate__) nat__)
+  (declare-fun proj_G_replicate__1_ (G_replicate__) a__)
+  (assert
+   (forall ((a/169 G_replicate__))
+      (and
+       (=
+        (replicate__ (proj_G_replicate__0_ a/169) 
+         (proj_G_replicate__1_ a/169))
+        (ite (is-Suc__ (proj_G_replicate__0_ a/169))
+          (Cons__ (proj_G_replicate__1_ a/169) 
+           (replicate__ (_select_Suc___0 (proj_G_replicate__0_ a/169)) 
+            (proj_G_replicate__1_ a/169)))
+          Nil__)) 
+       (=> (is-Suc__ (proj_G_replicate__0_ a/169))
+        (exists ((a/171 G_replicate__))
+           (and
+            (= (proj_G_replicate__1_ a/169) (proj_G_replicate__1_ a/171)) 
+            (= (_select_Suc___0 (proj_G_replicate__0_ a/169))
+             (proj_G_replicate__0_ a/171))))))))
+  (declare-fun j__ () nat__)
+  (declare-fun x__ () a__)
+  (declare-sort G_replicate1__ 0)
+  (declare-fun __nun_card_witness_4_ () G_replicate1__)
+  (declare-fun replicate1__ (nat__ b__) list1__)
+  (declare-fun proj_G_replicate1__0_ (G_replicate1__) nat__)
+  (declare-fun proj_G_replicate1__1_ (G_replicate1__) b__)
+  (assert
+   (forall ((a/172 G_replicate1__))
+      (and
+       (=
+        (replicate1__ (proj_G_replicate1__0_ a/172) 
+         (proj_G_replicate1__1_ a/172))
+        (ite (is-Suc__ (proj_G_replicate1__0_ a/172))
+          (Cons1__ (proj_G_replicate1__1_ a/172) 
+           (replicate1__ (_select_Suc___0 (proj_G_replicate1__0_ a/172)) 
+            (proj_G_replicate1__1_ a/172)))
+          Nil1__)) 
+       (=> (is-Suc__ (proj_G_replicate1__0_ a/172))
+        (exists ((a/174 G_replicate1__))
+           (and
+            (= (proj_G_replicate1__1_ a/172) (proj_G_replicate1__1_ a/174)) 
+            (= (_select_Suc___0 (proj_G_replicate1__0_ a/172))
+             (proj_G_replicate1__0_ a/174))))))))
+  (declare-fun y__ () b__)
+  (declare-sort G_replicate2__ 0)
+  (declare-fun __nun_card_witness_5_ () G_replicate2__)
+  (declare-fun replicate2__ (nat__ prod__) list2__)
+  (declare-fun proj_G_replicate2__0_ (G_replicate2__) nat__)
+  (declare-fun proj_G_replicate2__1_ (G_replicate2__) prod__)
+  (assert
+   (forall ((a/175 G_replicate2__))
+      (and
+       (=
+        (replicate2__ (proj_G_replicate2__0_ a/175) 
+         (proj_G_replicate2__1_ a/175))
+        (ite (is-Suc__ (proj_G_replicate2__0_ a/175))
+          (Cons2__ (proj_G_replicate2__1_ a/175) 
+           (replicate2__ (_select_Suc___0 (proj_G_replicate2__0_ a/175)) 
+            (proj_G_replicate2__1_ a/175)))
+          Nil2__)) 
+       (=> (is-Suc__ (proj_G_replicate2__0_ a/175))
+        (exists ((a/177 G_replicate2__))
+           (and
+            (= (proj_G_replicate2__1_ a/175) (proj_G_replicate2__1_ a/177)) 
+            (= (_select_Suc___0 (proj_G_replicate2__0_ a/175))
+             (proj_G_replicate2__0_ a/177))))))))
+  (declare-sort G_less__eq__ 0)
+  (declare-fun __nun_card_witness_6_ () G_less__eq__)
+  (declare-fun less__eq__ (nat__ nat__) Bool)
+  (declare-fun proj_G_less__eq__0_ (G_less__eq__) nat__)
+  (declare-fun proj_G_less__eq__1_ (G_less__eq__) nat__)
+  (assert
+   (forall ((a/178 G_less__eq__))
+      (and
+       (=
+        (less__eq__ (proj_G_less__eq__0_ a/178) (proj_G_less__eq__1_ a/178))
+        (=> (is-Suc__ (proj_G_less__eq__0_ a/178))
+         (and (is-Suc__ (proj_G_less__eq__1_ a/178)) 
+          (less__eq__ (_select_Suc___0 (proj_G_less__eq__0_ a/178)) 
+           (_select_Suc___0 (proj_G_less__eq__1_ a/178)))))) 
+       (exists ((a/182 G_less__eq__))
+          (and
+           (= (_select_Suc___0 (proj_G_less__eq__1_ a/178))
+            (proj_G_less__eq__1_ a/182)) 
+           (= (_select_Suc___0 (proj_G_less__eq__0_ a/178))
+            (proj_G_less__eq__0_ a/182)))))))
+  (declare-sort G_min__ 0)
+  (declare-fun __nun_card_witness_7_ () G_min__)
+  (declare-fun min__ (nat__ nat__) nat__)
+  (declare-fun proj_G_min__0_ (G_min__) nat__)
+  (declare-fun proj_G_min__1_ (G_min__) nat__)
+  (assert
+   (forall ((a/183 G_min__))
+      (and
+       (= (min__ (proj_G_min__0_ a/183) (proj_G_min__1_ a/183))
+        (ite (less__eq__ (proj_G_min__0_ a/183) (proj_G_min__1_ a/183))
+          (proj_G_min__0_ a/183) (proj_G_min__1_ a/183))) 
+       (exists ((a/184 G_less__eq__))
+          (and (= (proj_G_min__1_ a/183) (proj_G_less__eq__1_ a/184)) 
+           (= (proj_G_min__0_ a/183) (proj_G_less__eq__0_ a/184)))))))
+  (declare-fun i__ () nat__)
+  (assert
+   (not
+    (=>
+     (and
+      (exists ((a/212 G_min__))
+         (and (= i__ (proj_G_min__1_ a/212)) (= i__ (proj_G_min__0_ a/212)))) 
+      (exists ((a/208 G_replicate2__))
+         (and (= (Pair__ x__ y__) (proj_G_replicate2__1_ a/208)) 
+          (= (min__ i__ i__) (proj_G_replicate2__0_ a/208)) 
+          (exists ((a/210 G_min__))
+             (and (= i__ (proj_G_min__1_ a/210)) 
+              (= i__ (proj_G_min__0_ a/210)))))) 
+      (exists ((a/199 G_zip__))
+         (and (= (replicate1__ j__ y__) (proj_G_zip__1_ a/199)) 
+          (exists ((a/202 G_replicate1__))
+             (and (= y__ (proj_G_replicate1__1_ a/202)) 
+              (= j__ (proj_G_replicate1__0_ a/202)))) 
+          (= (replicate__ j__ x__) (proj_G_zip__0_ a/199)) 
+          (exists ((a/203 G_replicate__))
+             (and (= x__ (proj_G_replicate__1_ a/203)) 
+              (= j__ (proj_G_replicate__0_ a/203)))))) 
+      (exists ((a/207 G_replicate1__))
+         (and (= y__ (proj_G_replicate1__1_ a/207)) 
+          (= j__ (proj_G_replicate1__0_ a/207)))) 
+      (exists ((a/206 G_replicate__))
+         (and (= x__ (proj_G_replicate__1_ a/206)) 
+          (= j__ (proj_G_replicate__0_ a/206)))))
+     (= (replicate2__ (min__ i__ i__) (Pair__ x__ y__))
+      (zip__ (replicate__ j__ x__) (replicate1__ j__ y__))))))
+  (check-sat)
diff --git a/test/regress/regress0/fmf/refcount24.cvc.smt2 b/test/regress/regress0/fmf/refcount24.cvc.smt2
new file mode 100644
index 0000000..e3b6957
--- /dev/null
+++ b/test/regress/regress0/fmf/refcount24.cvc.smt2
@@ -0,0 +1,37 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(set-info :smt-lib-version 2.0)
+(set-info :category "unknown")
+(set-info :status sat)
+(declare-datatypes () 
+((UNIT  (Unit))
+))
+(declare-datatypes () 
+((BOOL  (Truth)  (Falsity))
+))
+(declare-sort resource$type 0)
+(declare-sort process$type 0)
+(declare-fun null () resource$type)
+(declare-sort S$t$type 0)
+(declare-fun S$empty () S$t$type)
+(declare-fun S$mem (process$type S$t$type) BOOL)
+(declare-fun S$add (process$type S$t$type) S$t$type)
+(declare-fun S$remove (process$type S$t$type) S$t$type)
+(declare-fun S$cardinality (S$t$type) Int)
+(assert (forall ((e process$type)) (not (= (S$mem e S$empty) Truth))))
+(assert (forall ((x process$type) (y process$type) (s S$t$type)) (= (S$mem x (S$add y s)) (ite (or (= x y) (= (S$mem x s) Truth)) Truth Falsity))))
+(assert (forall ((x process$type) (y process$type) (s S$t$type)) (= (S$mem x (S$remove y s)) (ite (and (not (= x y)) (= (S$mem x s) Truth)) Truth Falsity))))
+(assert (= (S$cardinality S$empty) 0))
+(assert (forall ((s S$t$type)) (=> (= (S$cardinality s) 0) (= s S$empty))))
+(assert (forall ((s S$t$type)) (>= (S$cardinality s) 0)))
+(assert (forall ((x process$type) (s S$t$type)) (let ((?v_0 (S$cardinality s))) (= (S$cardinality (S$add x s)) (ite (= (S$mem x s) Truth) ?v_0 (+ ?v_0 1))))))
+(assert (forall ((x process$type) (s S$t$type)) (let ((?v_0 (S$cardinality s))) (= (S$cardinality (S$remove x s)) (ite (= (S$mem x s) Truth) (- ?v_0 1) ?v_0)))))
+(declare-fun count () (Array resource$type Int))
+(declare-fun ref () (Array process$type resource$type))
+(declare-fun valid () (Array resource$type BOOL))
+(declare-fun destroy$r () resource$type)
+(declare-fun valid$1 () (Array resource$type BOOL))
+(assert (not (=> (forall ((p process$type)) (let ((?v_0 (select ref p))) (=> (not (= ?v_0 null)) (= (select valid ?v_0) Truth)))) (=> (not (= destroy$r null)) (=> (= (select valid destroy$r) Truth) (=> (= (select count destroy$r) 0) (=> (= valid$1 (store valid destroy$r Falsity)) (forall ((p process$type)) (let ((?v_1 (select ref p))) (=> (not (= ?v_1 null)) (= (select valid$1 ?v_1) Truth)))))))))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/fmf/sc-crash-052316.smt2 b/test/regress/regress0/fmf/sc-crash-052316.smt2
new file mode 100644
index 0000000..2fc86cb
--- /dev/null
+++ b/test/regress/regress0/fmf/sc-crash-052316.smt2
@@ -0,0 +1,35 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: unsat
+  (set-logic ALL_SUPPORTED)
+  (set-info :status unsat)
+  (declare-sort g_ 0)
+  (declare-fun __nun_card_witness_0_ () g_)
+  (declare-sort f_ 0)
+  (declare-fun __nun_card_witness_1_ () f_)
+  (declare-sort e_ 0)
+  (declare-fun __nun_card_witness_2_ () e_)
+(declare-datatypes ()
+ ((prod1_ (Pair1_ (_select_Pair1__0 e_) (_select_Pair1__1 f_)))))
+  (declare-sort d_ 0)
+  (declare-fun __nun_card_witness_3_ () d_)
+  (declare-sort c_ 0)
+  (declare-fun __nun_card_witness_4_ () c_)
+  (declare-sort b_ 0)
+  (declare-fun __nun_card_witness_5_ () b_)
+  (declare-sort a_ 0)
+  (declare-fun __nun_card_witness_6_ () a_)
+(declare-datatypes ()
+ ((prod_ (Pair_ (_select_Pair__0 a_) (_select_Pair__1 b_)))))
+  (declare-fun f1_ (prod_ c_ d_ prod1_) g_)
+  (declare-fun g1_ (prod_) c_)
+  (declare-fun h_ (prod_ d_) prod1_)
+  (declare-fun nun_sk_0_ () prod_)
+(declare-fun nun_sk_1_ (c_) d_)
+  (assert
+   (not
+    (exists ((v/72 c_))
+     (exists ((x/73 prod1_))
+      (= (f1_ nun_sk_0_ v/72 (nun_sk_1_ v/72) x/73)
+       (f1_ nun_sk_0_ (g1_ nun_sk_0_) (nun_sk_1_ v/72)
+        (h_ nun_sk_0_ (nun_sk_1_ v/72))))))))
+(check-sat)
diff --git a/test/regress/regress0/fmf/sc_bad_model_1221.smt2 b/test/regress/regress0/fmf/sc_bad_model_1221.smt2
new file mode 100644
index 0000000..a083e41
--- /dev/null
+++ b/test/regress/regress0/fmf/sc_bad_model_1221.smt2
@@ -0,0 +1,33 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+  (set-logic ALL_SUPPORTED)
+  (set-info :status sat)
+  (declare-sort a 0)
+  (declare-fun __nun_card_witness_0 () a)
+  (declare-datatypes () ((prod (Pair (_select_Pair_0 a) (_select_Pair_1 a)))))
+  (declare-sort G_snd 0)
+  (declare-fun __nun_card_witness_1 () G_snd)
+  (declare-fun snd (prod) a)
+  (declare-fun proj_G_snd_0 (G_snd) prod)
+  (assert
+   (forall ((a/32 G_snd))
+      (and
+       (= (snd (proj_G_snd_0 a/32)) (_select_Pair_1 (proj_G_snd_0 a/32))) 
+       true)))
+  (declare-fun p () prod)
+  (declare-datatypes () ((pd (Pd (_select_Pd_0 prod)))))
+  (declare-sort G_fs 0)
+  (declare-fun __nun_card_witness_2 () G_fs)
+  (declare-fun fs (pd) a)
+  (declare-fun proj_G_fs_0 (G_fs) pd)
+  (assert
+   (forall ((a/33 G_fs))
+      (and
+       (= (fs (proj_G_fs_0 a/33))
+        (_select_Pair_0 (_select_Pd_0 (proj_G_fs_0 a/33)))) 
+       true)))
+  (assert
+   (and (not (= (fs (Pd p)) (snd p))) 
+    (exists ((a/34 G_fs)) (= (Pd p) (proj_G_fs_0 a/34))) 
+    (exists ((a/35 G_snd)) (= p (proj_G_snd_0 a/35)))))
+  (check-sat)
diff --git a/test/regress/regress0/fmf/syn002-si-real-int.smt2 b/test/regress/regress0/fmf/syn002-si-real-int.smt2
new file mode 100644
index 0000000..769bc88
--- /dev/null
+++ b/test/regress/regress0/fmf/syn002-si-real-int.smt2
@@ -0,0 +1,11 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(declare-sort $$unsorted 0)
+(declare-fun $$rtu (Real) $$unsorted)
+(declare-fun $$utr ($$unsorted) Real)
+(declare-fun p ($$unsorted) Bool)
+(assert (and (= ($$utr ($$rtu 12)) 12) (= ($$utr ($$rtu (/ 41 152))) (/ 41 152)) ))
+(assert (forall ((x $$unsorted)) (p x)))
+(check-sat)
diff --git a/test/regress/regress0/fmf/tail_rec.smt2 b/test/regress/regress0/fmf/tail_rec.smt2
new file mode 100644
index 0000000..87b2d53
--- /dev/null
+++ b/test/regress/regress0/fmf/tail_rec.smt2
@@ -0,0 +1,11 @@
+; COMMAND-LINE: --fmf-fun --no-check-models
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(declare-sort elem 0)
+(declare-datatypes () ((list (Nil) (Cons (hd elem) (tl list)))))
+(define-fun-rec f ((x list)) elem
+  (ite (is-Nil x) (f x) (hd x))
+)
+(declare-fun t () elem)
+(assert (= t (f Nil)))
+(check-sat)
diff --git a/test/regress/regress0/fmf/with-ind-104-core.smt2 b/test/regress/regress0/fmf/with-ind-104-core.smt2
new file mode 100644
index 0000000..a2e3a9e
--- /dev/null
+++ b/test/regress/regress0/fmf/with-ind-104-core.smt2
@@ -0,0 +1,33 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-datatypes () ((Nat!2409 (succ!2410 (pred!2411 Nat!2409)) (zero!2412))
+))
+(declare-datatypes () ((Lst!2413 (cons!2414 (head!2415 Nat!2409) (tail!2416 Lst!2413)) (nil!2417))
+))
+(declare-fun error_value!2418 () Nat!2409)
+(declare-fun plus!237 (Nat!2409 Nat!2409) Nat!2409)
+(declare-fun error_value!2419 () Nat!2409)
+(declare-fun count!263 (Nat!2409 Lst!2413) Nat!2409)
+(declare-fun pred!2411_uf_1 (Nat!2409) Nat!2409)
+(declare-fun tail!2416_uf_2 (Lst!2413) Lst!2413)
+(declare-fun head!2415_uf_3 (Lst!2413) Nat!2409)
+(declare-sort I_plus!237 0)
+(set-info :notes "plus!237_arg_0_4 is op created during fun def fmf")
+(declare-fun plus!237_arg_0_4 (I_plus!237) Nat!2409)
+(set-info :notes "plus!237_arg_1_5 is op created during fun def fmf")
+(declare-fun plus!237_arg_1_5 (I_plus!237) Nat!2409)
+(declare-sort I_count!263 0)
+(set-info :notes "count!263_arg_0_6 is op created during fun def fmf")
+(declare-fun count!263_arg_0_6 (I_count!263) Nat!2409)
+(set-info :notes "count!263_arg_1_7 is op created during fun def fmf")
+(declare-fun count!263_arg_1_7 (I_count!263) Lst!2413)
+(assert
+(and
+(not (forall ((h!413 Nat!2409) (BOUND_VARIABLE_663 I_plus!237) (BOUND_VARIABLE_671 I_count!263) (BOUND_VARIABLE_679 I_count!263) (BOUND_VARIABLE_687 I_count!263) (BOUND_VARIABLE_695 I_plus!237) (BOUND_VARIABLE_703 I_count!263) (BOUND_VARIABLE_711 I_count!263) (BOUND_VARIABLE_719 I_count!263)) (or (not (= (plus!237 (count!263 (count!263_arg_0_6 BOUND_VARIABLE_671) (cons!2414 h!413 nil!2417)) (count!263 (count!263_arg_0_6 BOUND_VARIABLE_671) (count!263_arg_1_7 BOUND_VARIABLE_679))) (count! [...]
+(forall ((?j I_plus!237)) (= (plus!237 (plus!237_arg_0_4 ?j) (plus!237_arg_1_5 ?j)) (ite (is-zero!2412 (plus!237_arg_0_4 ?j)) (plus!237_arg_1_5 ?j) (ite (is-succ!2410 (plus!237_arg_0_4 ?j)) (succ!2410 (plus!237 (ite (is-succ!2410 (plus!237_arg_0_4 ?j)) (pred!2411 (plus!237_arg_0_4 ?j)) (pred!2411_uf_1 (plus!237_arg_0_4 ?j))) (plus!237_arg_1_5 ?j))) error_value!2418))) )
+(forall ((?i I_plus!237)) (ite (is-zero!2412 (plus!237_arg_0_4 ?i)) true (ite (is-succ!2410 (plus!237_arg_0_4 ?i)) (not (forall ((?z I_plus!237)) (or (not (= (plus!237_arg_0_4 ?z) (ite (is-succ!2410 (plus!237_arg_0_4 ?i)) (pred!2411 (plus!237_arg_0_4 ?i)) (pred!2411_uf_1 (plus!237_arg_0_4 ?i))))) (not (= (plus!237_arg_1_5 ?z) (plus!237_arg_1_5 ?i)))) )) true)) )
+(forall ((?i I_count!263)) (= (count!263 (count!263_arg_0_6 ?i) (count!263_arg_1_7 ?i)) (ite (is-nil!2417 (count!263_arg_1_7 ?i)) zero!2412 (ite (is-cons!2414 (count!263_arg_1_7 ?i)) (ite (= (count!263_arg_0_6 ?i) (ite (is-cons!2414 (count!263_arg_1_7 ?i)) (head!2415 (count!263_arg_1_7 ?i)) (head!2415_uf_3 (count!263_arg_1_7 ?i)))) (succ!2410 (count!263 (count!263_arg_0_6 ?i) (ite (is-cons!2414 (count!263_arg_1_7 ?i)) (tail!2416 (count!263_arg_1_7 ?i)) (tail!2416_uf_2 (count!263_arg_1_7  [...]
+(forall ((?j I_count!263)) (ite (is-nil!2417 (count!263_arg_1_7 ?j)) true (ite (is-cons!2414 (count!263_arg_1_7 ?j)) (ite (= (count!263_arg_0_6 ?j) (ite (is-cons!2414 (count!263_arg_1_7 ?j)) (head!2415 (count!263_arg_1_7 ?j)) (head!2415_uf_3 (count!263_arg_1_7 ?j)))) (not (forall ((?z I_count!263)) (or (not (= (count!263_arg_0_6 ?z) (count!263_arg_0_6 ?j))) (not (= (count!263_arg_1_7 ?z) (ite (is-cons!2414 (count!263_arg_1_7 ?j)) (tail!2416 (count!263_arg_1_7 ?j)) (tail!2416_uf_2 (count! [...]
+)
+)
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/fuzz_1.smt b/test/regress/regress0/fuzz_1.smt
new file mode 100644
index 0000000..22cdd23
--- /dev/null
+++ b/test/regress/regress0/fuzz_1.smt
@@ -0,0 +1,32 @@
+(benchmark fuzzsmt
+:logic QF_LRA
+:status unsat
+:extrafuns ((v0 Real))
+:formula
+(let (?e1 11)
+(let (?e2 1)
+(let (?e3 (* v0 ?e2))
+(let (?e4 (/ ?e1 (~ ?e1)))
+(flet ($e5 (< v0 ?e4))
+(flet ($e6 (< ?e3 ?e3))
+(let (?e7 (ite $e5 ?e3 ?e4))
+(let (?e8 (ite $e5 ?e3 ?e3))
+(let (?e9 (ite $e6 v0 ?e4))
+(flet ($e10 (< ?e3 ?e7))
+(flet ($e11 (< v0 ?e9))
+(flet ($e12 (= ?e8 ?e4))
+(flet ($e13 (and $e10 $e6))
+(flet ($e14 (implies $e12 $e5))
+(flet ($e15 (iff $e14 $e14))
+(flet ($e16 (iff $e11 $e11))
+(flet ($e17 (iff $e16 $e16))
+(flet ($e18 (not $e13))
+(flet ($e19 (or $e18 $e18))
+(flet ($e20 (if_then_else $e15 $e15 $e17))
+(flet ($e21 (not $e20))
+(flet ($e22 (not $e19))
+(flet ($e23 (xor $e21 $e21))
+(flet ($e24 (xor $e23 $e22))
+$e24
+)))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/fuzz_3.smt b/test/regress/regress0/fuzz_3.smt
new file mode 100644
index 0000000..e1c53d2
--- /dev/null
+++ b/test/regress/regress0/fuzz_3.smt
@@ -0,0 +1,46 @@
+(benchmark fuzzsmt
+:logic QF_LRA
+:extrafuns ((v0 Real))
+:extrafuns ((v2 Real))
+:extrafuns ((v1 Real))
+:status sat
+:formula
+(let (?n1 2)
+(let (?n2 (* ?n1 ?n1))
+(let (?n3 (~ v0))
+(let (?n4 (* ?n1 ?n3))
+(let (?n5 (- ?n1 ?n1))
+(let (?n6 (- ?n5 v0))
+(let (?n7 (- ?n4 ?n6))
+(flet ($n8 (= ?n2 ?n7))
+(flet ($n9 false)
+(let (?n10 (ite $n9 ?n1 v1))
+(let (?n11 (+ ?n1 v2))
+(flet ($n12 (<= ?n10 ?n11))
+(let (?n13 (ite $n9 v0 ?n2))
+(let (?n14 (~ ?n1))
+(let (?n15 (ite $n9 ?n14 ?n1))
+(flet ($n16 (< ?n13 ?n15))
+(flet ($n17 (= ?n1 ?n7))
+(let (?n18 (+ ?n1 ?n1))
+(flet ($n19 (= v2 ?n18))
+(let (?n20 (ite $n19 v2 ?n1))
+(let (?n21 (ite $n17 ?n18 ?n20))
+(flet ($n22 (>= ?n21 ?n2))
+(let (?n23 (ite $n9 ?n21 ?n2))
+(flet ($n24 (<= ?n23 ?n1))
+(flet ($n25 (> ?n7 ?n2))
+(flet ($n26 (iff $n24 $n25))
+(let (?n27 (~ ?n7))
+(flet ($n28 (<= ?n27 ?n1))
+(let (?n29 (ite $n28 ?n1 ?n1))
+(flet ($n30 (< ?n1 ?n29))
+(flet ($n31 (implies $n26 $n30))
+(flet ($n32 (implies $n9 $n9))
+(flet ($n33 (if_then_else $n22 $n31 $n32))
+(flet ($n34 (and $n9 $n33))
+(flet ($n35 (if_then_else $n16 $n34 $n9))
+(flet ($n36 (iff $n12 $n35))
+(flet ($n37 (and $n8 $n36))
+$n37
+))))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/get-value-incremental.smt2 b/test/regress/regress0/get-value-incremental.smt2
new file mode 100644
index 0000000..c45cced
--- /dev/null
+++ b/test/regress/regress0/get-value-incremental.smt2
@@ -0,0 +1,13 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: (((f 0) 1))
+(set-info :smt-lib-version 2.0)
+(set-option :produce-models true)
+(set-logic QF_UFLIA)
+
+(declare-fun f (Int) Int)
+(assert (= (f 0) 1))
+(check-sat)
+(get-value ((f 0)))
+; add a "push" just to double-check that incremental mode is on
+(push)
diff --git a/test/regress/regress0/get-value-ints.smt2 b/test/regress/regress0/get-value-ints.smt2
new file mode 100644
index 0000000..4497b7a
--- /dev/null
+++ b/test/regress/regress0/get-value-ints.smt2
@@ -0,0 +1,19 @@
+; COMMAND-LINE:
+; EXPECT: sat
+; EXPECT: ((pos 1) (zero 0) (neg (- 6)))
+(set-info :smt-lib-version 2.0)
+(set-option :produce-models true)
+(set-logic QF_LIA)
+
+; This output changes if the smt2 printer output for Ints changes.
+
+(declare-fun pos () Int)
+(declare-fun zero () Int)
+(declare-fun neg () Int)
+
+(assert (= pos 1))
+(assert (= zero 0))
+(assert (= neg (- 6)))
+
+(check-sat)
+(get-value (pos zero neg))
diff --git a/test/regress/regress0/get-value-reals-ints.smt2 b/test/regress/regress0/get-value-reals-ints.smt2
new file mode 100644
index 0000000..53337c5
--- /dev/null
+++ b/test/regress/regress0/get-value-reals-ints.smt2
@@ -0,0 +1,27 @@
+; COMMAND-LINE:
+; EXPECT: sat
+; EXPECT: ((pos_int 5) (pos_real_int_value 3.0) (pos_rat (/ 1 3)) (zero 0.0) (neg_rat (- (/ 2 3))) (neg_real_int_value (- 2.0)) (neg_int (- 6)))
+(set-info :smt-lib-version 2.0)
+(set-option :produce-models true)
+(set-logic QF_LIRA)
+
+; This output changes if the smt2 printer output for Reals_Ints changes.
+
+(declare-fun pos_int () Int)
+(declare-fun pos_real_int_value () Real)
+(declare-fun pos_rat () Real)
+(declare-fun zero () Real)
+(declare-fun neg_rat () Real)
+(declare-fun neg_real_int_value () Real)
+(declare-fun neg_int () Int)
+
+(assert (= pos_int 5))
+(assert (= pos_real_int_value 3))
+(assert (= pos_rat (/ 1 3)))
+(assert (= zero 0))
+(assert (= neg_rat (/ (- 2) 3)))
+(assert (= neg_real_int_value (- 2)))
+(assert (= neg_int (- 6)))
+
+(check-sat)
+(get-value (pos_int pos_real_int_value pos_rat zero neg_rat neg_real_int_value neg_int))
\ No newline at end of file
diff --git a/test/regress/regress0/get-value-reals.smt2 b/test/regress/regress0/get-value-reals.smt2
new file mode 100644
index 0000000..4876701
--- /dev/null
+++ b/test/regress/regress0/get-value-reals.smt2
@@ -0,0 +1,22 @@
+; COMMAND-LINE:
+; EXPECT: sat
+; EXPECT: ((pos_int 3.0) (pos_rat (/ 1 3)) (zero 0.0) (neg_rat (- (/ 2 3))) (neg_int (- 2.0)))
+(set-info :smt-lib-version 2.0)
+(set-option :produce-models true)
+(set-logic QF_LRA)
+
+; This output changes if the smt2 printer output for Reals changes.
+(declare-fun pos_int () Real)
+(declare-fun pos_rat () Real)
+(declare-fun zero () Real)
+(declare-fun neg_rat () Real)
+(declare-fun neg_int () Real)
+
+(assert (= pos_int 3))
+(assert (= pos_rat (/ 1 3)))
+(assert (= zero 0))
+(assert (= neg_rat (/ (- 2) 3)))
+(assert (= neg_int (- 2)))
+
+(check-sat)
+(get-value (pos_int pos_rat zero neg_rat neg_int))
\ No newline at end of file
diff --git a/test/regress/regress0/hole6.cvc b/test/regress/regress0/hole6.cvc
new file mode 100644
index 0000000..dfa9b72
--- /dev/null
+++ b/test/regress/regress0/hole6.cvc
@@ -0,0 +1,179 @@
+% EXPECT: valid
+x_1 : BOOLEAN;
+x_2 : BOOLEAN;
+x_3 : BOOLEAN;
+x_4 : BOOLEAN;
+x_5 : BOOLEAN;
+x_6 : BOOLEAN;
+x_7 : BOOLEAN;
+x_8 : BOOLEAN;
+x_9 : BOOLEAN;
+x_10 : BOOLEAN;
+x_11 : BOOLEAN;
+x_12 : BOOLEAN;
+x_13 : BOOLEAN;
+x_14 : BOOLEAN;
+x_15 : BOOLEAN;
+x_16 : BOOLEAN;
+x_17 : BOOLEAN;
+x_18 : BOOLEAN;
+x_19 : BOOLEAN;
+x_20 : BOOLEAN;
+x_21 : BOOLEAN;
+x_22 : BOOLEAN;
+x_23 : BOOLEAN;
+x_24 : BOOLEAN;
+x_25 : BOOLEAN;
+x_26 : BOOLEAN;
+x_27 : BOOLEAN;
+x_28 : BOOLEAN;
+x_29 : BOOLEAN;
+x_30 : BOOLEAN;
+x_31 : BOOLEAN;
+x_32 : BOOLEAN;
+x_33 : BOOLEAN;
+x_34 : BOOLEAN;
+x_35 : BOOLEAN;
+x_36 : BOOLEAN;
+x_37 : BOOLEAN;
+x_38 : BOOLEAN;
+x_39 : BOOLEAN;
+x_40 : BOOLEAN;
+x_41 : BOOLEAN;
+x_42 : BOOLEAN;
+ASSERT NOT x_1 OR NOT x_7;
+ASSERT NOT x_1 OR NOT x_13;
+ASSERT NOT x_1 OR NOT x_19;
+ASSERT NOT x_1 OR NOT x_25;
+ASSERT NOT x_1 OR NOT x_31;
+ASSERT NOT x_1 OR NOT x_37;
+ASSERT NOT x_7 OR NOT x_13;
+ASSERT NOT x_7 OR NOT x_19;
+ASSERT NOT x_7 OR NOT x_25;
+ASSERT NOT x_7 OR NOT x_31;
+ASSERT NOT x_7 OR NOT x_37;
+ASSERT NOT x_13 OR NOT x_19;
+ASSERT NOT x_13 OR NOT x_25;
+ASSERT NOT x_13 OR NOT x_31;
+ASSERT NOT x_13 OR NOT x_37;
+ASSERT NOT x_19 OR NOT x_25;
+ASSERT NOT x_19 OR NOT x_31;
+ASSERT NOT x_19 OR NOT x_37;
+ASSERT NOT x_25 OR NOT x_31;
+ASSERT NOT x_25 OR NOT x_37;
+ASSERT NOT x_31 OR NOT x_37;
+ASSERT NOT x_2 OR NOT x_8;
+ASSERT NOT x_2 OR NOT x_14;
+ASSERT NOT x_2 OR NOT x_20;
+ASSERT NOT x_2 OR NOT x_26;
+ASSERT NOT x_2 OR NOT x_32;
+ASSERT NOT x_2 OR NOT x_38;
+ASSERT NOT x_8 OR NOT x_14;
+ASSERT NOT x_8 OR NOT x_20;
+ASSERT NOT x_8 OR NOT x_26;
+ASSERT NOT x_8 OR NOT x_32;
+ASSERT NOT x_8 OR NOT x_38;
+ASSERT NOT x_14 OR NOT x_20;
+ASSERT NOT x_14 OR NOT x_26;
+ASSERT NOT x_14 OR NOT x_32;
+ASSERT NOT x_14 OR NOT x_38;
+ASSERT NOT x_20 OR NOT x_26;
+ASSERT NOT x_20 OR NOT x_32;
+ASSERT NOT x_20 OR NOT x_38;
+ASSERT NOT x_26 OR NOT x_32;
+ASSERT NOT x_26 OR NOT x_38;
+ASSERT NOT x_32 OR NOT x_38;
+ASSERT NOT x_3 OR NOT x_9;
+ASSERT NOT x_3 OR NOT x_15;
+ASSERT NOT x_3 OR NOT x_21;
+ASSERT NOT x_3 OR NOT x_27;
+ASSERT NOT x_3 OR NOT x_33;
+ASSERT NOT x_3 OR NOT x_39;
+ASSERT NOT x_9 OR NOT x_15;
+ASSERT NOT x_9 OR NOT x_21;
+ASSERT NOT x_9 OR NOT x_27;
+ASSERT NOT x_9 OR NOT x_33;
+ASSERT NOT x_9 OR NOT x_39;
+ASSERT NOT x_15 OR NOT x_21;
+ASSERT NOT x_15 OR NOT x_27;
+ASSERT NOT x_15 OR NOT x_33;
+ASSERT NOT x_15 OR NOT x_39;
+ASSERT NOT x_21 OR NOT x_27;
+ASSERT NOT x_21 OR NOT x_33;
+ASSERT NOT x_21 OR NOT x_39;
+ASSERT NOT x_27 OR NOT x_33;
+ASSERT NOT x_27 OR NOT x_39;
+ASSERT NOT x_33 OR NOT x_39;
+ASSERT NOT x_4 OR NOT x_10;
+ASSERT NOT x_4 OR NOT x_16;
+ASSERT NOT x_4 OR NOT x_22;
+ASSERT NOT x_4 OR NOT x_28;
+ASSERT NOT x_4 OR NOT x_34;
+ASSERT NOT x_4 OR NOT x_40;
+ASSERT NOT x_10 OR NOT x_16;
+ASSERT NOT x_10 OR NOT x_22;
+ASSERT NOT x_10 OR NOT x_28;
+ASSERT NOT x_10 OR NOT x_34;
+ASSERT NOT x_10 OR NOT x_40;
+ASSERT NOT x_16 OR NOT x_22;
+ASSERT NOT x_16 OR NOT x_28;
+ASSERT NOT x_16 OR NOT x_34;
+ASSERT NOT x_16 OR NOT x_40;
+ASSERT NOT x_22 OR NOT x_28;
+ASSERT NOT x_22 OR NOT x_34;
+ASSERT NOT x_22 OR NOT x_40;
+ASSERT NOT x_28 OR NOT x_34;
+ASSERT NOT x_28 OR NOT x_40;
+ASSERT NOT x_34 OR NOT x_40;
+ASSERT NOT x_5 OR NOT x_11;
+ASSERT NOT x_5 OR NOT x_17;
+ASSERT NOT x_5 OR NOT x_23;
+ASSERT NOT x_5 OR NOT x_29;
+ASSERT NOT x_5 OR NOT x_35;
+ASSERT NOT x_5 OR NOT x_41;
+ASSERT NOT x_11 OR NOT x_17;
+ASSERT NOT x_11 OR NOT x_23;
+ASSERT NOT x_11 OR NOT x_29;
+ASSERT NOT x_11 OR NOT x_35;
+ASSERT NOT x_11 OR NOT x_41;
+ASSERT NOT x_17 OR NOT x_23;
+ASSERT NOT x_17 OR NOT x_29;
+ASSERT NOT x_17 OR NOT x_35;
+ASSERT NOT x_17 OR NOT x_41;
+ASSERT NOT x_23 OR NOT x_29;
+ASSERT NOT x_23 OR NOT x_35;
+ASSERT NOT x_23 OR NOT x_41;
+ASSERT NOT x_29 OR NOT x_35;
+ASSERT NOT x_29 OR NOT x_41;
+ASSERT NOT x_35 OR NOT x_41;
+ASSERT NOT x_6 OR NOT x_12;
+ASSERT NOT x_6 OR NOT x_18;
+ASSERT NOT x_6 OR NOT x_24;
+ASSERT NOT x_6 OR NOT x_30;
+ASSERT NOT x_6 OR NOT x_36;
+ASSERT NOT x_6 OR NOT x_42;
+ASSERT NOT x_12 OR NOT x_18;
+ASSERT NOT x_12 OR NOT x_24;
+ASSERT NOT x_12 OR NOT x_30;
+ASSERT NOT x_12 OR NOT x_36;
+ASSERT NOT x_12 OR NOT x_42;
+ASSERT NOT x_18 OR NOT x_24;
+ASSERT NOT x_18 OR NOT x_30;
+ASSERT NOT x_18 OR NOT x_36;
+ASSERT NOT x_18 OR NOT x_42;
+ASSERT NOT x_24 OR NOT x_30;
+ASSERT NOT x_24 OR NOT x_36;
+ASSERT NOT x_24 OR NOT x_42;
+ASSERT NOT x_30 OR NOT x_36;
+ASSERT NOT x_30 OR NOT x_42;
+ASSERT NOT x_36 OR NOT x_42;
+ASSERT x_6 OR x_5 OR x_4 OR x_3 OR x_2 OR x_1;
+ASSERT x_12 OR x_11 OR x_10 OR x_9 OR x_8 OR x_7;
+ASSERT x_18 OR x_17 OR x_16 OR x_15 OR x_14 OR x_13;
+ASSERT x_24 OR x_23 OR x_22 OR x_21 OR x_20 OR x_19;
+ASSERT x_30 OR x_29 OR x_28 OR x_27 OR x_26 OR x_25;
+ASSERT x_36 OR x_35 OR x_34 OR x_33 OR x_32 OR x_31;
+ASSERT x_42 OR x_41 OR x_40 OR x_39 OR x_38 OR x_37;
+
+
+QUERY FALSE;
diff --git a/test/regress/regress0/hung10_itesdk_output1.smt2 b/test/regress/regress0/hung10_itesdk_output1.smt2
new file mode 100644
index 0000000..8bcdfdf
--- /dev/null
+++ b/test/regress/regress0/hung10_itesdk_output1.smt2
@@ -0,0 +1,30 @@
+( set-logic QF_ALL_SUPPORTED)
+( set-info :source | SMT-COMP'06 organizers |)
+( set-info :smt-lib-version 2.0)
+( set-info :category "check")
+( set-info :status sat)
+( declare-fun x1 () Bool)
+( declare-fun x2 () Real)
+( declare-fun x3 () Real)
+( declare-fun x4 () Bool)
+( declare-fun x5 () Real)
+( declare-fun x6 () Real)
+( declare-fun x7 () Real)
+( declare-fun x8 () Real)
+( declare-fun bo1 () Bool)
+( declare-fun bo2 () Bool)
+( declare-fun bo3 () Bool)
+( declare-fun r1 () Real)
+( declare-fun r2 () Real)
+( declare-fun r3 () Real)
+( define-fun myBoolIte ( ( a Real) ( b Bool) ( c Bool)) Bool
+  ( ite ( > a 0.0) b c))
+( define-fun myRealIte ( ( a1 Bool) ( b1 Real) ( c1 Real)) Real
+  ( ite a1 b1 c1))
+( declare-fun f ( Real Bool) Real)
+( declare-fun fRealRealReal ( Real Real) Real)
+( declare-fun fRealReal ( Real) Real)
+( declare-fun fReal () Real)
+( assert ( = 4.0 ( + fReal ( myRealIte x1 x2 x3))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/hung10_itesdk_output2.smt2 b/test/regress/regress0/hung10_itesdk_output2.smt2
new file mode 100644
index 0000000..8bcdfdf
--- /dev/null
+++ b/test/regress/regress0/hung10_itesdk_output2.smt2
@@ -0,0 +1,30 @@
+( set-logic QF_ALL_SUPPORTED)
+( set-info :source | SMT-COMP'06 organizers |)
+( set-info :smt-lib-version 2.0)
+( set-info :category "check")
+( set-info :status sat)
+( declare-fun x1 () Bool)
+( declare-fun x2 () Real)
+( declare-fun x3 () Real)
+( declare-fun x4 () Bool)
+( declare-fun x5 () Real)
+( declare-fun x6 () Real)
+( declare-fun x7 () Real)
+( declare-fun x8 () Real)
+( declare-fun bo1 () Bool)
+( declare-fun bo2 () Bool)
+( declare-fun bo3 () Bool)
+( declare-fun r1 () Real)
+( declare-fun r2 () Real)
+( declare-fun r3 () Real)
+( define-fun myBoolIte ( ( a Real) ( b Bool) ( c Bool)) Bool
+  ( ite ( > a 0.0) b c))
+( define-fun myRealIte ( ( a1 Bool) ( b1 Real) ( c1 Real)) Real
+  ( ite a1 b1 c1))
+( declare-fun f ( Real Bool) Real)
+( declare-fun fRealRealReal ( Real Real) Real)
+( declare-fun fRealReal ( Real) Real)
+( declare-fun fReal () Real)
+( assert ( = 4.0 ( + fReal ( myRealIte x1 x2 x3))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/hung13sdk_output1.smt2 b/test/regress/regress0/hung13sdk_output1.smt2
new file mode 100644
index 0000000..bf3ab9a
--- /dev/null
+++ b/test/regress/regress0/hung13sdk_output1.smt2
@@ -0,0 +1,14 @@
+( set-logic QF_ALL_SUPPORTED)
+( set-info :source | SMT-COMP'06 organizers |)
+( set-info :smt-lib-version 2.0)
+( set-info :category "check")
+( set-info :status sat)
+( declare-fun x1 () Bool)
+( declare-fun x2 () Real)
+( declare-fun x3 () Real)
+( define-fun myRealIte ( ( a1 Bool) ( b1 Real) ( c1 Real)) Real
+  ( ite a1 b1 c1))
+( declare-fun fReal () Real)
+( assert ( = 4.0 ( + fReal ( myRealIte x1 x2 x3))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/hung13sdk_output2.smt2 b/test/regress/regress0/hung13sdk_output2.smt2
new file mode 100644
index 0000000..bf3ab9a
--- /dev/null
+++ b/test/regress/regress0/hung13sdk_output2.smt2
@@ -0,0 +1,14 @@
+( set-logic QF_ALL_SUPPORTED)
+( set-info :source | SMT-COMP'06 organizers |)
+( set-info :smt-lib-version 2.0)
+( set-info :category "check")
+( set-info :status sat)
+( declare-fun x1 () Bool)
+( declare-fun x2 () Real)
+( declare-fun x3 () Real)
+( define-fun myRealIte ( ( a1 Bool) ( b1 Real) ( c1 Real)) Real
+  ( ite a1 b1 c1))
+( declare-fun fReal () Real)
+( assert ( = 4.0 ( + fReal ( myRealIte x1 x2 x3))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/ineq_basic.smt b/test/regress/regress0/ineq_basic.smt
new file mode 100644
index 0000000..ba4cb8b
--- /dev/null
+++ b/test/regress/regress0/ineq_basic.smt
@@ -0,0 +1,9 @@
+(benchmark ineq_basic
+:status unsat
+:logic QF_LRA
+:extrafuns ((x Real))
+:formula
+ (and (<= 0 x)
+      (< x 0)
+ )
+)
diff --git a/test/regress/regress0/ineq_slack.smt b/test/regress/regress0/ineq_slack.smt
new file mode 100644
index 0000000..b3d79c5
--- /dev/null
+++ b/test/regress/regress0/ineq_slack.smt
@@ -0,0 +1,11 @@
+(benchmark ineq_basic
+:status unsat
+:logic QF_LRA
+:extrafuns ((x Real))
+:extrafuns ((y Real))
+:formula
+ (and (<= (+ x y) 0)
+      (< 1 x)
+      (<= 0 y)
+ )
+)
diff --git a/test/regress/regress0/ite.cvc b/test/regress/regress0/ite.cvc
new file mode 100644
index 0000000..adb2cb0
--- /dev/null
+++ b/test/regress/regress0/ite.cvc
@@ -0,0 +1,3 @@
+% EXPECT: unsat
+x, y : REAL;
+CHECKSAT (NOT (x = IF TRUE THEN x ELSE y ENDIF));
diff --git a/test/regress/regress0/ite2.smt2 b/test/regress/regress0/ite2.smt2
new file mode 100644
index 0000000..ada9453
--- /dev/null
+++ b/test/regress/regress0/ite2.smt2
@@ -0,0 +1,6 @@
+(set-logic QF_LRA)
+(set-info :status sat)
+(declare-fun x () Real)
+(declare-fun y () Real)
+(assert (not (= x (ite true y x))))
+(check-sat)
diff --git a/test/regress/regress0/ite3.smt2 b/test/regress/regress0/ite3.smt2
new file mode 100644
index 0000000..b3c4f3e
--- /dev/null
+++ b/test/regress/regress0/ite3.smt2
@@ -0,0 +1,8 @@
+(set-logic QF_UF)
+(set-info :status unsat)
+(declare-sort U 0)
+(declare-fun x () U)
+(declare-fun y () U)
+(declare-fun a () Bool)
+(assert (not (= x (ite a (ite a x y) (ite (not a) x y)))))
+(check-sat)
diff --git a/test/regress/regress0/ite4.smt2 b/test/regress/regress0/ite4.smt2
new file mode 100644
index 0000000..c1c41f4
--- /dev/null
+++ b/test/regress/regress0/ite4.smt2
@@ -0,0 +1,8 @@
+(set-logic QF_UF)
+(set-info :status sat)
+(declare-sort U 0)
+(declare-fun x () U)
+(declare-fun y () U)
+(declare-fun a () Bool)
+(assert (not (= x (ite a (ite a x y) (ite (not a) y x)))))
+(check-sat)
diff --git a/test/regress/regress0/ite5.smt2 b/test/regress/regress0/ite5.smt2
new file mode 100644
index 0000000..e3d2bc9
--- /dev/null
+++ b/test/regress/regress0/ite5.smt2
@@ -0,0 +1,8 @@
+(set-logic QF_AUFBV )
+(set-info :status sat)
+(declare-fun arr0 () (Array (_ BitVec 32) (_ BitVec 8) ) )
+(declare-fun arr1 () (Array (_ BitVec 32) (_ BitVec 8) ) )
+(declare-fun arr2 () (Array (_ BitVec 32) (_ BitVec 8) ) )
+(assert (bvult (ite (bvult (_ bv0 1) ((_ extract 0 0) (select arr1 (_ bv0 32)))) (concat (select arr0 (_ bv7 32)) (select arr0 (_ bv6 32)) (select arr0 (_ bv5 32)) (select arr0 (_ bv4 32)) (select arr0 (_ bv3 32)) (select arr0 (_ bv2 32)) (select arr0 (_ bv1 32)) (select arr0 (_ bv0 32))) (concat (_ bv0 57) ((_ extract 7 1) (select arr2 (_ bv0 32))))) (_ bv1 64) ))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/ite_real_int_type.smt b/test/regress/regress0/ite_real_int_type.smt
new file mode 100644
index 0000000..5141a0b
--- /dev/null
+++ b/test/regress/regress0/ite_real_int_type.smt
@@ -0,0 +1,8 @@
+(benchmark ite_real_int_type
+:logic QF_LRA
+:status sat
+:extrafuns ((x Real))
+:extrafuns ((y Real))
+:formula
+  (and (= 0 (ite true x 1)) (= 0 (ite (= x 0) 0 1)) (= x  (ite true y 0)) (= 0 (ite true 0 0)) )
+)
diff --git a/test/regress/regress0/ite_real_valid.smt b/test/regress/regress0/ite_real_valid.smt
new file mode 100644
index 0000000..eeaaa17
--- /dev/null
+++ b/test/regress/regress0/ite_real_valid.smt
@@ -0,0 +1,8 @@
+(benchmark ite_real_valid
+:logic QF_LRA
+:status unsat
+:extrafuns ((x Real))
+:extrapreds ((b))
+:formula
+  (not (implies (= x (ite b 0 1)) (>= x 0)))
+)
diff --git a/test/regress/regress0/lemmas/Makefile.am b/test/regress/regress0/lemmas/Makefile.am
new file mode 100644
index 0000000..89f9d83
--- /dev/null
+++ b/test/regress/regress0/lemmas/Makefile.am
@@ -0,0 +1,41 @@
+SUBDIRS = . 
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+
+# Regression tests for SMT inputs
+SMT_TESTS = \
+	clocksynchro_5clocks.main_invar.base.model.smt \
+	sc_init_frame_gap.induction.smt \
+	mode_cntrl.induction.smt \
+	fs_not_sc_seen.induction.smt
+
+TESTS =	$(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(BUG_TESTS)
+
+EXTRA_DIST = $(TESTS)
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/lemmas/Makefile.in b/test/regress/regress0/lemmas/Makefile.in
new file mode 100644
index 0000000..6c1ceaf
--- /dev/null
+++ b/test/regress/regress0/lemmas/Makefile.in
@@ -0,0 +1,1194 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+TESTS = $(SMT_TESTS)
+subdir = test/regress/regress0/lemmas
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+SUBDIRS = . 
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+
+# Regression tests for SMT inputs
+SMT_TESTS = \
+	clocksynchro_5clocks.main_invar.base.model.smt \
+	sc_init_frame_gap.induction.smt \
+	mode_cntrl.induction.smt \
+	fs_not_sc_seen.induction.smt
+
+EXTRA_DIST = $(TESTS)
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/lemmas/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/lemmas/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+clocksynchro_5clocks.main_invar.base.model.smt.log: clocksynchro_5clocks.main_invar.base.model.smt
+	@p='clocksynchro_5clocks.main_invar.base.model.smt'; \
+	b='clocksynchro_5clocks.main_invar.base.model.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sc_init_frame_gap.induction.smt.log: sc_init_frame_gap.induction.smt
+	@p='sc_init_frame_gap.induction.smt'; \
+	b='sc_init_frame_gap.induction.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mode_cntrl.induction.smt.log: mode_cntrl.induction.smt
+	@p='mode_cntrl.induction.smt'; \
+	b='mode_cntrl.induction.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fs_not_sc_seen.induction.smt.log: fs_not_sc_seen.induction.smt
+	@p='fs_not_sc_seen.induction.smt'; \
+	b='fs_not_sc_seen.induction.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/lemmas/clocksynchro_5clocks.main_invar.base.model.smt b/test/regress/regress0/lemmas/clocksynchro_5clocks.main_invar.base.model.smt
new file mode 100644
index 0000000..edbff71
--- /dev/null
+++ b/test/regress/regress0/lemmas/clocksynchro_5clocks.main_invar.base.model.smt
@@ -0,0 +1,533 @@
+(benchmark clock_synchro
+  :source { Clock Synchronization. Bruno Dutertre (bruno at csl.sri.com) }
+  :status unsat
+  :category { industrial }
+  :difficulty { 0 }
+  :logic QF_LRA
+  
+  :extrafuns ((x_0 Real))
+  :extrafuns ((x_1 Real))
+  :extrafuns ((x_2 Real))
+  :extrafuns ((x_3 Real))
+  :extrafuns ((x_4 Real))
+  :extrafuns ((x_5 Real))
+  :extrafuns ((x_6 Real))
+  :extrafuns ((x_7 Real))
+  :extrafuns ((x_8 Real))
+  :extrafuns ((x_9 Real))
+  :extrafuns ((x_10 Real))
+  :extrafuns ((x_11 Real))
+  :extrafuns ((x_12 Real))
+  :extrafuns ((x_13 Real))
+  :extrafuns ((x_14 Real))
+  :extrafuns ((x_15 Real))
+  :extrafuns ((x_16 Real))
+  :extrafuns ((x_17 Real))
+  :extrafuns ((x_18 Real))
+  :extrafuns ((x_19 Real))
+  :extrafuns ((x_20 Real))
+  :extrafuns ((x_21 Real))
+  :extrafuns ((x_22 Real))
+  :extrafuns ((x_23 Real))
+  :extrafuns ((x_24 Real))
+  :extrafuns ((x_25 Real))
+  :extrafuns ((x_26 Real))
+  :extrafuns ((x_27 Real))
+  :extrafuns ((x_28 Real))
+  :extrafuns ((x_29 Real))
+  :extrafuns ((x_30 Real))
+  :extrafuns ((x_31 Real))
+  :extrafuns ((x_32 Real))
+  :extrafuns ((x_33 Real))
+  :extrafuns ((x_34 Real))
+  :extrafuns ((x_35 Real))
+  :extrafuns ((x_36 Real))
+  :extrafuns ((x_37 Real))
+  :extrafuns ((x_38 Real))
+  :extrafuns ((x_39 Real))
+  :extrafuns ((x_40 Real))
+  :extrafuns ((x_41 Real))
+  :extrafuns ((x_42 Real))
+  :extrafuns ((x_43 Real))
+  :extrafuns ((x_44 Real))
+  :extrafuns ((x_45 Real))
+  :extrafuns ((x_46 Real))
+  :extrafuns ((x_47 Real))
+  :extrafuns ((x_48 Real))
+  :extrafuns ((x_49 Real))
+  :extrafuns ((x_50 Real))
+  :extrafuns ((x_51 Real))
+  :extrafuns ((x_52 Real))
+  :extrafuns ((x_53 Real))
+  :extrafuns ((x_54 Real))
+  :extrafuns ((x_55 Real))
+  :extrafuns ((x_56 Real))
+  :extrafuns ((x_57 Real))
+  :extrafuns ((x_58 Real))
+  :extrafuns ((x_59 Real))
+  :extrafuns ((x_60 Real))
+  :extrafuns ((x_61 Real))
+  :extrafuns ((x_62 Real))
+  :extrafuns ((x_63 Real))
+  :extrafuns ((x_64 Real))
+  :extrafuns ((x_65 Real))
+  :extrafuns ((x_66 Real))
+  :extrafuns ((x_67 Real))
+  :extrafuns ((x_68 Real))
+  :extrafuns ((x_69 Real))
+  :extrafuns ((x_70 Real))
+  :extrafuns ((x_71 Real))
+  :extrafuns ((x_72 Real))
+  :extrafuns ((x_73 Real))
+  :extrafuns ((x_74 Real))
+  :extrafuns ((x_75 Real))
+  :extrafuns ((x_76 Real))
+  :extrafuns ((x_77 Real))
+  :extrafuns ((x_78 Real))
+  :extrafuns ((x_79 Real))
+  :extrafuns ((x_80 Real))
+  :extrafuns ((x_81 Real))
+  :extrafuns ((x_82 Real))
+  :extrafuns ((x_83 Real))
+  :extrafuns ((x_84 Real))
+
+:assumption (=x_76 1)
+:assumption (=x_76 1)
+:assumption (=x_0 0)
+:assumption (=x_0 0)
+:assumption (not (<= x_6 0))
+:assumption (not (<= x_7 0))
+:assumption (=x_70 1)
+:assumption (=x_70 1)
+:assumption (=x_75 1)
+:assumption (=x_75 1)
+:assumption (=x_69 1)
+:assumption (=x_69 1)
+:assumption (=x_74 1)
+:assumption (=x_74 1)
+:assumption (=x_68 1)
+:assumption (=x_68 1)
+:assumption (=x_38 1)
+:assumption (=x_38 1)
+:assumption (not (<= x_44 0))
+:assumption (=x_73 1)
+:assumption (=x_73 1)
+:assumption (=x_67 1)
+:assumption (=x_67 1)
+:assumption (=x_72 1)
+:assumption (=x_72 1)
+:assumption (=x_66 1)
+:assumption (=x_66 1)
+:assumption (=x_65 1)
+:assumption (=x_65 1)
+:assumption (=x_60 1)
+:assumption (=x_60 1)
+:assumption (=x_64 1)
+:assumption (=x_64 1)
+:assumption (=x_55 1)
+:assumption (=x_55 1)
+:assumption (=x_63 1)
+:assumption (=x_63 1)
+:assumption (=x_36 1)
+:assumption (=x_36 1)
+:assumption (=x_50 1)
+:assumption (=x_50 1)
+:assumption (=x_62 1)
+:assumption (=x_62 1)
+:assumption (=x_35 1)
+:assumption (=x_35 1)
+:assumption (=x_61 1)
+:assumption (=x_61 1)
+:assumption (=x_34 1)
+:assumption (=x_34 1)
+:assumption (=x_59 1)
+:assumption (=x_59 1)
+:assumption (=x_40 1)
+:assumption (=x_40 1)
+:assumption (=x_54 1)
+:assumption (=x_54 1)
+:assumption (not (<= x_84 0))
+:assumption (=x_58 1)
+:assumption (=x_58 1)
+:assumption (=x_49 1)
+:assumption (=x_49 1)
+:assumption (=x_57 1)
+:assumption (=x_57 1)
+:assumption (=x_56 1)
+:assumption (=x_56 1)
+:assumption (>= x_82 0)
+:assumption (=x_53 1)
+:assumption (=x_53 1)
+:assumption (=x_48 1)
+:assumption (=x_48 1)
+:assumption (=x_52 1)
+:assumption (=x_52 1)
+:assumption (=x_51 1)
+:assumption (=x_51 1)
+:assumption (=x_47 1)
+:assumption (=x_47 1)
+:assumption (=x_46 1)
+:assumption (=x_46 1)
+:assumption (=x_14 0)
+:assumption (=x_14 0)
+:assumption (=x_28 0)
+:assumption (=x_28 0)
+:assumption (=x_25 0)
+:assumption (=x_25 0)
+:assumption (=x_22 0)
+:assumption (=x_22 0)
+:assumption (=x_19 0)
+:assumption (=x_19 0)
+:assumption (=x_15 0)
+:assumption (=x_15 0)
+:assumption (=x_27 0)
+:assumption (=x_27 0)
+:assumption (=x_24 0)
+:assumption (=x_24 0)
+:assumption (=x_21 0)
+:assumption (=x_21 0)
+:assumption (=x_18 0)
+:assumption (=x_18 0)
+:assumption (=x_16 0)
+:assumption (=x_16 0)
+:assumption (=x_26 0)
+:assumption (=x_26 0)
+:assumption (=x_23 0)
+:assumption (=x_23 0)
+:assumption (=x_20 0)
+:assumption (=x_20 0)
+:assumption (=x_17 0)
+:assumption (=x_17 0)
+:assumption (=x_33 0)
+:assumption (=x_33 0)
+:assumption (=x_32 0)
+:assumption (=x_32 0)
+:assumption (=x_31 0)
+:assumption (=x_31 0)
+:assumption (=x_30 0)
+:assumption (=x_30 0)
+:assumption (=x_29 0)
+:assumption (=x_29 0)
+:assumption (<= (+ x_13 (* (~ 1) x_73) (* (~ 1) x_83)) 0)
+:assumption (<= (+ x_13 (* (~ 1) x_72) (* (~ 1) x_83)) 0)
+:assumption (<= (+ x_13 (* (~ 1) x_74) (* (~ 1) x_83)) 0)
+:assumption (<= (+ x_13 (* (~ 1) x_75) (* (~ 1) x_83)) 0)
+:assumption (<= (+ x_13 (* (~ 1) x_76) (* (~ 1) x_83)) 0)
+:assumption (>= (+ x_13 (* (~ 1) x_72) (* (~ 1) x_84)) 0)
+:assumption (>= (+ x_13 (* (~ 1) x_73) (* (~ 1) x_84)) 0)
+:assumption (>= (+ x_13 (* (~ 1) x_74) (* (~ 1) x_84)) 0)
+:assumption (>= (+ x_13 (* (~ 1) x_75) (* (~ 1) x_84)) 0)
+:assumption (>= (+ x_13 (* (~ 1) x_76) (* (~ 1) x_84)) 0)
+:assumption (>= (+ x_72 (* (~ 1) x_73) x_82) 0)
+:assumption (>= (+ x_72 (* (~ 1) x_74) x_82) 0)
+:assumption (>= (+ x_72 (* (~ 1) x_75) x_82) 0)
+:assumption (>= (+ x_72 (* (~ 1) x_76) x_82) 0)
+:assumption (<= (+ x_72 (* (~ 1) x_73) (* (~ 1) x_82)) 0)
+:assumption (>= (+ x_73 (* (~ 1) x_74) x_82) 0)
+:assumption (>= (+ x_73 (* (~ 1) x_75) x_82) 0)
+:assumption (>= (+ x_73 (* (~ 1) x_76) x_82) 0)
+:assumption (<= (+ x_72 (* (~ 1) x_74) (* (~ 1) x_82)) 0)
+:assumption (<= (+ x_73 (* (~ 1) x_74) (* (~ 1) x_82)) 0)
+:assumption (>= (+ x_74 (* (~ 1) x_75) x_82) 0)
+:assumption (>= (+ x_74 (* (~ 1) x_76) x_82) 0)
+:assumption (<= (+ x_72 (* (~ 1) x_75) (* (~ 1) x_82)) 0)
+:assumption (<= (+ x_73 (* (~ 1) x_75) (* (~ 1) x_82)) 0)
+:assumption (<= (+ x_74 (* (~ 1) x_75) (* (~ 1) x_82)) 0)
+:assumption (>= (+ x_75 (* (~ 1) x_76) x_82) 0)
+:assumption (<= (+ x_72 (* (~ 1) x_76) (* (~ 1) x_82)) 0)
+:assumption (<= (+ x_73 (* (~ 1) x_76) (* (~ 1) x_82)) 0)
+:assumption (<= (+ x_74 (* (~ 1) x_76) (* (~ 1) x_82)) 0)
+:assumption (>= (+ x_7 x_13 (* (~ 1) x_40)) 0)
+:assumption (<= (+ x_75 (* (~ 1) x_76) (* (~ 1) x_82)) 0)
+:assumption (>= (+ x_7 x_13 (* (~ 1) x_34)) 0)
+:assumption (>= (+ x_9 (* (~ 1) x_13)) 0)
+:assumption (<= (+ x_9 (* (~ 1) x_13)) 0)
+:assumption (>= (+ x_7 x_13 (* (~ 1) x_35)) 0)
+:assumption (>= (+ x_7 x_13 (* (~ 1) x_36)) 0)
+:assumption (>= (+ x_11 (* (~ 1) x_13)) 0)
+:assumption (<= (+ x_11 (* (~ 1) x_13)) 0)
+:assumption (>= (+ x_7 x_13 (* (~ 1) x_38)) 0)
+:assumption (<= (+ x_39 (* (~ (/ 1001 1000)) x_40) (* (/ 1001 1000) x_72) (* (~ 1) x_77)) 0)
+:assumption (>= (+ x_39 (* (~ (/ 999 1000)) x_40) (* (/ 999 1000) x_72) (* (~ 1) x_77)) 0)
+:assumption (>= (+ x_34 (* (~ (/ 1000 1001)) x_41) (* (~ 1) x_73) (* (/ 1000 1001) x_78)) 0)
+:assumption (<= (+ x_34 (* (~ (/ 1000 999)) x_41) (* (~ 1) x_73) (* (/ 1000 999) x_78)) 0)
+:assumption (>= (+ x_35 (* (~ (/ 1000 1001)) x_42) (* (~ 1) x_74) (* (/ 1000 1001) x_79)) 0)
+:assumption (<= (+ x_35 (* (~ (/ 1000 999)) x_42) (* (~ 1) x_74) (* (/ 1000 999) x_79)) 0)
+:assumption (>= (+ x_36 (* (~ (/ 1000 1001)) x_43) (* (~ 1) x_75) (* (/ 1000 1001) x_80)) 0)
+:assumption (<= (+ x_36 (* (~ (/ 1000 999)) x_43) (* (~ 1) x_75) (* (/ 1000 999) x_80)) 0)
+:assumption (>= (+ x_13 (* (~ (/ 1000 999)) x_19) (* (/ 1000 999) x_39) (* (~ 1) x_40)) 0)
+:assumption (<= (+ x_19 (* (~ 1) x_45)) 0)
+:assumption (<= (+ x_37 (* (~ (/ 1001 1000)) x_38) (* (/ 1001 1000) x_76) (* (~ 1) x_81)) 0)
+:assumption (>= (+ x_37 (* (~ (/ 999 1000)) x_38) (* (/ 999 1000) x_76) (* (~ 1) x_81)) 0)
+:assumption (>= (+ x_13 (* (~ (/ 1000 999)) x_22) (* (~ 1) x_34) (* (/ 1000 999) x_41)) 0)
+:assumption (<= (+ x_22 (* (~ 1) x_45)) 0)
+:assumption (not (<= (+ x_13 (* (~ (/ 1000 1001)) x_19) (* (/ 1000 1001) x_39) (* (~ 1) x_40)) 0))
+:assumption (>= (+ x_13 (* (~ 1) x_40)) 0)
+:assumption (>= (+ x_13 (* (~ (/ 1000 999)) x_25) (* (~ 1) x_35) (* (/ 1000 999) x_42)) 0)
+:assumption (<= (+ x_25 (* (~ 1) x_45)) 0)
+:assumption (not (<= (+ x_13 (* (~ (/ 1000 1001)) x_22) (* (~ 1) x_34) (* (/ 1000 1001) x_41)) 0))
+:assumption (>= (+ x_13 (* (~ 1) x_34)) 0)
+:assumption (>= (+ x_13 (* (~ (/ 1000 999)) x_28) (* (~ 1) x_36) (* (/ 1000 999) x_43)) 0)
+:assumption (<= (+ x_28 (* (~ 1) x_45)) 0)
+:assumption (not (<= (+ x_13 (* (~ (/ 1000 1001)) x_25) (* (~ 1) x_35) (* (/ 1000 1001) x_42)) 0))
+:assumption (>= (+ x_13 (* (~ 1) x_35)) 0)
+:assumption (>= (+ x_13 (* (~ (/ 1000 999)) x_14) (* (/ 1000 999) x_37) (* (~ 1) x_38)) 0)
+:assumption (<= (+ x_14 (* (~ 1) x_45)) 0)
+:assumption (not (<= (+ x_13 (* (~ (/ 1000 1001)) x_28) (* (~ 1) x_36) (* (/ 1000 1001) x_43)) 0))
+:assumption (>= (+ x_13 (* (~ 1) x_36)) 0)
+:assumption (not (<= (+ x_13 (* (~ (/ 1000 1001)) x_14) (* (/ 1000 1001) x_37) (* (~ 1) x_38)) 0))
+:assumption (>= (+ x_13 (* (~ 1) x_38)) 0)
+:assumption (<= (+ x_19 (* (~ (/ 1001 1000)) x_29) (* (~ (/ 1001 1000)) x_44) (* (/ 1001 2000) x_72) (* (/ 1001 2000) x_76) (* (~ (/ 1 2)) x_77) (* (~ (/ 1 2)) x_81)) (/ 1001 2000))
+:assumption (>= (+ x_19 (* (~ (/ 999 1000)) x_29) (* (/ 999 1000) x_44) (* (/ 999 2000) x_72) (* (/ 999 2000) x_76) (* (~ (/ 1 2)) x_77) (* (~ (/ 1 2)) x_81)) (~ (/ 3001 2000)))
+:assumption (<= (+ x_22 (* (~ (/ 1001 1000)) x_30) (* (~ (/ 1001 1000)) x_44) (* (/ 1001 2000) x_72) (* (/ 1001 2000) x_76) (* (~ (/ 1 2)) x_77) (* (~ (/ 1 2)) x_81)) (/ 1001 2000))
+:assumption (>= (+ x_22 (* (~ (/ 999 1000)) x_30) (* (/ 999 1000) x_44) (* (/ 999 2000) x_72) (* (/ 999 2000) x_76) (* (~ (/ 1 2)) x_77) (* (~ (/ 1 2)) x_81)) (~ (/ 3001 2000)))
+:assumption (<= (+ x_25 (* (~ (/ 1001 1000)) x_31) (* (~ (/ 1001 1000)) x_44) (* (/ 1001 2000) x_72) (* (/ 1001 2000) x_76) (* (~ (/ 1 2)) x_77) (* (~ (/ 1 2)) x_81)) (/ 1001 2000))
+:assumption (>= (+ x_25 (* (~ (/ 999 1000)) x_31) (* (/ 999 1000) x_44) (* (/ 999 2000) x_72) (* (/ 999 2000) x_76) (* (~ (/ 1 2)) x_77) (* (~ (/ 1 2)) x_81)) (~ (/ 3001 2000)))
+:assumption (>= (+ x_0 (* (~ 1) x_21)) 0)
+:assumption (<= (+ x_0 (* (~ 1) x_21)) 0)
+:assumption (>= (+ x_0 (* (~ 1) x_22)) 0)
+:assumption (<= (+ x_0 (* (~ 1) x_22)) 0)
+:assumption (>= (+ x_0 (* (~ 1) x_18)) 0)
+:assumption (<= (+ x_0 (* (~ 1) x_18)) 0)
+:assumption (>= (+ x_0 (* (~ 1) x_19)) 0)
+:assumption (<= (+ x_0 (* (~ 1) x_19)) 0)
+:assumption (<= (+ x_28 (* (~ (/ 1001 1000)) x_32) (* (~ (/ 1001 1000)) x_44) (* (/ 1001 2000) x_72) (* (/ 1001 2000) x_76) (* (~ (/ 1 2)) x_77) (* (~ (/ 1 2)) x_81)) (/ 1001 2000))
+:assumption (>= (+ x_28 (* (~ (/ 999 1000)) x_32) (* (/ 999 1000) x_44) (* (/ 999 2000) x_72) (* (/ 999 2000) x_76) (* (~ (/ 1 2)) x_77) (* (~ (/ 1 2)) x_81)) (~ (/ 3001 2000)))
+:assumption (>= (+ x_0 (* (~ 1) x_24)) 0)
+:assumption (<= (+ x_0 (* (~ 1) x_24)) 0)
+:assumption (>= (+ x_0 (* (~ 1) x_25)) 0)
+:assumption (<= (+ x_0 (* (~ 1) x_25)) 0)
+:assumption (>= (+ x_20 (* (~ 1) x_34)) (~ 1))
+:assumption (<= (+ x_20 (* (~ 1) x_34)) (~ 1))
+:assumption (=(+ x_6 (* (~ 1) x_9)) 0)
+:assumption (=(+ x_6 (* (~ 1) x_9)) 0)
+:assumption (>= (+ x_17 (* (~ 1) x_40)) (~ 1))
+:assumption (<= (+ x_17 (* (~ 1) x_40)) (~ 1))
+:assumption (=(+ x_6 (* (~ 1) x_8)) 0)
+:assumption (=(+ x_6 (* (~ 1) x_8)) 0)
+:assumption (<= (+ x_14 (* (~ (/ 1001 1000)) x_33) (* (~ (/ 1001 1000)) x_44) (* (/ 1001 2000) x_72) (* (/ 1001 2000) x_76) (* (~ (/ 1 2)) x_77) (* (~ (/ 1 2)) x_81)) (/ 1001 2000))
+:assumption (>= (+ x_14 (* (~ (/ 999 1000)) x_33) (* (/ 999 1000) x_44) (* (/ 999 2000) x_72) (* (/ 999 2000) x_76) (* (~ (/ 1 2)) x_77) (* (~ (/ 1 2)) x_81)) (~ (/ 3001 2000)))
+:assumption (>= (+ x_0 (* (~ 1) x_27)) 0)
+:assumption (<= (+ x_0 (* (~ 1) x_27)) 0)
+:assumption (>= (+ x_0 (* (~ 1) x_28)) 0)
+:assumption (<= (+ x_0 (* (~ 1) x_28)) 0)
+:assumption (>= (+ x_23 (* (~ 1) x_35)) (~ 1))
+:assumption (<= (+ x_23 (* (~ 1) x_35)) (~ 1))
+:assumption (=(+ x_6 (* (~ 1) x_10)) 0)
+:assumption (=(+ x_6 (* (~ 1) x_10)) 0)
+:assumption (>= (+ x_0 (* (~ 1) x_41)) (~ (/ 1001 1000)))
+:assumption (<= (+ x_0 (* (~ 1) x_41)) (~ (/ 999 1000)))
+:assumption (>= (+ x_0 (* (~ 1) x_2)) (~ (/ 1001 1000)))
+:assumption (<= (+ x_0 (* (~ 1) x_2)) (~ (/ 999 1000)))
+:assumption (>= (+ x_0 (* (~ 1) x_39)) (~ (/ 1001 1000)))
+:assumption (<= (+ x_0 (* (~ 1) x_39)) (~ (/ 999 1000)))
+:assumption (>= (+ x_0 (* (~ 1) x_1)) (~ (/ 1001 1000)))
+:assumption (<= (+ x_0 (* (~ 1) x_1)) (~ (/ 999 1000)))
+:assumption (>= (+ x_13 (* (~ (/ 1000 1001)) x_19) (* (~ 1) x_72) (* (/ 1000 1001) x_77)) 0)
+:assumption (not (<= (+ x_13 (* (~ (/ 1000 999)) x_19) (* (~ 1) x_72) (* (/ 1000 999) x_77)) 0))
+:assumption (>= (+ x_0 (* (~ 1) x_15)) 0)
+:assumption (<= (+ x_0 (* (~ 1) x_15)) 0)
+:assumption (>= (+ x_0 (* (~ 1) x_14)) 0)
+:assumption (<= (+ x_0 (* (~ 1) x_14)) 0)
+:assumption (>= (+ x_26 (* (~ 1) x_36)) (~ 1))
+:assumption (<= (+ x_26 (* (~ 1) x_36)) (~ 1))
+:assumption (=(+ x_6 (* (~ 1) x_11)) 0)
+:assumption (=(+ x_6 (* (~ 1) x_11)) 0)
+:assumption (>= (+ x_0 (* (~ 1) x_42)) (~ (/ 1001 1000)))
+:assumption (<= (+ x_0 (* (~ 1) x_42)) (~ (/ 999 1000)))
+:assumption (>= (+ x_0 (* (~ 1) x_3)) (~ (/ 1001 1000)))
+:assumption (<= (+ x_0 (* (~ 1) x_3)) (~ (/ 999 1000)))
+:assumption (>= (+ x_13 (* (~ (/ 1000 1001)) x_22) (* (~ 1) x_73) (* (/ 1000 1001) x_78)) 0)
+:assumption (not (<= (+ x_13 (* (~ (/ 1000 999)) x_22) (* (~ 1) x_73) (* (/ 1000 999) x_78)) 0))
+:assumption (>= (+ x_16 (* (~ 1) x_38)) (~ 1))
+:assumption (<= (+ x_16 (* (~ 1) x_38)) (~ 1))
+:assumption (=(+ x_6 (* (~ 1) x_12)) 0)
+:assumption (=(+ x_6 (* (~ 1) x_12)) 0)
+:assumption (>= (+ x_0 (* (~ 1) x_43)) (~ (/ 1001 1000)))
+:assumption (<= (+ x_0 (* (~ 1) x_43)) (~ (/ 999 1000)))
+:assumption (>= (+ x_0 (* (~ 1) x_4)) (~ (/ 1001 1000)))
+:assumption (<= (+ x_0 (* (~ 1) x_4)) (~ (/ 999 1000)))
+:assumption (>= (+ x_13 (* (~ (/ 1000 1001)) x_25) (* (~ 1) x_74) (* (/ 1000 1001) x_79)) 0)
+:assumption (not (<= (+ x_13 (* (~ (/ 1000 999)) x_25) (* (~ 1) x_74) (* (/ 1000 999) x_79)) 0))
+:assumption (>= (+ x_0 (* (~ 1) x_37)) (~ (/ 1001 1000)))
+:assumption (<= (+ x_0 (* (~ 1) x_37)) (~ (/ 999 1000)))
+:assumption (>= (+ x_0 (* (~ 1) x_5)) (~ (/ 1001 1000)))
+:assumption (<= (+ x_0 (* (~ 1) x_5)) (~ (/ 999 1000)))
+:assumption (>= (+ x_13 (* (~ (/ 1000 1001)) x_28) (* (~ 1) x_75) (* (/ 1000 1001) x_80)) 0)
+:assumption (not (<= (+ x_13 (* (~ (/ 1000 999)) x_28) (* (~ 1) x_75) (* (/ 1000 999) x_80)) 0))
+:assumption (=(+ x_1 (* (~ 1) x_39)) 0)
+:assumption (=(+ x_1 (* (~ 1) x_39)) 0)
+:assumption (=(+ x_2 (* (~ 1) x_41)) 0)
+:assumption (=(+ x_2 (* (~ 1) x_41)) 0)
+:assumption (>= (+ x_13 (* (~ (/ 1000 1001)) x_14) (* (~ 1) x_76) (* (/ 1000 1001) x_81)) 0)
+:assumption (not (<= (+ x_13 (* (~ (/ 1000 999)) x_14) (* (~ 1) x_76) (* (/ 1000 999) x_81)) 0))
+:assumption (>= (+ x_7 (* (~ (/ 1000 1001)) x_18) (* (/ 1000 1001) x_19)) 0)
+:assumption (not (<= (+ x_7 (* (~ (/ 1000 999)) x_18) (* (/ 1000 999) x_19)) 0))
+:assumption (=(+ x_3 (* (~ 1) x_42)) 0)
+:assumption (=(+ x_3 (* (~ 1) x_42)) 0)
+:assumption (>= (+ x_7 (* (~ (/ 1000 1001)) x_21) (* (/ 1000 1001) x_22)) 0)
+:assumption (not (<= (+ x_7 (* (~ (/ 1000 999)) x_21) (* (/ 1000 999) x_22)) 0))
+:assumption (>= (+ x_7 (* (~ (/ 1000 1001)) x_24) (* (/ 1000 1001) x_25)) 0)
+:assumption (not (<= (+ x_7 (* (~ (/ 1000 999)) x_24) (* (/ 1000 999) x_25)) 0))
+:assumption (>= (+ x_7 (* (~ (/ 1000 1001)) x_27) (* (/ 1000 1001) x_28)) 0)
+:assumption (not (<= (+ x_7 (* (~ (/ 1000 999)) x_27) (* (/ 1000 999) x_28)) 0))
+:assumption (>= (+ x_7 (* (/ 1000 1001) x_14) (* (~ (/ 1000 1001)) x_15)) 0)
+:assumption (not (<= (+ x_7 (* (/ 1000 999) x_14) (* (~ (/ 1000 999)) x_15)) 0))
+:assumption (<= (+ x_0 x_6 (* (~ 1) x_83)) 1)
+:assumption (=(+ x_4 (* (~ 1) x_43)) 0)
+:assumption (=(+ x_4 (* (~ 1) x_43)) 0)
+:assumption (not (>= (+ x_0 (* (~ 1) x_45)) 0))
+:assumption (not (<= (+ x_1 (* (~ 1) x_45)) 0))
+:assumption (not (<= (+ x_2 (* (~ 1) x_45)) 0))
+:assumption (>= (+ x_0 x_6 (* (~ 1) x_84)) 1)
+:assumption (not (<= (+ x_3 (* (~ 1) x_45)) 0))
+:assumption (=(+ x_4 (* (~ 1) x_45)) 0)
+:assumption (=(+ x_4 (* (~ 1) x_45)) 0)
+:assumption (=(+ x_5 (* (~ 1) x_37)) 0)
+:assumption (=(+ x_5 (* (~ 1) x_37)) 0)
+:assumption (>= (+ x_5 (* (~ 1) x_45)) 0)
+:assumption (<= (+ x_40 (* (~ 1) x_44) (* (~ 1) x_46)) 0)
+:assumption (<= (+ x_40 (* (~ 1) x_44) (* (~ 1) x_51)) 0)
+:assumption (<= (+ x_40 (* (~ 1) x_44) (* (~ 1) x_56)) 0)
+:assumption (<= (+ x_40 (* (~ 1) x_44) (* (~ 1) x_61)) 0)
+:assumption (<= (+ x_40 (* (~ 1) x_44) (* (~ 1) x_66)) 0)
+:assumption (<= (+ x_34 (* (~ 1) x_44) (* (~ 1) x_47)) 0)
+:assumption (<= (+ x_34 (* (~ 1) x_44) (* (~ 1) x_52)) 0)
+:assumption (<= (+ x_34 (* (~ 1) x_44) (* (~ 1) x_57)) 0)
+:assumption (<= (+ x_34 (* (~ 1) x_44) (* (~ 1) x_62)) 0)
+:assumption (<= (+ x_34 (* (~ 1) x_44) (* (~ 1) x_67)) 0)
+:assumption (<= (+ x_35 (* (~ 1) x_44) (* (~ 1) x_48)) 0)
+:assumption (<= (+ x_35 (* (~ 1) x_44) (* (~ 1) x_53)) 0)
+:assumption (<= (+ x_35 (* (~ 1) x_44) (* (~ 1) x_58)) 0)
+:assumption (<= (+ x_35 (* (~ 1) x_44) (* (~ 1) x_63)) 0)
+:assumption (<= (+ x_35 (* (~ 1) x_44) (* (~ 1) x_68)) 0)
+:assumption (>= (+ x_0 x_6 x_7) 1)
+:assumption (<= (+ x_36 (* (~ 1) x_44) (* (~ 1) x_49)) 0)
+:assumption (<= (+ x_36 (* (~ 1) x_44) (* (~ 1) x_54)) 0)
+:assumption (<= (+ x_36 (* (~ 1) x_44) (* (~ 1) x_59)) 0)
+:assumption (<= (+ x_36 (* (~ 1) x_44) (* (~ 1) x_64)) 0)
+:assumption (<= (+ x_36 (* (~ 1) x_44) (* (~ 1) x_69)) 0)
+:assumption (<= (+ x_38 (* (~ 1) x_44) (* (~ 1) x_50)) 0)
+:assumption (<= (+ x_38 (* (~ 1) x_44) (* (~ 1) x_55)) 0)
+:assumption (<= (+ x_38 (* (~ 1) x_44) (* (~ 1) x_60)) 0)
+:assumption (<= (+ x_38 (* (~ 1) x_44) (* (~ 1) x_65)) 0)
+:assumption (<= (+ x_38 (* (~ 1) x_44) (* (~ 1) x_70)) 0)
+:assumption (not (<= (+ x_0 (* (/ 1000 999) x_1) x_6) 1))
+:assumption (>= (+ x_40 x_44 (* (~ 1) x_46)) 0)
+:assumption (not (<= (+ x_0 (* (/ 1000 999) x_2) x_6) 1))
+:assumption (not (<= (+ x_0 (* (/ 1000 1001) x_1) x_6) 1))
+:assumption (>= (+ x_0 x_6) 1)
+:assumption (>= (+ x_40 x_44 (* (~ 1) x_51)) 0)
+:assumption (not (<= (+ x_0 (* (/ 1000 999) x_3) x_6) 1))
+:assumption (not (<= (+ x_0 (* (/ 1000 1001) x_2) x_6) 1))
+:assumption (>= (+ x_40 x_44 (* (~ 1) x_56)) 0)
+:assumption (not (<= (+ x_0 (* (/ 1000 999) x_4) x_6) 1))
+:assumption (not (<= (+ x_0 (* (/ 1000 1001) x_3) x_6) 1))
+:assumption (>= (+ x_40 x_44 (* (~ 1) x_61)) 0)
+:assumption (not (<= (+ x_0 (* (/ 1000 999) x_5) x_6) 1))
+:assumption (not (<= (+ x_0 (* (/ 1000 1001) x_4) x_6) 1))
+:assumption (>= (+ x_40 x_44 (* (~ 1) x_66)) 0)
+:assumption (not (<= (+ x_0 (* (/ 1000 1001) x_5) x_6) 1))
+:assumption (>= (+ x_34 x_44 (* (~ 1) x_47)) 0)
+:assumption (>= (+ x_1 x_5 (* (/ 1001 500) x_44)) (/ 1001 1000))
+:assumption (<= (+ x_1 x_5 (* (~ (/ 999 500)) x_44)) (/ 4999 1000))
+:assumption (>= (+ x_34 x_44 (* (~ 1) x_52)) 0)
+:assumption (>= (+ x_34 x_44 (* (~ 1) x_57)) 0)
+:assumption (>= (+ x_34 x_44 (* (~ 1) x_62)) 0)
+:assumption (>= (+ x_34 x_44 (* (~ 1) x_67)) 0)
+:assumption (<= (+ x_7 (* (/ 1998 1001) x_44) (* (~ (/ 1998 1001)) x_82)) (~ 2))
+:assumption (>= (+ x_0 x_6 (* (~ 1) x_9)) 0)
+:assumption (>= (+ x_0 x_6 (* (~ 1) x_8)) 0)
+:assumption (>= (+ x_35 x_44 (* (~ 1) x_48)) 0)
+:assumption (>= (+ x_0 x_6 (* (~ 1) x_10)) 0)
+:assumption (>= (+ x_35 x_44 (* (~ 1) x_53)) 0)
+:assumption (<= (+ x_6 x_44 x_82 (* (~ (/ 999 1001)) x_83)) (~ (/ 1501 1000)))
+:assumption (not (<= (+ x_7 (* (~ 1) x_82) (* (~ (/ 2 999)) x_83)) (/ 1001 999)))
+:assumption (>= (+ x_0 x_6 (* (~ 1) x_11)) 0)
+:assumption (>= (+ x_35 x_44 (* (~ 1) x_58)) 0)
+:assumption (>= (+ x_0 x_6 (* (~ 1) x_12)) 0)
+:assumption (>= (+ x_35 x_44 (* (~ 1) x_63)) 0)
+:assumption (>= (+ x_35 x_44 (* (~ 1) x_68)) 0)
+:assumption (=(+ x_0 x_6 (* (~ 1) x_13)) 0)
+:assumption (=(+ x_0 x_6 (* (~ 1) x_13)) 0)
+:assumption (>= (+ x_36 x_44 (* (~ 1) x_49)) 0)
+:assumption (>= (+ x_6 (* (~ (/ 1001 999)) x_7) (* (~ 1) x_44) (* (~ 1) x_84)) (/ 5003 1998))
+:assumption (=(+ x_0 (* (~ 1) x_71)) 0)
+:assumption (=(+ x_0 (* (~ 1) x_71)) 0)
+:assumption (=(+ x_40 (* (~ 1) x_72)) 0)
+:assumption (=(+ x_40 (* (~ 1) x_72)) 0)
+:assumption (>= (+ x_36 x_44 (* (~ 1) x_54)) 0)
+:assumption (=(+ x_1 (* (~ 1) x_77)) 0)
+:assumption (=(+ x_1 (* (~ 1) x_77)) 0)
+:assumption (=(+ x_34 (* (~ 1) x_73)) 0)
+:assumption (=(+ x_34 (* (~ 1) x_73)) 0)
+:assumption (>= (+ x_36 x_44 (* (~ 1) x_59)) 0)
+:assumption (=(+ x_2 (* (~ 1) x_78)) 0)
+:assumption (=(+ x_2 (* (~ 1) x_78)) 0)
+:assumption (=(+ x_35 (* (~ 1) x_74)) 0)
+:assumption (=(+ x_35 (* (~ 1) x_74)) 0)
+:assumption (>= (+ x_36 x_44 (* (~ 1) x_64)) 0)
+:assumption (=(+ x_3 (* (~ 1) x_79)) 0)
+:assumption (=(+ x_3 (* (~ 1) x_79)) 0)
+:assumption (=(+ x_36 (* (~ 1) x_75)) 0)
+:assumption (=(+ x_36 (* (~ 1) x_75)) 0)
+:assumption (>= (+ x_36 x_44 (* (~ 1) x_69)) 0)
+:assumption (=(+ x_4 (* (~ 1) x_80)) 0)
+:assumption (=(+ x_4 (* (~ 1) x_80)) 0)
+:assumption (=(+ x_38 (* (~ 1) x_76)) 0)
+:assumption (=(+ x_38 (* (~ 1) x_76)) 0)
+:assumption (>= (+ x_38 x_44 (* (~ 1) x_50)) 0)
+:assumption (=(+ x_5 (* (~ 1) x_81)) 0)
+:assumption (=(+ x_5 (* (~ 1) x_81)) 0)
+:assumption (=(+ x_39 (* (~ 1) x_77)) 0)
+:assumption (=(+ x_39 (* (~ 1) x_77)) 0)
+:assumption (>= (+ x_38 x_44 (* (~ 1) x_55)) 0)
+:assumption (=(+ x_41 (* (~ 1) x_78)) 0)
+:assumption (=(+ x_41 (* (~ 1) x_78)) 0)
+:assumption (>= (+ x_38 x_44 (* (~ 1) x_60)) 0)
+:assumption (=(+ x_42 (* (~ 1) x_79)) 0)
+:assumption (=(+ x_42 (* (~ 1) x_79)) 0)
+:assumption (>= (+ x_38 x_44 (* (~ 1) x_65)) 0)
+:assumption (=(+ x_43 (* (~ 1) x_80)) 0)
+:assumption (=(+ x_43 (* (~ 1) x_80)) 0)
+:assumption (>= (+ x_38 x_44 (* (~ 1) x_70)) 0)
+:assumption (=(+ x_37 (* (~ 1) x_81)) 0)
+:assumption (=(+ x_37 (* (~ 1) x_81)) 0)
+
+:assumption (not (=(+ x_7 (* (~ 1) x_26) x_32) 0))
+:assumption (not (=(+ x_0 (* 2 x_6) x_7 (* (~ 1) x_13)) 0))
+:assumption (not (=(+ x_45 (* (~ 1) x_71)) 0))
+:assumption (not (=x_6 1))
+:assumption (not (=(+ x_6 x_7) 1))
+:assumption (not (=(+ x_0 x_6 x_7) 0))
+:assumption (not (=(+ x_6 x_7 (* (~ 1) x_11) x_13) 0))
+:assumption (not (=x_7 0))
+:assumption (not (=(+ x_6 x_7 (* (~ 1) x_10) x_13) 0))
+:assumption (not (=(+ x_6 (* (/ 1 2) x_7) (* (~ (/ 1 2)) x_9)) 0))
+:assumption (not (=(+ x_10 (* (~ 1) x_13)) 0))
+:assumption (not (=(+ x_6 x_7 (* (~ 1) x_12) x_13) 0))
+:assumption (not (=(+ x_6 x_7 (* (~ 1) x_9) x_13) 0))
+:assumption (not (=(+ x_0 (* (~ 1) x_45)) 0))
+:assumption (not (=(+ x_8 (* (~ 1) x_13)) 0))
+:assumption (not (=(+ x_6 x_7 (* (~ 1) x_8) x_13) 0))
+:assumption (not (=(+ x_7 (* (~ 1) x_36)) (~ 1)))
+:assumption (not (=(+ x_6 (* (/ 1 2) x_7) (* (~ (/ 1 2)) x_8)) 0))
+:assumption (not (=(+ x_5 (* (~ 1) x_45)) 0))
+:assumption (not (=(+ x_7 (* (~ 1) x_23) x_31) 0))
+:assumption (not (=(+ x_7 (* (~ 1) x_38)) (~ 1)))
+:assumption (not (=(+ x_7 (* (~ 1) x_17) x_29) 0))
+:assumption (not (=(+ x_7 (* (~ 1) x_20) x_30) 0))
+:assumption (not (=(+ x_7 (* (~ 1) x_16) x_33) 0))
+:assumption (not (=(+ x_2 (* (~ 1) x_45)) 0))
+:assumption (not (=(+ x_6 (* (/ 1 2) x_7) (* (~ (/ 1 2)) x_10)) 0))
+:assumption (not (=(+ x_7 (* (~ 1) x_40)) (~ 1)))
+:assumption (not (=(+ x_7 (* (~ 1) x_35)) (~ 1)))
+:assumption (not (=(+ x_3 (* (~ 1) x_45)) 0))
+:assumption (not (=(+ x_7 (* (~ 1) x_34)) (~ 1)))
+:assumption (not (=(+ x_6 (* (/ 1 2) x_7) (* (~ (/ 1 2)) x_11)) 0))
+:assumption (not (=(+ x_1 (* (~ 1) x_45)) 0))
+:assumption (not (=(+ x_12 (* (~ 1) x_13)) 0))
+:assumption (not (=(+ x_6 (* (/ 1 2) x_7) (* (~ (/ 1 2)) x_12)) 0))
+  
+  :formula true
+)
diff --git a/test/regress/regress0/lemmas/fs_not_sc_seen.induction.smt b/test/regress/regress0/lemmas/fs_not_sc_seen.induction.smt
new file mode 100644
index 0000000..4cfccb0
--- /dev/null
+++ b/test/regress/regress0/lemmas/fs_not_sc_seen.induction.smt
@@ -0,0 +1,72 @@
+(benchmark fs_not_sc_seen.induction.smt
+  :source {
+The Formal Verification of a Reintegration Protocol. Author: Lee Pike. Website: http://www.cs.indiana.edu/~lepike/pub_pages/emsoft.html.
+
+This benchmark was automatically translated into SMT-LIB format from
+CVC format using CVC Lite
+}
+  :status unsat
+:category { industrial }
+:difficulty { 0 }
+  :logic QF_LRA
+  
+  :extrafuns ((x_0 Real))
+  :extrapreds ((x_1))
+  :extrapreds ((x_2))
+  :extrapreds ((x_3))
+  :extrafuns ((x_4 Real))
+  :extrapreds ((x_5))
+  :extrapreds ((x_6))
+  :extrapreds ((x_7))
+  :extrafuns ((x_8 Real))
+  :extrafuns ((x_9 Real))
+  :extrafuns ((x_10 Real))
+  :extrafuns ((x_11 Real))
+  :extrapreds ((x_12))
+  :extrapreds ((x_13))
+  :extrafuns ((x_14 Real))
+  :extrapreds ((x_15))
+  :extrapreds ((x_16))
+  :extrapreds ((x_17))
+  :extrapreds ((x_18))
+  :extrapreds ((x_19))
+  :extrapreds ((x_20))
+  :extrafuns ((x_21 Real))
+  :extrafuns ((x_22 Real))
+  :extrafuns ((x_23 Real))
+  :extrafuns ((x_24 Real))
+  :extrafuns ((x_25 Real))
+  :extrafuns ((x_26 Real))
+  :extrafuns ((x_27 Real))
+  :extrapreds ((x_28))
+  :extrapreds ((x_29))
+  :extrapreds ((x_30))
+  :extrapreds ((x_31))
+  :extrapreds ((x_32))
+  :extrapreds ((x_33))
+  :extrapreds ((x_34))
+  :extrapreds ((x_35))
+  :extrapreds ((x_36))
+  :extrapreds ((x_37))
+  :extrafuns ((x_38 Real))
+  :extrafuns ((x_39 Real))
+  :extrafuns ((x_40 Real))
+  :extrafuns ((x_41 Real))
+  :extrafuns ((x_42 Real))
+  :extrafuns ((x_43 Real))
+  :extrafuns ((x_44 Real))
+  :extrafuns ((x_45 Real))
+  :extrafuns ((x_46 Real))
+  :extrafuns ((x_47 Real))
+  :extrafuns ((x_48 Real))
+  :extrafuns ((x_49 Real))
+  :extrafuns ((x_50 Real))
+  :extrafuns ((x_51 Real))
+  :extrafuns ((x_52 Real))
+  :extrapreds ((x_53))
+  :extrafuns ((x_54 Real))
+  :extrafuns ((x_55 Real))
+  :extrafuns ((x_56 Real))
+  :formula
+(let (?cvcl_28 (+ x_8 x_9)) (flet ($cvcl_78 (<= x_10 x_11)) (flet ($cvcl_56 (iff x_12 x_13)) (flet ($cvcl_8 (= x_4 0)) (flet ($cvcl_12 $cvcl_8) (flet ($cvcl_13 (< x_10 x_14)) (flet ($cvcl_40 (= x_11 x_10)) (flet ($cvcl_66 $cvcl_40) (flet ($cvcl_67 (= x_4 2)) (flet ($cvcl_69 (iff x_15 x_16)) (flet ($cvcl_70 (and (iff x_17 x_18) (iff x_19 x_20))) (flet ($cvcl_54 (iff x_7 x_3)) (flet ($cvcl_55 (and (iff x_5 x_1) (iff x_6 x_2))) (flet ($cvcl_71 (= x_21 x_22)) (flet ($cvcl_72 (and (= x_23 x_2 [...]
+)
diff --git a/test/regress/regress0/lemmas/mode_cntrl.induction.smt b/test/regress/regress0/lemmas/mode_cntrl.induction.smt
new file mode 100644
index 0000000..d90dae9
--- /dev/null
+++ b/test/regress/regress0/lemmas/mode_cntrl.induction.smt
@@ -0,0 +1,72 @@
+(benchmark mode_cntrl.induction.smt
+  :source {
+The Formal Verification of a Reintegration Protocol. Author: Lee Pike. Website: http://www.cs.indiana.edu/~lepike/pub_pages/emsoft.html.
+
+This benchmark was automatically translated into SMT-LIB format from
+CVC format using CVC Lite
+}
+  :status unsat
+:category { industrial }
+:difficulty { 0 }
+  :logic QF_LRA
+  
+  :extrafuns ((x_0 Real))
+  :extrapreds ((x_1))
+  :extrapreds ((x_2))
+  :extrapreds ((x_3))
+  :extrafuns ((x_4 Real))
+  :extrafuns ((x_5 Real))
+  :extrafuns ((x_6 Real))
+  :extrafuns ((x_7 Real))
+  :extrapreds ((x_8))
+  :extrafuns ((x_9 Real))
+  :extrafuns ((x_10 Real))
+  :extrapreds ((x_11))
+  :extrapreds ((x_12))
+  :extrapreds ((x_13))
+  :extrapreds ((x_14))
+  :extrapreds ((x_15))
+  :extrapreds ((x_16))
+  :extrapreds ((x_17))
+  :extrapreds ((x_18))
+  :extrapreds ((x_19))
+  :extrapreds ((x_20))
+  :extrapreds ((x_21))
+  :extrapreds ((x_22))
+  :extrafuns ((x_23 Real))
+  :extrafuns ((x_24 Real))
+  :extrafuns ((x_25 Real))
+  :extrafuns ((x_26 Real))
+  :extrafuns ((x_27 Real))
+  :extrafuns ((x_28 Real))
+  :extrafuns ((x_29 Real))
+  :extrapreds ((x_30))
+  :extrapreds ((x_31))
+  :extrapreds ((x_32))
+  :extrapreds ((x_33))
+  :extrapreds ((x_34))
+  :extrapreds ((x_35))
+  :extrapreds ((x_36))
+  :extrapreds ((x_37))
+  :extrafuns ((x_38 Real))
+  :extrafuns ((x_39 Real))
+  :extrafuns ((x_40 Real))
+  :extrafuns ((x_41 Real))
+  :extrafuns ((x_42 Real))
+  :extrafuns ((x_43 Real))
+  :extrafuns ((x_44 Real))
+  :extrafuns ((x_45 Real))
+  :extrafuns ((x_46 Real))
+  :extrafuns ((x_47 Real))
+  :extrafuns ((x_48 Real))
+  :extrafuns ((x_49 Real))
+  :extrafuns ((x_50 Real))
+  :extrafuns ((x_51 Real))
+  :extrafuns ((x_52 Real))
+  :extrapreds ((x_53))
+  :extrafuns ((x_54 Real))
+  :extrafuns ((x_55 Real))
+  :extrafuns ((x_56 Real))
+  :formula
+(let (?cvcl_26 (+ x_4 x_5)) (flet ($cvcl_73 (<= x_6 x_7)) (flet ($cvcl_54 (iff x_8 x_2)) (flet ($cvcl_77 (= x_9 0)) (flet ($cvcl_10 $cvcl_77) (flet ($cvcl_11 (< x_6 x_10)) (flet ($cvcl_38 (= x_7 x_6)) (flet ($cvcl_61 $cvcl_38) (flet ($cvcl_81 (= x_9 2)) (flet ($cvcl_62 $cvcl_81) (flet ($cvcl_64 (iff x_11 x_12)) (flet ($cvcl_65 (and (iff x_13 x_14) (iff x_15 x_16))) (flet ($cvcl_52 (iff x_17 x_18)) (flet ($cvcl_53 (and (iff x_19 x_20) (iff x_21 x_22))) (flet ($cvcl_66 (= x_23 x_24)) (flet [...]
+)
diff --git a/test/regress/regress0/lemmas/sc_init_frame_gap.induction.smt b/test/regress/regress0/lemmas/sc_init_frame_gap.induction.smt
new file mode 100644
index 0000000..170239e
--- /dev/null
+++ b/test/regress/regress0/lemmas/sc_init_frame_gap.induction.smt
@@ -0,0 +1,72 @@
+(benchmark sc_init_frame_gap.induction.smt
+  :source {
+The Formal Verification of a Reintegration Protocol. Author: Lee Pike. Website: http://www.cs.indiana.edu/~lepike/pub_pages/emsoft.html.
+
+This benchmark was automatically translated into SMT-LIB format from
+CVC format using CVC Lite
+}
+  :status unsat
+:category { industrial }
+:difficulty { 0 }
+  :logic QF_LRA
+  
+  :extrafuns ((x_0 Real))
+  :extrapreds ((x_1))
+  :extrafuns ((x_2 Real))
+  :extrafuns ((x_3 Real))
+  :extrapreds ((x_4))
+  :extrafuns ((x_5 Real))
+  :extrapreds ((x_6))
+  :extrapreds ((x_7))
+  :extrapreds ((x_8))
+  :extrafuns ((x_9 Real))
+  :extrafuns ((x_10 Real))
+  :extrapreds ((x_11))
+  :extrapreds ((x_12))
+  :extrapreds ((x_13))
+  :extrapreds ((x_14))
+  :extrapreds ((x_15))
+  :extrapreds ((x_16))
+  :extrafuns ((x_17 Real))
+  :extrafuns ((x_18 Real))
+  :extrafuns ((x_19 Real))
+  :extrafuns ((x_20 Real))
+  :extrapreds ((x_21))
+  :extrapreds ((x_22))
+  :extrapreds ((x_23))
+  :extrapreds ((x_24))
+  :extrapreds ((x_25))
+  :extrafuns ((x_26 Real))
+  :extrafuns ((x_27 Real))
+  :extrapreds ((x_28))
+  :extrapreds ((x_29))
+  :extrafuns ((x_30 Real))
+  :extrafuns ((x_31 Real))
+  :extrafuns ((x_32 Real))
+  :extrafuns ((x_33 Real))
+  :extrafuns ((x_34 Real))
+  :extrafuns ((x_35 Real))
+  :extrafuns ((x_36 Real))
+  :extrapreds ((x_37))
+  :extrapreds ((x_38))
+  :extrapreds ((x_39))
+  :extrapreds ((x_40))
+  :extrapreds ((x_41))
+  :extrapreds ((x_42))
+  :extrafuns ((x_43 Real))
+  :extrafuns ((x_44 Real))
+  :extrafuns ((x_45 Real))
+  :extrafuns ((x_46 Real))
+  :extrafuns ((x_47 Real))
+  :extrafuns ((x_48 Real))
+  :extrafuns ((x_49 Real))
+  :extrafuns ((x_50 Real))
+  :extrafuns ((x_51 Real))
+  :extrafuns ((x_52 Real))
+  :extrapreds ((x_53))
+  :extrafuns ((x_54 Real))
+  :extrafuns ((x_55 Real))
+  :extrafuns ((x_56 Real))
+  :formula
+(flet ($cvcl_4 x_6) (flet ($cvcl_6 x_7) (flet ($cvcl_7 x_8) (flet ($cvcl_0 x_14) (flet ($cvcl_1 x_15) (flet ($cvcl_2 x_16) (let (?cvcl_39 (+ x_10 x_2)) (flet ($cvcl_92 (<= x_9 x_26)) (flet ($cvcl_68 (iff x_14 x_6)) (flet ($cvcl_18 (= x_17 0)) (flet ($cvcl_24 $cvcl_18) (flet ($cvcl_25 (< x_9 x_27)) (flet ($cvcl_52 (= x_26 x_9)) (flet ($cvcl_79 $cvcl_52) (flet ($cvcl_69 (= x_17 2)) (flet ($cvcl_80 $cvcl_69) (flet ($cvcl_82 (iff x_28 x_29)) (flet ($cvcl_83 (and (iff x_21 x_11) (iff x_22 x_1 [...]
+)
diff --git a/test/regress/regress0/let.cvc b/test/regress/regress0/let.cvc
new file mode 100644
index 0000000..996b09d
--- /dev/null
+++ b/test/regress/regress0/let.cvc
@@ -0,0 +1,7 @@
+% EXPECT: valid
+U: TYPE;
+a: U;
+b: U;
+f: U -> U;
+QUERY LET v_0 = (a = b)
+IN NOT (v_0 AND NOT v_0);
diff --git a/test/regress/regress0/let.smt b/test/regress/regress0/let.smt
new file mode 100644
index 0000000..8b747c3
--- /dev/null
+++ b/test/regress/regress0/let.smt
@@ -0,0 +1,6 @@
+(benchmark let_test
+  :logic QF_UF
+  :status unsat
+  :extrafuns ((a U) (b U) (f U U)) 
+  :formula (let (?x a) (and (= a b) (not (= ?x b))))
+)
\ No newline at end of file
diff --git a/test/regress/regress0/let2.smt b/test/regress/regress0/let2.smt
new file mode 100644
index 0000000..aa3d20b
--- /dev/null
+++ b/test/regress/regress0/let2.smt
@@ -0,0 +1,5 @@
+(benchmark let_test
+  :logic QF_UF
+  :status sat
+  :extrafuns ((a U) (b U) (f U U)) 
+  :formula (let (?x (f a)) (= ?x (f b))))
\ No newline at end of file
diff --git a/test/regress/regress0/logops.01.cvc b/test/regress/regress0/logops.01.cvc
new file mode 100644
index 0000000..2c2ac2f
--- /dev/null
+++ b/test/regress/regress0/logops.01.cvc
@@ -0,0 +1,3 @@
+a, b, c: BOOLEAN;
+% EXPECT: valid
+QUERY (a XOR b) <=> (NOT a AND b) OR (NOT b AND a);
diff --git a/test/regress/regress0/logops.02.cvc b/test/regress/regress0/logops.02.cvc
new file mode 100644
index 0000000..67415e9
--- /dev/null
+++ b/test/regress/regress0/logops.02.cvc
@@ -0,0 +1,3 @@
+a, b, c: BOOLEAN;
+% EXPECT: invalid
+QUERY NOT c AND b;
diff --git a/test/regress/regress0/logops.03.cvc b/test/regress/regress0/logops.03.cvc
new file mode 100644
index 0000000..42298a8
--- /dev/null
+++ b/test/regress/regress0/logops.03.cvc
@@ -0,0 +1,3 @@
+a, b, c: BOOLEAN;
+% EXPECT: valid
+QUERY (IF c THEN a ELSE b ENDIF) <=> ((c AND a) OR (NOT c AND b));
diff --git a/test/regress/regress0/logops.04.cvc b/test/regress/regress0/logops.04.cvc
new file mode 100644
index 0000000..89a9db3
--- /dev/null
+++ b/test/regress/regress0/logops.04.cvc
@@ -0,0 +1,3 @@
+a, b, c: BOOLEAN;
+% EXPECT: valid
+QUERY (a => b) <=> (NOT a OR b);
diff --git a/test/regress/regress0/logops.05.cvc b/test/regress/regress0/logops.05.cvc
new file mode 100644
index 0000000..1ec94e5
--- /dev/null
+++ b/test/regress/regress0/logops.05.cvc
@@ -0,0 +1,4 @@
+a, b, c: BOOLEAN;
+% EXPECT: valid
+QUERY TRUE XOR FALSE;
+ 
diff --git a/test/regress/regress0/parallel-let.smt2 b/test/regress/regress0/parallel-let.smt2
new file mode 100644
index 0000000..1f12522
--- /dev/null
+++ b/test/regress/regress0/parallel-let.smt2
@@ -0,0 +1,9 @@
+(set-logic QF_UF)
+(set-info :status unsat)
+(declare-sort U 0)
+(declare-fun x () U)
+(declare-fun y () U)
+(assert (distinct x y))
+(assert (let ((x y) (y x)) (= x y)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/parser/Makefile.am b/test/regress/regress0/parser/Makefile.am
new file mode 100644
index 0000000..ab91679
--- /dev/null
+++ b/test/regress/regress0/parser/Makefile.am
@@ -0,0 +1,45 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	declarefun-emptyset-uf.smt2 \
+	constraint.smt2 \
+	strings20.smt2 \
+	strings25.smt2
+
+EXTRA_DIST = $(TESTS)
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+
+# disabled tests, yet distribute
+#EXTRA_DIST += \
+#	setofsets-disequal.smt2
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/parser/Makefile.in b/test/regress/regress0/parser/Makefile.in
new file mode 100644
index 0000000..c27a5dd
--- /dev/null
+++ b/test/regress/regress0/parser/Makefile.in
@@ -0,0 +1,1021 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/parser
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	declarefun-emptyset-uf.smt2 \
+	constraint.smt2 \
+	strings20.smt2 \
+	strings25.smt2
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/parser/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/parser/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+declarefun-emptyset-uf.smt2.log: declarefun-emptyset-uf.smt2
+	@p='declarefun-emptyset-uf.smt2'; \
+	b='declarefun-emptyset-uf.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+constraint.smt2.log: constraint.smt2
+	@p='constraint.smt2'; \
+	b='constraint.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+strings20.smt2.log: strings20.smt2
+	@p='strings20.smt2'; \
+	b='strings20.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+strings25.smt2.log: strings25.smt2
+	@p='strings25.smt2'; \
+	b='strings25.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+
+# disabled tests, yet distribute
+#EXTRA_DIST += \
+#	setofsets-disequal.smt2
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/parser/constraint.smt2 b/test/regress/regress0/parser/constraint.smt2
new file mode 100644
index 0000000..ffd5662
--- /dev/null
+++ b/test/regress/regress0/parser/constraint.smt2
@@ -0,0 +1,5 @@
+(set-logic QF_UF)
+(set-info :status sat)
+(declare-sort U 0)
+(declare-fun Constraint () U)
+(check-sat)
diff --git a/test/regress/regress0/parser/declarefun-emptyset-uf.smt2 b/test/regress/regress0/parser/declarefun-emptyset-uf.smt2
new file mode 100644
index 0000000..a6e5144
--- /dev/null
+++ b/test/regress/regress0/parser/declarefun-emptyset-uf.smt2
@@ -0,0 +1,7 @@
+; EXPECT: sat
+(set-logic QF_UF)
+(declare-sort T 0)
+(declare-fun union () T)
+(declare-fun emptyset () T)
+(assert (= union emptyset))
+(check-sat)
diff --git a/test/regress/regress0/parser/strings20.smt2 b/test/regress/regress0/parser/strings20.smt2
new file mode 100644
index 0000000..6e9ea44
--- /dev/null
+++ b/test/regress/regress0/parser/strings20.smt2
@@ -0,0 +1,15 @@
+; EXPECT: sat
+; EXPECT: (model
+; EXPECT: (define-fun s () String "\"")
+; EXPECT: )
+
+(set-logic QF_S)
+(set-info :smt-lib-version 2.0)
+(set-option :produce-models true)
+
+(declare-fun s () String)
+
+(assert (= s "\""))
+
+(check-sat)
+(get-model)
diff --git a/test/regress/regress0/parser/strings25.smt2 b/test/regress/regress0/parser/strings25.smt2
new file mode 100644
index 0000000..90602e6
--- /dev/null
+++ b/test/regress/regress0/parser/strings25.smt2
@@ -0,0 +1,15 @@
+; EXPECT: sat
+; EXPECT: (model
+; EXPECT: (define-fun s () String """")
+; EXPECT: )
+
+(set-logic QF_S)
+(set-info :smt-lib-version 2.5)
+(set-option :produce-models true)
+
+(declare-fun s () String)
+
+(assert (= s """"))
+
+(check-sat)
+(get-model)
diff --git a/test/regress/regress0/precedence/Makefile.am b/test/regress/regress0/precedence/Makefile.am
new file mode 100644
index 0000000..0962371
--- /dev/null
+++ b/test/regress/regress0/precedence/Makefile.am
@@ -0,0 +1,59 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	and-xor.cvc \
+	and-not.cvc \
+	bool-cmp.cvc \
+	cmp-plus.cvc \
+	eq-fun.cvc \
+	iff-assoc.cvc \
+	iff-implies.cvc \
+	implies-assoc.cvc \
+	implies-iff.cvc \
+	implies-or.cvc \
+	not-and.cvc \
+	not-eq.cvc \
+	plus-mult.cvc \
+	or-implies.cvc \
+	or-xor.cvc \
+	xor-or.cvc \
+	xor-and.cvc \
+	xor-assoc.cvc
+
+EXTRA_DIST = $(TESTS)
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/precedence/Makefile.in b/test/regress/regress0/precedence/Makefile.in
new file mode 100644
index 0000000..da3dc58
--- /dev/null
+++ b/test/regress/regress0/precedence/Makefile.in
@@ -0,0 +1,1133 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/precedence
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	and-xor.cvc \
+	and-not.cvc \
+	bool-cmp.cvc \
+	cmp-plus.cvc \
+	eq-fun.cvc \
+	iff-assoc.cvc \
+	iff-implies.cvc \
+	implies-assoc.cvc \
+	implies-iff.cvc \
+	implies-or.cvc \
+	not-and.cvc \
+	not-eq.cvc \
+	plus-mult.cvc \
+	or-implies.cvc \
+	or-xor.cvc \
+	xor-or.cvc \
+	xor-and.cvc \
+	xor-assoc.cvc
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/precedence/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/precedence/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+and-xor.cvc.log: and-xor.cvc
+	@p='and-xor.cvc'; \
+	b='and-xor.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+and-not.cvc.log: and-not.cvc
+	@p='and-not.cvc'; \
+	b='and-not.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bool-cmp.cvc.log: bool-cmp.cvc
+	@p='bool-cmp.cvc'; \
+	b='bool-cmp.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cmp-plus.cvc.log: cmp-plus.cvc
+	@p='cmp-plus.cvc'; \
+	b='cmp-plus.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+eq-fun.cvc.log: eq-fun.cvc
+	@p='eq-fun.cvc'; \
+	b='eq-fun.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+iff-assoc.cvc.log: iff-assoc.cvc
+	@p='iff-assoc.cvc'; \
+	b='iff-assoc.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+iff-implies.cvc.log: iff-implies.cvc
+	@p='iff-implies.cvc'; \
+	b='iff-implies.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+implies-assoc.cvc.log: implies-assoc.cvc
+	@p='implies-assoc.cvc'; \
+	b='implies-assoc.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+implies-iff.cvc.log: implies-iff.cvc
+	@p='implies-iff.cvc'; \
+	b='implies-iff.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+implies-or.cvc.log: implies-or.cvc
+	@p='implies-or.cvc'; \
+	b='implies-or.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+not-and.cvc.log: not-and.cvc
+	@p='not-and.cvc'; \
+	b='not-and.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+not-eq.cvc.log: not-eq.cvc
+	@p='not-eq.cvc'; \
+	b='not-eq.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+plus-mult.cvc.log: plus-mult.cvc
+	@p='plus-mult.cvc'; \
+	b='plus-mult.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+or-implies.cvc.log: or-implies.cvc
+	@p='or-implies.cvc'; \
+	b='or-implies.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+or-xor.cvc.log: or-xor.cvc
+	@p='or-xor.cvc'; \
+	b='or-xor.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+xor-or.cvc.log: xor-or.cvc
+	@p='xor-or.cvc'; \
+	b='xor-or.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+xor-and.cvc.log: xor-and.cvc
+	@p='xor-and.cvc'; \
+	b='xor-and.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+xor-assoc.cvc.log: xor-assoc.cvc
+	@p='xor-assoc.cvc'; \
+	b='xor-assoc.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/precedence/and-not.cvc b/test/regress/regress0/precedence/and-not.cvc
new file mode 100644
index 0000000..5115a90
--- /dev/null
+++ b/test/regress/regress0/precedence/and-not.cvc
@@ -0,0 +1,6 @@
+% EXPECT: valid
+% Simple test for right precedence of AND and NOT.
+
+A, B: BOOLEAN;
+
+QUERY (A AND NOT B) <=> (A AND (NOT B));
diff --git a/test/regress/regress0/precedence/and-xor.cvc b/test/regress/regress0/precedence/and-xor.cvc
new file mode 100644
index 0000000..879becb
--- /dev/null
+++ b/test/regress/regress0/precedence/and-xor.cvc
@@ -0,0 +1,6 @@
+% EXPECT: valid
+% Simple test for right precedence of XOR and AND.
+
+A, B, C: BOOLEAN;
+
+QUERY (A AND B XOR C) <=> ((A AND B) XOR C);
diff --git a/test/regress/regress0/precedence/bool-cmp.cvc b/test/regress/regress0/precedence/bool-cmp.cvc
new file mode 100644
index 0000000..b8729e9
--- /dev/null
+++ b/test/regress/regress0/precedence/bool-cmp.cvc
@@ -0,0 +1,6 @@
+% EXPECT: valid
+% Simple test for right precedence of comparisons and booleans
+
+x , y, z: INT;
+
+QUERY (x > y AND y = z OR x < z) <=> (((x > y) AND (y = z)) OR (x < z));
diff --git a/test/regress/regress0/precedence/cmp-plus.cvc b/test/regress/regress0/precedence/cmp-plus.cvc
new file mode 100644
index 0000000..a7c07fe
--- /dev/null
+++ b/test/regress/regress0/precedence/cmp-plus.cvc
@@ -0,0 +1,7 @@
+% EXPECT: valid
+% Simple test for right precedence of comparisons and plus/minus
+
+x, y, z: INT;
+
+QUERY (x + y - z > 0 AND 0 < x - y + z) <=> 
+  ((((x + y) - z) > 0) AND (0 < ((x - y) + z)));
diff --git a/test/regress/regress0/precedence/eq-fun.cvc b/test/regress/regress0/precedence/eq-fun.cvc
new file mode 100644
index 0000000..9e581d5
--- /dev/null
+++ b/test/regress/regress0/precedence/eq-fun.cvc
@@ -0,0 +1,8 @@
+% EXPECT: valid
+% Simple test for right precedence of function application and =
+
+T : TYPE;
+x , y: T;
+f : T -> T;
+
+QUERY (f(x) = f(y)) <=> ((f(x)) = (f(y)));
diff --git a/test/regress/regress0/precedence/iff-assoc.cvc b/test/regress/regress0/precedence/iff-assoc.cvc
new file mode 100644
index 0000000..745cc74
--- /dev/null
+++ b/test/regress/regress0/precedence/iff-assoc.cvc
@@ -0,0 +1,6 @@
+% EXPECT: valid
+% Simple test for right associativity of <=>
+
+A, B, C: BOOLEAN;
+
+QUERY (A <=> B <=> C) <=> (A <=> (B <=> C));
diff --git a/test/regress/regress0/precedence/iff-implies.cvc b/test/regress/regress0/precedence/iff-implies.cvc
new file mode 100644
index 0000000..947433c
--- /dev/null
+++ b/test/regress/regress0/precedence/iff-implies.cvc
@@ -0,0 +1,6 @@
+% EXPECT: valid
+% Simple test for right precedence of <=> and =>.
+
+A, B, C: BOOLEAN;
+
+QUERY (A <=> B => C) <=> ((A <=> (B => C)));
diff --git a/test/regress/regress0/precedence/implies-assoc.cvc b/test/regress/regress0/precedence/implies-assoc.cvc
new file mode 100644
index 0000000..1a7cef3
--- /dev/null
+++ b/test/regress/regress0/precedence/implies-assoc.cvc
@@ -0,0 +1,6 @@
+% EXPECT: valid
+% Simple test for right associativity of =>
+
+A, B, C: BOOLEAN;
+
+QUERY (A => B => C) <=> (A => (B => C));
diff --git a/test/regress/regress0/precedence/implies-iff.cvc b/test/regress/regress0/precedence/implies-iff.cvc
new file mode 100644
index 0000000..3de26eb
--- /dev/null
+++ b/test/regress/regress0/precedence/implies-iff.cvc
@@ -0,0 +1,6 @@
+% EXPECT: valid
+% Simple test for right precedence of <=> and =>.
+
+A, B, C: BOOLEAN;
+
+QUERY (A => B <=> C) <=> ((A => B) <=> C);
diff --git a/test/regress/regress0/precedence/implies-or.cvc b/test/regress/regress0/precedence/implies-or.cvc
new file mode 100644
index 0000000..d724d33
--- /dev/null
+++ b/test/regress/regress0/precedence/implies-or.cvc
@@ -0,0 +1,6 @@
+% EXPECT: valid
+% Simple test for right precedence of => and OR.
+
+A, B, C: BOOLEAN;
+
+QUERY (A => B OR C) <=> (A => (B OR C));
diff --git a/test/regress/regress0/precedence/not-and.cvc b/test/regress/regress0/precedence/not-and.cvc
new file mode 100644
index 0000000..fc671d7
--- /dev/null
+++ b/test/regress/regress0/precedence/not-and.cvc
@@ -0,0 +1,6 @@
+% EXPECT: valid
+% Simple test for right precedence of AND and NOT.
+
+A, B, C: BOOLEAN;
+
+QUERY (NOT A AND B) <=> ((NOT A) AND B);
diff --git a/test/regress/regress0/precedence/not-eq.cvc b/test/regress/regress0/precedence/not-eq.cvc
new file mode 100644
index 0000000..f658c12
--- /dev/null
+++ b/test/regress/regress0/precedence/not-eq.cvc
@@ -0,0 +1,6 @@
+% EXPECT: valid
+% Simple test for right precedence of = and NOT.
+
+A, B: INT;
+
+QUERY (NOT A = B) <=> (NOT (A = B));
diff --git a/test/regress/regress0/precedence/or-implies.cvc b/test/regress/regress0/precedence/or-implies.cvc
new file mode 100644
index 0000000..209df85
--- /dev/null
+++ b/test/regress/regress0/precedence/or-implies.cvc
@@ -0,0 +1,6 @@
+% EXPECT: valid
+% Simple test for right precedence of => and OR.
+
+A, B, C: BOOLEAN;
+
+QUERY (A OR B => C) <=> ((A OR B) => C);
diff --git a/test/regress/regress0/precedence/or-xor.cvc b/test/regress/regress0/precedence/or-xor.cvc
new file mode 100644
index 0000000..2a25bac
--- /dev/null
+++ b/test/regress/regress0/precedence/or-xor.cvc
@@ -0,0 +1,7 @@
+% EXPECT: valid
+% Simple test for right precedence of OR and XOR.
+
+A, B, C: BOOLEAN;
+
+QUERY ((A OR B XOR C) <=> ((A OR B) XOR C))
+  AND ((A XOR B OR C) <=> ((A XOR B) OR C));
diff --git a/test/regress/regress0/precedence/plus-mult.cvc b/test/regress/regress0/precedence/plus-mult.cvc
new file mode 100644
index 0000000..5d980f9
--- /dev/null
+++ b/test/regress/regress0/precedence/plus-mult.cvc
@@ -0,0 +1,7 @@
+% EXPECT: valid
+% Simple test for right precedence of plus/minus and mult/divide
+
+a, b, c, d, e: INT;
+
+QUERY (a + 2 * b / 3 - c / 4 * 5 + d / 6 - e ) =
+  ((((a + ((2 * b) / 3)) - ((c / 4) * 5)) + (d / 6)) - e);
diff --git a/test/regress/regress0/precedence/xor-and.cvc b/test/regress/regress0/precedence/xor-and.cvc
new file mode 100644
index 0000000..68896db
--- /dev/null
+++ b/test/regress/regress0/precedence/xor-and.cvc
@@ -0,0 +1,6 @@
+% EXPECT: valid
+% Simple test for right precedence of XOR and AND.
+
+A, B, C: BOOLEAN;
+
+QUERY (A XOR B AND C) <=> (A XOR (B AND C));
diff --git a/test/regress/regress0/precedence/xor-assoc.cvc b/test/regress/regress0/precedence/xor-assoc.cvc
new file mode 100644
index 0000000..f31324a
--- /dev/null
+++ b/test/regress/regress0/precedence/xor-assoc.cvc
@@ -0,0 +1,6 @@
+% EXPECT: valid
+% Simple test for left associativity of XOR
+
+A, B, C: BOOLEAN;
+
+QUERY (A XOR B XOR C) <=> ((A XOR B) XOR C);
diff --git a/test/regress/regress0/precedence/xor-or.cvc b/test/regress/regress0/precedence/xor-or.cvc
new file mode 100644
index 0000000..7572867
--- /dev/null
+++ b/test/regress/regress0/precedence/xor-or.cvc
@@ -0,0 +1,6 @@
+% EXPECT: valid
+% Simple test for right precedence of OR and XOR.
+
+A, B, C: BOOLEAN;
+
+QUERY (A XOR B OR C) <=> ((A XOR B) OR C);
diff --git a/test/regress/regress0/preprocess/Makefile.am b/test/regress/regress0/preprocess/Makefile.am
new file mode 100644
index 0000000..8ec5e35
--- /dev/null
+++ b/test/regress/regress0/preprocess/Makefile.am
@@ -0,0 +1,62 @@
+SUBDIRS = . 
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+
+# Regression tests for SMT inputs
+SMT_TESTS =
+
+# Regression tests for SMT2 inputs
+SMT2_TESTS =
+
+# Regression tests for PL inputs
+CVC_TESTS = \
+	preprocess_00.cvc \
+	preprocess_01.cvc \
+	preprocess_02.cvc \
+	preprocess_03.cvc \
+	preprocess_04.cvc \
+	preprocess_05.cvc \
+	preprocess_06.cvc \
+	preprocess_07.cvc \
+	preprocess_08.cvc \
+	preprocess_09.cvc \
+	preprocess_10.cvc \
+	preprocess_11.cvc \
+	preprocess_12.cvc \
+	preprocess_13.cvc \
+	preprocess_14.cvc \
+	preprocess_15.cvc
+
+# Regression tests derived from bug reports
+BUG_TESTS = 
+
+TESTS =	$(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(BUG_TESTS)
+
+EXTRA_DIST = $(TESTS)
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/preprocess/Makefile.in b/test/regress/regress0/preprocess/Makefile.in
new file mode 100644
index 0000000..a5b5b98
--- /dev/null
+++ b/test/regress/regress0/preprocess/Makefile.in
@@ -0,0 +1,1300 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+TESTS = $(am__EXEEXT_1) $(am__EXEEXT_1) $(CVC_TESTS) $(am__EXEEXT_1)
+subdir = test/regress/regress0/preprocess
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+am__EXEEXT_1 =
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+SUBDIRS = . 
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+
+# Regression tests for SMT inputs
+SMT_TESTS = 
+
+# Regression tests for SMT2 inputs
+SMT2_TESTS = 
+
+# Regression tests for PL inputs
+CVC_TESTS = \
+	preprocess_00.cvc \
+	preprocess_01.cvc \
+	preprocess_02.cvc \
+	preprocess_03.cvc \
+	preprocess_04.cvc \
+	preprocess_05.cvc \
+	preprocess_06.cvc \
+	preprocess_07.cvc \
+	preprocess_08.cvc \
+	preprocess_09.cvc \
+	preprocess_10.cvc \
+	preprocess_11.cvc \
+	preprocess_12.cvc \
+	preprocess_13.cvc \
+	preprocess_14.cvc \
+	preprocess_15.cvc
+
+
+# Regression tests derived from bug reports
+BUG_TESTS = 
+EXTRA_DIST = $(TESTS)
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/preprocess/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/preprocess/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+preprocess_00.cvc.log: preprocess_00.cvc
+	@p='preprocess_00.cvc'; \
+	b='preprocess_00.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+preprocess_01.cvc.log: preprocess_01.cvc
+	@p='preprocess_01.cvc'; \
+	b='preprocess_01.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+preprocess_02.cvc.log: preprocess_02.cvc
+	@p='preprocess_02.cvc'; \
+	b='preprocess_02.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+preprocess_03.cvc.log: preprocess_03.cvc
+	@p='preprocess_03.cvc'; \
+	b='preprocess_03.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+preprocess_04.cvc.log: preprocess_04.cvc
+	@p='preprocess_04.cvc'; \
+	b='preprocess_04.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+preprocess_05.cvc.log: preprocess_05.cvc
+	@p='preprocess_05.cvc'; \
+	b='preprocess_05.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+preprocess_06.cvc.log: preprocess_06.cvc
+	@p='preprocess_06.cvc'; \
+	b='preprocess_06.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+preprocess_07.cvc.log: preprocess_07.cvc
+	@p='preprocess_07.cvc'; \
+	b='preprocess_07.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+preprocess_08.cvc.log: preprocess_08.cvc
+	@p='preprocess_08.cvc'; \
+	b='preprocess_08.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+preprocess_09.cvc.log: preprocess_09.cvc
+	@p='preprocess_09.cvc'; \
+	b='preprocess_09.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+preprocess_10.cvc.log: preprocess_10.cvc
+	@p='preprocess_10.cvc'; \
+	b='preprocess_10.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+preprocess_11.cvc.log: preprocess_11.cvc
+	@p='preprocess_11.cvc'; \
+	b='preprocess_11.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+preprocess_12.cvc.log: preprocess_12.cvc
+	@p='preprocess_12.cvc'; \
+	b='preprocess_12.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+preprocess_13.cvc.log: preprocess_13.cvc
+	@p='preprocess_13.cvc'; \
+	b='preprocess_13.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+preprocess_14.cvc.log: preprocess_14.cvc
+	@p='preprocess_14.cvc'; \
+	b='preprocess_14.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+preprocess_15.cvc.log: preprocess_15.cvc
+	@p='preprocess_15.cvc'; \
+	b='preprocess_15.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/preprocess/preprocess_00.cvc b/test/regress/regress0/preprocess/preprocess_00.cvc
new file mode 100644
index 0000000..c868435
--- /dev/null
+++ b/test/regress/regress0/preprocess/preprocess_00.cvc
@@ -0,0 +1,9 @@
+% EXPECT: valid
+
+a0, a1, a2, a3, a4, a5, a6, a7, a8, a9: BOOLEAN;
+
+ASSERT (a5);
+
+QUERY (a0 OR a1 OR a2 OR a3 OR a4 OR a5 OR a6 OR a7 OR a8 OR a9);
+
+
diff --git a/test/regress/regress0/preprocess/preprocess_01.cvc b/test/regress/regress0/preprocess/preprocess_01.cvc
new file mode 100644
index 0000000..1d3fafa
--- /dev/null
+++ b/test/regress/regress0/preprocess/preprocess_01.cvc
@@ -0,0 +1,11 @@
+% EXPECT: unsat
+
+a0, a1, a2, a3, a4, a5, a6, a7, a8, a9: BOOLEAN;
+
+ASSERT (a5);
+
+ASSERT NOT (a0 OR a1 OR a2 OR a3 OR a4 OR a5 OR a6 OR a7 OR a8 OR a9);
+
+CHECKSAT;
+
+
diff --git a/test/regress/regress0/preprocess/preprocess_02.cvc b/test/regress/regress0/preprocess/preprocess_02.cvc
new file mode 100644
index 0000000..e2c93a3
--- /dev/null
+++ b/test/regress/regress0/preprocess/preprocess_02.cvc
@@ -0,0 +1,9 @@
+% EXPECT: valid
+
+a0, a1, a2, a3, a4, a5, a6, a7, a8, a9: BOOLEAN;
+
+ASSERT (NOT a5);
+
+QUERY NOT (a0 AND a1 AND a2 AND a3 AND a4 AND a5 AND a6 AND a7 AND a8 AND a9);
+
+
diff --git a/test/regress/regress0/preprocess/preprocess_03.cvc b/test/regress/regress0/preprocess/preprocess_03.cvc
new file mode 100644
index 0000000..7503594
--- /dev/null
+++ b/test/regress/regress0/preprocess/preprocess_03.cvc
@@ -0,0 +1,10 @@
+% EXPECT: unsat
+
+a0, a1, a2, a3, a4, a5, a6, a7, a8, a9: BOOLEAN;
+
+ASSERT (NOT a5);
+ASSERT (a0 AND a1 AND a2 AND a3 AND a4 AND a5 AND a6 AND a7 AND a8 AND a9);
+
+CHECKSAT;
+
+
diff --git a/test/regress/regress0/preprocess/preprocess_04.cvc b/test/regress/regress0/preprocess/preprocess_04.cvc
new file mode 100644
index 0000000..fd41214
--- /dev/null
+++ b/test/regress/regress0/preprocess/preprocess_04.cvc
@@ -0,0 +1,15 @@
+% EXPECT: unsat
+
+a0, a1, a2, a3, a4, a5, a6, a7, a8: BOOLEAN;
+
+ASSERT (NOT a1);
+ASSERT (a4 AND a7);
+ASSERT 
+   IF (a0 AND a1 AND a2) 
+   THEN (a3 AND a4 AND a5) 
+   ELSE (a6 AND NOT a7 AND a8)
+   ENDIF;
+
+CHECKSAT;
+
+
diff --git a/test/regress/regress0/preprocess/preprocess_05.cvc b/test/regress/regress0/preprocess/preprocess_05.cvc
new file mode 100644
index 0000000..54e070a
--- /dev/null
+++ b/test/regress/regress0/preprocess/preprocess_05.cvc
@@ -0,0 +1,15 @@
+% EXPECT: sat
+
+a0, a1, a2, a3, a4, a5, a6, a7, a8: BOOLEAN;
+
+ASSERT (NOT a1);
+ASSERT (a4 AND a7);
+ASSERT 
+   IF (a0 AND a1 AND a2) 
+   THEN (a3 AND a4 AND a5) 
+   ELSE (a6 AND a7 AND a8)
+   ENDIF;
+
+CHECKSAT;
+
+
diff --git a/test/regress/regress0/preprocess/preprocess_06.cvc b/test/regress/regress0/preprocess/preprocess_06.cvc
new file mode 100644
index 0000000..3e45c52
--- /dev/null
+++ b/test/regress/regress0/preprocess/preprocess_06.cvc
@@ -0,0 +1,14 @@
+% EXPECT: valid
+
+a0, a1, a2, a3, a4, a5: BOOLEAN;
+
+ASSERT (a0 => a1);
+ASSERT (a1 => a2);
+ASSERT (a2 => a3);
+ASSERT (a3 => a4);
+ASSERT (a4 => a5);
+ASSERT a0;
+
+QUERY (a0 <=> a5);
+
+
diff --git a/test/regress/regress0/preprocess/preprocess_07.cvc b/test/regress/regress0/preprocess/preprocess_07.cvc
new file mode 100644
index 0000000..3de66a9
--- /dev/null
+++ b/test/regress/regress0/preprocess/preprocess_07.cvc
@@ -0,0 +1,10 @@
+% EXPECT: sat
+
+a0, a1, a2, a3, a4, a5: BOOLEAN;
+
+ASSERT ((a0 AND a1 AND a2) <=> (a3 OR a4 OR a5));
+ASSERT (a4);
+
+CHECKSAT;
+
+
diff --git a/test/regress/regress0/preprocess/preprocess_08.cvc b/test/regress/regress0/preprocess/preprocess_08.cvc
new file mode 100644
index 0000000..880c849
--- /dev/null
+++ b/test/regress/regress0/preprocess/preprocess_08.cvc
@@ -0,0 +1,10 @@
+% EXPECT: sat
+
+a0, a1, a2, a3, a4, a5: BOOLEAN;
+
+ASSERT ((a0 AND a1 AND a2) <=> (a3 OR a4 OR a5));
+ASSERT (NOT a1);
+
+CHECKSAT;
+
+
diff --git a/test/regress/regress0/preprocess/preprocess_09.cvc b/test/regress/regress0/preprocess/preprocess_09.cvc
new file mode 100644
index 0000000..1ee07e3
--- /dev/null
+++ b/test/regress/regress0/preprocess/preprocess_09.cvc
@@ -0,0 +1,14 @@
+% EXPECT: sat
+
+a0, a1, a2, a3, a4, a5: BOOLEAN;
+
+ASSERT ((a0 AND a1 AND a2) <=> (a3 OR a4 OR a5));
+ASSERT (a0);
+ASSERT (a1);
+ASSERT (a2);
+ASSERT (NOT a3);
+ASSERT (NOT a5);
+
+CHECKSAT;
+
+
diff --git a/test/regress/regress0/preprocess/preprocess_10.cvc b/test/regress/regress0/preprocess/preprocess_10.cvc
new file mode 100644
index 0000000..6158d6f
--- /dev/null
+++ b/test/regress/regress0/preprocess/preprocess_10.cvc
@@ -0,0 +1,11 @@
+% EXPECT: sat
+x: REAL;
+b: BOOLEAN;
+
+ASSERT (x = IF b THEN 10 ELSE -10 ENDIF);
+ASSERT b;
+
+CHECKSAT;
+
+
+
diff --git a/test/regress/regress0/preprocess/preprocess_11.cvc b/test/regress/regress0/preprocess/preprocess_11.cvc
new file mode 100644
index 0000000..fe0aed7
--- /dev/null
+++ b/test/regress/regress0/preprocess/preprocess_11.cvc
@@ -0,0 +1,10 @@
+% EXPECT: sat
+
+x: REAL;
+y: REAL;
+
+ASSERT ((0 = IF TRUE THEN x ELSE 1 ENDIF) AND (0 = IF (x = 0) THEN 0 ELSE 1 ENDIF) AND (x = IF TRUE THEN y ELSE 0 ENDIF) AND (0 = IF TRUE THEN 0 ELSE 0 ENDIF));
+
+CHECKSAT;
+
+
diff --git a/test/regress/regress0/preprocess/preprocess_12.cvc b/test/regress/regress0/preprocess/preprocess_12.cvc
new file mode 100644
index 0000000..a1da32c
--- /dev/null
+++ b/test/regress/regress0/preprocess/preprocess_12.cvc
@@ -0,0 +1,11 @@
+% EXPECT: sat
+
+x: REAL;
+y: REAL;
+b: BOOLEAN;
+
+ASSERT ((0 = IF b THEN x - y ELSE 2*x ENDIF));
+
+CHECKSAT;
+
+
diff --git a/test/regress/regress0/preprocess/preprocess_13.cvc b/test/regress/regress0/preprocess/preprocess_13.cvc
new file mode 100644
index 0000000..8b26c0d
--- /dev/null
+++ b/test/regress/regress0/preprocess/preprocess_13.cvc
@@ -0,0 +1,9 @@
+% EXPECT: valid
+
+a0, a1, a2, a3, a4, a5, a6, a7, a8, a9: BOOLEAN;
+
+ASSERT (a5);
+
+QUERY (a0 OR (a1 OR (a2 OR (a3 OR (a4 OR (a5 OR (FALSE OR (a6 OR (a7 OR (a8 OR a9))))))))));
+
+
diff --git a/test/regress/regress0/preprocess/preprocess_14.cvc b/test/regress/regress0/preprocess/preprocess_14.cvc
new file mode 100644
index 0000000..4fbbce6
--- /dev/null
+++ b/test/regress/regress0/preprocess/preprocess_14.cvc
@@ -0,0 +1,11 @@
+% EXPECT: sat
+
+a0, a1, a2, a3, a4, a5, a6, a7, a8, a9: BOOLEAN;
+
+ASSERT (a5);
+
+ASSERT (a0 OR (a1 AND (a2 OR (a3 AND (a4 AND (a5 AND (TRUE AND (a6 AND (a7 AND (a8 AND a9))))))))));
+
+CHECKSAT;
+
+
diff --git a/test/regress/regress0/preprocess/preprocess_15.cvc b/test/regress/regress0/preprocess/preprocess_15.cvc
new file mode 100644
index 0000000..ea468c8
--- /dev/null
+++ b/test/regress/regress0/preprocess/preprocess_15.cvc
@@ -0,0 +1,11 @@
+% EXPECT: sat
+
+a0, a1, a2, a3, a4, a5, a6, a7, a8, a9: BOOLEAN;
+
+ASSERT (a5);
+
+ASSERT (a0 OR (a1 AND (a2 OR (a3 AND (a4 AND (a5 AND (TRUE AND (a3 AND (a6 AND (a7 AND (a8 AND a9)))))))))));
+
+CHECKSAT;
+
+
diff --git a/test/regress/regress0/print_lambda.cvc b/test/regress/regress0/print_lambda.cvc
new file mode 100644
index 0000000..aee61a5
--- /dev/null
+++ b/test/regress/regress0/print_lambda.cvc
@@ -0,0 +1,9 @@
+% COMMAND-LINE: --produce-models
+% EXPECT: sat
+% EXPECT: f : (INT) -> INT = (LAMBDA(_ufmt_1:INT): 0);
+
+f : INT -> INT;
+ASSERT f(1) = 0;
+CHECKSAT;
+COUNTEREXAMPLE;
+
diff --git a/test/regress/regress0/push-pop/Makefile.am b/test/regress/regress0/push-pop/Makefile.am
new file mode 100644
index 0000000..2621327
--- /dev/null
+++ b/test/regress/regress0/push-pop/Makefile.am
@@ -0,0 +1,65 @@
+SUBDIRS = boolean arith . 
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+
+# Regression tests for SMT inputs
+CVC_TESTS = \
+	test.00.cvc \
+	test.01.cvc \
+	units.cvc \
+	incremental-subst-bug.cvc
+
+SMT2_TESTS = \
+  tiny_bug.smt2
+
+BUG_TESTS = \
+	bug216.smt2 \
+	bug233.cvc \
+	bug326.smt2 \
+	arith_lra_01.smt2 \
+  arith_lra_02.smt2 \
+  quant-fun-proc.smt2 \
+  quant-fun-proc-unmacro.smt2 \
+  quant-fun-proc-unfd.smt2 \
+  bug654-dd.smt2 \
+  bug-fmf-fun-skolem.smt2 \
+  bug674.smt2 \
+  inc-double-u.smt2 \
+  fmf-fun-dbu.smt2 \
+  inc-define.smt2 \
+  bug765.smt2 \
+  bug691.smt2 \
+  bug694-Unapply1.scala-0.smt2
+
+TESTS =	$(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(BUG_TESTS)
+
+EXTRA_DIST = $(TESTS) \
+	bug216.smt2.expect \
+	bug396.smt2
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/push-pop/Makefile.in b/test/regress/regress0/push-pop/Makefile.in
new file mode 100644
index 0000000..44a7d53
--- /dev/null
+++ b/test/regress/regress0/push-pop/Makefile.in
@@ -0,0 +1,1345 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+TESTS = $(SMT2_TESTS) $(CVC_TESTS) $(BUG_TESTS)
+subdir = test/regress/regress0/push-pop
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+SUBDIRS = boolean arith . 
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+
+# Regression tests for SMT inputs
+CVC_TESTS = \
+	test.00.cvc \
+	test.01.cvc \
+	units.cvc \
+	incremental-subst-bug.cvc
+
+SMT2_TESTS = \
+  tiny_bug.smt2
+
+BUG_TESTS = \
+	bug216.smt2 \
+	bug233.cvc \
+	bug326.smt2 \
+	arith_lra_01.smt2 \
+  arith_lra_02.smt2 \
+  quant-fun-proc.smt2 \
+  quant-fun-proc-unmacro.smt2 \
+  quant-fun-proc-unfd.smt2 \
+  bug654-dd.smt2 \
+  bug-fmf-fun-skolem.smt2 \
+  bug674.smt2 \
+  inc-double-u.smt2 \
+  fmf-fun-dbu.smt2 \
+  inc-define.smt2 \
+  bug765.smt2 \
+  bug691.smt2 \
+  bug694-Unapply1.scala-0.smt2
+
+EXTRA_DIST = $(TESTS) \
+	bug216.smt2.expect \
+	bug396.smt2
+
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/push-pop/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/push-pop/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+tiny_bug.smt2.log: tiny_bug.smt2
+	@p='tiny_bug.smt2'; \
+	b='tiny_bug.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+test.00.cvc.log: test.00.cvc
+	@p='test.00.cvc'; \
+	b='test.00.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+test.01.cvc.log: test.01.cvc
+	@p='test.01.cvc'; \
+	b='test.01.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+units.cvc.log: units.cvc
+	@p='units.cvc'; \
+	b='units.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+incremental-subst-bug.cvc.log: incremental-subst-bug.cvc
+	@p='incremental-subst-bug.cvc'; \
+	b='incremental-subst-bug.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug216.smt2.log: bug216.smt2
+	@p='bug216.smt2'; \
+	b='bug216.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug233.cvc.log: bug233.cvc
+	@p='bug233.cvc'; \
+	b='bug233.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug326.smt2.log: bug326.smt2
+	@p='bug326.smt2'; \
+	b='bug326.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith_lra_01.smt2.log: arith_lra_01.smt2
+	@p='arith_lra_01.smt2'; \
+	b='arith_lra_01.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith_lra_02.smt2.log: arith_lra_02.smt2
+	@p='arith_lra_02.smt2'; \
+	b='arith_lra_02.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+quant-fun-proc.smt2.log: quant-fun-proc.smt2
+	@p='quant-fun-proc.smt2'; \
+	b='quant-fun-proc.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+quant-fun-proc-unmacro.smt2.log: quant-fun-proc-unmacro.smt2
+	@p='quant-fun-proc-unmacro.smt2'; \
+	b='quant-fun-proc-unmacro.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+quant-fun-proc-unfd.smt2.log: quant-fun-proc-unfd.smt2
+	@p='quant-fun-proc-unfd.smt2'; \
+	b='quant-fun-proc-unfd.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug654-dd.smt2.log: bug654-dd.smt2
+	@p='bug654-dd.smt2'; \
+	b='bug654-dd.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug-fmf-fun-skolem.smt2.log: bug-fmf-fun-skolem.smt2
+	@p='bug-fmf-fun-skolem.smt2'; \
+	b='bug-fmf-fun-skolem.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug674.smt2.log: bug674.smt2
+	@p='bug674.smt2'; \
+	b='bug674.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+inc-double-u.smt2.log: inc-double-u.smt2
+	@p='inc-double-u.smt2'; \
+	b='inc-double-u.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fmf-fun-dbu.smt2.log: fmf-fun-dbu.smt2
+	@p='fmf-fun-dbu.smt2'; \
+	b='fmf-fun-dbu.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+inc-define.smt2.log: inc-define.smt2
+	@p='inc-define.smt2'; \
+	b='inc-define.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug765.smt2.log: bug765.smt2
+	@p='bug765.smt2'; \
+	b='bug765.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug691.smt2.log: bug691.smt2
+	@p='bug691.smt2'; \
+	b='bug691.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug694-Unapply1.scala-0.smt2.log: bug694-Unapply1.scala-0.smt2
+	@p='bug694-Unapply1.scala-0.smt2'; \
+	b='bug694-Unapply1.scala-0.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/push-pop/arith/Makefile.am b/test/regress/regress0/push-pop/arith/Makefile.am
new file mode 100644
index 0000000..e692c86
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/Makefile.am
@@ -0,0 +1,62 @@
+SUBDIRS = . 
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+
+# Regression tests for SMT inputs
+CVC_TESTS =
+
+SMT2_TESTS = \
+	fuzz_3_10.smt2 \
+	fuzz_3_11.smt2 \
+	fuzz_3_12.smt2 \
+	fuzz_3_13.smt2 \
+	fuzz_3_14.smt2 \
+	fuzz_3_15.smt2 \
+	fuzz_3_1.smt2 \
+	fuzz_3_2.smt2 \
+	fuzz_3_3.smt2 \
+	fuzz_3_4.smt2 \
+	fuzz_3_5.smt2 \
+	fuzz_3_6.smt2 \
+	fuzz_3_7.smt2 \
+	fuzz_3_8.smt2 \
+	fuzz_3_9.smt2 \
+	fuzz_5_1.smt2 \
+	fuzz_5_2.smt2 \
+	fuzz_5_3.smt2 \
+	fuzz_5_4.smt2 \
+	fuzz_5_5.smt2 \
+	fuzz_5_6.smt2
+
+BUG_TESTS = 
+
+TESTS =	$(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(BUG_TESTS)
+
+EXTRA_DIST = $(TESTS) 
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/push-pop/arith/Makefile.in b/test/regress/regress0/push-pop/arith/Makefile.in
new file mode 100644
index 0000000..e00a38f
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/Makefile.in
@@ -0,0 +1,1333 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+TESTS = $(SMT2_TESTS) $(am__EXEEXT_1) $(am__EXEEXT_1)
+subdir = test/regress/regress0/push-pop/arith
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+am__EXEEXT_1 =
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+SUBDIRS = . 
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+
+# Regression tests for SMT inputs
+CVC_TESTS = 
+SMT2_TESTS = \
+	fuzz_3_10.smt2 \
+	fuzz_3_11.smt2 \
+	fuzz_3_12.smt2 \
+	fuzz_3_13.smt2 \
+	fuzz_3_14.smt2 \
+	fuzz_3_15.smt2 \
+	fuzz_3_1.smt2 \
+	fuzz_3_2.smt2 \
+	fuzz_3_3.smt2 \
+	fuzz_3_4.smt2 \
+	fuzz_3_5.smt2 \
+	fuzz_3_6.smt2 \
+	fuzz_3_7.smt2 \
+	fuzz_3_8.smt2 \
+	fuzz_3_9.smt2 \
+	fuzz_5_1.smt2 \
+	fuzz_5_2.smt2 \
+	fuzz_5_3.smt2 \
+	fuzz_5_4.smt2 \
+	fuzz_5_5.smt2 \
+	fuzz_5_6.smt2
+
+BUG_TESTS = 
+EXTRA_DIST = $(TESTS) 
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/push-pop/arith/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/push-pop/arith/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+fuzz_3_10.smt2.log: fuzz_3_10.smt2
+	@p='fuzz_3_10.smt2'; \
+	b='fuzz_3_10.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_3_11.smt2.log: fuzz_3_11.smt2
+	@p='fuzz_3_11.smt2'; \
+	b='fuzz_3_11.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_3_12.smt2.log: fuzz_3_12.smt2
+	@p='fuzz_3_12.smt2'; \
+	b='fuzz_3_12.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_3_13.smt2.log: fuzz_3_13.smt2
+	@p='fuzz_3_13.smt2'; \
+	b='fuzz_3_13.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_3_14.smt2.log: fuzz_3_14.smt2
+	@p='fuzz_3_14.smt2'; \
+	b='fuzz_3_14.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_3_15.smt2.log: fuzz_3_15.smt2
+	@p='fuzz_3_15.smt2'; \
+	b='fuzz_3_15.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_3_1.smt2.log: fuzz_3_1.smt2
+	@p='fuzz_3_1.smt2'; \
+	b='fuzz_3_1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_3_2.smt2.log: fuzz_3_2.smt2
+	@p='fuzz_3_2.smt2'; \
+	b='fuzz_3_2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_3_3.smt2.log: fuzz_3_3.smt2
+	@p='fuzz_3_3.smt2'; \
+	b='fuzz_3_3.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_3_4.smt2.log: fuzz_3_4.smt2
+	@p='fuzz_3_4.smt2'; \
+	b='fuzz_3_4.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_3_5.smt2.log: fuzz_3_5.smt2
+	@p='fuzz_3_5.smt2'; \
+	b='fuzz_3_5.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_3_6.smt2.log: fuzz_3_6.smt2
+	@p='fuzz_3_6.smt2'; \
+	b='fuzz_3_6.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_3_7.smt2.log: fuzz_3_7.smt2
+	@p='fuzz_3_7.smt2'; \
+	b='fuzz_3_7.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_3_8.smt2.log: fuzz_3_8.smt2
+	@p='fuzz_3_8.smt2'; \
+	b='fuzz_3_8.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_3_9.smt2.log: fuzz_3_9.smt2
+	@p='fuzz_3_9.smt2'; \
+	b='fuzz_3_9.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_5_1.smt2.log: fuzz_5_1.smt2
+	@p='fuzz_5_1.smt2'; \
+	b='fuzz_5_1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_5_2.smt2.log: fuzz_5_2.smt2
+	@p='fuzz_5_2.smt2'; \
+	b='fuzz_5_2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_5_3.smt2.log: fuzz_5_3.smt2
+	@p='fuzz_5_3.smt2'; \
+	b='fuzz_5_3.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_5_4.smt2.log: fuzz_5_4.smt2
+	@p='fuzz_5_4.smt2'; \
+	b='fuzz_5_4.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_5_5.smt2.log: fuzz_5_5.smt2
+	@p='fuzz_5_5.smt2'; \
+	b='fuzz_5_5.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_5_6.smt2.log: fuzz_5_6.smt2
+	@p='fuzz_5_6.smt2'; \
+	b='fuzz_5_6.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/push-pop/arith/fuzz_3_1.smt2 b/test/regress/regress0/push-pop/arith/fuzz_3_1.smt2
new file mode 100644
index 0000000..bf2d2a8
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_3_1.smt2
@@ -0,0 +1,31 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(assert (or (not (<= (+ (* (- 24) x0 ) (* (- 15) x2 ) (* (- 18) x2 ) ) 2)) (not (< (+ (* (- 21) x2 ) (* 6 x2 ) ) (- 11))) (> (+ (* (- 3) x0 ) (* 8 x1 ) ) 11) ))
+(assert (not (> (+ (* (- 4) x2 ) (* (- 23) x2 ) ) (- 26))) )
+(assert (or (not (< (+ (* 35 x2 ) (* 40 x0 ) (* 38 x0 ) ) (- 4))) (not (<= (+ (* 46 x0 ) (* (- 16) x1 ) ) (- 44))) (> (+ (* 33 x2 ) (* (- 47) x2 ) (* (- 38) x0 ) ) 32) ))
+(assert (or (<= (+ (* 49 x2 ) (* 42 x0 ) (* 36 x0 ) (* (- 15) x0 ) ) 41) (not (= (+ (* 5 x2 ) (* (- 2) x0 ) ) (- 23))) ))
+(assert (or (< (+ (* 9 x1 ) (* (- 16) x1 ) (* 47 x2 ) (* 2 x0 ) ) (- 18)) (not (>= (+ (* 43 x0 ) (* (- 24) x1 ) ) (- 22))) (not (< (+ (* (- 37) x1 ) (* (- 27) x2 ) (* (- 40) x0 ) (* (- 34) x0 ) ) (- 42))) ))
+(assert (or (not (<= (+ (* (- 26) x1 ) (* (- 20) x0 ) ) 26)) (<= (+ (* 24 x0 ) (* (- 40) x2 ) ) (- 50)) ))
+(check-sat)
+(push 1)
+(assert (or (< (+ (* (- 23) x0 ) (* 25 x2 ) ) 47) (not (>= (+ (* (- 3) x0 ) (* 20 x1 ) (* (- 22) x0 ) ) 4)) (<= (+ (* (- 14) x0 ) (* 32 x2 ) (* 2 x0 ) (* 13 x1 ) ) (- 3)) ))
+(assert (or (>= (+ (* (- 6) x0 ) (* (- 22) x2 ) ) (- 41)) (not (< (+ (* 26 x0 ) (* 15 x1 ) ) 6)) ))
+(assert (<= (+ (* (- 14) x2 ) (* (- 39) x0 ) (* (- 31) x1 ) ) 24) )
+(assert (or (> (+ (* (- 27) x2 ) (* (- 35) x1 ) ) (- 46)) (< (+ (* (- 41) x0 ) (* 46 x1 ) (* 16 x2 ) (* (- 31) x2 ) ) 29) (not (<= (+ (* (- 44) x2 ) (* 46 x0 ) (* (- 33) x1 ) ) (- 14))) ))
+(check-sat)
+(assert (not (>= (+ (* 23 x2 ) (* 5 x1 ) ) (- 16))) )
+(assert (or (>= (+ (* (- 3) x0 ) (* 3 x1 ) (* 44 x0 ) ) (- 39)) (> (+ (* 28 x1 ) (* 26 x1 ) (* (- 22) x2 ) (* (- 36) x2 ) ) 27) (not (= (+ (* 16 x0 ) (* 41 x2 ) (* 16 x2 ) ) (- 47))) ))
+(check-sat)
+(pop 1)
+(assert (not (<= (+ (* (- 28) x1 ) (* (- 11) x0 ) (* 9 x0 ) (* (- 4) x0 ) ) 23)) )
+(assert (not (< (+ (* 16 x1 ) (* (- 18) x2 ) ) 34)) )
+(assert (or (> (+ (* (- 41) x0 ) (* (- 12) x2 ) ) 11) (>= (+ (* 11 x1 ) (* 26 x0 ) (* 11 x1 ) (* 43 x1 ) ) 8) ))
+(assert (or (> (+ (* 17 x2 ) (* (- 35) x2 ) ) 49) (not (= (+ (* 2 x0 ) (* 32 x1 ) (* 40 x1 ) (* 1 x0 ) ) (- 6))) (> (+ (* (- 18) x1 ) (* (- 40) x0 ) (* (- 40) x0 ) ) (- 36)) ))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/arith/fuzz_3_10.smt2 b/test/regress/regress0/push-pop/arith/fuzz_3_10.smt2
new file mode 100644
index 0000000..389c915
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_3_10.smt2
@@ -0,0 +1,22 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(assert (or (not (<= (+ (* 30 x2 ) (* 34 x2 ) (* 16 x2 ) ) 30)) (not (>= (+ (* (- 7) x1 ) (* 5 x1 ) ) (- 36))) ))
+(assert (= (+ (* (- 33) x2 ) (* (- 46) x0 ) (* (- 32) x1 ) ) (- 30)) )
+(assert (or (>= (+ (* (- 35) x1 ) (* (- 29) x1 ) (* 30 x1 ) (* 20 x1 ) ) 27) (> (+ (* 30 x1 ) (* 33 x0 ) ) 16) (= (+ (* (- 28) x2 ) (* 7 x1 ) (* 8 x0 ) ) 37) ))
+(assert (or (< (+ (* 6 x2 ) (* (- 12) x1 ) ) (- 14)) (not (<= (+ (* (- 23) x1 ) (* 44 x1 ) ) 9)) (not (<= (+ (* (- 18) x2 ) (* 16 x0 ) (* 47 x0 ) ) 25)) ))
+(assert (or (< (+ (* (- 8) x1 ) (* 12 x2 ) (* 23 x1 ) ) (- 50)) (not (> (+ (* 37 x1 ) (* (- 30) x2 ) (* 1 x0 ) (* 13 x1 ) ) (- 22))) ))
+(check-sat)
+(push 1)
+(assert (or (not (= (+ (* (- 3) x0 ) (* (- 49) x1 ) ) 25)) (<= (+ (* 47 x2 ) (* 9 x0 ) ) (- 5)) ))
+(assert (or (not (< (+ (* 34 x0 ) (* 28 x0 ) (* 36 x0 ) (* 1 x0 ) ) (- 9))) (>= (+ (* (- 4) x2 ) (* 15 x1 ) (* (- 35) x0 ) (* (- 2) x1 ) ) (- 20)) ))
+(assert (not (<= (+ (* (- 4) x1 ) (* 22 x1 ) (* 22 x2 ) (* (- 33) x0 ) ) 12)) )
+(check-sat)
+(pop 1)
+(assert (<= (+ (* 36 x0 ) (* (- 25) x2 ) (* 48 x2 ) (* (- 14) x1 ) ) (- 9)) )
+(check-sat)
diff --git a/test/regress/regress0/push-pop/arith/fuzz_3_11.smt2 b/test/regress/regress0/push-pop/arith/fuzz_3_11.smt2
new file mode 100644
index 0000000..81fe3b0
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_3_11.smt2
@@ -0,0 +1,40 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(assert (or (= (+ (* 25 x1 ) (* (- 35) x1 ) ) 3) (> (+ (* 31 x1 ) (* (- 25) x2 ) (* 24 x1 ) (* (- 37) x2 ) ) 37) ))
+(assert (or (= (+ (* (- 18) x1 ) (* (- 42) x0 ) (* (- 41) x2 ) ) 18) (= (+ (* (- 34) x2 ) (* 14 x0 ) (* 33 x0 ) (* (- 40) x2 ) ) (- 34)) ))
+(assert (or (>= (+ (* (- 45) x1 ) (* (- 21) x1 ) ) 30) (>= (+ (* 6 x2 ) (* (- 32) x0 ) (* (- 38) x0 ) ) 4) ))
+(assert (or (not (< (+ (* (- 39) x2 ) (* (- 47) x2 ) ) 23)) (>= (+ (* 12 x2 ) (* 32 x1 ) (* (- 46) x2 ) ) 13) (not (= (+ (* 48 x2 ) (* 26 x1 ) (* 45 x2 ) ) (- 10))) ))
+(check-sat)
+(push 1)
+(assert (or (not (<= (+ (* (- 34) x2 ) (* (- 24) x1 ) ) 39)) (<= (+ (* 34 x1 ) (* (- 35) x0 ) (* (- 13) x1 ) (* 2 x2 ) ) (- 2)) ))
+(check-sat)
+(push 1)
+(assert (or (not (<= (+ (* (- 12) x0 ) (* 37 x1 ) (* (- 30) x0 ) ) (- 43))) (> (+ (* 28 x0 ) (* (- 49) x1 ) ) (- 22)) ))
+(check-sat)
+(pop 1)
+(assert (or (not (>= (+ (* 49 x1 ) (* (- 19) x2 ) ) (- 4))) (not (< (+ (* (- 50) x2 ) (* (- 18) x1 ) ) (- 11))) (not (< (+ (* 43 x0 ) (* 11 x1 ) (* 26 x0 ) (* (- 46) x2 ) ) (- 11))) ))
+(assert (or (< (+ (* 38 x0 ) (* (- 19) x1 ) ) (- 31)) (= (+ (* (- 15) x0 ) (* 28 x2 ) (* 9 x2 ) ) (- 43)) ))
+(assert (or (>= (+ (* (- 4) x0 ) (* 20 x1 ) (* (- 30) x1 ) (* 17 x0 ) ) (- 13)) (< (+ (* 6 x0 ) (* (- 22) x2 ) (* (- 37) x1 ) (* (- 1) x2 ) ) (- 50)) ))
+(assert (or (not (< (+ (* 33 x1 ) (* (- 30) x2 ) (* (- 18) x1 ) ) (- 32))) (> (+ (* 26 x0 ) (* (- 21) x1 ) ) 46) ))
+(assert (or (not (<= (+ (* 3 x0 ) (* (- 19) x2 ) (* (- 50) x1 ) (* 31 x2 ) ) 23)) (= (+ (* 46 x0 ) (* 47 x1 ) (* (- 38) x2 ) (* 32 x0 ) ) 30) (<= (+ (* (- 44) x1 ) (* 32 x0 ) (* 29 x1 ) ) 19) ))
+(assert (not (= (+ (* (- 21) x1 ) (* (- 4) x0 ) (* 38 x1 ) (* 17 x1 ) ) 35)) )
+(assert (or (<= (+ (* (- 42) x1 ) (* 8 x0 ) (* 37 x1 ) ) (- 33)) (not (> (+ (* 40 x0 ) (* 41 x0 ) (* 4 x1 ) (* (- 17) x2 ) ) 33)) ))
+(assert (or (not (<= (+ (* (- 26) x2 ) (* 25 x0 ) (* 42 x0 ) (* 40 x2 ) ) 2)) (> (+ (* (- 33) x2 ) (* 18 x2 ) ) 47) ))
+(check-sat)
+(push 1)
+(assert (or (not (>= (+ (* 13 x2 ) (* (- 16) x2 ) (* (- 18) x0 ) ) (- 15))) (not (< (+ (* 1 x0 ) (* 0 x2 ) (* (- 3) x2 ) (* 43 x0 ) ) 30)) (not (> (+ (* 10 x2 ) (* 36 x1 ) ) (- 17))) ))
+(assert (or (not (< (+ (* (- 34) x0 ) (* (- 19) x1 ) (* 31 x0 ) (* 11 x1 ) ) 34)) (= (+ (* (- 45) x2 ) (* 48 x2 ) (* (- 43) x1 ) ) (- 44)) (>= (+ (* 16 x2 ) (* 10 x2 ) (* (- 21) x1 ) ) 23) ))
+(check-sat)
+(pop 1)
+(assert (or (< (+ (* 27 x1 ) (* 6 x2 ) ) 13) (not (<= (+ (* 11 x1 ) (* 19 x0 ) (* (- 41) x0 ) (* (- 29) x1 ) ) (- 6))) (not (= (+ (* (- 16) x2 ) (* (- 8) x1 ) ) 2)) ))
+(assert (or (= (+ (* (- 48) x1 ) (* (- 26) x1 ) (* (- 30) x0 ) ) 39) (>= (+ (* 21 x1 ) (* 25 x2 ) (* (- 35) x1 ) ) (- 2)) (= (+ (* (- 4) x1 ) (* 46 x0 ) (* 23 x2 ) ) 38) ))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/arith/fuzz_3_12.smt2 b/test/regress/regress0/push-pop/arith/fuzz_3_12.smt2
new file mode 100644
index 0000000..d797c18
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_3_12.smt2
@@ -0,0 +1,49 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (or (not (> (+ (* (- 45) x0 ) (* 2 x2 ) (* (- 18) x1 ) (* 12 x2 ) ) (- 39))) (not (< (+ (* 12 x1 ) (* (- 34) x2 ) (* (- 6) x2 ) (* (- 11) x1 ) ) 14)) ))
+(assert (or (<= (+ (* (- 4) x0 ) (* (- 42) x2 ) (* (- 22) x0 ) ) 15) (not (= (+ (* (- 24) x0 ) (* (- 4) x2 ) ) (- 18))) (>= (+ (* 43 x2 ) (* (- 47) x1 ) (* 22 x0 ) (* 4 x1 ) ) (- 33)) ))
+(assert (or (not (<= (+ (* (- 10) x0 ) (* (- 4) x0 ) (* 40 x0 ) ) 47)) (not (= (+ (* 8 x0 ) (* (- 35) x0 ) ) 6)) (not (< (+ (* 13 x1 ) (* (- 1) x2 ) (* 16 x2 ) (* 6 x1 ) ) (- 43))) ))
+(assert (or (<= (+ (* 35 x2 ) (* 39 x0 ) (* 25 x1 ) (* 46 x0 ) ) 9) (= (+ (* (- 40) x2 ) (* (- 2) x2 ) (* 17 x2 ) (* (- 48) x1 ) ) 18) ))
+(assert (or (> (+ (* (- 47) x2 ) (* (- 24) x2 ) (* (- 25) x0 ) ) 13) (= (+ (* (- 41) x2 ) (* (- 3) x0 ) (* (- 6) x2 ) ) (- 13)) ))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (= (+ (* (- 7) x2 ) (* 6 x0 ) ) (- 1)) )
+(assert (or (> (+ (* 21 x0 ) (* (- 48) x0 ) (* (- 39) x0 ) (* (- 3) x2 ) ) (- 48)) (< (+ (* 12 x2 ) (* 26 x1 ) (* 40 x2 ) ) (- 10)) ))
+(check-sat)
+(push 1)
+(assert (or (= (+ (* (- 23) x2 ) (* 31 x2 ) ) 23) (< (+ (* 26 x0 ) (* 45 x0 ) (* (- 17) x1 ) (* (- 38) x2 ) ) (- 31)) (not (>= (+ (* 21 x1 ) (* (- 12) x2 ) ) (- 38))) ))
+(check-sat)
+(push 1)
+(assert (not (<= (+ (* 26 x1 ) (* (- 40) x1 ) (* 22 x0 ) ) 8)) )
+(assert (or (not (>= (+ (* 20 x0 ) (* 0 x0 ) (* 29 x1 ) ) (- 14))) (< (+ (* 12 x1 ) (* (- 25) x2 ) ) (- 50)) ))
+(check-sat)
+(pop 1)
+(assert (or (= (+ (* 37 x1 ) (* (- 10) x1 ) (* (- 50) x1 ) (* (- 15) x1 ) ) 21) (not (< (+ (* (- 27) x0 ) (* 4 x0 ) ) (- 8))) ))
+(assert (or (= (+ (* 0 x1 ) (* (- 43) x0 ) (* 32 x1 ) (* 16 x0 ) ) 11) (not (> (+ (* 20 x2 ) (* (- 11) x2 ) (* (- 14) x0 ) ) (- 43))) (= (+ (* 30 x1 ) (* (- 18) x2 ) (* 0 x1 ) (* (- 32) x0 ) ) (- 5)) ))
+(assert (> (+ (* 43 x2 ) (* (- 3) x0 ) ) 4) )
+(assert (> (+ (* 44 x0 ) (* 4 x2 ) ) (- 41)) )
+(check-sat)
+(pop 1)
+(assert (or (< (+ (* 17 x0 ) (* 11 x0 ) (* 45 x1 ) ) (- 38)) (> (+ (* 49 x1 ) (* (- 9) x2 ) (* 7 x2 ) (* 3 x2 ) ) (- 20)) (not (< (+ (* 10 x2 ) (* 31 x0 ) ) (- 38))) ))
+(assert (not (>= (+ (* (- 43) x2 ) (* (- 8) x1 ) (* (- 8) x0 ) ) 34)) )
+(assert (not (>= (+ (* (- 42) x1 ) (* (- 40) x0 ) (* (- 22) x0 ) (* (- 37) x2 ) ) 21)) )
+(check-sat)
+(push 1)
diff --git a/test/regress/regress0/push-pop/arith/fuzz_3_13.smt2 b/test/regress/regress0/push-pop/arith/fuzz_3_13.smt2
new file mode 100644
index 0000000..2e4b9d2
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_3_13.smt2
@@ -0,0 +1,48 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (or (<= (+ (* 49 x2 ) (* 24 x0 ) (* (- 41) x0 ) ) 40) (not (>= (+ (* 9 x2 ) (* 2 x1 ) (* 48 x1 ) (* 6 x2 ) ) 48)) ))
+(assert (or (not (= (+ (* (- 2) x0 ) (* 22 x0 ) (* (- 37) x0 ) ) 29)) (not (= (+ (* (- 27) x1 ) (* (- 47) x0 ) ) 39)) ))
+(assert (or (not (>= (+ (* (- 5) x2 ) (* (- 39) x0 ) (* (- 28) x2 ) ) 47)) (not (= (+ (* (- 25) x2 ) (* (- 1) x0 ) (* (- 26) x2 ) ) (- 35))) (not (<= (+ (* (- 26) x1 ) (* (- 31) x0 ) ) (- 22))) ))
+(assert (or (> (+ (* 27 x1 ) (* (- 38) x0 ) (* 43 x2 ) (* (- 13) x0 ) ) 41) (>= (+ (* 34 x2 ) (* 1 x2 ) (* (- 20) x1 ) (* 21 x1 ) ) (- 40)) ))
+(assert (> (+ (* (- 28) x1 ) (* 48 x1 ) (* (- 24) x1 ) (* 7 x1 ) ) 41) )
+(check-sat)
+(push 1)
+(assert (<= (+ (* (- 42) x1 ) (* 25 x0 ) (* (- 47) x2 ) (* 4 x0 ) ) (- 15)) )
+(check-sat)
+(push 1)
+(assert (or (not (= (+ (* (- 15) x0 ) (* (- 4) x1 ) (* (- 4) x1 ) ) 24)) (not (< (+ (* (- 35) x0 ) (* (- 45) x1 ) (* (- 8) x2 ) (* 19 x2 ) ) 19)) ))
+(assert (or (not (< (+ (* (- 39) x1 ) (* 15 x0 ) (* 37 x0 ) ) (- 7))) (<= (+ (* 24 x0 ) (* 20 x0 ) (* 43 x1 ) ) 13) ))
+(assert (or (< (+ (* 19 x1 ) (* (- 25) x1 ) ) 8) (> (+ (* 44 x0 ) (* (- 41) x0 ) ) 9) (>= (+ (* 20 x0 ) (* 10 x2 ) (* 23 x0 ) ) 32) ))
+(assert (or (>= (+ (* (- 12) x0 ) (* 17 x2 ) ) (- 43)) (not (> (+ (* 25 x1 ) (* (- 38) x2 ) (* (- 10) x0 ) ) 24)) ))
+(assert (or (not (< (+ (* (- 50) x2 ) (* 43 x0 ) (* (- 37) x2 ) (* (- 5) x0 ) ) (- 40))) (= (+ (* (- 16) x2 ) (* 6 x2 ) ) (- 11)) (> (+ (* 48 x0 ) (* 29 x1 ) ) 40) ))
+(check-sat)
+(push 1)
+(assert (or (< (+ (* 1 x1 ) (* (- 24) x0 ) (* (- 2) x1 ) ) 21) (not (> (+ (* (- 42) x0 ) (* 40 x0 ) ) (- 33))) ))
+(assert (or (not (> (+ (* 23 x0 ) (* (- 14) x2 ) (* (- 23) x0 ) (* (- 37) x0 ) ) 25)) (not (<= (+ (* 12 x2 ) (* 24 x1 ) (* (- 25) x0 ) ) 3)) ))
+(check-sat)
+(pop 1)
+(assert (<= (+ (* 19 x0 ) (* 23 x0 ) (* (- 9) x1 ) (* (- 31) x1 ) ) 27) )
+(assert (or (> (+ (* 33 x1 ) (* (- 24) x1 ) (* (- 48) x2 ) (* (- 42) x1 ) ) 30) (not (<= (+ (* (- 36) x1 ) (* 5 x1 ) ) (- 36))) ))
+(assert (or (not (>= (+ (* 20 x1 ) (* 29 x1 ) (* 48 x2 ) ) 40)) (not (> (+ (* (- 26) x2 ) (* 23 x1 ) (* (- 14) x0 ) ) 32)) ))
+(assert (>= (+ (* 31 x2 ) (* 43 x1 ) ) 28) )
+(assert (or (= (+ (* 21 x2 ) (* (- 30) x1 ) (* 28 x1 ) (* 43 x0 ) ) 39) (not (<= (+ (* (- 3) x0 ) (* (- 49) x0 ) (* 9 x0 ) (* 24 x2 ) ) 14)) (not (> (+ (* 35 x1 ) (* (- 6) x2 ) (* 37 x0 ) ) 3)) ))
+(assert (or (not (<= (+ (* 46 x0 ) (* 11 x1 ) ) 40)) (not (= (+ (* 3 x1 ) (* 49 x1 ) ) (- 38))) ))
+(assert (not (<= (+ (* (- 39) x2 ) (* 23 x1 ) ) 5)) )
+(assert (or (not (< (+ (* 44 x1 ) (* (- 23) x1 ) (* 26 x1 ) ) 39)) (> (+ (* 14 x2 ) (* 2 x2 ) (* (- 5) x2 ) ) (- 22)) ))
+(assert (not (<= (+ (* (- 15) x2 ) (* 17 x2 ) (* 19 x1 ) ) 30)) )
+(check-sat)
+(push 1)
diff --git a/test/regress/regress0/push-pop/arith/fuzz_3_14.smt2 b/test/regress/regress0/push-pop/arith/fuzz_3_14.smt2
new file mode 100644
index 0000000..0399bbf
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_3_14.smt2
@@ -0,0 +1,34 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(assert (or (> (+ (* (- 34) x2 ) (* 33 x1 ) (* (- 6) x1 ) (* (- 44) x1 ) ) (- 40)) (not (= (+ (* 7 x0 ) (* (- 27) x2 ) (* 10 x0 ) (* (- 42) x1 ) ) 7)) ))
+(assert (or (< (+ (* (- 39) x1 ) (* 32 x1 ) (* 42 x1 ) (* 18 x1 ) ) 26) (not (= (+ (* (- 23) x2 ) (* 17 x1 ) ) (- 39))) ))
+(assert (or (>= (+ (* (- 45) x0 ) (* (- 40) x1 ) (* (- 29) x0 ) (* (- 2) x0 ) ) 22) (not (>= (+ (* 11 x1 ) (* (- 42) x1 ) (* (- 21) x0 ) ) 41)) (not (= (+ (* 30 x2 ) (* (- 13) x2 ) (* 21 x1 ) (* (- 16) x2 ) ) 36)) ))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (or (= (+ (* 20 x2 ) (* 13 x2 ) (* (- 10) x0 ) ) (- 34)) (> (+ (* 23 x1 ) (* 10 x1 ) ) 49) (not (< (+ (* 28 x0 ) (* 22 x2 ) (* 6 x2 ) ) 13)) ))
+(assert (or (not (< (+ (* (- 37) x2 ) (* (- 22) x1 ) (* 6 x1 ) ) 18)) (= (+ (* (- 20) x1 ) (* 32 x2 ) (* 16 x1 ) ) (- 49)) ))
+(assert (or (>= (+ (* (- 2) x2 ) (* (- 23) x1 ) (* 39 x2 ) (* 35 x2 ) ) (- 8)) (not (<= (+ (* (- 19) x2 ) (* (- 43) x2 ) (* 22 x1 ) (* (- 27) x1 ) ) (- 48))) (not (= (+ (* (- 44) x1 ) (* 39 x1 ) (* 28 x2 ) ) (- 35))) ))
+(assert (or (not (<= (+ (* (- 47) x1 ) (* (- 22) x2 ) (* 43 x2 ) ) (- 5))) (not (>= (+ (* (- 45) x2 ) (* (- 35) x2 ) (* 44 x0 ) ) (- 14))) ))
+(assert (or (not (>= (+ (* (- 7) x1 ) (* (- 24) x2 ) (* 49 x1 ) ) (- 27))) (< (+ (* 48 x1 ) (* 19 x0 ) ) (- 6)) (not (< (+ (* 39 x0 ) (* 48 x1 ) ) 7)) ))
+(assert (or (<= (+ (* (- 11) x2 ) (* 29 x0 ) ) (- 16)) (not (< (+ (* 31 x1 ) (* 5 x2 ) ) 44)) (>= (+ (* 0 x1 ) (* 42 x2 ) (* 27 x1 ) ) (- 17)) ))
+(assert (not (< (+ (* 49 x1 ) (* 1 x0 ) ) 40)) )
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (or (not (<= (+ (* 40 x2 ) (* (- 42) x1 ) (* 1 x0 ) (* 0 x0 ) ) 24)) (not (> (+ (* (- 27) x0 ) (* 46 x1 ) (* (- 48) x0 ) (* 29 x0 ) ) 11)) ))
+(check-sat)
+(pop 1)
+(assert (not (< (+ (* 16 x1 ) (* (- 26) x0 ) (* (- 6) x0 ) ) 34)) )
+(check-sat)
diff --git a/test/regress/regress0/push-pop/arith/fuzz_3_15.smt2 b/test/regress/regress0/push-pop/arith/fuzz_3_15.smt2
new file mode 100644
index 0000000..2a8ffe0
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_3_15.smt2
@@ -0,0 +1,35 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(assert (not (<= (+ (* (- 3) x0 ) (* 38 x0 ) (* 34 x1 ) ) (- 5))) )
+(assert (or (not (> (+ (* (- 27) x0 ) (* 26 x1 ) ) (- 50))) (not (>= (+ (* 32 x0 ) (* 10 x0 ) (* (- 43) x1 ) (* (- 39) x0 ) ) (- 36))) ))
+(check-sat)
+(push 1)
+(assert (> (+ (* (- 23) x2 ) (* 49 x2 ) ) 14) )
+(assert (not (= (+ (* 20 x1 ) (* (- 38) x2 ) ) 33)) )
+(assert (not (<= (+ (* 30 x0 ) (* (- 13) x1 ) (* 21 x1 ) ) 20)) )
+(assert (or (<= (+ (* 48 x0 ) (* (- 42) x0 ) (* 34 x1 ) (* 47 x1 ) ) 12) (not (>= (+ (* 0 x1 ) (* (- 1) x1 ) (* (- 19) x1 ) ) 40)) (not (>= (+ (* (- 40) x2 ) (* 3 x2 ) (* 4 x0 ) (* 19 x2 ) ) 34)) ))
+(assert (or (= (+ (* (- 7) x1 ) (* 15 x0 ) (* (- 12) x0 ) ) 6) (not (<= (+ (* (- 41) x2 ) (* 10 x0 ) (* 12 x2 ) ) 49)) ))
+(assert (or (<= (+ (* 12 x2 ) (* (- 50) x1 ) ) (- 25)) (= (+ (* (- 29) x2 ) (* (- 11) x2 ) (* (- 8) x2 ) (* (- 3) x2 ) ) (- 39)) ))
+(assert (or (= (+ (* 33 x2 ) (* 44 x0 ) (* (- 4) x1 ) ) 5) (not (< (+ (* 27 x2 ) (* (- 45) x0 ) (* 43 x2 ) (* 40 x0 ) ) 17)) (not (<= (+ (* (- 40) x2 ) (* 3 x0 ) (* 16 x2 ) (* (- 37) x1 ) ) 29)) ))
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (or (= (+ (* (- 21) x0 ) (* 5 x2 ) ) (- 27)) (not (<= (+ (* (- 20) x0 ) (* 19 x0 ) (* (- 50) x1 ) (* (- 24) x0 ) ) (- 32))) ))
+(check-sat)
+(pop 1)
+(assert (not (<= (+ (* 9 x2 ) (* 0 x0 ) (* (- 40) x0 ) (* 49 x2 ) ) (- 11))) )
+(assert (or (not (< (+ (* (- 2) x0 ) (* 2 x2 ) ) 19)) (= (+ (* (- 28) x1 ) (* (- 1) x2 ) (* (- 4) x1 ) ) 38) ))
+(check-sat)
+(push 1)
diff --git a/test/regress/regress0/push-pop/arith/fuzz_3_2.smt2 b/test/regress/regress0/push-pop/arith/fuzz_3_2.smt2
new file mode 100644
index 0000000..cbff796
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_3_2.smt2
@@ -0,0 +1,34 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(assert (or (not (>= (+ (* 47 x0 ) (* (- 1) x2 ) (* 13 x2 ) ) (- 9))) (not (< (+ (* 23 x1 ) (* (- 50) x0 ) (* 35 x1 ) (* 12 x2 ) ) 14)) ))
+(assert (or (not (<= (+ (* 3 x0 ) (* (- 15) x2 ) (* 34 x0 ) ) (- 39))) (not (> (+ (* (- 35) x0 ) (* 36 x2 ) (* (- 3) x1 ) ) 22)) (not (> (+ (* 46 x2 ) (* 2 x2 ) (* (- 33) x1 ) (* (- 24) x0 ) ) (- 39))) ))
+(assert (or (<= (+ (* 27 x1 ) (* 18 x2 ) (* (- 3) x2 ) ) (- 2)) (= (+ (* 27 x0 ) (* (- 26) x2 ) (* 15 x2 ) (* 23 x0 ) ) 11) ))
+(assert (or (= (+ (* 23 x1 ) (* (- 1) x1 ) (* (- 3) x2 ) (* 49 x1 ) ) (- 26)) (not (> (+ (* (- 30) x0 ) (* (- 1) x0 ) (* 15 x1 ) ) (- 23))) ))
+(check-sat)
+(push 1)
+(assert (or (not (= (+ (* 24 x1 ) (* 5 x2 ) (* (- 18) x1 ) (* (- 40) x2 ) ) (- 6))) (not (< (+ (* 6 x0 ) (* (- 29) x0 ) (* 16 x2 ) ) (- 42))) ))
+(assert (or (= (+ (* (- 33) x0 ) (* 40 x0 ) (* (- 28) x1 ) (* (- 29) x0 ) ) (- 1)) (<= (+ (* (- 17) x1 ) (* 0 x0 ) (* 2 x1 ) ) (- 8)) (not (= (+ (* 39 x2 ) (* 4 x0 ) (* 12 x1 ) (* (- 1) x2 ) ) (- 40))) ))
+(check-sat)
+(push 1)
+(assert (not (<= (+ (* 24 x2 ) (* 9 x2 ) (* 38 x0 ) (* 9 x2 ) ) (- 12))) )
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (not (> (+ (* (- 33) x1 ) (* 1 x0 ) (* (- 27) x1 ) (* (- 39) x1 ) ) 30)) )
+(check-sat)
+(pop 1)
+(assert (not (>= (+ (* (- 36) x1 ) (* 34 x0 ) (* 39 x0 ) (* 2 x2 ) ) 16)) )
+(check-sat)
diff --git a/test/regress/regress0/push-pop/arith/fuzz_3_3.smt2 b/test/regress/regress0/push-pop/arith/fuzz_3_3.smt2
new file mode 100644
index 0000000..ec07282
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_3_3.smt2
@@ -0,0 +1,27 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(assert (or (= (+ (* (- 47) x1 ) (* 42 x2 ) ) (- 13)) (< (+ (* 5 x2 ) (* 8 x2 ) ) 41) (not (= (+ (* (- 20) x2 ) (* (- 3) x2 ) (* 38 x1 ) (* (- 38) x0 ) ) (- 30))) ))
+(assert (or (= (+ (* (- 23) x2 ) (* 29 x2 ) ) (- 30)) (not (>= (+ (* 46 x1 ) (* (- 49) x0 ) (* (- 17) x0 ) (* 17 x0 ) ) 2)) (not (<= (+ (* (- 32) x0 ) (* 23 x0 ) (* (- 5) x1 ) (* (- 50) x2 ) ) (- 46))) ))
+(check-sat)
+(push 1)
+(assert (or (not (<= (+ (* 36 x2 ) (* 21 x2 ) ) (- 31))) (not (= (+ (* 48 x2 ) (* (- 2) x1 ) (* 32 x0 ) ) 48)) (> (+ (* (- 43) x0 ) (* 7 x2 ) (* 1 x1 ) (* 2 x1 ) ) 15) ))
+(assert (or (not (<= (+ (* (- 27) x1 ) (* 4 x0 ) (* 43 x2 ) ) (- 23))) (not (> (+ (* (- 4) x1 ) (* 31 x2 ) (* 22 x2 ) ) 0)) ))
+(assert (or (not (<= (+ (* 19 x0 ) (* (- 29) x0 ) (* 18 x2 ) (* 6 x0 ) ) 24)) (>= (+ (* 32 x2 ) (* 36 x1 ) (* 41 x1 ) ) 44) ))
+(assert (> (+ (* 30 x0 ) (* (- 9) x2 ) (* (- 22) x0 ) ) 38) )
+(assert (or (>= (+ (* (- 19) x0 ) (* 32 x2 ) (* (- 48) x2 ) ) (- 14)) (>= (+ (* (- 49) x2 ) (* 29 x2 ) (* 15 x1 ) ) (- 34)) ))
+(assert (or (not (< (+ (* (- 6) x0 ) (* (- 43) x1 ) ) 35)) (= (+ (* (- 48) x2 ) (* (- 31) x0 ) ) 34) (not (< (+ (* (- 41) x0 ) (* 45 x2 ) (* (- 17) x1 ) (* (- 38) x2 ) ) 1)) ))
+(assert (or (not (<= (+ (* (- 10) x2 ) (* 45 x1 ) ) 49)) (not (<= (+ (* 38 x2 ) (* 17 x2 ) (* (- 18) x1 ) (* (- 17) x1 ) ) 3)) ))
+(assert (not (= (+ (* 20 x1 ) (* (- 3) x2 ) (* 15 x1 ) ) (- 11))) )
+(check-sat)
+(push 1)
+(assert (not (<= (+ (* (- 24) x1 ) (* 47 x2 ) (* (- 32) x2 ) ) (- 34))) )
+(check-sat)
+(pop 1)
+(check-sat)
diff --git a/test/regress/regress0/push-pop/arith/fuzz_3_4.smt2 b/test/regress/regress0/push-pop/arith/fuzz_3_4.smt2
new file mode 100644
index 0000000..93be948
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_3_4.smt2
@@ -0,0 +1,35 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(assert (or (< (+ (* (- 15) x0 ) (* (- 4) x0 ) (* (- 33) x2 ) ) (- 21)) (<= (+ (* (- 2) x1 ) (* 12 x1 ) (* 48 x1 ) ) (- 21)) (> (+ (* 43 x2 ) (* (- 6) x2 ) ) (- 26)) ))
+(assert (not (<= (+ (* (- 9) x2 ) (* 28 x0 ) (* (- 26) x0 ) ) (- 2))) )
+(assert (or (= (+ (* (- 43) x0 ) (* 49 x1 ) (* (- 49) x0 ) ) 25) (not (= (+ (* 39 x0 ) (* (- 23) x2 ) ) (- 12))) ))
+(assert (or (not (<= (+ (* 13 x1 ) (* (- 17) x1 ) (* (- 27) x0 ) (* (- 24) x0 ) ) (- 47))) (not (<= (+ (* 5 x1 ) (* (- 31) x1 ) (* (- 40) x2 ) ) 28)) ))
+(assert (or (not (< (+ (* (- 7) x2 ) (* (- 24) x0 ) (* 42 x0 ) ) (- 27))) (not (< (+ (* (- 4) x2 ) (* (- 16) x0 ) (* (- 20) x2 ) ) (- 14))) (not (<= (+ (* 2 x2 ) (* 26 x1 ) ) 12)) ))
+(assert (< (+ (* (- 9) x0 ) (* 45 x1 ) (* (- 12) x2 ) ) 37) )
+(assert (or (= (+ (* 23 x2 ) (* 15 x1 ) (* 32 x1 ) (* (- 30) x2 ) ) 30) (>= (+ (* 36 x1 ) (* (- 36) x0 ) (* (- 22) x2 ) (* 36 x1 ) ) 20) ))
+(assert (or (not (< (+ (* (- 22) x2 ) (* 34 x0 ) ) (- 10))) (not (>= (+ (* (- 38) x2 ) (* (- 46) x2 ) ) 34)) (not (>= (+ (* 24 x0 ) (* (- 48) x1 ) (* 7 x0 ) ) (- 19))) ))
+(assert (<= (+ (* (- 49) x2 ) (* (- 18) x0 ) (* 17 x0 ) ) 18) )
+(assert (or (not (<= (+ (* (- 16) x2 ) (* 24 x1 ) (* (- 38) x2 ) ) 33)) (<= (+ (* 29 x2 ) (* (- 22) x1 ) ) (- 19)) ))
+(assert (or (< (+ (* 19 x1 ) (* (- 30) x0 ) ) 39) (= (+ (* (- 47) x0 ) (* 46 x1 ) (* 37 x0 ) ) (- 28)) (not (= (+ (* (- 12) x0 ) (* 19 x0 ) ) 19)) ))
+(assert (or (not (> (+ (* 35 x1 ) (* 35 x0 ) (* 17 x1 ) (* 46 x2 ) ) 46)) (not (>= (+ (* (- 8) x0 ) (* 43 x1 ) (* (- 26) x2 ) ) 21)) (not (< (+ (* (- 29) x1 ) (* (- 10) x2 ) (* (- 35) x1 ) ) 42)) ))
+(check-sat)
+(push 1)
+(assert (or (>= (+ (* 21 x2 ) (* (- 38) x1 ) (* (- 21) x2 ) ) 28) (= (+ (* 28 x1 ) (* 2 x1 ) (* (- 16) x2 ) (* 47 x0 ) ) (- 45)) ))
+(assert (not (= (+ (* 33 x0 ) (* 26 x0 ) (* 33 x1 ) (* (- 41) x2 ) ) 4)) )
+(assert (or (= (+ (* 40 x1 ) (* (- 23) x1 ) (* 27 x0 ) ) (- 19)) (>= (+ (* (- 29) x0 ) (* (- 12) x0 ) (* 42 x0 ) ) (- 30)) ))
+(assert (or (not (<= (+ (* 35 x0 ) (* 40 x2 ) (* (- 46) x0 ) ) (- 35))) (>= (+ (* 34 x0 ) (* 33 x0 ) (* 27 x0 ) (* (- 21) x1 ) ) (- 4)) ))
+(assert (not (<= (+ (* 42 x1 ) (* (- 4) x1 ) (* (- 30) x0 ) (* (- 23) x0 ) ) (- 44))) )
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (not (>= (+ (* 3 x1 ) (* 41 x2 ) (* (- 28) x1 ) ) (- 49))) )
+(assert (or (not (<= (+ (* (- 29) x1 ) (* (- 5) x2 ) (* 15 x2 ) (* (- 26) x1 ) ) (- 14))) (>= (+ (* (- 47) x1 ) (* (- 31) x1 ) ) 46) ))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/arith/fuzz_3_5.smt2 b/test/regress/regress0/push-pop/arith/fuzz_3_5.smt2
new file mode 100644
index 0000000..fd92040
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_3_5.smt2
@@ -0,0 +1,37 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(assert (< (+ (* 23 x1 ) (* (- 27) x1 ) (* 22 x0 ) ) (- 22)) )
+(assert (>= (+ (* (- 4) x0 ) (* (- 9) x1 ) (* (- 40) x0 ) (* 40 x2 ) ) (- 27)) )
+(assert (or (not (>= (+ (* (- 34) x0 ) (* (- 36) x1 ) ) (- 26))) (not (>= (+ (* 6 x2 ) (* (- 6) x1 ) ) (- 43))) ))
+(assert (or (>= (+ (* 20 x2 ) (* 12 x0 ) (* (- 50) x1 ) ) (- 46)) (not (> (+ (* 11 x1 ) (* (- 30) x0 ) ) (- 21))) ))
+(check-sat)
+(push 1)
+(assert (or (not (>= (+ (* (- 17) x2 ) (* 25 x1 ) (* 43 x0 ) (* (- 9) x0 ) ) (- 19))) (> (+ (* 4 x1 ) (* (- 22) x1 ) ) 8) (> (+ (* 19 x1 ) (* (- 1) x1 ) (* (- 22) x1 ) (* (- 47) x2 ) ) 46) ))
+(assert (or (> (+ (* (- 12) x1 ) (* 25 x1 ) ) (- 18)) (not (= (+ (* (- 47) x0 ) (* (- 13) x2 ) (* (- 13) x1 ) (* (- 10) x0 ) ) (- 27))) ))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (or (not (>= (+ (* 9 x2 ) (* (- 18) x1 ) (* (- 7) x0 ) (* (- 2) x2 ) ) (- 40))) (< (+ (* 2 x1 ) (* (- 4) x1 ) (* (- 48) x2 ) ) 32) ))
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (not (<= (+ (* (- 10) x2 ) (* (- 20) x1 ) (* 9 x2 ) ) 23)) )
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
diff --git a/test/regress/regress0/push-pop/arith/fuzz_3_6.smt2 b/test/regress/regress0/push-pop/arith/fuzz_3_6.smt2
new file mode 100644
index 0000000..1901016
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_3_6.smt2
@@ -0,0 +1,36 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(assert (or (= (+ (* 40 x1 ) (* (- 35) x0 ) (* 10 x1 ) ) 4) (not (= (+ (* 38 x1 ) (* 40 x1 ) (* (- 28) x2 ) ) 44)) (< (+ (* (- 46) x1 ) (* (- 18) x0 ) ) 37) ))
+(assert (or (<= (+ (* (- 4) x2 ) (* (- 29) x1 ) ) (- 37)) (not (> (+ (* (- 10) x2 ) (* 13 x0 ) ) (- 21))) ))
+(check-sat)
+(push 1)
+(assert (or (> (+ (* 21 x0 ) (* 13 x2 ) ) 49) (>= (+ (* 19 x2 ) (* 45 x2 ) (* 9 x1 ) ) (- 45)) ))
+(assert (or (= (+ (* (- 17) x0 ) (* 22 x0 ) ) 12) (<= (+ (* 28 x1 ) (* 27 x0 ) (* 39 x0 ) (* (- 49) x2 ) ) (- 9)) ))
+(assert (or (not (<= (+ (* (- 49) x2 ) (* (- 28) x1 ) (* 24 x2 ) ) 47)) (>= (+ (* 13 x2 ) (* 49 x0 ) (* (- 45) x0 ) (* (- 44) x1 ) ) (- 14)) ))
+(assert (or (> (+ (* 9 x1 ) (* 18 x2 ) ) 31) (not (<= (+ (* 10 x2 ) (* 49 x1 ) (* (- 29) x2 ) (* (- 45) x2 ) ) (- 22))) ))
+(assert (not (<= (+ (* 49 x0 ) (* (- 50) x0 ) (* 0 x1 ) ) 40)) )
+(assert (or (> (+ (* 37 x1 ) (* (- 37) x2 ) ) (- 13)) (not (< (+ (* (- 38) x2 ) (* (- 15) x2 ) (* (- 39) x2 ) (* (- 13) x1 ) ) 20)) (>= (+ (* 8 x2 ) (* 47 x1 ) (* (- 21) x2 ) (* 41 x0 ) ) 13) ))
+(assert (or (> (+ (* (- 26) x2 ) (* 9 x0 ) (* (- 47) x1 ) (* (- 30) x0 ) ) (- 12)) (not (>= (+ (* 3 x0 ) (* 24 x0 ) ) (- 10))) ))
+(check-sat)
+(push 1)
+(assert (or (= (+ (* (- 27) x1 ) (* 34 x2 ) (* (- 14) x2 ) (* (- 24) x1 ) ) (- 38)) (<= (+ (* (- 41) x2 ) (* 36 x1 ) (* (- 44) x2 ) (* (- 19) x2 ) ) 9) ))
+(assert (or (not (<= (+ (* (- 2) x1 ) (* (- 7) x1 ) ) 45)) (<= (+ (* (- 39) x0 ) (* (- 18) x2 ) ) (- 13)) ))
+(assert (or (= (+ (* (- 32) x2 ) (* 37 x2 ) ) (- 26)) (< (+ (* 26 x0 ) (* 4 x1 ) ) (- 32)) ))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (or (< (+ (* (- 23) x2 ) (* (- 14) x2 ) (* 3 x1 ) ) (- 39)) (not (> (+ (* 48 x1 ) (* 14 x0 ) ) (- 32))) (>= (+ (* (- 10) x0 ) (* (- 46) x0 ) ) 12) ))
+(check-sat)
+(pop 1)
+(assert (< (+ (* (- 41) x1 ) (* (- 42) x1 ) (* 41 x1 ) ) (- 36)) )
+(check-sat)
diff --git a/test/regress/regress0/push-pop/arith/fuzz_3_7.smt2 b/test/regress/regress0/push-pop/arith/fuzz_3_7.smt2
new file mode 100644
index 0000000..c3b8aad
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_3_7.smt2
@@ -0,0 +1,36 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(check-sat)
+(push 1)
+(assert (or (not (>= (+ (* 25 x1 ) (* (- 37) x2 ) (* (- 48) x1 ) ) (- 37))) (not (<= (+ (* (- 6) x1 ) (* 0 x2 ) (* 22 x1 ) ) (- 25))) ))
+(assert (or (not (> (+ (* 25 x2 ) (* (- 14) x1 ) ) (- 40))) (not (> (+ (* (- 44) x1 ) (* (- 5) x0 ) ) (- 31))) ))
+(assert (or (< (+ (* (- 31) x2 ) (* (- 42) x1 ) (* (- 7) x0 ) (* (- 4) x2 ) ) 18) (<= (+ (* 8 x1 ) (* (- 46) x2 ) ) (- 4)) ))
+(check-sat)
+(push 1)
+(assert (or (> (+ (* (- 45) x1 ) (* 45 x0 ) (* (- 12) x0 ) (* (- 24) x2 ) ) (- 41)) (< (+ (* 17 x2 ) (* 38 x0 ) (* 16 x2 ) ) 40) ))
+(assert (or (< (+ (* 14 x2 ) (* 45 x0 ) (* (- 13) x0 ) (* (- 40) x0 ) ) 44) (= (+ (* (- 28) x1 ) (* (- 34) x1 ) (* (- 1) x0 ) ) 49) ))
+(assert (or (>= (+ (* 2 x0 ) (* 21 x2 ) ) 21) (< (+ (* (- 5) x2 ) (* 41 x1 ) (* (- 16) x1 ) ) 3) ))
+(assert (= (+ (* (- 17) x2 ) (* 34 x1 ) (* (- 20) x0 ) (* (- 47) x2 ) ) (- 39)) )
+(check-sat)
+(push 1)
+(assert (or (< (+ (* 26 x2 ) (* (- 29) x2 ) (* 3 x2 ) (* (- 42) x0 ) ) (- 10)) (not (<= (+ (* 9 x0 ) (* (- 31) x1 ) ) (- 6))) ))
+(assert (or (not (< (+ (* (- 15) x0 ) (* (- 44) x1 ) (* (- 5) x2 ) (* 25 x2 ) ) 38)) (= (+ (* (- 24) x1 ) (* 20 x0 ) (* 8 x0 ) ) (- 10)) (not (> (+ (* (- 35) x1 ) (* (- 14) x2 ) ) 6)) ))
+(assert (or (> (+ (* (- 13) x0 ) (* 10 x2 ) ) (- 16)) (= (+ (* 38 x0 ) (* 38 x2 ) (* 3 x0 ) ) 8) (not (<= (+ (* 18 x1 ) (* (- 26) x0 ) ) (- 14))) ))
+(check-sat)
+(push 1)
+(assert (or (< (+ (* (- 11) x1 ) (* 42 x1 ) ) (- 50)) (not (> (+ (* (- 24) x0 ) (* 8 x1 ) (* 44 x2 ) (* 27 x0 ) ) 48)) (< (+ (* 2 x0 ) (* 32 x2 ) ) (- 30)) ))
+(assert (>= (+ (* 28 x2 ) (* 29 x1 ) (* (- 7) x2 ) (* 16 x0 ) ) (- 19)) )
+(check-sat)
+(pop 1)
+(assert (or (not (> (+ (* 1 x1 ) (* (- 33) x1 ) (* (- 2) x1 ) ) (- 29))) (>= (+ (* 7 x2 ) (* 4 x0 ) (* 49 x2 ) ) (- 17)) ))
+(check-sat)
+(push 1)
diff --git a/test/regress/regress0/push-pop/arith/fuzz_3_8.smt2 b/test/regress/regress0/push-pop/arith/fuzz_3_8.smt2
new file mode 100644
index 0000000..cebf4d3
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_3_8.smt2
@@ -0,0 +1,47 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(assert (or (not (> (+ (* (- 25) x0 ) (* 16 x2 ) ) 21)) (>= (+ (* 18 x1 ) (* (- 35) x0 ) (* 18 x0 ) (* 24 x0 ) ) (- 50)) ))
+(assert (> (+ (* (- 40) x0 ) (* 29 x2 ) ) 9) )
+(check-sat)
+(push 1)
+(assert (or (not (> (+ (* 32 x1 ) (* (- 23) x0 ) (* 46 x2 ) ) 11)) (not (< (+ (* (- 12) x0 ) (* (- 40) x0 ) (* 43 x2 ) (* (- 13) x1 ) ) 49)) ))
+(assert (not (>= (+ (* (- 47) x0 ) (* 24 x1 ) ) 32)) )
+(check-sat)
+(pop 1)
+(assert (or (= (+ (* 8 x0 ) (* 31 x1 ) (* 38 x1 ) ) (- 31)) (<= (+ (* (- 16) x1 ) (* (- 22) x2 ) (* 27 x2 ) (* (- 23) x0 ) ) (- 12)) ))
+(assert (or (not (>= (+ (* 43 x1 ) (* (- 29) x1 ) (* 32 x0 ) (* (- 29) x1 ) ) (- 10))) (>= (+ (* 24 x0 ) (* (- 31) x1 ) ) 34) ))
+(assert (or (not (>= (+ (* (- 39) x2 ) (* (- 48) x2 ) (* (- 46) x0 ) (* 2 x1 ) ) 19)) (not (<= (+ (* (- 44) x0 ) (* (- 36) x2 ) ) (- 23))) ))
+(check-sat)
+(push 1)
+(assert (not (<= (+ (* 37 x1 ) (* 19 x2 ) (* 24 x1 ) (* (- 15) x0 ) ) (- 12))) )
+(assert (or (>= (+ (* (- 24) x0 ) (* (- 29) x0 ) (* 40 x2 ) ) (- 39)) (not (<= (+ (* (- 41) x0 ) (* 40 x2 ) (* 41 x1 ) (* (- 3) x0 ) ) 28)) ))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (or (not (> (+ (* 38 x0 ) (* (- 47) x0 ) (* 19 x0 ) (* 40 x2 ) ) (- 39))) (not (< (+ (* 30 x2 ) (* 39 x1 ) ) (- 28))) ))
+(assert (or (>= (+ (* (- 12) x0 ) (* (- 26) x1 ) (* (- 13) x1 ) ) 28) (> (+ (* (- 10) x0 ) (* (- 32) x1 ) ) 12) ))
+(check-sat)
+(push 1)
+(assert (< (+ (* (- 33) x2 ) (* (- 13) x0 ) ) 42) )
+(assert (or (not (= (+ (* 17 x2 ) (* 4 x2 ) ) 7)) (<= (+ (* 19 x1 ) (* 22 x1 ) (* 19 x1 ) ) 26) (not (<= (+ (* 9 x2 ) (* 0 x0 ) (* 24 x2 ) ) (- 10))) ))
+(assert (< (+ (* 45 x1 ) (* (- 38) x0 ) (* 19 x2 ) (* 17 x1 ) ) (- 14)) )
+(check-sat)
+(pop 1)
+(assert (not (< (+ (* 10 x0 ) (* (- 31) x2 ) (* (- 21) x0 ) ) (- 29))) )
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
diff --git a/test/regress/regress0/push-pop/arith/fuzz_3_9.smt2 b/test/regress/regress0/push-pop/arith/fuzz_3_9.smt2
new file mode 100644
index 0000000..96aaf9f
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_3_9.smt2
@@ -0,0 +1,52 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(assert (or (not (>= (+ (* (- 32) x2 ) (* (- 10) x0 ) (* (- 33) x0 ) (* 16 x1 ) ) (- 35))) (< (+ (* (- 46) x1 ) (* 44 x1 ) (* (- 15) x1 ) (* (- 22) x2 ) ) (- 20)) ))
+(check-sat)
+(push 1)
+(assert (or (not (< (+ (* (- 1) x2 ) (* (- 26) x0 ) ) 32)) (> (+ (* 39 x1 ) (* 31 x1 ) (* (- 16) x0 ) ) 27) ))
+(check-sat)
+(pop 1)
+(assert (or (> (+ (* 46 x1 ) (* 48 x1 ) (* 26 x0 ) ) 12) (= (+ (* 30 x1 ) (* 1 x0 ) (* 8 x2 ) (* 11 x2 ) ) (- 3)) ))
+(assert (<= (+ (* (- 11) x1 ) (* (- 27) x2 ) (* (- 29) x2 ) (* 23 x1 ) ) 19) )
+(assert (not (> (+ (* 15 x0 ) (* 25 x1 ) ) 47)) )
+(assert (<= (+ (* (- 3) x2 ) (* 1 x1 ) (* 36 x1 ) ) (- 27)) )
+(check-sat)
+(push 1)
+(assert (not (<= (+ (* (- 3) x0 ) (* (- 33) x2 ) (* 7 x2 ) (* (- 37) x0 ) ) 13)) )
+(check-sat)
+(pop 1)
+(assert (or (not (> (+ (* 24 x2 ) (* (- 48) x0 ) (* 18 x1 ) ) (- 46))) (not (< (+ (* (- 31) x1 ) (* 18 x0 ) (* (- 32) x0 ) (* (- 9) x0 ) ) 37)) ))
+(assert (or (not (< (+ (* (- 30) x2 ) (* (- 32) x0 ) (* 27 x0 ) ) 28)) (not (= (+ (* (- 20) x2 ) (* (- 10) x2 ) ) (- 3))) (<= (+ (* 42 x0 ) (* 49 x0 ) (* 28 x0 ) (* 0 x2 ) ) (- 30)) ))
+(assert (or (not (<= (+ (* 15 x2 ) (* 22 x2 ) ) (- 7))) (< (+ (* (- 7) x1 ) (* (- 42) x0 ) (* (- 27) x2 ) (* 19 x2 ) ) 15) (< (+ (* (- 25) x1 ) (* 39 x2 ) (* (- 24) x1 ) (* 17 x1 ) ) (- 48)) ))
+(assert (or (= (+ (* (- 49) x0 ) (* 27 x1 ) (* 16 x0 ) (* (- 26) x2 ) ) (- 24)) (<= (+ (* (- 33) x0 ) (* (- 7) x1 ) (* (- 7) x2 ) (* 1 x0 ) ) 34) ))
+(assert (not (<= (+ (* 30 x0 ) (* 17 x0 ) (* (- 48) x0 ) ) 19)) )
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (or (not (= (+ (* 24 x2 ) (* 13 x2 ) (* (- 13) x0 ) (* 14 x2 ) ) 8)) (> (+ (* (- 30) x2 ) (* (- 32) x1 ) (* (- 45) x0 ) (* (- 2) x2 ) ) 15) ))
+(assert (or (> (+ (* (- 9) x0 ) (* (- 21) x1 ) ) 3) (not (= (+ (* (- 26) x2 ) (* 3 x0 ) ) (- 10))) ))
+(assert (or (not (> (+ (* (- 20) x0 ) (* 43 x0 ) ) (- 14))) (> (+ (* 13 x1 ) (* (- 38) x1 ) (* 4 x1 ) (* (- 12) x2 ) ) (- 15)) (not (< (+ (* (- 38) x2 ) (* (- 3) x0 ) ) 15)) ))
+(assert (or (>= (+ (* (- 33) x0 ) (* 8 x1 ) (* 16 x0 ) ) 32) (not (<= (+ (* 23 x0 ) (* (- 28) x0 ) (* 30 x1 ) (* 17 x2 ) ) 41)) (>= (+ (* 28 x1 ) (* (- 42) x0 ) ) (- 12)) ))
+(assert (or (not (<= (+ (* 23 x1 ) (* 20 x2 ) (* (- 34) x0 ) (* (- 40) x2 ) ) 28)) (not (= (+ (* 17 x2 ) (* 30 x2 ) ) (- 15))) (<= (+ (* (- 47) x1 ) (* (- 24) x0 ) (* (- 37) x0 ) ) 19) ))
+(assert (or (= (+ (* 14 x0 ) (* (- 22) x1 ) ) 30) (<= (+ (* 28 x1 ) (* 33 x2 ) (* 49 x2 ) ) (- 35)) (<= (+ (* (- 47) x0 ) (* (- 45) x2 ) (* (- 7) x1 ) (* (- 47) x1 ) ) 47) ))
+(check-sat)
+(push 1)
+(assert (or (not (> (+ (* 35 x2 ) (* (- 46) x0 ) ) 26)) (>= (+ (* 3 x1 ) (* 1 x2 ) (* (- 14) x0 ) ) 27) (> (+ (* (- 27) x2 ) (* 20 x2 ) (* 19 x1 ) (* 23 x2 ) ) 39) ))
+(assert (or (not (> (+ (* 20 x0 ) (* 9 x2 ) ) 6)) (not (< (+ (* 19 x1 ) (* (- 45) x1 ) ) (- 45))) ))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
diff --git a/test/regress/regress0/push-pop/arith/fuzz_5_1.smt2 b/test/regress/regress0/push-pop/arith/fuzz_5_1.smt2
new file mode 100644
index 0000000..0541423
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_5_1.smt2
@@ -0,0 +1,83 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(declare-fun x3 () Real)
+(declare-fun x4 () Real)
+(assert (<= (+ (* 27 x2 ) (* 30 x4 ) ) (- 46)) )
+(assert (or (not (>= (+ (* (- 16) x0 ) (* (- 10) x4 ) (* 21 x3 ) (* (- 46) x0 ) (* 29 x0 ) (* 41 x4 ) (* 32 x0 ) (* 33 x2 ) (* (- 37) x1 ) (* 36 x3 ) (* 18 x3 ) ) (- 34))) (<= (+ (* (- 40) x2 ) (* (- 3) x1 ) (* (- 44) x4 ) (* (- 45) x1 ) (* 20 x1 ) (* 48 x1 ) (* 28 x1 ) (* (- 27) x3 ) (* 35 x4 ) ) (- 45)) ))
+(assert (or (not (= (+ (* (- 41) x2 ) (* 28 x2 ) (* (- 8) x3 ) (* 27 x0 ) (* (- 19) x2 ) (* (- 7) x4 ) ) (- 13))) (< (+ (* (- 26) x3 ) (* (- 44) x4 ) (* 14 x2 ) (* (- 27) x4 ) (* 37 x0 ) (* (- 32) x3 ) (* (- 46) x1 ) (* 23 x2 ) ) 15) ))
+(assert (not (>= (+ (* 31 x1 ) (* (- 15) x1 ) (* 25 x2 ) (* 27 x3 ) (* 23 x1 ) ) (- 48))) )
+(assert (or (< (+ (* (- 38) x2 ) (* 15 x3 ) (* 9 x3 ) (* 25 x0 ) (* 37 x0 ) (* 39 x2 ) (* 41 x1 ) (* (- 18) x3 ) ) (- 26)) (not (> (+ (* 15 x2 ) (* 18 x1 ) (* 35 x3 ) (* 20 x1 ) (* 31 x1 ) (* (- 25) x2 ) (* 30 x3 ) (* 26 x1 ) (* (- 37) x2 ) (* 27 x4 ) (* (- 32) x0 ) ) 16)) ))
+(assert (or (not (= (+ (* 27 x3 ) (* (- 50) x1 ) (* (- 28) x2 ) ) (- 30))) (not (>= (+ (* (- 50) x3 ) (* (- 15) x0 ) (* 15 x3 ) (* 19 x2 ) ) (- 8))) ))
+(assert (or (>= (+ (* 4 x1 ) (* 27 x3 ) (* 15 x3 ) (* (- 39) x4 ) (* (- 45) x4 ) (* 38 x3 ) (* 33 x4 ) (* 40 x1 ) (* (- 26) x2 ) (* 44 x1 ) ) (- 39)) (> (+ (* 4 x0 ) (* (- 26) x3 ) (* (- 24) x2 ) ) (- 40)) ))
+(assert (not (> (+ (* (- 39) x1 ) (* 32 x4 ) ) 19)) )
+(assert (or (= (+ (* (- 13) x1 ) (* (- 16) x3 ) ) 33) (not (> (+ (* 47 x4 ) (* (- 3) x4 ) (* (- 49) x3 ) (* (- 15) x1 ) (* (- 39) x1 ) (* 20 x1 ) (* 44 x4 ) (* 30 x4 ) (* 5 x1 ) (* 49 x4 ) (* 23 x0 ) ) 41)) ))
+(assert (or (< (+ (* 41 x0 ) (* (- 50) x1 ) (* 41 x3 ) (* (- 37) x4 ) (* 27 x4 ) (* (- 32) x4 ) (* (- 43) x3 ) (* (- 46) x3 ) (* (- 28) x3 ) (* 31 x4 ) (* 45 x2 ) ) 31) (not (= (+ (* (- 19) x0 ) (* (- 30) x4 ) (* (- 24) x4 ) (* (- 27) x1 ) (* 2 x1 ) (* 28 x4 ) (* (- 40) x2 ) ) 5)) (>= (+ (* 19 x2 ) (* (- 20) x0 ) (* 35 x1 ) (* (- 29) x2 ) (* (- 5) x0 ) (* (- 49) x1 ) (* (- 9) x4 ) (* 3 x0 ) (* (- 36) x3 ) (* 27 x0 ) ) (- 13)) ))
+(assert (or (> (+ (* 42 x4 ) (* 44 x4 ) (* (- 4) x3 ) (* 38 x3 ) (* (- 43) x2 ) ) (- 25)) (> (+ (* (- 16) x1 ) (* 5 x4 ) (* (- 6) x2 ) ) 11) ))
+(assert (or (> (+ (* 1 x3 ) (* (- 10) x4 ) (* 20 x1 ) (* 20 x4 ) (* (- 26) x4 ) ) (- 33)) (< (+ (* 40 x2 ) (* (- 35) x2 ) ) (- 2)) ))
+(assert (or (<= (+ (* (- 5) x4 ) (* (- 35) x3 ) (* 45 x3 ) (* 44 x0 ) (* (- 31) x1 ) (* (- 50) x4 ) (* 20 x1 ) (* 8 x0 ) (* (- 11) x1 ) (* (- 40) x3 ) (* 27 x0 ) ) 2) (= (+ (* (- 5) x1 ) (* (- 16) x2 ) (* (- 34) x2 ) (* (- 47) x4 ) (* 20 x3 ) (* 48 x3 ) ) 14) ))
+(assert (or (not (< (+ (* 17 x2 ) (* (- 32) x4 ) ) (- 43))) (= (+ (* (- 17) x1 ) (* 30 x4 ) (* 20 x2 ) (* (- 1) x2 ) (* 5 x1 ) (* (- 14) x2 ) (* 2 x3 ) (* 6 x3 ) (* 24 x1 ) (* 23 x3 ) (* 0 x4 ) ) (- 14)) (< (+ (* 27 x1 ) (* 48 x2 ) (* 4 x1 ) (* 40 x3 ) (* (- 29) x4 ) (* 14 x3 ) (* 19 x2 ) (* (- 10) x4 ) (* (- 21) x0 ) (* (- 35) x4 ) ) (- 13)) ))
+(assert (or (<= (+ (* 7 x3 ) (* 13 x3 ) (* (- 19) x0 ) ) (- 10)) (= (+ (* (- 37) x3 ) (* (- 25) x2 ) (* (- 33) x1 ) (* (- 41) x4 ) (* 10 x2 ) (* (- 6) x1 ) ) (- 9)) (> (+ (* (- 1) x3 ) (* 15 x1 ) (* (- 35) x2 ) (* 30 x4 ) (* (- 9) x3 ) (* 21 x2 ) (* 44 x1 ) ) (- 17)) ))
+(check-sat)
+(push 1)
+(assert (<= (+ (* 5 x2 ) (* 44 x2 ) (* 36 x3 ) (* 3 x0 ) (* 16 x3 ) ) 48) )
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (not (<= (+ (* (- 39) x4 ) (* (- 40) x1 ) ) (- 45))) )
+(assert (= (+ (* 35 x3 ) (* 20 x1 ) (* (- 49) x4 ) (* (- 32) x3 ) (* 33 x3 ) (* 4 x1 ) (* (- 34) x4 ) (* 0 x4 ) (* (- 50) x3 ) ) 42) )
+(assert (or (> (+ (* 2 x3 ) (* (- 33) x4 ) (* 15 x1 ) (* 34 x4 ) (* (- 3) x2 ) (* (- 16) x1 ) (* (- 14) x3 ) (* 39 x2 ) ) 21) (not (<= (+ (* 39 x2 ) (* 22 x2 ) (* (- 50) x0 ) (* (- 23) x0 ) (* (- 48) x3 ) (* (- 31) x3 ) (* 9 x1 ) (* (- 23) x1 ) (* 27 x1 ) (* 29 x3 ) ) (- 26))) (not (<= (+ (* 15 x0 ) (* 26 x1 ) (* 11 x0 ) (* 24 x4 ) (* (- 9) x3 ) (* (- 5) x2 ) (* 4 x3 ) (* 24 x2 ) (* (- 5) x3 ) (* 16 x3 ) (* 31 x2 ) ) 43)) ))
+(assert (or (>= (+ (* 27 x4 ) (* 36 x1 ) (* 27 x4 ) (* (- 18) x0 ) (* (- 1) x4 ) (* 44 x1 ) (* (- 45) x2 ) (* 38 x4 ) (* (- 39) x2 ) (* (- 30) x2 ) ) (- 41)) (not (< (+ (* (- 18) x3 ) (* 48 x1 ) (* 14 x3 ) (* (- 28) x2 ) (* 46 x1 ) (* 38 x4 ) (* (- 26) x0 ) ) (- 30))) ))
+(assert (or (= (+ (* (- 1) x4 ) (* 46 x0 ) (* 19 x3 ) (* 24 x3 ) (* (- 43) x1 ) (* 14 x2 ) (* (- 7) x2 ) (* 35 x2 ) ) 9) (not (< (+ (* (- 34) x3 ) (* 18 x1 ) (* 11 x2 ) (* (- 33) x0 ) (* 45 x4 ) (* (- 27) x0 ) (* 42 x2 ) (* (- 40) x1 ) (* (- 10) x2 ) ) 34)) ))
+(assert (or (not (>= (+ (* 15 x1 ) (* (- 19) x1 ) (* 34 x4 ) (* 9 x4 ) (* (- 25) x2 ) (* (- 5) x3 ) (* 15 x1 ) (* 27 x4 ) (* 49 x2 ) (* (- 41) x1 ) ) 42)) (not (< (+ (* (- 43) x4 ) (* (- 38) x4 ) (* (- 3) x0 ) (* (- 43) x3 ) ) 15)) ))
+(assert (or (>= (+ (* 18 x4 ) (* 19 x4 ) (* (- 13) x0 ) (* 30 x1 ) (* 48 x4 ) (* 17 x1 ) (* 25 x0 ) (* 33 x2 ) (* 6 x1 ) (* (- 24) x1 ) (* (- 24) x0 ) ) (- 25)) (not (<= (+ (* 25 x1 ) (* (- 26) x2 ) (* (- 37) x1 ) (* 2 x4 ) (* (- 40) x2 ) (* (- 30) x1 ) (* 6 x2 ) (* (- 25) x0 ) ) 25)) ))
+(assert (or (>= (+ (* 7 x1 ) (* 46 x2 ) (* 40 x0 ) (* (- 29) x2 ) (* 30 x0 ) (* (- 46) x3 ) (* 0 x4 ) (* (- 1) x2 ) (* 1 x4 ) ) (- 39)) (not (<= (+ (* (- 8) x2 ) (* 29 x0 ) (* (- 15) x4 ) (* 40 x4 ) (* 25 x0 ) (* (- 16) x2 ) (* (- 15) x3 ) (* (- 2) x4 ) ) (- 42))) ))
+(assert (or (not (<= (+ (* (- 19) x3 ) (* (- 37) x4 ) (* 47 x4 ) (* 8 x4 ) (* (- 37) x2 ) (* 34 x0 ) (* 26 x4 ) (* (- 7) x0 ) ) (- 31))) (> (+ (* 44 x3 ) (* (- 45) x3 ) (* 11 x2 ) (* (- 28) x2 ) ) 20) (not (> (+ (* 43 x3 ) (* (- 5) x3 ) (* 4 x0 ) (* (- 6) x3 ) (* 5 x2 ) (* 14 x1 ) (* (- 49) x3 ) ) (- 43))) ))
+(check-sat)
+(pop 1)
+(assert (or (>= (+ (* 16 x3 ) (* (- 8) x1 ) (* 8 x3 ) (* (- 2) x0 ) (* 30 x3 ) ) (- 9)) (not (>= (+ (* 30 x1 ) (* (- 44) x0 ) (* 11 x2 ) (* 21 x0 ) ) (- 36))) (not (< (+ (* 44 x2 ) (* 33 x2 ) (* 15 x1 ) (* (- 41) x4 ) (* 40 x0 ) (* 32 x2 ) (* (- 45) x3 ) (* (- 19) x2 ) (* (- 10) x2 ) (* 26 x2 ) (* (- 2) x0 ) ) (- 16))) ))
+(assert (or (not (< (+ (* 6 x0 ) (* (- 5) x2 ) (* 24 x1 ) (* (- 26) x3 ) (* 28 x2 ) (* 2 x3 ) ) (- 30))) (<= (+ (* (- 2) x2 ) (* (- 3) x1 ) ) (- 10)) (not (> (+ (* (- 41) x4 ) (* 20 x3 ) (* (- 46) x0 ) ) (- 4))) ))
+(assert (not (> (+ (* (- 26) x0 ) (* 4 x2 ) (* 22 x4 ) (* (- 24) x3 ) (* (- 6) x4 ) (* 32 x1 ) (* (- 21) x0 ) (* 35 x4 ) ) 40)) )
+(check-sat)
+(push 1)
+(assert (or (not (= (+ (* (- 23) x0 ) (* 30 x0 ) (* 6 x0 ) (* (- 47) x3 ) (* (- 46) x4 ) (* 23 x3 ) (* 17 x0 ) ) (- 18))) (< (+ (* 24 x4 ) (* (- 45) x1 ) (* 9 x0 ) (* (- 39) x3 ) (* 49 x2 ) (* (- 21) x1 ) (* 8 x3 ) (* 44 x3 ) (* (- 2) x0 ) (* (- 32) x2 ) ) (- 46)) ))
+(assert (or (not (< (+ (* 29 x1 ) (* 8 x4 ) (* (- 50) x2 ) (* 31 x4 ) (* (- 11) x1 ) (* (- 44) x0 ) (* 47 x2 ) (* 28 x0 ) (* (- 19) x3 ) ) (- 14))) (not (>= (+ (* (- 23) x2 ) (* 41 x2 ) (* (- 26) x1 ) (* (- 2) x0 ) (* 7 x0 ) (* (- 13) x2 ) (* 36 x0 ) (* (- 50) x2 ) (* 45 x2 ) ) 41)) ))
+(check-sat)
+(pop 1)
+(assert (or (= (+ (* (- 37) x0 ) (* 17 x4 ) (* 12 x2 ) (* (- 9) x4 ) (* (- 3) x0 ) (* 46 x0 ) (* 28 x0 ) (* 24 x0 ) (* (- 30) x0 ) (* (- 46) x1 ) (* (- 22) x2 ) ) (- 50)) (> (+ (* 47 x0 ) (* (- 16) x2 ) (* 4 x4 ) (* (- 39) x2 ) (* (- 11) x1 ) (* 18 x0 ) ) 31) (not (> (+ (* (- 39) x3 ) (* 33 x3 ) ) 35)) ))
+(assert (or (> (+ (* (- 50) x2 ) (* 17 x2 ) (* (- 48) x0 ) (* (- 32) x4 ) (* (- 2) x2 ) (* (- 14) x2 ) (* 44 x4 ) (* 34 x1 ) ) 12) (not (>= (+ (* (- 5) x4 ) (* 38 x0 ) (* (- 24) x4 ) (* 35 x3 ) (* 33 x4 ) (* (- 47) x3 ) (* 8 x0 ) (* (- 9) x0 ) (* (- 16) x2 ) (* (- 1) x1 ) (* (- 15) x0 ) ) (- 12))) (not (< (+ (* 45 x1 ) (* 0 x0 ) (* 36 x0 ) (* 15 x0 ) (* 26 x4 ) (* (- 40) x3 ) ) 11)) ))
+(assert (not (> (+ (* (- 4) x0 ) (* 47 x1 ) (* (- 13) x0 ) (* 17 x4 ) (* (- 13) x4 ) (* (- 44) x4 ) (* (- 5) x3 ) (* (- 20) x3 ) (* 28 x2 ) ) 18)) )
+(assert (or (not (< (+ (* (- 18) x0 ) (* (- 48) x1 ) (* 37 x4 ) (* 46 x0 ) (* 11 x0 ) (* (- 33) x4 ) (* (- 5) x0 ) ) 35)) (>= (+ (* (- 13) x3 ) (* 36 x1 ) (* (- 7) x4 ) (* 37 x0 ) (* (- 37) x2 ) (* (- 42) x2 ) (* (- 11) x4 ) ) (- 9)) (= (+ (* 27 x2 ) (* 42 x1 ) (* (- 3) x1 ) (* (- 9) x4 ) (* 44 x2 ) (* (- 24) x3 ) (* (- 49) x3 ) (* 39 x0 ) (* 36 x0 ) (* 7 x4 ) ) (- 25)) ))
+(assert (or (< (+ (* (- 27) x4 ) (* 43 x4 ) ) (- 22)) (not (>= (+ (* (- 36) x3 ) (* (- 47) x1 ) (* (- 30) x2 ) ) (- 1))) (> (+ (* (- 37) x1 ) (* (- 29) x4 ) (* 19 x1 ) (* 26 x3 ) (* (- 50) x3 ) (* 23 x1 ) (* 38 x2 ) (* 23 x4 ) (* 27 x3 ) (* 6 x0 ) ) 8) ))
+(assert (or (not (<= (+ (* (- 25) x1 ) (* (- 46) x3 ) (* (- 11) x0 ) (* 6 x4 ) (* (- 30) x3 ) (* (- 7) x2 ) (* (- 30) x1 ) (* 35 x4 ) ) (- 4))) (not (<= (+ (* 8 x1 ) (* (- 27) x2 ) (* 32 x2 ) (* 39 x1 ) (* 21 x3 ) ) 21)) (< (+ (* (- 30) x0 ) (* 1 x3 ) (* (- 12) x2 ) (* 4 x1 ) (* (- 31) x1 ) (* 27 x2 ) (* 23 x1 ) (* 31 x2 ) ) 18) ))
+(assert (or (< (+ (* (- 30) x1 ) (* 44 x2 ) (* (- 26) x2 ) (* 42 x0 ) ) 7) (not (= (+ (* (- 8) x3 ) (* (- 26) x0 ) (* 4 x1 ) (* 25 x0 ) ) 33)) ))
+(assert (not (> (+ (* 27 x2 ) (* 11 x2 ) (* (- 12) x3 ) (* (- 9) x4 ) (* 28 x4 ) (* (- 46) x2 ) (* (- 24) x0 ) (* (- 15) x3 ) ) (- 41))) )
+(check-sat)
+(push 1)
+(assert (or (= (+ (* (- 49) x3 ) (* (- 15) x1 ) (* (- 43) x0 ) (* 20 x0 ) (* 48 x1 ) (* (- 41) x3 ) (* 23 x3 ) (* 29 x3 ) (* (- 29) x3 ) ) 46) (> (+ (* 29 x3 ) (* 34 x4 ) (* (- 33) x2 ) (* 33 x4 ) (* 9 x0 ) (* 26 x4 ) ) (- 4)) ))
+(assert (not (< (+ (* (- 6) x1 ) (* 5 x2 ) (* (- 14) x2 ) (* (- 23) x1 ) (* (- 15) x4 ) (* 3 x2 ) (* (- 35) x0 ) (* 44 x0 ) ) 1)) )
+(assert (or (not (> (+ (* (- 37) x1 ) (* (- 18) x4 ) (* (- 19) x2 ) (* (- 37) x1 ) (* 17 x4 ) (* (- 43) x2 ) (* (- 24) x4 ) ) (- 7))) (>= (+ (* 46 x3 ) (* 8 x0 ) (* 45 x3 ) ) (- 46)) (not (<= (+ (* (- 32) x4 ) (* 30 x4 ) (* 30 x3 ) (* (- 15) x3 ) (* 14 x2 ) (* 28 x0 ) (* 7 x3 ) (* 8 x0 ) ) (- 14))) ))
+(assert (or (not (>= (+ (* 45 x3 ) (* 3 x4 ) ) (- 8))) (not (< (+ (* (- 37) x0 ) (* (- 14) x1 ) (* 34 x4 ) (* 9 x4 ) (* (- 17) x2 ) ) (- 27))) ))
+(assert (or (>= (+ (* (- 32) x1 ) (* (- 11) x4 ) (* 16 x0 ) (* 0 x0 ) (* 41 x1 ) (* 5 x3 ) (* (- 28) x4 ) (* 27 x3 ) (* (- 11) x3 ) (* (- 16) x3 ) ) (- 26)) (not (> (+ (* 18 x2 ) (* (- 19) x0 ) (* 4 x1 ) (* 45 x0 ) (* (- 41) x2 ) (* (- 18) x4 ) ) 26)) (>= (+ (* (- 13) x3 ) (* 15 x0 ) (* 33 x2 ) (* (- 50) x2 ) (* (- 43) x0 ) (* 1 x1 ) (* 29 x2 ) (* 11 x4 ) (* 21 x4 ) ) 42) ))
+(assert (<= (+ (* 9 x4 ) (* (- 40) x3 ) (* (- 33) x1 ) (* 46 x1 ) ) (- 43)) )
+(assert (or (<= (+ (* 9 x1 ) (* 7 x3 ) (* 7 x0 ) (* 11 x3 ) (* 37 x0 ) (* 13 x4 ) (* (- 40) x4 ) (* (- 13) x2 ) (* (- 29) x3 ) (* 46 x1 ) (* 2 x1 ) ) 15) (= (+ (* 12 x3 ) (* 17 x1 ) (* (- 36) x4 ) (* (- 18) x1 ) (* 38 x1 ) (* 9 x1 ) (* (- 38) x1 ) ) (- 4)) (not (< (+ (* (- 36) x3 ) (* 11 x0 ) (* 46 x1 ) (* (- 31) x4 ) (* 25 x0 ) (* (- 50) x4 ) (* 40 x4 ) (* 41 x4 ) ) 7)) ))
+(assert (>= (+ (* 12 x4 ) (* (- 24) x0 ) (* (- 11) x4 ) (* 3 x2 ) (* (- 38) x2 ) (* (- 48) x2 ) (* 5 x4 ) (* 33 x3 ) ) (- 23)) )
+(assert (> (+ (* 15 x3 ) (* 31 x1 ) (* 8 x1 ) ) (- 33)) )
+(assert (not (<= (+ (* (- 41) x4 ) (* 33 x4 ) (* (- 29) x2 ) (* (- 20) x1 ) (* (- 28) x0 ) ) (- 13))) )
+(assert (or (not (< (+ (* 23 x3 ) (* (- 29) x1 ) (* (- 23) x0 ) (* (- 7) x4 ) (* 21 x2 ) (* (- 21) x0 ) ) (- 33))) (not (< (+ (* 30 x3 ) (* (- 30) x2 ) (* (- 30) x3 ) (* 30 x2 ) (* (- 10) x2 ) (* (- 3) x3 ) (* (- 22) x4 ) (* (- 48) x0 ) (* (- 9) x3 ) (* (- 6) x4 ) ) (- 30))) (not (<= (+ (* 2 x2 ) (* (- 31) x4 ) ) 3)) ))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
diff --git a/test/regress/regress0/push-pop/arith/fuzz_5_2.smt2 b/test/regress/regress0/push-pop/arith/fuzz_5_2.smt2
new file mode 100644
index 0000000..9c387d8
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_5_2.smt2
@@ -0,0 +1,91 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(declare-fun x3 () Real)
+(declare-fun x4 () Real)
+(assert (> (+ (* (- 32) x4 ) (* 46 x3 ) ) 21) )
+(assert (< (+ (* 12 x3 ) (* (- 7) x2 ) (* (- 7) x0 ) (* (- 49) x1 ) (* (- 32) x3 ) ) (- 17)) )
+(assert (or (not (>= (+ (* (- 10) x2 ) (* 37 x1 ) (* 33 x0 ) (* 33 x0 ) ) 29)) (not (<= (+ (* 25 x3 ) (* 32 x4 ) (* (- 27) x3 ) (* 13 x2 ) (* (- 22) x1 ) (* (- 8) x4 ) (* (- 1) x4 ) (* 9 x4 ) (* 1 x1 ) (* 40 x1 ) ) 41)) ))
+(assert (not (= (+ (* (- 12) x1 ) (* 5 x3 ) (* 36 x4 ) (* (- 35) x0 ) (* 18 x0 ) ) (- 12))) )
+(assert (>= (+ (* (- 25) x4 ) (* (- 20) x4 ) (* 12 x2 ) (* 3 x1 ) (* (- 26) x3 ) (* (- 20) x2 ) (* (- 13) x2 ) (* 35 x0 ) (* 30 x0 ) ) (- 10)) )
+(assert (or (not (= (+ (* (- 48) x1 ) (* 25 x0 ) (* 13 x4 ) ) 24)) (not (> (+ (* (- 24) x0 ) (* 24 x1 ) ) (- 19))) ))
+(assert (not (< (+ (* (- 12) x2 ) (* (- 25) x3 ) ) (- 32))) )
+(assert (not (<= (+ (* 28 x4 ) (* 11 x4 ) (* 0 x3 ) (* (- 22) x4 ) (* (- 37) x0 ) (* 2 x3 ) (* 39 x1 ) ) (- 24))) )
+(assert (or (not (>= (+ (* 34 x3 ) (* 36 x2 ) (* (- 39) x4 ) (* 33 x2 ) (* 39 x1 ) (* 22 x3 ) (* 9 x3 ) ) (- 17))) (not (= (+ (* 19 x1 ) (* (- 45) x3 ) (* 16 x1 ) (* (- 50) x1 ) (* (- 23) x1 ) ) (- 25))) ))
+(assert (or (<= (+ (* 24 x3 ) (* (- 17) x1 ) ) 7) (= (+ (* (- 8) x1 ) (* 39 x1 ) (* (- 5) x1 ) (* 19 x4 ) (* (- 28) x1 ) (* (- 11) x4 ) ) 38) ))
+(assert (< (+ (* 35 x4 ) (* (- 28) x3 ) (* (- 11) x0 ) (* 49 x3 ) (* 7 x2 ) (* 44 x3 ) (* (- 10) x4 ) (* (- 28) x4 ) (* (- 45) x1 ) (* 30 x4 ) (* (- 13) x1 ) ) (- 48)) )
+(assert (or (> (+ (* 28 x4 ) (* (- 16) x1 ) (* 47 x0 ) (* (- 25) x3 ) (* 6 x1 ) ) 26) (not (<= (+ (* 49 x4 ) (* (- 7) x2 ) (* (- 17) x3 ) (* 42 x0 ) (* (- 23) x1 ) (* (- 30) x4 ) (* 7 x0 ) (* (- 44) x3 ) (* 38 x2 ) (* (- 36) x1 ) ) (- 28))) ))
+(assert (or (>= (+ (* (- 45) x3 ) (* (- 47) x2 ) (* (- 37) x2 ) (* 19 x2 ) ) 7) (= (+ (* (- 30) x4 ) (* (- 2) x1 ) (* (- 34) x1 ) (* 6 x2 ) (* (- 15) x2 ) (* (- 40) x4 ) (* (- 32) x1 ) ) (- 37)) ))
+(assert (not (<= (+ (* 24 x1 ) (* 18 x0 ) (* (- 3) x2 ) (* 46 x2 ) (* (- 7) x4 ) (* (- 5) x4 ) ) 14)) )
+(assert (or (not (> (+ (* (- 17) x3 ) (* (- 40) x0 ) (* 41 x4 ) (* (- 41) x0 ) (* (- 17) x2 ) (* (- 28) x3 ) (* 4 x3 ) (* 19 x3 ) (* (- 15) x2 ) ) 18)) (<= (+ (* (- 12) x0 ) (* 21 x0 ) (* (- 12) x0 ) ) (- 22)) ))
+(assert (or (not (> (+ (* (- 29) x3 ) (* (- 14) x4 ) (* (- 17) x0 ) (* 36 x4 ) (* 42 x2 ) ) (- 10))) (not (<= (+ (* (- 16) x2 ) (* (- 24) x1 ) (* (- 17) x1 ) (* (- 29) x4 ) (* 47 x1 ) (* 34 x4 ) (* 2 x3 ) ) (- 20))) ))
+(assert (or (< (+ (* 19 x1 ) (* 40 x1 ) (* 3 x0 ) (* (- 3) x0 ) (* (- 50) x0 ) (* 5 x2 ) (* (- 9) x4 ) ) 31) (> (+ (* 33 x4 ) (* (- 50) x2 ) (* (- 15) x4 ) (* (- 1) x3 ) (* (- 10) x3 ) (* 41 x0 ) (* (- 42) x4 ) ) (- 38)) ))
+(check-sat)
+(push 1)
+(assert (or (= (+ (* 36 x1 ) (* 23 x1 ) (* 24 x1 ) (* 38 x0 ) (* 3 x1 ) (* (- 14) x2 ) (* 28 x0 ) (* 37 x0 ) ) 33) (<= (+ (* 34 x4 ) (* 2 x4 ) (* (- 20) x1 ) (* 18 x3 ) (* 39 x3 ) (* (- 44) x0 ) (* 18 x1 ) (* (- 1) x0 ) (* (- 15) x3 ) ) (- 13)) (<= (+ (* (- 10) x2 ) (* (- 11) x0 ) (* 30 x4 ) (* 22 x3 ) (* (- 6) x0 ) (* 35 x3 ) (* 6 x4 ) (* 2 x2 ) ) (- 26)) ))
+(assert (or (not (<= (+ (* (- 9) x0 ) (* (- 27) x4 ) (* 6 x3 ) ) 21)) (not (> (+ (* 18 x0 ) (* 42 x4 ) (* (- 7) x0 ) (* 6 x1 ) (* 26 x4 ) (* 38 x3 ) (* 10 x2 ) (* (- 41) x3 ) (* 37 x2 ) (* 30 x0 ) ) (- 41))) ))
+(assert (or (not (= (+ (* 48 x1 ) (* (- 38) x3 ) (* (- 15) x3 ) (* (- 2) x2 ) (* (- 17) x2 ) (* 45 x3 ) (* 32 x4 ) (* 32 x1 ) (* (- 46) x3 ) (* (- 34) x4 ) ) 15)) (not (<= (+ (* 14 x1 ) (* 17 x0 ) (* (- 33) x2 ) ) 20)) (<= (+ (* 19 x2 ) (* (- 25) x0 ) ) 19) ))
+(assert (or (not (>= (+ (* 29 x4 ) (* (- 28) x1 ) (* (- 23) x3 ) (* (- 50) x3 ) (* 43 x3 ) (* 31 x0 ) ) 7)) (not (< (+ (* 21 x0 ) (* 11 x3 ) (* (- 24) x1 ) (* (- 2) x2 ) (* 2 x3 ) (* (- 37) x3 ) (* (- 34) x3 ) ) (- 38))) ))
+(assert (not (<= (+ (* 29 x2 ) (* (- 38) x0 ) (* 17 x4 ) (* 31 x0 ) (* 44 x0 ) (* (- 10) x4 ) (* 18 x0 ) ) (- 49))) )
+(assert (< (+ (* 44 x4 ) (* (- 42) x4 ) (* 28 x0 ) (* 7 x0 ) (* (- 33) x0 ) (* 49 x4 ) (* 19 x1 ) ) (- 39)) )
+(assert (or (>= (+ (* 39 x3 ) (* (- 30) x4 ) (* 27 x4 ) (* 5 x4 ) (* (- 10) x2 ) (* 2 x1 ) (* (- 28) x4 ) (* (- 5) x2 ) ) 2) (= (+ (* 44 x1 ) (* (- 45) x1 ) (* 39 x3 ) (* (- 46) x1 ) (* (- 18) x0 ) (* (- 50) x3 ) (* (- 38) x3 ) (* 32 x1 ) (* (- 23) x1 ) (* 4 x4 ) (* 47 x2 ) ) 8) (not (= (+ (* (- 27) x3 ) (* 3 x1 ) (* (- 32) x2 ) ) (- 3))) ))
+(assert (or (not (> (+ (* 17 x2 ) (* (- 43) x0 ) (* (- 39) x2 ) (* 38 x0 ) ) 43)) (not (<= (+ (* (- 16) x4 ) (* (- 21) x4 ) (* (- 42) x3 ) (* 36 x1 ) (* (- 37) x1 ) ) 41)) ))
+(assert (or (> (+ (* 34 x3 ) (* 22 x1 ) ) 1) (not (<= (+ (* 1 x4 ) (* (- 45) x1 ) (* 28 x0 ) (* 34 x2 ) (* 26 x0 ) (* 3 x1 ) (* (- 33) x4 ) (* 18 x1 ) (* 33 x2 ) (* 15 x4 ) ) (- 25))) ))
+(assert (or (> (+ (* (- 43) x2 ) (* (- 16) x4 ) (* 48 x0 ) (* (- 9) x0 ) (* (- 48) x0 ) (* (- 3) x1 ) (* (- 14) x4 ) (* (- 45) x1 ) (* (- 38) x1 ) (* 35 x2 ) ) (- 18)) (< (+ (* (- 5) x2 ) (* 0 x2 ) (* 13 x1 ) (* 28 x0 ) (* 29 x3 ) (* (- 45) x2 ) (* 0 x0 ) (* 35 x1 ) (* (- 33) x2 ) ) 35) (< (+ (* (- 3) x0 ) (* (- 27) x0 ) (* 8 x2 ) (* 2 x0 ) (* 4 x4 ) ) 48) ))
+(check-sat)
+(push 1)
+(assert (= (+ (* (- 33) x3 ) (* 8 x2 ) (* (- 5) x4 ) (* (- 27) x1 ) (* 31 x4 ) (* (- 30) x2 ) (* 17 x2 ) (* (- 31) x3 ) (* 2 x2 ) ) 27) )
+(assert (not (= (+ (* 39 x2 ) (* 46 x3 ) (* (- 13) x1 ) (* 17 x0 ) (* 39 x1 ) (* (- 25) x0 ) ) 36)) )
+(assert (or (> (+ (* (- 2) x1 ) (* (- 9) x2 ) (* (- 20) x3 ) ) (- 4)) (> (+ (* (- 13) x4 ) (* (- 1) x2 ) (* 45 x2 ) (* 15 x2 ) (* (- 10) x4 ) (* 41 x2 ) (* (- 40) x1 ) ) 18) ))
+(assert (or (not (<= (+ (* (- 8) x4 ) (* (- 21) x3 ) (* (- 44) x1 ) ) 9)) (= (+ (* (- 27) x2 ) (* 49 x2 ) (* (- 14) x4 ) (* (- 28) x1 ) ) (- 49)) (< (+ (* (- 7) x3 ) (* 44 x3 ) ) 13) ))
+(assert (or (not (<= (+ (* (- 38) x2 ) (* 13 x1 ) (* (- 5) x0 ) (* 24 x2 ) (* (- 16) x4 ) (* (- 29) x0 ) ) 35)) (not (< (+ (* (- 39) x1 ) (* (- 40) x1 ) (* 37 x4 ) (* 47 x1 ) (* 19 x1 ) (* 46 x2 ) ) (- 44))) ))
+(check-sat)
+(pop 1)
+(assert (<= (+ (* 47 x1 ) (* (- 49) x2 ) (* (- 33) x3 ) (* 18 x4 ) (* (- 18) x1 ) (* (- 10) x4 ) (* (- 38) x0 ) (* (- 6) x2 ) (* 10 x4 ) (* (- 18) x3 ) (* (- 25) x0 ) ) (- 21)) )
+(assert (or (not (<= (+ (* (- 29) x1 ) (* 12 x3 ) (* 15 x3 ) (* (- 49) x0 ) (* 40 x2 ) (* (- 25) x4 ) ) 24)) (not (>= (+ (* 18 x4 ) (* (- 14) x0 ) ) (- 22))) (<= (+ (* (- 1) x0 ) (* (- 31) x3 ) (* 21 x1 ) (* 12 x4 ) (* (- 28) x2 ) (* 12 x1 ) (* 42 x4 ) (* (- 29) x3 ) (* 34 x4 ) (* 10 x2 ) ) 6) ))
+(assert (>= (+ (* 15 x1 ) (* (- 1) x4 ) (* (- 11) x0 ) (* (- 24) x1 ) (* 37 x3 ) ) (- 1)) )
+(assert (or (not (= (+ (* (- 1) x1 ) (* 22 x4 ) (* 5 x2 ) (* (- 29) x1 ) (* 15 x0 ) (* 46 x1 ) ) (- 40))) (< (+ (* (- 4) x0 ) (* 13 x2 ) ) 36) ))
+(assert (or (<= (+ (* 33 x3 ) (* 43 x4 ) (* (- 9) x1 ) (* 32 x4 ) (* 18 x3 ) (* (- 29) x3 ) (* (- 45) x0 ) (* 26 x3 ) ) (- 48)) (>= (+ (* 36 x4 ) (* (- 18) x1 ) (* 27 x4 ) (* (- 8) x2 ) (* 12 x0 ) (* (- 41) x2 ) (* 19 x0 ) (* 8 x4 ) (* (- 2) x0 ) (* 25 x3 ) ) (- 34)) ))
+(assert (or (>= (+ (* 40 x1 ) (* 35 x4 ) (* 29 x0 ) (* 28 x1 ) (* 22 x3 ) (* (- 8) x0 ) (* (- 18) x4 ) (* 48 x4 ) (* (- 48) x1 ) (* 45 x2 ) ) 10) (not (<= (+ (* 14 x1 ) (* (- 45) x3 ) (* 27 x2 ) (* (- 41) x1 ) (* (- 15) x4 ) (* 4 x1 ) (* (- 33) x1 ) (* 31 x2 ) (* (- 11) x1 ) (* 5 x4 ) (* (- 22) x2 ) ) (- 45))) (> (+ (* (- 7) x3 ) (* (- 42) x2 ) (* 9 x3 ) (* 39 x4 ) (* (- 3) x1 ) (* (- 38) x1 ) (* 35 x3 ) ) 49) ))
+(assert (or (not (< (+ (* 14 x2 ) (* 21 x1 ) (* (- 10) x1 ) (* 26 x2 ) (* (- 16) x0 ) (* 20 x1 ) (* (- 46) x4 ) (* (- 20) x4 ) ) (- 35))) (not (> (+ (* 35 x2 ) (* (- 40) x2 ) (* (- 4) x2 ) (* (- 36) x1 ) (* (- 11) x2 ) ) 41)) ))
+(check-sat)
+(pop 1)
+(assert (or (not (= (+ (* (- 42) x2 ) (* (- 42) x4 ) (* 5 x4 ) (* (- 40) x4 ) (* (- 19) x0 ) (* (- 46) x3 ) (* 18 x4 ) (* 11 x1 ) (* (- 34) x3 ) (* (- 3) x0 ) ) (- 20))) (> (+ (* 44 x1 ) (* 22 x4 ) (* (- 15) x4 ) (* 33 x1 ) (* (- 13) x4 ) (* 25 x2 ) ) 43) (not (> (+ (* 48 x2 ) (* (- 44) x0 ) (* 26 x3 ) (* (- 1) x0 ) (* (- 18) x2 ) (* 25 x1 ) (* (- 16) x1 ) (* 43 x0 ) (* 35 x0 ) (* 7 x2 ) ) 22)) ))
+(assert (or (>= (+ (* (- 39) x3 ) (* (- 22) x0 ) (* (- 13) x4 ) (* (- 26) x4 ) (* 47 x0 ) (* (- 35) x3 ) (* 47 x1 ) (* 44 x2 ) (* 6 x2 ) (* (- 25) x4 ) ) (- 49)) (> (+ (* (- 16) x3 ) (* 9 x3 ) (* (- 34) x3 ) ) 45) ))
+(assert (or (not (>= (+ (* (- 44) x2 ) (* 23 x3 ) ) (- 47))) (= (+ (* (- 10) x1 ) (* (- 30) x1 ) (* 27 x1 ) (* 47 x0 ) (* (- 43) x1 ) (* (- 41) x2 ) (* 15 x2 ) (* 47 x0 ) (* (- 34) x4 ) (* 11 x3 ) ) (- 42)) ))
+(assert (or (< (+ (* (- 18) x1 ) (* 1 x4 ) (* 20 x1 ) (* (- 16) x3 ) (* (- 11) x3 ) (* 38 x2 ) (* (- 47) x3 ) (* 5 x3 ) ) 14) (not (= (+ (* (- 43) x2 ) (* 32 x0 ) ) (- 30))) (not (> (+ (* (- 17) x4 ) (* (- 40) x4 ) (* (- 45) x2 ) (* (- 47) x4 ) (* 7 x3 ) ) 40)) ))
+(assert (not (= (+ (* 9 x2 ) (* 23 x0 ) (* (- 32) x4 ) (* 38 x0 ) ) 27)) )
+(check-sat)
+(push 1)
+(assert (or (= (+ (* 11 x0 ) (* (- 7) x3 ) (* 39 x4 ) ) 7) (not (< (+ (* 38 x4 ) (* 28 x0 ) (* (- 45) x4 ) (* 9 x2 ) (* 11 x0 ) (* (- 30) x0 ) ) (- 27))) (not (< (+ (* 48 x4 ) (* 2 x2 ) (* (- 46) x3 ) ) (- 37))) ))
+(assert (not (< (+ (* (- 6) x4 ) (* (- 47) x0 ) (* 40 x4 ) (* (- 14) x4 ) (* (- 29) x0 ) (* 47 x2 ) ) (- 16))) )
+(check-sat)
+(pop 1)
+(assert (not (>= (+ (* 23 x2 ) (* (- 30) x1 ) (* (- 48) x4 ) (* 27 x1 ) (* (- 16) x1 ) (* 27 x0 ) (* 10 x3 ) (* 13 x3 ) ) (- 47))) )
+(assert (or (< (+ (* 25 x3 ) (* 15 x0 ) ) (- 17)) (< (+ (* 3 x0 ) (* (- 11) x1 ) (* (- 10) x3 ) (* (- 19) x3 ) (* (- 11) x4 ) (* 5 x0 ) (* 46 x2 ) (* (- 48) x2 ) ) (- 39)) ))
+(assert (or (not (>= (+ (* 19 x3 ) (* 15 x4 ) (* 19 x1 ) (* (- 28) x3 ) ) 5)) (not (< (+ (* 2 x0 ) (* (- 32) x4 ) (* (- 22) x4 ) (* (- 49) x4 ) (* 28 x3 ) (* (- 47) x4 ) ) 30)) ))
+(assert (or (< (+ (* 32 x4 ) (* 45 x2 ) (* (- 44) x3 ) (* (- 19) x0 ) (* (- 30) x0 ) (* (- 42) x2 ) (* 44 x4 ) (* 48 x0 ) (* 46 x2 ) (* 24 x1 ) (* 12 x0 ) ) 2) (not (> (+ (* (- 8) x0 ) (* (- 16) x4 ) (* (- 5) x1 ) (* (- 42) x2 ) (* (- 33) x1 ) (* (- 44) x1 ) (* 49 x0 ) (* (- 32) x3 ) (* (- 33) x4 ) (* (- 31) x4 ) (* 27 x2 ) ) 18)) (not (> (+ (* 5 x0 ) (* 27 x2 ) (* (- 21) x0 ) (* 25 x4 ) (* 10 x1 ) (* (- 17) x2 ) (* (- 37) x1 ) (* (- 11) x2 ) ) 21)) ))
+(check-sat)
+(push 1)
+(assert (not (>= (+ (* 19 x2 ) (* 16 x2 ) (* (- 17) x4 ) (* (- 43) x4 ) ) 43)) )
+(assert (not (> (+ (* (- 6) x1 ) (* 4 x4 ) (* 9 x1 ) (* 32 x0 ) ) 11)) )
+(assert (or (not (> (+ (* 4 x1 ) (* (- 25) x3 ) (* 12 x0 ) (* 14 x1 ) (* 10 x2 ) ) (- 27))) (<= (+ (* 3 x4 ) (* (- 43) x0 ) (* 34 x4 ) (* 16 x1 ) ) (- 7)) ))
+(assert (not (> (+ (* (- 38) x1 ) (* (- 43) x2 ) (* (- 18) x3 ) (* (- 4) x2 ) (* 25 x1 ) (* 43 x0 ) (* (- 16) x0 ) (* 22 x2 ) ) 36)) )
+(assert (= (+ (* 22 x2 ) (* (- 23) x0 ) (* 47 x2 ) (* (- 31) x3 ) (* 4 x0 ) (* 9 x3 ) (* (- 48) x4 ) (* 48 x1 ) ) (- 2)) )
+(assert (or (>= (+ (* (- 31) x1 ) (* (- 16) x3 ) ) (- 28)) (<= (+ (* (- 36) x2 ) (* (- 11) x4 ) (* (- 29) x1 ) (* 26 x1 ) (* 36 x1 ) ) (- 19)) (<= (+ (* 39 x3 ) (* 28 x0 ) (* 19 x4 ) (* (- 37) x1 ) (* 39 x1 ) (* 14 x3 ) (* (- 43) x4 ) (* 8 x4 ) ) 42) ))
+(assert (< (+ (* 46 x0 ) (* 18 x3 ) (* (- 24) x3 ) (* 31 x4 ) (* 25 x3 ) ) 20) )
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
diff --git a/test/regress/regress0/push-pop/arith/fuzz_5_3.smt2 b/test/regress/regress0/push-pop/arith/fuzz_5_3.smt2
new file mode 100644
index 0000000..b61eb00
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_5_3.smt2
@@ -0,0 +1,66 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(declare-fun x3 () Real)
+(declare-fun x4 () Real)
+(assert (or (<= (+ (* 30 x0 ) (* 33 x1 ) (* 40 x1 ) (* 27 x3 ) (* 17 x3 ) (* (- 18) x0 ) (* (- 30) x0 ) ) (- 46)) (> (+ (* 48 x3 ) (* 16 x1 ) (* (- 20) x4 ) (* (- 22) x1 ) (* (- 11) x3 ) (* (- 27) x0 ) (* 8 x2 ) (* (- 17) x1 ) (* (- 21) x1 ) (* 19 x0 ) ) 8) (not (> (+ (* 24 x4 ) (* (- 7) x0 ) (* 11 x4 ) (* (- 17) x1 ) (* 3 x1 ) (* 36 x1 ) (* (- 16) x0 ) ) 16)) ))
+(assert (or (> (+ (* (- 30) x1 ) (* (- 6) x3 ) (* 33 x4 ) (* 9 x4 ) (* (- 47) x0 ) ) 30) (not (<= (+ (* 44 x3 ) (* (- 34) x1 ) (* (- 5) x2 ) (* (- 20) x1 ) (* 6 x1 ) (* (- 1) x4 ) (* 40 x2 ) (* 11 x4 ) (* 48 x3 ) (* 23 x3 ) (* (- 16) x2 ) ) 6)) ))
+(assert (or (not (> (+ (* (- 9) x3 ) (* (- 49) x4 ) (* (- 23) x2 ) (* (- 36) x2 ) (* (- 11) x2 ) (* 5 x1 ) (* 10 x2 ) (* (- 6) x1 ) (* 1 x1 ) (* (- 34) x0 ) ) (- 1))) (> (+ (* 48 x4 ) (* 20 x0 ) ) 47) (not (<= (+ (* 39 x1 ) (* (- 7) x3 ) (* (- 3) x4 ) (* 43 x4 ) (* (- 45) x1 ) ) (- 49))) ))
+(assert (>= (+ (* 38 x0 ) (* 11 x0 ) (* (- 23) x3 ) (* 5 x0 ) (* 7 x1 ) (* 25 x0 ) (* (- 30) x0 ) (* (- 21) x2 ) (* (- 20) x0 ) ) (- 26)) )
+(assert (or (> (+ (* (- 25) x1 ) (* (- 41) x4 ) (* 34 x3 ) (* 45 x3 ) (* (- 34) x2 ) (* (- 47) x2 ) ) (- 7)) (< (+ (* 33 x1 ) (* (- 7) x1 ) (* (- 50) x3 ) (* 15 x2 ) ) 32) (= (+ (* 23 x3 ) (* 24 x0 ) (* (- 16) x3 ) (* (- 17) x4 ) (* 12 x0 ) (* (- 7) x4 ) (* (- 12) x0 ) (* 24 x3 ) (* 6 x2 ) ) (- 3)) ))
+(assert (< (+ (* (- 11) x1 ) (* 29 x2 ) (* 10 x3 ) (* 21 x3 ) (* (- 27) x3 ) (* (- 18) x2 ) (* 31 x4 ) (* 29 x2 ) ) 46) )
+(assert (= (+ (* 38 x2 ) (* 2 x0 ) (* 21 x1 ) (* (- 20) x3 ) (* 46 x3 ) (* (- 20) x1 ) (* (- 41) x2 ) (* 20 x2 ) ) (- 18)) )
+(assert (or (= (+ (* 27 x3 ) (* 9 x4 ) (* (- 42) x4 ) (* (- 38) x2 ) (* (- 8) x3 ) (* (- 37) x1 ) (* 14 x4 ) (* 44 x0 ) (* 5 x4 ) (* (- 35) x0 ) (* (- 32) x2 ) ) 26) (> (+ (* (- 16) x0 ) (* (- 35) x0 ) (* 3 x3 ) (* (- 28) x3 ) (* 19 x4 ) (* (- 49) x3 ) (* (- 34) x1 ) (* (- 16) x0 ) (* 39 x4 ) (* 16 x4 ) (* 43 x3 ) ) (- 29)) (not (<= (+ (* (- 13) x4 ) (* 34 x0 ) (* (- 5) x1 ) (* 38 x3 ) (* 9 x3 ) (* 8 x1 ) (* (- 45) x1 ) (* (- 34) x4 ) ) 8)) ))
+(check-sat)
+(push 1)
+(assert (or (<= (+ (* (- 18) x3 ) (* 41 x1 ) (* 7 x1 ) (* (- 34) x2 ) (* (- 8) x3 ) (* (- 13) x3 ) (* 6 x0 ) (* (- 22) x1 ) (* 17 x4 ) ) 19) (< (+ (* (- 33) x3 ) (* 20 x1 ) (* (- 8) x1 ) (* 17 x4 ) (* 17 x0 ) (* 23 x2 ) (* (- 40) x1 ) (* (- 35) x2 ) (* (- 15) x3 ) (* (- 13) x2 ) (* 47 x2 ) ) 43) ))
+(assert (or (not (< (+ (* (- 2) x3 ) (* 1 x2 ) (* 11 x0 ) (* (- 32) x3 ) (* (- 7) x3 ) (* (- 5) x3 ) ) (- 40))) (< (+ (* (- 50) x2 ) (* (- 20) x2 ) ) 37) ))
+(assert (or (= (+ (* 19 x2 ) (* (- 10) x1 ) ) (- 34)) (<= (+ (* 7 x0 ) (* 46 x1 ) (* 7 x0 ) (* (- 37) x4 ) (* (- 1) x2 ) (* 23 x0 ) (* 9 x3 ) (* 10 x0 ) (* (- 37) x0 ) (* (- 41) x1 ) (* 0 x0 ) ) 24) ))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (= (+ (* (- 20) x1 ) (* 32 x3 ) (* (- 21) x2 ) (* (- 9) x2 ) (* 5 x1 ) (* 4 x4 ) (* 42 x4 ) (* 6 x4 ) (* 22 x2 ) (* 32 x3 ) (* 42 x3 ) ) 1) )
+(assert (or (not (>= (+ (* (- 39) x0 ) (* 19 x4 ) (* (- 1) x3 ) ) (- 47))) (not (<= (+ (* (- 40) x4 ) (* (- 10) x2 ) (* 22 x4 ) (* (- 20) x4 ) ) 30)) ))
+(assert (not (= (+ (* (- 23) x0 ) (* 33 x4 ) (* (- 43) x0 ) (* (- 48) x4 ) (* 8 x1 ) (* (- 34) x1 ) (* 24 x3 ) (* 37 x4 ) (* (- 27) x2 ) (* (- 16) x4 ) ) (- 35))) )
+(assert (not (>= (+ (* (- 1) x3 ) (* 19 x4 ) ) 29)) )
+(assert (or (not (> (+ (* (- 36) x3 ) (* (- 16) x0 ) (* 12 x3 ) (* (- 17) x2 ) (* 1 x3 ) ) 22)) (< (+ (* (- 8) x2 ) (* (- 40) x1 ) (* (- 17) x4 ) (* 37 x1 ) (* 41 x2 ) (* (- 37) x1 ) (* (- 46) x3 ) ) (- 33)) ))
+(assert (<= (+ (* 27 x1 ) (* 18 x4 ) ) 12) )
+(assert (or (not (> (+ (* (- 43) x0 ) (* 43 x0 ) (* 36 x2 ) (* 21 x1 ) (* 11 x1 ) (* 32 x4 ) ) 24)) (not (< (+ (* 33 x0 ) (* 29 x3 ) (* 39 x3 ) (* 17 x4 ) (* 21 x0 ) (* 32 x2 ) (* (- 38) x1 ) (* (- 37) x0 ) (* 23 x4 ) ) (- 43))) (not (<= (+ (* 35 x4 ) (* 23 x1 ) (* 23 x0 ) (* (- 39) x0 ) (* (- 13) x4 ) (* (- 10) x1 ) (* (- 33) x2 ) (* 28 x1 ) (* 41 x4 ) (* 43 x4 ) ) 23)) ))
+(check-sat)
+(pop 1)
+(assert (or (not (= (+ (* (- 12) x0 ) (* (- 26) x2 ) (* (- 34) x1 ) (* 46 x0 ) (* (- 38) x4 ) (* (- 45) x4 ) ) 0)) (not (>= (+ (* (- 23) x2 ) (* 9 x2 ) (* 48 x0 ) (* (- 6) x2 ) (* (- 40) x1 ) (* (- 19) x0 ) (* (- 21) x4 ) ) 13)) (not (<= (+ (* 45 x1 ) (* 28 x3 ) (* (- 13) x1 ) ) 40)) ))
+(check-sat)
+(push 1)
+(assert (or (>= (+ (* (- 31) x0 ) (* 39 x3 ) (* (- 43) x2 ) (* (- 12) x4 ) (* (- 46) x0 ) (* 46 x3 ) (* 19 x0 ) (* (- 8) x4 ) (* 41 x3 ) (* 34 x0 ) ) (- 10)) (not (>= (+ (* (- 20) x3 ) (* (- 19) x4 ) (* (- 33) x3 ) (* 18 x2 ) (* (- 47) x1 ) (* 28 x0 ) (* 6 x0 ) (* (- 23) x1 ) (* 6 x0 ) (* 0 x0 ) ) (- 25))) ))
+(assert (or (not (>= (+ (* 19 x0 ) (* 27 x4 ) (* (- 45) x4 ) (* (- 27) x2 ) (* (- 5) x3 ) (* (- 20) x0 ) ) 16)) (not (> (+ (* 45 x4 ) (* (- 22) x4 ) (* 46 x4 ) (* (- 1) x1 ) (* 12 x3 ) (* (- 7) x0 ) (* 15 x3 ) (* 28 x4 ) (* 26 x4 ) (* 35 x2 ) (* (- 35) x1 ) ) 11)) ))
+(assert (or (not (<= (+ (* 35 x2 ) (* 44 x3 ) (* 44 x2 ) ) (- 28))) (> (+ (* 39 x3 ) (* (- 6) x2 ) (* 2 x4 ) (* (- 5) x4 ) (* 45 x2 ) (* 40 x1 ) (* 4 x1 ) (* (- 8) x0 ) (* (- 33) x3 ) ) 45) ))
+(assert (or (> (+ (* 46 x4 ) (* (- 4) x0 ) ) 5) (>= (+ (* (- 21) x1 ) (* 22 x0 ) (* 19 x3 ) (* (- 34) x3 ) (* 41 x1 ) (* (- 1) x1 ) (* (- 39) x1 ) ) 41) ))
+(assert (<= (+ (* (- 38) x4 ) (* 43 x1 ) (* 46 x4 ) (* 14 x1 ) (* 49 x3 ) (* (- 18) x3 ) (* 38 x0 ) (* (- 36) x4 ) (* 24 x4 ) (* 28 x0 ) (* (- 14) x3 ) ) (- 23)) )
+(assert (not (< (+ (* 36 x0 ) (* (- 19) x4 ) (* 5 x3 ) ) 26)) )
+(assert (or (> (+ (* (- 46) x3 ) (* 1 x0 ) (* 37 x0 ) (* (- 44) x0 ) (* 45 x3 ) (* (- 19) x1 ) (* 14 x3 ) (* (- 16) x2 ) (* 35 x2 ) (* 47 x0 ) (* (- 21) x3 ) ) 30) (< (+ (* (- 11) x3 ) (* 7 x2 ) (* (- 5) x3 ) ) (- 37)) ))
+(assert (not (> (+ (* 23 x4 ) (* (- 45) x0 ) ) 6)) )
+(assert (or (not (> (+ (* 45 x4 ) (* (- 38) x2 ) (* (- 13) x4 ) (* 11 x0 ) (* (- 32) x0 ) (* 22 x2 ) ) (- 23))) (> (+ (* (- 32) x0 ) (* 24 x3 ) (* (- 26) x4 ) (* (- 6) x2 ) ) (- 20)) ))
+(check-sat)
+(push 1)
+(assert (or (>= (+ (* 19 x4 ) (* 39 x3 ) (* 0 x2 ) (* (- 46) x2 ) (* (- 44) x4 ) (* (- 2) x4 ) (* 1 x4 ) (* 14 x1 ) (* 47 x4 ) (* 3 x3 ) (* (- 12) x1 ) ) 0) (<= (+ (* 4 x0 ) (* 17 x4 ) (* (- 26) x0 ) (* (- 30) x1 ) (* 45 x0 ) ) 20) ))
+(assert (or (not (< (+ (* 24 x2 ) (* (- 17) x2 ) (* 3 x0 ) ) 32)) (not (< (+ (* (- 41) x4 ) (* 15 x4 ) (* 16 x4 ) ) (- 31))) (not (< (+ (* 24 x4 ) (* 1 x1 ) ) 19)) ))
+(assert (or (< (+ (* 2 x1 ) (* (- 12) x0 ) (* (- 37) x2 ) (* 22 x4 ) (* (- 47) x4 ) ) (- 22)) (>= (+ (* 13 x0 ) (* (- 49) x1 ) (* 41 x3 ) (* 10 x4 ) (* (- 25) x0 ) (* 37 x1 ) (* 32 x3 ) ) 10) (= (+ (* (- 50) x4 ) (* 49 x2 ) (* (- 49) x3 ) (* 9 x1 ) (* 1 x1 ) (* (- 30) x4 ) (* (- 44) x0 ) ) 33) ))
+(assert (or (< (+ (* (- 45) x1 ) (* 34 x3 ) (* (- 41) x4 ) (* 7 x3 ) (* (- 2) x1 ) (* 26 x4 ) (* (- 17) x1 ) (* (- 36) x2 ) (* 48 x2 ) (* (- 7) x1 ) (* 0 x4 ) ) (- 34)) (not (< (+ (* (- 34) x3 ) (* (- 22) x0 ) (* (- 17) x0 ) ) 35)) ))
+(assert (or (not (> (+ (* 48 x2 ) (* 13 x2 ) ) (- 24))) (> (+ (* (- 15) x4 ) (* 32 x3 ) ) (- 19)) (not (= (+ (* (- 8) x0 ) (* (- 15) x3 ) (* (- 39) x3 ) (* 15 x0 ) (* (- 49) x1 ) (* 16 x1 ) ) 33)) ))
+(assert (not (>= (+ (* 41 x2 ) (* 35 x4 ) (* 40 x4 ) (* 49 x3 ) ) 23)) )
+(assert (or (not (>= (+ (* (- 45) x0 ) (* (- 40) x4 ) (* 0 x1 ) (* 15 x1 ) (* (- 38) x3 ) (* 36 x1 ) (* (- 12) x1 ) (* 47 x0 ) (* 47 x2 ) (* (- 34) x3 ) ) (- 16))) (not (>= (+ (* (- 18) x4 ) (* (- 10) x0 ) (* 20 x2 ) (* (- 8) x4 ) (* (- 25) x1 ) (* (- 6) x2 ) (* 30 x2 ) ) (- 41))) (> (+ (* 26 x3 ) (* (- 22) x1 ) ) 23) ))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
diff --git a/test/regress/regress0/push-pop/arith/fuzz_5_4.smt2 b/test/regress/regress0/push-pop/arith/fuzz_5_4.smt2
new file mode 100644
index 0000000..5d46d28
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_5_4.smt2
@@ -0,0 +1,54 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(declare-fun x3 () Real)
+(declare-fun x4 () Real)
+(check-sat)
+(push 1)
+(assert (or (not (< (+ (* 22 x2 ) (* (- 45) x4 ) (* (- 27) x4 ) (* (- 23) x1 ) (* (- 38) x4 ) (* 12 x0 ) (* 11 x2 ) (* 6 x4 ) (* (- 34) x3 ) (* (- 28) x3 ) ) (- 7))) (> (+ (* 49 x3 ) (* (- 9) x3 ) (* (- 6) x2 ) (* (- 39) x2 ) (* 49 x3 ) (* (- 6) x4 ) (* 35 x4 ) (* (- 5) x1 ) ) 47) (not (= (+ (* (- 37) x0 ) (* 23 x0 ) (* 8 x0 ) (* (- 25) x3 ) (* (- 10) x4 ) (* (- 31) x3 ) (* (- 7) x1 ) (* (- 9) x2 ) (* 42 x4 ) (* 9 x2 ) (* (- 29) x1 ) ) (- 47))) ))
+(assert (or (> (+ (* 20 x0 ) (* 28 x0 ) (* 40 x0 ) (* (- 33) x1 ) (* 1 x3 ) (* 24 x2 ) (* (- 40) x1 ) (* 33 x1 ) ) (- 45)) (>= (+ (* 26 x0 ) (* 43 x3 ) (* 8 x3 ) (* (- 41) x0 ) (* 23 x0 ) (* (- 18) x2 ) (* 13 x0 ) (* 32 x0 ) (* (- 36) x0 ) (* (- 44) x0 ) ) 15) ))
+(assert (or (not (> (+ (* (- 40) x0 ) (* (- 34) x4 ) (* 41 x2 ) (* (- 40) x4 ) (* 44 x2 ) (* (- 3) x1 ) (* (- 44) x3 ) (* (- 29) x2 ) (* (- 31) x3 ) ) (- 14))) (< (+ (* (- 48) x0 ) (* 30 x4 ) (* (- 18) x4 ) ) 39) (>= (+ (* 1 x2 ) (* (- 31) x2 ) (* (- 8) x0 ) ) 31) ))
+(assert (or (not (= (+ (* (- 46) x0 ) (* 1 x3 ) (* (- 1) x3 ) (* 27 x2 ) ) (- 8))) (not (= (+ (* 26 x4 ) (* 39 x4 ) (* (- 14) x4 ) (* (- 9) x0 ) (* 18 x0 ) (* (- 15) x2 ) (* (- 4) x2 ) (* 0 x2 ) (* 48 x3 ) ) (- 8))) (<= (+ (* (- 20) x2 ) (* (- 34) x1 ) (* 49 x4 ) ) 33) ))
+(assert (or (not (>= (+ (* (- 2) x3 ) (* (- 4) x0 ) (* (- 3) x0 ) (* 4 x1 ) (* 30 x4 ) (* (- 49) x0 ) ) (- 20))) (> (+ (* 8 x0 ) (* 24 x0 ) (* 39 x3 ) (* (- 2) x0 ) (* (- 25) x0 ) (* (- 17) x1 ) (* (- 40) x1 ) (* (- 15) x2 ) (* 9 x3 ) (* (- 2) x3 ) (* 49 x4 ) ) (- 47)) (not (<= (+ (* 11 x0 ) (* 49 x4 ) (* 16 x4 ) (* 17 x4 ) (* 0 x2 ) ) 6)) ))
+(assert (or (not (< (+ (* 21 x1 ) (* 35 x1 ) (* (- 41) x3 ) (* 41 x1 ) (* 5 x3 ) (* (- 37) x2 ) (* 23 x4 ) (* (- 6) x3 ) (* (- 25) x4 ) (* (- 29) x0 ) ) (- 7))) (< (+ (* (- 2) x4 ) (* (- 46) x0 ) (* (- 20) x1 ) (* 27 x0 ) (* (- 2) x3 ) (* (- 39) x4 ) ) 8) ))
+(check-sat)
+(push 1)
+(assert (or (not (<= (+ (* (- 49) x1 ) (* 5 x1 ) (* 8 x3 ) (* (- 28) x1 ) (* 18 x2 ) (* 19 x0 ) (* (- 18) x1 ) (* (- 38) x0 ) ) 12)) (not (= (+ (* 5 x1 ) (* (- 21) x3 ) (* 34 x3 ) (* 34 x4 ) (* 32 x2 ) ) 49)) (= (+ (* (- 36) x1 ) (* 39 x0 ) (* (- 16) x3 ) (* 0 x3 ) (* 24 x3 ) ) 33) ))
+(assert (or (<= (+ (* (- 23) x0 ) (* 45 x1 ) (* 4 x4 ) (* 8 x0 ) (* 14 x0 ) (* (- 9) x1 ) (* 27 x3 ) (* 29 x3 ) (* (- 27) x3 ) ) 18) (not (< (+ (* (- 37) x4 ) (* (- 33) x3 ) (* 42 x1 ) (* (- 48) x0 ) (* 30 x2 ) (* 10 x4 ) ) (- 23))) (= (+ (* 6 x4 ) (* (- 8) x2 ) ) 47) ))
+(assert (not (< (+ (* 43 x2 ) (* (- 13) x0 ) (* 35 x2 ) (* (- 25) x2 ) ) (- 48))) )
+(assert (or (>= (+ (* (- 19) x4 ) (* 27 x0 ) (* (- 34) x2 ) (* (- 27) x1 ) (* 10 x0 ) (* 24 x2 ) (* (- 10) x4 ) (* (- 23) x2 ) (* (- 44) x1 ) (* 7 x1 ) (* 43 x3 ) ) 44) (> (+ (* 37 x0 ) (* (- 3) x3 ) (* (- 31) x3 ) (* 28 x4 ) (* 3 x1 ) (* 35 x2 ) (* (- 26) x3 ) (* (- 5) x2 ) (* 2 x3 ) ) 35) ))
+(assert (= (+ (* (- 23) x0 ) (* 44 x0 ) (* (- 35) x0 ) ) 45) )
+(assert (or (< (+ (* 3 x2 ) (* 31 x1 ) (* 10 x1 ) (* (- 16) x1 ) (* 13 x4 ) ) (- 19)) (not (< (+ (* (- 3) x2 ) (* 46 x4 ) (* 10 x4 ) (* 47 x1 ) (* 3 x1 ) (* (- 49) x2 ) (* (- 35) x2 ) ) 16)) (>= (+ (* (- 39) x2 ) (* (- 42) x0 ) (* 48 x2 ) (* (- 42) x4 ) (* (- 25) x3 ) (* 31 x3 ) (* 6 x3 ) (* 3 x0 ) (* 29 x4 ) (* 30 x0 ) (* (- 27) x1 ) ) 35) ))
+(assert (or (> (+ (* (- 44) x2 ) (* (- 33) x2 ) (* 24 x4 ) (* (- 9) x2 ) (* 22 x4 ) ) 0) (not (<= (+ (* (- 7) x1 ) (* 1 x1 ) (* 8 x3 ) (* (- 37) x2 ) (* (- 39) x3 ) (* 26 x1 ) (* (- 37) x2 ) (* (- 38) x4 ) (* (- 47) x2 ) (* 1 x0 ) ) (- 30))) ))
+(assert (or (not (= (+ (* 33 x2 ) (* (- 27) x2 ) (* 13 x0 ) (* (- 16) x3 ) (* 16 x1 ) (* (- 1) x2 ) (* (- 20) x1 ) (* (- 30) x2 ) (* 14 x3 ) (* (- 3) x0 ) ) (- 22))) (not (> (+ (* (- 27) x1 ) (* (- 26) x2 ) (* 20 x3 ) (* (- 3) x3 ) (* 21 x0 ) (* 36 x1 ) ) (- 16))) (< (+ (* (- 38) x0 ) (* 41 x2 ) (* (- 36) x4 ) ) 13) ))
+(assert (or (> (+ (* 5 x3 ) (* (- 9) x3 ) (* (- 5) x1 ) (* 6 x2 ) (* 46 x3 ) (* (- 25) x1 ) (* 29 x2 ) (* 3 x3 ) (* (- 15) x0 ) (* 30 x1 ) (* 10 x4 ) ) (- 26)) (= (+ (* 6 x4 ) (* (- 47) x3 ) (* (- 18) x1 ) (* 24 x1 ) (* 44 x0 ) (* (- 7) x2 ) ) (- 48)) ))
+(assert (or (not (> (+ (* 31 x2 ) (* 8 x1 ) (* (- 32) x1 ) (* (- 34) x3 ) (* (- 36) x3 ) (* (- 45) x2 ) (* (- 37) x2 ) (* 40 x3 ) (* 30 x3 ) (* 29 x4 ) ) (- 44))) (not (<= (+ (* (- 22) x0 ) (* (- 16) x2 ) ) 36)) (>= (+ (* 5 x3 ) (* (- 9) x4 ) ) (- 25)) ))
+(assert (or (not (> (+ (* 43 x3 ) (* (- 24) x3 ) (* 7 x3 ) (* (- 40) x3 ) (* (- 33) x3 ) (* (- 36) x2 ) (* 7 x2 ) (* 20 x2 ) ) (- 7))) (= (+ (* 37 x4 ) (* 40 x4 ) ) 30) ))
+(assert (or (>= (+ (* 43 x0 ) (* 4 x4 ) ) 21) (not (= (+ (* 1 x4 ) (* (- 44) x4 ) (* 48 x0 ) (* 9 x0 ) ) 18)) ))
+(check-sat)
+(push 1)
+(assert (or (not (>= (+ (* (- 48) x2 ) (* 4 x1 ) (* (- 2) x4 ) (* (- 41) x0 ) (* 9 x1 ) (* 14 x0 ) (* 28 x3 ) (* (- 12) x3 ) ) (- 20))) (= (+ (* (- 38) x1 ) (* (- 34) x4 ) (* 1 x4 ) (* (- 26) x4 ) (* (- 30) x2 ) (* 36 x3 ) (* (- 14) x2 ) (* (- 32) x2 ) (* 2 x4 ) ) (- 22)) ))
+(assert (or (not (<= (+ (* 42 x4 ) (* (- 46) x0 ) (* 41 x4 ) (* (- 13) x3 ) (* (- 36) x0 ) ) (- 44))) (not (= (+ (* 15 x4 ) (* 24 x2 ) ) 1)) (< (+ (* (- 4) x0 ) (* 0 x3 ) (* 10 x3 ) (* 18 x1 ) ) (- 33)) ))
+(assert (or (= (+ (* (- 19) x3 ) (* (- 39) x4 ) (* (- 5) x1 ) (* (- 39) x3 ) ) (- 48)) (= (+ (* 30 x3 ) (* (- 15) x1 ) (* 8 x1 ) (* (- 26) x1 ) (* 6 x4 ) (* 5 x1 ) (* 3 x4 ) (* (- 13) x2 ) (* (- 47) x2 ) (* 23 x4 ) (* 28 x4 ) ) 34) (= (+ (* (- 20) x4 ) (* (- 30) x3 ) ) (- 36)) ))
+(check-sat)
+(push 1)
+(assert (or (not (>= (+ (* 20 x0 ) (* 43 x2 ) (* (- 49) x2 ) (* (- 46) x2 ) (* 14 x3 ) (* 27 x4 ) (* 43 x2 ) (* 23 x3 ) (* (- 14) x1 ) (* 20 x2 ) ) 16)) (< (+ (* 45 x1 ) (* (- 31) x3 ) ) 25) (<= (+ (* 15 x4 ) (* 41 x4 ) (* 23 x4 ) (* (- 41) x2 ) ) 39) ))
+(check-sat)
+(pop 1)
+(assert (or (> (+ (* (- 43) x0 ) (* (- 49) x0 ) (* (- 8) x2 ) (* (- 29) x4 ) (* (- 32) x2 ) (* (- 37) x0 ) (* 31 x2 ) (* 27 x0 ) (* 21 x3 ) ) (- 30)) (> (+ (* (- 16) x4 ) (* 20 x1 ) (* 28 x3 ) (* 15 x4 ) (* (- 46) x3 ) (* 10 x2 ) (* 12 x2 ) (* 42 x3 ) (* 42 x3 ) (* 25 x0 ) (* (- 26) x2 ) ) (- 42)) (not (>= (+ (* 24 x4 ) (* 21 x3 ) (* 9 x4 ) (* (- 30) x0 ) (* (- 32) x4 ) ) 1)) ))
+(assert (or (<= (+ (* 10 x2 ) (* (- 23) x4 ) (* (- 41) x4 ) ) (- 31)) (>= (+ (* (- 5) x0 ) (* (- 6) x2 ) (* 8 x4 ) (* 34 x3 ) (* 14 x4 ) (* 36 x4 ) (* 23 x1 ) (* (- 11) x1 ) ) (- 26)) (not (< (+ (* 25 x1 ) (* (- 20) x3 ) (* (- 8) x2 ) (* 23 x4 ) (* 25 x3 ) (* 1 x2 ) ) 22)) ))
+(assert (or (not (<= (+ (* 28 x3 ) (* (- 41) x4 ) (* (- 33) x0 ) (* (- 29) x4 ) (* 8 x2 ) (* (- 42) x2 ) (* 23 x2 ) (* 25 x0 ) (* (- 13) x3 ) (* 44 x0 ) ) (- 40))) (<= (+ (* (- 8) x1 ) (* (- 22) x1 ) ) (- 27)) (not (< (+ (* 24 x2 ) (* (- 6) x0 ) (* 29 x2 ) (* (- 1) x2 ) (* (- 15) x0 ) (* (- 23) x4 ) (* 46 x3 ) (* 14 x4 ) (* 26 x3 ) (* 45 x3 ) ) (- 43))) ))
+(assert (or (not (>= (+ (* 48 x2 ) (* 12 x4 ) (* 41 x4 ) (* (- 19) x2 ) (* 31 x2 ) (* (- 45) x2 ) (* 2 x2 ) (* (- 7) x0 ) (* (- 50) x4 ) (* (- 16) x4 ) ) 14)) (> (+ (* 19 x4 ) (* (- 18) x0 ) (* (- 20) x0 ) (* 29 x3 ) ) (- 22)) ))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
diff --git a/test/regress/regress0/push-pop/arith/fuzz_5_5.smt2 b/test/regress/regress0/push-pop/arith/fuzz_5_5.smt2
new file mode 100644
index 0000000..72b2aa0
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_5_5.smt2
@@ -0,0 +1,78 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(declare-fun x3 () Real)
+(declare-fun x4 () Real)
+(assert (or (not (= (+ (* 23 x2 ) (* (- 43) x4 ) (* (- 39) x3 ) (* 4 x2 ) ) (- 2))) (>= (+ (* (- 1) x2 ) (* 0 x0 ) (* 31 x1 ) (* 20 x1 ) (* (- 27) x2 ) ) 22) (<= (+ (* 42 x1 ) (* (- 4) x4 ) (* 12 x2 ) (* 36 x1 ) (* (- 36) x4 ) (* 18 x4 ) (* 47 x0 ) ) (- 19)) ))
+(assert (or (>= (+ (* 4 x1 ) (* (- 32) x2 ) (* 47 x1 ) ) 43) (< (+ (* 31 x4 ) (* 33 x0 ) (* 27 x2 ) (* 0 x0 ) (* (- 35) x0 ) (* 14 x4 ) (* 35 x0 ) (* 17 x4 ) (* 7 x3 ) (* (- 19) x3 ) ) (- 42)) ))
+(assert (not (>= (+ (* (- 36) x0 ) (* (- 28) x2 ) (* (- 49) x2 ) (* (- 17) x0 ) (* (- 16) x2 ) ) (- 40))) )
+(assert (or (not (>= (+ (* 35 x4 ) (* (- 42) x1 ) (* (- 31) x4 ) (* (- 36) x3 ) (* 28 x3 ) (* (- 10) x0 ) (* 37 x1 ) (* 11 x1 ) (* (- 29) x3 ) (* 31 x1 ) ) (- 28))) (>= (+ (* 26 x1 ) (* 12 x4 ) (* (- 7) x1 ) ) (- 39)) ))
+(check-sat)
+(push 1)
+(assert (or (< (+ (* 48 x4 ) (* 8 x4 ) (* (- 34) x4 ) (* (- 47) x4 ) (* (- 7) x3 ) (* 46 x1 ) (* (- 13) x1 ) (* (- 28) x3 ) (* (- 20) x3 ) (* 30 x0 ) (* (- 35) x1 ) ) 36) (>= (+ (* (- 22) x0 ) (* (- 14) x4 ) (* (- 22) x4 ) (* (- 25) x2 ) (* 1 x3 ) (* 18 x1 ) (* (- 34) x4 ) (* 12 x1 ) (* (- 8) x2 ) (* 33 x0 ) (* (- 47) x1 ) ) 15) ))
+(assert (>= (+ (* 12 x2 ) (* 14 x3 ) (* (- 36) x2 ) ) (- 49)) )
+(assert (or (> (+ (* (- 40) x1 ) (* 47 x1 ) (* 14 x1 ) (* 41 x4 ) (* (- 39) x3 ) (* (- 23) x4 ) (* 41 x2 ) (* (- 48) x1 ) (* (- 18) x2 ) (* 46 x1 ) ) (- 4)) (not (< (+ (* (- 36) x3 ) (* (- 47) x4 ) (* 3 x4 ) (* (- 5) x4 ) ) 13)) (< (+ (* (- 45) x2 ) (* (- 33) x2 ) (* 8 x2 ) (* 34 x4 ) ) (- 1)) ))
+(assert (or (<= (+ (* 25 x0 ) (* 41 x4 ) (* (- 33) x1 ) (* (- 50) x2 ) (* (- 39) x3 ) ) 3) (> (+ (* (- 48) x4 ) (* 13 x0 ) (* 44 x2 ) (* (- 26) x3 ) ) 3) (= (+ (* (- 3) x2 ) (* 48 x1 ) (* 16 x4 ) (* (- 27) x0 ) (* 43 x4 ) (* 16 x2 ) (* 15 x4 ) (* 49 x2 ) (* 35 x4 ) ) (- 30)) ))
+(assert (not (>= (+ (* (- 18) x4 ) (* 27 x4 ) ) 12)) )
+(assert (> (+ (* 42 x4 ) (* 10 x1 ) (* (- 3) x2 ) (* (- 38) x0 ) (* 49 x3 ) (* (- 8) x4 ) ) 1) )
+(check-sat)
+(pop 1)
+(assert (or (not (< (+ (* 27 x0 ) (* (- 19) x4 ) (* (- 7) x2 ) (* 41 x1 ) (* (- 9) x4 ) (* (- 37) x1 ) (* 47 x4 ) (* 3 x0 ) ) 46)) (not (>= (+ (* 45 x2 ) (* 35 x3 ) (* (- 20) x1 ) ) 6)) ))
+(check-sat)
+(push 1)
+(assert (>= (+ (* (- 10) x3 ) (* (- 29) x3 ) (* 39 x3 ) (* (- 6) x0 ) (* 16 x0 ) (* (- 1) x0 ) (* 34 x3 ) (* 24 x0 ) (* (- 44) x1 ) ) (- 41)) )
+(assert (< (+ (* (- 45) x3 ) (* 14 x2 ) (* (- 3) x0 ) (* (- 17) x3 ) (* 3 x2 ) (* (- 8) x2 ) ) (- 8)) )
+(check-sat)
+(pop 1)
+(assert (or (not (>= (+ (* (- 10) x0 ) (* (- 43) x3 ) (* (- 46) x1 ) (* (- 43) x2 ) (* (- 38) x4 ) (* (- 48) x3 ) (* (- 13) x2 ) (* (- 26) x1 ) (* (- 28) x0 ) (* 22 x3 ) (* 15 x0 ) ) (- 35))) (>= (+ (* 0 x1 ) (* (- 38) x0 ) ) 21) ))
+(assert (or (> (+ (* (- 3) x1 ) (* 20 x0 ) (* (- 41) x4 ) (* (- 21) x4 ) (* 40 x1 ) (* 33 x3 ) ) 14) (<= (+ (* (- 27) x0 ) (* (- 45) x2 ) (* (- 20) x4 ) (* (- 46) x2 ) (* 28 x2 ) ) (- 13)) ))
+(assert (or (<= (+ (* 14 x2 ) (* (- 14) x2 ) (* 11 x0 ) (* (- 26) x2 ) (* (- 27) x4 ) (* 18 x2 ) (* (- 35) x1 ) (* 17 x0 ) (* (- 28) x3 ) ) (- 26)) (not (> (+ (* (- 3) x1 ) (* (- 37) x3 ) (* (- 41) x3 ) (* (- 50) x3 ) (* (- 30) x2 ) (* (- 36) x0 ) (* (- 8) x3 ) (* 28 x1 ) (* 30 x1 ) (* 24 x1 ) (* (- 11) x3 ) ) 39)) (<= (+ (* 32 x3 ) (* 38 x1 ) (* (- 23) x2 ) (* 32 x3 ) (* 36 x3 ) (* 38 x2 ) (* 19 x2 ) (* (- 46) x0 ) (* (- 30) x0 ) (* (- 39) x1 ) (* 15 x3 ) ) (- 7)) ))
+(assert (or (not (<= (+ (* 47 x0 ) (* (- 10) x0 ) (* 14 x2 ) (* (- 49) x4 ) (* 19 x1 ) (* (- 14) x4 ) ) 5)) (>= (+ (* (- 14) x2 ) (* 34 x0 ) (* (- 1) x4 ) (* (- 43) x3 ) (* 41 x4 ) (* 3 x4 ) (* 0 x2 ) (* (- 6) x3 ) (* (- 4) x4 ) (* 33 x0 ) ) (- 40)) (not (> (+ (* (- 29) x0 ) (* 40 x2 ) (* (- 32) x4 ) (* 48 x2 ) (* 37 x2 ) (* (- 34) x2 ) (* (- 20) x1 ) (* 0 x0 ) ) 24)) ))
+(assert (or (< (+ (* (- 14) x3 ) (* (- 7) x4 ) (* (- 1) x4 ) ) (- 41)) (< (+ (* (- 2) x0 ) (* 24 x3 ) (* 25 x2 ) (* (- 24) x4 ) (* (- 43) x3 ) (* 49 x4 ) ) 39) ))
+(assert (or (= (+ (* 42 x2 ) (* (- 15) x0 ) (* 39 x3 ) (* (- 2) x0 ) (* 41 x0 ) ) (- 46)) (not (<= (+ (* (- 25) x0 ) (* (- 38) x1 ) (* (- 17) x1 ) (* (- 34) x0 ) (* 34 x0 ) (* 31 x2 ) (* 19 x1 ) ) (- 5))) ))
+(assert (or (< (+ (* (- 15) x1 ) (* 41 x1 ) (* (- 37) x0 ) (* (- 11) x4 ) (* (- 29) x0 ) (* 6 x1 ) ) 48) (< (+ (* (- 39) x3 ) (* 5 x2 ) ) (- 3)) ))
+(assert (or (< (+ (* 37 x4 ) (* (- 24) x2 ) (* 18 x1 ) (* (- 6) x1 ) (* 46 x1 ) (* (- 5) x2 ) (* 18 x0 ) ) (- 32)) (= (+ (* 46 x4 ) (* (- 48) x0 ) (* 38 x4 ) (* 9 x2 ) (* 43 x0 ) (* 33 x4 ) (* 34 x2 ) (* 36 x3 ) (* (- 6) x0 ) (* (- 27) x2 ) (* (- 32) x0 ) ) (- 31)) ))
+(assert (or (not (< (+ (* 43 x0 ) (* 4 x0 ) (* 26 x0 ) (* (- 1) x3 ) (* 15 x1 ) (* (- 7) x3 ) (* (- 25) x1 ) (* (- 12) x1 ) ) (- 41))) (< (+ (* 33 x2 ) (* (- 13) x4 ) (* 15 x2 ) ) 37) (not (>= (+ (* 41 x1 ) (* 14 x3 ) ) 47)) ))
+(assert (or (not (< (+ (* 0 x3 ) (* (- 16) x4 ) (* 27 x0 ) (* 34 x4 ) (* (- 49) x1 ) (* 30 x2 ) (* 3 x4 ) (* (- 12) x3 ) ) 20)) (> (+ (* 19 x1 ) (* 9 x1 ) (* (- 16) x3 ) (* 23 x4 ) (* (- 9) x2 ) (* (- 35) x1 ) (* (- 18) x1 ) (* 16 x2 ) (* 28 x1 ) ) (- 48)) (not (>= (+ (* 18 x3 ) (* (- 7) x4 ) (* 34 x1 ) (* (- 31) x0 ) ) (- 21))) ))
+(check-sat)
+(push 1)
+(assert (or (not (<= (+ (* 44 x4 ) (* 15 x2 ) (* 9 x2 ) (* 9 x1 ) (* 24 x1 ) ) (- 30))) (<= (+ (* (- 13) x1 ) (* 41 x3 ) ) 1) (= (+ (* 19 x0 ) (* 48 x2 ) (* 33 x2 ) (* 28 x1 ) (* (- 2) x3 ) ) (- 26)) ))
+(assert (or (= (+ (* (- 2) x0 ) (* 32 x3 ) (* (- 25) x0 ) ) (- 3)) (= (+ (* 16 x0 ) (* (- 45) x0 ) (* (- 43) x3 ) (* 20 x4 ) (* (- 19) x1 ) ) (- 45)) (not (> (+ (* 35 x2 ) (* (- 7) x2 ) (* 4 x3 ) (* 48 x2 ) (* 15 x4 ) (* (- 4) x2 ) (* 30 x2 ) (* 7 x4 ) (* (- 34) x4 ) (* 42 x0 ) (* 30 x3 ) ) 49)) ))
+(assert (> (+ (* (- 7) x0 ) (* 14 x4 ) (* (- 34) x0 ) (* 18 x4 ) (* (- 22) x0 ) (* 26 x3 ) (* 1 x4 ) ) (- 28)) )
+(assert (or (not (= (+ (* 22 x2 ) (* (- 24) x1 ) (* 46 x0 ) (* (- 42) x0 ) (* (- 42) x3 ) (* (- 10) x3 ) ) (- 47))) (not (>= (+ (* (- 34) x4 ) (* 6 x2 ) (* 21 x0 ) (* 41 x3 ) (* (- 43) x4 ) (* 7 x4 ) (* (- 21) x1 ) (* (- 6) x1 ) (* 8 x1 ) ) (- 28))) ))
+(assert (>= (+ (* (- 15) x2 ) (* (- 39) x0 ) (* (- 45) x4 ) (* 40 x2 ) (* 49 x3 ) (* (- 32) x2 ) (* (- 18) x2 ) (* (- 2) x4 ) (* (- 9) x4 ) ) (- 45)) )
+(assert (or (not (> (+ (* (- 1) x2 ) (* 33 x2 ) (* (- 50) x3 ) (* 6 x2 ) (* (- 8) x2 ) (* (- 6) x4 ) (* 16 x4 ) (* 23 x4 ) (* 31 x2 ) (* 42 x3 ) (* (- 45) x0 ) ) (- 10))) (> (+ (* 18 x0 ) (* (- 31) x2 ) (* (- 4) x3 ) (* 27 x0 ) (* 18 x4 ) (* (- 27) x0 ) (* 19 x1 ) (* (- 3) x3 ) (* 19 x3 ) ) 15) (> (+ (* (- 12) x1 ) (* (- 3) x2 ) (* (- 31) x0 ) (* 43 x1 ) (* 46 x2 ) (* 36 x3 ) (* 6 x0 ) (* (- 15) x4 ) (* 15 x1 ) (* 18 x0 ) ) 39) ))
+(assert (not (< (+ (* 47 x3 ) (* (- 27) x1 ) (* (- 18) x2 ) (* 9 x3 ) (* (- 42) x1 ) (* 37 x3 ) (* (- 2) x1 ) (* (- 36) x0 ) (* 0 x1 ) (* 21 x2 ) (* 10 x2 ) ) (- 14))) )
+(assert (or (not (< (+ (* 10 x1 ) (* 15 x4 ) (* (- 30) x2 ) (* 39 x0 ) (* (- 45) x4 ) (* (- 14) x3 ) (* 29 x3 ) (* 16 x0 ) (* (- 39) x4 ) ) (- 18))) (not (>= (+ (* 1 x3 ) (* (- 25) x2 ) (* 45 x1 ) (* (- 25) x2 ) (* 41 x3 ) (* (- 16) x0 ) (* (- 7) x3 ) ) 4)) (< (+ (* 35 x3 ) (* (- 32) x4 ) (* 24 x4 ) (* 45 x4 ) (* (- 34) x2 ) (* 1 x0 ) (* (- 49) x2 ) (* 39 x4 ) (* (- 48) x1 ) (* 30 x2 ) ) (- 23)) ))
+(check-sat)
+(pop 1)
+(assert (or (not (> (+ (* (- 6) x4 ) (* 34 x4 ) (* (- 45) x4 ) (* (- 5) x2 ) (* 36 x0 ) (* (- 33) x0 ) (* 2 x4 ) (* (- 21) x0 ) (* 24 x3 ) (* (- 19) x3 ) (* (- 43) x1 ) ) (- 38))) (<= (+ (* 49 x0 ) (* (- 19) x2 ) (* (- 4) x4 ) (* (- 49) x2 ) (* 6 x1 ) (* 35 x1 ) (* 36 x3 ) ) (- 26)) ))
+(assert (< (+ (* (- 47) x2 ) (* 28 x1 ) (* 29 x0 ) (* 49 x2 ) (* 49 x0 ) (* (- 43) x4 ) (* 3 x0 ) (* (- 5) x3 ) (* 16 x0 ) (* 33 x1 ) ) 24) )
+(check-sat)
+(push 1)
+(assert (or (> (+ (* (- 27) x4 ) (* (- 23) x3 ) (* (- 23) x2 ) (* 10 x0 ) (* (- 40) x2 ) ) 48) (not (= (+ (* 6 x2 ) (* (- 49) x3 ) (* (- 5) x1 ) ) 3)) (not (> (+ (* (- 3) x4 ) (* (- 31) x3 ) (* 3 x0 ) (* (- 9) x4 ) (* 18 x1 ) (* 8 x1 ) ) 45)) ))
+(assert (or (not (< (+ (* (- 40) x2 ) (* (- 29) x3 ) (* (- 32) x3 ) (* 15 x4 ) (* (- 23) x0 ) (* 8 x4 ) (* (- 30) x2 ) (* 26 x3 ) (* (- 2) x1 ) (* (- 14) x1 ) (* 7 x2 ) ) 6)) (not (> (+ (* (- 12) x4 ) (* 30 x4 ) (* 36 x1 ) (* (- 20) x2 ) (* 11 x2 ) ) (- 50))) ))
+(assert (or (not (= (+ (* 31 x1 ) (* 34 x3 ) (* (- 31) x2 ) (* (- 12) x0 ) (* 29 x2 ) (* 13 x2 ) (* 16 x2 ) (* (- 42) x3 ) (* 32 x2 ) (* 18 x3 ) ) 18)) (> (+ (* (- 47) x4 ) (* 20 x2 ) (* (- 27) x1 ) ) (- 21)) ))
+(assert (> (+ (* 21 x4 ) (* (- 14) x3 ) (* (- 48) x0 ) (* (- 6) x2 ) (* 20 x4 ) (* 28 x4 ) (* 43 x3 ) (* 23 x1 ) (* 47 x1 ) ) (- 49)) )
+(assert (> (+ (* 21 x4 ) (* 45 x2 ) (* 8 x1 ) (* (- 40) x1 ) (* (- 34) x1 ) (* (- 19) x1 ) (* 0 x1 ) ) (- 23)) )
+(assert (< (+ (* (- 34) x2 ) (* (- 45) x4 ) (* 3 x0 ) (* (- 33) x2 ) ) 18) )
+(assert (or (<= (+ (* 25 x2 ) (* (- 30) x0 ) (* 7 x0 ) (* 34 x1 ) (* (- 43) x0 ) (* 18 x4 ) (* (- 43) x4 ) (* 19 x2 ) (* (- 21) x3 ) (* 35 x3 ) (* 5 x4 ) ) (- 12)) (not (> (+ (* (- 33) x2 ) (* 26 x3 ) (* (- 25) x4 ) ) (- 46))) ))
+(check-sat)
+(pop 1)
+(assert (or (not (>= (+ (* (- 38) x3 ) (* (- 6) x4 ) (* (- 19) x4 ) (* (- 45) x1 ) (* (- 46) x2 ) ) 40)) (not (<= (+ (* (- 14) x1 ) (* 45 x3 ) (* (- 42) x4 ) (* 38 x2 ) (* 26 x0 ) (* 32 x0 ) (* 19 x2 ) (* 45 x1 ) (* 11 x1 ) (* (- 38) x2 ) ) (- 45))) ))
+(assert (not (> (+ (* 27 x2 ) (* (- 11) x4 ) (* (- 30) x2 ) ) (- 23))) )
+(assert (or (<= (+ (* 44 x2 ) (* (- 26) x3 ) (* (- 13) x1 ) ) 44) (= (+ (* 41 x0 ) (* 13 x4 ) (* (- 15) x2 ) (* (- 41) x4 ) (* (- 36) x4 ) (* 5 x2 ) ) (- 45)) (not (= (+ (* 41 x1 ) (* (- 45) x1 ) (* 38 x3 ) (* 1 x4 ) (* 25 x2 ) (* 8 x4 ) (* 23 x0 ) (* 27 x2 ) ) 15)) ))
+(assert (or (= (+ (* (- 42) x3 ) (* 37 x1 ) (* 48 x3 ) (* 41 x4 ) (* (- 18) x0 ) (* (- 2) x2 ) (* (- 32) x2 ) (* (- 14) x1 ) (* (- 49) x4 ) (* 8 x4 ) (* 34 x1 ) ) 34) (not (< (+ (* 4 x3 ) (* (- 8) x0 ) (* (- 10) x1 ) (* 24 x3 ) (* (- 32) x3 ) (* 14 x2 ) (* 4 x4 ) (* (- 6) x1 ) (* (- 16) x3 ) (* 41 x2 ) (* (- 19) x2 ) ) 42)) (< (+ (* (- 24) x2 ) (* (- 14) x2 ) (* (- 15) x2 ) (* (- 31) x0 ) (* 21 x2 ) (* (- 18) x4 ) (* (- 11) x0 ) (* 19 x1 ) ) (- 47)) ))
+(check-sat)
+(push 1)
diff --git a/test/regress/regress0/push-pop/arith/fuzz_5_6.smt2 b/test/regress/regress0/push-pop/arith/fuzz_5_6.smt2
new file mode 100644
index 0000000..1cffc92
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith/fuzz_5_6.smt2
@@ -0,0 +1,49 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(declare-fun x3 () Real)
+(declare-fun x4 () Real)
+(assert (or (= (+ (* 24 x2 ) (* (- 12) x4 ) (* (- 11) x2 ) (* 21 x1 ) ) (- 25)) (not (< (+ (* (- 42) x2 ) (* 19 x2 ) (* (- 48) x1 ) (* 37 x0 ) ) 38)) ))
+(assert (< (+ (* (- 40) x2 ) (* 1 x3 ) (* (- 30) x4 ) (* (- 45) x2 ) (* 39 x3 ) ) (- 6)) )
+(assert (or (not (> (+ (* 26 x0 ) (* (- 42) x1 ) (* (- 40) x2 ) (* (- 33) x0 ) (* 1 x2 ) (* (- 5) x4 ) (* 46 x4 ) (* 13 x1 ) (* (- 49) x4 ) (* (- 22) x4 ) (* (- 6) x1 ) ) (- 16))) (not (<= (+ (* 48 x3 ) (* 27 x0 ) (* (- 23) x2 ) (* (- 35) x3 ) ) 37)) (not (<= (+ (* 25 x0 ) (* 16 x1 ) (* 47 x2 ) (* (- 22) x0 ) ) 10)) ))
+(assert (>= (+ (* 38 x0 ) (* 6 x1 ) (* (- 48) x1 ) (* (- 27) x4 ) (* 33 x1 ) (* (- 14) x2 ) (* 40 x4 ) (* 26 x3 ) ) 42) )
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (or (<= (+ (* (- 32) x2 ) (* 30 x1 ) (* 41 x2 ) (* (- 37) x1 ) ) (- 21)) (< (+ (* 9 x0 ) (* (- 1) x2 ) (* 48 x1 ) (* (- 47) x0 ) (* (- 22) x4 ) (* 49 x0 ) (* (- 10) x4 ) (* 9 x1 ) (* (- 30) x4 ) (* 38 x2 ) (* 5 x0 ) ) 19) ))
+(check-sat)
+(push 1)
+(assert (or (< (+ (* 9 x4 ) (* 25 x1 ) (* 47 x4 ) (* (- 26) x1 ) (* (- 10) x2 ) (* 28 x3 ) (* (- 37) x2 ) (* (- 22) x2 ) (* 23 x1 ) (* (- 36) x2 ) ) (- 10)) (< (+ (* (- 31) x2 ) (* (- 6) x4 ) (* (- 28) x4 ) (* 13 x0 ) (* 21 x4 ) ) 40) ))
+(check-sat)
+(pop 1)
+(assert (not (> (+ (* (- 44) x3 ) (* (- 40) x3 ) (* (- 46) x4 ) (* (- 1) x4 ) (* 26 x3 ) (* (- 27) x4 ) (* 26 x4 ) (* 21 x4 ) (* 44 x0 ) (* (- 3) x3 ) ) (- 41))) )
+(assert (or (not (< (+ (* 22 x2 ) (* (- 4) x0 ) ) (- 28))) (<= (+ (* 41 x1 ) (* 7 x4 ) ) (- 10)) ))
+(assert (not (<= (+ (* (- 21) x2 ) (* (- 6) x3 ) (* (- 24) x3 ) (* (- 17) x1 ) (* 11 x1 ) (* (- 5) x0 ) ) (- 45))) )
+(assert (or (< (+ (* 16 x2 ) (* 48 x3 ) (* 20 x2 ) (* (- 1) x2 ) (* 43 x0 ) (* 15 x0 ) (* (- 33) x0 ) ) 44) (not (<= (+ (* (- 46) x4 ) (* 22 x0 ) (* (- 10) x3 ) (* (- 27) x0 ) (* (- 11) x4 ) (* (- 32) x0 ) (* 17 x3 ) (* (- 39) x4 ) (* (- 8) x3 ) (* (- 25) x1 ) ) (- 7))) ))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (or (not (< (+ (* (- 5) x2 ) (* (- 22) x3 ) (* 2 x0 ) (* 42 x1 ) (* (- 29) x2 ) (* 12 x3 ) (* 16 x3 ) (* (- 19) x0 ) (* (- 42) x0 ) (* (- 6) x1 ) ) 40)) (> (+ (* 27 x2 ) (* (- 28) x2 ) (* 7 x0 ) (* 9 x1 ) (* 14 x2 ) (* 4 x3 ) (* (- 16) x3 ) (* 41 x1 ) ) (- 42)) ))
+(assert (or (= (+ (* (- 36) x4 ) (* 5 x0 ) (* 2 x4 ) ) (- 16)) (< (+ (* (- 10) x1 ) (* 13 x3 ) (* 39 x4 ) (* (- 47) x3 ) (* (- 39) x0 ) (* 24 x2 ) (* 5 x2 ) (* (- 45) x2 ) (* 24 x1 ) ) (- 21)) ))
+(check-sat)
+(push 1)
+(assert (or (< (+ (* (- 7) x3 ) (* 35 x2 ) (* (- 42) x1 ) (* 43 x3 ) (* 27 x3 ) (* (- 47) x2 ) (* (- 5) x2 ) (* 13 x0 ) (* 36 x4 ) ) (- 38)) (not (<= (+ (* 27 x0 ) (* 25 x1 ) (* 36 x0 ) (* 46 x2 ) (* (- 9) x2 ) (* 4 x1 ) (* (- 6) x3 ) (* (- 6) x4 ) (* (- 22) x2 ) (* (- 19) x3 ) (* (- 25) x3 ) ) (- 22))) ))
+(assert (or (= (+ (* (- 13) x3 ) (* 3 x4 ) (* (- 25) x2 ) (* (- 26) x0 ) ) (- 38)) (< (+ (* 13 x2 ) (* (- 44) x3 ) (* 12 x2 ) (* (- 6) x2 ) (* 25 x2 ) (* 27 x2 ) ) (- 50)) ))
+(assert (or (not (= (+ (* (- 18) x4 ) (* (- 31) x1 ) ) (- 13))) (= (+ (* (- 42) x3 ) (* 10 x2 ) (* 29 x0 ) (* 0 x4 ) (* (- 19) x2 ) ) (- 38)) (= (+ (* (- 47) x4 ) (* (- 36) x1 ) (* 11 x1 ) (* (- 50) x1 ) (* 1 x0 ) (* (- 33) x3 ) (* 20 x2 ) (* (- 32) x2 ) (* (- 30) x0 ) (* 42 x2 ) (* (- 21) x1 ) ) 21) ))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
diff --git a/test/regress/regress0/push-pop/arith_lra_01.smt2 b/test/regress/regress0/push-pop/arith_lra_01.smt2
new file mode 100644
index 0000000..4216f42
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith_lra_01.smt2
@@ -0,0 +1,105 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(declare-fun x3 () Real)
+(declare-fun x4 () Real)
+(assert (or (not (>= (+ (* 17 x1 ) (* 46 x1 ) (* (- 8) x2 ) (* 12 x4 ) (* (- 39) x4 ) (* (- 21) x4 ) (* (- 24) x0 ) (* 31 x3 ) (* (- 31) x2 ) (* 37 x0 ) ) (- 8))) (>= (+ (* (- 2) x3 ) (* (- 22) x1 ) ) (- 42)) ))
+(assert (or (not (> (+ (* 49 x0 ) (* 34 x2 ) (* 18 x4 ) ) 45)) (not (= (+ (* 39 x3 ) (* (- 50) x0 ) (* 18 x3 ) (* (- 48) x4 ) (* 26 x3 ) (* 36 x3 ) (* 32 x1 ) ) (- 36))) (> (+ (* (- 41) x3 ) (* (- 22) x1 ) (* 5 x4 ) (* 25 x4 ) (* (- 39) x0 ) (* (- 26) x2 ) (* (- 15) x1 ) (* (- 49) x3 ) ) (- 15)) ))
+(assert (or (<= (+ (* (- 17) x2 ) (* (- 20) x3 ) (* (- 15) x0 ) (* (- 23) x2 ) (* 27 x3 ) (* 12 x2 ) (* 48 x2 ) (* (- 29) x2 ) ) (- 25)) (= (+ (* 0 x4 ) (* (- 15) x2 ) (* (- 11) x4 ) (* 23 x0 ) (* (- 10) x2 ) (* (- 30) x0 ) (* (- 26) x4 ) ) (- 48)) (not (< (+ (* (- 43) x2 ) (* (- 44) x3 ) (* (- 43) x4 ) (* (- 11) x4 ) (* (- 21) x0 ) (* 15 x1 ) (* (- 45) x3 ) (* 0 x2 ) (* 21 x2 ) (* (- 45) x1 ) (* 8 x0 ) ) (- 5))) ))
+(check-sat)
+(push 1)
+(assert (not (< (+ (* (- 44) x0 ) (* 45 x3 ) (* 34 x2 ) (* 14 x1 ) (* (- 43) x0 ) (* 19 x0 ) (* 12 x3 ) (* (- 49) x2 ) ) (- 21))) )
+(check-sat)
+(pop 1)
+(assert (or (>= (+ (* 21 x0 ) (* (- 15) x3 ) (* 29 x2 ) (* 35 x3 ) (* 39 x4 ) (* 12 x2 ) ) 13) (not (= (+ (* (- 38) x2 ) (* (- 11) x2 ) ) 26)) (< (+ (* 41 x0 ) (* (- 27) x4 ) (* 20 x0 ) (* (- 29) x4 ) (* (- 30) x3 ) (* (- 30) x3 ) (* 21 x4 ) (* (- 15) x2 ) (* 0 x2 ) (* (- 23) x3 ) (* 43 x2 ) ) (- 18)) ))
+(assert (or (not (< (+ (* (- 19) x3 ) (* 25 x2 ) (* (- 47) x2 ) (* 39 x4 ) (* (- 15) x3 ) (* 16 x2 ) ) 5)) (>= (+ (* 46 x1 ) (* 9 x2 ) (* 42 x1 ) (* 48 x3 ) (* 20 x0 ) ) 40) ))
+(assert (or (not (= (+ (* (- 40) x2 ) (* 24 x3 ) (* 7 x0 ) (* 40 x1 ) (* 28 x4 ) (* 2 x3 ) (* (- 3) x3 ) (* (- 50) x3 ) (* (- 50) x3 ) (* (- 9) x1 ) (* (- 1) x2 ) ) 41)) (= (+ (* (- 1) x0 ) (* 9 x3 ) ) (- 19)) (not (>= (+ (* 37 x2 ) (* 0 x3 ) (* (- 7) x2 ) (* 36 x4 ) (* 32 x0 ) (* (- 45) x0 ) (* 30 x4 ) (* (- 5) x1 ) ) (- 29))) ))
+(assert (= (+ (* (- 44) x3 ) (* (- 48) x1 ) (* 49 x0 ) (* (- 12) x0 ) (* (- 6) x4 ) (* (- 11) x0 ) ) 45) )
+(assert (not (>= (+ (* (- 20) x0 ) (* (- 5) x0 ) (* 43 x0 ) (* 33 x0 ) (* 35 x1 ) (* (- 30) x2 ) (* (- 4) x4 ) (* 22 x1 ) ) (- 50))) )
+(assert (not (> (+ (* 9 x1 ) (* 3 x2 ) (* 37 x1 ) (* (- 39) x4 ) ) 18)) )
+(assert (or (not (< (+ (* (- 23) x3 ) (* (- 10) x4 ) (* (- 17) x0 ) (* 19 x2 ) (* 40 x1 ) (* (- 19) x4 ) (* (- 32) x3 ) ) (- 5))) (not (= (+ (* 33 x2 ) (* (- 7) x2 ) (* 37 x2 ) (* 41 x1 ) (* (- 3) x2 ) (* 14 x1 ) (* 45 x0 ) (* (- 14) x1 ) ) 37)) (< (+ (* 3 x3 ) (* (- 26) x1 ) (* (- 24) x0 ) (* (- 20) x2 ) (* 23 x4 ) (* (- 28) x4 ) (* 42 x3 ) (* (- 19) x2 ) (* (- 26) x1 ) (* (- 40) x2 ) ) (- 27)) ))
+(check-sat)
+(push 1)
+(assert (or (not (= (+ (* (- 24) x4 ) (* 7 x4 ) (* (- 12) x1 ) (* 30 x3 ) (* 26 x3 ) (* (- 45) x2 ) (* (- 3) x1 ) (* (- 7) x2 ) (* (- 14) x0 ) ) 10)) (not (>= (+ (* (- 21) x0 ) (* 31 x3 ) (* (- 16) x3 ) (* 22 x0 ) (* 5 x1 ) (* 31 x0 ) (* 8 x4 ) (* 13 x4 ) ) 40)) (not (>= (+ (* (- 38) x1 ) (* 45 x1 ) (* (- 31) x0 ) (* 18 x3 ) (* 0 x2 ) (* (- 32) x4 ) ) (- 19))) ))
+(check-sat)
+(pop 1)
+(assert (not (= (+ (* 11 x3 ) (* (- 27) x0 ) (* 1 x0 ) ) (- 12))) )
+(check-sat)
+(push 1)
+(assert (or (= (+ (* 46 x3 ) (* (- 41) x4 ) (* (- 33) x4 ) (* 32 x2 ) (* (- 13) x2 ) (* 36 x3 ) (* (- 50) x3 ) (* 41 x2 ) (* 34 x4 ) ) (- 48)) (= (+ (* 17 x4 ) (* (- 43) x2 ) (* (- 2) x4 ) (* (- 38) x4 ) ) (- 8)) ))
+(check-sat)
+(push 1)
+(assert (or (not (< (+ (* (- 15) x2 ) (* (- 15) x3 ) ) 24)) (not (< (+ (* (- 4) x1 ) (* 25 x2 ) (* 13 x4 ) (* 13 x2 ) (* (- 31) x0 ) (* 44 x2 ) (* 6 x3 ) (* (- 40) x3 ) (* (- 31) x1 ) (* (- 35) x4 ) ) 9)) ))
+(check-sat)
+(push 1)
+(assert (or (= (+ (* 6 x1 ) (* 7 x3 ) (* (- 15) x2 ) (* 23 x3 ) (* (- 13) x3 ) (* 30 x4 ) (* (- 39) x2 ) (* 27 x4 ) ) 18) (not (< (+ (* (- 4) x4 ) (* (- 35) x1 ) (* 34 x4 ) (* (- 33) x3 ) (* 18 x2 ) (* 28 x0 ) (* (- 15) x4 ) ) 37)) ))
+(assert (or (< (+ (* 43 x3 ) (* 17 x2 ) ) (- 45)) (<= (+ (* 37 x3 ) (* 19 x1 ) (* (- 8) x3 ) (* 49 x1 ) (* (- 14) x3 ) (* (- 30) x2 ) (* 14 x0 ) (* 31 x0 ) (* (- 13) x4 ) (* (- 28) x2 ) ) 8) ))
+(assert (<= (+ (* (- 35) x2 ) (* (- 15) x3 ) (* (- 6) x0 ) (* 16 x4 ) (* (- 42) x3 ) (* (- 48) x0 ) (* 40 x2 ) (* 26 x3 ) (* 45 x0 ) (* 10 x0 ) ) 27) )
+(assert (or (<= (+ (* 12 x1 ) (* (- 33) x3 ) (* 17 x2 ) (* (- 7) x2 ) (* (- 25) x4 ) (* (- 22) x2 ) (* 2 x1 ) (* (- 46) x3 ) (* (- 2) x1 ) (* (- 5) x4 ) (* 7 x4 ) ) (- 10)) (not (>= (+ (* (- 31) x4 ) (* 25 x4 ) (* (- 33) x4 ) (* 9 x3 ) (* (- 48) x4 ) (* (- 31) x1 ) (* (- 18) x0 ) (* 34 x4 ) (* (- 15) x1 ) ) 39)) (not (<= (+ (* 36 x2 ) (* 24 x0 ) (* (- 17) x3 ) (* (- 38) x1 ) (* 2 x2 ) (* 11 x2 ) (* (- 39) x2 ) (* (- 33) x1 ) (* 15 x1 ) (* (- 1) x0 ) (* (- 33) x4 ) ) 32)) ))
+(check-sat)
+(push 1)
+(assert (or (= (+ (* 44 x3 ) (* (- 19) x3 ) (* 38 x0 ) (* 13 x4 ) (* (- 32) x1 ) ) (- 35)) (>= (+ (* 13 x3 ) (* 21 x4 ) (* 34 x3 ) (* 15 x1 ) (* 5 x3 ) (* (- 43) x3 ) (* 11 x0 ) ) 0) ))
+(assert (< (+ (* 14 x2 ) (* 38 x0 ) (* (- 42) x2 ) ) (- 44)) )
+(assert (or (not (< (+ (* (- 45) x1 ) (* 32 x3 ) (* 36 x1 ) (* 44 x2 ) (* 42 x3 ) (* (- 7) x2 ) (* 2 x1 ) (* (- 23) x1 ) (* 36 x0 ) (* (- 33) x3 ) ) 0)) (not (> (+ (* (- 34) x1 ) (* (- 49) x4 ) (* 15 x1 ) (* 10 x0 ) (* 10 x0 ) (* (- 39) x2 ) (* (- 9) x1 ) (* (- 11) x1 ) (* 10 x3 ) (* (- 11) x4 ) ) (- 38))) (<= (+ (* 10 x3 ) (* (- 34) x2 ) (* (- 13) x0 ) (* 19 x1 ) (* 20 x3 ) (* 9 x0 ) (* (- 33) x1 ) (* (- 44) x4 ) (* (- 37) x2 ) ) (- 32)) ))
+(assert (or (<= (+ (* (- 50) x1 ) (* (- 50) x4 ) (* 48 x0 ) (* (- 5) x0 ) (* 40 x0 ) (* 20 x1 ) (* (- 43) x2 ) (* (- 18) x1 ) ) 28) (not (< (+ (* 13 x1 ) (* (- 41) x2 ) (* (- 8) x3 ) (* 33 x4 ) ) (- 32))) (not (< (+ (* 4 x3 ) (* (- 15) x2 ) (* (- 33) x2 ) (* 12 x1 ) (* (- 8) x2 ) ) 35)) ))
+(assert (or (= (+ (* 12 x0 ) (* (- 28) x3 ) (* (- 28) x2 ) (* (- 45) x3 ) (* (- 31) x0 ) (* (- 15) x3 ) (* (- 39) x2 ) (* 28 x2 ) ) 16) (not (<= (+ (* 44 x3 ) (* 28 x0 ) (* 20 x4 ) ) 14)) (<= (+ (* 39 x3 ) (* 23 x2 ) (* 24 x3 ) ) 45) ))
+(assert (or (not (<= (+ (* (- 10) x0 ) (* (- 8) x3 ) (* (- 49) x3 ) (* (- 19) x3 ) ) 22)) (= (+ (* 17 x3 ) (* (- 42) x4 ) (* 27 x0 ) (* 35 x0 ) (* 42 x3 ) ) 8) ))
+(assert (or (not (>= (+ (* (- 5) x0 ) (* 20 x1 ) (* (- 45) x0 ) (* 5 x4 ) (* (- 43) x1 ) (* (- 20) x1 ) (* (- 34) x2 ) ) (- 11))) (not (<= (+ (* (- 5) x1 ) (* 21 x3 ) (* 16 x2 ) (* (- 10) x0 ) (* 35 x3 ) (* (- 23) x3 ) (* 18 x1 ) (* (- 42) x4 ) ) (- 12))) (not (= (+ (* 21 x4 ) (* (- 47) x1 ) (* 35 x4 ) (* (- 5) x1 ) (* (- 43) x1 ) (* (- 21) x1 ) (* 14 x4 ) (* 37 x0 ) (* 17 x2 ) (* 32 x4 ) (* 27 x2 ) ) (- 40))) ))
+(assert (or (not (= (+ (* 14 x1 ) (* (- 38) x4 ) (* (- 48) x2 ) (* (- 9) x2 ) (* (- 11) x3 ) (* (- 9) x2 ) (* 5 x1 ) (* (- 48) x1 ) ) 21)) (not (> (+ (* (- 29) x1 ) (* 45 x1 ) (* 48 x0 ) (* (- 2) x1 ) (* 35 x4 ) ) (- 15))) (not (= (+ (* (- 13) x0 ) (* 14 x1 ) (* (- 31) x0 ) (* 19 x3 ) ) (- 37))) ))
+(check-sat)
+(push 1)
+(assert (or (not (<= (+ (* 0 x4 ) (* (- 13) x1 ) (* (- 33) x3 ) (* 34 x2 ) (* (- 27) x2 ) (* (- 46) x0 ) (* 21 x1 ) ) (- 17))) (<= (+ (* 41 x2 ) (* 23 x1 ) (* (- 1) x0 ) (* 35 x4 ) (* 28 x3 ) ) (- 18)) ))
+(assert (or (not (= (+ (* 43 x2 ) (* (- 41) x1 ) (* 30 x3 ) (* (- 50) x3 ) (* (- 9) x0 ) ) (- 27))) (>= (+ (* (- 35) x0 ) (* 22 x0 ) ) 38) (not (> (+ (* 9 x2 ) (* (- 45) x3 ) (* 19 x2 ) (* 49 x0 ) (* (- 37) x2 ) (* (- 27) x3 ) (* (- 27) x4 ) ) (- 46))) ))
+(assert (or (> (+ (* (- 4) x1 ) (* 49 x2 ) (* 7 x2 ) ) (- 27)) (not (< (+ (* (- 33) x0 ) (* (- 39) x0 ) (* 9 x4 ) (* (- 33) x0 ) ) 9)) (>= (+ (* 6 x3 ) (* 22 x4 ) (* 4 x1 ) (* (- 34) x0 ) ) (- 46)) ))
+(assert (not (>= (+ (* 0 x1 ) (* (- 9) x1 ) (* (- 1) x2 ) (* 4 x1 ) (* (- 13) x0 ) (* (- 10) x4 ) (* (- 25) x4 ) (* (- 14) x3 ) (* (- 49) x1 ) ) 43)) )
+(assert (or (<= (+ (* 20 x2 ) (* 42 x3 ) (* (- 4) x2 ) (* (- 44) x3 ) (* (- 45) x1 ) (* 45 x2 ) (* (- 40) x4 ) (* 16 x0 ) (* (- 34) x3 ) (* 4 x1 ) (* 41 x1 ) ) 41) (< (+ (* 19 x4 ) (* (- 50) x0 ) (* (- 28) x4 ) (* (- 20) x0 ) ) 17) ))
+(assert (or (< (+ (* 35 x0 ) (* 1 x2 ) ) 46) (not (>= (+ (* 26 x0 ) (* 33 x3 ) (* (- 9) x2 ) (* 10 x2 ) (* 41 x2 ) (* (- 28) x1 ) ) 41)) (not (> (+ (* (- 34) x3 ) (* 1 x3 ) (* (- 19) x1 ) ) (- 23))) ))
+(assert (or (not (> (+ (* 25 x0 ) (* 17 x4 ) (* 9 x3 ) ) (- 48))) (not (>= (+ (* (- 20) x2 ) (* 14 x0 ) ) (- 45))) ))
+(assert (not (<= (+ (* 2 x3 ) (* (- 24) x3 ) (* (- 40) x1 ) (* 3 x0 ) ) (- 36))) )
+(assert (not (= (+ (* (- 30) x4 ) (* 11 x1 ) (* (- 11) x0 ) ) (- 29))) )
+(assert (not (= (+ (* 44 x4 ) (* (- 22) x4 ) (* 49 x1 ) (* (- 41) x0 ) (* 18 x2 ) ) 21)) )
+(check-sat)
+(pop 1)
+(assert (not (= (+ (* 38 x3 ) (* 7 x2 ) (* (- 23) x4 ) (* (- 28) x3 ) (* 20 x2 ) (* 39 x3 ) (* 17 x2 ) (* 28 x0 ) (* 11 x2 ) (* 29 x4 ) (* (- 43) x0 ) ) (- 2))) )
+(assert (not (>= (+ (* 6 x1 ) (* 29 x3 ) (* 25 x4 ) (* (- 4) x3 ) (* (- 13) x4 ) (* 9 x0 ) (* (- 32) x2 ) (* (- 45) x3 ) (* (- 14) x2 ) (* 34 x3 ) (* (- 37) x2 ) ) 14)) )
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (or (>= (+ (* (- 50) x2 ) (* 48 x1 ) (* 16 x0 ) (* 31 x4 ) (* (- 33) x3 ) ) (- 10)) (not (< (+ (* (- 25) x3 ) (* (- 47) x4 ) (* (- 24) x1 ) (* 27 x3 ) (* 42 x3 ) ) (- 9))) ))
+(check-sat)
+(pop 1)
+(assert (or (not (> (+ (* 49 x0 ) (* (- 28) x3 ) (* (- 47) x1 ) (* (- 29) x1 ) (* (- 2) x0 ) (* (- 43) x4 ) (* (- 46) x4 ) ) 34)) (> (+ (* (- 22) x2 ) (* 45 x0 ) ) (- 29)) ))
+(push 1)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (or (<= (+ (* (- 22) x4 ) (* (- 39) x1 ) (* (- 9) x1 ) (* (- 32) x1 ) (* 5 x2 ) (* 7 x3 ) (* (- 13) x3 ) (* 31 x3 ) ) 35) (<= (+ (* 44 x2 ) (* 21 x3 ) (* (- 9) x1 ) ) (- 29)) ))
+(assert (or (not (>= (+ (* 22 x1 ) (* (- 1) x2 ) (* (- 47) x0 ) (* 12 x4 ) (* (- 42) x4 ) ) 22)) (not (<= (+ (* 32 x0 ) (* 45 x1 ) (* 40 x4 ) (* 44 x4 ) (* 3 x2 ) (* 33 x2 ) ) (- 17))) ))
+(check-sat)
+(pop 1)
+(assert (or (not (> (+ (* (- 26) x1 ) (* 26 x0 ) ) 48)) (>= (+ (* 35 x3 ) (* (- 43) x2 ) (* 29 x0 ) (* (- 31) x2 ) (* (- 20) x2 ) (* 22 x1 ) ) 49) (>= (+ (* (- 31) x2 ) (* (- 2) x1 ) (* (- 45) x2 ) (* 25 x2 ) (* 29 x4 ) (* (- 23) x1 ) (* (- 1) x0 ) (* 18 x1 ) (* 0 x2 ) (* (- 43) x2 ) (* 24 x2 ) ) (- 23)) ))
+(assert (or (<= (+ (* 5 x0 ) (* (- 8) x0 ) (* 18 x4 ) (* (- 12) x3 ) (* (- 18) x3 ) (* (- 48) x3 ) (* (- 34) x1 ) (* (- 2) x1 ) (* (- 50) x3 ) (* (- 45) x3 ) ) (- 48)) (>= (+ (* 41 x0 ) (* 25 x2 ) (* (- 17) x2 ) (* (- 6) x0 ) (* (- 48) x3 ) (* (- 36) x3 ) (* 31 x0 ) (* (- 7) x3 ) ) 15) ))
+(check-sat)
+
diff --git a/test/regress/regress0/push-pop/arith_lra_02.smt2 b/test/regress/regress0/push-pop/arith_lra_02.smt2
new file mode 100644
index 0000000..3cb5674
--- /dev/null
+++ b/test/regress/regress0/push-pop/arith_lra_02.smt2
@@ -0,0 +1,95 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LRA)
+(declare-fun x0 () Real)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(declare-fun x3 () Real)
+(declare-fun x4 () Real)
+(assert (or (not (>= (+ (* (- 29) x2 ) (* 3 x2 ) (* 49 x0 ) (* 46 x1 ) (* (- 18) x0 ) (* (- 17) x2 ) (* 35 x0 ) (* 9 x2 ) (* (- 16) x0 ) ) 16)) (= (+ (* 25 x1 ) (* 15 x2 ) (* 27 x4 ) (* 7 x2 ) (* 27 x3 ) (* (- 45) x4 ) ) (- 20)) (not (< (+ (* (- 13) x3 ) (* 47 x3 ) (* 20 x3 ) ) 33)) ))
+(check-sat)
+(assert (or (not (<= (+ (* (- 35) x1 ) (* 11 x4 ) ) (- 21))) (not (< (+ (* 12 x1 ) (* (- 24) x2 ) (* (- 41) x4 ) (* 25 x3 ) (* (- 29) x4 ) ) 41)) ))
+(assert (or (not (>= (+ (* (- 3) x1 ) (* (- 12) x0 ) (* 29 x4 ) ) 0)) (>= (+ (* (- 27) x3 ) (* (- 15) x2 ) (* (- 30) x0 ) (* 29 x0 ) (* 44 x2 ) (* (- 20) x0 ) (* (- 9) x2 ) ) (- 47)) ))
+(check-sat)
+(push 1)
+(assert (or (not (<= (+ (* (- 30) x2 ) (* (- 42) x0 ) (* (- 30) x4 ) (* (- 4) x0 ) (* (- 5) x4 ) (* (- 12) x4 ) (* (- 18) x4 ) (* 15 x0 ) ) 32)) (> (+ (* 44 x2 ) (* (- 37) x0 ) (* (- 35) x0 ) (* (- 1) x3 ) (* 25 x2 ) (* (- 39) x0 ) (* 40 x0 ) (* 7 x4 ) (* (- 20) x2 ) (* 27 x3 ) (* (- 50) x2 ) ) 17) ))
+(check-sat)
+(push 1)
+(assert (or (= (+ (* 47 x4 ) (* (- 1) x1 ) (* 39 x4 ) (* (- 44) x0 ) ) (- 34)) (>= (+ (* 39 x0 ) (* 7 x1 ) (* (- 26) x1 ) (* 48 x1 ) ) 26) ))
+(check-sat)
+(push 1)
+(assert (or (= (+ (* (- 25) x2 ) (* 16 x4 ) (* (- 13) x4 ) (* (- 12) x2 ) ) 29) (not (= (+ (* 13 x2 ) (* (- 33) x1 ) (* (- 18) x2 ) (* 26 x4 ) (* (- 37) x4 ) (* (- 13) x4 ) (* (- 2) x3 ) (* (- 7) x3 ) (* 26 x3 ) (* (- 20) x2 ) (* (- 27) x1 ) ) (- 2))) ))
+(assert (or (>= (+ (* (- 7) x0 ) (* (- 15) x1 ) (* 35 x3 ) ) 11) (= (+ (* (- 21) x0 ) (* (- 1) x4 ) (* 21 x3 ) (* (- 6) x2 ) (* (- 49) x0 ) ) (- 15)) (not (< (+ (* 47 x3 ) (* (- 47) x4 ) (* 3 x0 ) (* 16 x3 ) (* (- 21) x1 ) (* 1 x3 ) (* 16 x2 ) ) (- 25))) ))
+(assert (> (+ (* (- 7) x1 ) (* (- 20) x1 ) (* (- 1) x2 ) (* 24 x3 ) (* (- 14) x4 ) (* 24 x2 ) (* 38 x4 ) (* (- 44) x2 ) (* (- 50) x1 ) ) 22) )
+(assert (not (>= (+ (* 16 x1 ) (* (- 43) x4 ) (* (- 22) x3 ) (* 11 x0 ) (* (- 22) x3 ) (* (- 40) x2 ) (* 25 x2 ) ) (- 13))) )
+(assert (or (not (> (+ (* (- 5) x3 ) (* (- 46) x4 ) (* (- 21) x2 ) (* 29 x1 ) (* 38 x4 ) (* 48 x3 ) ) (- 44))) (not (<= (+ (* (- 13) x0 ) (* (- 42) x3 ) (* 27 x2 ) (* 45 x1 ) (* (- 42) x3 ) (* (- 33) x3 ) ) (- 16))) (not (= (+ (* 21 x3 ) (* 0 x4 ) (* (- 50) x0 ) (* (- 43) x0 ) (* (- 40) x3 ) (* 45 x2 ) (* (- 36) x2 ) (* 2 x2 ) (* 2 x3 ) (* (- 30) x2 ) ) (- 20))) ))
+(assert (or (not (< (+ (* 28 x2 ) (* 21 x4 ) (* 19 x0 ) (* 31 x2 ) (* 45 x1 ) (* 3 x4 ) (* 24 x4 ) ) (- 34))) (not (> (+ (* (- 10) x2 ) (* (- 18) x2 ) (* 49 x3 ) (* (- 27) x2 ) (* (- 30) x3 ) ) 8)) (= (+ (* 42 x1 ) (* (- 18) x3 ) (* (- 23) x3 ) (* 34 x0 ) (* 49 x4 ) (* 30 x0 ) (* (- 44) x4 ) (* 45 x3 ) ) 39) ))
+(assert (or (< (+ (* (- 41) x2 ) (* (- 40) x4 ) (* (- 36) x4 ) (* 7 x4 ) (* (- 5) x3 ) (* 11 x1 ) (* 16 x4 ) (* (- 3) x0 ) ) (- 48)) (= (+ (* 22 x0 ) (* 41 x3 ) (* (- 11) x0 ) (* (- 42) x3 ) (* 18 x0 ) (* (- 7) x4 ) (* (- 5) x2 ) ) (- 45)) (not (< (+ (* (- 11) x2 ) (* (- 30) x4 ) (* (- 25) x2 ) (* 42 x1 ) (* (- 10) x2 ) (* 21 x2 ) (* 5 x3 ) (* (- 19) x3 ) (* (- 35) x1 ) (* 11 x3 ) ) (- 27))) ))
+(assert (or (not (> (+ (* 41 x4 ) (* (- 30) x3 ) (* (- 15) x4 ) (* 35 x1 ) (* 13 x0 ) (* 43 x3 ) ) 6)) (<= (+ (* (- 31) x3 ) (* 4 x2 ) (* 18 x0 ) (* 23 x4 ) (* 43 x0 ) (* (- 39) x4 ) (* (- 1) x2 ) ) (- 28)) (<= (+ (* 32 x1 ) (* (- 47) x1 ) (* (- 17) x4 ) (* 32 x3 ) (* 24 x4 ) (* 15 x0 ) (* (- 22) x2 ) (* 14 x4 ) (* 36 x2 ) (* 2 x0 ) (* (- 35) x2 ) ) (- 5)) ))
+(check-sat)
+(push 1)
+(assert (or (not (= (+ (* (- 33) x3 ) (* 19 x4 ) ) 22)) (<= (+ (* 35 x3 ) (* (- 22) x0 ) (* 9 x0 ) (* (- 16) x1 ) (* 41 x3 ) (* (- 42) x3 ) (* 35 x3 ) ) 25) (not (>= (+ (* (- 8) x1 ) (* 22 x1 ) ) 14)) ))
+(assert (or (< (+ (* 27 x1 ) (* 4 x1 ) ) 12) (<= (+ (* (- 8) x2 ) (* (- 47) x4 ) (* (- 26) x3 ) (* (- 22) x1 ) (* (- 11) x4 ) (* (- 28) x3 ) (* 17 x3 ) (* 1 x0 ) (* 31 x4 ) (* 30 x3 ) ) (- 48)) (not (> (+ (* (- 6) x0 ) (* (- 35) x4 ) (* (- 12) x0 ) (* (- 6) x0 ) (* (- 19) x2 ) ) (- 3))) ))
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (or (<= (+ (* 7 x4 ) (* (- 25) x1 ) (* 49 x3 ) (* (- 10) x0 ) (* 48 x0 ) (* (- 23) x0 ) (* 44 x4 ) (* (- 39) x2 ) (* 24 x4 ) ) 6) (<= (+ (* (- 36) x2 ) (* (- 17) x1 ) (* 18 x1 ) (* (- 27) x0 ) (* 36 x3 ) (* 12 x2 ) (* 21 x1 ) (* 18 x3 ) (* 38 x3 ) (* (- 44) x1 ) (* (- 37) x3 ) ) 2) (= (+ (* (- 18) x2 ) (* 45 x1 ) (* 43 x3 ) (* (- 44) x1 ) ) 28) ))
+(assert (= (+ (* (- 2) x2 ) (* 31 x4 ) (* 20 x1 ) ) (- 1)) )
+(assert (not (> (+ (* 47 x3 ) (* 7 x1 ) (* (- 20) x4 ) (* 42 x0 ) (* (- 20) x2 ) (* (- 12) x2 ) (* (- 34) x3 ) (* (- 35) x2 ) (* 0 x4 ) (* 18 x0 ) ) 49)) )
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (not (< (+ (* (- 46) x0 ) (* (- 32) x4 ) (* 40 x3 ) (* (- 47) x0 ) (* 27 x0 ) (* 22 x0 ) (* (- 24) x2 ) (* 0 x0 ) (* (- 11) x3 ) ) (- 50))) )
+(check-sat)
+(push 1)
+(assert (or (>= (+ (* 37 x2 ) (* 33 x1 ) (* 29 x1 ) (* (- 48) x4 ) (* 3 x2 ) (* 48 x2 ) (* (- 23) x3 ) (* 44 x2 ) (* 45 x2 ) (* (- 6) x2 ) (* 15 x2 ) ) 34) (not (>= (+ (* (- 11) x1 ) (* (- 23) x0 ) (* (- 32) x0 ) (* 49 x1 ) (* 14 x3 ) (* 43 x3 ) (* (- 23) x1 ) (* 9 x1 ) (* (- 44) x2 ) ) (- 12))) (= (+ (* (- 26) x2 ) (* (- 1) x2 ) (* (- 27) x0 ) (* (- 39) x3 ) (* 49 x4 ) (* (- 26) x0 ) (* (- 3) x3 ) ) 44) ))
+(assert (not (>= (+ (* (- 22) x3 ) (* 41 x4 ) (* 31 x4 ) (* (- 21) x2 ) (* 0 x3 ) (* (- 8) x2 ) (* 9 x4 ) (* (- 34) x1 ) (* (- 8) x4 ) (* 3 x2 ) ) 43)) )
+(check-sat)
+(pop 1)
+(check-sat)
+(pop 1)
+(assert (or (= (+ (* 15 x0 ) (* (- 46) x0 ) (* (- 49) x3 ) (* (- 45) x0 ) (* 26 x1 ) ) 5) (= (+ (* 12 x4 ) (* (- 2) x3 ) (* (- 24) x4 ) (* (- 1) x1 ) (* (- 20) x0 ) ) 23) ))
+(assert (< (+ (* (- 42) x4 ) (* 41 x3 ) (* 1 x2 ) (* (- 1) x3 ) (* (- 26) x2 ) (* 14 x0 ) ) (- 23)) )
+(assert (or (= (+ (* (- 36) x1 ) (* 44 x3 ) (* (- 20) x3 ) (* 39 x4 ) (* (- 19) x2 ) ) (- 15)) (not (>= (+ (* 3 x0 ) (* 49 x3 ) (* (- 49) x1 ) (* (- 37) x0 ) (* 28 x0 ) (* (- 46) x0 ) (* (- 22) x4 ) ) 47)) ))
+(assert (<= (+ (* (- 37) x4 ) (* 10 x3 ) ) 4) )
+(assert (or (not (< (+ (* (- 38) x1 ) (* (- 36) x4 ) ) (- 39))) (not (> (+ (* 42 x1 ) (* 8 x1 ) ) (- 2))) (<= (+ (* (- 38) x4 ) (* (- 1) x2 ) (* 21 x4 ) (* (- 3) x3 ) (* 19 x4 ) (* 25 x2 ) (* 24 x4 ) ) (- 22)) ))
+(check-sat)
+(push 1)
+(assert (or (not (<= (+ (* 23 x3 ) (* 4 x4 ) (* 43 x1 ) (* 19 x2 ) (* 23 x0 ) (* 28 x3 ) (* 48 x3 ) (* (- 12) x1 ) (* 35 x0 ) (* (- 7) x2 ) (* (- 31) x3 ) ) (- 33))) (not (< (+ (* (- 29) x1 ) (* 23 x0 ) (* 20 x3 ) ) (- 4))) (not (>= (+ (* 49 x3 ) (* 3 x3 ) (* (- 18) x2 ) (* (- 3) x3 ) (* 35 x0 ) (* (- 23) x2 ) (* (- 5) x2 ) (* (- 15) x0 ) (* (- 10) x1 ) (* (- 45) x4 ) ) (- 2))) ))
+(check-sat)
+(push 1)
+(check-sat)
+(assert (or (>= (+ (* (- 11) x1 ) (* 38 x4 ) (* (- 29) x1 ) ) (- 21)) (not (>= (+ (* (- 16) x4 ) (* (- 43) x2 ) (* (- 10) x0 ) (* 38 x1 ) (* (- 1) x2 ) (* (- 3) x2 ) ) 25)) ))
+(assert (or (not (< (+ (* (- 45) x4 ) (* (- 9) x0 ) (* (- 29) x2 ) (* (- 35) x1 ) (* (- 40) x2 ) (* 25 x1 ) (* (- 20) x2 ) (* (- 16) x1 ) ) 39)) (= (+ (* (- 10) x4 ) (* 9 x1 ) (* 16 x4 ) ) 5) (not (< (+ (* 34 x4 ) (* 17 x3 ) (* (- 8) x2 ) ) 38)) ))
+(assert (or (not (<= (+ (* 13 x3 ) (* 22 x2 ) (* 1 x4 ) (* 26 x3 ) (* (- 15) x3 ) ) 18)) (> (+ (* (- 49) x3 ) (* 28 x4 ) (* (- 20) x4 ) (* (- 16) x4 ) (* 42 x2 ) (* 36 x2 ) (* 36 x3 ) (* (- 26) x4 ) ) 17) ))
+(assert (or (not (= (+ (* (- 13) x1 ) (* (- 24) x0 ) (* (- 16) x2 ) (* (- 32) x3 ) (* (- 32) x2 ) (* 13 x4 ) (* (- 42) x3 ) (* 12 x3 ) (* 41 x4 ) (* 21 x1 ) (* (- 41) x4 ) ) 8)) (<= (+ (* 24 x1 ) (* 35 x1 ) ) 13) ))
+(assert (< (+ (* (- 21) x0 ) (* (- 41) x4 ) (* (- 15) x2 ) ) 22) )
+(assert (or (not (>= (+ (* (- 34) x0 ) (* (- 9) x1 ) (* 21 x2 ) (* 13 x1 ) (* (- 25) x3 ) (* 4 x4 ) (* (- 45) x0 ) (* 34 x4 ) (* 10 x1 ) ) 32)) (not (> (+ (* (- 10) x2 ) (* 36 x0 ) (* 30 x2 ) (* 46 x3 ) (* (- 34) x1 ) ) 14)) ))
+(assert (not (< (+ (* (- 45) x2 ) (* (- 3) x3 ) (* 38 x0 ) (* (- 44) x2 ) (* 40 x4 ) (* 8 x1 ) ) (- 7))) )
+(assert (not (> (+ (* 36 x3 ) (* 48 x0 ) (* (- 4) x4 ) (* 49 x4 ) (* (- 26) x1 ) (* (- 12) x3 ) (* (- 48) x0 ) ) (- 6))) )
+(check-sat)
+(pop 1)
+(assert (or (>= (+ (* 30 x0 ) (* (- 12) x4 ) (* 39 x4 ) (* (- 12) x0 ) (* (- 12) x2 ) (* 9 x1 ) (* (- 40) x2 ) ) 7) (not (> (+ (* 4 x2 ) (* 2 x2 ) (* 23 x4 ) ) (- 43))) ))
+(check-sat)
+(pop 1)
+(check-sat)
+
diff --git a/test/regress/regress0/push-pop/boolean/Makefile.am b/test/regress/regress0/push-pop/boolean/Makefile.am
new file mode 100644
index 0000000..a1eb4fd
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/Makefile.am
@@ -0,0 +1,96 @@
+SUBDIRS = . 
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+
+# Regression tests for SMT inputs
+CVC_TESTS =
+
+SMT2_TESTS = \
+	fuzz_1.smt2 \
+	fuzz_2.smt2 \
+	fuzz_3.smt2 \
+	fuzz_4.smt2 \
+	fuzz_5.smt2 \
+	fuzz_6.smt2 \
+	fuzz_7.smt2 \
+	fuzz_8.smt2 \
+	fuzz_9.smt2 \
+	fuzz_10.smt2 \
+	fuzz_11.smt2 \
+	fuzz_12.smt2 \
+	fuzz_13.smt2 \
+	fuzz_14.smt2 \
+	fuzz_15.smt2 \
+	fuzz_16.smt2 \
+	fuzz_18.smt2 \
+	fuzz_19.smt2 \
+	fuzz_20.smt2 \
+	fuzz_21.smt2 \
+	fuzz_22.smt2 \
+	fuzz_23.smt2 \
+	fuzz_24.smt2 \
+	fuzz_25.smt2 \
+	fuzz_26.smt2 \
+	fuzz_27.smt2 \
+	fuzz_28.smt2 \
+	fuzz_29.smt2 \
+	fuzz_30.smt2 \
+	fuzz_31.smt2 \
+	fuzz_32.smt2 \
+	fuzz_33.smt2 \
+	fuzz_34.smt2 \
+	fuzz_35.smt2 \
+	fuzz_36.smt2 \
+	fuzz_37.smt2 \
+	fuzz_38.smt2 \
+	fuzz_39.smt2 \
+	fuzz_40.smt2 \
+	fuzz_41.smt2 \
+	fuzz_42.smt2 \
+	fuzz_43.smt2 \
+	fuzz_44.smt2 \
+	fuzz_45.smt2 \
+	fuzz_46.smt2 \
+	fuzz_47.smt2 \
+	fuzz_48.smt2 \
+	fuzz_49.smt2 \
+	fuzz_50.smt2 \
+	fuzz_51.smt2 \
+	fuzz_52.smt2 
+
+# Disabled because they take too long
+#	fuzz_1_to_52_merged.smt2 \
+#
+
+BUG_TESTS = 
+
+TESTS =	$(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(BUG_TESTS)
+
+EXTRA_DIST = $(TESTS) 
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/push-pop/boolean/Makefile.in b/test/regress/regress0/push-pop/boolean/Makefile.in
new file mode 100644
index 0000000..7cb5c04
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/Makefile.in
@@ -0,0 +1,1577 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+TESTS = $(SMT2_TESTS) $(am__EXEEXT_1) $(am__EXEEXT_1)
+subdir = test/regress/regress0/push-pop/boolean
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+am__EXEEXT_1 =
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+SUBDIRS = . 
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+
+# Regression tests for SMT inputs
+CVC_TESTS = 
+SMT2_TESTS = \
+	fuzz_1.smt2 \
+	fuzz_2.smt2 \
+	fuzz_3.smt2 \
+	fuzz_4.smt2 \
+	fuzz_5.smt2 \
+	fuzz_6.smt2 \
+	fuzz_7.smt2 \
+	fuzz_8.smt2 \
+	fuzz_9.smt2 \
+	fuzz_10.smt2 \
+	fuzz_11.smt2 \
+	fuzz_12.smt2 \
+	fuzz_13.smt2 \
+	fuzz_14.smt2 \
+	fuzz_15.smt2 \
+	fuzz_16.smt2 \
+	fuzz_18.smt2 \
+	fuzz_19.smt2 \
+	fuzz_20.smt2 \
+	fuzz_21.smt2 \
+	fuzz_22.smt2 \
+	fuzz_23.smt2 \
+	fuzz_24.smt2 \
+	fuzz_25.smt2 \
+	fuzz_26.smt2 \
+	fuzz_27.smt2 \
+	fuzz_28.smt2 \
+	fuzz_29.smt2 \
+	fuzz_30.smt2 \
+	fuzz_31.smt2 \
+	fuzz_32.smt2 \
+	fuzz_33.smt2 \
+	fuzz_34.smt2 \
+	fuzz_35.smt2 \
+	fuzz_36.smt2 \
+	fuzz_37.smt2 \
+	fuzz_38.smt2 \
+	fuzz_39.smt2 \
+	fuzz_40.smt2 \
+	fuzz_41.smt2 \
+	fuzz_42.smt2 \
+	fuzz_43.smt2 \
+	fuzz_44.smt2 \
+	fuzz_45.smt2 \
+	fuzz_46.smt2 \
+	fuzz_47.smt2 \
+	fuzz_48.smt2 \
+	fuzz_49.smt2 \
+	fuzz_50.smt2 \
+	fuzz_51.smt2 \
+	fuzz_52.smt2 
+
+
+# Disabled because they take too long
+#	fuzz_1_to_52_merged.smt2 \
+#
+BUG_TESTS = 
+EXTRA_DIST = $(TESTS) 
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/push-pop/boolean/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/push-pop/boolean/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+fuzz_1.smt2.log: fuzz_1.smt2
+	@p='fuzz_1.smt2'; \
+	b='fuzz_1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_2.smt2.log: fuzz_2.smt2
+	@p='fuzz_2.smt2'; \
+	b='fuzz_2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_3.smt2.log: fuzz_3.smt2
+	@p='fuzz_3.smt2'; \
+	b='fuzz_3.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_4.smt2.log: fuzz_4.smt2
+	@p='fuzz_4.smt2'; \
+	b='fuzz_4.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_5.smt2.log: fuzz_5.smt2
+	@p='fuzz_5.smt2'; \
+	b='fuzz_5.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_6.smt2.log: fuzz_6.smt2
+	@p='fuzz_6.smt2'; \
+	b='fuzz_6.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_7.smt2.log: fuzz_7.smt2
+	@p='fuzz_7.smt2'; \
+	b='fuzz_7.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_8.smt2.log: fuzz_8.smt2
+	@p='fuzz_8.smt2'; \
+	b='fuzz_8.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_9.smt2.log: fuzz_9.smt2
+	@p='fuzz_9.smt2'; \
+	b='fuzz_9.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_10.smt2.log: fuzz_10.smt2
+	@p='fuzz_10.smt2'; \
+	b='fuzz_10.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_11.smt2.log: fuzz_11.smt2
+	@p='fuzz_11.smt2'; \
+	b='fuzz_11.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_12.smt2.log: fuzz_12.smt2
+	@p='fuzz_12.smt2'; \
+	b='fuzz_12.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_13.smt2.log: fuzz_13.smt2
+	@p='fuzz_13.smt2'; \
+	b='fuzz_13.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_14.smt2.log: fuzz_14.smt2
+	@p='fuzz_14.smt2'; \
+	b='fuzz_14.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_15.smt2.log: fuzz_15.smt2
+	@p='fuzz_15.smt2'; \
+	b='fuzz_15.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_16.smt2.log: fuzz_16.smt2
+	@p='fuzz_16.smt2'; \
+	b='fuzz_16.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_18.smt2.log: fuzz_18.smt2
+	@p='fuzz_18.smt2'; \
+	b='fuzz_18.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_19.smt2.log: fuzz_19.smt2
+	@p='fuzz_19.smt2'; \
+	b='fuzz_19.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_20.smt2.log: fuzz_20.smt2
+	@p='fuzz_20.smt2'; \
+	b='fuzz_20.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_21.smt2.log: fuzz_21.smt2
+	@p='fuzz_21.smt2'; \
+	b='fuzz_21.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_22.smt2.log: fuzz_22.smt2
+	@p='fuzz_22.smt2'; \
+	b='fuzz_22.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_23.smt2.log: fuzz_23.smt2
+	@p='fuzz_23.smt2'; \
+	b='fuzz_23.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_24.smt2.log: fuzz_24.smt2
+	@p='fuzz_24.smt2'; \
+	b='fuzz_24.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_25.smt2.log: fuzz_25.smt2
+	@p='fuzz_25.smt2'; \
+	b='fuzz_25.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_26.smt2.log: fuzz_26.smt2
+	@p='fuzz_26.smt2'; \
+	b='fuzz_26.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_27.smt2.log: fuzz_27.smt2
+	@p='fuzz_27.smt2'; \
+	b='fuzz_27.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_28.smt2.log: fuzz_28.smt2
+	@p='fuzz_28.smt2'; \
+	b='fuzz_28.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_29.smt2.log: fuzz_29.smt2
+	@p='fuzz_29.smt2'; \
+	b='fuzz_29.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_30.smt2.log: fuzz_30.smt2
+	@p='fuzz_30.smt2'; \
+	b='fuzz_30.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_31.smt2.log: fuzz_31.smt2
+	@p='fuzz_31.smt2'; \
+	b='fuzz_31.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_32.smt2.log: fuzz_32.smt2
+	@p='fuzz_32.smt2'; \
+	b='fuzz_32.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_33.smt2.log: fuzz_33.smt2
+	@p='fuzz_33.smt2'; \
+	b='fuzz_33.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_34.smt2.log: fuzz_34.smt2
+	@p='fuzz_34.smt2'; \
+	b='fuzz_34.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_35.smt2.log: fuzz_35.smt2
+	@p='fuzz_35.smt2'; \
+	b='fuzz_35.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_36.smt2.log: fuzz_36.smt2
+	@p='fuzz_36.smt2'; \
+	b='fuzz_36.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_37.smt2.log: fuzz_37.smt2
+	@p='fuzz_37.smt2'; \
+	b='fuzz_37.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_38.smt2.log: fuzz_38.smt2
+	@p='fuzz_38.smt2'; \
+	b='fuzz_38.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_39.smt2.log: fuzz_39.smt2
+	@p='fuzz_39.smt2'; \
+	b='fuzz_39.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_40.smt2.log: fuzz_40.smt2
+	@p='fuzz_40.smt2'; \
+	b='fuzz_40.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_41.smt2.log: fuzz_41.smt2
+	@p='fuzz_41.smt2'; \
+	b='fuzz_41.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_42.smt2.log: fuzz_42.smt2
+	@p='fuzz_42.smt2'; \
+	b='fuzz_42.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_43.smt2.log: fuzz_43.smt2
+	@p='fuzz_43.smt2'; \
+	b='fuzz_43.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_44.smt2.log: fuzz_44.smt2
+	@p='fuzz_44.smt2'; \
+	b='fuzz_44.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_45.smt2.log: fuzz_45.smt2
+	@p='fuzz_45.smt2'; \
+	b='fuzz_45.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_46.smt2.log: fuzz_46.smt2
+	@p='fuzz_46.smt2'; \
+	b='fuzz_46.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_47.smt2.log: fuzz_47.smt2
+	@p='fuzz_47.smt2'; \
+	b='fuzz_47.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_48.smt2.log: fuzz_48.smt2
+	@p='fuzz_48.smt2'; \
+	b='fuzz_48.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_49.smt2.log: fuzz_49.smt2
+	@p='fuzz_49.smt2'; \
+	b='fuzz_49.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_50.smt2.log: fuzz_50.smt2
+	@p='fuzz_50.smt2'; \
+	b='fuzz_50.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_51.smt2.log: fuzz_51.smt2
+	@p='fuzz_51.smt2'; \
+	b='fuzz_51.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_52.smt2.log: fuzz_52.smt2
+	@p='fuzz_52.smt2'; \
+	b='fuzz_52.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_1.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_1.smt2
new file mode 100644
index 0000000..0af648d
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_1.smt2
@@ -0,0 +1,62 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(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)
+(assert (or (and (or (and (and (or (and (and (and x6 x1) (not x7)) (not (and x5 x9))) (or (or (and x8 x7) (or x5 x4)) (and (and x3 x2) (and x2 x9)))) (and (or (not (or x8 x3)) (and (or x1 x0) (not x9))) (or (or (and x7 x1) (not x5)) (not (and x1 x8))))) (not (and (and (or (and x4 x2) (or x5 x5)) (and (and x4 x6) (not x8))) (and (or (or x7 x4) (and x3 x1)) (or (and x8 x7) (or x9 x8)))))) (or (or (or (and (not (not x6)) (or (and x1 x5) (or x5 x2))) (or (not (or x3 x1)) (and (not x3) (or x0 [...]
+(check-sat)
+(push 1)
+(assert (and (not (or (not (or (not (not x3)) (and (and x2 x3) (and x9 x3)))) (or (or (or (and x5 x8) (and x4 x6)) (not (or x7 x3))) (not (and (or x8 x6) (and x4 x7)))))) (or (or (not (not (or (and x5 x1) (or x8 x3)))) (and (not (and (not x5) (not x1))) (or (not (not x0)) (not (not x6))))) (or (and (not (and (or x1 x2) (and x5 x4))) (and (not (and x3 x9)) (or (not x9) (not x7)))) (and (not (and (or x6 x2) (or x9 x9))) (or (and (not x9) (or x4 x4)) (not (and x4 x7))))))))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (not (not (not (and (not (and (or (not (not x7)) (or (and x6 x1) (not x6))) (or (and (or x4 x3) (not x3)) (or (or x4 x1) (not x4))))) (not (or (and (not (not x4)) (not (and x5 x6))) (not (and (or x2 x1) (or x3 x7))))))))))
+(check-sat)
+(push 1)
+(assert (not (and (not (not x1)) (or (or x8 x7) (and x1 x2)))))
+(check-sat)
+(pop 1)
+(check-sat)
+(pop 1)
+(assert (not (or x6 x2)))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (or (and (not (and (and x3 x6) (and x6 x9))) (not (or (and x1 x6) (and x5 x1)))) (and (not (or (and x2 x8) (not x4))) (or (not (not x3)) (or (not x3) (or x1 x7))))))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (not (not (or (not (and (not (not (and (not (not x5)) (or (not x3) (or x1 x7))))) (not (or (or (or (and x8 x9) (or x6 x8)) (or (not x6) (not x2))) (not (and (not x8) (or x3 x9))))))) (or (and (and (and (and (and (and x7 x9) (and x3 x2)) (not (and x1 x4))) (and (not (not x1)) (and (or x8 x3) (or x3 x4)))) (and (and (or (and x4 x6) (and x9 x2)) (not (or x9 x1))) (not (and (or x6 x8) (not x2))))) (and (and (or (and (or x1 x2) (and x4 x8)) (or (or x7 x4) (or x3 x1))) (and (not (not x [...]
+(assert (not (or (and (or (or x6 x2) (and x9 x1)) (and (not x3) (and x8 x2))) (or (and (or x0 x0) (not x7)) (and (not x1) (and x7 x1))))))
+(check-sat)
+(pop 1)
+(assert (and (or (not (or (or (or (not (not (and x9 x8))) (and (not (and x6 x4)) (and (or x6 x2) (and x4 x2)))) (and (or (and (and x1 x4) (and x1 x8)) (and (or x6 x0) (or x8 x6))) (or (and (not x8) (and x7 x6)) (or (not x5) (not x7))))) (and (or (or (not (or x5 x5)) (and (and x3 x8) (not x9))) (and (or (or x6 x6) (or x0 x6)) (or (and x5 x1) (not x9)))) (or (and (or (and x5 x6) (not x9)) (not (not x6))) (or (not (and x9 x3)) (not (not x1))))))) (and (and (or (and (and (and (and x6 x3) (or [...]
+(assert (and (and (or x9 x9) (or x2 x7)) (and (and x0 x3) (and x5 x2))))
+(assert (and (and (or (or x2 x2) (or x5 x2)) (and (or x6 x3) (or x1 x8))) (or (not (or x6 x4)) (or (or x2 x7) (or x4 x4)))))
+(check-sat)
+(push 1)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_10.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_10.smt2
new file mode 100644
index 0000000..53493d2
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_10.smt2
@@ -0,0 +1,62 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(declare-fun x5 () Bool)
+(declare-fun x6 () Bool)
+(assert (or (not (and (or x4 x1) (and x5 x3))) (not (or (not x3) (not x3)))))
+(assert (and (or (not (and (or (or x1 x0) (not x0)) (and (not x1) (and x5 x2)))) (not (and (and (and x3 x4) (and x0 x6)) (or (not x1) (and x4 x5))))) (or (or (and (not (and x1 x5)) (not (not x5))) (and (and (and x0 x6) (and x0 x4)) (not (not x5)))) (not (and (and (not x6) (and x0 x0)) (and (not x2) (not x2)))))))
+(assert (or (not (or x6 x1)) (and (or x5 x1) (or x5 x6))))
+(assert (not (or (and (and (or (not (not (and x1 x0))) (not (and (or x1 x4) (or x6 x6)))) (not (not (not (or x4 x6))))) (and (or (or (or (and x2 x6) (and x1 x2)) (or (not x3) (not x3))) (or (or (and x4 x3) (and x2 x3)) (not (not x0)))) (and (not (and (and x4 x3) (not x2))) (or (and (or x0 x2) (not x2)) (or (not x3) (or x3 x3)))))) (and (not (not (or (or (or x5 x3) (or x4 x4)) (not (and x0 x6))))) (and (or (not (and (and x4 x5) (and x2 x6))) (or (and (and x2 x1) (and x3 x0)) (and (and x5  [...]
+(assert (and (or (not (not (not (and (not (and x3 x0)) (and (or x6 x1) (not x1)))))) (not (and (not (or (and (or x3 x5) (and x0 x6)) (or (not x1) (not x4)))) (not (and (and (not x6) (and x1 x2)) (and (and x3 x0) (and x6 x0))))))) (or (not (or (and (and (or (and x1 x4) (not x0)) (not (and x6 x3))) (or (and (or x2 x6) (and x3 x5)) (not (not x0)))) (or (or (not (and x1 x6)) (or (or x3 x3) (and x0 x2))) (or (not (not x0)) (and (or x2 x6) (and x1 x6)))))) (not (and (and (and (or (and x0 x4) ( [...]
+(assert (or (or x5 x5) (or x0 x3)))
+(check-sat)
+(push 1)
+(assert (not (and (not x6) (not x2))))
+(assert (not (or (and (not (not (or (and (not (and x3 x0)) (not (or x6 x3))) (and (or (or x5 x0) (or x1 x1)) (or (or x4 x4) (or x5 x1)))))) (or (or (or (not (or (or x6 x2) (or x3 x5))) (and (not (not x4)) (not (and x6 x1)))) (and (or (and (and x6 x6) (and x2 x3)) (not (or x3 x3))) (or (or (not x0) (or x3 x2)) (and (not x5) (and x5 x4))))) (and (not (and (or (or x0 x0) (not x6)) (and (not x3) (not x3)))) (not (not (and (and x0 x0) (not x0))))))) (not (or (and (not (not (not (or x1 x1))))  [...]
+(assert (and (or (and (and (or (not (and (not (and (and x1 x4) (and x1 x6))) (not (and (not x2) (and x1 x2))))) (not (or (or (or (or x3 x1) (or x5 x4)) (or (or x2 x4) (or x5 x2))) (not (and (or x3 x6) (not x0)))))) (or (or (and (not (or (not x5) (not x5))) (or (or (and x2 x2) (not x5)) (not (or x0 x5)))) (not (and (and (and x1 x3) (not x2)) (and (and x2 x1) (not x0))))) (and (not (or (and (not x2) (or x3 x2)) (and (not x3) (and x2 x5)))) (not (or (and (or x2 x2) (not x4)) (or (not x4) (n [...]
+(check-sat)
+(push 1)
+(assert (not (or (and (and (not (or (and (or x4 x2) (or x0 x4)) (and (or x5 x2) (or x0 x5)))) (and (not (or (not x4) (and x4 x5))) (or (or (or x4 x5) (not x5)) (and (not x4) (or x0 x6))))) (or (and (not (not (not x6))) (or (and (not x1) (or x4 x3)) (or (or x5 x2) (or x6 x6)))) (and (not (and (or x4 x6) (not x1))) (or (or (and x2 x4) (and x3 x3)) (and (or x5 x0) (and x4 x2)))))) (not (not (and (not (not (and x1 x3))) (or (and (or x6 x5) (not x5)) (not (or x6 x5)))))))))
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (and (not (or x6 x3)) (or (and x5 x4) (and x1 x0))))
+(assert (not (not (not x1))))
+(assert (and (not (not (or (and x3 x5) (and x6 x3)))) (and (and (not (not x4)) (or (or x5 x5) (or x4 x4))) (or (not (not x0)) (and (and x1 x3) (or x4 x6))))))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (and (or x2 x3) (or x1 x5)))
+(check-sat)
+(pop 1)
+(assert (and (or (or (or (or (and (or x1 x3) (and x2 x6)) (or (not x1) (not x1))) (or (not (and x6 x2)) (and (not x1) (or x1 x3)))) (and (and (or (and x3 x4) (not x5)) (and (or x6 x4) (and x6 x3))) (and (not (not x2)) (and (not x2) (or x2 x2))))) (and (and (not (not (and x0 x3))) (or (or (or x4 x4) (or x0 x1)) (or (not x3) (and x3 x5)))) (or (and (and (not x0) (and x4 x2)) (not (not x2))) (and (not (or x4 x1)) (not (and x1 x5)))))) (and (not (or (not (or (or x6 x6) (and x0 x4))) (and (an [...]
+(check-sat)
+(pop 1)
+(assert (not (and (not (and (and (or (and (not (not (and x0 x2))) (or (or (not x1) (and x6 x5)) (and (and x6 x0) (and x6 x4)))) (and (or (or (and x0 x0) (or x1 x5)) (not (or x5 x2))) (not (or (not x5) (or x1 x3))))) (not (not (not (or (or x4 x1) (or x0 x1)))))) (not (and (and (not (not (or x3 x3))) (or (and (not x3) (or x5 x6)) (and (not x5) (not x4)))) (and (not (not (and x1 x0))) (or (or (not x2) (and x3 x6)) (not (or x1 x0)))))))) (not (and (not (and (or (or (and (or x1 x3) (not x6))  [...]
+(check-sat)
+(pop 1)
+(assert (and (and (or (and (or (or (or (not (and (or x1 x0) (or x5 x0))) (and (not (not x2)) (not (or x4 x6)))) (or (not (or (or x4 x2) (not x0))) (not (or (not x1) (and x1 x3))))) (and (and (not (not (or x0 x6))) (or (and (and x5 x4) (not x3)) (not (and x3 x5)))) (not (and (or (or x0 x5) (or x3 x6)) (not (not x5)))))) (not (or (or (and (and (or x0 x5) (and x2 x3)) (not (not x1))) (not (not (and x0 x6)))) (or (and (and (and x4 x4) (not x0)) (not (not x3))) (or (and (not x0) (and x5 x0))  [...]
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_11.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_11.smt2
new file mode 100644
index 0000000..5307ec8
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_11.smt2
@@ -0,0 +1,77 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(declare-fun x5 () Bool)
+(assert (not (not (or (or (not (or (not (or (or (not x3) (or x3 x3)) (not (not x3)))) (and (not (and (and x2 x1) (not x3))) (and (or (or x3 x1) (not x5)) (or (not x3) (or x4 x0)))))) (and (not (or (not (and (and x3 x0) (and x4 x5))) (or (not (and x0 x0)) (and (and x5 x4) (not x3))))) (and (and (or (not (and x3 x0)) (or (not x2) (or x5 x1))) (not (and (and x2 x0) (or x5 x4)))) (not (or (not (and x2 x1)) (or (not x4) (and x3 x5))))))) (or (or (and (and (or (not (or x5 x0)) (or (not x2) (no [...]
+(check-sat)
+(push 1)
+(assert (not (not (not x1))))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (or (or (or (or (and (or (and (and (not (and x1 x4)) (and (not x1) (not x1))) (or (not (or x2 x4)) (or (not x5) (and x2 x4)))) (or (not (and (and x0 x2) (and x2 x3))) (or (and (not x1) (or x4 x3)) (or (not x4) (and x2 x0))))) (not (not (and (or (not x3) (and x5 x0)) (not (and x1 x4)))))) (not (and (not (not (and (or x1 x4) (not x5)))) (not (and (not (and x2 x5)) (not (or x1 x4))))))) (and (and (or (or (and (or (or x1 x4) (not x5)) (and (and x3 x1) (or x4 x2))) (not (or (or x4 x4) [...]
+(assert (not (and (and (and (not (or (not x3) (and x0 x2))) (and (not (not x5)) (not (not x1)))) (not (or (or (or x5 x1) (not x5)) (not (not x3))))) (and (not (and (or (or x2 x2) (and x5 x5)) (not (not x5)))) (not (not (not (and x4 x2))))))))
+(assert (not (or (not (not (and (and (not (and (and x3 x5) (or x4 x3))) (and (and (or x0 x1) (and x3 x1)) (and (not x0) (and x4 x3)))) (and (and (not (or x0 x4)) (or (not x3) (not x1))) (or (or (or x4 x5) (and x3 x4)) (or (and x5 x2) (and x4 x0))))))) (not (or (not (or (and (or (or x3 x4) (or x5 x2)) (not (or x1 x0))) (or (not (not x0)) (not (and x1 x4))))) (not (not (or (and (and x0 x2) (or x1 x1)) (not (not x5))))))))))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (not (and (or (or (or (not x0) (or x1 x4)) (not (not x4))) (and (and (or x0 x1) (not x1)) (or (and x4 x5) (and x4 x5)))) (or (and (and (or x3 x3) (or x4 x0)) (or (and x1 x2) (and x3 x2))) (or (not (or x0 x0)) (not (and x5 x0)))))))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (and (and (or (or x5 x1) (or x3 x0)) (and (and x2 x3) (or x3 x5))) (or (and (not x3) (or x0 x3)) (and (not x3) (or x4 x0)))))
+(assert (not (and (and (not x2) (or x0 x5)) (and (not x1) (or x3 x1)))))
+(assert (not (or (or x3 x4) (or x5 x5))))
+(assert (and (not (and (and (or (or (or (not (or x3 x3)) (and (not x4) (or x1 x0))) (and (or (not x4) (or x0 x5)) (and (not x2) (and x2 x3)))) (and (or (or (not x2) (and x4 x3)) (and (not x0) (not x0))) (or (and (and x1 x4) (not x1)) (and (and x2 x2) (or x4 x5))))) (and (not (and (and (and x5 x5) (and x5 x1)) (or (not x4) (not x0)))) (or (not (or (not x1) (not x1))) (or (and (not x0) (and x2 x4)) (or (and x5 x3) (and x2 x2)))))) (and (not (and (or (and (and x3 x5) (or x3 x3)) (or (and x5 [...]
+(assert (or (not (and (and (or (or (and (and (or (not x4) (not x0)) (or (or x2 x0) (not x2))) (not (and (not x3) (and x3 x3)))) (not (or (and (or x1 x4) (and x3 x2)) (and (or x4 x3) (and x4 x5))))) (not (and (or (or (or x3 x5) (or x5 x4)) (or (or x5 x1) (not x0))) (and (or (or x1 x5) (and x4 x1)) (and (or x3 x5) (not x5)))))) (and (and (or (and (and (not x3) (and x3 x2)) (or (or x3 x3) (and x5 x3))) (and (or (not x2) (not x4)) (and (and x2 x2) (and x1 x5)))) (and (not (and (not x5) (and  [...]
+(check-sat)
+(push 1)
+(assert (or (and (and (not (not (not (and (or (or x3 x0) (or x3 x1)) (not (not x2)))))) (not (not (or (and (or (and x4 x0) (not x4)) (not (or x4 x1))) (and (or (not x1) (or x3 x2)) (or (or x5 x1) (not x1))))))) (and (not (and (or (not (and (or x3 x1) (not x2))) (and (and (and x4 x5) (not x5)) (and (and x0 x0) (and x1 x2)))) (not (not (or (not x2) (and x3 x1)))))) (not (or (or (or (and (not x0) (and x4 x5)) (or (not x2) (and x2 x1))) (not (or (not x0) (not x0)))) (and (not (and (and x2 x0 [...]
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (or (and (not x3) (not x3)) (and (and x2 x3) (or x4 x1))))
+(assert (not (and (or (or (and (or (or (or (or x4 x0) (and x3 x0)) (or (or x3 x4) (not x4))) (or (or (and x2 x4) (and x4 x2)) (not (or x4 x0)))) (or (and (or (and x2 x4) (or x1 x0)) (and (not x1) (and x0 x5))) (or (and (not x4) (not x3)) (not (not x1))))) (not (or (and (and (or x3 x1) (or x2 x3)) (or (not x5) (and x4 x5))) (not (and (or x5 x2) (not x5)))))) (or (or (or (or (or (and x0 x5) (or x1 x4)) (not (and x1 x2))) (or (or (not x1) (or x4 x5)) (and (and x5 x0) (not x4)))) (or (or (or [...]
+(check-sat)
+(pop 1)
+(assert (or (and (and (and (not x1) (or x5 x5)) (and (or x2 x1) (not x0))) (and (not (or x1 x3)) (and (not x0) (or x3 x5)))) (or (or (and (or x0 x2) (not x1)) (and (and x3 x2) (or x0 x5))) (and (or (or x0 x0) (and x2 x5)) (or (or x0 x3) (not x1))))))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (and (not (and (or (not (not (or (not (not x5)) (and (not x5) (not x1))))) (and (not (or (or (or x0 x0) (not x5)) (not (or x5 x2)))) (or (or (not (or x3 x2)) (or (not x2) (or x5 x5))) (or (and (not x2) (and x0 x2)) (and (and x5 x5) (or x3 x4)))))) (not (not (or (not (not (and x2 x2))) (and (and (not x2) (or x5 x0)) (or (not x4) (and x5 x4)))))))) (or (and (and (not (not (or (and (or x0 x0) (or x4 x1)) (or (and x5 x4) (or x1 x2))))) (and (and (not (and (and x0 x0) (or x5 x3))) (or [...]
+(check-sat)
+(push 1)
+(assert (and (or (not (not (not (or (not x0) (and x3 x1))))) (or (not (not (or (not x2) (and x2 x3)))) (or (and (or (and x0 x3) (not x4)) (or (not x0) (not x1))) (or (and (or x4 x5) (and x0 x2)) (not (and x2 x5)))))) (not (not (not (and (and (not x1) (and x1 x0)) (not (and x2 x4))))))))
+(assert (not x0))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_12.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_12.smt2
new file mode 100644
index 0000000..172c3d4
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_12.smt2
@@ -0,0 +1,38 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(assert (not (and (not (and (or (not (or (not x0) (or x2 x2))) (or (or (or x2 x1) (or x1 x3)) (not (or x3 x2)))) (or (not (not (and x1 x2))) (and (not (not x2)) (and (or x0 x2) (or x0 x1)))))) (not (not (or (or (and (or x0 x1) (not x3)) (and (or x3 x3) (and x3 x1))) (not (or (or x0 x2) (or x2 x3)))))))))
+(assert (and (not (and (and (not (not (not x2))) (and (or (or x3 x0) (not x1)) (and (or x0 x0) (and x1 x1)))) (and (and (and (and x0 x3) (and x2 x1)) (or (not x3) (not x0))) (not (and (and x2 x0) (and x2 x1)))))) (and (or (or (and (not (or x0 x1)) (not (and x2 x3))) (and (not (not x0)) (or (or x3 x1) (or x1 x2)))) (or (or (or (not x0) (and x0 x1)) (and (and x2 x2) (or x3 x3))) (or (not (or x1 x1)) (and (and x0 x3) (and x3 x2))))) (or (not (not (not (and x3 x1)))) (or (and (not (and x0 x2 [...]
+(assert (not (and x0 x3)))
+(check-sat)
+(push 1)
+(assert (or (or (or x0 x1) (and x0 x1)) (or (and x0 x2) (not x1))))
+(assert (or (or (or (or (not (not (or (or (or x3 x2) (not x1)) (or (and x3 x2) (not x3))))) (not (and (not (and (or x1 x0) (or x0 x1))) (or (and (or x1 x3) (or x1 x1)) (and (and x0 x3) (and x2 x0)))))) (and (and (not (not (and (and x3 x3) (not x3)))) (not (or (or (and x0 x0) (not x2)) (not (and x1 x1))))) (not (or (and (or (or x1 x0) (or x2 x2)) (and (and x2 x2) (not x1))) (not (not (not x0))))))) (or (not (and (not (and (or (and x0 x0) (not x1)) (or (not x3) (or x0 x1)))) (not (and (and [...]
+(assert (or (not (or (not x1) (or x1 x1))) (and (not (or x0 x3)) (or (and x1 x3) (not x3)))))
+(assert (not (and (not (or (and (or x2 x1) (and x3 x0)) (and (not x1) (or x0 x3)))) (or (not (not (and x2 x3))) (and (and (and x0 x2) (not x0)) (or (and x0 x1) (not x0)))))))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (and (not (and x3 x2)) (or (and x2 x1) (not x0))))
+(assert (or (or (not (or (and (not x0) (not x0)) (not (and x0 x3)))) (not (or (and (and x3 x1) (or x0 x0)) (and (and x0 x3) (and x3 x3))))) (or (and (or (and (not x0) (or x1 x1)) (not (or x2 x0))) (not (or (and x0 x2) (and x0 x0)))) (not (and (or (or x2 x0) (and x2 x3)) (and (or x2 x0) (not x0)))))))
+(assert (not (not (or (or x0 x3) (or x1 x2)))))
+(assert (or (and (or (and x0 x0) (and x3 x0)) (not (and x0 x0))) (not (or (and x2 x2) (not x1)))))
+(check-sat)
+(pop 1)
+(assert (and (or (not (and x2 x2)) (and (and x2 x3) (not x3))) (and (not (or x0 x1)) (not (and x1 x2)))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_13.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_13.smt2
new file mode 100644
index 0000000..1752797
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_13.smt2
@@ -0,0 +1,24 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(assert (and (not (and (and (not (or (or (or x1 x2) (and x1 x2)) (and (and x2 x0) (not x2)))) (not (or (and (or x0 x2) (and x2 x1)) (not (or x1 x0))))) (not (and (not (not (and x1 x0))) (not (and (not x1) (or x1 x1))))))) (or (or (or (not (not (not (and x0 x0)))) (not (and (not (and x1 x2)) (not (not x2))))) (or (not (not (and (and x0 x2) (not x0)))) (and (and (not (not x2)) (not (and x0 x1))) (or (and (not x0) (and x1 x0)) (not (not x1)))))) (or (not (or (or (or (not x0) (and x0 x0)) (n [...]
+(check-sat)
+(push 1)
+(assert (and (or (not (not x2)) (and (not x2) (and x0 x0))) (and (not (and x1 x0)) (or (not x2) (or x0 x1)))))
+(assert (or (or x2 x2) (not x2)))
+(check-sat)
+(pop 1)
+(assert (or (and (not (not (and (and (or (not (and (not x2) (or x0 x2))) (not (or (or x0 x2) (not x1)))) (or (not (and (not x2) (and x2 x0))) (and (or (and x0 x0) (and x2 x2)) (not (not x1))))) (not (and (and (or (and x1 x1) (and x2 x0)) (and (and x1 x0) (or x1 x0))) (and (not (and x0 x0)) (or (and x0 x2) (and x0 x2)))))))) (or (not (not (not (and (not (and (and x0 x0) (or x1 x2))) (not (or (or x2 x1) (not x2))))))) (and (or (not (and (and (and (and x1 x0) (or x1 x1)) (not (or x2 x0))) ( [...]
+(assert (not x0))
+(check-sat)
+(push 1)
+(assert (not (or (or x2 x0) (and x1 x1))))
+(assert (or (or (not (and (or (not x0) (not x2)) (and (and x1 x1) (or x1 x0)))) (not (not (not (not x2))))) (and (not (or (and (not x1) (or x1 x1)) (not (not x1)))) (not (or (not (not x2)) (not (not x0)))))))
+(assert (not (and x0 x0)))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_14.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_14.smt2
new file mode 100644
index 0000000..47612e8
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_14.smt2
@@ -0,0 +1,35 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(declare-fun x5 () Bool)
+(declare-fun x6 () Bool)
+(declare-fun x7 () Bool)
+(check-sat)
+(push 1)
+(assert (not (not (or (and (not (and (or (not (or (not x4) (and x6 x0))) (or (and (and x4 x4) (not x1)) (not (not x0)))) (not (not (or (not x7) (or x1 x1)))))) (not (and (and (not (and (and x4 x3) (and x0 x4))) (and (not (and x5 x4)) (and (not x2) (or x5 x5)))) (not (not (not (not x3))))))) (not (not (and (or (not (not (and x7 x3))) (and (and (not x4) (or x3 x2)) (or (or x7 x0) (not x0)))) (not (not (or (and x7 x6) (or x1 x2)))))))))))
+(assert (not (or (or (and (or (or (not (and x2 x1)) (and (or x4 x1) (or x4 x0))) (and (and (not x3) (not x6)) (not (or x5 x6)))) (not (not (and (or x6 x5) (not x4))))) (and (not (not (or (and x7 x6) (not x3)))) (or (and (not (not x4)) (and (not x0) (or x7 x2))) (and (and (or x3 x3) (not x6)) (or (or x0 x6) (or x1 x4)))))) (and (or (and (or (or (and x5 x1) (and x5 x5)) (or (or x5 x3) (or x0 x3))) (not (or (and x5 x1) (and x7 x6)))) (not (and (and (and x1 x7) (and x5 x4)) (and (not x1) (or [...]
+(assert (or (not (or (and (and (and (and (not x2) (not x0)) (not (and x4 x5))) (and (or (not x7) (not x7)) (or (not x6) (or x4 x3)))) (or (or (not (not x1)) (or (not x5) (not x4))) (and (and (and x4 x4) (or x2 x1)) (and (not x7) (and x1 x2))))) (or (not (not (not (or x2 x7)))) (or (and (or (or x5 x2) (not x3)) (or (not x2) (and x6 x6))) (or (and (and x7 x3) (and x6 x2)) (not (not x0))))))) (and (and (or (and (or (or (or x5 x3) (or x3 x5)) (and (not x2) (or x0 x4))) (or (not (and x2 x7))  [...]
+(check-sat)
+(push 1)
+(assert (or (not (or (not (or (or x2 x0) (and x5 x6))) (and (not (and x5 x6)) (or (or x2 x3) (not x3))))) (and (not (or (not (or x7 x6)) (or (not x6) (or x7 x7)))) (or (or (and (or x5 x6) (or x7 x4)) (not (not x2))) (or (or (or x2 x0) (and x1 x6)) (and (and x2 x2) (not x4)))))))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (not (or (or (and x5 x3) (or x4 x4)) (and (not x4) (not x7)))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_15.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_15.smt2
new file mode 100644
index 0000000..4345c32
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_15.smt2
@@ -0,0 +1,30 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(declare-fun x5 () Bool)
+(declare-fun x6 () Bool)
+(declare-fun x7 () Bool)
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (or (not (or (or (or (or (or (or (and (not x3) (or x0 x1)) (and (and x3 x2) (not x7))) (and (not (or x3 x2)) (and (not x5) (or x1 x6)))) (and (and (or (and x4 x2) (or x4 x1)) (not (not x3))) (and (and (and x6 x5) (or x7 x4)) (not (or x3 x7))))) (or (or (or (or (and x3 x2) (or x6 x6)) (and (or x0 x2) (or x1 x0))) (or (or (or x1 x5) (and x6 x7)) (and (not x3) (not x5)))) (and (or (not (not x5)) (and (and x0 x2) (and x6 x4))) (not (or (or x0 x7) (not x0)))))) (and (or (and (not (not [...]
+(check-sat)
+(push 1)
+(assert (and (or (or (not (not (not x1))) (and (not (not x2)) (not (and x3 x2)))) (not (not (or (not x2) (and x5 x5))))) (and (not (and (or (or x1 x1) (not x3)) (and (or x0 x3) (not x2)))) (or (not (or (or x2 x3) (or x4 x1))) (or (and (not x6) (not x5)) (not (or x4 x1)))))))
+(assert (and (not (not (and (not (or x5 x6)) (or (and x7 x0) (not x2))))) (or (not (not (and (not x5) (not x7)))) (or (and (and (not x3) (or x0 x6)) (or (and x2 x7) (or x5 x0))) (and (and (or x4 x3) (or x7 x6)) (not (and x7 x4)))))))
+(assert (not x2))
+(assert (or (not (and (and (not (or (and (not (and (and x1 x6) (not x6))) (and (not (or x5 x5)) (not (and x2 x6)))) (and (and (not (not x0)) (and (and x5 x2) (or x5 x1))) (or (not (and x6 x3)) (not (or x1 x4)))))) (and (not (not (not (and (or x3 x4) (and x2 x7))))) (or (not (and (not (not x3)) (or (not x0) (not x2)))) (and (not (not (and x4 x1))) (and (or (not x2) (and x3 x3)) (not (or x7 x6))))))) (not (or (or (and (not (or (and x3 x6) (not x4))) (not (not (or x4 x2)))) (not (or (not (n [...]
+(check-sat)
+(pop 1)
+(assert (not (not (not x3))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_16.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_16.smt2
new file mode 100644
index 0000000..715b187
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_16.smt2
@@ -0,0 +1,47 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(assert (or (or (and (not (not (not x0))) (not (and (not x4) (not x1)))) (and (and (or (and x3 x1) (not x1)) (and (not x3) (and x3 x4))) (and (or (or x1 x4) (and x3 x2)) (and (and x2 x4) (or x1 x4))))) (not (or (or (and (and x4 x1) (or x4 x2)) (and (or x0 x3) (not x2))) (not (or (or x0 x0) (and x0 x2)))))))
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (not (or (and (not (or (or (and (or (or x2 x0) (not x4)) (not (not x2))) (and (not (not x0)) (not (and x2 x1)))) (and (or (or (and x2 x2) (or x0 x4)) (or (and x0 x2) (or x3 x2))) (or (and (and x1 x3) (and x0 x4)) (or (or x0 x4) (and x4 x0)))))) (or (or (or (and (not (not x1)) (and (or x0 x3) (and x2 x4))) (and (not (and x2 x1)) (and (not x0) (and x1 x3)))) (and (not (and (or x3 x4) (and x4 x3))) (or (or (not x4) (not x2)) (and (not x1) (or x0 x3))))) (or (or (not (and (not x2) (a [...]
+(assert (not (or (not (or (not (and (or (and (not (or x2 x1)) (and (and x3 x3) (and x0 x1))) (or (or (or x1 x4) (or x0 x0)) (not (and x4 x2)))) (and (not (or (and x0 x1) (not x4))) (and (and (not x2) (or x3 x1)) (and (or x3 x3) (and x0 x4)))))) (or (not (not (not (and (not x0) (not x4))))) (and (not (and (or (and x4 x0) (or x0 x2)) (or (not x0) (and x1 x2)))) (not (and (not (and x1 x1)) (not (and x1 x4)))))))) (not (and (and (not (and (not (or (not x0) (and x1 x2))) (not (not (and x1 x1) [...]
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (or (or (or (and x1 x2) (and x1 x2)) (and (or x3 x4) (and x1 x3))) (and (and (not x1) (or x4 x1)) (or (or x2 x2) (not x4)))))
+(assert (or (or (or (or (not (and (not (and (not (or x2 x0)) (not (or x1 x3)))) (not (not (and (or x4 x0) (not x1)))))) (not (not (or (not (or (not x3) (not x2))) (and (not (or x2 x1)) (and (not x2) (or x2 x2))))))) (not (not (and (and (or (or (not x0) (not x1)) (or (or x4 x3) (or x4 x2))) (and (or (and x0 x2) (and x4 x3)) (or (or x2 x4) (and x1 x4)))) (and (or (not (not x4)) (and (and x4 x4) (not x0))) (and (and (or x0 x2) (and x1 x1)) (and (and x2 x3) (or x2 x3)))))))) (or (and (and (a [...]
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (and (or (and (or (and (or (not (or (and (or x1 x4) (and x4 x1)) (and (not x2) (not x3)))) (and (and (not (or x4 x1)) (or (not x3) (and x2 x3))) (and (or (and x3 x3) (and x0 x2)) (or (and x1 x0) (or x2 x4))))) (not (not (or (or (or x2 x2) (and x3 x3)) (not (not x2)))))) (and (and (or (or (not (not x3)) (or (and x0 x0) (and x1 x1))) (or (and (and x3 x2) (and x0 x1)) (and (and x1 x2) (or x1 x4)))) (not (or (or (and x2 x2) (and x3 x2)) (and (not x2) (not x1))))) (and (not (and (or ( [...]
+(assert (or (not (not (and (not (not (or (and (or (and x3 x4) (not x4)) (or (and x2 x2) (not x0))) (or (not (or x3 x4)) (or (and x4 x1) (or x0 x2)))))) (and (not (and (or (not (not x0)) (not (or x3 x1))) (not (and (or x4 x2) (or x4 x2))))) (and (and (or (and (or x1 x2) (not x2)) (or (not x1) (and x1 x2))) (not (and (and x2 x1) (or x1 x4)))) (or (or (or (not x3) (or x4 x0)) (or (not x0) (and x3 x3))) (not (or (and x0 x1) (or x4 x0))))))))) (or (and (and (not (or (and (not (not (and x1 x2) [...]
+(check-sat)
+(push 1)
+(assert (or (or (and (and (and (and (or (or (not (and x4 x4)) (and (and x4 x0) (not x3))) (and (not (or x4 x0)) (not (or x0 x0)))) (not (or (not (and x3 x0)) (or (and x4 x0) (and x1 x3))))) (or (not (not (not (or x4 x1)))) (not (not (not (not x3)))))) (not (not (not (or (and (not x3) (or x1 x3)) (and (and x2 x3) (or x2 x2))))))) (not (not (or (not (and (not (or x4 x1)) (and (and x1 x4) (and x2 x2)))) (and (not (not (or x3 x2))) (not (not (not x4)))))))) (or (or (and (or (not (not (not (o [...]
+(assert (or (and (not (not (or (not (and x1 x3)) (not (not x3))))) (not (not (or (and (or x4 x0) (not x0)) (and (and x0 x0) (and x4 x1)))))) (not (and (and (not (and (or x2 x0) (or x0 x2))) (or (not (not x3)) (and (and x2 x1) (and x1 x3)))) (not (and (not (or x4 x0)) (or (not x2) (not x1))))))))
+(assert (or (and (not (not (and (and (and (not x0) (and x2 x3)) (or (or x1 x0) (and x4 x2))) (or (and (or x1 x0) (and x2 x4)) (or (and x0 x3) (not x4)))))) (or (and (not (not (and (not x2) (not x4)))) (or (or (or (and x0 x2) (and x4 x4)) (not (or x2 x4))) (and (not (and x0 x4)) (or (or x0 x2) (or x0 x2))))) (or (and (not (or (or x1 x1) (and x2 x0))) (not (and (not x2) (or x2 x2)))) (or (or (not (and x4 x4)) (or (and x0 x3) (not x1))) (and (not (not x4)) (or (or x0 x3) (not x1))))))) (and [...]
+(assert (or (and (or (or (and x2 x2) (or x1 x2)) (or (or x2 x3) (not x0))) (not (not (not x3)))) (or (and (and (and x3 x4) (or x4 x4)) (and (or x0 x2) (and x2 x3))) (and (or (and x4 x4) (and x2 x1)) (or (not x3) (or x4 x4))))))
+(check-sat)
+(pop 1)
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_18.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_18.smt2
new file mode 100644
index 0000000..90a9f23
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_18.smt2
@@ -0,0 +1,38 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(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)
+(assert (or (not (and (or (and (and (or (or (or (and x3 x6) (not x8)) (or (or x3 x0) (or x5 x8))) (and (and (or x0 x5) (not x0)) (not (not x4)))) (not (and (and (or x8 x3) (and x6 x0)) (or (and x7 x3) (and x5 x0))))) (not (not (and (and (and x2 x5) (not x0)) (not (not x1)))))) (not (not (or (not (or (and x3 x3) (not x8))) (and (not (or x0 x1)) (or (not x7) (and x4 x1))))))) (not (not (or (not (not (or (not x0) (or x3 x3)))) (not (not (or (not x6) (and x6 x0))))))))) (or (not (and (and (o [...]
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (or (not (or x1 x2)) (and (or x3 x3) (or x1 x0))))
+(check-sat)
+(pop 1)
+(assert (or (not (and (and x1 x3) (not x4))) (or (not (or x0 x0)) (or (and x1 x8) (not x0)))))
+(assert (or (not x7) (and x1 x7)))
+(assert (and (or (not (or (not x4) (or x3 x6))) (and (and (and x1 x1) (not x2)) (not (and x8 x5)))) (and (and (or (not x7) (and x0 x8)) (and (or x2 x5) (or x5 x4))) (and (or (and x5 x7) (not x6)) (or (and x5 x2) (or x8 x2))))))
+(assert (or (and (or (or (or (not x4) (or x6 x7)) (not (or x3 x4))) (and (and (or x8 x3) (not x7)) (and (not x5) (or x8 x3)))) (or (and (or (or x3 x2) (and x0 x2)) (and (not x7) (and x8 x6))) (and (not (or x7 x7)) (or (or x8 x2) (not x6))))) (not (not (and (and (and x7 x7) (not x0)) (and (not x7) (not x2)))))))
+(check-sat)
+(push 1)
+(assert (and x0 x5))
+(check-sat)
+(pop 1)
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_19.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_19.smt2
new file mode 100644
index 0000000..cbfda64
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_19.smt2
@@ -0,0 +1,44 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (or (or (not (and (not (or (or (and (not (and x0 x3)) (not (not x1))) (or (not (and x4 x4)) (or (not x4) (not x4)))) (or (not (or (or x4 x0) (and x4 x2))) (not (or (and x4 x0) (or x1 x3)))))) (not (or (and (or (or (or x4 x2) (and x3 x2)) (or (not x3) (or x3 x4))) (or (not (or x2 x2)) (and (or x1 x1) (not x4)))) (or (and (not (or x0 x4)) (and (or x0 x3) (not x0))) (not (and (and x1 x2) (and x1 x4)))))))) (not (and (not (and (or (and (not (or x0 x4)) (or (and x1 x4) (and x3 x3))) ( [...]
+(assert (or (or (or (and x2 x1) (and x4 x4)) (or (or x1 x4) (and x2 x3))) (not (and (and x3 x4) (not x0)))))
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (and (not (and (not (and (not (or (or x3 x0) (and x0 x2))) (not (and (and x2 x0) (not x3))))) (and (or (or (not (and x3 x1)) (not (and x4 x4))) (or (or (or x0 x3) (or x4 x4)) (not (not x3)))) (not (or (not (not x0)) (and (or x1 x0) (and x3 x2))))))) (not (and (and (and (or (or (or x2 x1) (and x0 x1)) (and (or x3 x0) (or x0 x0))) (or (and (and x3 x1) (or x3 x4)) (not (not x4)))) (not (and (or (and x2 x1) (and x4 x0)) (not (not x0))))) (and (and (or (or (and x3 x3) (or x1 x4)) (and [...]
+(assert (not (not (not (not (and (or (not (or (and (not x4) (not x2)) (and (not x4) (not x1)))) (not (and (and (and x2 x2) (and x4 x3)) (not (and x1 x0))))) (not (or (and (not (and x3 x2)) (not (not x2))) (not (not (not x2)))))))))))
+(check-sat)
+(push 1)
+(assert (or (or (or (or (not x4) (not x1)) (not (not x1))) (and (and (and x4 x1) (and x4 x4)) (and (and x4 x0) (or x0 x2)))) (not (and (not (and x3 x0)) (and (not x2) (or x1 x0))))))
+(check-sat)
+(pop 1)
+(assert (not (or (not (not x3)) (or (not x2) (not x4)))))
+(assert (and (or x3 x4) (and x4 x0)))
+(assert (and (not (not (not (or (or (or (and (and (or x2 x3) (or x3 x1)) (and (or x0 x3) (and x4 x4))) (and (not (and x2 x4)) (or (and x4 x0) (or x4 x3)))) (not (or (and (and x0 x4) (not x4)) (not (or x3 x4))))) (and (and (or (not (and x1 x4)) (or (not x1) (and x4 x2))) (not (or (or x1 x2) (and x4 x3)))) (not (or (or (not x2) (not x4)) (and (or x1 x3) (not x3))))))))) (not (or (and (not (and (and (and (not (and x3 x3)) (not (and x1 x1))) (not (or (not x4) (or x2 x1)))) (and (not (or (not [...]
+(assert (or (not (and (and (or (and x3 x4) (not x3)) (not (or x1 x0))) (and (and (or x3 x2) (or x2 x1)) (and (and x0 x1) (and x0 x2))))) (not (not (or (not (not x1)) (or (or x1 x3) (or x1 x4)))))))
+(check-sat)
+(pop 1)
+(assert (not (or x1 x2)))
+(assert (or (and (or (or x2 x0) (not x4)) (or (not x4) (or x2 x2))) (not (not (or x2 x3)))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_2.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_2.smt2
new file mode 100644
index 0000000..f781273
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_2.smt2
@@ -0,0 +1,16 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(assert (or (not (or (and (or (and (or x1 x0) (not x1)) (and (not x0) (not x0))) (and (not (not x1)) (not (or x1 x1)))) (and (and (or (or x0 x0) (not x1)) (and (not x0) (not x1))) (not (or (and x1 x1) (and x0 x1)))))) (or (not (and (or (not (and x1 x1)) (not (and x1 x0))) (not (not (and x0 x1))))) (not (or (and (and (and x0 x1) (and x0 x0)) (and (or x0 x1) (and x0 x0))) (not (not (and x0 x0))))))))
+(check-sat)
+(push 1)
+(assert (and (or (and (or (or (not (or (and (and (not x1) (and x0 x0)) (or (or x0 x1) (and x1 x0))) (and (and (or x1 x1) (or x1 x0)) (not (or x0 x0))))) (and (and (or (not (and x1 x0)) (and (not x0) (or x1 x0))) (and (not (or x0 x1)) (not (and x0 x1)))) (not (not (and (and x0 x0) (not x0)))))) (and (and (not (not (or (and x0 x0) (not x1)))) (and (or (and (and x1 x1) (not x0)) (not (and x0 x1))) (or (and (or x1 x1) (and x0 x1)) (not (not x1))))) (and (not (or (or (not x1) (or x0 x1)) (and [...]
+(assert (and (or (and (or (or (not (and x0 x1)) (not (or x0 x1))) (not (and (and x1 x1) (or x1 x1)))) (or (and (or (not x0) (or x0 x0)) (or (and x1 x1) (not x1))) (or (not (and x1 x0)) (and (and x0 x0) (or x0 x0))))) (not (or (or (not (and x1 x1)) (and (or x1 x0) (or x1 x0))) (not (or (or x0 x1) (and x1 x0)))))) (or (and (or (not (not (and x0 x0))) (and (and (or x0 x0) (and x1 x1)) (or (or x0 x0) (or x1 x0)))) (or (not (and (not x1) (or x1 x1))) (and (or (and x1 x0) (or x1 x0)) (not (or  [...]
+(check-sat)
+(pop 1)
+(assert (not (not (not (or x0 x1)))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_20.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_20.smt2
new file mode 100644
index 0000000..b37d6c0
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_20.smt2
@@ -0,0 +1,52 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(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)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (not (and x7 x7)))
+(check-sat)
+(push 1)
+(assert (or (or x0 x1) (not x7)))
+(assert (not (and x6 x9)))
+(assert (and (and (not (or x7 x5)) (or (or x3 x8) (or x5 x8))) (or (or (or x1 x5) (and x3 x6)) (or (and x2 x5) (or x1 x1)))))
+(assert (or (not (or (not (not (not x9))) (and (or (and x2 x6) (and x2 x4)) (not (or x8 x2))))) (not (or (and (and (not x2) (not x3)) (and (or x0 x0) (and x7 x5))) (not (not (or x1 x9)))))))
+(assert (or (or (not (or (and (not (and (or (or x6 x6) (and x0 x2)) (or (not x5) (not x3)))) (not (and (or (and x1 x2) (not x1)) (not (not x3))))) (or (not (not (or (or x9 x0) (not x6)))) (and (or (and (and x2 x6) (not x4)) (not (not x9))) (not (or (not x7) (or x4 x9))))))) (and (not (and (and (or (or (and x1 x2) (and x1 x5)) (and (not x7) (or x5 x1))) (or (not (and x0 x1)) (or (not x6) (not x1)))) (and (or (not (not x3)) (or (not x1) (not x2))) (or (and (and x4 x6) (not x4)) (and (or x1 [...]
+(check-sat)
+(pop 1)
+(assert (or (not (or (and (or (not (and (or x8 x0) (and x5 x2))) (not (not (or x6 x0)))) (not (and (or (or x6 x9) (and x5 x7)) (and (or x1 x7) (and x0 x0))))) (or (and (and (not (not x1)) (not (and x8 x5))) (and (and (and x5 x2) (and x7 x1)) (not (and x0 x0)))) (or (not (and (and x3 x5) (not x3))) (not (or (and x1 x0) (and x2 x4))))))) (not (and (and (and (not (or (not x4) (or x3 x7))) (not (not (not x3)))) (or (not (not (and x2 x1))) (and (or (not x6) (and x0 x8)) (not (not x3))))) (or  [...]
+(check-sat)
+(push 1)
+(assert (or (and (or (and (or (or (and (not x5) (not x9)) (or (and x3 x6) (and x3 x4))) (not (or (not x5) (or x6 x4)))) (and (and (and (not x4) (not x1)) (not (and x6 x2))) (and (or (not x4) (not x8)) (or (and x1 x3) (not x6))))) (not (not (and (or (not x8) (and x9 x1)) (and (not x3) (or x9 x4)))))) (not (and (or (not (or (or x1 x8) (or x9 x5))) (not (not (or x8 x8)))) (and (not (not (and x2 x5))) (or (or (not x6) (or x1 x2)) (or (not x0) (and x8 x4))))))) (and (or (or (and (and (not (an [...]
+(assert (and (not (and (and (or x2 x3) (or x1 x6)) (and (and x3 x6) (or x0 x7)))) (not (or (or (or x4 x0) (and x3 x4)) (and (not x6) (or x5 x8))))))
+(check-sat)
+(push 1)
+(assert (not (and (and (and x4 x6) (or x9 x4)) (or (and x1 x9) (not x1)))))
+(check-sat)
+(push 1)
+(assert (or (not (and (or (and (not x2) (not x5)) (not (and x0 x5))) (not (and (and x2 x9) (and x2 x3))))) (not (not (and (not (or x7 x9)) (and (and x7 x4) (or x8 x3)))))))
+(check-sat)
+(pop 1)
+(assert (not (or x0 x0)))
+(assert (not (not (or (or (and (and (not (or (and (not x0) (not x1)) (and (and x4 x9) (and x3 x9)))) (not (or (not (or x9 x3)) (and (and x4 x2) (not x7))))) (and (not (and (or (not x1) (and x9 x5)) (not (or x9 x3)))) (and (or (and (or x6 x1) (or x6 x6)) (or (not x0) (not x0))) (or (and (not x3) (and x5 x7)) (not (and x9 x7)))))) (not (not (or (not (or (and x1 x0) (not x5))) (or (and (or x5 x5) (and x5 x7)) (and (and x1 x7) (and x4 x6))))))) (and (not (not (or (or (or (or x9 x0) (or x7 x3 [...]
+(assert (and (or (and (or (and (not (and x3 x6)) (or (and x1 x3) (not x2))) (and (not (not x7)) (and (not x1) (not x5)))) (not (not (not (or x6 x5))))) (or (and (or (not (and x2 x0)) (and (or x6 x8) (and x9 x2))) (or (not (and x7 x3)) (and (not x3) (or x7 x0)))) (not (or (not (not x2)) (or (or x3 x7) (not x9)))))) (and (not (or (and (not (or x9 x3)) (or (not x6) (and x1 x2))) (and (or (or x2 x3) (and x6 x7)) (and (and x2 x8) (and x5 x7))))) (not (or (not (and (not x0) (and x8 x1))) (not  [...]
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_21.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_21.smt2
new file mode 100644
index 0000000..a86c1f8
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_21.smt2
@@ -0,0 +1,29 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(assert (or (or (and (not (not (and (and x1 x3) (or x3 x1)))) (or (not (and (or x2 x0) (and x0 x1))) (or (not (or x2 x1)) (or (and x1 x3) (not x3))))) (not (not (or (or (and x3 x1) (not x0)) (and (and x1 x1) (or x0 x3)))))) (and (not (and (and (not (and x1 x3)) (or (or x0 x2) (not x2))) (or (or (or x0 x3) (and x3 x0)) (or (or x0 x3) (and x1 x0))))) (or (not (or (not (and x3 x1)) (and (and x0 x0) (and x1 x2)))) (not (or (or (not x0) (and x0 x2)) (and (or x0 x0) (and x3 x1))))))))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (not (not (and x2 x0))))
+(check-sat)
+(pop 1)
+(assert (not (not (not x1))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_22.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_22.smt2
new file mode 100644
index 0000000..9a67f67
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_22.smt2
@@ -0,0 +1,40 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(check-sat)
+(push 1)
+(assert (or (not (or (and x1 x0) (or x1 x0))) (not (not (not x0)))))
+(check-sat)
+(push 1)
+(assert (or (not (or (and (or (or (and (or (not x0) (not x0)) (not (not x0))) (not (not (and x0 x0)))) (and (or (or (and x0 x0) (and x1 x0)) (not (or x1 x0))) (and (and (and x1 x0) (and x0 x0)) (and (not x0) (or x0 x1))))) (and (and (and (or (or x1 x0) (not x1)) (and (or x1 x0) (or x1 x1))) (and (and (not x1) (and x0 x0)) (and (or x0 x0) (not x1)))) (not (not (not (or x0 x1)))))) (and (not (and (and (or (and x0 x1) (not x0)) (or (and x1 x1) (or x0 x0))) (and (or (or x1 x1) (not x0)) (and [...]
+(check-sat)
+(push 1)
+(assert (and (not x0) (or x1 x0)))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (not (not (not (and x1 x1)))))
+(check-sat)
+(pop 1)
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_23.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_23.smt2
new file mode 100644
index 0000000..22ed7df
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_23.smt2
@@ -0,0 +1,41 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(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)
+(check-sat)
+(push 1)
+(assert (or x1 x3))
+(assert (or (or x5 x0) (not x0)))
+(check-sat)
+(push 1)
+(assert (and (not (or (or (not (or (or (or (and (not x2) (not x0)) (or (and x1 x0) (not x3))) (not (or (and x2 x8) (and x6 x6)))) (or (not (not (not x4))) (and (or (and x1 x1) (not x1)) (or (not x1) (not x6)))))) (not (or (and (or (and (not x4) (and x0 x6)) (and (not x1) (or x8 x1))) (not (not (not x0)))) (not (and (not (not x4)) (and (not x3) (and x2 x0))))))) (or (and (or (and (not (or (not x7) (and x1 x2))) (and (not (not x1)) (and (not x1) (or x3 x2)))) (or (or (and (and x2 x0) (or x [...]
+(check-sat)
+(push 1)
+(assert (or (or x5 x6) (not x3)))
+(assert (or (and (not (and (not (or (not (or x1 x5)) (or (and x2 x4) (and x1 x1)))) (and (or (and (or x5 x1) (and x2 x6)) (not (or x7 x6))) (or (not (and x7 x3)) (or (and x3 x7) (or x8 x4)))))) (and (or (and (or (not (not x6)) (or (and x6 x0) (not x7))) (or (not (not x0)) (or (not x8) (or x5 x6)))) (and (or (not (or x5 x2)) (not (or x8 x6))) (and (not (or x5 x2)) (and (and x7 x1) (and x3 x1))))) (and (not (not (or (or x8 x4) (not x3)))) (not (not (or (or x8 x2) (and x0 x8))))))) (and (no [...]
+(check-sat)
+(push 1)
+(assert (or (or (not x6) (or x4 x3)) (or (or x8 x6) (not x4))))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (or (or (or (and (or (and (not (not (and (and x6 x0) (not x1)))) (not (or (and (and x4 x3) (and x1 x0)) (not (not x7))))) (and (not (not (and (and x3 x7) (or x5 x8)))) (and (not (and (or x4 x0) (or x1 x8))) (or (and (and x8 x6) (and x4 x7)) (not (or x1 x4)))))) (not (not (or (and (or (and x6 x0) (and x6 x3)) (or (not x3) (not x6))) (not (or (or x3 x5) (not x2))))))) (or (and (and (and (and (not (and x2 x4)) (or (not x3) (and x1 x8))) (or (or (not x6) (and x2 x7)) (and (and x0 x2) [...]
+(check-sat)
+(pop 1)
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_24.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_24.smt2
new file mode 100644
index 0000000..edff03a
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_24.smt2
@@ -0,0 +1,42 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(declare-fun x5 () Bool)
+(declare-fun x6 () Bool)
+(assert (or (or x1 x1) (not x4)))
+(assert (not (and (or (not (or (and (and x2 x0) (and x1 x4)) (and (or x4 x1) (and x2 x6)))) (and (or (not (and x4 x2)) (or (and x4 x3) (not x3))) (or (or (not x0) (or x2 x2)) (not (or x5 x6))))) (not (not (not (or (or x5 x6) (or x0 x3))))))))
+(check-sat)
+(push 1)
+(assert (not (not (or (not x4) (not x6)))))
+(assert (not (and (not (or (and (and (or (not (or x3 x4)) (or (and x0 x3) (or x3 x3))) (and (or (and x2 x1) (or x2 x4)) (and (not x2) (or x6 x2)))) (not (not (and (or x0 x1) (and x6 x4))))) (and (or (and (and (not x3) (not x2)) (or (or x3 x0) (and x4 x0))) (and (and (and x5 x0) (not x6)) (not (not x0)))) (or (and (not (and x2 x4)) (not (or x0 x2))) (not (not (and x6 x3))))))) (and (or (or (or (or (not (or x4 x1)) (not (and x6 x4))) (and (and (or x3 x0) (and x3 x2)) (or (or x6 x6) (and x5 [...]
+(assert (or (not (not (and (not (and (and (not (or x1 x2)) (and (not x6) (or x3 x5))) (and (not (or x0 x2)) (not (or x4 x1))))) (or (or (not (not (and x4 x6))) (or (and (or x6 x4) (or x2 x3)) (or (and x6 x6) (not x3)))) (not (and (and (or x1 x3) (or x3 x0)) (or (not x2) (not x4)))))))) (not (or (not (and (not (or (or (not x6) (and x0 x1)) (and (or x5 x0) (and x0 x6)))) (not (not (and (and x5 x6) (and x4 x5)))))) (not (and (not (or (and (not x6) (or x1 x5)) (or (or x5 x6) (and x3 x6)))) ( [...]
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (and (or (not (or (or (and (not (not (or x4 x6))) (not (not (or x6 x1)))) (or (not (or (and x6 x5) (or x4 x1))) (or (or (or x3 x4) (not x4)) (not (not x3))))) (or (or (and (or (and x3 x0) (and x2 x1)) (or (not x4) (or x4 x1))) (and (and (or x1 x2) (and x6 x6)) (not (or x3 x5)))) (or (and (and (and x5 x5) (not x3)) (not (or x0 x0))) (or (or (or x4 x2) (or x5 x1)) (and (or x1 x2) (not x0))))))) (or (and (not (not (and (or (and x6 x2) (and x2 x4)) (or (and x2 x1) (and x1 x1))))) (an [...]
+(check-sat)
+(push 1)
+(assert (not (not (and x3 x3))))
+(check-sat)
+(pop 1)
+(assert (not (or x4 x2)))
+(assert (and (not (and x3 x3)) (or (not x2) (or x4 x2))))
+(assert (and (or x0 x1) (or x2 x5)))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_25.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_25.smt2
new file mode 100644
index 0000000..8ec42e5
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_25.smt2
@@ -0,0 +1,79 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(declare-fun x5 () Bool)
+(declare-fun x6 () Bool)
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (or (not (and (and (and (and (not (or (or x2 x3) (and x5 x1))) (or (or (and x5 x2) (or x6 x0)) (not (and x3 x5)))) (and (and (and (and x2 x4) (and x4 x5)) (or (not x6) (and x6 x6))) (or (and (not x6) (and x0 x6)) (not (not x0))))) (or (or (and (and (not x3) (not x4)) (or (and x4 x6) (or x1 x5))) (and (or (not x2) (and x1 x3)) (or (and x2 x4) (or x6 x4)))) (and (or (not (not x0)) (or (and x1 x3) (or x3 x4))) (or (and (not x2) (not x3)) (or (and x6 x3) (or x0 x2)))))) (or (and (not [...]
+(assert (and (and (not (not x1)) (not (or x2 x0))) (and (and (not x4) (and x3 x3)) (or (not x4) (and x6 x4)))))
+(assert (or (or (or (or (and x6 x0) (not x6)) (and (or x5 x0) (or x0 x6))) (not (not (or x0 x0)))) (or (or (or (not x3) (not x1)) (and (not x2) (and x5 x4))) (not (and (not x5) (not x6))))))
+(assert (and (or (and (not (and x0 x2)) (or (not x0) (or x6 x2))) (or (not (and x2 x0)) (and (not x5) (not x4)))) (not (and (or (or x2 x5) (not x2)) (not (and x0 x1))))))
+(assert (and (or (and x4 x5) (and x4 x4)) (or (not x4) (or x4 x0))))
+(assert (and x2 x6))
+(assert (or (or (and (or x5 x6) (or x6 x4)) (or (not x2) (and x3 x0))) (not (or (and x1 x6) (not x2)))))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(pop 1)
+(assert (or (and (not (and (and (not (or (or x2 x3) (and x1 x6))) (and (and (and x2 x1) (and x2 x4)) (not (or x2 x1)))) (or (not (not (or x4 x6))) (or (or (or x1 x6) (or x4 x4)) (or (or x5 x4) (and x4 x5)))))) (or (and (not (not (or (and x0 x2) (and x6 x6)))) (and (and (or (or x3 x2) (and x4 x2)) (or (not x6) (not x2))) (not (not (not x4))))) (and (or (and (not (or x1 x6)) (or (and x6 x0) (or x6 x1))) (and (and (and x0 x0) (not x3)) (or (not x2) (not x5)))) (or (not (not (or x6 x2))) (or [...]
+(check-sat)
+(push 1)
+(assert (and (and (or (and (or (or (not x2) (or x6 x4)) (not (not x4))) (or (not (or x3 x0)) (or (and x5 x6) (or x3 x2)))) (and (not (and (or x1 x5) (and x5 x6))) (or (and (or x2 x4) (or x4 x2)) (or (or x6 x6) (and x2 x6))))) (not (not (or (or (not x4) (and x5 x3)) (and (not x2) (and x4 x0)))))) (not (and (not (and (and (not x6) (not x2)) (not (or x6 x5)))) (not (or (not (and x2 x5)) (not (not x0))))))))
+(assert (not x2))
+(assert (and (not (and (and (and (or (not (or (not x3) (not x0))) (and (or (and x4 x0) (not x0)) (not (not x3)))) (not (not (or (and x2 x4) (and x0 x0))))) (not (or (and (or (not x4) (and x5 x1)) (or (or x1 x2) (and x4 x0))) (and (not (and x1 x5)) (and (and x5 x4) (or x1 x6)))))) (and (or (or (or (and (not x3) (and x0 x3)) (and (not x4) (not x1))) (not (or (or x0 x0) (or x0 x1)))) (or (and (and (and x3 x0) (or x2 x6)) (and (or x4 x5) (not x0))) (not (or (or x6 x3) (not x0))))) (not (and  [...]
+(assert (and (and (and (or (and (and (or (not x6) (and x5 x4)) (or (and x5 x4) (or x0 x2))) (and (and (and x6 x3) (not x4)) (and (not x2) (or x3 x1)))) (and (not (or (or x4 x4) (or x2 x4))) (or (or (and x2 x2) (or x2 x1)) (or (not x1) (and x5 x4))))) (or (and (not (or (not x5) (not x2))) (not (and (not x2) (and x4 x6)))) (or (not (and (and x2 x1) (or x3 x1))) (and (not (not x2)) (and (and x4 x5) (not x3)))))) (or (not (not (not (not (not x5))))) (and (not (or (or (or x4 x3) (and x0 x6))  [...]
+(check-sat)
+(pop 1)
+(assert (or (not (or (not (and (or (or (and x3 x5) (not x5)) (and (and x5 x2) (not x0))) (not (not (or x6 x5))))) (or (or (not (not (and x0 x6))) (and (not (not x6)) (or (and x6 x5) (or x0 x3)))) (or (and (not (not x4)) (and (and x2 x3) (and x4 x2))) (and (or (or x3 x5) (not x1)) (and (or x5 x2) (or x6 x4))))))) (and (not (and (or (or (and (and x6 x0) (and x1 x2)) (and (and x0 x3) (or x6 x4))) (and (not (or x4 x1)) (and (and x0 x4) (not x4)))) (or (or (and (not x0) (and x4 x1)) (not (or  [...]
+(assert (and (or (or (and x3 x2) (and x1 x6)) (or (or x6 x3) (not x0))) (or (not (and x5 x5)) (or (not x1) (or x3 x6)))))
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (and (or (not (not (and (and (not (and x2 x5)) (and (or x1 x2) (not x1))) (not (or (or x0 x2) (not x6)))))) (not (or (or (and (or (not x1) (not x6)) (and (not x3) (or x6 x0))) (and (not (or x4 x1)) (or (or x1 x6) (or x1 x2)))) (and (not (not (not x0))) (or (not (and x2 x6)) (not (and x5 x3))))))) (not (and (and (or (not (and (or x5 x4) (and x1 x1))) (and (or (or x1 x1) (not x3)) (and (and x3 x6) (and x6 x1)))) (and (or (or (or x5 x4) (not x2)) (or (not x2) (or x2 x4))) (not (and  [...]
+(assert (not (not (not (or (or (or (not x4) (or x1 x4)) (or (and x2 x3) (or x4 x5))) (and (not (not x5)) (and (and x0 x6) (and x5 x1))))))))
+(check-sat)
+(pop 1)
+(assert (and (and x2 x0) (not x4)))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (or (or (or (or (not (or (and (and x5 x5) (not x5)) (or (or x1 x2) (not x1)))) (not (and (and (and x6 x5) (or x6 x5)) (and (or x6 x0) (and x6 x4))))) (and (or (or (or (not x3) (or x0 x1)) (or (or x0 x4) (or x6 x4))) (and (and (and x3 x4) (and x0 x0)) (or (and x6 x3) (or x3 x0)))) (not (or (and (or x1 x1) (or x1 x0)) (and (or x0 x3) (and x0 x5)))))) (or (or (and (and (not (not x5)) (and (or x4 x0) (or x3 x2))) (and (and (or x1 x2) (and x0 x2)) (and (and x4 x6) (and x0 x4)))) (or ( [...]
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (and (or (or x4 x3) (and x5 x3)) (and (and x3 x2) (not x1))))
+(check-sat)
+(push 1)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_26.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_26.smt2
new file mode 100644
index 0000000..d4fd2c7
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_26.smt2
@@ -0,0 +1,49 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(declare-fun x5 () Bool)
+(declare-fun x6 () Bool)
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (or (or x4 x2) (or x4 x2)))
+(assert (not (not (or (not (or (and x3 x5) (not x6))) (or (or (or x1 x5) (or x0 x3)) (not (or x3 x6)))))))
+(assert (or (and (and (or (and x1 x6) (or x2 x4)) (and (and x1 x0) (or x1 x4))) (and (not (and x3 x6)) (not (not x0)))) (and (not (not (and x4 x0))) (not (or (not x6) (and x6 x5))))))
+(assert (or (and (and (and (or (not (and (or (or (not x4) (not x3)) (not (and x3 x3))) (and (not (not x3)) (not (and x0 x2))))) (and (and (not (and (and x1 x0) (or x2 x2))) (or (or (or x3 x4) (not x0)) (not (not x5)))) (or (not (and (not x3) (or x4 x4))) (or (not (and x0 x2)) (not (or x3 x0)))))) (or (or (or (not (and (and x0 x6) (not x3))) (or (not (not x3)) (and (not x3) (or x5 x0)))) (or (and (or (or x0 x5) (and x6 x3)) (and (and x3 x6) (not x3))) (and (or (not x1) (or x4 x5)) (and (o [...]
+(check-sat)
+(push 1)
+(assert (and (and (or (not (or (not x5) (and x3 x3))) (or (or (not x4) (or x5 x2)) (not (or x2 x0)))) (and (not (not (not x4))) (and (and (not x3) (or x5 x0)) (not (or x3 x5))))) (and (or (or (not (and x6 x4)) (or (and x2 x6) (and x2 x1))) (or (not (not x4)) (not (and x6 x3)))) (or (and (not (and x3 x3)) (not (or x0 x2))) (or (not (or x5 x4)) (or (and x2 x2) (and x1 x5)))))))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (not (not (or (or (or (and (or (not (or x1 x0)) (not (or x2 x0))) (not (and (and x4 x3) (or x0 x6)))) (and (and (and (or x4 x1) (or x1 x2)) (or (not x1) (not x6))) (not (and (not x4) (and x6 x1))))) (or (and (and (not (not x6)) (or (and x6 x3) (not x1))) (or (or (and x5 x6) (or x5 x5)) (or (or x4 x6) (or x5 x6)))) (and (not (or (or x5 x2) (not x3))) (or (or (and x6 x6) (or x0 x5)) (or (and x1 x2) (and x6 x5)))))) (and (and (and (or (or (and x6 x2) (or x3 x5)) (and (or x6 x1) (and [...]
+(assert (or (or (or (and x2 x5) (and x5 x3)) (not (not x5))) (not (not (or x6 x2)))))
+(assert (not x3))
+(check-sat)
+(pop 1)
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_27.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_27.smt2
new file mode 100644
index 0000000..828440e
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_27.smt2
@@ -0,0 +1,45 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(assert (not (and (or (and (and (and (or (not (and (not x4) (and x2 x4))) (not (or (or x2 x2) (or x0 x2)))) (not (and (or (or x2 x3) (or x0 x2)) (and (not x1) (not x1))))) (not (or (and (and (or x0 x4) (or x1 x1)) (and (and x3 x0) (not x1))) (or (not (and x3 x3)) (not (and x3 x1)))))) (or (not (not (not (not (and x3 x2))))) (not (or (or (not (or x0 x3)) (and (or x2 x2) (and x1 x0))) (not (and (and x2 x2) (or x0 x0))))))) (and (not (or (not (not (or (or x2 x3) (or x0 x4)))) (or (or (not ( [...]
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (or (not (and (not (or (and (or x1 x0) (not x1)) (not (and x1 x3)))) (or (or (not (not x2)) (and (and x3 x3) (not x1))) (or (or (or x4 x3) (not x3)) (not (not x4)))))) (or (and (not (not (or (and x3 x3) (or x3 x0)))) (not (or (or (or x2 x4) (and x2 x1)) (or (not x2) (not x0))))) (and (not (or (and (not x1) (not x1)) (not (and x3 x0)))) (or (and (not (not x4)) (not (not x2))) (or (not (not x0)) (and (not x4) (or x2 x0))))))))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(pop 1)
+(assert (and x4 x0))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (not x3))
+(assert (not (or x0 x2)))
+(check-sat)
+(pop 1)
+(assert (and (and (not x4) (not x2)) (not (or x1 x2))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_28.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_28.smt2
new file mode 100644
index 0000000..09933d5
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_28.smt2
@@ -0,0 +1,45 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(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)
+(assert (not (and (or (and (or (or (not (not (or (not x3) (or x9 x2)))) (and (not (or (and x8 x5) (and x0 x4))) (not (and (not x6) (not x1))))) (or (not (or (and (or x2 x9) (and x1 x9)) (not (not x2)))) (not (not (and (or x8 x0) (not x8)))))) (or (and (and (and (or (not x2) (not x5)) (not (or x1 x6))) (not (not (or x2 x4)))) (or (not (and (not x7) (or x1 x6))) (and (or (or x6 x7) (or x8 x7)) (not (and x0 x8))))) (and (not (and (and (and x2 x1) (and x0 x5)) (not (or x8 x8)))) (not (and (a [...]
+(assert (not (and (not (not (or x9 x8))) (or (not (not x9)) (or (and x4 x6) (or x3 x8))))))
+(assert (or (or (not (or (and (and (and x9 x5) (or x3 x6)) (not (not x9))) (and (and (and x7 x6) (and x8 x3)) (or (and x1 x8) (and x0 x9))))) (not (not (or (and (and x8 x7) (or x9 x2)) (and (not x1) (not x1)))))) (and (or (and (and (not (or x7 x2)) (not (or x6 x5))) (and (or (and x8 x6) (and x8 x7)) (or (not x6) (not x7)))) (or (or (not (not x3)) (and (and x0 x5) (not x4))) (and (not (or x7 x2)) (not (and x1 x9))))) (or (not (and (or (and x5 x4) (or x1 x0)) (or (and x6 x2) (not x1)))) (a [...]
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (or (or (or (not (not (not (or (and (or (not x2) (and x1 x3)) (not (not x3))) (or (not (not x8)) (or (or x9 x7) (and x3 x3))))))) (not (or (and (not (or (or (and x6 x6) (not x6)) (and (not x1) (not x4)))) (and (not (not (and x9 x7))) (and (and (and x6 x9) (and x1 x2)) (not (or x3 x1))))) (or (or (or (not (not x9)) (not (and x4 x4))) (or (not (and x4 x0)) (or (not x0) (or x2 x0)))) (and (and (and (or x1 x1) (not x9)) (or (or x7 x7) (not x2))) (and (or (and x1 x7) (or x2 x9)) (and  [...]
+(assert (not (and (and (and (and (or (and (or x7 x6) (and x4 x6)) (not (or x4 x2))) (and (and (or x7 x6) (or x9 x1)) (or (not x1) (and x1 x8)))) (not (not (and (or x7 x1) (not x7))))) (not (or (not (and (or x7 x2) (and x2 x2))) (or (and (or x5 x1) (and x8 x1)) (or (and x2 x8) (not x6)))))) (or (or (not (not (or (not x2) (or x2 x8)))) (not (and (not (not x9)) (not (and x9 x6))))) (and (or (or (not (and x1 x3)) (not (not x3))) (and (and (and x1 x4) (and x1 x9)) (not (or x1 x7)))) (not (not [...]
+(check-sat)
+(push 1)
+(assert (and (not (and (and (or (and (and (or (not (or x0 x2)) (not (and x3 x8))) (or (and (not x3) (or x1 x7)) (and (or x0 x3) (or x0 x0)))) (and (not (and (not x6) (not x9))) (or (not (and x9 x4)) (and (or x1 x3) (not x7))))) (or (not (and (and (not x9) (not x4)) (not (not x1)))) (not (or (or (or x7 x9) (and x0 x1)) (not (and x6 x3)))))) (or (not (not (or (and (not x5) (not x0)) (and (and x1 x9) (and x7 x1))))) (or (and (or (and (not x3) (or x9 x8)) (not (and x0 x6))) (not (not (not x5 [...]
+(assert (and (not (or x6 x8)) (or (or x4 x6) (or x4 x6))))
+(assert (or (or (not (not (and (or x3 x4) (or x4 x9)))) (or (not (and (not x2) (and x9 x7))) (and (and (and x4 x9) (not x2)) (not (and x8 x5))))) (or (or (and (not (not x3)) (or (and x9 x9) (and x1 x8))) (or (and (and x7 x3) (and x4 x8)) (not (not x4)))) (and (not (not (or x4 x5))) (and (or (or x7 x0) (and x2 x6)) (not (or x7 x7)))))))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (not (and (or (not (and (or (or (or (not (not x9)) (not (and x2 x7))) (not (or (or x3 x5) (not x6)))) (not (and (and (and x9 x5) (and x2 x4)) (and (or x0 x9) (not x7))))) (and (or (not (and (not x8) (or x6 x7))) (not (and (or x7 x6) (or x3 x5)))) (and (and (and (and x4 x9) (or x0 x8)) (not (not x9))) (not (not (and x6 x1))))))) (or (not (and (and (and (not (or x0 x7)) (not (or x1 x7))) (and (or (or x4 x1) (or x3 x3)) (or (not x7) (or x3 x0)))) (or (and (and (not x6) (and x5 x0))  [...]
+(check-sat)
+(pop 1)
+(assert (and x5 x7))
+(check-sat)
+(pop 1)
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_29.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_29.smt2
new file mode 100644
index 0000000..38e7242
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_29.smt2
@@ -0,0 +1,46 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(declare-fun x5 () Bool)
+(declare-fun x6 () Bool)
+(check-sat)
+(push 1)
+(assert (and (or (or (not (and (not (or (or (not x5) (not x2)) (and (and x5 x2) (not x2)))) (or (or (and (not x2) (or x2 x1)) (or (or x3 x1) (and x3 x6))) (not (or (or x0 x4) (or x5 x0)))))) (not (and (not (or (not (and x1 x3)) (not (and x5 x4)))) (not (or (or (or x6 x0) (or x5 x3)) (and (or x4 x5) (or x4 x0))))))) (not (or (not (and (not (or (or x0 x6) (and x2 x2))) (or (and (or x3 x6) (or x1 x5)) (and (not x3) (not x3))))) (or (not (and (and (and x2 x3) (not x0)) (not (not x2)))) (not  [...]
+(check-sat)
+(pop 1)
+(assert (and (and (not (and (or (not (or (or (or (not x1) (and x6 x5)) (and (and x2 x3) (and x5 x1))) (and (not (not x4)) (and (and x4 x5) (not x1))))) (and (and (not (not (not x5))) (or (or (and x6 x3) (and x3 x6)) (or (not x2) (not x0)))) (and (or (or (or x6 x4) (and x6 x1)) (or (and x1 x6) (or x1 x0))) (or (and (not x6) (and x2 x2)) (not (and x2 x0)))))) (and (and (or (or (not (and x1 x6)) (and (not x0) (not x4))) (or (and (not x4) (not x4)) (and (or x4 x1) (and x2 x1)))) (or (or (not [...]
+(assert (not x6))
+(assert (or (not (or (and (and (not (not (not x0))) (and (not (not x3)) (or (not x5) (not x6)))) (and (or (or (or x0 x4) (and x0 x6)) (or (not x3) (or x3 x3))) (and (and (not x6) (and x2 x6)) (or (or x5 x3) (and x4 x6))))) (or (and (not (and (or x1 x3) (not x5))) (or (or (and x1 x4) (not x2)) (or (not x5) (or x1 x3)))) (or (and (and (or x4 x3) (and x2 x2)) (or (and x4 x0) (not x5))) (or (or (and x4 x1) (and x3 x5)) (and (or x5 x1) (not x2))))))) (or (or (and (and (not (and (or x4 x0) (no [...]
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (or (or (or (or (not (and (and x2 x5) (and x5 x0))) (not (or (and x0 x0) (or x3 x6)))) (not (not (or (or x5 x1) (and x4 x0))))) (and (not (or (and (and x3 x1) (or x1 x3)) (not (not x0)))) (not (and (or (or x0 x2) (or x4 x2)) (or (and x6 x1) (or x6 x1)))))) (not (not (not (or (or (or x1 x1) (or x3 x0)) (or (and x3 x2) (or x4 x4))))))))
+(assert (not (and (not (and (not (and (and (and (not x1) (not x2)) (not (and x4 x2))) (or (or (or x5 x6) (and x0 x1)) (and (or x1 x5) (not x3))))) (or (and (or (not (not x4)) (not (and x2 x0))) (and (and (or x5 x3) (or x5 x0)) (or (not x3) (or x1 x3)))) (and (or (or (not x1) (and x5 x2)) (not (or x1 x0))) (or (not (and x2 x1)) (or (not x1) (and x6 x2))))))) (and (not (and (and (and (not (not x1)) (or (or x6 x0) (not x5))) (and (and (and x4 x1) (and x4 x4)) (not (or x3 x1)))) (or (and (no [...]
+(check-sat)
+(push 1)
+(assert (not (and (or (not (and (not (and (and (and x6 x2) (not x0)) (and (or x5 x6) (and x4 x5)))) (or (or (or (and x4 x1) (not x1)) (and (or x6 x3) (not x3))) (or (and (and x6 x3) (or x4 x4)) (not (or x3 x3)))))) (not (or (or (or (and (or x4 x1) (and x1 x2)) (or (and x5 x3) (not x1))) (not (not (or x3 x3)))) (not (not (and (not x4) (and x6 x0))))))) (or (not (and (and (or (or (not x6) (not x1)) (or (not x5) (not x4))) (and (not (or x6 x4)) (or (not x0) (or x1 x6)))) (or (and (and (or x [...]
+(check-sat)
+(push 1)
+(assert (or (not (or (or (and (and x4 x3) (or x1 x4)) (and (not x4) (and x2 x0))) (and (or (not x4) (and x6 x6)) (and (and x5 x5) (not x4))))) (and (or (and (or (and x6 x3) (and x0 x2)) (or (or x3 x1) (or x2 x1))) (or (or (not x0) (not x1)) (and (or x2 x0) (or x5 x6)))) (and (and (not (not x0)) (or (or x3 x1) (or x3 x3))) (not (and (and x3 x0) (and x3 x1)))))))
+(assert (and (or (or (or (and x3 x0) (or x3 x4)) (not (or x5 x6))) (and (and (and x2 x3) (not x4)) (or (and x4 x0) (not x6)))) (not (and (not (not x2)) (or (or x2 x1) (or x0 x2))))))
+(assert (or (not (or (or (or (and (or (or (and (or x4 x2) (and x2 x3)) (and (not x4) (or x4 x5))) (not (not (and x1 x6)))) (not (and (or (and x3 x4) (and x4 x3)) (and (and x1 x6) (or x1 x4))))) (or (and (or (and (or x3 x0) (and x1 x5)) (and (or x2 x1) (or x2 x2))) (or (or (and x3 x4) (and x6 x1)) (or (not x5) (or x0 x2)))) (and (not (and (not x4) (not x1))) (and (or (not x5) (or x2 x6)) (or (and x6 x4) (not x5)))))) (or (and (not (or (and (or x4 x3) (not x2)) (or (or x6 x6) (and x4 x0))) [...]
+(check-sat)
+(pop 1)
+(assert (and (and (and x5 x2) (and x2 x2)) (not (and x1 x1))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_3.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_3.smt2
new file mode 100644
index 0000000..958d44a
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_3.smt2
@@ -0,0 +1,29 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(assert (or (and (not (or (and (and (not (not (and x1 x2))) (and (not (not x1)) (not (and x3 x0)))) (not (or (and (and x0 x2) (or x3 x3)) (not (not x1))))) (not (or (and (not (not x1)) (not (not x0))) (not (or (or x0 x3) (not x0))))))) (or (and (and (not (or (or (and x2 x2) (or x1 x2)) (not (and x3 x3)))) (not (or (not (not x2)) (and (and x2 x1) (and x1 x1))))) (or (or (and (not (or x2 x3)) (or (not x0) (and x1 x1))) (or (or (or x3 x2) (and x2 x3)) (or (and x1 x0) (not x3)))) (or (and (n [...]
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (or (not (and x0 x2)) (and (not x2) (and x0 x2))))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (or (and (or (not (or (or (and (not (or x3 x3)) (or (not x1) (or x0 x2))) (and (or (and x3 x1) (or x3 x3)) (not (or x1 x3)))) (or (or (not (and x3 x2)) (not (or x1 x1))) (or (and (or x0 x1) (and x0 x1)) (and (or x0 x2) (and x1 x1)))))) (not (and (not (not (not (and x0 x1)))) (or (and (or (or x1 x3) (not x3)) (and (and x3 x1) (and x1 x1))) (not (not (not x1))))))) (not (and (or (and (or (not (and x0 x3)) (and (or x0 x0) (or x0 x0))) (and (and (or x1 x0) (and x1 x2)) (and (not x3)  [...]
+(check-sat)
+(pop 1)
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_30.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_30.smt2
new file mode 100644
index 0000000..58f55bd
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_30.smt2
@@ -0,0 +1,69 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(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)
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (or (not (or (and (not (or (or (and (or (or x7 x2) (and x4 x1)) (or (or x0 x5) (and x1 x2))) (not (or (not x5) (or x8 x6)))) (not (or (or (not x0) (and x1 x1)) (not (or x4 x6)))))) (and (and (and (or (or (not x1) (or x3 x0)) (not (not x0))) (or (not (or x2 x7)) (or (and x2 x3) (and x0 x5)))) (or (and (not (and x3 x5)) (and (or x1 x7) (and x0 x7))) (not (and (not x2) (and x5 x0))))) (and (not (not (or (not x1) (or x0 x3)))) (and (not (and (or x2 x5) (and x5 x3))) (and (or (or x2 x [...]
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (and (or (or (and (and (and (and (and x3 x7) (or x3 x2)) (or (and x7 x7) (and x6 x5))) (or (or (and x4 x5) (or x6 x6)) (and (and x4 x3) (and x5 x5)))) (and (and (or (or x5 x0) (and x8 x2)) (and (or x1 x6) (and x5 x0))) (or (not (and x8 x4)) (and (not x8) (or x0 x1))))) (and (or (or (and (not x8) (not x8)) (and (not x7) (and x8 x5))) (not (and (or x1 x3) (or x5 x0)))) (not (and (not (and x8 x1)) (not (not x2)))))) (and (or (and (not (not (or x2 x5))) (or (not (or x8 x8)) (and (not [...]
+(check-sat)
+(pop 1)
+(assert (or x3 x3))
+(check-sat)
+(pop 1)
+(assert (not (and (not (and (or x4 x1) (and x6 x3))) (and (not (and x3 x6)) (and (not x6) (and x5 x6))))))
+(assert (or (not (or (and (or (or (not (and x6 x7)) (or (not x8) (not x6))) (or (not (and x1 x8)) (or (not x6) (not x4)))) (and (and (or (not x4) (not x3)) (and (not x7) (and x4 x7))) (and (and (or x2 x7) (or x5 x2)) (and (not x1) (not x2))))) (not (not (or (and (and x5 x0) (not x1)) (and (and x4 x8) (not x1))))))) (not (and (not (or (not (or (or x7 x4) (not x1))) (not (not (not x2))))) (not (not (not (not (or x7 x7)))))))))
+(check-sat)
+(push 1)
+(assert (or (and (not (or (and (or x8 x2) (and x3 x4)) (not (or x3 x4)))) (and (not (and (and x2 x4) (or x7 x1))) (not (not (or x7 x1))))) (and (not (not (or (and x5 x4) (or x2 x6)))) (and (or (or (and x1 x1) (or x2 x3)) (not (or x3 x1))) (or (and (or x6 x7) (or x2 x0)) (not (and x8 x0)))))))
+(check-sat)
+(pop 1)
+(assert (and (or (not (and (or (or (or (and (not x0) (not x1)) (and (or x0 x2) (not x0))) (or (or (or x0 x0) (not x2)) (not (not x6)))) (and (not (and (or x5 x3) (not x5))) (not (or (and x1 x6) (and x0 x1))))) (and (or (and (and (or x6 x7) (and x6 x8)) (or (or x5 x7) (and x5 x3))) (not (not (not x7)))) (or (not (and (or x6 x3) (and x8 x3))) (or (and (and x6 x2) (and x3 x0)) (not (and x6 x0))))))) (and (and (and (or (or (and (and x3 x7) (or x0 x0)) (and (or x4 x4) (not x3))) (not (and (no [...]
+(check-sat)
+(push 1)
+(assert (or (not (not (or (or (or x5 x4) (not x5)) (and (and x3 x7) (and x2 x7))))) (and (or (or (not (or x8 x6)) (not (not x1))) (not (not (or x5 x2)))) (or (and (or (and x5 x3) (not x3)) (or (not x8) (not x6))) (or (and (not x2) (not x8)) (not (not x8)))))))
+(assert (and (and (and x1 x2) (or x4 x0)) (or (and x2 x6) (not x1))))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (and (and (not (or (or (and (and (or (and (and x1 x1) (or x0 x0)) (not (and x5 x1))) (and (not (not x3)) (or (or x2 x4) (and x1 x2)))) (not (or (or (and x8 x2) (not x3)) (or (or x4 x1) (not x8))))) (or (or (and (and (not x8) (or x5 x0)) (or (not x3) (or x1 x2))) (and (and (and x6 x6) (not x5)) (not (not x6)))) (or (or (not (or x1 x7)) (or (and x6 x5) (and x5 x5))) (or (not (or x3 x6)) (or (or x8 x3) (and x4 x0)))))) (and (and (or (and (or (or x5 x8) (not x0)) (or (or x6 x2) (and  [...]
+(assert (or (or (or (not (and (and x4 x0) (or x0 x7))) (and (or (or x8 x3) (and x2 x0)) (and (and x4 x0) (and x1 x8)))) (not (or (or (not x8) (not x3)) (not (and x5 x7))))) (or (not (not (and (not x6) (and x8 x6)))) (or (or (or (and x7 x7) (or x7 x4)) (not (and x7 x3))) (or (and (not x8) (not x5)) (and (and x3 x4) (not x6)))))))
+(assert (not (not (and (or x8 x1) (or x5 x7)))))
+(check-sat)
+(pop 1)
+(assert (not (or (not (not (or (and (and (not (or x0 x1)) (not (and x5 x5))) (not (or (or x7 x4) (not x4)))) (and (not (not (or x6 x5))) (or (and (not x2) (and x6 x4)) (not (and x6 x8))))))) (not (and (or (and (or (or (and x0 x1) (not x5)) (not (not x8))) (and (and (and x4 x5) (or x8 x1)) (and (not x4) (and x4 x6)))) (not (not (or (and x4 x6) (or x7 x1))))) (not (not (or (not (not x8)) (not (and x6 x1))))))))))
+(assert (and (and x6 x5) (or x5 x0)))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_31.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_31.smt2
new file mode 100644
index 0000000..3998897
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_31.smt2
@@ -0,0 +1,34 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(assert (not (and (and (or (and (and (or (and (and x1 x1) (and x0 x0)) (or (and x1 x0) (or x1 x0))) (or (not (and x0 x0)) (or (or x0 x1) (or x0 x1)))) (not (and (not (and x1 x1)) (or (not x0) (not x0))))) (and (or (not (not (not x0))) (and (and (or x0 x1) (and x1 x0)) (not (and x1 x1)))) (or (not (not (not x1))) (or (or (and x1 x0) (not x1)) (not (and x0 x0)))))) (not (not (or (and (and (or x1 x0) (not x0)) (not (and x1 x0))) (and (or (not x0) (and x0 x0)) (and (or x0 x0) (or x1 x1)))))) [...]
+(check-sat)
+(push 1)
+(assert (not (or (not (and (and (not (not (not (or (or x0 x1) (not x1))))) (and (and (and (and (not x0) (not x1)) (or (not x1) (not x1))) (and (and (not x1) (or x1 x0)) (and (and x0 x0) (or x0 x1)))) (or (and (not (and x0 x0)) (and (and x1 x1) (and x0 x0))) (and (not (and x0 x1)) (or (and x0 x0) (or x1 x1)))))) (not (and (or (and (not (or x0 x1)) (or (or x0 x0) (and x1 x1))) (and (not (or x0 x1)) (or (not x1) (and x1 x0)))) (and (and (not (or x1 x0)) (and (or x0 x1) (and x0 x1))) (not (n [...]
+(assert (not (not (and (or (or (not x1) (or x0 x0)) (and (and x0 x1) (or x0 x0))) (not (not (and x0 x1)))))))
+(assert (or (and (or x0 x1) (and x1 x0)) (or (and x1 x0) (not x0))))
+(assert (not (or x0 x0)))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (or (or (and x0 x0) (and x0 x0)) (and (or x1 x0) (and x1 x0))))
+(assert (and x1 x1))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(pop 1)
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_32.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_32.smt2
new file mode 100644
index 0000000..109b86e
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_32.smt2
@@ -0,0 +1,68 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(declare-fun x5 () Bool)
+(declare-fun x6 () Bool)
+(assert (and (or x3 x1) (not x6)))
+(check-sat)
+(push 1)
+(assert (or (or (or (not (not (or (not (not x6)) (or (and x3 x1) (not x4))))) (or (or (or (and (and x0 x1) (not x0)) (or (not x0) (and x0 x6))) (and (or (or x6 x0) (and x3 x1)) (or (or x3 x6) (and x4 x0)))) (not (not (or (not x4) (and x5 x3)))))) (and (not (or (not (and (or x1 x2) (and x1 x0))) (and (and (or x5 x0) (and x6 x2)) (and (and x4 x5) (not x3))))) (or (and (and (not (and x2 x0)) (or (or x1 x2) (and x2 x5))) (and (or (or x4 x3) (and x1 x3)) (not (not x5)))) (and (and (or (not x0 [...]
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (or (or (not (and (or (or (not (or (or (and x3 x5) (or x6 x2)) (not (and x0 x4)))) (not (or (and (or x6 x0) (and x3 x2)) (not (not x3))))) (and (or (not (not (or x6 x2))) (and (and (or x0 x2) (or x6 x3)) (and (not x3) (not x6)))) (not (or (not (or x4 x4)) (not (not x0)))))) (not (not (not (or (not (and x2 x2)) (or (or x6 x4) (or x6 x2)))))))) (or (or (and (not (or (and (and (or x3 x3) (and x1 x0)) (or (not x6) (not x6))) (or (or (not x2) (not x2)) (or (not x6) (or x0 x5))))) (not [...]
+(assert (not (and (and (or (not (not (and (not (or x5 x2)) (not (not x6))))) (not (and (not (or (or x0 x5) (not x0))) (or (and (or x2 x2) (or x3 x6)) (or (or x4 x0) (and x0 x0)))))) (or (and (and (and (or (and x6 x0) (or x3 x6)) (and (or x2 x1) (or x6 x6))) (not (not (not x4)))) (not (or (not (and x6 x0)) (not (not x5))))) (or (and (not (not (not x6))) (and (not (not x1)) (and (and x2 x6) (or x2 x5)))) (and (not (and (or x4 x0) (and x4 x0))) (or (not (not x3)) (not (not x4))))))) (not (n [...]
+(assert (or (or (not (not (not (not (not (and x2 x3)))))) (or (or (not (not (and (and x0 x2) (and x3 x4)))) (and (and (and (and x3 x3) (and x2 x2)) (not (or x0 x0))) (not (not (not x5))))) (and (not (or (not (or x6 x5)) (and (not x3) (and x5 x0)))) (and (not (not (not x4))) (not (not (and x5 x4))))))) (or (not (not (or (not (or (or x6 x5) (or x6 x1))) (or (not (or x2 x0)) (or (and x3 x6) (and x5 x3)))))) (or (or (or (or (not (not x4)) (and (and x0 x1) (and x3 x6))) (and (not (not x4)) (a [...]
+(assert (and (and (or (or (not (not x2)) (and (not x3) (not x1))) (not (or (and x0 x0) (or x4 x4)))) (and (not (or (and x3 x3) (or x0 x0))) (and (and (or x5 x5) (or x2 x0)) (not (not x4))))) (not (and (or (and (and x4 x3) (not x6)) (not (and x5 x3))) (and (and (and x0 x4) (or x0 x3)) (and (not x1) (or x2 x1)))))))
+(assert (not (or (not (and (and (and x6 x4) (not x5)) (not (and x4 x6)))) (and (or (or (and x2 x1) (and x3 x2)) (not (not x3))) (or (or (or x5 x0) (or x1 x3)) (and (and x3 x4) (or x4 x3)))))))
+(check-sat)
+(pop 1)
+(assert (not (not (not (or x3 x2)))))
+(check-sat)
+(push 1)
+(assert (not (and (not (and (and (or (or (not (not (and x4 x0))) (not (or (or x1 x2) (or x3 x1)))) (not (or (and (not x2) (and x4 x4)) (and (not x6) (not x4))))) (or (or (not (and (or x1 x5) (and x5 x5))) (not (or (or x5 x2) (or x1 x3)))) (not (and (and (not x3) (and x2 x5)) (or (or x3 x5) (and x4 x6)))))) (and (and (not (or (not (not x2)) (and (not x2) (and x4 x4)))) (not (and (and (not x5) (or x4 x0)) (not (and x5 x5))))) (or (not (not (not (not x1)))) (and (or (not (not x2)) (not (not [...]
+(assert (or x5 x5))
+(assert (or (or (not x5) (and x4 x3)) (not (and x1 x4))))
+(check-sat)
+(pop 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (or (not (and x1 x1)) (not (not x3))))
+(check-sat)
+(push 1)
+(assert (or (not (not x6)) (and (not x2) (or x6 x1))))
+(check-sat)
+(pop 1)
+(assert (or (not (not (and (not x3) (and x1 x4)))) (or (and (not (or x5 x0)) (not (or x1 x2))) (or (or (not x6) (or x3 x5)) (and (or x4 x5) (or x0 x6))))))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (or (and (and x4 x3) (not x4)) (or (or x3 x5) (or x1 x6))))
+(assert (not (not (not (not (not (not x6)))))))
+(check-sat)
+(pop 1)
+(assert (not (and (and (and (not (and x1 x1)) (or (and x5 x4) (not x1))) (not (and (or x0 x2) (or x0 x5)))) (not (and (and (or x0 x3) (and x4 x0)) (or (not x3) (not x1)))))))
+(assert (and (or (not x3) (and x0 x2)) (not (not x2))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_33.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_33.smt2
new file mode 100644
index 0000000..ce2c41b
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_33.smt2
@@ -0,0 +1,39 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(declare-fun x5 () Bool)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (not (and (not (not (and (and (not x3) (not x2)) (not (not x1))))) (or (not (and (not (not x5)) (and (and x3 x3) (and x0 x2)))) (or (or (not (not x0)) (or (or x1 x5) (not x2))) (not (or (or x4 x5) (not x4))))))))
+(assert (not (or (not (not (and (not x5) (not x4)))) (or (and (and (and x5 x0) (not x2)) (and (or x1 x1) (or x3 x5))) (and (not (and x5 x0)) (or (not x0) (or x1 x2)))))))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (or (not (and x4 x4)) (not (and x0 x4))))
+(check-sat)
+(push 1)
+(assert (or (not x2) (not x2)))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (or (and (and (and x1 x0) (and x2 x5)) (or (and x3 x2) (or x1 x0))) (not (or (and x3 x1) (or x0 x1)))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_34.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_34.smt2
new file mode 100644
index 0000000..e1ea02c
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_34.smt2
@@ -0,0 +1,47 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(declare-fun x5 () Bool)
+(declare-fun x6 () Bool)
+(assert (and (or (and (or (not (and (or (and (not x1) (or x0 x2)) (and (not x3) (and x1 x1))) (not (or (not x0) (not x6))))) (and (not (and (not (and x6 x5)) (not (and x2 x3)))) (or (or (or (not x0) (and x4 x0)) (or (and x3 x3) (and x4 x1))) (and (not (and x1 x2)) (or (and x4 x3) (or x2 x0)))))) (or (and (and (not (and (and x5 x0) (and x4 x2))) (or (not (and x1 x5)) (and (not x0) (or x0 x0)))) (not (not (and (not x0) (and x6 x2))))) (not (and (or (and (or x5 x5) (and x3 x3)) (and (not x0 [...]
+(check-sat)
+(push 1)
+(assert (not (or (not (or x6 x1)) (and (not x0) (and x3 x0)))))
+(assert (not (or (and (and (not (not x4)) (or (and x6 x1) (not x1))) (not (and (not x1) (and x5 x3)))) (not (not (not (not x2)))))))
+(check-sat)
+(pop 1)
+(assert (or (not (not (and (and (and (or (or (not (and x0 x3)) (or (not x2) (not x5))) (or (and (not x1) (not x5)) (or (not x1) (and x3 x0)))) (and (or (or (or x4 x1) (not x4)) (or (not x1) (not x4))) (or (not (and x3 x4)) (not (not x1))))) (not (or (not (not (and x2 x2))) (not (or (and x3 x5) (not x0)))))) (and (and (or (or (and (and x5 x1) (or x6 x6)) (not (and x4 x3))) (or (not (not x6)) (and (not x3) (or x2 x3)))) (not (or (not (or x4 x5)) (not (not x6))))) (and (and (and (and (or x2 [...]
+(assert (or (not (or x6 x5)) (and (not x3) (or x1 x3))))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (or (not (or (not (or (or (or (not x0) (not x3)) (and (or x3 x5) (or x3 x1))) (not (or (not x4) (or x1 x5))))) (not (or (and (and (not x2) (and x5 x5)) (not (not x1))) (or (not (and x2 x4)) (not (or x0 x5))))))) (and (and (or (not (and (not (and x1 x0)) (or (not x1) (and x6 x4)))) (or (not (and (and x1 x5) (not x4))) (and (or (or x3 x3) (and x3 x6)) (not (not x3))))) (not (not (and (and (and x1 x0) (or x3 x5)) (and (or x3 x1) (not x5)))))) (or (and (or (and (or (or x2 x5) (not x5 [...]
+(check-sat)
+(push 1)
+(assert (and (not (or (or (not (not x2)) (not (not x2))) (not (or (or x3 x6) (and x6 x4))))) (or (and (or (or (not x3) (not x6)) (not (not x5))) (not (or (or x4 x6) (and x3 x6)))) (not (not (not (and x3 x6)))))))
+(assert (or (and x4 x1) (and x6 x3)))
+(assert (not (and (not (not (and x3 x0))) (and (not (not x1)) (or (or x0 x6) (and x2 x5))))))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (and x4 x3))
+(assert (not (or (not (not x5)) (and (and x6 x6) (or x1 x0)))))
+(assert (not (and (and (not (or (not (not x6)) (and (and x0 x5) (or x2 x1)))) (or (not (or (or x6 x3) (or x1 x2))) (and (and (and x5 x5) (or x3 x6)) (not (or x0 x6))))) (not (and (or (or (or x2 x2) (or x4 x4)) (and (or x1 x1) (or x4 x5))) (not (and (and x5 x2) (or x3 x3))))))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_35.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_35.smt2
new file mode 100644
index 0000000..a2fc1e3
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_35.smt2
@@ -0,0 +1,43 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(declare-fun x5 () Bool)
+(assert (and (not (not (and (not (not (or (or (or x2 x1) (and x5 x0)) (or (not x3) (and x4 x0))))) (or (or (not (not (not x1))) (and (or (or x5 x4) (or x2 x0)) (and (not x3) (and x3 x2)))) (and (not (or (or x2 x4) (not x4))) (or (or (not x4) (not x1)) (and (and x3 x3) (and x4 x3)))))))) (or (not (or (and (and (not (not (or x0 x4))) (and (or (not x2) (or x4 x1)) (and (and x3 x3) (or x0 x3)))) (not (and (and (not x0) (or x3 x4)) (or (and x2 x5) (and x4 x3))))) (not (or (not (not (not x5))) [...]
+(assert (and (and (or (or (not (and (or (or x4 x3) (and x1 x3)) (and (and x3 x3) (not x5)))) (or (not (or (not x2) (not x4))) (not (or (or x1 x3) (not x3))))) (or (not (or (not (or x4 x1)) (and (not x2) (and x1 x2)))) (not (not (and (and x3 x4) (not x2)))))) (or (not (not (or (not (or x5 x5)) (not (or x3 x5))))) (and (or (or (not (and x2 x2)) (and (or x1 x3) (or x3 x5))) (and (and (or x1 x1) (or x4 x0)) (not (or x0 x1)))) (and (and (not (not x4)) (or (not x2) (or x0 x4))) (or (and (and x [...]
+(assert (or (and (or (or x4 x1) (or x1 x2)) (and (and x5 x3) (and x0 x2))) (not (not (and x2 x2)))))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (and (and (or (and (not (and (and (not (or (or x3 x4) (and x0 x0))) (or (or (and x4 x3) (and x1 x2)) (and (and x4 x4) (or x2 x4)))) (and (and (not (not x5)) (not (not x5))) (not (not (not x4)))))) (not (and (and (not (not (not x1))) (or (or (not x5) (not x4)) (or (and x3 x1) (or x5 x3)))) (and (and (not (and x1 x1)) (or (not x5) (or x0 x1))) (not (and (and x1 x3) (or x0 x0))))))) (or (not (or (not (and (not (or x3 x0)) (not (or x5 x4)))) (or (and (and (or x2 x0) (not x2)) (or (an [...]
+(check-sat)
+(pop 1)
+(assert (and (or (not (and (or (not (and (not (not x3)) (or (and x3 x4) (not x0)))) (not (or (and (not x0) (not x5)) (or (or x3 x4) (or x4 x1))))) (or (or (not (not (and x3 x1))) (or (or (and x0 x1) (not x1)) (or (not x5) (not x3)))) (and (and (or (or x0 x5) (or x2 x3)) (and (or x4 x1) (or x4 x1))) (not (and (or x3 x5) (and x1 x4))))))) (not (or (and (and (or (or (not x4) (not x5)) (and (or x2 x5) (not x5))) (or (or (not x2) (and x4 x3)) (or (or x1 x1) (or x0 x3)))) (and (not (and (or x0 [...]
+(assert (and (and (or (and (not (and (or (and (or x4 x2) (not x3)) (and (not x2) (and x0 x5))) (not (not (and x5 x4))))) (or (not (not (or (and x4 x4) (or x3 x1)))) (not (or (not (not x2)) (or (not x3) (not x2)))))) (and (not (or (and (or (not x4) (or x2 x1)) (not (not x1))) (and (or (or x4 x5) (or x1 x4)) (not (not x2))))) (or (not (not (not (not x5)))) (not (and (not (not x0)) (or (not x3) (or x5 x4))))))) (or (and (or (not (not (or (and x2 x4) (not x1)))) (not (or (or (not x2) (not x1 [...]
+(assert (not (and (and (and (or x3 x0) (and x1 x5)) (and (or x4 x2) (and x3 x4))) (or (and (and x2 x0) (or x2 x2)) (or (not x0) (and x3 x4))))))
+(check-sat)
+(push 1)
+(assert (not (not (not (and (or (and (and (or (not (or x3 x0)) (and (and x1 x2) (and x1 x1))) (not (not (or x5 x1)))) (and (and (and (not x5) (and x2 x5)) (and (or x4 x2) (and x2 x3))) (or (or (or x1 x5) (not x2)) (and (and x2 x0) (or x4 x4))))) (or (or (not (and (and x3 x1) (or x5 x4))) (not (not (or x2 x1)))) (or (not (not (and x5 x2))) (or (not (not x3)) (and (and x3 x4) (not x1)))))) (not (not (not (and (not (not x3)) (or (not x2) (or x2 x3)))))))))))
+(assert (and (not (and (or (or (or (and (not x4) (and x2 x2)) (or (and x3 x2) (and x0 x1))) (not (or (and x3 x4) (not x3)))) (and (and (or (and x0 x4) (and x1 x5)) (and (or x4 x2) (and x3 x4))) (and (or (not x4) (or x1 x3)) (not (not x0))))) (not (or (and (and (or x1 x0) (and x0 x0)) (or (and x5 x3) (or x2 x5))) (not (and (or x4 x3) (not x0))))))) (not (or (not (not (not (and (or x2 x1) (not x1))))) (not (or (not (or (or x3 x0) (or x3 x1))) (or (or (or x3 x5) (not x1)) (not (and x5 x5)))))))))
+(check-sat)
+(pop 1)
+(assert (or (or (and x5 x2) (or x1 x1)) (or (not x5) (or x3 x2))))
+(assert (or (not (and (or (and x0 x5) (and x4 x5)) (or (not x4) (not x0)))) (not (or (not (not x4)) (or (not x5) (and x4 x2))))))
+(assert (not (or (not (or (not (or x1 x1)) (and (and x2 x5) (or x2 x5)))) (not (or (or (not x0) (and x5 x4)) (not (and x1 x3)))))))
+(assert (not (or (and (or (not x1) (or x0 x2)) (and (and x1 x1) (and x2 x4))) (and (not (not x5)) (not (not x0))))))
+(assert (not (or (or (or (and x1 x2) (not x0)) (and (not x2) (and x0 x2))) (and (not (and x2 x4)) (and (and x5 x0) (or x2 x4))))))
+(assert (or (or (or x3 x0) (or x0 x0)) (and (not x0) (not x1))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_36.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_36.smt2
new file mode 100644
index 0000000..e0d0c8b
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_36.smt2
@@ -0,0 +1,34 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(check-sat)
+(push 1)
+(assert (not (or (not x1) (or x1 x0))))
+(assert (and (and x2 x1) (not x0)))
+(assert (not (not (or (not (and (not x2) (or x2 x3))) (not (and (not x2) (and x3 x3)))))))
+(assert (and (not (and (not x3) (not x0))) (and (not (or x3 x3)) (or (not x2) (or x0 x1)))))
+(assert (and (not (and (not (not (and (and (or (and x0 x0) (and x1 x0)) (or (or x2 x1) (and x1 x1))) (and (or (or x0 x3) (and x1 x0)) (not (and x0 x3)))))) (or (and (not (not (not (or x2 x3)))) (not (and (and (or x2 x1) (not x3)) (and (or x1 x1) (or x3 x1))))) (and (and (and (not (and x2 x3)) (or (or x3 x3) (or x2 x2))) (not (not (or x2 x2)))) (and (and (or (and x0 x0) (and x1 x1)) (not (or x3 x0))) (and (or (or x3 x3) (and x3 x2)) (or (not x0) (not x0)))))))) (not (or (or (and (and (not [...]
+(assert (not (or (not (or (not (and (and (and x1 x2) (not x1)) (or (or x1 x1) (or x3 x3)))) (not (or (not (not x3)) (and (and x3 x0) (or x3 x3)))))) (not (and (not (and (or (and x3 x2) (and x1 x0)) (not (not x2)))) (or (not (not (or x3 x1))) (or (not (not x2)) (and (or x1 x2) (and x1 x1)))))))))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (or (or (and (or (not x1) (not x2)) (and (or x1 x1) (and x0 x2))) (not (not (not x0)))) (or (or (not (or x1 x2)) (and (not x3) (or x0 x2))) (not (or (not x2) (or x3 x1))))))
+(check-sat)
+(push 1)
+(assert (not (not (and x2 x0))))
+(assert (not (and (and (and (not (and (or (or x0 x3) (not x0)) (not (and x3 x0)))) (and (or (and (and x3 x2) (not x2)) (and (not x1) (or x1 x3))) (and (or (not x3) (or x3 x3)) (and (or x0 x2) (not x0))))) (or (and (not (not (not x2))) (or (and (and x1 x0) (or x3 x1)) (and (or x3 x0) (not x0)))) (and (not (not (and x2 x2))) (and (not (and x0 x2)) (not (or x2 x1)))))) (or (or (not (not (and (and x3 x3) (or x1 x0)))) (or (not (not (or x0 x0))) (or (not (not x1)) (or (not x3) (not x2))))) (n [...]
+(check-sat)
+(pop 1)
+(assert (not (not (or (and (or x0 x2) (not x1)) (and (or x2 x0) (not x2))))))
+(assert (and (or (and (not x0) (not x2)) (not (not x3))) (or (not (or x0 x0)) (and (not x0) (and x2 x3)))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_37.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_37.smt2
new file mode 100644
index 0000000..cf34c5d
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_37.smt2
@@ -0,0 +1,54 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(assert (or (not (or (not (not x0)) (and (or x1 x0) (not x0)))) (and (and (or (and x1 x1) (and x0 x1)) (not (not x1))) (or (not (or x0 x1)) (or (not x1) (or x0 x0))))))
+(check-sat)
+(push 1)
+(assert (or (not (and (and (or (not (not (and x1 x1))) (not (and (or x1 x0) (or x0 x1)))) (or (not (and (not x0) (and x0 x0))) (and (and (or x1 x0) (and x1 x1)) (not (not x1))))) (not (and (or (or (and x1 x0) (and x1 x1)) (not (or x1 x1))) (and (not (not x0)) (not (or x1 x1))))))) (and (not (and (or (and (and (not x0) (not x0)) (or (or x0 x1) (or x0 x1))) (not (and (or x1 x0) (and x1 x0)))) (and (not (or (not x1) (not x1))) (not (or (or x0 x1) (and x0 x0)))))) (not (or (and (or (and (and [...]
+(assert (not (not (not x0))))
+(assert (or (not (or (or (or (not (not (or (and (not x0) (or x0 x1)) (or (not x0) (and x1 x1))))) (not (or (and (not (or x1 x0)) (not (not x0))) (not (or (and x0 x0) (not x0)))))) (and (not (not (or (or (or x1 x1) (and x1 x1)) (or (and x1 x0) (and x0 x0))))) (not (or (and (not (and x0 x0)) (not (not x0))) (or (and (not x1) (not x0)) (or (or x0 x1) (or x1 x0))))))) (and (and (and (and (and (not (or x1 x1)) (and (not x0) (not x0))) (not (and (or x1 x1) (not x0)))) (and (not (and (and x0 x0 [...]
+(check-sat)
+(pop 1)
+(assert (or x0 x1))
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (or (not (or (and (and (and (and (and x0 x1) (and x1 x1)) (or (not x1) (not x0))) (and (or (not x1) (and x0 x1)) (not (and x0 x0)))) (and (not (not (or x1 x0))) (and (not (or x0 x0)) (and (and x1 x1) (and x1 x0))))) (not (not (not (not (not x0))))))) (not (and (not (and (or (not (and x0 x0)) (or (not x1) (not x1))) (or (or (and x0 x0) (and x0 x0)) (or (or x0 x1) (or x1 x0))))) (or (not (not (and (and x0 x1) (or x0 x0)))) (or (or (or (and x1 x0) (not x1)) (and (or x0 x0) (or x0 x0 [...]
+(check-sat)
+(push 1)
+(assert (or (not (or (or (not (or (not (or (and x1 x1) (not x1))) (or (and (or x0 x0) (not x0)) (not (not x1))))) (and (not (or (and (not x0) (or x1 x1)) (and (not x0) (or x1 x1)))) (and (not (not (and x0 x1))) (and (not (not x1)) (or (not x1) (not x0)))))) (not (and (not (not (or (and x1 x0) (and x1 x0)))) (or (not (or (and x0 x0) (not x0))) (and (not (and x1 x1)) (not (not x1)))))))) (and (and (and (and (or (not (and (or x1 x0) (not x1))) (and (and (and x0 x0) (not x0)) (and (or x1 x1) [...]
+(assert (not (or (or (or (not (and (or (not x0) (and x1 x1)) (and (and x1 x1) (or x1 x0)))) (and (or (not (or x0 x0)) (and (or x1 x0) (not x0))) (not (or (or x0 x1) (not x1))))) (or (not (and (and (not x0) (or x1 x1)) (or (or x1 x0) (and x1 x1)))) (or (and (not (and x1 x1)) (not (and x0 x0))) (not (and (not x1) (and x1 x0)))))) (or (and (and (and (not (and x1 x0)) (and (not x0) (or x0 x1))) (and (or (and x0 x1) (or x0 x0)) (not (not x1)))) (or (not (or (not x0) (not x1))) (or (and (and x [...]
+(check-sat)
+(push 1)
+(assert (or (and (or (or x0 x0) (or x1 x0)) (or (not x0) (or x0 x0))) (and (not (or x1 x0)) (not (not x1)))))
+(assert (or (or (and (and (and x0 x1) (not x0)) (and (and x0 x1) (or x0 x0))) (or (or (or x1 x1) (and x0 x0)) (not (not x1)))) (not (or (not (not x0)) (not (or x1 x0))))))
+(check-sat)
+(push 1)
+(assert (or (or (not (not (and (not (not x0)) (or (or x0 x1) (and x0 x1))))) (and (not (and (and (or x1 x0) (and x1 x0)) (not (not x0)))) (not (and (and (and x0 x0) (and x1 x1)) (and (or x1 x0) (not x0)))))) (and (not (not (or (and (and x1 x0) (not x1)) (or (and x1 x1) (or x1 x0))))) (not (or (and (and (not x0) (not x1)) (or (and x1 x0) (or x1 x0))) (and (or (not x1) (not x1)) (or (not x1) (or x1 x0))))))))
+(assert (or (and x1 x1) (not x0)))
+(check-sat)
+(pop 1)
+(assert (or (or (or (and (not (and (or (and x1 x1) (and x1 x1)) (and (and x0 x0) (not x0)))) (not (and (not (or x0 x0)) (or (not x1) (not x0))))) (not (or (and (not (and x1 x0)) (not (or x1 x1))) (not (or (not x1) (not x0)))))) (and (not (not (or (or (or x0 x0) (not x1)) (and (or x0 x1) (or x1 x1))))) (not (not (or (or (not x1) (not x0)) (or (not x0) (not x1))))))) (or (and (and (and (not (and (and x0 x1) (and x0 x0))) (and (or (and x0 x1) (not x0)) (or (not x1) (or x1 x0)))) (or (and (n [...]
+(assert (or (and (or (and (or (and (and (or x1 x0) (not x1)) (and (and x0 x1) (not x0))) (not (or (and x1 x0) (or x0 x1)))) (and (or (not (or x0 x0)) (not (not x0))) (not (or (not x0) (or x0 x0))))) (and (not (and (and (and x1 x0) (or x1 x0)) (and (or x1 x1) (not x1)))) (not (not (not (and x1 x0)))))) (and (not (and (not (and (or x1 x1) (or x0 x0))) (not (or (or x1 x1) (and x0 x0))))) (and (or (not (not (not x0))) (not (not (or x0 x0)))) (and (or (and (or x0 x1) (and x1 x1)) (and (not x1 [...]
+(assert (not x0))
+(check-sat)
+(pop 1)
+(check-sat)
+(pop 1)
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_38.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_38.smt2
new file mode 100644
index 0000000..7707698
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_38.smt2
@@ -0,0 +1,37 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(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)
+(assert (not (not (not (and (not (or (or (or (and x8 x3) (not x7)) (and (and x4 x3) (not x8))) (or (or (and x2 x7) (and x8 x0)) (and (or x2 x2) (or x8 x2))))) (or (not (or (or (or x5 x6) (or x8 x3)) (not (and x7 x6)))) (and (and (and (and x8 x1) (not x4)) (or (and x2 x7) (and x4 x2))) (and (and (not x3) (not x5)) (and (not x3) (or x5 x6))))))))))
+(assert (and (and (not (or (or (not (not (and (not x1) (or x6 x3)))) (not (not (or (and x4 x8) (and x5 x4))))) (and (and (and (not (not x7)) (or (not x2) (or x4 x5))) (or (not (and x1 x5)) (or (not x2) (not x4)))) (and (not (and (not x6) (or x7 x0))) (or (or (and x2 x8) (and x0 x0)) (and (and x3 x3) (and x4 x3))))))) (not (not (not (or (or (and (or x1 x3) (not x0)) (not (not x7))) (not (or (and x2 x5) (and x8 x5)))))))) (not (not (or (and (or (or (not (or x1 x2)) (not (or x6 x3))) (not ( [...]
+(check-sat)
+(push 1)
+(assert (or x8 x2))
+(assert (not (and (and (or (not (not (not (and x3 x3)))) (or (not (not (not x4))) (and (or (not x1) (or x8 x7)) (not (and x3 x7))))) (or (not (or (not (or x1 x7)) (or (and x0 x2) (and x1 x4)))) (not (not (or (and x5 x2) (and x3 x3)))))) (not (and (or (or (or (not x4) (and x0 x6)) (or (not x1) (not x1))) (and (and (not x8) (or x1 x3)) (or (and x1 x7) (and x2 x0)))) (and (not (not (not x5))) (or (or (not x1) (or x5 x5)) (and (not x7) (or x1 x5)))))))))
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (and x0 x2))
+(check-sat)
+(pop 1)
+(assert (not (or (not (not x3)) (or (not x8) (and x8 x6)))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_39.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_39.smt2
new file mode 100644
index 0000000..abadcc2
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_39.smt2
@@ -0,0 +1,82 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(declare-fun x5 () Bool)
+(check-sat)
+(push 1)
+(assert (and (or (and (and (not (or x2 x1)) (not (or x5 x3))) (or (and (not x3) (or x1 x3)) (or (and x1 x0) (and x5 x0)))) (and (not (or (not x5) (not x0))) (not (and (or x5 x0) (and x4 x2))))) (and (not (not (not (not x0)))) (or (and (not (or x2 x3)) (and (or x0 x2) (not x2))) (or (not (not x3)) (or (and x1 x3) (and x2 x2)))))))
+(check-sat)
+(push 1)
+(assert (not x1))
+(check-sat)
+(push 1)
+(assert (or (or (and (and (or (not (not x3)) (not (and x4 x2))) (and (and (or x4 x3) (and x2 x3)) (or (or x3 x5) (and x2 x5)))) (and (and (not (or x2 x4)) (not (or x5 x1))) (not (not (and x1 x0))))) (and (and (or (and (not x1) (not x4)) (not (and x5 x3))) (and (and (or x0 x3) (not x4)) (or (and x0 x0) (not x5)))) (not (not (not (and x2 x4)))))) (or (or (and (not (not (or x5 x4))) (or (or (and x0 x5) (or x3 x3)) (or (not x5) (and x4 x5)))) (and (and (not (and x4 x0)) (or (or x4 x3) (and x [...]
+(check-sat)
+(pop 1)
+(check-sat)
+(pop 1)
+(assert (not (not (or (not x0) (not x4)))))
+(assert (not (not (and (and x0 x0) (not x0)))))
+(check-sat)
+(pop 1)
+(assert (or (or (not (and (or (or (and (and (or x1 x1) (not x5)) (or (or x1 x5) (and x4 x1))) (or (or (or x0 x1) (or x4 x1)) (and (or x1 x4) (and x1 x1)))) (not (not (or (or x0 x2) (and x0 x2))))) (not (and (and (not (not x0)) (not (and x1 x2))) (not (not (and x4 x3))))))) (not (not (and (not (and (or (or x3 x3) (and x3 x3)) (or (not x2) (or x4 x3)))) (not (and (or (or x0 x4) (and x1 x2)) (or (not x0) (and x1 x0)))))))) (or (and (and (not (not (and (or (or x5 x4) (and x5 x0)) (and (and x [...]
+(check-sat)
+(push 1)
+(assert (and (and (or (or (not (and (and (and (or (and x0 x1) (not x0)) (and (and x0 x4) (and x3 x3))) (not (and (not x5) (not x2)))) (not (and (not (not x0)) (not (not x4)))))) (not (or (not (and (not (and x4 x1)) (and (or x2 x3) (or x4 x1)))) (and (and (and (or x4 x3) (or x0 x1)) (not (or x0 x5))) (or (or (and x2 x2) (not x0)) (and (or x2 x3) (or x5 x5))))))) (or (or (and (or (and (not (and x5 x1)) (not (or x1 x3))) (not (not (or x2 x3)))) (and (or (not (or x3 x3)) (not (and x0 x2))) ( [...]
+(assert (and (and (or (and (not (or (and (or (not x4) (not x3)) (and (or x0 x0) (and x4 x3))) (and (not (not x2)) (and (and x2 x4) (and x0 x1))))) (and (not (and (and (or x0 x5) (not x0)) (not (and x1 x5)))) (or (not (and (and x1 x2) (not x5))) (not (not (not x3)))))) (and (not (and (and (or (and x5 x2) (not x0)) (not (or x3 x2))) (and (or (and x0 x1) (and x3 x5)) (or (not x1) (not x1))))) (and (or (and (and (and x0 x4) (not x0)) (not (and x0 x2))) (or (and (not x4) (or x0 x2)) (and (and [...]
+(assert (not (or x0 x1)))
+(assert (or (not (and (or (or (or (or x2 x2) (or x3 x3)) (or (or x0 x2) (not x2))) (and (not (or x4 x2)) (not (not x2)))) (or (not (or (and x4 x1) (or x5 x4))) (and (not (not x1)) (and (and x2 x5) (and x2 x5)))))) (or (or (and (not (not (not x0))) (and (not (not x1)) (or (or x2 x1) (and x1 x1)))) (and (or (or (and x1 x5) (or x5 x1)) (not (and x1 x2))) (not (not (and x1 x3))))) (or (not (not (not (not x4)))) (or (not (and (and x4 x0) (and x0 x4))) (and (not (not x1)) (not (not x0))))))))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (and (and (or (or (not (and (not (and (or x2 x2) (not x0))) (and (and (or x5 x4) (not x3)) (and (or x3 x3) (or x5 x3))))) (not (and (not (and (or x2 x2) (or x2 x4))) (or (or (not x0) (or x1 x0)) (and (or x2 x5) (not x5)))))) (not (or (and (not (and (and x2 x3) (not x4))) (not (or (not x2) (or x0 x4)))) (not (and (not (not x4)) (or (and x2 x5) (and x2 x4))))))) (or (not (not (not (or (not (or x2 x5)) (or (and x3 x1) (or x2 x3)))))) (and (and (not (and (not (not x3)) (and (or x2 x1 [...]
+(check-sat)
+(pop 1)
+(assert (and (and (not (not (or (or x1 x0) (not x4)))) (not (and (and (or x2 x0) (not x5)) (or (not x5) (and x3 x2))))) (or (and (or (not (not x2)) (not (and x1 x3))) (and (not (or x2 x3)) (or (and x3 x0) (and x4 x2)))) (not (or (not (not x3)) (not (or x0 x5)))))))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (and (and (and (not x2) (not x5)) (or (not x0) (and x4 x3))) (and (or (and x1 x2) (not x0)) (or (not x3) (and x3 x0)))))
+(assert (and (not (not x5)) (and (or x2 x0) (or x2 x1))))
+(assert (or (and (and (and (and (or (and (not (or x4 x2)) (or (not x0) (and x3 x5))) (and (not (and x1 x2)) (or (not x3) (and x2 x3)))) (or (not (or (or x1 x1) (or x0 x5))) (not (or (or x3 x5) (or x1 x3))))) (not (and (not (not (and x4 x0))) (not (and (or x5 x3) (or x0 x5)))))) (or (or (not (not (or (or x3 x0) (not x0)))) (or (and (or (and x2 x4) (not x4)) (and (and x0 x3) (not x0))) (not (or (or x4 x1) (or x3 x4))))) (and (or (and (and (not x4) (not x2)) (not (not x3))) (not (not (or x2 [...]
+(assert (or (or x4 x1) (not x5)))
+(check-sat)
+(pop 1)
+(assert (or (or (or (or (and (not x5) (or x4 x2)) (not (or x4 x3))) (not (and (and x1 x2) (and x0 x0)))) (and (not (not (not x2))) (or (and (not x0) (not x3)) (and (or x4 x4) (not x3))))) (or (and (or (and (or x3 x0) (not x5)) (not (not x0))) (not (or (not x5) (or x2 x5)))) (or (and (and (not x0) (not x3)) (or (and x5 x0) (not x5))) (not (not (or x3 x0)))))))
+(assert (or (and (or (or x0 x3) (or x3 x4)) (not (or x5 x3))) (or (and (or x2 x3) (not x4)) (not (not x1)))))
+(assert (and (or (or (not (not (or (not (and (or (or x2 x0) (and x3 x4)) (and (not x4) (not x5)))) (or (or (not (or x5 x4)) (or (not x5) (or x5 x2))) (and (not (and x2 x2)) (or (or x5 x1) (or x3 x2))))))) (not (or (and (and (not (and (and x5 x2) (or x0 x0))) (not (and (not x3) (not x2)))) (not (and (not (or x4 x4)) (and (not x1) (or x3 x3))))) (or (or (or (not (not x5)) (and (and x2 x0) (not x2))) (or (not (and x4 x3)) (or (or x2 x2) (and x0 x0)))) (not (not (or (not x0) (not x0))))))))  [...]
+(check-sat)
+(push 1)
+(assert (or (not (or (or (or (or (or (not (or (not x2) (or x5 x5))) (or (or (and x4 x2) (not x4)) (or (not x1) (or x3 x2)))) (or (and (or (or x2 x3) (and x5 x0)) (and (or x0 x2) (not x2))) (or (not (not x2)) (or (and x0 x3) (or x2 x3))))) (or (and (not (and (or x3 x2) (and x3 x2))) (not (and (and x0 x1) (not x1)))) (or (not (and (and x5 x1) (or x0 x5))) (not (and (and x1 x5) (and x1 x1)))))) (or (and (and (or (or (not x5) (not x2)) (and (and x3 x4) (not x4))) (or (and (not x0) (or x3 x1) [...]
+(assert (and (not (and (not (not (not (or (and x5 x1) (or x2 x2))))) (not (not (not (and (or x2 x4) (and x0 x1))))))) (not (or (or (and (or (and (and x3 x3) (and x5 x0)) (not (and x0 x3))) (and (not (not x5)) (or (and x2 x2) (and x3 x3)))) (not (not (or (and x2 x5) (and x3 x3))))) (or (not (and (or (and x4 x3) (or x3 x1)) (and (or x1 x0) (or x1 x3)))) (not (and (and (or x4 x1) (not x0)) (not (not x5)))))))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_4.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_4.smt2
new file mode 100644
index 0000000..db191f6
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_4.smt2
@@ -0,0 +1,58 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(declare-fun x5 () Bool)
+(declare-fun x6 () Bool)
+(declare-fun x7 () Bool)
+(assert (or (and (not (or (or (or (and (or (and (and x7 x2) (or x6 x4)) (not (not x3))) (or (not (or x1 x2)) (and (or x1 x1) (and x5 x5)))) (or (and (and (or x2 x5) (and x6 x6)) (not (and x5 x6))) (and (and (and x5 x5) (or x1 x6)) (or (or x0 x3) (and x2 x4))))) (not (and (and (or (and x4 x4) (and x2 x4)) (or (and x0 x6) (or x6 x5))) (not (or (and x6 x7) (or x4 x4)))))) (and (not (or (or (or (not x6) (and x5 x6)) (or (and x2 x4) (or x6 x7))) (or (or (or x2 x5) (and x3 x6)) (or (and x5 x1) [...]
+(assert (or (or x2 x1) (or x2 x4)))
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (not (or (and (not (or (or x5 x0) (or x7 x1))) (and (not (not x4)) (not (not x6)))) (not (not (or (or x4 x3) (not x2)))))))
+(assert (and (and (and (and (not (not (and (or (and x7 x4) (and x7 x6)) (or (or x6 x5) (or x5 x3))))) (or (not (not (or (and x6 x6) (or x2 x6)))) (not (or (and (or x7 x5) (not x3)) (or (not x7) (not x0)))))) (or (or (and (or (not (not x1)) (and (or x0 x0) (and x4 x7))) (not (or (or x4 x5) (and x2 x5)))) (not (and (or (or x7 x0) (or x3 x1)) (not (and x3 x2))))) (and (not (and (not (or x4 x0)) (not (not x7)))) (and (not (not (and x1 x0))) (or (and (or x5 x5) (and x4 x5)) (not (not x6)))))) [...]
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(pop 1)
+(assert (not (and (not (not (and (or (or (and x3 x5) (or x2 x6)) (not (not x7))) (or (not (and x2 x7)) (or (and x0 x1) (or x6 x1)))))) (not (and (not (not (or (or x0 x7) (and x1 x1)))) (not (or (not (or x4 x4)) (or (or x1 x4) (and x3 x3)))))))))
+(assert (or x5 x7))
+(check-sat)
+(push 1)
+(assert (and (or (not (not (or x5 x3))) (and (or (or x4 x5) (or x2 x1)) (and (not x5) (and x1 x3)))) (not (and (or (not x0) (not x7)) (not (not x5))))))
+(assert (or (and (not (and (or (and (or (and x2 x3) (not x4)) (or (and x1 x1) (or x3 x5))) (or (not (and x4 x7)) (and (and x1 x2) (or x4 x0)))) (and (not (not (or x0 x3))) (or (not (not x4)) (and (and x1 x5) (not x2)))))) (and (or (not (not (or (and x1 x5) (not x5)))) (and (or (and (not x6) (or x7 x3)) (or (and x7 x0) (and x4 x4))) (not (not (not x5))))) (and (and (not (and (and x2 x4) (or x4 x1))) (or (and (and x4 x0) (not x2)) (and (or x6 x2) (and x5 x2)))) (not (not (not (not x7)))))) [...]
+(assert (or (not (or (not (not (or (and (and (and x5 x4) (not x4)) (or (not x6) (and x2 x1))) (or (and (or x0 x7) (not x5)) (not (and x7 x4)))))) (not (and (and (or (and (or x7 x3) (not x3)) (or (not x5) (not x3))) (not (not (not x7)))) (not (or (not (or x2 x4)) (not (and x3 x0)))))))) (and (not (not (or (and (or (and (not x7) (not x1)) (not (not x4))) (not (and (or x4 x1) (or x3 x5)))) (or (not (and (not x3) (and x3 x6))) (and (not (or x0 x5)) (not (and x5 x6))))))) (or (not (not (not ( [...]
+(assert (not (or (or (and (and (and (or (and (or x5 x5) (or x6 x6)) (and (and x1 x2) (not x5))) (and (or (not x7) (or x1 x1)) (and (and x2 x2) (and x2 x5)))) (not (not (and (not x4) (not x1))))) (and (or (not (not (not x2))) (and (and (not x7) (or x4 x5)) (and (and x6 x2) (not x1)))) (not (and (not (or x4 x0)) (or (and x3 x4) (or x4 x6)))))) (and (and (or (and (not (not x5)) (not (not x6))) (or (not (not x0)) (and (or x5 x4) (not x5)))) (and (or (not (and x2 x3)) (and (or x7 x0) (and x6  [...]
+(assert (not x0))
+(assert (and x0 x7))
+(assert (not (not (or (and x6 x2) (and x0 x6)))))
+(assert (or (not x2) (and x5 x0)))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (not (not (and (or (or x0 x0) (and x3 x5)) (not (not x4))))))
+(check-sat)
+(pop 1)
+(assert (and (not (or (and x6 x2) (not x4))) (not (and (or x1 x7) (or x0 x6)))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_40.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_40.smt2
new file mode 100644
index 0000000..dfde9ee
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_40.smt2
@@ -0,0 +1,41 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (not (and (not (or (and (or (or x0 x3) (or x2 x1)) (and (or x1 x0) (not x0))) (or (and (not x2) (and x2 x3)) (not (and x2 x1))))) (and (not (and (or (and x3 x1) (not x2)) (not (or x3 x3)))) (or (not (and (and x1 x2) (and x0 x0))) (or (or (or x3 x2) (not x1)) (or (and x3 x2) (not x0))))))))
+(check-sat)
+(push 1)
+(assert (and (and x3 x1) (and x2 x2)))
+(check-sat)
+(pop 1)
+(assert (or (or (and (not (or (and (not (and (not (not x1)) (or (and x0 x2) (and x0 x3)))) (not (not (and (not x1) (and x0 x3))))) (not (not (not (and (not x0) (not x2))))))) (not (or (not (and (not (or (or x1 x1) (not x1))) (not (or (not x3) (or x3 x0))))) (not (or (not (or (or x2 x0) (not x3))) (and (not (and x0 x2)) (not (and x2 x3)))))))) (and (or (not (or (not (not (or (or x3 x2) (and x2 x3)))) (and (or (or (not x3) (or x0 x2)) (not (and x1 x2))) (or (and (or x3 x2) (not x0)) (and ( [...]
+(check-sat)
+(push 1)
+(assert (or (or (not x3) (and x3 x0)) (not (and x3 x1))))
+(assert (not x0))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (or (not (or (or (and (and (not (or (not x1) (and x1 x1))) (and (and (or x3 x3) (not x2)) (and (not x0) (or x2 x1)))) (not (or (or (and x0 x2) (not x2)) (not (and x0 x1))))) (not (and (or (and (and x0 x1) (not x0)) (or (and x0 x2) (or x1 x3))) (and (or (or x3 x1) (and x3 x1)) (or (or x3 x1) (not x0)))))) (and (and (not (not (not (or x1 x2)))) (or (or (or (not x1) (and x0 x3)) (and (not x2) (not x0))) (or (or (not x1) (not x1)) (and (and x2 x1) (not x2))))) (not (not (and (not (or [...]
+(check-sat)
+(pop 1)
+(assert (not (and (and (and (or (or (or (and x0 x2) (and x1 x3)) (or (not x0) (and x2 x1))) (and (or (and x0 x2) (not x2)) (or (not x3) (and x1 x0)))) (or (not (or (and x1 x1) (or x1 x3))) (and (and (and x0 x0) (and x2 x2)) (and (not x0) (or x2 x3))))) (not (not (and (not (or x0 x2)) (or (and x1 x2) (or x2 x3)))))) (or (and (or (not (or (not x3) (or x1 x1))) (and (not (or x2 x2)) (or (or x3 x3) (and x3 x3)))) (not (or (or (and x2 x2) (and x1 x2)) (not (not x1))))) (not (not (not (and (or [...]
+(assert (or (not (and (not x1) (not x3))) (or (not (and x2 x0)) (and (or x1 x0) (or x2 x1)))))
+(assert (and (not (or (and x2 x0) (not x0))) (or (not (and x1 x1)) (and (and x1 x3) (and x3 x3)))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_41.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_41.smt2
new file mode 100644
index 0000000..b6d2e88
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_41.smt2
@@ -0,0 +1,25 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(check-sat)
+(push 1)
+(assert (or (or (or (and (and (not (and (or x0 x0) (not x0))) (not (or (or x2 x2) (not x0)))) (or (or (not (or x0 x0)) (or (and x0 x2) (or x0 x2))) (and (and (and x1 x1) (and x2 x1)) (not (not x2))))) (and (not (not (and (not x2) (and x0 x2)))) (not (not (and (not x2) (not x1)))))) (not (or (and (not (and (not x2) (not x0))) (and (not (not x0)) (and (not x1) (and x2 x2)))) (and (not (and (not x2) (or x1 x0))) (or (or (or x1 x0) (or x0 x0)) (or (or x0 x0) (not x1))))))) (not (not (not (an [...]
+(assert (or (not (or (and (or (or x0 x0) (or x2 x2)) (and (not x1) (or x2 x2))) (and (not (not x1)) (and (or x0 x0) (or x0 x1))))) (not (and (or (and (and x1 x2) (not x1)) (not (not x2))) (not (and (and x2 x0) (not x1)))))))
+(assert (or (not (not x2)) (not (not x0))))
+(assert (not (or (not (or (and (and (and x0 x0) (or x1 x1)) (or (or x0 x2) (not x1))) (not (or (or x0 x1) (or x0 x0))))) (not (not (not (or (or x1 x1) (not x2))))))))
+(check-sat)
+(pop 1)
+(assert (not (and (not (and (and (or (and (and (or (not x0) (not x1)) (and (or x1 x1) (not x2))) (and (and (or x1 x0) (and x1 x2)) (and (not x0) (not x2)))) (not (or (or (or x1 x0) (not x1)) (or (or x0 x1) (not x2))))) (or (or (and (not (not x0)) (or (or x0 x1) (not x0))) (or (not (or x0 x2)) (not (or x0 x0)))) (not (and (or (and x1 x1) (not x0)) (or (and x1 x1) (or x1 x0)))))) (or (and (not (or (not (and x0 x0)) (and (and x0 x2) (and x2 x0)))) (not (and (and (or x0 x2) (and x0 x2)) (and [...]
+(check-sat)
+(push 1)
+(assert (or (and (and (or (or (and (not (and (or (or x2 x0) (or x0 x1)) (not (or x2 x1)))) (or (not (not (not x2))) (not (not (or x1 x1))))) (or (or (and (or (and x2 x0) (not x1)) (or (or x2 x2) (and x1 x2))) (or (or (and x0 x0) (and x2 x0)) (or (not x2) (or x0 x1)))) (and (or (and (or x0 x0) (or x2 x0)) (not (not x1))) (not (and (or x1 x2) (or x1 x1)))))) (and (not (not (and (or (or x1 x0) (and x1 x1)) (not (or x1 x0))))) (and (and (and (or (or x0 x2) (and x0 x2)) (and (and x2 x2) (and  [...]
+(check-sat)
+(pop 1)
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_42.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_42.smt2
new file mode 100644
index 0000000..2e73776
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_42.smt2
@@ -0,0 +1,48 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(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)
+(assert (or (and (and (or (or (not (not (not (and x3 x2)))) (and (and (or (and x1 x1) (not x9)) (or (or x9 x5) (not x5))) (or (not (or x6 x3)) (not (not x5))))) (or (not (or (and (and x2 x5) (or x5 x6)) (not (or x0 x5)))) (not (or (or (or x0 x6) (not x1)) (not (not x9)))))) (or (and (not (or (or (not x2) (and x9 x9)) (or (not x6) (and x8 x5)))) (and (or (not (not x8)) (not (not x5))) (and (or (or x7 x1) (and x6 x9)) (or (and x5 x5) (and x0 x8))))) (and (and (or (or (not x9) (and x3 x0))  [...]
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (and (or (or x0 x9) (not x9)) (not (or x8 x3))))
+(check-sat)
+(push 1)
+(assert (or (not (not (and x5 x8))) (not (not (not x7)))))
+(check-sat)
+(pop 1)
+(assert (not (not (or (or (not x4) (not x5)) (not (not x6))))))
+(assert (not (not (and (and x8 x5) (or x4 x1)))))
+(assert (and (not (not (or (or (and (and (or (and x7 x6) (or x2 x3)) (or (or x3 x4) (not x6))) (or (not (or x9 x1)) (not (and x7 x8)))) (and (not (not (and x2 x0))) (not (and (not x7) (or x3 x3))))) (and (or (and (not (and x2 x0)) (and (or x5 x9) (and x4 x2))) (or (or (not x2) (and x4 x4)) (or (and x4 x7) (not x0)))) (and (or (not (not x8)) (or (or x2 x0) (or x2 x6))) (and (and (not x3) (or x9 x9)) (or (not x2) (and x4 x6)))))))) (not (or (not (not (and (not (or (and x7 x9) (or x0 x0)))  [...]
+(assert (or (not (and x0 x3)) (or (or x0 x1) (or x2 x7))))
+(check-sat)
+(pop 1)
+(assert (or x4 x9))
+(check-sat)
+(push 1)
+(assert (or (or (or (not (or x9 x3)) (and (and x1 x9) (not x3))) (not (or (or x6 x1) (or x9 x8)))) (and (and (not (and x0 x6)) (and (not x0) (not x2))) (and (and (or x4 x5) (or x2 x8)) (and (and x5 x1) (and x4 x9))))))
+(check-sat)
+(pop 1)
+(assert (and (not (or (and (not (not (not (or x9 x5)))) (not (or (not (or x5 x4)) (not (or x8 x9))))) (and (or (not (and (or x0 x0) (not x8))) (not (or (and x7 x5) (or x0 x2)))) (or (not (not (not x2))) (and (and (or x0 x4) (and x2 x2)) (and (and x6 x7) (not x9))))))) (and (and (not (not (or (or (not x8) (and x9 x1)) (and (and x5 x8) (or x9 x3))))) (and (and (not (or (not x7) (and x0 x9))) (and (not (and x3 x4)) (not (or x4 x0)))) (or (or (and (and x0 x0) (or x1 x5)) (and (and x7 x5) (an [...]
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_43.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_43.smt2
new file mode 100644
index 0000000..88349db
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_43.smt2
@@ -0,0 +1,53 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(check-sat)
+(push 1)
+(assert (not (not (or (and (or (or x1 x1) (and x0 x1)) (or (or x2 x0) (or x0 x0))) (not (and (or x2 x0) (not x1)))))))
+(assert (and (and x0 x1) (and x1 x0)))
+(assert (or (not (or (or (or (and (or (and (and x1 x2) (and x1 x1)) (and (not x1) (and x2 x0))) (or (not (not x2)) (or (and x1 x1) (and x2 x1)))) (or (or (not (or x1 x2)) (and (or x0 x2) (or x2 x1))) (not (or (and x1 x2) (or x2 x0))))) (or (not (or (and (or x2 x0) (or x2 x1)) (and (not x2) (and x2 x1)))) (or (not (and (or x2 x1) (and x2 x2))) (and (and (not x1) (and x0 x2)) (and (and x0 x2) (or x1 x2)))))) (not (and (or (or (or (not x2) (and x0 x1)) (or (or x2 x2) (or x2 x2))) (and (and  [...]
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (not (and (not (and x1 x1)) (and (and x0 x0) (not x2)))))
+(check-sat)
+(push 1)
+(assert (or (and (or (and (or (and x0 x0) (not x0)) (and (and x1 x0) (or x0 x1))) (or (or (or x1 x1) (and x2 x2)) (not (and x0 x0)))) (or (and (and (and x2 x0) (not x1)) (or (or x2 x2) (and x0 x0))) (and (or (and x1 x1) (and x2 x1)) (and (not x0) (and x1 x0))))) (not (not (or (or (or x1 x1) (or x1 x0)) (not (or x2 x1)))))))
+(assert (not (not (and (and (or (or (and x0 x2) (or x2 x0)) (and (and x1 x1) (or x1 x2))) (and (or (and x1 x0) (not x1)) (or (and x0 x0) (not x2)))) (not (and (not (or x2 x0)) (not (not x0))))))))
+(assert (not (or (and (and x1 x0) (not x2)) (or (or x2 x1) (or x0 x2)))))
+(assert (or (not (and (or (and (or (not (or (and x1 x0) (not x2))) (and (not (or x2 x1)) (not (or x0 x2)))) (and (not (and (not x2) (or x0 x2))) (not (or (not x0) (and x0 x2))))) (or (not (and (and (or x1 x2) (not x1)) (or (not x0) (or x0 x1)))) (or (and (and (not x1) (and x2 x1)) (and (and x2 x1) (or x1 x0))) (or (not (or x1 x1)) (or (or x1 x2) (not x1)))))) (not (or (not (not (not (or x1 x0)))) (not (or (and (or x0 x0) (not x2)) (not (or x1 x2)))))))) (or (and (or (not (or (or (or (and [...]
+(check-sat)
+(pop 1)
+(check-sat)
+(pop 1)
+(assert (not (and (and (or (and x0 x2) (not x2)) (and (and x1 x0) (not x0))) (not (and (and x2 x1) (or x0 x1))))))
+(check-sat)
+(push 1)
+(assert (and (not (and (or (not (and (and (not (not (or x2 x1))) (or (not (or x2 x2)) (and (not x2) (and x0 x1)))) (or (and (not (or x1 x2)) (and (and x2 x1) (or x2 x0))) (not (and (or x1 x2) (not x0)))))) (not (or (or (not (not (not x2))) (not (or (or x1 x1) (and x0 x1)))) (or (and (not (not x0)) (and (or x0 x0) (not x1))) (or (not (and x1 x2)) (and (and x0 x0) (and x1 x0))))))) (and (and (or (or (and (or (and x2 x0) (not x0)) (or (or x2 x1) (and x2 x1))) (or (or (or x2 x1) (not x0)) (o [...]
+(check-sat)
+(push 1)
+(assert (or (and (and (and (not (or (or (or (not x1) (and x2 x0)) (or (not x1) (or x0 x1))) (not (or (not x1) (or x1 x0))))) (and (or (or (and (not x2) (not x1)) (or (or x2 x2) (or x1 x0))) (not (and (and x0 x1) (or x0 x2)))) (not (or (or (and x1 x0) (or x0 x2)) (and (and x1 x1) (or x0 x0)))))) (not (and (not (not (or (or x0 x2) (not x2)))) (or (not (not (and x2 x2))) (not (not (and x1 x1))))))) (not (not (or (and (not (not (not x0))) (and (or (not x2) (not x2)) (not (and x0 x0)))) (or ( [...]
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (and x2 x2))
+(check-sat)
+(push 1)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_44.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_44.smt2
new file mode 100644
index 0000000..968d30c
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_44.smt2
@@ -0,0 +1,30 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(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)
+(assert (or (not (not (and (and (not (not (not (not (or x2 x4))))) (and (not (or (not (not x4)) (or (or x2 x8) (or x3 x7)))) (and (or (or (not x8) (not x8)) (not (not x5))) (or (not (not x3)) (or (or x3 x7) (or x5 x2)))))) (or (and (and (or (and (and x8 x5) (not x5)) (and (or x8 x6) (not x7))) (and (and (or x7 x2) (or x6 x5)) (and (or x8 x6) (and x4 x0)))) (not (or (and (not x3) (and x6 x6)) (or (not x8) (or x1 x3))))) (and (not (and (or (and x5 x0) (not x0)) (or (or x8 x3) (or x0 x5)))) [...]
+(assert (or (and (or (and (and (not (and x5 x1)) (and (and x6 x6) (and x6 x4))) (not (not (and x4 x1)))) (and (or (not (or x5 x0)) (or (and x4 x0) (not x2))) (and (and (or x4 x3) (or x5 x4)) (and (or x0 x3) (and x2 x5))))) (and (and (and (not (or x7 x7)) (or (and x5 x4) (or x0 x2))) (not (not (or x7 x6)))) (and (not (or (and x4 x2) (and x4 x3))) (or (and (and x1 x5) (not x3)) (or (and x2 x0) (or x7 x2)))))) (or (or (and (or (not (and x2 x6)) (or (not x3) (and x6 x4))) (or (not (and x7 x0 [...]
+(check-sat)
+(push 1)
+(assert (and (or (or x8 x0) (and x1 x0)) (and (and x6 x5) (not x3))))
+(assert (and x6 x2))
+(check-sat)
+(pop 1)
+(assert (and (and (or x0 x6) (not x3)) (or (and x7 x7) (and x7 x3))))
+(assert (not (not (not (or x5 x3)))))
+(assert (not (and (and (and (not (and x2 x3)) (or (and x1 x5) (or x4 x2))) (or (or (or x4 x7) (and x5 x1)) (and (not x1) (and x1 x4)))) (or (or (and (not x6) (not x1)) (and (not x4) (or x6 x5))) (not (not (and x4 x8)))))))
+(assert (and (or (not (and (not (or (or (or (not x2) (not x0)) (or (or x6 x0) (or x7 x6))) (or (or (or x2 x3) (not x5)) (and (and x4 x6) (and x3 x0))))) (and (and (or (not (not x3)) (or (not x6) (and x6 x1))) (not (and (not x4) (and x3 x5)))) (and (not (not (and x1 x8))) (or (or (not x5) (and x4 x7)) (and (and x5 x4) (or x8 x7))))))) (or (and (not (or (or (or (not x2) (not x2)) (not (or x5 x2))) (not (and (and x6 x5) (and x0 x1))))) (or (not (or (and (and x7 x8) (and x5 x3)) (not (and x6 [...]
+(assert (or (or (and (and (not x7) (or x2 x6)) (or (and x3 x2) (and x8 x1))) (not (or (and x6 x5) (or x7 x1)))) (or (and (not (not x4)) (and (and x2 x5) (or x4 x1))) (not (not (or x7 x5))))))
+(assert (or (or (and (and (and (not (or (and x4 x7) (or x6 x2))) (and (or (and x2 x8) (or x2 x4)) (and (or x4 x2) (or x7 x7)))) (or (not (or (or x3 x2) (not x1))) (and (or (or x4 x8) (or x8 x1)) (and (not x6) (and x5 x1))))) (and (and (or (not (not x3)) (and (not x1) (and x1 x5))) (not (and (and x5 x4) (or x6 x7)))) (not (or (or (not x4) (and x2 x8)) (and (not x1) (or x3 x2)))))) (not (or (not (or (or (and x2 x4) (or x5 x6)) (not (not x8)))) (not (or (not (or x1 x5)) (not (or x4 x5)))))) [...]
+(assert (not (and (and (or x3 x2) (or x1 x8)) (and (and x5 x5) (not x8)))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_45.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_45.smt2
new file mode 100644
index 0000000..1294df4
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_45.smt2
@@ -0,0 +1,51 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(declare-fun x5 () Bool)
+(declare-fun x6 () Bool)
+(assert (or (or (not (and (or (or (not (and (or x6 x3) (not x4))) (and (or (and x2 x3) (not x3)) (and (or x4 x1) (or x4 x3)))) (or (and (not (and x2 x5)) (and (and x2 x0) (and x5 x0))) (and (or (or x1 x4) (and x0 x0)) (or (and x1 x2) (not x5))))) (or (or (or (and (and x6 x5) (not x6)) (and (and x2 x3) (not x4))) (and (not (or x5 x0)) (or (and x1 x3) (and x1 x5)))) (and (not (or (and x0 x5) (and x2 x0))) (or (or (or x6 x2) (not x1)) (or (and x3 x6) (and x4 x2))))))) (and (not (or (or (not [...]
+(assert (or (and (or (and (or (and (not (and (and x5 x5) (not x6))) (not (not (not x3)))) (and (and (and (and x5 x0) (and x4 x3)) (not (and x2 x1))) (not (or (and x1 x3) (and x0 x6))))) (not (and (not (and (or x4 x1) (not x0))) (and (not (or x3 x3)) (or (or x4 x4) (not x3)))))) (or (or (not (or (and (or x3 x2) (or x3 x1)) (not (and x6 x4)))) (not (and (not (or x1 x6)) (or (not x2) (or x1 x6))))) (and (not (or (and (not x3) (and x1 x4)) (and (or x4 x1) (and x6 x6)))) (not (or (and (or x2  [...]
+(check-sat)
+(push 1)
+(assert (or (not (not (not x6))) (and (or (and x1 x1) (not x2)) (and (or x4 x3) (not x1)))))
+(assert (not (and (and x0 x3) (or x3 x4))))
+(assert (or (and x5 x3) (not x4)))
+(assert (or (or (or (not (not (or (or (and x3 x2) (and x1 x2)) (and (or x5 x5) (not x6))))) (not (and (and (and (not x6) (or x1 x0)) (or (or x3 x3) (or x3 x3))) (and (or (and x0 x4) (not x3)) (or (not x1) (and x0 x6)))))) (and (and (or (or (not (and x6 x5)) (and (not x5) (or x6 x2))) (not (and (and x6 x2) (not x3)))) (not (or (or (not x5) (not x4)) (or (and x3 x6) (or x6 x1))))) (or (or (not (and (not x6) (or x1 x6))) (and (or (not x3) (and x1 x0)) (not (not x6)))) (not (not (not (not x2 [...]
+(assert (or (and (not (not (not (or (and (or (or x3 x5) (not x3)) (not (or x0 x5))) (or (or (not x3) (or x0 x2)) (or (not x3) (not x4))))))) (not (or (not (and (or (and (or x5 x1) (and x5 x2)) (not (not x5))) (not (or (not x1) (and x6 x6))))) (and (or (and (or (or x3 x1) (or x5 x4)) (and (not x2) (and x1 x2))) (and (or (and x0 x2) (and x6 x6)) (and (and x3 x4) (not x2)))) (or (and (not (not x2)) (and (not x3) (and x1 x5))) (and (not (or x1 x1)) (or (and x2 x5) (not x2)))))))) (and (or (n [...]
+(check-sat)
+(pop 1)
+(assert (or (and (not (and x2 x5)) (and (or x3 x4) (or x0 x3))) (or (or (not x1) (and x3 x3)) (not (or x5 x1)))))
+(check-sat)
+(push 1)
+(assert (not (not (not (or (or x2 x3) (and x2 x1))))))
+(assert (not (and (not (and (or (or x4 x4) (or x1 x5)) (or (and x1 x1) (or x4 x3)))) (or (or (and (not x6) (not x6)) (and (not x1) (or x3 x6))) (not (not (and x4 x0)))))))
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (and (and (not (not (and (or (and x6 x6) (and x4 x4)) (or (or x2 x1) (or x0 x2))))) (and (and (not (or (and x0 x5) (or x2 x4))) (not (or (not x1) (not x1)))) (or (and (and (not x1) (not x3)) (not (or x4 x6))) (or (or (or x2 x6) (or x3 x4)) (and (and x3 x3) (or x0 x1)))))) (or (not (not (or (not (not x4)) (and (or x6 x0) (or x2 x0))))) (or (not (and (and (and x1 x3) (not x4)) (not (and x0 x1)))) (or (and (or (or x6 x4) (or x0 x6)) (or (or x6 x4) (not x4))) (and (not (or x5 x3)) (a [...]
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(pop 1)
+(assert (or (and (or (not (or (or (or (or x1 x4) (and x3 x2)) (or (or x5 x1) (or x6 x2))) (or (not (and x3 x5)) (or (and x0 x1) (not x6))))) (and (and (and (or (and x3 x3) (or x2 x5)) (not (and x0 x4))) (not (not (not x4)))) (or (and (or (or x2 x1) (and x2 x2)) (not (or x1 x4))) (not (and (not x1) (and x0 x2)))))) (not (or (not (and (and (not x1) (and x3 x4)) (and (not x6) (or x6 x1)))) (not (not (and (or x2 x2) (and x4 x6))))))) (not (or (and (and (not (and (or x6 x5) (and x5 x2))) (not [...]
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_46.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_46.smt2
new file mode 100644
index 0000000..d680b0a
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_46.smt2
@@ -0,0 +1,49 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(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)
+(assert (or (or (not (not x7)) (or (or x2 x5) (or x8 x5))) (and (or (and x7 x8) (not x3)) (and (or x5 x7) (or x5 x1)))))
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (or (or (or (not x3) (or x4 x0)) (not (not x1))) (and (not (not x1)) (and (or x6 x8) (and x0 x8)))))
+(assert (and (not (and x7 x6)) (not (and x7 x8))))
+(assert (or x6 x3))
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (not (not (not (or x1 x2)))))
+(check-sat)
+(pop 1)
+(assert (or (or (and (not (not (or x8 x7))) (and (and (and x3 x8) (and x6 x0)) (not (and x1 x7)))) (or (or (not (not x4)) (or (and x0 x0) (and x6 x7))) (not (not (or x7 x5))))) (not (or (not (and (not x6) (not x1))) (or (or (and x3 x1) (not x6)) (or (and x5 x4) (not x4)))))))
+(check-sat)
+(push 1)
+(assert (and (not x2) (not x5)))
+(check-sat)
+(push 1)
+(assert (or (or (not (not (not (or (or (or x1 x5) (not x7)) (or (not x1) (or x4 x4)))))) (or (not (and (or (or (not x0) (or x8 x4)) (and (not x4) (or x5 x3))) (not (not (not x6))))) (not (or (and (or (or x4 x8) (not x8)) (and (or x8 x8) (or x6 x0))) (not (and (and x4 x0) (or x7 x5))))))) (or (not (or (and (and (not (and x1 x1)) (or (not x8) (not x5))) (and (not (and x0 x2)) (or (or x8 x4) (or x4 x6)))) (not (not (or (and x1 x7) (or x7 x0)))))) (not (not (and (and (and (or x4 x3) (or x0 x [...]
+(assert (or (and (and (not (not (and (or (not (and x3 x8)) (and (or x8 x0) (or x3 x5))) (not (or (or x7 x1) (and x6 x4)))))) (or (not (or (not (and (or x3 x8) (and x2 x1))) (and (not (or x6 x2)) (not (or x8 x6))))) (or (or (or (not (or x3 x6)) (not (not x1))) (or (or (and x4 x6) (or x6 x1)) (or (and x3 x3) (not x4)))) (or (or (and (or x0 x3) (or x6 x1)) (or (or x2 x5) (and x2 x4))) (or (not (not x1)) (not (or x5 x8))))))) (not (or (or (not (and (or (and x1 x4) (not x6)) (not (or x0 x7))) [...]
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_47.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_47.smt2
new file mode 100644
index 0000000..011b379
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_47.smt2
@@ -0,0 +1,22 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(check-sat)
+(push 1)
+(assert (or (and x1 x2) (and x1 x2)))
+(assert (or (and (or (and (and (and (and (and (not (or x1 x2)) (not (and x0 x2))) (or (and (and x1 x2) (not x2)) (or (or x1 x2) (not x1)))) (or (or (not (not x1)) (or (and x0 x2) (or x2 x2))) (and (not (or x0 x0)) (not (and x1 x1))))) (not (not (and (not (not x2)) (and (or x1 x0) (and x0 x2)))))) (and (and (or (not (not (or x0 x2))) (not (or (not x2) (or x2 x0)))) (not (not (not (not x1))))) (or (not (and (not (and x1 x0)) (not (and x0 x1)))) (not (or (not (or x2 x2)) (or (not x2) (and x [...]
+(assert (and x1 x2))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (not (and (or (and (not x2) (or x0 x1)) (or (not x1) (not x2))) (or (or (not x2) (or x0 x2)) (and (not x1) (or x1 x2))))))
+(assert (not (and (and x1 x2) (or x1 x1))))
+(assert (or (not (not x2)) (not (and x0 x2))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_48.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_48.smt2
new file mode 100644
index 0000000..13c6d87
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_48.smt2
@@ -0,0 +1,24 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(declare-fun x5 () Bool)
+(assert (and (or (not (not (and x0 x4))) (and (not (not x2)) (not (not x4)))) (not (or (not (or x2 x5)) (and (not x4) (not x1))))))
+(assert (and (and (not (and (and (not (and (and (and x5 x0) (not x4)) (or (and x0 x0) (or x0 x0)))) (or (or (not (or x5 x2)) (or (not x3) (or x4 x2))) (not (and (and x1 x0) (not x0))))) (and (not (or (and (or x1 x3) (and x1 x0)) (and (and x2 x0) (and x2 x3)))) (not (not (or (not x5) (not x5))))))) (or (or (or (and (or (and (not x2) (or x1 x0)) (not (not x1))) (and (and (and x4 x3) (or x4 x3)) (and (not x5) (or x0 x2)))) (and (not (not (not x2))) (or (or (or x2 x1) (or x3 x2)) (and (or x2 [...]
+(check-sat)
+(push 1)
+(assert (and x0 x1))
+(check-sat)
+(push 1)
+(assert (and (or (and (and (or (or (not (or x4 x3)) (or (or x1 x0) (or x5 x3))) (and (or (not x0) (not x5)) (or (and x5 x0) (and x5 x0)))) (not (and (and (and x0 x1) (not x2)) (not (or x3 x3))))) (and (not (and (not (and x3 x1)) (not (not x1)))) (not (and (or (or x1 x0) (or x4 x4)) (or (not x5) (and x3 x4)))))) (or (not (or (not (or (and x3 x2) (or x0 x2))) (or (not (and x0 x0)) (and (not x4) (not x3))))) (not (or (and (and (or x5 x3) (and x2 x5)) (not (or x4 x4))) (or (not (not x1)) (or [...]
+(check-sat)
+(pop 1)
+(assert (not (not (not (and (or (or (and (or x4 x3) (and x1 x4)) (and (or x3 x0) (not x0))) (and (and (or x1 x4) (and x3 x5)) (or (or x1 x5) (and x0 x1)))) (or (and (not (not x5)) (or (or x0 x2) (and x5 x0))) (and (or (not x2) (not x4)) (or (and x2 x5) (not x0)))))))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_49.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_49.smt2
new file mode 100644
index 0000000..1f529f5
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_49.smt2
@@ -0,0 +1,14 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: unsat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(assert (and (not (and (or (and (and (or (or (or x0 x1) (and x0 x0)) (or (not x0) (and x0 x1))) (or (not (or x0 x0)) (not (and x0 x0)))) (not (or (not (not x0)) (not (and x0 x1))))) (and (or (and (and (not x1) (or x1 x0)) (not (and x0 x1))) (not (not (or x1 x0)))) (not (not (and (or x0 x1) (not x0)))))) (and (not (or (and (and (not x1) (not x0)) (and (and x0 x1) (and x1 x1))) (and (not (and x0 x0)) (not (or x0 x0))))) (and (or (or (and (or x1 x1) (and x0 x1)) (not (or x0 x0))) (and (or ( [...]
+(assert (not (not (or (or (or (or (or (and x0 x0) (and x1 x0)) (or (and x1 x1) (and x0 x0))) (or (not (and x1 x1)) (and (or x1 x0) (or x0 x0)))) (and (and (or (and x1 x0) (or x1 x0)) (and (or x0 x1) (or x0 x0))) (and (not (not x0)) (and (and x1 x1) (or x1 x0))))) (and (not (not (and (or x0 x0) (and x1 x0)))) (not (or (or (and x1 x0) (or x0 x0)) (or (not x1) (and x1 x0)))))))))
+(check-sat)
+(push 1)
+(assert (or (or (or (not (not (or x1 x1))) (not (not (and x0 x1)))) (and (not (not (not x0))) (not (and (not x0) (and x0 x1))))) (not (or (and (not (not x1)) (and (not x0) (or x1 x0))) (not (and (not x1) (and x1 x0)))))))
+(assert (or x0 x0))
+(assert (and (not (and (or (or x0 x0) (and x1 x1)) (and (or x1 x0) (or x0 x1)))) (and (or (not (or x1 x1)) (not (not x0))) (or (or (and x1 x1) (not x1)) (not (or x0 x0))))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_5.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_5.smt2
new file mode 100644
index 0000000..a29fda6
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_5.smt2
@@ -0,0 +1,65 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(declare-fun x5 () Bool)
+(declare-fun x6 () Bool)
+(assert (or (or (not (not (and (and x3 x0) (not x2)))) (and (not (not (and x1 x6))) (and (and (or x1 x4) (or x0 x3)) (or (or x0 x4) (or x3 x3))))) (and (and (not (not (or x5 x3))) (or (or (and x5 x1) (not x4)) (and (or x4 x3) (and x4 x5)))) (not (or (not (not x6)) (or (not x0) (not x6)))))))
+(check-sat)
+(push 1)
+(assert (not (not (or (not (not (and (and x6 x1) (or x2 x1)))) (and (or (not (or x1 x0)) (or (not x1) (or x3 x6))) (or (not (and x3 x1)) (not (not x1))))))))
+(assert (or (not (not (or x4 x3))) (or (not (and x4 x4)) (not (or x3 x5)))))
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (not (or (not (not (and (and (not (not (not x5))) (and (not (and x5 x4)) (not (or x1 x0)))) (not (and (or (or x2 x4) (not x4)) (or (and x3 x6) (and x6 x2))))))) (and (and (not (and (or (not (or x1 x2)) (not (or x6 x1))) (or (and (not x3) (or x3 x5)) (or (and x4 x4) (and x6 x6))))) (not (and (not (or (or x3 x2) (not x2))) (not (or (not x2) (not x6)))))) (or (not (or (not (not (or x4 x3))) (and (and (and x2 x6) (or x6 x5)) (or (or x1 x3) (and x2 x3))))) (or (and (and (or (and x6 x0 [...]
+(check-sat)
+(pop 1)
+(check-sat)
+(pop 1)
+(assert (or (and (and (and (and (or (not (not (and (not x1) (not x2)))) (not (and (not (and x0 x4)) (and (not x3) (or x5 x1))))) (or (or (and (or (and x3 x6) (and x3 x1)) (not (or x1 x4))) (and (or (not x5) (not x0)) (not (not x3)))) (or (and (and (or x6 x5) (and x5 x5)) (or (and x1 x6) (and x5 x6))) (or (and (or x5 x6) (or x5 x4)) (not (or x2 x0)))))) (or (and (and (and (or (or x4 x2) (or x5 x1)) (and (or x5 x0) (and x5 x5))) (not (and (not x5) (or x3 x1)))) (not (and (and (or x5 x1) (a [...]
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (or (and (not (not x0)) (and (and x0 x1) (or x2 x1))) (not (and (not x4) (or x6 x0)))))
+(assert (not (not (and (or (or (and (and (or x4 x6) (or x3 x1)) (not (and x4 x5))) (or (not (not x3)) (and (not x6) (and x3 x6)))) (and (and (not (not x0)) (not (and x5 x5))) (or (not (or x1 x0)) (and (and x2 x3) (not x6))))) (or (and (and (not (or x0 x2)) (and (not x4) (or x3 x1))) (not (or (not x6) (and x4 x4)))) (not (not (not (and x6 x2)))))))))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(assert (and (and (or (and (or (or (or (or (and (and x1 x4) (or x0 x0)) (or (not x3) (or x1 x4))) (not (not (and x6 x0)))) (or (and (and (or x1 x4) (not x4)) (or (not x1) (or x1 x0))) (and (or (not x6) (and x5 x2)) (and (not x2) (not x1))))) (or (and (not (and (and x2 x2) (not x3))) (not (or (or x4 x2) (not x5)))) (not (not (or (or x1 x1) (and x0 x4)))))) (or (or (or (and (not (and x1 x6)) (and (and x6 x2) (and x3 x3))) (not (not (or x5 x4)))) (or (or (not (or x6 x4)) (or (not x0) (not x [...]
+(assert (or (or (and (not (not (and (not x3) (or x3 x3)))) (or (or (not (or x1 x6)) (and (and x2 x6) (or x1 x0))) (or (not (and x5 x0)) (or (or x6 x0) (not x0))))) (or (or (not (and (and x5 x4) (not x5))) (or (or (or x4 x1) (and x4 x0)) (or (not x0) (or x5 x6)))) (not (or (or (or x3 x1) (or x3 x6)) (or (or x1 x5) (or x5 x6)))))) (or (not (or (or (and (not x2) (and x0 x0)) (or (or x2 x6) (and x5 x5))) (or (or (not x6) (and x2 x3)) (not (and x4 x4))))) (and (and (or (not (and x3 x5)) (or ( [...]
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (not (not (and x6 x6))))
+(check-sat)
+(pop 1)
+(assert (not (or (or (or x6 x6) (or x1 x5)) (and (not x2) (and x2 x3)))))
+(check-sat)
+(push 1)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_50.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_50.smt2
new file mode 100644
index 0000000..1d783a5
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_50.smt2
@@ -0,0 +1,12 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: unsat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(assert (not (not (or x0 x0))))
+(check-sat)
+(push 1)
+(assert (not (and (not (not (not (or (or x0 x0) (not x0))))) (not (not (and (and (or x0 x0) (and x0 x0)) (or (or x0 x0) (not x0))))))))
+(assert (or (not (not (not (and (not (not (or x0 x0))) (not (or (not x0) (not x0))))))) (and (not (or (or (and (and (and x0 x0) (or x0 x0)) (not (not x0))) (or (not (not x0)) (and (not x0) (and x0 x0)))) (or (not (or (not x0) (not x0))) (or (or (and x0 x0) (or x0 x0)) (and (and x0 x0) (and x0 x0)))))) (and (and (or (not (and (not x0) (and x0 x0))) (and (not (not x0)) (not (or x0 x0)))) (not (or (or (or x0 x0) (and x0 x0)) (not (not x0))))) (not (and (or (not (and x0 x0)) (or (or x0 x0) ( [...]
+(assert (or (or (not (or (or x0 x0) (or x0 x0))) (or (or (and x0 x0) (or x0 x0)) (or (or x0 x0) (and x0 x0)))) (or (or (not (or x0 x0)) (or (or x0 x0) (not x0))) (or (not (and x0 x0)) (and (or x0 x0) (or x0 x0))))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_51.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_51.smt2
new file mode 100644
index 0000000..f9bdb08
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_51.smt2
@@ -0,0 +1,36 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(check-sat)
+(push 1)
+(assert (not (and (or (and (and (or x0 x0) (or x0 x0)) (or (not x0) (and x0 x0))) (and (or (or x0 x0) (not x0)) (not (and x0 x0)))) (or (or (or (not x0) (or x0 x0)) (and (or x0 x0) (and x0 x0))) (or (or (not x0) (or x0 x0)) (not (or x0 x0)))))))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(pop 1)
+(assert (or (and (and (not (and (or (or (or (not (not x0)) (not (and x0 x0))) (or (not (and x0 x0)) (and (and x0 x0) (and x0 x0)))) (not (not (or (or x0 x0) (or x0 x0))))) (or (not (or (or (not x0) (not x0)) (not (or x0 x0)))) (not (not (and (and x0 x0) (and x0 x0))))))) (or (or (not (or (and (or (and x0 x0) (and x0 x0)) (not (or x0 x0))) (not (and (or x0 x0) (or x0 x0))))) (or (not (not (and (and x0 x0) (and x0 x0)))) (not (not (and (or x0 x0) (not x0)))))) (not (not (and (and (or (and  [...]
+(check-sat)
+(push 1)
+(assert (and (not (and (not (not (not x0))) (or (not (not x0)) (and (not x0) (or x0 x0))))) (or (not (not (or (not x0) (or x0 x0)))) (and (and (or (or x0 x0) (not x0)) (not (and x0 x0))) (not (or (not x0) (not x0)))))))
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (not (or (not (or (and (and (not (or (not (not x0)) (not (not x0)))) (and (not (not (or x0 x0))) (or (and (or x0 x0) (and x0 x0)) (and (or x0 x0) (and x0 x0))))) (or (not (or (and (not x0) (not x0)) (or (not x0) (not x0)))) (and (and (or (not x0) (and x0 x0)) (or (or x0 x0) (and x0 x0))) (not (not (and x0 x0)))))) (not (not (and (or (not (and x0 x0)) (or (or x0 x0) (and x0 x0))) (not (not (and x0 x0)))))))) (not (or (and (or (and (not (or (not x0) (and x0 x0))) (and (or (and x0 x [...]
+(check-sat)
+(push 1)
+(assert (and (or (not (not (and (and (not (not (not (and x0 x0)))) (not (not (and (or x0 x0) (not x0))))) (and (or (or (and (or x0 x0) (or x0 x0)) (or (not x0) (or x0 x0))) (and (and (and x0 x0) (not x0)) (or (not x0) (or x0 x0)))) (or (not (and (and x0 x0) (not x0))) (not (not (not x0)))))))) (or (and (and (and (or (or (not (not x0)) (and (or x0 x0) (or x0 x0))) (and (and (and x0 x0) (or x0 x0)) (and (not x0) (or x0 x0)))) (or (or (not (not x0)) (or (or x0 x0) (and x0 x0))) (or (or (and [...]
+(assert (or (not (and (or x0 x0) (or x0 x0))) (or (not (or x0 x0)) (not (not x0)))))
+(assert (not (and (not (and (or (and (or x0 x0) (and x0 x0)) (not (and x0 x0))) (not (not (or x0 x0))))) (and (and (not (or (not x0) (not x0))) (and (or (and x0 x0) (or x0 x0)) (and (not x0) (not x0)))) (or (and (and (and x0 x0) (and x0 x0)) (or (not x0) (not x0))) (and (and (or x0 x0) (or x0 x0)) (or (not x0) (not x0))))))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_52.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_52.smt2
new file mode 100644
index 0000000..2ab1466
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_52.smt2
@@ -0,0 +1,47 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(declare-fun x5 () Bool)
+(declare-fun x6 () Bool)
+(declare-fun x7 () Bool)
+(assert (not (and (not x3) (or x2 x1))))
+(assert (or (not (or (and (not (or (or (or (not x2) (not x7)) (and (or x7 x4) (or x6 x7))) (not (not (or x6 x4))))) (not (or (or (and (or x1 x5) (and x4 x7)) (or (and x4 x6) (and x0 x0))) (not (and (and x5 x7) (and x0 x5)))))) (and (or (not (and (not (or x1 x7)) (and (or x1 x5) (and x6 x1)))) (or (and (not (not x5)) (not (not x5))) (and (or (or x0 x5) (and x1 x3)) (or (or x0 x6) (and x2 x7))))) (not (or (not (and (and x0 x4) (not x2))) (not (and (or x1 x3) (not x7)))))))) (not (and (and  [...]
+(assert (and (or (and (not (or (and (and (or (not x0) (and x1 x7)) (and (not x0) (or x4 x5))) (or (or (and x6 x7) (or x3 x3)) (or (or x2 x2) (and x5 x6)))) (not (not (and (or x3 x6) (and x6 x0)))))) (and (not (not (not (not (and x7 x6))))) (or (not (or (not (or x7 x4)) (or (or x7 x4) (or x4 x2)))) (not (and (and (not x3) (or x3 x1)) (not (or x5 x4))))))) (and (and (and (not (not (and (not x5) (and x7 x5)))) (not (not (and (not x4) (and x5 x6))))) (or (not (and (and (or x4 x3) (not x6)) ( [...]
+(check-sat)
+(push 1)
+(assert (not (not (not (or (and (or (and x6 x5) (or x6 x7)) (or (not x2) (not x7))) (or (or (and x6 x3) (and x7 x7)) (or (and x6 x4) (or x0 x6))))))))
+(assert (not (or (not (and (not (or (not (and (or x0 x1) (not x1))) (or (or (and x3 x1) (and x2 x0)) (or (and x1 x3) (or x7 x3))))) (or (or (and (and (not x2) (not x0)) (and (not x4) (not x2))) (not (and (not x6) (not x7)))) (not (not (not (or x0 x2))))))) (and (and (or (not (or (and (or x4 x2) (and x6 x4)) (and (or x4 x3) (and x1 x6)))) (and (or (or (not x5) (and x1 x5)) (and (and x6 x0) (not x0))) (or (and (or x5 x2) (and x7 x4)) (not (not x6))))) (or (and (or (not (or x7 x4)) (and (an [...]
+(assert (not (or (not (not x4)) (and (and x5 x0) (and x6 x7)))))
+(assert (not (not (and (and (or (not x5) (or x4 x5)) (or (and x7 x5) (or x7 x0))) (not (not (and x1 x7)))))))
+(check-sat)
+(push 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (or (not (or x0 x6)) (not (and x1 x7))))
+(check-sat)
+(push 1)
+(assert (or (and (not x7) (not x4)) (or (not x3) (or x7 x7))))
+(assert (not (and (or (and (not (or (and (not (and (and x0 x0) (and x3 x3))) (and (and (not x3) (or x2 x5)) (not (not x0)))) (not (not (or (or x3 x5) (not x4)))))) (and (not (not (not (or (or x3 x4) (or x3 x6))))) (not (or (or (or (or x5 x1) (not x2)) (and (not x3) (and x1 x2))) (not (and (not x5) (and x1 x5))))))) (not (and (or (not (not (or (or x3 x0) (not x2)))) (and (or (or (and x2 x6) (or x5 x6)) (and (or x7 x7) (not x3))) (not (not (and x0 x7))))) (or (or (and (or (not x7) (or x0 x [...]
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (not (or (and (or (not x6) (and x4 x4)) (not (and x3 x3))) (and (not (or x2 x4)) (and (not x1) (or x4 x6))))))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_6.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_6.smt2
new file mode 100644
index 0000000..14e82a4
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_6.smt2
@@ -0,0 +1,35 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(declare-fun x5 () Bool)
+(declare-fun x6 () Bool)
+(assert (and (or (or (or (not (and (and (or (and x2 x1) (and x0 x4)) (and (and x0 x2) (not x1))) (or (not (not x3)) (not (and x6 x0))))) (and (and (or (or (and x2 x0) (and x0 x0)) (and (and x1 x6) (not x6))) (or (not (and x1 x4)) (or (or x0 x0) (or x3 x0)))) (not (or (or (and x1 x2) (and x1 x4)) (not (and x3 x2)))))) (or (or (and (and (and (or x1 x4) (not x1)) (or (not x1) (and x4 x5))) (and (not (or x3 x2)) (and (not x4) (not x6)))) (or (not (not (not x6))) (not (not (or x0 x2))))) (and [...]
+(assert (or x3 x5))
+(assert (or (and (not x1) (not x6)) (not (not x6))))
+(assert (not (not (and (and (or (or (and (not (or (or x0 x4) (and x4 x1))) (and (and (or x4 x5) (or x3 x1)) (or (not x0) (or x3 x4)))) (or (or (or (or x5 x5) (or x1 x4)) (or (and x5 x6) (not x1))) (or (or (or x2 x0) (or x0 x3)) (and (or x0 x4) (or x5 x6))))) (not (or (not (not (or x0 x2))) (and (and (and x0 x1) (and x0 x5)) (not (and x6 x0)))))) (and (not (or (not (or (or x2 x3) (and x6 x6))) (and (or (not x1) (or x2 x6)) (or (and x6 x4) (and x6 x5))))) (not (not (not (and (not x5) (or x [...]
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (and x2 x0))
+(check-sat)
+(push 1)
+(assert (and (not (and (or x3 x3) (and x6 x0))) (or (not (or x6 x4)) (or (or x1 x2) (and x4 x6)))))
+(assert (and (not (or (and (and (and x4 x2) (not x3)) (or (or x5 x6) (not x2))) (not (or (not x0) (not x4))))) (or (or (not (or (not x0) (or x2 x2))) (and (and (not x5) (not x1)) (or (not x6) (not x5)))) (and (and (not (and x2 x1)) (not (or x6 x0))) (or (not (or x0 x2)) (not (and x1 x2)))))))
+(check-sat)
+(pop 1)
+(check-sat)
+(pop 1)
+(assert (and (not (or (not (not x4)) (or (or x1 x6) (and x2 x4)))) (not (and (and (or x1 x1) (and x1 x6)) (not (not x2))))))
+(assert (not (not x3)))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_7.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_7.smt2
new file mode 100644
index 0000000..b39a6f8
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_7.smt2
@@ -0,0 +1,42 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(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)
+(assert (and (and (or (or (and (not (and (and (or x9 x6) (or x8 x9)) (not (not x2)))) (and (not (and (and x3 x1) (or x7 x0))) (or (and (or x6 x7) (not x2)) (or (or x8 x8) (not x0))))) (and (or (and (or (or x7 x5) (or x2 x8)) (not (not x3))) (and (and (and x2 x0) (and x1 x9)) (and (and x7 x5) (or x8 x5)))) (and (or (and (or x3 x6) (and x9 x4)) (or (not x8) (and x2 x6))) (not (and (not x7) (or x6 x1)))))) (not (or (or (and (and (and x6 x2) (or x5 x9)) (not (not x2))) (or (or (and x5 x0) (o [...]
+(check-sat)
+(push 1)
+(assert (not (or (or (and x3 x8) (or x4 x0)) (and (not x9) (and x6 x8)))))
+(assert (not (and (and (or (or x9 x5) (and x4 x3)) (not (and x2 x9))) (and (or (and x3 x4) (not x4)) (and (and x0 x3) (or x6 x2))))))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (or (or (or (not x4) (and x9 x9)) (or (or x1 x5) (not x4))) (or (and (or x6 x0) (not x3)) (and (or x8 x7) (or x4 x4)))))
+(check-sat)
+(push 1)
+(assert (or (and (and x9 x7) (or x8 x2)) (or (not x9) (or x6 x0))))
+(check-sat)
+(pop 1)
+(assert (and (not (not (not (and (not (or (not x4) (not x2))) (and (and (and x3 x1) (and x0 x0)) (or (not x2) (not x4))))))) (or (or (not (or (not (not (and x9 x0))) (and (and (not x0) (and x4 x4)) (or (not x0) (not x7))))) (or (or (not (not (and x8 x1))) (or (or (and x1 x3) (and x4 x4)) (or (not x6) (not x7)))) (and (not (and (not x5) (not x1))) (not (and (not x1) (not x2)))))) (or (not (and (and (and (or x0 x8) (not x5)) (not (or x0 x8))) (not (not (not x1))))) (or (not (and (or (and x [...]
+(check-sat)
+(push 1)
+(assert (and (or (and (not (not (and (and x0 x4) (and x6 x4)))) (not (not (and (not x5) (not x9))))) (not (and (or (or (or x0 x1) (or x5 x5)) (not (not x6))) (and (or (and x2 x3) (and x3 x7)) (not (and x3 x3)))))) (or (not (not (or (not (not x8)) (and (not x7) (not x8))))) (not (or (not (not (or x8 x4))) (and (not (or x7 x6)) (not (and x5 x5))))))))
+(assert (not (or (and (and (or (or (or (and (not x4) (not x8)) (not (not x2))) (not (and (not x8) (or x6 x2)))) (not (not (or (and x7 x6) (and x0 x4))))) (or (or (not (not (and x3 x7))) (or (not (not x1)) (not (not x8)))) (and (not (or (not x6) (and x6 x8))) (or (and (not x4) (not x6)) (or (or x3 x1) (and x8 x3)))))) (or (and (not (or (not (and x7 x6)) (and (not x7) (and x5 x7)))) (not (and (not (and x6 x8)) (and (not x8) (not x5))))) (not (and (or (or (or x4 x0) (not x6)) (and (not x3)  [...]
+(assert (and (not x4) (not x3)))
+(assert (and (or x8 x9) (not x1)))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_8.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_8.smt2
new file mode 100644
index 0000000..a127733
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_8.smt2
@@ -0,0 +1,45 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(declare-fun x4 () Bool)
+(declare-fun x5 () Bool)
+(check-sat)
+(push 1)
+(assert (or (or (and (and (and (not (and (or (not (or x1 x0)) (not (and x4 x3))) (and (or (not x1) (and x1 x5)) (or (and x4 x5) (and x0 x2))))) (and (and (or (and (or x5 x0) (not x2)) (or (not x1) (or x5 x0))) (not (or (or x3 x2) (and x2 x1)))) (and (or (not (not x0)) (and (or x1 x0) (not x4))) (and (not (or x1 x5)) (or (and x0 x2) (or x5 x3)))))) (not (not (or (or (not (not x3)) (or (or x0 x3) (or x4 x5))) (or (not (not x5)) (and (and x3 x1) (or x0 x5))))))) (not (or (and (not (or (not  [...]
+(assert (and (not (not (not (or (and (and (not (and (not x5) (or x1 x1))) (not (or (or x2 x4) (not x0)))) (and (and (and (or x1 x4) (not x3)) (or (and x5 x0) (and x1 x0))) (not (not (not x4))))) (not (not (not (not (not x5))))))))) (not (or (not (and (not (not (not (and (and x0 x3) (or x5 x0))))) (and (and (not (and (and x4 x3) (or x1 x3))) (or (and (and x5 x0) (or x2 x0)) (or (and x4 x2) (and x0 x3)))) (or (or (and (and x3 x4) (or x0 x1)) (or (and x5 x0) (not x1))) (and (not (or x2 x5)) [...]
+(check-sat)
+(push 1)
+(assert (not (not (not (or (or (or x3 x5) (or x2 x0)) (or (or x3 x4) (or x2 x4)))))))
+(assert (and (and (or (not x5) (or x0 x3)) (or (and x2 x0) (or x0 x1))) (not (or (not x1) (and x4 x0)))))
+(assert (or (not (or x4 x0)) (and (or x1 x3) (and x5 x3))))
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(assert (or (not (or (not (not x1)) (and (or x5 x4) (and x3 x4)))) (not (not (not (and x3 x2))))))
+(assert (not (not (and x2 x4))))
+(check-sat)
+(push 1)
+(assert (and x3 x3))
+(assert (not (and (not x1) (and x0 x5))))
+(assert (not (and (not (or (and (and (or x2 x1) (not x3)) (and (not x2) (or x1 x1))) (and (and (not x4) (not x5)) (not (not x4))))) (not (or (and (and (not x5) (and x2 x0)) (or (and x3 x5) (or x0 x3))) (not (or (or x2 x4) (not x1))))))))
+(check-sat)
+(pop 1)
+(assert (not (or (or (or (not x0) (not x5)) (or (and x3 x5) (not x0))) (and (not (and x2 x0)) (and (not x1) (not x1))))))
+(assert (or (not x4) (or x3 x4)))
+(assert (not (not (and (and (and x1 x4) (not x4)) (or (or x4 x3) (and x0 x2))))))
+(check-sat)
+(pop 1)
+(assert (not x1))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/boolean/fuzz_9.smt2 b/test/regress/regress0/push-pop/boolean/fuzz_9.smt2
new file mode 100644
index 0000000..3ed8529
--- /dev/null
+++ b/test/regress/regress0/push-pop/boolean/fuzz_9.smt2
@@ -0,0 +1,55 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(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)
+(assert (or (or (not (or (or (not (or (and x4 x4) (not x7))) (not (and (and x5 x7) (not x7)))) (and (and (and (and x6 x6) (not x0)) (not (or x3 x1))) (and (or (not x1) (and x5 x3)) (or (or x7 x6) (not x4)))))) (not (or (or (or (not (or x3 x7)) (not (and x2 x8))) (and (not (not x1)) (or (and x0 x3) (or x2 x5)))) (or (or (or (and x8 x1) (or x3 x0)) (and (not x5) (and x8 x6))) (not (not (and x2 x5))))))) (not (not (and (not (or (or (not x7) (and x8 x2)) (not (or x6 x3)))) (not (and (not (an [...]
+(check-sat)
+(push 1)
+(assert (and (and (or (or (and (and (or x1 x5) (not x8)) (and (not x8) (and x0 x8))) (or (or (and x0 x3) (and x0 x6)) (and (or x7 x7) (and x7 x0)))) (or (and (or (and x8 x7) (or x3 x2)) (not (not x7))) (not (and (not x8) (not x5))))) (or (or (and (and (or x2 x6) (or x7 x4)) (and (or x4 x3) (not x5))) (and (or (not x2) (or x2 x7)) (not (and x8 x7)))) (and (and (and (and x5 x4) (not x3)) (not (not x8))) (or (and (or x6 x1) (or x0 x7)) (not (and x8 x4)))))) (and (not (and (or (not (or x5 x5 [...]
+(check-sat)
+(push 1)
+(assert (and (or x7 x5) (and x2 x6)))
+(check-sat)
+(push 1)
+(check-sat)
+(push 1)
+(assert (not (and x1 x6)))
+(assert (or x7 x7))
+(assert (not (or x0 x7)))
+(check-sat)
+(push 1)
+(assert (and (not (or (or (and x6 x2) (or x2 x8)) (or (and x7 x3) (or x2 x5)))) (and (or (not (not x4)) (and (not x4) (not x2))) (not (not (or x1 x7))))))
+(assert (not (and (or (and (and (not (and x6 x1)) (or (and x5 x3) (or x3 x1))) (or (or (not x2) (or x0 x1)) (not (or x7 x5)))) (not (or (not (not x8)) (and (not x4) (and x5 x8))))) (not (or (or (or (or x1 x1) (and x2 x3)) (and (and x5 x8) (not x7))) (and (not (or x5 x8)) (or (not x5) (and x2 x2))))))))
+(assert (not x4))
+(assert (not (and (not (or (not (or (not (or x8 x1)) (or (not x6) (not x4)))) (or (or (and (and x0 x7) (or x2 x7)) (or (or x7 x3) (and x5 x2))) (or (or (and x7 x0) (and x1 x1)) (and (not x7) (or x6 x7)))))) (or (and (and (and (not (not x0)) (and (or x7 x4) (or x3 x6))) (not (not (not x6)))) (or (or (and (and x1 x5) (or x7 x5)) (not (and x2 x3))) (not (or (not x8) (and x1 x8))))) (not (and (not (and (not x8) (and x1 x6))) (or (and (and x0 x0) (not x0)) (not (not x7)))))))))
+(assert (or x1 x2))
+(check-sat)
+(pop 1)
+(check-sat)
+(pop 1)
+(assert (not (and (not (and (not x5) (not x7))) (and (or (not x1) (and x4 x1)) (not (and x5 x8))))))
+(assert (not (and (or (and (not (and (and (not (or (not x5) (and x4 x7))) (and (and (and x6 x1) (not x3)) (not (and x5 x1)))) (and (or (or (or x7 x2) (or x2 x6)) (not (not x2))) (and (and (not x6) (and x4 x8)) (and (not x5) (or x1 x6)))))) (or (not (or (not (and (and x3 x5) (or x7 x3))) (or (not (not x7)) (not (not x0))))) (or (not (not (and (or x3 x6) (and x6 x2)))) (or (not (or (or x7 x3) (not x5))) (or (or (and x1 x2) (and x4 x2)) (not (not x7))))))) (and (not (not (or (not (or (not x [...]
+(check-sat)
+(pop 1)
+(check-sat)
+(pop 1)
+(assert (not (and (and x7 x2) (or x4 x6))))
+(check-sat)
+(push 1)
diff --git a/test/regress/regress0/push-pop/bug-fmf-fun-skolem.smt2 b/test/regress/regress0/push-pop/bug-fmf-fun-skolem.smt2
new file mode 100644
index 0000000..d5effc0
--- /dev/null
+++ b/test/regress/regress0/push-pop/bug-fmf-fun-skolem.smt2
@@ -0,0 +1,25 @@
+; COMMAND-LINE: --incremental --fmf-fun
+(set-logic ALL_SUPPORTED)
+(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil))))
+(define-fun-rec sum ((l Lst)) Int (ite (is-nil l) 0 (+ (head l) (sum (tail l)))))
+
+(declare-fun input () Int)
+(declare-fun p () Bool)
+(declare-fun acc () Lst)
+(assert (and (= acc (ite (>= input 0) (cons input nil) nil))
+             (= p (>= (sum acc) 0))))
+
+
+; EXPECT: unsat
+(push 1)
+(assert (not p))
+(check-sat)
+(pop 1)
+
+; EXPECT: unsat
+(push 1)
+(assert (not p))
+(check-sat)
+(pop 1)
+
+
diff --git a/test/regress/regress0/push-pop/bug216.smt2 b/test/regress/regress0/push-pop/bug216.smt2
new file mode 100644
index 0000000..78e0f71
--- /dev/null
+++ b/test/regress/regress0/push-pop/bug216.smt2
@@ -0,0 +1,8 @@
+(set-logic QF_UF)
+(declare-fun x () Bool)
+(declare-fun y () Bool)
+(assert (=> x y))
+(check-sat) ; returns sat
+(assert (=> y x))
+(assert (and x (not y)))
+(check-sat) ; returns sat --> ERROR
diff --git a/test/regress/regress0/push-pop/bug216.smt2.expect b/test/regress/regress0/push-pop/bug216.smt2.expect
new file mode 100644
index 0000000..fe11817
--- /dev/null
+++ b/test/regress/regress0/push-pop/bug216.smt2.expect
@@ -0,0 +1,3 @@
+% COMMAND-LINE: --incremental
+% EXPECT: sat
+% EXPECT: unsat
diff --git a/test/regress/regress0/push-pop/bug233.cvc b/test/regress/regress0/push-pop/bug233.cvc
new file mode 100644
index 0000000..2b9eedc
--- /dev/null
+++ b/test/regress/regress0/push-pop/bug233.cvc
@@ -0,0 +1,11 @@
+% Tests the invariants for multiple queries.
+% COMMAND-LINE: --incremental
+
+a, b: BOOLEAN;
+
+% EXPECT: valid
+QUERY (a AND b) OR NOT (a AND b);
+
+% EXPECT: invalid
+QUERY (a OR b);
+
diff --git a/test/regress/regress0/push-pop/bug326.smt2 b/test/regress/regress0/push-pop/bug326.smt2
new file mode 100644
index 0000000..f1506b3
--- /dev/null
+++ b/test/regress/regress0/push-pop/bug326.smt2
@@ -0,0 +1,41 @@
+; COMMAND-LINE: --incremental --rewrite-rules
+
+(set-logic AUFLIA)
+
+(declare-fun R (Int Int) Bool)
+
+;; reflexive
+(assert-rewrite ((x Int)) () () (R x x) true)
+
+;; anti-symmetric
+(assert-reduction ((x Int) (y Int)) () () ((R x y) (R y x)) (= x y))
+
+;; transitive
+(assert-propagation ((x Int) (y Int) (z Int)) () () ((R x y) (R y z)) (R x z))
+
+
+(declare-fun e1 () Int)
+(declare-fun e2 () Int)
+(declare-fun e3 () Int)
+(declare-fun e4 () Int)
+
+; EXPECT: unsat
+(push);;unsat
+(assert (not (=> (and (R e1 e2) (R e2 e4) (R e1 e3) (R e3 e4) (= e1 e4)) (= e2 e3))))
+(check-sat)
+(pop)
+
+; EXPECT: unsat
+(push);;unsat
+(assert (not (=> (and (R e1 e2) (R e1 e3) (or (R e2 e4) (R e3 e4)) ) (R e1 e4))))
+(check-sat)
+(pop)
+
+; EXPECT: sat
+(push);;sat
+(assert (and (not (R e1 e3)) (R e4 e1)))
+(check-sat)
+(pop)
+
+
+(exit)
diff --git a/test/regress/regress0/push-pop/bug396.smt2 b/test/regress/regress0/push-pop/bug396.smt2
new file mode 100644
index 0000000..8e93cf4
--- /dev/null
+++ b/test/regress/regress0/push-pop/bug396.smt2
@@ -0,0 +1,3294 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+;(set-option :produce-unsat-cores true)
+(set-option :print-success false)
+(set-info :smt-lib-version 2.0)
+;(set-option :produce-models true)
+(set-logic ALL_SUPPORTED)
+; done setting options
+
+; Boogie universal background predicate
+; Copyright (c) 2004-2010, Microsoft Corp.
+(set-info :category "industrial")
+(declare-sort |T at U| 0)
+(declare-sort |T at T| 0)
+(declare-fun int_div (Int Int) Int)
+(declare-fun int_mod (Int Int) Int)
+(declare-fun UOrdering2 (|T at U| |T at U|) Bool)
+(declare-fun UOrdering3 (|T at T| |T at U| |T at U|) Bool)
+
+(declare-fun group_size_y () (_ BitVec 32))
+(declare-fun group_size_z () (_ BitVec 32))
+(declare-fun num_groups_y () (_ BitVec 32))
+(declare-fun num_groups_z () (_ BitVec 32))
+(declare-fun group_size_x () (_ BitVec 32))
+(declare-fun num_groups_x () (_ BitVec 32))
+(declare-fun ControlFlow (Int Int) Int)
+(declare-fun %lbl%+8971 () Bool)
+(declare-fun call3746formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun v1$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@30054 () Bool)
+(declare-fun _P$2 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$newVelocity$1 at 3 () Bool)
+(declare-fun _WRITE_OFFSET_$$newVelocity$1 at 3 () (_ BitVec 32))
+(declare-fun %lbl%@30066 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$newVelocity$1 () Bool)
+(declare-fun _READ_OFFSET_$$newVelocity$1 () (_ BitVec 32))
+(declare-fun %lbl%+8965 () Bool)
+(declare-fun _P$1 () Bool)
+(declare-fun inline$_LOG_WRITE_$$newVelocity$3$track at 0 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$newVelocity$1 at 2 () Bool)
+(declare-fun inline$_LOG_WRITE_$$newVelocity$3$_offset$1 at 0 () (_ BitVec 32))
+(declare-fun _WRITE_OFFSET_$$newVelocity$1 at 2 () (_ BitVec 32))
+(declare-fun _WRITE_SOURCE_$$newVelocity$1 at 3 () (_ BitVec 32))
+(declare-fun _WRITE_SOURCE_$$newVelocity$1 at 2 () (_ BitVec 32))
+(declare-fun %lbl%+8963 () Bool)
+(declare-fun v1$1 at 0 () (_ BitVec 32))
+(declare-fun %lbl%+8969 () Bool)
+(declare-fun call3709formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@29931 () Bool)
+(declare-fun %lbl%@29943 () Bool)
+(declare-fun %lbl%@29957 () Bool)
+(declare-fun %lbl%+8883 () Bool)
+(declare-fun inline$_LOG_WRITE_$$newVelocity$2$track at 0 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$newVelocity$1 at 1 () Bool)
+(declare-fun inline$_LOG_WRITE_$$newVelocity$2$_offset$1 at 0 () (_ BitVec 32))
+(declare-fun _WRITE_OFFSET_$$newVelocity$1 at 1 () (_ BitVec 32))
+(declare-fun _WRITE_SOURCE_$$newVelocity$1 at 1 () (_ BitVec 32))
+(declare-fun %lbl%+8881 () Bool)
+(declare-fun %lbl%+8887 () Bool)
+(declare-fun call3672formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@29808 () Bool)
+(declare-fun %lbl%@29820 () Bool)
+(declare-fun %lbl%@29834 () Bool)
+(declare-fun %lbl%+8801 () Bool)
+(declare-fun inline$_LOG_WRITE_$$newVelocity$1$track at 0 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$newVelocity$1 at 0 () Bool)
+(declare-fun inline$_LOG_WRITE_$$newVelocity$1$_offset$1 at 0 () (_ BitVec 32))
+(declare-fun _WRITE_OFFSET_$$newVelocity$1 at 0 () (_ BitVec 32))
+(declare-fun _WRITE_SOURCE_$$newVelocity$1 at 0 () (_ BitVec 32))
+(declare-fun %lbl%+8799 () Bool)
+(declare-fun %lbl%+8805 () Bool)
+(declare-fun call3635formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@29685 () Bool)
+(declare-fun %lbl%@29697 () Bool)
+(declare-fun %lbl%@29711 () Bool)
+(declare-fun %lbl%+8719 () Bool)
+(declare-fun inline$_LOG_WRITE_$$newVelocity$0$track at 0 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$newVelocity$1 () Bool)
+(declare-fun inline$_LOG_WRITE_$$newVelocity$0$_offset$1 at 0 () (_ BitVec 32))
+(declare-fun _WRITE_OFFSET_$$newVelocity$1 () (_ BitVec 32))
+(declare-fun _WRITE_SOURCE_$$newVelocity$1 () (_ BitVec 32))
+(declare-fun %lbl%+8717 () Bool)
+(declare-fun %lbl%+8723 () Bool)
+(declare-fun call3604formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@29564 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$newPosition$1 at 3 () Bool)
+(declare-fun _WRITE_OFFSET_$$newPosition$1 at 3 () (_ BitVec 32))
+(declare-fun %lbl%@29576 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$newPosition$1 () Bool)
+(declare-fun _READ_OFFSET_$$newPosition$1 () (_ BitVec 32))
+(declare-fun %lbl%@29590 () Bool)
+(declare-fun %lbl%+8637 () Bool)
+(declare-fun inline$_LOG_WRITE_$$newPosition$3$track at 0 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$newPosition$1 at 2 () Bool)
+(declare-fun inline$_LOG_WRITE_$$newPosition$3$_offset$1 at 0 () (_ BitVec 32))
+(declare-fun _WRITE_OFFSET_$$newPosition$1 at 2 () (_ BitVec 32))
+(declare-fun _WRITE_SOURCE_$$newPosition$1 at 3 () (_ BitVec 32))
+(declare-fun _WRITE_SOURCE_$$newPosition$1 at 2 () (_ BitVec 32))
+(declare-fun %lbl%+8635 () Bool)
+(declare-fun %lbl%+8641 () Bool)
+(declare-fun call3567formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@29441 () Bool)
+(declare-fun %lbl%@29453 () Bool)
+(declare-fun %lbl%@29467 () Bool)
+(declare-fun %lbl%+8555 () Bool)
+(declare-fun inline$_LOG_WRITE_$$newPosition$2$track at 0 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$newPosition$1 at 1 () Bool)
+(declare-fun inline$_LOG_WRITE_$$newPosition$2$_offset$1 at 0 () (_ BitVec 32))
+(declare-fun _WRITE_OFFSET_$$newPosition$1 at 1 () (_ BitVec 32))
+(declare-fun _WRITE_SOURCE_$$newPosition$1 at 1 () (_ BitVec 32))
+(declare-fun %lbl%+8553 () Bool)
+(declare-fun %lbl%+8559 () Bool)
+(declare-fun call3530formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@29318 () Bool)
+(declare-fun %lbl%@29330 () Bool)
+(declare-fun %lbl%@29344 () Bool)
+(declare-fun %lbl%+8473 () Bool)
+(declare-fun inline$_LOG_WRITE_$$newPosition$1$track at 0 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$newPosition$1 at 0 () Bool)
+(declare-fun inline$_LOG_WRITE_$$newPosition$1$_offset$1 at 0 () (_ BitVec 32))
+(declare-fun _WRITE_OFFSET_$$newPosition$1 at 0 () (_ BitVec 32))
+(declare-fun _WRITE_SOURCE_$$newPosition$1 at 0 () (_ BitVec 32))
+(declare-fun %lbl%+8471 () Bool)
+(declare-fun %lbl%+8477 () Bool)
+(declare-fun call3493formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@29195 () Bool)
+(declare-fun %lbl%@29207 () Bool)
+(declare-fun %lbl%@29221 () Bool)
+(declare-fun %lbl%+8391 () Bool)
+(declare-fun inline$_LOG_WRITE_$$newPosition$0$track at 0 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$newPosition$1 () Bool)
+(declare-fun inline$_LOG_WRITE_$$newPosition$0$_offset$1 at 0 () (_ BitVec 32))
+(declare-fun _WRITE_OFFSET_$$newPosition$1 () (_ BitVec 32))
+(declare-fun _WRITE_SOURCE_$$newPosition$1 () (_ BitVec 32))
+(declare-fun %lbl%+8389 () Bool)
+(declare-fun %lbl%+8395 () Bool)
+(declare-fun call3462formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@29086 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$vel$1 () Bool)
+(declare-fun _WRITE_OFFSET_$$vel$1 () (_ BitVec 32))
+(declare-fun %lbl%@29100 () Bool)
+(declare-fun %lbl%+8309 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$vel$1 at 3 () Bool)
+(declare-fun inline$_LOG_READ_$$vel$3$track at 0 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$vel$1 at 2 () Bool)
+(declare-fun _READ_OFFSET_$$vel$1 at 3 () (_ BitVec 32))
+(declare-fun inline$_LOG_READ_$$vel$3$_offset$1 at 0 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$vel$1 at 2 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$vel$1 at 3 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$vel$1 at 2 () (_ BitVec 32))
+(declare-fun %lbl%+8307 () Bool)
+(declare-fun %lbl%+8313 () Bool)
+(declare-fun call3409formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@28944 () Bool)
+(declare-fun %lbl%@28958 () Bool)
+(declare-fun v26$1 at 0 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$1 at 18 () (_ BitVec 32))
+(declare-fun v26$1 () (_ BitVec 32))
+(declare-fun v26$2 at 0 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 18 () (_ BitVec 32))
+(declare-fun v26$2 () (_ BitVec 32))
+(declare-fun %lbl%+8227 () Bool)
+(declare-fun inline$_LOG_READ_$$vel$2$track at 0 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$vel$1 at 1 () Bool)
+(declare-fun inline$_LOG_READ_$$vel$2$_offset$1 at 0 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$vel$1 at 1 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$vel$1 at 1 () (_ BitVec 32))
+(declare-fun %lbl%+8225 () Bool)
+(declare-fun %lbl%+8231 () Bool)
+(declare-fun call3356formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@28802 () Bool)
+(declare-fun %lbl%@28816 () Bool)
+(declare-fun v25$1 at 0 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$1 at 17 () (_ BitVec 32))
+(declare-fun v25$1 () (_ BitVec 32))
+(declare-fun v25$2 at 0 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 17 () (_ BitVec 32))
+(declare-fun v25$2 () (_ BitVec 32))
+(declare-fun %lbl%+8145 () Bool)
+(declare-fun inline$_LOG_READ_$$vel$1$track at 0 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$vel$1 at 0 () Bool)
+(declare-fun inline$_LOG_READ_$$vel$1$_offset$1 at 0 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$vel$1 at 0 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$vel$1 at 0 () (_ BitVec 32))
+(declare-fun %lbl%+8143 () Bool)
+(declare-fun %lbl%+8149 () Bool)
+(declare-fun call3303formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@28660 () Bool)
+(declare-fun %lbl%@28674 () Bool)
+(declare-fun v24$1 at 0 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$1 at 16 () (_ BitVec 32))
+(declare-fun v24$1 () (_ BitVec 32))
+(declare-fun v24$2 at 0 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 16 () (_ BitVec 32))
+(declare-fun v24$2 () (_ BitVec 32))
+(declare-fun %lbl%+8063 () Bool)
+(declare-fun inline$_LOG_READ_$$vel$0$track at 0 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$vel$1 () Bool)
+(declare-fun inline$_LOG_READ_$$vel$0$_offset$1 at 0 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$vel$1 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$vel$1 () (_ BitVec 32))
+(declare-fun %lbl%+8061 () Bool)
+(declare-fun %lbl%+8067 () Bool)
+(declare-fun p0$1 at 3 () Bool)
+(declare-fun p0$2 at 3 () Bool)
+(declare-fun %lbl%@28534 () Bool)
+(declare-fun v23$1 at 0 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$1 at 15 () (_ BitVec 32))
+(declare-fun v23$1 () (_ BitVec 32))
+(declare-fun v23$2 at 0 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 15 () (_ BitVec 32))
+(declare-fun v23$2 () (_ BitVec 32))
+(declare-fun %lbl%+8973 () Bool)
+(declare-fun %lbl%@27591 () Bool)
+(declare-fun _b10 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$localPos$1 at 4 () Bool)
+(declare-fun _WRITE_OFFSET_$$localPos$1 at 4 () (_ BitVec 32))
+(declare-fun local_id_x$1 () (_ BitVec 32))
+(declare-fun %lbl%@27652 () Bool)
+(declare-fun _b9 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$localPos$1 at 6 () Bool)
+(declare-fun _READ_OFFSET_$$localPos$1 at 6 () (_ BitVec 32))
+(declare-fun %lbl%@27848 () Bool)
+(declare-fun _b8 () Bool)
+(declare-fun %lbl%@27855 () Bool)
+(declare-fun _b7 () Bool)
+(declare-fun %lbl%@27862 () Bool)
+(declare-fun _b6 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$pos$1 at 8 () Bool)
+(declare-fun _READ_OFFSET_$$pos$1 at 8 () (_ BitVec 32))
+(declare-fun %lbl%@28083 () Bool)
+(declare-fun _b5 () Bool)
+(declare-fun %lbl%@28090 () Bool)
+(declare-fun _b4 () Bool)
+(declare-fun $j.0$1 at 3 () (_ BitVec 32))
+(declare-fun $j.0$2 at 3 () (_ BitVec 32))
+(declare-fun %lbl%@28104 () Bool)
+(declare-fun _b3 () Bool)
+(declare-fun $acc.1$1 at 3 () (_ BitVec 128))
+(declare-fun $acc.1$2 at 3 () (_ BitVec 128))
+(declare-fun %lbl%@28118 () Bool)
+(declare-fun _b2 () Bool)
+(declare-fun $i.0$1 at 2 () (_ BitVec 32))
+(declare-fun $i.0$2 at 2 () (_ BitVec 32))
+(declare-fun %lbl%@28132 () Bool)
+(declare-fun _b1 () Bool)
+(declare-fun $acc.0$1 at 2 () (_ BitVec 128))
+(declare-fun $acc.0$2 at 2 () (_ BitVec 128))
+(declare-fun %lbl%@28146 () Bool)
+(declare-fun _b0 () Bool)
+(declare-fun %lbl%@28154 () Bool)
+(declare-fun %lbl%@28188 () Bool)
+(declare-fun %lbl%@28194 () Bool)
+(declare-fun %lbl%@28206 () Bool)
+(declare-fun _WRITE_SOURCE_$$vel$1 () (_ BitVec 32))
+(declare-fun %lbl%@28218 () Bool)
+(declare-fun _READ_SOURCE_$$pos$1 at 8 () (_ BitVec 32))
+(declare-fun %lbl%@28275 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$pos$1 () Bool)
+(declare-fun %lbl%@28281 () Bool)
+(declare-fun %lbl%@28291 () Bool)
+(declare-fun _WRITE_SOURCE_$$pos$1 () (_ BitVec 32))
+(declare-fun %lbl%@28303 () Bool)
+(declare-fun _READ_SOURCE_$$localPos$1 at 6 () (_ BitVec 32))
+(declare-fun %lbl%@28339 () Bool)
+(declare-fun _WRITE_SOURCE_$$localPos$1 at 4 () (_ BitVec 32))
+(declare-fun %lbl%@28368 () Bool)
+(declare-fun %lbl%@28378 () Bool)
+(declare-fun %lbl%@28388 () Bool)
+(declare-fun %lbl%@28394 () Bool)
+(declare-fun %lbl%@28428 () Bool)
+(declare-fun _READ_SOURCE_$$newVelocity$1 () (_ BitVec 32))
+(declare-fun %lbl%@28440 () Bool)
+(declare-fun %lbl%@28452 () Bool)
+(declare-fun %lbl%@28458 () Bool)
+(declare-fun %lbl%@28492 () Bool)
+(declare-fun _READ_SOURCE_$$newPosition$1 () (_ BitVec 32))
+(declare-fun %lbl%@28504 () Bool)
+(declare-fun %lbl%@28516 () Bool)
+(declare-fun %lbl%@28521 () Bool)
+(declare-fun %lbl%+7985 () Bool)
+(declare-fun p1$1 at 1 () Bool)
+(declare-fun $acc.0$1 at 1 () (_ BitVec 128))
+(declare-fun p1$2 at 1 () Bool)
+(declare-fun $acc.0$2 at 1 () (_ BitVec 128))
+(declare-fun $i.0$1 at 1 () (_ BitVec 32))
+(declare-fun $i.0$2 at 1 () (_ BitVec 32))
+(declare-fun p0$1 at 2 () Bool)
+(declare-fun p0$2 at 2 () Bool)
+(declare-fun %lbl%+7981 () Bool)
+(declare-fun %lbl%+7969 () Bool)
+(declare-fun inline$$bugle_barrier$1$$1$2 at 1 () (_ BitVec 1))
+(declare-fun %lbl%+7971 () Bool)
+(declare-fun %lbl%+7967 () Bool)
+(declare-fun %lbl%+7965 () Bool)
+(declare-fun inline$$bugle_barrier$1$$1$1 at 1 () (_ BitVec 1))
+(declare-fun %lbl%+7973 () Bool)
+(declare-fun group_id_x$1 () (_ BitVec 32))
+(declare-fun group_id_x$2 () (_ BitVec 32))
+(declare-fun group_id_y$1 () (_ BitVec 32))
+(declare-fun group_id_y$2 () (_ BitVec 32))
+(declare-fun group_id_z$1 () (_ BitVec 32))
+(declare-fun group_id_z$2 () (_ BitVec 32))
+(declare-fun %lbl%+7963 () Bool)
+(declare-fun %lbl%+7961 () Bool)
+(declare-fun inline$$bugle_barrier$1$$0$2 at 1 () (_ BitVec 1))
+(declare-fun %lbl%+7975 () Bool)
+(declare-fun %lbl%+7959 () Bool)
+(declare-fun %lbl%+7957 () Bool)
+(declare-fun inline$$bugle_barrier$1$$0$1 at 1 () (_ BitVec 1))
+(declare-fun %lbl%+7977 () Bool)
+(declare-fun %lbl%+7955 () Bool)
+(declare-fun %lbl%+7979 () Bool)
+(declare-fun %lbl%+7951 () Bool)
+(declare-fun %lbl%@27100 () Bool)
+(declare-fun %lbl%+7983 () Bool)
+(declare-fun p2$1 at 4 () Bool)
+(declare-fun p2$2 at 4 () Bool)
+(declare-fun %lbl%+8975 () Bool)
+(declare-fun %lbl%@26466 () Bool)
+(declare-fun _b11 () Bool)
+(declare-fun %lbl%@26662 () Bool)
+(declare-fun %lbl%@26696 () Bool)
+(declare-fun %lbl%@26702 () Bool)
+(declare-fun %lbl%@26714 () Bool)
+(declare-fun %lbl%@26726 () Bool)
+(declare-fun %lbl%@26783 () Bool)
+(declare-fun %lbl%@26789 () Bool)
+(declare-fun %lbl%@26799 () Bool)
+(declare-fun %lbl%@26811 () Bool)
+(declare-fun %lbl%@26847 () Bool)
+(declare-fun %lbl%@26876 () Bool)
+(declare-fun %lbl%@26886 () Bool)
+(declare-fun %lbl%@26896 () Bool)
+(declare-fun %lbl%@26902 () Bool)
+(declare-fun %lbl%@26936 () Bool)
+(declare-fun %lbl%@26948 () Bool)
+(declare-fun %lbl%@26960 () Bool)
+(declare-fun %lbl%@26966 () Bool)
+(declare-fun %lbl%@27000 () Bool)
+(declare-fun %lbl%@27012 () Bool)
+(declare-fun %lbl%@27024 () Bool)
+(declare-fun %lbl%@27028 () Bool)
+(declare-fun %lbl%+7448 () Bool)
+(declare-fun call3008formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun $j.0$2 at 2 () (_ BitVec 32))
+(declare-fun %lbl%@26241 () Bool)
+(declare-fun p3$2 at 2 () Bool)
+(declare-fun v22$1 at 2 () (_ BitVec 32))
+(declare-fun p3$1 at 2 () Bool)
+(declare-fun FMUL32 ((_ BitVec 32) (_ BitVec 32)) (_ BitVec 32))
+(declare-fun v21$1 at 2 () (_ BitVec 32))
+(declare-fun v20$1 at 2 () (_ BitVec 32))
+(declare-fun v22$1 at 1 () (_ BitVec 32))
+(declare-fun v22$2 at 2 () (_ BitVec 32))
+(declare-fun v21$2 at 2 () (_ BitVec 32))
+(declare-fun v20$2 at 2 () (_ BitVec 32))
+(declare-fun v22$2 at 1 () (_ BitVec 32))
+(declare-fun FADD32 ((_ BitVec 32) (_ BitVec 32)) (_ BitVec 32))
+(declare-fun $acc.1$1 at 2 () (_ BitVec 128))
+(declare-fun FSUB32 ((_ BitVec 32) (_ BitVec 32)) (_ BitVec 32))
+(declare-fun v16$1 at 2 () (_ BitVec 32))
+(declare-fun v6$1 at 0 () (_ BitVec 32))
+(declare-fun v19$1 at 2 () (_ BitVec 32))
+(declare-fun v18$1 at 2 () (_ BitVec 32))
+(declare-fun v17$1 at 2 () (_ BitVec 32))
+(declare-fun $acc.1$2 at 2 () (_ BitVec 128))
+(declare-fun v16$2 at 2 () (_ BitVec 32))
+(declare-fun v6$2 at 0 () (_ BitVec 32))
+(declare-fun v19$2 at 2 () (_ BitVec 32))
+(declare-fun v18$2 at 2 () (_ BitVec 32))
+(declare-fun v17$2 at 2 () (_ BitVec 32))
+(declare-fun $j.0$1 at 2 () (_ BitVec 32))
+(declare-fun p2$1 at 3 () Bool)
+(declare-fun p2$2 at 3 () Bool)
+(declare-fun %lbl%+7442 () Bool)
+(declare-fun inline$_LOG_READ_$$localPos$4$track at 2 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$localPos$1 at 5 () Bool)
+(declare-fun inline$_LOG_READ_$$localPos$4$_offset$1 at 2 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$localPos$1 at 5 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$localPos$1 at 5 () (_ BitVec 32))
+(declare-fun %lbl%+7440 () Bool)
+(declare-fun %lbl%+7446 () Bool)
+(declare-fun call2839formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@25932 () Bool)
+(declare-fun v13$1 at 2 () (_ BitVec 32))
+(declare-fun v3$1 at 0 () (_ BitVec 32))
+(declare-fun v17$1 at 1 () (_ BitVec 32))
+(declare-fun v13$2 at 2 () (_ BitVec 32))
+(declare-fun v3$2 at 0 () (_ BitVec 32))
+(declare-fun v17$2 at 1 () (_ BitVec 32))
+(declare-fun v14$1 at 2 () (_ BitVec 32))
+(declare-fun v4$1 at 0 () (_ BitVec 32))
+(declare-fun v18$1 at 1 () (_ BitVec 32))
+(declare-fun v14$2 at 2 () (_ BitVec 32))
+(declare-fun v4$2 at 0 () (_ BitVec 32))
+(declare-fun v18$2 at 1 () (_ BitVec 32))
+(declare-fun v15$1 at 2 () (_ BitVec 32))
+(declare-fun v5$1 at 0 () (_ BitVec 32))
+(declare-fun v19$1 at 1 () (_ BitVec 32))
+(declare-fun v15$2 at 2 () (_ BitVec 32))
+(declare-fun v5$2 at 0 () (_ BitVec 32))
+(declare-fun v19$2 at 1 () (_ BitVec 32))
+(declare-fun FDIV32 ((_ BitVec 32) (_ BitVec 32)) (_ BitVec 32))
+(declare-fun FSQRT32 ((_ BitVec 32)) (_ BitVec 32))
+(declare-fun $epsSqr$1 () (_ BitVec 32))
+(declare-fun v20$1 at 1 () (_ BitVec 32))
+(declare-fun $epsSqr$2 () (_ BitVec 32))
+(declare-fun v20$2 at 1 () (_ BitVec 32))
+(declare-fun %lbl%@26120 () Bool)
+(declare-fun _HAVOC_bv32$1 at 14 () (_ BitVec 32))
+(declare-fun v21$1 at 1 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 14 () (_ BitVec 32))
+(declare-fun v21$2 at 1 () (_ BitVec 32))
+(declare-fun %lbl%+7360 () Bool)
+(declare-fun inline$_LOG_READ_$$localPos$3$track at 2 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$localPos$1 at 4 () Bool)
+(declare-fun inline$_LOG_READ_$$localPos$3$_offset$1 at 2 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$localPos$1 at 4 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$localPos$1 at 4 () (_ BitVec 32))
+(declare-fun %lbl%+7358 () Bool)
+(declare-fun %lbl%+7364 () Bool)
+(declare-fun call2786formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@25775 () Bool)
+(declare-fun %lbl%@25811 () Bool)
+(declare-fun _HAVOC_bv32$1 at 13 () (_ BitVec 32))
+(declare-fun v16$1 at 1 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 13 () (_ BitVec 32))
+(declare-fun v16$2 at 1 () (_ BitVec 32))
+(declare-fun %lbl%+7278 () Bool)
+(declare-fun inline$_LOG_READ_$$localPos$2$track at 2 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$localPos$1 at 3 () Bool)
+(declare-fun inline$_LOG_READ_$$localPos$2$_offset$1 at 2 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$localPos$1 at 3 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$localPos$1 at 3 () (_ BitVec 32))
+(declare-fun %lbl%+7276 () Bool)
+(declare-fun %lbl%+7282 () Bool)
+(declare-fun call2733formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@25618 () Bool)
+(declare-fun %lbl%@25654 () Bool)
+(declare-fun _HAVOC_bv32$1 at 12 () (_ BitVec 32))
+(declare-fun v15$1 at 1 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 12 () (_ BitVec 32))
+(declare-fun v15$2 at 1 () (_ BitVec 32))
+(declare-fun %lbl%+7196 () Bool)
+(declare-fun inline$_LOG_READ_$$localPos$1$track at 2 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$localPos$1 at 2 () Bool)
+(declare-fun inline$_LOG_READ_$$localPos$1$_offset$1 at 2 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$localPos$1 at 2 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$localPos$1 at 2 () (_ BitVec 32))
+(declare-fun %lbl%+7194 () Bool)
+(declare-fun %lbl%+7200 () Bool)
+(declare-fun call2680formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@25461 () Bool)
+(declare-fun %lbl%@25497 () Bool)
+(declare-fun _HAVOC_bv32$1 at 11 () (_ BitVec 32))
+(declare-fun v14$1 at 1 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 11 () (_ BitVec 32))
+(declare-fun v14$2 at 1 () (_ BitVec 32))
+(declare-fun %lbl%+7114 () Bool)
+(declare-fun inline$_LOG_READ_$$localPos$0$track at 2 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$localPos$1 at 1 () Bool)
+(declare-fun inline$_LOG_READ_$$localPos$0$_offset$1 at 2 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$localPos$1 at 1 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$localPos$1 at 1 () (_ BitVec 32))
+(declare-fun %lbl%+7112 () Bool)
+(declare-fun %lbl%+7118 () Bool)
+(declare-fun p2$1 at 2 () Bool)
+(declare-fun p2$2 at 2 () Bool)
+(declare-fun v12$1 at 2 () Bool)
+(declare-fun v2$1 at 0 () (_ BitVec 32))
+(declare-fun v12$1 at 1 () Bool)
+(declare-fun v12$2 at 2 () Bool)
+(declare-fun v2$2 at 0 () (_ BitVec 32))
+(declare-fun v12$2 at 1 () Bool)
+(declare-fun %lbl%@25348 () Bool)
+(declare-fun _HAVOC_bv32$1 at 10 () (_ BitVec 32))
+(declare-fun v13$1 at 1 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 10 () (_ BitVec 32))
+(declare-fun v13$2 at 1 () (_ BitVec 32))
+(declare-fun %lbl%+7036 () Bool)
+(declare-fun $acc.1$1 at 1 () (_ BitVec 128))
+(declare-fun $acc.1$1 at 0 () (_ BitVec 128))
+(declare-fun $acc.1$2 at 1 () (_ BitVec 128))
+(declare-fun $acc.1$2 at 0 () (_ BitVec 128))
+(declare-fun $j.0$1 at 1 () (_ BitVec 32))
+(declare-fun $j.0$1 at 0 () (_ BitVec 32))
+(declare-fun $j.0$2 at 1 () (_ BitVec 32))
+(declare-fun $j.0$2 at 0 () (_ BitVec 32))
+(declare-fun p2$1 at 1 () Bool)
+(declare-fun p2$2 at 1 () Bool)
+(declare-fun %lbl%@23930 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$localPos$1 at 0 () Bool)
+(declare-fun _READ_OFFSET_$$localPos$1 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@24126 () Bool)
+(declare-fun %lbl%@24160 () Bool)
+(declare-fun %lbl%@24166 () Bool)
+(declare-fun %lbl%@24178 () Bool)
+(declare-fun %lbl%@24190 () Bool)
+(declare-fun %lbl%@24247 () Bool)
+(declare-fun %lbl%@24253 () Bool)
+(declare-fun %lbl%@24263 () Bool)
+(declare-fun %lbl%@24275 () Bool)
+(declare-fun _READ_SOURCE_$$localPos$1 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@24311 () Bool)
+(declare-fun %lbl%@24340 () Bool)
+(declare-fun %lbl%@24350 () Bool)
+(declare-fun %lbl%@24360 () Bool)
+(declare-fun %lbl%@24366 () Bool)
+(declare-fun %lbl%@24400 () Bool)
+(declare-fun %lbl%@24412 () Bool)
+(declare-fun %lbl%@24424 () Bool)
+(declare-fun %lbl%@24430 () Bool)
+(declare-fun %lbl%@24464 () Bool)
+(declare-fun %lbl%@24476 () Bool)
+(declare-fun %lbl%@24488 () Bool)
+(declare-fun %lbl%@24492 () Bool)
+(declare-fun %lbl%+7032 () Bool)
+(declare-fun %lbl%+7020 () Bool)
+(declare-fun inline$$bugle_barrier$0$$1$2 at 1 () (_ BitVec 1))
+(declare-fun %lbl%+7022 () Bool)
+(declare-fun %lbl%+7018 () Bool)
+(declare-fun %lbl%+7016 () Bool)
+(declare-fun inline$$bugle_barrier$0$$1$1 at 1 () (_ BitVec 1))
+(declare-fun %lbl%+7024 () Bool)
+(declare-fun %lbl%+7014 () Bool)
+(declare-fun %lbl%+7012 () Bool)
+(declare-fun inline$$bugle_barrier$0$$0$2 at 1 () (_ BitVec 1))
+(declare-fun %lbl%+7026 () Bool)
+(declare-fun %lbl%+7010 () Bool)
+(declare-fun %lbl%+7008 () Bool)
+(declare-fun inline$$bugle_barrier$0$$0$1 at 1 () (_ BitVec 1))
+(declare-fun %lbl%+7028 () Bool)
+(declare-fun %lbl%+7006 () Bool)
+(declare-fun %lbl%+7030 () Bool)
+(declare-fun %lbl%+7002 () Bool)
+(declare-fun %lbl%@23449 () Bool)
+(declare-fun %lbl%+7034 () Bool)
+(declare-fun call2152formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun v0$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@23317 () Bool)
+(declare-fun %lbl%@23353 () Bool)
+(declare-fun %lbl%+6495 () Bool)
+(declare-fun inline$_LOG_WRITE_$$localPos$3$track at 1 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$localPos$1 at 3 () Bool)
+(declare-fun inline$_LOG_WRITE_$$localPos$3$_offset$1 at 1 () (_ BitVec 32))
+(declare-fun _WRITE_OFFSET_$$localPos$1 at 3 () (_ BitVec 32))
+(declare-fun _WRITE_SOURCE_$$localPos$1 at 3 () (_ BitVec 32))
+(declare-fun %lbl%+6493 () Bool)
+(declare-fun v0$1 at 0 () (_ BitVec 32))
+(declare-fun %lbl%+6499 () Bool)
+(declare-fun call2115formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@23151 () Bool)
+(declare-fun %lbl%@23187 () Bool)
+(declare-fun %lbl%@23223 () Bool)
+(declare-fun %lbl%+6413 () Bool)
+(declare-fun inline$_LOG_WRITE_$$localPos$2$track at 1 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$localPos$1 at 2 () Bool)
+(declare-fun inline$_LOG_WRITE_$$localPos$2$_offset$1 at 1 () (_ BitVec 32))
+(declare-fun _WRITE_OFFSET_$$localPos$1 at 2 () (_ BitVec 32))
+(declare-fun _WRITE_SOURCE_$$localPos$1 at 2 () (_ BitVec 32))
+(declare-fun %lbl%+6411 () Bool)
+(declare-fun %lbl%+6417 () Bool)
+(declare-fun call2078formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@22985 () Bool)
+(declare-fun %lbl%@23021 () Bool)
+(declare-fun %lbl%@23057 () Bool)
+(declare-fun %lbl%+6331 () Bool)
+(declare-fun inline$_LOG_WRITE_$$localPos$1$track at 1 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$localPos$1 at 1 () Bool)
+(declare-fun inline$_LOG_WRITE_$$localPos$1$_offset$1 at 1 () (_ BitVec 32))
+(declare-fun _WRITE_OFFSET_$$localPos$1 at 1 () (_ BitVec 32))
+(declare-fun _WRITE_SOURCE_$$localPos$1 at 1 () (_ BitVec 32))
+(declare-fun %lbl%+6329 () Bool)
+(declare-fun %lbl%+6335 () Bool)
+(declare-fun call2041formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@22819 () Bool)
+(declare-fun %lbl%@22855 () Bool)
+(declare-fun %lbl%@22891 () Bool)
+(declare-fun %lbl%+6249 () Bool)
+(declare-fun inline$_LOG_WRITE_$$localPos$0$track at 1 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$localPos$1 at 0 () Bool)
+(declare-fun inline$_LOG_WRITE_$$localPos$0$_offset$1 at 1 () (_ BitVec 32))
+(declare-fun _WRITE_OFFSET_$$localPos$1 at 0 () (_ BitVec 32))
+(declare-fun _WRITE_SOURCE_$$localPos$1 at 0 () (_ BitVec 32))
+(declare-fun %lbl%+6247 () Bool)
+(declare-fun %lbl%+6253 () Bool)
+(declare-fun call2010formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@22719 () Bool)
+(declare-fun _WRITE_OFFSET_$$pos$1 () (_ BitVec 32))
+(declare-fun %lbl%@22733 () Bool)
+(declare-fun %lbl%+6167 () Bool)
+(declare-fun inline$_LOG_READ_$$pos$7$track at 1 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$pos$1 at 7 () Bool)
+(declare-fun inline$_LOG_READ_$$pos$7$_offset$1 at 1 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$pos$1 at 7 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$pos$1 at 7 () (_ BitVec 32))
+(declare-fun %lbl%+6165 () Bool)
+(declare-fun %lbl%+6171 () Bool)
+(declare-fun call1945formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@22572 () Bool)
+(declare-fun %lbl%@22586 () Bool)
+(declare-fun v11$1 at 1 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$1 at 8 () (_ BitVec 32))
+(declare-fun v11$1 at 0 () (_ BitVec 32))
+(declare-fun v11$2 at 1 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 8 () (_ BitVec 32))
+(declare-fun v11$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%+6085 () Bool)
+(declare-fun inline$_LOG_READ_$$pos$6$track at 1 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$pos$1 at 6 () Bool)
+(declare-fun inline$_LOG_READ_$$pos$6$_offset$1 at 1 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$pos$1 at 6 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$pos$1 at 6 () (_ BitVec 32))
+(declare-fun %lbl%+6083 () Bool)
+(declare-fun %lbl%+6089 () Bool)
+(declare-fun call1880formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@22425 () Bool)
+(declare-fun %lbl%@22439 () Bool)
+(declare-fun v10$1 at 1 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$1 at 7 () (_ BitVec 32))
+(declare-fun v10$1 at 0 () (_ BitVec 32))
+(declare-fun v10$2 at 1 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 7 () (_ BitVec 32))
+(declare-fun v10$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%+6003 () Bool)
+(declare-fun inline$_LOG_READ_$$pos$5$track at 1 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$pos$1 at 5 () Bool)
+(declare-fun inline$_LOG_READ_$$pos$5$_offset$1 at 1 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$pos$1 at 5 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$pos$1 at 5 () (_ BitVec 32))
+(declare-fun %lbl%+6001 () Bool)
+(declare-fun %lbl%+6007 () Bool)
+(declare-fun call1815formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@22278 () Bool)
+(declare-fun %lbl%@22292 () Bool)
+(declare-fun v9$1 at 1 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$1 at 6 () (_ BitVec 32))
+(declare-fun v9$1 at 0 () (_ BitVec 32))
+(declare-fun v9$2 at 1 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 6 () (_ BitVec 32))
+(declare-fun v9$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%+5921 () Bool)
+(declare-fun inline$_LOG_READ_$$pos$4$track at 1 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$pos$1 at 4 () Bool)
+(declare-fun inline$_LOG_READ_$$pos$4$_offset$1 at 1 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$pos$1 at 4 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$pos$1 at 4 () (_ BitVec 32))
+(declare-fun %lbl%+5919 () Bool)
+(declare-fun %lbl%+5925 () Bool)
+(declare-fun p0$1 at 1 () Bool)
+(declare-fun p0$2 at 1 () Bool)
+(declare-fun v7$1 at 1 () Bool)
+(declare-fun $numBodies$1 () (_ BitVec 32))
+(declare-fun v7$1 at 0 () Bool)
+(declare-fun v7$2 at 1 () Bool)
+(declare-fun $numBodies$2 () (_ BitVec 32))
+(declare-fun v7$2 at 0 () Bool)
+(declare-fun %lbl%@22153 () Bool)
+(declare-fun v8$1 at 1 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$1 at 5 () (_ BitVec 32))
+(declare-fun v8$1 at 0 () (_ BitVec 32))
+(declare-fun v8$2 at 1 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 5 () (_ BitVec 32))
+(declare-fun v8$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%+5843 () Bool)
+(declare-fun call1006formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@19579 () Bool)
+(declare-fun $acc.0$1 at 0 () (_ BitVec 128))
+(declare-fun $acc.0$1 () (_ BitVec 128))
+(declare-fun $acc.0$2 at 0 () (_ BitVec 128))
+(declare-fun $acc.0$2 () (_ BitVec 128))
+(declare-fun $i.0$1 at 0 () (_ BitVec 32))
+(declare-fun $i.0$1 () (_ BitVec 32))
+(declare-fun $i.0$2 at 0 () (_ BitVec 32))
+(declare-fun $i.0$2 () (_ BitVec 32))
+(declare-fun p0$1 at 0 () Bool)
+(declare-fun p0$2 at 0 () Bool)
+(declare-fun %lbl%@19676 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$localPos$1 () Bool)
+(declare-fun _WRITE_OFFSET_$$localPos$1 () (_ BitVec 32))
+(declare-fun %lbl%@19742 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$localPos$1 () Bool)
+(declare-fun _READ_OFFSET_$$localPos$1 () (_ BitVec 32))
+(declare-fun %lbl%@19944 () Bool)
+(declare-fun %lbl%@19952 () Bool)
+(declare-fun %lbl%@19960 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$pos$1 at 3 () Bool)
+(declare-fun _READ_OFFSET_$$pos$1 at 3 () (_ BitVec 32))
+(declare-fun %lbl%@20181 () Bool)
+(declare-fun %lbl%@20188 () Bool)
+(declare-fun $j.0$1 () (_ BitVec 32))
+(declare-fun $j.0$2 () (_ BitVec 32))
+(declare-fun %lbl%@20204 () Bool)
+(declare-fun $acc.1$1 () (_ BitVec 128))
+(declare-fun $acc.1$2 () (_ BitVec 128))
+(declare-fun %lbl%@20220 () Bool)
+(declare-fun %lbl%@20234 () Bool)
+(declare-fun %lbl%@20248 () Bool)
+(declare-fun %lbl%@20256 () Bool)
+(declare-fun %lbl%@20290 () Bool)
+(declare-fun %lbl%@20296 () Bool)
+(declare-fun %lbl%@20308 () Bool)
+(declare-fun %lbl%@20320 () Bool)
+(declare-fun _READ_SOURCE_$$pos$1 at 3 () (_ BitVec 32))
+(declare-fun %lbl%@20377 () Bool)
+(declare-fun %lbl%@20383 () Bool)
+(declare-fun %lbl%@20393 () Bool)
+(declare-fun %lbl%@20405 () Bool)
+(declare-fun _READ_SOURCE_$$localPos$1 () (_ BitVec 32))
+(declare-fun %lbl%@20447 () Bool)
+(declare-fun _WRITE_SOURCE_$$localPos$1 () (_ BitVec 32))
+(declare-fun %lbl%@20481 () Bool)
+(declare-fun %lbl%@20493 () Bool)
+(declare-fun %lbl%@20505 () Bool)
+(declare-fun %lbl%@20511 () Bool)
+(declare-fun %lbl%@20545 () Bool)
+(declare-fun %lbl%@20557 () Bool)
+(declare-fun %lbl%@20569 () Bool)
+(declare-fun %lbl%@20575 () Bool)
+(declare-fun %lbl%@20609 () Bool)
+(declare-fun %lbl%@20621 () Bool)
+(declare-fun %lbl%@20633 () Bool)
+(declare-fun %lbl%@20638 () Bool)
+(declare-fun %lbl%+5837 () Bool)
+(declare-fun inline$_LOG_READ_$$pos$3$track at 0 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$pos$1 at 2 () Bool)
+(declare-fun inline$_LOG_READ_$$pos$3$_offset$1 at 0 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$pos$1 at 2 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$pos$1 at 2 () (_ BitVec 32))
+(declare-fun %lbl%+5835 () Bool)
+(declare-fun %lbl%+5841 () Bool)
+(declare-fun call953formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@19437 () Bool)
+(declare-fun %lbl%@19451 () Bool)
+(declare-fun _HAVOC_bv32$1 at 3 () (_ BitVec 32))
+(declare-fun v6$1 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 3 () (_ BitVec 32))
+(declare-fun v6$2 () (_ BitVec 32))
+(declare-fun %lbl%+5755 () Bool)
+(declare-fun inline$_LOG_READ_$$pos$2$track at 0 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$pos$1 at 1 () Bool)
+(declare-fun inline$_LOG_READ_$$pos$2$_offset$1 at 0 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$pos$1 at 1 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$pos$1 at 1 () (_ BitVec 32))
+(declare-fun %lbl%+5753 () Bool)
+(declare-fun %lbl%+5759 () Bool)
+(declare-fun call900formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@19295 () Bool)
+(declare-fun %lbl%@19309 () Bool)
+(declare-fun _HAVOC_bv32$1 at 2 () (_ BitVec 32))
+(declare-fun v5$1 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 2 () (_ BitVec 32))
+(declare-fun v5$2 () (_ BitVec 32))
+(declare-fun %lbl%+5673 () Bool)
+(declare-fun inline$_LOG_READ_$$pos$1$track at 0 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$pos$1 at 0 () Bool)
+(declare-fun inline$_LOG_READ_$$pos$1$_offset$1 at 0 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$pos$1 at 0 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$pos$1 at 0 () (_ BitVec 32))
+(declare-fun %lbl%+5671 () Bool)
+(declare-fun %lbl%+5677 () Bool)
+(declare-fun call847formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@19153 () Bool)
+(declare-fun %lbl%@19167 () Bool)
+(declare-fun _HAVOC_bv32$1 at 1 () (_ BitVec 32))
+(declare-fun v4$1 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 1 () (_ BitVec 32))
+(declare-fun v4$2 () (_ BitVec 32))
+(declare-fun %lbl%+5591 () Bool)
+(declare-fun inline$_LOG_READ_$$pos$0$track at 0 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$pos$1 () Bool)
+(declare-fun inline$_LOG_READ_$$pos$0$_offset$1 at 0 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$pos$1 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$pos$1 () (_ BitVec 32))
+(declare-fun %lbl%+5589 () Bool)
+(declare-fun %lbl%+5595 () Bool)
+(declare-fun v0$1 () (_ BitVec 32))
+(declare-fun local_id_x$2 () (_ BitVec 32))
+(declare-fun v0$2 () (_ BitVec 32))
+(declare-fun v1$1 () (_ BitVec 32))
+(declare-fun v1$2 () (_ BitVec 32))
+(declare-fun v2$1 () (_ BitVec 32))
+(declare-fun v2$2 () (_ BitVec 32))
+(declare-fun %lbl%@19027 () Bool)
+(declare-fun _HAVOC_bv32$1 at 0 () (_ BitVec 32))
+(declare-fun v3$1 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 0 () (_ BitVec 32))
+(declare-fun v3$2 () (_ BitVec 32))
+(declare-fun %lbl%+17409 () Bool)
+(declare-fun local_id_y$1 () (_ BitVec 32))
+(declare-fun local_id_y$2 () (_ BitVec 32))
+(declare-fun local_id_z$1 () (_ BitVec 32))
+(declare-fun local_id_z$2 () (_ BitVec 32))
+(declare-fun $deltaTime$1 () (_ BitVec 32))
+(declare-fun $deltaTime$2 () (_ BitVec 32))
+(assert (not (= (ite (= group_size_y #x00000001) #b1 #b0) #b0)))
+(assert (not (= (ite (= group_size_z #x00000001) #b1 #b0) #b0)))
+(assert (not (= (ite (= num_groups_y #x00000001) #b1 #b0) #b0)))
+(assert (not (= (ite (= num_groups_z #x00000001) #b1 #b0) #b0)))
+(assert (not (= (ite (= group_size_x #x00000100) #b1 #b0) #b0)))
+(assert (not (= (ite (= num_groups_x #x00000004) #b1 #b0) #b0)))
+(define-fun $nbody_sim () Bool (=> (= (ControlFlow 0 0) 17409) (let (($for.cond.tail$12_correct (=> (and %lbl%+8971 true) (=> (= call3746formal at _offset$2 at 0 (bvadd (bvmul v1$2 at 0 #x00000004) #x00000003)) (and
+(or %lbl%@30054 (=> (= (ControlFlow 0 8971) (- 0 30054)) (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$newVelocity$1 at 3
+(= _WRITE_OFFSET_$$newVelocity$1 at 3 call3746formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$newVelocity$1 at 3
+(= _WRITE_OFFSET_$$newVelocity$1 at 3 call3746formal at _offset$2 at 0))) (and
+(or %lbl%@30066 (=> (= (ControlFlow 0 8971) (- 0 30066)) (not (and
+_P$2
+_READ_HAS_OCCURRED_$$newVelocity$1
+(= _READ_OFFSET_$$newVelocity$1 call3746formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_READ_HAS_OCCURRED_$$newVelocity$1
+(= _READ_OFFSET_$$newVelocity$1 call3746formal at _offset$2 at 0))) true))))))))
+(let ((inline$_LOG_WRITE_$$newVelocity$3$_LOG_WRITE_correct (=> (and %lbl%+8965 true) (=> (and
+(= _WRITE_HAS_OCCURRED_$$newVelocity$1 at 3 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newVelocity$3$track at 0) true _WRITE_HAS_OCCURRED_$$newVelocity$1 at 2))
+(= _WRITE_OFFSET_$$newVelocity$1 at 3 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newVelocity$3$track at 0) inline$_LOG_WRITE_$$newVelocity$3$_offset$1 at 0 _WRITE_OFFSET_$$newVelocity$1 at 2))
+(= _WRITE_SOURCE_$$newVelocity$1 at 3 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newVelocity$3$track at 0) #x00000010 _WRITE_SOURCE_$$newVelocity$1 at 2))
+(= (ControlFlow 0 8965) 8971)) $for.cond.tail$12_correct))))
+(let ((inline$_LOG_WRITE_$$newVelocity$3$Entry_correct (=> (and %lbl%+8963 true) (=> (and
+(= inline$_LOG_WRITE_$$newVelocity$3$_offset$1 at 0 (bvadd (bvmul v1$1 at 0 #x00000004) #x00000003))
+(= (ControlFlow 0 8963) 8965)) inline$_LOG_WRITE_$$newVelocity$3$_LOG_WRITE_correct))))
+(let (($for.cond.tail$11_correct (=> (and %lbl%+8969 true) (=> (= call3709formal at _offset$2 at 0 (bvadd (bvmul v1$2 at 0 #x00000004) #x00000002)) (and
+(or %lbl%@29931 (=> (= (ControlFlow 0 8969) (- 0 29931)) (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$newVelocity$1 at 2
+(= _WRITE_OFFSET_$$newVelocity$1 at 2 call3709formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$newVelocity$1 at 2
+(= _WRITE_OFFSET_$$newVelocity$1 at 2 call3709formal at _offset$2 at 0))) (and
+(or %lbl%@29943 (=> (= (ControlFlow 0 8969) (- 0 29943)) (not (and
+_P$2
+_READ_HAS_OCCURRED_$$newVelocity$1
+(= _READ_OFFSET_$$newVelocity$1 call3709formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_READ_HAS_OCCURRED_$$newVelocity$1
+(= _READ_OFFSET_$$newVelocity$1 call3709formal at _offset$2 at 0))) (and
+(or %lbl%@29957 (=> (= (ControlFlow 0 8969) (- 0 29957)) (=> _P$1 true)))
+(=> (=> _P$1 true) (=> (= (ControlFlow 0 8969) 8963) inline$_LOG_WRITE_$$newVelocity$3$Entry_correct)))))))))))
+(let ((inline$_LOG_WRITE_$$newVelocity$2$_LOG_WRITE_correct (=> (and %lbl%+8883 true) (=> (and
+(= _WRITE_HAS_OCCURRED_$$newVelocity$1 at 2 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newVelocity$2$track at 0) true _WRITE_HAS_OCCURRED_$$newVelocity$1 at 1))
+(= _WRITE_OFFSET_$$newVelocity$1 at 2 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newVelocity$2$track at 0) inline$_LOG_WRITE_$$newVelocity$2$_offset$1 at 0 _WRITE_OFFSET_$$newVelocity$1 at 1))
+(= _WRITE_SOURCE_$$newVelocity$1 at 2 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newVelocity$2$track at 0) #x0000000f _WRITE_SOURCE_$$newVelocity$1 at 1))
+(= (ControlFlow 0 8883) 8969)) $for.cond.tail$11_correct))))
+(let ((inline$_LOG_WRITE_$$newVelocity$2$Entry_correct (=> (and %lbl%+8881 true) (=> (and
+(= inline$_LOG_WRITE_$$newVelocity$2$_offset$1 at 0 (bvadd (bvmul v1$1 at 0 #x00000004) #x00000002))
+(= (ControlFlow 0 8881) 8883)) inline$_LOG_WRITE_$$newVelocity$2$_LOG_WRITE_correct))))
+(let (($for.cond.tail$10_correct (=> (and %lbl%+8887 true) (=> (= call3672formal at _offset$2 at 0 (bvadd (bvmul v1$2 at 0 #x00000004) #x00000001)) (and
+(or %lbl%@29808 (=> (= (ControlFlow 0 8887) (- 0 29808)) (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$newVelocity$1 at 1
+(= _WRITE_OFFSET_$$newVelocity$1 at 1 call3672formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$newVelocity$1 at 1
+(= _WRITE_OFFSET_$$newVelocity$1 at 1 call3672formal at _offset$2 at 0))) (and
+(or %lbl%@29820 (=> (= (ControlFlow 0 8887) (- 0 29820)) (not (and
+_P$2
+_READ_HAS_OCCURRED_$$newVelocity$1
+(= _READ_OFFSET_$$newVelocity$1 call3672formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_READ_HAS_OCCURRED_$$newVelocity$1
+(= _READ_OFFSET_$$newVelocity$1 call3672formal at _offset$2 at 0))) (and
+(or %lbl%@29834 (=> (= (ControlFlow 0 8887) (- 0 29834)) (=> _P$1 true)))
+(=> (=> _P$1 true) (=> (= (ControlFlow 0 8887) 8881) inline$_LOG_WRITE_$$newVelocity$2$Entry_correct)))))))))))
+(let ((inline$_LOG_WRITE_$$newVelocity$1$_LOG_WRITE_correct (=> (and %lbl%+8801 true) (=> (and
+(= _WRITE_HAS_OCCURRED_$$newVelocity$1 at 1 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newVelocity$1$track at 0) true _WRITE_HAS_OCCURRED_$$newVelocity$1 at 0))
+(= _WRITE_OFFSET_$$newVelocity$1 at 1 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newVelocity$1$track at 0) inline$_LOG_WRITE_$$newVelocity$1$_offset$1 at 0 _WRITE_OFFSET_$$newVelocity$1 at 0))
+(= _WRITE_SOURCE_$$newVelocity$1 at 1 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newVelocity$1$track at 0) #x0000000e _WRITE_SOURCE_$$newVelocity$1 at 0))
+(= (ControlFlow 0 8801) 8887)) $for.cond.tail$10_correct))))
+(let ((inline$_LOG_WRITE_$$newVelocity$1$Entry_correct (=> (and %lbl%+8799 true) (=> (and
+(= inline$_LOG_WRITE_$$newVelocity$1$_offset$1 at 0 (bvadd (bvmul v1$1 at 0 #x00000004) #x00000001))
+(= (ControlFlow 0 8799) 8801)) inline$_LOG_WRITE_$$newVelocity$1$_LOG_WRITE_correct))))
+(let (($for.cond.tail$9_correct (=> (and %lbl%+8805 true) (=> (= call3635formal at _offset$2 at 0 (bvmul v1$2 at 0 #x00000004)) (and
+(or %lbl%@29685 (=> (= (ControlFlow 0 8805) (- 0 29685)) (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$newVelocity$1 at 0
+(= _WRITE_OFFSET_$$newVelocity$1 at 0 call3635formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$newVelocity$1 at 0
+(= _WRITE_OFFSET_$$newVelocity$1 at 0 call3635formal at _offset$2 at 0))) (and
+(or %lbl%@29697 (=> (= (ControlFlow 0 8805) (- 0 29697)) (not (and
+_P$2
+_READ_HAS_OCCURRED_$$newVelocity$1
+(= _READ_OFFSET_$$newVelocity$1 call3635formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_READ_HAS_OCCURRED_$$newVelocity$1
+(= _READ_OFFSET_$$newVelocity$1 call3635formal at _offset$2 at 0))) (and
+(or %lbl%@29711 (=> (= (ControlFlow 0 8805) (- 0 29711)) (=> _P$1 true)))
+(=> (=> _P$1 true) (=> (= (ControlFlow 0 8805) 8799) inline$_LOG_WRITE_$$newVelocity$1$Entry_correct)))))))))))
+(let ((inline$_LOG_WRITE_$$newVelocity$0$_LOG_WRITE_correct (=> (and %lbl%+8719 true) (=> (and
+(= _WRITE_HAS_OCCURRED_$$newVelocity$1 at 0 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newVelocity$0$track at 0) true _WRITE_HAS_OCCURRED_$$newVelocity$1))
+(= _WRITE_OFFSET_$$newVelocity$1 at 0 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newVelocity$0$track at 0) inline$_LOG_WRITE_$$newVelocity$0$_offset$1 at 0 _WRITE_OFFSET_$$newVelocity$1))
+(= _WRITE_SOURCE_$$newVelocity$1 at 0 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newVelocity$0$track at 0) #x0000000d _WRITE_SOURCE_$$newVelocity$1))
+(= (ControlFlow 0 8719) 8805)) $for.cond.tail$9_correct))))
+(let ((inline$_LOG_WRITE_$$newVelocity$0$Entry_correct (=> (and %lbl%+8717 true) (=> (and
+(= inline$_LOG_WRITE_$$newVelocity$0$_offset$1 at 0 (bvmul v1$1 at 0 #x00000004))
+(= (ControlFlow 0 8717) 8719)) inline$_LOG_WRITE_$$newVelocity$0$_LOG_WRITE_correct))))
+(let (($for.cond.tail$8_correct (=> (and %lbl%+8723 true) (=> (= call3604formal at _offset$2 at 0 (bvadd (bvmul v1$2 at 0 #x00000004) #x00000003)) (and
+(or %lbl%@29564 (=> (= (ControlFlow 0 8723) (- 0 29564)) (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$newPosition$1 at 3
+(= _WRITE_OFFSET_$$newPosition$1 at 3 call3604formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$newPosition$1 at 3
+(= _WRITE_OFFSET_$$newPosition$1 at 3 call3604formal at _offset$2 at 0))) (and
+(or %lbl%@29576 (=> (= (ControlFlow 0 8723) (- 0 29576)) (not (and
+_P$2
+_READ_HAS_OCCURRED_$$newPosition$1
+(= _READ_OFFSET_$$newPosition$1 call3604formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_READ_HAS_OCCURRED_$$newPosition$1
+(= _READ_OFFSET_$$newPosition$1 call3604formal at _offset$2 at 0))) (and
+(or %lbl%@29590 (=> (= (ControlFlow 0 8723) (- 0 29590)) (=> _P$1 true)))
+(=> (=> _P$1 true) (=> (= (ControlFlow 0 8723) 8717) inline$_LOG_WRITE_$$newVelocity$0$Entry_correct)))))))))))
+(let ((inline$_LOG_WRITE_$$newPosition$3$_LOG_WRITE_correct (=> (and %lbl%+8637 true) (=> (and
+(= _WRITE_HAS_OCCURRED_$$newPosition$1 at 3 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newPosition$3$track at 0) true _WRITE_HAS_OCCURRED_$$newPosition$1 at 2))
+(= _WRITE_OFFSET_$$newPosition$1 at 3 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newPosition$3$track at 0) inline$_LOG_WRITE_$$newPosition$3$_offset$1 at 0 _WRITE_OFFSET_$$newPosition$1 at 2))
+(= _WRITE_SOURCE_$$newPosition$1 at 3 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newPosition$3$track at 0) #x0000000c _WRITE_SOURCE_$$newPosition$1 at 2))
+(= (ControlFlow 0 8637) 8723)) $for.cond.tail$8_correct))))
+(let ((inline$_LOG_WRITE_$$newPosition$3$Entry_correct (=> (and %lbl%+8635 true) (=> (and
+(= inline$_LOG_WRITE_$$newPosition$3$_offset$1 at 0 (bvadd (bvmul v1$1 at 0 #x00000004) #x00000003))
+(= (ControlFlow 0 8635) 8637)) inline$_LOG_WRITE_$$newPosition$3$_LOG_WRITE_correct))))
+(let (($for.cond.tail$7_correct (=> (and %lbl%+8641 true) (=> (= call3567formal at _offset$2 at 0 (bvadd (bvmul v1$2 at 0 #x00000004) #x00000002)) (and
+(or %lbl%@29441 (=> (= (ControlFlow 0 8641) (- 0 29441)) (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$newPosition$1 at 2
+(= _WRITE_OFFSET_$$newPosition$1 at 2 call3567formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$newPosition$1 at 2
+(= _WRITE_OFFSET_$$newPosition$1 at 2 call3567formal at _offset$2 at 0))) (and
+(or %lbl%@29453 (=> (= (ControlFlow 0 8641) (- 0 29453)) (not (and
+_P$2
+_READ_HAS_OCCURRED_$$newPosition$1
+(= _READ_OFFSET_$$newPosition$1 call3567formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_READ_HAS_OCCURRED_$$newPosition$1
+(= _READ_OFFSET_$$newPosition$1 call3567formal at _offset$2 at 0))) (and
+(or %lbl%@29467 (=> (= (ControlFlow 0 8641) (- 0 29467)) (=> _P$1 true)))
+(=> (=> _P$1 true) (=> (= (ControlFlow 0 8641) 8635) inline$_LOG_WRITE_$$newPosition$3$Entry_correct)))))))))))
+(let ((inline$_LOG_WRITE_$$newPosition$2$_LOG_WRITE_correct (=> (and %lbl%+8555 true) (=> (and
+(= _WRITE_HAS_OCCURRED_$$newPosition$1 at 2 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newPosition$2$track at 0) true _WRITE_HAS_OCCURRED_$$newPosition$1 at 1))
+(= _WRITE_OFFSET_$$newPosition$1 at 2 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newPosition$2$track at 0) inline$_LOG_WRITE_$$newPosition$2$_offset$1 at 0 _WRITE_OFFSET_$$newPosition$1 at 1))
+(= _WRITE_SOURCE_$$newPosition$1 at 2 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newPosition$2$track at 0) #x0000000b _WRITE_SOURCE_$$newPosition$1 at 1))
+(= (ControlFlow 0 8555) 8641)) $for.cond.tail$7_correct))))
+(let ((inline$_LOG_WRITE_$$newPosition$2$Entry_correct (=> (and %lbl%+8553 true) (=> (and
+(= inline$_LOG_WRITE_$$newPosition$2$_offset$1 at 0 (bvadd (bvmul v1$1 at 0 #x00000004) #x00000002))
+(= (ControlFlow 0 8553) 8555)) inline$_LOG_WRITE_$$newPosition$2$_LOG_WRITE_correct))))
+(let (($for.cond.tail$6_correct (=> (and %lbl%+8559 true) (=> (= call3530formal at _offset$2 at 0 (bvadd (bvmul v1$2 at 0 #x00000004) #x00000001)) (and
+(or %lbl%@29318 (=> (= (ControlFlow 0 8559) (- 0 29318)) (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$newPosition$1 at 1
+(= _WRITE_OFFSET_$$newPosition$1 at 1 call3530formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$newPosition$1 at 1
+(= _WRITE_OFFSET_$$newPosition$1 at 1 call3530formal at _offset$2 at 0))) (and
+(or %lbl%@29330 (=> (= (ControlFlow 0 8559) (- 0 29330)) (not (and
+_P$2
+_READ_HAS_OCCURRED_$$newPosition$1
+(= _READ_OFFSET_$$newPosition$1 call3530formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_READ_HAS_OCCURRED_$$newPosition$1
+(= _READ_OFFSET_$$newPosition$1 call3530formal at _offset$2 at 0))) (and
+(or %lbl%@29344 (=> (= (ControlFlow 0 8559) (- 0 29344)) (=> _P$1 true)))
+(=> (=> _P$1 true) (=> (= (ControlFlow 0 8559) 8553) inline$_LOG_WRITE_$$newPosition$2$Entry_correct)))))))))))
+(let ((inline$_LOG_WRITE_$$newPosition$1$_LOG_WRITE_correct (=> (and %lbl%+8473 true) (=> (and
+(= _WRITE_HAS_OCCURRED_$$newPosition$1 at 1 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newPosition$1$track at 0) true _WRITE_HAS_OCCURRED_$$newPosition$1 at 0))
+(= _WRITE_OFFSET_$$newPosition$1 at 1 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newPosition$1$track at 0) inline$_LOG_WRITE_$$newPosition$1$_offset$1 at 0 _WRITE_OFFSET_$$newPosition$1 at 0))
+(= _WRITE_SOURCE_$$newPosition$1 at 1 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newPosition$1$track at 0) #x0000000a _WRITE_SOURCE_$$newPosition$1 at 0))
+(= (ControlFlow 0 8473) 8559)) $for.cond.tail$6_correct))))
+(let ((inline$_LOG_WRITE_$$newPosition$1$Entry_correct (=> (and %lbl%+8471 true) (=> (and
+(= inline$_LOG_WRITE_$$newPosition$1$_offset$1 at 0 (bvadd (bvmul v1$1 at 0 #x00000004) #x00000001))
+(= (ControlFlow 0 8471) 8473)) inline$_LOG_WRITE_$$newPosition$1$_LOG_WRITE_correct))))
+(let (($for.cond.tail$5_correct (=> (and %lbl%+8477 true) (=> (= call3493formal at _offset$2 at 0 (bvmul v1$2 at 0 #x00000004)) (and
+(or %lbl%@29195 (=> (= (ControlFlow 0 8477) (- 0 29195)) (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$newPosition$1 at 0
+(= _WRITE_OFFSET_$$newPosition$1 at 0 call3493formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$newPosition$1 at 0
+(= _WRITE_OFFSET_$$newPosition$1 at 0 call3493formal at _offset$2 at 0))) (and
+(or %lbl%@29207 (=> (= (ControlFlow 0 8477) (- 0 29207)) (not (and
+_P$2
+_READ_HAS_OCCURRED_$$newPosition$1
+(= _READ_OFFSET_$$newPosition$1 call3493formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_READ_HAS_OCCURRED_$$newPosition$1
+(= _READ_OFFSET_$$newPosition$1 call3493formal at _offset$2 at 0))) (and
+(or %lbl%@29221 (=> (= (ControlFlow 0 8477) (- 0 29221)) (=> _P$1 true)))
+(=> (=> _P$1 true) (=> (= (ControlFlow 0 8477) 8471) inline$_LOG_WRITE_$$newPosition$1$Entry_correct)))))))))))
+(let ((inline$_LOG_WRITE_$$newPosition$0$_LOG_WRITE_correct (=> (and %lbl%+8391 true) (=> (and
+(= _WRITE_HAS_OCCURRED_$$newPosition$1 at 0 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newPosition$0$track at 0) true _WRITE_HAS_OCCURRED_$$newPosition$1))
+(= _WRITE_OFFSET_$$newPosition$1 at 0 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newPosition$0$track at 0) inline$_LOG_WRITE_$$newPosition$0$_offset$1 at 0 _WRITE_OFFSET_$$newPosition$1))
+(= _WRITE_SOURCE_$$newPosition$1 at 0 (ite (and
+_P$1
+inline$_LOG_WRITE_$$newPosition$0$track at 0) #x00000009 _WRITE_SOURCE_$$newPosition$1))
+(= (ControlFlow 0 8391) 8477)) $for.cond.tail$5_correct))))
+(let ((inline$_LOG_WRITE_$$newPosition$0$Entry_correct (=> (and %lbl%+8389 true) (=> (and
+(= inline$_LOG_WRITE_$$newPosition$0$_offset$1 at 0 (bvmul v1$1 at 0 #x00000004))
+(= (ControlFlow 0 8389) 8391)) inline$_LOG_WRITE_$$newPosition$0$_LOG_WRITE_correct))))
+(let (($for.cond.tail$4_correct (=> (and %lbl%+8395 true) (=> (= call3462formal at _offset$2 at 0 (bvadd (bvmul v1$2 at 0 #x00000004) #x00000003)) (and
+(or %lbl%@29086 (=> (= (ControlFlow 0 8395) (- 0 29086)) (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$vel$1
+(= _WRITE_OFFSET_$$vel$1 call3462formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$vel$1
+(= _WRITE_OFFSET_$$vel$1 call3462formal at _offset$2 at 0))) (and
+(or %lbl%@29100 (=> (= (ControlFlow 0 8395) (- 0 29100)) (=> _P$1 true)))
+(=> (=> _P$1 true) (=> (= (ControlFlow 0 8395) 8389) inline$_LOG_WRITE_$$newPosition$0$Entry_correct)))))))))
+(let ((inline$_LOG_READ_$$vel$3$_LOG_READ_correct (=> (and %lbl%+8309 true) (=> (and
+(= _READ_HAS_OCCURRED_$$vel$1 at 3 (ite (and
+_P$1
+inline$_LOG_READ_$$vel$3$track at 0) true _READ_HAS_OCCURRED_$$vel$1 at 2))
+(= _READ_OFFSET_$$vel$1 at 3 (ite (and
+_P$1
+inline$_LOG_READ_$$vel$3$track at 0) inline$_LOG_READ_$$vel$3$_offset$1 at 0 _READ_OFFSET_$$vel$1 at 2))
+(= _READ_SOURCE_$$vel$1 at 3 (ite (and
+_P$1
+inline$_LOG_READ_$$vel$3$track at 0) #x00000008 _READ_SOURCE_$$vel$1 at 2))
+(= (ControlFlow 0 8309) 8395)) $for.cond.tail$4_correct))))
+(let ((inline$_LOG_READ_$$vel$3$Entry_correct (=> (and %lbl%+8307 true) (=> (and
+(= inline$_LOG_READ_$$vel$3$_offset$1 at 0 (bvadd (bvmul v1$1 at 0 #x00000004) #x00000003))
+(= (ControlFlow 0 8307) 8309)) inline$_LOG_READ_$$vel$3$_LOG_READ_correct))))
+(let (($for.cond.tail$3_correct (=> (and %lbl%+8313 true) (=> (= call3409formal at _offset$2 at 0 (bvadd (bvmul v1$2 at 0 #x00000004) #x00000002)) (and
+(or %lbl%@28944 (=> (= (ControlFlow 0 8313) (- 0 28944)) (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$vel$1
+(= _WRITE_OFFSET_$$vel$1 call3409formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$vel$1
+(= _WRITE_OFFSET_$$vel$1 call3409formal at _offset$2 at 0))) (and
+(or %lbl%@28958 (=> (= (ControlFlow 0 8313) (- 0 28958)) (=> _P$1 true)))
+(=> (=> _P$1 true) (=> (and
+(= v26$1 at 0 (ite _P$1 _HAVOC_bv32$1 at 18 v26$1))
+(= v26$2 at 0 (ite _P$2 _HAVOC_bv32$2 at 18 v26$2))
+(= (ControlFlow 0 8313) 8307)) inline$_LOG_READ_$$vel$3$Entry_correct)))))))))
+(let ((inline$_LOG_READ_$$vel$2$_LOG_READ_correct (=> (and %lbl%+8227 true) (=> (and
+(= _READ_HAS_OCCURRED_$$vel$1 at 2 (ite (and
+_P$1
+inline$_LOG_READ_$$vel$2$track at 0) true _READ_HAS_OCCURRED_$$vel$1 at 1))
+(= _READ_OFFSET_$$vel$1 at 2 (ite (and
+_P$1
+inline$_LOG_READ_$$vel$2$track at 0) inline$_LOG_READ_$$vel$2$_offset$1 at 0 _READ_OFFSET_$$vel$1 at 1))
+(= _READ_SOURCE_$$vel$1 at 2 (ite (and
+_P$1
+inline$_LOG_READ_$$vel$2$track at 0) #x00000007 _READ_SOURCE_$$vel$1 at 1))
+(= (ControlFlow 0 8227) 8313)) $for.cond.tail$3_correct))))
+(let ((inline$_LOG_READ_$$vel$2$Entry_correct (=> (and %lbl%+8225 true) (=> (and
+(= inline$_LOG_READ_$$vel$2$_offset$1 at 0 (bvadd (bvmul v1$1 at 0 #x00000004) #x00000002))
+(= (ControlFlow 0 8225) 8227)) inline$_LOG_READ_$$vel$2$_LOG_READ_correct))))
+(let (($for.cond.tail$2_correct (=> (and %lbl%+8231 true) (=> (= call3356formal at _offset$2 at 0 (bvadd (bvmul v1$2 at 0 #x00000004) #x00000001)) (and
+(or %lbl%@28802 (=> (= (ControlFlow 0 8231) (- 0 28802)) (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$vel$1
+(= _WRITE_OFFSET_$$vel$1 call3356formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$vel$1
+(= _WRITE_OFFSET_$$vel$1 call3356formal at _offset$2 at 0))) (and
+(or %lbl%@28816 (=> (= (ControlFlow 0 8231) (- 0 28816)) (=> _P$1 true)))
+(=> (=> _P$1 true) (=> (and
+(= v25$1 at 0 (ite _P$1 _HAVOC_bv32$1 at 17 v25$1))
+(= v25$2 at 0 (ite _P$2 _HAVOC_bv32$2 at 17 v25$2))
+(= (ControlFlow 0 8231) 8225)) inline$_LOG_READ_$$vel$2$Entry_correct)))))))))
+(let ((inline$_LOG_READ_$$vel$1$_LOG_READ_correct (=> (and %lbl%+8145 true) (=> (and
+(= _READ_HAS_OCCURRED_$$vel$1 at 1 (ite (and
+_P$1
+inline$_LOG_READ_$$vel$1$track at 0) true _READ_HAS_OCCURRED_$$vel$1 at 0))
+(= _READ_OFFSET_$$vel$1 at 1 (ite (and
+_P$1
+inline$_LOG_READ_$$vel$1$track at 0) inline$_LOG_READ_$$vel$1$_offset$1 at 0 _READ_OFFSET_$$vel$1 at 0))
+(= _READ_SOURCE_$$vel$1 at 1 (ite (and
+_P$1
+inline$_LOG_READ_$$vel$1$track at 0) #x00000006 _READ_SOURCE_$$vel$1 at 0))
+(= (ControlFlow 0 8145) 8231)) $for.cond.tail$2_correct))))
+(let ((inline$_LOG_READ_$$vel$1$Entry_correct (=> (and %lbl%+8143 true) (=> (and
+(= inline$_LOG_READ_$$vel$1$_offset$1 at 0 (bvadd (bvmul v1$1 at 0 #x00000004) #x00000001))
+(= (ControlFlow 0 8143) 8145)) inline$_LOG_READ_$$vel$1$_LOG_READ_correct))))
+(let (($for.cond.tail$1_correct (=> (and %lbl%+8149 true) (=> (= call3303formal at _offset$2 at 0 (bvmul v1$2 at 0 #x00000004)) (and
+(or %lbl%@28660 (=> (= (ControlFlow 0 8149) (- 0 28660)) (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$vel$1
+(= _WRITE_OFFSET_$$vel$1 call3303formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$vel$1
+(= _WRITE_OFFSET_$$vel$1 call3303formal at _offset$2 at 0))) (and
+(or %lbl%@28674 (=> (= (ControlFlow 0 8149) (- 0 28674)) (=> _P$1 true)))
+(=> (=> _P$1 true) (=> (and
+(= v24$1 at 0 (ite _P$1 _HAVOC_bv32$1 at 16 v24$1))
+(= v24$2 at 0 (ite _P$2 _HAVOC_bv32$2 at 16 v24$2))
+(= (ControlFlow 0 8149) 8143)) inline$_LOG_READ_$$vel$1$Entry_correct)))))))))
+(let ((inline$_LOG_READ_$$vel$0$_LOG_READ_correct (=> (and %lbl%+8063 true) (=> (and
+(= _READ_HAS_OCCURRED_$$vel$1 at 0 (ite (and
+_P$1
+inline$_LOG_READ_$$vel$0$track at 0) true _READ_HAS_OCCURRED_$$vel$1))
+(= _READ_OFFSET_$$vel$1 at 0 (ite (and
+_P$1
+inline$_LOG_READ_$$vel$0$track at 0) inline$_LOG_READ_$$vel$0$_offset$1 at 0 _READ_OFFSET_$$vel$1))
+(= _READ_SOURCE_$$vel$1 at 0 (ite (and
+_P$1
+inline$_LOG_READ_$$vel$0$track at 0) #x00000005 _READ_SOURCE_$$vel$1))
+(= (ControlFlow 0 8063) 8149)) $for.cond.tail$1_correct))))
+(let ((inline$_LOG_READ_$$vel$0$Entry_correct (=> (and %lbl%+8061 true) (=> (and
+(= inline$_LOG_READ_$$vel$0$_offset$1 at 0 (bvmul v1$1 at 0 #x00000004))
+(= (ControlFlow 0 8061) 8063)) inline$_LOG_READ_$$vel$0$_LOG_READ_correct))))
+(let (($for.cond.tail_correct (=> (and %lbl%+8067 true) (=> (and
+(not p0$1 at 3)
+(not p0$2 at 3)) (and
+(or %lbl%@28534 (=> (= (ControlFlow 0 8067) (- 0 28534)) (=> _P$1 true)))
+(=> (=> _P$1 true) (=> (and
+(= v23$1 at 0 (ite _P$1 _HAVOC_bv32$1 at 15 v23$1))
+(= v23$2 at 0 (ite _P$2 _HAVOC_bv32$2 at 15 v23$2))
+(= (ControlFlow 0 8067) 8061)) inline$_LOG_READ_$$vel$0$Entry_correct)))))))
+(let (($for.cond.backedge_correct (=> (and %lbl%+8973 true) (=> (or
+p0$1 at 3
+p0$2 at 3) (and
+(or %lbl%@27591 (=> (= (ControlFlow 0 8973) (- 0 27591)) (=> _b10 (=> _WRITE_HAS_OCCURRED_$$localPos$1 at 4 (or
+(= _WRITE_OFFSET_$$localPos$1 at 4 (bvmul local_id_x$1 #x00000004))
+(= _WRITE_OFFSET_$$localPos$1 at 4 (bvadd (bvmul local_id_x$1 #x00000004) #x00000001))
+(= _WRITE_OFFSET_$$localPos$1 at 4 (bvadd (bvmul local_id_x$1 #x00000004) #x00000002))
+(= _WRITE_OFFSET_$$localPos$1 at 4 (bvadd (bvmul local_id_x$1 #x00000004) #x00000003)))))))
+(=> (=> _b10 (=> _WRITE_HAS_OCCURRED_$$localPos$1 at 4 (or
+(= _WRITE_OFFSET_$$localPos$1 at 4 (bvmul local_id_x$1 #x00000004))
+(= _WRITE_OFFSET_$$localPos$1 at 4 (bvadd (bvmul local_id_x$1 #x00000004) #x00000001))
+(= _WRITE_OFFSET_$$localPos$1 at 4 (bvadd (bvmul local_id_x$1 #x00000004) #x00000002))
+(= _WRITE_OFFSET_$$localPos$1 at 4 (bvadd (bvmul local_id_x$1 #x00000004) #x00000003))))) (and
+(or %lbl%@27652 (=> (= (ControlFlow 0 8973) (- 0 27652)) (=> _b9 (=> _READ_HAS_OCCURRED_$$localPos$1 at 6 (or
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 6) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvmul #x00000000 #x00000004)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 6) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000001)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 6) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000002)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 6) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000003)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 6) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000003))))))))
+(=> (=> _b9 (=> _READ_HAS_OCCURRED_$$localPos$1 at 6 (or
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 6) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvmul #x00000000 #x00000004)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 6) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000001)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 6) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000002)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 6) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000003)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 6) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000003)))))) (and
+(or %lbl%@27848 (=> (= (ControlFlow 0 8973) (- 0 27848)) (=> _b8 (not _WRITE_HAS_OCCURRED_$$localPos$1 at 4))))
+(=> (=> _b8 (not _WRITE_HAS_OCCURRED_$$localPos$1 at 4)) (and
+(or %lbl%@27855 (=> (= (ControlFlow 0 8973) (- 0 27855)) (=> _b7 (not _READ_HAS_OCCURRED_$$localPos$1 at 6))))
+(=> (=> _b7 (not _READ_HAS_OCCURRED_$$localPos$1 at 6)) (and
+(or %lbl%@27862 (=> (= (ControlFlow 0 8973) (- 0 27862)) (=> _b6 (=> _READ_HAS_OCCURRED_$$pos$1 at 8 (or
+(= (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) _READ_OFFSET_$$pos$1 at 8) (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) (bvmul (bvadd (bvmul #x00000000 group_size_x) local_id_x$1) #x00000004)))
+(= (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) _READ_OFFSET_$$pos$1 at 8) (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) (bvadd (bvmul (bvadd (bvmul #x00000000 group_size_x) local_id_x$1) #x00000004) #x00000001)))
+(= (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) _READ_OFFSET_$$pos$1 at 8) (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) (bvadd (bvmul (bvadd (bvmul #x00000000 group_size_x) local_id_x$1) #x00000004) #x00000002)))
+(= (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) _READ_OFFSET_$$pos$1 at 8) (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) (bvadd (bvmul (bvadd (bvmul #x00000000 group_size_x) local_id_x$1) #x00000004) #x00000003))))))))
+(=> (=> _b6 (=> _READ_HAS_OCCURRED_$$pos$1 at 8 (or
+(= (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) _READ_OFFSET_$$pos$1 at 8) (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) (bvmul (bvadd (bvmul #x00000000 group_size_x) local_id_x$1) #x00000004)))
+(= (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) _READ_OFFSET_$$pos$1 at 8) (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) (bvadd (bvmul (bvadd (bvmul #x00000000 group_size_x) local_id_x$1) #x00000004) #x00000001)))
+(= (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) _READ_OFFSET_$$pos$1 at 8) (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) (bvadd (bvmul (bvadd (bvmul #x00000000 group_size_x) local_id_x$1) #x00000004) #x00000002)))
+(= (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) _READ_OFFSET_$$pos$1 at 8) (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) (bvadd (bvmul (bvadd (bvmul #x00000000 group_size_x) local_id_x$1) #x00000004) #x00000003)))))) (and
+(or %lbl%@28083 (=> (= (ControlFlow 0 8973) (- 0 28083)) (=> _b5 (not _READ_HAS_OCCURRED_$$pos$1 at 8))))
+(=> (=> _b5 (not _READ_HAS_OCCURRED_$$pos$1 at 8)) (and
+(or %lbl%@28090 (=> (= (ControlFlow 0 8973) (- 0 28090)) (=> _b4 (=> (and
+p0$1 at 3
+p0$2 at 3) (= $j.0$1 at 3 $j.0$2 at 3)))))
+(=> (=> _b4 (=> (and
+p0$1 at 3
+p0$2 at 3) (= $j.0$1 at 3 $j.0$2 at 3))) (and
+(or %lbl%@28104 (=> (= (ControlFlow 0 8973) (- 0 28104)) (=> _b3 (=> (and
+p0$1 at 3
+p0$2 at 3) (= $acc.1$1 at 3 $acc.1$2 at 3)))))
+(=> (=> _b3 (=> (and
+p0$1 at 3
+p0$2 at 3) (= $acc.1$1 at 3 $acc.1$2 at 3))) (and
+(or %lbl%@28118 (=> (= (ControlFlow 0 8973) (- 0 28118)) (=> _b2 (=> (and
+p0$1 at 3
+p0$2 at 3) (= $i.0$1 at 2 $i.0$2 at 2)))))
+(=> (=> _b2 (=> (and
+p0$1 at 3
+p0$2 at 3) (= $i.0$1 at 2 $i.0$2 at 2))) (and
+(or %lbl%@28132 (=> (= (ControlFlow 0 8973) (- 0 28132)) (=> _b1 (=> (and
+p0$1 at 3
+p0$2 at 3) (= $acc.0$1 at 2 $acc.0$2 at 2)))))
+(=> (=> _b1 (=> (and
+p0$1 at 3
+p0$2 at 3) (= $acc.0$1 at 2 $acc.0$2 at 2))) (and
+(or %lbl%@28146 (=> (= (ControlFlow 0 8973) (- 0 28146)) (=> _b0 (= p0$1 at 3 p0$2 at 3))))
+(=> (=> _b0 (= p0$1 at 3 p0$2 at 3)) (and
+(or %lbl%@28154 (=> (= (ControlFlow 0 8973) (- 0 28154)) (=> _READ_HAS_OCCURRED_$$vel$1 (or
+(= _READ_SOURCE_$$vel$1 #x00000005)
+(= _READ_SOURCE_$$vel$1 #x00000006)
+(= _READ_SOURCE_$$vel$1 #x00000007)
+(= _READ_SOURCE_$$vel$1 #x00000008)))))
+(=> (=> _READ_HAS_OCCURRED_$$vel$1 (or
+(= _READ_SOURCE_$$vel$1 #x00000005)
+(= _READ_SOURCE_$$vel$1 #x00000006)
+(= _READ_SOURCE_$$vel$1 #x00000007)
+(= _READ_SOURCE_$$vel$1 #x00000008))) (and
+(or %lbl%@28188 (=> (= (ControlFlow 0 8973) (- 0 28188)) (=> _WRITE_HAS_OCCURRED_$$vel$1 false)))
+(=> (=> _WRITE_HAS_OCCURRED_$$vel$1 false) (and
+(or %lbl%@28194 (=> (= (ControlFlow 0 8973) (- 0 28194)) (=> (not _READ_HAS_OCCURRED_$$vel$1) (= _READ_SOURCE_$$vel$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$vel$1) (= _READ_SOURCE_$$vel$1 #x00000000)) (and
+(or %lbl%@28206 (=> (= (ControlFlow 0 8973) (- 0 28206)) (=> (not _WRITE_HAS_OCCURRED_$$vel$1) (= _WRITE_SOURCE_$$vel$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$vel$1) (= _WRITE_SOURCE_$$vel$1 #x00000000)) (and
+(or %lbl%@28218 (=> (= (ControlFlow 0 8973) (- 0 28218)) (=> _READ_HAS_OCCURRED_$$pos$1 at 8 (or
+(= _READ_SOURCE_$$pos$1 at 8 #x00000001)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000002)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000003)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000004)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000011)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000012)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000013)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000014)))))
+(=> (=> _READ_HAS_OCCURRED_$$pos$1 at 8 (or
+(= _READ_SOURCE_$$pos$1 at 8 #x00000001)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000002)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000003)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000004)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000011)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000012)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000013)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000014))) (and
+(or %lbl%@28275 (=> (= (ControlFlow 0 8973) (- 0 28275)) (=> _WRITE_HAS_OCCURRED_$$pos$1 false)))
+(=> (=> _WRITE_HAS_OCCURRED_$$pos$1 false) (and
+(or %lbl%@28281 (=> (= (ControlFlow 0 8973) (- 0 28281)) (=> (not _READ_HAS_OCCURRED_$$pos$1 at 8) (= _READ_SOURCE_$$pos$1 at 8 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$pos$1 at 8) (= _READ_SOURCE_$$pos$1 at 8 #x00000000)) (and
+(or %lbl%@28291 (=> (= (ControlFlow 0 8973) (- 0 28291)) (=> (not _WRITE_HAS_OCCURRED_$$pos$1) (= _WRITE_SOURCE_$$pos$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$pos$1) (= _WRITE_SOURCE_$$pos$1 #x00000000)) (and
+(or %lbl%@28303 (=> (= (ControlFlow 0 8973) (- 0 28303)) (=> _READ_HAS_OCCURRED_$$localPos$1 at 6 (or
+(= _READ_SOURCE_$$localPos$1 at 6 #x00000019)
+(= _READ_SOURCE_$$localPos$1 at 6 #x0000001a)
+(= _READ_SOURCE_$$localPos$1 at 6 #x0000001b)
+(= _READ_SOURCE_$$localPos$1 at 6 #x0000001c)
+(= _READ_SOURCE_$$localPos$1 at 6 #x0000001d)))))
+(=> (=> _READ_HAS_OCCURRED_$$localPos$1 at 6 (or
+(= _READ_SOURCE_$$localPos$1 at 6 #x00000019)
+(= _READ_SOURCE_$$localPos$1 at 6 #x0000001a)
+(= _READ_SOURCE_$$localPos$1 at 6 #x0000001b)
+(= _READ_SOURCE_$$localPos$1 at 6 #x0000001c)
+(= _READ_SOURCE_$$localPos$1 at 6 #x0000001d))) (and
+(or %lbl%@28339 (=> (= (ControlFlow 0 8973) (- 0 28339)) (=> _WRITE_HAS_OCCURRED_$$localPos$1 at 4 (or
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000015)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000016)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000017)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000018)))))
+(=> (=> _WRITE_HAS_OCCURRED_$$localPos$1 at 4 (or
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000015)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000016)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000017)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000018))) (and
+(or %lbl%@28368 (=> (= (ControlFlow 0 8973) (- 0 28368)) (=> (not _READ_HAS_OCCURRED_$$localPos$1 at 6) (= _READ_SOURCE_$$localPos$1 at 6 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$localPos$1 at 6) (= _READ_SOURCE_$$localPos$1 at 6 #x00000000)) (and
+(or %lbl%@28378 (=> (= (ControlFlow 0 8973) (- 0 28378)) (=> (not _WRITE_HAS_OCCURRED_$$localPos$1 at 4) (= _WRITE_SOURCE_$$localPos$1 at 4 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$localPos$1 at 4) (= _WRITE_SOURCE_$$localPos$1 at 4 #x00000000)) (and
+(or %lbl%@28388 (=> (= (ControlFlow 0 8973) (- 0 28388)) (=> _READ_HAS_OCCURRED_$$newVelocity$1 false)))
+(=> (=> _READ_HAS_OCCURRED_$$newVelocity$1 false) (and
+(or %lbl%@28394 (=> (= (ControlFlow 0 8973) (- 0 28394)) (=> _WRITE_HAS_OCCURRED_$$newVelocity$1 (or
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000d)
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000e)
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000f)
+(= _WRITE_SOURCE_$$newVelocity$1 #x00000010)))))
+(=> (=> _WRITE_HAS_OCCURRED_$$newVelocity$1 (or
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000d)
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000e)
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000f)
+(= _WRITE_SOURCE_$$newVelocity$1 #x00000010))) (and
+(or %lbl%@28428 (=> (= (ControlFlow 0 8973) (- 0 28428)) (=> (not _READ_HAS_OCCURRED_$$newVelocity$1) (= _READ_SOURCE_$$newVelocity$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$newVelocity$1) (= _READ_SOURCE_$$newVelocity$1 #x00000000)) (and
+(or %lbl%@28440 (=> (= (ControlFlow 0 8973) (- 0 28440)) (=> (not _WRITE_HAS_OCCURRED_$$newVelocity$1) (= _WRITE_SOURCE_$$newVelocity$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$newVelocity$1) (= _WRITE_SOURCE_$$newVelocity$1 #x00000000)) (and
+(or %lbl%@28452 (=> (= (ControlFlow 0 8973) (- 0 28452)) (=> _READ_HAS_OCCURRED_$$newPosition$1 false)))
+(=> (=> _READ_HAS_OCCURRED_$$newPosition$1 false) (and
+(or %lbl%@28458 (=> (= (ControlFlow 0 8973) (- 0 28458)) (=> _WRITE_HAS_OCCURRED_$$newPosition$1 (or
+(= _WRITE_SOURCE_$$newPosition$1 #x00000009)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000a)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000b)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000c)))))
+(=> (=> _WRITE_HAS_OCCURRED_$$newPosition$1 (or
+(= _WRITE_SOURCE_$$newPosition$1 #x00000009)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000a)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000b)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000c))) (and
+(or %lbl%@28492 (=> (= (ControlFlow 0 8973) (- 0 28492)) (=> (not _READ_HAS_OCCURRED_$$newPosition$1) (= _READ_SOURCE_$$newPosition$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$newPosition$1) (= _READ_SOURCE_$$newPosition$1 #x00000000)) (and
+(or %lbl%@28504 (=> (= (ControlFlow 0 8973) (- 0 28504)) (=> (not _WRITE_HAS_OCCURRED_$$newPosition$1) (= _WRITE_SOURCE_$$newPosition$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$newPosition$1) (= _WRITE_SOURCE_$$newPosition$1 #x00000000)) (and
+(or %lbl%@28516 (=> (= (ControlFlow 0 8973) (- 0 28516)) (=> p0$1 at 3 _P$1)))
+(=> (=> p0$1 at 3 _P$1) (and
+(or %lbl%@28521 (=> (= (ControlFlow 0 8973) (- 0 28521)) (=> p0$2 at 3 _P$2)))
+(=> (=> p0$2 at 3 _P$2) true))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+(let (($for.cond5.tail$1_correct (=> (and %lbl%+7985 true) (=> (and
+(= $acc.0$1 at 2 (ite p1$1 at 1 $acc.1$1 at 3 $acc.0$1 at 1))
+(= $acc.0$2 at 2 (ite p1$2 at 1 $acc.1$2 at 3 $acc.0$2 at 1))
+(= $i.0$1 at 2 (ite p1$1 at 1 (bvadd $i.0$1 at 1 #x00000001) $i.0$1 at 1))
+(= $i.0$2 at 2 (ite p1$2 at 1 (bvadd $i.0$2 at 1 #x00000001) $i.0$2 at 1))
+(= p0$1 at 3 (ite p1$1 at 1 true p0$1 at 2))
+(= p0$2 at 3 (ite p1$2 at 1 true p0$2 at 2))) (and
+(=> (= (ControlFlow 0 7985) 8973) $for.cond.backedge_correct)
+(=> (= (ControlFlow 0 7985) 8067) $for.cond.tail_correct))))))
+(let ((inline$$bugle_barrier$1$Return_correct (=> (and %lbl%+7981 true) (=> (= (ControlFlow 0 7981) 7985) $for.cond5.tail$1_correct))))
+(let ((inline$$bugle_barrier$1$anon18_Else_correct (=> (and %lbl%+7969 true) (=> (and
+(not (and
+p1$2 at 1
+(= inline$$bugle_barrier$1$$1$2 at 1 #b1)))
+(= (ControlFlow 0 7969) 7981)) inline$$bugle_barrier$1$Return_correct))))
+(let ((inline$$bugle_barrier$1$anon18_Then_correct (=> (and %lbl%+7971 true) (=> (and
+p1$2 at 1
+(= inline$$bugle_barrier$1$$1$2 at 1 #b1)
+(= (ControlFlow 0 7971) 7981)) inline$$bugle_barrier$1$Return_correct))))
+(let ((inline$$bugle_barrier$1$anon9_correct (=> (and %lbl%+7967 true) (and
+(=> (= (ControlFlow 0 7967) 7971) inline$$bugle_barrier$1$anon18_Then_correct)
+(=> (= (ControlFlow 0 7967) 7969) inline$$bugle_barrier$1$anon18_Else_correct)))))
+(let ((inline$$bugle_barrier$1$anon17_Else_correct (=> (and %lbl%+7965 true) (=> (and
+(not (and
+p1$1 at 1
+(= inline$$bugle_barrier$1$$1$1 at 1 #b1)))
+(= (ControlFlow 0 7965) 7967)) inline$$bugle_barrier$1$anon9_correct))))
+(let ((inline$$bugle_barrier$1$anon17_Then_correct (=> (and %lbl%+7973 true) (=> (and
+p1$1 at 1
+(= inline$$bugle_barrier$1$$1$1 at 1 #b1)) (=> (and
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _READ_HAS_OCCURRED_$$pos$1 at 8))
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _WRITE_HAS_OCCURRED_$$pos$1))
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _READ_HAS_OCCURRED_$$vel$1))
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _WRITE_HAS_OCCURRED_$$vel$1))
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _READ_HAS_OCCURRED_$$newPosition$1))
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _WRITE_HAS_OCCURRED_$$newPosition$1))
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _READ_HAS_OCCURRED_$$newVelocity$1))
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _WRITE_HAS_OCCURRED_$$newVelocity$1))) (and
+(=> (= (ControlFlow 0 7973) 7971) inline$$bugle_barrier$1$anon18_Then_correct)
+(=> (= (ControlFlow 0 7973) 7969) inline$$bugle_barrier$1$anon18_Else_correct)))))))
+(let ((inline$$bugle_barrier$1$anon4_correct (=> (and %lbl%+7963 true) (and
+(=> (= (ControlFlow 0 7963) 7973) inline$$bugle_barrier$1$anon17_Then_correct)
+(=> (= (ControlFlow 0 7963) 7965) inline$$bugle_barrier$1$anon17_Else_correct)))))
+(let ((inline$$bugle_barrier$1$anon16_Else_correct (=> (and %lbl%+7961 true) (=> (and
+(not (and
+p1$2 at 1
+(= inline$$bugle_barrier$1$$0$2 at 1 #b1)))
+(= (ControlFlow 0 7961) 7963)) inline$$bugle_barrier$1$anon4_correct))))
+(let ((inline$$bugle_barrier$1$anon16_Then_correct (=> (and %lbl%+7975 true) (=> (and
+p1$2 at 1
+(= inline$$bugle_barrier$1$$0$2 at 1 #b1)) (and
+(=> (= (ControlFlow 0 7975) 7973) inline$$bugle_barrier$1$anon17_Then_correct)
+(=> (= (ControlFlow 0 7975) 7965) inline$$bugle_barrier$1$anon17_Else_correct))))))
+(let ((inline$$bugle_barrier$1$anon2_correct (=> (and %lbl%+7959 true) (and
+(=> (= (ControlFlow 0 7959) 7975) inline$$bugle_barrier$1$anon16_Then_correct)
+(=> (= (ControlFlow 0 7959) 7961) inline$$bugle_barrier$1$anon16_Else_correct)))))
+(let ((inline$$bugle_barrier$1$anon15_Else_correct (=> (and %lbl%+7957 true) (=> (and
+(not (and
+p1$1 at 1
+(= inline$$bugle_barrier$1$$0$1 at 1 #b1)))
+(= (ControlFlow 0 7957) 7959)) inline$$bugle_barrier$1$anon2_correct))))
+(let ((inline$$bugle_barrier$1$anon15_Then_correct (=> (and %lbl%+7977 true) (=> (and
+p1$1 at 1
+(= inline$$bugle_barrier$1$$0$1 at 1 #b1)
+(not _READ_HAS_OCCURRED_$$localPos$1 at 6)
+(not _WRITE_HAS_OCCURRED_$$localPos$1 at 4)) (and
+(=> (= (ControlFlow 0 7977) 7975) inline$$bugle_barrier$1$anon16_Then_correct)
+(=> (= (ControlFlow 0 7977) 7961) inline$$bugle_barrier$1$anon16_Else_correct))))))
+(let ((inline$$bugle_barrier$1$anon14_Else_correct (=> (and %lbl%+7955 true) (=> (not (or
+(and
+(not p1$1 at 1)
+(not p1$2 at 1))
+(and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)
+(or
+(not p1$1 at 1)
+(not p1$2 at 1))))) (and
+(=> (= (ControlFlow 0 7955) 7977) inline$$bugle_barrier$1$anon15_Then_correct)
+(=> (= (ControlFlow 0 7955) 7957) inline$$bugle_barrier$1$anon15_Else_correct))))))
+(let ((inline$$bugle_barrier$1$anon14_Then_correct (=> (and %lbl%+7979 true) (=> (and
+(or
+(and
+(not p1$1 at 1)
+(not p1$2 at 1))
+(and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)
+(or
+(not p1$1 at 1)
+(not p1$2 at 1))))
+(= (ControlFlow 0 7979) 7985)) $for.cond5.tail$1_correct))))
+(let ((inline$$bugle_barrier$1$Entry_correct (=> (and %lbl%+7951 true) (=> (and
+(= inline$$bugle_barrier$1$$0$1 at 1 (ite true #b1 #b0))
+(= inline$$bugle_barrier$1$$1$1 at 1 (ite false #b1 #b0))
+(= inline$$bugle_barrier$1$$0$2 at 1 (ite true #b1 #b0))
+(= inline$$bugle_barrier$1$$1$2 at 1 (ite false #b1 #b0))) (and
+(or %lbl%@27100 (=> (= (ControlFlow 0 7951) (- 0 27100)) (=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (= p1$1 at 1 p1$2 at 1))))
+(=> (=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (= p1$1 at 1 p1$2 at 1)) (and
+(=> (= (ControlFlow 0 7951) 7979) inline$$bugle_barrier$1$anon14_Then_correct)
+(=> (= (ControlFlow 0 7951) 7955) inline$$bugle_barrier$1$anon14_Else_correct))))))))
+(let (($for.cond5.tail_correct (=> (and %lbl%+7983 true) (=> (not p2$1 at 4) (=> (and
+(not p2$2 at 4)
+(= (ControlFlow 0 7983) 7951)) inline$$bugle_barrier$1$Entry_correct)))))
+(let (($for.cond5.backedge_correct (=> (and %lbl%+8975 true) (=> (or
+p2$1 at 4
+p2$2 at 4) (and
+(or %lbl%@26466 (=> (= (ControlFlow 0 8975) (- 0 26466)) (=> _b11 (=> _READ_HAS_OCCURRED_$$localPos$1 at 6 (or
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 6) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvmul #x00000000 #x00000004)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 6) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000001)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 6) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000002)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 6) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000003)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 6) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000003))))))))
+(=> (=> _b11 (=> _READ_HAS_OCCURRED_$$localPos$1 at 6 (or
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 6) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvmul #x00000000 #x00000004)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 6) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000001)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 6) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000002)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 6) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000003)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 6) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000003)))))) (and
+(or %lbl%@26662 (=> (= (ControlFlow 0 8975) (- 0 26662)) (=> _READ_HAS_OCCURRED_$$vel$1 (or
+(= _READ_SOURCE_$$vel$1 #x00000005)
+(= _READ_SOURCE_$$vel$1 #x00000006)
+(= _READ_SOURCE_$$vel$1 #x00000007)
+(= _READ_SOURCE_$$vel$1 #x00000008)))))
+(=> (=> _READ_HAS_OCCURRED_$$vel$1 (or
+(= _READ_SOURCE_$$vel$1 #x00000005)
+(= _READ_SOURCE_$$vel$1 #x00000006)
+(= _READ_SOURCE_$$vel$1 #x00000007)
+(= _READ_SOURCE_$$vel$1 #x00000008))) (and
+(or %lbl%@26696 (=> (= (ControlFlow 0 8975) (- 0 26696)) (=> _WRITE_HAS_OCCURRED_$$vel$1 false)))
+(=> (=> _WRITE_HAS_OCCURRED_$$vel$1 false) (and
+(or %lbl%@26702 (=> (= (ControlFlow 0 8975) (- 0 26702)) (=> (not _READ_HAS_OCCURRED_$$vel$1) (= _READ_SOURCE_$$vel$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$vel$1) (= _READ_SOURCE_$$vel$1 #x00000000)) (and
+(or %lbl%@26714 (=> (= (ControlFlow 0 8975) (- 0 26714)) (=> (not _WRITE_HAS_OCCURRED_$$vel$1) (= _WRITE_SOURCE_$$vel$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$vel$1) (= _WRITE_SOURCE_$$vel$1 #x00000000)) (and
+(or %lbl%@26726 (=> (= (ControlFlow 0 8975) (- 0 26726)) (=> _READ_HAS_OCCURRED_$$pos$1 at 8 (or
+(= _READ_SOURCE_$$pos$1 at 8 #x00000001)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000002)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000003)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000004)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000011)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000012)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000013)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000014)))))
+(=> (=> _READ_HAS_OCCURRED_$$pos$1 at 8 (or
+(= _READ_SOURCE_$$pos$1 at 8 #x00000001)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000002)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000003)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000004)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000011)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000012)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000013)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000014))) (and
+(or %lbl%@26783 (=> (= (ControlFlow 0 8975) (- 0 26783)) (=> _WRITE_HAS_OCCURRED_$$pos$1 false)))
+(=> (=> _WRITE_HAS_OCCURRED_$$pos$1 false) (and
+(or %lbl%@26789 (=> (= (ControlFlow 0 8975) (- 0 26789)) (=> (not _READ_HAS_OCCURRED_$$pos$1 at 8) (= _READ_SOURCE_$$pos$1 at 8 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$pos$1 at 8) (= _READ_SOURCE_$$pos$1 at 8 #x00000000)) (and
+(or %lbl%@26799 (=> (= (ControlFlow 0 8975) (- 0 26799)) (=> (not _WRITE_HAS_OCCURRED_$$pos$1) (= _WRITE_SOURCE_$$pos$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$pos$1) (= _WRITE_SOURCE_$$pos$1 #x00000000)) (and
+(or %lbl%@26811 (=> (= (ControlFlow 0 8975) (- 0 26811)) (=> _READ_HAS_OCCURRED_$$localPos$1 at 6 (or
+(= _READ_SOURCE_$$localPos$1 at 6 #x00000019)
+(= _READ_SOURCE_$$localPos$1 at 6 #x0000001a)
+(= _READ_SOURCE_$$localPos$1 at 6 #x0000001b)
+(= _READ_SOURCE_$$localPos$1 at 6 #x0000001c)
+(= _READ_SOURCE_$$localPos$1 at 6 #x0000001d)))))
+(=> (=> _READ_HAS_OCCURRED_$$localPos$1 at 6 (or
+(= _READ_SOURCE_$$localPos$1 at 6 #x00000019)
+(= _READ_SOURCE_$$localPos$1 at 6 #x0000001a)
+(= _READ_SOURCE_$$localPos$1 at 6 #x0000001b)
+(= _READ_SOURCE_$$localPos$1 at 6 #x0000001c)
+(= _READ_SOURCE_$$localPos$1 at 6 #x0000001d))) (and
+(or %lbl%@26847 (=> (= (ControlFlow 0 8975) (- 0 26847)) (=> _WRITE_HAS_OCCURRED_$$localPos$1 at 4 (or
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000015)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000016)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000017)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000018)))))
+(=> (=> _WRITE_HAS_OCCURRED_$$localPos$1 at 4 (or
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000015)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000016)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000017)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000018))) (and
+(or %lbl%@26876 (=> (= (ControlFlow 0 8975) (- 0 26876)) (=> (not _READ_HAS_OCCURRED_$$localPos$1 at 6) (= _READ_SOURCE_$$localPos$1 at 6 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$localPos$1 at 6) (= _READ_SOURCE_$$localPos$1 at 6 #x00000000)) (and
+(or %lbl%@26886 (=> (= (ControlFlow 0 8975) (- 0 26886)) (=> (not _WRITE_HAS_OCCURRED_$$localPos$1 at 4) (= _WRITE_SOURCE_$$localPos$1 at 4 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$localPos$1 at 4) (= _WRITE_SOURCE_$$localPos$1 at 4 #x00000000)) (and
+(or %lbl%@26896 (=> (= (ControlFlow 0 8975) (- 0 26896)) (=> _READ_HAS_OCCURRED_$$newVelocity$1 false)))
+(=> (=> _READ_HAS_OCCURRED_$$newVelocity$1 false) (and
+(or %lbl%@26902 (=> (= (ControlFlow 0 8975) (- 0 26902)) (=> _WRITE_HAS_OCCURRED_$$newVelocity$1 (or
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000d)
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000e)
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000f)
+(= _WRITE_SOURCE_$$newVelocity$1 #x00000010)))))
+(=> (=> _WRITE_HAS_OCCURRED_$$newVelocity$1 (or
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000d)
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000e)
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000f)
+(= _WRITE_SOURCE_$$newVelocity$1 #x00000010))) (and
+(or %lbl%@26936 (=> (= (ControlFlow 0 8975) (- 0 26936)) (=> (not _READ_HAS_OCCURRED_$$newVelocity$1) (= _READ_SOURCE_$$newVelocity$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$newVelocity$1) (= _READ_SOURCE_$$newVelocity$1 #x00000000)) (and
+(or %lbl%@26948 (=> (= (ControlFlow 0 8975) (- 0 26948)) (=> (not _WRITE_HAS_OCCURRED_$$newVelocity$1) (= _WRITE_SOURCE_$$newVelocity$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$newVelocity$1) (= _WRITE_SOURCE_$$newVelocity$1 #x00000000)) (and
+(or %lbl%@26960 (=> (= (ControlFlow 0 8975) (- 0 26960)) (=> _READ_HAS_OCCURRED_$$newPosition$1 false)))
+(=> (=> _READ_HAS_OCCURRED_$$newPosition$1 false) (and
+(or %lbl%@26966 (=> (= (ControlFlow 0 8975) (- 0 26966)) (=> _WRITE_HAS_OCCURRED_$$newPosition$1 (or
+(= _WRITE_SOURCE_$$newPosition$1 #x00000009)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000a)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000b)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000c)))))
+(=> (=> _WRITE_HAS_OCCURRED_$$newPosition$1 (or
+(= _WRITE_SOURCE_$$newPosition$1 #x00000009)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000a)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000b)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000c))) (and
+(or %lbl%@27000 (=> (= (ControlFlow 0 8975) (- 0 27000)) (=> (not _READ_HAS_OCCURRED_$$newPosition$1) (= _READ_SOURCE_$$newPosition$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$newPosition$1) (= _READ_SOURCE_$$newPosition$1 #x00000000)) (and
+(or %lbl%@27012 (=> (= (ControlFlow 0 8975) (- 0 27012)) (=> (not _WRITE_HAS_OCCURRED_$$newPosition$1) (= _WRITE_SOURCE_$$newPosition$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$newPosition$1) (= _WRITE_SOURCE_$$newPosition$1 #x00000000)) (and
+(or %lbl%@27024 (=> (= (ControlFlow 0 8975) (- 0 27024)) (=> p2$1 at 4 p0$1 at 2)))
+(=> (=> p2$1 at 4 p0$1 at 2) (and
+(or %lbl%@27028 (=> (= (ControlFlow 0 8975) (- 0 27028)) (=> p2$2 at 4 p0$2 at 2)))
+(=> (=> p2$2 at 4 p0$2 at 2) true))))))))))))))))))))))))))))))))))))))))))))))))))
+(let (($for.cond5$5_correct (=> (and %lbl%+7448 true) (=> (= call3008formal at _offset$2 at 0 (bvadd (bvmul $j.0$2 at 2 #x00000004) #x00000003)) (and
+(or %lbl%@26241 (=> (= (ControlFlow 0 7448) (- 0 26241)) (not (and
+p3$2 at 2
+_WRITE_HAS_OCCURRED_$$localPos$1 at 4
+(= _WRITE_OFFSET_$$localPos$1 at 4 call3008formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)))))
+(=> (not (and
+p3$2 at 2
+_WRITE_HAS_OCCURRED_$$localPos$1 at 4
+(= _WRITE_OFFSET_$$localPos$1 at 4 call3008formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2))) (=> (and
+(= v22$1 at 2 (ite p3$1 at 2 (FMUL32 v21$1 at 2 (FMUL32 (FMUL32 v20$1 at 2 v20$1 at 2) v20$1 at 2)) v22$1 at 1))
+(= v22$2 at 2 (ite p3$2 at 2 (FMUL32 v21$2 at 2 (FMUL32 (FMUL32 v20$2 at 2 v20$2 at 2) v20$2 at 2)) v22$2 at 1))) (=> (and
+(= $acc.1$1 at 3 (ite p3$1 at 2 (concat (concat (concat (FADD32 ((_ extract 127 96) $acc.1$1 at 2) (FMUL32 v22$1 at 2 (FSUB32 v16$1 at 2 v6$1 at 0))) (FADD32 ((_ extract 95 64) $acc.1$1 at 2) (FMUL32 v22$1 at 2 v19$1 at 2))) (FADD32 ((_ extract 63 32) $acc.1$1 at 2) (FMUL32 v22$1 at 2 v18$1 at 2))) (FADD32 ((_ extract 31 0) $acc.1$1 at 2) (FMUL32 v22$1 at 2 v17$1 at 2))) $acc.1$1 at 2))
+(= $acc.1$2 at 3 (ite p3$2 at 2 (concat (concat (concat (FADD32 ((_ extract 127 96) $acc.1$2 at 2) (FMUL32 v22$2 at 2 (FSUB32 v16$2 at 2 v6$2 at 0))) (FADD32 ((_ extract 95 64) $acc.1$2 at 2) (FMUL32 v22$2 at 2 v19$2 at 2))) (FADD32 ((_ extract 63 32) $acc.1$2 at 2) (FMUL32 v22$2 at 2 v18$2 at 2))) (FADD32 ((_ extract 31 0) $acc.1$2 at 2) (FMUL32 v22$2 at 2 v17$2 at 2))) $acc.1$2 at 2))
+(= $j.0$1 at 3 (ite p3$1 at 2 (bvadd $j.0$1 at 2 #x00000001) $j.0$1 at 2))
+(= $j.0$2 at 3 (ite p3$2 at 2 (bvadd $j.0$2 at 2 #x00000001) $j.0$2 at 2))
+(= p2$1 at 4 (ite p3$1 at 2 true p2$1 at 3))
+(= p2$2 at 4 (ite p3$2 at 2 true p2$2 at 3))) (and
+(=> (= (ControlFlow 0 7448) 8975) $for.cond5.backedge_correct)
+(=> (= (ControlFlow 0 7448) 7983) $for.cond5.tail_correct))))))))))
+(let ((inline$_LOG_READ_$$localPos$4$_LOG_READ_correct (=> (and %lbl%+7442 true) (=> (and
+(= _READ_HAS_OCCURRED_$$localPos$1 at 6 (ite (and
+p3$1 at 2
+inline$_LOG_READ_$$localPos$4$track at 2) true _READ_HAS_OCCURRED_$$localPos$1 at 5))
+(= _READ_OFFSET_$$localPos$1 at 6 (ite (and
+p3$1 at 2
+inline$_LOG_READ_$$localPos$4$track at 2) inline$_LOG_READ_$$localPos$4$_offset$1 at 2 _READ_OFFSET_$$localPos$1 at 5))
+(= _READ_SOURCE_$$localPos$1 at 6 (ite (and
+p3$1 at 2
+inline$_LOG_READ_$$localPos$4$track at 2) #x0000001d _READ_SOURCE_$$localPos$1 at 5))
+(= (ControlFlow 0 7442) 7448)) $for.cond5$5_correct))))
+(let ((inline$_LOG_READ_$$localPos$4$Entry_correct (=> (and %lbl%+7440 true) (=> (and
+(= inline$_LOG_READ_$$localPos$4$_offset$1 at 2 (bvadd (bvmul $j.0$1 at 2 #x00000004) #x00000003))
+(= (ControlFlow 0 7440) 7442)) inline$_LOG_READ_$$localPos$4$_LOG_READ_correct))))
+(let (($for.cond5$4_correct (=> (and %lbl%+7446 true) (=> (= call2839formal at _offset$2 at 0 (bvadd (bvmul $j.0$2 at 2 #x00000004) #x00000003)) (and
+(or %lbl%@25932 (=> (= (ControlFlow 0 7446) (- 0 25932)) (not (and
+p3$2 at 2
+_WRITE_HAS_OCCURRED_$$localPos$1 at 4
+(= _WRITE_OFFSET_$$localPos$1 at 4 call2839formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)))))
+(=> (not (and
+p3$2 at 2
+_WRITE_HAS_OCCURRED_$$localPos$1 at 4
+(= _WRITE_OFFSET_$$localPos$1 at 4 call2839formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2))) (=> (and
+(= v17$1 at 2 (ite p3$1 at 2 (FSUB32 v13$1 at 2 v3$1 at 0) v17$1 at 1))
+(= v17$2 at 2 (ite p3$2 at 2 (FSUB32 v13$2 at 2 v3$2 at 0) v17$2 at 1))
+(= v18$1 at 2 (ite p3$1 at 2 (FSUB32 v14$1 at 2 v4$1 at 0) v18$1 at 1))
+(= v18$2 at 2 (ite p3$2 at 2 (FSUB32 v14$2 at 2 v4$2 at 0) v18$2 at 1))
+(= v19$1 at 2 (ite p3$1 at 2 (FSUB32 v15$1 at 2 v5$1 at 0) v19$1 at 1))
+(= v19$2 at 2 (ite p3$2 at 2 (FSUB32 v15$2 at 2 v5$2 at 0) v19$2 at 1))
+(= v20$1 at 2 (ite p3$1 at 2 (FDIV32 #x3f800000 (FSQRT32 (FADD32 (FADD32 (FADD32 (FMUL32 v17$1 at 2 v17$1 at 2) (FMUL32 v18$1 at 2 v18$1 at 2)) (FMUL32 v19$1 at 2 v19$1 at 2)) $epsSqr$1))) v20$1 at 1))
+(= v20$2 at 2 (ite p3$2 at 2 (FDIV32 #x3f800000 (FSQRT32 (FADD32 (FADD32 (FADD32 (FMUL32 v17$2 at 2 v17$2 at 2) (FMUL32 v18$2 at 2 v18$2 at 2)) (FMUL32 v19$2 at 2 v19$2 at 2)) $epsSqr$2))) v20$2 at 1))) (and
+(or %lbl%@26120 (=> (= (ControlFlow 0 7446) (- 0 26120)) (=> p3$1 at 2 true)))
+(=> (=> p3$1 at 2 true) (=> (and
+(= v21$1 at 2 (ite p3$1 at 2 _HAVOC_bv32$1 at 14 v21$1 at 1))
+(= v21$2 at 2 (ite p3$2 at 2 _HAVOC_bv32$2 at 14 v21$2 at 1))
+(= (ControlFlow 0 7446) 7440)) inline$_LOG_READ_$$localPos$4$Entry_correct))))))))))
+(let ((inline$_LOG_READ_$$localPos$3$_LOG_READ_correct (=> (and %lbl%+7360 true) (=> (and
+(= _READ_HAS_OCCURRED_$$localPos$1 at 5 (ite (and
+p3$1 at 2
+inline$_LOG_READ_$$localPos$3$track at 2) true _READ_HAS_OCCURRED_$$localPos$1 at 4))
+(= _READ_OFFSET_$$localPos$1 at 5 (ite (and
+p3$1 at 2
+inline$_LOG_READ_$$localPos$3$track at 2) inline$_LOG_READ_$$localPos$3$_offset$1 at 2 _READ_OFFSET_$$localPos$1 at 4))
+(= _READ_SOURCE_$$localPos$1 at 5 (ite (and
+p3$1 at 2
+inline$_LOG_READ_$$localPos$3$track at 2) #x0000001c _READ_SOURCE_$$localPos$1 at 4))
+(= (ControlFlow 0 7360) 7446)) $for.cond5$4_correct))))
+(let ((inline$_LOG_READ_$$localPos$3$Entry_correct (=> (and %lbl%+7358 true) (=> (and
+(= inline$_LOG_READ_$$localPos$3$_offset$1 at 2 (bvadd (bvmul $j.0$1 at 2 #x00000004) #x00000003))
+(= (ControlFlow 0 7358) 7360)) inline$_LOG_READ_$$localPos$3$_LOG_READ_correct))))
+(let (($for.cond5$3_correct (=> (and %lbl%+7364 true) (=> (= call2786formal at _offset$2 at 0 (bvadd (bvmul $j.0$2 at 2 #x00000004) #x00000002)) (and
+(or %lbl%@25775 (=> (= (ControlFlow 0 7364) (- 0 25775)) (not (and
+p3$2 at 2
+_WRITE_HAS_OCCURRED_$$localPos$1 at 4
+(= _WRITE_OFFSET_$$localPos$1 at 4 call2786formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)))))
+(=> (not (and
+p3$2 at 2
+_WRITE_HAS_OCCURRED_$$localPos$1 at 4
+(= _WRITE_OFFSET_$$localPos$1 at 4 call2786formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2))) (and
+(or %lbl%@25811 (=> (= (ControlFlow 0 7364) (- 0 25811)) (=> p3$1 at 2 true)))
+(=> (=> p3$1 at 2 true) (=> (and
+(= v16$1 at 2 (ite p3$1 at 2 _HAVOC_bv32$1 at 13 v16$1 at 1))
+(= v16$2 at 2 (ite p3$2 at 2 _HAVOC_bv32$2 at 13 v16$2 at 1))
+(= (ControlFlow 0 7364) 7358)) inline$_LOG_READ_$$localPos$3$Entry_correct)))))))))
+(let ((inline$_LOG_READ_$$localPos$2$_LOG_READ_correct (=> (and %lbl%+7278 true) (=> (and
+(= _READ_HAS_OCCURRED_$$localPos$1 at 4 (ite (and
+p3$1 at 2
+inline$_LOG_READ_$$localPos$2$track at 2) true _READ_HAS_OCCURRED_$$localPos$1 at 3))
+(= _READ_OFFSET_$$localPos$1 at 4 (ite (and
+p3$1 at 2
+inline$_LOG_READ_$$localPos$2$track at 2) inline$_LOG_READ_$$localPos$2$_offset$1 at 2 _READ_OFFSET_$$localPos$1 at 3))
+(= _READ_SOURCE_$$localPos$1 at 4 (ite (and
+p3$1 at 2
+inline$_LOG_READ_$$localPos$2$track at 2) #x0000001b _READ_SOURCE_$$localPos$1 at 3))
+(= (ControlFlow 0 7278) 7364)) $for.cond5$3_correct))))
+(let ((inline$_LOG_READ_$$localPos$2$Entry_correct (=> (and %lbl%+7276 true) (=> (and
+(= inline$_LOG_READ_$$localPos$2$_offset$1 at 2 (bvadd (bvmul $j.0$1 at 2 #x00000004) #x00000002))
+(= (ControlFlow 0 7276) 7278)) inline$_LOG_READ_$$localPos$2$_LOG_READ_correct))))
+(let (($for.cond5$2_correct (=> (and %lbl%+7282 true) (=> (= call2733formal at _offset$2 at 0 (bvadd (bvmul $j.0$2 at 2 #x00000004) #x00000001)) (and
+(or %lbl%@25618 (=> (= (ControlFlow 0 7282) (- 0 25618)) (not (and
+p3$2 at 2
+_WRITE_HAS_OCCURRED_$$localPos$1 at 4
+(= _WRITE_OFFSET_$$localPos$1 at 4 call2733formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)))))
+(=> (not (and
+p3$2 at 2
+_WRITE_HAS_OCCURRED_$$localPos$1 at 4
+(= _WRITE_OFFSET_$$localPos$1 at 4 call2733formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2))) (and
+(or %lbl%@25654 (=> (= (ControlFlow 0 7282) (- 0 25654)) (=> p3$1 at 2 true)))
+(=> (=> p3$1 at 2 true) (=> (and
+(= v15$1 at 2 (ite p3$1 at 2 _HAVOC_bv32$1 at 12 v15$1 at 1))
+(= v15$2 at 2 (ite p3$2 at 2 _HAVOC_bv32$2 at 12 v15$2 at 1))
+(= (ControlFlow 0 7282) 7276)) inline$_LOG_READ_$$localPos$2$Entry_correct)))))))))
+(let ((inline$_LOG_READ_$$localPos$1$_LOG_READ_correct (=> (and %lbl%+7196 true) (=> (and
+(= _READ_HAS_OCCURRED_$$localPos$1 at 3 (ite (and
+p3$1 at 2
+inline$_LOG_READ_$$localPos$1$track at 2) true _READ_HAS_OCCURRED_$$localPos$1 at 2))
+(= _READ_OFFSET_$$localPos$1 at 3 (ite (and
+p3$1 at 2
+inline$_LOG_READ_$$localPos$1$track at 2) inline$_LOG_READ_$$localPos$1$_offset$1 at 2 _READ_OFFSET_$$localPos$1 at 2))
+(= _READ_SOURCE_$$localPos$1 at 3 (ite (and
+p3$1 at 2
+inline$_LOG_READ_$$localPos$1$track at 2) #x0000001a _READ_SOURCE_$$localPos$1 at 2))
+(= (ControlFlow 0 7196) 7282)) $for.cond5$2_correct))))
+(let ((inline$_LOG_READ_$$localPos$1$Entry_correct (=> (and %lbl%+7194 true) (=> (and
+(= inline$_LOG_READ_$$localPos$1$_offset$1 at 2 (bvadd (bvmul $j.0$1 at 2 #x00000004) #x00000001))
+(= (ControlFlow 0 7194) 7196)) inline$_LOG_READ_$$localPos$1$_LOG_READ_correct))))
+(let (($for.cond5$1_correct (=> (and %lbl%+7200 true) (=> (= call2680formal at _offset$2 at 0 (bvmul $j.0$2 at 2 #x00000004)) (and
+(or %lbl%@25461 (=> (= (ControlFlow 0 7200) (- 0 25461)) (not (and
+p3$2 at 2
+_WRITE_HAS_OCCURRED_$$localPos$1 at 4
+(= _WRITE_OFFSET_$$localPos$1 at 4 call2680formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)))))
+(=> (not (and
+p3$2 at 2
+_WRITE_HAS_OCCURRED_$$localPos$1 at 4
+(= _WRITE_OFFSET_$$localPos$1 at 4 call2680formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2))) (and
+(or %lbl%@25497 (=> (= (ControlFlow 0 7200) (- 0 25497)) (=> p3$1 at 2 true)))
+(=> (=> p3$1 at 2 true) (=> (and
+(= v14$1 at 2 (ite p3$1 at 2 _HAVOC_bv32$1 at 11 v14$1 at 1))
+(= v14$2 at 2 (ite p3$2 at 2 _HAVOC_bv32$2 at 11 v14$2 at 1))
+(= (ControlFlow 0 7200) 7194)) inline$_LOG_READ_$$localPos$1$Entry_correct)))))))))
+(let ((inline$_LOG_READ_$$localPos$0$_LOG_READ_correct (=> (and %lbl%+7114 true) (=> (and
+(= _READ_HAS_OCCURRED_$$localPos$1 at 2 (ite (and
+p3$1 at 2
+inline$_LOG_READ_$$localPos$0$track at 2) true _READ_HAS_OCCURRED_$$localPos$1 at 1))
+(= _READ_OFFSET_$$localPos$1 at 2 (ite (and
+p3$1 at 2
+inline$_LOG_READ_$$localPos$0$track at 2) inline$_LOG_READ_$$localPos$0$_offset$1 at 2 _READ_OFFSET_$$localPos$1 at 1))
+(= _READ_SOURCE_$$localPos$1 at 2 (ite (and
+p3$1 at 2
+inline$_LOG_READ_$$localPos$0$track at 2) #x00000019 _READ_SOURCE_$$localPos$1 at 1))
+(= (ControlFlow 0 7114) 7200)) $for.cond5$1_correct))))
+(let ((inline$_LOG_READ_$$localPos$0$Entry_correct (=> (and %lbl%+7112 true) (=> (and
+(= inline$_LOG_READ_$$localPos$0$_offset$1 at 2 (bvmul $j.0$1 at 2 #x00000004))
+(= (ControlFlow 0 7112) 7114)) inline$_LOG_READ_$$localPos$0$_LOG_READ_correct))))
+(let (($for.cond5_correct (=> (and %lbl%+7118 true) (=> (=> _b11 (=> _READ_HAS_OCCURRED_$$localPos$1 at 1 (or
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 1) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvmul #x00000000 #x00000004)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 1) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000001)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 1) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000002)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 1) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000003)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 1) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000003)))))) (=> (and
+(=> _READ_HAS_OCCURRED_$$vel$1 (or
+(= _READ_SOURCE_$$vel$1 #x00000005)
+(= _READ_SOURCE_$$vel$1 #x00000006)
+(= _READ_SOURCE_$$vel$1 #x00000007)
+(= _READ_SOURCE_$$vel$1 #x00000008)))
+(=> _WRITE_HAS_OCCURRED_$$vel$1 false)
+(=> (not _READ_HAS_OCCURRED_$$vel$1) (= _READ_SOURCE_$$vel$1 #x00000000))
+(=> (not _WRITE_HAS_OCCURRED_$$vel$1) (= _WRITE_SOURCE_$$vel$1 #x00000000))) (=> (and
+(=> _READ_HAS_OCCURRED_$$pos$1 at 8 (or
+(= _READ_SOURCE_$$pos$1 at 8 #x00000001)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000002)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000003)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000004)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000011)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000012)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000013)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000014)))
+(=> _WRITE_HAS_OCCURRED_$$pos$1 false)
+(=> (not _READ_HAS_OCCURRED_$$pos$1 at 8) (= _READ_SOURCE_$$pos$1 at 8 #x00000000))
+(=> (not _WRITE_HAS_OCCURRED_$$pos$1) (= _WRITE_SOURCE_$$pos$1 #x00000000))
+(=> _READ_HAS_OCCURRED_$$localPos$1 at 1 (or
+(= _READ_SOURCE_$$localPos$1 at 1 #x00000019)
+(= _READ_SOURCE_$$localPos$1 at 1 #x0000001a)
+(= _READ_SOURCE_$$localPos$1 at 1 #x0000001b)
+(= _READ_SOURCE_$$localPos$1 at 1 #x0000001c)
+(= _READ_SOURCE_$$localPos$1 at 1 #x0000001d)))
+(=> _WRITE_HAS_OCCURRED_$$localPos$1 at 4 (or
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000015)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000016)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000017)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000018)))
+(=> (not _READ_HAS_OCCURRED_$$localPos$1 at 1) (= _READ_SOURCE_$$localPos$1 at 1 #x00000000))
+(=> (not _WRITE_HAS_OCCURRED_$$localPos$1 at 4) (= _WRITE_SOURCE_$$localPos$1 at 4 #x00000000))) (=> (and
+(=> _READ_HAS_OCCURRED_$$newVelocity$1 false)
+(=> _WRITE_HAS_OCCURRED_$$newVelocity$1 (or
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000d)
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000e)
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000f)
+(= _WRITE_SOURCE_$$newVelocity$1 #x00000010)))
+(=> (not _READ_HAS_OCCURRED_$$newVelocity$1) (= _READ_SOURCE_$$newVelocity$1 #x00000000))
+(=> (not _WRITE_HAS_OCCURRED_$$newVelocity$1) (= _WRITE_SOURCE_$$newVelocity$1 #x00000000))
+(=> _READ_HAS_OCCURRED_$$newPosition$1 false)
+(=> _WRITE_HAS_OCCURRED_$$newPosition$1 (or
+(= _WRITE_SOURCE_$$newPosition$1 #x00000009)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000a)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000b)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000c)))
+(=> (not _READ_HAS_OCCURRED_$$newPosition$1) (= _READ_SOURCE_$$newPosition$1 #x00000000))
+(=> (not _WRITE_HAS_OCCURRED_$$newPosition$1) (= _WRITE_SOURCE_$$newPosition$1 #x00000000))
+(=> p2$1 at 2 p0$1 at 2)
+(=> p2$2 at 2 p0$2 at 2)
+(= v12$1 at 2 (ite p2$1 at 2 (bvult $j.0$1 at 2 v2$1 at 0) v12$1 at 1))
+(= v12$2 at 2 (ite p2$2 at 2 (bvult $j.0$2 at 2 v2$2 at 0) v12$2 at 1))
+(= p3$1 at 2 (ite p2$1 at 2 v12$1 at 2 false))
+(= p3$2 at 2 (ite p2$2 at 2 v12$2 at 2 false))
+(= p2$1 at 3 (ite p2$1 at 2 v12$1 at 2 p2$1 at 2))
+(= p2$2 at 3 (ite p2$2 at 2 v12$2 at 2 p2$2 at 2))) (and
+(or %lbl%@25348 (=> (= (ControlFlow 0 7118) (- 0 25348)) (=> p3$1 at 2 true)))
+(=> (=> p3$1 at 2 true) (=> (and
+(= v13$1 at 2 (ite p3$1 at 2 _HAVOC_bv32$1 at 10 v13$1 at 1))
+(= v13$2 at 2 (ite p3$2 at 2 _HAVOC_bv32$2 at 10 v13$2 at 1))
+(= (ControlFlow 0 7118) 7112)) inline$_LOG_READ_$$localPos$0$Entry_correct))))))))))
+(let (($for.cond$9_correct (=> (and %lbl%+7036 true) (=> (and
+(= $acc.1$1 at 1 (ite p1$1 at 1 $acc.0$1 at 1 $acc.1$1 at 0))
+(= $acc.1$2 at 1 (ite p1$2 at 1 $acc.0$2 at 1 $acc.1$2 at 0))
+(= $j.0$1 at 1 (ite p1$1 at 1 #x00000000 $j.0$1 at 0))
+(= $j.0$2 at 1 (ite p1$2 at 1 #x00000000 $j.0$2 at 0))
+(= p2$1 at 1 (ite p1$1 at 1 true false))
+(= p2$2 at 1 (ite p1$2 at 1 true false))) (and
+(or %lbl%@23930 (=> (= (ControlFlow 0 7036) (- 0 23930)) (=> _b11 (=> _READ_HAS_OCCURRED_$$localPos$1 at 0 (or
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 0) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvmul #x00000000 #x00000004)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 0) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000001)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 0) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000002)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 0) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000003)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 0) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000003))))))))
+(=> (=> _b11 (=> _READ_HAS_OCCURRED_$$localPos$1 at 0 (or
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 0) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvmul #x00000000 #x00000004)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 0) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000001)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 0) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000002)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 0) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000003)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 0) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000003)))))) (and
+(or %lbl%@24126 (=> (= (ControlFlow 0 7036) (- 0 24126)) (=> _READ_HAS_OCCURRED_$$vel$1 (or
+(= _READ_SOURCE_$$vel$1 #x00000005)
+(= _READ_SOURCE_$$vel$1 #x00000006)
+(= _READ_SOURCE_$$vel$1 #x00000007)
+(= _READ_SOURCE_$$vel$1 #x00000008)))))
+(=> (=> _READ_HAS_OCCURRED_$$vel$1 (or
+(= _READ_SOURCE_$$vel$1 #x00000005)
+(= _READ_SOURCE_$$vel$1 #x00000006)
+(= _READ_SOURCE_$$vel$1 #x00000007)
+(= _READ_SOURCE_$$vel$1 #x00000008))) (and
+(or %lbl%@24160 (=> (= (ControlFlow 0 7036) (- 0 24160)) (=> _WRITE_HAS_OCCURRED_$$vel$1 false)))
+(=> (=> _WRITE_HAS_OCCURRED_$$vel$1 false) (and
+(or %lbl%@24166 (=> (= (ControlFlow 0 7036) (- 0 24166)) (=> (not _READ_HAS_OCCURRED_$$vel$1) (= _READ_SOURCE_$$vel$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$vel$1) (= _READ_SOURCE_$$vel$1 #x00000000)) (and
+(or %lbl%@24178 (=> (= (ControlFlow 0 7036) (- 0 24178)) (=> (not _WRITE_HAS_OCCURRED_$$vel$1) (= _WRITE_SOURCE_$$vel$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$vel$1) (= _WRITE_SOURCE_$$vel$1 #x00000000)) (and
+(or %lbl%@24190 (=> (= (ControlFlow 0 7036) (- 0 24190)) (=> _READ_HAS_OCCURRED_$$pos$1 at 8 (or
+(= _READ_SOURCE_$$pos$1 at 8 #x00000001)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000002)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000003)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000004)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000011)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000012)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000013)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000014)))))
+(=> (=> _READ_HAS_OCCURRED_$$pos$1 at 8 (or
+(= _READ_SOURCE_$$pos$1 at 8 #x00000001)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000002)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000003)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000004)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000011)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000012)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000013)
+(= _READ_SOURCE_$$pos$1 at 8 #x00000014))) (and
+(or %lbl%@24247 (=> (= (ControlFlow 0 7036) (- 0 24247)) (=> _WRITE_HAS_OCCURRED_$$pos$1 false)))
+(=> (=> _WRITE_HAS_OCCURRED_$$pos$1 false) (and
+(or %lbl%@24253 (=> (= (ControlFlow 0 7036) (- 0 24253)) (=> (not _READ_HAS_OCCURRED_$$pos$1 at 8) (= _READ_SOURCE_$$pos$1 at 8 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$pos$1 at 8) (= _READ_SOURCE_$$pos$1 at 8 #x00000000)) (and
+(or %lbl%@24263 (=> (= (ControlFlow 0 7036) (- 0 24263)) (=> (not _WRITE_HAS_OCCURRED_$$pos$1) (= _WRITE_SOURCE_$$pos$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$pos$1) (= _WRITE_SOURCE_$$pos$1 #x00000000)) (and
+(or %lbl%@24275 (=> (= (ControlFlow 0 7036) (- 0 24275)) (=> _READ_HAS_OCCURRED_$$localPos$1 at 0 (or
+(= _READ_SOURCE_$$localPos$1 at 0 #x00000019)
+(= _READ_SOURCE_$$localPos$1 at 0 #x0000001a)
+(= _READ_SOURCE_$$localPos$1 at 0 #x0000001b)
+(= _READ_SOURCE_$$localPos$1 at 0 #x0000001c)
+(= _READ_SOURCE_$$localPos$1 at 0 #x0000001d)))))
+(=> (=> _READ_HAS_OCCURRED_$$localPos$1 at 0 (or
+(= _READ_SOURCE_$$localPos$1 at 0 #x00000019)
+(= _READ_SOURCE_$$localPos$1 at 0 #x0000001a)
+(= _READ_SOURCE_$$localPos$1 at 0 #x0000001b)
+(= _READ_SOURCE_$$localPos$1 at 0 #x0000001c)
+(= _READ_SOURCE_$$localPos$1 at 0 #x0000001d))) (and
+(or %lbl%@24311 (=> (= (ControlFlow 0 7036) (- 0 24311)) (=> _WRITE_HAS_OCCURRED_$$localPos$1 at 4 (or
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000015)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000016)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000017)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000018)))))
+(=> (=> _WRITE_HAS_OCCURRED_$$localPos$1 at 4 (or
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000015)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000016)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000017)
+(= _WRITE_SOURCE_$$localPos$1 at 4 #x00000018))) (and
+(or %lbl%@24340 (=> (= (ControlFlow 0 7036) (- 0 24340)) (=> (not _READ_HAS_OCCURRED_$$localPos$1 at 0) (= _READ_SOURCE_$$localPos$1 at 0 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$localPos$1 at 0) (= _READ_SOURCE_$$localPos$1 at 0 #x00000000)) (and
+(or %lbl%@24350 (=> (= (ControlFlow 0 7036) (- 0 24350)) (=> (not _WRITE_HAS_OCCURRED_$$localPos$1 at 4) (= _WRITE_SOURCE_$$localPos$1 at 4 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$localPos$1 at 4) (= _WRITE_SOURCE_$$localPos$1 at 4 #x00000000)) (and
+(or %lbl%@24360 (=> (= (ControlFlow 0 7036) (- 0 24360)) (=> _READ_HAS_OCCURRED_$$newVelocity$1 false)))
+(=> (=> _READ_HAS_OCCURRED_$$newVelocity$1 false) (and
+(or %lbl%@24366 (=> (= (ControlFlow 0 7036) (- 0 24366)) (=> _WRITE_HAS_OCCURRED_$$newVelocity$1 (or
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000d)
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000e)
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000f)
+(= _WRITE_SOURCE_$$newVelocity$1 #x00000010)))))
+(=> (=> _WRITE_HAS_OCCURRED_$$newVelocity$1 (or
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000d)
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000e)
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000f)
+(= _WRITE_SOURCE_$$newVelocity$1 #x00000010))) (and
+(or %lbl%@24400 (=> (= (ControlFlow 0 7036) (- 0 24400)) (=> (not _READ_HAS_OCCURRED_$$newVelocity$1) (= _READ_SOURCE_$$newVelocity$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$newVelocity$1) (= _READ_SOURCE_$$newVelocity$1 #x00000000)) (and
+(or %lbl%@24412 (=> (= (ControlFlow 0 7036) (- 0 24412)) (=> (not _WRITE_HAS_OCCURRED_$$newVelocity$1) (= _WRITE_SOURCE_$$newVelocity$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$newVelocity$1) (= _WRITE_SOURCE_$$newVelocity$1 #x00000000)) (and
+(or %lbl%@24424 (=> (= (ControlFlow 0 7036) (- 0 24424)) (=> _READ_HAS_OCCURRED_$$newPosition$1 false)))
+(=> (=> _READ_HAS_OCCURRED_$$newPosition$1 false) (and
+(or %lbl%@24430 (=> (= (ControlFlow 0 7036) (- 0 24430)) (=> _WRITE_HAS_OCCURRED_$$newPosition$1 (or
+(= _WRITE_SOURCE_$$newPosition$1 #x00000009)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000a)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000b)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000c)))))
+(=> (=> _WRITE_HAS_OCCURRED_$$newPosition$1 (or
+(= _WRITE_SOURCE_$$newPosition$1 #x00000009)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000a)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000b)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000c))) (and
+(or %lbl%@24464 (=> (= (ControlFlow 0 7036) (- 0 24464)) (=> (not _READ_HAS_OCCURRED_$$newPosition$1) (= _READ_SOURCE_$$newPosition$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$newPosition$1) (= _READ_SOURCE_$$newPosition$1 #x00000000)) (and
+(or %lbl%@24476 (=> (= (ControlFlow 0 7036) (- 0 24476)) (=> (not _WRITE_HAS_OCCURRED_$$newPosition$1) (= _WRITE_SOURCE_$$newPosition$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$newPosition$1) (= _WRITE_SOURCE_$$newPosition$1 #x00000000)) (and
+(or %lbl%@24488 (=> (= (ControlFlow 0 7036) (- 0 24488)) (=> p2$1 at 1 p0$1 at 2)))
+(=> (=> p2$1 at 1 p0$1 at 2) (and
+(or %lbl%@24492 (=> (= (ControlFlow 0 7036) (- 0 24492)) (=> p2$2 at 1 p0$2 at 2)))
+(=> (=> p2$2 at 1 p0$2 at 2) (=> (= (ControlFlow 0 7036) 7118) $for.cond5_correct)))))))))))))))))))))))))))))))))))))))))))))))))))
+(let ((inline$$bugle_barrier$0$Return_correct (=> (and %lbl%+7032 true) (=> (= (ControlFlow 0 7032) 7036) $for.cond$9_correct))))
+(let ((inline$$bugle_barrier$0$anon18_Else_correct (=> (and %lbl%+7020 true) (=> (and
+(not (and
+p1$2 at 1
+(= inline$$bugle_barrier$0$$1$2 at 1 #b1)))
+(= (ControlFlow 0 7020) 7032)) inline$$bugle_barrier$0$Return_correct))))
+(let ((inline$$bugle_barrier$0$anon18_Then_correct (=> (and %lbl%+7022 true) (=> (and
+p1$2 at 1
+(= inline$$bugle_barrier$0$$1$2 at 1 #b1)
+(= (ControlFlow 0 7022) 7032)) inline$$bugle_barrier$0$Return_correct))))
+(let ((inline$$bugle_barrier$0$anon9_correct (=> (and %lbl%+7018 true) (and
+(=> (= (ControlFlow 0 7018) 7022) inline$$bugle_barrier$0$anon18_Then_correct)
+(=> (= (ControlFlow 0 7018) 7020) inline$$bugle_barrier$0$anon18_Else_correct)))))
+(let ((inline$$bugle_barrier$0$anon17_Else_correct (=> (and %lbl%+7016 true) (=> (and
+(not (and
+p1$1 at 1
+(= inline$$bugle_barrier$0$$1$1 at 1 #b1)))
+(= (ControlFlow 0 7016) 7018)) inline$$bugle_barrier$0$anon9_correct))))
+(let ((inline$$bugle_barrier$0$anon17_Then_correct (=> (and %lbl%+7024 true) (=> (and
+p1$1 at 1
+(= inline$$bugle_barrier$0$$1$1 at 1 #b1)) (=> (and
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _READ_HAS_OCCURRED_$$pos$1 at 8))
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _WRITE_HAS_OCCURRED_$$pos$1))
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _READ_HAS_OCCURRED_$$vel$1))
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _WRITE_HAS_OCCURRED_$$vel$1))
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _READ_HAS_OCCURRED_$$newPosition$1))
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _WRITE_HAS_OCCURRED_$$newPosition$1))
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _READ_HAS_OCCURRED_$$newVelocity$1))
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _WRITE_HAS_OCCURRED_$$newVelocity$1))) (and
+(=> (= (ControlFlow 0 7024) 7022) inline$$bugle_barrier$0$anon18_Then_correct)
+(=> (= (ControlFlow 0 7024) 7020) inline$$bugle_barrier$0$anon18_Else_correct)))))))
+(let ((inline$$bugle_barrier$0$anon4_correct (=> (and %lbl%+7014 true) (and
+(=> (= (ControlFlow 0 7014) 7024) inline$$bugle_barrier$0$anon17_Then_correct)
+(=> (= (ControlFlow 0 7014) 7016) inline$$bugle_barrier$0$anon17_Else_correct)))))
+(let ((inline$$bugle_barrier$0$anon16_Else_correct (=> (and %lbl%+7012 true) (=> (and
+(not (and
+p1$2 at 1
+(= inline$$bugle_barrier$0$$0$2 at 1 #b1)))
+(= (ControlFlow 0 7012) 7014)) inline$$bugle_barrier$0$anon4_correct))))
+(let ((inline$$bugle_barrier$0$anon16_Then_correct (=> (and %lbl%+7026 true) (=> (and
+p1$2 at 1
+(= inline$$bugle_barrier$0$$0$2 at 1 #b1)) (and
+(=> (= (ControlFlow 0 7026) 7024) inline$$bugle_barrier$0$anon17_Then_correct)
+(=> (= (ControlFlow 0 7026) 7016) inline$$bugle_barrier$0$anon17_Else_correct))))))
+(let ((inline$$bugle_barrier$0$anon2_correct (=> (and %lbl%+7010 true) (and
+(=> (= (ControlFlow 0 7010) 7026) inline$$bugle_barrier$0$anon16_Then_correct)
+(=> (= (ControlFlow 0 7010) 7012) inline$$bugle_barrier$0$anon16_Else_correct)))))
+(let ((inline$$bugle_barrier$0$anon15_Else_correct (=> (and %lbl%+7008 true) (=> (and
+(not (and
+p1$1 at 1
+(= inline$$bugle_barrier$0$$0$1 at 1 #b1)))
+(= (ControlFlow 0 7008) 7010)) inline$$bugle_barrier$0$anon2_correct))))
+(let ((inline$$bugle_barrier$0$anon15_Then_correct (=> (and %lbl%+7028 true) (=> (and
+p1$1 at 1
+(= inline$$bugle_barrier$0$$0$1 at 1 #b1)
+(not _READ_HAS_OCCURRED_$$localPos$1 at 0)
+(not _WRITE_HAS_OCCURRED_$$localPos$1 at 4)) (and
+(=> (= (ControlFlow 0 7028) 7026) inline$$bugle_barrier$0$anon16_Then_correct)
+(=> (= (ControlFlow 0 7028) 7012) inline$$bugle_barrier$0$anon16_Else_correct))))))
+(let ((inline$$bugle_barrier$0$anon14_Else_correct (=> (and %lbl%+7006 true) (=> (not (or
+(and
+(not p1$1 at 1)
+(not p1$2 at 1))
+(and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)
+(or
+(not p1$1 at 1)
+(not p1$2 at 1))))) (and
+(=> (= (ControlFlow 0 7006) 7028) inline$$bugle_barrier$0$anon15_Then_correct)
+(=> (= (ControlFlow 0 7006) 7008) inline$$bugle_barrier$0$anon15_Else_correct))))))
+(let ((inline$$bugle_barrier$0$anon14_Then_correct (=> (and %lbl%+7030 true) (=> (and
+(or
+(and
+(not p1$1 at 1)
+(not p1$2 at 1))
+(and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)
+(or
+(not p1$1 at 1)
+(not p1$2 at 1))))
+(= (ControlFlow 0 7030) 7036)) $for.cond$9_correct))))
+(let ((inline$$bugle_barrier$0$Entry_correct (=> (and %lbl%+7002 true) (=> (and
+(= inline$$bugle_barrier$0$$0$1 at 1 (ite true #b1 #b0))
+(= inline$$bugle_barrier$0$$1$1 at 1 (ite false #b1 #b0))
+(= inline$$bugle_barrier$0$$0$2 at 1 (ite true #b1 #b0))
+(= inline$$bugle_barrier$0$$1$2 at 1 (ite false #b1 #b0))) (and
+(or %lbl%@23449 (=> (= (ControlFlow 0 7002) (- 0 23449)) (=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (= p1$1 at 1 p1$2 at 1))))
+(=> (=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (= p1$1 at 1 p1$2 at 1)) (and
+(=> (= (ControlFlow 0 7002) 7030) inline$$bugle_barrier$0$anon14_Then_correct)
+(=> (= (ControlFlow 0 7002) 7006) inline$$bugle_barrier$0$anon14_Else_correct))))))))
+(let (($for.cond$8_correct (=> (and %lbl%+7034 true) (=> (= call2152formal at _offset$2 at 0 (bvadd (bvmul v0$2 at 0 #x00000004) #x00000003)) (and
+(or %lbl%@23317 (=> (= (ControlFlow 0 7034) (- 0 23317)) (not (and
+p1$2 at 1
+_WRITE_HAS_OCCURRED_$$localPos$1 at 4
+(= _WRITE_OFFSET_$$localPos$1 at 4 call2152formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)))))
+(=> (not (and
+p1$2 at 1
+_WRITE_HAS_OCCURRED_$$localPos$1 at 4
+(= _WRITE_OFFSET_$$localPos$1 at 4 call2152formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2))) (and
+(or %lbl%@23353 (=> (= (ControlFlow 0 7034) (- 0 23353)) (not (and
+p1$2 at 1
+_READ_HAS_OCCURRED_$$localPos$1 at 0
+(= _READ_OFFSET_$$localPos$1 at 0 call2152formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)))))
+(=> (not (and
+p1$2 at 1
+_READ_HAS_OCCURRED_$$localPos$1 at 0
+(= _READ_OFFSET_$$localPos$1 at 0 call2152formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2))) (=> (= (ControlFlow 0 7034) 7002) inline$$bugle_barrier$0$Entry_correct)))))))))
+(let ((inline$_LOG_WRITE_$$localPos$3$_LOG_WRITE_correct (=> (and %lbl%+6495 true) (=> (and
+(= _WRITE_HAS_OCCURRED_$$localPos$1 at 4 (ite (and
+p1$1 at 1
+inline$_LOG_WRITE_$$localPos$3$track at 1) true _WRITE_HAS_OCCURRED_$$localPos$1 at 3))
+(= _WRITE_OFFSET_$$localPos$1 at 4 (ite (and
+p1$1 at 1
+inline$_LOG_WRITE_$$localPos$3$track at 1) inline$_LOG_WRITE_$$localPos$3$_offset$1 at 1 _WRITE_OFFSET_$$localPos$1 at 3))
+(= _WRITE_SOURCE_$$localPos$1 at 4 (ite (and
+p1$1 at 1
+inline$_LOG_WRITE_$$localPos$3$track at 1) #x00000018 _WRITE_SOURCE_$$localPos$1 at 3))
+(= (ControlFlow 0 6495) 7034)) $for.cond$8_correct))))
+(let ((inline$_LOG_WRITE_$$localPos$3$Entry_correct (=> (and %lbl%+6493 true) (=> (and
+(= inline$_LOG_WRITE_$$localPos$3$_offset$1 at 1 (bvadd (bvmul v0$1 at 0 #x00000004) #x00000003))
+(= (ControlFlow 0 6493) 6495)) inline$_LOG_WRITE_$$localPos$3$_LOG_WRITE_correct))))
+(let (($for.cond$7_correct (=> (and %lbl%+6499 true) (=> (= call2115formal at _offset$2 at 0 (bvadd (bvmul v0$2 at 0 #x00000004) #x00000002)) (and
+(or %lbl%@23151 (=> (= (ControlFlow 0 6499) (- 0 23151)) (not (and
+p1$2 at 1
+_WRITE_HAS_OCCURRED_$$localPos$1 at 3
+(= _WRITE_OFFSET_$$localPos$1 at 3 call2115formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)))))
+(=> (not (and
+p1$2 at 1
+_WRITE_HAS_OCCURRED_$$localPos$1 at 3
+(= _WRITE_OFFSET_$$localPos$1 at 3 call2115formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2))) (and
+(or %lbl%@23187 (=> (= (ControlFlow 0 6499) (- 0 23187)) (not (and
+p1$2 at 1
+_READ_HAS_OCCURRED_$$localPos$1 at 0
+(= _READ_OFFSET_$$localPos$1 at 0 call2115formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)))))
+(=> (not (and
+p1$2 at 1
+_READ_HAS_OCCURRED_$$localPos$1 at 0
+(= _READ_OFFSET_$$localPos$1 at 0 call2115formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2))) (and
+(or %lbl%@23223 (=> (= (ControlFlow 0 6499) (- 0 23223)) (=> p1$1 at 1 true)))
+(=> (=> p1$1 at 1 true) (=> (= (ControlFlow 0 6499) 6493) inline$_LOG_WRITE_$$localPos$3$Entry_correct)))))))))))
+(let ((inline$_LOG_WRITE_$$localPos$2$_LOG_WRITE_correct (=> (and %lbl%+6413 true) (=> (and
+(= _WRITE_HAS_OCCURRED_$$localPos$1 at 3 (ite (and
+p1$1 at 1
+inline$_LOG_WRITE_$$localPos$2$track at 1) true _WRITE_HAS_OCCURRED_$$localPos$1 at 2))
+(= _WRITE_OFFSET_$$localPos$1 at 3 (ite (and
+p1$1 at 1
+inline$_LOG_WRITE_$$localPos$2$track at 1) inline$_LOG_WRITE_$$localPos$2$_offset$1 at 1 _WRITE_OFFSET_$$localPos$1 at 2))
+(= _WRITE_SOURCE_$$localPos$1 at 3 (ite (and
+p1$1 at 1
+inline$_LOG_WRITE_$$localPos$2$track at 1) #x00000017 _WRITE_SOURCE_$$localPos$1 at 2))
+(= (ControlFlow 0 6413) 6499)) $for.cond$7_correct))))
+(let ((inline$_LOG_WRITE_$$localPos$2$Entry_correct (=> (and %lbl%+6411 true) (=> (and
+(= inline$_LOG_WRITE_$$localPos$2$_offset$1 at 1 (bvadd (bvmul v0$1 at 0 #x00000004) #x00000002))
+(= (ControlFlow 0 6411) 6413)) inline$_LOG_WRITE_$$localPos$2$_LOG_WRITE_correct))))
+(let (($for.cond$6_correct (=> (and %lbl%+6417 true) (=> (= call2078formal at _offset$2 at 0 (bvadd (bvmul v0$2 at 0 #x00000004) #x00000001)) (and
+(or %lbl%@22985 (=> (= (ControlFlow 0 6417) (- 0 22985)) (not (and
+p1$2 at 1
+_WRITE_HAS_OCCURRED_$$localPos$1 at 2
+(= _WRITE_OFFSET_$$localPos$1 at 2 call2078formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)))))
+(=> (not (and
+p1$2 at 1
+_WRITE_HAS_OCCURRED_$$localPos$1 at 2
+(= _WRITE_OFFSET_$$localPos$1 at 2 call2078formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2))) (and
+(or %lbl%@23021 (=> (= (ControlFlow 0 6417) (- 0 23021)) (not (and
+p1$2 at 1
+_READ_HAS_OCCURRED_$$localPos$1 at 0
+(= _READ_OFFSET_$$localPos$1 at 0 call2078formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)))))
+(=> (not (and
+p1$2 at 1
+_READ_HAS_OCCURRED_$$localPos$1 at 0
+(= _READ_OFFSET_$$localPos$1 at 0 call2078formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2))) (and
+(or %lbl%@23057 (=> (= (ControlFlow 0 6417) (- 0 23057)) (=> p1$1 at 1 true)))
+(=> (=> p1$1 at 1 true) (=> (= (ControlFlow 0 6417) 6411) inline$_LOG_WRITE_$$localPos$2$Entry_correct)))))))))))
+(let ((inline$_LOG_WRITE_$$localPos$1$_LOG_WRITE_correct (=> (and %lbl%+6331 true) (=> (and
+(= _WRITE_HAS_OCCURRED_$$localPos$1 at 2 (ite (and
+p1$1 at 1
+inline$_LOG_WRITE_$$localPos$1$track at 1) true _WRITE_HAS_OCCURRED_$$localPos$1 at 1))
+(= _WRITE_OFFSET_$$localPos$1 at 2 (ite (and
+p1$1 at 1
+inline$_LOG_WRITE_$$localPos$1$track at 1) inline$_LOG_WRITE_$$localPos$1$_offset$1 at 1 _WRITE_OFFSET_$$localPos$1 at 1))
+(= _WRITE_SOURCE_$$localPos$1 at 2 (ite (and
+p1$1 at 1
+inline$_LOG_WRITE_$$localPos$1$track at 1) #x00000016 _WRITE_SOURCE_$$localPos$1 at 1))
+(= (ControlFlow 0 6331) 6417)) $for.cond$6_correct))))
+(let ((inline$_LOG_WRITE_$$localPos$1$Entry_correct (=> (and %lbl%+6329 true) (=> (and
+(= inline$_LOG_WRITE_$$localPos$1$_offset$1 at 1 (bvadd (bvmul v0$1 at 0 #x00000004) #x00000001))
+(= (ControlFlow 0 6329) 6331)) inline$_LOG_WRITE_$$localPos$1$_LOG_WRITE_correct))))
+(let (($for.cond$5_correct (=> (and %lbl%+6335 true) (=> (= call2041formal at _offset$2 at 0 (bvmul v0$2 at 0 #x00000004)) (and
+(or %lbl%@22819 (=> (= (ControlFlow 0 6335) (- 0 22819)) (not (and
+p1$2 at 1
+_WRITE_HAS_OCCURRED_$$localPos$1 at 1
+(= _WRITE_OFFSET_$$localPos$1 at 1 call2041formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)))))
+(=> (not (and
+p1$2 at 1
+_WRITE_HAS_OCCURRED_$$localPos$1 at 1
+(= _WRITE_OFFSET_$$localPos$1 at 1 call2041formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2))) (and
+(or %lbl%@22855 (=> (= (ControlFlow 0 6335) (- 0 22855)) (not (and
+p1$2 at 1
+_READ_HAS_OCCURRED_$$localPos$1 at 0
+(= _READ_OFFSET_$$localPos$1 at 0 call2041formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)))))
+(=> (not (and
+p1$2 at 1
+_READ_HAS_OCCURRED_$$localPos$1 at 0
+(= _READ_OFFSET_$$localPos$1 at 0 call2041formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2))) (and
+(or %lbl%@22891 (=> (= (ControlFlow 0 6335) (- 0 22891)) (=> p1$1 at 1 true)))
+(=> (=> p1$1 at 1 true) (=> (= (ControlFlow 0 6335) 6329) inline$_LOG_WRITE_$$localPos$1$Entry_correct)))))))))))
+(let ((inline$_LOG_WRITE_$$localPos$0$_LOG_WRITE_correct (=> (and %lbl%+6249 true) (=> (and
+(= _WRITE_HAS_OCCURRED_$$localPos$1 at 1 (ite (and
+p1$1 at 1
+inline$_LOG_WRITE_$$localPos$0$track at 1) true _WRITE_HAS_OCCURRED_$$localPos$1 at 0))
+(= _WRITE_OFFSET_$$localPos$1 at 1 (ite (and
+p1$1 at 1
+inline$_LOG_WRITE_$$localPos$0$track at 1) inline$_LOG_WRITE_$$localPos$0$_offset$1 at 1 _WRITE_OFFSET_$$localPos$1 at 0))
+(= _WRITE_SOURCE_$$localPos$1 at 1 (ite (and
+p1$1 at 1
+inline$_LOG_WRITE_$$localPos$0$track at 1) #x00000015 _WRITE_SOURCE_$$localPos$1 at 0))
+(= (ControlFlow 0 6249) 6335)) $for.cond$5_correct))))
+(let ((inline$_LOG_WRITE_$$localPos$0$Entry_correct (=> (and %lbl%+6247 true) (=> (and
+(= inline$_LOG_WRITE_$$localPos$0$_offset$1 at 1 (bvmul v0$1 at 0 #x00000004))
+(= (ControlFlow 0 6247) 6249)) inline$_LOG_WRITE_$$localPos$0$_LOG_WRITE_correct))))
+(let (($for.cond$4_correct (=> (and %lbl%+6253 true) (=> (= call2010formal at _offset$2 at 0 (bvadd (bvmul (bvadd (bvmul $i.0$2 at 1 v2$2 at 0) v0$2 at 0) #x00000004) #x00000003)) (and
+(or %lbl%@22719 (=> (= (ControlFlow 0 6253) (- 0 22719)) (not (and
+p1$2 at 1
+_WRITE_HAS_OCCURRED_$$pos$1
+(= _WRITE_OFFSET_$$pos$1 call2010formal at _offset$2 at 0)))))
+(=> (not (and
+p1$2 at 1
+_WRITE_HAS_OCCURRED_$$pos$1
+(= _WRITE_OFFSET_$$pos$1 call2010formal at _offset$2 at 0))) (and
+(or %lbl%@22733 (=> (= (ControlFlow 0 6253) (- 0 22733)) (=> p1$1 at 1 true)))
+(=> (=> p1$1 at 1 true) (=> (= (ControlFlow 0 6253) 6247) inline$_LOG_WRITE_$$localPos$0$Entry_correct)))))))))
+(let ((inline$_LOG_READ_$$pos$7$_LOG_READ_correct (=> (and %lbl%+6167 true) (=> (and
+(= _READ_HAS_OCCURRED_$$pos$1 at 8 (ite (and
+p1$1 at 1
+inline$_LOG_READ_$$pos$7$track at 1) true _READ_HAS_OCCURRED_$$pos$1 at 7))
+(= _READ_OFFSET_$$pos$1 at 8 (ite (and
+p1$1 at 1
+inline$_LOG_READ_$$pos$7$track at 1) inline$_LOG_READ_$$pos$7$_offset$1 at 1 _READ_OFFSET_$$pos$1 at 7))
+(= _READ_SOURCE_$$pos$1 at 8 (ite (and
+p1$1 at 1
+inline$_LOG_READ_$$pos$7$track at 1) #x00000014 _READ_SOURCE_$$pos$1 at 7))
+(= (ControlFlow 0 6167) 6253)) $for.cond$4_correct))))
+(let ((inline$_LOG_READ_$$pos$7$Entry_correct (=> (and %lbl%+6165 true) (=> (and
+(= inline$_LOG_READ_$$pos$7$_offset$1 at 1 (bvadd (bvmul (bvadd (bvmul $i.0$1 at 1 v2$1 at 0) v0$1 at 0) #x00000004) #x00000003))
+(= (ControlFlow 0 6165) 6167)) inline$_LOG_READ_$$pos$7$_LOG_READ_correct))))
+(let (($for.cond$3_correct (=> (and %lbl%+6171 true) (=> (= call1945formal at _offset$2 at 0 (bvadd (bvmul (bvadd (bvmul $i.0$2 at 1 v2$2 at 0) v0$2 at 0) #x00000004) #x00000002)) (and
+(or %lbl%@22572 (=> (= (ControlFlow 0 6171) (- 0 22572)) (not (and
+p1$2 at 1
+_WRITE_HAS_OCCURRED_$$pos$1
+(= _WRITE_OFFSET_$$pos$1 call1945formal at _offset$2 at 0)))))
+(=> (not (and
+p1$2 at 1
+_WRITE_HAS_OCCURRED_$$pos$1
+(= _WRITE_OFFSET_$$pos$1 call1945formal at _offset$2 at 0))) (and
+(or %lbl%@22586 (=> (= (ControlFlow 0 6171) (- 0 22586)) (=> p1$1 at 1 true)))
+(=> (=> p1$1 at 1 true) (=> (and
+(= v11$1 at 1 (ite p1$1 at 1 _HAVOC_bv32$1 at 8 v11$1 at 0))
+(= v11$2 at 1 (ite p1$2 at 1 _HAVOC_bv32$2 at 8 v11$2 at 0))
+(= (ControlFlow 0 6171) 6165)) inline$_LOG_READ_$$pos$7$Entry_correct)))))))))
+(let ((inline$_LOG_READ_$$pos$6$_LOG_READ_correct (=> (and %lbl%+6085 true) (=> (and
+(= _READ_HAS_OCCURRED_$$pos$1 at 7 (ite (and
+p1$1 at 1
+inline$_LOG_READ_$$pos$6$track at 1) true _READ_HAS_OCCURRED_$$pos$1 at 6))
+(= _READ_OFFSET_$$pos$1 at 7 (ite (and
+p1$1 at 1
+inline$_LOG_READ_$$pos$6$track at 1) inline$_LOG_READ_$$pos$6$_offset$1 at 1 _READ_OFFSET_$$pos$1 at 6))
+(= _READ_SOURCE_$$pos$1 at 7 (ite (and
+p1$1 at 1
+inline$_LOG_READ_$$pos$6$track at 1) #x00000013 _READ_SOURCE_$$pos$1 at 6))
+(= (ControlFlow 0 6085) 6171)) $for.cond$3_correct))))
+(let ((inline$_LOG_READ_$$pos$6$Entry_correct (=> (and %lbl%+6083 true) (=> (and
+(= inline$_LOG_READ_$$pos$6$_offset$1 at 1 (bvadd (bvmul (bvadd (bvmul $i.0$1 at 1 v2$1 at 0) v0$1 at 0) #x00000004) #x00000002))
+(= (ControlFlow 0 6083) 6085)) inline$_LOG_READ_$$pos$6$_LOG_READ_correct))))
+(let (($for.cond$2_correct (=> (and %lbl%+6089 true) (=> (= call1880formal at _offset$2 at 0 (bvadd (bvmul (bvadd (bvmul $i.0$2 at 1 v2$2 at 0) v0$2 at 0) #x00000004) #x00000001)) (and
+(or %lbl%@22425 (=> (= (ControlFlow 0 6089) (- 0 22425)) (not (and
+p1$2 at 1
+_WRITE_HAS_OCCURRED_$$pos$1
+(= _WRITE_OFFSET_$$pos$1 call1880formal at _offset$2 at 0)))))
+(=> (not (and
+p1$2 at 1
+_WRITE_HAS_OCCURRED_$$pos$1
+(= _WRITE_OFFSET_$$pos$1 call1880formal at _offset$2 at 0))) (and
+(or %lbl%@22439 (=> (= (ControlFlow 0 6089) (- 0 22439)) (=> p1$1 at 1 true)))
+(=> (=> p1$1 at 1 true) (=> (and
+(= v10$1 at 1 (ite p1$1 at 1 _HAVOC_bv32$1 at 7 v10$1 at 0))
+(= v10$2 at 1 (ite p1$2 at 1 _HAVOC_bv32$2 at 7 v10$2 at 0))
+(= (ControlFlow 0 6089) 6083)) inline$_LOG_READ_$$pos$6$Entry_correct)))))))))
+(let ((inline$_LOG_READ_$$pos$5$_LOG_READ_correct (=> (and %lbl%+6003 true) (=> (and
+(= _READ_HAS_OCCURRED_$$pos$1 at 6 (ite (and
+p1$1 at 1
+inline$_LOG_READ_$$pos$5$track at 1) true _READ_HAS_OCCURRED_$$pos$1 at 5))
+(= _READ_OFFSET_$$pos$1 at 6 (ite (and
+p1$1 at 1
+inline$_LOG_READ_$$pos$5$track at 1) inline$_LOG_READ_$$pos$5$_offset$1 at 1 _READ_OFFSET_$$pos$1 at 5))
+(= _READ_SOURCE_$$pos$1 at 6 (ite (and
+p1$1 at 1
+inline$_LOG_READ_$$pos$5$track at 1) #x00000012 _READ_SOURCE_$$pos$1 at 5))
+(= (ControlFlow 0 6003) 6089)) $for.cond$2_correct))))
+(let ((inline$_LOG_READ_$$pos$5$Entry_correct (=> (and %lbl%+6001 true) (=> (and
+(= inline$_LOG_READ_$$pos$5$_offset$1 at 1 (bvadd (bvmul (bvadd (bvmul $i.0$1 at 1 v2$1 at 0) v0$1 at 0) #x00000004) #x00000001))
+(= (ControlFlow 0 6001) 6003)) inline$_LOG_READ_$$pos$5$_LOG_READ_correct))))
+(let (($for.cond$1_correct (=> (and %lbl%+6007 true) (=> (= call1815formal at _offset$2 at 0 (bvmul (bvadd (bvmul $i.0$2 at 1 v2$2 at 0) v0$2 at 0) #x00000004)) (and
+(or %lbl%@22278 (=> (= (ControlFlow 0 6007) (- 0 22278)) (not (and
+p1$2 at 1
+_WRITE_HAS_OCCURRED_$$pos$1
+(= _WRITE_OFFSET_$$pos$1 call1815formal at _offset$2 at 0)))))
+(=> (not (and
+p1$2 at 1
+_WRITE_HAS_OCCURRED_$$pos$1
+(= _WRITE_OFFSET_$$pos$1 call1815formal at _offset$2 at 0))) (and
+(or %lbl%@22292 (=> (= (ControlFlow 0 6007) (- 0 22292)) (=> p1$1 at 1 true)))
+(=> (=> p1$1 at 1 true) (=> (and
+(= v9$1 at 1 (ite p1$1 at 1 _HAVOC_bv32$1 at 6 v9$1 at 0))
+(= v9$2 at 1 (ite p1$2 at 1 _HAVOC_bv32$2 at 6 v9$2 at 0))
+(= (ControlFlow 0 6007) 6001)) inline$_LOG_READ_$$pos$5$Entry_correct)))))))))
+(let ((inline$_LOG_READ_$$pos$4$_LOG_READ_correct (=> (and %lbl%+5921 true) (=> (and
+(= _READ_HAS_OCCURRED_$$pos$1 at 5 (ite (and
+p1$1 at 1
+inline$_LOG_READ_$$pos$4$track at 1) true _READ_HAS_OCCURRED_$$pos$1 at 4))
+(= _READ_OFFSET_$$pos$1 at 5 (ite (and
+p1$1 at 1
+inline$_LOG_READ_$$pos$4$track at 1) inline$_LOG_READ_$$pos$4$_offset$1 at 1 _READ_OFFSET_$$pos$1 at 4))
+(= _READ_SOURCE_$$pos$1 at 5 (ite (and
+p1$1 at 1
+inline$_LOG_READ_$$pos$4$track at 1) #x00000011 _READ_SOURCE_$$pos$1 at 4))
+(= (ControlFlow 0 5921) 6007)) $for.cond$1_correct))))
+(let ((inline$_LOG_READ_$$pos$4$Entry_correct (=> (and %lbl%+5919 true) (=> (and
+(= inline$_LOG_READ_$$pos$4$_offset$1 at 1 (bvmul (bvadd (bvmul $i.0$1 at 1 v2$1 at 0) v0$1 at 0) #x00000004))
+(= (ControlFlow 0 5919) 5921)) inline$_LOG_READ_$$pos$4$_LOG_READ_correct))))
+(let (($for.cond_correct (=> (and %lbl%+5925 true) (=> (=> _b10 (=> _WRITE_HAS_OCCURRED_$$localPos$1 at 0 (or
+(= _WRITE_OFFSET_$$localPos$1 at 0 (bvmul local_id_x$1 #x00000004))
+(= _WRITE_OFFSET_$$localPos$1 at 0 (bvadd (bvmul local_id_x$1 #x00000004) #x00000001))
+(= _WRITE_OFFSET_$$localPos$1 at 0 (bvadd (bvmul local_id_x$1 #x00000004) #x00000002))
+(= _WRITE_OFFSET_$$localPos$1 at 0 (bvadd (bvmul local_id_x$1 #x00000004) #x00000003))))) (=> (and
+(=> _b9 (=> _READ_HAS_OCCURRED_$$localPos$1 at 0 (or
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 0) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvmul #x00000000 #x00000004)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 0) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000001)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 0) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000002)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 0) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000003)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1 at 0) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000003))))))
+(=> _b8 (not _WRITE_HAS_OCCURRED_$$localPos$1 at 0))) (=> (and
+(=> _b7 (not _READ_HAS_OCCURRED_$$localPos$1 at 0))
+(=> _b6 (=> _READ_HAS_OCCURRED_$$pos$1 at 4 (or
+(= (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) _READ_OFFSET_$$pos$1 at 4) (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) (bvmul (bvadd (bvmul #x00000000 group_size_x) local_id_x$1) #x00000004)))
+(= (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) _READ_OFFSET_$$pos$1 at 4) (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) (bvadd (bvmul (bvadd (bvmul #x00000000 group_size_x) local_id_x$1) #x00000004) #x00000001)))
+(= (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) _READ_OFFSET_$$pos$1 at 4) (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) (bvadd (bvmul (bvadd (bvmul #x00000000 group_size_x) local_id_x$1) #x00000004) #x00000002)))
+(= (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) _READ_OFFSET_$$pos$1 at 4) (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) (bvadd (bvmul (bvadd (bvmul #x00000000 group_size_x) local_id_x$1) #x00000004) #x00000003))))))
+(=> _b5 (not _READ_HAS_OCCURRED_$$pos$1 at 4))
+(=> _b4 (=> (and
+p0$1 at 1
+p0$2 at 1) (= $j.0$1 at 0 $j.0$2 at 0)))) (=> (and
+(=> _b3 (=> (and
+p0$1 at 1
+p0$2 at 1) (= $acc.1$1 at 0 $acc.1$2 at 0)))
+(=> _b2 (=> (and
+p0$1 at 1
+p0$2 at 1) (= $i.0$1 at 1 $i.0$2 at 1)))
+(=> _b1 (=> (and
+p0$1 at 1
+p0$2 at 1) (= $acc.0$1 at 1 $acc.0$2 at 1)))
+(=> _b0 (= p0$1 at 1 p0$2 at 1))
+(=> _READ_HAS_OCCURRED_$$vel$1 (or
+(= _READ_SOURCE_$$vel$1 #x00000005)
+(= _READ_SOURCE_$$vel$1 #x00000006)
+(= _READ_SOURCE_$$vel$1 #x00000007)
+(= _READ_SOURCE_$$vel$1 #x00000008)))
+(=> _WRITE_HAS_OCCURRED_$$vel$1 false)
+(=> (not _READ_HAS_OCCURRED_$$vel$1) (= _READ_SOURCE_$$vel$1 #x00000000))
+(=> (not _WRITE_HAS_OCCURRED_$$vel$1) (= _WRITE_SOURCE_$$vel$1 #x00000000))
+(=> _READ_HAS_OCCURRED_$$pos$1 at 4 (or
+(= _READ_SOURCE_$$pos$1 at 4 #x00000001)
+(= _READ_SOURCE_$$pos$1 at 4 #x00000002)
+(= _READ_SOURCE_$$pos$1 at 4 #x00000003)
+(= _READ_SOURCE_$$pos$1 at 4 #x00000004)
+(= _READ_SOURCE_$$pos$1 at 4 #x00000011)
+(= _READ_SOURCE_$$pos$1 at 4 #x00000012)
+(= _READ_SOURCE_$$pos$1 at 4 #x00000013)
+(= _READ_SOURCE_$$pos$1 at 4 #x00000014)))
+(=> _WRITE_HAS_OCCURRED_$$pos$1 false)
+(=> (not _READ_HAS_OCCURRED_$$pos$1 at 4) (= _READ_SOURCE_$$pos$1 at 4 #x00000000))
+(=> (not _WRITE_HAS_OCCURRED_$$pos$1) (= _WRITE_SOURCE_$$pos$1 #x00000000))
+(=> _READ_HAS_OCCURRED_$$localPos$1 at 0 (or
+(= _READ_SOURCE_$$localPos$1 at 0 #x00000019)
+(= _READ_SOURCE_$$localPos$1 at 0 #x0000001a)
+(= _READ_SOURCE_$$localPos$1 at 0 #x0000001b)
+(= _READ_SOURCE_$$localPos$1 at 0 #x0000001c)
+(= _READ_SOURCE_$$localPos$1 at 0 #x0000001d)))
+(=> _WRITE_HAS_OCCURRED_$$localPos$1 at 0 (or
+(= _WRITE_SOURCE_$$localPos$1 at 0 #x00000015)
+(= _WRITE_SOURCE_$$localPos$1 at 0 #x00000016)
+(= _WRITE_SOURCE_$$localPos$1 at 0 #x00000017)
+(= _WRITE_SOURCE_$$localPos$1 at 0 #x00000018)))
+(=> (not _READ_HAS_OCCURRED_$$localPos$1 at 0) (= _READ_SOURCE_$$localPos$1 at 0 #x00000000))
+(=> (not _WRITE_HAS_OCCURRED_$$localPos$1 at 0) (= _WRITE_SOURCE_$$localPos$1 at 0 #x00000000))
+(=> _READ_HAS_OCCURRED_$$newVelocity$1 false)
+(=> _WRITE_HAS_OCCURRED_$$newVelocity$1 (or
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000d)
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000e)
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000f)
+(= _WRITE_SOURCE_$$newVelocity$1 #x00000010)))
+(=> (not _READ_HAS_OCCURRED_$$newVelocity$1) (= _READ_SOURCE_$$newVelocity$1 #x00000000))
+(=> (not _WRITE_HAS_OCCURRED_$$newVelocity$1) (= _WRITE_SOURCE_$$newVelocity$1 #x00000000))
+(=> _READ_HAS_OCCURRED_$$newPosition$1 false)
+(=> _WRITE_HAS_OCCURRED_$$newPosition$1 (or
+(= _WRITE_SOURCE_$$newPosition$1 #x00000009)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000a)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000b)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000c)))
+(=> (not _READ_HAS_OCCURRED_$$newPosition$1) (= _READ_SOURCE_$$newPosition$1 #x00000000))
+(=> (not _WRITE_HAS_OCCURRED_$$newPosition$1) (= _WRITE_SOURCE_$$newPosition$1 #x00000000))
+(=> p0$1 at 1 _P$1)
+(=> p0$2 at 1 _P$2)
+(= v7$1 at 1 (ite p0$1 at 1 (bvult $i.0$1 at 1 (bvudiv $numBodies$1 v2$1 at 0)) v7$1 at 0))
+(= v7$2 at 1 (ite p0$2 at 1 (bvult $i.0$2 at 1 (bvudiv $numBodies$2 v2$2 at 0)) v7$2 at 0))
+(= p1$1 at 1 (ite p0$1 at 1 v7$1 at 1 false))
+(= p1$2 at 1 (ite p0$2 at 1 v7$2 at 1 false))
+(= p0$1 at 2 (ite p0$1 at 1 v7$1 at 1 p0$1 at 1))
+(= p0$2 at 2 (ite p0$2 at 1 v7$2 at 1 p0$2 at 1))) (and
+(or %lbl%@22153 (=> (= (ControlFlow 0 5925) (- 0 22153)) (=> p1$1 at 1 true)))
+(=> (=> p1$1 at 1 true) (=> (and
+(= v8$1 at 1 (ite p1$1 at 1 _HAVOC_bv32$1 at 5 v8$1 at 0))
+(= v8$2 at 1 (ite p1$2 at 1 _HAVOC_bv32$2 at 5 v8$2 at 0))
+(= (ControlFlow 0 5925) 5919)) inline$_LOG_READ_$$pos$4$Entry_correct))))))))))
+(let (($entry$4_correct (=> (and %lbl%+5843 true) (=> (= call1006formal at _offset$2 at 0 (bvadd (bvmul v1$2 at 0 #x00000004) #x00000003)) (and
+(or %lbl%@19579 (=> (= (ControlFlow 0 5843) (- 0 19579)) (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$pos$1
+(= _WRITE_OFFSET_$$pos$1 call1006formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$pos$1
+(= _WRITE_OFFSET_$$pos$1 call1006formal at _offset$2 at 0))) (=> (and
+(= $acc.0$1 at 0 (ite _P$1 #x00000000000000000000000000000000 $acc.0$1))
+(= $acc.0$2 at 0 (ite _P$2 #x00000000000000000000000000000000 $acc.0$2))
+(= $i.0$1 at 0 (ite _P$1 #x00000000 $i.0$1))
+(= $i.0$2 at 0 (ite _P$2 #x00000000 $i.0$2))
+(= p0$1 at 0 (ite _P$1 true false))
+(= p0$2 at 0 (ite _P$2 true false))) (and
+(or %lbl%@19676 (=> (= (ControlFlow 0 5843) (- 0 19676)) (=> _b10 (=> _WRITE_HAS_OCCURRED_$$localPos$1 (or
+(= _WRITE_OFFSET_$$localPos$1 (bvmul local_id_x$1 #x00000004))
+(= _WRITE_OFFSET_$$localPos$1 (bvadd (bvmul local_id_x$1 #x00000004) #x00000001))
+(= _WRITE_OFFSET_$$localPos$1 (bvadd (bvmul local_id_x$1 #x00000004) #x00000002))
+(= _WRITE_OFFSET_$$localPos$1 (bvadd (bvmul local_id_x$1 #x00000004) #x00000003)))))))
+(=> (=> _b10 (=> _WRITE_HAS_OCCURRED_$$localPos$1 (or
+(= _WRITE_OFFSET_$$localPos$1 (bvmul local_id_x$1 #x00000004))
+(= _WRITE_OFFSET_$$localPos$1 (bvadd (bvmul local_id_x$1 #x00000004) #x00000001))
+(= _WRITE_OFFSET_$$localPos$1 (bvadd (bvmul local_id_x$1 #x00000004) #x00000002))
+(= _WRITE_OFFSET_$$localPos$1 (bvadd (bvmul local_id_x$1 #x00000004) #x00000003))))) (and
+(or %lbl%@19742 (=> (= (ControlFlow 0 5843) (- 0 19742)) (=> _b9 (=> _READ_HAS_OCCURRED_$$localPos$1 (or
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvmul #x00000000 #x00000004)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000001)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000002)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000003)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000003))))))))
+(=> (=> _b9 (=> _READ_HAS_OCCURRED_$$localPos$1 (or
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvmul #x00000000 #x00000004)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000001)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000002)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000003)))
+(= (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) _READ_OFFSET_$$localPos$1) (bvand (bvsub (bvmul #x00000001 #x00000004) #x00000001) (bvadd (bvmul #x00000000 #x00000004) #x00000003)))))) (and
+(or %lbl%@19944 (=> (= (ControlFlow 0 5843) (- 0 19944)) (=> _b8 (not _WRITE_HAS_OCCURRED_$$localPos$1))))
+(=> (=> _b8 (not _WRITE_HAS_OCCURRED_$$localPos$1)) (and
+(or %lbl%@19952 (=> (= (ControlFlow 0 5843) (- 0 19952)) (=> _b7 (not _READ_HAS_OCCURRED_$$localPos$1))))
+(=> (=> _b7 (not _READ_HAS_OCCURRED_$$localPos$1)) (and
+(or %lbl%@19960 (=> (= (ControlFlow 0 5843) (- 0 19960)) (=> _b6 (=> _READ_HAS_OCCURRED_$$pos$1 at 3 (or
+(= (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) _READ_OFFSET_$$pos$1 at 3) (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) (bvmul (bvadd (bvmul #x00000000 group_size_x) local_id_x$1) #x00000004)))
+(= (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) _READ_OFFSET_$$pos$1 at 3) (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) (bvadd (bvmul (bvadd (bvmul #x00000000 group_size_x) local_id_x$1) #x00000004) #x00000001)))
+(= (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) _READ_OFFSET_$$pos$1 at 3) (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) (bvadd (bvmul (bvadd (bvmul #x00000000 group_size_x) local_id_x$1) #x00000004) #x00000002)))
+(= (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) _READ_OFFSET_$$pos$1 at 3) (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) (bvadd (bvmul (bvadd (bvmul #x00000000 group_size_x) local_id_x$1) #x00000004) #x00000003))))))))
+(=> (=> _b6 (=> _READ_HAS_OCCURRED_$$pos$1 at 3 (or
+(= (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) _READ_OFFSET_$$pos$1 at 3) (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) (bvmul (bvadd (bvmul #x00000000 group_size_x) local_id_x$1) #x00000004)))
+(= (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) _READ_OFFSET_$$pos$1 at 3) (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) (bvadd (bvmul (bvadd (bvmul #x00000000 group_size_x) local_id_x$1) #x00000004) #x00000001)))
+(= (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) _READ_OFFSET_$$pos$1 at 3) (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) (bvadd (bvmul (bvadd (bvmul #x00000000 group_size_x) local_id_x$1) #x00000004) #x00000002)))
+(= (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) _READ_OFFSET_$$pos$1 at 3) (bvand (bvsub (bvmul (bvmul #x00000001 group_size_x) #x00000004) #x00000001) (bvadd (bvmul (bvadd (bvmul #x00000000 group_size_x) local_id_x$1) #x00000004) #x00000003)))))) (and
+(or %lbl%@20181 (=> (= (ControlFlow 0 5843) (- 0 20181)) (=> _b5 (not _READ_HAS_OCCURRED_$$pos$1 at 3))))
+(=> (=> _b5 (not _READ_HAS_OCCURRED_$$pos$1 at 3)) (and
+(or %lbl%@20188 (=> (= (ControlFlow 0 5843) (- 0 20188)) (=> _b4 (=> (and
+p0$1 at 0
+p0$2 at 0) (= $j.0$1 $j.0$2)))))
+(=> (=> _b4 (=> (and
+p0$1 at 0
+p0$2 at 0) (= $j.0$1 $j.0$2))) (and
+(or %lbl%@20204 (=> (= (ControlFlow 0 5843) (- 0 20204)) (=> _b3 (=> (and
+p0$1 at 0
+p0$2 at 0) (= $acc.1$1 $acc.1$2)))))
+(=> (=> _b3 (=> (and
+p0$1 at 0
+p0$2 at 0) (= $acc.1$1 $acc.1$2))) (and
+(or %lbl%@20220 (=> (= (ControlFlow 0 5843) (- 0 20220)) (=> _b2 (=> (and
+p0$1 at 0
+p0$2 at 0) (= $i.0$1 at 0 $i.0$2 at 0)))))
+(=> (=> _b2 (=> (and
+p0$1 at 0
+p0$2 at 0) (= $i.0$1 at 0 $i.0$2 at 0))) (and
+(or %lbl%@20234 (=> (= (ControlFlow 0 5843) (- 0 20234)) (=> _b1 (=> (and
+p0$1 at 0
+p0$2 at 0) (= $acc.0$1 at 0 $acc.0$2 at 0)))))
+(=> (=> _b1 (=> (and
+p0$1 at 0
+p0$2 at 0) (= $acc.0$1 at 0 $acc.0$2 at 0))) (and
+(or %lbl%@20248 (=> (= (ControlFlow 0 5843) (- 0 20248)) (=> _b0 (= p0$1 at 0 p0$2 at 0))))
+(=> (=> _b0 (= p0$1 at 0 p0$2 at 0)) (and
+(or %lbl%@20256 (=> (= (ControlFlow 0 5843) (- 0 20256)) (=> _READ_HAS_OCCURRED_$$vel$1 (or
+(= _READ_SOURCE_$$vel$1 #x00000005)
+(= _READ_SOURCE_$$vel$1 #x00000006)
+(= _READ_SOURCE_$$vel$1 #x00000007)
+(= _READ_SOURCE_$$vel$1 #x00000008)))))
+(=> (=> _READ_HAS_OCCURRED_$$vel$1 (or
+(= _READ_SOURCE_$$vel$1 #x00000005)
+(= _READ_SOURCE_$$vel$1 #x00000006)
+(= _READ_SOURCE_$$vel$1 #x00000007)
+(= _READ_SOURCE_$$vel$1 #x00000008))) (and
+(or %lbl%@20290 (=> (= (ControlFlow 0 5843) (- 0 20290)) (=> _WRITE_HAS_OCCURRED_$$vel$1 false)))
+(=> (=> _WRITE_HAS_OCCURRED_$$vel$1 false) (and
+(or %lbl%@20296 (=> (= (ControlFlow 0 5843) (- 0 20296)) (=> (not _READ_HAS_OCCURRED_$$vel$1) (= _READ_SOURCE_$$vel$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$vel$1) (= _READ_SOURCE_$$vel$1 #x00000000)) (and
+(or %lbl%@20308 (=> (= (ControlFlow 0 5843) (- 0 20308)) (=> (not _WRITE_HAS_OCCURRED_$$vel$1) (= _WRITE_SOURCE_$$vel$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$vel$1) (= _WRITE_SOURCE_$$vel$1 #x00000000)) (and
+(or %lbl%@20320 (=> (= (ControlFlow 0 5843) (- 0 20320)) (=> _READ_HAS_OCCURRED_$$pos$1 at 3 (or
+(= _READ_SOURCE_$$pos$1 at 3 #x00000001)
+(= _READ_SOURCE_$$pos$1 at 3 #x00000002)
+(= _READ_SOURCE_$$pos$1 at 3 #x00000003)
+(= _READ_SOURCE_$$pos$1 at 3 #x00000004)
+(= _READ_SOURCE_$$pos$1 at 3 #x00000011)
+(= _READ_SOURCE_$$pos$1 at 3 #x00000012)
+(= _READ_SOURCE_$$pos$1 at 3 #x00000013)
+(= _READ_SOURCE_$$pos$1 at 3 #x00000014)))))
+(=> (=> _READ_HAS_OCCURRED_$$pos$1 at 3 (or
+(= _READ_SOURCE_$$pos$1 at 3 #x00000001)
+(= _READ_SOURCE_$$pos$1 at 3 #x00000002)
+(= _READ_SOURCE_$$pos$1 at 3 #x00000003)
+(= _READ_SOURCE_$$pos$1 at 3 #x00000004)
+(= _READ_SOURCE_$$pos$1 at 3 #x00000011)
+(= _READ_SOURCE_$$pos$1 at 3 #x00000012)
+(= _READ_SOURCE_$$pos$1 at 3 #x00000013)
+(= _READ_SOURCE_$$pos$1 at 3 #x00000014))) (and
+(or %lbl%@20377 (=> (= (ControlFlow 0 5843) (- 0 20377)) (=> _WRITE_HAS_OCCURRED_$$pos$1 false)))
+(=> (=> _WRITE_HAS_OCCURRED_$$pos$1 false) (and
+(or %lbl%@20383 (=> (= (ControlFlow 0 5843) (- 0 20383)) (=> (not _READ_HAS_OCCURRED_$$pos$1 at 3) (= _READ_SOURCE_$$pos$1 at 3 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$pos$1 at 3) (= _READ_SOURCE_$$pos$1 at 3 #x00000000)) (and
+(or %lbl%@20393 (=> (= (ControlFlow 0 5843) (- 0 20393)) (=> (not _WRITE_HAS_OCCURRED_$$pos$1) (= _WRITE_SOURCE_$$pos$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$pos$1) (= _WRITE_SOURCE_$$pos$1 #x00000000)) (and
+(or %lbl%@20405 (=> (= (ControlFlow 0 5843) (- 0 20405)) (=> _READ_HAS_OCCURRED_$$localPos$1 (or
+(= _READ_SOURCE_$$localPos$1 #x00000019)
+(= _READ_SOURCE_$$localPos$1 #x0000001a)
+(= _READ_SOURCE_$$localPos$1 #x0000001b)
+(= _READ_SOURCE_$$localPos$1 #x0000001c)
+(= _READ_SOURCE_$$localPos$1 #x0000001d)))))
+(=> (=> _READ_HAS_OCCURRED_$$localPos$1 (or
+(= _READ_SOURCE_$$localPos$1 #x00000019)
+(= _READ_SOURCE_$$localPos$1 #x0000001a)
+(= _READ_SOURCE_$$localPos$1 #x0000001b)
+(= _READ_SOURCE_$$localPos$1 #x0000001c)
+(= _READ_SOURCE_$$localPos$1 #x0000001d))) (and
+(or %lbl%@20447 (=> (= (ControlFlow 0 5843) (- 0 20447)) (=> _WRITE_HAS_OCCURRED_$$localPos$1 (or
+(= _WRITE_SOURCE_$$localPos$1 #x00000015)
+(= _WRITE_SOURCE_$$localPos$1 #x00000016)
+(= _WRITE_SOURCE_$$localPos$1 #x00000017)
+(= _WRITE_SOURCE_$$localPos$1 #x00000018)))))
+(=> (=> _WRITE_HAS_OCCURRED_$$localPos$1 (or
+(= _WRITE_SOURCE_$$localPos$1 #x00000015)
+(= _WRITE_SOURCE_$$localPos$1 #x00000016)
+(= _WRITE_SOURCE_$$localPos$1 #x00000017)
+(= _WRITE_SOURCE_$$localPos$1 #x00000018))) (and
+(or %lbl%@20481 (=> (= (ControlFlow 0 5843) (- 0 20481)) (=> (not _READ_HAS_OCCURRED_$$localPos$1) (= _READ_SOURCE_$$localPos$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$localPos$1) (= _READ_SOURCE_$$localPos$1 #x00000000)) (and
+(or %lbl%@20493 (=> (= (ControlFlow 0 5843) (- 0 20493)) (=> (not _WRITE_HAS_OCCURRED_$$localPos$1) (= _WRITE_SOURCE_$$localPos$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$localPos$1) (= _WRITE_SOURCE_$$localPos$1 #x00000000)) (and
+(or %lbl%@20505 (=> (= (ControlFlow 0 5843) (- 0 20505)) (=> _READ_HAS_OCCURRED_$$newVelocity$1 false)))
+(=> (=> _READ_HAS_OCCURRED_$$newVelocity$1 false) (and
+(or %lbl%@20511 (=> (= (ControlFlow 0 5843) (- 0 20511)) (=> _WRITE_HAS_OCCURRED_$$newVelocity$1 (or
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000d)
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000e)
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000f)
+(= _WRITE_SOURCE_$$newVelocity$1 #x00000010)))))
+(=> (=> _WRITE_HAS_OCCURRED_$$newVelocity$1 (or
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000d)
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000e)
+(= _WRITE_SOURCE_$$newVelocity$1 #x0000000f)
+(= _WRITE_SOURCE_$$newVelocity$1 #x00000010))) (and
+(or %lbl%@20545 (=> (= (ControlFlow 0 5843) (- 0 20545)) (=> (not _READ_HAS_OCCURRED_$$newVelocity$1) (= _READ_SOURCE_$$newVelocity$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$newVelocity$1) (= _READ_SOURCE_$$newVelocity$1 #x00000000)) (and
+(or %lbl%@20557 (=> (= (ControlFlow 0 5843) (- 0 20557)) (=> (not _WRITE_HAS_OCCURRED_$$newVelocity$1) (= _WRITE_SOURCE_$$newVelocity$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$newVelocity$1) (= _WRITE_SOURCE_$$newVelocity$1 #x00000000)) (and
+(or %lbl%@20569 (=> (= (ControlFlow 0 5843) (- 0 20569)) (=> _READ_HAS_OCCURRED_$$newPosition$1 false)))
+(=> (=> _READ_HAS_OCCURRED_$$newPosition$1 false) (and
+(or %lbl%@20575 (=> (= (ControlFlow 0 5843) (- 0 20575)) (=> _WRITE_HAS_OCCURRED_$$newPosition$1 (or
+(= _WRITE_SOURCE_$$newPosition$1 #x00000009)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000a)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000b)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000c)))))
+(=> (=> _WRITE_HAS_OCCURRED_$$newPosition$1 (or
+(= _WRITE_SOURCE_$$newPosition$1 #x00000009)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000a)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000b)
+(= _WRITE_SOURCE_$$newPosition$1 #x0000000c))) (and
+(or %lbl%@20609 (=> (= (ControlFlow 0 5843) (- 0 20609)) (=> (not _READ_HAS_OCCURRED_$$newPosition$1) (= _READ_SOURCE_$$newPosition$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$newPosition$1) (= _READ_SOURCE_$$newPosition$1 #x00000000)) (and
+(or %lbl%@20621 (=> (= (ControlFlow 0 5843) (- 0 20621)) (=> (not _WRITE_HAS_OCCURRED_$$newPosition$1) (= _WRITE_SOURCE_$$newPosition$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$newPosition$1) (= _WRITE_SOURCE_$$newPosition$1 #x00000000)) (and
+(or %lbl%@20633 (=> (= (ControlFlow 0 5843) (- 0 20633)) (=> p0$1 at 0 _P$1)))
+(=> (=> p0$1 at 0 _P$1) (and
+(or %lbl%@20638 (=> (= (ControlFlow 0 5843) (- 0 20638)) (=> p0$2 at 0 _P$2)))
+(=> (=> p0$2 at 0 _P$2) (=> (= (ControlFlow 0 5843) 5925) $for.cond_correct))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+(let ((inline$_LOG_READ_$$pos$3$_LOG_READ_correct (=> (and %lbl%+5837 true) (=> (and
+(= _READ_HAS_OCCURRED_$$pos$1 at 3 (ite (and
+_P$1
+inline$_LOG_READ_$$pos$3$track at 0) true _READ_HAS_OCCURRED_$$pos$1 at 2))
+(= _READ_OFFSET_$$pos$1 at 3 (ite (and
+_P$1
+inline$_LOG_READ_$$pos$3$track at 0) inline$_LOG_READ_$$pos$3$_offset$1 at 0 _READ_OFFSET_$$pos$1 at 2))
+(= _READ_SOURCE_$$pos$1 at 3 (ite (and
+_P$1
+inline$_LOG_READ_$$pos$3$track at 0) #x00000004 _READ_SOURCE_$$pos$1 at 2))
+(= (ControlFlow 0 5837) 5843)) $entry$4_correct))))
+(let ((inline$_LOG_READ_$$pos$3$Entry_correct (=> (and %lbl%+5835 true) (=> (and
+(= inline$_LOG_READ_$$pos$3$_offset$1 at 0 (bvadd (bvmul v1$1 at 0 #x00000004) #x00000003))
+(= (ControlFlow 0 5835) 5837)) inline$_LOG_READ_$$pos$3$_LOG_READ_correct))))
+(let (($entry$3_correct (=> (and %lbl%+5841 true) (=> (= call953formal at _offset$2 at 0 (bvadd (bvmul v1$2 at 0 #x00000004) #x00000002)) (and
+(or %lbl%@19437 (=> (= (ControlFlow 0 5841) (- 0 19437)) (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$pos$1
+(= _WRITE_OFFSET_$$pos$1 call953formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$pos$1
+(= _WRITE_OFFSET_$$pos$1 call953formal at _offset$2 at 0))) (and
+(or %lbl%@19451 (=> (= (ControlFlow 0 5841) (- 0 19451)) (=> _P$1 true)))
+(=> (=> _P$1 true) (=> (and
+(= v6$1 at 0 (ite _P$1 _HAVOC_bv32$1 at 3 v6$1))
+(= v6$2 at 0 (ite _P$2 _HAVOC_bv32$2 at 3 v6$2))
+(= (ControlFlow 0 5841) 5835)) inline$_LOG_READ_$$pos$3$Entry_correct)))))))))
+(let ((inline$_LOG_READ_$$pos$2$_LOG_READ_correct (=> (and %lbl%+5755 true) (=> (and
+(= _READ_HAS_OCCURRED_$$pos$1 at 2 (ite (and
+_P$1
+inline$_LOG_READ_$$pos$2$track at 0) true _READ_HAS_OCCURRED_$$pos$1 at 1))
+(= _READ_OFFSET_$$pos$1 at 2 (ite (and
+_P$1
+inline$_LOG_READ_$$pos$2$track at 0) inline$_LOG_READ_$$pos$2$_offset$1 at 0 _READ_OFFSET_$$pos$1 at 1))
+(= _READ_SOURCE_$$pos$1 at 2 (ite (and
+_P$1
+inline$_LOG_READ_$$pos$2$track at 0) #x00000003 _READ_SOURCE_$$pos$1 at 1))
+(= (ControlFlow 0 5755) 5841)) $entry$3_correct))))
+(let ((inline$_LOG_READ_$$pos$2$Entry_correct (=> (and %lbl%+5753 true) (=> (and
+(= inline$_LOG_READ_$$pos$2$_offset$1 at 0 (bvadd (bvmul v1$1 at 0 #x00000004) #x00000002))
+(= (ControlFlow 0 5753) 5755)) inline$_LOG_READ_$$pos$2$_LOG_READ_correct))))
+(let (($entry$2_correct (=> (and %lbl%+5759 true) (=> (= call900formal at _offset$2 at 0 (bvadd (bvmul v1$2 at 0 #x00000004) #x00000001)) (and
+(or %lbl%@19295 (=> (= (ControlFlow 0 5759) (- 0 19295)) (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$pos$1
+(= _WRITE_OFFSET_$$pos$1 call900formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$pos$1
+(= _WRITE_OFFSET_$$pos$1 call900formal at _offset$2 at 0))) (and
+(or %lbl%@19309 (=> (= (ControlFlow 0 5759) (- 0 19309)) (=> _P$1 true)))
+(=> (=> _P$1 true) (=> (and
+(= v5$1 at 0 (ite _P$1 _HAVOC_bv32$1 at 2 v5$1))
+(= v5$2 at 0 (ite _P$2 _HAVOC_bv32$2 at 2 v5$2))
+(= (ControlFlow 0 5759) 5753)) inline$_LOG_READ_$$pos$2$Entry_correct)))))))))
+(let ((inline$_LOG_READ_$$pos$1$_LOG_READ_correct (=> (and %lbl%+5673 true) (=> (and
+(= _READ_HAS_OCCURRED_$$pos$1 at 1 (ite (and
+_P$1
+inline$_LOG_READ_$$pos$1$track at 0) true _READ_HAS_OCCURRED_$$pos$1 at 0))
+(= _READ_OFFSET_$$pos$1 at 1 (ite (and
+_P$1
+inline$_LOG_READ_$$pos$1$track at 0) inline$_LOG_READ_$$pos$1$_offset$1 at 0 _READ_OFFSET_$$pos$1 at 0))
+(= _READ_SOURCE_$$pos$1 at 1 (ite (and
+_P$1
+inline$_LOG_READ_$$pos$1$track at 0) #x00000002 _READ_SOURCE_$$pos$1 at 0))
+(= (ControlFlow 0 5673) 5759)) $entry$2_correct))))
+(let ((inline$_LOG_READ_$$pos$1$Entry_correct (=> (and %lbl%+5671 true) (=> (and
+(= inline$_LOG_READ_$$pos$1$_offset$1 at 0 (bvadd (bvmul v1$1 at 0 #x00000004) #x00000001))
+(= (ControlFlow 0 5671) 5673)) inline$_LOG_READ_$$pos$1$_LOG_READ_correct))))
+(let (($entry$1_correct (=> (and %lbl%+5677 true) (=> (= call847formal at _offset$2 at 0 (bvmul v1$2 at 0 #x00000004)) (and
+(or %lbl%@19153 (=> (= (ControlFlow 0 5677) (- 0 19153)) (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$pos$1
+(= _WRITE_OFFSET_$$pos$1 call847formal at _offset$2 at 0)))))
+(=> (not (and
+_P$2
+_WRITE_HAS_OCCURRED_$$pos$1
+(= _WRITE_OFFSET_$$pos$1 call847formal at _offset$2 at 0))) (and
+(or %lbl%@19167 (=> (= (ControlFlow 0 5677) (- 0 19167)) (=> _P$1 true)))
+(=> (=> _P$1 true) (=> (and
+(= v4$1 at 0 (ite _P$1 _HAVOC_bv32$1 at 1 v4$1))
+(= v4$2 at 0 (ite _P$2 _HAVOC_bv32$2 at 1 v4$2))
+(= (ControlFlow 0 5677) 5671)) inline$_LOG_READ_$$pos$1$Entry_correct)))))))))
+(let ((inline$_LOG_READ_$$pos$0$_LOG_READ_correct (=> (and %lbl%+5591 true) (=> (and
+(= _READ_HAS_OCCURRED_$$pos$1 at 0 (ite (and
+_P$1
+inline$_LOG_READ_$$pos$0$track at 0) true _READ_HAS_OCCURRED_$$pos$1))
+(= _READ_OFFSET_$$pos$1 at 0 (ite (and
+_P$1
+inline$_LOG_READ_$$pos$0$track at 0) inline$_LOG_READ_$$pos$0$_offset$1 at 0 _READ_OFFSET_$$pos$1))
+(= _READ_SOURCE_$$pos$1 at 0 (ite (and
+_P$1
+inline$_LOG_READ_$$pos$0$track at 0) #x00000001 _READ_SOURCE_$$pos$1))
+(= (ControlFlow 0 5591) 5677)) $entry$1_correct))))
+(let ((inline$_LOG_READ_$$pos$0$Entry_correct (=> (and %lbl%+5589 true) (=> (and
+(= inline$_LOG_READ_$$pos$0$_offset$1 at 0 (bvmul v1$1 at 0 #x00000004))
+(= (ControlFlow 0 5589) 5591)) inline$_LOG_READ_$$pos$0$_LOG_READ_correct))))
+(let (($entry_correct (=> (and %lbl%+5595 true) (=> (and
+(= v0$1 at 0 (ite _P$1 local_id_x$1 v0$1))
+(= v0$2 at 0 (ite _P$2 local_id_x$2 v0$2))) (=> (and
+(= v1$1 at 0 (ite _P$1 (bvadd (bvmul group_size_x group_id_x$1) local_id_x$1) v1$1))
+(= v1$2 at 0 (ite _P$2 (bvadd (bvmul group_size_x group_id_x$2) local_id_x$2) v1$2))
+(= v2$1 at 0 (ite _P$1 group_size_x v2$1))
+(= v2$2 at 0 (ite _P$2 group_size_x v2$2))) (and
+(or %lbl%@19027 (=> (= (ControlFlow 0 5595) (- 0 19027)) (=> _P$1 true)))
+(=> (=> _P$1 true) (=> (and
+(= v3$1 at 0 (ite _P$1 _HAVOC_bv32$1 at 0 v3$1))
+(= v3$2 at 0 (ite _P$2 _HAVOC_bv32$2 at 0 v3$2))
+(= (ControlFlow 0 5595) 5589)) inline$_LOG_READ_$$pos$0$Entry_correct))))))))
+(let ((PreconditionGeneratedEntry_correct (=> (and %lbl%+17409 true) (=> (and
+(not _READ_HAS_OCCURRED_$$pos$1)
+(not _WRITE_HAS_OCCURRED_$$pos$1)
+(= _READ_SOURCE_$$pos$1 #x00000000)
+(= _WRITE_SOURCE_$$pos$1 #x00000000)
+(not _READ_HAS_OCCURRED_$$vel$1)
+(not _WRITE_HAS_OCCURRED_$$vel$1)
+(= _READ_SOURCE_$$vel$1 #x00000000)
+(= _WRITE_SOURCE_$$vel$1 #x00000000)) (=> (and
+(not _READ_HAS_OCCURRED_$$newPosition$1)
+(not _WRITE_HAS_OCCURRED_$$newPosition$1)
+(= _READ_SOURCE_$$newPosition$1 #x00000000)
+(= _WRITE_SOURCE_$$newPosition$1 #x00000000)
+(not _READ_HAS_OCCURRED_$$newVelocity$1)
+(not _WRITE_HAS_OCCURRED_$$newVelocity$1)
+(= _READ_SOURCE_$$newVelocity$1 #x00000000)
+(= _WRITE_SOURCE_$$newVelocity$1 #x00000000)
+(not _READ_HAS_OCCURRED_$$localPos$1)
+(not _WRITE_HAS_OCCURRED_$$localPos$1)
+(= _READ_SOURCE_$$localPos$1 #x00000000)
+(= _WRITE_SOURCE_$$localPos$1 #x00000000)
+(bvsgt group_size_x #x00000000)
+(bvsgt num_groups_x #x00000000)
+(bvsge group_id_x$1 #x00000000)
+(bvsge group_id_x$2 #x00000000)) (=> (and
+(bvslt group_id_x$1 num_groups_x)
+(bvslt group_id_x$2 num_groups_x)
+(bvsge local_id_x$1 #x00000000)
+(bvsge local_id_x$2 #x00000000)
+(bvslt local_id_x$1 group_size_x)
+(bvslt local_id_x$2 group_size_x)
+(bvsgt group_size_y #x00000000)
+(bvsgt num_groups_y #x00000000)
+(bvsge group_id_y$1 #x00000000)
+(bvsge group_id_y$2 #x00000000)
+(bvslt group_id_y$1 num_groups_y)
+(bvslt group_id_y$2 num_groups_y)
+(bvsge local_id_y$1 #x00000000)
+(bvsge local_id_y$2 #x00000000)
+(bvslt local_id_y$1 group_size_y)
+(bvslt local_id_y$2 group_size_y)
+(bvsgt group_size_z #x00000000)
+(bvsgt num_groups_z #x00000000)
+(bvsge group_id_z$1 #x00000000)
+(bvsge group_id_z$2 #x00000000)
+(bvslt group_id_z$1 num_groups_z)
+(bvslt group_id_z$2 num_groups_z)
+(bvsge local_id_z$1 #x00000000)
+(bvsge local_id_z$2 #x00000000)
+(bvslt local_id_z$1 group_size_z)
+(bvslt local_id_z$2 group_size_z)
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (or
+(not (= local_id_x$1 local_id_x$2))
+(not (= local_id_y$1 local_id_y$2))
+(not (= local_id_z$1 local_id_z$2))))
+(= _P$1 _P$2)
+(= $numBodies$1 $numBodies$2)
+(= $deltaTime$1 $deltaTime$2)
+(= $epsSqr$1 $epsSqr$2)
+(= (ControlFlow 0 17409) 5595)) $entry_correct))))))
+PreconditionGeneratedEntry_correct)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+(push 1)
+;(set-info :boogie-vc-id $nbody_sim)
+(assert (not
+(=> (and
+true
+_b0
+_b1
+_b2
+_b3
+_b4
+_b5
+_b6
+_b7
+_b8
+_b9
+_b10
+_b11) $nbody_sim)
+))
+(check-sat)
+;(get-value ((ControlFlow 0 0)))
+;(get-value ((ControlFlow 0 17409)))
+;(get-value ((ControlFlow 0 5595)))
+;(get-value ((ControlFlow 0 5589)))
+;(get-value ((ControlFlow 0 5591)))
+;(get-value ((ControlFlow 0 5677)))
+;(get-value ((ControlFlow 0 5671)))
+;(get-value ((ControlFlow 0 5673)))
+;(get-value ((ControlFlow 0 5759)))
+;(get-value ((ControlFlow 0 5753)))
+;(get-value ((ControlFlow 0 5755)))
+;(get-value ((ControlFlow 0 5841)))
+;(get-value ((ControlFlow 0 5835)))
+;(get-value ((ControlFlow 0 5837)))
+;(get-value ((ControlFlow 0 5843)))
+(assert (not (= (ControlFlow 0 5843) (- 20181))))
+(check-sat)
+;(get-value ((ControlFlow 0 0)))
+;(get-value ((ControlFlow 0 17409)))
+;(get-value ((ControlFlow 0 5595)))
+;(get-value ((ControlFlow 0 5589)))
+;(get-value ((ControlFlow 0 5591)))
+;(get-value ((ControlFlow 0 5677)))
+;(get-value ((ControlFlow 0 5671)))
+;(get-value ((ControlFlow 0 5673)))
+;(get-value ((ControlFlow 0 5759)))
+;(get-value ((ControlFlow 0 5753)))
+;(get-value ((ControlFlow 0 5755)))
+;(get-value ((ControlFlow 0 5841)))
+;(get-value ((ControlFlow 0 5835)))
+;(get-value ((ControlFlow 0 5837)))
+;(get-value ((ControlFlow 0 5843)))
+(assert (not (= (ControlFlow 0 5843) (- 20188))))
+(check-sat)
+;(get-value ((ControlFlow 0 0)))
+;(get-value ((ControlFlow 0 17409)))
+;(get-value ((ControlFlow 0 5595)))
+;(get-value ((ControlFlow 0 5589)))
+;(get-value ((ControlFlow 0 5591)))
+;(get-value ((ControlFlow 0 5677)))
+;(get-value ((ControlFlow 0 5671)))
+;(get-value ((ControlFlow 0 5673)))
+;(get-value ((ControlFlow 0 5759)))
+;(get-value ((ControlFlow 0 5753)))
+;(get-value ((ControlFlow 0 5755)))
+;(get-value ((ControlFlow 0 5841)))
+;(get-value ((ControlFlow 0 5835)))
+;(get-value ((ControlFlow 0 5837)))
+;(get-value ((ControlFlow 0 5843)))
+(assert (not (= (ControlFlow 0 5843) (- 20204))))
+(check-sat)
+;(get-value ((ControlFlow 0 0)))
+;(get-value ((ControlFlow 0 17409)))
+;(get-value ((ControlFlow 0 5595)))
+;(get-value ((ControlFlow 0 5589)))
+;(get-value ((ControlFlow 0 5591)))
+;(get-value ((ControlFlow 0 5677)))
+;(get-value ((ControlFlow 0 5671)))
+;(get-value ((ControlFlow 0 5673)))
+;(get-value ((ControlFlow 0 5759)))
+;(get-value ((ControlFlow 0 5753)))
+;(get-value ((ControlFlow 0 5755)))
+;(get-value ((ControlFlow 0 5841)))
+;(get-value ((ControlFlow 0 5835)))
+;(get-value ((ControlFlow 0 5837)))
+;(get-value ((ControlFlow 0 5843)))
+;(get-value ((ControlFlow 0 5925)))
+;(get-value ((ControlFlow 0 5919)))
+;(get-value ((ControlFlow 0 5921)))
+;(get-value ((ControlFlow 0 6007)))
+;(get-value ((ControlFlow 0 6001)))
+;(get-value ((ControlFlow 0 6003)))
+;(get-value ((ControlFlow 0 6089)))
+;(get-value ((ControlFlow 0 6083)))
+;(get-value ((ControlFlow 0 6085)))
+;(get-value ((ControlFlow 0 6171)))
+;(get-value ((ControlFlow 0 6165)))
+;(get-value ((ControlFlow 0 6167)))
+;(get-value ((ControlFlow 0 6253)))
+;(get-value ((ControlFlow 0 6247)))
+;(get-value ((ControlFlow 0 6249)))
+;(get-value ((ControlFlow 0 6335)))
+;(get-value ((ControlFlow 0 6329)))
+;(get-value ((ControlFlow 0 6331)))
+;(get-value ((ControlFlow 0 6417)))
+;(get-value ((ControlFlow 0 6411)))
+;(get-value ((ControlFlow 0 6413)))
+;(get-value ((ControlFlow 0 6499)))
+;(get-value ((ControlFlow 0 6493)))
+;(get-value ((ControlFlow 0 6495)))
+;(get-value ((ControlFlow 0 7034)))
+;(get-value ((ControlFlow 0 7002)))
+;(get-value ((ControlFlow 0 7006)))
+;(get-value ((ControlFlow 0 7028)))
+;(get-value ((ControlFlow 0 7026)))
+;(get-value ((ControlFlow 0 7016)))
+;(get-value ((ControlFlow 0 7018)))
+;(get-value ((ControlFlow 0 7020)))
+;(get-value ((ControlFlow 0 7032)))
+;(get-value ((ControlFlow 0 7036)))
+;(get-value ((ControlFlow 0 7118)))
+;(get-value ((ControlFlow 0 7112)))
+;(get-value ((ControlFlow 0 7114)))
+;(get-value ((ControlFlow 0 7200)))
+;(get-value ((ControlFlow 0 7194)))
+;(get-value ((ControlFlow 0 7196)))
+;(get-value ((ControlFlow 0 7282)))
+;(get-value ((ControlFlow 0 7276)))
+;(get-value ((ControlFlow 0 7278)))
+;(get-value ((ControlFlow 0 7364)))
+;(get-value ((ControlFlow 0 7358)))
+;(get-value ((ControlFlow 0 7360)))
+;(get-value ((ControlFlow 0 7446)))
+;(get-value ((ControlFlow 0 7440)))
+;(get-value ((ControlFlow 0 7442)))
+;(get-value ((ControlFlow 0 7448)))
+;(get-value ((ControlFlow 0 7983)))
+;(get-value ((ControlFlow 0 7951)))
+;(get-value ((ControlFlow 0 7955)))
+;(get-value ((ControlFlow 0 7977)))
+;(get-value ((ControlFlow 0 7975)))
+;(get-value ((ControlFlow 0 7965)))
+;(get-value ((ControlFlow 0 7967)))
+;(get-value ((ControlFlow 0 7969)))
+;(get-value ((ControlFlow 0 7981)))
+;(get-value ((ControlFlow 0 7985)))
+;(get-value ((ControlFlow 0 8973)))
+(assert (not (= (ControlFlow 0 8973) (- 28090))))
+(check-sat)
+;(get-value ((ControlFlow 0 0)))
+;(get-value ((ControlFlow 0 17409)))
+;(get-value ((ControlFlow 0 5595)))
+;(get-value ((ControlFlow 0 5589)))
+;(get-value ((ControlFlow 0 5591)))
+;(get-value ((ControlFlow 0 5677)))
+;(get-value ((ControlFlow 0 5671)))
+;(get-value ((ControlFlow 0 5673)))
+;(get-value ((ControlFlow 0 5759)))
+;(get-value ((ControlFlow 0 5753)))
+;(get-value ((ControlFlow 0 5755)))
+;(get-value ((ControlFlow 0 5841)))
+;(get-value ((ControlFlow 0 5835)))
+;(get-value ((ControlFlow 0 5837)))
+;(get-value ((ControlFlow 0 5843)))
+;(get-value ((ControlFlow 0 5925)))
+;(get-value ((ControlFlow 0 5919)))
+;(get-value ((ControlFlow 0 5921)))
+;(get-value ((ControlFlow 0 6007)))
+;(get-value ((ControlFlow 0 6001)))
+;(get-value ((ControlFlow 0 6003)))
+;(get-value ((ControlFlow 0 6089)))
+;(get-value ((ControlFlow 0 6083)))
+;(get-value ((ControlFlow 0 6085)))
+;(get-value ((ControlFlow 0 6171)))
+;(get-value ((ControlFlow 0 6165)))
+;(get-value ((ControlFlow 0 6167)))
+;(get-value ((ControlFlow 0 6253)))
+;(get-value ((ControlFlow 0 6247)))
+;(get-value ((ControlFlow 0 6249)))
+;(get-value ((ControlFlow 0 6335)))
+;(get-value ((ControlFlow 0 6329)))
+;(get-value ((ControlFlow 0 6331)))
+;(get-value ((ControlFlow 0 6417)))
+;(get-value ((ControlFlow 0 6411)))
+;(get-value ((ControlFlow 0 6413)))
+;(get-value ((ControlFlow 0 6499)))
+;(get-value ((ControlFlow 0 6493)))
+;(get-value ((ControlFlow 0 6495)))
+;(get-value ((ControlFlow 0 7034)))
+;(get-value ((ControlFlow 0 7002)))
+;(get-value ((ControlFlow 0 7006)))
+;(get-value ((ControlFlow 0 7028)))
+;(get-value ((ControlFlow 0 7026)))
+;(get-value ((ControlFlow 0 7016)))
+;(get-value ((ControlFlow 0 7018)))
+;(get-value ((ControlFlow 0 7020)))
+;(get-value ((ControlFlow 0 7032)))
+;(get-value ((ControlFlow 0 7036)))
+;(get-value ((ControlFlow 0 7118)))
+;(get-value ((ControlFlow 0 7112)))
+;(get-value ((ControlFlow 0 7114)))
+;(get-value ((ControlFlow 0 7200)))
+;(get-value ((ControlFlow 0 7194)))
+;(get-value ((ControlFlow 0 7196)))
+;(get-value ((ControlFlow 0 7282)))
+;(get-value ((ControlFlow 0 7276)))
+;(get-value ((ControlFlow 0 7278)))
+;(get-value ((ControlFlow 0 7364)))
+;(get-value ((ControlFlow 0 7358)))
+;(get-value ((ControlFlow 0 7360)))
+;(get-value ((ControlFlow 0 7446)))
+;(get-value ((ControlFlow 0 7440)))
+;(get-value ((ControlFlow 0 7442)))
+;(get-value ((ControlFlow 0 7448)))
+;(get-value ((ControlFlow 0 7983)))
+;(get-value ((ControlFlow 0 7951)))
+;(get-value ((ControlFlow 0 7955)))
+;(get-value ((ControlFlow 0 7977)))
+;(get-value ((ControlFlow 0 7975)))
+;(get-value ((ControlFlow 0 7965)))
+;(get-value ((ControlFlow 0 7967)))
+;(get-value ((ControlFlow 0 7969)))
+;(get-value ((ControlFlow 0 7981)))
+;(get-value ((ControlFlow 0 7985)))
+;(get-value ((ControlFlow 0 8973)))
+(pop 1)
+(push 1)
+;(set-info :boogie-vc-id $nbody_sim)
+(assert (not
+(=> (and
+true
+_b0
+_b1
+_b2
+(not _b3)
+(not _b4)
+(not _b5)
+_b6
+_b7
+_b8
+_b9
+_b10
+_b11) $nbody_sim)
+))
+(check-sat)
+;(get-value ((ControlFlow 0 0)))
+;(get-value ((ControlFlow 0 17409)))
+;(get-value ((ControlFlow 0 5595)))
+;(get-value ((ControlFlow 0 5589)))
+;(get-value ((ControlFlow 0 5591)))
+;(get-value ((ControlFlow 0 5677)))
+;(get-value ((ControlFlow 0 5671)))
+;(get-value ((ControlFlow 0 5673)))
+;(get-value ((ControlFlow 0 5759)))
+;(get-value ((ControlFlow 0 5753)))
+;(get-value ((ControlFlow 0 5755)))
+;(get-value ((ControlFlow 0 5841)))
+;(get-value ((ControlFlow 0 5835)))
+;(get-value ((ControlFlow 0 5837)))
+;(get-value ((ControlFlow 0 5843)))
+;(get-value ((ControlFlow 0 5925)))
+;(get-value ((ControlFlow 0 5919)))
+;(get-value ((ControlFlow 0 5921)))
+;(get-value ((ControlFlow 0 6007)))
+;(get-value ((ControlFlow 0 6001)))
+;(get-value ((ControlFlow 0 6003)))
+;(get-value ((ControlFlow 0 6089)))
+;(get-value ((ControlFlow 0 6083)))
+;(get-value ((ControlFlow 0 6085)))
+;(get-value ((ControlFlow 0 6171)))
+;(get-value ((ControlFlow 0 6165)))
+;(get-value ((ControlFlow 0 6167)))
+;(get-value ((ControlFlow 0 6253)))
+;(get-value ((ControlFlow 0 6247)))
+;(get-value ((ControlFlow 0 6249)))
+;(get-value ((ControlFlow 0 6335)))
+;(get-value ((ControlFlow 0 6329)))
+;(get-value ((ControlFlow 0 6331)))
+;(get-value ((ControlFlow 0 6417)))
+;(get-value ((ControlFlow 0 6411)))
+;(get-value ((ControlFlow 0 6413)))
+;(get-value ((ControlFlow 0 6499)))
+;(get-value ((ControlFlow 0 6493)))
+;(get-value ((ControlFlow 0 6495)))
+;(get-value ((ControlFlow 0 7034)))
+;(get-value ((ControlFlow 0 7002)))
+;(get-value ((ControlFlow 0 7006)))
+;(get-value ((ControlFlow 0 7028)))
+;(get-value ((ControlFlow 0 7026)))
+;(get-value ((ControlFlow 0 7016)))
+;(get-value ((ControlFlow 0 7018)))
+;(get-value ((ControlFlow 0 7020)))
+;(get-value ((ControlFlow 0 7032)))
+;(get-value ((ControlFlow 0 7036)))
+;(get-value ((ControlFlow 0 7118)))
+;(get-value ((ControlFlow 0 7112)))
+;(get-value ((ControlFlow 0 7114)))
+;(get-value ((ControlFlow 0 7200)))
+;(get-value ((ControlFlow 0 7194)))
+;(get-value ((ControlFlow 0 7196)))
+;(get-value ((ControlFlow 0 7282)))
+;(get-value ((ControlFlow 0 7276)))
+;(get-value ((ControlFlow 0 7278)))
+;(get-value ((ControlFlow 0 7364)))
+;(get-value ((ControlFlow 0 7358)))
+;(get-value ((ControlFlow 0 7360)))
+;(get-value ((ControlFlow 0 7446)))
+;(get-value ((ControlFlow 0 7440)))
+;(get-value ((ControlFlow 0 7442)))
+;(get-value ((ControlFlow 0 7448)))
+;(get-value ((ControlFlow 0 7983)))
+;(get-value ((ControlFlow 0 7951)))
+;(get-value ((ControlFlow 0 7955)))
+;(get-value ((ControlFlow 0 7977)))
+;(get-value ((ControlFlow 0 7975)))
+;(get-value ((ControlFlow 0 7965)))
+;(get-value ((ControlFlow 0 7967)))
+;(get-value ((ControlFlow 0 7969)))
+;(get-value ((ControlFlow 0 7981)))
+;(get-value ((ControlFlow 0 7985)))
+;(get-value ((ControlFlow 0 8973)))
+(assert (not (= (ControlFlow 0 8973) (- 28118))))
+(check-sat)
+;(get-value ((ControlFlow 0 0)))
+;(get-value ((ControlFlow 0 17409)))
+;(get-value ((ControlFlow 0 5595)))
+;(get-value ((ControlFlow 0 5589)))
+;(get-value ((ControlFlow 0 5591)))
+;(get-value ((ControlFlow 0 5677)))
+;(get-value ((ControlFlow 0 5671)))
+;(get-value ((ControlFlow 0 5673)))
+;(get-value ((ControlFlow 0 5759)))
+;(get-value ((ControlFlow 0 5753)))
+;(get-value ((ControlFlow 0 5755)))
+;(get-value ((ControlFlow 0 5841)))
+;(get-value ((ControlFlow 0 5835)))
+;(get-value ((ControlFlow 0 5837)))
+;(get-value ((ControlFlow 0 5843)))
+;(get-value ((ControlFlow 0 5925)))
+;(get-value ((ControlFlow 0 5919)))
+;(get-value ((ControlFlow 0 5921)))
+;(get-value ((ControlFlow 0 6007)))
+;(get-value ((ControlFlow 0 6001)))
+;(get-value ((ControlFlow 0 6003)))
+;(get-value ((ControlFlow 0 6089)))
+;(get-value ((ControlFlow 0 6083)))
+;(get-value ((ControlFlow 0 6085)))
+;(get-value ((ControlFlow 0 6171)))
+;(get-value ((ControlFlow 0 6165)))
+;(get-value ((ControlFlow 0 6167)))
+;(get-value ((ControlFlow 0 6253)))
+;(get-value ((ControlFlow 0 6247)))
+;(get-value ((ControlFlow 0 6249)))
+;(get-value ((ControlFlow 0 6335)))
+;(get-value ((ControlFlow 0 6329)))
+;(get-value ((ControlFlow 0 6331)))
+;(get-value ((ControlFlow 0 6417)))
+;(get-value ((ControlFlow 0 6411)))
+;(get-value ((ControlFlow 0 6413)))
+;(get-value ((ControlFlow 0 6499)))
+;(get-value ((ControlFlow 0 6493)))
+;(get-value ((ControlFlow 0 6495)))
+;(get-value ((ControlFlow 0 7034)))
+;(get-value ((ControlFlow 0 7002)))
+;(get-value ((ControlFlow 0 7006)))
+;(get-value ((ControlFlow 0 7028)))
+;(get-value ((ControlFlow 0 7026)))
+;(get-value ((ControlFlow 0 7016)))
+;(get-value ((ControlFlow 0 7018)))
+;(get-value ((ControlFlow 0 7020)))
+;(get-value ((ControlFlow 0 7032)))
+;(get-value ((ControlFlow 0 7036)))
+;(get-value ((ControlFlow 0 7118)))
+;(get-value ((ControlFlow 0 7112)))
+;(get-value ((ControlFlow 0 7114)))
+;(get-value ((ControlFlow 0 7200)))
+;(get-value ((ControlFlow 0 7194)))
+;(get-value ((ControlFlow 0 7196)))
+;(get-value ((ControlFlow 0 7282)))
+;(get-value ((ControlFlow 0 7276)))
+;(get-value ((ControlFlow 0 7278)))
+;(get-value ((ControlFlow 0 7364)))
+;(get-value ((ControlFlow 0 7358)))
+;(get-value ((ControlFlow 0 7360)))
+;(get-value ((ControlFlow 0 7446)))
+;(get-value ((ControlFlow 0 7440)))
+;(get-value ((ControlFlow 0 7442)))
+;(get-value ((ControlFlow 0 7448)))
+;(get-value ((ControlFlow 0 7983)))
+;(get-value ((ControlFlow 0 7951)))
+;(get-value ((ControlFlow 0 7955)))
+;(get-value ((ControlFlow 0 7977)))
+;(get-value ((ControlFlow 0 7975)))
+;(get-value ((ControlFlow 0 7965)))
+;(get-value ((ControlFlow 0 7967)))
+;(get-value ((ControlFlow 0 7969)))
+;(get-value ((ControlFlow 0 7981)))
+;(get-value ((ControlFlow 0 7985)))
+;(get-value ((ControlFlow 0 8973)))
+(assert (not (= (ControlFlow 0 8973) (- 28132))))
+(check-sat)
+;(get-value ((ControlFlow 0 0)))
+;(get-value ((ControlFlow 0 17409)))
+;(get-value ((ControlFlow 0 5595)))
+;(get-value ((ControlFlow 0 5589)))
+;(get-value ((ControlFlow 0 5591)))
+;(get-value ((ControlFlow 0 5677)))
+;(get-value ((ControlFlow 0 5671)))
+;(get-value ((ControlFlow 0 5673)))
+;(get-value ((ControlFlow 0 5759)))
+;(get-value ((ControlFlow 0 5753)))
+;(get-value ((ControlFlow 0 5755)))
+;(get-value ((ControlFlow 0 5841)))
+;(get-value ((ControlFlow 0 5835)))
+;(get-value ((ControlFlow 0 5837)))
+;(get-value ((ControlFlow 0 5843)))
+(assert (not (= (ControlFlow 0 5843) (- 20234))))
+(check-sat)
+;(get-value ((ControlFlow 0 0)))
+;(get-value ((ControlFlow 0 17409)))
+;(get-value ((ControlFlow 0 5595)))
+;(get-value ((ControlFlow 0 5589)))
+;(get-value ((ControlFlow 0 5591)))
+;(get-value ((ControlFlow 0 5677)))
+;(get-value ((ControlFlow 0 5671)))
+;(get-value ((ControlFlow 0 5673)))
+;(get-value ((ControlFlow 0 5759)))
+;(get-value ((ControlFlow 0 5753)))
+;(get-value ((ControlFlow 0 5755)))
+;(get-value ((ControlFlow 0 5841)))
+;(get-value ((ControlFlow 0 5835)))
+;(get-value ((ControlFlow 0 5837)))
+;(get-value ((ControlFlow 0 5843)))
+(assert (not (= (ControlFlow 0 5843) (- 20220))))
+(check-sat)
+;(get-value ((ControlFlow 0 0)))
+;(get-value ((ControlFlow 0 17409)))
+;(get-value ((ControlFlow 0 5595)))
+;(get-value ((ControlFlow 0 5589)))
+;(get-value ((ControlFlow 0 5591)))
+;(get-value ((ControlFlow 0 5677)))
+;(get-value ((ControlFlow 0 5671)))
+;(get-value ((ControlFlow 0 5673)))
+;(get-value ((ControlFlow 0 5759)))
+;(get-value ((ControlFlow 0 5753)))
+;(get-value ((ControlFlow 0 5755)))
+;(get-value ((ControlFlow 0 5841)))
+;(get-value ((ControlFlow 0 5835)))
+;(get-value ((ControlFlow 0 5837)))
+;(get-value ((ControlFlow 0 5843)))
+(pop 1)
diff --git a/test/regress/regress0/push-pop/bug654-dd.smt2 b/test/regress/regress0/push-pop/bug654-dd.smt2
new file mode 100644
index 0000000..01c81cd
--- /dev/null
+++ b/test/regress/regress0/push-pop/bug654-dd.smt2
@@ -0,0 +1,27 @@
+; COMMAND-LINE: --incremental --fmf-fun --strings-exp
+(set-logic ALL_SUPPORTED)
+(declare-datatypes () (
+(List_T_C (List_T_C$CNil_T_CustomerType) (ListTC (ListTC$head T_CustomerType) (ListTC$tail List_T_C)))
+(T_CustomerType (T_CustomerType$C_T_CustomerType (T_CustomerType$C_T_CustomerType$a_CompanyName Int) (T_CustomerType$C_T_CustomerType$a_ContactName Int) (ID Int)))
+))
+(declare-fun f (List_T_C) Bool)
+(declare-fun tail_uf_1 (List_T_C) List_T_C)
+(declare-fun head_uf_2 (List_T_C) T_CustomerType)
+(declare-sort U 0)
+(declare-fun a (U) List_T_C)
+(declare-fun z (U) U)
+(assert 
+(forall ((?i U)) 
+(= (f (a ?i)) (not (is-ListTC (a ?i))) 
+)))
+(assert 
+(forall ((?i U)) 
+(= (a (z ?i)) (tail_uf_1 (a ?i)))) ) 
+; EXPECT: sat
+(push 1)
+(check-sat)
+(pop 1)
+; EXPECT: sat
+(push 1)
+(check-sat)
+(pop 1)
\ No newline at end of file
diff --git a/test/regress/regress0/push-pop/bug674.smt2 b/test/regress/regress0/push-pop/bug674.smt2
new file mode 100644
index 0000000..967681e
--- /dev/null
+++ b/test/regress/regress0/push-pop/bug674.smt2
@@ -0,0 +1,28 @@
+; COMMAND-LINE: --quant-ind --incremental --rewrite-divk
+(set-logic ALL_SUPPORTED)
+(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil))))
+(define-fun-rec app ((l1 Lst) (l2 Lst)) Lst (ite (is-nil l1) l2 (cons (head l1) (app (tail l1) l2))))
+(define-fun-rec rev ((l Lst)) Lst (ite (is-nil l) nil (app (rev (tail l)) (cons (head l) nil))))
+; EXPECT: unsat
+(push 1)
+(assert (not (=> true (and (forall (($l1$0 Lst) ($l2$0 Lst) ($l3$0 Lst)) (= (app $l1$0 (app $l2$0 $l3$0)) (app (app $l1$0 $l2$0) $l3$0)))))))
+(check-sat)
+(pop 1)
+
+(assert (forall (($l1$0 Lst) ($l2$0 Lst) ($l3$0 Lst)) (= (app $l1$0 (app $l2$0 $l3$0)) (app (app $l1$0 $l2$0) $l3$0))))
+
+; EXPECT: unsat
+(push 1)
+(assert (not (=> true (and (forall (($l1$0 Lst) ($l2$0 Lst)) (= (rev (app $l1$0 $l2$0)) (app (rev $l2$0) (rev $l1$0))))))))
+(check-sat)
+(pop 1)
+
+(assert (forall (($l1$0 Lst) ($l2$0 Lst)) (= (rev (app $l1$0 $l2$0)) (app (rev $l2$0) (rev $l1$0)))))
+
+; EXPECT: unsat
+(push 1)
+(assert (not (=> true (and (forall (($l1$0 Lst)) (= (rev (rev $l1$0)) $l1$0))))))
+(check-sat)
+(pop 1)
+
+
diff --git a/test/regress/regress0/push-pop/bug691.smt2 b/test/regress/regress0/push-pop/bug691.smt2
new file mode 100644
index 0000000..df89646
--- /dev/null
+++ b/test/regress/regress0/push-pop/bug691.smt2
@@ -0,0 +1,21 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+(set-logic UFDTSLIA)
+(set-info :smt-lib-version 2.5)
+
+(declare-datatypes () (
+    (Response (Response$Response (Response$Response$success Bool)))
+    ) )
+
+
+(push 1)
+(declare-fun $BLout$3248$0$1$() Response)
+(assert (= $BLout$3248$0$1$ (Response$Response true)))
+(check-sat)
+(pop 1)
+
+(push 1)
+(declare-fun $BLout$3248$2$1$() Response)
+(assert (= $BLout$3248$2$1$ (Response$Response true)))
+(check-sat)
diff --git a/test/regress/regress0/push-pop/bug694-Unapply1.scala-0.smt2 b/test/regress/regress0/push-pop/bug694-Unapply1.scala-0.smt2
new file mode 100644
index 0000000..8fdee6f
--- /dev/null
+++ b/test/regress/regress0/push-pop/bug694-Unapply1.scala-0.smt2
@@ -0,0 +1,147 @@
+; COMMAND-LINE: --incremental
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic ALL)
+(declare-fun start!1 () Bool)
+
+(assert start!1)
+
+(declare-fun b!15 () Bool)
+
+(declare-fun e!22 () Bool)
+
+(declare-fun error_value!0 () Bool)
+
+(assert (=> b!15 (= e!22 error_value!0)))
+
+(declare-fun b!16 () Bool)
+
+(declare-fun e!20 () Bool)
+
+(assert (=> b!16 (= e!20 e!22)))
+
+(declare-fun b!20 () Bool)
+
+(declare-datatypes () ( (Option!3 (None!1) (Some!1 (v!71 tuple2!0)))  (tuple2!0 (tuple2!1 (_1!0 Unit!0) (_2!0 Bool)))  (Unit!0 (Unit!1)) ))
+
+(declare-fun lt!7 () Option!3)
+
+(declare-fun Unit!2 () Unit!0)
+
+(assert (=> b!16 (= b!20 (ite (is-Some!1 lt!7) (= (_1!0 (v!71 lt!7)) Unit!2) false))))
+
+(assert (=> b!16 (or (not b!20) (not b!15))))
+
+(assert (=> b!16 (or b!20 b!15)))
+
+(declare-datatypes () ( (tuple3!0 (tuple3!1 (_1!1 (_ BitVec 32)) (_2!1 Bool) (_3!0 Unit!0))) ))
+
+(declare-fun unapply!2 (tuple3!0) Option!3)
+
+(declare-fun Unit!3 () Unit!0)
+
+(assert (=> b!16 (= lt!7 (unapply!2 (tuple3!1 #x0000002A false Unit!3)))))
+
+(declare-fun b!17 () Bool)
+
+(declare-fun e!21 () Bool)
+
+(assert (=> b!17 e!21))
+
+(declare-fun b!18 () Bool)
+
+(declare-fun Unit!4 () Unit!0)
+
+(assert (=> b!18 (= e!20 (_2!0 (v!71 (unapply!2 (tuple3!1 #x0000002A false Unit!4)))))))
+
+(declare-fun lt!6 () Bool)
+
+(assert (=> start!1 (not lt!6)))
+
+(assert (=> start!1 (= lt!6 e!20)))
+
+(assert (=> start!1 (= b!18 e!21)))
+
+(assert (=> start!1 (or (not b!18) (not b!16))))
+
+(assert (=> start!1 (or b!18 b!16)))
+
+(declare-fun b!19 () Bool)
+
+(assert (=> (and start!1 (not b!19)) (not e!21)))
+
+(declare-fun lt!8 () Option!3)
+
+(assert (=> start!1 (= b!19 (ite (is-Some!1 lt!8) true false))))
+
+(declare-fun Unit!5 () Unit!0)
+
+(assert (=> start!1 (= lt!8 (unapply!2 (tuple3!1 #x0000002A false Unit!5)))))
+
+(assert (=> (and b!19 (not b!17)) (not e!21)))
+
+(declare-fun Unit!6 () Unit!0)
+
+(assert (=> b!19 (= b!17 (_2!0 (v!71 (unapply!2 (tuple3!1 #x0000002A false Unit!6)))))))
+
+(declare-fun Unit!7 () Unit!0)
+
+(assert (=> b!20 (= e!22 (_2!0 (v!71 (unapply!2 (tuple3!1 #x0000002A false Unit!7)))))))
+
+(push 1)
+
+(assert (and (and (and (and (not b!19) (not start!1)) (not b!20)) (not b!18)) (not b!16)))
+
+(check-sat)
+
+(pop 1)
+
+(push 1)
+
+(assert true)
+
+(check-sat)
+
+(pop 1)
+
+(declare-fun d!1 () Bool)
+
+(declare-fun e!25 () Bool)
+
+(assert (=> d!1 e!25))
+
+(declare-fun b!23 () Bool)
+
+(assert (=> (and d!1 (not b!23)) (not e!25)))
+
+(declare-fun Unit!8 () Unit!0)
+
+(declare-fun Unit!9 () Unit!0)
+
+(declare-fun Unit!10 () Unit!0)
+
+(declare-fun Unit!11 () Unit!0)
+
+(assert (=> d!1 (= b!23 (= (unapply!2 (tuple3!1 #x0000002A false Unit!8)) (ite (= (_1!1 (tuple3!1 #x0000002A false Unit!9)) #x00000000) None!1 (Some!1 (tuple2!1 (_3!0 (tuple3!1 #x0000002A false Unit!10)) (_2!1 (tuple3!1 #x0000002A false Unit!11)))))))))
+
+(assert (=> b!23 (= e!25 true)))
+
+(assert (=> b!18 d!1))
+
+(assert (=> start!1 d!1))
+
+(assert (=> b!16 d!1))
+
+(assert (=> b!20 d!1))
+
+(assert (=> b!19 d!1))
+
+(push 1)
+
+(assert true)
+
+(check-sat)
+
+(pop 1)
+
diff --git a/test/regress/regress0/push-pop/bug765.smt2 b/test/regress/regress0/push-pop/bug765.smt2
new file mode 100644
index 0000000..fb4aac8
--- /dev/null
+++ b/test/regress/regress0/push-pop/bug765.smt2
@@ -0,0 +1,30 @@
+; COMMAND-LINE: --incremental --fmf-fun-rlv --no-check-models
+(set-logic ALL_SUPPORTED)
+
+(declare-datatypes () (
+    (Color (red) (white) (blue))
+) )
+
+(define-fun ColorToString ((c Color)) String (ite (is-red c) "red" (ite (is-white c) "white" "blue")) )
+(declare-fun ColorFromString (String) Color)
+(assert (forall ((c Color)) (= c (ColorFromString (ColorToString c)))))
+
+(declare-datatypes () (
+    (CP (cp (c1 Color) (c2 Color)))
+) )
+
+(define-fun-rec CPToString ((cp CP)) String (str.++ "cp(" (ColorToString (c1 cp)) "," (ColorToString (c2 cp)) ")"))
+(declare-fun CPFromString (String) CP)
+(assert (forall ((cp1 CP)) (= cp1 (CPFromString (CPToString cp1)))))
+
+(declare-fun cpx() CP)
+(assert (= cpx (CPFromString "cp(white,red)")))
+
+; EXPECT: sat
+(check-sat)
+
+(declare-fun cpy() CP)
+(assert (= cpy (CPFromString "cp(red,blue)")))
+
+; EXPECT: sat
+(check-sat)
diff --git a/test/regress/regress0/push-pop/fmf-fun-dbu.smt2 b/test/regress/regress0/push-pop/fmf-fun-dbu.smt2
new file mode 100644
index 0000000..125d5fc
--- /dev/null
+++ b/test/regress/regress0/push-pop/fmf-fun-dbu.smt2
@@ -0,0 +1,15 @@
+; COMMAND-LINE: --incremental --fmf-fun --no-check-models
+(set-logic UFDTLIA)
+(set-option :produce-models true)
+(set-info :smt-lib-version 2.5)
+(declare-datatypes () ((List (Nil) (Cons (Cons$head Int) (Cons$tail List)))))
+(define-fun-rec all-z ((x List)) Bool (=> (is-Cons x) (and (= 0 (Cons$head x)) (all-z (Cons$tail x)))))
+(define-fun-rec len ((x List)) Int (ite (is-Nil x) 0 (+ 1 (len (Cons$tail x)))))
+(declare-fun root() List)
+; EXPECT: sat
+(assert (and (all-z root) (<= 1 (len root))))
+(check-sat)
+; EXPECT: sat
+(assert (= root (Cons 0 Nil)))
+(check-sat)
+
diff --git a/test/regress/regress0/push-pop/inc-define.smt2 b/test/regress/regress0/push-pop/inc-define.smt2
new file mode 100644
index 0000000..27261ef
--- /dev/null
+++ b/test/regress/regress0/push-pop/inc-define.smt2
@@ -0,0 +1,9 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_LIA)
+(declare-fun x () Int)
+(check-sat)
+(define t (not (= x 0)))
+(assert t)
+(check-sat)
diff --git a/test/regress/regress0/push-pop/inc-double-u.smt2 b/test/regress/regress0/push-pop/inc-double-u.smt2
new file mode 100644
index 0000000..a01643d
--- /dev/null
+++ b/test/regress/regress0/push-pop/inc-double-u.smt2
@@ -0,0 +1,16 @@
+; COMMAND-LINE: --incremental 
+(set-logic UFLIA)
+(declare-fun P (Int) Bool)
+(declare-fun R (Int) Bool)
+(assert (forall ((x Int)) (=> (R x) (not (P x)))))
+; EXPECT: unknown
+(check-sat)
+(assert (R 0))
+; EXPECT: unknown
+(check-sat)
+(assert (forall ((x Int)) (P x)))
+; EXPECT: unsat
+(check-sat)
+(push 1)
+; EXPECT: unsat
+(check-sat)
diff --git a/test/regress/regress0/push-pop/incremental-subst-bug.cvc b/test/regress/regress0/push-pop/incremental-subst-bug.cvc
new file mode 100644
index 0000000..9b10ef8
--- /dev/null
+++ b/test/regress/regress0/push-pop/incremental-subst-bug.cvc
@@ -0,0 +1,21 @@
+% COMMAND-LINE: --incremental
+U : TYPE;
+x, y : U;
+% EXPECT: invalid
+QUERY x = y;
+ASSERT x = y;
+% EXPECT: valid
+QUERY x = y;
+PUSH;
+z : U;
+% EXPECT: valid
+QUERY x = y;
+% EXPECT: invalid
+QUERY x = z;
+% EXPECT: invalid
+QUERY z = x;
+% EXPECT: invalid
+QUERY z /= x;
+POP;
+% EXPECT: invalid
+QUERY z /= x;
diff --git a/test/regress/regress0/push-pop/quant-fun-proc-unfd.smt2 b/test/regress/regress0/push-pop/quant-fun-proc-unfd.smt2
new file mode 100644
index 0000000..f16c6fb
--- /dev/null
+++ b/test/regress/regress0/push-pop/quant-fun-proc-unfd.smt2
@@ -0,0 +1,34 @@
+; COMMAND-LINE: --incremental --fmf-fun --macros-quant --no-check-models
+(set-logic UFLIA)
+
+
+(define-fun f ((x Int)) Int x)
+
+(declare-fun h (Int) Int)
+(assert (forall ((x Int)) (= (h x) 0)))
+
+; EXPECT: sat
+(push 1)
+(define-fun-rec g ((x Int)) Int (ite (<= x 0) 0 (+ (g x) x)))
+(check-sat)
+(pop 1)
+
+(declare-fun g (Int) Int)
+
+; EXPECT: unsat
+(push 1)
+(assert (= (f 1) 2))
+(check-sat)
+(pop 1)
+
+; EXPECT: sat
+(push 1)
+(assert (= (g 1) 5))
+(check-sat)
+(pop 1)
+
+; EXPECT: unsat
+(push 1)
+(assert (= (h 1) 5))
+(check-sat)
+(pop 1)
diff --git a/test/regress/regress0/push-pop/quant-fun-proc-unmacro.smt2 b/test/regress/regress0/push-pop/quant-fun-proc-unmacro.smt2
new file mode 100644
index 0000000..7cacfca
--- /dev/null
+++ b/test/regress/regress0/push-pop/quant-fun-proc-unmacro.smt2
@@ -0,0 +1,34 @@
+; COMMAND-LINE: --incremental --fmf-fun --macros-quant --no-check-models
+(set-logic UFLIA)
+
+
+(define-fun f ((x Int)) Int x)
+
+(define-fun-rec g ((x Int)) Int (ite (<= x 0) 0 (+ (g x) x)))
+
+; EXPECT: sat
+(declare-fun h (Int) Int)
+(push 1)
+(assert (forall ((x Int)) (= (h x) 0)))
+(check-sat)
+(pop 1)
+
+
+; EXPECT: unsat
+(push 1)
+(assert (= (f 1) 2))
+(check-sat)
+(pop 1)
+
+; EXPECT: unsat
+(push 1)
+(assert (= (g 1) 5))
+(check-sat)
+(pop 1)
+
+; EXPECT: sat
+(push 1)
+(assert (= (h 1) 5))
+(check-sat)
+(pop 1)
+
diff --git a/test/regress/regress0/push-pop/quant-fun-proc.smt2 b/test/regress/regress0/push-pop/quant-fun-proc.smt2
new file mode 100644
index 0000000..2a12cb6
--- /dev/null
+++ b/test/regress/regress0/push-pop/quant-fun-proc.smt2
@@ -0,0 +1,30 @@
+; COMMAND-LINE: --incremental --fmf-fun --macros-quant --macros-quant-mode=ground --no-check-models
+(set-logic UFLIA)
+
+(define-fun f ((x Int)) Int x)
+
+(define-fun-rec g ((x Int)) Int (ite (<= x 0) 0 (+ (g x) x)))
+
+(declare-fun h (Int) Int)
+(assert (forall ((x Int)) (= (h x) (+ x 3))))
+
+; EXPECT: sat
+(check-sat)
+
+; EXPECT: unsat
+(push 1)
+(assert (= (f 1) 2))
+(check-sat)
+(pop 1)
+
+; EXPECT: unsat
+(push 1)
+(assert (= (g 1) 5))
+(check-sat)
+(pop 1)
+
+; EXPECT: unsat
+(push 1)
+(assert (= (h 1) 5))
+(check-sat)
+(pop 1)
diff --git a/test/regress/regress0/push-pop/test.00.cvc b/test/regress/regress0/push-pop/test.00.cvc
new file mode 100644
index 0000000..78d7b9f
--- /dev/null
+++ b/test/regress/regress0/push-pop/test.00.cvc
@@ -0,0 +1,11 @@
+% COMMAND-LINE: --incremental
+x: BOOLEAN;
+
+PUSH;
+ASSERT x;
+% EXPECT: sat
+CHECKSAT;
+POP;
+ASSERT (NOT x);
+% EXPECT: sat
+CHECKSAT;
diff --git a/test/regress/regress0/push-pop/test.01.cvc b/test/regress/regress0/push-pop/test.01.cvc
new file mode 100644
index 0000000..2bb5877
--- /dev/null
+++ b/test/regress/regress0/push-pop/test.01.cvc
@@ -0,0 +1,19 @@
+% COMMAND-LINE: --incremental
+
+x, y: BOOLEAN;
+
+ASSERT (x OR y);
+% EXPECT: sat
+CHECKSAT;
+PUSH;
+ASSERT (NOT x);
+% EXPECT: sat
+CHECKSAT;
+POP;
+PUSH;
+ASSERT (NOT y);
+% EXPECT: sat
+CHECKSAT;
+POP;
+% EXPECT: sat
+CHECKSAT;
diff --git a/test/regress/regress0/push-pop/tiny_bug.smt2 b/test/regress/regress0/push-pop/tiny_bug.smt2
new file mode 100644
index 0000000..b67381b
--- /dev/null
+++ b/test/regress/regress0/push-pop/tiny_bug.smt2
@@ -0,0 +1,27 @@
+; COMMAND-LINE: --incremental --simplification=none
+; EXPECT: sat
+; EXPECT: unsat
+(set-logic QF_UFLIA)
+(declare-fun base () Int)
+(declare-fun n () Int)
+
+(declare-fun g (Int) Bool)
+(declare-fun f (Int) Bool)
+
+(push 1)
+(assert (<= 0 n))
+(assert (f n))
+(assert (= (f n) (or (= (- n base) 1) (g n))))
+(check-sat)
+(pop 1)
+
+(push 1)
+(assert (<= 0 n))
+
+(assert (or (= (- n base) 1) (g n)))
+(assert (not (g n)))
+(assert (= base (- 2)))
+
+(check-sat)
+(pop 1)
+
diff --git a/test/regress/regress0/push-pop/units.cvc b/test/regress/regress0/push-pop/units.cvc
new file mode 100644
index 0000000..3550174
--- /dev/null
+++ b/test/regress/regress0/push-pop/units.cvc
@@ -0,0 +1,29 @@
+% COMMAND-LINE: --incremental
+x, y: BOOLEAN;
+ASSERT x OR y;
+% EXPECT: sat
+CHECKSAT;
+PUSH;
+  ASSERT NOT x;
+% EXPECT: sat
+  CHECKSAT;
+  PUSH;
+    ASSERT NOT y;
+% EXPECT: unsat
+    CHECKSAT;
+  POP;
+% EXPECT: sat
+  CHECKSAT;
+POP;
+% EXPECT: sat
+CHECKSAT;
+PUSH 2;
+ASSERT x;
+ASSERT NOT x;
+% EXPECT: unsat
+CHECKSAT;
+POP 2;
+% EXPECT: sat
+CHECKSAT;
+
+
diff --git a/test/regress/regress0/quantifiers/006-cbqi-ite.smt2 b/test/regress/regress0/quantifiers/006-cbqi-ite.smt2
new file mode 100644
index 0000000..bfa3ef2
--- /dev/null
+++ b/test/regress/regress0/quantifiers/006-cbqi-ite.smt2
@@ -0,0 +1,299 @@
+(set-logic LIA)
+(set-info :status unsat)
+(declare-fun W_S2_V6 () Bool)
+(declare-fun W_S2_V4 () Bool)
+(declare-fun W_S2_V2 () Bool)
+(declare-fun W_S2_V3 () Bool)
+(declare-fun W_S2_V1 () Bool)
+(declare-fun W_S1_V6 () Bool)
+(declare-fun W_S1_V5 () Bool)
+(declare-fun W_S1_V2 () Bool)
+(declare-fun W_S1_V3 () Bool)
+(declare-fun W_S1_V1 () Bool)
+(declare-fun R_S1_V1 () Bool)
+(declare-fun R_S2_V6 () Bool)
+(declare-fun R_S2_V4 () Bool)
+(declare-fun R_S2_V5 () Bool)
+(declare-fun R_S2_V2 () Bool)
+(declare-fun R_S2_V3 () Bool)
+(declare-fun R_S2_V1 () Bool)
+(declare-fun R_E1_V6 () Bool)
+(declare-fun R_E1_V4 () Bool)
+(declare-fun R_E1_V5 () Bool)
+(declare-fun R_E1_V2 () Bool)
+(declare-fun R_E1_V3 () Bool)
+(declare-fun R_E1_V1 () Bool)
+(declare-fun DISJ_W_S2_R_E1 () Bool)
+(declare-fun DISJ_W_S2_R_S2 () Bool)
+(declare-fun R_S1_V6 () Bool)
+(declare-fun R_S1_V4 () Bool)
+(declare-fun R_S1_V5 () Bool)
+(declare-fun R_S1_V2 () Bool)
+(declare-fun R_S1_V3 () Bool)
+(declare-fun DISJ_W_S2_R_S1 () Bool)
+(declare-fun DISJ_W_S1_W_S2 () Bool)
+(declare-fun DISJ_W_S1_R_E1 () Bool)
+(declare-fun DISJ_W_S1_R_S2 () Bool)
+(declare-fun DISJ_W_S1_R_S1 () Bool)
+(declare-fun W_S2_V5 () Bool)
+(declare-fun W_S1_V4 () Bool)
+(assert
+ (let
+ (($x1615
+   (forall
+    ((V1_0 Int) (V3_0 Int) 
+     (V2_0 Int) (V5_0 Int) 
+     (V4_0 Int) (V6_0 Int) 
+     (MW_S1_V1 Bool) (MW_S1_V3 Bool) 
+     (MW_S1_V2 Bool) (MW_S1_V5 Bool) 
+     (MW_S1_V4 Bool) (MW_S1_V6 Bool) 
+     (MW_S2_V1 Bool) (MW_S2_V3 Bool) 
+     (MW_S2_V2 Bool) (MW_S2_V5 Bool) 
+     (MW_S2_V4 Bool) (MW_S2_V6 Bool) 
+     (S1_V1_!158 Int) (S1_V1_!171 Int) 
+     (S2_V5_!167 Int) (S2_V5_!180 Int) 
+     (S1_V3_!159 Int) (S1_V3_!172 Int) 
+     (S1_V2_!160 Int) (S1_V2_!173 Int) 
+     (E1_!157 Int) (E1_!170 Int) 
+     (E1_!183 Int) (S2_V4_!168 Int) 
+     (S2_V4_!181 Int) (S2_V6_!169 Int) 
+     (S2_V6_!182 Int) (S1_V5_!161 Int) 
+     (S1_V5_!174 Int) (S2_V1_!164 Int) 
+     (S2_V1_!177 Int) (S1_V4_!162 Int) 
+     (S1_V4_!175 Int) (S2_V3_!165 Int) 
+     (S2_V3_!178 Int) (S2_V2_!166 Int) 
+     (S2_V2_!179 Int) (S1_V6_!163 Int) 
+     (S1_V6_!176 Int))
+    (let ((?x1431 (ite MW_S1_V6 S1_V6_!176 V6_0)))
+    (let ((?x1432 (ite MW_S2_V6 S2_V6_!182 ?x1431)))
+    (let ((?x1433 (ite MW_S1_V6 S1_V6_!163 V6_0)))
+    (let ((?x1434 (ite MW_S2_V6 S2_V6_!169 ?x1433)))
+    (let (($x1435 (= ?x1434 ?x1432)))
+    (let ((?x1436 (ite MW_S1_V4 S1_V4_!175 V4_0)))
+    (let ((?x1437 (ite MW_S2_V4 S2_V4_!181 ?x1436)))
+    (let ((?x1438 (ite MW_S1_V4 S1_V4_!162 V4_0)))
+    (let ((?x1439 (ite MW_S2_V4 S2_V4_!168 ?x1438)))
+    (let (($x1440 (= ?x1439 ?x1437)))
+    (let ((?x1441 (ite MW_S1_V5 S1_V5_!174 V5_0)))
+    (let ((?x1442 (ite MW_S2_V5 S2_V5_!180 ?x1441)))
+    (let ((?x1444 (ite MW_S1_V5 S1_V5_!161 V5_0)))
+    (let ((?x1445 (ite MW_S2_V5 S2_V5_!167 ?x1444)))
+    (let (($x1446 (= ?x1445 ?x1442)))
+    (let ((?x1447 (ite MW_S1_V2 S1_V2_!173 V2_0)))
+    (let ((?x1448 (ite MW_S2_V2 S2_V2_!179 ?x1447)))
+    (let ((?x1449 (ite MW_S1_V2 S1_V2_!160 V2_0)))
+    (let ((?x1450 (ite MW_S2_V2 S2_V2_!166 ?x1449)))
+    (let (($x1451 (= ?x1450 ?x1448)))
+    (let ((?x1467 (ite MW_S1_V3 S1_V3_!159 V3_0)))
+    (let ((?x1468 (+ 1 ?x1467)))
+    (let ((?x1458 (ite MW_S2_V3 S2_V3_!165 ?x1468)))
+    (let
+    (($x1459
+      (= ?x1458
+      (+ (ite MW_S2_V3 S2_V3_!178 (ite MW_S1_V3 S1_V3_!172 V3_0)) ?x1448
+      (* (- 1) E1_!183)))))
+    (let ((?x1460 (ite MW_S1_V1 S1_V1_!171 E1_!170)))
+    (let ((?x1487 (ite MW_S2_V1 S2_V1_!177 ?x1460)))
+    (let ((?x1453 (ite MW_S1_V1 S1_V1_!158 E1_!157)))
+    (let ((?x1489 (ite MW_S2_V1 S2_V1_!164 ?x1453)))
+    (let (($x1289 (= ?x1489 ?x1487)))
+    (let ((?x1455 (+ (- 1) ?x1448)))
+    (let (($x1376 (>= ?x1487 ?x1455)))
+    (let (($x1377 (<= V2_0 E1_!170)))
+    (let (($x1379 (not $x1377)))
+    (let ((?x1380 (+ (- 1) ?x1450)))
+    (let (($x1381 (>= ?x1489 ?x1380)))
+    (let (($x1479 (<= V2_0 E1_!157)))
+    (let (($x1456 (not $x1479)))
+    (let (($x1499 (and $x1456 $x1381 $x1379 $x1376)))
+    (let (($x1500 (not $x1499)))
+    (let (($x1502 (not MW_S2_V6)))
+    (let (($x1503 (or $x1502 W_S2_V6)))
+    (let (($x1504 (not MW_S2_V4)))
+    (let (($x1505 (or $x1504 W_S2_V4)))
+    (let (($x1508 (not MW_S2_V2)))
+    (let (($x1509 (or $x1508 W_S2_V2)))
+    (let (($x1510 (not MW_S2_V3)))
+    (let (($x1511 (or $x1510 W_S2_V3)))
+    (let (($x1512 (not MW_S2_V1)))
+    (let (($x1513 (or $x1512 W_S2_V1)))
+    (let (($x1514 (not MW_S1_V6)))
+    (let (($x1515 (or $x1514 W_S1_V6)))
+    (let (($x1518 (not MW_S1_V5)))
+    (let (($x1519 (or $x1518 W_S1_V5)))
+    (let (($x1520 (not MW_S1_V2)))
+    (let (($x1521 (or $x1520 W_S1_V2)))
+    (let (($x1522 (not MW_S1_V3)))
+    (let (($x1523 (or $x1522 W_S1_V3)))
+    (let (($x1524 (not MW_S1_V1)))
+    (let (($x1525 (or $x1524 W_S1_V1)))
+    (let (($x1527 (= S1_V6_!176 S1_V6_!163)))
+    (let (($x1528 (= E1_!170 E1_!157)))
+    (let (($x228 (not R_S1_V1)))
+    (let (($x1529 (or $x228 $x1528)))
+    (let (($x1530 (not $x1529)))
+    (let (($x1531 (or $x1530 $x1527)))
+    (let (($x1532 (= S2_V2_!179 S2_V2_!166)))
+    (let (($x1533 (= ?x1431 ?x1433)))
+    (let (($x253 (not R_S2_V6)))
+    (let (($x1534 (or $x253 $x1533)))
+    (let (($x1535 (= ?x1436 ?x1438)))
+    (let (($x251 (not R_S2_V4)))
+    (let (($x1536 (or $x251 $x1535)))
+    (let (($x1537 (= ?x1441 ?x1444)))
+    (let (($x249 (not R_S2_V5)))
+    (let (($x1538 (or $x249 $x1537)))
+    (let (($x1539 (= ?x1447 ?x1449)))
+    (let (($x247 (not R_S2_V2)))
+    (let (($x1540 (or $x247 $x1539)))
+    (let ((?x1462 (ite MW_S1_V3 S1_V3_!172 V3_0)))
+    (let (($x1541 (= ?x1462 ?x1468)))
+    (let (($x245 (not R_S2_V3)))
+    (let (($x1542 (or $x245 $x1541)))
+    (let (($x1543 (= ?x1460 ?x1453)))
+    (let (($x243 (not R_S2_V1)))
+    (let (($x1544 (or $x243 $x1543)))
+    (let (($x1545 (and $x1544 $x1542 $x1540 $x1538 $x1536 $x1534)))
+    (let (($x1546 (not $x1545)))
+    (let (($x1547 (or $x1546 $x1532)))
+    (let (($x1548 (= S2_V3_!165 S2_V3_!178)))
+    (let (($x1549 (= ?x1433 ?x1431)))
+    (let (($x1550 (or $x253 $x1549)))
+    (let (($x1551 (= ?x1438 ?x1436)))
+    (let (($x1552 (or $x251 $x1551)))
+    (let (($x1553 (= ?x1444 ?x1441)))
+    (let (($x1554 (or $x249 $x1553)))
+    (let (($x1555 (= ?x1449 ?x1447)))
+    (let (($x1556 (or $x247 $x1555)))
+    (let ((?x1557 (+ (- 1) ?x1462)))
+    (let (($x1558 (= ?x1467 ?x1557)))
+    (let (($x1559 (or $x245 $x1558)))
+    (let (($x1560 (= ?x1453 ?x1460)))
+    (let (($x1561 (or $x243 $x1560)))
+    (let (($x1562 (and $x1561 $x1559 $x1556 $x1554 $x1552 $x1550)))
+    (let (($x1563 (not $x1562)))
+    (let (($x1564 (or $x1563 $x1548)))
+    (let (($x1565 (= S1_V4_!175 S1_V4_!162)))
+    (let (($x1566 (or $x1530 $x1565)))
+    (let (($x1567 (= S2_V1_!177 S2_V1_!164)))
+    (let (($x1568 (or $x1546 $x1567)))
+    (let (($x1569 (= S1_V5_!174 S1_V5_!161)))
+    (let (($x1570 (or $x1530 $x1569)))
+    (let (($x1571 (= S2_V6_!182 S2_V6_!169)))
+    (let (($x1572 (or $x1546 $x1571)))
+    (let (($x1573 (= S2_V4_!168 S2_V4_!181)))
+    (let (($x1574 (or $x1563 $x1573)))
+    (let (($x1575 (= E1_!170 E1_!183)))
+    (let (($x1576 (= V6_0 ?x1432)))
+    (let (($x177 (not R_E1_V6)))
+    (let (($x1577 (or $x177 $x1576)))
+    (let (($x1578 (= V4_0 ?x1437)))
+    (let (($x175 (not R_E1_V4)))
+    (let (($x1579 (or $x175 $x1578)))
+    (let (($x1580 (= V5_0 ?x1442)))
+    (let (($x173 (not R_E1_V5)))
+    (let (($x1581 (or $x173 $x1580)))
+    (let (($x1582 (= V2_0 ?x1448)))
+    (let (($x171 (not R_E1_V2)))
+    (let (($x1583 (or $x171 $x1582)))
+    (let ((?x1463 (ite MW_S2_V3 S2_V3_!178 ?x1462)))
+    (let (($x1584 (= V3_0 ?x1463)))
+    (let (($x169 (not R_E1_V3)))
+    (let (($x1585 (or $x169 $x1584)))
+    (let ((?x1586 (+ 1 ?x1487)))
+    (let (($x1587 (= V1_0 ?x1586)))
+    (let (($x167 (not R_E1_V1)))
+    (let (($x1588 (or $x167 $x1587)))
+    (let (($x1589 (and $x1588 $x1585 $x1583 $x1581 $x1579 $x1577)))
+    (let (($x1590 (not $x1589)))
+    (let (($x1591 (or $x1590 $x1575)))
+    (let (($x1592 (= E1_!157 E1_!183)))
+    (let (($x1593 (or $x1590 $x1592)))
+    (let (($x1594 (= E1_!157 E1_!170)))
+    (let (($x1595 (= S1_V2_!173 S1_V2_!160)))
+    (let (($x1596 (or $x1530 $x1595)))
+    (let (($x1597 (= S1_V3_!159 S1_V3_!172)))
+    (let (($x1598 (or $x228 $x1594)))
+    (let (($x1599 (not $x1598)))
+    (let (($x1600 (or $x1599 $x1597)))
+    (let (($x1601 (= S2_V5_!180 S2_V5_!167)))
+    (let (($x1602 (or $x1546 $x1601)))
+    (let (($x1603 (= S1_V1_!158 S1_V1_!171)))
+    (let (($x1604 (or $x1599 $x1603)))
+    (let
+    (($x1612
+      (and $x1604 $x1602 $x1600 $x1596 $x1594 $x1593 $x1591 $x1574 $x1572
+      $x1570 $x1568 $x1566 $x1564 $x1547 $x1531 $x1525 $x1523 $x1521 $x1519
+      $x1515 $x1513 $x1511 $x1509 $x1505 $x1503)))
+    (let (($x1613 (not $x1612)))
+    (or $x1613 $x1500 (and $x1289 $x1459 $x1451 $x1446 $x1440 $x1435)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+ (let (($x103 (and W_S2_V6 R_E1_V6)))
+ (let (($x102 (and W_S2_V4 R_E1_V4)))
+ (let (($x100 (and W_S2_V2 R_E1_V2)))
+ (let (($x99 (and W_S2_V3 R_E1_V3)))
+ (let (($x98 (and W_S2_V1 R_E1_V1)))
+ (let (($x128 (or $x98 $x99 $x100 R_E1_V5 $x102 $x103)))
+ (let (($x129 (not $x128)))
+ (let (($x130 (= DISJ_W_S2_R_E1 $x129)))
+ (let (($x93 (and W_S2_V6 R_S2_V6)))
+ (let (($x92 (and W_S2_V4 R_S2_V4)))
+ (let (($x90 (and W_S2_V2 R_S2_V2)))
+ (let (($x89 (and W_S2_V3 R_S2_V3)))
+ (let (($x88 (and W_S2_V1 R_S2_V1)))
+ (let (($x125 (or $x88 $x89 $x90 R_S2_V5 $x92 $x93)))
+ (let (($x126 (not $x125)))
+ (let (($x127 (= DISJ_W_S2_R_S2 $x126)))
+ (let (($x83 (and W_S2_V6 R_S1_V6)))
+ (let (($x82 (and W_S2_V4 R_S1_V4)))
+ (let (($x80 (and W_S2_V2 R_S1_V2)))
+ (let (($x79 (and W_S2_V3 R_S1_V3)))
+ (let (($x78 (and W_S2_V1 R_S1_V1)))
+ (let (($x122 (or $x78 $x79 $x80 R_S1_V5 $x82 $x83)))
+ (let (($x123 (not $x122)))
+ (let (($x124 (= DISJ_W_S2_R_S1 $x123)))
+ (let (($x73 (and W_S1_V6 W_S2_V6)))
+ (let (($x68 (and W_S1_V2 W_S2_V2)))
+ (let (($x66 (and W_S1_V3 W_S2_V3)))
+ (let (($x64 (and W_S1_V1 W_S2_V1)))
+ (let (($x119 (or $x64 $x66 $x68 W_S1_V5 W_S2_V4 $x73)))
+ (let (($x120 (not $x119)))
+ (let (($x121 (= DISJ_W_S1_W_S2 $x120)))
+ (let (($x58 (and W_S1_V6 R_E1_V6)))
+ (let (($x54 (and W_S1_V5 R_E1_V5)))
+ (let (($x52 (and W_S1_V2 R_E1_V2)))
+ (let (($x50 (and W_S1_V3 R_E1_V3)))
+ (let (($x48 (and W_S1_V1 R_E1_V1)))
+ (let (($x116 (or $x48 $x50 $x52 $x54 R_E1_V4 $x58)))
+ (let (($x117 (not $x116)))
+ (let (($x118 (= DISJ_W_S1_R_E1 $x117)))
+ (let (($x42 (and W_S1_V6 R_S2_V6)))
+ (let (($x38 (and W_S1_V5 R_S2_V5)))
+ (let (($x36 (and W_S1_V2 R_S2_V2)))
+ (let (($x34 (and W_S1_V3 R_S2_V3)))
+ (let (($x32 (and W_S1_V1 R_S2_V1)))
+ (let (($x113 (or $x32 $x34 $x36 $x38 R_S2_V4 $x42)))
+ (let (($x114 (not $x113)))
+ (let (($x115 (= DISJ_W_S1_R_S2 $x114)))
+ (let (($x26 (and W_S1_V6 R_S1_V6)))
+ (let (($x21 (and W_S1_V5 R_S1_V5)))
+ (let (($x18 (and W_S1_V2 R_S1_V2)))
+ (let (($x15 (and W_S1_V3 R_S1_V3)))
+ (let (($x12 (and W_S1_V1 R_S1_V1)))
+ (let (($x110 (or $x12 $x15 $x18 $x21 R_S1_V4 $x26)))
+ (let (($x111 (not $x110)))
+ (let (($x112 (= DISJ_W_S1_R_S1 $x111)))
+ (and W_S1_V4 W_S2_V5 $x112 $x115 $x118 $x121 $x124 $x127 $x130 $x1615))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+(assert
+ (let (($x1192 (not W_S2_V2)))
+ (let (($x1189 (not W_S2_V3)))
+ (let (($x1186 (not W_S2_V1)))
+ (let (($x1091 (not W_S1_V2)))
+ (let (($x1078 (not W_S1_V1)))
+ (let (($x245 (not R_S2_V3)))
+ (let (($x167 (not R_E1_V1)))
+ (let
+ (($x1647
+   (and $x167 $x245 $x1078 $x1091 $x1186 $x1189 $x1192 DISJ_W_S1_R_E1
+   DISJ_W_S2_R_E1))) (not $x1647))))))))))
+(check-sat)
+
diff --git a/test/regress/regress0/quantifiers/ARI176e1.smt2 b/test/regress/regress0/quantifiers/ARI176e1.smt2
new file mode 100644
index 0000000..caed9c6
--- /dev/null
+++ b/test/regress/regress0/quantifiers/ARI176e1.smt2
@@ -0,0 +1,5 @@
+; COMMAND-LINE: --cbqi-recurse
+; EXPECT: unsat
+(set-logic LIA)
+(assert (forall ((U Int) (V Int)) (not (= (* 3 U) (+ 22 (* (- 5) V)))) ) )
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/Arrays_Q1-noinfer.smt2 b/test/regress/regress0/quantifiers/Arrays_Q1-noinfer.smt2
new file mode 100644
index 0000000..3398f5f
--- /dev/null
+++ b/test/regress/regress0/quantifiers/Arrays_Q1-noinfer.smt2
@@ -0,0 +1,73 @@
+(set-logic AUFLIA)
+(set-info :source | 
+  Boogie/Spec# benchmarks.
+  This benchmark was translated by Michal Moskal.
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-fun InRange (Int Int) Bool)
+(declare-fun o () Int)
+(declare-fun q () Int)
+(declare-fun int_18446744073709551615 () Int)
+(declare-fun Smt.false () Int)
+(declare-fun anyEqual (Int Int) Int)
+(declare-fun y () Int)
+(declare-fun select1 (Int Int) Int)
+(declare-fun select2 (Int Int Int) Int)
+(declare-fun CONCVARSYM (Int) Int)
+(declare-fun divides (Int Int) Int)
+(declare-fun intAtMost (Int Int) Int)
+(declare-fun subtypes (Int Int) Bool)
+(declare-fun store1 (Int Int Int) Int)
+(declare-fun store2 (Int Int Int Int) Int)
+(declare-fun B_0 () Int)
+(declare-fun B_1 () Int)
+(declare-fun intAtLeast (Int Int) Int)
+(declare-fun int_2147483647 () Int)
+(declare-fun boolOr (Int Int) Int)
+(declare-fun ReallyLastGeneratedExit_correct () Int)
+(declare-fun int_m9223372036854775808 () Int)
+(declare-fun Smt.true () Int)
+(declare-fun int_4294967295 () Int)
+(declare-fun start_correct () Int)
+(declare-fun B () Int)
+(declare-fun F () Int)
+(declare-fun G () Int)
+(declare-fun boolAnd (Int Int) Int)
+(declare-fun boolNot (Int) Int)
+(declare-fun k_0 () Int)
+(declare-fun intLess (Int Int) Int)
+(declare-fun intGreater (Int Int) Int)
+(declare-fun anyNeq (Int Int) Int)
+(declare-fun is (Int Int) Int)
+(declare-fun int_m2147483648 () Int)
+(declare-fun modulo (Int Int) Int)
+(declare-fun boolImplies (Int Int) Int)
+(declare-fun boolIff (Int Int) Int)
+(declare-fun int_9223372036854775807 () Int)
+(assert true)
+(assert true)
+(assert (forall ((?A Int) (?i Int) (?v Int)) (= (select1 (store1 ?A ?i ?v) ?i) ?v)))
+(assert (forall ((?A Int) (?i Int) (?j Int) (?v Int)) (=> (not (= ?i ?j)) (= (select1 (store1 ?A ?i ?v) ?j) (select1 ?A ?j)))))
+(assert (forall ((?A Int) (?o Int) (?f Int) (?v Int)) (= (select2 (store2 ?A ?o ?f ?v) ?o ?f) ?v)))
+(assert (forall ((?A Int) (?o Int) (?f Int) (?p Int) (?g Int) (?v Int)) (=> (not (= ?o ?p)) (= (select2 (store2 ?A ?o ?f ?v) ?p ?g) (select2 ?A ?p ?g)))))
+(assert (forall ((?A Int) (?o Int) (?f Int) (?p Int) (?g Int) (?v Int)) (=> (not (= ?f ?g)) (= (select2 (store2 ?A ?o ?f ?v) ?p ?g) (select2 ?A ?p ?g)))))
+(assert (forall ((?x Int) (?y Int)) (= (= (boolIff ?x ?y) Smt.true) (= (= ?x Smt.true) (= ?y Smt.true)))))
+(assert (forall ((?x Int) (?y Int)) (= (= (boolImplies ?x ?y) Smt.true) (=> (= ?x Smt.true) (= ?y Smt.true)))))
+(assert (forall ((?x Int) (?y Int)) (= (= (boolAnd ?x ?y) Smt.true) (and (= ?x Smt.true) (= ?y Smt.true)))))
+(assert (forall ((?x Int) (?y Int)) (= (= (boolOr ?x ?y) Smt.true) (or (= ?x Smt.true) (= ?y Smt.true)))))
+(assert (forall ((?x Int)) (! (= (= (boolNot ?x) Smt.true) (not (= ?x Smt.true))) :pattern ((boolNot ?x)) )))
+(assert (forall ((?x Int) (?y Int)) (= (= (anyEqual ?x ?y) Smt.true) (= ?x ?y))))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (anyNeq ?x ?y) Smt.true) (not (= ?x ?y))) :pattern ((anyNeq ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (= (= (intLess ?x ?y) Smt.true) (< ?x ?y))))
+(assert (forall ((?x Int) (?y Int)) (= (= (intAtMost ?x ?y) Smt.true) (<= ?x ?y))))
+(assert (forall ((?x Int) (?y Int)) (= (= (intAtLeast ?x ?y) Smt.true) (>= ?x ?y))))
+(assert (forall ((?x Int) (?y Int)) (= (= (intGreater ?x ?y) Smt.true) (> ?x ?y))))
+(assert (distinct Smt.false Smt.true))
+(assert (forall ((?t Int)) (! (subtypes ?t ?t) :pattern ((subtypes ?t ?t)) )))
+(assert (forall ((?t Int) (?u Int) (?v Int)) (! (=> (and (subtypes ?t ?u) (subtypes ?u ?v)) (subtypes ?t ?v)) :pattern ((subtypes ?t ?u) (subtypes ?u ?v)) )))
+(assert (forall ((?t Int) (?u Int)) (! (=> (and (subtypes ?t ?u) (subtypes ?u ?t)) (= ?t ?u)) :pattern ((subtypes ?t ?u) (subtypes ?u ?t)) )))
+(assert (let ((?v_0 (forall ((?p Int) (?f Int)) (or (= (select2 B_1 ?p ?f) (select2 B ?p ?f)) (and (= ?p o) (= ?f F))))) (?v_1 (= ReallyLastGeneratedExit_correct Smt.true)) (?v_2 (= start_correct Smt.true))) (not (=> (=> (=> true (=> (= k_0 (select2 B q G)) (=> (= B_0 (store2 B o F (+ y (select2 B o F)))) (=> (= B_1 (store2 B_0 q G k_0)) (=> (=> (=> true (and ?v_0 (=> ?v_0 (=> true true)))) ?v_1) ?v_1))))) ?v_2) ?v_2))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/Makefile.am b/test/regress/regress0/quantifiers/Makefile.am
new file mode 100644
index 0000000..faa2abe
--- /dev/null
+++ b/test/regress/regress0/quantifiers/Makefile.am
@@ -0,0 +1,127 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	bug269.smt2 \
+	bug290.smt2 \
+	bug291.smt2 \
+	Arrays_Q1-noinfer.smt2 \
+	bignum_quant.smt2 \
+	bug269.smt2 \
+	burns13.smt2 \
+	burns4.smt2 \
+	ex3.smt2 \
+	ex6.smt2 \
+	opisavailable-12.smt2 \
+	ricart-agrawala6.smt2 \
+	set8.smt2 \
+	smtlib384a03.smt2 \
+	smtlib46f14a.smt2 \
+	smtlibf957ea.smt2 \
+	gauss_init_0030.fof.smt2 \
+	qcft-javafe.filespace.TreeWalker.006.smt2 \
+	qcft-smtlib3dbc51.smt2 \
+	javafe.ast.StmtVec.009.smt2 \
+	ARI176e1.smt2 \
+	bi-artm-s.smt2 \
+	simp-typ-test.smt2 \
+	macros-int-real.smt2 \
+	stream-x2014-09-18-unsat.smt2 \
+	simp-len.smt2 \
+	is-even.smt2 \
+	is-even-pred.smt2 \
+	delta-simp.smt2  \
+	nested-delta.smt2 \
+	nested-inf.smt2 \
+	RND-small.smt2 \
+	clock-3.smt2 \
+	006-cbqi-ite.smt2 \
+	cbqi-lia-dt-simp.smt2 \
+	is-int.smt2 \
+	floor.smt2 \
+	array-unsat-simp3.smt2 \
+	mix-simp.smt2 \
+	mix-coeff.smt2 \
+	mix-match.smt2 \
+	ari056.smt2 \
+	ext-ex-deq-trigger.smt2 \
+	matching-lia-1arg.smt2 \
+	RND_4_16.smt2 \
+	cdt-0208-to.smt2 \
+	psyco-196.smt2 \
+	agg-rew-test.smt2 \
+	agg-rew-test-cf.smt2 \
+	rew-to-0211-dd.smt2 \
+	rew-to-scala.smt2 \
+	macro-subtype-param.smt2 \
+	macros-real-arg.smt2 \
+	subtype-param-unk.smt2 \
+	subtype-param.smt2 \
+	anti-sk-simp.smt2 \
+	pure_dt_cbqi.smt2 \
+	florian-case-ax.smt2 \
+	double-pattern.smt2 \
+	qcf-rel-dom-opt.smt2 \
+	parametric-lists.smt2 \
+	partial-trigger.smt2 \
+	inst-max-level-segf.smt2 \
+	small-bug1-fixpoint-3.smt2 \
+	z3.620661-no-fv-trigger.smt2 \
+	bug_743.smt2 \
+	quaternion_ds1_symm_0428.fof.smt2 \
+	bug749-rounding.smt2 \
+	RNDPRE_4_1-dd-nqe.smt2 \
+	mix-complete-strat.smt2
+
+
+# regression can be solved with --finite-model-find --fmf-inst-engine
+# set3.smt2
+
+
+# removed because they take more than 20s
+#		javafe.ast.ArrayInit.35.smt2 \
+#		javafe.ast.StandardPrettyPrint.319.smt2 \
+#		javafe.ast.StmtVec.009.smt2 \
+#		javafe.ast.WhileStmt.447.smt2 \
+#		javafe.tc.CheckCompilationUnit.001.smt2 \
+#		javafe.tc.FlowInsensitiveChecks.682.smt2 \
+#		clock-10.smt2
+#
+
+EXTRA_DIST = $(TESTS) \
+	bug291.smt2.expect
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/quantifiers/Makefile.in b/test/regress/regress0/quantifiers/Makefile.in
new file mode 100644
index 0000000..21a5afb
--- /dev/null
+++ b/test/regress/regress0/quantifiers/Makefile.in
@@ -0,0 +1,1557 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/quantifiers
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	bug269.smt2 \
+	bug290.smt2 \
+	bug291.smt2 \
+	Arrays_Q1-noinfer.smt2 \
+	bignum_quant.smt2 \
+	bug269.smt2 \
+	burns13.smt2 \
+	burns4.smt2 \
+	ex3.smt2 \
+	ex6.smt2 \
+	opisavailable-12.smt2 \
+	ricart-agrawala6.smt2 \
+	set8.smt2 \
+	smtlib384a03.smt2 \
+	smtlib46f14a.smt2 \
+	smtlibf957ea.smt2 \
+	gauss_init_0030.fof.smt2 \
+	qcft-javafe.filespace.TreeWalker.006.smt2 \
+	qcft-smtlib3dbc51.smt2 \
+	javafe.ast.StmtVec.009.smt2 \
+	ARI176e1.smt2 \
+	bi-artm-s.smt2 \
+	simp-typ-test.smt2 \
+	macros-int-real.smt2 \
+	stream-x2014-09-18-unsat.smt2 \
+	simp-len.smt2 \
+	is-even.smt2 \
+	is-even-pred.smt2 \
+	delta-simp.smt2  \
+	nested-delta.smt2 \
+	nested-inf.smt2 \
+	RND-small.smt2 \
+	clock-3.smt2 \
+	006-cbqi-ite.smt2 \
+	cbqi-lia-dt-simp.smt2 \
+	is-int.smt2 \
+	floor.smt2 \
+	array-unsat-simp3.smt2 \
+	mix-simp.smt2 \
+	mix-coeff.smt2 \
+	mix-match.smt2 \
+	ari056.smt2 \
+	ext-ex-deq-trigger.smt2 \
+	matching-lia-1arg.smt2 \
+	RND_4_16.smt2 \
+	cdt-0208-to.smt2 \
+	psyco-196.smt2 \
+	agg-rew-test.smt2 \
+	agg-rew-test-cf.smt2 \
+	rew-to-0211-dd.smt2 \
+	rew-to-scala.smt2 \
+	macro-subtype-param.smt2 \
+	macros-real-arg.smt2 \
+	subtype-param-unk.smt2 \
+	subtype-param.smt2 \
+	anti-sk-simp.smt2 \
+	pure_dt_cbqi.smt2 \
+	florian-case-ax.smt2 \
+	double-pattern.smt2 \
+	qcf-rel-dom-opt.smt2 \
+	parametric-lists.smt2 \
+	partial-trigger.smt2 \
+	inst-max-level-segf.smt2 \
+	small-bug1-fixpoint-3.smt2 \
+	z3.620661-no-fv-trigger.smt2 \
+	bug_743.smt2 \
+	quaternion_ds1_symm_0428.fof.smt2 \
+	bug749-rounding.smt2 \
+	RNDPRE_4_1-dd-nqe.smt2 \
+	mix-complete-strat.smt2
+
+
+# regression can be solved with --finite-model-find --fmf-inst-engine
+# set3.smt2
+
+# removed because they take more than 20s
+#		javafe.ast.ArrayInit.35.smt2 \
+#		javafe.ast.StandardPrettyPrint.319.smt2 \
+#		javafe.ast.StmtVec.009.smt2 \
+#		javafe.ast.WhileStmt.447.smt2 \
+#		javafe.tc.CheckCompilationUnit.001.smt2 \
+#		javafe.tc.FlowInsensitiveChecks.682.smt2 \
+#		clock-10.smt2
+#
+EXTRA_DIST = $(TESTS) \
+	bug291.smt2.expect
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/quantifiers/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/quantifiers/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+bug269.smt2.log: bug269.smt2
+	@p='bug269.smt2'; \
+	b='bug269.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug290.smt2.log: bug290.smt2
+	@p='bug290.smt2'; \
+	b='bug290.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug291.smt2.log: bug291.smt2
+	@p='bug291.smt2'; \
+	b='bug291.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+Arrays_Q1-noinfer.smt2.log: Arrays_Q1-noinfer.smt2
+	@p='Arrays_Q1-noinfer.smt2'; \
+	b='Arrays_Q1-noinfer.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bignum_quant.smt2.log: bignum_quant.smt2
+	@p='bignum_quant.smt2'; \
+	b='bignum_quant.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+burns13.smt2.log: burns13.smt2
+	@p='burns13.smt2'; \
+	b='burns13.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+burns4.smt2.log: burns4.smt2
+	@p='burns4.smt2'; \
+	b='burns4.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ex3.smt2.log: ex3.smt2
+	@p='ex3.smt2'; \
+	b='ex3.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ex6.smt2.log: ex6.smt2
+	@p='ex6.smt2'; \
+	b='ex6.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+opisavailable-12.smt2.log: opisavailable-12.smt2
+	@p='opisavailable-12.smt2'; \
+	b='opisavailable-12.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ricart-agrawala6.smt2.log: ricart-agrawala6.smt2
+	@p='ricart-agrawala6.smt2'; \
+	b='ricart-agrawala6.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+set8.smt2.log: set8.smt2
+	@p='set8.smt2'; \
+	b='set8.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+smtlib384a03.smt2.log: smtlib384a03.smt2
+	@p='smtlib384a03.smt2'; \
+	b='smtlib384a03.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+smtlib46f14a.smt2.log: smtlib46f14a.smt2
+	@p='smtlib46f14a.smt2'; \
+	b='smtlib46f14a.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+smtlibf957ea.smt2.log: smtlibf957ea.smt2
+	@p='smtlibf957ea.smt2'; \
+	b='smtlibf957ea.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+gauss_init_0030.fof.smt2.log: gauss_init_0030.fof.smt2
+	@p='gauss_init_0030.fof.smt2'; \
+	b='gauss_init_0030.fof.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+qcft-javafe.filespace.TreeWalker.006.smt2.log: qcft-javafe.filespace.TreeWalker.006.smt2
+	@p='qcft-javafe.filespace.TreeWalker.006.smt2'; \
+	b='qcft-javafe.filespace.TreeWalker.006.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+qcft-smtlib3dbc51.smt2.log: qcft-smtlib3dbc51.smt2
+	@p='qcft-smtlib3dbc51.smt2'; \
+	b='qcft-smtlib3dbc51.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+javafe.ast.StmtVec.009.smt2.log: javafe.ast.StmtVec.009.smt2
+	@p='javafe.ast.StmtVec.009.smt2'; \
+	b='javafe.ast.StmtVec.009.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ARI176e1.smt2.log: ARI176e1.smt2
+	@p='ARI176e1.smt2'; \
+	b='ARI176e1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bi-artm-s.smt2.log: bi-artm-s.smt2
+	@p='bi-artm-s.smt2'; \
+	b='bi-artm-s.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simp-typ-test.smt2.log: simp-typ-test.smt2
+	@p='simp-typ-test.smt2'; \
+	b='simp-typ-test.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+macros-int-real.smt2.log: macros-int-real.smt2
+	@p='macros-int-real.smt2'; \
+	b='macros-int-real.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+stream-x2014-09-18-unsat.smt2.log: stream-x2014-09-18-unsat.smt2
+	@p='stream-x2014-09-18-unsat.smt2'; \
+	b='stream-x2014-09-18-unsat.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simp-len.smt2.log: simp-len.smt2
+	@p='simp-len.smt2'; \
+	b='simp-len.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+is-even.smt2.log: is-even.smt2
+	@p='is-even.smt2'; \
+	b='is-even.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+is-even-pred.smt2.log: is-even-pred.smt2
+	@p='is-even-pred.smt2'; \
+	b='is-even-pred.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+delta-simp.smt2.log: delta-simp.smt2
+	@p='delta-simp.smt2'; \
+	b='delta-simp.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+nested-delta.smt2.log: nested-delta.smt2
+	@p='nested-delta.smt2'; \
+	b='nested-delta.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+nested-inf.smt2.log: nested-inf.smt2
+	@p='nested-inf.smt2'; \
+	b='nested-inf.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+RND-small.smt2.log: RND-small.smt2
+	@p='RND-small.smt2'; \
+	b='RND-small.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+clock-3.smt2.log: clock-3.smt2
+	@p='clock-3.smt2'; \
+	b='clock-3.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+006-cbqi-ite.smt2.log: 006-cbqi-ite.smt2
+	@p='006-cbqi-ite.smt2'; \
+	b='006-cbqi-ite.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cbqi-lia-dt-simp.smt2.log: cbqi-lia-dt-simp.smt2
+	@p='cbqi-lia-dt-simp.smt2'; \
+	b='cbqi-lia-dt-simp.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+is-int.smt2.log: is-int.smt2
+	@p='is-int.smt2'; \
+	b='is-int.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+floor.smt2.log: floor.smt2
+	@p='floor.smt2'; \
+	b='floor.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+array-unsat-simp3.smt2.log: array-unsat-simp3.smt2
+	@p='array-unsat-simp3.smt2'; \
+	b='array-unsat-simp3.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mix-simp.smt2.log: mix-simp.smt2
+	@p='mix-simp.smt2'; \
+	b='mix-simp.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mix-coeff.smt2.log: mix-coeff.smt2
+	@p='mix-coeff.smt2'; \
+	b='mix-coeff.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mix-match.smt2.log: mix-match.smt2
+	@p='mix-match.smt2'; \
+	b='mix-match.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ari056.smt2.log: ari056.smt2
+	@p='ari056.smt2'; \
+	b='ari056.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ext-ex-deq-trigger.smt2.log: ext-ex-deq-trigger.smt2
+	@p='ext-ex-deq-trigger.smt2'; \
+	b='ext-ex-deq-trigger.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+matching-lia-1arg.smt2.log: matching-lia-1arg.smt2
+	@p='matching-lia-1arg.smt2'; \
+	b='matching-lia-1arg.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+RND_4_16.smt2.log: RND_4_16.smt2
+	@p='RND_4_16.smt2'; \
+	b='RND_4_16.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cdt-0208-to.smt2.log: cdt-0208-to.smt2
+	@p='cdt-0208-to.smt2'; \
+	b='cdt-0208-to.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+psyco-196.smt2.log: psyco-196.smt2
+	@p='psyco-196.smt2'; \
+	b='psyco-196.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+agg-rew-test.smt2.log: agg-rew-test.smt2
+	@p='agg-rew-test.smt2'; \
+	b='agg-rew-test.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+agg-rew-test-cf.smt2.log: agg-rew-test-cf.smt2
+	@p='agg-rew-test-cf.smt2'; \
+	b='agg-rew-test-cf.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rew-to-0211-dd.smt2.log: rew-to-0211-dd.smt2
+	@p='rew-to-0211-dd.smt2'; \
+	b='rew-to-0211-dd.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rew-to-scala.smt2.log: rew-to-scala.smt2
+	@p='rew-to-scala.smt2'; \
+	b='rew-to-scala.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+macro-subtype-param.smt2.log: macro-subtype-param.smt2
+	@p='macro-subtype-param.smt2'; \
+	b='macro-subtype-param.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+macros-real-arg.smt2.log: macros-real-arg.smt2
+	@p='macros-real-arg.smt2'; \
+	b='macros-real-arg.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+subtype-param-unk.smt2.log: subtype-param-unk.smt2
+	@p='subtype-param-unk.smt2'; \
+	b='subtype-param-unk.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+subtype-param.smt2.log: subtype-param.smt2
+	@p='subtype-param.smt2'; \
+	b='subtype-param.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+anti-sk-simp.smt2.log: anti-sk-simp.smt2
+	@p='anti-sk-simp.smt2'; \
+	b='anti-sk-simp.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pure_dt_cbqi.smt2.log: pure_dt_cbqi.smt2
+	@p='pure_dt_cbqi.smt2'; \
+	b='pure_dt_cbqi.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+florian-case-ax.smt2.log: florian-case-ax.smt2
+	@p='florian-case-ax.smt2'; \
+	b='florian-case-ax.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+double-pattern.smt2.log: double-pattern.smt2
+	@p='double-pattern.smt2'; \
+	b='double-pattern.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+qcf-rel-dom-opt.smt2.log: qcf-rel-dom-opt.smt2
+	@p='qcf-rel-dom-opt.smt2'; \
+	b='qcf-rel-dom-opt.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+parametric-lists.smt2.log: parametric-lists.smt2
+	@p='parametric-lists.smt2'; \
+	b='parametric-lists.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+partial-trigger.smt2.log: partial-trigger.smt2
+	@p='partial-trigger.smt2'; \
+	b='partial-trigger.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+inst-max-level-segf.smt2.log: inst-max-level-segf.smt2
+	@p='inst-max-level-segf.smt2'; \
+	b='inst-max-level-segf.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+small-bug1-fixpoint-3.smt2.log: small-bug1-fixpoint-3.smt2
+	@p='small-bug1-fixpoint-3.smt2'; \
+	b='small-bug1-fixpoint-3.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+z3.620661-no-fv-trigger.smt2.log: z3.620661-no-fv-trigger.smt2
+	@p='z3.620661-no-fv-trigger.smt2'; \
+	b='z3.620661-no-fv-trigger.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug_743.smt2.log: bug_743.smt2
+	@p='bug_743.smt2'; \
+	b='bug_743.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+quaternion_ds1_symm_0428.fof.smt2.log: quaternion_ds1_symm_0428.fof.smt2
+	@p='quaternion_ds1_symm_0428.fof.smt2'; \
+	b='quaternion_ds1_symm_0428.fof.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug749-rounding.smt2.log: bug749-rounding.smt2
+	@p='bug749-rounding.smt2'; \
+	b='bug749-rounding.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+RNDPRE_4_1-dd-nqe.smt2.log: RNDPRE_4_1-dd-nqe.smt2
+	@p='RNDPRE_4_1-dd-nqe.smt2'; \
+	b='RNDPRE_4_1-dd-nqe.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mix-complete-strat.smt2.log: mix-complete-strat.smt2
+	@p='mix-complete-strat.smt2'; \
+	b='mix-complete-strat.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/quantifiers/RND-small.smt2 b/test/regress/regress0/quantifiers/RND-small.smt2
new file mode 100644
index 0000000..1401e5d
--- /dev/null
+++ b/test/regress/regress0/quantifiers/RND-small.smt2
@@ -0,0 +1,9 @@
+; COMMAND-LINE: --cbqi-recurse
+; EXPECT: sat
+(set-logic LRA)
+(declare-fun y1 () Real)
+(declare-fun y2 () Real)
+(declare-fun x1 () Real)
+(assert (forall ((?y1 Real)) (exists ((?y2 Real)) (or (and (>= (+ (+ (* 69 ?y2) (* (- 80) ?y1)) (* 48 x1)) (- 77)) (and (not (= (+ (* (- 1) ?y2) (* (- 48) x1)) 0)) (not (= (+ (* 14 ?y1) (* (- 98) x1)) 83)))) (and (and (<= (+ (+ (* (- 95) ?y2) (* 34 ?y1)) (* (- 54) x1)) 51) (= (+ (+ (* 27 ?y2) (* (- 17) ?y1)) (* 75 x1)) 24)) (not (= (+ (* (- 96) ?y1) (* 90 x1)) (- 39))))))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/RNDPRE_4_1-dd-nqe.smt2 b/test/regress/regress0/quantifiers/RNDPRE_4_1-dd-nqe.smt2
new file mode 100644
index 0000000..6379d6c
--- /dev/null
+++ b/test/regress/regress0/quantifiers/RNDPRE_4_1-dd-nqe.smt2
@@ -0,0 +1,18 @@
+; COMMAND-LINE: --cbqi-nested-qe
+; EXPECT: unsat
+(set-logic LRA)
+
+(declare-fun c () Real)
+
+(assert 
+(forall ((?x2 Real)) 
+(exists ((?x3 Real)) 
+(and
+(forall ((?x4 Real)) (or 
+(not (>= ?x4 4)) 
+(and (> c (+ ?x2 ?x3)) (> (+ c ?x3 ?x4) 0))) )
+(not (> (+ c ?x2 ?x3) 0)) )
+)) )
+
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/RND_4_16.smt2 b/test/regress/regress0/quantifiers/RND_4_16.smt2
new file mode 100644
index 0000000..2bdb1f5
--- /dev/null
+++ b/test/regress/regress0/quantifiers/RND_4_16.smt2
@@ -0,0 +1,10 @@
+(set-logic LRA)
+(set-info :status unsat)
+(declare-fun y2 () Real)
+(declare-fun y3 () Real)
+(declare-fun y4 () Real)
+(declare-fun x1 () Real)
+(declare-fun y1 () Real)
+(assert (or (and (and (and (exists ((?y2 Real)) (or (forall ((?y3 Real)) (forall ((?y4 Real)) (or (< (+ (+ (* (- 53) ?y4) (* 77 ?y3)) (* 51 ?y2)) 79) (not (= (* (- 56) ?y4) 0))))) (or (exists ((?y3 Real)) (not (= (+ (* (- 94) ?y2) (* 90 x1)) (- 54)))) (and (<= (+ (* (- 28) ?y2) (* 4 x1)) 62) (exists ((?y3 Real)) (>= (+ (+ (* (- 83) ?y3) (* (- 2) ?y2)) (* 78 x1)) 34)))))) (forall ((?y1 Real)) (forall ((?y2 Real)) (and (forall ((?y4 Real)) (or (= (+ (* (- 27) ?y1) (* (- 64) x1)) 12) (< (+  [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/agg-rew-test-cf.smt2 b/test/regress/regress0/quantifiers/agg-rew-test-cf.smt2
new file mode 100644
index 0000000..44f475d
--- /dev/null
+++ b/test/regress/regress0/quantifiers/agg-rew-test-cf.smt2
@@ -0,0 +1,5 @@
+(set-logic UFLIA)
+(set-info :status sat)
+(declare-fun Q (Int Int) Bool)
+(assert (forall ((x Int)) (or (and (or (Q 0 x) (Q 1 x)) (Q 2 x)) (not (Q 2 x)) (not (Q 1 x)))))
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/agg-rew-test.smt2 b/test/regress/regress0/quantifiers/agg-rew-test.smt2
new file mode 100644
index 0000000..d115927
--- /dev/null
+++ b/test/regress/regress0/quantifiers/agg-rew-test.smt2
@@ -0,0 +1,5 @@
+(set-logic UFLIA)
+(set-info :status sat)
+(declare-fun Q (Int Int) Bool)
+(assert (forall ((x Int)) (=> (Q 0 x) (or (ite (Q 0 x) (not (Q 2 x)) (Q 3 x)) (Q 2 x)))))
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/anti-sk-simp.smt2 b/test/regress/regress0/quantifiers/anti-sk-simp.smt2
new file mode 100644
index 0000000..ba4f9cb
--- /dev/null
+++ b/test/regress/regress0/quantifiers/anti-sk-simp.smt2
@@ -0,0 +1,10 @@
+; COMMAND-LINE: --quant-anti-skolem
+; EXPECT: unsat
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-fun f (Int) Int)
+(declare-fun a () Int)
+(declare-fun b () Int)
+(assert (forall ((X Int)) (< X (f X))))
+(assert (forall ((X Int)) (> (+ a b) (f X))))
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/ari056.smt2 b/test/regress/regress0/quantifiers/ari056.smt2
new file mode 100644
index 0000000..ed4d2bf
--- /dev/null
+++ b/test/regress/regress0/quantifiers/ari056.smt2
@@ -0,0 +1,4 @@
+(set-logic UFNIRA)
+(set-info :status unsat)
+(assert (forall ((X Int)) (= X 12) ))
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/array-unsat-simp3.smt2 b/test/regress/regress0/quantifiers/array-unsat-simp3.smt2
new file mode 100644
index 0000000..9dade20
--- /dev/null
+++ b/test/regress/regress0/quantifiers/array-unsat-simp3.smt2
@@ -0,0 +1,23 @@
+; COMMAND-LINE: --full-saturate-quant
+; EXPECT: unsat
+(set-logic AUFLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-sort Index 0)
+(declare-sort Element 0)
+(declare-sort Array_uf 0)
+(declare-fun store_uf (Array_uf Index Element) Array_uf)
+(declare-fun select_uf (Array_uf Index) Element)
+(declare-fun a1 () Array_uf)
+(declare-fun e1 () Element)
+(declare-fun e2 () Element)
+(declare-fun i1 () Index)
+(declare-fun i2 () Index)
+(assert (forall ((?a Array_uf) (?i Index) (?e Element)) (= (select_uf (store_uf ?a ?i ?e) ?i) ?e)))
+(assert (forall ((?a Array_uf) (?i Index) (?j Index) (?e Element)) (or (= ?i ?j)(= (select_uf (store_uf ?a ?i ?e) ?j) (select_uf ?a ?j)))))
+(assert (forall ((?a Array_uf) (?b Array_uf)) (=> (forall ((?i Index)) (= (select_uf ?a ?i) (select_uf ?b ?i))) (= ?a ?b))))
+(assert (not (= i1 i2)))
+(assert (not (= (store_uf (store_uf a1 i1 e1) i2 e2) (store_uf (store_uf a1 i2 e2) i1 e1))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/bi-artm-s.smt2 b/test/regress/regress0/quantifiers/bi-artm-s.smt2
new file mode 100644
index 0000000..b97c339
--- /dev/null
+++ b/test/regress/regress0/quantifiers/bi-artm-s.smt2
@@ -0,0 +1,29 @@
+; COMMAND-LINE: --fmf-bound-lazy
+; EXPECT: unsat
+(set-option :incremental "false")
+(set-info :status unsat)
+(set-logic ALL_SUPPORTED)
+(declare-fun Y () String)
+(set-info :notes "ufP_1 is uf type conv P")
+(declare-fun ufP_1 (Int) Int)
+(set-info :notes "ufM_2 is uf type conv M")
+(declare-fun ufM_2 (Int) Int)
+(declare-fun z1_3 () String)
+(declare-fun z2_4 () String)
+(declare-fun z3_5 () String)
+(declare-fun V_253 () String) 
+(declare-fun V_254 () String)
+
+(assert (or (= Y "1") (= Y "0")))
+(assert (>= (ufP_1 0) 32))
+(assert 
+
+(forall ((V_243 Int)) 
+(or 
+(not (and (>= V_243 0) (>= (+ (str.len Y) (* (- 1) V_243)) 1))) 
+(and 
+(or (not (= (str.len Y) (+ 1 V_243))) (= (ufP_1 V_243) (ufM_2 V_243))) 
+(not (>= (ufM_2 V_243) 10)) 
+(not (or (not (= (str.len Y) (+ 1 V_243 (str.len V_253)))) (not (= Y (str.++ V_253 (ite (= (ufM_2 V_243) 0) "0" "1") V_254)))) ))) ))
+
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/bignum_quant.smt2 b/test/regress/regress0/quantifiers/bignum_quant.smt2
new file mode 100644
index 0000000..74b08a2
--- /dev/null
+++ b/test/regress/regress0/quantifiers/bignum_quant.smt2
@@ -0,0 +1,12 @@
+(set-logic AUFLIA)
+(set-info :source | SMT-COMP'06 organizers |)
+(set-info :smt-lib-version 2.0)
+(set-info :category "check")
+(set-info :status unsat)
+(set-info :notes |This benchmark is designed to check if the DP supports bignumbers.|)
+(declare-fun f (Int) Int)
+(assert (= (f 0) 1))
+(assert (forall ((?x Int)) (=> (> ?x 0) (= (f ?x) (* (- 1000) (f (- ?x 1)))))))
+(assert (< (f 20) 0))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/bug269.smt2 b/test/regress/regress0/quantifiers/bug269.smt2
new file mode 100644
index 0000000..2e50030
--- /dev/null
+++ b/test/regress/regress0/quantifiers/bug269.smt2
@@ -0,0 +1,24 @@
+; COMMAND-LINE: --full-saturate-quant
+; EXPECT: unsat
+(set-logic LRA)
+(set-info :status unsat)
+(declare-fun x4 () Real)
+(declare-fun x3 () Real)
+(assert (forall ((?lambda Real)) 
+
+(let ((?v_26 (* (- 1) x4))) 
+(let ((?v_28 (+ ?lambda (* (/ 3 40) x4)))) 
+ 
+(and 
+(<= (+ ?lambda (* (/ 1 60) x4)) (/ 400 3)) 
+(<= (+ (* (- 1) ?lambda) (* (/ (- 1) 60) x4)) (/ (- 731) 6))
+(<= ?v_28 610) 
+(<= ?v_28 359) 
+(<= ?v_26 (- 4100)) 
+(<= ?v_26 (- 4500)) 
+(<= ?v_26 (- 4910)) 
+))
+ 
+ )))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/bug290.smt2 b/test/regress/regress0/quantifiers/bug290.smt2
new file mode 100644
index 0000000..650d6aa
--- /dev/null
+++ b/test/regress/regress0/quantifiers/bug290.smt2
@@ -0,0 +1,20 @@
+(set-logic AUFLIA)
+(set-info :source | Simple list theorem |)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-sort List 0)
+(declare-sort Elem 0)
+(declare-fun cons (Elem List) List)
+(declare-fun nil () List)
+(declare-fun len (List) Int)
+(assert (= (len nil) 0))
+(assert (forall ((?x Elem) (?y List)) (= (len (cons ?x ?y)) (+ (len ?y) 1))))
+(declare-fun append (List List) List)
+(assert (forall ((?y List)) (= (append nil ?y) ?y)))
+(assert (forall ((?x Elem) (?y1 List) (?y2 List)) (= (append (cons ?x ?y1) ?y2) (cons ?x (append ?y1 ?y2)))))
+(declare-fun x () Elem)
+(declare-fun y () List)
+(assert (not (= (append (cons x nil) y) (cons x y))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/bug291.smt2 b/test/regress/regress0/quantifiers/bug291.smt2
new file mode 100644
index 0000000..b39e415
--- /dev/null
+++ b/test/regress/regress0/quantifiers/bug291.smt2
@@ -0,0 +1,14 @@
+(set-logic AUFLIA)
+(set-info :source | 
+  Boogie/Spec# benchmarks.
+  This benchmark was translated by Michal Moskal.
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status sat)
+(declare-fun select2 (Int) Int)
+(declare-fun store2 (Int) Int)
+(assert (forall ((?A Int) (?o Int) (?f Int) (?p Int) (?g Int) (?v Int)) (=> (not (= ?o ?p)) (= (select2 (store2 ?A)) (select2 ?A)))))
+(check-sat)
+(get-info :reason-unknown)
+(exit)
diff --git a/test/regress/regress0/quantifiers/bug291.smt2.expect b/test/regress/regress0/quantifiers/bug291.smt2.expect
new file mode 100644
index 0000000..f97ed61
--- /dev/null
+++ b/test/regress/regress0/quantifiers/bug291.smt2.expect
@@ -0,0 +1,2 @@
+% EXPECT: unknown
+% EXPECT: (:reason-unknown incomplete)
\ No newline at end of file
diff --git a/test/regress/regress0/quantifiers/bug749-rounding.smt2 b/test/regress/regress0/quantifiers/bug749-rounding.smt2
new file mode 100644
index 0000000..5fea8d4
--- /dev/null
+++ b/test/regress/regress0/quantifiers/bug749-rounding.smt2
@@ -0,0 +1,11 @@
+; COMMAND-LINE: --var-ineq-elim-quant
+; EXPECT: unknown
+(set-logic UFLIRA)
+
+(declare-fun round2 (Real) Int)
+
+(assert (forall ((x Real) (i Int)) (=> (<= x (to_real i)) (<= (round2 x) i)) ))
+(assert (forall ((x Real) (i Int)) (=> (<= (to_real i) x) (<= i (round2 x))) ))
+
+
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/bug_743.smt2 b/test/regress/regress0/quantifiers/bug_743.smt2
new file mode 100644
index 0000000..4e3ee0c
--- /dev/null
+++ b/test/regress/regress0/quantifiers/bug_743.smt2
@@ -0,0 +1,774 @@
+;; produced by cvc4_14.drv ;;
+(set-logic AUFBVDTNIRA)
+(set-info :source |VC generated by SPARK 2014|)
+(set-info :smt-lib-version 2.0)
+(set-info :category industrial)
+(set-info :status unsat)
+;;; generated by SMT-LIB2 driver
+;;; SMT-LIB2 driver: bit-vectors, common part
+;;; SMT-LIB2: integer arithmetic
+(declare-datatypes () ((tuple0 (Tuple0))))
+(declare-sort us_private 0)
+
+(declare-fun us_null_ext__ () us_private)
+
+(declare-sort us_type_of_heap 0)
+
+(declare-datatypes ()
+((us_type_of_heap__ref
+ (mk___type_of_heap__ref (us_type_of_heap__content us_type_of_heap)))))
+(declare-sort us_image 0)
+
+(declare-datatypes () ((int__ref (mk_int__ref (int__content Int)))))
+(declare-datatypes () ((bool__ref (mk_bool__ref (bool__content Bool)))))
+(declare-datatypes () ((real__ref (mk_real__ref (real__content Real)))))
+(declare-datatypes ()
+((us_private__ref (mk___private__ref (us_private__content us_private)))))
+(define-fun int__ref___projection ((a int__ref)) Int (int__content a))
+
+(define-fun bool__ref___projection ((a bool__ref)) Bool (bool__content a))
+
+(define-fun real__ref___projection ((a real__ref)) Real (real__content a))
+
+(define-fun us_private__ref___projection ((a us_private__ref)) us_private
+  (us_private__content a))
+
+(declare-fun us_compatible_tags (Int Int) Bool)
+
+;; __compatible_tags_refl
+  (assert (forall ((tag Int)) (us_compatible_tags tag tag)))
+
+(define-fun to_int1 ((b Bool)) Int (ite (= b true) 1 0))
+
+(define-fun of_int ((i Int)) Bool (ite (= i 0) false true))
+
+(define-fun in_range ((x Int)) Bool (or (= x 0) (= x 1)))
+
+(declare-fun attr__ATTRIBUTE_IMAGE (Bool) us_image)
+
+(declare-fun attr__ATTRIBUTE_VALUE__pre_check (us_image) Bool)
+
+(declare-fun attr__ATTRIBUTE_VALUE (us_image) Bool)
+
+(declare-sort integer 0)
+
+(define-fun in_range1 ((x Int)) Bool (and (<= (- 2147483648) x)
+                                     (<= x 2147483647)))
+
+(define-fun bool_eq ((x Int) (y Int)) Bool (ite (= x y) true false))
+
+(declare-fun attr__ATTRIBUTE_IMAGE1 (Int) us_image)
+
+(declare-fun attr__ATTRIBUTE_VALUE__pre_check1 (us_image) Bool)
+
+(declare-fun attr__ATTRIBUTE_VALUE1 (us_image) Int)
+
+(declare-fun to_rep (integer) Int)
+
+(declare-fun of_rep (Int) integer)
+
+(declare-fun user_eq (integer integer) Bool)
+
+(declare-fun dummy () integer)
+
+;; inversion_axiom
+  (assert
+  (forall ((x integer)) (! (= (of_rep (to_rep x)) x) :pattern ((to_rep x)) 
+)))
+
+;; range_axiom
+  (assert
+  (forall ((x integer)) (! (in_range1 (to_rep x)) :pattern ((to_rep x)) 
+)))
+
+;; coerce_axiom
+  (assert
+  (forall ((x Int))
+  (! (=> (in_range1 x) (= (to_rep (of_rep x)) x)) :pattern ((to_rep
+                                                            (of_rep x))) 
+)))
+
+(declare-datatypes ()
+((integer__ref (mk_integer__ref (integer__content integer)))))
+(define-fun integer__ref___projection ((a integer__ref)) integer 
+(integer__content
+                                                                 a))
+
+(declare-sort natural 0)
+
+(define-fun in_range2 ((x Int)) Bool (and (<= 0 x) (<= x 2147483647)))
+
+(define-fun bool_eq1 ((x Int) (y Int)) Bool (ite (= x y) true false))
+
+(declare-fun attr__ATTRIBUTE_IMAGE2 (Int) us_image)
+
+(declare-fun attr__ATTRIBUTE_VALUE__pre_check2 (us_image) Bool)
+
+(declare-fun attr__ATTRIBUTE_VALUE2 (us_image) Int)
+
+(declare-fun to_rep1 (natural) Int)
+
+(declare-fun of_rep1 (Int) natural)
+
+(declare-fun user_eq1 (natural natural) Bool)
+
+(declare-fun dummy1 () natural)
+
+;; inversion_axiom
+  (assert
+  (forall ((x natural))
+  (! (= (of_rep1 (to_rep1 x)) x) :pattern ((to_rep1 x)) )))
+
+;; range_axiom
+  (assert
+  (forall ((x natural)) (! (in_range2 (to_rep1 x)) :pattern ((to_rep1 x)) 
+)))
+
+;; coerce_axiom
+  (assert
+  (forall ((x Int))
+  (! (=> (in_range2 x) (= (to_rep1 (of_rep1 x)) x)) :pattern ((to_rep1
+                                                              (of_rep1 
+x))) )))
+
+(declare-datatypes ()
+((natural__ref (mk_natural__ref (natural__content natural)))))
+(define-fun natural__ref___projection ((a natural__ref)) natural 
+(natural__content
+                                                                 a))
+
+(define-fun dynamic_invariant ((temp___expr_33 Int) (temp___is_init_30 
+Bool)
+  (temp___do_constant_31 Bool)
+  (temp___do_toplevel_32 Bool)) Bool (=>
+                                     (or (= temp___is_init_30 true)
+                                     (<= 0 2147483647)) (in_range2
+                                     temp___expr_33)))
+
+(declare-sort index 0)
+
+(define-fun in_range3 ((x Int)) Bool (and (<= 1 x) (<= x 100)))
+
+(define-fun bool_eq2 ((x Int) (y Int)) Bool (ite (= x y) true false))
+
+(declare-fun attr__ATTRIBUTE_IMAGE3 (Int) us_image)
+
+(declare-fun attr__ATTRIBUTE_VALUE__pre_check3 (us_image) Bool)
+
+(declare-fun attr__ATTRIBUTE_VALUE3 (us_image) Int)
+
+(declare-fun to_rep2 (index) Int)
+
+(declare-fun of_rep2 (Int) index)
+
+(declare-fun user_eq2 (index index) Bool)
+
+(declare-fun dummy2 () index)
+
+;; inversion_axiom
+  (assert
+  (forall ((x index))
+  (! (= (of_rep2 (to_rep2 x)) x) :pattern ((to_rep2 x)) )))
+
+;; range_axiom
+  (assert
+  (forall ((x index)) (! (in_range3 (to_rep2 x)) :pattern ((to_rep2 x)) 
+)))
+
+;; coerce_axiom
+  (assert
+  (forall ((x Int))
+  (! (=> (in_range3 x) (= (to_rep2 (of_rep2 x)) x)) :pattern ((to_rep2
+                                                              (of_rep2 
+x))) )))
+
+(declare-datatypes () ((index__ref (mk_index__ref (index__content 
+index)))))
+(define-fun index__ref___projection ((a index__ref)) index (index__content 
+a))
+
+(define-fun dynamic_invariant1 ((temp___expr_144 Int)
+  (temp___is_init_141 Bool) (temp___do_constant_142 Bool)
+  (temp___do_toplevel_143 Bool)) Bool (=>
+                                      (or (= temp___is_init_141 true)
+                                      (<= 1 100)) (in_range3
+                                      temp___expr_144)))
+
+(declare-datatypes ()
+((map__ref (mk_map__ref (map__content (Array Int natural))))))
+(declare-fun bool_eq3 ((Array Int natural) Int Int (Array Int natural) Int
+  Int) Bool)
+
+;; T__ada_array___equal_def
+  (assert
+  (forall ((a (Array Int natural)))
+  (forall ((af Int))
+  (forall ((al Int))
+  (forall ((b (Array Int natural)))
+  (forall ((bf Int))
+  (forall ((bl Int))
+  (! (=
+     (and (ite (<= af al) (= (+ (- al af) 1) (+ (- bl bf) 1)) (< bl bf))
+     (forall ((i Int))
+     (! (=> (and (<= af i) (<= i al))
+        (= (select a i) (select b (+ (- bf af) i)))) :pattern ((select a 
+i)) )))
+     (= (bool_eq3 a af al b bf bl) true)) :pattern ((bool_eq3 a af al b bf
+                                                    bl)) ))))))))
+
+(declare-fun slide ((Array Int natural) Int Int) (Array Int natural))
+
+;; slide_eq
+  (assert
+  (forall ((a (Array Int natural)))
+  (forall ((first Int))
+  (! (= (slide a first first) a) :pattern ((slide a first first)) ))))
+
+;; slide_def
+  (assert
+  (forall ((a (Array Int natural)))
+  (forall ((old_first Int))
+  (forall ((new_first Int))
+  (forall ((i Int))
+  (! (= (select (slide a old_first new_first) i) (select a (- i (- 
+new_first old_first)))) :pattern ((select
+  (slide a old_first new_first) i)) ))))))
+
+(declare-fun concat1 ((Array Int natural) Int Int (Array Int natural) Int
+  Int) (Array Int natural))
+
+;; concat_def
+  (assert
+  (forall ((a (Array Int natural)) (b (Array Int natural)))
+  (forall ((a_first Int) (a_last Int) (b_first Int) (b_last Int))
+  (forall ((i Int))
+  (! (and
+     (=> (and (<= a_first i) (<= i a_last))
+     (= (select (concat1 a a_first a_last b b_first b_last) i) (select a 
+i)))
+     (=> (< a_last i)
+     (= (select (concat1 a a_first a_last b b_first b_last) i) (select b 
+(+ (- i a_last) (- b_first 1)))))) :pattern ((select
+  (concat1 a a_first a_last b b_first b_last) i)) )))))
+
+(declare-fun singleton (natural Int) (Array Int natural))
+
+;; singleton_def
+  (assert
+  (forall ((v natural))
+  (forall ((i Int))
+  (! (= (select (singleton v i) i) v) :pattern ((select (singleton v i) 
+i)) ))))
+
+(declare-fun compare ((Array Int natural) Int Int (Array Int natural) Int
+  Int) Int)
+
+;; compare_def
+  (assert
+  (forall ((a (Array Int natural)) (b (Array Int natural)))
+  (forall ((a_first Int) (a_last Int) (b_first Int) (b_last Int))
+  (! (and
+     (= (= (compare a a_first a_last b b_first b_last) 0)
+     (= (bool_eq3 a a_first a_last b b_first b_last) true))
+     (and
+     (= (< (compare a a_first a_last b b_first b_last) 0)
+     (exists ((i Int) (j Int))
+     (and (<= i a_last)
+     (and (< j b_last)
+     (and (= (bool_eq3 a a_first i b b_first j) true)
+     (or (= i a_last)
+     (and (< i a_last)
+     (< (to_rep1 (select a (+ i 1))) (to_rep1 (select b (+ j 1)))))))))))
+     (= (< 0 (compare a a_first a_last b b_first b_last))
+     (exists ((i Int) (j Int))
+     (and (<= i b_last)
+     (and (< j a_last)
+     (and (= (bool_eq3 a a_first j b b_first i) true)
+     (or (= i b_last)
+     (and (< i b_last)
+     (< (to_rep1 (select b (+ i 1))) (to_rep1 (select a (+ j 
+1))))))))))))) :pattern (
+  (compare a a_first a_last b b_first b_last)) ))))
+
+(declare-sort t 0)
+
+(declare-fun first (t) integer)
+
+(declare-fun last (t) integer)
+
+(declare-fun mk (Int Int) t)
+
+;; mk_def
+  (assert
+  (forall ((f Int) (l Int))
+  (! (=> (in_range1 f)
+     (=> (in_range1 l)
+     (and (= (to_rep (first (mk f l))) f) (= (to_rep (last (mk f l))) 
+l)))) :pattern (
+  (mk f l)) )))
+
+(define-fun dynamic_property ((range_first Int) (range_last Int) (low Int)
+  (high Int)) Bool (and (in_range1 low)
+                   (and (in_range1 high)
+                   (=> (<= low high) (and (in_range3 low) (in_range3 
+high))))))
+
+(declare-datatypes () ((us_t (mk___t (elts (Array Int natural))(rt t)))))
+(define-fun to_array ((a us_t)) (Array Int natural) (elts a))
+
+(define-fun of_array ((a (Array Int natural)) (f Int)
+  (l Int)) us_t (mk___t a (mk f l)))
+
+(define-fun first1 ((a us_t)) Int (to_rep (first (rt a))))
+
+(define-fun last1 ((a us_t)) Int (to_rep (last (rt a))))
+
+(define-fun length ((a us_t)) Int (ite (<= (first1 a) (last1 a))
+                                  (+ (- (last1 a) (first1 a)) 1) 0))
+
+(declare-fun value__size () Int)
+
+(declare-fun object__size ((Array Int natural)) Int)
+
+(declare-fun value__component__size () Int)
+
+(declare-fun object__component__size ((Array Int natural)) Int)
+
+(declare-fun value__alignment () Int)
+
+(declare-fun object__alignment ((Array Int natural)) Int)
+
+;; value__size_axiom
+  (assert (<= 0 value__size))
+
+;; object__size_axiom
+  (assert (forall ((a (Array Int natural))) (<= 0 (object__size a))))
+
+;; value__component__size_axiom
+  (assert (<= 0 value__component__size))
+
+;; object__component__size_axiom
+  (assert
+  (forall ((a (Array Int natural))) (<= 0 (object__component__size a))))
+
+;; value__alignment_axiom
+  (assert (<= 0 value__alignment))
+
+;; object__alignment_axiom
+  (assert (forall ((a (Array Int natural))) (<= 0 (object__alignment a))))
+
+(define-fun bool_eq4 ((x us_t)
+  (y us_t)) Bool (bool_eq3 (elts x) (to_rep (first (rt x)))
+                 (to_rep (last (rt x))) (elts y) (to_rep (first (rt y)))
+                 (to_rep (last (rt y)))))
+
+(declare-fun user_eq3 (us_t us_t) Bool)
+
+(declare-fun dummy3 () us_t)
+
+(declare-datatypes ()
+((nat_array__ref (mk_nat_array__ref (nat_array__content us_t)))))
+(define-fun nat_array__ref___projection ((a nat_array__ref)) us_t 
+(nat_array__content
+                                                                  a))
+
+(define-fun dynamic_invariant2 ((temp___expr_150 us_t)
+  (temp___is_init_147 Bool) (temp___do_constant_148 Bool)
+  (temp___do_toplevel_149 Bool)) Bool (=>
+                                      (not (= temp___do_constant_148 
+true))
+                                      (dynamic_property 1 100
+                                      (first1 temp___expr_150)
+                                      (last1 temp___expr_150))))
+
+(declare-fun remove_last (us_t) us_t)
+
+(declare-fun first2 () Int)
+
+(declare-fun last2 () Int)
+
+(define-fun dynamic_property1 ((first_int Int) (last_int Int)
+  (x Int)) Bool (and (<= first_int x) (<= x last_int)))
+
+(define-fun bool_eq5 ((x Int) (y Int)) Bool (ite (= x y) true false))
+
+(declare-fun attr__ATTRIBUTE_IMAGE4 (Int) us_image)
+
+(declare-fun attr__ATTRIBUTE_VALUE__pre_check4 (us_image) Bool)
+
+(declare-fun attr__ATTRIBUTE_VALUE4 (us_image) Int)
+
+(declare-fun user_eq4 (integer integer) Bool)
+
+(declare-fun dummy4 () integer)
+
+(declare-datatypes () ((t15s__ref (mk_t15s__ref (t15s__content 
+integer)))))
+(define-fun t15s__ref___projection ((a t15s__ref)) integer (t15s__content 
+a))
+
+(declare-sort t1 0)
+
+(declare-fun first3 (t1) integer)
+
+(declare-fun last3 (t1) integer)
+
+(declare-fun mk1 (Int Int) t1)
+
+;; mk_def
+  (assert
+  (forall ((f Int) (l Int))
+  (! (=> (in_range1 f)
+     (=> (in_range1 l)
+     (and (= (to_rep (first3 (mk1 f l))) f) (= (to_rep (last3 (mk1 f l))) 
+l)))) :pattern (
+  (mk1 f l)) )))
+
+(define-fun dynamic_property2 ((range_first Int) (range_last Int) (low 
+Int)
+  (high Int)) Bool (and (in_range1 low)
+                   (and (in_range1 high)
+                   (=> (<= low high)
+                   (and (dynamic_property1 range_first range_last low)
+                   (dynamic_property1 range_first range_last high))))))
+
+(declare-datatypes ()
+((us_t1 (mk___t1 (elts1 (Array Int natural))(rt1 t1)))))
+(define-fun to_array1 ((a us_t1)) (Array Int natural) (elts1 a))
+
+(define-fun of_array1 ((a (Array Int natural)) (f Int)
+  (l Int)) us_t1 (mk___t1 a (mk1 f l)))
+
+(define-fun first4 ((a us_t1)) Int (to_rep (first3 (rt1 a))))
+
+(define-fun last4 ((a us_t1)) Int (to_rep (last3 (rt1 a))))
+
+(define-fun length1 ((a us_t1)) Int (ite (<= (first4 a) (last4 a))
+                                    (+ (- (last4 a) (first4 a)) 1) 0))
+
+(declare-fun value__size1 () Int)
+
+(declare-fun object__size1 ((Array Int natural)) Int)
+
+(declare-fun value__component__size1 () Int)
+
+(declare-fun object__component__size1 ((Array Int natural)) Int)
+
+(declare-fun value__alignment1 () Int)
+
+(declare-fun object__alignment1 ((Array Int natural)) Int)
+
+;; value__size_axiom
+  (assert (<= 0 value__size1))
+
+;; object__size_axiom
+  (assert (forall ((a (Array Int natural))) (<= 0 (object__size1 a))))
+
+;; value__component__size_axiom
+  (assert (<= 0 value__component__size1))
+
+;; object__component__size_axiom
+  (assert
+  (forall ((a (Array Int natural))) (<= 0 (object__component__size1 a))))
+
+;; value__alignment_axiom
+  (assert (<= 0 value__alignment1))
+
+;; object__alignment_axiom
+  (assert (forall ((a (Array Int natural))) (<= 0 (object__alignment1 
+a))))
+
+(define-fun bool_eq6 ((x us_t1)
+  (y us_t1)) Bool (bool_eq3 (elts1 x) (to_rep (first3 (rt1 x)))
+                  (to_rep (last3 (rt1 x))) (elts1 y)
+                  (to_rep (first3 (rt1 y))) (to_rep (last3 (rt1 y)))))
+
+(declare-fun user_eq5 (us_t1 us_t1) Bool)
+
+(declare-fun dummy5 () us_t1)
+
+(declare-datatypes () ((t16s__ref (mk_t16s__ref (t16s__content us_t1)))))
+(define-fun t16s__ref___projection ((a t16s__ref)) us_t1 (t16s__content 
+a))
+
+;; remove_last__post_axiom
+  (assert
+  (forall ((a us_t))
+  (! (=> (and (dynamic_invariant2 a true true true) (< 0 (length a)))
+     (dynamic_invariant2 (remove_last a) true false true)) :pattern (
+  (remove_last a)) )))
+
+;; remove_last__def_axiom
+  (assert
+  (forall ((a us_t))
+  (! (=> (dynamic_invariant2 a true true true)
+     (= (remove_last a) (let ((temp___163 (let ((temp___162 (- (last1 a) 
+1)))
+                                          (let ((temp___161 (first1 a)))
+                                          (of_array1 (to_array a) 
+temp___161
+                                          temp___162)))))
+                        (of_array (to_array1 temp___163) (first4 
+temp___163)
+                        (last4 temp___163))))) :pattern ((remove_last a)) 
+)))
+
+(declare-fun occ (us_t Int) Int)
+
+(declare-sort nb_occ 0)
+
+(define-fun in_range4 ((x Int)) Bool (and (<= 0 x) (<= x 100)))
+
+(define-fun bool_eq7 ((x Int) (y Int)) Bool (ite (= x y) true false))
+
+(declare-fun attr__ATTRIBUTE_IMAGE5 (Int) us_image)
+
+(declare-fun attr__ATTRIBUTE_VALUE__pre_check5 (us_image) Bool)
+
+(declare-fun attr__ATTRIBUTE_VALUE5 (us_image) Int)
+
+(declare-fun to_rep3 (nb_occ) Int)
+
+(declare-fun of_rep3 (Int) nb_occ)
+
+(declare-fun user_eq6 (nb_occ nb_occ) Bool)
+
+(declare-fun dummy6 () nb_occ)
+
+;; inversion_axiom
+  (assert
+  (forall ((x nb_occ))
+  (! (= (of_rep3 (to_rep3 x)) x) :pattern ((to_rep3 x)) )))
+
+;; range_axiom
+  (assert
+  (forall ((x nb_occ)) (! (in_range4 (to_rep3 x)) :pattern ((to_rep3 x)) 
+)))
+
+;; coerce_axiom
+  (assert
+  (forall ((x Int))
+  (! (=> (in_range4 x) (= (to_rep3 (of_rep3 x)) x)) :pattern ((to_rep3
+                                                              (of_rep3 
+x))) )))
+
+(declare-datatypes ()
+((nb_occ__ref (mk_nb_occ__ref (nb_occ__content nb_occ)))))
+(define-fun nb_occ__ref___projection ((a nb_occ__ref)) nb_occ 
+(nb_occ__content
+                                                              a))
+
+(define-fun dynamic_invariant3 ((temp___expr_155 Int)
+  (temp___is_init_152 Bool) (temp___do_constant_153 Bool)
+  (temp___do_toplevel_154 Bool)) Bool (=>
+                                      (or (= temp___is_init_152 true)
+                                      (<= 0 100)) (in_range4
+                                      temp___expr_155)))
+
+(declare-fun occ_def (us_t Int) Int)
+
+;; occ__post_axiom
+  (assert
+  (forall ((a us_t))
+  (forall ((e Int))
+  (! (=> (and (dynamic_invariant2 a true true true) (in_range2 e))
+     (let ((result (occ a e)))
+     (and (<= result (length a)) (dynamic_invariant3 result true false 
+true)))) :pattern (
+  (occ a e)) ))))
+
+;; occ__def_axiom
+  (assert
+  (forall ((a us_t))
+  (forall ((e Int))
+  (! (=> (and (dynamic_invariant2 a true true true) (in_range2 e))
+     (= (occ a e) (occ_def a e))) :pattern ((occ a e)) ))))
+
+(declare-fun is_set (us_t Int Int us_t) Bool)
+
+;; is_set__def_axiom
+  (assert
+  (forall ((a us_t) (r us_t))
+  (forall ((i Int) (v Int))
+  (! (= (= (is_set a i v r) true)
+     (and
+     (and (and (= (first1 r) (first1 a)) (= (last1 r) (last1 a)))
+     (= (to_rep1 (select (to_array r) i)) v))
+     (forall ((j Int))
+     (=> (and (<= (first1 a) j) (<= j (last1 a)))
+     (=> (not (= i j))
+     (= (to_rep1 (select (to_array r) j)) (to_rep1 (select (to_array a) 
+j)))))))) :pattern (
+  (is_set a i v r)) ))))
+
+(declare-fun a () us_t)
+
+(declare-fun attr__ATTRIBUTE_ADDRESS () Int)
+
+(declare-fun i () Int)
+
+(declare-fun attr__ATTRIBUTE_ADDRESS1 () Int)
+
+(declare-fun v () Int)
+
+(declare-fun attr__ATTRIBUTE_ADDRESS2 () Int)
+
+(declare-fun e () Int)
+
+(declare-fun attr__ATTRIBUTE_ADDRESS3 () Int)
+
+(declare-fun r () us_t)
+
+(declare-fun attr__ATTRIBUTE_ADDRESS4 () Int)
+
+(declare-fun b__first () integer)
+
+(declare-fun b__last () integer)
+
+(declare-fun attr__ATTRIBUTE_ADDRESS5 () Int)
+
+(define-fun dynamic_invariant4 ((temp___expr_15 Int) (temp___is_init_12 
+Bool)
+  (temp___do_constant_13 Bool)
+  (temp___do_toplevel_14 Bool)) Bool (=>
+                                     (or (= temp___is_init_12 true)
+                                     (<= (- 2147483648) 2147483647))
+                                     (in_range1 temp___expr_15)))
+
+;; occ_def__def_axiom
+  (assert
+  (forall ((a1 us_t))
+  (forall ((e1 Int))
+  (! (=> (and (dynamic_invariant2 a1 true true true) (in_range2 e1))
+     (= (occ_def a1 e1) (ite (= (length a1) 0) 0
+                        (ite (= (to_rep1 (select (to_array a1) (last1 
+a1))) e1)
+                        (+ (occ_def (remove_last a1) e1) 1)
+                        (occ_def (remove_last a1) e1))))) :pattern 
+((occ_def
+                                                                    a1 
+e1)) ))))
+
+(declare-fun b () (Array Int natural))
+
+(declare-fun perm__occ_set__b__assume () (Array Int natural))
+
+(declare-fun perm__occ_set__b__assume1 () t)
+
+(declare-fun o () natural)
+
+(declare-fun o1 () Int)
+
+(declare-fun o2 () (Array Int natural))
+
+(declare-fun o3 () (Array Int natural))
+
+(declare-fun o4 () t)
+
+(declare-fun result () (Array Int natural))
+
+(declare-fun b1 () (Array Int natural))
+
+(declare-fun result1 () (Array Int natural))
+
+(declare-fun b2 () (Array Int natural))
+
+(define-fun o5 () us_t (mk___t o3 o4))
+
+(define-fun perm__occ_set__b__assume2 () us_t (mk___t
+                                              perm__occ_set__b__assume
+                                              perm__occ_set__b__assume1))
+
+;; H
+  (assert (dynamic_invariant2 a true false true))
+
+;; H
+  (assert (in_range3 i))
+
+;; H
+  (assert (in_range2 v))
+
+;; H
+  (assert (in_range2 e))
+
+;; H
+  (assert (dynamic_invariant2 r true false true))
+
+;; H
+  (assert
+  (and (and (<= (to_rep (first (rt a))) i) (<= i (to_rep (last (rt a)))))
+  (= (is_set a i v r) true)))
+
+;; H
+  (assert
+  (and (= perm__occ_set__b__assume2 (remove_last a))
+  (and (dynamic_invariant2 perm__occ_set__b__assume2 true false true)
+  (and (= (elts a) perm__occ_set__b__assume)
+  (= (mk
+     (to_rep
+     (first3 (mk1 (to_rep (first (rt a))) (- (to_rep (last (rt a))) 1))))
+     (to_rep
+     (last3 (mk1 (to_rep (first (rt a))) (- (to_rep (last (rt a))) 1)))))
+  perm__occ_set__b__assume1)))))
+
+;; H
+  (assert (= (mk_map__ref result) (mk_map__ref b)))
+
+;; H
+  (assert (= b1 perm__occ_set__b__assume))
+
+;; H
+  (assert (= (to_rep b__first) (to_rep (first 
+perm__occ_set__b__assume1))))
+
+;; H
+  (assert (= (to_rep b__last) (to_rep (last perm__occ_set__b__assume1))))
+
+;; H
+  (assert (dynamic_property 1 100 (to_rep b__first) (to_rep b__last)))
+
+;; H
+  (assert (not (= (length a) 0)))
+
+;; H
+  (assert (not (= i (to_rep (last (rt a))))))
+
+;; H
+  (assert (= (to_rep1 o) v))
+
+;; H
+  (assert (and (<= (to_rep b__first) i) (<= i (to_rep b__last))))
+
+;; H
+  (assert (= o1 i))
+
+;; H
+  (assert (= o2 (store b1 o1 o)))
+
+;; H
+  (assert (= b1 result1))
+
+;; H
+  (assert (= b2 o2))
+
+;; H
+  (assert
+  (and (= o5 (remove_last r))
+  (and (dynamic_invariant2 o5 true false true)
+  (and (= (elts r) o3)
+  (= (mk
+     (to_rep
+     (first3 (mk1 (to_rep (first (rt r))) (- (to_rep (last (rt r))) 1))))
+     (to_rep
+     (last3 (mk1 (to_rep (first (rt r))) (- (to_rep (last (rt r))) 1)))))
+  o4)))))
+
+(assert
+;; WP_parameter_def
+ ;; File "perm.ads", line 21, characters 0-0
+  (not
+  (= (bool_eq3 o3 (to_rep (first o4)) (to_rep (last o4)) b2
+     (to_rep (first (mk (to_rep b__first) (to_rep b__last))))
+     (to_rep (last (mk (to_rep b__first) (to_rep b__last))))) true)))
+(check-sat)
+
diff --git a/test/regress/regress0/quantifiers/burns13.smt2 b/test/regress/regress0/quantifiers/burns13.smt2
new file mode 100644
index 0000000..3424c16
--- /dev/null
+++ b/test/regress/regress0/quantifiers/burns13.smt2
@@ -0,0 +1,20 @@
+; COMMAND-LINE: --full-saturate-quant --decision=internal
+; EXPECT: unsat
+(set-logic AUFLIA)
+(set-info :source | Burns mutual exclusion protocol. This is a benchmark of the haRVey theorem prover. It was translated to SMT-LIB by Leonardo  de Moura |)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-fun s_0 (Int) Bool)
+(declare-fun s_1 (Int) Bool)
+(declare-fun s_2 (Int) Bool)
+(declare-fun s_3 (Int) Bool)
+(declare-fun s_4 (Int) Bool)
+(declare-fun s_5 (Int) Bool)
+(declare-fun s (Int Int) Bool)
+(declare-fun flag (Int) Bool)
+(declare-fun p () Int)
+(declare-fun q () Int)
+(assert (not (=> (and (forall ((?p Int)) (=> (not (flag ?p)) (or (s_0 ?p) (s_1 ?p) (s_2 ?p)))) (forall ((?p Int)) (forall ((?q Int)) (=> (s_2 ?p) (not (s ?p ?q))))) (forall ((?p Int)) (forall ((?q Int)) (=> (and (< ?q ?p) (flag ?q) (or (s_5 ?p) (s_4 ?p) (and (s_3 ?p) (s ?p ?q)))) (and (not (s_5 ?q)) (not (and (s_4 ?q) (s ?q ?p))))))) (forall ((?p Int)) (=> (s_0 ?p) (not (or (s_1 ?p) (s_2 ?p) (s_3 ?p) (s_4 ?p) (s_5 ?p))))) (forall ((?p Int)) (=> (s_1 ?p) (not (or (s_2 ?p) (s_3 ?p) (s_4 ?p [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/burns4.smt2 b/test/regress/regress0/quantifiers/burns4.smt2
new file mode 100644
index 0000000..72023fd
--- /dev/null
+++ b/test/regress/regress0/quantifiers/burns4.smt2
@@ -0,0 +1,20 @@
+; COMMAND-LINE: --full-saturate-quant
+; EXPECT: unsat
+(set-logic AUFLIA)
+(set-info :source | Burns mutual exclusion protocol. This is a benchmark of the haRVey theorem prover. It was translated to SMT-LIB by Leonardo  de Moura |)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-fun s_0 (Int) Bool)
+(declare-fun s_1 (Int) Bool)
+(declare-fun s_2 (Int) Bool)
+(declare-fun s_3 (Int) Bool)
+(declare-fun s_4 (Int) Bool)
+(declare-fun s_5 (Int) Bool)
+(declare-fun s (Int Int) Bool)
+(declare-fun flag (Int) Bool)
+(declare-fun p () Int)
+(declare-fun q () Int)
+(assert (not (=> (and (forall ((?p Int)) (=> (not (flag ?p)) (or (s_0 ?p) (s_1 ?p) (s_2 ?p)))) (forall ((?p Int)) (forall ((?q Int)) (=> (s_2 ?p) (not (s ?p ?q))))) (forall ((?p Int)) (forall ((?q Int)) (=> (and (< ?q ?p) (flag ?q) (or (s_5 ?p) (s_4 ?p) (and (s_3 ?p) (s ?p ?q)))) (and (not (s_5 ?q)) (not (and (s_4 ?q) (s ?q ?p))))))) (forall ((?p Int)) (=> (s_0 ?p) (not (or (s_1 ?p) (s_2 ?p) (s_3 ?p) (s_4 ?p) (s_5 ?p))))) (forall ((?p Int)) (=> (s_1 ?p) (not (or (s_2 ?p) (s_3 ?p) (s_4 ?p [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/cbqi-lia-dt-simp.smt2 b/test/regress/regress0/quantifiers/cbqi-lia-dt-simp.smt2
new file mode 100644
index 0000000..bd7ca19
--- /dev/null
+++ b/test/regress/regress0/quantifiers/cbqi-lia-dt-simp.smt2
@@ -0,0 +1,6 @@
+; COMMAND-LINE: --dt-rewrite-error-sel
+; EXPECT: unsat
+(set-logic ALL_SUPPORTED)
+(declare-datatypes () ((List (cons (head Int) (tail List)) (nil))))
+(assert (exists ((y Int)) (forall ((x List)) (not (= (head x) (+ y 7))))))
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/cdt-0208-to.smt2 b/test/regress/regress0/quantifiers/cdt-0208-to.smt2
new file mode 100644
index 0000000..a458cea
--- /dev/null
+++ b/test/regress/regress0/quantifiers/cdt-0208-to.smt2
@@ -0,0 +1,767 @@
+; COMMAND-LINE: --full-saturate-quant
+; EXPECT: unsat
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-sort A$ 0)
+(declare-sort A_set$ 0)
+(declare-sort A_a_fun$ 0)
+(declare-sort A_bool_fun$ 0)
+(declare-sort Bool_a_fun$ 0)
+(declare-sort A_a_llist_fun$ 0)
+(declare-sort A_llist_a_fun$ 0)
+(declare-sort Bool_bool_fun$ 0)
+(declare-sort A_a_bool_fun_fun$ 0)
+(declare-sort A_llist_bool_fun$ 0)
+(declare-sort Bool_a_llist_fun$ 0)
+(declare-sort A_llist_a_set_fun$ 0)
+(declare-sort A_a_llist_a_fun_fun$ 0)
+(declare-sort A_llist_a_llist_fun$ 0)
+(declare-sort A_a_llist_bool_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_set$ 0)
+(declare-sort A_a_llist_a_llist_fun_fun$ 0)
+(declare-sort A_llist_a_llist_bool_fun_fun$ 0)
+(declare-sort A_llist_a_llist_a_set_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_bool_fun$ 0)
+(declare-sort Bool_a_llist_a_llist_prod_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_set_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_prod_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_fun$ 0)
+(declare-sort A_llist_a_llist_prod_set_bool_fun$ 0)
+(declare-sort Bool_a_llist_a_llist_prod_set_fun$ 0)
+(declare-sort A_llist_a_llist_prod_llist_bool_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_prod_set_fun$ 0)
+(declare-sort A_a_llist_a_fun_fun_a_llist_a_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_bool_fun_bool_fun$ 0)
+(declare-sort Bool_a_llist_a_llist_prod_bool_fun_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_bool_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_prod_bool_fun_fun$ 0)
+(declare-sort A_a_llist_a_fun_fun_a_a_llist_a_fun_fun_fun$ 0)
+(declare-sort A_a_llist_bool_fun_fun_a_llist_bool_fun_fun$ 0)
+(declare-sort A_llist_a_llist_fun_a_llist_a_llist_fun_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_a_llist_prod_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_prod_fun$ 0)
+(declare-sort A_a_llist_a_fun_fun_a_a_llist_bool_fun_fun_fun$ 0)
+(declare-sort A_a_llist_bool_fun_fun_a_a_llist_a_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$ 0)
+(declare-sort A_a_llist_a_fun_fun_a_a_llist_a_llist_fun_fun_fun$ 0)
+(declare-sort A_a_llist_a_llist_fun_fun_a_a_llist_a_fun_fun_fun$ 0)
+(declare-sort A_a_llist_a_llist_fun_fun_a_llist_a_llist_fun_fun$ 0)
+(declare-sort A_a_llist_bool_fun_fun_a_a_llist_bool_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_prod_set_fun$ 0)
+(declare-sort A_llist_a_llist_prod_set_a_llist_a_llist_prod_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_prod_prod_set$ 0)
+(declare-sort A_llist_a_llist_prod_llist_a_llist_a_llist_prod_fun$ 0)
+(declare-sort A_a_llist_a_llist_fun_fun_a_a_llist_bool_fun_fun_fun$ 0)
+(declare-sort A_a_llist_bool_fun_fun_a_a_llist_a_llist_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_a_llist_bool_fun_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_fun_a_llist_a_llist_bool_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_bool_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$ 0)
+(declare-sort A_a_llist_a_llist_fun_fun_a_a_llist_a_llist_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_prod_a_set_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_prod_prod_bool_fun$ 0)
+(declare-sort A_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun$ 0)
+(declare-sort A_llist_a_llist_prod_set_a_llist_a_llist_prod_bool_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_prod_llist_bool_fun_fun$ 0)
+(declare-sort A_llist_a_fun_a_llist_a_llist_fun_a_llist_a_llist_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_bool_fun_fun_a_llist_a_llist_bool_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_set_fun$ 0)
+(declare-sort A_llist_a_llist_bool_fun_fun_a_llist_a_llist_prod_bool_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_prod_set$ 0)
+(declare-sort A_llist_a_llist_prod_bool_fun_a_llist_a_llist_prod_bool_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_bool_fun_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_set_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_set_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_set_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_prod_llist_a_llist_a_llist_prod_fun_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_a_llist_prod_fun_fun_a_llist_a_llist_bool_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun_a_llist_a_llist_bool_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_bool_fun_fun_a_llist_a_llist_a_llist_a_llist_prod_set_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_set_a_llist_a_llist_a_llist_a_llist_bool_fun_fun_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_set_a_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun_a_llist_a_llist_bool_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_bool_fun_fun_a_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_prod_set_fun_a_llist_a_llist_a_llist_a_llist_bool_fun_fun_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_a_llist_prod_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_fun_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_prod_set_fun_a_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_a_llist_prod_fun_fun_a_llist_a_llist_a_llist_a_llist_prod_set_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_set_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_prod_llist_bool_fun_fun_a_llist_a_llist_prod_llist_bool_fun_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_a_llist_prod_fun_fun_a_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_set_fun_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun_fun_a_llist_a_llist_bool_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_bool_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_fun$ 0)
+(declare-sort A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_fun$ 0)
+(declare-codatatypes () ((A_llist$ (lNil$) (lCons$ (lhd$ A$) (ltl$ A_llist$)))))
+(declare-datatypes () ((A_llist_a_llist_prod$ (pair$ (fst$ A_llist$) (snd$ A_llist$)))))
+(declare-codatatypes () ((A_llist_a_llist_prod_llist$ (lNil$a) (lCons$a (lhd$a A_llist_a_llist_prod$) (ltl$a A_llist_a_llist_prod_llist$)))))
+(declare-datatypes () ((A_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_prod$ (pair$a (fst$a A_llist_a_llist_prod_llist$) (snd$a A_llist_a_llist_prod_llist$)))
+  (A_llist_a_llist_prod_a_llist_a_llist_prod_prod$ (pair$b (fst$b A_llist_a_llist_prod$) (snd$b A_llist_a_llist_prod$)))))
+(declare-fun p$ () A_llist_a_llist_bool_fun_fun$)
+(declare-fun uu$ (Bool) A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_fun$)
+(declare-fun xs$ () A_llist$)
+(declare-fun ys$ () A_llist$)
+(declare-fun sup$ (A_llist_a_llist_prod_set$ A_llist_a_llist_prod_set$) A_llist_a_llist_prod_set$)
+(declare-fun the$ (A_llist_a_llist_prod_bool_fun$) A_llist_a_llist_prod$)
+(declare-fun uua$ (Bool) A_llist_a_llist_bool_fun_fun_a_llist_a_llist_bool_fun_fun_fun$)
+(declare-fun uub$ (A_llist_a_llist_prod_a_llist_a_llist_prod_set_fun$) A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$)
+(declare-fun uuc$ (A_llist_a_llist_prod_a_llist_a_llist_prod_fun$) A_llist_a_llist_a_llist_a_llist_prod_fun_fun$)
+(declare-fun uud$ (A_llist_a_llist_prod_a_llist_a_llist_prod_prod_bool_fun$) A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$)
+(declare-fun uue$ (A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$)
+(declare-fun uuf$ (A_llist_a_llist_prod_bool_fun$) A_llist_a_llist_bool_fun_fun$)
+(declare-fun uug$ (A_set$) A_bool_fun$)
+(declare-fun uuh$ (A_llist_a_llist_prod_a_llist_a_llist_prod_prod_set$) A_llist_a_llist_prod_a_llist_a_llist_prod_prod_bool_fun$)
+(declare-fun uui$ (A_llist_a_llist_prod_set$) A_llist_a_llist_prod_bool_fun$)
+(declare-fun uuj$ (Bool_bool_fun$) A_llist_a_llist_bool_fun_fun_a_llist_a_llist_bool_fun_fun_fun$)
+(declare-fun uuk$ (Bool_a_llist_a_llist_prod_fun$ A_llist_a_llist_bool_fun_fun$) A_llist_a_llist_a_llist_a_llist_prod_fun_fun$)
+(declare-fun uul$ (A_llist_a_llist_prod_bool_fun$) A_llist_a_llist_a_llist_a_llist_prod_fun_fun_a_llist_a_llist_bool_fun_fun_fun$)
+(declare-fun uum$ (Bool_a_llist_a_llist_prod_set_fun$) A_llist_a_llist_bool_fun_fun_a_llist_a_llist_a_llist_a_llist_prod_set_fun_fun_fun$)
+(declare-fun uun$ (A_llist_a_llist_prod_set_bool_fun$) A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun_a_llist_a_llist_bool_fun_fun_fun$)
+(declare-fun uuo$ (Bool_a_llist_a_llist_prod_bool_fun_fun$) A_llist_a_llist_bool_fun_fun_a_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun_fun$)
+(declare-fun uup$ (Bool_bool_fun$) A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_fun$)
+(declare-fun uuq$ (A_llist_a_llist_prod_bool_fun_bool_fun$) A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun_a_llist_a_llist_bool_fun_fun_fun$)
+(declare-fun uur$ (A_llist_a_llist_prod_a_llist_a_llist_prod_fun$ A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) A_llist_a_llist_a_llist_a_llist_prod_fun_fun$)
+(declare-fun uus$ (A_llist_a_llist_prod_set_a_llist_a_llist_prod_fun$ A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) A_llist_a_llist_a_llist_a_llist_prod_fun_fun$)
+(declare-fun uut$ (A_llist_a_llist_bool_fun_fun$) A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_fun$)
+(declare-fun uuu$ (A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) A_llist_a_llist_a_llist_a_llist_prod_fun_fun_a_llist_a_llist_a_llist_a_llist_prod_set_fun_fun_fun$)
+(declare-fun uuv$ (A_llist_a_llist_a_llist_a_llist_prod_fun_fun$ A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) A_llist_a_llist_a_llist_a_llist_prod_fun_fun$)
+(declare-fun uuw$ (A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) A_llist_a_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun_fun_a_llist_a_llist_bool_fun_fun_fun$)
+(declare-fun uux$ (A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_fun$)
+(declare-fun uuy$ (A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) A_llist_a_llist_a_llist_a_llist_prod_fun_fun_a_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun_fun$)
+(declare-fun uuz$ (A_llist_a_llist_bool_fun_fun$) A_llist_a_llist_a_llist_a_llist_prod_fun_fun_a_llist_a_llist_bool_fun_fun_fun$)
+(declare-fun uva$ () A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$)
+(declare-fun uvb$ () A_llist_a_llist_bool_fun_fun$)
+(declare-fun uvc$ () A_llist_a_llist_prod_llist_a_llist_a_llist_prod_fun$)
+(declare-fun uvd$ () A_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_fun$)
+(declare-fun uve$ () A_llist_a_fun$)
+(declare-fun uvf$ () A_llist_a_llist_fun$)
+(declare-fun uvg$ (A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) A_llist_a_llist_prod_a_llist_a_llist_bool_fun_fun_fun$)
+(declare-fun uvh$ (Bool_bool_fun$) A_a_llist_bool_fun_fun_a_a_llist_bool_fun_fun_fun$)
+(declare-fun uvi$ (Bool_a_llist_fun$) A_a_llist_bool_fun_fun_a_a_llist_a_llist_fun_fun_fun$)
+(declare-fun uvj$ (Bool_a_fun$) A_a_llist_bool_fun_fun_a_a_llist_a_fun_fun_fun$)
+(declare-fun uvk$ (A_llist_bool_fun$) A_a_llist_a_llist_fun_fun_a_a_llist_bool_fun_fun_fun$)
+(declare-fun uvl$ (A_llist_a_llist_fun$) A_a_llist_a_llist_fun_fun_a_a_llist_a_llist_fun_fun_fun$)
+(declare-fun uvm$ (A_llist_a_fun$) A_a_llist_a_llist_fun_fun_a_a_llist_a_fun_fun_fun$)
+(declare-fun uvn$ (A_bool_fun$) A_a_llist_a_fun_fun_a_a_llist_bool_fun_fun_fun$)
+(declare-fun uvo$ (A_a_llist_fun$) A_a_llist_a_fun_fun_a_a_llist_a_llist_fun_fun_fun$)
+(declare-fun uvp$ (A_a_fun$) A_a_llist_a_fun_fun_a_a_llist_a_fun_fun_fun$)
+(declare-fun uvq$ () A_llist_a_llist_prod_a_llist_a_llist_prod_llist_bool_fun_fun$)
+(declare-fun uvr$ () A_a_llist_bool_fun_fun$)
+(declare-fun uvs$ () A_llist_a_llist_prod_a_llist_a_llist_prod_llist_bool_fun_fun$)
+(declare-fun uvt$ () A_a_llist_bool_fun_fun$)
+(declare-fun uvu$ () A_llist_a_llist_prod_a_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_fun_fun$)
+(declare-fun uvv$ () A_a_llist_a_llist_fun_fun$)
+(declare-fun uvw$ () A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun_fun$)
+(declare-fun uvx$ () A_llist_a_llist_a_llist_a_llist_prod_fun_fun$)
+(declare-fun uvy$ (A_llist_a_llist_prod_a_llist_a_llist_prod_prod_set$) A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$)
+(declare-fun uvz$ (A_llist_a_llist_prod_set$) A_llist_a_llist_bool_fun_fun$)
+(declare-fun uwa$ () A_llist_a_llist_prod_a_llist_a_llist_prod_llist_a_llist_a_llist_prod_fun_fun$)
+(declare-fun uwb$ () A_a_llist_a_fun_fun$)
+(declare-fun uwc$ (A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$)
+(declare-fun uwd$ (A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) A_llist_a_llist_a_llist_a_llist_prod_fun_fun$)
+(declare-fun uwe$ (A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$)
+(declare-fun uwf$ (A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$)
+(declare-fun uwg$ (A_llist_a_llist_bool_fun_fun$) A_llist_a_llist_bool_fun_fun$)
+(declare-fun uwh$ (A_llist_a_llist_prod_llist$) A_llist_a_llist_prod_a_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_fun_fun$)
+(declare-fun uwi$ (A_llist$) A_a_llist_a_llist_fun_fun$)
+(declare-fun uwj$ (A_llist$) A_a_llist_a_llist_fun_fun$)
+(declare-fun uwk$ (A_llist_a_llist_prod_set$) A_llist_a_llist_fun_a_llist_a_llist_bool_fun_fun_fun$)
+(declare-fun uwl$ (A_llist_bool_fun$) A_llist_a_llist_a_llist_prod_set_fun_a_llist_a_llist_a_llist_a_llist_bool_fun_fun_fun_fun_fun$)
+(declare-fun uwm$ (A_llist_bool_fun$) A_llist_a_llist_a_llist_prod_set_fun_a_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun_fun$)
+(declare-fun uwn$ (A_llist_a_llist_prod_set$) A_llist_a_llist_prod_set_a_llist_a_llist_a_llist_a_llist_bool_fun_fun_fun_fun_fun$)
+(declare-fun uwo$ (A_llist_a_llist_prod_set$) A_llist_a_llist_prod_set_a_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun_fun$)
+(declare-fun uwp$ (A_llist_a_llist_prod_bool_fun$) A_llist_a_llist_prod_bool_fun_a_llist_a_llist_prod_bool_fun_fun$)
+(declare-fun uwq$ (A_llist_a_llist_prod_set$) A_llist_a_llist_prod_set_a_llist_a_llist_prod_bool_fun_fun$)
+(declare-fun uwr$ (A_llist_a_llist_prod_bool_fun$) A_llist_a_llist_prod_bool_fun_a_llist_a_llist_prod_bool_fun_fun$)
+(declare-fun uws$ (A_llist_a_llist_prod_set$) A_llist_a_llist_prod_bool_fun_a_llist_a_llist_prod_bool_fun_fun$)
+(declare-fun uwt$ (A_llist$) A_llist_a_llist_a_llist_bool_fun_fun_fun$)
+(declare-fun lset$ (A_llist_a_llist_prod_llist$) A_llist_a_llist_prod_set$)
+(declare-fun swap$ (A_llist_a_llist_prod$) A_llist_a_llist_prod$)
+(declare-fun lnull$ () A_llist_bool_fun$)
+(declare-fun lset$a (A_llist$) A_set$)
+(declare-fun swap$a (A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)
+(declare-fun image2$ (A_llist_a_llist_prod_set$ A_llist_a_llist_prod_a_llist_fun$ A_llist_a_llist_prod_a_llist_fun$) A_llist_a_llist_prod_set$)
+(declare-fun in_rel$ (A_llist_a_llist_prod_set$) A_llist_a_llist_bool_fun_fun$)
+(declare-fun lnull$a () A_llist_a_llist_prod_llist_bool_fun$)
+(declare-fun member$ (A_llist_a_llist_prod$) A_llist_a_llist_prod_set_bool_fun$)
+(declare-fun collect$ (A_llist_a_llist_prod_bool_fun$) A_llist_a_llist_prod_set$)
+(declare-fun fun_app$ (A_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_fun$ A_llist_a_llist_prod_llist$) A_llist_a_llist_prod_llist$)
+(declare-fun lappend$ (A_llist_a_llist_prod_llist$) A_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_fun$)
+(declare-fun less_eq$ (A_llist_a_llist_prod_set$) A_llist_a_llist_prod_set_bool_fun$)
+(declare-fun lfinite$ (A_llist_a_llist_prod_llist$) Bool)
+(declare-fun lmember$ (A_llist_a_llist_prod$) A_llist_a_llist_prod_llist_bool_fun$)
+(declare-fun lprefix$ (A_llist$) A_llist_bool_fun$)
+(declare-fun member$a (A_llist_a_llist_prod_a_llist_a_llist_prod_prod$ A_llist_a_llist_prod_a_llist_a_llist_prod_prod_set$) Bool)
+(declare-fun member$b (A$ A_set$) Bool)
+(declare-fun member$c (A_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_prod$ A_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_prod_set$) Bool)
+(declare-fun uncurry$ () A_llist_a_llist_a_llist_a_llist_prod_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_fun_fun$)
+(declare-fun collect$a (A_llist_a_llist_prod_a_llist_a_llist_prod_prod_bool_fun$) A_llist_a_llist_prod_a_llist_a_llist_prod_prod_set$)
+(declare-fun collect$b (A_bool_fun$) A_set$)
+(declare-fun fun_app$a (A_llist_a_llist_fun$ A_llist$) A_llist$)
+(declare-fun fun_app$b (A_llist_a_llist_prod_llist_a_llist_a_llist_prod_fun$ A_llist_a_llist_prod_llist$) A_llist_a_llist_prod$)
+(declare-fun fun_app$c (A_llist_a_fun$ A_llist$) A$)
+(declare-fun fun_app$d (A_llist_a_llist_a_llist_prod_fun$ A_llist$) A_llist_a_llist_prod$)
+(declare-fun fun_app$e (A_llist_a_llist_a_llist_a_llist_prod_fun_fun$ A_llist$) A_llist_a_llist_a_llist_prod_fun$)
+(declare-fun fun_app$f (A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun$ A_llist_a_llist_prod$) A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)
+(declare-fun fun_app$g (A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun_fun$ A_llist_a_llist_prod$) A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun$)
+(declare-fun fun_app$h (A_llist_a_llist_prod_bool_fun$ A_llist_a_llist_prod$) Bool)
+(declare-fun fun_app$i (A_llist_a_llist_prod_set_bool_fun$ A_llist_a_llist_prod_set$) Bool)
+(declare-fun fun_app$j (A_llist_a_llist_prod_a_llist_a_llist_prod_prod_bool_fun$ A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) Bool)
+(declare-fun fun_app$k (A_bool_fun$ A$) Bool)
+(declare-fun fun_app$l (A_llist_bool_fun$ A_llist$) Bool)
+(declare-fun fun_app$m (A_llist_a_llist_bool_fun_fun$ A_llist$) A_llist_bool_fun$)
+(declare-fun fun_app$n (A_llist_a_llist_a_llist_prod_set_fun$ A_llist$) A_llist_a_llist_prod_set$)
+(declare-fun fun_app$o (A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$ A_llist$) A_llist_a_llist_a_llist_prod_set_fun$)
+(declare-fun fun_app$p (A_llist_a_llist_a_llist_prod_bool_fun_fun$ A_llist$) A_llist_a_llist_prod_bool_fun$)
+(declare-fun fun_app$q (A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$ A_llist$) A_llist_a_llist_a_llist_prod_bool_fun_fun$)
+(declare-fun fun_app$r (A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$ A_llist_a_llist_prod$) A_llist_a_llist_prod_bool_fun$)
+(declare-fun fun_app$s (A_llist_a_llist_prod_set_a_llist_a_llist_prod_bool_fun_fun$ A_llist_a_llist_prod_set$) A_llist_a_llist_prod_bool_fun$)
+(declare-fun fun_app$t (A_llist_a_llist_prod_bool_fun_a_llist_a_llist_prod_bool_fun_fun$ A_llist_a_llist_prod_bool_fun$) A_llist_a_llist_prod_bool_fun$)
+(declare-fun fun_app$u (A_llist_a_llist_prod_a_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_fun_fun$ A_llist_a_llist_prod$) A_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_fun$)
+(declare-fun fun_app$v (A_a_llist_a_llist_fun_fun$ A$) A_llist_a_llist_fun$)
+(declare-fun fun_app$w (A_llist_a_llist_prod_a_llist_a_llist_prod_fun$ A_llist_a_llist_prod$) A_llist_a_llist_prod$)
+(declare-fun fun_app$x (A_llist_a_llist_prod_a_llist_a_llist_prod_set_fun$ A_llist_a_llist_prod$) A_llist_a_llist_prod_set$)
+(declare-fun fun_app$y (A_llist_a_llist_prod_a_llist_a_llist_bool_fun_fun_fun$ A_llist_a_llist_prod$) A_llist_a_llist_bool_fun_fun$)
+(declare-fun fun_app$z (A_llist_a_llist_fun_a_llist_a_llist_bool_fun_fun_fun$ A_llist_a_llist_fun$) A_llist_a_llist_bool_fun_fun$)
+(declare-fun lappend$a (A_llist$) A_llist_a_llist_fun$)
+(declare-fun less_eq$a (A_set$ A_set$) Bool)
+(declare-fun less_eq$b (A_llist_a_llist_prod_bool_fun$) A_llist_a_llist_prod_bool_fun_bool_fun$)
+(declare-fun less_eq$c (A_llist_a_llist_bool_fun_fun$ A_llist_a_llist_bool_fun_fun$) Bool)
+(declare-fun lex_prod$ (A_llist_a_llist_prod_set$ A_llist_a_llist_prod_set$) A_llist_a_llist_prod_a_llist_a_llist_prod_prod_set$)
+(declare-fun lfinite$a (A_llist$) Bool)
+(declare-fun lmember$a (A$) A_llist_bool_fun$)
+(declare-fun lprefix$a (A_llist_a_llist_prod_llist$) A_llist_a_llist_prod_llist_bool_fun$)
+(declare-fun same_fst$ (A_llist_bool_fun$ A_llist_a_llist_a_llist_prod_set_fun$) A_llist_a_llist_prod_a_llist_a_llist_prod_prod_set$)
+(declare-fun uncurry$a () A_llist_a_llist_bool_fun_fun_a_llist_a_llist_prod_bool_fun_fun$)
+(declare-fun uncurry$b () A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_set_fun_fun$)
+(declare-fun uncurry$c () A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_fun$)
+(declare-fun uncurry$d () A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_bool_fun_fun$)
+(declare-fun uncurry$e (A_llist_a_llist_a_set_fun_fun$ A_llist_a_llist_prod$) A_set$)
+(declare-fun uncurry$f (A_llist_a_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_set_fun_fun$ A_llist_a_llist_prod$) A_llist_a_llist_prod_a_llist_a_llist_prod_prod_set$)
+(declare-fun uncurry$g (A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_set_fun_fun$ A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) A_llist_a_llist_prod_set$)
+(declare-fun uncurry$h (A_llist_a_llist_prod_a_llist_a_llist_prod_a_set_fun_fun$ A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) A_set$)
+(declare-fun uncurry$i (A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_set_fun_fun$ A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) A_llist_a_llist_prod_a_llist_a_llist_prod_prod_set$)
+(declare-fun uncurry$j (A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_fun_fun$ A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) A_llist_a_llist_prod$)
+(declare-fun uncurry$k (A_llist_a_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun_fun$ A_llist_a_llist_prod$) A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)
+(declare-fun uncurry$l (A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun_fun$ A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)
+(declare-fun fun_app$aa (A_llist_a_llist_a_llist_bool_fun_fun_fun$ A_llist$) A_llist_a_llist_bool_fun_fun$)
+(declare-fun fun_app$ab (A_llist_a_llist_a_llist_a_llist_prod_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_fun_fun$ A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) A_llist_a_llist_prod_a_llist_a_llist_prod_fun$)
+(declare-fun fun_app$ac (A_llist_a_llist_a_llist_a_llist_prod_fun_fun_a_llist_a_llist_bool_fun_fun_fun$ A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) A_llist_a_llist_bool_fun_fun$)
+(declare-fun fun_app$ad (A_llist_a_llist_bool_fun_fun_a_llist_a_llist_prod_bool_fun_fun$ A_llist_a_llist_bool_fun_fun$) A_llist_a_llist_prod_bool_fun$)
+(declare-fun fun_app$ae (A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_fun$ A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_fun_fun$) A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$)
+(declare-fun fun_app$af (A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_fun_fun$ A_llist_a_llist_prod$) A_llist_a_llist_prod_a_llist_a_llist_prod_fun$)
+(declare-fun fun_app$ag (A_llist_a_llist_a_llist_a_llist_prod_fun_fun_a_llist_a_llist_a_llist_a_llist_prod_set_fun_fun_fun$ A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$)
+(declare-fun fun_app$ah (A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_set_fun_fun$ A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) A_llist_a_llist_prod_a_llist_a_llist_prod_set_fun$)
+(declare-fun fun_app$ai (A_llist_a_llist_a_llist_a_llist_prod_fun_fun_a_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun_fun$ A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$)
+(declare-fun fun_app$aj (A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_fun$ A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$)
+(declare-fun fun_app$ak (A_llist_a_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun_fun_a_llist_a_llist_bool_fun_fun_fun$ A_llist_a_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun_fun$) A_llist_a_llist_bool_fun_fun$)
+(declare-fun fun_app$al (A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_bool_fun_fun$ A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) A_llist_a_llist_prod_a_llist_a_llist_prod_prod_bool_fun$)
+(declare-fun fun_app$am (A_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun$ A_llist$) A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)
+(declare-fun fun_app$an (A_llist_a_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun_fun$ A_llist$) A_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun$)
+(declare-fun fun_app$ao (A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_fun$ A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun_fun$) A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$)
+(declare-fun fun_app$ap (A_llist_a_llist_bool_fun_fun_a_llist_a_llist_bool_fun_fun_fun$ A_llist_a_llist_bool_fun_fun$) A_llist_a_llist_bool_fun_fun$)
+(declare-fun fun_app$aq (A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_fun$ A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$)
+(declare-fun fun_app$ar (A_a_llist_a_llist_fun_fun_a_a_llist_a_llist_fun_fun_fun$ A_a_llist_a_llist_fun_fun$) A_a_llist_a_llist_fun_fun$)
+(declare-fun fun_app$as (A_a_llist_bool_fun_fun$ A$) A_llist_bool_fun$)
+(declare-fun fun_app$at (A_a_llist_a_llist_fun_fun_a_a_llist_bool_fun_fun_fun$ A_a_llist_a_llist_fun_fun$) A_a_llist_bool_fun_fun$)
+(declare-fun fun_app$au (A_a_llist_a_fun_fun$ A$) A_llist_a_fun$)
+(declare-fun fun_app$av (A_a_llist_a_llist_fun_fun_a_a_llist_a_fun_fun_fun$ A_a_llist_a_llist_fun_fun$) A_a_llist_a_fun_fun$)
+(declare-fun fun_app$aw (A_a_llist_bool_fun_fun_a_a_llist_a_llist_fun_fun_fun$ A_a_llist_bool_fun_fun$) A_a_llist_a_llist_fun_fun$)
+(declare-fun fun_app$ax (Bool_a_llist_fun$ Bool) A_llist$)
+(declare-fun fun_app$ay (Bool_a_llist_a_llist_prod_fun$ Bool) A_llist_a_llist_prod$)
+(declare-fun fun_app$az (Bool_bool_fun$ Bool) Bool)
+(declare-fun fun_app$ba (A_a_llist_bool_fun_fun_a_a_llist_bool_fun_fun_fun$ A_a_llist_bool_fun_fun$) A_a_llist_bool_fun_fun$)
+(declare-fun fun_app$bb (A_llist_a_llist_bool_fun_fun_a_llist_a_llist_a_llist_a_llist_prod_set_fun_fun_fun$ A_llist_a_llist_bool_fun_fun$) A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$)
+(declare-fun fun_app$bc (Bool_a_llist_a_llist_prod_set_fun$ Bool) A_llist_a_llist_prod_set$)
+(declare-fun fun_app$bd (A_llist_a_llist_bool_fun_fun_a_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun_fun$ A_llist_a_llist_bool_fun_fun$) A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$)
+(declare-fun fun_app$be (Bool_a_llist_a_llist_prod_bool_fun_fun$ Bool) A_llist_a_llist_prod_bool_fun$)
+(declare-fun fun_app$bf (A_a_llist_bool_fun_fun_a_a_llist_a_fun_fun_fun$ A_a_llist_bool_fun_fun$) A_a_llist_a_fun_fun$)
+(declare-fun fun_app$bg (Bool_a_fun$ Bool) A$)
+(declare-fun fun_app$bh (A_llist_a_llist_prod_set_a_llist_a_llist_prod_fun$ A_llist_a_llist_prod_set$) A_llist_a_llist_prod$)
+(declare-fun fun_app$bi (A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun_a_llist_a_llist_bool_fun_fun_fun$ A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) A_llist_a_llist_bool_fun_fun$)
+(declare-fun fun_app$bj (A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun_a_llist_a_llist_bool_fun_fun_fun$ A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) A_llist_a_llist_bool_fun_fun$)
+(declare-fun fun_app$bk (A_llist_a_llist_prod_bool_fun_bool_fun$ A_llist_a_llist_prod_bool_fun$) Bool)
+(declare-fun fun_app$bl (A_a_llist_a_fun_fun_a_a_llist_a_llist_fun_fun_fun$ A_a_llist_a_fun_fun$) A_a_llist_a_llist_fun_fun$)
+(declare-fun fun_app$bm (A_a_llist_fun$ A$) A_llist$)
+(declare-fun fun_app$bn (A_a_llist_a_fun_fun_a_a_llist_bool_fun_fun_fun$ A_a_llist_a_fun_fun$) A_a_llist_bool_fun_fun$)
+(declare-fun fun_app$bo (A_a_llist_a_fun_fun_a_a_llist_a_fun_fun_fun$ A_a_llist_a_fun_fun$) A_a_llist_a_fun_fun$)
+(declare-fun fun_app$bp (A_a_fun$ A$) A$)
+(declare-fun fun_app$bq (A_llist_a_llist_prod_set_a_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun_fun$ A_llist_a_llist_prod_set$) A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$)
+(declare-fun fun_app$br (A_llist_a_llist_a_llist_a_llist_bool_fun_fun_fun_fun$ A_llist$) A_llist_a_llist_a_llist_bool_fun_fun_fun$)
+(declare-fun fun_app$bs (A_llist_a_llist_prod_set_a_llist_a_llist_a_llist_a_llist_bool_fun_fun_fun_fun_fun$ A_llist_a_llist_prod_set$) A_llist_a_llist_a_llist_a_llist_bool_fun_fun_fun_fun$)
+(declare-fun fun_app$bt (A_llist_a_llist_a_llist_prod_set_fun_a_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun_fun$ A_llist_a_llist_a_llist_prod_set_fun$) A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$)
+(declare-fun fun_app$bu (A_llist_a_llist_a_llist_prod_set_fun_a_llist_a_llist_a_llist_a_llist_bool_fun_fun_fun_fun_fun$ A_llist_a_llist_a_llist_prod_set_fun$) A_llist_a_llist_a_llist_a_llist_bool_fun_fun_fun_fun$)
+(declare-fun fun_app$bv (A_llist_a_llist_prod_a_llist_a_llist_prod_llist_a_llist_a_llist_prod_fun_fun$ A_llist_a_llist_prod$) A_llist_a_llist_prod_llist_a_llist_a_llist_prod_fun$)
+(declare-fun fun_app$bw (A_llist_a_llist_prod_llist_bool_fun$ A_llist_a_llist_prod_llist$) Bool)
+(declare-fun fun_app$bx (A_llist_a_llist_prod_a_llist_a_llist_prod_llist_bool_fun_fun$ A_llist_a_llist_prod$) A_llist_a_llist_prod_llist_bool_fun$)
+(declare-fun fun_app$by (A_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_bool_fun_fun$ A_llist_a_llist_prod_llist$) A_llist_a_llist_prod_llist_bool_fun$)
+(declare-fun fun_app$bz (A_llist_a_set_fun$ A_llist$) A_set$)
+(declare-fun fun_app$ca (A_llist_a_llist_a_set_fun_fun$ A_llist$) A_llist_a_set_fun$)
+(declare-fun fun_app$cb (A_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_set_fun$ A_llist$) A_llist_a_llist_prod_a_llist_a_llist_prod_prod_set$)
+(declare-fun fun_app$cc (A_llist_a_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_set_fun_fun$ A_llist$) A_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_set_fun$)
+(declare-fun fun_app$cd (A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_set_fun_fun$ A_llist_a_llist_prod$) A_llist_a_llist_prod_a_llist_a_llist_prod_set_fun$)
+(declare-fun fun_app$ce (A_llist_a_llist_prod_a_set_fun$ A_llist_a_llist_prod$) A_set$)
+(declare-fun fun_app$cf (A_llist_a_llist_prod_a_llist_a_llist_prod_a_set_fun_fun$ A_llist_a_llist_prod$) A_llist_a_llist_prod_a_set_fun$)
+(declare-fun fun_app$cg (A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_set_fun$ A_llist_a_llist_prod$) A_llist_a_llist_prod_a_llist_a_llist_prod_prod_set$)
+(declare-fun fun_app$ch (A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_set_fun_fun$ A_llist_a_llist_prod$) A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_set_fun$)
+(declare-fun fun_app$ci (A_a_llist_bool_fun_fun_a_llist_bool_fun_fun$ A_a_llist_bool_fun_fun$) A_llist_bool_fun$)
+(declare-fun fun_app$cj (A_a_llist_a_llist_fun_fun_a_llist_a_llist_fun_fun$ A_a_llist_a_llist_fun_fun$) A_llist_a_llist_fun$)
+(declare-fun fun_app$ck (A_a_llist_a_fun_fun_a_llist_a_fun_fun$ A_a_llist_a_fun_fun$) A_llist_a_fun$)
+(declare-fun fun_app$cl (A_llist_a_llist_fun_a_llist_a_llist_fun_fun$ A_llist_a_llist_fun$) A_llist_a_llist_fun$)
+(declare-fun fun_app$cm (A_llist_a_fun_a_llist_a_llist_fun_a_llist_a_llist_fun_fun_fun$ A_llist_a_fun$) A_llist_a_llist_fun_a_llist_a_llist_fun_fun$)
+(declare-fun fun_app$cn (A_llist_a_llist_prod_a_llist_a_llist_prod_llist_bool_fun_fun_a_llist_a_llist_prod_llist_bool_fun_fun$ A_llist_a_llist_prod_a_llist_a_llist_prod_llist_bool_fun_fun$) A_llist_a_llist_prod_llist_bool_fun$)
+(declare-fun fun_app$co (A_a_bool_fun_fun$ A$) A_bool_fun$)
+(declare-fun fun_app$cp (A_llist_a_llist_prod_a_llist_fun$ A_llist_a_llist_prod$) A_llist$)
+(declare-fun inv_image$ (A_llist_a_llist_prod_set$ A_llist_a_llist_fun$) A_llist_a_llist_prod_set$)
+(declare-fun undefined$ () A_llist$)
+(declare-fun case_llist$ (Bool) A_a_llist_bool_fun_fun_a_llist_bool_fun_fun$)
+(declare-fun llist_all2$ (A_a_bool_fun_fun$) A_llist_a_llist_bool_fun_fun$)
+(declare-fun pred_llist$ (A_bool_fun$) A_llist_bool_fun$)
+(declare-fun undefined$a () A$)
+(declare-fun case_llist$a (A_llist$) A_a_llist_a_llist_fun_fun_a_llist_a_llist_fun_fun$)
+(declare-fun case_llist$b (A$) A_a_llist_a_fun_fun_a_llist_a_fun_fun$)
+(declare-fun case_llist$c (Bool) A_llist_a_llist_prod_a_llist_a_llist_prod_llist_bool_fun_fun_a_llist_a_llist_prod_llist_bool_fun_fun$)
+(declare-fun case_llist$d (A_llist_a_llist_prod_llist$ A_llist_a_llist_prod_a_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_fun_fun$ A_llist_a_llist_prod_llist$) A_llist_a_llist_prod_llist$)
+(declare-fun case_llist$e (A_llist_a_llist_prod$ A_llist_a_llist_prod_a_llist_a_llist_prod_llist_a_llist_a_llist_prod_fun_fun$ A_llist_a_llist_prod_llist$) A_llist_a_llist_prod$)
+(declare-fun llist_all2$a (A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) A_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_bool_fun_fun$)
+(declare-fun pred_llist$a (A_llist_a_llist_prod_bool_fun$) A_llist_a_llist_prod_llist_bool_fun$)
+(declare-fun unfold_llist$ (A_llist_a_llist_prod_llist_bool_fun$ A_llist_a_llist_prod_llist_a_llist_a_llist_prod_fun$ A_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_fun$ A_llist_a_llist_prod_llist$) A_llist_a_llist_prod_llist$)
+(declare-fun unfold_llist$a (A_llist_bool_fun$) A_llist_a_fun_a_llist_a_llist_fun_a_llist_a_llist_fun_fun_fun$)
+(declare-fun internal_split$ () A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_set_fun_fun$)
+(declare-fun internal_split$a () A_llist_a_llist_a_llist_a_llist_prod_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_fun_fun$)
+(declare-fun internal_split$b () A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_bool_fun_fun$)
+(declare-fun internal_split$c () A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun_a_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun_fun$)
+(declare-fun internal_split$d () A_llist_a_llist_bool_fun_fun_a_llist_a_llist_prod_bool_fun_fun$)
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$)) (! (= (fun_app$ uvd$ ?v0) (ltl$a ?v0)) :pattern ((fun_app$ uvd$ ?v0)))) :named a0))
+(assert (! (forall ((?v0 A_llist$)) (! (= (fun_app$a uvf$ ?v0) (ltl$ ?v0)) :pattern ((fun_app$a uvf$ ?v0)))) :named a1))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$)) (! (= (fun_app$b uvc$ ?v0) (lhd$a ?v0)) :pattern ((fun_app$b uvc$ ?v0)))) :named a2))
+(assert (! (forall ((?v0 A_llist$)) (! (= (fun_app$c uve$ ?v0) (lhd$ ?v0)) :pattern ((fun_app$c uve$ ?v0)))) :named a3))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (! (= (fun_app$d (fun_app$e uvx$ ?v0) ?v1) (pair$ ?v0 ?v1)) :pattern ((fun_app$d (fun_app$e uvx$ ?v0) ?v1)))) :named a4))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod$)) (! (= (fun_app$f (fun_app$g uvw$ ?v0) ?v1) (pair$b ?v0 ?v1)) :pattern ((fun_app$f (fun_app$g uvw$ ?v0) ?v1)))) :named a5))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist_a_llist_prod$)) (! (= (fun_app$h (uui$ ?v0) ?v1) (fun_app$i (member$ ?v1) ?v0)) :pattern ((fun_app$h (uui$ ?v0) ?v1)))) :named a6))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod_set$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (! (= (fun_app$j (uuh$ ?v0) ?v1) (member$a ?v1 ?v0)) :pattern ((fun_app$j (uuh$ ?v0) ?v1)))) :named a7))
+(assert (! (forall ((?v0 A_set$) (?v1 A$)) (! (= (fun_app$k (uug$ ?v0) ?v1) (member$b ?v1 ?v0)) :pattern ((fun_app$k (uug$ ?v0) ?v1)))) :named a8))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (! (= (fun_app$d (fun_app$e (uwd$ ?v0) ?v1) ?v2) (fun_app$d (fun_app$e ?v0 ?v2) ?v1)) :pattern ((fun_app$d (fun_app$e (uwd$ ?v0) ?v1) ?v2)))) :named a9))
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (! (= (fun_app$l (fun_app$m (uwg$ ?v0) ?v1) ?v2) (fun_app$l (fun_app$m ?v0 ?v2) ?v1)) :pattern ((fun_app$l (fun_app$m (uwg$ ?v0) ?v1) ?v2)))) :named a10))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (! (= (fun_app$n (fun_app$o (uwc$ ?v0) ?v1) ?v2) (fun_app$n (fun_app$o ?v0 ?v2) ?v1)) :pattern ((fun_app$n (fun_app$o (uwc$ ?v0) ?v1) ?v2)))) :named a11))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (! (= (fun_app$p (fun_app$q (uwf$ ?v0) ?v1) ?v2) (fun_app$p (fun_app$q ?v0 ?v2) ?v1)) :pattern ((fun_app$p (fun_app$q (uwf$ ?v0) ?v1) ?v2)))) :named a12))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod$)) (! (= (fun_app$h (fun_app$r (uwe$ ?v0) ?v1) ?v2) (fun_app$h (fun_app$r ?v0 ?v2) ?v1)) :pattern ((fun_app$h (fun_app$r (uwe$ ?v0) ?v1) ?v2)))) :named a13))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist_a_llist_prod_set$) (?v2 A_llist_a_llist_prod$)) (! (= (fun_app$h (fun_app$s (uwq$ ?v0) ?v1) ?v2) (or (fun_app$i (member$ ?v2) ?v0) (fun_app$i (member$ ?v2) ?v1))) :pattern ((fun_app$h (fun_app$s (uwq$ ?v0) ?v1) ?v2)))) :named a14))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist_a_llist_prod_bool_fun$) (?v2 A_llist_a_llist_prod$)) (! (= (fun_app$h (fun_app$t (uws$ ?v0) ?v1) ?v2) (and (fun_app$i (member$ ?v2) ?v0) (fun_app$h ?v1 ?v2))) :pattern ((fun_app$h (fun_app$t (uws$ ?v0) ?v1) ?v2)))) :named a15))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist$) (?v2 A_llist$)) (! (= (fun_app$l (fun_app$m (uvz$ ?v0) ?v1) ?v2) (fun_app$i (member$ (pair$ ?v1 ?v2)) ?v0)) :pattern ((fun_app$l (fun_app$m (uvz$ ?v0) ?v1) ?v2)))) :named a16))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod_set$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod$)) (! (= (fun_app$h (fun_app$r (uvy$ ?v0) ?v1) ?v2) (member$a (pair$b ?v1 ?v2) ?v0)) :pattern ((fun_app$h (fun_app$r (uvy$ ?v0) ?v1) ?v2)))) :named a17))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_bool_fun$) (?v1 A_llist_a_llist_prod_bool_fun$) (?v2 A_llist_a_llist_prod$)) (! (= (fun_app$h (fun_app$t (uwp$ ?v0) ?v1) ?v2) (or (fun_app$h ?v0 ?v2) (fun_app$h ?v1 ?v2))) :pattern ((fun_app$h (fun_app$t (uwp$ ?v0) ?v1) ?v2)))) :named a18))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_bool_fun$) (?v1 A_llist_a_llist_prod_bool_fun$) (?v2 A_llist_a_llist_prod$)) (! (= (fun_app$h (fun_app$t (uwr$ ?v0) ?v1) ?v2) (and (fun_app$h ?v0 ?v2) (fun_app$h ?v1 ?v2))) :pattern ((fun_app$h (fun_app$t (uwr$ ?v0) ?v1) ?v2)))) :named a19))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod_llist$)) (! (= (fun_app$ (fun_app$u (uwh$ ?v0) ?v1) ?v2) (lCons$a ?v1 (fun_app$ (lappend$ ?v2) ?v0))) :pattern ((fun_app$ (fun_app$u (uwh$ ?v0) ?v1) ?v2)))) :named a20))
+(assert (! (forall ((?v0 A_llist$) (?v1 A$) (?v2 A_llist$)) (! (= (fun_app$a (fun_app$v (uwi$ ?v0) ?v1) ?v2) (lCons$ ?v1 (fun_app$a (lappend$a ?v2) ?v0))) :pattern ((fun_app$a (fun_app$v (uwi$ ?v0) ?v1) ?v2)))) :named a21))
+(assert (! (forall ((?v0 A_llist$) (?v1 A$) (?v2 A_llist$)) (! (= (fun_app$a (fun_app$v (uwj$ ?v0) ?v1) ?v2) (fun_app$a (lappend$a ?v2) ?v0)) :pattern ((fun_app$a (fun_app$v (uwj$ ?v0) ?v1) ?v2)))) :named a22))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_fun$) (?v1 A_llist$) (?v2 A_llist$)) (! (= (fun_app$d (fun_app$e (uuc$ ?v0) ?v1) ?v2) (fun_app$w ?v0 (pair$ ?v1 ?v2))) :pattern ((fun_app$d (fun_app$e (uuc$ ?v0) ?v1) ?v2)))) :named a23))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_bool_fun$) (?v1 A_llist$) (?v2 A_llist$)) (! (= (fun_app$l (fun_app$m (uuf$ ?v0) ?v1) ?v2) (fun_app$h ?v0 (pair$ ?v1 ?v2))) :pattern ((fun_app$l (fun_app$m (uuf$ ?v0) ?v1) ?v2)))) :named a24))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_set_fun$) (?v1 A_llist$) (?v2 A_llist$)) (! (= (fun_app$n (fun_app$o (uub$ ?v0) ?v1) ?v2) (fun_app$x ?v0 (pair$ ?v1 ?v2))) :pattern ((fun_app$n (fun_app$o (uub$ ?v0) ?v1) ?v2)))) :named a25))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (! (= (fun_app$p (fun_app$q (uue$ ?v0) ?v1) ?v2) (fun_app$r ?v0 (pair$ ?v1 ?v2))) :pattern ((fun_app$p (fun_app$q (uue$ ?v0) ?v1) ?v2)))) :named a26))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod_bool_fun$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod$)) (! (= (fun_app$h (fun_app$r (uud$ ?v0) ?v1) ?v2) (fun_app$j ?v0 (pair$b ?v1 ?v2))) :pattern ((fun_app$h (fun_app$r (uud$ ?v0) ?v1) ?v2)))) :named a27))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist$) (?v3 A_llist$)) (! (= (fun_app$l (fun_app$m (fun_app$y (uvg$ ?v0) ?v1) ?v2) ?v3) (fun_app$h (fun_app$p (fun_app$q ?v0 ?v2) ?v3) ?v1)) :pattern ((fun_app$l (fun_app$m (fun_app$y (uvg$ ?v0) ?v1) ?v2) ?v3)))) :named a28))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist_a_llist_fun$) (?v2 A_llist$) (?v3 A_llist$)) (! (= (fun_app$l (fun_app$m (fun_app$z (uwk$ ?v0) ?v1) ?v2) ?v3) (fun_app$i (member$ (pair$ (fun_app$a ?v1 ?v2) (fun_app$a ?v1 ?v3))) ?v0)) :pattern ((fun_app$l (fun_app$m (fun_app$z (uwk$ ?v0) ?v1) ?v2) ?v3)))) :named a29))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$) (?v2 A_llist$) (?v3 A_llist$)) (! (= (fun_app$l (fun_app$m (fun_app$aa (uwt$ ?v0) ?v1) ?v2) ?v3) (and (= ?v0 ?v2) (= ?v1 ?v3))) :pattern ((fun_app$l (fun_app$m (fun_app$aa (uwt$ ?v0) ?v1) ?v2) ?v3)))) :named a30))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v2 A_llist$) (?v3 A_llist$)) (! (= (fun_app$d (fun_app$e (uuv$ ?v0 ?v1) ?v2) ?v3) (fun_app$w (fun_app$ab uncurry$ ?v0) (fun_app$d (fun_app$e ?v1 ?v2) ?v3))) :pattern ((fun_app$d (fun_app$e (uuv$ ?v0 ?v1) ?v2) ?v3)))) :named a31))
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v2 A_llist$) (?v3 A_llist$)) (! (= (fun_app$l (fun_app$m (fun_app$ac (uuz$ ?v0) ?v1) ?v2) ?v3) (fun_app$h (fun_app$ad uncurry$a ?v0) (fun_app$d (fun_app$e ?v1 ?v2) ?v3))) :pattern ((fun_app$l (fun_app$m (fun_app$ac (uuz$ ?v0) ?v1) ?v2) ?v3)))) :named a32))
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_fun_fun$) (?v2 A_llist_a_llist_prod$) (?v3 A_llist_a_llist_prod$)) (! (= (fun_app$h (fun_app$r (fun_app$ae (uut$ ?v0) ?v1) ?v2) ?v3) (fun_app$h (fun_app$ad uncurry$a ?v0) (fun_app$w (fun_app$af ?v1 ?v2) ?v3))) :pattern ((fun_app$h (fun_app$r (fun_app$ae (uut$ ?v0) ?v1) ?v2) ?v3)))) :named a33))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v2 A_llist$) (?v3 A_llist$)) (! (= (fun_app$n (fun_app$o (fun_app$ag (uuu$ ?v0) ?v1) ?v2) ?v3) (fun_app$x (fun_app$ah uncurry$b ?v0) (fun_app$d (fun_app$e ?v1 ?v2) ?v3))) :pattern ((fun_app$n (fun_app$o (fun_app$ag (uuu$ ?v0) ?v1) ?v2) ?v3)))) :named a34))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v2 A_llist$) (?v3 A_llist$)) (! (= (fun_app$p (fun_app$q (fun_app$ai (uuy$ ?v0) ?v1) ?v2) ?v3) (fun_app$r (fun_app$aj uncurry$c ?v0) (fun_app$d (fun_app$e ?v1 ?v2) ?v3))) :pattern ((fun_app$p (fun_app$q (fun_app$ai (uuy$ ?v0) ?v1) ?v2) ?v3)))) :named a35))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun_fun$) (?v2 A_llist$) (?v3 A_llist$)) (! (= (fun_app$l (fun_app$m (fun_app$ak (uuw$ ?v0) ?v1) ?v2) ?v3) (fun_app$j (fun_app$al uncurry$d ?v0) (fun_app$am (fun_app$an ?v1 ?v2) ?v3))) :pattern ((fun_app$l (fun_app$m (fun_app$ak (uuw$ ?v0) ?v1) ?v2) ?v3)))) :named a36))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun_fun$) (?v2 A_llist_a_llist_prod$) (?v3 A_llist_a_llist_prod$)) (! (= (fun_app$h (fun_app$r (fun_app$ao (uux$ ?v0) ?v1) ?v2) ?v3) (fun_app$j (fun_app$al uncurry$d ?v0) (fun_app$f (fun_app$g ?v1 ?v2) ?v3))) :pattern ((fun_app$h (fun_app$r (fun_app$ao (uux$ ?v0) ?v1) ?v2) ?v3)))) :named a37))
+(assert (! (forall ((?v0 Bool) (?v1 A_llist_a_llist_bool_fun_fun$) (?v2 A_llist$) (?v3 A_llist$)) (! (= (fun_app$l (fun_app$m (fun_app$ap (uua$ ?v0) ?v1) ?v2) ?v3) (and ?v0 (fun_app$l (fun_app$m ?v1 ?v2) ?v3))) :pattern ((fun_app$l (fun_app$m (fun_app$ap (uua$ ?v0) ?v1) ?v2) ?v3)))) :named a38))
+(assert (! (forall ((?v0 Bool) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v2 A_llist_a_llist_prod$) (?v3 A_llist_a_llist_prod$)) (! (= (fun_app$h (fun_app$r (fun_app$aq (uu$ ?v0) ?v1) ?v2) ?v3) (and ?v0 (fun_app$h (fun_app$r ?v1 ?v2) ?v3))) :pattern ((fun_app$h (fun_app$r (fun_app$aq (uu$ ?v0) ?v1) ?v2) ?v3)))) :named a39))
+(assert (! (forall ((?v0 A_llist_a_llist_fun$) (?v1 A_a_llist_a_llist_fun_fun$) (?v2 A$) (?v3 A_llist$)) (! (= (fun_app$a (fun_app$v (fun_app$ar (uvl$ ?v0) ?v1) ?v2) ?v3) (fun_app$a ?v0 (fun_app$a (fun_app$v ?v1 ?v2) ?v3))) :pattern ((fun_app$a (fun_app$v (fun_app$ar (uvl$ ?v0) ?v1) ?v2) ?v3)))) :named a40))
+(assert (! (forall ((?v0 A_llist_bool_fun$) (?v1 A_a_llist_a_llist_fun_fun$) (?v2 A$) (?v3 A_llist$)) (! (= (fun_app$l (fun_app$as (fun_app$at (uvk$ ?v0) ?v1) ?v2) ?v3) (fun_app$l ?v0 (fun_app$a (fun_app$v ?v1 ?v2) ?v3))) :pattern ((fun_app$l (fun_app$as (fun_app$at (uvk$ ?v0) ?v1) ?v2) ?v3)))) :named a41))
+(assert (! (forall ((?v0 A_llist_a_fun$) (?v1 A_a_llist_a_llist_fun_fun$) (?v2 A$) (?v3 A_llist$)) (! (= (fun_app$c (fun_app$au (fun_app$av (uvm$ ?v0) ?v1) ?v2) ?v3) (fun_app$c ?v0 (fun_app$a (fun_app$v ?v1 ?v2) ?v3))) :pattern ((fun_app$c (fun_app$au (fun_app$av (uvm$ ?v0) ?v1) ?v2) ?v3)))) :named a42))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v2 A_llist$) (?v3 A_llist$)) (! (= (fun_app$d (fun_app$e (uur$ ?v0 ?v1) ?v2) ?v3) (fun_app$w ?v0 (fun_app$d (fun_app$e ?v1 ?v2) ?v3))) :pattern ((fun_app$d (fun_app$e (uur$ ?v0 ?v1) ?v2) ?v3)))) :named a43))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_bool_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v2 A_llist$) (?v3 A_llist$)) (! (= (fun_app$l (fun_app$m (fun_app$ac (uul$ ?v0) ?v1) ?v2) ?v3) (fun_app$h ?v0 (fun_app$d (fun_app$e ?v1 ?v2) ?v3))) :pattern ((fun_app$l (fun_app$m (fun_app$ac (uul$ ?v0) ?v1) ?v2) ?v3)))) :named a44))
+(assert (! (forall ((?v0 Bool_a_llist_fun$) (?v1 A_a_llist_bool_fun_fun$) (?v2 A$) (?v3 A_llist$)) (! (= (fun_app$a (fun_app$v (fun_app$aw (uvi$ ?v0) ?v1) ?v2) ?v3) (fun_app$ax ?v0 (fun_app$l (fun_app$as ?v1 ?v2) ?v3))) :pattern ((fun_app$a (fun_app$v (fun_app$aw (uvi$ ?v0) ?v1) ?v2) ?v3)))) :named a45))
+(assert (! (forall ((?v0 Bool_a_llist_a_llist_prod_fun$) (?v1 A_llist_a_llist_bool_fun_fun$) (?v2 A_llist$) (?v3 A_llist$)) (! (= (fun_app$d (fun_app$e (uuk$ ?v0 ?v1) ?v2) ?v3) (fun_app$ay ?v0 (fun_app$l (fun_app$m ?v1 ?v2) ?v3))) :pattern ((fun_app$d (fun_app$e (uuk$ ?v0 ?v1) ?v2) ?v3)))) :named a46))
+(assert (! (forall ((?v0 Bool_bool_fun$) (?v1 A_llist_a_llist_bool_fun_fun$) (?v2 A_llist$) (?v3 A_llist$)) (! (= (fun_app$l (fun_app$m (fun_app$ap (uuj$ ?v0) ?v1) ?v2) ?v3) (fun_app$az ?v0 (fun_app$l (fun_app$m ?v1 ?v2) ?v3))) :pattern ((fun_app$l (fun_app$m (fun_app$ap (uuj$ ?v0) ?v1) ?v2) ?v3)))) :named a47))
+(assert (! (forall ((?v0 Bool_bool_fun$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v2 A_llist_a_llist_prod$) (?v3 A_llist_a_llist_prod$)) (! (= (fun_app$h (fun_app$r (fun_app$aq (uup$ ?v0) ?v1) ?v2) ?v3) (fun_app$az ?v0 (fun_app$h (fun_app$r ?v1 ?v2) ?v3))) :pattern ((fun_app$h (fun_app$r (fun_app$aq (uup$ ?v0) ?v1) ?v2) ?v3)))) :named a48))
+(assert (! (forall ((?v0 Bool_bool_fun$) (?v1 A_a_llist_bool_fun_fun$) (?v2 A$) (?v3 A_llist$)) (! (= (fun_app$l (fun_app$as (fun_app$ba (uvh$ ?v0) ?v1) ?v2) ?v3) (fun_app$az ?v0 (fun_app$l (fun_app$as ?v1 ?v2) ?v3))) :pattern ((fun_app$l (fun_app$as (fun_app$ba (uvh$ ?v0) ?v1) ?v2) ?v3)))) :named a49))
+(assert (! (forall ((?v0 Bool_a_llist_a_llist_prod_set_fun$) (?v1 A_llist_a_llist_bool_fun_fun$) (?v2 A_llist$) (?v3 A_llist$)) (! (= (fun_app$n (fun_app$o (fun_app$bb (uum$ ?v0) ?v1) ?v2) ?v3) (fun_app$bc ?v0 (fun_app$l (fun_app$m ?v1 ?v2) ?v3))) :pattern ((fun_app$n (fun_app$o (fun_app$bb (uum$ ?v0) ?v1) ?v2) ?v3)))) :named a50))
+(assert (! (forall ((?v0 Bool_a_llist_a_llist_prod_bool_fun_fun$) (?v1 A_llist_a_llist_bool_fun_fun$) (?v2 A_llist$) (?v3 A_llist$)) (! (= (fun_app$p (fun_app$q (fun_app$bd (uuo$ ?v0) ?v1) ?v2) ?v3) (fun_app$be ?v0 (fun_app$l (fun_app$m ?v1 ?v2) ?v3))) :pattern ((fun_app$p (fun_app$q (fun_app$bd (uuo$ ?v0) ?v1) ?v2) ?v3)))) :named a51))
+(assert (! (forall ((?v0 Bool_a_fun$) (?v1 A_a_llist_bool_fun_fun$) (?v2 A$) (?v3 A_llist$)) (! (= (fun_app$c (fun_app$au (fun_app$bf (uvj$ ?v0) ?v1) ?v2) ?v3) (fun_app$bg ?v0 (fun_app$l (fun_app$as ?v1 ?v2) ?v3))) :pattern ((fun_app$c (fun_app$au (fun_app$bf (uvj$ ?v0) ?v1) ?v2) ?v3)))) :named a52))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set_a_llist_a_llist_prod_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) (?v2 A_llist$) (?v3 A_llist$)) (! (= (fun_app$d (fun_app$e (uus$ ?v0 ?v1) ?v2) ?v3) (fun_app$bh ?v0 (fun_app$n (fun_app$o ?v1 ?v2) ?v3))) :pattern ((fun_app$d (fun_app$e (uus$ ?v0 ?v1) ?v2) ?v3)))) :named a53))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set_bool_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) (?v2 A_llist$) (?v3 A_llist$)) (! (= (fun_app$l (fun_app$m (fun_app$bi (uun$ ?v0) ?v1) ?v2) ?v3) (fun_app$i ?v0 (fun_app$n (fun_app$o ?v1 ?v2) ?v3))) :pattern ((fun_app$l (fun_app$m (fun_app$bi (uun$ ?v0) ?v1) ?v2) ?v3)))) :named a54))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_bool_fun_bool_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) (?v2 A_llist$) (?v3 A_llist$)) (! (= (fun_app$l (fun_app$m (fun_app$bj (uuq$ ?v0) ?v1) ?v2) ?v3) (fun_app$bk ?v0 (fun_app$p (fun_app$q ?v1 ?v2) ?v3))) :pattern ((fun_app$l (fun_app$m (fun_app$bj (uuq$ ?v0) ?v1) ?v2) ?v3)))) :named a55))
+(assert (! (forall ((?v0 A_a_llist_fun$) (?v1 A_a_llist_a_fun_fun$) (?v2 A$) (?v3 A_llist$)) (! (= (fun_app$a (fun_app$v (fun_app$bl (uvo$ ?v0) ?v1) ?v2) ?v3) (fun_app$bm ?v0 (fun_app$c (fun_app$au ?v1 ?v2) ?v3))) :pattern ((fun_app$a (fun_app$v (fun_app$bl (uvo$ ?v0) ?v1) ?v2) ?v3)))) :named a56))
+(assert (! (forall ((?v0 A_bool_fun$) (?v1 A_a_llist_a_fun_fun$) (?v2 A$) (?v3 A_llist$)) (! (= (fun_app$l (fun_app$as (fun_app$bn (uvn$ ?v0) ?v1) ?v2) ?v3) (fun_app$k ?v0 (fun_app$c (fun_app$au ?v1 ?v2) ?v3))) :pattern ((fun_app$l (fun_app$as (fun_app$bn (uvn$ ?v0) ?v1) ?v2) ?v3)))) :named a57))
+(assert (! (forall ((?v0 A_a_fun$) (?v1 A_a_llist_a_fun_fun$) (?v2 A$) (?v3 A_llist$)) (! (= (fun_app$c (fun_app$au (fun_app$bo (uvp$ ?v0) ?v1) ?v2) ?v3) (fun_app$bp ?v0 (fun_app$c (fun_app$au ?v1 ?v2) ?v3))) :pattern ((fun_app$c (fun_app$au (fun_app$bo (uvp$ ?v0) ?v1) ?v2) ?v3)))) :named a58))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist_a_llist_prod_set$) (?v2 A_llist$) (?v3 A_llist$)) (! (= (fun_app$p (fun_app$q (fun_app$bq (uwo$ ?v0) ?v1) ?v2) ?v3) (fun_app$ad uncurry$a (fun_app$aa (fun_app$br (fun_app$bs (uwn$ ?v0) ?v1) ?v2) ?v3))) :pattern ((fun_app$p (fun_app$q (fun_app$bq (uwo$ ?v0) ?v1) ?v2) ?v3)))) :named a59))
+(assert (! (forall ((?v0 A_llist_bool_fun$) (?v1 A_llist_a_llist_a_llist_prod_set_fun$) (?v2 A_llist$) (?v3 A_llist$)) (! (= (fun_app$p (fun_app$q (fun_app$bt (uwm$ ?v0) ?v1) ?v2) ?v3) (fun_app$ad uncurry$a (fun_app$aa (fun_app$br (fun_app$bu (uwl$ ?v0) ?v1) ?v2) ?v3))) :pattern ((fun_app$p (fun_app$q (fun_app$bt (uwm$ ?v0) ?v1) ?v2) ?v3)))) :named a60))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist_a_llist_prod_set$) (?v2 A_llist$) (?v3 A_llist$) (?v4 A_llist$) (?v5 A_llist$)) (! (= (fun_app$l (fun_app$m (fun_app$aa (fun_app$br (fun_app$bs (uwn$ ?v0) ?v1) ?v2) ?v3) ?v4) ?v5) (or (fun_app$i (member$ (pair$ ?v2 ?v4)) ?v0) (and (= ?v2 ?v4) (fun_app$i (member$ (pair$ ?v3 ?v5)) ?v1)))) :pattern ((fun_app$l (fun_app$m (fun_app$aa (fun_app$br (fun_app$bs (uwn$ ?v0) ?v1) ?v2) ?v3) ?v4) ?v5)))) :named a61))
+(assert (! (forall ((?v0 A_llist_bool_fun$) (?v1 A_llist_a_llist_a_llist_prod_set_fun$) (?v2 A_llist$) (?v3 A_llist$) (?v4 A_llist$) (?v5 A_llist$)) (! (= (fun_app$l (fun_app$m (fun_app$aa (fun_app$br (fun_app$bu (uwl$ ?v0) ?v1) ?v2) ?v3) ?v4) ?v5) (and (= ?v2 ?v4) (and (fun_app$l ?v0 ?v4) (fun_app$i (member$ (pair$ ?v3 ?v5)) (fun_app$n ?v1 ?v4))))) :pattern ((fun_app$l (fun_app$m (fun_app$aa (fun_app$br (fun_app$bu (uwl$ ?v0) ?v1) ?v2) ?v3) ?v4) ?v5)))) :named a62))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$)) (! (= (fun_app$b (fun_app$bv uwa$ ?v0) ?v1) ?v0) :pattern ((fun_app$b (fun_app$bv uwa$ ?v0) ?v1)))) :named a63))
+(assert (! (forall ((?v0 A$) (?v1 A_llist$)) (! (= (fun_app$c (fun_app$au uwb$ ?v0) ?v1) ?v0) :pattern ((fun_app$c (fun_app$au uwb$ ?v0) ?v1)))) :named a64))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$)) (! (= (fun_app$ (fun_app$u uvu$ ?v0) ?v1) ?v1) :pattern ((fun_app$ (fun_app$u uvu$ ?v0) ?v1)))) :named a65))
+(assert (! (forall ((?v0 A$) (?v1 A_llist$)) (! (= (fun_app$a (fun_app$v uvv$ ?v0) ?v1) ?v1) :pattern ((fun_app$a (fun_app$v uvv$ ?v0) ?v1)))) :named a66))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$)) (! (= (fun_app$bw (fun_app$bx uvs$ ?v0) ?v1) false) :pattern ((fun_app$bw (fun_app$bx uvs$ ?v0) ?v1)))) :named a67))
+(assert (! (forall ((?v0 A$) (?v1 A_llist$)) (! (= (fun_app$l (fun_app$as uvt$ ?v0) ?v1) false) :pattern ((fun_app$l (fun_app$as uvt$ ?v0) ?v1)))) :named a68))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (! (= (fun_app$l (fun_app$m uvb$ ?v0) ?v1) true) :pattern ((fun_app$l (fun_app$m uvb$ ?v0) ?v1)))) :named a69))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$)) (! (= (fun_app$bw (fun_app$bx uvq$ ?v0) ?v1) true) :pattern ((fun_app$bw (fun_app$bx uvq$ ?v0) ?v1)))) :named a70))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod$)) (! (= (fun_app$h (fun_app$r uva$ ?v0) ?v1) true) :pattern ((fun_app$h (fun_app$r uva$ ?v0) ?v1)))) :named a71))
+(assert (! (forall ((?v0 A$) (?v1 A_llist$)) (! (= (fun_app$l (fun_app$as uvr$ ?v0) ?v1) true) :pattern ((fun_app$l (fun_app$as uvr$ ?v0) ?v1)))) :named a72))
+(assert (! (not (fun_app$l (lprefix$ xs$) ys$)) :named a73))
+(assert (! (fun_app$l (fun_app$m p$ xs$) ys$) :named a74))
+(assert (! (fun_app$i (member$ (pair$ xs$ ys$)) (collect$ (fun_app$ad uncurry$a p$))) :named a75))
+(assert (! (forall ((?v0 A_llist$)) (fun_app$l (lprefix$ lNil$) ?v0)) :named a76))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod_llist$) (?v2 A_llist_a_llist_prod$)) (=> (fun_app$bw (lprefix$a ?v0) ?v1) (fun_app$bw (lprefix$a (lCons$a ?v2 ?v0)) (lCons$a ?v2 ?v1)))) :named a77))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$) (?v2 A$)) (=> (fun_app$l (lprefix$ ?v0) ?v1) (fun_app$l (lprefix$ (lCons$ ?v2 ?v0)) (lCons$ ?v2 ?v1)))) :named a78))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (=> (fun_app$l (fun_app$m p$ ?v0) ?v1) (and (=> (fun_app$l lnull$ ?v1) (fun_app$l lnull$ ?v0)) (=> (and (not (fun_app$l lnull$ ?v0)) (not (fun_app$l lnull$ ?v1))) (and (= (lhd$ ?v0) (lhd$ ?v1)) (or (fun_app$l (fun_app$m p$ (ltl$ ?v0)) (ltl$ ?v1)) (fun_app$l (lprefix$ (ltl$ ?v0)) (ltl$ ?v1)))))))) :named a79))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod_llist$)) (= (fun_app$bw (lprefix$a ?v0) ?v1) (or (exists ((?v2 A_llist_a_llist_prod_llist$)) (and (= ?v0 lNil$a) (= ?v1 ?v2))) (exists ((?v2 A_llist_a_llist_prod_llist$) (?v3 A_llist_a_llist_prod_llist$) (?v4 A_llist_a_llist_prod$)) (and (= ?v0 (lCons$a ?v4 ?v2)) (and (= ?v1 (lCons$a ?v4 ?v3)) (fun_app$bw (lprefix$a ?v2) ?v3))))))) :named a80))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (= (fun_app$l (lprefix$ ?v0) ?v1) (or (exists ((?v2 A_llist$)) (and (= ?v0 lNil$) (= ?v1 ?v2))) (exists ((?v2 A_llist$) (?v3 A_llist$) (?v4 A$)) (and (= ?v0 (lCons$ ?v4 ?v2)) (and (= ?v1 (lCons$ ?v4 ?v3)) (fun_app$l (lprefix$ ?v2) ?v3))))))) :named a81))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod_llist$)) (=> (and (fun_app$bw (lprefix$a ?v0) ?v1) (and (forall ((?v2 A_llist_a_llist_prod_llist$)) (=> (and (= ?v0 lNil$a) (= ?v1 ?v2)) false)) (forall ((?v2 A_llist_a_llist_prod_llist$) (?v3 A_llist_a_llist_prod_llist$) (?v4 A_llist_a_llist_prod$)) (=> (and (= ?v0 (lCons$a ?v4 ?v2)) (and (= ?v1 (lCons$a ?v4 ?v3)) (fun_app$bw (lprefix$a ?v2) ?v3))) false)))) false)) :named a82))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (=> (and (fun_app$l (lprefix$ ?v0) ?v1) (and (forall ((?v2 A_llist$)) (=> (and (= ?v0 lNil$) (= ?v1 ?v2)) false)) (forall ((?v2 A_llist$) (?v3 A_llist$) (?v4 A$)) (=> (and (= ?v0 (lCons$ ?v4 ?v2)) (and (= ?v1 (lCons$ ?v4 ?v3)) (fun_app$l (lprefix$ ?v2) ?v3))) false)))) false)) :named a83))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_bool_fun_fun$) (?v1 A_llist_a_llist_prod_llist$) (?v2 A_llist_a_llist_prod_llist$)) (=> (and (fun_app$bw (fun_app$by ?v0 ?v1) ?v2) (forall ((?v3 A_llist_a_llist_prod_llist$) (?v4 A_llist_a_llist_prod_llist$)) (=> (fun_app$bw (fun_app$by ?v0 ?v3) ?v4) (or (exists ((?v5 A_llist_a_llist_prod_llist$)) (and (= ?v3 lNil$a) (= ?v4 ?v5))) (exists ((?v5 A_llist_a_llist_prod_llist$) (?v6 A_llist_a_llist_prod_llist$) (?v [...]
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (=> (and (fun_app$l (fun_app$m ?v0 ?v1) ?v2) (forall ((?v3 A_llist$) (?v4 A_llist$)) (=> (fun_app$l (fun_app$m ?v0 ?v3) ?v4) (or (exists ((?v5 A_llist$)) (and (= ?v3 lNil$) (= ?v4 ?v5))) (exists ((?v5 A_llist$) (?v6 A_llist$) (?v7 A$)) (and (= ?v3 (lCons$ ?v7 ?v5)) (and (= ?v4 (lCons$ ?v7 ?v6)) (or (fun_app$l (fun_app$m ?v0 ?v5) ?v6) (fun_app$l (lprefix$ ?v5) ?v6))))))))) (fun_app$l (lprefix$ ?v1) ?v2) [...]
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod_llist$) (?v2 A_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_prod_set$)) (=> (and (member$c (pair$a ?v0 ?v1) ?v2) (forall ((?v3 A_llist_a_llist_prod_llist$) (?v4 A_llist_a_llist_prod_llist$)) (=> (member$c (pair$a ?v3 ?v4) ?v2) (or (fun_app$bw lnull$a ?v3) (exists ((?v5 A_llist_a_llist_prod$) (?v6 A_llist_a_llist_prod_llist$) (?v7 A_llist_a_llist_prod_llist$)) (and (= ?v3 (lCons$a ?v5 ?v6)) (and (= ?v4  [...]
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$) (?v2 A_llist_a_llist_prod_set$)) (=> (and (fun_app$i (member$ (pair$ ?v0 ?v1)) ?v2) (forall ((?v3 A_llist$) (?v4 A_llist$)) (=> (fun_app$i (member$ (pair$ ?v3 ?v4)) ?v2) (or (fun_app$l lnull$ ?v3) (exists ((?v5 A$) (?v6 A_llist$) (?v7 A_llist$)) (and (= ?v3 (lCons$ ?v5 ?v6)) (and (= ?v4 (lCons$ ?v5 ?v7)) (or (fun_app$i (member$ (pair$ ?v6 ?v7)) ?v2) (fun_app$l (lprefix$ ?v6) ?v7))))))))) (fun_app$l (lprefix$ ?v0) ?v1))) :named a87))
+(assert (! (forall ((?v0 A$) (?v1 A_llist$) (?v2 A$) (?v3 A_llist$)) (= (= (lCons$ ?v0 ?v1) (lCons$ ?v2 ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3)))) :named a88))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$) (?v2 A_llist_a_llist_prod$) (?v3 A_llist_a_llist_prod_llist$)) (= (= (lCons$a ?v0 ?v1) (lCons$a ?v2 ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3)))) :named a89))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$)) (=> (not (fun_app$bw lnull$a ?v0)) (= (lCons$a (lhd$a ?v0) (ltl$a ?v0)) ?v0))) :named a90))
+(assert (! (forall ((?v0 A_llist$)) (=> (not (fun_app$l lnull$ ?v0)) (= (lCons$ (lhd$ ?v0) (ltl$ ?v0)) ?v0))) :named a91))
+(assert (! (forall ((?v0 A_llist$)) (= (not (= ?v0 lNil$)) (exists ((?v1 A$) (?v2 A_llist$)) (= ?v0 (lCons$ ?v1 ?v2))))) :named a92))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$)) (= (not (= ?v0 lNil$a)) (exists ((?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod_llist$)) (= ?v0 (lCons$a ?v1 ?v2))))) :named a93))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$)) (= (not (fun_app$bw lnull$a ?v0)) (exists ((?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod_llist$)) (= ?v0 (lCons$a ?v1 ?v2))))) :named a94))
+(assert (! (forall ((?v0 A_llist$)) (= (not (fun_app$l lnull$ ?v0)) (exists ((?v1 A$) (?v2 A_llist$)) (= ?v0 (lCons$ ?v1 ?v2))))) :named a95))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$)) (! (= (fun_app$bw lnull$a ?v0) (= ?v0 lNil$a)) :pattern ((fun_app$bw lnull$a ?v0)))) :named a96))
+(assert (! (forall ((?v0 A_llist$)) (! (= (fun_app$l lnull$ ?v0) (= ?v0 lNil$)) :pattern ((fun_app$l lnull$ ?v0)))) :named a97))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$)) (! (= (lhd$a (lCons$a ?v0 ?v1)) ?v0) :pattern ((lCons$a ?v0 ?v1)))) :named a98))
+(assert (! (forall ((?v0 A$) (?v1 A_llist$)) (! (= (lhd$ (lCons$ ?v0 ?v1)) ?v0) :pattern ((lCons$ ?v0 ?v1)))) :named a99))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$)) (! (= (ltl$a (lCons$a ?v0 ?v1)) ?v1) :pattern ((lCons$a ?v0 ?v1)))) :named a100))
+(assert (! (forall ((?v0 A$) (?v1 A_llist$)) (! (= (ltl$ (lCons$ ?v0 ?v1)) ?v1) :pattern ((lCons$ ?v0 ?v1)))) :named a101))
+(assert (! (= (ltl$a lNil$a) lNil$a) :named a102))
+(assert (! (= (ltl$ lNil$) lNil$) :named a103))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$)) (=> (and (=> (= ?v0 lNil$a) false) (=> (= ?v0 (lCons$a (lhd$a ?v0) (ltl$a ?v0))) false)) false)) :named a104))
+(assert (! (forall ((?v0 A_llist$)) (=> (and (=> (= ?v0 lNil$) false) (=> (= ?v0 (lCons$ (lhd$ ?v0) (ltl$ ?v0))) false)) false)) :named a105))
+(assert (! (forall ((?v0 A_llist$)) (=> (and (=> (= ?v0 lNil$) false) (forall ((?v1 A$) (?v2 A_llist$)) (=> (= ?v0 (lCons$ ?v1 ?v2)) false))) false)) :named a106))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$)) (=> (and (=> (= ?v0 lNil$a) false) (forall ((?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod_llist$)) (=> (= ?v0 (lCons$a ?v1 ?v2)) false))) false)) :named a107))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod_llist$)) (=> (and (=> (and (fun_app$bw lnull$a ?v0) (fun_app$bw lnull$a ?v1)) false) (=> (or (not (fun_app$bw lnull$a ?v0)) (not (fun_app$bw lnull$a ?v1))) false)) false)) :named a108))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (=> (and (=> (and (fun_app$l lnull$ ?v0) (fun_app$l lnull$ ?v1)) false) (=> (or (not (fun_app$l lnull$ ?v0)) (not (fun_app$l lnull$ ?v1))) false)) false)) :named a109))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$)) (=> (and (=> (fun_app$bw lnull$a ?v0) false) (=> (not (fun_app$bw lnull$a ?v0)) false)) false)) :named a110))
+(assert (! (forall ((?v0 A_llist$)) (=> (and (=> (fun_app$l lnull$ ?v0) false) (=> (not (fun_app$l lnull$ ?v0)) false)) false)) :named a111))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod_llist$)) (=> (and (= (fun_app$bw lnull$a ?v0) (fun_app$bw lnull$a ?v1)) (=> (and (not (fun_app$bw lnull$a ?v0)) (not (fun_app$bw lnull$a ?v1))) (and (= (lhd$a ?v0) (lhd$a ?v1)) (= (ltl$a ?v0) (ltl$a ?v1))))) (= ?v0 ?v1))) :named a112))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (=> (and (= (fun_app$l lnull$ ?v0) (fun_app$l lnull$ ?v1)) (=> (and (not (fun_app$l lnull$ ?v0)) (not (fun_app$l lnull$ ?v1))) (and (= (lhd$ ?v0) (lhd$ ?v1)) (= (ltl$ ?v0) (ltl$ ?v1))))) (= ?v0 ?v1))) :named a113))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod_llist$)) (=> (= ?v0 (lCons$a ?v1 ?v2)) (and (not (= ?v0 lNil$a)) (and (= (lhd$a ?v0) ?v1) (= (ltl$a ?v0) ?v2))))) :named a114))
+(assert (! (forall ((?v0 A_llist$) (?v1 A$) (?v2 A_llist$)) (=> (= ?v0 (lCons$ ?v1 ?v2)) (and (not (= ?v0 lNil$)) (and (= (lhd$ ?v0) ?v1) (= (ltl$ ?v0) ?v2))))) :named a115))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod_llist$)) (=> (= ?v0 (lCons$a ?v1 ?v2)) (not (fun_app$bw lnull$a ?v0)))) :named a116))
+(assert (! (forall ((?v0 A_llist$) (?v1 A$) (?v2 A_llist$)) (=> (= ?v0 (lCons$ ?v1 ?v2)) (not (fun_app$l lnull$ ?v0)))) :named a117))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$)) (=> (= ?v0 lNil$a) (fun_app$bw lnull$a ?v0))) :named a118))
+(assert (! (forall ((?v0 A_llist$)) (=> (= ?v0 lNil$) (fun_app$l lnull$ ?v0))) :named a119))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$)) (=> (fun_app$bw lnull$a ?v0) (= ?v0 lNil$a))) :named a120))
+(assert (! (forall ((?v0 A_llist$)) (=> (fun_app$l lnull$ ?v0) (= ?v0 lNil$))) :named a121))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$)) (=> (fun_app$bw lnull$a ?v0) (fun_app$bw lnull$a (ltl$a ?v0)))) :named a122))
+(assert (! (forall ((?v0 A_llist$)) (=> (fun_app$l lnull$ ?v0) (fun_app$l lnull$ (ltl$ ?v0)))) :named a123))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_bool_fun_fun$) (?v1 A_llist_a_llist_prod_llist$) (?v2 A_llist_a_llist_prod_llist$)) (=> (and (fun_app$bw (fun_app$by ?v0 ?v1) ?v2) (forall ((?v3 A_llist_a_llist_prod_llist$) (?v4 A_llist_a_llist_prod_llist$)) (=> (fun_app$bw (fun_app$by ?v0 ?v3) ?v4) (and (= (fun_app$bw lnull$a ?v3) (fun_app$bw lnull$a ?v4)) (=> (and (not (fun_app$bw lnull$a ?v3)) (not (fun_app$bw lnull$a ?v4))) (and (= (lhd$a ?v3) (lhd$a ?v4) [...]
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (=> (and (fun_app$l (fun_app$m ?v0 ?v1) ?v2) (forall ((?v3 A_llist$) (?v4 A_llist$)) (=> (fun_app$l (fun_app$m ?v0 ?v3) ?v4) (and (= (fun_app$l lnull$ ?v3) (fun_app$l lnull$ ?v4)) (=> (and (not (fun_app$l lnull$ ?v3)) (not (fun_app$l lnull$ ?v4))) (and (= (lhd$ ?v3) (lhd$ ?v4)) (or (fun_app$l (fun_app$m ?v0 (ltl$ ?v3)) (ltl$ ?v4)) (= (ltl$ ?v3) (ltl$ ?v4))))))))) (= ?v1 ?v2))) :named a125))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist_a_llist_a_llist_prod_llist_bool_fun_fun$) (?v1 A_llist_a_llist_prod_llist$) (?v2 A_llist_a_llist_prod_llist$)) (=> (and (fun_app$bw (fun_app$by ?v0 ?v1) ?v2) (forall ((?v3 A_llist_a_llist_prod_llist$) (?v4 A_llist_a_llist_prod_llist$)) (=> (fun_app$bw (fun_app$by ?v0 ?v3) ?v4) (and (= (fun_app$bw lnull$a ?v3) (fun_app$bw lnull$a ?v4)) (=> (and (not (fun_app$bw lnull$a ?v3)) (not (fun_app$bw lnull$a ?v4))) (and (= (lhd$a ?v3) (lhd$a ?v4) [...]
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (=> (and (fun_app$l (fun_app$m ?v0 ?v1) ?v2) (forall ((?v3 A_llist$) (?v4 A_llist$)) (=> (fun_app$l (fun_app$m ?v0 ?v3) ?v4) (and (= (fun_app$l lnull$ ?v3) (fun_app$l lnull$ ?v4)) (=> (and (not (fun_app$l lnull$ ?v3)) (not (fun_app$l lnull$ ?v4))) (and (= (lhd$ ?v3) (lhd$ ?v4)) (fun_app$l (fun_app$m ?v0 (ltl$ ?v3)) (ltl$ ?v4)))))))) (= ?v1 ?v2))) :named a127))
+(assert (! (forall ((?v0 A$) (?v1 A_llist$)) (not (= lNil$ (lCons$ ?v0 ?v1)))) :named a128))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$)) (not (= lNil$a (lCons$a ?v0 ?v1)))) :named a129))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$)) (not (fun_app$bw lnull$a (lCons$a ?v0 ?v1)))) :named a130))
+(assert (! (forall ((?v0 A$) (?v1 A_llist$)) (not (fun_app$l lnull$ (lCons$ ?v0 ?v1)))) :named a131))
+(assert (! (fun_app$bw lnull$a lNil$a) :named a132))
+(assert (! (fun_app$l lnull$ lNil$) :named a133))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$)) (=> (forall ((?v2 A_llist_a_llist_prod$) (?v3 A_llist_a_llist_prod$)) (=> (= ?v0 (pair$b ?v2 ?v3)) (fun_app$h (fun_app$r ?v1 ?v2) ?v3))) (fun_app$j (fun_app$al uncurry$d ?v1) ?v0))) :named a134))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_bool_fun_fun$)) (=> (forall ((?v2 A_llist$) (?v3 A_llist$)) (=> (= ?v0 (pair$ ?v2 ?v3)) (fun_app$l (fun_app$m ?v1 ?v2) ?v3))) (fun_app$h (fun_app$ad uncurry$a ?v1) ?v0))) :named a135))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod$)) (=> (fun_app$h (fun_app$r ?v0 ?v1) ?v2) (fun_app$j (fun_app$al uncurry$d ?v0) (pair$b ?v1 ?v2)))) :named a136))
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (=> (fun_app$l (fun_app$m ?v0 ?v1) ?v2) (fun_app$h (fun_app$ad uncurry$a ?v0) (pair$ ?v1 ?v2)))) :named a137))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (! (= (fun_app$x (fun_app$ah uncurry$b ?v0) (pair$ ?v1 ?v2)) (fun_app$n (fun_app$o ?v0 ?v1) ?v2)) :pattern ((fun_app$x (fun_app$ah uncurry$b ?v0) (pair$ ?v1 ?v2))))) :named a138))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (! (= (fun_app$w (fun_app$ab uncurry$ ?v0) (pair$ ?v1 ?v2)) (fun_app$d (fun_app$e ?v0 ?v1) ?v2)) :pattern ((fun_app$w (fun_app$ab uncurry$ ?v0) (pair$ ?v1 ?v2))))) :named a139))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod$)) (! (= (fun_app$j (fun_app$al uncurry$d ?v0) (pair$b ?v1 ?v2)) (fun_app$h (fun_app$r ?v0 ?v1) ?v2)) :pattern ((fun_app$j (fun_app$al uncurry$d ?v0) (pair$b ?v1 ?v2))))) :named a140))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (! (= (fun_app$r (fun_app$aj uncurry$c ?v0) (pair$ ?v1 ?v2)) (fun_app$p (fun_app$q ?v0 ?v1) ?v2)) :pattern ((fun_app$r (fun_app$aj uncurry$c ?v0) (pair$ ?v1 ?v2))))) :named a141))
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (! (= (fun_app$h (fun_app$ad uncurry$a ?v0) (pair$ ?v1 ?v2)) (fun_app$l (fun_app$m ?v0 ?v1) ?v2)) :pattern ((fun_app$h (fun_app$ad uncurry$a ?v0) (pair$ ?v1 ?v2))))) :named a142))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod$)) (=> (fun_app$h (fun_app$r ?v0 ?v1) ?v2) (fun_app$j (fun_app$al uncurry$d ?v0) (pair$b ?v1 ?v2)))) :named a143))
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (=> (fun_app$l (fun_app$m ?v0 ?v1) ?v2) (fun_app$h (fun_app$ad uncurry$a ?v0) (pair$ ?v1 ?v2)))) :named a144))
+(assert (! (forall ((?v0 Bool) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v2 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (= (fun_app$j (fun_app$al uncurry$d (fun_app$aq (uu$ ?v0) ?v1)) ?v2) (and ?v0 (fun_app$j (fun_app$al uncurry$d ?v1) ?v2)))) :named a145))
+(assert (! (forall ((?v0 Bool) (?v1 A_llist_a_llist_bool_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$h (fun_app$ad uncurry$a (fun_app$ap (uua$ ?v0) ?v1)) ?v2) (and ?v0 (fun_app$h (fun_app$ad uncurry$a ?v1) ?v2)))) :named a146))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod$) (?v3 A_llist_a_llist_prod$)) (= (= (pair$b ?v0 ?v1) (pair$b ?v2 ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3)))) :named a147))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$) (?v2 A_llist$) (?v3 A_llist$)) (= (= (pair$ ?v0 ?v1) (pair$ ?v2 ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3)))) :named a148))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod$) (?v3 A_llist_a_llist_prod$)) (= (= (pair$b ?v0 ?v1) (pair$b ?v2 ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3)))) :named a149))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$) (?v2 A_llist$) (?v3 A_llist$)) (= (= (pair$ ?v0 ?v1) (pair$ ?v2 ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3)))) :named a150))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod$)) (=> (fun_app$j (fun_app$al uncurry$d ?v0) (pair$b ?v1 ?v2)) (fun_app$h (fun_app$r ?v0 ?v1) ?v2))) :named a151))
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (=> (fun_app$h (fun_app$ad uncurry$a ?v0) (pair$ ?v1 ?v2)) (fun_app$l (fun_app$m ?v0 ?v1) ?v2))) :named a152))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (=> (and (fun_app$j (fun_app$al uncurry$d ?v0) ?v1) (forall ((?v2 A_llist_a_llist_prod$) (?v3 A_llist_a_llist_prod$)) (=> (and (= ?v1 (pair$b ?v2 ?v3)) (fun_app$h (fun_app$r ?v0 ?v2) ?v3)) false))) false)) :named a153))
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$) (?v1 A_llist_a_llist_prod$)) (=> (and (fun_app$h (fun_app$ad uncurry$a ?v0) ?v1) (forall ((?v2 A_llist$) (?v3 A_llist$)) (=> (and (= ?v1 (pair$ ?v2 ?v3)) (fun_app$l (fun_app$m ?v0 ?v2) ?v3)) false))) false)) :named a154))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_set_fun$)) (= (fun_app$ah uncurry$b (uub$ ?v0)) ?v0)) :named a155))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_fun$)) (= (fun_app$ab uncurry$ (uuc$ ?v0)) ?v0)) :named a156))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod_bool_fun$)) (= (fun_app$al uncurry$d (uud$ ?v0)) ?v0)) :named a157))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$)) (= (fun_app$aj uncurry$c (uue$ ?v0)) ?v0)) :named a158))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_bool_fun$)) (= (fun_app$ad uncurry$a (uuf$ ?v0)) ?v0)) :named a159))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_set_fun$)) (=> (forall ((?v2 A_llist$) (?v3 A_llist$)) (= (fun_app$n (fun_app$o ?v0 ?v2) ?v3) (fun_app$x ?v1 (pair$ ?v2 ?v3)))) (= (fun_app$ah uncurry$b ?v0) ?v1))) :named a160))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_fun$)) (=> (forall ((?v2 A_llist$) (?v3 A_llist$)) (= (fun_app$d (fun_app$e ?v0 ?v2) ?v3) (fun_app$w ?v1 (pair$ ?v2 ?v3)))) (= (fun_app$ab uncurry$ ?v0) ?v1))) :named a161))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_prod_bool_fun$)) (=> (forall ((?v2 A_llist_a_llist_prod$) (?v3 A_llist_a_llist_prod$)) (= (fun_app$h (fun_app$r ?v0 ?v2) ?v3) (fun_app$j ?v1 (pair$b ?v2 ?v3)))) (= (fun_app$al uncurry$d ?v0) ?v1))) :named a162))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$)) (=> (forall ((?v2 A_llist$) (?v3 A_llist$)) (= (fun_app$p (fun_app$q ?v0 ?v2) ?v3) (fun_app$r ?v1 (pair$ ?v2 ?v3)))) (= (fun_app$aj uncurry$c ?v0) ?v1))) :named a163))
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$) (?v1 A_llist_a_llist_prod_bool_fun$)) (=> (forall ((?v2 A_llist$) (?v3 A_llist$)) (= (fun_app$l (fun_app$m ?v0 ?v2) ?v3) (fun_app$h ?v1 (pair$ ?v2 ?v3)))) (= (fun_app$ad uncurry$a ?v0) ?v1))) :named a164))
+(assert (! (forall ((?v0 A$) (?v1 A_llist_a_llist_a_set_fun_fun$) (?v2 A_llist$) (?v3 A_llist$)) (=> (member$b ?v0 (fun_app$bz (fun_app$ca ?v1 ?v2) ?v3)) (member$b ?v0 (uncurry$e ?v1 (pair$ ?v2 ?v3))))) :named a165))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_set_fun_fun$) (?v2 A_llist$) (?v3 A_llist$)) (=> (member$a ?v0 (fun_app$cb (fun_app$cc ?v1 ?v2) ?v3)) (member$a ?v0 (uncurry$f ?v1 (pair$ ?v2 ?v3))))) :named a166))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_set_fun_fun$) (?v2 A_llist_a_llist_prod$) (?v3 A_llist_a_llist_prod$)) (=> (fun_app$i (member$ ?v0) (fun_app$x (fun_app$cd ?v1 ?v2) ?v3)) (fun_app$i (member$ ?v0) (uncurry$g ?v1 (pair$b ?v2 ?v3))))) :named a167))
+(assert (! (forall ((?v0 A$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_a_set_fun_fun$) (?v2 A_llist_a_llist_prod$) (?v3 A_llist_a_llist_prod$)) (=> (member$b ?v0 (fun_app$ce (fun_app$cf ?v1 ?v2) ?v3)) (member$b ?v0 (uncurry$h ?v1 (pair$b ?v2 ?v3))))) :named a168))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_set_fun_fun$) (?v2 A_llist_a_llist_prod$) (?v3 A_llist_a_llist_prod$)) (=> (member$a ?v0 (fun_app$cg (fun_app$ch ?v1 ?v2) ?v3)) (member$a ?v0 (uncurry$i ?v1 (pair$b ?v2 ?v3))))) :named a169))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) (?v2 A_llist$) (?v3 A_llist$)) (=> (fun_app$i (member$ ?v0) (fun_app$n (fun_app$o ?v1 ?v2) ?v3)) (fun_app$i (member$ ?v0) (fun_app$x (fun_app$ah uncurry$b ?v1) (pair$ ?v2 ?v3))))) :named a170))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A$) (?v2 A_llist_a_llist_a_set_fun_fun$)) (=> (forall ((?v3 A_llist$) (?v4 A_llist$)) (=> (= ?v0 (pair$ ?v3 ?v4)) (member$b ?v1 (fun_app$bz (fun_app$ca ?v2 ?v3) ?v4)))) (member$b ?v1 (uncurry$e ?v2 ?v0)))) :named a171))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) (?v2 A_llist_a_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_set_fun_fun$)) (=> (forall ((?v3 A_llist$) (?v4 A_llist$)) (=> (= ?v0 (pair$ ?v3 ?v4)) (member$a ?v1 (fun_app$cb (fun_app$cc ?v2 ?v3) ?v4)))) (member$a ?v1 (uncurry$f ?v2 ?v0)))) :named a172))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_set_fun_fun$)) (=> (forall ((?v3 A_llist_a_llist_prod$) (?v4 A_llist_a_llist_prod$)) (=> (= ?v0 (pair$b ?v3 ?v4)) (fun_app$i (member$ ?v1) (fun_app$x (fun_app$cd ?v2 ?v3) ?v4)))) (fun_app$i (member$ ?v1) (uncurry$g ?v2 ?v0)))) :named a173))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) (?v1 A$) (?v2 A_llist_a_llist_prod_a_llist_a_llist_prod_a_set_fun_fun$)) (=> (forall ((?v3 A_llist_a_llist_prod$) (?v4 A_llist_a_llist_prod$)) (=> (= ?v0 (pair$b ?v3 ?v4)) (member$b ?v1 (fun_app$ce (fun_app$cf ?v2 ?v3) ?v4)))) (member$b ?v1 (uncurry$h ?v2 ?v0)))) :named a174))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) (?v2 A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_set_fun_fun$)) (=> (forall ((?v3 A_llist_a_llist_prod$) (?v4 A_llist_a_llist_prod$)) (=> (= ?v0 (pair$b ?v3 ?v4)) (member$a ?v1 (fun_app$cg (fun_app$ch ?v2 ?v3) ?v4)))) (member$a ?v1 (uncurry$i ?v2 ?v0)))) :named a175))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$)) (=> (forall ((?v3 A_llist$) (?v4 A_llist$)) (=> (= ?v0 (pair$ ?v3 ?v4)) (fun_app$i (member$ ?v1) (fun_app$n (fun_app$o ?v2 ?v3) ?v4)))) (fun_app$i (member$ ?v1) (fun_app$x (fun_app$ah uncurry$b ?v2) ?v0)))) :named a176))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod_bool_fun$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_prod_bool_fun$)) (=> (forall ((?v2 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (= (fun_app$j ?v0 ?v2) (fun_app$j ?v1 ?v2))) (= (collect$a ?v0) (collect$a ?v1)))) :named a177))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_bool_fun$) (?v1 A_llist_a_llist_prod_bool_fun$)) (=> (forall ((?v2 A_llist_a_llist_prod$)) (= (fun_app$h ?v0 ?v2) (fun_app$h ?v1 ?v2))) (= (collect$ ?v0) (collect$ ?v1)))) :named a178))
+(assert (! (forall ((?v0 A_set$)) (= (collect$b (uug$ ?v0)) ?v0)) :named a179))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod_set$)) (= (collect$a (uuh$ ?v0)) ?v0)) :named a180))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$)) (= (collect$ (uui$ ?v0)) ?v0)) :named a181))
+(assert (! (forall ((?v0 A$) (?v1 A_bool_fun$)) (= (member$b ?v0 (collect$b ?v1)) (fun_app$k ?v1 ?v0))) :named a182))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_prod_bool_fun$)) (= (member$a ?v0 (collect$a ?v1)) (fun_app$j ?v1 ?v0))) :named a183))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_bool_fun$)) (= (fun_app$i (member$ ?v0) (collect$ ?v1)) (fun_app$h ?v1 ?v0))) :named a184))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) (?v2 A_llist_a_llist_prod$)) (=> (forall ((?v3 A_llist$) (?v4 A_llist$)) (=> (= (pair$ ?v3 ?v4) ?v0) (fun_app$h (fun_app$p (fun_app$q ?v1 ?v3) ?v4) ?v2))) (fun_app$h (fun_app$r (fun_app$aj uncurry$c ?v1) ?v0) ?v2))) :named a185))
+(assert (! (forall ((?v0 A$) (?v1 A_llist_a_llist_a_set_fun_fun$) (?v2 A_llist_a_llist_prod$)) (=> (and (member$b ?v0 (uncurry$e ?v1 ?v2)) (forall ((?v3 A_llist$) (?v4 A_llist$)) (=> (and (= ?v2 (pair$ ?v3 ?v4)) (member$b ?v0 (fun_app$bz (fun_app$ca ?v1 ?v3) ?v4))) false))) false)) :named a186))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_set_fun_fun$) (?v2 A_llist_a_llist_prod$)) (=> (and (member$a ?v0 (uncurry$f ?v1 ?v2)) (forall ((?v3 A_llist$) (?v4 A_llist$)) (=> (and (= ?v2 (pair$ ?v3 ?v4)) (member$a ?v0 (fun_app$cb (fun_app$cc ?v1 ?v3) ?v4))) false))) false)) :named a187))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_set_fun_fun$) (?v2 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (=> (and (fun_app$i (member$ ?v0) (uncurry$g ?v1 ?v2)) (forall ((?v3 A_llist_a_llist_prod$) (?v4 A_llist_a_llist_prod$)) (=> (and (= ?v2 (pair$b ?v3 ?v4)) (fun_app$i (member$ ?v0) (fun_app$x (fun_app$cd ?v1 ?v3) ?v4))) false))) false)) :named a188))
+(assert (! (forall ((?v0 A$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_a_set_fun_fun$) (?v2 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (=> (and (member$b ?v0 (uncurry$h ?v1 ?v2)) (forall ((?v3 A_llist_a_llist_prod$) (?v4 A_llist_a_llist_prod$)) (=> (and (= ?v2 (pair$b ?v3 ?v4)) (member$b ?v0 (fun_app$ce (fun_app$cf ?v1 ?v3) ?v4))) false))) false)) :named a189))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_set_fun_fun$) (?v2 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (=> (and (member$a ?v0 (uncurry$i ?v1 ?v2)) (forall ((?v3 A_llist_a_llist_prod$) (?v4 A_llist_a_llist_prod$)) (=> (and (= ?v2 (pair$b ?v3 ?v4)) (member$a ?v0 (fun_app$cg (fun_app$ch ?v1 ?v3) ?v4))) false))) false)) :named a190))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) (?v2 A_llist_a_llist_prod$)) (=> (and (fun_app$i (member$ ?v0) (fun_app$x (fun_app$ah uncurry$b ?v1) ?v2)) (forall ((?v3 A_llist$) (?v4 A_llist$)) (=> (and (= ?v2 (pair$ ?v3 ?v4)) (fun_app$i (member$ ?v0) (fun_app$n (fun_app$o ?v1 ?v3) ?v4))) false))) false)) :named a191))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod$)) (=> (and (fun_app$h (fun_app$r (fun_app$aj uncurry$c ?v0) ?v1) ?v2) (forall ((?v3 A_llist$) (?v4 A_llist$)) (=> (and (= ?v1 (pair$ ?v3 ?v4)) (fun_app$h (fun_app$p (fun_app$q ?v0 ?v3) ?v4) ?v2)) false))) false)) :named a192))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) (?v2 A_llist_a_llist_prod$)) (=> (forall ((?v3 A_llist$) (?v4 A_llist$)) (=> (= (pair$ ?v3 ?v4) ?v0) (fun_app$h (fun_app$p (fun_app$q ?v1 ?v3) ?v4) ?v2))) (fun_app$h (fun_app$r (fun_app$aj uncurry$c ?v1) ?v0) ?v2))) :named a193))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod$)) (=> (and (fun_app$h (fun_app$r (fun_app$aj uncurry$c ?v0) ?v1) ?v2) (forall ((?v3 A_llist$) (?v4 A_llist$)) (=> (and (= ?v1 (pair$ ?v3 ?v4)) (fun_app$h (fun_app$p (fun_app$q ?v0 ?v3) ?v4) ?v2)) false))) false)) :named a194))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) (?v1 A_llist$) (?v2 A_llist$) (?v3 A_llist_a_llist_prod$)) (=> (fun_app$h (fun_app$r (fun_app$aj uncurry$c ?v0) (pair$ ?v1 ?v2)) ?v3) (fun_app$h (fun_app$p (fun_app$q ?v0 ?v1) ?v2) ?v3))) :named a195))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (exists ((?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod$)) (= ?v0 (pair$b ?v1 ?v2)))) :named a196))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$)) (exists ((?v1 A_llist$) (?v2 A_llist$)) (= ?v0 (pair$ ?v1 ?v2)))) :named a197))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod$) (?v3 A_llist_a_llist_prod$)) (=> (and (= (pair$b ?v0 ?v1) (pair$b ?v2 ?v3)) (=> (and (= ?v0 ?v2) (= ?v1 ?v3)) false)) false)) :named a198))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$) (?v2 A_llist$) (?v3 A_llist$)) (=> (and (= (pair$ ?v0 ?v1) (pair$ ?v2 ?v3)) (=> (and (= ?v0 ?v2) (= ?v1 ?v3)) false)) false)) :named a199))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod_bool_fun$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (=> (forall ((?v2 A_llist_a_llist_prod$) (?v3 A_llist_a_llist_prod$)) (fun_app$j ?v0 (pair$b ?v2 ?v3))) (fun_app$j ?v0 ?v1))) :named a200))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_bool_fun$) (?v1 A_llist_a_llist_prod$)) (=> (forall ((?v2 A_llist$) (?v3 A_llist$)) (fun_app$h ?v0 (pair$ ?v2 ?v3))) (fun_app$h ?v0 ?v1))) :named a201))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (=> (forall ((?v1 A_llist_a_llist_prod$) (?v2 A_llist$) (?v3 A_llist$)) (=> (= ?v0 (pair$b ?v1 (pair$ ?v2 ?v3))) false)) false)) :named a202))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod_bool_fun$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (=> (forall ((?v2 A_llist_a_llist_prod$) (?v3 A_llist$) (?v4 A_llist$)) (fun_app$j ?v0 (pair$b ?v2 (pair$ ?v3 ?v4)))) (fun_app$j ?v0 ?v1))) :named a203))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (=> (forall ((?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod$)) (=> (= ?v0 (pair$b ?v1 ?v2)) false)) false)) :named a204))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$)) (=> (forall ((?v1 A_llist$) (?v2 A_llist$)) (=> (= ?v0 (pair$ ?v1 ?v2)) false)) false)) :named a205))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$)) (=> (= ?v0 ?v1) (= (fun_app$x (fun_app$ah uncurry$b ?v2) ?v0) (fun_app$x (fun_app$ah uncurry$b ?v2) ?v1)))) :named a206))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$)) (=> (= ?v0 ?v1) (= (fun_app$w (fun_app$ab uncurry$ ?v2) ?v0) (fun_app$w (fun_app$ab uncurry$ ?v2) ?v1)))) :named a207))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) (?v2 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$)) (=> (= ?v0 ?v1) (= (fun_app$j (fun_app$al uncurry$d ?v2) ?v0) (fun_app$j (fun_app$al uncurry$d ?v2) ?v1)))) :named a208))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$)) (=> (= ?v0 ?v1) (= (fun_app$r (fun_app$aj uncurry$c ?v2) ?v0) (fun_app$r (fun_app$aj uncurry$c ?v2) ?v1)))) :named a209))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_bool_fun_fun$)) (=> (= ?v0 ?v1) (= (fun_app$h (fun_app$ad uncurry$a ?v2) ?v0) (fun_app$h (fun_app$ad uncurry$a ?v2) ?v1)))) :named a210))
+(assert (! (forall ((?v0 Bool_bool_fun$) (?v1 A_llist_a_llist_bool_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$az ?v0 (fun_app$h (fun_app$ad uncurry$a ?v1) ?v2)) (fun_app$h (fun_app$ad uncurry$a (fun_app$ap (uuj$ ?v0) ?v1)) ?v2))) :named a211))
+(assert (! (forall ((?v0 Bool_a_llist_a_llist_prod_fun$) (?v1 A_llist_a_llist_bool_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$ay ?v0 (fun_app$h (fun_app$ad uncurry$a ?v1) ?v2)) (fun_app$w (fun_app$ab uncurry$ (uuk$ ?v0 ?v1)) ?v2))) :named a212))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_bool_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$h ?v0 (fun_app$w (fun_app$ab uncurry$ ?v1) ?v2)) (fun_app$h (fun_app$ad uncurry$a (fun_app$ac (uul$ ?v0) ?v1)) ?v2))) :named a213))
+(assert (! (forall ((?v0 Bool_a_llist_a_llist_prod_set_fun$) (?v1 A_llist_a_llist_bool_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$bc ?v0 (fun_app$h (fun_app$ad uncurry$a ?v1) ?v2)) (fun_app$x (fun_app$ah uncurry$b (fun_app$bb (uum$ ?v0) ?v1)) ?v2))) :named a214))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set_bool_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$i ?v0 (fun_app$x (fun_app$ah uncurry$b ?v1) ?v2)) (fun_app$h (fun_app$ad uncurry$a (fun_app$bi (uun$ ?v0) ?v1)) ?v2))) :named a215))
+(assert (! (forall ((?v0 Bool_a_llist_a_llist_prod_bool_fun_fun$) (?v1 A_llist_a_llist_bool_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$be ?v0 (fun_app$h (fun_app$ad uncurry$a ?v1) ?v2)) (fun_app$r (fun_app$aj uncurry$c (fun_app$bd (uuo$ ?v0) ?v1)) ?v2))) :named a216))
+(assert (! (forall ((?v0 Bool_bool_fun$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v2 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (= (fun_app$az ?v0 (fun_app$j (fun_app$al uncurry$d ?v1) ?v2)) (fun_app$j (fun_app$al uncurry$d (fun_app$aq (uup$ ?v0) ?v1)) ?v2))) :named a217))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_bool_fun_bool_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$bk ?v0 (fun_app$r (fun_app$aj uncurry$c ?v1) ?v2)) (fun_app$h (fun_app$ad uncurry$a (fun_app$bj (uuq$ ?v0) ?v1)) ?v2))) :named a218))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$w ?v0 (fun_app$w (fun_app$ab uncurry$ ?v1) ?v2)) (fun_app$w (fun_app$ab uncurry$ (uur$ ?v0 ?v1)) ?v2))) :named a219))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set_a_llist_a_llist_prod_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$bh ?v0 (fun_app$x (fun_app$ah uncurry$b ?v1) ?v2)) (fun_app$w (fun_app$ab uncurry$ (uus$ ?v0 ?v1)) ?v2))) :named a220))
+(assert (! (forall ((?v0 Bool_bool_fun$) (?v1 A_llist_a_llist_bool_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$az ?v0 (fun_app$h (fun_app$ad uncurry$a ?v1) ?v2)) (fun_app$h (fun_app$ad uncurry$a (fun_app$ap (uuj$ ?v0) ?v1)) ?v2))) :named a221))
+(assert (! (forall ((?v0 Bool_a_llist_a_llist_prod_fun$) (?v1 A_llist_a_llist_bool_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$ay ?v0 (fun_app$h (fun_app$ad uncurry$a ?v1) ?v2)) (fun_app$w (fun_app$ab uncurry$ (uuk$ ?v0 ?v1)) ?v2))) :named a222))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_bool_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$h ?v0 (fun_app$w (fun_app$ab uncurry$ ?v1) ?v2)) (fun_app$h (fun_app$ad uncurry$a (fun_app$ac (uul$ ?v0) ?v1)) ?v2))) :named a223))
+(assert (! (forall ((?v0 Bool_a_llist_a_llist_prod_set_fun$) (?v1 A_llist_a_llist_bool_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$bc ?v0 (fun_app$h (fun_app$ad uncurry$a ?v1) ?v2)) (fun_app$x (fun_app$ah uncurry$b (fun_app$bb (uum$ ?v0) ?v1)) ?v2))) :named a224))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set_bool_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$i ?v0 (fun_app$x (fun_app$ah uncurry$b ?v1) ?v2)) (fun_app$h (fun_app$ad uncurry$a (fun_app$bi (uun$ ?v0) ?v1)) ?v2))) :named a225))
+(assert (! (forall ((?v0 Bool_a_llist_a_llist_prod_bool_fun_fun$) (?v1 A_llist_a_llist_bool_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$be ?v0 (fun_app$h (fun_app$ad uncurry$a ?v1) ?v2)) (fun_app$r (fun_app$aj uncurry$c (fun_app$bd (uuo$ ?v0) ?v1)) ?v2))) :named a226))
+(assert (! (forall ((?v0 Bool_bool_fun$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v2 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (= (fun_app$az ?v0 (fun_app$j (fun_app$al uncurry$d ?v1) ?v2)) (fun_app$j (fun_app$al uncurry$d (fun_app$aq (uup$ ?v0) ?v1)) ?v2))) :named a227))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_bool_fun_bool_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$bk ?v0 (fun_app$r (fun_app$aj uncurry$c ?v1) ?v2)) (fun_app$h (fun_app$ad uncurry$a (fun_app$bj (uuq$ ?v0) ?v1)) ?v2))) :named a228))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$w ?v0 (fun_app$w (fun_app$ab uncurry$ ?v1) ?v2)) (fun_app$w (fun_app$ab uncurry$ (uur$ ?v0 ?v1)) ?v2))) :named a229))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set_a_llist_a_llist_prod_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$bh ?v0 (fun_app$x (fun_app$ah uncurry$b ?v1) ?v2)) (fun_app$w (fun_app$ab uncurry$ (uus$ ?v0 ?v1)) ?v2))) :named a230))
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_fun_fun$) (?v2 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (= (fun_app$h (fun_app$ad uncurry$a ?v0) (uncurry$j ?v1 ?v2)) (fun_app$j (fun_app$al uncurry$d (fun_app$ae (uut$ ?v0) ?v1)) ?v2))) :named a231))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$x (fun_app$ah uncurry$b ?v0) (fun_app$w (fun_app$ab uncurry$ ?v1) ?v2)) (fun_app$x (fun_app$ah uncurry$b (fun_app$ag (uuu$ ?v0) ?v1)) ?v2))) :named a232))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$w (fun_app$ab uncurry$ ?v0) (fun_app$w (fun_app$ab uncurry$ ?v1) ?v2)) (fun_app$w (fun_app$ab uncurry$ (uuv$ ?v0 ?v1)) ?v2))) :named a233))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$j (fun_app$al uncurry$d ?v0) (uncurry$k ?v1 ?v2)) (fun_app$h (fun_app$ad uncurry$a (fun_app$ak (uuw$ ?v0) ?v1)) ?v2))) :named a234))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_a_llist_a_llist_prod_prod_fun_fun$) (?v2 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (= (fun_app$j (fun_app$al uncurry$d ?v0) (uncurry$l ?v1 ?v2)) (fun_app$j (fun_app$al uncurry$d (fun_app$ao (uux$ ?v0) ?v1)) ?v2))) :named a235))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$r (fun_app$aj uncurry$c ?v0) (fun_app$w (fun_app$ab uncurry$ ?v1) ?v2)) (fun_app$r (fun_app$aj uncurry$c (fun_app$ai (uuy$ ?v0) ?v1)) ?v2))) :named a236))
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$h (fun_app$ad uncurry$a ?v0) (fun_app$w (fun_app$ab uncurry$ ?v1) ?v2)) (fun_app$h (fun_app$ad uncurry$a (fun_app$ac (uuz$ ?v0) ?v1)) ?v2))) :named a237))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (= (= ?v0 ?v0) (fun_app$j (fun_app$al uncurry$d uva$) ?v0))) :named a238))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$)) (= (= ?v0 ?v0) (fun_app$h (fun_app$ad uncurry$a uvb$) ?v0))) :named a239))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (! (= (fun_app$x (fun_app$ah uncurry$b ?v0) (pair$ ?v1 ?v2)) (fun_app$n (fun_app$o ?v0 ?v1) ?v2)) :pattern ((fun_app$x (fun_app$ah uncurry$b ?v0) (pair$ ?v1 ?v2))))) :named a240))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (! (= (fun_app$w (fun_app$ab uncurry$ ?v0) (pair$ ?v1 ?v2)) (fun_app$d (fun_app$e ?v0 ?v1) ?v2)) :pattern ((fun_app$w (fun_app$ab uncurry$ ?v0) (pair$ ?v1 ?v2))))) :named a241))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod$)) (! (= (fun_app$j (fun_app$al uncurry$d ?v0) (pair$b ?v1 ?v2)) (fun_app$h (fun_app$r ?v0 ?v1) ?v2)) :pattern ((fun_app$j (fun_app$al uncurry$d ?v0) (pair$b ?v1 ?v2))))) :named a242))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (! (= (fun_app$r (fun_app$aj uncurry$c ?v0) (pair$ ?v1 ?v2)) (fun_app$p (fun_app$q ?v0 ?v1) ?v2)) :pattern ((fun_app$r (fun_app$aj uncurry$c ?v0) (pair$ ?v1 ?v2))))) :named a243))
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (! (= (fun_app$h (fun_app$ad uncurry$a ?v0) (pair$ ?v1 ?v2)) (fun_app$l (fun_app$m ?v0 ?v1) ?v2)) :pattern ((fun_app$h (fun_app$ad uncurry$a ?v0) (pair$ ?v1 ?v2))))) :named a244))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (=> (and (fun_app$j (fun_app$al uncurry$d ?v0) ?v1) (forall ((?v2 A_llist_a_llist_prod$) (?v3 A_llist_a_llist_prod$)) (=> (and (= ?v1 (pair$b ?v2 ?v3)) (fun_app$h (fun_app$r ?v0 ?v2) ?v3)) false))) false)) :named a245))
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$) (?v1 A_llist_a_llist_prod$)) (=> (and (fun_app$h (fun_app$ad uncurry$a ?v0) ?v1) (forall ((?v2 A_llist$) (?v3 A_llist$)) (=> (and (= ?v1 (pair$ ?v2 ?v3)) (fun_app$l (fun_app$m ?v0 ?v2) ?v3)) false))) false)) :named a246))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$)) (=> (forall ((?v2 A_llist_a_llist_prod$) (?v3 A_llist_a_llist_prod$)) (=> (= ?v0 (pair$b ?v2 ?v3)) (fun_app$h (fun_app$r ?v1 ?v2) ?v3))) (fun_app$j (fun_app$al uncurry$d ?v1) ?v0))) :named a247))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_bool_fun_fun$)) (=> (forall ((?v2 A_llist$) (?v3 A_llist$)) (=> (= ?v0 (pair$ ?v2 ?v3)) (fun_app$l (fun_app$m ?v1 ?v2) ?v3))) (fun_app$h (fun_app$ad uncurry$a ?v1) ?v0))) :named a248))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set_bool_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) (?v2 A_llist_a_llist_prod$)) (=> (and (fun_app$i ?v0 (fun_app$x (fun_app$ah uncurry$b ?v1) ?v2)) (forall ((?v3 A_llist$) (?v4 A_llist$)) (=> (and (= ?v2 (pair$ ?v3 ?v4)) (fun_app$i ?v0 (fun_app$n (fun_app$o ?v1 ?v3) ?v4))) false))) false)) :named a249))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_bool_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v2 A_llist_a_llist_prod$)) (=> (and (fun_app$h ?v0 (fun_app$w (fun_app$ab uncurry$ ?v1) ?v2)) (forall ((?v3 A_llist$) (?v4 A_llist$)) (=> (and (= ?v2 (pair$ ?v3 ?v4)) (fun_app$h ?v0 (fun_app$d (fun_app$e ?v1 ?v3) ?v4))) false))) false)) :named a250))
+(assert (! (forall ((?v0 Bool_bool_fun$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v2 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (=> (and (fun_app$az ?v0 (fun_app$j (fun_app$al uncurry$d ?v1) ?v2)) (forall ((?v3 A_llist_a_llist_prod$) (?v4 A_llist_a_llist_prod$)) (=> (and (= ?v2 (pair$b ?v3 ?v4)) (fun_app$az ?v0 (fun_app$h (fun_app$r ?v1 ?v3) ?v4))) false))) false)) :named a251))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_bool_fun_bool_fun$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) (?v2 A_llist_a_llist_prod$)) (=> (and (fun_app$bk ?v0 (fun_app$r (fun_app$aj uncurry$c ?v1) ?v2)) (forall ((?v3 A_llist$) (?v4 A_llist$)) (=> (and (= ?v2 (pair$ ?v3 ?v4)) (fun_app$bk ?v0 (fun_app$p (fun_app$q ?v1 ?v3) ?v4))) false))) false)) :named a252))
+(assert (! (forall ((?v0 Bool_bool_fun$) (?v1 A_llist_a_llist_bool_fun_fun$) (?v2 A_llist_a_llist_prod$)) (=> (and (fun_app$az ?v0 (fun_app$h (fun_app$ad uncurry$a ?v1) ?v2)) (forall ((?v3 A_llist$) (?v4 A_llist$)) (=> (and (= ?v2 (pair$ ?v3 ?v4)) (fun_app$az ?v0 (fun_app$l (fun_app$m ?v1 ?v3) ?v4))) false))) false)) :named a253))
+(assert (! (forall ((?v0 Bool_bool_fun$) (?v1 Bool) (?v2 A_a_llist_bool_fun_fun$) (?v3 A_llist$)) (= (fun_app$az ?v0 (fun_app$l (fun_app$ci (case_llist$ ?v1) ?v2) ?v3)) (and (=> (= ?v3 lNil$) (fun_app$az ?v0 ?v1)) (=> (= ?v3 (lCons$ (lhd$ ?v3) (ltl$ ?v3))) (fun_app$az ?v0 (fun_app$l (fun_app$as ?v2 (lhd$ ?v3)) (ltl$ ?v3))))))) :named a254))
+(assert (! (forall ((?v0 A_llist_bool_fun$) (?v1 A_llist$) (?v2 A_a_llist_a_llist_fun_fun$) (?v3 A_llist$)) (= (fun_app$l ?v0 (fun_app$a (fun_app$cj (case_llist$a ?v1) ?v2) ?v3)) (and (=> (= ?v3 lNil$) (fun_app$l ?v0 ?v1)) (=> (= ?v3 (lCons$ (lhd$ ?v3) (ltl$ ?v3))) (fun_app$l ?v0 (fun_app$a (fun_app$v ?v2 (lhd$ ?v3)) (ltl$ ?v3))))))) :named a255))
+(assert (! (forall ((?v0 A_bool_fun$) (?v1 A$) (?v2 A_a_llist_a_fun_fun$) (?v3 A_llist$)) (= (fun_app$k ?v0 (fun_app$c (fun_app$ck (case_llist$b ?v1) ?v2) ?v3)) (and (=> (= ?v3 lNil$) (fun_app$k ?v0 ?v1)) (=> (= ?v3 (lCons$ (lhd$ ?v3) (ltl$ ?v3))) (fun_app$k ?v0 (fun_app$c (fun_app$au ?v2 (lhd$ ?v3)) (ltl$ ?v3))))))) :named a256))
+(assert (! (forall ((?v0 Bool_bool_fun$) (?v1 Bool) (?v2 A_a_llist_bool_fun_fun$) (?v3 A_llist$)) (= (fun_app$az ?v0 (fun_app$l (fun_app$ci (case_llist$ ?v1) ?v2) ?v3)) (not (or (and (= ?v3 lNil$) (not (fun_app$az ?v0 ?v1))) (and (= ?v3 (lCons$ (lhd$ ?v3) (ltl$ ?v3))) (not (fun_app$az ?v0 (fun_app$l (fun_app$as ?v2 (lhd$ ?v3)) (ltl$ ?v3))))))))) :named a257))
+(assert (! (forall ((?v0 A_llist_bool_fun$) (?v1 A_llist$) (?v2 A_a_llist_a_llist_fun_fun$) (?v3 A_llist$)) (= (fun_app$l ?v0 (fun_app$a (fun_app$cj (case_llist$a ?v1) ?v2) ?v3)) (not (or (and (= ?v3 lNil$) (not (fun_app$l ?v0 ?v1))) (and (= ?v3 (lCons$ (lhd$ ?v3) (ltl$ ?v3))) (not (fun_app$l ?v0 (fun_app$a (fun_app$v ?v2 (lhd$ ?v3)) (ltl$ ?v3))))))))) :named a258))
+(assert (! (forall ((?v0 A_bool_fun$) (?v1 A$) (?v2 A_a_llist_a_fun_fun$) (?v3 A_llist$)) (= (fun_app$k ?v0 (fun_app$c (fun_app$ck (case_llist$b ?v1) ?v2) ?v3)) (not (or (and (= ?v3 lNil$) (not (fun_app$k ?v0 ?v1))) (and (= ?v3 (lCons$ (lhd$ ?v3) (ltl$ ?v3))) (not (fun_app$k ?v0 (fun_app$c (fun_app$au ?v2 (lhd$ ?v3)) (ltl$ ?v3))))))))) :named a259))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) (?v2 A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) (?v3 A_llist_a_llist_prod$)) (=> (and (forall ((?v4 A_llist$) (?v5 A_llist$)) (=> (= (pair$ ?v4 ?v5) ?v0) (= (fun_app$n (fun_app$o ?v1 ?v4) ?v5) (fun_app$n (fun_app$o ?v2 ?v4) ?v5)))) (= ?v3 ?v0)) (= (fun_app$x (fun_app$ah uncurry$b ?v1) ?v3) (fun_app$x (fun_app$ah uncurry$b ?v2) ?v0)))) :named a260))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v2 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v3 A_llist_a_llist_prod$)) (=> (and (forall ((?v4 A_llist$) (?v5 A_llist$)) (=> (= (pair$ ?v4 ?v5) ?v0) (= (fun_app$d (fun_app$e ?v1 ?v4) ?v5) (fun_app$d (fun_app$e ?v2 ?v4) ?v5)))) (= ?v3 ?v0)) (= (fun_app$w (fun_app$ab uncurry$ ?v1) ?v3) (fun_app$w (fun_app$ab uncurry$ ?v2) ?v0)))) :named a261))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v2 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v3 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (=> (and (forall ((?v4 A_llist_a_llist_prod$) (?v5 A_llist_a_llist_prod$)) (=> (= (pair$b ?v4 ?v5) ?v0) (= (fun_app$h (fun_app$r ?v1 ?v4) ?v5) (fun_app$h (fun_app$r ?v2 ?v4) ?v5)))) (= ?v3 ?v0)) (= (fun_app$j (fun_app$al uncurry$d ?v1) ?v3 [...]
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) (?v2 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) (?v3 A_llist_a_llist_prod$)) (=> (and (forall ((?v4 A_llist$) (?v5 A_llist$)) (=> (= (pair$ ?v4 ?v5) ?v0) (= (fun_app$p (fun_app$q ?v1 ?v4) ?v5) (fun_app$p (fun_app$q ?v2 ?v4) ?v5)))) (= ?v3 ?v0)) (= (fun_app$r (fun_app$aj uncurry$c ?v1) ?v3) (fun_app$r (fun_app$aj uncurry$c ?v2) ?v0)))) :named a263))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_bool_fun_fun$) (?v2 A_llist_a_llist_bool_fun_fun$) (?v3 A_llist_a_llist_prod$)) (=> (and (forall ((?v4 A_llist$) (?v5 A_llist$)) (=> (= (pair$ ?v4 ?v5) ?v0) (= (fun_app$l (fun_app$m ?v1 ?v4) ?v5) (fun_app$l (fun_app$m ?v2 ?v4) ?v5)))) (= ?v3 ?v0)) (= (fun_app$h (fun_app$ad uncurry$a ?v1) ?v3) (fun_app$h (fun_app$ad uncurry$a ?v2) ?v0)))) :named a264))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$)) (= (unfold_llist$ lnull$a uvc$ uvd$ ?v0) ?v0)) :named a265))
+(assert (! (forall ((?v0 A_llist$)) (= (fun_app$a (fun_app$cl (fun_app$cm (unfold_llist$a lnull$) uve$) uvf$) ?v0) ?v0)) :named a266))
+(assert (! (forall ((?v0 Bool) (?v1 A_a_llist_bool_fun_fun$) (?v2 A_llist$)) (! (= (fun_app$l (fun_app$ci (case_llist$ ?v0) ?v1) ?v2) (ite (fun_app$l lnull$ ?v2) ?v0 (fun_app$l (fun_app$as ?v1 (lhd$ ?v2)) (ltl$ ?v2)))) :pattern ((fun_app$l (fun_app$ci (case_llist$ ?v0) ?v1) ?v2)))) :named a267))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_a_llist_a_llist_fun_fun$) (?v2 A_llist$)) (! (= (fun_app$a (fun_app$cj (case_llist$a ?v0) ?v1) ?v2) (ite (fun_app$l lnull$ ?v2) ?v0 (fun_app$a (fun_app$v ?v1 (lhd$ ?v2)) (ltl$ ?v2)))) :pattern ((fun_app$a (fun_app$cj (case_llist$a ?v0) ?v1) ?v2)))) :named a268))
+(assert (! (forall ((?v0 A$) (?v1 A_a_llist_a_fun_fun$) (?v2 A_llist$)) (! (= (fun_app$c (fun_app$ck (case_llist$b ?v0) ?v1) ?v2) (ite (fun_app$l lnull$ ?v2) ?v0 (fun_app$c (fun_app$au ?v1 (lhd$ ?v2)) (ltl$ ?v2)))) :pattern ((fun_app$c (fun_app$ck (case_llist$b ?v0) ?v1) ?v2)))) :named a269))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod$)) (= (fun_app$h (fun_app$r (fun_app$aj uncurry$c ?v0) ?v1) ?v2) (fun_app$h (fun_app$ad uncurry$a (fun_app$y (uvg$ ?v0) ?v2)) ?v1))) :named a270))
+(assert (! (= internal_split$ uncurry$b) :named a271))
+(assert (! (= internal_split$a uncurry$) :named a272))
+(assert (! (= internal_split$b uncurry$d) :named a273))
+(assert (! (= internal_split$c uncurry$c) :named a274))
+(assert (! (= internal_split$d uncurry$a) :named a275))
+(assert (! (forall ((?v0 A_llist_bool_fun$) (?v1 A_llist_a_fun$) (?v2 A_llist_a_llist_fun$) (?v3 A_llist$)) (= (not (fun_app$l lnull$ (fun_app$a (fun_app$cl (fun_app$cm (unfold_llist$a ?v0) ?v1) ?v2) ?v3))) (not (fun_app$l ?v0 ?v3)))) :named a276))
+(assert (! (forall ((?v0 A_llist_bool_fun$) (?v1 A_llist_a_fun$) (?v2 A_llist_a_llist_fun$) (?v3 A_llist$)) (= (fun_app$l lnull$ (fun_app$a (fun_app$cl (fun_app$cm (unfold_llist$a ?v0) ?v1) ?v2) ?v3)) (fun_app$l ?v0 ?v3))) :named a277))
+(assert (! (forall ((?v0 A_llist_bool_fun$) (?v1 A_llist_a_fun$) (?v2 A_llist_a_llist_fun$) (?v3 A_llist$) (?v4 A$) (?v5 A_llist$)) (= (= (fun_app$a (fun_app$cl (fun_app$cm (unfold_llist$a ?v0) ?v1) ?v2) ?v3) (lCons$ ?v4 ?v5)) (and (not (fun_app$l ?v0 ?v3)) (and (= ?v4 (fun_app$c ?v1 ?v3)) (= ?v5 (fun_app$a (fun_app$cl (fun_app$cm (unfold_llist$a ?v0) ?v1) ?v2) (fun_app$a ?v2 ?v3))))))) :named a278))
+(assert (! (forall ((?v0 Bool_bool_fun$) (?v1 Bool) (?v2 A_a_llist_bool_fun_fun$) (?v3 A_llist$)) (= (fun_app$az ?v0 (fun_app$l (fun_app$ci (case_llist$ ?v1) ?v2) ?v3)) (fun_app$l (fun_app$ci (case_llist$ (fun_app$az ?v0 ?v1)) (fun_app$ba (uvh$ ?v0) ?v2)) ?v3))) :named a279))
+(assert (! (forall ((?v0 Bool_a_llist_fun$) (?v1 Bool) (?v2 A_a_llist_bool_fun_fun$) (?v3 A_llist$)) (= (fun_app$ax ?v0 (fun_app$l (fun_app$ci (case_llist$ ?v1) ?v2) ?v3)) (fun_app$a (fun_app$cj (case_llist$a (fun_app$ax ?v0 ?v1)) (fun_app$aw (uvi$ ?v0) ?v2)) ?v3))) :named a280))
+(assert (! (forall ((?v0 Bool_a_fun$) (?v1 Bool) (?v2 A_a_llist_bool_fun_fun$) (?v3 A_llist$)) (= (fun_app$bg ?v0 (fun_app$l (fun_app$ci (case_llist$ ?v1) ?v2) ?v3)) (fun_app$c (fun_app$ck (case_llist$b (fun_app$bg ?v0 ?v1)) (fun_app$bf (uvj$ ?v0) ?v2)) ?v3))) :named a281))
+(assert (! (forall ((?v0 A_llist_bool_fun$) (?v1 A_llist$) (?v2 A_a_llist_a_llist_fun_fun$) (?v3 A_llist$)) (= (fun_app$l ?v0 (fun_app$a (fun_app$cj (case_llist$a ?v1) ?v2) ?v3)) (fun_app$l (fun_app$ci (case_llist$ (fun_app$l ?v0 ?v1)) (fun_app$at (uvk$ ?v0) ?v2)) ?v3))) :named a282))
+(assert (! (forall ((?v0 A_llist_a_llist_fun$) (?v1 A_llist$) (?v2 A_a_llist_a_llist_fun_fun$) (?v3 A_llist$)) (= (fun_app$a ?v0 (fun_app$a (fun_app$cj (case_llist$a ?v1) ?v2) ?v3)) (fun_app$a (fun_app$cj (case_llist$a (fun_app$a ?v0 ?v1)) (fun_app$ar (uvl$ ?v0) ?v2)) ?v3))) :named a283))
+(assert (! (forall ((?v0 A_llist_a_fun$) (?v1 A_llist$) (?v2 A_a_llist_a_llist_fun_fun$) (?v3 A_llist$)) (= (fun_app$c ?v0 (fun_app$a (fun_app$cj (case_llist$a ?v1) ?v2) ?v3)) (fun_app$c (fun_app$ck (case_llist$b (fun_app$c ?v0 ?v1)) (fun_app$av (uvm$ ?v0) ?v2)) ?v3))) :named a284))
+(assert (! (forall ((?v0 A_bool_fun$) (?v1 A$) (?v2 A_a_llist_a_fun_fun$) (?v3 A_llist$)) (= (fun_app$k ?v0 (fun_app$c (fun_app$ck (case_llist$b ?v1) ?v2) ?v3)) (fun_app$l (fun_app$ci (case_llist$ (fun_app$k ?v0 ?v1)) (fun_app$bn (uvn$ ?v0) ?v2)) ?v3))) :named a285))
+(assert (! (forall ((?v0 A_a_llist_fun$) (?v1 A$) (?v2 A_a_llist_a_fun_fun$) (?v3 A_llist$)) (= (fun_app$bm ?v0 (fun_app$c (fun_app$ck (case_llist$b ?v1) ?v2) ?v3)) (fun_app$a (fun_app$cj (case_llist$a (fun_app$bm ?v0 ?v1)) (fun_app$bl (uvo$ ?v0) ?v2)) ?v3))) :named a286))
+(assert (! (forall ((?v0 A_a_fun$) (?v1 A$) (?v2 A_a_llist_a_fun_fun$) (?v3 A_llist$)) (= (fun_app$bp ?v0 (fun_app$c (fun_app$ck (case_llist$b ?v1) ?v2) ?v3)) (fun_app$c (fun_app$ck (case_llist$b (fun_app$bp ?v0 ?v1)) (fun_app$bo (uvp$ ?v0) ?v2)) ?v3))) :named a287))
+(assert (! (forall ((?v0 A_llist_bool_fun$) (?v1 A_llist$) (?v2 A_llist_a_fun$) (?v3 A_llist_a_llist_fun$)) (=> (not (fun_app$l ?v0 ?v1)) (not (fun_app$l lnull$ (fun_app$a (fun_app$cl (fun_app$cm (unfold_llist$a ?v0) ?v2) ?v3) ?v1))))) :named a288))
+(assert (! (forall ((?v0 A_llist_bool_fun$) (?v1 A_llist$) (?v2 A_llist_a_fun$) (?v3 A_llist_a_llist_fun$)) (=> (fun_app$l ?v0 ?v1) (fun_app$l lnull$ (fun_app$a (fun_app$cl (fun_app$cm (unfold_llist$a ?v0) ?v2) ?v3) ?v1)))) :named a289))
+(assert (! (forall ((?v0 A_llist_bool_fun$) (?v1 A_llist$) (?v2 A_llist_a_fun$) (?v3 A_llist_a_llist_fun$)) (=> (not (fun_app$l ?v0 ?v1)) (= (fun_app$a (fun_app$cl (fun_app$cm (unfold_llist$a ?v0) ?v2) ?v3) ?v1) (lCons$ (fun_app$c ?v2 ?v1) (fun_app$a (fun_app$cl (fun_app$cm (unfold_llist$a ?v0) ?v2) ?v3) (fun_app$a ?v3 ?v1)))))) :named a290))
+(assert (! (forall ((?v0 A_llist_bool_fun$) (?v1 A_llist$) (?v2 A_llist_a_fun$) (?v3 A_llist_a_llist_fun$)) (! (=> (fun_app$l ?v0 ?v1) (= (fun_app$a (fun_app$cl (fun_app$cm (unfold_llist$a ?v0) ?v2) ?v3) ?v1) lNil$)) :pattern ((fun_app$a (fun_app$cl (fun_app$cm (unfold_llist$a ?v0) ?v2) ?v3) ?v1)))) :named a291))
+(assert (! (forall ((?v0 A_llist_bool_fun$) (?v1 A_llist$) (?v2 A_llist_a_fun$) (?v3 A_llist_a_llist_fun$)) (=> (not (fun_app$l ?v0 ?v1)) (= (ltl$ (fun_app$a (fun_app$cl (fun_app$cm (unfold_llist$a ?v0) ?v2) ?v3) ?v1)) (fun_app$a (fun_app$cl (fun_app$cm (unfold_llist$a ?v0) ?v2) ?v3) (fun_app$a ?v3 ?v1))))) :named a292))
+(assert (! (forall ((?v0 A_llist_bool_fun$) (?v1 A_llist$) (?v2 A_llist_a_fun$) (?v3 A_llist_a_llist_fun$)) (=> (not (fun_app$l ?v0 ?v1)) (= (lhd$ (fun_app$a (fun_app$cl (fun_app$cm (unfold_llist$a ?v0) ?v2) ?v3) ?v1)) (fun_app$c ?v2 ?v1)))) :named a293))
+(assert (! (forall ((?v0 Bool) (?v1 A_a_llist_bool_fun_fun$) (?v2 A$) (?v3 A_llist$)) (! (= (fun_app$l (fun_app$ci (case_llist$ ?v0) ?v1) (lCons$ ?v2 ?v3)) (fun_app$l (fun_app$as ?v1 ?v2) ?v3)) :pattern ((fun_app$l (fun_app$ci (case_llist$ ?v0) ?v1) (lCons$ ?v2 ?v3))))) :named a294))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_a_llist_a_llist_fun_fun$) (?v2 A$) (?v3 A_llist$)) (! (= (fun_app$a (fun_app$cj (case_llist$a ?v0) ?v1) (lCons$ ?v2 ?v3)) (fun_app$a (fun_app$v ?v1 ?v2) ?v3)) :pattern ((fun_app$a (fun_app$cj (case_llist$a ?v0) ?v1) (lCons$ ?v2 ?v3))))) :named a295))
+(assert (! (forall ((?v0 A$) (?v1 A_a_llist_a_fun_fun$) (?v2 A$) (?v3 A_llist$)) (! (= (fun_app$c (fun_app$ck (case_llist$b ?v0) ?v1) (lCons$ ?v2 ?v3)) (fun_app$c (fun_app$au ?v1 ?v2) ?v3)) :pattern ((fun_app$c (fun_app$ck (case_llist$b ?v0) ?v1) (lCons$ ?v2 ?v3))))) :named a296))
+(assert (! (forall ((?v0 Bool) (?v1 A_a_llist_bool_fun_fun$)) (! (= (fun_app$l (fun_app$ci (case_llist$ ?v0) ?v1) lNil$) ?v0) :pattern ((fun_app$ci (case_llist$ ?v0) ?v1)))) :named a297))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_a_llist_a_llist_fun_fun$)) (! (= (fun_app$a (fun_app$cj (case_llist$a ?v0) ?v1) lNil$) ?v0) :pattern ((fun_app$cj (case_llist$a ?v0) ?v1)))) :named a298))
+(assert (! (forall ((?v0 A$) (?v1 A_a_llist_a_fun_fun$)) (! (= (fun_app$c (fun_app$ck (case_llist$b ?v0) ?v1) lNil$) ?v0) :pattern ((fun_app$ck (case_llist$b ?v0) ?v1)))) :named a299))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$)) (= (not (fun_app$bw lnull$a ?v0)) (fun_app$bw (fun_app$cn (case_llist$c false) uvq$) ?v0))) :named a300))
+(assert (! (forall ((?v0 A_llist$)) (= (not (fun_app$l lnull$ ?v0)) (fun_app$l (fun_app$ci (case_llist$ false) uvr$) ?v0))) :named a301))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$)) (! (= (fun_app$bw lnull$a ?v0) (fun_app$bw (fun_app$cn (case_llist$c true) uvs$) ?v0)) :pattern ((fun_app$bw lnull$a ?v0)))) :named a302))
+(assert (! (forall ((?v0 A_llist$)) (! (= (fun_app$l lnull$ ?v0) (fun_app$l (fun_app$ci (case_llist$ true) uvt$) ?v0)) :pattern ((fun_app$l lnull$ ?v0)))) :named a303))
+(assert (! (forall ((?v0 A_llist_bool_fun$) (?v1 A_llist_a_fun$) (?v2 A_llist_a_llist_fun$) (?v3 A_llist$)) (= (fun_app$a (fun_app$cl (fun_app$cm (unfold_llist$a ?v0) ?v1) ?v2) ?v3) (ite (fun_app$l ?v0 ?v3) lNil$ (lCons$ (fun_app$c ?v1 ?v3) (fun_app$a (fun_app$cl (fun_app$cm (unfold_llist$a ?v0) ?v1) ?v2) (fun_app$a ?v2 ?v3)))))) :named a304))
+(assert (! (forall ((?v0 A_llist_bool_fun$) (?v1 A_llist_a_fun$) (?v2 A_llist_a_llist_fun$) (?v3 A_llist$)) (= (ltl$ (fun_app$a (fun_app$cl (fun_app$cm (unfold_llist$a ?v0) ?v1) ?v2) ?v3)) (ite (fun_app$l ?v0 ?v3) lNil$ (fun_app$a (fun_app$cl (fun_app$cm (unfold_llist$a ?v0) ?v1) ?v2) (fun_app$a ?v2 ?v3))))) :named a305))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$)) (= (ltl$a ?v0) (case_llist$d lNil$a uvu$ ?v0))) :named a306))
+(assert (! (forall ((?v0 A_llist$)) (= (ltl$ ?v0) (fun_app$a (fun_app$cj (case_llist$a lNil$) uvv$) ?v0))) :named a307))
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (! (= (fun_app$h (fun_app$ad internal_split$d ?v0) (pair$ ?v1 ?v2)) (fun_app$l (fun_app$m ?v0 ?v1) ?v2)) :pattern ((fun_app$h (fun_app$ad internal_split$d ?v0) (pair$ ?v1 ?v2))))) :named a308))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (! (= (uncurry$l uvw$ ?v0) ?v0) :pattern ((uncurry$l uvw$ ?v0)))) :named a309))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$)) (! (= (fun_app$w (fun_app$ab uncurry$ uvx$) ?v0) ?v0) :pattern ((fun_app$w (fun_app$ab uncurry$ uvx$) ?v0)))) :named a310))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_prod_set$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_prod_set$)) (= (= (uvy$ ?v0) (uvy$ ?v1)) (= ?v0 ?v1))) :named a311))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist_a_llist_prod_set$)) (= (= (uvz$ ?v0) (uvz$ ?v1)) (= ?v0 ?v1))) :named a312))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod_llist$)) (=> (or (not (fun_app$bw lnull$a ?v0)) (not (fun_app$bw lnull$a ?v1))) (= (lhd$a (fun_app$ (lappend$ ?v0) ?v1)) (case_llist$e (lhd$a ?v1) uwa$ ?v0)))) :named a313))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (=> (or (not (fun_app$l lnull$ ?v0)) (not (fun_app$l lnull$ ?v1))) (= (lhd$ (fun_app$a (lappend$a ?v0) ?v1)) (fun_app$c (fun_app$ck (case_llist$b (lhd$ ?v1)) uwb$) ?v0)))) :named a314))
+(assert (! (forall ((?v0 A_bool_fun$) (?v1 A$) (?v2 A_llist$)) (! (= (fun_app$l (pred_llist$ ?v0) (lCons$ ?v1 ?v2)) (and (fun_app$k ?v0 ?v1) (fun_app$l (pred_llist$ ?v0) ?v2))) :pattern ((fun_app$l (pred_llist$ ?v0) (lCons$ ?v1 ?v2))))) :named a315))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_bool_fun$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod_llist$)) (! (= (fun_app$bw (pred_llist$a ?v0) (lCons$a ?v1 ?v2)) (and (fun_app$h ?v0 ?v1) (fun_app$bw (pred_llist$a ?v0) ?v2))) :pattern ((fun_app$bw (pred_llist$a ?v0) (lCons$a ?v1 ?v2))))) :named a316))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$)) (! (= (fun_app$bw (lmember$ ?v0) lNil$a) false) :pattern ((lmember$ ?v0)))) :named a317))
+(assert (! (forall ((?v0 A$)) (! (= (fun_app$l (lmember$a ?v0) lNil$) false) :pattern ((lmember$a ?v0)))) :named a318))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_set_fun_fun$) (?v1 A_llist_a_llist_prod$)) (= (fun_app$x (fun_app$ah uncurry$b (uwc$ ?v0)) (swap$ ?v1)) (fun_app$x (fun_app$ah uncurry$b ?v0) ?v1))) :named a319))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_fun_fun$) (?v1 A_llist_a_llist_prod$)) (= (fun_app$w (fun_app$ab uncurry$ (uwd$ ?v0)) (swap$ ?v1)) (fun_app$w (fun_app$ab uncurry$ ?v0) ?v1))) :named a320))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v1 A_llist_a_llist_prod_a_llist_a_llist_prod_prod$)) (= (fun_app$j (fun_app$al uncurry$d (uwe$ ?v0)) (swap$a ?v1)) (fun_app$j (fun_app$al uncurry$d ?v0) ?v1))) :named a321))
+(assert (! (forall ((?v0 A_llist_a_llist_a_llist_a_llist_prod_bool_fun_fun_fun$) (?v1 A_llist_a_llist_prod$)) (= (fun_app$r (fun_app$aj uncurry$c (uwf$ ?v0)) (swap$ ?v1)) (fun_app$r (fun_app$aj uncurry$c ?v0) ?v1))) :named a322))
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$) (?v1 A_llist_a_llist_prod$)) (= (fun_app$h (fun_app$ad uncurry$a (uwg$ ?v0)) (swap$ ?v1)) (fun_app$h (fun_app$ad uncurry$a ?v0) ?v1))) :named a323))
+(assert (! (forall ((?v0 A$) (?v1 A$) (?v2 A_llist$)) (! (= (fun_app$l (lmember$a ?v0) (lCons$ ?v1 ?v2)) (or (= ?v0 ?v1) (fun_app$l (lmember$a ?v0) ?v2))) :pattern ((fun_app$l (lmember$a ?v0) (lCons$ ?v1 ?v2))))) :named a324))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod_llist$)) (! (= (fun_app$bw (lmember$ ?v0) (lCons$a ?v1 ?v2)) (or (= ?v0 ?v1) (fun_app$bw (lmember$ ?v0) ?v2))) :pattern ((fun_app$bw (lmember$ ?v0) (lCons$a ?v1 ?v2))))) :named a325))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$)) (= (swap$ (swap$ ?v0)) ?v0)) :named a326))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod_llist$)) (= (fun_app$bw lnull$a (fun_app$ (lappend$ ?v0) ?v1)) (and (fun_app$bw lnull$a ?v0) (fun_app$bw lnull$a ?v1)))) :named a327))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (= (fun_app$l lnull$ (fun_app$a (lappend$a ?v0) ?v1)) (and (fun_app$l lnull$ ?v0) (fun_app$l lnull$ ?v1)))) :named a328))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod_llist$)) (= (not (fun_app$bw lnull$a (fun_app$ (lappend$ ?v0) ?v1))) (or (not (fun_app$bw lnull$a ?v0)) (not (fun_app$bw lnull$a ?v1))))) :named a329))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (= (not (fun_app$l lnull$ (fun_app$a (lappend$a ?v0) ?v1))) (or (not (fun_app$l lnull$ ?v0)) (not (fun_app$l lnull$ ?v1))))) :named a330))
+(assert (! (forall ((?v0 A$) (?v1 A_llist$) (?v2 A_llist$)) (! (= (fun_app$a (lappend$a (lCons$ ?v0 ?v1)) ?v2) (lCons$ ?v0 (fun_app$a (lappend$a ?v1) ?v2))) :pattern ((fun_app$a (lappend$a (lCons$ ?v0 ?v1)) ?v2)))) :named a331))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$) (?v2 A_llist_a_llist_prod_llist$)) (! (= (fun_app$ (lappend$ (lCons$a ?v0 ?v1)) ?v2) (lCons$a ?v0 (fun_app$ (lappend$ ?v1) ?v2))) :pattern ((fun_app$ (lappend$ (lCons$a ?v0 ?v1)) ?v2)))) :named a332))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$)) (! (= (fun_app$ (lappend$ lNil$a) ?v0) ?v0) :pattern ((fun_app$ (lappend$ lNil$a) ?v0)))) :named a333))
+(assert (! (forall ((?v0 A_llist$)) (! (= (fun_app$a (lappend$a lNil$) ?v0) ?v0) :pattern ((fun_app$a (lappend$a lNil$) ?v0)))) :named a334))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$)) (! (= (fun_app$ (lappend$ ?v0) lNil$a) ?v0) :pattern ((lappend$ ?v0)))) :named a335))
+(assert (! (forall ((?v0 A_llist$)) (! (= (fun_app$a (lappend$a ?v0) lNil$) ?v0) :pattern ((lappend$a ?v0)))) :named a336))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod$)) (= (swap$a (pair$b ?v0 ?v1)) (pair$b ?v1 ?v0))) :named a337))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (= (swap$ (pair$ ?v0 ?v1)) (pair$ ?v1 ?v0))) :named a338))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod_llist$)) (= (ltl$a (fun_app$ (lappend$ ?v0) ?v1)) (ite (fun_app$bw lnull$a ?v0) (ltl$a ?v1) (fun_app$ (lappend$ (ltl$a ?v0)) ?v1)))) :named a339))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (= (ltl$ (fun_app$a (lappend$a ?v0) ?v1)) (ite (fun_app$l lnull$ ?v0) (ltl$ ?v1) (fun_app$a (lappend$a (ltl$ ?v0)) ?v1)))) :named a340))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod_llist$)) (= (lhd$a (fun_app$ (lappend$ ?v0) ?v1)) (ite (fun_app$bw lnull$a ?v0) (lhd$a ?v1) (lhd$a ?v0)))) :named a341))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (= (lhd$ (fun_app$a (lappend$a ?v0) ?v1)) (ite (fun_app$l lnull$ ?v0) (lhd$ ?v1) (lhd$ ?v0)))) :named a342))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$) (?v2 A_llist$)) (= (fun_app$a (lappend$a (fun_app$a (lappend$a ?v0) ?v1)) ?v2) (fun_app$a (lappend$a ?v0) (fun_app$a (lappend$a ?v1) ?v2)))) :named a343))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod_llist$) (?v2 A_llist_a_llist_prod_llist$)) (= (fun_app$ (lappend$ (fun_app$ (lappend$ ?v0) ?v1)) ?v2) (fun_app$ (lappend$ ?v0) (fun_app$ (lappend$ ?v1) ?v2)))) :named a344))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod_llist$)) (! (=> (fun_app$bw lnull$a ?v0) (= (fun_app$ (lappend$ ?v0) ?v1) ?v1)) :pattern ((fun_app$ (lappend$ ?v0) ?v1)))) :named a345))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (! (=> (fun_app$l lnull$ ?v0) (= (fun_app$a (lappend$a ?v0) ?v1) ?v1)) :pattern ((fun_app$a (lappend$a ?v0) ?v1)))) :named a346))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod_llist$)) (! (=> (fun_app$bw lnull$a ?v0) (= (fun_app$ (lappend$ ?v1) ?v0) ?v1)) :pattern ((fun_app$ (lappend$ ?v1) ?v0)))) :named a347))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (! (=> (fun_app$l lnull$ ?v0) (= (fun_app$a (lappend$a ?v1) ?v0) ?v1)) :pattern ((fun_app$a (lappend$a ?v1) ?v0)))) :named a348))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod_llist$)) (=> (and (fun_app$bw lnull$a ?v0) (fun_app$bw lnull$a ?v1)) (fun_app$bw lnull$a (fun_app$ (lappend$ ?v0) ?v1)))) :named a349))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (=> (and (fun_app$l lnull$ ?v0) (fun_app$l lnull$ ?v1)) (fun_app$l lnull$ (fun_app$a (lappend$a ?v0) ?v1)))) :named a350))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod_llist$)) (=> (or (not (fun_app$bw lnull$a ?v0)) (not (fun_app$bw lnull$a ?v1))) (not (fun_app$bw lnull$a (fun_app$ (lappend$ ?v0) ?v1))))) :named a351))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (=> (or (not (fun_app$l lnull$ ?v0)) (not (fun_app$l lnull$ ?v1))) (not (fun_app$l lnull$ (fun_app$a (lappend$a ?v0) ?v1))))) :named a352))
+(assert (! (= (fun_app$ (lappend$ lNil$a) lNil$a) lNil$a) :named a353))
+(assert (! (= (fun_app$a (lappend$a lNil$) lNil$) lNil$) :named a354))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod_llist$)) (= (= (fun_app$ (lappend$ ?v0) ?v1) lNil$a) (and (= ?v0 lNil$a) (= ?v1 lNil$a)))) :named a355))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (= (= (fun_app$a (lappend$a ?v0) ?v1) lNil$) (and (= ?v0 lNil$) (= ?v1 lNil$)))) :named a356))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod_llist$)) (= (= lNil$a (fun_app$ (lappend$ ?v0) ?v1)) (and (= ?v0 lNil$a) (= ?v1 lNil$a)))) :named a357))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (= (= lNil$ (fun_app$a (lappend$a ?v0) ?v1)) (and (= ?v0 lNil$) (= ?v1 lNil$)))) :named a358))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod_llist$)) (= (fun_app$ (lappend$ ?v0) ?v1) (case_llist$d ?v1 (uwh$ ?v1) ?v0))) :named a359))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (= (fun_app$a (lappend$a ?v0) ?v1) (fun_app$a (fun_app$cj (case_llist$a ?v1) (uwi$ ?v1)) ?v0))) :named a360))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod_llist$)) (! (=> (and (fun_app$bw lnull$a ?v0) (fun_app$bw lnull$a ?v1)) (= (fun_app$ (lappend$ ?v0) ?v1) lNil$a)) :pattern ((fun_app$ (lappend$ ?v0) ?v1)))) :named a361))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (! (=> (and (fun_app$l lnull$ ?v0) (fun_app$l lnull$ ?v1)) (= (fun_app$a (lappend$a ?v0) ?v1) lNil$)) :pattern ((fun_app$a (lappend$a ?v0) ?v1)))) :named a362))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod$) (?v2 A_llist_a_llist_prod_llist$)) (= (fun_app$ (lappend$ (fun_app$ (lappend$ ?v0) (lCons$a ?v1 lNil$a))) ?v2) (fun_app$ (lappend$ ?v0) (lCons$a ?v1 ?v2)))) :named a363))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (=> (not (fun_app$l lnull$ ?v0)) (= (fun_app$a (lappend$a (ltl$ ?v0)) ?v1) (ltl$ (fun_app$a (lappend$a ?v0) ?v1))))) :named a364))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (=> (or (not (fun_app$l lnull$ ?v0)) (not (fun_app$l lnull$ ?v1))) (= (fun_app$a (lappend$a ?v0) ?v1) (lCons$ (fun_app$c (fun_app$ck (case_llist$b (lhd$ ?v1)) uwb$) ?v0) (fun_app$a (fun_app$cj (case_llist$a (fun_app$a (fun_app$cj (case_llist$a undefined$) uvv$) ?v1)) (uwj$ ?v1)) ?v0))))) :named a365))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (=> (or (not (fun_app$l lnull$ ?v0)) (not (fun_app$l lnull$ ?v1))) (= (ltl$ (fun_app$a (lappend$a ?v0) ?v1)) (fun_app$a (fun_app$cj (case_llist$a (fun_app$a (fun_app$cj (case_llist$a undefined$) uvv$) ?v1)) (uwj$ ?v1)) ?v0)))) :named a366))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist_a_llist_fun$)) (= (inv_image$ ?v0 ?v1) (collect$ (fun_app$ad uncurry$a (fun_app$z (uwk$ ?v0) ?v1))))) :named a367))
+(assert (! (forall ((?v0 A_llist_bool_fun$) (?v1 A_llist_a_llist_a_llist_prod_set_fun$)) (= (same_fst$ ?v0 ?v1) (collect$a (fun_app$al uncurry$d (fun_app$aj uncurry$c (fun_app$bt (uwm$ ?v0) ?v1)))))) :named a368))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$) (?v2 A_llist_a_llist_prod_a_llist_a_llist_prod_llist_bool_fun_fun$)) (=> (and (fun_app$i (member$ ?v0) (lset$ ?v1)) (and (forall ((?v3 A_llist_a_llist_prod_llist$)) (=> (not (fun_app$bw lnull$a ?v3)) (fun_app$bw (fun_app$bx ?v2 (lhd$a ?v3)) ?v3))) (forall ((?v3 A_llist_a_llist_prod_llist$) (?v4 A_llist_a_llist_prod$)) (=> (and (not (fun_app$bw lnull$a ?v3)) (and (fun_app$i (member$ ?v4) (lset$ (ltl$a ?v3))) [...]
+(assert (! (forall ((?v0 A$) (?v1 A_llist$) (?v2 A_a_llist_bool_fun_fun$)) (=> (and (member$b ?v0 (lset$a ?v1)) (and (forall ((?v3 A_llist$)) (=> (not (fun_app$l lnull$ ?v3)) (fun_app$l (fun_app$as ?v2 (lhd$ ?v3)) ?v3))) (forall ((?v3 A_llist$) (?v4 A$)) (=> (and (not (fun_app$l lnull$ ?v3)) (and (member$b ?v4 (lset$a (ltl$ ?v3))) (fun_app$l (fun_app$as ?v2 ?v4) (ltl$ ?v3)))) (fun_app$l (fun_app$as ?v2 ?v4) ?v3))))) (fun_app$l (fun_app$as ?v2 ?v0) ?v1))) :named a370))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$) (?v2 A_llist_a_llist_prod_set$) (?v3 A_llist_a_llist_fun$)) (= (fun_app$i (member$ (pair$ ?v0 ?v1)) (inv_image$ ?v2 ?v3)) (fun_app$i (member$ (pair$ (fun_app$a ?v3 ?v0) (fun_app$a ?v3 ?v1))) ?v2))) :named a371))
+(assert (! (forall ((?v0 A_llist_bool_fun$) (?v1 A_llist$) (?v2 A_llist$) (?v3 A_llist$) (?v4 A_llist_a_llist_a_llist_prod_set_fun$)) (=> (and (fun_app$l ?v0 ?v1) (fun_app$i (member$ (pair$ ?v2 ?v3)) (fun_app$n ?v4 ?v1))) (member$a (pair$b (pair$ ?v1 ?v2) (pair$ ?v1 ?v3)) (same_fst$ ?v0 ?v4)))) :named a372))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$)) (fun_app$i (member$ ?v0) (lset$ (lCons$a ?v0 ?v1)))) :named a373))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$)) (fun_app$i (member$ ?v0) (lset$ (lCons$a ?v0 ?v1)))) :named a374))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$) (?v2 A_llist_a_llist_prod$)) (=> (fun_app$i (member$ ?v0) (lset$ ?v1)) (fun_app$i (member$ ?v0) (lset$ (lCons$a ?v2 ?v1))))) :named a375))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$) (?v2 A_llist_a_llist_prod$)) (=> (fun_app$i (member$ ?v0) (lset$ ?v1)) (fun_app$i (member$ ?v0) (lset$ (lCons$a ?v2 ?v1))))) :named a376))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$)) (=> (and (fun_app$i (member$ ?v0) (lset$ ?v1)) (and (forall ((?v2 A_llist_a_llist_prod_llist$)) (=> (= ?v1 (lCons$a ?v0 ?v2)) false)) (forall ((?v2 A_llist_a_llist_prod$) (?v3 A_llist_a_llist_prod_llist$)) (=> (and (= ?v1 (lCons$a ?v2 ?v3)) (fun_app$i (member$ ?v0) (lset$ ?v3))) false)))) false)) :named a377))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$) (?v2 A_llist_a_llist_prod_llist_bool_fun$)) (=> (and (fun_app$i (member$ ?v0) (lset$ ?v1)) (and (forall ((?v3 A_llist_a_llist_prod_llist$)) (fun_app$bw ?v2 (lCons$a ?v0 ?v3))) (forall ((?v3 A_llist_a_llist_prod$) (?v4 A_llist_a_llist_prod_llist$)) (=> (and (fun_app$i (member$ ?v0) (lset$ ?v4)) (and (not (= ?v0 ?v3)) (fun_app$bw ?v2 ?v4))) (fun_app$bw ?v2 (lCons$a ?v3 ?v4)))))) (fun_app$bw ?v2 ?v1))) :named a378))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$) (?v2 A_llist_a_llist_prod_llist_bool_fun$)) (=> (and (fun_app$i (member$ ?v0) (lset$ ?v1)) (and (forall ((?v3 A_llist_a_llist_prod_llist$)) (fun_app$bw ?v2 (lCons$a ?v0 ?v3))) (forall ((?v3 A_llist_a_llist_prod$) (?v4 A_llist_a_llist_prod_llist$)) (=> (and (fun_app$i (member$ ?v0) (lset$ ?v4)) (fun_app$bw ?v2 ?v4)) (fun_app$bw ?v2 (lCons$a ?v3 ?v4)))))) (fun_app$bw ?v2 ?v1))) :named a379))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$)) (=> (and (fun_app$i (member$ ?v0) (lset$ ?v1)) (and (forall ((?v2 A_llist_a_llist_prod_llist$)) (=> (= ?v1 (lCons$a ?v0 ?v2)) false)) (forall ((?v2 A_llist_a_llist_prod$) (?v3 A_llist_a_llist_prod_llist$)) (=> (and (= ?v1 (lCons$a ?v2 ?v3)) (fun_app$i (member$ ?v0) (lset$ ?v3))) false)))) false)) :named a380))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$) (?v2 A_llist_a_llist_prod_a_llist_a_llist_prod_llist_bool_fun_fun$)) (=> (and (fun_app$i (member$ ?v0) (lset$ ?v1)) (and (forall ((?v3 A_llist_a_llist_prod$) (?v4 A_llist_a_llist_prod_llist$)) (fun_app$bw (fun_app$bx ?v2 ?v3) (lCons$a ?v3 ?v4))) (forall ((?v3 A_llist_a_llist_prod$) (?v4 A_llist_a_llist_prod_llist$) (?v5 A_llist_a_llist_prod$)) (=> (and (fun_app$i (member$ ?v5) (lset$ ?v4)) (fun_app$bw (fun_ [...]
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$)) (=> (fun_app$i (member$ ?v0) (lset$ (ltl$a ?v1))) (fun_app$i (member$ ?v0) (lset$ ?v1)))) :named a382))
+(assert (! (forall ((?v0 A$) (?v1 A_llist$)) (=> (member$b ?v0 (lset$a (ltl$ ?v1))) (member$b ?v0 (lset$a ?v1)))) :named a383))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$)) (= (fun_app$i (member$ ?v0) (lset$ ?v1)) (fun_app$bw (lmember$ ?v0) ?v1))) :named a384))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$) (?v1 A_llist_a_llist_prod$)) (=> (and (not (fun_app$bw lnull$a ?v0)) (fun_app$i (member$ ?v1) (lset$ (ltl$a ?v0)))) (fun_app$i (member$ ?v1) (lset$ ?v0)))) :named a385))
+(assert (! (forall ((?v0 A_llist$) (?v1 A$)) (=> (and (not (fun_app$l lnull$ ?v0)) (member$b ?v1 (lset$a (ltl$ ?v0)))) (member$b ?v1 (lset$a ?v0)))) :named a386))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_llist$)) (=> (not (fun_app$bw lnull$a ?v0)) (fun_app$i (member$ (lhd$a ?v0)) (lset$ ?v0)))) :named a387))
+(assert (! (forall ((?v0 A_llist$)) (=> (not (fun_app$l lnull$ ?v0)) (member$b (lhd$ ?v0) (lset$a ?v0)))) :named a388))
+(assert (! (forall ((?v0 A_llist$)) (= (lhd$ ?v0) (fun_app$c (fun_app$ck (case_llist$b undefined$a) uwb$) ?v0))) :named a389))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist_a_llist_prod_set$)) (= (lex_prod$ ?v0 ?v1) (collect$a (fun_app$al uncurry$d (fun_app$aj uncurry$c (fun_app$bq (uwo$ ?v0) ?v1)))))) :named a390))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$)) (=> (fun_app$i (member$ ?v0) (lset$ ?v1)) (exists ((?v2 A_llist_a_llist_prod_llist$) (?v3 A_llist_a_llist_prod_llist$)) (and (= ?v1 (fun_app$ (lappend$ ?v2) (lCons$a ?v0 ?v3))) (and (lfinite$ ?v2) (not (fun_app$i (member$ ?v0) (lset$ ?v2)))))))) :named a391))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$)) (=> (fun_app$i (member$ ?v0) (lset$ ?v1)) (exists ((?v2 A_llist_a_llist_prod_llist$) (?v3 A_llist_a_llist_prod_llist$)) (and (= ?v1 (fun_app$ (lappend$ ?v2) (lCons$a ?v0 ?v3))) (lfinite$ ?v2))))) :named a392))
+(assert (! (forall ((?v0 A_llist$)) (= (lfinite$a (ltl$ ?v0)) (lfinite$a ?v0))) :named a393))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$) (?v2 A_llist$) (?v3 A_llist$) (?v4 A_llist_a_llist_prod_set$) (?v5 A_llist_a_llist_prod_set$)) (= (member$a (pair$b (pair$ ?v0 ?v1) (pair$ ?v2 ?v3)) (lex_prod$ ?v4 ?v5)) (or (fun_app$i (member$ (pair$ ?v0 ?v2)) ?v4) (and (= ?v0 ?v2) (fun_app$i (member$ (pair$ ?v1 ?v3)) ?v5))))) :named a394))
+(assert (! (forall ((?v0 A_llist$)) (=> (fun_app$l lnull$ ?v0) (lfinite$a ?v0))) :named a395))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist_bool_fun$)) (=> (and (lfinite$a ?v0) (and (forall ((?v2 A_llist$)) (=> (fun_app$l lnull$ ?v2) (fun_app$l ?v1 ?v2))) (forall ((?v2 A_llist$)) (=> (and (lfinite$a ?v2) (and (not (fun_app$l lnull$ ?v2)) (fun_app$l ?v1 (ltl$ ?v2)))) (fun_app$l ?v1 ?v2))))) (fun_app$l ?v1 ?v0))) :named a396))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_llist$) (?v2 A_llist_a_llist_prod_llist$)) (= (fun_app$i (member$ ?v0) (lset$ (fun_app$ (lappend$ ?v1) ?v2))) (or (fun_app$i (member$ ?v0) (lset$ ?v1)) (and (lfinite$ ?v1) (fun_app$i (member$ ?v0) (lset$ ?v2)))))) :named a397))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_bool_fun$) (?v1 A_llist_a_llist_prod_bool_fun$)) (= (collect$ (fun_app$t (uwp$ ?v0) ?v1)) (sup$ (collect$ ?v0) (collect$ ?v1)))) :named a398))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist_a_llist_prod_set$)) (= (sup$ ?v0 ?v1) (collect$ (fun_app$s (uwq$ ?v0) ?v1)))) :named a399))
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$) (?v1 A_llist$) (?v2 A_llist$) (?v3 A_a_bool_fun_fun$)) (=> (and (fun_app$l (fun_app$m ?v0 ?v1) ?v2) (forall ((?v4 A_llist$) (?v5 A_llist$)) (=> (fun_app$l (fun_app$m ?v0 ?v4) ?v5) (and (= (fun_app$l lnull$ ?v4) (fun_app$l lnull$ ?v5)) (=> (and (not (fun_app$l lnull$ ?v4)) (not (fun_app$l lnull$ ?v5))) (and (fun_app$k (fun_app$co ?v3 (lhd$ ?v4)) (lhd$ ?v5)) (fun_app$l (fun_app$m ?v0 (ltl$ ?v4)) (ltl$ ?v5)))))))) (fun_app$l (fun_app$m [...]
+(assert (! (forall ((?v0 A_a_bool_fun_fun$) (?v1 A_llist$) (?v2 A_llist$)) (= (fun_app$l (fun_app$m (llist_all2$ ?v0) ?v1) ?v2) (and (= (fun_app$l lnull$ ?v1) (fun_app$l lnull$ ?v2)) (=> (and (not (fun_app$l lnull$ ?v1)) (not (fun_app$l lnull$ ?v2))) (and (fun_app$k (fun_app$co ?v0 (lhd$ ?v1)) (lhd$ ?v2)) (fun_app$l (fun_app$m (llist_all2$ ?v0) (ltl$ ?v1)) (ltl$ ?v2))))))) :named a401))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist_a_llist_prod_set$)) (=> (forall ((?v2 A_llist$) (?v3 A_llist$)) (=> (fun_app$i (member$ (pair$ ?v2 ?v3)) ?v0) (fun_app$i (member$ (pair$ ?v2 ?v3)) ?v1))) (fun_app$i (less_eq$ ?v0) ?v1))) :named a402))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$) (?v1 A_llist_a_llist_prod_llist$) (?v2 A_llist_a_llist_prod_llist$) (?v3 A_llist_a_llist_prod_a_llist_a_llist_prod_bool_fun_fun$)) (=> (and (fun_app$bw (fun_app$by (llist_all2$a ?v0) ?v1) ?v2) (forall ((?v4 A_llist_a_llist_prod$) (?v5 A_llist_a_llist_prod$)) (=> (and (fun_app$i (member$ ?v4) (lset$ ?v1)) (and (fun_app$i (member$ ?v5) (lset$ ?v2)) (fun_app$h (fun_app$r ?v0 ?v4) ?v5))) (fun_app$h (fun_app$r ? [...]
+(assert (! (forall ((?v0 A_llist$)) (less_eq$a (lset$a (ltl$ ?v0)) (lset$a ?v0))) :named a404))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist_a_llist_prod_bool_fun$) (?v2 A_llist_a_llist_prod_bool_fun$)) (= (fun_app$i (less_eq$ ?v0) (collect$ (fun_app$t (uwr$ ?v1) ?v2))) (and (fun_app$i (less_eq$ ?v0) (collect$ ?v1)) (fun_app$i (less_eq$ ?v0) (collect$ ?v2))))) :named a405))
+(assert (! (forall ((?v0 A_llist_a_llist_prod$) (?v1 A_llist_a_llist_prod_set$) (?v2 A_llist_a_llist_prod_set$) (?v3 A_llist_a_llist_prod_bool_fun$)) (=> (and (fun_app$i (member$ ?v0) ?v1) (fun_app$i (less_eq$ ?v1) (collect$ (fun_app$t (uws$ ?v2) ?v3)))) (fun_app$h ?v3 ?v0))) :named a406))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist_a_llist_prod_set$) (?v2 A_llist_a_llist_prod_bool_fun$) (?v3 A_llist_a_llist_prod_bool_fun$)) (=> (and (fun_app$i (less_eq$ ?v0) ?v1) (forall ((?v4 A_llist_a_llist_prod$)) (=> (and (fun_app$i (member$ ?v4) ?v0) (fun_app$h ?v2 ?v4)) (fun_app$h ?v3 ?v4)))) (fun_app$i (less_eq$ (collect$ (fun_app$t (uws$ ?v0) ?v2))) (collect$ (fun_app$t (uws$ ?v1) ?v3))))) :named a407))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist_a_llist_prod_set$)) (= (fun_app$i (less_eq$ ?v0) ?v1) (fun_app$bk (less_eq$b (uui$ ?v0)) (uui$ ?v1)))) :named a408))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist_a_llist_prod_set$)) (= (fun_app$bk (less_eq$b (uui$ ?v0)) (uui$ ?v1)) (fun_app$i (less_eq$ ?v0) ?v1))) :named a409))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist_a_llist_prod_set$)) (= (less_eq$c (uvz$ ?v0) (uvz$ ?v1)) (fun_app$i (less_eq$ ?v0) ?v1))) :named a410))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$) (?v2 A_llist_a_llist_prod_set$) (?v3 A_llist$)) (=> (and (fun_app$i (member$ (pair$ ?v0 ?v1)) ?v2) (= ?v3 ?v1)) (fun_app$i (member$ (pair$ ?v0 ?v3)) ?v2))) :named a411))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist_a_llist_prod_bool_fun$)) (fun_app$i (less_eq$ (collect$ (fun_app$t (uws$ ?v0) ?v1))) ?v0)) :named a412))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist_a_llist_prod_set$) (?v2 A_llist_a_llist_prod_bool_fun$)) (=> (fun_app$i (less_eq$ ?v0) ?v1) (= (fun_app$i (less_eq$ ?v0) (collect$ (fun_app$t (uws$ ?v1) ?v2))) (forall ((?v3 A_llist_a_llist_prod$)) (=> (fun_app$i (member$ ?v3) ?v0) (fun_app$h ?v2 ?v3)))))) :named a413))
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$) (?v1 A_llist_a_llist_bool_fun_fun$)) (=> (less_eq$c ?v0 ?v1) (fun_app$i (less_eq$ (collect$ (fun_app$ad uncurry$a ?v0))) (collect$ (fun_app$ad uncurry$a ?v1))))) :named a414))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist_a_llist_prod_set$)) (=> (and (fun_app$i (less_eq$ ?v0) (collect$ (fun_app$ad uncurry$a (in_rel$ ?v1)))) (=> (fun_app$i (less_eq$ ?v0) ?v1) false)) false)) :named a415))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist$) (?v2 A_llist$)) (! (= (fun_app$l (fun_app$m (in_rel$ ?v0) ?v1) ?v2) (fun_app$i (member$ (pair$ ?v1 ?v2)) ?v0)) :pattern ((fun_app$l (fun_app$m (in_rel$ ?v0) ?v1) ?v2)))) :named a416))
+(assert (! (forall ((?v0 A_llist_a_llist_bool_fun_fun$)) (= (in_rel$ (collect$ (fun_app$ad uncurry$a ?v0))) ?v0)) :named a417))
+(assert (! (forall ((?v0 A_llist_a_llist_prod_set$) (?v1 A_llist_a_llist_prod_set$)) (=> (fun_app$i (less_eq$ ?v0) ?v1) (fun_app$i (less_eq$ ?v0) (collect$ (fun_app$ad uncurry$a (in_rel$ ?v1)))))) :named a418))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist_a_llist_prod_a_llist_fun$) (?v2 A_llist_a_llist_prod$) (?v3 A_llist$) (?v4 A_llist_a_llist_prod_a_llist_fun$) (?v5 A_llist_a_llist_prod_set$)) (=> (and (= ?v0 (fun_app$cp ?v1 ?v2)) (and (= ?v3 (fun_app$cp ?v4 ?v2)) (fun_app$i (member$ ?v2) ?v5))) (fun_app$i (member$ (pair$ ?v0 ?v3)) (image2$ ?v5 ?v1 ?v4)))) :named a419))
+(assert (! (forall ((?v0 A_llist$) (?v1 A_llist$)) (= (the$ (fun_app$ad uncurry$a (fun_app$aa (uwt$ ?v0) ?v1))) (pair$ ?v0 ?v1))) :named a420))
+(check-sat)
+
diff --git a/test/regress/regress0/quantifiers/clock-3.smt2 b/test/regress/regress0/quantifiers/clock-3.smt2
new file mode 100644
index 0000000..7847608
--- /dev/null
+++ b/test/regress/regress0/quantifiers/clock-3.smt2
@@ -0,0 +1,5 @@
+(set-logic LIA)
+(set-info :status unsat)
+(declare-fun t () Int)
+(assert (forall ((s Int) (m Int)) (or (not (= (+ (* 3 m) s) t)) (< s 0) (>= s 3))))
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/delta-simp.smt2 b/test/regress/regress0/quantifiers/delta-simp.smt2
new file mode 100644
index 0000000..f18a4fb
--- /dev/null
+++ b/test/regress/regress0/quantifiers/delta-simp.smt2
@@ -0,0 +1,5 @@
+(set-logic LRA)
+(set-info :status sat)
+(declare-fun c () Real)
+(assert (forall ((x Real)) (or (<= x 0) (>= x (+ c 3)))))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/quantifiers/double-pattern.smt2 b/test/regress/regress0/quantifiers/double-pattern.smt2
new file mode 100644
index 0000000..4ce21d4
--- /dev/null
+++ b/test/regress/regress0/quantifiers/double-pattern.smt2
@@ -0,0 +1,6 @@
+(set-logic UFLIA)
+(set-info :status unsat)
+(declare-fun P (Int) Bool)
+(assert (forall ((x Int)) (! (! (P x) :pattern ((P x))) :pattern ((P x)))))
+(assert (not (P 0)))
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/ex3.smt2 b/test/regress/regress0/quantifiers/ex3.smt2
new file mode 100644
index 0000000..fd887b4
--- /dev/null
+++ b/test/regress/regress0/quantifiers/ex3.smt2
@@ -0,0 +1,10 @@
+(set-logic AUFLIRA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-sort U 0)
+(declare-fun a () U)
+(declare-fun f (U) U)
+(assert (and (not (= (f (f a)) a)) (forall ((x U)) (= (f x) x))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/ex6.smt2 b/test/regress/regress0/quantifiers/ex6.smt2
new file mode 100644
index 0000000..7285e1c
--- /dev/null
+++ b/test/regress/regress0/quantifiers/ex6.smt2
@@ -0,0 +1,11 @@
+(set-logic AUFLIRA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-sort U 0)
+(declare-fun a () U)
+(declare-fun S (U) U)
+(declare-fun G (U U) Bool)
+(assert (and (forall ((x U)) (G (S x) x)) (forall ((x U) (y U) (z U)) (=> (and (G x y) (G y z)) (G x z))) (not (G (S (S a)) a))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/ext-ex-deq-trigger.smt2 b/test/regress/regress0/quantifiers/ext-ex-deq-trigger.smt2
new file mode 100644
index 0000000..f6f96fe
--- /dev/null
+++ b/test/regress/regress0/quantifiers/ext-ex-deq-trigger.smt2
@@ -0,0 +1,26 @@
+; COMMAND-LINE: --relational-triggers
+; EXPECT: unsat
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-sort U 0)
+
+(declare-const k U)
+(declare-const ff U) 
+(declare-const ffk U)
+(declare-fun fun1 (Int) Int)
+(declare-fun fun2 (Int) Int)
+(declare-fun c (U U) U)
+(declare-fun app (U Int) Int)
+
+(assert (forall ((f U) (g U)) (=> (forall ((x Int)) (= (app f x) (app g x))) (= f g))  ))
+
+(assert (forall ((x Int)) (= (app ff x) (+ (fun1 x) (fun2 x)))))
+(assert (forall ((x Int)) (= (app ffk x) (+ (fun1 (app k x)) (fun2 (app k x))))))
+
+(assert (forall ((f U) (g U) (x Int)) (= (app (c f g) x) (app f (app g x)))))
+
+(assert (not (= (c ff k) ffk)))
+
+(check-sat)
+
diff --git a/test/regress/regress0/quantifiers/floor.smt2 b/test/regress/regress0/quantifiers/floor.smt2
new file mode 100644
index 0000000..47aea95
--- /dev/null
+++ b/test/regress/regress0/quantifiers/floor.smt2
@@ -0,0 +1,4 @@
+(set-logic LIRA)
+(set-info :status unsat)
+(assert (forall ((X Real)) (not (>= (+ (to_int (* 2 X)) (* (- 2) (to_int X))) 1)) ))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/quantifiers/florian-case-ax.smt2 b/test/regress/regress0/quantifiers/florian-case-ax.smt2
new file mode 100644
index 0000000..35ebb28
--- /dev/null
+++ b/test/regress/regress0/quantifiers/florian-case-ax.smt2
@@ -0,0 +1,168 @@
+(set-logic AUFLIA)
+(set-info :status unsat)
+(declare-sort U 0)
+(declare-fun A (U U U
+  U U U U
+  U U U U
+  U U U U
+  U U U U
+  U U U U
+  U U U U
+  U U U U
+  U U U U
+  U U U U
+  U U U U
+  U U U U
+  U U U U
+  U U U U
+  U U
+  U) (Array Int U))
+
+(assert
+  (forall ((v_184 U) (v_185 U)
+  (v_186 U) (v_187 U)
+  (v_188 U) (v_189 U)
+  (v_190 U) (v_191 U)
+  (v_192 U) (v_193 U)
+  (v_194 U) (v_195 U)
+  (v_196 U) (v_197 U)
+  (v_198 U) (v_199 U)
+  (v_200 U) (v_201 U)
+  (v_202 U) (v_203 U)
+  (v_204 U) (v_205 U)
+  (v_206 U) (v_207 U)
+  (v_208 U) (v_209 U)
+  (v_210 U) (v_211 U)
+  (v_212 U) (v_213 U)
+  (v_214 U) (v_215 U)
+  (v_216 U) (v_217 U)
+  (v_218 U) (v_219 U)
+  (v_220 U) (v_221 U)
+  (v_222 U) (v_223 U)
+  (v_224 U) (v_225 U)
+  (v_226 U) (v_227 U)
+  (v_228 U) (v_229 U)
+  (v_230 U) (v_231 U)
+  (v_232 U) (v_233 U)
+  (v_234 U) (v_235 U)
+  (v_236 U) (v_237 U)
+  (v_238 U) (v_239 U)
+  (v_240 U) (v_241 U) (v_242 Int))
+  (let ((v_183 (A v_184 v_185 v_186 v_187
+                    v_188 v_189 v_190 v_191 v_192
+                    v_193 v_194 v_195 v_196 v_197
+                    v_198 v_199 v_200 v_201 v_202
+                    v_203 v_204 v_205 v_206 v_207
+                    v_208 v_209 v_210 v_211 v_212
+                    v_213 v_214 v_215 v_216 v_217
+                    v_218 v_219 v_220 v_221 v_222
+                    v_223 v_224 v_225 v_226 v_227
+                    v_228 v_229 v_230 v_231 v_232
+                    v_233 v_234 v_235 v_236 v_237
+                    v_238 v_239 v_240 v_241)))
+  (ite (= v_242 59) (= (select v_183 v_242) v_240)
+  (ite (= v_242 58) (= (select v_183 v_242) v_239)
+  (ite (= v_242 57) (= (select v_183 v_242) v_238)
+  (ite (= v_242 56) (= (select v_183 v_242) v_237)
+  (ite (= v_242 55) (= (select v_183 v_242) v_236)
+  (ite (= v_242 54) (= (select v_183 v_242) v_235)
+  (ite (= v_242 53) (= (select v_183 v_242) v_234)
+  (ite (= v_242 52) (= (select v_183 v_242) v_233)
+  (ite (= v_242 51) (= (select v_183 v_242) v_232)
+  (ite (= v_242 50) (= (select v_183 v_242) v_231)
+  (ite (= v_242 49) (= (select v_183 v_242) v_230)
+  (ite (= v_242 48) (= (select v_183 v_242) v_229)
+  (ite (= v_242 47) (= (select v_183 v_242) v_228)
+  (ite (= v_242 46) (= (select v_183 v_242) v_227)
+  (ite (= v_242 45) (= (select v_183 v_242) v_226)
+  (ite (= v_242 44) (= (select v_183 v_242) v_225)
+  (ite (= v_242 43) (= (select v_183 v_242) v_224)
+  (ite (= v_242 41) (= (select v_183 v_242) v_223)
+  (ite (= v_242 40) (= (select v_183 v_242) v_222)
+  (ite (= v_242 39) (= (select v_183 v_242) v_221)
+  (ite (= v_242 37) (= (select v_183 v_242) v_220)
+  (ite (= v_242 36) (= (select v_183 v_242) v_219)
+  (ite (= v_242 34) (= (select v_183 v_242) v_218)
+  (ite (= v_242 33) (= (select v_183 v_242) v_217)
+  (ite (= v_242 32) (= (select v_183 v_242) v_216)
+  (ite (= v_242 31) (= (select v_183 v_242) v_215)
+  (ite (= v_242 30) (= (select v_183 v_242) v_214)
+  (ite (= v_242 29) (= (select v_183 v_242) v_213)
+  (ite (= v_242 28) (= (select v_183 v_242) v_212)
+  (ite (= v_242 27) (= (select v_183 v_242) v_211)
+  (ite (= v_242 26) (= (select v_183 v_242) v_210)
+  (ite (= v_242 25) (= (select v_183 v_242) v_209)
+  (ite (= v_242 24) (= (select v_183 v_242) v_208)
+  (ite (= v_242 23) (= (select v_183 v_242) v_207)
+  (ite (= v_242 22) (= (select v_183 v_242) v_206)
+  (ite (= v_242 21) (= (select v_183 v_242) v_205)
+  (ite (= v_242 20) (= (select v_183 v_242) v_204)
+  (ite (= v_242 19) (= (select v_183 v_242) v_203)
+  (ite (= v_242 18) (= (select v_183 v_242) v_202)
+  (ite (= v_242 17) (= (select v_183 v_242) v_201)
+  (ite (= v_242 16) (= (select v_183 v_242) v_200)
+  (ite (= v_242 15) (= (select v_183 v_242) v_199)
+  (ite (= v_242 14) (= (select v_183 v_242) v_198)
+  (ite (= v_242 13) (= (select v_183 v_242) v_197)
+  (ite (= v_242 12) (= (select v_183 v_242) v_196)
+  (ite (= v_242 11) (= (select v_183 v_242) v_195)
+  (ite (= v_242 10) (= (select v_183 v_242) v_194)
+  (ite (= v_242 9) (= (select v_183 v_242) v_193)
+  (ite (= v_242 8) (= (select v_183 v_242) v_192)
+  (ite (= v_242 7) (= (select v_183 v_242) v_191)
+  (ite (= v_242 6) (= (select v_183 v_242) v_190)
+  (ite (= v_242 5) (= (select v_183 v_242) v_189)
+  (ite (= v_242 4) (= (select v_183 v_242) v_188)
+  (ite (= v_242 3) (= (select v_183 v_242) v_187)
+  (ite (= v_242 2) (= (select v_183 v_242) v_186)
+  (ite (= v_242 1) (= (select v_183 v_242) v_185)
+  (ite (= v_242 0) (= (select v_183 v_242) v_184)
+  (= (select v_183 v_242) v_241)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+  
+(declare-const c_184 U) (declare-const c_185 U)
+(declare-const c_186 U) (declare-const c_187 U)
+(declare-const c_188 U) (declare-const c_189 U)
+(declare-const c_190 U) (declare-const c_191 U)
+(declare-const c_192 U) (declare-const c_193 U)
+(declare-const c_194 U) (declare-const c_195 U)
+(declare-const c_196 U) (declare-const c_197 U)
+(declare-const c_198 U) (declare-const c_199 U)
+(declare-const c_200 U) (declare-const c_201 U)
+(declare-const c_202 U) (declare-const c_203 U)
+(declare-const c_204 U) (declare-const c_205 U)
+(declare-const c_206 U) (declare-const c_207 U)
+(declare-const c_208 U) (declare-const c_209 U)
+(declare-const c_210 U) (declare-const c_211 U)
+(declare-const c_212 U) (declare-const c_213 U)
+(declare-const c_214 U) (declare-const c_215 U)
+(declare-const c_216 U) (declare-const c_217 U)
+(declare-const c_218 U) (declare-const c_219 U)
+(declare-const c_220 U) (declare-const c_221 U)
+(declare-const c_222 U) (declare-const c_223 U)
+(declare-const c_224 U) (declare-const c_225 U)
+(declare-const c_226 U) (declare-const c_227 U)
+(declare-const c_228 U) (declare-const c_229 U)
+(declare-const c_230 U) (declare-const c_231 U)
+(declare-const c_232 U) (declare-const c_233 U)
+(declare-const c_234 U) (declare-const c_235 U)
+(declare-const c_236 U) (declare-const c_237 U)
+(declare-const c_238 U) (declare-const c_239 U)
+(declare-const c_240 U) (declare-const c_241 U)
+  
+(declare-fun b () Int)
+(declare-fun c () U)
+(assert (not (= (select (A c_184 c_185 c_186 c_187
+                          c_188 c_189 c_190 c_191 c_192
+                          c_193 c_194 c_195 c_196 c_197
+                          c_198 c_199 c_200 c_201 c_202
+                          c_203 c_204 c_205 c_206 c_207
+                          c_208 c_209 c_210 c_211 c_212
+                          c_213 c_214 c_215 c_216 c_217
+                          c_218 c_219 c_220 c_221 c_222
+                          c_223 c_224 c_225 c_226 c_227
+                          c_228 c_229 c_230 c_231 c_232
+                          c_233 c_234 c_235 c_236 c_237
+                          c_238 c_239 c_240 c_241) b) c)))
+(assert (and (= b 28) (= c c_212)))
+
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/gauss_init_0030.fof.smt2 b/test/regress/regress0/quantifiers/gauss_init_0030.fof.smt2
new file mode 100644
index 0000000..e9f0490
--- /dev/null
+++ b/test/regress/regress0/quantifiers/gauss_init_0030.fof.smt2
@@ -0,0 +1,61 @@
+(set-logic AUFLIRA)
+(set-info :source |
+NASA benchmarks from "Using Automated Theorem Provers to Certify Auto-generated
+Aerospace Software", IJCAR 2004.  Translated from TPTP format by Yeting Ge and
+Clark Barrett
+
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-fun def () Real)
+(declare-fun init () Real)
+(declare-fun loopcounter () Int)
+(declare-fun pv1403 () Real)
+(declare-fun s_best7 () Int)
+(declare-fun s_best7_init () Real)
+(declare-fun s_sworst7 () Int)
+(declare-fun s_sworst7_init () Real)
+(declare-fun s_values7_init () (Array Int Real))
+(declare-fun s_worst7 () Int)
+(declare-fun s_worst7_init () Real)
+(declare-fun simplex7_init () (Array Int (Array Int Real)))
+(declare-fun tptp_float_0_001 () Real)
+(declare-fun use () Real)
+(declare-fun uniform_int_rnd (Int Int) Int)
+(declare-fun abs_ (Real) Real)
+(declare-fun log (Real) Real)
+(declare-fun exp (Real) Real)
+(declare-fun cos (Real) Real)
+(declare-fun sin (Real) Real)
+(declare-fun sqrt (Real) Real)
+(declare-fun divide (Real Real) Real)
+(declare-fun cond (Int Real Real) Real)
+(declare-fun tptp_term_equal (Real Real) Int)
+(declare-fun tptp_term_equals (Real Real) Int)
+(declare-fun tptp_term_and (Real Real) Int)
+(declare-fun sum (Int Int Real) Real)
+(declare-fun dim (Int Int) Int)
+(declare-fun trans ((Array Int (Array Int Real))) (Array Int (Array Int Real)))
+(declare-fun inv ((Array Int (Array Int Real))) (Array Int (Array Int Real)))
+(declare-fun tptp_mmul ((Array Int (Array Int Real)) (Array Int (Array Int Real))) (Array Int (Array Int Real)))
+(declare-fun tptp_madd ((Array Int (Array Int Real)) (Array Int (Array Int Real))) (Array Int (Array Int Real)))
+(declare-fun tptp_msub ((Array Int (Array Int Real)) (Array Int (Array Int Real))) (Array Int (Array Int Real)))
+(declare-fun tptp_const_array1 (Int Real) (Array Int Real))
+(declare-fun tptp_const_array2 (Int Int Real) (Array Int (Array Int Real)))
+(assert (forall ((?X_0 Int) (?C_1 Int)) (=> (>= ?X_0 0) (<= (uniform_int_rnd ?C_1 ?X_0) ?X_0))))
+(assert (forall ((?X_2 Int) (?C_3 Int)) (=> (>= ?X_2 0) (>= (uniform_int_rnd ?C_3 ?X_2) 0))))
+(assert (forall ((?I_4 Int) (?L_5 Int) (?U_6 Int) (?Val_7 Real)) (=> (and (<= ?L_5 ?I_4) (<= ?I_4 ?U_6)) (= (select (tptp_const_array1 (dim ?L_5 ?U_6) ?Val_7) ?I_4) ?Val_7))))
+(assert (forall ((?I_8 Int) (?L1_9 Int) (?U1_10 Int) (?J_11 Int) (?L2_12 Int) (?U2_13 Int) (?Val_14 Real)) (=> (and (and (and (<= ?L1_9 ?I_8) (<= ?I_8 ?U1_10)) (<= ?L2_12 ?J_11)) (<= ?J_11 ?U2_13)) (= (select (select (tptp_const_array2 (dim ?L1_9 ?U1_10) (dim ?L2_12 ?U2_13) ?Val_14) ?I_8) ?J_11) ?Val_14))))
+(assert (forall ((?I0_15 Int) (?J0_16 Int) (?A_17 (Array Int (Array Int Real))) (?B_18 (Array Int (Array Int Real))) (?N_19 Int)) (let ((?v_0 (tptp_mmul ?A_17 (tptp_mmul ?B_18 (trans ?A_17))))) (=> (and (and (and (and (>= ?I0_15 0) (<= ?I0_15 ?N_19)) (>= ?J0_16 0)) (<= ?J0_16 ?N_19)) (= (select (select ?B_18 ?I0_15) ?J0_16) (select (select ?B_18 ?J0_16) ?I0_15))) (= (select (select ?v_0 ?I0_15) ?J0_16) (select (select ?v_0 ?J0_16) ?I0_15))))))
+(assert (forall ((?I0_20 Int) (?J0_21 Int) (?I_22 Int) (?J_23 Int) (?A_24 (Array Int (Array Int Real))) (?B_25 (Array Int (Array Int Real))) (?N_26 Int) (?M_27 Int)) (let ((?v_0 (tptp_mmul ?A_24 (tptp_mmul ?B_25 (trans ?A_24))))) (=> (and (and (and (and (and (and (and (and (>= ?I0_20 0) (<= ?I0_20 ?N_26)) (>= ?J0_21 0)) (<= ?J0_21 ?N_26)) (>= ?I_22 0)) (<= ?I_22 ?M_27)) (>= ?J_23 0)) (<= ?J_23 ?M_27)) (= (select (select ?B_25 ?I_22) ?J_23) (select (select ?B_25 ?J_23) ?I_22))) (= (select [...]
+(assert (forall ((?I_28 Int) (?J_29 Int) (?A_30 (Array Int (Array Int Real))) (?B_31 (Array Int (Array Int Real))) (?N_32 Int)) (let ((?v_0 (tptp_madd ?A_30 ?B_31))) (=> (and (and (and (and (and (>= ?I_28 0) (<= ?I_28 ?N_32)) (>= ?J_29 0)) (<= ?J_29 ?N_32)) (= (select (select ?A_30 ?I_28) ?J_29) (select (select ?A_30 ?J_29) ?I_28))) (= (select (select ?B_31 ?I_28) ?J_29) (select (select ?B_31 ?J_29) ?I_28))) (= (select (select ?v_0 ?I_28) ?J_29) (select (select ?v_0 ?J_29) ?I_28))))))
+(assert (forall ((?I_33 Int) (?J_34 Int) (?A_35 (Array Int (Array Int Real))) (?B_36 (Array Int (Array Int Real))) (?N_37 Int)) (let ((?v_0 (tptp_msub ?A_35 ?B_36))) (=> (and (and (and (and (and (>= ?I_33 0) (<= ?I_33 ?N_37)) (>= ?J_34 0)) (<= ?J_34 ?N_37)) (= (select (select ?A_35 ?I_33) ?J_34) (select (select ?A_35 ?J_34) ?I_33))) (= (select (select ?B_36 ?I_33) ?J_34) (select (select ?B_36 ?J_34) ?I_33))) (= (select (select ?v_0 ?I_33) ?J_34) (select (select ?v_0 ?J_34) ?I_33))))))
+(assert (forall ((?I_38 Int) (?J_39 Int) (?A_40 (Array Int (Array Int Real))) (?N_41 Int)) (let ((?v_0 (trans ?A_40))) (=> (and (and (and (and (>= ?I_38 0) (<= ?I_38 ?N_41)) (>= ?J_39 0)) (<= ?J_39 ?N_41)) (= (select (select ?A_40 ?I_38) ?J_39) (select (select ?A_40 ?J_39) ?I_38))) (= (select (select ?v_0 ?I_38) ?J_39) (select (select ?v_0 ?J_39) ?I_38))))))
+(assert (forall ((?I_42 Int) (?J_43 Int) (?A_44 (Array Int (Array Int Real))) (?N_45 Int)) (let ((?v_0 (inv ?A_44))) (=> (and (and (and (and (>= ?I_42 0) (<= ?I_42 ?N_45)) (>= ?J_43 0)) (<= ?J_43 ?N_45)) (= (select (select ?A_44 ?I_42) ?J_43) (select (select ?A_44 ?J_43) ?I_42))) (= (select (select ?v_0 ?I_42) ?J_43) (select (select ?v_0 ?J_43) ?I_42))))))
+(assert (forall ((?I0_46 Int) (?J0_47 Int) (?I_48 Int) (?J_49 Int) (?A_50 (Array Int (Array Int Real))) (?B_51 (Array Int (Array Int Real))) (?C_52 (Array Int (Array Int Real))) (?D_53 (Array Int (Array Int Real))) (?E_54 (Array Int (Array Int Real))) (?F_55 (Array Int (Array Int Real))) (?N_56 Int) (?M_57 Int)) (let ((?v_0 (tptp_madd ?A_50 (tptp_mmul ?B_51 (tptp_mmul (tptp_madd (tptp_mmul ?C_52 (tptp_mmul ?D_53 (trans ?C_52))) (tptp_mmul ?E_54 (tptp_mmul ?F_55 (trans ?E_54)))) (trans ?B [...]
+(assert (forall ((?Body_58 Real)) (= (sum 0 (- 1) ?Body_58) 0.0)))
+(assert (not (= def use)))
+(assert (let ((?v_0 (not (<= tptp_float_0_001 pv1403))) (?v_1 (= s_best7_init init)) (?v_3 (= s_sworst7_init init)) (?v_4 (= s_worst7_init init)) (?v_5 (>= s_best7 0)) (?v_6 (>= s_sworst7 0)) (?v_7 (>= s_worst7 0)) (?v_8 (<= s_best7 3)) (?v_9 (<= s_sworst7 3)) (?v_10 (<= s_worst7 3)) (?v_2 (> loopcounter 0))) (not (=> (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and ?v_0 (forall ((?A_59 Int)) (=> (and (>= ?A_59 0) (<= ?A_5 [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/inst-max-level-segf.smt2 b/test/regress/regress0/quantifiers/inst-max-level-segf.smt2
new file mode 100644
index 0000000..d85f3d0
--- /dev/null
+++ b/test/regress/regress0/quantifiers/inst-max-level-segf.smt2
@@ -0,0 +1,326 @@
+; COMMAND-LINE: --inst-max-level=0 --simplification=none
+; EXPECT: unsat
+(set-logic UF)
+(set-info :status unsat)
+(declare-sort Node 0)
+(declare-sort GrassPat 0)
+(declare-sort GrassArray 1)
+(declare-sort ArrayCell 1)
+(declare-sort Loc 1)
+(declare-sort Set 1)
+(declare-sort Map 2)
+(declare-sort GrassByte 0)
+(declare-fun grass_null$0 () (Loc Node))
+(declare-fun grass_read$0 ((Map (Loc Node) (Loc Node)) (Loc Node))
+             (Loc Node))
+(declare-fun grass_emptyset$0 () (Set (Loc Node)))
+(declare-fun grass_singleton$0 ((Loc Node)) (Set (Loc Node)))
+(declare-fun grass_union$0 ((Set (Loc Node)) (Set (Loc Node)))
+             (Set (Loc Node)))
+(declare-fun grass_intersection$0 ((Set (Loc Node)) (Set (Loc Node)))
+             (Set (Loc Node)))
+(declare-fun grass_setminus$0 ((Set (Loc Node)) (Set (Loc Node)))
+             (Set (Loc Node)))
+(declare-fun grass_Btwn$0 ((Map (Loc Node) (Loc Node)) (Loc Node) (Loc Node)
+             (Loc Node)) Bool)
+(declare-fun grass_member$0 ((Loc Node) (Set (Loc Node))) Bool)
+(declare-fun grass_known$0 ((Map (Loc Node) (Loc Node))) GrassPat)
+(declare-fun grass_known$1 (Bool) GrassPat)
+(declare-fun Alloc_Node$0 () (Set (Loc Node)))
+(declare-fun FP_Caller_Node$0 () (Set (Loc Node)))
+(declare-fun FP_Caller_Node_1$0 () (Set (Loc Node)))
+(declare-fun FP_Caller_final_Node_2$0 () (Set (Loc Node)))
+(declare-fun FP_Node$0 () (Set (Loc Node)))
+(declare-fun Label$0 () Bool)
+(declare-fun Label_1$0 () Bool)
+(declare-fun Label_2$0 () Bool)
+(declare-fun Label_3$0 () Bool)
+(declare-fun elt$0 () (Loc Node))
+(declare-fun lseg$0 ((Map (Loc Node) (Loc Node)) (Loc Node) (Loc Node)
+             (Set (Loc Node))) Bool)
+(declare-fun lst$0 () (Loc Node))
+(declare-fun next$0 () (Map (Loc Node) (Loc Node)))
+(declare-fun res_2$0 () (Loc Node))
+(declare-fun set_compr$0 ((Map (Loc Node) (Loc Node)) (Loc Node) (Loc Node))
+             (Set (Loc Node)))
+(declare-fun sk_?X$0 () (Set (Loc Node)))
+(declare-fun sk_?X_1$0 () (Set (Loc Node)))
+(declare-fun sk_?X_2$0 () (Set (Loc Node)))
+(declare-fun sk_?X_3$0 () (Set (Loc Node)))
+(declare-fun sk_?X_4$0 () (Set (Loc Node)))
+(declare-fun sk_?e$0 () (Loc Node))
+
+(assert (not (grass_member$0 grass_null$0 Alloc_Node$0)))
+(assert
+        (and
+          (or
+            (or
+              (and (and (grass_member$0 sk_?e$0 sk_?X_4$0) Label_1$0)
+                (and
+                  (not
+                    (grass_member$0 sk_?e$0
+                      (set_compr$0 next$0 res_2$0 grass_null$0)))
+                  Label_1$0))
+              (and
+                (and
+                  (grass_member$0 sk_?e$0
+                    (set_compr$0 next$0 res_2$0 grass_null$0))
+                  Label_1$0)
+                (and (not (grass_member$0 sk_?e$0 sk_?X_4$0)) Label_1$0)))
+            (and
+              (not (grass_Btwn$0 next$0 res_2$0 grass_null$0 grass_null$0))
+              Label$0))
+          Label_2$0))
+(assert (forall ((x (Loc Node))) (not (grass_member$0 x grass_emptyset$0))))
+(assert
+        (forall ((y (Loc Node)) (x (Loc Node)))
+                (or (and (= x y) (grass_member$0 x (grass_singleton$0 y)))
+                  (and (not (= x y))
+                    (not (grass_member$0 x (grass_singleton$0 y)))))))
+(assert
+        (forall ((x (Loc Node)))
+                (or
+                  (and (grass_member$0 x FP_Caller_Node$0)
+                    (grass_member$0 x
+                      (grass_setminus$0 FP_Caller_Node$0 FP_Node$0))
+                    (not (grass_member$0 x FP_Node$0)))
+                  (and
+                    (or (grass_member$0 x FP_Node$0)
+                      (not (grass_member$0 x FP_Caller_Node$0)))
+                    (not
+                      (grass_member$0 x
+                        (grass_setminus$0 FP_Caller_Node$0 FP_Node$0)))))))
+(assert
+        (forall ((x (Loc Node)))
+                (or
+                  (and (grass_member$0 x Alloc_Node$0)
+                    (grass_member$0 x
+                      (grass_setminus$0 Alloc_Node$0 Alloc_Node$0))
+                    (not (grass_member$0 x Alloc_Node$0)))
+                  (and
+                    (or (grass_member$0 x Alloc_Node$0)
+                      (not (grass_member$0 x Alloc_Node$0)))
+                    (not
+                      (grass_member$0 x
+                        (grass_setminus$0 Alloc_Node$0 Alloc_Node$0)))))))
+(assert
+        (forall ((x (Loc Node)))
+                (or
+                  (and (grass_member$0 x Alloc_Node$0)
+                    (grass_member$0 x FP_Node$0)
+                    (grass_member$0 x
+                      (grass_intersection$0 Alloc_Node$0 FP_Node$0)))
+                  (and
+                    (or (not (grass_member$0 x Alloc_Node$0))
+                      (not (grass_member$0 x FP_Node$0)))
+                    (not
+                      (grass_member$0 x
+                        (grass_intersection$0 Alloc_Node$0 FP_Node$0)))))))
+(assert
+        (forall ((x (Loc Node)))
+                (or
+                  (and (grass_member$0 x sk_?X$0)
+                    (grass_member$0 x sk_?X_1$0)
+                    (grass_member$0 x
+                      (grass_intersection$0 sk_?X$0 sk_?X_1$0)))
+                  (and
+                    (or (not (grass_member$0 x sk_?X$0))
+                      (not (grass_member$0 x sk_?X_1$0)))
+                    (not
+                      (grass_member$0 x
+                        (grass_intersection$0 sk_?X$0 sk_?X_1$0)))))))
+(assert
+        (forall ((x (Loc Node)))
+                (or
+                  (and
+                    (grass_member$0 x
+                      (grass_union$0
+                        (grass_intersection$0 Alloc_Node$0 FP_Node$0)
+                        (grass_setminus$0 Alloc_Node$0 Alloc_Node$0)))
+                    (or
+                      (grass_member$0 x
+                        (grass_intersection$0 Alloc_Node$0 FP_Node$0))
+                      (grass_member$0 x
+                        (grass_setminus$0 Alloc_Node$0 Alloc_Node$0))))
+                  (and
+                    (not
+                      (grass_member$0 x
+                        (grass_intersection$0 Alloc_Node$0 FP_Node$0)))
+                    (not
+                      (grass_member$0 x
+                        (grass_setminus$0 Alloc_Node$0 Alloc_Node$0)))
+                    (not
+                      (grass_member$0 x
+                        (grass_union$0
+                          (grass_intersection$0 Alloc_Node$0 FP_Node$0)
+                          (grass_setminus$0 Alloc_Node$0 Alloc_Node$0))))))))
+(assert
+        (forall ((x (Loc Node)))
+                (or
+                  (and (grass_member$0 x (grass_union$0 sk_?X$0 sk_?X_1$0))
+                    (or (grass_member$0 x sk_?X$0)
+                      (grass_member$0 x sk_?X_1$0)))
+                  (and (not (grass_member$0 x sk_?X$0))
+                    (not (grass_member$0 x sk_?X_1$0))
+                    (not
+                      (grass_member$0 x (grass_union$0 sk_?X$0 sk_?X_1$0)))))))
+(assert
+        (forall ((x (Loc Node)))
+                (or
+                  (and
+                    (grass_member$0 x
+                      (grass_union$0 FP_Caller_Node_1$0 FP_Node$0))
+                    (or (grass_member$0 x FP_Caller_Node_1$0)
+                      (grass_member$0 x FP_Node$0)))
+                  (and (not (grass_member$0 x FP_Caller_Node_1$0))
+                    (not (grass_member$0 x FP_Node$0))
+                    (not
+                      (grass_member$0 x
+                        (grass_union$0 FP_Caller_Node_1$0 FP_Node$0)))))))
+(assert
+        (forall ((x (Loc Node)))
+                (or
+                  (and
+                    (grass_member$0 x
+                      (grass_union$0 FP_Node$0 FP_Caller_Node$0))
+                    (or (grass_member$0 x FP_Node$0)
+                      (grass_member$0 x FP_Caller_Node$0)))
+                  (and (not (grass_member$0 x FP_Node$0))
+                    (not (grass_member$0 x FP_Caller_Node$0))
+                    (not
+                      (grass_member$0 x
+                        (grass_union$0 FP_Node$0 FP_Caller_Node$0)))))))
+(assert
+        (forall ((x (Loc Node)))
+                (or
+                  (and
+                    (grass_member$0 x
+                      (grass_union$0 FP_Caller_Node$0 Alloc_Node$0))
+                    (or (grass_member$0 x FP_Caller_Node$0)
+                      (grass_member$0 x Alloc_Node$0)))
+                  (and (not (grass_member$0 x FP_Caller_Node$0))
+                    (not (grass_member$0 x Alloc_Node$0))
+                    (not
+                      (grass_member$0 x
+                        (grass_union$0 FP_Caller_Node$0 Alloc_Node$0)))))))
+(assert
+        (or (grass_Btwn$0 next$0 lst$0 lst$0 lst$0)
+          (not (lseg$0 next$0 lst$0 lst$0 sk_?X$0))))
+(assert
+        (forall
+                ((next (Map (Loc Node) (Loc Node))) (x (Loc Node))
+                 (y (Loc Node)) (z (Loc Node)))
+                (or
+                  (and (grass_Btwn$0 next x z y)
+                    (grass_member$0 z (set_compr$0 next x y)) (not (= z y)))
+                  (and (or (= z y) (not (grass_Btwn$0 next x z y)))
+                    (not (grass_member$0 z (set_compr$0 next x y)))))))
+(assert
+        (forall
+                ((?u (Loc Node)) (?x (Loc Node)) (?y (Loc Node))
+                 (?z (Loc Node)))
+                (or (not (grass_Btwn$0 next$0 ?x ?y ?z))
+                  (not (grass_Btwn$0 next$0 ?x ?u ?y))
+                  (and (grass_Btwn$0 next$0 ?x ?u ?z)
+                    (grass_Btwn$0 next$0 ?u ?y ?z)))))
+(assert
+        (forall
+                ((?u (Loc Node)) (?x (Loc Node)) (?y (Loc Node))
+                 (?z (Loc Node)))
+                (or (not (grass_Btwn$0 next$0 ?x ?y ?z))
+                  (not (grass_Btwn$0 next$0 ?y ?u ?z))
+                  (and (grass_Btwn$0 next$0 ?x ?y ?u)
+                    (grass_Btwn$0 next$0 ?x ?u ?z)))))
+(assert
+        (forall ((?x (Loc Node)) (?y (Loc Node)) (?z (Loc Node)))
+                (or (not (grass_Btwn$0 next$0 ?x ?y ?y))
+                  (not (grass_Btwn$0 next$0 ?y ?z ?z))
+                  (grass_Btwn$0 next$0 ?x ?z ?z))))
+(assert
+        (forall ((?x (Loc Node)) (?y (Loc Node)) (?z (Loc Node)))
+                (or (not (grass_Btwn$0 next$0 ?x ?y ?z))
+                  (and (grass_Btwn$0 next$0 ?x ?y ?y)
+                    (grass_Btwn$0 next$0 ?y ?z ?z)))))
+(assert
+        (forall ((?x (Loc Node)) (?y (Loc Node)) (?z (Loc Node)))
+                (or (not (grass_Btwn$0 next$0 ?x ?y ?y))
+                  (not (grass_Btwn$0 next$0 ?x ?z ?z))
+                  (grass_Btwn$0 next$0 ?x ?y ?z)
+                  (grass_Btwn$0 next$0 ?x ?z ?y))))
+(assert
+        (forall ((?x (Loc Node)) (?y (Loc Node)))
+                (or (not (grass_Btwn$0 next$0 ?x ?y ?x)) (= ?x ?y))))
+(assert
+        (forall ((?y (Loc Node)))
+                (or (not (grass_Btwn$0 next$0 res_2$0 ?y ?y)) (= res_2$0 ?y)
+                  (grass_Btwn$0 next$0 res_2$0 (grass_read$0 next$0 res_2$0)
+                    ?y))))
+(assert
+        (forall ((?y (Loc Node)))
+                (or (not (grass_Btwn$0 next$0 lst$0 ?y ?y)) (= lst$0 ?y)
+                  (grass_Btwn$0 next$0 lst$0 (grass_read$0 next$0 lst$0) ?y))))
+(assert
+        (forall ((?y (Loc Node)))
+                (or (not (= (grass_read$0 next$0 res_2$0) res_2$0))
+                  (not (grass_Btwn$0 next$0 res_2$0 ?y ?y)) (= res_2$0 ?y))))
+(assert
+        (forall ((?y (Loc Node)))
+                (or (not (= (grass_read$0 next$0 lst$0) lst$0))
+                  (not (grass_Btwn$0 next$0 lst$0 ?y ?y)) (= lst$0 ?y))))
+(assert
+        (grass_Btwn$0 next$0 res_2$0 (grass_read$0 next$0 res_2$0)
+          (grass_read$0 next$0 res_2$0)))
+(assert
+        (grass_Btwn$0 next$0 lst$0 (grass_read$0 next$0 lst$0)
+          (grass_read$0 next$0 lst$0)))
+(assert (forall ((?x (Loc Node))) (grass_Btwn$0 next$0 ?x ?x ?x)))
+(assert
+        (or (= sk_?X$0 (set_compr$0 next$0 lst$0 lst$0))
+          (not (lseg$0 next$0 lst$0 lst$0 sk_?X$0))))
+(assert (= (grass_read$0 next$0 grass_null$0) grass_null$0))
+(assert (= FP_Caller_Node_1$0 (grass_setminus$0 FP_Caller_Node$0 FP_Node$0)))
+(assert (and (= lst$0 grass_null$0) Label_3$0))
+(assert (= Alloc_Node$0 (grass_union$0 FP_Caller_Node$0 Alloc_Node$0)))
+(assert
+        (= sk_?X_4$0
+          (grass_union$0 (grass_intersection$0 Alloc_Node$0 FP_Node$0)
+            (grass_setminus$0 Alloc_Node$0 Alloc_Node$0))))
+(assert (= sk_?X_3$0 (grass_union$0 sk_?X$0 sk_?X_2$0)))
+(assert (= sk_?X_2$0 sk_?X_1$0))
+(assert (= sk_?X_1$0 (grass_singleton$0 elt$0)))
+(assert (= (grass_read$0 next$0 elt$0) grass_null$0))
+(assert (= FP_Node$0 sk_?X_3$0))
+(assert (= FP_Caller_Node$0 (grass_union$0 FP_Node$0 FP_Caller_Node$0)))
+(assert (= grass_emptyset$0 (grass_intersection$0 sk_?X$0 sk_?X_2$0)))
+(assert (= grass_emptyset$0 grass_emptyset$0))
+(assert (lseg$0 next$0 lst$0 grass_null$0 sk_?X$0))
+(assert
+        (= FP_Caller_final_Node_2$0
+          (grass_union$0 FP_Caller_Node_1$0 FP_Node$0)))
+(assert (= res_2$0 elt$0))
+(assert (= (grass_union$0 FP_Caller_Node$0 Alloc_Node$0) Alloc_Node$0))
+(assert (= (grass_read$0 next$0 grass_null$0) grass_null$0))
+(assert (= (grass_read$0 next$0 grass_null$0) lst$0))
+(assert (= (grass_read$0 next$0 grass_null$0) (grass_read$0 next$0 elt$0)))
+(assert
+        (= (grass_known$1 (lseg$0 next$0 lst$0 grass_null$0 sk_?X$0))
+          (grass_known$1 (lseg$0 next$0 lst$0 lst$0 sk_?X$0))))
+(assert (= (grass_intersection$0 sk_?X$0 sk_?X_2$0) grass_emptyset$0))
+(assert
+        (=
+          (grass_union$0 (grass_intersection$0 Alloc_Node$0 FP_Node$0)
+            (grass_setminus$0 Alloc_Node$0 Alloc_Node$0))
+          sk_?X_4$0))
+(assert (= res_2$0 elt$0))
+(assert (= (grass_union$0 FP_Node$0 FP_Caller_Node$0) FP_Caller_Node$0))
+(assert (= sk_?X_1$0 (grass_singleton$0 elt$0)))
+(assert (= sk_?X_1$0 sk_?X_2$0))
+(assert
+        (= FP_Caller_final_Node_2$0
+          (grass_union$0 FP_Caller_Node_1$0 FP_Node$0)))
+(assert (= FP_Node$0 sk_?X_3$0))
+(assert (= FP_Node$0 (grass_union$0 sk_?X$0 sk_?X_2$0)))
+(assert (= FP_Caller_Node_1$0 (grass_setminus$0 FP_Caller_Node$0 FP_Node$0)))
+(assert (= sk_?X$0 (set_compr$0 next$0 lst$0 lst$0)))
+(assert (= sk_?X$0 (set_compr$0 next$0 lst$0 grass_null$0)))
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/is-even-pred.smt2 b/test/regress/regress0/quantifiers/is-even-pred.smt2
new file mode 100644
index 0000000..9808f49
--- /dev/null
+++ b/test/regress/regress0/quantifiers/is-even-pred.smt2
@@ -0,0 +1,7 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+
+(define-funs-rec ((is-even ((x Int)) Bool) (is-odd ((x Int)) Bool)) ((or (= x 0) (is-odd (- x 1))) (and (not (= x 0)) (is-even (- x 1)))))
+
+(assert (is-even 5))
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/is-even.smt2 b/test/regress/regress0/quantifiers/is-even.smt2
new file mode 100644
index 0000000..9aaac5e
--- /dev/null
+++ b/test/regress/regress0/quantifiers/is-even.smt2
@@ -0,0 +1,7 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+
+(define-funs-rec ((is-even ((x Int)) Int) (is-odd ((y Int)) Int)) ((ite (= x 0) 1 (ite (= (is-odd (- x 1)) 0) 1 0)) (ite (= y 0) 0 (ite (= (is-even (- y 1)) 0) 1 0))))
+
+(assert (= (is-even 4) 0))
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/is-int.smt2 b/test/regress/regress0/quantifiers/is-int.smt2
new file mode 100644
index 0000000..fc7fbb1
--- /dev/null
+++ b/test/regress/regress0/quantifiers/is-int.smt2
@@ -0,0 +1,4 @@
+(set-logic LIRA)
+(set-info :status unsat)
+(assert (forall ((X Real) (Y Real)) (or (not (is_int X)) (not (>= (+ X (* (- (/ 2 3)) Y)) (- (/ 1 6)))) (not (>= (+ (* (- 1) X) (* (- (/ 1 4)) Y)) (- (/ 61 8)))) (not (>= (+ (* (- 1) X) (* (/ 5 2) Y)) 13))) ))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/quantifiers/javafe.ast.StmtVec.009.smt2 b/test/regress/regress0/quantifiers/javafe.ast.StmtVec.009.smt2
new file mode 100644
index 0000000..1c3aa1d
--- /dev/null
+++ b/test/regress/regress0/quantifiers/javafe.ast.StmtVec.009.smt2
@@ -0,0 +1,398 @@
+(set-logic AUFLIA)
+(set-info :source | 
+  Simplify front end test suite.
+  This benchmark was translated by Michal Moskal.
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-fun after_133.8_133.8 () Int)
+(declare-fun integralOr (Int Int) Int)
+(declare-fun els_81.27 () Int)
+(declare-fun arrayShapeMore (Int Int) Int)
+(declare-fun count_150.3 () Int)
+(declare-fun tmp0_cor_166.15 () Int)
+(declare-fun tmp1_elements_179.1 () Int)
+(declare-fun integralAnd (Int Int) Int)
+(declare-fun T_.TYPE () Int)
+(declare-fun EC_167.11_167.11 () Int)
+(declare-fun EC_178.11_178.11 () Int)
+(declare-fun elements_83.6 () Int)
+(declare-fun currentStackBottom_pre_19.87.33 () Int)
+(declare-fun index_164.36 () Int)
+(declare-fun intFirst () Int)
+(declare-fun after_113.8_113.8 () Int)
+(declare-fun elementType_pre_19.43.27 () Int)
+(declare-fun eClosedTime (Int) Int)
+(declare-fun int_m9223372036854775808 () Int)
+(declare-fun RES_167.11_167.11 () Int)
+(declare-fun RES_121.14_121.14 () Int)
+(declare-fun int_m2147483648 () Int)
+(declare-fun T_java.lang.Comparable () Int)
+(declare-fun EC_81.32_81.32 () Int)
+(declare-fun arrayPosition (Int) Int)
+(declare-fun after_81.32_81.32 () Int)
+(declare-fun RES_91.29_91.29 () Int)
+(declare-fun EC_169.20_169.20 () Int)
+(declare-fun after_151.3_151.3_19.296.17 () Int)
+(declare-fun select1 (Int Int) Int)
+(declare-fun select2 (Int Int Int) Int)
+(declare-fun T_java.util.EscjavaKeyValue () Int)
+(declare-fun cnt_91.24 () Int)
+(declare-fun elems_1_ () Int)
+(declare-fun owner_84.18 () Int)
+(declare-fun T_long () Int)
+(declare-fun T_javafe.util.StackVector () Int)
+(declare-fun count_123.8 () Int)
+(declare-fun lockLE (Int Int) Bool)
+(declare-fun classLiteral (Int) Int)
+(declare-fun after_86.8_86.8_9.342.17 () Int)
+(declare-fun elements_61.33 () Int)
+(declare-fun count_82.6 () Int)
+(declare-fun T_java.lang.RuntimeException () Int)
+(declare-fun RES_147.12_147.12 () Int)
+(declare-fun lockLT (Int Int) Bool)
+(declare-fun elems_2_ () Int)
+(declare-fun RES_107.8_107.8 () Int)
+(declare-fun elements_zero () Int)
+(declare-fun T_float () Int)
+(declare-fun elements_19.72.21 () Int)
+(declare-fun alloc () Int)
+(declare-fun RES_122.18_122.18 () Int)
+(declare-fun asChild (Int Int) Int)
+(declare-fun CONCVARSYM (Int) Int)
+(declare-fun T_int () Int)
+(declare-fun int_2147483647 () Int)
+(declare-fun elementCount_pre_19.79.33 () Int)
+(declare-fun int_9223372036854775807 () Int)
+(declare-fun this () Int)
+(declare-fun T_byte () Int)
+(declare-fun T_java.lang.System () Int)
+(declare-fun store1 (Int Int Int) Int)
+(declare-fun store2 (Int Int Int Int) Int)
+(declare-fun RES_148.13_148.13 () Int)
+(declare-fun elementType_12.65.27 () Int)
+(declare-fun owner_pre_4.35.28 () Int)
+(declare-fun containsNull_12.70.29 () Int)
+(declare-fun elements_pre_19.72.21 () Int)
+(declare-fun max (Int) Int)
+(declare-fun currentStackBottom_19.87.33 () Int)
+(declare-fun T_java.util.List () Int)
+(declare-fun objectToBeConstructed () Int)
+(declare-fun T_java.util.Map () Int)
+(declare-fun elementData_10.79.35 () Int)
+(declare-fun EC_91.29_91.29 () Int)
+(declare-fun integralDiv (Int Int) Int)
+(declare-fun after_151.3_151.3_19.298.17 () Int)
+(declare-fun T_java.util.AbstractCollection () Int)
+(declare-fun elems_86.8_9.342.17 () Int)
+(declare-fun T_java.lang.Class () Int)
+(declare-fun obj_169.20_169.20_23.30.38 () Int)
+(declare-fun after_151.3_151.3_19.298.31 () Int)
+(declare-fun vectorCount_19.97.33 () Int)
+(declare-fun T_java.lang.Object () Int)
+(declare-fun tmp1_elements_84.9 () Int)
+(declare-fun tmp1_cond_92.36 () Int)
+(declare-fun RES_178.11_178.11 () Int)
+(declare-fun tmp3_elements_86.25 () Int)
+(declare-fun longLast () Int)
+(declare-fun termConditional (Int Int Int) Int)
+(declare-fun vectorCount_151.3_19.296.17 () Int)
+(declare-fun elements_92.6 () Int)
+(declare-fun T_java.util.Dictionary () Int)
+(declare-fun vec_120.38 () Int)
+(declare-fun elements_pre_61.33 () Int)
+(declare-fun bool_false () Int)
+(declare-fun Smt.true () Int)
+(declare-fun EC_149.3_149.3 () Int)
+(declare-fun asLockSet (Int) Int)
+(declare-fun integralMod (Int Int) Int)
+(declare-fun count_67.33_1_ () Int)
+(declare-fun Smt.false () Int)
+(declare-fun typeof (Int) Int)
+(declare-fun int_18446744073709551615 () Int)
+(declare-fun owner_4.35.28 () Int)
+(declare-fun count_112.35 () Int)
+(declare-fun elementCount_pre_10.90.35 () Int)
+(declare-fun x_175.40 () Int)
+(declare-fun stringCat (Int Int) Int)
+(declare-fun T_java.util.Vector () Int)
+(declare-fun tmp0_cor_177.5 () Int)
+(declare-fun T_boolean () Int)
+(declare-fun longFirst () Int)
+(declare-fun T_java.util.Hashtable () Int)
+(declare-fun T_java.util.Properties () Int)
+(declare-fun after_91.29_91.29 () Int)
+(declare-fun arrayFresh (Int Int Int Int Int Int Int) Bool)
+(declare-fun tmp0_new_Stmt___92.17 () Int)
+(declare-fun RES () Int)
+(declare-fun EC_86.8_86.8 () Int)
+(declare-fun count_95.6 () Int)
+(declare-fun EC_107.8_107.8 () Int)
+(declare-fun elementCount_19.79.33 () Int)
+(declare-fun after_107.8_107.8 () Int)
+(declare-fun intLast () Int)
+(declare-fun arrayType () Int)
+(declare-fun boolEq (Int Int) Bool)
+(declare-fun arrayLength (Int) Int)
+(declare-fun cast (Int Int) Int)
+(declare-fun tmp0_cor_166.5 () Int)
+(declare-fun asElems (Int) Int)
+(declare-fun s_145.71 () Int)
+(declare-fun T_char () Int)
+(declare-fun RES_133.8_133.8 () Int)
+(declare-fun owner_93.18 () Int)
+(declare-fun dst_149.3_149.3_19.228.40 () Int)
+(declare-fun count_pre_67.33 () Int)
+(declare-fun elementType_pre_12.65.27 () Int)
+(declare-fun T_javafe.ast.ASTNode () Int)
+(declare-fun ecThrow () Int)
+(declare-fun elementCount_151.3_19.298.17 () Int)
+(declare-fun divides (Int Int) Int)
+(declare-fun RES_113.8_113.8 () Int)
+(declare-fun length_86.8_86.8_9.360.44 () Int)
+(declare-fun anArray_124.5_124.5_10.188.45 () Int)
+(declare-fun elementType_19.43.27 () Int)
+(declare-fun T_javafe.util.Assert () Int)
+(declare-fun InRange (Int Int) Bool)
+(declare-fun count_67.33 () Int)
+(declare-fun RES_81.32_81.32 () Int)
+(declare-fun tmp0_cor_177.15 () Int)
+(declare-fun elems_149.3_19.225.17 () Int)
+(declare-fun tmp2_elements_93.9 () Int)
+(declare-fun elementData_pre_10.79.35 () Int)
+(declare-fun refEQ (Int Int) Int)
+(declare-fun after_149.3_149.3_19.225.17 () Int)
+(declare-fun is (Int Int) Int)
+(declare-fun index_175.48 () Int)
+(declare-fun vectorCount_pre_19.97.33 () Int)
+(declare-fun integralEQ (Int Int) Int)
+(declare-fun T_java.lang.ArrayIndexOutOfBoundsException () Int)
+(declare-fun containsNull_pre_12.70.29 () Int)
+(declare-fun boolNE (Int Int) Bool)
+(declare-fun isNewArray (Int) Int)
+(declare-fun elems_pre () Int)
+(declare-fun T_javafe.ast.Stmt () Int)
+(declare-fun intShiftL (Int Int) Int)
+(declare-fun nonnullelements (Int Int) Bool)
+(declare-fun T_java.util.AbstractList () Int)
+(declare-fun elementCount_10.90.35 () Int)
+(declare-fun multiply (Int Int) Int)
+(declare-fun integralGE (Int Int) Int)
+(declare-fun T_short () Int)
+(declare-fun EC_151.3_151.3 () Int)
+(declare-fun alloc_pre () Int)
+(declare-fun integralGT (Int Int) Int)
+(declare-fun EC () Int)
+(declare-fun elements_61.33_1_ () Int)
+(declare-fun EC_121.14_121.14 () Int)
+(declare-fun boolAnd (Int Int) Bool)
+(declare-fun EC_113.8_113.8 () Int)
+(declare-fun T_java.util.Collection () Int)
+(declare-fun arrayShapeOne (Int) Int)
+(declare-fun T_double () Int)
+(declare-fun longShiftL (Int Int) Int)
+(declare-fun T_java.io.Serializable () Int)
+(declare-fun boolOr (Int Int) Bool)
+(declare-fun int_4294967295 () Int)
+(declare-fun modulo (Int Int) Int)
+(declare-fun EC_124.5_124.5 () Int)
+(declare-fun T_java.lang.StringBuffer () Int)
+(declare-fun after_122.18_122.18 () Int)
+(declare-fun EC_147.12_147.12 () Int)
+(declare-fun null () Int)
+(declare-fun T_java.lang.Exception () Int)
+(declare-fun T_java.lang.Throwable () Int)
+(declare-fun currentStackBottom_151.3_19.298.31 () Int)
+(declare-fun T_java.lang.String () Int)
+(declare-fun EC_122.18_122.18 () Int)
+(declare-fun asField (Int Int) Int)
+(declare-fun after_148.13_148.13 () Int)
+(declare-fun T_javafe.ast.StmtVec () Int)
+(declare-fun T_java.lang.IndexOutOfBoundsException () Int)
+(declare-fun boolImplies (Int Int) Bool)
+(declare-fun integralLE (Int Int) Int)
+(declare-fun RES_1_ () Int)
+(declare-fun integralLT (Int Int) Int)
+(declare-fun vAllocTime (Int) Int)
+(declare-fun EC_148.13_148.13 () Int)
+(declare-fun T_java.lang.Cloneable () Int)
+(declare-fun boolNot (Int) Bool)
+(declare-fun refNE (Int Int) Int)
+(declare-fun integralXor (Int Int) Int)
+(declare-fun classDown (Int Int) Int)
+(declare-fun els_132.38 () Int)
+(declare-fun integralNE (Int Int) Int)
+(declare-fun arrayParent (Int) Int)
+(declare-fun elemtype (Int) Int)
+(declare-fun fClosedTime (Int) Int)
+(declare-fun alloc_1_ () Int)
+(declare-fun array (Int) Int)
+(declare-fun LS () Int)
+(declare-fun ecReturn () Int)
+(declare-fun isAllocated (Int Int) Bool)
+(declare-fun after_167.11_167.11 () Int)
+(declare-fun after_178.11_178.11 () Int)
+(declare-fun elems () Int)
+(declare-fun subtypes (Int Int) Bool)
+(declare-fun tmp0_new_Stmt___83.17 () Int)
+(declare-fun EC_133.8_133.8 () Int)
+(assert (subtypes T_java.lang.Exception T_java.lang.Throwable))
+(assert (= T_java.lang.Exception (asChild T_java.lang.Exception T_java.lang.Throwable)))
+(assert (subtypes T_javafe.ast.Stmt T_javafe.ast.ASTNode))
+(assert (= T_javafe.ast.Stmt (asChild T_javafe.ast.Stmt T_javafe.ast.ASTNode)))
+(assert (subtypes T_javafe.util.Assert T_java.lang.Object))
+(assert (= T_javafe.util.Assert (asChild T_javafe.util.Assert T_java.lang.Object)))
+(assert (subtypes T_java.util.Properties T_java.util.Hashtable))
+(assert (= T_java.util.Properties (asChild T_java.util.Properties T_java.util.Hashtable)))
+(assert (subtypes T_java.lang.Cloneable T_java.lang.Object))
+(assert (subtypes T_java.lang.IndexOutOfBoundsException T_java.lang.RuntimeException))
+(assert (= T_java.lang.IndexOutOfBoundsException (asChild T_java.lang.IndexOutOfBoundsException T_java.lang.RuntimeException)))
+(assert (subtypes T_java.util.Dictionary T_java.lang.Object))
+(assert (= T_java.util.Dictionary (asChild T_java.util.Dictionary T_java.lang.Object)))
+(assert (subtypes T_java.util.Dictionary T_java.util.EscjavaKeyValue))
+(assert (subtypes T_java.lang.ArrayIndexOutOfBoundsException T_java.lang.IndexOutOfBoundsException))
+(assert (= T_java.lang.ArrayIndexOutOfBoundsException (asChild T_java.lang.ArrayIndexOutOfBoundsException T_java.lang.IndexOutOfBoundsException)))
+(assert (subtypes T_java.util.Map T_java.lang.Object))
+(assert (subtypes T_java.util.Map T_java.util.EscjavaKeyValue))
+(assert (subtypes T_java.io.Serializable T_java.lang.Object))
+(assert (subtypes T_java.lang.StringBuffer T_java.lang.Object))
+(assert (= T_java.lang.StringBuffer (asChild T_java.lang.StringBuffer T_java.lang.Object)))
+(assert (forall ((?t Int)) (! (= (subtypes ?t T_java.lang.StringBuffer) (= ?t T_java.lang.StringBuffer)) :pattern ((subtypes ?t T_java.lang.StringBuffer)) )))
+(assert (subtypes T_java.lang.StringBuffer T_java.io.Serializable))
+(assert (subtypes T_javafe.ast.StmtVec T_java.lang.Object))
+(assert (= T_javafe.ast.StmtVec (asChild T_javafe.ast.StmtVec T_java.lang.Object)))
+(assert (subtypes T_java.util.AbstractCollection T_java.lang.Object))
+(assert (= T_java.util.AbstractCollection (asChild T_java.util.AbstractCollection T_java.lang.Object)))
+(assert (subtypes T_java.util.AbstractCollection T_java.util.Collection))
+(assert (subtypes T_java.util.Vector T_java.util.AbstractList))
+(assert (= T_java.util.Vector (asChild T_java.util.Vector T_java.util.AbstractList)))
+(assert (subtypes T_java.util.Vector T_java.util.List))
+(assert (subtypes T_java.util.Vector T_java.lang.Cloneable))
+(assert (subtypes T_java.util.Vector T_java.io.Serializable))
+(assert (subtypes T_java.util.Hashtable T_java.util.Dictionary))
+(assert (= T_java.util.Hashtable (asChild T_java.util.Hashtable T_java.util.Dictionary)))
+(assert (subtypes T_java.util.Hashtable T_java.util.Map))
+(assert (subtypes T_java.util.Hashtable T_java.lang.Cloneable))
+(assert (subtypes T_java.util.Hashtable T_java.io.Serializable))
+(assert (subtypes T_java.lang.System T_java.lang.Object))
+(assert (= T_java.lang.System (asChild T_java.lang.System T_java.lang.Object)))
+(assert (forall ((?t Int)) (! (= (subtypes ?t T_java.lang.System) (= ?t T_java.lang.System)) :pattern ((subtypes ?t T_java.lang.System)) )))
+(assert (subtypes T_javafe.util.StackVector T_java.lang.Object))
+(assert (= T_javafe.util.StackVector (asChild T_javafe.util.StackVector T_java.lang.Object)))
+(assert (forall ((?t Int)) (! (= (subtypes ?t T_javafe.util.StackVector) (= ?t T_javafe.util.StackVector)) :pattern ((subtypes ?t T_javafe.util.StackVector)) )))
+(assert (subtypes T_java.lang.String T_java.lang.Object))
+(assert (= T_java.lang.String (asChild T_java.lang.String T_java.lang.Object)))
+(assert (forall ((?t Int)) (! (= (subtypes ?t T_java.lang.String) (= ?t T_java.lang.String)) :pattern ((subtypes ?t T_java.lang.String)) )))
+(assert (subtypes T_java.lang.String T_java.io.Serializable))
+(assert (subtypes T_java.lang.String T_java.lang.Comparable))
+(assert (subtypes T_java.util.AbstractList T_java.util.AbstractCollection))
+(assert (= T_java.util.AbstractList (asChild T_java.util.AbstractList T_java.util.AbstractCollection)))
+(assert (subtypes T_java.util.AbstractList T_java.util.List))
+(assert (subtypes T_java.util.List T_java.lang.Object))
+(assert (subtypes T_java.util.List T_java.util.Collection))
+(assert (subtypes T_java.lang.Throwable T_java.lang.Object))
+(assert (= T_java.lang.Throwable (asChild T_java.lang.Throwable T_java.lang.Object)))
+(assert (subtypes T_java.lang.Throwable T_java.io.Serializable))
+(assert (subtypes T_java.util.Collection T_java.lang.Object))
+(assert (subtypes T_java.lang.RuntimeException T_java.lang.Exception))
+(assert (= T_java.lang.RuntimeException (asChild T_java.lang.RuntimeException T_java.lang.Exception)))
+(assert (subtypes T_java.util.EscjavaKeyValue T_java.lang.Object))
+(assert (subtypes T_java.lang.Comparable T_java.lang.Object))
+(assert (subtypes T_javafe.ast.ASTNode T_java.lang.Object))
+(assert (= T_javafe.ast.ASTNode (asChild T_javafe.ast.ASTNode T_java.lang.Object)))
+(assert (subtypes T_javafe.ast.ASTNode T_java.lang.Cloneable))
+(assert (distinct arrayType T_boolean T_char T_byte T_short T_int T_long T_float T_double T_.TYPE T_java.lang.Exception T_javafe.ast.Stmt T_javafe.util.Assert T_java.util.Properties T_java.lang.Cloneable T_java.lang.IndexOutOfBoundsException T_java.util.Dictionary T_java.lang.ArrayIndexOutOfBoundsException T_java.util.Map T_java.io.Serializable T_java.lang.StringBuffer T_javafe.ast.StmtVec T_java.util.AbstractCollection T_java.util.Vector T_java.util.Hashtable T_java.lang.System T_javafe [...]
+(assert (forall ((?n Int)) (! (=> (and (<= 0 ?n) (< ?n 63)) (<= 1 (longShiftL 1 ?n))) :pattern ((longShiftL 1 ?n)) )))
+(assert (forall ((?n Int)) (! (=> (and (<= 0 ?n) (< ?n 31)) (<= 1 (intShiftL 1 ?n))) :pattern ((intShiftL 1 ?n)) )))
+(assert (forall ((?x Int) (?y Int)) (! (=> (and (<= 0 ?x) (<= 0 ?y)) (<= 0 (integralXor ?x ?y))) :pattern ((integralXor ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (let ((?v_0 (integralDiv ?x ?y))) (=> (and (<= 0 ?x) (< 0 ?y)) (and (<= 0 ?v_0) (<= ?v_0 ?x)))) :pattern ((integralDiv ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (let ((?v_0 (integralOr ?x ?y))) (=> (and (<= 0 ?x) (<= 0 ?y)) (and (<= ?x ?v_0) (<= ?y ?v_0)))) :pattern ((integralOr ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (=> (<= 0 ?y) (<= (integralAnd ?x ?y) ?y)) :pattern ((integralAnd ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (=> (<= 0 ?x) (<= (integralAnd ?x ?y) ?x)) :pattern ((integralAnd ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (=> (or (<= 0 ?x) (<= 0 ?y)) (<= 0 (integralAnd ?x ?y))) :pattern ((integralAnd ?x ?y)) )))
+(assert (forall ((?t Int)) (! (let ((?v_0 (classLiteral ?t))) (and (not (= ?v_0 null)) (= Smt.true (is ?v_0 T_java.lang.Class)) (isAllocated ?v_0 alloc))) :pattern ((classLiteral ?t)) )))
+(assert (forall ((?x Int) (?e Int)) (= (nonnullelements ?x ?e) (and (not (= ?x null)) (forall ((?i Int)) (=> (and (<= 0 ?i) (< ?i (arrayLength ?x))) (not (= (select1 (select1 ?e ?x) ?i) null))))))))
+(assert (forall ((?b Int) (?x Int) (?y Int)) (! (=> (not (= ?b Smt.true)) (= (termConditional ?b ?x ?y) ?y)) :pattern ((termConditional ?b ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (termConditional Smt.true ?x ?y) ?x) :pattern ((termConditional Smt.true ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (refNE ?x ?y) Smt.true) (not (= ?x ?y))) :pattern ((refNE ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (refEQ ?x ?y) Smt.true) (= ?x ?y)) :pattern ((refEQ ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (integralNE ?x ?y) Smt.true) (not (= ?x ?y))) :pattern ((integralNE ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (integralLT ?x ?y) Smt.true) (< ?x ?y)) :pattern ((integralLT ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (integralLE ?x ?y) Smt.true) (<= ?x ?y)) :pattern ((integralLE ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (integralGT ?x ?y) Smt.true) (> ?x ?y)) :pattern ((integralGT ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (integralGE ?x ?y) Smt.true) (>= ?x ?y)) :pattern ((integralGE ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (let ((?v_0 (stringCat ?x ?y))) (and (not (= ?v_0 null)) (subtypes (typeof ?v_0) T_java.lang.String))) :pattern ((stringCat ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (integralEQ ?x ?y) Smt.true) (= ?x ?y)) :pattern ((integralEQ ?x ?y)) )))
+(assert (forall ((?a Int) (?b Int)) (= (boolOr ?a ?b) (or (= ?a Smt.true) (= ?b Smt.true)))))
+(assert (forall ((?a Int)) (= (boolNot ?a) (not (= ?a Smt.true)))))
+(assert (forall ((?a Int) (?b Int)) (= (boolNE ?a ?b) (not (= (= ?a Smt.true) (= ?b Smt.true))))))
+(assert (forall ((?a Int) (?b Int)) (= (boolImplies ?a ?b) (=> (= ?a Smt.true) (= ?b Smt.true)))))
+(assert (forall ((?a Int) (?b Int)) (= (boolEq ?a ?b) (= (= ?a Smt.true) (= ?b Smt.true)))))
+(assert (forall ((?a Int) (?b Int)) (= (boolAnd ?a ?b) (and (= ?a Smt.true) (= ?b Smt.true)))))
+(assert (forall ((?x Int) (?y Int)) (let ((?v_0 (multiply ?x ?y))) (= (multiply (integralDiv ?v_0 ?y) ?y) ?v_0))))
+(assert (forall ((?i Int) (?j Int)) (= (integralMod (+ ?j ?i) ?j) (integralMod ?i ?j))))
+(assert (forall ((?i Int) (?j Int)) (= (integralMod (+ ?i ?j) ?j) (integralMod ?i ?j))))
+(assert (forall ((?i Int) (?j Int)) (! (let ((?v_0 (integralMod ?i ?j))) (=> (< ?j 0) (and (< ?j ?v_0) (<= ?v_0 0)))) :pattern ((integralMod ?i ?j)) )))
+(assert (forall ((?i Int) (?j Int)) (! (let ((?v_0 (integralMod ?i ?j))) (=> (< 0 ?j) (and (<= 0 ?v_0) (< ?v_0 ?j)))) :pattern ((integralMod ?i ?j)) )))
+(assert (forall ((?i Int) (?j Int)) (! (= (+ (multiply (integralDiv ?i ?j) ?j) (integralMod ?i ?j)) ?i) :pattern ((integralMod ?i ?j))  :pattern ((integralDiv ?i ?j)) )))
+(assert (forall ((?s Int)) (! (=> (= Smt.true (isNewArray ?s)) (subtypes (typeof ?s) arrayType)) :pattern ((isNewArray ?s)) )))
+(assert (forall ((?t Int)) (! (subtypes (array ?t) arrayType) :pattern ((array ?t)) )))
+(assert (= arrayType (asChild arrayType T_java.lang.Object)))
+(assert (forall ((?a Int) (?a0 Int) (?b0 Int) (?e Int) (?n Int) (?T Int) (?v Int)) (! (= (arrayFresh ?a ?a0 ?b0 ?e (arrayShapeOne ?n) ?T ?v) (and (<= ?a0 (vAllocTime ?a)) (isAllocated ?a ?b0) (not (= ?a null)) (= (typeof ?a) ?T) (= (arrayLength ?a) ?n) (forall ((?i Int)) (! (= (select1 (select1 ?e ?a) ?i) ?v) :pattern ((select1 (select1 ?e ?a) ?i)) )))) :pattern ((arrayFresh ?a ?a0 ?b0 ?e (arrayShapeOne ?n) ?T ?v)) )))
+(assert (forall ((?a Int) (?a0 Int) (?b0 Int) (?e Int) (?n Int) (?s Int) (?T Int) (?v Int)) (! (= (arrayFresh ?a ?a0 ?b0 ?e (arrayShapeMore ?n ?s) ?T ?v) (and (<= ?a0 (vAllocTime ?a)) (isAllocated ?a ?b0) (not (= ?a null)) (= (typeof ?a) ?T) (= (arrayLength ?a) ?n) (forall ((?i Int)) (! (let ((?v_0 (select1 (select1 ?e ?a) ?i))) (and (arrayFresh ?v_0 ?a0 ?b0 ?e ?s (elemtype ?T) ?v) (= (arrayParent ?v_0) ?a) (= (arrayPosition ?v_0) ?i))) :pattern ((select1 (select1 ?e ?a) ?i)) )))) :patte [...]
+(assert (forall ((?a Int)) (! (let ((?v_0 (arrayLength ?a))) (and (<= 0 ?v_0) (= Smt.true (is ?v_0 T_int)))) :pattern ((arrayLength ?a)) )))
+(assert (forall ((?x Int)) (! (=> (subtypes (typeof ?x) T_java.lang.Object) (lockLE null ?x)) :pattern ((lockLE null ?x))  :pattern ((lockLT null ?x))  :pattern ((lockLE ?x null))  :pattern ((lockLT ?x null)) )))
+(assert (forall ((?S Int) (?mu Int)) (let ((?v_0 (asLockSet ?S))) (=> (= (select1 ?v_0 ?mu) Smt.true) (lockLE ?mu (max ?v_0))))))
+(assert (forall ((?x Int) (?y Int)) (= (lockLT ?x ?y) (< ?x ?y))))
+(assert (forall ((?x Int) (?y Int)) (= (lockLE ?x ?y) (<= ?x ?y))))
+(assert (forall ((?S Int)) (! (= (select1 (asLockSet ?S) null) Smt.true) :pattern ((asLockSet ?S)) )))
+(assert (forall ((?S Int)) (let ((?v_0 (asLockSet ?S))) (= (select1 ?v_0 (max ?v_0)) Smt.true))))
+(assert (forall ((?a Int) (?e Int) (?i Int) (?a0 Int)) (! (=> (and (< (eClosedTime ?e) ?a0) (isAllocated ?a ?a0)) (isAllocated (select1 (select1 ?e ?a) ?i) ?a0)) :pattern ((isAllocated (select1 (select1 ?e ?a) ?i) ?a0)) )))
+(assert (forall ((?x Int) (?f Int) (?a0 Int)) (! (=> (and (< (fClosedTime ?f) ?a0) (isAllocated ?x ?a0)) (isAllocated (select1 ?f ?x) ?a0)) :pattern ((isAllocated (select1 ?f ?x) ?a0)) )))
+(assert (forall ((?x Int) (?a0 Int)) (= (isAllocated ?x ?a0) (< (vAllocTime ?x) ?a0))))
+(assert (forall ((?e Int) (?a Int) (?i Int)) (! (= Smt.true (is (select1 (select1 (asElems ?e) ?a) ?i) (elemtype (typeof ?a)))) :pattern ((select1 (select1 (asElems ?e) ?a) ?i)) )))
+(assert (forall ((?f Int) (?t Int) (?x Int)) (! (= Smt.true (is (select1 (asField ?f ?t) ?x) ?t)) :pattern ((select1 (asField ?f ?t) ?x)) )))
+(assert (forall ((?x Int) (?t Int)) (! (=> (subtypes ?t T_java.lang.Object) (= (= Smt.true (is ?x ?t)) (or (= ?x null) (subtypes (typeof ?x) ?t)))) :pattern ((subtypes ?t T_java.lang.Object) (is ?x ?t)) )))
+(assert (< intLast longLast))
+(assert (< 1000000 intLast))
+(assert (< intFirst (- 1000000)))
+(assert (< longFirst intFirst))
+(assert (forall ((?x Int)) (! (= (= Smt.true (is ?x T_long)) (and (<= longFirst ?x) (<= ?x longLast))) :pattern ((is ?x T_long)) )))
+(assert (forall ((?x Int)) (! (= (= Smt.true (is ?x T_int)) (and (<= intFirst ?x) (<= ?x intLast))) :pattern ((is ?x T_int)) )))
+(assert (forall ((?x Int)) (= (= Smt.true (is ?x T_short)) (and (<= (- 32768) ?x) (<= ?x 32767)))))
+(assert (forall ((?x Int)) (= (= Smt.true (is ?x T_byte)) (and (<= (- 128) ?x) (<= ?x 127)))))
+(assert (forall ((?x Int)) (! (= (= Smt.true (is ?x T_char)) (and (<= 0 ?x) (<= ?x 65535))) :pattern ((is ?x T_char)) )))
+(assert (distinct bool_false Smt.true))
+(assert (forall ((?x Int) (?t Int)) (! (=> (= Smt.true (is ?x ?t)) (= (cast ?x ?t) ?x)) :pattern ((cast ?x ?t)) )))
+(assert (forall ((?x Int) (?t Int)) (! (= Smt.true (is (cast ?x ?t) ?t)) :pattern ((cast ?x ?t)) )))
+(assert (forall ((?t0 Int) (?t1 Int)) (! (let ((?v_0 (elemtype ?t0))) (= (subtypes ?t0 (array ?t1)) (and (= ?t0 (array ?v_0)) (subtypes ?v_0 ?t1)))) :pattern ((subtypes ?t0 (array ?t1))) )))
+(assert (forall ((?t Int)) (! (= (elemtype (array ?t)) ?t) :pattern ((elemtype (array ?t))) )))
+(assert (forall ((?t Int)) (! (subtypes (array ?t) T_java.lang.Cloneable) :pattern ((array ?t)) )))
+(assert (subtypes T_java.lang.Cloneable T_java.lang.Object))
+(assert (forall ((?t0 Int) (?t1 Int) (?t2 Int)) (let ((?v_0 (asChild ?t1 ?t2))) (=> (subtypes ?t0 ?v_0) (= (classDown ?t2 ?t0) ?v_0)))))
+(assert (forall ((?t Int)) (! (=> (subtypes T_double ?t) (= ?t T_double)) :pattern ((subtypes T_double ?t)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes T_float ?t) (= ?t T_float)) :pattern ((subtypes T_float ?t)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes T_long ?t) (= ?t T_long)) :pattern ((subtypes T_long ?t)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes T_int ?t) (= ?t T_int)) :pattern ((subtypes T_int ?t)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes T_short ?t) (= ?t T_short)) :pattern ((subtypes T_short ?t)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes T_byte ?t) (= ?t T_byte)) :pattern ((subtypes T_byte ?t)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes T_char ?t) (= ?t T_char)) :pattern ((subtypes T_char ?t)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes T_boolean ?t) (= ?t T_boolean)) :pattern ((subtypes T_boolean ?t)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes ?t T_double) (= ?t T_double)) :pattern ((subtypes ?t T_double)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes ?t T_float) (= ?t T_float)) :pattern ((subtypes ?t T_float)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes ?t T_long) (= ?t T_long)) :pattern ((subtypes ?t T_long)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes ?t T_int) (= ?t T_int)) :pattern ((subtypes ?t T_int)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes ?t T_short) (= ?t T_short)) :pattern ((subtypes ?t T_short)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes ?t T_byte) (= ?t T_byte)) :pattern ((subtypes ?t T_byte)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes ?t T_char) (= ?t T_char)) :pattern ((subtypes ?t T_char)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes ?t T_boolean) (= ?t T_boolean)) :pattern ((subtypes ?t T_boolean)) )))
+(assert (forall ((?t0 Int) (?t1 Int)) (! (=> (and (subtypes ?t0 ?t1) (subtypes ?t1 ?t0)) (= ?t0 ?t1)) :pattern ((subtypes ?t0 ?t1) (subtypes ?t1 ?t0)) )))
+(assert (forall ((?t0 Int) (?t1 Int) (?t2 Int)) (! (=> (and (subtypes ?t0 ?t1) (subtypes ?t1 ?t2)) (subtypes ?t0 ?t2)) :pattern ((subtypes ?t0 ?t1) (subtypes ?t1 ?t2)) )))
+(assert (subtypes T_java.lang.Object T_java.lang.Object))
+(assert (forall ((?t Int)) (! (subtypes ?t ?t) :pattern ((subtypes ?t ?t)) )))
+(assert (forall ((?m Int) (?i Int) (?j Int) (?x Int)) (=> (not (= ?i ?j)) (= (select1 (store1 ?m ?i ?x) ?j) (select1 ?m ?j)))))
+(assert (forall ((?m Int) (?i Int) (?x Int)) (= (select1 (store1 ?m ?i ?x) ?i) ?x)))
+(assert (let ((?v_0 (array T_java.lang.Object)) (?v_6 (<= 0 index_175.48)) (?v_2 (select1 count_67.33 this)) (?v_1 (< index_175.48 0)) (?v_3 (= Smt.true Smt.true))) (let ((?v_8 (or (and ?v_1 ?v_3 (= tmp0_cor_177.15 Smt.true)) (and (not ?v_1) (= tmp0_cor_177.5 (integralGE index_175.48 ?v_2)) (= tmp0_cor_177.15 tmp0_cor_177.5)))) (?v_5 (= Smt.true tmp0_cor_177.15)) (?v_12 (< alloc after_178.11_178.11)) (?v_4 (not (= RES_178.11_178.11 null))) (?v_13 (not (isAllocated RES_178.11_178.11 alloc [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/macro-subtype-param.smt2 b/test/regress/regress0/quantifiers/macro-subtype-param.smt2
new file mode 100644
index 0000000..20de790
--- /dev/null
+++ b/test/regress/regress0/quantifiers/macro-subtype-param.smt2
@@ -0,0 +1,18 @@
+; COMMAND-LINE: --macros-quant
+; EXPECT: unknown
+; this will fail if type rule for APPLY_UF requires to be subtypes
+(set-logic ALL_SUPPORTED)
+
+(declare-datatypes (T) ((List (cons (hd T) (tl (List T))) (nil))))
+
+(declare-fun R ((List Int)) Bool)
+(assert (forall ((x (List Int))) (R x)))
+(declare-fun j1 () (List Real))
+(assert (not (R j1)))
+
+(declare-fun Q ((Array Real Int)) Bool)
+(assert (forall ((x (Array Real Int))) (Q x)))
+(declare-fun j2 () (Array Int Real))
+(assert (not (Q j2)))
+
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/macros-int-real.smt2 b/test/regress/regress0/quantifiers/macros-int-real.smt2
new file mode 100644
index 0000000..d29ddfe
--- /dev/null
+++ b/test/regress/regress0/quantifiers/macros-int-real.smt2
@@ -0,0 +1,9 @@
+; COMMAND-LINE: --macros-quant
+; EXPECT: unknown
+(set-logic AUFLIRA)
+
+(declare-fun round2 (Real) Int)
+(assert (forall ((i Int))  (= (round2 (to_real i)) i)))
+
+(assert (= (round2 1.5) 1))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/quantifiers/macros-real-arg.smt2 b/test/regress/regress0/quantifiers/macros-real-arg.smt2
new file mode 100644
index 0000000..675c96d
--- /dev/null
+++ b/test/regress/regress0/quantifiers/macros-real-arg.smt2
@@ -0,0 +1,11 @@
+; COMMAND-LINE: --macros-quant
+; EXPECT: unsat
+; this will fail if type rule for APPLY_UF is made strict
+(set-logic UFLIRA)
+(declare-fun P (Int) Bool)
+(assert (forall ((x Int)) (P x)))
+(declare-fun k () Real)
+(declare-fun k2 () Int)
+(assert (or (not (P k)) (not (P k2))))
+(assert (= k 0))
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/matching-lia-1arg.smt2 b/test/regress/regress0/quantifiers/matching-lia-1arg.smt2
new file mode 100644
index 0000000..aaf9b2c
--- /dev/null
+++ b/test/regress/regress0/quantifiers/matching-lia-1arg.smt2
@@ -0,0 +1,8 @@
+; COMMAND-LINE: --purify-triggers
+; EXPECT: unsat
+(set-logic ALL_SUPPORTED)
+(declare-fun P (Int) Bool)
+(assert (forall ((x Int)) (P (* 2 x))))
+(assert (not (P 38)))
+(check-sat)
+
diff --git a/test/regress/regress0/quantifiers/mix-coeff.smt2 b/test/regress/regress0/quantifiers/mix-coeff.smt2
new file mode 100644
index 0000000..a20867b
--- /dev/null
+++ b/test/regress/regress0/quantifiers/mix-coeff.smt2
@@ -0,0 +1,4 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(assert (forall ((x Int) (y Int) (a Real) (z Int)) (or (> x (+ a (* (/ 2 3) y) (* (/ 4 5) z))) (< x (+ 10 (* 3 a) (* (/ 2 5) y) (* (/ 4 7) z))))))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/quantifiers/mix-complete-strat.smt2 b/test/regress/regress0/quantifiers/mix-complete-strat.smt2
new file mode 100644
index 0000000..c2209f6
--- /dev/null
+++ b/test/regress/regress0/quantifiers/mix-complete-strat.smt2
@@ -0,0 +1,18 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+(set-logic UFLIA)
+(set-info :status sat)
+
+(declare-sort U 0)
+(declare-fun P (U) Bool)
+
+(assert (forall ((x U)) (P x)))
+
+(declare-fun u () U)
+(assert (P u))
+
+(declare-const a Int)
+(declare-const b Int)
+(assert (forall ((x Int)) (or (> x a) (< x b))))
+
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/mix-match.smt2 b/test/regress/regress0/quantifiers/mix-match.smt2
new file mode 100644
index 0000000..c6ac3b5
--- /dev/null
+++ b/test/regress/regress0/quantifiers/mix-match.smt2
@@ -0,0 +1,10 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-fun P (Real) Bool)
+(assert (forall ((x Int)) (P x)))
+
+(declare-fun a () Real)
+(assert (is_int a))
+(assert (not (P a)))
+
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/quantifiers/mix-simp.smt2 b/test/regress/regress0/quantifiers/mix-simp.smt2
new file mode 100644
index 0000000..0b8c506
--- /dev/null
+++ b/test/regress/regress0/quantifiers/mix-simp.smt2
@@ -0,0 +1,4 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(assert (forall ((x Real)) (exists ((y Int)) (and (>= y x) (< y (+ x 1))))))
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/nested-delta.smt2 b/test/regress/regress0/quantifiers/nested-delta.smt2
new file mode 100644
index 0000000..9352f04
--- /dev/null
+++ b/test/regress/regress0/quantifiers/nested-delta.smt2
@@ -0,0 +1,6 @@
+; COMMAND-LINE: --cbqi-recurse
+; EXPECT: sat
+(set-logic LRA)
+(set-info :status sat)
+(assert (forall ((x Real)) (or (exists ((y Real)) (and (< y 0) (< y x))) (<= x 0))))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/quantifiers/nested-inf.smt2 b/test/regress/regress0/quantifiers/nested-inf.smt2
new file mode 100644
index 0000000..f27a876
--- /dev/null
+++ b/test/regress/regress0/quantifiers/nested-inf.smt2
@@ -0,0 +1,6 @@
+; COMMAND-LINE: --cbqi-recurse
+; EXPECT: sat
+(set-logic LRA)
+(set-info :status sat)
+(assert (forall ((x Real)) (exists ((y Real)) (> y x))))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/quantifiers/opisavailable-12.smt2 b/test/regress/regress0/quantifiers/opisavailable-12.smt2
new file mode 100644
index 0000000..c529b40
--- /dev/null
+++ b/test/regress/regress0/quantifiers/opisavailable-12.smt2
@@ -0,0 +1,276 @@
+(set-logic AUFLIA)
+(set-info :source |
+      Tokeneer case study <http://www.adacore.com/home/products/gnatpro/tokeneer/>
+  |)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-fun field.datat.length () Int)
+(declare-fun field.datat.minmatchlength () Int)
+(declare-fun field.datat.text () Int)
+(declare-fun field.keyboard__datat.length () Int)
+(declare-fun field.keyboard__datat.text () Int)
+(declare-fun field.t.rolepresent () Int)
+(declare-fun field.t.currentop () Int)
+(declare-fun archivelog () Int)
+(declare-fun character__base__first () Int)
+(declare-fun character__base__last () Int)
+(declare-fun character__first () Int)
+(declare-fun character__last () Int)
+(declare-fun character__size () Int)
+(declare-fun datai__base__first () Int)
+(declare-fun datai__base__last () Int)
+(declare-fun datai__first () Int)
+(declare-fun datai__last () Int)
+(declare-fun datai__size () Int)
+(declare-fun datalengtht__base__first () Int)
+(declare-fun datalengtht__base__last () Int)
+(declare-fun datalengtht__first () Int)
+(declare-fun datalengtht__last () Int)
+(declare-fun datalengtht__size () Int)
+(declare-fun integer__base__first () Int)
+(declare-fun integer__base__last () Int)
+(declare-fun integer__first () Int)
+(declare-fun integer__last () Int)
+(declare-fun integer__size () Int)
+(declare-fun isavailable () Int)
+(declare-fun keyboard__datai__base__first () Int)
+(declare-fun keyboard__datai__base__last () Int)
+(declare-fun keyboard__datai__first () Int)
+(declare-fun keyboard__datai__last () Int)
+(declare-fun keyboard__datai__size () Int)
+(declare-fun keyboard__datalengtht__base__first () Int)
+(declare-fun keyboard__datalengtht__base__last () Int)
+(declare-fun keyboard__datalengtht__first () Int)
+(declare-fun keyboard__datalengtht__last () Int)
+(declare-fun keyboard__datalengtht__size () Int)
+(declare-fun null__string () Int)
+(declare-fun nullop () Int)
+(declare-fun opandnullt__base__first () Int)
+(declare-fun opandnullt__base__last () Int)
+(declare-fun opandnullt__first () Int)
+(declare-fun opandnullt__last () Int)
+(declare-fun opandnullt__size () Int)
+(declare-fun opt__base__first () Int)
+(declare-fun opt__base__last () Int)
+(declare-fun opt__first () Int)
+(declare-fun opt__last () Int)
+(declare-fun opt__size () Int)
+(declare-fun optokeyed () Int)
+(declare-fun overridelock () Int)
+(declare-fun positive__base__first () Int)
+(declare-fun positive__base__last () Int)
+(declare-fun positive__first () Int)
+(declare-fun positive__last () Int)
+(declare-fun positive__size () Int)
+(declare-fun privtypes__adminprivileget__base__first () Int)
+(declare-fun privtypes__adminprivileget__base__last () Int)
+(declare-fun privtypes__adminprivileget__first () Int)
+(declare-fun privtypes__adminprivileget__last () Int)
+(declare-fun privtypes__adminprivileget__size () Int)
+(declare-fun privtypes__auditmanager () Int)
+(declare-fun privtypes__guard () Int)
+(declare-fun privtypes__privileget__base__first () Int)
+(declare-fun privtypes__privileget__base__last () Int)
+(declare-fun privtypes__privileget__first () Int)
+(declare-fun privtypes__privileget__last () Int)
+(declare-fun privtypes__privileget__size () Int)
+(declare-fun privtypes__securityofficer () Int)
+(declare-fun privtypes__useronly () Int)
+(declare-fun shutdownop () Int)
+(declare-fun updateconfigdata () Int)
+(declare-fun keyedop () Int)
+(declare-fun keyedop__entry__loop__2 () Int)
+(declare-fun init.keyedop__entry__loop__2 () Int)
+(declare-fun init.keyedop () Int)
+(declare-fun loop__1__op () Int)
+(declare-fun init.loop__1__op () Int)
+(declare-fun loop__2__i () Int)
+(declare-fun init.loop__2__i () Int)
+(declare-fun theadmin () Int)
+(declare-fun init.theadmin () Int)
+(declare-fun theop () Int)
+(declare-fun init.theop () Int)
+(declare-fun bit__and (Int Int) Int)
+(declare-fun bit__not (Int Int) Int)
+(declare-fun bit__or (Int Int) Int)
+(declare-fun bit__xor (Int Int) Int)
+(declare-fun character__pos (Int) Int)
+(declare-fun character__val (Int) Int)
+(declare-fun integer__pred (Int) Int)
+(declare-fun integer__succ (Int) Int)
+(declare-fun opandnullt__pos (Int) Int)
+(declare-fun opandnullt__pred (Int) Int)
+(declare-fun opandnullt__succ (Int) Int)
+(declare-fun opandnullt__val (Int) Int)
+(declare-fun privtypes__privileget__pos (Int) Int)
+(declare-fun privtypes__privileget__pred (Int) Int)
+(declare-fun privtypes__privileget__succ (Int) Int)
+(declare-fun privtypes__privileget__val (Int) Int)
+(declare-fun round__ (Int) Int)
+(declare-fun i.div (Int Int) Int)
+(declare-fun i.mod (Int Int) Int)
+(declare-fun i.mult (Int Int) Int)
+(declare-fun i.exp (Int Int) Int)
+(declare-fun tm.true () Int)
+(declare-fun tm.false () Int)
+(declare-fun tm.not (Int) Int)
+(declare-fun tm.and (Int Int) Int)
+(declare-fun tm.or (Int Int) Int)
+(declare-fun tm.iff (Int Int) Int)
+(declare-fun tm.eq (Int Int) Int)
+(declare-fun tm.ne (Int Int) Int)
+(declare-fun tm.lt (Int Int) Int)
+(declare-fun tm.le (Int Int) Int)
+(declare-fun tuple.2 (Int Int) Int)
+(declare-fun a.store (Int Int Int) Int)
+(declare-fun a.select (Int Int) Int)
+(declare-fun a.mk_const_array (Int) Int)
+(declare-fun a.default_array () Int)
+(declare-fun r.default_record () Int)
+(declare-fun matched () Bool)
+(declare-fun init.matched () Bool)
+(declare-fun ispresent (Int) Bool)
+(declare-fun opandnullt__LE (Int Int) Bool)
+(declare-fun opandnullt__LT (Int Int) Bool)
+(declare-fun privtypes__privileget__LE (Int Int) Bool)
+(declare-fun privtypes__privileget__LT (Int Int) Bool)
+(assert (forall ((?i Int)) (=> (and (<= 0 ?i) (< ?i 4)) (= (privtypes__privileget__pos ?i) ?i))))
+(assert (forall ((?i Int)) (=> (and (<= 0 ?i) (< ?i 4)) (= (privtypes__privileget__val ?i) ?i))))
+(assert (forall ((?i Int)) (=> (and (<= 0 ?i) (< ?i 3)) (= (privtypes__privileget__succ ?i) (+ ?i 1)))))
+(assert (forall ((?i Int)) (=> (and (<= 1 ?i) (< ?i 4)) (= (privtypes__privileget__pred ?i) (- ?i 1)))))
+(assert (= privtypes__useronly 0))
+(assert (= privtypes__guard 1))
+(assert (= privtypes__auditmanager 2))
+(assert (= privtypes__securityofficer 3))
+(assert (forall ((?i Int)) (=> (and (<= 0 ?i) (< ?i 5)) (= (opandnullt__pos ?i) ?i))))
+(assert (forall ((?i Int)) (=> (and (<= 0 ?i) (< ?i 5)) (= (opandnullt__val ?i) ?i))))
+(assert (forall ((?i Int)) (=> (and (<= 0 ?i) (< ?i 4)) (= (opandnullt__succ ?i) (+ ?i 1)))))
+(assert (forall ((?i Int)) (=> (and (<= 1 ?i) (< ?i 5)) (= (opandnullt__pred ?i) (- ?i 1)))))
+(assert (= nullop 0))
+(assert (= archivelog 1))
+(assert (= updateconfigdata 2))
+(assert (= overridelock 3))
+(assert (= shutdownop 4))
+(assert (forall ((?I Int)) (=> (and (<= archivelog ?I) (<= ?I shutdownop)) (<= datalengtht__first (a.select (a.select optokeyed ?I) field.datat.length)))))
+(assert (forall ((?I Int)) (=> (and (<= archivelog ?I) (<= ?I shutdownop)) (<= (a.select (a.select optokeyed ?I) field.datat.length) datalengtht__last))))
+(assert (forall ((?I Int)) (=> (and (<= archivelog ?I) (<= ?I shutdownop)) (<= datai__first (a.select (a.select optokeyed ?I) field.datat.minmatchlength)))))
+(assert (forall ((?I Int)) (=> (and (<= archivelog ?I) (<= ?I shutdownop)) (<= (a.select (a.select optokeyed ?I) field.datat.minmatchlength) datai__last))))
+(assert (forall ((?I Int) (?J Int)) (=> (and (<= archivelog ?I) (<= ?I shutdownop) (<= 1 ?J) (<= ?J 18)) (<= character__first (a.select (a.select (a.select optokeyed ?I) field.datat.text) ?J)))))
+(assert (forall ((?I Int) (?J Int)) (=> (and (<= archivelog ?I) (<= ?I shutdownop) (<= 1 ?J) (<= ?J 18)) (<= (a.select (a.select (a.select optokeyed ?I) field.datat.text) ?J) character__last))))
+(assert (<= 0 integer__size))
+(assert (= integer__first (- 2147483648)))
+(assert (= integer__last 2147483647))
+(assert (= integer__base__first (- 2147483648)))
+(assert (= integer__base__last 2147483647))
+(assert (<= 0 character__size))
+(assert (= character__first 0))
+(assert (= character__last 255))
+(assert (= character__base__first 0))
+(assert (= character__base__last 255))
+(assert (<= 0 positive__size))
+(assert (= positive__first 1))
+(assert (= positive__last 2147483647))
+(assert (= positive__base__first (- 2147483648)))
+(assert (= positive__base__last 2147483647))
+(assert (<= 0 privtypes__privileget__size))
+(assert (= privtypes__privileget__first privtypes__useronly))
+(assert (= privtypes__privileget__last privtypes__securityofficer))
+(assert (= privtypes__privileget__base__first privtypes__useronly))
+(assert (= privtypes__privileget__base__last privtypes__securityofficer))
+(assert (<= 0 privtypes__adminprivileget__size))
+(assert (= privtypes__adminprivileget__first privtypes__guard))
+(assert (= privtypes__adminprivileget__last privtypes__securityofficer))
+(assert (= privtypes__adminprivileget__base__first privtypes__useronly))
+(assert (= privtypes__adminprivileget__base__last privtypes__securityofficer))
+(assert (<= 0 keyboard__datalengtht__size))
+(assert (= keyboard__datalengtht__first 0))
+(assert (= keyboard__datalengtht__last 78))
+(assert (= keyboard__datalengtht__base__first (- 2147483648)))
+(assert (= keyboard__datalengtht__base__last 2147483647))
+(assert (<= 0 keyboard__datai__size))
+(assert (= keyboard__datai__first 1))
+(assert (= keyboard__datai__last 78))
+(assert (= keyboard__datai__base__first (- 2147483648)))
+(assert (= keyboard__datai__base__last 2147483647))
+(assert (<= 0 opandnullt__size))
+(assert (= opandnullt__first nullop))
+(assert (= opandnullt__last shutdownop))
+(assert (= opandnullt__base__first nullop))
+(assert (= opandnullt__base__last shutdownop))
+(assert (<= 0 opt__size))
+(assert (= opt__first archivelog))
+(assert (= opt__last shutdownop))
+(assert (= opt__base__first nullop))
+(assert (= opt__base__last shutdownop))
+(assert (<= 0 datalengtht__size))
+(assert (= datalengtht__first 0))
+(assert (= datalengtht__last 18))
+(assert (= datalengtht__base__first (- 2147483648)))
+(assert (= datalengtht__base__last 2147483647))
+(assert (<= 0 datai__size))
+(assert (= datai__first 1))
+(assert (= datai__last 18))
+(assert (= datai__base__first (- 2147483648)))
+(assert (= datai__base__last 2147483647))
+(assert (forall ((?X Int) (?Y Int)) (=> (< 0 ?Y) (<= 0 (i.mod ?X ?Y)))))
+(assert (forall ((?X Int) (?Y Int)) (=> (< 0 ?Y) (< (i.mod ?X ?Y) ?Y))))
+(assert (forall ((?X Int) (?Y Int)) (=> (and (<= 0 ?X) (< 0 ?Y)) (<= (i.mult ?Y (i.div ?X ?Y)) ?X))))
+(assert (forall ((?X Int) (?Y Int)) (=> (and (<= 0 ?X) (< 0 ?Y)) (< (- ?X ?Y) (i.mult ?Y (i.div ?X ?Y))))))
+(assert (forall ((?X Int) (?Y Int)) (=> (and (<= ?X 0) (< 0 ?Y)) (<= ?X (i.mult ?Y (i.div ?X ?Y))))))
+(assert (forall ((?X Int) (?Y Int)) (=> (and (<= ?X 0) (< 0 ?Y)) (< (i.mult ?Y (i.div ?X ?Y)) (+ ?X ?Y)))))
+(assert (forall ((?X Int) (?Y Int)) (=> (and (<= 0 ?X) (<= 0 ?Y)) (<= 0 (bit__or ?X ?Y)))))
+(assert (forall ((?X Int) (?Y Int)) (=> (and (<= 0 ?X) (<= 0 ?Y)) (<= ?X (bit__or ?X ?Y)))))
+(assert (forall ((?X Int) (?Y Int)) (=> (and (<= 0 ?X) (<= 0 ?Y)) (<= ?Y (bit__or ?X ?Y)))))
+(assert (forall ((?X Int) (?Y Int)) (=> (and (<= 0 ?X) (<= 0 ?Y)) (<= (bit__or ?X ?Y) (+ ?X ?Y)))))
+(assert (distinct field.datat.length field.datat.minmatchlength field.datat.text))
+(assert (distinct field.keyboard__datat.length field.keyboard__datat.text))
+(assert (distinct field.t.rolepresent field.t.currentop))
+(assert (distinct tm.true tm.false))
+(assert (forall ((?x Int)) (! (= (= (tm.not ?x) tm.true) (not (= ?x tm.true))) :pattern ((tm.not ?x)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (tm.and ?x ?y) tm.true) (and (= ?x tm.true) (= ?y tm.true))) :pattern ((tm.and ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (tm.or ?x ?y) tm.true) (or (= ?x tm.true) (= ?y tm.true))) :pattern ((tm.or ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (tm.iff ?x ?y) tm.true) (= (= ?x tm.true) (= ?y tm.true))) :pattern ((tm.iff ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (tm.eq ?x ?y) tm.true) (= ?x ?y)) :pattern ((tm.eq ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (tm.ne ?x ?y) tm.true) (not (= ?x ?y))) :pattern ((tm.ne ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (tm.lt ?x ?y) tm.true) (< ?x ?y)) :pattern ((tm.lt ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (tm.le ?x ?y) tm.true) (<= ?x ?y)) :pattern ((tm.le ?x ?y)) )))
+(assert (forall ((?a Int) (?i Int) (?v Int)) (! (= (a.select (a.store ?a ?i ?v) ?i) ?v) :pattern ((a.select (a.store ?a ?i ?v) ?i)) )))
+(assert (forall ((?a Int) (?i Int) (?v Int) (?j Int)) (! (or (= ?i ?j) (= (a.select (a.store ?a ?i ?v) ?j) (a.select ?a ?j))) :pattern ((a.select (a.store ?a ?i ?v) ?j)) )))
+(assert (forall ((?i Int) (?v Int)) (! (= (a.select (a.mk_const_array ?v) ?i) ?v) :pattern ((a.select (a.mk_const_array ?v) ?i)) )))
+(assert (<= opt__first loop__1__op))
+(assert (<= loop__1__op opt__last))
+(assert (<= datai__first loop__2__i))
+(assert (<= loop__2__i datai__last))
+(assert (<= loop__2__i (a.select keyedop field.keyboard__datat.length)))
+(assert (<= datai__first (a.select keyedop field.keyboard__datat.length)))
+(assert (<= (a.select keyedop field.keyboard__datat.length) datai__last))
+(assert (= keyedop keyedop__entry__loop__2))
+(assert (<= privtypes__adminprivileget__first (a.select theadmin field.t.rolepresent)))
+(assert (<= (a.select theadmin field.t.rolepresent) privtypes__adminprivileget__last))
+(assert (= theop nullop))
+(assert (<= opandnullt__first (a.select theadmin field.t.currentop)))
+(assert (<= (a.select theadmin field.t.currentop) opandnullt__last))
+(assert (<= privtypes__privileget__first (a.select theadmin field.t.rolepresent)))
+(assert (<= (a.select theadmin field.t.rolepresent) privtypes__privileget__last))
+(assert (forall ((?i___1 Int)) (let ((?v_0 (a.select (a.select keyedop field.keyboard__datat.text) ?i___1))) (=> (and (<= keyboard__datai__first ?i___1) (<= ?i___1 keyboard__datai__last)) (and (<= character__first ?v_0) (<= ?v_0 character__last))))))
+(assert (<= keyboard__datalengtht__first (a.select keyedop field.keyboard__datat.length)))
+(assert (<= (a.select keyedop field.keyboard__datat.length) keyboard__datalengtht__last))
+(assert (ispresent theadmin))
+(assert (<= datai__first loop__2__i))
+(assert (<= loop__2__i datai__last))
+(assert (<= loop__2__i (a.select keyedop__entry__loop__2 field.keyboard__datat.length)))
+(assert (<= opt__first loop__1__op))
+(assert (<= loop__1__op opt__last))
+(assert (<= loop__1__op opt__last))
+(assert (<= keyboard__datai__first loop__2__i))
+(assert (<= loop__2__i keyboard__datai__last))
+(assert (<= datai__first loop__2__i))
+(assert (<= loop__2__i datai__last))
+(assert (<= opt__first loop__1__op))
+(assert (<= loop__1__op opt__last))
+(assert (not (not (= (a.select (a.select (a.select optokeyed loop__1__op) field.datat.text) loop__2__i) (a.select (a.select keyedop field.keyboard__datat.text) loop__2__i)))))
+(assert (not (= loop__2__i (a.select keyedop__entry__loop__2 field.keyboard__datat.length))))
+(assert (let ((?v_6 (<= opt__first loop__1__op)) (?v_7 (<= loop__1__op opt__last)) (?v_1 (a.select keyedop field.keyboard__datat.length)) (?v_2 (a.select theadmin field.t.rolepresent)) (?v_3 (a.select theadmin field.t.currentop)) (?v_0 (+ loop__2__i 1))) (let ((?v_4 (<= datai__first ?v_0)) (?v_5 (<= ?v_0 datai__last))) (not (and ?v_6 ?v_7 ?v_4 ?v_5 (<= ?v_0 ?v_1) (<= datai__first ?v_1) (<= ?v_1 datai__last) (= keyedop keyedop__entry__loop__2) (<= privtypes__adminprivileget__first ?v_2) ( [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/parametric-lists.smt2 b/test/regress/regress0/quantifiers/parametric-lists.smt2
new file mode 100644
index 0000000..c117934
--- /dev/null
+++ b/test/regress/regress0/quantifiers/parametric-lists.smt2
@@ -0,0 +1,42 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-datatypes (T) ((List (cons (head T) (tail (List T))) (nil))))
+(declare-datatypes () ((KV (kv (key Int) (value Int)) (nilKV)))) ; key value pair
+(declare-fun mapper ((List Int)) (List KV))
+(assert
+  (forall
+    ((input (List Int)))
+     (ite
+        (= input (as nil (List Int)))
+        (= (as nil (List KV)) (mapper input))
+        (= (cons (kv 0 (head input)) (mapper (tail input))) (mapper input))
+     )
+  )                                                                                                                            
+)
+(declare-fun reduce ((List KV)) Int)
+(assert
+  (forall
+    ((inputk (List KV)))
+    (ite
+      (= inputk (as nil (List KV)))
+      (= 0 (reduce inputk))
+      (= (+ (value (head inputk)) (reduce (tail inputk))) (reduce inputk))
+    )
+  )
+)
+(declare-fun sum ((List Int)) Int)
+(assert
+  (forall
+    ((input (List Int)))
+    (ite
+      (= input (as nil (List Int)))
+      (= 0 (sum input))
+      (= (+ (head input) (sum (tail input))) (sum input))
+    )
+  )
+)
+(assert
+  (not (= (sum (cons 0 (as nil (List Int)))) (reduce (mapper (cons 0 (as nil (List Int)))))))
+)
+(check-sat)
+
diff --git a/test/regress/regress0/quantifiers/partial-trigger.smt2 b/test/regress/regress0/quantifiers/partial-trigger.smt2
new file mode 100644
index 0000000..beea57b
--- /dev/null
+++ b/test/regress/regress0/quantifiers/partial-trigger.smt2
@@ -0,0 +1,10 @@
+; COMMAND-LINE: --partial-triggers
+; EXPECT: unsat
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-fun P (Int) Bool)
+(assert (forall ((x Int) (y Int)) (=> (> y 6) (or (> x y) (P x)))))
+
+(assert (not (P 5)))
+
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/psyco-196.smt2 b/test/regress/regress0/quantifiers/psyco-196.smt2
new file mode 100644
index 0000000..356e627
--- /dev/null
+++ b/test/regress/regress0/quantifiers/psyco-196.smt2
@@ -0,0 +1,420 @@
+(set-logic LIA)
+(set-info :status sat)
+(declare-fun W_S1_V5 () Bool)
+(declare-fun W_S1_V4 () Bool)
+(declare-fun W_S1_V6 () Bool)
+(declare-fun W_S1_V1 () Bool)
+(declare-fun W_S1_V3 () Bool)
+(declare-fun W_S1_V2 () Bool)
+(declare-fun R_S1_V5 () Bool)
+(declare-fun R_S1_V4 () Bool)
+(declare-fun R_S1_V6 () Bool)
+(declare-fun R_S1_V1 () Bool)
+(declare-fun R_S1_V3 () Bool)
+(declare-fun R_S1_V2 () Bool)
+(declare-fun R_E2_V1 () Bool)
+(declare-fun R_E1_V1 () Bool)
+(declare-fun R_E1_V3 () Bool)
+(declare-fun R_E2_V3 () Bool)
+(assert
+ (let
+ (($x62242
+   (forall
+    ((V2_0 Int) (V6_0 Int) 
+     (V4_0 Int) (V5_0 Int) 
+     (S1_V3_!5556 Int) (S1_V3_!5562 Int) 
+     (S1_V3_!5571 Int) (S1_V3_!5577 Int) 
+     (E1_!5552 Int) (E1_!5567 Int) 
+     (E1_!5569 Int) (S1_V2_!5555 Int) 
+     (S1_V2_!5561 Int) (S1_V2_!5570 Int) 
+     (S1_V2_!5576 Int) (S1_V5_!5560 Int) 
+     (S1_V5_!5566 Int) (S1_V5_!5575 Int) 
+     (S1_V5_!5581 Int) (S1_V4_!5559 Int) 
+     (S1_V4_!5565 Int) (S1_V4_!5574 Int) 
+     (S1_V4_!5580 Int) (S1_V6_!5558 Int) 
+     (S1_V6_!5564 Int) (S1_V6_!5573 Int) 
+     (S1_V6_!5579 Int) (E2_!5553 Int) 
+     (E2_!5554 Int) (E2_!5568 Int) 
+     (S1_V1_!5557 Int) (S1_V1_!5563 Int) 
+     (S1_V1_!5572 Int) (S1_V1_!5578 Int))
+    (let (($x59864 (= S1_V5_!5566 S1_V5_!5581)))
+    (let (($x59925 (not W_S1_V5)))
+    (let (($x62779 (or $x59925 $x59864)))
+    (let (($x62200 (= S1_V4_!5565 S1_V4_!5580)))
+    (let (($x59923 (not W_S1_V4)))
+    (let (($x62447 (or $x59923 $x62200)))
+    (let (($x62602 (= S1_V6_!5564 S1_V6_!5579)))
+    (let (($x62610 (not W_S1_V6)))
+    (let (($x62230 (or $x62610 $x62602)))
+    (let (($x61214 (= S1_V1_!5563 S1_V1_!5578)))
+    (let (($x60986 (= S1_V3_!5562 S1_V3_!5577)))
+    (let (($x62444 (= S1_V2_!5561 S1_V2_!5576)))
+    (let (($x62507 (not W_S1_V2)))
+    (let (($x62441 (or $x62507 $x62444)))
+    (let
+    (($x62532
+      (and $x62441
+      (ite W_S1_V3 $x60986
+      (= (ite W_S1_V3 S1_V3_!5556 E2_!5554) (+ (- 1) E2_!5568)))
+      (ite W_S1_V1 $x61214
+      (= E1_!5552 (+ 1 (ite W_S1_V1 S1_V1_!5572 E1_!5569)))) $x62230 $x62447
+      $x62779)))
+    (let ((?x62367 (ite W_S1_V1 S1_V1_!5572 E1_!5569)))
+    (let ((?x60865 (+ 1 ?x62367)))
+    (let ((?x62511 (ite W_S1_V1 S1_V1_!5578 ?x60865)))
+    (let ((?x60218 (ite W_S1_V3 S1_V3_!5556 E2_!5554)))
+    (let ((?x60222 (+ 1 ?x60218)))
+    (let ((?x62533 (ite W_S1_V3 S1_V3_!5562 ?x60222)))
+    (let
+    (($x62746
+      (and (not (<= V4_0 E2_!5553)) 
+      (not (<= V2_0 E1_!5552)) 
+      (not (<= V4_0 E2_!5554))
+      (not (<= (ite W_S1_V4 S1_V4_!5559 V4_0) ?x60222))
+      (>= ?x62533 (+ (- 1) (ite W_S1_V4 S1_V4_!5565 V4_0)))
+      (>= (ite W_S1_V1 S1_V1_!5563 E1_!5552)
+      (+ (- 1) (ite W_S1_V2 S1_V2_!5561 V2_0))) 
+      (not (<= V2_0 E1_!5567)) 
+      (not (<= V4_0 E2_!5568)) 
+      (not (<= V2_0 E1_!5569))
+      (not (<= (ite W_S1_V2 S1_V2_!5570 V2_0) ?x60865))
+      (>= ?x62511 (+ (- 1) (ite W_S1_V2 S1_V2_!5576 V2_0)))
+      (>= (ite W_S1_V3 S1_V3_!5577 E2_!5568)
+      (+ (- 1) (ite W_S1_V4 S1_V4_!5580 V4_0))))))
+    (let (($x62780 (= S1_V1_!5578 S1_V1_!5572)))
+    (let (($x161 (not R_S1_V5)))
+    (let (($x62589 (or $x161 (= (ite W_S1_V5 S1_V5_!5575 V5_0) V5_0))))
+    (let (($x159 (not R_S1_V4)))
+    (let (($x62548 (or $x159 (= (ite W_S1_V4 S1_V4_!5574 V4_0) V4_0))))
+    (let (($x157 (not R_S1_V6)))
+    (let (($x62737 (or $x157 (= (ite W_S1_V6 S1_V6_!5573 V6_0) V6_0))))
+    (let (($x153 (not R_S1_V3)))
+    (let
+    (($x62224 (or $x153 (= (ite W_S1_V3 S1_V3_!5571 E2_!5568) E2_!5568))))
+    (let (($x151 (not R_S1_V2)))
+    (let (($x62641 (or $x151 (= (ite W_S1_V2 S1_V2_!5570 V2_0) V2_0))))
+    (let
+    (($x60228
+      (and $x62641 $x62224 
+      (or (not R_S1_V1) (= ?x62367 (+ (- 1) E1_!5569))) $x62737 $x62548
+      $x62589)))
+    (let (($x62356 (not $x60228)))
+    (let (($x62680 (= S1_V1_!5578 S1_V1_!5563)))
+    (let (($x62272 (or $x161 $x59925 (= S1_V5_!5575 S1_V5_!5560))))
+    (let (($x61083 (= S1_V4_!5574 S1_V4_!5559)))
+    (let (($x62455 (or $x159 $x59923 $x61083)))
+    (let (($x60917 (= S1_V6_!5573 S1_V6_!5558)))
+    (let (($x62584 (or $x157 $x62610 $x60917)))
+    (let (($x59905 (= S1_V2_!5570 S1_V2_!5555)))
+    (let (($x62549 (or $x151 $x62507 $x59905)))
+    (let
+    (($x62675
+      (and $x62549 (or $x153 (= (ite W_S1_V3 S1_V3_!5571 E2_!5568) ?x60222))
+      (or (not R_S1_V1)
+      (= ?x62367 (+ (- 1) (ite W_S1_V1 S1_V1_!5557 E1_!5552)))) $x62584
+      $x62455 $x62272)))
+    (let (($x59892 (= S1_V1_!5578 S1_V1_!5557)))
+    (let
+    (($x60942 (or $x153 (= (ite W_S1_V3 S1_V3_!5571 E2_!5568) E2_!5554))))
+    (let
+    (($x62564
+      (and $x62641 $x60942 
+      (or (not R_S1_V1) (= ?x62367 (+ (- 1) E1_!5552))) $x62737 $x62548
+      $x62589)))
+    (let (($x59819 (not $x62564)))
+    (let (($x60234 (= S1_V1_!5563 S1_V1_!5572)))
+    (let (($x61232 (or $x161 (= (ite W_S1_V5 S1_V5_!5560 V5_0) V5_0))))
+    (let (($x61254 (or $x159 (= (ite W_S1_V4 S1_V4_!5559 V4_0) V4_0))))
+    (let (($x59994 (or $x157 (= (ite W_S1_V6 S1_V6_!5558 V6_0) V6_0))))
+    (let (($x155 (not R_S1_V1)))
+    (let
+    (($x62420 (or $x155 (= (ite W_S1_V1 S1_V1_!5557 E1_!5552) E1_!5569))))
+    (let (($x62368 (or $x151 (= (ite W_S1_V2 S1_V2_!5555 V2_0) V2_0))))
+    (let
+    (($x62830
+      (not
+      (and $x62368 (or $x153 (= ?x60218 (+ (- 1) E2_!5568))) $x62420 $x59994
+      $x61254 $x61232))))
+    (let (($x62636 (= S1_V1_!5563 S1_V1_!5557)))
+    (let
+    (($x59733 (or $x155 (= (ite W_S1_V1 S1_V1_!5557 E1_!5552) E1_!5552))))
+    (let
+    (($x62306
+      (not
+      (and $x62368 (or $x153 (= ?x60218 (+ (- 1) E2_!5554))) $x59733 $x59994
+      $x61254 $x61232))))
+    (let (($x60134 (= S1_V1_!5557 S1_V1_!5572)))
+    (let
+    (($x59719
+      (not
+      (and (or $x153 (= E2_!5554 E2_!5568)) (or $x155 (= E1_!5552 E1_!5569))))))
+    (let (($x61406 (= E2_!5554 E2_!5568)))
+    (let (($x59878 (not (or (not R_E2_V1) (= E1_!5552 E1_!5567)))))
+    (let (($x59949 (or $x59878 $x61406)))
+    (let (($x62775 (or $x59878 (= E2_!5553 E2_!5568))))
+    (let (($x59743 (= E2_!5553 E2_!5554)))
+    (let (($x62428 (= S1_V6_!5573 S1_V6_!5579)))
+    (let (($x60152 (or $x161 (= V5_0 (ite W_S1_V5 S1_V5_!5575 V5_0)))))
+    (let (($x60212 (or $x159 (= V4_0 (ite W_S1_V4 S1_V4_!5574 V4_0)))))
+    (let (($x61260 (or $x157 (= V6_0 (ite W_S1_V6 S1_V6_!5573 V6_0)))))
+    (let
+    (($x60887 (or $x153 (= E2_!5568 (ite W_S1_V3 S1_V3_!5571 E2_!5568)))))
+    (let (($x62275 (or $x151 (= V2_0 (ite W_S1_V2 S1_V2_!5570 V2_0)))))
+    (let
+    (($x61258
+      (or
+      (not
+      (and $x62275 $x60887 
+      (or $x155 (= E1_!5569 ?x60865)) $x61260 $x60212 $x60152)) $x62428)))
+    (let
+    (($x61266
+      (not
+      (and (or $x153 (= E2_!5568 E2_!5554)) (or $x155 (= E1_!5569 E1_!5552))))))
+    (let (($x61122 (= S1_V5_!5560 S1_V5_!5575)))
+    (let (($x59790 (or $x161 $x59925 $x61122)))
+    (let (($x62797 (or $x159 $x59923 (= S1_V4_!5559 S1_V4_!5574))))
+    (let (($x62684 (or $x157 $x62610 (= S1_V6_!5558 S1_V6_!5573))))
+    (let (($x62354 (or $x151 $x62507 (= S1_V2_!5555 S1_V2_!5570))))
+    (let
+    (($x60910
+      (and $x62354
+      (or $x153 (= ?x60218 (+ (- 1) (ite W_S1_V3 S1_V3_!5571 E2_!5568))))
+      (or $x155 (= (ite W_S1_V1 S1_V1_!5557 E1_!5552) ?x60865)) $x62684
+      $x62797 $x59790)))
+    (let (($x59844 (not $x60910)))
+    (let (($x62494 (= S1_V5_!5560 S1_V5_!5581)))
+    (let
+    (($x62623 (or $x153 (= E2_!5554 (ite W_S1_V3 S1_V3_!5571 E2_!5568)))))
+    (let
+    (($x61100
+      (or
+      (not
+      (and $x62275 $x62623 
+      (or $x155 (= E1_!5552 ?x60865)) $x61260 $x60212 $x60152)) $x62494)))
+    (let (($x60862 (= S1_V5_!5560 S1_V5_!5566)))
+    (let (($x62353 (or $x161 (= V5_0 (ite W_S1_V5 S1_V5_!5560 V5_0)))))
+    (let (($x60875 (or $x159 (= V4_0 (ite W_S1_V4 S1_V4_!5559 V4_0)))))
+    (let (($x62491 (or $x157 (= V6_0 (ite W_S1_V6 S1_V6_!5558 V6_0)))))
+    (let
+    (($x62399 (or $x155 (= E1_!5552 (ite W_S1_V1 S1_V1_!5557 E1_!5552)))))
+    (let (($x62431 (or $x151 (= V2_0 (ite W_S1_V2 S1_V2_!5555 V2_0)))))
+    (let
+    (($x62297
+      (or
+      (not
+      (and $x62431 (or $x153 (= E2_!5554 ?x60222)) $x62399 $x62491 $x60875
+      $x62353)) $x60862)))
+    (let (($x60874 (= S1_V2_!5570 S1_V2_!5576)))
+    (let
+    (($x62369
+      (or
+      (not
+      (and $x62275 $x60887 
+      (or $x155 (= E1_!5569 ?x60865)) $x61260 $x60212 $x60152)) $x60874)))
+    (let (($x62594 (= S1_V2_!5555 S1_V2_!5576)))
+    (let
+    (($x59910
+      (or
+      (not
+      (and $x62275 $x62623 
+      (or $x155 (= E1_!5552 ?x60865)) $x61260 $x60212 $x60152)) $x62594)))
+    (let (($x62531 (= E1_!5569 E1_!5567)))
+    (let (($x59835 (= E1_!5552 E1_!5569)))
+    (let (($x62312 (= E1_!5552 E1_!5567)))
+    (let
+    (($x62715
+      (and (or $x59719 (= S1_V3_!5556 S1_V3_!5571))
+      (or $x62306 (= S1_V3_!5562 S1_V3_!5556))
+      (or $x62830 (= S1_V3_!5562 S1_V3_!5571))
+      (or $x59819 (= S1_V3_!5577 S1_V3_!5556))
+      (or (not $x62675) (= S1_V3_!5577 S1_V3_!5562))
+      (or $x62356 (= S1_V3_!5577 S1_V3_!5571)) $x62312 $x59835 $x62531
+      $x59910 (or $x62306 (= S1_V2_!5561 S1_V2_!5555))
+      (or $x62830 (= S1_V2_!5561 S1_V2_!5570)) 
+      (or $x59844 $x62444) 
+      (or $x61266 $x59905) $x62369 $x62297 
+      (or $x59719 $x61122) $x61100 
+      (or $x62830 (= S1_V5_!5566 S1_V5_!5575)) 
+      (or $x59844 $x59864) 
+      (or $x62356 (= S1_V5_!5581 S1_V5_!5575))
+      (or $x62306 (= S1_V4_!5565 S1_V4_!5559))
+      (or $x62830 (= S1_V4_!5565 S1_V4_!5574)) 
+      (or $x59844 $x62200) 
+      (or $x61266 $x61083) 
+      (or $x59819 (= S1_V4_!5580 S1_V4_!5559))
+      (or $x62356 (= S1_V4_!5580 S1_V4_!5574))
+      (or $x62306 (= S1_V6_!5564 S1_V6_!5558))
+      (or $x62830 (= S1_V6_!5564 S1_V6_!5573)) 
+      (or $x59844 $x62602) 
+      (or $x61266 $x60917) $x61258 
+      (or $x59819 (= S1_V6_!5579 S1_V6_!5558)) $x59743 $x62775 $x59949
+      (or $x59719 $x60134) 
+      (or $x62306 $x62636) 
+      (or $x62830 $x60234) 
+      (or $x59819 $x59892) 
+      (or (not $x62675) $x62680) 
+      (or $x62356 $x62780)))) 
+    (or (not $x62715) (not $x62746) $x62532)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+ (let (($x13 (or W_S1_V2 W_S1_V3 W_S1_V1 W_S1_V6 W_S1_V4 W_S1_V5)))
+ (let (($x65 (not R_E1_V1)))
+ (let (($x63 (not R_E1_V3)))
+ (let (($x84 (not R_E2_V3))) (and $x84 $x63 $x65 $x13 $x62242)))))))
+(assert (not (and (not W_S1_V4) (not W_S1_V3))))
+(assert (not (and (not W_S1_V1) (not W_S1_V2))))
+(assert (not (and (not R_S1_V3) (not R_S1_V1) (not W_S1_V4) (not W_S1_V2))))
+(assert
+ (let (($x62714 (not W_S1_V3)))
+ (let (($x161 (not R_S1_V5)))
+ (let (($x159 (not R_S1_V4)))
+ (let (($x157 (not R_S1_V6)))
+ (let (($x155 (not R_S1_V1)))
+ (let (($x151 (not R_S1_V2)))
+ (not (and $x151 $x155 $x157 $x159 $x161 $x62714)))))))))
+(assert
+ (let (($x62610 (not W_S1_V6)))
+ (let (($x62507 (not W_S1_V2)))
+ (let (($x59925 (not W_S1_V5)))
+ (let (($x159 (not R_S1_V4)))
+ (let (($x155 (not R_S1_V1)))
+ (let (($x153 (not R_S1_V3)))
+ (not (and $x153 $x155 $x159 $x59925 $x62507 $x62610)))))))))
+(assert
+ (let (($x161 (not R_S1_V5)))
+ (let (($x159 (not R_S1_V4)))
+ (let (($x157 (not R_S1_V6)))
+ (let (($x155 (not R_S1_V1)))
+ (let (($x153 (not R_S1_V3)))
+ (let (($x151 (not R_S1_V2)))
+ (not (and $x151 $x153 $x155 $x157 $x159 $x161)))))))))
+(assert (not (and W_S1_V3 (not R_S1_V3) (not R_S1_V1) (not W_S1_V2))))
+(assert (not (and W_S1_V3 W_S1_V1 (not R_S1_V3) (not R_S1_V1))))
+(assert
+ (let (($x62232 (not W_S1_V1)))
+ (let (($x59925 (not W_S1_V5)))
+ (let (($x159 (not R_S1_V4)))
+ (let (($x157 (not R_S1_V6)))
+ (let (($x153 (not R_S1_V3)))
+ (let (($x151 (not R_S1_V2)))
+ (not (and $x151 $x153 $x157 $x159 $x59925 $x62232)))))))))
+(assert
+ (let (($x62610 (not W_S1_V6)))
+ (let (($x62232 (not W_S1_V1)))
+ (let (($x59925 (not W_S1_V5)))
+ (let (($x159 (not R_S1_V4)))
+ (let (($x153 (not R_S1_V3)))
+ (let (($x151 (not R_S1_V2)))
+ (not (and $x151 $x153 $x159 $x59925 $x62232 $x62610)))))))))
+(assert
+ (let (($x62610 (not W_S1_V6)))
+ (let (($x59923 (not W_S1_V4)))
+ (let (($x161 (not R_S1_V5)))
+ (let (($x155 (not R_S1_V1)))
+ (let (($x153 (not R_S1_V3)))
+ (let (($x151 (not R_S1_V2)))
+ (not (and $x151 $x153 $x155 $x161 $x59923 $x62610)))))))))
+(assert
+ (let (($x62610 (not W_S1_V6)))
+ (let (($x62232 (not W_S1_V1)))
+ (let (($x161 (not R_S1_V5)))
+ (let (($x159 (not R_S1_V4)))
+ (let (($x153 (not R_S1_V3)))
+ (let (($x151 (not R_S1_V2)))
+ (not (and $x151 $x153 $x159 $x161 $x62232 $x62610)))))))))
+(assert
+ (let (($x62232 (not W_S1_V1)))
+ (let (($x59925 (not W_S1_V5)))
+ (let (($x59923 (not W_S1_V4)))
+ (let (($x157 (not R_S1_V6)))
+ (let (($x153 (not R_S1_V3)))
+ (let (($x151 (not R_S1_V2)))
+ (not (and $x151 $x153 $x157 $x59923 $x59925 $x62232)))))))))
+(assert
+ (let (($x62610 (not W_S1_V6)))
+ (let (($x59925 (not W_S1_V5)))
+ (let (($x59923 (not W_S1_V4)))
+ (let (($x155 (not R_S1_V1)))
+ (let (($x153 (not R_S1_V3)))
+ (let (($x151 (not R_S1_V2)))
+ (not (and $x151 $x153 $x155 $x59923 $x59925 $x62610)))))))))
+(assert
+ (let (($x59923 (not W_S1_V4)))
+ (let (($x161 (not R_S1_V5)))
+ (let (($x157 (not R_S1_V6)))
+ (let (($x155 (not R_S1_V1)))
+ (let (($x153 (not R_S1_V3)))
+ (let (($x151 (not R_S1_V2)))
+ (not (and $x151 $x153 $x155 $x157 $x161 $x59923)))))))))
+(assert
+ (let (($x62232 (not W_S1_V1)))
+ (let (($x59923 (not W_S1_V4)))
+ (let (($x161 (not R_S1_V5)))
+ (let (($x157 (not R_S1_V6)))
+ (let (($x153 (not R_S1_V3)))
+ (let (($x151 (not R_S1_V2)))
+ (not (and $x151 $x153 $x157 $x161 $x59923 $x62232)))))))))
+(assert
+ (let (($x62714 (not W_S1_V3)))
+ (let (($x62507 (not W_S1_V2)))
+ (let (($x161 (not R_S1_V5)))
+ (let (($x159 (not R_S1_V4)))
+ (let (($x157 (not R_S1_V6)))
+ (let (($x155 (not R_S1_V1)))
+ (not (and $x155 $x157 $x159 $x161 $x62507 $x62714)))))))))
+(assert
+ (let (($x62714 (not W_S1_V3)))
+ (let (($x62610 (not W_S1_V6)))
+ (let (($x161 (not R_S1_V5)))
+ (let (($x159 (not R_S1_V4)))
+ (let (($x155 (not R_S1_V1)))
+ (let (($x151 (not R_S1_V2)))
+ (not (and $x151 $x155 $x159 $x161 $x62610 $x62714)))))))))
+(assert
+ (let (($x62714 (not W_S1_V3)))
+ (let (($x62610 (not W_S1_V6)))
+ (let (($x62507 (not W_S1_V2)))
+ (let (($x161 (not R_S1_V5)))
+ (let (($x159 (not R_S1_V4)))
+ (let (($x155 (not R_S1_V1)))
+ (not (and $x155 $x159 $x161 $x62507 $x62610 $x62714)))))))))
+(assert
+ (let (($x62714 (not W_S1_V3)))
+ (let (($x59925 (not W_S1_V5)))
+ (let (($x159 (not R_S1_V4)))
+ (let (($x157 (not R_S1_V6)))
+ (let (($x155 (not R_S1_V1)))
+ (let (($x151 (not R_S1_V2)))
+ (not (and $x151 $x155 $x157 $x159 $x59925 $x62714)))))))))
+(assert
+ (let (($x62714 (not W_S1_V3)))
+ (let (($x62507 (not W_S1_V2)))
+ (let (($x59925 (not W_S1_V5)))
+ (let (($x159 (not R_S1_V4)))
+ (let (($x157 (not R_S1_V6)))
+ (let (($x155 (not R_S1_V1)))
+ (not (and $x155 $x157 $x159 $x59925 $x62507 $x62714)))))))))
+(assert
+ (let (($x62714 (not W_S1_V3)))
+ (let (($x62610 (not W_S1_V6)))
+ (let (($x59925 (not W_S1_V5)))
+ (let (($x159 (not R_S1_V4)))
+ (let (($x155 (not R_S1_V1)))
+ (let (($x151 (not R_S1_V2)))
+ (not (and $x151 $x155 $x159 $x59925 $x62610 $x62714)))))))))
+(assert
+ (let (($x62714 (not W_S1_V3)))
+ (let (($x62610 (not W_S1_V6)))
+ (let (($x62507 (not W_S1_V2)))
+ (let (($x59925 (not W_S1_V5)))
+ (let (($x159 (not R_S1_V4)))
+ (let (($x155 (not R_S1_V1)))
+ (not (and $x155 $x159 $x59925 $x62507 $x62610 $x62714)))))))))
+(assert
+ (let (($x62232 (not W_S1_V1)))
+ (let (($x161 (not R_S1_V5)))
+ (let (($x159 (not R_S1_V4)))
+ (let (($x157 (not R_S1_V6)))
+ (let (($x153 (not R_S1_V3)))
+ (let (($x151 (not R_S1_V2)))
+ (not (and $x151 $x153 $x157 $x159 $x161 $x62232)))))))))
+(check-sat)
+
diff --git a/test/regress/regress0/quantifiers/pure_dt_cbqi.smt2 b/test/regress/regress0/quantifiers/pure_dt_cbqi.smt2
new file mode 100644
index 0000000..5c11a57
--- /dev/null
+++ b/test/regress/regress0/quantifiers/pure_dt_cbqi.smt2
@@ -0,0 +1,6 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(declare-datatypes () ((nat (Suc (pred nat)) (zero))))
+(declare-fun y () nat)
+(assert (forall ((x nat)) (not (= y (Suc x)))))
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/qcf-rel-dom-opt.smt2 b/test/regress/regress0/quantifiers/qcf-rel-dom-opt.smt2
new file mode 100644
index 0000000..539f181
--- /dev/null
+++ b/test/regress/regress0/quantifiers/qcf-rel-dom-opt.smt2
@@ -0,0 +1,45 @@
+(set-logic UFLIA)
+(set-info :status unsat)
+(declare-fun P (Int) Bool)
+
+(assert (P 0))
+(assert (P 1))
+(assert (P 2))
+(assert (P 3))
+(assert (P 4))
+(assert (P 5))
+(assert (P 6))
+(assert (P 7))
+(assert (P 8))
+(assert (P 9))
+
+(assert (P 10))
+(assert (P 11))
+(assert (P 12))
+(assert (P 13))
+(assert (P 14))
+(assert (P 15))
+(assert (P 16))
+(assert (P 17))
+(assert (P 18))
+(assert (P 19))
+
+(assert (P 20))
+(assert (P 21))
+(assert (P 22))
+(assert (P 23))
+(assert (P 24))
+(assert (P 25))
+(assert (P 26))
+(assert (P 27))
+(assert (P 28))
+(assert (P 29))
+
+(declare-fun Q (Int Int Int Int Int) Bool)
+(assert (forall ((x Int) (y Int) (z Int) (w Int) (q Int)) (or (not (P x)) (not (P y)) (not (P z)) (not (P w)) (not (P q)) (Q x y z w q))))
+
+(declare-fun R (Int) Bool)
+(assert (R 0))
+(assert (forall ((x Int)) (not (R x))))
+
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/qcft-javafe.filespace.TreeWalker.006.smt2 b/test/regress/regress0/quantifiers/qcft-javafe.filespace.TreeWalker.006.smt2
new file mode 100644
index 0000000..2a5eb34
--- /dev/null
+++ b/test/regress/regress0/quantifiers/qcft-javafe.filespace.TreeWalker.006.smt2
@@ -0,0 +1,432 @@
+; COMMAND-LINE: --qcf-tconstraint
+; EXPECT: unsat
+(set-logic AUFLIA)
+(set-info :source | 
+  Simplify front end test suite.
+  This benchmark was translated by Michal Moskal.
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-fun EC_134.22_134.22 () Int)
+(declare-fun integralOr (Int Int) Int)
+(declare-fun this_95.46_87.8_0_95.46 () Int)
+(declare-fun EC_183.16_183.16 () Int)
+(declare-fun arrayShapeMore (Int Int) Int)
+(declare-fun integralAnd (Int Int) Int)
+(declare-fun T_.TYPE () Int)
+(declare-fun EC_156.1_0_158.5_0_159.22_159.22 () Int)
+(declare-fun intFirst () Int)
+(declare-fun after_192.22_192.22 () Int)
+(declare-fun T_javafe.filespace.HashTree () Int)
+(declare-fun lookAhead_4.43.19 () Int)
+(declare-fun after_90.24_87.8_0_90.24_5.89.17 () Int)
+(declare-fun eClosedTime (Int) Int)
+(declare-fun int_m9223372036854775808 () Int)
+(declare-fun C_87.8 () Int)
+(declare-fun int_m2147483648 () Int)
+(declare-fun T_java.lang.Comparable () Int)
+(declare-fun arrayPosition (Int) Int)
+(declare-fun treeName_186.1 () Int)
+(declare-fun remainingNodes_loopold_48.26 () Int)
+(declare-fun after_189.12_189.12 () Int)
+(declare-fun this_159.11_156.1_0_158.5_0_159.11 () Int)
+(declare-fun select1 (Int Int) Int)
+(declare-fun select2 (Int Int Int) Int)
+(declare-fun EC_192.22_192.22 () Int)
+(declare-fun L_158.5 () Int)
+(declare-fun T_java.util.EscjavaKeyValue () Int)
+(declare-fun elems_1_ () Int)
+(declare-fun c_loopold_133.5 () Int)
+(declare-fun T_long () Int)
+(declare-fun EC_121.8_121.8 () Int)
+(declare-fun EC_65.1_65.1 () Int)
+(declare-fun moreElements_192.1_0_193.28_5.89.17 () Int)
+(declare-fun after_121.8_121.8 () Int)
+(declare-fun T_javafe.filespace.LookAheadEnum () Int)
+(declare-fun lockLE (Int Int) Bool)
+(declare-fun classLiteral (Int) Int)
+(declare-fun lockLT (Int Int) Bool)
+(declare-fun T_javafe.filespace.Tree () Int)
+(declare-fun elems_2_ () Int)
+(declare-fun EC_189.12_189.12 () Int)
+(declare-fun T_float () Int)
+(declare-fun alloc () Int)
+(declare-fun T_java.io.OutputStream () Int)
+(declare-fun EC_87.8_0_89.24_89.24 () Int)
+(declare-fun S_194.56 () Int)
+(declare-fun asChild (Int Int) Int)
+(declare-fun CONCVARSYM (Int) Int)
+(declare-fun T_int () Int)
+(declare-fun after_65.1_65.1 () Int)
+(declare-fun int_2147483647 () Int)
+(declare-fun RES_130.35 () Int)
+(declare-fun remainingNodes_48.26_1_ () Int)
+(declare-fun int_9223372036854775807 () Int)
+(declare-fun this () Int)
+(declare-fun T_byte () Int)
+(declare-fun T_java.lang.System () Int)
+(declare-fun store1 (Int Int Int) Int)
+(declare-fun store2 (Int Int Int Int) Int)
+(declare-fun RES_loopold () Int)
+(declare-fun remainingNodes_48.26_2_ () Int)
+(declare-fun max (Int) Int)
+(declare-fun elems_156.1_0_158.5_0_1_ () Int)
+(declare-fun moreElements_pre_5.58.29 () Int)
+(declare-fun moreElements_87.8_0_90.24_5.89.17 () Int)
+(declare-fun objectToBeConstructed () Int)
+(declare-fun T_java.util.Map () Int)
+(declare-fun tmp4_156.1_0_158.5_0_163.8 () Int)
+(declare-fun T_javafe.filespace.TreeWalker () Int)
+(declare-fun after_189.25_189.25 () Int)
+(declare-fun integralDiv (Int Int) Int)
+(declare-fun i_156.1_0_158.5_0_158.33 () Int)
+(declare-fun after_135.35_134.1_0_135.35_5.89.17 () Int)
+(declare-fun EC_130.36_130.36 () Int)
+(declare-fun RES_121.33_121.33 () Int)
+(declare-fun moreElements_loopold_5.58.29 () Int)
+(declare-fun RES_134.22_134.22 () Int)
+(declare-fun list_210.13 () Int)
+(declare-fun EC_189.25_189.25 () Int)
+(declare-fun T_java.lang.Class () Int)
+(declare-fun T_java.lang.Object () Int)
+(declare-fun tmp_156.1_0_158.5_0_161.6 () Int)
+(declare-fun remainingChildren_pre_39.26 () Int)
+(declare-fun EC_192.1_1_192.45_192.45 () Int)
+(declare-fun RES_192.1_1_192.45_192.45 () Int)
+(declare-fun RES_156.1_0_158.5_0_160.18_160.18 () Int)
+(declare-fun longLast () Int)
+(declare-fun termConditional (Int Int Int) Int)
+(declare-fun T_java.util.Dictionary () Int)
+(declare-fun C_156.1 () Int)
+(declare-fun bool_false () Int)
+(declare-fun RES_192.22_192.22 () Int)
+(declare-fun T_javafe.filespace.FileTree () Int)
+(declare-fun alloc_loopold () Int)
+(declare-fun Smt.true () Int)
+(declare-fun returnsNull_5.79.29 () Int)
+(declare-fun c_134.1_0_135.20 () Int)
+(declare-fun asLockSet (Int) Int)
+(declare-fun integralMod (Int Int) Int)
+(declare-fun RES_67.21_67.21 () Int)
+(declare-fun RES_156.1_0_158.5_0_159.11_159.11 () Int)
+(declare-fun Smt.false () Int)
+(declare-fun typeof (Int) Int)
+(declare-fun int_18446744073709551615 () Int)
+(declare-fun RES_189.12_189.12 () Int)
+(declare-fun this_160.18_156.1_0_158.5_0_160.18 () Int)
+(declare-fun EC_134.1_0_134.36_134.36 () Int)
+(declare-fun RES_89.23 () Int)
+(declare-fun RES_134.1_0_134.36_134.36 () Int)
+(declare-fun RES_87.8_0_93.28_93.28 () Int)
+(declare-fun elementType_5.74.27 () Int)
+(declare-fun stringCat (Int Int) Int)
+(declare-fun remainingChildren_39.26_1_ () Int)
+(declare-fun RES_87.8_0_95.46_95.46 () Int)
+(declare-fun lookAheadValid_4.40.20 () Int)
+(declare-fun T_boolean () Int)
+(declare-fun longFirst () Int)
+(declare-fun elems_loopold_156.1_0 () Int)
+(declare-fun T_java.util.Hashtable () Int)
+(declare-fun elems_loopold () Int)
+(declare-fun T_java.util.Properties () Int)
+(declare-fun L_87.8 () Int)
+(declare-fun RES_68.21_68.21 () Int)
+(declare-fun RES_65.1_65.1 () Int)
+(declare-fun arrayFresh (Int Int Int Int Int Int Int) Bool)
+(declare-fun RES () Int)
+(declare-fun elementType_pre_5.74.27 () Int)
+(declare-fun L_156.1 () Int)
+(declare-fun intLast () Int)
+(declare-fun RES_130.36_130.36 () Int)
+(declare-fun RES_87.8_0_90.24_90.24 () Int)
+(declare-fun arrayType () Int)
+(declare-fun RES_189.25_189.25 () Int)
+(declare-fun boolEq (Int Int) Bool)
+(declare-fun EC_134.1_0_135.35_135.35 () Int)
+(declare-fun after_193.28_192.1_0_193.28_5.89.17 () Int)
+(declare-fun RES_134.1_0_135.35_135.35 () Int)
+(declare-fun T_129.49 () Int)
+(declare-fun arrayLength (Int) Int)
+(declare-fun cast (Int Int) Int)
+(declare-fun nextChild_87.8_0_95.5 () Int)
+(declare-fun elementType_71.16 () Int)
+(declare-fun asElems (Int) Int)
+(declare-fun T_javafe.filespace.PreloadedTree () Int)
+(declare-fun moreElements_5.58.29 () Int)
+(declare-fun T_char () Int)
+(declare-fun EC_192.1_0_194.16_194.16 () Int)
+(declare-fun owner_pre_6.35.28 () Int)
+(declare-fun RES_156.1_0_158.5_0_159.22_159.22 () Int)
+(declare-fun EC_140.1_140.1 () Int)
+(declare-fun divides (Int Int) Int)
+(declare-fun returnsNull_72.16 () Int)
+(declare-fun remainingChildren_39.26 () Int)
+(declare-fun remainingNodes_68.1 () Int)
+(declare-fun T_javafe.filespace.TreeWalker_ArrayEnum () Int)
+(declare-fun arg0_194.16_192.1_0_194.16_17.. () Int)
+(declare-fun InRange (Int Int) Bool)
+(declare-fun moreElements_87.8_0_95.46_5.89.17 () Int)
+(declare-fun sorted_157.13 () Int)
+(declare-fun moreElements_134.1_0_135.35_5.89.17 () Int)
+(declare-fun out_pre_16.83.49 () Int)
+(declare-fun elementType_69.24 () Int)
+(declare-fun RES_121.8_121.8 () Int)
+(declare-fun lookAheadValid_pre_4.40.20 () Int)
+(declare-fun refEQ (Int Int) Int)
+(declare-fun EC_loopold () Int)
+(declare-fun EC_157.5 () Int)
+(declare-fun remainingNodes_pre_48.26 () Int)
+(declare-fun EC_156.1_0_158.5_0_160.18_160.18 () Int)
+(declare-fun subtree_192.1_0_193.5 () Int)
+(declare-fun is (Int Int) Int)
+(declare-fun i_loopold_156.1_0_158.14 () Int)
+(declare-fun integralEQ (Int Int) Int)
+(declare-fun RES_87.8_0_89.24_89.24 () Int)
+(declare-fun boolNE (Int Int) Bool)
+(declare-fun EC_134.1_1_134.36_134.36 () Int)
+(declare-fun RES_134.1_1_134.36_134.36 () Int)
+(declare-fun T_java.io.FilterOutputStream () Int)
+(declare-fun remainingNodes_48.26 () Int)
+(declare-fun tmp0_new_Tree___130.25 () Int)
+(declare-fun isNewArray (Int) Int)
+(declare-fun L_192.1 () Int)
+(declare-fun elems_pre () Int)
+(declare-fun T_63.27 () Int)
+(declare-fun intShiftL (Int Int) Int)
+(declare-fun nonnullelements (Int Int) Bool)
+(declare-fun multiply (Int Int) Int)
+(declare-fun integralGE (Int Int) Int)
+(declare-fun lookAhead_pre_4.43.19 () Int)
+(declare-fun T_short () Int)
+(declare-fun EC_67.21_67.21 () Int)
+(declare-fun alloc_pre () Int)
+(declare-fun integralGT (Int Int) Int)
+(declare-fun EC () Int)
+(declare-fun boolAnd (Int Int) Bool)
+(declare-fun EC_156.1_0_158.5_0_159.11_159.11 () Int)
+(declare-fun EC_1_ () Int)
+(declare-fun EC_192.1_0_194.32_194.32 () Int)
+(declare-fun RES_192.1_0_194.32_194.32 () Int)
+(declare-fun arrayShapeOne (Int) Int)
+(declare-fun T_double () Int)
+(declare-fun out_16.83.49 () Int)
+(declare-fun owner_6.35.28 () Int)
+(declare-fun longShiftL (Int Int) Int)
+(declare-fun list_pre_210.13 () Int)
+(declare-fun T_java.io.Serializable () Int)
+(declare-fun boolOr (Int Int) Bool)
+(declare-fun L_134.1 () Int)
+(declare-fun int_4294967295 () Int)
+(declare-fun modulo (Int Int) Int)
+(declare-fun EC_87.8_0_93.28_93.28 () Int)
+(declare-fun EC_2_ () Int)
+(declare-fun EC_130.35 () Int)
+(declare-fun elems_134.1_0 () Int)
+(declare-fun T_120.50 () Int)
+(declare-fun returnsNull_pre_5.79.29 () Int)
+(declare-fun EC_152.6 () Int)
+(declare-fun EC_87.8_0_95.46_95.46 () Int)
+(declare-fun EC_182.16 () Int)
+(declare-fun after_95.46_87.8_0_95.46_5.89.17 () Int)
+(declare-fun null () Int)
+(declare-fun args_181.36 () Int)
+(declare-fun EC_152.6_1_ () Int)
+(declare-fun T_java.lang.String () Int)
+(declare-fun asField (Int Int) Int)
+(declare-fun a_150.36 () Int)
+(declare-fun EC_68.21_68.21 () Int)
+(declare-fun T_java.io.File () Int)
+(declare-fun after_68.21_68.21 () Int)
+(declare-fun boolImplies (Int Int) Bool)
+(declare-fun sorted_157.13_1_ () Int)
+(declare-fun integralLE (Int Int) Int)
+(declare-fun RES_1_ () Int)
+(declare-fun tmp0_remainingNodes_69.9 () Int)
+(declare-fun elems_156.1_0_158.5_0 () Int)
+(declare-fun integralLT (Int Int) Int)
+(declare-fun this_93.28_87.8_0_93.28 () Int)
+(declare-fun T_java.util.Enumeration () Int)
+(declare-fun vAllocTime (Int) Int)
+(declare-fun EC_192.1_0_193.28_193.28 () Int)
+(declare-fun sorted_157.13_2_ () Int)
+(declare-fun this_89.24_87.8_0_89.24 () Int)
+(declare-fun T_java.lang.Cloneable () Int)
+(declare-fun RES_192.1_0_193.28_193.28 () Int)
+(declare-fun RES_2_ () Int)
+(declare-fun boolNot (Int) Bool)
+(declare-fun refNE (Int Int) Int)
+(declare-fun integralXor (Int Int) Int)
+(declare-fun classDown (Int Int) Int)
+(declare-fun EC_loopold_156.1_0 () Int)
+(declare-fun sorted_loopold_156.1_0_157.13 () Int)
+(declare-fun this_90.24_87.8_0_90.24 () Int)
+(declare-fun integralNE (Int Int) Int)
+(declare-fun T_java.io.PrintStream () Int)
+(declare-fun EC_87.8_0_90.24_90.24 () Int)
+(declare-fun arrayParent (Int) Int)
+(declare-fun elemtype (Int) Int)
+(declare-fun fClosedTime (Int) Int)
+(declare-fun alloc_1_ () Int)
+(declare-fun EC_192.1_0_192.45_192.45 () Int)
+(declare-fun array (Int) Int)
+(declare-fun RES_192.1_0_192.45_192.45 () Int)
+(declare-fun LS () Int)
+(declare-fun remainingChildren_67.1 () Int)
+(declare-fun ecReturn () Int)
+(declare-fun isAllocated (Int Int) Bool)
+(declare-fun alloc_2_ () Int)
+(declare-fun elems () Int)
+(declare-fun subtypes (Int Int) Bool)
+(declare-fun T_javafe.filespace.EmptyEnum () Int)
+(declare-fun EC_182.16_1_ () Int)
+(declare-fun EC_121.33_121.33 () Int)
+(assert (subtypes T_java.io.OutputStream T_java.lang.Object))
+(assert (= T_java.io.OutputStream (asChild T_java.io.OutputStream T_java.lang.Object)))
+(assert (subtypes T_java.io.FilterOutputStream T_java.io.OutputStream))
+(assert (= T_java.io.FilterOutputStream (asChild T_java.io.FilterOutputStream T_java.io.OutputStream)))
+(assert (subtypes T_javafe.filespace.TreeWalker T_javafe.filespace.LookAheadEnum))
+(assert (= T_javafe.filespace.TreeWalker (asChild T_javafe.filespace.TreeWalker T_javafe.filespace.LookAheadEnum)))
+(assert (forall ((?t Int)) (! (= (subtypes ?t T_javafe.filespace.TreeWalker) (= ?t T_javafe.filespace.TreeWalker)) :pattern ((subtypes ?t T_javafe.filespace.TreeWalker)) )))
+(assert (subtypes T_javafe.filespace.FileTree T_javafe.filespace.PreloadedTree))
+(assert (= T_javafe.filespace.FileTree (asChild T_javafe.filespace.FileTree T_javafe.filespace.PreloadedTree)))
+(assert (subtypes T_javafe.filespace.LookAheadEnum T_java.lang.Object))
+(assert (= T_javafe.filespace.LookAheadEnum (asChild T_javafe.filespace.LookAheadEnum T_java.lang.Object)))
+(assert (subtypes T_javafe.filespace.LookAheadEnum T_java.util.Enumeration))
+(assert (subtypes T_javafe.filespace.TreeWalker_ArrayEnum T_javafe.filespace.LookAheadEnum))
+(assert (= T_javafe.filespace.TreeWalker_ArrayEnum (asChild T_javafe.filespace.TreeWalker_ArrayEnum T_javafe.filespace.LookAheadEnum)))
+(assert (subtypes T_javafe.filespace.HashTree T_javafe.filespace.Tree))
+(assert (= T_javafe.filespace.HashTree (asChild T_javafe.filespace.HashTree T_javafe.filespace.Tree)))
+(assert (subtypes T_java.lang.System T_java.lang.Object))
+(assert (= T_java.lang.System (asChild T_java.lang.System T_java.lang.Object)))
+(assert (forall ((?t Int)) (! (= (subtypes ?t T_java.lang.System) (= ?t T_java.lang.System)) :pattern ((subtypes ?t T_java.lang.System)) )))
+(assert (subtypes T_java.util.EscjavaKeyValue T_java.lang.Object))
+(assert (subtypes T_java.util.Properties T_java.util.Hashtable))
+(assert (= T_java.util.Properties (asChild T_java.util.Properties T_java.util.Hashtable)))
+(assert (subtypes T_javafe.filespace.Tree T_java.lang.Object))
+(assert (= T_javafe.filespace.Tree (asChild T_javafe.filespace.Tree T_java.lang.Object)))
+(assert (subtypes T_java.lang.String T_java.lang.Object))
+(assert (= T_java.lang.String (asChild T_java.lang.String T_java.lang.Object)))
+(assert (forall ((?t Int)) (! (= (subtypes ?t T_java.lang.String) (= ?t T_java.lang.String)) :pattern ((subtypes ?t T_java.lang.String)) )))
+(assert (subtypes T_java.lang.String T_java.io.Serializable))
+(assert (subtypes T_java.lang.String T_java.lang.Comparable))
+(assert (subtypes T_java.util.Enumeration T_java.lang.Object))
+(assert (subtypes T_java.lang.Comparable T_java.lang.Object))
+(assert (subtypes T_java.util.Map T_java.lang.Object))
+(assert (subtypes T_java.util.Map T_java.util.EscjavaKeyValue))
+(assert (subtypes T_java.util.Dictionary T_java.lang.Object))
+(assert (= T_java.util.Dictionary (asChild T_java.util.Dictionary T_java.lang.Object)))
+(assert (subtypes T_java.util.Dictionary T_java.util.EscjavaKeyValue))
+(assert (subtypes T_java.io.Serializable T_java.lang.Object))
+(assert (subtypes T_java.io.PrintStream T_java.io.FilterOutputStream))
+(assert (= T_java.io.PrintStream (asChild T_java.io.PrintStream T_java.io.FilterOutputStream)))
+(assert (subtypes T_javafe.filespace.PreloadedTree T_javafe.filespace.HashTree))
+(assert (= T_javafe.filespace.PreloadedTree (asChild T_javafe.filespace.PreloadedTree T_javafe.filespace.HashTree)))
+(assert (subtypes T_java.util.Hashtable T_java.util.Dictionary))
+(assert (= T_java.util.Hashtable (asChild T_java.util.Hashtable T_java.util.Dictionary)))
+(assert (subtypes T_java.util.Hashtable T_java.util.Map))
+(assert (subtypes T_java.util.Hashtable T_java.lang.Cloneable))
+(assert (subtypes T_java.util.Hashtable T_java.io.Serializable))
+(assert (subtypes T_java.lang.Cloneable T_java.lang.Object))
+(assert (subtypes T_javafe.filespace.EmptyEnum T_java.lang.Object))
+(assert (= T_javafe.filespace.EmptyEnum (asChild T_javafe.filespace.EmptyEnum T_java.lang.Object)))
+(assert (subtypes T_javafe.filespace.EmptyEnum T_java.util.Enumeration))
+(assert (subtypes T_java.io.File T_java.lang.Object))
+(assert (= T_java.io.File (asChild T_java.io.File T_java.lang.Object)))
+(assert (subtypes T_java.io.File T_java.io.Serializable))
+(assert (subtypes T_java.io.File T_java.lang.Comparable))
+(assert (distinct arrayType T_boolean T_char T_byte T_short T_int T_long T_float T_double T_.TYPE T_java.io.OutputStream T_java.io.FilterOutputStream T_javafe.filespace.TreeWalker T_javafe.filespace.FileTree T_javafe.filespace.LookAheadEnum T_javafe.filespace.TreeWalker_ArrayEnum T_javafe.filespace.HashTree T_java.lang.System T_java.util.EscjavaKeyValue T_java.util.Properties T_javafe.filespace.Tree T_java.lang.String T_java.util.Enumeration T_java.lang.Comparable T_java.util.Map T_java. [...]
+(assert (= Smt.true (is out_16.83.49 T_java.io.PrintStream)))
+(assert (forall ((?n Int)) (! (=> (and (<= 0 ?n) (< ?n 63)) (<= 1 (longShiftL 1 ?n))) :pattern ((longShiftL 1 ?n)) )))
+(assert (forall ((?n Int)) (! (=> (and (<= 0 ?n) (< ?n 31)) (<= 1 (intShiftL 1 ?n))) :pattern ((intShiftL 1 ?n)) )))
+(assert (forall ((?x Int) (?y Int)) (! (=> (and (<= 0 ?x) (<= 0 ?y)) (<= 0 (integralXor ?x ?y))) :pattern ((integralXor ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (let ((?v_0 (integralDiv ?x ?y))) (=> (and (<= 0 ?x) (< 0 ?y)) (and (<= 0 ?v_0) (<= ?v_0 ?x)))) :pattern ((integralDiv ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (let ((?v_0 (integralOr ?x ?y))) (=> (and (<= 0 ?x) (<= 0 ?y)) (and (<= ?x ?v_0) (<= ?y ?v_0)))) :pattern ((integralOr ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (=> (<= 0 ?y) (<= (integralAnd ?x ?y) ?y)) :pattern ((integralAnd ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (=> (<= 0 ?x) (<= (integralAnd ?x ?y) ?x)) :pattern ((integralAnd ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (=> (or (<= 0 ?x) (<= 0 ?y)) (<= 0 (integralAnd ?x ?y))) :pattern ((integralAnd ?x ?y)) )))
+(assert (forall ((?t Int)) (! (let ((?v_0 (classLiteral ?t))) (and (not (= ?v_0 null)) (= Smt.true (is ?v_0 T_java.lang.Class)) (isAllocated ?v_0 alloc))) :pattern ((classLiteral ?t)) )))
+(assert (forall ((?x Int) (?e Int)) (= (nonnullelements ?x ?e) (and (not (= ?x null)) (forall ((?i Int)) (=> (and (<= 0 ?i) (< ?i (arrayLength ?x))) (not (= (select1 (select1 ?e ?x) ?i) null))))))))
+(assert (forall ((?b Int) (?x Int) (?y Int)) (! (=> (not (= ?b Smt.true)) (= (termConditional ?b ?x ?y) ?y)) :pattern ((termConditional ?b ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (termConditional Smt.true ?x ?y) ?x) :pattern ((termConditional Smt.true ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (refNE ?x ?y) Smt.true) (not (= ?x ?y))) :pattern ((refNE ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (refEQ ?x ?y) Smt.true) (= ?x ?y)) :pattern ((refEQ ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (integralNE ?x ?y) Smt.true) (not (= ?x ?y))) :pattern ((integralNE ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (integralLT ?x ?y) Smt.true) (< ?x ?y)) :pattern ((integralLT ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (integralLE ?x ?y) Smt.true) (<= ?x ?y)) :pattern ((integralLE ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (integralGT ?x ?y) Smt.true) (> ?x ?y)) :pattern ((integralGT ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (integralGE ?x ?y) Smt.true) (>= ?x ?y)) :pattern ((integralGE ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (let ((?v_0 (stringCat ?x ?y))) (and (not (= ?v_0 null)) (subtypes (typeof ?v_0) T_java.lang.String))) :pattern ((stringCat ?x ?y)) )))
+(assert (forall ((?x Int) (?y Int)) (! (= (= (integralEQ ?x ?y) Smt.true) (= ?x ?y)) :pattern ((integralEQ ?x ?y)) )))
+(assert (forall ((?a Int) (?b Int)) (= (boolOr ?a ?b) (or (= ?a Smt.true) (= ?b Smt.true)))))
+(assert (forall ((?a Int)) (= (boolNot ?a) (not (= ?a Smt.true)))))
+(assert (forall ((?a Int) (?b Int)) (= (boolNE ?a ?b) (not (= (= ?a Smt.true) (= ?b Smt.true))))))
+(assert (forall ((?a Int) (?b Int)) (= (boolImplies ?a ?b) (=> (= ?a Smt.true) (= ?b Smt.true)))))
+(assert (forall ((?a Int) (?b Int)) (= (boolEq ?a ?b) (= (= ?a Smt.true) (= ?b Smt.true)))))
+(assert (forall ((?a Int) (?b Int)) (= (boolAnd ?a ?b) (and (= ?a Smt.true) (= ?b Smt.true)))))
+(assert (forall ((?x Int) (?y Int)) (let ((?v_0 (multiply ?x ?y))) (= (multiply (integralDiv ?v_0 ?y) ?y) ?v_0))))
+(assert (forall ((?i Int) (?j Int)) (= (integralMod (+ ?j ?i) ?j) (integralMod ?i ?j))))
+(assert (forall ((?i Int) (?j Int)) (= (integralMod (+ ?i ?j) ?j) (integralMod ?i ?j))))
+(assert (forall ((?i Int) (?j Int)) (! (let ((?v_0 (integralMod ?i ?j))) (=> (< ?j 0) (and (< ?j ?v_0) (<= ?v_0 0)))) :pattern ((integralMod ?i ?j)) )))
+(assert (forall ((?i Int) (?j Int)) (! (let ((?v_0 (integralMod ?i ?j))) (=> (< 0 ?j) (and (<= 0 ?v_0) (< ?v_0 ?j)))) :pattern ((integralMod ?i ?j)) )))
+(assert (forall ((?i Int) (?j Int)) (! (= (+ (multiply (integralDiv ?i ?j) ?j) (integralMod ?i ?j)) ?i) :pattern ((integralMod ?i ?j))  :pattern ((integralDiv ?i ?j)) )))
+(assert (forall ((?s Int)) (! (=> (= Smt.true (isNewArray ?s)) (subtypes (typeof ?s) arrayType)) :pattern ((isNewArray ?s)) )))
+(assert (forall ((?t Int)) (! (subtypes (array ?t) arrayType) :pattern ((array ?t)) )))
+(assert (= arrayType (asChild arrayType T_java.lang.Object)))
+(assert (forall ((?a Int) (?a0 Int) (?b0 Int) (?e Int) (?n Int) (?T Int) (?v Int)) (! (= (arrayFresh ?a ?a0 ?b0 ?e (arrayShapeOne ?n) ?T ?v) (and (<= ?a0 (vAllocTime ?a)) (isAllocated ?a ?b0) (not (= ?a null)) (= (typeof ?a) ?T) (= (arrayLength ?a) ?n) (forall ((?i Int)) (! (= (select1 (select1 ?e ?a) ?i) ?v) :pattern ((select1 (select1 ?e ?a) ?i)) )))) :pattern ((arrayFresh ?a ?a0 ?b0 ?e (arrayShapeOne ?n) ?T ?v)) )))
+(assert (forall ((?a Int) (?a0 Int) (?b0 Int) (?e Int) (?n Int) (?s Int) (?T Int) (?v Int)) (! (= (arrayFresh ?a ?a0 ?b0 ?e (arrayShapeMore ?n ?s) ?T ?v) (and (<= ?a0 (vAllocTime ?a)) (isAllocated ?a ?b0) (not (= ?a null)) (= (typeof ?a) ?T) (= (arrayLength ?a) ?n) (forall ((?i Int)) (! (let ((?v_0 (select1 (select1 ?e ?a) ?i))) (and (arrayFresh ?v_0 ?a0 ?b0 ?e ?s (elemtype ?T) ?v) (= (arrayParent ?v_0) ?a) (= (arrayPosition ?v_0) ?i))) :pattern ((select1 (select1 ?e ?a) ?i)) )))) :patte [...]
+(assert (forall ((?a Int)) (! (let ((?v_0 (arrayLength ?a))) (and (<= 0 ?v_0) (= Smt.true (is ?v_0 T_int)))) :pattern ((arrayLength ?a)) )))
+(assert (forall ((?x Int)) (! (=> (subtypes (typeof ?x) T_java.lang.Object) (lockLE null ?x)) :pattern ((lockLE null ?x))  :pattern ((lockLT null ?x))  :pattern ((lockLE ?x null))  :pattern ((lockLT ?x null)) )))
+(assert (forall ((?S Int) (?mu Int)) (let ((?v_0 (asLockSet ?S))) (=> (= (select1 ?v_0 ?mu) Smt.true) (lockLE ?mu (max ?v_0))))))
+(assert (forall ((?x Int) (?y Int)) (= (lockLT ?x ?y) (< ?x ?y))))
+(assert (forall ((?x Int) (?y Int)) (= (lockLE ?x ?y) (<= ?x ?y))))
+(assert (forall ((?S Int)) (! (= (select1 (asLockSet ?S) null) Smt.true) :pattern ((asLockSet ?S)) )))
+(assert (forall ((?S Int)) (let ((?v_0 (asLockSet ?S))) (= (select1 ?v_0 (max ?v_0)) Smt.true))))
+(assert (forall ((?a Int) (?e Int) (?i Int) (?a0 Int)) (! (=> (and (< (eClosedTime ?e) ?a0) (isAllocated ?a ?a0)) (isAllocated (select1 (select1 ?e ?a) ?i) ?a0)) :pattern ((isAllocated (select1 (select1 ?e ?a) ?i) ?a0)) )))
+(assert (forall ((?x Int) (?f Int) (?a0 Int)) (! (=> (and (< (fClosedTime ?f) ?a0) (isAllocated ?x ?a0)) (isAllocated (select1 ?f ?x) ?a0)) :pattern ((isAllocated (select1 ?f ?x) ?a0)) )))
+(assert (forall ((?x Int) (?a0 Int)) (= (isAllocated ?x ?a0) (< (vAllocTime ?x) ?a0))))
+(assert (forall ((?e Int) (?a Int) (?i Int)) (! (= Smt.true (is (select1 (select1 (asElems ?e) ?a) ?i) (elemtype (typeof ?a)))) :pattern ((select1 (select1 (asElems ?e) ?a) ?i)) )))
+(assert (forall ((?f Int) (?t Int) (?x Int)) (! (= Smt.true (is (select1 (asField ?f ?t) ?x) ?t)) :pattern ((select1 (asField ?f ?t) ?x)) )))
+(assert (forall ((?x Int) (?t Int)) (! (=> (subtypes ?t T_java.lang.Object) (= (= Smt.true (is ?x ?t)) (or (= ?x null) (subtypes (typeof ?x) ?t)))) :pattern ((subtypes ?t T_java.lang.Object) (is ?x ?t)) )))
+(assert (< intLast longLast))
+(assert (< 1000000 intLast))
+(assert (< intFirst (- 1000000)))
+(assert (< longFirst intFirst))
+(assert (forall ((?x Int)) (! (= (= Smt.true (is ?x T_long)) (and (<= longFirst ?x) (<= ?x longLast))) :pattern ((is ?x T_long)) )))
+(assert (forall ((?x Int)) (! (= (= Smt.true (is ?x T_int)) (and (<= intFirst ?x) (<= ?x intLast))) :pattern ((is ?x T_int)) )))
+(assert (forall ((?x Int)) (= (= Smt.true (is ?x T_short)) (and (<= (- 32768) ?x) (<= ?x 32767)))))
+(assert (forall ((?x Int)) (= (= Smt.true (is ?x T_byte)) (and (<= (- 128) ?x) (<= ?x 127)))))
+(assert (forall ((?x Int)) (! (= (= Smt.true (is ?x T_char)) (and (<= 0 ?x) (<= ?x 65535))) :pattern ((is ?x T_char)) )))
+(assert (distinct bool_false Smt.true))
+(assert (forall ((?x Int) (?t Int)) (! (=> (= Smt.true (is ?x ?t)) (= (cast ?x ?t) ?x)) :pattern ((cast ?x ?t)) )))
+(assert (forall ((?x Int) (?t Int)) (! (= Smt.true (is (cast ?x ?t) ?t)) :pattern ((cast ?x ?t)) )))
+(assert (forall ((?t0 Int) (?t1 Int)) (! (let ((?v_0 (elemtype ?t0))) (= (subtypes ?t0 (array ?t1)) (and (= ?t0 (array ?v_0)) (subtypes ?v_0 ?t1)))) :pattern ((subtypes ?t0 (array ?t1))) )))
+(assert (forall ((?t Int)) (! (= (elemtype (array ?t)) ?t) :pattern ((elemtype (array ?t))) )))
+(assert (forall ((?t Int)) (! (subtypes (array ?t) T_java.lang.Cloneable) :pattern ((array ?t)) )))
+(assert (subtypes T_java.lang.Cloneable T_java.lang.Object))
+(assert (forall ((?t0 Int) (?t1 Int) (?t2 Int)) (let ((?v_0 (asChild ?t1 ?t2))) (=> (subtypes ?t0 ?v_0) (= (classDown ?t2 ?t0) ?v_0)))))
+(assert (forall ((?t Int)) (! (=> (subtypes T_double ?t) (= ?t T_double)) :pattern ((subtypes T_double ?t)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes T_float ?t) (= ?t T_float)) :pattern ((subtypes T_float ?t)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes T_long ?t) (= ?t T_long)) :pattern ((subtypes T_long ?t)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes T_int ?t) (= ?t T_int)) :pattern ((subtypes T_int ?t)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes T_short ?t) (= ?t T_short)) :pattern ((subtypes T_short ?t)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes T_byte ?t) (= ?t T_byte)) :pattern ((subtypes T_byte ?t)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes T_char ?t) (= ?t T_char)) :pattern ((subtypes T_char ?t)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes T_boolean ?t) (= ?t T_boolean)) :pattern ((subtypes T_boolean ?t)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes ?t T_double) (= ?t T_double)) :pattern ((subtypes ?t T_double)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes ?t T_float) (= ?t T_float)) :pattern ((subtypes ?t T_float)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes ?t T_long) (= ?t T_long)) :pattern ((subtypes ?t T_long)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes ?t T_int) (= ?t T_int)) :pattern ((subtypes ?t T_int)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes ?t T_short) (= ?t T_short)) :pattern ((subtypes ?t T_short)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes ?t T_byte) (= ?t T_byte)) :pattern ((subtypes ?t T_byte)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes ?t T_char) (= ?t T_char)) :pattern ((subtypes ?t T_char)) )))
+(assert (forall ((?t Int)) (! (=> (subtypes ?t T_boolean) (= ?t T_boolean)) :pattern ((subtypes ?t T_boolean)) )))
+(assert (forall ((?t0 Int) (?t1 Int)) (! (=> (and (subtypes ?t0 ?t1) (subtypes ?t1 ?t0)) (= ?t0 ?t1)) :pattern ((subtypes ?t0 ?t1) (subtypes ?t1 ?t0)) )))
+(assert (forall ((?t0 Int) (?t1 Int) (?t2 Int)) (! (=> (and (subtypes ?t0 ?t1) (subtypes ?t1 ?t2)) (subtypes ?t0 ?t2)) :pattern ((subtypes ?t0 ?t1) (subtypes ?t1 ?t2)) )))
+(assert (subtypes T_java.lang.Object T_java.lang.Object))
+(assert (forall ((?t Int)) (! (subtypes ?t ?t) :pattern ((subtypes ?t ?t)) )))
+(assert (forall ((?m Int) (?i Int) (?j Int) (?x Int)) (=> (not (= ?i ?j)) (= (select1 (store1 ?m ?i ?x) ?j) (select1 ?m ?j)))))
+(assert (forall ((?m Int) (?i Int) (?x Int)) (= (select1 (store1 ?m ?i ?x) ?i) ?x)))
+(assert (let ((?v_0 (not (= args_181.36 null)))) (let ((?v_1 (not ?v_0)) (?v_3 (arrayLength args_181.36))) (let ((?v_61 (not (= ?v_3 1)))) (let ((?v_29 (not ?v_61)) (?v_8 (= Smt.true Smt.true)) (?v_2 (<= 0 0)) (?v_4 (< 0 ?v_3)) (?v_30 (= treeName_186.1 (select1 (select1 elems args_181.36) 0))) (?v_5 (not (= treeName_186.1 null))) (?v_31 (< alloc after_189.25_189.25)) (?v_6 (not (= RES_189.25_189.25 null))) (?v_32 (not (isAllocated RES_189.25_189.25 alloc))) (?v_33 (= Smt.true (is RES_189 [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/qcft-smtlib3dbc51.smt2 b/test/regress/regress0/quantifiers/qcft-smtlib3dbc51.smt2
new file mode 100644
index 0000000..6874c52
--- /dev/null
+++ b/test/regress/regress0/quantifiers/qcft-smtlib3dbc51.smt2
@@ -0,0 +1,233 @@
+; COMMAND-LINE: --qcf-tconstraint
+; EXPECT: unsat
+(set-logic AUFLIRA)
+(set-info :source |http://proval.lri.fr/why-benchmarks |)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-sort Unit 0)
+(declare-sort c_unique 0)
+(declare-sort c_ssorted 0)
+(declare-sort c_type 0)
+(declare-sort c_Boolean 0)
+(declare-fun c_sort (c_type c_unique) c_ssorted)
+(declare-fun c_Boolean_true () c_Boolean)
+(declare-fun c_Boolean_false () c_Boolean)
+(assert (forall ((?b_22_1 c_Boolean)) (or (= c_Boolean_true ?b_22_1) (= c_Boolean_false ?b_22_1))))
+(assert (not (= c_Boolean_true c_Boolean_false)))
+(declare-fun int2U (Int) c_unique)
+(declare-fun ss2Int (c_ssorted) Int)
+(declare-fun real2U (Real) c_unique)
+(declare-fun ss2Real (c_ssorted) Real)
+(declare-fun bool2U (c_Boolean) c_unique)
+(declare-fun ss2Bool (c_ssorted) c_Boolean)
+(declare-fun c_int () c_type)
+(declare-fun c_bool () c_type)
+(declare-fun c_real () c_type)
+(declare-fun c_unit () c_type)
+(declare-fun c_ref (c_unique) c_unique)
+(assert (forall ((?t_21_2 c_type)) (forall ((?x_20_3 c_unique)) (forall ((?y_19_4 c_unique)) (=> (= (c_sort ?t_21_2 ?x_20_3) (c_sort ?t_21_2 ?y_19_4)) (= ?x_20_3 ?y_19_4))))))
+(assert (forall ((?x_18_5 Int)) (= (ss2Int (c_sort c_int (int2U ?x_18_5))) ?x_18_5)))
+(assert (forall ((?x_17_6 Int)) (forall ((?y_16_7 Int)) (=> (= (int2U ?x_17_6) (int2U ?y_16_7)) (= ?x_17_6 ?y_16_7)))))
+(assert (forall ((?x_15_8 Real)) (forall ((?y_14_9 Real)) (=> (= (real2U ?x_15_8) (real2U ?y_14_9)) (= ?x_15_8 ?y_14_9)))))
+(assert (forall ((?x_13_10 c_Boolean)) (forall ((?y_12_11 c_Boolean)) (=> (= (bool2U ?x_13_10) (bool2U ?y_12_11)) (= ?x_13_10 ?y_12_11)))))
+(assert (forall ((?x_11_12 c_ssorted)) (forall ((?y_10_13 c_ssorted)) (=> (= (ss2Int ?x_11_12) (ss2Int ?y_10_13)) (= ?x_11_12 ?y_10_13)))))
+(assert (forall ((?x_9_14 c_ssorted)) (forall ((?y_8_15 c_ssorted)) (=> (= (ss2Real ?x_9_14) (ss2Real ?y_8_15)) (= ?x_9_14 ?y_8_15)))))
+(assert (forall ((?x_7_16 c_ssorted)) (forall ((?y_6_17 c_ssorted)) (=> (= (ss2Bool ?x_7_16) (ss2Bool ?y_6_17)) (= ?x_7_16 ?y_6_17)))))
+(assert (forall ((?x_5_18 Real)) (= (ss2Real (c_sort c_real (real2U ?x_5_18))) ?x_5_18)))
+(assert (forall ((?x_4_19 c_Boolean)) (= (ss2Bool (c_sort c_bool (bool2U ?x_4_19))) ?x_4_19)))
+(assert (forall ((?x_3_20 c_unique)) (= (int2U (ss2Int (c_sort c_int ?x_3_20))) ?x_3_20)))
+(assert (forall ((?x_2_21 c_unique)) (= (real2U (ss2Real (c_sort c_real ?x_2_21))) ?x_2_21)))
+(assert (forall ((?x_1_22 c_unique)) (= (bool2U (ss2Bool (c_sort c_bool ?x_1_22))) ?x_1_22)))
+(declare-fun eq_int (Int Int) Bool)
+(declare-fun neq_int (Int Int) Bool)
+(declare-fun lt_int_bool (Int Int) c_Boolean)
+(declare-fun le_int_bool (Int Int) c_Boolean)
+(declare-fun gt_int_bool (Int Int) c_Boolean)
+(declare-fun ge_int_bool (Int Int) c_Boolean)
+(declare-fun eq_int_bool (Int Int) c_Boolean)
+(declare-fun neq_int_bool (Int Int) c_Boolean)
+(assert (forall ((?x_40_23 Int)) (forall ((?y_39_24 Int)) (= (= (lt_int_bool ?x_40_23 ?y_39_24) c_Boolean_true) (< ?x_40_23 ?y_39_24)))))
+(assert (forall ((?x_42_25 Int)) (forall ((?y_41_26 Int)) (= (= (le_int_bool ?x_42_25 ?y_41_26) c_Boolean_true) (<= ?x_42_25 ?y_41_26)))))
+(assert (forall ((?x_44_27 Int)) (forall ((?y_43_28 Int)) (= (= (gt_int_bool ?x_44_27 ?y_43_28) c_Boolean_true) (> ?x_44_27 ?y_43_28)))))
+(assert (forall ((?x_46_29 Int)) (forall ((?y_45_30 Int)) (= (= (ge_int_bool ?x_46_29 ?y_45_30) c_Boolean_true) (>= ?x_46_29 ?y_45_30)))))
+(assert (forall ((?x_48_31 Int)) (forall ((?y_47_32 Int)) (= (= (eq_int_bool ?x_48_31 ?y_47_32) c_Boolean_true) (= ?x_48_31 ?y_47_32)))))
+(assert (forall ((?x_50_33 Int)) (forall ((?y_49_34 Int)) (= (= (neq_int_bool ?x_50_33 ?y_49_34) c_Boolean_true) (not (= ?x_50_33 ?y_49_34))))))
+(declare-fun add_real (Real Real) Real)
+(declare-fun sub_real (Real Real) Real)
+(declare-fun mul_real (Real Real) Real)
+(declare-fun div_real (Real Real) Real)
+(declare-fun pow_real (Real Real) Real)
+(declare-fun neg_real (Real) Real)
+(declare-fun abs_real (Real) Real)
+(declare-fun sqrt_real (Real) Real)
+(declare-fun real_of_int (Int) Real)
+(declare-fun int_of_real (Real) Int)
+(declare-fun lt_real (Real Real) Bool)
+(declare-fun le_real (Real Real) Bool)
+(declare-fun gt_real (Real Real) Bool)
+(declare-fun ge_real (Real Real) Bool)
+(declare-fun eq_real (Real Real) Bool)
+(declare-fun neq_real (Real Real) Bool)
+(declare-fun eq_bool (c_Boolean c_Boolean) Bool)
+(declare-fun neq_bool (c_Boolean c_Boolean) Bool)
+(declare-fun eq_unit (c_ssorted c_ssorted) Bool)
+(declare-fun neq_unit (c_ssorted c_ssorted) Bool)
+(declare-fun smtlib__ite (c_Boolean c_ssorted c_ssorted) c_unique)
+(assert (forall ((?t_1_76_35 c_type)) (forall ((?x_75_36 c_unique)) (forall ((?y_74_37 c_unique)) (= (smtlib__ite c_Boolean_true (c_sort ?t_1_76_35 ?x_75_36) (c_sort ?t_1_76_35 ?y_74_37)) ?x_75_36)))))
+(assert (forall ((?t_2_79_38 c_type)) (forall ((?x_78_39 c_unique)) (forall ((?y_77_40 c_unique)) (= (smtlib__ite c_Boolean_false (c_sort ?t_2_79_38 ?x_78_39) (c_sort ?t_2_79_38 ?y_77_40)) ?y_77_40)))))
+(declare-fun bw_compl (Int) Int)
+(declare-fun bw_and (Int Int) Int)
+(declare-fun bw_xor (Int Int) Int)
+(declare-fun bw_or (Int Int) Int)
+(declare-fun lsl (Int Int) Int)
+(declare-fun lsr (Int Int) Int)
+(declare-fun non_int (Int) Int)
+(declare-fun type_pointer (c_type) c_type)
+(declare-fun type_addr (c_type) c_type)
+(declare-fun type_alloc_table () c_type)
+(declare-fun block_length (c_ssorted c_ssorted) Int)
+(declare-fun base_addr (c_ssorted) c_unique)
+(declare-fun offset (c_ssorted) Int)
+(declare-fun shift (c_ssorted Int) c_unique)
+(declare-fun sub_pointer (c_ssorted c_ssorted) Int)
+(declare-fun lt_pointer (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_3_88_41 c_type)) (forall ((?p1_87_42 c_unique)) (forall ((?p2_86_43 c_unique)) (let ((?v_0 (type_pointer ?t_3_88_41))) (let ((?v_1 (c_sort ?v_0 ?p1_87_42)) (?v_2 (c_sort ?v_0 ?p2_86_43))) (= (lt_pointer ?v_1 ?v_2) (and (= (base_addr ?v_1) (base_addr ?v_2)) (< (offset ?v_1) (offset ?v_2))))))))))
+(declare-fun le_pointer (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_4_91_44 c_type)) (forall ((?p1_90_45 c_unique)) (forall ((?p2_89_46 c_unique)) (let ((?v_0 (type_pointer ?t_4_91_44))) (let ((?v_1 (c_sort ?v_0 ?p1_90_45)) (?v_2 (c_sort ?v_0 ?p2_89_46))) (= (le_pointer ?v_1 ?v_2) (and (= (base_addr ?v_1) (base_addr ?v_2)) (<= (offset ?v_1) (offset ?v_2))))))))))
+(declare-fun gt_pointer (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_5_94_47 c_type)) (forall ((?p1_93_48 c_unique)) (forall ((?p2_92_49 c_unique)) (let ((?v_0 (type_pointer ?t_5_94_47))) (let ((?v_1 (c_sort ?v_0 ?p1_93_48)) (?v_2 (c_sort ?v_0 ?p2_92_49))) (= (gt_pointer ?v_1 ?v_2) (and (= (base_addr ?v_1) (base_addr ?v_2)) (> (offset ?v_1) (offset ?v_2))))))))))
+(declare-fun ge_pointer (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_6_97_50 c_type)) (forall ((?p1_96_51 c_unique)) (forall ((?p2_95_52 c_unique)) (let ((?v_0 (type_pointer ?t_6_97_50))) (let ((?v_1 (c_sort ?v_0 ?p1_96_51)) (?v_2 (c_sort ?v_0 ?p2_95_52))) (= (ge_pointer ?v_1 ?v_2) (and (= (base_addr ?v_1) (base_addr ?v_2)) (>= (offset ?v_1) (offset ?v_2))))))))))
+(declare-fun valid (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_7_104_53 c_type)) (forall ((?a_103_54 c_unique)) (forall ((?p_102_55 c_unique)) (let ((?v_2 (c_sort type_alloc_table ?a_103_54)) (?v_0 (c_sort (type_pointer ?t_7_104_53) ?p_102_55))) (let ((?v_1 (offset ?v_0))) (= (valid ?v_2 ?v_0) (and (<= 0 ?v_1) (< ?v_1 (block_length ?v_2 ?v_0))))))))))
+(declare-fun valid_index (c_ssorted c_ssorted Int) Bool)
+(assert (forall ((?t_8_108_56 c_type)) (forall ((?a_107_57 c_unique)) (forall ((?p_106_58 c_unique)) (forall ((?i_105_59 Int)) (let ((?v_2 (c_sort type_alloc_table ?a_107_57)) (?v_0 (c_sort (type_pointer ?t_8_108_56) ?p_106_58))) (let ((?v_1 (+ (offset ?v_0) ?i_105_59))) (= (valid_index ?v_2 ?v_0 ?i_105_59) (and (<= 0 ?v_1) (< ?v_1 (block_length ?v_2 ?v_0)))))))))))
+(declare-fun valid_range (c_ssorted c_ssorted Int Int) Bool)
+(assert (forall ((?t_9_113_60 c_type)) (forall ((?a_112_61 c_unique)) (forall ((?p_111_62 c_unique)) (forall ((?i_110_63 Int)) (forall ((?j_109_64 Int)) (let ((?v_2 (c_sort type_alloc_table ?a_112_61)) (?v_0 (c_sort (type_pointer ?t_9_113_60) ?p_111_62))) (let ((?v_1 (offset ?v_0))) (= (valid_range ?v_2 ?v_0 ?i_110_63 ?j_109_64) (and (<= 0 (+ ?v_1 ?i_110_63)) (< (+ ?v_1 ?j_109_64) (block_length ?v_2 ?v_0))))))))))))
+(assert (forall ((?t_10_116_65 c_type)) (forall ((?p_115_66 c_unique)) (forall ((?i_114_67 Int)) (let ((?v_0 (type_pointer ?t_10_116_65))) (let ((?v_1 (c_sort ?v_0 ?p_115_66))) (= (offset (c_sort ?v_0 (shift ?v_1 ?i_114_67))) (+ (offset ?v_1) ?i_114_67))))))))
+(assert (forall ((?t_11_118_68 c_type)) (forall ((?p_117_69 c_unique)) (= (shift (c_sort (type_pointer ?t_11_118_68) ?p_117_69) 0) ?p_117_69))))
+(assert (forall ((?t_12_122_70 c_type)) (forall ((?p_121_71 c_unique)) (forall ((?i_120_72 Int)) (forall ((?j_119_73 Int)) (let ((?v_0 (type_pointer ?t_12_122_70))) (let ((?v_1 (c_sort ?v_0 ?p_121_71))) (= (shift (c_sort ?v_0 (shift ?v_1 ?i_120_72)) ?j_119_73) (shift ?v_1 (+ ?i_120_72 ?j_119_73))))))))))
+(assert (forall ((?t_13_125_74 c_type)) (forall ((?p_124_75 c_unique)) (forall ((?i_123_76 Int)) (let ((?v_0 (type_pointer ?t_13_125_74))) (let ((?v_1 (c_sort ?v_0 ?p_124_75))) (= (base_addr (c_sort ?v_0 (shift ?v_1 ?i_123_76))) (base_addr ?v_1))))))))
+(assert (forall ((?t_14_129_77 c_type)) (forall ((?a_128_78 c_unique)) (forall ((?p_127_79 c_unique)) (forall ((?i_126_80 Int)) (let ((?v_1 (c_sort type_alloc_table ?a_128_78)) (?v_0 (type_pointer ?t_14_129_77))) (let ((?v_2 (c_sort ?v_0 ?p_127_79))) (= (block_length ?v_1 (c_sort ?v_0 (shift ?v_2 ?i_126_80))) (block_length ?v_1 ?v_2)))))))))
+(assert (forall ((?t_15_133_81 c_type)) (forall ((?a_132_82 c_unique)) (forall ((?p1_131_83 c_unique)) (forall ((?p2_130_84 c_unique)) (let ((?v_0 (type_pointer ?t_15_133_81))) (let ((?v_1 (c_sort ?v_0 ?p1_131_83)) (?v_3 (c_sort ?v_0 ?p2_130_84)) (?v_2 (c_sort type_alloc_table ?a_132_82))) (=> (= (base_addr ?v_1) (base_addr ?v_3)) (= (block_length ?v_2 ?v_1) (block_length ?v_2 ?v_3))))))))))
+(assert (forall ((?t_16_136_85 c_type)) (forall ((?p1_135_86 c_unique)) (forall ((?p2_134_87 c_unique)) (let ((?v_0 (type_pointer ?t_16_136_85))) (let ((?v_1 (c_sort ?v_0 ?p1_135_86)) (?v_2 (c_sort ?v_0 ?p2_134_87))) (=> (and (= (base_addr ?v_1) (base_addr ?v_2)) (= (offset ?v_1) (offset ?v_2))) (= ?p1_135_86 ?p2_134_87))))))))
+(assert (forall ((?t_17_139_88 c_type)) (forall ((?p1_138_89 c_unique)) (forall ((?p2_137_90 c_unique)) (let ((?v_0 (type_pointer ?t_17_139_88))) (let ((?v_1 (c_sort ?v_0 ?p1_138_89)) (?v_2 (c_sort ?v_0 ?p2_137_90))) (=> (= ?p1_138_89 ?p2_137_90) (and (= (base_addr ?v_1) (base_addr ?v_2)) (= (offset ?v_1) (offset ?v_2))))))))))
+(assert (forall ((?t_18_144_91 c_type)) (forall ((?p1_143_92 c_unique)) (forall ((?p2_142_93 c_unique)) (forall ((?i_141_94 Int)) (forall ((?j_140_95 Int)) (let ((?v_0 (type_pointer ?t_18_144_91))) (let ((?v_1 (c_sort ?v_0 ?p1_143_92)) (?v_2 (c_sort ?v_0 ?p2_142_93))) (=> (not (= (base_addr ?v_1) (base_addr ?v_2))) (not (= (shift ?v_1 ?i_141_94) (shift ?v_2 ?j_140_95))))))))))))
+(assert (forall ((?t_19_149_96 c_type)) (forall ((?p1_148_97 c_unique)) (forall ((?p2_147_98 c_unique)) (forall ((?i_146_99 Int)) (forall ((?j_145_100 Int)) (let ((?v_0 (type_pointer ?t_19_149_96))) (let ((?v_1 (c_sort ?v_0 ?p1_148_97)) (?v_2 (c_sort ?v_0 ?p2_147_98))) (=> (not (= (+ (offset ?v_1) ?i_146_99) (+ (offset ?v_2) ?j_145_100))) (not (= (shift ?v_1 ?i_146_99) (shift ?v_2 ?j_145_100))))))))))))
+(assert (forall ((?t_20_154_101 c_type)) (forall ((?p1_153_102 c_unique)) (forall ((?p2_152_103 c_unique)) (forall ((?i_151_104 Int)) (forall ((?j_150_105 Int)) (let ((?v_0 (type_pointer ?t_20_154_101))) (let ((?v_1 (c_sort ?v_0 ?p1_153_102)) (?v_2 (c_sort ?v_0 ?p2_152_103))) (=> (= (base_addr ?v_1) (base_addr ?v_2)) (=> (= (+ (offset ?v_1) ?i_151_104) (+ (offset ?v_2) ?j_150_105)) (= (shift ?v_1 ?i_151_104) (shift ?v_2 ?j_150_105))))))))))))
+(assert (forall ((?t_21_158_106 c_type)) (forall ((?a_157_107 c_unique)) (forall ((?p_156_108 c_unique)) (forall ((?i_155_109 Int)) (let ((?v_0 (c_sort type_alloc_table ?a_157_107)) (?v_1 (type_pointer ?t_21_158_106))) (let ((?v_2 (c_sort ?v_1 ?p_156_108))) (=> (valid_index ?v_0 ?v_2 ?i_155_109) (valid ?v_0 (c_sort ?v_1 (shift ?v_2 ?i_155_109)))))))))))
+(assert (forall ((?t_22_164_110 c_type)) (forall ((?a_163_111 c_unique)) (forall ((?p_162_112 c_unique)) (forall ((?i_161_113 Int)) (forall ((?j_160_114 Int)) (forall ((?k_159_115 Int)) (let ((?v_0 (c_sort type_alloc_table ?a_163_111)) (?v_1 (type_pointer ?t_22_164_110))) (let ((?v_2 (c_sort ?v_1 ?p_162_112))) (=> (valid_range ?v_0 ?v_2 ?i_161_113 ?j_160_114) (=> (and (<= ?i_161_113 ?k_159_115) (<= ?k_159_115 ?j_160_114)) (valid ?v_0 (c_sort ?v_1 (shift ?v_2 ?k_159_115))))))))))))))
+(assert (forall ((?t_23_169_116 c_type)) (forall ((?a_168_117 c_unique)) (forall ((?p_167_118 c_unique)) (forall ((?i_166_119 Int)) (forall ((?j_165_120 Int)) (let ((?v_0 (c_sort type_alloc_table ?a_168_117)) (?v_1 (c_sort (type_pointer ?t_23_169_116) ?p_167_118))) (=> (valid_range ?v_0 ?v_1 ?i_166_119 ?j_165_120) (=> (and (<= ?i_166_119 0) (<= 0 ?j_165_120)) (valid ?v_0 ?v_1))))))))))
+(assert (forall ((?t_24_175_121 c_type)) (forall ((?a_174_122 c_unique)) (forall ((?p_173_123 c_unique)) (forall ((?i_172_124 Int)) (forall ((?j_171_125 Int)) (forall ((?k_170_126 Int)) (let ((?v_0 (c_sort type_alloc_table ?a_174_122)) (?v_1 (c_sort (type_pointer ?t_24_175_121) ?p_173_123))) (=> (valid_range ?v_0 ?v_1 ?i_172_124 ?j_171_125) (=> (and (<= ?i_172_124 ?k_170_126) (<= ?k_170_126 ?j_171_125)) (valid_index ?v_0 ?v_1 ?k_170_126)))))))))))
+(assert (forall ((?t_25_178_127 c_type)) (forall ((?p1_177_128 c_unique)) (forall ((?p2_176_129 c_unique)) (let ((?v_0 (type_pointer ?t_25_178_127))) (let ((?v_1 (c_sort ?v_0 ?p1_177_128)) (?v_2 (c_sort ?v_0 ?p2_176_129))) (=> (= (base_addr ?v_1) (base_addr ?v_2)) (= (sub_pointer ?v_1 ?v_2) (- (offset ?v_1) (offset ?v_2))))))))))
+(declare-fun type_memory (c_type c_type) c_type)
+(declare-fun acc (c_ssorted c_ssorted) c_unique)
+(declare-fun upd (c_ssorted c_ssorted c_ssorted) c_unique)
+(assert (forall ((?t_27_212_130 c_type)) (forall ((?t_26_211_131 c_type)) (forall ((?m_210_132 c_unique)) (forall ((?p_209_133 c_unique)) (forall ((?a_208_134 c_unique)) (let ((?v_0 (type_memory ?t_26_211_131 ?t_27_212_130)) (?v_1 (c_sort (type_pointer ?t_27_212_130) ?p_209_133))) (= (acc (c_sort ?v_0 (upd (c_sort ?v_0 ?m_210_132) ?v_1 (c_sort ?t_26_211_131 ?a_208_134))) ?v_1) ?a_208_134))))))))
+(assert (forall ((?t_29_218_135 c_type)) (forall ((?t_28_217_136 c_type)) (forall ((?m_216_137 c_unique)) (forall ((?p1_215_138 c_unique)) (forall ((?p2_214_139 c_unique)) (forall ((?a_213_140 c_unique)) (let ((?v_0 (type_memory ?t_28_217_136 ?t_29_218_135))) (let ((?v_2 (c_sort ?v_0 ?m_216_137)) (?v_1 (type_pointer ?t_29_218_135))) (let ((?v_3 (c_sort ?v_1 ?p2_214_139))) (=> (not (= ?p1_215_138 ?p2_214_139)) (= (acc (c_sort ?v_0 (upd ?v_2 (c_sort ?v_1 ?p1_215_138) (c_sort ?t_28_217_136  [...]
+(assert (not (= c_Boolean_false c_Boolean_true)))
+(declare-fun type_pset (c_type) c_type)
+(declare-fun pset_empty () c_unique)
+(declare-fun pset_singleton (c_ssorted) c_unique)
+(declare-fun pset_star (c_ssorted c_ssorted) c_unique)
+(declare-fun pset_all (c_ssorted) c_unique)
+(declare-fun pset_range (c_ssorted Int Int) c_unique)
+(declare-fun pset_range_left (c_ssorted Int) c_unique)
+(declare-fun pset_range_right (c_ssorted Int) c_unique)
+(declare-fun pset_acc_all (c_ssorted c_ssorted) c_unique)
+(declare-fun pset_acc_range (c_ssorted c_ssorted Int Int) c_unique)
+(declare-fun pset_acc_range_left (c_ssorted c_ssorted Int) c_unique)
+(declare-fun pset_acc_range_right (c_ssorted c_ssorted Int) c_unique)
+(declare-fun pset_union (c_ssorted c_ssorted) c_unique)
+(declare-fun not_in_pset (c_ssorted c_ssorted) Bool)
+(declare-fun not_assigns (c_ssorted c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_31_225_141 c_type)) (forall ((?t_30_224_142 c_type)) (forall ((?a_223_143 c_unique)) (forall ((?m1_222_144 c_unique)) (forall ((?m2_221_145 c_unique)) (forall ((?l_220_146 c_unique)) (let ((?v_0 (type_memory ?t_30_224_142 ?t_31_225_141))) (= (not_assigns (c_sort type_alloc_table ?a_223_143) (c_sort ?v_0 ?m1_222_144) (c_sort ?v_0 ?m2_221_145) (c_sort (type_pset ?t_31_225_141) ?l_220_146)) (forall ((?p_219_147 c_unique)) (let ((?v_1 (c_sort (type_pointer ?t_31_225_141) [...]
+(assert (forall ((?t_32_227_148 c_type)) (forall ((?p_226_149 c_unique)) (not_in_pset (c_sort (type_pointer ?t_32_227_148) ?p_226_149) (c_sort (type_pset ?t_32_227_148) pset_empty)))))
+(assert (forall ((?t_33_230_150 c_type)) (forall ((?p1_229_151 c_unique)) (forall ((?p2_228_152 c_unique)) (let ((?v_0 (type_pointer ?t_33_230_150))) (=> (not (= ?p1_229_151 ?p2_228_152)) (not_in_pset (c_sort ?v_0 ?p1_229_151) (c_sort (type_pset ?t_33_230_150) (pset_singleton (c_sort ?v_0 ?p2_228_152))))))))))
+(assert (forall ((?t_34_233_153 c_type)) (forall ((?p1_232_154 c_unique)) (forall ((?p2_231_155 c_unique)) (let ((?v_0 (type_pointer ?t_34_233_153))) (=> (not_in_pset (c_sort ?v_0 ?p1_232_154) (c_sort (type_pset ?t_34_233_153) (pset_singleton (c_sort ?v_0 ?p2_231_155)))) (not (= ?p1_232_154 ?p2_231_155))))))))
+(assert (forall ((?t_35_235_156 c_type)) (forall ((?p_234_157 c_unique)) (let ((?v_0 (c_sort (type_pointer ?t_35_235_156) ?p_234_157))) (not (not_in_pset ?v_0 (c_sort (type_pset ?t_35_235_156) (pset_singleton ?v_0))))))))
+(assert (forall ((?t_36_239_158 c_type)) (forall ((?l1_238_159 c_unique)) (forall ((?l2_237_160 c_unique)) (forall ((?p_236_161 c_unique)) (let ((?v_0 (c_sort (type_pointer ?t_36_239_158) ?p_236_161)) (?v_1 (type_pset ?t_36_239_158))) (let ((?v_2 (c_sort ?v_1 ?l1_238_159)) (?v_3 (c_sort ?v_1 ?l2_237_160))) (=> (and (not_in_pset ?v_0 ?v_2) (not_in_pset ?v_0 ?v_3)) (not_in_pset ?v_0 (c_sort ?v_1 (pset_union ?v_2 ?v_3)))))))))))
+(assert (forall ((?t_37_243_162 c_type)) (forall ((?l1_242_163 c_unique)) (forall ((?l2_241_164 c_unique)) (forall ((?p_240_165 c_unique)) (let ((?v_1 (c_sort (type_pointer ?t_37_243_162) ?p_240_165)) (?v_0 (type_pset ?t_37_243_162))) (let ((?v_2 (c_sort ?v_0 ?l1_242_163))) (=> (not_in_pset ?v_1 (c_sort ?v_0 (pset_union ?v_2 (c_sort ?v_0 ?l2_241_164)))) (not_in_pset ?v_1 ?v_2)))))))))
+(assert (forall ((?t_38_247_166 c_type)) (forall ((?l1_246_167 c_unique)) (forall ((?l2_245_168 c_unique)) (forall ((?p_244_169 c_unique)) (let ((?v_1 (c_sort (type_pointer ?t_38_247_166) ?p_244_169)) (?v_0 (type_pset ?t_38_247_166))) (let ((?v_2 (c_sort ?v_0 ?l2_245_168))) (=> (not_in_pset ?v_1 (c_sort ?v_0 (pset_union (c_sort ?v_0 ?l1_246_167) ?v_2))) (not_in_pset ?v_1 ?v_2)))))))))
+(assert (forall ((?t_40_253_170 c_type)) (forall ((?t_39_252_171 c_type)) (forall ((?l_251_172 c_unique)) (forall ((?m_250_173 c_unique)) (forall ((?p_249_174 c_unique)) (let ((?v_0 (type_pointer ?t_40_253_170))) (=> (forall ((?p1_248_175 c_unique)) (let ((?v_1 (c_sort (type_pointer ?t_39_252_171) ?p1_248_175))) (=> (= ?p_249_174 (acc (c_sort (type_memory ?v_0 ?t_39_252_171) ?m_250_173) ?v_1)) (not_in_pset ?v_1 (c_sort (type_pset ?t_39_252_171) ?l_251_172))))) (not_in_pset (c_sort ?v_0 ? [...]
+(assert (forall ((?t_42_259_176 c_type)) (forall ((?t_41_258_177 c_type)) (forall ((?l_257_178 c_unique)) (forall ((?m_256_179 c_unique)) (forall ((?p_255_180 c_unique)) (let ((?v_0 (type_pointer ?t_42_259_176))) (=> (not_in_pset (c_sort ?v_0 ?p_255_180) (c_sort (type_pset ?t_42_259_176) (pset_star (c_sort (type_pset ?t_41_258_177) ?l_257_178) (c_sort (type_memory ?v_0 ?t_41_258_177) ?m_256_179)))) (forall ((?p1_254_181 c_unique)) (let ((?v_1 (c_sort (type_pointer ?t_41_258_177) ?p1_254_ [...]
+(assert (forall ((?t_43_263_182 c_type)) (forall ((?p_262_183 c_unique)) (forall ((?l_261_184 c_unique)) (let ((?v_0 (type_pset ?t_43_263_182))) (=> (forall ((?p1_260_185 c_unique)) (let ((?v_1 (type_pointer ?t_43_263_182))) (let ((?v_2 (c_sort ?v_1 ?p1_260_185))) (=> (not (not_in_pset ?v_2 (c_sort ?v_0 ?l_261_184))) (not (= (base_addr (c_sort ?v_1 ?p_262_183)) (base_addr ?v_2))))))) (not_in_pset (c_sort (type_pointer ?t_43_263_182) ?p_262_183) (c_sort ?v_0 (pset_all (c_sort ?v_0 ?l_261_ [...]
+(assert (forall ((?t_44_267_186 c_type)) (forall ((?p_266_187 c_unique)) (forall ((?l_265_188 c_unique)) (let ((?v_0 (type_pset ?t_44_267_186))) (=> (not_in_pset (c_sort (type_pointer ?t_44_267_186) ?p_266_187) (c_sort ?v_0 (pset_all (c_sort ?v_0 ?l_265_188)))) (forall ((?p1_264_189 c_unique)) (let ((?v_1 (type_pointer ?t_44_267_186))) (let ((?v_2 (c_sort ?v_1 ?p1_264_189))) (=> (not (not_in_pset ?v_2 (c_sort ?v_0 ?l_265_188))) (not (= (base_addr (c_sort ?v_1 ?p_266_187)) (base_addr ?v_2 [...]
+(assert (forall ((?t_45_274_190 c_type)) (forall ((?p_273_191 c_unique)) (forall ((?l_272_192 c_unique)) (forall ((?a_271_193 Int)) (forall ((?b_270_194 Int)) (let ((?v_0 (type_pset ?t_45_274_190))) (=> (forall ((?p1_269_195 c_unique)) (or (not_in_pset (c_sort (type_pointer ?t_45_274_190) ?p1_269_195) (c_sort ?v_0 ?l_272_192)) (forall ((?i_268_196 Int)) (=> (and (<= ?a_271_193 ?i_268_196) (<= ?i_268_196 ?b_270_194)) (not (= ?p_273_191 (shift (c_sort (type_pointer ?t_45_274_190) ?p1_269_1 [...]
+(assert (forall ((?t_46_281_197 c_type)) (forall ((?p_280_198 c_unique)) (forall ((?l_279_199 c_unique)) (forall ((?a_278_200 Int)) (forall ((?b_277_201 Int)) (let ((?v_0 (type_pset ?t_46_281_197))) (=> (not_in_pset (c_sort (type_pointer ?t_46_281_197) ?p_280_198) (c_sort ?v_0 (pset_range (c_sort ?v_0 ?l_279_199) ?a_278_200 ?b_277_201))) (forall ((?p1_276_202 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_46_281_197) ?p1_276_202) (c_sort ?v_0 ?l_279_199))) (forall ((?i_275_203 [...]
+(assert (forall ((?t_47_287_204 c_type)) (forall ((?p_286_205 c_unique)) (forall ((?l_285_206 c_unique)) (forall ((?a_284_207 Int)) (let ((?v_0 (type_pset ?t_47_287_204))) (=> (forall ((?p1_283_208 c_unique)) (or (not_in_pset (c_sort (type_pointer ?t_47_287_204) ?p1_283_208) (c_sort ?v_0 ?l_285_206)) (forall ((?i_282_209 Int)) (=> (<= ?i_282_209 ?a_284_207) (not (= ?p_286_205 (shift (c_sort (type_pointer ?t_47_287_204) ?p1_283_208) ?i_282_209))))))) (not_in_pset (c_sort (type_pointer ?t_ [...]
+(assert (forall ((?t_48_293_210 c_type)) (forall ((?p_292_211 c_unique)) (forall ((?l_291_212 c_unique)) (forall ((?a_290_213 Int)) (let ((?v_0 (type_pset ?t_48_293_210))) (=> (not_in_pset (c_sort (type_pointer ?t_48_293_210) ?p_292_211) (c_sort ?v_0 (pset_range_left (c_sort ?v_0 ?l_291_212) ?a_290_213))) (forall ((?p1_289_214 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_48_293_210) ?p1_289_214) (c_sort ?v_0 ?l_291_212))) (forall ((?i_288_215 Int)) (=> (<= ?i_288_215 ?a_290_ [...]
+(assert (forall ((?t_49_299_216 c_type)) (forall ((?p_298_217 c_unique)) (forall ((?l_297_218 c_unique)) (forall ((?a_296_219 Int)) (let ((?v_0 (type_pset ?t_49_299_216))) (=> (forall ((?p1_295_220 c_unique)) (or (not_in_pset (c_sort (type_pointer ?t_49_299_216) ?p1_295_220) (c_sort ?v_0 ?l_297_218)) (forall ((?i_294_221 Int)) (=> (<= ?a_296_219 ?i_294_221) (not (= ?p_298_217 (shift (c_sort (type_pointer ?t_49_299_216) ?p1_295_220) ?i_294_221))))))) (not_in_pset (c_sort (type_pointer ?t_ [...]
+(assert (forall ((?t_50_305_222 c_type)) (forall ((?p_304_223 c_unique)) (forall ((?l_303_224 c_unique)) (forall ((?a_302_225 Int)) (let ((?v_0 (type_pset ?t_50_305_222))) (=> (not_in_pset (c_sort (type_pointer ?t_50_305_222) ?p_304_223) (c_sort ?v_0 (pset_range_right (c_sort ?v_0 ?l_303_224) ?a_302_225))) (forall ((?p1_301_226 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_50_305_222) ?p1_301_226) (c_sort ?v_0 ?l_303_224))) (forall ((?i_300_227 Int)) (=> (<= ?a_302_225 ?i_300 [...]
+(assert (forall ((?t_52_312_228 c_type)) (forall ((?t_51_311_229 c_type)) (forall ((?p_310_230 c_unique)) (forall ((?l_309_231 c_unique)) (forall ((?m_308_232 c_unique)) (let ((?v_0 (type_pointer ?t_51_311_229))) (=> (forall ((?p1_307_233 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_52_312_228) ?p1_307_233) (c_sort (type_pset ?t_52_312_228) ?l_309_231))) (forall ((?i_306_234 Int)) (let ((?v_1 (type_pointer ?t_52_312_228))) (not (= ?p_310_230 (acc (c_sort (type_memory ?v_0 ?t [...]
+(assert (forall ((?t_54_319_235 c_type)) (forall ((?t_53_318_236 c_type)) (forall ((?p_317_237 c_unique)) (forall ((?l_316_238 c_unique)) (forall ((?m_315_239 c_unique)) (let ((?v_0 (type_pointer ?t_53_318_236))) (=> (not_in_pset (c_sort ?v_0 ?p_317_237) (c_sort (type_pset ?t_53_318_236) (pset_acc_all (c_sort (type_pset ?t_54_319_235) ?l_316_238) (c_sort (type_memory ?v_0 ?t_54_319_235) ?m_315_239)))) (forall ((?p1_314_240 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_54_319_ [...]
+(assert (forall ((?t_56_328_242 c_type)) (forall ((?t_55_327_243 c_type)) (forall ((?p_326_244 c_unique)) (forall ((?l_325_245 c_unique)) (forall ((?m_324_246 c_unique)) (forall ((?a_323_247 Int)) (forall ((?b_322_248 Int)) (let ((?v_0 (type_pointer ?t_55_327_243))) (=> (forall ((?p1_321_249 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_56_328_242) ?p1_321_249) (c_sort (type_pset ?t_56_328_242) ?l_325_245))) (forall ((?i_320_250 Int)) (let ((?v_1 (type_pointer ?t_56_328_242)) [...]
+(assert (forall ((?t_58_337_251 c_type)) (forall ((?t_57_336_252 c_type)) (forall ((?p_335_253 c_unique)) (forall ((?l_334_254 c_unique)) (forall ((?m_333_255 c_unique)) (forall ((?a_332_256 Int)) (forall ((?b_331_257 Int)) (let ((?v_0 (type_pointer ?t_57_336_252))) (=> (not_in_pset (c_sort ?v_0 ?p_335_253) (c_sort (type_pset ?t_57_336_252) (pset_acc_range (c_sort (type_pset ?t_58_337_251) ?l_334_254) (c_sort (type_memory ?v_0 ?t_58_337_251) ?m_333_255) ?a_332_256 ?b_331_257))) (forall ( [...]
+(assert (forall ((?t_60_345_260 c_type)) (forall ((?t_59_344_261 c_type)) (forall ((?p_343_262 c_unique)) (forall ((?l_342_263 c_unique)) (forall ((?m_341_264 c_unique)) (forall ((?a_340_265 Int)) (let ((?v_0 (type_pointer ?t_59_344_261))) (=> (forall ((?p1_339_266 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_60_345_260) ?p1_339_266) (c_sort (type_pset ?t_60_345_260) ?l_342_263))) (forall ((?i_338_267 Int)) (let ((?v_1 (type_pointer ?t_60_345_260))) (=> (<= ?i_338_267 ?a_340 [...]
+(assert (forall ((?t_62_353_268 c_type)) (forall ((?t_61_352_269 c_type)) (forall ((?p_351_270 c_unique)) (forall ((?l_350_271 c_unique)) (forall ((?m_349_272 c_unique)) (forall ((?a_348_273 Int)) (let ((?v_0 (type_pointer ?t_61_352_269))) (=> (not_in_pset (c_sort ?v_0 ?p_351_270) (c_sort (type_pset ?t_61_352_269) (pset_acc_range_left (c_sort (type_pset ?t_62_353_268) ?l_350_271) (c_sort (type_memory ?v_0 ?t_62_353_268) ?m_349_272) ?a_348_273))) (forall ((?p1_347_274 c_unique)) (=> (not  [...]
+(assert (forall ((?t_64_361_276 c_type)) (forall ((?t_63_360_277 c_type)) (forall ((?p_359_278 c_unique)) (forall ((?l_358_279 c_unique)) (forall ((?m_357_280 c_unique)) (forall ((?a_356_281 Int)) (let ((?v_0 (type_pointer ?t_63_360_277))) (=> (forall ((?p1_355_282 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_64_361_276) ?p1_355_282) (c_sort (type_pset ?t_64_361_276) ?l_358_279))) (forall ((?i_354_283 Int)) (let ((?v_1 (type_pointer ?t_64_361_276))) (=> (<= ?a_356_281 ?i_354 [...]
+(assert (forall ((?t_66_369_284 c_type)) (forall ((?t_65_368_285 c_type)) (forall ((?p_367_286 c_unique)) (forall ((?l_366_287 c_unique)) (forall ((?m_365_288 c_unique)) (forall ((?a_364_289 Int)) (let ((?v_0 (type_pointer ?t_65_368_285))) (=> (not_in_pset (c_sort ?v_0 ?p_367_286) (c_sort (type_pset ?t_65_368_285) (pset_acc_range_right (c_sort (type_pset ?t_66_369_284) ?l_366_287) (c_sort (type_memory ?v_0 ?t_66_369_284) ?m_365_288) ?a_364_289))) (forall ((?p1_363_290 c_unique)) (=> (not [...]
+(assert (forall ((?t_68_376_292 c_type)) (forall ((?t_67_375_293 c_type)) (forall ((?a_374_294 c_unique)) (forall ((?l_373_295 c_unique)) (forall ((?m1_372_296 c_unique)) (forall ((?m2_371_297 c_unique)) (forall ((?m3_370_298 c_unique)) (let ((?v_1 (c_sort type_alloc_table ?a_374_294)) (?v_0 (type_memory ?t_68_376_292 ?t_67_375_293))) (let ((?v_4 (c_sort ?v_0 ?m1_372_296)) (?v_2 (c_sort ?v_0 ?m2_371_297)) (?v_3 (c_sort (type_pset ?t_67_375_293) ?l_373_295)) (?v_5 (c_sort ?v_0 ?m3_370_298 [...]
+(assert (forall ((?t_70_381_299 c_type)) (forall ((?t_69_380_300 c_type)) (forall ((?a_379_301 c_unique)) (forall ((?l_378_302 c_unique)) (forall ((?m_377_303 c_unique)) (let ((?v_0 (c_sort (type_memory ?t_70_381_299 ?t_69_380_300) ?m_377_303))) (not_assigns (c_sort type_alloc_table ?a_379_301) ?v_0 ?v_0 (c_sort (type_pset ?t_69_380_300) ?l_378_302)))))))))
+(declare-fun valid_acc (c_ssorted) Bool)
+(assert (forall ((?t_72_386_304 c_type)) (forall ((?t_71_385_305 c_type)) (forall ((?m1_384_306 c_unique)) (= (valid_acc (c_sort (type_memory (type_pointer ?t_71_385_305) ?t_72_386_304) ?m1_384_306)) (forall ((?p_383_307 c_unique)) (forall ((?a_382_308 c_unique)) (let ((?v_1 (type_pointer ?t_71_385_305)) (?v_0 (c_sort type_alloc_table ?a_382_308)) (?v_2 (c_sort (type_pointer ?t_72_386_304) ?p_383_307))) (=> (valid ?v_0 ?v_2) (valid ?v_0 (c_sort ?v_1 (acc (c_sort (type_memory ?v_1 ?t_72_3 [...]
+(declare-fun valid_acc_range (c_ssorted Int) Bool)
+(assert (forall ((?t_74_392_309 c_type)) (forall ((?t_73_391_310 c_type)) (forall ((?m1_390_311 c_unique)) (forall ((?size_389_312 Int)) (= (valid_acc_range (c_sort (type_memory (type_pointer ?t_73_391_310) ?t_74_392_309) ?m1_390_311) ?size_389_312) (forall ((?p_388_313 c_unique)) (forall ((?a_387_314 c_unique)) (let ((?v_1 (type_pointer ?t_73_391_310)) (?v_0 (c_sort type_alloc_table ?a_387_314)) (?v_2 (c_sort (type_pointer ?t_74_392_309) ?p_388_313))) (=> (valid ?v_0 ?v_2) (valid_range  [...]
+(assert (forall ((?t_76_398_315 c_type)) (forall ((?t_75_397_316 c_type)) (forall ((?m1_396_317 c_unique)) (forall ((?size_395_318 Int)) (forall ((?p_394_319 c_unique)) (forall ((?a_393_320 c_unique)) (let ((?v_1 (type_pointer ?t_75_397_316))) (let ((?v_2 (c_sort (type_memory ?v_1 ?t_76_398_315) ?m1_396_317)) (?v_0 (c_sort type_alloc_table ?a_393_320)) (?v_3 (c_sort (type_pointer ?t_76_398_315) ?p_394_319))) (=> (valid_acc_range ?v_2 ?size_395_318) (=> (valid ?v_0 ?v_3) (valid ?v_0 (c_so [...]
+(declare-fun separation1 (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_78_404_321 c_type)) (forall ((?t_77_403_322 c_type)) (forall ((?m1_402_323 c_unique)) (forall ((?m2_401_324 c_unique)) (let ((?v_0 (type_memory (type_pointer ?t_77_403_322) ?t_78_404_321))) (= (separation1 (c_sort ?v_0 ?m1_402_323) (c_sort ?v_0 ?m2_401_324)) (forall ((?p_400_325 c_unique)) (forall ((?a_399_326 c_unique)) (let ((?v_1 (type_pointer ?t_77_403_322)) (?v_2 (c_sort (type_pointer ?t_78_404_321) ?p_400_325))) (=> (valid (c_sort type_alloc_table ?a_399_326) ? [...]
+(declare-fun separation1_range1 (c_ssorted c_ssorted Int) Bool)
+(assert (forall ((?t_80_412_327 c_type)) (forall ((?t_79_411_328 c_type)) (forall ((?m1_410_329 c_unique)) (forall ((?m2_409_330 c_unique)) (forall ((?size_408_331 Int)) (let ((?v_0 (type_memory (type_pointer ?t_79_411_328) ?t_80_412_327))) (= (separation1_range1 (c_sort ?v_0 ?m1_410_329) (c_sort ?v_0 ?m2_409_330) ?size_408_331) (forall ((?p_407_332 c_unique)) (forall ((?a_406_333 c_unique)) (=> (valid (c_sort type_alloc_table ?a_406_333) (c_sort (type_pointer ?t_80_412_327) ?p_407_332)) [...]
+(declare-fun separation1_range (c_ssorted Int) Bool)
+(assert (forall ((?t_82_420_335 c_type)) (forall ((?t_81_419_336 c_type)) (forall ((?m_418_337 c_unique)) (forall ((?size_417_338 Int)) (= (separation1_range (c_sort (type_memory (type_pointer ?t_81_419_336) ?t_82_420_335) ?m_418_337) ?size_417_338) (forall ((?p_416_339 c_unique)) (forall ((?a_415_340 c_unique)) (=> (valid (c_sort type_alloc_table ?a_415_340) (c_sort (type_pointer ?t_82_420_335) ?p_416_339)) (forall ((?i1_414_341 Int)) (forall ((?i2_413_342 Int)) (let ((?v_0 (type_pointe [...]
+(declare-fun separation2 (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_84_426_343 c_type)) (forall ((?t_83_425_344 c_type)) (forall ((?m1_424_345 c_unique)) (forall ((?m2_423_346 c_unique)) (let ((?v_0 (type_memory (type_pointer ?t_83_425_344) ?t_84_426_343))) (= (separation2 (c_sort ?v_0 ?m1_424_345) (c_sort ?v_0 ?m2_423_346)) (forall ((?p1_422_347 c_unique)) (forall ((?p2_421_348 c_unique)) (let ((?v_1 (type_pointer ?t_83_425_344)) (?v_2 (type_pointer ?t_84_426_343))) (=> (not (= ?p1_422_347 ?p2_421_348)) (not (= (base_addr (c_sort ?v [...]
+(declare-fun separation2_range1 (c_ssorted c_ssorted Int) Bool)
+(assert (forall ((?t_86_435_349 c_type)) (forall ((?t_85_434_350 c_type)) (forall ((?m1_433_351 c_unique)) (forall ((?m2_432_352 c_unique)) (forall ((?size_431_353 Int)) (let ((?v_0 (type_memory (type_pointer ?t_85_434_350) ?t_86_435_349))) (= (separation2_range1 (c_sort ?v_0 ?m1_433_351) (c_sort ?v_0 ?m2_432_352) ?size_431_353) (forall ((?p_430_354 c_unique)) (forall ((?q_429_355 c_unique)) (forall ((?a_428_356 c_unique)) (forall ((?i_427_357 Int)) (let ((?v_1 (type_pointer ?t_85_434_35 [...]
+(declare-fun on_heap (c_ssorted c_ssorted) Bool)
+(declare-fun on_stack (c_ssorted c_ssorted) Bool)
+(declare-fun fresh (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_87_438_358 c_type)) (forall ((?a_437_359 c_unique)) (forall ((?p_436_360 c_unique)) (let ((?v_0 (c_sort type_alloc_table ?a_437_359)) (?v_1 (c_sort (type_pointer ?t_87_438_358) ?p_436_360))) (=> (fresh ?v_0 ?v_1) (not (valid ?v_0 ?v_1))))))))
+(assert (forall ((?t_88_442_361 c_type)) (forall ((?a_441_362 c_unique)) (forall ((?p_440_363 c_unique)) (=> (fresh (c_sort type_alloc_table ?a_441_362) (c_sort (type_pointer ?t_88_442_361) ?p_440_363)) (forall ((?i_439_364 Int)) (let ((?v_0 (type_pointer ?t_88_442_361))) (not (valid (c_sort type_alloc_table ?a_441_362) (c_sort ?v_0 (shift (c_sort ?v_0 ?p_440_363) ?i_439_364)))))))))))
+(declare-fun alloc_extends (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_89_446_365 c_type)) (forall ((?a1_445_366 c_unique)) (forall ((?a2_444_367 c_unique)) (=> (alloc_extends (c_sort type_alloc_table ?a1_445_366) (c_sort type_alloc_table ?a2_444_367)) (forall ((?q_443_368 c_unique)) (let ((?v_0 (c_sort (type_pointer ?t_89_446_365) ?q_443_368))) (=> (valid (c_sort type_alloc_table ?a1_445_366) ?v_0) (valid (c_sort type_alloc_table ?a2_444_367) ?v_0)))))))))
+(assert (forall ((?t_90_451_369 c_type)) (forall ((?a1_450_370 c_unique)) (forall ((?a2_449_371 c_unique)) (=> (alloc_extends (c_sort type_alloc_table ?a1_450_370) (c_sort type_alloc_table ?a2_449_371)) (forall ((?q_448_372 c_unique)) (forall ((?i_447_373 Int)) (let ((?v_0 (c_sort (type_pointer ?t_90_451_369) ?q_448_372))) (=> (valid_index (c_sort type_alloc_table ?a1_450_370) ?v_0 ?i_447_373) (valid_index (c_sort type_alloc_table ?a2_449_371) ?v_0 ?i_447_373))))))))))
+(assert (forall ((?t_91_457_374 c_type)) (forall ((?a1_456_375 c_unique)) (forall ((?a2_455_376 c_unique)) (=> (alloc_extends (c_sort type_alloc_table ?a1_456_375) (c_sort type_alloc_table ?a2_455_376)) (forall ((?q_454_377 c_unique)) (forall ((?i_453_378 Int)) (forall ((?j_452_379 Int)) (let ((?v_0 (c_sort (type_pointer ?t_91_457_374) ?q_454_377))) (=> (valid_range (c_sort type_alloc_table ?a1_456_375) ?v_0 ?i_453_378 ?j_452_379) (valid_range (c_sort type_alloc_table ?a2_455_376) ?v_0 ? [...]
+(assert (forall ((?a_458_380 c_unique)) (let ((?v_0 (c_sort type_alloc_table ?a_458_380))) (alloc_extends ?v_0 ?v_0))))
+(assert (forall ((?a1_461_381 c_unique)) (forall ((?a2_460_382 c_unique)) (forall ((?a3_459_383 c_unique)) (let ((?v_1 (c_sort type_alloc_table ?a1_461_381)) (?v_0 (c_sort type_alloc_table ?a2_460_382)) (?v_2 (c_sort type_alloc_table ?a3_459_383))) (=> (alloc_extends ?v_1 ?v_0) (=> (alloc_extends ?v_0 ?v_2) (alloc_extends ?v_1 ?v_2))))))))
+(declare-fun free_stack (c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_92_466_384 c_type)) (forall ((?a1_465_385 c_unique)) (forall ((?a2_464_386 c_unique)) (forall ((?a3_463_387 c_unique)) (=> (free_stack (c_sort type_alloc_table ?a1_465_385) (c_sort type_alloc_table ?a2_464_386) (c_sort type_alloc_table ?a3_463_387)) (forall ((?p_462_388 c_unique)) (let ((?v_0 (c_sort type_alloc_table ?a2_464_386)) (?v_1 (c_sort (type_pointer ?t_92_466_384) ?p_462_388))) (=> (valid ?v_0 ?v_1) (=> (on_heap ?v_0 ?v_1) (valid (c_sort type_alloc_table ?a3 [...]
+(assert (forall ((?t_93_471_389 c_type)) (forall ((?a1_470_390 c_unique)) (forall ((?a2_469_391 c_unique)) (forall ((?a3_468_392 c_unique)) (=> (free_stack (c_sort type_alloc_table ?a1_470_390) (c_sort type_alloc_table ?a2_469_391) (c_sort type_alloc_table ?a3_468_392)) (forall ((?p_467_393 c_unique)) (let ((?v_0 (c_sort type_alloc_table ?a1_470_390)) (?v_1 (c_sort (type_pointer ?t_93_471_389) ?p_467_393))) (=> (valid ?v_0 ?v_1) (=> (on_stack ?v_0 ?v_1) (valid (c_sort type_alloc_table ?a [...]
+(declare-fun null () c_unique)
+(assert (forall ((?t_94_475_394 c_type)) (forall ((?a_474_395 c_unique)) (not (valid (c_sort type_alloc_table ?a_474_395) (c_sort (type_pointer ?t_94_475_394) null))))))
+(declare-fun type_global () c_type)
+(declare-fun separation_anonymous_0_int (c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?x_global_489_396 c_unique)) (forall ((?anonymous_0PM_global_488_397 c_unique)) (forall ((?tab_487_398 c_unique)) (forall ((?v_486_399 c_unique)) (forall ((?alloc_485_400 c_unique)) (let ((?v_1 (type_pointer type_global))) (let ((?v_0 (type_memory ?v_1 type_global)) (?v_2 (c_sort ?v_1 ?tab_487_398)) (?v_3 (c_sort ?v_1 ?v_486_399))) (= (separation_anonymous_0_int (c_sort ?v_0 ?x_global_489_396) (c_sort ?v_0 ?anonymous_0PM_global_488_397) ?v_2 ?v_3 (c_sort type_alloc_tabl [...]
+(declare-fun separation_anonymous_0_s1 (c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?x_global_498_402 c_unique)) (forall ((?u_global_497_403 c_unique)) (forall ((?t_global_496_404 c_unique)) (forall ((?s1PM_global_495_405 c_unique)) (forall ((?anonymous_0PM_global_494_406 c_unique)) (forall ((?tab_493_407 c_unique)) (forall ((?s_492_408 c_unique)) (forall ((?alloc_491_409 c_unique)) (let ((?v_1 (type_pointer type_global))) (let ((?v_0 (type_memory ?v_1 type_global))) (let ((?v_7 (c_sort ?v_0 ?u_global_497_403)) (?v_5 (c_sort ?v_0 ?t_global_496_404)) (? [...]
+(declare-fun separation_anonymous_1_anonymous_0 (c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?x_global_507_411 c_unique)) (forall ((?p2_global_506_412 c_unique)) (forall ((?p1_global_505_413 c_unique)) (forall ((?anonymous_1PM_global_504_414 c_unique)) (forall ((?anonymous_0PM_global_503_415 c_unique)) (forall ((?u1_502_416 c_unique)) (forall ((?tab_501_417 c_unique)) (forall ((?alloc_500_418 c_unique)) (let ((?v_1 (type_pointer type_global))) (let ((?v_0 (type_memory ?v_1 type_global))) (let ((?v_7 (c_sort ?v_0 ?p2_global_506_412)) (?v_5 (c_sort ?v_0 ?p1_globa [...]
+(declare-fun separation_anonymous_1_anonymous_1 (c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?p2_global_513_420 c_unique)) (forall ((?p1_global_512_421 c_unique)) (forall ((?anonymous_1PM_global_511_422 c_unique)) (forall ((?u2_510_423 c_unique)) (forall ((?u1_509_424 c_unique)) (forall ((?alloc_508_425 c_unique)) (let ((?v_1 (type_pointer type_global))) (let ((?v_0 (type_memory ?v_1 type_global))) (let ((?v_7 (c_sort ?v_0 ?p2_global_513_420)) (?v_5 (c_sort ?v_0 ?p1_global_512_421)) (?v_6 (c_sort ?v_0 ?anonymous_1PM_global_511_422)) (?v_2 (c_sort ?v_1 ?u2_510_4 [...]
+(declare-fun separation_anonymous_1_int (c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?p2_global_519_426 c_unique)) (forall ((?p1_global_518_427 c_unique)) (forall ((?anonymous_1PM_global_517_428 c_unique)) (forall ((?u1_516_429 c_unique)) (forall ((?v_515_430 c_unique)) (forall ((?alloc_514_431 c_unique)) (let ((?v_1 (type_pointer type_global))) (let ((?v_0 (type_memory ?v_1 type_global))) (let ((?v_7 (c_sort ?v_0 ?p2_global_519_426)) (?v_5 (c_sort ?v_0 ?p1_global_518_427)) (?v_6 (c_sort ?v_0 ?anonymous_1PM_global_517_428)) (?v_2 (c_sort ?v_1 ?u1_516_42 [...]
+(declare-fun separation_anonymous_1_s1 (c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?u_global_528_432 c_unique)) (forall ((?t_global_527_433 c_unique)) (forall ((?s1PM_global_526_434 c_unique)) (forall ((?p2_global_525_435 c_unique)) (forall ((?p1_global_524_436 c_unique)) (forall ((?anonymous_1PM_global_523_437 c_unique)) (forall ((?u1_522_438 c_unique)) (forall ((?s_521_439 c_unique)) (forall ((?alloc_520_440 c_unique)) (let ((?v_1 (type_pointer type_global))) (let ((?v_0 (type_memory ?v_1 type_global))) (let ((?v_12 (c_sort ?v_0 ?u_global_528_432))  [...]
+(declare-fun separation_anonymous_2_anonymous_0 (c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?x_global_537_441 c_unique)) (forall ((?anonymous_2_p2_global_536_442 c_unique)) (forall ((?anonymous_2_p1_global_535_443 c_unique)) (forall ((?anonymous_2PM_global_534_444 c_unique)) (forall ((?anonymous_0PM_global_533_445 c_unique)) (forall ((?u3_532_446 c_unique)) (forall ((?tab_531_447 c_unique)) (forall ((?alloc_530_448 c_unique)) (let ((?v_1 (type_pointer type_global))) (let ((?v_0 (type_memory ?v_1 type_global))) (let ((?v_7 (c_sort ?v_0 ?anonymous_2_p2_global_53 [...]
+(declare-fun separation_anonymous_2_anonymous_1 (c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?p2_global_546_450 c_unique)) (forall ((?p1_global_545_451 c_unique)) (forall ((?anonymous_2_p2_global_544_452 c_unique)) (forall ((?anonymous_2_p1_global_543_453 c_unique)) (forall ((?anonymous_2PM_global_542_454 c_unique)) (forall ((?anonymous_1PM_global_541_455 c_unique)) (forall ((?u3_540_456 c_unique)) (forall ((?u1_539_457 c_unique)) (forall ((?alloc_538_458 c_unique)) (let ((?v_1 (type_pointer type_global))) (let ((?v_0 (type_memory ?v_1 type_global))) (let ((?v_ [...]
+(declare-fun separation_anonymous_2_anonymous_2 (c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?anonymous_2_p2_global_552_459 c_unique)) (forall ((?anonymous_2_p1_global_551_460 c_unique)) (forall ((?anonymous_2PM_global_550_461 c_unique)) (forall ((?u4_549_462 c_unique)) (forall ((?u3_548_463 c_unique)) (forall ((?alloc_547_464 c_unique)) (let ((?v_1 (type_pointer type_global))) (let ((?v_0 (type_memory ?v_1 type_global))) (let ((?v_7 (c_sort ?v_0 ?anonymous_2_p2_global_552_459)) (?v_5 (c_sort ?v_0 ?anonymous_2_p1_global_551_460)) (?v_6 (c_sort ?v_0 ?anonymous_2 [...]
+(declare-fun separation_anonymous_2_int (c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?anonymous_2_p2_global_558_465 c_unique)) (forall ((?anonymous_2_p1_global_557_466 c_unique)) (forall ((?anonymous_2PM_global_556_467 c_unique)) (forall ((?u3_555_468 c_unique)) (forall ((?v_554_469 c_unique)) (forall ((?alloc_553_470 c_unique)) (let ((?v_1 (type_pointer type_global))) (let ((?v_0 (type_memory ?v_1 type_global))) (let ((?v_7 (c_sort ?v_0 ?anonymous_2_p2_global_558_465)) (?v_5 (c_sort ?v_0 ?anonymous_2_p1_global_557_466)) (?v_6 (c_sort ?v_0 ?anonymous_2P [...]
+(declare-fun separation_anonymous_2_s1 (c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?u_global_567_471 c_unique)) (forall ((?t_global_566_472 c_unique)) (forall ((?s1PM_global_565_473 c_unique)) (forall ((?anonymous_2_p2_global_564_474 c_unique)) (forall ((?anonymous_2_p1_global_563_475 c_unique)) (forall ((?anonymous_2PM_global_562_476 c_unique)) (forall ((?u3_561_477 c_unique)) (forall ((?s_560_478 c_unique)) (forall ((?alloc_559_479 c_unique)) (let ((?v_1 (type_pointer type_global))) (let ((?v_0 (type_memory ?v_1 type_global))) (let ((?v_12 (c_sort ? [...]
+(declare-fun separation_int_s1 (c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?u_global_573_480 c_unique)) (forall ((?t_global_572_481 c_unique)) (forall ((?s1PM_global_571_482 c_unique)) (forall ((?v_570_483 c_unique)) (forall ((?s_569_484 c_unique)) (forall ((?alloc_568_485 c_unique)) (let ((?v_1 (type_pointer type_global))) (let ((?v_0 (type_memory ?v_1 type_global))) (let ((?v_7 (c_sort ?v_0 ?u_global_573_480)) (?v_5 (c_sort ?v_0 ?t_global_572_481)) (?v_6 (c_sort ?v_0 ?s1PM_global_571_482)) (?v_2 (c_sort ?v_1 ?v_570_483)) (?v_3 (c_sort ?v_1 ? [...]
+(declare-fun separation_s1_s1 (c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?u_global_579_486 c_unique)) (forall ((?t_global_578_487 c_unique)) (forall ((?s1PM_global_577_488 c_unique)) (forall ((?ss_576_489 c_unique)) (forall ((?s_575_490 c_unique)) (forall ((?alloc_574_491 c_unique)) (let ((?v_1 (type_pointer type_global))) (let ((?v_0 (type_memory ?v_1 type_global))) (let ((?v_7 (c_sort ?v_0 ?u_global_579_486)) (?v_5 (c_sort ?v_0 ?t_global_578_487)) (?v_6 (c_sort ?v_0 ?s1PM_global_577_488)) (?v_2 (c_sort ?v_1 ?ss_576_489)) (?v_3 (c_sort ?v_1 [...]
+(assert (not (forall ((?alloc c_unique)) (forall ((?anonymous_2PM_global c_unique)) (forall ((?anonymous_2_p1_global c_unique)) (forall ((?anonymous_2_p2_global c_unique)) (forall ((?anonymous_2_v1_global c_unique)) (forall ((?anonymous_2_v2_global c_unique)) (forall ((?intM_global c_unique)) (forall ((?u3 c_unique)) (forall ((?u4 c_unique)) (forall ((?w1 c_unique)) (forall ((?w10 c_unique)) (forall ((?w2 c_unique)) (forall ((?w3 c_unique)) (forall ((?w4 c_unique)) (forall ((?w5 c_unique [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/quaternion_ds1_symm_0428.fof.smt2 b/test/regress/regress0/quantifiers/quaternion_ds1_symm_0428.fof.smt2
new file mode 100644
index 0000000..9b0216e
--- /dev/null
+++ b/test/regress/regress0/quantifiers/quaternion_ds1_symm_0428.fof.smt2
@@ -0,0 +1,49 @@
+; COMMAND-LINE: --full-saturate-quant
+; EXPECT: unsat
+(set-logic AUFLIRA)
+(set-info :status unsat)
+(declare-fun def () Real)
+(declare-fun h_ds1_filter () (Array Int (Array Int Real)))
+(declare-fun id_ds1_filter () (Array Int (Array Int Real)))
+(declare-fun pminus_ds1_filter () (Array Int (Array Int Real)))
+(declare-fun pv5 () Int)
+(declare-fun q_ds1_filter () (Array Int (Array Int Real)))
+(declare-fun r_ds1_filter () (Array Int (Array Int Real)))
+(declare-fun use () Real)
+(declare-fun uniform_int_rnd (Int Int) Int)
+(declare-fun abs_ (Real) Real)
+(declare-fun log (Real) Real)
+(declare-fun exp (Real) Real)
+(declare-fun cos (Real) Real)
+(declare-fun sin (Real) Real)
+(declare-fun sqrt (Real) Real)
+(declare-fun divide (Real Real) Real)
+(declare-fun cond (Int Real Real) Real)
+(declare-fun tptp_term_equal (Real Real) Int)
+(declare-fun tptp_term_equals (Real Real) Int)
+(declare-fun tptp_term_and (Real Real) Int)
+(declare-fun sum (Int Int Real) Real)
+(declare-fun dim (Int Int) Int)
+(declare-fun trans ((Array Int (Array Int Real))) (Array Int (Array Int Real)))
+(declare-fun inv ((Array Int (Array Int Real))) (Array Int (Array Int Real)))
+(declare-fun tptp_mmul ((Array Int (Array Int Real)) (Array Int (Array Int Real))) (Array Int (Array Int Real)))
+(declare-fun tptp_madd ((Array Int (Array Int Real)) (Array Int (Array Int Real))) (Array Int (Array Int Real)))
+(declare-fun tptp_msub ((Array Int (Array Int Real)) (Array Int (Array Int Real))) (Array Int (Array Int Real)))
+(declare-fun tptp_const_array1 (Int Real) (Array Int Real))
+(declare-fun tptp_const_array2 (Int Int Real) (Array Int (Array Int Real)))
+(assert (forall ((?X_0 Int) (?C_1 Int)) (=> (>= ?X_0 0) (<= (uniform_int_rnd ?C_1 ?X_0) ?X_0))))
+(assert (forall ((?X_2 Int) (?C_3 Int)) (=> (>= ?X_2 0) (>= (uniform_int_rnd ?C_3 ?X_2) 0))))
+(assert (forall ((?I_4 Int) (?L_5 Int) (?U_6 Int) (?Val_7 Real)) (=> (and (<= ?L_5 ?I_4) (<= ?I_4 ?U_6)) (= (select (tptp_const_array1 (dim ?L_5 ?U_6) ?Val_7) ?I_4) ?Val_7))))
+(assert (forall ((?I_8 Int) (?L1_9 Int) (?U1_10 Int) (?J_11 Int) (?L2_12 Int) (?U2_13 Int) (?Val_14 Real)) (=> (and (and (and (<= ?L1_9 ?I_8) (<= ?I_8 ?U1_10)) (<= ?L2_12 ?J_11)) (<= ?J_11 ?U2_13)) (= (select (select (tptp_const_array2 (dim ?L1_9 ?U1_10) (dim ?L2_12 ?U2_13) ?Val_14) ?I_8) ?J_11) ?Val_14))))
+(assert (forall ((?I0_15 Int) (?J0_16 Int) (?A_17 (Array Int (Array Int Real))) (?B_18 (Array Int (Array Int Real))) (?N_19 Int)) (let ((?v_0 (tptp_mmul ?A_17 (tptp_mmul ?B_18 (trans ?A_17))))) (=> (and (and (and (and (>= ?I0_15 0) (<= ?I0_15 ?N_19)) (>= ?J0_16 0)) (<= ?J0_16 ?N_19)) (= (select (select ?B_18 ?I0_15) ?J0_16) (select (select ?B_18 ?J0_16) ?I0_15))) (= (select (select ?v_0 ?I0_15) ?J0_16) (select (select ?v_0 ?J0_16) ?I0_15))))))
+(assert (forall ((?I0_20 Int) (?J0_21 Int) (?I_22 Int) (?J_23 Int) (?A_24 (Array Int (Array Int Real))) (?B_25 (Array Int (Array Int Real))) (?N_26 Int) (?M_27 Int)) (let ((?v_0 (tptp_mmul ?A_24 (tptp_mmul ?B_25 (trans ?A_24))))) (=> (and (and (and (and (and (and (and (and (>= ?I0_20 0) (<= ?I0_20 ?N_26)) (>= ?J0_21 0)) (<= ?J0_21 ?N_26)) (>= ?I_22 0)) (<= ?I_22 ?M_27)) (>= ?J_23 0)) (<= ?J_23 ?M_27)) (= (select (select ?B_25 ?I_22) ?J_23) (select (select ?B_25 ?J_23) ?I_22))) (= (select [...]
+(assert (forall ((?I_28 Int) (?J_29 Int) (?A_30 (Array Int (Array Int Real))) (?B_31 (Array Int (Array Int Real))) (?N_32 Int)) (let ((?v_0 (tptp_madd ?A_30 ?B_31))) (=> (and (and (and (and (and (>= ?I_28 0) (<= ?I_28 ?N_32)) (>= ?J_29 0)) (<= ?J_29 ?N_32)) (= (select (select ?A_30 ?I_28) ?J_29) (select (select ?A_30 ?J_29) ?I_28))) (= (select (select ?B_31 ?I_28) ?J_29) (select (select ?B_31 ?J_29) ?I_28))) (= (select (select ?v_0 ?I_28) ?J_29) (select (select ?v_0 ?J_29) ?I_28))))))
+(assert (forall ((?I_33 Int) (?J_34 Int) (?A_35 (Array Int (Array Int Real))) (?B_36 (Array Int (Array Int Real))) (?N_37 Int)) (let ((?v_0 (tptp_msub ?A_35 ?B_36))) (=> (and (and (and (and (and (>= ?I_33 0) (<= ?I_33 ?N_37)) (>= ?J_34 0)) (<= ?J_34 ?N_37)) (= (select (select ?A_35 ?I_33) ?J_34) (select (select ?A_35 ?J_34) ?I_33))) (= (select (select ?B_36 ?I_33) ?J_34) (select (select ?B_36 ?J_34) ?I_33))) (= (select (select ?v_0 ?I_33) ?J_34) (select (select ?v_0 ?J_34) ?I_33))))))
+(assert (forall ((?I_38 Int) (?J_39 Int) (?A_40 (Array Int (Array Int Real))) (?N_41 Int)) (let ((?v_0 (trans ?A_40))) (=> (and (and (and (and (>= ?I_38 0) (<= ?I_38 ?N_41)) (>= ?J_39 0)) (<= ?J_39 ?N_41)) (= (select (select ?A_40 ?I_38) ?J_39) (select (select ?A_40 ?J_39) ?I_38))) (= (select (select ?v_0 ?I_38) ?J_39) (select (select ?v_0 ?J_39) ?I_38))))))
+(assert (forall ((?I_42 Int) (?J_43 Int) (?A_44 (Array Int (Array Int Real))) (?N_45 Int)) (let ((?v_0 (inv ?A_44))) (=> (and (and (and (and (>= ?I_42 0) (<= ?I_42 ?N_45)) (>= ?J_43 0)) (<= ?J_43 ?N_45)) (= (select (select ?A_44 ?I_42) ?J_43) (select (select ?A_44 ?J_43) ?I_42))) (= (select (select ?v_0 ?I_42) ?J_43) (select (select ?v_0 ?J_43) ?I_42))))))
+(assert (forall ((?I0_46 Int) (?J0_47 Int) (?I_48 Int) (?J_49 Int) (?A_50 (Array Int (Array Int Real))) (?B_51 (Array Int (Array Int Real))) (?C_52 (Array Int (Array Int Real))) (?D_53 (Array Int (Array Int Real))) (?E_54 (Array Int (Array Int Real))) (?F_55 (Array Int (Array Int Real))) (?N_56 Int) (?M_57 Int)) (let ((?v_0 (tptp_madd ?A_50 (tptp_mmul ?B_51 (tptp_mmul (tptp_madd (tptp_mmul ?C_52 (tptp_mmul ?D_53 (trans ?C_52))) (tptp_mmul ?E_54 (tptp_mmul ?F_55 (trans ?E_54)))) (trans ?B [...]
+(assert (forall ((?Body_58 Real)) (= (sum 0 (- 1) ?Body_58) 0.0)))
+(assert (not (= def use)))
+(assert (not (=> (and (and (and (and (and (and (>= pv5 0) (<= pv5 998)) (> pv5 0)) (forall ((?A_59 Int) (?B_60 Int)) (=> (and (and (and (>= ?A_59 0) (>= ?B_60 0)) (<= ?A_59 5)) (<= ?B_60 5)) (= (select (select q_ds1_filter ?A_59) ?B_60) (select (select q_ds1_filter ?B_60) ?A_59))))) (forall ((?C_61 Int) (?D_62 Int)) (=> (and (and (and (>= ?C_61 0) (>= ?D_62 0)) (<= ?C_61 2)) (<= ?D_62 2)) (= (select (select r_ds1_filter ?C_61) ?D_62) (select (select r_ds1_filter ?D_62) ?C_61))))) (forall [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/rew-to-0211-dd.smt2 b/test/regress/regress0/quantifiers/rew-to-0211-dd.smt2
new file mode 100644
index 0000000..ec49231
--- /dev/null
+++ b/test/regress/regress0/quantifiers/rew-to-0211-dd.smt2
@@ -0,0 +1,259 @@
+(set-logic UFLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-fun boolIff (Int Int) Int)
+(declare-fun PeerGroupPlaceholder_ () Int)
+(declare-fun intGreater (Int Int) Int)
+(declare-fun IfThenElse_ (Int Int Int) Int)
+(declare-fun System.IConvertible () Int)
+(declare-fun CONCVARSYM (Int) Int)
+(declare-fun throwException_in () Int)
+(declare-fun SharingMode_Unshared_ () Int)
+(declare-fun System.Reflection.IReflect () Int)
+(declare-fun result_0_ () Int)
+(declare-fun block3502_2_block3553_correct () Int)
+(declare-fun int_m2147483648 () Int)
+(declare-fun local0_0 () Int)
+(declare-fun System.Int32 () Int)
+(declare-fun local0_1 () Int)
+(declare-fun block3536_2_block3553_correct () Int)
+(declare-fun block3553_correct () Int)
+(declare-fun intAtMost (Int Int) Int)
+(declare-fun multiply (Int Int) Int)
+(declare-fun Is_ (Int Int) Int)
+(declare-fun Smt.true () Int)
+(declare-fun ElementType_ (Int) Int)
+(declare-fun divide (Int Int) Int)
+(declare-fun int_m9223372036854775808 () Int)
+(declare-fun divides (Int Int) Int)
+(declare-fun stack0b_0 () Int)
+(declare-fun select1 (Int Int) Int)
+(declare-fun stack0b_1 () Int)
+(declare-fun store1 (Int Int Int) Int)
+(declare-fun select2 (Int Int Int) Int)
+(declare-fun nullObject () Int)
+(declare-fun store2 (Int Int Int Int) Int)
+(declare-fun false3451to3468_correct () Int)
+(declare-fun modulo (Int Int) Int)
+(declare-fun System.IComparable () Int)
+(declare-fun ownerRef_ () Int)
+(declare-fun StructSet_ (Int Int Int) Int)
+(declare-fun AsDirectSubClass (Int Int) Int)
+(declare-fun System.IEquatable_1...System.String () Int)
+(declare-fun System.Boolean () Int)
+(declare-fun shl_ (Int Int) Int)
+(declare-fun DimLength_ (Int Int) Int)
+(declare-fun anyEqual (Int Int) Int)
+(declare-fun System.Array () Int)
+(declare-fun block3451_correct () Int)
+(declare-fun System.Collections.Generic.IEnumerable_1...System.Char () Int)
+(declare-fun System.Reflection.ICustomAttributeProvider () Int)
+(declare-fun SharingMode_LockProtected_ () Int)
+(declare-fun IsMemberlessType_ (Int) Int)
+(declare-fun PartOfLine () Int)
+(declare-fun System.UInt16 () Int)
+(declare-fun false3434to3451_correct () Int)
+(declare-fun ClassRepr (Int) Int)
+(declare-fun System.Runtime.InteropServices._Type () Int)
+(declare-fun boolNot (Int) Int)
+(declare-fun Microsoft.Contracts.ICheckedException () Int)
+(declare-fun System.Exception () Int)
+(declare-fun System.Runtime.InteropServices._MemberInfo () Int)
+(declare-fun boolAnd (Int Int) Int)
+(declare-fun boolImplies (Int Int) Int)
+(declare-fun Unbox (Int) Int)
+(declare-fun intAtLeast (Int Int) Int)
+(declare-fun ownerFrame_ () Int)
+(declare-fun int_4294967295 () Int)
+(declare-fun IsAllocated (Int Int) Int)
+(declare-fun TypeName (Int) Int)
+(declare-fun AsPeerField (Int) Int)
+(declare-fun int_9223372036854775807 () Int)
+(declare-fun AsRepField (Int Int) Int)
+(declare-fun System.Reflection.MemberInfo () Int)
+(declare-fun ArrayCategoryValue_ () Int)
+(declare-fun is (Int Int) Int)
+(declare-fun Microsoft.Contracts.GuardException () Int)
+(declare-fun InRange (Int Int) Bool)
+(declare-fun AsOwner (Int Int) Int)
+(declare-fun System.Int64 () Int)
+(declare-fun System.Runtime.InteropServices._Exception () Int)
+(declare-fun or_ (Int Int) Int)
+(declare-fun As_ (Int Int) Int)
+(declare-fun exposeVersion_ () Int)
+(declare-fun true3434to3536_correct () Int)
+(declare-fun System.Type () Int)
+(declare-fun intLess (Int Int) Int)
+(declare-fun AsImmutable_ (Int) Int)
+(declare-fun NonNullFieldsAreInitialized_ () Int)
+(declare-fun block3417_correct () Int)
+(declare-fun LBound_ (Int Int) Int)
+(declare-fun System.Object () Int)
+(declare-fun System.UInt32 () Int)
+(declare-fun localinv_ () Int)
+(declare-fun inv_ () Int)
+(declare-fun Interval () Int)
+(declare-fun stack50000o_0 () Int)
+(declare-fun stack50000o_1 () Int)
+(declare-fun Heap_0_ () Int)
+(declare-fun entry_correct () Int)
+(declare-fun FirstConsistentOwner_ () Int)
+(declare-fun UnboxedType (Int) Int)
+(declare-fun AsRefField (Int Int) Int)
+(declare-fun System.Byte () Int)
+(declare-fun this () Int)
+(declare-fun stack1o_0 () Int)
+(declare-fun int_2147483647 () Int)
+(declare-fun ArrayCategoryRef_ () Int)
+(declare-fun Interval.a () Int)
+(declare-fun Interval.b () Int)
+(declare-fun stack1i_0 () Int)
+(declare-fun Heap_ () Int)
+(declare-fun Length_ (Int) Int)
+(declare-fun System.Runtime.Serialization.ISerializable () Int)
+(declare-fun AsNonNullRefField (Int Int) Int)
+(declare-fun IsHeap (Int) Int)
+(declare-fun Heap_1_ () Int)
+(declare-fun UBound_ (Int Int) Int)
+(declare-fun Cell () Int)
+(declare-fun System.String () Int)
+(declare-fun System.String.IsInterned_System.String_notnull_ (Int) Int)
+(declare-fun Rank_ (Int) Int)
+(declare-fun UnknownRef_ () Int)
+(declare-fun RefArraySet (Int Int Int) Int)
+(declare-fun ValueArraySet (Int Int Int) Int)
+(declare-fun stack50000o () Int)
+(declare-fun boolOr (Int Int) Int)
+(declare-fun sharingMode_ () Int)
+(declare-fun subtypes (Int Int) Bool)
+(declare-fun System.IComparable_1...System.String () Int)
+(declare-fun System.String.Equals_System.String_System.String_ (Int Int) Int)
+(declare-fun block3434_correct () Int)
+(declare-fun anyNeq (Int Int) Int)
+(declare-fun IsStaticField (Int) Int)
+(declare-fun SS_Display.Return.Local_0 () Int)
+(declare-fun IsNotNull_ (Int Int) Int)
+(declare-fun typeof_ (Int) Int)
+(declare-fun ArrayCategoryNonNullRef_ () Int)
+(declare-fun RefArrayGet (Int Int) Int)
+(declare-fun ValueArrayGet (Int Int) Int)
+(declare-fun TypeObject (Int) Int)
+(declare-fun and_ (Int Int) Int)
+(declare-fun BoxTester (Int Int) Int)
+(declare-fun Microsoft.Contracts.ObjectInvariantException () Int)
+(declare-fun block3468_correct () Int)
+(declare-fun IsValueType_ (Int) Int)
+(declare-fun Heap_2_ () Int)
+(declare-fun AsRangeField (Int Int) Int)
+(declare-fun System.SByte () Int)
+(declare-fun BeingConstructed_ () Int)
+(declare-fun block3502_correct () Int)
+(declare-fun FieldDependsOnFCO_ (Int Int Int) Int)
+(declare-fun NonNullRefArray (Int Int) Int)
+(declare-fun RefArray (Int Int) Int)
+(declare-fun ArrayCategory_ (Int) Int)
+(declare-fun stack0b () Int)
+(declare-fun Cell.Value () Int)
+(declare-fun AsPureObject_ (Int) Int)
+(declare-fun System.String.Equals_System.String_ (Int Int) Int)
+(declare-fun System.Int16 () Int)
+(declare-fun block3536_correct () Int)
+(declare-fun AsMutable_ (Int) Int)
+(declare-fun System.Char () Int)
+(declare-fun System.UInt64 () Int)
+(declare-fun StructGet_ (Int Int) Int)
+(declare-fun OneClassDown (Int Int) Int)
+(declare-fun ArrayIndex (Int Int Int Int) Int)
+(declare-fun stack0o_0 () Int)
+(declare-fun Box (Int Int) Int)
+(declare-fun stack0o_1 () Int)
+(declare-fun int_18446744073709551615 () Int)
+(declare-fun shr_ (Int Int) Int)
+(declare-fun stack0i_0 () Int)
+(declare-fun block3553_2_GeneratedUnifiedExit_correct () Int)
+(declare-fun System.ICloneable () Int)
+(declare-fun IsDirectlyModifiableField (Int) Int)
+(declare-fun StringLength_ (Int) Int)
+(declare-fun allocated_ () Int)
+(declare-fun BaseClass_ (Int) Int)
+(declare-fun ValueArray (Int Int) Int)
+(declare-fun Smt.false () Int)
+(declare-fun true3451to3502_correct () Int)
+(declare-fun IsImmutable_ (Int) Int)
+(declare-fun elements_ () Int)
+(declare-fun DeclType (Int) Int)
+(declare-fun System.Collections.IEnumerable () Int)
+(declare-fun ReallyLastGeneratedExit_correct () Int)
+(assert (forall ((?o Int) (?T Int)) (! (= (= (IsNotNull_ ?o ?T) Smt.true) (and (not (= ?o nullObject)) (= (Is_ ?o ?T) Smt.true))) :pattern ((IsNotNull_ ?o ?T)) )))
+(assert (forall ((?h Int) (?o Int) (?f Int) (?T Int)) (! (=> (and (= (IsHeap ?h) Smt.true) (not (= ?o nullObject)) (or (not (= ?o BeingConstructed_)) (= (= (select2 ?h BeingConstructed_ NonNullFieldsAreInitialized_) Smt.true) true))) (not (= (select2 ?h ?o (AsNonNullRefField ?f ?T)) nullObject))) :pattern ((select2 ?h ?o (AsNonNullRefField ?f ?T))) )))
+(assert (forall ((?o Int) (?T Int)) (! (=> (and (not (= ?o nullObject)) (not (= ?o BeingConstructed_)) (subtypes (typeof_ ?o) (AsImmutable_ ?T))) (forall ((?h Int)) (! (let ((?v_0 (typeof_ ?o))) (=> (= (IsHeap ?h) Smt.true) (and (= (select2 ?h ?o inv_) ?v_0) (= (select2 ?h ?o localinv_) ?v_0) (= (select2 ?h ?o ownerFrame_) PeerGroupPlaceholder_) (= (AsOwner ?o (select2 ?h ?o ownerRef_)) ?o) (forall ((?t Int)) (! (=> (= (AsOwner ?o (select2 ?h ?t ownerRef_)) ?o) (or (= ?t ?o) (not (= (sel [...]
+(assert (= (IsValueType_ System.SByte) Smt.true))
+(assert (= (IsValueType_ System.Byte) Smt.true))
+(assert (= (IsValueType_ System.Int16) Smt.true))
+(assert (= (IsValueType_ System.UInt16) Smt.true))
+(assert (= (IsValueType_ System.Int32) Smt.true))
+(assert (= (IsValueType_ System.UInt32) Smt.true))
+(assert (= (IsValueType_ System.Int64) Smt.true))
+(assert (= (IsValueType_ System.UInt64) Smt.true))
+(assert (= (IsValueType_ System.Char) Smt.true))
+(assert (< int_m9223372036854775808 int_m2147483648))
+(assert (< int_m2147483648 (- 0 100000)))
+(assert (< 100000 int_2147483647))
+(assert (< int_2147483647 int_4294967295))
+(assert (< int_4294967295 int_9223372036854775807))
+(assert (< int_9223372036854775807 int_18446744073709551615))
+(assert (not (= (IsStaticField Cell.Value) Smt.true)))
+(assert (= (IsDirectlyModifiableField Cell.Value) Smt.true))
+(assert (= (DeclType Cell.Value) Cell))
+(assert (= (AsRangeField Cell.Value System.Int32) Cell.Value))
+(assert (not (= (IsStaticField Interval.a) Smt.true)))
+(assert (= (IsDirectlyModifiableField Interval.a) Smt.true))
+(assert (= (AsRepField Interval.a Interval) Interval.a))
+(assert (= (DeclType Interval.a) Interval))
+(assert (= (AsNonNullRefField Interval.a Cell) Interval.a))
+(assert (not (= (IsStaticField Interval.b) Smt.true)))
+(assert (= (IsDirectlyModifiableField Interval.b) Smt.true))
+(assert (= (AsRepField Interval.b Interval) Interval.b))
+(assert (= (DeclType Interval.b) Interval))
+(assert (= (AsNonNullRefField Interval.b Cell) Interval.b))
+(assert (subtypes Cell Cell))
+(assert (= (BaseClass_ Cell) System.Object))
+(assert (subtypes Cell (BaseClass_ Cell)))
+(assert (= (AsDirectSubClass Cell (BaseClass_ Cell)) Cell))
+(assert (not (= (IsImmutable_ Cell) Smt.true)))
+(assert (= (AsMutable_ Cell) Cell))
+(assert (subtypes System.Type System.Type))
+(assert (subtypes System.Reflection.MemberInfo System.Reflection.MemberInfo))
+(assert (= (BaseClass_ System.Reflection.MemberInfo) System.Object))
+(assert (subtypes System.Reflection.MemberInfo (BaseClass_ System.Reflection.MemberInfo)))
+(assert (= (AsDirectSubClass System.Reflection.MemberInfo (BaseClass_ System.Reflection.MemberInfo)) System.Reflection.MemberInfo))
+(assert (= (IsImmutable_ System.Reflection.MemberInfo) Smt.true))
+(assert (= (AsImmutable_ System.Reflection.MemberInfo) System.Reflection.MemberInfo))
+(assert (subtypes System.Reflection.ICustomAttributeProvider System.Object))
+(assert (= (IsMemberlessType_ System.Reflection.ICustomAttributeProvider) Smt.true))
+(assert (subtypes System.Reflection.MemberInfo System.Reflection.ICustomAttributeProvider))
+(assert (subtypes System.Runtime.InteropServices._MemberInfo System.Object))
+(assert (= (IsMemberlessType_ System.Runtime.InteropServices._MemberInfo) Smt.true))
+(assert (subtypes System.Reflection.MemberInfo System.Runtime.InteropServices._MemberInfo))
+(assert (= (IsMemberlessType_ System.Reflection.MemberInfo) Smt.true))
+(assert (= (BaseClass_ System.Type) System.Reflection.MemberInfo))
+(assert (subtypes System.Type (BaseClass_ System.Type)))
+(assert (= (AsDirectSubClass System.Type (BaseClass_ System.Type)) System.Type))
+(assert (= (IsImmutable_ System.Type) Smt.true))
+(assert (= (AsImmutable_ System.Type) System.Type))
+(assert (subtypes System.Runtime.InteropServices._Type System.Object))
+(assert (= (IsMemberlessType_ System.Runtime.InteropServices._Type) Smt.true))
+(assert (subtypes System.Type System.Runtime.InteropServices._Type))
+(assert (subtypes System.Reflection.IReflect System.Object))
+(assert (= (IsMemberlessType_ System.Reflection.IReflect) Smt.true))
+(assert (subtypes System.Type System.Reflection.IReflect))
+(assert (= (IsMemberlessType_ System.Type) Smt.true))
+(assert (subtypes PartOfLine PartOfLine))
+(assert (= (BaseClass_ PartOfLine) System.Object))
+(assert (subtypes PartOfLine (BaseClass_ PartOfLine)))
+(assert (= (AsDirectSubClass PartOfLine (BaseClass_ PartOfLine)) PartOfLine))
+(assert (distinct Smt.false Smt.true))
+(assert (let ((?v_0 (select2 Heap_ this ownerFrame_)) (?v_1 (select2 Heap_ this ownerRef_)) (?v_2 (not (= this nullObject))) (?v_3 (not (= stack0o_0 nullObject))) (?v_4 (not (= stack1o_0 nullObject))) (?v_5 (forall ((?o_ Int)) (=> (and (not (= ?o_ nullObject)) (= (= (select2 Heap_ ?o_ allocated_) Smt.true) true)) (and (= (select2 Heap_ ?o_ ownerRef_) (select2 Heap_2_ ?o_ ownerRef_)) (= (select2 Heap_ ?o_ ownerFrame_) (select2 Heap_2_ ?o_ ownerFrame_)))))) (?v_12 (=> true true)) (?v_6 (=  [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/rew-to-scala.smt2 b/test/regress/regress0/quantifiers/rew-to-scala.smt2
new file mode 100644
index 0000000..1e29241
--- /dev/null
+++ b/test/regress/regress0/quantifiers/rew-to-scala.smt2
@@ -0,0 +1,13 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-datatypes () ((Formula!953 (And!954 (lhs!955 Formula!953) (rhs!956 Formula!953)) (Not!957 (f!958 Formula!953)) (Or!959 (lhs!960 Formula!953) (rhs!961 Formula!953)) (Variable!962 (id!963 (_ BitVec 32))))
+))
+(declare-fun error_value!964 () Bool)
+(declare-fun isNNF!208 (Formula!953) Bool)
+(declare-fun error_value!965 () Formula!953)
+(declare-fun nnf!206 (Formula!953) Formula!953)
+(declare-fun error_value!966 () Formula!953)
+(assert (forall ((f!207 Formula!953)) (= (isNNF!208 f!207) (ite (is-And!954 f!207) (and (and (isNNF!208 (lhs!955 f!207)) (isNNF!208 (lhs!955 f!207))) (isNNF!208 (rhs!956 f!207))) (ite (is-Or!959 f!207) (and (and (isNNF!208 (lhs!960 f!207)) (isNNF!208 (lhs!960 f!207))) (isNNF!208 (rhs!961 f!207))) (ite (is-Not!957 f!207) false (ite (is-Variable!962 f!207) true error_value!964))))) ))
+(assert (forall ((formula!205 Formula!953)) (= (nnf!206 formula!205) (ite (is-And!954 formula!205) (And!954 (nnf!206 (lhs!955 formula!205)) (nnf!206 (rhs!956 formula!205))) (ite (is-Or!959 formula!205) (Or!959 (nnf!206 (lhs!960 formula!205)) (nnf!206 (rhs!961 formula!205))) (ite (and (and (is-Not!957 formula!205) (is-Not!957 formula!205)) (is-And!954 (f!958 formula!205))) (Or!959 (nnf!206 (Not!957 (lhs!955 (f!958 formula!205)))) (nnf!206 (Not!957 (rhs!956 (f!958 formula!205))))) (ite (an [...]
+(assert (exists ((formula!205 Formula!953)) (not (=> (is-Variable!962 formula!205) (isNNF!208 (ite (is-And!954 formula!205) (And!954 (nnf!206 (lhs!955 formula!205)) (nnf!206 (rhs!956 formula!205))) (ite (is-Or!959 formula!205) (Or!959 (nnf!206 (lhs!960 formula!205)) (nnf!206 (rhs!961 formula!205))) (ite (and (and (is-Not!957 formula!205) (is-Not!957 formula!205)) (is-And!954 (f!958 formula!205))) (Or!959 (nnf!206 (Not!957 (lhs!955 (f!958 formula!205)))) (nnf!206 (Not!957 (rhs!956 (f!958  [...]
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/ricart-agrawala6.smt2 b/test/regress/regress0/quantifiers/ricart-agrawala6.smt2
new file mode 100644
index 0000000..5f849de
--- /dev/null
+++ b/test/regress/regress0/quantifiers/ricart-agrawala6.smt2
@@ -0,0 +1,26 @@
+(set-logic AUFLIA)
+(set-info :source | An Optimal Algorithm for Mutual Exclusion in Computer Networks. Glenn Ricart and Ashok K. Agrawala. Communications of the ACM Vol.: 24 Number: 1. This is a benchmark of the haRVey theorem prover. It was translated to SMT-LIB by Leonardo  de Moura |)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-fun p () Int)
+(declare-fun q () Int)
+(declare-fun r () Int)
+(declare-fun s () Int)
+(declare-fun s0 (Int) Bool)
+(declare-fun s1 (Int) Bool)
+(declare-fun s2 (Int) Bool)
+(declare-fun s3 (Int) Bool)
+(declare-fun s4 (Int) Bool)
+(declare-fun s5 (Int) Bool)
+(declare-fun s6 (Int) Bool)
+(declare-fun rcs1 (Int) Bool)
+(declare-fun rcs2 (Int) Bool)
+(declare-fun x (Int Int) Bool)
+(declare-fun ro (Int Int) Bool)
+(declare-fun rd (Int Int) Bool)
+(declare-fun sn (Int) Int)
+(declare-fun time () Int)
+(assert (not (=> (and (forall ((?p Int)) (forall ((?q Int)) (=> (or (s0 ?p) (s5 ?p)) (not (x ?p ?q))))) (forall ((?p Int)) (= (or (s0 ?p) (s6 ?p)) (not (rcs2 ?p)))) (forall ((?p Int)) (< (sn ?p) time)) (forall ((?p Int)) (forall ((?q Int)) (=> (not (= ?p ?q)) (not (= (sn ?p) (sn ?q)))))) (forall ((?p Int)) (forall ((?q Int)) (=> (and (not (= ?p ?q)) (or (and (s4 ?p) (x ?p ?q)) (s5 ?p)) (rcs2 ?q)) (< (sn ?p) (sn ?q))))) (forall ((?p Int)) (forall ((?q Int)) (=> (and (not (= ?p ?q)) (rd ?q [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/set8.smt2 b/test/regress/regress0/quantifiers/set8.smt2
new file mode 100644
index 0000000..684d94b
--- /dev/null
+++ b/test/regress/regress0/quantifiers/set8.smt2
@@ -0,0 +1,26 @@
+(set-logic AUFLIA)
+(set-info :source | Set theory. |)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-sort Set 0)
+(declare-sort Elem 0)
+(declare-fun member (Elem Set) Bool)
+(declare-fun subset (Set Set) Bool)
+(assert (forall ((?x Elem) (?s1 Set) (?s2 Set)) (=> (and (member ?x ?s1) (subset ?s1 ?s2)) (member ?x ?s2))))
+(assert (forall ((?s1 Set) (?s2 Set)) (=> (not (subset ?s1 ?s2)) (exists ((?x Elem)) (and (member ?x ?s1) (not (member ?x ?s2)))))))
+(assert (forall ((?s1 Set) (?s2 Set)) (=> (forall ((?x Elem)) (=> (member ?x ?s1) (member ?x ?s2))) (subset ?s1 ?s2))))
+(declare-fun seteq (Set Set) Bool)
+(assert (forall ((?s1 Set) (?s2 Set)) (= (seteq ?s1 ?s2) (= ?s1 ?s2))))
+(assert (forall ((?s1 Set) (?s2 Set)) (= (seteq ?s1 ?s2) (and (subset ?s1 ?s2) (subset ?s2 ?s1)))))
+(declare-fun union (Set Set) Set)
+(assert (forall ((?x Elem) (?s1 Set) (?s2 Set)) (= (member ?x (union ?s1 ?s2)) (or (member ?x ?s1) (member ?x ?s2)))))
+(declare-fun intersection (Set Set) Set)
+(assert (forall ((?x Elem) (?s1 Set) (?s2 Set)) (= (member ?x (intersection ?s1 ?s2)) (and (member ?x ?s1) (member ?x ?s2)))))
+(declare-fun difference (Set Set) Set)
+(assert (forall ((?x Elem) (?s1 Set) (?s2 Set)) (= (member ?x (difference ?s1 ?s2)) (and (member ?x ?s1) (not (member ?x ?s2))))))
+(declare-fun a () Set)
+(declare-fun b () Set)
+(assert (not (seteq (intersection a b) (intersection b a))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/simp-len.smt2 b/test/regress/regress0/quantifiers/simp-len.smt2
new file mode 100644
index 0000000..d213e34
--- /dev/null
+++ b/test/regress/regress0/quantifiers/simp-len.smt2
@@ -0,0 +1,9 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-datatypes () ((Lst (cons (head Int) (tail Lst)) (nil))))
+
+(define-fun-rec len ((x Lst)) Int (ite (is-cons x) (+ 1 (len (tail x))) 0))
+
+(assert (= (len (cons 0 nil)) 0))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/quantifiers/simp-typ-test.smt2 b/test/regress/regress0/quantifiers/simp-typ-test.smt2
new file mode 100644
index 0000000..380a66a
--- /dev/null
+++ b/test/regress/regress0/quantifiers/simp-typ-test.smt2
@@ -0,0 +1,7 @@
+(set-logic UFLIRA)
+(set-info :status unsat)
+; ensure that E-matching matches on sub-types
+(declare-fun P (Real) Bool)
+(assert (forall ((x Real)) (P x)))
+(assert (not (P 5)))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/quantifiers/small-bug1-fixpoint-3.smt2 b/test/regress/regress0/quantifiers/small-bug1-fixpoint-3.smt2
new file mode 100644
index 0000000..c26cde1
--- /dev/null
+++ b/test/regress/regress0/quantifiers/small-bug1-fixpoint-3.smt2
@@ -0,0 +1,16 @@
+; COMMAND-LINE: --cbqi-all --no-check-models
+; EXPECT: sat
+;AJR:BROKEN
+(set-logic UFBV)
+(set-info :status sat)
+(declare-fun Verilog__main.impl_PC_valid_64_1_39_!3 (Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool) Bool)
+(declare-fun Verilog__main.impl_flush_64_1_39_!1 (Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool) Bool)
+(declare-fun Verilog__main.reset_64_0_39_!4 (Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool) Bool)
+(declare-fun Verilog__main.impl_PC_valid_64_2_39_!6 (Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool) Bool)
+(declare-fun Verilog__main.impl_flush_64_0_39_!0 (Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool) Bool)
+(declare-fun Verilog__main.reset_64_1_39_!7 (Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool) Bool)
+(declare-fun Verilog__main.impl_PC_valid_64_0_39_!5 (Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool) Bool)
+(declare-fun Verilog__main.impl_flush_64_2_39_!2 (Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool) Bool)
+(assert (forall ((Verilog__main.impl_flush_64_0 Bool) (Verilog__main.impl_flush_64_1 Bool) (Verilog__main.impl_flush_64_2 Bool) (Verilog__main.impl_flush_64_3 Bool) (Verilog__main.impl_PC_valid_64_1 Bool) (Verilog__main.reset_64_0 Bool) (Verilog__main.impl_PC_valid_64_0 Bool) (Verilog__main.impl_PC_valid_64_2 Bool) (Verilog__main.reset_64_1 Bool) (Verilog__main.impl_PC_valid_64_3 Bool) (Verilog__main.reset_64_2 Bool)) (=> (and (= Verilog__main.impl_flush_64_0 false) (= Verilog__main.impl [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/smtlib384a03.smt2 b/test/regress/regress0/quantifiers/smtlib384a03.smt2
new file mode 100644
index 0000000..9e2273c
--- /dev/null
+++ b/test/regress/regress0/quantifiers/smtlib384a03.smt2
@@ -0,0 +1,205 @@
+(set-logic AUFLIRA)
+(set-info :source |http://proval.lri.fr/why-benchmarks |)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-sort Unit 0)
+(declare-sort c_unique 0)
+(declare-sort c_ssorted 0)
+(declare-sort c_type 0)
+(declare-sort c_Boolean 0)
+(declare-fun c_sort (c_type c_unique) c_ssorted)
+(declare-fun c_Boolean_true () c_Boolean)
+(declare-fun c_Boolean_false () c_Boolean)
+(assert (forall ((?b_22_1 c_Boolean)) (or (= c_Boolean_true ?b_22_1) (= c_Boolean_false ?b_22_1))))
+(assert (not (= c_Boolean_true c_Boolean_false)))
+(declare-fun int2U (Int) c_unique)
+(declare-fun ss2Int (c_ssorted) Int)
+(declare-fun real2U (Real) c_unique)
+(declare-fun ss2Real (c_ssorted) Real)
+(declare-fun bool2U (c_Boolean) c_unique)
+(declare-fun ss2Bool (c_ssorted) c_Boolean)
+(declare-fun c_int () c_type)
+(declare-fun c_bool () c_type)
+(declare-fun c_real () c_type)
+(declare-fun c_unit () c_type)
+(declare-fun c_ref (c_unique) c_unique)
+(assert (forall ((?t_21_2 c_type)) (forall ((?x_20_3 c_unique)) (forall ((?y_19_4 c_unique)) (=> (= (c_sort ?t_21_2 ?x_20_3) (c_sort ?t_21_2 ?y_19_4)) (= ?x_20_3 ?y_19_4))))))
+(assert (forall ((?x_18_5 Int)) (= (ss2Int (c_sort c_int (int2U ?x_18_5))) ?x_18_5)))
+(assert (forall ((?x_17_6 Int)) (forall ((?y_16_7 Int)) (=> (= (int2U ?x_17_6) (int2U ?y_16_7)) (= ?x_17_6 ?y_16_7)))))
+(assert (forall ((?x_15_8 Real)) (forall ((?y_14_9 Real)) (=> (= (real2U ?x_15_8) (real2U ?y_14_9)) (= ?x_15_8 ?y_14_9)))))
+(assert (forall ((?x_13_10 c_Boolean)) (forall ((?y_12_11 c_Boolean)) (=> (= (bool2U ?x_13_10) (bool2U ?y_12_11)) (= ?x_13_10 ?y_12_11)))))
+(assert (forall ((?x_11_12 c_ssorted)) (forall ((?y_10_13 c_ssorted)) (=> (= (ss2Int ?x_11_12) (ss2Int ?y_10_13)) (= ?x_11_12 ?y_10_13)))))
+(assert (forall ((?x_9_14 c_ssorted)) (forall ((?y_8_15 c_ssorted)) (=> (= (ss2Real ?x_9_14) (ss2Real ?y_8_15)) (= ?x_9_14 ?y_8_15)))))
+(assert (forall ((?x_7_16 c_ssorted)) (forall ((?y_6_17 c_ssorted)) (=> (= (ss2Bool ?x_7_16) (ss2Bool ?y_6_17)) (= ?x_7_16 ?y_6_17)))))
+(assert (forall ((?x_5_18 Real)) (= (ss2Real (c_sort c_real (real2U ?x_5_18))) ?x_5_18)))
+(assert (forall ((?x_4_19 c_Boolean)) (= (ss2Bool (c_sort c_bool (bool2U ?x_4_19))) ?x_4_19)))
+(assert (forall ((?x_3_20 c_unique)) (= (int2U (ss2Int (c_sort c_int ?x_3_20))) ?x_3_20)))
+(assert (forall ((?x_2_21 c_unique)) (= (real2U (ss2Real (c_sort c_real ?x_2_21))) ?x_2_21)))
+(assert (forall ((?x_1_22 c_unique)) (= (bool2U (ss2Bool (c_sort c_bool ?x_1_22))) ?x_1_22)))
+(declare-fun eq_int (Int Int) Bool)
+(declare-fun neq_int (Int Int) Bool)
+(declare-fun lt_int_bool (Int Int) c_Boolean)
+(declare-fun le_int_bool (Int Int) c_Boolean)
+(declare-fun gt_int_bool (Int Int) c_Boolean)
+(declare-fun ge_int_bool (Int Int) c_Boolean)
+(declare-fun eq_int_bool (Int Int) c_Boolean)
+(declare-fun neq_int_bool (Int Int) c_Boolean)
+(assert (forall ((?x_40_23 Int)) (forall ((?y_39_24 Int)) (= (= (lt_int_bool ?x_40_23 ?y_39_24) c_Boolean_true) (< ?x_40_23 ?y_39_24)))))
+(assert (forall ((?x_42_25 Int)) (forall ((?y_41_26 Int)) (= (= (le_int_bool ?x_42_25 ?y_41_26) c_Boolean_true) (<= ?x_42_25 ?y_41_26)))))
+(assert (forall ((?x_44_27 Int)) (forall ((?y_43_28 Int)) (= (= (gt_int_bool ?x_44_27 ?y_43_28) c_Boolean_true) (> ?x_44_27 ?y_43_28)))))
+(assert (forall ((?x_46_29 Int)) (forall ((?y_45_30 Int)) (= (= (ge_int_bool ?x_46_29 ?y_45_30) c_Boolean_true) (>= ?x_46_29 ?y_45_30)))))
+(assert (forall ((?x_48_31 Int)) (forall ((?y_47_32 Int)) (= (= (eq_int_bool ?x_48_31 ?y_47_32) c_Boolean_true) (= ?x_48_31 ?y_47_32)))))
+(assert (forall ((?x_50_33 Int)) (forall ((?y_49_34 Int)) (= (= (neq_int_bool ?x_50_33 ?y_49_34) c_Boolean_true) (not (= ?x_50_33 ?y_49_34))))))
+(declare-fun add_real (Real Real) Real)
+(declare-fun sub_real (Real Real) Real)
+(declare-fun mul_real (Real Real) Real)
+(declare-fun div_real (Real Real) Real)
+(declare-fun pow_real (Real Real) Real)
+(declare-fun neg_real (Real) Real)
+(declare-fun abs_real (Real) Real)
+(declare-fun sqrt_real (Real) Real)
+(declare-fun real_of_int (Int) Real)
+(declare-fun int_of_real (Real) Int)
+(declare-fun lt_real (Real Real) Bool)
+(declare-fun le_real (Real Real) Bool)
+(declare-fun gt_real (Real Real) Bool)
+(declare-fun ge_real (Real Real) Bool)
+(declare-fun eq_real (Real Real) Bool)
+(declare-fun neq_real (Real Real) Bool)
+(declare-fun eq_bool (c_Boolean c_Boolean) Bool)
+(declare-fun neq_bool (c_Boolean c_Boolean) Bool)
+(declare-fun eq_unit (c_ssorted c_ssorted) Bool)
+(declare-fun neq_unit (c_ssorted c_ssorted) Bool)
+(declare-fun smtlib__ite (c_Boolean c_ssorted c_ssorted) c_unique)
+(assert (forall ((?t_1_76_35 c_type)) (forall ((?x_75_36 c_unique)) (forall ((?y_74_37 c_unique)) (= (smtlib__ite c_Boolean_true (c_sort ?t_1_76_35 ?x_75_36) (c_sort ?t_1_76_35 ?y_74_37)) ?x_75_36)))))
+(assert (forall ((?t_2_79_38 c_type)) (forall ((?x_78_39 c_unique)) (forall ((?y_77_40 c_unique)) (= (smtlib__ite c_Boolean_false (c_sort ?t_2_79_38 ?x_78_39) (c_sort ?t_2_79_38 ?y_77_40)) ?y_77_40)))))
+(declare-fun bw_compl (Int) Int)
+(declare-fun bw_and (Int Int) Int)
+(declare-fun bw_xor (Int Int) Int)
+(declare-fun bw_or (Int Int) Int)
+(declare-fun lsl (Int Int) Int)
+(declare-fun lsr (Int Int) Int)
+(declare-fun non_int (Int) Int)
+(declare-fun type_pointer (c_type) c_type)
+(declare-fun type_addr (c_type) c_type)
+(declare-fun type_alloc_table () c_type)
+(declare-fun block_length (c_ssorted c_ssorted) Int)
+(declare-fun base_addr (c_ssorted) c_unique)
+(declare-fun offset (c_ssorted) Int)
+(declare-fun shift (c_ssorted Int) c_unique)
+(declare-fun sub_pointer (c_ssorted c_ssorted) Int)
+(declare-fun lt_pointer (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_3_88_41 c_type)) (forall ((?p1_87_42 c_unique)) (forall ((?p2_86_43 c_unique)) (let ((?v_0 (type_pointer ?t_3_88_41))) (let ((?v_1 (c_sort ?v_0 ?p1_87_42)) (?v_2 (c_sort ?v_0 ?p2_86_43))) (= (lt_pointer ?v_1 ?v_2) (and (= (base_addr ?v_1) (base_addr ?v_2)) (< (offset ?v_1) (offset ?v_2))))))))))
+(declare-fun le_pointer (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_4_91_44 c_type)) (forall ((?p1_90_45 c_unique)) (forall ((?p2_89_46 c_unique)) (let ((?v_0 (type_pointer ?t_4_91_44))) (let ((?v_1 (c_sort ?v_0 ?p1_90_45)) (?v_2 (c_sort ?v_0 ?p2_89_46))) (= (le_pointer ?v_1 ?v_2) (and (= (base_addr ?v_1) (base_addr ?v_2)) (<= (offset ?v_1) (offset ?v_2))))))))))
+(declare-fun gt_pointer (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_5_94_47 c_type)) (forall ((?p1_93_48 c_unique)) (forall ((?p2_92_49 c_unique)) (let ((?v_0 (type_pointer ?t_5_94_47))) (let ((?v_1 (c_sort ?v_0 ?p1_93_48)) (?v_2 (c_sort ?v_0 ?p2_92_49))) (= (gt_pointer ?v_1 ?v_2) (and (= (base_addr ?v_1) (base_addr ?v_2)) (> (offset ?v_1) (offset ?v_2))))))))))
+(declare-fun ge_pointer (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_6_97_50 c_type)) (forall ((?p1_96_51 c_unique)) (forall ((?p2_95_52 c_unique)) (let ((?v_0 (type_pointer ?t_6_97_50))) (let ((?v_1 (c_sort ?v_0 ?p1_96_51)) (?v_2 (c_sort ?v_0 ?p2_95_52))) (= (ge_pointer ?v_1 ?v_2) (and (= (base_addr ?v_1) (base_addr ?v_2)) (>= (offset ?v_1) (offset ?v_2))))))))))
+(declare-fun valid (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_7_104_53 c_type)) (forall ((?a_103_54 c_unique)) (forall ((?p_102_55 c_unique)) (let ((?v_2 (c_sort type_alloc_table ?a_103_54)) (?v_0 (c_sort (type_pointer ?t_7_104_53) ?p_102_55))) (let ((?v_1 (offset ?v_0))) (= (valid ?v_2 ?v_0) (and (<= 0 ?v_1) (< ?v_1 (block_length ?v_2 ?v_0))))))))))
+(declare-fun valid_index (c_ssorted c_ssorted Int) Bool)
+(assert (forall ((?t_8_108_56 c_type)) (forall ((?a_107_57 c_unique)) (forall ((?p_106_58 c_unique)) (forall ((?i_105_59 Int)) (let ((?v_2 (c_sort type_alloc_table ?a_107_57)) (?v_0 (c_sort (type_pointer ?t_8_108_56) ?p_106_58))) (let ((?v_1 (+ (offset ?v_0) ?i_105_59))) (= (valid_index ?v_2 ?v_0 ?i_105_59) (and (<= 0 ?v_1) (< ?v_1 (block_length ?v_2 ?v_0)))))))))))
+(declare-fun valid_range (c_ssorted c_ssorted Int Int) Bool)
+(assert (forall ((?t_9_113_60 c_type)) (forall ((?a_112_61 c_unique)) (forall ((?p_111_62 c_unique)) (forall ((?i_110_63 Int)) (forall ((?j_109_64 Int)) (let ((?v_2 (c_sort type_alloc_table ?a_112_61)) (?v_0 (c_sort (type_pointer ?t_9_113_60) ?p_111_62))) (let ((?v_1 (offset ?v_0))) (= (valid_range ?v_2 ?v_0 ?i_110_63 ?j_109_64) (and (<= 0 (+ ?v_1 ?i_110_63)) (< (+ ?v_1 ?j_109_64) (block_length ?v_2 ?v_0))))))))))))
+(assert (forall ((?t_10_116_65 c_type)) (forall ((?p_115_66 c_unique)) (forall ((?i_114_67 Int)) (let ((?v_0 (type_pointer ?t_10_116_65))) (let ((?v_1 (c_sort ?v_0 ?p_115_66))) (= (offset (c_sort ?v_0 (shift ?v_1 ?i_114_67))) (+ (offset ?v_1) ?i_114_67))))))))
+(assert (forall ((?t_11_118_68 c_type)) (forall ((?p_117_69 c_unique)) (= (shift (c_sort (type_pointer ?t_11_118_68) ?p_117_69) 0) ?p_117_69))))
+(assert (forall ((?t_12_122_70 c_type)) (forall ((?p_121_71 c_unique)) (forall ((?i_120_72 Int)) (forall ((?j_119_73 Int)) (let ((?v_0 (type_pointer ?t_12_122_70))) (let ((?v_1 (c_sort ?v_0 ?p_121_71))) (= (shift (c_sort ?v_0 (shift ?v_1 ?i_120_72)) ?j_119_73) (shift ?v_1 (+ ?i_120_72 ?j_119_73))))))))))
+(assert (forall ((?t_13_125_74 c_type)) (forall ((?p_124_75 c_unique)) (forall ((?i_123_76 Int)) (let ((?v_0 (type_pointer ?t_13_125_74))) (let ((?v_1 (c_sort ?v_0 ?p_124_75))) (= (base_addr (c_sort ?v_0 (shift ?v_1 ?i_123_76))) (base_addr ?v_1))))))))
+(assert (forall ((?t_14_129_77 c_type)) (forall ((?a_128_78 c_unique)) (forall ((?p_127_79 c_unique)) (forall ((?i_126_80 Int)) (let ((?v_1 (c_sort type_alloc_table ?a_128_78)) (?v_0 (type_pointer ?t_14_129_77))) (let ((?v_2 (c_sort ?v_0 ?p_127_79))) (= (block_length ?v_1 (c_sort ?v_0 (shift ?v_2 ?i_126_80))) (block_length ?v_1 ?v_2)))))))))
+(assert (forall ((?t_15_133_81 c_type)) (forall ((?a_132_82 c_unique)) (forall ((?p1_131_83 c_unique)) (forall ((?p2_130_84 c_unique)) (let ((?v_0 (type_pointer ?t_15_133_81))) (let ((?v_1 (c_sort ?v_0 ?p1_131_83)) (?v_3 (c_sort ?v_0 ?p2_130_84)) (?v_2 (c_sort type_alloc_table ?a_132_82))) (=> (= (base_addr ?v_1) (base_addr ?v_3)) (= (block_length ?v_2 ?v_1) (block_length ?v_2 ?v_3))))))))))
+(assert (forall ((?t_16_136_85 c_type)) (forall ((?p1_135_86 c_unique)) (forall ((?p2_134_87 c_unique)) (let ((?v_0 (type_pointer ?t_16_136_85))) (let ((?v_1 (c_sort ?v_0 ?p1_135_86)) (?v_2 (c_sort ?v_0 ?p2_134_87))) (=> (and (= (base_addr ?v_1) (base_addr ?v_2)) (= (offset ?v_1) (offset ?v_2))) (= ?p1_135_86 ?p2_134_87))))))))
+(assert (forall ((?t_17_139_88 c_type)) (forall ((?p1_138_89 c_unique)) (forall ((?p2_137_90 c_unique)) (let ((?v_0 (type_pointer ?t_17_139_88))) (let ((?v_1 (c_sort ?v_0 ?p1_138_89)) (?v_2 (c_sort ?v_0 ?p2_137_90))) (=> (= ?p1_138_89 ?p2_137_90) (and (= (base_addr ?v_1) (base_addr ?v_2)) (= (offset ?v_1) (offset ?v_2))))))))))
+(assert (forall ((?t_18_144_91 c_type)) (forall ((?p1_143_92 c_unique)) (forall ((?p2_142_93 c_unique)) (forall ((?i_141_94 Int)) (forall ((?j_140_95 Int)) (let ((?v_0 (type_pointer ?t_18_144_91))) (let ((?v_1 (c_sort ?v_0 ?p1_143_92)) (?v_2 (c_sort ?v_0 ?p2_142_93))) (=> (not (= (base_addr ?v_1) (base_addr ?v_2))) (not (= (shift ?v_1 ?i_141_94) (shift ?v_2 ?j_140_95))))))))))))
+(assert (forall ((?t_19_149_96 c_type)) (forall ((?p1_148_97 c_unique)) (forall ((?p2_147_98 c_unique)) (forall ((?i_146_99 Int)) (forall ((?j_145_100 Int)) (let ((?v_0 (type_pointer ?t_19_149_96))) (let ((?v_1 (c_sort ?v_0 ?p1_148_97)) (?v_2 (c_sort ?v_0 ?p2_147_98))) (=> (not (= (+ (offset ?v_1) ?i_146_99) (+ (offset ?v_2) ?j_145_100))) (not (= (shift ?v_1 ?i_146_99) (shift ?v_2 ?j_145_100))))))))))))
+(assert (forall ((?t_20_154_101 c_type)) (forall ((?p1_153_102 c_unique)) (forall ((?p2_152_103 c_unique)) (forall ((?i_151_104 Int)) (forall ((?j_150_105 Int)) (let ((?v_0 (type_pointer ?t_20_154_101))) (let ((?v_1 (c_sort ?v_0 ?p1_153_102)) (?v_2 (c_sort ?v_0 ?p2_152_103))) (=> (= (base_addr ?v_1) (base_addr ?v_2)) (=> (= (+ (offset ?v_1) ?i_151_104) (+ (offset ?v_2) ?j_150_105)) (= (shift ?v_1 ?i_151_104) (shift ?v_2 ?j_150_105))))))))))))
+(assert (forall ((?t_21_158_106 c_type)) (forall ((?a_157_107 c_unique)) (forall ((?p_156_108 c_unique)) (forall ((?i_155_109 Int)) (let ((?v_0 (c_sort type_alloc_table ?a_157_107)) (?v_1 (type_pointer ?t_21_158_106))) (let ((?v_2 (c_sort ?v_1 ?p_156_108))) (=> (valid_index ?v_0 ?v_2 ?i_155_109) (valid ?v_0 (c_sort ?v_1 (shift ?v_2 ?i_155_109)))))))))))
+(assert (forall ((?t_22_164_110 c_type)) (forall ((?a_163_111 c_unique)) (forall ((?p_162_112 c_unique)) (forall ((?i_161_113 Int)) (forall ((?j_160_114 Int)) (forall ((?k_159_115 Int)) (let ((?v_0 (c_sort type_alloc_table ?a_163_111)) (?v_1 (type_pointer ?t_22_164_110))) (let ((?v_2 (c_sort ?v_1 ?p_162_112))) (=> (valid_range ?v_0 ?v_2 ?i_161_113 ?j_160_114) (=> (and (<= ?i_161_113 ?k_159_115) (<= ?k_159_115 ?j_160_114)) (valid ?v_0 (c_sort ?v_1 (shift ?v_2 ?k_159_115))))))))))))))
+(assert (forall ((?t_23_169_116 c_type)) (forall ((?a_168_117 c_unique)) (forall ((?p_167_118 c_unique)) (forall ((?i_166_119 Int)) (forall ((?j_165_120 Int)) (let ((?v_0 (c_sort type_alloc_table ?a_168_117)) (?v_1 (c_sort (type_pointer ?t_23_169_116) ?p_167_118))) (=> (valid_range ?v_0 ?v_1 ?i_166_119 ?j_165_120) (=> (and (<= ?i_166_119 0) (<= 0 ?j_165_120)) (valid ?v_0 ?v_1))))))))))
+(assert (forall ((?t_24_175_121 c_type)) (forall ((?a_174_122 c_unique)) (forall ((?p_173_123 c_unique)) (forall ((?i_172_124 Int)) (forall ((?j_171_125 Int)) (forall ((?k_170_126 Int)) (let ((?v_0 (c_sort type_alloc_table ?a_174_122)) (?v_1 (c_sort (type_pointer ?t_24_175_121) ?p_173_123))) (=> (valid_range ?v_0 ?v_1 ?i_172_124 ?j_171_125) (=> (and (<= ?i_172_124 ?k_170_126) (<= ?k_170_126 ?j_171_125)) (valid_index ?v_0 ?v_1 ?k_170_126)))))))))))
+(assert (forall ((?t_25_178_127 c_type)) (forall ((?p1_177_128 c_unique)) (forall ((?p2_176_129 c_unique)) (let ((?v_0 (type_pointer ?t_25_178_127))) (let ((?v_1 (c_sort ?v_0 ?p1_177_128)) (?v_2 (c_sort ?v_0 ?p2_176_129))) (=> (= (base_addr ?v_1) (base_addr ?v_2)) (= (sub_pointer ?v_1 ?v_2) (- (offset ?v_1) (offset ?v_2))))))))))
+(declare-fun type_memory (c_type c_type) c_type)
+(declare-fun acc (c_ssorted c_ssorted) c_unique)
+(declare-fun upd (c_ssorted c_ssorted c_ssorted) c_unique)
+(assert (forall ((?t_27_212_130 c_type)) (forall ((?t_26_211_131 c_type)) (forall ((?m_210_132 c_unique)) (forall ((?p_209_133 c_unique)) (forall ((?a_208_134 c_unique)) (let ((?v_0 (type_memory ?t_26_211_131 ?t_27_212_130)) (?v_1 (c_sort (type_pointer ?t_27_212_130) ?p_209_133))) (= (acc (c_sort ?v_0 (upd (c_sort ?v_0 ?m_210_132) ?v_1 (c_sort ?t_26_211_131 ?a_208_134))) ?v_1) ?a_208_134))))))))
+(assert (forall ((?t_29_218_135 c_type)) (forall ((?t_28_217_136 c_type)) (forall ((?m_216_137 c_unique)) (forall ((?p1_215_138 c_unique)) (forall ((?p2_214_139 c_unique)) (forall ((?a_213_140 c_unique)) (let ((?v_0 (type_memory ?t_28_217_136 ?t_29_218_135))) (let ((?v_2 (c_sort ?v_0 ?m_216_137)) (?v_1 (type_pointer ?t_29_218_135))) (let ((?v_3 (c_sort ?v_1 ?p2_214_139))) (=> (not (= ?p1_215_138 ?p2_214_139)) (= (acc (c_sort ?v_0 (upd ?v_2 (c_sort ?v_1 ?p1_215_138) (c_sort ?t_28_217_136  [...]
+(assert (not (= c_Boolean_false c_Boolean_true)))
+(declare-fun type_pset (c_type) c_type)
+(declare-fun pset_empty () c_unique)
+(declare-fun pset_singleton (c_ssorted) c_unique)
+(declare-fun pset_star (c_ssorted c_ssorted) c_unique)
+(declare-fun pset_all (c_ssorted) c_unique)
+(declare-fun pset_range (c_ssorted Int Int) c_unique)
+(declare-fun pset_range_left (c_ssorted Int) c_unique)
+(declare-fun pset_range_right (c_ssorted Int) c_unique)
+(declare-fun pset_acc_all (c_ssorted c_ssorted) c_unique)
+(declare-fun pset_acc_range (c_ssorted c_ssorted Int Int) c_unique)
+(declare-fun pset_acc_range_left (c_ssorted c_ssorted Int) c_unique)
+(declare-fun pset_acc_range_right (c_ssorted c_ssorted Int) c_unique)
+(declare-fun pset_union (c_ssorted c_ssorted) c_unique)
+(declare-fun not_in_pset (c_ssorted c_ssorted) Bool)
+(declare-fun not_assigns (c_ssorted c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_31_225_141 c_type)) (forall ((?t_30_224_142 c_type)) (forall ((?a_223_143 c_unique)) (forall ((?m1_222_144 c_unique)) (forall ((?m2_221_145 c_unique)) (forall ((?l_220_146 c_unique)) (let ((?v_0 (type_memory ?t_30_224_142 ?t_31_225_141))) (= (not_assigns (c_sort type_alloc_table ?a_223_143) (c_sort ?v_0 ?m1_222_144) (c_sort ?v_0 ?m2_221_145) (c_sort (type_pset ?t_31_225_141) ?l_220_146)) (forall ((?p_219_147 c_unique)) (let ((?v_1 (c_sort (type_pointer ?t_31_225_141) [...]
+(assert (forall ((?t_32_227_148 c_type)) (forall ((?p_226_149 c_unique)) (not_in_pset (c_sort (type_pointer ?t_32_227_148) ?p_226_149) (c_sort (type_pset ?t_32_227_148) pset_empty)))))
+(assert (forall ((?t_33_230_150 c_type)) (forall ((?p1_229_151 c_unique)) (forall ((?p2_228_152 c_unique)) (let ((?v_0 (type_pointer ?t_33_230_150))) (=> (not (= ?p1_229_151 ?p2_228_152)) (not_in_pset (c_sort ?v_0 ?p1_229_151) (c_sort (type_pset ?t_33_230_150) (pset_singleton (c_sort ?v_0 ?p2_228_152))))))))))
+(assert (forall ((?t_34_233_153 c_type)) (forall ((?p1_232_154 c_unique)) (forall ((?p2_231_155 c_unique)) (let ((?v_0 (type_pointer ?t_34_233_153))) (=> (not_in_pset (c_sort ?v_0 ?p1_232_154) (c_sort (type_pset ?t_34_233_153) (pset_singleton (c_sort ?v_0 ?p2_231_155)))) (not (= ?p1_232_154 ?p2_231_155))))))))
+(assert (forall ((?t_35_235_156 c_type)) (forall ((?p_234_157 c_unique)) (let ((?v_0 (c_sort (type_pointer ?t_35_235_156) ?p_234_157))) (not (not_in_pset ?v_0 (c_sort (type_pset ?t_35_235_156) (pset_singleton ?v_0))))))))
+(assert (forall ((?t_36_239_158 c_type)) (forall ((?l1_238_159 c_unique)) (forall ((?l2_237_160 c_unique)) (forall ((?p_236_161 c_unique)) (let ((?v_0 (c_sort (type_pointer ?t_36_239_158) ?p_236_161)) (?v_1 (type_pset ?t_36_239_158))) (let ((?v_2 (c_sort ?v_1 ?l1_238_159)) (?v_3 (c_sort ?v_1 ?l2_237_160))) (=> (and (not_in_pset ?v_0 ?v_2) (not_in_pset ?v_0 ?v_3)) (not_in_pset ?v_0 (c_sort ?v_1 (pset_union ?v_2 ?v_3)))))))))))
+(assert (forall ((?t_37_243_162 c_type)) (forall ((?l1_242_163 c_unique)) (forall ((?l2_241_164 c_unique)) (forall ((?p_240_165 c_unique)) (let ((?v_1 (c_sort (type_pointer ?t_37_243_162) ?p_240_165)) (?v_0 (type_pset ?t_37_243_162))) (let ((?v_2 (c_sort ?v_0 ?l1_242_163))) (=> (not_in_pset ?v_1 (c_sort ?v_0 (pset_union ?v_2 (c_sort ?v_0 ?l2_241_164)))) (not_in_pset ?v_1 ?v_2)))))))))
+(assert (forall ((?t_38_247_166 c_type)) (forall ((?l1_246_167 c_unique)) (forall ((?l2_245_168 c_unique)) (forall ((?p_244_169 c_unique)) (let ((?v_1 (c_sort (type_pointer ?t_38_247_166) ?p_244_169)) (?v_0 (type_pset ?t_38_247_166))) (let ((?v_2 (c_sort ?v_0 ?l2_245_168))) (=> (not_in_pset ?v_1 (c_sort ?v_0 (pset_union (c_sort ?v_0 ?l1_246_167) ?v_2))) (not_in_pset ?v_1 ?v_2)))))))))
+(assert (forall ((?t_40_253_170 c_type)) (forall ((?t_39_252_171 c_type)) (forall ((?l_251_172 c_unique)) (forall ((?m_250_173 c_unique)) (forall ((?p_249_174 c_unique)) (let ((?v_0 (type_pointer ?t_40_253_170))) (=> (forall ((?p1_248_175 c_unique)) (let ((?v_1 (c_sort (type_pointer ?t_39_252_171) ?p1_248_175))) (=> (= ?p_249_174 (acc (c_sort (type_memory ?v_0 ?t_39_252_171) ?m_250_173) ?v_1)) (not_in_pset ?v_1 (c_sort (type_pset ?t_39_252_171) ?l_251_172))))) (not_in_pset (c_sort ?v_0 ? [...]
+(assert (forall ((?t_42_259_176 c_type)) (forall ((?t_41_258_177 c_type)) (forall ((?l_257_178 c_unique)) (forall ((?m_256_179 c_unique)) (forall ((?p_255_180 c_unique)) (let ((?v_0 (type_pointer ?t_42_259_176))) (=> (not_in_pset (c_sort ?v_0 ?p_255_180) (c_sort (type_pset ?t_42_259_176) (pset_star (c_sort (type_pset ?t_41_258_177) ?l_257_178) (c_sort (type_memory ?v_0 ?t_41_258_177) ?m_256_179)))) (forall ((?p1_254_181 c_unique)) (let ((?v_1 (c_sort (type_pointer ?t_41_258_177) ?p1_254_ [...]
+(assert (forall ((?t_43_263_182 c_type)) (forall ((?p_262_183 c_unique)) (forall ((?l_261_184 c_unique)) (let ((?v_0 (type_pset ?t_43_263_182))) (=> (forall ((?p1_260_185 c_unique)) (let ((?v_1 (type_pointer ?t_43_263_182))) (let ((?v_2 (c_sort ?v_1 ?p1_260_185))) (=> (not (not_in_pset ?v_2 (c_sort ?v_0 ?l_261_184))) (not (= (base_addr (c_sort ?v_1 ?p_262_183)) (base_addr ?v_2))))))) (not_in_pset (c_sort (type_pointer ?t_43_263_182) ?p_262_183) (c_sort ?v_0 (pset_all (c_sort ?v_0 ?l_261_ [...]
+(assert (forall ((?t_44_267_186 c_type)) (forall ((?p_266_187 c_unique)) (forall ((?l_265_188 c_unique)) (let ((?v_0 (type_pset ?t_44_267_186))) (=> (not_in_pset (c_sort (type_pointer ?t_44_267_186) ?p_266_187) (c_sort ?v_0 (pset_all (c_sort ?v_0 ?l_265_188)))) (forall ((?p1_264_189 c_unique)) (let ((?v_1 (type_pointer ?t_44_267_186))) (let ((?v_2 (c_sort ?v_1 ?p1_264_189))) (=> (not (not_in_pset ?v_2 (c_sort ?v_0 ?l_265_188))) (not (= (base_addr (c_sort ?v_1 ?p_266_187)) (base_addr ?v_2 [...]
+(assert (forall ((?t_45_274_190 c_type)) (forall ((?p_273_191 c_unique)) (forall ((?l_272_192 c_unique)) (forall ((?a_271_193 Int)) (forall ((?b_270_194 Int)) (let ((?v_0 (type_pset ?t_45_274_190))) (=> (forall ((?p1_269_195 c_unique)) (or (not_in_pset (c_sort (type_pointer ?t_45_274_190) ?p1_269_195) (c_sort ?v_0 ?l_272_192)) (forall ((?i_268_196 Int)) (=> (and (<= ?a_271_193 ?i_268_196) (<= ?i_268_196 ?b_270_194)) (not (= ?p_273_191 (shift (c_sort (type_pointer ?t_45_274_190) ?p1_269_1 [...]
+(assert (forall ((?t_46_281_197 c_type)) (forall ((?p_280_198 c_unique)) (forall ((?l_279_199 c_unique)) (forall ((?a_278_200 Int)) (forall ((?b_277_201 Int)) (let ((?v_0 (type_pset ?t_46_281_197))) (=> (not_in_pset (c_sort (type_pointer ?t_46_281_197) ?p_280_198) (c_sort ?v_0 (pset_range (c_sort ?v_0 ?l_279_199) ?a_278_200 ?b_277_201))) (forall ((?p1_276_202 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_46_281_197) ?p1_276_202) (c_sort ?v_0 ?l_279_199))) (forall ((?i_275_203 [...]
+(assert (forall ((?t_47_287_204 c_type)) (forall ((?p_286_205 c_unique)) (forall ((?l_285_206 c_unique)) (forall ((?a_284_207 Int)) (let ((?v_0 (type_pset ?t_47_287_204))) (=> (forall ((?p1_283_208 c_unique)) (or (not_in_pset (c_sort (type_pointer ?t_47_287_204) ?p1_283_208) (c_sort ?v_0 ?l_285_206)) (forall ((?i_282_209 Int)) (=> (<= ?i_282_209 ?a_284_207) (not (= ?p_286_205 (shift (c_sort (type_pointer ?t_47_287_204) ?p1_283_208) ?i_282_209))))))) (not_in_pset (c_sort (type_pointer ?t_ [...]
+(assert (forall ((?t_48_293_210 c_type)) (forall ((?p_292_211 c_unique)) (forall ((?l_291_212 c_unique)) (forall ((?a_290_213 Int)) (let ((?v_0 (type_pset ?t_48_293_210))) (=> (not_in_pset (c_sort (type_pointer ?t_48_293_210) ?p_292_211) (c_sort ?v_0 (pset_range_left (c_sort ?v_0 ?l_291_212) ?a_290_213))) (forall ((?p1_289_214 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_48_293_210) ?p1_289_214) (c_sort ?v_0 ?l_291_212))) (forall ((?i_288_215 Int)) (=> (<= ?i_288_215 ?a_290_ [...]
+(assert (forall ((?t_49_299_216 c_type)) (forall ((?p_298_217 c_unique)) (forall ((?l_297_218 c_unique)) (forall ((?a_296_219 Int)) (let ((?v_0 (type_pset ?t_49_299_216))) (=> (forall ((?p1_295_220 c_unique)) (or (not_in_pset (c_sort (type_pointer ?t_49_299_216) ?p1_295_220) (c_sort ?v_0 ?l_297_218)) (forall ((?i_294_221 Int)) (=> (<= ?a_296_219 ?i_294_221) (not (= ?p_298_217 (shift (c_sort (type_pointer ?t_49_299_216) ?p1_295_220) ?i_294_221))))))) (not_in_pset (c_sort (type_pointer ?t_ [...]
+(assert (forall ((?t_50_305_222 c_type)) (forall ((?p_304_223 c_unique)) (forall ((?l_303_224 c_unique)) (forall ((?a_302_225 Int)) (let ((?v_0 (type_pset ?t_50_305_222))) (=> (not_in_pset (c_sort (type_pointer ?t_50_305_222) ?p_304_223) (c_sort ?v_0 (pset_range_right (c_sort ?v_0 ?l_303_224) ?a_302_225))) (forall ((?p1_301_226 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_50_305_222) ?p1_301_226) (c_sort ?v_0 ?l_303_224))) (forall ((?i_300_227 Int)) (=> (<= ?a_302_225 ?i_300 [...]
+(assert (forall ((?t_52_312_228 c_type)) (forall ((?t_51_311_229 c_type)) (forall ((?p_310_230 c_unique)) (forall ((?l_309_231 c_unique)) (forall ((?m_308_232 c_unique)) (let ((?v_0 (type_pointer ?t_51_311_229))) (=> (forall ((?p1_307_233 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_52_312_228) ?p1_307_233) (c_sort (type_pset ?t_52_312_228) ?l_309_231))) (forall ((?i_306_234 Int)) (let ((?v_1 (type_pointer ?t_52_312_228))) (not (= ?p_310_230 (acc (c_sort (type_memory ?v_0 ?t [...]
+(assert (forall ((?t_54_319_235 c_type)) (forall ((?t_53_318_236 c_type)) (forall ((?p_317_237 c_unique)) (forall ((?l_316_238 c_unique)) (forall ((?m_315_239 c_unique)) (let ((?v_0 (type_pointer ?t_53_318_236))) (=> (not_in_pset (c_sort ?v_0 ?p_317_237) (c_sort (type_pset ?t_53_318_236) (pset_acc_all (c_sort (type_pset ?t_54_319_235) ?l_316_238) (c_sort (type_memory ?v_0 ?t_54_319_235) ?m_315_239)))) (forall ((?p1_314_240 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_54_319_ [...]
+(assert (forall ((?t_56_328_242 c_type)) (forall ((?t_55_327_243 c_type)) (forall ((?p_326_244 c_unique)) (forall ((?l_325_245 c_unique)) (forall ((?m_324_246 c_unique)) (forall ((?a_323_247 Int)) (forall ((?b_322_248 Int)) (let ((?v_0 (type_pointer ?t_55_327_243))) (=> (forall ((?p1_321_249 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_56_328_242) ?p1_321_249) (c_sort (type_pset ?t_56_328_242) ?l_325_245))) (forall ((?i_320_250 Int)) (let ((?v_1 (type_pointer ?t_56_328_242)) [...]
+(assert (forall ((?t_58_337_251 c_type)) (forall ((?t_57_336_252 c_type)) (forall ((?p_335_253 c_unique)) (forall ((?l_334_254 c_unique)) (forall ((?m_333_255 c_unique)) (forall ((?a_332_256 Int)) (forall ((?b_331_257 Int)) (let ((?v_0 (type_pointer ?t_57_336_252))) (=> (not_in_pset (c_sort ?v_0 ?p_335_253) (c_sort (type_pset ?t_57_336_252) (pset_acc_range (c_sort (type_pset ?t_58_337_251) ?l_334_254) (c_sort (type_memory ?v_0 ?t_58_337_251) ?m_333_255) ?a_332_256 ?b_331_257))) (forall ( [...]
+(assert (forall ((?t_60_345_260 c_type)) (forall ((?t_59_344_261 c_type)) (forall ((?p_343_262 c_unique)) (forall ((?l_342_263 c_unique)) (forall ((?m_341_264 c_unique)) (forall ((?a_340_265 Int)) (let ((?v_0 (type_pointer ?t_59_344_261))) (=> (forall ((?p1_339_266 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_60_345_260) ?p1_339_266) (c_sort (type_pset ?t_60_345_260) ?l_342_263))) (forall ((?i_338_267 Int)) (let ((?v_1 (type_pointer ?t_60_345_260))) (=> (<= ?i_338_267 ?a_340 [...]
+(assert (forall ((?t_62_353_268 c_type)) (forall ((?t_61_352_269 c_type)) (forall ((?p_351_270 c_unique)) (forall ((?l_350_271 c_unique)) (forall ((?m_349_272 c_unique)) (forall ((?a_348_273 Int)) (let ((?v_0 (type_pointer ?t_61_352_269))) (=> (not_in_pset (c_sort ?v_0 ?p_351_270) (c_sort (type_pset ?t_61_352_269) (pset_acc_range_left (c_sort (type_pset ?t_62_353_268) ?l_350_271) (c_sort (type_memory ?v_0 ?t_62_353_268) ?m_349_272) ?a_348_273))) (forall ((?p1_347_274 c_unique)) (=> (not  [...]
+(assert (forall ((?t_64_361_276 c_type)) (forall ((?t_63_360_277 c_type)) (forall ((?p_359_278 c_unique)) (forall ((?l_358_279 c_unique)) (forall ((?m_357_280 c_unique)) (forall ((?a_356_281 Int)) (let ((?v_0 (type_pointer ?t_63_360_277))) (=> (forall ((?p1_355_282 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_64_361_276) ?p1_355_282) (c_sort (type_pset ?t_64_361_276) ?l_358_279))) (forall ((?i_354_283 Int)) (let ((?v_1 (type_pointer ?t_64_361_276))) (=> (<= ?a_356_281 ?i_354 [...]
+(assert (forall ((?t_66_369_284 c_type)) (forall ((?t_65_368_285 c_type)) (forall ((?p_367_286 c_unique)) (forall ((?l_366_287 c_unique)) (forall ((?m_365_288 c_unique)) (forall ((?a_364_289 Int)) (let ((?v_0 (type_pointer ?t_65_368_285))) (=> (not_in_pset (c_sort ?v_0 ?p_367_286) (c_sort (type_pset ?t_65_368_285) (pset_acc_range_right (c_sort (type_pset ?t_66_369_284) ?l_366_287) (c_sort (type_memory ?v_0 ?t_66_369_284) ?m_365_288) ?a_364_289))) (forall ((?p1_363_290 c_unique)) (=> (not [...]
+(assert (forall ((?t_68_376_292 c_type)) (forall ((?t_67_375_293 c_type)) (forall ((?a_374_294 c_unique)) (forall ((?l_373_295 c_unique)) (forall ((?m1_372_296 c_unique)) (forall ((?m2_371_297 c_unique)) (forall ((?m3_370_298 c_unique)) (let ((?v_1 (c_sort type_alloc_table ?a_374_294)) (?v_0 (type_memory ?t_68_376_292 ?t_67_375_293))) (let ((?v_4 (c_sort ?v_0 ?m1_372_296)) (?v_2 (c_sort ?v_0 ?m2_371_297)) (?v_3 (c_sort (type_pset ?t_67_375_293) ?l_373_295)) (?v_5 (c_sort ?v_0 ?m3_370_298 [...]
+(assert (forall ((?t_70_381_299 c_type)) (forall ((?t_69_380_300 c_type)) (forall ((?a_379_301 c_unique)) (forall ((?l_378_302 c_unique)) (forall ((?m_377_303 c_unique)) (let ((?v_0 (c_sort (type_memory ?t_70_381_299 ?t_69_380_300) ?m_377_303))) (not_assigns (c_sort type_alloc_table ?a_379_301) ?v_0 ?v_0 (c_sort (type_pset ?t_69_380_300) ?l_378_302)))))))))
+(declare-fun valid_acc (c_ssorted) Bool)
+(assert (forall ((?t_72_386_304 c_type)) (forall ((?t_71_385_305 c_type)) (forall ((?m1_384_306 c_unique)) (= (valid_acc (c_sort (type_memory (type_pointer ?t_71_385_305) ?t_72_386_304) ?m1_384_306)) (forall ((?p_383_307 c_unique)) (forall ((?a_382_308 c_unique)) (let ((?v_1 (type_pointer ?t_71_385_305)) (?v_0 (c_sort type_alloc_table ?a_382_308)) (?v_2 (c_sort (type_pointer ?t_72_386_304) ?p_383_307))) (=> (valid ?v_0 ?v_2) (valid ?v_0 (c_sort ?v_1 (acc (c_sort (type_memory ?v_1 ?t_72_3 [...]
+(declare-fun valid_acc_range (c_ssorted Int) Bool)
+(assert (forall ((?t_74_392_309 c_type)) (forall ((?t_73_391_310 c_type)) (forall ((?m1_390_311 c_unique)) (forall ((?size_389_312 Int)) (= (valid_acc_range (c_sort (type_memory (type_pointer ?t_73_391_310) ?t_74_392_309) ?m1_390_311) ?size_389_312) (forall ((?p_388_313 c_unique)) (forall ((?a_387_314 c_unique)) (let ((?v_1 (type_pointer ?t_73_391_310)) (?v_0 (c_sort type_alloc_table ?a_387_314)) (?v_2 (c_sort (type_pointer ?t_74_392_309) ?p_388_313))) (=> (valid ?v_0 ?v_2) (valid_range  [...]
+(assert (forall ((?t_76_398_315 c_type)) (forall ((?t_75_397_316 c_type)) (forall ((?m1_396_317 c_unique)) (forall ((?size_395_318 Int)) (forall ((?p_394_319 c_unique)) (forall ((?a_393_320 c_unique)) (let ((?v_1 (type_pointer ?t_75_397_316))) (let ((?v_2 (c_sort (type_memory ?v_1 ?t_76_398_315) ?m1_396_317)) (?v_0 (c_sort type_alloc_table ?a_393_320)) (?v_3 (c_sort (type_pointer ?t_76_398_315) ?p_394_319))) (=> (valid_acc_range ?v_2 ?size_395_318) (=> (valid ?v_0 ?v_3) (valid ?v_0 (c_so [...]
+(declare-fun separation1 (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_78_404_321 c_type)) (forall ((?t_77_403_322 c_type)) (forall ((?m1_402_323 c_unique)) (forall ((?m2_401_324 c_unique)) (let ((?v_0 (type_memory (type_pointer ?t_77_403_322) ?t_78_404_321))) (= (separation1 (c_sort ?v_0 ?m1_402_323) (c_sort ?v_0 ?m2_401_324)) (forall ((?p_400_325 c_unique)) (forall ((?a_399_326 c_unique)) (let ((?v_1 (type_pointer ?t_77_403_322)) (?v_2 (c_sort (type_pointer ?t_78_404_321) ?p_400_325))) (=> (valid (c_sort type_alloc_table ?a_399_326) ? [...]
+(declare-fun separation1_range1 (c_ssorted c_ssorted Int) Bool)
+(assert (forall ((?t_80_412_327 c_type)) (forall ((?t_79_411_328 c_type)) (forall ((?m1_410_329 c_unique)) (forall ((?m2_409_330 c_unique)) (forall ((?size_408_331 Int)) (let ((?v_0 (type_memory (type_pointer ?t_79_411_328) ?t_80_412_327))) (= (separation1_range1 (c_sort ?v_0 ?m1_410_329) (c_sort ?v_0 ?m2_409_330) ?size_408_331) (forall ((?p_407_332 c_unique)) (forall ((?a_406_333 c_unique)) (=> (valid (c_sort type_alloc_table ?a_406_333) (c_sort (type_pointer ?t_80_412_327) ?p_407_332)) [...]
+(declare-fun separation1_range (c_ssorted Int) Bool)
+(assert (forall ((?t_82_420_335 c_type)) (forall ((?t_81_419_336 c_type)) (forall ((?m_418_337 c_unique)) (forall ((?size_417_338 Int)) (= (separation1_range (c_sort (type_memory (type_pointer ?t_81_419_336) ?t_82_420_335) ?m_418_337) ?size_417_338) (forall ((?p_416_339 c_unique)) (forall ((?a_415_340 c_unique)) (=> (valid (c_sort type_alloc_table ?a_415_340) (c_sort (type_pointer ?t_82_420_335) ?p_416_339)) (forall ((?i1_414_341 Int)) (forall ((?i2_413_342 Int)) (let ((?v_0 (type_pointe [...]
+(declare-fun separation2 (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_84_426_343 c_type)) (forall ((?t_83_425_344 c_type)) (forall ((?m1_424_345 c_unique)) (forall ((?m2_423_346 c_unique)) (let ((?v_0 (type_memory (type_pointer ?t_83_425_344) ?t_84_426_343))) (= (separation2 (c_sort ?v_0 ?m1_424_345) (c_sort ?v_0 ?m2_423_346)) (forall ((?p1_422_347 c_unique)) (forall ((?p2_421_348 c_unique)) (let ((?v_1 (type_pointer ?t_83_425_344)) (?v_2 (type_pointer ?t_84_426_343))) (=> (not (= ?p1_422_347 ?p2_421_348)) (not (= (base_addr (c_sort ?v [...]
+(declare-fun separation2_range1 (c_ssorted c_ssorted Int) Bool)
+(assert (forall ((?t_86_435_349 c_type)) (forall ((?t_85_434_350 c_type)) (forall ((?m1_433_351 c_unique)) (forall ((?m2_432_352 c_unique)) (forall ((?size_431_353 Int)) (let ((?v_0 (type_memory (type_pointer ?t_85_434_350) ?t_86_435_349))) (= (separation2_range1 (c_sort ?v_0 ?m1_433_351) (c_sort ?v_0 ?m2_432_352) ?size_431_353) (forall ((?p_430_354 c_unique)) (forall ((?q_429_355 c_unique)) (forall ((?a_428_356 c_unique)) (forall ((?i_427_357 Int)) (let ((?v_1 (type_pointer ?t_85_434_35 [...]
+(declare-fun on_heap (c_ssorted c_ssorted) Bool)
+(declare-fun on_stack (c_ssorted c_ssorted) Bool)
+(declare-fun fresh (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_87_438_358 c_type)) (forall ((?a_437_359 c_unique)) (forall ((?p_436_360 c_unique)) (let ((?v_0 (c_sort type_alloc_table ?a_437_359)) (?v_1 (c_sort (type_pointer ?t_87_438_358) ?p_436_360))) (=> (fresh ?v_0 ?v_1) (not (valid ?v_0 ?v_1))))))))
+(assert (forall ((?t_88_442_361 c_type)) (forall ((?a_441_362 c_unique)) (forall ((?p_440_363 c_unique)) (=> (fresh (c_sort type_alloc_table ?a_441_362) (c_sort (type_pointer ?t_88_442_361) ?p_440_363)) (forall ((?i_439_364 Int)) (let ((?v_0 (type_pointer ?t_88_442_361))) (not (valid (c_sort type_alloc_table ?a_441_362) (c_sort ?v_0 (shift (c_sort ?v_0 ?p_440_363) ?i_439_364)))))))))))
+(declare-fun alloc_extends (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_89_446_365 c_type)) (forall ((?a1_445_366 c_unique)) (forall ((?a2_444_367 c_unique)) (=> (alloc_extends (c_sort type_alloc_table ?a1_445_366) (c_sort type_alloc_table ?a2_444_367)) (forall ((?q_443_368 c_unique)) (let ((?v_0 (c_sort (type_pointer ?t_89_446_365) ?q_443_368))) (=> (valid (c_sort type_alloc_table ?a1_445_366) ?v_0) (valid (c_sort type_alloc_table ?a2_444_367) ?v_0)))))))))
+(assert (forall ((?t_90_451_369 c_type)) (forall ((?a1_450_370 c_unique)) (forall ((?a2_449_371 c_unique)) (=> (alloc_extends (c_sort type_alloc_table ?a1_450_370) (c_sort type_alloc_table ?a2_449_371)) (forall ((?q_448_372 c_unique)) (forall ((?i_447_373 Int)) (let ((?v_0 (c_sort (type_pointer ?t_90_451_369) ?q_448_372))) (=> (valid_index (c_sort type_alloc_table ?a1_450_370) ?v_0 ?i_447_373) (valid_index (c_sort type_alloc_table ?a2_449_371) ?v_0 ?i_447_373))))))))))
+(assert (forall ((?t_91_457_374 c_type)) (forall ((?a1_456_375 c_unique)) (forall ((?a2_455_376 c_unique)) (=> (alloc_extends (c_sort type_alloc_table ?a1_456_375) (c_sort type_alloc_table ?a2_455_376)) (forall ((?q_454_377 c_unique)) (forall ((?i_453_378 Int)) (forall ((?j_452_379 Int)) (let ((?v_0 (c_sort (type_pointer ?t_91_457_374) ?q_454_377))) (=> (valid_range (c_sort type_alloc_table ?a1_456_375) ?v_0 ?i_453_378 ?j_452_379) (valid_range (c_sort type_alloc_table ?a2_455_376) ?v_0 ? [...]
+(assert (forall ((?a_458_380 c_unique)) (let ((?v_0 (c_sort type_alloc_table ?a_458_380))) (alloc_extends ?v_0 ?v_0))))
+(assert (forall ((?a1_461_381 c_unique)) (forall ((?a2_460_382 c_unique)) (forall ((?a3_459_383 c_unique)) (let ((?v_1 (c_sort type_alloc_table ?a1_461_381)) (?v_0 (c_sort type_alloc_table ?a2_460_382)) (?v_2 (c_sort type_alloc_table ?a3_459_383))) (=> (alloc_extends ?v_1 ?v_0) (=> (alloc_extends ?v_0 ?v_2) (alloc_extends ?v_1 ?v_2))))))))
+(declare-fun free_stack (c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_92_466_384 c_type)) (forall ((?a1_465_385 c_unique)) (forall ((?a2_464_386 c_unique)) (forall ((?a3_463_387 c_unique)) (=> (free_stack (c_sort type_alloc_table ?a1_465_385) (c_sort type_alloc_table ?a2_464_386) (c_sort type_alloc_table ?a3_463_387)) (forall ((?p_462_388 c_unique)) (let ((?v_0 (c_sort type_alloc_table ?a2_464_386)) (?v_1 (c_sort (type_pointer ?t_92_466_384) ?p_462_388))) (=> (valid ?v_0 ?v_1) (=> (on_heap ?v_0 ?v_1) (valid (c_sort type_alloc_table ?a3 [...]
+(assert (forall ((?t_93_471_389 c_type)) (forall ((?a1_470_390 c_unique)) (forall ((?a2_469_391 c_unique)) (forall ((?a3_468_392 c_unique)) (=> (free_stack (c_sort type_alloc_table ?a1_470_390) (c_sort type_alloc_table ?a2_469_391) (c_sort type_alloc_table ?a3_468_392)) (forall ((?p_467_393 c_unique)) (let ((?v_0 (c_sort type_alloc_table ?a1_470_390)) (?v_1 (c_sort (type_pointer ?t_93_471_389) ?p_467_393))) (=> (valid ?v_0 ?v_1) (=> (on_stack ?v_0 ?v_1) (valid (c_sort type_alloc_table ?a [...]
+(declare-fun null () c_unique)
+(assert (forall ((?t_94_475_394 c_type)) (forall ((?a_474_395 c_unique)) (not (valid (c_sort type_alloc_table ?a_474_395) (c_sort (type_pointer ?t_94_475_394) null))))))
+(declare-fun type_global () c_type)
+(assert (not (forall ((?t c_unique)) (forall ((?n Int)) (forall ((?alloc c_unique)) (forall ((?intM_global c_unique)) (=> (valid_range (c_sort type_alloc_table ?alloc) (c_sort (type_pointer type_global) ?t) 0 ?n) (forall ((?mutable_n Int)) (=> (and (<= ?mutable_n ?n) (forall ((?i_495_419 Int)) (let ((?v_0 (type_pointer type_global))) (=> (and (<= ?mutable_n ?i_495_419) (< ?i_495_419 ?n)) (= (ss2Int (c_sort c_int (acc (c_sort (type_memory c_int type_global) ?intM_global) (c_sort ?v_0 (shi [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/smtlib46f14a.smt2 b/test/regress/regress0/quantifiers/smtlib46f14a.smt2
new file mode 100644
index 0000000..fa0c854
--- /dev/null
+++ b/test/regress/regress0/quantifiers/smtlib46f14a.smt2
@@ -0,0 +1,205 @@
+(set-logic AUFLIRA)
+(set-info :source |http://proval.lri.fr/why-benchmarks |)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-sort Unit 0)
+(declare-sort c_unique 0)
+(declare-sort c_ssorted 0)
+(declare-sort c_type 0)
+(declare-sort c_Boolean 0)
+(declare-fun c_sort (c_type c_unique) c_ssorted)
+(declare-fun c_Boolean_true () c_Boolean)
+(declare-fun c_Boolean_false () c_Boolean)
+(assert (forall ((?b_22_1 c_Boolean)) (or (= c_Boolean_true ?b_22_1) (= c_Boolean_false ?b_22_1))))
+(assert (not (= c_Boolean_true c_Boolean_false)))
+(declare-fun int2U (Int) c_unique)
+(declare-fun ss2Int (c_ssorted) Int)
+(declare-fun real2U (Real) c_unique)
+(declare-fun ss2Real (c_ssorted) Real)
+(declare-fun bool2U (c_Boolean) c_unique)
+(declare-fun ss2Bool (c_ssorted) c_Boolean)
+(declare-fun c_int () c_type)
+(declare-fun c_bool () c_type)
+(declare-fun c_real () c_type)
+(declare-fun c_unit () c_type)
+(declare-fun c_ref (c_unique) c_unique)
+(assert (forall ((?t_21_2 c_type)) (forall ((?x_20_3 c_unique)) (forall ((?y_19_4 c_unique)) (=> (= (c_sort ?t_21_2 ?x_20_3) (c_sort ?t_21_2 ?y_19_4)) (= ?x_20_3 ?y_19_4))))))
+(assert (forall ((?x_18_5 Int)) (= (ss2Int (c_sort c_int (int2U ?x_18_5))) ?x_18_5)))
+(assert (forall ((?x_17_6 Int)) (forall ((?y_16_7 Int)) (=> (= (int2U ?x_17_6) (int2U ?y_16_7)) (= ?x_17_6 ?y_16_7)))))
+(assert (forall ((?x_15_8 Real)) (forall ((?y_14_9 Real)) (=> (= (real2U ?x_15_8) (real2U ?y_14_9)) (= ?x_15_8 ?y_14_9)))))
+(assert (forall ((?x_13_10 c_Boolean)) (forall ((?y_12_11 c_Boolean)) (=> (= (bool2U ?x_13_10) (bool2U ?y_12_11)) (= ?x_13_10 ?y_12_11)))))
+(assert (forall ((?x_11_12 c_ssorted)) (forall ((?y_10_13 c_ssorted)) (=> (= (ss2Int ?x_11_12) (ss2Int ?y_10_13)) (= ?x_11_12 ?y_10_13)))))
+(assert (forall ((?x_9_14 c_ssorted)) (forall ((?y_8_15 c_ssorted)) (=> (= (ss2Real ?x_9_14) (ss2Real ?y_8_15)) (= ?x_9_14 ?y_8_15)))))
+(assert (forall ((?x_7_16 c_ssorted)) (forall ((?y_6_17 c_ssorted)) (=> (= (ss2Bool ?x_7_16) (ss2Bool ?y_6_17)) (= ?x_7_16 ?y_6_17)))))
+(assert (forall ((?x_5_18 Real)) (= (ss2Real (c_sort c_real (real2U ?x_5_18))) ?x_5_18)))
+(assert (forall ((?x_4_19 c_Boolean)) (= (ss2Bool (c_sort c_bool (bool2U ?x_4_19))) ?x_4_19)))
+(assert (forall ((?x_3_20 c_unique)) (= (int2U (ss2Int (c_sort c_int ?x_3_20))) ?x_3_20)))
+(assert (forall ((?x_2_21 c_unique)) (= (real2U (ss2Real (c_sort c_real ?x_2_21))) ?x_2_21)))
+(assert (forall ((?x_1_22 c_unique)) (= (bool2U (ss2Bool (c_sort c_bool ?x_1_22))) ?x_1_22)))
+(declare-fun eq_int (Int Int) Bool)
+(declare-fun neq_int (Int Int) Bool)
+(declare-fun lt_int_bool (Int Int) c_Boolean)
+(declare-fun le_int_bool (Int Int) c_Boolean)
+(declare-fun gt_int_bool (Int Int) c_Boolean)
+(declare-fun ge_int_bool (Int Int) c_Boolean)
+(declare-fun eq_int_bool (Int Int) c_Boolean)
+(declare-fun neq_int_bool (Int Int) c_Boolean)
+(assert (forall ((?x_40_23 Int)) (forall ((?y_39_24 Int)) (= (= (lt_int_bool ?x_40_23 ?y_39_24) c_Boolean_true) (< ?x_40_23 ?y_39_24)))))
+(assert (forall ((?x_42_25 Int)) (forall ((?y_41_26 Int)) (= (= (le_int_bool ?x_42_25 ?y_41_26) c_Boolean_true) (<= ?x_42_25 ?y_41_26)))))
+(assert (forall ((?x_44_27 Int)) (forall ((?y_43_28 Int)) (= (= (gt_int_bool ?x_44_27 ?y_43_28) c_Boolean_true) (> ?x_44_27 ?y_43_28)))))
+(assert (forall ((?x_46_29 Int)) (forall ((?y_45_30 Int)) (= (= (ge_int_bool ?x_46_29 ?y_45_30) c_Boolean_true) (>= ?x_46_29 ?y_45_30)))))
+(assert (forall ((?x_48_31 Int)) (forall ((?y_47_32 Int)) (= (= (eq_int_bool ?x_48_31 ?y_47_32) c_Boolean_true) (= ?x_48_31 ?y_47_32)))))
+(assert (forall ((?x_50_33 Int)) (forall ((?y_49_34 Int)) (= (= (neq_int_bool ?x_50_33 ?y_49_34) c_Boolean_true) (not (= ?x_50_33 ?y_49_34))))))
+(declare-fun add_real (Real Real) Real)
+(declare-fun sub_real (Real Real) Real)
+(declare-fun mul_real (Real Real) Real)
+(declare-fun div_real (Real Real) Real)
+(declare-fun pow_real (Real Real) Real)
+(declare-fun neg_real (Real) Real)
+(declare-fun abs_real (Real) Real)
+(declare-fun sqrt_real (Real) Real)
+(declare-fun real_of_int (Int) Real)
+(declare-fun int_of_real (Real) Int)
+(declare-fun lt_real (Real Real) Bool)
+(declare-fun le_real (Real Real) Bool)
+(declare-fun gt_real (Real Real) Bool)
+(declare-fun ge_real (Real Real) Bool)
+(declare-fun eq_real (Real Real) Bool)
+(declare-fun neq_real (Real Real) Bool)
+(declare-fun eq_bool (c_Boolean c_Boolean) Bool)
+(declare-fun neq_bool (c_Boolean c_Boolean) Bool)
+(declare-fun eq_unit (c_ssorted c_ssorted) Bool)
+(declare-fun neq_unit (c_ssorted c_ssorted) Bool)
+(declare-fun smtlib__ite (c_Boolean c_ssorted c_ssorted) c_unique)
+(assert (forall ((?t_1_76_35 c_type)) (forall ((?x_75_36 c_unique)) (forall ((?y_74_37 c_unique)) (= (smtlib__ite c_Boolean_true (c_sort ?t_1_76_35 ?x_75_36) (c_sort ?t_1_76_35 ?y_74_37)) ?x_75_36)))))
+(assert (forall ((?t_2_79_38 c_type)) (forall ((?x_78_39 c_unique)) (forall ((?y_77_40 c_unique)) (= (smtlib__ite c_Boolean_false (c_sort ?t_2_79_38 ?x_78_39) (c_sort ?t_2_79_38 ?y_77_40)) ?y_77_40)))))
+(declare-fun bw_compl (Int) Int)
+(declare-fun bw_and (Int Int) Int)
+(declare-fun bw_xor (Int Int) Int)
+(declare-fun bw_or (Int Int) Int)
+(declare-fun lsl (Int Int) Int)
+(declare-fun lsr (Int Int) Int)
+(declare-fun non_int (Int) Int)
+(declare-fun type_pointer (c_type) c_type)
+(declare-fun type_addr (c_type) c_type)
+(declare-fun type_alloc_table () c_type)
+(declare-fun block_length (c_ssorted c_ssorted) Int)
+(declare-fun base_addr (c_ssorted) c_unique)
+(declare-fun offset (c_ssorted) Int)
+(declare-fun shift (c_ssorted Int) c_unique)
+(declare-fun sub_pointer (c_ssorted c_ssorted) Int)
+(declare-fun lt_pointer (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_3_88_41 c_type)) (forall ((?p1_87_42 c_unique)) (forall ((?p2_86_43 c_unique)) (let ((?v_0 (type_pointer ?t_3_88_41))) (let ((?v_1 (c_sort ?v_0 ?p1_87_42)) (?v_2 (c_sort ?v_0 ?p2_86_43))) (= (lt_pointer ?v_1 ?v_2) (and (= (base_addr ?v_1) (base_addr ?v_2)) (< (offset ?v_1) (offset ?v_2))))))))))
+(declare-fun le_pointer (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_4_91_44 c_type)) (forall ((?p1_90_45 c_unique)) (forall ((?p2_89_46 c_unique)) (let ((?v_0 (type_pointer ?t_4_91_44))) (let ((?v_1 (c_sort ?v_0 ?p1_90_45)) (?v_2 (c_sort ?v_0 ?p2_89_46))) (= (le_pointer ?v_1 ?v_2) (and (= (base_addr ?v_1) (base_addr ?v_2)) (<= (offset ?v_1) (offset ?v_2))))))))))
+(declare-fun gt_pointer (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_5_94_47 c_type)) (forall ((?p1_93_48 c_unique)) (forall ((?p2_92_49 c_unique)) (let ((?v_0 (type_pointer ?t_5_94_47))) (let ((?v_1 (c_sort ?v_0 ?p1_93_48)) (?v_2 (c_sort ?v_0 ?p2_92_49))) (= (gt_pointer ?v_1 ?v_2) (and (= (base_addr ?v_1) (base_addr ?v_2)) (> (offset ?v_1) (offset ?v_2))))))))))
+(declare-fun ge_pointer (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_6_97_50 c_type)) (forall ((?p1_96_51 c_unique)) (forall ((?p2_95_52 c_unique)) (let ((?v_0 (type_pointer ?t_6_97_50))) (let ((?v_1 (c_sort ?v_0 ?p1_96_51)) (?v_2 (c_sort ?v_0 ?p2_95_52))) (= (ge_pointer ?v_1 ?v_2) (and (= (base_addr ?v_1) (base_addr ?v_2)) (>= (offset ?v_1) (offset ?v_2))))))))))
+(declare-fun valid (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_7_104_53 c_type)) (forall ((?a_103_54 c_unique)) (forall ((?p_102_55 c_unique)) (let ((?v_2 (c_sort type_alloc_table ?a_103_54)) (?v_0 (c_sort (type_pointer ?t_7_104_53) ?p_102_55))) (let ((?v_1 (offset ?v_0))) (= (valid ?v_2 ?v_0) (and (<= 0 ?v_1) (< ?v_1 (block_length ?v_2 ?v_0))))))))))
+(declare-fun valid_index (c_ssorted c_ssorted Int) Bool)
+(assert (forall ((?t_8_108_56 c_type)) (forall ((?a_107_57 c_unique)) (forall ((?p_106_58 c_unique)) (forall ((?i_105_59 Int)) (let ((?v_2 (c_sort type_alloc_table ?a_107_57)) (?v_0 (c_sort (type_pointer ?t_8_108_56) ?p_106_58))) (let ((?v_1 (+ (offset ?v_0) ?i_105_59))) (= (valid_index ?v_2 ?v_0 ?i_105_59) (and (<= 0 ?v_1) (< ?v_1 (block_length ?v_2 ?v_0)))))))))))
+(declare-fun valid_range (c_ssorted c_ssorted Int Int) Bool)
+(assert (forall ((?t_9_113_60 c_type)) (forall ((?a_112_61 c_unique)) (forall ((?p_111_62 c_unique)) (forall ((?i_110_63 Int)) (forall ((?j_109_64 Int)) (let ((?v_2 (c_sort type_alloc_table ?a_112_61)) (?v_0 (c_sort (type_pointer ?t_9_113_60) ?p_111_62))) (let ((?v_1 (offset ?v_0))) (= (valid_range ?v_2 ?v_0 ?i_110_63 ?j_109_64) (and (<= 0 (+ ?v_1 ?i_110_63)) (< (+ ?v_1 ?j_109_64) (block_length ?v_2 ?v_0))))))))))))
+(assert (forall ((?t_10_116_65 c_type)) (forall ((?p_115_66 c_unique)) (forall ((?i_114_67 Int)) (let ((?v_0 (type_pointer ?t_10_116_65))) (let ((?v_1 (c_sort ?v_0 ?p_115_66))) (= (offset (c_sort ?v_0 (shift ?v_1 ?i_114_67))) (+ (offset ?v_1) ?i_114_67))))))))
+(assert (forall ((?t_11_118_68 c_type)) (forall ((?p_117_69 c_unique)) (= (shift (c_sort (type_pointer ?t_11_118_68) ?p_117_69) 0) ?p_117_69))))
+(assert (forall ((?t_12_122_70 c_type)) (forall ((?p_121_71 c_unique)) (forall ((?i_120_72 Int)) (forall ((?j_119_73 Int)) (let ((?v_0 (type_pointer ?t_12_122_70))) (let ((?v_1 (c_sort ?v_0 ?p_121_71))) (= (shift (c_sort ?v_0 (shift ?v_1 ?i_120_72)) ?j_119_73) (shift ?v_1 (+ ?i_120_72 ?j_119_73))))))))))
+(assert (forall ((?t_13_125_74 c_type)) (forall ((?p_124_75 c_unique)) (forall ((?i_123_76 Int)) (let ((?v_0 (type_pointer ?t_13_125_74))) (let ((?v_1 (c_sort ?v_0 ?p_124_75))) (= (base_addr (c_sort ?v_0 (shift ?v_1 ?i_123_76))) (base_addr ?v_1))))))))
+(assert (forall ((?t_14_129_77 c_type)) (forall ((?a_128_78 c_unique)) (forall ((?p_127_79 c_unique)) (forall ((?i_126_80 Int)) (let ((?v_1 (c_sort type_alloc_table ?a_128_78)) (?v_0 (type_pointer ?t_14_129_77))) (let ((?v_2 (c_sort ?v_0 ?p_127_79))) (= (block_length ?v_1 (c_sort ?v_0 (shift ?v_2 ?i_126_80))) (block_length ?v_1 ?v_2)))))))))
+(assert (forall ((?t_15_133_81 c_type)) (forall ((?a_132_82 c_unique)) (forall ((?p1_131_83 c_unique)) (forall ((?p2_130_84 c_unique)) (let ((?v_0 (type_pointer ?t_15_133_81))) (let ((?v_1 (c_sort ?v_0 ?p1_131_83)) (?v_3 (c_sort ?v_0 ?p2_130_84)) (?v_2 (c_sort type_alloc_table ?a_132_82))) (=> (= (base_addr ?v_1) (base_addr ?v_3)) (= (block_length ?v_2 ?v_1) (block_length ?v_2 ?v_3))))))))))
+(assert (forall ((?t_16_136_85 c_type)) (forall ((?p1_135_86 c_unique)) (forall ((?p2_134_87 c_unique)) (let ((?v_0 (type_pointer ?t_16_136_85))) (let ((?v_1 (c_sort ?v_0 ?p1_135_86)) (?v_2 (c_sort ?v_0 ?p2_134_87))) (=> (and (= (base_addr ?v_1) (base_addr ?v_2)) (= (offset ?v_1) (offset ?v_2))) (= ?p1_135_86 ?p2_134_87))))))))
+(assert (forall ((?t_17_139_88 c_type)) (forall ((?p1_138_89 c_unique)) (forall ((?p2_137_90 c_unique)) (let ((?v_0 (type_pointer ?t_17_139_88))) (let ((?v_1 (c_sort ?v_0 ?p1_138_89)) (?v_2 (c_sort ?v_0 ?p2_137_90))) (=> (= ?p1_138_89 ?p2_137_90) (and (= (base_addr ?v_1) (base_addr ?v_2)) (= (offset ?v_1) (offset ?v_2))))))))))
+(assert (forall ((?t_18_144_91 c_type)) (forall ((?p1_143_92 c_unique)) (forall ((?p2_142_93 c_unique)) (forall ((?i_141_94 Int)) (forall ((?j_140_95 Int)) (let ((?v_0 (type_pointer ?t_18_144_91))) (let ((?v_1 (c_sort ?v_0 ?p1_143_92)) (?v_2 (c_sort ?v_0 ?p2_142_93))) (=> (not (= (base_addr ?v_1) (base_addr ?v_2))) (not (= (shift ?v_1 ?i_141_94) (shift ?v_2 ?j_140_95))))))))))))
+(assert (forall ((?t_19_149_96 c_type)) (forall ((?p1_148_97 c_unique)) (forall ((?p2_147_98 c_unique)) (forall ((?i_146_99 Int)) (forall ((?j_145_100 Int)) (let ((?v_0 (type_pointer ?t_19_149_96))) (let ((?v_1 (c_sort ?v_0 ?p1_148_97)) (?v_2 (c_sort ?v_0 ?p2_147_98))) (=> (not (= (+ (offset ?v_1) ?i_146_99) (+ (offset ?v_2) ?j_145_100))) (not (= (shift ?v_1 ?i_146_99) (shift ?v_2 ?j_145_100))))))))))))
+(assert (forall ((?t_20_154_101 c_type)) (forall ((?p1_153_102 c_unique)) (forall ((?p2_152_103 c_unique)) (forall ((?i_151_104 Int)) (forall ((?j_150_105 Int)) (let ((?v_0 (type_pointer ?t_20_154_101))) (let ((?v_1 (c_sort ?v_0 ?p1_153_102)) (?v_2 (c_sort ?v_0 ?p2_152_103))) (=> (= (base_addr ?v_1) (base_addr ?v_2)) (=> (= (+ (offset ?v_1) ?i_151_104) (+ (offset ?v_2) ?j_150_105)) (= (shift ?v_1 ?i_151_104) (shift ?v_2 ?j_150_105))))))))))))
+(assert (forall ((?t_21_158_106 c_type)) (forall ((?a_157_107 c_unique)) (forall ((?p_156_108 c_unique)) (forall ((?i_155_109 Int)) (let ((?v_0 (c_sort type_alloc_table ?a_157_107)) (?v_1 (type_pointer ?t_21_158_106))) (let ((?v_2 (c_sort ?v_1 ?p_156_108))) (=> (valid_index ?v_0 ?v_2 ?i_155_109) (valid ?v_0 (c_sort ?v_1 (shift ?v_2 ?i_155_109)))))))))))
+(assert (forall ((?t_22_164_110 c_type)) (forall ((?a_163_111 c_unique)) (forall ((?p_162_112 c_unique)) (forall ((?i_161_113 Int)) (forall ((?j_160_114 Int)) (forall ((?k_159_115 Int)) (let ((?v_0 (c_sort type_alloc_table ?a_163_111)) (?v_1 (type_pointer ?t_22_164_110))) (let ((?v_2 (c_sort ?v_1 ?p_162_112))) (=> (valid_range ?v_0 ?v_2 ?i_161_113 ?j_160_114) (=> (and (<= ?i_161_113 ?k_159_115) (<= ?k_159_115 ?j_160_114)) (valid ?v_0 (c_sort ?v_1 (shift ?v_2 ?k_159_115))))))))))))))
+(assert (forall ((?t_23_169_116 c_type)) (forall ((?a_168_117 c_unique)) (forall ((?p_167_118 c_unique)) (forall ((?i_166_119 Int)) (forall ((?j_165_120 Int)) (let ((?v_0 (c_sort type_alloc_table ?a_168_117)) (?v_1 (c_sort (type_pointer ?t_23_169_116) ?p_167_118))) (=> (valid_range ?v_0 ?v_1 ?i_166_119 ?j_165_120) (=> (and (<= ?i_166_119 0) (<= 0 ?j_165_120)) (valid ?v_0 ?v_1))))))))))
+(assert (forall ((?t_24_175_121 c_type)) (forall ((?a_174_122 c_unique)) (forall ((?p_173_123 c_unique)) (forall ((?i_172_124 Int)) (forall ((?j_171_125 Int)) (forall ((?k_170_126 Int)) (let ((?v_0 (c_sort type_alloc_table ?a_174_122)) (?v_1 (c_sort (type_pointer ?t_24_175_121) ?p_173_123))) (=> (valid_range ?v_0 ?v_1 ?i_172_124 ?j_171_125) (=> (and (<= ?i_172_124 ?k_170_126) (<= ?k_170_126 ?j_171_125)) (valid_index ?v_0 ?v_1 ?k_170_126)))))))))))
+(assert (forall ((?t_25_178_127 c_type)) (forall ((?p1_177_128 c_unique)) (forall ((?p2_176_129 c_unique)) (let ((?v_0 (type_pointer ?t_25_178_127))) (let ((?v_1 (c_sort ?v_0 ?p1_177_128)) (?v_2 (c_sort ?v_0 ?p2_176_129))) (=> (= (base_addr ?v_1) (base_addr ?v_2)) (= (sub_pointer ?v_1 ?v_2) (- (offset ?v_1) (offset ?v_2))))))))))
+(declare-fun type_memory (c_type c_type) c_type)
+(declare-fun acc (c_ssorted c_ssorted) c_unique)
+(declare-fun upd (c_ssorted c_ssorted c_ssorted) c_unique)
+(assert (forall ((?t_27_212_130 c_type)) (forall ((?t_26_211_131 c_type)) (forall ((?m_210_132 c_unique)) (forall ((?p_209_133 c_unique)) (forall ((?a_208_134 c_unique)) (let ((?v_0 (type_memory ?t_26_211_131 ?t_27_212_130)) (?v_1 (c_sort (type_pointer ?t_27_212_130) ?p_209_133))) (= (acc (c_sort ?v_0 (upd (c_sort ?v_0 ?m_210_132) ?v_1 (c_sort ?t_26_211_131 ?a_208_134))) ?v_1) ?a_208_134))))))))
+(assert (forall ((?t_29_218_135 c_type)) (forall ((?t_28_217_136 c_type)) (forall ((?m_216_137 c_unique)) (forall ((?p1_215_138 c_unique)) (forall ((?p2_214_139 c_unique)) (forall ((?a_213_140 c_unique)) (let ((?v_0 (type_memory ?t_28_217_136 ?t_29_218_135))) (let ((?v_2 (c_sort ?v_0 ?m_216_137)) (?v_1 (type_pointer ?t_29_218_135))) (let ((?v_3 (c_sort ?v_1 ?p2_214_139))) (=> (not (= ?p1_215_138 ?p2_214_139)) (= (acc (c_sort ?v_0 (upd ?v_2 (c_sort ?v_1 ?p1_215_138) (c_sort ?t_28_217_136  [...]
+(assert (not (= c_Boolean_false c_Boolean_true)))
+(declare-fun type_pset (c_type) c_type)
+(declare-fun pset_empty () c_unique)
+(declare-fun pset_singleton (c_ssorted) c_unique)
+(declare-fun pset_star (c_ssorted c_ssorted) c_unique)
+(declare-fun pset_all (c_ssorted) c_unique)
+(declare-fun pset_range (c_ssorted Int Int) c_unique)
+(declare-fun pset_range_left (c_ssorted Int) c_unique)
+(declare-fun pset_range_right (c_ssorted Int) c_unique)
+(declare-fun pset_acc_all (c_ssorted c_ssorted) c_unique)
+(declare-fun pset_acc_range (c_ssorted c_ssorted Int Int) c_unique)
+(declare-fun pset_acc_range_left (c_ssorted c_ssorted Int) c_unique)
+(declare-fun pset_acc_range_right (c_ssorted c_ssorted Int) c_unique)
+(declare-fun pset_union (c_ssorted c_ssorted) c_unique)
+(declare-fun not_in_pset (c_ssorted c_ssorted) Bool)
+(declare-fun not_assigns (c_ssorted c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_31_225_141 c_type)) (forall ((?t_30_224_142 c_type)) (forall ((?a_223_143 c_unique)) (forall ((?m1_222_144 c_unique)) (forall ((?m2_221_145 c_unique)) (forall ((?l_220_146 c_unique)) (let ((?v_0 (type_memory ?t_30_224_142 ?t_31_225_141))) (= (not_assigns (c_sort type_alloc_table ?a_223_143) (c_sort ?v_0 ?m1_222_144) (c_sort ?v_0 ?m2_221_145) (c_sort (type_pset ?t_31_225_141) ?l_220_146)) (forall ((?p_219_147 c_unique)) (let ((?v_1 (c_sort (type_pointer ?t_31_225_141) [...]
+(assert (forall ((?t_32_227_148 c_type)) (forall ((?p_226_149 c_unique)) (not_in_pset (c_sort (type_pointer ?t_32_227_148) ?p_226_149) (c_sort (type_pset ?t_32_227_148) pset_empty)))))
+(assert (forall ((?t_33_230_150 c_type)) (forall ((?p1_229_151 c_unique)) (forall ((?p2_228_152 c_unique)) (let ((?v_0 (type_pointer ?t_33_230_150))) (=> (not (= ?p1_229_151 ?p2_228_152)) (not_in_pset (c_sort ?v_0 ?p1_229_151) (c_sort (type_pset ?t_33_230_150) (pset_singleton (c_sort ?v_0 ?p2_228_152))))))))))
+(assert (forall ((?t_34_233_153 c_type)) (forall ((?p1_232_154 c_unique)) (forall ((?p2_231_155 c_unique)) (let ((?v_0 (type_pointer ?t_34_233_153))) (=> (not_in_pset (c_sort ?v_0 ?p1_232_154) (c_sort (type_pset ?t_34_233_153) (pset_singleton (c_sort ?v_0 ?p2_231_155)))) (not (= ?p1_232_154 ?p2_231_155))))))))
+(assert (forall ((?t_35_235_156 c_type)) (forall ((?p_234_157 c_unique)) (let ((?v_0 (c_sort (type_pointer ?t_35_235_156) ?p_234_157))) (not (not_in_pset ?v_0 (c_sort (type_pset ?t_35_235_156) (pset_singleton ?v_0))))))))
+(assert (forall ((?t_36_239_158 c_type)) (forall ((?l1_238_159 c_unique)) (forall ((?l2_237_160 c_unique)) (forall ((?p_236_161 c_unique)) (let ((?v_0 (c_sort (type_pointer ?t_36_239_158) ?p_236_161)) (?v_1 (type_pset ?t_36_239_158))) (let ((?v_2 (c_sort ?v_1 ?l1_238_159)) (?v_3 (c_sort ?v_1 ?l2_237_160))) (=> (and (not_in_pset ?v_0 ?v_2) (not_in_pset ?v_0 ?v_3)) (not_in_pset ?v_0 (c_sort ?v_1 (pset_union ?v_2 ?v_3)))))))))))
+(assert (forall ((?t_37_243_162 c_type)) (forall ((?l1_242_163 c_unique)) (forall ((?l2_241_164 c_unique)) (forall ((?p_240_165 c_unique)) (let ((?v_1 (c_sort (type_pointer ?t_37_243_162) ?p_240_165)) (?v_0 (type_pset ?t_37_243_162))) (let ((?v_2 (c_sort ?v_0 ?l1_242_163))) (=> (not_in_pset ?v_1 (c_sort ?v_0 (pset_union ?v_2 (c_sort ?v_0 ?l2_241_164)))) (not_in_pset ?v_1 ?v_2)))))))))
+(assert (forall ((?t_38_247_166 c_type)) (forall ((?l1_246_167 c_unique)) (forall ((?l2_245_168 c_unique)) (forall ((?p_244_169 c_unique)) (let ((?v_1 (c_sort (type_pointer ?t_38_247_166) ?p_244_169)) (?v_0 (type_pset ?t_38_247_166))) (let ((?v_2 (c_sort ?v_0 ?l2_245_168))) (=> (not_in_pset ?v_1 (c_sort ?v_0 (pset_union (c_sort ?v_0 ?l1_246_167) ?v_2))) (not_in_pset ?v_1 ?v_2)))))))))
+(assert (forall ((?t_40_253_170 c_type)) (forall ((?t_39_252_171 c_type)) (forall ((?l_251_172 c_unique)) (forall ((?m_250_173 c_unique)) (forall ((?p_249_174 c_unique)) (let ((?v_0 (type_pointer ?t_40_253_170))) (=> (forall ((?p1_248_175 c_unique)) (let ((?v_1 (c_sort (type_pointer ?t_39_252_171) ?p1_248_175))) (=> (= ?p_249_174 (acc (c_sort (type_memory ?v_0 ?t_39_252_171) ?m_250_173) ?v_1)) (not_in_pset ?v_1 (c_sort (type_pset ?t_39_252_171) ?l_251_172))))) (not_in_pset (c_sort ?v_0 ? [...]
+(assert (forall ((?t_42_259_176 c_type)) (forall ((?t_41_258_177 c_type)) (forall ((?l_257_178 c_unique)) (forall ((?m_256_179 c_unique)) (forall ((?p_255_180 c_unique)) (let ((?v_0 (type_pointer ?t_42_259_176))) (=> (not_in_pset (c_sort ?v_0 ?p_255_180) (c_sort (type_pset ?t_42_259_176) (pset_star (c_sort (type_pset ?t_41_258_177) ?l_257_178) (c_sort (type_memory ?v_0 ?t_41_258_177) ?m_256_179)))) (forall ((?p1_254_181 c_unique)) (let ((?v_1 (c_sort (type_pointer ?t_41_258_177) ?p1_254_ [...]
+(assert (forall ((?t_43_263_182 c_type)) (forall ((?p_262_183 c_unique)) (forall ((?l_261_184 c_unique)) (let ((?v_0 (type_pset ?t_43_263_182))) (=> (forall ((?p1_260_185 c_unique)) (let ((?v_1 (type_pointer ?t_43_263_182))) (let ((?v_2 (c_sort ?v_1 ?p1_260_185))) (=> (not (not_in_pset ?v_2 (c_sort ?v_0 ?l_261_184))) (not (= (base_addr (c_sort ?v_1 ?p_262_183)) (base_addr ?v_2))))))) (not_in_pset (c_sort (type_pointer ?t_43_263_182) ?p_262_183) (c_sort ?v_0 (pset_all (c_sort ?v_0 ?l_261_ [...]
+(assert (forall ((?t_44_267_186 c_type)) (forall ((?p_266_187 c_unique)) (forall ((?l_265_188 c_unique)) (let ((?v_0 (type_pset ?t_44_267_186))) (=> (not_in_pset (c_sort (type_pointer ?t_44_267_186) ?p_266_187) (c_sort ?v_0 (pset_all (c_sort ?v_0 ?l_265_188)))) (forall ((?p1_264_189 c_unique)) (let ((?v_1 (type_pointer ?t_44_267_186))) (let ((?v_2 (c_sort ?v_1 ?p1_264_189))) (=> (not (not_in_pset ?v_2 (c_sort ?v_0 ?l_265_188))) (not (= (base_addr (c_sort ?v_1 ?p_266_187)) (base_addr ?v_2 [...]
+(assert (forall ((?t_45_274_190 c_type)) (forall ((?p_273_191 c_unique)) (forall ((?l_272_192 c_unique)) (forall ((?a_271_193 Int)) (forall ((?b_270_194 Int)) (let ((?v_0 (type_pset ?t_45_274_190))) (=> (forall ((?p1_269_195 c_unique)) (or (not_in_pset (c_sort (type_pointer ?t_45_274_190) ?p1_269_195) (c_sort ?v_0 ?l_272_192)) (forall ((?i_268_196 Int)) (=> (and (<= ?a_271_193 ?i_268_196) (<= ?i_268_196 ?b_270_194)) (not (= ?p_273_191 (shift (c_sort (type_pointer ?t_45_274_190) ?p1_269_1 [...]
+(assert (forall ((?t_46_281_197 c_type)) (forall ((?p_280_198 c_unique)) (forall ((?l_279_199 c_unique)) (forall ((?a_278_200 Int)) (forall ((?b_277_201 Int)) (let ((?v_0 (type_pset ?t_46_281_197))) (=> (not_in_pset (c_sort (type_pointer ?t_46_281_197) ?p_280_198) (c_sort ?v_0 (pset_range (c_sort ?v_0 ?l_279_199) ?a_278_200 ?b_277_201))) (forall ((?p1_276_202 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_46_281_197) ?p1_276_202) (c_sort ?v_0 ?l_279_199))) (forall ((?i_275_203 [...]
+(assert (forall ((?t_47_287_204 c_type)) (forall ((?p_286_205 c_unique)) (forall ((?l_285_206 c_unique)) (forall ((?a_284_207 Int)) (let ((?v_0 (type_pset ?t_47_287_204))) (=> (forall ((?p1_283_208 c_unique)) (or (not_in_pset (c_sort (type_pointer ?t_47_287_204) ?p1_283_208) (c_sort ?v_0 ?l_285_206)) (forall ((?i_282_209 Int)) (=> (<= ?i_282_209 ?a_284_207) (not (= ?p_286_205 (shift (c_sort (type_pointer ?t_47_287_204) ?p1_283_208) ?i_282_209))))))) (not_in_pset (c_sort (type_pointer ?t_ [...]
+(assert (forall ((?t_48_293_210 c_type)) (forall ((?p_292_211 c_unique)) (forall ((?l_291_212 c_unique)) (forall ((?a_290_213 Int)) (let ((?v_0 (type_pset ?t_48_293_210))) (=> (not_in_pset (c_sort (type_pointer ?t_48_293_210) ?p_292_211) (c_sort ?v_0 (pset_range_left (c_sort ?v_0 ?l_291_212) ?a_290_213))) (forall ((?p1_289_214 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_48_293_210) ?p1_289_214) (c_sort ?v_0 ?l_291_212))) (forall ((?i_288_215 Int)) (=> (<= ?i_288_215 ?a_290_ [...]
+(assert (forall ((?t_49_299_216 c_type)) (forall ((?p_298_217 c_unique)) (forall ((?l_297_218 c_unique)) (forall ((?a_296_219 Int)) (let ((?v_0 (type_pset ?t_49_299_216))) (=> (forall ((?p1_295_220 c_unique)) (or (not_in_pset (c_sort (type_pointer ?t_49_299_216) ?p1_295_220) (c_sort ?v_0 ?l_297_218)) (forall ((?i_294_221 Int)) (=> (<= ?a_296_219 ?i_294_221) (not (= ?p_298_217 (shift (c_sort (type_pointer ?t_49_299_216) ?p1_295_220) ?i_294_221))))))) (not_in_pset (c_sort (type_pointer ?t_ [...]
+(assert (forall ((?t_50_305_222 c_type)) (forall ((?p_304_223 c_unique)) (forall ((?l_303_224 c_unique)) (forall ((?a_302_225 Int)) (let ((?v_0 (type_pset ?t_50_305_222))) (=> (not_in_pset (c_sort (type_pointer ?t_50_305_222) ?p_304_223) (c_sort ?v_0 (pset_range_right (c_sort ?v_0 ?l_303_224) ?a_302_225))) (forall ((?p1_301_226 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_50_305_222) ?p1_301_226) (c_sort ?v_0 ?l_303_224))) (forall ((?i_300_227 Int)) (=> (<= ?a_302_225 ?i_300 [...]
+(assert (forall ((?t_52_312_228 c_type)) (forall ((?t_51_311_229 c_type)) (forall ((?p_310_230 c_unique)) (forall ((?l_309_231 c_unique)) (forall ((?m_308_232 c_unique)) (let ((?v_0 (type_pointer ?t_51_311_229))) (=> (forall ((?p1_307_233 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_52_312_228) ?p1_307_233) (c_sort (type_pset ?t_52_312_228) ?l_309_231))) (forall ((?i_306_234 Int)) (let ((?v_1 (type_pointer ?t_52_312_228))) (not (= ?p_310_230 (acc (c_sort (type_memory ?v_0 ?t [...]
+(assert (forall ((?t_54_319_235 c_type)) (forall ((?t_53_318_236 c_type)) (forall ((?p_317_237 c_unique)) (forall ((?l_316_238 c_unique)) (forall ((?m_315_239 c_unique)) (let ((?v_0 (type_pointer ?t_53_318_236))) (=> (not_in_pset (c_sort ?v_0 ?p_317_237) (c_sort (type_pset ?t_53_318_236) (pset_acc_all (c_sort (type_pset ?t_54_319_235) ?l_316_238) (c_sort (type_memory ?v_0 ?t_54_319_235) ?m_315_239)))) (forall ((?p1_314_240 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_54_319_ [...]
+(assert (forall ((?t_56_328_242 c_type)) (forall ((?t_55_327_243 c_type)) (forall ((?p_326_244 c_unique)) (forall ((?l_325_245 c_unique)) (forall ((?m_324_246 c_unique)) (forall ((?a_323_247 Int)) (forall ((?b_322_248 Int)) (let ((?v_0 (type_pointer ?t_55_327_243))) (=> (forall ((?p1_321_249 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_56_328_242) ?p1_321_249) (c_sort (type_pset ?t_56_328_242) ?l_325_245))) (forall ((?i_320_250 Int)) (let ((?v_1 (type_pointer ?t_56_328_242)) [...]
+(assert (forall ((?t_58_337_251 c_type)) (forall ((?t_57_336_252 c_type)) (forall ((?p_335_253 c_unique)) (forall ((?l_334_254 c_unique)) (forall ((?m_333_255 c_unique)) (forall ((?a_332_256 Int)) (forall ((?b_331_257 Int)) (let ((?v_0 (type_pointer ?t_57_336_252))) (=> (not_in_pset (c_sort ?v_0 ?p_335_253) (c_sort (type_pset ?t_57_336_252) (pset_acc_range (c_sort (type_pset ?t_58_337_251) ?l_334_254) (c_sort (type_memory ?v_0 ?t_58_337_251) ?m_333_255) ?a_332_256 ?b_331_257))) (forall ( [...]
+(assert (forall ((?t_60_345_260 c_type)) (forall ((?t_59_344_261 c_type)) (forall ((?p_343_262 c_unique)) (forall ((?l_342_263 c_unique)) (forall ((?m_341_264 c_unique)) (forall ((?a_340_265 Int)) (let ((?v_0 (type_pointer ?t_59_344_261))) (=> (forall ((?p1_339_266 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_60_345_260) ?p1_339_266) (c_sort (type_pset ?t_60_345_260) ?l_342_263))) (forall ((?i_338_267 Int)) (let ((?v_1 (type_pointer ?t_60_345_260))) (=> (<= ?i_338_267 ?a_340 [...]
+(assert (forall ((?t_62_353_268 c_type)) (forall ((?t_61_352_269 c_type)) (forall ((?p_351_270 c_unique)) (forall ((?l_350_271 c_unique)) (forall ((?m_349_272 c_unique)) (forall ((?a_348_273 Int)) (let ((?v_0 (type_pointer ?t_61_352_269))) (=> (not_in_pset (c_sort ?v_0 ?p_351_270) (c_sort (type_pset ?t_61_352_269) (pset_acc_range_left (c_sort (type_pset ?t_62_353_268) ?l_350_271) (c_sort (type_memory ?v_0 ?t_62_353_268) ?m_349_272) ?a_348_273))) (forall ((?p1_347_274 c_unique)) (=> (not  [...]
+(assert (forall ((?t_64_361_276 c_type)) (forall ((?t_63_360_277 c_type)) (forall ((?p_359_278 c_unique)) (forall ((?l_358_279 c_unique)) (forall ((?m_357_280 c_unique)) (forall ((?a_356_281 Int)) (let ((?v_0 (type_pointer ?t_63_360_277))) (=> (forall ((?p1_355_282 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_64_361_276) ?p1_355_282) (c_sort (type_pset ?t_64_361_276) ?l_358_279))) (forall ((?i_354_283 Int)) (let ((?v_1 (type_pointer ?t_64_361_276))) (=> (<= ?a_356_281 ?i_354 [...]
+(assert (forall ((?t_66_369_284 c_type)) (forall ((?t_65_368_285 c_type)) (forall ((?p_367_286 c_unique)) (forall ((?l_366_287 c_unique)) (forall ((?m_365_288 c_unique)) (forall ((?a_364_289 Int)) (let ((?v_0 (type_pointer ?t_65_368_285))) (=> (not_in_pset (c_sort ?v_0 ?p_367_286) (c_sort (type_pset ?t_65_368_285) (pset_acc_range_right (c_sort (type_pset ?t_66_369_284) ?l_366_287) (c_sort (type_memory ?v_0 ?t_66_369_284) ?m_365_288) ?a_364_289))) (forall ((?p1_363_290 c_unique)) (=> (not [...]
+(assert (forall ((?t_68_376_292 c_type)) (forall ((?t_67_375_293 c_type)) (forall ((?a_374_294 c_unique)) (forall ((?l_373_295 c_unique)) (forall ((?m1_372_296 c_unique)) (forall ((?m2_371_297 c_unique)) (forall ((?m3_370_298 c_unique)) (let ((?v_1 (c_sort type_alloc_table ?a_374_294)) (?v_0 (type_memory ?t_68_376_292 ?t_67_375_293))) (let ((?v_4 (c_sort ?v_0 ?m1_372_296)) (?v_2 (c_sort ?v_0 ?m2_371_297)) (?v_3 (c_sort (type_pset ?t_67_375_293) ?l_373_295)) (?v_5 (c_sort ?v_0 ?m3_370_298 [...]
+(assert (forall ((?t_70_381_299 c_type)) (forall ((?t_69_380_300 c_type)) (forall ((?a_379_301 c_unique)) (forall ((?l_378_302 c_unique)) (forall ((?m_377_303 c_unique)) (let ((?v_0 (c_sort (type_memory ?t_70_381_299 ?t_69_380_300) ?m_377_303))) (not_assigns (c_sort type_alloc_table ?a_379_301) ?v_0 ?v_0 (c_sort (type_pset ?t_69_380_300) ?l_378_302)))))))))
+(declare-fun valid_acc (c_ssorted) Bool)
+(assert (forall ((?t_72_386_304 c_type)) (forall ((?t_71_385_305 c_type)) (forall ((?m1_384_306 c_unique)) (= (valid_acc (c_sort (type_memory (type_pointer ?t_71_385_305) ?t_72_386_304) ?m1_384_306)) (forall ((?p_383_307 c_unique)) (forall ((?a_382_308 c_unique)) (let ((?v_1 (type_pointer ?t_71_385_305)) (?v_0 (c_sort type_alloc_table ?a_382_308)) (?v_2 (c_sort (type_pointer ?t_72_386_304) ?p_383_307))) (=> (valid ?v_0 ?v_2) (valid ?v_0 (c_sort ?v_1 (acc (c_sort (type_memory ?v_1 ?t_72_3 [...]
+(declare-fun valid_acc_range (c_ssorted Int) Bool)
+(assert (forall ((?t_74_392_309 c_type)) (forall ((?t_73_391_310 c_type)) (forall ((?m1_390_311 c_unique)) (forall ((?size_389_312 Int)) (= (valid_acc_range (c_sort (type_memory (type_pointer ?t_73_391_310) ?t_74_392_309) ?m1_390_311) ?size_389_312) (forall ((?p_388_313 c_unique)) (forall ((?a_387_314 c_unique)) (let ((?v_1 (type_pointer ?t_73_391_310)) (?v_0 (c_sort type_alloc_table ?a_387_314)) (?v_2 (c_sort (type_pointer ?t_74_392_309) ?p_388_313))) (=> (valid ?v_0 ?v_2) (valid_range  [...]
+(assert (forall ((?t_76_398_315 c_type)) (forall ((?t_75_397_316 c_type)) (forall ((?m1_396_317 c_unique)) (forall ((?size_395_318 Int)) (forall ((?p_394_319 c_unique)) (forall ((?a_393_320 c_unique)) (let ((?v_1 (type_pointer ?t_75_397_316))) (let ((?v_2 (c_sort (type_memory ?v_1 ?t_76_398_315) ?m1_396_317)) (?v_0 (c_sort type_alloc_table ?a_393_320)) (?v_3 (c_sort (type_pointer ?t_76_398_315) ?p_394_319))) (=> (valid_acc_range ?v_2 ?size_395_318) (=> (valid ?v_0 ?v_3) (valid ?v_0 (c_so [...]
+(declare-fun separation1 (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_78_404_321 c_type)) (forall ((?t_77_403_322 c_type)) (forall ((?m1_402_323 c_unique)) (forall ((?m2_401_324 c_unique)) (let ((?v_0 (type_memory (type_pointer ?t_77_403_322) ?t_78_404_321))) (= (separation1 (c_sort ?v_0 ?m1_402_323) (c_sort ?v_0 ?m2_401_324)) (forall ((?p_400_325 c_unique)) (forall ((?a_399_326 c_unique)) (let ((?v_1 (type_pointer ?t_77_403_322)) (?v_2 (c_sort (type_pointer ?t_78_404_321) ?p_400_325))) (=> (valid (c_sort type_alloc_table ?a_399_326) ? [...]
+(declare-fun separation1_range1 (c_ssorted c_ssorted Int) Bool)
+(assert (forall ((?t_80_412_327 c_type)) (forall ((?t_79_411_328 c_type)) (forall ((?m1_410_329 c_unique)) (forall ((?m2_409_330 c_unique)) (forall ((?size_408_331 Int)) (let ((?v_0 (type_memory (type_pointer ?t_79_411_328) ?t_80_412_327))) (= (separation1_range1 (c_sort ?v_0 ?m1_410_329) (c_sort ?v_0 ?m2_409_330) ?size_408_331) (forall ((?p_407_332 c_unique)) (forall ((?a_406_333 c_unique)) (=> (valid (c_sort type_alloc_table ?a_406_333) (c_sort (type_pointer ?t_80_412_327) ?p_407_332)) [...]
+(declare-fun separation1_range (c_ssorted Int) Bool)
+(assert (forall ((?t_82_420_335 c_type)) (forall ((?t_81_419_336 c_type)) (forall ((?m_418_337 c_unique)) (forall ((?size_417_338 Int)) (= (separation1_range (c_sort (type_memory (type_pointer ?t_81_419_336) ?t_82_420_335) ?m_418_337) ?size_417_338) (forall ((?p_416_339 c_unique)) (forall ((?a_415_340 c_unique)) (=> (valid (c_sort type_alloc_table ?a_415_340) (c_sort (type_pointer ?t_82_420_335) ?p_416_339)) (forall ((?i1_414_341 Int)) (forall ((?i2_413_342 Int)) (let ((?v_0 (type_pointe [...]
+(declare-fun separation2 (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_84_426_343 c_type)) (forall ((?t_83_425_344 c_type)) (forall ((?m1_424_345 c_unique)) (forall ((?m2_423_346 c_unique)) (let ((?v_0 (type_memory (type_pointer ?t_83_425_344) ?t_84_426_343))) (= (separation2 (c_sort ?v_0 ?m1_424_345) (c_sort ?v_0 ?m2_423_346)) (forall ((?p1_422_347 c_unique)) (forall ((?p2_421_348 c_unique)) (let ((?v_1 (type_pointer ?t_83_425_344)) (?v_2 (type_pointer ?t_84_426_343))) (=> (not (= ?p1_422_347 ?p2_421_348)) (not (= (base_addr (c_sort ?v [...]
+(declare-fun separation2_range1 (c_ssorted c_ssorted Int) Bool)
+(assert (forall ((?t_86_435_349 c_type)) (forall ((?t_85_434_350 c_type)) (forall ((?m1_433_351 c_unique)) (forall ((?m2_432_352 c_unique)) (forall ((?size_431_353 Int)) (let ((?v_0 (type_memory (type_pointer ?t_85_434_350) ?t_86_435_349))) (= (separation2_range1 (c_sort ?v_0 ?m1_433_351) (c_sort ?v_0 ?m2_432_352) ?size_431_353) (forall ((?p_430_354 c_unique)) (forall ((?q_429_355 c_unique)) (forall ((?a_428_356 c_unique)) (forall ((?i_427_357 Int)) (let ((?v_1 (type_pointer ?t_85_434_35 [...]
+(declare-fun on_heap (c_ssorted c_ssorted) Bool)
+(declare-fun on_stack (c_ssorted c_ssorted) Bool)
+(declare-fun fresh (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_87_438_358 c_type)) (forall ((?a_437_359 c_unique)) (forall ((?p_436_360 c_unique)) (let ((?v_0 (c_sort type_alloc_table ?a_437_359)) (?v_1 (c_sort (type_pointer ?t_87_438_358) ?p_436_360))) (=> (fresh ?v_0 ?v_1) (not (valid ?v_0 ?v_1))))))))
+(assert (forall ((?t_88_442_361 c_type)) (forall ((?a_441_362 c_unique)) (forall ((?p_440_363 c_unique)) (=> (fresh (c_sort type_alloc_table ?a_441_362) (c_sort (type_pointer ?t_88_442_361) ?p_440_363)) (forall ((?i_439_364 Int)) (let ((?v_0 (type_pointer ?t_88_442_361))) (not (valid (c_sort type_alloc_table ?a_441_362) (c_sort ?v_0 (shift (c_sort ?v_0 ?p_440_363) ?i_439_364)))))))))))
+(declare-fun alloc_extends (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_89_446_365 c_type)) (forall ((?a1_445_366 c_unique)) (forall ((?a2_444_367 c_unique)) (=> (alloc_extends (c_sort type_alloc_table ?a1_445_366) (c_sort type_alloc_table ?a2_444_367)) (forall ((?q_443_368 c_unique)) (let ((?v_0 (c_sort (type_pointer ?t_89_446_365) ?q_443_368))) (=> (valid (c_sort type_alloc_table ?a1_445_366) ?v_0) (valid (c_sort type_alloc_table ?a2_444_367) ?v_0)))))))))
+(assert (forall ((?t_90_451_369 c_type)) (forall ((?a1_450_370 c_unique)) (forall ((?a2_449_371 c_unique)) (=> (alloc_extends (c_sort type_alloc_table ?a1_450_370) (c_sort type_alloc_table ?a2_449_371)) (forall ((?q_448_372 c_unique)) (forall ((?i_447_373 Int)) (let ((?v_0 (c_sort (type_pointer ?t_90_451_369) ?q_448_372))) (=> (valid_index (c_sort type_alloc_table ?a1_450_370) ?v_0 ?i_447_373) (valid_index (c_sort type_alloc_table ?a2_449_371) ?v_0 ?i_447_373))))))))))
+(assert (forall ((?t_91_457_374 c_type)) (forall ((?a1_456_375 c_unique)) (forall ((?a2_455_376 c_unique)) (=> (alloc_extends (c_sort type_alloc_table ?a1_456_375) (c_sort type_alloc_table ?a2_455_376)) (forall ((?q_454_377 c_unique)) (forall ((?i_453_378 Int)) (forall ((?j_452_379 Int)) (let ((?v_0 (c_sort (type_pointer ?t_91_457_374) ?q_454_377))) (=> (valid_range (c_sort type_alloc_table ?a1_456_375) ?v_0 ?i_453_378 ?j_452_379) (valid_range (c_sort type_alloc_table ?a2_455_376) ?v_0 ? [...]
+(assert (forall ((?a_458_380 c_unique)) (let ((?v_0 (c_sort type_alloc_table ?a_458_380))) (alloc_extends ?v_0 ?v_0))))
+(assert (forall ((?a1_461_381 c_unique)) (forall ((?a2_460_382 c_unique)) (forall ((?a3_459_383 c_unique)) (let ((?v_1 (c_sort type_alloc_table ?a1_461_381)) (?v_0 (c_sort type_alloc_table ?a2_460_382)) (?v_2 (c_sort type_alloc_table ?a3_459_383))) (=> (alloc_extends ?v_1 ?v_0) (=> (alloc_extends ?v_0 ?v_2) (alloc_extends ?v_1 ?v_2))))))))
+(declare-fun free_stack (c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_92_466_384 c_type)) (forall ((?a1_465_385 c_unique)) (forall ((?a2_464_386 c_unique)) (forall ((?a3_463_387 c_unique)) (=> (free_stack (c_sort type_alloc_table ?a1_465_385) (c_sort type_alloc_table ?a2_464_386) (c_sort type_alloc_table ?a3_463_387)) (forall ((?p_462_388 c_unique)) (let ((?v_0 (c_sort type_alloc_table ?a2_464_386)) (?v_1 (c_sort (type_pointer ?t_92_466_384) ?p_462_388))) (=> (valid ?v_0 ?v_1) (=> (on_heap ?v_0 ?v_1) (valid (c_sort type_alloc_table ?a3 [...]
+(assert (forall ((?t_93_471_389 c_type)) (forall ((?a1_470_390 c_unique)) (forall ((?a2_469_391 c_unique)) (forall ((?a3_468_392 c_unique)) (=> (free_stack (c_sort type_alloc_table ?a1_470_390) (c_sort type_alloc_table ?a2_469_391) (c_sort type_alloc_table ?a3_468_392)) (forall ((?p_467_393 c_unique)) (let ((?v_0 (c_sort type_alloc_table ?a1_470_390)) (?v_1 (c_sort (type_pointer ?t_93_471_389) ?p_467_393))) (=> (valid ?v_0 ?v_1) (=> (on_stack ?v_0 ?v_1) (valid (c_sort type_alloc_table ?a [...]
+(declare-fun null () c_unique)
+(assert (forall ((?t_94_475_394 c_type)) (forall ((?a_474_395 c_unique)) (not (valid (c_sort type_alloc_table ?a_474_395) (c_sort (type_pointer ?t_94_475_394) null))))))
+(declare-fun type_global () c_type)
+(assert (not (forall ((?alloc c_unique)) (forall ((?b Int)) (forall ((?t c_unique)) (=> (and (= ?b 0) (valid_range (c_sort type_alloc_table ?alloc) (c_sort (type_pointer type_global) ?t) 0 9)) (forall ((?b0 Int)) (=> (= ?b0 (+ ?b 1)) (forall ((?result c_unique)) (let ((?v_0 (type_pointer type_global))) (let ((?v_2 (c_sort ?v_0 ?result))) (let ((?v_1 (offset ?v_2))) (=> (= ?result (shift (c_sort ?v_0 ?t) ?b)) (and (<= 0 ?v_1) (< ?v_1 (block_length (c_sort type_alloc_table ?alloc) ?v_2)))) [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/smtlibf957ea.smt2 b/test/regress/regress0/quantifiers/smtlibf957ea.smt2
new file mode 100644
index 0000000..aa82255
--- /dev/null
+++ b/test/regress/regress0/quantifiers/smtlibf957ea.smt2
@@ -0,0 +1,212 @@
+(set-logic AUFLIRA)
+(set-info :source |http://proval.lri.fr/why-benchmarks |)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-sort Unit 0)
+(declare-sort c_unique 0)
+(declare-sort c_ssorted 0)
+(declare-sort c_type 0)
+(declare-sort c_Boolean 0)
+(declare-fun whydivide (Int Int) Int)
+(declare-fun % (Int Int) Int)
+(declare-fun c_sort (c_type c_unique) c_ssorted)
+(declare-fun c_Boolean_true () c_Boolean)
+(declare-fun c_Boolean_false () c_Boolean)
+(assert (forall ((?b_22_1 c_Boolean)) (or (= c_Boolean_true ?b_22_1) (= c_Boolean_false ?b_22_1))))
+(assert (not (= c_Boolean_true c_Boolean_false)))
+(declare-fun int2U (Int) c_unique)
+(declare-fun ss2Int (c_ssorted) Int)
+(declare-fun real2U (Real) c_unique)
+(declare-fun ss2Real (c_ssorted) Real)
+(declare-fun bool2U (c_Boolean) c_unique)
+(declare-fun ss2Bool (c_ssorted) c_Boolean)
+(declare-fun c_int () c_type)
+(declare-fun c_bool () c_type)
+(declare-fun c_real () c_type)
+(declare-fun c_unit () c_type)
+(declare-fun c_ref (c_unique) c_unique)
+(assert (forall ((?t_21_2 c_type)) (forall ((?x_20_3 c_unique)) (forall ((?y_19_4 c_unique)) (=> (= (c_sort ?t_21_2 ?x_20_3) (c_sort ?t_21_2 ?y_19_4)) (= ?x_20_3 ?y_19_4))))))
+(assert (forall ((?x_18_5 Int)) (= (ss2Int (c_sort c_int (int2U ?x_18_5))) ?x_18_5)))
+(assert (forall ((?x_17_6 Int)) (forall ((?y_16_7 Int)) (=> (= (int2U ?x_17_6) (int2U ?y_16_7)) (= ?x_17_6 ?y_16_7)))))
+(assert (forall ((?x_15_8 Real)) (forall ((?y_14_9 Real)) (=> (= (real2U ?x_15_8) (real2U ?y_14_9)) (= ?x_15_8 ?y_14_9)))))
+(assert (forall ((?x_13_10 c_Boolean)) (forall ((?y_12_11 c_Boolean)) (=> (= (bool2U ?x_13_10) (bool2U ?y_12_11)) (= ?x_13_10 ?y_12_11)))))
+(assert (forall ((?x_11_12 c_ssorted)) (forall ((?y_10_13 c_ssorted)) (=> (= (ss2Int ?x_11_12) (ss2Int ?y_10_13)) (= ?x_11_12 ?y_10_13)))))
+(assert (forall ((?x_9_14 c_ssorted)) (forall ((?y_8_15 c_ssorted)) (=> (= (ss2Real ?x_9_14) (ss2Real ?y_8_15)) (= ?x_9_14 ?y_8_15)))))
+(assert (forall ((?x_7_16 c_ssorted)) (forall ((?y_6_17 c_ssorted)) (=> (= (ss2Bool ?x_7_16) (ss2Bool ?y_6_17)) (= ?x_7_16 ?y_6_17)))))
+(assert (forall ((?x_5_18 Real)) (= (ss2Real (c_sort c_real (real2U ?x_5_18))) ?x_5_18)))
+(assert (forall ((?x_4_19 c_Boolean)) (= (ss2Bool (c_sort c_bool (bool2U ?x_4_19))) ?x_4_19)))
+(assert (forall ((?x_3_20 c_unique)) (= (int2U (ss2Int (c_sort c_int ?x_3_20))) ?x_3_20)))
+(assert (forall ((?x_2_21 c_unique)) (= (real2U (ss2Real (c_sort c_real ?x_2_21))) ?x_2_21)))
+(assert (forall ((?x_1_22 c_unique)) (= (bool2U (ss2Bool (c_sort c_bool ?x_1_22))) ?x_1_22)))
+(declare-fun eq_int (Int Int) Bool)
+(declare-fun neq_int (Int Int) Bool)
+(declare-fun lt_int_bool (Int Int) c_Boolean)
+(declare-fun le_int_bool (Int Int) c_Boolean)
+(declare-fun gt_int_bool (Int Int) c_Boolean)
+(declare-fun ge_int_bool (Int Int) c_Boolean)
+(declare-fun eq_int_bool (Int Int) c_Boolean)
+(declare-fun neq_int_bool (Int Int) c_Boolean)
+(assert (forall ((?x_40_23 Int)) (forall ((?y_39_24 Int)) (= (= (lt_int_bool ?x_40_23 ?y_39_24) c_Boolean_true) (< ?x_40_23 ?y_39_24)))))
+(assert (forall ((?x_42_25 Int)) (forall ((?y_41_26 Int)) (= (= (le_int_bool ?x_42_25 ?y_41_26) c_Boolean_true) (<= ?x_42_25 ?y_41_26)))))
+(assert (forall ((?x_44_27 Int)) (forall ((?y_43_28 Int)) (= (= (gt_int_bool ?x_44_27 ?y_43_28) c_Boolean_true) (> ?x_44_27 ?y_43_28)))))
+(assert (forall ((?x_46_29 Int)) (forall ((?y_45_30 Int)) (= (= (ge_int_bool ?x_46_29 ?y_45_30) c_Boolean_true) (>= ?x_46_29 ?y_45_30)))))
+(assert (forall ((?x_48_31 Int)) (forall ((?y_47_32 Int)) (= (= (eq_int_bool ?x_48_31 ?y_47_32) c_Boolean_true) (= ?x_48_31 ?y_47_32)))))
+(assert (forall ((?x_50_33 Int)) (forall ((?y_49_34 Int)) (= (= (neq_int_bool ?x_50_33 ?y_49_34) c_Boolean_true) (not (= ?x_50_33 ?y_49_34))))))
+(declare-fun add_real (Real Real) Real)
+(declare-fun sub_real (Real Real) Real)
+(declare-fun mul_real (Real Real) Real)
+(declare-fun div_real (Real Real) Real)
+(declare-fun pow_real (Real Real) Real)
+(declare-fun neg_real (Real) Real)
+(declare-fun abs_real (Real) Real)
+(declare-fun sqrt_real (Real) Real)
+(declare-fun real_of_int (Int) Real)
+(declare-fun int_of_real (Real) Int)
+(declare-fun lt_real (Real Real) Bool)
+(declare-fun le_real (Real Real) Bool)
+(declare-fun gt_real (Real Real) Bool)
+(declare-fun ge_real (Real Real) Bool)
+(declare-fun eq_real (Real Real) Bool)
+(declare-fun neq_real (Real Real) Bool)
+(declare-fun eq_bool (c_Boolean c_Boolean) Bool)
+(declare-fun neq_bool (c_Boolean c_Boolean) Bool)
+(declare-fun eq_unit (c_ssorted c_ssorted) Bool)
+(declare-fun neq_unit (c_ssorted c_ssorted) Bool)
+(declare-fun smtlib__ite (c_Boolean c_ssorted c_ssorted) c_unique)
+(assert (forall ((?t_1_76_35 c_type)) (forall ((?x_75_36 c_unique)) (forall ((?y_74_37 c_unique)) (= (smtlib__ite c_Boolean_true (c_sort ?t_1_76_35 ?x_75_36) (c_sort ?t_1_76_35 ?y_74_37)) ?x_75_36)))))
+(assert (forall ((?t_2_79_38 c_type)) (forall ((?x_78_39 c_unique)) (forall ((?y_77_40 c_unique)) (= (smtlib__ite c_Boolean_false (c_sort ?t_2_79_38 ?x_78_39) (c_sort ?t_2_79_38 ?y_77_40)) ?y_77_40)))))
+(declare-fun bw_compl (Int) Int)
+(declare-fun bw_and (Int Int) Int)
+(declare-fun bw_xor (Int Int) Int)
+(declare-fun bw_or (Int Int) Int)
+(declare-fun lsl (Int Int) Int)
+(declare-fun lsr (Int Int) Int)
+(declare-fun non_int (Int) Int)
+(declare-fun type_pointer (c_type) c_type)
+(declare-fun type_addr (c_type) c_type)
+(declare-fun type_alloc_table () c_type)
+(declare-fun block_length (c_ssorted c_ssorted) Int)
+(declare-fun base_addr (c_ssorted) c_unique)
+(declare-fun offset (c_ssorted) Int)
+(declare-fun shift (c_ssorted Int) c_unique)
+(declare-fun sub_pointer (c_ssorted c_ssorted) Int)
+(declare-fun lt_pointer (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_3_88_41 c_type)) (forall ((?p1_87_42 c_unique)) (forall ((?p2_86_43 c_unique)) (let ((?v_0 (type_pointer ?t_3_88_41))) (let ((?v_1 (c_sort ?v_0 ?p1_87_42)) (?v_2 (c_sort ?v_0 ?p2_86_43))) (= (lt_pointer ?v_1 ?v_2) (and (= (base_addr ?v_1) (base_addr ?v_2)) (< (offset ?v_1) (offset ?v_2))))))))))
+(declare-fun le_pointer (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_4_91_44 c_type)) (forall ((?p1_90_45 c_unique)) (forall ((?p2_89_46 c_unique)) (let ((?v_0 (type_pointer ?t_4_91_44))) (let ((?v_1 (c_sort ?v_0 ?p1_90_45)) (?v_2 (c_sort ?v_0 ?p2_89_46))) (= (le_pointer ?v_1 ?v_2) (and (= (base_addr ?v_1) (base_addr ?v_2)) (<= (offset ?v_1) (offset ?v_2))))))))))
+(declare-fun gt_pointer (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_5_94_47 c_type)) (forall ((?p1_93_48 c_unique)) (forall ((?p2_92_49 c_unique)) (let ((?v_0 (type_pointer ?t_5_94_47))) (let ((?v_1 (c_sort ?v_0 ?p1_93_48)) (?v_2 (c_sort ?v_0 ?p2_92_49))) (= (gt_pointer ?v_1 ?v_2) (and (= (base_addr ?v_1) (base_addr ?v_2)) (> (offset ?v_1) (offset ?v_2))))))))))
+(declare-fun ge_pointer (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_6_97_50 c_type)) (forall ((?p1_96_51 c_unique)) (forall ((?p2_95_52 c_unique)) (let ((?v_0 (type_pointer ?t_6_97_50))) (let ((?v_1 (c_sort ?v_0 ?p1_96_51)) (?v_2 (c_sort ?v_0 ?p2_95_52))) (= (ge_pointer ?v_1 ?v_2) (and (= (base_addr ?v_1) (base_addr ?v_2)) (>= (offset ?v_1) (offset ?v_2))))))))))
+(declare-fun valid (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_7_104_53 c_type)) (forall ((?a_103_54 c_unique)) (forall ((?p_102_55 c_unique)) (let ((?v_2 (c_sort type_alloc_table ?a_103_54)) (?v_0 (c_sort (type_pointer ?t_7_104_53) ?p_102_55))) (let ((?v_1 (offset ?v_0))) (= (valid ?v_2 ?v_0) (and (<= 0 ?v_1) (< ?v_1 (block_length ?v_2 ?v_0))))))))))
+(declare-fun valid_index (c_ssorted c_ssorted Int) Bool)
+(assert (forall ((?t_8_108_56 c_type)) (forall ((?a_107_57 c_unique)) (forall ((?p_106_58 c_unique)) (forall ((?i_105_59 Int)) (let ((?v_2 (c_sort type_alloc_table ?a_107_57)) (?v_0 (c_sort (type_pointer ?t_8_108_56) ?p_106_58))) (let ((?v_1 (+ (offset ?v_0) ?i_105_59))) (= (valid_index ?v_2 ?v_0 ?i_105_59) (and (<= 0 ?v_1) (< ?v_1 (block_length ?v_2 ?v_0)))))))))))
+(declare-fun valid_range (c_ssorted c_ssorted Int Int) Bool)
+(assert (forall ((?t_9_113_60 c_type)) (forall ((?a_112_61 c_unique)) (forall ((?p_111_62 c_unique)) (forall ((?i_110_63 Int)) (forall ((?j_109_64 Int)) (let ((?v_2 (c_sort type_alloc_table ?a_112_61)) (?v_0 (c_sort (type_pointer ?t_9_113_60) ?p_111_62))) (let ((?v_1 (offset ?v_0))) (= (valid_range ?v_2 ?v_0 ?i_110_63 ?j_109_64) (and (<= 0 (+ ?v_1 ?i_110_63)) (< (+ ?v_1 ?j_109_64) (block_length ?v_2 ?v_0))))))))))))
+(assert (forall ((?t_10_116_65 c_type)) (forall ((?p_115_66 c_unique)) (forall ((?i_114_67 Int)) (let ((?v_0 (type_pointer ?t_10_116_65))) (let ((?v_1 (c_sort ?v_0 ?p_115_66))) (= (offset (c_sort ?v_0 (shift ?v_1 ?i_114_67))) (+ (offset ?v_1) ?i_114_67))))))))
+(assert (forall ((?t_11_118_68 c_type)) (forall ((?p_117_69 c_unique)) (= (shift (c_sort (type_pointer ?t_11_118_68) ?p_117_69) 0) ?p_117_69))))
+(assert (forall ((?t_12_122_70 c_type)) (forall ((?p_121_71 c_unique)) (forall ((?i_120_72 Int)) (forall ((?j_119_73 Int)) (let ((?v_0 (type_pointer ?t_12_122_70))) (let ((?v_1 (c_sort ?v_0 ?p_121_71))) (= (shift (c_sort ?v_0 (shift ?v_1 ?i_120_72)) ?j_119_73) (shift ?v_1 (+ ?i_120_72 ?j_119_73))))))))))
+(assert (forall ((?t_13_125_74 c_type)) (forall ((?p_124_75 c_unique)) (forall ((?i_123_76 Int)) (let ((?v_0 (type_pointer ?t_13_125_74))) (let ((?v_1 (c_sort ?v_0 ?p_124_75))) (= (base_addr (c_sort ?v_0 (shift ?v_1 ?i_123_76))) (base_addr ?v_1))))))))
+(assert (forall ((?t_14_129_77 c_type)) (forall ((?a_128_78 c_unique)) (forall ((?p_127_79 c_unique)) (forall ((?i_126_80 Int)) (let ((?v_1 (c_sort type_alloc_table ?a_128_78)) (?v_0 (type_pointer ?t_14_129_77))) (let ((?v_2 (c_sort ?v_0 ?p_127_79))) (= (block_length ?v_1 (c_sort ?v_0 (shift ?v_2 ?i_126_80))) (block_length ?v_1 ?v_2)))))))))
+(assert (forall ((?t_15_133_81 c_type)) (forall ((?a_132_82 c_unique)) (forall ((?p1_131_83 c_unique)) (forall ((?p2_130_84 c_unique)) (let ((?v_0 (type_pointer ?t_15_133_81))) (let ((?v_1 (c_sort ?v_0 ?p1_131_83)) (?v_3 (c_sort ?v_0 ?p2_130_84)) (?v_2 (c_sort type_alloc_table ?a_132_82))) (=> (= (base_addr ?v_1) (base_addr ?v_3)) (= (block_length ?v_2 ?v_1) (block_length ?v_2 ?v_3))))))))))
+(assert (forall ((?t_16_136_85 c_type)) (forall ((?p1_135_86 c_unique)) (forall ((?p2_134_87 c_unique)) (let ((?v_0 (type_pointer ?t_16_136_85))) (let ((?v_1 (c_sort ?v_0 ?p1_135_86)) (?v_2 (c_sort ?v_0 ?p2_134_87))) (=> (and (= (base_addr ?v_1) (base_addr ?v_2)) (= (offset ?v_1) (offset ?v_2))) (= ?p1_135_86 ?p2_134_87))))))))
+(assert (forall ((?t_17_139_88 c_type)) (forall ((?p1_138_89 c_unique)) (forall ((?p2_137_90 c_unique)) (let ((?v_0 (type_pointer ?t_17_139_88))) (let ((?v_1 (c_sort ?v_0 ?p1_138_89)) (?v_2 (c_sort ?v_0 ?p2_137_90))) (=> (= ?p1_138_89 ?p2_137_90) (and (= (base_addr ?v_1) (base_addr ?v_2)) (= (offset ?v_1) (offset ?v_2))))))))))
+(assert (forall ((?t_18_144_91 c_type)) (forall ((?p1_143_92 c_unique)) (forall ((?p2_142_93 c_unique)) (forall ((?i_141_94 Int)) (forall ((?j_140_95 Int)) (let ((?v_0 (type_pointer ?t_18_144_91))) (let ((?v_1 (c_sort ?v_0 ?p1_143_92)) (?v_2 (c_sort ?v_0 ?p2_142_93))) (=> (not (= (base_addr ?v_1) (base_addr ?v_2))) (not (= (shift ?v_1 ?i_141_94) (shift ?v_2 ?j_140_95))))))))))))
+(assert (forall ((?t_19_149_96 c_type)) (forall ((?p1_148_97 c_unique)) (forall ((?p2_147_98 c_unique)) (forall ((?i_146_99 Int)) (forall ((?j_145_100 Int)) (let ((?v_0 (type_pointer ?t_19_149_96))) (let ((?v_1 (c_sort ?v_0 ?p1_148_97)) (?v_2 (c_sort ?v_0 ?p2_147_98))) (=> (not (= (+ (offset ?v_1) ?i_146_99) (+ (offset ?v_2) ?j_145_100))) (not (= (shift ?v_1 ?i_146_99) (shift ?v_2 ?j_145_100))))))))))))
+(assert (forall ((?t_20_154_101 c_type)) (forall ((?p1_153_102 c_unique)) (forall ((?p2_152_103 c_unique)) (forall ((?i_151_104 Int)) (forall ((?j_150_105 Int)) (let ((?v_0 (type_pointer ?t_20_154_101))) (let ((?v_1 (c_sort ?v_0 ?p1_153_102)) (?v_2 (c_sort ?v_0 ?p2_152_103))) (=> (= (base_addr ?v_1) (base_addr ?v_2)) (=> (= (+ (offset ?v_1) ?i_151_104) (+ (offset ?v_2) ?j_150_105)) (= (shift ?v_1 ?i_151_104) (shift ?v_2 ?j_150_105))))))))))))
+(assert (forall ((?t_21_158_106 c_type)) (forall ((?a_157_107 c_unique)) (forall ((?p_156_108 c_unique)) (forall ((?i_155_109 Int)) (let ((?v_0 (c_sort type_alloc_table ?a_157_107)) (?v_1 (type_pointer ?t_21_158_106))) (let ((?v_2 (c_sort ?v_1 ?p_156_108))) (=> (valid_index ?v_0 ?v_2 ?i_155_109) (valid ?v_0 (c_sort ?v_1 (shift ?v_2 ?i_155_109)))))))))))
+(assert (forall ((?t_22_164_110 c_type)) (forall ((?a_163_111 c_unique)) (forall ((?p_162_112 c_unique)) (forall ((?i_161_113 Int)) (forall ((?j_160_114 Int)) (forall ((?k_159_115 Int)) (let ((?v_0 (c_sort type_alloc_table ?a_163_111)) (?v_1 (type_pointer ?t_22_164_110))) (let ((?v_2 (c_sort ?v_1 ?p_162_112))) (=> (valid_range ?v_0 ?v_2 ?i_161_113 ?j_160_114) (=> (and (<= ?i_161_113 ?k_159_115) (<= ?k_159_115 ?j_160_114)) (valid ?v_0 (c_sort ?v_1 (shift ?v_2 ?k_159_115))))))))))))))
+(assert (forall ((?t_23_169_116 c_type)) (forall ((?a_168_117 c_unique)) (forall ((?p_167_118 c_unique)) (forall ((?i_166_119 Int)) (forall ((?j_165_120 Int)) (let ((?v_0 (c_sort type_alloc_table ?a_168_117)) (?v_1 (c_sort (type_pointer ?t_23_169_116) ?p_167_118))) (=> (valid_range ?v_0 ?v_1 ?i_166_119 ?j_165_120) (=> (and (<= ?i_166_119 0) (<= 0 ?j_165_120)) (valid ?v_0 ?v_1))))))))))
+(assert (forall ((?t_24_175_121 c_type)) (forall ((?a_174_122 c_unique)) (forall ((?p_173_123 c_unique)) (forall ((?i_172_124 Int)) (forall ((?j_171_125 Int)) (forall ((?k_170_126 Int)) (let ((?v_0 (c_sort type_alloc_table ?a_174_122)) (?v_1 (c_sort (type_pointer ?t_24_175_121) ?p_173_123))) (=> (valid_range ?v_0 ?v_1 ?i_172_124 ?j_171_125) (=> (and (<= ?i_172_124 ?k_170_126) (<= ?k_170_126 ?j_171_125)) (valid_index ?v_0 ?v_1 ?k_170_126)))))))))))
+(assert (forall ((?t_25_178_127 c_type)) (forall ((?p1_177_128 c_unique)) (forall ((?p2_176_129 c_unique)) (let ((?v_0 (type_pointer ?t_25_178_127))) (let ((?v_1 (c_sort ?v_0 ?p1_177_128)) (?v_2 (c_sort ?v_0 ?p2_176_129))) (=> (= (base_addr ?v_1) (base_addr ?v_2)) (= (sub_pointer ?v_1 ?v_2) (- (offset ?v_1) (offset ?v_2))))))))))
+(declare-fun type_memory (c_type c_type) c_type)
+(declare-fun acc (c_ssorted c_ssorted) c_unique)
+(declare-fun upd (c_ssorted c_ssorted c_ssorted) c_unique)
+(assert (forall ((?t_27_212_130 c_type)) (forall ((?t_26_211_131 c_type)) (forall ((?m_210_132 c_unique)) (forall ((?p_209_133 c_unique)) (forall ((?a_208_134 c_unique)) (let ((?v_0 (type_memory ?t_26_211_131 ?t_27_212_130)) (?v_1 (c_sort (type_pointer ?t_27_212_130) ?p_209_133))) (= (acc (c_sort ?v_0 (upd (c_sort ?v_0 ?m_210_132) ?v_1 (c_sort ?t_26_211_131 ?a_208_134))) ?v_1) ?a_208_134))))))))
+(assert (forall ((?t_29_218_135 c_type)) (forall ((?t_28_217_136 c_type)) (forall ((?m_216_137 c_unique)) (forall ((?p1_215_138 c_unique)) (forall ((?p2_214_139 c_unique)) (forall ((?a_213_140 c_unique)) (let ((?v_0 (type_memory ?t_28_217_136 ?t_29_218_135))) (let ((?v_2 (c_sort ?v_0 ?m_216_137)) (?v_1 (type_pointer ?t_29_218_135))) (let ((?v_3 (c_sort ?v_1 ?p2_214_139))) (=> (not (= ?p1_215_138 ?p2_214_139)) (= (acc (c_sort ?v_0 (upd ?v_2 (c_sort ?v_1 ?p1_215_138) (c_sort ?t_28_217_136  [...]
+(assert (not (= c_Boolean_false c_Boolean_true)))
+(declare-fun type_pset (c_type) c_type)
+(declare-fun pset_empty () c_unique)
+(declare-fun pset_singleton (c_ssorted) c_unique)
+(declare-fun pset_star (c_ssorted c_ssorted) c_unique)
+(declare-fun pset_all (c_ssorted) c_unique)
+(declare-fun pset_range (c_ssorted Int Int) c_unique)
+(declare-fun pset_range_left (c_ssorted Int) c_unique)
+(declare-fun pset_range_right (c_ssorted Int) c_unique)
+(declare-fun pset_acc_all (c_ssorted c_ssorted) c_unique)
+(declare-fun pset_acc_range (c_ssorted c_ssorted Int Int) c_unique)
+(declare-fun pset_acc_range_left (c_ssorted c_ssorted Int) c_unique)
+(declare-fun pset_acc_range_right (c_ssorted c_ssorted Int) c_unique)
+(declare-fun pset_union (c_ssorted c_ssorted) c_unique)
+(declare-fun not_in_pset (c_ssorted c_ssorted) Bool)
+(declare-fun not_assigns (c_ssorted c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_31_225_141 c_type)) (forall ((?t_30_224_142 c_type)) (forall ((?a_223_143 c_unique)) (forall ((?m1_222_144 c_unique)) (forall ((?m2_221_145 c_unique)) (forall ((?l_220_146 c_unique)) (let ((?v_0 (type_memory ?t_30_224_142 ?t_31_225_141))) (= (not_assigns (c_sort type_alloc_table ?a_223_143) (c_sort ?v_0 ?m1_222_144) (c_sort ?v_0 ?m2_221_145) (c_sort (type_pset ?t_31_225_141) ?l_220_146)) (forall ((?p_219_147 c_unique)) (let ((?v_1 (c_sort (type_pointer ?t_31_225_141) [...]
+(assert (forall ((?t_32_227_148 c_type)) (forall ((?p_226_149 c_unique)) (not_in_pset (c_sort (type_pointer ?t_32_227_148) ?p_226_149) (c_sort (type_pset ?t_32_227_148) pset_empty)))))
+(assert (forall ((?t_33_230_150 c_type)) (forall ((?p1_229_151 c_unique)) (forall ((?p2_228_152 c_unique)) (let ((?v_0 (type_pointer ?t_33_230_150))) (=> (not (= ?p1_229_151 ?p2_228_152)) (not_in_pset (c_sort ?v_0 ?p1_229_151) (c_sort (type_pset ?t_33_230_150) (pset_singleton (c_sort ?v_0 ?p2_228_152))))))))))
+(assert (forall ((?t_34_233_153 c_type)) (forall ((?p1_232_154 c_unique)) (forall ((?p2_231_155 c_unique)) (let ((?v_0 (type_pointer ?t_34_233_153))) (=> (not_in_pset (c_sort ?v_0 ?p1_232_154) (c_sort (type_pset ?t_34_233_153) (pset_singleton (c_sort ?v_0 ?p2_231_155)))) (not (= ?p1_232_154 ?p2_231_155))))))))
+(assert (forall ((?t_35_235_156 c_type)) (forall ((?p_234_157 c_unique)) (let ((?v_0 (c_sort (type_pointer ?t_35_235_156) ?p_234_157))) (not (not_in_pset ?v_0 (c_sort (type_pset ?t_35_235_156) (pset_singleton ?v_0))))))))
+(assert (forall ((?t_36_239_158 c_type)) (forall ((?l1_238_159 c_unique)) (forall ((?l2_237_160 c_unique)) (forall ((?p_236_161 c_unique)) (let ((?v_0 (c_sort (type_pointer ?t_36_239_158) ?p_236_161)) (?v_1 (type_pset ?t_36_239_158))) (let ((?v_2 (c_sort ?v_1 ?l1_238_159)) (?v_3 (c_sort ?v_1 ?l2_237_160))) (=> (and (not_in_pset ?v_0 ?v_2) (not_in_pset ?v_0 ?v_3)) (not_in_pset ?v_0 (c_sort ?v_1 (pset_union ?v_2 ?v_3)))))))))))
+(assert (forall ((?t_37_243_162 c_type)) (forall ((?l1_242_163 c_unique)) (forall ((?l2_241_164 c_unique)) (forall ((?p_240_165 c_unique)) (let ((?v_1 (c_sort (type_pointer ?t_37_243_162) ?p_240_165)) (?v_0 (type_pset ?t_37_243_162))) (let ((?v_2 (c_sort ?v_0 ?l1_242_163))) (=> (not_in_pset ?v_1 (c_sort ?v_0 (pset_union ?v_2 (c_sort ?v_0 ?l2_241_164)))) (not_in_pset ?v_1 ?v_2)))))))))
+(assert (forall ((?t_38_247_166 c_type)) (forall ((?l1_246_167 c_unique)) (forall ((?l2_245_168 c_unique)) (forall ((?p_244_169 c_unique)) (let ((?v_1 (c_sort (type_pointer ?t_38_247_166) ?p_244_169)) (?v_0 (type_pset ?t_38_247_166))) (let ((?v_2 (c_sort ?v_0 ?l2_245_168))) (=> (not_in_pset ?v_1 (c_sort ?v_0 (pset_union (c_sort ?v_0 ?l1_246_167) ?v_2))) (not_in_pset ?v_1 ?v_2)))))))))
+(assert (forall ((?t_40_253_170 c_type)) (forall ((?t_39_252_171 c_type)) (forall ((?l_251_172 c_unique)) (forall ((?m_250_173 c_unique)) (forall ((?p_249_174 c_unique)) (let ((?v_0 (type_pointer ?t_40_253_170))) (=> (forall ((?p1_248_175 c_unique)) (let ((?v_1 (c_sort (type_pointer ?t_39_252_171) ?p1_248_175))) (=> (= ?p_249_174 (acc (c_sort (type_memory ?v_0 ?t_39_252_171) ?m_250_173) ?v_1)) (not_in_pset ?v_1 (c_sort (type_pset ?t_39_252_171) ?l_251_172))))) (not_in_pset (c_sort ?v_0 ? [...]
+(assert (forall ((?t_42_259_176 c_type)) (forall ((?t_41_258_177 c_type)) (forall ((?l_257_178 c_unique)) (forall ((?m_256_179 c_unique)) (forall ((?p_255_180 c_unique)) (let ((?v_0 (type_pointer ?t_42_259_176))) (=> (not_in_pset (c_sort ?v_0 ?p_255_180) (c_sort (type_pset ?t_42_259_176) (pset_star (c_sort (type_pset ?t_41_258_177) ?l_257_178) (c_sort (type_memory ?v_0 ?t_41_258_177) ?m_256_179)))) (forall ((?p1_254_181 c_unique)) (let ((?v_1 (c_sort (type_pointer ?t_41_258_177) ?p1_254_ [...]
+(assert (forall ((?t_43_263_182 c_type)) (forall ((?p_262_183 c_unique)) (forall ((?l_261_184 c_unique)) (let ((?v_0 (type_pset ?t_43_263_182))) (=> (forall ((?p1_260_185 c_unique)) (let ((?v_1 (type_pointer ?t_43_263_182))) (let ((?v_2 (c_sort ?v_1 ?p1_260_185))) (=> (not (not_in_pset ?v_2 (c_sort ?v_0 ?l_261_184))) (not (= (base_addr (c_sort ?v_1 ?p_262_183)) (base_addr ?v_2))))))) (not_in_pset (c_sort (type_pointer ?t_43_263_182) ?p_262_183) (c_sort ?v_0 (pset_all (c_sort ?v_0 ?l_261_ [...]
+(assert (forall ((?t_44_267_186 c_type)) (forall ((?p_266_187 c_unique)) (forall ((?l_265_188 c_unique)) (let ((?v_0 (type_pset ?t_44_267_186))) (=> (not_in_pset (c_sort (type_pointer ?t_44_267_186) ?p_266_187) (c_sort ?v_0 (pset_all (c_sort ?v_0 ?l_265_188)))) (forall ((?p1_264_189 c_unique)) (let ((?v_1 (type_pointer ?t_44_267_186))) (let ((?v_2 (c_sort ?v_1 ?p1_264_189))) (=> (not (not_in_pset ?v_2 (c_sort ?v_0 ?l_265_188))) (not (= (base_addr (c_sort ?v_1 ?p_266_187)) (base_addr ?v_2 [...]
+(assert (forall ((?t_45_274_190 c_type)) (forall ((?p_273_191 c_unique)) (forall ((?l_272_192 c_unique)) (forall ((?a_271_193 Int)) (forall ((?b_270_194 Int)) (let ((?v_0 (type_pset ?t_45_274_190))) (=> (forall ((?p1_269_195 c_unique)) (or (not_in_pset (c_sort (type_pointer ?t_45_274_190) ?p1_269_195) (c_sort ?v_0 ?l_272_192)) (forall ((?i_268_196 Int)) (=> (and (<= ?a_271_193 ?i_268_196) (<= ?i_268_196 ?b_270_194)) (not (= ?p_273_191 (shift (c_sort (type_pointer ?t_45_274_190) ?p1_269_1 [...]
+(assert (forall ((?t_46_281_197 c_type)) (forall ((?p_280_198 c_unique)) (forall ((?l_279_199 c_unique)) (forall ((?a_278_200 Int)) (forall ((?b_277_201 Int)) (let ((?v_0 (type_pset ?t_46_281_197))) (=> (not_in_pset (c_sort (type_pointer ?t_46_281_197) ?p_280_198) (c_sort ?v_0 (pset_range (c_sort ?v_0 ?l_279_199) ?a_278_200 ?b_277_201))) (forall ((?p1_276_202 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_46_281_197) ?p1_276_202) (c_sort ?v_0 ?l_279_199))) (forall ((?i_275_203 [...]
+(assert (forall ((?t_47_287_204 c_type)) (forall ((?p_286_205 c_unique)) (forall ((?l_285_206 c_unique)) (forall ((?a_284_207 Int)) (let ((?v_0 (type_pset ?t_47_287_204))) (=> (forall ((?p1_283_208 c_unique)) (or (not_in_pset (c_sort (type_pointer ?t_47_287_204) ?p1_283_208) (c_sort ?v_0 ?l_285_206)) (forall ((?i_282_209 Int)) (=> (<= ?i_282_209 ?a_284_207) (not (= ?p_286_205 (shift (c_sort (type_pointer ?t_47_287_204) ?p1_283_208) ?i_282_209))))))) (not_in_pset (c_sort (type_pointer ?t_ [...]
+(assert (forall ((?t_48_293_210 c_type)) (forall ((?p_292_211 c_unique)) (forall ((?l_291_212 c_unique)) (forall ((?a_290_213 Int)) (let ((?v_0 (type_pset ?t_48_293_210))) (=> (not_in_pset (c_sort (type_pointer ?t_48_293_210) ?p_292_211) (c_sort ?v_0 (pset_range_left (c_sort ?v_0 ?l_291_212) ?a_290_213))) (forall ((?p1_289_214 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_48_293_210) ?p1_289_214) (c_sort ?v_0 ?l_291_212))) (forall ((?i_288_215 Int)) (=> (<= ?i_288_215 ?a_290_ [...]
+(assert (forall ((?t_49_299_216 c_type)) (forall ((?p_298_217 c_unique)) (forall ((?l_297_218 c_unique)) (forall ((?a_296_219 Int)) (let ((?v_0 (type_pset ?t_49_299_216))) (=> (forall ((?p1_295_220 c_unique)) (or (not_in_pset (c_sort (type_pointer ?t_49_299_216) ?p1_295_220) (c_sort ?v_0 ?l_297_218)) (forall ((?i_294_221 Int)) (=> (<= ?a_296_219 ?i_294_221) (not (= ?p_298_217 (shift (c_sort (type_pointer ?t_49_299_216) ?p1_295_220) ?i_294_221))))))) (not_in_pset (c_sort (type_pointer ?t_ [...]
+(assert (forall ((?t_50_305_222 c_type)) (forall ((?p_304_223 c_unique)) (forall ((?l_303_224 c_unique)) (forall ((?a_302_225 Int)) (let ((?v_0 (type_pset ?t_50_305_222))) (=> (not_in_pset (c_sort (type_pointer ?t_50_305_222) ?p_304_223) (c_sort ?v_0 (pset_range_right (c_sort ?v_0 ?l_303_224) ?a_302_225))) (forall ((?p1_301_226 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_50_305_222) ?p1_301_226) (c_sort ?v_0 ?l_303_224))) (forall ((?i_300_227 Int)) (=> (<= ?a_302_225 ?i_300 [...]
+(assert (forall ((?t_52_312_228 c_type)) (forall ((?t_51_311_229 c_type)) (forall ((?p_310_230 c_unique)) (forall ((?l_309_231 c_unique)) (forall ((?m_308_232 c_unique)) (let ((?v_0 (type_pointer ?t_51_311_229))) (=> (forall ((?p1_307_233 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_52_312_228) ?p1_307_233) (c_sort (type_pset ?t_52_312_228) ?l_309_231))) (forall ((?i_306_234 Int)) (let ((?v_1 (type_pointer ?t_52_312_228))) (not (= ?p_310_230 (acc (c_sort (type_memory ?v_0 ?t [...]
+(assert (forall ((?t_54_319_235 c_type)) (forall ((?t_53_318_236 c_type)) (forall ((?p_317_237 c_unique)) (forall ((?l_316_238 c_unique)) (forall ((?m_315_239 c_unique)) (let ((?v_0 (type_pointer ?t_53_318_236))) (=> (not_in_pset (c_sort ?v_0 ?p_317_237) (c_sort (type_pset ?t_53_318_236) (pset_acc_all (c_sort (type_pset ?t_54_319_235) ?l_316_238) (c_sort (type_memory ?v_0 ?t_54_319_235) ?m_315_239)))) (forall ((?p1_314_240 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_54_319_ [...]
+(assert (forall ((?t_56_328_242 c_type)) (forall ((?t_55_327_243 c_type)) (forall ((?p_326_244 c_unique)) (forall ((?l_325_245 c_unique)) (forall ((?m_324_246 c_unique)) (forall ((?a_323_247 Int)) (forall ((?b_322_248 Int)) (let ((?v_0 (type_pointer ?t_55_327_243))) (=> (forall ((?p1_321_249 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_56_328_242) ?p1_321_249) (c_sort (type_pset ?t_56_328_242) ?l_325_245))) (forall ((?i_320_250 Int)) (let ((?v_1 (type_pointer ?t_56_328_242)) [...]
+(assert (forall ((?t_58_337_251 c_type)) (forall ((?t_57_336_252 c_type)) (forall ((?p_335_253 c_unique)) (forall ((?l_334_254 c_unique)) (forall ((?m_333_255 c_unique)) (forall ((?a_332_256 Int)) (forall ((?b_331_257 Int)) (let ((?v_0 (type_pointer ?t_57_336_252))) (=> (not_in_pset (c_sort ?v_0 ?p_335_253) (c_sort (type_pset ?t_57_336_252) (pset_acc_range (c_sort (type_pset ?t_58_337_251) ?l_334_254) (c_sort (type_memory ?v_0 ?t_58_337_251) ?m_333_255) ?a_332_256 ?b_331_257))) (forall ( [...]
+(assert (forall ((?t_60_345_260 c_type)) (forall ((?t_59_344_261 c_type)) (forall ((?p_343_262 c_unique)) (forall ((?l_342_263 c_unique)) (forall ((?m_341_264 c_unique)) (forall ((?a_340_265 Int)) (let ((?v_0 (type_pointer ?t_59_344_261))) (=> (forall ((?p1_339_266 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_60_345_260) ?p1_339_266) (c_sort (type_pset ?t_60_345_260) ?l_342_263))) (forall ((?i_338_267 Int)) (let ((?v_1 (type_pointer ?t_60_345_260))) (=> (<= ?i_338_267 ?a_340 [...]
+(assert (forall ((?t_62_353_268 c_type)) (forall ((?t_61_352_269 c_type)) (forall ((?p_351_270 c_unique)) (forall ((?l_350_271 c_unique)) (forall ((?m_349_272 c_unique)) (forall ((?a_348_273 Int)) (let ((?v_0 (type_pointer ?t_61_352_269))) (=> (not_in_pset (c_sort ?v_0 ?p_351_270) (c_sort (type_pset ?t_61_352_269) (pset_acc_range_left (c_sort (type_pset ?t_62_353_268) ?l_350_271) (c_sort (type_memory ?v_0 ?t_62_353_268) ?m_349_272) ?a_348_273))) (forall ((?p1_347_274 c_unique)) (=> (not  [...]
+(assert (forall ((?t_64_361_276 c_type)) (forall ((?t_63_360_277 c_type)) (forall ((?p_359_278 c_unique)) (forall ((?l_358_279 c_unique)) (forall ((?m_357_280 c_unique)) (forall ((?a_356_281 Int)) (let ((?v_0 (type_pointer ?t_63_360_277))) (=> (forall ((?p1_355_282 c_unique)) (=> (not (not_in_pset (c_sort (type_pointer ?t_64_361_276) ?p1_355_282) (c_sort (type_pset ?t_64_361_276) ?l_358_279))) (forall ((?i_354_283 Int)) (let ((?v_1 (type_pointer ?t_64_361_276))) (=> (<= ?a_356_281 ?i_354 [...]
+(assert (forall ((?t_66_369_284 c_type)) (forall ((?t_65_368_285 c_type)) (forall ((?p_367_286 c_unique)) (forall ((?l_366_287 c_unique)) (forall ((?m_365_288 c_unique)) (forall ((?a_364_289 Int)) (let ((?v_0 (type_pointer ?t_65_368_285))) (=> (not_in_pset (c_sort ?v_0 ?p_367_286) (c_sort (type_pset ?t_65_368_285) (pset_acc_range_right (c_sort (type_pset ?t_66_369_284) ?l_366_287) (c_sort (type_memory ?v_0 ?t_66_369_284) ?m_365_288) ?a_364_289))) (forall ((?p1_363_290 c_unique)) (=> (not [...]
+(assert (forall ((?t_68_376_292 c_type)) (forall ((?t_67_375_293 c_type)) (forall ((?a_374_294 c_unique)) (forall ((?l_373_295 c_unique)) (forall ((?m1_372_296 c_unique)) (forall ((?m2_371_297 c_unique)) (forall ((?m3_370_298 c_unique)) (let ((?v_1 (c_sort type_alloc_table ?a_374_294)) (?v_0 (type_memory ?t_68_376_292 ?t_67_375_293))) (let ((?v_4 (c_sort ?v_0 ?m1_372_296)) (?v_2 (c_sort ?v_0 ?m2_371_297)) (?v_3 (c_sort (type_pset ?t_67_375_293) ?l_373_295)) (?v_5 (c_sort ?v_0 ?m3_370_298 [...]
+(assert (forall ((?t_70_381_299 c_type)) (forall ((?t_69_380_300 c_type)) (forall ((?a_379_301 c_unique)) (forall ((?l_378_302 c_unique)) (forall ((?m_377_303 c_unique)) (let ((?v_0 (c_sort (type_memory ?t_70_381_299 ?t_69_380_300) ?m_377_303))) (not_assigns (c_sort type_alloc_table ?a_379_301) ?v_0 ?v_0 (c_sort (type_pset ?t_69_380_300) ?l_378_302)))))))))
+(declare-fun valid_acc (c_ssorted) Bool)
+(assert (forall ((?t_72_386_304 c_type)) (forall ((?t_71_385_305 c_type)) (forall ((?m1_384_306 c_unique)) (= (valid_acc (c_sort (type_memory (type_pointer ?t_71_385_305) ?t_72_386_304) ?m1_384_306)) (forall ((?p_383_307 c_unique)) (forall ((?a_382_308 c_unique)) (let ((?v_1 (type_pointer ?t_71_385_305)) (?v_0 (c_sort type_alloc_table ?a_382_308)) (?v_2 (c_sort (type_pointer ?t_72_386_304) ?p_383_307))) (=> (valid ?v_0 ?v_2) (valid ?v_0 (c_sort ?v_1 (acc (c_sort (type_memory ?v_1 ?t_72_3 [...]
+(declare-fun valid_acc_range (c_ssorted Int) Bool)
+(assert (forall ((?t_74_392_309 c_type)) (forall ((?t_73_391_310 c_type)) (forall ((?m1_390_311 c_unique)) (forall ((?size_389_312 Int)) (= (valid_acc_range (c_sort (type_memory (type_pointer ?t_73_391_310) ?t_74_392_309) ?m1_390_311) ?size_389_312) (forall ((?p_388_313 c_unique)) (forall ((?a_387_314 c_unique)) (let ((?v_1 (type_pointer ?t_73_391_310)) (?v_0 (c_sort type_alloc_table ?a_387_314)) (?v_2 (c_sort (type_pointer ?t_74_392_309) ?p_388_313))) (=> (valid ?v_0 ?v_2) (valid_range  [...]
+(assert (forall ((?t_76_398_315 c_type)) (forall ((?t_75_397_316 c_type)) (forall ((?m1_396_317 c_unique)) (forall ((?size_395_318 Int)) (forall ((?p_394_319 c_unique)) (forall ((?a_393_320 c_unique)) (let ((?v_1 (type_pointer ?t_75_397_316))) (let ((?v_2 (c_sort (type_memory ?v_1 ?t_76_398_315) ?m1_396_317)) (?v_0 (c_sort type_alloc_table ?a_393_320)) (?v_3 (c_sort (type_pointer ?t_76_398_315) ?p_394_319))) (=> (valid_acc_range ?v_2 ?size_395_318) (=> (valid ?v_0 ?v_3) (valid ?v_0 (c_so [...]
+(declare-fun separation1 (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_78_404_321 c_type)) (forall ((?t_77_403_322 c_type)) (forall ((?m1_402_323 c_unique)) (forall ((?m2_401_324 c_unique)) (let ((?v_0 (type_memory (type_pointer ?t_77_403_322) ?t_78_404_321))) (= (separation1 (c_sort ?v_0 ?m1_402_323) (c_sort ?v_0 ?m2_401_324)) (forall ((?p_400_325 c_unique)) (forall ((?a_399_326 c_unique)) (let ((?v_1 (type_pointer ?t_77_403_322)) (?v_2 (c_sort (type_pointer ?t_78_404_321) ?p_400_325))) (=> (valid (c_sort type_alloc_table ?a_399_326) ? [...]
+(declare-fun separation1_range1 (c_ssorted c_ssorted Int) Bool)
+(assert (forall ((?t_80_412_327 c_type)) (forall ((?t_79_411_328 c_type)) (forall ((?m1_410_329 c_unique)) (forall ((?m2_409_330 c_unique)) (forall ((?size_408_331 Int)) (let ((?v_0 (type_memory (type_pointer ?t_79_411_328) ?t_80_412_327))) (= (separation1_range1 (c_sort ?v_0 ?m1_410_329) (c_sort ?v_0 ?m2_409_330) ?size_408_331) (forall ((?p_407_332 c_unique)) (forall ((?a_406_333 c_unique)) (=> (valid (c_sort type_alloc_table ?a_406_333) (c_sort (type_pointer ?t_80_412_327) ?p_407_332)) [...]
+(declare-fun separation1_range (c_ssorted Int) Bool)
+(assert (forall ((?t_82_420_335 c_type)) (forall ((?t_81_419_336 c_type)) (forall ((?m_418_337 c_unique)) (forall ((?size_417_338 Int)) (= (separation1_range (c_sort (type_memory (type_pointer ?t_81_419_336) ?t_82_420_335) ?m_418_337) ?size_417_338) (forall ((?p_416_339 c_unique)) (forall ((?a_415_340 c_unique)) (=> (valid (c_sort type_alloc_table ?a_415_340) (c_sort (type_pointer ?t_82_420_335) ?p_416_339)) (forall ((?i1_414_341 Int)) (forall ((?i2_413_342 Int)) (let ((?v_0 (type_pointe [...]
+(declare-fun separation2 (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_84_426_343 c_type)) (forall ((?t_83_425_344 c_type)) (forall ((?m1_424_345 c_unique)) (forall ((?m2_423_346 c_unique)) (let ((?v_0 (type_memory (type_pointer ?t_83_425_344) ?t_84_426_343))) (= (separation2 (c_sort ?v_0 ?m1_424_345) (c_sort ?v_0 ?m2_423_346)) (forall ((?p1_422_347 c_unique)) (forall ((?p2_421_348 c_unique)) (let ((?v_1 (type_pointer ?t_83_425_344)) (?v_2 (type_pointer ?t_84_426_343))) (=> (not (= ?p1_422_347 ?p2_421_348)) (not (= (base_addr (c_sort ?v [...]
+(declare-fun separation2_range1 (c_ssorted c_ssorted Int) Bool)
+(assert (forall ((?t_86_435_349 c_type)) (forall ((?t_85_434_350 c_type)) (forall ((?m1_433_351 c_unique)) (forall ((?m2_432_352 c_unique)) (forall ((?size_431_353 Int)) (let ((?v_0 (type_memory (type_pointer ?t_85_434_350) ?t_86_435_349))) (= (separation2_range1 (c_sort ?v_0 ?m1_433_351) (c_sort ?v_0 ?m2_432_352) ?size_431_353) (forall ((?p_430_354 c_unique)) (forall ((?q_429_355 c_unique)) (forall ((?a_428_356 c_unique)) (forall ((?i_427_357 Int)) (let ((?v_1 (type_pointer ?t_85_434_35 [...]
+(declare-fun on_heap (c_ssorted c_ssorted) Bool)
+(declare-fun on_stack (c_ssorted c_ssorted) Bool)
+(declare-fun fresh (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_87_438_358 c_type)) (forall ((?a_437_359 c_unique)) (forall ((?p_436_360 c_unique)) (let ((?v_0 (c_sort type_alloc_table ?a_437_359)) (?v_1 (c_sort (type_pointer ?t_87_438_358) ?p_436_360))) (=> (fresh ?v_0 ?v_1) (not (valid ?v_0 ?v_1))))))))
+(assert (forall ((?t_88_442_361 c_type)) (forall ((?a_441_362 c_unique)) (forall ((?p_440_363 c_unique)) (=> (fresh (c_sort type_alloc_table ?a_441_362) (c_sort (type_pointer ?t_88_442_361) ?p_440_363)) (forall ((?i_439_364 Int)) (let ((?v_0 (type_pointer ?t_88_442_361))) (not (valid (c_sort type_alloc_table ?a_441_362) (c_sort ?v_0 (shift (c_sort ?v_0 ?p_440_363) ?i_439_364)))))))))))
+(declare-fun alloc_extends (c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_89_446_365 c_type)) (forall ((?a1_445_366 c_unique)) (forall ((?a2_444_367 c_unique)) (=> (alloc_extends (c_sort type_alloc_table ?a1_445_366) (c_sort type_alloc_table ?a2_444_367)) (forall ((?q_443_368 c_unique)) (let ((?v_0 (c_sort (type_pointer ?t_89_446_365) ?q_443_368))) (=> (valid (c_sort type_alloc_table ?a1_445_366) ?v_0) (valid (c_sort type_alloc_table ?a2_444_367) ?v_0)))))))))
+(assert (forall ((?t_90_451_369 c_type)) (forall ((?a1_450_370 c_unique)) (forall ((?a2_449_371 c_unique)) (=> (alloc_extends (c_sort type_alloc_table ?a1_450_370) (c_sort type_alloc_table ?a2_449_371)) (forall ((?q_448_372 c_unique)) (forall ((?i_447_373 Int)) (let ((?v_0 (c_sort (type_pointer ?t_90_451_369) ?q_448_372))) (=> (valid_index (c_sort type_alloc_table ?a1_450_370) ?v_0 ?i_447_373) (valid_index (c_sort type_alloc_table ?a2_449_371) ?v_0 ?i_447_373))))))))))
+(assert (forall ((?t_91_457_374 c_type)) (forall ((?a1_456_375 c_unique)) (forall ((?a2_455_376 c_unique)) (=> (alloc_extends (c_sort type_alloc_table ?a1_456_375) (c_sort type_alloc_table ?a2_455_376)) (forall ((?q_454_377 c_unique)) (forall ((?i_453_378 Int)) (forall ((?j_452_379 Int)) (let ((?v_0 (c_sort (type_pointer ?t_91_457_374) ?q_454_377))) (=> (valid_range (c_sort type_alloc_table ?a1_456_375) ?v_0 ?i_453_378 ?j_452_379) (valid_range (c_sort type_alloc_table ?a2_455_376) ?v_0 ? [...]
+(assert (forall ((?a_458_380 c_unique)) (let ((?v_0 (c_sort type_alloc_table ?a_458_380))) (alloc_extends ?v_0 ?v_0))))
+(assert (forall ((?a1_461_381 c_unique)) (forall ((?a2_460_382 c_unique)) (forall ((?a3_459_383 c_unique)) (let ((?v_1 (c_sort type_alloc_table ?a1_461_381)) (?v_0 (c_sort type_alloc_table ?a2_460_382)) (?v_2 (c_sort type_alloc_table ?a3_459_383))) (=> (alloc_extends ?v_1 ?v_0) (=> (alloc_extends ?v_0 ?v_2) (alloc_extends ?v_1 ?v_2))))))))
+(declare-fun free_stack (c_ssorted c_ssorted c_ssorted) Bool)
+(assert (forall ((?t_92_466_384 c_type)) (forall ((?a1_465_385 c_unique)) (forall ((?a2_464_386 c_unique)) (forall ((?a3_463_387 c_unique)) (=> (free_stack (c_sort type_alloc_table ?a1_465_385) (c_sort type_alloc_table ?a2_464_386) (c_sort type_alloc_table ?a3_463_387)) (forall ((?p_462_388 c_unique)) (let ((?v_0 (c_sort type_alloc_table ?a2_464_386)) (?v_1 (c_sort (type_pointer ?t_92_466_384) ?p_462_388))) (=> (valid ?v_0 ?v_1) (=> (on_heap ?v_0 ?v_1) (valid (c_sort type_alloc_table ?a3 [...]
+(assert (forall ((?t_93_471_389 c_type)) (forall ((?a1_470_390 c_unique)) (forall ((?a2_469_391 c_unique)) (forall ((?a3_468_392 c_unique)) (=> (free_stack (c_sort type_alloc_table ?a1_470_390) (c_sort type_alloc_table ?a2_469_391) (c_sort type_alloc_table ?a3_468_392)) (forall ((?p_467_393 c_unique)) (let ((?v_0 (c_sort type_alloc_table ?a1_470_390)) (?v_1 (c_sort (type_pointer ?t_93_471_389) ?p_467_393))) (=> (valid ?v_0 ?v_1) (=> (on_stack ?v_0 ?v_1) (valid (c_sort type_alloc_table ?a [...]
+(declare-fun null () c_unique)
+(assert (forall ((?t_94_475_394 c_type)) (forall ((?a_474_395 c_unique)) (not (valid (c_sort type_alloc_table ?a_474_395) (c_sort (type_pointer ?t_94_475_394) null))))))
+(declare-fun type_global () c_type)
+(assert (= (% 2800 14) 0))
+(assert (forall ((?c_478_396 Int)) (let ((?v_0 (* ?c_478_396 2))) (=> (> ?v_0 0) (> ?v_0 1)))))
+(assert (forall ((?c_479_397 Int)) (=> (= (% ?c_479_397 14) 0) (= (% (- ?c_479_397 14) 14) 0))))
+(assert (forall ((?c_480_398 Int)) (=> (= (% ?c_480_398 14) 0) (=> (> ?c_480_398 0) (>= ?c_480_398 14)))))
+(assert (= (whydivide 10000 5) 2000))
+(assert (not (forall ((?a Int)) (forall ((?alloc c_unique)) (forall ((?b Int)) (forall ((?c Int)) (forall ((?f c_unique)) (=> (and (and (and (= ?b 0) (= ?c 2800)) (= ?a 10000)) (valid_range (c_sort type_alloc_table ?alloc) (c_sort (type_pointer type_global) ?f) 0 2800)) (forall ((?b0 Int)) (forall ((?intM_global0 c_unique)) (=> (and (and (<= 0 ?b0) (<= ?b0 2800)) (forall ((?i_0_481_408 Int)) (let ((?v_0 (type_pointer type_global))) (=> (and (<= 0 ?i_0_481_408) (< ?i_0_481_408 ?b0)) (= (s [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/quantifiers/stream-x2014-09-18-unsat.smt2 b/test/regress/regress0/quantifiers/stream-x2014-09-18-unsat.smt2
new file mode 100644
index 0000000..615d43f
--- /dev/null
+++ b/test/regress/regress0/quantifiers/stream-x2014-09-18-unsat.smt2
@@ -0,0 +1,183 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-sort A$ 0)
+(declare-sort B$ 0)
+(declare-sort A_set$ 0)
+(declare-sort B_set$ 0)
+(declare-sort A_a_fun$ 0)
+(declare-sort A_b_fun$ 0)
+(declare-sort B_a_fun$ 0)
+(declare-sort B_b_fun$ 0)
+(declare-sort A_stream_set$ 0)
+(declare-sort B_stream_set$ 0)
+(declare-sort A_a_stream_fun$ 0)
+(declare-sort A_b_stream_fun$ 0)
+(declare-sort A_stream_a_fun$ 0)
+(declare-sort A_stream_b_fun$ 0)
+(declare-sort B_a_stream_fun$ 0)
+(declare-sort B_b_stream_fun$ 0)
+(declare-sort B_stream_a_fun$ 0)
+(declare-sort B_stream_b_fun$ 0)
+(declare-sort A_stream_stream_set$ 0)
+(declare-sort B_stream_stream_set$ 0)
+(declare-sort A_stream_a_stream_fun$ 0)
+(declare-sort B_stream_b_stream_fun$ 0)
+(declare-sort A_stream_stream_a_stream_stream_fun$ 0)
+(declare-sort B_stream_stream_b_stream_stream_fun$ 0)
+(declare-sort A_stream_stream_stream_a_stream_stream_stream_fun$ 0)
+(declare-sort B_stream_stream_stream_b_stream_stream_stream_fun$ 0)
+(declare-datatypes () ((Nat$ (zero$) (suc$ (pred$ Nat$)))))
+(declare-codatatypes () ((A_stream$ (sCons$ (shd$ A$) (stl$ A_stream$)))
+  (B_stream$ (sCons$a (shd$a B$) (stl$a B_stream$)))
+  (B_stream_stream$ (sCons$b (shd$b B_stream$) (stl$b B_stream_stream$)))
+  (B_stream_stream_stream$ (sCons$c (shd$c B_stream_stream$) (stl$c B_stream_stream_stream$)))
+  (A_stream_stream$ (sCons$d (shd$d A_stream$) (stl$d A_stream_stream$)))
+  (A_stream_stream_stream$ (sCons$e (shd$e A_stream_stream$) (stl$e A_stream_stream_stream$)))))
+(declare-fun f$ () B_a_fun$)
+(declare-fun x$ () B$)
+(declare-fun id$ () B_b_fun$)
+(declare-fun id$a () A_a_fun$)
+(declare-fun id$b () B_stream_stream_b_stream_stream_fun$)
+(declare-fun id$c () A_stream_stream_a_stream_stream_fun$)
+(declare-fun id$d () A_stream_a_stream_fun$)
+(declare-fun id$e () B_stream_b_stream_fun$)
+(declare-fun id$f () B_stream_stream_stream_b_stream_stream_stream_fun$)
+(declare-fun id$g () A_stream_stream_stream_a_stream_stream_stream_fun$)
+(declare-fun smap$ (B_a_fun$ B_stream$) A_stream$)
+(declare-fun snth$ (B_stream_stream$ Nat$) B_stream$)
+(declare-fun sdrop$ (Nat$ B_stream_stream$) B_stream_stream$)
+(declare-fun smap$a (B_b_fun$) B_stream_b_stream_fun$)
+(declare-fun smap$b (A_a_fun$) A_stream_a_stream_fun$)
+(declare-fun smap$c (B_stream_stream_b_stream_stream_fun$) B_stream_stream_stream_b_stream_stream_stream_fun$)
+(declare-fun smap$d (A_stream_stream_a_stream_stream_fun$) A_stream_stream_stream_a_stream_stream_stream_fun$)
+(declare-fun smap$e (A_stream_a_stream_fun$) A_stream_stream_a_stream_stream_fun$)
+(declare-fun smap$f (B_stream_b_stream_fun$) B_stream_stream_b_stream_stream_fun$)
+(declare-fun smap$g (B_b_stream_fun$ B_stream$) B_stream_stream$)
+(declare-fun smap$h (B_a_stream_fun$ B_stream$) A_stream_stream$)
+(declare-fun smap$i (A_b_stream_fun$ A_stream$) B_stream_stream$)
+(declare-fun smap$j (A_a_stream_fun$ A_stream$) A_stream_stream$)
+(declare-fun smap$k (A_b_fun$ A_stream$) B_stream$)
+(declare-fun smap$l (B_stream_b_fun$ B_stream_stream$) B_stream$)
+(declare-fun smap$m (A_stream_b_fun$ A_stream_stream$) B_stream$)
+(declare-fun smap$n (B_stream_a_fun$ B_stream_stream$) A_stream$)
+(declare-fun smap$o (A_stream_a_fun$ A_stream_stream$) A_stream$)
+(declare-fun snth$a (B_stream$ Nat$) B$)
+(declare-fun snth$b (A_stream_stream$ Nat$) A_stream$)
+(declare-fun snth$c (A_stream$ Nat$) A$)
+(declare-fun member$ (B_stream$ B_stream_set$) Bool)
+(declare-fun sdrop$a (Nat$ B_stream$) B_stream$)
+(declare-fun sdrop$b (Nat$ A_stream_stream$) A_stream_stream$)
+(declare-fun sdrop$c (Nat$ A_stream$) A_stream$)
+(declare-fun fun_app$ (B_b_stream_fun$ B$) B_stream$)
+(declare-fun member$a (B$ B_set$) Bool)
+(declare-fun member$b (A$ A_set$) Bool)
+(declare-fun member$c (A_stream$ A_stream_set$) Bool)
+(declare-fun member$d (B_stream_stream$ B_stream_stream_set$) Bool)
+(declare-fun member$e (A_stream_stream$ A_stream_stream_set$) Bool)
+(declare-fun streams$ (B_set$) B_stream_set$)
+(declare-fun fun_app$a (A_a_stream_fun$ A$) A_stream$)
+(declare-fun fun_app$b (B_a_fun$ B$) A$)
+(declare-fun fun_app$c (B_stream_b_stream_fun$ B_stream$) B_stream$)
+(declare-fun fun_app$d (B_b_fun$ B$) B$)
+(declare-fun fun_app$e (A_stream_a_stream_fun$ A_stream$) A_stream$)
+(declare-fun fun_app$f (A_a_fun$ A$) A$)
+(declare-fun fun_app$g (B_stream_stream_stream_b_stream_stream_stream_fun$ B_stream_stream_stream$) B_stream_stream_stream$)
+(declare-fun fun_app$h (A_stream_stream_stream_a_stream_stream_stream_fun$ A_stream_stream_stream$) A_stream_stream_stream$)
+(declare-fun fun_app$i (A_stream_stream_a_stream_stream_fun$ A_stream_stream$) A_stream_stream$)
+(declare-fun fun_app$j (B_stream_stream_b_stream_stream_fun$ B_stream_stream$) B_stream_stream$)
+(declare-fun fun_app$k (B_a_stream_fun$ B$) A_stream$)
+(declare-fun fun_app$l (A_b_stream_fun$ A$) B_stream$)
+(declare-fun fun_app$m (A_b_fun$ A$) B$)
+(declare-fun fun_app$n (B_stream_b_fun$ B_stream$) B$)
+(declare-fun fun_app$o (A_stream_b_fun$ A_stream$) B$)
+(declare-fun fun_app$p (B_stream_a_fun$ B_stream$) A$)
+(declare-fun fun_app$q (A_stream_a_fun$ A_stream$) A$)
+(declare-fun siterate$ (B_b_fun$) B_b_stream_fun$)
+(declare-fun streams$a (A_set$) A_stream_set$)
+(declare-fun streams$b (B_stream_set$) B_stream_stream_set$)
+(declare-fun streams$c (A_stream_set$) A_stream_stream_set$)
+(declare-fun siterate$a (A_a_fun$) A_a_stream_fun$)
+(assert (! (not (= (smap$ f$ (fun_app$ (siterate$ id$) x$)) (fun_app$a (siterate$a id$a) (fun_app$b f$ x$)))) :named a0))
+(assert (! (forall ((?v0 B_b_fun$) (?v1 B$)) (= (fun_app$c (smap$a ?v0) (fun_app$ (siterate$ ?v0) ?v1)) (fun_app$ (siterate$ ?v0) (fun_app$d ?v0 ?v1)))) :named a1))
+(assert (! (forall ((?v0 A_a_fun$) (?v1 A$)) (= (fun_app$e (smap$b ?v0) (fun_app$a (siterate$a ?v0) ?v1)) (fun_app$a (siterate$a ?v0) (fun_app$f ?v0 ?v1)))) :named a2))
+(assert (! (forall ((?v0 B_stream_stream_stream$)) (= (fun_app$g (smap$c id$b) ?v0) ?v0)) :named a3))
+(assert (! (forall ((?v0 A_stream_stream_stream$)) (= (fun_app$h (smap$d id$c) ?v0) ?v0)) :named a4))
+(assert (! (forall ((?v0 A_stream_stream$)) (= (fun_app$i (smap$e id$d) ?v0) ?v0)) :named a5))
+(assert (! (forall ((?v0 B_stream_stream$)) (= (fun_app$j (smap$f id$e) ?v0) ?v0)) :named a6))
+(assert (! (forall ((?v0 B_stream$)) (= (fun_app$c (smap$a id$) ?v0) ?v0)) :named a7))
+(assert (! (forall ((?v0 A_stream$)) (= (fun_app$e (smap$b id$a) ?v0) ?v0)) :named a8))
+(assert (! (= (smap$c id$b) id$f) :named a9))
+(assert (! (= (smap$d id$c) id$g) :named a10))
+(assert (! (= (smap$e id$d) id$c) :named a11))
+(assert (! (= (smap$f id$e) id$b) :named a12))
+(assert (! (= (smap$a id$) id$e) :named a13))
+(assert (! (= (smap$b id$a) id$d) :named a14))
+(assert (! (forall ((?v0 B_stream_stream$)) (! (= (fun_app$j id$b ?v0) ?v0) :pattern ((fun_app$j id$b ?v0)))) :named a15))
+(assert (! (forall ((?v0 A_stream_stream$)) (! (= (fun_app$i id$c ?v0) ?v0) :pattern ((fun_app$i id$c ?v0)))) :named a16))
+(assert (! (forall ((?v0 A_stream$)) (! (= (fun_app$e id$d ?v0) ?v0) :pattern ((fun_app$e id$d ?v0)))) :named a17))
+(assert (! (forall ((?v0 B_stream$)) (! (= (fun_app$c id$e ?v0) ?v0) :pattern ((fun_app$c id$e ?v0)))) :named a18))
+(assert (! (forall ((?v0 B$)) (! (= (fun_app$d id$ ?v0) ?v0) :pattern ((fun_app$d id$ ?v0)))) :named a19))
+(assert (! (forall ((?v0 A$)) (! (= (fun_app$f id$a ?v0) ?v0) :pattern ((fun_app$f id$a ?v0)))) :named a20))
+(assert (! (forall ((?v0 B_stream_stream$)) (! (= (fun_app$j id$b ?v0) ?v0) :pattern ((fun_app$j id$b ?v0)))) :named a21))
+(assert (! (forall ((?v0 A_stream_stream$)) (! (= (fun_app$i id$c ?v0) ?v0) :pattern ((fun_app$i id$c ?v0)))) :named a22))
+(assert (! (forall ((?v0 A_stream$)) (! (= (fun_app$e id$d ?v0) ?v0) :pattern ((fun_app$e id$d ?v0)))) :named a23))
+(assert (! (forall ((?v0 B_stream$)) (! (= (fun_app$c id$e ?v0) ?v0) :pattern ((fun_app$c id$e ?v0)))) :named a24))
+(assert (! (forall ((?v0 B$)) (! (= (fun_app$d id$ ?v0) ?v0) :pattern ((fun_app$d id$ ?v0)))) :named a25))
+(assert (! (forall ((?v0 A$)) (! (= (fun_app$f id$a ?v0) ?v0) :pattern ((fun_app$f id$a ?v0)))) :named a26))
+(assert (! (forall ((?v0 B_b_stream_fun$) (?v1 B_stream$) (?v2 Nat$)) (= (snth$ (smap$g ?v0 ?v1) ?v2) (fun_app$ ?v0 (snth$a ?v1 ?v2)))) :named a27))
+(assert (! (forall ((?v0 B_a_stream_fun$) (?v1 B_stream$) (?v2 Nat$)) (= (snth$b (smap$h ?v0 ?v1) ?v2) (fun_app$k ?v0 (snth$a ?v1 ?v2)))) :named a28))
+(assert (! (forall ((?v0 A_b_stream_fun$) (?v1 A_stream$) (?v2 Nat$)) (= (snth$ (smap$i ?v0 ?v1) ?v2) (fun_app$l ?v0 (snth$c ?v1 ?v2)))) :named a29))
+(assert (! (forall ((?v0 A_a_stream_fun$) (?v1 A_stream$) (?v2 Nat$)) (= (snth$b (smap$j ?v0 ?v1) ?v2) (fun_app$a ?v0 (snth$c ?v1 ?v2)))) :named a30))
+(assert (! (forall ((?v0 A_b_fun$) (?v1 A_stream$) (?v2 Nat$)) (= (snth$a (smap$k ?v0 ?v1) ?v2) (fun_app$m ?v0 (snth$c ?v1 ?v2)))) :named a31))
+(assert (! (forall ((?v0 A_a_fun$) (?v1 A_stream$) (?v2 Nat$)) (= (snth$c (fun_app$e (smap$b ?v0) ?v1) ?v2) (fun_app$f ?v0 (snth$c ?v1 ?v2)))) :named a32))
+(assert (! (forall ((?v0 B_b_fun$) (?v1 B_stream$) (?v2 Nat$)) (= (snth$a (fun_app$c (smap$a ?v0) ?v1) ?v2) (fun_app$d ?v0 (snth$a ?v1 ?v2)))) :named a33))
+(assert (! (forall ((?v0 B_a_fun$) (?v1 B_stream$) (?v2 Nat$)) (= (snth$c (smap$ ?v0 ?v1) ?v2) (fun_app$b ?v0 (snth$a ?v1 ?v2)))) :named a34))
+(assert (! (forall ((?v0 Nat$) (?v1 B_b_stream_fun$) (?v2 B_stream$)) (= (sdrop$ ?v0 (smap$g ?v1 ?v2)) (smap$g ?v1 (sdrop$a ?v0 ?v2)))) :named a35))
+(assert (! (forall ((?v0 Nat$) (?v1 B_a_stream_fun$) (?v2 B_stream$)) (= (sdrop$b ?v0 (smap$h ?v1 ?v2)) (smap$h ?v1 (sdrop$a ?v0 ?v2)))) :named a36))
+(assert (! (forall ((?v0 Nat$) (?v1 A_b_stream_fun$) (?v2 A_stream$)) (= (sdrop$ ?v0 (smap$i ?v1 ?v2)) (smap$i ?v1 (sdrop$c ?v0 ?v2)))) :named a37))
+(assert (! (forall ((?v0 Nat$) (?v1 A_a_stream_fun$) (?v2 A_stream$)) (= (sdrop$b ?v0 (smap$j ?v1 ?v2)) (smap$j ?v1 (sdrop$c ?v0 ?v2)))) :named a38))
+(assert (! (forall ((?v0 Nat$) (?v1 A_b_fun$) (?v2 A_stream$)) (= (sdrop$a ?v0 (smap$k ?v1 ?v2)) (smap$k ?v1 (sdrop$c ?v0 ?v2)))) :named a39))
+(assert (! (forall ((?v0 Nat$) (?v1 A_a_fun$) (?v2 A_stream$)) (= (sdrop$c ?v0 (fun_app$e (smap$b ?v1) ?v2)) (fun_app$e (smap$b ?v1) (sdrop$c ?v0 ?v2)))) :named a40))
+(assert (! (forall ((?v0 Nat$) (?v1 B_b_fun$) (?v2 B_stream$)) (= (sdrop$a ?v0 (fun_app$c (smap$a ?v1) ?v2)) (fun_app$c (smap$a ?v1) (sdrop$a ?v0 ?v2)))) :named a41))
+(assert (! (forall ((?v0 Nat$) (?v1 B_a_fun$) (?v2 B_stream$)) (= (sdrop$c ?v0 (smap$ ?v1 ?v2)) (smap$ ?v1 (sdrop$a ?v0 ?v2)))) :named a42))
+(assert (! (forall ((?v0 B_b_stream_fun$) (?v1 B_stream$)) (= (shd$b (smap$g ?v0 ?v1)) (fun_app$ ?v0 (shd$a ?v1)))) :named a43))
+(assert (! (forall ((?v0 B_a_stream_fun$) (?v1 B_stream$)) (= (shd$d (smap$h ?v0 ?v1)) (fun_app$k ?v0 (shd$a ?v1)))) :named a44))
+(assert (! (forall ((?v0 A_b_stream_fun$) (?v1 A_stream$)) (= (shd$b (smap$i ?v0 ?v1)) (fun_app$l ?v0 (shd$ ?v1)))) :named a45))
+(assert (! (forall ((?v0 A_a_stream_fun$) (?v1 A_stream$)) (= (shd$d (smap$j ?v0 ?v1)) (fun_app$a ?v0 (shd$ ?v1)))) :named a46))
+(assert (! (forall ((?v0 A_b_fun$) (?v1 A_stream$)) (= (shd$a (smap$k ?v0 ?v1)) (fun_app$m ?v0 (shd$ ?v1)))) :named a47))
+(assert (! (forall ((?v0 A_a_fun$) (?v1 A_stream$)) (= (shd$ (fun_app$e (smap$b ?v0) ?v1)) (fun_app$f ?v0 (shd$ ?v1)))) :named a48))
+(assert (! (forall ((?v0 B_b_fun$) (?v1 B_stream$)) (= (shd$a (fun_app$c (smap$a ?v0) ?v1)) (fun_app$d ?v0 (shd$a ?v1)))) :named a49))
+(assert (! (forall ((?v0 B_a_fun$) (?v1 B_stream$)) (= (shd$ (smap$ ?v0 ?v1)) (fun_app$b ?v0 (shd$a ?v1)))) :named a50))
+(assert (! (forall ((?v0 B_b_stream_fun$) (?v1 B_stream$)) (= (stl$b (smap$g ?v0 ?v1)) (smap$g ?v0 (stl$a ?v1)))) :named a51))
+(assert (! (forall ((?v0 B_a_stream_fun$) (?v1 B_stream$)) (= (stl$d (smap$h ?v0 ?v1)) (smap$h ?v0 (stl$a ?v1)))) :named a52))
+(assert (! (forall ((?v0 A_b_stream_fun$) (?v1 A_stream$)) (= (stl$b (smap$i ?v0 ?v1)) (smap$i ?v0 (stl$ ?v1)))) :named a53))
+(assert (! (forall ((?v0 A_a_stream_fun$) (?v1 A_stream$)) (= (stl$d (smap$j ?v0 ?v1)) (smap$j ?v0 (stl$ ?v1)))) :named a54))
+(assert (! (forall ((?v0 A_b_fun$) (?v1 A_stream$)) (= (stl$a (smap$k ?v0 ?v1)) (smap$k ?v0 (stl$ ?v1)))) :named a55))
+(assert (! (forall ((?v0 A_a_fun$) (?v1 A_stream$)) (= (stl$ (fun_app$e (smap$b ?v0) ?v1)) (fun_app$e (smap$b ?v0) (stl$ ?v1)))) :named a56))
+(assert (! (forall ((?v0 B_b_fun$) (?v1 B_stream$)) (= (stl$a (fun_app$c (smap$a ?v0) ?v1)) (fun_app$c (smap$a ?v0) (stl$a ?v1)))) :named a57))
+(assert (! (forall ((?v0 B_a_fun$) (?v1 B_stream$)) (= (stl$ (smap$ ?v0 ?v1)) (smap$ ?v0 (stl$a ?v1)))) :named a58))
+(assert (! (forall ((?v0 B_b_stream_fun$) (?v1 B_stream$) (?v2 B_stream_stream$)) (= (= (smap$g ?v0 ?v1) ?v2) (forall ((?v3 Nat$)) (= (fun_app$ ?v0 (snth$a ?v1 ?v3)) (snth$ ?v2 ?v3))))) :named a59))
+(assert (! (forall ((?v0 B_a_stream_fun$) (?v1 B_stream$) (?v2 A_stream_stream$)) (= (= (smap$h ?v0 ?v1) ?v2) (forall ((?v3 Nat$)) (= (fun_app$k ?v0 (snth$a ?v1 ?v3)) (snth$b ?v2 ?v3))))) :named a60))
+(assert (! (forall ((?v0 A_b_stream_fun$) (?v1 A_stream$) (?v2 B_stream_stream$)) (= (= (smap$i ?v0 ?v1) ?v2) (forall ((?v3 Nat$)) (= (fun_app$l ?v0 (snth$c ?v1 ?v3)) (snth$ ?v2 ?v3))))) :named a61))
+(assert (! (forall ((?v0 A_a_stream_fun$) (?v1 A_stream$) (?v2 A_stream_stream$)) (= (= (smap$j ?v0 ?v1) ?v2) (forall ((?v3 Nat$)) (= (fun_app$a ?v0 (snth$c ?v1 ?v3)) (snth$b ?v2 ?v3))))) :named a62))
+(assert (! (forall ((?v0 A_b_fun$) (?v1 A_stream$) (?v2 B_stream$)) (= (= (smap$k ?v0 ?v1) ?v2) (forall ((?v3 Nat$)) (= (fun_app$m ?v0 (snth$c ?v1 ?v3)) (snth$a ?v2 ?v3))))) :named a63))
+(assert (! (forall ((?v0 A_a_fun$) (?v1 A_stream$) (?v2 A_stream$)) (= (= (fun_app$e (smap$b ?v0) ?v1) ?v2) (forall ((?v3 Nat$)) (= (fun_app$f ?v0 (snth$c ?v1 ?v3)) (snth$c ?v2 ?v3))))) :named a64))
+(assert (! (forall ((?v0 B_b_fun$) (?v1 B_stream$) (?v2 B_stream$)) (= (= (fun_app$c (smap$a ?v0) ?v1) ?v2) (forall ((?v3 Nat$)) (= (fun_app$d ?v0 (snth$a ?v1 ?v3)) (snth$a ?v2 ?v3))))) :named a65))
+(assert (! (forall ((?v0 B_a_fun$) (?v1 B_stream$) (?v2 A_stream$)) (= (= (smap$ ?v0 ?v1) ?v2) (forall ((?v3 Nat$)) (= (fun_app$b ?v0 (snth$a ?v1 ?v3)) (snth$c ?v2 ?v3))))) :named a66))
+(assert (! (forall ((?v0 B_stream$) (?v1 B_set$) (?v2 B_a_fun$) (?v3 A_set$)) (=> (and (member$ ?v0 (streams$ ?v1)) (forall ((?v4 B$)) (=> (member$a ?v4 ?v1) (member$b (fun_app$b ?v2 ?v4) ?v3)))) (member$c (smap$ ?v2 ?v0) (streams$a ?v3)))) :named a67))
+(assert (! (forall ((?v0 A_stream$) (?v1 A_set$) (?v2 A_b_fun$) (?v3 B_set$)) (=> (and (member$c ?v0 (streams$a ?v1)) (forall ((?v4 A$)) (=> (member$b ?v4 ?v1) (member$a (fun_app$m ?v2 ?v4) ?v3)))) (member$ (smap$k ?v2 ?v0) (streams$ ?v3)))) :named a68))
+(assert (! (forall ((?v0 A_stream$) (?v1 A_set$) (?v2 A_a_fun$) (?v3 A_set$)) (=> (and (member$c ?v0 (streams$a ?v1)) (forall ((?v4 A$)) (=> (member$b ?v4 ?v1) (member$b (fun_app$f ?v2 ?v4) ?v3)))) (member$c (fun_app$e (smap$b ?v2) ?v0) (streams$a ?v3)))) :named a69))
+(assert (! (forall ((?v0 B_stream$) (?v1 B_set$) (?v2 B_b_fun$) (?v3 B_set$)) (=> (and (member$ ?v0 (streams$ ?v1)) (forall ((?v4 B$)) (=> (member$a ?v4 ?v1) (member$a (fun_app$d ?v2 ?v4) ?v3)))) (member$ (fun_app$c (smap$a ?v2) ?v0) (streams$ ?v3)))) :named a70))
+(assert (! (forall ((?v0 B_stream_stream$) (?v1 B_stream_set$) (?v2 B_stream_b_fun$) (?v3 B_set$)) (=> (and (member$d ?v0 (streams$b ?v1)) (forall ((?v4 B_stream$)) (=> (member$ ?v4 ?v1) (member$a (fun_app$n ?v2 ?v4) ?v3)))) (member$ (smap$l ?v2 ?v0) (streams$ ?v3)))) :named a71))
+(assert (! (forall ((?v0 A_stream_stream$) (?v1 A_stream_set$) (?v2 A_stream_b_fun$) (?v3 B_set$)) (=> (and (member$e ?v0 (streams$c ?v1)) (forall ((?v4 A_stream$)) (=> (member$c ?v4 ?v1) (member$a (fun_app$o ?v2 ?v4) ?v3)))) (member$ (smap$m ?v2 ?v0) (streams$ ?v3)))) :named a72))
+(assert (! (forall ((?v0 B_stream_stream$) (?v1 B_stream_set$) (?v2 B_stream_a_fun$) (?v3 A_set$)) (=> (and (member$d ?v0 (streams$b ?v1)) (forall ((?v4 B_stream$)) (=> (member$ ?v4 ?v1) (member$b (fun_app$p ?v2 ?v4) ?v3)))) (member$c (smap$n ?v2 ?v0) (streams$a ?v3)))) :named a73))
+(assert (! (forall ((?v0 A_stream_stream$) (?v1 A_stream_set$) (?v2 A_stream_a_fun$) (?v3 A_set$)) (=> (and (member$e ?v0 (streams$c ?v1)) (forall ((?v4 A_stream$)) (=> (member$c ?v4 ?v1) (member$b (fun_app$q ?v2 ?v4) ?v3)))) (member$c (smap$o ?v2 ?v0) (streams$a ?v3)))) :named a74))
+(assert (! (forall ((?v0 B_stream$) (?v1 B_set$) (?v2 B_b_stream_fun$) (?v3 B_stream_set$)) (=> (and (member$ ?v0 (streams$ ?v1)) (forall ((?v4 B$)) (=> (member$a ?v4 ?v1) (member$ (fun_app$ ?v2 ?v4) ?v3)))) (member$d (smap$g ?v2 ?v0) (streams$b ?v3)))) :named a75))
+(assert (! (forall ((?v0 B_stream$) (?v1 B_set$) (?v2 B_a_stream_fun$) (?v3 A_stream_set$)) (=> (and (member$ ?v0 (streams$ ?v1)) (forall ((?v4 B$)) (=> (member$a ?v4 ?v1) (member$c (fun_app$k ?v2 ?v4) ?v3)))) (member$e (smap$h ?v2 ?v0) (streams$c ?v3)))) :named a76))
+(assert (! (forall ((?v0 B_b_fun$) (?v1 B$)) (= (shd$a (fun_app$ (siterate$ ?v0) ?v1)) ?v1)) :named a77))
+(assert (! (forall ((?v0 A_a_fun$) (?v1 A$)) (= (shd$ (fun_app$a (siterate$a ?v0) ?v1)) ?v1)) :named a78))
+(assert (! (forall ((?v0 B_b_fun$) (?v1 B$)) (= (stl$a (fun_app$ (siterate$ ?v0) ?v1)) (fun_app$ (siterate$ ?v0) (fun_app$d ?v0 ?v1)))) :named a79))
+(assert (! (forall ((?v0 A_a_fun$) (?v1 A$)) (= (stl$ (fun_app$a (siterate$a ?v0) ?v1)) (fun_app$a (siterate$a ?v0) (fun_app$f ?v0 ?v1)))) :named a80))
+(assert (! (forall ((?v0 B_b_fun$) (?v1 B$)) (= (fun_app$ (siterate$ ?v0) ?v1) (sCons$a ?v1 (fun_app$ (siterate$ ?v0) (fun_app$d ?v0 ?v1))))) :named a81))
+(assert (! (forall ((?v0 A_a_fun$) (?v1 A$)) (= (fun_app$a (siterate$a ?v0) ?v1) (sCons$ ?v1 (fun_app$a (siterate$a ?v0) (fun_app$f ?v0 ?v1))))) :named a82))
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/subtype-param-unk.smt2 b/test/regress/regress0/quantifiers/subtype-param-unk.smt2
new file mode 100644
index 0000000..836449c
--- /dev/null
+++ b/test/regress/regress0/quantifiers/subtype-param-unk.smt2
@@ -0,0 +1,19 @@
+; COMMAND-LINE: 
+; EXPECT: unknown
+; this will fail if type rule for APPLY_UF requires arguments to be subtypes
+(set-logic ALL_SUPPORTED)
+
+(declare-datatypes (T) ((List (cons (hd T) (tl (List T))) (nil))))
+
+(declare-fun R ((List Int)) Bool)
+
+(assert (forall ((x (List Int))) (R x)))
+(declare-fun j1 () (List Real))
+(assert (not (R j1)))
+
+(declare-fun Q ((Array Int Real)) Bool)
+(assert (forall ((x (Array Int Int))) (Q x)))
+(declare-fun j2 () (Array Int Real))
+(assert (not (Q j2)))
+
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/subtype-param.smt2 b/test/regress/regress0/quantifiers/subtype-param.smt2
new file mode 100644
index 0000000..08615ab
--- /dev/null
+++ b/test/regress/regress0/quantifiers/subtype-param.smt2
@@ -0,0 +1,16 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-datatypes (T) ((List (cons (hd T) (tl (List T))) (nil))))
+
+(declare-fun R ((List Int)) Bool)
+(assert (forall ((x (List Real))) (R x)))
+
+(declare-fun Q ((Array Int Real)) Bool)
+(assert (forall ((x (Array Int Int))) (Q x)))
+
+(declare-fun k1 () (List Int))
+(declare-fun k2 () (Array Real Int))
+(assert (or (not (R k1)) (not (Q k2))))
+
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/z3.620661-no-fv-trigger.smt2 b/test/regress/regress0/quantifiers/z3.620661-no-fv-trigger.smt2
new file mode 100644
index 0000000..aad2a46
--- /dev/null
+++ b/test/regress/regress0/quantifiers/z3.620661-no-fv-trigger.smt2
@@ -0,0 +1,87 @@
+(set-logic AUFNIRA)
+(set-info :status unsat)
+(declare-sort S1 0)
+(declare-sort S2 0)
+(declare-sort S3 0)
+(declare-sort S4 0)
+(declare-sort S5 0)
+(declare-sort S6 0)
+(declare-sort S7 0)
+(declare-sort S8 0)
+(declare-sort S9 0)
+(declare-sort S10 0)
+(declare-sort S11 0)
+(declare-sort S12 0)
+(declare-sort S13 0)
+(declare-fun f1 () S1)
+(declare-fun f2 () S1)
+(declare-fun f3 (S2 Real) Real)
+(declare-fun f4 (S3 Real) S2)
+(declare-fun f5 () S3)
+(declare-fun f6 (S4 Int) Int)
+(declare-fun f7 (S5 Int) S4)
+(declare-fun f8 () S5)
+(declare-fun f9 () S2)
+(declare-fun f10 () Real)
+(declare-fun f11 () Real)
+(declare-fun f12 () S2)
+(declare-fun f13 (S7 S6) Real)
+(declare-fun f14 () S7)
+(declare-fun f15 () S2)
+(declare-fun f16 () S2)
+(declare-fun f17 (S8 Int) S6)
+(declare-fun f18 () S8)
+(declare-fun f19 (S9 S6) Int)
+(declare-fun f20 () S9)
+(declare-fun f21 (S10 Real) S7)
+(declare-fun f22 () S10)
+(declare-fun f23 () S2)
+(declare-fun f24 (S11 S6) S6)
+(declare-fun f25 (S12 S6) S11)
+(declare-fun f26 () S12)
+(declare-fun f27 () S12)
+(declare-fun f28 (S13 Int) S9)
+(declare-fun f29 () S13)
+(declare-fun f30 () S2)
+(declare-fun f31 () S4)
+(assert (not (= f1 f2)))
+(assert (forall ((?v0 Real) (?v1 Real)) (= (f3 (f4 f5 ?v0) ?v1) (* ?v0 ?v1))))
+(assert (forall ((?v0 Int) (?v1 Int)) (= (f6 (f7 f8 ?v0) ?v1) (* ?v0 ?v1))))
+(assert (not (= (f3 f9 (- f10 f11)) (- (f3 f9 f10)))))
+(assert (= (f3 f9 f11) 0.0))
+(assert (forall ((?v0 Real)) (= (f3 f9 (+ f11 ?v0)) (- (f3 f9 ?v0)))))
+(assert (= (f3 f9 (/ f11 2.0)) 1.0))
+(assert (= (f3 f9 (/ f11 6.0)) (/ 1.0 2.0)))
+(assert (= (f3 f9 (* 2.0 f11)) 0.0))
+(assert (= (f3 f9 (* (/ 3.0 2.0) f11)) (- 1.0)))
+(assert (let ((?v_0 2.0)) (<= (/ f11 ?v_0) ?v_0)))
+(assert (let ((?v_0 2.0)) (< (/ f11 ?v_0) ?v_0)))
+(assert (< (- (* 2.0 f11)) f11))
+(assert (< (- (/ f11 2.0)) 0.0))
+(assert (<= 2.0 f11))
+(assert (<= 0.0 (/ f11 2.0)))
+(assert (< 0.0 (/ f11 2.0)))
+(assert (< f11 4.0))
+(assert (<= 0.0 f11))
+(assert (< 0.0 f11))
+(assert (let ((?v_0 2.0)) (not (= (/ f11 ?v_0) ?v_0))))
+(assert (not (= (/ f11 2.0) 0.0)))
+(assert (not (< f11 0.0)))
+(assert (not (= f11 0.0)))
+(assert (forall ((?v0 S6) (?v1 S6)) (= (= (f13 f14 ?v0) (f13 f14 ?v1)) (= ?v0 ?v1))))
+(assert (forall ((?v0 S6) (?v1 S6)) (= (< (f13 f14 ?v0) (f13 f14 ?v1)) (< (f19 f20 ?v0) (f19 f20 ?v1)))))
+(assert (forall ((?v0 S6) (?v1 S6)) (= (<= (f13 f14 ?v0) (f13 f14 ?v1)) (<= (f19 f20 ?v0) (f19 f20 ?v1)))))
+(assert (forall ((?v0 S6) (?v1 S6)) (let ((?v_0 (f19 f20 ?v1)) (?v_1 (f19 f20 ?v0))) (=> (<= ?v_1 ?v_0) (= (f13 f14 (f17 f18 (- ?v_0 ?v_1))) (- (f13 f14 ?v1) (f13 f14 ?v0)))))))
+(assert (forall ((?v0 Real) (?v1 Real)) (exists ((?v2 Real) (?v3 Real)) (and (= ?v0 (* ?v2 (f3 f15 ?v3))) (= ?v1 (* ?v2 (f3 f9 ?v3)))))))
+(assert (< 1.0 (f3 f16 2.0)))
+(assert (< 0.0 (f3 f16 2.0)))
+(assert (<= 0.0 (f3 f16 2.0)))
+(assert (forall ((?v0 Real) (?v1 Real)) (<= 0.0 (f3 f16 (+ (* ?v0 ?v0) (* ?v1 ?v1))))))
+(assert (forall ((?v0 Real) (?v1 Real)) (=> (<= ?v0 ?v1) (<= (f3 f16 ?v0) (f3 f16 ?v1)))))
+(assert (forall ((?v0 Real) (?v1 Real)) (=> (< ?v0 ?v1) (< (f3 f16 ?v0) (f3 f16 ?v1)))))
+(assert (forall ((?v0 Real)) (let ((?v_0 0.0)) (=> (<= ?v_0 ?v0) (=> (= (f3 f16 ?v0) ?v_0) (= ?v0 ?v_0))))))
+(assert (forall ((?v0 Real)) (=> (< 0.0 ?v0) (< (/ ?v0 (f3 f16 2.0)) ?v0))))
+(assert (forall ((?v0 Real)) (let ((?v_0 0.0)) (=> (<= ?v_0 ?v0) (<= ?v_0 (f3 f16 ?v0))))))
+(assert (forall ((?v0 Real)) (let ((?v_0 1.0)) (=> (<= ?v_0 ?v0) (<= ?v_0 (f3 f16 ?v0))))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/queries0.cvc b/test/regress/regress0/queries0.cvc
new file mode 100644
index 0000000..2b9eedc
--- /dev/null
+++ b/test/regress/regress0/queries0.cvc
@@ -0,0 +1,11 @@
+% Tests the invariants for multiple queries.
+% COMMAND-LINE: --incremental
+
+a, b: BOOLEAN;
+
+% EXPECT: valid
+QUERY (a AND b) OR NOT (a AND b);
+
+% EXPECT: invalid
+QUERY (a OR b);
+
diff --git a/test/regress/regress0/rels/Makefile.am b/test/regress/regress0/rels/Makefile.am
new file mode 100644
index 0000000..50f979f
--- /dev/null
+++ b/test/regress/regress0/rels/Makefile.am
@@ -0,0 +1,115 @@
+SUBDIRS = .
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+  addr_book_0.cvc \
+  bv2.cvc \
+  oneLoc_no_quant-int_0_1.cvc \
+  rel_complex_5.cvc \
+  rel_join_3_1.cvc \
+  rel_product_0_1.cvc \
+  rel_tc_10_1.cvc \
+  rel_tc_6.cvc \
+  rel_tp_join_2_1.cvc \
+  rel_transpose_1_1.cvc \
+  strat_0_1.cvc \
+  addr_book_1_1.cvc \
+  prod-mod-eq2.cvc \
+  rel_conflict_0.cvc \
+  rel_join_3.cvc \
+  rel_product_0.cvc \
+  rel_tc_11.cvc \
+  rel_tc_7.cvc \
+  rel_tp_join_2.cvc \
+  rel_transpose_1.cvc \
+  strat.cvc \
+  addr_book_1.cvc \
+  join-eq-structure_0_1.cvc \
+  prod-mod-eq.cvc \
+  rel_join_0_1.cvc \
+  rel_join_4.cvc \
+  rel_product_1_1.cvc \
+  rel_tc_2_1.cvc \
+  rel_tp_join_3.cvc \
+  rel_transpose_3.cvc \
+  bv1.cvc \
+  join-eq-structure-and.cvc \
+  rel_1tup_0.cvc \
+  rel_join_0.cvc \
+  rel_join_5.cvc \
+  rel_product_1.cvc \
+  rel_tc_3_1.cvc \
+  rel_tc_9_1.cvc \
+  rel_tp_join_eq_0.cvc \
+  rel_transpose_4.cvc \
+  bv1p.cvc \
+  join-eq-structure.cvc \
+  rel_complex_0.cvc \
+  rel_join_1_1.cvc \
+  rel_join_6.cvc \
+  rel_symbolic_1_1.cvc \
+  rel_tc_3.cvc \
+  rel_tp_2.cvc \
+  rel_tp_join_int_0.cvc \
+  rel_transpose_5.cvc \
+  bv1p-sat.cvc \
+  join-eq-u.cvc \
+  rel_complex_1.cvc \
+  rel_join_1.cvc \
+  rel_join_7.cvc \
+  rel_symbolic_1.cvc \
+  rel_tc_4_1.cvc \
+  rel_tp_3_1.cvc \
+  rel_tp_join_pro_0.cvc \
+  rel_transpose_6.cvc \
+  bv1-unitb.cvc \
+  join-eq-u-sat.cvc \
+  rel_complex_3.cvc \
+  rel_join_2_1.cvc \
+  rel_mix_0_1.cvc \
+  rel_symbolic_2_1.cvc \
+  rel_tc_4.cvc \
+  rel_tp_join_0.cvc \
+  rel_tp_join_var_0.cvc \
+  rel_transpose_7.cvc \
+  bv1-unit.cvc \
+  rel_complex_4.cvc \
+  rel_join_2.cvc \
+  rel_pressure_0.cvc \
+  rel_symbolic_3_1.cvc \
+  rel_tc_5_1.cvc \
+  rel_tp_join_1.cvc \
+  rel_transpose_0.cvc \
+  set-strat.cvc
+
+# unsolved : garbage_collect.cvc
+# dump-unsat-core crash : rel_tc_8.cvc
+
+EXTRA_DIST = $(TESTS)
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/rels/Makefile.in b/test/regress/regress0/rels/Makefile.in
new file mode 100644
index 0000000..909996f
--- /dev/null
+++ b/test/regress/regress0/rels/Makefile.in
@@ -0,0 +1,1794 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/rels
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+SUBDIRS = .
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+  addr_book_0.cvc \
+  bv2.cvc \
+  oneLoc_no_quant-int_0_1.cvc \
+  rel_complex_5.cvc \
+  rel_join_3_1.cvc \
+  rel_product_0_1.cvc \
+  rel_tc_10_1.cvc \
+  rel_tc_6.cvc \
+  rel_tp_join_2_1.cvc \
+  rel_transpose_1_1.cvc \
+  strat_0_1.cvc \
+  addr_book_1_1.cvc \
+  prod-mod-eq2.cvc \
+  rel_conflict_0.cvc \
+  rel_join_3.cvc \
+  rel_product_0.cvc \
+  rel_tc_11.cvc \
+  rel_tc_7.cvc \
+  rel_tp_join_2.cvc \
+  rel_transpose_1.cvc \
+  strat.cvc \
+  addr_book_1.cvc \
+  join-eq-structure_0_1.cvc \
+  prod-mod-eq.cvc \
+  rel_join_0_1.cvc \
+  rel_join_4.cvc \
+  rel_product_1_1.cvc \
+  rel_tc_2_1.cvc \
+  rel_tp_join_3.cvc \
+  rel_transpose_3.cvc \
+  bv1.cvc \
+  join-eq-structure-and.cvc \
+  rel_1tup_0.cvc \
+  rel_join_0.cvc \
+  rel_join_5.cvc \
+  rel_product_1.cvc \
+  rel_tc_3_1.cvc \
+  rel_tc_9_1.cvc \
+  rel_tp_join_eq_0.cvc \
+  rel_transpose_4.cvc \
+  bv1p.cvc \
+  join-eq-structure.cvc \
+  rel_complex_0.cvc \
+  rel_join_1_1.cvc \
+  rel_join_6.cvc \
+  rel_symbolic_1_1.cvc \
+  rel_tc_3.cvc \
+  rel_tp_2.cvc \
+  rel_tp_join_int_0.cvc \
+  rel_transpose_5.cvc \
+  bv1p-sat.cvc \
+  join-eq-u.cvc \
+  rel_complex_1.cvc \
+  rel_join_1.cvc \
+  rel_join_7.cvc \
+  rel_symbolic_1.cvc \
+  rel_tc_4_1.cvc \
+  rel_tp_3_1.cvc \
+  rel_tp_join_pro_0.cvc \
+  rel_transpose_6.cvc \
+  bv1-unitb.cvc \
+  join-eq-u-sat.cvc \
+  rel_complex_3.cvc \
+  rel_join_2_1.cvc \
+  rel_mix_0_1.cvc \
+  rel_symbolic_2_1.cvc \
+  rel_tc_4.cvc \
+  rel_tp_join_0.cvc \
+  rel_tp_join_var_0.cvc \
+  rel_transpose_7.cvc \
+  bv1-unit.cvc \
+  rel_complex_4.cvc \
+  rel_join_2.cvc \
+  rel_pressure_0.cvc \
+  rel_symbolic_3_1.cvc \
+  rel_tc_5_1.cvc \
+  rel_tp_join_1.cvc \
+  rel_transpose_0.cvc \
+  set-strat.cvc
+
+
+# unsolved : garbage_collect.cvc
+# dump-unsat-core crash : rel_tc_8.cvc
+EXTRA_DIST = $(TESTS)
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/rels/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/rels/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+addr_book_0.cvc.log: addr_book_0.cvc
+	@p='addr_book_0.cvc'; \
+	b='addr_book_0.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bv2.cvc.log: bv2.cvc
+	@p='bv2.cvc'; \
+	b='bv2.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+oneLoc_no_quant-int_0_1.cvc.log: oneLoc_no_quant-int_0_1.cvc
+	@p='oneLoc_no_quant-int_0_1.cvc'; \
+	b='oneLoc_no_quant-int_0_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_complex_5.cvc.log: rel_complex_5.cvc
+	@p='rel_complex_5.cvc'; \
+	b='rel_complex_5.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_join_3_1.cvc.log: rel_join_3_1.cvc
+	@p='rel_join_3_1.cvc'; \
+	b='rel_join_3_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_product_0_1.cvc.log: rel_product_0_1.cvc
+	@p='rel_product_0_1.cvc'; \
+	b='rel_product_0_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tc_10_1.cvc.log: rel_tc_10_1.cvc
+	@p='rel_tc_10_1.cvc'; \
+	b='rel_tc_10_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tc_6.cvc.log: rel_tc_6.cvc
+	@p='rel_tc_6.cvc'; \
+	b='rel_tc_6.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tp_join_2_1.cvc.log: rel_tp_join_2_1.cvc
+	@p='rel_tp_join_2_1.cvc'; \
+	b='rel_tp_join_2_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_transpose_1_1.cvc.log: rel_transpose_1_1.cvc
+	@p='rel_transpose_1_1.cvc'; \
+	b='rel_transpose_1_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+strat_0_1.cvc.log: strat_0_1.cvc
+	@p='strat_0_1.cvc'; \
+	b='strat_0_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+addr_book_1_1.cvc.log: addr_book_1_1.cvc
+	@p='addr_book_1_1.cvc'; \
+	b='addr_book_1_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+prod-mod-eq2.cvc.log: prod-mod-eq2.cvc
+	@p='prod-mod-eq2.cvc'; \
+	b='prod-mod-eq2.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_conflict_0.cvc.log: rel_conflict_0.cvc
+	@p='rel_conflict_0.cvc'; \
+	b='rel_conflict_0.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_join_3.cvc.log: rel_join_3.cvc
+	@p='rel_join_3.cvc'; \
+	b='rel_join_3.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_product_0.cvc.log: rel_product_0.cvc
+	@p='rel_product_0.cvc'; \
+	b='rel_product_0.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tc_11.cvc.log: rel_tc_11.cvc
+	@p='rel_tc_11.cvc'; \
+	b='rel_tc_11.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tc_7.cvc.log: rel_tc_7.cvc
+	@p='rel_tc_7.cvc'; \
+	b='rel_tc_7.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tp_join_2.cvc.log: rel_tp_join_2.cvc
+	@p='rel_tp_join_2.cvc'; \
+	b='rel_tp_join_2.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_transpose_1.cvc.log: rel_transpose_1.cvc
+	@p='rel_transpose_1.cvc'; \
+	b='rel_transpose_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+strat.cvc.log: strat.cvc
+	@p='strat.cvc'; \
+	b='strat.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+addr_book_1.cvc.log: addr_book_1.cvc
+	@p='addr_book_1.cvc'; \
+	b='addr_book_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+join-eq-structure_0_1.cvc.log: join-eq-structure_0_1.cvc
+	@p='join-eq-structure_0_1.cvc'; \
+	b='join-eq-structure_0_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+prod-mod-eq.cvc.log: prod-mod-eq.cvc
+	@p='prod-mod-eq.cvc'; \
+	b='prod-mod-eq.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_join_0_1.cvc.log: rel_join_0_1.cvc
+	@p='rel_join_0_1.cvc'; \
+	b='rel_join_0_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_join_4.cvc.log: rel_join_4.cvc
+	@p='rel_join_4.cvc'; \
+	b='rel_join_4.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_product_1_1.cvc.log: rel_product_1_1.cvc
+	@p='rel_product_1_1.cvc'; \
+	b='rel_product_1_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tc_2_1.cvc.log: rel_tc_2_1.cvc
+	@p='rel_tc_2_1.cvc'; \
+	b='rel_tc_2_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tp_join_3.cvc.log: rel_tp_join_3.cvc
+	@p='rel_tp_join_3.cvc'; \
+	b='rel_tp_join_3.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_transpose_3.cvc.log: rel_transpose_3.cvc
+	@p='rel_transpose_3.cvc'; \
+	b='rel_transpose_3.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bv1.cvc.log: bv1.cvc
+	@p='bv1.cvc'; \
+	b='bv1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+join-eq-structure-and.cvc.log: join-eq-structure-and.cvc
+	@p='join-eq-structure-and.cvc'; \
+	b='join-eq-structure-and.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_1tup_0.cvc.log: rel_1tup_0.cvc
+	@p='rel_1tup_0.cvc'; \
+	b='rel_1tup_0.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_join_0.cvc.log: rel_join_0.cvc
+	@p='rel_join_0.cvc'; \
+	b='rel_join_0.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_join_5.cvc.log: rel_join_5.cvc
+	@p='rel_join_5.cvc'; \
+	b='rel_join_5.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_product_1.cvc.log: rel_product_1.cvc
+	@p='rel_product_1.cvc'; \
+	b='rel_product_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tc_3_1.cvc.log: rel_tc_3_1.cvc
+	@p='rel_tc_3_1.cvc'; \
+	b='rel_tc_3_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tc_9_1.cvc.log: rel_tc_9_1.cvc
+	@p='rel_tc_9_1.cvc'; \
+	b='rel_tc_9_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tp_join_eq_0.cvc.log: rel_tp_join_eq_0.cvc
+	@p='rel_tp_join_eq_0.cvc'; \
+	b='rel_tp_join_eq_0.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_transpose_4.cvc.log: rel_transpose_4.cvc
+	@p='rel_transpose_4.cvc'; \
+	b='rel_transpose_4.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bv1p.cvc.log: bv1p.cvc
+	@p='bv1p.cvc'; \
+	b='bv1p.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+join-eq-structure.cvc.log: join-eq-structure.cvc
+	@p='join-eq-structure.cvc'; \
+	b='join-eq-structure.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_complex_0.cvc.log: rel_complex_0.cvc
+	@p='rel_complex_0.cvc'; \
+	b='rel_complex_0.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_join_1_1.cvc.log: rel_join_1_1.cvc
+	@p='rel_join_1_1.cvc'; \
+	b='rel_join_1_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_join_6.cvc.log: rel_join_6.cvc
+	@p='rel_join_6.cvc'; \
+	b='rel_join_6.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_symbolic_1_1.cvc.log: rel_symbolic_1_1.cvc
+	@p='rel_symbolic_1_1.cvc'; \
+	b='rel_symbolic_1_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tc_3.cvc.log: rel_tc_3.cvc
+	@p='rel_tc_3.cvc'; \
+	b='rel_tc_3.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tp_2.cvc.log: rel_tp_2.cvc
+	@p='rel_tp_2.cvc'; \
+	b='rel_tp_2.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tp_join_int_0.cvc.log: rel_tp_join_int_0.cvc
+	@p='rel_tp_join_int_0.cvc'; \
+	b='rel_tp_join_int_0.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_transpose_5.cvc.log: rel_transpose_5.cvc
+	@p='rel_transpose_5.cvc'; \
+	b='rel_transpose_5.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bv1p-sat.cvc.log: bv1p-sat.cvc
+	@p='bv1p-sat.cvc'; \
+	b='bv1p-sat.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+join-eq-u.cvc.log: join-eq-u.cvc
+	@p='join-eq-u.cvc'; \
+	b='join-eq-u.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_complex_1.cvc.log: rel_complex_1.cvc
+	@p='rel_complex_1.cvc'; \
+	b='rel_complex_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_join_1.cvc.log: rel_join_1.cvc
+	@p='rel_join_1.cvc'; \
+	b='rel_join_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_join_7.cvc.log: rel_join_7.cvc
+	@p='rel_join_7.cvc'; \
+	b='rel_join_7.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_symbolic_1.cvc.log: rel_symbolic_1.cvc
+	@p='rel_symbolic_1.cvc'; \
+	b='rel_symbolic_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tc_4_1.cvc.log: rel_tc_4_1.cvc
+	@p='rel_tc_4_1.cvc'; \
+	b='rel_tc_4_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tp_3_1.cvc.log: rel_tp_3_1.cvc
+	@p='rel_tp_3_1.cvc'; \
+	b='rel_tp_3_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tp_join_pro_0.cvc.log: rel_tp_join_pro_0.cvc
+	@p='rel_tp_join_pro_0.cvc'; \
+	b='rel_tp_join_pro_0.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_transpose_6.cvc.log: rel_transpose_6.cvc
+	@p='rel_transpose_6.cvc'; \
+	b='rel_transpose_6.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bv1-unitb.cvc.log: bv1-unitb.cvc
+	@p='bv1-unitb.cvc'; \
+	b='bv1-unitb.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+join-eq-u-sat.cvc.log: join-eq-u-sat.cvc
+	@p='join-eq-u-sat.cvc'; \
+	b='join-eq-u-sat.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_complex_3.cvc.log: rel_complex_3.cvc
+	@p='rel_complex_3.cvc'; \
+	b='rel_complex_3.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_join_2_1.cvc.log: rel_join_2_1.cvc
+	@p='rel_join_2_1.cvc'; \
+	b='rel_join_2_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_mix_0_1.cvc.log: rel_mix_0_1.cvc
+	@p='rel_mix_0_1.cvc'; \
+	b='rel_mix_0_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_symbolic_2_1.cvc.log: rel_symbolic_2_1.cvc
+	@p='rel_symbolic_2_1.cvc'; \
+	b='rel_symbolic_2_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tc_4.cvc.log: rel_tc_4.cvc
+	@p='rel_tc_4.cvc'; \
+	b='rel_tc_4.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tp_join_0.cvc.log: rel_tp_join_0.cvc
+	@p='rel_tp_join_0.cvc'; \
+	b='rel_tp_join_0.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tp_join_var_0.cvc.log: rel_tp_join_var_0.cvc
+	@p='rel_tp_join_var_0.cvc'; \
+	b='rel_tp_join_var_0.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_transpose_7.cvc.log: rel_transpose_7.cvc
+	@p='rel_transpose_7.cvc'; \
+	b='rel_transpose_7.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bv1-unit.cvc.log: bv1-unit.cvc
+	@p='bv1-unit.cvc'; \
+	b='bv1-unit.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_complex_4.cvc.log: rel_complex_4.cvc
+	@p='rel_complex_4.cvc'; \
+	b='rel_complex_4.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_join_2.cvc.log: rel_join_2.cvc
+	@p='rel_join_2.cvc'; \
+	b='rel_join_2.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_pressure_0.cvc.log: rel_pressure_0.cvc
+	@p='rel_pressure_0.cvc'; \
+	b='rel_pressure_0.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_symbolic_3_1.cvc.log: rel_symbolic_3_1.cvc
+	@p='rel_symbolic_3_1.cvc'; \
+	b='rel_symbolic_3_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tc_5_1.cvc.log: rel_tc_5_1.cvc
+	@p='rel_tc_5_1.cvc'; \
+	b='rel_tc_5_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tp_join_1.cvc.log: rel_tp_join_1.cvc
+	@p='rel_tp_join_1.cvc'; \
+	b='rel_tp_join_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_transpose_0.cvc.log: rel_transpose_0.cvc
+	@p='rel_transpose_0.cvc'; \
+	b='rel_transpose_0.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+set-strat.cvc.log: set-strat.cvc
+	@p='set-strat.cvc'; \
+	b='set-strat.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/rels/addr_book_0.cvc b/test/regress/regress0/rels/addr_book_0.cvc
new file mode 100644
index 0000000..5b1ecef
--- /dev/null
+++ b/test/regress/regress0/rels/addr_book_0.cvc
@@ -0,0 +1,49 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+Atom : TYPE;
+AtomTup : TYPE = [Atom];
+AtomBinTup : TYPE = [Atom, Atom];
+AtomTerTup : TYPE = [Atom, Atom, Atom];
+Target: SET OF AtomTup;
+
+Name: SET OF AtomTup;
+Addr: SET OF AtomTup;
+Book: SET OF AtomTup;
+names: SET OF AtomBinTup;
+addr: SET OF AtomTerTup;
+
+b1: Atom;
+b1_tup : AtomTup;
+ASSERT b1_tup = TUPLE(b1);
+ASSERT b1_tup IS_IN Book;
+
+b2: Atom;
+b2_tup : AtomTup;
+ASSERT b2_tup = TUPLE(b2);
+ASSERT b2_tup IS_IN Book;
+
+b3: Atom;
+b3_tup : AtomTup;
+ASSERT b3_tup = TUPLE(b3);
+ASSERT b3_tup IS_IN Book;
+
+n: Atom;
+n_tup : AtomTup;
+ASSERT n_tup = TUPLE(n);
+ASSERT n_tup IS_IN Name;
+
+t: Atom;
+t_tup : AtomTup;
+ASSERT t_tup = TUPLE(t);
+ASSERT t_tup IS_IN Target;
+
+ASSERT ((Book JOIN  addr) JOIN Target) <= Name;
+ASSERT (Book JOIN names) <= Name;
+ASSERT (Name & Addr) = {}::SET OF AtomTup;
+
+ASSERT ({n_tup} JOIN ({b1_tup} JOIN addr)) = {}::SET OF AtomTup;
+ASSERT ({n_tup} JOIN ({b2_tup} JOIN addr)) = ({n_tup} JOIN ({b1_tup} JOIN addr)) | {t_tup};
+ASSERT ({n_tup} JOIN ({b3_tup} JOIN addr)) = ({n_tup} JOIN ({b2_tup} JOIN addr)) - {t_tup};
+ASSERT NOT (({n_tup} JOIN ({b1_tup} JOIN addr)) = ({n_tup} JOIN ({b3_tup} JOIN addr)));
+
+CHECKSAT;
\ No newline at end of file
diff --git a/test/regress/regress0/rels/addr_book_1.cvc b/test/regress/regress0/rels/addr_book_1.cvc
new file mode 100644
index 0000000..34176f2
--- /dev/null
+++ b/test/regress/regress0/rels/addr_book_1.cvc
@@ -0,0 +1,45 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+Atom : TYPE;
+AtomTup : TYPE = [Atom];
+AtomBinTup : TYPE = [Atom, Atom];
+AtomTerTup : TYPE = [Atom, Atom, Atom];
+Target: SET OF AtomTup;
+
+Name: SET OF AtomTup;
+Addr: SET OF AtomTup;
+Book: SET OF AtomTup;
+names: SET OF AtomBinTup;
+addr: SET OF AtomTerTup;
+
+b1: Atom;
+b1_tup : AtomTup;
+ASSERT b1_tup = TUPLE(b1);
+ASSERT b1_tup IS_IN Book;
+
+b2: Atom;
+b2_tup : AtomTup;
+ASSERT b2_tup = TUPLE(b2);
+ASSERT b2_tup IS_IN Book;
+
+b3: Atom;
+b3_tup : AtomTup;
+ASSERT b3_tup = TUPLE(b3);
+ASSERT b3_tup IS_IN Book;
+
+m: Atom;
+m_tup : AtomTup;
+ASSERT m_tup = TUPLE(m);
+ASSERT m_tup IS_IN Name;
+
+t: Atom;
+t_tup : AtomTup;
+ASSERT t_tup = TUPLE(t);
+ASSERT t_tup IS_IN Target;
+
+ASSERT ({m_tup} JOIN ({b1_tup} JOIN addr)) = {}::SET OF AtomTup;
+ASSERT ({b2_tup} JOIN addr) = ({b1_tup} JOIN addr) | {(m,t)};
+ASSERT ({b3_tup} JOIN addr) = ({b2_tup} JOIN addr) - {(m,t)};
+ASSERT NOT (({b1_tup} JOIN addr) = ({b3_tup} JOIN addr));
+
+CHECKSAT;
\ No newline at end of file
diff --git a/test/regress/regress0/rels/addr_book_1_1.cvc b/test/regress/regress0/rels/addr_book_1_1.cvc
new file mode 100644
index 0000000..3273ade
--- /dev/null
+++ b/test/regress/regress0/rels/addr_book_1_1.cvc
@@ -0,0 +1,45 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+Atom : TYPE;
+AtomTup : TYPE = [Atom];
+AtomBinTup : TYPE = [Atom, Atom];
+AtomTerTup : TYPE = [Atom, Atom, Atom];
+Target: SET OF AtomTup;
+
+Name: SET OF AtomTup;
+Addr: SET OF AtomTup;
+Book: SET OF AtomTup;
+names: SET OF AtomBinTup;
+addr: SET OF AtomTerTup;
+
+b1: Atom;
+b1_tup : AtomTup;
+ASSERT b1_tup = TUPLE(b1);
+ASSERT b1_tup IS_IN Book;
+
+b2: Atom;
+b2_tup : AtomTup;
+ASSERT b2_tup = TUPLE(b2);
+ASSERT b2_tup IS_IN Book;
+
+b3: Atom;
+b3_tup : AtomTup;
+ASSERT b3_tup = TUPLE(b3);
+ASSERT b3_tup IS_IN Book;
+
+m: Atom;
+m_tup : AtomTup;
+ASSERT m_tup = TUPLE(m);
+ASSERT m_tup IS_IN Name;
+
+t: Atom;
+t_tup : AtomTup;
+ASSERT t_tup = TUPLE(t);
+ASSERT t_tup IS_IN Target;
+
+ASSERT ({m_tup} JOIN ({b1_tup} JOIN addr)) = {}::SET OF AtomTup;
+ASSERT ({b2_tup} JOIN addr) = ({b1_tup} JOIN addr) | {(m,t)};
+ASSERT ({b3_tup} JOIN addr) = ({b2_tup} JOIN addr) - {(m,t)};
+ASSERT (({b1_tup} JOIN addr) = ({b3_tup} JOIN addr));
+
+CHECKSAT;
\ No newline at end of file
diff --git a/test/regress/regress0/rels/bv1-unit.cvc b/test/regress/regress0/rels/bv1-unit.cvc
new file mode 100644
index 0000000..970ebdc
--- /dev/null
+++ b/test/regress/regress0/rels/bv1-unit.cvc
@@ -0,0 +1,21 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+DATATYPE unit = u END;
+BvPair: TYPE = [BITVECTOR(1), unit, BITVECTOR(1)];
+x : SET OF BvPair;
+y : SET OF BvPair;
+
+a : BITVECTOR(1);
+b : BITVECTOR(1);
+c : BITVECTOR(1);
+d : BITVECTOR(1);
+e : BITVECTOR(1);
+
+ASSERT NOT ( b = c );
+
+ASSERT (a, u, b) IS_IN x;
+ASSERT (a, u, c) IS_IN x;
+ASSERT (d, u, a) IS_IN y;
+ASSERT NOT ( ( a, u, u, a ) IS_IN (x JOIN y));
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/bv1-unitb.cvc b/test/regress/regress0/rels/bv1-unitb.cvc
new file mode 100644
index 0000000..50a5bb4
--- /dev/null
+++ b/test/regress/regress0/rels/bv1-unitb.cvc
@@ -0,0 +1,22 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+DATATYPE unitb = ub(data : BITVECTOR(1)) END;
+BvPair: TYPE = [BITVECTOR(1), unitb, BITVECTOR(1)];
+x : SET OF BvPair;
+y : SET OF BvPair;
+
+a : BITVECTOR(1);
+b : BITVECTOR(1);
+c : BITVECTOR(1);
+d : BITVECTOR(1);
+e : BITVECTOR(1);
+u : unitb;
+
+ASSERT NOT ( b = c );
+
+ASSERT (a, u, b) IS_IN x;
+ASSERT (a, u, c) IS_IN x;
+ASSERT (d, u, a) IS_IN y;
+ASSERT NOT ( ( a, u, u, a ) IS_IN (x JOIN y));
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/bv1.cvc b/test/regress/regress0/rels/bv1.cvc
new file mode 100644
index 0000000..95e7419
--- /dev/null
+++ b/test/regress/regress0/rels/bv1.cvc
@@ -0,0 +1,20 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+BvPair: TYPE = [BITVECTOR(1), BITVECTOR(1)];
+x : SET OF BvPair;
+y : SET OF BvPair;
+
+a : BITVECTOR(1);
+b : BITVECTOR(1);
+c : BITVECTOR(1);
+d : BITVECTOR(1);
+e : BITVECTOR(1);
+
+ASSERT NOT ( b = c );
+
+ASSERT (a, b) IS_IN x;
+ASSERT (a, c) IS_IN x;
+ASSERT (d, a) IS_IN y;
+ASSERT NOT ( ( a, a ) IS_IN (x JOIN y));
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/bv1p-sat.cvc b/test/regress/regress0/rels/bv1p-sat.cvc
new file mode 100644
index 0000000..5eceb21
--- /dev/null
+++ b/test/regress/regress0/rels/bv1p-sat.cvc
@@ -0,0 +1,22 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+BvPair: TYPE = [BITVECTOR(1), BITVECTOR(1)];
+x : SET OF BvPair;
+y : SET OF BvPair;
+
+a : BvPair;
+b : BvPair;
+c : BvPair;
+d : BvPair;
+
+ASSERT DISTINCT ( a, b );
+ASSERT DISTINCT ( c, d );
+
+ASSERT a IS_IN x;
+ASSERT b IS_IN x;
+ASSERT a IS_IN y;
+ASSERT b IS_IN y;
+ASSERT NOT ( c IS_IN (x JOIN y)) AND NOT ( d IS_IN (x JOIN y));
+
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/bv1p.cvc b/test/regress/regress0/rels/bv1p.cvc
new file mode 100644
index 0000000..130ccae
--- /dev/null
+++ b/test/regress/regress0/rels/bv1p.cvc
@@ -0,0 +1,22 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+BvPair: TYPE = [BITVECTOR(1), BITVECTOR(1)];
+x : SET OF BvPair;
+y : SET OF BvPair;
+
+a : BvPair;
+b : BvPair;
+c : BvPair;
+d : BvPair;
+e : BvPair;
+
+ASSERT DISTINCT ( a, b );
+ASSERT DISTINCT ( c, d, e );
+
+ASSERT a IS_IN x;
+ASSERT b IS_IN x;
+ASSERT a IS_IN y;
+ASSERT b IS_IN y;
+ASSERT (NOT ( c IS_IN (x JOIN y)) AND NOT ( d IS_IN (x JOIN y)) AND NOT ( e IS_IN (x JOIN y)) );
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/bv2.cvc b/test/regress/regress0/rels/bv2.cvc
new file mode 100644
index 0000000..d7162de
--- /dev/null
+++ b/test/regress/regress0/rels/bv2.cvc
@@ -0,0 +1,20 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+BvPair: TYPE = [BITVECTOR(2), BITVECTOR(2)];
+x : SET OF BvPair;
+y : SET OF BvPair;
+
+a : BITVECTOR(2);
+b : BITVECTOR(2);
+c : BITVECTOR(2);
+d : BITVECTOR(2);
+e : BITVECTOR(2);
+
+ASSERT NOT ( b = c );
+
+ASSERT (a, b) IS_IN x;
+ASSERT (a, c) IS_IN x;
+ASSERT (d, a) IS_IN y;
+ASSERT NOT ( ( a, a ) IS_IN (x JOIN y));
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/join-eq-structure-and.cvc b/test/regress/regress0/rels/join-eq-structure-and.cvc
new file mode 100644
index 0000000..177410b
--- /dev/null
+++ b/test/regress/regress0/rels/join-eq-structure-and.cvc
@@ -0,0 +1,26 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+DATATYPE unit = u END;
+IntUPair: TYPE = [INT, unit];
+UIntPair: TYPE = [unit, INT];
+w : SET OF IntUPair;
+z : SET OF UIntPair;
+
+ASSERT  (x JOIN y) = (w JOIN z) AND (x JOIN y ) = TRANSPOSE(w JOIN z);
+
+ASSERT (0,1) IS_IN (x JOIN y);
+
+t : INT;
+ASSERT t >= 0 AND t <=1;
+s : INT;
+ASSERT s >= 0 AND s <=1;
+
+ASSERT s+t = 1;
+
+ASSERT ( s ,u ) IS_IN w;
+ASSERT NOT ( u, t ) IS_IN z;
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/join-eq-structure.cvc b/test/regress/regress0/rels/join-eq-structure.cvc
new file mode 100644
index 0000000..e27d381
--- /dev/null
+++ b/test/regress/regress0/rels/join-eq-structure.cvc
@@ -0,0 +1,26 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+DATATYPE unit = u END;
+IntUPair: TYPE = [INT, unit];
+UIntPair: TYPE = [unit, INT];
+w : SET OF IntUPair;
+z : SET OF UIntPair;
+
+ASSERT  (x JOIN y) = (w JOIN z) OR (x JOIN y ) = TRANSPOSE(w JOIN z);
+
+ASSERT (0,1) IS_IN (x JOIN y);
+
+t : INT;
+ASSERT t >= 0 AND t <=1;
+s : INT;
+ASSERT s >= 0 AND s <=1;
+
+ASSERT s+t = 1;
+
+ASSERT ( s ,u ) IS_IN w;
+ASSERT NOT ( u, t ) IS_IN z;
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/join-eq-structure_0_1.cvc b/test/regress/regress0/rels/join-eq-structure_0_1.cvc
new file mode 100644
index 0000000..e27d381
--- /dev/null
+++ b/test/regress/regress0/rels/join-eq-structure_0_1.cvc
@@ -0,0 +1,26 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+DATATYPE unit = u END;
+IntUPair: TYPE = [INT, unit];
+UIntPair: TYPE = [unit, INT];
+w : SET OF IntUPair;
+z : SET OF UIntPair;
+
+ASSERT  (x JOIN y) = (w JOIN z) OR (x JOIN y ) = TRANSPOSE(w JOIN z);
+
+ASSERT (0,1) IS_IN (x JOIN y);
+
+t : INT;
+ASSERT t >= 0 AND t <=1;
+s : INT;
+ASSERT s >= 0 AND s <=1;
+
+ASSERT s+t = 1;
+
+ASSERT ( s ,u ) IS_IN w;
+ASSERT NOT ( u, t ) IS_IN z;
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/join-eq-u-sat.cvc b/test/regress/regress0/rels/join-eq-u-sat.cvc
new file mode 100644
index 0000000..0202cbb
--- /dev/null
+++ b/test/regress/regress0/rels/join-eq-u-sat.cvc
@@ -0,0 +1,22 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+DATATYPE unit = u END;
+IntUPair: TYPE = [INT, unit];
+UIntPair: TYPE = [unit, INT];
+w : SET OF IntUPair;
+z : SET OF UIntPair;
+
+ASSERT  (x JOIN y) =  (w JOIN z);
+
+ASSERT (0,1) IS_IN (x JOIN y);
+ASSERT (0,u) IS_IN w;
+
+t : INT;
+ASSERT t > 0 AND t < 3;
+
+ASSERT NOT (u, t ) IS_IN z;
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/join-eq-u.cvc b/test/regress/regress0/rels/join-eq-u.cvc
new file mode 100644
index 0000000..4bc498a
--- /dev/null
+++ b/test/regress/regress0/rels/join-eq-u.cvc
@@ -0,0 +1,22 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+DATATYPE unit = u END;
+IntUPair: TYPE = [INT, unit];
+UIntPair: TYPE = [unit, INT];
+w : SET OF IntUPair;
+z : SET OF UIntPair;
+
+ASSERT  (x JOIN y) =  (w JOIN z);
+
+ASSERT (0,1) IS_IN (x JOIN y);
+ASSERT (0,u) IS_IN w;
+
+t : INT;
+ASSERT t > 0 AND t < 2;
+
+ASSERT NOT (u, t ) IS_IN z;
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/oneLoc_no_quant-int_0_1.cvc b/test/regress/regress0/rels/oneLoc_no_quant-int_0_1.cvc
new file mode 100644
index 0000000..f39c234
--- /dev/null
+++ b/test/regress/regress0/rels/oneLoc_no_quant-int_0_1.cvc
@@ -0,0 +1,19 @@
+% EXPECT: sat
+OPTION "logic" "QF_UFDTFS";
+DATATYPE Atom = atom END;
+
+
+t : SET OF [Atom, Atom];
+b : Atom;
+a : Atom;
+c : Atom;
+J : ( SET OF [Atom], SET OF [Atom, Atom] ) -> SET OF [Atom];
+T : SET OF [Atom, Atom] -> SET OF [Atom, Atom];
+
+%ASSERT t = {} :: SET OF [Atom, Atom];
+
+
+ASSERT ({TUPLE(a)} JOIN t) = J({TUPLE(a)}, t);
+ASSERT NOT( ({TUPLE(c)} JOIN TCLOSURE(t)) = {TUPLE(c)} );
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/prod-mod-eq.cvc b/test/regress/regress0/rels/prod-mod-eq.cvc
new file mode 100644
index 0000000..96ef2ff
--- /dev/null
+++ b/test/regress/regress0/rels/prod-mod-eq.cvc
@@ -0,0 +1,26 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+IntPairPair: TYPE = [INT, INT, INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+z : SET OF IntPairPair;
+z1 : SET OF IntPair;
+w1 : SET OF IntPair;
+z2 : SET OF IntPair;
+w2 : SET OF IntPair;
+
+%ASSERT NOT (0,1,2,3) IS_IN (x PRODUCT y);
+
+ASSERT NOT( z = (x PRODUCT y) );
+
+ASSERT (0,1,2,3) IS_IN z;
+
+ASSERT (0,1) IS_IN z1;
+ASSERT (0,1) IS_IN z2;
+ASSERT (2,3) IS_IN w1;
+ASSERT (2,3) IS_IN w2;
+
+ASSERT ( x = z1 AND y = w1 ) OR ( x = z2 AND y = w2 );
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/prod-mod-eq2.cvc b/test/regress/regress0/rels/prod-mod-eq2.cvc
new file mode 100644
index 0000000..b9341a2
--- /dev/null
+++ b/test/regress/regress0/rels/prod-mod-eq2.cvc
@@ -0,0 +1,26 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+IntPairPair: TYPE = [INT, INT, INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+z : SET OF IntPairPair;
+z1 : SET OF IntPair;
+w1 : SET OF IntPair;
+z2 : SET OF IntPair;
+w2 : SET OF IntPair;
+P : SET OF IntPairPair -> BOOLEAN;
+
+ASSERT z = (x PRODUCT y);
+
+ASSERT P( z );
+ASSERT NOT P( {(0,1,2,3)} );
+
+ASSERT (0,1) IS_IN z1;
+ASSERT (0,1) IS_IN z2;
+ASSERT (2,3) IS_IN w1;
+ASSERT (2,3) IS_IN w2;
+
+ASSERT ( x = z1 AND y = w1 ) OR ( x = z2 AND y = w2 );
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_1tup_0.cvc b/test/regress/regress0/rels/rel_1tup_0.cvc
new file mode 100644
index 0000000..50d4def
--- /dev/null
+++ b/test/regress/regress0/rels/rel_1tup_0.cvc
@@ -0,0 +1,24 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntTup: TYPE = [INT];
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntTup;
+z: SET OF IntTup;
+
+b : IntPair;
+ASSERT b = (2, 1);
+ASSERT b IS_IN x;
+
+a : IntTup;
+ASSERT a = TUPLE(1);
+ASSERT a IS_IN y;
+
+c : IntTup;
+ASSERT c = TUPLE(2);
+
+ASSERT z = (x JOIN y);
+
+ASSERT NOT (c IS_IN z);
+
+CHECKSAT;
\ No newline at end of file
diff --git a/test/regress/regress0/rels/rel_complex_0.cvc b/test/regress/regress0/rels/rel_complex_0.cvc
new file mode 100644
index 0000000..dcb7539
--- /dev/null
+++ b/test/regress/regress0/rels/rel_complex_0.cvc
@@ -0,0 +1,31 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+z : SET OF INT;
+f : INT;
+g : INT;
+
+e : IntPair;
+ASSERT e = (4, f);
+ASSERT e IS_IN x;
+
+d : IntPair;
+ASSERT d = (g,3);
+ASSERT d IS_IN y;
+
+
+ASSERT z = {f, g};
+ASSERT 0 = f - g;
+
+
+
+a : IntPair;
+ASSERT a = (4,3);
+
+ASSERT r = (x JOIN y);
+
+ASSERT NOT (a IS_IN r);
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_complex_1.cvc b/test/regress/regress0/rels/rel_complex_1.cvc
new file mode 100644
index 0000000..969d0d7
--- /dev/null
+++ b/test/regress/regress0/rels/rel_complex_1.cvc
@@ -0,0 +1,34 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+IntTup: TYPE = [INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+
+w : SET OF IntTup;
+z : SET OF IntTup;
+r2 : SET OF IntPair;
+
+a : IntPair;
+ASSERT a = (3,1);
+ASSERT a IS_IN x;
+
+d : IntPair;
+ASSERT d = (1,3);
+ASSERT d IS_IN y;
+
+e : IntPair;
+ASSERT e = (4,3);
+ASSERT r = (x JOIN y);
+
+ASSERT TUPLE(1) IS_IN w;
+ASSERT TUPLE(2) IS_IN z;
+ASSERT r2 = (w PRODUCT z);
+
+ASSERT NOT (e IS_IN r);
+%ASSERT e IS_IN r2;
+ASSERT (r <= r2);
+ASSERT NOT ((3,3) IS_IN r2);
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_complex_3.cvc b/test/regress/regress0/rels/rel_complex_3.cvc
new file mode 100644
index 0000000..492c944
--- /dev/null
+++ b/test/regress/regress0/rels/rel_complex_3.cvc
@@ -0,0 +1,49 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+z : SET OF IntPair;
+r : SET OF IntPair;
+w : SET OF IntPair;
+
+
+f : IntPair;
+ASSERT f = (3,1);
+ASSERT f IS_IN x;
+
+g : IntPair;
+ASSERT g = (1,3);
+ASSERT g IS_IN y;
+
+h : IntPair;
+ASSERT h = (3,5);
+ASSERT h IS_IN x;
+ASSERT h IS_IN y;
+
+ASSERT r = (x JOIN y);
+
+e : IntPair;
+
+ASSERT NOT (e IS_IN r);
+ASSERT NOT(z = (x & y));
+ASSERT z = (x - y);
+ASSERT x <= y;
+ASSERT e IS_IN (r JOIN z);
+ASSERT e IS_IN x;
+ASSERT e IS_IN (x & y);
+CHECKSAT TRUE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/regress/regress0/rels/rel_complex_4.cvc b/test/regress/regress0/rels/rel_complex_4.cvc
new file mode 100644
index 0000000..f473b00
--- /dev/null
+++ b/test/regress/regress0/rels/rel_complex_4.cvc
@@ -0,0 +1,52 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+z : SET OF IntPair;
+r : SET OF IntPair;
+w : SET OF IntPair;
+
+
+f : IntPair;
+ASSERT f = (3,1);
+ASSERT f IS_IN x;
+
+g : IntPair;
+ASSERT g = (1,3);
+ASSERT g IS_IN y;
+
+h : IntPair;
+ASSERT h = (3,5);
+ASSERT h IS_IN x;
+ASSERT h IS_IN y;
+
+ASSERT r = (x JOIN y);
+a:INT;
+e : IntPair;
+ASSERT e = (a,a);
+ASSERT w = {e};
+ASSERT TRANSPOSE(w) <= y;
+
+ASSERT NOT (e IS_IN r);
+ASSERT NOT(z = (x & y));
+ASSERT z = (x - y);
+ASSERT x <= y;
+ASSERT e IS_IN (r JOIN z);
+ASSERT e IS_IN x;
+ASSERT e IS_IN (x & y);
+CHECKSAT TRUE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/regress/regress0/rels/rel_complex_5.cvc b/test/regress/regress0/rels/rel_complex_5.cvc
new file mode 100644
index 0000000..d648171
--- /dev/null
+++ b/test/regress/regress0/rels/rel_complex_5.cvc
@@ -0,0 +1,55 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+IntTup: TYPE = [INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+z : SET OF IntPair;
+r : SET OF IntPair;
+w : SET OF IntPair;
+
+
+f : IntPair;
+ASSERT f = (3,1);
+ASSERT f IS_IN x;
+
+g : IntPair;
+ASSERT g = (1,3);
+ASSERT g IS_IN y;
+
+h : IntPair;
+ASSERT h = (3,5);
+ASSERT h IS_IN x;
+ASSERT h IS_IN y;
+
+ASSERT r = (x JOIN y);
+a:IntTup;
+ASSERT a = TUPLE(1);
+e : IntPair;
+ASSERT e = (1,1);
+
+ASSERT w = ({a} PRODUCT {a});
+ASSERT TRANSPOSE(w) <= y;
+
+ASSERT NOT (e IS_IN r);
+ASSERT NOT(z = (x & y));
+ASSERT z = (x - y);
+ASSERT x <= y;
+ASSERT e IS_IN (r JOIN z);
+ASSERT e IS_IN x;
+ASSERT e IS_IN (x & y);
+CHECKSAT TRUE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/regress/regress0/rels/rel_conflict_0.cvc b/test/regress/regress0/rels/rel_conflict_0.cvc
new file mode 100644
index 0000000..c1b8233
--- /dev/null
+++ b/test/regress/regress0/rels/rel_conflict_0.cvc
@@ -0,0 +1,10 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+e : IntPair;
+ASSERT e = (4, 4);
+ASSERT e IS_IN x;
+
+ASSERT NOT ((4, 4) IS_IN x);
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_join_0.cvc b/test/regress/regress0/rels/rel_join_0.cvc
new file mode 100644
index 0000000..406b8d3
--- /dev/null
+++ b/test/regress/regress0/rels/rel_join_0.cvc
@@ -0,0 +1,24 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntPair;
+ASSERT zt = (2,1);
+v : IntPair;
+ASSERT v = (1,1);
+a : IntPair;
+ASSERT a = (1,5);
+
+ASSERT (1, 7) IS_IN x;
+ASSERT (7, 5) IS_IN y;
+
+ASSERT z IS_IN x;
+ASSERT zt IS_IN y;
+ASSERT NOT (a IS_IN (x JOIN y));
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_join_0_1.cvc b/test/regress/regress0/rels/rel_join_0_1.cvc
new file mode 100644
index 0000000..a7fa7ef
--- /dev/null
+++ b/test/regress/regress0/rels/rel_join_0_1.cvc
@@ -0,0 +1,27 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntPair;
+ASSERT zt = (2,1);
+v : IntPair;
+ASSERT v = (1,1);
+a : IntPair;
+ASSERT a = (1,5);
+
+ASSERT (1, 7) IS_IN x;
+ASSERT (4, 3) IS_IN x;
+ASSERT (7, 5) IS_IN y;
+
+ASSERT z IS_IN x;
+ASSERT zt IS_IN y;
+%ASSERT a IS_IN (x JOIN y);
+%ASSERT NOT (v IS_IN (x JOIN y));
+ASSERT a IS_IN (x JOIN y);
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_join_1.cvc b/test/regress/regress0/rels/rel_join_1.cvc
new file mode 100644
index 0000000..c8921af
--- /dev/null
+++ b/test/regress/regress0/rels/rel_join_1.cvc
@@ -0,0 +1,31 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntPair;
+ASSERT zt = (2,1);
+v : IntPair;
+ASSERT v = (1,1);
+a : IntPair;
+ASSERT a = (1,5);
+
+ASSERT (1, 7) IS_IN x;
+ASSERT (2, 3) IS_IN x;
+ASSERT (3, 4) IS_IN x;
+
+ASSERT (7, 5) IS_IN y;
+ASSERT (7, 3) IS_IN y;
+ASSERT (4, 7) IS_IN y;
+
+%ASSERT (a IS_IN (r JOIN(x JOIN y)));
+
+ASSERT z IS_IN x;
+ASSERT zt IS_IN y;
+ASSERT NOT (a IS_IN (x JOIN y));
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_join_1_1.cvc b/test/regress/regress0/rels/rel_join_1_1.cvc
new file mode 100644
index 0000000..75fc083
--- /dev/null
+++ b/test/regress/regress0/rels/rel_join_1_1.cvc
@@ -0,0 +1,31 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntPair;
+ASSERT zt = (2,1);
+v : IntPair;
+ASSERT v = (1,1);
+a : IntPair;
+ASSERT a = (1,5);
+
+ASSERT (1, 7) IS_IN x;
+ASSERT (2, 3) IS_IN x;
+ASSERT (3, 4) IS_IN x;
+
+ASSERT (7, 5) IS_IN y;
+ASSERT (7, 3) IS_IN y;
+ASSERT (4, 7) IS_IN y;
+
+%ASSERT (a IS_IN (r JOIN(x JOIN y)));
+
+ASSERT z IS_IN x;
+ASSERT zt IS_IN y;
+ASSERT r = (x JOIN y);
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_join_2.cvc b/test/regress/regress0/rels/rel_join_2.cvc
new file mode 100644
index 0000000..cac7ce8
--- /dev/null
+++ b/test/regress/regress0/rels/rel_join_2.cvc
@@ -0,0 +1,20 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+IntTup: TYPE = [INT, INT, INT];
+x : SET OF IntPair;
+y : SET OF IntTup;
+
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntTup;
+ASSERT zt = (2,1,3);
+a : IntTup;
+ASSERT a = (1,1,3);
+
+ASSERT z IS_IN x;
+ASSERT zt IS_IN y;
+
+ASSERT NOT (a IS_IN (x JOIN y));
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_join_2_1.cvc b/test/regress/regress0/rels/rel_join_2_1.cvc
new file mode 100644
index 0000000..3e27b9c
--- /dev/null
+++ b/test/regress/regress0/rels/rel_join_2_1.cvc
@@ -0,0 +1,20 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+IntTup: TYPE = [INT, INT, INT];
+x : SET OF IntPair;
+y : SET OF IntTup;
+
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntTup;
+ASSERT zt = (2,1,3);
+a : IntTup;
+ASSERT a = (1,1,3);
+
+ASSERT z IS_IN x;
+ASSERT zt IS_IN y;
+
+ASSERT a IS_IN (x JOIN y);
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_join_3.cvc b/test/regress/regress0/rels/rel_join_3.cvc
new file mode 100644
index 0000000..6e190ce
--- /dev/null
+++ b/test/regress/regress0/rels/rel_join_3.cvc
@@ -0,0 +1,29 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntPair;
+ASSERT zt = (2,1);
+v : IntPair;
+ASSERT v = (1,1);
+a : IntPair;
+ASSERT a = (1,5);
+
+ASSERT (1, 7) IS_IN x;
+ASSERT (2, 3) IS_IN x;
+ASSERT (3, 4) IS_IN x;
+
+ASSERT (7, 5) IS_IN y;
+ASSERT (7, 3) IS_IN y;
+ASSERT (4, 7) IS_IN y;
+ASSERT r = (x JOIN y);
+ASSERT z IS_IN x;
+ASSERT zt IS_IN y;
+ASSERT NOT (a IS_IN r);
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_join_3_1.cvc b/test/regress/regress0/rels/rel_join_3_1.cvc
new file mode 100644
index 0000000..dedc4ae
--- /dev/null
+++ b/test/regress/regress0/rels/rel_join_3_1.cvc
@@ -0,0 +1,29 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntPair;
+ASSERT zt = (2,1);
+v : IntPair;
+ASSERT v = (1,1);
+a : IntPair;
+ASSERT a = (1,5);
+
+ASSERT (1, 7) IS_IN x;
+ASSERT (2, 3) IS_IN x;
+ASSERT (3, 4) IS_IN x;
+
+ASSERT (7, 5) IS_IN y;
+ASSERT (7, 3) IS_IN y;
+ASSERT (4, 7) IS_IN y;
+ASSERT r = (x JOIN y);
+ASSERT z IS_IN x;
+ASSERT zt IS_IN y;
+ASSERT a IS_IN r;
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_join_4.cvc b/test/regress/regress0/rels/rel_join_4.cvc
new file mode 100644
index 0000000..030810f
--- /dev/null
+++ b/test/regress/regress0/rels/rel_join_4.cvc
@@ -0,0 +1,32 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntPair;
+ASSERT zt = (2,1);
+v : IntPair;
+ASSERT v = (1,1);
+a : IntPair;
+ASSERT a = (1,5);
+
+b : IntPair;
+ASSERT b = (7, 5);
+
+ASSERT (1, 7) IS_IN x;
+ASSERT (2, 3) IS_IN x;
+ASSERT (3, 4) IS_IN x;
+
+ASSERT b IS_IN y;
+ASSERT (7, 3) IS_IN y;
+ASSERT (4, 7) IS_IN y;
+ASSERT r = (x JOIN y);
+ASSERT z IS_IN x;
+ASSERT zt IS_IN y;
+ASSERT NOT (a IS_IN r);
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_join_5.cvc b/test/regress/regress0/rels/rel_join_5.cvc
new file mode 100644
index 0000000..5209d81
--- /dev/null
+++ b/test/regress/regress0/rels/rel_join_5.cvc
@@ -0,0 +1,19 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+z : SET OF IntPair;
+r : SET OF IntPair;
+
+ASSERT (7, 1) IS_IN x;
+ASSERT (2, 3) IS_IN x;
+ASSERT (7, 3) IS_IN y;
+ASSERT (4, 7) IS_IN y;
+ASSERT (3, 4) IS_IN z;
+
+a : IntPair;
+ASSERT a = (1,4);
+ASSERT r = (((TRANSPOSE x) JOIN y) JOIN z);
+ASSERT NOT (a IS_IN r);
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_join_6.cvc b/test/regress/regress0/rels/rel_join_6.cvc
new file mode 100644
index 0000000..1731887
--- /dev/null
+++ b/test/regress/regress0/rels/rel_join_6.cvc
@@ -0,0 +1,13 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+ASSERT x = {(1,2), (3, 4)};
+
+ASSERT y = (x  JOIN {(2,1), (4,3)});
+
+ASSERT NOT ((1,1) IS_IN y);
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_join_7.cvc b/test/regress/regress0/rels/rel_join_7.cvc
new file mode 100644
index 0000000..fff5b6e
--- /dev/null
+++ b/test/regress/regress0/rels/rel_join_7.cvc
@@ -0,0 +1,26 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+w : SET OF IntPair;
+
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntPair;
+ASSERT zt = (2,1);
+v : IntPair;
+ASSERT v = (1,1);
+a : IntPair;
+ASSERT a = (1,5);
+
+ASSERT (1, 7) IS_IN x;
+ASSERT (7, 5) IS_IN y;
+
+ASSERT z IS_IN x;
+ASSERT zt IS_IN y;
+ASSERT w = (r | (x JOIN y));
+ASSERT NOT (a IS_IN w);
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_mix_0_1.cvc b/test/regress/regress0/rels/rel_mix_0_1.cvc
new file mode 100644
index 0000000..723a9b2
--- /dev/null
+++ b/test/regress/regress0/rels/rel_mix_0_1.cvc
@@ -0,0 +1,30 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+IntTup: TYPE = [INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+
+w : SET OF IntTup;
+z : SET OF IntTup;
+r2 : SET OF IntPair;
+
+d : IntPair;
+ASSERT d = (1,3);
+ASSERT (1,3) IS_IN y;
+
+a : IntPair;
+ASSERT a IS_IN x;
+
+e : IntPair;
+ASSERT e = (4,3);
+
+ASSERT r = (x JOIN y);
+ASSERT r2 = (w PRODUCT z);
+
+ASSERT NOT (e IS_IN r);
+%ASSERT e IS_IN r2;
+ASSERT NOT (r = r2);
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_pressure_0.cvc b/test/regress/regress0/rels/rel_pressure_0.cvc
new file mode 100644
index 0000000..6cdf036
--- /dev/null
+++ b/test/regress/regress0/rels/rel_pressure_0.cvc
@@ -0,0 +1,617 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+z : SET OF IntPair;
+r : SET OF IntPair;
+
+a11 : IntPair;
+ASSERT a11 = (1, 1);
+ASSERT a11 IS_IN x;
+a12 : IntPair;
+ASSERT a12 = (1, 2);
+ASSERT a12 IS_IN x;
+a13 : IntPair;
+ASSERT a13 = (1, 3);
+ASSERT a13 IS_IN x;
+a14 : IntPair;
+ASSERT a14 = (1, 4);
+ASSERT a14 IS_IN x;
+a15 : IntPair;
+ASSERT a15 = (1, 5);
+ASSERT a15 IS_IN x;
+a16 : IntPair;
+ASSERT a16 = (1, 6);
+ASSERT a16 IS_IN x;
+a17 : IntPair;
+ASSERT a17 = (1, 7);
+ASSERT a17 IS_IN x;
+a18 : IntPair;
+ASSERT a18 = (1, 8);
+ASSERT a18 IS_IN x;
+a19 : IntPair;
+ASSERT a19 = (1, 9);
+ASSERT a19 IS_IN x;
+a110 : IntPair;
+ASSERT a110 = (1, 10);
+ASSERT a110 IS_IN x;
+a21 : IntPair;
+ASSERT a21 = (2, 1);
+ASSERT a21 IS_IN x;
+a22 : IntPair;
+ASSERT a22 = (2, 2);
+ASSERT a22 IS_IN x;
+a23 : IntPair;
+ASSERT a23 = (2, 3);
+ASSERT a23 IS_IN x;
+a24 : IntPair;
+ASSERT a24 = (2, 4);
+ASSERT a24 IS_IN x;
+a25 : IntPair;
+ASSERT a25 = (2, 5);
+ASSERT a25 IS_IN x;
+a26 : IntPair;
+ASSERT a26 = (2, 6);
+ASSERT a26 IS_IN x;
+a27 : IntPair;
+ASSERT a27 = (2, 7);
+ASSERT a27 IS_IN x;
+a28 : IntPair;
+ASSERT a28 = (2, 8);
+ASSERT a28 IS_IN x;
+a29 : IntPair;
+ASSERT a29 = (2, 9);
+ASSERT a29 IS_IN x;
+a210 : IntPair;
+ASSERT a210 = (2, 10);
+ASSERT a210 IS_IN x;
+a31 : IntPair;
+ASSERT a31 = (3, 1);
+ASSERT a31 IS_IN x;
+a32 : IntPair;
+ASSERT a32 = (3, 2);
+ASSERT a32 IS_IN x;
+a33 : IntPair;
+ASSERT a33 = (3, 3);
+ASSERT a33 IS_IN x;
+a34 : IntPair;
+ASSERT a34 = (3, 4);
+ASSERT a34 IS_IN x;
+a35 : IntPair;
+ASSERT a35 = (3, 5);
+ASSERT a35 IS_IN x;
+a36 : IntPair;
+ASSERT a36 = (3, 6);
+ASSERT a36 IS_IN x;
+a37 : IntPair;
+ASSERT a37 = (3, 7);
+ASSERT a37 IS_IN x;
+a38 : IntPair;
+ASSERT a38 = (3, 8);
+ASSERT a38 IS_IN x;
+a39 : IntPair;
+ASSERT a39 = (3, 9);
+ASSERT a39 IS_IN x;
+a310 : IntPair;
+ASSERT a310 = (3, 10);
+ASSERT a310 IS_IN x;
+a41 : IntPair;
+ASSERT a41 = (4, 1);
+ASSERT a41 IS_IN x;
+a42 : IntPair;
+ASSERT a42 = (4, 2);
+ASSERT a42 IS_IN x;
+a43 : IntPair;
+ASSERT a43 = (4, 3);
+ASSERT a43 IS_IN x;
+a44 : IntPair;
+ASSERT a44 = (4, 4);
+ASSERT a44 IS_IN x;
+a45 : IntPair;
+ASSERT a45 = (4, 5);
+ASSERT a45 IS_IN x;
+a46 : IntPair;
+ASSERT a46 = (4, 6);
+ASSERT a46 IS_IN x;
+a47 : IntPair;
+ASSERT a47 = (4, 7);
+ASSERT a47 IS_IN x;
+a48 : IntPair;
+ASSERT a48 = (4, 8);
+ASSERT a48 IS_IN x;
+a49 : IntPair;
+ASSERT a49 = (4, 9);
+ASSERT a49 IS_IN x;
+a410 : IntPair;
+ASSERT a410 = (4, 10);
+ASSERT a410 IS_IN x;
+a51 : IntPair;
+ASSERT a51 = (5, 1);
+ASSERT a51 IS_IN x;
+a52 : IntPair;
+ASSERT a52 = (5, 2);
+ASSERT a52 IS_IN x;
+a53 : IntPair;
+ASSERT a53 = (5, 3);
+ASSERT a53 IS_IN x;
+a54 : IntPair;
+ASSERT a54 = (5, 4);
+ASSERT a54 IS_IN x;
+a55 : IntPair;
+ASSERT a55 = (5, 5);
+ASSERT a55 IS_IN x;
+a56 : IntPair;
+ASSERT a56 = (5, 6);
+ASSERT a56 IS_IN x;
+a57 : IntPair;
+ASSERT a57 = (5, 7);
+ASSERT a57 IS_IN x;
+a58 : IntPair;
+ASSERT a58 = (5, 8);
+ASSERT a58 IS_IN x;
+a59 : IntPair;
+ASSERT a59 = (5, 9);
+ASSERT a59 IS_IN x;
+a510 : IntPair;
+ASSERT a510 = (5, 10);
+ASSERT a510 IS_IN x;
+a61 : IntPair;
+ASSERT a61 = (6, 1);
+ASSERT a61 IS_IN x;
+a62 : IntPair;
+ASSERT a62 = (6, 2);
+ASSERT a62 IS_IN x;
+a63 : IntPair;
+ASSERT a63 = (6, 3);
+ASSERT a63 IS_IN x;
+a64 : IntPair;
+ASSERT a64 = (6, 4);
+ASSERT a64 IS_IN x;
+a65 : IntPair;
+ASSERT a65 = (6, 5);
+ASSERT a65 IS_IN x;
+a66 : IntPair;
+ASSERT a66 = (6, 6);
+ASSERT a66 IS_IN x;
+a67 : IntPair;
+ASSERT a67 = (6, 7);
+ASSERT a67 IS_IN x;
+a68 : IntPair;
+ASSERT a68 = (6, 8);
+ASSERT a68 IS_IN x;
+a69 : IntPair;
+ASSERT a69 = (6, 9);
+ASSERT a69 IS_IN x;
+a610 : IntPair;
+ASSERT a610 = (6, 10);
+ASSERT a610 IS_IN x;
+a71 : IntPair;
+ASSERT a71 = (7, 1);
+ASSERT a71 IS_IN x;
+a72 : IntPair;
+ASSERT a72 = (7, 2);
+ASSERT a72 IS_IN x;
+a73 : IntPair;
+ASSERT a73 = (7, 3);
+ASSERT a73 IS_IN x;
+a74 : IntPair;
+ASSERT a74 = (7, 4);
+ASSERT a74 IS_IN x;
+a75 : IntPair;
+ASSERT a75 = (7, 5);
+ASSERT a75 IS_IN x;
+a76 : IntPair;
+ASSERT a76 = (7, 6);
+ASSERT a76 IS_IN x;
+a77 : IntPair;
+ASSERT a77 = (7, 7);
+ASSERT a77 IS_IN x;
+a78 : IntPair;
+ASSERT a78 = (7, 8);
+ASSERT a78 IS_IN x;
+a79 : IntPair;
+ASSERT a79 = (7, 9);
+ASSERT a79 IS_IN x;
+a710 : IntPair;
+ASSERT a710 = (7, 10);
+ASSERT a710 IS_IN x;
+a81 : IntPair;
+ASSERT a81 = (8, 1);
+ASSERT a81 IS_IN x;
+a82 : IntPair;
+ASSERT a82 = (8, 2);
+ASSERT a82 IS_IN x;
+a83 : IntPair;
+ASSERT a83 = (8, 3);
+ASSERT a83 IS_IN x;
+a84 : IntPair;
+ASSERT a84 = (8, 4);
+ASSERT a84 IS_IN x;
+a85 : IntPair;
+ASSERT a85 = (8, 5);
+ASSERT a85 IS_IN x;
+a86 : IntPair;
+ASSERT a86 = (8, 6);
+ASSERT a86 IS_IN x;
+a87 : IntPair;
+ASSERT a87 = (8, 7);
+ASSERT a87 IS_IN x;
+a88 : IntPair;
+ASSERT a88 = (8, 8);
+ASSERT a88 IS_IN x;
+a89 : IntPair;
+ASSERT a89 = (8, 9);
+ASSERT a89 IS_IN x;
+a810 : IntPair;
+ASSERT a810 = (8, 10);
+ASSERT a810 IS_IN x;
+a91 : IntPair;
+ASSERT a91 = (9, 1);
+ASSERT a91 IS_IN x;
+a92 : IntPair;
+ASSERT a92 = (9, 2);
+ASSERT a92 IS_IN x;
+a93 : IntPair;
+ASSERT a93 = (9, 3);
+ASSERT a93 IS_IN x;
+a94 : IntPair;
+ASSERT a94 = (9, 4);
+ASSERT a94 IS_IN x;
+a95 : IntPair;
+ASSERT a95 = (9, 5);
+ASSERT a95 IS_IN x;
+a96 : IntPair;
+ASSERT a96 = (9, 6);
+ASSERT a96 IS_IN x;
+a97 : IntPair;
+ASSERT a97 = (9, 7);
+ASSERT a97 IS_IN x;
+a98 : IntPair;
+ASSERT a98 = (9, 8);
+ASSERT a98 IS_IN x;
+a99 : IntPair;
+ASSERT a99 = (9, 9);
+ASSERT a99 IS_IN x;
+a910 : IntPair;
+ASSERT a910 = (9, 10);
+ASSERT a910 IS_IN x;
+a101 : IntPair;
+ASSERT a101 = (10, 1);
+ASSERT a101 IS_IN x;
+a102 : IntPair;
+ASSERT a102 = (10, 2);
+ASSERT a102 IS_IN x;
+a103 : IntPair;
+ASSERT a103 = (10, 3);
+ASSERT a103 IS_IN x;
+a104 : IntPair;
+ASSERT a104 = (10, 4);
+ASSERT a104 IS_IN x;
+a105 : IntPair;
+ASSERT a105 = (10, 5);
+ASSERT a105 IS_IN x;
+a106 : IntPair;
+ASSERT a106 = (10, 6);
+ASSERT a106 IS_IN x;
+a107 : IntPair;
+ASSERT a107 = (10, 7);
+ASSERT a107 IS_IN x;
+a108 : IntPair;
+ASSERT a108 = (10, 8);
+ASSERT a108 IS_IN x;
+a109 : IntPair;
+ASSERT a109 = (10, 9);
+ASSERT a109 IS_IN x;
+a1010 : IntPair;
+ASSERT a1010 = (10, 10);
+ASSERT a1010 IS_IN x;
+b11 : IntPair;
+ASSERT b11 = (1, 1);
+ASSERT b11 IS_IN y;
+b12 : IntPair;
+ASSERT b12 = (1, 2);
+ASSERT b12 IS_IN y;
+b13 : IntPair;
+ASSERT b13 = (1, 3);
+ASSERT b13 IS_IN y;
+b14 : IntPair;
+ASSERT b14 = (1, 4);
+ASSERT b14 IS_IN y;
+b15 : IntPair;
+ASSERT b15 = (1, 5);
+ASSERT b15 IS_IN y;
+b16 : IntPair;
+ASSERT b16 = (1, 6);
+ASSERT b16 IS_IN y;
+b17 : IntPair;
+ASSERT b17 = (1, 7);
+ASSERT b17 IS_IN y;
+b18 : IntPair;
+ASSERT b18 = (1, 8);
+ASSERT b18 IS_IN y;
+b19 : IntPair;
+ASSERT b19 = (1, 9);
+ASSERT b19 IS_IN y;
+b110 : IntPair;
+ASSERT b110 = (1, 10);
+ASSERT b110 IS_IN y;
+b21 : IntPair;
+ASSERT b21 = (2, 1);
+ASSERT b21 IS_IN y;
+b22 : IntPair;
+ASSERT b22 = (2, 2);
+ASSERT b22 IS_IN y;
+b23 : IntPair;
+ASSERT b23 = (2, 3);
+ASSERT b23 IS_IN y;
+b24 : IntPair;
+ASSERT b24 = (2, 4);
+ASSERT b24 IS_IN y;
+b25 : IntPair;
+ASSERT b25 = (2, 5);
+ASSERT b25 IS_IN y;
+b26 : IntPair;
+ASSERT b26 = (2, 6);
+ASSERT b26 IS_IN y;
+b27 : IntPair;
+ASSERT b27 = (2, 7);
+ASSERT b27 IS_IN y;
+b28 : IntPair;
+ASSERT b28 = (2, 8);
+ASSERT b28 IS_IN y;
+b29 : IntPair;
+ASSERT b29 = (2, 9);
+ASSERT b29 IS_IN y;
+b210 : IntPair;
+ASSERT b210 = (2, 10);
+ASSERT b210 IS_IN y;
+b31 : IntPair;
+ASSERT b31 = (3, 1);
+ASSERT b31 IS_IN y;
+b32 : IntPair;
+ASSERT b32 = (3, 2);
+ASSERT b32 IS_IN y;
+b33 : IntPair;
+ASSERT b33 = (3, 3);
+ASSERT b33 IS_IN y;
+b34 : IntPair;
+ASSERT b34 = (3, 4);
+ASSERT b34 IS_IN y;
+b35 : IntPair;
+ASSERT b35 = (3, 5);
+ASSERT b35 IS_IN y;
+b36 : IntPair;
+ASSERT b36 = (3, 6);
+ASSERT b36 IS_IN y;
+b37 : IntPair;
+ASSERT b37 = (3, 7);
+ASSERT b37 IS_IN y;
+b38 : IntPair;
+ASSERT b38 = (3, 8);
+ASSERT b38 IS_IN y;
+b39 : IntPair;
+ASSERT b39 = (3, 9);
+ASSERT b39 IS_IN y;
+b310 : IntPair;
+ASSERT b310 = (3, 10);
+ASSERT b310 IS_IN y;
+b41 : IntPair;
+ASSERT b41 = (4, 1);
+ASSERT b41 IS_IN y;
+b42 : IntPair;
+ASSERT b42 = (4, 2);
+ASSERT b42 IS_IN y;
+b43 : IntPair;
+ASSERT b43 = (4, 3);
+ASSERT b43 IS_IN y;
+b44 : IntPair;
+ASSERT b44 = (4, 4);
+ASSERT b44 IS_IN y;
+b45 : IntPair;
+ASSERT b45 = (4, 5);
+ASSERT b45 IS_IN y;
+b46 : IntPair;
+ASSERT b46 = (4, 6);
+ASSERT b46 IS_IN y;
+b47 : IntPair;
+ASSERT b47 = (4, 7);
+ASSERT b47 IS_IN y;
+b48 : IntPair;
+ASSERT b48 = (4, 8);
+ASSERT b48 IS_IN y;
+b49 : IntPair;
+ASSERT b49 = (4, 9);
+ASSERT b49 IS_IN y;
+b410 : IntPair;
+ASSERT b410 = (4, 10);
+ASSERT b410 IS_IN y;
+b51 : IntPair;
+ASSERT b51 = (5, 1);
+ASSERT b51 IS_IN y;
+b52 : IntPair;
+ASSERT b52 = (5, 2);
+ASSERT b52 IS_IN y;
+b53 : IntPair;
+ASSERT b53 = (5, 3);
+ASSERT b53 IS_IN y;
+b54 : IntPair;
+ASSERT b54 = (5, 4);
+ASSERT b54 IS_IN y;
+b55 : IntPair;
+ASSERT b55 = (5, 5);
+ASSERT b55 IS_IN y;
+b56 : IntPair;
+ASSERT b56 = (5, 6);
+ASSERT b56 IS_IN y;
+b57 : IntPair;
+ASSERT b57 = (5, 7);
+ASSERT b57 IS_IN y;
+b58 : IntPair;
+ASSERT b58 = (5, 8);
+ASSERT b58 IS_IN y;
+b59 : IntPair;
+ASSERT b59 = (5, 9);
+ASSERT b59 IS_IN y;
+b510 : IntPair;
+ASSERT b510 = (5, 10);
+ASSERT b510 IS_IN y;
+b61 : IntPair;
+ASSERT b61 = (6, 1);
+ASSERT b61 IS_IN y;
+b62 : IntPair;
+ASSERT b62 = (6, 2);
+ASSERT b62 IS_IN y;
+b63 : IntPair;
+ASSERT b63 = (6, 3);
+ASSERT b63 IS_IN y;
+b64 : IntPair;
+ASSERT b64 = (6, 4);
+ASSERT b64 IS_IN y;
+b65 : IntPair;
+ASSERT b65 = (6, 5);
+ASSERT b65 IS_IN y;
+b66 : IntPair;
+ASSERT b66 = (6, 6);
+ASSERT b66 IS_IN y;
+b67 : IntPair;
+ASSERT b67 = (6, 7);
+ASSERT b67 IS_IN y;
+b68 : IntPair;
+ASSERT b68 = (6, 8);
+ASSERT b68 IS_IN y;
+b69 : IntPair;
+ASSERT b69 = (6, 9);
+ASSERT b69 IS_IN y;
+b610 : IntPair;
+ASSERT b610 = (6, 10);
+ASSERT b610 IS_IN y;
+b71 : IntPair;
+ASSERT b71 = (7, 1);
+ASSERT b71 IS_IN y;
+b72 : IntPair;
+ASSERT b72 = (7, 2);
+ASSERT b72 IS_IN y;
+b73 : IntPair;
+ASSERT b73 = (7, 3);
+ASSERT b73 IS_IN y;
+b74 : IntPair;
+ASSERT b74 = (7, 4);
+ASSERT b74 IS_IN y;
+b75 : IntPair;
+ASSERT b75 = (7, 5);
+ASSERT b75 IS_IN y;
+b76 : IntPair;
+ASSERT b76 = (7, 6);
+ASSERT b76 IS_IN y;
+b77 : IntPair;
+ASSERT b77 = (7, 7);
+ASSERT b77 IS_IN y;
+b78 : IntPair;
+ASSERT b78 = (7, 8);
+ASSERT b78 IS_IN y;
+b79 : IntPair;
+ASSERT b79 = (7, 9);
+ASSERT b79 IS_IN y;
+b710 : IntPair;
+ASSERT b710 = (7, 10);
+ASSERT b710 IS_IN y;
+b81 : IntPair;
+ASSERT b81 = (8, 1);
+ASSERT b81 IS_IN y;
+b82 : IntPair;
+ASSERT b82 = (8, 2);
+ASSERT b82 IS_IN y;
+b83 : IntPair;
+ASSERT b83 = (8, 3);
+ASSERT b83 IS_IN y;
+b84 : IntPair;
+ASSERT b84 = (8, 4);
+ASSERT b84 IS_IN y;
+b85 : IntPair;
+ASSERT b85 = (8, 5);
+ASSERT b85 IS_IN y;
+b86 : IntPair;
+ASSERT b86 = (8, 6);
+ASSERT b86 IS_IN y;
+b87 : IntPair;
+ASSERT b87 = (8, 7);
+ASSERT b87 IS_IN y;
+b88 : IntPair;
+ASSERT b88 = (8, 8);
+ASSERT b88 IS_IN y;
+b89 : IntPair;
+ASSERT b89 = (8, 9);
+ASSERT b89 IS_IN y;
+b810 : IntPair;
+ASSERT b810 = (8, 10);
+ASSERT b810 IS_IN y;
+b91 : IntPair;
+ASSERT b91 = (9, 1);
+ASSERT b91 IS_IN y;
+b92 : IntPair;
+ASSERT b92 = (9, 2);
+ASSERT b92 IS_IN y;
+b93 : IntPair;
+ASSERT b93 = (9, 3);
+ASSERT b93 IS_IN y;
+b94 : IntPair;
+ASSERT b94 = (9, 4);
+ASSERT b94 IS_IN y;
+b95 : IntPair;
+ASSERT b95 = (9, 5);
+ASSERT b95 IS_IN y;
+b96 : IntPair;
+ASSERT b96 = (9, 6);
+ASSERT b96 IS_IN y;
+b97 : IntPair;
+ASSERT b97 = (9, 7);
+ASSERT b97 IS_IN y;
+b98 : IntPair;
+ASSERT b98 = (9, 8);
+ASSERT b98 IS_IN y;
+b99 : IntPair;
+ASSERT b99 = (9, 9);
+ASSERT b99 IS_IN y;
+b910 : IntPair;
+ASSERT b910 = (9, 10);
+ASSERT b910 IS_IN y;
+b101 : IntPair;
+ASSERT b101 = (10, 1);
+ASSERT b101 IS_IN y;
+b102 : IntPair;
+ASSERT b102 = (10, 2);
+ASSERT b102 IS_IN y;
+b103 : IntPair;
+ASSERT b103 = (10, 3);
+ASSERT b103 IS_IN y;
+b104 : IntPair;
+ASSERT b104 = (10, 4);
+ASSERT b104 IS_IN y;
+b105 : IntPair;
+ASSERT b105 = (10, 5);
+ASSERT b105 IS_IN y;
+b106 : IntPair;
+ASSERT b106 = (10, 6);
+ASSERT b106 IS_IN y;
+b107 : IntPair;
+ASSERT b107 = (10, 7);
+ASSERT b107 IS_IN y;
+b108 : IntPair;
+ASSERT b108 = (10, 8);
+ASSERT b108 IS_IN y;
+b109 : IntPair;
+ASSERT b109 = (10, 9);
+ASSERT b109 IS_IN y;
+b1010 : IntPair;
+ASSERT b1010 = (10, 10);
+ASSERT b1010 IS_IN y;
+
+ASSERT (1, 9) IS_IN z;
+
+a : IntPair;
+ASSERT a = (9,1);
+ASSERT r = (((TRANSPOSE x) JOIN y) JOIN z);
+ASSERT NOT (a IS_IN (TRANSPOSE r));
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_product_0.cvc b/test/regress/regress0/rels/rel_product_0.cvc
new file mode 100644
index 0000000..09981be
--- /dev/null
+++ b/test/regress/regress0/rels/rel_product_0.cvc
@@ -0,0 +1,20 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+IntTup: TYPE = [INT, INT, INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntPair;
+ASSERT zt = (2,1);
+v : IntTup;
+ASSERT v = (1,2,2,1);
+
+ASSERT z IS_IN x;
+ASSERT zt IS_IN y;
+ASSERT NOT (v IS_IN (x PRODUCT y));
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_product_0_1.cvc b/test/regress/regress0/rels/rel_product_0_1.cvc
new file mode 100644
index 0000000..f141c7b
--- /dev/null
+++ b/test/regress/regress0/rels/rel_product_0_1.cvc
@@ -0,0 +1,20 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+IntTup: TYPE = [INT, INT, INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntPair;
+ASSERT zt = (2,1);
+v : IntTup;
+ASSERT v = (1,2,2,1);
+
+ASSERT z IS_IN x;
+ASSERT zt IS_IN y;
+ASSERT v IS_IN (x PRODUCT y);
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_product_1.cvc b/test/regress/regress0/rels/rel_product_1.cvc
new file mode 100644
index 0000000..1826e5a
--- /dev/null
+++ b/test/regress/regress0/rels/rel_product_1.cvc
@@ -0,0 +1,20 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT, INT];
+IntTup: TYPE = [INT, INT, INT, INT,INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+
+z : IntPair;
+ASSERT z = (1,2,3);
+zt : IntPair;
+ASSERT zt = (3,2,1);
+v : IntTup;
+ASSERT v = (1,2,3,3,2,1);
+
+ASSERT z IS_IN x;
+ASSERT zt IS_IN y;
+ASSERT NOT (v IS_IN (x PRODUCT y));
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_product_1_1.cvc b/test/regress/regress0/rels/rel_product_1_1.cvc
new file mode 100644
index 0000000..2d79cbc
--- /dev/null
+++ b/test/regress/regress0/rels/rel_product_1_1.cvc
@@ -0,0 +1,21 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT, INT];
+IntTup: TYPE = [INT, INT, INT, INT,INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntTup;
+
+z : IntPair;
+ASSERT z = (1,2,3);
+zt : IntPair;
+ASSERT zt = (3,2,1);
+
+
+ASSERT z IS_IN x;
+ASSERT zt IS_IN y;
+ASSERT (1,1,1,1,1,1) IS_IN r;
+ASSERT r = (x PRODUCT y);
+
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_symbolic_1.cvc b/test/regress/regress0/rels/rel_symbolic_1.cvc
new file mode 100644
index 0000000..08ed324
--- /dev/null
+++ b/test/regress/regress0/rels/rel_symbolic_1.cvc
@@ -0,0 +1,21 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+f : INT;
+d : IntPair;
+ASSERT d = (f,3);
+ASSERT d IS_IN y;
+e : IntPair;
+ASSERT e = (4, f);
+ASSERT e IS_IN x;
+
+a : IntPair;
+ASSERT a = (4,3);
+
+ASSERT r = (x JOIN y);
+
+ASSERT NOT (a IS_IN r);
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_symbolic_1_1.cvc b/test/regress/regress0/rels/rel_symbolic_1_1.cvc
new file mode 100644
index 0000000..df2d7f4
--- /dev/null
+++ b/test/regress/regress0/rels/rel_symbolic_1_1.cvc
@@ -0,0 +1,20 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+
+d : IntPair;
+ASSERT d IS_IN y;
+
+a : IntPair;
+ASSERT a IS_IN x;
+
+e : IntPair;
+ASSERT e = (4,3);
+
+ASSERT r = (x JOIN y);
+
+ASSERT NOT (e IS_IN r);
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_symbolic_2_1.cvc b/test/regress/regress0/rels/rel_symbolic_2_1.cvc
new file mode 100644
index 0000000..082604d
--- /dev/null
+++ b/test/regress/regress0/rels/rel_symbolic_2_1.cvc
@@ -0,0 +1,21 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+
+d : IntPair;
+ASSERT d = (1,3);
+ASSERT (1,3) IS_IN y;
+
+a : IntPair;
+ASSERT a IS_IN x;
+
+e : IntPair;
+ASSERT e = (4,3);
+
+ASSERT r = (x JOIN y);
+
+ASSERT NOT (e IS_IN r);
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_symbolic_3_1.cvc b/test/regress/regress0/rels/rel_symbolic_3_1.cvc
new file mode 100644
index 0000000..da0906d
--- /dev/null
+++ b/test/regress/regress0/rels/rel_symbolic_3_1.cvc
@@ -0,0 +1,21 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+f : INT;
+d : IntPair;
+ASSERT d IS_IN y;
+
+e : IntPair;
+ASSERT e = (4, f);
+ASSERT e IS_IN x;
+
+a : IntPair;
+ASSERT a = (4,3);
+
+ASSERT r = (x JOIN y);
+
+ASSERT NOT (a IS_IN r);
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_tc_10_1.cvc b/test/regress/regress0/rels/rel_tc_10_1.cvc
new file mode 100644
index 0000000..67c4440
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tc_10_1.cvc
@@ -0,0 +1,18 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+a: INT;
+b:INT;
+c:INT;
+d:INT;
+ASSERT a = c;
+ASSERT a = d;
+ASSERT (1, c) IS_IN x;
+ASSERT (2, d) IS_IN x;
+ASSERT (a, 5) IS_IN y;
+ASSERT y = (TCLOSURE x);
+ASSERT ((2, 5) IS_IN y);
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_tc_11.cvc b/test/regress/regress0/rels/rel_tc_11.cvc
new file mode 100644
index 0000000..7edeb0e
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tc_11.cvc
@@ -0,0 +1,18 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+IntTup: TYPE = [INT, INT, INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+z : SET OF IntTup;
+ASSERT (2, 3) IS_IN x;
+ASSERT (5, 3) IS_IN x;
+ASSERT (3, 9) IS_IN x;
+ASSERT z = (x PRODUCT y);
+ASSERT (1, 2, 3, 4) IS_IN z;
+ASSERT NOT ((5, 9) IS_IN x);
+ASSERT (3, 8) IS_IN y;
+ASSERT y = (TCLOSURE x);
+ASSERT NOT ((1, 2) IS_IN y);
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_tc_2_1.cvc b/test/regress/regress0/rels/rel_tc_2_1.cvc
new file mode 100644
index 0000000..d5d42ea
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tc_2_1.cvc
@@ -0,0 +1,28 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+ e: INT;
+
+a : IntPair;
+ASSERT a = (1,	e);
+
+d : IntPair;
+ASSERT d = (e,5);
+
+ASSERT a IS_IN x;
+ASSERT d IS_IN x;
+ASSERT NOT ((1,1) IS_IN x);
+ASSERT NOT ((1,2) IS_IN x);
+ASSERT NOT ((1,3) IS_IN x);
+ASSERT NOT ((1,4) IS_IN x);
+ASSERT NOT ((1,5) IS_IN x);
+ASSERT NOT ((1,6) IS_IN x);
+ASSERT NOT ((1,7) IS_IN x);
+
+ASSERT y = TCLOSURE(x);
+
+ASSERT (1, 5) IS_IN y;
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_tc_3.cvc b/test/regress/regress0/rels/rel_tc_3.cvc
new file mode 100644
index 0000000..39564c4
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tc_3.cvc
@@ -0,0 +1,22 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+a: INT;
+b:INT;
+c:INT;
+d:INT;
+ASSERT (1, a) IS_IN x;
+ASSERT (1, c) IS_IN x;
+ASSERT (1, d) IS_IN x;
+ASSERT (b, 1) IS_IN x;
+ASSERT (b = d);
+ASSERT (b > (d -1));
+ASSERT (b < (d+1));
+%ASSERT (2,3) IS_IN ((x JOIN x) JOIN x);
+%ASSERT NOT (2, 3) IS_IN (TCLOSURE x);
+ASSERT y = (TCLOSURE x);
+ASSERT NOT ((1, 1) IS_IN y);
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_tc_3_1.cvc b/test/regress/regress0/rels/rel_tc_3_1.cvc
new file mode 100644
index 0000000..7f55356
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tc_3_1.cvc
@@ -0,0 +1,18 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+a: INT;
+b:INT;
+c:INT;
+d:INT;
+ASSERT (1, a) IS_IN x;
+ASSERT (1, c) IS_IN x;
+ASSERT (1, d) IS_IN x;
+ASSERT (b, 1) IS_IN x;
+ASSERT (b = d);
+
+ASSERT y = (TCLOSURE x);
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_tc_4.cvc b/test/regress/regress0/rels/rel_tc_4.cvc
new file mode 100644
index 0000000..decd38f
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tc_4.cvc
@@ -0,0 +1,19 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+a: INT;
+b:INT;
+c:INT;
+d:INT;
+ASSERT (1, a) IS_IN x;
+ASSERT (1, c) IS_IN x;
+ASSERT (1, d) IS_IN x;
+ASSERT (b, 1) IS_IN x;
+ASSERT (b = d);
+ASSERT (2,b) IS_IN ((x JOIN x) JOIN x);
+ASSERT NOT (2, 1) IS_IN (TCLOSURE x);
+
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_tc_4_1.cvc b/test/regress/regress0/rels/rel_tc_4_1.cvc
new file mode 100644
index 0000000..8ee75f7
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tc_4_1.cvc
@@ -0,0 +1,10 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+z : SET OF IntPair;
+ASSERT y = ((TCLOSURE x) JOIN x);
+ASSERT NOT (y = TCLOSURE x);
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_tc_5_1.cvc b/test/regress/regress0/rels/rel_tc_5_1.cvc
new file mode 100644
index 0000000..fd9caea
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tc_5_1.cvc
@@ -0,0 +1,9 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+ASSERT y = (TCLOSURE x);
+ASSERT NOT ( y = ((x JOIN x) JOIN x));
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_tc_6.cvc b/test/regress/regress0/rels/rel_tc_6.cvc
new file mode 100644
index 0000000..4570c5a
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tc_6.cvc
@@ -0,0 +1,9 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+ASSERT y = (TCLOSURE x);
+ASSERT NOT (((x JOIN x) JOIN x) <= y);
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_tc_7.cvc b/test/regress/regress0/rels/rel_tc_7.cvc
new file mode 100644
index 0000000..15c0510
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tc_7.cvc
@@ -0,0 +1,10 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+ASSERT y = ((TCLOSURE x) JOIN x);
+ASSERT (1,2) IS_IN ((x JOIN x) JOIN x);
+ASSERT NOT (y <= TCLOSURE x);
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_tc_9_1.cvc b/test/regress/regress0/rels/rel_tc_9_1.cvc
new file mode 100644
index 0000000..f884349
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tc_9_1.cvc
@@ -0,0 +1,23 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+z : SET OF IntPair;
+w : SET OF IntPair;
+
+ASSERT z = (TCLOSURE x);
+ASSERT w = (x JOIN y);
+ASSERT (2, 2) IS_IN z;
+ASSERT (0,3) IS_IN y;
+ASSERT (-1,3) IS_IN y;
+ASSERT (1,3) IS_IN y;
+ASSERT (-2,3) IS_IN y;
+ASSERT (2,3) IS_IN y;
+ASSERT (3,3) IS_IN y;
+ASSERT (4,3) IS_IN y;
+ASSERT (5,3) IS_IN y;
+ASSERT NOT (2, 3) IS_IN (x JOIN y);
+ASSERT NOT (2,1) IS_IN x;
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_tp_2.cvc b/test/regress/regress0/rels/rel_tp_2.cvc
new file mode 100644
index 0000000..441e79c
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tp_2.cvc
@@ -0,0 +1,10 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+z : SET OF IntPair;
+ASSERT (z = TRANSPOSE(y) OR z = TRANSPOSE(x));
+ASSERT NOT (TRANSPOSE(z) = y);
+ASSERT NOT (TRANSPOSE(z) = x);
+CHECKSAT;
\ No newline at end of file
diff --git a/test/regress/regress0/rels/rel_tp_3_1.cvc b/test/regress/regress0/rels/rel_tp_3_1.cvc
new file mode 100644
index 0000000..46806b4
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tp_3_1.cvc
@@ -0,0 +1,14 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+z: SET OF IntPair;
+
+ASSERT (1, 3) IS_IN x;
+ASSERT ((2,3) IS_IN z OR (2,1) IS_IN z);
+ASSERT y = (TRANSPOSE x);
+ASSERT NOT (1,2) IS_IN y;
+
+ASSERT x = z;
+CHECKSAT;
\ No newline at end of file
diff --git a/test/regress/regress0/rels/rel_tp_join_0.cvc b/test/regress/regress0/rels/rel_tp_join_0.cvc
new file mode 100644
index 0000000..a03f0e3
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tp_join_0.cvc
@@ -0,0 +1,32 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+
+
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntPair;
+ASSERT zt = (2,1);
+v : IntPair;
+ASSERT v = (1,1);
+a : IntPair;
+ASSERT a = (5,1);
+
+b : IntPair;
+ASSERT b = (7, 5);
+
+ASSERT (1, 7) IS_IN x;
+ASSERT (2, 3) IS_IN x;
+ASSERT (3, 4) IS_IN x;
+
+ASSERT b IS_IN y;
+ASSERT (7, 3) IS_IN y;
+ASSERT (4, 7) IS_IN y;
+ASSERT r = (x JOIN y);
+ASSERT z IS_IN x;
+ASSERT zt IS_IN y;
+ASSERT NOT (a IS_IN (TRANSPOSE r));
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_tp_join_1.cvc b/test/regress/regress0/rels/rel_tp_join_1.cvc
new file mode 100644
index 0000000..60b6edf
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tp_join_1.cvc
@@ -0,0 +1,32 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+z : SET OF IntPair;
+r : SET OF IntPair;
+
+b : IntPair;
+ASSERT b = (1,7);
+c : IntPair;
+ASSERT c = (2,3);
+ASSERT b IS_IN x;
+ASSERT c IS_IN x;
+
+d : IntPair;
+ASSERT d = (7,3);
+e : IntPair;
+ASSERT e = (4,7);
+
+ASSERT d IS_IN y;
+ASSERT e IS_IN y;
+
+ASSERT (3, 4) IS_IN z;
+
+a : IntPair;
+ASSERT a = (4,1);
+
+ASSERT r = ((x JOIN y) JOIN z);
+
+ASSERT NOT (a IS_IN (TRANSPOSE r));
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_tp_join_2.cvc b/test/regress/regress0/rels/rel_tp_join_2.cvc
new file mode 100644
index 0000000..cc851f6
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tp_join_2.cvc
@@ -0,0 +1,19 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+z : SET OF IntPair;
+r : SET OF IntPair;
+
+ASSERT (7, 1) IS_IN x;
+ASSERT (2, 3) IS_IN x;
+ASSERT (7, 3) IS_IN y;
+ASSERT (4, 7) IS_IN y;
+ASSERT (3, 4) IS_IN z;
+
+a : IntPair;
+ASSERT a = (4,1);
+ASSERT r = (((TRANSPOSE x) JOIN y) JOIN z);
+ASSERT NOT (a IS_IN (TRANSPOSE r));
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_tp_join_2_1.cvc b/test/regress/regress0/rels/rel_tp_join_2_1.cvc
new file mode 100644
index 0000000..acf3dbc
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tp_join_2_1.cvc
@@ -0,0 +1,19 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+z : SET OF IntPair;
+r : SET OF IntPair;
+ASSERT (7, 1) IS_IN x;
+ASSERT (2, 3) IS_IN x;
+
+ASSERT (7, 3) IS_IN y;
+ASSERT (4, 7) IS_IN y;
+ASSERT (3, 4) IS_IN z;
+a : IntPair;
+ASSERT a = (4,1);
+
+ASSERT r = (((TRANSPOSE x) JOIN y) JOIN z);
+ASSERT a IS_IN (TRANSPOSE r);
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_tp_join_3.cvc b/test/regress/regress0/rels/rel_tp_join_3.cvc
new file mode 100644
index 0000000..25277f4
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tp_join_3.cvc
@@ -0,0 +1,28 @@
+% EXPECT: unsat
+% crash on this
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+w : SET OF IntPair;
+x : SET OF IntPair;
+y : SET OF IntPair;
+z : SET OF IntPair;
+r : SET OF IntPair;
+
+ASSERT (7, 1) IS_IN x;
+ASSERT (2, 3) IS_IN x;
+ASSERT (7, 3) IS_IN y;
+ASSERT (4, 7) IS_IN y;
+ASSERT (3, 4) IS_IN z;
+ASSERT (3, 3) IS_IN w;
+
+a : IntPair;
+ASSERT a = (4,1);
+%ASSERT r = (((TRANSPOSE x) JOIN y) JOIN (w JOIN z));
+ASSERT NOT (a IS_IN (TRANSPOSE r));
+
+zz : SET OF IntPair;
+ASSERT zz = ((TRANSPOSE x) JOIN y);
+ASSERT NOT ((1,3) IS_IN w);
+ASSERT NOT ((1,3) IS_IN (w | zz) );
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_tp_join_eq_0.cvc b/test/regress/regress0/rels/rel_tp_join_eq_0.cvc
new file mode 100644
index 0000000..54e16dd
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tp_join_eq_0.cvc
@@ -0,0 +1,28 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+z : SET OF IntPair;
+r : SET OF IntPair;
+
+
+ASSERT x = {(1,7), (2,3)};
+
+d : IntPair;
+ASSERT d = (7,3);
+e : IntPair;
+ASSERT e = (4,7);
+
+ASSERT d IS_IN y;
+ASSERT e IS_IN y;
+
+ASSERT (3, 4) IS_IN z;
+
+a : IntPair;
+ASSERT a = (4,1);
+
+ASSERT r = ((x JOIN y) JOIN z);
+
+ASSERT NOT (a IS_IN (TRANSPOSE r));
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_tp_join_int_0.cvc b/test/regress/regress0/rels/rel_tp_join_int_0.cvc
new file mode 100644
index 0000000..8d149a4
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tp_join_int_0.cvc
@@ -0,0 +1,26 @@
+% EXPECT: unsat
+% crash on this
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+w : SET OF IntPair;
+x : SET OF IntPair;
+y : SET OF IntPair;
+z : SET OF IntPair;
+r : SET OF IntPair;
+
+t : INT;
+u : INT;
+
+ASSERT 4 < t AND t < 6;
+ASSERT 4 < u AND u < 6;
+
+ASSERT (1, u) IS_IN x;
+ASSERT (t, 3) IS_IN y;
+
+a : IntPair;
+ASSERT a = (1,3);
+
+ASSERT NOT (a IS_IN  (x JOIN y));
+
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_tp_join_pro_0.cvc b/test/regress/regress0/rels/rel_tp_join_pro_0.cvc
new file mode 100644
index 0000000..b05026b
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tp_join_pro_0.cvc
@@ -0,0 +1,21 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+IntTup: TYPE = [INT, INT, INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+z : SET OF IntPair;
+r : SET OF IntTup;
+
+ASSERT (2, 1) IS_IN x;
+ASSERT (2, 3) IS_IN x;
+ASSERT (2, 2) IS_IN y;
+ASSERT (4, 7) IS_IN y;
+ASSERT (3, 4) IS_IN z;
+
+v : IntTup;
+ASSERT v = (4,3,2,1);
+
+ASSERT r = (((TRANSPOSE x) JOIN y) PRODUCT z);
+ASSERT NOT (v IS_IN (TRANSPOSE r));
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_tp_join_var_0.cvc b/test/regress/regress0/rels/rel_tp_join_var_0.cvc
new file mode 100644
index 0000000..aacf6c0
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tp_join_var_0.cvc
@@ -0,0 +1,28 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+w : SET OF IntPair;
+x : SET OF IntPair;
+y : SET OF IntPair;
+z : SET OF IntPair;
+r : SET OF IntPair;
+
+t : INT;
+u : INT;
+
+ASSERT 4 < t AND t < 6;
+ASSERT 4 < u AND u < 6;
+
+ASSERT (1, t) IS_IN x;
+ASSERT (u, 3) IS_IN y;
+
+a : IntPair;
+ASSERT a = (1,3);
+
+ASSERT NOT (a IS_IN  (x JOIN y));
+
+st : SET OF INT;
+su : SET OF INT;
+ASSERT t IS_IN st;
+ASSERT u IS_IN su;
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_transpose_0.cvc b/test/regress/regress0/rels/rel_transpose_0.cvc
new file mode 100644
index 0000000..49fb875
--- /dev/null
+++ b/test/regress/regress0/rels/rel_transpose_0.cvc
@@ -0,0 +1,18 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+
+a: INT;
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntPair;
+ASSERT zt = (2,1);
+
+ASSERT z IS_IN x;
+ASSERT NOT (zt IS_IN (TRANSPOSE x));
+
+ASSERT y = (TRANSPOSE x);
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_transpose_1.cvc b/test/regress/regress0/rels/rel_transpose_1.cvc
new file mode 100644
index 0000000..bdcf31b
--- /dev/null
+++ b/test/regress/regress0/rels/rel_transpose_1.cvc
@@ -0,0 +1,12 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntTup: TYPE = [INT, INT, INT];
+x : SET OF IntTup;
+y : SET OF IntTup;
+z : IntTup;
+ASSERT z = (1,2,3);
+zt : IntTup;
+ASSERT zt = (3,2,1);
+ASSERT z IS_IN x;
+ASSERT NOT (zt IS_IN (TRANSPOSE x));
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_transpose_1_1.cvc b/test/regress/regress0/rels/rel_transpose_1_1.cvc
new file mode 100644
index 0000000..fa6ee50
--- /dev/null
+++ b/test/regress/regress0/rels/rel_transpose_1_1.cvc
@@ -0,0 +1,14 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntTup: TYPE = [INT, INT, INT];
+x : SET OF IntTup;
+y : SET OF IntTup;
+z : IntTup;
+a: INT;
+ASSERT z = (1,2,a);
+zt : IntTup;
+ASSERT zt = (3,2,2);
+ASSERT z IS_IN x;
+ASSERT zt IS_IN (TRANSPOSE x);
+ASSERT y = (TRANSPOSE x);
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_transpose_3.cvc b/test/regress/regress0/rels/rel_transpose_3.cvc
new file mode 100644
index 0000000..5dfe3b0
--- /dev/null
+++ b/test/regress/regress0/rels/rel_transpose_3.cvc
@@ -0,0 +1,15 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntPair;
+ASSERT zt = (2,1);
+ASSERT (x = y);
+ASSERT z IS_IN x;
+ASSERT NOT (zt IS_IN (TRANSPOSE y));
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_transpose_4.cvc b/test/regress/regress0/rels/rel_transpose_4.cvc
new file mode 100644
index 0000000..b260147
--- /dev/null
+++ b/test/regress/regress0/rels/rel_transpose_4.cvc
@@ -0,0 +1,13 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+
+z : IntPair;
+ASSERT z = (1,2);
+
+ASSERT z IS_IN x;
+ASSERT NOT ((2, 1) IS_IN (TRANSPOSE x));
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_transpose_5.cvc b/test/regress/regress0/rels/rel_transpose_5.cvc
new file mode 100644
index 0000000..203e8b3
--- /dev/null
+++ b/test/regress/regress0/rels/rel_transpose_5.cvc
@@ -0,0 +1,22 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+
+r : SET OF IntPair;
+
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntPair;
+ASSERT zt = (2,1);
+ASSERT zt IS_IN y;
+
+w : IntPair;
+ASSERT w = (2, 2);
+ASSERT w IS_IN y;
+ASSERT z IS_IN x;
+
+ASSERT NOT (zt IS_IN (TRANSPOSE (x JOIN y)));
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_transpose_6.cvc b/test/regress/regress0/rels/rel_transpose_6.cvc
new file mode 100644
index 0000000..a2e8bcf
--- /dev/null
+++ b/test/regress/regress0/rels/rel_transpose_6.cvc
@@ -0,0 +1,24 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntPair;
+ASSERT zt = (2,1);
+
+ASSERT z IS_IN x;
+ASSERT (3, 4) IS_IN x;
+ASSERT (3, 5) IS_IN x;
+ASSERT (3, 3) IS_IN x;
+
+ASSERT x = TRANSPOSE(y);
+
+ASSERT NOT (zt IS_IN y);
+
+ASSERT z IS_IN y;
+ASSERT NOT (zt IS_IN (TRANSPOSE y));
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rel_transpose_7.cvc b/test/regress/regress0/rels/rel_transpose_7.cvc
new file mode 100644
index 0000000..bcc3bab
--- /dev/null
+++ b/test/regress/regress0/rels/rel_transpose_7.cvc
@@ -0,0 +1,10 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+
+ASSERT x = y;
+ASSERT NOT (TRANSPOSE(x) =  TRANSPOSE(y));
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/set-strat.cvc b/test/regress/regress0/rels/set-strat.cvc
new file mode 100644
index 0000000..0dee0e8
--- /dev/null
+++ b/test/regress/regress0/rels/set-strat.cvc
@@ -0,0 +1,24 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [ INT, INT];
+SetIntPair: TYPE = [ SET OF IntPair, SET OF IntPair ];
+x : SET OF IntPair;
+y : SET OF IntPair;
+w : SET OF IntPair;
+z : SET OF SetIntPair;
+
+a : IntPair;
+b : IntPair;
+
+ASSERT NOT a = b;
+
+ASSERT a IS_IN x;
+ASSERT b IS_IN y;
+ASSERT b IS_IN w;
+ASSERT (x,y) IS_IN z;
+ASSERT (w,x) IS_IN z;
+ASSERT NOT ( (x,x) IS_IN (z JOIN z) );
+
+ASSERT (x, { ( 0, 0 ) } ) IS_IN (z JOIN z);
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/strat.cvc b/test/regress/regress0/rels/strat.cvc
new file mode 100644
index 0000000..b91ddbb
--- /dev/null
+++ b/test/regress/regress0/rels/strat.cvc
@@ -0,0 +1,24 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [ INT, INT];
+IntIntPair: TYPE = [ IntPair, IntPair];
+x : SET OF IntIntPair;
+y : SET OF IntIntPair;
+z : SET OF IntPair;
+w : SET OF IntPair;
+
+a : IntPair;
+b : IntPair;
+c : IntIntPair;
+
+ASSERT NOT a = b;
+
+ASSERT a IS_IN z;
+ASSERT b IS_IN z;
+ASSERT (a,b) IS_IN x;
+ASSERT (b,a) IS_IN x;
+ASSERT c IS_IN x;
+ASSERT NOT ( c = (a,b) ) AND NOT ( c = (b,a) );
+
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/strat_0_1.cvc b/test/regress/regress0/rels/strat_0_1.cvc
new file mode 100644
index 0000000..b91ddbb
--- /dev/null
+++ b/test/regress/regress0/rels/strat_0_1.cvc
@@ -0,0 +1,24 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [ INT, INT];
+IntIntPair: TYPE = [ IntPair, IntPair];
+x : SET OF IntIntPair;
+y : SET OF IntIntPair;
+z : SET OF IntPair;
+w : SET OF IntPair;
+
+a : IntPair;
+b : IntPair;
+c : IntIntPair;
+
+ASSERT NOT a = b;
+
+ASSERT a IS_IN z;
+ASSERT b IS_IN z;
+ASSERT (a,b) IS_IN x;
+ASSERT (b,a) IS_IN x;
+ASSERT c IS_IN x;
+ASSERT NOT ( c = (a,b) ) AND NOT ( c = (b,a) );
+
+
+CHECKSAT;
diff --git a/test/regress/regress0/rewriterules/Makefile.am b/test/regress/regress0/rewriterules/Makefile.am
new file mode 100644
index 0000000..fcaa9dc
--- /dev/null
+++ b/test/regress/regress0/rewriterules/Makefile.am
@@ -0,0 +1,53 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+override CVC4_REGRESSION_ARGS += --rewrite-rules
+export CVC4_REGRESSION_ARGS
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	length_trick.smt2 \
+	length_gen_020.smt2 \
+	datatypes.smt2 \
+	datatypes_sat.smt2 \
+	relation.smt2 \
+	simulate_rewriting.smt2 \
+	native_arrays.smt2 
+
+# length_trick2.smt2 reachability_bbttf_eT_arrays.smt2 set_A_new_fast_tableau-base.smt2 set_A_new_fast_tableau-base_sat.smt2
+
+EXTRA_DIST = $(TESTS)
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/rewriterules/Makefile.in b/test/regress/regress0/rewriterules/Makefile.in
new file mode 100644
index 0000000..a2cdba3
--- /dev/null
+++ b/test/regress/regress0/rewriterules/Makefile.in
@@ -0,0 +1,1050 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/rewriterules
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	length_trick.smt2 \
+	length_gen_020.smt2 \
+	datatypes.smt2 \
+	datatypes_sat.smt2 \
+	relation.smt2 \
+	simulate_rewriting.smt2 \
+	native_arrays.smt2 
+
+
+# length_trick2.smt2 reachability_bbttf_eT_arrays.smt2 set_A_new_fast_tableau-base.smt2 set_A_new_fast_tableau-base_sat.smt2
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/rewriterules/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/rewriterules/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+length_trick.smt2.log: length_trick.smt2
+	@p='length_trick.smt2'; \
+	b='length_trick.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+length_gen_020.smt2.log: length_gen_020.smt2
+	@p='length_gen_020.smt2'; \
+	b='length_gen_020.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+datatypes.smt2.log: datatypes.smt2
+	@p='datatypes.smt2'; \
+	b='datatypes.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+datatypes_sat.smt2.log: datatypes_sat.smt2
+	@p='datatypes_sat.smt2'; \
+	b='datatypes_sat.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+relation.smt2.log: relation.smt2
+	@p='relation.smt2'; \
+	b='relation.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simulate_rewriting.smt2.log: simulate_rewriting.smt2
+	@p='simulate_rewriting.smt2'; \
+	b='simulate_rewriting.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+native_arrays.smt2.log: native_arrays.smt2
+	@p='native_arrays.smt2'; \
+	b='native_arrays.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+override CVC4_REGRESSION_ARGS += --rewrite-rules
+export CVC4_REGRESSION_ARGS
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/rewriterules/datatypes.smt2 b/test/regress/regress0/rewriterules/datatypes.smt2
new file mode 100644
index 0000000..a914a0c
--- /dev/null
+++ b/test/regress/regress0/rewriterules/datatypes.smt2
@@ -0,0 +1,101 @@
+;; try to solve datatypes with rewriterules
+(set-logic AUFLIA)
+(set-info :status unsat)
+
+;; lists 2 nil
+(declare-sort elt 0) ;; we suppose that elt is infinite
+(declare-sort list 0)
+
+(declare-fun nil1 () list)
+(declare-fun nil2 () list)
+(declare-fun cons (elt list) list)
+
+;;;;;;;;;;;;;;;;;;;;
+;; injective
+
+(declare-fun inj1 (list) elt)
+(assert (forall ((?e elt) (?l list))
+                (! (! (=> true (=> true (= (inj1 (cons ?e ?l)) ?e))) :pattern ((cons ?e ?l)) ) :rewrite-rule) ))
+
+(declare-fun inj2 (list) list)
+(assert (forall ((?e elt) (?l list))
+                (! (! (=> true (=> true (= (inj2 (cons ?e ?l)) ?l))) :pattern ((cons ?e ?l)) ) :rewrite-rule) ))
+
+;;;;;;;;;;;;;;;;;;;;
+;; projection
+
+(declare-fun proj1 (list) elt)
+(assert (forall ((?e elt) (?l list))
+                (! (= (proj1 (cons ?e ?l)) ?e) :rewrite-rule) ))
+
+(declare-fun proj2 (list) list)
+(assert (forall ((?e elt) (?l list))
+                (! (= (proj2 (cons ?e ?l)) ?l) :rewrite-rule) ))
+
+;;;;;;;;;;;;;;;;;;;
+;; test
+(declare-fun iscons (list) Bool)
+(assert (= (iscons nil1) false))
+(assert (= (iscons nil2) false))
+(assert (forall ((?e elt) (?l list))
+                (! (! (=> true (=> true (= (iscons (cons ?e ?l)) true))) :pattern ((cons ?e ?l)) ) :rewrite-rule) ))
+
+(assert (forall ((?l list))
+                (! (! (=> true (=> (iscons ?l) (= ?l (cons (proj1 ?l) (proj2 ?l))))) :pattern ((proj1 ?l)) ) :rewrite-rule) ))
+(assert (forall ((?l list))
+                (! (! (=> true (=> (iscons ?l) (= ?l (cons (proj1 ?l) (proj2 ?l))))) :pattern ((proj2 ?l)) ) :rewrite-rule) ))
+
+
+(declare-fun isnil1 (list) Bool)
+(assert (= (isnil1 nil1) true))
+(assert (= (isnil1 nil2) false))
+(assert (forall ((?e elt) (?l list))
+                (! (= (isnil1 (cons ?e ?l)) false) :rewrite-rule) ))
+(assert (forall ((?l list))
+                (! (=> true (=> (isnil1 ?l) (= ?l nil1))) :rewrite-rule) ))
+
+(declare-fun isnil2 (list) Bool)
+(assert (= (isnil2 nil1) false))
+(assert (= (isnil2 nil2) true))
+(assert (forall ((?e elt) (?l list))
+                (! (= (isnil2 (cons ?e ?l)) false) :rewrite-rule) ))
+(assert (forall ((?l list))
+                (! (=> true (=> (isnil2 ?l) (= ?l nil2))) :rewrite-rule) ))
+
+;; distinct
+(assert (forall ((?l list))
+                (! (=> (isnil1 ?l) (and (not (isnil2 ?l)) (not (iscons ?l))) ) :rewrite-rule) ))
+
+(assert (forall ((?l list))
+                (! (=> (isnil2 ?l) (and (not (isnil1 ?l)) (not (iscons ?l))) ) :rewrite-rule) ))
+
+(assert (forall ((?l list))
+                (! (=> (iscons ?l) (and (not (isnil1 ?l)) (not (isnil2 ?l))) ) :rewrite-rule) ))
+
+
+;;;;;;;;;;;;;;;;;;;
+;; case-split
+(assert (forall ((?l list))
+                (! (! (=> true (or (isnil1 ?l) (isnil2 ?l) (iscons ?l))) :pattern ((proj1 ?l)) ) :rewrite-rule) ))
+(assert (forall ((?l list))
+                (! (! (=> true (or (isnil1 ?l) (isnil2 ?l) (iscons ?l))) :pattern ((proj2 ?l)) ) :rewrite-rule) ))
+
+;;;;;;;;;;;;;;;;;;;
+;; finite case-split
+(assert (forall ((?l list))
+                 (! (=> (not (iscons ?l)) (or (isnil1 ?l) (isnil2 ?l))) :rewrite-rule) ))
+
+
+
+;;;;; goal
+
+(declare-fun e () elt)
+(declare-fun l1 () list)
+(declare-fun l2 () list)
+
+
+(assert (not (=> (iscons l1) (=> (= (proj2 l1) (proj2 l2)) (= l1 (cons (proj1 l1) (proj2 l2)))))))
+
+(check-sat)
+
+(exit)
diff --git a/test/regress/regress0/rewriterules/datatypes_sat.smt2 b/test/regress/regress0/rewriterules/datatypes_sat.smt2
new file mode 100644
index 0000000..92576f9
--- /dev/null
+++ b/test/regress/regress0/rewriterules/datatypes_sat.smt2
@@ -0,0 +1,101 @@
+;; try to solve datatypes with rewriterules
+(set-logic AUFLIA)
+(set-info :status sat)
+
+;; lists 2 nil
+(declare-sort elt 0) ;; we suppose that elt is infinite
+(declare-sort list 0)
+
+(declare-fun nil1 () list)
+(declare-fun nil2 () list)
+(declare-fun cons (elt list) list)
+
+;;;;;;;;;;;;;;;;;;;;
+;; injective
+
+(declare-fun inj1 (list) elt)
+(assert (forall ((?e elt) (?l list))
+                (! (! (=> true (=> true (= (inj1 (cons ?e ?l)) ?e))) :pattern ((cons ?e ?l)) ) :rewrite-rule) ))
+
+(declare-fun inj2 (list) list)
+(assert (forall ((?e elt) (?l list))
+                (! (! (=> true (=> true (= (inj2 (cons ?e ?l)) ?l))) :pattern ((cons ?e ?l)) ) :rewrite-rule) ))
+
+;;;;;;;;;;;;;;;;;;;;
+;; projection
+
+(declare-fun proj1 (list) elt)
+(assert (forall ((?e elt) (?l list))
+                (! (= (proj1 (cons ?e ?l)) ?e) :rewrite-rule) ))
+
+(declare-fun proj2 (list) list)
+(assert (forall ((?e elt) (?l list))
+                (! (= (proj2 (cons ?e ?l)) ?l) :rewrite-rule) ))
+
+;;;;;;;;;;;;;;;;;;;
+;; test
+(declare-fun iscons (list) Bool)
+(assert (= (iscons nil1) false))
+(assert (= (iscons nil2) false))
+(assert (forall ((?e elt) (?l list))
+                (! (! (=> true (=> true (= (iscons (cons ?e ?l)) true))) :pattern ((cons ?e ?l)) ) :rewrite-rule) ))
+
+(assert (forall ((?l list))
+                (! (! (=> true (=> (iscons ?l) (= ?l (cons (proj1 ?l) (proj2 ?l))))) :pattern ((proj1 ?l)) ) :rewrite-rule) ))
+(assert (forall ((?l list))
+                (! (! (=> true (=> (iscons ?l) (= ?l (cons (proj1 ?l) (proj2 ?l))))) :pattern ((proj2 ?l)) ) :rewrite-rule) ))
+
+
+(declare-fun isnil1 (list) Bool)
+(assert (= (isnil1 nil1) true))
+(assert (= (isnil1 nil2) false))
+(assert (forall ((?e elt) (?l list))
+                (! (= (isnil1 (cons ?e ?l)) false) :rewrite-rule) ))
+(assert (forall ((?l list))
+                (! (=> true (=> (isnil1 ?l) (= ?l nil1))) :rewrite-rule) ))
+
+(declare-fun isnil2 (list) Bool)
+(assert (= (isnil2 nil1) false))
+(assert (= (isnil2 nil2) true))
+(assert (forall ((?e elt) (?l list))
+                (! (= (isnil2 (cons ?e ?l)) false) :rewrite-rule) ))
+(assert (forall ((?l list))
+                (! (=> true (=> (isnil2 ?l) (= ?l nil2))) :rewrite-rule) ))
+
+;; distinct
+(assert (forall ((?l list))
+                (! (=> (isnil1 ?l) (and (not (isnil2 ?l)) (not (iscons ?l))) ) :rewrite-rule) ))
+
+(assert (forall ((?l list))
+                (! (=> (isnil2 ?l) (and (not (isnil1 ?l)) (not (iscons ?l))) ) :rewrite-rule) ))
+
+(assert (forall ((?l list))
+                (! (=> (iscons ?l) (and (not (isnil1 ?l)) (not (isnil2 ?l))) ) :rewrite-rule) ))
+
+
+;;;;;;;;;;;;;;;;;;;
+;; case-split
+(assert (forall ((?l list))
+                (! (! (=> true (or (isnil1 ?l) (isnil2 ?l) (iscons ?l))) :pattern ((proj1 ?l)) ) :rewrite-rule) ))
+(assert (forall ((?l list))
+                (! (! (=> true (or (isnil1 ?l) (isnil2 ?l) (iscons ?l))) :pattern ((proj2 ?l)) ) :rewrite-rule) ))
+
+;;;;;;;;;;;;;;;;;;;
+;; finite case-split
+(assert (forall ((?l list))
+                 (! (=> (not (iscons ?l)) (or (isnil1 ?l) (isnil2 ?l))) :rewrite-rule) ))
+
+
+
+;;;;; goal
+
+(declare-fun e () elt)
+(declare-fun l1 () list)
+(declare-fun l2 () list)
+
+
+(assert (not (=> (iscons l1) (=> (= (proj2 l1) (proj2 l2)) (= l1 (cons (proj1 l2) (proj2 l2)))))))
+
+(check-sat)
+
+(exit)
diff --git a/test/regress/regress0/rewriterules/length_gen_020.smt2 b/test/regress/regress0/rewriterules/length_gen_020.smt2
new file mode 100644
index 0000000..8e00211
--- /dev/null
+++ b/test/regress/regress0/rewriterules/length_gen_020.smt2
@@ -0,0 +1,34 @@
+;; Same than length.smt2 but the nil case is not a rewrite rule
+;; So here the rewrite rules have no guards length
+
+(set-logic AUFLIA)
+(set-info :status unsat)
+
+;; don't use a datatypes for currently focusing in uf
+(declare-sort list 0)
+
+(declare-fun cons (Int list) list)
+(declare-fun nil  ()         list)
+
+
+;;define length
+(declare-fun length (list) Int)
+
+(assert (= (length nil) 0))
+
+(assert (forall ((?e Int) (?l list)) (! (= (length (cons ?e ?l)) (+ 1 (length ?l))) :rewrite-rule)))
+
+(declare-fun gen_cons (Int list) list)
+
+(assert (forall ((?n Int) (?l list)) (! (=> (= ?n 0) (= (gen_cons ?n ?l) ?l)) :rewrite-rule)))
+
+(assert (forall ((?n Int) (?l list)) (! (=> (> ?n 0) (= (gen_cons ?n ?l)
+        (gen_cons (- ?n 1) (cons 1 ?l)))) :rewrite-rule)))
+
+(declare-fun n () Int)
+
+(assert (not (= (length (gen_cons 20 nil)) 20)))
+
+(check-sat)
+
+(exit)
diff --git a/test/regress/regress0/rewriterules/length_trick.smt2 b/test/regress/regress0/rewriterules/length_trick.smt2
new file mode 100644
index 0000000..84afc58
--- /dev/null
+++ b/test/regress/regress0/rewriterules/length_trick.smt2
@@ -0,0 +1,32 @@
+;; Same than length.smt2 but the nil case is not a rewrite rule
+;; So here the rewrite rules have no guards length
+
+(set-logic AUFLIA)
+(set-info :status unsat)
+
+;; don't use a datatypes for currently focusing in uf
+(declare-sort list 0)
+
+(declare-fun cons (Int list) list)
+(declare-fun nil  ()         list)
+
+
+;;define length
+(declare-fun length (list) Int)
+
+(assert (= (length nil) 0))
+
+
+
+
+(assert (forall ((?e Int) (?l list)) (! (= (length (cons ?e ?l)) (+ (length ?l) 1)) :rewrite-rule)))
+
+;;(assert (forall ((?l list)) (=> (= ?l nil) (= (length ?l) 0))))
+
+;;(assert (forall ((?e Int) (?l list) (?l2 list)) (=> (= ?l2 (cons ?e ?l)) (= (length ?l2) (+ (length ?l) 1)))))
+
+
+(assert (not (= (length (cons 1 (cons  2 (cons 3 nil)))) 3)))
+
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/rewriterules/native_arrays.smt2 b/test/regress/regress0/rewriterules/native_arrays.smt2
new file mode 100644
index 0000000..b7d19b6
--- /dev/null
+++ b/test/regress/regress0/rewriterules/native_arrays.smt2
@@ -0,0 +1,34 @@
+;; This example can't be done if we don't access the EqualityEngine of
+;; the theory of arrays
+
+(set-logic AUFLIA)
+(set-info :status unsat)
+
+(declare-sort Index 0)
+(declare-sort Element 0)
+
+;;A dumb predicate for a simple example
+(declare-fun P (Element) Bool)
+
+(assert-rewrite ((?i1 Index) (?i2 Index) (?e Element) (?a (Array Index Element))) () ()
+                (P (select (store ?a ?i1 ?e) ?i2)) true )
+
+(declare-fun a1 () (Array Index Element))
+(declare-fun a2 () (Array Index Element))
+(declare-fun a3 () (Array Index Element))
+(declare-fun i1 () Index)
+(declare-fun i2 () Index)
+(declare-fun e1 () Element)
+
+(assert (not (=>  (or (= a1 (store a2 i1 e1)) (= a1 (store a3 i1 e1))) (P (select a1 i2)) )))
+(check-sat)
+(exit)
+
+
+;; (declare-fun a1 () (Array Index Element))
+;; (declare-fun a2 () (Array Index Element))
+;; (declare-fun i1 () Index)
+;; (assert (= (store a1 i1 (select a2 i1)) (store a2 i1 (select a1 i1))))
+;; (assert (not (= a1 a2)))
+;; (check-sat)
+;; (exit)
diff --git a/test/regress/regress0/rewriterules/relation.smt2 b/test/regress/regress0/rewriterules/relation.smt2
new file mode 100644
index 0000000..e8c0139
--- /dev/null
+++ b/test/regress/regress0/rewriterules/relation.smt2
@@ -0,0 +1,27 @@
+(set-logic AUFLIA)
+(set-info :status unsat)
+
+;; don't use a datatypes for currently focusing in uf
+(declare-sort elt 0)
+
+(declare-fun R (elt elt) Bool)
+
+;; reflexive
+(assert-rewrite ((x elt)) () () (R x x) true)
+
+;; transitive
+(assert-propagation ((x elt) (y elt) (z elt)) () () ((R x y) (R y z)) (R x z))
+
+;; anti-symmetric
+(assert-propagation ((x elt) (y elt)) () () ((R x y) (R y x)) (= x y))
+
+(declare-fun e1 () elt)
+(declare-fun e2 () elt)
+(declare-fun e3 () elt)
+(declare-fun e4 () elt)
+
+(assert (not (=> (and (R e1 e2) (R e2 e3) (R e3 e4) (R e4 e1)) (= e1 e4))))
+
+(check-sat)
+
+(exit)
\ No newline at end of file
diff --git a/test/regress/regress0/rewriterules/simulate_rewriting.smt2 b/test/regress/regress0/rewriterules/simulate_rewriting.smt2
new file mode 100644
index 0000000..838c0cd
--- /dev/null
+++ b/test/regress/regress0/rewriterules/simulate_rewriting.smt2
@@ -0,0 +1,24 @@
+;; A new fast tableau-base ... Domenico Cantone et Calogero G.Zarba
+(set-logic AUFLIA)
+(set-info :status unsat)
+
+(declare-sort elt1 0)
+(declare-sort elt2 0)
+
+(declare-fun g (elt2) Bool)
+
+(declare-fun p (elt1 elt1) Bool)
+(declare-fun f (elt2) elt1)
+(declare-fun c1 () elt1)
+(declare-fun c2 () elt1)
+
+(assert (forall ((?e elt2)) (! (=> (g ?e) (= (f ?e) c2)) :rewrite-rule)))
+(assert (forall ((?e elt2)) (! (=> (g ?e) (= (f ?e) c1)) :rewrite-rule)))
+
+(declare-fun e () elt2)
+
+(assert (not (=> (g e) (=> (p c1 c2) (p (f e) (f e)))) ))
+
+(check-sat)
+
+(exit)
diff --git a/test/regress/regress0/sep/Makefile.am b/test/regress/regress0/sep/Makefile.am
new file mode 100644
index 0000000..f731bd1
--- /dev/null
+++ b/test/regress/regress0/sep/Makefile.am
@@ -0,0 +1,79 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+  pto-01.smt2 \
+  pto-02.smt2 \
+  pto-04.smt2 \
+  sep-01.smt2 \
+  sep-02.smt2 \
+  sep-03.smt2 \
+  sep-find2.smt2 \
+  sep-neg-nstrict.smt2 \
+  sep-plus1.smt2 \
+  sep-nterm-val-model.smt2 \
+  crash1220.smt2 \
+  nspatial-simp.smt2 \
+  sep-neg-1refine.smt2 \
+  sep-neg-simple.smt2 \
+  sep-simp-unsat-emp.smt2 \
+  simple-neg-sat.smt2 \
+  wand-simp-sat.smt2 \
+  wand-simp-sat2.smt2 \
+  wand-simp-unsat.smt2 \
+  sep-nterm-again.smt2 \
+  nemp.smt2 \
+  wand-crash.smt2 \
+  wand-nterm-simp.smt2 \
+  wand-nterm-simp2.smt2 \
+  chain-int.smt2 \
+  sep-neg-swap.smt2 \
+  sep-neg-nstrict2.smt2 \
+  dispose-list-4-init.smt2 \
+  wand-0526-sat.smt2 \
+  quant_wand.smt2 \
+  fmf-nemp-2.smt2 \
+  trees-1.smt2 \
+  wand-false.smt2 \
+  dup-nemp.smt2 \
+  emp2-quant-unsat.smt2 \
+  dispose-1.smt2 \
+  finite-witness-sat.smt2 \
+  sep-fmf-priority.smt2
+
+
+FAILING_TESTS =
+# loop-1220.smt2 (slow)
+
+EXTRA_DIST = $(TESTS)
+
+#   slow after changes on Nov 20 : artemis-0512-nonterm.smt2
+#   slow after decision engine respects requirePhase: type003.smt2  loop007.smt2 
+
+# and make sure to distribute it
+EXTRA_DIST +=
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/sep/Makefile.in b/test/regress/regress0/sep/Makefile.in
new file mode 100644
index 0000000..844c74b
--- /dev/null
+++ b/test/regress/regress0/sep/Makefile.in
@@ -0,0 +1,1290 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/sep
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+  pto-01.smt2 \
+  pto-02.smt2 \
+  pto-04.smt2 \
+  sep-01.smt2 \
+  sep-02.smt2 \
+  sep-03.smt2 \
+  sep-find2.smt2 \
+  sep-neg-nstrict.smt2 \
+  sep-plus1.smt2 \
+  sep-nterm-val-model.smt2 \
+  crash1220.smt2 \
+  nspatial-simp.smt2 \
+  sep-neg-1refine.smt2 \
+  sep-neg-simple.smt2 \
+  sep-simp-unsat-emp.smt2 \
+  simple-neg-sat.smt2 \
+  wand-simp-sat.smt2 \
+  wand-simp-sat2.smt2 \
+  wand-simp-unsat.smt2 \
+  sep-nterm-again.smt2 \
+  nemp.smt2 \
+  wand-crash.smt2 \
+  wand-nterm-simp.smt2 \
+  wand-nterm-simp2.smt2 \
+  chain-int.smt2 \
+  sep-neg-swap.smt2 \
+  sep-neg-nstrict2.smt2 \
+  dispose-list-4-init.smt2 \
+  wand-0526-sat.smt2 \
+  quant_wand.smt2 \
+  fmf-nemp-2.smt2 \
+  trees-1.smt2 \
+  wand-false.smt2 \
+  dup-nemp.smt2 \
+  emp2-quant-unsat.smt2 \
+  dispose-1.smt2 \
+  finite-witness-sat.smt2 \
+  sep-fmf-priority.smt2
+
+FAILING_TESTS = 
+# loop-1220.smt2 (slow)
+
+#   slow after changes on Nov 20 : artemis-0512-nonterm.smt2
+#   slow after decision engine respects requirePhase: type003.smt2  loop007.smt2 
+
+# and make sure to distribute it
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/sep/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/sep/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+pto-01.smt2.log: pto-01.smt2
+	@p='pto-01.smt2'; \
+	b='pto-01.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pto-02.smt2.log: pto-02.smt2
+	@p='pto-02.smt2'; \
+	b='pto-02.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pto-04.smt2.log: pto-04.smt2
+	@p='pto-04.smt2'; \
+	b='pto-04.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sep-01.smt2.log: sep-01.smt2
+	@p='sep-01.smt2'; \
+	b='sep-01.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sep-02.smt2.log: sep-02.smt2
+	@p='sep-02.smt2'; \
+	b='sep-02.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sep-03.smt2.log: sep-03.smt2
+	@p='sep-03.smt2'; \
+	b='sep-03.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sep-find2.smt2.log: sep-find2.smt2
+	@p='sep-find2.smt2'; \
+	b='sep-find2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sep-neg-nstrict.smt2.log: sep-neg-nstrict.smt2
+	@p='sep-neg-nstrict.smt2'; \
+	b='sep-neg-nstrict.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sep-plus1.smt2.log: sep-plus1.smt2
+	@p='sep-plus1.smt2'; \
+	b='sep-plus1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sep-nterm-val-model.smt2.log: sep-nterm-val-model.smt2
+	@p='sep-nterm-val-model.smt2'; \
+	b='sep-nterm-val-model.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+crash1220.smt2.log: crash1220.smt2
+	@p='crash1220.smt2'; \
+	b='crash1220.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+nspatial-simp.smt2.log: nspatial-simp.smt2
+	@p='nspatial-simp.smt2'; \
+	b='nspatial-simp.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sep-neg-1refine.smt2.log: sep-neg-1refine.smt2
+	@p='sep-neg-1refine.smt2'; \
+	b='sep-neg-1refine.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sep-neg-simple.smt2.log: sep-neg-simple.smt2
+	@p='sep-neg-simple.smt2'; \
+	b='sep-neg-simple.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sep-simp-unsat-emp.smt2.log: sep-simp-unsat-emp.smt2
+	@p='sep-simp-unsat-emp.smt2'; \
+	b='sep-simp-unsat-emp.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple-neg-sat.smt2.log: simple-neg-sat.smt2
+	@p='simple-neg-sat.smt2'; \
+	b='simple-neg-sat.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wand-simp-sat.smt2.log: wand-simp-sat.smt2
+	@p='wand-simp-sat.smt2'; \
+	b='wand-simp-sat.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wand-simp-sat2.smt2.log: wand-simp-sat2.smt2
+	@p='wand-simp-sat2.smt2'; \
+	b='wand-simp-sat2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wand-simp-unsat.smt2.log: wand-simp-unsat.smt2
+	@p='wand-simp-unsat.smt2'; \
+	b='wand-simp-unsat.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sep-nterm-again.smt2.log: sep-nterm-again.smt2
+	@p='sep-nterm-again.smt2'; \
+	b='sep-nterm-again.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+nemp.smt2.log: nemp.smt2
+	@p='nemp.smt2'; \
+	b='nemp.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wand-crash.smt2.log: wand-crash.smt2
+	@p='wand-crash.smt2'; \
+	b='wand-crash.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wand-nterm-simp.smt2.log: wand-nterm-simp.smt2
+	@p='wand-nterm-simp.smt2'; \
+	b='wand-nterm-simp.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wand-nterm-simp2.smt2.log: wand-nterm-simp2.smt2
+	@p='wand-nterm-simp2.smt2'; \
+	b='wand-nterm-simp2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+chain-int.smt2.log: chain-int.smt2
+	@p='chain-int.smt2'; \
+	b='chain-int.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sep-neg-swap.smt2.log: sep-neg-swap.smt2
+	@p='sep-neg-swap.smt2'; \
+	b='sep-neg-swap.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sep-neg-nstrict2.smt2.log: sep-neg-nstrict2.smt2
+	@p='sep-neg-nstrict2.smt2'; \
+	b='sep-neg-nstrict2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dispose-list-4-init.smt2.log: dispose-list-4-init.smt2
+	@p='dispose-list-4-init.smt2'; \
+	b='dispose-list-4-init.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wand-0526-sat.smt2.log: wand-0526-sat.smt2
+	@p='wand-0526-sat.smt2'; \
+	b='wand-0526-sat.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+quant_wand.smt2.log: quant_wand.smt2
+	@p='quant_wand.smt2'; \
+	b='quant_wand.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fmf-nemp-2.smt2.log: fmf-nemp-2.smt2
+	@p='fmf-nemp-2.smt2'; \
+	b='fmf-nemp-2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+trees-1.smt2.log: trees-1.smt2
+	@p='trees-1.smt2'; \
+	b='trees-1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wand-false.smt2.log: wand-false.smt2
+	@p='wand-false.smt2'; \
+	b='wand-false.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dup-nemp.smt2.log: dup-nemp.smt2
+	@p='dup-nemp.smt2'; \
+	b='dup-nemp.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+emp2-quant-unsat.smt2.log: emp2-quant-unsat.smt2
+	@p='emp2-quant-unsat.smt2'; \
+	b='emp2-quant-unsat.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dispose-1.smt2.log: dispose-1.smt2
+	@p='dispose-1.smt2'; \
+	b='dispose-1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+finite-witness-sat.smt2.log: finite-witness-sat.smt2
+	@p='finite-witness-sat.smt2'; \
+	b='finite-witness-sat.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sep-fmf-priority.smt2.log: sep-fmf-priority.smt2
+	@p='sep-fmf-priority.smt2'; \
+	b='sep-fmf-priority.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/sep/chain-int.smt2 b/test/regress/regress0/sep/chain-int.smt2
new file mode 100644
index 0000000..ebe52fa
--- /dev/null
+++ b/test/regress/regress0/sep/chain-int.smt2
@@ -0,0 +1,11 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-const x Int)
+(declare-const y Int)
+(declare-const z Int)
+
+(assert (sep (pto x y) (pto y z)))
+(assert (and (> x 3) (< x 5)))
+(assert (and (> y 3) (< y 5)))
+(check-sat)
diff --git a/test/regress/regress0/sep/crash1220.smt2 b/test/regress/regress0/sep/crash1220.smt2
new file mode 100644
index 0000000..f68434f
--- /dev/null
+++ b/test/regress/regress0/sep/crash1220.smt2
@@ -0,0 +1,15 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+
+(declare-const x Int)
+(declare-const a Int)
+
+(declare-const y Int)
+(declare-const b Int)
+
+(assert (or (pto x a) (sep (pto x a) (pto y b))))
+(assert (or (not (pto x a)) (sep (not (pto x a)) (not (pto y b)))))
+
+(check-sat)
diff --git a/test/regress/regress0/sep/dispose-1.smt2 b/test/regress/regress0/sep/dispose-1.smt2
new file mode 100644
index 0000000..3f908c3
--- /dev/null
+++ b/test/regress/regress0/sep/dispose-1.smt2
@@ -0,0 +1,17 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-const w Int)
+(declare-const w1 Int)
+(declare-const w2 Int)
+
+;------- f -------
+(assert (= w1 (as sep.nil Int)))
+(assert (= w2 (as sep.nil Int)))
+;-----------------
+
+(assert (pto w (as sep.nil Int)))
+(assert (not (and (sep (and (emp 0 0) (= w2 (as sep.nil Int))) (pto w w1)) (sep (pto w w2) true))))
+
+(check-sat)
+;(get-model)
diff --git a/test/regress/regress0/sep/dispose-list-4-init.smt2 b/test/regress/regress0/sep/dispose-list-4-init.smt2
new file mode 100644
index 0000000..b3e2088
--- /dev/null
+++ b/test/regress/regress0/sep/dispose-list-4-init.smt2
@@ -0,0 +1,36 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+
+(declare-sort Loc 0)
+
+(declare-const w Loc)
+(declare-const u1 Loc)
+(declare-const u2 Loc)
+(declare-const u3 Loc)
+(declare-const nil Loc)
+
+(declare-const w1 Loc)
+(declare-const w2 Loc)
+(declare-const w3 Loc)
+(declare-const w4 Loc)
+
+; allocated (not nil)
+(assert (not (= w nil)))
+(assert (not (= u1 nil)))
+(assert (not (= u2 nil)))
+(assert (not (= u3 nil)))
+(assert (not (= w1 nil)))
+(assert (not (= w2 nil)))
+(assert (not (= w4 nil)))
+
+; from model
+;(assert (= w1 u3))
+;(assert (= w2 u2))
+;(assert (= w3 u1))
+;(assert (= w4 u1))
+
+(assert (sep (pto w u1) (pto u1 u2) (pto u2 u3) (pto u3 nil)))
+(assert (and (sep (sep (pto w4 w1) (pto w1 w2) (pto w2 nil)) (pto w w3)) (sep (pto w w4) true)))
+
+(check-sat)
diff --git a/test/regress/regress0/sep/dup-nemp.smt2 b/test/regress/regress0/sep/dup-nemp.smt2
new file mode 100644
index 0000000..17750ea
--- /dev/null
+++ b/test/regress/regress0/sep/dup-nemp.smt2
@@ -0,0 +1,7 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-sort Loc 0)
+(declare-const l Loc)
+(assert (sep (not (emp l l)) (not (emp l l))))
+(assert (pto l l))
+(check-sat)
diff --git a/test/regress/regress0/sep/emp2-quant-unsat.smt2 b/test/regress/regress0/sep/emp2-quant-unsat.smt2
new file mode 100644
index 0000000..e89c0fd
--- /dev/null
+++ b/test/regress/regress0/sep/emp2-quant-unsat.smt2
@@ -0,0 +1,12 @@
+; COMMAND-LINE: --quant-epr
+; EXPECT: unsat
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-sort U 0)
+(declare-fun u () U)
+
+(assert (sep (not (emp u u)) (not (emp u u))))
+
+(assert (forall ((x U) (y U)) (= x y)))
+
+(check-sat)
diff --git a/test/regress/regress0/sep/finite-witness-sat.smt2 b/test/regress/regress0/sep/finite-witness-sat.smt2
new file mode 100644
index 0000000..8aedbfd
--- /dev/null
+++ b/test/regress/regress0/sep/finite-witness-sat.smt2
@@ -0,0 +1,11 @@
+; COMMAND-LINE: --finite-model-find --quant-epr --no-check-models
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(declare-sort Loc 0)
+(declare-const l Loc)
+
+(assert (not (emp l l)))
+(assert (forall ((x Loc) (y Loc)) (not (pto x y))))
+
+
+(check-sat)
diff --git a/test/regress/regress0/sep/fmf-nemp-2.smt2 b/test/regress/regress0/sep/fmf-nemp-2.smt2
new file mode 100644
index 0000000..679b1e3
--- /dev/null
+++ b/test/regress/regress0/sep/fmf-nemp-2.smt2
@@ -0,0 +1,10 @@
+; COMMAND-LINE: --finite-model-find --no-check-models
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(declare-sort U 0)
+(declare-fun u1 () U)
+(declare-fun u2 () U)
+(assert (not (= u1 u2)))
+(assert (forall ((x U)) (=> (not (= x (as sep.nil U))) (sep (not (emp u1 0)) (pto x 0)))))
+; satisfiable with heap of size 2, model of U of size 3
+(check-sat)
diff --git a/test/regress/regress0/sep/nemp.smt2 b/test/regress/regress0/sep/nemp.smt2
new file mode 100644
index 0000000..99d7f9c
--- /dev/null
+++ b/test/regress/regress0/sep/nemp.smt2
@@ -0,0 +1,5 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(assert (not (emp 0 0)))
+(check-sat)
diff --git a/test/regress/regress0/sep/nspatial-simp.smt2 b/test/regress/regress0/sep/nspatial-simp.smt2
new file mode 100644
index 0000000..c807757
--- /dev/null
+++ b/test/regress/regress0/sep/nspatial-simp.smt2
@@ -0,0 +1,11 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+(declare-fun x () Int)
+
+(assert (sep (= x 0) (not (= x 5))))
+
+(declare-fun y () Int)
+(assert (pto y 0))
+(check-sat)
diff --git a/test/regress/regress0/sep/pto-01.smt2 b/test/regress/regress0/sep/pto-01.smt2
new file mode 100644
index 0000000..28ed5c4
--- /dev/null
+++ b/test/regress/regress0/sep/pto-01.smt2
@@ -0,0 +1,13 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-const x Int)
+
+(declare-const a Int)
+(declare-const b Int)
+
+(assert (and (pto x a) (pto x b)))
+
+(assert (not (= a b)))
+
+(check-sat)
diff --git a/test/regress/regress0/sep/pto-02.smt2 b/test/regress/regress0/sep/pto-02.smt2
new file mode 100644
index 0000000..ab1cea0
--- /dev/null
+++ b/test/regress/regress0/sep/pto-02.smt2
@@ -0,0 +1,25 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+
+
+(declare-const x Int)
+
+(declare-const a1 Int)
+(declare-const a2 Int)
+(declare-const a3 Int)
+(declare-const a4 Int)
+(declare-const a5 Int)
+(declare-const a6 Int)
+(declare-const a7 Int)
+(declare-const a8 Int)
+(declare-const a9 Int)
+
+(assert (and (pto x a1) (pto x a2) (pto x a3) 
+         (pto x a4) (pto x a5) (pto x a6)
+         (pto x a7) (pto x a8) (pto x a9)
+    )
+)
+
+(assert (not (= a1 a2 a3 a4 a5 a6 a7 a8 a9)))
+
+(check-sat)
diff --git a/test/regress/regress0/sep/pto-04.smt2 b/test/regress/regress0/sep/pto-04.smt2
new file mode 100644
index 0000000..9b0afda
--- /dev/null
+++ b/test/regress/regress0/sep/pto-04.smt2
@@ -0,0 +1,36 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-const x1 Int)
+(declare-const x2 Int)
+(declare-const x3 Int)
+(declare-const x4 Int)
+(declare-const x5 Int)
+(declare-const x6 Int)
+(declare-const x7 Int)
+(declare-const x8 Int)
+(declare-const x9 Int)
+
+(declare-const a1 Int)
+(declare-const a2 Int)
+(declare-const a3 Int)
+(declare-const a4 Int)
+(declare-const a5 Int)
+(declare-const a6 Int)
+(declare-const a7 Int)
+(declare-const a8 Int)
+(declare-const a9 Int)
+
+(assert (and (pto x1 a1) (pto x2 a2) (pto x3 a3) 
+         (pto x4 a4) (pto x5 a5) (pto x6 a6)
+         (pto x7 a7) (pto x8 a8) (pto x9 a9)
+    )
+)
+
+(assert (not (and (= x1 x2 x3 x4 x5 x6 x7 x8 x9) 
+          (= a1 a2 a3 a4 a5 a6 a7 a8 a9)
+       )
+    )
+)
+
+(check-sat)
diff --git a/test/regress/regress0/sep/quant_wand.smt2 b/test/regress/regress0/sep/quant_wand.smt2
new file mode 100644
index 0000000..8a69c10
--- /dev/null
+++ b/test/regress/regress0/sep/quant_wand.smt2
@@ -0,0 +1,15 @@
+; COMMAND-LINE: --full-saturate-quant
+; EXPECT: unsat
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-const u Int)
+
+(assert (emp 0 0))
+
+(assert 
+(forall ((y Int)) 
+(not (wand (pto u 5) (and (= y 42) (pto u 5))))
+))
+
+(check-sat)
diff --git a/test/regress/regress0/sep/sep-01.smt2 b/test/regress/regress0/sep/sep-01.smt2
new file mode 100644
index 0000000..a93fc4d
--- /dev/null
+++ b/test/regress/regress0/sep/sep-01.smt2
@@ -0,0 +1,14 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-const x Int)
+(declare-const y Int)
+
+(declare-const a Int)
+(declare-const b Int)
+
+(assert (sep (pto x a) (pto y b)))
+
+(assert (= x y))
+
+(check-sat)
diff --git a/test/regress/regress0/sep/sep-02.smt2 b/test/regress/regress0/sep/sep-02.smt2
new file mode 100644
index 0000000..6f190d9
--- /dev/null
+++ b/test/regress/regress0/sep/sep-02.smt2
@@ -0,0 +1,16 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-const x Int)
+(declare-const y Int)
+(declare-const z Int)
+
+(declare-const a Int)
+(declare-const b Int)
+(declare-const c Int)
+
+(assert (sep (pto x a) (pto y b) (pto z c)))
+
+(assert (or (= x y) (= y z) (= x z)))
+
+(check-sat)
diff --git a/test/regress/regress0/sep/sep-03.smt2 b/test/regress/regress0/sep/sep-03.smt2
new file mode 100644
index 0000000..8dce5ac
--- /dev/null
+++ b/test/regress/regress0/sep/sep-03.smt2
@@ -0,0 +1,17 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-const x Int)
+(declare-const y Int)
+
+(declare-const a Int)
+(declare-const b Int)
+
+(assert (and (sep (pto x a) (or (pto x a) (pto y b)))
+       (sep (pto y b) (or (pto x a) (pto y b)))
+    )
+)
+
+(assert (not (sep (pto x a) (pto y b))))
+
+(check-sat)
diff --git a/test/regress/regress0/sep/sep-find2.smt2 b/test/regress/regress0/sep/sep-find2.smt2
new file mode 100644
index 0000000..356f866
--- /dev/null
+++ b/test/regress/regress0/sep/sep-find2.smt2
@@ -0,0 +1,22 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-const x1 Int)
+(declare-const x2 Int)
+(declare-const x3 Int)
+(declare-const x4 Int)
+(declare-const x5 Int)
+(declare-const x6 Int)
+(declare-const x7 Int)
+
+(declare-const a1 Int)
+(declare-const a2 Int)
+
+(assert (and 
+(sep (pto x1 a1) (pto x2 a2) (pto x4 a2) (pto x5 a2) (pto x6 a2) (pto x7 a2))
+(sep (pto x1 a1) (pto x3 a2))
+))
+
+(assert (distinct x3 x2 x4 x5 x6 x7))
+
+(check-sat)
diff --git a/test/regress/regress0/sep/sep-fmf-priority.smt2 b/test/regress/regress0/sep/sep-fmf-priority.smt2
new file mode 100644
index 0000000..fe3af1b
--- /dev/null
+++ b/test/regress/regress0/sep/sep-fmf-priority.smt2
@@ -0,0 +1,12 @@
+; COMMAND-LINE: --finite-model-find --quant-epr --no-check-models
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+
+(declare-sort Loc 0)
+(declare-const l Loc)
+(declare-const x Loc)
+
+(assert (wand (pto x x) false))
+(assert (forall ((x Loc) (y Loc)) (not (pto x y))))
+
+(check-sat)
diff --git a/test/regress/regress0/sep/sep-neg-1refine.smt2 b/test/regress/regress0/sep/sep-neg-1refine.smt2
new file mode 100644
index 0000000..ab12c64
--- /dev/null
+++ b/test/regress/regress0/sep/sep-neg-1refine.smt2
@@ -0,0 +1,17 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+
+(declare-const x Int)
+(declare-const y Int)
+(declare-const z Int)
+
+(declare-const a Int)
+(declare-const b Int)
+
+(assert (not (sep (pto x a) (pto y b))))
+(assert (sep (pto x a) (pto z b)))
+
+; sat with model where y != z
+(check-sat)
diff --git a/test/regress/regress0/sep/sep-neg-nstrict.smt2 b/test/regress/regress0/sep/sep-neg-nstrict.smt2
new file mode 100644
index 0000000..425e5ce
--- /dev/null
+++ b/test/regress/regress0/sep/sep-neg-nstrict.smt2
@@ -0,0 +1,15 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-const x Int)
+(declare-const y Int)
+(declare-const z Int)
+
+(declare-const a Int)
+(declare-const b Int)
+
+(assert (not (sep true (pto x a))))
+(assert (sep (pto x a) (pto z b)))
+
+
+(check-sat)
diff --git a/test/regress/regress0/sep/sep-neg-nstrict2.smt2 b/test/regress/regress0/sep/sep-neg-nstrict2.smt2
new file mode 100644
index 0000000..7ada6ff
--- /dev/null
+++ b/test/regress/regress0/sep/sep-neg-nstrict2.smt2
@@ -0,0 +1,18 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+
+(declare-const x Int)
+(declare-const y Int)
+(declare-const z Int)
+
+(declare-const a Int)
+(declare-const b Int)
+
+(assert (not (= a b)))
+(assert (not (sep true (pto x b))))
+(assert (sep (pto x a) (pto z b)))
+
+
+(check-sat)
diff --git a/test/regress/regress0/sep/sep-neg-simple.smt2 b/test/regress/regress0/sep/sep-neg-simple.smt2
new file mode 100644
index 0000000..7b6fc69
--- /dev/null
+++ b/test/regress/regress0/sep/sep-neg-simple.smt2
@@ -0,0 +1,16 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+
+(declare-const x Int)
+(declare-const y Int)
+(declare-const z Int)
+
+(declare-const a Int)
+(declare-const b Int)
+
+(assert (not (pto x a)))
+(assert (sep (pto x a) (pto z b)))
+
+(check-sat)
diff --git a/test/regress/regress0/sep/sep-neg-swap.smt2 b/test/regress/regress0/sep/sep-neg-swap.smt2
new file mode 100644
index 0000000..53f890b
--- /dev/null
+++ b/test/regress/regress0/sep/sep-neg-swap.smt2
@@ -0,0 +1,17 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+
+(declare-const x Int)
+(declare-const y Int)
+(declare-const z Int)
+
+(declare-const a Int)
+(declare-const b Int)
+
+(assert (not (sep (pto y a) (pto x b))))
+(assert (sep (pto x a) (pto y b)))
+
+
+(check-sat)
diff --git a/test/regress/regress0/sep/sep-nterm-again.smt2 b/test/regress/regress0/sep/sep-nterm-again.smt2
new file mode 100644
index 0000000..3e595b5
--- /dev/null
+++ b/test/regress/regress0/sep/sep-nterm-again.smt2
@@ -0,0 +1,20 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+
+(declare-const x Int)
+(declare-const y Int)
+(declare-const z Int)
+
+(declare-const a Int)
+(declare-const b Int)
+(declare-const c Int)
+
+(assert (and
+        (not (sep (not (sep (not (pto x a)) (not (pto y b)))) (pto x a) ))
+        (sep (pto x a) (pto y b))
+        )
+)
+
+(check-sat)
diff --git a/test/regress/regress0/sep/sep-nterm-val-model.smt2 b/test/regress/regress0/sep/sep-nterm-val-model.smt2
new file mode 100644
index 0000000..d4fb0fd
--- /dev/null
+++ b/test/regress/regress0/sep/sep-nterm-val-model.smt2
@@ -0,0 +1,17 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-const x Int)
+(declare-const y Int)
+(declare-const z Int)
+
+(declare-const a Int)
+(declare-const b Int)
+
+(assert (and 
+  (not (sep (not (pto x a)) (not (pto y b)) ))
+  (sep (pto x (+ a 1)) (pto y (+ b 1)))
+  )
+)
+
+(check-sat)
diff --git a/test/regress/regress0/sep/sep-plus1.smt2 b/test/regress/regress0/sep/sep-plus1.smt2
new file mode 100644
index 0000000..9522e24
--- /dev/null
+++ b/test/regress/regress0/sep/sep-plus1.smt2
@@ -0,0 +1,18 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-const x Int)
+(declare-const y Int)
+(declare-const z Int)
+
+(declare-const a Int)
+(declare-const b Int)
+(declare-const c Int)
+
+(assert (and
+        (sep (pto x a) true)
+        (sep (pto y (+ a 1)) true)
+))
+(assert (= x y))
+
+(check-sat)
diff --git a/test/regress/regress0/sep/sep-simp-unsat-emp.smt2 b/test/regress/regress0/sep/sep-simp-unsat-emp.smt2
new file mode 100644
index 0000000..42efae5
--- /dev/null
+++ b/test/regress/regress0/sep/sep-simp-unsat-emp.smt2
@@ -0,0 +1,12 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-sort U 0)
+(declare-fun x () U)
+(declare-fun y () U)
+(declare-fun a () U)
+(declare-fun b () U)
+
+(assert (emp x x))
+(assert (sep (pto x a) (pto y b)))
+(check-sat)
diff --git a/test/regress/regress0/sep/simple-neg-sat.smt2 b/test/regress/regress0/sep/simple-neg-sat.smt2
new file mode 100644
index 0000000..70927ad
--- /dev/null
+++ b/test/regress/regress0/sep/simple-neg-sat.smt2
@@ -0,0 +1,20 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+
+(declare-const x Int)
+(declare-const y Int)
+(declare-const z Int)
+
+(declare-const a Int)
+(declare-const b Int)
+(declare-const c Int)
+
+(assert (and
+        (not (sep (not (pto x a)) (pto y b) ))  
+        (sep (pto x a) (pto y b))
+  )
+)
+
+(check-sat)
diff --git a/test/regress/regress0/sep/trees-1.smt2 b/test/regress/regress0/sep/trees-1.smt2
new file mode 100644
index 0000000..3fa0d05
--- /dev/null
+++ b/test/regress/regress0/sep/trees-1.smt2
@@ -0,0 +1,43 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-sort Loc 0)
+(declare-const loc0 Loc)
+
+(declare-datatypes () ((Node (node (data Int) (left Loc) (right Loc)))))
+
+(declare-fun data0 () Node)
+
+(declare-const dv Int)
+(declare-const v Loc)
+
+(declare-const dl Int)
+(declare-const l Loc)
+(declare-const dr Int)
+(declare-const r Loc)
+
+(define-fun ten-tree0 ((x Loc) (d Int)) Bool 
+(or (and (emp loc0 data0) (= x (as sep.nil Loc))) (and (sep (pto x (node d l r)) (and (emp loc0 data0) (= l (as sep.nil Loc))) (and (emp loc0 data0) (= r (as sep.nil Loc)))) (= dl (- d 10)) (= dr (+ d 10)))))
+
+(declare-const dy Int)
+(declare-const y Loc)
+(declare-const dz Int)
+(declare-const z Loc)
+
+(define-fun ord-tree0 ((x Loc) (d Int)) Bool 
+(or (and (emp loc0 data0) (= x (as sep.nil Loc))) (and (sep (pto x (node d y z)) (and (emp loc0 data0) (= y (as sep.nil Loc))) (and (emp loc0 data0) (= z (as sep.nil Loc)))) (<= dy d) (<= d dz))))
+
+;------- f -------
+(assert (= y (as sep.nil Loc)))
+(assert (= z (as sep.nil Loc)))
+
+(assert (= dy dv))
+(assert (= dz (+ dv 10)))
+;-----------------
+
+(assert (not (= v (as sep.nil Loc))))
+
+(assert (ten-tree0 v dv))
+(assert (not (ord-tree0 v dv)))
+
+(check-sat)
diff --git a/test/regress/regress0/sep/wand-0526-sat.smt2 b/test/regress/regress0/sep/wand-0526-sat.smt2
new file mode 100644
index 0000000..12aa0a6
--- /dev/null
+++ b/test/regress/regress0/sep/wand-0526-sat.smt2
@@ -0,0 +1,10 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(declare-fun x () Int)
+(declare-fun y () Int)
+(declare-fun u () Int)
+(declare-fun v () Int)
+(assert (wand (pto x u) (pto y v)))
+(assert (emp 0 0))
+(check-sat)
diff --git a/test/regress/regress0/sep/wand-crash.smt2 b/test/regress/regress0/sep/wand-crash.smt2
new file mode 100644
index 0000000..dad089f
--- /dev/null
+++ b/test/regress/regress0/sep/wand-crash.smt2
@@ -0,0 +1,5 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(assert (wand (emp 0 0) (emp 0 0)))
+(check-sat)
diff --git a/test/regress/regress0/sep/wand-false.smt2 b/test/regress/regress0/sep/wand-false.smt2
new file mode 100644
index 0000000..65500f7
--- /dev/null
+++ b/test/regress/regress0/sep/wand-false.smt2
@@ -0,0 +1,7 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+(declare-fun x () Int)
+(assert (wand (pto x x) false))
+(check-sat)
diff --git a/test/regress/regress0/sep/wand-nterm-simp.smt2 b/test/regress/regress0/sep/wand-nterm-simp.smt2
new file mode 100644
index 0000000..b59b53b
--- /dev/null
+++ b/test/regress/regress0/sep/wand-nterm-simp.smt2
@@ -0,0 +1,7 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(declare-fun x () Int)
+(assert (wand (emp x x) (pto x 3)))
+(check-sat)
+
diff --git a/test/regress/regress0/sep/wand-nterm-simp2.smt2 b/test/regress/regress0/sep/wand-nterm-simp2.smt2
new file mode 100644
index 0000000..fa6a831
--- /dev/null
+++ b/test/regress/regress0/sep/wand-nterm-simp2.smt2
@@ -0,0 +1,7 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+(declare-fun x () Int)
+(assert (wand (pto x 1) (emp x x)))
+(check-sat)
diff --git a/test/regress/regress0/sep/wand-simp-sat.smt2 b/test/regress/regress0/sep/wand-simp-sat.smt2
new file mode 100644
index 0000000..120683f
--- /dev/null
+++ b/test/regress/regress0/sep/wand-simp-sat.smt2
@@ -0,0 +1,6 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(declare-fun x () Int)
+(assert (wand (pto x 1) (pto x 1)))
+(check-sat)
diff --git a/test/regress/regress0/sep/wand-simp-sat2.smt2 b/test/regress/regress0/sep/wand-simp-sat2.smt2
new file mode 100644
index 0000000..c684d16
--- /dev/null
+++ b/test/regress/regress0/sep/wand-simp-sat2.smt2
@@ -0,0 +1,7 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+(declare-fun x () Int)
+(assert (wand (pto x 1) (pto x 3)))
+(check-sat)
diff --git a/test/regress/regress0/sep/wand-simp-unsat.smt2 b/test/regress/regress0/sep/wand-simp-unsat.smt2
new file mode 100644
index 0000000..850be7b
--- /dev/null
+++ b/test/regress/regress0/sep/wand-simp-unsat.smt2
@@ -0,0 +1,7 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: unsat
+(set-logic QF_ALL_SUPPORTED)
+(declare-fun x () Int)
+(assert (wand (pto x 1) (pto x 3)))
+(assert (emp x x))
+(check-sat)
diff --git a/test/regress/regress0/sets/Makefile.am b/test/regress/regress0/sets/Makefile.am
new file mode 100644
index 0000000..06bd6cb
--- /dev/null
+++ b/test/regress/regress0/sets/Makefile.am
@@ -0,0 +1,101 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	jan24/insert_invariant_37_2.smt2 \
+	jan24/deepmeas0.hs.fqout.cvc4.47.smt2 \
+	jan24/deepmeas0.hs.fqout.small.smt2 \
+	jan24/remove_check_free_31_6.smt2 \
+	jan27/deepmeas0.hs.fqout.cvc4.41.smt2 \
+	jan27/ListConcat.hs.fqout.cvc4.177.smt2 \
+	jan27/ListConcat.hs.fqout.177minimized.smt2 \
+	jan27/ListElem.hs.fqout.cvc4.38.smt2 \
+	jan28/TalkingAboutSets.hs.fqout.3577minimized.smt2 \
+	jan30/UniqueZipper.hs.fqout.minimized10.smt2 \
+	jan30/UniqueZipper.hs.fqout.cvc4.10.smt2 \
+	jan30/UniqueZipper.hs.fqout.minimized1832.smt2 \
+	jan30/UniqueZipper.hs.fqout.cvc4.1832.smt2 \
+	feb3/ListElts.hs.fqout.cvc4.317.smt2 \
+	mar2014/lemmabug-ListElts317minimized.smt2 \
+	mar2014/sharing-preregister.smt2 \
+	mar2014/small.smt2 \
+	mar2014/smaller.smt2 \
+	mar2014/UniqueZipper.hs.1030minimized2.cvc4.smt2 \
+	mar2014/UniqueZipper.hs.1030minimized.cvc4.smt2 \
+	copy_check_heap_access_33_4.smt2 \
+	cvc-sample.cvc \
+	emptyset.smt2 \
+	error1.smt2 \
+	error2.smt2 \
+	eqtest.smt2 \
+	insert.smt2 \
+	fuzz14418.smt2 \
+	fuzz15201.smt2 \
+	fuzz31811.smt2 \
+	rec_copy_loop_check_heap_access_43_4.smt2 \
+	sets-equal.smt2 \
+	sets-inter.smt2 \
+	sets-sample.smt2 \
+	sets-sharing.smt2 \
+	sets-testlemma.smt2 \
+	sets-union.smt2 \
+	sharingbug.smt2 \
+	union-1a-flip.smt2 \
+	union-1a.smt2 \
+	union-1b-flip.smt2 \
+	union-1b.smt2 \
+	union-2.smt2 \
+	dt-simp-mem.smt2 \
+	card3-ground.smt2 \
+	card-3sets.cvc \
+	card.smt2 \
+	card-2.smt2 \
+	card-3.smt2 \
+	card-4.smt2 \
+	card-5.smt2 \
+	card-6.smt2 \
+	card-7.smt2 \
+	abt-min.smt2 \
+	abt-te-exh.smt2 \
+	abt-te-exh2.smt2 \
+	univset-simp.smt2 \
+	complement.cvc \
+	complement2.cvc
+
+EXTRA_DIST = $(TESTS)
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+
+# disabled tests, yet distribute
+EXTRA_DIST += \
+	jan28/TalkingAboutSets.hs.fqout.cvc4.3577.smt2 \
+	setofsets-disequal.smt2
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/sets/Makefile.in b/test/regress/regress0/sets/Makefile.in
new file mode 100644
index 0000000..e1ade5b
--- /dev/null
+++ b/test/regress/regress0/sets/Makefile.in
@@ -0,0 +1,1460 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/sets
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	jan24/insert_invariant_37_2.smt2 \
+	jan24/deepmeas0.hs.fqout.cvc4.47.smt2 \
+	jan24/deepmeas0.hs.fqout.small.smt2 \
+	jan24/remove_check_free_31_6.smt2 \
+	jan27/deepmeas0.hs.fqout.cvc4.41.smt2 \
+	jan27/ListConcat.hs.fqout.cvc4.177.smt2 \
+	jan27/ListConcat.hs.fqout.177minimized.smt2 \
+	jan27/ListElem.hs.fqout.cvc4.38.smt2 \
+	jan28/TalkingAboutSets.hs.fqout.3577minimized.smt2 \
+	jan30/UniqueZipper.hs.fqout.minimized10.smt2 \
+	jan30/UniqueZipper.hs.fqout.cvc4.10.smt2 \
+	jan30/UniqueZipper.hs.fqout.minimized1832.smt2 \
+	jan30/UniqueZipper.hs.fqout.cvc4.1832.smt2 \
+	feb3/ListElts.hs.fqout.cvc4.317.smt2 \
+	mar2014/lemmabug-ListElts317minimized.smt2 \
+	mar2014/sharing-preregister.smt2 \
+	mar2014/small.smt2 \
+	mar2014/smaller.smt2 \
+	mar2014/UniqueZipper.hs.1030minimized2.cvc4.smt2 \
+	mar2014/UniqueZipper.hs.1030minimized.cvc4.smt2 \
+	copy_check_heap_access_33_4.smt2 \
+	cvc-sample.cvc \
+	emptyset.smt2 \
+	error1.smt2 \
+	error2.smt2 \
+	eqtest.smt2 \
+	insert.smt2 \
+	fuzz14418.smt2 \
+	fuzz15201.smt2 \
+	fuzz31811.smt2 \
+	rec_copy_loop_check_heap_access_43_4.smt2 \
+	sets-equal.smt2 \
+	sets-inter.smt2 \
+	sets-sample.smt2 \
+	sets-sharing.smt2 \
+	sets-testlemma.smt2 \
+	sets-union.smt2 \
+	sharingbug.smt2 \
+	union-1a-flip.smt2 \
+	union-1a.smt2 \
+	union-1b-flip.smt2 \
+	union-1b.smt2 \
+	union-2.smt2 \
+	dt-simp-mem.smt2 \
+	card3-ground.smt2 \
+	card-3sets.cvc \
+	card.smt2 \
+	card-2.smt2 \
+	card-3.smt2 \
+	card-4.smt2 \
+	card-5.smt2 \
+	card-6.smt2 \
+	card-7.smt2 \
+	abt-min.smt2 \
+	abt-te-exh.smt2 \
+	abt-te-exh2.smt2 \
+	univset-simp.smt2 \
+	complement.cvc \
+	complement2.cvc
+
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+
+# disabled tests, yet distribute
+EXTRA_DIST = $(TESTS) jan28/TalkingAboutSets.hs.fqout.cvc4.3577.smt2 \
+	setofsets-disequal.smt2
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/sets/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/sets/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+jan24/insert_invariant_37_2.smt2.log: jan24/insert_invariant_37_2.smt2
+	@p='jan24/insert_invariant_37_2.smt2'; \
+	b='jan24/insert_invariant_37_2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+jan24/deepmeas0.hs.fqout.cvc4.47.smt2.log: jan24/deepmeas0.hs.fqout.cvc4.47.smt2
+	@p='jan24/deepmeas0.hs.fqout.cvc4.47.smt2'; \
+	b='jan24/deepmeas0.hs.fqout.cvc4.47.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+jan24/deepmeas0.hs.fqout.small.smt2.log: jan24/deepmeas0.hs.fqout.small.smt2
+	@p='jan24/deepmeas0.hs.fqout.small.smt2'; \
+	b='jan24/deepmeas0.hs.fqout.small.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+jan24/remove_check_free_31_6.smt2.log: jan24/remove_check_free_31_6.smt2
+	@p='jan24/remove_check_free_31_6.smt2'; \
+	b='jan24/remove_check_free_31_6.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+jan27/deepmeas0.hs.fqout.cvc4.41.smt2.log: jan27/deepmeas0.hs.fqout.cvc4.41.smt2
+	@p='jan27/deepmeas0.hs.fqout.cvc4.41.smt2'; \
+	b='jan27/deepmeas0.hs.fqout.cvc4.41.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+jan27/ListConcat.hs.fqout.cvc4.177.smt2.log: jan27/ListConcat.hs.fqout.cvc4.177.smt2
+	@p='jan27/ListConcat.hs.fqout.cvc4.177.smt2'; \
+	b='jan27/ListConcat.hs.fqout.cvc4.177.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+jan27/ListConcat.hs.fqout.177minimized.smt2.log: jan27/ListConcat.hs.fqout.177minimized.smt2
+	@p='jan27/ListConcat.hs.fqout.177minimized.smt2'; \
+	b='jan27/ListConcat.hs.fqout.177minimized.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+jan27/ListElem.hs.fqout.cvc4.38.smt2.log: jan27/ListElem.hs.fqout.cvc4.38.smt2
+	@p='jan27/ListElem.hs.fqout.cvc4.38.smt2'; \
+	b='jan27/ListElem.hs.fqout.cvc4.38.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+jan28/TalkingAboutSets.hs.fqout.3577minimized.smt2.log: jan28/TalkingAboutSets.hs.fqout.3577minimized.smt2
+	@p='jan28/TalkingAboutSets.hs.fqout.3577minimized.smt2'; \
+	b='jan28/TalkingAboutSets.hs.fqout.3577minimized.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+jan30/UniqueZipper.hs.fqout.minimized10.smt2.log: jan30/UniqueZipper.hs.fqout.minimized10.smt2
+	@p='jan30/UniqueZipper.hs.fqout.minimized10.smt2'; \
+	b='jan30/UniqueZipper.hs.fqout.minimized10.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+jan30/UniqueZipper.hs.fqout.cvc4.10.smt2.log: jan30/UniqueZipper.hs.fqout.cvc4.10.smt2
+	@p='jan30/UniqueZipper.hs.fqout.cvc4.10.smt2'; \
+	b='jan30/UniqueZipper.hs.fqout.cvc4.10.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+jan30/UniqueZipper.hs.fqout.minimized1832.smt2.log: jan30/UniqueZipper.hs.fqout.minimized1832.smt2
+	@p='jan30/UniqueZipper.hs.fqout.minimized1832.smt2'; \
+	b='jan30/UniqueZipper.hs.fqout.minimized1832.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+jan30/UniqueZipper.hs.fqout.cvc4.1832.smt2.log: jan30/UniqueZipper.hs.fqout.cvc4.1832.smt2
+	@p='jan30/UniqueZipper.hs.fqout.cvc4.1832.smt2'; \
+	b='jan30/UniqueZipper.hs.fqout.cvc4.1832.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+feb3/ListElts.hs.fqout.cvc4.317.smt2.log: feb3/ListElts.hs.fqout.cvc4.317.smt2
+	@p='feb3/ListElts.hs.fqout.cvc4.317.smt2'; \
+	b='feb3/ListElts.hs.fqout.cvc4.317.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mar2014/lemmabug-ListElts317minimized.smt2.log: mar2014/lemmabug-ListElts317minimized.smt2
+	@p='mar2014/lemmabug-ListElts317minimized.smt2'; \
+	b='mar2014/lemmabug-ListElts317minimized.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mar2014/sharing-preregister.smt2.log: mar2014/sharing-preregister.smt2
+	@p='mar2014/sharing-preregister.smt2'; \
+	b='mar2014/sharing-preregister.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mar2014/small.smt2.log: mar2014/small.smt2
+	@p='mar2014/small.smt2'; \
+	b='mar2014/small.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mar2014/smaller.smt2.log: mar2014/smaller.smt2
+	@p='mar2014/smaller.smt2'; \
+	b='mar2014/smaller.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mar2014/UniqueZipper.hs.1030minimized2.cvc4.smt2.log: mar2014/UniqueZipper.hs.1030minimized2.cvc4.smt2
+	@p='mar2014/UniqueZipper.hs.1030minimized2.cvc4.smt2'; \
+	b='mar2014/UniqueZipper.hs.1030minimized2.cvc4.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mar2014/UniqueZipper.hs.1030minimized.cvc4.smt2.log: mar2014/UniqueZipper.hs.1030minimized.cvc4.smt2
+	@p='mar2014/UniqueZipper.hs.1030minimized.cvc4.smt2'; \
+	b='mar2014/UniqueZipper.hs.1030minimized.cvc4.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+copy_check_heap_access_33_4.smt2.log: copy_check_heap_access_33_4.smt2
+	@p='copy_check_heap_access_33_4.smt2'; \
+	b='copy_check_heap_access_33_4.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cvc-sample.cvc.log: cvc-sample.cvc
+	@p='cvc-sample.cvc'; \
+	b='cvc-sample.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+emptyset.smt2.log: emptyset.smt2
+	@p='emptyset.smt2'; \
+	b='emptyset.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+error1.smt2.log: error1.smt2
+	@p='error1.smt2'; \
+	b='error1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+error2.smt2.log: error2.smt2
+	@p='error2.smt2'; \
+	b='error2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+eqtest.smt2.log: eqtest.smt2
+	@p='eqtest.smt2'; \
+	b='eqtest.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+insert.smt2.log: insert.smt2
+	@p='insert.smt2'; \
+	b='insert.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz14418.smt2.log: fuzz14418.smt2
+	@p='fuzz14418.smt2'; \
+	b='fuzz14418.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz15201.smt2.log: fuzz15201.smt2
+	@p='fuzz15201.smt2'; \
+	b='fuzz15201.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz31811.smt2.log: fuzz31811.smt2
+	@p='fuzz31811.smt2'; \
+	b='fuzz31811.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rec_copy_loop_check_heap_access_43_4.smt2.log: rec_copy_loop_check_heap_access_43_4.smt2
+	@p='rec_copy_loop_check_heap_access_43_4.smt2'; \
+	b='rec_copy_loop_check_heap_access_43_4.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sets-equal.smt2.log: sets-equal.smt2
+	@p='sets-equal.smt2'; \
+	b='sets-equal.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sets-inter.smt2.log: sets-inter.smt2
+	@p='sets-inter.smt2'; \
+	b='sets-inter.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sets-sample.smt2.log: sets-sample.smt2
+	@p='sets-sample.smt2'; \
+	b='sets-sample.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sets-sharing.smt2.log: sets-sharing.smt2
+	@p='sets-sharing.smt2'; \
+	b='sets-sharing.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sets-testlemma.smt2.log: sets-testlemma.smt2
+	@p='sets-testlemma.smt2'; \
+	b='sets-testlemma.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sets-union.smt2.log: sets-union.smt2
+	@p='sets-union.smt2'; \
+	b='sets-union.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sharingbug.smt2.log: sharingbug.smt2
+	@p='sharingbug.smt2'; \
+	b='sharingbug.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+union-1a-flip.smt2.log: union-1a-flip.smt2
+	@p='union-1a-flip.smt2'; \
+	b='union-1a-flip.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+union-1a.smt2.log: union-1a.smt2
+	@p='union-1a.smt2'; \
+	b='union-1a.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+union-1b-flip.smt2.log: union-1b-flip.smt2
+	@p='union-1b-flip.smt2'; \
+	b='union-1b-flip.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+union-1b.smt2.log: union-1b.smt2
+	@p='union-1b.smt2'; \
+	b='union-1b.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+union-2.smt2.log: union-2.smt2
+	@p='union-2.smt2'; \
+	b='union-2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dt-simp-mem.smt2.log: dt-simp-mem.smt2
+	@p='dt-simp-mem.smt2'; \
+	b='dt-simp-mem.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+card3-ground.smt2.log: card3-ground.smt2
+	@p='card3-ground.smt2'; \
+	b='card3-ground.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+card-3sets.cvc.log: card-3sets.cvc
+	@p='card-3sets.cvc'; \
+	b='card-3sets.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+card.smt2.log: card.smt2
+	@p='card.smt2'; \
+	b='card.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+card-2.smt2.log: card-2.smt2
+	@p='card-2.smt2'; \
+	b='card-2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+card-3.smt2.log: card-3.smt2
+	@p='card-3.smt2'; \
+	b='card-3.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+card-4.smt2.log: card-4.smt2
+	@p='card-4.smt2'; \
+	b='card-4.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+card-5.smt2.log: card-5.smt2
+	@p='card-5.smt2'; \
+	b='card-5.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+card-6.smt2.log: card-6.smt2
+	@p='card-6.smt2'; \
+	b='card-6.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+card-7.smt2.log: card-7.smt2
+	@p='card-7.smt2'; \
+	b='card-7.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+abt-min.smt2.log: abt-min.smt2
+	@p='abt-min.smt2'; \
+	b='abt-min.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+abt-te-exh.smt2.log: abt-te-exh.smt2
+	@p='abt-te-exh.smt2'; \
+	b='abt-te-exh.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+abt-te-exh2.smt2.log: abt-te-exh2.smt2
+	@p='abt-te-exh2.smt2'; \
+	b='abt-te-exh2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+univset-simp.smt2.log: univset-simp.smt2
+	@p='univset-simp.smt2'; \
+	b='univset-simp.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+complement.cvc.log: complement.cvc
+	@p='complement.cvc'; \
+	b='complement.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+complement2.cvc.log: complement2.cvc
+	@p='complement2.cvc'; \
+	b='complement2.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/sets/abt-min.smt2 b/test/regress/regress0/sets/abt-min.smt2
new file mode 100644
index 0000000..3bf1a9b
--- /dev/null
+++ b/test/regress/regress0/sets/abt-min.smt2
@@ -0,0 +1,22 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+(set-logic ALL)
+(declare-sort Atom 0)
+
+(declare-fun k (Atom Atom) (Set Atom))
+
+(declare-fun t0 () Atom)
+(declare-fun t1 () Atom)
+(declare-fun t2 () Atom)
+(declare-fun v () Atom)
+(declare-fun b2 () Atom)
+
+(assert (forall ((b Atom)) (or 
+(member v (k t0 b))
+(member v (k t1 b))
+) ))
+
+(assert (not (member v (k t2 b2))))
+
+(check-sat)
+
diff --git a/test/regress/regress0/sets/abt-te-exh.smt2 b/test/regress/regress0/sets/abt-te-exh.smt2
new file mode 100644
index 0000000..f87429f
--- /dev/null
+++ b/test/regress/regress0/sets/abt-te-exh.smt2
@@ -0,0 +1,13 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+(set-logic ALL)
+(declare-sort Atom 0)
+
+(declare-fun j ((Set Atom)) Atom)
+(declare-fun kk (Atom (Set Atom)) (Set Atom))
+(declare-fun n () (Set Atom))
+
+(assert (forall ((b Atom)) (= (as emptyset (Set Atom)) (kk (j (singleton b)) n))))
+
+(check-sat)
+
diff --git a/test/regress/regress0/sets/abt-te-exh2.smt2 b/test/regress/regress0/sets/abt-te-exh2.smt2
new file mode 100644
index 0000000..9ff80e1
--- /dev/null
+++ b/test/regress/regress0/sets/abt-te-exh2.smt2
@@ -0,0 +1,24 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+(set-logic ALL)
+(declare-sort Atom 0)
+
+(declare-fun p ((Set Atom) (Set Atom)) (Set Atom))
+(declare-fun j ((Set Atom) (Set Atom)) (Set Atom))
+(declare-fun k ((Set Atom) (Set Atom)) (Set Atom))
+(declare-fun d ((Set Atom) (Set Atom)) (Set Atom))
+
+(declare-fun a () (Set Atom))
+(declare-fun n () Atom)
+(declare-fun v () Atom)
+
+(assert (forall ((b Atom) (c Atom)) 
+(or 
+(member v (k (singleton n) (j (singleton b) a)))
+(= (as emptyset (Set Atom)) (d (j (singleton b) a) (singleton n)))
+)
+)
+)
+
+(check-sat)
+
diff --git a/test/regress/regress0/sets/card-2.smt2 b/test/regress/regress0/sets/card-2.smt2
new file mode 100644
index 0000000..bc460fb
--- /dev/null
+++ b/test/regress/regress0/sets/card-2.smt2
@@ -0,0 +1,11 @@
+(set-logic QF_UFLIAFS)
+(set-info :status sat)
+(declare-sort E 0)
+(declare-fun s () (Set E))
+(declare-fun t () (Set E))
+(declare-fun u () (Set E))
+(assert (>= (card s) 5))
+(assert (>= (card t) 5))
+(assert (<= (card u) 6))
+(assert (= u (union s t)))
+(check-sat)
diff --git a/test/regress/regress0/sets/card-3.smt2 b/test/regress/regress0/sets/card-3.smt2
new file mode 100644
index 0000000..0e96b02
--- /dev/null
+++ b/test/regress/regress0/sets/card-3.smt2
@@ -0,0 +1,12 @@
+(set-logic QF_UFLIAFS)
+(set-info :status unsat)
+(declare-sort E 0)
+(declare-fun s () (Set E))
+(declare-fun t () (Set E))
+(declare-fun u () (Set E))
+(assert (>= (card (union s t)) 8))
+(assert (>= (card (union s u)) 8))
+(assert (<= (card (union t u)) 5))
+(assert (<= (card s) 5))
+(assert (= (as emptyset (Set E)) (intersection t u)))
+(check-sat)
diff --git a/test/regress/regress0/sets/card-3sets.cvc b/test/regress/regress0/sets/card-3sets.cvc
new file mode 100644
index 0000000..cac10f3
--- /dev/null
+++ b/test/regress/regress0/sets/card-3sets.cvc
@@ -0,0 +1,9 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+x : SET OF INT;
+y : SET OF INT;
+z : SET OF INT;
+
+ASSERT CARD( x ) > CARD( y ) AND CARD( y ) > CARD( z );
+
+CHECKSAT;
diff --git a/test/regress/regress0/sets/card-4.smt2 b/test/regress/regress0/sets/card-4.smt2
new file mode 100644
index 0000000..456e24c
--- /dev/null
+++ b/test/regress/regress0/sets/card-4.smt2
@@ -0,0 +1,24 @@
+(set-logic QF_UFLIAFS)
+(set-info :status sat)
+(declare-sort E 0)
+(declare-fun s () (Set E))
+(declare-fun t () (Set E))
+(declare-fun u () (Set E))
+(assert (>= (card (union s t)) 8))
+(assert (>= (card (union s u)) 8))
+;(assert (<= (card (union t u)) 5))
+(assert (<= (card s) 5))
+(assert (= (as emptyset (Set E)) (intersection t u)))
+(declare-fun x1 () E)
+(declare-fun x2 () E)
+(declare-fun x3 () E)
+(declare-fun x4 () E)
+(declare-fun x5 () E)
+(declare-fun x6 () E)
+(assert (member x1 s))
+(assert (member x2 s))
+(assert (member x3 s))
+(assert (member x4 s))
+(assert (member x5 s))
+(assert (member x6 s))
+(check-sat)
diff --git a/test/regress/regress0/sets/card-5.smt2 b/test/regress/regress0/sets/card-5.smt2
new file mode 100644
index 0000000..4135a0c
--- /dev/null
+++ b/test/regress/regress0/sets/card-5.smt2
@@ -0,0 +1,25 @@
+(set-logic QF_UFLIAFS)
+(set-info :status unsat)
+(declare-sort E 0)
+(declare-fun s () (Set E))
+(declare-fun t () (Set E))
+(declare-fun u () (Set E))
+(assert (>= (card (union s t)) 8))
+(assert (>= (card (union s u)) 8))
+;(assert (<= (card (union t u)) 5))
+(assert (<= (card s) 5))
+(assert (= (as emptyset (Set E)) (intersection t u)))
+(declare-fun x1 () E)
+(declare-fun x2 () E)
+(declare-fun x3 () E)
+(declare-fun x4 () E)
+(declare-fun x5 () E)
+(declare-fun x6 () E)
+(assert (member x1 s))
+(assert (member x2 s))
+(assert (member x3 s))
+(assert (member x4 s))
+(assert (member x5 s))
+(assert (member x6 s))
+(assert (distinct x1 x2 x3 x4 x5 x6))
+(check-sat)
diff --git a/test/regress/regress0/sets/card-6.smt2 b/test/regress/regress0/sets/card-6.smt2
new file mode 100644
index 0000000..87d87c0
--- /dev/null
+++ b/test/regress/regress0/sets/card-6.smt2
@@ -0,0 +1,17 @@
+(set-logic QF_UFLIAFS)
+(set-info :status unsat)
+(declare-sort E 0)
+(declare-fun A () (Set E))
+(declare-fun B () (Set E))
+(declare-fun C () (Set E))
+(assert
+  (and
+    (= (as emptyset (Set E))
+       (intersection A B))
+    (subset C (union A B))
+    (>= (card C) 5)
+    (<= (card A) 2)
+    (<= (card B) 2)
+  )
+)
+(check-sat)
diff --git a/test/regress/regress0/sets/card-7.smt2 b/test/regress/regress0/sets/card-7.smt2
new file mode 100644
index 0000000..df1867c
--- /dev/null
+++ b/test/regress/regress0/sets/card-7.smt2
@@ -0,0 +1,47 @@
+(set-logic QF_UFLIAFS)
+(set-info :status sat)
+(declare-sort E 0)
+(declare-fun A1 () (Set E))
+(declare-fun A2 () (Set E))
+(declare-fun A3 () (Set E))
+(declare-fun A4 () (Set E))
+(declare-fun A5 () (Set E))
+(declare-fun A6 () (Set E))
+(declare-fun A7 () (Set E))
+(declare-fun A8 () (Set E))
+(declare-fun A9 () (Set E))
+(declare-fun A10 () (Set E))
+(declare-fun A11 () (Set E))
+(declare-fun A12 () (Set E))
+(declare-fun A13 () (Set E))
+(declare-fun A14 () (Set E))
+(declare-fun A15 () (Set E))
+(declare-fun A16 () (Set E))
+(declare-fun A17 () (Set E))
+(declare-fun A18 () (Set E))
+(declare-fun A19 () (Set E))
+(declare-fun A20 () (Set E))
+(assert (and
+  (= (card A1) 1)
+  (= (card A2) 1)
+  (= (card A3) 1)
+  (= (card A4) 1)
+  (= (card A5) 1)
+  (= (card A6) 1)
+  (= (card A7) 1)
+  (= (card A8) 1)
+  (= (card A9) 1)
+  (= (card A10) 1)
+  (= (card A11) 1)
+  (= (card A12) 1)
+  (= (card A13) 1)
+  (= (card A14) 1)
+  (= (card A15) 1)
+  (= (card A16) 1)
+  (= (card A17) 1)
+  (= (card A18) 1)
+  (= (card A19) 1)
+  (= (card A20) 1)
+))
+(assert (= 20 (+ (card A1) (card A2) (card A3) (card A4) (card A5) (card A6) (card A7) (card A8) (card A9) (card A10) (card A11) (card A12) (card A13) (card A14) (card A15) (card A16) (card A17) (card A18) (card A19) (card A20))))
+(check-sat)
diff --git a/test/regress/regress0/sets/card.smt2 b/test/regress/regress0/sets/card.smt2
new file mode 100644
index 0000000..d42bf6f
--- /dev/null
+++ b/test/regress/regress0/sets/card.smt2
@@ -0,0 +1,9 @@
+(set-logic QF_UFLIAFS)
+(set-info :status unsat)
+(declare-sort E 0)
+(declare-fun s () (Set E))
+(declare-fun t () (Set E))
+(assert (>= (card s) 5))
+(assert (>= (card t) 5))
+(assert (<= (card (union s t)) 4))
+(check-sat)
diff --git a/test/regress/regress0/sets/card3-ground.smt2 b/test/regress/regress0/sets/card3-ground.smt2
new file mode 100644
index 0000000..54a9a5c
--- /dev/null
+++ b/test/regress/regress0/sets/card3-ground.smt2
@@ -0,0 +1,6 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(declare-fun S () (Set Int))
+(assert (>= (card S) 3))
+(assert (not (member 1 S)))
+(check-sat)
diff --git a/test/regress/regress0/sets/complement.cvc b/test/regress/regress0/sets/complement.cvc
new file mode 100644
index 0000000..6181cbe
--- /dev/null
+++ b/test/regress/regress0/sets/complement.cvc
@@ -0,0 +1,9 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+Atom: TYPE;
+a : SET OF [Atom];
+b : SET OF [Atom];
+
+ASSERT a = (NOT b);
+
+CHECKSAT;
diff --git a/test/regress/regress0/sets/complement2.cvc b/test/regress/regress0/sets/complement2.cvc
new file mode 100644
index 0000000..6802065
--- /dev/null
+++ b/test/regress/regress0/sets/complement2.cvc
@@ -0,0 +1,11 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+Atom: TYPE;
+a : SET OF Atom;
+b : SET OF Atom;
+c : Atom;
+
+ASSERT a = NOT(a);
+ASSERT c IS_IN a;
+
+CHECKSAT;
diff --git a/test/regress/regress0/sets/copy_check_heap_access_33_4.smt2 b/test/regress/regress0/sets/copy_check_heap_access_33_4.smt2
new file mode 100644
index 0000000..9af45c2
--- /dev/null
+++ b/test/regress/regress0/sets/copy_check_heap_access_33_4.smt2
@@ -0,0 +1,135 @@
+; COMMAND-LINE: --full-saturate-quant
+; EXPECT: unsat
+(set-option :print-success false)
+(set-logic AUFLIAFS)
+(set-info :status unsat)
+(declare-sort Loc 0)
+(define-sort SetLoc () (Set Loc))
+(define-sort SetInt () (Set Int))
+(declare-sort FldLoc 0)
+(declare-sort FldInt 0)
+(declare-fun null$0 () Loc)
+(declare-fun read$0 (FldInt Loc) Int)
+(declare-fun read$1 (FldLoc Loc) Loc)
+(declare-fun Btwn$0 (FldLoc Loc Loc Loc) Bool)
+(declare-fun Alloc$0 () SetLoc)
+(declare-fun Alloc_1$0 () SetLoc)
+(declare-fun Axiom_1$0 () Bool)
+(declare-fun FP$0 () SetLoc)
+(declare-fun FP_1$0 () SetLoc)
+(declare-fun FP_Caller$0 () SetLoc)
+(declare-fun FP_Caller_1$0 () SetLoc)
+(declare-fun cp_2$0 () Loc)
+(declare-fun curr_2$0 () Loc)
+(declare-fun data$0 () FldInt)
+(declare-fun lst$0 () Loc)
+(declare-fun next$0 () FldLoc)
+(declare-fun res_1$0 () Loc)
+(declare-fun sk_?X_4$0 () SetLoc)
+(declare-fun slseg_domain$0 (FldInt FldLoc Loc Loc) SetLoc)
+(declare-fun slseg_struct$0 (SetLoc FldInt FldLoc Loc Loc) Bool)
+(declare-fun tmp_2$0 () Loc)
+
+(assert (! (forall ((?y Loc))
+           (or (not (Btwn$0 next$0 null$0 ?y ?y)) (= null$0 ?y)
+               (Btwn$0 next$0 null$0 (read$1 next$0 null$0) ?y)))
+   :named btwn_reach_1))
+
+(assert (! (forall ((?y Loc))
+           (or (not (= (read$1 next$0 null$0) null$0))
+               (not (Btwn$0 next$0 null$0 ?y ?y)) (= null$0 ?y)))
+   :named btwn_cycl_1))
+
+(assert (! (Btwn$0 next$0 null$0 (read$1 next$0 null$0) (read$1 next$0 null$0))
+   :named btwn_step_1))
+
+(assert (! (forall ((l1 Loc) (l2 Loc))
+           (or (not Axiom_1$0)
+               (or (<= (read$0 data$0 l1) (read$0 data$0 l2))
+                   (not (Btwn$0 next$0 l1 l2 null$0)) (not (member l1 sk_?X_4$0))
+                   (not (member l2 sk_?X_4$0)))))
+   :named sortedness_3))
+
+(assert (! (= (read$1 next$0 null$0) null$0) :named read_null_1))
+
+(assert (! (not (member tmp_2$0 Alloc$0)) :named new_31_11))
+
+(assert (! (not (member null$0 Alloc$0)) :named initial_footprint_of_copy_23_11_2))
+
+(assert (! (not (= lst$0 null$0)) :named if_else_26_6))
+
+(assert (! (= FP_Caller$0 (union FP$0 FP_Caller$0))
+   :named precondition_of_copy_23_11_4))
+
+(assert (! (= sk_?X_4$0 FP$0) :named precondition_of_copy_23_11_5))
+
+(assert (! (= res_1$0 tmp_2$0) :named assign_31_4))
+
+(assert (! (= cp_2$0 res_1$0) :named assign_32_4))
+
+(assert (! (= FP_1$0 (union FP$0 (singleton tmp_2$0))) :named assign_31_11))
+
+(assert (! (or (and (Btwn$0 next$0 lst$0 null$0 null$0) Axiom_1$0)
+       (not (slseg_struct$0 sk_?X_4$0 data$0 next$0 lst$0 null$0)))
+   :named unnamed_3))
+
+(assert (! (forall ((l1 Loc))
+           (or
+               (and (Btwn$0 next$0 lst$0 l1 null$0)
+                    (member l1 (slseg_domain$0 data$0 next$0 lst$0 null$0))
+                    (not (= l1 null$0)))
+               (and (or (= l1 null$0) (not (Btwn$0 next$0 lst$0 l1 null$0)))
+                    (not (member l1 (slseg_domain$0 data$0 next$0 lst$0 null$0))))))
+   :named slseg_footprint_2))
+
+(assert (! (not (member curr_2$0 FP_1$0)) :named check_heap_access_33_4))
+
+(assert (! (not (= tmp_2$0 null$0)) :named new_31_11_1))
+
+(assert (! (slseg_struct$0 sk_?X_4$0 data$0 next$0 lst$0 null$0)
+   :named precondition_of_copy_23_11_6))
+
+(assert (! (= sk_?X_4$0 (slseg_domain$0 data$0 next$0 lst$0 null$0))
+   :named precondition_of_copy_23_11_7))
+
+(assert (! (= Alloc$0 (union FP_Caller$0 Alloc$0))
+   :named initial_footprint_of_copy_23_11_3))
+
+(assert (! (= curr_2$0 lst$0) :named assign_30_4))
+
+(assert (! (= FP_Caller_1$0 (setminus FP_Caller$0 FP$0)) :named assign_26_2_1))
+
+(assert (! (= Alloc_1$0 (union Alloc$0 (singleton tmp_2$0))) :named assign_31_11_1))
+
+(assert (! (forall ((?x Loc)) (Btwn$0 next$0 ?x ?x ?x)) :named btwn_refl_1))
+
+(assert (! (forall ((?x Loc) (?y Loc)) (or (not (Btwn$0 next$0 ?x ?y ?x)) (= ?x ?y)))
+   :named btwn_sndw_1))
+
+(assert (! (forall ((?x Loc) (?y Loc) (?z Loc))
+           (or (not (Btwn$0 next$0 ?x ?y ?y)) (not (Btwn$0 next$0 ?x ?z ?z))
+               (Btwn$0 next$0 ?x ?y ?z) (Btwn$0 next$0 ?x ?z ?y)))
+   :named btwn_ord1_1))
+
+(assert (! (forall ((?x Loc) (?y Loc) (?z Loc))
+           (or (not (Btwn$0 next$0 ?x ?y ?z))
+               (and (Btwn$0 next$0 ?x ?y ?y) (Btwn$0 next$0 ?y ?z ?z))))
+   :named btwn_ord2_1))
+
+(assert (! (forall ((?x Loc) (?y Loc) (?z Loc))
+           (or (not (Btwn$0 next$0 ?x ?y ?y)) (not (Btwn$0 next$0 ?y ?z ?z))
+               (Btwn$0 next$0 ?x ?z ?z)))
+   :named btwn_trn1_1))
+
+(assert (! (forall ((?u Loc) (?x Loc) (?y Loc) (?z Loc))
+           (or (not (Btwn$0 next$0 ?x ?y ?z)) (not (Btwn$0 next$0 ?y ?u ?z))
+               (and (Btwn$0 next$0 ?x ?y ?u) (Btwn$0 next$0 ?x ?u ?z))))
+   :named btwn_trn2_1))
+
+(assert (! (forall ((?u Loc) (?x Loc) (?y Loc) (?z Loc))
+           (or (not (Btwn$0 next$0 ?x ?y ?z)) (not (Btwn$0 next$0 ?x ?u ?y))
+               (and (Btwn$0 next$0 ?x ?u ?z) (Btwn$0 next$0 ?u ?y ?z))))
+   :named btwn_trn3_1))
+
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/sets/cvc-sample.cvc b/test/regress/regress0/sets/cvc-sample.cvc
new file mode 100644
index 0000000..6740faa
--- /dev/null
+++ b/test/regress/regress0/sets/cvc-sample.cvc
@@ -0,0 +1,55 @@
+% COMMAND-LINE: --incremental
+% EXPECT: unsat
+% EXPECT: unsat
+% EXPECT: unsat
+% EXPECT: unsat
+% EXPECT: unsat
+% EXPECT: invalid
+OPTION "incremental" true;
+OPTION "logic" "ALL_SUPPORTED";
+SetInt : TYPE = SET OF INT;
+x : SET OF INT;
+y : SET OF INT;
+z : SET OF INT;
+e1 : INT;
+e2 : INT;
+PUSH;
+a : SET OF INT;
+b : SET OF INT;
+c : SET OF INT;
+e : INT;
+ASSERT a = {5};
+ASSERT c = (a | b);
+ASSERT NOT(c = (a & b));
+ASSERT c = (a - b);
+ASSERT a <= b;
+ASSERT e IS_IN c;
+ASSERT e IS_IN a;
+ASSERT e IS_IN (a & b);
+CHECKSAT TRUE;
+POP;
+PUSH;
+ASSERT x = y;
+ASSERT NOT((x | z) = (y | z));
+CHECKSAT TRUE;
+POP;
+PUSH;
+ASSERT x = y;
+ASSERT e1 = e2;
+ASSERT e1 IS_IN x;
+ASSERT NOT(e2 IS_IN y);
+CHECKSAT TRUE;
+POP;
+PUSH;
+ASSERT x = y;
+ASSERT e1 = e2;
+ASSERT e1 IS_IN (x | z);
+ASSERT NOT(e2 IS_IN (y | z));
+CHECKSAT TRUE;
+POP;
+PUSH;
+ASSERT 5 IS_IN ({1, 2, 3, 4} | {5});
+ASSERT 5 IS_IN ({1, 2, 3, 4} | {} :: SET OF INT);
+CHECKSAT TRUE;
+POP;
+QUERY LET v_0 = e1 IS_IN z IN v_0 AND NOT v_0;
diff --git a/test/regress/regress0/sets/dt-simp-mem.smt2 b/test/regress/regress0/sets/dt-simp-mem.smt2
new file mode 100644
index 0000000..a38544a
--- /dev/null
+++ b/test/regress/regress0/sets/dt-simp-mem.smt2
@@ -0,0 +1,9 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(declare-datatypes () ((D (A (a Int)))))
+(declare-fun x1 () D)
+(declare-fun S () (Set D))
+(declare-fun P (D) Bool)
+(assert (member x1 S))
+(assert (=> (member (A 0) S) (P x1)))
+(check-sat)
diff --git a/test/regress/regress0/sets/emptyset.smt2 b/test/regress/regress0/sets/emptyset.smt2
new file mode 100644
index 0000000..2b2322d
--- /dev/null
+++ b/test/regress/regress0/sets/emptyset.smt2
@@ -0,0 +1,4 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(assert (member 5 (as emptyset (Set Int) )))
+(check-sat)
diff --git a/test/regress/regress0/sets/eqtest.smt2 b/test/regress/regress0/sets/eqtest.smt2
new file mode 100644
index 0000000..cb816a3
--- /dev/null
+++ b/test/regress/regress0/sets/eqtest.smt2
@@ -0,0 +1,18 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-fun A () (Set Int) )
+(declare-fun B () (Set Int) )
+(declare-fun C () (Set Int) )
+(declare-fun D () (Set Int) )
+(declare-fun E () (Set Int) )
+(declare-fun F () (Set Int) )
+(declare-fun G () (Set Int) )
+(declare-fun H () (Set Int) )
+(declare-fun I () (Set Int) )
+(declare-fun x () Int)
+(assert (member x (intersection (union A B) C)))
+(assert (not (member x G)))
+(assert (= (union A B) D))
+(assert (= C (intersection E F)))
+(assert (and (= F H) (= G H) (= H I)))
+(check-sat)
diff --git a/test/regress/regress0/sets/error1.smt2 b/test/regress/regress0/sets/error1.smt2
new file mode 100644
index 0000000..bf18223
--- /dev/null
+++ b/test/regress/regress0/sets/error1.smt2
@@ -0,0 +1,13 @@
+; EXPECT: sat
+(set-logic QF_UFLIAFS)
+(set-info :status sat)
+(declare-fun A () (Set Int))
+(declare-fun C () (Set Int))
+(declare-fun D () (Set Int))
+(declare-fun E () (Set Int))
+(set-info :status sat)
+
+(assert (= A (union D C)))
+(assert (not (= A (union E A))))
+
+(check-sat)
diff --git a/test/regress/regress0/sets/error2.smt2 b/test/regress/regress0/sets/error2.smt2
new file mode 100644
index 0000000..0b8c5ab
--- /dev/null
+++ b/test/regress/regress0/sets/error2.smt2
@@ -0,0 +1,4 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+(assert (= (as emptyset (Set Int)) (singleton 5)))
+(check-sat)
diff --git a/test/regress/regress0/sets/feb3/ListElts.hs.fqout.cvc4.317.smt2 b/test/regress/regress0/sets/feb3/ListElts.hs.fqout.cvc4.317.smt2
new file mode 100644
index 0000000..7b5294a
--- /dev/null
+++ b/test/regress/regress0/sets/feb3/ListElts.hs.fqout.cvc4.317.smt2
@@ -0,0 +1,98 @@
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+(define-sort Elt () Int)
+(define-sort mySet () (Set Elt ))
+(define-fun smt_set_emp () mySet (as emptyset mySet))
+(define-fun smt_set_mem ((x Elt) (s mySet)) Bool (member x s))
+(define-fun smt_set_add ((s mySet) (x Elt)) mySet (union s (singleton x)))
+(define-fun smt_set_cup ((s1 mySet) (s2 mySet)) mySet (union s1 s2))
+(define-fun smt_set_cap ((s1 mySet) (s2 mySet)) mySet (intersection s1 s2))
+;(define-fun smt_set_com ((s mySet)) mySet ((_ map not) s))
+(define-fun smt_set_dif ((s1 mySet) (s2 mySet)) mySet (setminus s1 s2))
+;(define-fun smt_set_sub ((s1 mySet) (s2 mySet)) Bool (= smt_set_emp (smt_set_dif s1 s2)))
+(define-fun smt_set_sub ((s1 mySet) (s2 mySet)) Bool (subset s1 s2))
+(declare-fun z3v58 () Int)
+(declare-fun z3v59 () Int)
+(assert (distinct z3v58 z3v59))
+(declare-fun z3f60 (Int) Bool)
+(declare-fun z3v61 () Int)
+(declare-fun z3f62 (Int) Int)
+(declare-fun z3v63 () Int)
+(declare-fun z3v64 () Int)
+(declare-fun z3v67 () Int)
+(declare-fun z3f68 (Int) Int)
+(declare-fun z3f69 (Int) mySet)
+(declare-fun z3f70 (Int) mySet)
+(declare-fun z3f71 (Int) Bool)
+(declare-fun z3v73 () Int)
+(declare-fun z3v76 () Int)
+(declare-fun z3v79 () Int)
+(declare-fun z3v82 () Int)
+(declare-fun z3v84 () Int)
+(declare-fun z3v85 () Int)
+(declare-fun z3v86 () Int)
+(declare-fun z3v89 () Int)
+(declare-fun z3v90 () Int)
+(declare-fun z3v91 () Int)
+(declare-fun z3f92 (Int Int) Int)
+(declare-fun z3v93 () Int)
+(declare-fun z3v94 () Int)
+(declare-fun z3f96 () Int)
+(declare-fun z3v97 () Int)
+(declare-fun z3v98 () Int)
+(declare-fun z3v99 () Int)
+(declare-fun z3v100 () Int)
+(declare-fun z3v101 () Int)
+(declare-fun z3v102 () Int)
+(declare-fun z3v104 () Int)
+(declare-fun z3v107 () Int)
+(declare-fun z3v110 () Int)
+(declare-fun z3v113 () Int)
+(declare-fun z3v116 () Int)
+(declare-fun z3v117 () Int)
+(declare-fun z3v118 () Int)
+(declare-fun z3v119 () Int)
+(declare-fun z3v120 () Int)
+(declare-fun z3v121 () Int)
+(declare-fun z3v122 () Int)
+(declare-fun z3v123 () Int)
+(declare-fun z3v124 () Int)
+(declare-fun z3v125 () Int)
+(declare-fun z3v127 () Int)
+(declare-fun z3v130 () Int)
+(declare-fun z3v133 () Int)
+(declare-fun z3v134 () Int)
+(declare-fun z3v135 () Int)
+(declare-fun z3v136 () Int)
+(declare-fun z3v137 () Int)
+(declare-fun z3v140 () Int)
+(declare-fun z3v141 () Int)
+(declare-fun z3v142 () Int)
+(declare-fun z3v143 () Int)
+(declare-fun z3v144 () Int)
+(declare-fun z3v145 () Int)
+(declare-fun z3v147 () Int)
+(declare-fun z3v150 () Int)
+(declare-fun z3v151 () Int)
+(declare-fun z3v152 () Int)
+(assert (= (z3f69 z3v152) (smt_set_cup (smt_set_add smt_set_emp z3v143) (z3f69 z3v151))))
+(assert (= (z3f70 z3v152) (smt_set_cup (smt_set_add smt_set_emp z3v143) (z3f70 z3v151))))
+(assert (= (z3f68 z3v152) (+ 1 (z3f68 z3v151))))
+(assert (= (z3f71 z3v152) false))
+(assert (and (>= (z3f68 z3v140) 0) (>= (z3f68 z3v141) 0) (>= (z3f68 z3v151) 0) (>= (z3f68 z3v142) 0) (= (z3f69 z3v142) (smt_set_cup (smt_set_add smt_set_emp z3v143) (z3f69 z3v141))) (= (z3f70 z3v142) (smt_set_cup (smt_set_add smt_set_emp z3v143) (z3f70 z3v141))) (= (z3f68 z3v142) (+ 1 (z3f68 z3v141))) (= (z3f71 z3v142) false) (= z3v142 (z3f92 z3v143 z3v141)) (>= (z3f68 z3v142) 0) (= z3v142 z3v144) (>= (z3f68 z3v142) 0) (>= (z3f68 z3v144) 0) (z3f60 z3v58) (= (z3f62 z3v61) z3v61) (= (z3f62 [...]
+(assert (= (z3f69 z3v151) (smt_set_cup (z3f69 z3v140) (z3f69 z3v141))))
+(assert (= (z3f69 z3v151) (smt_set_cup (z3f69 z3v140) (z3f69 z3v140))))
+(assert (= (z3f69 z3v151) (smt_set_cup (z3f69 z3v141) (z3f69 z3v140))))
+(assert (smt_set_sub (z3f69 z3v151) (z3f69 z3v140)))
+(assert (= (z3f69 z3v151) (z3f69 z3v140)))
+(assert (<= z3v151 z3v140))
+(assert (>= z3v151 z3v140))
+(assert (<= (z3f68 z3v151) (z3f68 z3v140)))
+(assert (>= (z3f68 z3v151) (z3f68 z3v141)))
+(assert (>= (z3f68 z3v151) (z3f68 z3v140)))
+(assert (= (z3f68 z3v151) (z3f68 z3v140)))
+(assert (= z3v151 z3v140))
+(assert (>= (z3f68 z3v151) 0))
+(assert (not (= (z3f69 z3v152) (smt_set_cup (z3f69 z3v140) (z3f69 z3v140)))))
+(check-sat)
diff --git a/test/regress/regress0/sets/fuzz14418.smt2 b/test/regress/regress0/sets/fuzz14418.smt2
new file mode 100644
index 0000000..2467974
--- /dev/null
+++ b/test/regress/regress0/sets/fuzz14418.smt2
@@ -0,0 +1,171 @@
+; symptom: assertion failure in EqEngine : hasTerm(t)
+; 
+; issue: had some nodes in d_pending, even though sat context had been popped,
+; and those were no longer relevant.
+;
+; fix: make pending queues sat context depending. d_pendingEverInserted which
+; is still user-context dependent takes care of not generating a lemma twice.
+;
+; sat
+(set-info :source |fuzzsmt|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "random")
+(set-info :status sat)
+(set-logic QF_UFLIAFS)
+(define-sort Element () Int)
+(declare-fun f0 ( Int) Int)
+(declare-fun f1 ( (Set Element) (Set Element) (Set Element)) (Set Element))
+(declare-fun p0 ( Int Int) Bool)
+(declare-fun p1 ( (Set Element)) Bool)
+(declare-fun v0 () Int)
+(declare-fun v1 () (Set Element))
+(declare-fun v2 () (Set Element))
+(declare-fun v3 () (Set Element))
+(declare-fun v4 () (Set Element))
+(assert (let ((e5 7))
+(let ((e6 (* e5 v0)))
+(let ((e7 (* v0 e5)))
+(let ((e8 (f0 e6)))
+(let ((e9 (* v0 (- e5))))
+(let ((e10 (f0 v0)))
+(let ((e11 (* (- e5) e10)))
+(let ((e12 (ite (p0 e7 e6) 1 0)))
+(let ((e13 (union v3 v4)))
+(let ((e14 (setminus v2 v2)))
+(let ((e15 (f1 v1 v4 v1)))
+(let ((e16 (f1 e14 v1 v4)))
+(let ((e17 (intersection e16 e15)))
+(let ((e18 (f1 v4 e15 v2)))
+(let ((e19 (ite (p1 e13) (singleton 1) (singleton 0))))
+(let ((e20 (member v0 e17)))
+(let ((e21 (member e7 e16)))
+(let ((e22 (member e10 e16)))
+(let ((e23 (member e8 e17)))
+(let ((e24 (member e9 e14)))
+(let ((e25 (member e8 e16)))
+(let ((e26 (member v0 e13)))
+(let ((e27 (member e12 v4)))
+(let ((e28 (member e8 e14)))
+(let ((e29 (member e8 v1)))
+(let ((e30 (member e10 e13)))
+(let ((e31 (member e7 e13)))
+(let ((e32 (f1 e13 e13 e13)))
+(let ((e33 (f1 e18 v4 e17)))
+(let ((e34 (f1 v2 v2 e15)))
+(let ((e35 (f1 e33 e18 e15)))
+(let ((e36 (f1 e19 e14 e17)))
+(let ((e37 (f1 e34 e18 e34)))
+(let ((e38 (f1 v3 e34 e18)))
+(let ((e39 (f1 e16 v4 e13)))
+(let ((e40 (f1 v1 e34 e15)))
+(let ((e41 (< e10 e11)))
+(let ((e42 (= e6 e12)))
+(let ((e43 (> e6 e11)))
+(let ((e44 (< e12 e8)))
+(let ((e45 (< e7 e10)))
+(let ((e46 (= e11 e12)))
+(let ((e47 (= e11 e7)))
+(let ((e48 (<= e11 e10)))
+(let ((e49 (p0 e9 e9)))
+(let ((e50 (>= v0 e10)))
+(let ((e51 (ite e22 e14 e33)))
+(let ((e52 (ite e45 e16 e37)))
+(let ((e53 (ite e42 e39 e17)))
+(let ((e54 (ite e21 e39 e33)))
+(let ((e55 (ite e29 e13 e13)))
+(let ((e56 (ite e48 e15 e34)))
+(let ((e57 (ite e50 e38 e53)))
+(let ((e58 (ite e47 e32 v1)))
+(let ((e59 (ite e20 e36 e33)))
+(let ((e60 (ite e28 e35 v2)))
+(let ((e61 (ite e48 e40 e38)))
+(let ((e62 (ite e30 e38 e53)))
+(let ((e63 (ite e22 v4 e19)))
+(let ((e64 (ite e46 e60 e53)))
+(let ((e65 (ite e25 e61 e16)))
+(let ((e66 (ite e23 v3 e38)))
+(let ((e67 (ite e49 v4 e18)))
+(let ((e68 (ite e21 e54 v3)))
+(let ((e69 (ite e25 e15 v4)))
+(let ((e70 (ite e20 e55 e19)))
+(let ((e71 (ite e27 e38 e36)))
+(let ((e72 (ite e28 e14 e33)))
+(let ((e73 (ite e42 e66 e60)))
+(let ((e74 (ite e26 e54 e69)))
+(let ((e75 (ite e28 e68 e71)))
+(let ((e76 (ite e24 e33 e52)))
+(let ((e77 (ite e44 e40 e74)))
+(let ((e78 (ite e48 e32 e51)))
+(let ((e79 (ite e22 e34 e62)))
+(let ((e80 (ite e22 e78 e73)))
+(let ((e81 (ite e22 e13 e55)))
+(let ((e82 (ite e43 e37 e70)))
+(let ((e83 (ite e48 e59 e80)))
+(let ((e84 (ite e29 e15 e77)))
+(let ((e85 (ite e41 e19 e35)))
+(let ((e86 (ite e22 e63 e69)))
+(let ((e87 (ite e26 e19 e70)))
+(let ((e88 (ite e46 e37 e53)))
+(let ((e89 (ite e25 e70 e76)))
+(let ((e90 (ite e31 v4 e73)))
+(let ((e91 (ite e46 e12 e8)))
+(let ((e92 (ite e43 e11 e6)))
+(let ((e93 (ite e50 e10 e7)))
+(let ((e94 (ite e21 e8 e7)))
+(let ((e95 (ite e27 v0 e6)))
+(let ((e96 (ite e24 e9 e92)))
+(let ((e97 (ite e22 e6 e92)))
+(let ((e98 (ite e49 e96 e12)))
+(let ((e99 (ite e27 e98 e6)))
+(let ((e100 (ite e31 e11 e8)))
+(let ((e101 (ite e26 e12 v0)))
+(let ((e102 (ite e22 e92 e96)))
+(let ((e103 (ite e28 e92 e6)))
+(let ((e104 (ite e27 e12 v0)))
+(let ((e105 (ite e23 e101 e9)))
+(let ((e106 (ite e47 e11 e104)))
+(let ((e107 (ite e45 e105 e100)))
+(let ((e108 (ite e48 e12 e9)))
+(let ((e109 (ite e42 e96 e91)))
+(let ((e110 (ite e29 e11 e101)))
+(let ((e111 (ite e50 e107 e110)))
+(let ((e112 (ite e29 e104 e92)))
+(let ((e113 (ite e20 e108 e12)))
+(let ((e114 (ite e44 e96 e104)))
+(let ((e115 (ite e41 e105 e110)))
+(let ((e116 (ite e41 e6 e103)))
+(let ((e117 (ite e28 e92 e114)))
+(let ((e118 (ite e30 e111 e113)))
+(let ((e119 (ite e30 e109 e8)))
+(let ((e120 (ite e25 e12 e118)))
+(let ((e121 (xor e46 e42)))
+(let ((e122 (xor e28 e29)))
+(let ((e123 (= e122 e49)))
+(let ((e124 (and e43 e45)))
+(let ((e125 (or e121 e23)))
+(let ((e126 (and e125 e24)))
+(let ((e127 (= e41 e126)))
+(let ((e128 (xor e124 e44)))
+(let ((e129 (not e26)))
+(let ((e130 (= e22 e123)))
+(let ((e131 (not e20)))
+(let ((e132 (and e127 e27)))
+(let ((e133 (=> e50 e131)))
+(let ((e134 (=> e132 e30)))
+(let ((e135 (xor e128 e48)))
+(let ((e136 (ite e129 e47 e129)))
+(let ((e137 (and e133 e130)))
+(let ((e138 (or e136 e134)))
+(let ((e139 (and e31 e31)))
+(let ((e140 (not e137)))
+(let ((e141 (= e140 e139)))
+(let ((e142 (= e25 e21)))
+(let ((e143 (not e142)))
+(let ((e144 (and e143 e135)))
+(let ((e145 (and e144 e138)))
+(let ((e146 (and e145 e145)))
+(let ((e147 (= e141 e146)))
+e147
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
+(check-sat)
diff --git a/test/regress/regress0/sets/fuzz15201.smt2 b/test/regress/regress0/sets/fuzz15201.smt2
new file mode 100644
index 0000000..e12b74d
--- /dev/null
+++ b/test/regress/regress0/sets/fuzz15201.smt2
@@ -0,0 +1,269 @@
+; symptom: unsat instead of sat
+; issue/fix: buggy rewriter for setminus
+(set-info :source |fuzzsmt|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "random")
+(set-info :status sat)
+(set-logic QF_UFLIAFS)
+(define-sort Element () Int)
+(declare-fun f0 ( Int) Int)
+(declare-fun f1 ( (Set Element)) (Set Element))
+(declare-fun p0 ( Int) Bool)
+(declare-fun p1 ( (Set Element) (Set Element) (Set Element)) Bool)
+(declare-fun v0 () Int)
+(declare-fun v1 () (Set Element))
+(declare-fun v2 () (Set Element))
+(assert (let ((e3 0))
+(let ((e4 (+ v0 v0)))
+(let ((e5 (+ v0 e4)))
+(let ((e6 (* (- e3) e4)))
+(let ((e7 (- e4 e6)))
+(let ((e8 (+ e7 e5)))
+(let ((e9 (- v0)))
+(let ((e10 (* e6 e3)))
+(let ((e11 (- e8 e5)))
+(let ((e12 (- e5)))
+(let ((e13 (* e7 (- e3))))
+(let ((e14 (f0 e7)))
+(let ((e15 (ite (p0 e9) 1 0)))
+(let ((e16 (setminus v2 v1)))
+(let ((e17 (setminus v1 v2)))
+(let ((e18 (union e17 e17)))
+(let ((e19 (intersection e17 v1)))
+(let ((e20 (intersection e17 e18)))
+(let ((e21 (intersection v1 e16)))
+(let ((e22 (setminus e20 e16)))
+(let ((e23 (ite (p1 v2 e18 e21) (singleton 1) (singleton 0))))
+(let ((e24 (setminus e17 e23)))
+(let ((e25 (union v2 e22)))
+(let ((e26 (union e24 e18)))
+(let ((e27 (ite (p1 e20 e19 e25) (singleton 1) (singleton 0))))
+(let ((e28 (f1 e20)))
+(let ((e29 (member e14 e17)))
+(let ((e30 (member e13 e23)))
+(let ((e31 (member e11 e25)))
+(let ((e32 (member e6 v1)))
+(let ((e33 (member e9 v1)))
+(let ((e34 (member v0 e28)))
+(let ((e35 (member e9 e16)))
+(let ((e36 (member e4 e17)))
+(let ((e37 (member e9 e18)))
+(let ((e38 (member e14 e25)))
+(let ((e39 (member e14 v2)))
+(let ((e40 (member v0 v1)))
+(let ((e41 (member e4 e16)))
+(let ((e42 (member e15 e21)))
+(let ((e43 (member e7 e22)))
+(let ((e44 (member e11 v2)))
+(let ((e45 (member e14 e22)))
+(let ((e46 (member e11 e16)))
+(let ((e47 (member e15 e22)))
+(let ((e48 (member e10 e23)))
+(let ((e49 (member e4 e21)))
+(let ((e50 (member e5 e28)))
+(let ((e51 (member e6 e28)))
+(let ((e52 (member v0 e22)))
+(let ((e53 (member e14 e20)))
+(let ((e54 (f1 e21)))
+(let ((e55 (f1 e28)))
+(let ((e56 (f1 e27)))
+(let ((e57 (f1 e17)))
+(let ((e58 (f1 e22)))
+(let ((e59 (f1 e26)))
+(let ((e60 (f1 e19)))
+(let ((e61 (f1 v1)))
+(let ((e62 (f1 e24)))
+(let ((e63 (f1 e20)))
+(let ((e64 (f1 e23)))
+(let ((e65 (f1 v2)))
+(let ((e66 (f1 e25)))
+(let ((e67 (f1 e62)))
+(let ((e68 (f1 e18)))
+(let ((e69 (f1 e18)))
+(let ((e70 (f1 e23)))
+(let ((e71 (f1 e55)))
+(let ((e72 (f1 e26)))
+(let ((e73 (f1 e16)))
+(let ((e74 (= e13 e13)))
+(let ((e75 (p0 e11)))
+(let ((e76 (distinct e15 e4)))
+(let ((e77 (> e14 e10)))
+(let ((e78 (= e4 e15)))
+(let ((e79 (distinct v0 e9)))
+(let ((e80 (= e15 e14)))
+(let ((e81 (>= e10 e11)))
+(let ((e82 (distinct e9 e8)))
+(let ((e83 (p0 v0)))
+(let ((e84 (>= e12 e14)))
+(let ((e85 (distinct e7 e13)))
+(let ((e86 (<= e6 e11)))
+(let ((e87 (= e13 e10)))
+(let ((e88 (>= e7 e8)))
+(let ((e89 (<= v0 e10)))
+(let ((e90 (>= e5 e15)))
+(let ((e91 (ite e33 e66 e26)))
+(let ((e92 (ite e88 e54 v1)))
+(let ((e93 (ite e76 e70 e16)))
+(let ((e94 (ite e85 e19 e24)))
+(let ((e95 (ite e88 e68 e20)))
+(let ((e96 (ite e86 e25 e65)))
+(let ((e97 (ite e83 v2 e23)))
+(let ((e98 (ite e50 e63 e63)))
+(let ((e99 (ite e48 e56 e93)))
+(let ((e100 (ite e38 e60 v2)))
+(let ((e101 (ite e30 e61 e61)))
+(let ((e102 (ite e85 e69 e57)))
+(let ((e103 (ite e83 e18 e102)))
+(let ((e104 (ite e43 e62 e97)))
+(let ((e105 (ite e76 e27 e21)))
+(let ((e106 (ite e89 e92 e55)))
+(let ((e107 (ite e46 e72 e65)))
+(let ((e108 (ite e79 e71 e97)))
+(let ((e109 (ite e44 e64 e21)))
+(let ((e110 (ite e33 e70 e25)))
+(let ((e111 (ite e43 e63 e105)))
+(let ((e112 (ite e39 e56 e108)))
+(let ((e113 (ite e49 e17 e107)))
+(let ((e114 (ite e74 e63 e113)))
+(let ((e115 (ite e84 e28 v1)))
+(let ((e116 (ite e82 e68 e67)))
+(let ((e117 (ite e75 e73 e21)))
+(let ((e118 (ite e36 e59 e16)))
+(let ((e119 (ite e48 e118 e61)))
+(let ((e120 (ite e90 e56 e100)))
+(let ((e121 (ite e80 e24 e25)))
+(let ((e122 (ite e31 e22 v2)))
+(let ((e123 (ite e45 e107 e16)))
+(let ((e124 (ite e40 e70 e73)))
+(let ((e125 (ite e52 e58 e118)))
+(let ((e126 (ite e88 e72 e72)))
+(let ((e127 (ite e35 e58 e27)))
+(let ((e128 (ite e42 e59 e21)))
+(let ((e129 (ite e44 e127 e103)))
+(let ((e130 (ite e51 e118 e69)))
+(let ((e131 (ite e37 e16 e24)))
+(let ((e132 (ite e83 e105 e28)))
+(let ((e133 (ite e48 e107 e60)))
+(let ((e134 (ite e34 e101 e22)))
+(let ((e135 (ite e86 e97 e57)))
+(let ((e136 (ite e47 e94 e100)))
+(let ((e137 (ite e78 e104 e95)))
+(let ((e138 (ite e75 e26 e96)))
+(let ((e139 (ite e35 e97 e121)))
+(let ((e140 (ite e44 e112 e118)))
+(let ((e141 (ite e77 e107 e56)))
+(let ((e142 (ite e53 e64 e129)))
+(let ((e143 (ite e48 e128 e23)))
+(let ((e144 (ite e50 e73 e17)))
+(let ((e145 (ite e33 e98 e114)))
+(let ((e146 (ite e32 e137 e105)))
+(let ((e147 (ite e41 e98 e96)))
+(let ((e148 (ite e29 e93 e121)))
+(let ((e149 (ite e87 e104 e21)))
+(let ((e150 (ite e46 e131 e110)))
+(let ((e151 (ite e81 e25 e65)))
+(let ((e152 (ite e34 e10 e10)))
+(let ((e153 (ite e36 e7 e13)))
+(let ((e154 (ite e43 e12 e10)))
+(let ((e155 (ite e50 e14 e7)))
+(let ((e156 (ite e34 e9 e6)))
+(let ((e157 (ite e33 e7 v0)))
+(let ((e158 (ite e50 e157 e10)))
+(let ((e159 (ite e51 e8 e11)))
+(let ((e160 (ite e32 v0 e157)))
+(let ((e161 (ite e85 e15 e158)))
+(let ((e162 (ite e43 e5 e11)))
+(let ((e163 (ite e76 e4 v0)))
+(let ((e164 (ite e53 e10 e159)))
+(let ((e165 (ite e80 e161 e163)))
+(let ((e166 (ite e78 e13 e11)))
+(let ((e167 (ite e49 e4 e8)))
+(let ((e168 (ite e45 e11 e155)))
+(let ((e169 (ite e81 e155 e166)))
+(let ((e170 (ite e87 e169 e161)))
+(let ((e171 (ite e53 e165 e13)))
+(let ((e172 (ite e83 e12 e160)))
+(let ((e173 (ite e80 e168 e159)))
+(let ((e174 (ite e46 e171 e168)))
+(let ((e175 (ite e74 e5 e155)))
+(let ((e176 (ite e89 e159 e4)))
+(let ((e177 (ite e29 e159 e172)))
+(let ((e178 (ite e79 e165 e162)))
+(let ((e179 (ite e88 e166 e168)))
+(let ((e180 (ite e77 e175 e167)))
+(let ((e181 (ite e47 e157 e165)))
+(let ((e182 (ite e84 e172 e7)))
+(let ((e183 (ite e30 e174 e157)))
+(let ((e184 (ite e90 e4 e14)))
+(let ((e185 (ite e38 e178 e14)))
+(let ((e186 (ite e44 e166 e154)))
+(let ((e187 (ite e42 e162 e186)))
+(let ((e188 (ite e86 e187 e10)))
+(let ((e189 (ite e29 e171 e182)))
+(let ((e190 (ite e77 e185 e165)))
+(let ((e191 (ite e75 e171 e9)))
+(let ((e192 (ite e39 e161 e181)))
+(let ((e193 (ite e82 e166 e10)))
+(let ((e194 (ite e31 e183 e179)))
+(let ((e195 (ite e44 e191 e169)))
+(let ((e196 (ite e35 e171 e156)))
+(let ((e197 (ite e86 e179 e164)))
+(let ((e198 (ite e41 e5 e5)))
+(let ((e199 (ite e85 e160 e161)))
+(let ((e200 (ite e52 e173 e157)))
+(let ((e201 (ite e47 e161 e4)))
+(let ((e202 (ite e52 e6 e186)))
+(let ((e203 (ite e45 e162 e198)))
+(let ((e204 (ite e48 e194 e11)))
+(let ((e205 (ite e37 e197 e157)))
+(let ((e206 (ite e35 e153 e176)))
+(let ((e207 (ite e40 e185 e188)))
+(let ((e208 (= e53 e41)))
+(let ((e209 (not e79)))
+(let ((e210 (= e30 e87)))
+(let ((e211 (or e34 e48)))
+(let ((e212 (=> e82 e29)))
+(let ((e213 (xor e77 e211)))
+(let ((e214 (and e31 e78)))
+(let ((e215 (ite e36 e76 e37)))
+(let ((e216 (= e84 e45)))
+(let ((e217 (or e43 e46)))
+(let ((e218 (and e88 e40)))
+(let ((e219 (not e89)))
+(let ((e220 (not e35)))
+(let ((e221 (or e218 e213)))
+(let ((e222 (xor e216 e75)))
+(let ((e223 (ite e85 e90 e219)))
+(let ((e224 (= e32 e217)))
+(let ((e225 (not e39)))
+(let ((e226 (xor e212 e49)))
+(let ((e227 (and e222 e81)))
+(let ((e228 (or e33 e210)))
+(let ((e229 (xor e225 e226)))
+(let ((e230 (xor e74 e47)))
+(let ((e231 (= e220 e38)))
+(let ((e232 (xor e231 e229)))
+(let ((e233 (and e50 e221)))
+(let ((e234 (and e42 e224)))
+(let ((e235 (xor e223 e214)))
+(let ((e236 (= e234 e228)))
+(let ((e237 (and e227 e235)))
+(let ((e238 (not e51)))
+(let ((e239 (= e80 e232)))
+(let ((e240 (or e230 e86)))
+(let ((e241 (not e238)))
+(let ((e242 (xor e44 e237)))
+(let ((e243 (= e236 e242)))
+(let ((e244 (= e209 e240)))
+(let ((e245 (and e239 e83)))
+(let ((e246 (or e208 e245)))
+(let ((e247 (=> e215 e246)))
+(let ((e248 (ite e233 e247 e244)))
+(let ((e249 (and e248 e241)))
+(let ((e250 (=> e243 e249)))
+(let ((e251 (and e52 e250)))
+e251
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
+(check-sat)
+;(get-model)
diff --git a/test/regress/regress0/sets/fuzz31811.smt2 b/test/regress/regress0/sets/fuzz31811.smt2
new file mode 100644
index 0000000..5e7c032
--- /dev/null
+++ b/test/regress/regress0/sets/fuzz31811.smt2
@@ -0,0 +1,187 @@
+; symptom: assertion failure : conflict <=> equality engine inconsistent
+;
+; issue: the assertion is too strong. what is true is that there is an internal
+; conflict <=> equality engine inconsistent. but in case of propagating (dis)equalities
+; between shared terms, the some other theory might become inconsistent, and we should
+; stop.
+; 
+(set-info :source |fuzzsmt|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "random")
+(set-info :status sat)
+(set-logic QF_UFLIAFS)
+(define-sort Element () Int)
+(declare-fun f0 ( Int Int Int) Int)
+(declare-fun f1 ( (Set Element) (Set Element)) (Set Element))
+(declare-fun p0 ( Int Int Int) Bool)
+(declare-fun p1 ( (Set Element)) Bool)
+(declare-fun v0 () Int)
+(declare-fun v1 () (Set Element))
+(declare-fun v2 () (Set Element))
+(declare-fun v3 () (Set Element))
+(declare-fun v4 () (Set Element))
+(assert (let ((e5 2))
+(let ((e6 (+ v0 v0)))
+(let ((e7 (* e6 e5)))
+(let ((e8 (* e6 (- e5))))
+(let ((e9 (ite (p0 e7 v0 e6) 1 0)))
+(let ((e10 (f0 v0 e8 e8)))
+(let ((e11 (ite (p1 v1) (singleton 1) (singleton 0))))
+(let ((e12 (union v3 v3)))
+(let ((e13 (intersection v3 v1)))
+(let ((e14 (ite (p1 v3) (singleton 1) (singleton 0))))
+(let ((e15 (intersection v2 e14)))
+(let ((e16 (ite (p1 e11) (singleton 1) (singleton 0))))
+(let ((e17 (ite (p1 v4) (singleton 1) (singleton 0))))
+(let ((e18 (union e15 v2)))
+(let ((e19 (ite (p1 e16) (singleton 1) (singleton 0))))
+(let ((e20 (intersection e18 v3)))
+(let ((e21 (setminus v4 e12)))
+(let ((e22 (union v3 v2)))
+(let ((e23 (setminus e12 v4)))
+(let ((e24 (setminus v3 e16)))
+(let ((e25 (intersection e19 e20)))
+(let ((e26 (ite (p1 e15) (singleton 1) (singleton 0))))
+(let ((e27 (setminus e17 e15)))
+(let ((e28 (f1 e23 e12)))
+(let ((e29 (member e10 e16)))
+(let ((e30 (member e10 v1)))
+(let ((e31 (member e7 e19)))
+(let ((e32 (f1 e12 e12)))
+(let ((e33 (f1 e16 e25)))
+(let ((e34 (f1 v1 e27)))
+(let ((e35 (f1 e19 e19)))
+(let ((e36 (f1 e24 e32)))
+(let ((e37 (f1 e28 e35)))
+(let ((e38 (f1 e27 e20)))
+(let ((e39 (f1 e23 e23)))
+(let ((e40 (f1 e39 e27)))
+(let ((e41 (f1 e17 e32)))
+(let ((e42 (f1 e34 e33)))
+(let ((e43 (f1 e34 e17)))
+(let ((e44 (f1 e34 e25)))
+(let ((e45 (f1 e26 e26)))
+(let ((e46 (f1 e17 e21)))
+(let ((e47 (f1 e40 e26)))
+(let ((e48 (f1 e16 v2)))
+(let ((e49 (f1 e46 e33)))
+(let ((e50 (f1 e15 e15)))
+(let ((e51 (f1 e18 e18)))
+(let ((e52 (f1 e15 e18)))
+(let ((e53 (f1 e11 e49)))
+(let ((e54 (f1 e14 e42)))
+(let ((e55 (f1 e48 e18)))
+(let ((e56 (f1 e49 e52)))
+(let ((e57 (f1 v4 e12)))
+(let ((e58 (f1 e22 e45)))
+(let ((e59 (f1 e13 e13)))
+(let ((e60 (f1 v3 e36)))
+(let ((e61 (distinct e8 e7)))
+(let ((e62 (> v0 e8)))
+(let ((e63 (< e10 e10)))
+(let ((e64 (distinct v0 e10)))
+(let ((e65 (<= e7 e8)))
+(let ((e66 (distinct e9 v0)))
+(let ((e67 (<= e6 e8)))
+(let ((e68 (p0 e8 e7 e6)))
+(let ((e69 (ite e63 e35 e13)))
+(let ((e70 (ite e66 e25 e32)))
+(let ((e71 (ite e62 e33 e19)))
+(let ((e72 (ite e64 e46 v1)))
+(let ((e73 (ite e65 e59 e51)))
+(let ((e74 (ite e30 e14 e26)))
+(let ((e75 (ite e68 e36 e39)))
+(let ((e76 (ite e66 e35 e34)))
+(let ((e77 (ite e64 e44 e54)))
+(let ((e78 (ite e61 e70 e46)))
+(let ((e79 (ite e31 e60 e26)))
+(let ((e80 (ite e64 e55 e19)))
+(let ((e81 (ite e63 e58 e33)))
+(let ((e82 (ite e29 e32 e75)))
+(let ((e83 (ite e67 e27 e73)))
+(let ((e84 (ite e63 e51 e60)))
+(let ((e85 (ite e64 e16 e73)))
+(let ((e86 (ite e68 e47 e46)))
+(let ((e87 (ite e67 v2 e11)))
+(let ((e88 (ite e63 e59 e75)))
+(let ((e89 (ite e30 e12 e83)))
+(let ((e90 (ite e62 e45 e87)))
+(let ((e91 (ite e29 e36 e89)))
+(let ((e92 (ite e68 e24 e16)))
+(let ((e93 (ite e61 e49 e76)))
+(let ((e94 (ite e61 e12 e54)))
+(let ((e95 (ite e67 e33 e16)))
+(let ((e96 (ite e66 e26 e15)))
+(let ((e97 (ite e65 e52 e13)))
+(let ((e98 (ite e68 e38 e17)))
+(let ((e99 (ite e65 e48 e46)))
+(let ((e100 (ite e31 v3 e95)))
+(let ((e101 (ite e31 e95 e18)))
+(let ((e102 (ite e66 e37 e78)))
+(let ((e103 (ite e31 e33 e17)))
+(let ((e104 (ite e62 e55 e91)))
+(let ((e105 (ite e65 e20 e90)))
+(let ((e106 (ite e63 e22 e79)))
+(let ((e107 (ite e64 e94 e97)))
+(let ((e108 (ite e61 e53 e80)))
+(let ((e109 (ite e63 e23 e52)))
+(let ((e110 (ite e31 e100 e101)))
+(let ((e111 (ite e68 e28 e98)))
+(let ((e112 (ite e62 e50 e74)))
+(let ((e113 (ite e30 e49 e96)))
+(let ((e114 (ite e67 e14 e40)))
+(let ((e115 (ite e61 e92 e91)))
+(let ((e116 (ite e65 e18 e89)))
+(let ((e117 (ite e63 e34 e51)))
+(let ((e118 (ite e64 e56 e47)))
+(let ((e119 (ite e68 e102 e18)))
+(let ((e120 (ite e61 e43 e53)))
+(let ((e121 (ite e31 e41 e98)))
+(let ((e122 (ite e67 e114 e103)))
+(let ((e123 (ite e65 v4 e92)))
+(let ((e124 (ite e68 e33 e88)))
+(let ((e125 (ite e68 e37 e101)))
+(let ((e126 (ite e31 e36 e26)))
+(let ((e127 (ite e65 e21 e95)))
+(let ((e128 (ite e62 e42 v4)))
+(let ((e129 (ite e66 e100 e19)))
+(let ((e130 (ite e66 e78 e12)))
+(let ((e131 (ite e62 e34 e103)))
+(let ((e132 (ite e64 e59 e14)))
+(let ((e133 (ite e31 e53 e89)))
+(let ((e134 (ite e66 e57 e60)))
+(let ((e135 (ite e31 e7 e10)))
+(let ((e136 (ite e67 e10 e9)))
+(let ((e137 (ite e65 e136 v0)))
+(let ((e138 (ite e68 e6 e7)))
+(let ((e139 (ite e66 e9 e9)))
+(let ((e140 (ite e62 e8 e135)))
+(let ((e141 (ite e30 e137 e6)))
+(let ((e142 (ite e30 e140 e138)))
+(let ((e143 (ite e29 e140 e6)))
+(let ((e144 (ite e67 e141 v0)))
+(let ((e145 (ite e62 e6 e137)))
+(let ((e146 (ite e29 e137 e139)))
+(let ((e147 (ite e30 e140 e144)))
+(let ((e148 (ite e66 e142 e141)))
+(let ((e149 (ite e63 e8 e144)))
+(let ((e150 (ite e31 e135 e140)))
+(let ((e151 (ite e64 e147 e141)))
+(let ((e152 (ite e61 e147 e148)))
+(let ((e153 (or e30 e63)))
+(let ((e154 (or e67 e62)))
+(let ((e155 (ite e154 e29 e154)))
+(let ((e156 (and e66 e155)))
+(let ((e157 (=> e31 e64)))
+(let ((e158 (or e65 e153)))
+(let ((e159 (not e158)))
+(let ((e160 (xor e157 e68)))
+(let ((e161 (xor e159 e61)))
+(let ((e162 (= e156 e160)))
+(let ((e163 (or e161 e161)))
+(let ((e164 (not e162)))
+(let ((e165 (=> e164 e163)))
+e165
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
+(check-sat)
diff --git a/test/regress/regress0/sets/insert.smt2 b/test/regress/regress0/sets/insert.smt2
new file mode 100644
index 0000000..b4936a3
--- /dev/null
+++ b/test/regress/regress0/sets/insert.smt2
@@ -0,0 +1,7 @@
+(set-option :produce-models true)
+(set-logic QF_UFLIAFS)
+(set-info :status sat)
+(declare-fun X () (Set Int))
+(assert (= X (insert 1 2 (singleton 3))))
+(check-sat)
+;(get-model)
diff --git a/test/regress/regress0/sets/jan24/deepmeas0.hs.fqout.cvc4.47.smt2 b/test/regress/regress0/sets/jan24/deepmeas0.hs.fqout.cvc4.47.smt2
new file mode 100644
index 0000000..71bb8a3
--- /dev/null
+++ b/test/regress/regress0/sets/jan24/deepmeas0.hs.fqout.cvc4.47.smt2
@@ -0,0 +1,75 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+(define-sort Elt () Int)
+(define-sort mySet () (Set Elt ))
+(define-fun smt_set_emp () mySet (as emptyset mySet))
+(define-fun smt_set_mem ((x Elt) (s mySet)) Bool (member x s))
+(define-fun smt_set_add ((s mySet) (x Elt)) mySet (union s (singleton x)))
+(define-fun smt_set_cup ((s1 mySet) (s2 mySet)) mySet (union s1 s2))
+(define-fun smt_set_cap ((s1 mySet) (s2 mySet)) mySet (intersection s1 s2))
+
+(define-fun smt_set_dif ((s1 mySet) (s2 mySet)) mySet (setminus s1 s2))
+
+(define-fun smt_set_sub ((s1 mySet) (s2 mySet)) Bool (subset s1 s2))
+(declare-fun z3v58 () Int)
+(declare-fun z3v59 () Int)
+(assert (distinct z3v58 z3v59))
+
+(declare-fun z3f60 (Int) Bool)
+(declare-fun z3v61 () Int)
+(declare-fun z3f62 (Int) Int)
+(declare-fun z3v63 () Int)
+(declare-fun z3v64 () Int)
+(declare-fun z3v65 () Int)
+(declare-fun z3v66 () Int)
+(declare-fun z3f67 (Int) mySet)
+(declare-fun z3v69 () Int)
+(declare-fun z3f70 (Int) Int)
+(declare-fun z3v76 () Int)
+(declare-fun z3v77 () Int)
+(declare-fun z3v78 () Int)
+(declare-fun z3v79 () Int)
+(declare-fun z3v80 () Int)
+(declare-fun z3v81 () Int)
+(declare-fun z3v82 () Int)
+(declare-fun z3f83 (Int) Int)
+(declare-fun z3f84 (Int) Int)
+(declare-fun z3v85 () Int)
+(declare-fun z3f86 (Int) Int)
+(declare-fun z3f87 (Int Int) Int)
+(declare-fun z3v88 () Int)
+(declare-fun z3v89 () Int)
+(declare-fun z3f90 (Int) mySet)
+(declare-fun z3f91 (Int) Bool)
+(declare-fun z3f92 (Int Int) Int)
+(declare-fun z3v93 () Int)
+(declare-fun z3v94 () Int)
+(declare-fun z3v95 () Int)
+(declare-fun z3v96 () Int)
+(declare-fun z3v97 () Int)
+(declare-fun z3v99 () Int)
+
+(assert (= z3v99 z3v89))
+(assert (>= (z3f70 z3v99) 0))
+
+(assert (and (not (z3f60 z3v79))
+             (not (z3f60 z3v79))
+             (= z3v79 z3v80)
+             (= (z3f60 z3v79)
+                (= z3v76 z3v81))
+             (= (z3f60 z3v80)
+                (= z3v76 z3v81))
+             (= (z3f83 z3v82) z3v81)
+             (= (z3f91 z3v78) false)
+             (= z3v78 (z3f92 z3v88 z3v89))
+             (= z3v82 z3v88)
+             (= (z3f67 z3v78)
+                (smt_set_cup (smt_set_add smt_set_emp (z3f83 z3v88))
+                             (z3f67 z3v89)))
+             (= (z3f62 z3v64) z3v64)))
+
+(assert (smt_set_mem z3v76 (z3f67 z3v78)))
+(assert (<= z3v95 z3v93))
+(assert (>= z3v95 z3v93))
+(assert (not (smt_set_mem z3v76 (z3f67 z3v99))))
+(check-sat)
diff --git a/test/regress/regress0/sets/jan24/deepmeas0.hs.fqout.small.smt2 b/test/regress/regress0/sets/jan24/deepmeas0.hs.fqout.small.smt2
new file mode 100644
index 0000000..6523076
--- /dev/null
+++ b/test/regress/regress0/sets/jan24/deepmeas0.hs.fqout.small.smt2
@@ -0,0 +1,18 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-fun x () Int)
+(declare-fun y () Int)
+
+(declare-fun S () (Set Int))
+(declare-fun T () (Set Int))
+
+(assert (member x S))
+
+(assert (= S (union T (singleton y))))
+
+(assert (not (= x y)))
+
+(assert (not (member x T)))
+
+(check-sat)
diff --git a/test/regress/regress0/sets/jan24/insert_invariant_37_2.smt2 b/test/regress/regress0/sets/jan24/insert_invariant_37_2.smt2
new file mode 100644
index 0000000..2ef07f9
--- /dev/null
+++ b/test/regress/regress0/sets/jan24/insert_invariant_37_2.smt2
@@ -0,0 +1,812 @@
+(set-option :print-success false)
+(set-logic AUFLIAFS)
+(set-info :status unsat)
+(declare-sort Loc 0)
+(define-sort SetLoc () (Set Loc))
+(define-sort SetInt () (Set Int))
+(declare-sort FldLoc 0)
+(declare-sort FldInt 0)
+(declare-fun null$0 () Loc)
+(declare-fun read$0 (FldInt Loc) Int)
+(declare-fun read$1 (FldLoc Loc) Loc)
+(declare-fun Btwn$0 (FldLoc Loc Loc Loc) Bool)
+(declare-fun Alloc$0 () SetLoc)
+(declare-fun Axiom$0 () Bool)
+(declare-fun FP$0 () SetLoc)
+(declare-fun FP_Caller$0 () SetLoc)
+(declare-fun FP_Caller_1$0 () SetLoc)
+(declare-fun c1_2$0 () SetInt)
+(declare-fun c2_2$0 () SetInt)
+(declare-fun content$0 () SetInt)
+(declare-fun curr_2$0 () Loc)
+(declare-fun data$0 () FldInt)
+(declare-fun lst$0 () Loc)
+(declare-fun next$0 () FldLoc)
+(declare-fun prev_2$0 () Loc)
+(declare-fun sk_?X$0 () SetLoc)
+(declare-fun sk_?X_1$0 () SetLoc)
+(declare-fun sk_?X_2$0 () SetLoc)
+(declare-fun sk_?X_3$0 () SetLoc)
+(declare-fun sk_?X_4$0 () SetLoc)
+(declare-fun sk_?X_5$0 () SetLoc)
+(declare-fun sk_?e$0 () Int)
+(declare-fun sk_?e_1$0 () Loc)
+(declare-fun sk_?e_2$0 () Loc)
+(declare-fun sk_?e_3$0 () Int)
+(declare-fun sk_FP$0 () SetLoc)
+(declare-fun sk_FP_1$0 () SetLoc)
+(declare-fun sk_l1$0 () Loc)
+(declare-fun sk_l1_1$0 () Loc)
+(declare-fun sk_l2$0 () Loc)
+(declare-fun sk_l2_1$0 () Loc)
+(declare-fun sorted_set_c$0 (FldInt FldLoc Loc Loc) SetInt)
+(declare-fun sorted_set_domain$0 (FldInt FldLoc Loc Loc) SetLoc)
+(declare-fun sorted_set_struct$0 (SetLoc FldInt FldLoc Loc Loc SetInt) Bool)
+(declare-fun val$0 () Int)
+(declare-fun witness$0 (Int SetInt) Loc)
+
+(assert (! (forall ((?y Loc))
+           (or (not (Btwn$0 next$0 null$0 ?y ?y)) (= null$0 ?y)
+               (Btwn$0 next$0 null$0 (read$1 next$0 null$0) ?y)))
+   :named btwn_reach))
+
+(assert (! (forall ((?y Loc))
+           (or (not (= (read$1 next$0 null$0) null$0))
+               (not (Btwn$0 next$0 null$0 ?y ?y)) (= null$0 ?y)))
+   :named btwn_cycl))
+
+(assert (! (Btwn$0 next$0 null$0 (read$1 next$0 null$0) (read$1 next$0 null$0))
+   :named btwn_step))
+
+(assert (! (forall ((l1 Loc) (l2 Loc))
+           (or (not Axiom$0)
+               (or (= l1 l2) (< (read$0 data$0 l1) (read$0 data$0 l2))
+                   (not (Btwn$0 next$0 l1 l2 null$0)) (not (member l1 sk_?X$0))
+                   (not (member l2 sk_?X$0)))))
+   :named strict_sortedness))
+
+(assert (! (forall ((l1 Loc))
+           (or (= l1 null$0)
+               (member (read$0 data$0 l1)
+                 (sorted_set_c$0 data$0 next$0 lst$0 null$0))
+               (not (Btwn$0 next$0 lst$0 l1 null$0))))
+   :named sorted_set_1))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 (read$0 data$0 curr_2$0)
+                (sorted_set_c$0 data$0 next$0 lst$0 null$0))
+              null$0)
+            (member (read$0 data$0 curr_2$0)
+              (sorted_set_c$0 data$0 next$0 lst$0 null$0)))
+        (or
+            (and
+                 (= (read$0 data$0 curr_2$0)
+                   (read$0 data$0
+                     (witness$0 (read$0 data$0 curr_2$0)
+                       (sorted_set_c$0 data$0 next$0 lst$0 null$0))))
+                 (member
+                   (witness$0 (read$0 data$0 curr_2$0)
+                     (sorted_set_c$0 data$0 next$0 lst$0 null$0))
+                   (sorted_set_domain$0 data$0 next$0 lst$0 null$0)))
+            (not
+                 (member (read$0 data$0 curr_2$0)
+                   (sorted_set_c$0 data$0 next$0 lst$0 null$0)))))
+   :named sorted_set_2))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 (read$0 data$0 prev_2$0)
+                (sorted_set_c$0 data$0 next$0 lst$0 null$0))
+              null$0)
+            (member (read$0 data$0 prev_2$0)
+              (sorted_set_c$0 data$0 next$0 lst$0 null$0)))
+        (or
+            (and
+                 (= (read$0 data$0 prev_2$0)
+                   (read$0 data$0
+                     (witness$0 (read$0 data$0 prev_2$0)
+                       (sorted_set_c$0 data$0 next$0 lst$0 null$0))))
+                 (member
+                   (witness$0 (read$0 data$0 prev_2$0)
+                     (sorted_set_c$0 data$0 next$0 lst$0 null$0))
+                   (sorted_set_domain$0 data$0 next$0 lst$0 null$0)))
+            (not
+                 (member (read$0 data$0 prev_2$0)
+                   (sorted_set_c$0 data$0 next$0 lst$0 null$0)))))
+   :named sorted_set_2_1))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 (read$0 data$0 sk_l1$0)
+                (sorted_set_c$0 data$0 next$0 lst$0 null$0))
+              null$0)
+            (member (read$0 data$0 sk_l1$0)
+              (sorted_set_c$0 data$0 next$0 lst$0 null$0)))
+        (or
+            (and
+                 (= (read$0 data$0 sk_l1$0)
+                   (read$0 data$0
+                     (witness$0 (read$0 data$0 sk_l1$0)
+                       (sorted_set_c$0 data$0 next$0 lst$0 null$0))))
+                 (member
+                   (witness$0 (read$0 data$0 sk_l1$0)
+                     (sorted_set_c$0 data$0 next$0 lst$0 null$0))
+                   (sorted_set_domain$0 data$0 next$0 lst$0 null$0)))
+            (not
+                 (member (read$0 data$0 sk_l1$0)
+                   (sorted_set_c$0 data$0 next$0 lst$0 null$0)))))
+   :named sorted_set_2_2))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 (read$0 data$0 sk_l1_1$0)
+                (sorted_set_c$0 data$0 next$0 lst$0 null$0))
+              null$0)
+            (member (read$0 data$0 sk_l1_1$0)
+              (sorted_set_c$0 data$0 next$0 lst$0 null$0)))
+        (or
+            (and
+                 (= (read$0 data$0 sk_l1_1$0)
+                   (read$0 data$0
+                     (witness$0 (read$0 data$0 sk_l1_1$0)
+                       (sorted_set_c$0 data$0 next$0 lst$0 null$0))))
+                 (member
+                   (witness$0 (read$0 data$0 sk_l1_1$0)
+                     (sorted_set_c$0 data$0 next$0 lst$0 null$0))
+                   (sorted_set_domain$0 data$0 next$0 lst$0 null$0)))
+            (not
+                 (member (read$0 data$0 sk_l1_1$0)
+                   (sorted_set_c$0 data$0 next$0 lst$0 null$0)))))
+   :named sorted_set_2_3))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 (read$0 data$0 sk_l2$0)
+                (sorted_set_c$0 data$0 next$0 lst$0 null$0))
+              null$0)
+            (member (read$0 data$0 sk_l2$0)
+              (sorted_set_c$0 data$0 next$0 lst$0 null$0)))
+        (or
+            (and
+                 (= (read$0 data$0 sk_l2$0)
+                   (read$0 data$0
+                     (witness$0 (read$0 data$0 sk_l2$0)
+                       (sorted_set_c$0 data$0 next$0 lst$0 null$0))))
+                 (member
+                   (witness$0 (read$0 data$0 sk_l2$0)
+                     (sorted_set_c$0 data$0 next$0 lst$0 null$0))
+                   (sorted_set_domain$0 data$0 next$0 lst$0 null$0)))
+            (not
+                 (member (read$0 data$0 sk_l2$0)
+                   (sorted_set_c$0 data$0 next$0 lst$0 null$0)))))
+   :named sorted_set_2_4))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 (read$0 data$0 sk_l2_1$0)
+                (sorted_set_c$0 data$0 next$0 lst$0 null$0))
+              null$0)
+            (member (read$0 data$0 sk_l2_1$0)
+              (sorted_set_c$0 data$0 next$0 lst$0 null$0)))
+        (or
+            (and
+                 (= (read$0 data$0 sk_l2_1$0)
+                   (read$0 data$0
+                     (witness$0 (read$0 data$0 sk_l2_1$0)
+                       (sorted_set_c$0 data$0 next$0 lst$0 null$0))))
+                 (member
+                   (witness$0 (read$0 data$0 sk_l2_1$0)
+                     (sorted_set_c$0 data$0 next$0 lst$0 null$0))
+                   (sorted_set_domain$0 data$0 next$0 lst$0 null$0)))
+            (not
+                 (member (read$0 data$0 sk_l2_1$0)
+                   (sorted_set_c$0 data$0 next$0 lst$0 null$0)))))
+   :named sorted_set_2_5))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 sk_?e$0 (sorted_set_c$0 data$0 next$0 lst$0 null$0))
+              null$0)
+            (member sk_?e$0 (sorted_set_c$0 data$0 next$0 lst$0 null$0)))
+        (or
+            (and
+                 (= sk_?e$0
+                   (read$0 data$0
+                     (witness$0 sk_?e$0
+                       (sorted_set_c$0 data$0 next$0 lst$0 null$0))))
+                 (member
+                   (witness$0 sk_?e$0
+                     (sorted_set_c$0 data$0 next$0 lst$0 null$0))
+                   (sorted_set_domain$0 data$0 next$0 lst$0 null$0)))
+            (not (member sk_?e$0 (sorted_set_c$0 data$0 next$0 lst$0 null$0)))))
+   :named sorted_set_2_6))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 sk_?e_3$0
+                (sorted_set_c$0 data$0 next$0 lst$0 null$0))
+              null$0)
+            (member sk_?e_3$0 (sorted_set_c$0 data$0 next$0 lst$0 null$0)))
+        (or
+            (and
+                 (= sk_?e_3$0
+                   (read$0 data$0
+                     (witness$0 sk_?e_3$0
+                       (sorted_set_c$0 data$0 next$0 lst$0 null$0))))
+                 (member
+                   (witness$0 sk_?e_3$0
+                     (sorted_set_c$0 data$0 next$0 lst$0 null$0))
+                   (sorted_set_domain$0 data$0 next$0 lst$0 null$0)))
+            (not (member sk_?e_3$0 (sorted_set_c$0 data$0 next$0 lst$0 null$0)))))
+   :named sorted_set_2_7))
+
+(assert (! (forall ((l1 Loc))
+           (or (= l1 null$0)
+               (member (read$0 data$0 l1)
+                 (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))
+               (not (Btwn$0 next$0 curr_2$0 l1 null$0))))
+   :named sorted_set_1_1))
+
+(assert (! (forall ((l1 Loc))
+           (or (= l1 curr_2$0)
+               (member (read$0 data$0 l1)
+                 (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))
+               (not (Btwn$0 next$0 lst$0 l1 curr_2$0))))
+   :named sorted_set_1_2))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 (read$0 data$0 curr_2$0)
+                (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))
+              null$0)
+            (member (read$0 data$0 curr_2$0)
+              (sorted_set_c$0 data$0 next$0 curr_2$0 null$0)))
+        (or
+            (and
+                 (= (read$0 data$0 curr_2$0)
+                   (read$0 data$0
+                     (witness$0 (read$0 data$0 curr_2$0)
+                       (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))))
+                 (member
+                   (witness$0 (read$0 data$0 curr_2$0)
+                     (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))
+                   (sorted_set_domain$0 data$0 next$0 curr_2$0 null$0)))
+            (not
+                 (member (read$0 data$0 curr_2$0)
+                   (sorted_set_c$0 data$0 next$0 curr_2$0 null$0)))))
+   :named sorted_set_2_8))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 (read$0 data$0 prev_2$0)
+                (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))
+              null$0)
+            (member (read$0 data$0 prev_2$0)
+              (sorted_set_c$0 data$0 next$0 curr_2$0 null$0)))
+        (or
+            (and
+                 (= (read$0 data$0 prev_2$0)
+                   (read$0 data$0
+                     (witness$0 (read$0 data$0 prev_2$0)
+                       (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))))
+                 (member
+                   (witness$0 (read$0 data$0 prev_2$0)
+                     (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))
+                   (sorted_set_domain$0 data$0 next$0 curr_2$0 null$0)))
+            (not
+                 (member (read$0 data$0 prev_2$0)
+                   (sorted_set_c$0 data$0 next$0 curr_2$0 null$0)))))
+   :named sorted_set_2_9))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 (read$0 data$0 sk_l1$0)
+                (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))
+              null$0)
+            (member (read$0 data$0 sk_l1$0)
+              (sorted_set_c$0 data$0 next$0 curr_2$0 null$0)))
+        (or
+            (and
+                 (= (read$0 data$0 sk_l1$0)
+                   (read$0 data$0
+                     (witness$0 (read$0 data$0 sk_l1$0)
+                       (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))))
+                 (member
+                   (witness$0 (read$0 data$0 sk_l1$0)
+                     (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))
+                   (sorted_set_domain$0 data$0 next$0 curr_2$0 null$0)))
+            (not
+                 (member (read$0 data$0 sk_l1$0)
+                   (sorted_set_c$0 data$0 next$0 curr_2$0 null$0)))))
+   :named sorted_set_2_10))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 (read$0 data$0 sk_l1_1$0)
+                (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))
+              null$0)
+            (member (read$0 data$0 sk_l1_1$0)
+              (sorted_set_c$0 data$0 next$0 curr_2$0 null$0)))
+        (or
+            (and
+                 (= (read$0 data$0 sk_l1_1$0)
+                   (read$0 data$0
+                     (witness$0 (read$0 data$0 sk_l1_1$0)
+                       (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))))
+                 (member
+                   (witness$0 (read$0 data$0 sk_l1_1$0)
+                     (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))
+                   (sorted_set_domain$0 data$0 next$0 curr_2$0 null$0)))
+            (not
+                 (member (read$0 data$0 sk_l1_1$0)
+                   (sorted_set_c$0 data$0 next$0 curr_2$0 null$0)))))
+   :named sorted_set_2_11))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 (read$0 data$0 sk_l2$0)
+                (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))
+              null$0)
+            (member (read$0 data$0 sk_l2$0)
+              (sorted_set_c$0 data$0 next$0 curr_2$0 null$0)))
+        (or
+            (and
+                 (= (read$0 data$0 sk_l2$0)
+                   (read$0 data$0
+                     (witness$0 (read$0 data$0 sk_l2$0)
+                       (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))))
+                 (member
+                   (witness$0 (read$0 data$0 sk_l2$0)
+                     (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))
+                   (sorted_set_domain$0 data$0 next$0 curr_2$0 null$0)))
+            (not
+                 (member (read$0 data$0 sk_l2$0)
+                   (sorted_set_c$0 data$0 next$0 curr_2$0 null$0)))))
+   :named sorted_set_2_12))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 (read$0 data$0 sk_l2_1$0)
+                (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))
+              null$0)
+            (member (read$0 data$0 sk_l2_1$0)
+              (sorted_set_c$0 data$0 next$0 curr_2$0 null$0)))
+        (or
+            (and
+                 (= (read$0 data$0 sk_l2_1$0)
+                   (read$0 data$0
+                     (witness$0 (read$0 data$0 sk_l2_1$0)
+                       (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))))
+                 (member
+                   (witness$0 (read$0 data$0 sk_l2_1$0)
+                     (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))
+                   (sorted_set_domain$0 data$0 next$0 curr_2$0 null$0)))
+            (not
+                 (member (read$0 data$0 sk_l2_1$0)
+                   (sorted_set_c$0 data$0 next$0 curr_2$0 null$0)))))
+   :named sorted_set_2_13))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 sk_?e$0
+                (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))
+              null$0)
+            (member sk_?e$0 (sorted_set_c$0 data$0 next$0 curr_2$0 null$0)))
+        (or
+            (and
+                 (= sk_?e$0
+                   (read$0 data$0
+                     (witness$0 sk_?e$0
+                       (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))))
+                 (member
+                   (witness$0 sk_?e$0
+                     (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))
+                   (sorted_set_domain$0 data$0 next$0 curr_2$0 null$0)))
+            (not (member sk_?e$0 (sorted_set_c$0 data$0 next$0 curr_2$0 null$0)))))
+   :named sorted_set_2_14))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 sk_?e_3$0
+                (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))
+              null$0)
+            (member sk_?e_3$0 (sorted_set_c$0 data$0 next$0 curr_2$0 null$0)))
+        (or
+            (and
+                 (= sk_?e_3$0
+                   (read$0 data$0
+                     (witness$0 sk_?e_3$0
+                       (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))))
+                 (member
+                   (witness$0 sk_?e_3$0
+                     (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))
+                   (sorted_set_domain$0 data$0 next$0 curr_2$0 null$0)))
+            (not
+                 (member sk_?e_3$0
+                   (sorted_set_c$0 data$0 next$0 curr_2$0 null$0)))))
+   :named sorted_set_2_15))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 (read$0 data$0 curr_2$0)
+                (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))
+              null$0)
+            (member (read$0 data$0 curr_2$0)
+              (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0)))
+        (or
+            (and
+                 (= (read$0 data$0 curr_2$0)
+                   (read$0 data$0
+                     (witness$0 (read$0 data$0 curr_2$0)
+                       (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))))
+                 (member
+                   (witness$0 (read$0 data$0 curr_2$0)
+                     (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))
+                   (sorted_set_domain$0 data$0 next$0 lst$0 curr_2$0)))
+            (not
+                 (member (read$0 data$0 curr_2$0)
+                   (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0)))))
+   :named sorted_set_2_16))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 (read$0 data$0 prev_2$0)
+                (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))
+              null$0)
+            (member (read$0 data$0 prev_2$0)
+              (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0)))
+        (or
+            (and
+                 (= (read$0 data$0 prev_2$0)
+                   (read$0 data$0
+                     (witness$0 (read$0 data$0 prev_2$0)
+                       (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))))
+                 (member
+                   (witness$0 (read$0 data$0 prev_2$0)
+                     (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))
+                   (sorted_set_domain$0 data$0 next$0 lst$0 curr_2$0)))
+            (not
+                 (member (read$0 data$0 prev_2$0)
+                   (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0)))))
+   :named sorted_set_2_17))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 (read$0 data$0 sk_l1$0)
+                (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))
+              null$0)
+            (member (read$0 data$0 sk_l1$0)
+              (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0)))
+        (or
+            (and
+                 (= (read$0 data$0 sk_l1$0)
+                   (read$0 data$0
+                     (witness$0 (read$0 data$0 sk_l1$0)
+                       (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))))
+                 (member
+                   (witness$0 (read$0 data$0 sk_l1$0)
+                     (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))
+                   (sorted_set_domain$0 data$0 next$0 lst$0 curr_2$0)))
+            (not
+                 (member (read$0 data$0 sk_l1$0)
+                   (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0)))))
+   :named sorted_set_2_18))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 (read$0 data$0 sk_l1_1$0)
+                (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))
+              null$0)
+            (member (read$0 data$0 sk_l1_1$0)
+              (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0)))
+        (or
+            (and
+                 (= (read$0 data$0 sk_l1_1$0)
+                   (read$0 data$0
+                     (witness$0 (read$0 data$0 sk_l1_1$0)
+                       (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))))
+                 (member
+                   (witness$0 (read$0 data$0 sk_l1_1$0)
+                     (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))
+                   (sorted_set_domain$0 data$0 next$0 lst$0 curr_2$0)))
+            (not
+                 (member (read$0 data$0 sk_l1_1$0)
+                   (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0)))))
+   :named sorted_set_2_19))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 (read$0 data$0 sk_l2$0)
+                (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))
+              null$0)
+            (member (read$0 data$0 sk_l2$0)
+              (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0)))
+        (or
+            (and
+                 (= (read$0 data$0 sk_l2$0)
+                   (read$0 data$0
+                     (witness$0 (read$0 data$0 sk_l2$0)
+                       (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))))
+                 (member
+                   (witness$0 (read$0 data$0 sk_l2$0)
+                     (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))
+                   (sorted_set_domain$0 data$0 next$0 lst$0 curr_2$0)))
+            (not
+                 (member (read$0 data$0 sk_l2$0)
+                   (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0)))))
+   :named sorted_set_2_20))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 (read$0 data$0 sk_l2_1$0)
+                (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))
+              null$0)
+            (member (read$0 data$0 sk_l2_1$0)
+              (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0)))
+        (or
+            (and
+                 (= (read$0 data$0 sk_l2_1$0)
+                   (read$0 data$0
+                     (witness$0 (read$0 data$0 sk_l2_1$0)
+                       (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))))
+                 (member
+                   (witness$0 (read$0 data$0 sk_l2_1$0)
+                     (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))
+                   (sorted_set_domain$0 data$0 next$0 lst$0 curr_2$0)))
+            (not
+                 (member (read$0 data$0 sk_l2_1$0)
+                   (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0)))))
+   :named sorted_set_2_21))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 sk_?e$0
+                (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))
+              null$0)
+            (member sk_?e$0 (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0)))
+        (or
+            (and
+                 (= sk_?e$0
+                   (read$0 data$0
+                     (witness$0 sk_?e$0
+                       (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))))
+                 (member
+                   (witness$0 sk_?e$0
+                     (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))
+                   (sorted_set_domain$0 data$0 next$0 lst$0 curr_2$0)))
+            (not (member sk_?e$0 (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0)))))
+   :named sorted_set_2_22))
+
+(assert (! (and
+        (or
+            (=
+              (witness$0 sk_?e_3$0
+                (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))
+              null$0)
+            (member sk_?e_3$0 (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0)))
+        (or
+            (and
+                 (= sk_?e_3$0
+                   (read$0 data$0
+                     (witness$0 sk_?e_3$0
+                       (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))))
+                 (member
+                   (witness$0 sk_?e_3$0
+                     (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))
+                   (sorted_set_domain$0 data$0 next$0 lst$0 curr_2$0)))
+            (not
+                 (member sk_?e_3$0 (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0)))))
+   :named sorted_set_2_23))
+
+(assert (! (= (read$1 next$0 null$0) null$0) :named read_null))
+
+(assert (! (forall ((l1 Loc))
+           (or
+               (and (Btwn$0 next$0 lst$0 l1 null$0)
+                    (member l1 (sorted_set_domain$0 data$0 next$0 lst$0 null$0))
+                    (not (= l1 null$0)))
+               (and (or (= l1 null$0) (not (Btwn$0 next$0 lst$0 l1 null$0)))
+                    (not
+                         (member l1
+                           (sorted_set_domain$0 data$0 next$0 lst$0 null$0))))))
+   :named sorted_set_footprint))
+
+(assert (! (or (member sk_?e_3$0 c2_2$0)
+       (and (member sk_?e_2$0 sk_FP_1$0) (not (member sk_?e_2$0 FP$0)))
+       (and (member sk_?e_3$0 (union c1_2$0 c2_2$0))
+            (not (member sk_?e_3$0 content$0)))
+       (and (member sk_?e_3$0 c1_2$0)
+            (not
+                 (member sk_?e_3$0
+                   (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))))
+       (and (member sk_?e_3$0 content$0)
+            (not (member sk_?e_3$0 (union c1_2$0 c2_2$0))))
+       (and (member sk_?e_3$0 (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))
+            (not (member sk_?e_3$0 c1_2$0)))
+       (and (not (= curr_2$0 null$0)) (not (= prev_2$0 null$0))
+            (not (< (read$0 data$0 prev_2$0) (read$0 data$0 curr_2$0))))
+       (not (= curr_2$0 lst$0)) (not (= prev_2$0 null$0))
+       (not
+            (sorted_set_struct$0 sk_?X_3$0 data$0 next$0 curr_2$0 null$0
+              c1_2$0)))
+   :named invariant_37_2))
+
+(assert (! (= sk_FP_1$0 sk_?X_2$0) :named invariant_37_2_1))
+
+(assert (! (= sk_?X_5$0 (sorted_set_domain$0 data$0 next$0 lst$0 curr_2$0))
+   :named invariant_37_2_2))
+
+(assert (! (= sk_?X_3$0 (sorted_set_domain$0 data$0 next$0 curr_2$0 null$0))
+   :named invariant_37_2_3))
+
+(assert (! (= sk_?X_1$0 (union sk_?X_3$0 sk_?X_4$0)) :named invariant_37_2_4))
+
+(assert (! (= FP_Caller$0 (union FP$0 FP_Caller$0))
+   :named precondition_of_insert_27_11))
+
+(assert (! (= sk_?X$0 FP$0) :named precondition_of_insert_27_11_1))
+
+(assert (! (= Alloc$0 (union FP_Caller$0 Alloc$0))
+   :named initial_footprint_of_insert_27_11))
+
+(assert (! (= curr_2$0 lst$0) :named assign_31_2))
+
+(assert (! (= c1_2$0 content$0) :named assign_34_2))
+
+(assert (! (or (and (Btwn$0 next$0 lst$0 null$0 null$0) Axiom$0)
+       (not
+            (sorted_set_struct$0 sk_?X$0 data$0 next$0 lst$0 null$0
+              content$0)))
+   :named unnamed))
+
+(assert (! (or (sorted_set_struct$0 sk_?X_3$0 data$0 next$0 curr_2$0 null$0 c1_2$0)
+       (not (Btwn$0 next$0 curr_2$0 null$0 null$0))
+       (! (and (Btwn$0 next$0 sk_l1$0 sk_l2$0 null$0) (member sk_l1$0 sk_?X_3$0)
+               (member sk_l2$0 sk_?X_3$0) (not (= sk_l1$0 sk_l2$0))
+               (not (< (read$0 data$0 sk_l1$0) (read$0 data$0 sk_l2$0))))
+          :named strict_sortedness_1))
+   :named unnamed_1))
+
+(assert (! (forall ((l1 Loc))
+           (or
+               (and (Btwn$0 next$0 lst$0 l1 curr_2$0)
+                    (member l1
+                      (sorted_set_domain$0 data$0 next$0 lst$0 curr_2$0))
+                    (not (= l1 curr_2$0)))
+               (and
+                    (or (= l1 curr_2$0)
+                        (not (Btwn$0 next$0 lst$0 l1 curr_2$0)))
+                    (not
+                         (member l1
+                           (sorted_set_domain$0 data$0 next$0 lst$0 curr_2$0))))))
+   :named sorted_set_footprint_1))
+
+(assert (! (forall ((l1 Loc))
+           (or
+               (and (Btwn$0 next$0 curr_2$0 l1 null$0)
+                    (member l1
+                      (sorted_set_domain$0 data$0 next$0 curr_2$0 null$0))
+                    (not (= l1 null$0)))
+               (and
+                    (or (= l1 null$0)
+                        (not (Btwn$0 next$0 curr_2$0 l1 null$0)))
+                    (not
+                         (member l1
+                           (sorted_set_domain$0 data$0 next$0 curr_2$0
+                             null$0))))))
+   :named sorted_set_footprint_2))
+
+(assert (! (not (member null$0 Alloc$0)) :named initial_footprint_of_insert_27_11_1))
+
+(assert (! (or (= prev_2$0 curr_2$0)
+       (member sk_?e_1$0 (intersection sk_?X_4$0 sk_?X_3$0))
+       (and (member sk_?e_1$0 sk_FP$0) (not (member sk_?e_1$0 FP$0)))
+       (and (member sk_?e$0 (union c1_2$0 c2_2$0)) (not (member sk_?e$0 content$0)))
+       (and (member sk_?e$0 c1_2$0)
+            (not (member sk_?e$0 (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))))
+       (and (member sk_?e$0 c2_2$0)
+            (not (member sk_?e$0 (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))))
+       (and (member sk_?e$0 content$0) (not (member sk_?e$0 (union c1_2$0 c2_2$0))))
+       (and (member sk_?e$0 (sorted_set_c$0 data$0 next$0 curr_2$0 null$0))
+            (not (member sk_?e$0 c1_2$0)))
+       (and (member sk_?e$0 (sorted_set_c$0 data$0 next$0 lst$0 curr_2$0))
+            (not (member sk_?e$0 c2_2$0)))
+       (and (not (= curr_2$0 null$0)) (not (= prev_2$0 null$0))
+            (not (< (read$0 data$0 prev_2$0) (read$0 data$0 curr_2$0))))
+       (not (= (read$1 next$0 prev_2$0) curr_2$0))
+       (not (> val$0 (read$0 data$0 prev_2$0)))
+       (not (Btwn$0 next$0 lst$0 prev_2$0 curr_2$0))
+       (not
+            (sorted_set_struct$0 sk_?X_3$0 data$0 next$0 curr_2$0 null$0
+              c1_2$0))
+       (not
+            (sorted_set_struct$0 sk_?X_5$0 data$0 next$0 lst$0 curr_2$0
+              c2_2$0)))
+   :named invariant_37_2_5))
+
+(assert (! (= sk_FP$0 sk_?X_1$0) :named invariant_37_2_6))
+
+(assert (! (= sk_?X_4$0 sk_?X_5$0) :named invariant_37_2_7))
+
+(assert (! (= sk_?X_2$0 sk_?X_3$0) :named invariant_37_2_8))
+
+(assert (! (sorted_set_struct$0 sk_?X$0 data$0 next$0 lst$0 null$0 content$0)
+   :named precondition_of_insert_27_11_2))
+
+(assert (! (= sk_?X$0 (sorted_set_domain$0 data$0 next$0 lst$0 null$0))
+   :named precondition_of_insert_27_11_3))
+
+(assert (! (= content$0 (sorted_set_c$0 data$0 next$0 lst$0 null$0))
+   :named precondition_of_insert_27_11_4))
+
+(assert (! (= prev_2$0 null$0) :named assign_32_2))
+
+(assert (! (= c2_2$0 (as emptyset SetInt)) :named assign_35_2))
+
+(assert (! (= FP_Caller_1$0 (setminus FP_Caller$0 FP$0)) :named assign_29_0))
+
+(assert (! (or (sorted_set_struct$0 sk_?X_5$0 data$0 next$0 lst$0 curr_2$0 c2_2$0)
+       (not (Btwn$0 next$0 lst$0 curr_2$0 curr_2$0))
+       (! (and (Btwn$0 next$0 sk_l1_1$0 sk_l2_1$0 curr_2$0)
+               (member sk_l1_1$0 sk_?X_5$0) (member sk_l2_1$0 sk_?X_5$0)
+               (not (= sk_l1_1$0 sk_l2_1$0))
+               (not (< (read$0 data$0 sk_l1_1$0) (read$0 data$0 sk_l2_1$0))))
+          :named strict_sortedness_2))
+   :named unnamed_2))
+
+(assert (! (forall ((?x Loc)) (Btwn$0 next$0 ?x ?x ?x)) :named btwn_refl))
+
+(assert (! (forall ((?x Loc) (?y Loc)) (or (not (Btwn$0 next$0 ?x ?y ?x)) (= ?x ?y)))
+   :named btwn_sndw))
+
+(assert (! (forall ((?x Loc) (?y Loc) (?z Loc))
+           (or (not (Btwn$0 next$0 ?x ?y ?y)) (not (Btwn$0 next$0 ?x ?z ?z))
+               (Btwn$0 next$0 ?x ?y ?z) (Btwn$0 next$0 ?x ?z ?y)))
+   :named btwn_ord1))
+
+(assert (! (forall ((?x Loc) (?y Loc) (?z Loc))
+           (or (not (Btwn$0 next$0 ?x ?y ?z))
+               (and (Btwn$0 next$0 ?x ?y ?y) (Btwn$0 next$0 ?y ?z ?z))))
+   :named btwn_ord2))
+
+(assert (! (forall ((?x Loc) (?y Loc) (?z Loc))
+           (or (not (Btwn$0 next$0 ?x ?y ?y)) (not (Btwn$0 next$0 ?y ?z ?z))
+               (Btwn$0 next$0 ?x ?z ?z)))
+   :named btwn_trn1))
+
+(assert (! (forall ((?u Loc) (?x Loc) (?y Loc) (?z Loc))
+           (or (not (Btwn$0 next$0 ?x ?y ?z)) (not (Btwn$0 next$0 ?y ?u ?z))
+               (and (Btwn$0 next$0 ?x ?y ?u) (Btwn$0 next$0 ?x ?u ?z))))
+   :named btwn_trn2))
+
+(assert (! (forall ((?u Loc) (?x Loc) (?y Loc) (?z Loc))
+           (or (not (Btwn$0 next$0 ?x ?y ?z)) (not (Btwn$0 next$0 ?x ?u ?y))
+               (and (Btwn$0 next$0 ?x ?u ?z) (Btwn$0 next$0 ?u ?y ?z))))
+   :named btwn_trn3))
+
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/sets/jan24/remove_check_free_31_6.smt2 b/test/regress/regress0/sets/jan24/remove_check_free_31_6.smt2
new file mode 100644
index 0000000..2bf2d4c
--- /dev/null
+++ b/test/regress/regress0/sets/jan24/remove_check_free_31_6.smt2
@@ -0,0 +1,470 @@
+(set-option :print-success false)
+(set-logic AUFLIAFS)
+(set-info :status unsat)
+(declare-sort Loc 0)
+(define-sort SetLoc () (Set Loc))
+(define-sort SetInt () (Set Int))
+(declare-sort FldLoc 0)
+(declare-sort FldInt 0)
+(declare-fun null$0 () Loc)
+(declare-fun read$0 (FldLoc Loc) Loc)
+(declare-fun write$0 (FldLoc Loc Loc) FldLoc)
+(declare-fun ep$0 (FldLoc SetLoc Loc) Loc)
+(declare-fun Btwn$0 (FldLoc Loc Loc Loc) Bool)
+(declare-fun Frame$0 (SetLoc SetLoc FldLoc FldLoc) Bool)
+(declare-fun Alloc$0 () SetLoc)
+(declare-fun FP$0 () SetLoc)
+(declare-fun FP_1$0 () SetLoc)
+(declare-fun FP_2$0 () SetLoc)
+(declare-fun FP_Caller$0 () SetLoc)
+(declare-fun FP_Caller_1$0 () SetLoc)
+(declare-fun curr_2$0 () Loc)
+(declare-fun curr_3$0 () Loc)
+(declare-fun lseg_domain$0 (FldLoc Loc Loc) SetLoc)
+(declare-fun lseg_struct$0 (SetLoc FldLoc Loc Loc) Bool)
+(declare-fun lst$0 () Loc)
+(declare-fun lst_1$0 () Loc)
+(declare-fun next$0 () FldLoc)
+(declare-fun next_1$0 () FldLoc)
+(declare-fun nondet_2$0 () Bool)
+(declare-fun sk_?X_27$0 () SetLoc)
+(declare-fun sk_?X_28$0 () SetLoc)
+(declare-fun sk_?X_29$0 () SetLoc)
+(declare-fun sk_?X_30$0 () SetLoc)
+(declare-fun sk_?X_31$0 () SetLoc)
+(declare-fun sk_?X_32$0 () SetLoc)
+(declare-fun sk_?X_33$0 () SetLoc)
+(declare-fun tmp_2$0 () Loc)
+
+(assert (! (forall ((?y Loc))
+           (or (not (Btwn$0 next$0 null$0 ?y ?y)) (= null$0 ?y)
+               (Btwn$0 next$0 null$0 (read$0 next$0 null$0) ?y)))
+   :named btwn_reach_8))
+
+(assert (! (forall ((?y Loc))
+           (or (not (Btwn$0 next$0 tmp_2$0 ?y ?y)) (= tmp_2$0 ?y)
+               (Btwn$0 next$0 tmp_2$0 (read$0 next$0 tmp_2$0) ?y)))
+   :named btwn_reach_9))
+
+(assert (! (forall ((?y Loc))
+           (or (not (Btwn$0 next$0 curr_3$0 ?y ?y)) (= curr_3$0 ?y)
+               (Btwn$0 next$0 curr_3$0 (read$0 next$0 curr_3$0) ?y)))
+   :named btwn_reach_10))
+
+(assert (! (forall ((?y Loc))
+           (or (not (= (read$0 next$0 null$0) null$0))
+               (not (Btwn$0 next$0 null$0 ?y ?y)) (= null$0 ?y)))
+   :named btwn_cycl_8))
+
+(assert (! (forall ((?y Loc))
+           (or (not (= (read$0 next$0 tmp_2$0) tmp_2$0))
+               (not (Btwn$0 next$0 tmp_2$0 ?y ?y)) (= tmp_2$0 ?y)))
+   :named btwn_cycl_9))
+
+(assert (! (forall ((?y Loc))
+           (or (not (= (read$0 next$0 curr_3$0) curr_3$0))
+               (not (Btwn$0 next$0 curr_3$0 ?y ?y)) (= curr_3$0 ?y)))
+   :named btwn_cycl_10))
+
+(assert (! (Btwn$0 next$0 null$0 (read$0 next$0 null$0) (read$0 next$0 null$0))
+   :named btwn_step_8))
+
+(assert (! (Btwn$0 next$0 tmp_2$0 (read$0 next$0 tmp_2$0) (read$0 next$0 tmp_2$0))
+   :named btwn_step_9))
+
+(assert (! (Btwn$0 next$0 curr_3$0 (read$0 next$0 curr_3$0) (read$0 next$0 curr_3$0))
+   :named btwn_step_10))
+
+(assert (! (forall ((?f FldLoc))
+           (or (member (ep$0 ?f sk_?X_30$0 null$0) sk_?X_30$0)
+               (= null$0 (ep$0 ?f sk_?X_30$0 null$0))))
+   :named entry-point3_10))
+
+(assert (! (forall ((?f FldLoc))
+           (or (member (ep$0 ?f sk_?X_30$0 lst_1$0) sk_?X_30$0)
+               (= lst_1$0 (ep$0 ?f sk_?X_30$0 lst_1$0))))
+   :named entry-point3_11))
+
+(assert (! (forall ((?f FldLoc))
+           (or (member (ep$0 ?f sk_?X_30$0 curr_3$0) sk_?X_30$0)
+               (= curr_3$0 (ep$0 ?f sk_?X_30$0 curr_3$0))))
+   :named entry-point3_12))
+
+(assert (! (forall ((?f FldLoc))
+           (or (member (ep$0 ?f sk_?X_30$0 tmp_2$0) sk_?X_30$0)
+               (= tmp_2$0 (ep$0 ?f sk_?X_30$0 tmp_2$0))))
+   :named entry-point3_13))
+
+(assert (! (forall ((?f FldLoc))
+           (Btwn$0 ?f null$0 (ep$0 ?f sk_?X_30$0 null$0)
+             (ep$0 ?f sk_?X_30$0 null$0)))
+   :named entry-point1_10))
+
+(assert (! (forall ((?f FldLoc))
+           (Btwn$0 ?f lst_1$0 (ep$0 ?f sk_?X_30$0 lst_1$0)
+             (ep$0 ?f sk_?X_30$0 lst_1$0)))
+   :named entry-point1_11))
+
+(assert (! (forall ((?f FldLoc))
+           (Btwn$0 ?f curr_3$0 (ep$0 ?f sk_?X_30$0 curr_3$0)
+             (ep$0 ?f sk_?X_30$0 curr_3$0)))
+   :named entry-point1_12))
+
+(assert (! (forall ((?f FldLoc))
+           (Btwn$0 ?f tmp_2$0 (ep$0 ?f sk_?X_30$0 tmp_2$0)
+             (ep$0 ?f sk_?X_30$0 tmp_2$0)))
+   :named entry-point1_13))
+
+(assert (! (forall ((?f FldLoc) (?y Loc))
+           (or (Btwn$0 ?f null$0 (ep$0 ?f sk_?X_30$0 null$0) ?y)
+               (not (Btwn$0 ?f null$0 ?y ?y)) (not (member ?y sk_?X_30$0))))
+   :named entry-point4_10))
+
+(assert (! (forall ((?f FldLoc) (?y Loc))
+           (or (Btwn$0 ?f lst_1$0 (ep$0 ?f sk_?X_30$0 lst_1$0) ?y)
+               (not (Btwn$0 ?f lst_1$0 ?y ?y)) (not (member ?y sk_?X_30$0))))
+   :named entry-point4_11))
+
+(assert (! (forall ((?f FldLoc) (?y Loc))
+           (or (Btwn$0 ?f curr_3$0 (ep$0 ?f sk_?X_30$0 curr_3$0) ?y)
+               (not (Btwn$0 ?f curr_3$0 ?y ?y)) (not (member ?y sk_?X_30$0))))
+   :named entry-point4_12))
+
+(assert (! (forall ((?f FldLoc) (?y Loc))
+           (or (Btwn$0 ?f tmp_2$0 (ep$0 ?f sk_?X_30$0 tmp_2$0) ?y)
+               (not (Btwn$0 ?f tmp_2$0 ?y ?y)) (not (member ?y sk_?X_30$0))))
+   :named entry-point4_13))
+
+(assert (! (forall ((?f FldLoc) (?y Loc))
+           (or (not (Btwn$0 ?f null$0 ?y ?y)) (not (member ?y sk_?X_30$0))
+               (member (ep$0 ?f sk_?X_30$0 null$0) sk_?X_30$0)))
+   :named entry-point2_10))
+
+(assert (! (forall ((?f FldLoc) (?y Loc))
+           (or (not (Btwn$0 ?f lst_1$0 ?y ?y)) (not (member ?y sk_?X_30$0))
+               (member (ep$0 ?f sk_?X_30$0 lst_1$0) sk_?X_30$0)))
+   :named entry-point2_11))
+
+(assert (! (forall ((?f FldLoc) (?y Loc))
+           (or (not (Btwn$0 ?f curr_3$0 ?y ?y)) (not (member ?y sk_?X_30$0))
+               (member (ep$0 ?f sk_?X_30$0 curr_3$0) sk_?X_30$0)))
+   :named entry-point2_12))
+
+(assert (! (forall ((?f FldLoc) (?y Loc))
+           (or (not (Btwn$0 ?f tmp_2$0 ?y ?y)) (not (member ?y sk_?X_30$0))
+               (member (ep$0 ?f sk_?X_30$0 tmp_2$0) sk_?X_30$0)))
+   :named entry-point2_13))
+
+(assert (! (= (read$0 (write$0 next$0 curr_3$0 (read$0 next$0 tmp_2$0)) curr_3$0)
+     (read$0 next$0 tmp_2$0))
+   :named read_write2))
+
+(assert (! (or (= null$0 curr_3$0)
+       (= (read$0 next$0 null$0)
+         (read$0 (write$0 next$0 curr_3$0 (read$0 next$0 tmp_2$0)) null$0)))
+   :named read_write1))
+
+(assert (! (or (= tmp_2$0 curr_3$0)
+       (= (read$0 next$0 tmp_2$0)
+         (read$0 (write$0 next$0 curr_3$0 (read$0 next$0 tmp_2$0)) tmp_2$0)))
+   :named read_write1_1))
+
+(assert (! (or (= curr_3$0 curr_3$0)
+       (= (read$0 next$0 curr_3$0)
+         (read$0 (write$0 next$0 curr_3$0 (read$0 next$0 tmp_2$0)) curr_3$0)))
+   :named read_write1_2))
+
+(assert (! (= (read$0 next$0 null$0) null$0) :named read_null_5))
+
+(assert (! (= (read$0 next_1$0 null$0) null$0) :named read_null_6))
+
+(assert (! (forall ((l1 Loc))
+           (or
+               (and (Btwn$0 next$0 lst$0 l1 curr_2$0)
+                    (member l1 (lseg_domain$0 next$0 lst$0 curr_2$0))
+                    (not (= l1 curr_2$0)))
+               (and
+                    (or (= l1 curr_2$0)
+                        (not (Btwn$0 next$0 lst$0 l1 curr_2$0)))
+                    (not (member l1 (lseg_domain$0 next$0 lst$0 curr_2$0))))))
+   :named lseg_footprint_20))
+
+(assert (! (forall ((l1 Loc))
+           (or
+               (and (Btwn$0 next$0 curr_3$0 l1 null$0)
+                    (member l1 (lseg_domain$0 next$0 curr_3$0 null$0))
+                    (not (= l1 null$0)))
+               (and
+                    (or (= l1 null$0)
+                        (not (Btwn$0 next$0 curr_3$0 l1 null$0)))
+                    (not (member l1 (lseg_domain$0 next$0 curr_3$0 null$0))))))
+   :named lseg_footprint_21))
+
+(assert (! (not (member tmp_2$0 FP_2$0)) :named check_free_31_6))
+
+(assert (! (not (member null$0 Alloc$0)) :named framecondition_of_remove_loop_18_4_15))
+
+(assert (! (not (= lst$0 null$0)) :named if_else_13_6_4))
+
+(assert (! (= FP_Caller$0 (union FP$0 FP_Caller$0))
+   :named precondition_of_remove_10_11_20))
+
+(assert (! (= sk_?X_33$0 FP$0) :named precondition_of_remove_10_11_21))
+
+(assert (! (lseg_struct$0 sk_?X_32$0 next$0 lst$0 curr_2$0) :named invariant_18_4_62))
+
+(assert (! (= FP$0 (union FP_1$0 FP$0)) :named invariant_18_4_63))
+
+(assert (! (= sk_?X_31$0 (lseg_domain$0 next$0 curr_2$0 null$0))
+   :named invariant_18_4_64))
+
+(assert (! (= sk_?X_30$0 (union sk_?X_31$0 sk_?X_32$0)) :named invariant_18_4_65))
+
+(assert (! (= (as emptyset SetLoc) (as emptyset SetLoc)) :named invariant_18_4_66))
+
+(assert (! (lseg_struct$0 sk_?X_28$0 next$0 curr_3$0 null$0)
+   :named invariant_18_4_67))
+
+(assert (! (= sk_?X_29$0 (union sk_?X_28$0 sk_?X_27$0)) :named invariant_18_4_68))
+
+(assert (! (= sk_?X_28$0 (lseg_domain$0 next$0 curr_3$0 null$0))
+   :named invariant_18_4_69))
+
+(assert (! (= (as emptyset SetLoc) (intersection sk_?X_27$0 sk_?X_28$0))
+   :named invariant_18_4_70))
+
+(assert (! (= Alloc$0 (union FP_Caller$0 Alloc$0))
+   :named initial_footprint_of_remove_10_11_10))
+
+(assert (! (Frame$0 FP_1$0 Alloc$0 next$0 next$0)
+   :named framecondition_of_remove_loop_18_4_16))
+
+(assert (! (= next_1$0 (write$0 next$0 curr_3$0 (read$0 next$0 tmp_2$0)))
+   :named assign_30_6))
+
+(assert (! (= curr_2$0 lst$0) :named assign_17_4_4))
+
+(assert (! (= FP_2$0
+     (union (setminus FP$0 FP_1$0)
+       (union (intersection Alloc$0 FP_1$0) (setminus Alloc$0 Alloc$0))))
+   :named framecondition_of_remove_loop_18_4_17))
+
+(assert (! (or (Btwn$0 next$0 lst$0 curr_2$0 curr_2$0)
+       (not (lseg_struct$0 sk_?X_32$0 next$0 lst$0 curr_2$0)))
+   :named unnamed_23))
+
+(assert (! (or (Btwn$0 next$0 curr_3$0 null$0 null$0)
+       (not (lseg_struct$0 sk_?X_28$0 next$0 curr_3$0 null$0)))
+   :named unnamed_24))
+
+(assert (! (or (= (read$0 next$0 curr_3$0) null$0) (not nondet_2$0))
+   :named unnamed_25))
+
+(assert (! (forall ((l1 Loc))
+           (or
+               (and (Btwn$0 next$0 lst_1$0 l1 curr_3$0)
+                    (member l1 (lseg_domain$0 next$0 lst_1$0 curr_3$0))
+                    (not (= l1 curr_3$0)))
+               (and
+                    (or (= l1 curr_3$0)
+                        (not (Btwn$0 next$0 lst_1$0 l1 curr_3$0)))
+                    (not (member l1 (lseg_domain$0 next$0 lst_1$0 curr_3$0))))))
+   :named lseg_footprint_22))
+
+(assert (! (forall ((l1 Loc))
+           (or
+               (and (Btwn$0 next$0 lst$0 l1 null$0)
+                    (member l1 (lseg_domain$0 next$0 lst$0 null$0))
+                    (not (= l1 null$0)))
+               (and (or (= l1 null$0) (not (Btwn$0 next$0 lst$0 l1 null$0)))
+                    (not (member l1 (lseg_domain$0 next$0 lst$0 null$0))))))
+   :named lseg_footprint_23))
+
+(assert (! (forall ((l1 Loc))
+           (or
+               (and (Btwn$0 next$0 curr_2$0 l1 null$0)
+                    (member l1 (lseg_domain$0 next$0 curr_2$0 null$0))
+                    (not (= l1 null$0)))
+               (and
+                    (or (= l1 null$0)
+                        (not (Btwn$0 next$0 curr_2$0 l1 null$0)))
+                    (not (member l1 (lseg_domain$0 next$0 curr_2$0 null$0))))))
+   :named lseg_footprint_24))
+
+(assert (! (not (member null$0 Alloc$0)) :named initial_footprint_of_remove_10_11_11))
+
+(assert (! (not (= tmp_2$0 null$0)) :named if_else_28_8_2))
+
+(assert (! (lseg_struct$0 sk_?X_33$0 next$0 lst$0 null$0)
+   :named precondition_of_remove_10_11_22))
+
+(assert (! (= sk_?X_33$0 (lseg_domain$0 next$0 lst$0 null$0))
+   :named precondition_of_remove_10_11_23))
+
+(assert (! (not (= curr_2$0 null$0)) :named invariant_18_4_71))
+
+(assert (! (lseg_struct$0 sk_?X_31$0 next$0 curr_2$0 null$0)
+   :named invariant_18_4_72))
+
+(assert (! (= sk_?X_32$0 (lseg_domain$0 next$0 lst$0 curr_2$0))
+   :named invariant_18_4_73))
+
+(assert (! (= sk_?X_30$0 FP_1$0) :named invariant_18_4_74))
+
+(assert (! (= (as emptyset SetLoc) (intersection sk_?X_32$0 sk_?X_31$0))
+   :named invariant_18_4_75))
+
+(assert (! (not (= curr_3$0 null$0)) :named invariant_18_4_76))
+
+(assert (! (lseg_struct$0 sk_?X_27$0 next$0 lst_1$0 curr_3$0)
+   :named invariant_18_4_77))
+
+(assert (! (= sk_?X_29$0
+     (union (intersection Alloc$0 FP_1$0) (setminus Alloc$0 Alloc$0)))
+   :named invariant_18_4_78))
+
+(assert (! (= sk_?X_27$0 (lseg_domain$0 next$0 lst_1$0 curr_3$0))
+   :named invariant_18_4_79))
+
+(assert (! (= (as emptyset SetLoc) (as emptyset SetLoc)) :named invariant_18_4_80))
+
+(assert (! (= Alloc$0 (union FP_2$0 Alloc$0))
+   :named framecondition_of_remove_loop_18_4_18))
+
+(assert (! (= tmp_2$0 (read$0 next$0 curr_3$0)) :named assign_27_4_2))
+
+(assert (! (= lst_1$0 lst$0) :named framecondition_of_remove_loop_18_4_19))
+
+(assert (! (= FP_Caller_1$0 (setminus FP_Caller$0 FP$0)) :named assign_13_2_5))
+
+(assert (! (or (Btwn$0 next$0 lst_1$0 curr_3$0 curr_3$0)
+       (not (lseg_struct$0 sk_?X_27$0 next$0 lst_1$0 curr_3$0)))
+   :named unnamed_26))
+
+(assert (! (or (Btwn$0 next$0 lst$0 null$0 null$0)
+       (not (lseg_struct$0 sk_?X_33$0 next$0 lst$0 null$0)))
+   :named unnamed_27))
+
+(assert (! (or (Btwn$0 next$0 curr_2$0 null$0 null$0)
+       (not (lseg_struct$0 sk_?X_31$0 next$0 curr_2$0 null$0)))
+   :named unnamed_28))
+
+(assert (! (forall ((?u Loc) (?v Loc) (?z Loc))
+           (and
+                (or
+                    (Btwn$0 (write$0 next$0 curr_3$0 (read$0 next$0 tmp_2$0))
+                      ?z ?u ?v)
+                    (not
+                         (or
+                             (and (Btwn$0 next$0 ?z ?u ?v)
+                                  (or (Btwn$0 next$0 ?z ?v curr_3$0)
+                                      (and (Btwn$0 next$0 ?z ?v ?v)
+                                           (not
+                                                (Btwn$0 next$0 ?z curr_3$0
+                                                  curr_3$0)))))
+                             (and (not (= curr_3$0 ?v))
+                                  (or (Btwn$0 next$0 ?z curr_3$0 ?v)
+                                      (and
+                                           (Btwn$0 next$0 ?z curr_3$0
+                                             curr_3$0)
+                                           (not (Btwn$0 next$0 ?z ?v ?v))))
+                                  (Btwn$0 next$0 ?z ?u curr_3$0)
+                                  (or
+                                      (Btwn$0 next$0 (read$0 next$0 tmp_2$0)
+                                        ?v curr_3$0)
+                                      (and
+                                           (Btwn$0 next$0
+                                             (read$0 next$0 tmp_2$0) ?v ?v)
+                                           (not
+                                                (Btwn$0 next$0
+                                                  (read$0 next$0 tmp_2$0)
+                                                  curr_3$0 curr_3$0)))))
+                             (and (not (= curr_3$0 ?v))
+                                  (or (Btwn$0 next$0 ?z curr_3$0 ?v)
+                                      (and
+                                           (Btwn$0 next$0 ?z curr_3$0
+                                             curr_3$0)
+                                           (not (Btwn$0 next$0 ?z ?v ?v))))
+                                  (Btwn$0 next$0 (read$0 next$0 tmp_2$0) ?u
+                                    ?v)
+                                  (or
+                                      (Btwn$0 next$0 (read$0 next$0 tmp_2$0)
+                                        ?v curr_3$0)
+                                      (and
+                                           (Btwn$0 next$0
+                                             (read$0 next$0 tmp_2$0) ?v ?v)
+                                           (not
+                                                (Btwn$0 next$0
+                                                  (read$0 next$0 tmp_2$0)
+                                                  curr_3$0 curr_3$0))))))))
+                (or
+                    (and (Btwn$0 next$0 ?z ?u ?v)
+                         (or (Btwn$0 next$0 ?z ?v curr_3$0)
+                             (and (Btwn$0 next$0 ?z ?v ?v)
+                                  (not (Btwn$0 next$0 ?z curr_3$0 curr_3$0)))))
+                    (and (not (= curr_3$0 ?v))
+                         (or (Btwn$0 next$0 ?z curr_3$0 ?v)
+                             (and (Btwn$0 next$0 ?z curr_3$0 curr_3$0)
+                                  (not (Btwn$0 next$0 ?z ?v ?v))))
+                         (Btwn$0 next$0 ?z ?u curr_3$0)
+                         (or
+                             (Btwn$0 next$0 (read$0 next$0 tmp_2$0) ?v
+                               curr_3$0)
+                             (and
+                                  (Btwn$0 next$0 (read$0 next$0 tmp_2$0) ?v
+                                    ?v)
+                                  (not
+                                       (Btwn$0 next$0 (read$0 next$0 tmp_2$0)
+                                         curr_3$0 curr_3$0)))))
+                    (and (not (= curr_3$0 ?v))
+                         (or (Btwn$0 next$0 ?z curr_3$0 ?v)
+                             (and (Btwn$0 next$0 ?z curr_3$0 curr_3$0)
+                                  (not (Btwn$0 next$0 ?z ?v ?v))))
+                         (Btwn$0 next$0 (read$0 next$0 tmp_2$0) ?u ?v)
+                         (or
+                             (Btwn$0 next$0 (read$0 next$0 tmp_2$0) ?v
+                               curr_3$0)
+                             (and
+                                  (Btwn$0 next$0 (read$0 next$0 tmp_2$0) ?v
+                                    ?v)
+                                  (not
+                                       (Btwn$0 next$0 (read$0 next$0 tmp_2$0)
+                                         curr_3$0 curr_3$0)))))
+                    (not
+                         (Btwn$0
+                           (write$0 next$0 curr_3$0 (read$0 next$0 tmp_2$0))
+                           ?z ?u ?v)))))
+   :named btwn_write))
+
+(assert (! (forall ((?x Loc)) (Btwn$0 next$0 ?x ?x ?x)) :named btwn_refl_5))
+
+(assert (! (forall ((?x Loc) (?y Loc)) (or (not (Btwn$0 next$0 ?x ?y ?x)) (= ?x ?y)))
+   :named btwn_sndw_5))
+
+(assert (! (forall ((?x Loc) (?y Loc) (?z Loc))
+           (or (not (Btwn$0 next$0 ?x ?y ?y)) (not (Btwn$0 next$0 ?x ?z ?z))
+               (Btwn$0 next$0 ?x ?y ?z) (Btwn$0 next$0 ?x ?z ?y)))
+   :named btwn_ord1_5))
+
+(assert (! (forall ((?x Loc) (?y Loc) (?z Loc))
+           (or (not (Btwn$0 next$0 ?x ?y ?z))
+               (and (Btwn$0 next$0 ?x ?y ?y) (Btwn$0 next$0 ?y ?z ?z))))
+   :named btwn_ord2_5))
+
+(assert (! (forall ((?x Loc) (?y Loc) (?z Loc))
+           (or (not (Btwn$0 next$0 ?x ?y ?y)) (not (Btwn$0 next$0 ?y ?z ?z))
+               (Btwn$0 next$0 ?x ?z ?z)))
+   :named btwn_trn1_5))
+
+(assert (! (forall ((?u Loc) (?x Loc) (?y Loc) (?z Loc))
+           (or (not (Btwn$0 next$0 ?x ?y ?z)) (not (Btwn$0 next$0 ?y ?u ?z))
+               (and (Btwn$0 next$0 ?x ?y ?u) (Btwn$0 next$0 ?x ?u ?z))))
+   :named btwn_trn2_5))
+
+(assert (! (forall ((?u Loc) (?x Loc) (?y Loc) (?z Loc))
+           (or (not (Btwn$0 next$0 ?x ?y ?z)) (not (Btwn$0 next$0 ?x ?u ?y))
+               (and (Btwn$0 next$0 ?x ?u ?z) (Btwn$0 next$0 ?u ?y ?z))))
+   :named btwn_trn3_5))
+
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/sets/jan27/ListConcat.hs.fqout.177minimized.smt2 b/test/regress/regress0/sets/jan27/ListConcat.hs.fqout.177minimized.smt2
new file mode 100644
index 0000000..c4ee3b7
--- /dev/null
+++ b/test/regress/regress0/sets/jan27/ListConcat.hs.fqout.177minimized.smt2
@@ -0,0 +1,18 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+(define-sort Elt () Int)
+(define-sort mySet () (Set Elt ))
+(define-fun smt_set_emp () mySet (as emptyset mySet))
+
+(declare-fun S () (Set Int))
+(declare-fun T () (Set Int))
+
+(assert (not (= S T)))
+(assert (= T (union smt_set_emp S)))
+(check-sat)
+
+; What was the bug?
+;
+; When two sets were disequal, the corresponding lemma
+; was not being generated (stating there in an element
+; in one, but not in the other).
diff --git a/test/regress/regress0/sets/jan27/ListConcat.hs.fqout.cvc4.177.smt2 b/test/regress/regress0/sets/jan27/ListConcat.hs.fqout.cvc4.177.smt2
new file mode 100644
index 0000000..eb48b02
--- /dev/null
+++ b/test/regress/regress0/sets/jan27/ListConcat.hs.fqout.cvc4.177.smt2
@@ -0,0 +1,49 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+(define-sort Elt () Int)
+(define-sort mySet () (Set Elt ))
+(define-fun smt_set_emp () mySet (as emptyset mySet))
+(define-fun smt_set_mem ((x Elt) (s mySet)) Bool (member x s))
+(define-fun smt_set_add ((s mySet) (x Elt)) mySet (union s (singleton x)))
+(define-fun smt_set_cup ((s1 mySet) (s2 mySet)) mySet (union s1 s2))
+(define-fun smt_set_cap ((s1 mySet) (s2 mySet)) mySet (intersection s1 s2))
+;(define-fun smt_set_com ((s mySet)) mySet ((_ map not) s))
+(define-fun smt_set_dif ((s1 mySet) (s2 mySet)) mySet (setminus s1 s2))
+;(define-fun smt_set_sub ((s1 mySet) (s2 mySet)) Bool (= smt_set_emp (smt_set_dif s1 s2)))
+(define-fun smt_set_sub ((s1 mySet) (s2 mySet)) Bool (subset s1 s2))
+(declare-fun z3v54 () Int)
+(declare-fun z3f55 (Int) Int)
+(declare-fun z3v56 () Int)
+(declare-fun z3v57 () Int)
+(declare-fun z3v58 () Int)
+(declare-fun z3v59 () Int)
+(declare-fun z3f60 (Int) mySet)
+(declare-fun z3f61 (Int) Bool)
+(declare-fun z3f62 (Int Int) Int)
+(declare-fun z3v63 () Int)
+(declare-fun z3v64 () Int)
+(declare-fun z3f65 (Int) mySet)
+(declare-fun z3v66 () Int)
+(declare-fun z3v67 () Int)
+(declare-fun z3v68 () Int)
+(declare-fun z3v69 () Int)
+(declare-fun z3f70 (Int) Int)
+(declare-fun z3v71 () Int)
+(declare-fun z3v72 () Int)
+(declare-fun z3v74 () Int)
+(declare-fun z3v76 () Int)
+(declare-fun z3v77 () Int)
+(declare-fun z3v78 () Int)
+(declare-fun z3v82 () Int)
+(declare-fun z3v85 () Int)
+(declare-fun z3v86 () Int)
+(declare-fun z3v87 () Int)
+(declare-fun z3f90 () Int)
+(declare-fun z3v91 () Int)
+(declare-fun z3v92 () Int)
+(declare-fun z3v93 () Int)
+(declare-fun z3v94 () Int)
+(assert (= (z3f60 z3v94) (z3f65 z3v56)))
+(assert (and (>= (z3f55 z3v56) 0) (>= (z3f55 z3v58) 0) (= (z3f60 z3v58) smt_set_emp) (= (z3f55 z3v58) 0) (= (z3f61 z3v58) true) (= z3v58 z3f90) (>= (z3f55 z3v58) 0) (= z3v58 z3v63) (>= (z3f55 z3v58) 0) (>= (z3f55 z3v64) 0) (= (z3f65 z3v64) (smt_set_cup (z3f60 z3v63) (z3f65 z3v56))) (= (z3f60 z3v64) (smt_set_cup (smt_set_add smt_set_emp z3v63) (z3f60 z3v56))) (= (z3f55 z3v64) (+ 1 (z3f55 z3v56))) (= (z3f61 z3v64) false) (= z3v64 (z3f62 z3v63 z3v56)) (>= (z3f55 z3v64) 0) (= z3v64 z3v66) (> [...]
+(assert (not (= (z3f60 z3v94) (z3f65 z3v66))))
+(check-sat)
diff --git a/test/regress/regress0/sets/jan27/ListElem.hs.fqout.cvc4.38.smt2 b/test/regress/regress0/sets/jan27/ListElem.hs.fqout.cvc4.38.smt2
new file mode 100644
index 0000000..3c0ef1d
--- /dev/null
+++ b/test/regress/regress0/sets/jan27/ListElem.hs.fqout.cvc4.38.smt2
@@ -0,0 +1,59 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+
+; What was the bug?
+; 
+; When asserting equality to equality engine, correct reason
+; was not being sent (the fact itself was being sent as reason)
+
+(define-sort Elt () Int)
+(define-sort mySet () (Set Elt ))
+(define-fun smt_set_emp () mySet (as emptyset mySet))
+(define-fun smt_set_mem ((x Elt) (s mySet)) Bool (member x s))
+(define-fun smt_set_add ((s mySet) (x Elt)) mySet (union s (singleton x)))
+(define-fun smt_set_cup ((s1 mySet) (s2 mySet)) mySet (union s1 s2))
+(define-fun smt_set_cap ((s1 mySet) (s2 mySet)) mySet (intersection s1 s2))
+;(define-fun smt_set_com ((s mySet)) mySet ((_ map not) s))
+(define-fun smt_set_dif ((s1 mySet) (s2 mySet)) mySet (setminus s1 s2))
+;(define-fun smt_set_sub ((s1 mySet) (s2 mySet)) Bool (= smt_set_emp (smt_set_dif s1 s2)))
+(define-fun smt_set_sub ((s1 mySet) (s2 mySet)) Bool (subset s1 s2))
+(declare-fun z3v56 () Int)
+(declare-fun z3v57 () Int)
+(assert (distinct z3v56 z3v57))
+(declare-fun z3v58 () Int)
+(declare-fun z3f59 (Int) Int)
+(declare-fun z3v60 () Int)
+(declare-fun z3f61 (Int) Bool)
+(declare-fun z3v62 () Int)
+(declare-fun z3v63 () Int)
+(declare-fun z3v64 () Int)
+(declare-fun z3v65 () Int)
+(declare-fun z3f66 (Int) mySet)
+(declare-fun z3f67 (Int) Bool)
+(declare-fun z3f68 (Int Int) Int)
+(declare-fun z3v69 () Int)
+(declare-fun z3v70 () Int)
+(declare-fun z3f71 (Int) Int)
+(declare-fun z3v72 () Int)
+(declare-fun z3v73 () Int)
+(declare-fun z3v74 () Int)
+(declare-fun z3v75 () Int)
+(declare-fun z3v76 () Int)
+(declare-fun z3v77 () Int)
+(declare-fun z3v78 () Int)
+(declare-fun z3v80 () Int)
+(declare-fun z3v81 () Int)
+(declare-fun z3f82 () Int)
+(declare-fun z3v83 () Int)
+(declare-fun z3v84 () Int)
+(declare-fun z3v85 () Int)
+(declare-fun z3v86 () Int)
+(declare-fun z3v87 () Int)
+(declare-fun z3v88 () Int)
+(declare-fun z3v89 () Int)
+(declare-fun z3v90 () Int)
+(assert (= z3v90 z3v56))
+(assert (z3f61 z3v90))
+(assert (and (>= (z3f59 z3v58) 0) (z3f61 z3v60) (z3f61 z3v60) (= z3v60 z3v62) (= (z3f61 z3v60) (= z3v64 z3v63)) (= (z3f61 z3v62) (= z3v64 z3v63)) (>= (z3f59 z3v65) 0) (= (z3f66 z3v65) (smt_set_cup (smt_set_add smt_set_emp z3v64) (z3f66 z3v58))) (= (z3f59 z3v65) (+ 1 (z3f59 z3v58))) (= (z3f67 z3v65) false) (= z3v65 (z3f68 z3v64 z3v58)) (>= (z3f59 z3v65) 0) (= z3v65 z3v69) (>= (z3f59 z3v65) 0) (>= (z3f59 z3v69) 0) (z3f61 z3v56) (= (z3f71 z3v70) z3v70) (= (z3f71 z3v72) z3v72) (not (z3f61 z3 [...]
+(assert (not (= (z3f61 z3v90) (smt_set_mem z3v63 (z3f66 z3v69)))))
+(check-sat)
diff --git a/test/regress/regress0/sets/jan27/deepmeas0.hs.fqout.cvc4.41.smt2 b/test/regress/regress0/sets/jan27/deepmeas0.hs.fqout.cvc4.41.smt2
new file mode 100644
index 0000000..83dfe41
--- /dev/null
+++ b/test/regress/regress0/sets/jan27/deepmeas0.hs.fqout.cvc4.41.smt2
@@ -0,0 +1,58 @@
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+(define-sort Elt () Int)
+(define-sort mySet () (Set Elt ))
+(define-fun smt_set_emp () mySet (as emptyset mySet))
+(define-fun smt_set_mem ((x Elt) (s mySet)) Bool (member x s))
+(define-fun smt_set_add ((s mySet) (x Elt)) mySet (union s (singleton x)))
+(define-fun smt_set_cup ((s1 mySet) (s2 mySet)) mySet (union s1 s2))
+(define-fun smt_set_cap ((s1 mySet) (s2 mySet)) mySet (intersection s1 s2))
+;(define-fun smt_set_com ((s mySet)) mySet ((_ map not) s))
+(define-fun smt_set_dif ((s1 mySet) (s2 mySet)) mySet (setminus s1 s2))
+;(define-fun smt_set_sub ((s1 mySet) (s2 mySet)) Bool (= smt_set_emp (smt_set_dif s1 s2)))
+(define-fun smt_set_sub ((s1 mySet) (s2 mySet)) Bool (subset s1 s2))
+(declare-fun z3v58 () Int)
+(declare-fun z3v59 () Int)
+(assert (distinct z3v58 z3v59))
+(declare-fun z3f60 (Int) Bool)
+(declare-fun z3v61 () Int)
+(declare-fun z3f62 (Int) Int)
+(declare-fun z3v63 () Int)
+(declare-fun z3v64 () Int)
+(declare-fun z3v65 () Int)
+(declare-fun z3v66 () Int)
+(declare-fun z3f67 (Int) mySet)
+(declare-fun z3v69 () Int)
+(declare-fun z3f70 (Int) Int)
+(declare-fun z3v76 () Int)
+(declare-fun z3v77 () Int)
+(declare-fun z3v78 () Int)
+(declare-fun z3v79 () Int)
+(declare-fun z3v80 () Int)
+(declare-fun z3v81 () Int)
+(declare-fun z3v82 () Int)
+(declare-fun z3f83 (Int) Int)
+(declare-fun z3f84 (Int) Int)
+(declare-fun z3v85 () Int)
+(declare-fun z3f86 (Int) Int)
+(declare-fun z3f87 (Int Int) Int)
+(declare-fun z3v88 () Int)
+(declare-fun z3v89 () Int)
+(declare-fun z3f90 (Int) mySet)
+(declare-fun z3f91 (Int) Bool)
+(declare-fun z3f92 (Int Int) Int)
+(declare-fun z3v93 () Int)
+(declare-fun z3v94 () Int)
+(declare-fun z3v95 () Int)
+(declare-fun z3v96 () Int)
+(declare-fun z3v97 () Int)
+(assert (and (not (z3f60 z3v79)) (not (z3f60 z3v79)) (= z3v79 z3v80) (= (z3f60 z3v79) (= z3v76 z3v81)) (= (z3f60 z3v80) (= z3v76 z3v81)) (= (z3f83 z3v82) z3v81) (= (z3f84 z3v82) z3v81) (= (z3f86 z3v82) z3v85) (= z3v82 (z3f87 z3v81 z3v85)) (= z3v82 z3v88) (>= (z3f70 z3v78) 0) (= (z3f67 z3v78) (smt_set_cup (smt_set_add smt_set_emp (z3f83 z3v88)) (z3f67 z3v89))) (= (z3f90 z3v78) (smt_set_cup (smt_set_add smt_set_emp z3v88) (z3f90 z3v89))) (= (z3f70 z3v78) (+ 1 (z3f70 z3v89))) (= (z3f91 z3v7 [...]
+(assert (smt_set_mem z3v76 (z3f67 z3v78)))
+(assert (<= z3v95 z3v93))
+(assert (>= z3v95 z3v93))
+(assert (= z3v95 z3v93))
+(assert (smt_set_mem z3v76 (z3f67 z3v77)))
+(declare-fun z3v98 () Int)
+(assert (not (<  z3v98 z3v85)))
+(check-sat)
diff --git a/test/regress/regress0/sets/jan28/TalkingAboutSets.hs.fqout.3577minimized.smt2 b/test/regress/regress0/sets/jan28/TalkingAboutSets.hs.fqout.3577minimized.smt2
new file mode 100644
index 0000000..35110d8
--- /dev/null
+++ b/test/regress/regress0/sets/jan28/TalkingAboutSets.hs.fqout.3577minimized.smt2
@@ -0,0 +1,33 @@
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+
+; Observed behavior
+;
+; Benchmark taking too long. Lemmas being generated indefinitely with
+; skolems due to the "two sets not being equal" axiom.
+;
+; What was the bug?
+;
+;
+
+(define-sort Elt () Int)
+(define-sort mySet () (Set Elt))
+
+(declare-fun f (Int) mySet)
+(declare-fun x () Int)
+(declare-fun y () Int)
+
+(declare-fun S () mySet)
+(declare-fun T () mySet)
+
+(assert (= (f x) 
+           (union S T)))
+
+(assert (= (f x) 
+           (union T (f y))))
+
+(assert (not (= (f y) 
+                (union T (f y)))))
+
+(check-sat)
diff --git a/test/regress/regress0/sets/jan28/TalkingAboutSets.hs.fqout.cvc4.3577.smt2 b/test/regress/regress0/sets/jan28/TalkingAboutSets.hs.fqout.cvc4.3577.smt2
new file mode 100644
index 0000000..282325f
--- /dev/null
+++ b/test/regress/regress0/sets/jan28/TalkingAboutSets.hs.fqout.cvc4.3577.smt2
@@ -0,0 +1,286 @@
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+(define-sort Elt () Int)
+(define-sort mySet () (Set Elt ))
+(define-fun smt_set_emp () mySet (as emptyset mySet))
+(define-fun smt_set_mem ((x Elt) (s mySet)) Bool (member x s))
+(define-fun smt_set_add ((s mySet) (x Elt)) mySet (union s (singleton x)))
+(define-fun smt_set_cup ((s1 mySet) (s2 mySet)) mySet (union s1 s2))
+(define-fun smt_set_cap ((s1 mySet) (s2 mySet)) mySet (intersection s1 s2))
+;(define-fun smt_set_com ((s mySet)) mySet ((_ map not) s))
+(define-fun smt_set_dif ((s1 mySet) (s2 mySet)) mySet (setminus s1 s2))
+;(define-fun smt_set_sub ((s1 mySet) (s2 mySet)) Bool (= smt_set_emp (smt_set_dif s1 s2)))
+(define-fun smt_set_sub ((s1 mySet) (s2 mySet)) Bool (subset s1 s2))
+(declare-fun z3v60 () Int)
+(declare-fun z3v61 () Int)
+(assert (distinct z3v60 z3v61))
+(declare-fun z3f62 (Int) Bool)
+(declare-fun z3v63 () Int)
+(declare-fun z3f64 (Int) Int)
+(declare-fun z3v65 () Int)
+(declare-fun z3v66 () Int)
+(declare-fun z3v69 () mySet)
+(declare-fun z3v70 () mySet)
+(declare-fun z3v72 () mySet)
+(declare-fun z3v73 () mySet)
+(declare-fun z3v75 () Int)
+(declare-fun z3f76 (Int) Int)
+(declare-fun z3v79 () Int)
+(declare-fun z3v80 () Int)
+(declare-fun z3v84 () Int)
+(declare-fun z3v87 () mySet)
+(declare-fun z3v88 () mySet)
+(declare-fun z3v90 () mySet)
+(declare-fun z3v91 () mySet)
+(declare-fun z3v93 () mySet)
+(declare-fun z3v94 () mySet)
+(declare-fun z3v96 () Int)
+(declare-fun z3f97 (Int) mySet)
+(declare-fun z3f98 (Int) Bool)
+(declare-fun z3v99 () Int)
+(declare-fun z3v102 () Int)
+(declare-fun z3v105 () mySet)
+(declare-fun z3v107 () mySet)
+(declare-fun z3v108 () mySet)
+(declare-fun z3v109 () Int)
+(declare-fun z3v110 () Int)
+(declare-fun z3v111 () Int)
+(declare-fun z3v112 () Int)
+(declare-fun z3v113 () mySet)
+(declare-fun z3v114 () mySet)
+(declare-fun z3v117 () mySet)
+(declare-fun z3v118 () mySet)
+(declare-fun z3v121 () mySet)
+(declare-fun z3v123 () mySet)
+(declare-fun z3v124 () mySet)
+(declare-fun z3v126 () mySet)
+(declare-fun z3v128 () Int)
+(declare-fun z3v132 () Int)
+(declare-fun z3v135 () mySet)
+(declare-fun z3v136 () mySet)
+(declare-fun z3v138 () mySet)
+(declare-fun z3v140 () Int)
+(declare-fun z3v143 () mySet)
+(declare-fun z3v144 () mySet)
+(declare-fun z3v145 () mySet)
+(declare-fun z3v146 () Int)
+(declare-fun z3v147 () Int)
+(declare-fun z3v148 () mySet)
+(declare-fun z3v149 () mySet)
+(declare-fun z3v155 () mySet)
+(declare-fun z3v156 () mySet)
+(declare-fun z3v157 () mySet)
+(declare-fun z3v160 () Int)
+(declare-fun z3v161 () Int)
+(declare-fun z3v162 () Int)
+(declare-fun z3v163 () Int)
+(declare-fun z3v164 () mySet)
+(declare-fun z3v165 () mySet)
+(declare-fun z3v169 () Int)
+(declare-fun z3v172 () mySet)
+(declare-fun z3v173 () mySet)
+(declare-fun z3v175 () Int)
+(declare-fun z3v176 () Int)
+(declare-fun z3v177 () Int)
+(declare-fun z3v178 () Int)
+(declare-fun z3f179 (Int Int) Int)
+(declare-fun z3v180 () Int)
+(declare-fun z3v181 () Int)
+(declare-fun z3f183 () Int)
+(declare-fun z3v184 () Int)
+(declare-fun z3v185 () Int)
+(declare-fun z3v186 () Int)
+(declare-fun z3v187 () Int)
+(declare-fun z3v188 () Int)
+(declare-fun z3v189 () Int)
+(declare-fun z3v192 () Int)
+(declare-fun z3v193 () Int)
+(declare-fun z3v197 () Int)
+(declare-fun z3v198 () mySet)
+(declare-fun z3v200 () Int)
+(declare-fun z3v201 () Int)
+(declare-fun z3v202 () Int)
+(declare-fun z3v203 () Int)
+(declare-fun z3v204 () Int)
+(declare-fun z3v206 () Int)
+(declare-fun z3v207 () Int)
+(declare-fun z3v208 () Int)
+(declare-fun z3v209 () Int)
+(declare-fun z3v210 () Int)
+(declare-fun z3v211 () Int)
+(declare-fun z3f212 (Int) Int)
+(declare-fun z3f213 (Int) Int)
+(declare-fun z3v214 () Int)
+(declare-fun z3v215 () Int)
+(declare-fun z3v217 () Int)
+(declare-fun z3v218 () Int)
+(declare-fun z3v219 () Int)
+(declare-fun z3v220 () Int)
+(declare-fun z3f221 (Int Int) Int)
+(declare-fun z3v222 () Int)
+(declare-fun z3v223 () Int)
+(declare-fun z3v224 () Int)
+(declare-fun z3v225 () Int)
+(declare-fun z3v226 () Int)
+(declare-fun z3v227 () Int)
+(declare-fun z3v228 () Int)
+(declare-fun z3v229 () Int)
+(declare-fun z3v230 () Int)
+(declare-fun z3v231 () Int)
+(declare-fun z3v232 () Int)
+(declare-fun z3v233 () Int)
+(declare-fun z3v234 () Int)
+(declare-fun z3v235 () Int)
+(declare-fun z3v236 () Int)
+(declare-fun z3v237 () Int)
+(declare-fun z3v238 () Int)
+(declare-fun z3v239 () Int)
+(declare-fun z3v240 () Int)
+(declare-fun z3v241 () Int)
+(declare-fun z3v242 () Int)
+(declare-fun z3v243 () Int)
+(declare-fun z3v244 () Int)
+(declare-fun z3v245 () Int)
+(declare-fun z3v246 () Int)
+(declare-fun z3v247 () Int)
+(declare-fun z3v248 () Int)
+(declare-fun z3v249 () Int)
+(declare-fun z3v250 () Int)
+(declare-fun z3v251 () Int)
+(declare-fun z3v252 () Int)
+(declare-fun z3v253 () Int)
+(declare-fun z3v254 () Int)
+(declare-fun z3v255 () Int)
+(declare-fun z3v256 () Int)
+(declare-fun z3v257 () Int)
+(declare-fun z3v258 () Int)
+(declare-fun z3v259 () Int)
+(declare-fun z3v260 () Int)
+(declare-fun z3v261 () Int)
+(declare-fun z3v262 () Int)
+(declare-fun z3v263 () Int)
+(declare-fun z3v264 () Int)
+(declare-fun z3v265 () Int)
+(declare-fun z3v266 () Int)
+(declare-fun z3v267 () Int)
+(declare-fun z3v268 () Int)
+(declare-fun z3v269 () Int)
+(declare-fun z3v271 () Int)
+(declare-fun z3v273 () Int)
+(declare-fun z3v275 () Int)
+(declare-fun z3v277 () Int)
+(declare-fun z3v279 () Int)
+(declare-fun z3v281 () Int)
+(declare-fun z3v283 () Int)
+(declare-fun z3v286 () Int)
+(declare-fun z3v289 () Int)
+(declare-fun z3v290 () Int)
+(declare-fun z3v291 () Int)
+(declare-fun z3v292 () mySet)
+(declare-fun z3v295 () mySet)
+(declare-fun z3v297 () Int)
+(declare-fun z3v301 () Int)
+(declare-fun z3v302 () Int)
+(declare-fun z3v303 () Int)
+(declare-fun z3v304 () Int)
+(declare-fun z3v305 () Int)
+(declare-fun z3v306 () Int)
+(declare-fun z3v307 () Int)
+(declare-fun z3v308 () Int)
+(declare-fun z3v309 () Int)
+(declare-fun z3v310 () Int)
+(declare-fun z3v312 () Int)
+(declare-fun z3v314 () Int)
+(declare-fun z3v315 () Int)
+(declare-fun z3v316 () Int)
+(declare-fun z3v317 () Int)
+(declare-fun z3v318 () Int)
+(declare-fun z3v319 () Int)
+(declare-fun z3v320 () Int)
+(declare-fun z3v321 () Int)
+(declare-fun z3v322 () Int)
+(declare-fun z3v324 () Int)
+(declare-fun z3v327 () Int)
+(declare-fun z3v328 () Int)
+(declare-fun z3v329 () Int)
+(declare-fun z3v330 () Int)
+(declare-fun z3v331 () Int)
+(declare-fun z3v332 () Int)
+(declare-fun z3v333 () Int)
+(declare-fun z3v334 () Int)
+(declare-fun z3v335 () Int)
+(declare-fun z3v336 () Int)
+(declare-fun z3v337 () Int)
+(declare-fun z3v338 () Int)
+(declare-fun z3v339 () Int)
+(declare-fun z3v340 () Int)
+(declare-fun z3v341 () Int)
+(declare-fun z3v342 () Int)
+(declare-fun z3v343 () Int)
+(declare-fun z3v345 () Int)
+(declare-fun z3v349 () Int)
+(declare-fun z3v350 () Int)
+(declare-fun z3v351 () Int)
+(declare-fun z3v352 () Int)
+(declare-fun z3v353 () Int)
+(declare-fun z3v354 () Int)
+(declare-fun z3v355 () Int)
+(declare-fun z3v359 () Int)
+(declare-fun z3v361 () Int)
+(declare-fun z3v362 () Int)
+(declare-fun z3v363 () Int)
+(declare-fun z3v364 () Int)
+(declare-fun z3v366 () Int)
+(declare-fun z3v367 () Int)
+(declare-fun z3v368 () Int)
+(declare-fun z3v369 () Int)
+(declare-fun z3v370 () Int)
+(declare-fun z3v375 () Int)
+(assert (= (z3f97 z3v328) (smt_set_cup (z3f97 z3v331) (z3f97 z3v375))))
+(assert (= (z3f97 z3v328) (smt_set_cup (z3f97 z3v330) (z3f97 z3v375))))
+(assert (= (z3f97 z3v328) (smt_set_cup (z3f97 z3v328) (z3f97 z3v375))))
+(assert (= (z3f97 z3v328) (smt_set_cup (z3f97 z3v327) (z3f97 z3v375))))
+(assert (= (z3f97 z3v331) (smt_set_cup (z3f97 z3v331) (z3f97 z3v375))))
+(assert (= (z3f97 z3v331) (smt_set_cup (z3f97 z3v330) (z3f97 z3v375))))
+(assert (= (z3f97 z3v331) (smt_set_cup (z3f97 z3v328) (z3f97 z3v375))))
+(assert (= (z3f97 z3v331) (smt_set_cup (z3f97 z3v327) (z3f97 z3v375))))
+(assert (= (z3f97 z3v375) (z3f97 z3v331)))
+(assert (= (z3f97 z3v375) (z3f97 z3v328)))
+(assert (= (z3f97 z3v375) (smt_set_cup (z3f97 z3v327) (z3f97 z3v331))))
+(assert (= (z3f97 z3v375) (smt_set_cup (z3f97 z3v327) (z3f97 z3v328))))
+(assert (= (z3f97 z3v375) (smt_set_cup (z3f97 z3v328) (z3f97 z3v331))))
+(assert (= (z3f97 z3v375) (smt_set_cup (z3f97 z3v328) (z3f97 z3v330))))
+(assert (= (z3f97 z3v375) (smt_set_cup (z3f97 z3v328) (z3f97 z3v328))))
+(assert (= (z3f97 z3v375) (smt_set_cup (z3f97 z3v328) (z3f97 z3v327))))
+(assert (= (z3f97 z3v375) (smt_set_cup (z3f97 z3v330) (z3f97 z3v331))))
+(assert (= (z3f97 z3v375) (smt_set_cup (z3f97 z3v330) (z3f97 z3v328))))
+(assert (= (z3f97 z3v375) (smt_set_cup (z3f97 z3v331) (z3f97 z3v331))))
+(assert (= (z3f97 z3v375) (smt_set_cup (z3f97 z3v331) (z3f97 z3v330))))
+(assert (= (z3f97 z3v375) (smt_set_cup (z3f97 z3v331) (z3f97 z3v328))))
+(assert (= (z3f97 z3v375) (smt_set_cup (z3f97 z3v331) (z3f97 z3v327))))
+(assert (smt_set_sub (z3f97 z3v375) (z3f97 z3v331)))
+(assert (smt_set_sub (z3f97 z3v375) (z3f97 z3v328)))
+(assert (<= z3v375 z3v331))
+(assert (<= z3v375 z3v328))
+(assert (= z3v375 z3v328))
+(assert (>= z3v375 z3v331))
+(assert (>= z3v375 z3v328))
+(assert (not (= z3v375 z3v330)))
+(assert (not (= z3v375 z3v327)))
+(assert (<= (z3f76 z3v375) (z3f76 z3v331)))
+(assert (<= (z3f76 z3v375) (z3f76 z3v328)))
+(assert (>  (z3f76 z3v375) (z3f76 z3v330)))
+(assert (>  (z3f76 z3v375) (z3f76 z3v327)))
+(assert (>= (z3f76 z3v375) (z3f76 z3v331)))
+(assert (>= (z3f76 z3v375) (z3f76 z3v330)))
+(assert (>= (z3f76 z3v375) (z3f76 z3v328)))
+(assert (>= (z3f76 z3v375) (z3f76 z3v327)))
+(assert (= (z3f76 z3v375) (z3f76 z3v331)))
+(assert (= (z3f76 z3v375) (z3f76 z3v328)))
+(assert (>  (z3f76 z3v375) 0))
+(assert (= z3v375 z3v331))
+(assert (>= (z3f76 z3v375) 0))
+(assert (and (>= (z3f76 z3v327) 0) (>= (z3f76 z3v328) 0) (= (z3f97 z3v328) (smt_set_cup (smt_set_add smt_set_emp z3v329) (z3f97 z3v330))) (= (z3f76 z3v328) (+ 1 (z3f76 z3v330))) (= (z3f98 z3v328) false) (= z3v328 (z3f179 z3v329 z3v330)) (>= (z3f76 z3v328) 0) (= z3v328 z3v331) (>= (z3f76 z3v328) 0) (>= (z3f76 z3v330) 0) (>= (z3f76 z3v331) 0) (z3f62 z3v60) (= (z3f64 z3v63) z3v63) (= (z3f64 z3v65) z3v65) (not (z3f62 z3v61)) (= (z3f64 z3v66) z3v66)))
+(assert (not (= (z3f97 z3v327) (smt_set_cup (z3f97 z3v327) (z3f97 z3v375)))))
+(check-sat)
diff --git a/test/regress/regress0/sets/jan30/UniqueZipper.hs.fqout.cvc4.10.smt2 b/test/regress/regress0/sets/jan30/UniqueZipper.hs.fqout.cvc4.10.smt2
new file mode 100644
index 0000000..10ed4be
--- /dev/null
+++ b/test/regress/regress0/sets/jan30/UniqueZipper.hs.fqout.cvc4.10.smt2
@@ -0,0 +1,106 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+(define-sort Elt () Int)
+(define-sort mySet () (Set Elt ))
+(define-fun smt_set_emp () mySet (as emptyset mySet))
+(define-fun smt_set_mem ((x Elt) (s mySet)) Bool (member x s))
+(define-fun smt_set_add ((s mySet) (x Elt)) mySet (union s (singleton x)))
+(define-fun smt_set_cup ((s1 mySet) (s2 mySet)) mySet (union s1 s2))
+(define-fun smt_set_cap ((s1 mySet) (s2 mySet)) mySet (intersection s1 s2))
+(define-fun smt_set_dif ((s1 mySet) (s2 mySet)) mySet (setminus s1 s2))
+(define-fun smt_set_sub ((s1 mySet) (s2 mySet)) Bool (subset s1 s2))
+(declare-fun z3v66 () Int)
+(declare-fun z3v67 () Int)
+(assert (distinct z3v66 z3v67))
+(declare-fun z3v68 () Int)
+(declare-fun z3f69 (Int) Int)
+(declare-fun z3f70 (Int) mySet)
+(declare-fun z3v71 () Int)
+(declare-fun z3f72 (Int) mySet)
+(declare-fun z3v73 () Int)
+(declare-fun z3v74 () Int)
+(declare-fun z3v75 () Int)
+(declare-fun z3f76 (Int) Bool)
+(declare-fun z3f77 (Int Int) Int)
+(declare-fun z3v78 () Int)
+(declare-fun z3f79 (Int) Bool)
+(declare-fun z3v80 () Int)
+(declare-fun z3f81 (Int) Int)
+(declare-fun z3v82 () Int)
+(declare-fun z3v83 () Int)
+(declare-fun z3v85 () Int)
+(declare-fun z3v86 () Int)
+(declare-fun z3v87 () Int)
+(declare-fun z3f88 () Int)
+(declare-fun z3v89 () Int)
+(declare-fun z3v90 () Int)
+(declare-fun z3v91 () Int)
+(declare-fun z3v92 () Int)
+(declare-fun z3v93 () Int)
+(declare-fun z3f94 (Int) Int)
+(declare-fun z3f95 (Int) Int)
+(declare-fun z3f96 (Int Int Int) Int)
+(declare-fun z3v97 () Int)
+(declare-fun z3v98 () Int)
+(declare-fun z3v99 () Int)
+(assert (= z3v99 z3v98))
+(assert (and (>= (z3f69 z3v85) 0)
+             (not (smt_set_mem z3v86 (z3f70 z3v85)))
+             (= (z3f72 z3v85) smt_set_emp)
+             (>= (z3f69 z3v87) 0)
+             (= (z3f72 z3v87) smt_set_emp)
+             (= (z3f70 z3v87) smt_set_emp)
+             (= (z3f69 z3v87) 0)
+             (= (z3f76 z3v87) true)
+             (= z3v87 z3f88)
+             (>= (z3f69 z3v87) 0)
+             (= z3v87 z3v89)
+             (>= (z3f69 z3v87) 0)
+             (= (z3f70 z3v87)
+                (z3f70 z3v90))
+             (= (z3f72 z3v87) smt_set_emp)
+             (>= (z3f69 z3v89) 0)
+             (= (z3f70 z3v89)
+                (z3f70 z3v90))
+             (= (z3f72 z3v89) smt_set_emp)
+             (>= (z3f69 z3v90) 0)
+             (= (z3f72 z3v90)
+                (ite (smt_set_mem z3v86 (z3f70 z3v85))
+                     (smt_set_cup (smt_set_add smt_set_emp z3v86)
+                                  (z3f72 z3v85))
+                     (z3f72 z3v85)))
+             (= (z3f70 z3v90)
+                (smt_set_cup (smt_set_add smt_set_emp z3v86)
+                             (z3f70 z3v85)))
+             (= (z3f69 z3v90)
+                (+ 1 (z3f69 z3v85)))
+             (= (z3f76 z3v90) false)
+             (>= (z3f69 z3v91) 0)
+             (= (z3f72 z3v91) smt_set_emp)
+             (= (z3f70 z3v91) smt_set_emp)
+             (= (z3f69 z3v91) 0)
+             (= (z3f76 z3v91) true)
+             (= z3v91 z3f88)
+             (>= (z3f69 z3v91) 0)
+             (= z3v91 z3v92)
+             (>= (z3f69 z3v91) 0)
+             (not (smt_set_mem z3v86 (z3f70 z3v91)))
+             (= (z3f72 z3v91) smt_set_emp)
+             (= (z3f94 z3v93) z3v92)
+             (= (z3f95 z3v93) z3v85)
+             (= z3v93 (z3f96 z3v86 z3v92 z3v85))
+             (= z3v93 z3v97)
+             (= (smt_set_cap (z3f70 (z3f94 z3v93))
+                             (z3f70 (z3f95 z3v93))) smt_set_emp)
+             (>= (z3f69 z3v92) 0)
+             (not (smt_set_mem z3v86 (z3f70 z3v92)))
+             (= (z3f72 z3v92) smt_set_emp)
+             (= (smt_set_cap (z3f70 (z3f94 z3v97))
+                             (z3f70 (z3f95 z3v97))) smt_set_emp)
+             (z3f79 z3v66)
+             (= (z3f81 z3v80) z3v80)
+             (= (z3f81 z3v82) z3v82)
+             (not (z3f79 z3v67))
+             (= (z3f81 z3v83) z3v83)))
+(assert (not (>  z3v99 z3v98)))
+(check-sat)
diff --git a/test/regress/regress0/sets/jan30/UniqueZipper.hs.fqout.cvc4.1832.smt2 b/test/regress/regress0/sets/jan30/UniqueZipper.hs.fqout.cvc4.1832.smt2
new file mode 100644
index 0000000..6165b98
--- /dev/null
+++ b/test/regress/regress0/sets/jan30/UniqueZipper.hs.fqout.cvc4.1832.smt2
@@ -0,0 +1,227 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+(define-sort Elt () Int)
+(define-sort mySet () (Set Elt ))
+(define-fun smt_set_emp () mySet (as emptyset mySet))
+(define-fun smt_set_mem ((x Elt) (s mySet)) Bool (member x s))
+(define-fun smt_set_add ((s mySet) (x Elt)) mySet (union s (singleton x)))
+(define-fun smt_set_cup ((s1 mySet) (s2 mySet)) mySet (union s1 s2))
+(define-fun smt_set_cap ((s1 mySet) (s2 mySet)) mySet (intersection s1 s2))
+;(define-fun smt_set_com ((s mySet)) mySet ((_ map not) s))
+(define-fun smt_set_dif ((s1 mySet) (s2 mySet)) mySet (setminus s1 s2))
+;(define-fun smt_set_sub ((s1 mySet) (s2 mySet)) Bool (= smt_set_emp (smt_set_dif s1 s2)))
+(define-fun smt_set_sub ((s1 mySet) (s2 mySet)) Bool (subset s1 s2))
+(declare-fun z3v66 () Int)
+(declare-fun z3v67 () Int)
+(assert (distinct z3v66 z3v67))
+(declare-fun z3v68 () Int)
+(declare-fun z3f69 (Int) Int)
+(declare-fun z3f70 (Int) mySet)
+(declare-fun z3v71 () Int)
+(declare-fun z3f72 (Int) mySet)
+(declare-fun z3v73 () Int)
+(declare-fun z3v74 () Int)
+(declare-fun z3v75 () Int)
+(declare-fun z3f76 (Int) Bool)
+(declare-fun z3f77 (Int Int) Int)
+(declare-fun z3v78 () Int)
+(declare-fun z3f79 (Int) Bool)
+(declare-fun z3v80 () Int)
+(declare-fun z3f81 (Int) Int)
+(declare-fun z3v82 () Int)
+(declare-fun z3v83 () Int)
+(declare-fun z3v85 () Int)
+(declare-fun z3v86 () Int)
+(declare-fun z3v87 () Int)
+(declare-fun z3f88 () Int)
+(declare-fun z3v89 () Int)
+(declare-fun z3v90 () Int)
+(declare-fun z3v91 () Int)
+(declare-fun z3v92 () Int)
+(declare-fun z3v93 () Int)
+(declare-fun z3f94 (Int) Int)
+(declare-fun z3f95 (Int) Int)
+(declare-fun z3f96 (Int Int Int) Int)
+(declare-fun z3v97 () Int)
+(declare-fun z3v98 () Int)
+(declare-fun z3v99 () Int)
+(declare-fun z3v100 () Int)
+(declare-fun z3v101 () Int)
+(declare-fun z3v102 () Int)
+(declare-fun z3v103 () Int)
+(declare-fun z3v104 () Int)
+(declare-fun z3v105 () Int)
+(declare-fun z3v106 () Int)
+(declare-fun z3v107 () Int)
+(declare-fun z3v108 () Int)
+(declare-fun z3v109 () Int)
+(declare-fun z3v110 () Int)
+(declare-fun z3v113 () Int)
+(declare-fun z3v114 () Int)
+(declare-fun z3v115 () Int)
+(declare-fun z3v116 () Int)
+(declare-fun z3v117 () Int)
+(declare-fun z3v118 () Int)
+(declare-fun z3v120 () Int)
+(declare-fun z3v121 () Int)
+(declare-fun z3v122 () Int)
+(declare-fun z3v124 () Int)
+(declare-fun z3v125 () Int)
+(declare-fun z3v126 () Int)
+(declare-fun z3v127 () Int)
+(declare-fun z3v128 () Int)
+(declare-fun z3v129 () Int)
+(declare-fun z3v131 () Int)
+(declare-fun z3v132 () Int)
+(declare-fun z3v133 () Int)
+(declare-fun z3v134 () Int)
+(declare-fun z3v135 () Int)
+(declare-fun z3v136 () Int)
+(declare-fun z3v137 () Int)
+(declare-fun z3v138 () Int)
+(declare-fun z3v139 () Int)
+(declare-fun z3v140 () Int)
+(declare-fun z3v141 () Int)
+(declare-fun z3v142 () Int)
+(declare-fun z3v144 () Int)
+(declare-fun z3v145 () Int)
+(declare-fun z3v146 () Int)
+(declare-fun z3v149 () Int)
+(declare-fun z3v151 () Int)
+(declare-fun z3v154 () Int)
+(declare-fun z3v155 () Int)
+(declare-fun z3v156 () Int)
+(declare-fun z3v157 () Int)
+(declare-fun z3v158 () Int)
+(declare-fun z3v159 () Int)
+(declare-fun z3v161 () Int)
+(declare-fun z3v163 () Int)
+(declare-fun z3v164 () Int)
+(declare-fun z3v165 () Int)
+(declare-fun z3v167 () Int)
+(declare-fun z3v170 () Int)
+(declare-fun z3v174 () Int)
+(declare-fun z3v175 () Int)
+(declare-fun z3v176 () Int)
+(declare-fun z3v179 () Int)
+(declare-fun z3v181 () Int)
+(declare-fun z3v182 () Int)
+(declare-fun z3v183 () Int)
+(declare-fun z3v184 () Int)
+(declare-fun z3v187 () Int)
+(declare-fun z3v188 () Int)
+(declare-fun z3v189 () Int)
+(declare-fun z3v190 () Int)
+(declare-fun z3f191 (Int) Int)
+(declare-fun z3f192 (Int) Int)
+(declare-fun z3v195 () Int)
+(declare-fun z3v196 () Int)
+(declare-fun z3v199 () Int)
+(declare-fun z3v200 () Int)
+(declare-fun z3v201 () Int)
+(declare-fun z3v202 () Int)
+(declare-fun z3v203 () Int)
+(declare-fun z3v206 () Int)
+(declare-fun z3v207 () Int)
+(declare-fun z3v208 () Int)
+(declare-fun z3v210 () Int)
+(declare-fun z3v211 () Int)
+(declare-fun z3v212 () Int)
+(declare-fun z3f213 (Int) Bool)
+(declare-fun z3f214 (Int) Int)
+(declare-fun z3v215 () Int)
+(declare-fun z3v216 () Int)
+(declare-fun z3v218 () Int)
+(declare-fun z3v220 () Int)
+(declare-fun z3v221 () Int)
+(declare-fun z3v222 () Int)
+(declare-fun z3v223 () Int)
+(declare-fun z3v224 () Int)
+(declare-fun z3v225 () Int)
+(declare-fun z3v226 () Int)
+(declare-fun z3v227 () Int)
+(declare-fun z3v228 () Int)
+(declare-fun z3v229 () Int)
+(declare-fun z3v230 () Int)
+(declare-fun z3v231 () Int)
+(declare-fun z3v233 () Int)
+(declare-fun z3v236 () Int)
+(declare-fun z3v242 () Int)
+(declare-fun z3v243 () Int)
+(declare-fun z3v244 () Int)
+(declare-fun z3v245 () Int)
+(declare-fun z3v247 () Int)
+(declare-fun z3v248 () Int)
+(declare-fun z3v249 () Int)
+(declare-fun z3v250 () Int)
+(declare-fun z3v251 () Int)
+(declare-fun z3v252 () Int)
+(declare-fun z3v253 () Int)
+(declare-fun z3v255 () Int)
+(declare-fun z3v256 () Int)
+(declare-fun z3v258 () Int)
+(declare-fun z3v259 () Int)
+(declare-fun z3v261 () Int)
+(declare-fun z3v262 () Int)
+(declare-fun z3v263 () Int)
+(declare-fun z3v264 () Int)
+(declare-fun z3v266 () Int)
+(declare-fun z3v268 () Int)
+(declare-fun z3v270 () Int)
+(declare-fun z3v271 () Int)
+(declare-fun z3v272 () Int)
+(declare-fun z3v274 () Int)
+(declare-fun z3v275 () Int)
+(declare-fun z3v276 () Int)
+(declare-fun z3v278 () Int)
+(declare-fun z3v279 () Int)
+(declare-fun z3v281 () Int)
+(declare-fun z3v282 () Int)
+(declare-fun z3v283 () Int)
+(declare-fun z3v284 () Int)
+(declare-fun z3v285 () Int)
+(declare-fun z3v287 () Int)
+(declare-fun z3v289 () Int)
+(declare-fun z3v290 () Int)
+(declare-fun z3v291 () Int)
+(declare-fun z3v292 () Int)
+(declare-fun z3v293 () Int)
+(declare-fun z3v296 () Int)
+(declare-fun z3v298 () Int)
+(declare-fun z3v299 () Int)
+(declare-fun z3f300 (Int Int) Int)
+(declare-fun z3v301 () Int)
+(declare-fun z3v302 () Int)
+(declare-fun z3v303 () Int)
+(declare-fun z3v304 () Int)
+(declare-fun z3v308 () Int)
+(declare-fun z3v309 () Int)
+(declare-fun z3v310 () Int)
+(declare-fun z3v314 () Int)
+(declare-fun z3v315 () Int)
+(declare-fun z3v316 () Int)
+(declare-fun z3v317 () Int)
+(declare-fun z3v318 () Int)
+(declare-fun z3v319 () Int)
+(declare-fun z3v320 () Int)
+(declare-fun z3v324 () Int)
+(declare-fun z3v325 () Int)
+(declare-fun z3v326 () Int)
+(declare-fun z3v327 () Int)
+(declare-fun z3v328 () Int)
+(declare-fun z3v330 () Int)
+(declare-fun z3v332 () Int)
+(declare-fun z3v333 () Int)
+(declare-fun z3v334 () Int)
+(declare-fun z3v335 () Int)
+(declare-fun z3v336 () Int)
+(declare-fun z3v337 () Int)
+(declare-fun z3v339 () Int)
+(declare-fun z3v340 () Int)
+(declare-fun z3v341 () Int)
+(declare-fun z3v342 () Int)
+(assert (= z3v342 z3v113))
+(assert (>= (z3f69 z3v342) 0))
+(assert (and (>= (z3f69 z3v113) 0) (>= (z3f69 z3v114) 0) (= (z3f72 z3v114) smt_set_emp) (= (z3f70 z3v114) smt_set_emp) (= (z3f69 z3v114) 0) (= (z3f76 z3v114) true) (>= (z3f69 z3v115) 0) (= (z3f72 z3v115) (ite (smt_set_mem z3v116 (z3f70 z3v113)) (smt_set_cup (smt_set_add smt_set_emp z3v116) (z3f72 z3v113)) (z3f72 z3v113))) (= (z3f70 z3v115) (smt_set_cup (smt_set_add smt_set_emp z3v116) (z3f70 z3v113))) (= (z3f69 z3v115) (+ 1 (z3f69 z3v113))) (= (z3f76 z3v115) false) (= z3v115 (z3f77 z3v11 [...]
+(assert (not (and (= (z3f72 z3v342) smt_set_emp) (not (smt_set_mem z3v116 (z3f70 z3v342))))))
+(check-sat)
diff --git a/test/regress/regress0/sets/jan30/UniqueZipper.hs.fqout.minimized10.smt2 b/test/regress/regress0/sets/jan30/UniqueZipper.hs.fqout.minimized10.smt2
new file mode 100644
index 0000000..df659f0
--- /dev/null
+++ b/test/regress/regress0/sets/jan30/UniqueZipper.hs.fqout.minimized10.smt2
@@ -0,0 +1,27 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+
+; Observed
+;
+; sat as output instead of unsat
+;
+; What was going on?
+;
+; The solver was unable to reason that (emptyset) cannot equal
+; (singleton 0). There were no membership predicates anywhere, just
+; equalities.
+;
+; Fix
+;
+; Add the propagation rule: (true) => (member x (singleton x))
+
+(declare-fun z3f70 (Int) (Set Int))
+(declare-fun z3v85 () Int)
+(declare-fun z3v86 () Int)
+(declare-fun z3v87 () Int)
+(declare-fun z3v90 () Int)
+
+(assert (= (z3f70 z3v90) (union (z3f70 z3v85) (union (as emptyset (Set Int)) (singleton z3v86)))))
+(assert (= (z3f70 z3v90) (z3f70 z3v87)))
+(assert (= (as emptyset (Set Int)) (z3f70 z3v87)))
+(check-sat)
diff --git a/test/regress/regress0/sets/jan30/UniqueZipper.hs.fqout.minimized1832.smt2 b/test/regress/regress0/sets/jan30/UniqueZipper.hs.fqout.minimized1832.smt2
new file mode 100644
index 0000000..af67a69
--- /dev/null
+++ b/test/regress/regress0/sets/jan30/UniqueZipper.hs.fqout.minimized1832.smt2
@@ -0,0 +1,18 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+(define-sort Elt () Int)
+(define-sort mySet ()
+  (Set Elt ))
+(define-fun smt_set_emp () mySet (as emptyset mySet))
+
+(declare-fun S () (Set Int))
+(declare-fun T () (Set Int))
+(declare-fun x () Int)
+
+(assert (or (not (= S smt_set_emp)) (member x T)))
+
+(assert (= smt_set_emp 
+           (ite (member x T) 
+                (union (union smt_set_emp (singleton x)) S) 
+                S)))
+(check-sat)
diff --git a/test/regress/regress0/sets/mar2014/UniqueZipper.hs.1030minimized.cvc4.smt2 b/test/regress/regress0/sets/mar2014/UniqueZipper.hs.1030minimized.cvc4.smt2
new file mode 100644
index 0000000..38477c4
--- /dev/null
+++ b/test/regress/regress0/sets/mar2014/UniqueZipper.hs.1030minimized.cvc4.smt2
@@ -0,0 +1,209 @@
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(define-sort Elt () Int)
+(define-sort mySet () (Set Elt ))
+(define-fun smt_set_emp () mySet (as emptyset mySet))
+(define-fun smt_set_mem ((x Elt) (s mySet)) Bool (member x s))
+(define-fun smt_set_add ((s mySet) (x Elt)) mySet (union s (singleton x)))
+(define-fun smt_set_cup ((s1 mySet) (s2 mySet)) mySet (union s1 s2))
+(define-fun smt_set_cap ((s1 mySet) (s2 mySet)) mySet (intersection s1 s2))
+(define-fun smt_set_dif ((s1 mySet) (s2 mySet)) mySet (setminus s1 s2))
+(define-fun smt_set_sub ((s1 mySet) (s2 mySet)) Bool (subset s1 s2))
+
+(declare-fun z3v66 () Int)
+(declare-fun z3v67 () Int)
+(assert (distinct z3v66 z3v67))
+
+(declare-fun z3f70 (Int) mySet)
+(declare-fun z3f72 (Int) mySet)
+(declare-fun z3f76 (Int) Bool)
+(declare-fun z3f77 (Int Int) Int)
+(declare-fun z3v78 () Int)
+(declare-fun z3f79 (Int) Bool)
+(declare-fun z3v80 () Int)
+(declare-fun z3f81 (Int) Int)
+(declare-fun z3v82 () Int)
+(declare-fun z3v83 () Int)
+(declare-fun z3v85 () Int)
+(declare-fun z3v86 () Int)
+(declare-fun z3v87 () Int)
+(declare-fun z3f88 () Int)
+(declare-fun z3v89 () Int)
+(declare-fun z3v90 () Int)
+(declare-fun z3v91 () Int)
+(declare-fun z3v92 () Int)
+(declare-fun z3v93 () Int)
+(declare-fun z3f94 (Int) Int)
+(declare-fun z3f95 (Int) Int)
+(declare-fun z3f96 (Int Int Int) Int)
+(declare-fun z3v97 () Int)
+(declare-fun z3v98 () Int)
+(declare-fun z3v99 () Int)
+(declare-fun z3v100 () Int)
+(declare-fun z3v101 () Int)
+(declare-fun z3v102 () Int)
+(declare-fun z3v103 () Int)
+(declare-fun z3v104 () Int)
+(declare-fun z3v105 () Int)
+(declare-fun z3v106 () Int)
+(declare-fun z3v107 () Int)
+(declare-fun z3v108 () Int)
+(declare-fun z3v109 () Int)
+(declare-fun z3v110 () Int)
+(declare-fun z3v113 () Int)
+(declare-fun z3v114 () Int)
+(declare-fun z3v115 () Int)
+(declare-fun z3v116 () Int)
+(declare-fun z3v117 () Int)
+(declare-fun z3v118 () Int)
+(declare-fun z3v120 () Int)
+(declare-fun z3v121 () Int)
+(declare-fun z3v122 () Int)
+(declare-fun z3v124 () Int)
+(declare-fun z3v125 () Int)
+(declare-fun z3v126 () Int)
+(declare-fun z3v127 () Int)
+(declare-fun z3v128 () Int)
+(declare-fun z3v129 () Int)
+(declare-fun z3v131 () Int)
+(declare-fun z3v132 () Int)
+(declare-fun z3v133 () Int)
+(declare-fun z3v134 () Int)
+(declare-fun z3v135 () Int)
+(declare-fun z3v136 () Int)
+(declare-fun z3v137 () Int)
+(declare-fun z3v138 () Int)
+(declare-fun z3v139 () Int)
+(declare-fun z3v140 () Int)
+(declare-fun z3v141 () Int)
+(declare-fun z3v142 () Int)
+(declare-fun z3v144 () Int)
+(declare-fun z3v145 () Int)
+(declare-fun z3v146 () Int)
+(declare-fun z3v149 () Int)
+(declare-fun z3v151 () Int)
+(declare-fun z3v154 () Int)
+(declare-fun z3v155 () Int)
+(declare-fun z3v156 () Int)
+(declare-fun z3v157 () Int)
+(declare-fun z3v158 () Int)
+(declare-fun z3v159 () Int)
+(declare-fun z3v161 () Int)
+(declare-fun z3v163 () Int)
+(declare-fun z3v164 () Int)
+(declare-fun z3v165 () Int)
+(declare-fun z3v167 () Int)
+(declare-fun z3v170 () Int)
+(declare-fun z3v174 () Int)
+(declare-fun z3v175 () Int)
+(declare-fun z3v176 () Int)
+(declare-fun z3v179 () Int)
+(declare-fun z3v181 () Int)
+(declare-fun z3v182 () Int)
+(declare-fun z3v183 () Int)
+(declare-fun z3v184 () Int)
+(declare-fun z3v187 () Int)
+(declare-fun z3v188 () Int)
+(declare-fun z3v189 () Int)
+(declare-fun z3v190 () Int)
+(declare-fun z3f191 (Int) Int)
+(declare-fun z3f192 (Int) Int)
+(declare-fun z3v195 () Int)
+(declare-fun z3v196 () Int)
+(declare-fun z3v199 () Int)
+(declare-fun z3v200 () Int)
+(declare-fun z3v201 () Int)
+(declare-fun z3v202 () Int)
+(declare-fun z3v203 () Int)
+(declare-fun z3v206 () Int)
+(declare-fun z3v207 () Int)
+(declare-fun z3v208 () Int)
+(declare-fun z3v210 () Int)
+(declare-fun z3v211 () Int)
+(declare-fun z3v212 () Int)
+(declare-fun z3f213 (Int) Bool)
+(declare-fun z3f214 (Int) Int)
+(declare-fun z3v215 () Int)
+(declare-fun z3v216 () Int)
+(declare-fun z3v218 () Int)
+(declare-fun z3v220 () Int)
+(declare-fun z3v221 () Int)
+(declare-fun z3v222 () Int)
+(declare-fun z3v223 () Int)
+(declare-fun z3v224 () Int)
+(declare-fun z3v225 () Int)
+(declare-fun z3v226 () Int)
+(declare-fun z3v227 () Int)
+(declare-fun z3v228 () Int)
+(declare-fun z3v229 () Int)
+(declare-fun z3v230 () Int)
+(declare-fun z3v231 () Int)
+(declare-fun z3v233 () Int)
+(declare-fun z3v236 () Int)
+(declare-fun z3v242 () Int)
+(declare-fun z3v243 () Int)
+(declare-fun z3v244 () Int)
+(declare-fun z3v245 () Int)
+(declare-fun z3v247 () Int)
+(declare-fun z3v248 () Int)
+(declare-fun z3v249 () Int)
+(declare-fun z3v250 () Int)
+(declare-fun z3v251 () Int)
+(declare-fun z3v252 () Int)
+(declare-fun z3v253 () Int)
+(declare-fun z3v255 () Int)
+(declare-fun z3v256 () Int)
+(declare-fun z3v258 () Int)
+(declare-fun z3v259 () Int)
+(declare-fun z3v261 () Int)
+(declare-fun z3v262 () Int)
+(declare-fun z3v263 () Int)
+(declare-fun z3v264 () Int)
+(declare-fun z3v266 () Int)
+(declare-fun z3v268 () Int)
+(declare-fun z3v270 () Int)
+(declare-fun z3v271 () Int)
+(declare-fun z3v272 () Int)
+
+(assert (and (not (smt_set_mem z3v132 (z3f70 z3v131)))
+	     (= (z3f72 z3v131) smt_set_emp)
+	     (= (z3f72 z3v133) smt_set_emp)
+	     (= (z3f72 z3v242)
+		(ite (smt_set_mem z3v271 (z3f70 z3v270))
+		     (smt_set_cup (smt_set_add smt_set_emp z3v271)
+				  (z3f72 z3v270))
+		     (z3f72 z3v270)))
+	     (= (z3f70 z3v242)
+		(smt_set_cup (smt_set_add smt_set_emp z3v271)
+			     (z3f70 z3v270)))
+	     (= z3v242 (z3f77 z3v271 z3v270))
+	     (= z3v242 z3v243)
+	     (smt_set_sub (z3f70 z3v242)
+	     		  (z3f70 z3v244))
+	     (= (z3f72 z3v242) smt_set_emp)
+	     (smt_set_sub (z3f70 z3v243)
+			  (z3f70 z3v244))
+	     (= (z3f72 z3v243) smt_set_emp)
+	     (= (z3f72 z3v244)
+		(ite (smt_set_mem z3v132 (z3f70 z3v131))
+		     (smt_set_cup (smt_set_add smt_set_emp z3v132)
+				  (z3f72 z3v131))
+		     (z3f72 z3v131)))
+	     (= (z3f70 z3v244)
+	     	(smt_set_cup (smt_set_add smt_set_emp z3v132)
+	     		     (z3f70 z3v131)))
+	     (= (z3f94 z3v134) z3v133)
+	     (= (z3f95 z3v134) z3v131)
+	     (= z3v134 z3v135)
+	     (= (smt_set_cap (z3f70 (z3f94 z3v134))
+			     (z3f70 (z3f95 z3v134))) smt_set_emp)
+	     (= (smt_set_cap (z3f70 (z3f94 z3v135))
+			     (z3f70 (z3f95 z3v135))) smt_set_emp)
+	     (= z3v272 z3v133)
+	     (= (z3f72 z3v272) smt_set_emp)
+  	     (= (z3f81 z3v80) z3v80)
+	     (= (z3f81 z3v82) z3v82)
+	     (= (z3f81 z3v83) z3v83)
+	     ))
+
+(check-sat)
diff --git a/test/regress/regress0/sets/mar2014/UniqueZipper.hs.1030minimized2.cvc4.smt2 b/test/regress/regress0/sets/mar2014/UniqueZipper.hs.1030minimized2.cvc4.smt2
new file mode 100644
index 0000000..e282e44
--- /dev/null
+++ b/test/regress/regress0/sets/mar2014/UniqueZipper.hs.1030minimized2.cvc4.smt2
@@ -0,0 +1,202 @@
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(define-sort Elt () Int)
+(define-sort mySet () (Set Elt ))
+(define-fun smt_set_emp () mySet (as emptyset mySet))
+(define-fun smt_set_mem ((x Elt) (s mySet)) Bool (member x s))
+(define-fun smt_set_add ((s mySet) (x Elt)) mySet (union s (singleton x)))
+(define-fun smt_set_cup ((s1 mySet) (s2 mySet)) mySet (union s1 s2))
+(define-fun smt_set_cap ((s1 mySet) (s2 mySet)) mySet (intersection s1 s2))
+(define-fun smt_set_dif ((s1 mySet) (s2 mySet)) mySet (setminus s1 s2))
+(define-fun smt_set_sub ((s1 mySet) (s2 mySet)) Bool (subset s1 s2))
+
+(declare-fun z3f70 (Int) mySet)
+(declare-fun z3f72 (Int) mySet)
+(declare-fun z3f76 (Int) Bool)
+(declare-fun z3f77 (Int Int) Int)
+(declare-fun z3v78 () Int)
+(declare-fun z3f79 (Int) Bool)
+(declare-fun z3v80 () Int)
+(declare-fun z3f81 (Int) Int)
+(declare-fun z3v82 () Int)
+(declare-fun z3v83 () Int)
+(declare-fun z3v85 () Int)
+(declare-fun z3v86 () Int)
+(declare-fun z3v87 () Int)
+(declare-fun z3f88 () Int)
+(declare-fun z3v89 () Int)
+(declare-fun z3v90 () Int)
+(declare-fun z3v91 () Int)
+(declare-fun z3v92 () Int)
+(declare-fun z3v93 () Int)
+(declare-fun z3f94 (Int) Int)
+(declare-fun z3f95 (Int) Int)
+(declare-fun z3f96 (Int Int Int) Int)
+(declare-fun z3v97 () Int)
+(declare-fun z3v98 () Int)
+(declare-fun z3v99 () Int)
+(declare-fun z3v100 () Int)
+(declare-fun z3v101 () Int)
+(declare-fun z3v102 () Int)
+(declare-fun z3v103 () Int)
+(declare-fun z3v104 () Int)
+(declare-fun z3v105 () Int)
+(declare-fun z3v106 () Int)
+(declare-fun z3v107 () Int)
+(declare-fun z3v108 () Int)
+(declare-fun z3v109 () Int)
+(declare-fun z3v110 () Int)
+(declare-fun z3v113 () Int)
+(declare-fun z3v114 () Int)
+(declare-fun z3v115 () Int)
+(declare-fun z3v116 () Int)
+(declare-fun z3v117 () Int)
+(declare-fun z3v118 () Int)
+(declare-fun z3v120 () Int)
+(declare-fun z3v121 () Int)
+(declare-fun z3v122 () Int)
+(declare-fun z3v124 () Int)
+(declare-fun z3v125 () Int)
+(declare-fun z3v126 () Int)
+(declare-fun z3v127 () Int)
+(declare-fun z3v128 () Int)
+(declare-fun z3v129 () Int)
+(declare-fun z3v131 () Int)
+(declare-fun z3v132 () Int)
+(declare-fun z3v133 () Int)
+(declare-fun z3v134 () Int)
+(declare-fun z3v135 () Int)
+(declare-fun z3v136 () Int)
+(declare-fun z3v137 () Int)
+(declare-fun z3v138 () Int)
+(declare-fun z3v139 () Int)
+(declare-fun z3v140 () Int)
+(declare-fun z3v141 () Int)
+(declare-fun z3v142 () Int)
+(declare-fun z3v144 () Int)
+(declare-fun z3v145 () Int)
+(declare-fun z3v146 () Int)
+(declare-fun z3v149 () Int)
+(declare-fun z3v151 () Int)
+(declare-fun z3v154 () Int)
+(declare-fun z3v155 () Int)
+(declare-fun z3v156 () Int)
+(declare-fun z3v157 () Int)
+(declare-fun z3v158 () Int)
+(declare-fun z3v159 () Int)
+(declare-fun z3v161 () Int)
+(declare-fun z3v163 () Int)
+(declare-fun z3v164 () Int)
+(declare-fun z3v165 () Int)
+(declare-fun z3v167 () Int)
+(declare-fun z3v170 () Int)
+(declare-fun z3v174 () Int)
+(declare-fun z3v175 () Int)
+(declare-fun z3v176 () Int)
+(declare-fun z3v179 () Int)
+(declare-fun z3v181 () Int)
+(declare-fun z3v182 () Int)
+(declare-fun z3v183 () Int)
+(declare-fun z3v184 () Int)
+(declare-fun z3v187 () Int)
+(declare-fun z3v188 () Int)
+(declare-fun z3v189 () Int)
+(declare-fun z3v190 () Int)
+(declare-fun z3f191 (Int) Int)
+(declare-fun z3f192 (Int) Int)
+(declare-fun z3v195 () Int)
+(declare-fun z3v196 () Int)
+(declare-fun z3v199 () Int)
+(declare-fun z3v200 () Int)
+(declare-fun z3v201 () Int)
+(declare-fun z3v202 () Int)
+(declare-fun z3v203 () Int)
+(declare-fun z3v206 () Int)
+(declare-fun z3v207 () Int)
+(declare-fun z3v208 () Int)
+(declare-fun z3v210 () Int)
+(declare-fun z3v211 () Int)
+(declare-fun z3v212 () Int)
+(declare-fun z3f213 (Int) Bool)
+(declare-fun z3f214 (Int) Int)
+(declare-fun z3v215 () Int)
+(declare-fun z3v216 () Int)
+(declare-fun z3v218 () Int)
+(declare-fun z3v220 () Int)
+(declare-fun z3v221 () Int)
+(declare-fun z3v222 () Int)
+(declare-fun z3v223 () Int)
+(declare-fun z3v224 () Int)
+(declare-fun z3v225 () Int)
+(declare-fun z3v226 () Int)
+(declare-fun z3v227 () Int)
+(declare-fun z3v228 () Int)
+(declare-fun z3v229 () Int)
+(declare-fun z3v230 () Int)
+(declare-fun z3v231 () Int)
+(declare-fun z3v233 () Int)
+(declare-fun z3v236 () Int)
+(declare-fun z3v242 () Int)
+(declare-fun z3v243 () Int)
+(declare-fun z3v244 () Int)
+(declare-fun z3v245 () Int)
+(declare-fun z3v247 () Int)
+(declare-fun z3v248 () Int)
+(declare-fun z3v249 () Int)
+(declare-fun z3v250 () Int)
+(declare-fun z3v251 () Int)
+(declare-fun z3v252 () Int)
+(declare-fun z3v253 () Int)
+(declare-fun z3v255 () Int)
+(declare-fun z3v256 () Int)
+(declare-fun z3v258 () Int)
+(declare-fun z3v259 () Int)
+(declare-fun z3v261 () Int)
+(declare-fun z3v262 () Int)
+(declare-fun z3v263 () Int)
+(declare-fun z3v264 () Int)
+(declare-fun z3v266 () Int)
+(declare-fun z3v268 () Int)
+(declare-fun z3v270 () Int)
+(declare-fun z3v271 () Int)
+(declare-fun z3v272 () Int)
+
+
+(declare-fun z3v66 () Int)
+(declare-fun z3v67 () Int)
+(assert (distinct z3v66 z3v67))
+(assert (not (smt_set_mem z3v132 (z3f70 z3v131))))
+(assert (= (z3f72 z3v131) smt_set_emp))
+(assert (= (z3f72 z3v242)
+           (ite (smt_set_mem z3v271 (z3f70 z3v270))
+                (smt_set_cup (smt_set_add smt_set_emp z3v271)
+                             (z3f72 z3v270))
+                (z3f72 z3v270))))
+(assert (= (z3f70 z3v242)
+           (smt_set_cup (smt_set_add smt_set_emp z3v271)
+                        (z3f70 z3v270))))
+(assert (= z3v242 (z3f77 z3v271 z3v270)))
+(assert (= z3v242 z3v243))
+(assert (subset (z3f70 z3v242)
+                  (z3f70 z3v244)))
+(assert (= (z3f72 z3v243) smt_set_emp))
+(assert (= (z3f72 z3v244)
+           (ite (smt_set_mem z3v132 (z3f70 z3v131))
+                (smt_set_cup (smt_set_add smt_set_emp z3v132)
+                             (z3f72 z3v131))
+                (z3f72 z3v131))))
+(assert (= (z3f70 z3v244)
+           (smt_set_cup (smt_set_add smt_set_emp z3v132)
+                        (z3f70 z3v131))))
+(assert (= (z3f94 z3v134) z3v133))
+(assert (= (z3f95 z3v134) z3v131))
+(assert (= z3v134 z3v135))
+(assert (= (smt_set_cap (z3f70 (z3f94 z3v135))
+                        (z3f70 (z3f95 z3v135))) smt_set_emp))
+(assert (= z3v272 z3v133))
+(assert (= (z3f72 z3v272) smt_set_emp))
+(assert (= (z3f81 z3v80) z3v80))
+(assert (= (z3f81 z3v82) z3v82))
+(assert (= (z3f81 z3v83) z3v83))
+
+(check-sat)
diff --git a/test/regress/regress0/sets/mar2014/lemmabug-ListElts317minimized.smt2 b/test/regress/regress0/sets/mar2014/lemmabug-ListElts317minimized.smt2
new file mode 100644
index 0000000..0fc8ca0
--- /dev/null
+++ b/test/regress/regress0/sets/mar2014/lemmabug-ListElts317minimized.smt2
@@ -0,0 +1,89 @@
+; EXPECT: sat
+
+; Observed behavior:
+;   --check-model failed for set-term (union (z3f69 z3v151) (singleton z3v143))
+; with different set of elements in the model for representative and the node
+; itself.
+;
+; Issue:
+;   The trouble with data structure being mainted to ensure that things
+; for which lemmas have been generated are not generated again. This
+; data structure (d_pendingEverInserted) needs to be user context
+; dependent. The bug was in the sequence of steps from requesting that
+; a lemma be generated to when it actually was. Sequence was:
+; addToPending (and also adds to pending ever inserted) ->
+; isComplete (might remove things from pending if requirment met in other ways) ->
+; getLemma (actually generated the lemma, if requirement not already met)
+;
+; Resolution:
+;   adding terms to d_pendingEverInserted was moved from addToPending()
+; to getLemma().
+
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+(define-sort Elt () Int)
+(define-sort mySet () (Set Elt ))
+(define-fun smt_set_emp () mySet (as emptyset mySet))
+(define-fun smt_set_mem ((x Elt) (s mySet)) Bool (member x s))
+(define-fun smt_set_add ((s mySet) (x Elt)) mySet (union s (singleton x)))
+(define-fun smt_set_cup ((s1 mySet) (s2 mySet)) mySet (union s1 s2))
+(define-fun smt_set_cap ((s1 mySet) (s2 mySet)) mySet (intersection s1 s2))
+;(define-fun smt_set_com ((s mySet)) mySet ((_ map not) s))
+(define-fun smt_set_dif ((s1 mySet) (s2 mySet)) mySet (setminus s1 s2))
+;(define-fun smt_set_sub ((s1 mySet) (s2 mySet)) Bool (= smt_set_emp (smt_set_dif s1 s2)))
+(define-fun smt_set_sub ((s1 mySet) (s2 mySet)) Bool (subset s1 s2))
+
+(declare-fun z3v58 () Int)
+(declare-fun z3v59 () Int)
+(assert (distinct z3v58 z3v59))
+
+(declare-fun z3f60 (Int) Bool)
+(declare-fun z3v61 () Int)
+(declare-fun z3f62 (Int) Int)
+(declare-fun z3v63 () Int)
+(declare-fun z3v64 () Int)
+(declare-fun z3v67 () Int)
+(declare-fun z3f68 (Int) Int)
+(declare-fun z3f69 (Int) mySet)
+(declare-fun z3f70 (Int) mySet)
+(declare-fun z3f71 (Int) Bool)
+(declare-fun z3v90 () Int)
+(declare-fun z3v91 () Int)
+(declare-fun z3f92 (Int Int) Int)
+(declare-fun z3v140 () Int)
+(declare-fun z3v141 () Int)
+(declare-fun z3v142 () Int)
+(declare-fun z3v143 () Int)
+(declare-fun z3v144 () Int)
+(declare-fun z3v145 () Int)
+(declare-fun z3v147 () Int)
+(declare-fun z3v150 () Int)
+(declare-fun z3v151 () Int)
+(declare-fun z3v152 () Int)
+
+(assert (not (= (z3f69 z3v152)
+                (z3f69 z3v140))))
+
+(assert (= (z3f69 z3v151)
+           (smt_set_cup (z3f69 z3v141)
+                        (z3f69 z3v140))))
+
+(assert (= (z3f69 z3v152)
+           (smt_set_cup (singleton z3v143) (z3f69 z3v151))))
+
+(assert (= (z3f70 z3v152)
+           (smt_set_cup (singleton z3v143) (z3f70 z3v151))))
+
+(assert (and
+        (= (z3f69 z3v142)
+           (smt_set_cup (singleton z3v143) (z3f69 z3v141)))
+        (= (z3f70 z3v142)
+           (smt_set_cup (singleton z3v143) (z3f70 z3v141)))
+         (= z3v142 (z3f92 z3v143 z3v141))
+         (= z3v142 z3v144)
+         (= (z3f62 z3v61) z3v61)
+         (= (z3f62 z3v63) z3v63)
+         )
+        )
+
+(check-sat)
diff --git a/test/regress/regress0/sets/mar2014/sharing-preregister.smt2 b/test/regress/regress0/sets/mar2014/sharing-preregister.smt2
new file mode 100644
index 0000000..d851ca3
--- /dev/null
+++ b/test/regress/regress0/sets/mar2014/sharing-preregister.smt2
@@ -0,0 +1,12 @@
+; EXPECT: unsat
+(set-logic QF_UFLIAFS)
+(set-info :status sat)
+(declare-fun a () Int)
+(declare-fun b () Int)
+(declare-fun x () (Set Int))
+(declare-fun y () (Set Int))
+(assert (= x (singleton a)))
+(assert (= y (singleton b)))
+(assert (not (= x y)))
+(assert (and (< 1 a) (< a 3) (< 1 b) (< b 3)))
+(check-sat)
diff --git a/test/regress/regress0/sets/mar2014/small.smt2 b/test/regress/regress0/sets/mar2014/small.smt2
new file mode 100644
index 0000000..635c795
--- /dev/null
+++ b/test/regress/regress0/sets/mar2014/small.smt2
@@ -0,0 +1,18 @@
+; EXPECT: unsat
+; COMMAND-LINE: --simplification=none
+
+; demostrates core issue with UniqueZipper.hs.1030minimized.cvc4.smt2
+; unlike original benchmark, this is unsat.
+
+(set-logic QF_UFLIAFS)
+(declare-fun x () Int)
+(declare-fun y () Int)
+(declare-fun z () Int)
+(declare-fun a () (Set Int))
+(declare-fun b () (Set Int))
+(assert (member x (union a b)))
+(assert (not (member y a)))
+(assert (not (member z b)))
+(assert (= z y))
+(assert (= x y))
+(check-sat)
diff --git a/test/regress/regress0/sets/mar2014/smaller.smt2 b/test/regress/regress0/sets/mar2014/smaller.smt2
new file mode 100644
index 0000000..d656520
--- /dev/null
+++ b/test/regress/regress0/sets/mar2014/smaller.smt2
@@ -0,0 +1,15 @@
+; EXPECT: sat
+; COMMAND-LINE: --simplification=none
+
+; demostrates core issue with UniqueZipper.hs.1030minimized.cvc4.smt2
+; fails check-model, even though answer is correct
+
+(set-logic QF_UFLIAFS)
+(declare-fun x () Int)
+(declare-fun y () Int)
+(declare-fun a () (Set Int))
+(declare-fun b () (Set Int))
+(assert (member x (union a b)))
+(assert (not (member y a)))
+(assert (= x y))
+(check-sat)
diff --git a/test/regress/regress0/sets/rec_copy_loop_check_heap_access_43_4.smt2 b/test/regress/regress0/sets/rec_copy_loop_check_heap_access_43_4.smt2
new file mode 100644
index 0000000..61fbee1
--- /dev/null
+++ b/test/regress/regress0/sets/rec_copy_loop_check_heap_access_43_4.smt2
@@ -0,0 +1,149 @@
+(set-option :print-success false)
+(set-logic AUFLIAFS)
+(set-info :status unsat)
+(declare-sort Loc 0)
+(define-sort SetLoc () (Set Loc))
+(define-sort SetInt () (Set Int))
+(declare-sort FldLoc 0)
+(declare-sort FldInt 0)
+(declare-fun null$0 () Loc)
+(declare-fun read$0 (FldLoc Loc) Loc)
+(declare-fun Btwn$0 (FldLoc Loc Loc Loc) Bool)
+(declare-fun Alloc$0 () SetLoc)
+(declare-fun Alloc_2$0 () SetLoc)
+(declare-fun FP$0 () SetLoc)
+(declare-fun FP_3$0 () SetLoc)
+(declare-fun FP_Caller$0 () SetLoc)
+(declare-fun FP_Caller_2$0 () SetLoc)
+(declare-fun cp$0 () Loc)
+(declare-fun cp_1$0 () Loc)
+(declare-fun curr$0 () Loc)
+(declare-fun lseg_domain$0 (FldLoc Loc Loc) SetLoc)
+(declare-fun lseg_struct$0 (SetLoc FldLoc Loc Loc) Bool)
+(declare-fun next$0 () FldLoc)
+(declare-fun old_cp_2$0 () Loc)
+(declare-fun sk_?X_36$0 () SetLoc)
+(declare-fun sk_?X_37$0 () SetLoc)
+(declare-fun sk_?X_38$0 () SetLoc)
+(declare-fun tmp_1$0 () Loc)
+
+(assert (! (forall ((?y Loc))
+           (or (not (Btwn$0 next$0 null$0 ?y ?y)) (= null$0 ?y)
+               (Btwn$0 next$0 null$0 (read$0 next$0 null$0) ?y)))
+   :named btwn_reach_6))
+
+(assert (! (forall ((?y Loc))
+           (or (not (= (read$0 next$0 null$0) null$0))
+               (not (Btwn$0 next$0 null$0 ?y ?y)) (= null$0 ?y)))
+   :named btwn_cycl_6))
+
+(assert (! (Btwn$0 next$0 null$0 (read$0 next$0 null$0) (read$0 next$0 null$0))
+   :named btwn_step_6))
+
+(assert (! (= (read$0 next$0 null$0) null$0) :named read_null_6))
+
+(assert (! (forall ((l1 Loc))
+           (or
+               (and (Btwn$0 next$0 curr$0 l1 null$0)
+                    (member l1 (lseg_domain$0 next$0 curr$0 null$0))
+                    (not (= l1 null$0)))
+               (and (or (= l1 null$0) (not (Btwn$0 next$0 curr$0 l1 null$0)))
+                    (not (member l1 (lseg_domain$0 next$0 curr$0 null$0))))))
+   :named lseg_footprint_14))
+
+(assert (! (not (member tmp_1$0 Alloc$0)) :named new_42_10))
+
+(assert (! (not (member null$0 Alloc$0))
+   :named initial_footprint_of_rec_copy_loop_34_11_4))
+
+(assert (! (not (= curr$0 null$0)) :named if_else_37_6))
+
+(assert (! (lseg_struct$0 sk_?X_37$0 next$0 curr$0 null$0)
+   :named precondition_of_rec_copy_loop_34_11_16))
+
+(assert (! (= sk_?X_38$0 (lseg_domain$0 next$0 cp$0 null$0))
+   :named precondition_of_rec_copy_loop_34_11_17))
+
+(assert (! (= sk_?X_36$0 FP$0) :named precondition_of_rec_copy_loop_34_11_18))
+
+(assert (! (= (as emptyset SetLoc) (intersection sk_?X_38$0 sk_?X_37$0))
+   :named precondition_of_rec_copy_loop_34_11_19))
+
+(assert (! (= old_cp_2$0 cp$0) :named assign_41_4))
+
+(assert (! (= FP_Caller_2$0 (setminus FP_Caller$0 FP$0)) :named assign_37_2_2))
+
+(assert (! (= Alloc_2$0 (union Alloc$0 (singleton tmp_1$0))) :named assign_42_10))
+
+(assert (! (or (Btwn$0 next$0 cp$0 null$0 null$0)
+       (not (lseg_struct$0 sk_?X_38$0 next$0 cp$0 null$0)))
+   :named unnamed_22))
+
+(assert (! (forall ((l1 Loc))
+           (or
+               (and (Btwn$0 next$0 cp$0 l1 null$0)
+                    (member l1 (lseg_domain$0 next$0 cp$0 null$0))
+                    (not (= l1 null$0)))
+               (and (or (= l1 null$0) (not (Btwn$0 next$0 cp$0 l1 null$0)))
+                    (not (member l1 (lseg_domain$0 next$0 cp$0 null$0))))))
+   :named lseg_footprint_15))
+
+(assert (! (not (member cp_1$0 FP_3$0)) :named check_heap_access_43_4))
+
+(assert (! (not (= tmp_1$0 null$0)) :named new_42_10_1))
+
+(assert (! (lseg_struct$0 sk_?X_38$0 next$0 cp$0 null$0)
+   :named precondition_of_rec_copy_loop_34_11_20))
+
+(assert (! (= FP_Caller$0 (union FP$0 FP_Caller$0))
+   :named precondition_of_rec_copy_loop_34_11_21))
+
+(assert (! (= sk_?X_37$0 (lseg_domain$0 next$0 curr$0 null$0))
+   :named precondition_of_rec_copy_loop_34_11_22))
+
+(assert (! (= sk_?X_36$0 (union sk_?X_37$0 sk_?X_38$0))
+   :named precondition_of_rec_copy_loop_34_11_23))
+
+(assert (! (= Alloc$0 (union FP_Caller$0 Alloc$0))
+   :named initial_footprint_of_rec_copy_loop_34_11_5))
+
+(assert (! (= cp_1$0 tmp_1$0) :named assign_42_4))
+
+(assert (! (= FP_3$0 (union FP$0 (singleton tmp_1$0))) :named assign_42_10_1))
+
+(assert (! (or (Btwn$0 next$0 curr$0 null$0 null$0)
+       (not (lseg_struct$0 sk_?X_37$0 next$0 curr$0 null$0)))
+   :named unnamed_23))
+
+(assert (! (forall ((?x Loc)) (Btwn$0 next$0 ?x ?x ?x)) :named btwn_refl_6))
+
+(assert (! (forall ((?x Loc) (?y Loc)) (or (not (Btwn$0 next$0 ?x ?y ?x)) (= ?x ?y)))
+   :named btwn_sndw_6))
+
+(assert (! (forall ((?x Loc) (?y Loc) (?z Loc))
+           (or (not (Btwn$0 next$0 ?x ?y ?y)) (not (Btwn$0 next$0 ?x ?z ?z))
+               (Btwn$0 next$0 ?x ?y ?z) (Btwn$0 next$0 ?x ?z ?y)))
+   :named btwn_ord1_6))
+
+(assert (! (forall ((?x Loc) (?y Loc) (?z Loc))
+           (or (not (Btwn$0 next$0 ?x ?y ?z))
+               (and (Btwn$0 next$0 ?x ?y ?y) (Btwn$0 next$0 ?y ?z ?z))))
+   :named btwn_ord2_6))
+
+(assert (! (forall ((?x Loc) (?y Loc) (?z Loc))
+           (or (not (Btwn$0 next$0 ?x ?y ?y)) (not (Btwn$0 next$0 ?y ?z ?z))
+               (Btwn$0 next$0 ?x ?z ?z)))
+   :named btwn_trn1_6))
+
+(assert (! (forall ((?u Loc) (?x Loc) (?y Loc) (?z Loc))
+           (or (not (Btwn$0 next$0 ?x ?y ?z)) (not (Btwn$0 next$0 ?y ?u ?z))
+               (and (Btwn$0 next$0 ?x ?y ?u) (Btwn$0 next$0 ?x ?u ?z))))
+   :named btwn_trn2_6))
+
+(assert (! (forall ((?u Loc) (?x Loc) (?y Loc) (?z Loc))
+           (or (not (Btwn$0 next$0 ?x ?y ?z)) (not (Btwn$0 next$0 ?x ?u ?y))
+               (and (Btwn$0 next$0 ?x ?u ?z) (Btwn$0 next$0 ?u ?y ?z))))
+   :named btwn_trn3_6))
+
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/sets/setofsets-disequal.smt2 b/test/regress/regress0/sets/setofsets-disequal.smt2
new file mode 100644
index 0000000..1702aab
--- /dev/null
+++ b/test/regress/regress0/sets/setofsets-disequal.smt2
@@ -0,0 +1,64 @@
+; On a production build (as of 2014-05-16), takes several minutes
+; to finish (2967466 decisions).
+
+(set-logic QF_BVFS)
+(set-info :status unsat)
+
+(define-sort myset () (Set (Set (_ BitVec 1))))
+(declare-fun S () myset)
+
+; 0 elements
+(assert (not (= S (as emptyset myset))))
+
+; 1 element is S
+(assert (not (= S (singleton (as emptyset (Set (_ BitVec 1)))))))
+(assert (not (= S (singleton (singleton (_ bv0 1)) ))))
+(assert (not (= S (singleton (singleton (_ bv1 1)) ))))
+(assert (not (= S (singleton (union (singleton (_ bv0 1))
+                                  (singleton (_ bv1 1)))))))
+
+; 2 elements in S
+(assert (not (= S (union (singleton (as emptyset (Set (_ BitVec 1))))
+                         (singleton (singleton (_ bv0 1)))) )))
+(assert (not (= S (union (singleton (as emptyset (Set (_ BitVec 1))))
+                         (singleton (singleton (_ bv1 1)))))))
+(assert (not (= S (union (singleton (as emptyset (Set (_ BitVec 1))))
+                         (singleton (union (singleton (_ bv0 1))
+                                         (singleton (_ bv1 1))))))))
+(assert (not (= S (union (singleton (union (singleton (_ bv0 1))
+                                         (singleton (_ bv1 1))))
+                         (singleton (singleton (_ bv0 1)))) )))
+(assert (not (= S (union (singleton (singleton (_ bv0 1)))
+                         (singleton (singleton (_ bv1 1))))   )))
+(assert (not (= S (union (singleton (union (singleton (_ bv0 1))
+                                         (singleton (_ bv1 1))))
+                         (singleton (singleton (_ bv1 1)))))))
+
+; 3 elements in S
+(assert (not (= S (union (singleton (singleton (_ bv1 1)))
+                         (union (singleton (as emptyset (Set (_ BitVec 1))))
+                                (singleton (singleton (_ bv0 1)))))  )))
+(assert (not (= S (union (singleton (union (singleton (_ bv0 1))
+                                         (singleton (_ bv1 1))))
+                         (union (singleton (as emptyset (Set (_ BitVec 1))))
+                                (singleton (singleton (_ bv1 1)))))  )))
+(assert (not (= S (union (singleton (union (singleton (_ bv0 1))
+                                         (singleton (_ bv1 1))))
+                         (union (singleton (singleton (_ bv0 1)))
+                                (singleton (singleton (_ bv1 1)))))  )))
+(assert (not (= S (union (singleton (union (singleton (_ bv0 1))
+                                         (singleton (_ bv1 1))))
+                         (union (singleton (as emptyset (Set (_ BitVec 1))))
+                                (singleton (singleton (_ bv0 1)))))  )))
+
+; 4 elements in S
+(assert (not (= S (union (singleton (union (singleton (_ bv0 1))
+                                         (singleton (_ bv1 1))))
+                         (union (singleton (singleton (_ bv1 1)))
+                                (union (singleton (as emptyset (Set (_ BitVec 1))))
+                                       (singleton (singleton (_ bv0 1))))))  )))
+
+(check-sat)
+
+; if you delete any of the above assertions, you should get sat
+; (get-model)
diff --git a/test/regress/regress0/sets/sets-equal.smt2 b/test/regress/regress0/sets/sets-equal.smt2
new file mode 100644
index 0000000..8fd29a2
--- /dev/null
+++ b/test/regress/regress0/sets/sets-equal.smt2
@@ -0,0 +1,14 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-fun x () Int)
+(declare-fun y () Int)
+(declare-fun z () Int)
+(assert (= x y))
+(declare-fun a () (Set Int))
+(declare-fun b () (Set Int))
+(assert (not (member x a)))
+(assert (member y (union a b)))
+(assert (= x z))
+(assert (not (member z a)))
+(assert (= a b))
+(check-sat)
diff --git a/test/regress/regress0/sets/sets-inter.smt2 b/test/regress/regress0/sets/sets-inter.smt2
new file mode 100644
index 0000000..d3d8a90
--- /dev/null
+++ b/test/regress/regress0/sets/sets-inter.smt2
@@ -0,0 +1,11 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(define-sort SetInt () (Set Int))
+(declare-fun a () (Set Int))
+(declare-fun b () (Set Int))
+(declare-fun x () Int)
+;(assert (not (member x a)))
+(assert (member x (intersection a b)))
+(assert (not (member x b)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/sets/sets-sample.smt2 b/test/regress/regress0/sets/sets-sample.smt2
new file mode 100644
index 0000000..3bc2da0
--- /dev/null
+++ b/test/regress/regress0/sets/sets-sample.smt2
@@ -0,0 +1,70 @@
+; COMMAND-LINE: --incremental
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+(set-logic ALL_SUPPORTED)
+(define-sort SetInt () (Set Int))
+
+; Something simple to test parsing
+(push 1)
+(declare-fun a () (Set Int))
+(declare-fun b () (Set Int))
+(declare-fun c () (Set Int))
+(declare-fun e () Int)
+(assert (= a (singleton 5)))
+(assert (= c (union a b) ))
+(assert (not (= c (intersection a b) )))
+(assert (= c (setminus a b) ))
+(assert (subset a b))
+(assert (member e c))
+(assert (member e a))
+(assert (member e (intersection a b)))
+(check-sat)
+(pop 1)
+
+; UF can tell that this is UNSAT (union)
+(push 1)
+(declare-fun x () (Set Int))
+(declare-fun y () (Set Int))
+(declare-fun z () (Set Int))
+(assert (= x y))
+(assert (not (= (union x z) (union y z))))
+(check-sat)
+(pop 1)
+
+; UF can tell that this is UNSAT (containment)
+(push 1)
+(declare-fun x () (Set Int))
+(declare-fun y () (Set Int))
+(declare-fun e1 () Int)
+(declare-fun e2 () Int)
+(assert (= x y))
+(assert (= e1 e2))
+(assert (member e1 x))
+(assert (not (member e2 y)))
+(check-sat)
+(pop 1)
+
+; UF can tell that this is UNSAT (merge union + containment examples)
+(push 1)
+(declare-fun x () (Set Int))
+(declare-fun y () (Set Int))
+(declare-fun z () (Set Int))
+(declare-fun e1 () Int)
+(declare-fun e2 () Int)
+(assert (= x y))
+(assert (= e1 e2))
+(assert (member e1 (union x z)))
+(assert (not (member e2 (union y z))))
+(check-sat)
+(pop 1)
+
+; test all the other kinds for completeness
+(push 1)
+(assert (member 5 (insert 1 2 3 4 (singleton 5))))
+(assert (member 5 (insert 1 2 3 4 (as emptyset (Set Int)))))
+(check-sat)
+ 
+(exit) 
diff --git a/test/regress/regress0/sets/sets-sharing.smt2 b/test/regress/regress0/sets/sets-sharing.smt2
new file mode 100644
index 0000000..caada96
--- /dev/null
+++ b/test/regress/regress0/sets/sets-sharing.smt2
@@ -0,0 +1,11 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-fun S () (Set Int))
+(declare-fun x () Int)
+
+(assert (member (+ 5 x) S))
+(assert (not (member 9 S)))
+(assert (= x 4))
+
+(check-sat)
diff --git a/test/regress/regress0/sets/sets-testlemma.smt2 b/test/regress/regress0/sets/sets-testlemma.smt2
new file mode 100644
index 0000000..aee8c59
--- /dev/null
+++ b/test/regress/regress0/sets/sets-testlemma.smt2
@@ -0,0 +1,7 @@
+; EXPECT: sat
+(set-logic QF_UFBVFS)
+(set-info :status sat)
+(declare-fun x () (Set (_ BitVec 2)))
+(declare-fun y () (Set (_ BitVec 2)))
+(assert (not (= x y)))
+(check-sat)
diff --git a/test/regress/regress0/sets/sets-union.smt2 b/test/regress/regress0/sets/sets-union.smt2
new file mode 100644
index 0000000..56ba520
--- /dev/null
+++ b/test/regress/regress0/sets/sets-union.smt2
@@ -0,0 +1,15 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: unsat
+(set-logic ALL_SUPPORTED)
+(define-sort SetInt () (Set Int))
+(declare-fun a () (Set Int))
+(declare-fun b () (Set Int))
+(declare-fun x () Int)
+(assert (not (member x a)))
+(assert (member x (union a b)))
+(check-sat)
+;(get-model)
+(assert (not (member x b)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/sets/sharingbug.smt2 b/test/regress/regress0/sets/sharingbug.smt2
new file mode 100644
index 0000000..b875798
--- /dev/null
+++ b/test/regress/regress0/sets/sharingbug.smt2
@@ -0,0 +1,157 @@
+(set-info :source |fuzzsmt|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "random")
+(set-info :status sat)
+(set-logic QF_UFLIAFS)
+(define-sort Element () Int)
+(declare-fun f0 ( Int Int Int) Int)
+(declare-fun f1 ( (Set Element)) (Set Element))
+(declare-fun p0 ( Int Int Int) Bool)
+(declare-fun p1 ( (Set Element)) Bool)
+(declare-fun v0 () Int)
+(declare-fun v1 () (Set Element))
+(declare-fun v2 () (Set Element))
+(declare-fun v3 () (Set Element))
+(assert (let ((e4 1))
+(let ((e5 (- v0)))
+(let ((e6 (* v0 (- e4))))
+(let ((e7 (ite (p0 v0 e5 v0) 1 0)))
+(let ((e8 (- e6 e7)))
+(let ((e9 (+ e5 v0)))
+(let ((e10 (ite (p0 e7 e7 e5) 1 0)))
+(let ((e11 (+ e8 e10)))
+(let ((e12 (* (- e4) e7)))
+(let ((e13 (- e10)))
+(let ((e14 (f0 e5 e7 e6)))
+(let ((e15 (member v0 v1)))
+(let ((e16 (member e12 v2)))
+(let ((e17 (member e14 v1)))
+(let ((e18 (f1 v3)))
+(let ((e19 (f1 v2)))
+(let ((e20 (f1 v1)))
+(let ((e21 (>= v0 e9)))
+(let ((e22 (> e6 e6)))
+(let ((e23 (> e5 e12)))
+(let ((e24 (distinct e8 e11)))
+(let ((e25 (= e10 e10)))
+(let ((e26 (> e13 e13)))
+(let ((e27 (distinct e14 e10)))
+(let ((e28 (> e11 e5)))
+(let ((e29 (>= e14 e6)))
+(let ((e30 (< e14 e14)))
+(let ((e31 (< e7 e12)))
+(let ((e32 (<= e11 e12)))
+(let ((e33 (< e14 e11)))
+(let ((e34 (<= e7 e9)))
+(let ((e35 (distinct e12 e5)))
+(let ((e36 (= e14 e6)))
+(let ((e37 (< v0 e8)))
+(let ((e38 (< e13 e14)))
+(let ((e39 (>= e6 e13)))
+(let ((e40 (< e12 e13)))
+(let ((e41 (< v0 e14)))
+(let ((e42 (< v0 e11)))
+(let ((e43 (p0 e13 e7 e8)))
+(let ((e44 (ite e17 e19 e19)))
+(let ((e45 (ite e34 v1 v1)))
+(let ((e46 (ite e28 v1 e44)))
+(let ((e47 (ite e24 e44 e20)))
+(let ((e48 (ite e39 e18 v3)))
+(let ((e49 (ite e35 v2 v3)))
+(let ((e50 (ite e38 e18 e20)))
+(let ((e51 (ite e22 v2 e44)))
+(let ((e52 (ite e17 e20 e18)))
+(let ((e53 (ite e35 e52 e19)))
+(let ((e54 (ite e38 e49 e20)))
+(let ((e55 (ite e15 e20 e45)))
+(let ((e56 (ite e37 v1 v3)))
+(let ((e57 (ite e41 e50 v1)))
+(let ((e58 (ite e28 v1 e54)))
+(let ((e59 (ite e27 e19 e53)))
+(let ((e60 (ite e16 e46 e44)))
+(let ((e61 (ite e29 e57 e52)))
+(let ((e62 (ite e21 e50 e53)))
+(let ((e63 (ite e32 e45 e19)))
+(let ((e64 (ite e42 v3 e57)))
+(let ((e65 (ite e33 e50 v3)))
+(let ((e66 (ite e43 e49 e20)))
+(let ((e67 (ite e22 v1 e63)))
+(let ((e68 (ite e40 e45 e19)))
+(let ((e69 (ite e30 e62 e58)))
+(let ((e70 (ite e24 e52 e58)))
+(let ((e71 (ite e31 e64 e67)))
+(let ((e72 (ite e30 e18 e20)))
+(let ((e73 (ite e25 e58 e44)))
+(let ((e74 (ite e36 e63 v3)))
+(let ((e75 (ite e43 e62 e73)))
+(let ((e76 (ite e26 e61 e55)))
+(let ((e77 (ite e23 e61 e71)))
+(let ((e78 (ite e40 e13 v0)))
+(let ((e79 (ite e23 e8 e13)))
+(let ((e80 (ite e24 e78 e6)))
+(let ((e81 (ite e39 e9 e80)))
+(let ((e82 (ite e31 e7 v0)))
+(let ((e83 (ite e43 e14 e6)))
+(let ((e84 (ite e38 e80 e81)))
+(let ((e85 (ite e32 e14 e10)))
+(let ((e86 (ite e29 e84 e78)))
+(let ((e87 (ite e27 e12 e8)))
+(let ((e88 (ite e31 e11 e6)))
+(let ((e89 (ite e33 e88 e85)))
+(let ((e90 (ite e36 e12 v0)))
+(let ((e91 (ite e23 e5 e7)))
+(let ((e92 (ite e34 e89 e80)))
+(let ((e93 (ite e15 e79 v0)))
+(let ((e94 (ite e21 e6 e7)))
+(let ((e95 (ite e26 v0 e91)))
+(let ((e96 (ite e28 e94 e87)))
+(let ((e97 (ite e32 e90 e78)))
+(let ((e98 (ite e42 e78 e83)))
+(let ((e99 (ite e40 e13 e82)))
+(let ((e100 (ite e25 e88 e90)))
+(let ((e101 (ite e26 e11 e81)))
+(let ((e102 (ite e17 e101 e81)))
+(let ((e103 (ite e30 v0 e80)))
+(let ((e104 (ite e28 e80 e79)))
+(let ((e105 (ite e27 e95 e101)))
+(let ((e106 (ite e22 e92 e94)))
+(let ((e107 (ite e16 e82 e94)))
+(let ((e108 (ite e41 e10 e78)))
+(let ((e109 (ite e37 e107 e84)))
+(let ((e110 (ite e35 e89 e92)))
+(let ((e111 (and e30 e37)))
+(let ((e112 (=> e21 e41)))
+(let ((e113 (ite e25 e33 e26)))
+(let ((e114 (and e34 e38)))
+(let ((e115 (=> e22 e43)))
+(let ((e116 (and e24 e35)))
+(let ((e117 (not e112)))
+(let ((e118 (=> e27 e116)))
+(let ((e119 (= e36 e15)))
+(let ((e120 (= e42 e42)))
+(let ((e121 (xor e29 e115)))
+(let ((e122 (xor e39 e16)))
+(let ((e123 (or e118 e32)))
+(let ((e124 (not e28)))
+(let ((e125 (=> e23 e40)))
+(let ((e126 (ite e17 e123 e111)))
+(let ((e127 (not e117)))
+(let ((e128 (not e31)))
+(let ((e129 (xor e121 e126)))
+(let ((e130 (or e125 e119)))
+(let ((e131 (=> e127 e114)))
+(let ((e132 (or e113 e128)))
+(let ((e133 (= e122 e124)))
+(let ((e134 (not e130)))
+(let ((e135 (or e133 e132)))
+(let ((e136 (= e129 e135)))
+(let ((e137 (=> e120 e120)))
+(let ((e138 (or e134 e137)))
+(let ((e139 (or e138 e138)))
+(let ((e140 (and e139 e131)))
+(let ((e141 (or e136 e136)))
+(let ((e142 (= e140 e141)))
+e142
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
+(check-sat)
diff --git a/test/regress/regress0/sets/union-1a-flip.smt2 b/test/regress/regress0/sets/union-1a-flip.smt2
new file mode 100644
index 0000000..6a73c5b
--- /dev/null
+++ b/test/regress/regress0/sets/union-1a-flip.smt2
@@ -0,0 +1,16 @@
+; COMMAND-LINE: --incremental
+; EXPECT: unsat
+; EXPECT: sat
+
+; x not in A U B => x not in A
+(set-logic ALL_SUPPORTED)
+(define-sort SetInt () (Set Int))
+(declare-fun A () (Set Int))
+(declare-fun B () (Set Int))
+(declare-fun x () Int)
+(assert (member x A))
+(push 1)
+(assert (not (member x (union A B))))
+(check-sat)
+(pop 1)
+(check-sat)
diff --git a/test/regress/regress0/sets/union-1a.smt2 b/test/regress/regress0/sets/union-1a.smt2
new file mode 100644
index 0000000..8636cb2
--- /dev/null
+++ b/test/regress/regress0/sets/union-1a.smt2
@@ -0,0 +1,16 @@
+; COMMAND-LINE: --incremental
+; EXPECT: unsat
+; EXPECT: sat
+
+; x not in A U B => x not in A
+(set-logic ALL_SUPPORTED)
+(define-sort SetInt () (Set Int))
+(declare-fun A () (Set Int))
+(declare-fun B () (Set Int))
+(declare-fun x () Int)
+(assert (not (member x (union A B))))
+(push 1)
+(assert (member x A))
+(check-sat)
+(pop 1)
+(check-sat)
diff --git a/test/regress/regress0/sets/union-1b-flip.smt2 b/test/regress/regress0/sets/union-1b-flip.smt2
new file mode 100644
index 0000000..e2b19b3
--- /dev/null
+++ b/test/regress/regress0/sets/union-1b-flip.smt2
@@ -0,0 +1,16 @@
+; COMMAND-LINE: --incremental
+; EXPECT: unsat
+; EXPECT: sat
+
+; x not in A U B => x not in A
+(set-logic ALL_SUPPORTED)
+(define-sort SetInt () (Set Int))
+(declare-fun A () (Set Int))
+(declare-fun B () (Set Int))
+(declare-fun x () Int)
+(assert (member x B))
+(push 1)
+(assert (not (member x (union A B))))
+(check-sat)
+(pop 1)
+(check-sat)
diff --git a/test/regress/regress0/sets/union-1b.smt2 b/test/regress/regress0/sets/union-1b.smt2
new file mode 100644
index 0000000..c354923
--- /dev/null
+++ b/test/regress/regress0/sets/union-1b.smt2
@@ -0,0 +1,16 @@
+; COMMAND-LINE: --incremental
+; EXPECT: unsat
+; EXPECT: sat
+
+; x not in A U B => x not in A
+(set-logic ALL_SUPPORTED)
+(define-sort SetInt () (Set Int))
+(declare-fun A () (Set Int))
+(declare-fun B () (Set Int))
+(declare-fun x () Int)
+(assert (not (member x (union A B))))
+(push 1)
+(assert (member x B))
+(check-sat)
+(pop 1)
+(check-sat)
diff --git a/test/regress/regress0/sets/union-2.smt2 b/test/regress/regress0/sets/union-2.smt2
new file mode 100644
index 0000000..6e29339
--- /dev/null
+++ b/test/regress/regress0/sets/union-2.smt2
@@ -0,0 +1,12 @@
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(define-sort SetInt () (Set Int))
+(declare-fun A () (Set Int))
+(declare-fun B () (Set Int))
+(declare-fun x () Int)
+(declare-fun y () Int)
+(assert (member x (union A B)))
+(assert (not (member y A)))
+(assert (not (member y B)))
+(check-sat)
diff --git a/test/regress/regress0/sets/univset-simp.smt2 b/test/regress/regress0/sets/univset-simp.smt2
new file mode 100644
index 0000000..ec97507
--- /dev/null
+++ b/test/regress/regress0/sets/univset-simp.smt2
@@ -0,0 +1,21 @@
+(set-logic ALL)
+(set-info :status sat)
+
+(declare-fun a () (Set Int))
+(declare-fun b () (Set Int))
+(declare-fun c () (Set Int))
+(declare-fun d () (Set Int))
+(declare-fun e () (Set Int))
+(declare-fun f () (Set Int))
+
+(declare-fun x () Int)
+
+(assert (not (member 0 a)))
+(assert (member 0 b))
+(assert (not (member 1 c)))
+(assert (member 2 d))
+(assert (= e (as univset (Set Int))))
+(assert (= f (complement d)))
+(assert (not (member x (as univset (Set Int)))))
+
+(check-sat)
diff --git a/test/regress/regress0/simple-lra.smt b/test/regress/regress0/simple-lra.smt
new file mode 100644
index 0000000..c80632a
--- /dev/null
+++ b/test/regress/regress0/simple-lra.smt
@@ -0,0 +1,6 @@
+(benchmark simple_lra
+  :logic QF_LRA
+  :status unsat
+  :extrafuns ((x Real) (y Real))
+  :formula (not (implies (and (> x 0) (< (* 2 x) y)) (and (> y 0) (< x y))))
+)
diff --git a/test/regress/regress0/simple-lra.smt2 b/test/regress/regress0/simple-lra.smt2
new file mode 100644
index 0000000..585c629
--- /dev/null
+++ b/test/regress/regress0/simple-lra.smt2
@@ -0,0 +1,6 @@
+(set-logic QF_LRA)
+(set-info :status unsat)
+(declare-fun x () Real)
+(declare-fun y () Real)
+(assert (not (=> (and (> x 0) (< (* 2 x) y)) (and (> y 0) (< x y)))))
+(check-sat)
diff --git a/test/regress/regress0/simple-rdl.smt b/test/regress/regress0/simple-rdl.smt
new file mode 100644
index 0000000..080c69f
--- /dev/null
+++ b/test/regress/regress0/simple-rdl.smt
@@ -0,0 +1,6 @@
+(benchmark simple_rdl
+  :logic QF_RDL
+  :status unsat
+  :extrafuns ((x Real) (y Real))
+  :formula (not (implies (< (- x y) 0) (< x y)))
+)
diff --git a/test/regress/regress0/simple-rdl.smt2 b/test/regress/regress0/simple-rdl.smt2
new file mode 100644
index 0000000..d2c0a4c
--- /dev/null
+++ b/test/regress/regress0/simple-rdl.smt2
@@ -0,0 +1,7 @@
+(set-logic QF_RDL)
+(set-info :status unsat)
+(declare-fun x () Real)
+(declare-fun y () Real)
+(assert (not (=> (< (- x y) 0) (< x y))))
+(check-sat)
+
diff --git a/test/regress/regress0/simple-uf.smt b/test/regress/regress0/simple-uf.smt
new file mode 100644
index 0000000..9611a6d
--- /dev/null
+++ b/test/regress/regress0/simple-uf.smt
@@ -0,0 +1,8 @@
+(benchmark simple_uf
+  :logic QF_UF
+  :status unsat
+  :extrasorts (A B)
+  :extrafuns ((f A B) (x A) (y A))
+  :formula (not (implies (= x y) (= (f x) (f y))))
+  :status unsat
+)
diff --git a/test/regress/regress0/simple-uf.smt2 b/test/regress/regress0/simple-uf.smt2
new file mode 100644
index 0000000..ef3b3cf
--- /dev/null
+++ b/test/regress/regress0/simple-uf.smt2
@@ -0,0 +1,9 @@
+(set-logic QF_UF)
+(set-info :status unsat)
+(declare-sort A 0)
+(declare-sort B 0)
+(declare-fun x () A)
+(declare-fun y () A)
+(declare-fun f (A) B)
+(assert (not (=> (= x y) (= (f x) (f y)))))
+(check-sat)
diff --git a/test/regress/regress0/simple.cvc b/test/regress/regress0/simple.cvc
new file mode 100644
index 0000000..83d0225
--- /dev/null
+++ b/test/regress/regress0/simple.cvc
@@ -0,0 +1,7 @@
+x0, x1, x2, x3 : BOOLEAN;
+ASSERT x1 OR NOT x0;
+ASSERT x0 OR NOT x3;
+ASSERT x3 OR x2;
+ASSERT x1 AND NOT x1;
+% EXPECT: valid
+QUERY x2;
diff --git a/test/regress/regress0/simple.smt b/test/regress/regress0/simple.smt
new file mode 100644
index 0000000..2c1cf7c
--- /dev/null
+++ b/test/regress/regress0/simple.smt
@@ -0,0 +1,15 @@
+(benchmark b
+:status unsat
+:logic QF_UF
+:extrapreds ((x0))
+:extrapreds ((x1))
+:extrapreds ((x2))
+:extrapreds ((x3))
+:formula
+(and (or x1 (not x0))
+     (or x0 (not x3))
+     (or x3 x2)
+     (not x1)
+     x2
+     x3)
+)
diff --git a/test/regress/regress0/simple2.smt b/test/regress/regress0/simple2.smt
new file mode 100644
index 0000000..3d523b3
--- /dev/null
+++ b/test/regress/regress0/simple2.smt
@@ -0,0 +1,13 @@
+(benchmark b
+:status sat
+:logic QF_UF
+:extrapreds ((x0))
+:extrapreds ((x1))
+:extrapreds ((x2))
+:extrapreds ((x3))
+:formula
+(and (or x1 (not x0))
+     (or x0 (not x3))
+     (or x3 x2)
+     (not x1))
+)
diff --git a/test/regress/regress0/simplification_bug.smt b/test/regress/regress0/simplification_bug.smt
new file mode 100644
index 0000000..8f45bad
--- /dev/null
+++ b/test/regress/regress0/simplification_bug.smt
@@ -0,0 +1,7 @@
+(benchmark simplification_bug
+:logic QF_SAT
+:extrapreds ((b))
+:status unsat
+:formula
+(and false b)
+)
diff --git a/test/regress/regress0/simplification_bug2.smt b/test/regress/regress0/simplification_bug2.smt
new file mode 100644
index 0000000..f251d6d
--- /dev/null
+++ b/test/regress/regress0/simplification_bug2.smt
@@ -0,0 +1,7 @@
+(benchmark flet_test
+:logic QF_UF
+:extrapreds ((b))
+:status unsat
+:formula
+(and b (or false false))
+)
diff --git a/test/regress/regress0/simplification_bug4.smt2 b/test/regress/regress0/simplification_bug4.smt2
new file mode 100644
index 0000000..0d62d69
--- /dev/null
+++ b/test/regress/regress0/simplification_bug4.smt2
@@ -0,0 +1,295 @@
+(set-logic QF_LIA)
+;; Simplified benchmark, derived from NuSMV output durationThm_1.bmc_k100.smt2
+;;
+;; Original version generated by Alberto Griggio <griggio at fbk.eu>
+;; on Fri Feb  4 15:56:12 2011
+(declare-fun sb_0__AT0 () Bool)
+(declare-fun si_0__AT0 () Int)
+(declare-fun si_1__AT0 () Int)
+(declare-fun sb_1__AT0 () Bool)
+(declare-fun si_2__AT0 () Int)
+(declare-fun si_3__AT0 () Int)
+(declare-fun sb_2__AT0 () Bool)
+(declare-fun si_4__AT0 () Int)
+(declare-fun si_5__AT0 () Int)
+(declare-fun sb_3__AT0 () Bool)
+(declare-fun sb_4__AT0 () Bool)
+(declare-fun sb_5__AT0 () Bool)
+(declare-fun si_6__AT0 () Int)
+(declare-fun si_7__AT0 () Int)
+(declare-fun si_8__AT0 () Int)
+(declare-fun si_9__AT0 () Int)
+(declare-fun si_10__AT0 () Int)
+(declare-fun si_11__AT0 () Int)
+(declare-fun sb_6__AT0 () Bool)
+(declare-fun sb_7__AT0 () Bool)
+(declare-fun si_12__AT0 () Int)
+(declare-fun si_13__AT0 () Int)
+(declare-fun si_14__AT0 () Int)
+(assert (let ((.def_61 (= si_2__AT0 si_4__AT0)))
+(let ((.def_60 (= si_3__AT0 si_5__AT0)))
+(let ((.def_62 (and .def_60 .def_61)))
+(let ((.def_63 (and sb_2__AT0 .def_62)))
+(let ((.def_59 (= si_8__AT0 0)))
+(let ((.def_64 (and .def_59 .def_63)))
+(let ((.def_58 (= si_11__AT0 0)))
+(let ((.def_65 (and .def_58 .def_64)))
+(let ((.def_53 (<= 1 si_0__AT0)))
+(let ((.def_52 (<= 1 si_1__AT0)))
+(let ((.def_54 (and .def_52 .def_53)))
+(let ((.def_48 (<= si_0__AT0 si_6__AT0)))
+(let ((.def_49 (not .def_48)))
+(let ((.def_50 (or sb_4__AT0 .def_49)))
+(let ((.def_55 (and .def_50 .def_54)))
+(let ((.def_45 (<= si_1__AT0 si_9__AT0)))
+(let ((.def_46 (not .def_45)))
+(let ((.def_47 (or sb_5__AT0 .def_46)))
+(let ((.def_56 (and .def_47 .def_55)))
+(let ((.def_57 (= sb_7__AT0 .def_56)))
+(let ((.def_66 (and .def_57 .def_65)))
+(let ((.def_44 (= si_14__AT0 0)))
+(let ((.def_67 (and .def_44 .def_66)))
+(let ((.def_33 (not sb_1__AT0)))
+(let ((.def_34 (or sb_2__AT0 .def_33)))
+(let ((.def_35 (= sb_0__AT0 .def_34)))
+(let ((.def_32 (= si_0__AT0 si_2__AT0)))
+(let ((.def_36 (and .def_32 .def_35)))
+(let ((.def_31 (= si_1__AT0 si_3__AT0)))
+(let ((.def_37 (and .def_31 .def_36)))
+(let ((.def_30 (= sb_1__AT0 sb_6__AT0)))
+(let ((.def_38 (and .def_30 .def_37)))
+(let ((.def_29 (= si_6__AT0 si_8__AT0)))
+(let ((.def_39 (and .def_29 .def_38)))
+(let ((.def_28 (= si_9__AT0 si_11__AT0)))
+(let ((.def_40 (and .def_28 .def_39)))
+(let ((.def_27 (= sb_6__AT0 sb_7__AT0)))
+(let ((.def_41 (and .def_27 .def_40)))
+(let ((.def_26 (= si_12__AT0 si_14__AT0)))
+(let ((.def_42 (and .def_26 .def_41)))
+(let ((.def_68 (and .def_42 .def_67)))
+.def_68
+))))))))))))))))))))))))))))))))))))))))))
+
+; (push 1)
+; (assert (let ((.def_69 (not sb_0__AT0)))
+; .def_69
+; ))
+; (check-sat)
+; (pop 1)
+
+(declare-fun sb_0__AT1 () Bool)
+(declare-fun si_0__AT1 () Int)
+(declare-fun si_1__AT1 () Int)
+(declare-fun sb_1__AT1 () Bool)
+(declare-fun si_2__AT1 () Int)
+(declare-fun si_3__AT1 () Int)
+(declare-fun sb_2__AT1 () Bool)
+(declare-fun si_4__AT1 () Int)
+(declare-fun si_5__AT1 () Int)
+(declare-fun sb_3__AT1 () Bool)
+(declare-fun sb_4__AT1 () Bool)
+(declare-fun sb_5__AT1 () Bool)
+(declare-fun si_6__AT1 () Int)
+(declare-fun si_7__AT1 () Int)
+(declare-fun si_8__AT1 () Int)
+(declare-fun si_9__AT1 () Int)
+(declare-fun si_10__AT1 () Int)
+(declare-fun si_11__AT1 () Int)
+(declare-fun sb_6__AT1 () Bool)
+(declare-fun sb_7__AT1 () Bool)
+(declare-fun si_12__AT1 () Int)
+(declare-fun si_13__AT1 () Int)
+(declare-fun si_14__AT1 () Int)
+(assert (let ((.def_163 (= si_0__AT0 si_2__AT1)))
+(let ((.def_162 (= si_1__AT0 si_3__AT1)))
+(let ((.def_164 (and .def_162 .def_163)))
+(let ((.def_155 (* (- 1) si_12__AT1)))
+(let ((.def_156 (+ si_1__AT1 .def_155)))
+(let ((.def_157 (+ si_0__AT1 .def_156)))
+(let ((.def_158 (<= .def_157 0)))
+(let ((.def_159 (not .def_158)))
+(let ((.def_160 (or sb_5__AT1 .def_159)))
+(let ((.def_161 (= sb_2__AT1 .def_160)))
+(let ((.def_165 (and .def_161 .def_164)))
+(let ((.def_147 (* (- 1) si_7__AT1)))
+(let ((.def_148 (+ si_6__AT0 .def_147)))
+(let ((.def_149 (= .def_148 (- 1))))
+(let ((.def_142 (not sb_3__AT0)))
+(let ((.def_150 (or .def_142 .def_149)))
+(let ((.def_144 (= si_7__AT1 0)))
+(let ((.def_145 (or sb_3__AT0 .def_144)))
+(let ((.def_151 (and .def_145 .def_150)))
+(let ((.def_139 (* (- 1) si_13__AT1)))
+(let ((.def_140 (+ si_12__AT0 .def_139)))
+(let ((.def_141 (= .def_140 (- 1))))
+(let ((.def_143 (or .def_141 .def_142)))
+(let ((.def_152 (and .def_143 .def_151)))
+(let ((.def_136 (= si_13__AT1 0)))
+(let ((.def_137 (or sb_3__AT0 .def_136)))
+(let ((.def_153 (and .def_137 .def_152)))
+(let ((.def_166 (and .def_153 .def_165)))
+(let ((.def_133 (not sb_4__AT0)))
+(let ((.def_130 (* (- 1) si_10__AT1)))
+(let ((.def_131 (+ si_9__AT0 .def_130)))
+(let ((.def_132 (= .def_131 (- 1))))
+(let ((.def_134 (or .def_132 .def_133)))
+(let ((.def_126 (= si_10__AT1 0)))
+(let ((.def_127 (or sb_4__AT0 .def_126)))
+(let ((.def_135 (and .def_127 .def_134)))
+(let ((.def_167 (and .def_135 .def_166)))
+(let ((.def_125 (= si_7__AT1 si_8__AT1)))
+(let ((.def_168 (and .def_125 .def_167)))
+(let ((.def_124 (= si_10__AT1 si_11__AT1)))
+(let ((.def_169 (and .def_124 .def_168)))
+(let ((.def_118 (<= 1 si_0__AT1)))
+(let ((.def_117 (<= 1 si_1__AT1)))
+(let ((.def_119 (and .def_117 .def_118)))
+(let ((.def_114 (<= si_0__AT1 si_6__AT1)))
+(let ((.def_115 (not .def_114)))
+(let ((.def_116 (or sb_4__AT1 .def_115)))
+(let ((.def_120 (and .def_116 .def_119)))
+(let ((.def_111 (<= si_1__AT1 si_9__AT1)))
+(let ((.def_112 (not .def_111)))
+(let ((.def_113 (or sb_5__AT1 .def_112)))
+(let ((.def_121 (and .def_113 .def_120)))
+(let ((.def_122 (and sb_6__AT0 .def_121)))
+(let ((.def_123 (= sb_7__AT1 .def_122)))
+(let ((.def_170 (and .def_123 .def_169)))
+(let ((.def_110 (= si_13__AT1 si_14__AT1)))
+(let ((.def_171 (and .def_110 .def_170)))
+(let ((.def_100 (not sb_1__AT1)))
+(let ((.def_101 (or sb_2__AT1 .def_100)))
+(let ((.def_102 (= sb_0__AT1 .def_101)))
+(let ((.def_99 (= si_0__AT1 si_2__AT1)))
+(let ((.def_103 (and .def_99 .def_102)))
+(let ((.def_98 (= si_1__AT1 si_3__AT1)))
+(let ((.def_104 (and .def_98 .def_103)))
+(let ((.def_97 (= sb_1__AT1 sb_6__AT1)))
+(let ((.def_105 (and .def_97 .def_104)))
+(let ((.def_96 (= si_6__AT1 si_8__AT1)))
+(let ((.def_106 (and .def_96 .def_105)))
+(let ((.def_95 (= si_9__AT1 si_11__AT1)))
+(let ((.def_107 (and .def_95 .def_106)))
+(let ((.def_94 (= sb_6__AT1 sb_7__AT1)))
+(let ((.def_108 (and .def_94 .def_107)))
+(let ((.def_93 (= si_12__AT1 si_14__AT1)))
+(let ((.def_109 (and .def_93 .def_108)))
+(let ((.def_172 (and .def_109 .def_171)))
+(let ((.def_173 (and sb_0__AT0 .def_172)))
+.def_173
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
+; (push 1)
+; (assert (let ((.def_174 (not sb_0__AT1)))
+; .def_174
+; ))
+; (check-sat)
+; (pop 1)
+
+(declare-fun sb_0__AT2 () Bool)
+(declare-fun si_0__AT2 () Int)
+(declare-fun si_1__AT2 () Int)
+(declare-fun sb_1__AT2 () Bool)
+(declare-fun si_2__AT2 () Int)
+(declare-fun si_3__AT2 () Int)
+(declare-fun sb_2__AT2 () Bool)
+(declare-fun si_4__AT2 () Int)
+(declare-fun si_5__AT2 () Int)
+(declare-fun sb_3__AT2 () Bool)
+(declare-fun sb_4__AT2 () Bool)
+(declare-fun sb_5__AT2 () Bool)
+(declare-fun si_6__AT2 () Int)
+(declare-fun si_7__AT2 () Int)
+(declare-fun si_8__AT2 () Int)
+(declare-fun si_9__AT2 () Int)
+(declare-fun si_10__AT2 () Int)
+(declare-fun si_11__AT2 () Int)
+(declare-fun sb_6__AT2 () Bool)
+(declare-fun sb_7__AT2 () Bool)
+(declare-fun si_12__AT2 () Int)
+(declare-fun si_13__AT2 () Int)
+(declare-fun si_14__AT2 () Int)
+(assert (let ((.def_267 (= si_0__AT1 si_2__AT2)))
+(let ((.def_266 (= si_1__AT1 si_3__AT2)))
+(let ((.def_268 (and .def_266 .def_267)))
+(let ((.def_259 (* (- 1) si_12__AT2)))
+(let ((.def_260 (+ si_1__AT2 .def_259)))
+(let ((.def_261 (+ si_0__AT2 .def_260)))
+(let ((.def_262 (<= .def_261 0)))
+(let ((.def_263 (not .def_262)))
+(let ((.def_264 (or sb_5__AT2 .def_263)))
+(let ((.def_265 (= sb_2__AT2 .def_264)))
+(let ((.def_269 (and .def_265 .def_268)))
+(let ((.def_251 (* (- 1) si_7__AT2)))
+(let ((.def_252 (+ si_6__AT1 .def_251)))
+(let ((.def_253 (= .def_252 (- 1))))
+(let ((.def_246 (not sb_3__AT1)))
+(let ((.def_254 (or .def_246 .def_253)))
+(let ((.def_248 (= si_7__AT2 0)))
+(let ((.def_249 (or sb_3__AT1 .def_248)))
+(let ((.def_255 (and .def_249 .def_254)))
+(let ((.def_243 (* (- 1) si_13__AT2)))
+(let ((.def_244 (+ si_12__AT1 .def_243)))
+(let ((.def_245 (= .def_244 (- 1))))
+(let ((.def_247 (or .def_245 .def_246)))
+(let ((.def_256 (and .def_247 .def_255)))
+(let ((.def_240 (= si_13__AT2 0)))
+(let ((.def_241 (or sb_3__AT1 .def_240)))
+(let ((.def_257 (and .def_241 .def_256)))
+(let ((.def_270 (and .def_257 .def_269)))
+(let ((.def_237 (not sb_4__AT1)))
+(let ((.def_234 (* (- 1) si_10__AT2)))
+(let ((.def_235 (+ si_9__AT1 .def_234)))
+(let ((.def_236 (= .def_235 (- 1))))
+(let ((.def_238 (or .def_236 .def_237)))
+(let ((.def_231 (= si_10__AT2 0)))
+(let ((.def_232 (or sb_4__AT1 .def_231)))
+(let ((.def_239 (and .def_232 .def_238)))
+(let ((.def_271 (and .def_239 .def_270)))
+(let ((.def_230 (= si_7__AT2 si_8__AT2)))
+(let ((.def_272 (and .def_230 .def_271)))
+(let ((.def_229 (= si_10__AT2 si_11__AT2)))
+(let ((.def_273 (and .def_229 .def_272)))
+(let ((.def_223 (<= 1 si_0__AT2)))
+(let ((.def_222 (<= 1 si_1__AT2)))
+(let ((.def_224 (and .def_222 .def_223)))
+(let ((.def_219 (<= si_0__AT2 si_6__AT2)))
+(let ((.def_220 (not .def_219)))
+(let ((.def_221 (or sb_4__AT2 .def_220)))
+(let ((.def_225 (and .def_221 .def_224)))
+(let ((.def_216 (<= si_1__AT2 si_9__AT2)))
+(let ((.def_217 (not .def_216)))
+(let ((.def_218 (or sb_5__AT2 .def_217)))
+(let ((.def_226 (and .def_218 .def_225)))
+(let ((.def_227 (and sb_6__AT1 .def_226)))
+(let ((.def_228 (= sb_7__AT2 .def_227)))
+(let ((.def_274 (and .def_228 .def_273)))
+(let ((.def_215 (= si_13__AT2 si_14__AT2)))
+(let ((.def_275 (and .def_215 .def_274)))
+(let ((.def_205 (not sb_1__AT2)))
+(let ((.def_206 (or sb_2__AT2 .def_205)))
+(let ((.def_207 (= sb_0__AT2 .def_206)))
+(let ((.def_204 (= si_0__AT2 si_2__AT2)))
+(let ((.def_208 (and .def_204 .def_207)))
+(let ((.def_203 (= si_1__AT2 si_3__AT2)))
+(let ((.def_209 (and .def_203 .def_208)))
+(let ((.def_202 (= sb_1__AT2 sb_6__AT2)))
+(let ((.def_210 (and .def_202 .def_209)))
+(let ((.def_201 (= si_6__AT2 si_8__AT2)))
+(let ((.def_211 (and .def_201 .def_210)))
+(let ((.def_200 (= si_9__AT2 si_11__AT2)))
+(let ((.def_212 (and .def_200 .def_211)))
+(let ((.def_199 (= sb_6__AT2 sb_7__AT2)))
+(let ((.def_213 (and .def_199 .def_212)))
+(let ((.def_198 (= si_12__AT2 si_14__AT2)))
+(let ((.def_214 (and .def_198 .def_213)))
+(let ((.def_276 (and .def_214 .def_275)))
+(let ((.def_277 (and sb_0__AT1 .def_276)))
+.def_277
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
+(push 1)
+(assert (not sb_0__AT2))
+(check-sat)
+(pop 1)
+
diff --git a/test/regress/regress0/simplification_bug4.smt2.expect b/test/regress/regress0/simplification_bug4.smt2.expect
new file mode 100644
index 0000000..1ed776c
--- /dev/null
+++ b/test/regress/regress0/simplification_bug4.smt2.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --incremental
+% EXPECT: unsat
diff --git a/test/regress/regress0/smallcnf.cvc b/test/regress/regress0/smallcnf.cvc
new file mode 100644
index 0000000..bd732b4
--- /dev/null
+++ b/test/regress/regress0/smallcnf.cvc
@@ -0,0 +1,9 @@
+a, b, c : BOOLEAN;
+
+ASSERT NOT a OR NOT b;
+ASSERT c OR b OR a;
+ASSERT b OR NOT a;
+ASSERT a OR NOT b OR c;
+% EXPECT: invalid
+QUERY FALSE;
+
diff --git a/test/regress/regress0/smt2output.smt2 b/test/regress/regress0/smt2output.smt2
new file mode 100644
index 0000000..dbaad26
--- /dev/null
+++ b/test/regress/regress0/smt2output.smt2
@@ -0,0 +1,14 @@
+; This test checks the correct output behavior of SMT-LIBv2 symbols
+; (sometimes they have to be |quoted| with pipes).
+;
+; COMMAND-LINE: -qm
+(declare-fun |toto| () Bool)
+(declare-fun |to to| () Bool)
+(assert (and toto |to to|))
+(check-sat)
+; EXPECT: sat
+(get-model)
+; EXPECT: (model
+; EXPECT: (define-fun toto () Bool true)
+; EXPECT: (define-fun |to to| () Bool true)
+; EXPECT: )
diff --git a/test/regress/regress0/strings/Makefile.am b/test/regress/regress0/strings/Makefile.am
new file mode 100644
index 0000000..f4dc8eb
--- /dev/null
+++ b/test/regress/regress0/strings/Makefile.am
@@ -0,0 +1,107 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+  $(LOG_COMPILER) \
+  $(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+  at001.smt2 \
+  bug001.smt2 \
+  bug002.smt2 \
+  escchar.smt2 \
+  escchar_25.smt2 \
+  str001.smt2 \
+  str002.smt2 \
+  str003.smt2 \
+  str004.smt2 \
+  str005.smt2 \
+  str006.smt2 \
+  str007.smt2 \
+  fmf002.smt2 \
+  type001.smt2 \
+  type003.smt2 \
+  model001.smt2 \
+  substr001.smt2 \
+  regexp001.smt2 \
+  regexp002.smt2 \
+  regexp003.smt2 \
+  leadingzero001.smt2 \
+  loop001.smt2 \
+  loop002.smt2 \
+  loop003.smt2 \
+  loop004.smt2 \
+  loop005.smt2 \
+  loop006.smt2 \
+  loop007.smt2 \
+  loop008.smt2 \
+  loop009.smt2 \
+  reloop.smt2 \
+  unsound-0908.smt2 \
+  ilc-like.smt2 \ 
+  ilc-l-nt.smt2 \ 
+  artemis-0512-nonterm.smt2 \
+  indexof-sym-simp.smt2 \
+  bug613.smt2 \
+  idof-triv.smt2 \
+  chapman150408.smt2 \
+  pierre150331.smt2 \
+  norn-360.smt2 \
+  norn-simp-rew.smt2 \
+  norn-simp-rew-sat.smt2 \
+  idof-nconst-index.smt2 \
+  idof-neg-index.smt2 \
+  bug612.smt2 \
+  bug615.smt2 \
+  kaluza-fl.smt2 \
+  idof-rewrites.smt2 \
+  bug682.smt2 \
+  bug686dd.smt2 \
+  idof-handg.smt2 \
+  fmf001.smt2 \
+  type002.smt2 \
+  crash-1019.smt2 \
+  norn-31.smt2 \
+  strings-native-simple.cvc \
+  cmu-2db2-extf-reg.smt2 \
+  norn-nel-bug-052116.smt2 \
+  cmu-disagree-0707-dd.smt2 \
+  nf-ff-contains-abs.smt2  \
+  csp-prefix-exp-bug.smt2 \
+  cmu-substr-rw.smt2 \
+  gm-inc-071516-2.smt2 \
+  cmu-inc-nlpp-071516.smt2 \
+  strings-index-empty.smt2 \
+  bug768.smt2 \
+  username_checker_min.smt2
+
+FAILING_TESTS =
+
+EXTRA_DIST = $(TESTS)
+
+# and make sure to distribute it
+EXTRA_DIST +=
+
+#norn-dis-0707-3.smt2
+#norn-ab.smt2
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/strings/Makefile.in b/test/regress/regress0/strings/Makefile.in
new file mode 100644
index 0000000..7bbf970
--- /dev/null
+++ b/test/regress/regress0/strings/Makefile.in
@@ -0,0 +1,1529 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/strings
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@  $(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@  $(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+  at001.smt2 \
+  bug001.smt2 \
+  bug002.smt2 \
+  escchar.smt2 \
+  escchar_25.smt2 \
+  str001.smt2 \
+  str002.smt2 \
+  str003.smt2 \
+  str004.smt2 \
+  str005.smt2 \
+  str006.smt2 \
+  str007.smt2 \
+  fmf002.smt2 \
+  type001.smt2 \
+  type003.smt2 \
+  model001.smt2 \
+  substr001.smt2 \
+  regexp001.smt2 \
+  regexp002.smt2 \
+  regexp003.smt2 \
+  leadingzero001.smt2 \
+  loop001.smt2 \
+  loop002.smt2 \
+  loop003.smt2 \
+  loop004.smt2 \
+  loop005.smt2 \
+  loop006.smt2 \
+  loop007.smt2 \
+  loop008.smt2 \
+  loop009.smt2 \
+  reloop.smt2 \
+  unsound-0908.smt2 \
+  ilc-like.smt2 \
+  ilc-l-nt.smt2 \
+  artemis-0512-nonterm.smt2 \
+  indexof-sym-simp.smt2 \
+  bug613.smt2 \
+  idof-triv.smt2 \
+  chapman150408.smt2 \
+  pierre150331.smt2 \
+  norn-360.smt2 \
+  norn-simp-rew.smt2 \
+  norn-simp-rew-sat.smt2 \
+  idof-nconst-index.smt2 \
+  idof-neg-index.smt2 \
+  bug612.smt2 \
+  bug615.smt2 \
+  kaluza-fl.smt2 \
+  idof-rewrites.smt2 \
+  bug682.smt2 \
+  bug686dd.smt2 \
+  idof-handg.smt2 \
+  fmf001.smt2 \
+  type002.smt2 \
+  crash-1019.smt2 \
+  norn-31.smt2 \
+  strings-native-simple.cvc \
+  cmu-2db2-extf-reg.smt2 \
+  norn-nel-bug-052116.smt2 \
+  cmu-disagree-0707-dd.smt2 \
+  nf-ff-contains-abs.smt2  \
+  csp-prefix-exp-bug.smt2 \
+  cmu-substr-rw.smt2 \
+  gm-inc-071516-2.smt2 \
+  cmu-inc-nlpp-071516.smt2 \
+  strings-index-empty.smt2 \
+  bug768.smt2 \
+  username_checker_min.smt2
+
+FAILING_TESTS = 
+
+# and make sure to distribute it
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/strings/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/strings/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+at001.smt2.log: at001.smt2
+	@p='at001.smt2'; \
+	b='at001.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug001.smt2.log: bug001.smt2
+	@p='bug001.smt2'; \
+	b='bug001.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug002.smt2.log: bug002.smt2
+	@p='bug002.smt2'; \
+	b='bug002.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+escchar.smt2.log: escchar.smt2
+	@p='escchar.smt2'; \
+	b='escchar.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+escchar_25.smt2.log: escchar_25.smt2
+	@p='escchar_25.smt2'; \
+	b='escchar_25.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+str001.smt2.log: str001.smt2
+	@p='str001.smt2'; \
+	b='str001.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+str002.smt2.log: str002.smt2
+	@p='str002.smt2'; \
+	b='str002.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+str003.smt2.log: str003.smt2
+	@p='str003.smt2'; \
+	b='str003.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+str004.smt2.log: str004.smt2
+	@p='str004.smt2'; \
+	b='str004.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+str005.smt2.log: str005.smt2
+	@p='str005.smt2'; \
+	b='str005.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+str006.smt2.log: str006.smt2
+	@p='str006.smt2'; \
+	b='str006.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+str007.smt2.log: str007.smt2
+	@p='str007.smt2'; \
+	b='str007.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fmf002.smt2.log: fmf002.smt2
+	@p='fmf002.smt2'; \
+	b='fmf002.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+type001.smt2.log: type001.smt2
+	@p='type001.smt2'; \
+	b='type001.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+type003.smt2.log: type003.smt2
+	@p='type003.smt2'; \
+	b='type003.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+model001.smt2.log: model001.smt2
+	@p='model001.smt2'; \
+	b='model001.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+substr001.smt2.log: substr001.smt2
+	@p='substr001.smt2'; \
+	b='substr001.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+regexp001.smt2.log: regexp001.smt2
+	@p='regexp001.smt2'; \
+	b='regexp001.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+regexp002.smt2.log: regexp002.smt2
+	@p='regexp002.smt2'; \
+	b='regexp002.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+regexp003.smt2.log: regexp003.smt2
+	@p='regexp003.smt2'; \
+	b='regexp003.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+leadingzero001.smt2.log: leadingzero001.smt2
+	@p='leadingzero001.smt2'; \
+	b='leadingzero001.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+loop001.smt2.log: loop001.smt2
+	@p='loop001.smt2'; \
+	b='loop001.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+loop002.smt2.log: loop002.smt2
+	@p='loop002.smt2'; \
+	b='loop002.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+loop003.smt2.log: loop003.smt2
+	@p='loop003.smt2'; \
+	b='loop003.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+loop004.smt2.log: loop004.smt2
+	@p='loop004.smt2'; \
+	b='loop004.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+loop005.smt2.log: loop005.smt2
+	@p='loop005.smt2'; \
+	b='loop005.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+loop006.smt2.log: loop006.smt2
+	@p='loop006.smt2'; \
+	b='loop006.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+loop007.smt2.log: loop007.smt2
+	@p='loop007.smt2'; \
+	b='loop007.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+loop008.smt2.log: loop008.smt2
+	@p='loop008.smt2'; \
+	b='loop008.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+loop009.smt2.log: loop009.smt2
+	@p='loop009.smt2'; \
+	b='loop009.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+reloop.smt2.log: reloop.smt2
+	@p='reloop.smt2'; \
+	b='reloop.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+unsound-0908.smt2.log: unsound-0908.smt2
+	@p='unsound-0908.smt2'; \
+	b='unsound-0908.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ilc-like.smt2.log: ilc-like.smt2
+	@p='ilc-like.smt2'; \
+	b='ilc-like.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ilc-l-nt.smt2.log: ilc-l-nt.smt2
+	@p='ilc-l-nt.smt2'; \
+	b='ilc-l-nt.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+artemis-0512-nonterm.smt2.log: artemis-0512-nonterm.smt2
+	@p='artemis-0512-nonterm.smt2'; \
+	b='artemis-0512-nonterm.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+indexof-sym-simp.smt2.log: indexof-sym-simp.smt2
+	@p='indexof-sym-simp.smt2'; \
+	b='indexof-sym-simp.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug613.smt2.log: bug613.smt2
+	@p='bug613.smt2'; \
+	b='bug613.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+idof-triv.smt2.log: idof-triv.smt2
+	@p='idof-triv.smt2'; \
+	b='idof-triv.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+chapman150408.smt2.log: chapman150408.smt2
+	@p='chapman150408.smt2'; \
+	b='chapman150408.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pierre150331.smt2.log: pierre150331.smt2
+	@p='pierre150331.smt2'; \
+	b='pierre150331.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+norn-360.smt2.log: norn-360.smt2
+	@p='norn-360.smt2'; \
+	b='norn-360.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+norn-simp-rew.smt2.log: norn-simp-rew.smt2
+	@p='norn-simp-rew.smt2'; \
+	b='norn-simp-rew.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+norn-simp-rew-sat.smt2.log: norn-simp-rew-sat.smt2
+	@p='norn-simp-rew-sat.smt2'; \
+	b='norn-simp-rew-sat.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+idof-nconst-index.smt2.log: idof-nconst-index.smt2
+	@p='idof-nconst-index.smt2'; \
+	b='idof-nconst-index.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+idof-neg-index.smt2.log: idof-neg-index.smt2
+	@p='idof-neg-index.smt2'; \
+	b='idof-neg-index.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug612.smt2.log: bug612.smt2
+	@p='bug612.smt2'; \
+	b='bug612.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug615.smt2.log: bug615.smt2
+	@p='bug615.smt2'; \
+	b='bug615.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+kaluza-fl.smt2.log: kaluza-fl.smt2
+	@p='kaluza-fl.smt2'; \
+	b='kaluza-fl.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+idof-rewrites.smt2.log: idof-rewrites.smt2
+	@p='idof-rewrites.smt2'; \
+	b='idof-rewrites.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug682.smt2.log: bug682.smt2
+	@p='bug682.smt2'; \
+	b='bug682.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug686dd.smt2.log: bug686dd.smt2
+	@p='bug686dd.smt2'; \
+	b='bug686dd.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+idof-handg.smt2.log: idof-handg.smt2
+	@p='idof-handg.smt2'; \
+	b='idof-handg.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fmf001.smt2.log: fmf001.smt2
+	@p='fmf001.smt2'; \
+	b='fmf001.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+type002.smt2.log: type002.smt2
+	@p='type002.smt2'; \
+	b='type002.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+crash-1019.smt2.log: crash-1019.smt2
+	@p='crash-1019.smt2'; \
+	b='crash-1019.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+norn-31.smt2.log: norn-31.smt2
+	@p='norn-31.smt2'; \
+	b='norn-31.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+strings-native-simple.cvc.log: strings-native-simple.cvc
+	@p='strings-native-simple.cvc'; \
+	b='strings-native-simple.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cmu-2db2-extf-reg.smt2.log: cmu-2db2-extf-reg.smt2
+	@p='cmu-2db2-extf-reg.smt2'; \
+	b='cmu-2db2-extf-reg.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+norn-nel-bug-052116.smt2.log: norn-nel-bug-052116.smt2
+	@p='norn-nel-bug-052116.smt2'; \
+	b='norn-nel-bug-052116.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cmu-disagree-0707-dd.smt2.log: cmu-disagree-0707-dd.smt2
+	@p='cmu-disagree-0707-dd.smt2'; \
+	b='cmu-disagree-0707-dd.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+nf-ff-contains-abs.smt2.log: nf-ff-contains-abs.smt2
+	@p='nf-ff-contains-abs.smt2'; \
+	b='nf-ff-contains-abs.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+csp-prefix-exp-bug.smt2.log: csp-prefix-exp-bug.smt2
+	@p='csp-prefix-exp-bug.smt2'; \
+	b='csp-prefix-exp-bug.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cmu-substr-rw.smt2.log: cmu-substr-rw.smt2
+	@p='cmu-substr-rw.smt2'; \
+	b='cmu-substr-rw.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+gm-inc-071516-2.smt2.log: gm-inc-071516-2.smt2
+	@p='gm-inc-071516-2.smt2'; \
+	b='gm-inc-071516-2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cmu-inc-nlpp-071516.smt2.log: cmu-inc-nlpp-071516.smt2
+	@p='cmu-inc-nlpp-071516.smt2'; \
+	b='cmu-inc-nlpp-071516.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+strings-index-empty.smt2.log: strings-index-empty.smt2
+	@p='strings-index-empty.smt2'; \
+	b='strings-index-empty.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug768.smt2.log: bug768.smt2
+	@p='bug768.smt2'; \
+	b='bug768.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+username_checker_min.smt2.log: username_checker_min.smt2
+	@p='username_checker_min.smt2'; \
+	b='username_checker_min.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+#norn-dis-0707-3.smt2
+#norn-ab.smt2
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/strings/artemis-0512-nonterm.smt2 b/test/regress/regress0/strings/artemis-0512-nonterm.smt2
new file mode 100644
index 0000000..4b1cad8
--- /dev/null
+++ b/test/regress/regress0/strings/artemis-0512-nonterm.smt2
@@ -0,0 +1,26 @@
+(set-logic QF_S)
+(set-option :strings-exp true)
+(set-info :status unsat)
+
+(declare-const Y String)
+(assert
+  (or
+    (= Y "01")
+    (= Y "02")
+    (= Y "03")
+    (= Y "04")
+    (= Y "05")
+    (= Y "06")
+    (= Y "07")
+    (= Y "08")
+    (= Y "09")
+    (= Y "10")
+    (= Y "11")
+    (= Y "12")
+  )
+)
+ 
+(assert (= (<= (str.to.int Y) 31) false))
+ 
+(check-sat)
+ 
diff --git a/test/regress/regress0/strings/at001.smt2 b/test/regress/regress0/strings/at001.smt2
new file mode 100644
index 0000000..2ecbcc9
--- /dev/null
+++ b/test/regress/regress0/strings/at001.smt2
@@ -0,0 +1,12 @@
+(set-logic QF_S)
+(set-info :status sat)
+
+(declare-fun x () String)
+(declare-fun i () Int)
+
+(assert (= (str.at x i) "b"))
+(assert (and (>= i 4) (< i (str.len x))))
+(assert (< (str.len x) 7))
+(assert (> (str.len x) 2))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/bug001.smt2 b/test/regress/regress0/strings/bug001.smt2
new file mode 100644
index 0000000..cdeebd2
--- /dev/null
+++ b/test/regress/regress0/strings/bug001.smt2
@@ -0,0 +1,15 @@
+(set-logic QF_S)
+(set-info :status sat)
+
+(declare-fun x () String)
+(declare-fun y () String)
+(declare-fun z () String)
+
+(assert (= "\x4a" x))
+(assert (= "\x6a" y))
+
+(assert (= "\x4A" z))
+
+(assert (= x z))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/bug002.smt2 b/test/regress/regress0/strings/bug002.smt2
new file mode 100644
index 0000000..f8a481e
--- /dev/null
+++ b/test/regress/regress0/strings/bug002.smt2
@@ -0,0 +1,10 @@
+(set-logic ASLIA)
+(set-info :smt-lib-version 2.0)
+(set-option :strings-exp true)
+(set-info :status sat)
+
+; regex = [\*-,\t\*-\|](.{6,}()?)+
+(define-fun strinre ((?s String)) Bool (str.in.re ?s (re.union re.nostr (re.++ (str.to.re "") (str.to.re "") (re.union re.nostr (re.range "*" ",") (str.to.re "\t") (re.range "*" "|") ) (re.+ (re.union re.nostr (re.++ (str.to.re "") (str.to.re "") (re.loop re.allchar 6 ) (re.opt (re.union re.nostr (re.++ (str.to.re "") (str.to.re "") ) ) ) ) ) ) ) )  ) )
+(assert (not (strinre "6O\1\127\n?")))
+
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/strings/bug612.smt2 b/test/regress/regress0/strings/bug612.smt2
new file mode 100644
index 0000000..b627e20
--- /dev/null
+++ b/test/regress/regress0/strings/bug612.smt2
@@ -0,0 +1,10 @@
+(set-logic QF_S)
+(set-option :strings-exp true)
+(set-info :status unsat)
+
+(declare-fun s () String)
+
+(assert (not (str.contains s "x")))
+(assert (str.contains s "xy"))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/bug613.smt2 b/test/regress/regress0/strings/bug613.smt2
new file mode 100644
index 0000000..506076c
--- /dev/null
+++ b/test/regress/regress0/strings/bug613.smt2
@@ -0,0 +1,9 @@
+(set-logic QF_S)
+(set-info :status sat)
+(set-option :strings-exp true)
+
+(declare-fun s () String)
+(assert (= s "<a></a>"))
+(assert (< (str.indexof s "<a>" 0) (str.indexof s "</a>" 0)))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/bug615.smt2 b/test/regress/regress0/strings/bug615.smt2
new file mode 100644
index 0000000..86cc592
--- /dev/null
+++ b/test/regress/regress0/strings/bug615.smt2
@@ -0,0 +1,26 @@
+(set-logic QF_S)
+(set-option :strings-exp true)
+(set-info :status sat)
+
+(declare-fun s () String)
+;(assert (= s "</script><script>alert(1);</script><script>"))
+
+(declare-fun joined () String)
+(assert (= joined (str.++ "<script>console.log('" s "');</script>")))
+(assert (str.contains joined "<script>alert(1);</script>"))
+
+; (<script>[^<]*</script>)+
+(assert (str.in.re joined
+            (re.+ (re.++
+                    (str.to.re "<script>")
+                    (re.*
+                        (re.union
+                            (re.range " " ";")
+                            (re.range "=" "~")
+                        )
+                    )
+                    (str.to.re "</script>")
+            ))
+  ))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/bug682.smt2 b/test/regress/regress0/strings/bug682.smt2
new file mode 100644
index 0000000..6617b6b
--- /dev/null
+++ b/test/regress/regress0/strings/bug682.smt2
@@ -0,0 +1,19 @@
+; COMMAND-LINE: --incremental --strings-exp
+(set-logic QF_S)
+
+(declare-fun a () String)
+(define-fun replace3 ((x String) (y String) (z String)) String (str.replace x y z) )
+
+(push 1)
+(assert (= (replace3 a "5" "3") "333"))
+(assert (str.contains a "5"))
+; EXPECT: sat
+(check-sat)
+(pop 1)
+
+(push 1)
+(assert (= (replace3 a "5" "3") "333"))
+(assert (str.contains a "5"))
+; EXPECT: sat
+(check-sat)
+(pop 1)
diff --git a/test/regress/regress0/strings/bug686dd.smt2 b/test/regress/regress0/strings/bug686dd.smt2
new file mode 100644
index 0000000..688cece
--- /dev/null
+++ b/test/regress/regress0/strings/bug686dd.smt2
@@ -0,0 +1,13 @@
+(set-logic UFDTSLIA)
+(set-info :status sat)
+
+(declare-datatypes () ( (T (TC (TCb String))) ) )
+
+(declare-fun root5 () String)
+(declare-fun root6 () T)
+
+(assert (and 
+(str.in.re root5 (re.loop (re.range "0" "9") 4 4) )
+(str.in.re (TCb root6) (re.loop (re.range "0" "9") 4 4) )
+) )
+(check-sat)
diff --git a/test/regress/regress0/strings/bug768.smt2 b/test/regress/regress0/strings/bug768.smt2
new file mode 100644
index 0000000..be3f242
--- /dev/null
+++ b/test/regress/regress0/strings/bug768.smt2
@@ -0,0 +1,10 @@
+(set-logic QF_S)
+(set-info :status sat)
+(declare-fun f0 () String)
+(declare-fun c0 () String)
+(declare-fun f1 () String)
+(declare-fun f2 () String)
+
+(assert (= (str.++ f0 f1 f0 c0 f1 c0 f2 f2) "f(,f(c,c))"))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/chapman150408.smt2 b/test/regress/regress0/strings/chapman150408.smt2
new file mode 100644
index 0000000..f037185
--- /dev/null
+++ b/test/regress/regress0/strings/chapman150408.smt2
@@ -0,0 +1,10 @@
+(set-logic SLIA)
+(set-info :status sat)
+(set-option :strings-exp true)
+(set-option :rewrite-divk true)
+(declare-fun string () String)
+(assert (and
+     (and (not (not (not (= (ite (> (str.indexof string ";" 0) 0) 1 0)
+     0)))) (not (= (ite (not (= (str.len string) 0)) 1 0) 0))) (not
+     (not (= (ite (str.contains string "]") 1 0) 0)))))
+(check-sat)
diff --git a/test/regress/regress0/strings/cmu-2db2-extf-reg.smt2 b/test/regress/regress0/strings/cmu-2db2-extf-reg.smt2
new file mode 100644
index 0000000..b513494
--- /dev/null
+++ b/test/regress/regress0/strings/cmu-2db2-extf-reg.smt2
@@ -0,0 +1,9 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(set-option :strings-exp true)
+
+(declare-fun s () String)
+
+(assert (and (not (not (= (ite (= (str.indexof s "bar" 1) (- 1)) 1 0) 0))) (not (not (= (ite (= (str.indexof s "bar" 1) 3) 1 0) 0)))))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/cmu-disagree-0707-dd.smt2 b/test/regress/regress0/strings/cmu-disagree-0707-dd.smt2
new file mode 100644
index 0000000..c44dfa3
--- /dev/null
+++ b/test/regress/regress0/strings/cmu-disagree-0707-dd.smt2
@@ -0,0 +1,22 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(set-option :strings-exp true)
+
+(declare-fun url () String)
+
+(assert 
+(and 
+(and 
+(and 
+(and 
+
+(= (str.len (str.substr (str.substr url (str.indexof url "#" 2) (- (str.len url) (str.indexof url "#" 2))) (+ (str.indexof (str.substr url (str.indexof url "#" 2) (- (str.len url) (str.indexof url "#" 2))) "#" 0) 1) (- (str.len (str.substr url (str.indexof url "#" 2) (- (str.len url) (str.indexof url "#" 2)))) (+ (str.indexof (str.substr url (str.indexof url "#" 2) (- (str.len url) (str.indexof url "#" 2))) "#" 0) 1)))) 0) 
+
+(not (= (str.substr url 0 (- (str.indexof url ":" 0) 0)) "http")))
+(> (str.indexof url ":" 0) 0))
+(>= (- (str.indexof url "#" 2) 2) 0)) 
+(>= (str.indexof url ":" 0) 0))
+)
+
+(check-sat)
+
diff --git a/test/regress/regress0/strings/cmu-inc-nlpp-071516.smt2 b/test/regress/regress0/strings/cmu-inc-nlpp-071516.smt2
new file mode 100644
index 0000000..1208ca1
--- /dev/null
+++ b/test/regress/regress0/strings/cmu-inc-nlpp-071516.smt2
@@ -0,0 +1,9 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(set-option :strings-exp true)
+
+(declare-fun url () String)
+
+(assert (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (not (not (= (ite (> (str.indexof url ":" 0) 0) 1 0) 0))) (not (= (ite (str.contains url "javascript:alert(1);") 1 0) 0))) (not (not (= (ite (= (str.len url) 0) 1 0) 0)))) (not (not (= (ite (= (str.at url 0) " ") 1 0) 0)))) (not (not (= (ite (= (str.at url 0) "\t") 1 0) 0)))) (not (not (= (ite (= (str.at url 0) "\n") 1 0) 0)))) (not (not (= (ite (= (str.at url 0) "\r") 1 0) 0)))) (not (not (= (ite (= (str. [...]
+
+(check-sat)
diff --git a/test/regress/regress0/strings/cmu-substr-rw.smt2 b/test/regress/regress0/strings/cmu-substr-rw.smt2
new file mode 100644
index 0000000..20bf979
--- /dev/null
+++ b/test/regress/regress0/strings/cmu-substr-rw.smt2
@@ -0,0 +1,12 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(set-option :strings-exp true)
+;(set-option :produce-models true)
+;(set-option :rewrite-divk true)
+
+(declare-fun uri () String)
+
+(assert (and (and (and (and (and (and (and (and (and (and (and (and (not (not (= (ite (= (str.len (str.substr (str.substr uri (+ (str.indexof uri "%" 0) 1) (- (str.len uri) (+ (str.indexof uri "%" 0) 1))) 0 (- 2 0))) 2) 1 0) 0))) (not (not (= (ite (str.contains (str.substr uri (+ (str.indexof uri "%" 0) 1) (- (str.len uri) (+ (str.indexof uri "%" 0) 1))) "%") 1 0) 0)))) (not (not (= (ite (= (str.len (str.substr uri (+ (str.indexof uri "%" 0) 1) (- (str.len uri) (+ (str.indexof uri "%" 0) [...]
+
+(check-sat)
+
diff --git a/test/regress/regress0/strings/crash-1019.smt2 b/test/regress/regress0/strings/crash-1019.smt2
new file mode 100644
index 0000000..9f2e99b
--- /dev/null
+++ b/test/regress/regress0/strings/crash-1019.smt2
@@ -0,0 +1,10 @@
+(set-logic ALL_SUPPORTED)
+(set-option :strings-exp true)
+(set-option :rewrite-divk true)
+(set-info :status unsat)
+ 
+(declare-fun s () String)
+ 
+(assert (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (not (not (not (= (ite (= (str.++ (str.replace (str.substr s 0 (- (+ (str.indexof s "o" 0) 1) 0)) "o" "a") (str.++ (str.replace (str.substr (str.substr s (+ (str.indexof s "o" 0) 1) (- (str.len s) (+ (str.indexof s "o" 0) 1))) 0 (- (+ (str.indexof (str.substr s (+ (str.inde [...]
+ 
+(check-sat)
diff --git a/test/regress/regress0/strings/csp-prefix-exp-bug.smt2 b/test/regress/regress0/strings/csp-prefix-exp-bug.smt2
new file mode 100644
index 0000000..c2fb417
--- /dev/null
+++ b/test/regress/regress0/strings/csp-prefix-exp-bug.smt2
@@ -0,0 +1,10 @@
+(set-logic QF_S)
+(set-info :status sat)
+
+(declare-fun x () String)
+(declare-fun y () String)
+(declare-fun z () String)
+
+(assert (= (str.len x) 1))
+(assert (= (str.++ x y "b" z) "aaaba"))
+(check-sat)
diff --git a/test/regress/regress0/strings/escchar.smt2 b/test/regress/regress0/strings/escchar.smt2
new file mode 100644
index 0000000..67a184a
--- /dev/null
+++ b/test/regress/regress0/strings/escchar.smt2
@@ -0,0 +1,12 @@
+(set-logic QF_S)
+(set-info :status sat)
+(set-info :smt-lib-version 2.0)
+
+(declare-fun x () String)
+(declare-const I Int)
+
+(assert (= x "\0\1\2\3\04\005\x06\7\8\9ABC\\\"\t\a\b"))
+(assert (= I (str.len x)))
+
+
+(check-sat)
diff --git a/test/regress/regress0/strings/escchar_25.smt2 b/test/regress/regress0/strings/escchar_25.smt2
new file mode 100644
index 0000000..af93a7a
--- /dev/null
+++ b/test/regress/regress0/strings/escchar_25.smt2
@@ -0,0 +1,12 @@
+(set-logic QF_S)
+(set-info :status sat)
+(set-info :smt-lib-version 2.5)
+
+(declare-fun x () String)
+(declare-const I Int)
+
+(assert (= x "\0\1\2\3\04\005\x06\7\8\9ABC\\""\t\a\b"))
+(assert (= I (str.len x)))
+
+
+(check-sat)
diff --git a/test/regress/regress0/strings/fmf001.smt2 b/test/regress/regress0/strings/fmf001.smt2
new file mode 100644
index 0000000..6081c8e
--- /dev/null
+++ b/test/regress/regress0/strings/fmf001.smt2
@@ -0,0 +1,20 @@
+(set-logic QF_S)
+(set-option :strings-exp true)
+(set-option :strings-fmf true)
+(set-info :status sat)
+
+(declare-fun x () String)
+(declare-fun y () String)
+
+(assert (str.in.re x
+		(re.* (re.++ (re.* (str.to.re "a") ) (str.to.re "b") ))
+	))
+
+(assert (str.in.re y
+		(re.* (re.++ (re.* (str.to.re "a") ) (str.to.re "b") ))
+	))
+
+(assert (not (= x y)))
+(assert (= (str.len x) (str.len y)))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/fmf002.smt2 b/test/regress/regress0/strings/fmf002.smt2
new file mode 100644
index 0000000..d52dae2
--- /dev/null
+++ b/test/regress/regress0/strings/fmf002.smt2
@@ -0,0 +1,17 @@
+(set-logic QF_S)
+(set-option :strings-exp true)
+(set-option :strings-fmf true)
+(set-info :status sat)
+
+(declare-fun x () String)
+(declare-fun y () String)
+(declare-fun z () String)
+
+(assert (str.in.re x
+                (re.+ (re.range "a" "c"))
+				                ))
+
+(assert (= x (str.++ y "c" z "b")))
+(assert (> (str.len z) 1))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/gm-inc-071516-2.smt2 b/test/regress/regress0/strings/gm-inc-071516-2.smt2
new file mode 100644
index 0000000..1650190
--- /dev/null
+++ b/test/regress/regress0/strings/gm-inc-071516-2.smt2
@@ -0,0 +1,10 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(set-option :strings-exp true)
+
+(declare-fun value2 () String)
+(declare-fun key2 () String)
+
+(assert (and (and (and (and (and (and (not (not (= (ite (str.contains value2 "=") 1 0) 0))) (not (not (= (ite (= (str.len value2) 0) 1 0) 0)))) (not (= (ite (not (= (str.indexof value2 "=" 0) (- 1))) 1 0) 0))) (not (not (= (ite (str.contains value2 ",") 1 0) 0)))) (not (not (= (ite (= (str.len value2) 0) 1 0) 0)))) (not (= (ite (= key2 "cache-control") 1 0) 0))) (not (= (ite (= key2 "cache-control") 1 0) 0))))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/idof-handg.smt2 b/test/regress/regress0/strings/idof-handg.smt2
new file mode 100644
index 0000000..40aff31
--- /dev/null
+++ b/test/regress/regress0/strings/idof-handg.smt2
@@ -0,0 +1,7 @@
+(set-logic ALL_SUPPORTED)
+(set-option :strings-exp true)
+(set-info :status sat)
+(declare-fun s () String)
+(assert (str.contains s "Hello and goodbye!"))
+(assert (> (str.indexof s "goodbye" 0) (str.indexof s "Hello" 0)))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/strings/idof-nconst-index.smt2 b/test/regress/regress0/strings/idof-nconst-index.smt2
new file mode 100644
index 0000000..eba4922
--- /dev/null
+++ b/test/regress/regress0/strings/idof-nconst-index.smt2
@@ -0,0 +1,9 @@
+(set-logic ALL_SUPPORTED)
+(set-option :strings-exp true)
+(set-info :status sat)
+(declare-fun s () String)
+(assert (str.contains s "Hello and goodbye!"))
+(declare-fun x () Int)
+(assert (<= (str.len s) x))
+(assert (not (= (str.indexof s "goodbye" (- x 30)) (- 1))))
+(check-sat)
diff --git a/test/regress/regress0/strings/idof-neg-index.smt2 b/test/regress/regress0/strings/idof-neg-index.smt2
new file mode 100644
index 0000000..c24fcc0
--- /dev/null
+++ b/test/regress/regress0/strings/idof-neg-index.smt2
@@ -0,0 +1,8 @@
+(set-logic ALL_SUPPORTED)
+(set-option :strings-exp true)
+(set-info :status unsat)
+(declare-fun s () String)
+(declare-fun x () Int)
+(assert (< x 0))
+(assert (>= (str.indexof s "goodbye" x) 0))
+(check-sat)
diff --git a/test/regress/regress0/strings/idof-rewrites.smt2 b/test/regress/regress0/strings/idof-rewrites.smt2
new file mode 100644
index 0000000..f52f0c9
--- /dev/null
+++ b/test/regress/regress0/strings/idof-rewrites.smt2
@@ -0,0 +1,13 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(set-option :strings-exp true)
+(declare-fun s () String)
+(declare-fun t () String)
+
+; all of these should rewrite to true
+(assert (= (str.indexof (str.++ s "abc") "ab" 0) (str.indexof (str.++ s "ab") "ab" 0)))
+(assert (= (str.indexof (str.++ s "abc" t "a") t 2) (str.indexof (str.++ s "abc" t "c") t 2)))
+(assert (= (str.indexof (str.++ "ddd" s "abc") "ab" 2) (+ 1 (str.indexof (str.++ "ed" s "ab") "ab" 1))))
+(assert (= (str.indexof (str.++ "dd" s "dd") "ab" 0) (str.indexof (str.++ "dd" s "ee") "ab" 0)))
+(assert (= (str.indexof (str.++ "dd" s "dabd") "ab" 1) (+ 2 (str.indexof (str.++ s "dab" t) "ab" 0))))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/strings/idof-triv.smt2 b/test/regress/regress0/strings/idof-triv.smt2
new file mode 100644
index 0000000..314aded
--- /dev/null
+++ b/test/regress/regress0/strings/idof-triv.smt2
@@ -0,0 +1,7 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(set-option :strings-exp true)
+(declare-fun string () String)
+;(assert (= string "::")) 
+(assert (> (str.indexof string ":" 0) 0))
+(check-sat)
diff --git a/test/regress/regress0/strings/ilc-l-nt.smt2 b/test/regress/regress0/strings/ilc-l-nt.smt2
new file mode 100644
index 0000000..9e1cc2b
--- /dev/null
+++ b/test/regress/regress0/strings/ilc-l-nt.smt2
@@ -0,0 +1,14 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(set-option :strings-exp true)
+ 
+(declare-fun s () String)
+(assert (or (= s "Id like cookies.") (= s "Id not like cookies.")))
+ 
+(declare-fun target () String)
+(assert (or (= target "l") (= target "m")))
+ 
+(declare-fun location () Int)
+(assert (= (* 2 location) (str.indexof s target 0)))
+ 
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/strings/ilc-like.smt2 b/test/regress/regress0/strings/ilc-like.smt2
new file mode 100644
index 0000000..bb708ee
--- /dev/null
+++ b/test/regress/regress0/strings/ilc-like.smt2
@@ -0,0 +1,14 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(set-option :strings-exp true)
+ 
+(declare-fun s () String)
+(assert (= s "I like cookies."))
+ 
+(declare-fun target () String)
+(assert (= target "like"))
+ 
+(declare-fun location () Int)
+(assert (= location (str.indexof s target 0)))
+ 
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/strings/indexof-sym-simp.smt2 b/test/regress/regress0/strings/indexof-sym-simp.smt2
new file mode 100644
index 0000000..f4cf5c0
--- /dev/null
+++ b/test/regress/regress0/strings/indexof-sym-simp.smt2
@@ -0,0 +1,10 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(set-option :strings-exp true)
+(declare-fun s () String)
+(declare-fun t () String)
+(declare-fun r () String)
+; solvable if we do equality reasoning over str.indexof
+(assert (= t s))
+(assert (not (= (str.indexof t r 0) (str.indexof s r 0))))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/strings/kaluza-fl.smt2 b/test/regress/regress0/strings/kaluza-fl.smt2
new file mode 100644
index 0000000..04775d6
--- /dev/null
+++ b/test/regress/regress0/strings/kaluza-fl.smt2
@@ -0,0 +1,97 @@
+(set-logic QF_S)
+(set-info :status sat)
+
+(declare-fun I0_15 () Int)
+(declare-fun I0_18 () Int)
+(declare-fun I0_2 () Int)
+(declare-fun I0_4 () Int)
+(declare-fun I0_6 () Int)
+(declare-fun PCTEMP_LHS_1 () Int)
+(declare-fun PCTEMP_LHS_2 () Int)
+(declare-fun PCTEMP_LHS_3 () Int)
+(declare-fun PCTEMP_LHS_4 () Int)
+(declare-fun PCTEMP_LHS_5 () Int)
+(declare-fun T0_15 () String)
+(declare-fun T0_18 () String)
+(declare-fun T0_2 () String)
+(declare-fun T0_4 () String)
+(declare-fun T0_6 () String)
+(declare-fun T1_15 () String)
+(declare-fun T1_18 () String)
+(declare-fun T1_2 () String)
+(declare-fun T1_4 () String)
+(declare-fun T1_6 () String)
+(declare-fun T2_15 () String)
+(declare-fun T2_18 () String)
+(declare-fun T2_2 () String)
+(declare-fun T2_4 () String)
+(declare-fun T2_6 () String)
+(declare-fun T3_15 () String)
+(declare-fun T3_18 () String)
+(declare-fun T3_2 () String)
+(declare-fun T3_4 () String)
+(declare-fun T3_6 () String)
+(declare-fun T4_15 () String)
+(declare-fun T4_18 () String)
+(declare-fun T4_2 () String)
+(declare-fun T4_4 () String)
+(declare-fun T4_6 () String)
+(declare-fun T5_15 () String)
+(declare-fun T5_18 () String)
+(declare-fun T5_2 () String)
+(declare-fun T5_4 () String)
+(declare-fun T5_6 () String)
+(declare-fun T_4 () Bool)
+(declare-fun T_5 () Bool)
+(declare-fun T_6 () Bool)
+(declare-fun T_7 () Bool)
+(declare-fun T_8 () Bool)
+(declare-fun T_9 () Bool)
+(declare-fun T_SELECT_1 () Bool)
+(declare-fun T_SELECT_2 () Bool)
+(declare-fun T_SELECT_3 () Bool)
+(declare-fun T_SELECT_4 () Bool)
+(declare-fun T_SELECT_5 () Bool)
+(declare-fun T_a () Bool)
+(declare-fun T_c () Bool)
+(declare-fun T_e () Bool)
+(declare-fun var_0xINPUT_12454 () String)
+
+(assert (= T_SELECT_1 (not (= PCTEMP_LHS_1 (- 1)))))
+(assert (ite T_SELECT_1 
+  (and (= PCTEMP_LHS_1 (+ I0_2 0))(= var_0xINPUT_12454 (str.++ T0_2 T1_2))(= I0_2 (str.len T4_2))(= 0 (str.len T0_2))(= T1_2 (str.++ T2_2 T3_2))(= T2_2 (str.++ T4_2 T5_2))(= T5_2 "__utma=169413169.")(not (str.in.re T4_2 (re.++ (str.to.re "_") (str.to.re "_") (str.to.re "u") (str.to.re "t") (str.to.re "m") (str.to.re "a") (str.to.re "=") (str.to.re "1") (str.to.re "6") (str.to.re "9") (str.to.re "4") (str.to.re "1") (str.to.re "3") (str.to.re "1") (str.to.re "6") (str.to.re "9") (str.to.r [...]
+  (and (= PCTEMP_LHS_1 (- 1))(= var_0xINPUT_12454 (str.++ T0_2 T1_2))(= 0 (str.len T0_2))(not (str.in.re T1_2 (re.++ (str.to.re "_") (str.to.re "_") (str.to.re "u") (str.to.re "t") (str.to.re "m") (str.to.re "a") (str.to.re "=") (str.to.re "1") (str.to.re "6") (str.to.re "9") (str.to.re "4") (str.to.re "1") (str.to.re "3") (str.to.re "1") (str.to.re "6") (str.to.re "9") (str.to.re ".")))))))
+(assert (= T_SELECT_2 (not (= PCTEMP_LHS_2 (- 1)))))
+(assert (ite T_SELECT_2 
+  (and (= PCTEMP_LHS_2 (+ I0_4 0))(= var_0xINPUT_12454 (str.++ T0_4 T1_4))(= I0_4 (str.len T4_4))(= 0 (str.len T0_4))(= T1_4 (str.++ T2_4 T3_4))(= T2_4 (str.++ T4_4 T5_4))(= T5_4 "__utmb=169413169")(not (str.in.re T4_4 (re.++ (str.to.re "_") (str.to.re "_") (str.to.re "u") (str.to.re "t") (str.to.re "m") (str.to.re "b") (str.to.re "=") (str.to.re "1") (str.to.re "6") (str.to.re "9") (str.to.re "4") (str.to.re "1") (str.to.re "3") (str.to.re "1") (str.to.re "6") (str.to.re "9"))))) 
+  (and (= PCTEMP_LHS_2 (- 1))(= var_0xINPUT_12454 (str.++ T0_4 T1_4))(= 0 (str.len T0_4))(not (str.in.re T1_4 (re.++ (str.to.re "_") (str.to.re "_") (str.to.re "u") (str.to.re "t") (str.to.re "m") (str.to.re "b") (str.to.re "=") (str.to.re "1") (str.to.re "6") (str.to.re "9") (str.to.re "4") (str.to.re "1") (str.to.re "3") (str.to.re "1") (str.to.re "6") (str.to.re "9")))))))
+(assert (= T_SELECT_3 (not (= PCTEMP_LHS_3 (- 1)))))
+(assert (ite T_SELECT_3 
+  (and (= PCTEMP_LHS_3 (+ I0_6 0))(= var_0xINPUT_12454 (str.++ T0_6 T1_6))(= I0_6 (str.len T4_6))(= 0 (str.len T0_6))(= T1_6 (str.++ T2_6 T3_6))(= T2_6 (str.++ T4_6 T5_6))(= T5_6 "__utmc=169413169")(not (str.in.re T4_6 (re.++ (str.to.re "_") (str.to.re "_") (str.to.re "u") (str.to.re "t") (str.to.re "m") (str.to.re "c") (str.to.re "=") (str.to.re "1") (str.to.re "6") (str.to.re "9") (str.to.re "4") (str.to.re "1") (str.to.re "3") (str.to.re "1") (str.to.re "6") (str.to.re "9"))))) 
+  (and (= PCTEMP_LHS_3 (- 1))(= var_0xINPUT_12454 (str.++ T0_6 T1_6))(= 0 (str.len T0_6))(not (str.in.re T1_6 (re.++ (str.to.re "_") (str.to.re "_") (str.to.re "u") (str.to.re "t") (str.to.re "m") (str.to.re "c") (str.to.re "=") (str.to.re "1") (str.to.re "6") (str.to.re "9") (str.to.re "4") (str.to.re "1") (str.to.re "3") (str.to.re "1") (str.to.re "6") (str.to.re "9")))))))
+(assert (= T_4 (<= 0 PCTEMP_LHS_1)))
+(assert T_4)
+(assert (= T_5 (<= 0 PCTEMP_LHS_2)))
+(assert T_5)
+(assert (= T_6 (<= 0 PCTEMP_LHS_3)))
+(assert T_6)
+(assert (= T_7 (= "" var_0xINPUT_12454)))
+(assert (= T_8 (not T_7)))
+(assert T_8)
+(assert (= T_9 (= var_0xINPUT_12454 "")))
+(assert (= T_a (not T_9)))
+(assert T_a)
+(assert (= T_SELECT_4 (not (= PCTEMP_LHS_4 (- 1)))))
+(assert (ite T_SELECT_4 
+  (and (= PCTEMP_LHS_4 (+ I0_15 0))(= var_0xINPUT_12454 (str.++ T0_15 T1_15))(= I0_15 (str.len T4_15))(= 0 (str.len T0_15))(= T1_15 (str.++ T2_15 T3_15))(= T2_15 (str.++ T4_15 T5_15))(= T5_15 "__utmb=169413169")(not (str.in.re T4_15 (re.++ (str.to.re "_") (str.to.re "_") (str.to.re "u") (str.to.re "t") (str.to.re "m") (str.to.re "b") (str.to.re "=") (str.to.re "1") (str.to.re "6") (str.to.re "9") (str.to.re "4") (str.to.re "1") (str.to.re "3") (str.to.re "1") (str.to.re "6") (str.to.re " [...]
+  (and (= PCTEMP_LHS_4 (- 1))(= var_0xINPUT_12454 (str.++ T0_15 T1_15))(= 0 (str.len T0_15))(not (str.in.re T1_15 (re.++ (str.to.re "_") (str.to.re "_") (str.to.re "u") (str.to.re "t") (str.to.re "m") (str.to.re "b") (str.to.re "=") (str.to.re "1") (str.to.re "6") (str.to.re "9") (str.to.re "4") (str.to.re "1") (str.to.re "3") (str.to.re "1") (str.to.re "6") (str.to.re "9")))))))
+(assert (= T_c (< (- 1) PCTEMP_LHS_4)))
+(assert T_c)
+(assert (= T_SELECT_5 (not (= PCTEMP_LHS_5 (- 1)))))
+(assert (ite T_SELECT_5 
+  (and (= PCTEMP_LHS_5 (+ I0_18 PCTEMP_LHS_4))(= var_0xINPUT_12454 (str.++ T0_18 T1_18))(= I0_18 (str.len T4_18))(= PCTEMP_LHS_4 (str.len T0_18))(= T1_18 (str.++ T2_18 T3_18))(= T2_18 (str.++ T4_18 T5_18))(= T5_18 ";")(not (str.in.re T4_18 (str.to.re ";")))) 
+  (and (= PCTEMP_LHS_5 (- 1))(= var_0xINPUT_12454 (str.++ T0_18 T1_18))(= PCTEMP_LHS_4 (str.len T0_18))(not (str.in.re T1_18 (str.to.re ";"))))))
+(assert (= T_e (< PCTEMP_LHS_5 0)))
+(assert T_e)
+
+(check-sat)
diff --git a/test/regress/regress0/strings/leadingzero001.smt2 b/test/regress/regress0/strings/leadingzero001.smt2
new file mode 100644
index 0000000..2889348
--- /dev/null
+++ b/test/regress/regress0/strings/leadingzero001.smt2
@@ -0,0 +1,11 @@
+(set-logic QF_S)
+(set-option :strings-exp true)
+(set-info :status sat)
+
+(declare-fun Y () String)
+
+(assert (= Y "0001"))
+;(assert (= (str.to.int Y) (- 1)))
+(assert (= (str.to.int Y) 1))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/loop001.smt2 b/test/regress/regress0/strings/loop001.smt2
new file mode 100644
index 0000000..815acce
--- /dev/null
+++ b/test/regress/regress0/strings/loop001.smt2
@@ -0,0 +1,13 @@
+(set-logic QF_S)
+(set-info :status unsat)
+
+(declare-fun x () String)
+(declare-fun y () String)
+(declare-fun z () String)
+(declare-fun w () String)
+(declare-fun w1 () String)
+(declare-fun w2 () String)
+
+(assert (= (str.++ x "a") (str.++ "b" x)))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/loop002.smt2 b/test/regress/regress0/strings/loop002.smt2
new file mode 100644
index 0000000..9049218
--- /dev/null
+++ b/test/regress/regress0/strings/loop002.smt2
@@ -0,0 +1,10 @@
+(set-logic QF_S)
+(set-info :status sat)
+
+(declare-fun x () String)
+(declare-fun y () String)
+(declare-fun z () String)
+
+(assert (= (str.++ x "ba") (str.++ "ab" x)))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/loop003.smt2 b/test/regress/regress0/strings/loop003.smt2
new file mode 100644
index 0000000..1247170
--- /dev/null
+++ b/test/regress/regress0/strings/loop003.smt2
@@ -0,0 +1,13 @@
+(set-logic QF_S)
+(set-info :status sat)
+
+(declare-fun x () String)
+(declare-fun y () String)
+(declare-fun z () String)
+(declare-fun w () String)
+(declare-fun w1 () String)
+(declare-fun w2 () String)
+
+(assert (= (str.++ x "aaaae") (str.++ "eaaaa" x)))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/loop004.smt2 b/test/regress/regress0/strings/loop004.smt2
new file mode 100644
index 0000000..8d2ff80
--- /dev/null
+++ b/test/regress/regress0/strings/loop004.smt2
@@ -0,0 +1,13 @@
+(set-logic QF_S)
+(set-info :status sat)
+
+(declare-fun x () String)
+(declare-fun y () String)
+(declare-fun z () String)
+(declare-fun w () String)
+(declare-fun w1 () String)
+(declare-fun w2 () String)
+
+(assert (= (str.++ x y z) (str.++ y z x)))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/loop005.smt2 b/test/regress/regress0/strings/loop005.smt2
new file mode 100644
index 0000000..039409e
--- /dev/null
+++ b/test/regress/regress0/strings/loop005.smt2
@@ -0,0 +1,18 @@
+(set-logic QF_S)
+(set-info :status sat)
+
+(declare-fun x () String)
+(declare-fun y () String)
+(declare-fun z () String)
+(declare-fun w () String)
+
+;(assert (= (str.++ x y z) (str.++ x z y)))
+;(assert (= (str.++ x w z) (str.++ x z w)))
+
+(assert (= (str.++ y z) (str.++ z y)))
+(assert (= (str.++ w z) (str.++ z w)))
+
+(assert (not (= y w)))
+(assert (> (str.len z) 0))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/loop006.smt2 b/test/regress/regress0/strings/loop006.smt2
new file mode 100644
index 0000000..288a5f6
--- /dev/null
+++ b/test/regress/regress0/strings/loop006.smt2
@@ -0,0 +1,15 @@
+(set-logic QF_S)
+(set-info :status sat)
+
+(declare-fun x () String)
+(declare-fun y () String)
+(declare-fun z () String)
+(declare-fun w () String)
+(declare-fun w1 () String)
+(declare-fun w2 () String)
+
+;(assert (= (str.++ x y) (str.++ y x)))
+
+(assert (not (= (str.++ x y) (str.++ y x))))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/loop007.smt2 b/test/regress/regress0/strings/loop007.smt2
new file mode 100644
index 0000000..a97d97d
--- /dev/null
+++ b/test/regress/regress0/strings/loop007.smt2
@@ -0,0 +1,12 @@
+(set-logic QF_S)
+(set-option :strings-exp true)
+(set-info :status sat)
+
+(declare-fun x () String)
+(declare-fun y () String)
+
+(assert (= (str.++ x y "aa") (str.++ "aa" y x)))
+(assert (= (str.len x) (* 2 (str.len y))))
+(assert (> (str.len x) 0))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/loop008.smt2 b/test/regress/regress0/strings/loop008.smt2
new file mode 100644
index 0000000..f84ba44
--- /dev/null
+++ b/test/regress/regress0/strings/loop008.smt2
@@ -0,0 +1,10 @@
+(set-logic QF_S)
+(set-option :strings-exp true)
+(set-info :status sat)
+
+(declare-fun x () String)
+
+(assert (= (str.++ x "ab") (str.++ "ba" x)))
+(assert (> (str.len x) 5))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/loop009.smt2 b/test/regress/regress0/strings/loop009.smt2
new file mode 100644
index 0000000..30fc6ce
--- /dev/null
+++ b/test/regress/regress0/strings/loop009.smt2
@@ -0,0 +1,10 @@
+(set-logic QF_S)
+(set-option :strings-exp true)
+(set-info :status sat)
+
+(declare-fun x () String)
+
+(assert (= (str.++ x "aa") (str.++ "aa" x)))
+(assert (= (str.len x) 7))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/model001.smt2 b/test/regress/regress0/strings/model001.smt2
new file mode 100644
index 0000000..ac43afe
--- /dev/null
+++ b/test/regress/regress0/strings/model001.smt2
@@ -0,0 +1,12 @@
+(set-logic QF_S)
+(set-info :status sat)
+(set-option :produce-models true)
+
+(declare-fun x () String)
+(declare-fun y () String)
+
+(assert (not (= x y)))
+(assert (= (str.len x) (str.len y)))
+
+(check-sat)
+;(get-model)
diff --git a/test/regress/regress0/strings/nf-ff-contains-abs.smt2 b/test/regress/regress0/strings/nf-ff-contains-abs.smt2
new file mode 100644
index 0000000..eb67926
--- /dev/null
+++ b/test/regress/regress0/strings/nf-ff-contains-abs.smt2
@@ -0,0 +1,15 @@
+(set-logic QF_S)
+(set-info :status unsat)
+(declare-fun a () String)
+(declare-fun b () String)
+(declare-fun c () String)
+(declare-fun d () String)
+(declare-fun e () String)
+(declare-fun f () String)
+(declare-fun g () String)
+(assert (= (str.++ "abc" a "def" b "gg" c) (str.++ e g f)))
+(assert (or (= a "a") (= a "aaa")))
+(assert (or (= b "b") (= b "bbb")))
+(assert (or (= c "c") (= c "ccc")))
+(assert (or (= g (str.++ ";" d)) (= g (str.++ d ";"))))
+(check-sat)
diff --git a/test/regress/regress0/strings/norn-31.smt2 b/test/regress/regress0/strings/norn-31.smt2
new file mode 100644
index 0000000..4698f96
--- /dev/null
+++ b/test/regress/regress0/strings/norn-31.smt2
@@ -0,0 +1,23 @@
+(set-logic QF_SLIA)
+(set-option :strings-exp true)
+(set-info :status unsat)
+
+(declare-fun var_0 () String)
+(declare-fun var_1 () String)
+(declare-fun var_2 () String)
+(declare-fun var_3 () String)
+(declare-fun var_4 () String)
+(declare-fun var_5 () String)
+(declare-fun var_6 () String)
+(declare-fun var_7 () String)
+(declare-fun var_8 () String)
+(declare-fun var_9 () String)
+(declare-fun var_10 () String)
+(declare-fun var_11 () String)
+(declare-fun var_12 () String)
+
+(assert (str.in.re var_1 (re.* (re.range "a" "u"))))
+(assert (str.in.re var_1 (re.++ (re.* (str.to.re "a")) (str.to.re "b"))))
+(assert (str.in.re var_1 (re.++ (re.++ (re.++ (re.* (re.union (str.to.re "a") (str.to.re "b"))) (str.to.re "b")) (str.to.re "a")) (re.* (re.union (str.to.re "a") (str.to.re "b"))))))
+(assert (not (str.in.re "" re.nostr)))
+(check-sat)
diff --git a/test/regress/regress0/strings/norn-360.smt2 b/test/regress/regress0/strings/norn-360.smt2
new file mode 100644
index 0000000..573dcbe
--- /dev/null
+++ b/test/regress/regress0/strings/norn-360.smt2
@@ -0,0 +1,25 @@
+(set-logic QF_SLIA)
+(set-option :strings-exp true)
+(set-info :status sat)
+
+(declare-fun var_0 () String)
+(declare-fun var_1 () String)
+(declare-fun var_2 () String)
+(declare-fun var_3 () String)
+(declare-fun var_4 () String)
+(declare-fun var_5 () String)
+(declare-fun var_6 () String)
+(declare-fun var_7 () String)
+(declare-fun var_8 () String)
+(declare-fun var_9 () String)
+(declare-fun var_10 () String)
+(declare-fun var_11 () String)
+(declare-fun var_12 () String)
+
+(assert (str.in.re (str.++ var_3 "z" var_4 ) (re.++ (re.* (re.union (re.union (str.to.re "z") (str.to.re "b")) (re.++ (str.to.re "a") (re.union (re.union (str.to.re "z") (str.to.re "b")) (str.to.re "a"))))) (str.to.re "a"))))
+(assert (str.in.re (str.++ var_3 "z" var_4 ) (re.++ (re.* (re.union (re.union (str.to.re "z") (str.to.re "b")) (re.++ (str.to.re "a") (re.union (str.to.re "z") (str.to.re "a"))))) (str.to.re "a"))))
+(assert (str.in.re (str.++ var_3 "z" var_4 ) (re.++ (re.* (re.union (str.to.re "z") (re.++ (re.union (str.to.re "b") (str.to.re "a")) (re.union (str.to.re "z") (str.to.re "b"))))) (re.union (str.to.re "b") (str.to.re "a")))))
+(assert (str.in.re var_4 (re.* (re.range "a" "u"))))
+(assert (str.in.re var_3 (re.* (re.range "a" "u"))))
+(assert (<= 0  (str.len var_4)))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/strings/norn-nel-bug-052116.smt2 b/test/regress/regress0/strings/norn-nel-bug-052116.smt2
new file mode 100644
index 0000000..f0c2534
--- /dev/null
+++ b/test/regress/regress0/strings/norn-nel-bug-052116.smt2
@@ -0,0 +1,23 @@
+(set-logic QF_S)
+(set-info :status sat)
+(set-option :strings-exp true)
+
+(declare-fun var_0 () String)
+(declare-fun var_1 () String)
+(declare-fun var_2 () String)
+(declare-fun var_3 () String)
+(declare-fun var_4 () String)
+(declare-fun var_5 () String)
+(declare-fun var_6 () String)
+(declare-fun var_7 () String)
+(declare-fun var_8 () String)
+(declare-fun var_9 () String)
+(declare-fun var_10 () String)
+(declare-fun var_11 () String)
+(declare-fun var_12 () String)
+
+(assert (str.in.re var_4 (re.* (re.range "a" "u"))))
+(assert (str.in.re var_4 (re.++ (re.* (re.union (str.to.re "a") (re.++ (str.to.re "b") (str.to.re "a")))) (str.to.re "b"))))
+(assert (str.in.re (str.++ "a" var_4 "b" ) (re.* (re.range "a" "u"))))
+(assert (not (str.in.re (str.++ "a" var_4 "b" ) (re.++ (re.* (str.to.re "a")) (re.++ (str.to.re "b") (re.* (str.to.re "b")))))))
+(check-sat)
diff --git a/test/regress/regress0/strings/norn-simp-rew-sat.smt2 b/test/regress/regress0/strings/norn-simp-rew-sat.smt2
new file mode 100644
index 0000000..01a102b
--- /dev/null
+++ b/test/regress/regress0/strings/norn-simp-rew-sat.smt2
@@ -0,0 +1,25 @@
+(set-logic QF_SLIA)
+(set-option :strings-exp true)
+(set-info :status sat)
+
+(declare-fun var_0 () String)
+(declare-fun var_1 () String)
+(declare-fun var_2 () String)
+(declare-fun var_3 () String)
+(declare-fun var_4 () String)
+(declare-fun var_5 () String)
+(declare-fun var_6 () String)
+(declare-fun var_7 () String)
+(declare-fun var_8 () String)
+(declare-fun var_9 () String)
+(declare-fun var_10 () String)
+(declare-fun var_11 () String)
+(declare-fun var_12 () String)
+
+(assert (str.in.re (str.++ var_3 "z" var_4 ) (re.++ (re.* (re.union (re.union (str.to.re "z") (str.to.re "a")) (re.++ (str.to.re "b") (re.++ (re.* (str.to.re "b")) (re.union (str.to.re "z") (str.to.re "a")))))) (re.++ (str.to.re "b") (re.* (str.to.re "b"))))))
+(assert (str.in.re var_4 (re.* (re.range "a" "u"))))
+(assert (str.in.re var_4 (re.* (str.to.re "b"))))
+(assert (str.in.re var_3 (re.* (re.range "a" "u"))))
+(assert (str.in.re var_3 (re.* (str.to.re "a"))))
+(assert (<= 0  (str.len var_4)))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/strings/norn-simp-rew.smt2 b/test/regress/regress0/strings/norn-simp-rew.smt2
new file mode 100644
index 0000000..45f7ede
--- /dev/null
+++ b/test/regress/regress0/strings/norn-simp-rew.smt2
@@ -0,0 +1,29 @@
+(set-logic QF_SLIA)
+(set-option :strings-exp true)
+(set-info :status unsat)
+
+(declare-fun var_0 () String)
+(declare-fun var_1 () String)
+(declare-fun var_2 () String)
+(declare-fun var_3 () String)
+(declare-fun var_4 () String)
+(declare-fun var_5 () String)
+(declare-fun var_6 () String)
+(declare-fun var_7 () String)
+(declare-fun var_8 () String)
+(declare-fun var_9 () String)
+(declare-fun var_10 () String)
+(declare-fun var_11 () String)
+(declare-fun var_12 () String)
+
+(assert (str.in.re (str.++ var_7 "z" var_8 ) (re.++ (re.* (re.union (re.union (str.to.re "z") (str.to.re "a")) (re.++ (str.to.re "b") (re.++ (re.* (str.to.re "b")) (re.union (str.to.re "z") (str.to.re "a")))))) (re.++ (str.to.re "b") (re.* (str.to.re "b"))))))
+(assert (str.in.re (str.++ var_7 "z" var_8 ) (re.++ (re.* (re.union (str.to.re "a") (re.++ (str.to.re "b") (re.++ (re.* (re.union (str.to.re "b") (str.to.re "a"))) (str.to.re "z"))))) (re.++ (str.to.re "b") (re.* (re.union (str.to.re "b") (str.to.re "a")))))))
+(assert (str.in.re (str.++ var_7 "z" var_8 ) (re.++ (re.* (re.++ (str.to.re "b") (re.++ (re.* (re.union (str.to.re "z") (str.to.re "b"))) (str.to.re "a")))) (re.++ (str.to.re "b") (re.* (re.union (str.to.re "z") (str.to.re "b")))))))
+(assert (str.in.re (str.++ var_7 "z" var_8 ) (re.++ (re.* (re.union (str.to.re "z") (re.++ (re.union (str.to.re "b") (str.to.re "a")) (re.union (str.to.re "z") (str.to.re "b"))))) (re.union (str.to.re "b") (str.to.re "a")))))
+(assert (str.in.re (str.++ var_7 "z" var_8 ) (re.* (re.++ (str.to.re "b") (re.++ (re.* (str.to.re "z")) (str.to.re "b"))))))
+(assert (str.in.re (str.++ var_7 "z" var_8 ) (re.++ (re.* (re.++ (str.to.re "b") (str.to.re "z"))) (str.to.re "b"))))
+(assert (str.in.re (str.++ "a" var_8 ) (re.* (re.range "a" "u"))))
+(assert (str.in.re var_8 (re.* (re.range "a" "u"))))
+(assert (str.in.re var_7 (re.* (re.range "a" "u"))))
+(assert (not (str.in.re (str.++ "b" var_7 ) (re.* (re.range "a" "u")))))
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/strings/pierre150331.smt2 b/test/regress/regress0/strings/pierre150331.smt2
new file mode 100644
index 0000000..88d5ec1
--- /dev/null
+++ b/test/regress/regress0/strings/pierre150331.smt2
@@ -0,0 +1,13 @@
+(set-logic SLIA)
+(set-info :status sat)
+(set-info :smt-lib-version 2.5)
+(set-option :strings-exp true)
+(define-fun stringEval ((?s String)) Bool (str.in.re ?s 
+(re.union 
+(str.to.re "H")
+(re.++ (re.loop (str.to.re "{") 2 2 ) (re.loop (re.union re.nostr (re.range "
" "]") (re.range "" "^") ) 2 4 ) ) ) ) )
+(declare-fun s0() String)
+(declare-fun s1() String)
+(declare-fun s2() String)
+(assert (and true (stringEval s0) (stringEval s1) (distinct s0 s1) (stringEval s2) (distinct s0 s2) (distinct s1 s2) ) )
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/strings/regexp001.smt2 b/test/regress/regress0/strings/regexp001.smt2
new file mode 100644
index 0000000..62c142d
--- /dev/null
+++ b/test/regress/regress0/strings/regexp001.smt2
@@ -0,0 +1,13 @@
+(set-logic QF_S)
+(set-info :status sat)
+(set-option :strings-exp true)
+
+(declare-fun x () String)
+
+(assert (str.in.re x
+		(re.* (re.++ (re.* (str.to.re "a") ) (str.to.re "b") ))
+	))
+
+(assert (= (str.len x) 3))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/regexp002.smt2 b/test/regress/regress0/strings/regexp002.smt2
new file mode 100644
index 0000000..a8bd218
--- /dev/null
+++ b/test/regress/regress0/strings/regexp002.smt2
@@ -0,0 +1,24 @@
+(set-logic QF_S)
+(set-info :status sat)
+(set-option :strings-exp true)
+; this option requires user to check whether the constraint is in the fragment
+; currently we do not provide only positive membership constraint checking
+; if users use this option but the constraint is not in this fragment, the result will fail
+(set-option :strings-inm true)
+
+(declare-fun x () String)
+(declare-fun y () String)
+
+(assert (str.in.re x
+		(re.* (re.++ (re.* (str.to.re "a") ) (str.to.re "b") ))
+	))
+
+(assert (str.in.re y
+		(re.* (re.++ (re.* (str.to.re "a") ) (str.to.re "b") ))
+	))
+
+(assert (not (= x y)))
+(assert (= (str.len x) (str.len y)))
+(assert (= (str.len y) 3))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/regexp003.smt2 b/test/regress/regress0/strings/regexp003.smt2
new file mode 100644
index 0000000..7696838
--- /dev/null
+++ b/test/regress/regress0/strings/regexp003.smt2
@@ -0,0 +1,13 @@
+(set-logic QF_S)
+(set-info :status sat)
+(set-option :strings-exp true)
+
+(declare-const s String)
+
+(assert (str.in.re s (re.inter
+	(re.++ (str.to.re "a") (re.* (str.to.re "b")) 
+		(re.inter (str.to.re "c") (re.* (str.to.re "c"))))
+	(re.++ (str.to.re "a") (re.* (str.to.re "b")) (re.* (str.to.re "c")))
+	)))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/reloop.smt2 b/test/regress/regress0/strings/reloop.smt2
new file mode 100644
index 0000000..9915504
--- /dev/null
+++ b/test/regress/regress0/strings/reloop.smt2
@@ -0,0 +1,18 @@
+(set-logic QF_S)
+(set-option :strings-exp true)
+(set-info :status sat)
+
+(declare-fun x () String)
+(declare-fun y () String)
+(declare-fun z () String)
+(declare-fun w () String)
+
+(assert (str.in.re x (re.loop (str.to.re "a") 5)))
+(assert (str.in.re y (re.loop (str.to.re "b") 2 5)))
+(assert (str.in.re z (re.loop (str.to.re "c") 5)))
+(assert (> (str.len z) 7))
+(assert (str.in.re w (re.loop (str.to.re "b") 2 7)))
+(assert (> (str.len w) 2))
+(assert (< (str.len w) 5))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/str001.smt2 b/test/regress/regress0/strings/str001.smt2
new file mode 100644
index 0000000..bb2b701
--- /dev/null
+++ b/test/regress/regress0/strings/str001.smt2
@@ -0,0 +1,16 @@
+(set-logic QF_S)
+(set-info :status unsat)
+
+(declare-fun xx () String)
+(declare-fun yy () String)
+(declare-fun zz () String)
+(declare-fun ww () String)
+(declare-fun pp () String)
+(declare-fun qq () String)
+
+(assert (= (str.++ xx yy zz) (str.++ ww qq)))
+(assert (= ww (str.++ xx pp)))
+(assert (= yy pp))
+(assert (not (= zz qq)))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/str002.smt2 b/test/regress/regress0/strings/str002.smt2
new file mode 100644
index 0000000..62512ef
--- /dev/null
+++ b/test/regress/regress0/strings/str002.smt2
@@ -0,0 +1,18 @@
+(set-logic QF_S)
+(set-info :status unsat)
+
+(declare-fun xx () String)
+(declare-fun yy () String)
+(declare-fun zz () String)
+(declare-fun ww () String)
+(declare-fun pp () String)
+(declare-fun qq () String)
+
+; assoc
+(assert (or (= xx (str.++ yy "aa")) (= zz (str.++ yy "aa"))
+))
+(assert (and (not (= (str.++ xx "bb") (str.++ yy "aa" "bb")))
+		    (not (= (str.++ zz "bb") (str.++ yy "aa" "bb")))
+))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/str003.smt2 b/test/regress/regress0/strings/str003.smt2
new file mode 100644
index 0000000..0ced7f4
--- /dev/null
+++ b/test/regress/regress0/strings/str003.smt2
@@ -0,0 +1,15 @@
+(set-logic QF_S)
+(set-info :status unsat)
+
+(declare-fun xx () String)
+(declare-fun yy () String)
+(declare-fun zz () String)
+(declare-fun ww () String)
+(declare-fun pp () String)
+(declare-fun qq () String)
+
+(assert (= "ab" (str.++ "a" xx)))
+(assert (not (= xx yy)))
+(assert (= "b" yy))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/str004.smt2 b/test/regress/regress0/strings/str004.smt2
new file mode 100644
index 0000000..8a03f44
--- /dev/null
+++ b/test/regress/regress0/strings/str004.smt2
@@ -0,0 +1,15 @@
+(set-logic QF_S)
+(set-info :status unsat)
+
+(declare-fun xx () String)
+(declare-fun yy () String)
+(declare-fun zz () String)
+(declare-fun ww () String)
+(declare-fun pp () String)
+(declare-fun qq () String)
+
+; Morgan says it needs length bound
+(assert (> (str.len yy) (str.len xx)))
+(assert (= xx (str.++ xx yy)))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/str005.smt2 b/test/regress/regress0/strings/str005.smt2
new file mode 100644
index 0000000..84cb5af
--- /dev/null
+++ b/test/regress/regress0/strings/str005.smt2
@@ -0,0 +1,18 @@
+(set-logic QF_S)
+(set-info :status unsat)
+
+(declare-fun xx () String)
+(declare-fun yy () String)
+(declare-fun zz () String)
+(declare-fun ww () String)
+(declare-fun pp () String)
+(declare-fun qq () String)
+
+; common postfix
+;(assert (= (str.++ xx "aa") (str.++ xx "bb")))
+
+(assert (= (str.len yy) 0))
+(assert (not (= yy "")))
+
+(check-sat)
+
diff --git a/test/regress/regress0/strings/str006.smt2 b/test/regress/regress0/strings/str006.smt2
new file mode 100644
index 0000000..2bdf9b1
--- /dev/null
+++ b/test/regress/regress0/strings/str006.smt2
@@ -0,0 +1,14 @@
+(set-logic QF_S)
+(set-info :status sat)
+
+(declare-fun x () String)
+(declare-fun y () String)
+(declare-fun z () String)
+
+;plandowski p469 1
+(assert (= (str.++ x "ab" y) (str.++ y "ba" z)))
+(assert (= z (str.++ x y)))
+(assert (not (= (str.++ x "a") (str.++ "a" x))))
+
+(check-sat)
+
diff --git a/test/regress/regress0/strings/str007.smt2 b/test/regress/regress0/strings/str007.smt2
new file mode 100644
index 0000000..a717370
--- /dev/null
+++ b/test/regress/regress0/strings/str007.smt2
@@ -0,0 +1,13 @@
+(set-logic QF_S)
+(set-info :status unsat)
+
+(declare-fun x () String)
+(declare-fun y () String)
+
+
+(assert (or (= x y) (= x y)))
+
+(assert (= (str.++ x "ba") (str.++ "ab" x)))
+(assert (= (str.++ y "ab") (str.++ "ab" y)))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/strings-index-empty.smt2 b/test/regress/regress0/strings/strings-index-empty.smt2
new file mode 100644
index 0000000..a726d9c
--- /dev/null
+++ b/test/regress/regress0/strings/strings-index-empty.smt2
@@ -0,0 +1,11 @@
+; COMMAND-LINE: --simplification=none --strings-exp --no-strings-lazy-pp
+; EXPECT: sat
+(set-logic SLIA)
+(set-info :status sat)
+(declare-fun x () String)
+(declare-fun f () String)
+(declare-fun y () Int)
+(assert (= (str.len f) 0))
+; command line options ensure reduction is invoked for indexof, f is "", should return -1
+(assert (= (str.indexof x f 4) y))
+(check-sat)
diff --git a/test/regress/regress0/strings/strings-native-simple.cvc b/test/regress/regress0/strings/strings-native-simple.cvc
new file mode 100644
index 0000000..568452e
--- /dev/null
+++ b/test/regress/regress0/strings/strings-native-simple.cvc
@@ -0,0 +1,10 @@
+% EXPECT: sat
+
+x : STRING;
+y : STRING;
+
+ASSERT x = CONCAT( "abcd", y );
+ASSERT LENGTH( x ) >= 6;
+ASSERT LENGTH( y ) < 5;
+
+CHECKSAT;
diff --git a/test/regress/regress0/strings/substr001.smt2 b/test/regress/regress0/strings/substr001.smt2
new file mode 100644
index 0000000..78f3ffe
--- /dev/null
+++ b/test/regress/regress0/strings/substr001.smt2
@@ -0,0 +1,16 @@
+(set-logic QF_S)
+(set-info :status sat)
+
+(declare-fun x () String)
+(declare-fun i1 () Int)
+(declare-fun i2 () Int)
+(declare-fun i3 () Int)
+(declare-fun i4 () Int)
+
+(assert (and (>= i1 0) (>= i2 0) (< (+ i1 i2) (str.len x))))
+(assert (and (>= i3 0) (>= i4 0) (< (+ i3 i4) (str.len x))))
+(assert (= "efg" (str.substr x i1 i2) ) )
+(assert (= "bef" (str.substr x i3 i4) ) )
+(assert (> (str.len x) 5))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/type001.smt2 b/test/regress/regress0/strings/type001.smt2
new file mode 100644
index 0000000..77eabcc
--- /dev/null
+++ b/test/regress/regress0/strings/type001.smt2
@@ -0,0 +1,21 @@
+(set-logic QF_S)
+(set-info :status sat)
+(set-option :strings-exp true)
+
+(declare-fun x () String)
+(declare-fun y () String)
+(declare-fun i () Int)
+(declare-fun j () Int)
+(declare-fun z () String)
+
+;big num test
+(assert (= x (int.to.str 4785582390527685649)))
+;should be ""
+(assert (= y (int.to.str (- 9))))
+
+;big num
+(assert (= i (str.to.int "783914785582390527685649")))
+;should be -1
+(assert (= j (str.to.int "-783914785582390527685649")))
+
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/strings/type002.smt2 b/test/regress/regress0/strings/type002.smt2
new file mode 100644
index 0000000..296057a
--- /dev/null
+++ b/test/regress/regress0/strings/type002.smt2
@@ -0,0 +1,18 @@
+(set-logic QF_S)
+(set-info :status sat)
+(set-option :strings-exp true)
+
+(declare-fun x () String)
+(declare-fun y () String)
+(declare-fun z () String)
+(declare-fun i () Int)
+
+(assert (>= i 420))
+(assert (= x (u16.to.str i)))
+(assert (= x (str.++ y "0" z)))
+(assert (not (= y "")))
+(assert (not (= z "")))
+
+
+
+(check-sat)
\ No newline at end of file
diff --git a/test/regress/regress0/strings/type003.smt2 b/test/regress/regress0/strings/type003.smt2
new file mode 100644
index 0000000..c2d4792
--- /dev/null
+++ b/test/regress/regress0/strings/type003.smt2
@@ -0,0 +1,12 @@
+(set-logic QF_S)
+(set-info :status sat)
+(set-option :strings-exp true)
+
+(declare-fun i () Int)
+(declare-fun s () String)
+
+(assert (< 67 (str.to.int s)))
+(assert (= (str.len s) 2))
+(assert (not (= s "68")))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/unsound-0908.smt2 b/test/regress/regress0/strings/unsound-0908.smt2
new file mode 100644
index 0000000..2b25e6d
--- /dev/null
+++ b/test/regress/regress0/strings/unsound-0908.smt2
@@ -0,0 +1,12 @@
+(set-logic QF_S)
+(set-info :status sat)
+(declare-const x String)
+(assert (= (str.len x) 1))
+;(assert (= x "X"))
+(assert
+    (or 
+      (not (> (str.len x) 1))
+      (= (str.at x 1) "Z")
+    )
+)
+(check-sat)
diff --git a/test/regress/regress0/strings/username_checker_min.smt2 b/test/regress/regress0/strings/username_checker_min.smt2
new file mode 100644
index 0000000..2f1c358
--- /dev/null
+++ b/test/regress/regress0/strings/username_checker_min.smt2
@@ -0,0 +1,14 @@
+(set-logic QF_S)
+(set-option :strings-exp true)
+(set-info :status unsat)
+
+(declare-const buff String)
+(declare-const pass_mem String)
+(assert (= (str.len buff) 4))
+(assert (= (str.len pass_mem) 1))
+
+(assert (str.in.re (str.++ buff pass_mem) (re.+ (str.to.re "A"))))
+
+(assert (str.contains buff "<"))
+
+(check-sat)
diff --git a/test/regress/regress0/subranges.cvc b/test/regress/regress0/subranges.cvc
new file mode 100644
index 0000000..bf6e469
--- /dev/null
+++ b/test/regress/regress0/subranges.cvc
@@ -0,0 +1,15 @@
+% EXPECT: valid
+
+A : [0..0];
+B : [ -5 .. 8];
+C : [1..3];
+D : [1..2];
+E : [-100 ..-1];
+F : [-100 ..0];
+G : [-100 ..1];
+H : [-1 ..1];
+I : [0..10];
+J : [-10..-9];
+K : [-10..-10];
+
+QUERY TRUE;
diff --git a/test/regress/regress0/sygus/Makefile.am b/test/regress/regress0/sygus/Makefile.am
new file mode 100644
index 0000000..0764b5d
--- /dev/null
+++ b/test/regress/regress0/sygus/Makefile.am
@@ -0,0 +1,78 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+  $(LOG_COMPILER) \
+  $(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = commutative.sy \
+        constant.sy \
+        multi-fun-polynomial2.sy \
+        unbdd_inv_gen_winf1.sy \
+        max.sy \
+        array_sum_2_5.sy \
+        parity-AIG-d0.sy \
+        twolets1.sy \
+        array_search_2.sy \
+        hd-01-d1-prog.sy \
+        icfp_28_10.sy \
+        const-var-test.sy \
+        no-syntax-test.sy \
+        no-flat-simp.sy \
+        twolets2-orig.sy \
+        let-ringer.sy \
+        let-simp.sy \
+        tl-type.sy \
+        dup-op.sy \
+        nflat-fwd.sy \
+        nflat-fwd-3.sy \
+        no-syntax-test-bool.sy \
+        inv-example.sy \
+        uminus_one.sy \
+        sygus-dt.sy \
+        dt-no-syntax.sy \
+        list-head-x.sy \
+        clock-inc-tuple.sy \
+        dt-test-ns.sy \
+        no-mention.sy \
+        max2-univ.sy \
+        strings-small.sy \
+        strings-unconstrained.sy
+
+# sygus tests currently taking too long for make regress
+EXTRA_DIST = $(TESTS) \
+  max.smt2 \
+  sygus-uf.sl \
+  enum-test.sy 
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+# error.cvc
+#endif
+
+# disabled tests, yet distribute
+#EXTRA_DIST += \
+# setofsets-disequal.smt2
+# no-syntax-test-no-si.sy
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/sygus/Makefile.in b/test/regress/regress0/sygus/Makefile.in
new file mode 100644
index 0000000..af981d5
--- /dev/null
+++ b/test/regress/regress0/sygus/Makefile.in
@@ -0,0 +1,1259 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/sygus
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@  $(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@  $(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = commutative.sy \
+        constant.sy \
+        multi-fun-polynomial2.sy \
+        unbdd_inv_gen_winf1.sy \
+        max.sy \
+        array_sum_2_5.sy \
+        parity-AIG-d0.sy \
+        twolets1.sy \
+        array_search_2.sy \
+        hd-01-d1-prog.sy \
+        icfp_28_10.sy \
+        const-var-test.sy \
+        no-syntax-test.sy \
+        no-flat-simp.sy \
+        twolets2-orig.sy \
+        let-ringer.sy \
+        let-simp.sy \
+        tl-type.sy \
+        dup-op.sy \
+        nflat-fwd.sy \
+        nflat-fwd-3.sy \
+        no-syntax-test-bool.sy \
+        inv-example.sy \
+        uminus_one.sy \
+        sygus-dt.sy \
+        dt-no-syntax.sy \
+        list-head-x.sy \
+        clock-inc-tuple.sy \
+        dt-test-ns.sy \
+        no-mention.sy \
+        max2-univ.sy \
+        strings-small.sy \
+        strings-unconstrained.sy
+
+
+# sygus tests currently taking too long for make regress
+EXTRA_DIST = $(TESTS) \
+  max.smt2 \
+  sygus-uf.sl \
+  enum-test.sy 
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/sygus/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/sygus/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+commutative.sy.log: commutative.sy
+	@p='commutative.sy'; \
+	b='commutative.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+constant.sy.log: constant.sy
+	@p='constant.sy'; \
+	b='constant.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+multi-fun-polynomial2.sy.log: multi-fun-polynomial2.sy
+	@p='multi-fun-polynomial2.sy'; \
+	b='multi-fun-polynomial2.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+unbdd_inv_gen_winf1.sy.log: unbdd_inv_gen_winf1.sy
+	@p='unbdd_inv_gen_winf1.sy'; \
+	b='unbdd_inv_gen_winf1.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+max.sy.log: max.sy
+	@p='max.sy'; \
+	b='max.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+array_sum_2_5.sy.log: array_sum_2_5.sy
+	@p='array_sum_2_5.sy'; \
+	b='array_sum_2_5.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+parity-AIG-d0.sy.log: parity-AIG-d0.sy
+	@p='parity-AIG-d0.sy'; \
+	b='parity-AIG-d0.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+twolets1.sy.log: twolets1.sy
+	@p='twolets1.sy'; \
+	b='twolets1.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+array_search_2.sy.log: array_search_2.sy
+	@p='array_search_2.sy'; \
+	b='array_search_2.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+hd-01-d1-prog.sy.log: hd-01-d1-prog.sy
+	@p='hd-01-d1-prog.sy'; \
+	b='hd-01-d1-prog.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+icfp_28_10.sy.log: icfp_28_10.sy
+	@p='icfp_28_10.sy'; \
+	b='icfp_28_10.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+const-var-test.sy.log: const-var-test.sy
+	@p='const-var-test.sy'; \
+	b='const-var-test.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+no-syntax-test.sy.log: no-syntax-test.sy
+	@p='no-syntax-test.sy'; \
+	b='no-syntax-test.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+no-flat-simp.sy.log: no-flat-simp.sy
+	@p='no-flat-simp.sy'; \
+	b='no-flat-simp.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+twolets2-orig.sy.log: twolets2-orig.sy
+	@p='twolets2-orig.sy'; \
+	b='twolets2-orig.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+let-ringer.sy.log: let-ringer.sy
+	@p='let-ringer.sy'; \
+	b='let-ringer.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+let-simp.sy.log: let-simp.sy
+	@p='let-simp.sy'; \
+	b='let-simp.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tl-type.sy.log: tl-type.sy
+	@p='tl-type.sy'; \
+	b='tl-type.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dup-op.sy.log: dup-op.sy
+	@p='dup-op.sy'; \
+	b='dup-op.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+nflat-fwd.sy.log: nflat-fwd.sy
+	@p='nflat-fwd.sy'; \
+	b='nflat-fwd.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+nflat-fwd-3.sy.log: nflat-fwd-3.sy
+	@p='nflat-fwd-3.sy'; \
+	b='nflat-fwd-3.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+no-syntax-test-bool.sy.log: no-syntax-test-bool.sy
+	@p='no-syntax-test-bool.sy'; \
+	b='no-syntax-test-bool.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+inv-example.sy.log: inv-example.sy
+	@p='inv-example.sy'; \
+	b='inv-example.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+uminus_one.sy.log: uminus_one.sy
+	@p='uminus_one.sy'; \
+	b='uminus_one.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sygus-dt.sy.log: sygus-dt.sy
+	@p='sygus-dt.sy'; \
+	b='sygus-dt.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dt-no-syntax.sy.log: dt-no-syntax.sy
+	@p='dt-no-syntax.sy'; \
+	b='dt-no-syntax.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+list-head-x.sy.log: list-head-x.sy
+	@p='list-head-x.sy'; \
+	b='list-head-x.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+clock-inc-tuple.sy.log: clock-inc-tuple.sy
+	@p='clock-inc-tuple.sy'; \
+	b='clock-inc-tuple.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dt-test-ns.sy.log: dt-test-ns.sy
+	@p='dt-test-ns.sy'; \
+	b='dt-test-ns.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+no-mention.sy.log: no-mention.sy
+	@p='no-mention.sy'; \
+	b='no-mention.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+max2-univ.sy.log: max2-univ.sy
+	@p='max2-univ.sy'; \
+	b='max2-univ.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+strings-small.sy.log: strings-small.sy
+	@p='strings-small.sy'; \
+	b='strings-small.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+strings-unconstrained.sy.log: strings-unconstrained.sy
+	@p='strings-unconstrained.sy'; \
+	b='strings-unconstrained.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+# error.cvc
+#endif
+
+# disabled tests, yet distribute
+#EXTRA_DIST += \
+# setofsets-disequal.smt2
+# no-syntax-test-no-si.sy
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/sygus/array_search_2.sy b/test/regress/regress0/sygus/array_search_2.sy
new file mode 100644
index 0000000..e6683ce
--- /dev/null
+++ b/test/regress/regress0/sygus/array_search_2.sy
@@ -0,0 +1,11 @@
+; EXPECT: unsat
+; COMMAND-LINE: --cegqi-si=all --no-dump-synth
+(set-logic LIA)
+(synth-fun findIdx ( (y1 Int) (y2 Int) (k1 Int)) Int ((Start Int ( 0 1 2 y1 y2 k1 (ite BoolExpr Start Start))) (BoolExpr Bool ((< Start Start) (<= Start Start) (> Start Start) (>= Start Start)))))
+(declare-var x1 Int)
+(declare-var x2 Int)
+(declare-var k Int)
+(constraint (=> (< x1 x2) (=> (< k x1) (= (findIdx x1 x2 k) 0))))
+(constraint (=> (< x1 x2) (=> (> k x2) (= (findIdx x1 x2 k) 2))))
+(constraint (=> (< x1 x2) (=> (and (> k x1) (< k x2)) (= (findIdx x1 x2 k) 1))))
+(check-synth)
diff --git a/test/regress/regress0/sygus/array_sum_2_5.sy b/test/regress/regress0/sygus/array_sum_2_5.sy
new file mode 100644
index 0000000..387ce94
--- /dev/null
+++ b/test/regress/regress0/sygus/array_sum_2_5.sy
@@ -0,0 +1,9 @@
+; EXPECT: unsat
+; COMMAND-LINE: --cegqi-si=all --no-dump-synth
+(set-logic LIA)
+(synth-fun findSum ( (y1 Int) (y2 Int) )Int ((Start Int ( 0 1 2 y1 y2 (+ Start Start)    (ite BoolExpr Start Start))) (BoolExpr Bool ((< Start Start) (<= Start Start) (> Start Start) (>= Start Start)))))
+(declare-var x1 Int)
+(declare-var x2 Int)
+(constraint (=> (> (+ x1 x2) 5) (= (findSum x1 x2 ) (+ x1 x2))))
+(constraint (=> (<= (+ x1 x2) 5) (= (findSum x1 x2 ) 0)))
+(check-synth)
diff --git a/test/regress/regress0/sygus/clock-inc-tuple.sy b/test/regress/regress0/sygus/clock-inc-tuple.sy
new file mode 100644
index 0000000..3519319
--- /dev/null
+++ b/test/regress/regress0/sygus/clock-inc-tuple.sy
@@ -0,0 +1,14 @@
+; EXPECT: unsat
+; COMMAND-LINE: --cegqi-si=all --no-dump-synth
+
+(set-logic ALL_SUPPORTED)
+(declare-var m Int)
+(declare-var s Int)
+(declare-var inc Int)
+(declare-datatypes () ( (tuple2 (tuple2 (_m Int) (_s Int))) ))
+
+(synth-fun x12 ((m Int) (s Int) (inc Int)) tuple2)
+(constraint (=> 
+(and (>= m 0) (>= s 0) (< s 3) (> inc 0)) 
+(and (>= (_m (x12 m s inc)) 0) (>= (_s (x12 m s inc)) 0) (< (_s (x12 m s inc)) 3) (= (+ (* (_m (x12 m s inc)) 3) (_s (x12 m s inc))) (+ (+ (* m 3) s) inc)))))
+(check-synth)
diff --git a/test/regress/regress0/sygus/commutative.sy b/test/regress/regress0/sygus/commutative.sy
new file mode 100644
index 0000000..f675bdd
--- /dev/null
+++ b/test/regress/regress0/sygus/commutative.sy
@@ -0,0 +1,22 @@
+; EXPECT: unsat
+; COMMAND-LINE: --no-dump-synth
+
+(set-logic LIA)
+
+(synth-fun comm ((x Int) (y Int)) Int
+    ((Start Int (x
+                 y
+                 (+ Start Start)
+                 (- Start Start)
+                 ))
+          ))
+
+(declare-var x Int)
+(declare-var y Int)
+
+(constraint (= (comm x y) (comm y x)))
+
+
+(check-synth)
+
+; (+ x y) is a valid solution
diff --git a/test/regress/regress0/sygus/const-var-test.sy b/test/regress/regress0/sygus/const-var-test.sy
new file mode 100644
index 0000000..b79b7ee
--- /dev/null
+++ b/test/regress/regress0/sygus/const-var-test.sy
@@ -0,0 +1,26 @@
+; EXPECT: unsat
+; COMMAND-LINE: --cegqi-si=all --no-dump-synth
+
+(set-logic LIA)
+
+(synth-fun max2 ((x Int) (y Int)) Int
+    ((Start Int ((Variable Int)
+                 (Constant Int)
+                 (+ Start Start)
+                 (- Start Start)
+                 (ite StartBool Start Start)))
+     (StartBool Bool ((and StartBool StartBool)
+                      (or  StartBool StartBool)
+                      (not StartBool)
+                      (<=  Start Start)
+                      (=   Start Start)
+                      (>=  Start Start)))))
+
+(declare-var x Int)
+(declare-var y Int)
+
+(constraint (= (max2 x y) (+ x y 500)))
+
+
+(check-synth)
+
diff --git a/test/regress/regress0/sygus/constant.sy b/test/regress/regress0/sygus/constant.sy
new file mode 100644
index 0000000..5c48f5e
--- /dev/null
+++ b/test/regress/regress0/sygus/constant.sy
@@ -0,0 +1,23 @@
+; EXPECT: unsat
+; COMMAND-LINE: --no-dump-synth
+
+(set-logic LIA)
+
+(synth-fun constant ((x Int)) Int
+    ((Start Int (x
+                 0
+                 1
+                 (+ Start Start)
+                 (- Start Start)
+                 ))
+          ))
+
+(declare-var x Int)
+(declare-var y Int)
+
+(constraint (= (constant x) (constant y)))
+
+
+(check-synth)
+
+; 0, 1, (- x x) are valid solutions
diff --git a/test/regress/regress0/sygus/dt-no-syntax.sy b/test/regress/regress0/sygus/dt-no-syntax.sy
new file mode 100644
index 0000000..42382ac
--- /dev/null
+++ b/test/regress/regress0/sygus/dt-no-syntax.sy
@@ -0,0 +1,12 @@
+; COMMAND-LINE: --no-dump-synth
+; EXPECT: unsat
+(set-logic LIA)
+
+(declare-datatypes () ((List (cons (head Int) (tail List)) (nil))))
+
+(synth-fun f ((x Int)) List)
+
+(declare-var x Int)
+
+(constraint (= (f x) (cons (+ x 1) nil)))
+(check-synth)
diff --git a/test/regress/regress0/sygus/dt-test-ns.sy b/test/regress/regress0/sygus/dt-test-ns.sy
new file mode 100644
index 0000000..0520650
--- /dev/null
+++ b/test/regress/regress0/sygus/dt-test-ns.sy
@@ -0,0 +1,14 @@
+; EXPECT: unsat
+; COMMAND-LINE: --cegqi-si=all --no-dump-synth
+(set-logic LIA)
+
+(declare-datatypes () ((List (cons (head Int) (tail List)) (nil))))
+
+(synth-fun f ((x Int)) List)
+
+(declare-var x Int)
+
+(constraint (is-cons (f x)))
+(constraint (and (= (head (f x)) x) (= (head (f x)) (+ 5 (head (tail (f x)))))))
+(check-synth)
+
diff --git a/test/regress/regress0/sygus/dup-op.sy b/test/regress/regress0/sygus/dup-op.sy
new file mode 100644
index 0000000..bed9972
--- /dev/null
+++ b/test/regress/regress0/sygus/dup-op.sy
@@ -0,0 +1,11 @@
+; EXPECT: unsat
+; COMMAND-LINE: --cegqi-si=none --no-dump-synth
+(set-logic LIA)
+(synth-fun f ((x Int)) Int
+    ((Start Int ((+ Con Con) (+ Start Start) x))
+     (Con Int (0 1))))
+
+(declare-var x Int)
+(constraint (= (f x) (* 2 x)))
+(check-synth)
+
diff --git a/test/regress/regress0/sygus/enum-test.sy b/test/regress/regress0/sygus/enum-test.sy
new file mode 100644
index 0000000..7b59f5f
--- /dev/null
+++ b/test/regress/regress0/sygus/enum-test.sy
@@ -0,0 +1,8 @@
+; EXPECT: unsat
+; COMMAND-LINE: --cegqi-si=all --no-dump-synth
+(set-logic LIA)
+(define-sort D (Enum (a b)))
+(define-fun f ((x D)) Int (ite (= x D::a) 3 7))
+(synth-fun g () D ((Start D (D::a D::b))))
+(constraint (= (f g) 7))
+(check-synth)
diff --git a/test/regress/regress0/sygus/hd-01-d1-prog.sy b/test/regress/regress0/sygus/hd-01-d1-prog.sy
new file mode 100644
index 0000000..2e6c6ef
--- /dev/null
+++ b/test/regress/regress0/sygus/hd-01-d1-prog.sy
@@ -0,0 +1,22 @@
+; EXPECT: unsat
+; COMMAND-LINE: --cegqi --no-dump-synth
+
+(set-logic BV)
+
+(define-fun hd01 ((x (BitVec 32))) (BitVec 32) (bvand x (bvsub x #x00000001)))
+
+(synth-fun f ((x (BitVec 32))) (BitVec 32)
+    ((Start (BitVec 32) ((bvand Start Start)
+                         (bvsub Start Start)
+             (bvor Start Start)
+             (bvadd Start Start)
+             (bvxor Start Start)
+                         x
+             #x00000000
+             #xFFFFFFFF
+                         #x00000001))))
+
+(declare-var x (BitVec 32))
+(constraint (= (hd01 x) (f x)))
+(check-synth)
+
diff --git a/test/regress/regress0/sygus/icfp_28_10.sy b/test/regress/regress0/sygus/icfp_28_10.sy
new file mode 100644
index 0000000..74e0541
--- /dev/null
+++ b/test/regress/regress0/sygus/icfp_28_10.sy
@@ -0,0 +1,40 @@
+; EXPECT: unsat
+; COMMAND-LINE: --no-dump-synth
+
+(set-logic BV)
+
+(define-fun shr1 ((x (BitVec 64))) (BitVec 64) (bvlshr x #x0000000000000001))
+(define-fun shr4 ((x (BitVec 64))) (BitVec 64) (bvlshr x #x0000000000000004))
+(define-fun shr16 ((x (BitVec 64))) (BitVec 64) (bvlshr x #x0000000000000010))
+(define-fun shl1 ((x (BitVec 64))) (BitVec 64) (bvshl x #x0000000000000001))
+(define-fun if0 ((x (BitVec 64)) (y (BitVec 64)) (z (BitVec 64))) (BitVec 64) (ite (= x #x0000000000000001) y z))
+
+(synth-fun f ( (x (BitVec 64))) (BitVec 64)
+(
+
+(Start (BitVec 64) (#x0000000000000000 #x0000000000000001 x (bvnot Start)
+                    (shl1 Start)
+        (shr1 Start)
+        (shr4 Start)
+        (shr16 Start)
+        (bvand Start Start)
+        (bvor Start Start)
+        (bvxor Start Start)
+        (bvadd Start Start)
+        (if0 Start Start Start)
+ ))
+)
+)
+
+
+(constraint (= (f #xd74594057974e439) #x0000d74594057974))
+(constraint (= (f #x74641ebeee92e8a2) #x000074641ebeee92))
+(constraint (= (f #x91c80141d7ec76b1) #x000091c80141d7ec))
+(constraint (= (f #xe4e55862e5ee4bec) #x0000e4e55862e5ee))
+(constraint (= (f #x367da67ede4260ce) #x0000367da67ede42))
+(constraint (= (f #xa365eb36246b3d8e) #x0000a365eb36246b))
+(constraint (= (f #xcd8a44a6d4c09c29) #x0000cd8a44a6d4c0))
+(constraint (= (f #xa97e9b9b7970433d) #x0000a97e9b9b7970))
+(constraint (= (f #x474dec0dd75d6894) #x0000474dec0dd75d))
+(constraint (= (f #x12430014ed058b24) #x000012430014ed05))
+(check-synth)
diff --git a/test/regress/regress0/sygus/inv-example.sy b/test/regress/regress0/sygus/inv-example.sy
new file mode 100644
index 0000000..b564259
--- /dev/null
+++ b/test/regress/regress0/sygus/inv-example.sy
@@ -0,0 +1,12 @@
+; EXPECT: unsat
+; COMMAND-LINE: --no-dump-synth
+(set-logic LIA)
+(synth-inv inv-f ((x Int) (y Int) (b Bool)))
+(declare-primed-var x Int)
+(declare-primed-var y Int)
+(declare-primed-var b Bool)
+(define-fun pre-f ((x Int) (y Int) (b Bool)) Bool (and (and (>= x 5) (<= x 9)) (and (>= y 1) (<= y 3))))
+(define-fun trans-f ((x Int) (y Int) (b Bool) (x! Int) (y! Int) (b! Bool)) Bool (and (and (= b! b) (= y! x)) (ite b (= x! (+ x 10)) (= x! (+ x 12)))))
+(define-fun post-f ((x Int) (y Int) (b Bool)) Bool (<= y x))
+(inv-constraint inv-f pre-f trans-f post-f)
+(check-synth)
diff --git a/test/regress/regress0/sygus/let-ringer.sy b/test/regress/regress0/sygus/let-ringer.sy
new file mode 100644
index 0000000..d5d40ac
--- /dev/null
+++ b/test/regress/regress0/sygus/let-ringer.sy
@@ -0,0 +1,14 @@
+; EXPECT: unsat
+; COMMAND-LINE: --cegqi-si=all --no-dump-synth
+(set-logic LIA)
+(define-fun g ((x Int)) Int (ite (= x 1) 15 19))
+(synth-fun f ((x Int)) Int
+    ((Start Int (x
+                 0
+                 1
+                 (- Start Start)
+                 (let ((z Int Start) (w Int Start)) (+ z (+ x (+ x (+ Start (+ 1 (+ (g w) z)))))))))))
+                 
+(declare-var x Int)
+(constraint (= (f x) (+ (* 4 x) 15)))
+(check-synth)
diff --git a/test/regress/regress0/sygus/let-simp.sy b/test/regress/regress0/sygus/let-simp.sy
new file mode 100644
index 0000000..d07f6a7
--- /dev/null
+++ b/test/regress/regress0/sygus/let-simp.sy
@@ -0,0 +1,15 @@
+; EXPECT: unsat
+; COMMAND-LINE: --cegqi-si=all --no-dump-synth
+(set-logic LIA)
+(synth-fun f ((x Int) (y Int)) Int
+    ((Start Int (x
+                 y
+                 0
+                 (- Start Start)
+                 (let ((z Int Start)) (+ z z))))))
+
+(declare-var x Int)
+(declare-var y Int)
+(constraint (= (f x y) (* 3 x)))
+(check-synth)
+
diff --git a/test/regress/regress0/sygus/list-head-x.sy b/test/regress/regress0/sygus/list-head-x.sy
new file mode 100644
index 0000000..21362dc
--- /dev/null
+++ b/test/regress/regress0/sygus/list-head-x.sy
@@ -0,0 +1,13 @@
+; EXPECT: unsat
+; COMMAND-LINE: --cegqi-si=all --no-dump-synth
+(set-logic ALL_SUPPORTED)
+
+(declare-datatypes () ((List (cons (head Int) (tail List)) (nil))))
+
+(synth-fun f ((x Int)) List)
+
+(declare-var x Int)
+
+(constraint (is-cons (f x)))
+(constraint (= (head (f x)) (+ x 7)))
+(check-synth)
diff --git a/test/regress/regress0/sygus/max.smt2 b/test/regress/regress0/sygus/max.smt2
new file mode 100644
index 0000000..97c223e
--- /dev/null
+++ b/test/regress/regress0/sygus/max.smt2
@@ -0,0 +1,52 @@
+; EXPECT: unsat
+; COMMAND-LINE: --cegqi
+
+(set-logic UFDTLIA)
+
+(declare-datatypes () ((start (startx)
+                              (starty)
+                              (start1)
+                              (start0)
+                              (startplus (startplus1 start) (startplus2 start))
+                              (startminus (startminus1 start) (startminus2 start))
+                              (startite (startite1 startbool) (startite2 start) (startite3 start)))
+                       (startbool (startand (startand1 startbool) (startand2 startbool))
+                                  (startor (startor1 startbool) (startor2 startbool))
+                                  (startnot (startnot1 startbool))
+                                  (startleq (startleq1 start) (startleq2 start))
+                                  (starteq (starteq1 start) (starteq2 start))
+                                  (startgeq (startgeq1 start) (startgeq2 start))
+                                  )))
+
+(declare-fun eval (start Int Int) Int)
+(declare-fun evalbool (startbool Int Int) Bool)
+
+(assert (forall ((x Int) (y Int)) (! (= (eval startx x y) x) :pattern ((eval startx x y)))))
+(assert (forall ((x Int) (y Int)) (! (= (eval starty x y) y) :pattern ((eval starty x y)))))
+(assert (forall ((x Int) (y Int)) (! (= (eval start0 x y) 0) :pattern ((eval start0 x y)))))
+(assert (forall ((x Int) (y Int)) (! (= (eval start1 x y) 1) :pattern ((eval start1 x y)))))
+(assert (forall ((s1 start) (s2 start) (x Int) (y Int)) (! (= (eval (startplus s1 s2) x y) (+ (eval s1 x y) (eval s2 x y))) :pattern ((eval (startplus s1 s2) x y)))))
+(assert (forall ((s1 start) (s2 start) (x Int) (y Int)) (! (= (eval (startminus s1 s2) x y) (- (eval s1 x y) (eval s2 x y))) :pattern ((eval (startminus s1 s2) x y)))))
+(assert (forall ((s1 startbool) (s2 start) (s3 start) (x Int) (y Int)) (! (= (eval (startite s1 s2 s3) x y) (ite (evalbool s1 x y) (eval s2 x y) (eval s3 x y)))
+                                                                          :pattern ((eval (startite s1 s2 s3) x y)))))
+
+(assert (forall ((s1 startbool) (s2 startbool) (x Int) (y Int)) (! (= (evalbool (startand s1 s2) x y) (and (evalbool s1 x y) (evalbool s2 x y)))
+                                                                   :pattern ((evalbool (startand s1 s2) x y)))))
+(assert (forall ((s1 startbool) (s2 startbool) (x Int) (y Int)) (! (= (evalbool (startor s1 s2) x y) (or (evalbool s1 x y) (evalbool s2 x y)))
+                                                                   :pattern ((evalbool (startor s1 s2) x y)))))
+(assert (forall ((s1 startbool) (x Int) (y Int)) (! (= (evalbool (startnot s1) x y) (not (evalbool s1 x y)))
+                                                    :pattern ((evalbool (startnot s1) x y)))))
+(assert (forall ((s1 start) (s2 start) (x Int) (y Int)) (! (= (evalbool (startleq s1 s2) x y) (<= (eval s1 x y) (eval s2 x y)))
+                                                           :pattern ((evalbool (startleq s1 s2) x y)))))
+(assert (forall ((s1 start) (s2 start) (x Int) (y Int)) (! (= (evalbool (starteq s1 s2) x y) (= (eval s1 x y) (eval s2 x y)))
+                                                           :pattern ((evalbool (starteq s1 s2) x y)))))
+(assert (forall ((s1 start) (s2 start) (x Int) (y Int)) (! (= (evalbool (startgeq s1 s2) x y) (>= (eval s1 x y) (eval s2 x y)))
+                                                           :pattern ((evalbool (startgeq s1 s2) x y)))))
+
+
+(define-fun P ((fmax start) (x Int) (y Int)) Bool (and (>= (eval fmax x y) x) (>= (eval fmax x y) y) (or (= (eval fmax x y) x) (= (eval fmax x y) y))))
+
+(assert (forall ((fmax start)) (! (exists ((x Int) (y Int)) (not (P fmax x y))) :sygus)))
+
+
+(check-sat)
diff --git a/test/regress/regress0/sygus/max.sy b/test/regress/regress0/sygus/max.sy
new file mode 100644
index 0000000..e6e3de5
--- /dev/null
+++ b/test/regress/regress0/sygus/max.sy
@@ -0,0 +1,33 @@
+; EXPECT: unsat
+; COMMAND-LINE: --cegqi-si=all --no-dump-synth
+(set-logic LIA)
+
+(synth-fun max ((x Int) (y Int)) Int
+  ((Start Int (0 1 x y
+               (+ Start Start)
+               (- Start Start)
+               (ite StartBool Start Start)))
+   (StartBool Bool ((and StartBool StartBool)
+                    (not StartBool)
+                    (<= Start Start)))))
+
+;(synth-fun min ((x Int) (y Int)) Int
+;  ((Start Int ((Constant Int) (Variable Int)
+;               (+ Start Start)
+;               (- Start Start)
+;               (ite StartBool Start Start)))
+;   (StartBool Bool ((and StartBool StartBool)
+;                    (not StartBool)
+;                    (<= Start Start)))))
+
+(declare-var x Int)
+(declare-var y Int)
+
+(constraint (>= (max x y) x))
+(constraint (>= (max x y) y))
+(constraint (or (= x (max x y))
+                (= y (max x y))))
+;(constraint (= (+ (max x y) (min x y))
+;               (+ x y)))
+
+(check-synth)
diff --git a/test/regress/regress0/sygus/max2-univ.sy b/test/regress/regress0/sygus/max2-univ.sy
new file mode 100644
index 0000000..927148d
--- /dev/null
+++ b/test/regress/regress0/sygus/max2-univ.sy
@@ -0,0 +1,12 @@
+; EXPECT: unsat
+; COMMAND-LINE: --no-dump-synth
+; Synthesize the maximum of 2 integers, but property has 4 variables (requires 2 passes)
+(set-logic LIA)
+(synth-fun max2 ((x Int) (y Int)) Int)
+(declare-var x Int)
+(declare-var y Int)
+(declare-var r Int)
+(declare-var w Int)
+(constraint (=> (< r 0) (=> (or (and (= x w) (= y (+ w r))) (and (= x (+ w r)) (= y w))) (= (max2 x y) w))))
+(check-synth)
+
diff --git a/test/regress/regress0/sygus/multi-fun-polynomial2.sy b/test/regress/regress0/sygus/multi-fun-polynomial2.sy
new file mode 100644
index 0000000..c238de5
--- /dev/null
+++ b/test/regress/regress0/sygus/multi-fun-polynomial2.sy
@@ -0,0 +1,35 @@
+; EXPECT: unsat
+; COMMAND-LINE: --no-dump-synth
+
+(set-logic LIA)
+
+(synth-fun addExpr1 ((x Int) (y Int)) Int
+    ((Start Int (x
+                 y
+     0
+     1
+                 (+ Start Start)
+                 (- Start Start)
+                 ))
+          ))
+
+(synth-fun addExpr2 ((x Int) (y Int)) Int
+    ((Start Int (x
+                 y
+     0
+     1
+                 (+ Start Start)
+                 (- Start Start)
+                 ))
+          ))
+
+
+(declare-var x Int)
+(declare-var y Int)
+
+(constraint (= (+ (addExpr1 x y) (addExpr2 y x)) (- x y)))
+
+
+(check-synth)
+
+; (x, y), (x-y, 0) ... are valid solutions
diff --git a/test/regress/regress0/sygus/nflat-fwd-3.sy b/test/regress/regress0/sygus/nflat-fwd-3.sy
new file mode 100644
index 0000000..d3624a7
--- /dev/null
+++ b/test/regress/regress0/sygus/nflat-fwd-3.sy
@@ -0,0 +1,11 @@
+; EXPECT: unsat
+; COMMAND-LINE: --no-dump-synth
+(set-logic LIA)
+(synth-fun f ((x Int)) Int
+    ((Start Int ((+ (+ Con Con) Con) x))
+     (Con Int (0 1))))
+
+(declare-var x Int)
+(constraint (= (f x) 2))
+(check-synth)
+
diff --git a/test/regress/regress0/sygus/nflat-fwd.sy b/test/regress/regress0/sygus/nflat-fwd.sy
new file mode 100644
index 0000000..3f15d59
--- /dev/null
+++ b/test/regress/regress0/sygus/nflat-fwd.sy
@@ -0,0 +1,11 @@
+; EXPECT: unsat
+; COMMAND-LINE: --no-dump-synth
+(set-logic LIA)
+(synth-fun f ((x Int)) Int
+    ((Start Int ((+ Con Con) (+ (+ Start Start) Con) x))
+     (Con Int (0 1))))
+
+(declare-var x Int)
+(constraint (= (f x) (* 2 x)))
+(check-synth)
+
diff --git a/test/regress/regress0/sygus/no-flat-simp.sy b/test/regress/regress0/sygus/no-flat-simp.sy
new file mode 100644
index 0000000..af1284f
--- /dev/null
+++ b/test/regress/regress0/sygus/no-flat-simp.sy
@@ -0,0 +1,20 @@
+; EXPECT: unsat
+; COMMAND-LINE: --no-dump-synth
+
+(set-logic LIA)
+
+(synth-fun f ((x Int) (y Int)) Int
+    ((Start Int (x
+                 y
+                 0
+                 (- Start Start)
+                 (+ Start (+ Start Start))))))
+
+(declare-var x Int)
+(declare-var y Int)
+
+(constraint (= (f x y) (+ x y)))
+
+
+(check-synth)
+
diff --git a/test/regress/regress0/sygus/no-mention.sy b/test/regress/regress0/sygus/no-mention.sy
new file mode 100644
index 0000000..60efc1b
--- /dev/null
+++ b/test/regress/regress0/sygus/no-mention.sy
@@ -0,0 +1,15 @@
+; EXPECT: unsat
+; COMMAND-LINE: --no-dump-synth
+(set-logic LIA)
+
+(synth-fun p ((x Int) (y Int)) Int)
+(synth-fun m ((x Int) (y Int)) Int)
+(synth-fun n ((x Int)) Int)
+
+(declare-var x Int)
+(declare-var y Int)
+
+(constraint (>= (m x y) x))
+
+(check-synth)
+
diff --git a/test/regress/regress0/sygus/no-syntax-test-bool.sy b/test/regress/regress0/sygus/no-syntax-test-bool.sy
new file mode 100644
index 0000000..ee27b30
--- /dev/null
+++ b/test/regress/regress0/sygus/no-syntax-test-bool.sy
@@ -0,0 +1,15 @@
+; EXPECT: unsat
+; COMMAND-LINE: --no-dump-synth
+
+(set-logic LIA)
+
+(synth-fun f ((x Int) (y Int)) Bool)
+
+(declare-var x Int)
+(declare-var y Int)
+
+(constraint (= (f x y) (>= (+ x y) 500)))
+
+
+(check-synth)
+
diff --git a/test/regress/regress0/sygus/no-syntax-test.sy b/test/regress/regress0/sygus/no-syntax-test.sy
new file mode 100644
index 0000000..2b3d5f3
--- /dev/null
+++ b/test/regress/regress0/sygus/no-syntax-test.sy
@@ -0,0 +1,15 @@
+; EXPECT: unsat
+; COMMAND-LINE: --no-dump-synth
+
+(set-logic LIA)
+
+(synth-fun f ((x Int) (y Int)) Int)
+
+(declare-var x Int)
+(declare-var y Int)
+
+(constraint (= (f x y) (+ x y 500)))
+
+
+(check-synth)
+
diff --git a/test/regress/regress0/sygus/parity-AIG-d0.sy b/test/regress/regress0/sygus/parity-AIG-d0.sy
new file mode 100644
index 0000000..3cc577b
--- /dev/null
+++ b/test/regress/regress0/sygus/parity-AIG-d0.sy
@@ -0,0 +1,30 @@
+; EXPECT: unsat
+; COMMAND-LINE: --cegqi-si=all --no-dump-synth
+(set-logic BV)
+
+(define-fun parity ((a Bool) (b Bool) (c Bool) (d Bool)) Bool
+  (xor (not (xor a b)) (not (xor c d))))
+
+(synth-fun AIG ((a Bool) (b Bool) (c Bool) (d Bool)) Bool
+           ((Start Bool ((and Start Start) (not Start) a b c d))))
+
+(declare-var a Bool)
+(declare-var b Bool)
+(declare-var c Bool)
+(declare-var d Bool)
+
+(constraint
+ (= (parity a b c d) 
+    (and (AIG a b c d)
+        (not (and (and (not (and a b)) (not (and (not a) (not b))))
+               (and (not (and (not c) (not d))) (not (and c d))))))))
+
+
+(check-synth)
+
+; Solution:
+;(define-fun AIG ((a Bool) (b Bool) (c Bool) (d Bool)) Bool
+;(not
+;  (and
+;   (and (not (and (not a) b)) (not (and d (not c))))
+;   (and (not (and (not b) a)) (not (and (not d) c)))))) 
diff --git a/test/regress/regress0/sygus/strings-small.sy b/test/regress/regress0/sygus/strings-small.sy
new file mode 100644
index 0000000..40346bc
--- /dev/null
+++ b/test/regress/regress0/sygus/strings-small.sy
@@ -0,0 +1,35 @@
+; EXPECT: unsat
+; COMMAND-LINE: --no-dump-synth
+(set-logic SLIA)
+(synth-fun f ((firstname String) (lastname String)) String
+((Start String (ntString))
+
+(ntString String (
+firstname 
+lastname 
+" "
+(str.++ ntString ntString)))
+
+(ntInt Int (
+0 
+1 
+2
+(+ ntInt ntInt)
+(- ntInt ntInt)
+(str.len ntString)
+(str.to.int ntString)
+(str.indexof ntString ntString ntInt)))
+
+(ntBool Bool (
+true 
+false
+(str.prefixof ntString ntString)
+(str.suffixof ntString ntString)
+(str.contains ntString ntString)))
+
+))
+
+(constraint (= (f "Nancy" "FreeHafer") "Nancy FreeHafer"))
+
+(check-synth)
+
diff --git a/test/regress/regress0/sygus/strings-unconstrained.sy b/test/regress/regress0/sygus/strings-unconstrained.sy
new file mode 100644
index 0000000..38e69e3
--- /dev/null
+++ b/test/regress/regress0/sygus/strings-unconstrained.sy
@@ -0,0 +1,15 @@
+; EXPECT: unsat
+; COMMAND-LINE: --no-dump-synth
+(set-logic SLIA)
+(synth-fun f ((firstname String) (lastname String)) String
+((Start String (ntString))
+
+(ntString String (
+firstname 
+lastname 
+" "
+(str.++ ntString ntString)))
+))
+
+(check-synth)
+
diff --git a/test/regress/regress0/sygus/sygus-dt.sy b/test/regress/regress0/sygus/sygus-dt.sy
new file mode 100644
index 0000000..be67491
--- /dev/null
+++ b/test/regress/regress0/sygus/sygus-dt.sy
@@ -0,0 +1,16 @@
+; EXPECT: unsat
+; COMMAND-LINE: --no-dump-synth
+
+(set-logic LIA)
+
+(declare-datatypes () ((List (cons (head Int) (tail List)) (nil))))
+(define-fun g ((x Int)) List (cons (+ x 1) nil))
+(define-fun i () List (cons 3 nil))
+
+(synth-fun f ((x Int)) List ((Start List ((g StartInt) i (cons StartInt Start) (nil) (tail Start)))
+                             (StartInt Int (x 0 1 (+ StartInt StartInt)))))
+
+(declare-var x Int)
+
+(constraint (= (f x) (cons x nil)))
+(check-synth)
diff --git a/test/regress/regress0/sygus/sygus-uf.sl b/test/regress/regress0/sygus/sygus-uf.sl
new file mode 100644
index 0000000..95cd877
--- /dev/null
+++ b/test/regress/regress0/sygus/sygus-uf.sl
@@ -0,0 +1,20 @@
+(set-logic LIA)
+
+(declare-fun uf (Int) Int)
+
+(synth-fun f ((x Int) (y Int)) Bool
+  ((Start Bool (true false
+                (<= IntExpr IntExpr)
+                (= IntExpr IntExpr)
+                (and Start Start)
+                (or Start Start)
+                (not Start)))
+   (IntExpr Int (0 1 x y
+                 (+ IntExpr IntExpr)
+                 (- IntExpr IntExpr)))))
+
+(declare-var x Int)
+
+(constraint (f (uf x) (uf x)))
+
+(check-synth)
diff --git a/test/regress/regress0/sygus/tl-type.sy b/test/regress/regress0/sygus/tl-type.sy
new file mode 100644
index 0000000..a698042
--- /dev/null
+++ b/test/regress/regress0/sygus/tl-type.sy
@@ -0,0 +1,11 @@
+; EXPECT: unsat
+; COMMAND-LINE: --cegqi-si=none --no-dump-synth
+(set-logic LIA)
+(synth-fun f ((x Int)) Int
+    ((Start Int (Term (+ Start Start)))
+     (Term Int (x 0))))
+
+(declare-var x Int)
+(constraint (= (f x) (* 3 x)))
+(check-synth)
+
diff --git a/test/regress/regress0/sygus/twolets1.sy b/test/regress/regress0/sygus/twolets1.sy
new file mode 100644
index 0000000..b016872
--- /dev/null
+++ b/test/regress/regress0/sygus/twolets1.sy
@@ -0,0 +1,40 @@
+; EXPECT: unsat
+; COMMAND-LINE: --cegqi-si=all --no-dump-synth
+(set-logic LIA)
+
+;; f1 is x plus 2 ;; f2 is 2x plus 5
+
+(define-fun let0 ((x Int) (y Int) (z Int)) Int (+ (+ y x) z))
+
+(synth-fun f1 ((x Int)) Int
+     (
+     (Start Int (
+            (let0 Intx CInt CInt)
+            )
+     )
+     (Intx Int (x))
+     (CInt Int (0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15))
+
+     )
+)
+
+(synth-fun f2 ((x Int)) Int
+     (
+     (Start Int (x
+            (let0 Intx Start CInt)
+            )
+     )
+     (Intx Int (x))
+     (CInt Int (0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15))
+
+     )
+)
+
+
+(declare-var x Int)
+
+(constraint (= (+ (f1 x)(f2 x)) (+ (+ x x) (+ x 8))))
+(constraint (= (- (f2 x)(f1 x)) (+ x 2)))
+
+(check-synth)
+
diff --git a/test/regress/regress0/sygus/twolets2-orig.sy b/test/regress/regress0/sygus/twolets2-orig.sy
new file mode 100644
index 0000000..70d1ffa
--- /dev/null
+++ b/test/regress/regress0/sygus/twolets2-orig.sy
@@ -0,0 +1,28 @@
+; EXPECT: unsat
+; COMMAND-LINE: --cegqi-si=all --no-dump-synth
+(set-logic LIA)
+(synth-fun f1 ((x Int)) Int
+     (
+     (Start Int (
+            (let ((y Int CInt) (z Int CInt)) (+ (+ y x) z))
+            )
+     )
+     (CInt Int (0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15))
+
+     )
+)
+(synth-fun f2 ((x Int)) Int
+     (
+     (Start Int (x
+            (let ((y Int Start) (z Int CInt)) (+ (+ y x) z))
+            )
+     )
+     (CInt Int (0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15))
+
+     )
+)
+(declare-var x1 Int)
+(declare-var x2 Int)
+(constraint (= (+ (f1 x1)(f2 x2)) (+ (+ x2 x2) (+ x1 8))))
+(check-synth)
+
diff --git a/test/regress/regress0/sygus/uminus_one.sy b/test/regress/regress0/sygus/uminus_one.sy
new file mode 100644
index 0000000..e98be94
--- /dev/null
+++ b/test/regress/regress0/sygus/uminus_one.sy
@@ -0,0 +1,7 @@
+; EXPECT: unsat
+; COMMAND-LINE: --no-dump-synth
+(set-logic LIA)
+(synth-fun f ((x Int)) Int ((Start Int ((- 1)))))
+(declare-var x Int)
+(constraint (= (f x) (- 1)))
+(check-synth)
diff --git a/test/regress/regress0/sygus/unbdd_inv_gen_winf1.sy b/test/regress/regress0/sygus/unbdd_inv_gen_winf1.sy
new file mode 100644
index 0000000..300b6b6
--- /dev/null
+++ b/test/regress/regress0/sygus/unbdd_inv_gen_winf1.sy
@@ -0,0 +1,36 @@
+; EXPECT: unsat
+; COMMAND-LINE: --no-dump-synth
+
+(set-logic LIA)
+(synth-fun inv ((x Int)) Bool
+    (
+        (Start Bool ((and AtomicFormula AtomicFormula)
+                     (or AtomicFormula AtomicFormula)))
+        (AtomicFormula Bool ((<= Sum Const) (= Sum Const)))
+        (Sum Int ((+ Term Term)))
+        (Term Int ((* Sign Var)))
+        (Sign Int (0 1 -1))
+        (Var Int (x))
+        (Const Int ((+ Const Const) (- Const Const) 0 1))
+    )
+)
+
+(define-fun implies ((b1 Bool) (b2 Bool)) Bool (or (not b1) b2))
+(define-fun and3 ((b1 Bool) (b2 Bool) (b3 Bool)) Bool (and (and b1 b2) b3))
+(define-fun and4 ((b1 Bool) (b2 Bool) (b3 Bool) (b4 Bool)) Bool (and (and3 b1 b2 b3) b4))
+(define-fun and5 ((b1 Bool) (b2 Bool) (b3 Bool) (b4 Bool) (b5 Bool)) Bool (and (and4 b1 b2 b3 b4) b5))
+(define-fun and6 ((b1 Bool) (b2 Bool) (b3 Bool) (b4 Bool) (b5 Bool) (b6 Bool)) Bool (and (and5 b1 b2 b3 b4 b5) b6))
+(define-fun or3 ((b1 Bool) (b2 Bool) (b3 Bool)) Bool (or (or b1 b2) b3))
+(define-fun or4 ((b1 Bool) (b2 Bool) (b3 Bool) (b4 Bool)) Bool (or (or3 b1 b2 b3) b4))
+(define-fun or5 ((b1 Bool) (b2 Bool) (b3 Bool) (b4 Bool) (b5 Bool)) Bool (or (or4 b1 b2 b3 b4) b5))
+
+(declare-var s Int)
+
+(declare-var x Int)
+
+(constraint (implies (= x 0) (inv x)))
+(constraint (implies (inv x) (= x 0)))
+(constraint (implies (inv x) (inv x)))
+(constraint (implies (and (inv x) false) (not (= x 0))))
+
+(check-synth)
diff --git a/test/regress/regress0/test11.cvc b/test/regress/regress0/test11.cvc
new file mode 100644
index 0000000..45052de
--- /dev/null
+++ b/test/regress/regress0/test11.cvc
@@ -0,0 +1,7 @@
+x, y : BOOLEAN;
+
+ASSERT (x OR y);
+ASSERT NOT (x OR y);
+
+% EXPECT: valid
+QUERY FALSE;
diff --git a/test/regress/regress0/test9.cvc b/test/regress/regress0/test9.cvc
new file mode 100644
index 0000000..bfe1a32
--- /dev/null
+++ b/test/regress/regress0/test9.cvc
@@ -0,0 +1,4 @@
+% EXPECT: valid
+P,Q:BOOLEAN;
+ASSERT (P OR Q);
+QUERY (P OR Q);
diff --git a/test/regress/regress0/tptp/ARI086=1.p b/test/regress/regress0/tptp/ARI086=1.p
new file mode 100644
index 0000000..f6d2fcb
--- /dev/null
+++ b/test/regress/regress0/tptp/ARI086=1.p
@@ -0,0 +1,32 @@
+%------------------------------------------------------------------------------
+% File     : ARI086=1 : TPTP v5.5.0. Released v5.0.0.
+% Domain   : Arithmetic
+% Problem  : Integer: Sum 2 and 2 is 5
+% Version  : Especial.
+% English  :
+
+% Refs     :
+% Source   : [TPTP]
+% Names    :
+
+% Status   : CounterSatisfiable
+% Rating   : 0.00 v5.2.0, 1.00 v5.0.0
+% Syntax   : Number of formulae    :    1 (   1 unit;   0 type)
+%            Number of atoms       :    1 (   1 equality)
+%            Maximal formula depth :    1 (   1 average)
+%            Number of connectives :    0 (   0   ~;   0   |;   0   &)
+%                                         (   0 <=>;   0  =>;   0  <=;   0 <~>)
+%                                         (   0  ~|;   0  ~&)
+%            Number of type conns  :    0 (   0   >;   0   *;   0   +;   0  <<)
+%            Number of predicates  :    1 (   0 propositional; 2-2 arity)
+%            Number of functors    :    3 (   2 constant; 0-2 arity)
+%            Number of variables   :    0 (   0 sgn;   0   !;   0   ?)
+%            Maximal term depth    :    2 (   2 average)
+%            Arithmetic symbols    :    3 (   0 pred;    1 func;    2 numbers)
+% SPC      : TFF_CSA_EQU_ARI
+
+% Comments :
+%------------------------------------------------------------------------------
+tff(anti_sum_2_2_5,conjecture,
+    ( $sum(2,2) = 5 )).
+%------------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/Axioms/BOO004-0.ax b/test/regress/regress0/tptp/Axioms/BOO004-0.ax
new file mode 100644
index 0000000..e02b4c2
--- /dev/null
+++ b/test/regress/regress0/tptp/Axioms/BOO004-0.ax
@@ -0,0 +1,48 @@
+%--------------------------------------------------------------------------
+% File     : BOO004-0 : TPTP v5.5.0. Released v1.0.0.
+% Domain   : Boolean Algebra
+% Axioms   : Boolean algebra (equality) axioms
+% Version  : [Ver94] (equality) axioms.
+% English  :
+
+% Refs     : [Ver94] Veroff (1994), Problem Set
+% Source   : [Ver94]
+% Names    :
+
+% Status   : Satisfiable
+% Syntax   : Number of clauses    :    8 (   0 non-Horn;   8 unit;   0 RR)
+%            Number of atoms      :    8 (   8 equality)
+%            Maximal clause size  :    1 (   1 average)
+%            Number of predicates :    1 (   0 propositional; 2-2 arity)
+%            Number of functors   :    5 (   2 constant; 0-2 arity)
+%            Number of variables  :   14 (   0 singleton)
+%            Maximal term depth   :    3 (   2 average)
+% SPC      : 
+
+% Comments :
+%--------------------------------------------------------------------------
+cnf(commutativity_of_add,axiom,
+    ( add(X,Y) = add(Y,X) )).
+
+cnf(commutativity_of_multiply,axiom,
+    ( multiply(X,Y) = multiply(Y,X) )).
+
+cnf(distributivity1,axiom,
+    ( add(X,multiply(Y,Z)) = multiply(add(X,Y),add(X,Z)) )).
+
+cnf(distributivity2,axiom,
+    ( multiply(X,add(Y,Z)) = add(multiply(X,Y),multiply(X,Z)) )).
+
+cnf(additive_id1,axiom,
+    ( add(X,additive_identity) = X )).
+
+cnf(multiplicative_id1,axiom,
+    ( multiply(X,multiplicative_identity) = X )).
+
+cnf(additive_inverse1,axiom,
+    ( add(X,inverse(X)) = multiplicative_identity )).
+
+cnf(multiplicative_inverse1,axiom,
+    ( multiply(X,inverse(X)) = additive_identity )).
+
+%--------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/Axioms/SYN000+0.ax b/test/regress/regress0/tptp/Axioms/SYN000+0.ax
new file mode 100644
index 0000000..24ef682
--- /dev/null
+++ b/test/regress/regress0/tptp/Axioms/SYN000+0.ax
@@ -0,0 +1,37 @@
+%------------------------------------------------------------------------------
+% File     : SYN000+0 : TPTP v5.5.0. Released v3.6.0.
+% Domain   : Syntactic
+% Axioms   : A simple include file for FOF
+% Version  : Biased.
+% English  :
+
+% Refs     :
+% Source   : [TPTP]
+% Names    :
+
+% Status   : Satisfiable
+% Syntax   : Number of formulae    :    3 (   3 unit)
+%            Number of atoms       :    3 (   0 equality)
+%            Maximal formula depth :    1 (   1 average)
+%            Number of connectives :    0 (   0 ~  ;   0  |;   0  &)
+%                                         (   0 <=>;   0 =>;   0 <=)
+%                                         (   0 <~>;   0 ~|;   0 ~&)
+%            Number of predicates  :    3 (   3 propositional; 0-0 arity)
+%            Number of functors    :    0 (   0 constant; --- arity)
+%            Number of variables   :    0 (   0 singleton;   0 !;   0 ?)
+%            Maximal term depth    :    0 (   0 average)
+% SPC      : 
+
+% Comments :
+%------------------------------------------------------------------------------
+%----Some axioms to include
+fof(ia1,axiom,
+    ia1).
+
+fof(ia2,axiom,
+    ia2).
+
+fof(ia3,axiom,
+    ia3).
+
+%------------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/Axioms/SYN000-0.ax b/test/regress/regress0/tptp/Axioms/SYN000-0.ax
new file mode 100644
index 0000000..d67e61a
--- /dev/null
+++ b/test/regress/regress0/tptp/Axioms/SYN000-0.ax
@@ -0,0 +1,34 @@
+%------------------------------------------------------------------------------
+% File     : SYN000-0 : TPTP v5.5.0. Released v3.6.0.
+% Domain   : Syntactic
+% Axioms   : A simple include file for CNF
+% Version  : Biased.
+% English  :
+
+% Refs     :
+% Source   : [TPTP]
+% Names    :
+
+% Status   : Satisfiable
+% Syntax   : Number of clauses     :    3 (   0 non-Horn;   3 unit;   3 RR)
+%            Number of atoms       :    3 (   0 equality)
+%            Maximal clause size   :    1 (   1 average)
+%            Number of predicates  :    3 (   3 propositional; 0-0 arity)
+%            Number of functors    :    0 (   0 constant; --- arity)
+%            Number of variables   :    0 (   0 singleton)
+%            Maximal term depth    :    0 (   0 average)
+% SPC      : 
+
+% Comments :
+%------------------------------------------------------------------------------
+%----Some axioms to include
+cnf(ia1,axiom,
+    ia1).
+
+cnf(ia2,axiom,
+    ia2).
+
+cnf(ia3,axiom,
+    ia3).
+
+%------------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/Axioms/SYN000_0.ax b/test/regress/regress0/tptp/Axioms/SYN000_0.ax
new file mode 100644
index 0000000..acb557e
--- /dev/null
+++ b/test/regress/regress0/tptp/Axioms/SYN000_0.ax
@@ -0,0 +1,47 @@
+%------------------------------------------------------------------------------
+% File     : SYN000_0 : TPTP v5.5.0. Released v5.0.0.
+% Domain   : Syntactic
+% Axioms   : A simple include file for TFF
+% Version  : Biased.
+% English  :
+
+% Refs     :
+% Source   : [TPTP]
+% Names    :
+
+% Status   : Satisfiable
+% Syntax   : Number of formulae    :    6 (   6 unit;   3 type)
+%            Number of atoms       :    6 (   0 equality)
+%            Maximal formula depth :    2 (   2 average)
+%            Number of connectives :    0 (   0   ~;   0   |;   0   &)
+%                                         (   0 <=>;   0  =>;   0  <=;   0 <~>)
+%                                         (   0  ~|;   0  ~&)
+%            Number of type conns  :    0 (   0   >;   0   *;   0   +;   0  <<)
+%            Number of predicates  :    4 (   4 propositional; 0-0 arity)
+%            Number of functors    :    0 (   0 constant; --- arity)
+%            Number of variables   :    0 (   0 sgn;   0   !;   0   ?)
+%            Maximal term depth    :    0 (   0 average)
+% SPC      : 
+
+% Comments :
+%------------------------------------------------------------------------------
+%----Some axioms to include
+tff(ia1_type,type,(
+    ia1: $o )).
+
+tff(ia2_type,type,(
+    ia2: $o )).
+
+tff(ia3_type,type,(
+    ia3: $o )).
+
+tff(ia1,axiom,(
+    ia1 )).
+
+tff(ia2,axiom,(
+    ia2 )).
+
+tff(ia3,axiom,(
+    ia3 )).
+
+%------------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/BOO003-4.p b/test/regress/regress0/tptp/BOO003-4.p
new file mode 100644
index 0000000..0ea15fe
--- /dev/null
+++ b/test/regress/regress0/tptp/BOO003-4.p
@@ -0,0 +1,31 @@
+%--------------------------------------------------------------------------
+% File     : BOO003-4 : TPTP v5.5.0. Released v1.1.0.
+% Domain   : Boolean Algebra
+% Problem  : Multiplication is idempotent (X * X = X)
+% Version  : [Ver94] (equality) axioms.
+% English  :
+
+% Refs     : [Ver94] Veroff (1994), Problem Set
+% Source   : [Ver94]
+% Names    : TA [Ver94]
+
+% Status   : Unsatisfiable
+% Rating   : 0.10 v5.5.0, 0.05 v5.4.0, 0.00 v2.1.0, 0.13 v2.0.0
+% Syntax   : Number of clauses     :    9 (   0 non-Horn;   9 unit;   1 RR)
+%            Number of atoms       :    9 (   9 equality)
+%            Maximal clause size   :    1 (   1 average)
+%            Number of predicates  :    1 (   0 propositional; 2-2 arity)
+%            Number of functors    :    6 (   3 constant; 0-2 arity)
+%            Number of variables   :   14 (   0 singleton)
+%            Maximal term depth    :    3 (   2 average)
+% SPC      : CNF_UNS_RFO_PEQ_UEQ
+
+% Comments :
+%--------------------------------------------------------------------------
+%----Include boolean algebra axioms for equality formulation
+include('Axioms/BOO004-0.ax').
+%--------------------------------------------------------------------------
+cnf(prove_a_times_a_is_a,negated_conjecture,
+    (  multiply(a,a) != a )).
+
+%--------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/BOO027-1.p b/test/regress/regress0/tptp/BOO027-1.p
new file mode 100644
index 0000000..a3cd422
--- /dev/null
+++ b/test/regress/regress0/tptp/BOO027-1.p
@@ -0,0 +1,48 @@
+%--------------------------------------------------------------------------
+% File     : BOO027-1 : TPTP v5.5.0. Released v2.2.0.
+% Domain   : Boolean Algebra
+% Problem  : Independence of self-dual 2-basis.
+% Version  : [MP96] (eqiality) axioms : Especial.
+% English  : Show that half of the self-dual 2-basis in DUAL-BA-3 is not
+%            a basis for Boolean Algebra.
+
+% Refs     : [McC98] McCune (1998), Email to G. Sutcliffe
+%          : [MP96]  McCune & Padmanabhan (1996), Automated Deduction in Eq
+% Source   : [McC98]
+% Names    : DUAL-BA-4 [MP96]
+
+% Status   : Satisfiable
+% Rating   : 0.00 v5.5.0, 0.20 v5.4.0, 0.25 v5.3.0, 0.33 v5.2.0, 0.00 v3.2.0, 0.33 v3.1.0, 0.00 v2.2.1
+% Syntax   : Number of clauses     :    6 (   0 non-Horn;   6 unit;   1 RR)
+%            Number of atoms       :    6 (   6 equality)
+%            Maximal clause size   :    1 (   1 average)
+%            Number of predicates  :    1 (   0 propositional; 2-2 arity)
+%            Number of functors    :    5 (   2 constant; 0-2 arity)
+%            Number of variables   :   10 (   0 singleton)
+%            Maximal term depth    :    5 (   3 average)
+% SPC      : CNF_SAT_RFO_PEQ_UEQ
+
+% Comments : There is a 2-element model.
+%--------------------------------------------------------------------------
+%----Two properties of Boolean algebra:
+cnf(multiply_add_property,axiom,
+    ( multiply(X,add(Y,Z)) = add(multiply(Y,X),multiply(Z,X)) )).
+
+cnf(additive_inverse,axiom,
+    ( add(X,inverse(X)) = one )).
+
+%----Pixley properties:
+cnf(pixley1,axiom,
+    ( add(multiply(X,inverse(X)),add(multiply(X,Y),multiply(inverse(X),Y))) = Y )).
+
+cnf(pixley2,axiom,
+    ( add(multiply(X,inverse(Y)),add(multiply(X,Y),multiply(inverse(Y),Y))) = X )).
+
+cnf(pixley3,axiom,
+    ( add(multiply(X,inverse(Y)),add(multiply(X,X),multiply(inverse(Y),X))) = X )).
+
+%----Denial of a property of Boolean Algebra:
+cnf(prove_idempotence,negated_conjecture,
+    (  add(a,a) != a )).
+
+%--------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/DAT001=1.p b/test/regress/regress0/tptp/DAT001=1.p
new file mode 100644
index 0000000..922a6cf
--- /dev/null
+++ b/test/regress/regress0/tptp/DAT001=1.p
@@ -0,0 +1,57 @@
+%------------------------------------------------------------------------------
+% File     : DAT001=1 : TPTP v5.5.0. Released v5.0.0.
+% Domain   : Data Structures
+% Problem  : Recursive list sort
+% Version  : Especial.
+% English  : 
+
+% Refs     : 
+% Source   : [TPTP]
+% Names    :
+
+% Status   : Theorem
+% Rating   : 0.12 v5.5.0, 0.25 v5.4.0, 0.38 v5.3.0, 0.29 v5.2.0, 0.20 v5.1.0, 0.25 v5.0.0
+% Syntax   : Number of formulae    :    8 (   5 unit;   4 type)
+%            Number of atoms       :   13 (   0 equality)
+%            Maximal formula depth :    6 (   3 average)
+%            Number of connectives :    2 (   0   ~;   0   |;   1   &)
+%                                         (   0 <=>;   1  =>;   0  <=;   0 <~>)
+%                                         (   0  ~|;   0  ~&)
+%            Number of type conns  :    3 (   2   >;   1   *;   0   +;   0  <<)
+%            Number of predicates  :    9 (   7 propositional; 0-2 arity)
+%            Number of functors    :    7 (   6 constant; 0-2 arity)
+%            Number of variables   :    4 (   0 sgn;   4   !;   0   ?)
+%            Maximal term depth    :    6 (   2 average)
+%            Arithmetic symbols    :    7 (   2 pred;    0 func;    5 numbers)
+% SPC      : TFF_THM_NEQ_ARI
+
+% Comments :
+%------------------------------------------------------------------------------
+tff(list_type,type,(
+    list: $tType )).
+
+tff(nil_type,type,(
+    nil: list )).
+
+tff(mycons_type,type,(
+    mycons: ( $int * list ) > list )).
+
+tff(sorted_type,type,(
+    sorted: list > $o )).
+
+tff(empty_is_sorted,axiom,(
+    sorted(nil) )).
+
+tff(single_is_sorted,axiom,(
+    ! [X: $int] : sorted(mycons(X,nil)) )).
+
+tff(recursive_sort,axiom,(
+    ! [X: $int,Y: $int,R: list] :
+      ( ( $less(X,Y)
+        & sorted(mycons(Y,R)) )
+     => sorted(mycons(X,mycons(Y,R))) ) )).
+
+tff(check_list,conjecture,(
+    sorted(mycons(1,mycons(2,mycons(4,mycons(7,mycons(100,nil)))))) )).
+
+%------------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/KRS018+1.p b/test/regress/regress0/tptp/KRS018+1.p
new file mode 100644
index 0000000..9103987
--- /dev/null
+++ b/test/regress/regress0/tptp/KRS018+1.p
@@ -0,0 +1,55 @@
+%------------------------------------------------------------------------------
+% File     : KRS018+1 : TPTP v5.5.0. Released v3.1.0.
+% Domain   : Knowledge Representation (Semantic Web)
+% Problem  : Nothing can be defined using OWL Lite restrictions
+% Version  : Especial.
+% English  :
+
+% Refs     : [Bec03] Bechhofer (2003), Email to G. Sutcliffe
+%          : [TR+04] Tsarkov et al. (2004), Using Vampire to Reason with OW
+% Source   : [Bec03]
+% Names    : consistent_I5.2-Manifest001 [Bec03]
+
+% Status   : Satisfiable
+% Rating   : 0.00 v4.1.0, 0.25 v4.0.1, 0.00 v3.1.0
+% Syntax   : Number of formulae    :    4 (   0 unit)
+%            Number of atoms       :    8 (   0 equality)
+%            Maximal formula depth :    5 (   4 average)
+%            Number of connectives :    7 (   3 ~  ;   0  |;   1  &)
+%                                         (   1 <=>;   2 =>;   0 <=)
+%                                         (   0 <~>;   0 ~|;   0 ~&)
+%            Number of predicates  :    6 (   0 propositional; 1-2 arity)
+%            Number of functors    :    0 (   0 constant; --- arity)
+%            Number of variables   :    6 (   0 singleton;   4 !;   2 ?)
+%            Maximal term depth    :    1 (   1 average)
+% SPC      : FOF_SAT_RFO_NEQ
+
+% Comments : Sean Bechhofer says there are some errors in the encoding of
+%            datatypes, so this problem may not be perfect. At least it's
+%            still representative of the type of reasoning required for OWL.
+%------------------------------------------------------------------------------
+%----Thing and Nothing
+fof(axiom_0,axiom,
+    ( ! [X] :
+        ( cowlThing(X)
+        & ~ cowlNothing(X) ) )).
+
+%----String and Integer disjoint
+fof(axiom_1,axiom,
+    ( ! [X] :
+        ( xsd_string(X)
+      <=> ~ xsd_integer(X) ) )).
+
+%----Super cNothing
+fof(axiom_2,axiom,
+    ( ! [X] :
+        ( cNothing(X)
+       => ~ ( ? [Y] : rp(X,Y) ) ) )).
+
+%----Super cNothing
+fof(axiom_3,axiom,
+    ( ! [X] :
+        ( cNothing(X)
+       => ? [Y0] : rp(X,Y0) ) )).
+
+%------------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/KRS063+1.p b/test/regress/regress0/tptp/KRS063+1.p
new file mode 100644
index 0000000..737741d
--- /dev/null
+++ b/test/regress/regress0/tptp/KRS063+1.p
@@ -0,0 +1,181 @@
+%------------------------------------------------------------------------------
+% File     : KRS063+1 : TPTP v5.5.0. Released v3.1.0.
+% Domain   : Knowledge Representation (Semantic Web)
+% Problem  : An example combining owl:oneOf and owl:inverseOf
+% Version  : Especial.
+% English  :
+
+% Refs     : [Bec03] Bechhofer (2003), Email to G. Sutcliffe
+%          : [TR+04] Tsarkov et al. (2004), Using Vampire to Reason with OW
+% Source   : [Bec03]
+% Names    : inconsistent_I4.5-Manifest002 [Bec03]
+
+% Status   : Unsatisfiable
+% Rating   : 0.00 v3.1.0
+% Syntax   : Number of formulae    :   27 (   9 unit)
+%            Number of atoms       :   63 (  18 equality)
+%            Maximal formula depth :    8 (   4 average)
+%            Number of connectives :   39 (   3 ~  ;   5  |;  14  &)
+%                                         (   4 <=>;  13 =>;   0 <=)
+%                                         (   0 <~>;   0 ~|;   0 ~&)
+%            Number of predicates  :   11 (   0 propositional; 1-2 arity)
+%            Number of functors    :    7 (   7 constant; 0-0 arity)
+%            Number of variables   :   37 (   0 singleton;  36 !;   1 ?)
+%            Maximal term depth    :    1 (   1 average)
+% SPC      : FOF_UNS_RFO_SEQ
+
+% Comments : Sean Bechhofer says there are some errors in the encoding of
+%            datatypes, so this problem may not be perfect. At least it's
+%            still representative of the type of reasoning required for OWL.
+%------------------------------------------------------------------------------
+fof(cEUCountry_substitution_1,axiom,
+    ( ! [A,B] :
+        ( ( A = B
+          & cEUCountry(A) )
+       => cEUCountry(B) ) )).
+
+fof(cEuroMP_substitution_1,axiom,
+    ( ! [A,B] :
+        ( ( A = B
+          & cEuroMP(A) )
+       => cEuroMP(B) ) )).
+
+fof(cEuropeanCountry_substitution_1,axiom,
+    ( ! [A,B] :
+        ( ( A = B
+          & cEuropeanCountry(A) )
+       => cEuropeanCountry(B) ) )).
+
+fof(cPerson_substitution_1,axiom,
+    ( ! [A,B] :
+        ( ( A = B
+          & cPerson(A) )
+       => cPerson(B) ) )).
+
+fof(cowlNothing_substitution_1,axiom,
+    ( ! [A,B] :
+        ( ( A = B
+          & cowlNothing(A) )
+       => cowlNothing(B) ) )).
+
+fof(cowlThing_substitution_1,axiom,
+    ( ! [A,B] :
+        ( ( A = B
+          & cowlThing(A) )
+       => cowlThing(B) ) )).
+
+fof(rhasEuroMP_substitution_1,axiom,
+    ( ! [A,B,C] :
+        ( ( A = B
+          & rhasEuroMP(A,C) )
+       => rhasEuroMP(B,C) ) )).
+
+fof(rhasEuroMP_substitution_2,axiom,
+    ( ! [A,B,C] :
+        ( ( A = B
+          & rhasEuroMP(C,A) )
+       => rhasEuroMP(C,B) ) )).
+
+fof(risEuroMPFrom_substitution_1,axiom,
+    ( ! [A,B,C] :
+        ( ( A = B
+          & risEuroMPFrom(A,C) )
+       => risEuroMPFrom(B,C) ) )).
+
+fof(risEuroMPFrom_substitution_2,axiom,
+    ( ! [A,B,C] :
+        ( ( A = B
+          & risEuroMPFrom(C,A) )
+       => risEuroMPFrom(C,B) ) )).
+
+fof(xsd_integer_substitution_1,axiom,
+    ( ! [A,B] :
+        ( ( A = B
+          & xsd_integer(A) )
+       => xsd_integer(B) ) )).
+
+fof(xsd_string_substitution_1,axiom,
+    ( ! [A,B] :
+        ( ( A = B
+          & xsd_string(A) )
+       => xsd_string(B) ) )).
+
+%----Thing and Nothing
+fof(axiom_0,axiom,
+    ( ! [X] :
+        ( cowlThing(X)
+        & ~ cowlNothing(X) ) )).
+
+%----String and Integer disjoint
+fof(axiom_1,axiom,
+    ( ! [X] :
+        ( xsd_string(X)
+      <=> ~ xsd_integer(X) ) )).
+
+%----Enumeration cEUCountry
+fof(axiom_2,axiom,
+    ( ! [X] :
+        ( cEUCountry(X)
+      <=> ( X = iPT
+          | X = iBE
+          | X = iNL
+          | X = iES
+          | X = iFR
+          | X = iUK ) ) )).
+
+%----Equality cEuroMP
+fof(axiom_3,axiom,
+    ( ! [X] :
+        ( cEuroMP(X)
+      <=> ? [Y] :
+            ( risEuroMPFrom(X,Y)
+            & cowlThing(Y) ) ) )).
+
+%----Domain: rhasEuroMP
+fof(axiom_4,axiom,
+    ( ! [X,Y] :
+        ( rhasEuroMP(X,Y)
+       => cEUCountry(X) ) )).
+
+%----Inverse: risEuroMPFrom
+fof(axiom_5,axiom,
+    ( ! [X,Y] :
+        ( risEuroMPFrom(X,Y)
+      <=> rhasEuroMP(Y,X) ) )).
+
+%----iBE
+fof(axiom_6,axiom,
+    ( cEuropeanCountry(iBE) )).
+
+%----iES
+fof(axiom_7,axiom,
+    ( cEuropeanCountry(iES) )).
+
+%----iFR
+fof(axiom_8,axiom,
+    ( cEuropeanCountry(iFR) )).
+
+%----iKinnock
+fof(axiom_9,axiom,
+    ( cPerson(iKinnock) )).
+
+%----iKinnock
+fof(axiom_10,axiom,
+    ( ~ cEuroMP(iKinnock) )).
+
+%----iNL
+fof(axiom_11,axiom,
+    ( cEuropeanCountry(iNL) )).
+
+%----iPT
+fof(axiom_12,axiom,
+    ( cEuropeanCountry(iPT) )).
+
+%----iUK
+fof(axiom_13,axiom,
+    ( cEuropeanCountry(iUK) )).
+
+fof(axiom_14,axiom,
+    ( rhasEuroMP(iUK,iKinnock) )).
+
+%------------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/MGT019+2.p b/test/regress/regress0/tptp/MGT019+2.p
new file mode 100644
index 0000000..fb2cd7f
--- /dev/null
+++ b/test/regress/regress0/tptp/MGT019+2.p
@@ -0,0 +1,84 @@
+%--------------------------------------------------------------------------
+% File     : MGT019+2 : TPTP v5.5.0. Released v2.0.0.
+% Domain   : Management (Organisation Theory)
+% Problem  : Growth rate of EPs exceeds that of FMs in stable environments
+% Version  : [PM93] axioms.
+% English  : The growth rate of efficent producers exceeds the growth rate
+%            of first movers past a certain time in stable environments.
+
+% Refs     : [PM93]  Peli & Masuch (1993), The Logic of Propogation Strateg
+%          : [PM94]  Peli & Masuch (1994), The Logic of Propogation Strateg
+%          : [PB+94] Peli et al. (1994), A Logical Approach to Formalizing
+% Source   : [PM93]
+% Names    : LEMMA 1 [PM93]
+%          : L1 [PB+94]
+
+% Status   : CounterSatisfiable
+% Rating   : 0.00 v4.1.0, 0.20 v4.0.1, 0.00 v3.5.0, 0.33 v3.4.0, 0.00 v2.1.0
+% Syntax   : Number of formulae    :    5 (   0 unit)
+%            Number of atoms       :   21 (   1 equality)
+%            Maximal formula depth :    8 (   6 average)
+%            Number of connectives :   17 (   1 ~  ;   1  |;   8  &)
+%                                         (   0 <=>;   7 =>;   0 <=)
+%                                         (   0 <~>;   0 ~|;   0 ~&)
+%            Number of predicates  :    7 (   0 propositional; 1-4 arity)
+%            Number of functors    :    5 (   2 constant; 0-2 arity)
+%            Number of variables   :   11 (   0 singleton;   9 !;   2 ?)
+%            Maximal term depth    :    2 (   1 average)
+% SPC      : FOF_CSA_RFO_SEQ
+
+% Comments : There is no MGT019+1 as Kamps did not send it to me.
+%--------------------------------------------------------------------------
+%----Subsitution axioms
+%----Problem axioms
+%----L2. The disbanding rate of first movers exceeds the disbanding
+%----rate of efficient producers.
+fof(l2,axiom,
+    ( ~ ( ! [E,T] :
+            ( ( environment(E)
+              & subpopulations(first_movers,efficient_producers,E,T) )
+           => greater(disbanding_rate(first_movers,T),disbanding_rate(efficient_producers,T)) ) ) )).
+
+%----If EP have lower disbanding rate and not lower founding rate than
+%----FM, then EP have higher growth rate.
+fof(mp_EP_lower_disbanding_rate,axiom,
+    ( ! [T] :
+        ( ( greater(disbanding_rate(first_movers,T),disbanding_rate(efficient_producers,T))
+          & greater_or_equal(founding_rate(efficient_producers,T),founding_rate(first_movers,T)) )
+       => greater(growth_rate(efficient_producers,T),growth_rate(first_movers,T)) ) )).
+
+%----MP. on "greater or equal to"
+fof(mp_greater_or_equal,axiom,
+    ( ! [X,Y] :
+        ( greater_or_equal(X,Y)
+       => ( greater(X,Y)
+          | X = Y ) ) )).
+
+%----A8.  The founding rate of first movers does not exceed the founding
+%----rate of efficient producers past a certain point in a stable
+%----environment.
+fof(a8,hypothesis,
+    ( ! [E] :
+        ( ( environment(E)
+          & stable(E) )
+       => ? [To] :
+            ( in_environment(E,To)
+            & ! [T] :
+                ( ( subpopulations(first_movers,efficient_producers,E,T)
+                  & greater_or_equal(T,To) )
+               => greater_or_equal(founding_rate(efficient_producers,T),founding_rate(first_movers,T)) ) ) ) )).
+
+%----GOAL: L1. The growth rate of efficient producers exceeds the growth
+%----rate of first movers past a certain time in stable environments.
+fof(prove_l1,conjecture,
+    ( ! [E] :
+        ( ( environment(E)
+          & stable(E) )
+       => ? [To] :
+            ( in_environment(E,To)
+            & ! [T] :
+                ( ( subpopulations(first_movers,efficient_producers,E,T)
+                  & greater_or_equal(T,To) )
+               => greater(growth_rate(efficient_producers,T),growth_rate(first_movers,T)) ) ) ) )).
+
+%--------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/MGT031-1.p b/test/regress/regress0/tptp/MGT031-1.p
new file mode 100644
index 0000000..f5cd193
--- /dev/null
+++ b/test/regress/regress0/tptp/MGT031-1.p
@@ -0,0 +1,95 @@
+%--------------------------------------------------------------------------
+% File     : MGT031-1 : TPTP v5.5.0. Released v2.4.0.
+% Domain   : Management (Organisation Theory)
+% Problem  : First movers appear first in an environment
+% Version  : [PB+94] axioms : Reduced & Augmented > Complete.
+% English  :
+
+% Refs     : [PM93]  Peli & Masuch (1993), The Logic of Propogation Strateg
+%          : [PM94]  Peli & Masuch (1994), The Logic of Propogation Strateg
+%          : [Kam95] Kamps (1995), Email to G. Sutcliffe
+% Source   : [TPTP]
+% Names    :
+
+% Status   : Satisfiable
+% Rating   : 0.00 v2.5.0, 0.17 v2.4.0
+% Syntax   : Number of clauses     :   15 (   2 non-Horn;   3 unit;  15 RR)
+%            Number of atoms       :   38 (   5 equality)
+%            Maximal clause size   :    5 (   3 average)
+%            Number of predicates  :    6 (   0 propositional; 1-3 arity)
+%            Number of functors    :   10 (   6 constant; 0-2 arity)
+%            Number of variables   :   23 (   0 singleton)
+%            Maximal term depth    :    3 (   1 average)
+% SPC      : CNF_SAT_RFO_EQU_NUE
+
+% Comments : Created with tptp2X -f tptp -t clausify:otter MGT031+1.p
+%--------------------------------------------------------------------------
+cnf(mp_positive_number_when_appear_20,axiom,
+    ( ~ environment(A)
+    | greater(number_of_organizations(e,appear(an_organisation,A)),zero) )).
+
+cnf(mp_number_mean_non_empty_21,axiom,
+    ( ~ environment(A)
+    | ~ greater(number_of_organizations(A,B),zero)
+    | subpopulation(sk1(B,A),A,B) )).
+
+cnf(mp_number_mean_non_empty_22,axiom,
+    ( ~ environment(A)
+    | ~ greater(number_of_organizations(A,B),zero)
+    | greater(cardinality_at_time(sk1(B,A),B),zero) )).
+
+cnf(mp_no_EP_before_appearance_23,axiom,
+    ( ~ environment(A)
+    | ~ in_environment(A,B)
+    | ~ greater(appear(efficient_producers,A),B)
+    | ~ greater(cardinality_at_time(efficient_producers,B),zero) )).
+
+cnf(mp_no_FM_before_appearance_24,axiom,
+    ( ~ environment(A)
+    | ~ in_environment(A,B)
+    | ~ greater(appear(first_movers,A),B)
+    | ~ greater(cardinality_at_time(first_movers,B),zero) )).
+
+cnf(mp_FM_not_precede_first_25,axiom,
+    ( ~ environment(A)
+    | greater_or_equal(appear(first_movers,A),appear(an_organisation,A)) )).
+
+cnf(mp_greater_transitivity_26,axiom,
+    ( ~ greater(A,B)
+    | ~ greater(B,C)
+    | greater(A,C) )).
+
+cnf(mp_greater_or_equal_27,axiom,
+    ( ~ greater_or_equal(A,B)
+    | greater(A,B)
+    | A = B )).
+
+cnf(mp_greater_or_equal_28,axiom,
+    ( ~ greater(A,B)
+    | greater_or_equal(A,B) )).
+
+cnf(mp_greater_or_equal_29,axiom,
+    ( A != B
+    | greater_or_equal(A,B) )).
+
+cnf(a9_30,hypothesis,
+    ( ~ environment(A)
+    | ~ subpopulation(B,A,C)
+    | ~ greater(cardinality_at_time(B,C),zero)
+    | B = efficient_producers
+    | B = first_movers )).
+
+cnf(a13_31,hypothesis,
+    ( ~ environment(A)
+    | greater(appear(efficient_producers,e),appear(first_movers,A)) )).
+
+cnf(prove_l13_32,negated_conjecture,
+    ( environment(sk2) )).
+
+cnf(prove_l13_33,negated_conjecture,
+    ( in_environment(sk2,appear(an_organisation,sk2)) )).
+
+cnf(prove_l13_34,negated_conjecture,
+    (  appear(an_organisation,sk2) != appear(first_movers,sk2) )).
+
+%--------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/MGT041-2.p b/test/regress/regress0/tptp/MGT041-2.p
new file mode 100644
index 0000000..a10a2f4
--- /dev/null
+++ b/test/regress/regress0/tptp/MGT041-2.p
@@ -0,0 +1,61 @@
+%--------------------------------------------------------------------------
+% File     : MGT041-2 : TPTP v5.5.0. Released v2.4.0.
+% Domain   : Management (Organisation Theory)
+% Problem  : There are non-FM and non-EP organisations
+% Version  : [PM93] axioms.
+% English  : There are non-first mover and non-efficient producers
+%            organisations.
+
+% Refs     : [PM93]  Peli & Masuch (1993), The Logic of Propogation Strateg
+%          : [PM94]  Peli & Masuch (1994), The Logic of Propogation Strateg
+%          : [Kam95] Kamps (1995), Email to G. Sutcliffe
+% Source   : [TPTP]
+% Names    :
+
+% Status   : Unsatisfiable
+% Rating   : 0.00 v2.4.0
+% Syntax   : Number of clauses     :    8 (   1 non-Horn;   4 unit;   8 RR)
+%            Number of atoms       :   17 (   0 equality)
+%            Maximal clause size   :    4 (   2 average)
+%            Number of predicates  :    6 (   0 propositional; 1-3 arity)
+%            Number of functors    :    4 (   4 constant; 0-0 arity)
+%            Number of variables   :    8 (   1 singleton)
+%            Maximal term depth    :    1 (   1 average)
+% SPC      : CNF_UNS_EPR
+
+% Comments : Created with tptp2X -f tptp -t clausify:otter MGT041+2.p
+%--------------------------------------------------------------------------
+cnf(mp_not_high_and_low_1,axiom,
+    ( ~ number_of_routines(A,B,low)
+    | ~ number_of_routines(A,B,high) )).
+
+cnf(a14_2,hypothesis,
+    ( ~ organisation_at_time(A,B)
+    | ~ efficient_producer(A)
+    | ~ founding_time(A,B)
+    | has_elaborated_routines(A,B) )).
+
+cnf(a15_3,hypothesis,
+    ( ~ organisation_at_time(A,B)
+    | ~ first_mover(A)
+    | ~ founding_time(A,B)
+    | number_of_routines(A,B,low) )).
+
+cnf(a16_4,hypothesis,
+    ( organisation_at_time(sk1,sk2) )).
+
+cnf(a16_5,hypothesis,
+    ( founding_time(sk1,sk2) )).
+
+cnf(a16_6,hypothesis,
+    ( number_of_routines(sk1,sk2,high) )).
+
+cnf(a16_7,hypothesis,
+    ( ~ has_elaborated_routines(sk1,sk2) )).
+
+cnf(prove_t10_8,negated_conjecture,
+    ( ~ organisation_at_time(A,B)
+    | first_mover(A)
+    | efficient_producer(A) )).
+
+%--------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/Makefile.am b/test/regress/regress0/tptp/Makefile.am
new file mode 100644
index 0000000..a6444c3
--- /dev/null
+++ b/test/regress/regress0/tptp/Makefile.am
@@ -0,0 +1,85 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# escape the `=' in file names
+equals = =
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	tptp_parser.p \
+	tptp_parser2.p \
+	tptp_parser3.p \
+	tptp_parser4.p \
+	tptp_parser5.p \
+	tptp_parser6.p \
+	tptp_parser7.p \
+	tptp_parser8.p \
+	tptp_parser9.p \
+	tptp_parser10.p \
+	tff0.p \
+	tff0-arith.p \
+	ARI086$(equals)1.p \
+	DAT001$(equals)1.p \
+	KRS018+1.p \
+	KRS063+1.p \
+	MGT019+2.p \
+	MGT041-2.p \
+	PUZ131_1.p \
+	SYN000+1.p \
+	SYN000+2.p \
+	SYN000-1.p \
+	SYN000-2.p \
+	SYN000$(equals)2.p \
+	SYN000_1.p \
+	SYN000_2.p \
+	SYN075-1.p
+
+# axiom files required for the above tests
+TEST_DEPS_DIST = \
+	Axioms/BOO004-0.ax \
+	Axioms/SYN000_0.ax \
+	Axioms/SYN000-0.ax \
+	Axioms/SYN000+0.ax
+
+# these take too long at present
+EXTRA_DIST = $(TESTS) \
+	$(TEST_DEPS_DIST) \
+	BOO027-1.p \
+	BOO003-4.p \
+	MGT031-1.p \
+	NLP114-1.p \
+	SYN075+1.p
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/tptp/Makefile.in b/test/regress/regress0/tptp/Makefile.in
new file mode 100644
index 0000000..aff2d0e
--- /dev/null
+++ b/test/regress/regress0/tptp/Makefile.in
@@ -0,0 +1,1225 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/tptp
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# escape the `=' in file names
+equals = =
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	tptp_parser.p \
+	tptp_parser2.p \
+	tptp_parser3.p \
+	tptp_parser4.p \
+	tptp_parser5.p \
+	tptp_parser6.p \
+	tptp_parser7.p \
+	tptp_parser8.p \
+	tptp_parser9.p \
+	tptp_parser10.p \
+	tff0.p \
+	tff0-arith.p \
+	ARI086$(equals)1.p \
+	DAT001$(equals)1.p \
+	KRS018+1.p \
+	KRS063+1.p \
+	MGT019+2.p \
+	MGT041-2.p \
+	PUZ131_1.p \
+	SYN000+1.p \
+	SYN000+2.p \
+	SYN000-1.p \
+	SYN000-2.p \
+	SYN000$(equals)2.p \
+	SYN000_1.p \
+	SYN000_2.p \
+	SYN075-1.p
+
+
+# axiom files required for the above tests
+TEST_DEPS_DIST = \
+	Axioms/BOO004-0.ax \
+	Axioms/SYN000_0.ax \
+	Axioms/SYN000-0.ax \
+	Axioms/SYN000+0.ax
+
+
+# these take too long at present
+EXTRA_DIST = $(TESTS) \
+	$(TEST_DEPS_DIST) \
+	BOO027-1.p \
+	BOO003-4.p \
+	MGT031-1.p \
+	NLP114-1.p \
+	SYN075+1.p
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/tptp/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/tptp/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+tptp_parser.p.log: tptp_parser.p
+	@p='tptp_parser.p'; \
+	b='tptp_parser.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tptp_parser2.p.log: tptp_parser2.p
+	@p='tptp_parser2.p'; \
+	b='tptp_parser2.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tptp_parser3.p.log: tptp_parser3.p
+	@p='tptp_parser3.p'; \
+	b='tptp_parser3.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tptp_parser4.p.log: tptp_parser4.p
+	@p='tptp_parser4.p'; \
+	b='tptp_parser4.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tptp_parser5.p.log: tptp_parser5.p
+	@p='tptp_parser5.p'; \
+	b='tptp_parser5.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tptp_parser6.p.log: tptp_parser6.p
+	@p='tptp_parser6.p'; \
+	b='tptp_parser6.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tptp_parser7.p.log: tptp_parser7.p
+	@p='tptp_parser7.p'; \
+	b='tptp_parser7.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tptp_parser8.p.log: tptp_parser8.p
+	@p='tptp_parser8.p'; \
+	b='tptp_parser8.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tptp_parser9.p.log: tptp_parser9.p
+	@p='tptp_parser9.p'; \
+	b='tptp_parser9.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tptp_parser10.p.log: tptp_parser10.p
+	@p='tptp_parser10.p'; \
+	b='tptp_parser10.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tff0.p.log: tff0.p
+	@p='tff0.p'; \
+	b='tff0.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tff0-arith.p.log: tff0-arith.p
+	@p='tff0-arith.p'; \
+	b='tff0-arith.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ARI086$(equals)1.p.log: ARI086$(equals)1.p
+	@p='ARI086$(equals)1.p'; \
+	b='ARI086$(equals)1.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+DAT001$(equals)1.p.log: DAT001$(equals)1.p
+	@p='DAT001$(equals)1.p'; \
+	b='DAT001$(equals)1.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+KRS018+1.p.log: KRS018+1.p
+	@p='KRS018+1.p'; \
+	b='KRS018+1.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+KRS063+1.p.log: KRS063+1.p
+	@p='KRS063+1.p'; \
+	b='KRS063+1.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+MGT019+2.p.log: MGT019+2.p
+	@p='MGT019+2.p'; \
+	b='MGT019+2.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+MGT041-2.p.log: MGT041-2.p
+	@p='MGT041-2.p'; \
+	b='MGT041-2.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+PUZ131_1.p.log: PUZ131_1.p
+	@p='PUZ131_1.p'; \
+	b='PUZ131_1.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+SYN000+1.p.log: SYN000+1.p
+	@p='SYN000+1.p'; \
+	b='SYN000+1.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+SYN000+2.p.log: SYN000+2.p
+	@p='SYN000+2.p'; \
+	b='SYN000+2.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+SYN000-1.p.log: SYN000-1.p
+	@p='SYN000-1.p'; \
+	b='SYN000-1.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+SYN000-2.p.log: SYN000-2.p
+	@p='SYN000-2.p'; \
+	b='SYN000-2.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+SYN000$(equals)2.p.log: SYN000$(equals)2.p
+	@p='SYN000$(equals)2.p'; \
+	b='SYN000$(equals)2.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+SYN000_1.p.log: SYN000_1.p
+	@p='SYN000_1.p'; \
+	b='SYN000_1.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+SYN000_2.p.log: SYN000_2.p
+	@p='SYN000_2.p'; \
+	b='SYN000_2.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+SYN075-1.p.log: SYN075-1.p
+	@p='SYN075-1.p'; \
+	b='SYN075-1.p'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/tptp/NLP114-1.p b/test/regress/regress0/tptp/NLP114-1.p
new file mode 100644
index 0000000..cf5bd27
--- /dev/null
+++ b/test/regress/regress0/tptp/NLP114-1.p
@@ -0,0 +1,202 @@
+%--------------------------------------------------------------------------
+% File     : NLP114-1 : TPTP v5.5.0. Released v2.4.0.
+% Domain   : Natural Language Processing
+% Problem  : An old dirty white Chevy, problem 1
+% Version  : [Bos00b] axioms.
+% English  : Eliminating logically equivalent interpretations in the statement
+%            "An old dirty white chevy barrels down a lonely street in
+%            hollywood."
+
+% Refs     : [Bos00a] Bos (2000), DORIS: Discourse Oriented Representation a
+%            [Bos00b] Bos (2000), Applied Theorem Proving - Natural Language
+% Source   : [TPTP]
+% Names    :
+
+% Status   : Satisfiable
+% Rating   : 0.00 v2.4.0
+% Syntax   : Number of clauses     :   36 (  16 non-Horn;   2 unit;  36 RR)
+%            Number of atoms       :  102 (   0 equality)
+%            Maximal clause size   :   18 (   3 average)
+%            Number of predicates  :   18 (   1 propositional; 0-3 arity)
+%            Number of functors    :   11 (  11 constant; 0-0 arity)
+%            Number of variables   :   11 (   0 singleton)
+%            Maximal term depth    :    1 (   1 average)
+% SPC      : CNF_SAT_EPR
+
+% Comments : Created from NLP114+1.p using FLOTTER
+%--------------------------------------------------------------------------
+cnf(clause1,negated_conjecture,
+    ( actual_world(skc17) )).
+
+cnf(clause2,negated_conjecture,
+    ( actual_world(skc11) )).
+
+cnf(clause3,negated_conjecture,
+    ( ssSkC0
+    | city(skc17,skc20) )).
+
+cnf(clause4,negated_conjecture,
+    ( ssSkC0
+    | street(skc17,skc20) )).
+
+cnf(clause5,negated_conjecture,
+    ( ssSkC0
+    | lonely(skc17,skc20) )).
+
+cnf(clause6,negated_conjecture,
+    ( ssSkC0
+    | placename(skc17,skc21) )).
+
+cnf(clause7,negated_conjecture,
+    ( ssSkC0
+    | hollywood_placename(skc17,skc21) )).
+
+cnf(clause8,negated_conjecture,
+    ( ssSkC0
+    | event(skc17,skc18) )).
+
+cnf(clause9,negated_conjecture,
+    ( ssSkC0
+    | present(skc17,skc18) )).
+
+cnf(clause10,negated_conjecture,
+    ( ssSkC0
+    | barrel(skc17,skc18) )).
+
+cnf(clause11,negated_conjecture,
+    ( ssSkC0
+    | old(skc17,skc19) )).
+
+cnf(clause12,negated_conjecture,
+    ( ssSkC0
+    | dirty(skc17,skc19) )).
+
+cnf(clause13,negated_conjecture,
+    ( ssSkC0
+    | white(skc17,skc19) )).
+
+cnf(clause14,negated_conjecture,
+    ( ssSkC0
+    | chevy(skc17,skc19) )).
+
+cnf(clause15,negated_conjecture,
+    ( ~ ssSkC0
+    | lonely(skc11,skc16) )).
+
+cnf(clause16,negated_conjecture,
+    ( ~ ssSkC0
+    | street(skc11,skc16) )).
+
+cnf(clause17,negated_conjecture,
+    ( ~ ssSkC0
+    | barrel(skc11,skc12) )).
+
+cnf(clause18,negated_conjecture,
+    ( ~ ssSkC0
+    | present(skc11,skc12) )).
+
+cnf(clause19,negated_conjecture,
+    ( ~ ssSkC0
+    | event(skc11,skc12) )).
+
+cnf(clause20,negated_conjecture,
+    ( ~ ssSkC0
+    | hollywood_placename(skc11,skc14) )).
+
+cnf(clause21,negated_conjecture,
+    ( ~ ssSkC0
+    | placename(skc11,skc14) )).
+
+cnf(clause22,negated_conjecture,
+    ( ~ ssSkC0
+    | city(skc11,skc15) )).
+
+cnf(clause23,negated_conjecture,
+    ( ~ ssSkC0
+    | chevy(skc11,skc13) )).
+
+cnf(clause24,negated_conjecture,
+    ( ~ ssSkC0
+    | white(skc11,skc13) )).
+
+cnf(clause25,negated_conjecture,
+    ( ~ ssSkC0
+    | dirty(skc11,skc13) )).
+
+cnf(clause26,negated_conjecture,
+    ( ~ ssSkC0
+    | old(skc11,skc13) )).
+
+cnf(clause27,negated_conjecture,
+    ( ssSkC0
+    | down(skc17,skc18,skc20) )).
+
+cnf(clause28,negated_conjecture,
+    ( ssSkC0
+    | in(skc17,skc18,skc20) )).
+
+cnf(clause29,negated_conjecture,
+    ( ssSkC0
+    | of(skc17,skc21,skc20) )).
+
+cnf(clause30,negated_conjecture,
+    ( ssSkC0
+    | agent(skc17,skc18,skc19) )).
+
+cnf(clause31,negated_conjecture,
+    ( ~ ssSkC0
+    | down(skc11,skc12,skc16) )).
+
+cnf(clause32,negated_conjecture,
+    ( ~ ssSkC0
+    | in(skc11,skc12,skc15) )).
+
+cnf(clause33,negated_conjecture,
+    ( ~ ssSkC0
+    | of(skc11,skc14,skc15) )).
+
+cnf(clause34,negated_conjecture,
+    ( ~ ssSkC0
+    | agent(skc11,skc12,skc13) )).
+
+cnf(clause35,negated_conjecture,
+    ( ~ down(U,V,W)
+    | ~ lonely(U,W)
+    | ~ street(U,W)
+    | ~ barrel(U,V)
+    | ~ present(U,V)
+    | ~ event(U,V)
+    | ~ hollywood_placename(U,X)
+    | ~ placename(U,X)
+    | ~ in(U,V,Y)
+    | ~ city(U,Y)
+    | ~ of(U,X,Y)
+    | ~ chevy(U,Z)
+    | ~ white(U,Z)
+    | ~ dirty(U,Z)
+    | ~ old(U,Z)
+    | ~ agent(U,V,Z)
+    | ~ actual_world(U)
+    | ssSkC0 )).
+
+cnf(clause36,negated_conjecture,
+    ( ~ city(U,V)
+    | ~ street(U,V)
+    | ~ lonely(U,V)
+    | ~ down(U,W,V)
+    | ~ in(U,W,V)
+    | ~ placename(U,X)
+    | ~ hollywood_placename(U,X)
+    | ~ of(U,X,V)
+    | ~ event(U,W)
+    | ~ present(U,W)
+    | ~ barrel(U,W)
+    | ~ agent(U,W,Y)
+    | ~ old(U,Y)
+    | ~ dirty(U,Y)
+    | ~ white(U,Y)
+    | ~ chevy(U,Y)
+    | ~ actual_world(U)
+    | ~ ssSkC0 )).
+
+%--------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/PUZ131_1.p b/test/regress/regress0/tptp/PUZ131_1.p
new file mode 100644
index 0000000..b9e1c64
--- /dev/null
+++ b/test/regress/regress0/tptp/PUZ131_1.p
@@ -0,0 +1,100 @@
+%------------------------------------------------------------------------------
+% File     : PUZ131_1 : TPTP v5.5.0. Released v5.0.0.
+% Domain   : Puzzles
+% Problem  : Victor teaches Michael
+% Version  : Especial.
+% English  : Every student is enrolled in at least one course. Every professor
+%            teaches at least one course. Every course has at least one student
+%            enrolled. Every course has at least one professor teaching. The
+%            coordinator of a course teaches the course. If a student is
+%            enroled in a course then the student is taught by every professor
+%            who teaches the course. Michael is enrolled in CSC410. Victor is
+%            the coordinator of CSC410. Therefore, Michael is taught by Victor.
+
+% Refs     :
+% Source   : [TPTP]
+% Names    :
+
+% Status   : Theorem
+% Rating   : 0.00 v5.0.0
+% Syntax   : Number of formulae    :   19 (  14 unit;  10 type)
+%            Number of atoms       :   28 (   1 equality)
+%            Maximal formula depth :    6 (   3 average)
+%            Number of connectives :    2 (   0   ~;   0   |;   0   &)
+%                                         (   0 <=>;   2  =>;   0  <=;   0 <~>)
+%                                         (   0  ~|;   0  ~&)
+%            Number of type conns  :    7 (   4   >;   3   *;   0   +;   0  <<)
+%            Number of predicates  :   16 (  12 propositional; 0-2 arity)
+%            Number of functors    :    4 (   3 constant; 0-1 arity)
+%            Number of variables   :   12 (   0 sgn;   8   !;   4   ?)
+%            Maximal term depth    :    2 (   1 average)
+% SPC      : TFF_THM_EQU_NAR
+
+% Comments :
+%------------------------------------------------------------------------------
+tff(student_type,type,(
+    student: $tType )).
+
+tff(professor_type,type,(
+    professor: $tType )).
+
+tff(course_type,type,(
+    course: $tType )).
+
+tff(michael_type,type,(
+    michael: student )).
+
+tff(victor_type,type,(
+    victor: professor )).
+
+tff(csc410_type,type,(
+    csc410: course )).
+
+tff(enrolled_type,type,(
+    enrolled: ( student * course ) > $o )).
+
+tff(teaches_type,type,(
+    teaches: ( professor * course ) > $o )).
+
+tff(taught_by_type,type,(
+    taughtby: ( student * professor ) > $o )).
+
+tff(coordinator_of_type,type,(
+    coordinatorof: course > professor )).
+
+tff(student_enrolled_axiom,axiom,(
+    ! [X: student] :
+    ? [Y: course] : enrolled(X,Y) )).
+
+tff(professor_teaches,axiom,(
+    ! [X: professor] :
+    ? [Y: course] : teaches(X,Y) )).
+
+tff(course_enrolled,axiom,(
+    ! [X: course] :
+    ? [Y: student] : enrolled(Y,X) )).
+
+tff(course_teaches,axiom,(
+    ! [X: course] :
+    ? [Y: professor] : teaches(Y,X) )).
+
+tff(coordinator_teaches,axiom,(
+    ! [X: course] : teaches(coordinatorof(X),X) )).
+
+tff(student_enrolled_taught,axiom,(
+    ! [X: student,Y: course] :
+      ( enrolled(X,Y)
+     => ! [Z: professor] :
+          ( teaches(Z,Y)
+         => taughtby(X,Z) ) ) )).
+
+tff(michael_enrolled_csc410_axiom,axiom,(
+    enrolled(michael,csc410) )).
+
+tff(victor_coordinator_csc410_axiom,axiom,(
+    coordinatorof(csc410) = victor )).
+
+tff(teaching_conjecture,conjecture,(
+    taughtby(michael,victor) )).
+
+%------------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/SYN000+1.p b/test/regress/regress0/tptp/SYN000+1.p
new file mode 100644
index 0000000..682c11b
--- /dev/null
+++ b/test/regress/regress0/tptp/SYN000+1.p
@@ -0,0 +1,99 @@
+%------------------------------------------------------------------------------
+% File     : SYN000+1 : TPTP v5.5.0. Released v4.0.0.
+% Domain   : Syntactic
+% Problem  : Basic TPTP FOF syntax
+% Version  : Biased.
+% English  : Basic TPTP FOF syntax that you can't survive without parsing.
+
+% Refs     :
+% Source   : [TPTP]
+% Names    :
+
+% Status   : Theorem
+% Rating   : 0.43 v5.5.0, 0.48 v5.4.0, 0.46 v5.3.0, 0.52 v5.2.0, 0.40 v5.1.0, 0.43 v5.0.0, 0.54 v4.1.0, 0.57 v4.0.1, 0.78 v4.0.0
+% Syntax   : Number of formulae    :   12 (   5 unit)
+%            Number of atoms       :   31 (   3 equality)
+%            Maximal formula depth :    7 (   4 average)
+%            Number of connectives :   28 (   9   ~;  10   |;   3   &)
+%                                         (   1 <=>;   3  =>;   1  <=)
+%                                         (   1 <~>;   0  ~|;   0  ~&)
+%            Number of predicates  :   16 (  10 propositional; 0-3 arity)
+%            Number of functors    :    8 (   5 constant; 0-3 arity)
+%            Number of variables   :   13 (   0 sgn;   5   !;   8   ?)
+%            Maximal term depth    :    4 (   2 average)
+% SPC      : FOF_THM_RFO_SEQ
+
+% Comments :
+%------------------------------------------------------------------------------
+%----Propositional
+fof(propositional,axiom,
+    ( ( p0
+      & ~ q0 )
+   => ( r0
+      | ~ s0 ) )).
+
+%----First-order
+fof(first_order,axiom,(
+    ! [X] :
+      ( ( p(X)
+        | ~ q(X,a) )
+     => ? [Y,Z] :
+          ( r(X,f(Y),g(X,f(Y),Z))
+          & ~ s(f(f(f(b)))) ) ) )).
+
+%----Equality
+fof(equality,axiom,(
+    ? [Y] :
+    ! [X,Z] :
+      ( f(Y) = g(X,f(Y),Z)
+      | f(f(f(b))) != a
+      | X = f(Y) ) )).
+
+%----True and false
+fof(true_false,axiom,
+    ( $true
+    | $false )).
+
+%----Quoted symbols
+fof(single_quoted,axiom,
+    ( 'A proposition'
+    | 'A predicate'(a)
+    | p('A constant')
+    | p('A function'(a))
+    | p('A \'quoted \\ escape\'') )).
+
+%----Connectives - seen |, &, =>, ~ already
+fof(useful_connectives,axiom,(
+    ! [X] :
+      ( ( p(X)
+       <= ~ q(X,a) )
+    <=> ? [Y,Z] :
+          ( r(X,f(Y),g(X,f(Y),Z))
+        <~> ~ s(f(f(f(b)))) ) ) )).
+
+%----Annotated formula names
+fof(123,axiom,(
+    ! [X] :
+      ( ( p(X)
+        | ~ q(X,a) )
+     => ? [Y,Z] :
+          ( r(X,f(Y),g(X,f(Y),Z))
+          & ~ s(f(f(f(b)))) ) ) )).
+
+%----Roles
+fof(role_hypothesis,hypothesis,(
+    p(h) )).
+
+fof(role_conjecture,conjecture,(
+    ? [X] : p(X) )).
+
+%----Include directive
+include('Axioms/SYN000+0.ax').
+
+%----Comments
+/* This
+   is a block
+   comment.
+*/
+
+%------------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/SYN000+2.p b/test/regress/regress0/tptp/SYN000+2.p
new file mode 100644
index 0000000..8c6f2f9
--- /dev/null
+++ b/test/regress/regress0/tptp/SYN000+2.p
@@ -0,0 +1,127 @@
+%------------------------------------------------------------------------------
+% File     : SYN000+2 : TPTP v5.5.0. Bugfixed v4.1.1.
+% Domain   : Syntactic
+% Problem  : Advanced TPTP FOF syntax
+% Version  : Biased.
+% English  : Advanced TPTP FOF syntax that you will encounter some time.
+
+% Refs     :
+% Source   : [TPTP]
+% Names    :
+
+% Status   : Satisfiable
+% Rating   : 0.50 v5.5.0, 0.67 v5.2.0, 1.00 v5.0.0
+% Syntax   : Number of formulae    :   20 (  16 unit)
+%            Number of atoms       :   31 (   2 equality)
+%            Maximal formula depth :    7 (   2 average)
+%            Number of connectives :   13 (   2   ~;   9   |;   0   &)
+%                                         (   0 <=>;   0  =>;   0  <=;   0 <~>)
+%                                         (   1  ~|;   1  ~&)
+%            Number of predicates  :    8 (   3 propositional; 0-3 arity)
+%            Number of functors    :   22 (  20 constant; 0-3 arity)
+%            Number of variables   :    8 (   0 sgn;   8   !;   0   ?)
+%            Maximal term depth    :    2 (   1 average)
+%            Arithmetic symbols    :   12 (   0 pred;    0 func;   12 numbers)
+% SPC      : FOF_SAT_RFO_SEQ
+
+% Comments :
+% Bugfixes : v4.0.1 - Added more numbers, particularly rationals.
+%          : v4.1.1 - Removed rationals with negative denominators.
+%------------------------------------------------------------------------------
+%----Quoted symbols
+fof(distinct_object,axiom,(
+    "An Apple" != "A \"Microsoft \\ escape\"" )).
+
+%----Numbers
+fof(integers,axiom,
+    ( p(12)
+    | p(-12) )).
+
+fof(rationals,axiom,
+    ( p(123/456)
+    | p(-123/456)
+    | p(+123/456) )).
+
+fof(reals,axiom,
+    ( p(123.456 )
+    | p(-123.456 )
+    | p(123.456E789 )
+    | p(123.456e789 )
+    | p(-123.456E789 )
+    | p(123.456E-789 )
+    | p(-123.456E-789 ) )).
+
+%----Connectives - seen |, &, =>, ~ already
+fof(never_used_connectives,axiom,(
+    ! [X] :
+      ( ( p(X)
+       ~| ~ q(X,a) )
+     ~& p(X) ) )).
+
+%----Roles
+fof(role_definition,definition,(
+    ! [X] : f(d) = f(X) )).
+
+fof(role_assumption,assumption,(
+    p(a) )).
+
+fof(role_lemma,lemma,(
+    p(l) )).
+
+fof(role_theorem,theorem,(
+    p(t) )).
+
+fof(role_unknown,unknown,(
+    p(u) )).
+
+%----Selective include directive
+include('Axioms/SYN000+0.ax',[ia1,ia3]).
+
+%----Source
+fof(source_unknown,axiom,(
+    ! [X] : p(X) ),
+    unknown).
+
+fof(source,axiom,(
+    ! [X] : p(X) ),
+    file('SYN000-1.p')).
+
+fof(source_name,axiom,(
+    ! [X] : p(X) ),
+    file('SYN000-1.p',source_unknown)).
+
+fof(source_copy,axiom,(
+    ! [X] : p(X) ),
+    source_unknown).
+
+fof(source_introduced_assumption,axiom,(
+    ! [X] : p(X) ),
+    introduced(assumption,[from,the,world])).
+
+fof(source_inference,plain,(
+    p(a) ),
+    inference(magic,
+        [status(thm),assumptions([source_introduced_assumption])],
+        [theory(equality),source_unknown])).
+
+fof(source_inference_with_bind,plain,(
+    p(a) ),
+    inference(magic,
+        [status(thm)],
+        [theory(equality),source_unknown:[bind(X,$fot(a))]])).
+
+%----Useful info
+fof(useful_info,axiom,(
+    ! [X] : p(X) ),
+    unknown,
+    [simple,
+     prolog(like,Data,[nested,12.2]),
+     AVariable,
+     12.2,
+     "A distinct object",
+     $fof(p(X) | ~ q(X,a) | r(X,f(Y),g(X,f(Y),Z)) | ~ s(f(f(f(b))))),
+     data(name):[colon,list,2],
+     [simple,prolog(like,Data,[nested,12.2]),AVariable,12.2]
+    ]).
+
+%------------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/SYN000-1.p b/test/regress/regress0/tptp/SYN000-1.p
new file mode 100644
index 0000000..b6a68ec
--- /dev/null
+++ b/test/regress/regress0/tptp/SYN000-1.p
@@ -0,0 +1,83 @@
+%------------------------------------------------------------------------------
+% File     : SYN000-1 : TPTP v5.5.0. Released v4.0.0.
+% Domain   : Syntactic
+% Problem  : Basic TPTP CNF syntax
+% Version  : Biased.
+% English  : Basic TPTP CNF syntax that you can't survive without parsing.
+
+% Refs     :
+% Source   : [TPTP]
+% Names    :
+
+% Status   : Unsatisfiable
+% Rating   : 0.50 v5.4.0, 0.55 v5.3.0, 0.56 v5.2.0, 0.62 v5.1.0, 0.65 v5.0.0, 0.64 v4.1.0, 0.62 v4.0.1, 0.64 v4.0.0
+% Syntax   : Number of clauses     :   11 (   6 non-Horn;   5 unit;   7 RR)
+%            Number of atoms       :   27 (   3 equality)
+%            Maximal clause size   :    5 (   2 average)
+%            Number of predicates  :   16 (  10 propositional; 0-3 arity)
+%            Number of functors    :    8 (   5 constant; 0-3 arity)
+%            Number of variables   :   11 (   5 singleton)
+%            Maximal term depth    :    4 (   2 average)
+% SPC      : CNF_UNS_RFO_SEQ_NHN
+
+% Comments :
+%------------------------------------------------------------------------------
+%----Propositional
+cnf(propositional,axiom,
+    ( p0
+    | ~ q0
+    | r0
+    | ~ s0 )).
+
+%----First-order
+cnf(first_order,axiom,
+    ( p(X)
+    | ~ q(X,a)
+    | r(X,f(Y),g(X,f(Y),Z))
+    | ~ s(f(f(f(b)))) )).
+
+%----Equality
+cnf(equality,axiom,
+    ( f(Y) = g(X,f(Y),Z)
+    | f(f(f(b))) != a
+    | X = f(Y) )).
+
+%----True and false
+cnf(true_false,axiom,
+    ( $true
+    | $false )).
+
+%----Quoted symbols
+cnf(single_quoted,axiom,
+    ( 'A proposition'
+    | 'A predicate'(Y)
+    | p('A constant')
+    | p('A function'(a))
+    | p('A \'quoted \\ escape\'') )).
+
+%----Connectives - seen them all already
+
+%----Annotated formula names
+cnf(123,axiom,
+    ( p(X)
+    | ~ q(X,a)
+    | r(X,f(Y),g(X,f(Y),Z))
+    | ~ s(f(f(f(b)))) )).
+
+%----Roles - seen axiom already
+cnf(role_hypothesis,hypothesis,
+    p(h)).
+
+cnf(role_negated_conjecture,negated_conjecture,
+    ~ p(X)).
+
+%----Include directive
+include('Axioms/SYN000-0.ax').
+
+%----Comments
+/* This
+   is a block
+   comment.
+*/
+
+%------------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/SYN000-2.p b/test/regress/regress0/tptp/SYN000-2.p
new file mode 100644
index 0000000..0c6c0b5
--- /dev/null
+++ b/test/regress/regress0/tptp/SYN000-2.p
@@ -0,0 +1,117 @@
+%------------------------------------------------------------------------------
+% File     : SYN000-2 : TPTP v5.5.0. Bugfixed v4.1.1.
+% Domain   : Syntactic
+% Problem  : Advanced TPTP CNF syntax
+% Version  : Biased.
+% English  : Advanced TPTP CNF syntax that you will encounter some time.
+
+% Refs     :
+% Source   : [TPTP]
+% Names    :
+
+% Status   : Satisfiable
+% Rating   : 1.00 v5.4.0, 0.90 v5.3.0, 0.89 v5.2.0, 0.90 v5.0.0
+% Syntax   : Number of clauses     :   19 (   3 non-Horn;  16 unit;  12 RR)
+%            Number of atoms       :   28 (   2 equality)
+%            Maximal clause size   :    7 (   1 average)
+%            Number of predicates  :    8 (   3 propositional; 0-3 arity)
+%            Number of functors    :   22 (  20 constant; 0-3 arity)
+%            Number of variables   :    7 (   7 singleton)
+%            Maximal term depth    :    2 (   1 average)
+%            Arithmetic symbols    :   12 (   0 pred;    0 func;   12 numbers)
+% SPC      : CNF_SAT_RFO_EQU_NUE
+
+% Comments :
+% Bugfixes : v4.0.1 - Added more numbers, particularly rationals.
+%          : v4.1.1 - Removed rationals with negative denominators.
+%------------------------------------------------------------------------------
+%----Quoted symbols
+cnf(distinct_object,axiom,
+    ( "An Apple" != "A \"Microsoft \\ escape\"" )).
+
+%----Numbers
+cnf(integers,axiom,
+    ( p(12)
+    | p(-12) )).
+
+cnf(rationals,axiom,
+    ( p(123/456)
+    | p(-123/456)
+    | p(+123/456) )).
+
+cnf(reals,axiom,
+    ( p(123.456 )
+    | p(-123.456 )
+    | p(123.456E789 )
+    | p(123.456e789 )
+    | p(-123.456E789 )
+    | p(123.456E-789 )
+    | p(-123.456E-789 ) )).
+
+%----Roles - seen axiom already
+cnf(role_definition,definition,
+    f(d) = f(X) ).
+
+cnf(role_assumption,assumption,
+    p(a) ).
+
+cnf(role_lemma,lemma,
+    p(l) ).
+
+cnf(role_theorem,theorem,
+    p(t) ).
+
+cnf(role_unknown,unknown,
+    p(u) ).
+
+%----Selective include directive
+include('Axioms/SYN000-0.ax',[ia1,ia3]).
+
+%----Source
+cnf(source_unknown,axiom,
+    p(X),
+    unknown).
+
+cnf(source,axiom,
+    p(X),
+    file('SYN000-1.p')).
+
+cnf(source_name,axiom,
+    p(X),
+    file('SYN000-1.p',source_unknown)).
+
+cnf(source_copy,axiom,
+    p(X),
+    source_unknown).
+
+cnf(source_introduced_assumption,axiom,
+    p(X),
+    introduced(assumption,[from,the,world])).
+
+cnf(source_inference,plain,
+    p(a),
+    inference(magic,
+        [status(thm),assumptions([source_introduced_assumption])],
+        [theory(equality),source_unknown])  ).
+
+cnf(source_inference_with_bind,plain,
+    p(a),
+    inference(magic,
+        [status(thm)],
+        [theory(equality),source_unknown:[bind(X,$fot(a))]])  ).
+
+%----Useful info
+cnf(useful_info,axiom,
+    p(X),
+    unknown,
+    [simple,
+     prolog(like,Data,[nested,12.2]),
+     AVariable,
+     12.2,
+     "A distinct object",
+     $cnf(p(X) | ~q(X,a) | r(X,f(Y),g(X,f(Y),Z)) | ~ s(f(f(f(b))))),
+     data(name):[colon,list,2],
+     [simple,prolog(like,Data,[nested,12.2]),AVariable,12.2]
+    ]).
+
+%------------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/SYN000=2.p b/test/regress/regress0/tptp/SYN000=2.p
new file mode 100644
index 0000000..802613f
--- /dev/null
+++ b/test/regress/regress0/tptp/SYN000=2.p
@@ -0,0 +1,309 @@
+%------------------------------------------------------------------------------
+% File     : SYN000=2 : TPTP v5.5.0. Bugfixed v5.5.1.
+% Domain   : Syntactic
+% Problem  : TF0 syntax with arithmetic
+% Version  : Biased.
+% English  : 
+
+% Refs     :
+% Source   : [TPTP]
+% Names    :
+
+% Status   : Theorem
+% Rating   : ? v5.5.1
+% Syntax   : Number of formulae    :   83 (  73 unit;   6 type)
+%            Number of atoms       :  100 (   4 equality)
+%            Maximal formula depth :    7 (   1 average)
+%            Number of connectives :   14 (   0   ~;  10   |;   1   &)
+%                                         (   0 <=>;   3  =>;   0  <=;   0 <~>)
+%                                         (   0  ~|;   0  ~&)
+%            Number of type conns  :    3 (   3   >;   0   *;   0   +;   0  <<)
+%            Number of predicates  :   20 (  10 propositional; 0-2 arity)
+%            Number of functors    :   41 (  24 constant; 0-2 arity)
+%            Number of variables   :   14 (   1 sgn;   3   !;  11   ?)
+%            Maximal term depth    :    3 (   1 average)
+%            Arithmetic symbols    :   37 (   9 pred;    7 func;   21 numbers)
+% SPC      : TF0_THM_EQU_ARI
+
+% Comments : 
+% Bugfixes : v5.5.1 - Removed $evaleq.
+%------------------------------------------------------------------------------
+%----Types for what follows
+tff(p_int_type,type,(
+    p_int: $int > $o )).
+
+tff(p_rat_type,type,(
+    p_rat: $rat > $o )).
+
+tff(p_real_type,type,(
+    p_real: $real > $o )).
+
+tff(a_int,type,(
+    a_int: $int )).
+
+tff(a_rat,type,(
+    a_rat: $rat )).
+
+tff(a_real,type,(
+    a_real: $real )).
+
+%----Numbers
+tff(integers,axiom,
+    ( p_int(123)
+    | p_int(-123) )).
+
+tff(rationals,axiom,
+    ( p_rat(123/456)
+    | p_rat(-123/456)
+    | p_rat(123/456) )).
+
+tff(reals,axiom,
+    ( p_real(123.456)
+    | p_real(-123.456)
+    | p_real(123.456E78)
+    | p_real(123.456e78)
+    | p_real(-123.456E78)
+    | p_real(123.456E-78)
+    | p_real(-123.456E-78) )).
+
+%----Variables
+tff(variables_int,axiom,(
+    ! [X: $int] :
+    ? [Y: $int] :
+      ( p_int(X)
+     => p_int(Y) ) )).
+
+tff(variables_rat,axiom,(
+    ! [X: $rat] :
+    ? [Y: $rat] :
+      ( p_rat(X)
+     => p_rat(Y) ) )).
+
+tff(variables_real,axiom,(
+    ! [X: $real] :
+    ? [Y: $real] :
+      ( p_real(X)
+     => p_real(Y) ) )).
+
+%----Arithmetic relations
+tff(less_int,axiom,(
+    $less(a_int,3) )).
+
+tff(less_rat,axiom,(
+    $less(a_rat,3/9) )).
+
+tff(less_real,axiom,(
+    $less(a_real,3.3) )).
+
+tff(lesseq_int,axiom,(
+    $lesseq(a_int,3) )).
+
+tff(lesseq_rat,axiom,(
+    $lesseq(a_rat,3/9) )).
+
+tff(lesseq_real,axiom,(
+    $lesseq(a_real,3.3) )).
+
+tff(greater_int,axiom,(
+    $greater(a_int,-3) )).
+
+tff(greater_rat,axiom,(
+    $greater(a_rat,-3/9) )).
+
+tff(greater_real,axiom,(
+    $greater(a_real,-3.3) )).
+
+tff(greatereq_int,axiom,(
+    $greatereq(a_int,-3) )).
+
+tff(greatereq_rat,axiom,(
+    $greatereq(a_rat,-3/9) )).
+
+tff(greatereq_real,axiom,(
+    $greatereq(a_real,-3.3) )).
+
+tff(equal_int,axiom,(
+    a_int = 0 )).
+
+tff(equal_rat,axiom,(
+    a_rat = 0/1 )).
+
+tff(equal_real,axiom,(
+    a_real = 0.0 )).
+
+%----Arithmetic functions
+tff(uminus_int,axiom,(
+    p_int($uminus(3)) )).
+
+tff(uminus_rat,axiom,(
+    p_rat($uminus(3/9)) )).
+
+tff(uminus_real,axiom,(
+    p_real($uminus(3.3)) )).
+
+tff(sum_int,axiom,(
+    p_int($sum(3,3)) )).
+
+tff(sum_rat,axiom,(
+    p_rat($sum(3/9,3/9)) )).
+
+tff(sum_real,axiom,(
+    p_real($sum(3.3,3.3)) )).
+
+tff(difference_int,axiom,(
+    p_int($difference(3,3)) )).
+
+tff(difference_rat,axiom,(
+    p_rat($difference(3/9,3/9)) )).
+
+tff(difference_real,axiom,(
+    p_real($difference(3.3,3.3)) )).
+
+tff(product_int,axiom,(
+    p_int($product(3,3)) )).
+
+tff(product_rat,axiom,(
+    p_rat($product(3/9,3/9)) )).
+
+tff(product_real,axiom,(
+    p_real($product(3.3,3.3)) )).
+
+tff(quotient_rat,axiom,(
+    p_rat($quotient(3/9,3/9)) )).
+
+tff(quotient_real,axiom,(
+    p_real($quotient(3.3,3.3)) )).
+
+tff(quotient_e_int,axiom,(
+    p_int($quotient_e(3,3)) )).
+
+tff(quotient_e_rat,axiom,(
+    p_rat($quotient_e(3/9,3/9)) )).
+
+tff(quotient_e_real,axiom,(
+    p_real($quotient_e(3.3,3.3)) )).
+
+tff(quotient_t_int,axiom,(
+    p_int($quotient_t(3,3)) )).
+
+tff(quotient_t_rat,axiom,(
+    p_rat($quotient_t(3/9,3/9)) )).
+
+tff(quotient_t_real,axiom,(
+    p_real($quotient_t(3.3,3.3)) )).
+
+tff(quotient_f_int,axiom,(
+    p_int($quotient_f(3,3)) )).
+
+tff(quotient_f_rat,axiom,(
+    p_rat($quotient_f(3/9,3/9)) )).
+
+tff(quotient_f_real,axiom,(
+    p_real($quotient_f(3.3,3.3)) )).
+
+tff(remainder_e_int,axiom,(
+    p_int($remainder_e(3,3)) )).
+
+tff(remainder_e_rat,axiom,(
+    p_rat($remainder_e(3/9,3/9)) )).
+
+tff(remainder_e_real,axiom,(
+    p_real($remainder_e(3.3,3.3)) )).
+
+tff(remainder_t_int,axiom,(
+    p_int($remainder_t(3,3)) )).
+
+tff(remainder_t_rat,axiom,(
+    p_rat($remainder_t(3/9,3/9)) )).
+
+tff(remainder_t_real,axiom,(
+    p_real($remainder_t(3.3,3.3)) )).
+
+tff(remainder_f_int,axiom,(
+    p_int($remainder_f(3,3)) )).
+
+tff(remainder_f_rat,axiom,(
+    p_rat($remainder_f(3/9,3/9)) )).
+
+tff(remainder_f_real,axiom,(
+    p_real($remainder_f(3.3,3.3)) )).
+
+tff(floor_int,axiom,(
+    p_int($floor(3)) )).
+
+tff(floor_rat,axiom,(
+    p_rat($floor(3/9)) )).
+
+tff(floor_int,axiom,(
+    p_real($floor(3.3)) )).
+
+tff(ceiling_int,axiom,(
+    p_int($ceiling(3)) )).
+
+tff(ceiling_rat,axiom,(
+    p_rat($ceiling(3/9)) )).
+
+tff(ceiling_int,axiom,(
+    p_real($ceiling(3.3)) )).
+
+tff(truncate_int,axiom,(
+    p_int($truncate(3)) )).
+
+tff(truncate_rat,axiom,(
+    p_rat($truncate(3/9)) )).
+
+tff(truncate_int,axiom,(
+    p_real($truncate(3.3)) )).
+
+%----Recognizing numbers
+tff(is_int_int,axiom,(
+    ? [X: $int] : $is_int(X) )).
+
+tff(is_int_rat,axiom,(
+    ? [X: $rat] : $is_int(X) )).
+
+tff(is_int_real,axiom,(
+    ? [X: $real] : $is_int(X) )).
+
+tff(is_rat_rat,axiom,(
+    ? [X: $rat] : $is_rat(X) )).
+
+tff(is_rat_real,axiom,(
+    ? [X: $real] : $is_rat(X) )).
+
+%----Coercion
+tff(to_int_int,axiom,(
+    p_int($to_int(3)) )).
+
+tff(to_int_rat,axiom,(
+    p_int($to_int(3/9)) )).
+
+tff(to_int_real,axiom,(
+    p_int($to_int(3.3)) )).
+
+tff(to_rat_int,axiom,(
+    p_rat($to_rat(3)) )).
+
+tff(to_rat_rat,axiom,(
+    p_rat($to_rat(3/9)) )).
+
+tff(to_rat_real,axiom,(
+    p_rat($to_rat(3.3)) )).
+
+tff(to_real_int,axiom,(
+    p_real($to_real(3)) )).
+
+tff(to_real_rat,axiom,(
+    p_real($to_real(3/9)) )).
+
+tff(to_real_real,axiom,(
+    p_real($to_real(3.3)) )).
+
+%----A conjecture to prove
+tff(mixed,conjecture,(
+    ? [X: $int,Y: $rat,Z: $real] :
+      ( Y = $to_rat($sum(X,2))
+      & ( $less($to_int(Y),3)
+        | $greater($to_real(Y),3.3) ) ) )).
+
+%------------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/SYN000_1.p b/test/regress/regress0/tptp/SYN000_1.p
new file mode 100644
index 0000000..ed683c0
--- /dev/null
+++ b/test/regress/regress0/tptp/SYN000_1.p
@@ -0,0 +1,170 @@
+%------------------------------------------------------------------------------
+% File     : SYN000_1 : TPTP v5.5.0. Released v5.0.0.
+% Domain   : Syntactic
+% Problem  : Basic TPTP TFF syntax without arithmetic
+% Version  : Biased.
+% English  : Basic TPTP TFF syntax that you can't survive without parsing.
+
+% Refs     :
+% Source   : [TPTP]
+% Names    :
+
+% Status   : Theorem
+% Rating   : 0.40 v5.5.0, 0.25 v5.4.0, 0.33 v5.2.0, 0.67 v5.0.0
+% Syntax   : Number of formulae    :   38 (  21 unit;  25 type)
+%            Number of atoms       :   74 (   3 equality)
+%            Maximal formula depth :    7 (   3 average)
+%            Number of connectives :   28 (   9   ~;  10   |;   3   &)
+%                                         (   1 <=>;   3  =>;   1  <=;   1 <~>)
+%                                         (   0  ~|;   0  ~&)
+%            Number of type conns  :   17 (  10   >;   7   *;   0   +;   0  <<)
+%            Number of predicates  :   37 (  30 propositional; 0-3 arity)
+%            Number of functors    :   10 (   6 constant; 0-3 arity)
+%            Number of variables   :   14 (   1 sgn;   6   !;   8   ?)
+%            Maximal term depth    :    4 (   2 average)
+% SPC      : TFF_THM_EQU_NAR
+
+% Comments :
+%------------------------------------------------------------------------------
+%----Propositional
+tff(p0_type,type,(
+    p0: $o )).
+
+tff(q0_type,type,(
+    q0: $o )).
+
+tff(r0_type,type,(
+    r0: $o )).
+
+tff(s0_type,type,(
+    s0: $o )).
+
+tff(propositional,axiom,
+    ( ( p0
+      & ~ q0 )
+   => ( r0
+      | ~ s0 ) )).
+
+%----First-order
+tff(a_type,type,(
+    a: $i )).
+
+tff(b_type,type,(
+    b: $i )).
+
+tff(h_type,type,(
+    h: $i )).
+
+tff(f_type,type,(
+    f: $i > $i )).
+
+tff(g_type,type,(
+    g: ( $i * $i * $i ) > $i )).
+
+tff(p_type,type,(
+    p: $i > $o )).
+
+tff(q_type,type,(
+    q: ( $i * $i ) > $o )).
+
+tff(r_type,type,(
+    r: ( $i * $i * $i ) > $o )).
+
+tff(s_type,type,(
+    s: $i > $o )).
+
+tff(first_order,axiom,(
+    ! [X: $i] :
+      ( ( p(X)
+        | ~ q(X,a) )
+     => ? [Y: $i,Z: $i] :
+          ( r(X,f(Y),g(X,f(Y),Z))
+          & ~ s(f(f(f(b)))) ) ) )).
+
+%----Equality
+tff(equality,axiom,(
+    ? [Y: $i] :
+    ! [X: $i,Z: $i] :
+      ( f(Y) = g(X,f(Y),Z)
+      | f(f(f(b))) != a
+      | X = f(Y) ) )).
+
+%----True and false
+tff(true_false,axiom,
+    ( $true
+    | $false )).
+
+tff(quoted_proposition_type,type,(
+    'A proposition': $o )).
+
+tff(quoted_predicate_type,type,(
+    'A predicate': $i > $o )).
+
+tff(quoted_constant_type,type,(
+    'A constant': $i )).
+
+tff(quoted_function_type,type,(
+    'A function': $i > $i )).
+
+tff(quoted_escape_type,type,(
+    'A \'quoted \\ escape\'': $i )).
+
+%----Quoted symbols
+tff(single_quoted,axiom,
+    ( 'A proposition'
+    | 'A predicate'(a)
+    | p('A constant')
+    | p('A function'(a))
+    | p('A \'quoted \\ escape\'') )).
+
+%----Connectives - seen |, &, =>, ~ already
+tff(useful_connectives,axiom,(
+    ! [X: $i] :
+      ( ( p(X)
+       <= ~ q(X,a) )
+    <=> ? [Y: $i,Z: $i] :
+          ( r(X,f(Y),g(X,f(Y),Z))
+        <~> ~ s(f(f(f(b)))) ) ) )).
+
+%----New types
+tff(new_type,type,(
+    new: $tType )).
+
+tff(newc_type,type,(
+    newc: new )).
+
+tff(newf_type,type,(
+    newf: ( new * $i ) > new )).
+
+tff(newp_type,type,(
+    newp: ( new * $i ) > $o )).
+
+tff(new_axiom,axiom,(
+    ! [X: new] : newp(newf(newc,a),a) )).
+
+%----Annotated formula names
+tff(123,axiom,(
+    ! [X: $i] :
+      ( ( p(X)
+        | ~ q(X,a) )
+     => ? [Y: $i,Z: $i] :
+          ( r(X,f(Y),g(X,f(Y),Z))
+          & ~ s(f(f(f(b)))) ) ) )).
+
+%----Roles
+tff(role_hypothesis,hypothesis,(
+    p(h) )).
+
+tff(role_conjecture,conjecture,(
+    ? [X: $i] : p(X) )).
+
+%----Include directive
+include('Axioms/SYN000_0.ax').
+
+%----Comments
+/* This
+   is a block
+   comment.
+*/
+
+%------------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/SYN000_2.p b/test/regress/regress0/tptp/SYN000_2.p
new file mode 100644
index 0000000..ece5fa6
--- /dev/null
+++ b/test/regress/regress0/tptp/SYN000_2.p
@@ -0,0 +1,135 @@
+%------------------------------------------------------------------------------
+% File     : SYN000_2 : TPTP v5.5.0. Bugfixed v5.5.1.
+% Domain   : Syntactic
+% Problem  : Advanced TPTP TF0 syntax without arithmetic
+% Version  : Biased.
+% English  : Advanced TPTP TF0 syntax that you will encounter some time.
+
+% Refs     :
+% Source   : [TPTP]
+% Names    :
+
+% Status   : Satisfiable
+% Rating   : ? v5.5.1
+% Syntax   : Number of formulae    :   26 (  18 unit;   7 type)
+%            Number of atoms       :   42 (   2 equality)
+%            Maximal formula depth :    5 (   2 average)
+%            Number of connectives :    6 (   2   ~;   0   |;   1   &)
+%                                         (   1 <=>;   0  =>;   0  <=;   0 <~>)
+%                                         (   1  ~|;   1  ~&)
+%            Number of type conns  :    9 (   5   >;   4   *;   0   +;   0  <<)
+%            Number of predicates  :   14 (  11 propositional; 0-2 arity)
+%            Number of functors    :    6 (   4 constant; 0-2 arity)
+%            Number of variables   :   18 (   0 sgn;  13   !;   1   ?)
+%            Maximal term depth    :    2 (   1 average)
+% SPC      : TF0_SAT_EQU_NAR
+
+% Comments : 
+% Bugfixes : v5.5.1 - Fixed let_binders.
+%------------------------------------------------------------------------------
+%----Quoted symbols
+tff(distinct_object,axiom,(
+    "An Apple" != "A \"Microsoft \\ escape\"" )).
+
+%----Types for stuff below
+tff(a_type,type,(
+    a: $i )).
+
+tff(b_type,type,(
+    b: $i )).
+
+tff(f_type,type,(
+    f: $i > $i )).
+
+tff(g_type,type,(
+    g: ( $i * $i ) > $i )).
+
+tff(h_type,type,(
+    h: ( $i * $i * $i ) > $i )).
+
+tff(p_type,type,(
+    p: $i > $o )).
+
+tff(q_type,type,(
+    q: ( $i * $i ) > $o )).
+
+%----Conditional constructs
+tff(conditionals,axiom,(
+    ! [Z: $i] :
+      $ite_f(
+        ? [X: $i] : p(X)
+      , ! [X: $i] : q(X,X)
+      , q(Z,$ite_t(! [X: $i] : p(X), f(a), f(Z))) ) )).
+
+%----Let binders
+tff(let_binders,axiom,(
+    ! [X: $i] :
+      $let_ff(
+        ! [Y1: $i,Y2: $i] :
+          ( q(Y1,Y2)
+        <=> p(Y1) )
+      , ( q($let_tt(! [Z1: $i] : f(Z1) = g(Z1,b), f(a)),X)
+        & p($let_ft(! [Y3: $i] : ! [Y4: $i] : ( q(Y3,Y4) <=> $ite_f(Y3 = Y4, q(a,a), q(Y3,Y4) ) ), $ite_t(q(b,b), f(a), f(X)))) ) ) )).
+
+%----Rare connectives
+tff(never_used_connectives,axiom,(
+    ! [X: $i] :
+      ( ( p(X)
+       ~| ~ q(X,a) )
+     ~& p(X) ) )).
+
+%----Roles
+tff(role_definition,definition,(
+    ! [X: $i] : f(a) = f(X) )).
+
+tff(role_assumption,assumption,(
+    p(a) )).
+
+tff(role_lemma,lemma,(
+    p(a) )).
+
+tff(role_theorem,theorem,(
+    p(a) )).
+
+tff(role_unknown,unknown,(
+    p(a) )).
+
+%----Selective include directive
+include('Axioms/SYN000_0.ax',[ia1,ia3]).
+
+%----Source
+tff(source_unknown,axiom,(
+    ! [X: $i] : p(X) ),
+    unknown).
+
+tff(source,axiom,(
+    ! [X: $i] : p(X) ),
+    file('SYN000-1.p')).
+
+tff(source_name,axiom,(
+    ! [X: $i] : p(X) ),
+    file('SYN000-1.p',source_unknown)).
+
+tff(source_copy,axiom,(
+    ! [X: $i] : p(X) ),
+    source_unknown).
+
+tff(source_introduced_assumption,axiom,(
+    ! [X: $i] : p(X) ),
+    introduced(assumption,[from,the,world])).
+
+tff(source_inference,plain,(
+    p(a) ),
+    inference(magic,[status(thm),assumptions([source_introduced_assumption])],[theory(equality),source_unknown])).
+
+tff(source_inference_with_bind,plain,(
+    p(a) ),
+    inference(magic,[status(thm)],[theory(equality),source_unknown:[bind(X,$fot(a))]])).
+
+%----Useful info
+tff(useful_info,axiom,(
+    ! [X: $i] : p(X) ),
+    unknown,
+    [simple,prolog(like,Data,[nested,12.2]),AVariable,12.2,"A distinct object",$tff(p(X) | ~ q(X,a)),data(name):[colon,list,2],[simple,prolog(like,Data,[nested,12.2]),AVariable,12.2]]).
+
+%------------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/SYN075+1.p b/test/regress/regress0/tptp/SYN075+1.p
new file mode 100644
index 0000000..7ef4021
--- /dev/null
+++ b/test/regress/regress0/tptp/SYN075+1.p
@@ -0,0 +1,46 @@
+%--------------------------------------------------------------------------
+% File     : SYN075+1 : TPTP v5.5.0. Released v2.0.0.
+% Domain   : Syntactic
+% Problem  : Pelletier Problem 52
+% Version  : Especial.
+% English  :
+
+% Refs     : [Pel86] Pelletier (1986), Seventy-five Problems for Testing Au
+%          : [Hah94] Haehnle (1994), Email to G. Sutcliffe
+% Source   : [Hah94]
+% Names    : Pelletier 52 [Pel86]
+
+% Status   : Theorem
+% Rating   : 0.22 v5.5.0, 0.15 v5.4.0, 0.18 v5.3.0, 0.26 v5.2.0, 0.05 v5.0.0, 0.21 v4.1.0, 0.17 v4.0.1, 0.22 v4.0.0, 0.21 v3.7.0, 0.00 v3.3.0, 0.11 v3.2.0, 0.33 v3.1.0, 0.17 v2.7.0, 0.00 v2.5.0, 0.33 v2.4.0, 0.33 v2.2.1, 0.00 v2.1.0
+% Syntax   : Number of formulae    :    2 (   0 unit)
+%            Number of atoms       :    6 (   4 equality)
+%            Maximal formula depth :    7 (   7 average)
+%            Number of connectives :    4 (   0 ~  ;   0  |;   1  &)
+%                                         (   3 <=>;   0 =>;   0 <=)
+%                                         (   0 <~>;   0 ~|;   0 ~&)
+%            Number of predicates  :    2 (   0 propositional; 2-2 arity)
+%            Number of functors    :    0 (   0 constant; --- arity)
+%            Number of variables   :    8 (   0 singleton;   4 !;   4 ?)
+%            Maximal term depth    :    1 (   1 average)
+% SPC      : FOF_THM_RFO_SEQ
+
+% Comments :
+%--------------------------------------------------------------------------
+%----Problem axioms
+fof(pel52_1,axiom,
+    ( ? [Z,W] :
+      ! [X,Y] :
+        ( big_f(X,Y)
+      <=> ( X = Z
+          & Y = W ) ) )).
+
+fof(pel52,conjecture,
+    ( ? [W] :
+      ! [Y] :
+        ( ? [Z] :
+          ! [X] :
+            ( big_f(X,Y)
+          <=> X = Z )
+      <=> Y = W ) )).
+
+%--------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/SYN075-1.p b/test/regress/regress0/tptp/SYN075-1.p
new file mode 100644
index 0000000..40b49fa
--- /dev/null
+++ b/test/regress/regress0/tptp/SYN075-1.p
@@ -0,0 +1,76 @@
+%--------------------------------------------------------------------------
+% File     : SYN075-1 : TPTP v5.5.0. Released v1.0.0.
+% Domain   : Syntactic
+% Problem  : Pelletier Problem 52
+% Version  : Especial.
+% English  :
+
+% Refs     : [Pel86] Pelletier (1986), Seventy-five Problems for Testing Au
+% Source   : [Pel86]
+% Names    : Pelletier 52 [Pel86]
+
+% Status   : Unsatisfiable
+% Rating   : 0.00 v5.5.0, 0.20 v5.3.0, 0.22 v5.2.0, 0.12 v5.1.0, 0.06 v5.0.0, 0.07 v4.1.0, 0.08 v4.0.1, 0.18 v4.0.0, 0.09 v3.7.0, 0.00 v3.3.0, 0.14 v3.2.0, 0.08 v3.1.0, 0.09 v2.7.0, 0.08 v2.6.0, 0.00 v2.5.0, 0.08 v2.4.0, 0.11 v2.2.1, 0.11 v2.2.0, 0.22 v2.1.0, 0.33 v2.0.0
+% Syntax   : Number of clauses     :   10 (   4 non-Horn;   0 unit;   8 RR)
+%            Number of atoms       :   31 (  17 equality)
+%            Maximal clause size   :    4 (   3 average)
+%            Number of predicates  :    2 (   0 propositional; 2-2 arity)
+%            Number of functors    :    5 (   2 constant; 0-2 arity)
+%            Number of variables   :   23 (   2 singleton)
+%            Maximal term depth    :    2 (   1 average)
+% SPC      : CNF_UNS_RFO_SEQ_NHN
+
+% Comments :
+%--------------------------------------------------------------------------
+cnf(clause_1,axiom,
+    ( ~ big_f(X,Y)
+    | X = a )).
+
+cnf(clause_2,axiom,
+    ( ~ big_f(X,Y)
+    | Y = b )).
+
+cnf(clause_3,axiom,
+    ( X != a
+    | Y != b
+    | big_f(X,Y) )).
+
+cnf(clause_4,negated_conjecture,
+    ( ~ big_f(Y,f(X))
+    | Y != g(X)
+    | f(X) = X )).
+
+cnf(clause_5,negated_conjecture,
+    ( ~ big_f(Y,f(X))
+    | Y = g(X)
+    | big_f(h(X,Z),f(X))
+    | ~ big_f(h(X,Z),f(X)) )).
+
+cnf(clause_6,negated_conjecture,
+    ( Y != g(X)
+    | big_f(Y,f(X))
+    | f(X) = X )).
+
+cnf(clause_7,negated_conjecture,
+    ( Y != g(X)
+    | big_f(Y,f(X))
+    | big_f(h(X,Z),f(X))
+    | h(X,Z) = Z )).
+
+cnf(clause_8,negated_conjecture,
+    ( Y != g(X)
+    | big_f(Y,f(X))
+    | h(X,Z) != Z
+    | ~ big_f(h(X,Z),f(X)) )).
+
+cnf(clause_9,negated_conjecture,
+    ( f(X) != X
+    | big_f(h(X,Z),f(X))
+    | h(X,Z) = Z )).
+
+cnf(clause_10,negated_conjecture,
+    ( f(X) != X
+    | h(X,Z) != Z
+    | ~ big_f(h(X,Z),f(X)) )).
+
+%--------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/tff0-arith.p b/test/regress/regress0/tptp/tff0-arith.p
new file mode 100644
index 0000000..c0e9af2
--- /dev/null
+++ b/test/regress/regress0/tptp/tff0-arith.p
@@ -0,0 +1,27 @@
+% example from the TFF0 paper
+% see https://sites.google.com/site/polymorphictptptff/relevant-links/tff-tfa
+%
+% Status : Theorem
+%
+tff(list_type,type, ( list: $tType )).
+tff(nil_type,type, ( nil: list )).
+tff(mycons_type,type,( mycons: ( $int * list ) > list )).
+tff(sorted_type,type,( fib_sorted: list > $o )).
+
+tff(empty_fib_sorted,axiom,(
+    fib_sorted(nil) )).
+tff(single_is_fib_sorted,axiom,(
+    ! [X: $int] : fib_sorted(mycons(X,nil)) )).
+tff(double_is_fib_sorted_if_ordered,axiom,(
+    ! [X: $int,Y: $int] :
+      ( $less(X,Y)
+     => fib_sorted(mycons(X,mycons(Y,nil))) ) )).
+tff(recursive_fib_sort,axiom,(
+    ! [X: $int,Y: $int,Z: $int,R: list] :
+      ( ( $less(X,Y)
+        & $greatereq(Z,$sum(X,Y))
+        & fib_sorted(mycons(Y,mycons(Z,R))) )
+     => fib_sorted(mycons(X,mycons(Y,mycons(Z,R)))) ) )).
+
+tff(check_list,conjecture,(
+    fib_sorted(mycons(1,mycons(2,mycons(4,nil)))) )).
diff --git a/test/regress/regress0/tptp/tff0.p b/test/regress/regress0/tptp/tff0.p
new file mode 100644
index 0000000..0402687
--- /dev/null
+++ b/test/regress/regress0/tptp/tff0.p
@@ -0,0 +1,37 @@
+% example from the TFF0 paper
+% see https://sites.google.com/site/polymorphictptptff/relevant-links/tff-tfa
+%
+% Status : Theorem
+%
+tff(student_type,type, ( student: $tType )).
+tff(professor_type,type,( professor: $tType )).
+tff(course_type,type, ( course: $tType )).
+tff(michael_type,type, ( michael: student )).
+tff(victor_type,type, ( victor: professor )).
+tff(csc410_type,type, ( csc410: course )).
+tff(enrolled_type,type, ( enrolled: ( student * course ) > $o )).
+tff(teaches_type,type, ( teaches: ( professor * course ) > $o )).
+tff(taught_by_type,type,( taughtby: ( student * professor ) > $o )).
+tff(coordinator_of_type,type,( coordinatorof: course > professor )).
+
+tff(student_enrolled_axiom,axiom,(
+    ! [X: student] : ? [Y: course] : enrolled(X,Y) )).
+tff(professor_teaches,axiom,(
+    ! [X: professor] : ? [Y: course] : teaches(X,Y) )).
+tff(course_enrolled,axiom,(
+    ! [X: course] : ? [Y: student] : enrolled(Y,X) )).
+tff(course_teaches,axiom,(
+    ! [X: course] : ? [Y: professor] : teaches(Y,X) )).
+tff(coordinator_teaches,axiom,(
+    ! [X: course] : teaches(coordinatorof(X),X) )).
+tff(student_enrolled_taught,axiom,(
+    ! [X: student,Y: course] :
+      ( enrolled(X,Y)
+     => ! [Z: professor] : ( teaches(Z,Y) => taughtby(X,Z) ) ) )).
+tff(michael_enrolled_csc410_axiom,axiom,(
+    enrolled(michael,csc410) )).
+tff(victor_coordinator_csc410_axiom,axiom,(
+    coordinatorof(csc410) = victor )).
+
+tff(teaching_conjecture,conjecture,(
+    taughtby(michael,victor) )).
diff --git a/test/regress/regress0/tptp/tptp_parser.p b/test/regress/regress0/tptp/tptp_parser.p
new file mode 100644
index 0000000..9c10d5b
--- /dev/null
+++ b/test/regress/regress0/tptp/tptp_parser.p
@@ -0,0 +1,16 @@
+% Status: Unsatisfiable
+
+%--------------------------------------------------------------------------
+
+/*
+cnf(query_1,axiom,
+    $false | $false /* | $false).
+*/
+
+cnf(query_1,axiom,
+    $false | $false | $false).
+
+cnf(query_1,negated_conjecture, ~
+    $false | $false | $false).
+
+%--------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/tptp_parser10.p b/test/regress/regress0/tptp/tptp_parser10.p
new file mode 100644
index 0000000..d6a2571
--- /dev/null
+++ b/test/regress/regress0/tptp/tptp_parser10.p
@@ -0,0 +1,9 @@
+% Status: Theorem
+
+%--------------------------------------------------------------------------
+
+fof(query_1,axiom, ![A,B]: (A != B => e(A) != e(B)) ).
+
+fof(query_1,conjecture, e(1.6) != e(1) ).
+
+%--------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/tptp_parser2.p b/test/regress/regress0/tptp/tptp_parser2.p
new file mode 100644
index 0000000..e165b6b
--- /dev/null
+++ b/test/regress/regress0/tptp/tptp_parser2.p
@@ -0,0 +1,13 @@
+% Status: Unsatisfiable
+
+%--------------------------------------------------------------------------
+
+cnf(query_1,axiom, a | b ).
+
+cnf(query_1,axiom, b | c ).
+
+cnf(query_1,axiom, ~a | ~ 'c' ).
+
+cnf(query_1,negated_conjecture, ~ b ).
+
+%--------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/tptp_parser3.p b/test/regress/regress0/tptp/tptp_parser3.p
new file mode 100644
index 0000000..2840892
--- /dev/null
+++ b/test/regress/regress0/tptp/tptp_parser3.p
@@ -0,0 +1,13 @@
+% Status: Unsatisfiable
+
+%--------------------------------------------------------------------------
+
+cnf(query_1,axiom, p( a, d ) | b ).
+
+cnf(query_1,axiom, b | c ).
+
+cnf(query_1,axiom, ~p(a, d) | ~ 'c' ).
+
+cnf(query_1,negated_conjecture, ~ b ).
+
+%--------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/tptp_parser4.p b/test/regress/regress0/tptp/tptp_parser4.p
new file mode 100644
index 0000000..448db77
--- /dev/null
+++ b/test/regress/regress0/tptp/tptp_parser4.p
@@ -0,0 +1,13 @@
+% Status: Unsatisfiable
+
+%--------------------------------------------------------------------------
+
+cnf(query_1,axiom, p( A, d ) | b ).
+
+cnf(query_1,axiom, b | c ).
+
+cnf(query_1,axiom, ~p(A, d) | ~ 'c' ).
+
+cnf(query_1,negated_conjecture, ~ b ).
+
+%--------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/tptp_parser5.p b/test/regress/regress0/tptp/tptp_parser5.p
new file mode 100644
index 0000000..c90d1cd
--- /dev/null
+++ b/test/regress/regress0/tptp/tptp_parser5.p
@@ -0,0 +1,15 @@
+% Status: Satisfiable
+
+%--------------------------------------------------------------------------
+
+cnf(query_1,axiom, p( A, d ) | b ).
+
+cnf(query_1,axiom, b | c ).
+
+cnf(query_1,axiom, ~p(A, e) | ~ 'c' ).
+
+cnf(query_1,axiom, e != d ).
+
+cnf(query_1,negated_conjecture, ~ b ).
+
+%--------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/tptp_parser6.p b/test/regress/regress0/tptp/tptp_parser6.p
new file mode 100644
index 0000000..6283eb2
--- /dev/null
+++ b/test/regress/regress0/tptp/tptp_parser6.p
@@ -0,0 +1,15 @@
+% Status: Satisfiable
+
+%--------------------------------------------------------------------------
+
+cnf(query_1,axiom, p( A, d ) | cnf ).
+
+cnf(query_1,axiom, cnf | c ).
+
+cnf(query_1,axiom, ~p(A, axiom) | ~ 'c' ).
+
+cnf(query_1,axiom, axiom != d ).
+
+cnf(query_1,negated_conjecture, ~ cnf ).
+
+%--------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/tptp_parser7.p b/test/regress/regress0/tptp/tptp_parser7.p
new file mode 100644
index 0000000..73c2b38
--- /dev/null
+++ b/test/regress/regress0/tptp/tptp_parser7.p
@@ -0,0 +1,15 @@
+% Status: Satisfiable
+
+%--------------------------------------------------------------------------
+
+cnf(query_1,axiom, p( A, d ) | b ).
+
+cnf(query_1,axiom, b | c ).
+
+cnf(query_1,axiom, ~p(A, axiom) ).
+
+cnf(query_1,axiom, axiom != d ).
+
+cnf(query_1,negated_conjecture, ~ b ).
+
+%--------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/tptp_parser8.p b/test/regress/regress0/tptp/tptp_parser8.p
new file mode 100644
index 0000000..da28115
--- /dev/null
+++ b/test/regress/regress0/tptp/tptp_parser8.p
@@ -0,0 +1,10 @@
+% Status: Satisfiable
+
+%--------------------------------------------------------------------------
+include('tptp_parser7.p').
+
+cnf(query_1,axiom, include('A') | b ).
+
+cnf(query_1,negated_conjecture, ~ b ).
+
+%--------------------------------------------------------------------------
diff --git a/test/regress/regress0/tptp/tptp_parser9.p b/test/regress/regress0/tptp/tptp_parser9.p
new file mode 100644
index 0000000..9bed197
--- /dev/null
+++ b/test/regress/regress0/tptp/tptp_parser9.p
@@ -0,0 +1,13 @@
+% Status: CounterSatisfiable
+
+%--------------------------------------------------------------------------
+
+fof(query_1,axiom, include(1) ).
+
+fof(query_1,axiom, ![E]: e(E,1.6) ).
+
+fof(query_1,axiom, ![A,E]: ~e(A,3.0E3) ).
+
+fof(query_1,conjecture, ![E]: e(E,2.6) ).
+
+%--------------------------------------------------------------------------
diff --git a/test/regress/regress0/trim.cvc b/test/regress/regress0/trim.cvc
new file mode 100644
index 0000000..8bdbde7
--- /dev/null
+++ b/test/regress/regress0/trim.cvc
@@ -0,0 +1,36 @@
+% COMMAND-LINE: --finite-model-find
+% EXPECT: sat
+DATATYPE
+	myType = A | B
+END;
+%%% structured datatypes
+myTypeSet: TYPE = SET OF myType;
+myTypeGammaSet: TYPE = [# pos: myTypeSet, neg: myTypeSet #];
+delta: TYPE = ARRAY myType OF myTypeGammaSet;
+labels: TYPE = ARRAY myType OF SET OF STRING;
+
+%%% the empty myTypes set
+emptymyTypeSet : SET OF myType;
+ASSERT emptymyTypeSet = {} :: SET OF myType;
+
+d: delta;
+l: labels;
+
+ASSERT (l[A] = {"L","H"});
+ASSERT (l[B] = {"L"});
+
+ic0_i : myTypeSet;
+ic0_c : myTypeSet;
+ASSERT FORALL (r:myType):
+	(r IS_IN ic0_i) => FORALL (r2: myType): (r2 IS_IN d[r].neg) => r2 IS_IN ic0_c;
+ASSERT {A} <= ic0_i;
+ASSERT ((EXISTS (e0 : myType): (e0 IS_IN ic0_i) => (l[A] <= l[e0]))) OR ((ic0_i & ic0_c) <= emptymyTypeSet);
+
+ic1_i : myTypeSet;
+ic1_c : myTypeSet;
+ASSERT FORALL (r:myType):
+	(r IS_IN d[B].pos) => r IS_IN ic1_i;
+ASSERT ((EXISTS (e1 : myType): (e1 IS_IN ic1_i) => (l[B] <= l[e1]))) OR ((ic1_i & ic1_c) <= emptymyTypeSet);
+
+CHECKSAT;
+%COUNTEREXAMPLE;
diff --git a/test/regress/regress0/uf/Makefile.am b/test/regress/regress0/uf/Makefile.am
new file mode 100644
index 0000000..8a4ce33
--- /dev/null
+++ b/test/regress/regress0/uf/Makefile.am
@@ -0,0 +1,75 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	euf_simp01.smt \
+	euf_simp02.smt \
+	euf_simp03.smt \
+	euf_simp04.smt \
+	euf_simp05.smt \
+	euf_simp06.smt \
+	euf_simp08.smt \
+	euf_simp09.smt \
+	euf_simp10.smt \
+	euf_simp11.smt \
+	euf_simp12.smt \
+	euf_simp13.smt \
+	eq_diamond1.smt \
+	eq_diamond14.reduced.smt \
+	eq_diamond14.reduced2.smt \
+	eq_diamond23.smt \
+	NEQ016_size5_reduced2a.smt \
+	NEQ016_size5_reduced2b.smt \
+	ccredesign-fuzz.smt \
+	dead_dnd002.smt \
+	iso_brn001.smt \
+	gensys_brn001.smt2 \
+	simple.01.cvc \
+	simple.02.cvc \
+	simple.03.cvc \
+	simple.04.cvc \
+	proof00.smt2 \
+	cnf-iff.smt2 \
+	cnf-iff-base.smt2 \
+	cnf-ite.smt2 \
+	cnf-and-neg.smt2 \
+	cnf_abc.smt2 \
+	bool-pred-nested.smt2
+
+EXTRA_DIST = $(TESTS) \
+	mkpidgeon
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/uf/Makefile.in b/test/regress/regress0/uf/Makefile.in
new file mode 100644
index 0000000..c277014
--- /dev/null
+++ b/test/regress/regress0/uf/Makefile.in
@@ -0,0 +1,1255 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/uf
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	euf_simp01.smt \
+	euf_simp02.smt \
+	euf_simp03.smt \
+	euf_simp04.smt \
+	euf_simp05.smt \
+	euf_simp06.smt \
+	euf_simp08.smt \
+	euf_simp09.smt \
+	euf_simp10.smt \
+	euf_simp11.smt \
+	euf_simp12.smt \
+	euf_simp13.smt \
+	eq_diamond1.smt \
+	eq_diamond14.reduced.smt \
+	eq_diamond14.reduced2.smt \
+	eq_diamond23.smt \
+	NEQ016_size5_reduced2a.smt \
+	NEQ016_size5_reduced2b.smt \
+	ccredesign-fuzz.smt \
+	dead_dnd002.smt \
+	iso_brn001.smt \
+	gensys_brn001.smt2 \
+	simple.01.cvc \
+	simple.02.cvc \
+	simple.03.cvc \
+	simple.04.cvc \
+	proof00.smt2 \
+	cnf-iff.smt2 \
+	cnf-iff-base.smt2 \
+	cnf-ite.smt2 \
+	cnf-and-neg.smt2 \
+	cnf_abc.smt2 \
+	bool-pred-nested.smt2
+
+EXTRA_DIST = $(TESTS) \
+	mkpidgeon
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/uf/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/uf/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+euf_simp01.smt.log: euf_simp01.smt
+	@p='euf_simp01.smt'; \
+	b='euf_simp01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+euf_simp02.smt.log: euf_simp02.smt
+	@p='euf_simp02.smt'; \
+	b='euf_simp02.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+euf_simp03.smt.log: euf_simp03.smt
+	@p='euf_simp03.smt'; \
+	b='euf_simp03.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+euf_simp04.smt.log: euf_simp04.smt
+	@p='euf_simp04.smt'; \
+	b='euf_simp04.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+euf_simp05.smt.log: euf_simp05.smt
+	@p='euf_simp05.smt'; \
+	b='euf_simp05.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+euf_simp06.smt.log: euf_simp06.smt
+	@p='euf_simp06.smt'; \
+	b='euf_simp06.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+euf_simp08.smt.log: euf_simp08.smt
+	@p='euf_simp08.smt'; \
+	b='euf_simp08.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+euf_simp09.smt.log: euf_simp09.smt
+	@p='euf_simp09.smt'; \
+	b='euf_simp09.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+euf_simp10.smt.log: euf_simp10.smt
+	@p='euf_simp10.smt'; \
+	b='euf_simp10.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+euf_simp11.smt.log: euf_simp11.smt
+	@p='euf_simp11.smt'; \
+	b='euf_simp11.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+euf_simp12.smt.log: euf_simp12.smt
+	@p='euf_simp12.smt'; \
+	b='euf_simp12.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+euf_simp13.smt.log: euf_simp13.smt
+	@p='euf_simp13.smt'; \
+	b='euf_simp13.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+eq_diamond1.smt.log: eq_diamond1.smt
+	@p='eq_diamond1.smt'; \
+	b='eq_diamond1.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+eq_diamond14.reduced.smt.log: eq_diamond14.reduced.smt
+	@p='eq_diamond14.reduced.smt'; \
+	b='eq_diamond14.reduced.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+eq_diamond14.reduced2.smt.log: eq_diamond14.reduced2.smt
+	@p='eq_diamond14.reduced2.smt'; \
+	b='eq_diamond14.reduced2.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+eq_diamond23.smt.log: eq_diamond23.smt
+	@p='eq_diamond23.smt'; \
+	b='eq_diamond23.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+NEQ016_size5_reduced2a.smt.log: NEQ016_size5_reduced2a.smt
+	@p='NEQ016_size5_reduced2a.smt'; \
+	b='NEQ016_size5_reduced2a.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+NEQ016_size5_reduced2b.smt.log: NEQ016_size5_reduced2b.smt
+	@p='NEQ016_size5_reduced2b.smt'; \
+	b='NEQ016_size5_reduced2b.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ccredesign-fuzz.smt.log: ccredesign-fuzz.smt
+	@p='ccredesign-fuzz.smt'; \
+	b='ccredesign-fuzz.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dead_dnd002.smt.log: dead_dnd002.smt
+	@p='dead_dnd002.smt'; \
+	b='dead_dnd002.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+iso_brn001.smt.log: iso_brn001.smt
+	@p='iso_brn001.smt'; \
+	b='iso_brn001.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+gensys_brn001.smt2.log: gensys_brn001.smt2
+	@p='gensys_brn001.smt2'; \
+	b='gensys_brn001.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple.01.cvc.log: simple.01.cvc
+	@p='simple.01.cvc'; \
+	b='simple.01.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple.02.cvc.log: simple.02.cvc
+	@p='simple.02.cvc'; \
+	b='simple.02.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple.03.cvc.log: simple.03.cvc
+	@p='simple.03.cvc'; \
+	b='simple.03.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple.04.cvc.log: simple.04.cvc
+	@p='simple.04.cvc'; \
+	b='simple.04.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+proof00.smt2.log: proof00.smt2
+	@p='proof00.smt2'; \
+	b='proof00.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cnf-iff.smt2.log: cnf-iff.smt2
+	@p='cnf-iff.smt2'; \
+	b='cnf-iff.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cnf-iff-base.smt2.log: cnf-iff-base.smt2
+	@p='cnf-iff-base.smt2'; \
+	b='cnf-iff-base.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cnf-ite.smt2.log: cnf-ite.smt2
+	@p='cnf-ite.smt2'; \
+	b='cnf-ite.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cnf-and-neg.smt2.log: cnf-and-neg.smt2
+	@p='cnf-and-neg.smt2'; \
+	b='cnf-and-neg.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cnf_abc.smt2.log: cnf_abc.smt2
+	@p='cnf_abc.smt2'; \
+	b='cnf_abc.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bool-pred-nested.smt2.log: bool-pred-nested.smt2
+	@p='bool-pred-nested.smt2'; \
+	b='bool-pred-nested.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/uf/NEQ016_size5_reduced2a.smt b/test/regress/regress0/uf/NEQ016_size5_reduced2a.smt
new file mode 100644
index 0000000..8ea53b4
--- /dev/null
+++ b/test/regress/regress0/uf/NEQ016_size5_reduced2a.smt
@@ -0,0 +1,14 @@
+(benchmark NEQ016_size5.smt
+:logic QF_UF
+:extrapreds ((p4 U))
+:extrafuns ((c_4 U))
+:extrafuns ((c7 U))
+:extrafuns ((c_0 U))
+:status unsat
+:formula
+(and
+(not (p4 c_0))
+(= c_0 c7)
+(p4 c7)
+)
+)
diff --git a/test/regress/regress0/uf/NEQ016_size5_reduced2b.smt b/test/regress/regress0/uf/NEQ016_size5_reduced2b.smt
new file mode 100644
index 0000000..029506d
--- /dev/null
+++ b/test/regress/regress0/uf/NEQ016_size5_reduced2b.smt
@@ -0,0 +1,14 @@
+(benchmark NEQ016_size5.smt
+:logic QF_UF
+:extrapreds ((p4 U))
+:extrafuns ((c_4 U))
+:extrafuns ((c7 U))
+:extrafuns ((c_0 U))
+:status unsat
+:formula
+(and
+(not (p4 c_0))
+(p4 c7)
+(= c_0 c7)
+)
+)
diff --git a/test/regress/regress0/uf/bool-pred-nested.smt2 b/test/regress/regress0/uf/bool-pred-nested.smt2
new file mode 100644
index 0000000..6627542
--- /dev/null
+++ b/test/regress/regress0/uf/bool-pred-nested.smt2
@@ -0,0 +1,7 @@
+(set-logic QF_UF)
+(set-info :status sat)
+(declare-fun P (Bool Bool) Bool)
+
+(assert (P (P true (P false false)) (P false true)))
+
+(check-sat)
diff --git a/test/regress/regress0/uf/ccredesign-fuzz.smt b/test/regress/regress0/uf/ccredesign-fuzz.smt
new file mode 100644
index 0000000..d7a6586
--- /dev/null
+++ b/test/regress/regress0/uf/ccredesign-fuzz.smt
@@ -0,0 +1,32 @@
+(benchmark fuzzsmt
+:logic QF_UF
+:status sat
+:extrasorts (S1)
+:extrasorts (S0)
+:extrafuns ((v0 S0))
+:extrafuns ((v1 S0))
+:extrafuns ((f4 S1 S1))
+:extrafuns ((v2 S1))
+:extrafuns ((v3 S1))
+:extrapreds ((p3 S0 S0 S1))
+:extrafuns ((f0 S0 S0 S1 S0))
+:extrapreds ((p1 S0 S1 S1))
+:extrapreds ((p4 S1))
+:formula
+(flet ($n1 (p4 v3))
+(let (?n2 (f4 v2))
+(flet ($n3 (p4 ?n2))
+(flet ($n4 (p1 v0 ?n2 ?n2))
+(let (?n5 (f0 v1 v1 v2))
+(let (?n6 (ite $n4 ?n5 v0))
+(flet ($n7 (p3 ?n6 v0 ?n2))
+(flet ($n8 (iff $n3 $n7))
+(flet ($n9 (= v3 ?n2))
+(let (?n10 (ite $n9 v1 v0))
+(flet ($n11 (distinct ?n10 ?n10))
+(flet ($n12 false)
+(flet ($n13 (implies $n11 $n12))
+(flet ($n14 (implies $n13 $n12))
+(flet ($n15 (if_then_else $n1 $n8 $n14))
+$n15
+))))))))))))))))
diff --git a/test/regress/regress0/uf/cnf-and-neg.smt2 b/test/regress/regress0/uf/cnf-and-neg.smt2
new file mode 100644
index 0000000..470a888
--- /dev/null
+++ b/test/regress/regress0/uf/cnf-and-neg.smt2
@@ -0,0 +1,11 @@
+(set-logic QF_UF)
+(set-info :status unsat)
+(declare-sort I 0)
+(declare-fun a () I)
+(declare-fun b () I)
+(declare-fun c () I)
+(declare-fun f (I) I)
+(assert (not (= (f a) (f b))))
+(assert (not (= (f a) (f c))))
+(assert (not (and (not (= a b)) (not (= a c)))))
+(check-sat)
diff --git a/test/regress/regress0/uf/cnf-iff-base.smt2 b/test/regress/regress0/uf/cnf-iff-base.smt2
new file mode 100644
index 0000000..9c538de
--- /dev/null
+++ b/test/regress/regress0/uf/cnf-iff-base.smt2
@@ -0,0 +1,16 @@
+(set-logic QF_UF)
+(set-info :status unsat)
+(declare-sort U 0)
+
+(declare-fun f (U) U)
+(declare-fun a () U)
+(declare-fun b () U)
+(declare-fun c () U)
+(declare-fun d () U)
+
+(assert (= (not (= (f a) d)) (not (= d (f b)))))
+
+(assert (or (not (= (f a) d)) (not (= d (f b)))))
+(assert (or (= (f a) d) (= d (f b))))
+
+(check-sat)
diff --git a/test/regress/regress0/uf/cnf-iff.smt2 b/test/regress/regress0/uf/cnf-iff.smt2
new file mode 100644
index 0000000..0337700
--- /dev/null
+++ b/test/regress/regress0/uf/cnf-iff.smt2
@@ -0,0 +1,38 @@
+(set-logic QF_UF)
+(set-info :status unsat)
+(declare-sort U 0)
+
+(declare-fun f (U) U)
+(declare-fun g (U) U)
+(declare-fun a () U)
+(declare-fun b () U)
+(declare-fun c () U)
+(declare-fun d () U)
+(declare-fun e () U)
+(declare-fun h () U)
+(declare-fun i () U)
+
+(assert (or 
+(= a c)
+(= h c)
+(not (= h d))
+(not (= h e))
+(= h i)
+(= (= (f a) d) (= d (f b)))
+(= (not (= (f a) d)) (not (= d (f b))))
+(not (= (not (= d (f b))) (= (f a) d)))
+(not (= (= d (f b)) (not (= (f a) d))))
+(xor (= (f a) d) (not (= d (f b))))
+(xor (not (= (f a) d)) (= d (f b)))
+(not (xor (= (f a) d) (= d (f b))))
+(not (xor (not (= (f a) d)) (not (= d (f b)))))
+))
+(assert (not (= h i)))
+(assert (or (not (= (f a) d)) (not (= d (f b)))))
+(assert (or (= (f a) d) (= d (f b))))
+(assert (and (not (= b e)) (not (= c a))))
+(assert (and (= h e) (not (= b e))))
+
+(assert (not (or (= b h) (= c h))))
+(assert (not (or (= b h) (not (= d h)))))
+(check-sat)
diff --git a/test/regress/regress0/uf/cnf-ite.smt2 b/test/regress/regress0/uf/cnf-ite.smt2
new file mode 100644
index 0000000..851eb45
--- /dev/null
+++ b/test/regress/regress0/uf/cnf-ite.smt2
@@ -0,0 +1,35 @@
+; COMMAND-LINE: --simplification=none
+; EXPECT: unsat
+
+(set-logic QF_UF)
+(set-info :status unsat)
+(declare-sort U 0)
+
+(declare-fun f (U) U)
+(declare-fun g (U) U)
+(declare-fun a () U)
+(declare-fun b () U)
+(declare-fun c () U)
+(declare-fun d () U)
+(declare-fun e () U)
+(declare-fun h () U)
+(declare-fun i () U)
+
+(assert (or 
+(ite (= (f a) d) (not (= d (f b))) (= a c))
+(ite (not (= (f a) d)) (= d e) (not (= d (f b))))
+(not (ite (not (= (f a) d)) (= d e) (= d (f b))))
+(not (ite (= (f a) d) (= d (f b)) (= a c)))
+(ite (not (= (f a) e)) (= e (f b)) (= a c))
+(ite (= (f a) e) (= e e) (= e (f b)))
+(not (ite (= (f a) e) (= e e) (not (= e (f b)))))
+(not (ite (not (= (f a) e)) (not (= e (f b))) (= a c)))
+(= a b)
+))
+
+(assert (and (= (f a) d) (= d (f b))))
+(assert (and (not (= (f a) e)) (not (= e (f b)))))
+
+(assert (not (= a b)))
+
+(check-sat)
diff --git a/test/regress/regress0/uf/cnf_abc.smt2 b/test/regress/regress0/uf/cnf_abc.smt2
new file mode 100644
index 0000000..46a4b7d
--- /dev/null
+++ b/test/regress/regress0/uf/cnf_abc.smt2
@@ -0,0 +1,168 @@
+(set-logic QF_UF)
+(set-info :status unsat)
+
+(declare-sort I 0)
+(declare-fun f (I I) I)
+(declare-fun a () I)
+(declare-fun b () I)
+(declare-fun c () I)
+
+
+
+(assert
+ (or
+  (= (f a a) a)
+  (= (f a a) b)
+  (= (f a a) c)
+  ))
+
+(assert
+ (or
+  (= (f a b) a)
+  (= (f a b) b)
+  (= (f a b) c)
+  ))
+
+(assert
+ (or
+  (= (f a c) a)
+  (= (f a c) b)
+  (= (f a c) c)
+  ))
+
+(assert
+ (or
+  (= (f b a) a)
+  (= (f b a) b)
+  (= (f b a) c)
+  ))
+
+(assert
+ (or
+  (= (f b b) a)
+  (= (f b b) b)
+  (= (f b b) c)
+  ))
+
+(assert
+ (or
+  (= (f b c) a)
+  (= (f b c) b)
+  (= (f b c) c)
+  ))
+
+
+(assert
+ (or
+  (= (f c a) a)
+  (= (f c a) b)
+  (= (f c a) c)
+  ))
+
+(assert
+ (or
+  (= (f c b) a)
+  (= (f c b) b)
+  (= (f c b) c)
+  ))
+
+(assert
+ (or
+  (= (f c c) a)
+  (= (f c c) b)
+  (= (f c c) c)
+  ))
+
+
+
+(assert
+ (or
+  (= (f a a) a)
+  (= (f b b) a)
+  (= (f c c) a)
+  ))
+
+(assert
+ (or
+  (= (f a a) b)
+  (= (f b b) b)
+  (= (f c c) b)
+  ))
+
+(assert
+ (or
+  (= (f a a) c)
+  (= (f b b) c)
+  (= (f c c) c)
+  ))
+
+
+
+(assert
+ (or
+  (= (f a a) a)
+  (= (f b a) b)
+  (= (f c a) c)
+  ))
+
+(assert
+ (or
+  (= (f a b) a)
+  (= (f b b) b)
+  (= (f c b) c)
+  ))
+
+(assert
+ (or
+  (= (f a c) a)
+  (= (f b c) b)
+  (= (f c c) c)
+  ))
+
+
+
+
+(assert (not (= (f a a) a)))
+(assert (not (= (f b b) b)))
+(assert (not (= (f c c) c)))                
+
+
+(assert
+ (or
+  (not (= (f a (f a a)) a))
+  (not (= (f a (f a b)) b))
+  (not (= (f a (f a c)) c))
+  ))
+
+(assert
+ (or
+  (not (= (f b (f b a)) a)) 
+  (not (= (f b (f b b)) b))
+  (not (= (f b (f b c)) c))
+  ))
+
+(assert
+ (or
+  (not (= (f c (f c a)) a)) 
+  (not (= (f c (f c b)) b))
+  (not (= (f c (f c c)) c))
+  ))
+
+
+(assert  (not (= (f a a) (f b a))))
+(assert  (not (= (f a a) (f c a))))
+(assert  (not (= (f b a) (f c a))))
+
+(assert  (not (= (f a b) (f b b))))
+(assert  (not (= (f a b) (f c b))))
+(assert  (not (= (f b b) (f c b))))
+
+(assert  (not (= (f a c) (f b c))))
+(assert  (not (= (f a c) (f c c))))
+(assert  (not (= (f b c) (f c c))))
+
+
+
+(check-sat)
+
+(exit)
diff --git a/test/regress/regress0/uf/dead_dnd002.smt b/test/regress/regress0/uf/dead_dnd002.smt
new file mode 100644
index 0000000..2c98da6
--- /dev/null
+++ b/test/regress/regress0/uf/dead_dnd002.smt
@@ -0,0 +1,37 @@
+(benchmark dead_dnd002.smt
+  :source {
+http://www.cs.bham.ac.uk/~vxs/quasigroups/benchmark/
+
+}
+  :status unsat
+  :difficulty { 0 }
+  :category { crafted }
+  :logic QF_UF
+  :extrasorts (I)
+  :extrafuns ((op I I I))
+  :extrafuns ((e4 I))
+  :extrafuns ((e3 I))
+  :extrafuns ((e2 I))
+  :extrafuns ((e1 I))
+  :extrafuns ((e0 I))
+  :assumption
+(let (?cvc_0 (op e0 e0)) (let (?cvc_1 (op e0 e1)) (let (?cvc_2 (op e0 e2)) (let (?cvc_3 (op e0 e3)) (let (?cvc_4 (op e0 e4)) (let (?cvc_5 (op e1 e0)) (let (?cvc_6 (op e1 e1)) (let (?cvc_7 (op e1 e2)) (let (?cvc_8 (op e1 e3)) (let (?cvc_9 (op e1 e4)) (let (?cvc_10 (op e2 e0)) (let (?cvc_11 (op e2 e1)) (let (?cvc_12 (op e2 e2)) (let (?cvc_13 (op e2 e3)) (let (?cvc_14 (op e2 e4)) (let (?cvc_15 (op e3 e0)) (let (?cvc_16 (op e3 e1)) (let (?cvc_17 (op e3 e2)) (let (?cvc_18 (op e3 e3)) (let (?c [...]
+  :assumption
+(let (?cvc_1 (op e0 e0)) (flet ($cvc_0 (= ?cvc_1 e0)) (flet ($cvc_6 (= ?cvc_1 e1)) (flet ($cvc_11 (= ?cvc_1 e2)) (flet ($cvc_12 (= ?cvc_1 e3)) (flet ($cvc_13 (= ?cvc_1 e4)) (let (?cvc_2 (op e0 e1)) (flet ($cvc_15 (= ?cvc_2 e0)) (flet ($cvc_22 (= ?cvc_2 e1)) (flet ($cvc_28 (= ?cvc_2 e2)) (flet ($cvc_31 (= ?cvc_2 e3)) (flet ($cvc_34 (= ?cvc_2 e4)) (let (?cvc_3 (op e0 e2)) (flet ($cvc_38 (= ?cvc_3 e0)) (flet ($cvc_46 (= ?cvc_3 e1)) (flet ($cvc_53 (= ?cvc_3 e2)) (flet ($cvc_58 (= ?cvc_3 e3)) [...]
+  :assumption
+(let (?cvc_0 (op e0 e0)) (let (?cvc_1 (op e1 e1)) (let (?cvc_2 (op e2 e2)) (let (?cvc_3 (op e3 e3)) (let (?cvc_4 (op e4 e4)) (and (and (and (and (or (or (or (or (= ?cvc_0 e0)  (= ?cvc_1 e0) )  (= ?cvc_2 e0) )  (= ?cvc_3 e0) )  (= ?cvc_4 e0) ) (or (or (or (or (= ?cvc_0 e1)  (= ?cvc_1 e1) )  (= ?cvc_2 e1) )  (= ?cvc_3 e1) )  (= ?cvc_4 e1) )) (or (or (or (or (= ?cvc_0 e2)  (= ?cvc_1 e2) )  (= ?cvc_2 e2) )  (= ?cvc_3 e2) )  (= ?cvc_4 e2) )) (or (or (or (or (= ?cvc_0 e3)  (= ?cvc_1 e3) )  (=  [...]
+  :assumption
+(and (and (and (and (or (or (or (or (= (op e0 e0) e0)  (= (op e1 e0) e1) )  (= (op e2 e0) e2) )  (= (op e3 e0) e3) )  (= (op e4 e0) e4) ) (or (or (or (or (= (op e0 e1) e0)  (= (op e1 e1) e1) )  (= (op e2 e1) e2) )  (= (op e3 e1) e3) )  (= (op e4 e1) e4) )) (or (or (or (or (= (op e0 e2) e0)  (= (op e1 e2) e1) )  (= (op e2 e2) e2) )  (= (op e3 e2) e3) )  (= (op e4 e2) e4) )) (or (or (or (or (= (op e0 e3) e0)  (= (op e1 e3) e1) )  (= (op e2 e3) e2) )  (= (op e3 e3) e3) )  (= (op e4 e3) e4)  [...]
+  :assumption
+(let (?cvc_0 (op e0 e0)) (let (?cvc_1 (op e0 e1)) (let (?cvc_4 (op e0 e2)) (let (?cvc_9 (op e0 e3)) (let (?cvc_16 (op e0 e4)) (let (?cvc_2 (op e1 e0)) (let (?cvc_3 (op e1 e1)) (let (?cvc_6 (op e1 e2)) (let (?cvc_11 (op e1 e3)) (let (?cvc_18 (op e1 e4)) (let (?cvc_5 (op e2 e0)) (let (?cvc_7 (op e2 e1)) (let (?cvc_8 (op e2 e2)) (let (?cvc_13 (op e2 e3)) (let (?cvc_20 (op e2 e4)) (let (?cvc_10 (op e3 e0)) (let (?cvc_12 (op e3 e1)) (let (?cvc_14 (op e3 e2)) (let (?cvc_15 (op e3 e3)) (let (?c [...]
+  :assumption
+(and (and (and (and (not (= (op e0 e0) e0)) (not (= (op e1 e1) e1))) (not (= (op e2 e2) e2))) (not (= (op e3 e3) e3))) (not (= (op e4 e4) e4)))
+  :assumption
+(flet ($cvc_0 (= (op e0 (op e0 e0)) e0)) (flet ($cvc_1 (= (op e1 (op e1 e1)) e1)) (flet ($cvc_2 (= (op e2 (op e2 e2)) e2)) (flet ($cvc_3 (= (op e3 (op e3 e3)) e3)) (flet ($cvc_4 (= (op e4 (op e4 e4)) e4)) (and (and (and (and (and (not $cvc_0) (not $cvc_1)) (not $cvc_2)) (not $cvc_3)) (not $cvc_4)) (and (and (and (and (and (and (and (and $cvc_0 (= (op e0 (op e0 e1)) e1)) (= (op e0 (op e0 e2)) e2)) (= (op e0 (op e0 e3)) e3)) (= (op e0 (op e0 e4)) e4)) (and (and (and (and (= (op e1 (op e1 e [...]
+  :assumption
+(let (?cvc_0 (op e0 e0)) (let (?cvc_5 (op e0 e1)) (let (?cvc_10 (op e0 e2)) (let (?cvc_15 (op e0 e3)) (let (?cvc_20 (op e0 e4)) (let (?cvc_1 (op e1 e0)) (let (?cvc_6 (op e1 e1)) (let (?cvc_11 (op e1 e2)) (let (?cvc_16 (op e1 e3)) (let (?cvc_21 (op e1 e4)) (let (?cvc_2 (op e2 e0)) (let (?cvc_7 (op e2 e1)) (let (?cvc_12 (op e2 e2)) (let (?cvc_17 (op e2 e3)) (let (?cvc_22 (op e2 e4)) (let (?cvc_3 (op e3 e0)) (let (?cvc_8 (op e3 e1)) (let (?cvc_13 (op e3 e2)) (let (?cvc_18 (op e3 e3)) (let ( [...]
+  :assumption
+(and (and (and (and (and (and (and (and (and (not (= e0 e1)) (not (= e0 e2))) (not (= e0 e3))) (not (= e0 e4))) (not (= e1 e2))) (not (= e1 e3))) (not (= e1 e4))) (not (= e2 e3))) (not (= e2 e4))) (not (= e3 e4)))
+  :formula
+(not false)
+)
diff --git a/test/regress/regress0/uf/eq_diamond1.smt b/test/regress/regress0/uf/eq_diamond1.smt
new file mode 100644
index 0000000..8909f2b
--- /dev/null
+++ b/test/regress/regress0/uf/eq_diamond1.smt
@@ -0,0 +1,15 @@
+(benchmark eq_diamond1
+:source{
+Generating minimum transitivity constraints in P-time for deciding Equality Logic,
+Ofer Strichman and Mirron Rozanov,
+SMT Workshop 2005.
+
+Translator: Leonardo de Moura. }
+:status unsat
+:category { crafted }
+:logic QF_UF
+:difficulty { 0 }
+:extrafuns ((x0 U) (y0 U) (z0 U)
+)
+:formula (and 
+(not (= x0 x0))))
diff --git a/test/regress/regress0/uf/eq_diamond14.reduced.smt b/test/regress/regress0/uf/eq_diamond14.reduced.smt
new file mode 100644
index 0000000..6af6ac5
--- /dev/null
+++ b/test/regress/regress0/uf/eq_diamond14.reduced.smt
@@ -0,0 +1,87 @@
+(benchmark eq_diamond14_reduced
+:logic QF_UF
+:source { Reduced by delta debugger from eq_diamond14 to fix a UF bug. }
+:status unsat
+:extrasorts (V)
+:extrafuns ((x13 V))
+:extrafuns ((x0 V))
+:extrafuns ((y12 V))
+:extrafuns ((x12 V))
+:extrafuns ((z11 V))
+:extrafuns ((x11 V))
+:extrafuns ((y11 V))
+:extrafuns ((z10 V))
+:extrafuns ((x10 V))
+:extrafuns ((y10 V))
+:extrafuns ((y9 V))
+:extrafuns ((x9 V))
+:extrafuns ((y8 V))
+:extrafuns ((x8 V))
+:extrafuns ((y7 V))
+:extrafuns ((x7 V))
+:extrafuns ((y6 V))
+:extrafuns ((x6 V))
+:extrafuns ((y5 V))
+:extrafuns ((x5 V))
+:extrafuns ((y4 V))
+:extrafuns ((x4 V))
+:extrafuns ((y3 V))
+:extrafuns ((x3 V))
+:extrafuns ((y2 V))
+:extrafuns ((x2 V))
+:extrafuns ((y1 V))
+:extrafuns ((x1 V))
+:extrafuns ((y0 V))
+:formula
+(flet ($n1 (= x0 y0))
+(flet ($n2 (= y0 x1))
+(flet ($n3 (and $n1 $n2))
+(flet ($n4 (= x1 y1))
+(flet ($n5 (= y1 x2))
+(flet ($n6 (and $n4 $n5))
+(flet ($n7 (= x2 y2))
+(flet ($n8 (= y2 x3))
+(flet ($n9 (and $n7 $n8))
+(flet ($n10 (= x3 y3))
+(flet ($n11 (= y3 x4))
+(flet ($n12 (and $n10 $n11))
+(flet ($n13 (= x4 y4))
+(flet ($n14 (= y4 x5))
+(flet ($n15 (and $n13 $n14))
+(flet ($n16 (= x5 y5))
+(flet ($n17 (= y5 x6))
+(flet ($n18 (and $n16 $n17))
+(flet ($n19 (= x6 y6))
+(flet ($n20 (= y6 x7))
+(flet ($n21 (and $n19 $n20))
+(flet ($n22 (= x7 y7))
+(flet ($n23 (= y7 x8))
+(flet ($n24 (and $n22 $n23))
+(flet ($n25 (= x8 y8))
+(flet ($n26 (= y8 x9))
+(flet ($n27 (and $n25 $n26))
+(flet ($n28 (= x9 y9))
+(flet ($n29 (= y9 x10))
+(flet ($n30 (and $n28 $n29))
+(flet ($n31 false)
+(flet ($n32 (= y10 x11))
+(flet ($n33 (and $n31 $n32))
+(flet ($n34 (= x10 z10))
+(flet ($n35 (= x11 z10))
+(flet ($n36 (and $n34 $n35))
+(flet ($n37 (or $n33 $n36))
+(flet ($n38 (= x11 y11))
+(flet ($n39 (= y11 x12))
+(flet ($n40 (and $n38 $n39))
+(flet ($n41 (= x11 z11))
+(flet ($n42 (= x12 z11))
+(flet ($n43 (and $n41 $n42))
+(flet ($n44 (or $n40 $n43))
+(flet ($n45 (= x12 y12))
+(flet ($n46 (= y12 x13))
+(flet ($n47 (and $n45 $n46))
+(flet ($n48 (= x0 x13))
+(flet ($n49 (not $n48))
+(flet ($n50 (and $n3 $n6 $n9 $n12 $n15 $n18 $n21 $n24 $n27 $n30 $n37 $n44 $n47 $n49))
+$n50
+)))))))))))))))))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/uf/eq_diamond14.reduced2.smt b/test/regress/regress0/uf/eq_diamond14.reduced2.smt
new file mode 100644
index 0000000..019a935
--- /dev/null
+++ b/test/regress/regress0/uf/eq_diamond14.reduced2.smt
@@ -0,0 +1,102 @@
+(benchmark eq_diamond14
+:logic QF_UF
+:extrasorts (V)
+:extrafuns ((z9 V))
+:extrafuns ((x10 V))
+:extrafuns ((x9 V))
+:extrafuns ((x13 V))
+:extrafuns ((x0 V))
+:extrafuns ((z12 V))
+:extrafuns ((x12 V))
+:extrafuns ((y12 V))
+:extrafuns ((z11 V))
+:extrafuns ((x11 V))
+:extrafuns ((y11 V))
+:extrafuns ((z10 V))
+:extrafuns ((y10 V))
+:extrafuns ((y8 V))
+:extrafuns ((x8 V))
+:extrafuns ((y7 V))
+:extrafuns ((x7 V))
+:extrafuns ((z6 V))
+:extrafuns ((x6 V))
+:extrafuns ((y6 V))
+:extrafuns ((z5 V))
+:extrafuns ((x5 V))
+:extrafuns ((y5 V))
+:extrafuns ((y4 V))
+:extrafuns ((x4 V))
+:extrafuns ((y3 V))
+:extrafuns ((x3 V))
+:extrafuns ((y2 V))
+:extrafuns ((x2 V))
+:extrafuns ((y1 V))
+:extrafuns ((x1 V))
+:extrafuns ((y0 V))
+:status unsat
+:formula
+(flet ($n1 (= x0 y0))
+(flet ($n2 (= y0 x1))
+(flet ($n3 (and $n1 $n2))
+(flet ($n4 (= x1 y1))
+(flet ($n5 (= y1 x2))
+(flet ($n6 (and $n4 $n5))
+(flet ($n7 (= x2 y2))
+(flet ($n8 (= y2 x3))
+(flet ($n9 (and $n7 $n8))
+(flet ($n10 (= x3 y3))
+(flet ($n11 (= y3 x4))
+(flet ($n12 (and $n10 $n11))
+(flet ($n13 (= x4 y4))
+(flet ($n14 (= y4 x5))
+(flet ($n15 (and $n13 $n14))
+(flet ($n16 false)
+(flet ($n17 (= y5 x6))
+(flet ($n18 (and $n16 $n17))
+(flet ($n19 (= x5 z5))
+(flet ($n20 (= x6 z5))
+(flet ($n21 (and $n19 $n20))
+(flet ($n22 (or $n18 $n21))
+(flet ($n23 (= x6 y6))
+(flet ($n24 (= y6 x7))
+(flet ($n25 (and $n23 $n24))
+(flet ($n26 (= x6 z6))
+(flet ($n27 (= x7 z6))
+(flet ($n28 (and $n26 $n27))
+(flet ($n29 (or $n25 $n28))
+(flet ($n30 (= x7 y7))
+(flet ($n31 (= y7 x8))
+(flet ($n32 (and $n30 $n31))
+(flet ($n33 (= x8 y8))
+(flet ($n34 (= y8 x9))
+(flet ($n35 (and $n33 $n34))
+(flet ($n36 (= x10 y10))
+(flet ($n37 (= y10 x11))
+(flet ($n38 (and $n36 $n37))
+(flet ($n39 (= x10 z10))
+(flet ($n40 (= x11 z10))
+(flet ($n41 (and $n39 $n40))
+(flet ($n42 (or $n38 $n41))
+(flet ($n43 (= x11 y11))
+(flet ($n44 (= y11 x12))
+(flet ($n45 (and $n43 $n44))
+(flet ($n46 (= x11 z11))
+(flet ($n47 (= x12 z11))
+(flet ($n48 (and $n46 $n47))
+(flet ($n49 (or $n45 $n48))
+(flet ($n50 (= x12 y12))
+(flet ($n51 (= y12 x13))
+(flet ($n52 (and $n50 $n51))
+(flet ($n53 (= x12 z12))
+(flet ($n54 (= x13 z12))
+(flet ($n55 (and $n53 $n54))
+(flet ($n56 (or $n52 $n55))
+(flet ($n57 (= x0 x13))
+(flet ($n58 (not $n57))
+(flet ($n59 (= x9 z9))
+(flet ($n60 (= x10 z9))
+(flet ($n61 (and $n59 $n60))
+(flet ($n62 (or $n16 $n61))
+(flet ($n63 (and $n3 $n6 $n9 $n12 $n15 $n22 $n29 $n32 $n35 $n42 $n49 $n56 $n58 $n62))
+$n63
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/uf/eq_diamond23.smt b/test/regress/regress0/uf/eq_diamond23.smt
new file mode 100644
index 0000000..da00ca2
--- /dev/null
+++ b/test/regress/regress0/uf/eq_diamond23.smt
@@ -0,0 +1,59 @@
+(benchmark eq_diamond23
+:source{
+Generating minimum transitivity constraints in P-time for deciding Equality Logic,
+Ofer Strichman and Mirron Rozanov,
+SMT Workshop 2005.
+
+Translator: Leonardo de Moura. }
+:status unsat
+:category { crafted }
+:logic QF_UF
+:difficulty { 2 }
+:extrafuns ((x0 U) (y0 U) (z0 U)
+(x1 U) (y1 U) (z1 U)
+(x2 U) (y2 U) (z2 U)
+(x3 U) (y3 U) (z3 U)
+(x4 U) (y4 U) (z4 U)
+(x5 U) (y5 U) (z5 U)
+(x6 U) (y6 U) (z6 U)
+(x7 U) (y7 U) (z7 U)
+(x8 U) (y8 U) (z8 U)
+(x9 U) (y9 U) (z9 U)
+(x10 U) (y10 U) (z10 U)
+(x11 U) (y11 U) (z11 U)
+(x12 U) (y12 U) (z12 U)
+(x13 U) (y13 U) (z13 U)
+(x14 U) (y14 U) (z14 U)
+(x15 U) (y15 U) (z15 U)
+(x16 U) (y16 U) (z16 U)
+(x17 U) (y17 U) (z17 U)
+(x18 U) (y18 U) (z18 U)
+(x19 U) (y19 U) (z19 U)
+(x20 U) (y20 U) (z20 U)
+(x21 U) (y21 U) (z21 U)
+(x22 U) (y22 U) (z22 U)
+)
+:formula (and 
+(or (and (= x0 y0) (= y0 x1)) (and (= x0 z0) (= z0 x1)))
+(or (and (= x1 y1) (= y1 x2)) (and (= x1 z1) (= z1 x2)))
+(or (and (= x2 y2) (= y2 x3)) (and (= x2 z2) (= z2 x3)))
+(or (and (= x3 y3) (= y3 x4)) (and (= x3 z3) (= z3 x4)))
+(or (and (= x4 y4) (= y4 x5)) (and (= x4 z4) (= z4 x5)))
+(or (and (= x5 y5) (= y5 x6)) (and (= x5 z5) (= z5 x6)))
+(or (and (= x6 y6) (= y6 x7)) (and (= x6 z6) (= z6 x7)))
+(or (and (= x7 y7) (= y7 x8)) (and (= x7 z7) (= z7 x8)))
+(or (and (= x8 y8) (= y8 x9)) (and (= x8 z8) (= z8 x9)))
+(or (and (= x9 y9) (= y9 x10)) (and (= x9 z9) (= z9 x10)))
+(or (and (= x10 y10) (= y10 x11)) (and (= x10 z10) (= z10 x11)))
+(or (and (= x11 y11) (= y11 x12)) (and (= x11 z11) (= z11 x12)))
+(or (and (= x12 y12) (= y12 x13)) (and (= x12 z12) (= z12 x13)))
+(or (and (= x13 y13) (= y13 x14)) (and (= x13 z13) (= z13 x14)))
+(or (and (= x14 y14) (= y14 x15)) (and (= x14 z14) (= z14 x15)))
+(or (and (= x15 y15) (= y15 x16)) (and (= x15 z15) (= z15 x16)))
+(or (and (= x16 y16) (= y16 x17)) (and (= x16 z16) (= z16 x17)))
+(or (and (= x17 y17) (= y17 x18)) (and (= x17 z17) (= z17 x18)))
+(or (and (= x18 y18) (= y18 x19)) (and (= x18 z18) (= z18 x19)))
+(or (and (= x19 y19) (= y19 x20)) (and (= x19 z19) (= z19 x20)))
+(or (and (= x20 y20) (= y20 x21)) (and (= x20 z20) (= z20 x21)))
+(or (and (= x21 y21) (= y21 x22)) (and (= x21 z21) (= z21 x22)))
+(not (= x0 x22))))
diff --git a/test/regress/regress0/uf/euf_simp01.smt b/test/regress/regress0/uf/euf_simp01.smt
new file mode 100644
index 0000000..c121ae8
--- /dev/null
+++ b/test/regress/regress0/uf/euf_simp01.smt
@@ -0,0 +1,23 @@
+
+(benchmark euf_simp1.smt
+:status sat
+:logic QF_UF
+:category { crafted }
+
+:extrafuns ((x U))
+:extrafuns ((y U))
+:extrafuns ((z U))
+:extrafuns ((f U U))
+:extrafuns ((g U U))
+:extrafuns ((H U U U))
+:extrafuns ((J U U U))
+
+
+
+:formula
+(and
+ (= (f x) (f z))
+ (= (g y) (g z))
+ (or (not (= x z)) (not (= y z)))
+ )
+)
\ No newline at end of file
diff --git a/test/regress/regress0/uf/euf_simp02.smt b/test/regress/regress0/uf/euf_simp02.smt
new file mode 100644
index 0000000..9c7b03f
--- /dev/null
+++ b/test/regress/regress0/uf/euf_simp02.smt
@@ -0,0 +1,29 @@
+
+(benchmark euf_simp2.smt
+:status unsat
+:logic QF_UF
+:category { crafted }
+
+:extrafuns ((x U))
+:extrafuns ((y U))
+:extrafuns ((z U))
+:extrafuns ((f U U))
+:extrafuns ((g U U))
+:extrafuns ((H U U U))
+:extrafuns ((J U U U))
+
+
+
+:formula
+(and
+ (not (= x y))
+ (= (f x) (f z))
+ (= (g y) (g z))
+ (= (g y) (g z))
+ (= (g y) y)
+ (= (f x) x)
+ (= (f z) z)
+ (= (g z) z)
+ (or (not (= x z)) (not (= y z)))
+ )
+)
\ No newline at end of file
diff --git a/test/regress/regress0/uf/euf_simp03.smt b/test/regress/regress0/uf/euf_simp03.smt
new file mode 100644
index 0000000..e0d6cc8
--- /dev/null
+++ b/test/regress/regress0/uf/euf_simp03.smt
@@ -0,0 +1,26 @@
+
+(benchmark euf_simp3.smt
+:status unsat
+:logic QF_UF
+:category { crafted }
+
+:extrafuns ((x U))
+:extrafuns ((y U))
+:extrafuns ((z U))
+:extrafuns ((f U U))
+:extrafuns ((g U U))
+:extrafuns ((H U U U))
+:extrafuns ((J U U U))
+
+
+
+:formula
+(and
+ (not (= x y))
+ (= (f (f x)) (f (f (f x))))
+ (= (f (f x)) y)
+ (= (f (f (f (f x)))) z)
+ (= (f x) z)
+ (not (= (f x) y))
+ )
+)
\ No newline at end of file
diff --git a/test/regress/regress0/uf/euf_simp04.smt b/test/regress/regress0/uf/euf_simp04.smt
new file mode 100644
index 0000000..7b15ad3
--- /dev/null
+++ b/test/regress/regress0/uf/euf_simp04.smt
@@ -0,0 +1,25 @@
+
+(benchmark euf_simp4.smt
+:status unsat
+:logic QF_UF
+:category { crafted }
+
+:extrafuns ((x U))
+:extrafuns ((y U))
+:extrafuns ((z U))
+:extrafuns ((f U U))
+:extrafuns ((g U U))
+:extrafuns ((H U U U))
+:extrafuns ((J U U U))
+
+
+
+:formula
+(and
+ (= (H x y) (H y x))
+ (or (= x (J z y)) (= y (J z y)))
+ (= (J z y) (f x))
+ (or (= x (f x)) (not (= y (f x))) )
+ (or (not (= x (f x))) (not (= (H x (f x)) (H (f x) x) )) )
+ )
+)
\ No newline at end of file
diff --git a/test/regress/regress0/uf/euf_simp05.smt b/test/regress/regress0/uf/euf_simp05.smt
new file mode 100644
index 0000000..85089a9
--- /dev/null
+++ b/test/regress/regress0/uf/euf_simp05.smt
@@ -0,0 +1,11 @@
+(benchmark euf_simp5.smt
+
+  :status unsat
+  :difficulty { unknown }
+  :category { crafted }
+  :logic QF_UF
+  :extrasorts (A)
+  :extrafuns ((x A))
+  :extrafuns ((f A A))
+  :formula (let (?cvc_1 (f x)) (let (?cvc_0 (f ?cvc_1)) (not (implies (and (= ?cvc_0 x) (= (f ?cvc_0) x)) (= ?cvc_1 x)))))
+)
diff --git a/test/regress/regress0/uf/euf_simp06.smt b/test/regress/regress0/uf/euf_simp06.smt
new file mode 100644
index 0000000..020bafd
--- /dev/null
+++ b/test/regress/regress0/uf/euf_simp06.smt
@@ -0,0 +1,11 @@
+(benchmark euf_simp6.smt
+
+  :status unsat
+  :difficulty { unknown }
+  :category { crafted }
+  :logic QF_UF
+  :extrasorts (A)
+  :extrafuns ((x A))
+  :extrafuns ((f A A))
+  :formula (let (?cvc_1 (f x)) (let (?cvc_0 (f ?cvc_1)) (not (implies (and (= ?cvc_0 x) (= (f (f (f ?cvc_0))) x)) (= ?cvc_1 x)))))
+)
diff --git a/test/regress/regress0/uf/euf_simp08.smt b/test/regress/regress0/uf/euf_simp08.smt
new file mode 100644
index 0000000..0a89fe9
--- /dev/null
+++ b/test/regress/regress0/uf/euf_simp08.smt
@@ -0,0 +1,13 @@
+(benchmark euf_simp8.smt
+
+  :status unsat
+  :difficulty { unknown }
+  :category { crafted }
+  :logic QF_UF
+  :extrasorts (A)
+  :extrafuns ((x A))
+  :extrafuns ((f A A))
+
+  :formula (let (?cvc_1 (f x)) (let (?cvc_0 (f (f ?cvc_1))) (not (implies (and (= ?cvc_0 x) (= (f (f ?cvc_0)) ?cvc_0)) (= ?cvc_1 x)))))
+
+)
diff --git a/test/regress/regress0/uf/euf_simp09.smt b/test/regress/regress0/uf/euf_simp09.smt
new file mode 100644
index 0000000..69ec0ff
--- /dev/null
+++ b/test/regress/regress0/uf/euf_simp09.smt
@@ -0,0 +1,11 @@
+(benchmark euf_simp9.smt
+
+  :status unsat
+  :difficulty { unknown }
+  :category { crafted }
+  :logic QF_UF
+  :extrasorts (A)
+  :extrafuns ((x A))
+  :extrafuns ((f A A))
+  :formula (let (?cvc_1 (f (f x))) (let (?cvc_0 (f (f ?cvc_1))) (not (implies (and (= ?cvc_0 x) (= (f (f ?cvc_0)) x)) (= ?cvc_1 x)))))
+)
diff --git a/test/regress/regress0/uf/euf_simp10.smt b/test/regress/regress0/uf/euf_simp10.smt
new file mode 100644
index 0000000..1b4b058
--- /dev/null
+++ b/test/regress/regress0/uf/euf_simp10.smt
@@ -0,0 +1,12 @@
+(benchmark euf_simp10.smt
+
+  :status unsat
+  :difficulty { unknown }
+  :category { crafted }
+  :logic QF_UF
+  :extrasorts (A)
+  :extrafuns ((x A))
+  :extrafuns ((f A A))
+
+  :formula (let (?cvc_0 (f x)) (let (?cvc_1 (f (f ?cvc_0))) (flet ($cvc_2 (= ?cvc_1 ?cvc_0)) (not (implies (and $cvc_2 (= (f (f ?cvc_1)) ?cvc_0)) $cvc_2)))))
+)
diff --git a/test/regress/regress0/uf/euf_simp11.smt b/test/regress/regress0/uf/euf_simp11.smt
new file mode 100644
index 0000000..164bd47
--- /dev/null
+++ b/test/regress/regress0/uf/euf_simp11.smt
@@ -0,0 +1,17 @@
+(benchmark euf_simp11.smt
+
+  :status unsat
+  :difficulty { unknown }
+  :category { crafted }
+  :logic QF_UF
+  :extrasorts (A)
+  :extrafuns ((x A))
+  :extrafuns ((f A A))
+
+
+
+
+
+
+  :formula (let (?cvc_0 (f x)) (let (?cvc_2 (f ?cvc_0)) (let (?cvc_1 (f (f ?cvc_2))) (not (implies (and (= ?cvc_1 ?cvc_0) (= (f (f ?cvc_1)) ?cvc_0)) (= ?cvc_2 ?cvc_0))))))
+)
diff --git a/test/regress/regress0/uf/euf_simp12.smt b/test/regress/regress0/uf/euf_simp12.smt
new file mode 100644
index 0000000..aff94ff
--- /dev/null
+++ b/test/regress/regress0/uf/euf_simp12.smt
@@ -0,0 +1,12 @@
+(benchmark euf_simp12.smt
+
+  :status unsat
+  :category { crafted }
+  :logic QF_UF
+  :extrasorts (A)
+  :extrafuns ((x A))
+  :extrafuns ((f A A))
+
+  :formula (let (?cvc_0 (f (f x))) (let (?cvc_2 (f ?cvc_0)) (let (?cvc_3 (f ?cvc_2)) (let (?cvc_1 (f ?cvc_3)) (let (?cvc_4 (f ?cvc_1)) (not (implies (and (= ?cvc_4 ?cvc_0) (= ?cvc_1 ?cvc_2)) (and (= ?cvc_3 ?cvc_0) (= ?cvc_4 ?cvc_3)))))))))
+
+)
diff --git a/test/regress/regress0/uf/euf_simp13.smt b/test/regress/regress0/uf/euf_simp13.smt
new file mode 100644
index 0000000..7e7abb8
--- /dev/null
+++ b/test/regress/regress0/uf/euf_simp13.smt
@@ -0,0 +1,12 @@
+(benchmark euf_simp13.smt
+
+  :status unsat
+  :difficulty { unknown }
+  :category { crafted }
+  :logic QF_UF
+  :extrasorts (A)
+  :extrafuns ((x A))
+  :extrafuns ((f A A))
+  :formula
+  (let (?cvc_6 (f x)) (let (?cvc_0 (f ?cvc_6)) (flet ($cvc_1 (= ?cvc_0 x)) (let (?cvc_2 (f ?cvc_0)) (flet ($cvc_3 (= ?cvc_2 x)) (let (?cvc_4 (f ?cvc_2)) (let (?cvc_5 (f ?cvc_4)) (not (implies (or (or (or (and $cvc_1 $cvc_3) (and $cvc_1 (= ?cvc_5 x))) (and $cvc_3 (= ?cvc_4 ?cvc_2))) (and $cvc_3 (= ?cvc_5 ?cvc_2))) (= ?cvc_6 x))))))))))
+)
diff --git a/test/regress/regress0/uf/gensys_brn001.smt2 b/test/regress/regress0/uf/gensys_brn001.smt2
new file mode 100644
index 0000000..f3cc3c7
--- /dev/null
+++ b/test/regress/regress0/uf/gensys_brn001.smt2
@@ -0,0 +1,146 @@
+(set-logic QF_UF)
+(set-info :source |
+http://www.cs.bham.ac.uk/~vxs/quasigroups/benchmark/
+
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-sort U 0)
+(declare-sort I 0)
+(declare-fun unit () I)
+(declare-fun op (I I) I)
+(declare-fun e5 () I)
+(declare-fun e4 () I)
+(declare-fun e3 () I)
+(declare-fun e2 () I)
+(declare-fun e1 () I)
+(declare-fun e0 () I)
+(assert (let ((?v_0 (op e0 e0)) (?v_1 (op e0 e1)) (?v_2 (op e0 e2)) (?v_3 (op e0 e3)) (?v_4 (op e0 e4)) (?v_5 (op e0 e5)) (?v_6 (op e1 e0)) (?v_7 (op e1 e1)) (?v_8 (op e1 e2)) (?v_9 (op e1 e3)) (?v_10 (op e1 e4)) (?v_11 (op e1 e5)) (?v_12 (op e2 e0)) (?v_13 (op e2 e1)) (?v_14 (op e2 e2)) (?v_15 (op e2 e3)) (?v_16 (op e2 e4)) (?v_17 (op e2 e5)) (?v_18 (op e3 e0)) (?v_19 (op e3 e1)) (?v_20 (op e3 e2)) (?v_21 (op e3 e3)) (?v_22 (op e3 e4)) (?v_23 (op e3 e5)) (?v_24 (op e4 e0)) (?v_25 (op e4 [...]
+(assert (let ((?v_1 (op e0 e0)) (?v_2 (op e0 e1)) (?v_3 (op e0 e2)) (?v_4 (op e0 e3)) (?v_5 (op e0 e4)) (?v_6 (op e0 e5)) (?v_8 (op e1 e0)) (?v_21 (op e1 e1)) (?v_22 (op e1 e2)) (?v_23 (op e1 e3)) (?v_24 (op e1 e4)) (?v_25 (op e1 e5)) (?v_9 (op e2 e0)) (?v_28 (op e2 e1)) (?v_51 (op e2 e2)) (?v_52 (op e2 e3)) (?v_53 (op e2 e4)) (?v_54 (op e2 e5)) (?v_10 (op e3 e0)) (?v_29 (op e3 e1)) (?v_58 (op e3 e2)) (?v_91 (op e3 e3)) (?v_92 (op e3 e4)) (?v_93 (op e3 e5)) (?v_11 (op e4 e0)) (?v_30 (op  [...]
+(assert (and (and (and (and (and (and (and (= (op unit e0) e0) (= (op e0 unit) e0)) (and (= (op unit e1) e1) (= (op e1 unit) e1))) (and (= (op unit e2) e2) (= (op e2 unit) e2))) (and (= (op unit e3) e3) (= (op e3 unit) e3))) (and (= (op unit e4) e4) (= (op e4 unit) e4))) (and (= (op unit e5) e5) (= (op e5 unit) e5))) (or (or (or (or (or (= unit e0) (= unit e1)) (= unit e2)) (= unit e3)) (= unit e4)) (= unit e5))))
+(assert (= unit e0))
+(assert (let ((?v_0 (op e0 e0)) (?v_6 (op e0 e1)) (?v_12 (op e0 e2)) (?v_18 (op e0 e3)) (?v_24 (op e0 e4)) (?v_30 (op e0 e5)) (?v_1 (op e1 e0)) (?v_7 (op e1 e1)) (?v_13 (op e1 e2)) (?v_19 (op e1 e3)) (?v_25 (op e1 e4)) (?v_31 (op e1 e5)) (?v_2 (op e2 e0)) (?v_8 (op e2 e1)) (?v_14 (op e2 e2)) (?v_20 (op e2 e3)) (?v_26 (op e2 e4)) (?v_32 (op e2 e5)) (?v_3 (op e3 e0)) (?v_9 (op e3 e1)) (?v_15 (op e3 e2)) (?v_21 (op e3 e3)) (?v_27 (op e3 e4)) (?v_33 (op e3 e5)) (?v_4 (op e4 e0)) (?v_10 (op e [...]
+(assert (and (and (and (and (and (and (and (and (and (and (and (and (and (and (not (= e0 e1)) (not (= e0 e2))) (not (= e0 e3))) (not (= e0 e4))) (not (= e0 e5))) (not (= e1 e2))) (not (= e1 e3))) (not (= e1 e4))) (not (= e1 e5))) (not (= e2 e3))) (not (= e2 e4))) (not (= e2 e5))) (not (= e3 e4))) (not (= e3 e5))) (not (= e4 e5))))
+(assert (not (and (and (and (and (= e0 (op e2 e3)) (= e2 (op e1 e1))) (= e3 (op e4 e4))) (= e4 (op e5 e2))) (= e5 (op e2 e1)))))
+(assert (not (and (and (and (and (= e0 (op e2 e3)) (= e2 (op e1 e1))) (= e3 (op e5 e5))) (= e5 (op e4 e2))) (= e4 (op e2 e1)))))
+(assert (not (and (and (and (and (= e0 (op e2 e4)) (= e2 (op e1 e1))) (= e4 (op e3 e3))) (= e3 (op e5 e2))) (= e5 (op e2 e1)))))
+(assert (not (and (and (and (and (= e0 (op e2 e4)) (= e2 (op e1 e1))) (= e4 (op e5 e5))) (= e5 (op e3 e2))) (= e3 (op e2 e1)))))
+(assert (not (and (and (and (and (= e0 (op e2 e5)) (= e2 (op e1 e1))) (= e5 (op e3 e3))) (= e3 (op e4 e2))) (= e4 (op e2 e1)))))
+(assert (not (and (and (and (and (= e0 (op e2 e5)) (= e2 (op e1 e1))) (= e5 (op e4 e4))) (= e4 (op e3 e2))) (= e3 (op e2 e1)))))
+(assert (not (and (and (and (and (= e0 (op e3 e2)) (= e3 (op e1 e1))) (= e2 (op e4 e4))) (= e4 (op e5 e3))) (= e5 (op e3 e1)))))
+(assert (not (and (and (and (and (= e0 (op e3 e2)) (= e3 (op e1 e1))) (= e2 (op e5 e5))) (= e5 (op e4 e3))) (= e4 (op e3 e1)))))
+(assert (not (and (and (and (and (= e0 (op e3 e4)) (= e3 (op e1 e1))) (= e4 (op e2 e2))) (= e2 (op e5 e3))) (= e5 (op e3 e1)))))
+(assert (not (and (and (and (and (= e0 (op e3 e4)) (= e3 (op e1 e1))) (= e4 (op e5 e5))) (= e5 (op e2 e3))) (= e2 (op e3 e1)))))
+(assert (not (and (and (and (and (= e0 (op e3 e5)) (= e3 (op e1 e1))) (= e5 (op e2 e2))) (= e2 (op e4 e3))) (= e4 (op e3 e1)))))
+(assert (not (and (and (and (and (= e0 (op e3 e5)) (= e3 (op e1 e1))) (= e5 (op e4 e4))) (= e4 (op e2 e3))) (= e2 (op e3 e1)))))
+(assert (not (and (and (and (and (= e0 (op e4 e2)) (= e4 (op e1 e1))) (= e2 (op e3 e3))) (= e3 (op e5 e4))) (= e5 (op e4 e1)))))
+(assert (not (and (and (and (and (= e0 (op e4 e2)) (= e4 (op e1 e1))) (= e2 (op e5 e5))) (= e5 (op e3 e4))) (= e3 (op e4 e1)))))
+(assert (not (and (and (and (and (= e0 (op e4 e3)) (= e4 (op e1 e1))) (= e3 (op e2 e2))) (= e2 (op e5 e4))) (= e5 (op e4 e1)))))
+(assert (not (and (and (and (and (= e0 (op e4 e3)) (= e4 (op e1 e1))) (= e3 (op e5 e5))) (= e5 (op e2 e4))) (= e2 (op e4 e1)))))
+(assert (not (and (and (and (and (= e0 (op e4 e5)) (= e4 (op e1 e1))) (= e5 (op e2 e2))) (= e2 (op e3 e4))) (= e3 (op e4 e1)))))
+(assert (not (and (and (and (and (= e0 (op e4 e5)) (= e4 (op e1 e1))) (= e5 (op e3 e3))) (= e3 (op e2 e4))) (= e2 (op e4 e1)))))
+(assert (not (and (and (and (and (= e0 (op e5 e2)) (= e5 (op e1 e1))) (= e2 (op e3 e3))) (= e3 (op e4 e5))) (= e4 (op e5 e1)))))
+(assert (not (and (and (and (and (= e0 (op e5 e2)) (= e5 (op e1 e1))) (= e2 (op e4 e4))) (= e4 (op e3 e5))) (= e3 (op e5 e1)))))
+(assert (not (and (and (and (and (= e0 (op e5 e3)) (= e5 (op e1 e1))) (= e3 (op e2 e2))) (= e2 (op e4 e5))) (= e4 (op e5 e1)))))
+(assert (not (and (and (and (and (= e0 (op e5 e3)) (= e5 (op e1 e1))) (= e3 (op e4 e4))) (= e4 (op e2 e5))) (= e2 (op e5 e1)))))
+(assert (not (and (and (and (and (= e0 (op e5 e4)) (= e5 (op e1 e1))) (= e4 (op e2 e2))) (= e2 (op e3 e5))) (= e3 (op e5 e1)))))
+(assert (not (and (and (and (and (= e0 (op e5 e4)) (= e5 (op e1 e1))) (= e4 (op e3 e3))) (= e3 (op e2 e5))) (= e2 (op e5 e1)))))
+(assert (not (and (and (and (and (= e0 (op e1 e3)) (= e1 (op e2 e2))) (= e3 (op e4 e4))) (= e4 (op e5 e1))) (= e5 (op e1 e2)))))
+(assert (not (and (and (and (and (= e0 (op e1 e3)) (= e1 (op e2 e2))) (= e3 (op e5 e5))) (= e5 (op e4 e1))) (= e4 (op e1 e2)))))
+(assert (not (and (and (and (and (= e0 (op e1 e4)) (= e1 (op e2 e2))) (= e4 (op e3 e3))) (= e3 (op e5 e1))) (= e5 (op e1 e2)))))
+(assert (not (and (and (and (and (= e0 (op e1 e4)) (= e1 (op e2 e2))) (= e4 (op e5 e5))) (= e5 (op e3 e1))) (= e3 (op e1 e2)))))
+(assert (not (and (and (and (and (= e0 (op e1 e5)) (= e1 (op e2 e2))) (= e5 (op e3 e3))) (= e3 (op e4 e1))) (= e4 (op e1 e2)))))
+(assert (not (and (and (and (and (= e0 (op e1 e5)) (= e1 (op e2 e2))) (= e5 (op e4 e4))) (= e4 (op e3 e1))) (= e3 (op e1 e2)))))
+(assert (not (and (and (and (and (= e0 (op e3 e1)) (= e3 (op e2 e2))) (= e1 (op e4 e4))) (= e4 (op e5 e3))) (= e5 (op e3 e2)))))
+(assert (not (and (and (and (and (= e0 (op e3 e1)) (= e3 (op e2 e2))) (= e1 (op e5 e5))) (= e5 (op e4 e3))) (= e4 (op e3 e2)))))
+(assert (not (and (and (and (and (= e0 (op e3 e4)) (= e3 (op e2 e2))) (= e4 (op e1 e1))) (= e1 (op e5 e3))) (= e5 (op e3 e2)))))
+(assert (not (and (and (and (and (= e0 (op e3 e4)) (= e3 (op e2 e2))) (= e4 (op e5 e5))) (= e5 (op e1 e3))) (= e1 (op e3 e2)))))
+(assert (not (and (and (and (and (= e0 (op e3 e5)) (= e3 (op e2 e2))) (= e5 (op e1 e1))) (= e1 (op e4 e3))) (= e4 (op e3 e2)))))
+(assert (not (and (and (and (and (= e0 (op e3 e5)) (= e3 (op e2 e2))) (= e5 (op e4 e4))) (= e4 (op e1 e3))) (= e1 (op e3 e2)))))
+(assert (not (and (and (and (and (= e0 (op e4 e1)) (= e4 (op e2 e2))) (= e1 (op e3 e3))) (= e3 (op e5 e4))) (= e5 (op e4 e2)))))
+(assert (not (and (and (and (and (= e0 (op e4 e1)) (= e4 (op e2 e2))) (= e1 (op e5 e5))) (= e5 (op e3 e4))) (= e3 (op e4 e2)))))
+(assert (not (and (and (and (and (= e0 (op e4 e3)) (= e4 (op e2 e2))) (= e3 (op e1 e1))) (= e1 (op e5 e4))) (= e5 (op e4 e2)))))
+(assert (not (and (and (and (and (= e0 (op e4 e3)) (= e4 (op e2 e2))) (= e3 (op e5 e5))) (= e5 (op e1 e4))) (= e1 (op e4 e2)))))
+(assert (not (and (and (and (and (= e0 (op e4 e5)) (= e4 (op e2 e2))) (= e5 (op e1 e1))) (= e1 (op e3 e4))) (= e3 (op e4 e2)))))
+(assert (not (and (and (and (and (= e0 (op e4 e5)) (= e4 (op e2 e2))) (= e5 (op e3 e3))) (= e3 (op e1 e4))) (= e1 (op e4 e2)))))
+(assert (not (and (and (and (and (= e0 (op e5 e1)) (= e5 (op e2 e2))) (= e1 (op e3 e3))) (= e3 (op e4 e5))) (= e4 (op e5 e2)))))
+(assert (not (and (and (and (and (= e0 (op e5 e1)) (= e5 (op e2 e2))) (= e1 (op e4 e4))) (= e4 (op e3 e5))) (= e3 (op e5 e2)))))
+(assert (not (and (and (and (and (= e0 (op e5 e3)) (= e5 (op e2 e2))) (= e3 (op e1 e1))) (= e1 (op e4 e5))) (= e4 (op e5 e2)))))
+(assert (not (and (and (and (and (= e0 (op e5 e3)) (= e5 (op e2 e2))) (= e3 (op e4 e4))) (= e4 (op e1 e5))) (= e1 (op e5 e2)))))
+(assert (not (and (and (and (and (= e0 (op e5 e4)) (= e5 (op e2 e2))) (= e4 (op e1 e1))) (= e1 (op e3 e5))) (= e3 (op e5 e2)))))
+(assert (not (and (and (and (and (= e0 (op e5 e4)) (= e5 (op e2 e2))) (= e4 (op e3 e3))) (= e3 (op e1 e5))) (= e1 (op e5 e2)))))
+(assert (not (and (and (and (and (= e0 (op e1 e2)) (= e1 (op e3 e3))) (= e2 (op e4 e4))) (= e4 (op e5 e1))) (= e5 (op e1 e3)))))
+(assert (not (and (and (and (and (= e0 (op e1 e2)) (= e1 (op e3 e3))) (= e2 (op e5 e5))) (= e5 (op e4 e1))) (= e4 (op e1 e3)))))
+(assert (not (and (and (and (and (= e0 (op e1 e4)) (= e1 (op e3 e3))) (= e4 (op e2 e2))) (= e2 (op e5 e1))) (= e5 (op e1 e3)))))
+(assert (not (and (and (and (and (= e0 (op e1 e4)) (= e1 (op e3 e3))) (= e4 (op e5 e5))) (= e5 (op e2 e1))) (= e2 (op e1 e3)))))
+(assert (not (and (and (and (and (= e0 (op e1 e5)) (= e1 (op e3 e3))) (= e5 (op e2 e2))) (= e2 (op e4 e1))) (= e4 (op e1 e3)))))
+(assert (not (and (and (and (and (= e0 (op e1 e5)) (= e1 (op e3 e3))) (= e5 (op e4 e4))) (= e4 (op e2 e1))) (= e2 (op e1 e3)))))
+(assert (not (and (and (and (and (= e0 (op e2 e1)) (= e2 (op e3 e3))) (= e1 (op e4 e4))) (= e4 (op e5 e2))) (= e5 (op e2 e3)))))
+(assert (not (and (and (and (and (= e0 (op e2 e1)) (= e2 (op e3 e3))) (= e1 (op e5 e5))) (= e5 (op e4 e2))) (= e4 (op e2 e3)))))
+(assert (not (and (and (and (and (= e0 (op e2 e4)) (= e2 (op e3 e3))) (= e4 (op e1 e1))) (= e1 (op e5 e2))) (= e5 (op e2 e3)))))
+(assert (not (and (and (and (and (= e0 (op e2 e4)) (= e2 (op e3 e3))) (= e4 (op e5 e5))) (= e5 (op e1 e2))) (= e1 (op e2 e3)))))
+(assert (not (and (and (and (and (= e0 (op e2 e5)) (= e2 (op e3 e3))) (= e5 (op e1 e1))) (= e1 (op e4 e2))) (= e4 (op e2 e3)))))
+(assert (not (and (and (and (and (= e0 (op e2 e5)) (= e2 (op e3 e3))) (= e5 (op e4 e4))) (= e4 (op e1 e2))) (= e1 (op e2 e3)))))
+(assert (not (and (and (and (and (= e0 (op e4 e1)) (= e4 (op e3 e3))) (= e1 (op e2 e2))) (= e2 (op e5 e4))) (= e5 (op e4 e3)))))
+(assert (not (and (and (and (and (= e0 (op e4 e1)) (= e4 (op e3 e3))) (= e1 (op e5 e5))) (= e5 (op e2 e4))) (= e2 (op e4 e3)))))
+(assert (not (and (and (and (and (= e0 (op e4 e2)) (= e4 (op e3 e3))) (= e2 (op e1 e1))) (= e1 (op e5 e4))) (= e5 (op e4 e3)))))
+(assert (not (and (and (and (and (= e0 (op e4 e2)) (= e4 (op e3 e3))) (= e2 (op e5 e5))) (= e5 (op e1 e4))) (= e1 (op e4 e3)))))
+(assert (not (and (and (and (and (= e0 (op e4 e5)) (= e4 (op e3 e3))) (= e5 (op e1 e1))) (= e1 (op e2 e4))) (= e2 (op e4 e3)))))
+(assert (not (and (and (and (and (= e0 (op e4 e5)) (= e4 (op e3 e3))) (= e5 (op e2 e2))) (= e2 (op e1 e4))) (= e1 (op e4 e3)))))
+(assert (not (and (and (and (and (= e0 (op e5 e1)) (= e5 (op e3 e3))) (= e1 (op e2 e2))) (= e2 (op e4 e5))) (= e4 (op e5 e3)))))
+(assert (not (and (and (and (and (= e0 (op e5 e1)) (= e5 (op e3 e3))) (= e1 (op e4 e4))) (= e4 (op e2 e5))) (= e2 (op e5 e3)))))
+(assert (not (and (and (and (and (= e0 (op e5 e2)) (= e5 (op e3 e3))) (= e2 (op e1 e1))) (= e1 (op e4 e5))) (= e4 (op e5 e3)))))
+(assert (not (and (and (and (and (= e0 (op e5 e2)) (= e5 (op e3 e3))) (= e2 (op e4 e4))) (= e4 (op e1 e5))) (= e1 (op e5 e3)))))
+(assert (not (and (and (and (and (= e0 (op e5 e4)) (= e5 (op e3 e3))) (= e4 (op e1 e1))) (= e1 (op e2 e5))) (= e2 (op e5 e3)))))
+(assert (not (and (and (and (and (= e0 (op e5 e4)) (= e5 (op e3 e3))) (= e4 (op e2 e2))) (= e2 (op e1 e5))) (= e1 (op e5 e3)))))
+(assert (not (and (and (and (and (= e0 (op e1 e2)) (= e1 (op e4 e4))) (= e2 (op e3 e3))) (= e3 (op e5 e1))) (= e5 (op e1 e4)))))
+(assert (not (and (and (and (and (= e0 (op e1 e2)) (= e1 (op e4 e4))) (= e2 (op e5 e5))) (= e5 (op e3 e1))) (= e3 (op e1 e4)))))
+(assert (not (and (and (and (and (= e0 (op e1 e3)) (= e1 (op e4 e4))) (= e3 (op e2 e2))) (= e2 (op e5 e1))) (= e5 (op e1 e4)))))
+(assert (not (and (and (and (and (= e0 (op e1 e3)) (= e1 (op e4 e4))) (= e3 (op e5 e5))) (= e5 (op e2 e1))) (= e2 (op e1 e4)))))
+(assert (not (and (and (and (and (= e0 (op e1 e5)) (= e1 (op e4 e4))) (= e5 (op e2 e2))) (= e2 (op e3 e1))) (= e3 (op e1 e4)))))
+(assert (not (and (and (and (and (= e0 (op e1 e5)) (= e1 (op e4 e4))) (= e5 (op e3 e3))) (= e3 (op e2 e1))) (= e2 (op e1 e4)))))
+(assert (not (and (and (and (and (= e0 (op e2 e1)) (= e2 (op e4 e4))) (= e1 (op e3 e3))) (= e3 (op e5 e2))) (= e5 (op e2 e4)))))
+(assert (not (and (and (and (and (= e0 (op e2 e1)) (= e2 (op e4 e4))) (= e1 (op e5 e5))) (= e5 (op e3 e2))) (= e3 (op e2 e4)))))
+(assert (not (and (and (and (and (= e0 (op e2 e3)) (= e2 (op e4 e4))) (= e3 (op e1 e1))) (= e1 (op e5 e2))) (= e5 (op e2 e4)))))
+(assert (not (and (and (and (and (= e0 (op e2 e3)) (= e2 (op e4 e4))) (= e3 (op e5 e5))) (= e5 (op e1 e2))) (= e1 (op e2 e4)))))
+(assert (not (and (and (and (and (= e0 (op e2 e5)) (= e2 (op e4 e4))) (= e5 (op e1 e1))) (= e1 (op e3 e2))) (= e3 (op e2 e4)))))
+(assert (not (and (and (and (and (= e0 (op e2 e5)) (= e2 (op e4 e4))) (= e5 (op e3 e3))) (= e3 (op e1 e2))) (= e1 (op e2 e4)))))
+(assert (not (and (and (and (and (= e0 (op e3 e1)) (= e3 (op e4 e4))) (= e1 (op e2 e2))) (= e2 (op e5 e3))) (= e5 (op e3 e4)))))
+(assert (not (and (and (and (and (= e0 (op e3 e1)) (= e3 (op e4 e4))) (= e1 (op e5 e5))) (= e5 (op e2 e3))) (= e2 (op e3 e4)))))
+(assert (not (and (and (and (and (= e0 (op e3 e2)) (= e3 (op e4 e4))) (= e2 (op e1 e1))) (= e1 (op e5 e3))) (= e5 (op e3 e4)))))
+(assert (not (and (and (and (and (= e0 (op e3 e2)) (= e3 (op e4 e4))) (= e2 (op e5 e5))) (= e5 (op e1 e3))) (= e1 (op e3 e4)))))
+(assert (not (and (and (and (and (= e0 (op e3 e5)) (= e3 (op e4 e4))) (= e5 (op e1 e1))) (= e1 (op e2 e3))) (= e2 (op e3 e4)))))
+(assert (not (and (and (and (and (= e0 (op e3 e5)) (= e3 (op e4 e4))) (= e5 (op e2 e2))) (= e2 (op e1 e3))) (= e1 (op e3 e4)))))
+(assert (not (and (and (and (and (= e0 (op e5 e1)) (= e5 (op e4 e4))) (= e1 (op e2 e2))) (= e2 (op e3 e5))) (= e3 (op e5 e4)))))
+(assert (not (and (and (and (and (= e0 (op e5 e1)) (= e5 (op e4 e4))) (= e1 (op e3 e3))) (= e3 (op e2 e5))) (= e2 (op e5 e4)))))
+(assert (not (and (and (and (and (= e0 (op e5 e2)) (= e5 (op e4 e4))) (= e2 (op e1 e1))) (= e1 (op e3 e5))) (= e3 (op e5 e4)))))
+(assert (not (and (and (and (and (= e0 (op e5 e2)) (= e5 (op e4 e4))) (= e2 (op e3 e3))) (= e3 (op e1 e5))) (= e1 (op e5 e4)))))
+(assert (not (and (and (and (and (= e0 (op e5 e3)) (= e5 (op e4 e4))) (= e3 (op e1 e1))) (= e1 (op e2 e5))) (= e2 (op e5 e4)))))
+(assert (not (and (and (and (and (= e0 (op e5 e3)) (= e5 (op e4 e4))) (= e3 (op e2 e2))) (= e2 (op e1 e5))) (= e1 (op e5 e4)))))
+(assert (not (and (and (and (and (= e0 (op e1 e2)) (= e1 (op e5 e5))) (= e2 (op e3 e3))) (= e3 (op e4 e1))) (= e4 (op e1 e5)))))
+(assert (not (and (and (and (and (= e0 (op e1 e2)) (= e1 (op e5 e5))) (= e2 (op e4 e4))) (= e4 (op e3 e1))) (= e3 (op e1 e5)))))
+(assert (not (and (and (and (and (= e0 (op e1 e3)) (= e1 (op e5 e5))) (= e3 (op e2 e2))) (= e2 (op e4 e1))) (= e4 (op e1 e5)))))
+(assert (not (and (and (and (and (= e0 (op e1 e3)) (= e1 (op e5 e5))) (= e3 (op e4 e4))) (= e4 (op e2 e1))) (= e2 (op e1 e5)))))
+(assert (not (and (and (and (and (= e0 (op e1 e4)) (= e1 (op e5 e5))) (= e4 (op e2 e2))) (= e2 (op e3 e1))) (= e3 (op e1 e5)))))
+(assert (not (and (and (and (and (= e0 (op e1 e4)) (= e1 (op e5 e5))) (= e4 (op e3 e3))) (= e3 (op e2 e1))) (= e2 (op e1 e5)))))
+(assert (not (and (and (and (and (= e0 (op e2 e1)) (= e2 (op e5 e5))) (= e1 (op e3 e3))) (= e3 (op e4 e2))) (= e4 (op e2 e5)))))
+(assert (not (and (and (and (and (= e0 (op e2 e1)) (= e2 (op e5 e5))) (= e1 (op e4 e4))) (= e4 (op e3 e2))) (= e3 (op e2 e5)))))
+(assert (not (and (and (and (and (= e0 (op e2 e3)) (= e2 (op e5 e5))) (= e3 (op e1 e1))) (= e1 (op e4 e2))) (= e4 (op e2 e5)))))
+(assert (not (and (and (and (and (= e0 (op e2 e3)) (= e2 (op e5 e5))) (= e3 (op e4 e4))) (= e4 (op e1 e2))) (= e1 (op e2 e5)))))
+(assert (not (and (and (and (and (= e0 (op e2 e4)) (= e2 (op e5 e5))) (= e4 (op e1 e1))) (= e1 (op e3 e2))) (= e3 (op e2 e5)))))
+(assert (not (and (and (and (and (= e0 (op e2 e4)) (= e2 (op e5 e5))) (= e4 (op e3 e3))) (= e3 (op e1 e2))) (= e1 (op e2 e5)))))
+(assert (not (and (and (and (and (= e0 (op e3 e1)) (= e3 (op e5 e5))) (= e1 (op e2 e2))) (= e2 (op e4 e3))) (= e4 (op e3 e5)))))
+(assert (not (and (and (and (and (= e0 (op e3 e1)) (= e3 (op e5 e5))) (= e1 (op e4 e4))) (= e4 (op e2 e3))) (= e2 (op e3 e5)))))
+(assert (not (and (and (and (and (= e0 (op e3 e2)) (= e3 (op e5 e5))) (= e2 (op e1 e1))) (= e1 (op e4 e3))) (= e4 (op e3 e5)))))
+(assert (not (and (and (and (and (= e0 (op e3 e2)) (= e3 (op e5 e5))) (= e2 (op e4 e4))) (= e4 (op e1 e3))) (= e1 (op e3 e5)))))
+(assert (not (and (and (and (and (= e0 (op e3 e4)) (= e3 (op e5 e5))) (= e4 (op e1 e1))) (= e1 (op e2 e3))) (= e2 (op e3 e5)))))
+(assert (not (and (and (and (and (= e0 (op e3 e4)) (= e3 (op e5 e5))) (= e4 (op e2 e2))) (= e2 (op e1 e3))) (= e1 (op e3 e5)))))
+(assert (not (and (and (and (and (= e0 (op e4 e1)) (= e4 (op e5 e5))) (= e1 (op e2 e2))) (= e2 (op e3 e4))) (= e3 (op e4 e5)))))
+(assert (not (and (and (and (and (= e0 (op e4 e1)) (= e4 (op e5 e5))) (= e1 (op e3 e3))) (= e3 (op e2 e4))) (= e2 (op e4 e5)))))
+(assert (not (and (and (and (and (= e0 (op e4 e2)) (= e4 (op e5 e5))) (= e2 (op e1 e1))) (= e1 (op e3 e4))) (= e3 (op e4 e5)))))
+(assert (not (and (and (and (and (= e0 (op e4 e2)) (= e4 (op e5 e5))) (= e2 (op e3 e3))) (= e3 (op e1 e4))) (= e1 (op e4 e5)))))
+(assert (not (and (and (and (and (= e0 (op e4 e3)) (= e4 (op e5 e5))) (= e3 (op e1 e1))) (= e1 (op e2 e4))) (= e2 (op e4 e5)))))
+(assert (not (and (and (and (and (= e0 (op e4 e3)) (= e4 (op e5 e5))) (= e3 (op e2 e2))) (= e2 (op e1 e4))) (= e1 (op e4 e5)))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/uf/iso_brn001.smt b/test/regress/regress0/uf/iso_brn001.smt
new file mode 100644
index 0000000..db1efdf
--- /dev/null
+++ b/test/regress/regress0/uf/iso_brn001.smt
@@ -0,0 +1,34 @@
+(benchmark iso_brn001.smt
+  :source {
+http://www.cs.bham.ac.uk/~vxs/quasigroups/benchmark/
+
+}
+  :status sat
+  :difficulty { 0 }
+  :category { crafted }
+  :logic QF_UF
+  :extrasorts (I)
+  :extrafuns ((op1 I I I))
+  :extrafuns ((op I I I))
+  :extrafuns ((e4 I))
+  :extrafuns ((e3 I))
+  :extrafuns ((e2 I))
+  :extrafuns ((e1 I))
+  :extrafuns ((e0 I))
+  :assumption
+(let (?cvc_0 (op e0 e0)) (let (?cvc_1 (op e0 e1)) (let (?cvc_2 (op e0 e2)) (let (?cvc_3 (op e0 e3)) (let (?cvc_4 (op e0 e4)) (let (?cvc_5 (op e1 e0)) (let (?cvc_6 (op e1 e1)) (let (?cvc_7 (op e1 e2)) (let (?cvc_8 (op e1 e3)) (let (?cvc_9 (op e1 e4)) (let (?cvc_10 (op e2 e0)) (let (?cvc_11 (op e2 e1)) (let (?cvc_12 (op e2 e2)) (let (?cvc_13 (op e2 e3)) (let (?cvc_14 (op e2 e4)) (let (?cvc_15 (op e3 e0)) (let (?cvc_16 (op e3 e1)) (let (?cvc_17 (op e3 e2)) (let (?cvc_18 (op e3 e3)) (let (?c [...]
+  :assumption
+(let (?cvc_1 (op e0 e0)) (flet ($cvc_0 (= ?cvc_1 e0)) (flet ($cvc_6 (= ?cvc_1 e1)) (flet ($cvc_11 (= ?cvc_1 e2)) (flet ($cvc_12 (= ?cvc_1 e3)) (flet ($cvc_13 (= ?cvc_1 e4)) (let (?cvc_2 (op e0 e1)) (flet ($cvc_15 (= ?cvc_2 e0)) (flet ($cvc_22 (= ?cvc_2 e1)) (flet ($cvc_28 (= ?cvc_2 e2)) (flet ($cvc_31 (= ?cvc_2 e3)) (flet ($cvc_34 (= ?cvc_2 e4)) (let (?cvc_3 (op e0 e2)) (flet ($cvc_38 (= ?cvc_3 e0)) (flet ($cvc_46 (= ?cvc_3 e1)) (flet ($cvc_53 (= ?cvc_3 e2)) (flet ($cvc_58 (= ?cvc_3 e3)) [...]
+  :assumption
+(let (?cvc_0 (op e0 e0)) (let (?cvc_5 (op e0 e1)) (let (?cvc_10 (op e0 e2)) (let (?cvc_15 (op e0 e3)) (let (?cvc_20 (op e0 e4)) (let (?cvc_1 (op e1 e0)) (let (?cvc_6 (op e1 e1)) (let (?cvc_11 (op e1 e2)) (let (?cvc_16 (op e1 e3)) (let (?cvc_21 (op e1 e4)) (let (?cvc_2 (op e2 e0)) (let (?cvc_7 (op e2 e1)) (let (?cvc_12 (op e2 e2)) (let (?cvc_17 (op e2 e3)) (let (?cvc_22 (op e2 e4)) (let (?cvc_3 (op e3 e0)) (let (?cvc_8 (op e3 e1)) (let (?cvc_13 (op e3 e2)) (let (?cvc_18 (op e3 e3)) (let ( [...]
+  :assumption
+(and (and (and (and (and (and (and (and (and (not (= e0 e1)) (not (= e0 e2))) (not (= e0 e3))) (not (= e0 e4))) (not (= e1 e2))) (not (= e1 e3))) (not (= e1 e4))) (not (= e2 e3))) (not (= e2 e4))) (not (= e3 e4)))
+  :assumption
+(and (and (and (= e0 (op e4 e4)) (= e1 (op e3 e4))) (= e2 (op e3 e1))) (= e4 (op e3 e3)))
+  :assumption
+(not (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (= (op e0 e0) e2) (= (op e0 e1) e0)) (= (op e0 e2) e1)) (= (op e0 e3) e3)) (= (op e0 e4) e4)) (= (op e1 e0) e0)) (= (op e1 e1) e1)) (= (op e1 e2) e4)) (= (op e1 e3) e2)) (= (op e1 e4) e3)) (= (op e2 e0) e1)) (= (op e2 e1) e4)) (= (op e2 e2) e3)) (= (op e2 e3) e0)) (= (op e2 e4) e2)) (= (op e3 e0) e3)) (= (op e3 e1) e2)) (= (op e3 e2) e0)) (= (op e3 e3) e4)) (= (op  [...]
+  :assumption
+(not (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (= (op e0 e0) e1) (= (op e0 e1) e0)) (= (op e0 e2) e4)) (= (op e0 e3) e3)) (= (op e0 e4) e2)) (= (op e1 e0) e0)) (= (op e1 e1) e3)) (= (op e1 e2) e1)) (= (op e1 e3) e2)) (= (op e1 e4) e4)) (= (op e2 e0) e4)) (= (op e2 e1) e1)) (= (op e2 e2) e2)) (= (op e2 e3) e0)) (= (op e2 e4) e3)) (= (op e3 e0) e3)) (= (op e3 e1) e2)) (= (op e3 e2) e0)) (= (op e3 e3) e4)) (= (op  [...]
+  :formula
+(not false)
+)
diff --git a/test/regress/regress0/uf/mkpidgeon b/test/regress/regress0/uf/mkpidgeon
new file mode 100644
index 0000000..6852145
--- /dev/null
+++ b/test/regress/regress0/uf/mkpidgeon
@@ -0,0 +1,44 @@
+#!/bin/bash
+# Simple pidgeon-hole problem generator in SMT-LIBv2
+# (c) 2011 Morgan Deters <mdeters at cs.nyu.edu>
+# 2011 July 7
+
+if [ $# -ne 1 ]; then
+  echo "usage: $(basename "$0") size" >&2
+  exit 1
+fi
+
+N=$1
+
+echo "(set-logic QF_UF)"
+echo "(declare-sort U 0)"
+
+i=1; while [ $i -le $N ]; do
+  echo "(declare-fun p_$i () U)"
+  let ++i
+done
+
+i=1; while [ $i -le $(($N-1)) ]; do
+  echo "(declare-fun h_$i () U)"
+  let ++i
+done
+
+i=1; while [ $i -le $(($N-1)) ]; do
+  j=$(($i+1)); while [ $j -le $N ]; do
+    echo "(assert (not (= p_$i p_$j)))"
+    let ++j
+  done
+  let ++i
+done
+
+i=1; while [ $i -le $N ]; do
+  echo -n "(assert (or"
+  j=1; while [ $j -le $(($N-1)) ]; do
+    echo -n " (= p_$i h_$j)"
+    let ++j
+  done
+  echo "))"
+  let ++i
+done
+
+echo "(check-sat)"
diff --git a/test/regress/regress0/uf/proof00.smt2 b/test/regress/regress0/uf/proof00.smt2
new file mode 100644
index 0000000..1b7e7b8
--- /dev/null
+++ b/test/regress/regress0/uf/proof00.smt2
@@ -0,0 +1,21 @@
+; PROOF
+(set-logic QF_UF)
+(set-info :source |
+CADE ATP System competition. See http://www.cs.miami.edu/~tptp/CASC
+ for more information. 
+
+This benchmark was obtained by trying to find a finite model of a first-order 
+formula (Albert Oliveras).
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-sort U 0)
+(declare-fun c3 () U)
+(declare-fun f1 (U U) U)
+(declare-fun f4 (U) U)
+(declare-fun c2 () U)
+(declare-fun c_0 () U)
+(declare-fun c_1 () U)
+(assert (let ((?v_1 (f1 c3 c_0))) (let ((?v_0 (f1 ?v_1 c_0)) (?v_2 (f1 c_0 c_0)) (?v_4 (f1 c_0 c_1)) (?v_3 (f1 ?v_1 c_1)) (?v_6 (f1 c3 c_1))) (let ((?v_5 (f1 ?v_6 c_0)) (?v_7 (f1 c_1 c_0)) (?v_9 (f1 c_1 c_1)) (?v_8 (f1 ?v_6 c_1)) (?v_10 (f4 c_0))) (let ((?v_11 (f1 c_0 ?v_10)) (?v_12 (f4 c_1))) (let ((?v_13 (f1 c_1 ?v_12)) (?v_15 (f1 c2 c_0))) (let ((?v_14 (f1 ?v_15 c_0)) (?v_16 (f1 ?v_15 c_1)) (?v_18 (f1 c2 c_1))) (let ((?v_17 (f1 ?v_18 c_0)) (?v_19 (f1 ?v_18 c_1))) (and (distinct c_0 c_ [...]
+(check-sat)
diff --git a/test/regress/regress0/uf/simple.01.cvc b/test/regress/regress0/uf/simple.01.cvc
new file mode 100644
index 0000000..42b99cc
--- /dev/null
+++ b/test/regress/regress0/uf/simple.01.cvc
@@ -0,0 +1,7 @@
+% EXPECT: valid
+A: TYPE;
+B: TYPE;
+x, y: A;
+f: A -> B;
+QUERY (x = y => f(x) = f(y));
+
diff --git a/test/regress/regress0/uf/simple.02.cvc b/test/regress/regress0/uf/simple.02.cvc
new file mode 100644
index 0000000..1dd96fd
--- /dev/null
+++ b/test/regress/regress0/uf/simple.02.cvc
@@ -0,0 +1,7 @@
+% EXPECT: invalid
+A: TYPE;
+B: TYPE;
+x, y: A;
+f: A -> B;
+QUERY (f(x) = f(y));
+
diff --git a/test/regress/regress0/uf/simple.03.cvc b/test/regress/regress0/uf/simple.03.cvc
new file mode 100644
index 0000000..cc1721c
--- /dev/null
+++ b/test/regress/regress0/uf/simple.03.cvc
@@ -0,0 +1,11 @@
+% EXPECT: valid
+A: TYPE;
+B: TYPE;
+x, y: A;
+a, b: A;
+
+f: A -> B;
+
+ASSERT (x = a AND y = a) OR (x = b AND y = b);
+QUERY (f(x) = f(y));
+
diff --git a/test/regress/regress0/uf/simple.04.cvc b/test/regress/regress0/uf/simple.04.cvc
new file mode 100644
index 0000000..66223ca
--- /dev/null
+++ b/test/regress/regress0/uf/simple.04.cvc
@@ -0,0 +1,11 @@
+% EXPECT: invalid
+A: TYPE;
+B: TYPE;
+x, y: A;
+a, b: A;
+
+f: A -> B;
+
+ASSERT (x = a OR x = b) AND (y = b OR y = a);
+QUERY (f(x) = f(y));
+
diff --git a/test/regress/regress0/uf20-03.cvc b/test/regress/regress0/uf20-03.cvc
new file mode 100644
index 0000000..9de7542
--- /dev/null
+++ b/test/regress/regress0/uf20-03.cvc
@@ -0,0 +1,115 @@
+% EXPECT: invalid
+x_1 : BOOLEAN;
+x_2 : BOOLEAN;
+x_3 : BOOLEAN;
+x_4 : BOOLEAN;
+x_5 : BOOLEAN;
+x_6 : BOOLEAN;
+x_7 : BOOLEAN;
+x_8 : BOOLEAN;
+x_9 : BOOLEAN;
+x_10 : BOOLEAN;
+x_11 : BOOLEAN;
+x_12 : BOOLEAN;
+x_13 : BOOLEAN;
+x_14 : BOOLEAN;
+x_15 : BOOLEAN;
+x_16 : BOOLEAN;
+x_17 : BOOLEAN;
+x_18 : BOOLEAN;
+x_19 : BOOLEAN;
+x_20 : BOOLEAN;
+ASSERT NOT x_9 OR x_3 OR NOT x_15;
+ASSERT NOT x_12 OR NOT x_4 OR NOT x_15;
+ASSERT x_6 OR x_14 OR NOT x_17;
+ASSERT x_10 OR x_16 OR x_11;
+ASSERT NOT x_15 OR x_20 OR NOT x_7;
+ASSERT NOT x_1 OR x_10 OR x_16;
+ASSERT x_13 OR x_17 OR NOT x_7;
+ASSERT NOT x_2 OR NOT x_14 OR NOT x_13;
+ASSERT x_13 OR NOT x_6 OR x_15;
+ASSERT NOT x_9 OR x_3 OR x_16;
+ASSERT NOT x_20 OR NOT x_13 OR x_4;
+ASSERT NOT x_7 OR x_15 OR NOT x_14;
+ASSERT NOT x_15 OR NOT x_16 OR x_6;
+ASSERT x_5 OR NOT x_18 OR x_20;
+ASSERT NOT x_16 OR NOT x_19 OR x_7;
+ASSERT x_20 OR NOT x_18 OR NOT x_2;
+ASSERT x_10 OR NOT x_19 OR NOT x_14;
+ASSERT x_16 OR NOT x_7 OR x_12;
+ASSERT x_6 OR NOT x_5 OR NOT x_1;
+ASSERT NOT x_9 OR x_11 OR x_15;
+ASSERT x_19 OR NOT x_6 OR x_7;
+ASSERT NOT x_11 OR x_17 OR NOT x_19;
+ASSERT x_9 OR NOT x_16 OR x_6;
+ASSERT x_15 OR NOT x_20 OR x_10;
+ASSERT x_9 OR NOT x_1 OR NOT x_11;
+ASSERT NOT x_8 OR NOT x_19 OR x_5;
+ASSERT NOT x_19 OR x_11 OR x_20;
+ASSERT NOT x_12 OR x_13 OR NOT x_3;
+ASSERT NOT x_7 OR NOT x_17 OR NOT x_19;
+ASSERT x_17 OR x_6 OR NOT x_11;
+ASSERT NOT x_7 OR NOT x_17 OR x_10;
+ASSERT NOT x_14 OR x_9 OR x_20;
+ASSERT x_1 OR NOT x_18 OR NOT x_16;
+ASSERT NOT x_2 OR NOT x_15 OR x_20;
+ASSERT x_14 OR x_18 OR NOT x_1;
+ASSERT NOT x_8 OR NOT x_4 OR x_1;
+ASSERT x_13 OR x_3 OR NOT x_9;
+ASSERT x_5 OR x_7 OR x_8;
+ASSERT x_9 OR x_4 OR NOT x_20;
+ASSERT NOT x_18 OR NOT x_15 OR NOT x_10;
+ASSERT x_10 OR x_3 OR NOT x_20;
+ASSERT x_20 OR NOT x_14 OR x_16;
+ASSERT x_20 OR NOT x_3 OR NOT x_11;
+ASSERT NOT x_12 OR x_19 OR NOT x_16;
+ASSERT NOT x_3 OR x_5 OR x_10;
+ASSERT x_8 OR x_13 OR NOT x_7;
+ASSERT NOT x_2 OR NOT x_15 OR x_10;
+ASSERT NOT x_3 OR x_9 OR x_16;
+ASSERT NOT x_12 OR NOT x_16 OR NOT x_18;
+ASSERT x_3 OR x_1 OR NOT x_12;
+ASSERT NOT x_18 OR x_13 OR x_5;
+ASSERT x_1 OR x_3 OR NOT x_19;
+ASSERT NOT x_19 OR NOT x_5 OR x_6;
+ASSERT NOT x_20 OR x_8 OR NOT x_2;
+ASSERT x_17 OR NOT x_8 OR NOT x_13;
+ASSERT x_7 OR NOT x_11 OR NOT x_12;
+ASSERT NOT x_10 OR NOT x_14 OR NOT x_20;
+ASSERT NOT x_1 OR x_16 OR NOT x_12;
+ASSERT x_5 OR NOT x_3 OR x_9;
+ASSERT NOT x_18 OR x_8 OR x_14;
+ASSERT x_1 OR x_16 OR x_12;
+ASSERT x_20 OR NOT x_1 OR NOT x_16;
+ASSERT x_5 OR x_10 OR NOT x_13;
+ASSERT x_9 OR NOT x_10 OR x_6;
+ASSERT NOT x_12 OR x_10 OR NOT x_14;
+ASSERT NOT x_13 OR x_1 OR x_4;
+ASSERT NOT x_20 OR NOT x_7 OR x_3;
+ASSERT x_12 OR x_1 OR NOT x_10;
+ASSERT NOT x_1 OR NOT x_16 OR x_7;
+ASSERT x_11 OR NOT x_6 OR NOT x_4;
+ASSERT x_1 OR x_16 OR NOT x_20;
+ASSERT x_9 OR x_7 OR x_15;
+ASSERT NOT x_6 OR x_17 OR x_10;
+ASSERT x_8 OR x_9 OR x_17;
+ASSERT x_18 OR x_11 OR x_10;
+ASSERT x_7 OR x_1 OR NOT x_8;
+ASSERT NOT x_5 OR NOT x_12 OR x_18;
+ASSERT NOT x_6 OR x_2 OR x_15;
+ASSERT x_2 OR x_18 OR x_1;
+ASSERT NOT x_7 OR NOT x_13 OR x_16;
+ASSERT x_18 OR x_19 OR x_9;
+ASSERT x_9 OR NOT x_14 OR x_18;
+ASSERT x_14 OR x_12 OR NOT x_5;
+ASSERT NOT x_13 OR NOT x_7 OR NOT x_14;
+ASSERT NOT x_1 OR x_8 OR NOT x_16;
+ASSERT NOT x_11 OR x_4 OR x_7;
+ASSERT NOT x_4 OR x_20 OR x_5;
+ASSERT NOT x_5 OR x_2 OR x_12;
+ASSERT NOT x_5 OR x_13 OR NOT x_18;
+ASSERT NOT x_18 OR x_9 OR x_1;
+ASSERT x_10 OR NOT x_11 OR x_16;
+
+
+QUERY FALSE;
diff --git a/test/regress/regress0/uflia/DRAGON_11_e1_2450.ec.minimized.smt2 b/test/regress/regress0/uflia/DRAGON_11_e1_2450.ec.minimized.smt2
new file mode 100644
index 0000000..ab8e5d1
--- /dev/null
+++ b/test/regress/regress0/uflia/DRAGON_11_e1_2450.ec.minimized.smt2
@@ -0,0 +1,104 @@
+(set-logic QF_UFLIA)
+(declare-fun _base () Int)
+(declare-fun _n () Int)
+(assert (let ((.def_5 (<= 0 _n)))
+.def_5
+))
+(declare-fun ___z2z___ (Int) Bool)
+(declare-fun ___z3z___ (Int) Bool)
+(declare-fun ___z4z___ (Int) Bool)
+(declare-fun ___z5z___ (Int) Bool)
+(declare-fun ___z6z___ (Int) Bool)
+(declare-fun ___z7z___ (Int) Bool)
+(declare-fun ___z8z___ (Int) Bool)
+(declare-fun ___z9z___ (Int) Bool)
+(declare-fun ___z10z___ (Int) Bool)
+(declare-fun ___z11z___ (Int) Bool)
+(declare-fun ___z12z___ (Int) Bool)
+(declare-fun ___z13z___ (Int) Bool)
+(declare-fun ___z14z___ (Int) Int)
+(declare-fun ___z15z___ (Int) Bool)
+(declare-fun ___z16z___ (Int) Int)
+(declare-fun ___z17z___ (Int) Int)
+(declare-fun ___z18z___ (Int) Int)
+(declare-fun ___z19z___ (Int) Int)
+(declare-fun ___z20z___ (Int) Int)
+(declare-fun ___z22z___ (Int) Bool)
+(declare-fun ___z23z___ (Int) Bool)
+(declare-fun ___z24z___ (Int) Bool)
+(declare-fun ___z25z___ (Int) Bool)
+(declare-fun ___z26z___ (Int) Bool)
+(declare-fun ___z27z___ (Int) Bool)
+(declare-fun ___z28z___ (Int) Bool)
+(declare-fun ___z29z___ (Int) Bool)
+(declare-fun ___z30z___ (Int) Bool)
+(declare-fun ___z31z___ (Int) Bool)
+(declare-fun ___z32z___ (Int) Bool)
+(declare-fun ___z33z___ (Int) Bool)
+(declare-fun ___z34z___ (Int) Bool)
+(declare-fun ___z35z___ (Int) Int)
+(declare-fun ___z36z___ (Int) Bool)
+(declare-fun ___z37z___ (Int) Int)
+
+
+(assert (let ((.def_1132 (___z29z___ (- 1))))
+(let ((.def_1126 (___z20z___ (- 2))))
+(let ((.def_1127 (<= 1 .def_1126)))
+(let ((.def_1124 (___z19z___ (- 2))))
+(let ((.def_1125 (= .def_1124 0)))
+(let ((.def_1128 (and .def_1125 .def_1127)))
+(let ((.def_1106 (___z17z___ (- 2))))
+(let ((.def_1107 (= .def_1106 0)))
+(let ((.def_1129 (and .def_1107 .def_1128)))
+(let ((.def_1122 (___z16z___ (- 2))))
+(let ((.def_1123 (= .def_1122 0)))
+(let ((.def_1130 (and .def_1123 .def_1129)))
+(let ((.def_1108 (___z18z___ (- 2))))
+(let ((.def_1114 (= .def_1108 0)))
+(let ((.def_1131 (and .def_1114 .def_1130)))
+(let ((.def_1133 (= .def_1131 .def_1132)))
+.def_1133
+)))))))))))))))))
+(push 1)
+(check-sat)
+(pop 1)
+(assert (let ((.def_2016 (___z16z___ (- 3))))
+(let ((.def_2188 (+ (- 1) .def_2016)))
+(let ((.def_2048 (___z34z___ (- 2))))
+(let ((.def_2189 (ite .def_2048 .def_2188 .def_2016)))
+(let ((.def_2057 (___z13z___ (- 2))))
+(let ((.def_2190 (ite .def_2057 .def_2189 .def_2016)))
+(let ((.def_2036 (___z30z___ (- 2))))
+(let ((.def_2191 (ite .def_2036 0 .def_2016)))
+(let ((.def_2064 (___z9z___ (- 2))))
+(let ((.def_2192 (ite .def_2064 .def_2191 .def_2190)))
+(let ((.def_2193 (___z25z___ (- 2))))
+(let ((.def_2194 (ite .def_2193 .def_2188 .def_2016)))
+(let ((.def_2074 (___z4z___ (- 2))))
+(let ((.def_2195 (ite .def_2074 .def_2194 .def_2192)))
+(let ((.def_2196 (___z24z___ (- 2))))
+(let ((.def_2197 (ite .def_2196 0 .def_2016)))
+(let ((.def_2076 (___z3z___ (- 2))))
+(let ((.def_2198 (ite .def_2076 .def_2197 .def_2195)))
+(let ((.def_2199 (+ 1 .def_2016)))
+(let ((.def_2200 (___z23z___ (- 2))))
+(let ((.def_2201 (ite .def_2200 .def_2199 .def_2016)))
+(let ((.def_2078 (___z2z___ (- 2))))
+(let ((.def_2202 (ite .def_2078 .def_2201 .def_2198)))
+(let ((.def_2052 (= _base (- 2))))
+(let ((.def_2203 (ite .def_2052 0 .def_2202)))
+(let ((.def_1122 (___z16z___ (- 2))))
+(let ((.def_2204 (= .def_1122 .def_2203)))
+.def_2204
+))))))))))))))))))))))))))))
+
+(push 1)
+(assert (let ((.def_2052 (= _base (- 2))))
+(let ((.def_2278 (not .def_2052)))
+(let ((.def_997 (___z15z___ 0)))
+(let ((.def_2290 (or .def_997 .def_2278)))
+(let ((.def_2291 (not .def_2290)))
+.def_2291
+))))))
+(check-sat)
+(pop 1)
diff --git a/test/regress/regress0/uflia/DRAGON_11_e1_2450.ec.minimized.smt2.expect b/test/regress/regress0/uflia/DRAGON_11_e1_2450.ec.minimized.smt2.expect
new file mode 100644
index 0000000..9403b1a
--- /dev/null
+++ b/test/regress/regress0/uflia/DRAGON_11_e1_2450.ec.minimized.smt2.expect
@@ -0,0 +1,3 @@
+% COMMAND-LINE: --incremental
+% EXPECT: sat
+% EXPECT: sat
diff --git a/test/regress/regress0/uflia/FIREFLY_3_e2_2236_e7_3681.ec.core.smt2 b/test/regress/regress0/uflia/FIREFLY_3_e2_2236_e7_3681.ec.core.smt2
new file mode 100644
index 0000000..0274e43
--- /dev/null
+++ b/test/regress/regress0/uflia/FIREFLY_3_e2_2236_e7_3681.ec.core.smt2
@@ -0,0 +1,29 @@
+(set-logic QF_UFLIA)
+(set-info :smt-lib-version 2.0)
+(declare-fun _base () Int)
+(declare-fun _n () Int)
+(declare-fun ___z3z___ (Int) Bool)
+(declare-fun ___z4z___ (Int) Bool)
+(declare-fun ___z6z___ (Int) Bool)
+(declare-fun ___z8z___ (Int) Bool)
+(declare-fun ___z9z___ (Int) Bool)
+(declare-fun ___z11z___ (Int) Bool)
+(declare-fun ___z12z___ (Int) Int)
+(declare-fun ___z14z___ (Int) Int)
+(declare-fun ___z15z___ (Int) Int)
+(declare-fun ___z16z___ (Int) Bool)
+(declare-fun ___z19z___ (Int) Bool)
+(declare-fun ___z20z___ (Int) Bool)
+(declare-fun ___z22z___ (Int) Bool)
+(declare-fun ___z24z___ (Int) Bool)
+(declare-fun ___z25z___ (Int) Bool)
+(assert (= (and (<= 1 (+ (___z14z___ (- 1)) (___z15z___ (- 1)))) (<= 1 (___z12z___ (- 1)))) (___z20z___ 0)))
+(assert (= (or (not (___z16z___ 0)) (<= 0 (___z15z___ 0))) (___z11z___ 0)))
+(assert (let ((?v_2 (___z14z___ (- 1))) (?v_0 (___z15z___ (- 1)))) (let ((?v_1 (+ 2 ?v_0))) (= (___z15z___ 0) (ite (= _base 0) 0 (ite (___z3z___ 0) (ite (___z19z___ 0) ?v_1 ?v_0) (ite (___z4z___ 0) (ite (___z20z___ 0) (+ 1 (+ ?v_2 (+ (- 1) ?v_0))) ?v_0) (ite (___z6z___ 0) (ite (___z22z___ 0) 0 ?v_0) (ite (___z8z___ 0) (ite (___z24z___ 0) ?v_1 ?v_0) (ite (___z9z___ 0) (ite (___z25z___ 0) (+ 1 (+ ?v_2 ?v_0)) ?v_0) ?v_0))))))))))
+(assert (= (and (<= 1 (+ (___z14z___ (- 1)) (___z15z___ (- 1)))) (<= 1 (___z12z___ (- 1)))) (___z25z___ 0)))
+(assert (= (or (not (___z16z___ (- 1))) (<= 0 (___z15z___ (- 1)))) (___z11z___ (- 1))))
+(assert (let ((?v_2 (___z14z___ (- 2))) (?v_0 (___z15z___ (- 2)))) (let ((?v_1 (+ 2 ?v_0))) (= (___z15z___ (- 1)) (ite (= _base (- 1)) 0 (ite (___z3z___ (- 1)) (ite (___z19z___ (- 1)) ?v_1 ?v_0) (ite (___z4z___ (- 1)) (ite (___z20z___ (- 1)) (+ 1 (+ ?v_2 (+ (- 1) ?v_0))) ?v_0) (ite (___z6z___ (- 1)) (ite (___z22z___ (- 1)) 0 ?v_0) (ite (___z8z___ (- 1)) (ite (___z24z___ (- 1)) ?v_1 ?v_0) (ite (___z9z___ (- 1)) (ite (___z25z___ (- 1)) (+ 1 (+ ?v_2 ?v_0)) ?v_0) ?v_0))))))))))
+(push 1)
+(assert (not (or (not (= _base (- 1))) (and (___z11z___ 0) (___z11z___ (- 1))))))
+(pop 1)
+(check-sat)
diff --git a/test/regress/regress0/uflia/FIREFLY_3_e2_2236_e7_3681.ec.core.smt2.expect b/test/regress/regress0/uflia/FIREFLY_3_e2_2236_e7_3681.ec.core.smt2.expect
new file mode 100644
index 0000000..85c1808
--- /dev/null
+++ b/test/regress/regress0/uflia/FIREFLY_3_e2_2236_e7_3681.ec.core.smt2.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --incremental
+% EXPECT: sat
diff --git a/test/regress/regress0/uflia/FIREFLY_luke_1b_e2_3049_e7_1173.ec.minimized.smt2 b/test/regress/regress0/uflia/FIREFLY_luke_1b_e2_3049_e7_1173.ec.minimized.smt2
new file mode 100644
index 0000000..248a056
--- /dev/null
+++ b/test/regress/regress0/uflia/FIREFLY_luke_1b_e2_3049_e7_1173.ec.minimized.smt2
@@ -0,0 +1,72 @@
+(set-logic QF_UFLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :status sat)
+(declare-fun _base () Int)
+(declare-fun _n () Int)
+(assert (<= 0 _n))
+(declare-fun ___z2z___ (Int) Bool)
+(declare-fun ___z3z___ (Int) Bool)
+(declare-fun ___z4z___ (Int) Bool)
+(declare-fun ___z5z___ (Int) Bool)
+(declare-fun ___z6z___ (Int) Bool)
+(declare-fun ___z7z___ (Int) Bool)
+(declare-fun ___z8z___ (Int) Bool)
+(declare-fun ___z9z___ (Int) Bool)
+(declare-fun ___z10z___ (Int) Int)
+(declare-fun ___z11z___ (Int) Bool)
+(declare-fun ___z12z___ (Int) Int)
+(declare-fun ___z13z___ (Int) Int)
+(declare-fun ___z14z___ (Int) Int)
+(declare-fun ___z15z___ (Int) Int)
+(declare-fun ___z16z___ (Int) Bool)
+(declare-fun ___z17z___ (Int) Bool)
+(declare-fun ___z18z___ (Int) Bool)
+(declare-fun ___z19z___ (Int) Bool)
+(declare-fun ___z20z___ (Int) Bool)
+(declare-fun ___z21z___ (Int) Bool)
+(declare-fun ___z22z___ (Int) Bool)
+(declare-fun ___z23z___ (Int) Bool)
+(declare-fun ___z24z___ (Int) Bool)
+(declare-fun ___z25z___ (Int) Int)
+(declare-fun ___z26z___ (Int) Bool)
+(assert (= (<= 1 (___z14z___ (- 1))) (___z20z___ 0)))
+(assert (= (or (not (___z16z___ 0)) (or (= (+ (___z14z___ (- 1)) (+ (___z15z___ (- 1)) (+ (___z13z___ (- 1)) (+ (___z12z___ (- 1)) (+ (* (- 1) (___z15z___ 0)) (+ (* (- 1) (___z14z___ 0)) (+ (* (- 1) (___z13z___ 0)) (* (- 1) (___z12z___ 0))))))))) 0) (= _base 0))) (___z11z___ 0)))
+(assert (= (= (___z15z___ (- 1)) 1) (___z21z___ 0)))
+(assert (let ((?v_0 (___z12z___ (- 1)))) (let ((?v_1 (+ (- 1) ?v_0))) (= (___z12z___ 0) (ite (= _base 0) (___z25z___ 0) (ite (___z2z___ 0) (ite (___z17z___ 0) ?v_1 ?v_0) (ite (___z3z___ 0) (ite (___z18z___ 0) ?v_1 ?v_0) (ite (___z4z___ 0) (ite (___z19z___ 0) ?v_1 ?v_0) (ite (___z7z___ 0) (ite (___z22z___ 0) ?v_1 ?v_0) (ite (___z8z___ 0) (ite (___z23z___ 0) ?v_1 ?v_0) (ite (___z9z___ 0) (ite (___z24z___ 0) ?v_1 ?v_0) ?v_0)))))))))))
+(assert (= (___z22z___ 0) (and (= (___z14z___ (- 1)) 0) (and (= (___z15z___ (- 1)) 0) (and (= (___z13z___ (- 1)) 0) (<= 1 (___z12z___ (- 1))))))))
+(assert (let ((?v_0 (___z13z___ (- 1)))) (let ((?v_1 (+ (- 1) ?v_0))) (= (___z13z___ 0) (ite (= _base 0) 0 (ite (___z3z___ 0) (ite (___z18z___ 0) ?v_1 ?v_0) (ite (___z5z___ 0) (ite (___z20z___ 0) (+ 1 ?v_0) ?v_0) (ite (___z7z___ 0) (ite (___z22z___ 0) 1 ?v_0) (ite (___z8z___ 0) (ite (___z23z___ 0) ?v_1 ?v_0) ?v_0)))))))))
+(assert (= (___z23z___ 0) (and (<= 1 (___z12z___ (- 1))) (<= 1 (___z13z___ (- 1))))))
+(assert (let ((?v_0 (___z14z___ (- 1)))) (let ((?v_1 (+ 1 ?v_0))) (= (___z14z___ 0) (ite (= _base 0) 0 (ite (___z2z___ 0) (ite (___z17z___ 0) ?v_1 ?v_0) (ite (___z4z___ 0) (ite (___z19z___ 0) 0 ?v_0) (ite (___z5z___ 0) (ite (___z20z___ 0) (+ (- 1) ?v_0) ?v_0) (ite (___z6z___ 0) (ite (___z21z___ 0) ?v_1 ?v_0) (ite (___z9z___ 0) (ite (___z24z___ 0) 0 ?v_0) ?v_0))))))))))
+(assert (= (___z24z___ 0) (and (<= 1 (___z12z___ (- 1))) (<= 1 (+ (___z14z___ (- 1)) (___z15z___ (- 1)))))))
+(assert (let ((?v_2 (___z14z___ (- 1))) (?v_0 (___z15z___ (- 1)))) (let ((?v_1 (+ 2 ?v_0))) (= (___z15z___ 0) (ite (= _base 0) 0 (ite (___z3z___ 0) (ite (___z18z___ 0) ?v_1 ?v_0) (ite (___z4z___ 0) (ite (___z19z___ 0) (+ 1 (+ ?v_2 (+ (- 1) ?v_0))) ?v_0) (ite (___z6z___ 0) (ite (___z21z___ 0) 0 ?v_0) (ite (___z8z___ 0) (ite (___z23z___ 0) ?v_1 ?v_0) (ite (___z9z___ 0) (ite (___z24z___ 0) (+ 1 (+ ?v_2 ?v_0)) ?v_0) ?v_0))))))))))
+(assert (= (___z25z___ 0) (ite (= _base 0) (___z10z___ 0) (___z25z___ (- 1)))))
+(assert (let ((?v_0 (= _base 0)) (?v_1 (___z26z___ 0))) (= (___z16z___ 0) (and (or (not ?v_0) ?v_1) (or ?v_0 (or ?v_1 (___z16z___ (- 1))))))))
+(assert (let ((?v_2 (___z9z___ 0)) (?v_0 (___z8z___ 0)) (?v_5 (___z7z___ 0)) (?v_14 (___z4z___ 0)) (?v_17 (___z3z___ 0)) (?v_19 (___z2z___ 0)) (?v_11 (___z5z___ 0)) (?v_8 (___z6z___ 0))) (let ((?v_3 (not ?v_2)) (?v_18 (not ?v_19)) (?v_20 (not ?v_17))) (let ((?v_15 (and ?v_20 ?v_18)) (?v_16 (not ?v_14))) (let ((?v_12 (and ?v_16 ?v_15)) (?v_13 (not ?v_11))) (let ((?v_9 (and ?v_13 ?v_12)) (?v_10 (not ?v_8))) (let ((?v_6 (and ?v_10 ?v_9)) (?v_7 (not ?v_5))) (let ((?v_1 (and ?v_7 ?v_6)) (?v_4 [...]
+(assert (= (___z17z___ 0) (and (= (___z14z___ (- 1)) 0) (and (= (___z15z___ (- 1)) 0) (and (= (___z13z___ (- 1)) 0) (<= 1 (___z12z___ (- 1))))))))
+(assert (= (___z18z___ 0) (and (<= 1 (___z12z___ (- 1))) (<= 1 (___z13z___ (- 1))))))
+(assert (= (___z19z___ 0) (and (<= 1 (___z12z___ (- 1))) (<= 1 (+ (___z14z___ (- 1)) (___z15z___ (- 1)))))))
+(assert (= (<= 1 (___z14z___ (- 2))) (___z20z___ (- 1))))
+(assert (= (or (not (___z16z___ (- 1))) (or (= (+ (___z14z___ (- 1)) (+ (___z15z___ (- 1)) (+ (___z13z___ (- 1)) (+ (___z12z___ (- 1)) (+ (* (- 1) (___z14z___ (- 2))) (+ (* (- 1) (___z15z___ (- 2))) (+ (* (- 1) (___z13z___ (- 2))) (* (- 1) (___z12z___ (- 2)))))))))) 0) (= _base (- 1)))) (___z11z___ (- 1))))
+(assert (= (= (___z15z___ (- 2)) 1) (___z21z___ (- 1))))
+(assert (let ((?v_0 (___z12z___ (- 2)))) (let ((?v_1 (+ (- 1) ?v_0))) (= (___z12z___ (- 1)) (ite (= _base (- 1)) (___z25z___ (- 1)) (ite (___z2z___ (- 1)) (ite (___z17z___ (- 1)) ?v_1 ?v_0) (ite (___z3z___ (- 1)) (ite (___z18z___ (- 1)) ?v_1 ?v_0) (ite (___z4z___ (- 1)) (ite (___z19z___ (- 1)) ?v_1 ?v_0) (ite (___z7z___ (- 1)) (ite (___z22z___ (- 1)) ?v_1 ?v_0) (ite (___z8z___ (- 1)) (ite (___z23z___ (- 1)) ?v_1 ?v_0) (ite (___z9z___ (- 1)) (ite (___z24z___ (- 1)) ?v_1 ?v_0) ?v_0)))))))))))
+(assert (= (___z22z___ (- 1)) (and (= (___z14z___ (- 2)) 0) (and (= (___z15z___ (- 2)) 0) (and (= (___z13z___ (- 2)) 0) (<= 1 (___z12z___ (- 2))))))))
+(assert (let ((?v_0 (___z13z___ (- 2)))) (let ((?v_1 (+ (- 1) ?v_0))) (= (___z13z___ (- 1)) (ite (= _base (- 1)) 0 (ite (___z3z___ (- 1)) (ite (___z18z___ (- 1)) ?v_1 ?v_0) (ite (___z5z___ (- 1)) (ite (___z20z___ (- 1)) (+ 1 ?v_0) ?v_0) (ite (___z7z___ (- 1)) (ite (___z22z___ (- 1)) 1 ?v_0) (ite (___z8z___ (- 1)) (ite (___z23z___ (- 1)) ?v_1 ?v_0) ?v_0)))))))))
+(assert (= (___z23z___ (- 1)) (and (<= 1 (___z12z___ (- 2))) (<= 1 (___z13z___ (- 2))))))
+(assert (let ((?v_0 (___z14z___ (- 2)))) (let ((?v_1 (+ 1 ?v_0))) (= (___z14z___ (- 1)) (ite (= _base (- 1)) 0 (ite (___z2z___ (- 1)) (ite (___z17z___ (- 1)) ?v_1 ?v_0) (ite (___z4z___ (- 1)) (ite (___z19z___ (- 1)) 0 ?v_0) (ite (___z5z___ (- 1)) (ite (___z20z___ (- 1)) (+ (- 1) ?v_0) ?v_0) (ite (___z6z___ (- 1)) (ite (___z21z___ (- 1)) ?v_1 ?v_0) (ite (___z9z___ (- 1)) (ite (___z24z___ (- 1)) 0 ?v_0) ?v_0))))))))))
+(assert (= (___z24z___ (- 1)) (and (<= 1 (___z12z___ (- 2))) (<= 1 (+ (___z14z___ (- 2)) (___z15z___ (- 2)))))))
+(assert (let ((?v_2 (___z14z___ (- 2))) (?v_0 (___z15z___ (- 2)))) (let ((?v_1 (+ 2 ?v_0))) (= (___z15z___ (- 1)) (ite (= _base (- 1)) 0 (ite (___z3z___ (- 1)) (ite (___z18z___ (- 1)) ?v_1 ?v_0) (ite (___z4z___ (- 1)) (ite (___z19z___ (- 1)) (+ 1 (+ ?v_2 (+ (- 1) ?v_0))) ?v_0) (ite (___z6z___ (- 1)) (ite (___z21z___ (- 1)) 0 ?v_0) (ite (___z8z___ (- 1)) (ite (___z23z___ (- 1)) ?v_1 ?v_0) (ite (___z9z___ (- 1)) (ite (___z24z___ (- 1)) (+ 1 (+ ?v_2 ?v_0)) ?v_0) ?v_0))))))))))
+
+;(assert (= _base (- 1)))
+(assert (= (___z25z___ (- 1)) (ite (= _base (- 1)) (___z10z___ (- 1)) (___z25z___ (- 2)))))
+;(assert (= (___z25z___ (- 1)) (___z10z___ (- 1))))
+;(assert (= (___z25z___ (- 1)) (___z25z___ (- 2))))
+
+(assert (let ((?v_0 (= _base (- 1))) (?v_1 (___z26z___ (- 1)))) (= (___z16z___ (- 1)) (and (or (not ?v_0) ?v_1) (or ?v_0 (or ?v_1 (___z16z___ (- 2))))))))
+(assert (let ((?v_19 (___z2z___ (- 1))) (?v_17 (___z3z___ (- 1))) (?v_14 (___z4z___ (- 1))) (?v_5 (___z7z___ (- 1))) (?v_0 (___z8z___ (- 1))) (?v_2 (___z9z___ (- 1))) (?v_11 (___z5z___ (- 1))) (?v_8 (___z6z___ (- 1)))) (let ((?v_4 (not ?v_0)) (?v_7 (not ?v_5)) (?v_10 (not ?v_8)) (?v_13 (not ?v_11)) (?v_16 (not ?v_14)) (?v_20 (not ?v_17)) (?v_18 (not ?v_19))) (let ((?v_15 (and ?v_20 ?v_18))) (let ((?v_12 (and ?v_16 ?v_15))) (let ((?v_9 (and ?v_13 ?v_12))) (let ((?v_6 (and ?v_10 ?v_9))) (l [...]
+(assert (= (___z17z___ (- 1)) (and (= (___z14z___ (- 2)) 0) (and (= (___z15z___ (- 2)) 0) (and (= (___z13z___ (- 2)) 0) (<= 1 (___z12z___ (- 2))))))))
+(assert (= (___z18z___ (- 1)) (and (<= 1 (___z12z___ (- 2))) (<= 1 (___z13z___ (- 2))))))
+(assert (= (___z19z___ (- 1)) (and (<= 1 (___z12z___ (- 2))) (<= 1 (+ (___z14z___ (- 2)) (___z15z___ (- 2)))))))
+(assert (not (or (not (= _base (- 1))) (and (___z11z___ 0) (___z11z___ (- 1))))))
+(assert true)
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/uflia/Makefile.am b/test/regress/regress0/uflia/Makefile.am
new file mode 100644
index 0000000..db67df1
--- /dev/null
+++ b/test/regress/regress0/uflia/Makefile.am
@@ -0,0 +1,78 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+
+# Regression tests for SMT inputs
+SMT_TESTS = \
+	xs-09-16-3-4-1-5.delta01.smt \
+	xs-09-16-3-4-1-5.delta02.smt \
+	xs-09-16-3-4-1-5.delta03.smt \
+	xs-09-16-3-4-1-5.delta04.smt \
+	error1.smt \
+	error0.delta01.smt \
+	simple_cyclic2.smt2 \
+	error30.smt
+
+# Regression tests for SMT2 inputs
+SMT2_TESTS = \
+	check01.smt2 \
+	check02.smt2 \
+	check03.smt2 \
+	check04.smt2 \
+	DRAGON_11_e1_2450.ec.minimized.smt2 \
+	FIREFLY_3_e2_2236_e7_3681.ec.core.smt2 \
+	FIREFLY_luke_1b_e2_3049_e7_1173.ec.minimized.smt2 \
+	stalmark_e7_27_e7_31.ec.minimized.smt2 \
+	stalmark_e7_27_e7_31.ec.smt2 \
+	tiny.smt2 \
+	speed2_e8_449_e8_517.ec.smt2 \
+	microwave21.ec.minimized.smt2
+#	simplify.javafe.ast.ArrayInit.35_without_quantification2.smt2
+#	javafe.ast.StandardPrettyPrint.319_no_forall.smt2
+#	javafe.ast.WhileStmt.447_no_forall.smt2
+
+# Regression tests for PL inputs
+CVC_TESTS = 
+
+# Regression tests derived from bug reports
+BUG_TESTS = 
+
+TESTS =	$(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(BUG_TESTS)
+
+# Necessary to get automake's attention when splitting TESTS into
+# SMT_TESTS, SMT2_TESTS, etc..
+EXTRA_DIST = $(TESTS) \
+	check02.smt2.expect \
+	check03.smt2.expect \
+	check04.smt2.expect \
+	DRAGON_11_e1_2450.ec.minimized.smt2.expect \
+	FIREFLY_3_e2_2236_e7_3681.ec.core.smt2.expect \
+	speed2_e8_449_e8_517.ec.smt2.expect \
+	stalmark_e7_27_e7_31.ec.minimized.smt2.expect \
+	stalmark_e7_27_e7_31.ec.smt2.expect \
+	tiny.smt2.expect
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/uflia/Makefile.in b/test/regress/regress0/uflia/Makefile.in
new file mode 100644
index 0000000..c22a51e
--- /dev/null
+++ b/test/regress/regress0/uflia/Makefile.in
@@ -0,0 +1,1169 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+TESTS = $(SMT_TESTS) $(SMT2_TESTS) $(am__EXEEXT_1) $(am__EXEEXT_1)
+subdir = test/regress/regress0/uflia
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+am__EXEEXT_1 =
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+
+# Regression tests for SMT inputs
+SMT_TESTS = \
+	xs-09-16-3-4-1-5.delta01.smt \
+	xs-09-16-3-4-1-5.delta02.smt \
+	xs-09-16-3-4-1-5.delta03.smt \
+	xs-09-16-3-4-1-5.delta04.smt \
+	error1.smt \
+	error0.delta01.smt \
+	simple_cyclic2.smt2 \
+	error30.smt
+
+
+# Regression tests for SMT2 inputs
+SMT2_TESTS = \
+	check01.smt2 \
+	check02.smt2 \
+	check03.smt2 \
+	check04.smt2 \
+	DRAGON_11_e1_2450.ec.minimized.smt2 \
+	FIREFLY_3_e2_2236_e7_3681.ec.core.smt2 \
+	FIREFLY_luke_1b_e2_3049_e7_1173.ec.minimized.smt2 \
+	stalmark_e7_27_e7_31.ec.minimized.smt2 \
+	stalmark_e7_27_e7_31.ec.smt2 \
+	tiny.smt2 \
+	speed2_e8_449_e8_517.ec.smt2 \
+	microwave21.ec.minimized.smt2
+
+#	simplify.javafe.ast.ArrayInit.35_without_quantification2.smt2
+#	javafe.ast.StandardPrettyPrint.319_no_forall.smt2
+#	javafe.ast.WhileStmt.447_no_forall.smt2
+
+# Regression tests for PL inputs
+CVC_TESTS = 
+
+# Regression tests derived from bug reports
+BUG_TESTS = 
+
+# Necessary to get automake's attention when splitting TESTS into
+# SMT_TESTS, SMT2_TESTS, etc..
+EXTRA_DIST = $(TESTS) \
+	check02.smt2.expect \
+	check03.smt2.expect \
+	check04.smt2.expect \
+	DRAGON_11_e1_2450.ec.minimized.smt2.expect \
+	FIREFLY_3_e2_2236_e7_3681.ec.core.smt2.expect \
+	speed2_e8_449_e8_517.ec.smt2.expect \
+	stalmark_e7_27_e7_31.ec.minimized.smt2.expect \
+	stalmark_e7_27_e7_31.ec.smt2.expect \
+	tiny.smt2.expect
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/uflia/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/uflia/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+xs-09-16-3-4-1-5.delta01.smt.log: xs-09-16-3-4-1-5.delta01.smt
+	@p='xs-09-16-3-4-1-5.delta01.smt'; \
+	b='xs-09-16-3-4-1-5.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+xs-09-16-3-4-1-5.delta02.smt.log: xs-09-16-3-4-1-5.delta02.smt
+	@p='xs-09-16-3-4-1-5.delta02.smt'; \
+	b='xs-09-16-3-4-1-5.delta02.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+xs-09-16-3-4-1-5.delta03.smt.log: xs-09-16-3-4-1-5.delta03.smt
+	@p='xs-09-16-3-4-1-5.delta03.smt'; \
+	b='xs-09-16-3-4-1-5.delta03.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+xs-09-16-3-4-1-5.delta04.smt.log: xs-09-16-3-4-1-5.delta04.smt
+	@p='xs-09-16-3-4-1-5.delta04.smt'; \
+	b='xs-09-16-3-4-1-5.delta04.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+error1.smt.log: error1.smt
+	@p='error1.smt'; \
+	b='error1.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+error0.delta01.smt.log: error0.delta01.smt
+	@p='error0.delta01.smt'; \
+	b='error0.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple_cyclic2.smt2.log: simple_cyclic2.smt2
+	@p='simple_cyclic2.smt2'; \
+	b='simple_cyclic2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+error30.smt.log: error30.smt
+	@p='error30.smt'; \
+	b='error30.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+check01.smt2.log: check01.smt2
+	@p='check01.smt2'; \
+	b='check01.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+check02.smt2.log: check02.smt2
+	@p='check02.smt2'; \
+	b='check02.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+check03.smt2.log: check03.smt2
+	@p='check03.smt2'; \
+	b='check03.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+check04.smt2.log: check04.smt2
+	@p='check04.smt2'; \
+	b='check04.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+DRAGON_11_e1_2450.ec.minimized.smt2.log: DRAGON_11_e1_2450.ec.minimized.smt2
+	@p='DRAGON_11_e1_2450.ec.minimized.smt2'; \
+	b='DRAGON_11_e1_2450.ec.minimized.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+FIREFLY_3_e2_2236_e7_3681.ec.core.smt2.log: FIREFLY_3_e2_2236_e7_3681.ec.core.smt2
+	@p='FIREFLY_3_e2_2236_e7_3681.ec.core.smt2'; \
+	b='FIREFLY_3_e2_2236_e7_3681.ec.core.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+FIREFLY_luke_1b_e2_3049_e7_1173.ec.minimized.smt2.log: FIREFLY_luke_1b_e2_3049_e7_1173.ec.minimized.smt2
+	@p='FIREFLY_luke_1b_e2_3049_e7_1173.ec.minimized.smt2'; \
+	b='FIREFLY_luke_1b_e2_3049_e7_1173.ec.minimized.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+stalmark_e7_27_e7_31.ec.minimized.smt2.log: stalmark_e7_27_e7_31.ec.minimized.smt2
+	@p='stalmark_e7_27_e7_31.ec.minimized.smt2'; \
+	b='stalmark_e7_27_e7_31.ec.minimized.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+stalmark_e7_27_e7_31.ec.smt2.log: stalmark_e7_27_e7_31.ec.smt2
+	@p='stalmark_e7_27_e7_31.ec.smt2'; \
+	b='stalmark_e7_27_e7_31.ec.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tiny.smt2.log: tiny.smt2
+	@p='tiny.smt2'; \
+	b='tiny.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+speed2_e8_449_e8_517.ec.smt2.log: speed2_e8_449_e8_517.ec.smt2
+	@p='speed2_e8_449_e8_517.ec.smt2'; \
+	b='speed2_e8_449_e8_517.ec.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+microwave21.ec.minimized.smt2.log: microwave21.ec.minimized.smt2
+	@p='microwave21.ec.minimized.smt2'; \
+	b='microwave21.ec.minimized.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/uflia/check01.smt2 b/test/regress/regress0/uflia/check01.smt2
new file mode 100644
index 0000000..33be934
--- /dev/null
+++ b/test/regress/regress0/uflia/check01.smt2
@@ -0,0 +1,14 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+(set-logic QF_UFLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :status sat)
+
+(declare-fun f (Int) Bool)
+
+(assert (f 0))
+
+(push 1)
+(assert (not (f 0)))
+(pop 1)
+(check-sat)
diff --git a/test/regress/regress0/uflia/check02.smt2 b/test/regress/regress0/uflia/check02.smt2
new file mode 100644
index 0000000..0920170
--- /dev/null
+++ b/test/regress/regress0/uflia/check02.smt2
@@ -0,0 +1,33 @@
+(set-logic QF_UFLIA)
+(declare-fun b () Int)
+(declare-fun n () Int)
+(declare-fun f (Int) Bool)
+(declare-fun g (Int) Bool)
+
+(assert (<= 0 n))
+(push 1)
+
+(assert (or (g (- 1)) (= b 0)))
+
+(assert (or (= (- n b) 1) (not (or (= (- n b) 1) (f (- n 2))))))
+
+(check-sat)
+(pop 1)
+
+(push 1)
+(assert (or (g  (- n 1)) (= n b)))
+(assert (or (not (f n)) (not (= n b))))
+
+(assert (not (f (- n 2))))
+
+
+(assert (or (not (g (- n 1))) (not (= (- n b) 1))))
+
+(assert (or (not (g (- n 1))) (or (= (- n b) 1) (f (- n 2)))))
+
+
+
+(assert (or (f n) (and (not (f n)) (f n))))
+
+(check-sat)
+(pop 1)
\ No newline at end of file
diff --git a/test/regress/regress0/uflia/check02.smt2.expect b/test/regress/regress0/uflia/check02.smt2.expect
new file mode 100644
index 0000000..fe11817
--- /dev/null
+++ b/test/regress/regress0/uflia/check02.smt2.expect
@@ -0,0 +1,3 @@
+% COMMAND-LINE: --incremental
+% EXPECT: sat
+% EXPECT: unsat
diff --git a/test/regress/regress0/uflia/check03.smt2 b/test/regress/regress0/uflia/check03.smt2
new file mode 100644
index 0000000..f561e19
--- /dev/null
+++ b/test/regress/regress0/uflia/check03.smt2
@@ -0,0 +1,24 @@
+(set-logic QF_UFLIA)
+
+(declare-fun _n () Int)
+(declare-fun _f (Int) Bool)
+(declare-fun _g (Int) Bool)
+
+(assert (not (= _n 0)))
+
+(push 1)
+(assert (or (_g 1) (or (not (_g _n)) (not (_f _n)))))
+(check-sat)
+(pop 1)
+
+
+(assert
+  (or (and (_g _n) (_f _n))
+      (not (or (not (_g _n)) (not (_f _n))))))
+
+
+
+(assert (or  (not (_g _n)) (not (_g 0))))
+(assert (or  (not (_g _n)) (_g 0)))
+
+(check-sat)
diff --git a/test/regress/regress0/uflia/check03.smt2.expect b/test/regress/regress0/uflia/check03.smt2.expect
new file mode 100644
index 0000000..fe11817
--- /dev/null
+++ b/test/regress/regress0/uflia/check03.smt2.expect
@@ -0,0 +1,3 @@
+% COMMAND-LINE: --incremental
+% EXPECT: sat
+% EXPECT: unsat
diff --git a/test/regress/regress0/uflia/check04.smt2 b/test/regress/regress0/uflia/check04.smt2
new file mode 100644
index 0000000..61bc8a5
--- /dev/null
+++ b/test/regress/regress0/uflia/check04.smt2
@@ -0,0 +1,18 @@
+(set-logic QF_LIA)
+(declare-fun _b () Int)
+(declare-fun _n () Int)
+(declare-fun _x () Bool)
+
+(assert (<= 2 _n))
+(assert  (not (= _b 0)))
+
+(push 1)
+(assert (or (= _n 1) (or _x (= _b 0))))
+(check-sat)
+(pop 1)
+
+(assert (or (= _n 1) (or _x (= _b 0))))
+
+(assert (or (not _x) (= _n 1)))
+
+(check-sat)
diff --git a/test/regress/regress0/uflia/check04.smt2.expect b/test/regress/regress0/uflia/check04.smt2.expect
new file mode 100644
index 0000000..fe11817
--- /dev/null
+++ b/test/regress/regress0/uflia/check04.smt2.expect
@@ -0,0 +1,3 @@
+% COMMAND-LINE: --incremental
+% EXPECT: sat
+% EXPECT: unsat
diff --git a/test/regress/regress0/uflia/error0.delta01.smt b/test/regress/regress0/uflia/error0.delta01.smt
new file mode 100644
index 0000000..cc20506
--- /dev/null
+++ b/test/regress/regress0/uflia/error0.delta01.smt
@@ -0,0 +1,78 @@
+(benchmark B_
+:logic QF_UFLIA
+:extrafuns ((format Int Int))
+:extrafuns ((arg1 Int))
+:extrafuns ((fmt1 Int))
+:extrafuns ((s_count Int Int))
+:extrafuns ((fmt0 Int))
+:extrafuns ((x_count Int Int))
+:status sat
+:formula
+(flet ($n1 true)
+(let (?n2 1)
+(let (?n3 (~ ?n2))
+(let (?n4 (* ?n3 fmt1))
+(let (?n5 (+ ?n4 fmt0))
+(let (?n6 8)
+(let (?n7 (~ ?n6))
+(flet ($n8 (>= ?n5 ?n7))
+(let (?n9 6)
+(let (?n10 (x_count ?n9))
+(let (?n11 7)
+(let (?n12 (x_count ?n11))
+(let (?n13 (* ?n3 ?n12))
+(let (?n14 (+ ?n10 ?n13))
+(let (?n15 0)
+(flet ($n16 (>= ?n14 ?n15))
+(flet ($n17 (>= fmt1 ?n11))
+(flet ($n18 (<= arg1 ?n9))
+(let (?n19 2)
+(let (?n20 (~ ?n19))
+(let (?n21 (* ?n3 fmt0))
+(let (?n22 (+ fmt1 ?n20 ?n21))
+(let (?n23 (s_count ?n22))
+(let (?n24 5)
+(let (?n25 (s_count ?n24))
+(let (?n26 (* ?n3 ?n25))
+(let (?n27 (+ ?n23 ?n26))
+(flet ($n28 (= ?n15 ?n27))
+(flet ($n29 (not $n28))
+(let (?n30 (~ ?n11))
+(flet ($n31 (<= ?n5 ?n30))
+(flet ($n32 false)
+(let (?n33 (+ arg1 ?n21))
+(flet ($n34 (<= ?n33 ?n2))
+(let (?n35 (+ ?n4 arg1))
+(flet ($n36 (<= ?n35 ?n15))
+(flet ($n37 (or $n32 $n32 $n34 $n36))
+(let (?n38 (x_count ?n2))
+(flet ($n39 (>= ?n38 ?n15))
+(let (?n40 (format ?n11))
+(flet ($n41 (<= ?n40 ?n15))
+(let (?n42 (x_count ?n22))
+(let (?n43 (+ ?n13 ?n42))
+(flet ($n44 (= ?n15 ?n43))
+(let (?n45 (s_count ?n9))
+(let (?n46 (* ?n3 ?n45))
+(let (?n47 (+ ?n23 ?n46))
+(flet ($n48 (= ?n15 ?n47))
+(flet ($n49 (or $n32 $n32 $n32 $n32 $n32 $n39 $n44 $n48))
+(let (?n50 (+ ?n2 fmt1))
+(let (?n51 (format ?n50))
+(flet ($n52 (>= ?n51 ?n15))
+(let (?n53 4)
+(let (?n54 (format ?n53))
+(flet ($n55 (>= ?n54 ?n15))
+(let (?n56 9)
+(let (?n57 (format ?n56))
+(flet ($n58 (<= ?n57 ?n15))
+(let (?n59 (format fmt1))
+(flet ($n60 (>= ?n59 ?n15))
+(let (?n61 12)
+(let (?n62 (format ?n61))
+(flet ($n63 (>= ?n62 ?n15))
+(let (?n64 (format arg1))
+(flet ($n65 (= ?n15 ?n64))
+(flet ($n66 (and $n1 $n8 $n16 $n17 $n18 $n29 $n31 $n37 $n39 $n41 $n49 $n52 $n55 $n58 $n60 $n63 $n65))
+$n66
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/uflia/error1.smt b/test/regress/regress0/uflia/error1.smt
new file mode 100644
index 0000000..7afffaa
--- /dev/null
+++ b/test/regress/regress0/uflia/error1.smt
@@ -0,0 +1,701 @@
+(benchmark fuzzsmt
+:logic QF_UFLIA
+:status sat
+:extrafuns ((f0 Int Int Int Int))
+:extrafuns ((f1 Int Int))
+:extrapreds ((p0 Int Int))
+:extrafuns ((v0 Int))
+:extrafuns ((v1 Int))
+:extrafuns ((v2 Int))
+:formula
+(let (?e3 1)
+(let (?e4 2)
+(let (?e5 (f1 v1))
+(let (?e6 (+ v2 v2))
+(let (?e7 (ite (p0 ?e6 v1) 1 0))
+(let (?e8 (ite (p0 ?e5 v1) 1 0))
+(let (?e9 (+ ?e6 ?e8))
+(let (?e10 (ite (p0 v1 ?e6) 1 0))
+(let (?e11 (ite (p0 v2 ?e8) 1 0))
+(let (?e12 (* (~ ?e4) ?e6))
+(let (?e13 (+ v1 ?e5))
+(let (?e14 (* ?e4 ?e12))
+(let (?e15 (f0 v2 ?e5 v0))
+(let (?e16 (ite (p0 ?e5 ?e6) 1 0))
+(let (?e17 (+ ?e7 ?e16))
+(let (?e18 (+ ?e10 ?e12))
+(let (?e19 (- ?e13 ?e12))
+(let (?e20 (* ?e19 (~ ?e4)))
+(let (?e21 (+ ?e13 ?e18))
+(let (?e22 (f0 ?e5 ?e17 ?e5))
+(let (?e23 (* ?e17 ?e4))
+(let (?e24 (ite (p0 ?e9 ?e19) 1 0))
+(let (?e25 (~ ?e6))
+(let (?e26 (f1 ?e6))
+(let (?e27 (* ?e25 (~ ?e3)))
+(flet ($e28 (< ?e7 ?e6))
+(flet ($e29 (> ?e12 ?e10))
+(flet ($e30 (distinct ?e7 ?e9))
+(flet ($e31 (<= v2 v2))
+(flet ($e32 (>= ?e6 ?e27))
+(flet ($e33 (distinct ?e11 ?e20))
+(flet ($e34 (> ?e25 ?e23))
+(flet ($e35 (< ?e7 ?e22))
+(flet ($e36 (>= ?e24 ?e10))
+(flet ($e37 (>= ?e24 ?e23))
+(flet ($e38 (distinct ?e5 ?e25))
+(flet ($e39 (= ?e16 ?e27))
+(flet ($e40 (> ?e21 ?e16))
+(flet ($e41 (> ?e7 ?e12))
+(flet ($e42 (distinct ?e22 ?e22))
+(flet ($e43 (= v2 ?e16))
+(flet ($e44 (>= ?e23 ?e7))
+(flet ($e45 (= ?e12 ?e8))
+(flet ($e46 (<= ?e13 ?e12))
+(flet ($e47 (< ?e12 ?e24))
+(flet ($e48 (< ?e13 ?e6))
+(flet ($e49 (> ?e15 ?e19))
+(flet ($e50 (> ?e25 ?e18))
+(flet ($e51 (>= ?e15 ?e7))
+(flet ($e52 (distinct ?e8 ?e20))
+(flet ($e53 (= ?e18 ?e5))
+(flet ($e54 (> ?e13 ?e15))
+(flet ($e55 (= ?e14 ?e16))
+(flet ($e56 (>= v0 ?e21))
+(flet ($e57 (= v1 ?e10))
+(flet ($e58 (distinct ?e26 ?e22))
+(flet ($e59 (> ?e18 ?e5))
+(flet ($e60 (< ?e11 ?e10))
+(flet ($e61 (>= ?e8 ?e11))
+(flet ($e62 (distinct ?e23 ?e21))
+(flet ($e63 (p0 v1 ?e20))
+(flet ($e64 (< ?e8 ?e11))
+(flet ($e65 (<= ?e26 ?e12))
+(flet ($e66 (= ?e21 ?e6))
+(flet ($e67 (distinct ?e21 ?e21))
+(flet ($e68 (>= v1 ?e17))
+(let (?e69 (ite $e59 ?e16 ?e12))
+(let (?e70 (ite $e47 ?e9 ?e19))
+(let (?e71 (ite $e64 ?e9 ?e25))
+(let (?e72 (ite $e63 v2 ?e25))
+(let (?e73 (ite $e31 ?e22 ?e15))
+(let (?e74 (ite $e66 ?e23 ?e20))
+(let (?e75 (ite $e57 ?e15 ?e9))
+(let (?e76 (ite $e39 ?e21 ?e75))
+(let (?e77 (ite $e62 v0 ?e11))
+(let (?e78 (ite $e50 ?e17 ?e71))
+(let (?e79 (ite $e38 ?e6 v0))
+(let (?e80 (ite $e62 ?e18 v0))
+(let (?e81 (ite $e29 ?e70 ?e13))
+(let (?e82 (ite $e54 ?e19 ?e20))
+(let (?e83 (ite $e57 ?e19 ?e77))
+(let (?e84 (ite $e41 ?e79 v2))
+(let (?e85 (ite $e56 ?e84 v2))
+(let (?e86 (ite $e47 ?e7 ?e15))
+(let (?e87 (ite $e49 ?e27 ?e27))
+(let (?e88 (ite $e45 ?e14 ?e16))
+(let (?e89 (ite $e42 ?e26 ?e5))
+(let (?e90 (ite $e51 ?e10 ?e12))
+(let (?e91 (ite $e46 ?e26 ?e16))
+(let (?e92 (ite $e35 ?e24 v1))
+(let (?e93 (ite $e32 ?e8 ?e91))
+(let (?e94 (ite $e30 ?e80 ?e15))
+(let (?e95 (ite $e56 ?e75 ?e27))
+(let (?e96 (ite $e64 ?e79 ?e19))
+(let (?e97 (ite $e44 ?e77 ?e84))
+(let (?e98 (ite $e62 ?e25 ?e71))
+(let (?e99 (ite $e65 ?e91 ?e21))
+(let (?e100 (ite $e33 ?e97 ?e14))
+(let (?e101 (ite $e45 ?e90 ?e7))
+(let (?e102 (ite $e41 ?e78 ?e89))
+(let (?e103 (ite $e36 ?e7 ?e81))
+(let (?e104 (ite $e48 ?e74 ?e16))
+(let (?e105 (ite $e31 ?e24 ?e81))
+(let (?e106 (ite $e40 ?e83 ?e71))
+(let (?e107 (ite $e67 ?e11 ?e10))
+(let (?e108 (ite $e52 ?e104 ?e76))
+(let (?e109 (ite $e55 ?e14 ?e14))
+(let (?e110 (ite $e61 ?e102 ?e80))
+(let (?e111 (ite $e34 ?e74 v2))
+(let (?e112 (ite $e54 ?e21 ?e106))
+(let (?e113 (ite $e28 ?e93 ?e20))
+(let (?e114 (ite $e37 ?e8 ?e83))
+(let (?e115 (ite $e55 ?e113 ?e89))
+(let (?e116 (ite $e58 ?e7 ?e25))
+(let (?e117 (ite $e60 ?e7 ?e75))
+(let (?e118 (ite $e43 ?e75 ?e16))
+(let (?e119 (ite $e53 ?e74 ?e26))
+(let (?e120 (ite $e68 ?e76 ?e25))
+(flet ($e121 (< ?e90 ?e9))
+(flet ($e122 (distinct ?e99 v0))
+(flet ($e123 (= ?e116 ?e23))
+(flet ($e124 (= ?e86 ?e99))
+(flet ($e125 (>= ?e78 ?e18))
+(flet ($e126 (> ?e99 ?e75))
+(flet ($e127 (<= ?e84 ?e107))
+(flet ($e128 (>= ?e9 ?e69))
+(flet ($e129 (= ?e95 ?e79))
+(flet ($e130 (p0 ?e103 ?e16))
+(flet ($e131 (<= ?e83 ?e104))
+(flet ($e132 (p0 ?e119 ?e97))
+(flet ($e133 (p0 ?e96 ?e89))
+(flet ($e134 (<= ?e100 ?e21))
+(flet ($e135 (= ?e102 ?e18))
+(flet ($e136 (<= ?e81 ?e16))
+(flet ($e137 (distinct ?e70 ?e94))
+(flet ($e138 (= ?e114 ?e112))
+(flet ($e139 (= ?e107 ?e89))
+(flet ($e140 (p0 ?e110 v2))
+(flet ($e141 (< ?e21 ?e114))
+(flet ($e142 (p0 ?e20 v2))
+(flet ($e143 (< ?e100 ?e94))
+(flet ($e144 (distinct ?e94 ?e26))
+(flet ($e145 (= ?e109 ?e88))
+(flet ($e146 (= ?e16 ?e100))
+(flet ($e147 (= ?e99 ?e87))
+(flet ($e148 (<= ?e87 ?e86))
+(flet ($e149 (p0 ?e73 ?e96))
+(flet ($e150 (> ?e12 ?e94))
+(flet ($e151 (distinct ?e95 ?e71))
+(flet ($e152 (distinct ?e19 ?e101))
+(flet ($e153 (p0 ?e84 ?e96))
+(flet ($e154 (= ?e99 ?e111))
+(flet ($e155 (p0 ?e14 ?e118))
+(flet ($e156 (<= ?e70 ?e25))
+(flet ($e157 (= ?e19 ?e98))
+(flet ($e158 (< ?e99 ?e90))
+(flet ($e159 (>= ?e14 ?e15))
+(flet ($e160 (<= v2 ?e120))
+(flet ($e161 (<= ?e21 ?e75))
+(flet ($e162 (< ?e114 ?e6))
+(flet ($e163 (> ?e99 ?e116))
+(flet ($e164 (<= ?e89 ?e11))
+(flet ($e165 (distinct ?e9 ?e10))
+(flet ($e166 (> ?e27 ?e97))
+(flet ($e167 (< ?e119 ?e10))
+(flet ($e168 (< ?e69 ?e79))
+(flet ($e169 (<= ?e22 ?e7))
+(flet ($e170 (= ?e117 ?e17))
+(flet ($e171 (>= ?e72 ?e16))
+(flet ($e172 (>= ?e12 ?e114))
+(flet ($e173 (distinct ?e119 ?e27))
+(flet ($e174 (<= ?e72 ?e119))
+(flet ($e175 (= ?e119 ?e118))
+(flet ($e176 (distinct ?e80 ?e73))
+(flet ($e177 (> ?e10 ?e18))
+(flet ($e178 (> ?e115 ?e15))
+(flet ($e179 (= ?e13 ?e72))
+(flet ($e180 (>= ?e110 ?e111))
+(flet ($e181 (< v0 ?e87))
+(flet ($e182 (< ?e72 ?e70))
+(flet ($e183 (<= ?e13 ?e9))
+(flet ($e184 (>= ?e7 ?e20))
+(flet ($e185 (<= ?e77 ?e23))
+(flet ($e186 (< ?e105 ?e102))
+(flet ($e187 (<= ?e78 ?e109))
+(flet ($e188 (distinct ?e89 ?e97))
+(flet ($e189 (p0 ?e118 ?e97))
+(flet ($e190 (> ?e81 ?e111))
+(flet ($e191 (> ?e14 ?e78))
+(flet ($e192 (< ?e101 ?e97))
+(flet ($e193 (distinct ?e12 ?e16))
+(flet ($e194 (< ?e113 ?e92))
+(flet ($e195 (>= ?e100 ?e87))
+(flet ($e196 (>= ?e103 ?e12))
+(flet ($e197 (p0 ?e116 ?e13))
+(flet ($e198 (>= ?e85 ?e13))
+(flet ($e199 (p0 ?e107 ?e120))
+(flet ($e200 (> ?e96 ?e74))
+(flet ($e201 (<= ?e113 ?e113))
+(flet ($e202 (>= ?e16 ?e103))
+(flet ($e203 (>= ?e72 ?e11))
+(flet ($e204 (> ?e27 ?e25))
+(flet ($e205 (distinct ?e25 ?e15))
+(flet ($e206 (distinct v1 ?e85))
+(flet ($e207 (p0 ?e95 ?e75))
+(flet ($e208 (< ?e92 ?e84))
+(flet ($e209 (< ?e91 ?e115))
+(flet ($e210 (distinct ?e13 ?e75))
+(flet ($e211 (= ?e91 ?e69))
+(flet ($e212 (p0 ?e13 ?e23))
+(flet ($e213 (>= ?e96 ?e100))
+(flet ($e214 (>= ?e72 ?e111))
+(flet ($e215 (p0 ?e97 ?e112))
+(flet ($e216 (>= ?e78 ?e98))
+(flet ($e217 (= ?e120 ?e101))
+(flet ($e218 (<= ?e72 ?e71))
+(flet ($e219 (p0 ?e90 ?e103))
+(flet ($e220 (< ?e117 ?e113))
+(flet ($e221 (>= ?e118 ?e84))
+(flet ($e222 (> ?e11 ?e104))
+(flet ($e223 (< ?e77 ?e111))
+(flet ($e224 (<= ?e21 ?e7))
+(flet ($e225 (>= ?e16 ?e74))
+(flet ($e226 (<= ?e91 ?e74))
+(flet ($e227 (p0 v2 ?e70))
+(flet ($e228 (p0 ?e101 ?e83))
+(flet ($e229 (>= ?e10 ?e8))
+(flet ($e230 (> ?e110 ?e72))
+(flet ($e231 (< ?e84 ?e20))
+(flet ($e232 (p0 ?e79 ?e26))
+(flet ($e233 (= ?e113 ?e81))
+(flet ($e234 (p0 ?e14 ?e90))
+(flet ($e235 (distinct ?e96 ?e15))
+(flet ($e236 (distinct ?e96 ?e7))
+(flet ($e237 (p0 ?e87 ?e104))
+(flet ($e238 (= ?e110 ?e71))
+(flet ($e239 (< ?e70 ?e7))
+(flet ($e240 (>= ?e13 ?e112))
+(flet ($e241 (p0 ?e24 ?e93))
+(flet ($e242 (<= ?e102 ?e87))
+(flet ($e243 (p0 ?e73 ?e25))
+(flet ($e244 (distinct ?e24 ?e116))
+(flet ($e245 (< ?e84 ?e78))
+(flet ($e246 (<= ?e104 ?e100))
+(flet ($e247 (= ?e18 ?e74))
+(flet ($e248 (< ?e16 ?e8))
+(flet ($e249 (< ?e93 ?e25))
+(flet ($e250 (>= ?e88 ?e81))
+(flet ($e251 (>= ?e98 ?e109))
+(flet ($e252 (>= ?e21 ?e13))
+(flet ($e253 (p0 v2 ?e74))
+(flet ($e254 (distinct ?e24 ?e27))
+(flet ($e255 (>= ?e120 ?e111))
+(flet ($e256 (>= ?e81 ?e14))
+(flet ($e257 (<= ?e87 ?e21))
+(flet ($e258 (p0 ?e74 ?e12))
+(flet ($e259 (distinct ?e5 ?e9))
+(flet ($e260 (>= ?e105 ?e79))
+(flet ($e261 (<= v2 ?e108))
+(flet ($e262 (= ?e96 ?e6))
+(flet ($e263 (= ?e5 ?e77))
+(flet ($e264 (>= v0 ?e23))
+(flet ($e265 (= ?e107 ?e72))
+(flet ($e266 (= ?e110 ?e95))
+(flet ($e267 (< ?e90 ?e117))
+(flet ($e268 (= v2 ?e23))
+(flet ($e269 (<= ?e77 ?e12))
+(flet ($e270 (<= ?e104 ?e111))
+(flet ($e271 (= ?e93 ?e14))
+(flet ($e272 (p0 ?e72 ?e79))
+(flet ($e273 (distinct ?e8 ?e20))
+(flet ($e274 (p0 ?e96 ?e112))
+(flet ($e275 (= ?e92 ?e24))
+(flet ($e276 (>= ?e16 ?e22))
+(flet ($e277 (= ?e19 ?e10))
+(flet ($e278 (<= ?e20 ?e86))
+(flet ($e279 (< ?e116 ?e118))
+(flet ($e280 (>= ?e74 ?e5))
+(flet ($e281 (<= ?e79 ?e105))
+(flet ($e282 (< ?e115 ?e70))
+(flet ($e283 (<= ?e13 ?e103))
+(flet ($e284 (p0 ?e27 ?e87))
+(flet ($e285 (p0 v0 ?e88))
+(flet ($e286 (<= ?e81 ?e104))
+(flet ($e287 (= ?e6 ?e99))
+(flet ($e288 (= ?e114 ?e87))
+(flet ($e289 (distinct ?e77 ?e71))
+(flet ($e290 (distinct ?e15 ?e15))
+(flet ($e291 (< ?e79 ?e72))
+(flet ($e292 (< ?e19 ?e8))
+(flet ($e293 (p0 ?e109 ?e5))
+(flet ($e294 (p0 v1 ?e19))
+(flet ($e295 (p0 ?e75 ?e104))
+(flet ($e296 (>= ?e100 ?e110))
+(flet ($e297 (>= ?e101 ?e23))
+(flet ($e298 (distinct ?e21 ?e107))
+(flet ($e299 (= ?e27 ?e101))
+(flet ($e300 (distinct ?e116 v1))
+(flet ($e301 (> ?e22 ?e5))
+(flet ($e302 (distinct ?e102 ?e80))
+(flet ($e303 (p0 ?e112 ?e84))
+(flet ($e304 (<= ?e111 ?e78))
+(flet ($e305 (= ?e75 ?e9))
+(flet ($e306 (= ?e80 ?e20))
+(flet ($e307 (< ?e80 ?e80))
+(flet ($e308 (distinct ?e13 ?e9))
+(flet ($e309 (p0 ?e6 ?e14))
+(flet ($e310 (> ?e70 ?e91))
+(flet ($e311 (> ?e16 ?e8))
+(flet ($e312 (<= ?e13 ?e95))
+(flet ($e313 (> ?e92 ?e95))
+(flet ($e314 (< ?e96 ?e87))
+(flet ($e315 (= ?e91 ?e92))
+(flet ($e316 (>= ?e120 ?e117))
+(flet ($e317 (p0 ?e13 ?e93))
+(flet ($e318 (distinct ?e120 ?e24))
+(flet ($e319 (>= ?e15 ?e86))
+(flet ($e320 (> ?e94 ?e84))
+(flet ($e321 (> ?e20 ?e99))
+(flet ($e322 (< ?e23 ?e71))
+(flet ($e323 (= ?e119 ?e73))
+(flet ($e324 (<= ?e82 ?e94))
+(flet ($e325 (<= ?e108 ?e107))
+(flet ($e326 (p0 ?e13 ?e80))
+(flet ($e327 (<= ?e87 ?e102))
+(flet ($e328 (<= ?e74 ?e89))
+(flet ($e329 (= ?e73 ?e11))
+(flet ($e330 (distinct ?e15 ?e106))
+(flet ($e331 (<= ?e115 ?e110))
+(flet ($e332 (p0 v0 ?e69))
+(flet ($e333 (>= v1 ?e9))
+(flet ($e334 (> v1 v2))
+(flet ($e335 (< ?e80 ?e95))
+(flet ($e336 (>= ?e114 ?e69))
+(flet ($e337 (distinct ?e80 ?e118))
+(flet ($e338 (p0 ?e16 ?e91))
+(flet ($e339 (p0 ?e100 ?e85))
+(flet ($e340 (= ?e13 ?e73))
+(flet ($e341 (= ?e92 ?e12))
+(flet ($e342 (p0 ?e100 ?e72))
+(flet ($e343 (= ?e26 ?e119))
+(flet ($e344 (< ?e20 ?e20))
+(flet ($e345 (<= ?e100 ?e94))
+(flet ($e346 (> ?e114 ?e116))
+(flet ($e347 (p0 ?e102 ?e19))
+(flet ($e348 (= ?e113 ?e13))
+(flet ($e349 (distinct ?e108 ?e5))
+(flet ($e350 (< ?e14 ?e118))
+(flet ($e351 (< ?e72 ?e110))
+(flet ($e352 (> ?e83 ?e114))
+(flet ($e353 (distinct ?e106 ?e24))
+(flet ($e354 (<= ?e24 ?e83))
+(flet ($e355 (p0 ?e116 ?e101))
+(flet ($e356 (< ?e110 ?e96))
+(flet ($e357 (= ?e12 v0))
+(flet ($e358 (p0 ?e108 ?e113))
+(flet ($e359 (>= ?e27 ?e81))
+(flet ($e360 (<= ?e109 ?e75))
+(flet ($e361 (= ?e102 ?e26))
+(flet ($e362 (distinct ?e108 ?e104))
+(flet ($e363 (<= ?e108 ?e26))
+(flet ($e364 (<= ?e114 ?e69))
+(flet ($e365 (>= ?e113 ?e82))
+(flet ($e366 (= ?e115 v1))
+(flet ($e367 (= ?e25 ?e27))
+(flet ($e368 (p0 ?e27 ?e91))
+(flet ($e369 (<= ?e13 ?e116))
+(flet ($e370 (<= ?e87 ?e114))
+(flet ($e371 (< ?e25 ?e108))
+(flet ($e372 (= ?e108 ?e9))
+(flet ($e373 (p0 ?e89 ?e117))
+(flet ($e374 (<= ?e13 ?e19))
+(flet ($e375 (p0 ?e12 ?e26))
+(flet ($e376 (< ?e20 ?e91))
+(flet ($e377 (distinct ?e107 ?e76))
+(flet ($e378 (if_then_else $e180 $e123 $e342))
+(flet ($e379 (if_then_else $e151 $e330 $e232))
+(flet ($e380 (if_then_else $e136 $e175 $e130))
+(flet ($e381 (if_then_else $e362 $e250 $e56))
+(flet ($e382 (not $e337))
+(flet ($e383 (xor $e194 $e150))
+(flet ($e384 (iff $e44 $e65))
+(flet ($e385 (xor $e300 $e160))
+(flet ($e386 (xor $e158 $e241))
+(flet ($e387 (not $e286))
+(flet ($e388 (and $e168 $e55))
+(flet ($e389 (or $e143 $e153))
+(flet ($e390 (not $e289))
+(flet ($e391 (or $e191 $e235))
+(flet ($e392 (and $e42 $e184))
+(flet ($e393 (not $e170))
+(flet ($e394 (iff $e35 $e356))
+(flet ($e395 (xor $e128 $e207))
+(flet ($e396 (implies $e394 $e208))
+(flet ($e397 (not $e354))
+(flet ($e398 (not $e201))
+(flet ($e399 (if_then_else $e176 $e169 $e331))
+(flet ($e400 (and $e217 $e172))
+(flet ($e401 (and $e324 $e178))
+(flet ($e402 (iff $e387 $e279))
+(flet ($e403 (or $e204 $e374))
+(flet ($e404 (iff $e323 $e334))
+(flet ($e405 (xor $e302 $e247))
+(flet ($e406 (iff $e288 $e125))
+(flet ($e407 (or $e375 $e227))
+(flet ($e408 (and $e127 $e378))
+(flet ($e409 (iff $e58 $e284))
+(flet ($e410 (implies $e181 $e52))
+(flet ($e411 (implies $e166 $e385))
+(flet ($e412 (and $e41 $e306))
+(flet ($e413 (xor $e268 $e361))
+(flet ($e414 (and $e47 $e32))
+(flet ($e415 (iff $e228 $e339))
+(flet ($e416 (implies $e292 $e199))
+(flet ($e417 (implies $e252 $e39))
+(flet ($e418 (or $e37 $e351))
+(flet ($e419 (and $e209 $e49))
+(flet ($e420 (implies $e263 $e197))
+(flet ($e421 (if_then_else $e349 $e312 $e287))
+(flet ($e422 (implies $e353 $e249))
+(flet ($e423 (not $e388))
+(flet ($e424 (and $e296 $e310))
+(flet ($e425 (xor $e309 $e59))
+(flet ($e426 (and $e240 $e242))
+(flet ($e427 (if_then_else $e45 $e163 $e411))
+(flet ($e428 (not $e364))
+(flet ($e429 (if_then_else $e144 $e267 $e293))
+(flet ($e430 (if_then_else $e173 $e238 $e126))
+(flet ($e431 (implies $e338 $e48))
+(flet ($e432 (iff $e156 $e383))
+(flet ($e433 (or $e68 $e391))
+(flet ($e434 (xor $e262 $e304))
+(flet ($e435 (not $e318))
+(flet ($e436 (iff $e29 $e155))
+(flet ($e437 (not $e121))
+(flet ($e438 (implies $e389 $e36))
+(flet ($e439 (iff $e234 $e174))
+(flet ($e440 (iff $e253 $e314))
+(flet ($e441 (if_then_else $e137 $e278 $e355))
+(flet ($e442 (xor $e131 $e64))
+(flet ($e443 (or $e377 $e124))
+(flet ($e444 (implies $e346 $e122))
+(flet ($e445 (iff $e212 $e372))
+(flet ($e446 (implies $e195 $e277))
+(flet ($e447 (not $e430))
+(flet ($e448 (not $e192))
+(flet ($e449 (implies $e196 $e177))
+(flet ($e450 (or $e190 $e257))
+(flet ($e451 (iff $e215 $e412))
+(flet ($e452 (implies $e274 $e418))
+(flet ($e453 (if_then_else $e336 $e322 $e149))
+(flet ($e454 (if_then_else $e447 $e189 $e269))
+(flet ($e455 (not $e218))
+(flet ($e456 (xor $e152 $e224))
+(flet ($e457 (not $e358))
+(flet ($e458 (not $e60))
+(flet ($e459 (not $e424))
+(flet ($e460 (not $e398))
+(flet ($e461 (if_then_else $e380 $e291 $e453))
+(flet ($e462 (iff $e305 $e271))
+(flet ($e463 (if_then_else $e408 $e417 $e148))
+(flet ($e464 (not $e270))
+(flet ($e465 (and $e261 $e51))
+(flet ($e466 (or $e450 $e299))
+(flet ($e467 (iff $e301 $e154))
+(flet ($e468 (iff $e200 $e460))
+(flet ($e469 (and $e343 $e129))
+(flet ($e470 (iff $e313 $e400))
+(flet ($e471 (or $e433 $e347))
+(flet ($e472 (not $e451))
+(flet ($e473 (iff $e266 $e317))
+(flet ($e474 (and $e273 $e390))
+(flet ($e475 (and $e406 $e440))
+(flet ($e476 (implies $e223 $e233))
+(flet ($e477 (if_then_else $e298 $e185 $e344))
+(flet ($e478 (xor $e462 $e426))
+(flet ($e479 (and $e368 $e28))
+(flet ($e480 (implies $e319 $e466))
+(flet ($e481 (not $e348))
+(flet ($e482 (not $e134))
+(flet ($e483 (xor $e145 $e471))
+(flet ($e484 (xor $e439 $e171))
+(flet ($e485 (if_then_else $e369 $e198 $e295))
+(flet ($e486 (xor $e329 $e405))
+(flet ($e487 (iff $e290 $e221))
+(flet ($e488 (if_then_else $e373 $e415 $e219))
+(flet ($e489 (iff $e50 $e244))
+(flet ($e490 (and $e363 $e403))
+(flet ($e491 (or $e402 $e431))
+(flet ($e492 (not $e229))
+(flet ($e493 (implies $e470 $e280))
+(flet ($e494 (or $e489 $e220))
+(flet ($e495 (and $e188 $e67))
+(flet ($e496 (or $e53 $e165))
+(flet ($e497 (and $e427 $e206))
+(flet ($e498 (iff $e307 $e333))
+(flet ($e499 (if_then_else $e186 $e487 $e281))
+(flet ($e500 (iff $e360 $e442))
+(flet ($e501 (iff $e490 $e357))
+(flet ($e502 (iff $e392 $e211))
+(flet ($e503 (xor $e210 $e410))
+(flet ($e504 (iff $e239 $e486))
+(flet ($e505 (implies $e248 $e54))
+(flet ($e506 (implies $e465 $e492))
+(flet ($e507 (and $e494 $e255))
+(flet ($e508 (or $e285 $e352))
+(flet ($e509 (if_then_else $e264 $e399 $e316))
+(flet ($e510 (if_then_else $e34 $e508 $e448))
+(flet ($e511 (not $e203))
+(flet ($e512 (not $e246))
+(flet ($e513 (and $e366 $e371))
+(flet ($e514 (xor $e367 $e311))
+(flet ($e515 (iff $e141 $e226))
+(flet ($e516 (iff $e455 $e484))
+(flet ($e517 (iff $e164 $e62))
+(flet ($e518 (iff $e140 $e294))
+(flet ($e519 (and $e345 $e222))
+(flet ($e520 (xor $e135 $e519))
+(flet ($e521 (implies $e216 $e315))
+(flet ($e522 (or $e260 $e446))
+(flet ($e523 (xor $e520 $e522))
+(flet ($e524 (iff $e407 $e46))
+(flet ($e525 (xor $e275 $e256))
+(flet ($e526 (and $e420 $e423))
+(flet ($e527 (not $e61))
+(flet ($e528 (implies $e297 $e488))
+(flet ($e529 (or $e231 $e332))
+(flet ($e530 (and $e482 $e66))
+(flet ($e531 (and $e518 $e245))
+(flet ($e532 (not $e183))
+(flet ($e533 (and $e382 $e236))
+(flet ($e534 (iff $e456 $e422))
+(flet ($e535 (if_then_else $e413 $e524 $e379))
+(flet ($e536 (and $e436 $e401))
+(flet ($e537 (xor $e475 $e475))
+(flet ($e538 (implies $e437 $e498))
+(flet ($e539 (implies $e485 $e477))
+(flet ($e540 (implies $e504 $e474))
+(flet ($e541 (xor $e272 $e445))
+(flet ($e542 (implies $e393 $e438))
+(flet ($e543 (xor $e139 $e205))
+(flet ($e544 (implies $e414 $e386))
+(flet ($e545 (if_then_else $e214 $e321 $e544))
+(flet ($e546 (xor $e449 $e265))
+(flet ($e547 (and $e533 $e187))
+(flet ($e548 (xor $e530 $e506))
+(flet ($e549 (or $e258 $e283))
+(flet ($e550 (iff $e326 $e500))
+(flet ($e551 (if_then_else $e535 $e359 $e537))
+(flet ($e552 (iff $e479 $e469))
+(flet ($e553 (xor $e531 $e521))
+(flet ($e554 (xor $e435 $e43))
+(flet ($e555 (not $e162))
+(flet ($e556 (and $e525 $e454))
+(flet ($e557 (xor $e501 $e514))
+(flet ($e558 (implies $e179 $e138))
+(flet ($e559 (xor $e404 $e365))
+(flet ($e560 (not $e540))
+(flet ($e561 (xor $e513 $e546))
+(flet ($e562 (implies $e503 $e308))
+(flet ($e563 (if_then_else $e541 $e561 $e434))
+(flet ($e564 (not $e335))
+(flet ($e565 (not $e341))
+(flet ($e566 (if_then_else $e564 $e551 $e511))
+(flet ($e567 (or $e523 $e496))
+(flet ($e568 (and $e534 $e159))
+(flet ($e569 (if_then_else $e555 $e562 $e497))
+(flet ($e570 (xor $e457 $e225))
+(flet ($e571 (or $e161 $e251))
+(flet ($e572 (implies $e556 $e559))
+(flet ($e573 (iff $e483 $e370))
+(flet ($e574 (if_then_else $e237 $e432 $e213))
+(flet ($e575 (and $e147 $e528))
+(flet ($e576 (xor $e376 $e552))
+(flet ($e577 (and $e463 $e542))
+(flet ($e578 (not $e548))
+(flet ($e579 (implies $e468 $e560))
+(flet ($e580 (or $e557 $e495))
+(flet ($e581 (if_then_else $e327 $e478 $e472))
+(flet ($e582 (implies $e254 $e572))
+(flet ($e583 (and $e491 $e543))
+(flet ($e584 (implies $e527 $e243))
+(flet ($e585 (if_then_else $e428 $e142 $e566))
+(flet ($e586 (xor $e429 $e133))
+(flet ($e587 (not $e202))
+(flet ($e588 (iff $e481 $e550))
+(flet ($e589 (iff $e33 $e441))
+(flet ($e590 (or $e547 $e532))
+(flet ($e591 (and $e538 $e57))
+(flet ($e592 (not $e230))
+(flet ($e593 (or $e576 $e592))
+(flet ($e594 (iff $e505 $e578))
+(flet ($e595 (and $e350 $e580))
+(flet ($e596 (or $e443 $e574))
+(flet ($e597 (or $e579 $e575))
+(flet ($e598 (or $e132 $e38))
+(flet ($e599 (implies $e303 $e146))
+(flet ($e600 (if_then_else $e598 $e499 $e419))
+(flet ($e601 (and $e558 $e473))
+(flet ($e602 (or $e590 $e529))
+(flet ($e603 (if_then_else $e591 $e182 $e40))
+(flet ($e604 (iff $e596 $e571))
+(flet ($e605 (iff $e328 $e588))
+(flet ($e606 (and $e397 $e594))
+(flet ($e607 (or $e593 $e502))
+(flet ($e608 (or $e516 $e539))
+(flet ($e609 (iff $e573 $e193))
+(flet ($e610 (not $e549))
+(flet ($e611 (not $e563))
+(flet ($e612 (xor $e30 $e606))
+(flet ($e613 (if_then_else $e467 $e609 $e581))
+(flet ($e614 (not $e526))
+(flet ($e615 (if_then_else $e517 $e602 $e610))
+(flet ($e616 (implies $e464 $e396))
+(flet ($e617 (not $e425))
+(flet ($e618 (or $e452 $e611))
+(flet ($e619 (xor $e416 $e63))
+(flet ($e620 (iff $e545 $e565))
+(flet ($e621 (xor $e603 $e458))
+(flet ($e622 (if_then_else $e536 $e476 $e567))
+(flet ($e623 (or $e515 $e157))
+(flet ($e624 (iff $e510 $e493))
+(flet ($e625 (or $e600 $e599))
+(flet ($e626 (iff $e553 $e619))
+(flet ($e627 (or $e586 $e625))
+(flet ($e628 (not $e621))
+(flet ($e629 (not $e509))
+(flet ($e630 (xor $e617 $e582))
+(flet ($e631 (implies $e480 $e630))
+(flet ($e632 (implies $e421 $e340))
+(flet ($e633 (iff $e577 $e612))
+(flet ($e634 (iff $e512 $e627))
+(flet ($e635 (if_then_else $e632 $e444 $e583))
+(flet ($e636 (not $e569))
+(flet ($e637 (implies $e629 $e276))
+(flet ($e638 (and $e633 $e620))
+(flet ($e639 (and $e461 $e381))
+(flet ($e640 (iff $e597 $e395))
+(flet ($e641 (implies $e637 $e639))
+(flet ($e642 (and $e640 $e320))
+(flet ($e643 (or $e607 $e259))
+(flet ($e644 (if_then_else $e384 $e584 $e325))
+(flet ($e645 (implies $e626 $e608))
+(flet ($e646 (xor $e585 $e631))
+(flet ($e647 (or $e616 $e167))
+(flet ($e648 (or $e568 $e644))
+(flet ($e649 (or $e589 $e614))
+(flet ($e650 (and $e641 $e642))
+(flet ($e651 (xor $e554 $e650))
+(flet ($e652 (implies $e635 $e595))
+(flet ($e653 (or $e618 $e636))
+(flet ($e654 (and $e645 $e282))
+(flet ($e655 (not $e648))
+(flet ($e656 (or $e649 $e652))
+(flet ($e657 (iff $e31 $e409))
+(flet ($e658 (iff $e634 $e651))
+(flet ($e659 (xor $e601 $e605))
+(flet ($e660 (not $e628))
+(flet ($e661 (xor $e587 $e622))
+(flet ($e662 (not $e459))
+(flet ($e663 (or $e656 $e638))
+(flet ($e664 (not $e646))
+(flet ($e665 (or $e623 $e653))
+(flet ($e666 (implies $e663 $e663))
+(flet ($e667 (implies $e570 $e507))
+(flet ($e668 (xor $e647 $e658))
+(flet ($e669 (not $e661))
+(flet ($e670 (iff $e660 $e657))
+(flet ($e671 (not $e655))
+(flet ($e672 (if_then_else $e615 $e615 $e624))
+(flet ($e673 (iff $e665 $e643))
+(flet ($e674 (xor $e662 $e669))
+(flet ($e675 (not $e671))
+(flet ($e676 (and $e674 $e675))
+(flet ($e677 (implies $e670 $e676))
+(flet ($e678 (iff $e668 $e604))
+(flet ($e679 (not $e659))
+(flet ($e680 (or $e672 $e666))
+(flet ($e681 (xor $e679 $e678))
+(flet ($e682 (not $e667))
+(flet ($e683 (and $e677 $e681))
+(flet ($e684 (xor $e680 $e680))
+(flet ($e685 (not $e683))
+(flet ($e686 (if_then_else $e664 $e684 $e685))
+(flet ($e687 (iff $e654 $e686))
+(flet ($e688 (if_then_else $e687 $e613 $e613))
+(flet ($e689 (and $e682 $e688))
+(flet ($e690 (implies $e673 $e689))
+$e690
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) [...]
+
diff --git a/test/regress/regress0/uflia/error30.smt b/test/regress/regress0/uflia/error30.smt
new file mode 100644
index 0000000..f543cf0
--- /dev/null
+++ b/test/regress/regress0/uflia/error30.smt
@@ -0,0 +1,145 @@
+(benchmark fuzzsmt
+:logic QF_UFLIA
+:status sat
+:extrafuns ((f0 Int Int Int))
+:extrapreds ((p0 Int Int))
+:extrafuns ((v0 Int))
+:extrafuns ((v1 Int))
+:extrafuns ((v2 Int))
+:formula
+(let (?e3 6)
+(let (?e4 (f0 v2 v2))
+(let (?e5 (* ?e3 v0))
+(let (?e6 (+ v1 v0))
+(let (?e7 (* v0 ?e3))
+(let (?e8 (* ?e6 (~ ?e3)))
+(let (?e9 (* v1 (~ ?e3)))
+(let (?e10 (ite (p0 ?e8 v2) 1 0))
+(flet ($e11 (>= ?e7 v2))
+(flet ($e12 (p0 v0 ?e4))
+(flet ($e13 (distinct v2 ?e7))
+(flet ($e14 (> ?e9 ?e6))
+(flet ($e15 (>= ?e9 ?e9))
+(flet ($e16 (< v1 ?e8))
+(flet ($e17 (p0 v1 ?e5))
+(flet ($e18 (> ?e9 v0))
+(flet ($e19 (>= ?e5 ?e7))
+(flet ($e20 (= v1 ?e8))
+(flet ($e21 (p0 ?e5 v0))
+(flet ($e22 (= ?e10 ?e5))
+(let (?e23 (ite $e19 ?e5 v1))
+(let (?e24 (ite $e22 v2 ?e10))
+(let (?e25 (ite $e15 ?e10 ?e24))
+(let (?e26 (ite $e20 ?e4 ?e23))
+(let (?e27 (ite $e16 ?e10 v2))
+(let (?e28 (ite $e17 ?e23 ?e26))
+(let (?e29 (ite $e22 ?e25 ?e26))
+(let (?e30 (ite $e18 ?e10 ?e23))
+(let (?e31 (ite $e11 ?e7 ?e26))
+(let (?e32 (ite $e14 ?e9 ?e27))
+(let (?e33 (ite $e12 ?e8 ?e9))
+(let (?e34 (ite $e13 ?e24 v0))
+(let (?e35 (ite $e21 ?e6 ?e30))
+(flet ($e36 (distinct ?e4 ?e30))
+(flet ($e37 (= ?e8 ?e29))
+(flet ($e38 (p0 ?e6 ?e8))
+(flet ($e39 (p0 ?e7 v0))
+(flet ($e40 (distinct ?e32 ?e5))
+(flet ($e41 (distinct v2 ?e24))
+(flet ($e42 (= v1 ?e29))
+(flet ($e43 (distinct ?e26 ?e26))
+(flet ($e44 (= ?e9 ?e4))
+(flet ($e45 (p0 ?e8 v1))
+(flet ($e46 (= v0 ?e33))
+(flet ($e47 (p0 v0 ?e26))
+(flet ($e48 (distinct ?e32 ?e24))
+(flet ($e49 (= ?e33 ?e29))
+(flet ($e50 (= ?e10 ?e25))
+(flet ($e51 (= v0 ?e30))
+(flet ($e52 (= ?e25 ?e23))
+(flet ($e53 (>= ?e27 ?e31))
+(flet ($e54 (distinct ?e25 ?e25))
+(flet ($e55 (p0 ?e28 ?e30))
+(flet ($e56 (> ?e29 ?e8))
+(flet ($e57 (p0 ?e8 ?e35))
+(flet ($e58 (distinct ?e7 v1))
+(flet ($e59 (distinct ?e7 v1))
+(flet ($e60 (> ?e9 ?e25))
+(flet ($e61 (< ?e33 ?e31))
+(flet ($e62 (< ?e4 ?e6))
+(flet ($e63 (< ?e35 ?e27))
+(flet ($e64 (<= ?e28 ?e23))
+(flet ($e65 (<= ?e8 ?e26))
+(flet ($e66 (<= ?e28 ?e29))
+(flet ($e67 (p0 ?e9 ?e29))
+(flet ($e68 (p0 ?e4 ?e24))
+(flet ($e69 (< ?e24 ?e25))
+(flet ($e70 (= ?e31 ?e7))
+(flet ($e71 (p0 ?e31 ?e10))
+(flet ($e72 (>= ?e28 ?e24))
+(flet ($e73 (< ?e34 ?e31))
+(flet ($e74 (implies $e53 $e22))
+(flet ($e75 (iff $e41 $e55))
+(flet ($e76 (if_then_else $e40 $e20 $e51))
+(flet ($e77 (xor $e75 $e12))
+(flet ($e78 (not $e39))
+(flet ($e79 (iff $e69 $e70))
+(flet ($e80 (or $e21 $e17))
+(flet ($e81 (not $e11))
+(flet ($e82 (if_then_else $e77 $e56 $e79))
+(flet ($e83 (implies $e64 $e38))
+(flet ($e84 (xor $e13 $e74))
+(flet ($e85 (implies $e67 $e68))
+(flet ($e86 (not $e66))
+(flet ($e87 (xor $e19 $e85))
+(flet ($e88 (not $e49))
+(flet ($e89 (iff $e72 $e15))
+(flet ($e90 (not $e16))
+(flet ($e91 (and $e48 $e63))
+(flet ($e92 (iff $e65 $e89))
+(flet ($e93 (xor $e81 $e91))
+(flet ($e94 (implies $e73 $e60))
+(flet ($e95 (iff $e45 $e44))
+(flet ($e96 (xor $e52 $e84))
+(flet ($e97 (not $e43))
+(flet ($e98 (if_then_else $e42 $e96 $e86))
+(flet ($e99 (or $e82 $e57))
+(flet ($e100 (iff $e92 $e47))
+(flet ($e101 (if_then_else $e83 $e83 $e14))
+(flet ($e102 (xor $e95 $e99))
+(flet ($e103 (xor $e58 $e50))
+(flet ($e104 (implies $e36 $e88))
+(flet ($e105 (implies $e18 $e71))
+(flet ($e106 (if_then_else $e59 $e37 $e78))
+(flet ($e107 (xor $e106 $e93))
+(flet ($e108 (iff $e80 $e105))
+(flet ($e109 (not $e100))
+(flet ($e110 (and $e107 $e54))
+(flet ($e111 (if_then_else $e61 $e61 $e76))
+(flet ($e112 (if_then_else $e98 $e108 $e108))
+(flet ($e113 (iff $e112 $e104))
+(flet ($e114 (if_then_else $e46 $e46 $e110))
+(flet ($e115 (not $e90))
+(flet ($e116 (iff $e62 $e114))
+(flet ($e117 (if_then_else $e97 $e115 $e97))
+(flet ($e118 (iff $e117 $e101))
+(flet ($e119 (and $e109 $e109))
+(flet ($e120 (and $e111 $e111))
+(flet ($e121 (xor $e119 $e94))
+(flet ($e122 (xor $e118 $e102))
+(flet ($e123 (implies $e87 $e120))
+(flet ($e124 (xor $e103 $e123))
+(flet ($e125 (implies $e121 $e121))
+(flet ($e126 (or $e113 $e113))
+(flet ($e127 (not $e126))
+(flet ($e128 (if_then_else $e125 $e116 $e127))
+(flet ($e129 (iff $e122 $e128))
+(flet ($e130 (or $e124 $e124))
+(flet ($e131 (or $e130 $e130))
+(flet ($e132 (implies $e129 $e129))
+(flet ($e133 (or $e131 $e131))
+(flet ($e134 (not $e133))
+(flet ($e135 (implies $e132 $e134))
+$e135
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/uflia/microwave21.ec.minimized.smt2 b/test/regress/regress0/uflia/microwave21.ec.minimized.smt2
new file mode 100644
index 0000000..b37db9a
--- /dev/null
+++ b/test/regress/regress0/uflia/microwave21.ec.minimized.smt2
@@ -0,0 +1,444 @@
+; initialize_defs
+; PROPERTY DEFGEN
+(set-logic QF_UFNIA)
+(set-info :status unsat)
+(declare-fun _base () Int)
+(declare-fun _n () Int)
+(assert (>= _n 0))
+
+; maxdepth = 1
+(declare-fun ___z2z___ (Int) Bool)
+			; KP_START ;  INPUT,STATE(1,)/102
+(declare-fun ___z3z___ (Int) Bool)
+			; KP_CLEAR ;  INPUT,STATE(1,)/103
+(declare-fun ___z4z___ (Int) Bool)
+			; KP_0 ;  INPUT,STATE(1,)/104
+(declare-fun ___z5z___ (Int) Bool)
+			; KP_1 ;  INPUT,STATE(1,)/105
+(declare-fun ___z6z___ (Int) Bool)
+			; KP_2 ;  INPUT,STATE(1,)/106
+(declare-fun ___z7z___ (Int) Bool)
+			; KP_3 ;  INPUT,STATE(1,)/107
+(declare-fun ___z8z___ (Int) Bool)
+			; KP_4 ;  INPUT,STATE(1,)/108
+(declare-fun ___z9z___ (Int) Bool)
+			; KP_5 ;  INPUT,STATE(1,)/109
+(declare-fun ___z10z___ (Int) Bool)
+			; KP_6 ;  INPUT,STATE(1,)/110
+(declare-fun ___z11z___ (Int) Bool)
+			; KP_7 ;  INPUT,STATE(1,)/111
+(declare-fun ___z12z___ (Int) Bool)
+			; KP_8 ;  INPUT,STATE(1,)/112
+(declare-fun ___z13z___ (Int) Bool)
+			; KP_9 ;  INPUT,STATE(1,)/113
+(declare-fun ___z14z___ (Int) Bool)
+			; DOOR_CLOSED ;  INPUT/114
+(declare-fun ___z15z___ (Int) Bool)
+			; OK ;  OUTPUT/115
+(declare-fun ___z19z___ (Int) Bool)
+			; V20_START_PRESSED ;  LOCAL/119
+(declare-fun ___z20z___ (Int) Bool)
+			; V21_CLEAR_PRESSED ;  LOCAL/120
+(declare-fun ___z21z___ (Int) Int)
+			; V25_STEPS_TO_COOK ;  LOCAL,STATE(1,)/121
+(declare-fun ___z22z___ (Int) Bool)
+			; V26_rlt_condact_resetmicrowave_microwave_KEYPAD_PROCESSING_rlt_clock ;  LOCAL,STATE(1,)/122
+(declare-fun ___z23z___ (Int) Bool)
+			; V37_rlt_condact_resetmicrowave_microwave_KEYPAD_PROCESSING_rlt_init_step ;  LOCAL,STATE(1,)/123
+(declare-fun ___z24z___ (Int) Int)
+			; V38_microwave_microwave_KEYPAD_PROCESSING_DISPLAY_LEFT_DIGIT_DIGIT_TO_DISPLAY ;  LOCAL,STATE(1,)/124
+(declare-fun ___z25z___ (Int) Int)
+			; V39_microwave_microwave_KEYPAD_PROCESSING_DISPLAY_MIDDLE_DIGIT_DIGIT_TO_DISPLAY ;  LOCAL,STATE(1,)/125
+(declare-fun ___z26z___ (Int) Int)
+			; V40_microwave_microwave_KEYPAD_PROCESSING_DISPLAY_RIGHT_DIGIT_DIGIT_TO_DISPLAY ;  LOCAL,STATE(1,)/126
+(declare-fun ___z33z___ (Int) Int)
+			; V47_chart_microwave_mode_logic_start ;  LOCAL/133
+(declare-fun ___z34z___ (Int) Int)
+			; V48_chart_microwave_mode_logic_clear_off ;  LOCAL/134
+(declare-fun ___z35z___ (Int) Int)
+			; V49_chart_microwave_mode_logic_door_closed ;  LOCAL/135
+(declare-fun ___z36z___ (Int) Bool)
+			; V51_rlt_eval_microwave_mode_logic_ON_rlt_fired_1 ;  LOCAL/136
+(declare-fun ___z37z___ (Int) Int)
+			; V52_rlt_eval_microwave_mode_logic_ON_rlt_state_1_states___root ;  LOCAL/137
+(declare-fun ___z38z___ (Int) Int)
+			; V53_rlt_eval_microwave_mode_logic_ON_rlt_state_2_states___root ;  LOCAL/138
+(declare-fun ___z39z___ (Int) Bool)
+			; V54_rlt_eval_microwave_mode_logic_ON_rlt_fired_2 ;  LOCAL/139
+(declare-fun ___z40z___ (Int) Bool)
+			; V55_rlt_eval_microwave_mode_logic_ON_rlt_complete_1 ;  LOCAL/140
+(declare-fun ___z41z___ (Int) Int)
+			; V56_rlt_eval_microwave_mode_logic_ON_rlt_state_3_states___root ;  LOCAL/141
+(declare-fun ___z42z___ (Int) Int)
+			; V57_rlt_eval_microwave_mode_logic_ON_rlt_state_3_outports_mode ;  LOCAL/142
+(declare-fun ___z43z___ (Int) Int)
+			; V58_rlt_eval_microwave_mode_logic_ON_rlt_state_4_states___root ;  LOCAL/143
+(declare-fun ___z44z___ (Int) Int)
+			; V59_rlt_eval_microwave_mode_logic_ON_rlt_state_4_outports_mode ;  LOCAL/144
+(declare-fun ___z45z___ (Int) Bool)
+			; V60_rlt_eval_microwave_mode_logic_ON_rlt_fired_4 ;  LOCAL/145
+(declare-fun ___z46z___ (Int) Bool)
+			; V61_rlt_eval_microwave_mode_logic_ON_rlt_complete_2 ;  LOCAL/146
+(declare-fun ___z47z___ (Int) Int)
+			; V62_rlt_eval_microwave_mode_logic_ON_rlt_state_6_states___root ;  LOCAL/147
+(declare-fun ___z48z___ (Int) Int)
+			; V63_rlt_eval_microwave_mode_logic_ON_rlt_state_6_outports_steps_remaining ;  LOCAL/148
+(declare-fun ___z49z___ (Int) Int)
+			; V64_rlt_eval_microwave_mode_logic_ON_rlt_state_7_states___root ;  LOCAL/149
+(declare-fun ___z50z___ (Int) Bool)
+			; V65_rlt_eval_microwave_mode_logic_ON_rlt_fired_5 ;  LOCAL/150
+(declare-fun ___z51z___ (Int) Int)
+			; V66_rlt_eval_microwave_mode_logic_ON_rlt_state_8_outports_mode ;  LOCAL/151
+(declare-fun ___z52z___ (Int) Int)
+			; V67_rlt_eval_microwave_mode_logic_ON_rlt_state_9_states___root ;  LOCAL/152
+(declare-fun ___z53z___ (Int) Int)
+			; V68_rlt_eval_microwave_mode_logic_ON_rlt_state_10_states___root ;  LOCAL/153
+(declare-fun ___z54z___ (Int) Bool)
+			; V69_rlt_eval_microwave_mode_logic_ON_rlt_fired_6 ;  LOCAL/154
+(declare-fun ___z55z___ (Int) Int)
+			; V70_rlt_eval_microwave_mode_logic_ON_rlt_state_11_states___root ;  LOCAL/155
+(declare-fun ___z56z___ (Int) Int)
+			; V71_rlt_eval_microwave_mode_logic_ON_rlt_state_11_outports_mode ;  LOCAL/156
+(declare-fun ___z57z___ (Int) Int)
+			; V72_rlt_enter_microwave_mode_logic_ON_rlt_state_1_states___root ;  LOCAL/157
+(declare-fun ___z58z___ (Int) Bool)
+			; V73_rlt_enter_microwave_mode_logic_ON_rlt_fired_0 ;  LOCAL/158
+(declare-fun ___z59z___ (Int) Bool)
+			; V74_rlt_enter_microwave_mode_logic_ON_rlt_fired_1 ;  LOCAL/159
+(declare-fun ___z60z___ (Int) Int)
+			; V75_rlt_enter_microwave_mode_logic_ON_rlt_state_2_states___root ;  LOCAL/160
+(declare-fun ___z61z___ (Int) Int)
+			; V76_rlt_enter_microwave_mode_logic_ON_rlt_state_2_outports_mode ;  LOCAL/161
+(declare-fun ___z62z___ (Int) Bool)
+			; V77_rlt_enter_microwave_mode_logic_ON_rlt_fired_2 ;  LOCAL/162
+(declare-fun ___z63z___ (Int) Int)
+			; V78_rlt_enter_microwave_mode_logic_ON_rlt_state_4_states___root ;  LOCAL/163
+(declare-fun ___z64z___ (Int) Bool)
+			; V79_rlt_eval_microwave_mode_logic_rlt_fired_0 ;  LOCAL/164
+(declare-fun ___z65z___ (Int) Int)
+			; V80_rlt_eval_microwave_mode_logic_rlt_state_1_outports_steps_remaining ;  LOCAL/165
+(declare-fun ___z66z___ (Int) Bool)
+			; V81_rlt_eval_microwave_mode_logic_rlt_fired_1 ;  LOCAL/166
+(declare-fun ___z67z___ (Int) Int)
+			; V82_rlt_eval_microwave_mode_logic_rlt_state_2_states___root ;  LOCAL/167
+(declare-fun ___z68z___ (Int) Int)
+			; V83_rlt_eval_microwave_mode_logic_rlt_state_3_states___root ;  LOCAL/168
+(declare-fun ___z69z___ (Int) Int)
+			; V84_rlt_eval_microwave_mode_logic_rlt_state_3_outports_mode ;  LOCAL/169
+(declare-fun ___z70z___ (Int) Int)
+			; V85_rlt_enter_microwave_mode_logic_rlt_state_2_states___root ;  LOCAL/170
+(declare-fun ___z71z___ (Int) Bool)
+			; V86_chart_microwave_mode_logic_rlt_evtInitStep ;  LOCAL,STATE(1,)/171
+(declare-fun ___z72z___ (Int) Int)
+			; V87_chart_microwave_mode_logic_begin_state_states___root ;  LOCAL/172
+(declare-fun ___z73z___ (Int) Int)
+			; V88_chart_microwave_mode_logic_begin_state_outports_mode ;  LOCAL/173
+(declare-fun ___z74z___ (Int) Int)
+			; V89_chart_microwave_mode_logic_begin_state_outports_steps_remaining ;  LOCAL/174
+(declare-fun ___z75z___ (Int) Int)
+			; V90_chart_microwave_mode_logic_final_state_states___root ;  LOCAL,STATE(1,)/175
+(declare-fun ___z76z___ (Int) Int)
+			; V92_chart_microwave_mode_logic_steps_remaining ;  LOCAL,STATE(1,)/176
+(declare-fun ___z77z___ (Int) Int)
+			; V93_microwave_microwave_TIME_ON_DISPLAY_SECONDS_TO_MINUTES__QUOTIENT ;  LOCAL/177
+(declare-fun ___z80z___ (Int) Int)
+			; V96_microwave_microwave_mode_logic_mode ;  LOCAL,STATE(1,)/180
+
+
+; Generic definitions:
+(define-fun DEF__172 ((_M Int)) Bool(= (___z72z___ _M) (ite (= _M _base) 0 (___z75z___ (- _M 1)))))
+(define-fun DEF__173 ((_M Int)) Bool(= (___z73z___ _M) (ite (= _M _base) 0 (___z80z___ (- _M 1)))))
+(define-fun DEF__174 ((_M Int)) Bool(= (___z74z___ _M) (ite (= _M _base) 0 (___z76z___ (- _M 1)))))
+(define-fun DEF__175 ((_M Int)) Bool(= (___z75z___ _M) (ite (= (___z71z___ _M) true) (___z70z___ _M) (ite (= (and (not (___z66z___ _M)) (and (>= (___z68z___ _M) 1) (<= (___z68z___ _M) 3))) true) (ite (= (___z54z___ _M) true) (ite (= (not (= (___z55z___ _M) 3)) true) 3 (___z55z___ _M)) (___z55z___ _M)) (___z68z___ _M)))))
+(define-fun DEF__133 ((_M Int)) Bool(= (___z33z___ _M) (ite (= (= (___z19z___ _M) false) true) 0 1)))
+(define-fun DEF__176 ((_M Int)) Bool(= (___z76z___ _M) (ite (= (___z71z___ _M) true) (___z74z___ _M) (ite (= (and (not (___z66z___ _M)) (and (>= (___z68z___ _M) 1) (<= (___z68z___ _M) 3))) true) (ite (= (___z50z___ _M) true) (- (___z48z___ _M) 1) (___z48z___ _M)) (___z65z___ _M)))))
+(define-fun DEF__134 ((_M Int)) Bool(= (___z34z___ _M) (ite (= (= (___z20z___ _M) false) true) 0 1)))
+(define-fun DEF__177 ((_M Int)) Bool(= (___z77z___ _M) (div (div (___z76z___ _M) 1) 60)))
+(define-fun DEF__135 ((_M Int)) Bool(= (___z35z___ _M) (ite (= (= (___z14z___ _M) false) true) 0 1)))
+(define-fun DEF__136 ((_M Int)) Bool(= (___z36z___ _M) (and (and (= (___z68z___ _M) 2) (<= (___z65z___ _M) 0)) (= (___z68z___ _M) 2))))
+(define-fun DEF__180 ((_M Int)) Bool(= (___z80z___ _M) (ite (= (___z71z___ _M) true) (ite (= (not (= (___z72z___ _M) 4)) true) 1 (___z73z___ _M)) (ite (= (and (not (___z66z___ _M)) (and (>= (___z68z___ _M) 1) (<= (___z68z___ _M) 3))) true) (ite (= (___z54z___ _M) true) (ite (= (not (= (___z55z___ _M) 3)) true) 3 (___z56z___ _M)) (___z56z___ _M)) (___z69z___ _M)))))
+(define-fun DEF__137 ((_M Int)) Bool(= (___z37z___ _M) (ite (= (___z36z___ _M) true) (ite (= (and (>= (___z68z___ _M) 1) (<= (___z68z___ _M) 3)) true) 0 (___z68z___ _M)) (___z68z___ _M))))
+(define-fun DEF__138 ((_M Int)) Bool(= (___z38z___ _M) (ite (= (___z36z___ _M) true) (ite (= (not (= (___z37z___ _M) 4)) true) 4 (___z37z___ _M)) (___z37z___ _M))))
+(define-fun DEF__139 ((_M Int)) Bool(= (___z39z___ _M) (and (= (___z38z___ _M) 3) (and (and (ite (= (not (= (___z33z___ _M) 0)) true) true false) (ite (= (not (= (___z35z___ _M) 0)) true) true false)) (not (___z36z___ _M))))))
+(define-fun DEF__140 ((_M Int)) Bool(= (___z40z___ _M) (or (___z39z___ _M) (___z36z___ _M))))
+(define-fun DEF__141 ((_M Int)) Bool(= (___z41z___ _M) (ite (= (___z39z___ _M) true) (ite (= (___z38z___ _M) 3) 1 (___z38z___ _M)) (___z38z___ _M))))
+(define-fun DEF__142 ((_M Int)) Bool(= (___z42z___ _M) (ite (= (___z36z___ _M) true) (ite (= (not (= (___z37z___ _M) 4)) true) 1 (___z69z___ _M)) (___z69z___ _M))))
+(define-fun DEF__143 ((_M Int)) Bool(= (___z43z___ _M) (ite (= (___z39z___ _M) true) (ite (= (not (= (___z41z___ _M) 2)) true) 2 (___z41z___ _M)) (___z41z___ _M))))
+(define-fun DEF__144 ((_M Int)) Bool(= (___z44z___ _M) (ite (= (___z39z___ _M) true) (ite (= (not (= (___z41z___ _M) 2)) true) 2 (___z42z___ _M)) (___z42z___ _M))))
+(define-fun DEF__145 ((_M Int)) Bool(= (___z45z___ _M) (and (and (= (___z43z___ _M) 3) (and (ite (= (not (= (___z34z___ _M) 0)) true) true false) (not (___z40z___ _M)))) (and (= (___z43z___ _M) 3) (not (___z40z___ _M))))))
+(define-fun DEF__146 ((_M Int)) Bool(= (___z46z___ _M) (or (___z45z___ _M) (___z40z___ _M))))
+(define-fun DEF__147 ((_M Int)) Bool(= (___z47z___ _M) (ite (= (___z45z___ _M) true) (ite (= (and (>= (___z43z___ _M) 1) (<= (___z43z___ _M) 3)) true) 0 (___z43z___ _M)) (___z43z___ _M))))
+(define-fun DEF__148 ((_M Int)) Bool(= (___z48z___ _M) (ite (= (___z45z___ _M) true) 0 (___z65z___ _M))))
+(define-fun DEF__149 ((_M Int)) Bool(= (___z49z___ _M) (ite (= (___z45z___ _M) true) (ite (= (not (= (___z47z___ _M) 4)) true) 4 (___z47z___ _M)) (___z47z___ _M))))
+(define-fun DEF__150 ((_M Int)) Bool(= (___z50z___ _M) (and (= (___z49z___ _M) 2) (and (> (___z48z___ _M) 0) (not (___z46z___ _M))))))
+(define-fun DEF__151 ((_M Int)) Bool(= (___z51z___ _M) (ite (= (___z45z___ _M) true) (ite (= (not (= (___z47z___ _M) 4)) true) 1 (___z44z___ _M)) (___z44z___ _M))))
+(define-fun DEF__152 ((_M Int)) Bool(= (___z52z___ _M) (ite (= (___z50z___ _M) true) (ite (= (___z49z___ _M) 2) 1 (___z49z___ _M)) (___z49z___ _M))))
+(define-fun DEF__153 ((_M Int)) Bool(= (___z53z___ _M) (ite (= (___z50z___ _M) true) (ite (= (not (= (___z52z___ _M) 2)) true) 2 (___z52z___ _M)) (___z52z___ _M))))
+(define-fun DEF__154 ((_M Int)) Bool(= (___z54z___ _M) (and (= (___z53z___ _M) 2) (and (or (ite (= (not (= (___z34z___ _M) 0)) true) true false) (not (ite (= (not (= (___z35z___ _M) 0)) true) true false))) (not (or (___z50z___ _M) (___z46z___ _M)))))))
+(define-fun DEF__155 ((_M Int)) Bool(= (___z55z___ _M) (ite (= (___z54z___ _M) true) (ite (= (___z53z___ _M) 2) 1 (___z53z___ _M)) (___z53z___ _M))))
+(define-fun DEF__156 ((_M Int)) Bool(= (___z56z___ _M) (ite (= (___z50z___ _M) true) (ite (= (not (= (___z52z___ _M) 2)) true) 2 (___z51z___ _M)) (___z51z___ _M))))
+(define-fun DEF__157 ((_M Int)) Bool(= (___z57z___ _M) (ite (= (not (and (>= (___z67z___ _M) 1) (<= (___z67z___ _M) 3))) true) 1 (___z67z___ _M))))
+(define-fun DEF__115 ((_M Int)) Bool(= (___z15z___ _M) (ite (= _M _base) (or (not (and (___z22z___ _M) (not (___z3z___ _M)))) (or (not (or (or (or (or (or (or (or (or (or (___z5z___ _M) (___z6z___ _M)) (___z7z___ _M)) (___z8z___ _M)) (___z9z___ _M)) (___z10z___ _M)) (___z11z___ _M)) (___z12z___ _M)) (___z13z___ _M)) (___z4z___ _M))) (= (___z77z___ _M) (div (div (___z21z___ _M) 1) 60)))) (or (not (and (___z22z___ _M) (not (___z3z___ _M)))) (or (not (or (or (or (or (or (or (or (or (or (and [...]
+(define-fun DEF__158 ((_M Int)) Bool(= (___z58z___ _M) (and (not (and (>= (___z67z___ _M) 1) (<= (___z67z___ _M) 3))) (and (>= (___z57z___ _M) 1) (<= (___z57z___ _M) 3)))))
+(define-fun DEF__159 ((_M Int)) Bool(= (___z59z___ _M) (and (___z58z___ _M) (and (and (>= (___z57z___ _M) 1) (<= (___z57z___ _M) 3)) (ite (= (not (= (___z35z___ _M) 0)) true) true false)))))
+(define-fun DEF__160 ((_M Int)) Bool(= (___z60z___ _M) (ite (= (___z59z___ _M) true) (ite (= (not (= (___z57z___ _M) 2)) true) 2 (___z57z___ _M)) (___z57z___ _M))))
+(define-fun DEF__161 ((_M Int)) Bool(= (___z61z___ _M) (ite (= (___z59z___ _M) true) (ite (= (not (= (___z57z___ _M) 2)) true) 2 (___z73z___ _M)) (___z73z___ _M))))
+(define-fun DEF__119 ((_M Int)) Bool(= (___z19z___ _M) (ite (= _M _base) (___z2z___ _M) (and (___z2z___ _M) (not (___z2z___ (- _M 1)))))))
+(define-fun DEF__162 ((_M Int)) Bool(= (___z62z___ _M) (and (___z58z___ _M) (and (and (>= (___z60z___ _M) 1) (<= (___z60z___ _M) 3)) (not (___z59z___ _M))))))
+(define-fun DEF__120 ((_M Int)) Bool(= (___z20z___ _M) (ite (= _M _base) (___z3z___ _M) (and (___z3z___ _M) (not (___z3z___ (- _M 1)))))))
+(define-fun DEF__163 ((_M Int)) Bool(= (___z63z___ _M) (ite (= (___z62z___ _M) true) (ite (= (not (= (___z60z___ _M) 3)) true) 3 (___z60z___ _M)) (___z60z___ _M))))
+(define-fun DEF__121 ((_M Int)) Bool(= (___z21z___ _M) (ite (= _M _base) (ite (= (and (___z23z___ _M) (not (___z22z___ _M))) true) 0 (* (+ (+ (* (___z26z___ _M) 1) (* (___z25z___ _M) 10)) (* (___z24z___ _M) 60)) 1)) (ite (= (and (___z23z___ _M) (not (___z22z___ _M))) true) 0 (ite (= (___z22z___ _M) true) (* (+ (+ (* (___z26z___ _M) 1) (* (___z25z___ _M) 10)) (* (___z24z___ _M) 60)) 1) (___z21z___ (- _M 1)))))))
+(define-fun DEF__164 ((_M Int)) Bool(= (___z64z___ _M) (= (___z72z___ _M) 4)))
+(define-fun DEF__122 ((_M Int)) Bool(= (___z22z___ _M) (ite (= _M _base) true (ite (= 1 (___z80z___ (- _M 1))) true false))))
+(define-fun DEF__165 ((_M Int)) Bool(= (___z65z___ _M) (ite (= (___z64z___ _M) true) (___z21z___ _M) (___z74z___ _M))))
+(define-fun DEF__123 ((_M Int)) Bool(= (___z23z___ _M) (ite (= _M _base) true (ite (= (not (___z22z___ _M)) true) true (ite (= (___z22z___ (- _M 1)) true) false (___z23z___ (- _M 1)))))))
+(define-fun DEF__166 ((_M Int)) Bool(= (___z66z___ _M) (and (___z64z___ _M) (and (= (___z72z___ _M) 4) (and (ite (= (not (= (___z33z___ _M) 0)) true) true false) (ite (= (not (= (ite (= (= (> (___z21z___ _M) 0) false) true) 0 1) 0)) true) true false))))))
+(define-fun DEF__124 ((_M Int)) Bool(= (___z24z___ _M) (ite (= _M _base) 0 (ite (= (___z22z___ _M) true) (ite (= (___z23z___ _M) true) 0 (ite (= (___z3z___ _M) true) 0 (ite (= (ite (<= (ite (= (and (___z4z___ _M) (not (___z4z___ (- _M 1)))) true) 0 (ite (= (and (___z5z___ _M) (not (___z5z___ (- _M 1)))) true) 1 (ite (= (and (___z6z___ _M) (not (___z6z___ (- _M 1)))) true) 2 (ite (= (and (___z7z___ _M) (not (___z7z___ (- _M 1)))) true) 3 (ite (= (and (___z8z___ _M) (not (___z8z___ (- _M 1 [...]
+(define-fun DEF__167 ((_M Int)) Bool(= (___z67z___ _M) (ite (= (___z66z___ _M) true) (ite (= (___z72z___ _M) 4) 0 (___z72z___ _M)) (___z72z___ _M))))
+(define-fun DEF__125 ((_M Int)) Bool(= (___z25z___ _M) (ite (= _M _base) 0 (ite (= (___z22z___ _M) true) (ite (= (___z23z___ _M) true) 0 (ite (= (___z3z___ _M) true) 0 (ite (= (ite (<= (ite (= (and (___z4z___ _M) (not (___z4z___ (- _M 1)))) true) 0 (ite (= (and (___z5z___ _M) (not (___z5z___ (- _M 1)))) true) 1 (ite (= (and (___z6z___ _M) (not (___z6z___ (- _M 1)))) true) 2 (ite (= (and (___z7z___ _M) (not (___z7z___ (- _M 1)))) true) 3 (ite (= (and (___z8z___ _M) (not (___z8z___ (- _M 1 [...]
+(define-fun DEF__168 ((_M Int)) Bool(= (___z68z___ _M) (ite (= (___z66z___ _M) true) (___z63z___ _M) (___z67z___ _M))))
+(define-fun DEF__126 ((_M Int)) Bool(= (___z26z___ _M) (ite (= _M _base) (ite (= (___z3z___ _M) true) 0 (ite (= (ite (<= (ite (= (___z4z___ _M) true) 0 (ite (= (___z5z___ _M) true) 1 (ite (= (___z6z___ _M) true) 2 (ite (= (___z7z___ _M) true) 3 (ite (= (___z8z___ _M) true) 4 (ite (= (___z9z___ _M) true) 5 (ite (= (___z10z___ _M) true) 6 (ite (= (___z11z___ _M) true) 7 (ite (= (___z12z___ _M) true) 8 (ite (= (___z13z___ _M) true) 9 10)))))))))) 9) true false) true) (ite (= (___z4z___ _M)  [...]
+(define-fun DEF__169 ((_M Int)) Bool(= (___z69z___ _M) (ite (= (___z66z___ _M) true) (ite (= (___z62z___ _M) true) (ite (= (not (= (___z60z___ _M) 3)) true) 3 (___z61z___ _M)) (___z61z___ _M)) (___z73z___ _M))))
+(define-fun DEF__170 ((_M Int)) Bool(= (___z70z___ _M) (ite (= (not (= (___z72z___ _M) 4)) true) 4 (___z72z___ _M))))
+(define-fun DEF__171 ((_M Int)) Bool(= (___z71z___ _M) (ite (= _M _base) true (ite (= true true) false (___z71z___ (- _M 1))))))
+; Transition:
+(define-fun trans ((_M Int)) Bool (and (DEF__171 _M)  (DEF__170 _M)  (DEF__169 _M)  (DEF__126 _M)  (DEF__168 _M)  (DEF__125 _M)  (DEF__167 _M)  (DEF__124 _M)  (DEF__166 _M)  (DEF__123 _M)  (DEF__165 _M)  (DEF__122 _M)  (DEF__164 _M)  (DEF__121 _M)  (DEF__163 _M)  (DEF__120 _M)  (DEF__162 _M)  (DEF__119 _M)  (DEF__161 _M)  (DEF__160 _M)  (DEF__159 _M)  (DEF__158 _M)  (DEF__115 _M)  (DEF__157 _M)  (DEF__156 _M)  (DEF__155 _M)  (DEF__154 _M)  (DEF__153 _M)  (DEF__152 _M)  (DEF__151 _M)  (DE [...]
+
+(define-fun P ((_M Int)) Bool(= (___z15z___ _M) true))
+
+
+
+; BASE DONE
+
+; Begin induction:
+; print_initialization
+; def_assert_both1
+; def_assert_both
+(assert (DEF__172 0))
+; print_checker_assertion
+(assert (DEF__173 0))
+; print_checker_assertion
+(assert (DEF__174 0))
+; print_checker_assertion
+(assert (DEF__175 0))
+; print_checker_assertion
+(assert (DEF__133 0))
+; print_checker_assertion
+(assert (DEF__176 0))
+; print_checker_assertion
+(assert (DEF__134 0))
+; print_checker_assertion
+(assert (DEF__177 0))
+; print_checker_assertion
+(assert (DEF__135 0))
+; print_checker_assertion
+(assert (DEF__136 0))
+; print_checker_assertion
+(assert (DEF__180 0))
+; print_checker_assertion
+(assert (DEF__137 0))
+; print_checker_assertion
+(assert (DEF__138 0))
+; print_checker_assertion
+(assert (DEF__139 0))
+; print_checker_assertion
+(assert (DEF__140 0))
+; print_checker_assertion
+(assert (DEF__141 0))
+; print_checker_assertion
+(assert (DEF__142 0))
+; print_checker_assertion
+(assert (DEF__143 0))
+; print_checker_assertion
+(assert (DEF__144 0))
+; print_checker_assertion
+(assert (DEF__145 0))
+; print_checker_assertion
+(assert (DEF__146 0))
+; print_checker_assertion
+(assert (DEF__147 0))
+; print_checker_assertion
+(assert (DEF__148 0))
+; print_checker_assertion
+(assert (DEF__149 0))
+; print_checker_assertion
+(assert (DEF__150 0))
+; print_checker_assertion
+(assert (DEF__151 0))
+; print_checker_assertion
+(assert (DEF__152 0))
+; print_checker_assertion
+(assert (DEF__153 0))
+; print_checker_assertion
+(assert (DEF__154 0))
+; print_checker_assertion
+(assert (DEF__155 0))
+; print_checker_assertion
+(assert (DEF__156 0))
+; print_checker_assertion
+(assert (DEF__157 0))
+; print_checker_assertion
+(assert (DEF__115 0))
+; print_checker_assertion
+(assert (DEF__158 0))
+; print_checker_assertion
+(assert (DEF__159 0))
+; print_checker_assertion
+(assert (DEF__160 0))
+; print_checker_assertion
+(assert (DEF__161 0))
+; print_checker_assertion
+(assert (DEF__119 0))
+; print_checker_assertion
+(assert (DEF__162 0))
+; print_checker_assertion
+(assert (DEF__120 0))
+; print_checker_assertion
+(assert (DEF__163 0))
+; print_checker_assertion
+(assert (DEF__121 0))
+; print_checker_assertion
+(assert (DEF__164 0))
+; print_checker_assertion
+(assert (DEF__122 0))
+; print_checker_assertion
+(assert (DEF__165 0))
+; print_checker_assertion
+(assert (DEF__123 0))
+; print_checker_assertion
+(assert (DEF__166 0))
+; print_checker_assertion
+(assert (DEF__124 0))
+; print_checker_assertion
+(assert (DEF__167 0))
+; print_checker_assertion
+(assert (DEF__125 0))
+; print_checker_assertion
+(assert (DEF__168 0))
+; print_checker_assertion
+(assert (DEF__126 0))
+; print_checker_assertion
+(assert (DEF__169 0))
+; print_checker_assertion
+(assert (DEF__170 0))
+; print_checker_assertion
+(assert (DEF__171 0))
+; print_checker_assertion
+; def_assert_both1
+; def_assert_both
+(assert (DEF__172 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__173 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__174 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__175 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__133 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__176 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__134 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__177 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__135 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__136 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__180 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__137 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__138 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__139 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__140 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__141 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__142 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__143 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__144 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__145 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__146 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__147 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__148 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__149 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__150 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__151 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__152 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__153 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__154 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__155 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__156 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__157 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__115 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__158 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__159 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__160 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__161 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__119 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__162 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__120 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__163 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__121 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__164 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__122 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__165 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__123 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__166 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__124 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__167 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__125 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__168 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__126 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__169 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__170 (- 0 1)))
+; print_checker_assertion
+(assert (DEF__171 (- 0 1)))
+; print_checker_assertion
+
+; Checking k=2 base
+; not refinement_pass
+(assert (not (=> (= _base (- 0 1)) (and (P (- 0 1)) (P 0)))))
+(assert true)
+(check-sat)
diff --git a/test/regress/regress0/uflia/simple_cyclic2.smt2 b/test/regress/regress0/uflia/simple_cyclic2.smt2
new file mode 100644
index 0000000..7a0b399
--- /dev/null
+++ b/test/regress/regress0/uflia/simple_cyclic2.smt2
@@ -0,0 +1,44 @@
+(set-logic QF_UFIDL)
+(set-info :source |
+Benchmark generated from the verification of programs manipulating linked lists inside UCLID. For more information see:
+"Verifying properties of well-founded linked lists", Shuvendu Lahiri and Shaz Qaader, POPL 2006
+
+This benchmark was automatically translated into SMT-LIB format by Albert Oliveras.
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status sat)
+(declare-fun t.l () Int)
+(declare-fun en_LOCATION () Int)
+(declare-fun NULL () Int)
+(declare-fun ZERO () Int)
+(declare-fun i1 () Int)
+(declare-fun t.l0 () Int)
+(declare-fun t.pc () Int)
+(declare-fun t.t () Int)
+(declare-fun PRED_VAR__p_0 () Bool)
+(declare-fun PRED_VAR__p_1 () Bool)
+(declare-fun PRED_VAR__p_2 () Bool)
+(declare-fun PRED_VAR__p_16 () Bool)
+(declare-fun PRED_VAR__p_11 () Bool)
+(declare-fun PRED_VAR__p_10 () Bool)
+(declare-fun PRED_VAR__p_14 () Bool)
+(declare-fun PRED_VAR__p_12 () Bool)
+(declare-fun PRED_VAR__p_15 () Bool)
+(declare-fun PRED_VAR__p_18 () Bool)
+(declare-fun PRED_VAR__p_19 () Bool)
+(declare-fun PRED_VAR__p_3 () Bool)
+(declare-fun PRED_VAR__p_20 () Bool)
+(declare-fun PRED_VAR__p_8 () Bool)
+(declare-fun PRED_VAR__p_9 () Bool)
+(declare-fun t.I_nxt (Int) Int)
+(declare-fun t.I_nxt0 (Int) Int)
+(declare-fun t.data (Int) Int)
+(declare-fun t.nxt (Int) Int)
+(declare-fun t.H_nxt (Int) Bool)
+(declare-fun t.R_nxt (Int Int) Bool)
+(declare-fun t.H_nxt0 (Int) Bool)
+(declare-fun t.R_nxt0 (Int Int) Bool)
+(assert (let ((?v_0 (t.nxt t.l))) (let ((?v_7 (t.H_nxt ?v_0)) (?v_242 (+ 1 (+ 1 (+ 1 (+ 1 en_LOCATION)))))) (let ((?v_1 (= t.pc ?v_242)) (?v_2 (t.R_nxt ?v_0 i1))) (let ((?v_3 (not ?v_1))) (let ((?v_6 (or (and ?v_1 ?v_2) (and ?v_3 ?v_2))) (?v_4 (t.R_nxt t.l i1))) (let ((?v_247 (or (and ?v_1 ?v_4) (and ?v_3 ?v_4))) (?v_112 (= i1 t.l))) (let ((?v_5 (and ?v_247 (not ?v_112))) (?v_8 (t.R_nxt ?v_0 t.l)) (?v_9 (t.R_nxt ?v_0 t.t))) (let ((?v_12 (or (and ?v_1 ?v_9) (and ?v_3 ?v_9))) (?v_10 (t.R_n [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/uflia/speed2_e8_449_e8_517.ec.smt2 b/test/regress/regress0/uflia/speed2_e8_449_e8_517.ec.smt2
new file mode 100644
index 0000000..11fdfa5
--- /dev/null
+++ b/test/regress/regress0/uflia/speed2_e8_449_e8_517.ec.smt2
@@ -0,0 +1,747 @@
+(set-logic QF_UFLIA)
+(declare-fun _base () Int)
+(declare-fun _n () Int)
+(assert (let ((.def_5 (<= 0 _n)))
+.def_5
+))
+(declare-fun ___z2z___ (Int) Bool)
+(declare-fun ___z3z___ (Int) Bool)
+(declare-fun ___z4z___ (Int) Bool)
+(declare-fun ___z5z___ (Int) Bool)
+(declare-fun ___z6z___ (Int) Bool)
+(declare-fun ___z7z___ (Int) Int)
+(declare-fun ___z8z___ (Int) Int)
+(declare-fun ___z9z___ (Int) Int)
+(push 1)
+(assert (let ((.def_152 (___z4z___ 0)))
+(let ((.def_150 (= _base 0)))
+(let ((.def_147 (___z6z___ (- 1))))
+(let ((.def_148 (not .def_147)))
+(let ((.def_145 (___z5z___ 0)))
+(let ((.def_146 (not .def_145)))
+(let ((.def_149 (and .def_146 .def_148)))
+(let ((.def_151 (or .def_149 .def_150)))
+(let ((.def_153 (= .def_151 .def_152)))
+.def_153
+))))))))))
+(assert (let ((.def_157 (___z7z___ 0)))
+(let ((.def_161 (<= .def_157 (- 10))))
+(let ((.def_155 (___z5z___ (- 1))))
+(let ((.def_162 (or .def_155 .def_161)))
+(let ((.def_158 (<= 0 .def_157)))
+(let ((.def_159 (not .def_158)))
+(let ((.def_156 (not .def_155)))
+(let ((.def_160 (or .def_156 .def_159)))
+(let ((.def_163 (and .def_160 .def_162)))
+(let ((.def_150 (= _base 0)))
+(let ((.def_164 (or .def_150 .def_163)))
+(let ((.def_154 (not .def_150)))
+(let ((.def_165 (and .def_154 .def_164)))
+(let ((.def_145 (___z5z___ 0)))
+(let ((.def_166 (= .def_145 .def_165)))
+.def_166
+))))))))))))))))
+(assert (let ((.def_175 (___z6z___ 0)))
+(let ((.def_157 (___z7z___ 0)))
+(let ((.def_170 (<= 10 .def_157)))
+(let ((.def_147 (___z6z___ (- 1))))
+(let ((.def_171 (or .def_147 .def_170)))
+(let ((.def_167 (<= .def_157 0)))
+(let ((.def_168 (not .def_167)))
+(let ((.def_148 (not .def_147)))
+(let ((.def_169 (or .def_148 .def_168)))
+(let ((.def_172 (and .def_169 .def_171)))
+(let ((.def_150 (= _base 0)))
+(let ((.def_173 (or .def_150 .def_172)))
+(let ((.def_154 (not .def_150)))
+(let ((.def_174 (and .def_154 .def_173)))
+(let ((.def_176 (= .def_174 .def_175)))
+.def_176
+))))))))))))))))
+(assert (let ((.def_177 (___z9z___ 0)))
+(let ((.def_178 (___z8z___ 0)))
+(let ((.def_179 (+ .def_177 .def_178)))
+(let ((.def_181 (___z2z___ 0)))
+(let ((.def_180 (___z3z___ 0)))
+(let ((.def_182 (and .def_180 .def_181)))
+(let ((.def_183 (ite .def_182 .def_179 .def_177)))
+(let ((.def_157 (___z7z___ 0)))
+(let ((.def_184 (= .def_157 .def_183)))
+.def_184
+))))))))))
+(assert (let ((.def_181 (___z2z___ 0)))
+(let ((.def_185 (not .def_181)))
+(let ((.def_180 (___z3z___ 0)))
+(let ((.def_186 (and .def_180 .def_185)))
+(let ((.def_187 (ite .def_186 2 0)))
+(let ((.def_188 (not .def_180)))
+(let ((.def_189 (and .def_181 .def_188)))
+(let ((.def_190 (ite .def_189 1 .def_187)))
+(let ((.def_178 (___z8z___ 0)))
+(let ((.def_191 (= .def_178 .def_190)))
+.def_191
+)))))))))))
+(assert (let ((.def_192 (___z7z___ (- 1))))
+(let ((.def_150 (= _base 0)))
+(let ((.def_193 (ite .def_150 0 .def_192)))
+(let ((.def_177 (___z9z___ 0)))
+(let ((.def_194 (= .def_177 .def_193)))
+.def_194
+))))))
+(assert (let ((.def_201 (___z4z___ (- 1))))
+(let ((.def_199 (= _base (- 1))))
+(let ((.def_196 (___z6z___ (- 2))))
+(let ((.def_197 (not .def_196)))
+(let ((.def_155 (___z5z___ (- 1))))
+(let ((.def_156 (not .def_155)))
+(let ((.def_198 (and .def_156 .def_197)))
+(let ((.def_200 (or .def_198 .def_199)))
+(let ((.def_202 (= .def_200 .def_201)))
+.def_202
+))))))))))
+(assert (let ((.def_192 (___z7z___ (- 1))))
+(let ((.def_209 (<= .def_192 (- 10))))
+(let ((.def_204 (___z5z___ (- 2))))
+(let ((.def_210 (or .def_204 .def_209)))
+(let ((.def_206 (<= 0 .def_192)))
+(let ((.def_207 (not .def_206)))
+(let ((.def_205 (not .def_204)))
+(let ((.def_208 (or .def_205 .def_207)))
+(let ((.def_211 (and .def_208 .def_210)))
+(let ((.def_199 (= _base (- 1))))
+(let ((.def_212 (or .def_199 .def_211)))
+(let ((.def_203 (not .def_199)))
+(let ((.def_213 (and .def_203 .def_212)))
+(let ((.def_155 (___z5z___ (- 1))))
+(let ((.def_214 (= .def_155 .def_213)))
+.def_214
+))))))))))))))))
+(assert (let ((.def_192 (___z7z___ (- 1))))
+(let ((.def_218 (<= 10 .def_192)))
+(let ((.def_196 (___z6z___ (- 2))))
+(let ((.def_219 (or .def_196 .def_218)))
+(let ((.def_215 (<= .def_192 0)))
+(let ((.def_216 (not .def_215)))
+(let ((.def_197 (not .def_196)))
+(let ((.def_217 (or .def_197 .def_216)))
+(let ((.def_220 (and .def_217 .def_219)))
+(let ((.def_199 (= _base (- 1))))
+(let ((.def_221 (or .def_199 .def_220)))
+(let ((.def_203 (not .def_199)))
+(let ((.def_222 (and .def_203 .def_221)))
+(let ((.def_147 (___z6z___ (- 1))))
+(let ((.def_223 (= .def_147 .def_222)))
+.def_223
+))))))))))))))))
+(assert (let ((.def_224 (___z9z___ (- 1))))
+(let ((.def_225 (___z8z___ (- 1))))
+(let ((.def_226 (+ .def_224 .def_225)))
+(let ((.def_228 (___z2z___ (- 1))))
+(let ((.def_227 (___z3z___ (- 1))))
+(let ((.def_229 (and .def_227 .def_228)))
+(let ((.def_230 (ite .def_229 .def_226 .def_224)))
+(let ((.def_192 (___z7z___ (- 1))))
+(let ((.def_231 (= .def_192 .def_230)))
+.def_231
+))))))))))
+(assert (let ((.def_228 (___z2z___ (- 1))))
+(let ((.def_232 (not .def_228)))
+(let ((.def_227 (___z3z___ (- 1))))
+(let ((.def_233 (and .def_227 .def_232)))
+(let ((.def_234 (ite .def_233 2 0)))
+(let ((.def_235 (not .def_227)))
+(let ((.def_236 (and .def_228 .def_235)))
+(let ((.def_237 (ite .def_236 1 .def_234)))
+(let ((.def_225 (___z8z___ (- 1))))
+(let ((.def_238 (= .def_225 .def_237)))
+.def_238
+)))))))))))
+(assert (let ((.def_239 (___z7z___ (- 2))))
+(let ((.def_199 (= _base (- 1))))
+(let ((.def_240 (ite .def_199 0 .def_239)))
+(let ((.def_224 (___z9z___ (- 1))))
+(let ((.def_241 (= .def_224 .def_240)))
+.def_241
+))))))
+(push 1)
+(assert (let ((.def_201 (___z4z___ (- 1))))
+(let ((.def_152 (___z4z___ 0)))
+(let ((.def_242 (and .def_152 .def_201)))
+(let ((.def_199 (= _base (- 1))))
+(let ((.def_203 (not .def_199)))
+(let ((.def_243 (or .def_203 .def_242)))
+(let ((.def_244 (not .def_243)))
+.def_244
+))))))))
+(assert true
+)
+(check-sat)
+(pop 1)
+(assert (let ((.def_201 (___z4z___ (- 1))))
+.def_201
+))
+(assert (let ((.def_245 (___z4z___ (- 2))))
+.def_245
+))
+(push 1)
+(assert (let ((.def_254 (___z4z___ _n)))
+(let ((.def_252 (= _n _base)))
+(let ((.def_248 (+ _n (- 1))))
+(let ((.def_249 (___z6z___ .def_248)))
+(let ((.def_250 (not .def_249)))
+(let ((.def_246 (___z5z___ _n)))
+(let ((.def_247 (not .def_246)))
+(let ((.def_251 (and .def_247 .def_250)))
+(let ((.def_253 (or .def_251 .def_252)))
+(let ((.def_255 (= .def_253 .def_254)))
+.def_255
+)))))))))))
+(assert (let ((.def_259 (___z7z___ _n)))
+(let ((.def_263 (<= .def_259 (- 10))))
+(let ((.def_248 (+ _n (- 1))))
+(let ((.def_257 (___z5z___ .def_248)))
+(let ((.def_264 (or .def_257 .def_263)))
+(let ((.def_260 (<= 0 .def_259)))
+(let ((.def_261 (not .def_260)))
+(let ((.def_258 (not .def_257)))
+(let ((.def_262 (or .def_258 .def_261)))
+(let ((.def_265 (and .def_262 .def_264)))
+(let ((.def_252 (= _n _base)))
+(let ((.def_266 (or .def_252 .def_265)))
+(let ((.def_256 (not .def_252)))
+(let ((.def_267 (and .def_256 .def_266)))
+(let ((.def_246 (___z5z___ _n)))
+(let ((.def_268 (= .def_246 .def_267)))
+.def_268
+)))))))))))))))))
+(assert (let ((.def_277 (___z6z___ _n)))
+(let ((.def_259 (___z7z___ _n)))
+(let ((.def_272 (<= 10 .def_259)))
+(let ((.def_248 (+ _n (- 1))))
+(let ((.def_249 (___z6z___ .def_248)))
+(let ((.def_273 (or .def_249 .def_272)))
+(let ((.def_269 (<= .def_259 0)))
+(let ((.def_270 (not .def_269)))
+(let ((.def_250 (not .def_249)))
+(let ((.def_271 (or .def_250 .def_270)))
+(let ((.def_274 (and .def_271 .def_273)))
+(let ((.def_252 (= _n _base)))
+(let ((.def_275 (or .def_252 .def_274)))
+(let ((.def_256 (not .def_252)))
+(let ((.def_276 (and .def_256 .def_275)))
+(let ((.def_278 (= .def_276 .def_277)))
+.def_278
+)))))))))))))))))
+(assert (let ((.def_279 (___z9z___ _n)))
+(let ((.def_280 (___z8z___ _n)))
+(let ((.def_281 (+ .def_279 .def_280)))
+(let ((.def_283 (___z2z___ _n)))
+(let ((.def_282 (___z3z___ _n)))
+(let ((.def_284 (and .def_282 .def_283)))
+(let ((.def_285 (ite .def_284 .def_281 .def_279)))
+(let ((.def_259 (___z7z___ _n)))
+(let ((.def_286 (= .def_259 .def_285)))
+.def_286
+))))))))))
+(assert (let ((.def_283 (___z2z___ _n)))
+(let ((.def_287 (not .def_283)))
+(let ((.def_282 (___z3z___ _n)))
+(let ((.def_288 (and .def_282 .def_287)))
+(let ((.def_289 (ite .def_288 2 0)))
+(let ((.def_290 (not .def_282)))
+(let ((.def_291 (and .def_283 .def_290)))
+(let ((.def_292 (ite .def_291 1 .def_289)))
+(let ((.def_280 (___z8z___ _n)))
+(let ((.def_293 (= .def_280 .def_292)))
+.def_293
+)))))))))))
+(assert (let ((.def_248 (+ _n (- 1))))
+(let ((.def_294 (___z7z___ .def_248)))
+(let ((.def_252 (= _n _base)))
+(let ((.def_295 (ite .def_252 0 .def_294)))
+(let ((.def_279 (___z9z___ _n)))
+(let ((.def_296 (= .def_279 .def_295)))
+.def_296
+)))))))
+(assert (let ((.def_248 (+ _n (- 1))))
+(let ((.def_305 (___z4z___ .def_248)))
+(let ((.def_301 (* (- 1) _base)))
+(let ((.def_302 (+ _n .def_301)))
+(let ((.def_303 (= .def_302 1)))
+(let ((.def_297 (+ (- 1) .def_248)))
+(let ((.def_298 (___z6z___ .def_297)))
+(let ((.def_299 (not .def_298)))
+(let ((.def_257 (___z5z___ .def_248)))
+(let ((.def_258 (not .def_257)))
+(let ((.def_300 (and .def_258 .def_299)))
+(let ((.def_304 (or .def_300 .def_303)))
+(let ((.def_306 (= .def_304 .def_305)))
+.def_306
+))))))))))))))
+(assert (let ((.def_248 (+ _n (- 1))))
+(let ((.def_294 (___z7z___ .def_248)))
+(let ((.def_313 (<= .def_294 (- 10))))
+(let ((.def_297 (+ (- 1) .def_248)))
+(let ((.def_308 (___z5z___ .def_297)))
+(let ((.def_314 (or .def_308 .def_313)))
+(let ((.def_310 (<= 0 .def_294)))
+(let ((.def_311 (not .def_310)))
+(let ((.def_309 (not .def_308)))
+(let ((.def_312 (or .def_309 .def_311)))
+(let ((.def_315 (and .def_312 .def_314)))
+(let ((.def_301 (* (- 1) _base)))
+(let ((.def_302 (+ _n .def_301)))
+(let ((.def_303 (= .def_302 1)))
+(let ((.def_316 (or .def_303 .def_315)))
+(let ((.def_307 (not .def_303)))
+(let ((.def_317 (and .def_307 .def_316)))
+(let ((.def_257 (___z5z___ .def_248)))
+(let ((.def_318 (= .def_257 .def_317)))
+.def_318
+))))))))))))))))))))
+(assert (let ((.def_248 (+ _n (- 1))))
+(let ((.def_294 (___z7z___ .def_248)))
+(let ((.def_322 (<= 10 .def_294)))
+(let ((.def_297 (+ (- 1) .def_248)))
+(let ((.def_298 (___z6z___ .def_297)))
+(let ((.def_323 (or .def_298 .def_322)))
+(let ((.def_319 (<= .def_294 0)))
+(let ((.def_320 (not .def_319)))
+(let ((.def_299 (not .def_298)))
+(let ((.def_321 (or .def_299 .def_320)))
+(let ((.def_324 (and .def_321 .def_323)))
+(let ((.def_301 (* (- 1) _base)))
+(let ((.def_302 (+ _n .def_301)))
+(let ((.def_303 (= .def_302 1)))
+(let ((.def_325 (or .def_303 .def_324)))
+(let ((.def_307 (not .def_303)))
+(let ((.def_326 (and .def_307 .def_325)))
+(let ((.def_249 (___z6z___ .def_248)))
+(let ((.def_327 (= .def_249 .def_326)))
+.def_327
+))))))))))))))))))))
+(assert (let ((.def_248 (+ _n (- 1))))
+(let ((.def_328 (___z9z___ .def_248)))
+(let ((.def_329 (___z8z___ .def_248)))
+(let ((.def_330 (+ .def_328 .def_329)))
+(let ((.def_332 (___z2z___ .def_248)))
+(let ((.def_331 (___z3z___ .def_248)))
+(let ((.def_333 (and .def_331 .def_332)))
+(let ((.def_334 (ite .def_333 .def_330 .def_328)))
+(let ((.def_294 (___z7z___ .def_248)))
+(let ((.def_335 (= .def_294 .def_334)))
+.def_335
+)))))))))))
+(assert (let ((.def_248 (+ _n (- 1))))
+(let ((.def_332 (___z2z___ .def_248)))
+(let ((.def_336 (not .def_332)))
+(let ((.def_331 (___z3z___ .def_248)))
+(let ((.def_337 (and .def_331 .def_336)))
+(let ((.def_338 (ite .def_337 2 0)))
+(let ((.def_339 (not .def_331)))
+(let ((.def_340 (and .def_332 .def_339)))
+(let ((.def_341 (ite .def_340 1 .def_338)))
+(let ((.def_329 (___z8z___ .def_248)))
+(let ((.def_342 (= .def_329 .def_341)))
+.def_342
+))))))))))))
+(assert (let ((.def_248 (+ _n (- 1))))
+(let ((.def_297 (+ (- 1) .def_248)))
+(let ((.def_343 (___z7z___ .def_297)))
+(let ((.def_301 (* (- 1) _base)))
+(let ((.def_302 (+ _n .def_301)))
+(let ((.def_303 (= .def_302 1)))
+(let ((.def_344 (ite .def_303 0 .def_343)))
+(let ((.def_328 (___z9z___ .def_248)))
+(let ((.def_345 (= .def_328 .def_344)))
+.def_345
+))))))))))
+(assert (let ((.def_248 (+ _n (- 1))))
+(let ((.def_305 (___z4z___ .def_248)))
+.def_305
+)))
+(assert (let ((.def_254 (___z4z___ _n)))
+(let ((.def_199 (= _base (- 1))))
+(let ((.def_203 (not .def_199)))
+(let ((.def_346 (or .def_203 .def_254)))
+(let ((.def_347 (not .def_346)))
+.def_347
+))))))
+(assert true
+)
+(check-sat)
+(pop 1)
+(assert (let ((.def_248 (+ _n (- 1))))
+(let ((.def_305 (___z4z___ .def_248)))
+.def_305
+)))
+(assert (let ((.def_348 (+ _n (- 2))))
+(let ((.def_349 (___z4z___ .def_348)))
+.def_349
+)))
+(assert (let ((.def_354 (= _base (- 2))))
+(let ((.def_351 (___z6z___ (- 3))))
+(let ((.def_352 (not .def_351)))
+(let ((.def_204 (___z5z___ (- 2))))
+(let ((.def_205 (not .def_204)))
+(let ((.def_353 (and .def_205 .def_352)))
+(let ((.def_355 (or .def_353 .def_354)))
+(let ((.def_245 (___z4z___ (- 2))))
+(let ((.def_356 (= .def_245 .def_355)))
+.def_356
+))))))))))
+(assert (let ((.def_239 (___z7z___ (- 2))))
+(let ((.def_363 (<= .def_239 (- 10))))
+(let ((.def_358 (___z5z___ (- 3))))
+(let ((.def_364 (or .def_358 .def_363)))
+(let ((.def_360 (<= 0 .def_239)))
+(let ((.def_361 (not .def_360)))
+(let ((.def_359 (not .def_358)))
+(let ((.def_362 (or .def_359 .def_361)))
+(let ((.def_365 (and .def_362 .def_364)))
+(let ((.def_354 (= _base (- 2))))
+(let ((.def_366 (or .def_354 .def_365)))
+(let ((.def_357 (not .def_354)))
+(let ((.def_367 (and .def_357 .def_366)))
+(let ((.def_204 (___z5z___ (- 2))))
+(let ((.def_368 (= .def_204 .def_367)))
+.def_368
+))))))))))))))))
+(assert (let ((.def_239 (___z7z___ (- 2))))
+(let ((.def_372 (<= 10 .def_239)))
+(let ((.def_351 (___z6z___ (- 3))))
+(let ((.def_373 (or .def_351 .def_372)))
+(let ((.def_369 (<= .def_239 0)))
+(let ((.def_370 (not .def_369)))
+(let ((.def_352 (not .def_351)))
+(let ((.def_371 (or .def_352 .def_370)))
+(let ((.def_374 (and .def_371 .def_373)))
+(let ((.def_354 (= _base (- 2))))
+(let ((.def_375 (or .def_354 .def_374)))
+(let ((.def_357 (not .def_354)))
+(let ((.def_376 (and .def_357 .def_375)))
+(let ((.def_196 (___z6z___ (- 2))))
+(let ((.def_377 (= .def_196 .def_376)))
+.def_377
+))))))))))))))))
+(assert (let ((.def_378 (___z9z___ (- 2))))
+(let ((.def_379 (___z8z___ (- 2))))
+(let ((.def_380 (+ .def_378 .def_379)))
+(let ((.def_382 (___z2z___ (- 2))))
+(let ((.def_381 (___z3z___ (- 2))))
+(let ((.def_383 (and .def_381 .def_382)))
+(let ((.def_384 (ite .def_383 .def_380 .def_378)))
+(let ((.def_239 (___z7z___ (- 2))))
+(let ((.def_385 (= .def_239 .def_384)))
+.def_385
+))))))))))
+(assert (let ((.def_382 (___z2z___ (- 2))))
+(let ((.def_386 (not .def_382)))
+(let ((.def_381 (___z3z___ (- 2))))
+(let ((.def_387 (and .def_381 .def_386)))
+(let ((.def_388 (ite .def_387 2 0)))
+(let ((.def_389 (not .def_381)))
+(let ((.def_390 (and .def_382 .def_389)))
+(let ((.def_391 (ite .def_390 1 .def_388)))
+(let ((.def_379 (___z8z___ (- 2))))
+(let ((.def_392 (= .def_379 .def_391)))
+.def_392
+)))))))))))
+(assert (let ((.def_393 (___z7z___ (- 3))))
+(let ((.def_354 (= _base (- 2))))
+(let ((.def_394 (ite .def_354 0 .def_393)))
+(let ((.def_378 (___z9z___ (- 2))))
+(let ((.def_395 (= .def_378 .def_394)))
+.def_395
+))))))
+(assert (let ((.def_254 (___z4z___ _n)))
+(let ((.def_252 (= _n _base)))
+(let ((.def_248 (+ _n (- 1))))
+(let ((.def_249 (___z6z___ .def_248)))
+(let ((.def_250 (not .def_249)))
+(let ((.def_246 (___z5z___ _n)))
+(let ((.def_247 (not .def_246)))
+(let ((.def_251 (and .def_247 .def_250)))
+(let ((.def_253 (or .def_251 .def_252)))
+(let ((.def_255 (= .def_253 .def_254)))
+.def_255
+)))))))))))
+(assert (let ((.def_259 (___z7z___ _n)))
+(let ((.def_263 (<= .def_259 (- 10))))
+(let ((.def_248 (+ _n (- 1))))
+(let ((.def_257 (___z5z___ .def_248)))
+(let ((.def_264 (or .def_257 .def_263)))
+(let ((.def_260 (<= 0 .def_259)))
+(let ((.def_261 (not .def_260)))
+(let ((.def_258 (not .def_257)))
+(let ((.def_262 (or .def_258 .def_261)))
+(let ((.def_265 (and .def_262 .def_264)))
+(let ((.def_252 (= _n _base)))
+(let ((.def_266 (or .def_252 .def_265)))
+(let ((.def_256 (not .def_252)))
+(let ((.def_267 (and .def_256 .def_266)))
+(let ((.def_246 (___z5z___ _n)))
+(let ((.def_268 (= .def_246 .def_267)))
+.def_268
+)))))))))))))))))
+(assert (let ((.def_277 (___z6z___ _n)))
+(let ((.def_259 (___z7z___ _n)))
+(let ((.def_272 (<= 10 .def_259)))
+(let ((.def_248 (+ _n (- 1))))
+(let ((.def_249 (___z6z___ .def_248)))
+(let ((.def_273 (or .def_249 .def_272)))
+(let ((.def_269 (<= .def_259 0)))
+(let ((.def_270 (not .def_269)))
+(let ((.def_250 (not .def_249)))
+(let ((.def_271 (or .def_250 .def_270)))
+(let ((.def_274 (and .def_271 .def_273)))
+(let ((.def_252 (= _n _base)))
+(let ((.def_275 (or .def_252 .def_274)))
+(let ((.def_256 (not .def_252)))
+(let ((.def_276 (and .def_256 .def_275)))
+(let ((.def_278 (= .def_276 .def_277)))
+.def_278
+)))))))))))))))))
+(assert (let ((.def_279 (___z9z___ _n)))
+(let ((.def_280 (___z8z___ _n)))
+(let ((.def_281 (+ .def_279 .def_280)))
+(let ((.def_283 (___z2z___ _n)))
+(let ((.def_282 (___z3z___ _n)))
+(let ((.def_284 (and .def_282 .def_283)))
+(let ((.def_285 (ite .def_284 .def_281 .def_279)))
+(let ((.def_259 (___z7z___ _n)))
+(let ((.def_286 (= .def_259 .def_285)))
+.def_286
+))))))))))
+(assert (let ((.def_283 (___z2z___ _n)))
+(let ((.def_287 (not .def_283)))
+(let ((.def_282 (___z3z___ _n)))
+(let ((.def_288 (and .def_282 .def_287)))
+(let ((.def_289 (ite .def_288 2 0)))
+(let ((.def_290 (not .def_282)))
+(let ((.def_291 (and .def_283 .def_290)))
+(let ((.def_292 (ite .def_291 1 .def_289)))
+(let ((.def_280 (___z8z___ _n)))
+(let ((.def_293 (= .def_280 .def_292)))
+.def_293
+)))))))))))
+(assert (let ((.def_248 (+ _n (- 1))))
+(let ((.def_294 (___z7z___ .def_248)))
+(let ((.def_252 (= _n _base)))
+(let ((.def_295 (ite .def_252 0 .def_294)))
+(let ((.def_279 (___z9z___ _n)))
+(let ((.def_296 (= .def_279 .def_295)))
+.def_296
+)))))))
+(push 1)
+(assert (let ((.def_354 (= _base (- 2))))
+(let ((.def_357 (not .def_354)))
+(let ((.def_152 (___z4z___ 0)))
+(let ((.def_396 (or .def_152 .def_357)))
+(let ((.def_397 (not .def_396)))
+.def_397
+))))))
+(assert true
+)
+(check-sat)
+(pop 1)
+(assert (let ((.def_399 (___z4z___ (- 3))))
+.def_399
+))
+(push 1)
+(assert (let ((.def_248 (+ _n (- 1))))
+(let ((.def_305 (___z4z___ .def_248)))
+(let ((.def_301 (* (- 1) _base)))
+(let ((.def_302 (+ _n .def_301)))
+(let ((.def_303 (= .def_302 1)))
+(let ((.def_297 (+ (- 1) .def_248)))
+(let ((.def_298 (___z6z___ .def_297)))
+(let ((.def_299 (not .def_298)))
+(let ((.def_257 (___z5z___ .def_248)))
+(let ((.def_258 (not .def_257)))
+(let ((.def_300 (and .def_258 .def_299)))
+(let ((.def_304 (or .def_300 .def_303)))
+(let ((.def_306 (= .def_304 .def_305)))
+.def_306
+))))))))))))))
+(assert (let ((.def_248 (+ _n (- 1))))
+(let ((.def_294 (___z7z___ .def_248)))
+(let ((.def_313 (<= .def_294 (- 10))))
+(let ((.def_297 (+ (- 1) .def_248)))
+(let ((.def_308 (___z5z___ .def_297)))
+(let ((.def_314 (or .def_308 .def_313)))
+(let ((.def_310 (<= 0 .def_294)))
+(let ((.def_311 (not .def_310)))
+(let ((.def_309 (not .def_308)))
+(let ((.def_312 (or .def_309 .def_311)))
+(let ((.def_315 (and .def_312 .def_314)))
+(let ((.def_301 (* (- 1) _base)))
+(let ((.def_302 (+ _n .def_301)))
+(let ((.def_303 (= .def_302 1)))
+(let ((.def_316 (or .def_303 .def_315)))
+(let ((.def_307 (not .def_303)))
+(let ((.def_317 (and .def_307 .def_316)))
+(let ((.def_257 (___z5z___ .def_248)))
+(let ((.def_318 (= .def_257 .def_317)))
+.def_318
+))))))))))))))))))))
+(assert (let ((.def_248 (+ _n (- 1))))
+(let ((.def_294 (___z7z___ .def_248)))
+(let ((.def_322 (<= 10 .def_294)))
+(let ((.def_297 (+ (- 1) .def_248)))
+(let ((.def_298 (___z6z___ .def_297)))
+(let ((.def_323 (or .def_298 .def_322)))
+(let ((.def_319 (<= .def_294 0)))
+(let ((.def_320 (not .def_319)))
+(let ((.def_299 (not .def_298)))
+(let ((.def_321 (or .def_299 .def_320)))
+(let ((.def_324 (and .def_321 .def_323)))
+(let ((.def_301 (* (- 1) _base)))
+(let ((.def_302 (+ _n .def_301)))
+(let ((.def_303 (= .def_302 1)))
+(let ((.def_325 (or .def_303 .def_324)))
+(let ((.def_307 (not .def_303)))
+(let ((.def_326 (and .def_307 .def_325)))
+(let ((.def_249 (___z6z___ .def_248)))
+(let ((.def_327 (= .def_249 .def_326)))
+.def_327
+))))))))))))))))))))
+(assert (let ((.def_248 (+ _n (- 1))))
+(let ((.def_328 (___z9z___ .def_248)))
+(let ((.def_329 (___z8z___ .def_248)))
+(let ((.def_330 (+ .def_328 .def_329)))
+(let ((.def_332 (___z2z___ .def_248)))
+(let ((.def_331 (___z3z___ .def_248)))
+(let ((.def_333 (and .def_331 .def_332)))
+(let ((.def_334 (ite .def_333 .def_330 .def_328)))
+(let ((.def_294 (___z7z___ .def_248)))
+(let ((.def_335 (= .def_294 .def_334)))
+.def_335
+)))))))))))
+(assert (let ((.def_248 (+ _n (- 1))))
+(let ((.def_332 (___z2z___ .def_248)))
+(let ((.def_336 (not .def_332)))
+(let ((.def_331 (___z3z___ .def_248)))
+(let ((.def_337 (and .def_331 .def_336)))
+(let ((.def_338 (ite .def_337 2 0)))
+(let ((.def_339 (not .def_331)))
+(let ((.def_340 (and .def_332 .def_339)))
+(let ((.def_341 (ite .def_340 1 .def_338)))
+(let ((.def_329 (___z8z___ .def_248)))
+(let ((.def_342 (= .def_329 .def_341)))
+.def_342
+))))))))))))
+(assert (let ((.def_248 (+ _n (- 1))))
+(let ((.def_297 (+ (- 1) .def_248)))
+(let ((.def_343 (___z7z___ .def_297)))
+(let ((.def_301 (* (- 1) _base)))
+(let ((.def_302 (+ _n .def_301)))
+(let ((.def_303 (= .def_302 1)))
+(let ((.def_344 (ite .def_303 0 .def_343)))
+(let ((.def_328 (___z9z___ .def_248)))
+(let ((.def_345 (= .def_328 .def_344)))
+.def_345
+))))))))))
+(assert (let ((.def_301 (* (- 1) _base)))
+(let ((.def_302 (+ _n .def_301)))
+(let ((.def_406 (= .def_302 2)))
+(let ((.def_348 (+ _n (- 2))))
+(let ((.def_402 (+ (- 1) .def_348)))
+(let ((.def_403 (___z6z___ .def_402)))
+(let ((.def_404 (not .def_403)))
+(let ((.def_400 (___z5z___ .def_348)))
+(let ((.def_401 (not .def_400)))
+(let ((.def_405 (and .def_401 .def_404)))
+(let ((.def_407 (or .def_405 .def_406)))
+(let ((.def_349 (___z4z___ .def_348)))
+(let ((.def_408 (= .def_349 .def_407)))
+.def_408
+))))))))))))))
+(assert (let ((.def_348 (+ _n (- 2))))
+(let ((.def_412 (___z7z___ .def_348)))
+(let ((.def_416 (<= .def_412 (- 10))))
+(let ((.def_402 (+ (- 1) .def_348)))
+(let ((.def_410 (___z5z___ .def_402)))
+(let ((.def_417 (or .def_410 .def_416)))
+(let ((.def_413 (<= 0 .def_412)))
+(let ((.def_414 (not .def_413)))
+(let ((.def_411 (not .def_410)))
+(let ((.def_415 (or .def_411 .def_414)))
+(let ((.def_418 (and .def_415 .def_417)))
+(let ((.def_301 (* (- 1) _base)))
+(let ((.def_302 (+ _n .def_301)))
+(let ((.def_406 (= .def_302 2)))
+(let ((.def_419 (or .def_406 .def_418)))
+(let ((.def_409 (not .def_406)))
+(let ((.def_420 (and .def_409 .def_419)))
+(let ((.def_400 (___z5z___ .def_348)))
+(let ((.def_421 (= .def_400 .def_420)))
+.def_421
+))))))))))))))))))))
+(assert (let ((.def_348 (+ _n (- 2))))
+(let ((.def_430 (___z6z___ .def_348)))
+(let ((.def_412 (___z7z___ .def_348)))
+(let ((.def_425 (<= 10 .def_412)))
+(let ((.def_402 (+ (- 1) .def_348)))
+(let ((.def_403 (___z6z___ .def_402)))
+(let ((.def_426 (or .def_403 .def_425)))
+(let ((.def_422 (<= .def_412 0)))
+(let ((.def_423 (not .def_422)))
+(let ((.def_404 (not .def_403)))
+(let ((.def_424 (or .def_404 .def_423)))
+(let ((.def_427 (and .def_424 .def_426)))
+(let ((.def_301 (* (- 1) _base)))
+(let ((.def_302 (+ _n .def_301)))
+(let ((.def_406 (= .def_302 2)))
+(let ((.def_428 (or .def_406 .def_427)))
+(let ((.def_409 (not .def_406)))
+(let ((.def_429 (and .def_409 .def_428)))
+(let ((.def_431 (= .def_429 .def_430)))
+.def_431
+))))))))))))))))))))
+(assert (let ((.def_348 (+ _n (- 2))))
+(let ((.def_432 (___z9z___ .def_348)))
+(let ((.def_433 (___z8z___ .def_348)))
+(let ((.def_434 (+ .def_432 .def_433)))
+(let ((.def_436 (___z2z___ .def_348)))
+(let ((.def_435 (___z3z___ .def_348)))
+(let ((.def_437 (and .def_435 .def_436)))
+(let ((.def_438 (ite .def_437 .def_434 .def_432)))
+(let ((.def_412 (___z7z___ .def_348)))
+(let ((.def_439 (= .def_412 .def_438)))
+.def_439
+)))))))))))
+(assert (let ((.def_348 (+ _n (- 2))))
+(let ((.def_436 (___z2z___ .def_348)))
+(let ((.def_440 (not .def_436)))
+(let ((.def_435 (___z3z___ .def_348)))
+(let ((.def_441 (and .def_435 .def_440)))
+(let ((.def_442 (ite .def_441 2 0)))
+(let ((.def_443 (not .def_435)))
+(let ((.def_444 (and .def_436 .def_443)))
+(let ((.def_445 (ite .def_444 1 .def_442)))
+(let ((.def_433 (___z8z___ .def_348)))
+(let ((.def_446 (= .def_433 .def_445)))
+.def_446
+))))))))))))
+(assert (let ((.def_348 (+ _n (- 2))))
+(let ((.def_402 (+ (- 1) .def_348)))
+(let ((.def_447 (___z7z___ .def_402)))
+(let ((.def_301 (* (- 1) _base)))
+(let ((.def_302 (+ _n .def_301)))
+(let ((.def_406 (= .def_302 2)))
+(let ((.def_448 (ite .def_406 0 .def_447)))
+(let ((.def_432 (___z9z___ .def_348)))
+(let ((.def_449 (= .def_432 .def_448)))
+.def_449
+))))))))))
+(assert (let ((.def_354 (= _base (- 2))))
+(let ((.def_357 (not .def_354)))
+(let ((.def_254 (___z4z___ _n)))
+(let ((.def_450 (or .def_254 .def_357)))
+(let ((.def_451 (not .def_450)))
+.def_451
+))))))
+(assert true
+)
+(check-sat)
diff --git a/test/regress/regress0/uflia/speed2_e8_449_e8_517.ec.smt2.expect b/test/regress/regress0/uflia/speed2_e8_449_e8_517.ec.smt2.expect
new file mode 100644
index 0000000..65fb9b3
--- /dev/null
+++ b/test/regress/regress0/uflia/speed2_e8_449_e8_517.ec.smt2.expect
@@ -0,0 +1,5 @@
+% COMMAND-LINE: --incremental
+% EXPECT: unsat
+% EXPECT: sat
+% EXPECT: unsat
+% EXPECT: unsat
diff --git a/test/regress/regress0/uflia/stalmark_e7_27_e7_31.ec.minimized.smt2 b/test/regress/regress0/uflia/stalmark_e7_27_e7_31.ec.minimized.smt2
new file mode 100644
index 0000000..019d70d
--- /dev/null
+++ b/test/regress/regress0/uflia/stalmark_e7_27_e7_31.ec.minimized.smt2
@@ -0,0 +1,161 @@
+(set-logic QF_UFLIA)
+(declare-fun _base () Int)
+(declare-fun _n () Int)
+(assert (let ((.def_5 (<= 0 _n)))
+.def_5
+))
+(declare-fun ___z3z___ (Int) Bool)
+(declare-fun ___z4z___ (Int) Bool)
+(declare-fun ___z5z___ (Int) Bool)
+(declare-fun ___z6z___ (Int) Bool)
+(push 1)
+(assert (let ((.def_120 (= _base 0)))
+(let ((.def_119 (___z6z___ (- 1))))
+(let ((.def_121 (or .def_119 .def_120)))
+(let ((.def_99 (___z4z___ 0)))
+(let ((.def_122 (= .def_99 .def_121)))
+.def_122
+))))))
+(assert (let ((.def_190 (+ _n (- 1))))
+(let ((.def_222 (+ (- 1) .def_190)))
+(let ((.def_234 (___z5z___ .def_222)))
+(let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_226 (= .def_225 1)))
+(let ((.def_235 (or .def_226 .def_234)))
+(let ((.def_229 (not .def_226)))
+(let ((.def_236 (and .def_229 .def_235)))
+(let ((.def_191 (___z6z___ .def_190)))
+(let ((.def_237 (= .def_191 .def_236)))
+.def_237
+))))))))))))
+(check-sat)
+(pop 1)
+(assert (let ((.def_188 (___z3z___ _n)))
+(let ((.def_170 (___z4z___ _n)))
+(let ((.def_179 (not .def_170)))
+(let ((.def_169 (___z5z___ _n)))
+(let ((.def_175 (not .def_169)))
+(let ((.def_182 (or .def_175 .def_179)))
+(let ((.def_172 (___z6z___ _n)))
+(let ((.def_183 (or .def_172 .def_182)))
+(let ((.def_180 (and .def_169 .def_179)))
+(let ((.def_177 (not .def_172)))
+(let ((.def_181 (and .def_177 .def_180)))
+(let ((.def_184 (or .def_181 .def_183)))
+(let ((.def_176 (and .def_170 .def_175)))
+(let ((.def_178 (and .def_176 .def_177)))
+(let ((.def_185 (or .def_178 .def_184)))
+(let ((.def_171 (and .def_169 .def_170)))
+(let ((.def_173 (and .def_171 .def_172)))
+(let ((.def_186 (or .def_173 .def_185)))
+(let ((.def_174 (not .def_173)))
+(let ((.def_187 (and .def_174 .def_186)))
+(let ((.def_189 (= .def_187 .def_188)))
+.def_189
+))))))))))))))))))))))
+(assert (let ((.def_192 (= _n _base)))
+(let ((.def_190 (+ _n (- 1))))
+(let ((.def_191 (___z6z___ .def_190)))
+(let ((.def_193 (or .def_191 .def_192)))
+(let ((.def_170 (___z4z___ _n)))
+(let ((.def_194 (= .def_170 .def_193)))
+.def_194
+)))))))
+(assert (let ((.def_190 (+ _n (- 1))))
+(let ((.def_196 (___z4z___ .def_190)))
+(let ((.def_192 (= _n _base)))
+(let ((.def_197 (or .def_192 .def_196)))
+(let ((.def_195 (not .def_192)))
+(let ((.def_198 (and .def_195 .def_197)))
+(let ((.def_169 (___z5z___ _n)))
+(let ((.def_199 (= .def_169 .def_198)))
+.def_199
+)))))))))
+(assert (let ((.def_313 (+ _n (- 3))))
+(let ((.def_314 (___z3z___ .def_313)))
+.def_314
+)))
+(assert (let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_226 (= .def_225 1)))
+(let ((.def_190 (+ _n (- 1))))
+(let ((.def_222 (+ (- 1) .def_190)))
+(let ((.def_223 (___z6z___ .def_222)))
+(let ((.def_227 (or .def_223 .def_226)))
+(let ((.def_196 (___z4z___ .def_190)))
+(let ((.def_228 (= .def_196 .def_227)))
+.def_228
+))))))))))
+(assert (let ((.def_190 (+ _n (- 1))))
+(let ((.def_222 (+ (- 1) .def_190)))
+(let ((.def_234 (___z5z___ .def_222)))
+(let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_226 (= .def_225 1)))
+(let ((.def_235 (or .def_226 .def_234)))
+(let ((.def_229 (not .def_226)))
+(let ((.def_236 (and .def_229 .def_235)))
+(let ((.def_191 (___z6z___ .def_190)))
+(let ((.def_237 (= .def_191 .def_236)))
+.def_237
+))))))))))))
+(push 1)
+(assert (let ((.def_240 (+ _n (- 2))))
+(let ((.def_297 (+ (- 1) .def_240)))
+(let ((.def_303 (___z4z___ .def_297)))
+(let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_299 (= .def_225 2)))
+(let ((.def_304 (or .def_299 .def_303)))
+(let ((.def_302 (not .def_299)))
+(let ((.def_305 (and .def_302 .def_304)))
+(let ((.def_277 (___z5z___ .def_240)))
+(let ((.def_306 (= .def_277 .def_305)))
+.def_306
+))))))))))))
+(assert (let ((.def_240 (+ _n (- 2))))
+(let ((.def_297 (+ (- 1) .def_240)))
+(let ((.def_307 (___z5z___ .def_297)))
+(let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_299 (= .def_225 2)))
+(let ((.def_308 (or .def_299 .def_307)))
+(let ((.def_302 (not .def_299)))
+(let ((.def_309 (and .def_302 .def_308)))
+(let ((.def_280 (___z6z___ .def_240)))
+(let ((.def_310 (= .def_280 .def_309)))
+.def_310
+))))))))))))
+(assert (let ((.def_313 (+ _n (- 3))))
+(let ((.def_351 (___z4z___ .def_313)))
+(let ((.def_360 (not .def_351)))
+(let ((.def_350 (___z5z___ .def_313)))
+(let ((.def_356 (not .def_350)))
+(let ((.def_363 (or .def_356 .def_360)))
+(let ((.def_353 (___z6z___ .def_313)))
+(let ((.def_364 (or .def_353 .def_363)))
+(let ((.def_361 (and .def_350 .def_360)))
+(let ((.def_358 (not .def_353)))
+(let ((.def_362 (and .def_358 .def_361)))
+(let ((.def_365 (or .def_362 .def_364)))
+(let ((.def_357 (and .def_351 .def_356)))
+(let ((.def_359 (and .def_357 .def_358)))
+(let ((.def_366 (or .def_359 .def_365)))
+(let ((.def_352 (and .def_350 .def_351)))
+(let ((.def_354 (and .def_352 .def_353)))
+(let ((.def_367 (or .def_354 .def_366)))
+(let ((.def_355 (not .def_354)))
+(let ((.def_368 (and .def_355 .def_367)))
+(let ((.def_314 (___z3z___ .def_313)))
+(let ((.def_369 (= .def_314 .def_368)))
+.def_369
+)))))))))))))))))))))))
+(assert (let ((.def_334 (= _base (- 3))))
+(let ((.def_337 (not .def_334)))
+(let ((.def_188 (___z3z___ _n)))
+(let ((.def_384 (or .def_188 .def_337)))
+(let ((.def_385 (not .def_384)))
+.def_385
+))))))
+(check-sat)
diff --git a/test/regress/regress0/uflia/stalmark_e7_27_e7_31.ec.minimized.smt2.expect b/test/regress/regress0/uflia/stalmark_e7_27_e7_31.ec.minimized.smt2.expect
new file mode 100644
index 0000000..fe11817
--- /dev/null
+++ b/test/regress/regress0/uflia/stalmark_e7_27_e7_31.ec.minimized.smt2.expect
@@ -0,0 +1,3 @@
+% COMMAND-LINE: --incremental
+% EXPECT: sat
+% EXPECT: unsat
diff --git a/test/regress/regress0/uflia/stalmark_e7_27_e7_31.ec.smt2 b/test/regress/regress0/uflia/stalmark_e7_27_e7_31.ec.smt2
new file mode 100644
index 0000000..381eb74
--- /dev/null
+++ b/test/regress/regress0/uflia/stalmark_e7_27_e7_31.ec.smt2
@@ -0,0 +1,772 @@
+(set-logic QF_UFLIA)
+(declare-fun _base () Int)
+(declare-fun _n () Int)
+(assert (let ((.def_5 (<= 0 _n)))
+.def_5
+))
+(declare-fun ___z3z___ (Int) Bool)
+(declare-fun ___z4z___ (Int) Bool)
+(declare-fun ___z5z___ (Int) Bool)
+(declare-fun ___z6z___ (Int) Bool)
+(push 1)
+(assert (let ((.def_117 (___z3z___ 0)))
+(let ((.def_99 (___z4z___ 0)))
+(let ((.def_108 (not .def_99)))
+(let ((.def_98 (___z5z___ 0)))
+(let ((.def_104 (not .def_98)))
+(let ((.def_111 (or .def_104 .def_108)))
+(let ((.def_101 (___z6z___ 0)))
+(let ((.def_112 (or .def_101 .def_111)))
+(let ((.def_109 (and .def_98 .def_108)))
+(let ((.def_106 (not .def_101)))
+(let ((.def_110 (and .def_106 .def_109)))
+(let ((.def_113 (or .def_110 .def_112)))
+(let ((.def_105 (and .def_99 .def_104)))
+(let ((.def_107 (and .def_105 .def_106)))
+(let ((.def_114 (or .def_107 .def_113)))
+(let ((.def_100 (and .def_98 .def_99)))
+(let ((.def_102 (and .def_100 .def_101)))
+(let ((.def_115 (or .def_102 .def_114)))
+(let ((.def_103 (not .def_102)))
+(let ((.def_116 (and .def_103 .def_115)))
+(let ((.def_118 (= .def_116 .def_117)))
+.def_118
+))))))))))))))))))))))
+(assert (let ((.def_120 (= _base 0)))
+(let ((.def_119 (___z6z___ (- 1))))
+(let ((.def_121 (or .def_119 .def_120)))
+(let ((.def_99 (___z4z___ 0)))
+(let ((.def_122 (= .def_99 .def_121)))
+.def_122
+))))))
+(assert (let ((.def_124 (___z4z___ (- 1))))
+(let ((.def_120 (= _base 0)))
+(let ((.def_125 (or .def_120 .def_124)))
+(let ((.def_123 (not .def_120)))
+(let ((.def_126 (and .def_123 .def_125)))
+(let ((.def_98 (___z5z___ 0)))
+(let ((.def_127 (= .def_98 .def_126)))
+.def_127
+))))))))
+(assert (let ((.def_128 (___z5z___ (- 1))))
+(let ((.def_120 (= _base 0)))
+(let ((.def_129 (or .def_120 .def_128)))
+(let ((.def_123 (not .def_120)))
+(let ((.def_130 (and .def_123 .def_129)))
+(let ((.def_101 (___z6z___ 0)))
+(let ((.def_131 (= .def_101 .def_130)))
+.def_131
+))))))))
+(assert (let ((.def_148 (___z3z___ (- 1))))
+(let ((.def_124 (___z4z___ (- 1))))
+(let ((.def_139 (not .def_124)))
+(let ((.def_128 (___z5z___ (- 1))))
+(let ((.def_135 (not .def_128)))
+(let ((.def_142 (or .def_135 .def_139)))
+(let ((.def_119 (___z6z___ (- 1))))
+(let ((.def_143 (or .def_119 .def_142)))
+(let ((.def_140 (and .def_128 .def_139)))
+(let ((.def_137 (not .def_119)))
+(let ((.def_141 (and .def_137 .def_140)))
+(let ((.def_144 (or .def_141 .def_143)))
+(let ((.def_136 (and .def_124 .def_135)))
+(let ((.def_138 (and .def_136 .def_137)))
+(let ((.def_145 (or .def_138 .def_144)))
+(let ((.def_132 (and .def_124 .def_128)))
+(let ((.def_133 (and .def_119 .def_132)))
+(let ((.def_146 (or .def_133 .def_145)))
+(let ((.def_134 (not .def_133)))
+(let ((.def_147 (and .def_134 .def_146)))
+(let ((.def_149 (= .def_147 .def_148)))
+.def_149
+))))))))))))))))))))))
+(assert (let ((.def_152 (= _base (- 1))))
+(let ((.def_151 (___z6z___ (- 2))))
+(let ((.def_153 (or .def_151 .def_152)))
+(let ((.def_124 (___z4z___ (- 1))))
+(let ((.def_154 (= .def_124 .def_153)))
+.def_154
+))))))
+(assert (let ((.def_156 (___z4z___ (- 2))))
+(let ((.def_152 (= _base (- 1))))
+(let ((.def_157 (or .def_152 .def_156)))
+(let ((.def_155 (not .def_152)))
+(let ((.def_158 (and .def_155 .def_157)))
+(let ((.def_128 (___z5z___ (- 1))))
+(let ((.def_159 (= .def_128 .def_158)))
+.def_159
+))))))))
+(assert (let ((.def_160 (___z5z___ (- 2))))
+(let ((.def_152 (= _base (- 1))))
+(let ((.def_161 (or .def_152 .def_160)))
+(let ((.def_155 (not .def_152)))
+(let ((.def_162 (and .def_155 .def_161)))
+(let ((.def_119 (___z6z___ (- 1))))
+(let ((.def_163 (= .def_119 .def_162)))
+.def_163
+))))))))
+(push 1)
+(assert (let ((.def_148 (___z3z___ (- 1))))
+(let ((.def_117 (___z3z___ 0)))
+(let ((.def_164 (and .def_117 .def_148)))
+(let ((.def_152 (= _base (- 1))))
+(let ((.def_155 (not .def_152)))
+(let ((.def_165 (or .def_155 .def_164)))
+(let ((.def_166 (not .def_165)))
+.def_166
+))))))))
+(assert true
+)
+(check-sat)
+(pop 1)
+(assert (let ((.def_148 (___z3z___ (- 1))))
+.def_148
+))
+(assert (let ((.def_168 (___z3z___ (- 2))))
+.def_168
+))
+(push 1)
+(assert (let ((.def_188 (___z3z___ _n)))
+(let ((.def_170 (___z4z___ _n)))
+(let ((.def_179 (not .def_170)))
+(let ((.def_169 (___z5z___ _n)))
+(let ((.def_175 (not .def_169)))
+(let ((.def_182 (or .def_175 .def_179)))
+(let ((.def_172 (___z6z___ _n)))
+(let ((.def_183 (or .def_172 .def_182)))
+(let ((.def_180 (and .def_169 .def_179)))
+(let ((.def_177 (not .def_172)))
+(let ((.def_181 (and .def_177 .def_180)))
+(let ((.def_184 (or .def_181 .def_183)))
+(let ((.def_176 (and .def_170 .def_175)))
+(let ((.def_178 (and .def_176 .def_177)))
+(let ((.def_185 (or .def_178 .def_184)))
+(let ((.def_171 (and .def_169 .def_170)))
+(let ((.def_173 (and .def_171 .def_172)))
+(let ((.def_186 (or .def_173 .def_185)))
+(let ((.def_174 (not .def_173)))
+(let ((.def_187 (and .def_174 .def_186)))
+(let ((.def_189 (= .def_187 .def_188)))
+.def_189
+))))))))))))))))))))))
+(assert (let ((.def_192 (= _n _base)))
+(let ((.def_190 (+ _n (- 1))))
+(let ((.def_191 (___z6z___ .def_190)))
+(let ((.def_193 (or .def_191 .def_192)))
+(let ((.def_170 (___z4z___ _n)))
+(let ((.def_194 (= .def_170 .def_193)))
+.def_194
+)))))))
+(assert (let ((.def_190 (+ _n (- 1))))
+(let ((.def_196 (___z4z___ .def_190)))
+(let ((.def_192 (= _n _base)))
+(let ((.def_197 (or .def_192 .def_196)))
+(let ((.def_195 (not .def_192)))
+(let ((.def_198 (and .def_195 .def_197)))
+(let ((.def_169 (___z5z___ _n)))
+(let ((.def_199 (= .def_169 .def_198)))
+.def_199
+)))))))))
+(assert (let ((.def_190 (+ _n (- 1))))
+(let ((.def_200 (___z5z___ .def_190)))
+(let ((.def_192 (= _n _base)))
+(let ((.def_201 (or .def_192 .def_200)))
+(let ((.def_195 (not .def_192)))
+(let ((.def_202 (and .def_195 .def_201)))
+(let ((.def_172 (___z6z___ _n)))
+(let ((.def_203 (= .def_172 .def_202)))
+.def_203
+)))))))))
+(assert (let ((.def_190 (+ _n (- 1))))
+(let ((.def_220 (___z3z___ .def_190)))
+(let ((.def_196 (___z4z___ .def_190)))
+(let ((.def_211 (not .def_196)))
+(let ((.def_200 (___z5z___ .def_190)))
+(let ((.def_207 (not .def_200)))
+(let ((.def_214 (or .def_207 .def_211)))
+(let ((.def_191 (___z6z___ .def_190)))
+(let ((.def_215 (or .def_191 .def_214)))
+(let ((.def_212 (and .def_200 .def_211)))
+(let ((.def_209 (not .def_191)))
+(let ((.def_213 (and .def_209 .def_212)))
+(let ((.def_216 (or .def_213 .def_215)))
+(let ((.def_208 (and .def_196 .def_207)))
+(let ((.def_210 (and .def_208 .def_209)))
+(let ((.def_217 (or .def_210 .def_216)))
+(let ((.def_204 (and .def_196 .def_200)))
+(let ((.def_205 (and .def_191 .def_204)))
+(let ((.def_218 (or .def_205 .def_217)))
+(let ((.def_206 (not .def_205)))
+(let ((.def_219 (and .def_206 .def_218)))
+(let ((.def_221 (= .def_219 .def_220)))
+.def_221
+)))))))))))))))))))))))
+(assert (let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_226 (= .def_225 1)))
+(let ((.def_190 (+ _n (- 1))))
+(let ((.def_222 (+ (- 1) .def_190)))
+(let ((.def_223 (___z6z___ .def_222)))
+(let ((.def_227 (or .def_223 .def_226)))
+(let ((.def_196 (___z4z___ .def_190)))
+(let ((.def_228 (= .def_196 .def_227)))
+.def_228
+))))))))))
+(assert (let ((.def_190 (+ _n (- 1))))
+(let ((.def_222 (+ (- 1) .def_190)))
+(let ((.def_230 (___z4z___ .def_222)))
+(let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_226 (= .def_225 1)))
+(let ((.def_231 (or .def_226 .def_230)))
+(let ((.def_229 (not .def_226)))
+(let ((.def_232 (and .def_229 .def_231)))
+(let ((.def_200 (___z5z___ .def_190)))
+(let ((.def_233 (= .def_200 .def_232)))
+.def_233
+))))))))))))
+(assert (let ((.def_190 (+ _n (- 1))))
+(let ((.def_222 (+ (- 1) .def_190)))
+(let ((.def_234 (___z5z___ .def_222)))
+(let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_226 (= .def_225 1)))
+(let ((.def_235 (or .def_226 .def_234)))
+(let ((.def_229 (not .def_226)))
+(let ((.def_236 (and .def_229 .def_235)))
+(let ((.def_191 (___z6z___ .def_190)))
+(let ((.def_237 (= .def_191 .def_236)))
+.def_237
+))))))))))))
+(assert (let ((.def_190 (+ _n (- 1))))
+(let ((.def_220 (___z3z___ .def_190)))
+.def_220
+)))
+(assert (let ((.def_188 (___z3z___ _n)))
+(let ((.def_152 (= _base (- 1))))
+(let ((.def_155 (not .def_152)))
+(let ((.def_238 (or .def_155 .def_188)))
+(let ((.def_239 (not .def_238)))
+.def_239
+))))))
+(assert true
+)
+(check-sat)
+(pop 1)
+(assert (let ((.def_190 (+ _n (- 1))))
+(let ((.def_220 (___z3z___ .def_190)))
+.def_220
+)))
+(assert (let ((.def_240 (+ _n (- 2))))
+(let ((.def_241 (___z3z___ .def_240)))
+.def_241
+)))
+(assert (let ((.def_156 (___z4z___ (- 2))))
+(let ((.def_249 (not .def_156)))
+(let ((.def_160 (___z5z___ (- 2))))
+(let ((.def_245 (not .def_160)))
+(let ((.def_252 (or .def_245 .def_249)))
+(let ((.def_151 (___z6z___ (- 2))))
+(let ((.def_253 (or .def_151 .def_252)))
+(let ((.def_250 (and .def_160 .def_249)))
+(let ((.def_247 (not .def_151)))
+(let ((.def_251 (and .def_247 .def_250)))
+(let ((.def_254 (or .def_251 .def_253)))
+(let ((.def_246 (and .def_156 .def_245)))
+(let ((.def_248 (and .def_246 .def_247)))
+(let ((.def_255 (or .def_248 .def_254)))
+(let ((.def_242 (and .def_156 .def_160)))
+(let ((.def_243 (and .def_151 .def_242)))
+(let ((.def_256 (or .def_243 .def_255)))
+(let ((.def_244 (not .def_243)))
+(let ((.def_257 (and .def_244 .def_256)))
+(let ((.def_168 (___z3z___ (- 2))))
+(let ((.def_258 (= .def_168 .def_257)))
+.def_258
+))))))))))))))))))))))
+(assert (let ((.def_261 (= _base (- 2))))
+(let ((.def_260 (___z6z___ (- 3))))
+(let ((.def_262 (or .def_260 .def_261)))
+(let ((.def_156 (___z4z___ (- 2))))
+(let ((.def_263 (= .def_156 .def_262)))
+.def_263
+))))))
+(assert (let ((.def_265 (___z4z___ (- 3))))
+(let ((.def_261 (= _base (- 2))))
+(let ((.def_266 (or .def_261 .def_265)))
+(let ((.def_264 (not .def_261)))
+(let ((.def_267 (and .def_264 .def_266)))
+(let ((.def_160 (___z5z___ (- 2))))
+(let ((.def_268 (= .def_160 .def_267)))
+.def_268
+))))))))
+(assert (let ((.def_269 (___z5z___ (- 3))))
+(let ((.def_261 (= _base (- 2))))
+(let ((.def_270 (or .def_261 .def_269)))
+(let ((.def_264 (not .def_261)))
+(let ((.def_271 (and .def_264 .def_270)))
+(let ((.def_151 (___z6z___ (- 2))))
+(let ((.def_272 (= .def_151 .def_271)))
+.def_272
+))))))))
+(assert (let ((.def_188 (___z3z___ _n)))
+(let ((.def_170 (___z4z___ _n)))
+(let ((.def_179 (not .def_170)))
+(let ((.def_169 (___z5z___ _n)))
+(let ((.def_175 (not .def_169)))
+(let ((.def_182 (or .def_175 .def_179)))
+(let ((.def_172 (___z6z___ _n)))
+(let ((.def_183 (or .def_172 .def_182)))
+(let ((.def_180 (and .def_169 .def_179)))
+(let ((.def_177 (not .def_172)))
+(let ((.def_181 (and .def_177 .def_180)))
+(let ((.def_184 (or .def_181 .def_183)))
+(let ((.def_176 (and .def_170 .def_175)))
+(let ((.def_178 (and .def_176 .def_177)))
+(let ((.def_185 (or .def_178 .def_184)))
+(let ((.def_171 (and .def_169 .def_170)))
+(let ((.def_173 (and .def_171 .def_172)))
+(let ((.def_186 (or .def_173 .def_185)))
+(let ((.def_174 (not .def_173)))
+(let ((.def_187 (and .def_174 .def_186)))
+(let ((.def_189 (= .def_187 .def_188)))
+.def_189
+))))))))))))))))))))))
+(assert (let ((.def_192 (= _n _base)))
+(let ((.def_190 (+ _n (- 1))))
+(let ((.def_191 (___z6z___ .def_190)))
+(let ((.def_193 (or .def_191 .def_192)))
+(let ((.def_170 (___z4z___ _n)))
+(let ((.def_194 (= .def_170 .def_193)))
+.def_194
+)))))))
+(assert (let ((.def_190 (+ _n (- 1))))
+(let ((.def_196 (___z4z___ .def_190)))
+(let ((.def_192 (= _n _base)))
+(let ((.def_197 (or .def_192 .def_196)))
+(let ((.def_195 (not .def_192)))
+(let ((.def_198 (and .def_195 .def_197)))
+(let ((.def_169 (___z5z___ _n)))
+(let ((.def_199 (= .def_169 .def_198)))
+.def_199
+)))))))))
+(assert (let ((.def_190 (+ _n (- 1))))
+(let ((.def_200 (___z5z___ .def_190)))
+(let ((.def_192 (= _n _base)))
+(let ((.def_201 (or .def_192 .def_200)))
+(let ((.def_195 (not .def_192)))
+(let ((.def_202 (and .def_195 .def_201)))
+(let ((.def_172 (___z6z___ _n)))
+(let ((.def_203 (= .def_172 .def_202)))
+.def_203
+)))))))))
+(push 1)
+(assert (let ((.def_261 (= _base (- 2))))
+(let ((.def_264 (not .def_261)))
+(let ((.def_117 (___z3z___ 0)))
+(let ((.def_273 (or .def_117 .def_264)))
+(let ((.def_274 (not .def_273)))
+.def_274
+))))))
+(assert true
+)
+(check-sat)
+(pop 1)
+(assert (let ((.def_276 (___z3z___ (- 3))))
+.def_276
+))
+(push 1)
+(assert (let ((.def_190 (+ _n (- 1))))
+(let ((.def_220 (___z3z___ .def_190)))
+(let ((.def_196 (___z4z___ .def_190)))
+(let ((.def_211 (not .def_196)))
+(let ((.def_200 (___z5z___ .def_190)))
+(let ((.def_207 (not .def_200)))
+(let ((.def_214 (or .def_207 .def_211)))
+(let ((.def_191 (___z6z___ .def_190)))
+(let ((.def_215 (or .def_191 .def_214)))
+(let ((.def_212 (and .def_200 .def_211)))
+(let ((.def_209 (not .def_191)))
+(let ((.def_213 (and .def_209 .def_212)))
+(let ((.def_216 (or .def_213 .def_215)))
+(let ((.def_208 (and .def_196 .def_207)))
+(let ((.def_210 (and .def_208 .def_209)))
+(let ((.def_217 (or .def_210 .def_216)))
+(let ((.def_204 (and .def_196 .def_200)))
+(let ((.def_205 (and .def_191 .def_204)))
+(let ((.def_218 (or .def_205 .def_217)))
+(let ((.def_206 (not .def_205)))
+(let ((.def_219 (and .def_206 .def_218)))
+(let ((.def_221 (= .def_219 .def_220)))
+.def_221
+)))))))))))))))))))))))
+(assert (let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_226 (= .def_225 1)))
+(let ((.def_190 (+ _n (- 1))))
+(let ((.def_222 (+ (- 1) .def_190)))
+(let ((.def_223 (___z6z___ .def_222)))
+(let ((.def_227 (or .def_223 .def_226)))
+(let ((.def_196 (___z4z___ .def_190)))
+(let ((.def_228 (= .def_196 .def_227)))
+.def_228
+))))))))))
+(assert (let ((.def_190 (+ _n (- 1))))
+(let ((.def_222 (+ (- 1) .def_190)))
+(let ((.def_230 (___z4z___ .def_222)))
+(let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_226 (= .def_225 1)))
+(let ((.def_231 (or .def_226 .def_230)))
+(let ((.def_229 (not .def_226)))
+(let ((.def_232 (and .def_229 .def_231)))
+(let ((.def_200 (___z5z___ .def_190)))
+(let ((.def_233 (= .def_200 .def_232)))
+.def_233
+))))))))))))
+(assert (let ((.def_190 (+ _n (- 1))))
+(let ((.def_222 (+ (- 1) .def_190)))
+(let ((.def_234 (___z5z___ .def_222)))
+(let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_226 (= .def_225 1)))
+(let ((.def_235 (or .def_226 .def_234)))
+(let ((.def_229 (not .def_226)))
+(let ((.def_236 (and .def_229 .def_235)))
+(let ((.def_191 (___z6z___ .def_190)))
+(let ((.def_237 (= .def_191 .def_236)))
+.def_237
+))))))))))))
+(assert (let ((.def_240 (+ _n (- 2))))
+(let ((.def_278 (___z4z___ .def_240)))
+(let ((.def_287 (not .def_278)))
+(let ((.def_277 (___z5z___ .def_240)))
+(let ((.def_283 (not .def_277)))
+(let ((.def_290 (or .def_283 .def_287)))
+(let ((.def_280 (___z6z___ .def_240)))
+(let ((.def_291 (or .def_280 .def_290)))
+(let ((.def_288 (and .def_277 .def_287)))
+(let ((.def_285 (not .def_280)))
+(let ((.def_289 (and .def_285 .def_288)))
+(let ((.def_292 (or .def_289 .def_291)))
+(let ((.def_284 (and .def_278 .def_283)))
+(let ((.def_286 (and .def_284 .def_285)))
+(let ((.def_293 (or .def_286 .def_292)))
+(let ((.def_279 (and .def_277 .def_278)))
+(let ((.def_281 (and .def_279 .def_280)))
+(let ((.def_294 (or .def_281 .def_293)))
+(let ((.def_282 (not .def_281)))
+(let ((.def_295 (and .def_282 .def_294)))
+(let ((.def_241 (___z3z___ .def_240)))
+(let ((.def_296 (= .def_241 .def_295)))
+.def_296
+)))))))))))))))))))))))
+(assert (let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_299 (= .def_225 2)))
+(let ((.def_240 (+ _n (- 2))))
+(let ((.def_297 (+ (- 1) .def_240)))
+(let ((.def_298 (___z6z___ .def_297)))
+(let ((.def_300 (or .def_298 .def_299)))
+(let ((.def_278 (___z4z___ .def_240)))
+(let ((.def_301 (= .def_278 .def_300)))
+.def_301
+))))))))))
+(assert (let ((.def_240 (+ _n (- 2))))
+(let ((.def_297 (+ (- 1) .def_240)))
+(let ((.def_303 (___z4z___ .def_297)))
+(let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_299 (= .def_225 2)))
+(let ((.def_304 (or .def_299 .def_303)))
+(let ((.def_302 (not .def_299)))
+(let ((.def_305 (and .def_302 .def_304)))
+(let ((.def_277 (___z5z___ .def_240)))
+(let ((.def_306 (= .def_277 .def_305)))
+.def_306
+))))))))))))
+(assert (let ((.def_240 (+ _n (- 2))))
+(let ((.def_297 (+ (- 1) .def_240)))
+(let ((.def_307 (___z5z___ .def_297)))
+(let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_299 (= .def_225 2)))
+(let ((.def_308 (or .def_299 .def_307)))
+(let ((.def_302 (not .def_299)))
+(let ((.def_309 (and .def_302 .def_308)))
+(let ((.def_280 (___z6z___ .def_240)))
+(let ((.def_310 (= .def_280 .def_309)))
+.def_310
+))))))))))))
+(assert (let ((.def_261 (= _base (- 2))))
+(let ((.def_264 (not .def_261)))
+(let ((.def_188 (___z3z___ _n)))
+(let ((.def_311 (or .def_188 .def_264)))
+(let ((.def_312 (not .def_311)))
+.def_312
+))))))
+(assert true
+)
+(check-sat)
+(pop 1)
+(assert (let ((.def_313 (+ _n (- 3))))
+(let ((.def_314 (___z3z___ .def_313)))
+.def_314
+)))
+(assert (let ((.def_265 (___z4z___ (- 3))))
+(let ((.def_322 (not .def_265)))
+(let ((.def_269 (___z5z___ (- 3))))
+(let ((.def_318 (not .def_269)))
+(let ((.def_325 (or .def_318 .def_322)))
+(let ((.def_260 (___z6z___ (- 3))))
+(let ((.def_326 (or .def_260 .def_325)))
+(let ((.def_323 (and .def_269 .def_322)))
+(let ((.def_320 (not .def_260)))
+(let ((.def_324 (and .def_320 .def_323)))
+(let ((.def_327 (or .def_324 .def_326)))
+(let ((.def_319 (and .def_265 .def_318)))
+(let ((.def_321 (and .def_319 .def_320)))
+(let ((.def_328 (or .def_321 .def_327)))
+(let ((.def_315 (and .def_265 .def_269)))
+(let ((.def_316 (and .def_260 .def_315)))
+(let ((.def_329 (or .def_316 .def_328)))
+(let ((.def_317 (not .def_316)))
+(let ((.def_330 (and .def_317 .def_329)))
+(let ((.def_276 (___z3z___ (- 3))))
+(let ((.def_331 (= .def_276 .def_330)))
+.def_331
+))))))))))))))))))))))
+(assert (let ((.def_334 (= _base (- 3))))
+(let ((.def_333 (___z6z___ (- 4))))
+(let ((.def_335 (or .def_333 .def_334)))
+(let ((.def_265 (___z4z___ (- 3))))
+(let ((.def_336 (= .def_265 .def_335)))
+.def_336
+))))))
+(assert (let ((.def_338 (___z4z___ (- 4))))
+(let ((.def_334 (= _base (- 3))))
+(let ((.def_339 (or .def_334 .def_338)))
+(let ((.def_337 (not .def_334)))
+(let ((.def_340 (and .def_337 .def_339)))
+(let ((.def_269 (___z5z___ (- 3))))
+(let ((.def_341 (= .def_269 .def_340)))
+.def_341
+))))))))
+(assert (let ((.def_342 (___z5z___ (- 4))))
+(let ((.def_334 (= _base (- 3))))
+(let ((.def_343 (or .def_334 .def_342)))
+(let ((.def_337 (not .def_334)))
+(let ((.def_344 (and .def_337 .def_343)))
+(let ((.def_260 (___z6z___ (- 3))))
+(let ((.def_345 (= .def_260 .def_344)))
+.def_345
+))))))))
+(assert (let ((.def_190 (+ _n (- 1))))
+(let ((.def_220 (___z3z___ .def_190)))
+(let ((.def_196 (___z4z___ .def_190)))
+(let ((.def_211 (not .def_196)))
+(let ((.def_200 (___z5z___ .def_190)))
+(let ((.def_207 (not .def_200)))
+(let ((.def_214 (or .def_207 .def_211)))
+(let ((.def_191 (___z6z___ .def_190)))
+(let ((.def_215 (or .def_191 .def_214)))
+(let ((.def_212 (and .def_200 .def_211)))
+(let ((.def_209 (not .def_191)))
+(let ((.def_213 (and .def_209 .def_212)))
+(let ((.def_216 (or .def_213 .def_215)))
+(let ((.def_208 (and .def_196 .def_207)))
+(let ((.def_210 (and .def_208 .def_209)))
+(let ((.def_217 (or .def_210 .def_216)))
+(let ((.def_204 (and .def_196 .def_200)))
+(let ((.def_205 (and .def_191 .def_204)))
+(let ((.def_218 (or .def_205 .def_217)))
+(let ((.def_206 (not .def_205)))
+(let ((.def_219 (and .def_206 .def_218)))
+(let ((.def_221 (= .def_219 .def_220)))
+.def_221
+)))))))))))))))))))))))
+(assert (let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_226 (= .def_225 1)))
+(let ((.def_190 (+ _n (- 1))))
+(let ((.def_222 (+ (- 1) .def_190)))
+(let ((.def_223 (___z6z___ .def_222)))
+(let ((.def_227 (or .def_223 .def_226)))
+(let ((.def_196 (___z4z___ .def_190)))
+(let ((.def_228 (= .def_196 .def_227)))
+.def_228
+))))))))))
+(assert (let ((.def_190 (+ _n (- 1))))
+(let ((.def_222 (+ (- 1) .def_190)))
+(let ((.def_230 (___z4z___ .def_222)))
+(let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_226 (= .def_225 1)))
+(let ((.def_231 (or .def_226 .def_230)))
+(let ((.def_229 (not .def_226)))
+(let ((.def_232 (and .def_229 .def_231)))
+(let ((.def_200 (___z5z___ .def_190)))
+(let ((.def_233 (= .def_200 .def_232)))
+.def_233
+))))))))))))
+(assert (let ((.def_190 (+ _n (- 1))))
+(let ((.def_222 (+ (- 1) .def_190)))
+(let ((.def_234 (___z5z___ .def_222)))
+(let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_226 (= .def_225 1)))
+(let ((.def_235 (or .def_226 .def_234)))
+(let ((.def_229 (not .def_226)))
+(let ((.def_236 (and .def_229 .def_235)))
+(let ((.def_191 (___z6z___ .def_190)))
+(let ((.def_237 (= .def_191 .def_236)))
+.def_237
+))))))))))))
+(push 1)
+(assert (let ((.def_334 (= _base (- 3))))
+(let ((.def_337 (not .def_334)))
+(let ((.def_117 (___z3z___ 0)))
+(let ((.def_346 (or .def_117 .def_337)))
+(let ((.def_347 (not .def_346)))
+.def_347
+))))))
+(assert true
+)
+(check-sat)
+(pop 1)
+(assert (let ((.def_349 (___z3z___ (- 4))))
+.def_349
+))
+(push 1)
+(assert (let ((.def_240 (+ _n (- 2))))
+(let ((.def_278 (___z4z___ .def_240)))
+(let ((.def_287 (not .def_278)))
+(let ((.def_277 (___z5z___ .def_240)))
+(let ((.def_283 (not .def_277)))
+(let ((.def_290 (or .def_283 .def_287)))
+(let ((.def_280 (___z6z___ .def_240)))
+(let ((.def_291 (or .def_280 .def_290)))
+(let ((.def_288 (and .def_277 .def_287)))
+(let ((.def_285 (not .def_280)))
+(let ((.def_289 (and .def_285 .def_288)))
+(let ((.def_292 (or .def_289 .def_291)))
+(let ((.def_284 (and .def_278 .def_283)))
+(let ((.def_286 (and .def_284 .def_285)))
+(let ((.def_293 (or .def_286 .def_292)))
+(let ((.def_279 (and .def_277 .def_278)))
+(let ((.def_281 (and .def_279 .def_280)))
+(let ((.def_294 (or .def_281 .def_293)))
+(let ((.def_282 (not .def_281)))
+(let ((.def_295 (and .def_282 .def_294)))
+(let ((.def_241 (___z3z___ .def_240)))
+(let ((.def_296 (= .def_241 .def_295)))
+.def_296
+)))))))))))))))))))))))
+(assert (let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_299 (= .def_225 2)))
+(let ((.def_240 (+ _n (- 2))))
+(let ((.def_297 (+ (- 1) .def_240)))
+(let ((.def_298 (___z6z___ .def_297)))
+(let ((.def_300 (or .def_298 .def_299)))
+(let ((.def_278 (___z4z___ .def_240)))
+(let ((.def_301 (= .def_278 .def_300)))
+.def_301
+))))))))))
+(assert (let ((.def_240 (+ _n (- 2))))
+(let ((.def_297 (+ (- 1) .def_240)))
+(let ((.def_303 (___z4z___ .def_297)))
+(let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_299 (= .def_225 2)))
+(let ((.def_304 (or .def_299 .def_303)))
+(let ((.def_302 (not .def_299)))
+(let ((.def_305 (and .def_302 .def_304)))
+(let ((.def_277 (___z5z___ .def_240)))
+(let ((.def_306 (= .def_277 .def_305)))
+.def_306
+))))))))))))
+(assert (let ((.def_240 (+ _n (- 2))))
+(let ((.def_297 (+ (- 1) .def_240)))
+(let ((.def_307 (___z5z___ .def_297)))
+(let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_299 (= .def_225 2)))
+(let ((.def_308 (or .def_299 .def_307)))
+(let ((.def_302 (not .def_299)))
+(let ((.def_309 (and .def_302 .def_308)))
+(let ((.def_280 (___z6z___ .def_240)))
+(let ((.def_310 (= .def_280 .def_309)))
+.def_310
+))))))))))))
+(assert (let ((.def_313 (+ _n (- 3))))
+(let ((.def_351 (___z4z___ .def_313)))
+(let ((.def_360 (not .def_351)))
+(let ((.def_350 (___z5z___ .def_313)))
+(let ((.def_356 (not .def_350)))
+(let ((.def_363 (or .def_356 .def_360)))
+(let ((.def_353 (___z6z___ .def_313)))
+(let ((.def_364 (or .def_353 .def_363)))
+(let ((.def_361 (and .def_350 .def_360)))
+(let ((.def_358 (not .def_353)))
+(let ((.def_362 (and .def_358 .def_361)))
+(let ((.def_365 (or .def_362 .def_364)))
+(let ((.def_357 (and .def_351 .def_356)))
+(let ((.def_359 (and .def_357 .def_358)))
+(let ((.def_366 (or .def_359 .def_365)))
+(let ((.def_352 (and .def_350 .def_351)))
+(let ((.def_354 (and .def_352 .def_353)))
+(let ((.def_367 (or .def_354 .def_366)))
+(let ((.def_355 (not .def_354)))
+(let ((.def_368 (and .def_355 .def_367)))
+(let ((.def_314 (___z3z___ .def_313)))
+(let ((.def_369 (= .def_314 .def_368)))
+.def_369
+)))))))))))))))))))))))
+(assert (let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_372 (= .def_225 3)))
+(let ((.def_313 (+ _n (- 3))))
+(let ((.def_370 (+ (- 1) .def_313)))
+(let ((.def_371 (___z6z___ .def_370)))
+(let ((.def_373 (or .def_371 .def_372)))
+(let ((.def_351 (___z4z___ .def_313)))
+(let ((.def_374 (= .def_351 .def_373)))
+.def_374
+))))))))))
+(assert (let ((.def_313 (+ _n (- 3))))
+(let ((.def_370 (+ (- 1) .def_313)))
+(let ((.def_376 (___z4z___ .def_370)))
+(let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_372 (= .def_225 3)))
+(let ((.def_377 (or .def_372 .def_376)))
+(let ((.def_375 (not .def_372)))
+(let ((.def_378 (and .def_375 .def_377)))
+(let ((.def_350 (___z5z___ .def_313)))
+(let ((.def_379 (= .def_350 .def_378)))
+.def_379
+))))))))))))
+(assert (let ((.def_313 (+ _n (- 3))))
+(let ((.def_370 (+ (- 1) .def_313)))
+(let ((.def_380 (___z5z___ .def_370)))
+(let ((.def_224 (* (- 1) _base)))
+(let ((.def_225 (+ _n .def_224)))
+(let ((.def_372 (= .def_225 3)))
+(let ((.def_381 (or .def_372 .def_380)))
+(let ((.def_375 (not .def_372)))
+(let ((.def_382 (and .def_375 .def_381)))
+(let ((.def_353 (___z6z___ .def_313)))
+(let ((.def_383 (= .def_353 .def_382)))
+.def_383
+))))))))))))
+(assert (let ((.def_334 (= _base (- 3))))
+(let ((.def_337 (not .def_334)))
+(let ((.def_188 (___z3z___ _n)))
+(let ((.def_384 (or .def_188 .def_337)))
+(let ((.def_385 (not .def_384)))
+.def_385
+))))))
+(assert true
+)
+(check-sat)
diff --git a/test/regress/regress0/uflia/stalmark_e7_27_e7_31.ec.smt2.expect b/test/regress/regress0/uflia/stalmark_e7_27_e7_31.ec.smt2.expect
new file mode 100644
index 0000000..70b8fa2
--- /dev/null
+++ b/test/regress/regress0/uflia/stalmark_e7_27_e7_31.ec.smt2.expect
@@ -0,0 +1,7 @@
+% COMMAND-LINE: --incremental
+% EXPECT: unsat
+% EXPECT: sat
+% EXPECT: unsat
+% EXPECT: sat
+% EXPECT: unsat
+% EXPECT: unsat
diff --git a/test/regress/regress0/uflia/tiny.smt2 b/test/regress/regress0/uflia/tiny.smt2
new file mode 100644
index 0000000..fc0251a
--- /dev/null
+++ b/test/regress/regress0/uflia/tiny.smt2
@@ -0,0 +1,23 @@
+(set-logic QF_UFLIA)
+(declare-fun base () Int)
+(declare-fun n () Int)
+
+(declare-fun g (Int) Bool)
+(declare-fun f (Int) Bool)
+
+(push 1)
+(assert (<= 0 n))
+(assert (f n))
+(assert (= (f n) (or (= (- n base) 1) (g n))))
+(check-sat)
+(pop 1)
+
+(push 1)
+(assert (<= 0 n))
+
+(assert (or (= (- n base) 1) (g n)))
+(assert (not (g n)))
+(assert (= base (- 2)))
+
+(check-sat)
+(pop 1)
\ No newline at end of file
diff --git a/test/regress/regress0/uflia/tiny.smt2.expect b/test/regress/regress0/uflia/tiny.smt2.expect
new file mode 100644
index 0000000..7081f83
--- /dev/null
+++ b/test/regress/regress0/uflia/tiny.smt2.expect
@@ -0,0 +1,3 @@
+% COMMAND-LINE: --incremental --simplification=none
+% EXPECT: sat
+% EXPECT: unsat
diff --git a/test/regress/regress0/uflia/xs-09-16-3-4-1-5.delta01.smt b/test/regress/regress0/uflia/xs-09-16-3-4-1-5.delta01.smt
new file mode 100644
index 0000000..c7fed0c
--- /dev/null
+++ b/test/regress/regress0/uflia/xs-09-16-3-4-1-5.delta01.smt
@@ -0,0 +1,48 @@
+(benchmark mathsat
+:logic QF_UFLIA
+:extrafuns ((s_count Int Int))
+:extrafuns ((fmt1 Int))
+:extrafuns ((fmt_length Int))
+:status unsat
+:formula
+(let (?n1 0)
+(let (?n2 6)
+(let (?n3 (s_count ?n2))
+(flet ($n4 (= ?n1 ?n3))
+(let (?n5 5)
+(let (?n6 (s_count ?n5))
+(flet ($n7 (= ?n1 ?n6))
+(let (?n8 4)
+(let (?n9 (s_count ?n8))
+(flet ($n10 (= ?n1 ?n9))
+(let (?n11 3)
+(let (?n12 (s_count ?n11))
+(flet ($n13 (= ?n1 ?n12))
+(let (?n14 1)
+(let (?n15 (s_count ?n1))
+(flet ($n16 (= ?n14 ?n15))
+(let (?n17 (s_count ?n14))
+(flet ($n18 (= ?n1 ?n17))
+(flet ($n19 (and $n16 $n18))
+(let (?n20 2)
+(let (?n21 (s_count ?n20))
+(flet ($n22 (= ?n1 ?n21))
+(flet ($n23 (and $n19 $n22))
+(flet ($n24 (and $n13 $n23))
+(flet ($n25 (and $n10 $n24))
+(flet ($n26 (and $n7 $n25))
+(flet ($n27 (and $n4 $n26))
+(let (?n28 9)
+(flet ($n29 (= ?n28 fmt_length))
+(flet ($n30 (> fmt1 ?n14))
+(flet ($n31 (< fmt1 fmt_length))
+(flet ($n32 (and $n30 $n31))
+(let (?n33 (- fmt1 ?n20))
+(let (?n34 (s_count ?n33))
+(let (?n35 (+ ?n14 ?n34))
+(flet ($n36 (= ?n1 ?n35))
+(flet ($n37 (and $n32 $n36))
+(flet ($n38 (and $n29 $n37))
+(flet ($n39 (and $n27 $n38))
+$n39
+))))))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/uflia/xs-09-16-3-4-1-5.delta02.smt b/test/regress/regress0/uflia/xs-09-16-3-4-1-5.delta02.smt
new file mode 100644
index 0000000..fb16651
--- /dev/null
+++ b/test/regress/regress0/uflia/xs-09-16-3-4-1-5.delta02.smt
@@ -0,0 +1,40 @@
+(benchmark mathsat
+:logic QF_UFLIA
+:extrafuns ((arg1 Int))
+:extrafuns ((adr_lo Int))
+:extrafuns ((select_format Int Int))
+:extrafuns ((x Int))
+:status sat
+:formula
+(let (?n1 (select_format arg1))
+(flet ($n2 (= ?n1 adr_lo))
+(let (?n3 0)
+(flet ($n4 (= ?n3 x))
+(let (?n5 4)
+(let (?n6 (select_format ?n5))
+(flet ($n7 (= adr_lo ?n6))
+(let (?n8 3)
+(let (?n9 (select_format ?n8))
+(flet ($n10 (= adr_lo ?n9))
+(let (?n11 2)
+(let (?n12 (select_format ?n11))
+(flet ($n13 (= adr_lo ?n12))
+(let (?n14 1)
+(let (?n15 (select_format ?n3))
+(flet ($n16 (= ?n14 ?n15))
+(let (?n17 (select_format ?n14))
+(flet ($n18 (= ?n3 ?n17))
+(flet ($n19 (or $n16 $n18))
+(flet ($n20 (or $n13 $n19))
+(flet ($n21 (or $n10 $n20))
+(flet ($n22 (or $n7 $n21))
+(flet ($n23 (or $n4 $n22))
+(flet ($n24 (= adr_lo ?n8))
+(flet ($n25 (< arg1 ?n5))
+(flet ($n26 (>= arg1 ?n3))
+(flet ($n27 (and $n25 $n26))
+(flet ($n28 (and $n24 $n27))
+(flet ($n29 (and $n23 $n28))
+(flet ($n30 (and $n2 $n29))
+$n30
+)))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/uflia/xs-09-16-3-4-1-5.delta03.smt b/test/regress/regress0/uflia/xs-09-16-3-4-1-5.delta03.smt
new file mode 100644
index 0000000..6f65e83
--- /dev/null
+++ b/test/regress/regress0/uflia/xs-09-16-3-4-1-5.delta03.smt
@@ -0,0 +1,45 @@
+(benchmark mathsat
+:logic QF_UFLIA
+:extrafuns ((fmt_length Int))
+:extrafuns ((fmt1 Int))
+:extrafuns ((arg1 Int))
+:extrafuns ((select_format Int Int))
+:status sat
+:formula
+(let (?n1 1)
+(let (?n2 (+ ?n1 fmt1))
+(let (?n3 (select_format ?n2))
+(flet ($n4 (= ?n1 ?n3))
+(let (?n5 (select_format arg1))
+(let (?n6 0)
+(flet ($n7 (= ?n5 ?n6))
+(flet ($n8 (and $n4 $n7))
+(let (?n9 7)
+(let (?n10 (select_format ?n9))
+(flet ($n11 (= ?n1 ?n10))
+(let (?n12 (select_format ?n6))
+(flet ($n13 (= ?n1 ?n12))
+(let (?n14 (select_format ?n1))
+(flet ($n15 (= ?n1 ?n14))
+(flet ($n16 (or $n13 $n15))
+(let (?n17 5)
+(let (?n18 (select_format ?n17))
+(flet ($n19 (= ?n6 ?n18))
+(flet ($n20 (or $n16 $n19))
+(let (?n21 6)
+(let (?n22 (select_format ?n21))
+(flet ($n23 (= ?n6 ?n22))
+(flet ($n24 (or $n20 $n23))
+(flet ($n25 (or $n11 $n24))
+(let (?n26 9)
+(flet ($n27 (= ?n26 fmt_length))
+(let (?n28 2)
+(let (?n29 (- fmt1 ?n28))
+(flet ($n30 (= arg1 ?n29))
+(flet ($n31 (< fmt1 fmt_length))
+(flet ($n32 (and $n30 $n31))
+(flet ($n33 (and $n27 $n32))
+(flet ($n34 (and $n25 $n33))
+(flet ($n35 (and $n8 $n34))
+$n35
+))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/uflia/xs-09-16-3-4-1-5.delta04.smt b/test/regress/regress0/uflia/xs-09-16-3-4-1-5.delta04.smt
new file mode 100644
index 0000000..f1212a8
--- /dev/null
+++ b/test/regress/regress0/uflia/xs-09-16-3-4-1-5.delta04.smt
@@ -0,0 +1,67 @@
+(benchmark mathsat
+:logic QF_UFLIA
+:extrafuns ((fmt_length Int))
+:extrafuns ((fmt1 Int))
+:extrafuns ((x_count Int Int))
+:extrafuns ((select_format Int Int))
+:extrafuns ((percent Int))
+:extrafuns ((s_count Int Int))
+:status sat
+:formula
+(let (?n1 1)
+(let (?n2 5)
+(let (?n3 (x_count ?n2))
+(flet ($n4 (= ?n1 ?n3))
+(let (?n5 4)
+(let (?n6 (x_count ?n5))
+(flet ($n7 (= ?n1 ?n6))
+(let (?n8 3)
+(let (?n9 (x_count ?n8))
+(let (?n10 2)
+(let (?n11 (x_count ?n10))
+(flet ($n12 (= ?n9 ?n11))
+(let (?n13 0)
+(let (?n14 (select_format ?n8))
+(flet ($n15 (= ?n13 ?n14))
+(let (?n16 (x_count ?n13))
+(flet ($n17 (= ?n1 ?n16))
+(flet ($n18 (= ?n1 percent))
+(flet ($n19 true)
+(let (?n20 (s_count ?n13))
+(flet ($n21 (= ?n13 ?n20))
+(flet ($n22 (if_then_else $n18 $n19 $n21))
+(let (?n23 (select_format ?n10))
+(flet ($n24 (= percent ?n23))
+(flet ($n25 (= ?n1 ?n14))
+(flet ($n26 (and $n24 $n25))
+(flet ($n27 false)
+(flet ($n28 (if_then_else $n26 $n27 $n19))
+(flet ($n29 (and $n22 $n28))
+(flet ($n30 (and $n17 $n29))
+(flet ($n31 (= ?n13 percent))
+(flet ($n32 (= ?n13 ?n23))
+(flet ($n33 (and $n31 $n32))
+(let (?n34 (x_count ?n1))
+(flet ($n35 (= ?n13 ?n34))
+(flet ($n36 (= ?n16 ?n34))
+(flet ($n37 (if_then_else $n33 $n35 $n36))
+(flet ($n38 (and $n30 $n37))
+(flet ($n39 (and $n15 $n38))
+(flet ($n40 (and $n12 $n39))
+(flet ($n41 (and $n7 $n40))
+(flet ($n42 (and $n4 $n41))
+(let (?n43 9)
+(flet ($n44 (= ?n43 fmt_length))
+(let (?n45 (- fmt1 ?n10))
+(let (?n46 (x_count ?n45))
+(let (?n47 (+ ?n1 ?n46))
+(flet ($n48 (= ?n13 ?n47))
+(flet ($n49 (> fmt1 ?n1))
+(let (?n50 (- fmt_length ?n1))
+(flet ($n51 (< fmt1 ?n50))
+(flet ($n52 (and $n49 $n51))
+(flet ($n53 (and $n48 $n52))
+(flet ($n54 (and $n44 $n53))
+(flet ($n55 (and $n42 $n54))
+$n55
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))
diff --git a/test/regress/regress0/uflra/Makefile.am b/test/regress/regress0/uflra/Makefile.am
new file mode 100644
index 0000000..09c012f
--- /dev/null
+++ b/test/regress/regress0/uflra/Makefile.am
@@ -0,0 +1,65 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+
+# Regression tests for SMT inputs
+SMT_TESTS = \
+	constants0.smt \
+	simple.01.cvc \
+	simple.02.cvc \
+	simple.03.cvc \
+	simple.04.cvc \
+	bug293.cvc \
+	bug449.smt \
+	pb_real_10_0100_10_10.smt \
+	pb_real_10_0100_10_11.smt \
+	pb_real_10_0100_10_15.smt \
+	pb_real_10_0100_10_16.smt \
+	pb_real_10_0100_10_19.smt \
+	pb_real_10_0200_10_22.smt \
+	pb_real_10_0200_10_26.smt \
+	pb_real_10_0200_10_29.smt \
+	incorrect1.delta01.smt \
+	incorrect1.delta02.smt \
+	neq-deltacomp.smt \
+	fuzz01.smt
+
+# Regression tests for SMT2 inputs
+SMT2_TESTS =
+
+# Regression tests for PL inputs
+CVC_TESTS = 
+
+# Regression tests derived from bug reports
+BUG_TESTS = 
+
+TESTS =	$(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(BUG_TESTS)
+
+# Necessary to get automake's attention when splitting TESTS into
+# SMT_TESTS, SMT2_TESTS, etc..
+EXTRA_DIST = $(TESTS)
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/uflra/Makefile.in b/test/regress/regress0/uflra/Makefile.in
new file mode 100644
index 0000000..5cf3938
--- /dev/null
+++ b/test/regress/regress0/uflra/Makefile.in
@@ -0,0 +1,1147 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+TESTS = $(SMT_TESTS) $(am__EXEEXT_1) $(am__EXEEXT_1) $(am__EXEEXT_1)
+subdir = test/regress/regress0/uflra
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+am__EXEEXT_1 =
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+
+# Regression tests for SMT inputs
+SMT_TESTS = \
+	constants0.smt \
+	simple.01.cvc \
+	simple.02.cvc \
+	simple.03.cvc \
+	simple.04.cvc \
+	bug293.cvc \
+	bug449.smt \
+	pb_real_10_0100_10_10.smt \
+	pb_real_10_0100_10_11.smt \
+	pb_real_10_0100_10_15.smt \
+	pb_real_10_0100_10_16.smt \
+	pb_real_10_0100_10_19.smt \
+	pb_real_10_0200_10_22.smt \
+	pb_real_10_0200_10_26.smt \
+	pb_real_10_0200_10_29.smt \
+	incorrect1.delta01.smt \
+	incorrect1.delta02.smt \
+	neq-deltacomp.smt \
+	fuzz01.smt
+
+
+# Regression tests for SMT2 inputs
+SMT2_TESTS = 
+
+# Regression tests for PL inputs
+CVC_TESTS = 
+
+# Regression tests derived from bug reports
+BUG_TESTS = 
+
+# Necessary to get automake's attention when splitting TESTS into
+# SMT_TESTS, SMT2_TESTS, etc..
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/uflra/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/uflra/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+constants0.smt.log: constants0.smt
+	@p='constants0.smt'; \
+	b='constants0.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple.01.cvc.log: simple.01.cvc
+	@p='simple.01.cvc'; \
+	b='simple.01.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple.02.cvc.log: simple.02.cvc
+	@p='simple.02.cvc'; \
+	b='simple.02.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple.03.cvc.log: simple.03.cvc
+	@p='simple.03.cvc'; \
+	b='simple.03.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple.04.cvc.log: simple.04.cvc
+	@p='simple.04.cvc'; \
+	b='simple.04.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug293.cvc.log: bug293.cvc
+	@p='bug293.cvc'; \
+	b='bug293.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug449.smt.log: bug449.smt
+	@p='bug449.smt'; \
+	b='bug449.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pb_real_10_0100_10_10.smt.log: pb_real_10_0100_10_10.smt
+	@p='pb_real_10_0100_10_10.smt'; \
+	b='pb_real_10_0100_10_10.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pb_real_10_0100_10_11.smt.log: pb_real_10_0100_10_11.smt
+	@p='pb_real_10_0100_10_11.smt'; \
+	b='pb_real_10_0100_10_11.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pb_real_10_0100_10_15.smt.log: pb_real_10_0100_10_15.smt
+	@p='pb_real_10_0100_10_15.smt'; \
+	b='pb_real_10_0100_10_15.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pb_real_10_0100_10_16.smt.log: pb_real_10_0100_10_16.smt
+	@p='pb_real_10_0100_10_16.smt'; \
+	b='pb_real_10_0100_10_16.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pb_real_10_0100_10_19.smt.log: pb_real_10_0100_10_19.smt
+	@p='pb_real_10_0100_10_19.smt'; \
+	b='pb_real_10_0100_10_19.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pb_real_10_0200_10_22.smt.log: pb_real_10_0200_10_22.smt
+	@p='pb_real_10_0200_10_22.smt'; \
+	b='pb_real_10_0200_10_22.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pb_real_10_0200_10_26.smt.log: pb_real_10_0200_10_26.smt
+	@p='pb_real_10_0200_10_26.smt'; \
+	b='pb_real_10_0200_10_26.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pb_real_10_0200_10_29.smt.log: pb_real_10_0200_10_29.smt
+	@p='pb_real_10_0200_10_29.smt'; \
+	b='pb_real_10_0200_10_29.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+incorrect1.delta01.smt.log: incorrect1.delta01.smt
+	@p='incorrect1.delta01.smt'; \
+	b='incorrect1.delta01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+incorrect1.delta02.smt.log: incorrect1.delta02.smt
+	@p='incorrect1.delta02.smt'; \
+	b='incorrect1.delta02.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+neq-deltacomp.smt.log: neq-deltacomp.smt
+	@p='neq-deltacomp.smt'; \
+	b='neq-deltacomp.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz01.smt.log: fuzz01.smt
+	@p='fuzz01.smt'; \
+	b='fuzz01.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/uflra/bug293.cvc b/test/regress/regress0/uflra/bug293.cvc
new file mode 100644
index 0000000..6da025f
--- /dev/null
+++ b/test/regress/regress0/uflra/bug293.cvc
@@ -0,0 +1,7 @@
+% EXPECT: unsat
+x: REAL;
+f: REAL -> REAL;
+ASSERT NOT (f(1) = f(x));
+ASSERT NOT (f(0) = f(x));
+ASSERT (x = 0) XOR (x = 1);
+CHECKSAT;
\ No newline at end of file
diff --git a/test/regress/regress0/uflra/bug449.smt b/test/regress/regress0/uflra/bug449.smt
new file mode 100644
index 0000000..91bb5fb
--- /dev/null
+++ b/test/regress/regress0/uflra/bug449.smt
@@ -0,0 +1,11 @@
+(benchmark fuzzsmt
+:logic QF_UFLRA
+:extrapreds ((p0 Real))
+:extrafuns ((v0 Real))
+:status sat
+:formula
+(and
+     (p0 v0)
+     (< v0 0)
+     (not (p0 (- 1)))
+))
diff --git a/test/regress/regress0/uflra/constants0.smt b/test/regress/regress0/uflra/constants0.smt
new file mode 100644
index 0000000..b07a6bc
--- /dev/null
+++ b/test/regress/regress0/uflra/constants0.smt
@@ -0,0 +1,15 @@
+(benchmark mathsat
+:logic QF_UFLRA
+:status unsat 
+:category { crafted } 
+:extrafuns ((f Real Real))
+:extrafuns ((x Real))
+:extrafuns ((y Real))
+:formula
+(and (or (= x 3) (= x 5))
+     (or (= y 3) (= y 5))
+     (not (= (f x) (f y)))
+     (implies (= (f 3) (f x)) (= (f 5) (f x)))
+     (implies (= (f 3) (f y)) (= (f 5) (f y)))
+)
+)
\ No newline at end of file
diff --git a/test/regress/regress0/uflra/fuzz01.smt b/test/regress/regress0/uflra/fuzz01.smt
new file mode 100644
index 0000000..2c6286e
--- /dev/null
+++ b/test/regress/regress0/uflra/fuzz01.smt
@@ -0,0 +1,257 @@
+(benchmark fuzzsmt
+:logic QF_UFLRA
+:status sat
+:extrafuns ((f0 Real Real))
+:extrafuns ((f1 Real Real Real Real))
+:extrapreds ((p0 Real Real Real))
+:extrafuns ((v0 Real))
+:extrafuns ((v1 Real))
+:extrafuns ((v2 Real))
+:formula
+(let (?e3 5)
+(let (?e4 2)
+(let (?e5 0)
+(let (?e6 (f1 v0 v1 v0))
+(let (?e7 (f0 v0))
+(let (?e8 (ite (p0 v1 ?e7 v0) 1 0))
+(let (?e9 (ite (p0 ?e8 v1 v0) 1 0))
+(let (?e10 (- ?e9 ?e9))
+(let (?e11 (~ v1))
+(let (?e12 (ite (p0 v0 ?e8 v2) 1 0))
+(let (?e13 (/ ?e5 ?e4))
+(let (?e14 (/ ?e4 ?e4))
+(let (?e15 (~ v0))
+(let (?e16 (* ?e6 (~ ?e3)))
+(flet ($e17 (< ?e8 ?e8))
+(flet ($e18 (<= v0 v1))
+(flet ($e19 (distinct ?e16 ?e15))
+(flet ($e20 (distinct ?e13 ?e12))
+(flet ($e21 (> ?e11 ?e11))
+(flet ($e22 (= v0 ?e11))
+(flet ($e23 (p0 ?e16 ?e13 ?e11))
+(flet ($e24 (> ?e16 ?e12))
+(flet ($e25 (= ?e13 ?e12))
+(flet ($e26 (<= ?e12 ?e12))
+(flet ($e27 (p0 ?e12 ?e12 ?e14))
+(flet ($e28 (distinct ?e7 ?e12))
+(flet ($e29 (>= ?e9 ?e13))
+(flet ($e30 (< v2 v0))
+(flet ($e31 (> v2 v1))
+(flet ($e32 (p0 ?e9 v1 ?e6))
+(flet ($e33 (= ?e16 v2))
+(flet ($e34 (p0 ?e7 ?e12 ?e14))
+(flet ($e35 (distinct ?e12 ?e15))
+(flet ($e36 (>= ?e9 ?e15))
+(flet ($e37 (< ?e11 ?e10))
+(let (?e38 (ite $e24 ?e9 ?e14))
+(let (?e39 (ite $e24 ?e12 ?e6))
+(let (?e40 (ite $e30 ?e15 ?e11))
+(let (?e41 (ite $e32 v1 v2))
+(let (?e42 (ite $e36 v1 ?e39))
+(let (?e43 (ite $e33 ?e10 ?e15))
+(let (?e44 (ite $e19 ?e8 ?e16))
+(let (?e45 (ite $e26 v0 ?e12))
+(let (?e46 (ite $e36 ?e7 ?e14))
+(let (?e47 (ite $e20 ?e40 ?e14))
+(let (?e48 (ite $e26 ?e15 ?e9))
+(let (?e49 (ite $e22 ?e13 ?e13))
+(let (?e50 (ite $e31 ?e16 ?e47))
+(let (?e51 (ite $e30 ?e41 ?e11))
+(let (?e52 (ite $e17 ?e6 ?e9))
+(let (?e53 (ite $e18 ?e46 v2))
+(let (?e54 (ite $e19 ?e9 ?e9))
+(let (?e55 (ite $e37 ?e51 v2))
+(let (?e56 (ite $e28 ?e14 ?e46))
+(let (?e57 (ite $e29 ?e12 ?e14))
+(let (?e58 (ite $e17 ?e47 ?e7))
+(let (?e59 (ite $e34 ?e46 v2))
+(let (?e60 (ite $e21 ?e55 ?e51))
+(let (?e61 (ite $e24 ?e14 ?e50))
+(let (?e62 (ite $e17 ?e47 ?e61))
+(let (?e63 (ite $e30 ?e45 ?e12))
+(let (?e64 (ite $e35 ?e45 ?e47))
+(let (?e65 (ite $e25 v1 ?e38))
+(let (?e66 (ite $e23 ?e16 ?e59))
+(let (?e67 (ite $e26 ?e61 ?e38))
+(let (?e68 (ite $e27 ?e57 ?e50))
+(flet ($e69 (> v0 ?e12))
+(flet ($e70 (p0 ?e8 ?e66 ?e43))
+(flet ($e71 (<= ?e64 ?e8))
+(flet ($e72 (> ?e49 ?e43))
+(flet ($e73 (>= v0 ?e46))
+(flet ($e74 (<= v1 ?e49))
+(flet ($e75 (< ?e11 ?e38))
+(flet ($e76 (>= v2 ?e10))
+(flet ($e77 (= ?e51 ?e40))
+(flet ($e78 (>= ?e14 ?e50))
+(flet ($e79 (> ?e49 ?e8))
+(flet ($e80 (= ?e47 ?e12))
+(flet ($e81 (> ?e64 ?e54))
+(flet ($e82 (<= ?e48 ?e57))
+(flet ($e83 (> ?e57 ?e54))
+(flet ($e84 (p0 ?e44 ?e39 ?e65))
+(flet ($e85 (< ?e51 ?e11))
+(flet ($e86 (distinct ?e51 ?e53))
+(flet ($e87 (= ?e57 ?e46))
+(flet ($e88 (p0 ?e6 ?e47 ?e41))
+(flet ($e89 (<= ?e58 ?e14))
+(flet ($e90 (>= ?e67 v1))
+(flet ($e91 (<= ?e39 ?e59))
+(flet ($e92 (>= ?e10 v1))
+(flet ($e93 (> ?e10 ?e10))
+(flet ($e94 (<= ?e57 ?e10))
+(flet ($e95 (< ?e47 ?e42))
+(flet ($e96 (>= ?e41 ?e63))
+(flet ($e97 (<= ?e9 ?e14))
+(flet ($e98 (distinct v0 ?e64))
+(flet ($e99 (distinct ?e49 ?e61))
+(flet ($e100 (p0 ?e61 ?e52 v1))
+(flet ($e101 (>= ?e12 ?e6))
+(flet ($e102 (p0 ?e59 ?e57 ?e62))
+(flet ($e103 (distinct ?e66 ?e15))
+(flet ($e104 (<= ?e46 ?e50))
+(flet ($e105 (>= ?e57 ?e46))
+(flet ($e106 (= ?e44 ?e58))
+(flet ($e107 (p0 ?e6 ?e8 ?e40))
+(flet ($e108 (distinct ?e12 ?e58))
+(flet ($e109 (>= ?e56 ?e15))
+(flet ($e110 (< ?e62 ?e44))
+(flet ($e111 (distinct v2 ?e14))
+(flet ($e112 (< ?e44 ?e39))
+(flet ($e113 (= ?e40 ?e11))
+(flet ($e114 (= ?e55 ?e56))
+(flet ($e115 (p0 ?e66 ?e40 ?e62))
+(flet ($e116 (= ?e13 ?e14))
+(flet ($e117 (> ?e59 ?e68))
+(flet ($e118 (p0 ?e45 ?e50 ?e6))
+(flet ($e119 (p0 ?e67 v2 v1))
+(flet ($e120 (= v2 ?e15))
+(flet ($e121 (< ?e42 ?e12))
+(flet ($e122 (distinct ?e52 ?e40))
+(flet ($e123 (= v1 ?e14))
+(flet ($e124 (< ?e13 ?e66))
+(flet ($e125 (= ?e12 ?e61))
+(flet ($e126 (>= ?e66 v0))
+(flet ($e127 (> ?e58 ?e13))
+(flet ($e128 (distinct ?e41 ?e41))
+(flet ($e129 (>= ?e47 ?e16))
+(flet ($e130 (p0 v2 ?e59 ?e62))
+(flet ($e131 (<= ?e12 ?e41))
+(flet ($e132 (> ?e68 ?e51))
+(flet ($e133 (>= ?e59 ?e38))
+(flet ($e134 (< ?e65 ?e13))
+(flet ($e135 (< ?e39 ?e45))
+(flet ($e136 (>= ?e54 ?e16))
+(flet ($e137 (>= ?e62 ?e54))
+(flet ($e138 (p0 ?e59 ?e54 ?e41))
+(flet ($e139 (p0 ?e53 ?e12 ?e45))
+(flet ($e140 (distinct ?e52 ?e14))
+(flet ($e141 (= ?e51 ?e63))
+(flet ($e142 (p0 ?e65 ?e59 ?e64))
+(flet ($e143 (<= ?e52 ?e45))
+(flet ($e144 (p0 ?e49 ?e12 ?e63))
+(flet ($e145 (> ?e39 ?e7))
+(flet ($e146 (>= ?e60 ?e8))
+(flet ($e147 (if_then_else $e78 $e34 $e87))
+(flet ($e148 (iff $e28 $e83))
+(flet ($e149 (or $e19 $e107))
+(flet ($e150 (not $e29))
+(flet ($e151 (or $e25 $e113))
+(flet ($e152 (implies $e82 $e133))
+(flet ($e153 (or $e120 $e30))
+(flet ($e154 (not $e81))
+(flet ($e155 (xor $e26 $e99))
+(flet ($e156 (not $e105))
+(flet ($e157 (xor $e122 $e126))
+(flet ($e158 (implies $e70 $e97))
+(flet ($e159 (iff $e21 $e150))
+(flet ($e160 (iff $e37 $e33))
+(flet ($e161 (if_then_else $e149 $e139 $e129))
+(flet ($e162 (iff $e96 $e18))
+(flet ($e163 (if_then_else $e116 $e36 $e160))
+(flet ($e164 (implies $e125 $e17))
+(flet ($e165 (iff $e74 $e98))
+(flet ($e166 (and $e159 $e110))
+(flet ($e167 (implies $e152 $e31))
+(flet ($e168 (if_then_else $e141 $e86 $e124))
+(flet ($e169 (and $e80 $e118))
+(flet ($e170 (implies $e22 $e154))
+(flet ($e171 (xor $e84 $e153))
+(flet ($e172 (and $e102 $e77))
+(flet ($e173 (and $e164 $e100))
+(flet ($e174 (if_then_else $e134 $e76 $e90))
+(flet ($e175 (and $e157 $e138))
+(flet ($e176 (or $e92 $e158))
+(flet ($e177 (xor $e103 $e130))
+(flet ($e178 (or $e73 $e101))
+(flet ($e179 (if_then_else $e104 $e174 $e27))
+(flet ($e180 (and $e156 $e172))
+(flet ($e181 (implies $e93 $e176))
+(flet ($e182 (xor $e121 $e32))
+(flet ($e183 (and $e148 $e112))
+(flet ($e184 (and $e165 $e165))
+(flet ($e185 (iff $e72 $e162))
+(flet ($e186 (if_then_else $e151 $e23 $e171))
+(flet ($e187 (or $e111 $e94))
+(flet ($e188 (xor $e144 $e177))
+(flet ($e189 (implies $e185 $e188))
+(flet ($e190 (not $e167))
+(flet ($e191 (xor $e115 $e155))
+(flet ($e192 (and $e95 $e179))
+(flet ($e193 (iff $e180 $e182))
+(flet ($e194 (or $e88 $e131))
+(flet ($e195 (iff $e123 $e168))
+(flet ($e196 (xor $e106 $e194))
+(flet ($e197 (iff $e170 $e191))
+(flet ($e198 (iff $e196 $e117))
+(flet ($e199 (and $e71 $e197))
+(flet ($e200 (or $e119 $e108))
+(flet ($e201 (not $e163))
+(flet ($e202 (iff $e183 $e201))
+(flet ($e203 (implies $e178 $e91))
+(flet ($e204 (or $e142 $e175))
+(flet ($e205 (not $e145))
+(flet ($e206 (and $e146 $e132))
+(flet ($e207 (if_then_else $e173 $e147 $e20))
+(flet ($e208 (or $e195 $e166))
+(flet ($e209 (and $e35 $e79))
+(flet ($e210 (if_then_else $e69 $e75 $e184))
+(flet ($e211 (not $e199))
+(flet ($e212 (iff $e204 $e143))
+(flet ($e213 (xor $e161 $e89))
+(flet ($e214 (iff $e114 $e114))
+(flet ($e215 (not $e214))
+(flet ($e216 (xor $e186 $e189))
+(flet ($e217 (implies $e212 $e24))
+(flet ($e218 (xor $e136 $e202))
+(flet ($e219 (not $e213))
+(flet ($e220 (iff $e135 $e198))
+(flet ($e221 (iff $e169 $e128))
+(flet ($e222 (implies $e207 $e187))
+(flet ($e223 (or $e219 $e211))
+(flet ($e224 (and $e223 $e137))
+(flet ($e225 (and $e205 $e109))
+(flet ($e226 (xor $e200 $e220))
+(flet ($e227 (implies $e208 $e226))
+(flet ($e228 (if_then_else $e193 $e222 $e192))
+(flet ($e229 (xor $e227 $e210))
+(flet ($e230 (and $e216 $e217))
+(flet ($e231 (not $e218))
+(flet ($e232 (implies $e225 $e203))
+(flet ($e233 (xor $e221 $e140))
+(flet ($e234 (xor $e224 $e232))
+(flet ($e235 (if_then_else $e233 $e231 $e181))
+(flet ($e236 (if_then_else $e206 $e228 $e215))
+(flet ($e237 (implies $e236 $e85))
+(flet ($e238 (implies $e229 $e235))
+(flet ($e239 (or $e190 $e237))
+(flet ($e240 (or $e234 $e230))
+(flet ($e241 (iff $e238 $e127))
+(flet ($e242 (not $e240))
+(flet ($e243 (iff $e239 $e241))
+(flet ($e244 (if_then_else $e243 $e242 $e243))
+(flet ($e245 (xor $e244 $e244))
+(flet ($e246 (iff $e209 $e245))
+$e246
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress0/uflra/incorrect1.delta01.smt b/test/regress/regress0/uflra/incorrect1.delta01.smt
new file mode 100644
index 0000000..c2ca835
--- /dev/null
+++ b/test/regress/regress0/uflra/incorrect1.delta01.smt
@@ -0,0 +1,31 @@
+(benchmark fuzzsmt
+:logic QF_UFLRA
+:extrapreds ((p0 Real Real))
+:extrafuns ((v0 Real))
+:status sat
+:formula
+(let (?n1 6)
+(let (?n2 (~ ?n1))
+(flet ($n3 (p0 ?n2 ?n1))
+(let (?n4 1)
+(let (?n5 0)
+(let (?n6 (ite $n3 ?n4 ?n5))
+(let (?n7 (+ ?n2 ?n6))
+(flet ($n8 (p0 ?n1 ?n7))
+(let (?n9 7)
+(flet ($n10 (p0 ?n9 ?n1))
+(let (?n11 (ite $n10 ?n4 ?n5))
+(flet ($n12 (distinct ?n1 ?n11))
+(flet ($n13 (p0 v0 ?n1))
+(let (?n14 (ite $n13 ?n4 ?n5))
+(flet ($n15 (<= ?n14 ?n2))
+(let (?n16 (+ ?n7 ?n7))
+(let (?n17 (ite $n15 ?n1 ?n16))
+(let (?n18 (ite $n12 ?n17 v0))
+(flet ($n19 (p0 ?n18 ?n1))
+(flet ($n20 (implies $n8 $n19))
+(flet ($n21 (p0 ?n16 v0))
+(flet ($n22 false)
+(flet ($n23 (if_then_else $n20 $n21 $n22))
+$n23
+))))))))))))))))))))))))
diff --git a/test/regress/regress0/uflra/incorrect1.delta02.smt b/test/regress/regress0/uflra/incorrect1.delta02.smt
new file mode 100644
index 0000000..9d9d65e
--- /dev/null
+++ b/test/regress/regress0/uflra/incorrect1.delta02.smt
@@ -0,0 +1,14 @@
+(benchmark fuzzsmt
+:logic QF_UFLRA
+:extrafuns ((f1 Real Real Real))
+:status sat
+:formula
+(let (?n1 6)
+(let (?n2 (~ ?n1))
+(let (?n3 (/ ?n1 ?n2))
+(let (?n4 1)
+(let (?n5 (+ ?n3 ?n4))
+(let (?n6 (f1 ?n4 ?n4))
+(flet ($n7 (distinct ?n5 ?n6))
+$n7
+))))))))
diff --git a/test/regress/regress0/uflra/neq-deltacomp.smt b/test/regress/regress0/uflra/neq-deltacomp.smt
new file mode 100644
index 0000000..9185a18
--- /dev/null
+++ b/test/regress/regress0/uflra/neq-deltacomp.smt
@@ -0,0 +1,14 @@
+(benchmark fuzzsmt
+:logic QF_UFLRA
+:extrafuns ((v2 Real))
+:extrafuns ((v1 Real))
+:extrafuns ((v0 Real))
+:status sat
+:formula
+(let (?n1 (~ v1))
+(flet ($n2 (>= ?n1 v0))
+(let (?n3 1)
+(let (?n4 (ite $n2 v1 ?n3))
+(flet ($n5 (<= ?n4 v2))
+$n5
+))))))
diff --git a/test/regress/regress0/uflra/pb_real_10_0100_10_10.smt b/test/regress/regress0/uflra/pb_real_10_0100_10_10.smt
new file mode 100644
index 0000000..b6e7253
--- /dev/null
+++ b/test/regress/regress0/uflra/pb_real_10_0100_10_10.smt
@@ -0,0 +1,126 @@
+(benchmark mathsat
+:source { MathSat group }
+:logic QF_UFLRA
+:status sat 
+:category { random } 
+:difficulty { 3 }
+:extrafuns ((f0_1 Real Real))
+:extrafuns ((f0_2 Real Real Real))
+:extrafuns ((f0_3 Real Real Real Real))
+:extrafuns ((f0_4 Real Real Real Real Real))
+:extrafuns ((f1_1 Real Real))
+:extrafuns ((f1_2 Real Real Real))
+:extrafuns ((f1_3 Real Real Real Real))
+:extrafuns ((f1_4 Real Real Real Real Real))
+:extrafuns ((x0 Real))
+:extrafuns ((x1 Real))
+:extrafuns ((x2 Real))
+:extrafuns ((x3 Real))
+:extrafuns ((x4 Real))
+:extrafuns ((x5 Real))
+:extrafuns ((x6 Real))
+:extrafuns ((x7 Real))
+:extrafuns ((x8 Real))
+:extrafuns ((x9 Real))
+:extrapreds ((P0))
+:extrapreds ((P1))
+:extrapreds ((P2))
+:extrapreds ((P3))
+:extrapreds ((P4))
+:extrapreds ((P5))
+:extrapreds ((P6))
+:extrapreds ((P7))
+:extrapreds ((P8))
+:extrapreds ((P9))
+:formula
+(let (?x10 (- (+ (* (- 0 16) x4) (* 19 x9)) (* 28 x6)))
+(let (?x11 (- (+ (* 28 x2) (* 29 x2)) (* 4 x6)))
+(let (?x12 (f1_1 x1))
+(let (?x13 (f1_2 x3 x5))
+(let (?x14 (f1_1 x1))
+(let (?x15 (f0_2 x2 x9))
+(let (?x16 (f0_2 x8 x8))
+(let (?x17 (- (- (* (- 0 18) x9) (* 24 x4)) (* 27 x2)))
+(let (?x18 (f1_1 x8))
+(let (?x19 (f0_1 x1))
+(let (?x20 (f1_1 x0))
+(let (?x21 (f0_1 x9))
+(let (?x22 (f1_2 x1 x2))
+(let (?x23 (- (- (* 5 x3) (* 29 x6)) (* 19 x9)))
+(let (?x24 (+ (+ (* 16 x4) (* 4 x2)) (* 25 x0)))
+(let (?x25 (f0_1 x7))
+(let (?x26 (f0_1 x9))
+(let (?x27 (+ (- (* (- 0 12) x9) (* 6 x1)) (* 10 x2)))
+(let (?x28 (f0_2 x3 x6))
+(let (?x29 (f0_1 x0))
+(let (?x30 (+ (- (* (- 0 4) x9) (* 29 x3)) (* 14 x0)))
+(let (?x31 (f1_2 x3 ?x19))
+(let (?x32 (f1_2 ?x15 x8))
+(let (?x33 (+ (+ (* (- 0 16) x4) (* 14 x2)) (* 7 x8)))
+(let (?x34 (f1_2 x0 x0))
+(let (?x35 (f0_1 x8))
+(let (?x36 (f1_2 x7 x4))
+(let (?x37 (f1_2 ?x33 ?x13))
+(let (?x38 (- (- (* 7 x2) (* 28 x6)) (* 12 x7)))
+(let (?x39 (f0_2 x2 x6))
+(let (?x40 (- (+ (* 22 x4) (* 4 x9)) (* 1 x7)))
+(let (?x41 (f0_2 x5 x9))
+(let (?x42 (- (- (* 25 ?x33) (* 22 x8)) (* 23 x0)))
+(let (?x43 (f1_2 x5 ?x21))
+(let (?x44 (- (+ (* (- 0 15) ?x19) (* 10 ?x13)) (* 24 ?x37)))
+(let (?x45 (- (+ (* 22 x0) (* 5 x5)) (* 17 x3)))
+(let (?x46 (f1_1 ?x44))
+(let (?x47 (- (- (* (- 0 28) x8) (* 22 x6)) (* 4 x7)))
+(let (?x48 (f1_1 ?x32))
+(let (?x49 (+ (- (* 22 x8) (* 23 x7)) (* 9 x3)))
+(flet ($P10 (= ?x20 ?x10))
+(flet ($P11 (< ?x44 (- 0 18)))
+(flet ($P12 (< ?x23 (- 0 7)))
+(flet ($P13 (< ?x34 28))
+(flet ($P14 (< ?x18 9))
+(flet ($P15 (< ?x43 24))
+(flet ($P16 (< x5 27))
+(flet ($P17 (< x7 11))
+(flet ($P18 (< ?x35 (- 0 7)))
+(flet ($P19 (< ?x43 5))
+(flet ($P20 (< x3 (- 0 20)))
+(flet ($P21 (< ?x25 (- 0 8)))
+(flet ($P22 (= ?x21 ?x11))
+(flet ($P23 (< ?x46 2))
+(flet ($P24 (< x4 19))
+(flet ($P25 (< ?x49 11))
+(flet ($P26 (= ?x49 x9))
+(flet ($P27 (= ?x46 ?x38))
+(flet ($P28 (< ?x22 (- 0 22)))
+(flet ($P29 (< ?x37 (- 0 4)))
+(flet ($P30 (< x1 29))
+(flet ($P31 (< ?x36 (- 0 28)))
+(flet ($P32 (< ?x30 13))
+(flet ($P33 (< ?x24 5))
+(flet ($P34 (= ?x16 ?x22))
+(flet ($P35 (< ?x49 (- 0 16)))
+(flet ($P36 (< ?x31 (- 0 23)))
+(flet ($P37 (< ?x34 1))
+(flet ($P38 (< ?x42 0))
+(flet ($P39 (< x2 (- 0 3)))
+(flet ($P40 (< x3 (- 0 16)))
+(flet ($P41 (< ?x25 9))
+(flet ($P42 (< ?x29 (- 0 4)))
+(flet ($P43 (< x6 (- 0 29)))
+(flet ($P44 (< ?x42 (- 0 1)))
+(flet ($P45 (< ?x30 16))
+(flet ($P46 (= ?x15 ?x21))
+(flet ($P47 (< ?x12 28))
+(flet ($P48 (= ?x23 ?x28))
+(flet ($P49 (< ?x35 (- 0 12)))
+(flet ($P50 (< ?x37 14))
+(flet ($P51 (< ?x42 (- 0 12)))
+(flet ($P52 (< ?x44 13))
+(flet ($P53 (< x9 4))
+(flet ($P54 (< ?x23 12))
+(flet ($P55 (< x4 29))
+(flet ($P56 (= ?x21 ?x22))
+(flet ($P57 (< ?x46 (- 0 7)))
+(flet ($P58 (< ?x14 15))
+(flet ($P59 (< ?x18 29))
+(and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (a [...]
diff --git a/test/regress/regress0/uflra/pb_real_10_0100_10_11.smt b/test/regress/regress0/uflra/pb_real_10_0100_10_11.smt
new file mode 100644
index 0000000..39b7ed9
--- /dev/null
+++ b/test/regress/regress0/uflra/pb_real_10_0100_10_11.smt
@@ -0,0 +1,126 @@
+(benchmark mathsat
+:source { MathSat group }
+:logic QF_UFLRA
+:status sat 
+:category { random } 
+:difficulty { 3 }
+:extrafuns ((f0_1 Real Real))
+:extrafuns ((f0_2 Real Real Real))
+:extrafuns ((f0_3 Real Real Real Real))
+:extrafuns ((f0_4 Real Real Real Real Real))
+:extrafuns ((f1_1 Real Real))
+:extrafuns ((f1_2 Real Real Real))
+:extrafuns ((f1_3 Real Real Real Real))
+:extrafuns ((f1_4 Real Real Real Real Real))
+:extrafuns ((x0 Real))
+:extrafuns ((x1 Real))
+:extrafuns ((x2 Real))
+:extrafuns ((x3 Real))
+:extrafuns ((x4 Real))
+:extrafuns ((x5 Real))
+:extrafuns ((x6 Real))
+:extrafuns ((x7 Real))
+:extrafuns ((x8 Real))
+:extrafuns ((x9 Real))
+:extrapreds ((P0))
+:extrapreds ((P1))
+:extrapreds ((P2))
+:extrapreds ((P3))
+:extrapreds ((P4))
+:extrapreds ((P5))
+:extrapreds ((P6))
+:extrapreds ((P7))
+:extrapreds ((P8))
+:extrapreds ((P9))
+:formula
+(let (?x10 (f1_1 x4))
+(let (?x11 (f1_1 x6))
+(let (?x12 (- (+ (* 4 x1) (* 29 x9)) (* 21 x7)))
+(let (?x13 (- (+ (* (- 0 17) x5) (* 27 x1)) (* 12 x3)))
+(let (?x14 (- (+ (* (- 0 10) x3) (* 13 x7)) (* 5 x1)))
+(let (?x15 (f0_1 x9))
+(let (?x16 (f0_1 x1))
+(let (?x17 (+ (+ (* 17 ?x15) (* 24 x5)) (* 23 ?x16)))
+(let (?x18 (f0_2 x6 x5))
+(let (?x19 (f1_2 x0 x0))
+(let (?x20 (- (+ (* (- 0 19) x5) (* 26 x2)) (* 21 ?x12)))
+(let (?x21 (f1_2 x7 x8))
+(let (?x22 (- (+ (* 10 ?x18) (* 23 x2)) (* 11 x8)))
+(let (?x23 (f0_2 x9 x3))
+(let (?x24 (f1_2 x1 x9))
+(let (?x25 (f0_2 x5 x8))
+(let (?x26 (f1_1 x1))
+(let (?x27 (f0_2 x4 x7))
+(let (?x28 (f1_1 x7))
+(let (?x29 (f1_2 x6 ?x18))
+(let (?x30 (- (- (* (- 0 12) x8) (* 1 x5)) (* 16 x7)))
+(let (?x31 (+ (- (* (- 0 29) ?x28) (* 7 ?x19)) (* 7 ?x11)))
+(let (?x32 (f1_1 x3))
+(let (?x33 (+ (+ (* (- 0 23) x0) (* 17 x2)) (* 7 x4)))
+(let (?x34 (- (+ (* (- 0 21) ?x27) (* 17 x8)) (* 6 ?x23)))
+(let (?x35 (+ (+ (* (- 0 14) ?x20) (* 16 ?x30)) (* 8 ?x18)))
+(let (?x36 (f0_2 x5 x7))
+(let (?x37 (f1_2 x9 x8))
+(let (?x38 (f1_2 x1 ?x12))
+(let (?x39 (f0_1 x3))
+(let (?x40 (- (- (* (- 0 24) x4) (* 21 x2)) (* 9 x5)))
+(let (?x41 (+ (- (* 1 ?x35) (* 3 ?x14)) (* 12 ?x18)))
+(let (?x42 (- (+ (* (- 0 11) x9) (* 16 x7)) (* 4 x1)))
+(let (?x43 (f1_2 ?x15 ?x14))
+(let (?x44 (f1_2 ?x43 ?x18))
+(let (?x45 (f0_1 x5))
+(let (?x46 (f0_1 x2))
+(let (?x47 (f0_1 x5))
+(let (?x48 (+ (- (* (- 0 8) x2) (* 19 x6)) (* 8 x1)))
+(let (?x49 (f1_2 x9 x0))
+(flet ($P10 (= ?x38 ?x18))
+(flet ($P11 (< ?x12 (- 0 20)))
+(flet ($P12 (< ?x11 8))
+(flet ($P13 (< ?x39 (- 0 24)))
+(flet ($P14 (< x2 (- 0 18)))
+(flet ($P15 (= ?x18 x8))
+(flet ($P16 (= ?x37 ?x34))
+(flet ($P17 (< ?x14 (- 0 24)))
+(flet ($P18 (= ?x26 ?x33))
+(flet ($P19 (= ?x18 ?x15))
+(flet ($P20 (< ?x35 (- 0 22)))
+(flet ($P21 (= ?x41 ?x13))
+(flet ($P22 (< x1 (- 0 27)))
+(flet ($P23 (< ?x47 (- 0 27)))
+(flet ($P24 (< ?x45 (- 0 10)))
+(flet ($P25 (= ?x13 ?x35))
+(flet ($P26 (< ?x17 (- 0 1)))
+(flet ($P27 (< x8 3))
+(flet ($P28 (< x7 23))
+(flet ($P29 (< ?x27 (- 0 28)))
+(flet ($P30 (< ?x35 (- 0 1)))
+(flet ($P31 (< ?x11 15))
+(flet ($P32 (< ?x39 (- 0 17)))
+(flet ($P33 (< ?x40 (- 0 28)))
+(flet ($P34 (< ?x15 (- 0 8)))
+(flet ($P35 (< ?x33 19))
+(flet ($P36 (= ?x41 x6))
+(flet ($P37 (< ?x48 26))
+(flet ($P38 (< ?x46 0))
+(flet ($P39 (< ?x42 9))
+(flet ($P40 (= ?x43 x6))
+(flet ($P41 (< x8 (- 0 13)))
+(flet ($P42 (< ?x17 (- 0 26)))
+(flet ($P43 (= x4 x5))
+(flet ($P44 (< ?x11 17))
+(flet ($P45 (< ?x12 15))
+(flet ($P46 (< ?x19 1))
+(flet ($P47 (< ?x49 9))
+(flet ($P48 (< x0 (- 0 14)))
+(flet ($P49 (< ?x27 22))
+(flet ($P50 (< x6 18))
+(flet ($P51 (< x0 (- 0 15)))
+(flet ($P52 (< ?x13 17))
+(flet ($P53 (< ?x19 (- 0 15)))
+(flet ($P54 (< x9 6))
+(flet ($P55 (< ?x35 22))
+(flet ($P56 (< x5 (- 0 26)))
+(flet ($P57 (< ?x34 5))
+(flet ($P58 (= ?x37 x1))
+(flet ($P59 (< ?x47 (- 0 28)))
+(and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (a [...]
diff --git a/test/regress/regress0/uflra/pb_real_10_0100_10_15.smt b/test/regress/regress0/uflra/pb_real_10_0100_10_15.smt
new file mode 100644
index 0000000..c893c56
--- /dev/null
+++ b/test/regress/regress0/uflra/pb_real_10_0100_10_15.smt
@@ -0,0 +1,126 @@
+(benchmark mathsat
+:source { MathSat group }
+:logic QF_UFLRA
+:status sat 
+:category { random } 
+:difficulty { 3 }
+:extrafuns ((f0_1 Real Real))
+:extrafuns ((f0_2 Real Real Real))
+:extrafuns ((f0_3 Real Real Real Real))
+:extrafuns ((f0_4 Real Real Real Real Real))
+:extrafuns ((f1_1 Real Real))
+:extrafuns ((f1_2 Real Real Real))
+:extrafuns ((f1_3 Real Real Real Real))
+:extrafuns ((f1_4 Real Real Real Real Real))
+:extrafuns ((x0 Real))
+:extrafuns ((x1 Real))
+:extrafuns ((x2 Real))
+:extrafuns ((x3 Real))
+:extrafuns ((x4 Real))
+:extrafuns ((x5 Real))
+:extrafuns ((x6 Real))
+:extrafuns ((x7 Real))
+:extrafuns ((x8 Real))
+:extrafuns ((x9 Real))
+:extrapreds ((P0))
+:extrapreds ((P1))
+:extrapreds ((P2))
+:extrapreds ((P3))
+:extrapreds ((P4))
+:extrapreds ((P5))
+:extrapreds ((P6))
+:extrapreds ((P7))
+:extrapreds ((P8))
+:extrapreds ((P9))
+:formula
+(let (?x10 (f1_1 x4))
+(let (?x11 (f0_2 x0 x0))
+(let (?x12 (- (- (* (- 0 22) x3) (* 6 x9)) (* 14 x6)))
+(let (?x13 (+ (- (* (- 0 19) x2) (* 15 ?x10)) (* 12 x4)))
+(let (?x14 (f0_1 x7))
+(let (?x15 (f1_2 x5 x7))
+(let (?x16 (f1_2 x8 x8))
+(let (?x17 (f1_2 x0 x9))
+(let (?x18 (f1_2 ?x10 x3))
+(let (?x19 (f0_2 x7 x9))
+(let (?x20 (f0_2 x7 x9))
+(let (?x21 (- (- (* (- 0 6) x7) (* 5 x6)) (* 9 x2)))
+(let (?x22 (f0_2 x5 x5))
+(let (?x23 (f1_2 x9 x0))
+(let (?x24 (f0_1 x7))
+(let (?x25 (f0_1 x5))
+(let (?x26 (f0_1 x7))
+(let (?x27 (+ (- (* 13 x6) (* 27 x1)) (* 4 x7)))
+(let (?x28 (f0_1 x8))
+(let (?x29 (f1_2 x3 x0))
+(let (?x30 (+ (+ (* (- 0 10) x7) (* 23 x1)) (* 4 x4)))
+(let (?x31 (+ (+ (* (- 0 4) x7) (* 6 x7)) (* 2 x1)))
+(let (?x32 (f1_2 x0 x7))
+(let (?x33 (f1_1 x9))
+(let (?x34 (f1_2 ?x23 ?x25))
+(let (?x35 (f1_1 x5))
+(let (?x36 (f1_2 x7 x4))
+(let (?x37 (f0_2 x0 x7))
+(let (?x38 (+ (+ (* 25 ?x36) (* 20 x2)) (* 23 ?x27)))
+(let (?x39 (f1_2 x2 x1))
+(let (?x40 (+ (- (* 29 ?x11) (* 29 ?x32)) (* 20 ?x15)))
+(let (?x41 (f1_2 ?x33 ?x18))
+(let (?x42 (+ (+ (* (- 0 13) ?x21) (* 22 ?x23)) (* 9 x6)))
+(let (?x43 (f1_1 x9))
+(let (?x44 (f0_1 x9))
+(let (?x45 (+ (+ (* 20 ?x15) (* 4 ?x34)) (* 22 ?x22)))
+(let (?x46 (- (- (* (- 0 14) x7) (* 21 x6)) (* 21 x2)))
+(let (?x47 (f0_2 x1 x7))
+(let (?x48 (f1_1 x3))
+(let (?x49 (f1_1 x2))
+(flet ($P10 (< ?x35 (- 0 29)))
+(flet ($P11 (< ?x38 21))
+(flet ($P12 (< ?x28 (- 0 6)))
+(flet ($P13 (= ?x27 ?x12))
+(flet ($P14 (= ?x41 ?x32))
+(flet ($P15 (< x0 (- 0 9)))
+(flet ($P16 (< x0 (- 0 3)))
+(flet ($P17 (< ?x25 26))
+(flet ($P18 (< ?x13 2))
+(flet ($P19 (< ?x30 (- 0 29)))
+(flet ($P20 (< ?x33 (- 0 26)))
+(flet ($P21 (< ?x17 0))
+(flet ($P22 (< x5 0))
+(flet ($P23 (< ?x42 0))
+(flet ($P24 (< ?x27 (- 0 13)))
+(flet ($P25 (< ?x22 28))
+(flet ($P26 (< ?x26 (- 0 6)))
+(flet ($P27 (< ?x24 11))
+(flet ($P28 (< ?x41 6))
+(flet ($P29 (< ?x18 (- 0 23)))
+(flet ($P30 (= ?x31 ?x26))
+(flet ($P31 (< ?x19 (- 0 10)))
+(flet ($P32 (< ?x47 19))
+(flet ($P33 (= ?x22 ?x26))
+(flet ($P34 (< ?x31 (- 0 1)))
+(flet ($P35 (< ?x16 6))
+(flet ($P36 (< x0 18))
+(flet ($P37 (< x8 28))
+(flet ($P38 (< ?x27 21))
+(flet ($P39 (< ?x32 12))
+(flet ($P40 (= ?x32 ?x27))
+(flet ($P41 (< ?x31 16))
+(flet ($P42 (< ?x47 15))
+(flet ($P43 (< ?x36 8))
+(flet ($P44 (< ?x16 13))
+(flet ($P45 (< ?x23 19))
+(flet ($P46 (< ?x10 13))
+(flet ($P47 (= ?x48 ?x38))
+(flet ($P48 (< ?x20 (- 0 7)))
+(flet ($P49 (< ?x21 (- 0 10)))
+(flet ($P50 (< ?x33 (- 0 7)))
+(flet ($P51 (= ?x32 ?x41))
+(flet ($P52 (< ?x45 18))
+(flet ($P53 (< ?x38 (- 0 13)))
+(flet ($P54 (< x1 21))
+(flet ($P55 (= ?x31 ?x30))
+(flet ($P56 (< ?x11 28))
+(flet ($P57 (< ?x48 (- 0 12)))
+(flet ($P58 (= x3 ?x28))
+(flet ($P59 (< x6 (- 0 19)))
+(and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (a [...]
diff --git a/test/regress/regress0/uflra/pb_real_10_0100_10_16.smt b/test/regress/regress0/uflra/pb_real_10_0100_10_16.smt
new file mode 100644
index 0000000..27d44cf
--- /dev/null
+++ b/test/regress/regress0/uflra/pb_real_10_0100_10_16.smt
@@ -0,0 +1,126 @@
+(benchmark mathsat
+:source { MathSat group }
+:logic QF_UFLRA
+:status sat 
+:category { random } 
+:difficulty { 3 }
+:extrafuns ((f0_1 Real Real))
+:extrafuns ((f0_2 Real Real Real))
+:extrafuns ((f0_3 Real Real Real Real))
+:extrafuns ((f0_4 Real Real Real Real Real))
+:extrafuns ((f1_1 Real Real))
+:extrafuns ((f1_2 Real Real Real))
+:extrafuns ((f1_3 Real Real Real Real))
+:extrafuns ((f1_4 Real Real Real Real Real))
+:extrafuns ((x0 Real))
+:extrafuns ((x1 Real))
+:extrafuns ((x2 Real))
+:extrafuns ((x3 Real))
+:extrafuns ((x4 Real))
+:extrafuns ((x5 Real))
+:extrafuns ((x6 Real))
+:extrafuns ((x7 Real))
+:extrafuns ((x8 Real))
+:extrafuns ((x9 Real))
+:extrapreds ((P0))
+:extrapreds ((P1))
+:extrapreds ((P2))
+:extrapreds ((P3))
+:extrapreds ((P4))
+:extrapreds ((P5))
+:extrapreds ((P6))
+:extrapreds ((P7))
+:extrapreds ((P8))
+:extrapreds ((P9))
+:formula
+(let (?x10 (f0_2 x3 x2))
+(let (?x11 (f1_2 x9 x8))
+(let (?x12 (f1_1 x8))
+(let (?x13 (f0_1 x7))
+(let (?x14 (f0_1 x2))
+(let (?x15 (f0_1 x1))
+(let (?x16 (f0_2 x4 x7))
+(let (?x17 (f1_2 x9 x0))
+(let (?x18 (+ (- (* 13 x7) (* 13 x4)) (* 6 x2)))
+(let (?x19 (f0_1 x6))
+(let (?x20 (- (+ (* (- 0 22) x0) (* 19 x7)) (* 20 x1)))
+(let (?x21 (f0_2 ?x15 x7))
+(let (?x22 (- (- (* (- 0 18) x4) (* 27 x1)) (* 24 x7)))
+(let (?x23 (f0_2 x8 x3))
+(let (?x24 (f1_2 x5 x8))
+(let (?x25 (f0_2 x6 x0))
+(let (?x26 (- (+ (* (- 0 1) x1) (* 9 ?x11)) (* 2 ?x21)))
+(let (?x27 (f1_2 x7 x7))
+(let (?x28 (+ (+ (* (- 0 10) x2) (* 5 ?x15)) (* 2 ?x11)))
+(let (?x29 (- (- (* (- 0 24) x3) (* 24 x8)) (* 4 x1)))
+(let (?x30 (f1_2 ?x22 x4))
+(let (?x31 (f1_1 x2))
+(let (?x32 (- (+ (* 19 ?x10) (* 5 ?x24)) (* 17 x1)))
+(let (?x33 (- (- (* 22 x3) (* 6 x9)) (* 13 x2)))
+(let (?x34 (f1_2 x8 x5))
+(let (?x35 (- (+ (* (- 0 23) ?x18) (* 17 x8)) (* 19 ?x20)))
+(let (?x36 (f0_2 x7 x0))
+(let (?x37 (f1_1 x2))
+(let (?x38 (+ (+ (* (- 0 9) x5) (* 8 x6)) (* 14 x1)))
+(let (?x39 (f1_2 ?x35 ?x12))
+(let (?x40 (- (- (* 10 x3) (* 22 x1)) (* 29 x8)))
+(let (?x41 (f1_2 ?x30 ?x28))
+(let (?x42 (f0_1 x4))
+(let (?x43 (+ (+ (* 29 x2) (* 1 x3)) (* 3 ?x37)))
+(let (?x44 (f1_2 x2 x3))
+(let (?x45 (+ (- (* 10 x4) (* 6 x3)) (* 24 x1)))
+(let (?x46 (+ (+ (* (- 0 12) x8) (* 22 x3)) (* 7 x4)))
+(let (?x47 (- (+ (* (- 0 28) ?x44) (* 29 ?x16)) (* 5 x7)))
+(let (?x48 (f1_1 x6))
+(let (?x49 (f1_1 x8))
+(flet ($P10 (< ?x41 24))
+(flet ($P11 (< ?x22 (- 0 20)))
+(flet ($P12 (< ?x10 (- 0 8)))
+(flet ($P13 (< ?x46 2))
+(flet ($P14 (< ?x30 9))
+(flet ($P15 (< x9 11))
+(flet ($P16 (< ?x33 1))
+(flet ($P17 (< ?x47 (- 0 19)))
+(flet ($P18 (< ?x36 22))
+(flet ($P19 (< ?x20 4))
+(flet ($P20 (< ?x29 29))
+(flet ($P21 (< ?x47 15))
+(flet ($P22 (< ?x11 8))
+(flet ($P23 (< ?x28 24))
+(flet ($P24 (< ?x31 0))
+(flet ($P25 (< ?x11 11))
+(flet ($P26 (< x7 0))
+(flet ($P27 (< ?x30 (- 0 8)))
+(flet ($P28 (< ?x36 (- 0 22)))
+(flet ($P29 (= ?x33 ?x45))
+(flet ($P30 (= x3 ?x46))
+(flet ($P31 (= ?x29 ?x18))
+(flet ($P32 (= ?x22 ?x17))
+(flet ($P33 (< ?x46 9))
+(flet ($P34 (< ?x32 4))
+(flet ($P35 (= ?x11 ?x41))
+(flet ($P36 (< ?x27 (- 0 15)))
+(flet ($P37 (< ?x48 (- 0 11)))
+(flet ($P38 (< ?x37 (- 0 29)))
+(flet ($P39 (< ?x11 (- 0 9)))
+(flet ($P40 (< ?x43 20))
+(flet ($P41 (< ?x30 7))
+(flet ($P42 (< ?x31 (- 0 22)))
+(flet ($P43 (< ?x36 (- 0 4)))
+(flet ($P44 (< ?x43 13))
+(flet ($P45 (< ?x11 (- 0 16)))
+(flet ($P46 (< ?x40 22))
+(flet ($P47 (< x9 (- 0 19)))
+(flet ($P48 (< ?x25 12))
+(flet ($P49 (< ?x23 19))
+(flet ($P50 (< x1 (- 0 16)))
+(flet ($P51 (= ?x19 x6))
+(flet ($P52 (= x8 ?x43))
+(flet ($P53 (< x4 (- 0 2)))
+(flet ($P54 (= ?x14 ?x48))
+(flet ($P55 (< ?x42 (- 0 23)))
+(flet ($P56 (< ?x19 3))
+(flet ($P57 (< ?x36 1))
+(flet ($P58 (< ?x26 0))
+(flet ($P59 (< ?x18 (- 0 21)))
+(and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (a [...]
diff --git a/test/regress/regress0/uflra/pb_real_10_0100_10_19.smt b/test/regress/regress0/uflra/pb_real_10_0100_10_19.smt
new file mode 100644
index 0000000..a9b0fad
--- /dev/null
+++ b/test/regress/regress0/uflra/pb_real_10_0100_10_19.smt
@@ -0,0 +1,126 @@
+(benchmark mathsat
+:source { MathSat group }
+:logic QF_UFLRA
+:status sat 
+:category { random } 
+:difficulty { 3 }
+:extrafuns ((f0_1 Real Real))
+:extrafuns ((f0_2 Real Real Real))
+:extrafuns ((f0_3 Real Real Real Real))
+:extrafuns ((f0_4 Real Real Real Real Real))
+:extrafuns ((f1_1 Real Real))
+:extrafuns ((f1_2 Real Real Real))
+:extrafuns ((f1_3 Real Real Real Real))
+:extrafuns ((f1_4 Real Real Real Real Real))
+:extrafuns ((x0 Real))
+:extrafuns ((x1 Real))
+:extrafuns ((x2 Real))
+:extrafuns ((x3 Real))
+:extrafuns ((x4 Real))
+:extrafuns ((x5 Real))
+:extrafuns ((x6 Real))
+:extrafuns ((x7 Real))
+:extrafuns ((x8 Real))
+:extrafuns ((x9 Real))
+:extrapreds ((P0))
+:extrapreds ((P1))
+:extrapreds ((P2))
+:extrapreds ((P3))
+:extrapreds ((P4))
+:extrapreds ((P5))
+:extrapreds ((P6))
+:extrapreds ((P7))
+:extrapreds ((P8))
+:extrapreds ((P9))
+:formula
+(let (?x10 (f1_1 x3))
+(let (?x11 (f1_1 x5))
+(let (?x12 (f1_1 x9))
+(let (?x13 (- (- (* (- 0 13) x7) (* 1 x6)) (* 15 x8)))
+(let (?x14 (f0_2 x7 x6))
+(let (?x15 (- (+ (* 26 x9) (* 23 x7)) (* 22 x8)))
+(let (?x16 (- (- (* 23 x4) (* 22 x3)) (* 15 x9)))
+(let (?x17 (f0_1 x9))
+(let (?x18 (+ (- (* (- 0 12) x3) (* 15 x6)) (* 17 x9)))
+(let (?x19 (f1_1 x1))
+(let (?x20 (f1_1 ?x13))
+(let (?x21 (- (- (* 10 x9) (* 11 x5)) (* 3 x3)))
+(let (?x22 (- (- (* (- 0 12) x1) (* 14 ?x17)) (* 24 x3)))
+(let (?x23 (f0_2 ?x12 ?x13))
+(let (?x24 (f0_2 x3 x1))
+(let (?x25 (+ (+ (* 16 ?x17) (* 10 ?x16)) (* 26 ?x15)))
+(let (?x26 (- (- (* (- 0 4) x6) (* 9 x7)) (* 23 x5)))
+(let (?x27 (f1_1 x9))
+(let (?x28 (f0_1 x8))
+(let (?x29 (f1_2 x5 x5))
+(let (?x30 (- (+ (* (- 0 9) x8) (* 19 x9)) (* 25 x2)))
+(let (?x31 (f1_2 x8 ?x12))
+(let (?x32 (+ (+ (* 10 x4) (* 18 x2)) (* 23 x5)))
+(let (?x33 (+ (+ (* 4 ?x31) (* 26 x7)) (* 13 ?x32)))
+(let (?x34 (f0_2 x7 x0))
+(let (?x35 (- (+ (* (- 0 14) x6) (* 1 ?x11)) (* 15 ?x20)))
+(let (?x36 (f0_1 x6))
+(let (?x37 (+ (+ (* 3 x3) (* 4 x5)) (* 29 x0)))
+(let (?x38 (f1_1 x5))
+(let (?x39 (f1_1 x0))
+(let (?x40 (f1_1 x2))
+(let (?x41 (f0_1 x5))
+(let (?x42 (- (- (* 29 ?x22) (* 2 ?x29)) (* 3 ?x10)))
+(let (?x43 (+ (+ (* 2 x3) (* 25 x2)) (* 27 x0)))
+(let (?x44 (- (+ (* (- 0 11) x8) (* 26 ?x36)) (* 1 ?x28)))
+(let (?x45 (f0_2 x8 x5))
+(let (?x46 (+ (- (* 29 x9) (* 26 x3)) (* 27 x7)))
+(let (?x47 (f1_1 x2))
+(let (?x48 (f1_2 ?x11 ?x13))
+(let (?x49 (f0_1 x2))
+(flet ($P10 (= x9 x5))
+(flet ($P11 (< x4 24))
+(flet ($P12 (< x5 (- 0 25)))
+(flet ($P13 (< x1 (- 0 16)))
+(flet ($P14 (< ?x13 (- 0 15)))
+(flet ($P15 (< ?x13 3))
+(flet ($P16 (< ?x41 21))
+(flet ($P17 (= ?x28 ?x32))
+(flet ($P18 (< x9 (- 0 1)))
+(flet ($P19 (< ?x10 8))
+(flet ($P20 (< x4 (- 0 22)))
+(flet ($P21 (< ?x47 6))
+(flet ($P22 (< x2 (- 0 26)))
+(flet ($P23 (< ?x41 22))
+(flet ($P24 (< ?x25 22))
+(flet ($P25 (< x7 (- 0 3)))
+(flet ($P26 (< ?x25 23))
+(flet ($P27 (< x8 (- 0 1)))
+(flet ($P28 (< x6 (- 0 13)))
+(flet ($P29 (< x4 (- 0 24)))
+(flet ($P30 (< x6 (- 0 15)))
+(flet ($P31 (< ?x44 (- 0 14)))
+(flet ($P32 (< ?x10 (- 0 16)))
+(flet ($P33 (< ?x21 28))
+(flet ($P34 (< ?x17 27))
+(flet ($P35 (< ?x31 26))
+(flet ($P36 (= ?x47 ?x24))
+(flet ($P37 (< ?x49 27))
+(flet ($P38 (< ?x36 (- 0 7)))
+(flet ($P39 (= ?x32 ?x23))
+(flet ($P40 (< ?x23 24))
+(flet ($P41 (< ?x35 12))
+(flet ($P42 (< ?x35 17))
+(flet ($P43 (< ?x34 (- 0 2)))
+(flet ($P44 (= x5 ?x37))
+(flet ($P45 (< ?x14 22))
+(flet ($P46 (< ?x24 6))
+(flet ($P47 (< ?x14 (- 0 14)))
+(flet ($P48 (< ?x22 (- 0 11)))
+(flet ($P49 (< ?x32 7))
+(flet ($P50 (< ?x38 (- 0 18)))
+(flet ($P51 (< ?x20 (- 0 3)))
+(flet ($P52 (< ?x46 (- 0 1)))
+(flet ($P53 (< ?x35 11))
+(flet ($P54 (= ?x37 ?x30))
+(flet ($P55 (< ?x36 29))
+(flet ($P56 (= ?x23 ?x21))
+(flet ($P57 (< ?x16 (- 0 29)))
+(flet ($P58 (< ?x39 (- 0 9)))
+(flet ($P59 (< ?x43 29))
+(and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (a [...]
diff --git a/test/regress/regress0/uflra/pb_real_10_0200_10_22.smt b/test/regress/regress0/uflra/pb_real_10_0200_10_22.smt
new file mode 100644
index 0000000..4508d1f
--- /dev/null
+++ b/test/regress/regress0/uflra/pb_real_10_0200_10_22.smt
@@ -0,0 +1,126 @@
+(benchmark mathsat
+:source { MathSat group }
+:logic QF_UFLRA
+:status unsat 
+:category { random } 
+:difficulty { 3 }
+:extrafuns ((f0_1 Real Real))
+:extrafuns ((f0_2 Real Real Real))
+:extrafuns ((f0_3 Real Real Real Real))
+:extrafuns ((f0_4 Real Real Real Real Real))
+:extrafuns ((f1_1 Real Real))
+:extrafuns ((f1_2 Real Real Real))
+:extrafuns ((f1_3 Real Real Real Real))
+:extrafuns ((f1_4 Real Real Real Real Real))
+:extrafuns ((x0 Real))
+:extrafuns ((x1 Real))
+:extrafuns ((x2 Real))
+:extrafuns ((x3 Real))
+:extrafuns ((x4 Real))
+:extrafuns ((x5 Real))
+:extrafuns ((x6 Real))
+:extrafuns ((x7 Real))
+:extrafuns ((x8 Real))
+:extrafuns ((x9 Real))
+:extrapreds ((P0))
+:extrapreds ((P1))
+:extrapreds ((P2))
+:extrapreds ((P3))
+:extrapreds ((P4))
+:extrapreds ((P5))
+:extrapreds ((P6))
+:extrapreds ((P7))
+:extrapreds ((P8))
+:extrapreds ((P9))
+:formula
+(let (?x10 (f0_1 x3))
+(let (?x11 (f0_1 x4))
+(let (?x12 (f1_2 x7 x0))
+(let (?x13 (- (- (* (- 0 11) x9) (* 21 x4)) (* 11 x7)))
+(let (?x14 (- (+ (* 26 x3) (* 17 x5)) (* 1 x6)))
+(let (?x15 (- (+ (* 18 x2) (* 9 x9)) (* 7 x6)))
+(let (?x16 (- (- (* 24 x6) (* 9 x9)) (* 13 x5)))
+(let (?x17 (+ (- (* 13 x0) (* 15 x3)) (* 6 x2)))
+(let (?x18 (f0_1 x6))
+(let (?x19 (f0_2 x1 x6))
+(let (?x20 (- (+ (* 29 x6) (* 21 x7)) (* 25 x9)))
+(let (?x21 (+ (+ (* (- 0 18) x6) (* 13 x5)) (* 2 x7)))
+(let (?x22 (+ (+ (* 16 x0) (* 10 x1)) (* 15 x3)))
+(let (?x23 (f1_2 x5 x0))
+(let (?x24 (- (+ (* 2 x8) (* 27 x5)) (* 9 x0)))
+(let (?x25 (- (+ (* (- 0 27) x1) (* 23 x9)) (* 22 x5)))
+(let (?x26 (f0_2 ?x21 x6))
+(let (?x27 (f1_1 x7))
+(let (?x28 (f0_2 ?x14 ?x17))
+(let (?x29 (- (+ (* 26 ?x10) (* 24 ?x26)) (* 6 x7)))
+(let (?x30 (f0_2 x1 x0))
+(let (?x31 (f1_2 x8 x5))
+(let (?x32 (f1_1 ?x21))
+(let (?x33 (f1_1 ?x14))
+(let (?x34 (f0_2 x8 x7))
+(let (?x35 (f0_2 ?x33 ?x31))
+(let (?x36 (+ (- (* (- 0 13) x3) (* 8 x9)) (* 6 x4)))
+(let (?x37 (- (- (* (- 0 9) x1) (* 22 x3)) (* 19 x8)))
+(let (?x38 (f0_2 x2 x9))
+(let (?x39 (f0_2 ?x13 ?x11))
+(let (?x40 (f1_2 x0 x7))
+(let (?x41 (f1_1 x2))
+(let (?x42 (f0_1 x1))
+(let (?x43 (f1_2 x7 x4))
+(let (?x44 (+ (+ (* 7 x5) (* 15 x5)) (* 24 x0)))
+(let (?x45 (+ (+ (* 27 x7) (* 22 x9)) (* 24 x6)))
+(let (?x46 (f1_2 x8 x6))
+(let (?x47 (+ (+ (* (- 0 24) x6) (* 13 x2)) (* 15 x7)))
+(let (?x48 (f0_2 ?x26 ?x43))
+(let (?x49 (+ (+ (* 15 x2) (* 6 x5)) (* 10 x9)))
+(flet ($P10 (< ?x36 (- 0 5)))
+(flet ($P11 (< ?x48 (- 0 26)))
+(flet ($P12 (< ?x34 6))
+(flet ($P13 (< ?x29 13))
+(flet ($P14 (< ?x17 20))
+(flet ($P15 (< x4 (- 0 27)))
+(flet ($P16 (< ?x39 (- 0 11)))
+(flet ($P17 (< ?x49 (- 0 25)))
+(flet ($P18 (< ?x11 10))
+(flet ($P19 (< ?x35 (- 0 28)))
+(flet ($P20 (< x6 6))
+(flet ($P21 (< ?x37 10))
+(flet ($P22 (< ?x25 9))
+(flet ($P23 (< ?x29 (- 0 5)))
+(flet ($P24 (< ?x44 (- 0 25)))
+(flet ($P25 (< ?x25 28))
+(flet ($P26 (< x5 (- 0 12)))
+(flet ($P27 (< ?x45 16))
+(flet ($P28 (= ?x22 ?x10))
+(flet ($P29 (< x5 14))
+(flet ($P30 (= ?x14 ?x14))
+(flet ($P31 (< ?x31 15))
+(flet ($P32 (= ?x12 ?x17))
+(flet ($P33 (< ?x45 (- 0 6)))
+(flet ($P34 (< ?x27 (- 0 25)))
+(flet ($P35 (= ?x46 ?x13))
+(flet ($P36 (= ?x33 ?x48))
+(flet ($P37 (< ?x49 (- 0 23)))
+(flet ($P38 (= ?x29 ?x45))
+(flet ($P39 (< ?x14 (- 0 20)))
+(flet ($P40 (< ?x37 12))
+(flet ($P41 (< x1 (- 0 4)))
+(flet ($P42 (< x1 29))
+(flet ($P43 (< ?x29 8))
+(flet ($P44 (< ?x20 (- 0 26)))
+(flet ($P45 (< ?x23 0))
+(flet ($P46 (= x4 ?x15))
+(flet ($P47 (< ?x19 9))
+(flet ($P48 (< ?x43 4))
+(flet ($P49 (< ?x45 16))
+(flet ($P50 (< ?x16 (- 0 8)))
+(flet ($P51 (< ?x37 (- 0 18)))
+(flet ($P52 (< ?x27 10))
+(flet ($P53 (= ?x40 ?x30))
+(flet ($P54 (< ?x20 26))
+(flet ($P55 (< ?x34 11))
+(flet ($P56 (= ?x39 ?x49))
+(flet ($P57 (< ?x43 (- 0 22)))
+(flet ($P58 (< ?x46 (- 0 3)))
+(flet ($P59 (< x7 (- 0 22)))
+(and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (a [...]
diff --git a/test/regress/regress0/uflra/pb_real_10_0200_10_26.smt b/test/regress/regress0/uflra/pb_real_10_0200_10_26.smt
new file mode 100644
index 0000000..d0e9bfe
--- /dev/null
+++ b/test/regress/regress0/uflra/pb_real_10_0200_10_26.smt
@@ -0,0 +1,126 @@
+(benchmark mathsat
+:source { MathSat group }
+:logic QF_UFLRA
+:status unsat 
+:category { random } 
+:difficulty { 3 }
+:extrafuns ((f0_1 Real Real))
+:extrafuns ((f0_2 Real Real Real))
+:extrafuns ((f0_3 Real Real Real Real))
+:extrafuns ((f0_4 Real Real Real Real Real))
+:extrafuns ((f1_1 Real Real))
+:extrafuns ((f1_2 Real Real Real))
+:extrafuns ((f1_3 Real Real Real Real))
+:extrafuns ((f1_4 Real Real Real Real Real))
+:extrafuns ((x0 Real))
+:extrafuns ((x1 Real))
+:extrafuns ((x2 Real))
+:extrafuns ((x3 Real))
+:extrafuns ((x4 Real))
+:extrafuns ((x5 Real))
+:extrafuns ((x6 Real))
+:extrafuns ((x7 Real))
+:extrafuns ((x8 Real))
+:extrafuns ((x9 Real))
+:extrapreds ((P0))
+:extrapreds ((P1))
+:extrapreds ((P2))
+:extrapreds ((P3))
+:extrapreds ((P4))
+:extrapreds ((P5))
+:extrapreds ((P6))
+:extrapreds ((P7))
+:extrapreds ((P8))
+:extrapreds ((P9))
+:formula
+(let (?x10 (f1_1 x2))
+(let (?x11 (f1_2 x8 x9))
+(let (?x12 (f1_1 x6))
+(let (?x13 (f1_1 ?x10))
+(let (?x14 (f0_1 x8))
+(let (?x15 (f1_1 x9))
+(let (?x16 (f1_1 x7))
+(let (?x17 (- (+ (* 28 x2) (* 12 x1)) (* 1 x5)))
+(let (?x18 (+ (- (* 19 x0) (* 26 x5)) (* 13 x4)))
+(let (?x19 (+ (- (* (- 0 2) x8) (* 20 x4)) (* 15 x3)))
+(let (?x20 (f1_2 x9 x4))
+(let (?x21 (f1_1 x9))
+(let (?x22 (f1_2 x7 x1))
+(let (?x23 (+ (+ (* 15 x2) (* 20 ?x11)) (* 3 ?x19)))
+(let (?x24 (f1_2 x1 x4))
+(let (?x25 (f1_1 x2))
+(let (?x26 (f0_1 ?x20))
+(let (?x27 (f0_2 x9 x1))
+(let (?x28 (f1_1 ?x16))
+(let (?x29 (f0_1 ?x17))
+(let (?x30 (f0_1 x3))
+(let (?x31 (f0_2 x1 x0))
+(let (?x32 (f1_2 ?x29 x2))
+(let (?x33 (f0_1 x5))
+(let (?x34 (f0_1 ?x25))
+(let (?x35 (f0_2 x0 x2))
+(let (?x36 (+ (+ (* 18 ?x30) (* 25 x4)) (* 13 ?x19)))
+(let (?x37 (f1_1 x8))
+(let (?x38 (f1_2 x0 x3))
+(let (?x39 (f1_1 ?x38))
+(let (?x40 (f1_1 x2))
+(let (?x41 (f1_2 ?x28 ?x38))
+(let (?x42 (f0_1 x9))
+(let (?x43 (f0_1 x8))
+(let (?x44 (f1_1 x2))
+(let (?x45 (- (- (* (- 0 8) x1) (* 17 x2)) (* 21 x5)))
+(let (?x46 (- (- (* 9 ?x39) (* 15 ?x18)) (* 10 ?x38)))
+(let (?x47 (f1_1 x6))
+(let (?x48 (f0_2 x1 x9))
+(let (?x49 (+ (+ (* 2 x2) (* 25 x4)) (* 5 x0)))
+(flet ($P10 (< x1 24))
+(flet ($P11 (< x5 (- 0 12)))
+(flet ($P12 (= ?x15 ?x45))
+(flet ($P13 (< ?x43 28))
+(flet ($P14 (< ?x26 (- 0 3)))
+(flet ($P15 (< ?x34 9))
+(flet ($P16 (< ?x26 (- 0 16)))
+(flet ($P17 (= ?x33 ?x48))
+(flet ($P18 (< x4 (- 0 28)))
+(flet ($P19 (< ?x47 (- 0 11)))
+(flet ($P20 (< ?x26 22))
+(flet ($P21 (< ?x44 (- 0 4)))
+(flet ($P22 (= ?x17 ?x17))
+(flet ($P23 (< ?x19 (- 0 2)))
+(flet ($P24 (= ?x46 ?x27))
+(flet ($P25 (< ?x16 (- 0 6)))
+(flet ($P26 (< ?x31 22))
+(flet ($P27 (= ?x35 ?x41))
+(flet ($P28 (< ?x43 (- 0 13)))
+(flet ($P29 (< x0 21))
+(flet ($P30 (< ?x31 (- 0 14)))
+(flet ($P31 (< ?x13 (- 0 1)))
+(flet ($P32 (< ?x49 22))
+(flet ($P33 (< ?x19 1))
+(flet ($P34 (< ?x39 (- 0 23)))
+(flet ($P35 (= ?x31 ?x11))
+(flet ($P36 (= ?x35 ?x44))
+(flet ($P37 (< ?x36 20))
+(flet ($P38 (< ?x34 (- 0 20)))
+(flet ($P39 (= x0 x4))
+(flet ($P40 (< ?x39 (- 0 8)))
+(flet ($P41 (< ?x35 (- 0 8)))
+(flet ($P42 (< ?x40 26))
+(flet ($P43 (< ?x14 8))
+(flet ($P44 (= ?x11 ?x44))
+(flet ($P45 (< ?x22 (- 0 13)))
+(flet ($P46 (< ?x14 28))
+(flet ($P47 (= ?x36 ?x44))
+(flet ($P48 (< ?x17 24))
+(flet ($P49 (< ?x20 9))
+(flet ($P50 (< ?x29 13))
+(flet ($P51 (< ?x22 16))
+(flet ($P52 (< ?x16 9))
+(flet ($P53 (= ?x23 ?x27))
+(flet ($P54 (< ?x37 16))
+(flet ($P55 (< ?x37 0))
+(flet ($P56 (< ?x38 7))
+(flet ($P57 (< x6 9))
+(flet ($P58 (< ?x44 18))
+(flet ($P59 (= ?x22 ?x32))
+(and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (a [...]
diff --git a/test/regress/regress0/uflra/pb_real_10_0200_10_29.smt b/test/regress/regress0/uflra/pb_real_10_0200_10_29.smt
new file mode 100644
index 0000000..bd3bc16
--- /dev/null
+++ b/test/regress/regress0/uflra/pb_real_10_0200_10_29.smt
@@ -0,0 +1,126 @@
+(benchmark mathsat
+:source { MathSat group }
+:logic QF_UFLRA
+:status unsat 
+:category { random } 
+:difficulty { 3 }
+:extrafuns ((f0_1 Real Real))
+:extrafuns ((f0_2 Real Real Real))
+:extrafuns ((f0_3 Real Real Real Real))
+:extrafuns ((f0_4 Real Real Real Real Real))
+:extrafuns ((f1_1 Real Real))
+:extrafuns ((f1_2 Real Real Real))
+:extrafuns ((f1_3 Real Real Real Real))
+:extrafuns ((f1_4 Real Real Real Real Real))
+:extrafuns ((x0 Real))
+:extrafuns ((x1 Real))
+:extrafuns ((x2 Real))
+:extrafuns ((x3 Real))
+:extrafuns ((x4 Real))
+:extrafuns ((x5 Real))
+:extrafuns ((x6 Real))
+:extrafuns ((x7 Real))
+:extrafuns ((x8 Real))
+:extrafuns ((x9 Real))
+:extrapreds ((P0))
+:extrapreds ((P1))
+:extrapreds ((P2))
+:extrapreds ((P3))
+:extrapreds ((P4))
+:extrapreds ((P5))
+:extrapreds ((P6))
+:extrapreds ((P7))
+:extrapreds ((P8))
+:extrapreds ((P9))
+:formula
+(let (?x10 (f0_2 x2 x0))
+(let (?x11 (f1_1 x7))
+(let (?x12 (f1_2 x7 x2))
+(let (?x13 (f0_2 x0 ?x12))
+(let (?x14 (f1_1 x6))
+(let (?x15 (+ (- (* 13 x2) (* 27 x7)) (* 14 x6)))
+(let (?x16 (f0_2 x2 x3))
+(let (?x17 (f1_2 x3 x3))
+(let (?x18 (f1_1 x1))
+(let (?x19 (- (+ (* 24 x0) (* 26 x6)) (* 1 x7)))
+(let (?x20 (f1_1 x8))
+(let (?x21 (f1_2 ?x16 ?x14))
+(let (?x22 (f1_1 x0))
+(let (?x23 (f1_2 x4 ?x15))
+(let (?x24 (- (+ (* (- 0 4) x1) (* 4 x6)) (* 12 ?x23)))
+(let (?x25 (f1_1 x5))
+(let (?x26 (f1_2 x3 x2))
+(let (?x27 (- (- (* (- 0 8) ?x13) (* 2 x6)) (* 16 ?x15)))
+(let (?x28 (f1_1 x3))
+(let (?x29 (f1_2 x0 x9))
+(let (?x30 (f0_1 x6))
+(let (?x31 (+ (- (* (- 0 14) x6) (* 18 x9)) (* 23 x0)))
+(let (?x32 (- (+ (* (- 0 29) x0) (* 2 x7)) (* 9 x6)))
+(let (?x33 (- (- (* 29 x6) (* 23 x6)) (* 9 x3)))
+(let (?x34 (- (- (* 10 ?x24) (* 15 ?x26)) (* 2 ?x33)))
+(let (?x35 (f0_1 x3))
+(let (?x36 (+ (- (* (- 0 23) x9) (* 27 x6)) (* 1 x8)))
+(let (?x37 (- (- (* (- 0 9) x9) (* 28 x8)) (* 17 x6)))
+(let (?x38 (f0_1 x3))
+(let (?x39 (f0_2 ?x10 ?x32))
+(let (?x40 (+ (+ (* 26 x9) (* 15 x5)) (* 2 x4)))
+(let (?x41 (- (+ (* (- 0 13) x9) (* 19 x6)) (* 23 x1)))
+(let (?x42 (f1_2 ?x12 ?x14))
+(let (?x43 (f1_1 x2))
+(let (?x44 (f0_1 ?x37))
+(let (?x45 (f1_2 x1 x4))
+(let (?x46 (- (+ (* (- 0 27) ?x22) (* 20 ?x38)) (* 16 ?x15)))
+(let (?x47 (f0_1 ?x36))
+(let (?x48 (- (- (* (- 0 12) ?x40) (* 17 ?x32)) (* 15 ?x34)))
+(let (?x49 (f1_2 x3 x2))
+(flet ($P10 (= ?x12 x6))
+(flet ($P11 (< ?x43 18))
+(flet ($P12 (< ?x10 24))
+(flet ($P13 (< ?x35 7))
+(flet ($P14 (< x7 (- 0 3)))
+(flet ($P15 (< ?x34 29))
+(flet ($P16 (< ?x44 (- 0 28)))
+(flet ($P17 (= ?x26 ?x20))
+(flet ($P18 (= ?x25 ?x45))
+(flet ($P19 (< ?x23 9))
+(flet ($P20 (< x5 19))
+(flet ($P21 (= ?x20 ?x49))
+(flet ($P22 (< ?x39 (- 0 13)))
+(flet ($P23 (< ?x22 (- 0 29)))
+(flet ($P24 (< ?x16 (- 0 17)))
+(flet ($P25 (< ?x35 27))
+(flet ($P26 (< ?x30 25))
+(flet ($P27 (= x9 x2))
+(flet ($P28 (= ?x46 ?x39))
+(flet ($P29 (< ?x22 (- 0 10)))
+(flet ($P30 (< ?x31 2))
+(flet ($P31 (< ?x48 17))
+(flet ($P32 (< x0 (- 0 23)))
+(flet ($P33 (< ?x10 27))
+(flet ($P34 (< ?x47 25))
+(flet ($P35 (< ?x40 27))
+(flet ($P36 (= ?x45 ?x29))
+(flet ($P37 (< ?x35 12))
+(flet ($P38 (< ?x23 26))
+(flet ($P39 (< ?x44 11))
+(flet ($P40 (< ?x20 (- 0 15)))
+(flet ($P41 (< x5 16))
+(flet ($P42 (< ?x17 11))
+(flet ($P43 (< ?x37 (- 0 24)))
+(flet ($P44 (< ?x35 14))
+(flet ($P45 (< x9 (- 0 8)))
+(flet ($P46 (< x5 (- 0 10)))
+(flet ($P47 (< ?x26 17))
+(flet ($P48 (< x3 (- 0 19)))
+(flet ($P49 (= ?x17 ?x43))
+(flet ($P50 (< ?x19 (- 0 15)))
+(flet ($P51 (< ?x49 17))
+(flet ($P52 (< ?x23 13))
+(flet ($P53 (< ?x45 10))
+(flet ($P54 (= x0 ?x39))
+(flet ($P55 (< ?x25 28))
+(flet ($P56 (< ?x17 26))
+(flet ($P57 (< ?x31 9))
+(flet ($P58 (< ?x46 (- 0 18)))
+(flet ($P59 (= ?x16 ?x41))
+(and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (a [...]
diff --git a/test/regress/regress0/uflra/simple.01.cvc b/test/regress/regress0/uflra/simple.01.cvc
new file mode 100644
index 0000000..62e4829
--- /dev/null
+++ b/test/regress/regress0/uflra/simple.01.cvc
@@ -0,0 +1,5 @@
+% EXPECT: sat
+x, y: REAL;
+f: REAL -> REAL;
+
+CHECKSAT NOT (f(x) = f(y));
\ No newline at end of file
diff --git a/test/regress/regress0/uflra/simple.02.cvc b/test/regress/regress0/uflra/simple.02.cvc
new file mode 100644
index 0000000..8bc20f3
--- /dev/null
+++ b/test/regress/regress0/uflra/simple.02.cvc
@@ -0,0 +1,9 @@
+% EXPECT: unsat
+x, y: REAL;
+f: REAL -> REAL;
+
+ASSERT (x <= y);
+ASSERT (y <= x);
+ASSERT NOT (f(x) = f(y));
+
+CHECKSAT;
\ No newline at end of file
diff --git a/test/regress/regress0/uflra/simple.03.cvc b/test/regress/regress0/uflra/simple.03.cvc
new file mode 100644
index 0000000..2ecf9b0
--- /dev/null
+++ b/test/regress/regress0/uflra/simple.03.cvc
@@ -0,0 +1,11 @@
+% EXPECT: sat
+x1, y1, z1: REAL;
+x2, y2, z2: REAL;
+f: REAL -> REAL;
+g: (REAL, REAL) -> REAL;
+
+ASSERT (z1 = f(x1));
+ASSERT (z2 = f(y1));
+ASSERT NOT (g(z1, z2) = g(z2, y2));
+
+CHECKSAT;
\ No newline at end of file
diff --git a/test/regress/regress0/uflra/simple.04.cvc b/test/regress/regress0/uflra/simple.04.cvc
new file mode 100644
index 0000000..e363a96
--- /dev/null
+++ b/test/regress/regress0/uflra/simple.04.cvc
@@ -0,0 +1,14 @@
+% EXPECT: unsat
+x1, x2: REAL;
+y1, y2: REAL;
+f: REAL -> REAL;
+g: (REAL, REAL) -> REAL;
+
+ASSERT (x1 <= x2) AND (x2 <= x1);
+
+ASSERT NOT (g(x1, y1) = g(x2, y2));
+
+ASSERT (y1 <= f(x1)) AND (f(x1) <= y1);
+ASSERT (y2 <= f(x2)) AND (f(x2) <= y2);
+
+CHECKSAT;
\ No newline at end of file
diff --git a/test/regress/regress0/unconstrained/Makefile.am b/test/regress/regress0/unconstrained/Makefile.am
new file mode 100644
index 0000000..b212272
--- /dev/null
+++ b/test/regress/regress0/unconstrained/Makefile.am
@@ -0,0 +1,95 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+# models not supported with unconstrained simp
+override CVC4_REGRESSION_ARGS += --unconstrained-simp --no-check-models
+export CVC4_REGRESSION_ARGS
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+# dejan: disable arith2.smt2, arith7.smt2 it's mixed arithmetic and it doesn't go well when changing theoryof 
+# lianah: disabled bvdiv.smt2, bvconcat.smt2 as the unconstrained terms are no longer recognized after implementing
+# the divide-by-zero semantics for bv division. 
+TESTS =	\
+	arith3.smt2 \
+	arith4.smt2 \
+	arith5.smt2 \
+	arith6.smt2 \
+	arith.smt2 \
+	array1.smt2 \
+	bvbool3.smt2 \
+	bvbool2.smt2 \
+	bvbool.smt2 \
+	bvcmp.smt2 \
+	bvconcat2.smt2 \
+	bvdiv2.smt2 \
+	bvext.smt2 \
+	bvite.smt2 \
+	bvmul2.smt2 \
+	bvmul3.smt2 \
+	bvmul.smt2 \
+	bvnot.smt2 \
+	bvsle2.smt2 \
+	bvsle3.smt2 \
+	bvsle4.smt2 \
+	bvsle5.smt2 \
+	bvsle.smt2 \
+	bvslt2.smt2 \
+	bvslt3.smt2 \
+	bvslt4.smt2 \
+	bvslt5.smt2 \
+	bvslt.smt2 \
+	bvule2.smt2 \
+	bvule3.smt2 \
+	bvule4.smt2 \
+	bvule5.smt2 \
+	bvule.smt2 \
+	bvult2.smt2 \
+	bvult3.smt2 \
+	bvult4.smt2 \
+	bvult5.smt2 \
+	bvult.smt2 \
+	geq.smt2 \
+	gt.smt2 \
+	ite.smt2 \
+	leq.smt2 \
+	lt.smt2 \
+	uf1.smt2 \
+	uf2.smt2 \
+	xor.smt2 \
+	mult1.smt2
+
+EXTRA_DIST = $(TESTS)
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/unconstrained/Makefile.in b/test/regress/regress0/unconstrained/Makefile.in
new file mode 100644
index 0000000..cfceda0
--- /dev/null
+++ b/test/regress/regress0/unconstrained/Makefile.in
@@ -0,0 +1,1372 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress0/unconstrained
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+# dejan: disable arith2.smt2, arith7.smt2 it's mixed arithmetic and it doesn't go well when changing theoryof 
+# lianah: disabled bvdiv.smt2, bvconcat.smt2 as the unconstrained terms are no longer recognized after implementing
+# the divide-by-zero semantics for bv division. 
+TESTS = \
+	arith3.smt2 \
+	arith4.smt2 \
+	arith5.smt2 \
+	arith6.smt2 \
+	arith.smt2 \
+	array1.smt2 \
+	bvbool3.smt2 \
+	bvbool2.smt2 \
+	bvbool.smt2 \
+	bvcmp.smt2 \
+	bvconcat2.smt2 \
+	bvdiv2.smt2 \
+	bvext.smt2 \
+	bvite.smt2 \
+	bvmul2.smt2 \
+	bvmul3.smt2 \
+	bvmul.smt2 \
+	bvnot.smt2 \
+	bvsle2.smt2 \
+	bvsle3.smt2 \
+	bvsle4.smt2 \
+	bvsle5.smt2 \
+	bvsle.smt2 \
+	bvslt2.smt2 \
+	bvslt3.smt2 \
+	bvslt4.smt2 \
+	bvslt5.smt2 \
+	bvslt.smt2 \
+	bvule2.smt2 \
+	bvule3.smt2 \
+	bvule4.smt2 \
+	bvule5.smt2 \
+	bvule.smt2 \
+	bvult2.smt2 \
+	bvult3.smt2 \
+	bvult4.smt2 \
+	bvult5.smt2 \
+	bvult.smt2 \
+	geq.smt2 \
+	gt.smt2 \
+	ite.smt2 \
+	leq.smt2 \
+	lt.smt2 \
+	uf1.smt2 \
+	uf2.smt2 \
+	xor.smt2 \
+	mult1.smt2
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/unconstrained/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress0/unconstrained/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+arith3.smt2.log: arith3.smt2
+	@p='arith3.smt2'; \
+	b='arith3.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith4.smt2.log: arith4.smt2
+	@p='arith4.smt2'; \
+	b='arith4.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith5.smt2.log: arith5.smt2
+	@p='arith5.smt2'; \
+	b='arith5.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith6.smt2.log: arith6.smt2
+	@p='arith6.smt2'; \
+	b='arith6.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+arith.smt2.log: arith.smt2
+	@p='arith.smt2'; \
+	b='arith.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+array1.smt2.log: array1.smt2
+	@p='array1.smt2'; \
+	b='array1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvbool3.smt2.log: bvbool3.smt2
+	@p='bvbool3.smt2'; \
+	b='bvbool3.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvbool2.smt2.log: bvbool2.smt2
+	@p='bvbool2.smt2'; \
+	b='bvbool2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvbool.smt2.log: bvbool.smt2
+	@p='bvbool.smt2'; \
+	b='bvbool.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvcmp.smt2.log: bvcmp.smt2
+	@p='bvcmp.smt2'; \
+	b='bvcmp.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvconcat2.smt2.log: bvconcat2.smt2
+	@p='bvconcat2.smt2'; \
+	b='bvconcat2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvdiv2.smt2.log: bvdiv2.smt2
+	@p='bvdiv2.smt2'; \
+	b='bvdiv2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvext.smt2.log: bvext.smt2
+	@p='bvext.smt2'; \
+	b='bvext.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvite.smt2.log: bvite.smt2
+	@p='bvite.smt2'; \
+	b='bvite.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvmul2.smt2.log: bvmul2.smt2
+	@p='bvmul2.smt2'; \
+	b='bvmul2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvmul3.smt2.log: bvmul3.smt2
+	@p='bvmul3.smt2'; \
+	b='bvmul3.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvmul.smt2.log: bvmul.smt2
+	@p='bvmul.smt2'; \
+	b='bvmul.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvnot.smt2.log: bvnot.smt2
+	@p='bvnot.smt2'; \
+	b='bvnot.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvsle2.smt2.log: bvsle2.smt2
+	@p='bvsle2.smt2'; \
+	b='bvsle2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvsle3.smt2.log: bvsle3.smt2
+	@p='bvsle3.smt2'; \
+	b='bvsle3.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvsle4.smt2.log: bvsle4.smt2
+	@p='bvsle4.smt2'; \
+	b='bvsle4.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvsle5.smt2.log: bvsle5.smt2
+	@p='bvsle5.smt2'; \
+	b='bvsle5.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvsle.smt2.log: bvsle.smt2
+	@p='bvsle.smt2'; \
+	b='bvsle.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvslt2.smt2.log: bvslt2.smt2
+	@p='bvslt2.smt2'; \
+	b='bvslt2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvslt3.smt2.log: bvslt3.smt2
+	@p='bvslt3.smt2'; \
+	b='bvslt3.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvslt4.smt2.log: bvslt4.smt2
+	@p='bvslt4.smt2'; \
+	b='bvslt4.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvslt5.smt2.log: bvslt5.smt2
+	@p='bvslt5.smt2'; \
+	b='bvslt5.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvslt.smt2.log: bvslt.smt2
+	@p='bvslt.smt2'; \
+	b='bvslt.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvule2.smt2.log: bvule2.smt2
+	@p='bvule2.smt2'; \
+	b='bvule2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvule3.smt2.log: bvule3.smt2
+	@p='bvule3.smt2'; \
+	b='bvule3.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvule4.smt2.log: bvule4.smt2
+	@p='bvule4.smt2'; \
+	b='bvule4.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvule5.smt2.log: bvule5.smt2
+	@p='bvule5.smt2'; \
+	b='bvule5.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvule.smt2.log: bvule.smt2
+	@p='bvule.smt2'; \
+	b='bvule.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvult2.smt2.log: bvult2.smt2
+	@p='bvult2.smt2'; \
+	b='bvult2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvult3.smt2.log: bvult3.smt2
+	@p='bvult3.smt2'; \
+	b='bvult3.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvult4.smt2.log: bvult4.smt2
+	@p='bvult4.smt2'; \
+	b='bvult4.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvult5.smt2.log: bvult5.smt2
+	@p='bvult5.smt2'; \
+	b='bvult5.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bvult.smt2.log: bvult.smt2
+	@p='bvult.smt2'; \
+	b='bvult.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+geq.smt2.log: geq.smt2
+	@p='geq.smt2'; \
+	b='geq.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+gt.smt2.log: gt.smt2
+	@p='gt.smt2'; \
+	b='gt.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ite.smt2.log: ite.smt2
+	@p='ite.smt2'; \
+	b='ite.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+leq.smt2.log: leq.smt2
+	@p='leq.smt2'; \
+	b='leq.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+lt.smt2.log: lt.smt2
+	@p='lt.smt2'; \
+	b='lt.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+uf1.smt2.log: uf1.smt2
+	@p='uf1.smt2'; \
+	b='uf1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+uf2.smt2.log: uf2.smt2
+	@p='uf2.smt2'; \
+	b='uf2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+xor.smt2.log: xor.smt2
+	@p='xor.smt2'; \
+	b='xor.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mult1.smt2.log: mult1.smt2
+	@p='mult1.smt2'; \
+	b='mult1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# models not supported with unconstrained simp
+override CVC4_REGRESSION_ARGS += --unconstrained-simp --no-check-models
+export CVC4_REGRESSION_ARGS
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress0/unconstrained/arith.smt2 b/test/regress/regress0/unconstrained/arith.smt2
new file mode 100644
index 0000000..dc2b274
--- /dev/null
+++ b/test/regress/regress0/unconstrained/arith.smt2
@@ -0,0 +1,14 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun v1 () Int)
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (< v2 100))
+(assert (not (= (a2 (- (+ v1 5) v2)) (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/arith3.smt2 b/test/regress/regress0/unconstrained/arith3.smt2
new file mode 100644
index 0000000..83634a5
--- /dev/null
+++ b/test/regress/regress0/unconstrained/arith3.smt2
@@ -0,0 +1,13 @@
+(set-logic QF_AUFLIRA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-fun v1 () Int)
+(declare-fun v2 () Int)
+(declare-fun v3 () Int)
+(declare-fun v4 () Int)
+(assert (= (* v1 v2) v3))
+(assert (< v3 v4))
+(assert (> v3 (- v4 1)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/arith4.smt2 b/test/regress/regress0/unconstrained/arith4.smt2
new file mode 100644
index 0000000..2b06d5e
--- /dev/null
+++ b/test/regress/regress0/unconstrained/arith4.smt2
@@ -0,0 +1,14 @@
+(set-logic QF_AUFNIRA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-fun v1 () Int)
+(declare-fun v2 () Int)
+(declare-fun v3 () Int)
+(declare-fun v4 () Int)
+(declare-fun v5 () Real)
+(assert (= (* v1 v2) (+ (* v3 v4) v5)))
+(assert (< v5 1))
+(assert (> v5 0))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/arith5.smt2 b/test/regress/regress0/unconstrained/arith5.smt2
new file mode 100644
index 0000000..de1e305
--- /dev/null
+++ b/test/regress/regress0/unconstrained/arith5.smt2
@@ -0,0 +1,12 @@
+(set-logic QF_AUFBVLRA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun v1 () Real)
+(declare-fun a2 (Real) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (not (= (a2 (* 2 v1)) (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/arith6.smt2 b/test/regress/regress0/unconstrained/arith6.smt2
new file mode 100644
index 0000000..0565341
--- /dev/null
+++ b/test/regress/regress0/unconstrained/arith6.smt2
@@ -0,0 +1,12 @@
+(set-logic QF_AUFBVLRA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun v1 () Real)
+(declare-fun a2 (Real) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (not (= (a2 (/ v1 2)) (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/array1.smt2 b/test/regress/regress0/unconstrained/array1.smt2
new file mode 100644
index 0000000..82f084e
--- /dev/null
+++ b/test/regress/regress0/unconstrained/array1.smt2
@@ -0,0 +1,12 @@
+(set-logic QF_AUFBV)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun v1 () (_ BitVec 16))
+(declare-fun a2 () (Array (_ BitVec 16) (_ BitVec 1024)))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (not (= (select a2 v1) (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvbool.smt2 b/test/regress/regress0/unconstrained/bvbool.smt2
new file mode 100644
index 0000000..0dded2a
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvbool.smt2
@@ -0,0 +1,31 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun p1 () Bool)
+(declare-fun p2 () Bool)
+(declare-fun p3 () Bool)
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert
+ (not
+  (=
+   (a2
+    (ite 
+     (=> (or (and (= (bvnor (bvnand (bvor (bvand x0 x1) x2) x3) x4) ((_ extract 9 0) v3)) p1) p2) p3)
+     v2
+     6)
+    )
+   (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))
+  )
+ )
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvbool2.smt2 b/test/regress/regress0/unconstrained/bvbool2.smt2
new file mode 100644
index 0000000..9490962
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvbool2.smt2
@@ -0,0 +1,23 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun p1 () Bool)
+(declare-fun p2 () Bool)
+(declare-fun p3 () Bool)
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert
+ (= (bvand x0 x1) ((_ extract 9 0) v3)))
+(assert (= x1 (_ bv0 10)))
+(assert (= v3 (_ bv1 1024)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvbool3.smt2 b/test/regress/regress0/unconstrained/bvbool3.smt2
new file mode 100644
index 0000000..a689804
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvbool3.smt2
@@ -0,0 +1,32 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun p1 () Bool)
+(declare-fun p2 () Bool)
+(declare-fun p3 () Bool)
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert
+ (not
+  (=
+   (a2
+    (ite 
+     (=> (or (= x2 x4) (= x2 x5)) (and (= (bvnor (bvnand (bvor x1 x1) (bvand x0 x0)) x3) ((_ extract 9 0) v3)) p2))
+     v2
+     6)
+    )
+   (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))
+  )
+ )
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvcmp.smt2 b/test/regress/regress0/unconstrained/bvcmp.smt2
new file mode 100644
index 0000000..ba73163
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvcmp.smt2
@@ -0,0 +1,13 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun v1 () (_ BitVec 1))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (not (= (a2 (ite (= (bvcomp v1 (_ bv0 1)) ((_ extract 0 0) v3)) v2 6)) (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvconcat2.smt2 b/test/regress/regress0/unconstrained/bvconcat2.smt2
new file mode 100644
index 0000000..aa901b9
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvconcat2.smt2
@@ -0,0 +1,22 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun x8 () (_ BitVec 10))
+(declare-fun x9 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (= (concat x0 x0) (_ bv1 20)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvdiv2.smt2 b/test/regress/regress0/unconstrained/bvdiv2.smt2
new file mode 100644
index 0000000..7a8fc37
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvdiv2.smt2
@@ -0,0 +1,26 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun x8 () (_ BitVec 10))
+(declare-fun x9 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert
+ (and
+ (not (= x0 (_ bv0 10)))
+ (not (= (bvudiv x0 x0) (_ bv1 10)))
+))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvext.smt2 b/test/regress/regress0/unconstrained/bvext.smt2
new file mode 100644
index 0000000..56289e2
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvext.smt2
@@ -0,0 +1,13 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun v1 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (not (= (a2 (ite (= ((_ extract 3 0) v1) ((_ extract 3 0) v3)) v2 6)) (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvite.smt2 b/test/regress/regress0/unconstrained/bvite.smt2
new file mode 100644
index 0000000..9e1ecc1
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvite.smt2
@@ -0,0 +1,32 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert
+ (not
+  (=
+   (a2
+    (ite 
+     (= (ite (= x0 ((_ extract 9 0) v3)) ((_ extract 0 0) v4) (bvnot ((_
+     extract 0 0) v4))) ((_ extract 0 0) v3))
+     v2
+     6)
+    )
+   (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))
+  )
+ )
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvmul.smt2 b/test/regress/regress0/unconstrained/bvmul.smt2
new file mode 100644
index 0000000..fc56695
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvmul.smt2
@@ -0,0 +1,31 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert
+ (not
+  (=
+   (a2
+    (ite 
+     (= (bvmul x0 x1) ((_ extract 9 0) v3))
+     v2
+     6)
+    )
+   (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))
+  )
+ )
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvmul2.smt2 b/test/regress/regress0/unconstrained/bvmul2.smt2
new file mode 100644
index 0000000..89e4ff5
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvmul2.smt2
@@ -0,0 +1,22 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun x8 () (_ BitVec 10))
+(declare-fun x9 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (= (bvmul x0 (_ bv2 10)) (_ bv1 10)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvmul3.smt2 b/test/regress/regress0/unconstrained/bvmul3.smt2
new file mode 100644
index 0000000..ea67a1b
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvmul3.smt2
@@ -0,0 +1,31 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert
+ (not
+  (=
+   (a2
+    (ite 
+     (= (bvmul x0 (_ bv15 10)) ((_ extract 9 0) v3))
+     v2
+     6)
+    )
+   (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))
+  )
+ )
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvnot.smt2 b/test/regress/regress0/unconstrained/bvnot.smt2
new file mode 100644
index 0000000..22fc7e7
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvnot.smt2
@@ -0,0 +1,13 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun v1 () (_ BitVec 1))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (not (= (a2 (ite (= (bvnot (bvneg v1)) ((_ extract 0 0) v3)) v2 6)) (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvsle.smt2 b/test/regress/regress0/unconstrained/bvsle.smt2
new file mode 100644
index 0000000..702f9d7
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvsle.smt2
@@ -0,0 +1,31 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert
+ (not
+  (=
+   (a2
+    (ite 
+     (bvsle x0 x1)
+     v2
+     6)
+    )
+   (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))
+  )
+ )
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvsle2.smt2 b/test/regress/regress0/unconstrained/bvsle2.smt2
new file mode 100644
index 0000000..b797fa4
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvsle2.smt2
@@ -0,0 +1,32 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (= x0 (_ bv513 10)))
+(assert
+ (not
+  (=
+   (a2
+    (ite 
+     (bvsle x0 x1)
+     v2
+     6)
+    )
+   (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))
+  )
+ )
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvsle3.smt2 b/test/regress/regress0/unconstrained/bvsle3.smt2
new file mode 100644
index 0000000..4d89783
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvsle3.smt2
@@ -0,0 +1,21 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (bvslt x0 (_ bv513 10)))
+(assert (not (bvsle x0 x1)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvsle4.smt2 b/test/regress/regress0/unconstrained/bvsle4.smt2
new file mode 100644
index 0000000..8927a5f
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvsle4.smt2
@@ -0,0 +1,32 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (= x1 (_ bv510 10)))
+(assert
+ (not
+  (=
+   (a2
+    (ite 
+     (bvsle x0 x1)
+     v2
+     6)
+    )
+   (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))
+  )
+ )
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvsle5.smt2 b/test/regress/regress0/unconstrained/bvsle5.smt2
new file mode 100644
index 0000000..1aceacb
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvsle5.smt2
@@ -0,0 +1,21 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (bvsgt x1 (_ bv510 10)))
+(assert (not (bvsle x0 x1)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvslt.smt2 b/test/regress/regress0/unconstrained/bvslt.smt2
new file mode 100644
index 0000000..f983756
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvslt.smt2
@@ -0,0 +1,31 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert
+ (not
+  (=
+   (a2
+    (ite 
+     (bvslt x0 x1)
+     v2
+     6)
+    )
+   (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))
+  )
+ )
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvslt2.smt2 b/test/regress/regress0/unconstrained/bvslt2.smt2
new file mode 100644
index 0000000..e56500a
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvslt2.smt2
@@ -0,0 +1,32 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (= x0 (_ bv510 10)))
+(assert
+ (not
+  (=
+   (a2
+    (ite 
+     (bvslt x0 x1)
+     v2
+     6)
+    )
+   (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))
+  )
+ )
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvslt3.smt2 b/test/regress/regress0/unconstrained/bvslt3.smt2
new file mode 100644
index 0000000..a4af152
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvslt3.smt2
@@ -0,0 +1,21 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (bvsgt x0 (_ bv510 10)))
+(assert (bvslt x0 x1))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvslt4.smt2 b/test/regress/regress0/unconstrained/bvslt4.smt2
new file mode 100644
index 0000000..d702b6d
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvslt4.smt2
@@ -0,0 +1,32 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (= x1 (_ bv513 10)))
+(assert
+ (not
+  (=
+   (a2
+    (ite 
+     (bvslt x0 x1)
+     v2
+     6)
+    )
+   (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))
+  )
+ )
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvslt5.smt2 b/test/regress/regress0/unconstrained/bvslt5.smt2
new file mode 100644
index 0000000..f4b6a7a
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvslt5.smt2
@@ -0,0 +1,21 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (bvslt x1 (_ bv513 10)))
+(assert (bvslt x0 x1))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvule.smt2 b/test/regress/regress0/unconstrained/bvule.smt2
new file mode 100644
index 0000000..cbbb4cc
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvule.smt2
@@ -0,0 +1,31 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert
+ (not
+  (=
+   (a2
+    (ite 
+     (bvule x0 x1)
+     v2
+     6)
+    )
+   (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))
+  )
+ )
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvule2.smt2 b/test/regress/regress0/unconstrained/bvule2.smt2
new file mode 100644
index 0000000..0e6f591
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvule2.smt2
@@ -0,0 +1,32 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (= x0 (_ bv1 10)))
+(assert
+ (not
+  (=
+   (a2
+    (ite 
+     (bvule x0 x1)
+     v2
+     6)
+    )
+   (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))
+  )
+ )
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvule3.smt2 b/test/regress/regress0/unconstrained/bvule3.smt2
new file mode 100644
index 0000000..11e3a98
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvule3.smt2
@@ -0,0 +1,21 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (bvult x0 (_ bv1 10)))
+(assert (not (bvule x0 x1)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvule4.smt2 b/test/regress/regress0/unconstrained/bvule4.smt2
new file mode 100644
index 0000000..b8d978b
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvule4.smt2
@@ -0,0 +1,32 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (= x1 (_ bv1022 10)))
+(assert
+ (not
+  (=
+   (a2
+    (ite 
+     (bvule x0 x1)
+     v2
+     6)
+    )
+   (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))
+  )
+ )
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvule5.smt2 b/test/regress/regress0/unconstrained/bvule5.smt2
new file mode 100644
index 0000000..cd927d0
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvule5.smt2
@@ -0,0 +1,21 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (bvugt x1 (_ bv1022 10)))
+(assert (not (bvule x0 x1)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvult.smt2 b/test/regress/regress0/unconstrained/bvult.smt2
new file mode 100644
index 0000000..fb94994
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvult.smt2
@@ -0,0 +1,31 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert
+ (not
+  (=
+   (a2
+    (ite 
+     (bvult x0 x1)
+     v2
+     6)
+    )
+   (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))
+  )
+ )
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvult2.smt2 b/test/regress/regress0/unconstrained/bvult2.smt2
new file mode 100644
index 0000000..3fb4a0d
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvult2.smt2
@@ -0,0 +1,32 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (= x0 (_ bv1022 10)))
+(assert
+ (not
+  (=
+   (a2
+    (ite 
+     (bvult x0 x1)
+     v2
+     6)
+    )
+   (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))
+  )
+ )
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvult3.smt2 b/test/regress/regress0/unconstrained/bvult3.smt2
new file mode 100644
index 0000000..b11ab9d
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvult3.smt2
@@ -0,0 +1,21 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (bvugt x0 (_ bv1022 10)))
+(assert (bvult x0 x1))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvult4.smt2 b/test/regress/regress0/unconstrained/bvult4.smt2
new file mode 100644
index 0000000..8170ec2
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvult4.smt2
@@ -0,0 +1,32 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (= x1 (_ bv1 10)))
+(assert
+ (not
+  (=
+   (a2
+    (ite 
+     (bvult x0 x1)
+     v2
+     6)
+    )
+   (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))
+  )
+ )
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/bvult5.smt2 b/test/regress/regress0/unconstrained/bvult5.smt2
new file mode 100644
index 0000000..545bcbf
--- /dev/null
+++ b/test/regress/regress0/unconstrained/bvult5.smt2
@@ -0,0 +1,21 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (bvult x1 (_ bv1 10)))
+(assert (bvult x0 x1))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/geq.smt2 b/test/regress/regress0/unconstrained/geq.smt2
new file mode 100644
index 0000000..818bb55
--- /dev/null
+++ b/test/regress/regress0/unconstrained/geq.smt2
@@ -0,0 +1,13 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun v1 () Int)
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (not (= (a2 (ite (>= v1 5) v2 6)) (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/gt.smt2 b/test/regress/regress0/unconstrained/gt.smt2
new file mode 100644
index 0000000..76b119e
--- /dev/null
+++ b/test/regress/regress0/unconstrained/gt.smt2
@@ -0,0 +1,13 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun v1 () Int)
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (not (= (a2 (ite (> v1 5) v2 6)) (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/ite.smt2 b/test/regress/regress0/unconstrained/ite.smt2
new file mode 100644
index 0000000..4dc1cc2
--- /dev/null
+++ b/test/regress/regress0/unconstrained/ite.smt2
@@ -0,0 +1,9 @@
+(set-logic QF_AUFBV )
+(set-info :status sat)
+(declare-sort U 0)
+(declare-fun a () (Array U (_ BitVec 64) ) )
+(declare-fun i () U)
+(declare-fun p () Bool)
+(assert (= (_ bv0 64) (ite p (select a i) (_ bv1 64))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/leq.smt2 b/test/regress/regress0/unconstrained/leq.smt2
new file mode 100644
index 0000000..6c03fc2
--- /dev/null
+++ b/test/regress/regress0/unconstrained/leq.smt2
@@ -0,0 +1,13 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun v1 () Int)
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (not (= (a2 (ite (<= v1 5) v2 6)) (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/lt.smt2 b/test/regress/regress0/unconstrained/lt.smt2
new file mode 100644
index 0000000..637a640
--- /dev/null
+++ b/test/regress/regress0/unconstrained/lt.smt2
@@ -0,0 +1,13 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun v1 () Int)
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (not (= (a2 (ite (< v1 5) v2 6)) (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/mult1.smt2 b/test/regress/regress0/unconstrained/mult1.smt2
new file mode 100644
index 0000000..fdad322
--- /dev/null
+++ b/test/regress/regress0/unconstrained/mult1.smt2
@@ -0,0 +1,8 @@
+(set-logic QF_LIA)
+(set-info :status sat)
+
+(declare-fun x3 () Int)
+(assert (<= (* 1 x3) 0))
+
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/uf1.smt2 b/test/regress/regress0/unconstrained/uf1.smt2
new file mode 100644
index 0000000..0b2a95f
--- /dev/null
+++ b/test/regress/regress0/unconstrained/uf1.smt2
@@ -0,0 +1,12 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun v1 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (not (= (a2 (- v1)) (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/uf2.smt2 b/test/regress/regress0/unconstrained/uf2.smt2
new file mode 100644
index 0000000..0aa1617
--- /dev/null
+++ b/test/regress/regress0/unconstrained/uf2.smt2
@@ -0,0 +1,14 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-fun v1 () (_ BitVec 1))
+(declare-fun a2 ((_ BitVec 1)) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert (= (a2 (_ bv0 1)) v3))
+(assert (= (a2 (_ bv1 1)) v3))
+(assert (not (= (a2 v1) v3)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/unconstrained/xor.smt2 b/test/regress/regress0/unconstrained/xor.smt2
new file mode 100644
index 0000000..4089bb5
--- /dev/null
+++ b/test/regress/regress0/unconstrained/xor.smt2
@@ -0,0 +1,33 @@
+(set-logic QF_AUFBVLIA)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun x0 () (_ BitVec 10))
+(declare-fun x1 () (_ BitVec 10))
+(declare-fun x2 () (_ BitVec 10))
+(declare-fun x3 () (_ BitVec 10))
+(declare-fun x4 () (_ BitVec 10))
+(declare-fun x5 () (_ BitVec 10))
+(declare-fun x6 () (_ BitVec 10))
+(declare-fun x7 () (_ BitVec 10))
+(declare-fun v2 () Int)
+(declare-fun a2 (Int) (_ BitVec 1024))
+(declare-fun v3 () (_ BitVec 1024))
+(declare-fun v4 () (_ BitVec 1024))
+(declare-fun v5 () (_ BitVec 1024))
+(assert
+ (not
+  (=
+   (a2
+    (ite 
+     (= (xor (= (bvxor (bvxnor (bvadd (bvsub x0 ((_ extract 9 0) v3)) ((_ extract
+     9 0) v4)) ((_ extract 9 0) v5)) ((_ extract 19 10) v3)) ((_ extract 19 10)
+     v4)) (= v3 v4)) (= v4 v5))
+     v2
+     6)
+    )
+   (bvudiv (bvudiv v4 v5) (bvudiv (bvudiv v3 v4) (bvudiv v3 v5))))
+  )
+ )
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/wiki.01.cvc b/test/regress/regress0/wiki.01.cvc
new file mode 100644
index 0000000..fb38fab
--- /dev/null
+++ b/test/regress/regress0/wiki.01.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY a OR (b OR c) <=> (a OR b) OR c;
diff --git a/test/regress/regress0/wiki.02.cvc b/test/regress/regress0/wiki.02.cvc
new file mode 100644
index 0000000..93d555c
--- /dev/null
+++ b/test/regress/regress0/wiki.02.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY a AND (b AND c) <=> (a AND b) AND c;
diff --git a/test/regress/regress0/wiki.03.cvc b/test/regress/regress0/wiki.03.cvc
new file mode 100644
index 0000000..08b049c
--- /dev/null
+++ b/test/regress/regress0/wiki.03.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY a OR b <=> b OR a;
diff --git a/test/regress/regress0/wiki.04.cvc b/test/regress/regress0/wiki.04.cvc
new file mode 100644
index 0000000..b88de61
--- /dev/null
+++ b/test/regress/regress0/wiki.04.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY a AND b <=> b AND a;
diff --git a/test/regress/regress0/wiki.05.cvc b/test/regress/regress0/wiki.05.cvc
new file mode 100644
index 0000000..0fe647f
--- /dev/null
+++ b/test/regress/regress0/wiki.05.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY a OR (a AND b) <=> a;
diff --git a/test/regress/regress0/wiki.06.cvc b/test/regress/regress0/wiki.06.cvc
new file mode 100644
index 0000000..1d466a8
--- /dev/null
+++ b/test/regress/regress0/wiki.06.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY a AND (a OR b) <=> a;
diff --git a/test/regress/regress0/wiki.07.cvc b/test/regress/regress0/wiki.07.cvc
new file mode 100644
index 0000000..146d928
--- /dev/null
+++ b/test/regress/regress0/wiki.07.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY a OR (b AND c) <=> (a OR b) AND (a OR c);
diff --git a/test/regress/regress0/wiki.08.cvc b/test/regress/regress0/wiki.08.cvc
new file mode 100644
index 0000000..e9c7d3f
--- /dev/null
+++ b/test/regress/regress0/wiki.08.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY a AND (b OR c) <=> (a AND b) OR (a AND c);
diff --git a/test/regress/regress0/wiki.09.cvc b/test/regress/regress0/wiki.09.cvc
new file mode 100644
index 0000000..478be2d
--- /dev/null
+++ b/test/regress/regress0/wiki.09.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY a OR NOT a;
diff --git a/test/regress/regress0/wiki.10.cvc b/test/regress/regress0/wiki.10.cvc
new file mode 100644
index 0000000..226a3da
--- /dev/null
+++ b/test/regress/regress0/wiki.10.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY a AND NOT a <=> FALSE;
diff --git a/test/regress/regress0/wiki.11.cvc b/test/regress/regress0/wiki.11.cvc
new file mode 100644
index 0000000..d615fef
--- /dev/null
+++ b/test/regress/regress0/wiki.11.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY a OR a <=> a;
diff --git a/test/regress/regress0/wiki.12.cvc b/test/regress/regress0/wiki.12.cvc
new file mode 100644
index 0000000..209e512
--- /dev/null
+++ b/test/regress/regress0/wiki.12.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY a AND a <=> a;
diff --git a/test/regress/regress0/wiki.13.cvc b/test/regress/regress0/wiki.13.cvc
new file mode 100644
index 0000000..2cc69f0
--- /dev/null
+++ b/test/regress/regress0/wiki.13.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY a OR FALSE <=> a;
diff --git a/test/regress/regress0/wiki.14.cvc b/test/regress/regress0/wiki.14.cvc
new file mode 100644
index 0000000..5a6c162
--- /dev/null
+++ b/test/regress/regress0/wiki.14.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY a AND TRUE <=> a;
diff --git a/test/regress/regress0/wiki.15.cvc b/test/regress/regress0/wiki.15.cvc
new file mode 100644
index 0000000..6dc84f6
--- /dev/null
+++ b/test/regress/regress0/wiki.15.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY a OR TRUE <=> TRUE;
diff --git a/test/regress/regress0/wiki.16.cvc b/test/regress/regress0/wiki.16.cvc
new file mode 100644
index 0000000..6b2bf41
--- /dev/null
+++ b/test/regress/regress0/wiki.16.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY a AND FALSE <=> FALSE;
diff --git a/test/regress/regress0/wiki.17.cvc b/test/regress/regress0/wiki.17.cvc
new file mode 100644
index 0000000..7c6701a
--- /dev/null
+++ b/test/regress/regress0/wiki.17.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY NOT FALSE <=> TRUE;
diff --git a/test/regress/regress0/wiki.18.cvc b/test/regress/regress0/wiki.18.cvc
new file mode 100644
index 0000000..7c1b1b8
--- /dev/null
+++ b/test/regress/regress0/wiki.18.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY NOT TRUE <=> FALSE;
diff --git a/test/regress/regress0/wiki.19.cvc b/test/regress/regress0/wiki.19.cvc
new file mode 100644
index 0000000..d5812b5
--- /dev/null
+++ b/test/regress/regress0/wiki.19.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY NOT (a OR b) <=> NOT a AND NOT b;
diff --git a/test/regress/regress0/wiki.20.cvc b/test/regress/regress0/wiki.20.cvc
new file mode 100644
index 0000000..8d25706
--- /dev/null
+++ b/test/regress/regress0/wiki.20.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY NOT (a AND b) <=> NOT a OR NOT b;
diff --git a/test/regress/regress0/wiki.21.cvc b/test/regress/regress0/wiki.21.cvc
new file mode 100644
index 0000000..d65cbcf
--- /dev/null
+++ b/test/regress/regress0/wiki.21.cvc
@@ -0,0 +1,4 @@
+a, b, c : BOOLEAN;
+
+% EXPECT: valid
+QUERY NOT NOT a <=> a;
diff --git a/test/regress/regress1/Makefile.am b/test/regress/regress1/Makefile.am
new file mode 100644
index 0000000..c399a79
--- /dev/null
+++ b/test/regress/regress1/Makefile.am
@@ -0,0 +1,35 @@
+SUBDIRS = . bv aufbv auflia datatypes rewriterules lemmas decision fmf strings sets sygus sep
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	bug425.cvc \
+  bug519.smt2 \
+  bug521.smt2
+  
+EXTRA_DIST = $(TESTS)
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
diff --git a/test/regress/regress1/Makefile.in b/test/regress/regress1/Makefile.in
new file mode 100644
index 0000000..0cbe2c2
--- /dev/null
+++ b/test/regress/regress1/Makefile.in
@@ -0,0 +1,1182 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress1
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+SUBDIRS = . bv aufbv auflia datatypes rewriterules lemmas decision fmf strings sets sygus sep
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = bug425.cvc \
+  bug519.smt2 \
+  bug521.smt2
+
+EXTRA_DIST = $(TESTS)
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress1/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress1/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+bug425.cvc.log: bug425.cvc
+	@p='bug425.cvc'; \
+	b='bug425.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug519.smt2.log: bug519.smt2
+	@p='bug519.smt2'; \
+	b='bug519.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug521.smt2.log: bug521.smt2
+	@p='bug521.smt2'; \
+	b='bug521.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress1/aufbv/Makefile.am b/test/regress/regress1/aufbv/Makefile.am
new file mode 100644
index 0000000..4caeca8
--- /dev/null
+++ b/test/regress/regress1/aufbv/Makefile.am
@@ -0,0 +1,30 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	fuzz10.smt
+
+EXTRA_DIST = $(TESTS)
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
diff --git a/test/regress/regress1/aufbv/Makefile.in b/test/regress/regress1/aufbv/Makefile.in
new file mode 100644
index 0000000..5b89bc1
--- /dev/null
+++ b/test/regress/regress1/aufbv/Makefile.in
@@ -0,0 +1,986 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress1/aufbv
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	fuzz10.smt
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress1/aufbv/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress1/aufbv/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+fuzz10.smt.log: fuzz10.smt
+	@p='fuzz10.smt'; \
+	b='fuzz10.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress1/aufbv/fuzz10.smt b/test/regress/regress1/aufbv/fuzz10.smt
new file mode 100644
index 0000000..b838f80
--- /dev/null
+++ b/test/regress/regress1/aufbv/fuzz10.smt
@@ -0,0 +1,168 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status unsat
+:extrafuns ((v0 BitVec[11]))
+:extrafuns ((v1 BitVec[8]))
+:extrafuns ((a2 Array[15:1]))
+:extrafuns ((a3 Array[6:8]))
+:extrafuns ((a4 Array[11:10]))
+:formula
+(let (?e5 bv8[4])
+(let (?e6 bv4728[14])
+(let (?e7 (bvsdiv (sign_extend[4] ?e5) v1))
+(let (?e8 (bvcomp (zero_extend[3] ?e7) v0))
+(let (?e9 (bvsrem ?e6 ?e6))
+(let (?e10 (store a3 (extract[12:7] ?e9) v1))
+(let (?e11 (store a4 (sign_extend[10] ?e8) (extract[9:0] ?e9)))
+(let (?e12 (select a2 (zero_extend[7] ?e7)))
+(let (?e13 (store ?e10 (extract[6:1] ?e7) v1))
+(let (?e14 (select ?e13 (zero_extend[2] ?e5)))
+(let (?e15 (bvudiv (sign_extend[13] ?e12) ?e9))
+(let (?e16 (bvsdiv (zero_extend[10] ?e12) v0))
+(let (?e17 (ite (bvsle ?e15 (zero_extend[13] ?e12)) bv1[1] bv0[1]))
+(let (?e18 (ite (bvuge (sign_extend[6] v1) ?e9) bv1[1] bv0[1]))
+(let (?e19 (ite (bvugt ?e16 (zero_extend[3] ?e14)) bv1[1] bv0[1]))
+(let (?e20 (bvneg ?e6))
+(let (?e21 (bvlshr (zero_extend[10] ?e5) ?e9))
+(let (?e22 (bvshl ?e20 (zero_extend[13] ?e12)))
+(let (?e23 (ite (= bv1[1] (extract[0:0] ?e12)) ?e21 ?e20))
+(let (?e24 (bvcomp ?e7 v1))
+(let (?e25 (bvsmod (zero_extend[3] ?e16) ?e15))
+(let (?e26 (bvsub ?e7 (sign_extend[7] ?e17)))
+(let (?e27 (bvnor (zero_extend[13] ?e8) ?e23))
+(flet ($e28 (bvsge (zero_extend[13] ?e18) ?e25))
+(flet ($e29 (bvugt ?e24 ?e17))
+(flet ($e30 (bvsle (sign_extend[13] ?e8) ?e21))
+(flet ($e31 (bvuge ?e20 (sign_extend[13] ?e19)))
+(flet ($e32 (bvugt (sign_extend[13] ?e8) ?e25))
+(flet ($e33 (distinct (sign_extend[13] ?e12) ?e27))
+(flet ($e34 (bvsgt (sign_extend[6] v1) ?e25))
+(flet ($e35 (bvult (zero_extend[7] ?e24) ?e7))
+(flet ($e36 (bvugt ?e20 ?e27))
+(flet ($e37 (= (zero_extend[7] ?e24) ?e26))
+(flet ($e38 (bvugt ?e25 (zero_extend[13] ?e24)))
+(flet ($e39 (bvsgt v0 (sign_extend[10] ?e18)))
+(flet ($e40 (bvult ?e8 ?e8))
+(flet ($e41 (bvsgt ?e27 ?e25))
+(flet ($e42 (bvslt ?e9 ?e6))
+(flet ($e43 (= ?e22 ?e23))
+(flet ($e44 (bvult (zero_extend[10] ?e19) v0))
+(flet ($e45 (bvsgt ?e24 ?e24))
+(flet ($e46 (bvsgt ?e26 (zero_extend[7] ?e24)))
+(flet ($e47 (bvule (sign_extend[13] ?e12) ?e9))
+(flet ($e48 (= ?e27 ?e21))
+(flet ($e49 (bvult ?e6 (sign_extend[3] v0)))
+(flet ($e50 (bvsle ?e23 (sign_extend[13] ?e17)))
+(flet ($e51 (bvugt ?e8 ?e12))
+(flet ($e52 (bvugt ?e22 (zero_extend[3] ?e16)))
+(flet ($e53 (bvsle ?e23 (sign_extend[6] ?e7)))
+(flet ($e54 (distinct (zero_extend[7] ?e12) ?e26))
+(flet ($e55 (bvult ?e23 (sign_extend[13] ?e19)))
+(flet ($e56 (= ?e27 ?e20))
+(flet ($e57 (bvule ?e15 (zero_extend[6] ?e7)))
+(flet ($e58 (bvsle (sign_extend[13] ?e18) ?e22))
+(flet ($e59 (bvuge ?e23 ?e25))
+(flet ($e60 (bvslt ?e20 (zero_extend[13] ?e17)))
+(flet ($e61 (bvsge (sign_extend[6] ?e14) ?e23))
+(flet ($e62 (bvugt ?e22 (sign_extend[13] ?e8)))
+(flet ($e63 (bvugt (zero_extend[7] ?e24) ?e26))
+(flet ($e64 (bvugt ?e9 (sign_extend[13] ?e18)))
+(flet ($e65 (bvsge ?e27 (zero_extend[6] v1)))
+(flet ($e66 (= (zero_extend[13] ?e18) ?e9))
+(flet ($e67 (bvsgt ?e15 (sign_extend[13] ?e8)))
+(flet ($e68 (distinct v0 (sign_extend[10] ?e17)))
+(flet ($e69 (bvugt ?e23 (sign_extend[3] v0)))
+(flet ($e70 (bvslt (zero_extend[3] ?e14) ?e16))
+(flet ($e71 (bvslt ?e27 (zero_extend[6] ?e7)))
+(flet ($e72 (bvsle ?e26 (zero_extend[7] ?e18)))
+(flet ($e73 (= ?e27 (zero_extend[3] ?e16)))
+(flet ($e74 (bvuge (zero_extend[3] v0) ?e15))
+(flet ($e75 (distinct (sign_extend[6] v1) ?e6))
+(flet ($e76 (bvsgt ?e17 ?e8))
+(flet ($e77 (bvsle ?e27 (zero_extend[6] ?e26)))
+(flet ($e78 (distinct ?e20 ?e9))
+(flet ($e79 (bvult (sign_extend[6] v1) ?e20))
+(flet ($e80 (bvule ?e17 ?e8))
+(flet ($e81 (bvult (sign_extend[13] ?e24) ?e20))
+(flet ($e82 (bvslt (zero_extend[6] v1) ?e25))
+(flet ($e83 (bvslt ?e19 ?e8))
+(flet ($e84 (bvsle ?e7 (sign_extend[7] ?e19)))
+(flet ($e85 (= ?e20 (sign_extend[6] ?e14)))
+(flet ($e86 (bvsge ?e16 (sign_extend[10] ?e24)))
+(flet ($e87 (bvsle ?e21 ?e15))
+(flet ($e88 (= ?e12 ?e12))
+(flet ($e89 (bvult (zero_extend[13] ?e19) ?e22))
+(flet ($e90 (= ?e5 ?e5))
+(flet ($e91 (iff $e68 $e86))
+(flet ($e92 (not $e49))
+(flet ($e93 (iff $e30 $e51))
+(flet ($e94 (not $e84))
+(flet ($e95 (not $e69))
+(flet ($e96 (if_then_else $e81 $e92 $e58))
+(flet ($e97 (or $e31 $e85))
+(flet ($e98 (and $e48 $e97))
+(flet ($e99 (implies $e70 $e70))
+(flet ($e100 (xor $e91 $e60))
+(flet ($e101 (or $e57 $e93))
+(flet ($e102 (xor $e63 $e76))
+(flet ($e103 (xor $e46 $e59))
+(flet ($e104 (not $e36))
+(flet ($e105 (or $e83 $e53))
+(flet ($e106 (or $e33 $e100))
+(flet ($e107 (if_then_else $e71 $e73 $e77))
+(flet ($e108 (xor $e47 $e45))
+(flet ($e109 (if_then_else $e90 $e64 $e74))
+(flet ($e110 (implies $e78 $e87))
+(flet ($e111 (iff $e28 $e80))
+(flet ($e112 (and $e101 $e103))
+(flet ($e113 (or $e102 $e40))
+(flet ($e114 (iff $e106 $e105))
+(flet ($e115 (if_then_else $e44 $e75 $e107))
+(flet ($e116 (not $e109))
+(flet ($e117 (if_then_else $e82 $e72 $e116))
+(flet ($e118 (xor $e65 $e108))
+(flet ($e119 (implies $e61 $e39))
+(flet ($e120 (not $e111))
+(flet ($e121 (if_then_else $e42 $e79 $e34))
+(flet ($e122 (iff $e96 $e41))
+(flet ($e123 (or $e99 $e55))
+(flet ($e124 (xor $e35 $e38))
+(flet ($e125 (iff $e110 $e50))
+(flet ($e126 (iff $e115 $e104))
+(flet ($e127 (or $e95 $e117))
+(flet ($e128 (or $e32 $e88))
+(flet ($e129 (if_then_else $e37 $e43 $e94))
+(flet ($e130 (and $e66 $e120))
+(flet ($e131 (implies $e118 $e119))
+(flet ($e132 (xor $e114 $e124))
+(flet ($e133 (if_then_else $e89 $e125 $e113))
+(flet ($e134 (implies $e126 $e122))
+(flet ($e135 (or $e130 $e127))
+(flet ($e136 (not $e98))
+(flet ($e137 (if_then_else $e135 $e132 $e136))
+(flet ($e138 (implies $e123 $e129))
+(flet ($e139 (or $e137 $e121))
+(flet ($e140 (and $e67 $e54))
+(flet ($e141 (not $e112))
+(flet ($e142 (and $e134 $e62))
+(flet ($e143 (if_then_else $e140 $e141 $e128))
+(flet ($e144 (iff $e138 $e131))
+(flet ($e145 (or $e143 $e133))
+(flet ($e146 (or $e139 $e142))
+(flet ($e147 (if_then_else $e145 $e146 $e144))
+(flet ($e148 (not $e52))
+(flet ($e149 (if_then_else $e147 $e29 $e148))
+(flet ($e150 (and $e149 $e149))
+(flet ($e151 (and $e56 $e150))
+(flet ($e152 (and $e151 (not (= ?e9 bv0[14]))))
+(flet ($e153 (and $e152 (not (= v0 bv0[11]))))
+(flet ($e154 (and $e153 (not (= v0 (bvnot bv0[11])))))
+(flet ($e155 (and $e154 (not (= v1 bv0[8]))))
+(flet ($e156 (and $e155 (not (= v1 (bvnot bv0[8])))))
+(flet ($e157 (and $e156 (not (= ?e15 bv0[14]))))
+(flet ($e158 (and $e157 (not (= ?e15 (bvnot bv0[14])))))
+(flet ($e159 (and $e158 (not (= ?e6 bv0[14]))))
+(flet ($e160 (and $e159 (not (= ?e6 (bvnot bv0[14])))))
+$e160
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress1/auflia/Makefile.am b/test/regress/regress1/auflia/Makefile.am
new file mode 100644
index 0000000..a0824e5
--- /dev/null
+++ b/test/regress/regress1/auflia/Makefile.am
@@ -0,0 +1,30 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	bug330.smt2
+
+EXTRA_DIST = $(TESTS)
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
diff --git a/test/regress/regress1/auflia/Makefile.in b/test/regress/regress1/auflia/Makefile.in
new file mode 100644
index 0000000..5276ae4
--- /dev/null
+++ b/test/regress/regress1/auflia/Makefile.in
@@ -0,0 +1,986 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress1/auflia
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	bug330.smt2
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress1/auflia/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress1/auflia/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+bug330.smt2.log: bug330.smt2
+	@p='bug330.smt2'; \
+	b='bug330.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress1/auflia/bug330.smt2 b/test/regress/regress1/auflia/bug330.smt2
new file mode 100644
index 0000000..d05a8b2
--- /dev/null
+++ b/test/regress/regress1/auflia/bug330.smt2
@@ -0,0 +1,44 @@
+(set-logic QF_AUFLIA)
+(set-info :source |
+Translated from old SVC processor verification benchmarks.  Contact Clark
+Barrett at barrett at cs.nyu.edu for more information.
+
+This benchmark was automatically translated into SMT-LIB format from
+CVC format using CVC Lite
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(set-info :difficulty | 0 |)
+(declare-fun BUBBLE_EX_INIT () Bool)
+(declare-fun OPCODE_EX_INIT () Int)
+(declare-fun BUBBLE_ID_INIT () Bool)
+(declare-fun RF1_OF (Int) Int)
+(declare-fun INST_ID_INIT () Int)
+(declare-fun DEST_EX_INIT () Int)
+(declare-fun RF2_OF (Int) Int)
+(declare-fun OPCODE_OF (Int) Int)
+(declare-fun STALL_INIT () Bool)
+(declare-fun B_INIT () Int)
+(declare-fun plus (Int Int) Int)
+(declare-fun A_INIT () Int)
+(declare-fun SHORT_IMMED_EX_INIT () Int)
+(declare-fun ALU (Int Int Int) Int)
+(declare-fun ALU_OP_OF (Int) Int)
+(declare-fun DEST_MEM_INIT () Int)
+(declare-fun LOAD_FLAG_INIT () Bool)
+(declare-fun DMEM_INIT () (Array Int Int))
+(declare-fun MAR_INIT () Int)
+(declare-fun RESULT_MEM_INIT () Int)
+(declare-fun DEST_WB_INIT () Int)
+(declare-fun REGFILE_INIT () (Array Int Int))
+(declare-fun RESULT_WB_INIT () Int)
+(declare-fun IMEM_INIT () (Array Int Int))
+(declare-fun PC_INIT () Int)
+(declare-fun RF3_OF (Int) Int)
+(declare-fun LONG_IMMED_OF (Int) Int)
+(declare-fun SHORT_IMMED_OF (Int) Int)
+(declare-fun STORE_FLAG_INIT () Bool)
+(assert (let ((?v_53 (ite BUBBLE_EX_INIT false true)) (?v_7 (= OPCODE_EX_INIT 10)) (?v_2 (ite BUBBLE_ID_INIT false true)) (?v_5 (RF1_OF INST_ID_INIT))) (let ((?v_6 (= ?v_5 DEST_EX_INIT)) (?v_11 (RF2_OF INST_ID_INIT))) (let ((?v_46 (= ?v_11 DEST_EX_INIT))) (let ((?v_1 (ite ?v_53 (ite ?v_7 (ite ?v_2 (ite ?v_6 true ?v_46) false) false) false)) (?v_0 (OPCODE_OF INST_ID_INIT))) (let ((?v_3 (= ?v_0 11)) (?v_4 (= ?v_0 12)) (?v_128 (= ?v_5 0)) (?v_69 (= OPCODE_EX_INIT 13))) (let ((?v_8 (ite ?v_7 [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress1/bug425.cvc b/test/regress/regress1/bug425.cvc
new file mode 100644
index 0000000..5b6464c
--- /dev/null
+++ b/test/regress/regress1/bug425.cvc
@@ -0,0 +1,4 @@
+% EXPECT: sat
+var_92, var_96, var_98, var_102, var_106, var_111, var_137, var_141, var_143, var_147, var_151, var_156, var_182, var_186, var_188, var_192, var_196, var_201, var_227, var_231, var_233, var_237, var_241, var_246, var_272, var_276, var_278, var_282, var_286, var_291, var_317, var_321, var_323, var_327, var_331, var_336, var_362, var_366, var_368, var_372, var_376, var_381, var_407, var_411, var_413, var_417, var_421, var_426, var_452, var_456, var_458, var_462, var_466, var_471, var_497,  [...]
+ASSERT LET _let_0 = ((NOT var_151) OR (NOT var_1546)), _let_1 = ((NOT var_147) OR (NOT var_1542)), _let_2 = ((NOT var_1546) OR (NOT var_151)), _let_3 = ((NOT var_1542) OR (NOT var_147)), _let_4 = ((NOT var_196) OR (NOT var_1726)), _let_5 = ((NOT var_192) OR (NOT var_1722)), _let_6 = ((NOT var_1726) OR (NOT var_196)), _let_7 = ((NOT var_1722) OR (NOT var_192)), _let_8 = ((NOT var_286) OR (NOT var_1906)), _let_9 = ((NOT var_282) OR (NOT var_1902)), _let_10 = ((NOT var_1906) OR (NOT var_286 [...]
+CHECKSAT;
diff --git a/test/regress/regress1/bug519.smt2 b/test/regress/regress1/bug519.smt2
new file mode 100644
index 0000000..72ec634
--- /dev/null
+++ b/test/regress/regress1/bug519.smt2
@@ -0,0 +1,75 @@
+; COMMAND-LINE: -mi
+; EXPECT: sat
+; EXPECT: unsat
+
+(set-logic ALL_SUPPORTED)
+
+; must make parts 1 through 6 with different deadlines
+
+; part 1 must be available for part 2
+; parts 3 and 4 must be available for part 5
+; all parts must be available for part 6
+
+; start/complete is the timestep when a part is started/finished
+(declare-fun start (Int) Int)
+(declare-fun complete (Int) Int)
+
+(define-fun before ((i Int) (j Int)) Bool (< (complete i) (start j)))
+
+(assert (before 1 2))
+(assert (before 3 5))
+(assert (before 4 5))
+(assert (before 1 6))
+(assert (before 2 6))
+(assert (before 3 6))
+(assert (before 4 6))
+(assert (before 5 6))
+
+; part 1 takes 2 units of time
+; part 2 takes 3
+; part 3 takes 3
+; part 4 takes 1
+; part 5 takes 2
+; part 6 takes 1
+
+(define-fun requires ((i Int) (j Int)) Bool (= (complete i) (+ (start i) j)))
+
+(assert (requires 1 2))
+(assert (requires 2 3))
+(assert (requires 3 3))
+(assert (requires 4 1))
+(assert (requires 5 2))
+(assert (requires 6 1))
+
+(assert (>= (start 1) 0))
+(assert (>= (start 2) 0))
+(assert (>= (start 3) 0))
+(assert (>= (start 4) 0))
+(assert (>= (start 5) 0))
+(assert (>= (start 6) 0))
+
+(define-fun cost () Int (complete 6))
+
+(define-fun parallel ((t Int)) Int
+            (+ (ite (<= (start 1) t (complete 1)) 1 0)
+               (ite (<= (start 2) t (complete 2)) 1 0)
+               (ite (<= (start 3) t (complete 3)) 1 0)
+               (ite (<= (start 4) t (complete 4)) 1 0)
+               (ite (<= (start 5) t (complete 5)) 1 0)
+               (ite (<= (start 6) t (complete 6)) 1 0)))
+
+(declare-fun cost2 () Int)
+(assert (= cost2 cost))
+
+(declare-fun max-parallel () Int)
+(assert (forall ((t Int)) (=> (<= 0 t cost2) (>= max-parallel (parallel t)))))
+
+(check-sat)
+;(get-model)
+;(get-value (cost2))
+;(get-value ((parallel 1)))
+;(get-value ((=> (<= 0 1 cost2) (>= max-parallel (parallel 1)))))
+
+(assert (< cost 8))
+
+(check-sat)
diff --git a/test/regress/regress1/bug521.smt2 b/test/regress/regress1/bug521.smt2
new file mode 100644
index 0000000..8f840a1
--- /dev/null
+++ b/test/regress/regress1/bug521.smt2
@@ -0,0 +1,323 @@
+;(set-option :produce-unsat-cores true)
+(set-option :incremental true)
+(set-option :print-success false)
+(set-info :smt-lib-version 2.0)
+(set-info :status sat)
+(set-option :produce-models true)
+(set-logic ALL_SUPPORTED)
+; done setting options
+
+; Boogie universal background predicate
+; Copyright (c) 2004-2010, Microsoft Corp.
+(set-info :category "industrial")
+(declare-sort |T at U| 0)
+(declare-sort |T at T| 0)
+(declare-fun real_pow (Real Real) Real)
+(declare-fun UOrdering2 (|T at U| |T at U|) Bool)
+(declare-fun UOrdering3 (|T at T| |T at U| |T at U|) Bool)
+
+(declare-fun group_size_y () (_ BitVec 32))
+(declare-fun group_size_z () (_ BitVec 32))
+(declare-fun num_groups_y () (_ BitVec 32))
+(declare-fun num_groups_z () (_ BitVec 32))
+(declare-fun group_size_x () (_ BitVec 32))
+(declare-fun num_groups_x () (_ BitVec 32))
+(declare-fun ControlFlow (Int Int) Int)
+(declare-fun %lbl%+1458 () Bool)
+(declare-fun %lbl%@3203 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$p$1 at 2 () Bool)
+(declare-fun _WRITE_SOURCE_$$p$1 at 2 () (_ BitVec 32))
+(declare-fun %lbl%@3213 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$p$1 () Bool)
+(declare-fun _READ_SOURCE_$$p$1 () (_ BitVec 32))
+(declare-fun %lbl%@3225 () Bool)
+(declare-fun %lbl%@3240 () Bool)
+(declare-fun %lbl%+1440 () Bool)
+(declare-fun $mv_state (Int Int) Bool)
+(declare-fun $mv_state_const () Int)
+(declare-fun call465formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun group_id_x$2 () (_ BitVec 32))
+(declare-fun local_id_x$2 () (_ BitVec 32))
+(declare-fun call465formal at _value$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@3060 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$p$1 at 1 () Bool)
+(declare-fun _WRITE_OFFSET_$$p$1 at 1 () (_ BitVec 32))
+(declare-fun _WRITE_VALUE_$$p$1 at 1 () (_ BitVec 32))
+(declare-fun %lbl%@3078 () Bool)
+(declare-fun _READ_OFFSET_$$p$1 () (_ BitVec 32))
+(declare-fun _READ_VALUE_$$p$1 () (_ BitVec 32))
+(declare-fun %lbl%@3099 () Bool)
+(declare-fun _WRITE_SOURCE_$$p$1 at 1 () (_ BitVec 32))
+(declare-fun %lbl%@3109 () Bool)
+(declare-fun %lbl%@3121 () Bool)
+(declare-fun %lbl%@3136 () Bool)
+(declare-fun %lbl%+1434 () Bool)
+(declare-fun inline$_LOG_WRITE_$$p$1$track at 1 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$p$1 at 0 () Bool)
+(declare-fun inline$_LOG_WRITE_$$p$1$_offset$1 at 0 () (_ BitVec 32))
+(declare-fun _WRITE_OFFSET_$$p$1 at 0 () (_ BitVec 32))
+(declare-fun inline$_LOG_WRITE_$$p$1$_value$1 at 0 () (_ BitVec 32))
+(declare-fun _WRITE_VALUE_$$p$1 at 0 () (_ BitVec 32))
+(declare-fun _WRITE_SOURCE_$$p$1 at 0 () (_ BitVec 32))
+(declare-fun %lbl%+1432 () Bool)
+(declare-fun group_id_x$1 () (_ BitVec 32))
+(declare-fun local_id_x$1 () (_ BitVec 32))
+(declare-fun %lbl%+1328 () Bool)
+(declare-fun group_id_y$1 () (_ BitVec 32))
+(declare-fun group_id_y$2 () (_ BitVec 32))
+(declare-fun group_id_z$1 () (_ BitVec 32))
+(declare-fun group_id_z$2 () (_ BitVec 32))
+(declare-fun %lbl%+1330 () Bool)
+(declare-fun %lbl%+1324 () Bool)
+(declare-fun %lbl%@2798 () Bool)
+(declare-fun %lbl%+1334 () Bool)
+(declare-fun call397formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun call397formal at _value$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@2667 () Bool)
+(declare-fun %lbl%@2685 () Bool)
+(declare-fun %lbl%@2706 () Bool)
+(declare-fun %lbl%@2716 () Bool)
+(declare-fun %lbl%@2728 () Bool)
+(declare-fun %lbl%@2743 () Bool)
+(declare-fun %lbl%+1189 () Bool)
+(declare-fun inline$_LOG_WRITE_$$p$0$track at 1 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$p$1 () Bool)
+(declare-fun inline$_LOG_WRITE_$$p$0$_offset$1 at 0 () (_ BitVec 32))
+(declare-fun _WRITE_OFFSET_$$p$1 () (_ BitVec 32))
+(declare-fun inline$_LOG_WRITE_$$p$0$_value$1 at 0 () (_ BitVec 32))
+(declare-fun _WRITE_VALUE_$$p$1 () (_ BitVec 32))
+(declare-fun _WRITE_SOURCE_$$p$1 () (_ BitVec 32))
+(declare-fun %lbl%+1187 () Bool)
+(declare-fun %lbl%+1462 () Bool)
+(declare-fun local_id_y$1 () (_ BitVec 32))
+(declare-fun local_id_y$2 () (_ BitVec 32))
+(declare-fun local_id_z$1 () (_ BitVec 32))
+(declare-fun local_id_z$2 () (_ BitVec 32))
+(assert (not (= (ite (= group_size_y #x00000001) #b1 #b0) #b0)))
+(assert (not (= (ite (= group_size_z #x00000001) #b1 #b0) #b0)))
+(assert (not (= (ite (= num_groups_y #x00000001) #b1 #b0) #b0)))
+(assert (not (= (ite (= num_groups_z #x00000001) #b1 #b0) #b0)))
+(assert (not (= (ite (= group_size_x #x00000400) #b1 #b0) #b0)))
+(assert (not (= (ite (= num_groups_x #x00000400) #b1 #b0) #b0)))
+(define-fun $foo () Bool (=> (= (ControlFlow 0 0) 1462) (let ((GeneratedUnifiedExit_correct (=> (and %lbl%+1458 true) (and
+(or %lbl%@3203 (=> (= (ControlFlow 0 1458) (- 0 3203)) (=> (not _WRITE_HAS_OCCURRED_$$p$1 at 2) (= _WRITE_SOURCE_$$p$1 at 2 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$p$1 at 2) (= _WRITE_SOURCE_$$p$1 at 2 #x00000000)) (and
+(or %lbl%@3213 (=> (= (ControlFlow 0 1458) (- 0 3213)) (=> (not _READ_HAS_OCCURRED_$$p$1) (= _READ_SOURCE_$$p$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$p$1) (= _READ_SOURCE_$$p$1 #x00000000)) (and
+(or %lbl%@3225 (=> (= (ControlFlow 0 1458) (- 0 3225)) (=> _WRITE_HAS_OCCURRED_$$p$1 at 2 (or
+(= _WRITE_SOURCE_$$p$1 at 2 #x00000001)
+(= _WRITE_SOURCE_$$p$1 at 2 #x00000002)))))
+(=> (=> _WRITE_HAS_OCCURRED_$$p$1 at 2 (or
+(= _WRITE_SOURCE_$$p$1 at 2 #x00000001)
+(= _WRITE_SOURCE_$$p$1 at 2 #x00000002))) (and
+(or %lbl%@3240 (=> (= (ControlFlow 0 1458) (- 0 3240)) (=> _READ_HAS_OCCURRED_$$p$1 false)))
+(=> (=> _READ_HAS_OCCURRED_$$p$1 false) true)))))))))))
+(let (($0$3_correct (=> (and %lbl%+1440 true) (=> (and
+($mv_state $mv_state_const 1)
+true
+(= call465formal at _offset$2 at 0 (bvadd (bvadd (bvmul group_size_x group_id_x$2) local_id_x$2) #x00000001))
+(= call465formal at _value$2 at 0 (bvadd (bvmul group_size_x group_id_x$2) local_id_x$2))) (and
+(or %lbl%@3060 (=> (= (ControlFlow 0 1440) (- 0 3060)) (not (and
+true
+_WRITE_HAS_OCCURRED_$$p$1 at 1
+(= _WRITE_OFFSET_$$p$1 at 1 call465formal at _offset$2 at 0)
+(not (= _WRITE_VALUE_$$p$1 at 1 call465formal at _value$2 at 0))))))
+(=> (not (and
+true
+_WRITE_HAS_OCCURRED_$$p$1 at 1
+(= _WRITE_OFFSET_$$p$1 at 1 call465formal at _offset$2 at 0)
+(not (= _WRITE_VALUE_$$p$1 at 1 call465formal at _value$2 at 0)))) (and
+(or %lbl%@3078 (=> (= (ControlFlow 0 1440) (- 0 3078)) (not (and
+true
+_READ_HAS_OCCURRED_$$p$1
+(= _READ_OFFSET_$$p$1 call465formal at _offset$2 at 0)
+(not (= _READ_VALUE_$$p$1 call465formal at _value$2 at 0))))))
+(=> (not (and
+true
+_READ_HAS_OCCURRED_$$p$1
+(= _READ_OFFSET_$$p$1 call465formal at _offset$2 at 0)
+(not (= _READ_VALUE_$$p$1 call465formal at _value$2 at 0)))) (and
+(or %lbl%@3099 (=> (= (ControlFlow 0 1440) (- 0 3099)) (=> (not _WRITE_HAS_OCCURRED_$$p$1 at 1) (= _WRITE_SOURCE_$$p$1 at 1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$p$1 at 1) (= _WRITE_SOURCE_$$p$1 at 1 #x00000000)) (and
+(or %lbl%@3109 (=> (= (ControlFlow 0 1440) (- 0 3109)) (=> (not _READ_HAS_OCCURRED_$$p$1) (= _READ_SOURCE_$$p$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$p$1) (= _READ_SOURCE_$$p$1 #x00000000)) (and
+(or %lbl%@3121 (=> (= (ControlFlow 0 1440) (- 0 3121)) (=> _WRITE_HAS_OCCURRED_$$p$1 at 1 (or
+(= _WRITE_SOURCE_$$p$1 at 1 #x00000001)
+(= _WRITE_SOURCE_$$p$1 at 1 #x00000002)))))
+(=> (=> _WRITE_HAS_OCCURRED_$$p$1 at 1 (or
+(= _WRITE_SOURCE_$$p$1 at 1 #x00000001)
+(= _WRITE_SOURCE_$$p$1 at 1 #x00000002))) (and
+(or %lbl%@3136 (=> (= (ControlFlow 0 1440) (- 0 3136)) (=> _READ_HAS_OCCURRED_$$p$1 false)))
+(=> (=> _READ_HAS_OCCURRED_$$p$1 false) (=> (=> (not _WRITE_HAS_OCCURRED_$$p$1 at 1) (= _WRITE_SOURCE_$$p$1 at 1 #x00000000)) (=> (and
+(=> (not _READ_HAS_OCCURRED_$$p$1) (= _READ_SOURCE_$$p$1 #x00000000))
+(=> _WRITE_HAS_OCCURRED_$$p$1 at 1 (or
+(= _WRITE_SOURCE_$$p$1 at 1 #x00000001)
+(= _WRITE_SOURCE_$$p$1 at 1 #x00000002)))) (=> (and
+(=> _READ_HAS_OCCURRED_$$p$1 false)
+(= _WRITE_HAS_OCCURRED_$$p$1 at 2 _WRITE_HAS_OCCURRED_$$p$1 at 1)
+(= _WRITE_SOURCE_$$p$1 at 2 _WRITE_SOURCE_$$p$1 at 1)
+(= (ControlFlow 0 1440) 1458)) GeneratedUnifiedExit_correct)))))))))))))))))))
+(let ((inline$_LOG_WRITE_$$p$1$_LOG_WRITE_correct (=> (and %lbl%+1434 true) (=> (= _WRITE_HAS_OCCURRED_$$p$1 at 1 (ite (and
+true
+inline$_LOG_WRITE_$$p$1$track at 1) true _WRITE_HAS_OCCURRED_$$p$1 at 0)) (=> (and
+(= _WRITE_OFFSET_$$p$1 at 1 (ite (and
+true
+inline$_LOG_WRITE_$$p$1$track at 1) inline$_LOG_WRITE_$$p$1$_offset$1 at 0 _WRITE_OFFSET_$$p$1 at 0))
+(= _WRITE_VALUE_$$p$1 at 1 (ite (and
+true
+inline$_LOG_WRITE_$$p$1$track at 1) inline$_LOG_WRITE_$$p$1$_value$1 at 0 _WRITE_VALUE_$$p$1 at 0))
+(= _WRITE_SOURCE_$$p$1 at 1 (ite (and
+true
+inline$_LOG_WRITE_$$p$1$track at 1) #x00000002 _WRITE_SOURCE_$$p$1 at 0))
+(= (ControlFlow 0 1434) 1440)) $0$3_correct)))))
+(let ((inline$_LOG_WRITE_$$p$1$Entry_correct (=> (and %lbl%+1432 true) (=> (= inline$_LOG_WRITE_$$p$1$_offset$1 at 0 (bvadd (bvadd (bvmul group_size_x group_id_x$1) local_id_x$1) #x00000001)) (=> (and
+(= inline$_LOG_WRITE_$$p$1$_value$1 at 0 (bvadd (bvmul group_size_x group_id_x$1) local_id_x$1))
+(= (ControlFlow 0 1432) 1434)) inline$_LOG_WRITE_$$p$1$_LOG_WRITE_correct)))))
+(let ((inline$$bugle_barrier$0$anon1_Else_correct (=> (and %lbl%+1328 true) (=> (=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (=> (= #b1 #b1) (not _READ_HAS_OCCURRED_$$p$1))) (=> (and
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (=> (= #b1 #b1) (not _WRITE_HAS_OCCURRED_$$p$1 at 0)))
+(= (ControlFlow 0 1328) 1432)) inline$_LOG_WRITE_$$p$1$Entry_correct)))))
+(let ((inline$$bugle_barrier$0$anon1_Then_correct (=> (and %lbl%+1330 true) true)))
+(let ((inline$$bugle_barrier$0$Entry_correct (=> (and %lbl%+1324 true) (and
+(or %lbl%@2798 (=> (= (ControlFlow 0 1324) (- 0 2798)) (=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (= true true))))
+(=> (=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (= true true)) (and
+(=> (= (ControlFlow 0 1324) 1330) inline$$bugle_barrier$0$anon1_Then_correct)
+(=> (= (ControlFlow 0 1324) 1328) inline$$bugle_barrier$0$anon1_Else_correct)))))))
+(let (($0$1_correct (=> (and %lbl%+1334 true) (=> (and
+($mv_state $mv_state_const 0)
+true
+(= call397formal at _offset$2 at 0 (bvadd (bvmul group_size_x group_id_x$2) local_id_x$2))
+(= call397formal at _value$2 at 0 (bvadd (bvmul group_size_x group_id_x$2) local_id_x$2))) (and
+(or %lbl%@2667 (=> (= (ControlFlow 0 1334) (- 0 2667)) (not (and
+true
+_WRITE_HAS_OCCURRED_$$p$1 at 0
+(= _WRITE_OFFSET_$$p$1 at 0 call397formal at _offset$2 at 0)
+(not (= _WRITE_VALUE_$$p$1 at 0 call397formal at _value$2 at 0))))))
+(=> (not (and
+true
+_WRITE_HAS_OCCURRED_$$p$1 at 0
+(= _WRITE_OFFSET_$$p$1 at 0 call397formal at _offset$2 at 0)
+(not (= _WRITE_VALUE_$$p$1 at 0 call397formal at _value$2 at 0)))) (and
+(or %lbl%@2685 (=> (= (ControlFlow 0 1334) (- 0 2685)) (not (and
+true
+_READ_HAS_OCCURRED_$$p$1
+(= _READ_OFFSET_$$p$1 call397formal at _offset$2 at 0)
+(not (= _READ_VALUE_$$p$1 call397formal at _value$2 at 0))))))
+(=> (not (and
+true
+_READ_HAS_OCCURRED_$$p$1
+(= _READ_OFFSET_$$p$1 call397formal at _offset$2 at 0)
+(not (= _READ_VALUE_$$p$1 call397formal at _value$2 at 0)))) (and
+(or %lbl%@2706 (=> (= (ControlFlow 0 1334) (- 0 2706)) (=> (not _WRITE_HAS_OCCURRED_$$p$1 at 0) (= _WRITE_SOURCE_$$p$1 at 0 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$p$1 at 0) (= _WRITE_SOURCE_$$p$1 at 0 #x00000000)) (and
+(or %lbl%@2716 (=> (= (ControlFlow 0 1334) (- 0 2716)) (=> (not _READ_HAS_OCCURRED_$$p$1) (= _READ_SOURCE_$$p$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$p$1) (= _READ_SOURCE_$$p$1 #x00000000)) (and
+(or %lbl%@2728 (=> (= (ControlFlow 0 1334) (- 0 2728)) (=> _WRITE_HAS_OCCURRED_$$p$1 at 0 (or
+(= _WRITE_SOURCE_$$p$1 at 0 #x00000001)
+(= _WRITE_SOURCE_$$p$1 at 0 #x00000002)))))
+(=> (=> _WRITE_HAS_OCCURRED_$$p$1 at 0 (or
+(= _WRITE_SOURCE_$$p$1 at 0 #x00000001)
+(= _WRITE_SOURCE_$$p$1 at 0 #x00000002))) (and
+(or %lbl%@2743 (=> (= (ControlFlow 0 1334) (- 0 2743)) (=> _READ_HAS_OCCURRED_$$p$1 false)))
+(=> (=> _READ_HAS_OCCURRED_$$p$1 false) (=> (=> (not _WRITE_HAS_OCCURRED_$$p$1 at 0) (= _WRITE_SOURCE_$$p$1 at 0 #x00000000)) (=> (and
+(=> (not _READ_HAS_OCCURRED_$$p$1) (= _READ_SOURCE_$$p$1 #x00000000))
+(=> _WRITE_HAS_OCCURRED_$$p$1 at 0 (or
+(= _WRITE_SOURCE_$$p$1 at 0 #x00000001)
+(= _WRITE_SOURCE_$$p$1 at 0 #x00000002)))
+(=> _READ_HAS_OCCURRED_$$p$1 false)
+(= (ControlFlow 0 1334) 1324)) inline$$bugle_barrier$0$Entry_correct))))))))))))))))))
+(let ((inline$_LOG_WRITE_$$p$0$_LOG_WRITE_correct (=> (and %lbl%+1189 true) (=> (= _WRITE_HAS_OCCURRED_$$p$1 at 0 (ite (and
+true
+inline$_LOG_WRITE_$$p$0$track at 1) true _WRITE_HAS_OCCURRED_$$p$1)) (=> (and
+(= _WRITE_OFFSET_$$p$1 at 0 (ite (and
+true
+inline$_LOG_WRITE_$$p$0$track at 1) inline$_LOG_WRITE_$$p$0$_offset$1 at 0 _WRITE_OFFSET_$$p$1))
+(= _WRITE_VALUE_$$p$1 at 0 (ite (and
+true
+inline$_LOG_WRITE_$$p$0$track at 1) inline$_LOG_WRITE_$$p$0$_value$1 at 0 _WRITE_VALUE_$$p$1))
+(= _WRITE_SOURCE_$$p$1 at 0 (ite (and
+true
+inline$_LOG_WRITE_$$p$0$track at 1) #x00000001 _WRITE_SOURCE_$$p$1))
+(= (ControlFlow 0 1189) 1334)) $0$1_correct)))))
+(let ((inline$_LOG_WRITE_$$p$0$Entry_correct (=> (and %lbl%+1187 true) (=> (= inline$_LOG_WRITE_$$p$0$_offset$1 at 0 (bvadd (bvmul group_size_x group_id_x$1) local_id_x$1)) (=> (and
+(= inline$_LOG_WRITE_$$p$0$_value$1 at 0 (bvadd (bvmul group_size_x group_id_x$1) local_id_x$1))
+(= (ControlFlow 0 1187) 1189)) inline$_LOG_WRITE_$$p$0$_LOG_WRITE_correct)))))
+(let (($0_correct (=> (and %lbl%+1462 true) (=> (and
+(not _READ_HAS_OCCURRED_$$p$1)
+(not _WRITE_HAS_OCCURRED_$$p$1)
+(= _READ_SOURCE_$$p$1 #x00000000)
+(= _WRITE_SOURCE_$$p$1 #x00000000)
+(bvsgt group_size_x #x00000000)
+(bvsgt num_groups_x #x00000000)
+(bvsge group_id_x$1 #x00000000)
+(bvsge group_id_x$2 #x00000000)) (=> (and
+(bvslt group_id_x$1 num_groups_x)
+(bvslt group_id_x$2 num_groups_x)
+(bvsge local_id_x$1 #x00000000)
+(bvsge local_id_x$2 #x00000000)
+(bvslt local_id_x$1 group_size_x)
+(bvslt local_id_x$2 group_size_x)
+(bvsgt group_size_y #x00000000)
+(bvsgt num_groups_y #x00000000)
+(bvsge group_id_y$1 #x00000000)
+(bvsge group_id_y$2 #x00000000)
+(bvslt group_id_y$1 num_groups_y)
+(bvslt group_id_y$2 num_groups_y)
+(bvsge local_id_y$1 #x00000000)
+(bvsge local_id_y$2 #x00000000)
+(bvslt local_id_y$1 group_size_y)
+(bvslt local_id_y$2 group_size_y)
+(bvsgt group_size_z #x00000000)
+(bvsgt num_groups_z #x00000000)
+(bvsge group_id_z$1 #x00000000)
+(bvsge group_id_z$2 #x00000000)
+(bvslt group_id_z$1 num_groups_z)
+(bvslt group_id_z$2 num_groups_z)
+(bvsge local_id_z$1 #x00000000)
+(bvsge local_id_z$2 #x00000000)
+(bvslt local_id_z$1 group_size_z)
+(bvslt local_id_z$2 group_size_z)
+(=> (not _WRITE_HAS_OCCURRED_$$p$1) (= _WRITE_SOURCE_$$p$1 #x00000000))
+(=> (not _READ_HAS_OCCURRED_$$p$1) (= _READ_SOURCE_$$p$1 #x00000000))
+(=> _WRITE_HAS_OCCURRED_$$p$1 (or
+(= _WRITE_SOURCE_$$p$1 #x00000001)
+(= _WRITE_SOURCE_$$p$1 #x00000002)))
+(=> _READ_HAS_OCCURRED_$$p$1 false)
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (or
+(not (= local_id_x$1 local_id_x$2))
+(not (= local_id_y$1 local_id_y$2))
+(not (= local_id_z$1 local_id_z$2))))
+(= (ControlFlow 0 1462) 1187)) inline$_LOG_WRITE_$$p$0$Entry_correct)))))
+$0_correct)))))))))))))
+(push 1)
+(set-info :boogie-vc-id $foo)
+(assert (not
+(=> true $foo)
+))
+(check-sat)
+;(get-value ((ControlFlow 0 0)))
+; (get-value ((ControlFlow 0 1462)))
+; (get-value ((ControlFlow 0 1187)))
+; (get-value ((ControlFlow 0 1189)))
+; (get-value ((ControlFlow 0 1334)))
+; (get-value ((ControlFlow 0 1324)))
+; (get-value ((ControlFlow 0 1328)))
+; (get-value ((ControlFlow 0 1432)))
+; (get-value ((ControlFlow 0 1434)))
+; (get-value ((ControlFlow 0 1440)))
+; (get-model)
+; (assert (not (= (ControlFlow 0 1440) (- 3060))))
diff --git a/test/regress/regress1/bv/Makefile.am b/test/regress/regress1/bv/Makefile.am
new file mode 100644
index 0000000..fa58e0d
--- /dev/null
+++ b/test/regress/regress1/bv/Makefile.am
@@ -0,0 +1,32 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	bv-proof00.smt \
+	fuzz34.smt \
+	fuzz38.smt
+
+EXTRA_DIST = $(TESTS)
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
diff --git a/test/regress/regress1/bv/Makefile.in b/test/regress/regress1/bv/Makefile.in
new file mode 100644
index 0000000..8bffad7
--- /dev/null
+++ b/test/regress/regress1/bv/Makefile.in
@@ -0,0 +1,1002 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress1/bv
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	bv-proof00.smt \
+	fuzz34.smt \
+	fuzz38.smt
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress1/bv/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress1/bv/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+bv-proof00.smt.log: bv-proof00.smt
+	@p='bv-proof00.smt'; \
+	b='bv-proof00.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz34.smt.log: fuzz34.smt
+	@p='fuzz34.smt'; \
+	b='fuzz34.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz38.smt.log: fuzz38.smt
+	@p='fuzz38.smt'; \
+	b='fuzz38.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress1/bv/bv-proof00.smt b/test/regress/regress1/bv/bv-proof00.smt
new file mode 100644
index 0000000..adfebf5
--- /dev/null
+++ b/test/regress/regress1/bv/bv-proof00.smt
@@ -0,0 +1,2176 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status unsat
+:extrafuns ((v0 BitVec[7]))
+:extrafuns ((v1 BitVec[1]))
+:extrafuns ((v2 BitVec[7]))
+:extrafuns ((v3 BitVec[5]))
+:formula
+(let (?e4 bv9[4])
+(let (?e5 bv1[3])
+(let (?e6 bv15[5])
+(let (?e7 (ite (bvuge (sign_extend[2] v3) v2) bv1[1] bv0[1]))
+(let (?e8 (ite (distinct ?e7 v1) bv1[1] bv0[1]))
+(let (?e9 (bvxor (zero_extend[2] ?e6) v2))
+(let (?e10 (bvcomp ?e9 v2))
+(let (?e11 (bvnot ?e6))
+(let (?e12 (bvsub (sign_extend[6] ?e10) v2))
+(let (?e13 (bvneg v3))
+(let (?e14 (extract[0:0] ?e5))
+(let (?e15 (ite (bvugt ?e6 (sign_extend[4] ?e14)) bv1[1] bv0[1]))
+(let (?e16 (bvcomp ?e4 (sign_extend[1] ?e5)))
+(let (?e17 (bvnot ?e5))
+(let (?e18 (ite (= bv1[1] (extract[3:3] v0)) v2 v2))
+(let (?e19 (bvadd (sign_extend[4] ?e5) ?e12))
+(let (?e20 (bvnor (sign_extend[6] ?e15) ?e18))
+(let (?e21 (bvnor v0 (zero_extend[2] ?e11)))
+(let (?e22 (bvadd (zero_extend[4] ?e7) ?e13))
+(let (?e23 (ite (bvslt ?e18 v0) bv1[1] bv0[1]))
+(let (?e24 (zero_extend[0] ?e18))
+(let (?e25 (bvxnor ?e18 v0))
+(let (?e26 (ite (bvsge (zero_extend[6] ?e14) v0) bv1[1] bv0[1]))
+(let (?e27 (bvneg ?e13))
+(let (?e28 (bvxnor ?e13 ?e13))
+(let (?e29 (bvneg ?e12))
+(let (?e30 (zero_extend[3] v1))
+(let (?e31 (ite (bvsgt ?e29 ?e19) bv1[1] bv0[1]))
+(let (?e32 (ite (= bv1[1] (extract[5:5] ?e9)) ?e28 (sign_extend[2] ?e5)))
+(let (?e33 (bvcomp ?e14 ?e31))
+(let (?e34 (repeat[1] ?e25))
+(let (?e35 (ite (distinct ?e34 ?e21) bv1[1] bv0[1]))
+(let (?e36 (bvneg v0))
+(let (?e37 (ite (bvugt (sign_extend[2] ?e13) ?e19) bv1[1] bv0[1]))
+(let (?e38 (ite (distinct (sign_extend[4] ?e17) ?e24) bv1[1] bv0[1]))
+(let (?e39 (bvsub ?e29 (zero_extend[2] ?e13)))
+(let (?e40 (ite (bvule (sign_extend[2] ?e6) ?e21) bv1[1] bv0[1]))
+(let (?e41 (bvneg ?e9))
+(let (?e42 (ite (bvsle ?e29 ?e39) bv1[1] bv0[1]))
+(let (?e43 (bvneg ?e16))
+(let (?e44 (bvand v0 ?e41))
+(let (?e45 (bvnand ?e16 ?e15))
+(let (?e46 (bvand ?e13 (sign_extend[4] ?e43)))
+(let (?e47 (concat ?e31 ?e37))
+(let (?e48 (sign_extend[7] ?e43))
+(let (?e49 (bvnor ?e12 (sign_extend[6] ?e16)))
+(let (?e50 (bvmul v2 (sign_extend[2] ?e22)))
+(let (?e51 (ite (bvugt ?e34 ?e25) bv1[1] bv0[1]))
+(let (?e52 (sign_extend[1] ?e20))
+(let (?e53 (ite (bvslt ?e7 ?e51) bv1[1] bv0[1]))
+(let (?e54 (bvnand (sign_extend[6] ?e53) ?e36))
+(let (?e55 (extract[0:0] ?e43))
+(let (?e56 (bvnor v3 (sign_extend[4] ?e15)))
+(let (?e57 (zero_extend[5] ?e42))
+(let (?e58 (ite (bvult ?e37 ?e40) bv1[1] bv0[1]))
+(let (?e59 (bvashr ?e39 ?e18))
+(let (?e60 (ite (bvuge (zero_extend[4] ?e17) ?e39) bv1[1] bv0[1]))
+(let (?e61 (bvashr (sign_extend[7] ?e38) ?e52))
+(let (?e62 (bvashr (sign_extend[1] v2) ?e52))
+(let (?e63 (ite (= bv1[1] (extract[2:2] v2)) (zero_extend[3] ?e30) ?e25))
+(let (?e64 (ite (bvslt ?e23 ?e51) bv1[1] bv0[1]))
+(let (?e65 (ite (bvsgt ?e41 (sign_extend[6] ?e7)) bv1[1] bv0[1]))
+(let (?e66 (extract[0:0] ?e54))
+(let (?e67 (bvsub (zero_extend[4] ?e5) ?e63))
+(let (?e68 (ite (bvsle ?e33 ?e53) bv1[1] bv0[1]))
+(let (?e69 (bvnor v0 (sign_extend[4] ?e17)))
+(let (?e70 (ite (bvugt (zero_extend[6] v1) ?e67) bv1[1] bv0[1]))
+(let (?e71 (bvor ?e12 ?e49))
+(let (?e72 (ite (bvuge ?e34 (zero_extend[6] ?e16)) bv1[1] bv0[1]))
+(let (?e73 (ite (bvugt ?e63 (zero_extend[2] v3)) bv1[1] bv0[1]))
+(let (?e74 (bvnot v0))
+(let (?e75 (ite (bvsge ?e18 (sign_extend[4] ?e17)) bv1[1] bv0[1]))
+(let (?e76 (bvcomp (sign_extend[5] ?e7) ?e57))
+(let (?e77 (ite (bvsgt (zero_extend[7] ?e66) ?e62) bv1[1] bv0[1]))
+(let (?e78 (concat ?e39 ?e42))
+(let (?e79 (bvnor ?e67 v0))
+(let (?e80 (bvnor ?e32 v3))
+(let (?e81 (ite (= bv1[1] (extract[0:0] ?e5)) ?e57 (sign_extend[5] ?e37)))
+(let (?e82 (rotate_left[1] ?e5))
+(let (?e83 (bvcomp (sign_extend[2] ?e27) ?e69))
+(let (?e84 (bvshl (zero_extend[2] ?e32) ?e41))
+(let (?e85 (bvashr ?e51 ?e68))
+(let (?e86 (bvnand ?e8 ?e76))
+(let (?e87 (ite (bvsge (sign_extend[4] ?e23) ?e27) bv1[1] bv0[1]))
+(let (?e88 (ite (= bv1[1] (extract[0:0] ?e73)) ?e22 (zero_extend[4] ?e35)))
+(let (?e89 (bvnot ?e46))
+(let (?e90 (bvxnor ?e19 (zero_extend[1] ?e81)))
+(let (?e91 (repeat[1] ?e27))
+(let (?e92 (bvneg ?e31))
+(let (?e93 (ite (distinct ?e52 (sign_extend[7] ?e92)) bv1[1] bv0[1]))
+(let (?e94 (bvmul (sign_extend[6] ?e70) ?e90))
+(let (?e95 (bvneg ?e54))
+(let (?e96 (ite (bvsge (zero_extend[4] ?e33) ?e56) bv1[1] bv0[1]))
+(let (?e97 (ite (bvule ?e69 ?e50) bv1[1] bv0[1]))
+(let (?e98 (bvshl (sign_extend[7] ?e70) ?e48))
+(let (?e99 (zero_extend[2] ?e70))
+(let (?e100 (rotate_left[0] ?e17))
+(let (?e101 (ite (= bv1[1] (extract[0:0] ?e70)) ?e95 (zero_extend[2] ?e80)))
+(let (?e102 (ite (bvule (sign_extend[1] ?e100) ?e30) bv1[1] bv0[1]))
+(let (?e103 (bvnor (sign_extend[6] ?e58) ?e71))
+(let (?e104 (bvashr ?e25 (zero_extend[2] ?e11)))
+(let (?e105 (ite (bvule ?e59 ?e63) bv1[1] bv0[1]))
+(let (?e106 (ite (= bv1[1] (extract[1:1] ?e11)) (sign_extend[2] ?e56) ?e9))
+(let (?e107 (bvor ?e90 (zero_extend[6] ?e42)))
+(let (?e108 (bvnot ?e18))
+(let (?e109 (ite (bvult (sign_extend[6] ?e10) ?e41) bv1[1] bv0[1]))
+(let (?e110 (bvxnor (sign_extend[6] ?e86) ?e20))
+(let (?e111 (concat ?e42 ?e105))
+(let (?e112 (ite (bvsle (zero_extend[1] ?e104) ?e98) bv1[1] bv0[1]))
+(let (?e113 (bvashr ?e20 ?e39))
+(let (?e114 (bvnand ?e63 ?e94))
+(let (?e115 (bvxor ?e110 (zero_extend[6] ?e85)))
+(let (?e116 (bvxor (sign_extend[1] ?e12) ?e48))
+(let (?e117 (bvxor (zero_extend[6] ?e77) ?e67))
+(let (?e118 (rotate_right[0] ?e51))
+(let (?e119 (bvnot ?e73))
+(let (?e120 (ite (bvuge ?e89 (sign_extend[4] ?e65)) bv1[1] bv0[1]))
+(let (?e121 (bvashr (sign_extend[6] ?e83) ?e18))
+(let (?e122 (rotate_right[0] ?e68))
+(let (?e123 (rotate_left[0] ?e87))
+(let (?e124 (bvand ?e19 (zero_extend[1] ?e57)))
+(let (?e125 (ite (bvsge (sign_extend[6] ?e93) ?e74) bv1[1] bv0[1]))
+(let (?e126 (bvshl (zero_extend[6] ?e97) ?e103))
+(let (?e127 (bvor ?e29 (sign_extend[6] ?e65)))
+(let (?e128 (bvnor ?e62 (sign_extend[1] ?e24)))
+(let (?e129 (ite (bvult ?e94 (sign_extend[6] ?e76)) bv1[1] bv0[1]))
+(let (?e130 (rotate_right[0] ?e10))
+(let (?e131 (sign_extend[1] ?e71))
+(let (?e132 (ite (bvuge ?e5 (sign_extend[2] ?e66)) bv1[1] bv0[1]))
+(let (?e133 (ite (= ?e55 ?e26) bv1[1] bv0[1]))
+(let (?e134 (ite (bvslt (sign_extend[2] ?e32) ?e127) bv1[1] bv0[1]))
+(let (?e135 (sign_extend[6] ?e102))
+(let (?e136 (bvxnor ?e101 (sign_extend[2] ?e13)))
+(let (?e137 (ite (bvslt (sign_extend[7] ?e83) ?e98) bv1[1] bv0[1]))
+(let (?e138 (ite (bvugt ?e79 ?e67) bv1[1] bv0[1]))
+(let (?e139 (bvsub (zero_extend[6] ?e73) ?e9))
+(let (?e140 (bvxor (zero_extend[6] ?e137) ?e21))
+(let (?e141 (bvnand ?e90 (zero_extend[2] ?e80)))
+(let (?e142 (ite (bvugt ?e90 (zero_extend[6] ?e38)) bv1[1] bv0[1]))
+(let (?e143 (repeat[2] ?e30))
+(let (?e144 (ite (bvuge ?e135 (sign_extend[2] v3)) bv1[1] bv0[1]))
+(let (?e145 (bvxnor (zero_extend[4] ?e82) ?e113))
+(let (?e146 (sign_extend[0] ?e140))
+(let (?e147 (bvmul ?e146 (zero_extend[2] ?e27)))
+(let (?e148 (ite (bvult ?e84 (sign_extend[1] ?e81)) bv1[1] bv0[1]))
+(let (?e149 (bvshl ?e135 (sign_extend[6] ?e26)))
+(let (?e150 (bvmul ?e71 ?e20))
+(let (?e151 (bvshl ?e125 ?e37))
+(let (?e152 (ite (bvult ?e36 (zero_extend[6] ?e53)) bv1[1] bv0[1]))
+(let (?e153 (bvneg ?e106))
+(let (?e154 (ite (bvsgt ?e143 ?e131) bv1[1] bv0[1]))
+(let (?e155 (zero_extend[0] ?e47))
+(let (?e156 (bvadd ?e120 ?e138))
+(let (?e157 (bvxnor ?e138 v1))
+(let (?e158 (rotate_left[0] ?e70))
+(let (?e159 (ite (bvsle ?e30 (zero_extend[3] ?e8)) bv1[1] bv0[1]))
+(let (?e160 (bvnot ?e134))
+(let (?e161 (ite (bvslt ?e71 (zero_extend[6] ?e66)) bv1[1] bv0[1]))
+(let (?e162 (extract[0:0] ?e79))
+(let (?e163 (bvnand (sign_extend[4] ?e137) ?e80))
+(let (?e164 (ite (bvult (sign_extend[6] ?e154) ?e135) bv1[1] bv0[1]))
+(let (?e165 (sign_extend[1] ?e156))
+(let (?e166 (ite (bvugt ?e149 (zero_extend[6] ?e55)) bv1[1] bv0[1]))
+(let (?e167 (ite (= bv1[1] (extract[0:0] ?e164)) (sign_extend[2] ?e31) ?e5))
+(let (?e168 (zero_extend[5] ?e73))
+(let (?e169 (bvand ?e39 (zero_extend[2] ?e13)))
+(let (?e170 (ite (bvsgt (zero_extend[6] ?e66) ?e44) bv1[1] bv0[1]))
+(let (?e171 (ite (bvsle ?e114 (zero_extend[6] ?e26)) bv1[1] bv0[1]))
+(let (?e172 (ite (bvult ?e52 (sign_extend[7] ?e171)) bv1[1] bv0[1]))
+(let (?e173 (ite (bvugt (sign_extend[4] ?e30) ?e78) bv1[1] bv0[1]))
+(let (?e174 (bvadd ?e121 (sign_extend[6] ?e151)))
+(let (?e175 (ite (bvult (sign_extend[6] ?e130) ?e34) bv1[1] bv0[1]))
+(let (?e176 (bvand ?e135 v2))
+(let (?e177 (bvneg ?e152))
+(let (?e178 (ite (distinct ?e42 ?e35) bv1[1] bv0[1]))
+(let (?e179 (bvadd (sign_extend[2] ?e89) ?e39))
+(let (?e180 (bvnor ?e10 ?e118))
+(let (?e181 (ite (bvugt ?e134 ?e148) bv1[1] bv0[1]))
+(let (?e182 (ite (= ?e36 ?e108) bv1[1] bv0[1]))
+(let (?e183 (bvxor v1 ?e86))
+(let (?e184 (bvsub (sign_extend[6] ?e181) ?e59))
+(let (?e185 (bvor (sign_extend[2] ?e33) ?e5))
+(let (?e186 (rotate_right[0] ?e161))
+(let (?e187 (bvcomp ?e29 (zero_extend[6] ?e87)))
+(let (?e188 (bvmul (zero_extend[1] ?e69) ?e62))
+(let (?e189 (bvor ?e150 (zero_extend[6] ?e170)))
+(let (?e190 (repeat[6] ?e26))
+(let (?e191 (bvnot ?e75))
+(let (?e192 (bvnand ?e182 ?e35))
+(let (?e193 (ite (= bv1[1] (extract[0:0] ?e123)) ?e7 ?e73))
+(let (?e194 (bvneg ?e60))
+(let (?e195 (bvshl ?e62 (zero_extend[6] ?e165)))
+(let (?e196 (bvneg ?e95))
+(let (?e197 (bvnot ?e58))
+(let (?e198 (bvneg ?e56))
+(let (?e199 (bvashr ?e170 ?e138))
+(let (?e200 (bvcomp (zero_extend[6] ?e35) ?e139))
+(let (?e201 (sign_extend[0] ?e157))
+(let (?e202 (extract[0:0] ?e7))
+(let (?e203 (ite (bvule ?e18 ?e107) bv1[1] bv0[1]))
+(let (?e204 (bvxor ?e54 ?e150))
+(let (?e205 (bvxor ?e107 ?e114))
+(let (?e206 (ite (bvule ?e62 (zero_extend[1] ?e153)) bv1[1] bv0[1]))
+(let (?e207 (bvneg ?e112))
+(let (?e208 (rotate_left[0] ?e64))
+(let (?e209 (bvcomp (sign_extend[6] ?e122) ?e34))
+(let (?e210 (bvor ?e39 ?e126))
+(let (?e211 (sign_extend[3] ?e96))
+(let (?e212 (bvnor (sign_extend[1] ?e166) ?e47))
+(let (?e213 (rotate_left[0] ?e117))
+(let (?e214 (ite (= (zero_extend[6] ?e199) ?e74) bv1[1] bv0[1]))
+(let (?e215 (concat ?e142 ?e160))
+(let (?e216 (bvor ?e54 (sign_extend[4] ?e17)))
+(let (?e217 (ite (distinct (sign_extend[6] ?e55) ?e41) bv1[1] bv0[1]))
+(let (?e218 (ite (distinct ?e206 ?e203) bv1[1] bv0[1]))
+(let (?e219 (ite (bvsle ?e207 ?e105) bv1[1] bv0[1]))
+(let (?e220 (ite (bvsle ?e139 ?e9) bv1[1] bv0[1]))
+(let (?e221 (bvneg ?e180))
+(let (?e222 (ite (bvslt (sign_extend[5] ?e155) ?e141) bv1[1] bv0[1]))
+(let (?e223 (ite (bvult ?e179 (zero_extend[6] ?e218)) bv1[1] bv0[1]))
+(let (?e224 (ite (bvugt ?e180 ?e83) bv1[1] bv0[1]))
+(let (?e225 (ite (bvsge ?e150 (zero_extend[6] ?e70)) bv1[1] bv0[1]))
+(let (?e226 (repeat[1] ?e15))
+(let (?e227 (bvneg ?e67))
+(let (?e228 (ite (bvuge ?e177 ?e65) bv1[1] bv0[1]))
+(let (?e229 (ite (bvule ?e141 ?e101) bv1[1] bv0[1]))
+(let (?e230 (ite (= ?e140 (sign_extend[6] ?e125)) bv1[1] bv0[1]))
+(let (?e231 (bvor (zero_extend[6] ?e221) ?e104))
+(let (?e232 (zero_extend[1] ?e149))
+(let (?e233 (ite (bvult v0 (zero_extend[6] ?e10)) bv1[1] bv0[1]))
+(let (?e234 (bvadd ?e194 ?e7))
+(let (?e235 (bvmul (sign_extend[6] ?e164) ?e44))
+(let (?e236 (bvnor ?e147 (zero_extend[6] ?e223)))
+(let (?e237 (concat ?e40 ?e184))
+(let (?e238 (bvsub (sign_extend[2] ?e55) ?e167))
+(let (?e239 (ite (bvule (sign_extend[4] ?e138) ?e28) bv1[1] bv0[1]))
+(let (?e240 (bvashr ?e110 (zero_extend[6] ?e180)))
+(let (?e241 (ite (bvslt ?e163 (sign_extend[4] ?e197)) bv1[1] bv0[1]))
+(let (?e242 (bvadd (sign_extend[7] ?e123) ?e131))
+(let (?e243 (bvxor ?e126 (zero_extend[6] ?e83)))
+(let (?e244 (ite (bvuge ?e168 (sign_extend[5] ?e26)) bv1[1] bv0[1]))
+(let (?e245 (ite (distinct ?e143 (zero_extend[1] ?e205)) bv1[1] bv0[1]))
+(let (?e246 (bvsub ?e29 (sign_extend[6] ?e132)))
+(let (?e247 (bvashr ?e24 (sign_extend[6] ?e192)))
+(let (?e248 (bvxnor (zero_extend[6] ?e162) ?e140))
+(let (?e249 (bvnor ?e76 ?e10))
+(let (?e250 (bvnor ?e175 ?e214))
+(let (?e251 (bvnand (zero_extend[6] ?e40) ?e21))
+(let (?e252 (bvsub ?e121 (zero_extend[2] ?e80)))
+(let (?e253 (ite (bvsgt (zero_extend[3] ?e4) ?e139) bv1[1] bv0[1]))
+(flet ($e254 (bvsle ?e82 (zero_extend[2] ?e133)))
+(flet ($e255 (bvult ?e246 (sign_extend[2] ?e11)))
+(flet ($e256 (bvsgt ?e117 ?e94))
+(flet ($e257 (distinct (zero_extend[7] ?e132) ?e52))
+(flet ($e258 (= ?e83 ?e177))
+(flet ($e259 (bvugt ?e115 (sign_extend[6] ?e138)))
+(flet ($e260 (bvsle (zero_extend[6] ?e35) ?e179))
+(flet ($e261 (bvult ?e239 ?e208))
+(flet ($e262 (bvule ?e244 ?e219))
+(flet ($e263 (bvule ?e165 (zero_extend[1] ?e226)))
+(flet ($e264 (distinct ?e81 ?e57))
+(flet ($e265 (bvsgt ?e27 (sign_extend[4] ?e180)))
+(flet ($e266 (bvuge ?e147 (zero_extend[6] ?e76)))
+(flet ($e267 (bvsle ?e114 ?e147))
+(flet ($e268 (bvslt ?e143 (zero_extend[1] ?e141)))
+(flet ($e269 (bvsge (zero_extend[4] ?e4) ?e52))
+(flet ($e270 (bvsge ?e142 ?e223))
+(flet ($e271 (bvule (zero_extend[2] ?e27) ?e205))
+(flet ($e272 (bvult ?e235 (sign_extend[2] ?e56)))
+(flet ($e273 (bvule ?e189 (zero_extend[6] ?e92)))
+(flet ($e274 (bvsge ?e68 ?e42))
+(flet ($e275 (distinct ?e77 ?e228))
+(flet ($e276 (= ?e81 (sign_extend[5] ?e193)))
+(flet ($e277 (bvugt (sign_extend[4] ?e185) ?e117))
+(flet ($e278 (bvult v2 ?e84))
+(flet ($e279 (bvsle (zero_extend[6] ?e239) ?e140))
+(flet ($e280 (= ?e80 (zero_extend[4] ?e217)))
+(flet ($e281 (bvuge (sign_extend[1] ?e12) ?e61))
+(flet ($e282 (bvugt ?e48 (sign_extend[7] ?e7)))
+(flet ($e283 (bvult ?e68 ?e241))
+(flet ($e284 (bvsgt ?e235 (zero_extend[6] ?e203)))
+(flet ($e285 (distinct ?e147 (sign_extend[6] ?e102)))
+(flet ($e286 (= (sign_extend[1] ?e190) ?e174))
+(flet ($e287 (bvslt ?e21 ?e107))
+(flet ($e288 (bvugt ?e201 ?e122))
+(flet ($e289 (bvule (zero_extend[6] ?e92) ?e136))
+(flet ($e290 (bvult (zero_extend[6] ?e137) ?e176))
+(flet ($e291 (= (zero_extend[5] ?e212) ?e24))
+(flet ($e292 (distinct ?e157 ?e225))
+(flet ($e293 (= (sign_extend[5] ?e47) ?e252))
+(flet ($e294 (bvugt ?e50 (zero_extend[6] ?e130)))
+(flet ($e295 (= ?e158 ?e14))
+(flet ($e296 (bvsge (sign_extend[1] ?e138) ?e47))
+(flet ($e297 (bvsgt (sign_extend[3] ?e11) ?e188))
+(flet ($e298 (bvult ?e242 (sign_extend[1] ?e121)))
+(flet ($e299 (bvsge ?e94 ?e74))
+(flet ($e300 (bvsge ?e231 (zero_extend[6] ?e225)))
+(flet ($e301 (bvule (sign_extend[1] ?e152) ?e111))
+(flet ($e302 (bvsgt ?e155 (zero_extend[1] ?e160)))
+(flet ($e303 (distinct ?e140 (sign_extend[4] ?e82)))
+(flet ($e304 (bvugt ?e55 ?e158))
+(flet ($e305 (bvule ?e58 ?e180))
+(flet ($e306 (bvule ?e198 (sign_extend[4] ?e182)))
+(flet ($e307 (= ?e71 ?e36))
+(flet ($e308 (bvsle ?e235 ?e136))
+(flet ($e309 (bvugt ?e90 (sign_extend[6] ?e97)))
+(flet ($e310 (bvslt ?e201 ?e172))
+(flet ($e311 (= ?e6 (zero_extend[4] ?e177)))
+(flet ($e312 (bvslt ?e134 ?e186))
+(flet ($e313 (bvugt ?e205 (zero_extend[6] ?e249)))
+(flet ($e314 (bvsgt (sign_extend[6] ?e70) ?e205))
+(flet ($e315 (bvule ?e17 (zero_extend[2] ?e144)))
+(flet ($e316 (distinct (sign_extend[6] ?e161) v0))
+(flet ($e317 (bvule (zero_extend[6] ?e109) ?e252))
+(flet ($e318 (distinct ?e238 (sign_extend[2] ?e142)))
+(flet ($e319 (bvsgt ?e38 ?e137))
+(flet ($e320 (distinct (zero_extend[4] ?e202) ?e11))
+(flet ($e321 (bvsle ?e5 (sign_extend[2] ?e55)))
+(flet ($e322 (bvugt ?e154 ?e239))
+(flet ($e323 (bvule ?e147 ?e104))
+(flet ($e324 (bvuge ?e213 ?e146))
+(flet ($e325 (bvult ?e108 ?e189))
+(flet ($e326 (distinct ?e50 (sign_extend[6] ?e68)))
+(flet ($e327 (bvsge (zero_extend[1] ?e150) ?e61))
+(flet ($e328 (bvule ?e198 (zero_extend[4] ?e170)))
+(flet ($e329 (bvuge (sign_extend[6] ?e148) ?e79))
+(flet ($e330 (= ?e69 ?e49))
+(flet ($e331 (= (sign_extend[4] ?e167) ?e25))
+(flet ($e332 (distinct ?e190 (sign_extend[1] ?e46)))
+(flet ($e333 (bvsle (sign_extend[6] ?e118) ?e139))
+(flet ($e334 (bvugt ?e117 (sign_extend[6] ?e172)))
+(flet ($e335 (bvugt ?e138 ?e218))
+(flet ($e336 (bvsle ?e176 (zero_extend[6] ?e170)))
+(flet ($e337 (bvule ?e252 (sign_extend[6] ?e138)))
+(flet ($e338 (bvsle ?e194 ?e158))
+(flet ($e339 (bvsle (zero_extend[5] ?e111) ?e25))
+(flet ($e340 (bvslt ?e40 ?e220))
+(flet ($e341 (bvuge ?e79 ?e140))
+(flet ($e342 (bvugt ?e173 ?e72))
+(flet ($e343 (bvslt ?e156 ?e208))
+(flet ($e344 (bvugt ?e196 (zero_extend[6] ?e37)))
+(flet ($e345 (= (zero_extend[4] ?e130) ?e88))
+(flet ($e346 (= ?e41 ?e213))
+(flet ($e347 (bvule (sign_extend[4] ?e93) ?e13))
+(flet ($e348 (distinct ?e204 ?e29))
+(flet ($e349 (bvult (zero_extend[6] ?e165) ?e143))
+(flet ($e350 (bvult (sign_extend[6] ?e72) ?e204))
+(flet ($e351 (bvult ?e118 ?e144))
+(flet ($e352 (bvsle ?e138 ?e138))
+(flet ($e353 (distinct ?e145 ?e113))
+(flet ($e354 (bvugt (sign_extend[6] ?e157) ?e251))
+(flet ($e355 (bvule ?e227 ?e150))
+(flet ($e356 (= ?e25 (sign_extend[6] ?e42)))
+(flet ($e357 (bvsle (zero_extend[1] ?e146) ?e98))
+(flet ($e358 (distinct ?e215 (sign_extend[1] ?e158)))
+(flet ($e359 (= ?e55 ?e133))
+(flet ($e360 (= ?e19 (sign_extend[6] ?e175)))
+(flet ($e361 (distinct ?e125 ?e151))
+(flet ($e362 (bvuge ?e54 ?e24))
+(flet ($e363 (bvuge ?e249 ?e152))
+(flet ($e364 (bvsge (sign_extend[1] ?e190) ?e39))
+(flet ($e365 (bvsgt ?e27 (zero_extend[4] ?e214)))
+(flet ($e366 (= ?e19 (sign_extend[6] ?e73)))
+(flet ($e367 (distinct ?e210 ?e216))
+(flet ($e368 (distinct ?e19 (zero_extend[6] ?e68)))
+(flet ($e369 (bvsle ?e102 ?e51))
+(flet ($e370 (bvugt ?e205 (zero_extend[6] ?e119)))
+(flet ($e371 (bvslt ?e140 (zero_extend[6] ?e133)))
+(flet ($e372 (bvugt ?e91 (sign_extend[4] ?e209)))
+(flet ($e373 (bvslt ?e174 ?e127))
+(flet ($e374 (bvsgt ?e9 (zero_extend[2] ?e13)))
+(flet ($e375 (bvule (sign_extend[4] ?e241) ?e13))
+(flet ($e376 (bvsle (sign_extend[6] ?e160) ?e114))
+(flet ($e377 (distinct ?e236 ?e103))
+(flet ($e378 (bvsle ?e103 (zero_extend[2] ?e28)))
+(flet ($e379 (= (sign_extend[6] ?e96) ?e169))
+(flet ($e380 (bvule ?e68 ?e249))
+(flet ($e381 (bvuge ?e147 (zero_extend[6] ?e156)))
+(flet ($e382 (bvuge ?e187 ?e31))
+(flet ($e383 (bvsgt ?e118 ?e130))
+(flet ($e384 (bvsle (sign_extend[1] ?e165) ?e17))
+(flet ($e385 (bvuge (zero_extend[7] ?e118) ?e48))
+(flet ($e386 (bvult (sign_extend[6] ?e197) ?e124))
+(flet ($e387 (bvsgt ?e211 (zero_extend[3] ?e31)))
+(flet ($e388 (bvslt ?e52 (sign_extend[7] ?e8)))
+(flet ($e389 (bvsle (sign_extend[3] ?e211) ?e49))
+(flet ($e390 (bvsgt (sign_extend[2] ?e151) ?e82))
+(flet ($e391 (bvult ?e23 ?e228))
+(flet ($e392 (bvule (zero_extend[4] ?e17) ?e246))
+(flet ($e393 (bvugt ?e191 ?e191))
+(flet ($e394 (bvult ?e160 ?e92))
+(flet ($e395 (bvuge ?e51 ?e65))
+(flet ($e396 (bvuge (zero_extend[1] ?e190) ?e108))
+(flet ($e397 (bvuge ?e69 (sign_extend[6] ?e65)))
+(flet ($e398 (bvult ?e200 ?e123))
+(flet ($e399 (= (zero_extend[7] ?e76) ?e78))
+(flet ($e400 (bvsgt (zero_extend[2] ?e118) ?e5))
+(flet ($e401 (bvugt (zero_extend[4] ?e82) ?e248))
+(flet ($e402 (bvsle ?e227 ?e127))
+(flet ($e403 (= ?e213 ?e95))
+(flet ($e404 (bvugt ?e54 (zero_extend[6] ?e109)))
+(flet ($e405 (bvsge ?e25 ?e139))
+(flet ($e406 (bvule ?e98 (zero_extend[7] ?e192)))
+(flet ($e407 (bvugt (sign_extend[7] ?e26) ?e98))
+(flet ($e408 (bvsgt ?e140 ?e95))
+(flet ($e409 (bvugt ?e112 ?e221))
+(flet ($e410 (bvugt (sign_extend[2] ?e46) ?e189))
+(flet ($e411 (bvuge (sign_extend[6] ?e142) ?e184))
+(flet ($e412 (bvslt (zero_extend[6] ?e200) ?e63))
+(flet ($e413 (bvsge ?e72 ?e40))
+(flet ($e414 (bvule ?e152 ?e151))
+(flet ($e415 (bvsge ?e59 (zero_extend[2] ?e22)))
+(flet ($e416 (bvsge ?e188 (sign_extend[7] ?e173)))
+(flet ($e417 (bvsgt ?e98 (zero_extend[1] ?e63)))
+(flet ($e418 (bvult ?e29 (zero_extend[2] ?e80)))
+(flet ($e419 (bvsgt ?e59 (zero_extend[6] ?e87)))
+(flet ($e420 (bvuge (sign_extend[2] ?e156) ?e99))
+(flet ($e421 (bvsgt ?e77 ?e118))
+(flet ($e422 (bvugt ?e74 (sign_extend[5] ?e111)))
+(flet ($e423 (bvult ?e180 ?e181))
+(flet ($e424 (bvsle ?e90 (sign_extend[6] ?e148)))
+(flet ($e425 (distinct ?e160 ?e194))
+(flet ($e426 (bvsle ?e184 (sign_extend[6] ?e45)))
+(flet ($e427 (= ?e252 (sign_extend[2] ?e11)))
+(flet ($e428 (bvsge ?e24 (zero_extend[6] ?e134)))
+(flet ($e429 (bvsgt ?e160 ?e206))
+(flet ($e430 (bvugt (zero_extend[2] ?e22) ?e240))
+(flet ($e431 (bvsge ?e95 ?e19))
+(flet ($e432 (bvsge ?e201 ?e87))
+(flet ($e433 (bvsle ?e34 ?e145))
+(flet ($e434 (bvuge ?e117 (zero_extend[6] ?e51)))
+(flet ($e435 (bvule ?e216 ?e145))
+(flet ($e436 (bvslt ?e52 (zero_extend[7] ?e191)))
+(flet ($e437 (bvslt ?e16 ?e129))
+(flet ($e438 (bvsge (zero_extend[7] ?e249) ?e188))
+(flet ($e439 (bvsle ?e138 ?e33))
+(flet ($e440 (distinct ?e103 (sign_extend[6] ?e186)))
+(flet ($e441 (bvuge ?e145 (sign_extend[6] ?e118)))
+(flet ($e442 (bvsgt ?e183 ?e102))
+(flet ($e443 (bvuge (zero_extend[6] ?e233) ?e49))
+(flet ($e444 (= ?e105 ?e160))
+(flet ($e445 (bvsgt ?e145 ?e104))
+(flet ($e446 (bvslt (zero_extend[2] ?e185) ?e32))
+(flet ($e447 (bvugt ?e122 ?e162))
+(flet ($e448 (= (sign_extend[6] ?e156) ?e240))
+(flet ($e449 (bvsge ?e83 ?e197))
+(flet ($e450 (bvsgt ?e89 (zero_extend[4] ?e70)))
+(flet ($e451 (bvsle (zero_extend[6] ?e202) ?e251))
+(flet ($e452 (bvslt ?e203 ?e229))
+(flet ($e453 (bvsge (sign_extend[6] ?e201) ?e63))
+(flet ($e454 (bvslt ?e33 ?e70))
+(flet ($e455 (bvuge ?e119 ?e173))
+(flet ($e456 (distinct ?e205 ?e210))
+(flet ($e457 (bvslt ?e230 ?e38))
+(flet ($e458 (bvsgt ?e45 ?e159))
+(flet ($e459 (bvuge ?e231 ?e115))
+(flet ($e460 (bvslt (sign_extend[5] ?e16) ?e81))
+(flet ($e461 (bvugt (sign_extend[6] ?e15) ?e126))
+(flet ($e462 (bvsgt ?e108 ?e106))
+(flet ($e463 (bvsgt ?e41 ?e252))
+(flet ($e464 (bvsge ?e56 (sign_extend[4] ?e233)))
+(flet ($e465 (bvult ?e76 ?e23))
+(flet ($e466 (bvuge ?e20 ?e126))
+(flet ($e467 (bvslt ?e85 ?e86))
+(flet ($e468 (bvuge ?e11 (zero_extend[4] ?e70)))
+(flet ($e469 (bvsgt (sign_extend[7] ?e87) ?e188))
+(flet ($e470 (bvsge (zero_extend[5] ?e199) ?e190))
+(flet ($e471 (= ?e146 ?e205))
+(flet ($e472 (distinct (sign_extend[4] ?e75) ?e32))
+(flet ($e473 (bvult (zero_extend[6] ?e222) ?e54))
+(flet ($e474 (bvult (zero_extend[6] ?e162) ?e149))
+(flet ($e475 (bvsge ?e50 (sign_extend[4] ?e99)))
+(flet ($e476 (bvult (sign_extend[1] ?e217) ?e165))
+(flet ($e477 (= ?e36 ?e117))
+(flet ($e478 (bvuge ?e80 (zero_extend[4] ?e87)))
+(flet ($e479 (= (sign_extend[6] ?e161) ?e204))
+(flet ($e480 (bvuge ?e227 (sign_extend[2] ?e89)))
+(flet ($e481 (bvslt (zero_extend[5] ?e5) ?e128))
+(flet ($e482 (bvuge (sign_extend[4] ?e99) ?e213))
+(flet ($e483 (bvsle (sign_extend[3] ?e138) ?e4))
+(flet ($e484 (distinct (sign_extend[7] ?e105) ?e195))
+(flet ($e485 (bvult ?e189 (sign_extend[6] ?e65)))
+(flet ($e486 (bvugt (zero_extend[6] ?e66) ?e20))
+(flet ($e487 (bvslt ?e76 ?e26))
+(flet ($e488 (bvsle ?e109 ?e68))
+(flet ($e489 (bvuge ?e56 (zero_extend[4] ?e250)))
+(flet ($e490 (bvule ?e61 (zero_extend[7] ?e156)))
+(flet ($e491 (bvsle (sign_extend[6] ?e144) ?e18))
+(flet ($e492 (bvsle (zero_extend[6] ?e26) ?e139))
+(flet ($e493 (bvslt (zero_extend[4] ?e200) ?e32))
+(flet ($e494 (bvslt (sign_extend[6] ?e218) ?e94))
+(flet ($e495 (bvslt ?e104 (zero_extend[6] ?e239)))
+(flet ($e496 (= (sign_extend[4] ?e211) ?e116))
+(flet ($e497 (distinct (sign_extend[3] ?e97) ?e211))
+(flet ($e498 (= ?e50 ?e210))
+(flet ($e499 (distinct (zero_extend[6] ?e192) ?e205))
+(flet ($e500 (bvsle ?e84 (sign_extend[6] ?e250)))
+(flet ($e501 (bvslt (zero_extend[4] ?e222) ?e13))
+(flet ($e502 (bvule ?e124 (zero_extend[6] ?e112)))
+(flet ($e503 (= ?e8 ?e177))
+(flet ($e504 (bvuge ?e200 ?e158))
+(flet ($e505 (bvugt (zero_extend[6] ?e77) ?e126))
+(flet ($e506 (= ?e148 ?e60))
+(flet ($e507 (bvuge (zero_extend[6] ?e132) ?e121))
+(flet ($e508 (bvule (sign_extend[5] ?e148) ?e81))
+(flet ($e509 (bvsle (sign_extend[5] ?e38) ?e81))
+(flet ($e510 (bvsge (zero_extend[4] ?e238) ?e36))
+(flet ($e511 (bvuge ?e231 (sign_extend[4] ?e99)))
+(flet ($e512 (bvsgt ?e46 (sign_extend[4] ?e225)))
+(flet ($e513 (bvsgt ?e29 (sign_extend[6] ?e245)))
+(flet ($e514 (bvsle ?e116 (zero_extend[7] ?e199)))
+(flet ($e515 (= ?e207 ?e16))
+(flet ($e516 (distinct ?e211 (zero_extend[3] ?e177)))
+(flet ($e517 (bvsgt ?e78 (sign_extend[7] ?e229)))
+(flet ($e518 (bvsge ?e88 (zero_extend[4] ?e119)))
+(flet ($e519 (bvult ?e128 (zero_extend[7] ?e120)))
+(flet ($e520 (bvugt ?e118 ?e225))
+(flet ($e521 (bvuge (sign_extend[6] ?e181) ?e49))
+(flet ($e522 (bvugt ?e115 (zero_extend[6] ?e222)))
+(flet ($e523 (bvult (zero_extend[6] ?e250) ?e94))
+(flet ($e524 (bvsle ?e60 ?e120))
+(flet ($e525 (bvugt ?e146 ?e236))
+(flet ($e526 (distinct ?e16 ?e123))
+(flet ($e527 (bvugt ?e124 ?e248))
+(flet ($e528 (bvult ?e189 ?e29))
+(flet ($e529 (bvult ?e154 ?e118))
+(flet ($e530 (= (sign_extend[7] ?e154) ?e143))
+(flet ($e531 (bvugt (sign_extend[1] ?e34) ?e131))
+(flet ($e532 (bvule ?e115 (zero_extend[6] ?e199)))
+(flet ($e533 (bvuge (zero_extend[6] ?e132) ?e110))
+(flet ($e534 (bvsgt ?e240 ?e227))
+(flet ($e535 (bvsle ?e246 ?e19))
+(flet ($e536 (bvsle ?e55 ?e207))
+(flet ($e537 (bvsge (zero_extend[5] ?e164) ?e190))
+(flet ($e538 (distinct (sign_extend[6] ?e183) ?e71))
+(flet ($e539 (bvslt (zero_extend[7] ?e197) ?e195))
+(flet ($e540 (bvslt ?e14 ?e233))
+(flet ($e541 (bvugt (sign_extend[6] ?e239) ?e44))
+(flet ($e542 (bvugt (sign_extend[6] ?e220) ?e36))
+(flet ($e543 (= ?e41 ?e127))
+(flet ($e544 (bvsle ?e139 ?e127))
+(flet ($e545 (bvsle ?e28 (sign_extend[4] ?e129)))
+(flet ($e546 (bvugt ?e106 ?e18))
+(flet ($e547 (= ?e224 ?e96))
+(flet ($e548 (bvugt ?e237 (zero_extend[7] ?e223)))
+(flet ($e549 (bvslt (zero_extend[6] ?e202) ?e204))
+(flet ($e550 (distinct (sign_extend[1] ?e79) ?e78))
+(flet ($e551 (bvsgt (zero_extend[7] ?e160) ?e78))
+(flet ($e552 (bvsge (sign_extend[7] ?e137) ?e232))
+(flet ($e553 (bvsge (zero_extend[7] ?e193) ?e128))
+(flet ($e554 (bvsge (zero_extend[4] ?e76) ?e22))
+(flet ($e555 (bvsgt (zero_extend[6] ?e96) ?e150))
+(flet ($e556 (bvugt ?e204 (zero_extend[2] ?e89)))
+(flet ($e557 (bvule (zero_extend[6] ?e43) ?e149))
+(flet ($e558 (bvuge ?e59 (zero_extend[4] ?e100)))
+(flet ($e559 (distinct ?e37 ?e37))
+(flet ($e560 (distinct ?e43 ?e233))
+(flet ($e561 (bvsgt ?e220 ?e221))
+(flet ($e562 (bvsge (zero_extend[6] ?e125) ?e126))
+(flet ($e563 (bvslt ?e117 (sign_extend[6] ?e51)))
+(flet ($e564 (bvsge (sign_extend[2] ?e89) ?e149))
+(flet ($e565 (bvsle ?e93 ?e35))
+(flet ($e566 (bvugt ?e127 (zero_extend[6] ?e60)))
+(flet ($e567 (bvule ?e20 (sign_extend[6] ?e218)))
+(flet ($e568 (bvugt (zero_extend[4] ?e100) ?e94))
+(flet ($e569 (bvslt ?e39 (sign_extend[6] ?e73)))
+(flet ($e570 (distinct ?e136 (sign_extend[6] ?e60)))
+(flet ($e571 (distinct ?e230 ?e40))
+(flet ($e572 (bvslt ?e111 (sign_extend[1] ?e93)))
+(flet ($e573 (bvuge v2 ?e54))
+(flet ($e574 (bvsle ?e44 (sign_extend[6] ?e97)))
+(flet ($e575 (distinct ?e226 ?e250))
+(flet ($e576 (bvsgt ?e227 (sign_extend[1] ?e81)))
+(flet ($e577 (bvsge (sign_extend[2] ?e123) ?e17))
+(flet ($e578 (bvsle ?e71 ?e135))
+(flet ($e579 (distinct ?e161 ?e159))
+(flet ($e580 (bvsge (zero_extend[7] ?e226) ?e128))
+(flet ($e581 (= (zero_extend[2] ?e56) ?e19))
+(flet ($e582 (bvuge (zero_extend[6] ?e86) ?e196))
+(flet ($e583 (bvugt (sign_extend[6] ?e181) ?e49))
+(flet ($e584 (bvugt (sign_extend[4] ?e167) ?e141))
+(flet ($e585 (bvule ?e177 ?e175))
+(flet ($e586 (bvsgt (sign_extend[6] ?e155) ?e188))
+(flet ($e587 (bvult (sign_extend[1] ?e72) ?e155))
+(flet ($e588 (distinct ?e114 ?e41))
+(flet ($e589 (bvule ?e153 (sign_extend[6] ?e178)))
+(flet ($e590 (distinct ?e63 ?e54))
+(flet ($e591 (bvslt ?e237 (sign_extend[1] ?e115)))
+(flet ($e592 (bvugt (zero_extend[7] ?e217) ?e116))
+(flet ($e593 (bvule ?e176 ?e21))
+(flet ($e594 (bvugt ?e232 (sign_extend[1] ?e36)))
+(flet ($e595 (= ?e169 (zero_extend[6] ?e226)))
+(flet ($e596 (distinct ?e113 (sign_extend[6] ?e234)))
+(flet ($e597 (bvugt ?e146 ?e39))
+(flet ($e598 (= ?e212 (sign_extend[1] ?e109)))
+(flet ($e599 (distinct ?e173 ?e129))
+(flet ($e600 (distinct ?e175 ?e97))
+(flet ($e601 (bvule ?e107 ?e29))
+(flet ($e602 (bvugt ?e30 (sign_extend[3] ?e93)))
+(flet ($e603 (distinct ?e67 (sign_extend[6] ?e187)))
+(flet ($e604 (bvsle ?e203 ?e249))
+(flet ($e605 (bvult ?e228 ?e119))
+(flet ($e606 (bvugt ?e132 v1))
+(flet ($e607 (bvsge (zero_extend[6] ?e218) ?e117))
+(flet ($e608 (bvsgt ?e227 (sign_extend[6] ?e228)))
+(flet ($e609 (bvuge (sign_extend[6] ?e206) ?e204))
+(flet ($e610 (distinct ?e10 ?e157))
+(flet ($e611 (= ?e221 ?e86))
+(flet ($e612 (bvslt ?e92 ?e245))
+(flet ($e613 (bvule ?e29 (sign_extend[6] ?e180)))
+(flet ($e614 (bvsle ?e45 ?e93))
+(flet ($e615 (= ?e150 (sign_extend[2] ?e22)))
+(flet ($e616 (bvult ?e76 ?e180))
+(flet ($e617 (bvult ?e20 (sign_extend[6] ?e171)))
+(flet ($e618 (bvule ?e141 ?e146))
+(flet ($e619 (= (zero_extend[1] ?e227) ?e242))
+(flet ($e620 (distinct ?e213 ?e114))
+(flet ($e621 (distinct ?e216 (sign_extend[6] ?e160)))
+(flet ($e622 (bvsle ?e9 ?e121))
+(flet ($e623 (distinct (zero_extend[6] ?e229) ?e95))
+(flet ($e624 (bvslt (sign_extend[1] ?e135) ?e78))
+(flet ($e625 (bvslt v3 ?e56))
+(flet ($e626 (bvslt (sign_extend[4] ?e123) ?e89))
+(flet ($e627 (bvule ?e183 ?e92))
+(flet ($e628 (bvslt (zero_extend[4] ?e112) ?e91))
+(flet ($e629 (bvult (sign_extend[6] ?e53) ?e117))
+(flet ($e630 (bvsgt ?e58 ?e249))
+(flet ($e631 (= ?e169 (sign_extend[6] ?e87)))
+(flet ($e632 (= ?e19 ?e103))
+(flet ($e633 (bvsgt ?e82 (zero_extend[2] ?e86)))
+(flet ($e634 (bvslt ?e198 (sign_extend[4] ?e15)))
+(flet ($e635 (bvsle ?e225 ?e193))
+(flet ($e636 (bvsge (sign_extend[2] ?e27) ?e149))
+(flet ($e637 (bvsle ?e91 (sign_extend[4] ?e194)))
+(flet ($e638 (bvugt (sign_extend[6] ?e14) ?e140))
+(flet ($e639 (bvsle ?e132 ?e118))
+(flet ($e640 (bvugt ?e82 (zero_extend[2] ?e85)))
+(flet ($e641 (bvuge (zero_extend[2] ?e163) ?e169))
+(flet ($e642 (bvsge ?e21 (sign_extend[2] ?e32)))
+(flet ($e643 (bvsle ?e232 (sign_extend[1] ?e20)))
+(flet ($e644 (bvslt ?e141 (zero_extend[4] ?e82)))
+(flet ($e645 (bvsle ?e215 (zero_extend[1] ?e134)))
+(flet ($e646 (bvsge ?e130 ?e152))
+(flet ($e647 (bvugt (sign_extend[7] ?e129) ?e98))
+(flet ($e648 (bvsgt ?e59 (zero_extend[6] ?e148)))
+(flet ($e649 (= (zero_extend[7] ?e253) ?e128))
+(flet ($e650 (distinct ?e231 (zero_extend[6] ?e193)))
+(flet ($e651 (bvsle ?e180 ?e31))
+(flet ($e652 (bvuge ?e220 ?e193))
+(flet ($e653 (= ?e110 ?e227))
+(flet ($e654 (bvuge ?e162 ?e186))
+(flet ($e655 (= ?e80 (zero_extend[4] ?e201)))
+(flet ($e656 (= ?e239 ?e220))
+(flet ($e657 (distinct ?e58 ?e233))
+(flet ($e658 (bvsge ?e35 ?e14))
+(flet ($e659 (bvsgt ?e99 (sign_extend[2] ?e159)))
+(flet ($e660 (bvsle (zero_extend[6] ?e43) ?e251))
+(flet ($e661 (= ?e132 ?e45))
+(flet ($e662 (bvugt (zero_extend[6] ?e96) v2))
+(flet ($e663 (bvsgt ?e207 ?e77))
+(flet ($e664 (bvslt (zero_extend[6] ?e109) ?e54))
+(flet ($e665 (bvugt (sign_extend[6] ?e14) ?e136))
+(flet ($e666 (bvsle (sign_extend[6] ?e33) ?e74))
+(flet ($e667 (bvuge (sign_extend[6] ?e64) ?e54))
+(flet ($e668 (bvult (sign_extend[4] ?e172) ?e56))
+(flet ($e669 (bvslt (sign_extend[6] ?e234) ?e149))
+(flet ($e670 (bvule ?e75 ?e250))
+(flet ($e671 (bvugt ?e101 ?e231))
+(flet ($e672 (bvslt (sign_extend[7] ?e186) ?e143))
+(flet ($e673 (= ?e186 ?e187))
+(flet ($e674 (bvsgt ?e106 ?e12))
+(flet ($e675 (bvugt ?e62 (zero_extend[7] ?e166)))
+(flet ($e676 (bvuge ?e210 ?e216))
+(flet ($e677 (bvult ?e144 ?e64))
+(flet ($e678 (distinct ?e240 (sign_extend[6] ?e23)))
+(flet ($e679 (bvsge ?e237 (zero_extend[7] ?e7)))
+(flet ($e680 (distinct (zero_extend[5] ?e134) ?e168))
+(flet ($e681 (= (sign_extend[6] ?e241) ?e235))
+(flet ($e682 (bvslt ?e45 ?e43))
+(flet ($e683 (bvuge ?e193 ?e225))
+(flet ($e684 (bvslt (zero_extend[6] ?e207) ?e174))
+(flet ($e685 (bvugt (sign_extend[6] ?e42) ?e216))
+(flet ($e686 (distinct (sign_extend[6] ?e225) ?e145))
+(flet ($e687 (bvugt ?e144 ?e60))
+(flet ($e688 (bvslt ?e199 ?e10))
+(flet ($e689 (bvsgt ?e81 (zero_extend[5] ?e192)))
+(flet ($e690 (bvsge ?e213 (zero_extend[6] ?e8)))
+(flet ($e691 (= ?e98 ?e78))
+(flet ($e692 (bvuge ?e138 ?e130))
+(flet ($e693 (bvule ?e97 ?e239))
+(flet ($e694 (bvslt (sign_extend[1] ?e190) ?e44))
+(flet ($e695 (bvugt ?e62 (sign_extend[7] ?e193)))
+(flet ($e696 (bvule ?e167 (zero_extend[2] ?e230)))
+(flet ($e697 (bvsge ?e179 ?e69))
+(flet ($e698 (distinct ?e74 ?e84))
+(flet ($e699 (bvugt ?e227 (sign_extend[6] ?e119)))
+(flet ($e700 (= ?e111 (zero_extend[1] ?e85)))
+(flet ($e701 (= ?e133 ?e35))
+(flet ($e702 (bvult ?e217 ?e226))
+(flet ($e703 (bvslt ?e70 ?e160))
+(flet ($e704 (bvslt ?e127 ?e49))
+(flet ($e705 (bvsge ?e116 (zero_extend[2] ?e168)))
+(flet ($e706 (= ?e193 ?e10))
+(flet ($e707 (bvugt ?e216 (zero_extend[6] ?e65)))
+(flet ($e708 (bvugt ?e80 (sign_extend[4] ?e250)))
+(flet ($e709 (bvsle ?e108 (sign_extend[6] ?e55)))
+(flet ($e710 (= ?e13 (zero_extend[4] ?e217)))
+(flet ($e711 (bvugt ?e234 ?e58))
+(flet ($e712 (= ?e127 ?e49))
+(flet ($e713 (bvugt ?e147 (sign_extend[6] ?e83)))
+(flet ($e714 (distinct ?e4 (sign_extend[3] ?e245)))
+(flet ($e715 (bvslt (sign_extend[4] ?e82) ?e149))
+(flet ($e716 (bvult (sign_extend[2] ?e6) ?e240))
+(flet ($e717 (bvsgt ?e128 ?e78))
+(flet ($e718 (bvsge ?e189 (sign_extend[6] ?e134)))
+(flet ($e719 (bvugt ?e14 ?e239))
+(flet ($e720 (bvsgt (zero_extend[5] ?e212) ?e29))
+(flet ($e721 (bvsgt (zero_extend[6] ?e203) ?e106))
+(flet ($e722 (bvsle (sign_extend[6] ?e225) ?e213))
+(flet ($e723 (bvuge (zero_extend[6] ?e171) ?e117))
+(flet ($e724 (bvsge ?e124 ?e251))
+(flet ($e725 (= ?e140 ?e231))
+(flet ($e726 (bvsge ?e89 (zero_extend[4] ?e183)))
+(flet ($e727 (= (sign_extend[4] ?e171) ?e22))
+(flet ($e728 (= ?e94 (zero_extend[2] ?e80)))
+(flet ($e729 (bvsle (zero_extend[6] ?e175) ?e240))
+(flet ($e730 (bvult ?e13 (zero_extend[4] ?e191)))
+(flet ($e731 (bvsgt (sign_extend[2] ?e162) ?e185))
+(flet ($e732 (bvsle (sign_extend[6] ?e250) ?e213))
+(flet ($e733 (bvult ?e53 ?e200))
+(flet ($e734 (bvsle (zero_extend[2] ?e28) ?e101))
+(flet ($e735 (bvslt ?e175 ?e53))
+(flet ($e736 (bvult ?e120 ?e234))
+(flet ($e737 (bvuge ?e116 (sign_extend[7] ?e253)))
+(flet ($e738 (bvsgt ?e116 (sign_extend[7] ?e83)))
+(flet ($e739 (bvugt ?e76 ?e31))
+(flet ($e740 (bvugt (sign_extend[1] ?e193) ?e212))
+(flet ($e741 (bvult (sign_extend[5] ?e111) ?e251))
+(flet ($e742 (bvult (zero_extend[6] ?e191) ?e184))
+(flet ($e743 (= ?e235 (zero_extend[6] ?e156)))
+(flet ($e744 (distinct ?e178 ?e86))
+(flet ($e745 (bvsgt ?e252 (sign_extend[6] ?e77)))
+(flet ($e746 (bvule ?e122 ?e15))
+(flet ($e747 (bvslt ?e21 (sign_extend[6] ?e207)))
+(flet ($e748 (bvult (sign_extend[2] ?e93) ?e82))
+(flet ($e749 (distinct ?e90 ?e115))
+(flet ($e750 (bvugt ?e243 (sign_extend[2] ?e28)))
+(flet ($e751 (bvsgt ?e146 ?e71))
+(flet ($e752 (bvule ?e106 (sign_extend[6] ?e241)))
+(flet ($e753 (distinct ?e88 (sign_extend[4] ?e96)))
+(flet ($e754 (bvsle ?e23 ?e180))
+(flet ($e755 (bvule ?e27 (sign_extend[4] ?e123)))
+(flet ($e756 (= (zero_extend[7] ?e229) ?e61))
+(flet ($e757 (bvuge ?e210 (sign_extend[5] ?e212)))
+(flet ($e758 (bvsge ?e180 ?e96))
+(flet ($e759 (bvsle ?e247 (zero_extend[6] ?e31)))
+(flet ($e760 (bvsle (zero_extend[5] ?e16) ?e168))
+(flet ($e761 (bvsgt ?e138 ?e200))
+(flet ($e762 (bvsgt ?e239 ?e209))
+(flet ($e763 (bvslt ?e197 ?e197))
+(flet ($e764 (bvugt ?e34 ?e29))
+(flet ($e765 (= ?e26 ?e217))
+(flet ($e766 (bvule (zero_extend[6] ?e221) ?e25))
+(flet ($e767 (bvsge ?e189 (zero_extend[5] ?e215)))
+(flet ($e768 (bvult ?e78 (zero_extend[1] ?e67)))
+(flet ($e769 (bvuge (zero_extend[5] ?e215) ?e240))
+(flet ($e770 (= (sign_extend[6] ?e133) ?e235))
+(flet ($e771 (bvsgt ?e27 (zero_extend[4] ?e253)))
+(flet ($e772 (bvsgt ?e18 ?e248))
+(flet ($e773 (bvult ?e78 (sign_extend[7] ?e200)))
+(flet ($e774 (bvult (zero_extend[6] ?e134) ?e251))
+(flet ($e775 (bvule ?e48 (sign_extend[7] ?e68)))
+(flet ($e776 (bvugt ?e6 (zero_extend[4] ?e191)))
+(flet ($e777 (bvult ?e89 (sign_extend[4] ?e162)))
+(flet ($e778 (bvsle ?e39 (sign_extend[6] ?e120)))
+(flet ($e779 (bvule ?e106 (zero_extend[6] ?e194)))
+(flet ($e780 (distinct ?e101 ?e50))
+(flet ($e781 (bvslt ?e91 (sign_extend[4] ?e92)))
+(flet ($e782 (distinct ?e96 ?e16))
+(flet ($e783 (bvugt ?e159 ?e253))
+(flet ($e784 (bvult ?e218 ?e142))
+(flet ($e785 (= (zero_extend[6] ?e133) ?e115))
+(flet ($e786 (bvsgt ?e131 (zero_extend[7] ?e191)))
+(flet ($e787 (bvugt ?e200 ?e87))
+(flet ($e788 (bvugt ?e139 (sign_extend[6] ?e144)))
+(flet ($e789 (bvsgt (zero_extend[1] ?e243) ?e195))
+(flet ($e790 (bvsge ?e71 (sign_extend[2] ?e6)))
+(flet ($e791 (bvule (sign_extend[5] ?e72) ?e168))
+(flet ($e792 (bvsgt ?e21 (sign_extend[6] ?e43)))
+(flet ($e793 (= (zero_extend[1] ?e168) ?e136))
+(flet ($e794 (bvsgt ?e113 ?e153))
+(flet ($e795 (bvult (sign_extend[6] ?e233) ?e251))
+(flet ($e796 (bvugt ?e124 (zero_extend[6] ?e178)))
+(flet ($e797 (distinct ?e242 (zero_extend[1] ?e127)))
+(flet ($e798 (= (sign_extend[4] ?e43) ?e91))
+(flet ($e799 (bvule ?e241 ?e119))
+(flet ($e800 (distinct ?e127 ?e101))
+(flet ($e801 (= (sign_extend[6] ?e197) ?e20))
+(flet ($e802 (bvsgt (sign_extend[6] ?e244) ?e236))
+(flet ($e803 (= ?e61 (zero_extend[1] ?e107)))
+(flet ($e804 (bvsgt ?e227 (sign_extend[3] ?e4)))
+(flet ($e805 (bvuge (sign_extend[1] ?e172) ?e47))
+(flet ($e806 (bvuge ?e201 ?e83))
+(flet ($e807 (bvsge ?e227 ?e196))
+(flet ($e808 (bvsle ?e215 (zero_extend[1] ?e171)))
+(flet ($e809 (bvsgt ?e247 (zero_extend[4] ?e17)))
+(flet ($e810 (bvult ?e62 (sign_extend[7] ?e172)))
+(flet ($e811 (= ?e38 ?e87))
+(flet ($e812 (= ?e58 ?e144))
+(flet ($e813 (bvuge ?e234 ?e40))
+(flet ($e814 (bvsge ?e229 ?e249))
+(flet ($e815 (bvsge ?e134 ?e221))
+(flet ($e816 (bvugt (zero_extend[6] ?e38) ?e34))
+(flet ($e817 (bvsle ?e42 ?e64))
+(flet ($e818 (bvule ?e174 ?e243))
+(flet ($e819 (bvugt ?e115 (sign_extend[6] ?e241)))
+(flet ($e820 (bvslt (zero_extend[2] ?e28) ?e227))
+(flet ($e821 (bvult (sign_extend[6] ?e159) ?e29))
+(flet ($e822 (bvuge ?e62 (sign_extend[7] ?e186)))
+(flet ($e823 (bvult ?e224 ?e253))
+(flet ($e824 (bvule ?e170 ?e55))
+(flet ($e825 (bvsge ?e235 ?e121))
+(flet ($e826 (bvsgt (zero_extend[6] ?e31) ?e126))
+(flet ($e827 (bvslt ?e51 ?e183))
+(flet ($e828 (bvult (zero_extend[4] ?e219) ?e13))
+(flet ($e829 (bvsge ?e108 (zero_extend[6] ?e226)))
+(flet ($e830 (bvslt ?e104 ?e252))
+(flet ($e831 (bvsgt (zero_extend[2] ?e23) ?e5))
+(flet ($e832 (= ?e171 v1))
+(flet ($e833 (bvsgt (sign_extend[6] v1) ?e184))
+(flet ($e834 (distinct ?e192 ?e166))
+(flet ($e835 (distinct ?e110 (zero_extend[6] ?e172)))
+(flet ($e836 (bvugt ?e182 ?e228))
+(flet ($e837 (bvuge ?e28 (sign_extend[4] ?e187)))
+(flet ($e838 (bvsle ?e236 ?e135))
+(flet ($e839 (bvule ?e71 (sign_extend[4] ?e185)))
+(flet ($e840 (bvslt ?e82 (zero_extend[2] ?e148)))
+(flet ($e841 (= (sign_extend[6] ?e249) ?e54))
+(flet ($e842 (bvugt ?e209 ?e93))
+(flet ($e843 (bvuge ?e158 ?e177))
+(flet ($e844 (bvsle (sign_extend[4] ?e96) ?e27))
+(flet ($e845 (distinct ?e219 ?e214))
+(flet ($e846 (bvsge ?e141 (sign_extend[6] ?e161)))
+(flet ($e847 (bvugt ?e62 (zero_extend[7] ?e151)))
+(flet ($e848 (bvule ?e146 (sign_extend[6] ?e55)))
+(flet ($e849 (bvult ?e67 (sign_extend[6] ?e171)))
+(flet ($e850 (bvsle ?e60 ?e209))
+(flet ($e851 (bvugt ?e82 (zero_extend[2] ?e224)))
+(flet ($e852 (bvsgt ?e80 ?e11))
+(flet ($e853 (bvule (zero_extend[6] ?e193) ?e213))
+(flet ($e854 (bvslt ?e158 ?e154))
+(flet ($e855 (distinct (sign_extend[4] ?e167) ?e113))
+(flet ($e856 (bvsle ?e235 (zero_extend[6] ?e160)))
+(flet ($e857 (bvsgt ?e143 (zero_extend[1] ?e139)))
+(flet ($e858 (bvult ?e227 ?e210))
+(flet ($e859 (bvule ?e135 ?e216))
+(flet ($e860 (bvsge (sign_extend[1] ?e106) ?e48))
+(flet ($e861 (= ?e50 (sign_extend[6] ?e137)))
+(flet ($e862 (distinct ?e150 (zero_extend[6] ?e42)))
+(flet ($e863 (bvsge ?e124 (zero_extend[6] ?e23)))
+(flet ($e864 (= ?e194 ?e161))
+(flet ($e865 (bvuge ?e24 (sign_extend[6] ?e214)))
+(flet ($e866 (bvsle (sign_extend[6] ?e92) ?e179))
+(flet ($e867 (bvule ?e141 (sign_extend[6] ?e16)))
+(flet ($e868 (bvule ?e165 (zero_extend[1] ?e199)))
+(flet ($e869 (bvsle (zero_extend[6] ?e105) ?e19))
+(flet ($e870 (bvult ?e233 ?e166))
+(flet ($e871 (bvuge ?e10 ?e183))
+(flet ($e872 (distinct ?e228 ?e206))
+(flet ($e873 (bvult ?e184 (sign_extend[6] ?e33)))
+(flet ($e874 (bvsgt ?e108 (zero_extend[6] ?e51)))
+(flet ($e875 (bvsge ?e53 ?e96))
+(flet ($e876 (distinct (sign_extend[6] v1) ?e71))
+(flet ($e877 (bvslt ?e64 ?e105))
+(flet ($e878 (bvsgt ?e213 (sign_extend[2] ?e32)))
+(flet ($e879 (bvugt (sign_extend[6] v1) ?e69))
+(flet ($e880 (distinct ?e250 ?e225))
+(flet ($e881 (bvsle ?e92 ?e23))
+(flet ($e882 (= (sign_extend[4] ?e161) v3))
+(flet ($e883 (bvslt ?e46 ?e89))
+(flet ($e884 (bvuge (sign_extend[6] ?e23) ?e54))
+(flet ($e885 (bvsle ?e55 ?e60))
+(flet ($e886 (bvsgt ?e197 ?e102))
+(flet ($e887 (bvsle ?e101 ?e41))
+(flet ($e888 (bvule ?e41 (zero_extend[6] ?e138)))
+(flet ($e889 (= (zero_extend[1] ?e205) ?e242))
+(flet ($e890 (distinct ?e24 ?e246))
+(flet ($e891 (bvsge (zero_extend[7] ?e92) ?e131))
+(flet ($e892 (bvule ?e9 (sign_extend[6] ?e109)))
+(flet ($e893 (bvsle (sign_extend[6] ?e182) ?e108))
+(flet ($e894 (bvsge ?e186 ?e166))
+(flet ($e895 (bvuge ?e146 ?e71))
+(flet ($e896 (bvsge ?e121 (sign_extend[6] v1)))
+(flet ($e897 (bvslt (zero_extend[1] ?e69) ?e61))
+(flet ($e898 (bvugt (sign_extend[6] ?e119) ?e44))
+(flet ($e899 (bvsgt (zero_extend[6] ?e154) ?e216))
+(flet ($e900 (bvugt ?e156 ?e202))
+(flet ($e901 (bvugt ?e251 (zero_extend[6] ?e151)))
+(flet ($e902 (bvule ?e235 (zero_extend[6] ?e187)))
+(flet ($e903 (bvslt ?e44 ?e84))
+(flet ($e904 (distinct ?e152 ?e10))
+(flet ($e905 (bvsge (sign_extend[6] ?e142) ?e204))
+(flet ($e906 (bvslt ?e54 (zero_extend[6] ?e16)))
+(flet ($e907 (bvule (zero_extend[2] ?e6) ?e67))
+(flet ($e908 (bvuge ?e43 ?e217))
+(flet ($e909 (bvsgt ?e91 (zero_extend[1] ?e30)))
+(flet ($e910 (bvule ?e167 (zero_extend[2] ?e55)))
+(flet ($e911 (= (zero_extend[2] ?e203) ?e82))
+(flet ($e912 (bvult ?e20 (zero_extend[6] ?e7)))
+(flet ($e913 (bvslt ?e195 (zero_extend[7] ?e42)))
+(flet ($e914 (bvule ?e123 ?e37))
+(flet ($e915 (bvule ?e188 (zero_extend[7] ?e214)))
+(flet ($e916 (bvsgt ?e30 (zero_extend[3] ?e175)))
+(flet ($e917 (= (zero_extend[4] ?e142) ?e88))
+(flet ($e918 (bvsle ?e232 (sign_extend[7] ?e228)))
+(flet ($e919 (distinct ?e136 (sign_extend[6] ?e132)))
+(flet ($e920 (bvuge ?e143 (sign_extend[7] ?e122)))
+(flet ($e921 (bvslt ?e17 (zero_extend[2] ?e42)))
+(flet ($e922 (bvslt ?e116 (zero_extend[7] ?e73)))
+(flet ($e923 (bvsge ?e127 ?e227))
+(flet ($e924 (bvslt (zero_extend[6] ?e180) v0))
+(flet ($e925 (distinct ?e47 (zero_extend[1] ?e226)))
+(flet ($e926 (= ?e69 (zero_extend[6] ?e250)))
+(flet ($e927 (bvult ?e247 ?e29))
+(flet ($e928 (bvuge (sign_extend[5] ?e217) ?e81))
+(flet ($e929 (distinct ?e48 (zero_extend[1] ?e141)))
+(flet ($e930 (bvugt ?e95 (zero_extend[6] ?e217)))
+(flet ($e931 (bvsle ?e246 (zero_extend[6] ?e40)))
+(flet ($e932 (bvslt (sign_extend[2] ?e82) ?e91))
+(flet ($e933 (bvsge ?e238 (sign_extend[2] ?e191)))
+(flet ($e934 (bvuge ?e252 (sign_extend[6] ?e193)))
+(flet ($e935 (bvugt (sign_extend[6] ?e14) ?e216))
+(flet ($e936 (bvsle ?e15 ?e206))
+(flet ($e937 (distinct (sign_extend[1] v2) ?e61))
+(flet ($e938 (bvslt (zero_extend[1] ?e19) ?e232))
+(flet ($e939 (= ?e98 (sign_extend[4] ?e30)))
+(flet ($e940 (bvsgt ?e71 (zero_extend[1] ?e168)))
+(flet ($e941 (bvult (sign_extend[5] ?e155) ?e71))
+(flet ($e942 (bvsle (sign_extend[7] ?e60) ?e232))
+(flet ($e943 (bvsle ?e139 ?e59))
+(flet ($e944 (distinct (sign_extend[6] ?e86) ?e74))
+(flet ($e945 (distinct (sign_extend[6] ?e209) v2))
+(flet ($e946 (bvule (zero_extend[6] ?e122) ?e101))
+(flet ($e947 (bvsgt ?e124 (zero_extend[6] ?e10)))
+(flet ($e948 (bvult ?e48 (zero_extend[3] ?e198)))
+(flet ($e949 (bvule ?e57 (zero_extend[1] ?e56)))
+(flet ($e950 (bvsgt ?e48 (zero_extend[7] ?e250)))
+(flet ($e951 (bvsgt ?e153 (zero_extend[6] ?e162)))
+(flet ($e952 (bvsle ?e138 ?e193))
+(flet ($e953 (bvsgt ?e235 ?e63))
+(flet ($e954 (bvule ?e93 ?e45))
+(flet ($e955 (bvule ?e32 (sign_extend[4] ?e220)))
+(flet ($e956 (bvslt ?e227 ?e149))
+(flet ($e957 (bvule (zero_extend[6] ?e64) ?e252))
+(flet ($e958 (= ?e7 ?e222))
+(flet ($e959 (= ?e118 ?e125))
+(flet ($e960 (bvuge ?e164 ?e157))
+(flet ($e961 (bvsle ?e227 ?e41))
+(flet ($e962 (bvugt ?e188 (zero_extend[7] ?e75)))
+(flet ($e963 (bvugt ?e130 ?e164))
+(flet ($e964 (bvuge ?e244 ?e194))
+(flet ($e965 (bvslt (zero_extend[6] ?e202) ?e189))
+(flet ($e966 (bvslt ?e229 ?e53))
+(flet ($e967 (bvslt ?e185 (sign_extend[2] ?e86)))
+(flet ($e968 (bvuge ?e231 ?e39))
+(flet ($e969 (= ?e26 ?e134))
+(flet ($e970 (bvule (sign_extend[4] ?e211) ?e188))
+(flet ($e971 (bvuge (sign_extend[2] ?e56) ?e114))
+(flet ($e972 (distinct ?e170 ?e209))
+(flet ($e973 (bvule ?e61 (sign_extend[1] ?e110)))
+(flet ($e974 (bvsle ?e218 ?e239))
+(flet ($e975 (bvuge ?e158 ?e37))
+(flet ($e976 (bvsgt ?e206 ?e148))
+(flet ($e977 (distinct ?e18 (zero_extend[6] ?e26)))
+(flet ($e978 (distinct ?e117 (sign_extend[6] ?e239)))
+(flet ($e979 (bvuge ?e82 (zero_extend[2] ?e197)))
+(flet ($e980 (bvsle ?e55 ?e118))
+(flet ($e981 (= ?e181 ?e152))
+(flet ($e982 (bvugt (sign_extend[2] ?e151) ?e99))
+(flet ($e983 (bvult (zero_extend[3] ?e202) ?e4))
+(flet ($e984 (bvugt ?e224 ?e55))
+(flet ($e985 (distinct (sign_extend[6] ?e97) ?e71))
+(flet ($e986 (bvsge ?e108 ?e106))
+(flet ($e987 (bvsle ?e59 (zero_extend[6] ?e222)))
+(flet ($e988 (distinct ?e138 ?e148))
+(flet ($e989 (bvuge (zero_extend[5] ?e155) ?e174))
+(flet ($e990 (bvsle ?e48 (sign_extend[7] ?e175)))
+(flet ($e991 (bvult (zero_extend[2] ?e125) ?e82))
+(flet ($e992 (bvsle ?e141 (zero_extend[6] ?e234)))
+(flet ($e993 (bvsle ?e43 ?e178))
+(flet ($e994 (distinct (sign_extend[7] ?e118) ?e98))
+(flet ($e995 (bvugt ?e9 (sign_extend[1] ?e190)))
+(flet ($e996 (bvult ?e20 ?e104))
+(flet ($e997 (bvsgt (sign_extend[6] ?e60) ?e84))
+(flet ($e998 (bvsgt (zero_extend[6] ?e223) ?e79))
+(flet ($e999 (bvuge ?e41 (sign_extend[2] ?e11)))
+(flet ($e1000 (distinct (zero_extend[6] ?e183) ?e127))
+(flet ($e1001 (bvule ?e135 ?e205))
+(flet ($e1002 (bvule ?e129 ?e142))
+(flet ($e1003 (bvult ?e97 ?e209))
+(flet ($e1004 (distinct (sign_extend[6] ?e199) ?e196))
+(flet ($e1005 (bvsge (sign_extend[1] ?e166) ?e111))
+(flet ($e1006 (= ?e198 (zero_extend[4] ?e134)))
+(flet ($e1007 (bvult (zero_extend[6] ?e129) ?e36))
+(flet ($e1008 (bvsge ?e241 ?e202))
+(flet ($e1009 (bvuge (sign_extend[6] ?e186) ?e106))
+(flet ($e1010 (bvslt ?e118 ?e26))
+(flet ($e1011 (bvult ?e135 ?e115))
+(flet ($e1012 (bvule ?e88 (zero_extend[4] ?e217)))
+(flet ($e1013 (bvsle ?e14 ?e137))
+(flet ($e1014 (distinct (zero_extend[6] ?e223) ?e71))
+(flet ($e1015 (bvsgt (sign_extend[6] ?e166) ?e196))
+(flet ($e1016 (bvule (zero_extend[6] ?e224) ?e127))
+(flet ($e1017 (bvugt ?e21 v0))
+(flet ($e1018 (bvsgt ?e174 (sign_extend[6] ?e220)))
+(flet ($e1019 (bvsge ?e74 (zero_extend[6] ?e105)))
+(flet ($e1020 (bvsge ?e188 (sign_extend[7] ?e66)))
+(flet ($e1021 (bvuge (zero_extend[6] ?e191) ?e115))
+(flet ($e1022 (bvult v3 (zero_extend[4] ?e164)))
+(flet ($e1023 (= ?e225 ?e97))
+(flet ($e1024 (bvult ?e120 ?e224))
+(flet ($e1025 (bvugt (sign_extend[1] ?e236) ?e78))
+(flet ($e1026 (bvule (sign_extend[6] ?e7) ?e136))
+(flet ($e1027 (= ?e147 ?e127))
+(flet ($e1028 (distinct ?e169 (zero_extend[6] ?e85)))
+(flet ($e1029 (bvsle ?e113 (zero_extend[5] ?e165)))
+(flet ($e1030 (bvult (zero_extend[4] ?e185) ?e36))
+(flet ($e1031 (bvuge ?e69 ?e115))
+(flet ($e1032 (= ?e132 ?e233))
+(flet ($e1033 (bvugt ?e45 ?e201))
+(flet ($e1034 (bvult ?e16 ?e10))
+(flet ($e1035 (bvugt ?e175 ?e72))
+(flet ($e1036 (bvuge ?e19 (sign_extend[6] ?e16)))
+(flet ($e1037 (bvule ?e158 ?e173))
+(flet ($e1038 (bvuge (sign_extend[1] ?e93) ?e111))
+(flet ($e1039 (= ?e227 ?e41))
+(flet ($e1040 (bvugt ?e165 (zero_extend[1] ?e130)))
+(flet ($e1041 (bvuge (zero_extend[2] ?e53) ?e99))
+(flet ($e1042 (bvsgt ?e236 (zero_extend[6] ?e53)))
+(flet ($e1043 (bvsle ?e135 ?e110))
+(flet ($e1044 (distinct (sign_extend[2] ?e206) ?e185))
+(flet ($e1045 (bvsgt (sign_extend[6] ?e239) ?e9))
+(flet ($e1046 (bvslt ?e91 (zero_extend[4] ?e160)))
+(flet ($e1047 (bvule ?e171 ?e172))
+(flet ($e1048 (bvsle ?e102 ?e162))
+(flet ($e1049 (bvsle ?e116 (sign_extend[7] ?e10)))
+(flet ($e1050 (bvugt ?e27 (zero_extend[3] ?e165)))
+(flet ($e1051 (= ?e68 ?e214))
+(flet ($e1052 (bvule ?e106 ?e74))
+(flet ($e1053 (bvule ?e217 ?e175))
+(flet ($e1054 (= ?e231 (sign_extend[6] ?e118)))
+(flet ($e1055 (bvsge ?e143 (sign_extend[7] ?e102)))
+(flet ($e1056 (bvult (sign_extend[1] ?e158) ?e215))
+(flet ($e1057 (bvslt (zero_extend[6] ?e87) ?e136))
+(flet ($e1058 (distinct ?e110 ?e25))
+(flet ($e1059 (= ?e155 (sign_extend[1] ?e223)))
+(flet ($e1060 (bvsle ?e242 (zero_extend[7] ?e208)))
+(flet ($e1061 (bvsgt (zero_extend[7] ?e66) ?e128))
+(flet ($e1062 (bvsgt (sign_extend[7] ?e156) ?e48))
+(flet ($e1063 (bvule ?e36 (zero_extend[6] ?e42)))
+(flet ($e1064 (= ?e246 ?e59))
+(flet ($e1065 (bvugt ?e4 (sign_extend[3] ?e33)))
+(flet ($e1066 (bvult ?e26 ?e221))
+(flet ($e1067 (bvuge (sign_extend[6] ?e203) ?e216))
+(flet ($e1068 (bvsle ?e64 ?e244))
+(flet ($e1069 (bvsgt (zero_extend[2] ?e28) ?e49))
+(flet ($e1070 (bvult (sign_extend[6] ?e156) ?e145))
+(flet ($e1071 (bvule (sign_extend[4] ?e53) ?e28))
+(flet ($e1072 (bvsge ?e54 (zero_extend[6] ?e87)))
+(flet ($e1073 (bvslt ?e145 (sign_extend[6] ?e191)))
+(flet ($e1074 (= ?e62 (sign_extend[6] ?e212)))
+(flet ($e1075 (bvslt (sign_extend[4] ?e26) v3))
+(flet ($e1076 (bvsgt ?e136 ?e210))
+(flet ($e1077 (distinct ?e229 ?e68))
+(flet ($e1078 (bvsle (sign_extend[6] ?e249) ?e110))
+(flet ($e1079 (bvule (sign_extend[6] ?e177) ?e59))
+(flet ($e1080 (bvule ?e201 ?e183))
+(flet ($e1081 (bvuge ?e44 (zero_extend[6] ?e122)))
+(flet ($e1082 (bvsge (zero_extend[1] ?e81) ?e117))
+(flet ($e1083 (bvugt (zero_extend[5] ?e239) ?e57))
+(flet ($e1084 (distinct ?e101 (sign_extend[4] ?e5)))
+(flet ($e1085 (bvule (zero_extend[3] ?e212) ?e46))
+(flet ($e1086 (bvslt (sign_extend[6] ?e130) ?e231))
+(flet ($e1087 (bvsgt (zero_extend[6] ?e217) ?e50))
+(flet ($e1088 (bvslt ?e104 v0))
+(flet ($e1089 (bvugt ?e232 (zero_extend[7] ?e87)))
+(flet ($e1090 (bvsge ?e14 ?e132))
+(flet ($e1091 (bvugt (zero_extend[6] ?e214) ?e247))
+(flet ($e1092 (bvult ?e174 (zero_extend[6] ?e66)))
+(flet ($e1093 (bvslt ?e116 (zero_extend[7] ?e233)))
+(flet ($e1094 (bvsle ?e94 (zero_extend[6] ?e31)))
+(flet ($e1095 (bvsge (zero_extend[7] ?e86) ?e52))
+(flet ($e1096 (bvsge (zero_extend[1] v3) ?e168))
+(flet ($e1097 (bvult (zero_extend[6] ?e68) ?e136))
+(flet ($e1098 (bvslt ?e50 (zero_extend[4] ?e82)))
+(flet ($e1099 (bvsge ?e141 ?e126))
+(flet ($e1100 (bvsgt ?e227 (sign_extend[6] ?e180)))
+(flet ($e1101 (bvsle (sign_extend[6] ?e43) ?e12))
+(flet ($e1102 (bvslt ?e178 ?e148))
+(flet ($e1103 (bvuge ?e126 ?e176))
+(flet ($e1104 (distinct (sign_extend[5] ?e230) ?e190))
+(flet ($e1105 (bvslt ?e130 ?e162))
+(flet ($e1106 (bvsgt (sign_extend[7] ?e220) ?e131))
+(flet ($e1107 (bvule ?e205 (zero_extend[2] ?e27)))
+(flet ($e1108 (bvsgt (zero_extend[5] ?e212) ?e94))
+(flet ($e1109 (bvugt ?e198 ?e91))
+(flet ($e1110 (bvuge ?e135 (zero_extend[6] ?e234)))
+(flet ($e1111 (bvuge (zero_extend[3] ?e208) ?e30))
+(flet ($e1112 (bvult ?e179 ?e84))
+(flet ($e1113 (bvsgt (sign_extend[3] ?e28) ?e242))
+(flet ($e1114 (bvugt ?e123 ?e151))
+(flet ($e1115 (bvule ?e20 (zero_extend[6] ?e218)))
+(flet ($e1116 (bvult ?e35 ?e228))
+(flet ($e1117 (bvsgt ?e174 (zero_extend[6] ?e102)))
+(flet ($e1118 (bvule (zero_extend[4] ?e5) ?e24))
+(flet ($e1119 (bvsge ?e206 ?e102))
+(flet ($e1120 (bvsle (zero_extend[5] ?e187) ?e57))
+(flet ($e1121 (bvslt (sign_extend[3] ?e155) v3))
+(flet ($e1122 (bvugt (sign_extend[6] ?e142) ?e12))
+(flet ($e1123 (bvult ?e204 (zero_extend[4] ?e17)))
+(flet ($e1124 (bvule ?e14 ?e220))
+(flet ($e1125 (= ?e18 (zero_extend[6] ?e229)))
+(flet ($e1126 (bvsgt (zero_extend[5] ?e175) ?e168))
+(flet ($e1127 (bvugt ?e184 (zero_extend[6] ?e162)))
+(flet ($e1128 (bvslt (sign_extend[1] ?e166) ?e47))
+(flet ($e1129 (bvslt (zero_extend[6] ?e64) ?e54))
+(flet ($e1130 (bvslt ?e221 ?e186))
+(flet ($e1131 (bvugt (zero_extend[6] ?e133) ?e36))
+(flet ($e1132 (bvslt (sign_extend[6] ?e214) ?e12))
+(flet ($e1133 (bvuge ?e247 (sign_extend[6] ?e42)))
+(flet ($e1134 (bvslt (sign_extend[6] ?e75) v0))
+(flet ($e1135 (bvsgt (zero_extend[5] ?e154) ?e81))
+(flet ($e1136 (bvsle (sign_extend[4] ?e250) ?e46))
+(flet ($e1137 (bvult ?e164 ?e130))
+(flet ($e1138 (distinct (sign_extend[1] ?e57) ?e71))
+(flet ($e1139 (bvsle ?e18 ?e29))
+(flet ($e1140 (bvugt (sign_extend[1] ?e81) ?e140))
+(flet ($e1141 (bvsge ?e21 (sign_extend[6] ?e105)))
+(flet ($e1142 (bvsge (zero_extend[6] ?e138) ?e210))
+(flet ($e1143 (bvsgt ?e141 (zero_extend[2] ?e13)))
+(flet ($e1144 (bvsgt ?e179 (sign_extend[6] ?e102)))
+(flet ($e1145 (bvult (zero_extend[6] ?e51) ?e179))
+(flet ($e1146 (bvslt (sign_extend[6] ?e183) ?e9))
+(flet ($e1147 (bvuge (zero_extend[6] ?e187) ?e136))
+(flet ($e1148 (bvsgt (sign_extend[7] ?e77) ?e131))
+(flet ($e1149 (bvsge (sign_extend[6] ?e26) ?e41))
+(flet ($e1150 (bvuge (zero_extend[4] ?e219) ?e6))
+(flet ($e1151 (bvugt ?e70 ?e87))
+(flet ($e1152 (bvult ?e114 (zero_extend[6] ?e159)))
+(flet ($e1153 (bvsgt ?e216 (zero_extend[6] ?e158)))
+(flet ($e1154 (bvsge ?e41 (zero_extend[2] ?e13)))
+(flet ($e1155 (bvsge (zero_extend[6] ?e218) ?e141))
+(flet ($e1156 (bvsle ?e47 ?e212))
+(flet ($e1157 (bvule ?e104 (zero_extend[6] ?e134)))
+(flet ($e1158 (bvslt ?e33 ?e244))
+(flet ($e1159 (= (sign_extend[3] ?e212) ?e89))
+(flet ($e1160 (bvsgt (sign_extend[6] ?e162) ?e69))
+(flet ($e1161 (bvsge ?e90 (zero_extend[6] ?e234)))
+(flet ($e1162 (bvslt ?e81 (sign_extend[5] ?e245)))
+(flet ($e1163 (= ?e19 ?e25))
+(flet ($e1164 (bvuge ?e25 ?e153))
+(flet ($e1165 (= (zero_extend[6] ?e175) ?e145))
+(flet ($e1166 (bvule ?e139 (zero_extend[6] ?e178)))
+(flet ($e1167 (bvule ?e226 ?e120))
+(flet ($e1168 (bvsgt ?e5 (zero_extend[2] ?e245)))
+(flet ($e1169 (bvsgt ?e195 (zero_extend[7] ?e148)))
+(flet ($e1170 (= ?e114 (sign_extend[6] ?e175)))
+(flet ($e1171 (distinct ?e74 ?e141))
+(flet ($e1172 (bvuge (zero_extend[2] ?e93) ?e238))
+(flet ($e1173 (bvult ?e242 (sign_extend[7] ?e93)))
+(flet ($e1174 (bvslt (sign_extend[2] ?e183) ?e5))
+(flet ($e1175 (bvuge ?e175 ?e151))
+(flet ($e1176 (bvugt ?e32 (zero_extend[4] ?e201)))
+(flet ($e1177 (= ?e55 ?e221))
+(flet ($e1178 (bvugt ?e159 ?e197))
+(flet ($e1179 (bvsgt ?e164 ?e224))
+(flet ($e1180 (bvuge (zero_extend[2] ?e11) ?e49))
+(flet ($e1181 (bvult v0 (zero_extend[6] ?e183)))
+(flet ($e1182 (bvsgt (sign_extend[6] ?e45) ?e18))
+(flet ($e1183 (bvult (sign_extend[6] ?e250) ?e127))
+(flet ($e1184 (bvugt v0 (sign_extend[6] ?e230)))
+(flet ($e1185 (bvule ?e221 ?e96))
+(flet ($e1186 (bvult ?e97 ?e43))
+(flet ($e1187 (bvsge (sign_extend[2] ?e253) ?e185))
+(flet ($e1188 (bvult (sign_extend[6] ?e58) v0))
+(flet ($e1189 (= (zero_extend[6] ?e157) ?e54))
+(flet ($e1190 (bvslt ?e204 ?e74))
+(flet ($e1191 (bvuge ?e70 ?e166))
+(flet ($e1192 (distinct (sign_extend[6] ?e65) ?e140))
+(flet ($e1193 (= (sign_extend[5] ?e35) ?e81))
+(flet ($e1194 (bvule (zero_extend[2] ?e85) ?e17))
+(flet ($e1195 (distinct (sign_extend[1] ?e231) ?e52))
+(flet ($e1196 (bvuge ?e35 ?e8))
+(flet ($e1197 (bvsgt (sign_extend[4] ?e151) ?e91))
+(flet ($e1198 (bvugt ?e10 ?e159))
+(flet ($e1199 (bvult (zero_extend[6] ?e35) ?e21))
+(flet ($e1200 (bvsge ?e56 (sign_extend[4] ?e245)))
+(flet ($e1201 (= (sign_extend[6] ?e102) ?e174))
+(flet ($e1202 (bvule ?e83 ?e77))
+(flet ($e1203 (bvugt (zero_extend[6] ?e97) ?e34))
+(flet ($e1204 (bvsle ?e99 (sign_extend[2] ?e250)))
+(flet ($e1205 (bvslt ?e38 ?e33))
+(flet ($e1206 (distinct ?e242 (zero_extend[7] ?e119)))
+(flet ($e1207 (distinct ?e114 ?e216))
+(flet ($e1208 (bvsge (sign_extend[7] ?e87) ?e52))
+(flet ($e1209 (bvsge (zero_extend[6] ?e96) ?e94))
+(flet ($e1210 (distinct (zero_extend[6] ?e148) ?e25))
+(flet ($e1211 (bvuge ?e245 ?e60))
+(flet ($e1212 (bvslt (sign_extend[6] ?e86) ?e29))
+(flet ($e1213 (bvsle ?e197 ?e40))
+(flet ($e1214 (bvuge ?e32 (sign_extend[4] ?e160)))
+(flet ($e1215 (distinct (zero_extend[7] ?e154) ?e62))
+(flet ($e1216 (bvugt v3 (zero_extend[4] ?e31)))
+(flet ($e1217 (bvugt (sign_extend[2] ?e163) ?e9))
+(flet ($e1218 (not $e570))
+(flet ($e1219 (implies $e343 $e915))
+(flet ($e1220 (iff $e1109 $e928))
+(flet ($e1221 (xor $e318 $e1181))
+(flet ($e1222 (or $e386 $e386))
+(flet ($e1223 (if_then_else $e287 $e479 $e1132))
+(flet ($e1224 (iff $e546 $e1071))
+(flet ($e1225 (xor $e1138 $e640))
+(flet ($e1226 (or $e555 $e522))
+(flet ($e1227 (implies $e269 $e1033))
+(flet ($e1228 (if_then_else $e981 $e606 $e696))
+(flet ($e1229 (not $e796))
+(flet ($e1230 (implies $e332 $e1188))
+(flet ($e1231 (implies $e360 $e576))
+(flet ($e1232 (xor $e440 $e729))
+(flet ($e1233 (not $e540))
+(flet ($e1234 (implies $e1161 $e423))
+(flet ($e1235 (or $e309 $e963))
+(flet ($e1236 (iff $e357 $e602))
+(flet ($e1237 (and $e1108 $e516))
+(flet ($e1238 (implies $e453 $e842))
+(flet ($e1239 (not $e632))
+(flet ($e1240 (xor $e1115 $e272))
+(flet ($e1241 (not $e1153))
+(flet ($e1242 (or $e944 $e1035))
+(flet ($e1243 (iff $e740 $e398))
+(flet ($e1244 (iff $e674 $e652))
+(flet ($e1245 (and $e312 $e741))
+(flet ($e1246 (and $e584 $e1226))
+(flet ($e1247 (not $e715))
+(flet ($e1248 (not $e284))
+(flet ($e1249 (and $e1220 $e472))
+(flet ($e1250 (if_then_else $e388 $e1232 $e636))
+(flet ($e1251 (not $e411))
+(flet ($e1252 (if_then_else $e642 $e975 $e503))
+(flet ($e1253 (and $e1189 $e560))
+(flet ($e1254 (if_then_else $e1125 $e395 $e416))
+(flet ($e1255 (and $e1148 $e477))
+(flet ($e1256 (and $e840 $e488))
+(flet ($e1257 (or $e953 $e1074))
+(flet ($e1258 (xor $e268 $e389))
+(flet ($e1259 (xor $e1019 $e562))
+(flet ($e1260 (xor $e610 $e1195))
+(flet ($e1261 (if_then_else $e533 $e965 $e419))
+(flet ($e1262 (not $e1037))
+(flet ($e1263 (if_then_else $e1219 $e1257 $e649))
+(flet ($e1264 (xor $e836 $e368))
+(flet ($e1265 (implies $e539 $e713))
+(flet ($e1266 (xor $e364 $e710))
+(flet ($e1267 (xor $e671 $e255))
+(flet ($e1268 (and $e1081 $e1158))
+(flet ($e1269 (xor $e960 $e656))
+(flet ($e1270 (and $e918 $e1256))
+(flet ($e1271 (or $e1112 $e431))
+(flet ($e1272 (implies $e254 $e777))
+(flet ($e1273 (xor $e718 $e1116))
+(flet ($e1274 (not $e1000))
+(flet ($e1275 (not $e554))
+(flet ($e1276 (xor $e1090 $e509))
+(flet ($e1277 (implies $e393 $e1180))
+(flet ($e1278 (or $e443 $e489))
+(flet ($e1279 (iff $e280 $e820))
+(flet ($e1280 (not $e1207))
+(flet ($e1281 (not $e1171))
+(flet ($e1282 (if_then_else $e979 $e936 $e392))
+(flet ($e1283 (and $e525 $e899))
+(flet ($e1284 (xor $e947 $e959))
+(flet ($e1285 (xor $e1049 $e638))
+(flet ($e1286 (iff $e531 $e779))
+(flet ($e1287 (implies $e1229 $e912))
+(flet ($e1288 (implies $e946 $e987))
+(flet ($e1289 (if_then_else $e747 $e893 $e856))
+(flet ($e1290 (iff $e801 $e303))
+(flet ($e1291 (or $e1093 $e901))
+(flet ($e1292 (and $e728 $e646))
+(flet ($e1293 (and $e684 $e1099))
+(flet ($e1294 (or $e369 $e484))
+(flet ($e1295 (xor $e621 $e837))
+(flet ($e1296 (xor $e653 $e745))
+(flet ($e1297 (implies $e624 $e1296))
+(flet ($e1298 (xor $e1203 $e882))
+(flet ($e1299 (and $e1022 $e1103))
+(flet ($e1300 (implies $e306 $e524))
+(flet ($e1301 (xor $e1204 $e1227))
+(flet ($e1302 (or $e1216 $e978))
+(flet ($e1303 (implies $e1039 $e816))
+(flet ($e1304 (implies $e1102 $e698))
+(flet ($e1305 (xor $e607 $e945))
+(flet ($e1306 (iff $e1206 $e336))
+(flet ($e1307 (not $e1048))
+(flet ($e1308 (or $e574 $e1014))
+(flet ($e1309 (if_then_else $e870 $e276 $e857))
+(flet ($e1310 (if_then_else $e299 $e1185 $e697))
+(flet ($e1311 (or $e799 $e457))
+(flet ($e1312 (not $e1278))
+(flet ($e1313 (and $e1027 $e449))
+(flet ($e1314 (implies $e337 $e467))
+(flet ($e1315 (xor $e827 $e1058))
+(flet ($e1316 (xor $e1015 $e1222))
+(flet ($e1317 (not $e1178))
+(flet ($e1318 (or $e717 $e790))
+(flet ($e1319 (if_then_else $e473 $e871 $e474))
+(flet ($e1320 (and $e353 $e1133))
+(flet ($e1321 (not $e1287))
+(flet ($e1322 (iff $e1265 $e390))
+(flet ($e1323 (iff $e753 $e427))
+(flet ($e1324 (and $e365 $e660))
+(flet ($e1325 (if_then_else $e275 $e571 $e798))
+(flet ($e1326 (or $e345 $e803))
+(flet ($e1327 (and $e418 $e406))
+(flet ($e1328 (if_then_else $e1079 $e435 $e865))
+(flet ($e1329 (if_then_else $e608 $e685 $e704))
+(flet ($e1330 (xor $e1020 $e352))
+(flet ($e1331 (xor $e828 $e578))
+(flet ($e1332 (xor $e491 $e811))
+(flet ($e1333 (or $e669 $e680))
+(flet ($e1334 (iff $e1191 $e1053))
+(flet ($e1335 (not $e881))
+(flet ($e1336 (iff $e722 $e397))
+(flet ($e1337 (implies $e256 $e672))
+(flet ($e1338 (iff $e916 $e1248))
+(flet ($e1339 (if_then_else $e1122 $e1038 $e785))
+(flet ($e1340 (or $e1302 $e736))
+(flet ($e1341 (and $e512 $e1041))
+(flet ($e1342 (and $e1044 $e377))
+(flet ($e1343 (iff $e744 $e471))
+(flet ($e1344 (not $e1249))
+(flet ($e1345 (and $e405 $e616))
+(flet ($e1346 (iff $e767 $e756))
+(flet ($e1347 (and $e334 $e1241))
+(flet ($e1348 (not $e1131))
+(flet ($e1349 (implies $e623 $e339))
+(flet ($e1350 (xor $e310 $e812))
+(flet ($e1351 (or $e451 $e1314))
+(flet ($e1352 (if_then_else $e1082 $e986 $e600))
+(flet ($e1353 (iff $e663 $e1332))
+(flet ($e1354 (xor $e1344 $e895))
+(flet ($e1355 (iff $e705 $e629))
+(flet ($e1356 (implies $e1340 $e924))
+(flet ($e1357 (or $e1096 $e750))
+(flet ($e1358 (iff $e1231 $e743))
+(flet ($e1359 (iff $e317 $e805))
+(flet ($e1360 (iff $e782 $e373))
+(flet ($e1361 (not $e657))
+(flet ($e1362 (and $e541 $e586))
+(flet ($e1363 (implies $e1043 $e1312))
+(flet ($e1364 (not $e1061))
+(flet ($e1365 (if_then_else $e1168 $e590 $e791))
+(flet ($e1366 (not $e1127))
+(flet ($e1367 (xor $e935 $e943))
+(flet ($e1368 (if_then_else $e844 $e413 $e834))
+(flet ($e1369 (and $e458 $e402))
+(flet ($e1370 (if_then_else $e695 $e407 $e500))
+(flet ($e1371 (not $e832))
+(flet ($e1372 (and $e283 $e1085))
+(flet ($e1373 (or $e483 $e889))
+(flet ($e1374 (if_then_else $e641 $e581 $e1201))
+(flet ($e1375 (and $e282 $e880))
+(flet ($e1376 (xor $e650 $e1008))
+(flet ($e1377 (and $e1311 $e1253))
+(flet ($e1378 (if_then_else $e504 $e367 $e428))
+(flet ($e1379 (if_then_else $e1321 $e949 $e1199))
+(flet ($e1380 (xor $e1007 $e1259))
+(flet ($e1381 (iff $e1130 $e1349))
+(flet ($e1382 (if_then_else $e366 $e267 $e279))
+(flet ($e1383 (not $e838))
+(flet ($e1384 (not $e1087))
+(flet ($e1385 (or $e1380 $e922))
+(flet ($e1386 (implies $e618 $e1172))
+(flet ($e1387 (implies $e1306 $e1331))
+(flet ($e1388 (and $e1239 $e507))
+(flet ($e1389 (not $e931))
+(flet ($e1390 (or $e967 $e1075))
+(flet ($e1391 (or $e934 $e982))
+(flet ($e1392 (if_then_else $e725 $e1165 $e985))
+(flet ($e1393 (xor $e1145 $e464))
+(flet ($e1394 (if_then_else $e295 $e964 $e1293))
+(flet ($e1395 (not $e1062))
+(flet ($e1396 (and $e1264 $e1368))
+(flet ($e1397 (xor $e1258 $e813))
+(flet ($e1398 (not $e690))
+(flet ($e1399 (if_then_else $e1328 $e1078 $e528))
+(flet ($e1400 (iff $e1070 $e742))
+(flet ($e1401 (iff $e911 $e1144))
+(flet ($e1402 (or $e781 $e662))
+(flet ($e1403 (if_then_else $e1101 $e530 $e378))
+(flet ($e1404 (and $e788 $e593))
+(flet ($e1405 (implies $e738 $e1160))
+(flet ($e1406 (if_then_else $e591 $e456 $e439))
+(flet ($e1407 (or $e1313 $e622))
+(flet ($e1408 (xor $e892 $e1362))
+(flet ($e1409 (iff $e1288 $e682))
+(flet ($e1410 (or $e1031 $e321))
+(flet ($e1411 (not $e1281))
+(flet ($e1412 (and $e1263 $e387))
+(flet ($e1413 (or $e939 $e543))
+(flet ($e1414 (xor $e1012 $e886))
+(flet ($e1415 (not $e716))
+(flet ($e1416 (implies $e536 $e385))
+(flet ($e1417 (implies $e775 $e598))
+(flet ($e1418 (if_then_else $e534 $e519 $e454))
+(flet ($e1419 (and $e643 $e826))
+(flet ($e1420 (not $e1001))
+(flet ($e1421 (implies $e647 $e515))
+(flet ($e1422 (not $e1179))
+(flet ($e1423 (or $e1254 $e1234))
+(flet ($e1424 (if_then_else $e877 $e679 $e465))
+(flet ($e1425 (if_then_else $e940 $e1384 $e670))
+(flet ($e1426 (and $e914 $e401))
+(flet ($e1427 (not $e676))
+(flet ($e1428 (xor $e1119 $e764))
+(flet ($e1429 (xor $e634 $e1386))
+(flet ($e1430 (xor $e1324 $e549))
+(flet ($e1431 (implies $e999 $e347))
+(flet ($e1432 (if_then_else $e1426 $e495 $e761))
+(flet ($e1433 (xor $e1367 $e1224))
+(flet ($e1434 (and $e1414 $e1054))
+(flet ($e1435 (iff $e951 $e724))
+(flet ($e1436 (iff $e759 $e637))
+(flet ($e1437 (not $e561))
+(flet ($e1438 (not $e988))
+(flet ($e1439 (if_then_else $e1182 $e1366 $e1334))
+(flet ($e1440 (or $e869 $e448))
+(flet ($e1441 (xor $e375 $e1213))
+(flet ($e1442 (or $e830 $e1403))
+(flet ($e1443 (xor $e1299 $e1104))
+(flet ($e1444 (or $e355 $e383))
+(flet ($e1445 (xor $e1016 $e1357))
+(flet ($e1446 (and $e765 $e1040))
+(flet ($e1447 (or $e1396 $e329))
+(flet ($e1448 (xor $e497 $e1305))
+(flet ($e1449 (or $e731 $e547))
+(flet ($e1450 (if_then_else $e789 $e1301 $e579))
+(flet ($e1451 (iff $e1443 $e969))
+(flet ($e1452 (implies $e260 $e1200))
+(flet ($e1453 (not $e585))
+(flet ($e1454 (iff $e270 $e1294))
+(flet ($e1455 (if_then_else $e604 $e1167 $e308))
+(flet ($e1456 (and $e919 $e766))
+(flet ($e1457 (implies $e362 $e1142))
+(flet ($e1458 (if_then_else $e1450 $e1353 $e1091))
+(flet ($e1459 (not $e1084))
+(flet ($e1460 (xor $e535 $e1032))
+(flet ($e1461 (xor $e1237 $e681))
+(flet ($e1462 (xor $e661 $e1444))
+(flet ($e1463 (if_then_else $e859 $e445 $e1350))
+(flet ($e1464 (iff $e566 $e686))
+(flet ($e1465 (or $e1137 $e1273))
+(flet ($e1466 (xor $e396 $e923))
+(flet ($e1467 (iff $e890 $e437))
+(flet ($e1468 (and $e490 $e475))
+(flet ($e1469 (and $e297 $e1003))
+(flet ($e1470 (not $e1286))
+(flet ($e1471 (if_then_else $e1369 $e552 $e1415))
+(flet ($e1472 (if_then_else $e1373 $e699 $e1266))
+(flet ($e1473 (and $e1361 $e1251))
+(flet ($e1474 (or $e773 $e703))
+(flet ($e1475 (implies $e1410 $e1089))
+(flet ($e1476 (not $e417))
+(flet ($e1477 (if_then_else $e1392 $e330 $e1359))
+(flet ($e1478 (not $e833))
+(flet ($e1479 (xor $e917 $e1151))
+(flet ($e1480 (not $e447))
+(flet ($e1481 (not $e573))
+(flet ($e1482 (or $e301 $e596))
+(flet ($e1483 (implies $e927 $e887))
+(flet ($e1484 (and $e1342 $e867))
+(flet ($e1485 (and $e1280 $e952))
+(flet ($e1486 (implies $e1005 $e537))
+(flet ($e1487 (and $e776 $e1110))
+(flet ($e1488 (and $e442 $e902))
+(flet ($e1489 (and $e1470 $e433))
+(flet ($e1490 (if_then_else $e1069 $e499 $e1050))
+(flet ($e1491 (or $e854 $e1208))
+(flet ($e1492 (xor $e463 $e1437))
+(flet ($e1493 (not $e274))
+(flet ($e1494 (iff $e772 $e861))
+(flet ($e1495 (iff $e1404 $e313))
+(flet ($e1496 (implies $e1230 $e1467))
+(flet ($e1497 (iff $e992 $e817))
+(flet ($e1498 (xor $e1387 $e1047))
+(flet ($e1499 (or $e675 $e292))
+(flet ($e1500 (xor $e974 $e1250))
+(flet ($e1501 (implies $e1067 $e415))
+(flet ($e1502 (implies $e1282 $e627))
+(flet ($e1503 (or $e712 $e1336))
+(flet ($e1504 (if_then_else $e615 $e1445 $e1503))
+(flet ($e1505 (implies $e1135 $e494))
+(flet ($e1506 (xor $e1325 $e529))
+(flet ($e1507 (not $e1430))
+(flet ($e1508 (iff $e1462 $e980))
+(flet ($e1509 (implies $e461 $e1024))
+(flet ($e1510 (xor $e961 $e263))
+(flet ($e1511 (implies $e654 $e1128))
+(flet ($e1512 (xor $e644 $e1491))
+(flet ($e1513 (implies $e1184 $e469))
+(flet ($e1514 (and $e1059 $e391))
+(flet ($e1515 (if_then_else $e1326 $e734 $e719))
+(flet ($e1516 (and $e665 $e932))
+(flet ($e1517 (and $e422 $e1433))
+(flet ($e1518 (if_then_else $e325 $e1120 $e1272))
+(flet ($e1519 (implies $e829 $e1329))
+(flet ($e1520 (xor $e1086 $e1113))
+(flet ($e1521 (not $e701))
+(flet ($e1522 (or $e506 $e614))
+(flet ($e1523 (and $e976 $e1235))
+(flet ($e1524 (implies $e1238 $e814))
+(flet ($e1525 (implies $e408 $e1453))
+(flet ($e1526 (xor $e1522 $e1274))
+(flet ($e1527 (implies $e1341 $e956))
+(flet ($e1528 (xor $e430 $e847))
+(flet ($e1529 (implies $e1358 $e1117))
+(flet ($e1530 (and $e436 $e550))
+(flet ($e1531 (not $e1408))
+(flet ($e1532 (and $e1289 $e1337))
+(flet ($e1533 (xor $e487 $e906))
+(flet ($e1534 (implies $e315 $e1196))
+(flet ($e1535 (if_then_else $e635 $e1401 $e403))
+(flet ($e1536 (if_then_else $e1307 $e1402 $e286))
+(flet ($e1537 (xor $e1330 $e768))
+(flet ($e1538 (or $e1481 $e466))
+(flet ($e1539 (and $e1283 $e290))
+(flet ($e1540 (if_then_else $e333 $e770 $e1255))
+(flet ($e1541 (or $e808 $e800))
+(flet ($e1542 (xor $e806 $e1013))
+(flet ($e1543 (iff $e1379 $e1395))
+(flet ($e1544 (if_then_else $e1492 $e1460 $e958))
+(flet ($e1545 (iff $e692 $e481))
+(flet ($e1546 (iff $e1493 $e346))
+(flet ($e1547 (iff $e1418 $e802))
+(flet ($e1548 (and $e714 $e1532))
+(flet ($e1549 (or $e1215 $e1412))
+(flet ($e1550 (iff $e1487 $e327))
+(flet ($e1551 (and $e1002 $e941))
+(flet ($e1552 (or $e771 $e1405))
+(flet ($e1553 (not $e1194))
+(flet ($e1554 (not $e432))
+(flet ($e1555 (and $e1279 $e264))
+(flet ($e1556 (not $e1500))
+(flet ($e1557 (iff $e1545 $e883))
+(flet ($e1558 (not $e658))
+(flet ($e1559 (iff $e735 $e486))
+(flet ($e1560 (or $e1124 $e977))
+(flet ($e1561 (and $e1246 $e441))
+(flet ($e1562 (not $e1497))
+(flet ($e1563 (and $e1385 $e508))
+(flet ($e1564 (or $e1542 $e1536))
+(flet ($e1565 (if_then_else $e1169 $e774 $e612))
+(flet ($e1566 (if_then_else $e1454 $e314 $e730))
+(flet ($e1567 (xor $e1316 $e930))
+(flet ($e1568 (or $e1042 $e1221))
+(flet ($e1569 (and $e1187 $e720))
+(flet ($e1570 (and $e1440 $e628))
+(flet ($e1571 (if_then_else $e311 $e639 $e1018))
+(flet ($e1572 (if_then_else $e501 $e322 $e950))
+(flet ($e1573 (if_then_else $e1292 $e1017 $e620))
+(flet ($e1574 (if_then_else $e523 $e1088 $e532))
+(flet ($e1575 (implies $e1434 $e1538))
+(flet ($e1576 (not $e783))
+(flet ($e1577 (if_then_else $e1134 $e323 $e860))
+(flet ($e1578 (or $e693 $e594))
+(flet ($e1579 (if_then_else $e380 $e1546 $e973))
+(flet ($e1580 (implies $e444 $e1290))
+(flet ($e1581 (or $e1136 $e1508))
+(flet ($e1582 (iff $e645 $e462))
+(flet ($e1583 (implies $e625 $e762))
+(flet ($e1584 (if_then_else $e575 $e261 $e1198))
+(flet ($e1585 (or $e1557 $e1371))
+(flet ($e1586 (if_then_else $e809 $e909 $e592))
+(flet ($e1587 (iff $e1320 $e1252))
+(flet ($e1588 (implies $e277 $e896))
+(flet ($e1589 (xor $e340 $e687))
+(flet ($e1590 (if_then_else $e319 $e1173 $e913))
+(flet ($e1591 (implies $e1393 $e1461))
+(flet ($e1592 (implies $e1126 $e1092))
+(flet ($e1593 (xor $e298 $e831))
+(flet ($e1594 (not $e1076))
+(flet ($e1595 (xor $e850 $e438))
+(flet ($e1596 (xor $e1511 $e1389))
+(flet ($e1597 (xor $e804 $e737))
+(flet ($e1598 (iff $e1597 $e993))
+(flet ($e1599 (iff $e1343 $e1065))
+(flet ($e1600 (if_then_else $e1319 $e907 $e1559))
+(flet ($e1601 (iff $e631 $e709))
+(flet ($e1602 (if_then_else $e876 $e1190 $e721))
+(flet ($e1603 (implies $e1466 $e700))
+(flet ($e1604 (if_then_else $e822 $e1052 $e1025))
+(flet ($e1605 (xor $e410 $e376))
+(flet ($e1606 (iff $e583 $e746))
+(flet ($e1607 (or $e792 $e1095))
+(flet ($e1608 (if_then_else $e1009 $e707 $e1245))
+(flet ($e1609 (xor $e1267 $e455))
+(flet ($e1610 (iff $e673 $e259))
+(flet ($e1611 (not $e307))
+(flet ($e1612 (not $e1567))
+(flet ($e1613 (not $e1327))
+(flet ($e1614 (iff $e910 $e1428))
+(flet ($e1615 (and $e1217 $e1576))
+(flet ($e1616 (not $e258))
+(flet ($e1617 (iff $e1333 $e1562))
+(flet ($e1618 (not $e1543))
+(flet ($e1619 (not $e1479))
+(flet ($e1620 (iff $e1504 $e1399))
+(flet ($e1621 (xor $e835 $e1614))
+(flet ($e1622 (if_then_else $e1262 $e302 $e1247))
+(flet ($e1623 (xor $e1519 $e1583))
+(flet ($e1624 (iff $e450 $e1591))
+(flet ($e1625 (and $e399 $e412))
+(flet ($e1626 (not $e968))
+(flet ($e1627 (implies $e601 $e1464))
+(flet ($e1628 (or $e1377 $e1394))
+(flet ($e1629 (or $e1442 $e1147))
+(flet ($e1630 (not $e900))
+(flet ($e1631 (not $e884))
+(flet ($e1632 (not $e1587))
+(flet ($e1633 (or $e1534 $e502))
+(flet ($e1634 (implies $e1080 $e1620))
+(flet ($e1635 (if_then_else $e1550 $e1495 $e485))
+(flet ($e1636 (not $e358))
+(flet ($e1637 (or $e1554 $e1607))
+(flet ($e1638 (not $e1525))
+(flet ($e1639 (xor $e818 $e1436))
+(flet ($e1640 (or $e891 $e1605))
+(flet ($e1641 (xor $e1588 $e1465))
+(flet ($e1642 (not $e288))
+(flet ($e1643 (implies $e824 $e459))
+(flet ($e1644 (if_then_else $e404 $e879 $e1458))
+(flet ($e1645 (not $e1594))
+(flet ($e1646 (implies $e1291 $e513))
+(flet ($e1647 (iff $e1139 $e688))
+(flet ($e1648 (and $e1612 $e1193))
+(flet ($e1649 (implies $e1212 $e300))
+(flet ($e1650 (and $e424 $e858))
+(flet ($e1651 (not $e1593))
+(flet ($e1652 (implies $e1177 $e1480))
+(flet ($e1653 (and $e421 $e1407))
+(flet ($e1654 (xor $e1526 $e429))
+(flet ($e1655 (not $e1372))
+(flet ($e1656 (or $e1154 $e1322))
+(flet ($e1657 (xor $e1129 $e648))
+(flet ($e1658 (and $e553 $e1556))
+(flet ($e1659 (and $e1261 $e825))
+(flet ($e1660 (implies $e1308 $e666))
+(flet ($e1661 (if_then_else $e1610 $e784 $e493))
+(flet ($e1662 (iff $e470 $e897))
+(flet ($e1663 (and $e1218 $e1449))
+(flet ($e1664 (and $e1164 $e551))
+(flet ($e1665 (and $e1627 $e1244))
+(flet ($e1666 (iff $e1570 $e1516))
+(flet ($e1667 (xor $e1575 $e1174))
+(flet ($e1668 (implies $e1236 $e1309))
+(flet ($e1669 (not $e1658))
+(flet ($e1670 (if_then_else $e933 $e400 $e855))
+(flet ($e1671 (implies $e587 $e1537))
+(flet ($e1672 (if_then_else $e1030 $e1323 $e492))
+(flet ($e1673 (or $e1530 $e864))
+(flet ($e1674 (xor $e1060 $e874))
+(flet ($e1675 (xor $e1448 $e755))
+(flet ($e1676 (or $e1529 $e1586))
+(flet ($e1677 (implies $e1565 $e1675))
+(flet ($e1678 (and $e655 $e1417))
+(flet ($e1679 (iff $e281 $e1636))
+(flet ($e1680 (if_then_else $e1622 $e667 $e1618))
+(flet ($e1681 (not $e1513))
+(flet ($e1682 (xor $e925 $e350))
+(flet ($e1683 (not $e1469))
+(flet ($e1684 (or $e1370 $e971))
+(flet ($e1685 (implies $e733 $e1240))
+(flet ($e1686 (if_then_else $e599 $e955 $e296))
+(flet ($e1687 (iff $e1064 $e848))
+(flet ($e1688 (iff $e538 $e1637))
+(flet ($e1689 (or $e1411 $e1411))
+(flet ($e1690 (and $e1625 $e1100))
+(flet ($e1691 (xor $e1004 $e966))
+(flet ($e1692 (xor $e678 $e1652))
+(flet ($e1693 (or $e556 $e348))
+(flet ($e1694 (implies $e1360 $e1685))
+(flet ($e1695 (if_then_else $e1400 $e595 $e1564))
+(flet ($e1696 (iff $e468 $e1572))
+(flet ($e1697 (implies $e1315 $e460))
+(flet ($e1698 (iff $e521 $e316))
+(flet ($e1699 (xor $e1468 $e1592))
+(flet ($e1700 (iff $e1143 $e569))
+(flet ($e1701 (or $e823 $e1383))
+(flet ($e1702 (or $e995 $e1317))
+(flet ($e1703 (implies $e984 $e285))
+(flet ($e1704 (if_then_else $e1429 $e335 $e1141))
+(flet ($e1705 (not $e1549))
+(flet ($e1706 (not $e1640))
+(flet ($e1707 (xor $e1140 $e1435))
+(flet ($e1708 (not $e597))
+(flet ($e1709 (xor $e1621 $e1505))
+(flet ($e1710 (and $e1021 $e331))
+(flet ($e1711 (and $e1375 $e1056))
+(flet ($e1712 (and $e1023 $e1555))
+(flet ($e1713 (xor $e510 $e1531))
+(flet ($e1714 (not $e434))
+(flet ($e1715 (or $e1528 $e1077))
+(flet ($e1716 (and $e1676 $e1228))
+(flet ($e1717 (xor $e1496 $e603))
+(flet ($e1718 (iff $e1552 $e1541))
+(flet ($e1719 (if_then_else $e1527 $e557 $e1558))
+(flet ($e1720 (if_then_else $e1310 $e1600 $e994))
+(flet ($e1721 (or $e548 $e1391))
+(flet ($e1722 (and $e1684 $e787))
+(flet ($e1723 (iff $e1441 $e1582))
+(flet ($e1724 (not $e452))
+(flet ($e1725 (if_then_else $e359 $e278 $e1233))
+(flet ($e1726 (not $e749))
+(flet ($e1727 (xor $e1608 $e293))
+(flet ($e1728 (if_then_else $e1431 $e1205 $e514))
+(flet ($e1729 (xor $e1284 $e1716))
+(flet ($e1730 (not $e1721))
+(flet ($e1731 (or $e1714 $e1566))
+(flet ($e1732 (if_then_else $e1339 $e1682 $e1668))
+(flet ($e1733 (implies $e1390 $e381))
+(flet ($e1734 (implies $e1553 $e1374))
+(flet ($e1735 (or $e1705 $e1494))
+(flet ($e1736 (or $e1197 $e903))
+(flet ($e1737 (if_then_else $e875 $e1735 $e1482))
+(flet ($e1738 (or $e1506 $e1709))
+(flet ($e1739 (xor $e372 $e1698))
+(flet ($e1740 (not $e1691))
+(flet ($e1741 (if_then_else $e863 $e589 $e1298))
+(flet ($e1742 (if_then_else $e1540 $e1712 $e1560))
+(flet ($e1743 (implies $e1351 $e1724))
+(flet ($e1744 (if_then_else $e1738 $e819 $e1717))
+(flet ($e1745 (and $e1661 $e1509))
+(flet ($e1746 (or $e1711 $e505))
+(flet ($e1747 (if_then_else $e1548 $e265 $e257))
+(flet ($e1748 (or $e1746 $e1303))
+(flet ($e1749 (implies $e341 $e425))
+(flet ($e1750 (xor $e1577 $e1518))
+(flet ($e1751 (xor $e1269 $e1424))
+(flet ($e1752 (and $e1679 $e1363))
+(flet ($e1753 (implies $e1463 $e1271))
+(flet ($e1754 (xor $e1681 $e1159))
+(flet ($e1755 (if_then_else $e1670 $e852 $e1388))
+(flet ($e1756 (if_then_else $e795 $e1729 $e1146))
+(flet ($e1757 (not $e1423))
+(flet ($e1758 (and $e304 $e266))
+(flet ($e1759 (if_then_else $e1209 $e1632 $e1590))
+(flet ($e1760 (not $e1149))
+(flet ($e1761 (or $e780 $e1474))
+(flet ($e1762 (or $e1118 $e605))
+(flet ($e1763 (and $e1006 $e841))
+(flet ($e1764 (if_then_else $e1631 $e1581 $e1121))
+(flet ($e1765 (iff $e1150 $e1764))
+(flet ($e1766 (xor $e356 $e1753))
+(flet ($e1767 (if_then_else $e558 $e1364 $e1688))
+(flet ($e1768 (iff $e1097 $e1285))
+(flet ($e1769 (implies $e1606 $e1107))
+(flet ($e1770 (implies $e962 $e1690))
+(flet ($e1771 (and $e1707 $e545))
+(flet ($e1772 (not $e1485))
+(flet ($e1773 (and $e1381 $e1745))
+(flet ($e1774 (or $e1499 $e1752))
+(flet ($e1775 (implies $e1769 $e1268))
+(flet ($e1776 (and $e511 $e1276))
+(flet ($e1777 (and $e559 $e1578))
+(flet ($e1778 (xor $e1447 $e908))
+(flet ($e1779 (implies $e1352 $e972))
+(flet ($e1780 (if_then_else $e426 $e1520 $e1657))
+(flet ($e1781 (xor $e1699 $e1378))
+(flet ($e1782 (implies $e991 $e1662))
+(flet ($e1783 (or $e328 $e1775))
+(flet ($e1784 (or $e894 $e1446))
+(flet ($e1785 (iff $e1297 $e794))
+(flet ($e1786 (or $e1782 $e996))
+(flet ($e1787 (if_then_else $e1175 $e989 $e1783))
+(flet ($e1788 (xor $e294 $e1098))
+(flet ($e1789 (iff $e1629 $e1397))
+(flet ($e1790 (iff $e727 $e1626))
+(flet ($e1791 (or $e626 $e942))
+(flet ($e1792 (if_then_else $e990 $e1166 $e1028))
+(flet ($e1793 (and $e619 $e1398))
+(flet ($e1794 (iff $e1478 $e1515))
+(flet ($e1795 (and $e1596 $e1210))
+(flet ($e1796 (implies $e723 $e1768))
+(flet ($e1797 (implies $e1571 $e1490))
+(flet ($e1798 (if_then_else $e1521 $e1335 $e1643))
+(flet ($e1799 (iff $e1539 $e1451))
+(flet ($e1800 (implies $e1740 $e1762))
+(flet ($e1801 (iff $e1687 $e1152))
+(flet ($e1802 (and $e1354 $e1653))
+(flet ($e1803 (xor $e446 $e1585))
+(flet ($e1804 (iff $e394 $e1766))
+(flet ($e1805 (iff $e1801 $e846))
+(flet ($e1806 (implies $e1105 $e588))
+(flet ($e1807 (and $e1318 $e1045))
+(flet ($e1808 (or $e1771 $e1700))
+(flet ($e1809 (xor $e1476 $e1073))
+(flet ($e1810 (iff $e810 $e1727))
+(flet ($e1811 (iff $e1780 $e609))
+(flet ($e1812 (iff $e1438 $e1456))
+(flet ($e1813 (iff $e1533 $e1800))
+(flet ($e1814 (iff $e659 $e1595))
+(flet ($e1815 (implies $e1489 $e1654))
+(flet ($e1816 (implies $e1427 $e1755))
+(flet ($e1817 (if_then_else $e1615 $e1733 $e1811))
+(flet ($e1818 (or $e1066 $e1817))
+(flet ($e1819 (implies $e1584 $e1694))
+(flet ($e1820 (implies $e544 $e1759))
+(flet ($e1821 (xor $e1225 $e1345))
+(flet ($e1822 (and $e633 $e1544))
+(flet ($e1823 (iff $e1162 $e1680))
+(flet ($e1824 (if_then_else $e1416 $e754 $e1214))
+(flet ($e1825 (xor $e1779 $e815))
+(flet ($e1826 (if_then_else $e1765 $e1807 $e1517))
+(flet ($e1827 (implies $e1692 $e305))
+(flet ($e1828 (and $e1677 $e683))
+(flet ($e1829 (and $e1270 $e1589))
+(flet ($e1830 (implies $e920 $e711))
+(flet ($e1831 (iff $e542 $e898))
+(flet ($e1832 (or $e527 $e324))
+(flet ($e1833 (implies $e1823 $e878))
+(flet ($e1834 (iff $e518 $e568))
+(flet ($e1835 (implies $e1659 $e1617))
+(flet ($e1836 (and $e326 $e496))
+(flet ($e1837 (and $e617 $e1649))
+(flet ($e1838 (xor $e1641 $e853))
+(flet ($e1839 (not $e1580))
+(flet ($e1840 (iff $e1835 $e763))
+(flet ($e1841 (implies $e1211 $e1072))
+(flet ($e1842 (xor $e1106 $e409))
+(flet ($e1843 (and $e1439 $e1704))
+(flet ($e1844 (xor $e1192 $e1731))
+(flet ($e1845 (xor $e382 $e1036))
+(flet ($e1846 (and $e1660 $e1825))
+(flet ($e1847 (or $e1702 $e1624))
+(flet ($e1848 (or $e793 $e1794))
+(flet ($e1849 (xor $e1665 $e708))
+(flet ($e1850 (implies $e1455 $e739))
+(flet ($e1851 (and $e752 $e1356))
+(flet ($e1852 (implies $e291 $e1609))
+(flet ($e1853 (or $e1833 $e370))
+(flet ($e1854 (or $e1810 $e845))
+(flet ($e1855 (not $e1613))
+(flet ($e1856 (xor $e797 $e998))
+(flet ($e1857 (xor $e1535 $e1741))
+(flet ($e1858 (if_then_else $e1300 $e1365 $e1843))
+(flet ($e1859 (not $e374))
+(flet ($e1860 (iff $e1819 $e938))
+(flet ($e1861 (not $e1850))
+(flet ($e1862 (xor $e1382 $e1834))
+(flet ($e1863 (if_then_else $e1706 $e1802 $e1277))
+(flet ($e1864 (xor $e611 $e757))
+(flet ($e1865 (xor $e1406 $e1602))
+(flet ($e1866 (if_then_else $e1848 $e1421 $e1776))
+(flet ($e1867 (implies $e1788 $e1853))
+(flet ($e1868 (not $e1484))
+(flet ($e1869 (and $e1851 $e344))
+(flet ($e1870 (implies $e1726 $e371))
+(flet ($e1871 (and $e1673 $e748))
+(flet ($e1872 (and $e1355 $e1599))
+(flet ($e1873 (iff $e1774 $e769))
+(flet ($e1874 (if_then_else $e1547 $e1639 $e1695))
+(flet ($e1875 (xor $e1787 $e1822))
+(flet ($e1876 (or $e1473 $e1604))
+(flet ($e1877 (implies $e873 $e1655))
+(flet ($e1878 (not $e1483))
+(flet ($e1879 (if_then_else $e1763 $e1725 $e1816))
+(flet ($e1880 (iff $e1475 $e1840))
+(flet ($e1881 (xor $e1761 $e1758))
+(flet ($e1882 (and $e1242 $e1856))
+(flet ($e1883 (xor $e478 $e414))
+(flet ($e1884 (or $e1757 $e1701))
+(flet ($e1885 (implies $e1806 $e526))
+(flet ($e1886 (if_then_else $e1877 $e851 $e1818))
+(flet ($e1887 (if_then_else $e668 $e1409 $e1871))
+(flet ($e1888 (and $e582 $e577))
+(flet ($e1889 (if_then_else $e1686 $e1846 $e1498))
+(flet ($e1890 (not $e1422))
+(flet ($e1891 (not $e379))
+(flet ($e1892 (implies $e1874 $e349))
+(flet ($e1893 (and $e1719 $e1512))
+(flet ($e1894 (and $e1664 $e786))
+(flet ($e1895 (iff $e482 $e1894))
+(flet ($e1896 (not $e1630))
+(flet ($e1897 (if_then_else $e1892 $e1510 $e1646))
+(flet ($e1898 (or $e1814 $e983))
+(flet ($e1899 (or $e1884 $e1821))
+(flet ($e1900 (xor $e565 $e1888))
+(flet ($e1901 (and $e1472 $e694))
+(flet ($e1902 (xor $e970 $e1875))
+(flet ($e1903 (xor $e1029 $e706))
+(flet ($e1904 (xor $e1666 $e904))
+(flet ($e1905 (xor $e954 $e1703))
+(flet ($e1906 (if_then_else $e1900 $e1748 $e1760))
+(flet ($e1907 (not $e1638))
+(flet ($e1908 (if_then_else $e1157 $e1619 $e1804))
+(flet ($e1909 (xor $e1011 $e1663))
+(flet ($e1910 (or $e1488 $e1743))
+(flet ($e1911 (if_then_else $e726 $e1650 $e1831))
+(flet ($e1912 (xor $e1730 $e1857))
+(flet ($e1913 (and $e567 $e1459))
+(flet ($e1914 (iff $e1772 $e1770))
+(flet ($e1915 (or $e1671 $e1786))
+(flet ($e1916 (implies $e1865 $e778))
+(flet ($e1917 (if_then_else $e1346 $e1693 $e1163))
+(flet ($e1918 (iff $e1809 $e1912))
+(flet ($e1919 (and $e1905 $e1420))
+(flet ($e1920 (or $e1176 $e1849))
+(flet ($e1921 (or $e1906 $e1413))
+(flet ($e1922 (xor $e1457 $e1882))
+(flet ($e1923 (and $e862 $e1869))
+(flet ($e1924 (and $e1083 $e1858))
+(flet ($e1925 (xor $e1778 $e1803))
+(flet ($e1926 (not $e760))
+(flet ($e1927 (implies $e1904 $e1672))
+(flet ($e1928 (iff $e702 $e520))
+(flet ($e1929 (if_then_else $e677 $e1598 $e563))
+(flet ($e1930 (or $e1523 $e1295))
+(flet ($e1931 (or $e1304 $e1926))
+(flet ($e1932 (implies $e1574 $e1057))
+(flet ($e1933 (iff $e1911 $e1886))
+(flet ($e1934 (iff $e630 $e1756))
+(flet ($e1935 (iff $e1737 $e1914))
+(flet ($e1936 (or $e1603 $e1805))
+(flet ($e1937 (xor $e1713 $e1898))
+(flet ($e1938 (xor $e1452 $e1744))
+(flet ($e1939 (and $e1551 $e1915))
+(flet ($e1940 (and $e1501 $e262))
+(flet ($e1941 (or $e1929 $e1872))
+(flet ($e1942 (and $e1573 $e363))
+(flet ($e1943 (or $e1847 $e1642))
+(flet ($e1944 (or $e1941 $e1866))
+(flet ($e1945 (iff $e1094 $e613))
+(flet ($e1946 (xor $e1837 $e1524))
+(flet ($e1947 (or $e1635 $e1051))
+(flet ($e1948 (implies $e905 $e1747))
+(flet ($e1949 (iff $e751 $e1921))
+(flet ($e1950 (or $e1948 $e1916))
+(flet ($e1951 (if_then_else $e1656 $e1924 $e843))
+(flet ($e1952 (not $e1903))
+(flet ($e1953 (and $e384 $e1842))
+(flet ($e1954 (xor $e1678 $e1734))
+(flet ($e1955 (if_then_else $e1859 $e1944 $e1861))
+(flet ($e1956 (if_then_else $e1155 $e1867 $e1891))
+(flet ($e1957 (if_then_else $e1949 $e1860 $e1928))
+(flet ($e1958 (if_then_else $e1633 $e1909 $e1829))
+(flet ($e1959 (if_then_else $e1920 $e1471 $e1881))
+(flet ($e1960 (or $e1715 $e1732))
+(flet ($e1961 (or $e1939 $e476))
+(flet ($e1962 (or $e1879 $e1918))
+(flet ($e1963 (and $e1797 $e1844))
+(flet ($e1964 (and $e1243 $e1432))
+(flet ($e1965 (iff $e691 $e1784))
+(flet ($e1966 (and $e1937 $e1896))
+(flet ($e1967 (if_then_else $e1812 $e1736 $e732))
+(flet ($e1968 (not $e1568))
+(flet ($e1969 (and $e1789 $e1935))
+(flet ($e1970 (if_then_else $e1925 $e1795 $e1931))
+(flet ($e1971 (if_then_else $e929 $e1845 $e1739))
+(flet ($e1972 (or $e1616 $e273))
+(flet ($e1973 (iff $e1026 $e1962))
+(flet ($e1974 (if_then_else $e1964 $e1718 $e1922))
+(flet ($e1975 (or $e1971 $e1477))
+(flet ($e1976 (xor $e926 $e1799))
+(flet ($e1977 (and $e957 $e821))
+(flet ($e1978 (xor $e1669 $e1796))
+(flet ($e1979 (if_then_else $e1063 $e1936 $e1838))
+(flet ($e1980 (if_then_else $e1963 $e1338 $e1954))
+(flet ($e1981 (or $e1068 $e1697))
+(flet ($e1982 (xor $e1183 $e1824))
+(flet ($e1983 (not $e866))
+(flet ($e1984 (implies $e1956 $e354))
+(flet ($e1985 (implies $e1965 $e1579))
+(flet ($e1986 (iff $e580 $e1750))
+(flet ($e1987 (or $e1114 $e1897))
+(flet ($e1988 (if_then_else $e1919 $e1966 $e1275))
+(flet ($e1989 (if_then_else $e807 $e1899 $e1722))
+(flet ($e1990 (not $e1793))
+(flet ($e1991 (implies $e1961 $e1855))
+(flet ($e1992 (iff $e921 $e1773))
+(flet ($e1993 (xor $e1742 $e1696))
+(flet ($e1994 (iff $e689 $e937))
+(flet ($e1995 (iff $e1689 $e1947))
+(flet ($e1996 (xor $e1913 $e1815))
+(flet ($e1997 (iff $e1514 $e1628))
+(flet ($e1998 (implies $e1836 $e1123))
+(flet ($e1999 (or $e1930 $e1878))
+(flet ($e2000 (implies $e1889 $e1728))
+(flet ($e2001 (and $e1873 $e1202))
+(flet ($e2002 (and $e1973 $e1958))
+(flet ($e2003 (iff $e1993 $e1987))
+(flet ($e2004 (and $e872 $e1260))
+(flet ($e2005 (implies $e1880 $e1885))
+(flet ($e2006 (and $e1977 $e1985))
+(flet ($e2007 (iff $e1854 $e1723))
+(flet ($e2008 (or $e1901 $e1827))
+(flet ($e2009 (or $e2008 $e758))
+(flet ($e2010 (implies $e1997 $e1419))
+(flet ($e2011 (not $e1563))
+(flet ($e2012 (iff $e1647 $e1932))
+(flet ($e2013 (iff $e1798 $e1902))
+(flet ($e2014 (not $e564))
+(flet ($e2015 (iff $e1945 $e1938))
+(flet ($e2016 (if_then_else $e1852 $e1781 $e338))
+(flet ($e2017 (and $e1751 $e1507))
+(flet ($e2018 (not $e1170))
+(flet ($e2019 (implies $e1156 $e2000))
+(flet ($e2020 (xor $e1708 $e1634))
+(flet ($e2021 (or $e2009 $e1813))
+(flet ($e2022 (not $e1910))
+(flet ($e2023 (iff $e2010 $e1820))
+(flet ($e2024 (if_then_else $e1934 $e498 $e1983))
+(flet ($e2025 (not $e1785))
+(flet ($e2026 (xor $e1864 $e1791))
+(flet ($e2027 (or $e2011 $e572))
+(flet ($e2028 (implies $e997 $e1486))
+(flet ($e2029 (not $e1974))
+(flet ($e2030 (not $e342))
+(flet ($e2031 (if_then_else $e1988 $e1034 $e1890))
+(flet ($e2032 (or $e1876 $e2024))
+(flet ($e2033 (or $e2027 $e1868))
+(flet ($e2034 (not $e2019))
+(flet ($e2035 (not $e1348))
+(flet ($e2036 (not $e517))
+(flet ($e2037 (implies $e1976 $e2003))
+(flet ($e2038 (if_then_else $e2006 $e1645 $e1754))
+(flet ($e2039 (if_then_else $e1972 $e2013 $e1996))
+(flet ($e2040 (or $e1862 $e2022))
+(flet ($e2041 (xor $e1611 $e849))
+(flet ($e2042 (xor $e1883 $e1623))
+(flet ($e2043 (if_then_else $e1425 $e1951 $e1832))
+(flet ($e2044 (iff $e1957 $e885))
+(flet ($e2045 (or $e2004 $e2033))
+(flet ($e2046 (or $e289 $e1927))
+(flet ($e2047 (or $e868 $e2014))
+(flet ($e2048 (iff $e1839 $e2023))
+(flet ($e2049 (if_then_else $e351 $e1502 $e1790))
+(flet ($e2050 (implies $e1808 $e2015))
+(flet ($e2051 (not $e320))
+(flet ($e2052 (not $e2036))
+(flet ($e2053 (and $e1644 $e1569))
+(flet ($e2054 (if_then_else $e1970 $e2047 $e1942))
+(flet ($e2055 (xor $e1960 $e1992))
+(flet ($e2056 (or $e2035 $e1975))
+(flet ($e2057 (implies $e1830 $e1933))
+(flet ($e2058 (iff $e948 $e1991))
+(flet ($e2059 (iff $e1952 $e1953))
+(flet ($e2060 (and $e2057 $e1923))
+(flet ($e2061 (and $e2041 $e1989))
+(flet ($e2062 (or $e1978 $e1055))
+(flet ($e2063 (xor $e1347 $e2020))
+(flet ($e2064 (implies $e1887 $e2034))
+(flet ($e2065 (if_then_else $e1950 $e1946 $e1990))
+(flet ($e2066 (xor $e1601 $e888))
+(flet ($e2067 (iff $e1826 $e1674))
+(flet ($e2068 (if_then_else $e1986 $e1984 $e1981))
+(flet ($e2069 (if_then_else $e1940 $e2044 $e1907))
+(flet ($e2070 (or $e1968 $e2051))
+(flet ($e2071 (if_then_else $e2052 $e2029 $e2016))
+(flet ($e2072 (iff $e2031 $e1995))
+(flet ($e2073 (or $e2070 $e271))
+(flet ($e2074 (iff $e2017 $e2042))
+(flet ($e2075 (implies $e2065 $e2037))
+(flet ($e2076 (or $e1186 $e1998))
+(flet ($e2077 (not $e2026))
+(flet ($e2078 (xor $e2040 $e1767))
+(flet ($e2079 (and $e1893 $e1749))
+(flet ($e2080 (or $e2075 $e1982))
+(flet ($e2081 (or $e2001 $e1828))
+(flet ($e2082 (and $e2056 $e1046))
+(flet ($e2083 (not $e2043))
+(flet ($e2084 (not $e839))
+(flet ($e2085 (and $e1967 $e2066))
+(flet ($e2086 (not $e2067))
+(flet ($e2087 (if_then_else $e2064 $e1908 $e1980))
+(flet ($e2088 (if_then_else $e2087 $e2071 $e1010))
+(flet ($e2089 (not $e1999))
+(flet ($e2090 (not $e2045))
+(flet ($e2091 (xor $e361 $e2088))
+(flet ($e2092 (implies $e1777 $e1955))
+(flet ($e2093 (if_then_else $e2091 $e2062 $e2032))
+(flet ($e2094 (not $e2073))
+(flet ($e2095 (not $e1863))
+(flet ($e2096 (implies $e1895 $e2039))
+(flet ($e2097 (if_then_else $e1917 $e1792 $e1870))
+(flet ($e2098 (xor $e1651 $e2061))
+(flet ($e2099 (if_then_else $e2081 $e2081 $e2089))
+(flet ($e2100 (if_then_else $e2097 $e2049 $e2092))
+(flet ($e2101 (implies $e1667 $e480))
+(flet ($e2102 (if_then_else $e2077 $e1223 $e2072))
+(flet ($e2103 (xor $e2055 $e2025))
+(flet ($e2104 (not $e2086))
+(flet ($e2105 (and $e2103 $e2005))
+(flet ($e2106 (iff $e2060 $e2079))
+(flet ($e2107 (and $e2058 $e2053))
+(flet ($e2108 (not $e1979))
+(flet ($e2109 (and $e2046 $e1648))
+(flet ($e2110 (xor $e2105 $e664))
+(flet ($e2111 (if_then_else $e2021 $e2095 $e420))
+(flet ($e2112 (iff $e2101 $e2012))
+(flet ($e2113 (or $e2100 $e1943))
+(flet ($e2114 (xor $e2038 $e2107))
+(flet ($e2115 (if_then_else $e2002 $e2074 $e1376))
+(flet ($e2116 (xor $e2098 $e2094))
+(flet ($e2117 (iff $e2050 $e2059))
+(flet ($e2118 (or $e2104 $e2090))
+(flet ($e2119 (xor $e2063 $e1959))
+(flet ($e2120 (and $e2110 $e1841))
+(flet ($e2121 (implies $e2068 $e2114))
+(flet ($e2122 (xor $e2007 $e2082))
+(flet ($e2123 (or $e2096 $e2108))
+(flet ($e2124 (implies $e2084 $e2076))
+(flet ($e2125 (implies $e2085 $e2099))
+(flet ($e2126 (iff $e2117 $e2120))
+(flet ($e2127 (or $e2028 $e2030))
+(flet ($e2128 (iff $e2121 $e1561))
+(flet ($e2129 (xor $e2048 $e2116))
+(flet ($e2130 (and $e2118 $e2126))
+(flet ($e2131 (iff $e2054 $e2080))
+(flet ($e2132 (xor $e2129 $e1683))
+(flet ($e2133 (implies $e2106 $e2122))
+(flet ($e2134 (not $e2119))
+(flet ($e2135 (if_then_else $e1969 $e651 $e2083))
+(flet ($e2136 (if_then_else $e1994 $e2133 $e2134))
+(flet ($e2137 (iff $e2132 $e2132))
+(flet ($e2138 (or $e1720 $e1111))
+(flet ($e2139 (and $e2078 $e2128))
+(flet ($e2140 (iff $e1710 $e2093))
+(flet ($e2141 (or $e2124 $e2130))
+(flet ($e2142 (not $e2131))
+(flet ($e2143 (if_then_else $e2111 $e2018 $e2069))
+(flet ($e2144 (iff $e2125 $e2143))
+(flet ($e2145 (implies $e2137 $e2127))
+(flet ($e2146 (xor $e2123 $e2112))
+(flet ($e2147 (not $e2135))
+(flet ($e2148 (or $e2136 $e2102))
+(flet ($e2149 (or $e2115 $e2141))
+(flet ($e2150 (or $e2148 $e2145))
+(flet ($e2151 (not $e2113))
+(flet ($e2152 (and $e2149 $e2149))
+(flet ($e2153 (if_then_else $e2140 $e2150 $e2140))
+(flet ($e2154 (not $e2153))
+(flet ($e2155 (or $e2138 $e2152))
+(flet ($e2156 (and $e2139 $e2154))
+(flet ($e2157 (and $e2144 $e2146))
+(flet ($e2158 (xor $e2156 $e2147))
+(flet ($e2159 (and $e2157 $e2142))
+(flet ($e2160 (implies $e2109 $e2159))
+(flet ($e2161 (not $e2158))
+(flet ($e2162 (if_then_else $e2151 $e2160 $e2151))
+(flet ($e2163 (or $e2161 $e2162))
+(flet ($e2164 (iff $e2163 $e2163))
+(flet ($e2165 (and $e2164 $e2164))
+(flet ($e2166 (or $e2165 $e2165))
+(flet ($e2167 (not $e2166))
+(flet ($e2168 (iff $e2167 $e2155))
+$e2168
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) [...]
+
diff --git a/test/regress/regress1/bv/fuzz34.smt b/test/regress/regress1/bv/fuzz34.smt
new file mode 100644
index 0000000..200bed9
--- /dev/null
+++ b/test/regress/regress1/bv/fuzz34.smt
@@ -0,0 +1,4105 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status unsat
+:extrafuns ((v0 BitVec[4]))
+:extrafuns ((v1 BitVec[4]))
+:formula
+(let (?e2 bv13[4])
+(let (?e3 bv2[4])
+(let (?e4 bv4[4])
+(let (?e5 (zero_extend[0] v0))
+(let (?e6 (bvcomp ?e2 ?e4))
+(let (?e7 (bvshl ?e4 v0))
+(let (?e8 (rotate_right[2] ?e7))
+(let (?e9 (bvmul ?e5 (zero_extend[3] ?e6)))
+(let (?e10 (ite (bvsge v0 ?e9) bv1[1] bv0[1]))
+(let (?e11 (ite (bvsge ?e10 ?e10) bv1[1] bv0[1]))
+(let (?e12 (sign_extend[2] ?e6))
+(let (?e13 (bvadd ?e10 ?e6))
+(let (?e14 (ite (distinct ?e8 ?e4) bv1[1] bv0[1]))
+(let (?e15 (bvnand ?e5 (zero_extend[3] ?e10)))
+(let (?e16 (bvand (sign_extend[3] ?e14) v1))
+(let (?e17 (ite (bvslt ?e16 (zero_extend[3] ?e13)) bv1[1] bv0[1]))
+(let (?e18 (bvneg ?e17))
+(let (?e19 (bvand ?e5 (zero_extend[3] ?e11)))
+(let (?e20 (bvxnor ?e4 (zero_extend[3] ?e18)))
+(let (?e21 (bvsub v0 ?e7))
+(let (?e22 (bvshl ?e16 ?e2))
+(let (?e23 (bvlshr ?e5 ?e4))
+(let (?e24 (bvashr v0 ?e9))
+(let (?e25 (bvadd v0 (zero_extend[3] ?e17)))
+(let (?e26 (bvshl (sign_extend[3] ?e14) ?e8))
+(let (?e27 (rotate_right[1] v1))
+(let (?e28 (ite (bvsgt ?e22 ?e16) bv1[1] bv0[1]))
+(let (?e29 (bvlshr ?e15 v1))
+(let (?e30 (bvadd ?e8 ?e5))
+(let (?e31 (ite (bvsgt ?e29 (sign_extend[3] ?e18)) bv1[1] bv0[1]))
+(let (?e32 (ite (bvult ?e6 ?e17) bv1[1] bv0[1]))
+(let (?e33 (bvlshr ?e10 ?e10))
+(let (?e34 (bvxor ?e2 (zero_extend[3] ?e18)))
+(let (?e35 (bvand ?e29 ?e25))
+(let (?e36 (ite (bvsle (sign_extend[3] ?e11) ?e4) bv1[1] bv0[1]))
+(let (?e37 (sign_extend[0] v1))
+(let (?e38 (ite (= bv1[1] (extract[2:2] ?e25)) ?e16 ?e15))
+(let (?e39 (ite (bvslt (zero_extend[3] ?e14) ?e22) bv1[1] bv0[1]))
+(let (?e40 (bvmul (zero_extend[3] ?e33) ?e27))
+(let (?e41 (sign_extend[0] ?e37))
+(let (?e42 (bvsub ?e14 ?e14))
+(let (?e43 (ite (bvsgt ?e34 ?e25) bv1[1] bv0[1]))
+(let (?e44 (ite (= (zero_extend[1] ?e12) ?e21) bv1[1] bv0[1]))
+(let (?e45 (bvneg ?e11))
+(let (?e46 (ite (bvuge ?e7 ?e9) bv1[1] bv0[1]))
+(let (?e47 (ite (bvult (sign_extend[3] ?e32) ?e16) bv1[1] bv0[1]))
+(let (?e48 (bvneg v1))
+(let (?e49 (ite (bvuge ?e22 ?e4) bv1[1] bv0[1]))
+(let (?e50 (ite (bvsge ?e39 ?e42) bv1[1] bv0[1]))
+(let (?e51 (repeat[4] ?e50))
+(let (?e52 (rotate_right[2] ?e25))
+(let (?e53 (ite (bvugt (zero_extend[3] ?e32) ?e8) bv1[1] bv0[1]))
+(let (?e54 (bvnand ?e7 (sign_extend[1] ?e12)))
+(let (?e55 (bvshl (sign_extend[3] ?e39) ?e16))
+(let (?e56 (bvcomp (zero_extend[3] ?e11) ?e38))
+(let (?e57 (bvnand ?e40 ?e8))
+(let (?e58 (bvand ?e18 ?e36))
+(let (?e59 (ite (distinct ?e43 ?e39) bv1[1] bv0[1]))
+(let (?e60 (zero_extend[0] ?e29))
+(let (?e61 (ite (bvsle ?e32 ?e6) bv1[1] bv0[1]))
+(let (?e62 (ite (= (sign_extend[3] ?e18) ?e9) bv1[1] bv0[1]))
+(let (?e63 (bvor ?e8 ?e52))
+(let (?e64 (bvlshr (zero_extend[3] ?e56) ?e38))
+(let (?e65 (bvadd ?e29 ?e4))
+(let (?e66 (ite (distinct (sign_extend[3] ?e39) ?e9) bv1[1] bv0[1]))
+(let (?e67 (ite (bvsle ?e8 (sign_extend[3] ?e6)) bv1[1] bv0[1]))
+(let (?e68 (repeat[1] ?e54))
+(let (?e69 (bvlshr ?e27 (sign_extend[3] ?e43)))
+(let (?e70 (bvor ?e50 ?e47))
+(let (?e71 (bvnor ?e19 ?e69))
+(let (?e72 (ite (bvuge ?e8 (sign_extend[3] ?e44)) bv1[1] bv0[1]))
+(let (?e73 (rotate_left[0] ?e31))
+(let (?e74 (bvadd v0 (sign_extend[3] ?e58)))
+(let (?e75 (ite (bvsgt ?e68 (sign_extend[3] ?e67)) bv1[1] bv0[1]))
+(let (?e76 (ite (bvslt ?e26 (sign_extend[3] ?e46)) bv1[1] bv0[1]))
+(let (?e77 (bvashr ?e15 ?e23))
+(let (?e78 (ite (bvsle ?e15 ?e74) bv1[1] bv0[1]))
+(let (?e79 (ite (bvugt ?e30 (sign_extend[3] ?e62)) bv1[1] bv0[1]))
+(let (?e80 (rotate_right[2] ?e74))
+(let (?e81 (ite (bvslt (zero_extend[3] ?e28) ?e35) bv1[1] bv0[1]))
+(let (?e82 (ite (= ?e56 ?e14) bv1[1] bv0[1]))
+(let (?e83 (bvnor ?e2 ?e15))
+(let (?e84 (sign_extend[1] ?e14))
+(let (?e85 (bvshl ?e24 (sign_extend[3] ?e58)))
+(let (?e86 (bvcomp ?e26 (zero_extend[3] ?e14)))
+(let (?e87 (extract[0:0] ?e36))
+(let (?e88 (extract[1:1] ?e19))
+(let (?e89 (ite (bvsle ?e65 (zero_extend[3] ?e76)) bv1[1] bv0[1]))
+(let (?e90 (bvnot ?e61))
+(let (?e91 (bvnor ?e40 (sign_extend[3] ?e67)))
+(let (?e92 (bvand ?e87 ?e82))
+(let (?e93 (bvor ?e68 (sign_extend[3] ?e36)))
+(let (?e94 (bvashr v1 ?e22))
+(let (?e95 (bvshl (zero_extend[3] ?e59) ?e34))
+(let (?e96 (bvmul ?e54 ?e20))
+(let (?e97 (repeat[2] ?e67))
+(let (?e98 (bvcomp ?e42 ?e13))
+(let (?e99 (ite (bvsge ?e83 ?e35) bv1[1] bv0[1]))
+(let (?e100 (bvand ?e93 (zero_extend[3] ?e50)))
+(let (?e101 (ite (= ?e9 ?e23) bv1[1] bv0[1]))
+(let (?e102 (ite (= bv1[1] (extract[0:0] ?e101)) ?e55 ?e69))
+(let (?e103 (zero_extend[2] ?e31))
+(let (?e104 (ite (bvuge ?e64 ?e40) bv1[1] bv0[1]))
+(let (?e105 (bvlshr ?e55 (sign_extend[3] ?e58)))
+(let (?e106 (bvadd ?e31 ?e92))
+(let (?e107 (rotate_left[0] ?e70))
+(let (?e108 (bvmul ?e2 ?e93))
+(let (?e109 (bvor ?e29 (zero_extend[3] ?e86)))
+(let (?e110 (ite (bvsgt ?e29 ?e38) bv1[1] bv0[1]))
+(let (?e111 (bvxnor ?e18 ?e92))
+(let (?e112 (bvneg ?e69))
+(let (?e113 (bvor ?e82 ?e46))
+(let (?e114 (bvnot ?e12))
+(let (?e115 (bvxnor ?e23 v0))
+(let (?e116 (ite (bvult ?e22 ?e26) bv1[1] bv0[1]))
+(let (?e117 (extract[2:2] ?e55))
+(let (?e118 (bvashr (zero_extend[3] ?e86) ?e93))
+(let (?e119 (rotate_left[0] ?e59))
+(let (?e120 (bvnor ?e10 ?e44))
+(let (?e121 (bvashr ?e2 (sign_extend[3] ?e86)))
+(let (?e122 (bvmul ?e24 (sign_extend[3] ?e113)))
+(let (?e123 (sign_extend[2] ?e86))
+(let (?e124 (ite (= bv1[1] (extract[1:1] ?e24)) ?e110 ?e86))
+(let (?e125 (ite (bvule ?e37 (sign_extend[3] ?e47)) bv1[1] bv0[1]))
+(let (?e126 (sign_extend[3] ?e81))
+(let (?e127 (ite (bvsgt ?e21 ?e5) bv1[1] bv0[1]))
+(let (?e128 (bvxor ?e64 (sign_extend[3] ?e127)))
+(let (?e129 (bvnand (zero_extend[3] ?e120) ?e115))
+(let (?e130 (bvand ?e66 ?e11))
+(let (?e131 (ite (bvsgt (zero_extend[3] ?e42) ?e52) bv1[1] bv0[1]))
+(let (?e132 (zero_extend[0] ?e16))
+(let (?e133 (ite (bvule (zero_extend[3] ?e127) ?e68) bv1[1] bv0[1]))
+(let (?e134 (ite (= ?e107 ?e58) bv1[1] bv0[1]))
+(let (?e135 (bvxor ?e93 ?e7))
+(let (?e136 (ite (bvugt ?e55 (zero_extend[3] ?e101)) bv1[1] bv0[1]))
+(let (?e137 (ite (bvule (sign_extend[3] ?e76) ?e2) bv1[1] bv0[1]))
+(let (?e138 (ite (bvsle ?e26 ?e69) bv1[1] bv0[1]))
+(let (?e139 (repeat[1] ?e15))
+(let (?e140 (zero_extend[2] ?e17))
+(let (?e141 (bvor ?e36 ?e138))
+(let (?e142 (rotate_right[0] ?e90))
+(let (?e143 (ite (bvule ?e40 (zero_extend[3] ?e10)) bv1[1] bv0[1]))
+(let (?e144 (bvadd ?e4 (zero_extend[3] ?e107)))
+(let (?e145 (bvlshr ?e109 ?e24))
+(let (?e146 (ite (bvsgt ?e93 ?e109) bv1[1] bv0[1]))
+(let (?e147 (ite (bvsle ?e91 ?e102) bv1[1] bv0[1]))
+(let (?e148 (ite (bvule (sign_extend[3] ?e110) ?e93) bv1[1] bv0[1]))
+(let (?e149 (ite (bvule (sign_extend[1] ?e114) ?e122) bv1[1] bv0[1]))
+(let (?e150 (ite (bvule ?e135 (zero_extend[3] ?e73)) bv1[1] bv0[1]))
+(let (?e151 (ite (= bv1[1] (extract[0:0] ?e44)) ?e74 (zero_extend[3] ?e18)))
+(let (?e152 (ite (= ?e68 ?e96) bv1[1] bv0[1]))
+(let (?e153 (ite (= bv1[1] (extract[3:3] ?e108)) ?e116 ?e44))
+(let (?e154 (ite (bvuge (zero_extend[3] ?e45) ?e19) bv1[1] bv0[1]))
+(let (?e155 (ite (bvsgt ?e22 (sign_extend[3] ?e134)) bv1[1] bv0[1]))
+(let (?e156 (extract[3:3] ?e20))
+(let (?e157 (ite (bvuge ?e65 ?e112) bv1[1] bv0[1]))
+(let (?e158 (repeat[1] ?e12))
+(let (?e159 (rotate_right[1] ?e24))
+(let (?e160 (bvneg ?e84))
+(let (?e161 (ite (bvugt ?e50 ?e82) bv1[1] bv0[1]))
+(let (?e162 (bvnot ?e157))
+(let (?e163 (bvxnor (sign_extend[1] ?e158) ?e132))
+(let (?e164 (ite (= ?e5 (zero_extend[3] ?e18)) bv1[1] bv0[1]))
+(let (?e165 (rotate_left[0] ?e92))
+(let (?e166 (ite (= bv1[1] (extract[0:0] ?e87)) (zero_extend[3] ?e133) ?e80))
+(let (?e167 (ite (distinct (zero_extend[3] ?e155) ?e85) bv1[1] bv0[1]))
+(let (?e168 (bvor (zero_extend[3] ?e134) ?e83))
+(let (?e169 (bvlshr ?e38 ?e65))
+(let (?e170 (bvcomp ?e157 ?e82))
+(let (?e171 (rotate_right[0] ?e66))
+(let (?e172 (ite (bvult ?e41 (sign_extend[1] ?e12)) bv1[1] bv0[1]))
+(let (?e173 (bvshl (sign_extend[3] ?e150) ?e15))
+(let (?e174 (bvashr (zero_extend[3] ?e106) ?e166))
+(let (?e175 (ite (distinct ?e12 (sign_extend[2] ?e99)) bv1[1] bv0[1]))
+(let (?e176 (ite (bvult (zero_extend[3] ?e14) ?e151) bv1[1] bv0[1]))
+(let (?e177 (ite (bvsgt ?e130 ?e44) bv1[1] bv0[1]))
+(let (?e178 (ite (bvslt (sign_extend[3] ?e99) ?e95) bv1[1] bv0[1]))
+(let (?e179 (ite (= bv1[1] (extract[0:0] ?e107)) ?e26 (sign_extend[1] ?e114)))
+(let (?e180 (bvnand (sign_extend[3] ?e72) ?e80))
+(let (?e181 (bvshl ?e71 (zero_extend[3] ?e79)))
+(let (?e182 (bvadd ?e83 ?e100))
+(let (?e183 (bvshl (sign_extend[3] ?e161) ?e15))
+(let (?e184 (bvneg ?e73))
+(let (?e185 (ite (bvsle ?e174 ?e182) bv1[1] bv0[1]))
+(let (?e186 (bvor (zero_extend[3] ?e156) ?e54))
+(let (?e187 (ite (bvult ?e180 ?e22) bv1[1] bv0[1]))
+(let (?e188 (ite (bvsle (sign_extend[3] ?e148) ?e26) bv1[1] bv0[1]))
+(let (?e189 (bvnor (zero_extend[3] ?e18) ?e151))
+(let (?e190 (ite (bvugt ?e122 ?e91) bv1[1] bv0[1]))
+(let (?e191 (bvlshr ?e159 ?e169))
+(let (?e192 (ite (bvslt (zero_extend[3] ?e106) ?e48) bv1[1] bv0[1]))
+(let (?e193 (ite (bvugt ?e96 (zero_extend[3] ?e152)) bv1[1] bv0[1]))
+(let (?e194 (bvor ?e50 ?e171))
+(let (?e195 (bvneg ?e84))
+(let (?e196 (bvashr ?e108 ?e35))
+(let (?e197 (bvlshr (sign_extend[2] ?e47) ?e123))
+(let (?e198 (bvmul ?e7 (sign_extend[3] ?e50)))
+(let (?e199 (extract[0:0] ?e152))
+(let (?e200 (repeat[3] ?e194))
+(let (?e201 (sign_extend[3] ?e13))
+(let (?e202 (bvnand ?e111 ?e194))
+(let (?e203 (bvnot ?e38))
+(let (?e204 (bvadd ?e34 (zero_extend[3] ?e98)))
+(let (?e205 (ite (bvugt ?e6 ?e176) bv1[1] bv0[1]))
+(let (?e206 (bvneg ?e69))
+(let (?e207 (ite (bvsle ?e80 (zero_extend[3] ?e14)) bv1[1] bv0[1]))
+(let (?e208 (ite (= bv1[1] (extract[0:0] ?e189)) (zero_extend[3] ?e172) ?e65))
+(let (?e209 (bvashr ?e161 ?e175))
+(let (?e210 (extract[0:0] ?e75))
+(let (?e211 (repeat[4] ?e72))
+(let (?e212 (bvsub ?e14 ?e43))
+(let (?e213 (concat ?e76 ?e106))
+(let (?e214 (bvand ?e42 ?e117))
+(let (?e215 (bvcomp ?e191 ?e189))
+(let (?e216 (ite (bvuge ?e206 (sign_extend[3] ?e172)) bv1[1] bv0[1]))
+(let (?e217 (bvxnor ?e37 (zero_extend[3] ?e82)))
+(let (?e218 (bvcomp ?e181 ?e94))
+(let (?e219 (ite (bvuge ?e18 ?e124) bv1[1] bv0[1]))
+(let (?e220 (ite (bvule ?e115 (zero_extend[3] ?e42)) bv1[1] bv0[1]))
+(let (?e221 (ite (distinct ?e180 (zero_extend[3] ?e117)) bv1[1] bv0[1]))
+(let (?e222 (bvadd ?e207 ?e67))
+(let (?e223 (bvlshr ?e168 ?e211))
+(let (?e224 (bvsub ?e67 ?e66))
+(let (?e225 (bvashr ?e145 ?e151))
+(let (?e226 (bvcomp (sign_extend[2] ?e97) ?e108))
+(let (?e227 (bvnand ?e15 ?e132))
+(let (?e228 (rotate_right[0] ?e16))
+(let (?e229 (rotate_right[0] ?e152))
+(let (?e230 (extract[3:1] ?e20))
+(let (?e231 (ite (bvslt ?e151 ?e102) bv1[1] bv0[1]))
+(let (?e232 (ite (bvugt ?e5 ?e105) bv1[1] bv0[1]))
+(let (?e233 (bvxnor ?e184 ?e33))
+(let (?e234 (bvashr ?e22 ?e145))
+(let (?e235 (bvnor (zero_extend[2] ?e124) ?e158))
+(let (?e236 (bvlshr ?e181 ?e204))
+(let (?e237 (ite (bvuge ?e121 (zero_extend[3] ?e67)) bv1[1] bv0[1]))
+(let (?e238 (extract[0:0] ?e11))
+(let (?e239 (bvxnor (sign_extend[2] ?e147) ?e12))
+(let (?e240 (bvxor ?e48 (zero_extend[3] ?e147)))
+(let (?e241 (ite (bvsle ?e76 ?e70) bv1[1] bv0[1]))
+(let (?e242 (bvnor (sign_extend[3] ?e130) ?e77))
+(let (?e243 (bvadd (zero_extend[3] ?e220) ?e91))
+(let (?e244 (sign_extend[1] ?e127))
+(let (?e245 (bvneg ?e216))
+(let (?e246 (ite (bvsgt ?e8 (zero_extend[3] ?e190)) bv1[1] bv0[1]))
+(let (?e247 (ite (distinct ?e168 ?e19) bv1[1] bv0[1]))
+(let (?e248 (bvnot ?e238))
+(let (?e249 (bvnand (zero_extend[1] ?e103) ?e5))
+(let (?e250 (ite (bvsgt ?e45 ?e202) bv1[1] bv0[1]))
+(let (?e251 (extract[0:0] ?e46))
+(let (?e252 (zero_extend[0] ?e24))
+(let (?e253 (ite (bvsge ?e225 ?e35) bv1[1] bv0[1]))
+(let (?e254 (bvashr (zero_extend[3] ?e92) ?e80))
+(let (?e255 (ite (bvule (zero_extend[3] ?e210) ?e174) bv1[1] bv0[1]))
+(let (?e256 (ite (bvult ?e154 ?e42) bv1[1] bv0[1]))
+(let (?e257 (ite (bvsgt ?e90 ?e67) bv1[1] bv0[1]))
+(let (?e258 (bvsub ?e197 (sign_extend[1] ?e195)))
+(let (?e259 (ite (bvugt ?e106 ?e10) bv1[1] bv0[1]))
+(let (?e260 (bvmul (sign_extend[2] ?e97) ?e163))
+(let (?e261 (rotate_right[2] ?e93))
+(let (?e262 (repeat[3] ?e251))
+(let (?e263 (bvshl (sign_extend[3] ?e162) ?e217))
+(let (?e264 (zero_extend[0] ?e144))
+(let (?e265 (bvor ?e77 (zero_extend[3] ?e192)))
+(let (?e266 (ite (= bv1[1] (extract[0:0] ?e131)) ?e17 ?e231))
+(let (?e267 (ite (= ?e95 (sign_extend[3] ?e127)) bv1[1] bv0[1]))
+(let (?e268 (bvneg ?e132))
+(let (?e269 (ite (bvuge (sign_extend[2] ?e257) ?e123) bv1[1] bv0[1]))
+(let (?e270 (ite (bvslt ?e179 ?e24) bv1[1] bv0[1]))
+(let (?e271 (bvashr ?e192 ?e150))
+(let (?e272 (ite (bvult ?e220 ?e224) bv1[1] bv0[1]))
+(let (?e273 (bvmul ?e35 ?e126))
+(let (?e274 (ite (bvsge ?e225 (sign_extend[3] ?e170)) bv1[1] bv0[1]))
+(let (?e275 (bvxnor (zero_extend[3] ?e31) ?e196))
+(let (?e276 (ite (bvslt (sign_extend[2] ?e160) ?e109) bv1[1] bv0[1]))
+(let (?e277 (bvcomp ?e108 (sign_extend[3] ?e39)))
+(let (?e278 (bvmul ?e223 (sign_extend[3] ?e276)))
+(let (?e279 (ite (bvsge ?e82 ?e167) bv1[1] bv0[1]))
+(let (?e280 (zero_extend[0] ?e74))
+(let (?e281 (ite (bvsgt ?e55 (zero_extend[3] ?e190)) bv1[1] bv0[1]))
+(let (?e282 (extract[0:0] ?e13))
+(let (?e283 (bvneg ?e49))
+(let (?e284 (bvcomp ?e269 ?e130))
+(let (?e285 (rotate_right[3] ?e29))
+(let (?e286 (bvnot ?e231))
+(let (?e287 (ite (bvugt ?e172 ?e202) bv1[1] bv0[1]))
+(let (?e288 (rotate_right[3] ?e54))
+(let (?e289 (ite (bvsgt ?e135 (zero_extend[3] ?e56)) bv1[1] bv0[1]))
+(let (?e290 (ite (bvuge ?e91 v1) bv1[1] bv0[1]))
+(let (?e291 (bvlshr ?e167 ?e167))
+(let (?e292 (ite (bvugt (sign_extend[3] ?e185) ?e94) bv1[1] bv0[1]))
+(let (?e293 (bvor ?e178 ?e162))
+(let (?e294 (bvadd (zero_extend[3] ?e58) ?e51))
+(let (?e295 (ite (bvule ?e139 (sign_extend[3] ?e277)) bv1[1] bv0[1]))
+(let (?e296 (repeat[1] ?e23))
+(let (?e297 (ite (distinct (sign_extend[3] ?e82) ?e64) bv1[1] bv0[1]))
+(let (?e298 (bvnand (sign_extend[1] ?e197) ?e181))
+(let (?e299 (bvmul ?e283 ?e210))
+(let (?e300 (sign_extend[0] ?e2))
+(let (?e301 (sign_extend[3] ?e75))
+(let (?e302 (bvnot ?e236))
+(let (?e303 (bvsub ?e247 ?e99))
+(let (?e304 (ite (bvsge ?e247 ?e193) bv1[1] bv0[1]))
+(let (?e305 (ite (bvslt ?e24 ?e225) bv1[1] bv0[1]))
+(let (?e306 (ite (bvsge (sign_extend[3] ?e131) ?e37) bv1[1] bv0[1]))
+(let (?e307 (ite (bvugt (sign_extend[1] ?e12) ?e80) bv1[1] bv0[1]))
+(let (?e308 (zero_extend[3] ?e229))
+(let (?e309 (sign_extend[0] ?e139))
+(let (?e310 (rotate_left[0] ?e161))
+(let (?e311 (rotate_left[0] ?e188))
+(let (?e312 (ite (bvsge (zero_extend[3] ?e226) ?e203) bv1[1] bv0[1]))
+(let (?e313 (bvor ?e121 ?e234))
+(let (?e314 (ite (bvuge (sign_extend[1] ?e239) ?e294) bv1[1] bv0[1]))
+(let (?e315 (ite (bvuge ?e31 ?e176) bv1[1] bv0[1]))
+(let (?e316 (ite (bvuge ?e288 (zero_extend[3] ?e134)) bv1[1] bv0[1]))
+(let (?e317 (bvlshr ?e4 (sign_extend[3] ?e133)))
+(let (?e318 (ite (bvsgt ?e24 ?e102) bv1[1] bv0[1]))
+(let (?e319 (bvneg ?e91))
+(let (?e320 (bvnot ?e291))
+(let (?e321 (bvcomp ?e11 ?e293))
+(let (?e322 (bvlshr ?e101 ?e232))
+(let (?e323 (bvnand ?e58 ?e82))
+(let (?e324 (ite (distinct ?e35 ?e234) bv1[1] bv0[1]))
+(let (?e325 (bvnor ?e2 ?e5))
+(let (?e326 (bvnand (sign_extend[3] ?e212) ?e249))
+(let (?e327 (ite (bvugt ?e323 ?e125) bv1[1] bv0[1]))
+(let (?e328 (rotate_right[1] ?e109))
+(let (?e329 (ite (= v1 (zero_extend[3] ?e32)) bv1[1] bv0[1]))
+(let (?e330 (sign_extend[1] ?e103))
+(let (?e331 (bvcomp ?e279 ?e125))
+(let (?e332 (bvmul ?e126 (sign_extend[3] ?e73)))
+(let (?e333 (ite (bvuge (sign_extend[3] ?e119) ?e203) bv1[1] bv0[1]))
+(let (?e334 (concat ?e197 ?e88))
+(let (?e335 (repeat[1] ?e235))
+(let (?e336 (bvand ?e281 ?e307))
+(let (?e337 (bvsub ?e207 ?e79))
+(let (?e338 (bvneg ?e298))
+(let (?e339 (ite (bvule (zero_extend[3] ?e120) ?e236) bv1[1] bv0[1]))
+(let (?e340 (bvshl (sign_extend[3] ?e282) ?e332))
+(let (?e341 (ite (bvuge ?e90 ?e237) bv1[1] bv0[1]))
+(let (?e342 (ite (bvult ?e316 ?e14) bv1[1] bv0[1]))
+(let (?e343 (rotate_right[1] ?e191))
+(let (?e344 (bvmul (sign_extend[3] ?e277) ?e308))
+(let (?e345 (ite (bvsge ?e220 ?e321) bv1[1] bv0[1]))
+(let (?e346 (sign_extend[3] ?e259))
+(let (?e347 (ite (= (sign_extend[1] ?e291) ?e160) bv1[1] bv0[1]))
+(let (?e348 (bvadd ?e54 (zero_extend[3] ?e232)))
+(let (?e349 (ite (bvuge (zero_extend[2] ?e279) ?e140) bv1[1] bv0[1]))
+(let (?e350 (bvand ?e148 ?e248))
+(let (?e351 (bvnot ?e234))
+(let (?e352 (ite (bvsle (zero_extend[3] ?e222) ?e211) bv1[1] bv0[1]))
+(let (?e353 (ite (bvuge (sign_extend[3] ?e76) ?e30) bv1[1] bv0[1]))
+(let (?e354 (sign_extend[0] ?e57))
+(let (?e355 (ite (bvsge (zero_extend[3] ?e78) ?e189) bv1[1] bv0[1]))
+(let (?e356 (rotate_left[3] ?e186))
+(let (?e357 (ite (bvule ?e172 ?e221) bv1[1] bv0[1]))
+(let (?e358 (extract[2:1] ?e126))
+(let (?e359 (bvxnor ?e40 (sign_extend[3] ?e6)))
+(let (?e360 (bvshl ?e144 (zero_extend[3] ?e327)))
+(let (?e361 (bvadd (zero_extend[3] ?e39) ?e240))
+(let (?e362 (extract[0:0] ?e246))
+(let (?e363 (sign_extend[1] ?e188))
+(let (?e364 (ite (bvsle (sign_extend[3] ?e321) ?e332) bv1[1] bv0[1]))
+(let (?e365 (ite (bvsle ?e195 (sign_extend[1] ?e133)) bv1[1] bv0[1]))
+(let (?e366 (bvor (zero_extend[3] ?e293) ?e204))
+(let (?e367 (ite (bvsge ?e85 (sign_extend[3] ?e219)) bv1[1] bv0[1]))
+(let (?e368 (bvnand ?e33 ?e310))
+(let (?e369 (bvneg ?e303))
+(let (?e370 (ite (bvsle ?e168 ?e63) bv1[1] bv0[1]))
+(let (?e371 (bvashr ?e251 ?e310))
+(let (?e372 (ite (bvsge (sign_extend[3] ?e276) ?e9) bv1[1] bv0[1]))
+(let (?e373 (ite (bvslt (zero_extend[3] ?e82) ?e37) bv1[1] bv0[1]))
+(let (?e374 (bvneg ?e277))
+(let (?e375 (ite (= ?e361 ?e317) bv1[1] bv0[1]))
+(let (?e376 (bvmul (sign_extend[2] ?e205) ?e12))
+(let (?e377 (ite (= ?e196 (sign_extend[3] ?e311)) bv1[1] bv0[1]))
+(let (?e378 (ite (distinct ?e25 ?e260) bv1[1] bv0[1]))
+(let (?e379 (bvor ?e217 (sign_extend[3] ?e67)))
+(let (?e380 (bvadd (sign_extend[3] ?e218) ?e263))
+(let (?e381 (ite (= ?e132 (zero_extend[3] ?e32)) bv1[1] bv0[1]))
+(let (?e382 (ite (bvuge (sign_extend[3] ?e205) ?e356) bv1[1] bv0[1]))
+(let (?e383 (bvxor ?e338 ?e27))
+(let (?e384 (extract[0:0] ?e104))
+(let (?e385 (bvnot ?e333))
+(let (?e386 (rotate_right[0] ?e267))
+(let (?e387 (bvadd ?e368 ?e307))
+(let (?e388 (ite (bvult ?e351 (zero_extend[3] ?e272)) bv1[1] bv0[1]))
+(let (?e389 (bvnot ?e209))
+(let (?e390 (bvand ?e290 ?e251))
+(let (?e391 (repeat[2] ?e185))
+(let (?e392 (bvlshr ?e6 ?e14))
+(let (?e393 (ite (bvuge ?e100 (zero_extend[3] ?e150)) bv1[1] bv0[1]))
+(let (?e394 (bvshl ?e351 (sign_extend[2] ?e84)))
+(let (?e395 (bvxnor ?e345 ?e381))
+(let (?e396 (repeat[1] ?e387))
+(let (?e397 (bvsub ?e98 ?e187))
+(let (?e398 (extract[2:1] ?e118))
+(let (?e399 (bvxor ?e27 ?e186))
+(let (?e400 (bvshl ?e336 ?e374))
+(let (?e401 (ite (bvugt ?e273 (sign_extend[3] ?e73)) bv1[1] bv0[1]))
+(let (?e402 (rotate_right[0] ?e76))
+(let (?e403 (rotate_right[0] ?e255))
+(let (?e404 (ite (= bv1[1] (extract[2:2] ?e301)) ?e317 (zero_extend[3] ?e150)))
+(let (?e405 (bvshl ?e140 (zero_extend[2] ?e393)))
+(let (?e406 (bvnor (sign_extend[2] ?e97) ?e249))
+(let (?e407 (bvnor (zero_extend[1] ?e12) ?e328))
+(let (?e408 (sign_extend[0] ?e94))
+(let (?e409 (ite (bvsge (zero_extend[3] ?e250) ?e354) bv1[1] bv0[1]))
+(let (?e410 (extract[0:0] ?e42))
+(let (?e411 (bvshl ?e144 ?e80))
+(let (?e412 (bvnand (zero_extend[3] ?e316) ?e63))
+(let (?e413 (ite (bvsgt ?e22 (zero_extend[3] ?e303)) bv1[1] bv0[1]))
+(let (?e414 (bvxnor ?e340 ?e201))
+(let (?e415 (ite (bvsgt ?e93 (zero_extend[3] ?e349)) bv1[1] bv0[1]))
+(let (?e416 (bvand ?e54 (sign_extend[3] ?e119)))
+(let (?e417 (ite (bvuge ?e93 (sign_extend[3] ?e222)) bv1[1] bv0[1]))
+(let (?e418 (bvneg ?e392))
+(let (?e419 (bvxor ?e223 ?e159))
+(let (?e420 (ite (distinct ?e64 (sign_extend[3] ?e131)) bv1[1] bv0[1]))
+(let (?e421 (ite (bvslt (sign_extend[3] ?e136) ?e63) bv1[1] bv0[1]))
+(let (?e422 (rotate_left[1] ?e196))
+(let (?e423 (bvashr ?e13 ?e184))
+(let (?e424 (bvxor ?e402 ?e369))
+(let (?e425 (bvxnor ?e135 ?e64))
+(let (?e426 (ite (distinct ?e234 ?e4) bv1[1] bv0[1]))
+(let (?e427 (ite (= bv1[1] (extract[3:3] ?e16)) ?e20 ?e243))
+(let (?e428 (bvmul ?e142 ?e222))
+(let (?e429 (ite (= bv1[1] (extract[3:3] ?e294)) (zero_extend[1] ?e200) ?e406))
+(let (?e430 (bvcomp (zero_extend[3] ?e233) ?e422))
+(let (?e431 (bvshl ?e144 ?e301))
+(let (?e432 (concat ?e193 ?e218))
+(let (?e433 (zero_extend[2] ?e362))
+(let (?e434 (bvashr ?e373 ?e62))
+(let (?e435 (bvshl ?e96 (sign_extend[3] ?e397)))
+(let (?e436 (bvmul ?e64 ?e22))
+(let (?e437 (ite (bvule ?e101 ?e138) bv1[1] bv0[1]))
+(let (?e438 (ite (bvugt ?e102 ?e93) bv1[1] bv0[1]))
+(let (?e439 (ite (bvslt (zero_extend[3] ?e125) ?e313) bv1[1] bv0[1]))
+(let (?e440 (extract[2:2] ?e7))
+(let (?e441 (ite (distinct ?e229 ?e279) bv1[1] bv0[1]))
+(let (?e442 (bvadd ?e97 (zero_extend[1] ?e101)))
+(let (?e443 (ite (bvsgt (sign_extend[3] ?e327) ?e52) bv1[1] bv0[1]))
+(let (?e444 (bvxor ?e168 (sign_extend[3] ?e331)))
+(let (?e445 (bvashr ?e39 ?e90))
+(let (?e446 (rotate_left[0] ?e138))
+(let (?e447 (ite (bvsge ?e148 ?e222) bv1[1] bv0[1]))
+(let (?e448 (bvnor ?e298 ?e34))
+(let (?e449 (bvashr ?e33 ?e157))
+(let (?e450 (ite (bvuge (zero_extend[3] ?e377) ?e135) bv1[1] bv0[1]))
+(let (?e451 (bvnot ?e375))
+(let (?e452 (ite (bvult ?e413 ?e415) bv1[1] bv0[1]))
+(let (?e453 (bvashr (sign_extend[3] ?e409) ?e57))
+(let (?e454 (ite (bvsge ?e67 ?e82) bv1[1] bv0[1]))
+(let (?e455 (ite (= bv1[1] (extract[2:2] ?e217)) (sign_extend[3] ?e153) ?e275))
+(let (?e456 (bvcomp ?e328 (sign_extend[3] ?e377)))
+(let (?e457 (bvneg ?e278))
+(let (?e458 (ite (bvugt (sign_extend[3] ?e134) ?e30) bv1[1] bv0[1]))
+(let (?e459 (extract[2:1] ?e57))
+(let (?e460 (rotate_left[0] ?e289))
+(let (?e461 (ite (bvule ?e96 (zero_extend[1] ?e433)) bv1[1] bv0[1]))
+(let (?e462 (ite (distinct ?e236 (zero_extend[3] ?e291)) bv1[1] bv0[1]))
+(let (?e463 (ite (bvuge ?e260 ?e300) bv1[1] bv0[1]))
+(let (?e464 (bvnot ?e429))
+(let (?e465 (sign_extend[0] ?e160))
+(let (?e466 (bvnor ?e328 (sign_extend[3] ?e50)))
+(let (?e467 (bvxor (sign_extend[1] ?e123) ?e394))
+(let (?e468 (concat ?e262 ?e336))
+(let (?e469 (bvor ?e215 ?e231))
+(let (?e470 (bvshl ?e463 ?e415))
+(let (?e471 (ite (bvugt ?e37 ?e96) bv1[1] bv0[1]))
+(let (?e472 (bvxnor ?e328 (zero_extend[1] ?e235)))
+(let (?e473 (ite (bvugt ?e309 (sign_extend[1] ?e140)) bv1[1] bv0[1]))
+(let (?e474 (bvadd ?e359 ?e448))
+(let (?e475 (bvxor ?e22 (sign_extend[3] ?e277)))
+(let (?e476 (bvsub ?e76 ?e137))
+(let (?e477 (bvsub ?e469 ?e148))
+(let (?e478 (bvneg ?e102))
+(let (?e479 (bvneg ?e67))
+(let (?e480 (bvnot ?e49))
+(let (?e481 (bvlshr ?e145 (zero_extend[3] ?e272)))
+(let (?e482 (ite (bvult ?e110 ?e220) bv1[1] bv0[1]))
+(let (?e483 (ite (bvsgt ?e65 (sign_extend[3] ?e207)) bv1[1] bv0[1]))
+(let (?e484 (repeat[2] ?e459))
+(let (?e485 (concat ?e222 ?e164))
+(let (?e486 (rotate_right[0] ?e238))
+(let (?e487 (bvneg ?e178))
+(let (?e488 (bvnot ?e43))
+(let (?e489 (bvnor ?e145 ?e268))
+(let (?e490 (sign_extend[1] ?e370))
+(let (?e491 (zero_extend[0] ?e179))
+(let (?e492 (bvnot ?e25))
+(let (?e493 (bvnand ?e122 ?e163))
+(let (?e494 (bvcomp ?e247 ?e222))
+(let (?e495 (ite (bvsgt (zero_extend[2] ?e465) ?e351) bv1[1] bv0[1]))
+(let (?e496 (bvxor (sign_extend[3] ?e218) ?e252))
+(let (?e497 (bvneg ?e153))
+(let (?e498 (bvnor ?e56 ?e47))
+(let (?e499 (ite (bvsle ?e357 ?e483) bv1[1] bv0[1]))
+(let (?e500 (sign_extend[2] ?e281))
+(let (?e501 (repeat[1] ?e83))
+(let (?e502 (ite (bvsgt ?e52 (zero_extend[3] ?e233)) bv1[1] bv0[1]))
+(let (?e503 (ite (bvsle (zero_extend[3] ?e439) ?e380) bv1[1] bv0[1]))
+(let (?e504 (ite (bvsge ?e343 (sign_extend[3] ?e428)) bv1[1] bv0[1]))
+(let (?e505 (bvxnor (sign_extend[1] ?e258) ?e9))
+(let (?e506 (bvshl ?e58 ?e119))
+(let (?e507 (bvmul ?e111 ?e357))
+(let (?e508 (bvand (zero_extend[3] ?e374) ?e263))
+(let (?e509 (bvshl ?e270 ?e194))
+(let (?e510 (ite (= ?e106 ?e449) bv1[1] bv0[1]))
+(let (?e511 (extract[0:0] ?e483))
+(let (?e512 (bvneg ?e142))
+(let (?e513 (bvcomp (zero_extend[3] ?e372) ?e411))
+(let (?e514 (repeat[3] ?e388))
+(let (?e515 (bvor (zero_extend[3] ?e270) ?e406))
+(let (?e516 (bvsub (sign_extend[3] ?e415) ?e20))
+(let (?e517 (bvxor ?e9 ?e217))
+(let (?e518 (rotate_right[0] ?e119))
+(let (?e519 (bvshl ?e250 ?e192))
+(let (?e520 (bvcomp (sign_extend[3] ?e471) ?e464))
+(let (?e521 (ite (= bv1[1] (extract[2:2] ?e407)) ?e479 ?e423))
+(let (?e522 (rotate_right[2] ?e508))
+(let (?e523 (ite (distinct ?e348 (zero_extend[1] ?e500)) bv1[1] bv0[1]))
+(let (?e524 (ite (= ?e186 ?e383) bv1[1] bv0[1]))
+(let (?e525 (bvxnor ?e249 (sign_extend[3] ?e318)))
+(let (?e526 (ite (= bv1[1] (extract[0:0] ?e450)) (zero_extend[3] ?e306) ?e425))
+(let (?e527 (bvmul (zero_extend[3] ?e445) ?e179))
+(let (?e528 (ite (= bv1[1] (extract[2:2] ?e429)) (sign_extend[3] ?e314) ?e263))
+(let (?e529 (ite (bvult ?e255 ?e327) bv1[1] bv0[1]))
+(let (?e530 (extract[0:0] ?e458))
+(let (?e531 (extract[0:0] ?e364))
+(let (?e532 (rotate_left[2] ?e268))
+(let (?e533 (bvxor (zero_extend[3] ?e529) ?e25))
+(let (?e534 (bvor ?e35 ?e294))
+(let (?e535 (ite (bvsge ?e37 (sign_extend[3] ?e499)) bv1[1] bv0[1]))
+(let (?e536 (bvneg ?e135))
+(let (?e537 (bvlshr ?e155 ?e267))
+(let (?e538 (ite (bvsle (zero_extend[2] ?e33) ?e140) bv1[1] bv0[1]))
+(let (?e539 (ite (bvslt ?e422 ?e416) bv1[1] bv0[1]))
+(let (?e540 (bvcomp ?e282 ?e283))
+(let (?e541 (bvand ?e160 (sign_extend[1] ?e116)))
+(let (?e542 (repeat[1] ?e457))
+(let (?e543 (rotate_left[0] ?e186))
+(let (?e544 (ite (bvule ?e493 (zero_extend[3] ?e233)) bv1[1] bv0[1]))
+(let (?e545 (rotate_left[0] ?e523))
+(let (?e546 (bvcomp ?e359 (zero_extend[3] ?e372)))
+(let (?e547 (bvcomp (zero_extend[3] ?e248) ?e489))
+(let (?e548 (ite (distinct (zero_extend[2] ?e432) ?e29) bv1[1] bv0[1]))
+(let (?e549 (ite (bvsle ?e193 ?e327) bv1[1] bv0[1]))
+(let (?e550 (bvxor (zero_extend[3] ?e281) ?e2))
+(let (?e551 (bvxor (sign_extend[3] ?e130) ?e429))
+(let (?e552 (sign_extend[0] ?e118))
+(let (?e553 (ite (bvslt ?e467 (sign_extend[1] ?e12)) bv1[1] bv0[1]))
+(let (?e554 (ite (bvsgt ?e461 ?e364) bv1[1] bv0[1]))
+(let (?e555 (bvor ?e152 ?e184))
+(let (?e556 (bvnor ?e65 (zero_extend[2] ?e391)))
+(let (?e557 (bvxnor ?e75 ?e237))
+(let (?e558 (bvneg ?e118))
+(let (?e559 (bvand ?e328 (zero_extend[3] ?e125)))
+(let (?e560 (bvxnor (zero_extend[3] ?e147) ?e264))
+(let (?e561 (bvadd ?e328 (sign_extend[3] ?e495)))
+(let (?e562 (bvnot ?e432))
+(let (?e563 (bvmul ?e194 ?e92))
+(let (?e564 (ite (bvuge ?e232 ?e333) bv1[1] bv0[1]))
+(let (?e565 (bvadd (zero_extend[1] ?e244) ?e262))
+(let (?e566 (bvlshr (sign_extend[1] ?e232) ?e195))
+(let (?e567 (rotate_left[0] ?e358))
+(let (?e568 (bvxnor ?e43 ?e67))
+(let (?e569 (bvor ?e32 ?e250))
+(let (?e570 (bvcomp ?e260 ?e550))
+(let (?e571 (zero_extend[0] ?e9))
+(let (?e572 (bvor ?e395 ?e369))
+(let (?e573 (ite (bvult ?e294 ?e242) bv1[1] bv0[1]))
+(let (?e574 (ite (bvult ?e157 ?e392) bv1[1] bv0[1]))
+(let (?e575 (bvxor ?e258 (sign_extend[2] ?e18)))
+(let (?e576 (bvlshr ?e504 ?e421))
+(let (?e577 (bvshl ?e424 ?e277))
+(let (?e578 (zero_extend[0] ?e217))
+(let (?e579 (rotate_left[3] ?e526))
+(let (?e580 (ite (bvsge ?e172 ?e539) bv1[1] bv0[1]))
+(let (?e581 (bvxnor (sign_extend[3] ?e270) ?e228))
+(let (?e582 (rotate_left[0] ?e420))
+(let (?e583 (zero_extend[3] ?e413))
+(let (?e584 (zero_extend[1] ?e392))
+(let (?e585 (bvcomp (sign_extend[1] ?e246) ?e490))
+(let (?e586 (rotate_left[0] ?e315))
+(let (?e587 (bvand ?e156 ?e580))
+(let (?e588 (bvnor (zero_extend[3] ?e224) ?e455))
+(let (?e589 (ite (bvuge ?e205 ?e167) bv1[1] bv0[1]))
+(let (?e590 (repeat[1] ?e181))
+(let (?e591 (bvnand ?e80 (sign_extend[3] ?e470)))
+(let (?e592 (ite (= ?e316 ?e32) bv1[1] bv0[1]))
+(let (?e593 (bvor ?e126 (sign_extend[3] ?e36)))
+(let (?e594 (ite (bvsgt (zero_extend[3] ?e282) ?e559) bv1[1] bv0[1]))
+(let (?e595 (ite (distinct (zero_extend[3] ?e149) ?e466) bv1[1] bv0[1]))
+(let (?e596 (ite (bvuge (zero_extend[3] ?e438) ?e453) bv1[1] bv0[1]))
+(let (?e597 (ite (bvugt ?e340 ?e65) bv1[1] bv0[1]))
+(let (?e598 (ite (bvsgt (sign_extend[3] ?e185) ?e429) bv1[1] bv0[1]))
+(let (?e599 (ite (bvsge (zero_extend[3] ?e67) ?e71) bv1[1] bv0[1]))
+(let (?e600 (bvor ?e497 ?e424))
+(let (?e601 (extract[2:1] ?e198))
+(let (?e602 (ite (bvslt ?e212 ?e47) bv1[1] bv0[1]))
+(let (?e603 (ite (bvsgt ?e204 ?e132) bv1[1] bv0[1]))
+(let (?e604 (ite (bvsge ?e115 (sign_extend[3] ?e150)) bv1[1] bv0[1]))
+(let (?e605 (bvor ?e487 ?e420))
+(let (?e606 (ite (bvslt (zero_extend[3] ?e216) ?e34) bv1[1] bv0[1]))
+(let (?e607 (bvand ?e556 (zero_extend[3] ?e233)))
+(let (?e608 (bvnot ?e303))
+(let (?e609 (bvmul ?e291 ?e295))
+(let (?e610 (ite (bvslt ?e266 ?e554) bv1[1] bv0[1]))
+(let (?e611 (repeat[1] ?e140))
+(let (?e612 (bvashr ?e77 (sign_extend[3] ?e519)))
+(let (?e613 (bvashr (zero_extend[3] ?e382) ?e118))
+(let (?e614 (bvand (sign_extend[2] ?e499) ?e200))
+(let (?e615 (sign_extend[1] ?e443))
+(let (?e616 (repeat[2] ?e495))
+(let (?e617 (sign_extend[0] ?e583))
+(let (?e618 (ite (bvuge (sign_extend[3] ?e418) ?e612) bv1[1] bv0[1]))
+(let (?e619 (sign_extend[3] ?e202))
+(let (?e620 (bvand (zero_extend[3] ?e253) ?e425))
+(let (?e621 (ite (distinct ?e419 ?e448) bv1[1] bv0[1]))
+(let (?e622 (ite (distinct ?e516 (sign_extend[3] ?e231)) bv1[1] bv0[1]))
+(let (?e623 (bvmul ?e23 (zero_extend[3] ?e75)))
+(let (?e624 (ite (bvsle ?e438 ?e488) bv1[1] bv0[1]))
+(let (?e625 (ite (bvsge ?e312 ?e316) bv1[1] bv0[1]))
+(let (?e626 (ite (bvule (zero_extend[1] ?e514) ?e204) bv1[1] bv0[1]))
+(let (?e627 (repeat[1] ?e562))
+(let (?e628 (bvneg ?e262))
+(let (?e629 (bvashr ?e291 ?e554))
+(let (?e630 (bvxnor ?e589 ?e495))
+(let (?e631 (bvashr ?e509 ?e382))
+(let (?e632 (zero_extend[0] ?e16))
+(let (?e633 (bvnot ?e319))
+(let (?e634 (bvand ?e414 ?e181))
+(let (?e635 (ite (bvsge (sign_extend[3] ?e424) ?e128) bv1[1] bv0[1]))
+(let (?e636 (bvnand ?e451 ?e246))
+(let (?e637 (ite (bvugt (zero_extend[3] ?e530) ?e20) bv1[1] bv0[1]))
+(let (?e638 (bvashr (zero_extend[3] ?e72) ?e551))
+(let (?e639 (ite (bvsge (sign_extend[1] ?e471) ?e485) bv1[1] bv0[1]))
+(let (?e640 (bvor ?e171 ?e226))
+(let (?e641 (ite (bvsle (zero_extend[3] ?e365) ?e550) bv1[1] bv0[1]))
+(let (?e642 (bvmul ?e184 ?e282))
+(let (?e643 (ite (bvsle ?e380 ?e30) bv1[1] bv0[1]))
+(let (?e644 (bvlshr ?e242 (sign_extend[3] ?e219)))
+(let (?e645 (ite (bvsge ?e474 (sign_extend[3] ?e305)) bv1[1] bv0[1]))
+(let (?e646 (bvsub ?e566 (zero_extend[1] ?e18)))
+(let (?e647 (ite (bvsge ?e617 (zero_extend[3] ?e547)) bv1[1] bv0[1]))
+(let (?e648 (rotate_right[0] ?e266))
+(let (?e649 (ite (= (sign_extend[3] ?e418) ?e3) bv1[1] bv0[1]))
+(flet ($e650 (distinct ?e424 ?e28))
+(flet ($e651 (bvuge ?e128 (zero_extend[3] ?e305)))
+(flet ($e652 (distinct ?e448 (zero_extend[3] ?e599)))
+(flet ($e653 (bvsle ?e359 ?e330))
+(flet ($e654 (bvsle ?e112 (zero_extend[3] ?e53)))
+(flet ($e655 (distinct (sign_extend[3] ?e540) ?e551))
+(flet ($e656 (distinct ?e334 (zero_extend[3] ?e375)))
+(flet ($e657 (bvsgt ?e564 ?e512))
+(flet ($e658 (bvslt ?e526 v1))
+(flet ($e659 (bvuge (sign_extend[3] ?e598) ?e533))
+(flet ($e660 (bvuge (zero_extend[1] ?e152) ?e627))
+(flet ($e661 (bvsgt ?e27 ?e115))
+(flet ($e662 (bvsle ?e295 ?e215))
+(flet ($e663 (bvslt ?e582 ?e46))
+(flet ($e664 (bvuge (sign_extend[3] ?e362) ?e593))
+(flet ($e665 (bvsle ?e62 ?e322))
+(flet ($e666 (bvsgt ?e14 ?e630))
+(flet ($e667 (distinct ?e429 ?e464))
+(flet ($e668 (bvuge ?e549 ?e635))
+(flet ($e669 (= ?e583 (zero_extend[3] ?e295)))
+(flet ($e670 (bvsgt (sign_extend[3] ?e476) ?e536))
+(flet ($e671 (distinct ?e414 (sign_extend[3] ?e519)))
+(flet ($e672 (bvsgt ?e312 ?e507))
+(flet ($e673 (bvult ?e80 (zero_extend[3] ?e437)))
+(flet ($e674 (distinct ?e488 ?e420))
+(flet ($e675 (distinct ?e383 ?e191))
+(flet ($e676 (bvsgt ?e516 (zero_extend[3] ?e421)))
+(flet ($e677 (= ?e303 ?e117))
+(flet ($e678 (bvslt ?e87 ?e175))
+(flet ($e679 (distinct ?e298 ?e41))
+(flet ($e680 (bvsge (zero_extend[1] ?e376) v0))
+(flet ($e681 (bvuge ?e384 ?e284))
+(flet ($e682 (= (zero_extend[3] ?e544) ?e105))
+(flet ($e683 (bvule (zero_extend[3] ?e218) ?e431))
+(flet ($e684 (bvsge ?e402 ?e53))
+(flet ($e685 (bvsle ?e288 (zero_extend[3] ?e386)))
+(flet ($e686 (bvule ?e44 ?e210))
+(flet ($e687 (= (sign_extend[3] ?e486) ?e407))
+(flet ($e688 (bvsle ?e375 ?e369))
+(flet ($e689 (bvule ?e94 (sign_extend[3] ?e59)))
+(flet ($e690 (distinct (zero_extend[3] ?e238) ?e419))
+(flet ($e691 (= (zero_extend[3] ?e155) ?e571))
+(flet ($e692 (bvult ?e292 ?e368))
+(flet ($e693 (= (sign_extend[3] ?e454) ?e436))
+(flet ($e694 (bvuge ?e605 ?e143))
+(flet ($e695 (bvuge ?e390 ?e597))
+(flet ($e696 (bvugt ?e147 ?e349))
+(flet ($e697 (bvsle ?e565 (sign_extend[2] ?e164)))
+(flet ($e698 (= ?e596 ?e119))
+(flet ($e699 (bvsgt (zero_extend[3] ?e92) ?e334))
+(flet ($e700 (bvugt ?e74 ?e343))
+(flet ($e701 (bvugt (sign_extend[1] ?e200) ?e173))
+(flet ($e702 (bvsgt ?e268 (zero_extend[3] ?e549)))
+(flet ($e703 (bvugt ?e525 (zero_extend[3] ?e499)))
+(flet ($e704 (bvuge ?e45 ?e233))
+(flet ($e705 (= ?e259 ?e291))
+(flet ($e706 (= ?e41 ?e38))
+(flet ($e707 (bvsle ?e290 ?e647))
+(flet ($e708 (= (zero_extend[3] ?e266) ?e48))
+(flet ($e709 (bvugt ?e240 ?e16))
+(flet ($e710 (bvult ?e391 (zero_extend[1] ?e202)))
+(flet ($e711 (bvult ?e306 ?e413))
+(flet ($e712 (bvsgt (sign_extend[2] ?e646) ?e196))
+(flet ($e713 (bvsgt ?e238 ?e337))
+(flet ($e714 (bvult (zero_extend[3] ?e13) ?e612))
+(flet ($e715 (bvugt ?e242 (zero_extend[3] ?e295)))
+(flet ($e716 (bvuge ?e416 (zero_extend[3] ?e580)))
+(flet ($e717 (bvslt ?e206 ?e425))
+(flet ($e718 (bvugt ?e6 ?e589))
+(flet ($e719 (bvugt ?e64 (sign_extend[3] ?e270)))
+(flet ($e720 (bvsge ?e337 ?e418))
+(flet ($e721 (bvult ?e594 ?e374))
+(flet ($e722 (bvsle ?e400 ?e133))
+(flet ($e723 (bvugt ?e20 (zero_extend[3] ?e495)))
+(flet ($e724 (bvult ?e321 ?e251))
+(flet ($e725 (bvuge ?e236 (sign_extend[3] ?e540)))
+(flet ($e726 (= (sign_extend[3] ?e248) ?e29))
+(flet ($e727 (bvule (zero_extend[3] ?e165) ?e240))
+(flet ($e728 (= ?e411 ?e85))
+(flet ($e729 (bvuge (sign_extend[3] ?e454) ?e313))
+(flet ($e730 (bvsge ?e352 ?e110))
+(flet ($e731 (distinct ?e120 ?e430))
+(flet ($e732 (bvsgt (sign_extend[3] ?e295) ?e126))
+(flet ($e733 (bvsge ?e248 ?e214))
+(flet ($e734 (distinct (sign_extend[3] ?e292) ?e491))
+(flet ($e735 (bvslt ?e95 (sign_extend[3] ?e367)))
+(flet ($e736 (bvuge ?e207 ?e89))
+(flet ($e737 (distinct ?e618 ?e342))
+(flet ($e738 (bvsge ?e319 (sign_extend[3] ?e507)))
+(flet ($e739 (bvuge (sign_extend[3] ?e362) ?e203))
+(flet ($e740 (bvsgt ?e285 (zero_extend[3] ?e554)))
+(flet ($e741 (bvsge (zero_extend[3] ?e357) ?e21))
+(flet ($e742 (bvule ?e27 ?e109))
+(flet ($e743 (bvsle ?e400 ?e92))
+(flet ($e744 (bvugt ?e100 ?e542))
+(flet ($e745 (distinct ?e533 ?e223))
+(flet ($e746 (bvsgt ?e613 ?e285))
+(flet ($e747 (= (zero_extend[3] ?e362) ?e85))
+(flet ($e748 (bvsge (sign_extend[3] ?e401) ?e118))
+(flet ($e749 (bvsgt ?e453 (zero_extend[3] ?e101)))
+(flet ($e750 (distinct ?e276 ?e378))
+(flet ($e751 (bvslt ?e288 (zero_extend[3] ?e608)))
+(flet ($e752 (distinct ?e509 ?e487))
+(flet ($e753 (distinct (zero_extend[2] ?e341) ?e405))
+(flet ($e754 (bvule ?e71 (zero_extend[3] ?e460)))
+(flet ($e755 (bvuge (sign_extend[3] ?e592) ?e275))
+(flet ($e756 (bvsle ?e111 ?e553))
+(flet ($e757 (bvuge ?e648 ?e502))
+(flet ($e758 (bvsle ?e164 ?e274))
+(flet ($e759 (distinct ?e329 ?e245))
+(flet ($e760 (= (zero_extend[3] ?e141) ?e527))
+(flet ($e761 (bvslt ?e353 ?e569))
+(flet ($e762 (distinct ?e12 (zero_extend[2] ?e125)))
+(flet ($e763 (bvsgt (zero_extend[3] ?e596) ?e263))
+(flet ($e764 (bvslt (sign_extend[1] ?e357) ?e442))
+(flet ($e765 (bvsge (sign_extend[3] ?e413) ?e268))
+(flet ($e766 (bvsge ?e464 (sign_extend[3] ?e293)))
+(flet ($e767 (bvuge ?e616 (sign_extend[1] ?e178)))
+(flet ($e768 (bvule ?e196 (zero_extend[3] ?e553)))
+(flet ($e769 (bvult ?e288 ?e77))
+(flet ($e770 (distinct ?e489 ?e492))
+(flet ($e771 (bvule ?e532 ?e29))
+(flet ($e772 (= (zero_extend[1] ?e611) ?e41))
+(flet ($e773 (distinct ?e607 ?e484))
+(flet ($e774 (= (sign_extend[3] ?e231) ?e115))
+(flet ($e775 (bvsgt ?e545 ?e79))
+(flet ($e776 (bvugt ?e615 (sign_extend[1] ?e545)))
+(flet ($e777 (bvugt ?e57 ?e196))
+(flet ($e778 (distinct ?e68 ?e198))
+(flet ($e779 (= ?e556 (zero_extend[3] ?e222)))
+(flet ($e780 (bvule (sign_extend[3] ?e333) ?e196))
+(flet ($e781 (= ?e455 (sign_extend[3] ?e76)))
+(flet ($e782 (bvult (sign_extend[3] ?e462) ?e526))
+(flet ($e783 (bvuge (sign_extend[3] ?e245) ?e128))
+(flet ($e784 (= ?e594 ?e62))
+(flet ($e785 (= (zero_extend[2] ?e272) ?e103))
+(flet ($e786 (bvsgt (zero_extend[3] ?e585) ?e578))
+(flet ($e787 (bvule ?e532 ?e501))
+(flet ($e788 (bvsle ?e44 ?e577))
+(flet ($e789 (= (sign_extend[1] ?e141) ?e160))
+(flet ($e790 (bvsge ?e643 ?e267))
+(flet ($e791 (bvugt (sign_extend[3] ?e218) ?e54))
+(flet ($e792 (bvslt ?e325 ?e242))
+(flet ($e793 (bvult ?e231 ?e314))
+(flet ($e794 (bvule ?e467 ?e338))
+(flet ($e795 (bvule ?e511 ?e238))
+(flet ($e796 (bvslt (zero_extend[3] ?e337) ?e126))
+(flet ($e797 (bvslt ?e240 ?e301))
+(flet ($e798 (bvsle (sign_extend[3] ?e555) ?e556))
+(flet ($e799 (distinct ?e318 ?e257))
+(flet ($e800 (bvult ?e101 ?e647))
+(flet ($e801 (bvsgt (sign_extend[2] ?e160) ?e22))
+(flet ($e802 (bvule ?e446 ?e164))
+(flet ($e803 (bvule ?e222 ?e548))
+(flet ($e804 (bvugt (zero_extend[3] ?e518) ?e16))
+(flet ($e805 (bvsge ?e59 ?e113))
+(flet ($e806 (bvugt ?e118 (zero_extend[1] ?e230)))
+(flet ($e807 (distinct ?e332 (sign_extend[3] ?e277)))
+(flet ($e808 (bvuge ?e360 (sign_extend[3] ?e397)))
+(flet ($e809 (bvsge ?e119 ?e463))
+(flet ($e810 (bvult ?e76 ?e618))
+(flet ($e811 (bvsge ?e308 ?e23))
+(flet ($e812 (bvult ?e108 (sign_extend[3] ?e187)))
+(flet ($e813 (bvsge ?e360 ?e300))
+(flet ($e814 (bvsge ?e15 (sign_extend[1] ?e123)))
+(flet ($e815 (bvsge (sign_extend[3] ?e563) ?e354))
+(flet ($e816 (bvsle ?e14 ?e451))
+(flet ($e817 (bvsgt ?e449 ?e625))
+(flet ($e818 (distinct ?e359 (sign_extend[3] ?e50)))
+(flet ($e819 (bvsgt ?e76 ?e434))
+(flet ($e820 (bvsle (zero_extend[2] ?e190) ?e258))
+(flet ($e821 (bvult ?e139 (zero_extend[3] ?e306)))
+(flet ($e822 (distinct ?e348 (zero_extend[3] ?e618)))
+(flet ($e823 (bvsge ?e475 (sign_extend[3] ?e443)))
+(flet ($e824 (bvslt ?e519 ?e318))
+(flet ($e825 (bvult ?e26 (sign_extend[3] ?e371)))
+(flet ($e826 (bvuge (sign_extend[3] ?e32) ?e338))
+(flet ($e827 (bvuge ?e179 (zero_extend[3] ?e545)))
+(flet ($e828 (= ?e260 ?e435))
+(flet ($e829 (distinct ?e417 ?e336))
+(flet ($e830 (bvsle ?e359 ?e159))
+(flet ($e831 (bvsgt ?e174 ?e191))
+(flet ($e832 (bvsge (zero_extend[2] ?e442) ?e559))
+(flet ($e833 (distinct ?e548 ?e382))
+(flet ($e834 (distinct (zero_extend[3] ?e521) ?e198))
+(flet ($e835 (bvsgt (zero_extend[3] ?e284) ?e115))
+(flet ($e836 (bvsgt ?e183 (sign_extend[3] ?e428)))
+(flet ($e837 (= (zero_extend[2] ?e594) ?e565))
+(flet ($e838 (bvsgt ?e407 ?e5))
+(flet ($e839 (distinct ?e313 (sign_extend[3] ?e458)))
+(flet ($e840 (bvsle ?e541 (zero_extend[1] ?e314)))
+(flet ($e841 (bvslt (zero_extend[1] ?e164) ?e465))
+(flet ($e842 (distinct ?e329 ?e134))
+(flet ($e843 (bvugt ?e179 (zero_extend[3] ?e279)))
+(flet ($e844 (bvslt (zero_extend[3] ?e10) ?e412))
+(flet ($e845 (bvsle ?e205 ?e266))
+(flet ($e846 (bvsge (zero_extend[1] ?e430) ?e646))
+(flet ($e847 (bvsle ?e486 ?e352))
+(flet ($e848 (bvsgt (zero_extend[3] ?e572) ?e129))
+(flet ($e849 (bvsge ?e181 (zero_extend[3] ?e76)))
+(flet ($e850 (bvsle ?e54 (sign_extend[3] ?e75)))
+(flet ($e851 (= ?e128 ?e93))
+(flet ($e852 (distinct (sign_extend[3] ?e266) ?e444))
+(flet ($e853 (bvsge ?e318 ?e357))
+(flet ($e854 (bvsge (zero_extend[3] ?e73) ?e34))
+(flet ($e855 (= ?e234 (zero_extend[3] ?e357)))
+(flet ($e856 (bvsle ?e142 ?e79))
+(flet ($e857 (bvult (sign_extend[3] ?e10) ?e466))
+(flet ($e858 (bvuge ?e269 ?e82))
+(flet ($e859 (bvslt (zero_extend[3] ?e113) ?e41))
+(flet ($e860 (bvsgt ?e399 (zero_extend[1] ?e335)))
+(flet ($e861 (bvsgt ?e192 ?e488))
+(flet ($e862 (bvsle ?e643 ?e267))
+(flet ($e863 (bvsgt ?e165 ?e622))
+(flet ($e864 (bvsgt (sign_extend[3] ?e594) ?e198))
+(flet ($e865 (bvsle ?e532 ?e633))
+(flet ($e866 (bvslt ?e516 ?e536))
+(flet ($e867 (bvule ?e188 ?e72))
+(flet ($e868 (bvsge ?e174 (zero_extend[2] ?e485)))
+(flet ($e869 (bvult ?e254 (sign_extend[3] ?e31)))
+(flet ($e870 (bvsge ?e46 ?e149))
+(flet ($e871 (bvsle ?e521 ?e458))
+(flet ($e872 (bvuge (zero_extend[3] ?e148) ?e468))
+(flet ($e873 (bvugt (zero_extend[1] ?e258) ?e344))
+(flet ($e874 (bvugt (zero_extend[3] ?e471) ?e328))
+(flet ($e875 (bvslt (sign_extend[3] ?e373) ?e359))
+(flet ($e876 (bvslt (sign_extend[3] ?e367) ?e505))
+(flet ($e877 (bvugt ?e391 (zero_extend[1] ?e272)))
+(flet ($e878 (bvsle ?e393 ?e238))
+(flet ($e879 (bvsgt (zero_extend[3] ?e155) ?e95))
+(flet ($e880 (= ?e441 ?e539))
+(flet ($e881 (bvult ?e610 ?e329))
+(flet ($e882 (bvuge ?e552 (sign_extend[3] ?e364)))
+(flet ($e883 (bvsgt ?e16 ?e527))
+(flet ($e884 (= ?e498 ?e368))
+(flet ($e885 (bvult (sign_extend[3] ?e28) ?e309))
+(flet ($e886 (bvule ?e278 ?e525))
+(flet ($e887 (distinct (sign_extend[1] ?e199) ?e562))
+(flet ($e888 (bvslt ?e511 ?e521))
+(flet ($e889 (= ?e317 (sign_extend[3] ?e259)))
+(flet ($e890 (bvule ?e145 (zero_extend[3] ?e539)))
+(flet ($e891 (bvugt ?e100 (sign_extend[3] ?e276)))
+(flet ($e892 (bvule (zero_extend[3] ?e311) ?e80))
+(flet ($e893 (bvsle ?e59 ?e255))
+(flet ($e894 (bvugt (sign_extend[1] ?e84) ?e258))
+(flet ($e895 (bvsge ?e164 ?e460))
+(flet ($e896 (bvsle (zero_extend[2] ?e214) ?e140))
+(flet ($e897 (bvsgt ?e454 ?e209))
+(flet ($e898 (bvsge ?e542 ?e516))
+(flet ($e899 (bvsge ?e21 (sign_extend[3] ?e557)))
+(flet ($e900 (bvsle ?e591 (sign_extend[3] ?e138)))
+(flet ($e901 (bvsge ?e223 (sign_extend[3] ?e311)))
+(flet ($e902 (bvsle (zero_extend[3] ?e321) ?e108))
+(flet ($e903 (distinct ?e479 ?e594))
+(flet ($e904 (bvsge (sign_extend[1] ?e98) ?e541))
+(flet ($e905 (bvuge ?e167 ?e570))
+(flet ($e906 (bvsgt ?e153 ?e610))
+(flet ($e907 (= ?e12 (zero_extend[2] ?e469)))
+(flet ($e908 (bvsgt ?e396 ?e585))
+(flet ($e909 (bvugt ?e171 ?e415))
+(flet ($e910 (bvugt ?e69 ?e632))
+(flet ($e911 (bvuge ?e128 ?e407))
+(flet ($e912 (bvule (zero_extend[3] ?e153) ?e8))
+(flet ($e913 (bvugt (sign_extend[3] ?e256) ?e328))
+(flet ($e914 (bvuge (sign_extend[3] ?e423) ?e77))
+(flet ($e915 (bvsge ?e543 (zero_extend[3] ?e124)))
+(flet ($e916 (bvult (sign_extend[1] ?e258) ?e581))
+(flet ($e917 (distinct ?e7 (zero_extend[3] ?e440)))
+(flet ($e918 (distinct (sign_extend[1] ?e592) ?e566))
+(flet ($e919 (bvult ?e599 ?e438))
+(flet ($e920 (distinct ?e96 ?e581))
+(flet ($e921 (= ?e225 ?e468))
+(flet ($e922 (bvsgt (sign_extend[3] ?e364) ?e9))
+(flet ($e923 (bvugt ?e290 ?e645))
+(flet ($e924 (bvsle (zero_extend[3] ?e596) ?e60))
+(flet ($e925 (bvslt (zero_extend[2] ?e502) ?e514))
+(flet ($e926 (bvsge (zero_extend[3] ?e321) ?e85))
+(flet ($e927 (bvult ?e124 ?e602))
+(flet ($e928 (= ?e409 ?e164))
+(flet ($e929 (bvsge (zero_extend[3] ?e597) ?e25))
+(flet ($e930 (bvult (sign_extend[3] ?e434) ?e581))
+(flet ($e931 (bvslt (sign_extend[3] ?e392) ?e478))
+(flet ($e932 (bvsgt ?e544 ?e451))
+(flet ($e933 (= ?e254 (sign_extend[3] ?e323)))
+(flet ($e934 (bvsle ?e24 ?e54))
+(flet ($e935 (distinct (sign_extend[3] ?e284) ?e26))
+(flet ($e936 (bvule ?e265 (zero_extend[1] ?e103)))
+(flet ($e937 (bvuge ?e116 ?e476))
+(flet ($e938 (bvugt (zero_extend[3] ?e609) ?e240))
+(flet ($e939 (bvuge ?e477 ?e76))
+(flet ($e940 (bvslt ?e587 ?e98))
+(flet ($e941 (bvule ?e96 ?e416))
+(flet ($e942 (bvugt ?e30 (zero_extend[3] ?e625)))
+(flet ($e943 (bvuge ?e338 (zero_extend[3] ?e545)))
+(flet ($e944 (bvsge ?e297 ?e218))
+(flet ($e945 (distinct ?e559 ?e619))
+(flet ($e946 (bvsle (zero_extend[1] ?e45) ?e391))
+(flet ($e947 (bvsgt ?e419 (sign_extend[3] ?e440)))
+(flet ($e948 (bvslt (sign_extend[1] ?e131) ?e213))
+(flet ($e949 (= (sign_extend[1] ?e216) ?e541))
+(flet ($e950 (bvslt (zero_extend[3] ?e353) ?e380))
+(flet ($e951 (distinct (zero_extend[3] ?e595) ?e346))
+(flet ($e952 (bvsge (zero_extend[3] ?e547) ?e65))
+(flet ($e953 (bvule (sign_extend[3] ?e299) ?e491))
+(flet ($e954 (bvsgt (zero_extend[1] ?e258) ?e561))
+(flet ($e955 (bvsgt (zero_extend[2] ?e626) ?e514))
+(flet ($e956 (distinct ?e96 ?e2))
+(flet ($e957 (bvult ?e455 ?e261))
+(flet ($e958 (bvsle ?e286 ?e33))
+(flet ($e959 (bvsgt (sign_extend[3] ?e266) ?e325))
+(flet ($e960 (bvsle ?e302 (sign_extend[3] ?e362)))
+(flet ($e961 (bvsle ?e232 ?e506))
+(flet ($e962 (bvuge ?e22 (zero_extend[3] ?e187)))
+(flet ($e963 (bvsge ?e224 ?e582))
+(flet ($e964 (distinct (zero_extend[3] ?e98) ?e8))
+(flet ($e965 (bvsge ?e543 (sign_extend[3] ?e365)))
+(flet ($e966 (bvsgt ?e320 ?e246))
+(flet ($e967 (bvult ?e122 (zero_extend[3] ?e50)))
+(flet ($e968 (bvult (sign_extend[3] ?e90) ?e489))
+(flet ($e969 (bvugt ?e82 ?e111))
+(flet ($e970 (bvugt ?e533 (zero_extend[3] ?e295)))
+(flet ($e971 (bvsgt ?e307 ?e483))
+(flet ($e972 (= ?e42 ?e141))
+(flet ($e973 (distinct (sign_extend[3] ?e385) ?e551))
+(flet ($e974 (= ?e401 ?e637))
+(flet ($e975 (bvult (sign_extend[3] ?e426) ?e380))
+(flet ($e976 (distinct ?e217 (sign_extend[3] ?e215)))
+(flet ($e977 (bvsge ?e595 ?e315))
+(flet ($e978 (distinct (sign_extend[3] ?e547) ?e406))
+(flet ($e979 (= ?e646 (zero_extend[1] ?e149)))
+(flet ($e980 (bvult ?e370 ?e333))
+(flet ($e981 (bvsgt ?e78 ?e610))
+(flet ($e982 (= ?e239 (zero_extend[2] ?e337)))
+(flet ($e983 (bvult ?e139 (zero_extend[3] ?e165)))
+(flet ($e984 (bvsgt ?e95 (zero_extend[3] ?e401)))
+(flet ($e985 (bvult (zero_extend[3] ?e631) ?e9))
+(flet ($e986 (bvsle ?e37 (zero_extend[3] ?e314)))
+(flet ($e987 (bvsgt (sign_extend[2] ?e398) ?e264))
+(flet ($e988 (= ?e159 ?e112))
+(flet ($e989 (bvule ?e353 ?e238))
+(flet ($e990 (bvuge ?e319 ?e436))
+(flet ($e991 (distinct ?e469 ?e430))
+(flet ($e992 (bvsle ?e647 ?e56))
+(flet ($e993 (bvsge ?e231 ?e580))
+(flet ($e994 (bvslt (sign_extend[3] ?e231) ?e198))
+(flet ($e995 (distinct (sign_extend[3] ?e322) ?e317))
+(flet ($e996 (bvult ?e314 ?e124))
+(flet ($e997 (bvsge ?e119 ?e446))
+(flet ($e998 (bvuge ?e353 ?e538))
+(flet ($e999 (= (zero_extend[2] ?e597) ?e200))
+(flet ($e1000 (bvsle (sign_extend[2] ?e62) ?e123))
+(flet ($e1001 (bvult ?e340 (sign_extend[3] ?e572)))
+(flet ($e1002 (bvult ?e102 (zero_extend[3] ?e141)))
+(flet ($e1003 (bvsge ?e119 ?e371))
+(flet ($e1004 (bvugt ?e158 (zero_extend[2] ?e136)))
+(flet ($e1005 (bvsge ?e25 ?e300))
+(flet ($e1006 (bvslt (sign_extend[3] ?e104) ?e551))
+(flet ($e1007 (distinct ?e536 (zero_extend[3] ?e299)))
+(flet ($e1008 (bvslt ?e352 ?e451))
+(flet ($e1009 (bvsle ?e208 ?e93))
+(flet ($e1010 (bvsgt ?e69 (sign_extend[3] ?e510)))
+(flet ($e1011 (distinct ?e23 (sign_extend[3] ?e18)))
+(flet ($e1012 (bvsge ?e267 ?e131))
+(flet ($e1013 (bvuge ?e45 ?e390))
+(flet ($e1014 (bvsge ?e376 (sign_extend[2] ?e127)))
+(flet ($e1015 (distinct ?e532 (sign_extend[3] ?e460)))
+(flet ($e1016 (bvugt ?e338 ?e2))
+(flet ($e1017 (bvugt (zero_extend[3] ?e46) v0))
+(flet ($e1018 (bvsle (sign_extend[3] ?e271) ?e517))
+(flet ($e1019 (= ?e306 ?e563))
+(flet ($e1020 (bvule ?e350 ?e554))
+(flet ($e1021 (bvsge (sign_extend[3] ?e477) ?e359))
+(flet ($e1022 (bvsle ?e361 (zero_extend[3] ?e483)))
+(flet ($e1023 (bvsgt ?e4 ?e198))
+(flet ($e1024 (= ?e445 ?e322))
+(flet ($e1025 (distinct (zero_extend[3] ?e580) ?e588))
+(flet ($e1026 (bvugt ?e354 (sign_extend[3] ?e62)))
+(flet ($e1027 (distinct ?e555 ?e381))
+(flet ($e1028 (distinct ?e122 ?e225))
+(flet ($e1029 (= ?e102 (sign_extend[3] ?e44)))
+(flet ($e1030 (bvsge ?e389 ?e539))
+(flet ($e1031 (bvuge ?e385 ?e506))
+(flet ($e1032 (bvslt ?e144 (sign_extend[3] ?e388)))
+(flet ($e1033 (= ?e189 (zero_extend[3] ?e426)))
+(flet ($e1034 (bvult ?e540 ?e630))
+(flet ($e1035 (= ?e577 ?e148))
+(flet ($e1036 (bvsle ?e177 ?e576))
+(flet ($e1037 (bvsle ?e328 (sign_extend[3] ?e304)))
+(flet ($e1038 (bvsge ?e416 (zero_extend[2] ?e601)))
+(flet ($e1039 (bvsle ?e359 (zero_extend[3] ?e540)))
+(flet ($e1040 (distinct (sign_extend[3] ?e564) ?e264))
+(flet ($e1041 (= ?e552 (sign_extend[3] ?e387)))
+(flet ($e1042 (bvsle ?e646 (zero_extend[1] ?e456)))
+(flet ($e1043 (bvslt ?e215 ?e374))
+(flet ($e1044 (bvugt ?e324 ?e124))
+(flet ($e1045 (bvult ?e395 ?e134))
+(flet ($e1046 (bvsle ?e451 ?e610))
+(flet ($e1047 (bvugt ?e113 ?e409))
+(flet ($e1048 (bvsge ?e241 ?e87))
+(flet ($e1049 (bvult ?e204 (sign_extend[1] ?e239)))
+(flet ($e1050 (bvule (zero_extend[3] ?e290) ?e478))
+(flet ($e1051 (= ?e167 ?e456))
+(flet ($e1052 (bvsgt ?e518 ?e636))
+(flet ($e1053 (bvule (zero_extend[3] ?e365) ?e16))
+(flet ($e1054 (bvsgt ?e472 ?e121))
+(flet ($e1055 (bvult ?e53 ?e134))
+(flet ($e1056 (bvsle ?e362 ?e72))
+(flet ($e1057 (bvugt ?e318 ?e420))
+(flet ($e1058 (bvsgt ?e87 ?e437))
+(flet ($e1059 (bvule ?e7 (sign_extend[3] ?e372)))
+(flet ($e1060 (bvule ?e419 (sign_extend[3] ?e233)))
+(flet ($e1061 (distinct ?e177 ?e125))
+(flet ($e1062 (bvult ?e300 (zero_extend[3] ?e277)))
+(flet ($e1063 (bvuge ?e20 (zero_extend[3] ?e292)))
+(flet ($e1064 (bvsle ?e135 ?e217))
+(flet ($e1065 (bvslt ?e562 (zero_extend[1] ?e596)))
+(flet ($e1066 (bvsgt ?e422 ?e526))
+(flet ($e1067 (bvuge ?e637 ?e553))
+(flet ($e1068 (bvugt ?e555 ?e209))
+(flet ($e1069 (distinct ?e57 (zero_extend[3] ?e477)))
+(flet ($e1070 (bvsge ?e431 (sign_extend[3] ?e270)))
+(flet ($e1071 (bvugt ?e446 ?e187))
+(flet ($e1072 (bvsle (zero_extend[3] ?e410) ?e96))
+(flet ($e1073 (bvugt ?e631 ?e410))
+(flet ($e1074 (bvuge ?e163 ?e100))
+(flet ($e1075 (= (sign_extend[3] ?e473) ?e422))
+(flet ($e1076 (bvuge ?e71 (zero_extend[3] ?e377)))
+(flet ($e1077 (bvuge (sign_extend[3] ?e470) ?e242))
+(flet ($e1078 (bvule ?e559 (zero_extend[3] ?e290)))
+(flet ($e1079 (bvuge ?e2 ?e607))
+(flet ($e1080 (= ?e418 ?e393))
+(flet ($e1081 (bvsle ?e617 (zero_extend[3] ?e75)))
+(flet ($e1082 (bvule ?e15 (zero_extend[3] ?e286)))
+(flet ($e1083 (bvsgt (zero_extend[3] ?e353) ?e412))
+(flet ($e1084 (distinct ?e165 ?e461))
+(flet ($e1085 (bvsgt ?e77 ?e4))
+(flet ($e1086 (bvslt ?e355 ?e86))
+(flet ($e1087 (bvule ?e60 (sign_extend[3] ?e31)))
+(flet ($e1088 (bvuge (zero_extend[2] ?e601) ?e151))
+(flet ($e1089 (bvuge ?e55 (sign_extend[3] ?e395)))
+(flet ($e1090 (= ?e19 (zero_extend[3] ?e101)))
+(flet ($e1091 (= ?e303 ?e221))
+(flet ($e1092 (bvsge (sign_extend[3] ?e630) ?e448))
+(flet ($e1093 (= ?e37 ?e102))
+(flet ($e1094 (bvsle (zero_extend[3] ?e538) ?e633))
+(flet ($e1095 (bvult (zero_extend[3] ?e87) ?e527))
+(flet ($e1096 (bvslt (zero_extend[3] ?e316) ?e40))
+(flet ($e1097 (bvult ?e67 ?e600))
+(flet ($e1098 (bvugt (sign_extend[2] ?e438) ?e575))
+(flet ($e1099 (bvsge (sign_extend[3] ?e645) ?e436))
+(flet ($e1100 (distinct ?e561 (sign_extend[3] ?e45)))
+(flet ($e1101 (bvsle (sign_extend[1] ?e123) ?e225))
+(flet ($e1102 (bvugt ?e176 ?e150))
+(flet ($e1103 (bvule ?e76 ?e274))
+(flet ($e1104 (bvult ?e298 ?e22))
+(flet ($e1105 (bvsge (sign_extend[3] ?e125) ?e560))
+(flet ($e1106 (bvuge (sign_extend[3] ?e125) ?e261))
+(flet ($e1107 (bvsgt (zero_extend[1] ?e373) ?e459))
+(flet ($e1108 (bvslt ?e42 ?e510))
+(flet ($e1109 (bvsge (sign_extend[3] ?e421) ?e435))
+(flet ($e1110 (distinct ?e180 (sign_extend[3] ?e473)))
+(flet ($e1111 (distinct ?e74 (zero_extend[3] ?e233)))
+(flet ($e1112 (bvugt ?e629 ?e428))
+(flet ($e1113 (bvslt ?e3 (zero_extend[3] ?e495)))
+(flet ($e1114 (distinct (sign_extend[3] ?e631) ?e52))
+(flet ($e1115 (bvslt ?e133 ?e643))
+(flet ($e1116 (= ?e205 ?e447))
+(flet ($e1117 (bvugt ?e582 ?e439))
+(flet ($e1118 (bvsgt ?e401 ?e353))
+(flet ($e1119 (bvuge ?e361 (sign_extend[3] ?e371)))
+(flet ($e1120 (bvugt ?e145 ?e464))
+(flet ($e1121 (bvugt (zero_extend[1] ?e200) ?e448))
+(flet ($e1122 (bvsgt ?e587 ?e477))
+(flet ($e1123 (distinct ?e55 ?e319))
+(flet ($e1124 (bvslt (sign_extend[2] ?e127) ?e235))
+(flet ($e1125 (bvuge ?e356 (zero_extend[3] ?e271)))
+(flet ($e1126 (bvule ?e320 ?e187))
+(flet ($e1127 (bvsge ?e457 (zero_extend[2] ?e490)))
+(flet ($e1128 (bvugt ?e223 (sign_extend[3] ?e423)))
+(flet ($e1129 (bvsle (zero_extend[3] ?e576) ?e94))
+(flet ($e1130 (bvuge (zero_extend[3] ?e580) ?e85))
+(flet ($e1131 (distinct (sign_extend[2] ?e537) ?e140))
+(flet ($e1132 (bvule (zero_extend[1] ?e253) ?e615))
+(flet ($e1133 (bvult ?e249 ?e208))
+(flet ($e1134 (bvugt (sign_extend[2] ?e111) ?e140))
+(flet ($e1135 (bvult ?e203 ?e427))
+(flet ($e1136 (bvult (zero_extend[3] ?e434) ?e105))
+(flet ($e1137 (= (sign_extend[3] ?e381) ?e552))
+(flet ($e1138 (bvule ?e582 ?e284))
+(flet ($e1139 (bvsgt ?e335 (sign_extend[2] ?e36)))
+(flet ($e1140 (= ?e527 (sign_extend[3] ?e610)))
+(flet ($e1141 (bvsgt ?e340 ?e319))
+(flet ($e1142 (bvuge ?e512 ?e521))
+(flet ($e1143 (= (zero_extend[3] ?e58) ?e206))
+(flet ($e1144 (bvult ?e109 (sign_extend[3] ?e384)))
+(flet ($e1145 (bvult ?e521 ?e502))
+(flet ($e1146 (distinct ?e96 (zero_extend[3] ?e586)))
+(flet ($e1147 (bvule (zero_extend[3] ?e357) ?e27))
+(flet ($e1148 (= ?e335 (zero_extend[2] ?e274)))
+(flet ($e1149 (bvsge ?e603 ?e222))
+(flet ($e1150 (bvsle ?e53 ?e563))
+(flet ($e1151 (distinct (sign_extend[1] ?e239) ?e135))
+(flet ($e1152 (bvsgt ?e401 ?e443))
+(flet ($e1153 (= ?e46 ?e304))
+(flet ($e1154 (bvslt ?e571 (sign_extend[3] ?e336)))
+(flet ($e1155 (bvslt ?e366 (zero_extend[3] ?e175)))
+(flet ($e1156 (bvult (sign_extend[3] ?e284) ?e52))
+(flet ($e1157 (bvult ?e269 ?e600))
+(flet ($e1158 (bvult (sign_extend[3] ?e625) ?e95))
+(flet ($e1159 (bvule (sign_extend[3] ?e245) ?e25))
+(flet ($e1160 (bvult ?e291 ?e393))
+(flet ($e1161 (bvule ?e348 (zero_extend[3] ?e106)))
+(flet ($e1162 (distinct (sign_extend[3] ?e372) ?e77))
+(flet ($e1163 (bvsle ?e519 ?e185))
+(flet ($e1164 (bvsgt ?e289 ?e529))
+(flet ($e1165 (bvsle (sign_extend[3] ?e449) ?e620))
+(flet ($e1166 (distinct ?e649 ?e647))
+(flet ($e1167 (bvsge (zero_extend[2] ?e215) ?e140))
+(flet ($e1168 (bvugt ?e62 ?e153))
+(flet ($e1169 (bvule ?e410 ?e375))
+(flet ($e1170 (bvsle (zero_extend[3] ?e621) ?e379))
+(flet ($e1171 (bvule ?e82 ?e164))
+(flet ($e1172 (bvsgt (sign_extend[3] ?e266) ?e474))
+(flet ($e1173 (bvule ?e41 ?e223))
+(flet ($e1174 (= ?e93 (zero_extend[3] ?e452)))
+(flet ($e1175 (bvsle ?e207 ?e246))
+(flet ($e1176 (bvsgt (zero_extend[3] ?e609) ?e588))
+(flet ($e1177 (bvsle ?e3 (zero_extend[3] ?e229)))
+(flet ($e1178 (bvsge ?e528 (sign_extend[3] ?e153)))
+(flet ($e1179 (bvsgt ?e262 (zero_extend[2] ?e267)))
+(flet ($e1180 (distinct ?e366 (zero_extend[3] ?e434)))
+(flet ($e1181 (distinct (zero_extend[3] ?e600) ?e412))
+(flet ($e1182 (bvult ?e642 ?e17))
+(flet ($e1183 (bvugt (sign_extend[3] ?e175) ?e294))
+(flet ($e1184 (bvuge (sign_extend[3] ?e487) ?e491))
+(flet ($e1185 (bvult ?e440 ?e78))
+(flet ($e1186 (bvuge (sign_extend[3] ?e315) ?e302))
+(flet ($e1187 (bvult ?e85 (sign_extend[1] ?e262)))
+(flet ($e1188 (bvsle ?e572 ?e353))
+(flet ($e1189 (= (zero_extend[3] ?e164) ?e168))
+(flet ($e1190 (bvsge (sign_extend[3] ?e439) ?e559))
+(flet ($e1191 (bvsgt ?e414 (zero_extend[2] ?e213)))
+(flet ($e1192 (bvule ?e234 (zero_extend[3] ?e530)))
+(flet ($e1193 (bvult ?e570 ?e130))
+(flet ($e1194 (= ?e243 (zero_extend[3] ?e194)))
+(flet ($e1195 (bvslt ?e620 (sign_extend[3] ?e194)))
+(flet ($e1196 (distinct (zero_extend[3] ?e45) ?e252))
+(flet ($e1197 (bvsle (zero_extend[3] ?e295) ?e85))
+(flet ($e1198 (= ?e127 ?e46))
+(flet ($e1199 (bvsge ?e438 ?e253))
+(flet ($e1200 (bvsge ?e591 (zero_extend[3] ?e434)))
+(flet ($e1201 (= (zero_extend[3] ?e574) ?e527))
+(flet ($e1202 (bvugt ?e69 (zero_extend[3] ?e241)))
+(flet ($e1203 (bvsgt ?e217 ?e48))
+(flet ($e1204 (distinct ?e534 (sign_extend[3] ?e133)))
+(flet ($e1205 (distinct ?e199 ?e395))
+(flet ($e1206 (bvsle ?e572 ?e498))
+(flet ($e1207 (bvugt ?e145 (zero_extend[3] ?e403)))
+(flet ($e1208 (distinct ?e239 (sign_extend[2] ?e53)))
+(flet ($e1209 (bvslt (zero_extend[3] ?e221) ?e52))
+(flet ($e1210 (bvsgt (zero_extend[3] ?e487) ?e196))
+(flet ($e1211 (bvugt ?e450 ?e460))
+(flet ($e1212 (distinct (sign_extend[2] ?e390) ?e335))
+(flet ($e1213 (= ?e645 ?e570))
+(flet ($e1214 (bvuge ?e466 ?e20))
+(flet ($e1215 (bvsle ?e360 (zero_extend[3] ?e304)))
+(flet ($e1216 (distinct ?e348 ?e234))
+(flet ($e1217 (bvugt (sign_extend[3] ?e589) ?e223))
+(flet ($e1218 (bvult ?e476 ?e577))
+(flet ($e1219 (bvsge ?e327 ?e479))
+(flet ($e1220 (= ?e17 ?e648))
+(flet ($e1221 (bvult (zero_extend[3] ?e434) ?e263))
+(flet ($e1222 (bvult ?e400 ?e329))
+(flet ($e1223 (distinct ?e490 (sign_extend[1] ?e45)))
+(flet ($e1224 (bvsle ?e348 (zero_extend[3] ?e11)))
+(flet ($e1225 (= ?e297 ?e161))
+(flet ($e1226 (bvsge ?e15 (sign_extend[1] ?e235)))
+(flet ($e1227 (bvsgt ?e530 ?e549))
+(flet ($e1228 (bvuge ?e347 ?e624))
+(flet ($e1229 (bvslt ?e644 (sign_extend[3] ?e231)))
+(flet ($e1230 (bvsge ?e417 ?e257))
+(flet ($e1231 (bvugt ?e525 (sign_extend[3] ?e274)))
+(flet ($e1232 (= ?e121 (sign_extend[3] ?e327)))
+(flet ($e1233 (bvsge ?e199 ?e188))
+(flet ($e1234 (distinct (sign_extend[3] ?e461) ?e180))
+(flet ($e1235 (bvsge (zero_extend[3] ?e306) ?e240))
+(flet ($e1236 (bvsge ?e102 (zero_extend[3] ?e410)))
+(flet ($e1237 (= ?e103 (sign_extend[2] ?e580)))
+(flet ($e1238 (distinct ?e24 ?e275))
+(flet ($e1239 (bvuge ?e344 ?e411))
+(flet ($e1240 (bvugt ?e415 ?e175))
+(flet ($e1241 (bvult ?e94 (sign_extend[2] ?e541)))
+(flet ($e1242 (bvsge ?e448 ?e74))
+(flet ($e1243 (= ?e115 ?e325))
+(flet ($e1244 (bvule ?e60 ?e489))
+(flet ($e1245 (bvslt ?e376 (sign_extend[2] ?e299)))
+(flet ($e1246 (= ?e526 (zero_extend[3] ?e167)))
+(flet ($e1247 (distinct ?e399 ?e528))
+(flet ($e1248 (bvsge ?e135 ?e411))
+(flet ($e1249 (bvugt (zero_extend[3] ?e43) ?e4))
+(flet ($e1250 (bvslt (zero_extend[1] ?e187) ?e541))
+(flet ($e1251 (bvuge ?e300 (sign_extend[3] ?e512)))
+(flet ($e1252 (bvsge (zero_extend[3] ?e184) ?e359))
+(flet ($e1253 (distinct ?e222 ?e401))
+(flet ($e1254 (bvule ?e490 (zero_extend[1] ?e554)))
+(flet ($e1255 (bvule (zero_extend[3] ?e238) ?e475))
+(flet ($e1256 (bvuge (zero_extend[2] ?e289) ?e235))
+(flet ($e1257 (= ?e613 (sign_extend[3] ?e503)))
+(flet ($e1258 (distinct (sign_extend[2] ?e601) ?e85))
+(flet ($e1259 (bvuge (sign_extend[3] ?e155) ?e19))
+(flet ($e1260 (bvslt ?e155 ?e286))
+(flet ($e1261 (bvule ?e87 ?e598))
+(flet ($e1262 (distinct (sign_extend[3] ?e487) ?e60))
+(flet ($e1263 (bvsgt ?e467 (zero_extend[3] ?e437)))
+(flet ($e1264 (= ?e326 (zero_extend[3] ?e477)))
+(flet ($e1265 (bvslt ?e387 ?e642))
+(flet ($e1266 (bvsle ?e25 (zero_extend[3] ?e410)))
+(flet ($e1267 (bvuge ?e264 ?e38))
+(flet ($e1268 (bvuge ?e620 (sign_extend[3] ?e170)))
+(flet ($e1269 (bvslt (sign_extend[3] ?e176) ?e351))
+(flet ($e1270 (bvslt ?e571 (sign_extend[3] ?e544)))
+(flet ($e1271 (distinct (zero_extend[3] ?e106) ?e619))
+(flet ($e1272 (bvsge ?e532 ?e457))
+(flet ($e1273 (= ?e431 (zero_extend[3] ?e341)))
+(flet ($e1274 (bvslt ?e59 ?e387))
+(flet ($e1275 (bvslt ?e446 ?e374))
+(flet ($e1276 (bvule ?e547 ?e602))
+(flet ($e1277 (bvult ?e435 (zero_extend[2] ?e398)))
+(flet ($e1278 (distinct ?e49 ?e473))
+(flet ($e1279 (bvsle ?e412 (zero_extend[3] ?e161)))
+(flet ($e1280 (bvslt (zero_extend[3] ?e142) ?e296))
+(flet ($e1281 (bvult ?e80 ?e448))
+(flet ($e1282 (bvuge ?e292 ?e385))
+(flet ($e1283 (bvslt ?e532 (zero_extend[3] ?e17)))
+(flet ($e1284 (bvsle (sign_extend[3] ?e374) ?e206))
+(flet ($e1285 (bvsgt ?e266 ?e14))
+(flet ($e1286 (bvult ?e454 ?e142))
+(flet ($e1287 (bvsle (zero_extend[3] ?e608) ?e422))
+(flet ($e1288 (bvsgt ?e389 ?e220))
+(flet ($e1289 (bvsle ?e379 (zero_extend[3] ?e222)))
+(flet ($e1290 (bvslt ?e34 (sign_extend[3] ?e90)))
+(flet ($e1291 (bvslt ?e515 (sign_extend[2] ?e465)))
+(flet ($e1292 (bvslt ?e612 (zero_extend[3] ?e438)))
+(flet ($e1293 (bvule ?e142 ?e463))
+(flet ($e1294 (bvule (zero_extend[3] ?e117) ?e634))
+(flet ($e1295 (bvsle (zero_extend[3] ?e589) ?e532))
+(flet ($e1296 (bvsgt ?e263 (sign_extend[3] ?e589)))
+(flet ($e1297 (distinct ?e638 ?e455))
+(flet ($e1298 (bvsgt ?e334 (zero_extend[3] ?e570)))
+(flet ($e1299 (bvsle (sign_extend[3] ?e586) ?e249))
+(flet ($e1300 (bvslt ?e189 ?e48))
+(flet ($e1301 (bvsge ?e55 (zero_extend[1] ?e200)))
+(flet ($e1302 (bvsgt ?e54 ?e455))
+(flet ($e1303 (bvsgt (zero_extend[3] ?e104) ?e254))
+(flet ($e1304 (bvslt (sign_extend[2] ?e192) ?e103))
+(flet ($e1305 (bvslt ?e302 (zero_extend[3] ?e587)))
+(flet ($e1306 (bvsgt ?e316 ?e185))
+(flet ($e1307 (bvult (sign_extend[3] ?e631) ?e334))
+(flet ($e1308 (bvsle ?e577 ?e272))
+(flet ($e1309 (bvsge ?e173 (sign_extend[3] ?e446)))
+(flet ($e1310 (bvslt ?e202 ?e147))
+(flet ($e1311 (bvule (zero_extend[3] ?e303) ?e464))
+(flet ($e1312 (distinct ?e22 (zero_extend[3] ?e327)))
+(flet ($e1313 (bvsge ?e366 (sign_extend[2] ?e213)))
+(flet ($e1314 (bvult (sign_extend[3] ?e518) ?e448))
+(flet ($e1315 (bvslt ?e472 (sign_extend[3] ?e18)))
+(flet ($e1316 (bvult ?e223 (sign_extend[3] ?e482)))
+(flet ($e1317 (bvuge (zero_extend[3] ?e43) ?e309))
+(flet ($e1318 (bvult ?e237 ?e290))
+(flet ($e1319 (bvsle ?e534 (sign_extend[2] ?e485)))
+(flet ($e1320 (bvuge ?e528 (sign_extend[3] ?e78)))
+(flet ($e1321 (bvsle ?e313 (sign_extend[3] ?e488)))
+(flet ($e1322 (bvule (sign_extend[3] ?e14) ?e394))
+(flet ($e1323 (distinct ?e169 ?e543))
+(flet ($e1324 (bvsgt ?e225 (zero_extend[3] ?e531)))
+(flet ($e1325 (= ?e122 (zero_extend[3] ?e269)))
+(flet ($e1326 (= ?e89 ?e417))
+(flet ($e1327 (bvsge (zero_extend[3] ?e192) ?e522))
+(flet ($e1328 (bvsge ?e344 ?e8))
+(flet ($e1329 (bvsle ?e320 ?e299))
+(flet ($e1330 (distinct ?e117 ?e199))
+(flet ($e1331 (bvugt (sign_extend[3] ?e510) ?e425))
+(flet ($e1332 (bvule ?e536 (zero_extend[1] ?e500)))
+(flet ($e1333 (= (sign_extend[1] ?e606) ?e97))
+(flet ($e1334 (bvugt (zero_extend[3] ?e640) ?e619))
+(flet ($e1335 (bvult ?e493 ?e394))
+(flet ($e1336 (bvugt ?e594 ?e483))
+(flet ($e1337 (= ?e543 (sign_extend[3] ?e318)))
+(flet ($e1338 (= ?e224 ?e276))
+(flet ($e1339 (bvsgt ?e254 ?e296))
+(flet ($e1340 (bvslt ?e416 (sign_extend[3] ?e270)))
+(flet ($e1341 (bvugt ?e355 ?e440))
+(flet ($e1342 (bvsge ?e413 ?e375))
+(flet ($e1343 (bvsle ?e2 (zero_extend[3] ?e540)))
+(flet ($e1344 (bvule ?e188 ?e630))
+(flet ($e1345 (bvult ?e57 (sign_extend[3] ?e473)))
+(flet ($e1346 (distinct (sign_extend[3] ?e585) ?e416))
+(flet ($e1347 (bvugt ?e382 ?e618))
+(flet ($e1348 (bvuge ?e467 (zero_extend[3] ?e640)))
+(flet ($e1349 (bvsge (zero_extend[3] ?e519) ?e444))
+(flet ($e1350 (bvult (sign_extend[1] ?e235) ?e612))
+(flet ($e1351 (= ?e532 (sign_extend[3] ?e247)))
+(flet ($e1352 (bvult ?e35 (zero_extend[3] ?e639)))
+(flet ($e1353 (bvslt ?e494 ?e205))
+(flet ($e1354 (bvsgt ?e160 (zero_extend[1] ?e72)))
+(flet ($e1355 (bvsle ?e308 (zero_extend[1] ?e611)))
+(flet ($e1356 (= (zero_extend[3] ?e537) ?e240))
+(flet ($e1357 (bvugt ?e368 ?e549))
+(flet ($e1358 (bvsle ?e489 ?e63))
+(flet ($e1359 (distinct ?e193 ?e274))
+(flet ($e1360 (distinct ?e443 ?e295))
+(flet ($e1361 (bvsgt (sign_extend[1] ?e230) ?e302))
+(flet ($e1362 (bvugt ?e83 (zero_extend[3] ?e147)))
+(flet ($e1363 (distinct ?e234 (sign_extend[2] ?e195)))
+(flet ($e1364 (bvsgt ?e595 ?e155))
+(flet ($e1365 (bvsgt (zero_extend[3] ?e81) ?e9))
+(flet ($e1366 (distinct ?e195 (zero_extend[1] ?e600)))
+(flet ($e1367 (bvugt ?e579 (zero_extend[3] ?e547)))
+(flet ($e1368 (bvule (sign_extend[3] ?e39) ?e590))
+(flet ($e1369 (bvsgt ?e94 (sign_extend[3] ?e17)))
+(flet ($e1370 (bvule ?e166 (zero_extend[3] ?e220)))
+(flet ($e1371 (bvsge ?e237 ?e384))
+(flet ($e1372 (distinct ?e351 ?e16))
+(flet ($e1373 (bvsge ?e441 ?e602))
+(flet ($e1374 (bvuge ?e65 (sign_extend[3] ?e438)))
+(flet ($e1375 (bvsle (sign_extend[3] ?e314) ?e348))
+(flet ($e1376 (bvslt ?e263 (sign_extend[3] ?e369)))
+(flet ($e1377 (bvsgt (zero_extend[2] ?e364) ?e230))
+(flet ($e1378 (bvslt ?e79 ?e214))
+(flet ($e1379 (bvult ?e460 ?e88))
+(flet ($e1380 (bvuge ?e145 ?e394))
+(flet ($e1381 (bvugt (zero_extend[1] ?e239) ?e325))
+(flet ($e1382 (bvsgt ?e127 ?e46))
+(flet ($e1383 (= ?e290 ?e609))
+(flet ($e1384 (= ?e406 (sign_extend[3] ?e587)))
+(flet ($e1385 (bvult ?e642 ?e274))
+(flet ($e1386 (bvsgt ?e292 ?e58))
+(flet ($e1387 (bvslt ?e234 (sign_extend[3] ?e640)))
+(flet ($e1388 (bvule (zero_extend[3] ?e458) ?e135))
+(flet ($e1389 (bvuge ?e199 ?e572))
+(flet ($e1390 (bvult (sign_extend[3] ?e397) ?e360))
+(flet ($e1391 (bvslt ?e103 (sign_extend[2] ?e529)))
+(flet ($e1392 (bvsle (zero_extend[3] ?e116) ?e128))
+(flet ($e1393 (bvule (zero_extend[2] ?e142) ?e230))
+(flet ($e1394 (distinct ?e2 ?e54))
+(flet ($e1395 (bvult ?e152 ?e205))
+(flet ($e1396 (bvuge ?e49 ?e577))
+(flet ($e1397 (bvuge ?e155 ?e353))
+(flet ($e1398 (= (zero_extend[3] ?e385) ?e135))
+(flet ($e1399 (bvuge ?e157 ?e274))
+(flet ($e1400 (bvsle ?e213 (zero_extend[1] ?e341)))
+(flet ($e1401 (= (zero_extend[3] ?e56) ?e416))
+(flet ($e1402 (distinct ?e431 ?e179))
+(flet ($e1403 (bvult ?e534 (sign_extend[3] ?e167)))
+(flet ($e1404 (bvugt (zero_extend[3] ?e401) ?e526))
+(flet ($e1405 (bvsge ?e48 (sign_extend[3] ?e372)))
+(flet ($e1406 (bvsgt ?e597 ?e362))
+(flet ($e1407 (bvsle ?e455 (zero_extend[2] ?e615)))
+(flet ($e1408 (bvsge ?e608 ?e438))
+(flet ($e1409 (= (sign_extend[3] ?e207) ?e406))
+(flet ($e1410 (bvult (zero_extend[3] ?e428) ?e41))
+(flet ($e1411 (bvsle ?e489 (zero_extend[3] ?e574)))
+(flet ($e1412 (distinct (zero_extend[3] ?e59) ?e301))
+(flet ($e1413 (bvsge (zero_extend[2] ?e535) ?e405))
+(flet ($e1414 (bvsge ?e526 (sign_extend[3] ?e47)))
+(flet ($e1415 (bvslt (zero_extend[3] ?e524) ?e29))
+(flet ($e1416 (bvsle ?e623 ?e144))
+(flet ($e1417 (bvuge ?e293 ?e538))
+(flet ($e1418 (bvslt ?e520 ?e287))
+(flet ($e1419 (bvuge ?e243 (zero_extend[1] ?e140)))
+(flet ($e1420 (bvugt ?e30 (zero_extend[3] ?e506)))
+(flet ($e1421 (bvuge ?e319 ?e427))
+(flet ($e1422 (bvugt ?e215 ?e117))
+(flet ($e1423 (bvult ?e470 ?e299))
+(flet ($e1424 (bvuge ?e296 (sign_extend[3] ?e224)))
+(flet ($e1425 (bvult (zero_extend[3] ?e494) ?e268))
+(flet ($e1426 (= ?e325 (zero_extend[3] ?e599)))
+(flet ($e1427 (bvslt (sign_extend[3] ?e624) ?e139))
+(flet ($e1428 (bvugt (sign_extend[1] ?e269) ?e562))
+(flet ($e1429 (bvule ?e565 (sign_extend[2] ?e585)))
+(flet ($e1430 (bvsle (zero_extend[3] ?e248) ?e128))
+(flet ($e1431 (distinct ?e448 (zero_extend[2] ?e195)))
+(flet ($e1432 (bvslt (sign_extend[1] ?e103) ?e560))
+(flet ($e1433 (bvult ?e285 (sign_extend[3] ?e155)))
+(flet ($e1434 (= (sign_extend[1] ?e514) ?e431))
+(flet ($e1435 (bvuge ?e101 ?e167))
+(flet ($e1436 (= (sign_extend[3] ?e599) ?e583))
+(flet ($e1437 (bvslt (sign_extend[3] ?e167) ?e65))
+(flet ($e1438 (bvule ?e408 ?e536))
+(flet ($e1439 (bvuge ?e498 ?e219))
+(flet ($e1440 (bvslt ?e78 ?e188))
+(flet ($e1441 (distinct (sign_extend[3] ?e146) ?e294))
+(flet ($e1442 (bvuge (zero_extend[1] ?e335) ?e204))
+(flet ($e1443 (bvslt ?e544 ?e224))
+(flet ($e1444 (= (zero_extend[3] ?e156) ?e591))
+(flet ($e1445 (bvult ?e85 ?e217))
+(flet ($e1446 (= (sign_extend[3] ?e462) ?e328))
+(flet ($e1447 (= (zero_extend[3] ?e637) ?e63))
+(flet ($e1448 (distinct ?e304 ?e649))
+(flet ($e1449 (bvsle ?e490 (sign_extend[1] ?e512)))
+(flet ($e1450 (bvslt ?e68 (sign_extend[3] ?e146)))
+(flet ($e1451 (bvugt ?e19 (zero_extend[3] ?e49)))
+(flet ($e1452 (bvult ?e572 ?e111))
+(flet ($e1453 (bvult ?e349 ?e143))
+(flet ($e1454 (bvule ?e124 ?e477))
+(flet ($e1455 (bvslt (zero_extend[3] ?e622) ?e234))
+(flet ($e1456 (bvsgt ?e43 ?e311))
+(flet ($e1457 (bvsge ?e462 ?e99))
+(flet ($e1458 (bvuge ?e348 ?e223))
+(flet ($e1459 (bvsle (sign_extend[3] ?e635) ?e169))
+(flet ($e1460 (bvult ?e530 ?e207))
+(flet ($e1461 (= ?e481 (sign_extend[3] ?e535)))
+(flet ($e1462 (bvsle ?e198 (zero_extend[3] ?e439)))
+(flet ($e1463 (distinct ?e79 ?e417))
+(flet ($e1464 (bvule ?e372 ?e81))
+(flet ($e1465 (bvsgt ?e289 ?e498))
+(flet ($e1466 (bvsle ?e183 ?e201))
+(flet ($e1467 (bvsge (zero_extend[2] ?e358) ?e208))
+(flet ($e1468 (bvule ?e539 ?e171))
+(flet ($e1469 (bvuge ?e551 ?e268))
+(flet ($e1470 (bvsgt ?e603 ?e396))
+(flet ($e1471 (bvsgt ?e83 (sign_extend[1] ?e611)))
+(flet ($e1472 (bvsgt (sign_extend[3] ?e428) ?e634))
+(flet ($e1473 (bvugt (sign_extend[2] ?e627) ?e74))
+(flet ($e1474 (bvslt ?e538 ?e46))
+(flet ($e1475 (bvugt ?e518 ?e62))
+(flet ($e1476 (bvslt (zero_extend[2] ?e490) ?e356))
+(flet ($e1477 (= ?e263 (zero_extend[3] ?e594)))
+(flet ($e1478 (bvugt ?e159 (zero_extend[1] ?e575)))
+(flet ($e1479 (bvugt (zero_extend[3] ?e28) ?e260))
+(flet ($e1480 (bvslt ?e613 ?e334))
+(flet ($e1481 (bvsge ?e261 (sign_extend[2] ?e646)))
+(flet ($e1482 (bvule ?e493 (sign_extend[3] ?e545)))
+(flet ($e1483 (bvsle (sign_extend[1] ?e446) ?e244))
+(flet ($e1484 (bvslt ?e393 ?e509))
+(flet ($e1485 (bvult (sign_extend[3] ?e585) ?e85))
+(flet ($e1486 (bvugt ?e583 (zero_extend[2] ?e566)))
+(flet ($e1487 (bvsle (zero_extend[3] ?e384) ?e5))
+(flet ($e1488 (bvslt ?e300 (zero_extend[3] ?e59)))
+(flet ($e1489 (bvuge (sign_extend[1] ?e322) ?e432))
+(flet ($e1490 (bvule ?e294 ?e466))
+(flet ($e1491 (bvule ?e408 (zero_extend[3] ?e592)))
+(flet ($e1492 (bvult ?e179 ?e34))
+(flet ($e1493 (distinct ?e65 ?e83))
+(flet ($e1494 (bvsge ?e205 ?e316))
+(flet ($e1495 (bvuge (zero_extend[3] ?e450) ?e145))
+(flet ($e1496 (distinct ?e480 ?e434))
+(flet ($e1497 (bvsge (sign_extend[3] ?e47) ?e516))
+(flet ($e1498 (bvsle ?e57 ?e102))
+(flet ($e1499 (bvslt ?e455 (zero_extend[3] ?e370)))
+(flet ($e1500 (bvslt ?e308 (sign_extend[3] ?e327)))
+(flet ($e1501 (= ?e37 ?e109))
+(flet ($e1502 (bvuge ?e102 (sign_extend[3] ?e587)))
+(flet ($e1503 (bvsgt ?e533 (sign_extend[3] ?e82)))
+(flet ($e1504 (bvsle ?e126 (zero_extend[1] ?e433)))
+(flet ($e1505 (bvslt ?e325 (zero_extend[3] ?e130)))
+(flet ($e1506 (= ?e435 (zero_extend[3] ?e66)))
+(flet ($e1507 (bvsle (zero_extend[1] ?e459) ?e262))
+(flet ($e1508 (= ?e617 (sign_extend[3] ?e124)))
+(flet ($e1509 (bvslt ?e344 (sign_extend[3] ?e17)))
+(flet ($e1510 (bvsle ?e622 ?e600))
+(flet ($e1511 (bvugt ?e489 ?e491))
+(flet ($e1512 (bvsle ?e579 (zero_extend[1] ?e103)))
+(flet ($e1513 (bvsgt ?e416 (zero_extend[3] ?e596)))
+(flet ($e1514 (bvslt ?e350 ?e413))
+(flet ($e1515 (distinct ?e303 ?e32))
+(flet ($e1516 (bvult ?e169 ?e254))
+(flet ($e1517 (bvuge (zero_extend[3] ?e451) ?e7))
+(flet ($e1518 (bvsle ?e110 ?e381))
+(flet ($e1519 (distinct (sign_extend[2] ?e395) ?e239))
+(flet ($e1520 (bvuge ?e127 ?e56))
+(flet ($e1521 (bvsge ?e580 ?e111))
+(flet ($e1522 (= ?e543 ?e71))
+(flet ($e1523 (distinct (zero_extend[2] ?e377) ?e258))
+(flet ($e1524 (bvsle (sign_extend[3] ?e415) ?e203))
+(flet ($e1525 (bvuge ?e516 (sign_extend[3] ?e61)))
+(flet ($e1526 (bvugt ?e102 (zero_extend[3] ?e428)))
+(flet ($e1527 (bvsgt ?e647 ?e70))
+(flet ($e1528 (bvsle (sign_extend[3] ?e523) ?e121))
+(flet ($e1529 (bvsgt ?e224 ?e289))
+(flet ($e1530 (bvult (sign_extend[3] ?e352) ?e268))
+(flet ($e1531 (bvsle ?e481 (sign_extend[3] ?e409)))
+(flet ($e1532 (distinct ?e210 ?e259))
+(flet ($e1533 (bvugt ?e536 (sign_extend[3] ?e241)))
+(flet ($e1534 (distinct (zero_extend[3] ?e59) ?e100))
+(flet ($e1535 (bvslt ?e292 ?e621))
+(flet ($e1536 (bvugt ?e333 ?e31))
+(flet ($e1537 (bvuge ?e331 ?e14))
+(flet ($e1538 (bvuge ?e629 ?e267))
+(flet ($e1539 (bvult ?e631 ?e270))
+(flet ($e1540 (bvsgt (zero_extend[1] ?e500) ?e379))
+(flet ($e1541 (bvsgt ?e96 (zero_extend[3] ?e276)))
+(flet ($e1542 (bvugt ?e43 ?e299))
+(flet ($e1543 (bvule (zero_extend[3] ?e547) ?e325))
+(flet ($e1544 (= ?e250 ?e124))
+(flet ($e1545 (distinct (sign_extend[3] ?e463) ?e491))
+(flet ($e1546 (bvugt ?e212 ?e113))
+(flet ($e1547 (bvult ?e47 ?e609))
+(flet ($e1548 (distinct ?e617 (zero_extend[3] ?e14)))
+(flet ($e1549 (bvult ?e404 ?e464))
+(flet ($e1550 (= ?e140 (zero_extend[2] ?e512)))
+(flet ($e1551 (bvsge ?e139 ?e94))
+(flet ($e1552 (bvslt ?e35 (zero_extend[3] ?e452)))
+(flet ($e1553 (bvult ?e590 (zero_extend[3] ?e618)))
+(flet ($e1554 (bvslt ?e352 ?e147))
+(flet ($e1555 (bvugt ?e296 (zero_extend[3] ?e276)))
+(flet ($e1556 (bvuge ?e238 ?e463))
+(flet ($e1557 (distinct (zero_extend[2] ?e127) ?e123))
+(flet ($e1558 (bvugt (sign_extend[3] ?e176) ?e501))
+(flet ($e1559 (bvsgt (zero_extend[3] ?e149) ?e581))
+(flet ($e1560 (bvsgt ?e509 ?e246))
+(flet ($e1561 (= ?e223 ?e407))
+(flet ($e1562 (bvult ?e600 ?e36))
+(flet ($e1563 (bvule ?e10 ?e494))
+(flet ($e1564 (bvsge ?e595 ?e303))
+(flet ($e1565 (bvuge ?e568 ?e188))
+(flet ($e1566 (bvslt ?e174 (sign_extend[3] ?e127)))
+(flet ($e1567 (bvsgt ?e310 ?e524))
+(flet ($e1568 (= ?e578 (zero_extend[3] ?e233)))
+(flet ($e1569 (bvugt (sign_extend[1] ?e267) ?e442))
+(flet ($e1570 (distinct ?e530 ?e90))
+(flet ($e1571 (distinct ?e105 ?e623))
+(flet ($e1572 (bvugt (zero_extend[3] ?e576) ?e346))
+(flet ($e1573 (bvugt ?e265 ?e128))
+(flet ($e1574 (= ?e225 (sign_extend[3] ?e580)))
+(flet ($e1575 (bvuge ?e257 ?e596))
+(flet ($e1576 (bvsgt (sign_extend[3] ?e130) ?e249))
+(flet ($e1577 (bvsge (zero_extend[3] ?e269) ?e338))
+(flet ($e1578 (bvuge ?e501 ?e436))
+(flet ($e1579 (distinct ?e409 ?e305))
+(flet ($e1580 (distinct ?e267 ?e523))
+(flet ($e1581 (bvsle ?e138 ?e58))
+(flet ($e1582 (bvugt (sign_extend[3] ?e218) ?e579))
+(flet ($e1583 (bvsle ?e545 ?e537))
+(flet ($e1584 (= (zero_extend[3] ?e45) ?e20))
+(flet ($e1585 (bvugt ?e581 ?e516))
+(flet ($e1586 (distinct (zero_extend[3] ?e547) ?e34))
+(flet ($e1587 (bvsle (sign_extend[3] ?e396) ?e22))
+(flet ($e1588 (= ?e322 ?e327))
+(flet ($e1589 (bvsgt ?e75 ?e78))
+(flet ($e1590 (bvsle (zero_extend[1] ?e566) ?e103))
+(flet ($e1591 (bvsgt ?e488 ?e125))
+(flet ($e1592 (bvuge ?e542 (sign_extend[3] ?e218)))
+(flet ($e1593 (distinct ?e74 ?e24))
+(flet ($e1594 (bvult ?e481 ?e173))
+(flet ($e1595 (= ?e37 (zero_extend[3] ?e396)))
+(flet ($e1596 (bvsge ?e496 (zero_extend[3] ?e509)))
+(flet ($e1597 (bvult v1 (sign_extend[3] ?e395)))
+(flet ($e1598 (bvslt ?e539 ?e333))
+(flet ($e1599 (bvuge ?e338 ?e29))
+(flet ($e1600 (bvult ?e474 (zero_extend[1] ?e405)))
+(flet ($e1601 (distinct (sign_extend[3] ?e323) ?e346))
+(flet ($e1602 (bvsle ?e154 ?e241))
+(flet ($e1603 (bvugt (zero_extend[3] ?e36) ?e633))
+(flet ($e1604 (distinct ?e201 (sign_extend[2] ?e566)))
+(flet ($e1605 (bvsge (sign_extend[3] ?e499) ?e496))
+(flet ($e1606 (bvuge (zero_extend[2] ?e562) ?e383))
+(flet ($e1607 (bvult ?e401 ?e498))
+(flet ($e1608 (bvslt ?e40 (zero_extend[3] ?e226)))
+(flet ($e1609 (distinct (sign_extend[3] ?e430) ?e527))
+(flet ($e1610 (bvugt ?e334 (sign_extend[3] ?e450)))
+(flet ($e1611 (bvsgt (sign_extend[2] ?e176) ?e114))
+(flet ($e1612 (bvule (zero_extend[3] ?e276) ?e24))
+(flet ($e1613 (= ?e221 ?e49))
+(flet ($e1614 (bvsgt (zero_extend[3] ?e194) ?e492))
+(flet ($e1615 (bvugt (sign_extend[3] ?e605) ?e543))
+(flet ($e1616 (bvsgt ?e324 ?e111))
+(flet ($e1617 (bvugt ?e452 ?e99))
+(flet ($e1618 (bvult (sign_extend[3] ?e596) ?e228))
+(flet ($e1619 (bvult (sign_extend[1] ?e158) ?e52))
+(flet ($e1620 (bvuge ?e326 (zero_extend[3] ?e267)))
+(flet ($e1621 (bvult ?e450 ?e156))
+(flet ($e1622 (bvslt ?e419 ?e95))
+(flet ($e1623 (bvsge (sign_extend[3] ?e104) ?e590))
+(flet ($e1624 (bvsle (sign_extend[1] ?e370) ?e398))
+(flet ($e1625 (bvsge (zero_extend[1] ?e376) ?e394))
+(flet ($e1626 (bvugt (zero_extend[3] ?e446) ?e112))
+(flet ($e1627 (distinct (sign_extend[3] ?e110) ?e203))
+(flet ($e1628 (bvsge ?e93 ?e118))
+(flet ($e1629 (bvule ?e179 (sign_extend[3] ?e248)))
+(flet ($e1630 (bvugt ?e489 (zero_extend[3] ?e212)))
+(flet ($e1631 (bvult (sign_extend[1] ?e235) ?e366))
+(flet ($e1632 (distinct ?e196 (zero_extend[2] ?e584)))
+(flet ($e1633 (bvsgt (zero_extend[3] ?e639) ?e63))
+(flet ($e1634 (bvsgt (zero_extend[3] ?e350) ?e54))
+(flet ($e1635 (distinct ?e417 ?e245))
+(flet ($e1636 (bvsgt ?e183 ?e263))
+(flet ($e1637 (bvsle ?e311 ?e608))
+(flet ($e1638 (bvule ?e203 (zero_extend[3] ?e304)))
+(flet ($e1639 (distinct ?e211 ?e508))
+(flet ($e1640 (bvult ?e568 ?e295))
+(flet ($e1641 (bvsge ?e436 ?e475))
+(flet ($e1642 (bvsgt ?e528 ?e404))
+(flet ($e1643 (bvugt ?e331 ?e569))
+(flet ($e1644 (bvsle ?e170 ?e608))
+(flet ($e1645 (bvult ?e533 (zero_extend[3] ?e82)))
+(flet ($e1646 (bvuge (sign_extend[3] ?e156) ?e515))
+(flet ($e1647 (bvsge ?e480 ?e451))
+(flet ($e1648 (distinct ?e329 ?e549))
+(flet ($e1649 (bvsge ?e245 ?e72))
+(flet ($e1650 (bvsle (zero_extend[3] ?e462) ?e252))
+(flet ($e1651 (bvsle ?e495 ?e368))
+(flet ($e1652 (= (sign_extend[3] ?e311) ?e93))
+(flet ($e1653 (= ?e614 (zero_extend[2] ?e167)))
+(flet ($e1654 (bvuge ?e498 ?e312))
+(flet ($e1655 (bvult ?e568 ?e316))
+(flet ($e1656 (= (sign_extend[3] ?e138) v1))
+(flet ($e1657 (= ?e354 (zero_extend[3] ?e362)))
+(flet ($e1658 (bvsle ?e14 ?e337))
+(flet ($e1659 (bvsgt (sign_extend[3] ?e231) ?e225))
+(flet ($e1660 (bvsgt ?e132 (sign_extend[3] ?e311)))
+(flet ($e1661 (bvsgt (zero_extend[3] ?e564) ?e242))
+(flet ($e1662 (bvsge ?e548 ?e104))
+(flet ($e1663 (bvule (sign_extend[2] ?e539) ?e158))
+(flet ($e1664 (bvsgt ?e219 ?e266))
+(flet ($e1665 (= (zero_extend[3] ?e303) ?e57))
+(flet ($e1666 (bvsgt (zero_extend[1] ?e445) ?e567))
+(flet ($e1667 (bvule (sign_extend[3] ?e487) ?e613))
+(flet ($e1668 (bvsgt ?e354 (sign_extend[3] ?e451)))
+(flet ($e1669 (bvsgt ?e142 ?e272))
+(flet ($e1670 (bvule ?e619 (zero_extend[3] ?e530)))
+(flet ($e1671 (= (sign_extend[1] ?e123) ?e145))
+(flet ($e1672 (bvslt ?e403 ?e75))
+(flet ($e1673 (bvslt (zero_extend[3] ?e450) ?e468))
+(flet ($e1674 (bvule ?e87 ?e504))
+(flet ($e1675 (bvugt ?e109 (sign_extend[3] ?e219)))
+(flet ($e1676 (bvsge (zero_extend[3] ?e462) ?e581))
+(flet ($e1677 (bvuge ?e82 ?e603))
+(flet ($e1678 (bvsge ?e403 ?e488))
+(flet ($e1679 (bvslt ?e149 ?e124))
+(flet ($e1680 (= ?e502 ?e618))
+(flet ($e1681 (bvsle ?e291 ?e350))
+(flet ($e1682 (bvsgt (zero_extend[2] ?e567) ?e4))
+(flet ($e1683 (bvsge ?e257 ?e231))
+(flet ($e1684 (bvule (zero_extend[3] ?e384) ?e634))
+(flet ($e1685 (distinct ?e434 ?e256))
+(flet ($e1686 (bvslt ?e371 ?e597))
+(flet ($e1687 (bvsle ?e192 ?e306))
+(flet ($e1688 (bvslt ?e489 ?e411))
+(flet ($e1689 (bvsle (sign_extend[3] ?e357) ?e198))
+(flet ($e1690 (bvult (sign_extend[3] ?e276) ?e48))
+(flet ($e1691 (bvsgt ?e496 (sign_extend[3] ?e324)))
+(flet ($e1692 (bvsgt ?e439 ?e32))
+(flet ($e1693 (bvsle ?e86 ?e31))
+(flet ($e1694 (bvult (zero_extend[3] ?e125) ?e203))
+(flet ($e1695 (bvslt ?e284 ?e193))
+(flet ($e1696 (bvsle ?e514 (zero_extend[2] ?e597)))
+(flet ($e1697 (bvsgt (sign_extend[3] ?e127) ?e204))
+(flet ($e1698 (distinct ?e564 ?e82))
+(flet ($e1699 (bvsle ?e204 (sign_extend[3] ?e107)))
+(flet ($e1700 (bvult ?e340 (zero_extend[3] ?e329)))
+(flet ($e1701 (bvugt ?e136 ?e362))
+(flet ($e1702 (= (sign_extend[2] ?e577) ?e405))
+(flet ($e1703 (bvsgt ?e174 ?e348))
+(flet ($e1704 (bvsgt ?e387 ?e256))
+(flet ($e1705 (bvsle ?e375 ?e480))
+(flet ($e1706 (bvule ?e418 ?e53))
+(flet ($e1707 (bvsgt ?e118 (sign_extend[3] ?e125)))
+(flet ($e1708 (bvugt (sign_extend[3] ?e290) ?e211))
+(flet ($e1709 (bvugt ?e491 (zero_extend[3] ?e216)))
+(flet ($e1710 (bvult (sign_extend[3] ?e367) ?e453))
+(flet ($e1711 (bvult ?e224 ?e390))
+(flet ($e1712 (bvult (sign_extend[3] ?e426) ?e489))
+(flet ($e1713 (bvule (sign_extend[3] ?e164) ?e168))
+(flet ($e1714 (distinct ?e353 ?e277))
+(flet ($e1715 (bvule ?e56 ?e580))
+(flet ($e1716 (bvsle ?e577 ?e573))
+(flet ($e1717 (distinct (zero_extend[3] ?e392) ?e338))
+(flet ($e1718 (bvsle ?e128 (sign_extend[1] ?e114)))
+(flet ($e1719 (bvule ?e542 (sign_extend[3] ?e199)))
+(flet ($e1720 (bvult ?e481 (zero_extend[3] ?e424)))
+(flet ($e1721 (bvsge ?e454 ?e342))
+(flet ($e1722 (bvuge ?e8 ?e515))
+(flet ($e1723 (= ?e226 ?e595))
+(flet ($e1724 (bvugt ?e79 ?e471))
+(flet ($e1725 (bvule ?e511 ?e72))
+(flet ($e1726 (bvsgt ?e569 ?e374))
+(flet ($e1727 (bvult ?e54 ?e522))
+(flet ($e1728 (bvuge ?e122 ?e25))
+(flet ($e1729 (bvugt ?e169 (zero_extend[3] ?e178)))
+(flet ($e1730 (bvult ?e174 (sign_extend[3] ?e595)))
+(flet ($e1731 (bvuge (sign_extend[3] ?e90) ?e478))
+(flet ($e1732 (bvsgt ?e273 (zero_extend[3] ?e389)))
+(flet ($e1733 (bvugt ?e141 ?e370))
+(flet ($e1734 (bvsge ?e108 (sign_extend[2] ?e584)))
+(flet ($e1735 (distinct ?e178 ?e193))
+(flet ($e1736 (bvule ?e354 ?e505))
+(flet ($e1737 (bvule ?e436 (zero_extend[3] ?e90)))
+(flet ($e1738 (= ?e466 (sign_extend[3] ?e370)))
+(flet ($e1739 (bvsge ?e58 ?e563))
+(flet ($e1740 (bvslt (sign_extend[3] ?e618) ?e144))
+(flet ($e1741 (= (zero_extend[3] ?e142) ?e448))
+(flet ($e1742 (bvuge (sign_extend[3] ?e79) ?e309))
+(flet ($e1743 (= ?e510 ?e582))
+(flet ($e1744 (bvult ?e144 (zero_extend[3] ?e606)))
+(flet ($e1745 (bvsge ?e238 ?e417))
+(flet ($e1746 (bvsgt (zero_extend[3] ?e162) ?e300))
+(flet ($e1747 (bvult ?e369 ?e641))
+(flet ($e1748 (= (zero_extend[2] ?e32) ?e235))
+(flet ($e1749 (bvuge ?e415 ?e176))
+(flet ($e1750 (bvsge (zero_extend[3] ?e418) ?e129))
+(flet ($e1751 (bvuge ?e440 ?e205))
+(flet ($e1752 (bvuge (zero_extend[3] ?e247) ?e206))
+(flet ($e1753 (bvule ?e351 ?e571))
+(flet ($e1754 (= ?e108 ?e204))
+(flet ($e1755 (bvsle (zero_extend[3] ?e426) ?e468))
+(flet ($e1756 (bvugt ?e405 (sign_extend[2] ?e413)))
+(flet ($e1757 (bvult ?e332 ?e632))
+(flet ($e1758 (bvsge (zero_extend[1] ?e614) ?e16))
+(flet ($e1759 (bvule ?e223 (sign_extend[3] ?e554)))
+(flet ($e1760 (bvslt ?e311 ?e374))
+(flet ($e1761 (bvsle ?e168 ?e122))
+(flet ($e1762 (distinct (zero_extend[2] ?e627) ?e23))
+(flet ($e1763 (bvsge (sign_extend[3] ?e540) ?e472))
+(flet ($e1764 (= ?e256 ?e396))
+(flet ($e1765 (= (zero_extend[3] ?e540) ?e85))
+(flet ($e1766 (bvsge (sign_extend[3] ?e110) ?e7))
+(flet ($e1767 (distinct ?e187 ?e477))
+(flet ($e1768 (bvsle ?e376 ?e614))
+(flet ($e1769 (distinct ?e442 (zero_extend[1] ?e477)))
+(flet ($e1770 (bvslt ?e541 (sign_extend[1] ?e32)))
+(flet ($e1771 (bvugt ?e518 ?e417))
+(flet ($e1772 (distinct (sign_extend[2] ?e357) ?e405))
+(flet ($e1773 (bvslt (sign_extend[3] ?e224) ?e419))
+(flet ($e1774 (bvuge (sign_extend[3] ?e374) ?e25))
+(flet ($e1775 (bvule (sign_extend[2] ?e442) ?e300))
+(flet ($e1776 (bvuge ?e49 ?e557))
+(flet ($e1777 (bvuge ?e332 (zero_extend[3] ?e117)))
+(flet ($e1778 (bvslt ?e96 (sign_extend[3] ?e353)))
+(flet ($e1779 (bvslt v1 (zero_extend[1] ?e628)))
+(flet ($e1780 (bvuge (zero_extend[3] ?e389) ?e126))
+(flet ($e1781 (bvslt ?e108 (sign_extend[3] ?e67)))
+(flet ($e1782 (bvslt (sign_extend[3] ?e82) ?e135))
+(flet ($e1783 (bvule ?e243 ?e556))
+(flet ($e1784 (distinct ?e517 (zero_extend[3] ?e149)))
+(flet ($e1785 (bvult ?e302 (zero_extend[3] ?e458)))
+(flet ($e1786 (bvule ?e255 ?e327))
+(flet ($e1787 (bvslt ?e406 (sign_extend[3] ?e62)))
+(flet ($e1788 (bvugt (sign_extend[3] ?e110) ?e96))
+(flet ($e1789 (bvult (zero_extend[3] ?e164) ?e225))
+(flet ($e1790 (bvsge (zero_extend[3] ?e293) ?e302))
+(flet ($e1791 (= ?e538 ?e460))
+(flet ($e1792 (bvult ?e37 ?e52))
+(flet ($e1793 (= ?e115 (sign_extend[3] ?e172)))
+(flet ($e1794 (bvsle ?e488 ?e220))
+(flet ($e1795 (bvugt ?e128 ?e54))
+(flet ($e1796 (= (sign_extend[3] ?e323) ?e532))
+(flet ($e1797 (bvslt ?e76 ?e75))
+(flet ($e1798 (distinct (sign_extend[3] ?e649) ?e180))
+(flet ($e1799 (bvule (zero_extend[3] ?e274) ?e102))
+(flet ($e1800 (bvsgt (sign_extend[1] ?e575) ?e174))
+(flet ($e1801 (distinct v1 ?e2))
+(flet ($e1802 (bvsge (sign_extend[3] ?e237) ?e83))
+(flet ($e1803 (bvugt ?e73 ?e39))
+(flet ($e1804 (= ?e195 (zero_extend[1] ?e395)))
+(flet ($e1805 (bvsle (sign_extend[3] ?e625) ?e183))
+(flet ($e1806 (bvsge ?e385 ?e14))
+(flet ($e1807 (bvslt (sign_extend[3] ?e518) ?e351))
+(flet ($e1808 (bvsle ?e19 ?e399))
+(flet ($e1809 (bvsle (zero_extend[3] ?e577) ?e30))
+(flet ($e1810 (bvsle ?e206 (zero_extend[3] ?e75)))
+(flet ($e1811 (bvugt (sign_extend[3] ?e511) ?e196))
+(flet ($e1812 (bvuge ?e422 (zero_extend[3] ?e232)))
+(flet ($e1813 (bvugt ?e233 ?e207))
+(flet ($e1814 (bvsge (sign_extend[3] ?e143) ?e54))
+(flet ($e1815 (bvsle ?e69 (sign_extend[3] ?e32)))
+(flet ($e1816 (bvuge ?e560 ?e346))
+(flet ($e1817 (bvsgt ?e237 ?e585))
+(flet ($e1818 (distinct ?e450 ?e600))
+(flet ($e1819 (bvugt ?e564 ?e164))
+(flet ($e1820 (bvugt v1 (zero_extend[3] ?e450)))
+(flet ($e1821 (bvsge (sign_extend[3] ?e357) ?e115))
+(flet ($e1822 (bvsge ?e296 (zero_extend[3] ?e32)))
+(flet ($e1823 (bvugt ?e61 ?e589))
+(flet ($e1824 (bvuge ?e252 (sign_extend[3] ?e167)))
+(flet ($e1825 (bvuge (sign_extend[1] ?e230) ?e319))
+(flet ($e1826 (bvsle ?e457 (zero_extend[2] ?e442)))
+(flet ($e1827 (bvslt ?e198 ?e408))
+(flet ($e1828 (bvugt ?e361 (sign_extend[3] ?e482)))
+(flet ($e1829 (bvult (zero_extend[2] ?e562) ?e5))
+(flet ($e1830 (bvult ?e175 ?e519))
+(flet ($e1831 (bvslt ?e449 ?e233))
+(flet ($e1832 (distinct ?e228 (sign_extend[1] ?e12)))
+(flet ($e1833 (distinct ?e548 ?e362))
+(flet ($e1834 (bvsle ?e196 (sign_extend[3] ?e337)))
+(flet ($e1835 (bvugt ?e460 ?e372))
+(flet ($e1836 (bvuge ?e391 (zero_extend[1] ?e241)))
+(flet ($e1837 (bvule (zero_extend[3] ?e293) ?e217))
+(flet ($e1838 (bvugt ?e118 (sign_extend[3] ?e378)))
+(flet ($e1839 (bvslt (sign_extend[3] ?e157) ?e528))
+(flet ($e1840 (bvuge ?e320 ?e311))
+(flet ($e1841 (bvult ?e28 ?e282))
+(flet ($e1842 (= (zero_extend[2] ?e133) ?e614))
+(flet ($e1843 (bvule ?e98 ?e13))
+(flet ($e1844 (bvslt (sign_extend[3] ?e495) ?e588))
+(flet ($e1845 (bvuge ?e367 ?e116))
+(flet ($e1846 (bvsle ?e445 ?e600))
+(flet ($e1847 (bvslt ?e213 (zero_extend[1] ?e494)))
+(flet ($e1848 (= ?e523 ?e150))
+(flet ($e1849 (bvsle (sign_extend[3] ?e315) ?e189))
+(flet ($e1850 (bvugt ?e613 (zero_extend[3] ?e271)))
+(flet ($e1851 (bvslt ?e127 ?e303))
+(flet ($e1852 (bvult ?e94 (zero_extend[3] ?e642)))
+(flet ($e1853 (bvuge ?e319 (sign_extend[3] ?e125)))
+(flet ($e1854 (distinct (sign_extend[1] ?e369) ?e615))
+(flet ($e1855 (bvule ?e264 (zero_extend[3] ?e456)))
+(flet ($e1856 (distinct ?e70 ?e161))
+(flet ($e1857 (bvuge (sign_extend[3] ?e424) ?e325))
+(flet ($e1858 (bvsge ?e280 (sign_extend[3] ?e107)))
+(flet ($e1859 (bvsgt (zero_extend[3] ?e250) ?e34))
+(flet ($e1860 (bvugt ?e496 ?e457))
+(flet ($e1861 (bvsle ?e109 (zero_extend[3] ?e622)))
+(flet ($e1862 (bvsgt (sign_extend[3] ?e256) ?e189))
+(flet ($e1863 (distinct ?e206 (zero_extend[2] ?e160)))
+(flet ($e1864 (= ?e148 ?e92))
+(flet ($e1865 (= ?e200 (zero_extend[2] ?e267)))
+(flet ($e1866 (bvsle ?e122 ?e351))
+(flet ($e1867 (bvule ?e390 ?e44))
+(flet ($e1868 (bvsgt ?e265 ?e435))
+(flet ($e1869 (bvule ?e18 ?e418))
+(flet ($e1870 (bvslt (sign_extend[1] ?e358) ?e235))
+(flet ($e1871 (bvsge ?e60 (zero_extend[3] ?e142)))
+(flet ($e1872 (= (sign_extend[3] ?e530) ?e359))
+(flet ($e1873 (bvult ?e579 (zero_extend[3] ?e547)))
+(flet ($e1874 (distinct (zero_extend[2] ?e97) ?e115))
+(flet ($e1875 (bvult ?e464 (sign_extend[1] ?e376)))
+(flet ($e1876 (bvugt ?e424 ?e81))
+(flet ($e1877 (bvsgt (zero_extend[2] ?e442) ?e182))
+(flet ($e1878 (bvugt ?e97 (zero_extend[1] ?e306)))
+(flet ($e1879 (distinct ?e231 ?e43))
+(flet ($e1880 (bvugt ?e346 (zero_extend[3] ?e447)))
+(flet ($e1881 (= (zero_extend[3] ?e530) ?e379))
+(flet ($e1882 (bvsge ?e10 ?e486))
+(flet ($e1883 (bvsge ?e481 ?e94))
+(flet ($e1884 (= ?e549 ?e150))
+(flet ($e1885 (bvule ?e7 (sign_extend[2] ?e97)))
+(flet ($e1886 (bvsle ?e379 (sign_extend[3] ?e192)))
+(flet ($e1887 (bvsge ?e426 ?e311))
+(flet ($e1888 (bvult ?e348 ?e5))
+(flet ($e1889 (bvuge ?e81 ?e582))
+(flet ($e1890 (bvult ?e484 (sign_extend[3] ?e639)))
+(flet ($e1891 (= (zero_extend[3] ?e393) ?e3))
+(flet ($e1892 (bvult ?e24 ?e516))
+(flet ($e1893 (bvugt (sign_extend[1] ?e554) ?e244))
+(flet ($e1894 (bvslt ?e134 ?e154))
+(flet ($e1895 (bvule ?e604 ?e67))
+(flet ($e1896 (bvsgt ?e490 (sign_extend[1] ?e184)))
+(flet ($e1897 (bvsge ?e18 ?e384))
+(flet ($e1898 (bvslt ?e389 ?e199))
+(flet ($e1899 (bvsge ?e527 ?e16))
+(flet ($e1900 (distinct ?e268 (zero_extend[2] ?e195)))
+(flet ($e1901 (distinct (zero_extend[3] ?e463) ?e425))
+(flet ($e1902 (= ?e634 (sign_extend[3] ?e535)))
+(flet ($e1903 (bvsle (sign_extend[3] ?e548) ?e422))
+(flet ($e1904 (bvsgt (sign_extend[3] ?e61) ?e359))
+(flet ($e1905 (bvsge (sign_extend[3] ?e352) ?e264))
+(flet ($e1906 (bvuge ?e453 (sign_extend[3] ?e520)))
+(flet ($e1907 (bvugt ?e612 ?e24))
+(flet ($e1908 (bvult (zero_extend[3] ?e480) ?e617))
+(flet ($e1909 (bvugt (zero_extend[3] ?e625) ?e139))
+(flet ($e1910 (bvult ?e467 (sign_extend[3] ?e292)))
+(flet ($e1911 (bvsgt (sign_extend[3] ?e33) ?e492))
+(flet ($e1912 (bvugt ?e259 ?e162))
+(flet ($e1913 (bvsgt ?e548 ?e372))
+(flet ($e1914 (= ?e306 ?e31))
+(flet ($e1915 (bvuge ?e291 ?e604))
+(flet ($e1916 (distinct ?e242 (zero_extend[3] ?e592)))
+(flet ($e1917 (bvugt ?e474 ?e265))
+(flet ($e1918 (distinct ?e372 ?e291))
+(flet ($e1919 (bvsle ?e69 (zero_extend[2] ?e615)))
+(flet ($e1920 (bvult ?e66 ?e165))
+(flet ($e1921 (bvsgt ?e548 ?e413))
+(flet ($e1922 (bvugt ?e207 ?e199))
+(flet ($e1923 (bvule (zero_extend[3] ?e557) ?e404))
+(flet ($e1924 (bvuge (zero_extend[3] ?e111) ?e366))
+(flet ($e1925 (bvsge ?e225 (zero_extend[3] ?e421)))
+(flet ($e1926 (bvsgt ?e206 ?e100))
+(flet ($e1927 (bvuge ?e552 ?e619))
+(flet ($e1928 (= (zero_extend[1] ?e153) ?e616))
+(flet ($e1929 (bvule (zero_extend[3] ?e272) ?e422))
+(flet ($e1930 (distinct ?e227 (sign_extend[3] ?e164)))
+(flet ($e1931 (bvule ?e335 (zero_extend[2] ?e18)))
+(flet ($e1932 (bvsgt ?e488 ?e389))
+(flet ($e1933 (distinct (zero_extend[1] ?e545) ?e244))
+(flet ($e1934 (bvugt ?e431 ?e467))
+(flet ($e1935 (bvule ?e340 (sign_extend[3] ?e70)))
+(flet ($e1936 (bvsge ?e441 ?e477))
+(flet ($e1937 (bvslt ?e203 (zero_extend[3] ?e547)))
+(flet ($e1938 (bvsgt (zero_extend[3] ?e156) ?e619))
+(flet ($e1939 (bvuge (sign_extend[3] ?e512) ?e273))
+(flet ($e1940 (bvsle (sign_extend[2] ?e462) ?e405))
+(flet ($e1941 (bvugt ?e137 ?e535))
+(flet ($e1942 (bvsge ?e89 ?e538))
+(flet ($e1943 (bvsgt ?e112 (sign_extend[3] ?e477)))
+(flet ($e1944 (bvuge ?e368 ?e494))
+(flet ($e1945 (distinct ?e512 ?e205))
+(flet ($e1946 (bvsge ?e179 (sign_extend[3] ?e199)))
+(flet ($e1947 (bvsgt ?e63 ?e275))
+(flet ($e1948 (= ?e483 ?e648))
+(flet ($e1949 (bvslt (zero_extend[3] ?e72) ?e613))
+(flet ($e1950 (bvsle (sign_extend[3] ?e185) ?e444))
+(flet ($e1951 (bvule v1 (sign_extend[3] ?e375)))
+(flet ($e1952 (bvule ?e494 ?e375))
+(flet ($e1953 (bvsgt ?e407 ?e100))
+(flet ($e1954 (bvsle ?e3 (zero_extend[3] ?e167)))
+(flet ($e1955 (distinct ?e558 (sign_extend[3] ?e287)))
+(flet ($e1956 (bvugt ?e526 ?e223))
+(flet ($e1957 (= (zero_extend[3] ?e392) ?e52))
+(flet ($e1958 (bvule ?e266 ?e133))
+(flet ($e1959 (bvule ?e590 ?e168))
+(flet ($e1960 (bvugt ?e447 ?e153))
+(flet ($e1961 (distinct (zero_extend[3] ?e594) ?e617))
+(flet ($e1962 (bvuge ?e612 (zero_extend[1] ?e262)))
+(flet ($e1963 (bvslt ?e109 ?e217))
+(flet ($e1964 (bvsge (zero_extend[3] ?e569) ?e51))
+(flet ($e1965 (bvult ?e46 ?e209))
+(flet ($e1966 (bvuge ?e102 ?e429))
+(flet ($e1967 (bvult ?e169 (zero_extend[3] ?e92)))
+(flet ($e1968 (bvsgt ?e313 ?e69))
+(flet ($e1969 (distinct ?e5 ?e26))
+(flet ($e1970 (bvsge (zero_extend[3] ?e270) ?e351))
+(flet ($e1971 (bvule ?e356 (zero_extend[3] ?e473)))
+(flet ($e1972 (bvsge (sign_extend[3] ?e624) ?e536))
+(flet ($e1973 (bvsle ?e598 ?e86))
+(flet ($e1974 (bvugt ?e295 ?e70))
+(flet ($e1975 (= (zero_extend[3] ?e33) ?e179))
+(flet ($e1976 (bvult ?e497 ?e13))
+(flet ($e1977 (bvult ?e367 ?e545))
+(flet ($e1978 (bvule ?e57 ?e560))
+(flet ($e1979 (bvsge (zero_extend[1] ?e423) ?e244))
+(flet ($e1980 (bvslt ?e404 (sign_extend[3] ?e409)))
+(flet ($e1981 (distinct (zero_extend[3] ?e286) ?e243))
+(flet ($e1982 (distinct ?e20 (zero_extend[3] ?e495)))
+(flet ($e1983 (bvuge ?e496 ?e80))
+(flet ($e1984 (bvult ?e8 ?e492))
+(flet ($e1985 (bvuge ?e407 (sign_extend[3] ?e104)))
+(flet ($e1986 (bvult ?e85 ?e578))
+(flet ($e1987 (= (sign_extend[3] ?e13) ?e407))
+(flet ($e1988 (bvsgt ?e254 (sign_extend[3] ?e375)))
+(flet ($e1989 (bvslt ?e567 (zero_extend[1] ?e477)))
+(flet ($e1990 (bvuge (sign_extend[3] ?e479) ?e644))
+(flet ($e1991 (distinct ?e143 ?e649))
+(flet ($e1992 (bvugt (sign_extend[1] ?e511) ?e391))
+(flet ($e1993 (distinct ?e58 ?e116))
+(flet ($e1994 (bvuge ?e168 ?e620))
+(flet ($e1995 (bvsle ?e545 ?e495))
+(flet ($e1996 (bvsle ?e283 ?e513))
+(flet ($e1997 (bvsle (zero_extend[3] ?e221) ?e278))
+(flet ($e1998 (bvslt ?e243 ?e268))
+(flet ($e1999 (distinct (sign_extend[3] ?e101) ?e22))
+(flet ($e2000 (bvsgt (sign_extend[3] ?e76) ?e273))
+(flet ($e2001 (distinct ?e100 ?e522))
+(flet ($e2002 (distinct (sign_extend[3] ?e488) ?e227))
+(flet ($e2003 (bvuge ?e380 ?e121))
+(flet ($e2004 (bvugt ?e375 ?e216))
+(flet ($e2005 (bvslt ?e180 (sign_extend[3] ?e582)))
+(flet ($e2006 (bvslt ?e457 ?e227))
+(flet ($e2007 (bvult (sign_extend[1] ?e235) ?e19))
+(flet ($e2008 (bvsge ?e539 ?e537))
+(flet ($e2009 (bvugt ?e111 ?e370))
+(flet ($e2010 (bvugt ?e52 ?e467))
+(flet ($e2011 (bvsle (sign_extend[1] ?e502) ?e615))
+(flet ($e2012 (bvsgt ?e245 ?e353))
+(flet ($e2013 (bvslt (zero_extend[1] ?e335) ?e416))
+(flet ($e2014 (bvsle ?e204 ?e607))
+(flet ($e2015 (bvslt ?e424 ?e420))
+(flet ($e2016 (bvsgt (zero_extend[3] ?e31) ?e435))
+(flet ($e2017 (bvsge ?e175 ?e345))
+(flet ($e2018 (distinct (zero_extend[1] ?e400) ?e195))
+(flet ($e2019 (bvsgt ?e535 ?e357))
+(flet ($e2020 (bvugt (zero_extend[3] ?e333) ?e77))
+(flet ($e2021 (bvule (sign_extend[3] ?e440) ?e332))
+(flet ($e2022 (bvsge ?e109 (zero_extend[3] ?e635)))
+(flet ($e2023 (bvsle (zero_extend[3] ?e553) ?e34))
+(flet ($e2024 (distinct ?e516 ?e108))
+(flet ($e2025 (bvsle ?e136 ?e401))
+(flet ($e2026 (bvsle (sign_extend[3] ?e47) ?e19))
+(flet ($e2027 (bvsgt ?e589 ?e315))
+(flet ($e2028 (bvsge (sign_extend[3] ?e605) ?e559))
+(flet ($e2029 (bvule ?e489 ?e560))
+(flet ($e2030 (bvsgt ?e488 ?e443))
+(flet ($e2031 (= ?e544 ?e387))
+(flet ($e2032 (bvsgt ?e505 (zero_extend[3] ?e233)))
+(flet ($e2033 (bvsgt ?e110 ?e345))
+(flet ($e2034 (bvugt ?e139 (sign_extend[3] ?e421)))
+(flet ($e2035 (= ?e593 ?e280))
+(flet ($e2036 (bvule ?e35 (sign_extend[1] ?e123)))
+(flet ($e2037 (= ?e541 (zero_extend[1] ?e143)))
+(flet ($e2038 (bvslt ?e543 ?e556))
+(flet ($e2039 (bvsgt ?e181 (zero_extend[3] ?e577)))
+(flet ($e2040 (bvsgt (zero_extend[3] ?e624) ?e464))
+(flet ($e2041 (bvsle ?e425 ?e340))
+(flet ($e2042 (bvugt ?e361 (sign_extend[3] ?e224)))
+(flet ($e2043 (bvsle ?e329 ?e165))
+(flet ($e2044 (bvslt ?e138 ?e371))
+(flet ($e2045 (bvugt ?e34 (zero_extend[3] ?e387)))
+(flet ($e2046 (bvugt ?e551 (zero_extend[3] ?e447)))
+(flet ($e2047 (= ?e337 ?e603))
+(flet ($e2048 (bvsge ?e526 (sign_extend[2] ?e485)))
+(flet ($e2049 (bvugt ?e17 ?e82))
+(flet ($e2050 (bvugt (sign_extend[3] ?e482) ?e236))
+(flet ($e2051 (bvsge ?e390 ?e371))
+(flet ($e2052 (distinct ?e93 (zero_extend[3] ?e503)))
+(flet ($e2053 (bvsge ?e29 (zero_extend[3] ?e625)))
+(flet ($e2054 (bvsle (sign_extend[2] ?e631) ?e239))
+(flet ($e2055 (bvuge ?e189 ?e416))
+(flet ($e2056 (bvuge ?e480 ?e373))
+(flet ($e2057 (bvsge ?e210 ?e171))
+(flet ($e2058 (distinct ?e508 ?e294))
+(flet ($e2059 (bvule (sign_extend[3] ?e47) ?e242))
+(flet ($e2060 (distinct (sign_extend[1] ?e235) ?e644))
+(flet ($e2061 (bvsle ?e598 ?e451))
+(flet ($e2062 (bvsle (zero_extend[1] ?e628) ?e5))
+(flet ($e2063 (bvuge (zero_extend[3] ?e194) ?e481))
+(flet ($e2064 (bvult (sign_extend[3] ?e386) ?e351))
+(flet ($e2065 (bvslt ?e181 (sign_extend[3] ?e349)))
+(flet ($e2066 (= ?e127 ?e461))
+(flet ($e2067 (bvule ?e204 (zero_extend[3] ?e520)))
+(flet ($e2068 (bvuge ?e326 (sign_extend[3] ?e345)))
+(flet ($e2069 (= ?e157 ?e315))
+(flet ($e2070 (bvslt ?e459 (zero_extend[1] ?e106)))
+(flet ($e2071 (bvsgt ?e444 (zero_extend[2] ?e584)))
+(flet ($e2072 (bvsgt ?e500 (sign_extend[2] ?e503)))
+(flet ($e2073 (= (zero_extend[3] ?e494) ?e591))
+(flet ($e2074 (distinct ?e528 (sign_extend[2] ?e490)))
+(flet ($e2075 (bvslt ?e495 ?e365))
+(flet ($e2076 (bvuge ?e16 (sign_extend[3] ?e304)))
+(flet ($e2077 (bvugt ?e392 ?e295))
+(flet ($e2078 (bvslt ?e317 ?e427))
+(flet ($e2079 (bvsle (sign_extend[3] ?e161) ?e429))
+(flet ($e2080 (bvsle ?e130 ?e222))
+(flet ($e2081 (= ?e450 ?e90))
+(flet ($e2082 (bvugt ?e416 (zero_extend[3] ?e350)))
+(flet ($e2083 (bvsge ?e150 ?e31))
+(flet ($e2084 (bvuge ?e313 ?e526))
+(flet ($e2085 (bvsge ?e298 ?e77))
+(flet ($e2086 (distinct (sign_extend[1] ?e251) ?e358))
+(flet ($e2087 (bvslt ?e410 ?e519))
+(flet ($e2088 (bvsge ?e261 (sign_extend[3] ?e199)))
+(flet ($e2089 (bvsge ?e319 (zero_extend[3] ?e231)))
+(flet ($e2090 (bvslt ?e517 (sign_extend[3] ?e589)))
+(flet ($e2091 (bvule (zero_extend[1] ?e117) ?e97))
+(flet ($e2092 (bvule ?e113 ?e44))
+(flet ($e2093 (bvslt ?e539 ?e418))
+(flet ($e2094 (bvuge ?e483 ?e462))
+(flet ($e2095 (distinct ?e143 ?e153))
+(flet ($e2096 (bvugt (zero_extend[3] ?e89) ?e23))
+(flet ($e2097 (bvsgt ?e606 ?e207))
+(flet ($e2098 (bvslt (zero_extend[2] ?e479) ?e12))
+(flet ($e2099 (bvsgt ?e230 (zero_extend[2] ?e535)))
+(flet ($e2100 (bvsge ?e413 ?e164))
+(flet ($e2101 (= (sign_extend[3] ?e573) ?e22))
+(flet ($e2102 (bvslt ?e206 (sign_extend[3] ?e253)))
+(flet ($e2103 (bvsle v1 (zero_extend[3] ?e256)))
+(flet ($e2104 (bvult (sign_extend[3] ?e292) ?e404))
+(flet ($e2105 (bvsge ?e24 (sign_extend[3] ?e177)))
+(flet ($e2106 (bvule ?e291 ?e142))
+(flet ($e2107 (bvsle (zero_extend[1] ?e66) ?e627))
+(flet ($e2108 (= (sign_extend[1] ?e499) ?e562))
+(flet ($e2109 (bvslt ?e150 ?e599))
+(flet ($e2110 (bvsge (sign_extend[3] ?e643) ?e169))
+(flet ($e2111 (= (sign_extend[3] ?e295) ?e4))
+(flet ($e2112 (bvsgt ?e5 (sign_extend[3] ?e107)))
+(flet ($e2113 (distinct ?e165 ?e546))
+(flet ($e2114 (bvult (zero_extend[3] ?e32) ?e68))
+(flet ($e2115 (= ?e34 (zero_extend[3] ?e631)))
+(flet ($e2116 (bvult ?e567 (sign_extend[1] ?e333)))
+(flet ($e2117 (bvule ?e537 ?e510))
+(flet ($e2118 (= ?e490 (zero_extend[1] ?e599)))
+(flet ($e2119 (= (sign_extend[3] ?e523) ?e591))
+(flet ($e2120 (distinct ?e628 (zero_extend[2] ?e641)))
+(flet ($e2121 (bvsgt ?e648 ?e636))
+(flet ($e2122 (bvsgt ?e393 ?e171))
+(flet ($e2123 (bvsle ?e509 ?e446))
+(flet ($e2124 (bvsgt ?e460 ?e202))
+(flet ($e2125 (bvult ?e6 ?e518))
+(flet ($e2126 (bvsge (zero_extend[3] ?e577) ?e23))
+(flet ($e2127 (bvsle ?e447 ?e384))
+(flet ($e2128 (bvule ?e283 ?e622))
+(flet ($e2129 (bvsge (sign_extend[3] ?e39) ?e612))
+(flet ($e2130 (bvult ?e159 (sign_extend[3] ?e199)))
+(flet ($e2131 (bvult ?e617 (zero_extend[3] ?e609)))
+(flet ($e2132 (bvule ?e215 ?e59))
+(flet ($e2133 (bvsgt ?e228 ?e619))
+(flet ($e2134 (bvuge ?e418 ?e347))
+(flet ($e2135 (bvult ?e282 ?e185))
+(flet ($e2136 (bvsle ?e34 ?e23))
+(flet ($e2137 (= (sign_extend[1] ?e297) ?e432))
+(flet ($e2138 (distinct ?e583 (sign_extend[3] ?e170)))
+(flet ($e2139 (distinct (zero_extend[3] ?e538) ?e534))
+(flet ($e2140 (= ?e549 ?e148))
+(flet ($e2141 (= ?e444 (sign_extend[3] ?e350)))
+(flet ($e2142 (bvsgt (zero_extend[3] ?e148) ?e607))
+(flet ($e2143 (bvsge (zero_extend[3] ?e291) ?e4))
+(flet ($e2144 (bvugt (zero_extend[3] ?e554) ?e169))
+(flet ($e2145 (= ?e520 ?e137))
+(flet ($e2146 (bvsge ?e183 ?e174))
+(flet ($e2147 (bvslt ?e568 ?e450))
+(flet ($e2148 (bvugt ?e482 ?e291))
+(flet ($e2149 (bvsle ?e616 (zero_extend[1] ?e504)))
+(flet ($e2150 (bvule (sign_extend[3] ?e167) ?e484))
+(flet ($e2151 (bvsge ?e121 (zero_extend[1] ?e405)))
+(flet ($e2152 (bvslt (zero_extend[3] ?e477) ?e208))
+(flet ($e2153 (distinct (zero_extend[3] ?e423) ?e118))
+(flet ($e2154 (bvsge (sign_extend[3] ?e124) ?e427))
+(flet ($e2155 (bvule ?e243 (sign_extend[3] ?e107)))
+(flet ($e2156 (distinct ?e115 (sign_extend[3] ?e458)))
+(flet ($e2157 (bvuge ?e113 ?e458))
+(flet ($e2158 (bvugt ?e339 ?e70))
+(flet ($e2159 (bvslt ?e348 ?e412))
+(flet ($e2160 (bvuge ?e491 (zero_extend[3] ?e321)))
+(flet ($e2161 (bvsle ?e40 (zero_extend[3] ?e98)))
+(flet ($e2162 (bvsgt ?e267 ?e53))
+(flet ($e2163 (distinct ?e17 ?e171))
+(flet ($e2164 (bvsge ?e66 ?e320))
+(flet ($e2165 (bvuge ?e422 (zero_extend[3] ?e281)))
+(flet ($e2166 (bvslt (sign_extend[3] ?e178) ?e496))
+(flet ($e2167 (= ?e478 ?e135))
+(flet ($e2168 (bvuge ?e444 (zero_extend[3] ?e17)))
+(flet ($e2169 (distinct ?e408 (sign_extend[3] ?e307)))
+(flet ($e2170 (bvsgt ?e641 ?e104))
+(flet ($e2171 (bvuge (sign_extend[3] ?e461) ?e501))
+(flet ($e2172 (bvsge ?e416 (sign_extend[3] ?e631)))
+(flet ($e2173 (bvule (zero_extend[3] ?e502) ?e126))
+(flet ($e2174 (bvugt (sign_extend[3] ?e469) ?e536))
+(flet ($e2175 (bvslt (sign_extend[3] ?e421) ?e534))
+(flet ($e2176 (bvuge ?e35 ?e260))
+(flet ($e2177 (bvule (sign_extend[3] ?e626) ?e298))
+(flet ($e2178 (bvslt ?e201 ?e617))
+(flet ($e2179 (bvsge ?e489 ?e617))
+(flet ($e2180 (bvugt ?e559 (zero_extend[3] ?e305)))
+(flet ($e2181 (bvsle ?e394 ?e182))
+(flet ($e2182 (distinct ?e25 ?e325))
+(flet ($e2183 (= (sign_extend[3] ?e602) ?e455))
+(flet ($e2184 (bvuge ?e179 ?e644))
+(flet ($e2185 (distinct (zero_extend[3] ?e56) ?e268))
+(flet ($e2186 (bvsge (zero_extend[3] ?e289) ?e211))
+(flet ($e2187 (bvule ?e201 (sign_extend[2] ?e195)))
+(flet ($e2188 (bvsle ?e233 ?e648))
+(flet ($e2189 (distinct ?e60 (zero_extend[3] ?e73)))
+(flet ($e2190 (bvsgt (sign_extend[3] ?e253) ?e296))
+(flet ($e2191 (= ?e371 ?e117))
+(flet ($e2192 (bvule ?e39 ?e133))
+(flet ($e2193 (bvslt ?e120 ?e518))
+(flet ($e2194 (bvslt ?e39 ?e386))
+(flet ($e2195 (= ?e317 (zero_extend[3] ?e209)))
+(flet ($e2196 (bvult ?e68 (zero_extend[3] ?e299)))
+(flet ($e2197 (bvule (zero_extend[1] ?e335) ?e26))
+(flet ($e2198 (bvsge ?e495 ?e152))
+(flet ($e2199 (bvult (sign_extend[3] ?e486) ?e22))
+(flet ($e2200 (bvult ?e377 ?e499))
+(flet ($e2201 (bvsle ?e93 (sign_extend[3] ?e643)))
+(flet ($e2202 (bvsgt ?e463 ?e188))
+(flet ($e2203 (bvult ?e568 ?e362))
+(flet ($e2204 (bvsge ?e540 ?e555))
+(flet ($e2205 (bvuge ?e41 (zero_extend[3] ?e381)))
+(flet ($e2206 (bvule (zero_extend[3] ?e267) ?e525))
+(flet ($e2207 (distinct (sign_extend[3] ?e245) ?e412))
+(flet ($e2208 (bvule ?e501 (sign_extend[3] ?e622)))
+(flet ($e2209 (bvsge ?e28 ?e18))
+(flet ($e2210 (bvslt ?e218 ?e324))
+(flet ($e2211 (= ?e42 ?e510))
+(flet ($e2212 (bvult (sign_extend[3] ?e32) ?e236))
+(flet ($e2213 (bvuge (sign_extend[3] ?e548) ?e348))
+(flet ($e2214 (bvsge (zero_extend[1] ?e547) ?e584))
+(flet ($e2215 (distinct (sign_extend[3] ?e589) ?e208))
+(flet ($e2216 (bvsge (zero_extend[3] ?e384) ?e208))
+(flet ($e2217 (bvsgt ?e45 ?e297))
+(flet ($e2218 (bvsgt (sign_extend[3] ?e307) ?e228))
+(flet ($e2219 (bvslt ?e336 ?e553))
+(flet ($e2220 (bvsle ?e380 ?e427))
+(flet ($e2221 (bvugt (sign_extend[1] ?e370) ?e459))
+(flet ($e2222 (bvule ?e126 (sign_extend[2] ?e627)))
+(flet ($e2223 (bvsge ?e128 ?e196))
+(flet ($e2224 (distinct ?e245 ?e251))
+(flet ($e2225 (bvule ?e257 ?e518))
+(flet ($e2226 (bvult ?e406 ?e526))
+(flet ($e2227 (bvslt ?e560 ?e109))
+(flet ($e2228 (bvsgt ?e594 ?e362))
+(flet ($e2229 (bvuge ?e303 ?e574))
+(flet ($e2230 (bvslt ?e611 (zero_extend[2] ?e98)))
+(flet ($e2231 (bvult (zero_extend[3] ?e355) ?e484))
+(flet ($e2232 (bvult ?e413 ?e645))
+(flet ($e2233 (bvslt ?e313 (sign_extend[3] ?e306)))
+(flet ($e2234 (bvsgt (sign_extend[3] ?e199) ?e332))
+(flet ($e2235 (bvslt ?e234 ?e211))
+(flet ($e2236 (bvsge ?e7 ?e467))
+(flet ($e2237 (bvult ?e265 ?e252))
+(flet ($e2238 (bvsle (sign_extend[3] ?e281) ?e528))
+(flet ($e2239 (bvsle ?e377 ?e413))
+(flet ($e2240 (bvult (zero_extend[3] ?e375) ?e24))
+(flet ($e2241 (bvugt ?e642 ?e259))
+(flet ($e2242 (bvule ?e219 ?e259))
+(flet ($e2243 (bvsgt (zero_extend[2] ?e582) ?e114))
+(flet ($e2244 (bvuge ?e282 ?e539))
+(flet ($e2245 (bvsgt (zero_extend[2] ?e372) ?e514))
+(flet ($e2246 (= (zero_extend[3] ?e170) ?e95))
+(flet ($e2247 (bvslt ?e368 ?e90))
+(flet ($e2248 (bvslt ?e377 ?e507))
+(flet ($e2249 (bvule ?e486 ?e116))
+(flet ($e2250 (bvuge (sign_extend[2] ?e420) ?e123))
+(flet ($e2251 (bvsgt ?e592 ?e305))
+(flet ($e2252 (bvsle (zero_extend[3] ?e397) ?e425))
+(flet ($e2253 (bvule (sign_extend[2] ?e84) ?e168))
+(flet ($e2254 (bvsle (sign_extend[3] ?e339) ?e619))
+(flet ($e2255 (= ?e351 (zero_extend[3] ?e214)))
+(flet ($e2256 (distinct ?e306 ?e106))
+(flet ($e2257 (bvule ?e608 ?e569))
+(flet ($e2258 (distinct ?e566 (sign_extend[1] ?e367)))
+(flet ($e2259 (bvugt ?e514 (zero_extend[2] ?e397)))
+(flet ($e2260 (bvuge ?e234 (sign_extend[3] ?e156)))
+(flet ($e2261 (distinct ?e181 (sign_extend[3] ?e397)))
+(flet ($e2262 (bvsle ?e624 ?e81))
+(flet ($e2263 (= ?e353 ?e539))
+(flet ($e2264 (bvsle ?e550 ?e515))
+(flet ($e2265 (= (zero_extend[3] ?e322) ?e619))
+(flet ($e2266 (= (sign_extend[3] ?e36) ?e109))
+(flet ($e2267 (= ?e596 ?e410))
+(flet ($e2268 (bvsge (sign_extend[3] ?e395) ?e419))
+(flet ($e2269 (bvule ?e134 ?e78))
+(flet ($e2270 (bvuge (zero_extend[3] ?e424) ?e332))
+(flet ($e2271 (= ?e560 ?e182))
+(flet ($e2272 (bvsgt ?e553 ?e439))
+(flet ($e2273 (distinct ?e36 ?e625))
+(flet ($e2274 (bvslt ?e225 ?e379))
+(flet ($e2275 (bvule ?e70 ?e511))
+(flet ($e2276 (bvsgt ?e451 ?e610))
+(flet ($e2277 (bvule ?e26 (sign_extend[3] ?e272)))
+(flet ($e2278 (= ?e533 (sign_extend[3] ?e602)))
+(flet ($e2279 (bvuge ?e197 (sign_extend[2] ?e463)))
+(flet ($e2280 (bvule ?e326 (zero_extend[3] ?e546)))
+(flet ($e2281 (bvsge ?e612 ?e252))
+(flet ($e2282 (bvslt (zero_extend[3] ?e608) ?e265))
+(flet ($e2283 (bvsle ?e557 ?e214))
+(flet ($e2284 (bvugt (zero_extend[3] ?e270) ?e453))
+(flet ($e2285 (bvult (zero_extend[3] ?e488) ?e474))
+(flet ($e2286 (bvugt ?e513 ?e251))
+(flet ($e2287 (bvslt ?e344 (sign_extend[3] ?e297)))
+(flet ($e2288 (bvult ?e433 (sign_extend[2] ?e392)))
+(flet ($e2289 (bvsge (sign_extend[3] ?e318) ?e71))
+(flet ($e2290 (bvuge (zero_extend[3] ?e637) ?e55))
+(flet ($e2291 (bvugt ?e471 ?e247))
+(flet ($e2292 (bvule ?e495 ?e28))
+(flet ($e2293 (bvsgt (sign_extend[3] ?e504) ?e273))
+(flet ($e2294 (bvuge ?e394 (sign_extend[3] ?e110)))
+(flet ($e2295 (bvuge ?e251 ?e350))
+(flet ($e2296 (bvugt ?e112 (sign_extend[3] ?e171)))
+(flet ($e2297 (bvsge ?e594 ?e215))
+(flet ($e2298 (bvsgt (zero_extend[3] ?e378) ?e344))
+(flet ($e2299 (distinct ?e488 ?e28))
+(flet ($e2300 (bvult (zero_extend[3] ?e374) ?e556))
+(flet ($e2301 (bvsgt ?e619 (zero_extend[3] ?e456)))
+(flet ($e2302 (bvslt (zero_extend[3] ?e224) ?e35))
+(flet ($e2303 (= ?e351 (sign_extend[3] ?e28)))
+(flet ($e2304 (bvugt ?e383 ?e102))
+(flet ($e2305 (bvult (zero_extend[3] ?e207) ?e27))
+(flet ($e2306 (bvuge (zero_extend[1] ?e446) ?e490))
+(flet ($e2307 (bvslt ?e567 (zero_extend[1] ?e637)))
+(flet ($e2308 (bvsle ?e436 ?e51))
+(flet ($e2309 (bvult ?e227 (sign_extend[3] ?e172)))
+(flet ($e2310 (bvsge ?e612 (zero_extend[3] ?e569)))
+(flet ($e2311 (bvugt (zero_extend[2] ?e284) ?e239))
+(flet ($e2312 (bvsgt (zero_extend[3] ?e43) ?e40))
+(flet ($e2313 (bvult ?e325 ?e261))
+(flet ($e2314 (bvuge (zero_extend[3] ?e307) ?e478))
+(flet ($e2315 (bvsge ?e505 (sign_extend[3] ?e303)))
+(flet ($e2316 (bvugt (zero_extend[1] ?e79) ?e615))
+(flet ($e2317 (bvult ?e263 (sign_extend[1] ?e239)))
+(flet ($e2318 (bvsle (zero_extend[3] ?e113) ?e406))
+(flet ($e2319 (bvsgt ?e213 (zero_extend[1] ?e420)))
+(flet ($e2320 (bvuge ?e205 ?e546))
+(flet ($e2321 (bvuge (zero_extend[3] ?e365) ?e102))
+(flet ($e2322 (= ?e21 (sign_extend[2] ?e465)))
+(flet ($e2323 (bvule ?e285 (sign_extend[3] ?e321)))
+(flet ($e2324 (bvsgt ?e491 (sign_extend[3] ?e187)))
+(flet ($e2325 (= ?e246 ?e608))
+(flet ($e2326 (bvsgt ?e295 ?e595))
+(flet ($e2327 (distinct ?e68 ?e217))
+(flet ($e2328 (distinct (sign_extend[3] ?e524) ?e581))
+(flet ($e2329 (bvslt (sign_extend[3] ?e256) ?e278))
+(flet ($e2330 (bvugt ?e273 ?e91))
+(flet ($e2331 (bvuge ?e146 ?e337))
+(flet ($e2332 (bvslt ?e292 ?e345))
+(flet ($e2333 (bvsgt (zero_extend[2] ?e398) ?e407))
+(flet ($e2334 (bvsle (sign_extend[1] ?e388) ?e465))
+(flet ($e2335 (bvsge (zero_extend[3] ?e456) ?e412))
+(flet ($e2336 (bvule (sign_extend[3] ?e539) ?e467))
+(flet ($e2337 (bvugt ?e25 (sign_extend[3] ?e81)))
+(flet ($e2338 (bvult (zero_extend[3] ?e250) ?e533))
+(flet ($e2339 (bvslt ?e136 ?e347))
+(flet ($e2340 (bvule ?e315 ?e441))
+(flet ($e2341 (bvule ?e521 ?e141))
+(flet ($e2342 (bvslt ?e228 (zero_extend[3] ?e423)))
+(flet ($e2343 (bvsgt (zero_extend[3] ?e547) ?e183))
+(flet ($e2344 (bvsle ?e322 ?e479))
+(flet ($e2345 (bvslt (sign_extend[2] ?e97) ?e23))
+(flet ($e2346 (bvule (sign_extend[3] ?e62) ?e159))
+(flet ($e2347 (distinct ?e471 ?e529))
+(flet ($e2348 (bvsge ?e105 (zero_extend[3] ?e447)))
+(flet ($e2349 (bvult (sign_extend[3] ?e381) ?e464))
+(flet ($e2350 (bvult ?e152 ?e257))
+(flet ($e2351 (bvslt ?e48 (sign_extend[3] ?e462)))
+(flet ($e2352 (bvsle ?e614 (sign_extend[2] ?e188)))
+(flet ($e2353 (bvult ?e284 ?e241))
+(flet ($e2354 (bvsle (sign_extend[3] ?e635) ?e343))
+(flet ($e2355 (bvslt (sign_extend[3] ?e605) ?e122))
+(flet ($e2356 (bvult (sign_extend[3] ?e303) ?e51))
+(flet ($e2357 (bvslt ?e313 (sign_extend[3] ?e573)))
+(flet ($e2358 (bvsgt (zero_extend[3] ?e469) ?e108))
+(flet ($e2359 (bvslt (zero_extend[3] ?e134) ?e252))
+(flet ($e2360 (bvsle ?e189 ?e275))
+(flet ($e2361 (bvslt ?e100 (zero_extend[3] ?e311)))
+(flet ($e2362 (bvule ?e642 ?e375))
+(flet ($e2363 (bvsge (zero_extend[1] ?e575) ?e425))
+(flet ($e2364 (bvugt ?e419 ?e54))
+(flet ($e2365 (bvuge (sign_extend[3] ?e113) ?e94))
+(flet ($e2366 (bvuge ?e117 ?e523))
+(flet ($e2367 (bvsgt ?e244 (sign_extend[1] ?e291)))
+(flet ($e2368 (bvsge ?e545 ?e274))
+(flet ($e2369 (bvsle ?e279 ?e355))
+(flet ($e2370 (bvugt ?e181 (sign_extend[3] ?e36)))
+(flet ($e2371 (= (zero_extend[3] ?e39) ?e265))
+(flet ($e2372 (bvslt ?e623 ?e24))
+(flet ($e2373 (bvuge ?e449 ?e629))
+(flet ($e2374 (= (sign_extend[2] ?e315) ?e376))
+(flet ($e2375 (bvslt ?e526 (sign_extend[2] ?e213)))
+(flet ($e2376 (bvuge (sign_extend[1] ?e106) ?e490))
+(flet ($e2377 (bvsge ?e28 ?e297))
+(flet ($e2378 (= (sign_extend[2] ?e92) ?e158))
+(flet ($e2379 (= (zero_extend[3] ?e209) ?e105))
+(flet ($e2380 (bvsge ?e638 (zero_extend[3] ?e386)))
+(flet ($e2381 (distinct (sign_extend[3] ?e495) ?e129))
+(flet ($e2382 (bvsle (zero_extend[3] ?e224) ?e206))
+(flet ($e2383 (bvugt ?e11 ?e175))
+(flet ($e2384 (bvugt ?e323 ?e137))
+(flet ($e2385 (bvsgt (zero_extend[3] ?e107) ?e328))
+(flet ($e2386 (distinct ?e404 (sign_extend[3] ?e45)))
+(flet ($e2387 (bvslt ?e26 (zero_extend[3] ?e266)))
+(flet ($e2388 (bvult ?e602 ?e209))
+(flet ($e2389 (= ?e581 (sign_extend[3] ?e477)))
+(flet ($e2390 (bvsge ?e3 ?e23))
+(flet ($e2391 (distinct ?e47 ?e116))
+(flet ($e2392 (distinct ?e167 ?e648))
+(flet ($e2393 (bvsgt ?e466 (zero_extend[3] ?e437)))
+(flet ($e2394 (bvugt ?e645 ?e318))
+(flet ($e2395 (bvsgt ?e505 (sign_extend[3] ?e89)))
+(flet ($e2396 (bvugt ?e257 ?e231))
+(flet ($e2397 (bvslt ?e583 ?e517))
+(flet ($e2398 (bvsgt (zero_extend[3] ?e488) ?e109))
+(flet ($e2399 (bvsgt ?e252 (sign_extend[3] ?e636)))
+(flet ($e2400 (bvsge ?e423 ?e445))
+(flet ($e2401 (bvsge (zero_extend[3] ?e92) ?e144))
+(flet ($e2402 (bvuge (zero_extend[2] ?e81) ?e103))
+(flet ($e2403 (bvslt ?e535 ?e462))
+(flet ($e2404 (bvult v0 (sign_extend[3] ?e570)))
+(flet ($e2405 (bvsle ?e293 ?e104))
+(flet ($e2406 (bvule (zero_extend[3] ?e312) ?e105))
+(flet ($e2407 (bvsge ?e268 ?e24))
+(flet ($e2408 (bvult ?e71 (zero_extend[3] ?e621)))
+(flet ($e2409 (bvule (zero_extend[2] ?e47) ?e433))
+(flet ($e2410 (bvslt ?e192 ?e99))
+(flet ($e2411 (bvule ?e115 (sign_extend[3] ?e450)))
+(flet ($e2412 (bvule ?e49 ?e423))
+(flet ($e2413 (bvslt ?e638 (zero_extend[3] ?e497)))
+(flet ($e2414 (distinct ?e292 ?e606))
+(flet ($e2415 (bvule ?e214 ?e116))
+(flet ($e2416 (distinct (sign_extend[3] ?e417) ?e492))
+(flet ($e2417 (bvule ?e579 (sign_extend[3] ?e212)))
+(flet ($e2418 (bvsle ?e391 (sign_extend[1] ?e345)))
+(flet ($e2419 (bvuge ?e495 ?e70))
+(flet ($e2420 (bvule ?e325 ?e435))
+(flet ($e2421 (bvsge ?e533 (zero_extend[2] ?e391)))
+(flet ($e2422 (bvuge ?e355 ?e345))
+(flet ($e2423 (= ?e491 (zero_extend[3] ?e192)))
+(flet ($e2424 (bvsgt (sign_extend[1] ?e628) ?e613))
+(flet ($e2425 (bvule ?e234 (zero_extend[3] ?e323)))
+(flet ($e2426 (bvsgt ?e185 ?e82))
+(flet ($e2427 (= ?e445 ?e418))
+(flet ($e2428 (= ?e51 (sign_extend[3] ?e371)))
+(flet ($e2429 (distinct ?e243 (sign_extend[3] ?e293)))
+(flet ($e2430 (bvsle (sign_extend[3] ?e503) ?e414))
+(flet ($e2431 (distinct ?e157 ?e241))
+(flet ($e2432 (bvule ?e587 ?e11))
+(flet ($e2433 (bvult ?e120 ?e639))
+(flet ($e2434 (bvslt ?e619 (zero_extend[3] ?e569)))
+(flet ($e2435 (bvuge ?e187 ?e378))
+(flet ($e2436 (bvslt ?e80 (sign_extend[3] ?e119)))
+(flet ($e2437 (bvult (sign_extend[2] ?e616) ?e552))
+(flet ($e2438 (distinct ?e121 (zero_extend[3] ?e513)))
+(flet ($e2439 (bvslt ?e404 ?e54))
+(flet ($e2440 (bvsge ?e227 (zero_extend[3] ?e150)))
+(flet ($e2441 (distinct ?e276 ?e577))
+(flet ($e2442 (bvuge ?e543 ?e173))
+(flet ($e2443 (bvult (zero_extend[3] ?e14) ?e493))
+(flet ($e2444 (bvsge ?e485 (sign_extend[1] ?e570)))
+(flet ($e2445 (bvsge ?e159 ?e128))
+(flet ($e2446 (= ?e343 (zero_extend[2] ?e601)))
+(flet ($e2447 (bvsge ?e63 (zero_extend[3] ?e503)))
+(flet ($e2448 (distinct ?e313 ?e77))
+(flet ($e2449 (bvult (zero_extend[3] ?e605) ?e516))
+(flet ($e2450 (bvsgt ?e71 ?e517))
+(flet ($e2451 (= (sign_extend[3] ?e519) ?e196))
+(flet ($e2452 (bvule ?e348 ?e109))
+(flet ($e2453 (bvugt ?e514 (sign_extend[2] ?e564)))
+(flet ($e2454 (bvuge ?e115 (zero_extend[3] ?e486)))
+(flet ($e2455 (distinct ?e228 (sign_extend[3] ?e373)))
+(flet ($e2456 (bvugt ?e568 ?e61))
+(flet ($e2457 (bvsle ?e418 ?e586))
+(flet ($e2458 (bvsge ?e270 ?e187))
+(flet ($e2459 (bvugt ?e372 ?e142))
+(flet ($e2460 (distinct ?e577 ?e381))
+(flet ($e2461 (bvslt (zero_extend[3] ?e513) ?e196))
+(flet ($e2462 (= ?e394 ?e20))
+(flet ($e2463 (bvsgt (zero_extend[3] ?e345) ?e8))
+(flet ($e2464 (bvsle ?e244 ?e646))
+(flet ($e2465 (distinct ?e53 ?e519))
+(flet ($e2466 (bvult (zero_extend[1] ?e349) ?e567))
+(flet ($e2467 (distinct ?e211 (zero_extend[3] ?e316)))
+(flet ($e2468 (bvslt ?e8 (sign_extend[3] ?e245)))
+(flet ($e2469 (bvsge ?e494 ?e127))
+(flet ($e2470 (= (sign_extend[3] ?e454) ?e243))
+(flet ($e2471 (bvule ?e389 ?e176))
+(flet ($e2472 (bvugt ?e201 (sign_extend[1] ?e262)))
+(flet ($e2473 (bvsgt (zero_extend[3] ?e350) ?e288))
+(flet ($e2474 (bvugt (sign_extend[3] ?e312) ?e174))
+(flet ($e2475 (bvult ?e621 ?e645))
+(flet ($e2476 (distinct ?e159 (zero_extend[3] ?e82)))
+(flet ($e2477 (bvsge (zero_extend[3] ?e350) ?e126))
+(flet ($e2478 (bvslt ?e365 ?e597))
+(flet ($e2479 (bvugt ?e339 ?e199))
+(flet ($e2480 (distinct ?e82 ?e333))
+(flet ($e2481 (bvsle ?e65 ?e132))
+(flet ($e2482 (bvuge (sign_extend[3] ?e386) ?e249))
+(flet ($e2483 (bvsgt ?e234 (zero_extend[3] ?e233)))
+(flet ($e2484 (= (zero_extend[3] ?e79) ?e528))
+(flet ($e2485 (bvslt ?e276 ?e272))
+(flet ($e2486 (bvslt ?e170 ?e303))
+(flet ($e2487 (bvslt (zero_extend[3] ?e311) ?e285))
+(flet ($e2488 (bvult ?e151 (zero_extend[3] ?e90)))
+(flet ($e2489 (bvslt ?e234 ?e527))
+(flet ($e2490 (bvslt ?e612 (sign_extend[3] ?e31)))
+(flet ($e2491 (bvult ?e139 (sign_extend[3] ?e423)))
+(flet ($e2492 (bvsle ?e145 ?e332))
+(flet ($e2493 (bvule ?e227 (zero_extend[3] ?e621)))
+(flet ($e2494 (bvult ?e450 ?e426))
+(flet ($e2495 (bvslt (zero_extend[3] ?e312) ?e159))
+(flet ($e2496 (distinct ?e476 ?e487))
+(flet ($e2497 (bvslt (zero_extend[3] ?e387) ?e404))
+(flet ($e2498 (= ?e291 ?e352))
+(flet ($e2499 (bvsle ?e143 ?e589))
+(flet ($e2500 (bvult ?e429 ?e526))
+(flet ($e2501 (bvsge (zero_extend[3] ?e458) ?e457))
+(flet ($e2502 (bvugt ?e42 ?e287))
+(flet ($e2503 (bvult ?e316 ?e520))
+(flet ($e2504 (bvslt ?e275 (zero_extend[3] ?e82)))
+(flet ($e2505 (bvugt ?e373 ?e604))
+(flet ($e2506 (bvsle ?e43 ?e365))
+(flet ($e2507 (= ?e133 ?e155))
+(flet ($e2508 (bvsgt ?e301 ?e330))
+(flet ($e2509 (bvult ?e420 ?e424))
+(flet ($e2510 (bvuge ?e206 (sign_extend[3] ?e222)))
+(flet ($e2511 (bvult ?e486 ?e90))
+(flet ($e2512 (bvuge ?e470 ?e540))
+(flet ($e2513 (= ?e105 (sign_extend[3] ?e164)))
+(flet ($e2514 (= ?e93 ?e620))
+(flet ($e2515 (bvsle ?e480 ?e31))
+(flet ($e2516 (bvslt ?e539 ?e136))
+(flet ($e2517 (bvsge ?e69 (sign_extend[3] ?e369)))
+(flet ($e2518 (bvuge ?e311 ?e495))
+(flet ($e2519 (bvslt ?e142 ?e498))
+(flet ($e2520 (= (zero_extend[3] ?e409) ?e536))
+(flet ($e2521 (bvult (sign_extend[3] ?e232) ?e453))
+(flet ($e2522 (distinct ?e513 ?e31))
+(flet ($e2523 (bvslt ?e553 ?e504))
+(flet ($e2524 (= ?e306 ?e606))
+(flet ($e2525 (bvuge ?e223 ?e15))
+(flet ($e2526 (distinct (sign_extend[3] ?e124) ?e227))
+(flet ($e2527 (bvule ?e279 ?e267))
+(flet ($e2528 (distinct (zero_extend[3] ?e81) ?e122))
+(flet ($e2529 (bvslt ?e264 (sign_extend[2] ?e160)))
+(flet ($e2530 (bvsge (sign_extend[2] ?e601) ?e556))
+(flet ($e2531 (distinct ?e99 ?e156))
+(flet ($e2532 (bvult ?e68 (zero_extend[3] ?e498)))
+(flet ($e2533 (bvule ?e309 ?e30))
+(flet ($e2534 (bvsgt ?e387 ?e238))
+(flet ($e2535 (bvuge ?e100 (zero_extend[3] ?e369)))
+(flet ($e2536 (bvsle ?e359 (sign_extend[3] ?e368)))
+(flet ($e2537 (bvult ?e5 (zero_extend[2] ?e567)))
+(flet ($e2538 (bvsgt (sign_extend[3] ?e645) ?e211))
+(flet ($e2539 (bvsge ?e581 (sign_extend[3] ?e350)))
+(flet ($e2540 (= ?e270 ?e479))
+(flet ($e2541 (= ?e645 ?e420))
+(flet ($e2542 (= (sign_extend[3] ?e504) ?e182))
+(flet ($e2543 (bvult (sign_extend[3] ?e297) ?e25))
+(flet ($e2544 (bvule ?e553 ?e499))
+(flet ($e2545 (bvsle ?e266 ?e287))
+(flet ($e2546 (bvsge ?e210 ?e451))
+(flet ($e2547 (distinct ?e287 ?e104))
+(flet ($e2548 (bvuge ?e474 (zero_extend[3] ?e131)))
+(flet ($e2549 (= ?e189 (sign_extend[3] ?e597)))
+(flet ($e2550 (bvsgt ?e29 ?e505))
+(flet ($e2551 (bvsle ?e648 ?e202))
+(flet ($e2552 (distinct ?e556 ?e234))
+(flet ($e2553 (bvugt ?e466 ?e94))
+(flet ($e2554 (bvsge ?e47 ?e210))
+(flet ($e2555 (bvslt v1 (zero_extend[3] ?e604)))
+(flet ($e2556 (bvsle ?e128 (sign_extend[3] ?e287)))
+(flet ($e2557 (bvuge ?e490 (zero_extend[1] ?e274)))
+(flet ($e2558 (bvsge ?e595 ?e463))
+(flet ($e2559 (= ?e275 ?e8))
+(flet ($e2560 (bvsgt ?e306 ?e98))
+(flet ($e2561 (bvslt ?e169 ?e468))
+(flet ($e2562 (bvsle ?e146 ?e210))
+(flet ($e2563 (= ?e577 ?e303))
+(flet ($e2564 (bvule ?e65 (zero_extend[3] ?e248)))
+(flet ($e2565 (bvslt ?e252 (zero_extend[3] ?e437)))
+(flet ($e2566 (bvult ?e7 (zero_extend[3] ?e194)))
+(flet ($e2567 (bvslt ?e240 ?e532))
+(flet ($e2568 (bvult (sign_extend[2] ?e546) ?e376))
+(flet ($e2569 (bvult ?e159 (zero_extend[3] ?e410)))
+(flet ($e2570 (distinct ?e216 ?e520))
+(flet ($e2571 (bvult ?e620 (zero_extend[3] ?e188)))
+(flet ($e2572 (distinct ?e631 ?e486))
+(flet ($e2573 (bvsle ?e354 (zero_extend[2] ?e160)))
+(flet ($e2574 (bvuge ?e356 (sign_extend[3] ?e209)))
+(flet ($e2575 (bvule ?e20 (zero_extend[3] ?e156)))
+(flet ($e2576 (bvult ?e162 ?e347))
+(flet ($e2577 (bvsge ?e203 ?e21))
+(flet ($e2578 (bvugt (zero_extend[2] ?e160) ?e429))
+(flet ($e2579 (distinct ?e502 ?e428))
+(flet ($e2580 (bvule ?e458 ?e426))
+(flet ($e2581 (bvult ?e215 ?e207))
+(flet ($e2582 (bvult (zero_extend[3] ?e577) ?e159))
+(flet ($e2583 (distinct ?e593 (sign_extend[3] ?e518)))
+(flet ($e2584 (bvsle ?e170 ?e164))
+(flet ($e2585 (bvsge ?e184 ?e480))
+(flet ($e2586 (bvsgt ?e606 ?e150))
+(flet ($e2587 (bvugt ?e255 ?e426))
+(flet ($e2588 (bvsge ?e321 ?e142))
+(flet ($e2589 (bvugt ?e343 (sign_extend[3] ?e155)))
+(flet ($e2590 (bvuge (sign_extend[3] ?e116) ?e227))
+(flet ($e2591 (bvugt ?e20 (sign_extend[3] ?e194)))
+(flet ($e2592 (distinct ?e100 ?e260))
+(flet ($e2593 (bvsge ?e406 ?e261))
+(flet ($e2594 (bvsgt ?e22 ?e249))
+(flet ($e2595 (bvuge ?e372 ?e598))
+(flet ($e2596 (bvslt ?e30 ?e561))
+(flet ($e2597 (bvsge ?e316 ?e72))
+(flet ($e2598 (bvsle ?e367 ?e421))
+(flet ($e2599 (bvugt (sign_extend[3] ?e438) ?e112))
+(flet ($e2600 (bvule ?e295 ?e393))
+(flet ($e2601 (bvslt (sign_extend[3] ?e520) ?e617))
+(flet ($e2602 (bvuge (zero_extend[3] ?e18) ?e20))
+(flet ($e2603 (= (zero_extend[3] ?e56) ?e183))
+(flet ($e2604 (bvule ?e395 ?e393))
+(flet ($e2605 (bvugt ?e378 ?e520))
+(flet ($e2606 (bvslt (zero_extend[3] ?e451) ?e533))
+(flet ($e2607 (bvsle ?e298 (sign_extend[3] ?e595)))
+(flet ($e2608 (= ?e364 ?e157))
+(flet ($e2609 (distinct ?e537 ?e512))
+(flet ($e2610 (bvult (zero_extend[3] ?e67) ?e64))
+(flet ($e2611 (bvsge ?e126 ?e581))
+(flet ($e2612 (bvuge ?e278 (sign_extend[3] ?e32)))
+(flet ($e2613 (bvslt (zero_extend[3] ?e589) ?e163))
+(flet ($e2614 (= (sign_extend[3] ?e61) ?e132))
+(flet ($e2615 (bvsgt ?e225 (zero_extend[3] ?e131)))
+(flet ($e2616 (distinct ?e372 ?e635))
+(flet ($e2617 (bvugt ?e627 (sign_extend[1] ?e150)))
+(flet ($e2618 (bvugt (sign_extend[3] ?e178) ?e309))
+(flet ($e2619 (bvule ?e272 ?e403))
+(flet ($e2620 (bvsge ?e429 ?e431))
+(flet ($e2621 (= ?e196 ?e491))
+(flet ($e2622 (bvsle ?e283 ?e13))
+(flet ($e2623 (bvule (zero_extend[3] ?e274) ?e633))
+(flet ($e2624 (bvsle (zero_extend[1] ?e462) ?e646))
+(flet ($e2625 (bvsle ?e243 ?e94))
+(flet ($e2626 (= ?e114 (sign_extend[2] ?e76)))
+(flet ($e2627 (bvsle ?e38 ?e472))
+(flet ($e2628 (bvsge ?e131 ?e531))
+(flet ($e2629 (bvsge ?e292 ?e143))
+(flet ($e2630 (bvugt (zero_extend[3] ?e636) ?e617))
+(flet ($e2631 (bvslt (zero_extend[3] ?e79) ?e366))
+(flet ($e2632 (bvuge ?e473 ?e28))
+(flet ($e2633 (bvugt ?e191 ?e77))
+(flet ($e2634 (bvsgt ?e609 ?e256))
+(flet ($e2635 (bvslt ?e289 ?e618))
+(flet ($e2636 (bvuge ?e89 ?e193))
+(flet ($e2637 (bvsle ?e567 ?e465))
+(flet ($e2638 (bvsle ?e281 ?e630))
+(flet ($e2639 (bvugt ?e477 ?e582))
+(flet ($e2640 (= ?e393 ?e32))
+(flet ($e2641 (bvsle ?e552 ?e559))
+(flet ($e2642 (bvsgt ?e257 ?e341))
+(flet ($e2643 (bvuge ?e79 ?e32))
+(flet ($e2644 (bvule ?e519 ?e595))
+(flet ($e2645 (bvsle (zero_extend[3] ?e90) ?e51))
+(flet ($e2646 (bvsgt (zero_extend[2] ?e49) ?e262))
+(flet ($e2647 (bvsgt ?e321 ?e488))
+(flet ($e2648 (distinct ?e591 (zero_extend[3] ?e229)))
+(flet ($e2649 (bvslt ?e484 ?e325))
+(flet ($e2650 (bvsgt ?e329 ?e110))
+(flet ($e2651 (bvugt ?e465 (sign_extend[1] ?e194)))
+(flet ($e2652 (bvuge ?e475 ?e467))
+(flet ($e2653 (bvslt ?e462 ?e364))
+(flet ($e2654 (bvsge ?e312 ?e175))
+(flet ($e2655 (bvsgt ?e612 ?e34))
+(flet ($e2656 (bvsge ?e43 ?e631))
+(flet ($e2657 (bvslt ?e564 ?e276))
+(flet ($e2658 (bvule (sign_extend[3] ?e28) ?e26))
+(flet ($e2659 (bvule ?e203 (sign_extend[3] ?e117)))
+(flet ($e2660 (bvule ?e633 (sign_extend[2] ?e244)))
+(flet ($e2661 (bvuge ?e298 (zero_extend[3] ?e553)))
+(flet ($e2662 (bvugt (zero_extend[3] ?e362) ?e174))
+(flet ($e2663 (= (sign_extend[3] ?e50) ?e57))
+(flet ($e2664 (bvuge (sign_extend[3] ?e101) ?e261))
+(flet ($e2665 (bvsge ?e83 ?e360))
+(flet ($e2666 (bvsge ?e385 ?e449))
+(flet ($e2667 (bvsgt ?e497 ?e486))
+(flet ($e2668 (bvslt ?e647 ?e477))
+(flet ($e2669 (bvsgt ?e634 ?e466))
+(flet ($e2670 (bvsgt ?e409 ?e142))
+(flet ($e2671 (bvule ?e13 ?e524))
+(flet ($e2672 (bvugt ?e533 (zero_extend[3] ?e577)))
+(flet ($e2673 (bvuge ?e308 ?e20))
+(flet ($e2674 (bvsle ?e174 (sign_extend[2] ?e358)))
+(flet ($e2675 (distinct ?e401 ?e587))
+(flet ($e2676 (= ?e493 ?e122))
+(flet ($e2677 (bvsle ?e273 ?e560))
+(flet ($e2678 (= (sign_extend[2] ?e133) ?e197))
+(flet ($e2679 (bvsle (sign_extend[3] ?e99) v1))
+(flet ($e2680 (bvsgt ?e604 ?e237))
+(flet ($e2681 (bvslt ?e65 (zero_extend[3] ?e486)))
+(flet ($e2682 (bvsge ?e463 ?e367))
+(flet ($e2683 (bvult ?e330 ?e27))
+(flet ($e2684 (bvsge ?e138 ?e535))
+(flet ($e2685 (bvsle (sign_extend[3] ?e596) ?e264))
+(flet ($e2686 (bvule ?e242 (zero_extend[2] ?e562)))
+(flet ($e2687 (bvuge ?e314 ?e286))
+(flet ($e2688 (bvsle (sign_extend[3] ?e150) ?e551))
+(flet ($e2689 (bvult ?e106 ?e430))
+(flet ($e2690 (bvult ?e501 ?e74))
+(flet ($e2691 (bvsge ?e11 ?e231))
+(flet ($e2692 (bvslt (zero_extend[1] ?e14) ?e465))
+(flet ($e2693 (bvsge ?e507 ?e396))
+(flet ($e2694 (distinct ?e603 ?e178))
+(flet ($e2695 (bvuge ?e288 (zero_extend[3] ?e229)))
+(flet ($e2696 (bvsgt ?e444 (zero_extend[1] ?e140)))
+(flet ($e2697 (bvslt ?e15 ?e579))
+(flet ($e2698 (bvugt (zero_extend[3] ?e540) ?e280))
+(flet ($e2699 (= ?e409 ?e365))
+(flet ($e2700 (bvslt ?e402 ?e113))
+(flet ($e2701 (bvult (zero_extend[3] ?e267) ?e208))
+(flet ($e2702 (bvsle ?e242 (sign_extend[3] ?e33)))
+(flet ($e2703 (bvsge ?e559 (zero_extend[3] ?e33)))
+(flet ($e2704 (distinct ?e504 ?e450))
+(flet ($e2705 (bvsle ?e53 ?e452))
+(flet ($e2706 (bvslt ?e504 ?e152))
+(flet ($e2707 (= ?e35 (sign_extend[3] ?e251)))
+(flet ($e2708 (bvsle ?e634 ?e261))
+(flet ($e2709 (bvuge ?e126 (sign_extend[3] ?e124)))
+(flet ($e2710 (bvuge (sign_extend[3] ?e113) ?e404))
+(flet ($e2711 (distinct ?e359 ?e144))
+(flet ($e2712 (bvsgt ?e438 ?e626))
+(flet ($e2713 (bvugt ?e445 ?e637))
+(flet ($e2714 (bvugt ?e435 (sign_extend[3] ?e149)))
+(flet ($e2715 (bvugt (zero_extend[3] ?e58) ?e532))
+(flet ($e2716 (bvule ?e50 ?e316))
+(flet ($e2717 (bvugt ?e269 ?e458))
+(flet ($e2718 (bvsge ?e518 ?e470))
+(flet ($e2719 (bvsle (zero_extend[3] ?e255) ?e112))
+(flet ($e2720 (bvult ?e116 ?e396))
+(flet ($e2721 (distinct (zero_extend[3] ?e233) ?e525))
+(flet ($e2722 (= ?e4 (sign_extend[3] ?e341)))
+(flet ($e2723 (bvule ?e306 ?e523))
+(flet ($e2724 (bvsgt ?e498 ?e531))
+(flet ($e2725 (bvsle ?e41 ?e94))
+(flet ($e2726 (bvsgt (sign_extend[3] ?e337) ?e466))
+(flet ($e2727 (distinct ?e373 ?e580))
+(flet ($e2728 (bvuge ?e418 ?e297))
+(flet ($e2729 (= (sign_extend[3] ?e176) ?e135))
+(flet ($e2730 (bvsge (zero_extend[3] ?e511) ?e617))
+(flet ($e2731 (distinct ?e409 ?e45))
+(flet ($e2732 (bvslt ?e184 ?e462))
+(flet ($e2733 (bvsgt ?e109 (zero_extend[3] ?e609)))
+(flet ($e2734 (bvsgt (zero_extend[3] ?e42) ?e591))
+(flet ($e2735 (bvsge ?e277 ?e392))
+(flet ($e2736 (bvult ?e9 (zero_extend[3] ?e608)))
+(flet ($e2737 (bvule ?e301 (zero_extend[3] ?e410)))
+(flet ($e2738 (bvuge ?e372 ?e587))
+(flet ($e2739 (bvsgt ?e408 (sign_extend[3] ?e477)))
+(flet ($e2740 (bvugt ?e301 (sign_extend[3] ?e292)))
+(flet ($e2741 (bvsle ?e116 ?e378))
+(flet ($e2742 (bvuge ?e130 ?e104))
+(flet ($e2743 (bvule ?e28 ?e315))
+(flet ($e2744 (bvsgt (sign_extend[3] ?e36) ?e211))
+(flet ($e2745 (bvslt ?e129 ?e612))
+(flet ($e2746 (= ?e539 ?e190))
+(flet ($e2747 (bvult ?e487 ?e347))
+(flet ($e2748 (bvsle ?e418 ?e486))
+(flet ($e2749 (bvugt ?e568 ?e381))
+(flet ($e2750 (distinct ?e283 ?e251))
+(flet ($e2751 (bvsgt ?e540 ?e276))
+(flet ($e2752 (bvsge ?e581 (sign_extend[3] ?e238)))
+(flet ($e2753 (bvult ?e40 ?e85))
+(flet ($e2754 (bvsge (zero_extend[3] ?e409) ?e623))
+(flet ($e2755 (bvslt ?e638 (sign_extend[3] ?e421)))
+(flet ($e2756 (bvslt ?e464 ?e301))
+(flet ($e2757 (bvule ?e395 ?e70))
+(flet ($e2758 (bvslt ?e166 ?e588))
+(flet ($e2759 (bvuge ?e151 (zero_extend[3] ?e362)))
+(flet ($e2760 (bvult (sign_extend[2] ?e616) ?e186))
+(flet ($e2761 (bvsge ?e614 (sign_extend[2] ?e353)))
+(flet ($e2762 (bvuge ?e28 ?e392))
+(flet ($e2763 (bvugt (zero_extend[3] ?e367) ?e309))
+(flet ($e2764 (bvugt ?e484 (zero_extend[3] ?e14)))
+(flet ($e2765 (= ?e371 ?e447))
+(flet ($e2766 (bvuge (sign_extend[2] ?e101) ?e565))
+(flet ($e2767 (bvsgt ?e587 ?e370))
+(flet ($e2768 (bvuge ?e419 (zero_extend[3] ?e165)))
+(flet ($e2769 (bvuge (sign_extend[3] ?e538) ?e501))
+(flet ($e2770 (bvslt ?e19 ?e278))
+(flet ($e2771 (bvslt ?e27 (sign_extend[3] ?e624)))
+(flet ($e2772 (bvuge ?e68 (zero_extend[3] ?e410)))
+(flet ($e2773 (bvslt (sign_extend[3] ?e184) ?e296))
+(flet ($e2774 (distinct ?e351 (zero_extend[2] ?e398)))
+(flet ($e2775 (bvugt ?e21 ?e57))
+(flet ($e2776 (distinct (zero_extend[3] ?e150) ?e613))
+(flet ($e2777 (bvsgt (zero_extend[3] ?e312) ?e493))
+(flet ($e2778 (bvugt (sign_extend[2] ?e257) ?e114))
+(flet ($e2779 (bvuge ?e597 ?e642))
+(flet ($e2780 (bvslt ?e556 (sign_extend[2] ?e566)))
+(flet ($e2781 (bvule ?e429 (zero_extend[3] ?e587)))
+(flet ($e2782 (bvult ?e599 ?e535))
+(flet ($e2783 (distinct (sign_extend[3] ?e637) ?e168))
+(flet ($e2784 (bvsgt ?e127 ?e194))
+(flet ($e2785 (distinct (sign_extend[1] ?e14) ?e97))
+(flet ($e2786 (bvule ?e410 ?e401))
+(flet ($e2787 (bvuge ?e452 ?e305))
+(flet ($e2788 (bvsgt ?e124 ?e622))
+(flet ($e2789 (bvslt ?e571 (sign_extend[3] ?e88)))
+(flet ($e2790 (bvslt (sign_extend[3] ?e488) ?e54))
+(flet ($e2791 (= ?e419 ?e556))
+(flet ($e2792 (bvslt (sign_extend[3] ?e637) ?e296))
+(flet ($e2793 (bvslt ?e223 ?e145))
+(flet ($e2794 (bvuge ?e372 ?e184))
+(flet ($e2795 (bvuge ?e38 (zero_extend[3] ?e194)))
+(flet ($e2796 (bvsgt ?e41 (sign_extend[3] ?e494)))
+(flet ($e2797 (= (zero_extend[3] ?e141) ?e38))
+(flet ($e2798 (distinct ?e479 ?e625))
+(flet ($e2799 (bvugt (sign_extend[3] ?e81) ?e8))
+(flet ($e2800 (bvsgt (zero_extend[3] ?e445) ?e533))
+(flet ($e2801 (bvule ?e153 ?e428))
+(flet ($e2802 (bvslt (sign_extend[3] ?e205) ?e206))
+(flet ($e2803 (bvule ?e33 ?e568))
+(flet ($e2804 (bvugt (sign_extend[3] ?e441) ?e174))
+(flet ($e2805 (bvslt ?e566 ?e398))
+(flet ($e2806 (distinct ?e273 ?e406))
+(flet ($e2807 (bvslt ?e407 ?e83))
+(flet ($e2808 (distinct ?e559 (sign_extend[3] ?e33)))
+(flet ($e2809 (bvult ?e552 ?e151))
+(flet ($e2810 (distinct ?e23 ?e4))
+(flet ($e2811 (bvslt ?e627 (zero_extend[1] ?e548)))
+(flet ($e2812 (= ?e95 ?e69))
+(flet ($e2813 (bvule ?e156 ?e222))
+(flet ($e2814 (= (zero_extend[3] ?e518) ?e180))
+(flet ($e2815 (= ?e325 ?e60))
+(flet ($e2816 (= ?e234 (sign_extend[3] ?e397)))
+(flet ($e2817 (bvuge ?e264 (sign_extend[3] ?e452)))
+(flet ($e2818 (bvule (sign_extend[3] ?e221) ?e115))
+(flet ($e2819 (distinct ?e612 (sign_extend[3] ?e310)))
+(flet ($e2820 (bvsgt ?e136 ?e409))
+(flet ($e2821 (bvsge (sign_extend[3] ?e610) ?e308))
+(flet ($e2822 (bvult (sign_extend[3] ?e209) ?e457))
+(flet ($e2823 (distinct ?e370 ?e649))
+(flet ($e2824 (= (zero_extend[3] ?e277) ?e8))
+(flet ($e2825 (bvugt (sign_extend[3] ?e188) ?e308))
+(flet ($e2826 (distinct (zero_extend[3] ?e299) ?e57))
+(flet ($e2827 (bvsge ?e96 (sign_extend[3] ?e535)))
+(flet ($e2828 (bvult ?e648 ?e187))
+(flet ($e2829 (bvuge ?e450 ?e520))
+(flet ($e2830 (distinct (sign_extend[3] ?e56) ?e25))
+(flet ($e2831 (distinct ?e152 ?e476))
+(flet ($e2832 (bvsgt ?e309 ?e105))
+(flet ($e2833 (bvuge (zero_extend[3] ?e157) ?e344))
+(flet ($e2834 (bvult ?e366 (sign_extend[1] ?e405)))
+(flet ($e2835 (bvsle (sign_extend[3] ?e589) ?e254))
+(flet ($e2836 (bvsle (sign_extend[1] ?e424) ?e244))
+(flet ($e2837 (bvsge ?e224 ?e136))
+(flet ($e2838 (bvsle ?e346 (sign_extend[3] ?e104)))
+(flet ($e2839 (= ?e100 (sign_extend[3] ?e176)))
+(flet ($e2840 (bvuge ?e316 ?e147))
+(flet ($e2841 (bvsgt ?e163 (zero_extend[3] ?e98)))
+(flet ($e2842 (bvugt ?e217 ?e54))
+(flet ($e2843 (bvuge ?e505 (sign_extend[3] ?e594)))
+(flet ($e2844 (= (sign_extend[3] ?e248) ?e51))
+(flet ($e2845 (bvsle ?e407 (zero_extend[3] ?e642)))
+(flet ($e2846 (bvsgt ?e198 (zero_extend[3] ?e357)))
+(flet ($e2847 (bvsge (zero_extend[1] ?e433) ?e261))
+(flet ($e2848 (distinct ?e604 ?e318))
+(flet ($e2849 (distinct ?e24 (zero_extend[3] ?e124)))
+(flet ($e2850 (bvsle (zero_extend[3] ?e274) ?e478))
+(flet ($e2851 (= ?e303 ?e88))
+(flet ($e2852 (bvuge ?e191 (sign_extend[3] ?e545)))
+(flet ($e2853 (bvugt ?e345 ?e293))
+(flet ($e2854 (bvsle (sign_extend[2] ?e596) ?e500))
+(flet ($e2855 (bvugt ?e175 ?e246))
+(flet ($e2856 (bvugt ?e300 (zero_extend[2] ?e442)))
+(flet ($e2857 (bvugt ?e27 (zero_extend[2] ?e616)))
+(flet ($e2858 (bvuge (zero_extend[3] ?e378) ?e457))
+(flet ($e2859 (bvugt ?e522 (sign_extend[3] ?e232)))
+(flet ($e2860 (bvsge ?e112 (zero_extend[3] ?e386)))
+(flet ($e2861 (bvslt ?e416 (sign_extend[3] ?e546)))
+(flet ($e2862 (bvsgt ?e540 ?e495))
+(flet ($e2863 (distinct (sign_extend[3] ?e329) ?e34))
+(flet ($e2864 (bvugt ?e121 (sign_extend[3] ?e171)))
+(flet ($e2865 (bvule ?e429 ?e308))
+(flet ($e2866 (bvsle ?e332 (zero_extend[3] ?e596)))
+(flet ($e2867 (bvuge ?e568 ?e148))
+(flet ($e2868 (bvsle ?e374 ?e625))
+(flet ($e2869 (bvsle (sign_extend[1] ?e230) ?e425))
+(flet ($e2870 (bvsge ?e351 (zero_extend[3] ?e327)))
+(flet ($e2871 (bvuge (sign_extend[3] ?e322) ?e427))
+(flet ($e2872 (bvugt (sign_extend[1] ?e614) ?e20))
+(flet ($e2873 (bvule (zero_extend[1] ?e342) ?e160))
+(flet ($e2874 (bvsgt ?e354 (sign_extend[3] ?e246)))
+(flet ($e2875 (distinct ?e153 ?e59))
+(flet ($e2876 (bvuge ?e139 (sign_extend[1] ?e405)))
+(flet ($e2877 (bvslt (sign_extend[1] ?e239) ?e501))
+(flet ($e2878 (bvsgt (sign_extend[3] ?e323) ?e534))
+(flet ($e2879 (= ?e57 ?e243))
+(flet ($e2880 (bvule (sign_extend[3] ?e127) ?e227))
+(flet ($e2881 (bvsle ?e316 ?e33))
+(flet ($e2882 (bvule ?e173 ?e560))
+(flet ($e2883 (bvsgt ?e377 ?e329))
+(flet ($e2884 (bvsge ?e455 ?e612))
+(flet ($e2885 (= ?e423 ?e290))
+(flet ($e2886 (= ?e15 ?e492))
+(flet ($e2887 (bvuge ?e160 (zero_extend[1] ?e14)))
+(flet ($e2888 (bvugt ?e338 (zero_extend[3] ?e445)))
+(flet ($e2889 (bvult (zero_extend[3] ?e538) ?e516))
+(flet ($e2890 (bvsgt ?e262 (sign_extend[2] ?e439)))
+(flet ($e2891 (bvsge ?e172 ?e451))
+(flet ($e2892 (= ?e448 (sign_extend[3] ?e45)))
+(flet ($e2893 (bvslt ?e28 ?e645))
+(flet ($e2894 (bvslt ?e165 ?e155))
+(flet ($e2895 (bvsge ?e218 ?e61))
+(flet ($e2896 (bvsgt ?e230 (zero_extend[2] ?e622)))
+(flet ($e2897 (bvsgt ?e551 ?e344))
+(flet ($e2898 (bvugt (zero_extend[3] ?e286) ?e163))
+(flet ($e2899 (bvsle (zero_extend[3] ?e428) ?e69))
+(flet ($e2900 (bvult (sign_extend[3] ?e589) ?e527))
+(flet ($e2901 (bvuge (sign_extend[3] ?e78) ?e38))
+(flet ($e2902 (bvugt ?e307 ?e43))
+(flet ($e2903 (bvsgt ?e344 ?e30))
+(flet ($e2904 (= ?e540 ?e390))
+(flet ($e2905 (bvule ?e587 ?e600))
+(flet ($e2906 (bvslt (sign_extend[3] ?e70) ?e593))
+(flet ($e2907 (bvsle (zero_extend[3] ?e42) ?e550))
+(flet ($e2908 (distinct ?e104 ?e311))
+(flet ($e2909 (bvslt ?e401 ?e460))
+(flet ($e2910 (= (zero_extend[3] ?e589) ?e189))
+(flet ($e2911 (= ?e624 ?e43))
+(flet ($e2912 (bvule ?e435 ?e38))
+(flet ($e2913 (bvugt ?e185 ?e641))
+(flet ($e2914 (distinct (zero_extend[3] ?e297) ?e243))
+(flet ($e2915 (bvsgt ?e208 (sign_extend[3] ?e389)))
+(flet ($e2916 (= ?e225 ?e263))
+(flet ($e2917 (bvult (sign_extend[3] ?e471) ?e588))
+(flet ($e2918 (bvslt (sign_extend[3] ?e331) ?e422))
+(flet ($e2919 (bvult ?e411 (sign_extend[3] ?e161)))
+(flet ($e2920 (= ?e361 (zero_extend[3] ?e66)))
+(flet ($e2921 (bvult ?e499 ?e88))
+(flet ($e2922 (bvule ?e129 (sign_extend[2] ?e465)))
+(flet ($e2923 (bvult (sign_extend[2] ?e391) ?e416))
+(flet ($e2924 (distinct (zero_extend[3] ?e637) ?e522))
+(flet ($e2925 (bvugt (zero_extend[3] ?e106) ?e29))
+(flet ($e2926 (bvugt (sign_extend[3] ?e369) ?e63))
+(flet ($e2927 (bvslt (zero_extend[3] ?e231) ?e115))
+(flet ($e2928 (distinct (zero_extend[2] ?e390) ?e258))
+(flet ($e2929 (bvuge ?e588 (sign_extend[3] ?e337)))
+(flet ($e2930 (distinct ?e444 (zero_extend[3] ?e136)))
+(flet ($e2931 (= ?e607 (sign_extend[3] ?e423)))
+(flet ($e2932 (bvugt ?e121 (zero_extend[3] ?e219)))
+(flet ($e2933 (bvsle ?e262 (zero_extend[2] ?e447)))
+(flet ($e2934 (bvugt ?e26 (zero_extend[3] ?e512)))
+(flet ($e2935 (= ?e345 ?e451))
+(flet ($e2936 (bvslt (sign_extend[3] ?e520) ?e492))
+(flet ($e2937 (bvuge ?e356 (sign_extend[1] ?e614)))
+(flet ($e2938 (bvult (sign_extend[3] ?e569) ?e48))
+(flet ($e2939 (bvule (zero_extend[3] ?e428) ?e77))
+(flet ($e2940 (bvugt ?e481 ?e326))
+(flet ($e2941 (bvslt (sign_extend[3] ?e31) ?e260))
+(flet ($e2942 (bvsge (zero_extend[3] ?e255) ?e57))
+(flet ($e2943 (bvslt ?e25 ?e536))
+(flet ($e2944 (bvule ?e356 ?e619))
+(flet ($e2945 (bvuge ?e41 (zero_extend[3] ?e42)))
+(flet ($e2946 (bvuge ?e363 (sign_extend[1] ?e589)))
+(flet ($e2947 
+(and
+ (or $e812 (not $e812) $e1655)
+ (or $e2714 (not $e1426) (not $e1005))
+ (or (not $e1607) $e1681 $e1981)
+ (or (not $e2672) (not $e2784) $e2210)
+ (or $e2182 $e2533 (not $e1707))
+ (or (not $e2904) (not $e2832) $e1787)
+ (or $e1126 (not $e2387) $e1576)
+ (or $e890 (not $e2702) (not $e1376))
+ (or $e2300 $e715 (not $e1088))
+ (or (not $e2905) $e2602 (not $e2427))
+ (or $e1353 $e2614 $e1135)
+ (or $e2484 $e837 $e1637)
+ (or (not $e1744) (not $e1304) $e2278)
+ (or (not $e2021) $e2284 (not $e981))
+ (or (not $e2189) (not $e2883) $e2299)
+ (or (not $e926) (not $e2422) (not $e2716))
+ (or $e901 $e2664 $e2004)
+ (or (not $e1204) $e1774 (not $e2704))
+ (or (not $e2410) (not $e1844) (not $e2454))
+ (or $e1574 $e1779 (not $e1583))
+ (or $e2863 $e2067 $e2113)
+ (or (not $e2422) (not $e2857) (not $e1123))
+ (or (not $e1898) $e1764 (not $e2592))
+ (or (not $e1619) $e1213 (not $e1566))
+ (or (not $e885) $e2268 (not $e1828))
+ (or (not $e2317) $e978 (not $e1095))
+ (or $e1322 $e2174 $e2819)
+ (or (not $e1021) $e1914 $e2412)
+ (or (not $e1171) (not $e1409) $e2381)
+ (or (not $e1450) $e1779 $e2331)
+ (or (not $e2772) $e751 (not $e1519))
+ (or (not $e1030) $e1947 $e1522)
+ (or $e1761 $e1240 $e794)
+ (or (not $e1046) $e2114 (not $e1213))
+ (or (not $e1244) $e1343 (not $e2848))
+ (or $e2707 (not $e672) $e2654)
+ (or $e796 $e2821 (not $e1355))
+ (or $e2471 $e1136 (not $e1393))
+ (or (not $e1973) $e787 $e1529)
+ (or (not $e2227) $e2761 (not $e1088))
+ (or (not $e2267) $e1430 (not $e1608))
+ (or $e2066 (not $e2520) (not $e1082))
+ (or $e2838 (not $e1324) (not $e1941))
+ (or $e2579 $e1369 (not $e2196))
+ (or (not $e1490) $e920 $e2445)
+ (or (not $e1544) $e2402 (not $e2770))
+ (or $e2414 (not $e2319) $e1511)
+ (or (not $e1578) (not $e2524) $e2297)
+ (or (not $e2928) (not $e770) (not $e1313))
+ (or $e1691 (not $e1343) $e2208)
+ (or (not $e1363) $e1722 (not $e1207))
+ (or (not $e918) (not $e1922) $e2183)
+ (or $e2509 $e1018 (not $e1554))
+ (or (not $e1478) (not $e2507) $e1118)
+ (or (not $e2070) (not $e856) $e955)
+ (or (not $e1326) $e2486 $e708)
+ (or $e1218 $e666 (not $e1797))
+ (or $e1952 (not $e2101) $e2146)
+ (or (not $e1488) (not $e1187) (not $e1953))
+ (or $e2273 $e1293 (not $e1281))
+ (or $e1967 $e1209 (not $e2097))
+ (or $e2808 (not $e1412) (not $e1007))
+ (or $e965 (not $e2045) (not $e1045))
+ (or $e2522 $e2041 $e2097)
+ (or $e839 (not $e1347) $e1144)
+ (or $e1279 $e2305 (not $e1321))
+ (or (not $e1467) $e2161 (not $e1940))
+ (or (not $e1919) $e2826 (not $e1141))
+ (or $e2937 (not $e2736) $e2829)
+ (or $e2717 (not $e981) $e1102)
+ (or (not $e2432) (not $e927) $e2389)
+ (or $e1227 (not $e2425) (not $e2681))
+ (or $e1187 $e1717 (not $e2134))
+ (or (not $e2609) $e1616 $e2071)
+ (or (not $e2543) (not $e1492) (not $e2273))
+ (or (not $e1172) (not $e1823) (not $e2182))
+ (or $e2555 $e829 (not $e2175))
+ (or $e1681 $e1173 $e1342)
+ (or (not $e2870) $e2190 $e1081)
+ (or $e1951 $e2585 $e2017)
+ (or $e2402 $e2771 $e1526)
+ (or (not $e1185) $e2935 (not $e1478))
+ (or (not $e1937) $e1395 $e2503)
+ (or $e1879 $e2369 $e2605)
+ (or $e1087 (not $e1479) (not $e927))
+ (or $e2692 $e2529 $e2107)
+ (or $e1322 (not $e991) $e1246)
+ (or $e1593 (not $e1231) (not $e751))
+ (or $e1270 (not $e1730) $e1617)
+ (or (not $e2156) $e1555 $e1017)
+ (or $e1894 (not $e2787) (not $e2918))
+ (or $e2031 $e2737 $e2622)
+ (or $e2412 $e2344 $e1223)
+ (or (not $e1148) $e672 (not $e849))
+ (or $e2452 (not $e1201) (not $e2330))
+ (or (not $e2086) $e2551 (not $e2258))
+ (or (not $e2207) $e804 $e685)
+ (or $e2702 $e809 (not $e839))
+ (or $e763 (not $e1322) (not $e1290))
+ (or (not $e2680) (not $e1237) $e1142)
+ (or (not $e1193) (not $e1717) (not $e1883))
+ (or $e2248 (not $e2599) $e1238)
+ (or (not $e692) (not $e1868) (not $e1850))
+ (or $e2647 (not $e1219) $e2218)
+ (or (not $e1832) (not $e2115) (not $e1371))
+ (or (not $e2720) (not $e1190) (not $e1479))
+ (or (not $e2625) $e1333 $e2863)
+ (or $e1692 (not $e713) (not $e1004))
+ (or $e2435 $e1124 $e1948)
+ (or (not $e2759) (not $e1508) $e1068)
+ (or $e1716 $e1408 $e2134)
+ (or $e1737 (not $e1267) (not $e1534))
+ (or $e1826 (not $e743) $e770)
+ (or $e1677 (not $e1553) $e1371)
+ (or (not $e2211) (not $e1190) (not $e1180))
+ (or $e1137 $e1812 $e716)
+ (or (not $e1535) $e1478 $e930)
+ (or (not $e1213) (not $e875) (not $e1692))
+ (or (not $e2502) $e1044 $e1911)
+ (or $e1774 $e2806 (not $e1265))
+ (or (not $e1564) (not $e2822) $e857)
+ (or (not $e1752) $e2668 (not $e1640))
+ (or $e2887 $e2082 $e1123)
+ (or $e1112 $e2277 (not $e2540))
+ (or $e2638 $e1809 $e2935)
+ (or $e656 (not $e2685) $e2858)
+ (or $e2377 (not $e1311) $e2270)
+ (or (not $e2576) $e2682 (not $e854))
+ (or $e1886 (not $e2615) (not $e1224))
+ (or $e2839 (not $e1473) (not $e1851))
+ (or $e940 (not $e671) $e2607)
+ (or (not $e2540) $e1148 $e1151)
+ (or (not $e1472) $e2692 (not $e1823))
+ (or $e2066 $e2873 (not $e2859))
+ (or (not $e2581) $e1127 (not $e1720))
+ (or (not $e1792) $e2117 (not $e2672))
+ (or (not $e1953) $e2584 (not $e883))
+ (or $e2519 (not $e772) (not $e2798))
+ (or $e884 (not $e1455) (not $e871))
+ (or (not $e706) $e2647 (not $e998))
+ (or $e1142 (not $e743) $e2863)
+ (or (not $e2640) $e777 $e2318)
+ (or $e2854 (not $e2537) $e2244)
+ (or (not $e2301) $e1355 (not $e2153))
+ (or $e1692 (not $e1589) (not $e1110))
+ (or (not $e2508) (not $e1682) (not $e2469))
+ (or (not $e2159) $e2530 $e1366)
+ (or (not $e1213) $e2333 $e1520)
+ (or $e2917 (not $e1213) $e2641)
+ (or (not $e1646) $e1213 (not $e1219))
+ (or $e740 $e2712 $e1297)
+ (or $e1170 $e1398 (not $e1388))
+ (or (not $e961) (not $e2774) $e1768)
+ (or (not $e2583) $e1907 $e911)
+ (or (not $e1040) (not $e1953) $e2416)
+ (or $e1533 (not $e934) $e2647)
+ (or $e1749 (not $e788) (not $e1301))
+ (or (not $e686) (not $e2034) (not $e2149))
+ (or (not $e1893) (not $e1670) $e1235)
+ (or (not $e1425) (not $e2246) $e2203)
+ (or (not $e1625) $e1080 (not $e1318))
+ (or $e2089 $e940 (not $e2838))
+ (or (not $e1179) $e1351 (not $e905))
+ (or $e1331 $e2907 $e2166)
+ (or (not $e2070) (not $e2162) $e1114)
+ (or $e995 (not $e1293) (not $e1681))
+ (or (not $e1480) (not $e2926) (not $e1355))
+ (or (not $e2806) $e2062 (not $e894))
+ (or (not $e681) (not $e1364) (not $e1842))
+ (or (not $e1251) (not $e1194) $e1342)
+ (or $e2836 (not $e1223) (not $e1454))
+ (or $e1208 (not $e1824) $e2804)
+ (or (not $e2637) (not $e843) (not $e2934))
+ (or (not $e2878) (not $e2800) (not $e1464))
+ (or (not $e2194) $e1037 $e1855)
+ (or (not $e1363) (not $e2098) $e2200)
+ (or $e1516 $e2330 (not $e2450))
+ (or (not $e1759) $e1661 $e2594)
+ (or $e1087 (not $e1555) (not $e2178))
+ (or $e2591 (not $e1450) $e2872)
+ (or $e1364 (not $e1253) (not $e1150))
+ (or (not $e974) $e1400 (not $e650))
+ (or (not $e1119) $e1581 (not $e1470))
+ (or (not $e2389) (not $e1348) (not $e1448))
+ (or $e2026 $e1838 $e2443)
+ (or $e1212 (not $e2464) $e1774)
+ (or $e2263 (not $e1467) (not $e1470))
+ (or $e2572 $e846 (not $e2184))
+ (or (not $e2659) $e2257 $e2057)
+ (or (not $e841) $e2713 (not $e2864))
+ (or $e2547 $e2094 (not $e1448))
+ (or (not $e2684) (not $e2132) (not $e933))
+ (or (not $e1916) (not $e1937) $e2385)
+ (or $e1725 (not $e1501) $e2069)
+ (or $e1435 $e915 $e971)
+ (or (not $e1033) (not $e1998) $e1741)
+ (or $e2341 $e740 (not $e1934))
+ (or $e2390 $e976 (not $e2352))
+ (or $e2098 $e1223 (not $e2314))
+ (or (not $e2310) (not $e1153) $e1729)
+ (or $e2311 (not $e741) (not $e1653))
+ (or $e1608 $e945 $e2872)
+ (or (not $e1352) $e2270 $e1612)
+ (or (not $e701) (not $e2150) $e1129)
+ (or (not $e2475) (not $e1007) $e2858)
+ (or (not $e1166) $e2296 $e2655)
+ (or (not $e1517) $e2053 $e1694)
+ (or (not $e1310) $e882 $e1438)
+ (or (not $e1057) $e2375 (not $e904))
+ (or $e2196 (not $e2852) $e1152)
+ (or $e2077 (not $e1028) $e1717)
+ (or (not $e2597) $e2392 (not $e2083))
+ (or $e2411 (not $e2717) $e2089)
+ (or (not $e953) $e2622 (not $e2555))
+ (or $e2333 $e1166 (not $e2541))
+ (or $e2850 (not $e2333) (not $e2394))
+ (or $e2232 $e1761 (not $e1618))
+ (or (not $e1199) $e2271 (not $e846))
+ (or (not $e2582) (not $e2654) $e1074)
+ (or $e1417 $e1374 (not $e1650))
+ (or $e724 $e1504 (not $e1564))
+ (or (not $e1380) $e1256 (not $e940))
+ (or (not $e756) $e2442 $e972)
+ (or $e1126 $e2277 (not $e1351))
+ (or (not $e1988) (not $e1152) (not $e1693))
+ (or $e1747 $e905 (not $e2873))
+ (or (not $e967) (not $e1759) $e2073)
+ (or $e1414 $e709 $e1487)
+ (or $e2620 $e2466 (not $e2497))
+ (or (not $e2654) (not $e2928) (not $e729))
+ (or $e2698 $e1580 $e1981)
+ (or $e2867 (not $e2256) (not $e2483))
+ (or $e2162 (not $e1388) (not $e2114))
+ (or (not $e2374) (not $e1494) $e935)
+ (or $e2304 (not $e2434) $e1716)
+ (or (not $e1948) (not $e858) $e924)
+ (or $e2896 $e2470 (not $e2107))
+ (or $e2210 (not $e1595) (not $e1500))
+ (or (not $e1814) $e2923 (not $e2587))
+ (or $e1479 $e1558 (not $e1027))
+ (or (not $e1344) (not $e1666) $e925)
+ (or (not $e1111) (not $e997) $e1173)
+ (or $e2572 $e1730 $e995)
+ (or $e1033 $e1874 (not $e2481))
+ (or $e1024 (not $e803) $e1236)
+ (or $e2287 $e2477 $e2568)
+ (or $e760 $e1416 (not $e1984))
+ (or $e2808 (not $e2498) $e2555)
+ (or (not $e1349) (not $e1292) (not $e1002))
+ (or $e2178 $e799 $e1377)
+ (or $e1210 $e1227 $e1987)
+ (or (not $e2941) $e1963 $e1890)
+ (or (not $e2550) (not $e1922) (not $e2785))
+ (or (not $e1419) $e2381 (not $e1507))
+ (or (not $e2651) $e2272 (not $e1460))
+ (or $e1060 $e2254 (not $e2556))
+ (or (not $e2104) $e2830 $e760)
+ (or $e1044 $e884 (not $e1018))
+ (or $e1721 $e1335 $e2841)
+ (or (not $e2231) $e1283 $e1055)
+ (or $e1451 (not $e2447) (not $e893))
+ (or $e2533 $e2484 (not $e2882))
+ (or $e2779 (not $e1885) (not $e2825))
+ (or (not $e1388) $e1859 (not $e2539))
+ (or (not $e1885) $e1251 (not $e1462))
+ (or (not $e2618) (not $e1256) $e2568)
+ (or $e2118 $e1581 (not $e765))
+ (or $e1177 (not $e1641) $e1564)
+ (or $e2861 $e2123 (not $e2493))
+ (or $e859 $e1853 (not $e1345))
+ (or (not $e1029) $e733 (not $e2640))
+ (or (not $e1974) $e2259 (not $e1120))
+ (or $e1228 $e1384 (not $e2286))
+ (or $e792 (not $e2382) $e2157)
+ (or (not $e1184) (not $e2780) $e1133)
+ (or $e1626 (not $e2624) (not $e1375))
+ (or (not $e960) $e1235 $e1064)
+ (or (not $e1122) $e1884 $e2414)
+ (or (not $e1386) (not $e1387) (not $e2759))
+ (or (not $e1490) $e1745 (not $e1877))
+ (or $e2135 (not $e707) $e877)
+ (or (not $e889) $e837 $e965)
+ (or $e2121 $e2619 $e1548)
+ (or $e2041 $e705 (not $e852))
+ (or (not $e956) $e1062 (not $e1340))
+ (or (not $e1786) (not $e2218) $e1573)
+ (or $e2554 (not $e2726) (not $e2073))
+ (or $e2742 (not $e1500) (not $e1716))
+ (or $e1161 (not $e2535) (not $e2892))
+ (or $e2209 (not $e1493) (not $e1423))
+ (or $e2389 $e678 $e2074)
+ (or $e986 $e1494 (not $e1161))
+ (or $e2159 (not $e2093) $e1204)
+ (or $e2423 (not $e2045) (not $e2731))
+ (or (not $e1340) $e677 (not $e1215))
+ (or $e2585 (not $e1286) (not $e1538))
+ (or (not $e2000) (not $e1302) $e2631)
+ (or (not $e1437) $e1038 $e969)
+ (or $e1811 (not $e2588) (not $e1099))
+ (or $e1233 (not $e2820) $e1527)
+ (or $e1650 $e2673 $e2063)
+ (or $e2215 (not $e1454) (not $e1784))
+ (or $e1078 (not $e2325) (not $e1663))
+ (or $e2827 (not $e1558) $e722)
+ (or (not $e829) $e2250 (not $e707))
+ (or $e723 $e1171 $e2180)
+ (or (not $e2081) $e2261 (not $e2681))
+ (or (not $e1533) (not $e893) (not $e1258))
+ (or (not $e1695) (not $e2093) (not $e1989))
+ (or (not $e1584) $e2696 (not $e2705))
+ (or (not $e1477) $e1689 (not $e1076))
+ (or $e2675 (not $e2751) $e1022)
+ (or (not $e1693) (not $e1949) (not $e2499))
+ (or (not $e910) (not $e1413) (not $e2295))
+ (or (not $e1846) $e1060 $e1833)
+ (or (not $e2453) $e1861 (not $e1645))
+ (or $e2687 (not $e1819) (not $e1438))
+ (or $e749 $e1499 (not $e2769))
+ (or (not $e2618) $e1584 $e2618)
+ (or $e2908 $e2048 (not $e1961))
+ (or $e1327 $e2887 $e1033)
+ (or $e2533 (not $e2554) (not $e991))
+ (or $e1616 (not $e1329) $e1391)
+ (or $e2257 $e1623 $e1987)
+ (or (not $e1218) $e1455 $e1360)
+ (or $e2359 (not $e666) (not $e1033))
+ (or $e2248 (not $e2926) $e1518)
+ (or $e2658 $e1914 $e2170)
+ (or $e1345 (not $e2148) $e2876)
+ (or (not $e1973) $e2610 (not $e1105))
+ (or (not $e2926) (not $e873) $e1370)
+ (or $e1838 $e1529 (not $e989))
+ (or $e2691 $e1956 (not $e775))
+ (or (not $e2504) $e1083 $e1085)
+ (or (not $e1102) (not $e2057) (not $e860))
+ (or $e878 $e2294 $e2248)
+ (or $e2646 $e2893 $e2336)
+ (or $e1210 $e2640 $e2217)
+ (or $e1048 $e2210 $e2718)
+ (or $e1774 (not $e1635) $e2595)
+ (or (not $e1664) (not $e1171) (not $e2734))
+ (or (not $e691) $e809 (not $e2279))
+ (or $e1401 (not $e2272) $e1476)
+ (or $e1821 (not $e2680) $e803)
+ (or (not $e1020) (not $e1842) (not $e1271))
+ (or (not $e2084) (not $e2048) (not $e672))
+ (or $e2375 $e2665 $e1497)
+ (or (not $e1454) $e2698 $e2673)
+ (or (not $e1258) $e680 (not $e1840))
+ (or (not $e1531) $e2723 (not $e1103))
+ (or (not $e2408) (not $e1995) $e2108)
+ (or (not $e1794) $e2187 (not $e2066))
+ (or (not $e1113) (not $e1515) (not $e2663))
+ (or $e1067 $e2806 $e681)
+ (or (not $e1454) $e2448 $e1259)
+ (or $e1570 $e2347 (not $e1739))
+ (or $e1529 $e690 (not $e1544))
+ (or $e1852 $e1990 (not $e1471))
+ (or (not $e1201) $e782 $e2543)
+ (or (not $e2847) (not $e2732) (not $e1456))
+ (or $e1076 (not $e718) $e2098)
+ (or $e2006 $e2574 $e1693)
+ (or (not $e943) (not $e1617) $e1126)
+ (or $e1357 $e2314 (not $e1924))
+ (or $e1062 (not $e866) (not $e1360))
+ (or (not $e2254) (not $e1999) (not $e711))
+ (or $e2144 (not $e958) (not $e2385))
+ (or (not $e2794) (not $e1638) $e2181)
+ (or (not $e1176) $e2677 (not $e1528))
+ (or (not $e2407) (not $e2800) $e1284)
+ (or $e1347 (not $e2219) $e1218)
+ (or $e1570 $e1205 (not $e957))
+ (or $e1311 (not $e764) (not $e669))
+ (or $e957 $e2222 $e2277)
+ (or (not $e1985) (not $e2727) $e2230)
+ (or (not $e732) (not $e1182) (not $e1485))
+ (or $e1142 (not $e1079) (not $e677))
+ (or $e1129 (not $e2392) $e1807)
+ (or (not $e1457) $e2169 (not $e1597))
+ (or (not $e1913) (not $e1199) (not $e974))
+ (or $e2325 $e1395 $e2726)
+ (or $e1247 $e2553 (not $e1761))
+ (or (not $e2710) $e763 $e1854)
+ (or $e1326 $e1255 (not $e2006))
+ (or (not $e2243) (not $e1968) (not $e1775))
+ (or $e1178 (not $e1280) $e2138)
+ (or $e1196 $e2425 $e1563)
+ (or $e1557 $e2454 $e1978)
+ (or (not $e687) (not $e1542) $e1134)
+ (or (not $e2017) $e1727 (not $e2003))
+ (or (not $e2372) $e2499 (not $e2410))
+ (or (not $e2267) (not $e2516) $e2737)
+ (or $e1634 (not $e2827) (not $e1699))
+ (or $e2720 (not $e2458) (not $e2480))
+ (or (not $e1850) (not $e2386) $e833)
+ (or (not $e939) (not $e665) (not $e1531))
+ (or $e1122 (not $e1876) (not $e1283))
+ (or (not $e991) (not $e1903) $e809)
+ (or $e2654 $e2851 $e2356)
+ (or $e1203 (not $e1820) (not $e2475))
+ (or (not $e2443) $e2405 $e2148)
+ (or (not $e1141) (not $e2369) (not $e884))
+ (or (not $e2085) $e2171 (not $e2698))
+ (or (not $e1807) (not $e2610) $e2845)
+ (or $e1689 (not $e1254) (not $e1546))
+ (or (not $e2215) $e2295 (not $e1039))
+ (or $e1794 $e2440 $e1331)
+ (or $e1568 (not $e1225) $e2099)
+ (or (not $e1333) $e2236 $e900)
+ (or (not $e1781) $e2007 $e2353)
+ (or (not $e788) (not $e1292) $e1987)
+ (or (not $e1350) $e1202 (not $e689))
+ (or $e1143 (not $e770) $e744)
+ (or (not $e2771) $e2797 (not $e2186))
+ (or $e2042 (not $e1552) (not $e1744))
+ (or $e727 $e2521 (not $e1670))
+ (or $e2681 (not $e1874) (not $e1380))
+ (or (not $e1458) $e1049 $e1404)
+ (or $e878 $e2820 (not $e2070))
+ (or $e2813 (not $e1313) (not $e1459))
+ (or (not $e2234) $e1880 $e2530)
+ (or (not $e1083) (not $e2401) $e2340)
+ (or $e765 $e1494 $e1004)
+ (or (not $e2333) $e1829 (not $e2321))
+ (or $e2371 $e1413 $e1246)
+ (or (not $e1299) $e2600 $e2146)
+ (or $e1834 $e980 (not $e1819))
+ (or $e1671 (not $e1009) $e1388)
+ (or (not $e1642) $e675 $e2776)
+ (or (not $e1155) $e2475 (not $e2594))
+ (or (not $e973) (not $e1417) (not $e1748))
+ (or (not $e1506) $e2596 (not $e1345))
+ (or $e2118 (not $e2595) $e2200)
+ (or $e1271 $e2461 (not $e2270))
+ (or $e2665 $e2780 $e1819)
+ (or (not $e1690) $e2821 (not $e2390))
+ (or $e2880 $e1323 $e1422)
+ (or (not $e2635) $e1931 (not $e2814))
+ (or $e1109 $e796 $e2470)
+ (or (not $e877) (not $e1002) (not $e2059))
+ (or $e1932 (not $e2804) $e1282)
+ (or $e1609 (not $e2254) $e819)
+ (or (not $e831) $e1769 (not $e2609))
+ (or $e1896 (not $e1721) $e2803)
+ (or $e1056 $e2326 (not $e2736))
+ (or (not $e1592) $e2876 (not $e2211))
+ (or (not $e2570) $e801 (not $e1020))
+ (or $e1580 (not $e1918) $e2033)
+ (or (not $e1215) (not $e1373) $e1545)
+ (or $e2805 $e1407 (not $e1554))
+ (or (not $e2098) $e769 (not $e801))
+ (or $e1638 (not $e1337) (not $e1532))
+ (or $e1387 (not $e1895) $e1299)
+ (or (not $e962) $e844 $e2476)
+ (or (not $e1363) (not $e836) $e2753)
+ (or $e1860 (not $e700) (not $e1459))
+ (or (not $e685) (not $e802) (not $e2150))
+ (or $e2201 $e688 $e1029)
+ (or (not $e1459) (not $e1297) (not $e1661))
+ (or $e1624 (not $e2302) $e1006)
+ (or $e2022 (not $e1115) $e2298)
+ (or (not $e2844) (not $e770) (not $e1439))
+ (or (not $e2278) (not $e1572) $e1733)
+ (or $e2625 (not $e2602) (not $e2188))
+ (or (not $e2738) $e1790 $e1414)
+ (or (not $e1424) $e2606 $e1881)
+ (or (not $e2593) (not $e1442) $e1152)
+ (or (not $e2086) $e1027 (not $e1450))
+ (or $e2745 (not $e681) $e864)
+ (or $e2211 (not $e2737) (not $e1051))
+ (or $e1636 $e1909 (not $e2713))
+ (or (not $e1969) (not $e1725) $e2863)
+ (or $e2522 $e2103 (not $e2688))
+ (or (not $e2028) $e1422 $e1207)
+ (or (not $e2352) (not $e2912) (not $e2093))
+ (or $e1586 (not $e2240) (not $e1827))
+ (or $e2371 (not $e2298) (not $e2640))
+ (or (not $e2314) $e1497 $e851)
+ (or $e2189 (not $e1168) (not $e1468))
+ (or (not $e1158) (not $e2429) (not $e1559))
+ (or $e2101 $e2720 $e1273)
+ (or $e1840 (not $e1522) (not $e1996))
+ (or $e2233 $e2067 (not $e1345))
+ (or (not $e1605) (not $e1112) $e2237)
+ (or (not $e1013) (not $e894) $e1395)
+ (or (not $e2713) (not $e694) $e718)
+ (or (not $e1326) $e2928 (not $e2883))
+ (or (not $e1442) (not $e667) $e2218)
+ (or (not $e868) (not $e1706) $e1880)
+ (or $e2902 $e1873 $e1457)
+ (or $e1423 $e2649 (not $e1007))
+ (or (not $e2402) (not $e2339) (not $e2381))
+ (or (not $e1274) $e2050 (not $e914))
+ (or (not $e850) $e1056 (not $e759))
+ (or (not $e2644) (not $e1845) (not $e928))
+ (or (not $e855) (not $e1132) $e2171)
+ (or $e1053 $e1847 $e1918)
+ (or (not $e747) $e959 $e2346)
+ (or (not $e1350) (not $e1927) $e1440)
+ (or $e2352 (not $e2103) $e2483)
+ (or (not $e2111) (not $e2648) $e828)
+ (or (not $e1278) $e2600 (not $e929))
+ (or $e1414 $e1092 (not $e742))
+ (or $e2095 (not $e1761) (not $e2751))
+ (or (not $e2624) (not $e1412) $e760)
+ (or (not $e2222) $e1326 (not $e794))
+ (or (not $e1058) (not $e1518) (not $e1388))
+ (or $e1972 (not $e952) $e1049)
+ (or $e2599 $e793 (not $e1843))
+ (or (not $e2918) $e724 (not $e1913))
+ (or $e2690 $e1914 $e1399)
+ (or $e1980 (not $e2854) (not $e1814))
+ (or $e1198 (not $e2901) $e2547)
+ (or $e2396 $e2010 (not $e1659))
+ (or (not $e2220) $e2193 (not $e1997))
+ (or (not $e2050) (not $e2436) (not $e880))
+ (or (not $e1961) $e1047 (not $e749))
+ (or $e1786 $e2080 $e1470)
+ (or (not $e2244) (not $e1714) $e1552)
+ (or (not $e916) (not $e2298) (not $e1102))
+ (or $e1780 $e2449 (not $e2284))
+ (or (not $e2692) (not $e1138) $e1155)
+ (or $e868 $e1014 $e1354)
+ (or (not $e1577) $e1704 (not $e1229))
+ (or (not $e1705) (not $e724) (not $e2678))
+ (or $e2356 $e1799 $e2903)
+ (or $e663 (not $e2091) (not $e2034))
+ (or $e2729 $e1781 (not $e1200))
+ (or (not $e2851) $e1561 (not $e2110))
+ (or (not $e2710) (not $e1389) (not $e847))
+ (or (not $e2752) (not $e973) $e1008)
+ (or $e1257 $e1988 (not $e1240))
+ (or $e1178 $e2914 $e2905)
+ (or $e1824 $e2484 $e2635)
+ (or (not $e1155) $e1082 (not $e2862))
+ (or (not $e2432) $e2134 (not $e2875))
+ (or $e2136 (not $e1594) $e2023)
+ (or (not $e2076) (not $e2340) $e676)
+ (or $e2902 (not $e986) (not $e2457))
+ (or (not $e1706) (not $e2566) $e2316)
+ (or (not $e1250) (not $e1526) (not $e2289))
+ (or $e2374 $e668 (not $e1554))
+ (or $e1740 (not $e788) $e895)
+ (or $e2938 $e2884 (not $e1610))
+ (or $e1967 (not $e2192) $e847)
+ (or (not $e2092) $e1600 $e2305)
+ (or (not $e2940) (not $e1644) $e907)
+ (or $e2732 (not $e1255) $e1902)
+ (or $e2810 $e2118 $e1990)
+ (or (not $e1649) $e2740 $e1849)
+ (or (not $e1618) $e2461 $e1825)
+ (or (not $e1324) (not $e2772) $e1010)
+ (or $e1085 (not $e2496) $e1512)
+ (or (not $e2305) (not $e2469) (not $e2752))
+ (or $e2061 $e1458 (not $e2563))
+ (or $e1499 (not $e1238) $e691)
+ (or $e1271 $e2792 $e2140)
+ (or $e938 $e2945 $e2124)
+ (or $e2128 $e1907 $e2316)
+ (or $e1349 $e2720 $e1919)
+ (or $e1305 $e1936 $e1795)
+ (or (not $e2572) (not $e2433) $e2771)
+ (or $e966 (not $e2690) $e1974)
+ (or (not $e716) (not $e2485) $e2423)
+ (or $e2625 (not $e1525) (not $e681))
+ (or (not $e1401) $e1774 $e1023)
+ (or $e1604 $e738 (not $e1532))
+ (or (not $e2191) $e713 (not $e2168))
+ (or (not $e1962) $e977 (not $e1210))
+ (or (not $e797) $e906 (not $e2809))
+ (or $e2708 $e1996 $e2595)
+ (or (not $e1978) $e2691 $e2804)
+ (or $e2447 $e2512 (not $e1580))
+ (or (not $e852) (not $e1304) $e914)
+ (or $e1209 $e2835 $e2897)
+ (or $e2042 (not $e1155) $e2722)
+ (or $e1742 (not $e1296) (not $e2888))
+ (or (not $e1619) $e852 $e2404)
+ (or (not $e1646) $e729 $e1140)
+ (or $e1606 (not $e1660) (not $e1572))
+ (or $e1864 (not $e2739) (not $e2425))
+ (or $e2375 (not $e1414) $e1613)
+ (or $e2711 (not $e2300) $e802)
+ (or (not $e2584) $e2571 $e2413)
+ (or $e1312 $e1364 (not $e2302))
+ (or $e1264 $e1464 (not $e2664))
+ (or (not $e1931) (not $e792) (not $e671))
+ (or $e1629 (not $e1401) (not $e2578))
+ (or $e1762 (not $e2524) (not $e1092))
+ (or (not $e1303) $e2029 (not $e922))
+ (or (not $e1779) $e1389 (not $e2419))
+ (or $e774 $e2624 $e2643)
+ (or (not $e796) $e2262 $e755)
+ (or $e2521 (not $e1940) (not $e2829))
+ (or (not $e1137) (not $e2821) (not $e2756))
+ (or $e2245 $e1192 (not $e988))
+ (or $e857 (not $e813) $e830)
+ (or $e1310 $e2871 $e948)
+ (or $e725 (not $e2177) (not $e1869))
+ (or $e1838 (not $e2290) $e1205)
+ (or (not $e2160) (not $e2233) $e1870)
+ (or $e2130 $e2819 (not $e2221))
+ (or (not $e1765) $e2421 $e2327)
+ (or $e2327 (not $e2517) $e862)
+ (or $e1412 $e2685 (not $e2067))
+ (or $e2755 (not $e1761) $e2677)
+ (or $e1373 (not $e1675) (not $e2354))
+ (or $e1139 $e2578 (not $e1718))
+ (or $e871 (not $e1033) (not $e1064))
+ (or $e2703 $e1381 (not $e2762))
+ (or (not $e2139) (not $e1164) $e2166)
+ (or (not $e1828) (not $e1988) (not $e2573))
+ (or $e1397 (not $e2127) (not $e2529))
+ (or $e2640 (not $e1302) (not $e1496))
+ (or $e1538 (not $e892) $e1189)
+ (or $e757 (not $e747) $e1708)
+ (or $e2458 $e1947 (not $e1644))
+ (or (not $e2065) $e2077 (not $e2913))
+ (or $e1447 $e2531 (not $e1673))
+ (or $e2910 (not $e1862) (not $e2799))
+ (or $e1027 (not $e2230) (not $e652))
+ (or $e2410 (not $e1412) $e816)
+ (or (not $e1756) $e1940 (not $e1620))
+ (or (not $e1391) $e2414 $e1825)
+ (or (not $e2167) (not $e2903) (not $e1627))
+ (or $e1451 $e2091 (not $e1160))
+ (or (not $e765) (not $e808) (not $e2220))
+ (or $e1355 $e1970 $e2333)
+ (or $e1397 $e1150 $e2669)
+ (or (not $e2857) (not $e1952) (not $e838))
+ (or $e2454 (not $e1723) (not $e2598))
+ (or (not $e1615) $e1266 $e1448)
+ (or $e2559 (not $e890) (not $e2863))
+ (or (not $e1472) $e2399 (not $e2216))
+ (or $e2570 $e1859 $e2089)
+ (or $e1332 $e2435 (not $e2106))
+ (or (not $e733) $e1508 $e1447)
+ (or (not $e865) (not $e2159) (not $e801))
+ (or (not $e2310) (not $e2076) $e912)
+ (or (not $e1834) (not $e2683) (not $e2466))
+ (or $e2701 $e1570 $e2682)
+ (or (not $e1266) $e2508 (not $e2704))
+ (or $e1856 $e764 (not $e2559))
+ (or $e2367 $e2060 (not $e900))
+ (or (not $e2828) $e1313 (not $e674))
+ (or $e2070 (not $e1959) $e1448)
+ (or $e1218 (not $e1620) $e2526)
+ (or $e1593 $e1606 (not $e786))
+ (or $e1476 (not $e2799) (not $e1350))
+ (or $e2859 (not $e1544) $e2206)
+ (or $e1488 $e1723 $e665)
+ (or $e2412 (not $e1095) (not $e829))
+ (or $e1310 $e1466 (not $e2002))
+ (or (not $e1438) $e2104 $e2288)
+ (or (not $e2632) (not $e2416) (not $e1870))
+ (or $e1428 $e2073 (not $e2741))
+ (or (not $e1490) (not $e1422) $e1401)
+ (or $e1042 (not $e2676) $e2930)
+ (or (not $e1015) $e2496 (not $e1143))
+ (or $e2361 (not $e2345) $e1342)
+ (or $e825 (not $e1302) (not $e1058))
+ (or $e1598 (not $e2861) (not $e1204))
+ (or (not $e2443) (not $e1574) (not $e1871))
+ (or (not $e2446) $e909 (not $e2375))
+ (or (not $e1006) (not $e1526) (not $e2904))
+ (or (not $e2537) (not $e2794) (not $e2203))
+ (or (not $e1110) $e1425 (not $e874))
+ (or (not $e1929) $e2862 (not $e2219))
+ (or (not $e1520) $e1209 $e1846)
+ (or (not $e2305) $e2774 (not $e2422))
+ (or $e2763 $e1197 (not $e868))
+ (or (not $e1129) (not $e1790) $e1149)
+ (or (not $e2005) $e1981 $e2105)
+ (or (not $e1544) (not $e2847) (not $e1119))
+ (or (not $e2196) $e2033 (not $e657))
+ (or (not $e683) $e917 $e2865)
+ (or $e1676 (not $e2582) $e1493)
+ (or $e1037 $e2735 (not $e1329))
+ (or $e1295 (not $e1546) $e1395)
+ (or (not $e2093) (not $e741) (not $e2908))
+ (or (not $e721) (not $e1330) (not $e2299))
+ (or $e1707 $e2516 $e990)
+ (or $e966 $e2164 (not $e2579))
+ (or $e2027 $e2791 $e2150)
+ (or (not $e1523) $e2720 (not $e2946))
+ (or (not $e2268) (not $e1973) (not $e2731))
+ (or (not $e1125) (not $e2139) $e815)
+ (or $e796 (not $e2287) $e1637)
+ (or (not $e2619) $e2354 $e1400)
+ (or (not $e2406) (not $e1427) $e2060)
+ (or $e1980 $e2297 $e1834)
+ (or (not $e1479) $e1661 (not $e2588))
+ (or $e1558 (not $e1000) (not $e2750))
+ (or (not $e2126) (not $e731) (not $e1949))
+ (or (not $e1390) $e869 $e1029)
+ (or (not $e2406) $e2886 $e856)
+ (or $e805 (not $e1697) (not $e827))
+ (or (not $e2216) $e1890 (not $e1401))
+ (or (not $e2158) (not $e1510) $e2084)
+ (or (not $e2626) $e2582 (not $e2132))
+ (or (not $e1362) $e1896 $e2672)
+ (or (not $e1294) $e1404 (not $e1431))
+ (or (not $e1528) (not $e1899) $e1437)
+ (or $e969 $e773 (not $e1051))
+ (or $e1117 $e2097 (not $e809))
+ (or (not $e2424) $e1537 (not $e1851))
+ (or (not $e2491) (not $e2273) $e1926)
+ (or $e1701 $e1468 (not $e2627))
+ (or (not $e1132) (not $e1552) (not $e1352))
+ (or (not $e2946) (not $e1609) (not $e1466))
+ (or (not $e2918) (not $e1862) (not $e848))
+ (or $e1521 $e1004 $e1638)
+ (or (not $e2826) (not $e2132) $e1263)
+ (or (not $e847) (not $e2562) (not $e1655))
+ (or $e1844 (not $e1355) (not $e1542))
+ (or $e1201 (not $e1547) $e2360)
+ (or $e831 (not $e745) $e1063)
+ (or $e1067 (not $e811) $e899)
+ (or (not $e1782) (not $e1704) $e2861)
+ (or (not $e2426) $e1412 (not $e1617))
+ (or $e2275 (not $e1749) $e917)
+ (or (not $e2830) $e1012 (not $e1682))
+ (or $e2489 $e1931 (not $e2772))
+ (or $e1482 (not $e2448) (not $e1689))
+ (or (not $e1188) (not $e1343) $e1603)
+ (or (not $e902) (not $e2922) $e1738)
+ (or $e2255 $e2670 $e1477)
+ (or $e2003 (not $e1377) (not $e1734))
+ (or (not $e2033) (not $e1232) (not $e2492))
+ (or $e2799 $e1167 (not $e2622))
+ (or (not $e2629) (not $e1589) $e869)
+ (or (not $e673) (not $e1687) $e2548)
+ (or $e1381 $e1254 $e2790)
+ (or $e2664 (not $e1793) (not $e2662))
+ (or $e838 $e1034 (not $e1774))
+ (or $e1674 $e1496 (not $e2181))
+ (or (not $e2913) (not $e1857) $e2446)
+ (or $e2244 $e2113 (not $e917))
+ (or $e1015 $e2101 $e1175)
+ (or $e1848 (not $e1490) $e1616)
+ (or (not $e2510) (not $e2540) (not $e1430))
+ (or $e2585 $e852 $e1009)
+ (or (not $e2799) $e2424 $e1549)
+ (or $e1329 $e790 (not $e2202))
+ (or (not $e848) $e1977 $e1195)
+ (or $e1571 $e1868 $e1998)
+ (or (not $e2568) $e664 (not $e1429))
+ (or $e766 (not $e885) (not $e1193))
+ (or $e2449 $e1869 $e1626)
+ (or $e1728 (not $e967) $e1672)
+ (or (not $e956) $e1520 (not $e2765))
+ (or $e2423 $e1505 $e950)
+ (or (not $e2688) (not $e1582) $e2649)
+ (or (not $e1686) $e2623 $e2336)
+ (or $e2215 $e1849 $e2677)
+ (or (not $e1671) (not $e2394) $e787)
+ (or $e2459 $e2781 (not $e1939))
+ (or $e828 $e1229 $e2068)
+ (or $e746 (not $e2742) (not $e1454))
+ (or (not $e667) (not $e2460) (not $e1418))
+ (or (not $e2150) (not $e2138) (not $e2553))
+ (or (not $e1080) (not $e761) $e2204)
+ (or (not $e2102) $e2393 (not $e1236))
+ (or $e1668 (not $e2393) $e2807)
+ (or $e2047 $e1221 (not $e2718))
+ (or (not $e1657) $e1599 (not $e2431))
+ (or $e955 $e2631 (not $e1902))
+ (or $e2349 (not $e2639) (not $e2236))
+ (or $e1741 $e759 (not $e907))
+ (or $e1233 (not $e2263) (not $e1068))
+ (or (not $e2860) (not $e2413) (not $e1499))
+ (or (not $e2940) $e667 $e2190)
+ (or $e2704 $e1692 (not $e2343))
+ (or (not $e2144) (not $e1311) (not $e903))
+ (or (not $e2862) (not $e705) $e1945)
+ (or (not $e2565) $e813 (not $e1075))
+ (or $e802 $e2444 $e1146)
+ (or $e1648 (not $e1658) $e2556)
+ (or $e859 (not $e1928) $e2073)
+ (or $e2658 $e1230 (not $e2667))
+ (or (not $e1223) (not $e1920) (not $e2534))
+ (or (not $e1269) (not $e971) (not $e2281))
+ (or $e722 $e2445 $e1449)
+ (or $e2903 (not $e819) (not $e2286))
+ (or $e1132 $e1169 (not $e1891))
+ (or $e1909 $e1529 $e1796)
+ (or $e1563 (not $e1581) (not $e2213))
+ (or (not $e1229) $e2596 (not $e1549))
+ (or $e2559 (not $e945) (not $e2767))
+ (or (not $e989) (not $e1827) (not $e2255))
+ (or (not $e702) (not $e1200) (not $e1995))
+ (or $e2103 $e1960 (not $e2905))
+ (or $e1088 $e1944 (not $e732))
+ (or (not $e845) $e1551 $e845)
+ (or (not $e2265) $e1278 (not $e1153))
+ (or $e1873 $e2673 $e2429)
+ (or $e1026 (not $e917) (not $e1970))
+ (or $e2747 (not $e945) $e1165)
+ (or (not $e1221) (not $e1685) (not $e1291))
+ (or $e1049 $e2419 $e2370)
+ (or (not $e1605) $e2133 $e2735)
+ (or $e1779 $e2314 $e1356)
+ (or (not $e2505) (not $e1566) (not $e940))
+ (or $e688 $e2927 (not $e1662))
+ (or (not $e677) $e2163 $e1156)
+ (or $e1914 (not $e1275) $e2068)
+ (or $e1976 $e2366 (not $e880))
+ (or (not $e1000) $e1560 $e2566)
+ (or $e2438 (not $e2075) $e2059)
+ (or $e1817 $e2888 (not $e2191))
+ (or (not $e971) (not $e1495) $e1588)
+ (or $e2256 $e1776 (not $e1438))
+ (or $e1140 $e864 (not $e2162))
+ (or $e867 $e715 $e1491)
+ (or $e2105 $e1952 $e1091)
+ (or (not $e2022) (not $e2174) $e894)
+ (or (not $e2661) $e2382 $e833)
+ (or (not $e1898) $e1044 (not $e1743))
+ (or $e1486 (not $e2659) $e1067)
+ (or $e2708 (not $e1784) $e2280)
+ (or $e988 (not $e2904) (not $e684))
+ (or $e2329 $e2201 (not $e1054))
+ (or $e2432 $e2677 $e1536)
+ (or (not $e1570) $e2748 $e1685)
+ (or $e1824 $e2720 $e1834)
+ (or $e1964 (not $e2449) (not $e2623))
+ (or (not $e1378) $e1332 (not $e2862))
+ (or $e2649 $e1705 $e2287)
+ (or (not $e2601) (not $e894) (not $e1407))
+ (or $e1810 (not $e1827) $e2309)
+ (or $e1551 (not $e1957) (not $e1851))
+ (or $e2203 $e1182 $e1174)
+ (or (not $e2488) (not $e838) (not $e1473))
+ (or $e1636 $e1830 (not $e2512))
+ (or (not $e974) $e1433 (not $e2365))
+ (or $e818 (not $e2791) $e2135)
+ (or (not $e1759) $e1861 $e2069)
+ (or (not $e2506) $e2040 (not $e1551))
+ (or (not $e1099) $e1904 $e2398)
+ (or (not $e709) $e922 (not $e1076))
+ (or $e1173 (not $e2037) $e1122)
+ (or $e751 $e2385 $e807)
+ (or $e2567 $e2748 (not $e862))
+ (or (not $e1836) $e2401 $e1484)
+ (or $e2943 (not $e1535) (not $e2545))
+ (or (not $e2640) (not $e1932) (not $e2027))
+ (or $e659 (not $e1918) $e2405)
+ (or $e2425 (not $e760) $e733)
+ (or (not $e2736) $e1099 $e2620)
+ (or $e1710 (not $e1456) $e2806)
+ (or (not $e924) $e2038 $e1889)
+ (or (not $e1840) (not $e2342) $e2145)
+ (or $e2587 (not $e2309) (not $e1612))
+ (or $e1634 (not $e2665) (not $e844))
+ (or $e1983 (not $e2826) (not $e1830))
+ (or $e2739 $e1653 $e835)
+ (or $e1749 $e2172 $e2040)
+ (or (not $e1320) $e2418 (not $e2787))
+ (or $e2917 (not $e2015) (not $e2433))
+ (or $e1779 (not $e2765) (not $e1375))
+ (or $e2057 (not $e679) (not $e2859))
+ (or $e2547 $e741 (not $e2136))
+ (or $e1118 (not $e1791) (not $e1983))
+ (or $e664 $e1982 $e2837)
+ (or $e2552 (not $e1356) (not $e2506))
+ (or $e1135 (not $e1256) (not $e1039))
+ (or $e2090 $e2219 $e2407)
+ (or (not $e776) (not $e1587) $e2107)
+ (or (not $e1326) $e1803 $e1880)
+ (or (not $e2396) $e2304 (not $e2286))
+ (or $e1674 (not $e2393) (not $e2326))
+ (or $e2351 $e795 (not $e2045))
+ (or (not $e1120) (not $e2753) $e2260)
+ (or (not $e1649) (not $e2896) (not $e1958))
+ (or (not $e1161) (not $e1226) (not $e1278))
+ (or $e684 $e758 (not $e2414))
+ (or $e932 $e1262 $e1294)
+ (or $e2320 (not $e1875) $e1341)
+ (or (not $e2521) $e2405 (not $e2245))
+ (or (not $e1127) $e1767 (not $e2920))
+ (or $e2222 (not $e1627) $e2689)
+ (or $e1947 (not $e2498) (not $e2127))
+ (or (not $e1397) $e1832 $e659)
+ (or (not $e2407) $e2339 $e897)
+ (or $e2307 $e2808 $e2818)
+ (or (not $e1906) $e1688 $e2377)
+ (or (not $e2376) (not $e2122) $e2511)
+ (or (not $e2577) (not $e2233) $e1440)
+ (or (not $e2361) $e2644 $e725)
+ (or $e2538 (not $e2506) $e2932)
+ (or (not $e916) $e1343 $e2553)
+ (or $e1172 (not $e2410) (not $e2869))
+ (or (not $e1752) $e793 (not $e2224))
+ (or $e1079 (not $e1613) $e2223)
+ (or (not $e2214) (not $e804) $e1940)
+ (or (not $e2897) (not $e1620) (not $e1921))
+ (or (not $e2768) (not $e1027) $e1817)
+ (or $e912 $e851 $e1580)
+ (or (not $e2056) (not $e1803) (not $e1334))
+ (or (not $e1213) (not $e682) (not $e1862))
+ (or $e2783 (not $e733) $e793)
+ (or (not $e2517) (not $e1530) (not $e2230))
+ (or (not $e1847) $e718 (not $e2220))
+ (or (not $e2894) $e2480 (not $e1895))
+ (or (not $e738) (not $e2875) (not $e1367))
+ (or $e2570 (not $e2468) (not $e1742))
+ (or $e2392 $e1532 $e2373)
+ (or $e1646 (not $e1148) (not $e1999))
+ (or (not $e2836) (not $e1950) (not $e1751))
+ (or (not $e2157) (not $e810) $e967)
+ (or (not $e1737) $e2373 $e2241)
+ (or $e2595 $e1223 $e981)
+ (or $e1538 (not $e1080) (not $e912))
+ (or $e2799 (not $e1275) $e2306)
+ (or $e2051 (not $e2946) (not $e1950))
+ (or $e1338 (not $e1280) $e710)
+ (or (not $e2152) $e2052 $e2649)
+ (or $e1959 $e2806 (not $e2111))
+ (or (not $e1596) $e1590 (not $e2514))
+ (or (not $e1470) $e1651 $e1711)
+ (or (not $e705) (not $e2139) $e2649)
+ (or (not $e874) $e797 (not $e1097))
+ (or (not $e2273) $e2841 $e1974)
+ (or $e2674 $e2775 $e1498)
+ (or $e2357 (not $e2522) $e698)
+ (or (not $e2240) $e1681 (not $e1662))
+ (or (not $e2082) $e1606 $e2459)
+ (or $e1941 $e2630 $e2887)
+ (or $e2127 $e1066 $e1685)
+ (or (not $e2206) $e2123 $e1699)
+ (or $e1854 $e1947 (not $e1081))
+ (or (not $e1464) (not $e1627) $e1903)
+ (or (not $e1170) $e1201 $e1623)
+ (or $e1434 $e944 $e1868)
+ (or $e1569 (not $e2621) (not $e2710))
+ (or $e2263 (not $e1735) (not $e2185))
+ (or (not $e1441) $e2602 $e1206)
+ (or (not $e706) (not $e2127) $e2788)
+ (or $e1547 $e2497 (not $e1881))
+ (or (not $e1167) (not $e2494) (not $e966))
+ (or (not $e1218) $e1895 (not $e2366))
+ (or (not $e1193) $e2466 $e1846)
+ (or $e888 (not $e2823) $e1820)
+ (or $e1721 $e1375 $e1403)
+ (or $e1832 $e1791 $e2472)
+ (or (not $e840) (not $e1841) (not $e1946))
+ (or $e1965 (not $e910) (not $e2484))
+ (or $e1545 (not $e1564) (not $e1212))
+ (or $e2821 (not $e1488) $e719)
+ (or (not $e1873) (not $e771) $e696)
+ (or $e1243 $e656 (not $e1433))
+ (or $e1727 $e1187 $e955)
+ (or (not $e1266) $e1189 $e2058)
+ (or (not $e2311) $e1487 $e2445)
+ (or (not $e2914) (not $e1463) (not $e1267))
+ (or $e1893 $e655 $e1128)
+ (or (not $e813) (not $e734) (not $e2339))
+ (or $e1979 (not $e2171) $e2711)
+ (or (not $e1251) (not $e2634) (not $e888))
+ (or (not $e680) $e2152 (not $e2751))
+ (or (not $e2509) $e1466 (not $e1104))
+ (or $e2426 $e2491 (not $e2103))
+ (or $e1412 $e2943 (not $e1455))
+ (or (not $e1907) (not $e1561) $e1430)
+ (or $e1272 (not $e1782) (not $e2182))
+ (or $e2272 (not $e2594) (not $e2552))
+ (or (not $e1131) $e1279 (not $e1583))
+ (or (not $e863) (not $e2506) (not $e1026))
+ (or $e2457 (not $e2780) $e1343)
+ (or $e1197 $e2132 $e957)
+ (or $e2529 $e2697 $e2422)
+ (or (not $e2836) $e2528 (not $e852))
+ (or (not $e2550) $e1146 $e2409)
+ (or $e1463 $e893 (not $e2123))
+ (or $e2110 (not $e727) (not $e2240))
+ (or (not $e1490) (not $e726) (not $e2905))
+ (or (not $e1494) (not $e2405) (not $e2284))
+ (or $e1812 $e1520 (not $e2237))
+ (or (not $e2131) (not $e2431) $e1755)
+ (or $e1429 (not $e2708) $e1357)
+ (or (not $e2206) (not $e1832) (not $e825))
+ (or $e2026 (not $e2232) (not $e2624))
+ (or (not $e1619) (not $e1961) $e979)
+ (or (not $e1699) (not $e2262) (not $e1276))
+ (or (not $e2943) $e2897 $e1216)
+ (or (not $e1213) $e2843 $e2177)
+ (or $e1038 (not $e1994) (not $e1804))
+ (or $e2686 $e1998 (not $e2125))
+ (or $e2007 (not $e2125) $e2431)
+ (or $e1339 (not $e977) (not $e2909))
+ (or (not $e2381) $e2352 (not $e1295))
+ (or (not $e859) $e1640 (not $e1354))
+ (or (not $e1411) $e2673 $e2033)
+ (or (not $e2210) $e1016 (not $e2783))
+ (or (not $e2797) $e729 (not $e2837))
+ (or $e1676 (not $e2643) $e1443)
+ (or $e1239 (not $e901) (not $e1339))
+ (or $e1048 (not $e1091) $e2532)
+ (or (not $e1879) $e1362 (not $e808))
+ (or $e1532 (not $e673) $e2596)
+ (or $e2360 $e1363 (not $e1652))
+ (or (not $e2870) (not $e2867) (not $e1641))
+ (or $e2129 $e1604 $e2508)
+ (or (not $e2786) (not $e1878) $e1871)
+ (or $e1042 (not $e2575) (not $e2824))
+ (or (not $e2678) $e1628 (not $e1811))
+ (or $e2631 (not $e1033) $e1919)
+ (or $e2938 (not $e2536) (not $e898))
+ (or $e1917 $e1006 $e1830)
+ (or (not $e1329) (not $e2758) (not $e2246))
+ (or (not $e773) (not $e2843) (not $e1703))
+ (or (not $e873) $e2596 $e1453)
+ (or $e886 $e1337 $e2064)
+ (or $e1550 (not $e2710) $e1783)
+ (or $e1151 $e2285 $e1820)
+ (or (not $e1250) (not $e825) $e2233)
+ (or (not $e1647) $e1535 (not $e1361))
+ (or (not $e1952) (not $e1733) (not $e1012))
+ (or $e691 $e2824 $e2027)
+ (or (not $e1466) (not $e2015) $e2927)
+ (or $e721 $e1884 $e997)
+ (or (not $e2511) $e1079 $e709)
+ (or (not $e2394) (not $e1063) (not $e1474))
+ (or (not $e875) $e2492 $e2320)
+ (or $e1430 (not $e2857) $e2234)
+ (or (not $e1087) (not $e2439) $e1766)
+ (or (not $e2044) (not $e2369) $e2122)
+ (or (not $e974) $e687 $e826)
+ (or $e1411 $e692 $e773)
+ (or (not $e2685) $e890 $e2089)
+ (or (not $e2127) $e2131 $e2337)
+ (or $e2518 (not $e2171) (not $e1657))
+ (or (not $e919) (not $e1524) (not $e1224))
+ (or $e2559 (not $e937) $e1825)
+ (or (not $e1838) $e2845 (not $e955))
+ (or (not $e896) $e1351 (not $e871))
+ (or $e696 $e1119 $e2736)
+ (or (not $e1546) $e1565 (not $e2821))
+ (or $e1741 (not $e1670) (not $e2860))
+ (or $e2050 (not $e2442) (not $e1221))
+ (or $e1584 $e2636 (not $e762))
+ (or $e2265 $e1925 $e890)
+ (or (not $e2368) (not $e2842) $e1306)
+ (or (not $e2215) (not $e1238) $e2607)
+ (or (not $e2853) $e2845 $e1488)
+ (or $e1889 $e2672 $e1627)
+ (or (not $e2889) $e1994 $e2585)
+ (or $e2656 (not $e1941) $e2499)
+ (or (not $e2538) (not $e869) $e2732)
+ (or $e1200 (not $e2324) (not $e2015))
+ (or (not $e2112) $e2764 $e1072)
+ (or (not $e1905) (not $e1868) $e1200)
+ (or $e2478 (not $e1898) $e2748)
+ (or (not $e2360) $e937 (not $e1451))
+ (or $e690 $e2939 $e655)
+ (or (not $e911) (not $e1964) $e2729)
+ (or (not $e789) (not $e1951) (not $e1593))
+ (or $e2175 $e2249 (not $e2807))
+ (or $e1664 (not $e2170) $e2519)
+ (or $e1266 (not $e1197) $e1725)
+ (or $e1646 (not $e1421) (not $e1716))
+ (or (not $e2552) $e1323 $e1995)
+ (or $e2626 (not $e1062) $e1335)
+ (or $e1711 (not $e2265) $e2320)
+ (or (not $e785) (not $e1384) $e2064)
+ (or $e1532 (not $e1672) $e1779)
+ (or $e1491 (not $e1498) $e1485)
+ (or $e2351 $e1445 (not $e748))
+ (or $e2937 $e943 (not $e2669))
+ (or (not $e2694) $e1055 $e2067)
+ (or (not $e859) (not $e895) $e1186)
+ (or $e2647 $e1759 (not $e1623))
+ (or (not $e1980) (not $e1400) (not $e1954))
+ (or (not $e2313) $e902 $e1322)
+ (or $e1304 $e1825 (not $e662))
+ (or (not $e2446) (not $e1754) $e1905)
+ (or $e2725 (not $e2775) (not $e1487))
+ (or $e900 $e2864 (not $e884))
+ (or (not $e2576) (not $e2894) (not $e1365))
+ (or (not $e2319) $e2424 (not $e1430))
+ (or $e2100 (not $e2875) $e2427)
+ (or (not $e2423) (not $e2056) $e2810)
+ (or (not $e751) (not $e890) $e2136)
+ (or (not $e1497) $e2437 $e2097)
+ (or (not $e945) $e1275 (not $e773))
+ (or $e2127 $e2901 (not $e2304))
+ (or $e2522 (not $e1821) $e2754)
+ (or (not $e859) (not $e2765) (not $e976))
+ (or (not $e2691) (not $e1039) (not $e1696))
+ (or (not $e878) (not $e1970) $e2648)
+ (or (not $e2288) (not $e1967) (not $e2615))
+ (or (not $e2761) $e1318 $e1142)
+ (or $e1201 (not $e800) $e2020)
+ (or (not $e2353) $e2322 (not $e1733))
+ (or (not $e2571) (not $e2086) (not $e2580))
+ (or $e1148 (not $e1356) $e2527)
+ (or $e2151 $e2130 $e1036)
+ (or $e2846 (not $e1455) $e888)
+ (or $e1841 $e1265 (not $e1242))
+ (or $e1169 $e1940 $e1275)
+ (or $e1169 (not $e2428) $e849)
+ (or $e1752 $e2088 (not $e783))
+ (or $e1465 $e2925 $e686)
+ (or $e1893 (not $e1839) (not $e831))
+ (or $e1671 $e1865 (not $e1029))
+ (or (not $e2140) $e2901 $e1457)
+ (or $e2480 $e891 $e2656)
+ (or (not $e1173) (not $e2668) (not $e1088))
+ (or (not $e2510) (not $e2780) (not $e965))
+ (or (not $e769) (not $e2113) (not $e2256))
+ (or (not $e1908) $e1563 (not $e1684))
+ (or (not $e864) (not $e1094) (not $e814))
+ (or $e2462 $e728 $e1397)
+ (or $e686 $e2759 $e1691)
+ (or $e2818 (not $e1161) (not $e2078))
+ (or (not $e1505) (not $e2815) $e1328)
+ (or $e1087 $e745 (not $e1663))
+ (or (not $e910) $e1235 (not $e2792))
+ (or (not $e2101) $e1500 $e946)
+ (or (not $e730) $e1983 $e2454)
+ (or (not $e1411) (not $e1984) $e815)
+ (or $e1281 $e1354 (not $e905))
+ (or (not $e1577) $e1009 (not $e1456))
+ (or (not $e2486) (not $e1288) (not $e950))
+ (or $e2822 (not $e2338) (not $e2322))
+ (or (not $e977) (not $e924) $e2426)
+ (or (not $e2648) (not $e763) $e2396)
+ (or $e2016 (not $e2544) $e1341)
+ (or $e2330 (not $e2237) (not $e2642))
+ (or $e1715 (not $e2370) (not $e2524))
+ (or (not $e2788) $e1666 $e2244)
+ (or $e2622 $e1393 (not $e1756))
+ (or (not $e2820) (not $e828) (not $e1222))
+ (or $e884 $e1944 (not $e2209))
+ (or (not $e2829) (not $e2414) $e868)
+ (or (not $e989) (not $e1219) $e833)
+ (or $e2086 $e1208 (not $e2785))
+ (or $e2341 (not $e1210) (not $e2939))
+ (or (not $e2794) (not $e845) $e917)
+ (or (not $e1875) (not $e1447) $e1714)
+ (or (not $e1052) (not $e1070) (not $e2599))
+ (or (not $e2151) (not $e1691) $e2592)
+ (or (not $e1264) $e941 (not $e2441))
+ (or (not $e1727) $e1907 $e1694)
+ (or (not $e2793) (not $e1964) $e2343)
+ (or (not $e1696) (not $e1241) $e1508)
+ (or (not $e1370) (not $e728) (not $e1697))
+ (or (not $e743) (not $e920) $e2370)
+))
+$e2947
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) [...]
+
diff --git a/test/regress/regress1/bv/fuzz38.smt b/test/regress/regress1/bv/fuzz38.smt
new file mode 100644
index 0000000..39ebe9e
--- /dev/null
+++ b/test/regress/regress1/bv/fuzz38.smt
@@ -0,0 +1,191 @@
+(benchmark fuzzsmt
+:logic QF_BV
+:status unsat
+:extrafuns ((v0 BitVec[1]))
+:extrafuns ((v1 BitVec[1]))
+:extrafuns ((v2 BitVec[14]))
+:extrafuns ((v3 BitVec[4]))
+:extrafuns ((v4 BitVec[1]))
+:formula
+(let (?e5 bv416[10])
+(let (?e6 (concat v3 v1))
+(let (?e7 (bvudiv (sign_extend[9] ?e6) v2))
+(let (?e8 (ite (bvsgt ?e6 ?e6) bv1[1] bv0[1]))
+(let (?e9 (bvcomp (sign_extend[13] v0) v2))
+(let (?e10 (bvshl ?e5 (zero_extend[9] v1)))
+(let (?e11 (ite (bvsgt (zero_extend[4] ?e5) ?e7) bv1[1] bv0[1]))
+(let (?e12 (ite (bvsgt ?e10 ?e10) bv1[1] bv0[1]))
+(let (?e13 (bvudiv (sign_extend[9] ?e11) ?e10))
+(let (?e14 (bvxnor (sign_extend[3] ?e12) v3))
+(let (?e15 (bvmul ?e5 (zero_extend[9] ?e12)))
+(let (?e16 (bvmul (sign_extend[9] v1) ?e15))
+(let (?e17 (bvnand (zero_extend[13] ?e11) ?e7))
+(let (?e18 (ite (distinct ?e7 (zero_extend[13] ?e11)) bv1[1] bv0[1]))
+(let (?e19 (bvsrem (sign_extend[13] v0) v2))
+(let (?e20 (bvudiv (sign_extend[4] ?e5) ?e19))
+(let (?e21 (ite (bvsgt (zero_extend[13] v0) ?e17) bv1[1] bv0[1]))
+(let (?e22 (rotate_left[0] v1))
+(let (?e23 (ite (= ?e13 (sign_extend[6] ?e14)) bv1[1] bv0[1]))
+(let (?e24 (bvurem (sign_extend[13] ?e21) v2))
+(let (?e25 (bvshl ?e17 (sign_extend[13] v1)))
+(let (?e26 (bvsdiv (zero_extend[4] ?e16) ?e24))
+(let (?e27 (ite (bvsgt (zero_extend[3] v0) v3) bv1[1] bv0[1]))
+(let (?e28 (zero_extend[1] ?e7))
+(let (?e29 (bvnor ?e16 (sign_extend[9] ?e18)))
+(let (?e30 (bvcomp ?e10 ?e29))
+(let (?e31 (bvsrem (zero_extend[9] v4) ?e16))
+(flet ($e32 (distinct ?e24 (zero_extend[4] ?e5)))
+(flet ($e33 (bvule (sign_extend[6] v3) ?e31))
+(flet ($e34 (bvsge ?e10 ?e31))
+(flet ($e35 (bvsgt ?e26 (sign_extend[4] ?e13)))
+(flet ($e36 (= ?e31 (sign_extend[9] ?e12)))
+(flet ($e37 (bvule ?e18 ?e30))
+(flet ($e38 (bvult ?e20 (zero_extend[13] v1)))
+(flet ($e39 (bvuge ?e17 (zero_extend[13] ?e11)))
+(flet ($e40 (bvult (zero_extend[13] v0) ?e24))
+(flet ($e41 (bvugt ?e19 ?e24))
+(flet ($e42 (= ?e20 ?e7))
+(flet ($e43 (bvsge (zero_extend[13] v4) ?e24))
+(flet ($e44 (bvuge ?e7 v2))
+(flet ($e45 (bvugt ?e24 (zero_extend[13] ?e22)))
+(flet ($e46 (bvslt (sign_extend[13] ?e8) ?e25))
+(flet ($e47 (bvult ?e28 (sign_extend[5] ?e5)))
+(flet ($e48 (bvsle (sign_extend[4] ?e31) ?e25))
+(flet ($e49 (bvslt ?e6 (zero_extend[4] ?e9)))
+(flet ($e50 (bvsge (sign_extend[3] v4) v3))
+(flet ($e51 (bvsle v2 (sign_extend[13] ?e9)))
+(flet ($e52 (= ?e6 (zero_extend[1] v3)))
+(flet ($e53 (bvslt ?e17 (zero_extend[13] ?e18)))
+(flet ($e54 (distinct ?e25 (sign_extend[13] ?e22)))
+(flet ($e55 (bvuge ?e5 (zero_extend[9] ?e18)))
+(flet ($e56 (distinct ?e17 (sign_extend[13] ?e9)))
+(flet ($e57 (bvsgt (sign_extend[13] ?e22) ?e20))
+(flet ($e58 (distinct ?e11 ?e22))
+(flet ($e59 (distinct ?e10 ?e31))
+(flet ($e60 (bvult v3 (zero_extend[3] ?e27)))
+(flet ($e61 (distinct v2 (zero_extend[13] ?e11)))
+(flet ($e62 (bvsge ?e17 (zero_extend[4] ?e29)))
+(flet ($e63 (bvugt (zero_extend[4] ?e27) ?e6))
+(flet ($e64 (= ?e13 (zero_extend[9] ?e21)))
+(flet ($e65 (bvule (sign_extend[5] ?e15) ?e28))
+(flet ($e66 (distinct v3 (zero_extend[3] ?e11)))
+(flet ($e67 (bvslt ?e24 (zero_extend[13] ?e11)))
+(flet ($e68 (bvult (sign_extend[9] ?e23) ?e10))
+(flet ($e69 (bvsge v0 ?e27))
+(flet ($e70 (bvuge ?e7 (zero_extend[4] ?e10)))
+(flet ($e71 (distinct v0 ?e12))
+(flet ($e72 (= ?e23 ?e23))
+(flet ($e73 (bvuge ?e19 (sign_extend[13] ?e11)))
+(flet ($e74 (distinct (zero_extend[13] ?e21) ?e7))
+(flet ($e75 (bvuge ?e25 ?e26))
+(flet ($e76 (bvugt ?e17 (sign_extend[13] v1)))
+(flet ($e77 (= (zero_extend[13] ?e18) ?e20))
+(flet ($e78 (bvule (sign_extend[5] ?e29) ?e28))
+(flet ($e79 (bvugt ?e23 ?e23))
+(flet ($e80 (distinct ?e5 ?e31))
+(flet ($e81 (= ?e5 (sign_extend[9] v4)))
+(flet ($e82 (distinct (sign_extend[9] ?e21) ?e5))
+(flet ($e83 (bvsgt v4 v4))
+(flet ($e84 (bvule (zero_extend[13] ?e22) ?e7))
+(flet ($e85 (bvsge (zero_extend[9] v4) ?e16))
+(flet ($e86 (bvuge ?e28 (sign_extend[5] ?e31)))
+(flet ($e87 (bvslt ?e5 (sign_extend[6] v3)))
+(flet ($e88 (= ?e28 (zero_extend[14] ?e22)))
+(flet ($e89 (distinct (sign_extend[13] ?e27) ?e26))
+(flet ($e90 (distinct ?e25 (sign_extend[13] ?e12)))
+(flet ($e91 (= ?e13 (sign_extend[9] ?e21)))
+(flet ($e92 (bvult (zero_extend[13] ?e8) ?e26))
+(flet ($e93 (= ?e29 ?e13))
+(flet ($e94 (distinct (zero_extend[4] ?e31) ?e19))
+(flet ($e95 (= ?e5 ?e29))
+(flet ($e96 (bvule ?e5 (sign_extend[9] ?e11)))
+(flet ($e97 (distinct v0 ?e8))
+(flet ($e98 (bvult ?e7 ?e25))
+(flet ($e99 (bvsge ?e13 ?e5))
+(flet ($e100 (bvuge (zero_extend[5] ?e6) ?e29))
+(flet ($e101 (= ?e24 (zero_extend[13] ?e11)))
+(flet ($e102 (bvsgt ?e20 ?e25))
+(flet ($e103 (bvsle ?e9 v4))
+(flet ($e104 (bvult ?e8 v1))
+(flet ($e105 (bvslt (zero_extend[3] v1) ?e14))
+(flet ($e106 (not $e62))
+(flet ($e107 (or $e101 $e44))
+(flet ($e108 (xor $e86 $e85))
+(flet ($e109 (iff $e98 $e52))
+(flet ($e110 (or $e72 $e100))
+(flet ($e111 (if_then_else $e47 $e90 $e103))
+(flet ($e112 (implies $e94 $e99))
+(flet ($e113 (xor $e108 $e89))
+(flet ($e114 (and $e80 $e74))
+(flet ($e115 (xor $e70 $e69))
+(flet ($e116 (or $e82 $e112))
+(flet ($e117 (or $e81 $e102))
+(flet ($e118 (or $e56 $e92))
+(flet ($e119 (iff $e97 $e53))
+(flet ($e120 (implies $e79 $e73))
+(flet ($e121 (if_then_else $e65 $e107 $e37))
+(flet ($e122 (iff $e96 $e104))
+(flet ($e123 (not $e114))
+(flet ($e124 (or $e91 $e105))
+(flet ($e125 (iff $e59 $e116))
+(flet ($e126 (iff $e51 $e93))
+(flet ($e127 (iff $e78 $e71))
+(flet ($e128 (or $e67 $e61))
+(flet ($e129 (and $e87 $e45))
+(flet ($e130 (if_then_else $e121 $e50 $e75))
+(flet ($e131 (xor $e117 $e126))
+(flet ($e132 (or $e43 $e88))
+(flet ($e133 (and $e125 $e76))
+(flet ($e134 (implies $e58 $e68))
+(flet ($e135 (iff $e54 $e111))
+(flet ($e136 (iff $e131 $e64))
+(flet ($e137 (iff $e36 $e132))
+(flet ($e138 (and $e55 $e122))
+(flet ($e139 (xor $e83 $e127))
+(flet ($e140 (or $e77 $e123))
+(flet ($e141 (or $e138 $e139))
+(flet ($e142 (if_then_else $e106 $e129 $e41))
+(flet ($e143 (xor $e133 $e119))
+(flet ($e144 (if_then_else $e49 $e63 $e141))
+(flet ($e145 (if_then_else $e140 $e137 $e118))
+(flet ($e146 (not $e109))
+(flet ($e147 (xor $e146 $e128))
+(flet ($e148 (xor $e115 $e142))
+(flet ($e149 (if_then_else $e95 $e110 $e35))
+(flet ($e150 (implies $e57 $e84))
+(flet ($e151 (implies $e113 $e120))
+(flet ($e152 (if_then_else $e144 $e145 $e147))
+(flet ($e153 (implies $e134 $e46))
+(flet ($e154 (if_then_else $e136 $e136 $e153))
+(flet ($e155 (iff $e39 $e34))
+(flet ($e156 (not $e40))
+(flet ($e157 (iff $e154 $e32))
+(flet ($e158 (xor $e149 $e151))
+(flet ($e159 (not $e156))
+(flet ($e160 (iff $e42 $e60))
+(flet ($e161 (if_then_else $e148 $e159 $e150))
+(flet ($e162 (xor $e66 $e152))
+(flet ($e163 (iff $e38 $e48))
+(flet ($e164 (if_then_else $e135 $e130 $e124))
+(flet ($e165 (and $e157 $e160))
+(flet ($e166 (not $e143))
+(flet ($e167 (iff $e161 $e158))
+(flet ($e168 (or $e165 $e155))
+(flet ($e169 (iff $e168 $e167))
+(flet ($e170 (not $e163))
+(flet ($e171 (if_then_else $e169 $e164 $e164))
+(flet ($e172 (and $e171 $e162))
+(flet ($e173 (and $e166 $e172))
+(flet ($e174 (if_then_else $e173 $e170 $e173))
+(flet ($e175 (iff $e33 $e174))
+(flet ($e176 (and $e175 (not (= ?e10 bv0[10]))))
+(flet ($e177 (and $e176 (not (= ?e16 bv0[10]))))
+(flet ($e178 (and $e177 (not (= ?e16 (bvnot bv0[10])))))
+(flet ($e179 (and $e178 (not (= ?e24 bv0[14]))))
+(flet ($e180 (and $e179 (not (= ?e24 (bvnot bv0[14])))))
+(flet ($e181 (and $e180 (not (= v2 bv0[14]))))
+(flet ($e182 (and $e181 (not (= v2 (bvnot bv0[14])))))
+(flet ($e183 (and $e182 (not (= ?e19 bv0[14]))))
+$e183
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress1/datatypes/Makefile.am b/test/regress/regress1/datatypes/Makefile.am
new file mode 100644
index 0000000..a9d13f7
--- /dev/null
+++ b/test/regress/regress1/datatypes/Makefile.am
@@ -0,0 +1,30 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	manos-model.smt2
+
+EXTRA_DIST = $(TESTS)
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
diff --git a/test/regress/regress1/datatypes/Makefile.in b/test/regress/regress1/datatypes/Makefile.in
new file mode 100644
index 0000000..1310fc7
--- /dev/null
+++ b/test/regress/regress1/datatypes/Makefile.in
@@ -0,0 +1,986 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress1/datatypes
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	manos-model.smt2
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress1/datatypes/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress1/datatypes/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+manos-model.smt2.log: manos-model.smt2
+	@p='manos-model.smt2'; \
+	b='manos-model.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress1/datatypes/manos-model.smt2 b/test/regress/regress1/datatypes/manos-model.smt2
new file mode 100644
index 0000000..4ade711
--- /dev/null
+++ b/test/regress/regress1/datatypes/manos-model.smt2
@@ -0,0 +1,67 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-datatypes () ( (tuple2!879 (tuple2!879!880 (_1!881 Int) (_2!882 Int))) ))
+
+(declare-fun p1!207 () tuple2!879)
+
+(declare-fun p2!208 () tuple2!879)
+
+(declare-fun p3!209 () tuple2!879)
+
+(declare-fun reduce!206 (tuple2!879 tuple2!879) tuple2!879)
+
+(assert (not (= 
+    (reduce!206 p1!207 (reduce!206 p2!208 p3!209)) 
+    (reduce!206 (reduce!206 p1!207 p2!208) p3!209)
+)))
+
+(assert (= 
+    (reduce!206 p1!207 (reduce!206 p2!208 p3!209)) 
+    (ite 
+        (>= (_1!881 p1!207) (_2!882 (reduce!206 p2!208 p3!209))) 
+        (tuple2!879!880 
+            (+ (- (_1!881 p1!207) (_2!882 (reduce!206 p2!208 p3!209))) (_1!881 (reduce!206 p2!208 p3!209))) 
+            (_2!882 p1!207)
+        )
+        (tuple2!879!880 
+            (_1!881 (reduce!206 p2!208 p3!209)) 
+            (+ (- (_2!882 (reduce!206 p2!208 p3!209)) (_1!881 p1!207)) (_2!882 p1!207))
+        )
+    )
+))
+
+(assert (= 
+    (reduce!206 p2!208 p3!209) 
+    (ite 
+        (>= (_1!881 p2!208) (_2!882 p3!209))
+        (tuple2!879!880 (+ (- (_1!881 p2!208) (_2!882 p3!209)) (_1!881 p3!209)) (_2!882 p2!208))
+        (tuple2!879!880 (_1!881 p3!209) (+ (- (_2!882 p3!209) (_1!881 p2!208)) (_2!882 p2!208)))
+    )
+))
+
+(assert (= 
+    (reduce!206 (reduce!206 p1!207 p2!208) p3!209) 
+    (ite 
+        (>= (_1!881 (reduce!206 p1!207 p2!208)) (_2!882 p3!209)) 
+        (tuple2!879!880 
+            (+ (- (_1!881 (reduce!206 p1!207 p2!208)) (_2!882 p3!209)) (_1!881 p3!209)) 
+            (_2!882 (reduce!206 p1!207 p2!208))
+        ) 
+        (tuple2!879!880 
+            (_1!881 p3!209) 
+            (+ (- (_2!882 p3!209) (_1!881 (reduce!206 p1!207 p2!208))) (_2!882 (reduce!206 p1!207 p2!208)))
+        )
+    )
+))
+
+(assert (= 
+    (reduce!206 p1!207 p2!208) 
+    (ite 
+        (>= (_1!881 p1!207) (_2!882 p2!208)) 
+        (tuple2!879!880 (+ (- (_1!881 p1!207) (_2!882 p2!208)) (_1!881 p2!208)) (_2!882 p1!207)) 
+        (tuple2!879!880 (_1!881 p2!208) (+ (- (_2!882 p2!208) (_1!881 p1!207)) (_2!882 p1!207)))
+    )
+))
+
+(check-sat)
+
diff --git a/test/regress/regress1/decision/Makefile.am b/test/regress/regress1/decision/Makefile.am
new file mode 100644
index 0000000..8317536
--- /dev/null
+++ b/test/regress/regress1/decision/Makefile.am
@@ -0,0 +1,30 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	error3.smt
+
+EXTRA_DIST = $(TESTS)
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
diff --git a/test/regress/regress1/decision/Makefile.in b/test/regress/regress1/decision/Makefile.in
new file mode 100644
index 0000000..680b72d
--- /dev/null
+++ b/test/regress/regress1/decision/Makefile.in
@@ -0,0 +1,986 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress1/decision
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	error3.smt
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress1/decision/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress1/decision/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+error3.smt.log: error3.smt
+	@p='error3.smt'; \
+	b='error3.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress1/decision/error3.smt b/test/regress/regress1/decision/error3.smt
new file mode 100644
index 0000000..36c409f
--- /dev/null
+++ b/test/regress/regress1/decision/error3.smt
@@ -0,0 +1,138 @@
+(benchmark fuzzsmt
+:logic QF_AUFBV
+:status unsat
+:extrafuns ((v0 BitVec[15]))
+:extrafuns ((v1 BitVec[3]))
+:extrafuns ((a2 Array[13:3]))
+:extrafuns ((a3 Array[16:5]))
+:formula
+(let (?e4 bv228[11])
+(let (?e5 (ite (bvsgt v1 v1) bv1[1] bv0[1]))
+(let (?e6 (ite (bvslt (sign_extend[2] ?e5) v1) bv1[1] bv0[1]))
+(let (?e7 (bvnot ?e6))
+(let (?e8 (ite (bvuge v0 (zero_extend[14] ?e6)) bv1[1] bv0[1]))
+(let (?e9 (bvmul (zero_extend[10] ?e7) ?e4))
+(let (?e10 (select a2 (zero_extend[12] ?e6)))
+(let (?e11 (select a2 (extract[13:1] v0)))
+(let (?e12 (select a2 (extract[13:1] v0)))
+(let (?e13 (select a2 (zero_extend[2] ?e4)))
+(let (?e14 (ite (bvuge ?e9 (zero_extend[10] ?e5)) bv1[1] bv0[1]))
+(let (?e15 (repeat[2] ?e7))
+(let (?e16 (bvshl (sign_extend[2] ?e6) ?e11))
+(let (?e17 (bvsmod (zero_extend[8] ?e16) ?e9))
+(let (?e18 (bvudiv (sign_extend[2] ?e6) ?e16))
+(let (?e19 (bvlshr v0 (zero_extend[4] ?e17)))
+(let (?e20 (rotate_left[5] ?e4))
+(let (?e21 (ite (= ?e6 ?e5) bv1[1] bv0[1]))
+(let (?e22 (ite (bvsgt ?e20 ?e9) bv1[1] bv0[1]))
+(let (?e23 (bvor ?e20 (sign_extend[10] ?e14)))
+(let (?e24 (bvxnor ?e17 (sign_extend[10] ?e7)))
+(let (?e25 (repeat[14] ?e8))
+(let (?e26 (ite (bvsge ?e12 (sign_extend[2] ?e14)) bv1[1] bv0[1]))
+(let (?e27 (bvshl ?e13 (zero_extend[2] ?e5)))
+(let (?e28 (zero_extend[3] ?e17))
+(let (?e29 (bvxnor ?e22 ?e8))
+(let (?e30 (concat v1 ?e8))
+(let (?e31 (bvsmod (sign_extend[4] ?e24) ?e19))
+(let (?e32 (sign_extend[1] ?e31))
+(let (?e33 (ite (bvult ?e10 (sign_extend[1] ?e15)) bv1[1] bv0[1]))
+(flet ($e34 (bvult ?e28 (sign_extend[11] ?e11)))
+(flet ($e35 (bvule ?e25 (sign_extend[13] ?e7)))
+(flet ($e36 (bvuge (zero_extend[8] ?e12) ?e20))
+(flet ($e37 (bvsgt ?e30 (sign_extend[1] v1)))
+(flet ($e38 (= (zero_extend[4] ?e17) v0))
+(flet ($e39 (bvult ?e19 (zero_extend[1] ?e25)))
+(flet ($e40 (bvugt ?e24 (zero_extend[8] ?e11)))
+(flet ($e41 (bvsle (sign_extend[14] ?e21) ?e31))
+(flet ($e42 (bvsge (zero_extend[2] ?e22) ?e16))
+(flet ($e43 (bvugt ?e33 ?e7))
+(flet ($e44 (bvsle (sign_extend[2] ?e22) ?e10))
+(flet ($e45 (= ?e16 (sign_extend[2] ?e21)))
+(flet ($e46 (bvule ?e11 (sign_extend[2] ?e7)))
+(flet ($e47 (bvugt v1 (sign_extend[2] ?e29)))
+(flet ($e48 (bvsgt ?e22 ?e8))
+(flet ($e49 (bvslt (zero_extend[2] ?e14) ?e12))
+(flet ($e50 (bvule ?e10 (zero_extend[2] ?e26)))
+(flet ($e51 (bvslt v0 (zero_extend[4] ?e24)))
+(flet ($e52 (bvugt v0 (zero_extend[14] ?e26)))
+(flet ($e53 (= (sign_extend[4] ?e4) ?e31))
+(flet ($e54 (bvsle ?e13 (zero_extend[2] ?e29)))
+(flet ($e55 (bvult ?e20 (zero_extend[8] ?e12)))
+(flet ($e56 (bvugt ?e6 ?e5))
+(flet ($e57 (= ?e28 ?e28))
+(flet ($e58 (bvuge ?e9 (zero_extend[7] ?e30)))
+(flet ($e59 (bvsge ?e28 (zero_extend[13] ?e5)))
+(flet ($e60 (bvsge ?e20 (sign_extend[8] ?e27)))
+(flet ($e61 (bvsgt (sign_extend[12] ?e27) ?e31))
+(flet ($e62 (bvule ?e16 ?e12))
+(flet ($e63 (bvslt ?e27 (sign_extend[2] ?e33)))
+(flet ($e64 (bvuge (sign_extend[14] ?e26) ?e31))
+(flet ($e65 (bvsgt v0 (zero_extend[1] ?e28)))
+(flet ($e66 (bvsgt ?e24 ?e17))
+(flet ($e67 (bvugt ?e23 (sign_extend[8] ?e18)))
+(flet ($e68 (distinct ?e24 (zero_extend[10] ?e22)))
+(flet ($e69 (bvuge (sign_extend[2] ?e21) ?e12))
+(flet ($e70 (bvuge ?e17 (zero_extend[8] ?e18)))
+(flet ($e71 (distinct (sign_extend[4] ?e17) ?e31))
+(flet ($e72 (bvsge ?e5 ?e6))
+(flet ($e73 (bvsle (zero_extend[10] ?e6) ?e4))
+(flet ($e74 (bvult ?e32 (sign_extend[15] ?e14)))
+(flet ($e75 (= ?e6 ?e7))
+(flet ($e76 (bvule ?e31 (zero_extend[12] ?e18)))
+(flet ($e77 (bvult ?e23 (zero_extend[9] ?e15)))
+(flet ($e78 (iff $e44 $e34))
+(flet ($e79 (iff $e73 $e41))
+(flet ($e80 (xor $e42 $e61))
+(flet ($e81 (and $e66 $e46))
+(flet ($e82 (not $e81))
+(flet ($e83 (or $e62 $e58))
+(flet ($e84 (implies $e82 $e53))
+(flet ($e85 (or $e69 $e50))
+(flet ($e86 (iff $e52 $e76))
+(flet ($e87 (or $e68 $e43))
+(flet ($e88 (iff $e48 $e75))
+(flet ($e89 (or $e74 $e60))
+(flet ($e90 (xor $e64 $e49))
+(flet ($e91 (implies $e59 $e45))
+(flet ($e92 (or $e91 $e80))
+(flet ($e93 (and $e55 $e85))
+(flet ($e94 (or $e40 $e78))
+(flet ($e95 (xor $e51 $e89))
+(flet ($e96 (implies $e87 $e38))
+(flet ($e97 (not $e57))
+(flet ($e98 (or $e97 $e92))
+(flet ($e99 (or $e98 $e84))
+(flet ($e100 (iff $e35 $e95))
+(flet ($e101 (if_then_else $e36 $e47 $e99))
+(flet ($e102 (xor $e37 $e101))
+(flet ($e103 (iff $e86 $e83))
+(flet ($e104 (implies $e63 $e103))
+(flet ($e105 (iff $e102 $e94))
+(flet ($e106 (if_then_else $e56 $e79 $e56))
+(flet ($e107 (iff $e104 $e54))
+(flet ($e108 (or $e77 $e77))
+(flet ($e109 (implies $e70 $e70))
+(flet ($e110 (implies $e105 $e39))
+(flet ($e111 (or $e88 $e106))
+(flet ($e112 (if_then_else $e100 $e65 $e110))
+(flet ($e113 (and $e72 $e67))
+(flet ($e114 (or $e109 $e111))
+(flet ($e115 (implies $e112 $e71))
+(flet ($e116 (not $e108))
+(flet ($e117 (not $e115))
+(flet ($e118 (implies $e114 $e113))
+(flet ($e119 (and $e90 $e117))
+(flet ($e120 (or $e119 $e107))
+(flet ($e121 (if_then_else $e116 $e93 $e96))
+(flet ($e122 (not $e120))
+(flet ($e123 (implies $e121 $e121))
+(flet ($e124 (not $e123))
+(flet ($e125 (if_then_else $e124 $e122 $e118))
+(flet ($e126 (and $e125 (not (= ?e19 bv0[15]))))
+(flet ($e127 (and $e126 (not (= ?e19 (bvnot bv0[15])))))
+(flet ($e128 (and $e127 (not (= ?e9 bv0[11]))))
+(flet ($e129 (and $e128 (not (= ?e9 (bvnot bv0[11])))))
+(flet ($e130 (and $e129 (not (= ?e16 bv0[3]))))
+$e130
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress1/fmf/ForElimination-scala-9.smt2 b/test/regress/regress1/fmf/ForElimination-scala-9.smt2
new file mode 100644
index 0000000..36bb915
--- /dev/null
+++ b/test/regress/regress1/fmf/ForElimination-scala-9.smt2
@@ -0,0 +1,31 @@
+; COMMAND-LINE: --finite-model-find --uf-ss=no-minimal
+; EXPECT: unsat
+(set-logic ALL_SUPPORTED)
+(declare-datatypes () ((Statement!1556 (Assign!1557 (varID!1558 (_ BitVec 32)) (expr!1559 Expression!1578)) (Block!1560 (body!1561 List!1617)) (For!1562 (init!1563 Statement!1556) (expr!1564 Expression!1578) (step!1565 Statement!1556) (body!1566 Statement!1556)) (IfThenElse!1567 (expr!1568 Expression!1578) (then!1569 Statement!1556) (elze!1570 Statement!1556)) (Print!1571 (msg!1572 (_ BitVec 32)) (varID!1573 (_ BitVec 32))) (Skip!1574) (While!1575 (expr!1576 Expression!1578) (body!1577 S [...]
+(Expression!1578 (And!1579 (lhs!1580 Expression!1578) (rhs!1581 Expression!1578)) (Division!1582 (lhs!1583 Expression!1578) (rhs!1584 Expression!1578)) (Equals!1585 (lhs!1586 Expression!1578) (rhs!1587 Expression!1578)) (GreaterThan!1588 (lhs!1589 Expression!1578) (rhs!1590 Expression!1578)) (IntLiteral!1591 (value!1592 (_ BitVec 32))) (LessThan!1593 (lhs!1594 Expression!1578) (rhs!1595 Expression!1578)) (Minus!1596 (lhs!1597 Expression!1578) (rhs!1598 Expression!1578)) (Modulo!1599 (lhs [...]
+(List!1617 (Cons!1618 (head!1619 Statement!1556) (tail!1620 List!1617)) (Nil!1621))
+))
+(declare-fun error_value!1622 () Bool)
+(declare-fun ifree (Statement!1556) Bool)
+(declare-fun isForFreeList!223 (List!1617) Bool)
+(declare-fun error_value!1623 () List!1617)
+(declare-fun efll (List!1617) List!1617)
+(declare-fun efl (Statement!1556) Statement!1556)
+(declare-sort I_ifree 0)
+(set-info :notes "ifree_arg_0_1 is op created during fun def fmf")
+(declare-fun ifree_arg_0_1 (I_ifree) Statement!1556)
+(declare-sort I_isForFreeList!223 0)
+(set-info :notes "isForFreeList!223_arg_0_2 is op created during fun def fmf")
+(declare-fun isForFreeList!223_arg_0_2 (I_isForFreeList!223) List!1617)
+(declare-sort I_efll 0)
+(set-info :notes "efll_arg_0_3 is op created during fun def fmf")
+(declare-fun efll_arg_0_3 (I_efll) List!1617)
+(declare-sort I_efl 0)
+(set-info :notes "efl_arg_0_4 is op created during fun def fmf")
+(declare-fun efl_arg_0_4 (I_efl) Statement!1556)
+(assert (forall ((?i I_ifree)) (and (= (ifree (ifree_arg_0_1 ?i)) (ite (is-Block!1560 (ifree_arg_0_1 ?i)) (isForFreeList!223 (body!1561 (ifree_arg_0_1 ?i))) (ite (is-IfThenElse!1567 (ifree_arg_0_1 ?i)) (and (ifree (elze!1570 (ifree_arg_0_1 ?i))) (ifree (then!1569 (ifree_arg_0_1 ?i)))) (ite (is-While!1575 (ifree_arg_0_1 ?i)) (ifree (body!1577 (ifree_arg_0_1 ?i))) (not (is-For!1562 (ifree_arg_0_1 ?i))))))) (ite (is-Block!1560 (ifree_arg_0_1 ?i)) (not (forall ((?z I_isForFreeList!223)) (not [...]
+(assert (forall ((?i I_isForFreeList!223)) (and (= (isForFreeList!223 (isForFreeList!223_arg_0_2 ?i)) (ite (is-Nil!1621 (isForFreeList!223_arg_0_2 ?i)) true (ite (is-Cons!1618 (isForFreeList!223_arg_0_2 ?i)) (and (isForFreeList!223 (tail!1620 (isForFreeList!223_arg_0_2 ?i))) (ifree (head!1619 (isForFreeList!223_arg_0_2 ?i)))) error_value!1622))) (ite (is-Nil!1621 (isForFreeList!223_arg_0_2 ?i)) true (ite (is-Cons!1618 (isForFreeList!223_arg_0_2 ?i)) (and (not (forall ((?z I_isForFreeList [...]
+(assert (forall ((?i I_efll)) (and (= (efll (efll_arg_0_3 ?i)) (ite (is-Nil!1621 (efll_arg_0_3 ?i)) Nil!1621 (ite (is-Cons!1618 (efll_arg_0_3 ?i)) (Cons!1618 (efl (head!1619 (efll_arg_0_3 ?i))) (efll (tail!1620 (efll_arg_0_3 ?i)))) error_value!1623))) (ite (is-Nil!1621 (efll_arg_0_3 ?i)) true (ite (is-Cons!1618 (efll_arg_0_3 ?i)) (and (not (forall ((?z I_efl)) (not (= (efl_arg_0_4 ?z) (head!1619 (efll_arg_0_3 ?i)))) )) (not (forall ((?z I_efll)) (not (= (efll_arg_0_3 ?z) (tail!1620 (efll [...]
+(assert (forall ((?i I_efl)) (and (= (efl (efl_arg_0_4 ?i)) (ite (is-Block!1560 (efl_arg_0_4 ?i)) (Block!1560 (efll (body!1561 (efl_arg_0_4 ?i)))) (ite (is-IfThenElse!1567 (efl_arg_0_4 ?i)) (IfThenElse!1567 (expr!1568 (efl_arg_0_4 ?i)) (efl (then!1569 (efl_arg_0_4 ?i))) (efl (elze!1570 (efl_arg_0_4 ?i)))) (ite (is-While!1575 (efl_arg_0_4 ?i)) (While!1575 (expr!1576 (efl_arg_0_4 ?i)) (efl (body!1577 (efl_arg_0_4 ?i)))) (ite (is-For!1562 (efl_arg_0_4 ?i)) (Block!1560 (Cons!1618 (efl (init! [...]
+(assert (exists ((stat!216 Statement!1556)) (not (=> (and (and (and (and (is-For!1562 stat!216) (is-For!1562 stat!216)) (and (ifree (ite (is-Block!1560 (init!1563 stat!216)) (Block!1560 (efll (body!1561 (init!1563 stat!216)))) (ite (is-IfThenElse!1567 (init!1563 stat!216)) (IfThenElse!1567 (expr!1568 (init!1563 stat!216)) (efl (then!1569 (init!1563 stat!216))) (efl (elze!1570 (init!1563 stat!216)))) (ite (is-While!1575 (init!1563 stat!216)) (While!1575 (expr!1576 (init!1563 stat!216)) (e [...]
+(check-sat)
diff --git a/test/regress/regress1/fmf/Makefile.am b/test/regress/regress1/fmf/Makefile.am
new file mode 100644
index 0000000..3cb00d6
--- /dev/null
+++ b/test/regress/regress1/fmf/Makefile.am
@@ -0,0 +1,30 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	ForElimination-scala-9.smt2
+
+EXTRA_DIST = $(TESTS)
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
diff --git a/test/regress/regress1/fmf/Makefile.in b/test/regress/regress1/fmf/Makefile.in
new file mode 100644
index 0000000..0b595fd
--- /dev/null
+++ b/test/regress/regress1/fmf/Makefile.in
@@ -0,0 +1,986 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress1/fmf
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	ForElimination-scala-9.smt2
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress1/fmf/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress1/fmf/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+ForElimination-scala-9.smt2.log: ForElimination-scala-9.smt2
+	@p='ForElimination-scala-9.smt2'; \
+	b='ForElimination-scala-9.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress1/lemmas/Makefile.am b/test/regress/regress1/lemmas/Makefile.am
new file mode 100644
index 0000000..d22553d
--- /dev/null
+++ b/test/regress/regress1/lemmas/Makefile.am
@@ -0,0 +1,32 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	clocksynchro_5clocks.main_invar.base.smt \
+	pursuit-safety-8.smt \
+	simple_startup_9nodes.abstract.base.smt
+
+EXTRA_DIST = $(TESTS)
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
diff --git a/test/regress/regress1/lemmas/Makefile.in b/test/regress/regress1/lemmas/Makefile.in
new file mode 100644
index 0000000..08488a8
--- /dev/null
+++ b/test/regress/regress1/lemmas/Makefile.in
@@ -0,0 +1,1002 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress1/lemmas
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	clocksynchro_5clocks.main_invar.base.smt \
+	pursuit-safety-8.smt \
+	simple_startup_9nodes.abstract.base.smt
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress1/lemmas/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress1/lemmas/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+clocksynchro_5clocks.main_invar.base.smt.log: clocksynchro_5clocks.main_invar.base.smt
+	@p='clocksynchro_5clocks.main_invar.base.smt'; \
+	b='clocksynchro_5clocks.main_invar.base.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pursuit-safety-8.smt.log: pursuit-safety-8.smt
+	@p='pursuit-safety-8.smt'; \
+	b='pursuit-safety-8.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple_startup_9nodes.abstract.base.smt.log: simple_startup_9nodes.abstract.base.smt
+	@p='simple_startup_9nodes.abstract.base.smt'; \
+	b='simple_startup_9nodes.abstract.base.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress1/lemmas/clocksynchro_5clocks.main_invar.base.smt b/test/regress/regress1/lemmas/clocksynchro_5clocks.main_invar.base.smt
new file mode 100644
index 0000000..92cc1b0
--- /dev/null
+++ b/test/regress/regress1/lemmas/clocksynchro_5clocks.main_invar.base.smt
@@ -0,0 +1,97 @@
+(benchmark clock_synchro
+  :source { Clock Synchronization. Bruno Dutertre (bruno at csl.sri.com) }
+
+
+  :status unsat
+:category { industrial }
+:difficulty { 0 }
+  :logic QF_LRA
+  
+  :extrafuns ((x_0 Real))
+  :extrafuns ((x_1 Real))
+  :extrafuns ((x_2 Real))
+  :extrafuns ((x_3 Real))
+  :extrafuns ((x_4 Real))
+  :extrafuns ((x_5 Real))
+  :extrafuns ((x_6 Real))
+  :extrafuns ((x_7 Real))
+  :extrafuns ((x_8 Real))
+  :extrafuns ((x_9 Real))
+  :extrafuns ((x_10 Real))
+  :extrafuns ((x_11 Real))
+  :extrafuns ((x_12 Real))
+  :extrafuns ((x_13 Real))
+  :extrafuns ((x_14 Real))
+  :extrafuns ((x_15 Real))
+  :extrafuns ((x_16 Real))
+  :extrafuns ((x_17 Real))
+  :extrafuns ((x_18 Real))
+  :extrafuns ((x_19 Real))
+  :extrafuns ((x_20 Real))
+  :extrafuns ((x_21 Real))
+  :extrafuns ((x_22 Real))
+  :extrafuns ((x_23 Real))
+  :extrafuns ((x_24 Real))
+  :extrafuns ((x_25 Real))
+  :extrafuns ((x_26 Real))
+  :extrafuns ((x_27 Real))
+  :extrafuns ((x_28 Real))
+  :extrafuns ((x_29 Real))
+  :extrafuns ((x_30 Real))
+  :extrafuns ((x_31 Real))
+  :extrafuns ((x_32 Real))
+  :extrafuns ((x_33 Real))
+  :extrafuns ((x_34 Real))
+  :extrafuns ((x_35 Real))
+  :extrafuns ((x_36 Real))
+  :extrafuns ((x_37 Real))
+  :extrafuns ((x_38 Real))
+  :extrafuns ((x_39 Real))
+  :extrafuns ((x_40 Real))
+  :extrafuns ((x_41 Real))
+  :extrafuns ((x_42 Real))
+  :extrafuns ((x_43 Real))
+  :extrafuns ((x_44 Real))
+  :extrafuns ((x_45 Real))
+  :extrafuns ((x_46 Real))
+  :extrafuns ((x_47 Real))
+  :extrafuns ((x_48 Real))
+  :extrafuns ((x_49 Real))
+  :extrafuns ((x_50 Real))
+  :extrafuns ((x_51 Real))
+  :extrafuns ((x_52 Real))
+  :extrafuns ((x_53 Real))
+  :extrafuns ((x_54 Real))
+  :extrafuns ((x_55 Real))
+  :extrafuns ((x_56 Real))
+  :extrafuns ((x_57 Real))
+  :extrafuns ((x_58 Real))
+  :extrafuns ((x_59 Real))
+  :extrafuns ((x_60 Real))
+  :extrafuns ((x_61 Real))
+  :extrafuns ((x_62 Real))
+  :extrafuns ((x_63 Real))
+  :extrafuns ((x_64 Real))
+  :extrafuns ((x_65 Real))
+  :extrafuns ((x_66 Real))
+  :extrafuns ((x_67 Real))
+  :extrafuns ((x_68 Real))
+  :extrafuns ((x_69 Real))
+  :extrafuns ((x_70 Real))
+  :extrafuns ((x_71 Real))
+  :extrafuns ((x_72 Real))
+  :extrafuns ((x_73 Real))
+  :extrafuns ((x_74 Real))
+  :extrafuns ((x_75 Real))
+  :extrafuns ((x_76 Real))
+  :extrafuns ((x_77 Real))
+  :extrafuns ((x_78 Real))
+  :extrafuns ((x_79 Real))
+  :extrafuns ((x_80 Real))
+  :extrafuns ((x_81 Real))
+  :extrafuns ((x_82 Real))
+  :extrafuns ((x_83 Real))
+  :extrafuns ((x_84 Real))
+  :formula
+(flet ($cvcl_30 (= x_37 x_5)) (flet ($cvcl_38 (= x_39 x_1)) (flet ($cvcl_9 (= x_41 x_2)) (flet ($cvcl_16 (= x_42 x_3)) (flet ($cvcl_23 (= x_43 x_4)) (flet ($cvcl_53 (= x_8 x_13)) (flet ($cvcl_48 (not $cvcl_53)) (flet ($cvcl_59 (= x_8 (+ (+ x_13 x_6) x_7))) (flet ($cvcl_54 (= x_9 x_13)) (flet ($cvcl_49 (not $cvcl_54)) (flet ($cvcl_61 (= x_9 (+ (+ x_13 x_6) x_7))) (flet ($cvcl_55 (= x_10 x_13)) (flet ($cvcl_50 (not $cvcl_55)) (flet ($cvcl_63 (= x_10 (+ (+ x_13 x_6) x_7))) (flet ($cvcl_56 ( [...]
+)
diff --git a/test/regress/regress1/lemmas/pursuit-safety-8.smt b/test/regress/regress1/lemmas/pursuit-safety-8.smt
new file mode 100644
index 0000000..5985c50
--- /dev/null
+++ b/test/regress/regress1/lemmas/pursuit-safety-8.smt
@@ -0,0 +1,93 @@
+(benchmark pursuit_safety_8.smt
+  :source {
+SAL benchmark suite.  Created at SRI by Bruno Dutertre, John Rushby, Maria
+Sorea, and Leonardo de Moura.  Contact demoura at csl.sri.com for more
+information.
+
+This benchmark was automatically translated into SMT-LIB format from
+CVC format using CVC Lite
+}
+  :status unsat
+:category { industrial }
+:difficulty { 0 }
+  :logic QF_LRA
+  
+  :extrapreds ((x_0))
+  :extrapreds ((x_1))
+  :extrafuns ((x_2 Real))
+  :extrafuns ((x_3 Real))
+  :extrapreds ((x_4))
+  :extrapreds ((x_5))
+  :extrafuns ((x_6 Real))
+  :extrafuns ((x_7 Real))
+  :extrapreds ((x_8))
+  :extrafuns ((x_9 Real))
+  :extrafuns ((x_10 Real))
+  :extrafuns ((x_11 Real))
+  :extrafuns ((x_12 Real))
+  :extrafuns ((x_13 Real))
+  :extrapreds ((x_14))
+  :extrapreds ((x_15))
+  :extrafuns ((x_16 Real))
+  :extrafuns ((x_17 Real))
+  :extrafuns ((x_18 Real))
+  :extrafuns ((x_19 Real))
+  :extrafuns ((x_20 Real))
+  :extrafuns ((x_21 Real))
+  :extrafuns ((x_22 Real))
+  :extrapreds ((x_23))
+  :extrapreds ((x_24))
+  :extrafuns ((x_25 Real))
+  :extrafuns ((x_26 Real))
+  :extrafuns ((x_27 Real))
+  :extrafuns ((x_28 Real))
+  :extrafuns ((x_29 Real))
+  :extrafuns ((x_30 Real))
+  :extrafuns ((x_31 Real))
+  :extrapreds ((x_32))
+  :extrapreds ((x_33))
+  :extrafuns ((x_34 Real))
+  :extrafuns ((x_35 Real))
+  :extrafuns ((x_36 Real))
+  :extrafuns ((x_37 Real))
+  :extrafuns ((x_38 Real))
+  :extrafuns ((x_39 Real))
+  :extrafuns ((x_40 Real))
+  :extrapreds ((x_41))
+  :extrapreds ((x_42))
+  :extrafuns ((x_43 Real))
+  :extrafuns ((x_44 Real))
+  :extrafuns ((x_45 Real))
+  :extrafuns ((x_46 Real))
+  :extrafuns ((x_47 Real))
+  :extrafuns ((x_48 Real))
+  :extrafuns ((x_49 Real))
+  :extrapreds ((x_50))
+  :extrapreds ((x_51))
+  :extrafuns ((x_52 Real))
+  :extrafuns ((x_53 Real))
+  :extrafuns ((x_54 Real))
+  :extrafuns ((x_55 Real))
+  :extrafuns ((x_56 Real))
+  :extrafuns ((x_57 Real))
+  :extrafuns ((x_58 Real))
+  :extrapreds ((x_59))
+  :extrapreds ((x_60))
+  :extrafuns ((x_61 Real))
+  :extrafuns ((x_62 Real))
+  :extrafuns ((x_63 Real))
+  :extrafuns ((x_64 Real))
+  :extrafuns ((x_65 Real))
+  :extrafuns ((x_66 Real))
+  :extrafuns ((x_67 Real))
+  :extrapreds ((x_68))
+  :extrapreds ((x_69))
+  :extrafuns ((x_70 Real))
+  :extrafuns ((x_71 Real))
+  :extrafuns ((x_72 Real))
+  :extrafuns ((x_73 Real))
+  :extrafuns ((x_74 Real))
+  :extrafuns ((x_75 Real))
+  :formula
+(let (?cvcl_240 20) (let (?cvcl_241 10) (let (?cvcl_249 2) (flet ($cvcl_4 (= x_61 40)) (let (?cvcl_30 (+ x_61 (* x_63 6))) (flet ($cvcl_5 (= x_61 0)) (flet ($cvcl_2 (= x_58 40)) (flet ($cvcl_3 $cvcl_2) (flet ($cvcl_7 (= x_58 0)) (flet ($cvcl_20 $cvcl_7) (flet ($cvcl_14 (< (+ (- (* x_61 5) (* x_58 6)) 40) 0)) (let (?cvcl_33 (+ x_58 (* x_63 5))) (let (?cvcl_31 (+ x_62 x_63)) (flet ($cvcl_11 (= x_62 2)) (flet ($cvcl_8 (= x_67 x_58)) (flet ($cvcl_26 (not x_59)) (flet ($cvcl_43 (and $cvcl_26  [...]
+)
diff --git a/test/regress/regress1/lemmas/simple_startup_9nodes.abstract.base.smt b/test/regress/regress1/lemmas/simple_startup_9nodes.abstract.base.smt
new file mode 100644
index 0000000..506b99b
--- /dev/null
+++ b/test/regress/regress1/lemmas/simple_startup_9nodes.abstract.base.smt
@@ -0,0 +1,128 @@
+(benchmark tta_startup
+  :source { TTA Startup. Bruno Dutertre (bruno at csl.sri.com) }
+
+
+  :status unsat
+:category { industrial }
+:difficulty { 0 }
+  :logic QF_LRA
+  
+  :extrafuns ((x_0 Real))
+  :extrafuns ((x_1 Real))
+  :extrafuns ((x_2 Real))
+  :extrafuns ((x_3 Real))
+  :extrafuns ((x_4 Real))
+  :extrafuns ((x_5 Real))
+  :extrafuns ((x_6 Real))
+  :extrafuns ((x_7 Real))
+  :extrafuns ((x_8 Real))
+  :extrafuns ((x_9 Real))
+  :extrafuns ((x_10 Real))
+  :extrafuns ((x_11 Real))
+  :extrafuns ((x_12 Real))
+  :extrafuns ((x_13 Real))
+  :extrafuns ((x_14 Real))
+  :extrafuns ((x_15 Real))
+  :extrafuns ((x_16 Real))
+  :extrafuns ((x_17 Real))
+  :extrafuns ((x_18 Real))
+  :extrapreds ((x_19))
+  :extrapreds ((x_20))
+  :extrapreds ((x_21))
+  :extrapreds ((x_22))
+  :extrapreds ((x_23))
+  :extrapreds ((x_24))
+  :extrapreds ((x_25))
+  :extrapreds ((x_26))
+  :extrapreds ((x_27))
+  :extrafuns ((x_28 Real))
+  :extrapreds ((x_29))
+  :extrapreds ((x_30))
+  :extrapreds ((x_31))
+  :extrafuns ((x_32 Real))
+  :extrafuns ((x_33 Real))
+  :extrafuns ((x_34 Real))
+  :extrafuns ((x_35 Real))
+  :extrafuns ((x_36 Real))
+  :extrafuns ((x_37 Real))
+  :extrafuns ((x_38 Real))
+  :extrafuns ((x_39 Real))
+  :extrafuns ((x_40 Real))
+  :extrafuns ((x_41 Real))
+  :extrafuns ((x_42 Real))
+  :extrafuns ((x_43 Real))
+  :extrafuns ((x_44 Real))
+  :extrafuns ((x_45 Real))
+  :extrafuns ((x_46 Real))
+  :extrafuns ((x_47 Real))
+  :extrafuns ((x_48 Real))
+  :extrafuns ((x_49 Real))
+  :extrafuns ((x_50 Real))
+  :extrafuns ((x_51 Real))
+  :extrafuns ((x_52 Real))
+  :extrafuns ((x_53 Real))
+  :extrafuns ((x_54 Real))
+  :extrafuns ((x_55 Real))
+  :extrafuns ((x_56 Real))
+  :extrafuns ((x_57 Real))
+  :extrafuns ((x_58 Real))
+  :extrafuns ((x_59 Real))
+  :extrafuns ((x_60 Real))
+  :extrafuns ((x_61 Real))
+  :extrafuns ((x_62 Real))
+  :extrafuns ((x_63 Real))
+  :extrafuns ((x_64 Real))
+  :extrafuns ((x_65 Real))
+  :extrafuns ((x_66 Real))
+  :extrafuns ((x_67 Real))
+  :extrafuns ((x_68 Real))
+  :extrafuns ((x_69 Real))
+  :extrafuns ((x_70 Real))
+  :extrafuns ((x_71 Real))
+  :extrafuns ((x_72 Real))
+  :extrafuns ((x_73 Real))
+  :extrafuns ((x_74 Real))
+  :extrafuns ((x_75 Real))
+  :extrafuns ((x_76 Real))
+  :extrafuns ((x_77 Real))
+  :extrafuns ((x_78 Real))
+  :extrafuns ((x_79 Real))
+  :extrafuns ((x_80 Real))
+  :extrafuns ((x_81 Real))
+  :extrafuns ((x_82 Real))
+  :extrafuns ((x_83 Real))
+  :extrafuns ((x_84 Real))
+  :extrafuns ((x_85 Real))
+  :extrapreds ((x_86))
+  :extrafuns ((x_87 Real))
+  :extrapreds ((x_88))
+  :extrapreds ((x_89))
+  :extrapreds ((x_90))
+  :extrapreds ((x_91))
+  :extrapreds ((x_92))
+  :extrapreds ((x_93))
+  :extrapreds ((x_94))
+  :extrapreds ((x_95))
+  :extrafuns ((x_96 Real))
+  :extrafuns ((x_97 Real))
+  :extrafuns ((x_98 Real))
+  :extrafuns ((x_99 Real))
+  :extrafuns ((x_100 Real))
+  :extrafuns ((x_101 Real))
+  :extrafuns ((x_102 Real))
+  :extrafuns ((x_103 Real))
+  :extrafuns ((x_104 Real))
+  :extrafuns ((x_105 Real))
+  :extrafuns ((x_106 Real))
+  :extrafuns ((x_107 Real))
+  :extrafuns ((x_108 Real))
+  :extrafuns ((x_109 Real))
+  :extrafuns ((x_110 Real))
+  :extrafuns ((x_111 Real))
+  :extrafuns ((x_112 Real))
+  :extrafuns ((x_113 Real))
+  :extrafuns ((x_114 Real))
+  :extrafuns ((x_115 Real))
+  :formula
+(flet ($cvcl_201 (= x_0 0)) (flet ($cvcl_221 (= x_0 1)) (flet ($cvcl_225 (= x_0 2)) (flet ($cvcl_270 (= x_1 0)) (flet ($cvcl_277 (= x_1 1)) (flet ($cvcl_279 (= x_1 2)) (flet ($cvcl_291 (= x_2 0)) (flet ($cvcl_298 (= x_2 1)) (flet ($cvcl_300 (= x_2 2)) (flet ($cvcl_310 (= x_3 0)) (flet ($cvcl_317 (= x_3 1)) (flet ($cvcl_319 (= x_3 2)) (flet ($cvcl_329 (= x_4 0)) (flet ($cvcl_336 (= x_4 1)) (flet ($cvcl_338 (= x_4 2)) (flet ($cvcl_348 (= x_5 0)) (flet ($cvcl_355 (= x_5 1)) (flet ($cvcl_357 [...]
+)
diff --git a/test/regress/regress1/rewriterules/Makefile.am b/test/regress/regress1/rewriterules/Makefile.am
new file mode 100644
index 0000000..a5a045d
--- /dev/null
+++ b/test/regress/regress1/rewriterules/Makefile.am
@@ -0,0 +1,36 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+override CVC4_REGRESSION_ARGS += --rewrite-rules
+export CVC4_REGRESSION_ARGS
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	reachability_back_to_the_future.smt2 \
+	read5.smt2
+
+EXTRA_DIST = $(TESTS)
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
diff --git a/test/regress/regress1/rewriterules/Makefile.in b/test/regress/regress1/rewriterules/Makefile.in
new file mode 100644
index 0000000..2028cbf
--- /dev/null
+++ b/test/regress/regress1/rewriterules/Makefile.in
@@ -0,0 +1,998 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress1/rewriterules
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	reachability_back_to_the_future.smt2 \
+	read5.smt2
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress1/rewriterules/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress1/rewriterules/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+reachability_back_to_the_future.smt2.log: reachability_back_to_the_future.smt2
+	@p='reachability_back_to_the_future.smt2'; \
+	b='reachability_back_to_the_future.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+read5.smt2.log: read5.smt2
+	@p='read5.smt2'; \
+	b='read5.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+override CVC4_REGRESSION_ARGS += --rewrite-rules
+export CVC4_REGRESSION_ARGS
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress1/rewriterules/reachability_back_to_the_future.smt2 b/test/regress/regress1/rewriterules/reachability_back_to_the_future.smt2
new file mode 100644
index 0000000..13f7234
--- /dev/null
+++ b/test/regress/regress1/rewriterules/reachability_back_to_the_future.smt2
@@ -0,0 +1,54 @@
+;; Back to the Future ... Shuvendu K.Lhiri, Shaz Qadeer
+(set-logic AUFLIA)
+(set-info :status unsat)
+
+(declare-sort elt 0)
+
+(declare-fun f (elt) elt)
+(declare-fun Rf (elt elt elt) Bool)
+
+;;eq
+(assert-propagation ((?x elt)) ((?x)) () () (or (= ?x ?x) (not (= ?x ?x))) )
+;; reflexive
+(assert-propagation ((?x elt)) ((?x)) () () (Rf ?x ?x ?x) )
+;; step
+(assert-propagation ((?x elt)) (((f ?x))) () () (Rf ?x (f ?x) (f ?x)) )
+;; reach
+(assert-propagation ((?x1 elt)(?x2 elt)) (((f ?x1))) () ((Rf ?x1 ?x2 ?x2)) (or (= ?x1 ?x2) (Rf ?x1 (f ?x1) ?x2)) )
+;; cycle
+(assert-propagation ((?x1 elt)(?x2 elt)) (((f ?x1))) ((= (f ?x1) ?x1)) ((Rf ?x1 ?x2 ?x2)) (= ?x1 ?x2) )
+;; sandwich
+(assert-propagation ((?x1 elt)(?x2 elt)) () () ((Rf ?x1 ?x2 ?x1)) (= ?x1 ?x2) )
+;; order1
+(assert-propagation ((?x1 elt)(?x2 elt)(?x3 elt)) () () ((Rf ?x1 ?x2 ?x2)(Rf ?x1 ?x3 ?x3))
+                    (or (Rf ?x1 ?x2 ?x3) (Rf ?x1 ?x3 ?x2)) )
+;; order2
+(assert-propagation ((?x1 elt)(?x2 elt)(?x3 elt)) () () ((Rf ?x1 ?x2 ?x3))
+                    (and (Rf ?x1 ?x2 ?x2) (Rf ?x2 ?x3 ?x3)) )
+;; transitive1
+(assert-propagation ((?x1 elt)(?x2 elt)(?x3 elt)) () () ((Rf ?x1 ?x2 ?x2)(Rf ?x2 ?x3 ?x3))
+                    (Rf ?x1 ?x3 ?x3) )
+;; transitive2
+(assert-propagation ((?x0 elt)(?x1 elt)(?x2 elt)(?x3 elt)) () () ((Rf ?x0 ?x1 ?x2)(Rf ?x1 ?x3 ?x2))
+                    (and (Rf ?x0 ?x1 ?x3) (Rf ?x0 ?x3 ?x2)) )
+;;transitive3
+(assert-propagation ((?x0 elt)(?x1 elt)(?x2 elt)(?x3 elt)) () () ((Rf ?x0 ?x1 ?x2)(Rf ?x0 ?x3 ?x1))
+                    (and (Rf ?x0 ?x3 ?x2) (Rf ?x3 ?x1 ?x2)) )
+
+(declare-fun e1 () elt)
+(declare-fun e2 () elt)
+(declare-fun e3 () elt)
+(declare-fun e4 () elt)
+
+
+;; (assert (=> (Rf e1 e2 e3) (Rf e1 (f e1) (f e1)) ))
+
+;; (assert (=> (Rf e1 e2 e3) (Rf e1 e3 e3) ))
+
+;; (assert (=> (Rf e1 e2 e3) (or (= e1 e3) (Rf e1 (f e1) e3)) ))
+
+(assert (not (=> (and (not (= e1 e2)) (Rf e1 e2 e3)) (Rf e1 (f e1) e3) )))
+
+
+(check-sat)
+(exit)
\ No newline at end of file
diff --git a/test/regress/regress1/rewriterules/read5.smt2 b/test/regress/regress1/rewriterules/read5.smt2
new file mode 100644
index 0000000..e66df7c
--- /dev/null
+++ b/test/regress/regress1/rewriterules/read5.smt2
@@ -0,0 +1,35 @@
+(set-logic AUF)
+(set-info :source |
+Translated from old SVC processor verification benchmarks.  Contact Clark
+Barrett at barrett at cs.nyu.edu for more information.
+
+This benchmark was automatically translated into SMT-LIB format from
+CVC format using CVC Lite
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-sort Index 0)
+(declare-sort Element 0)(declare-sort Arr 0)(declare-fun aselect (Arr Index) Element)(declare-fun astore (Arr Index Element) Arr)(declare-fun k (Arr Arr) Index)
+(declare-fun a () Index)
+(declare-fun aaa () Index)
+(declare-fun aa () Index)
+(declare-fun S () Arr)
+(declare-fun vvv () Element)
+(declare-fun v () Element)
+(declare-fun vv () Element)
+(declare-fun bbb () Index)
+(declare-fun www () Element)
+(declare-fun bb () Index)
+(declare-fun ww () Element)
+(declare-fun b () Index)
+(declare-fun w () Element)
+(declare-fun SS () Arr)
+(assert (let ((?v_3 (ite (= a aa) false true)) (?v_4 (ite (= aa aaa) false true)) (?v_1 (astore (astore (astore S a v) aa vv) aaa vvv)) (?v_0 (astore S aaa vvv)) (?v_2 (astore S aa vv))) (not (ite (ite (ite (ite (= a aaa) false true) (ite ?v_3 ?v_4 false) false) (ite (= (astore (astore ?v_0 a v) aa vv) ?v_1) (ite (= (astore (astore ?v_0 aa vv) a v) ?v_1) (ite (= (astore (astore ?v_2 a v) aaa vvv) ?v_1) (= (astore (astore ?v_2 aaa vvv) a v) ?v_1) false) false) false) true) (ite (ite (= ?v [...]
+; rewrite rule definition of arrays theory
+(assert (forall ((?x Arr) (?i Index) (?j Index) (?e Element)) (! (=> (not (= ?i ?j)) (= (aselect (astore ?x ?i ?e) ?j) (aselect ?x ?j))) :rewrite-rule)))
+(assert (forall ((?x Arr) (?i Index) (?e Element)) (! (=> true (= (aselect (astore ?x ?i ?e) ?i) ?e)) :rewrite-rule)))
+(assert (forall ((?x Arr) (?y Arr)) (! (=> (not (= ?x ?y)) (not (= (aselect ?x (k ?x ?y)) (aselect ?y (k ?x ?y))))) :rewrite-rule)))
+(assert (forall ((?x Arr) (?y Arr)) (! (! (=> true (or (= ?x ?y) (not (= ?x ?y)))) :pattern (?x)) :rewrite-rule)))
+(assert (forall ((?x Arr) (?i Index) (?j Index) (?e Element)) (! (! (=> true (or (= ?i ?j) (not (= ?i ?j)))) :pattern ((aselect (astore ?x ?i ?e) ?j))) :rewrite-rule)))(check-sat)
+(exit)
diff --git a/test/regress/regress1/sep/Makefile.am b/test/regress/regress1/sep/Makefile.am
new file mode 100644
index 0000000..3bf63ff
--- /dev/null
+++ b/test/regress/regress1/sep/Makefile.am
@@ -0,0 +1,33 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	loop-1220.smt2 \
+	sep-simp-unc.smt2 \
+	split-find-unsat.smt2 \
+	split-find-unsat-w-emp.smt2
+
+EXTRA_DIST = $(TESTS)
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
diff --git a/test/regress/regress1/sep/Makefile.in b/test/regress/regress1/sep/Makefile.in
new file mode 100644
index 0000000..113a81e
--- /dev/null
+++ b/test/regress/regress1/sep/Makefile.in
@@ -0,0 +1,1010 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress1/sep
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	loop-1220.smt2 \
+	sep-simp-unc.smt2 \
+	split-find-unsat.smt2 \
+	split-find-unsat-w-emp.smt2
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress1/sep/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress1/sep/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+loop-1220.smt2.log: loop-1220.smt2
+	@p='loop-1220.smt2'; \
+	b='loop-1220.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sep-simp-unc.smt2.log: sep-simp-unc.smt2
+	@p='sep-simp-unc.smt2'; \
+	b='sep-simp-unc.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+split-find-unsat.smt2.log: split-find-unsat.smt2
+	@p='split-find-unsat.smt2'; \
+	b='split-find-unsat.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+split-find-unsat-w-emp.smt2.log: split-find-unsat-w-emp.smt2
+	@p='split-find-unsat-w-emp.smt2'; \
+	b='split-find-unsat-w-emp.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress1/sep/loop-1220.smt2 b/test/regress/regress1/sep/loop-1220.smt2
new file mode 100644
index 0000000..b857aec
--- /dev/null
+++ b/test/regress/regress1/sep/loop-1220.smt2
@@ -0,0 +1,19 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+
+(declare-const x Int)
+(declare-const a Int)
+
+(declare-const y Int)
+(declare-const b Int)
+(declare-const y0 Int)
+(declare-const b0 Int)
+(declare-const y00 Int)
+(declare-const b00 Int)
+
+(assert (or false (sep (pto x a) (or false (sep (pto y b) (or false (sep (pto y0 b0) (pto y00 b00) )))))))
+(assert (not (or false (sep (pto x a) (not (or false (sep (pto y b) (not (or false (sep (pto y0 b0) (not (pto y00 b00)) )))))))))) 
+
+(check-sat)
diff --git a/test/regress/regress1/sep/sep-simp-unc.smt2 b/test/regress/regress1/sep/sep-simp-unc.smt2
new file mode 100644
index 0000000..cedbb53
--- /dev/null
+++ b/test/regress/regress1/sep/sep-simp-unc.smt2
@@ -0,0 +1,12 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status sat)
+(declare-sort U 0)
+(declare-fun x () U)
+(declare-fun y () U)
+(declare-fun a () U)
+(declare-fun b () U)
+
+(assert (not (sep (not (pto x a)) (pto y b))))
+(check-sat)
diff --git a/test/regress/regress1/sep/split-find-unsat-w-emp.smt2 b/test/regress/regress1/sep/split-find-unsat-w-emp.smt2
new file mode 100644
index 0000000..c606d0a
--- /dev/null
+++ b/test/regress/regress1/sep/split-find-unsat-w-emp.smt2
@@ -0,0 +1,18 @@
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-const x Int)
+(declare-const y Int)
+(declare-const z Int)
+
+(declare-const a Int)
+(declare-const b Int)
+(declare-const c Int)
+
+(assert (and
+        (not (sep (not (pto x a)) (not (pto y b)) (not (sep (pto x a) (pto y b))) (not (emp x x)) ))
+        (sep (pto x a) (pto y b))
+  )
+)
+
+(check-sat)
diff --git a/test/regress/regress1/sep/split-find-unsat.smt2 b/test/regress/regress1/sep/split-find-unsat.smt2
new file mode 100644
index 0000000..1a9e76a
--- /dev/null
+++ b/test/regress/regress1/sep/split-find-unsat.smt2
@@ -0,0 +1,20 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: unsat
+(set-logic QF_ALL_SUPPORTED)
+(set-info :status unsat)
+
+(declare-const x Int)
+(declare-const y Int)
+(declare-const z Int)
+
+(declare-const a Int)
+(declare-const b Int)
+(declare-const c Int)
+
+(assert (and
+        (not (sep (not (pto x a)) (not (pto y b)) (not (sep (pto x a) (pto y b))) ))
+        (sep (pto x a) (pto y b))
+  )
+)
+
+(check-sat)
diff --git a/test/regress/regress1/sets/Makefile.am b/test/regress/regress1/sets/Makefile.am
new file mode 100644
index 0000000..b09a253
--- /dev/null
+++ b/test/regress/regress1/sets/Makefile.am
@@ -0,0 +1,31 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	sets-disequal.smt2 \
+	card-vc6-minimized.smt2
+
+EXTRA_DIST = $(TESTS)
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
diff --git a/test/regress/regress1/sets/Makefile.in b/test/regress/regress1/sets/Makefile.in
new file mode 100644
index 0000000..af684c5
--- /dev/null
+++ b/test/regress/regress1/sets/Makefile.in
@@ -0,0 +1,994 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress1/sets
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	sets-disequal.smt2 \
+	card-vc6-minimized.smt2
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress1/sets/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress1/sets/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+sets-disequal.smt2.log: sets-disequal.smt2
+	@p='sets-disequal.smt2'; \
+	b='sets-disequal.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+card-vc6-minimized.smt2.log: card-vc6-minimized.smt2
+	@p='card-vc6-minimized.smt2'; \
+	b='card-vc6-minimized.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress1/sets/card-vc6-minimized.smt2 b/test/regress/regress1/sets/card-vc6-minimized.smt2
new file mode 100644
index 0000000..d7f4bdf
--- /dev/null
+++ b/test/regress/regress1/sets/card-vc6-minimized.smt2
@@ -0,0 +1,15 @@
+; EXPECT: unsat
+(set-logic QF_UFLIAFS)
+(declare-fun x () Int)
+(declare-fun c () (Set Int))
+(declare-fun alloc0 () (Set Int))
+(declare-fun alloc1 () (Set Int))
+(declare-fun alloc2 () (Set Int))
+(assert
+(and (member x c)
+      (<= (card (setminus alloc1 alloc0)) 1)
+      (<= (card (setminus alloc2 alloc1))
+          (card (setminus c (singleton x))))
+      (> (card (setminus alloc2 alloc0)) (card c))
+))
+(check-sat)
diff --git a/test/regress/regress1/sets/sets-disequal.smt2 b/test/regress/regress1/sets/sets-disequal.smt2
new file mode 100644
index 0000000..3acf771
--- /dev/null
+++ b/test/regress/regress1/sets/sets-disequal.smt2
@@ -0,0 +1,20 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXIT: 0
+(set-logic QF_BVFS)
+(declare-fun S1 () (Set (_ BitVec 1)))
+(declare-fun S2 () (Set (_ BitVec 1)))
+(declare-fun S3 () (Set (_ BitVec 1)))
+(declare-fun S4 () (Set (_ BitVec 1)))
+(assert (distinct S1 S2 S3 S4))
+(check-sat)
+;(get-model)
+(declare-fun S5 () (Set (_ BitVec 1)))
+(assert (not (= S5 S1)))
+(assert (not (= S5 S2)))
+(assert (not (= S5 S3)))
+(check-sat)
+(assert (not (= S5 S4)))
+(check-sat)
diff --git a/test/regress/regress1/strings/Makefile.am b/test/regress/regress1/strings/Makefile.am
new file mode 100644
index 0000000..7830f14
--- /dev/null
+++ b/test/regress/regress1/strings/Makefile.am
@@ -0,0 +1,31 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	cmu-5042-0707-2.smt2 \
+	cmu-dis-0707-3.smt2
+
+EXTRA_DIST = $(TESTS)
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
diff --git a/test/regress/regress1/strings/Makefile.in b/test/regress/regress1/strings/Makefile.in
new file mode 100644
index 0000000..ba18304
--- /dev/null
+++ b/test/regress/regress1/strings/Makefile.in
@@ -0,0 +1,994 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress1/strings
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	cmu-5042-0707-2.smt2 \
+	cmu-dis-0707-3.smt2
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress1/strings/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress1/strings/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+cmu-5042-0707-2.smt2.log: cmu-5042-0707-2.smt2
+	@p='cmu-5042-0707-2.smt2'; \
+	b='cmu-5042-0707-2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cmu-dis-0707-3.smt2.log: cmu-dis-0707-3.smt2
+	@p='cmu-dis-0707-3.smt2'; \
+	b='cmu-dis-0707-3.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress1/strings/cmu-5042-0707-2.smt2 b/test/regress/regress1/strings/cmu-5042-0707-2.smt2
new file mode 100644
index 0000000..637142d
--- /dev/null
+++ b/test/regress/regress1/strings/cmu-5042-0707-2.smt2
@@ -0,0 +1,15 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(set-option :strings-exp true)
+
+(declare-fun key2 () String)
+(declare-fun key1 () String)
+
+(assert 
+(and 
+(not 
+(str.contains (str.++ (str.replace (str.substr key2 0 (- (+ (str.indexof key2 "X" 0) 1) 0)) "X" "x") (str.++ (str.replace (str.substr (str.substr key2 (+ (str.indexof key2 "X" 0) 1) (- (str.len key2) (+ (str.indexof key2 "X" 0) 1))) 0 (- (+ (str.indexof (str.substr key2 (+ (str.indexof key2 "X" 0) 1) (- (str.len key2) (+ (str.indexof key2 "X" 0) 1))) "X" 0) 1) 0)) "X" "x") (str.substr (str.substr key2 (+ (str.indexof key2 "X" 0) 1) (- (str.len key2) (+ (str.indexof key2 "X" 0) 1))) (+ (s [...]
+(str.contains (str.substr key2 (+ (str.indexof key2 "X" 0) 1) (- (str.len key2) (+ (str.indexof key2 "X" 0) 1))) "X"))) 
+
+(check-sat)
+
diff --git a/test/regress/regress1/strings/cmu-dis-0707-3.smt2 b/test/regress/regress1/strings/cmu-dis-0707-3.smt2
new file mode 100644
index 0000000..209cbb3
--- /dev/null
+++ b/test/regress/regress1/strings/cmu-dis-0707-3.smt2
@@ -0,0 +1,24 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(set-option :strings-exp true)
+(declare-fun value () String)
+(declare-fun name () String)
+(assert (not (not (not (= (ite (str.contains value "?") 1 0) 0))))) 
+(assert (not (not (= (ite (str.contains value "#") 1 0) 0)))) 
+(assert (not (not (= (ite (= (str.substr value 0 (- 2 0)) "//") 1 0) 0)))) 
+(assert (not (not (= (ite (> (str.indexof value ":" 0) 0) 1 0) 0)))) 
+(assert (not (= (ite (not (= (str.len value) 0)) 1 0) 0))) 
+(assert (not (not (= (ite (str.contains value "'") 1 0) 0)))) 
+(assert (not (not (= (ite (str.contains value "\"") 1 0) 0)))) 
+(assert (not (not (= (ite (str.contains value ">") 1 0) 0)))) 
+(assert (not (not (= (ite (str.contains value "<") 1 0) 0)))) 
+(assert (not (not (= (ite (str.contains value "&") 1 0) 0)))) 
+(assert (not (not (= (ite (str.contains name "'") 1 0) 0)))) 
+(assert (not (not (= (ite (str.contains name "\"") 1 0) 0)))) 
+(assert (not (not (= (ite (str.contains name ">") 1 0) 0)))) 
+(assert (not (not (= (ite (str.contains name "<") 1 0) 0)))) 
+(assert (not (not (= (ite (str.contains name "&") 1 0) 0)))) 
+(assert (not (= (ite (not (= value "")) 1 0) 0))) 
+(assert (not (= (ite (str.contains value "javascript:alert(1);") 1 0) 0))) 
+(assert (not (not (= (ite (str.contains name "javascript:alert(1);") 1 0) 0)))) 
+(check-sat)
diff --git a/test/regress/regress1/sygus/Makefile.am b/test/regress/regress1/sygus/Makefile.am
new file mode 100644
index 0000000..0451f93
--- /dev/null
+++ b/test/regress/regress1/sygus/Makefile.am
@@ -0,0 +1,30 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	hd-sdiv.sy
+
+EXTRA_DIST = $(TESTS)
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
diff --git a/test/regress/regress1/sygus/Makefile.in b/test/regress/regress1/sygus/Makefile.in
new file mode 100644
index 0000000..daf66e9
--- /dev/null
+++ b/test/regress/regress1/sygus/Makefile.in
@@ -0,0 +1,986 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress1/sygus
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	hd-sdiv.sy
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress1/sygus/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress1/sygus/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+hd-sdiv.sy.log: hd-sdiv.sy
+	@p='hd-sdiv.sy'; \
+	b='hd-sdiv.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress1 test
+regress regress1 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress2 regress3 regress4
+regress0 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress1/sygus/hd-sdiv.sy b/test/regress/regress1/sygus/hd-sdiv.sy
new file mode 100644
index 0000000..019b48a
--- /dev/null
+++ b/test/regress/regress1/sygus/hd-sdiv.sy
@@ -0,0 +1,16 @@
+; EXPECT: unsat
+; COMMAND-LINE: --cegqi-si=none --no-dump-synth
+(set-logic BV)
+
+(define-fun hd01 ((x (BitVec 32))) (BitVec 32) (bvand x #x00000001))
+
+(synth-fun f ((x (BitVec 32))) (BitVec 32)
+    ((Start (BitVec 32) ((bvsdiv Start Start)
+						             (bvand Start Start)
+                         x
+                         #x00000001))))
+
+(declare-var y (BitVec 32))
+(constraint (= (hd01 y) (f y)))
+(check-synth)
+
diff --git a/test/regress/regress2/DTP_k2_n35_c175_s15.smt2 b/test/regress/regress2/DTP_k2_n35_c175_s15.smt2
new file mode 100644
index 0000000..20f4bf5
--- /dev/null
+++ b/test/regress/regress2/DTP_k2_n35_c175_s15.smt2
@@ -0,0 +1,48 @@
+(set-logic QF_IDL)
+(set-info :source |
+Randomly generated benchmarks. Contact TSAT++ group at 
+http://www.ai.dist.unige.it/Tsat for more information.
+
+Translated into SMT-LIB format by Albert Oliveras.
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "random")
+(set-info :status sat)
+(declare-fun x10 () Int)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x27 () Int)
+(declare-fun x21 () Int)
+(declare-fun x20 () Int)
+(declare-fun x15 () Int)
+(declare-fun x13 () Int)
+(declare-fun x12 () Int)
+(declare-fun x11 () Int)
+(declare-fun x14 () Int)
+(declare-fun x17 () Int)
+(declare-fun x16 () Int)
+(declare-fun x19 () Int)
+(declare-fun x18 () Int)
+(declare-fun x2 () Int)
+(declare-fun x23 () Int)
+(declare-fun x22 () Int)
+(declare-fun x25 () Int)
+(declare-fun x24 () Int)
+(declare-fun x26 () Int)
+(declare-fun x7 () Int)
+(declare-fun x6 () Int)
+(declare-fun x31 () Int)
+(declare-fun x28 () Int)
+(declare-fun x29 () Int)
+(declare-fun x3 () Int)
+(declare-fun x30 () Int)
+(declare-fun x5 () Int)
+(declare-fun x34 () Int)
+(declare-fun x32 () Int)
+(declare-fun x33 () Int)
+(declare-fun x4 () Int)
+(declare-fun x9 () Int)
+(declare-fun x8 () Int)
+(assert (let ((?v_1 (- x10 x27)) (?v_3 (- x25 x24)) (?v_4 (- x24 x22)) (?v_2 (- x3 x27)) (?v_0 (- x34 x28)) (?v_23 (- x12 x27)) (?v_6 (- x29 x24)) (?v_11 (- x24 x12)) (?v_10 (- x1 x7)) (?v_5 (- x30 x27)) (?v_9 (- x24 x18)) (?v_18 (- x31 x13)) (?v_16 (- x15 x2)) (?v_8 (- x33 x7)) (?v_27 (- x3 x5)) (?v_7 (- x0 x33)) (?v_12 (- x22 x19)) (?v_22 (- x33 x32)) (?v_30 (- x22 x11)) (?v_24 (- x7 x19)) (?v_21 (- x30 x33)) (?v_15 (- x17 x6)) (?v_35 (- x21 x9)) (?v_28 (- x7 x3)) (?v_32 (- x1 x6)) (?v [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress2/FIREFLY_3_e2_2236_e7_3681.ec.minimized.smt2 b/test/regress/regress2/FIREFLY_3_e2_2236_e7_3681.ec.minimized.smt2
new file mode 100644
index 0000000..25f006d
--- /dev/null
+++ b/test/regress/regress2/FIREFLY_3_e2_2236_e7_3681.ec.minimized.smt2
@@ -0,0 +1,1356 @@
+(set-logic QF_UFLIA)
+(declare-fun _base () Int)
+(declare-fun _n () Int)
+(assert (let ((.def_5 (<= 0 _n)))
+.def_5
+))
+(declare-fun ___z2z___ (Int) Bool)
+(declare-fun ___z3z___ (Int) Bool)
+(declare-fun ___z4z___ (Int) Bool)
+(declare-fun ___z5z___ (Int) Bool)
+(declare-fun ___z6z___ (Int) Bool)
+(declare-fun ___z7z___ (Int) Bool)
+(declare-fun ___z8z___ (Int) Bool)
+(declare-fun ___z9z___ (Int) Bool)
+(declare-fun ___z10z___ (Int) Int)
+(declare-fun ___z11z___ (Int) Bool)
+(declare-fun ___z12z___ (Int) Int)
+(declare-fun ___z13z___ (Int) Int)
+(declare-fun ___z14z___ (Int) Int)
+(declare-fun ___z15z___ (Int) Int)
+(declare-fun ___z16z___ (Int) Bool)
+(declare-fun ___z18z___ (Int) Bool)
+(declare-fun ___z19z___ (Int) Bool)
+(declare-fun ___z20z___ (Int) Bool)
+(declare-fun ___z21z___ (Int) Bool)
+(declare-fun ___z22z___ (Int) Bool)
+(declare-fun ___z23z___ (Int) Bool)
+(declare-fun ___z24z___ (Int) Bool)
+(declare-fun ___z25z___ (Int) Bool)
+(declare-fun ___z26z___ (Int) Int)
+(declare-fun ___z27z___ (Int) Bool)
+(push 1)
+(assert (let ((.def_531 (___z20z___ 0)))
+(let ((.def_528 (___z12z___ (- 1))))
+(let ((.def_529 (<= 1 .def_528)))
+(let ((.def_525 (___z15z___ (- 1))))
+(let ((.def_524 (___z14z___ (- 1))))
+(let ((.def_526 (+ .def_524 .def_525)))
+(let ((.def_527 (<= 1 .def_526)))
+(let ((.def_530 (and .def_527 .def_529)))
+(let ((.def_532 (= .def_530 .def_531)))
+.def_532
+))))))))))
+(assert (let ((.def_538 (___z11z___ 0)))
+(let ((.def_535 (___z15z___ 0)))
+(let ((.def_536 (<= 0 .def_535)))
+(let ((.def_533 (___z16z___ 0)))
+(let ((.def_534 (not .def_533)))
+(let ((.def_537 (or .def_534 .def_536)))
+(let ((.def_539 (= .def_537 .def_538)))
+.def_539
+))))))))
+(assert (let ((.def_541 (___z21z___ 0)))
+(let ((.def_524 (___z14z___ (- 1))))
+(let ((.def_540 (<= 1 .def_524)))
+(let ((.def_542 (= .def_540 .def_541)))
+.def_542
+)))))
+(assert (let ((.def_570 (___z12z___ 0)))
+(let ((.def_528 (___z12z___ (- 1))))
+(let ((.def_543 (+ (- 1) .def_528)))
+(let ((.def_544 (___z25z___ 0)))
+(let ((.def_545 (ite .def_544 .def_543 .def_528)))
+(let ((.def_546 (___z9z___ 0)))
+(let ((.def_547 (ite .def_546 .def_545 .def_528)))
+(let ((.def_548 (___z24z___ 0)))
+(let ((.def_549 (ite .def_548 .def_543 .def_528)))
+(let ((.def_550 (___z8z___ 0)))
+(let ((.def_551 (ite .def_550 .def_549 .def_547)))
+(let ((.def_552 (___z23z___ 0)))
+(let ((.def_553 (ite .def_552 .def_543 .def_528)))
+(let ((.def_554 (___z7z___ 0)))
+(let ((.def_555 (ite .def_554 .def_553 .def_551)))
+(let ((.def_531 (___z20z___ 0)))
+(let ((.def_556 (ite .def_531 .def_543 .def_528)))
+(let ((.def_557 (___z4z___ 0)))
+(let ((.def_558 (ite .def_557 .def_556 .def_555)))
+(let ((.def_559 (___z19z___ 0)))
+(let ((.def_560 (ite .def_559 .def_543 .def_528)))
+(let ((.def_561 (___z3z___ 0)))
+(let ((.def_562 (ite .def_561 .def_560 .def_558)))
+(let ((.def_563 (___z18z___ 0)))
+(let ((.def_564 (ite .def_563 .def_543 .def_528)))
+(let ((.def_565 (___z2z___ 0)))
+(let ((.def_566 (ite .def_565 .def_564 .def_562)))
+(let ((.def_567 (___z26z___ 0)))
+(let ((.def_568 (= _base 0)))
+(let ((.def_569 (ite .def_568 .def_567 .def_566)))
+(let ((.def_571 (= .def_569 .def_570)))
+.def_571
+))))))))))))))))))))))))))))))))
+(assert (let ((.def_573 (___z22z___ 0)))
+(let ((.def_525 (___z15z___ (- 1))))
+(let ((.def_572 (= .def_525 1)))
+(let ((.def_574 (= .def_572 .def_573)))
+.def_574
+)))))
+(assert (let ((.def_588 (___z13z___ 0)))
+(let ((.def_575 (___z13z___ (- 1))))
+(let ((.def_576 (+ (- 1) .def_575)))
+(let ((.def_548 (___z24z___ 0)))
+(let ((.def_577 (ite .def_548 .def_576 .def_575)))
+(let ((.def_550 (___z8z___ 0)))
+(let ((.def_578 (ite .def_550 .def_577 .def_575)))
+(let ((.def_552 (___z23z___ 0)))
+(let ((.def_579 (ite .def_552 1 .def_575)))
+(let ((.def_554 (___z7z___ 0)))
+(let ((.def_580 (ite .def_554 .def_579 .def_578)))
+(let ((.def_581 (+ 1 .def_575)))
+(let ((.def_541 (___z21z___ 0)))
+(let ((.def_582 (ite .def_541 .def_581 .def_575)))
+(let ((.def_583 (___z5z___ 0)))
+(let ((.def_584 (ite .def_583 .def_582 .def_580)))
+(let ((.def_559 (___z19z___ 0)))
+(let ((.def_585 (ite .def_559 .def_576 .def_575)))
+(let ((.def_561 (___z3z___ 0)))
+(let ((.def_586 (ite .def_561 .def_585 .def_584)))
+(let ((.def_568 (= _base 0)))
+(let ((.def_587 (ite .def_568 0 .def_586)))
+(let ((.def_589 (= .def_587 .def_588)))
+.def_589
+))))))))))))))))))))))))
+(assert (let ((.def_575 (___z13z___ (- 1))))
+(let ((.def_592 (= .def_575 0)))
+(let ((.def_528 (___z12z___ (- 1))))
+(let ((.def_529 (<= 1 .def_528)))
+(let ((.def_593 (and .def_529 .def_592)))
+(let ((.def_525 (___z15z___ (- 1))))
+(let ((.def_591 (= .def_525 0)))
+(let ((.def_594 (and .def_591 .def_593)))
+(let ((.def_524 (___z14z___ (- 1))))
+(let ((.def_590 (= .def_524 0)))
+(let ((.def_595 (and .def_590 .def_594)))
+(let ((.def_552 (___z23z___ 0)))
+(let ((.def_596 (= .def_552 .def_595)))
+.def_596
+))))))))))))))
+(assert (let ((.def_611 (___z14z___ 0)))
+(let ((.def_524 (___z14z___ (- 1))))
+(let ((.def_544 (___z25z___ 0)))
+(let ((.def_597 (ite .def_544 0 .def_524)))
+(let ((.def_546 (___z9z___ 0)))
+(let ((.def_598 (ite .def_546 .def_597 .def_524)))
+(let ((.def_599 (+ 1 .def_524)))
+(let ((.def_573 (___z22z___ 0)))
+(let ((.def_600 (ite .def_573 .def_599 .def_524)))
+(let ((.def_601 (___z6z___ 0)))
+(let ((.def_602 (ite .def_601 .def_600 .def_598)))
+(let ((.def_603 (+ (- 1) .def_524)))
+(let ((.def_541 (___z21z___ 0)))
+(let ((.def_604 (ite .def_541 .def_603 .def_524)))
+(let ((.def_583 (___z5z___ 0)))
+(let ((.def_605 (ite .def_583 .def_604 .def_602)))
+(let ((.def_531 (___z20z___ 0)))
+(let ((.def_606 (ite .def_531 0 .def_524)))
+(let ((.def_557 (___z4z___ 0)))
+(let ((.def_607 (ite .def_557 .def_606 .def_605)))
+(let ((.def_563 (___z18z___ 0)))
+(let ((.def_608 (ite .def_563 .def_599 .def_524)))
+(let ((.def_565 (___z2z___ 0)))
+(let ((.def_609 (ite .def_565 .def_608 .def_607)))
+(let ((.def_568 (= _base 0)))
+(let ((.def_610 (ite .def_568 0 .def_609)))
+(let ((.def_612 (= .def_610 .def_611)))
+.def_612
+))))))))))))))))))))))))))))
+(assert (let ((.def_575 (___z13z___ (- 1))))
+(let ((.def_613 (<= 1 .def_575)))
+(let ((.def_528 (___z12z___ (- 1))))
+(let ((.def_529 (<= 1 .def_528)))
+(let ((.def_614 (and .def_529 .def_613)))
+(let ((.def_548 (___z24z___ 0)))
+(let ((.def_615 (= .def_548 .def_614)))
+.def_615
+))))))))
+(assert (let ((.def_525 (___z15z___ (- 1))))
+(let ((.def_524 (___z14z___ (- 1))))
+(let ((.def_526 (+ .def_524 .def_525)))
+(let ((.def_616 (+ 1 .def_526)))
+(let ((.def_544 (___z25z___ 0)))
+(let ((.def_617 (ite .def_544 .def_616 .def_525)))
+(let ((.def_546 (___z9z___ 0)))
+(let ((.def_618 (ite .def_546 .def_617 .def_525)))
+(let ((.def_619 (+ 2 .def_525)))
+(let ((.def_548 (___z24z___ 0)))
+(let ((.def_620 (ite .def_548 .def_619 .def_525)))
+(let ((.def_550 (___z8z___ 0)))
+(let ((.def_621 (ite .def_550 .def_620 .def_618)))
+(let ((.def_573 (___z22z___ 0)))
+(let ((.def_622 (ite .def_573 0 .def_525)))
+(let ((.def_601 (___z6z___ 0)))
+(let ((.def_623 (ite .def_601 .def_622 .def_621)))
+(let ((.def_624 (+ (- 1) .def_525)))
+(let ((.def_625 (+ .def_524 .def_624)))
+(let ((.def_626 (+ 1 .def_625)))
+(let ((.def_531 (___z20z___ 0)))
+(let ((.def_627 (ite .def_531 .def_626 .def_525)))
+(let ((.def_557 (___z4z___ 0)))
+(let ((.def_628 (ite .def_557 .def_627 .def_623)))
+(let ((.def_559 (___z19z___ 0)))
+(let ((.def_629 (ite .def_559 .def_619 .def_525)))
+(let ((.def_561 (___z3z___ 0)))
+(let ((.def_630 (ite .def_561 .def_629 .def_628)))
+(let ((.def_568 (= _base 0)))
+(let ((.def_631 (ite .def_568 0 .def_630)))
+(let ((.def_535 (___z15z___ 0)))
+(let ((.def_632 (= .def_535 .def_631)))
+.def_632
+)))))))))))))))))))))))))))))))))
+(assert (let ((.def_544 (___z25z___ 0)))
+(let ((.def_528 (___z12z___ (- 1))))
+(let ((.def_529 (<= 1 .def_528)))
+(let ((.def_525 (___z15z___ (- 1))))
+(let ((.def_524 (___z14z___ (- 1))))
+(let ((.def_526 (+ .def_524 .def_525)))
+(let ((.def_527 (<= 1 .def_526)))
+(let ((.def_530 (and .def_527 .def_529)))
+(let ((.def_633 (= .def_530 .def_544)))
+.def_633
+))))))))))
+(assert (let ((.def_637 (___z16z___ (- 1))))
+(let ((.def_635 (___z27z___ 0)))
+(let ((.def_638 (or .def_635 .def_637)))
+(let ((.def_568 (= _base 0)))
+(let ((.def_639 (or .def_568 .def_638)))
+(let ((.def_634 (not .def_568)))
+(let ((.def_636 (or .def_634 .def_635)))
+(let ((.def_640 (and .def_636 .def_639)))
+(let ((.def_533 (___z16z___ 0)))
+(let ((.def_641 (= .def_533 .def_640)))
+.def_641
+)))))))))))
+(assert (let ((.def_642 (___z26z___ (- 1))))
+(let ((.def_643 (___z10z___ 0)))
+(let ((.def_568 (= _base 0)))
+(let ((.def_644 (ite .def_568 .def_643 .def_642)))
+(let ((.def_567 (___z26z___ 0)))
+(let ((.def_645 (= .def_567 .def_644)))
+.def_645
+)))))))
+(assert (let ((.def_546 (___z9z___ 0)))
+(let ((.def_664 (not .def_546)))
+(let ((.def_565 (___z2z___ 0)))
+(let ((.def_655 (not .def_565)))
+(let ((.def_561 (___z3z___ 0)))
+(let ((.def_654 (not .def_561)))
+(let ((.def_656 (and .def_654 .def_655)))
+(let ((.def_557 (___z4z___ 0)))
+(let ((.def_653 (not .def_557)))
+(let ((.def_657 (and .def_653 .def_656)))
+(let ((.def_583 (___z5z___ 0)))
+(let ((.def_652 (not .def_583)))
+(let ((.def_658 (and .def_652 .def_657)))
+(let ((.def_601 (___z6z___ 0)))
+(let ((.def_651 (not .def_601)))
+(let ((.def_659 (and .def_651 .def_658)))
+(let ((.def_554 (___z7z___ 0)))
+(let ((.def_650 (not .def_554)))
+(let ((.def_660 (and .def_650 .def_659)))
+(let ((.def_550 (___z8z___ 0)))
+(let ((.def_649 (not .def_550)))
+(let ((.def_661 (and .def_649 .def_660)))
+(let ((.def_698 (and .def_661 .def_664)))
+(let ((.def_691 (and .def_565 .def_654)))
+(let ((.def_692 (and .def_653 .def_691)))
+(let ((.def_693 (and .def_652 .def_692)))
+(let ((.def_694 (and .def_651 .def_693)))
+(let ((.def_695 (and .def_650 .def_694)))
+(let ((.def_696 (and .def_649 .def_695)))
+(let ((.def_697 (and .def_664 .def_696)))
+(let ((.def_699 (or .def_697 .def_698)))
+(let ((.def_684 (and .def_561 .def_655)))
+(let ((.def_685 (and .def_653 .def_684)))
+(let ((.def_686 (and .def_652 .def_685)))
+(let ((.def_687 (and .def_651 .def_686)))
+(let ((.def_688 (and .def_650 .def_687)))
+(let ((.def_689 (and .def_649 .def_688)))
+(let ((.def_690 (and .def_664 .def_689)))
+(let ((.def_700 (or .def_690 .def_699)))
+(let ((.def_678 (and .def_557 .def_656)))
+(let ((.def_679 (and .def_652 .def_678)))
+(let ((.def_680 (and .def_651 .def_679)))
+(let ((.def_681 (and .def_650 .def_680)))
+(let ((.def_682 (and .def_649 .def_681)))
+(let ((.def_683 (and .def_664 .def_682)))
+(let ((.def_701 (or .def_683 .def_700)))
+(let ((.def_673 (and .def_583 .def_657)))
+(let ((.def_674 (and .def_651 .def_673)))
+(let ((.def_675 (and .def_650 .def_674)))
+(let ((.def_676 (and .def_649 .def_675)))
+(let ((.def_677 (and .def_664 .def_676)))
+(let ((.def_702 (or .def_677 .def_701)))
+(let ((.def_669 (and .def_601 .def_658)))
+(let ((.def_670 (and .def_650 .def_669)))
+(let ((.def_671 (and .def_649 .def_670)))
+(let ((.def_672 (and .def_664 .def_671)))
+(let ((.def_703 (or .def_672 .def_702)))
+(let ((.def_666 (and .def_554 .def_659)))
+(let ((.def_667 (and .def_649 .def_666)))
+(let ((.def_668 (and .def_664 .def_667)))
+(let ((.def_704 (or .def_668 .def_703)))
+(let ((.def_663 (and .def_550 .def_660)))
+(let ((.def_665 (and .def_663 .def_664)))
+(let ((.def_705 (or .def_665 .def_704)))
+(let ((.def_662 (and .def_546 .def_661)))
+(let ((.def_706 (or .def_662 .def_705)))
+(let ((.def_643 (___z10z___ 0)))
+(let ((.def_648 (<= 0 .def_643)))
+(let ((.def_707 (and .def_648 .def_706)))
+(let ((.def_646 (<= 5 .def_643)))
+(let ((.def_647 (not .def_646)))
+(let ((.def_708 (and .def_647 .def_707)))
+(let ((.def_635 (___z27z___ 0)))
+(let ((.def_709 (= .def_635 .def_708)))
+.def_709
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+(assert (let ((.def_575 (___z13z___ (- 1))))
+(let ((.def_592 (= .def_575 0)))
+(let ((.def_528 (___z12z___ (- 1))))
+(let ((.def_529 (<= 1 .def_528)))
+(let ((.def_593 (and .def_529 .def_592)))
+(let ((.def_525 (___z15z___ (- 1))))
+(let ((.def_591 (= .def_525 0)))
+(let ((.def_594 (and .def_591 .def_593)))
+(let ((.def_524 (___z14z___ (- 1))))
+(let ((.def_590 (= .def_524 0)))
+(let ((.def_595 (and .def_590 .def_594)))
+(let ((.def_563 (___z18z___ 0)))
+(let ((.def_710 (= .def_563 .def_595)))
+.def_710
+))))))))))))))
+(assert (let ((.def_575 (___z13z___ (- 1))))
+(let ((.def_613 (<= 1 .def_575)))
+(let ((.def_528 (___z12z___ (- 1))))
+(let ((.def_529 (<= 1 .def_528)))
+(let ((.def_614 (and .def_529 .def_613)))
+(let ((.def_559 (___z19z___ 0)))
+(let ((.def_711 (= .def_559 .def_614)))
+.def_711
+))))))))
+(assert (let ((.def_720 (___z20z___ (- 1))))
+(let ((.def_717 (___z12z___ (- 2))))
+(let ((.def_718 (<= 1 .def_717)))
+(let ((.def_714 (___z15z___ (- 2))))
+(let ((.def_713 (___z14z___ (- 2))))
+(let ((.def_715 (+ .def_713 .def_714)))
+(let ((.def_716 (<= 1 .def_715)))
+(let ((.def_719 (and .def_716 .def_718)))
+(let ((.def_721 (= .def_719 .def_720)))
+.def_721
+))))))))))
+(assert (let ((.def_725 (___z11z___ (- 1))))
+(let ((.def_525 (___z15z___ (- 1))))
+(let ((.def_723 (<= 0 .def_525)))
+(let ((.def_637 (___z16z___ (- 1))))
+(let ((.def_722 (not .def_637)))
+(let ((.def_724 (or .def_722 .def_723)))
+(let ((.def_726 (= .def_724 .def_725)))
+.def_726
+))))))))
+(assert (let ((.def_728 (___z21z___ (- 1))))
+(let ((.def_713 (___z14z___ (- 2))))
+(let ((.def_727 (<= 1 .def_713)))
+(let ((.def_729 (= .def_727 .def_728)))
+.def_729
+)))))
+(assert (let ((.def_717 (___z12z___ (- 2))))
+(let ((.def_730 (+ (- 1) .def_717)))
+(let ((.def_731 (___z25z___ (- 1))))
+(let ((.def_732 (ite .def_731 .def_730 .def_717)))
+(let ((.def_733 (___z9z___ (- 1))))
+(let ((.def_734 (ite .def_733 .def_732 .def_717)))
+(let ((.def_735 (___z24z___ (- 1))))
+(let ((.def_736 (ite .def_735 .def_730 .def_717)))
+(let ((.def_737 (___z8z___ (- 1))))
+(let ((.def_738 (ite .def_737 .def_736 .def_734)))
+(let ((.def_739 (___z23z___ (- 1))))
+(let ((.def_740 (ite .def_739 .def_730 .def_717)))
+(let ((.def_741 (___z7z___ (- 1))))
+(let ((.def_742 (ite .def_741 .def_740 .def_738)))
+(let ((.def_720 (___z20z___ (- 1))))
+(let ((.def_743 (ite .def_720 .def_730 .def_717)))
+(let ((.def_744 (___z4z___ (- 1))))
+(let ((.def_745 (ite .def_744 .def_743 .def_742)))
+(let ((.def_746 (___z19z___ (- 1))))
+(let ((.def_747 (ite .def_746 .def_730 .def_717)))
+(let ((.def_748 (___z3z___ (- 1))))
+(let ((.def_749 (ite .def_748 .def_747 .def_745)))
+(let ((.def_750 (___z18z___ (- 1))))
+(let ((.def_751 (ite .def_750 .def_730 .def_717)))
+(let ((.def_752 (___z2z___ (- 1))))
+(let ((.def_753 (ite .def_752 .def_751 .def_749)))
+(let ((.def_642 (___z26z___ (- 1))))
+(let ((.def_754 (= _base (- 1))))
+(let ((.def_755 (ite .def_754 .def_642 .def_753)))
+(let ((.def_528 (___z12z___ (- 1))))
+(let ((.def_756 (= .def_528 .def_755)))
+.def_756
+))))))))))))))))))))))))))))))))
+(assert (let ((.def_758 (___z22z___ (- 1))))
+(let ((.def_714 (___z15z___ (- 2))))
+(let ((.def_757 (= .def_714 1)))
+(let ((.def_759 (= .def_757 .def_758)))
+.def_759
+)))))
+(assert (let ((.def_760 (___z13z___ (- 2))))
+(let ((.def_761 (+ (- 1) .def_760)))
+(let ((.def_735 (___z24z___ (- 1))))
+(let ((.def_762 (ite .def_735 .def_761 .def_760)))
+(let ((.def_737 (___z8z___ (- 1))))
+(let ((.def_763 (ite .def_737 .def_762 .def_760)))
+(let ((.def_739 (___z23z___ (- 1))))
+(let ((.def_764 (ite .def_739 1 .def_760)))
+(let ((.def_741 (___z7z___ (- 1))))
+(let ((.def_765 (ite .def_741 .def_764 .def_763)))
+(let ((.def_766 (+ 1 .def_760)))
+(let ((.def_728 (___z21z___ (- 1))))
+(let ((.def_767 (ite .def_728 .def_766 .def_760)))
+(let ((.def_768 (___z5z___ (- 1))))
+(let ((.def_769 (ite .def_768 .def_767 .def_765)))
+(let ((.def_746 (___z19z___ (- 1))))
+(let ((.def_770 (ite .def_746 .def_761 .def_760)))
+(let ((.def_748 (___z3z___ (- 1))))
+(let ((.def_771 (ite .def_748 .def_770 .def_769)))
+(let ((.def_754 (= _base (- 1))))
+(let ((.def_772 (ite .def_754 0 .def_771)))
+(let ((.def_575 (___z13z___ (- 1))))
+(let ((.def_773 (= .def_575 .def_772)))
+.def_773
+))))))))))))))))))))))))
+(assert (let ((.def_760 (___z13z___ (- 2))))
+(let ((.def_776 (= .def_760 0)))
+(let ((.def_717 (___z12z___ (- 2))))
+(let ((.def_718 (<= 1 .def_717)))
+(let ((.def_777 (and .def_718 .def_776)))
+(let ((.def_714 (___z15z___ (- 2))))
+(let ((.def_775 (= .def_714 0)))
+(let ((.def_778 (and .def_775 .def_777)))
+(let ((.def_713 (___z14z___ (- 2))))
+(let ((.def_774 (= .def_713 0)))
+(let ((.def_779 (and .def_774 .def_778)))
+(let ((.def_739 (___z23z___ (- 1))))
+(let ((.def_780 (= .def_739 .def_779)))
+.def_780
+))))))))))))))
+(assert (let ((.def_713 (___z14z___ (- 2))))
+(let ((.def_731 (___z25z___ (- 1))))
+(let ((.def_781 (ite .def_731 0 .def_713)))
+(let ((.def_733 (___z9z___ (- 1))))
+(let ((.def_782 (ite .def_733 .def_781 .def_713)))
+(let ((.def_783 (+ 1 .def_713)))
+(let ((.def_758 (___z22z___ (- 1))))
+(let ((.def_784 (ite .def_758 .def_783 .def_713)))
+(let ((.def_785 (___z6z___ (- 1))))
+(let ((.def_786 (ite .def_785 .def_784 .def_782)))
+(let ((.def_787 (+ (- 1) .def_713)))
+(let ((.def_728 (___z21z___ (- 1))))
+(let ((.def_788 (ite .def_728 .def_787 .def_713)))
+(let ((.def_768 (___z5z___ (- 1))))
+(let ((.def_789 (ite .def_768 .def_788 .def_786)))
+(let ((.def_720 (___z20z___ (- 1))))
+(let ((.def_790 (ite .def_720 0 .def_713)))
+(let ((.def_744 (___z4z___ (- 1))))
+(let ((.def_791 (ite .def_744 .def_790 .def_789)))
+(let ((.def_750 (___z18z___ (- 1))))
+(let ((.def_792 (ite .def_750 .def_783 .def_713)))
+(let ((.def_752 (___z2z___ (- 1))))
+(let ((.def_793 (ite .def_752 .def_792 .def_791)))
+(let ((.def_754 (= _base (- 1))))
+(let ((.def_794 (ite .def_754 0 .def_793)))
+(let ((.def_524 (___z14z___ (- 1))))
+(let ((.def_795 (= .def_524 .def_794)))
+.def_795
+))))))))))))))))))))))))))))
+(assert (let ((.def_760 (___z13z___ (- 2))))
+(let ((.def_796 (<= 1 .def_760)))
+(let ((.def_717 (___z12z___ (- 2))))
+(let ((.def_718 (<= 1 .def_717)))
+(let ((.def_797 (and .def_718 .def_796)))
+(let ((.def_735 (___z24z___ (- 1))))
+(let ((.def_798 (= .def_735 .def_797)))
+.def_798
+))))))))
+(assert (let ((.def_714 (___z15z___ (- 2))))
+(let ((.def_713 (___z14z___ (- 2))))
+(let ((.def_715 (+ .def_713 .def_714)))
+(let ((.def_799 (+ 1 .def_715)))
+(let ((.def_731 (___z25z___ (- 1))))
+(let ((.def_800 (ite .def_731 .def_799 .def_714)))
+(let ((.def_733 (___z9z___ (- 1))))
+(let ((.def_801 (ite .def_733 .def_800 .def_714)))
+(let ((.def_802 (+ 2 .def_714)))
+(let ((.def_735 (___z24z___ (- 1))))
+(let ((.def_803 (ite .def_735 .def_802 .def_714)))
+(let ((.def_737 (___z8z___ (- 1))))
+(let ((.def_804 (ite .def_737 .def_803 .def_801)))
+(let ((.def_758 (___z22z___ (- 1))))
+(let ((.def_805 (ite .def_758 0 .def_714)))
+(let ((.def_785 (___z6z___ (- 1))))
+(let ((.def_806 (ite .def_785 .def_805 .def_804)))
+(let ((.def_807 (+ (- 1) .def_714)))
+(let ((.def_808 (+ .def_713 .def_807)))
+(let ((.def_809 (+ 1 .def_808)))
+(let ((.def_720 (___z20z___ (- 1))))
+(let ((.def_810 (ite .def_720 .def_809 .def_714)))
+(let ((.def_744 (___z4z___ (- 1))))
+(let ((.def_811 (ite .def_744 .def_810 .def_806)))
+(let ((.def_746 (___z19z___ (- 1))))
+(let ((.def_812 (ite .def_746 .def_802 .def_714)))
+(let ((.def_748 (___z3z___ (- 1))))
+(let ((.def_813 (ite .def_748 .def_812 .def_811)))
+(let ((.def_754 (= _base (- 1))))
+(let ((.def_814 (ite .def_754 0 .def_813)))
+(let ((.def_525 (___z15z___ (- 1))))
+(let ((.def_815 (= .def_525 .def_814)))
+.def_815
+)))))))))))))))))))))))))))))))))
+(assert (let ((.def_731 (___z25z___ (- 1))))
+(let ((.def_717 (___z12z___ (- 2))))
+(let ((.def_718 (<= 1 .def_717)))
+(let ((.def_714 (___z15z___ (- 2))))
+(let ((.def_713 (___z14z___ (- 2))))
+(let ((.def_715 (+ .def_713 .def_714)))
+(let ((.def_716 (<= 1 .def_715)))
+(let ((.def_719 (and .def_716 .def_718)))
+(let ((.def_816 (= .def_719 .def_731)))
+.def_816
+))))))))))
+(assert (let ((.def_820 (___z16z___ (- 2))))
+(let ((.def_818 (___z27z___ (- 1))))
+(let ((.def_821 (or .def_818 .def_820)))
+(let ((.def_754 (= _base (- 1))))
+(let ((.def_822 (or .def_754 .def_821)))
+(let ((.def_817 (not .def_754)))
+(let ((.def_819 (or .def_817 .def_818)))
+(let ((.def_823 (and .def_819 .def_822)))
+(let ((.def_637 (___z16z___ (- 1))))
+(let ((.def_824 (= .def_637 .def_823)))
+.def_824
+)))))))))))
+(assert (let ((.def_825 (___z26z___ (- 2))))
+(let ((.def_826 (___z10z___ (- 1))))
+(let ((.def_754 (= _base (- 1))))
+(let ((.def_827 (ite .def_754 .def_826 .def_825)))
+(let ((.def_642 (___z26z___ (- 1))))
+(let ((.def_828 (= .def_642 .def_827)))
+.def_828
+)))))))
+(assert (let ((.def_733 (___z9z___ (- 1))))
+(let ((.def_847 (not .def_733)))
+(let ((.def_752 (___z2z___ (- 1))))
+(let ((.def_838 (not .def_752)))
+(let ((.def_748 (___z3z___ (- 1))))
+(let ((.def_837 (not .def_748)))
+(let ((.def_839 (and .def_837 .def_838)))
+(let ((.def_744 (___z4z___ (- 1))))
+(let ((.def_836 (not .def_744)))
+(let ((.def_840 (and .def_836 .def_839)))
+(let ((.def_768 (___z5z___ (- 1))))
+(let ((.def_835 (not .def_768)))
+(let ((.def_841 (and .def_835 .def_840)))
+(let ((.def_785 (___z6z___ (- 1))))
+(let ((.def_834 (not .def_785)))
+(let ((.def_842 (and .def_834 .def_841)))
+(let ((.def_741 (___z7z___ (- 1))))
+(let ((.def_833 (not .def_741)))
+(let ((.def_843 (and .def_833 .def_842)))
+(let ((.def_737 (___z8z___ (- 1))))
+(let ((.def_832 (not .def_737)))
+(let ((.def_844 (and .def_832 .def_843)))
+(let ((.def_881 (and .def_844 .def_847)))
+(let ((.def_874 (and .def_752 .def_837)))
+(let ((.def_875 (and .def_836 .def_874)))
+(let ((.def_876 (and .def_835 .def_875)))
+(let ((.def_877 (and .def_834 .def_876)))
+(let ((.def_878 (and .def_833 .def_877)))
+(let ((.def_879 (and .def_832 .def_878)))
+(let ((.def_880 (and .def_847 .def_879)))
+(let ((.def_882 (or .def_880 .def_881)))
+(let ((.def_867 (and .def_748 .def_838)))
+(let ((.def_868 (and .def_836 .def_867)))
+(let ((.def_869 (and .def_835 .def_868)))
+(let ((.def_870 (and .def_834 .def_869)))
+(let ((.def_871 (and .def_833 .def_870)))
+(let ((.def_872 (and .def_832 .def_871)))
+(let ((.def_873 (and .def_847 .def_872)))
+(let ((.def_883 (or .def_873 .def_882)))
+(let ((.def_861 (and .def_744 .def_839)))
+(let ((.def_862 (and .def_835 .def_861)))
+(let ((.def_863 (and .def_834 .def_862)))
+(let ((.def_864 (and .def_833 .def_863)))
+(let ((.def_865 (and .def_832 .def_864)))
+(let ((.def_866 (and .def_847 .def_865)))
+(let ((.def_884 (or .def_866 .def_883)))
+(let ((.def_856 (and .def_768 .def_840)))
+(let ((.def_857 (and .def_834 .def_856)))
+(let ((.def_858 (and .def_833 .def_857)))
+(let ((.def_859 (and .def_832 .def_858)))
+(let ((.def_860 (and .def_847 .def_859)))
+(let ((.def_885 (or .def_860 .def_884)))
+(let ((.def_852 (and .def_785 .def_841)))
+(let ((.def_853 (and .def_833 .def_852)))
+(let ((.def_854 (and .def_832 .def_853)))
+(let ((.def_855 (and .def_847 .def_854)))
+(let ((.def_886 (or .def_855 .def_885)))
+(let ((.def_849 (and .def_741 .def_842)))
+(let ((.def_850 (and .def_832 .def_849)))
+(let ((.def_851 (and .def_847 .def_850)))
+(let ((.def_887 (or .def_851 .def_886)))
+(let ((.def_846 (and .def_737 .def_843)))
+(let ((.def_848 (and .def_846 .def_847)))
+(let ((.def_888 (or .def_848 .def_887)))
+(let ((.def_845 (and .def_733 .def_844)))
+(let ((.def_889 (or .def_845 .def_888)))
+(let ((.def_826 (___z10z___ (- 1))))
+(let ((.def_831 (<= 0 .def_826)))
+(let ((.def_890 (and .def_831 .def_889)))
+(let ((.def_829 (<= 5 .def_826)))
+(let ((.def_830 (not .def_829)))
+(let ((.def_891 (and .def_830 .def_890)))
+(let ((.def_818 (___z27z___ (- 1))))
+(let ((.def_892 (= .def_818 .def_891)))
+.def_892
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+(assert (let ((.def_760 (___z13z___ (- 2))))
+(let ((.def_776 (= .def_760 0)))
+(let ((.def_717 (___z12z___ (- 2))))
+(let ((.def_718 (<= 1 .def_717)))
+(let ((.def_777 (and .def_718 .def_776)))
+(let ((.def_714 (___z15z___ (- 2))))
+(let ((.def_775 (= .def_714 0)))
+(let ((.def_778 (and .def_775 .def_777)))
+(let ((.def_713 (___z14z___ (- 2))))
+(let ((.def_774 (= .def_713 0)))
+(let ((.def_779 (and .def_774 .def_778)))
+(let ((.def_750 (___z18z___ (- 1))))
+(let ((.def_893 (= .def_750 .def_779)))
+.def_893
+))))))))))))))
+(assert (let ((.def_760 (___z13z___ (- 2))))
+(let ((.def_796 (<= 1 .def_760)))
+(let ((.def_717 (___z12z___ (- 2))))
+(let ((.def_718 (<= 1 .def_717)))
+(let ((.def_797 (and .def_718 .def_796)))
+(let ((.def_746 (___z19z___ (- 1))))
+(let ((.def_894 (= .def_746 .def_797)))
+.def_894
+))))))))
+(push 1)
+(assert (let ((.def_725 (___z11z___ (- 1))))
+(let ((.def_538 (___z11z___ 0)))
+(let ((.def_895 (and .def_538 .def_725)))
+(let ((.def_754 (= _base (- 1))))
+(let ((.def_817 (not .def_754)))
+(let ((.def_896 (or .def_817 .def_895)))
+(let ((.def_897 (not .def_896)))
+.def_897
+))))))))
+(assert true
+)
+(check-sat)
+(pop 1)
+(assert (let ((.def_725 (___z11z___ (- 1))))
+.def_725
+))
+(assert (let ((.def_898 (___z11z___ (- 2))))
+.def_898
+))
+(push 1)
+(assert (let ((.def_907 (___z20z___ _n)))
+(let ((.def_899 (+ _n (- 1))))
+(let ((.def_904 (___z12z___ .def_899)))
+(let ((.def_905 (<= 1 .def_904)))
+(let ((.def_901 (___z15z___ .def_899)))
+(let ((.def_900 (___z14z___ .def_899)))
+(let ((.def_902 (+ .def_900 .def_901)))
+(let ((.def_903 (<= 1 .def_902)))
+(let ((.def_906 (and .def_903 .def_905)))
+(let ((.def_908 (= .def_906 .def_907)))
+.def_908
+)))))))))))
+(assert (let ((.def_914 (___z11z___ _n)))
+(let ((.def_911 (___z15z___ _n)))
+(let ((.def_912 (<= 0 .def_911)))
+(let ((.def_909 (___z16z___ _n)))
+(let ((.def_910 (not .def_909)))
+(let ((.def_913 (or .def_910 .def_912)))
+(let ((.def_915 (= .def_913 .def_914)))
+.def_915
+))))))))
+(assert (let ((.def_917 (___z21z___ _n)))
+(let ((.def_899 (+ _n (- 1))))
+(let ((.def_900 (___z14z___ .def_899)))
+(let ((.def_916 (<= 1 .def_900)))
+(let ((.def_918 (= .def_916 .def_917)))
+.def_918
+))))))
+(assert (let ((.def_946 (___z12z___ _n)))
+(let ((.def_899 (+ _n (- 1))))
+(let ((.def_904 (___z12z___ .def_899)))
+(let ((.def_919 (+ (- 1) .def_904)))
+(let ((.def_920 (___z25z___ _n)))
+(let ((.def_921 (ite .def_920 .def_919 .def_904)))
+(let ((.def_922 (___z9z___ _n)))
+(let ((.def_923 (ite .def_922 .def_921 .def_904)))
+(let ((.def_924 (___z24z___ _n)))
+(let ((.def_925 (ite .def_924 .def_919 .def_904)))
+(let ((.def_926 (___z8z___ _n)))
+(let ((.def_927 (ite .def_926 .def_925 .def_923)))
+(let ((.def_928 (___z23z___ _n)))
+(let ((.def_929 (ite .def_928 .def_919 .def_904)))
+(let ((.def_930 (___z7z___ _n)))
+(let ((.def_931 (ite .def_930 .def_929 .def_927)))
+(let ((.def_907 (___z20z___ _n)))
+(let ((.def_932 (ite .def_907 .def_919 .def_904)))
+(let ((.def_933 (___z4z___ _n)))
+(let ((.def_934 (ite .def_933 .def_932 .def_931)))
+(let ((.def_935 (___z19z___ _n)))
+(let ((.def_936 (ite .def_935 .def_919 .def_904)))
+(let ((.def_937 (___z3z___ _n)))
+(let ((.def_938 (ite .def_937 .def_936 .def_934)))
+(let ((.def_939 (___z18z___ _n)))
+(let ((.def_940 (ite .def_939 .def_919 .def_904)))
+(let ((.def_941 (___z2z___ _n)))
+(let ((.def_942 (ite .def_941 .def_940 .def_938)))
+(let ((.def_943 (___z26z___ _n)))
+(let ((.def_944 (= _n _base)))
+(let ((.def_945 (ite .def_944 .def_943 .def_942)))
+(let ((.def_947 (= .def_945 .def_946)))
+.def_947
+)))))))))))))))))))))))))))))))))
+(assert (let ((.def_949 (___z22z___ _n)))
+(let ((.def_899 (+ _n (- 1))))
+(let ((.def_901 (___z15z___ .def_899)))
+(let ((.def_948 (= .def_901 1)))
+(let ((.def_950 (= .def_948 .def_949)))
+.def_950
+))))))
+(assert (let ((.def_964 (___z13z___ _n)))
+(let ((.def_899 (+ _n (- 1))))
+(let ((.def_951 (___z13z___ .def_899)))
+(let ((.def_952 (+ (- 1) .def_951)))
+(let ((.def_924 (___z24z___ _n)))
+(let ((.def_953 (ite .def_924 .def_952 .def_951)))
+(let ((.def_926 (___z8z___ _n)))
+(let ((.def_954 (ite .def_926 .def_953 .def_951)))
+(let ((.def_928 (___z23z___ _n)))
+(let ((.def_955 (ite .def_928 1 .def_951)))
+(let ((.def_930 (___z7z___ _n)))
+(let ((.def_956 (ite .def_930 .def_955 .def_954)))
+(let ((.def_957 (+ 1 .def_951)))
+(let ((.def_917 (___z21z___ _n)))
+(let ((.def_958 (ite .def_917 .def_957 .def_951)))
+(let ((.def_959 (___z5z___ _n)))
+(let ((.def_960 (ite .def_959 .def_958 .def_956)))
+(let ((.def_935 (___z19z___ _n)))
+(let ((.def_961 (ite .def_935 .def_952 .def_951)))
+(let ((.def_937 (___z3z___ _n)))
+(let ((.def_962 (ite .def_937 .def_961 .def_960)))
+(let ((.def_944 (= _n _base)))
+(let ((.def_963 (ite .def_944 0 .def_962)))
+(let ((.def_965 (= .def_963 .def_964)))
+.def_965
+)))))))))))))))))))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_951 (___z13z___ .def_899)))
+(let ((.def_968 (= .def_951 0)))
+(let ((.def_904 (___z12z___ .def_899)))
+(let ((.def_905 (<= 1 .def_904)))
+(let ((.def_969 (and .def_905 .def_968)))
+(let ((.def_901 (___z15z___ .def_899)))
+(let ((.def_967 (= .def_901 0)))
+(let ((.def_970 (and .def_967 .def_969)))
+(let ((.def_900 (___z14z___ .def_899)))
+(let ((.def_966 (= .def_900 0)))
+(let ((.def_971 (and .def_966 .def_970)))
+(let ((.def_928 (___z23z___ _n)))
+(let ((.def_972 (= .def_928 .def_971)))
+.def_972
+)))))))))))))))
+(assert (let ((.def_987 (___z14z___ _n)))
+(let ((.def_899 (+ _n (- 1))))
+(let ((.def_900 (___z14z___ .def_899)))
+(let ((.def_920 (___z25z___ _n)))
+(let ((.def_973 (ite .def_920 0 .def_900)))
+(let ((.def_922 (___z9z___ _n)))
+(let ((.def_974 (ite .def_922 .def_973 .def_900)))
+(let ((.def_975 (+ 1 .def_900)))
+(let ((.def_949 (___z22z___ _n)))
+(let ((.def_976 (ite .def_949 .def_975 .def_900)))
+(let ((.def_977 (___z6z___ _n)))
+(let ((.def_978 (ite .def_977 .def_976 .def_974)))
+(let ((.def_979 (+ (- 1) .def_900)))
+(let ((.def_917 (___z21z___ _n)))
+(let ((.def_980 (ite .def_917 .def_979 .def_900)))
+(let ((.def_959 (___z5z___ _n)))
+(let ((.def_981 (ite .def_959 .def_980 .def_978)))
+(let ((.def_907 (___z20z___ _n)))
+(let ((.def_982 (ite .def_907 0 .def_900)))
+(let ((.def_933 (___z4z___ _n)))
+(let ((.def_983 (ite .def_933 .def_982 .def_981)))
+(let ((.def_939 (___z18z___ _n)))
+(let ((.def_984 (ite .def_939 .def_975 .def_900)))
+(let ((.def_941 (___z2z___ _n)))
+(let ((.def_985 (ite .def_941 .def_984 .def_983)))
+(let ((.def_944 (= _n _base)))
+(let ((.def_986 (ite .def_944 0 .def_985)))
+(let ((.def_988 (= .def_986 .def_987)))
+.def_988
+)))))))))))))))))))))))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_951 (___z13z___ .def_899)))
+(let ((.def_989 (<= 1 .def_951)))
+(let ((.def_904 (___z12z___ .def_899)))
+(let ((.def_905 (<= 1 .def_904)))
+(let ((.def_990 (and .def_905 .def_989)))
+(let ((.def_924 (___z24z___ _n)))
+(let ((.def_991 (= .def_924 .def_990)))
+.def_991
+)))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_901 (___z15z___ .def_899)))
+(let ((.def_900 (___z14z___ .def_899)))
+(let ((.def_902 (+ .def_900 .def_901)))
+(let ((.def_992 (+ 1 .def_902)))
+(let ((.def_920 (___z25z___ _n)))
+(let ((.def_993 (ite .def_920 .def_992 .def_901)))
+(let ((.def_922 (___z9z___ _n)))
+(let ((.def_994 (ite .def_922 .def_993 .def_901)))
+(let ((.def_995 (+ 2 .def_901)))
+(let ((.def_924 (___z24z___ _n)))
+(let ((.def_996 (ite .def_924 .def_995 .def_901)))
+(let ((.def_926 (___z8z___ _n)))
+(let ((.def_997 (ite .def_926 .def_996 .def_994)))
+(let ((.def_949 (___z22z___ _n)))
+(let ((.def_998 (ite .def_949 0 .def_901)))
+(let ((.def_977 (___z6z___ _n)))
+(let ((.def_999 (ite .def_977 .def_998 .def_997)))
+(let ((.def_1000 (+ (- 1) .def_901)))
+(let ((.def_1001 (+ .def_900 .def_1000)))
+(let ((.def_1002 (+ 1 .def_1001)))
+(let ((.def_907 (___z20z___ _n)))
+(let ((.def_1003 (ite .def_907 .def_1002 .def_901)))
+(let ((.def_933 (___z4z___ _n)))
+(let ((.def_1004 (ite .def_933 .def_1003 .def_999)))
+(let ((.def_935 (___z19z___ _n)))
+(let ((.def_1005 (ite .def_935 .def_995 .def_901)))
+(let ((.def_937 (___z3z___ _n)))
+(let ((.def_1006 (ite .def_937 .def_1005 .def_1004)))
+(let ((.def_944 (= _n _base)))
+(let ((.def_1007 (ite .def_944 0 .def_1006)))
+(let ((.def_911 (___z15z___ _n)))
+(let ((.def_1008 (= .def_911 .def_1007)))
+.def_1008
+))))))))))))))))))))))))))))))))))
+(assert (let ((.def_920 (___z25z___ _n)))
+(let ((.def_899 (+ _n (- 1))))
+(let ((.def_904 (___z12z___ .def_899)))
+(let ((.def_905 (<= 1 .def_904)))
+(let ((.def_901 (___z15z___ .def_899)))
+(let ((.def_900 (___z14z___ .def_899)))
+(let ((.def_902 (+ .def_900 .def_901)))
+(let ((.def_903 (<= 1 .def_902)))
+(let ((.def_906 (and .def_903 .def_905)))
+(let ((.def_1009 (= .def_906 .def_920)))
+.def_1009
+)))))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_1013 (___z16z___ .def_899)))
+(let ((.def_1011 (___z27z___ _n)))
+(let ((.def_1014 (or .def_1011 .def_1013)))
+(let ((.def_944 (= _n _base)))
+(let ((.def_1015 (or .def_944 .def_1014)))
+(let ((.def_1010 (not .def_944)))
+(let ((.def_1012 (or .def_1010 .def_1011)))
+(let ((.def_1016 (and .def_1012 .def_1015)))
+(let ((.def_909 (___z16z___ _n)))
+(let ((.def_1017 (= .def_909 .def_1016)))
+.def_1017
+))))))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_1018 (___z26z___ .def_899)))
+(let ((.def_1019 (___z10z___ _n)))
+(let ((.def_944 (= _n _base)))
+(let ((.def_1020 (ite .def_944 .def_1019 .def_1018)))
+(let ((.def_943 (___z26z___ _n)))
+(let ((.def_1021 (= .def_943 .def_1020)))
+.def_1021
+))))))))
+(assert (let ((.def_922 (___z9z___ _n)))
+(let ((.def_1040 (not .def_922)))
+(let ((.def_941 (___z2z___ _n)))
+(let ((.def_1031 (not .def_941)))
+(let ((.def_937 (___z3z___ _n)))
+(let ((.def_1030 (not .def_937)))
+(let ((.def_1032 (and .def_1030 .def_1031)))
+(let ((.def_933 (___z4z___ _n)))
+(let ((.def_1029 (not .def_933)))
+(let ((.def_1033 (and .def_1029 .def_1032)))
+(let ((.def_959 (___z5z___ _n)))
+(let ((.def_1028 (not .def_959)))
+(let ((.def_1034 (and .def_1028 .def_1033)))
+(let ((.def_977 (___z6z___ _n)))
+(let ((.def_1027 (not .def_977)))
+(let ((.def_1035 (and .def_1027 .def_1034)))
+(let ((.def_930 (___z7z___ _n)))
+(let ((.def_1026 (not .def_930)))
+(let ((.def_1036 (and .def_1026 .def_1035)))
+(let ((.def_926 (___z8z___ _n)))
+(let ((.def_1025 (not .def_926)))
+(let ((.def_1037 (and .def_1025 .def_1036)))
+(let ((.def_1074 (and .def_1037 .def_1040)))
+(let ((.def_1067 (and .def_941 .def_1030)))
+(let ((.def_1068 (and .def_1029 .def_1067)))
+(let ((.def_1069 (and .def_1028 .def_1068)))
+(let ((.def_1070 (and .def_1027 .def_1069)))
+(let ((.def_1071 (and .def_1026 .def_1070)))
+(let ((.def_1072 (and .def_1025 .def_1071)))
+(let ((.def_1073 (and .def_1040 .def_1072)))
+(let ((.def_1075 (or .def_1073 .def_1074)))
+(let ((.def_1060 (and .def_937 .def_1031)))
+(let ((.def_1061 (and .def_1029 .def_1060)))
+(let ((.def_1062 (and .def_1028 .def_1061)))
+(let ((.def_1063 (and .def_1027 .def_1062)))
+(let ((.def_1064 (and .def_1026 .def_1063)))
+(let ((.def_1065 (and .def_1025 .def_1064)))
+(let ((.def_1066 (and .def_1040 .def_1065)))
+(let ((.def_1076 (or .def_1066 .def_1075)))
+(let ((.def_1054 (and .def_933 .def_1032)))
+(let ((.def_1055 (and .def_1028 .def_1054)))
+(let ((.def_1056 (and .def_1027 .def_1055)))
+(let ((.def_1057 (and .def_1026 .def_1056)))
+(let ((.def_1058 (and .def_1025 .def_1057)))
+(let ((.def_1059 (and .def_1040 .def_1058)))
+(let ((.def_1077 (or .def_1059 .def_1076)))
+(let ((.def_1049 (and .def_959 .def_1033)))
+(let ((.def_1050 (and .def_1027 .def_1049)))
+(let ((.def_1051 (and .def_1026 .def_1050)))
+(let ((.def_1052 (and .def_1025 .def_1051)))
+(let ((.def_1053 (and .def_1040 .def_1052)))
+(let ((.def_1078 (or .def_1053 .def_1077)))
+(let ((.def_1045 (and .def_977 .def_1034)))
+(let ((.def_1046 (and .def_1026 .def_1045)))
+(let ((.def_1047 (and .def_1025 .def_1046)))
+(let ((.def_1048 (and .def_1040 .def_1047)))
+(let ((.def_1079 (or .def_1048 .def_1078)))
+(let ((.def_1042 (and .def_930 .def_1035)))
+(let ((.def_1043 (and .def_1025 .def_1042)))
+(let ((.def_1044 (and .def_1040 .def_1043)))
+(let ((.def_1080 (or .def_1044 .def_1079)))
+(let ((.def_1039 (and .def_926 .def_1036)))
+(let ((.def_1041 (and .def_1039 .def_1040)))
+(let ((.def_1081 (or .def_1041 .def_1080)))
+(let ((.def_1038 (and .def_922 .def_1037)))
+(let ((.def_1082 (or .def_1038 .def_1081)))
+(let ((.def_1019 (___z10z___ _n)))
+(let ((.def_1024 (<= 0 .def_1019)))
+(let ((.def_1083 (and .def_1024 .def_1082)))
+(let ((.def_1022 (<= 5 .def_1019)))
+(let ((.def_1023 (not .def_1022)))
+(let ((.def_1084 (and .def_1023 .def_1083)))
+(let ((.def_1011 (___z27z___ _n)))
+(let ((.def_1085 (= .def_1011 .def_1084)))
+.def_1085
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_951 (___z13z___ .def_899)))
+(let ((.def_968 (= .def_951 0)))
+(let ((.def_904 (___z12z___ .def_899)))
+(let ((.def_905 (<= 1 .def_904)))
+(let ((.def_969 (and .def_905 .def_968)))
+(let ((.def_901 (___z15z___ .def_899)))
+(let ((.def_967 (= .def_901 0)))
+(let ((.def_970 (and .def_967 .def_969)))
+(let ((.def_900 (___z14z___ .def_899)))
+(let ((.def_966 (= .def_900 0)))
+(let ((.def_971 (and .def_966 .def_970)))
+(let ((.def_939 (___z18z___ _n)))
+(let ((.def_1086 (= .def_939 .def_971)))
+.def_1086
+)))))))))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_951 (___z13z___ .def_899)))
+(let ((.def_989 (<= 1 .def_951)))
+(let ((.def_904 (___z12z___ .def_899)))
+(let ((.def_905 (<= 1 .def_904)))
+(let ((.def_990 (and .def_905 .def_989)))
+(let ((.def_935 (___z19z___ _n)))
+(let ((.def_1087 (= .def_935 .def_990)))
+.def_1087
+)))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_1096 (___z20z___ .def_899)))
+(let ((.def_1088 (+ (- 1) .def_899)))
+(let ((.def_1093 (___z12z___ .def_1088)))
+(let ((.def_1094 (<= 1 .def_1093)))
+(let ((.def_1090 (___z15z___ .def_1088)))
+(let ((.def_1089 (___z14z___ .def_1088)))
+(let ((.def_1091 (+ .def_1089 .def_1090)))
+(let ((.def_1092 (<= 1 .def_1091)))
+(let ((.def_1095 (and .def_1092 .def_1094)))
+(let ((.def_1097 (= .def_1095 .def_1096)))
+.def_1097
+))))))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_1101 (___z11z___ .def_899)))
+(let ((.def_901 (___z15z___ .def_899)))
+(let ((.def_1099 (<= 0 .def_901)))
+(let ((.def_1013 (___z16z___ .def_899)))
+(let ((.def_1098 (not .def_1013)))
+(let ((.def_1100 (or .def_1098 .def_1099)))
+(let ((.def_1102 (= .def_1100 .def_1101)))
+.def_1102
+)))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_1104 (___z21z___ .def_899)))
+(let ((.def_1088 (+ (- 1) .def_899)))
+(let ((.def_1089 (___z14z___ .def_1088)))
+(let ((.def_1103 (<= 1 .def_1089)))
+(let ((.def_1105 (= .def_1103 .def_1104)))
+.def_1105
+)))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_1088 (+ (- 1) .def_899)))
+(let ((.def_1093 (___z12z___ .def_1088)))
+(let ((.def_1106 (+ (- 1) .def_1093)))
+(let ((.def_1107 (___z25z___ .def_899)))
+(let ((.def_1108 (ite .def_1107 .def_1106 .def_1093)))
+(let ((.def_1109 (___z9z___ .def_899)))
+(let ((.def_1110 (ite .def_1109 .def_1108 .def_1093)))
+(let ((.def_1111 (___z24z___ .def_899)))
+(let ((.def_1112 (ite .def_1111 .def_1106 .def_1093)))
+(let ((.def_1113 (___z8z___ .def_899)))
+(let ((.def_1114 (ite .def_1113 .def_1112 .def_1110)))
+(let ((.def_1115 (___z23z___ .def_899)))
+(let ((.def_1116 (ite .def_1115 .def_1106 .def_1093)))
+(let ((.def_1117 (___z7z___ .def_899)))
+(let ((.def_1118 (ite .def_1117 .def_1116 .def_1114)))
+(let ((.def_1096 (___z20z___ .def_899)))
+(let ((.def_1119 (ite .def_1096 .def_1106 .def_1093)))
+(let ((.def_1120 (___z4z___ .def_899)))
+(let ((.def_1121 (ite .def_1120 .def_1119 .def_1118)))
+(let ((.def_1122 (___z19z___ .def_899)))
+(let ((.def_1123 (ite .def_1122 .def_1106 .def_1093)))
+(let ((.def_1124 (___z3z___ .def_899)))
+(let ((.def_1125 (ite .def_1124 .def_1123 .def_1121)))
+(let ((.def_1126 (___z18z___ .def_899)))
+(let ((.def_1127 (ite .def_1126 .def_1106 .def_1093)))
+(let ((.def_1128 (___z2z___ .def_899)))
+(let ((.def_1129 (ite .def_1128 .def_1127 .def_1125)))
+(let ((.def_1018 (___z26z___ .def_899)))
+(let ((.def_1130 (* (- 1) _base)))
+(let ((.def_1131 (+ _n .def_1130)))
+(let ((.def_1132 (= .def_1131 1)))
+(let ((.def_1133 (ite .def_1132 .def_1018 .def_1129)))
+(let ((.def_904 (___z12z___ .def_899)))
+(let ((.def_1134 (= .def_904 .def_1133)))
+.def_1134
+))))))))))))))))))))))))))))))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_1136 (___z22z___ .def_899)))
+(let ((.def_1088 (+ (- 1) .def_899)))
+(let ((.def_1090 (___z15z___ .def_1088)))
+(let ((.def_1135 (= .def_1090 1)))
+(let ((.def_1137 (= .def_1135 .def_1136)))
+.def_1137
+)))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_1088 (+ (- 1) .def_899)))
+(let ((.def_1138 (___z13z___ .def_1088)))
+(let ((.def_1139 (+ (- 1) .def_1138)))
+(let ((.def_1111 (___z24z___ .def_899)))
+(let ((.def_1140 (ite .def_1111 .def_1139 .def_1138)))
+(let ((.def_1113 (___z8z___ .def_899)))
+(let ((.def_1141 (ite .def_1113 .def_1140 .def_1138)))
+(let ((.def_1115 (___z23z___ .def_899)))
+(let ((.def_1142 (ite .def_1115 1 .def_1138)))
+(let ((.def_1117 (___z7z___ .def_899)))
+(let ((.def_1143 (ite .def_1117 .def_1142 .def_1141)))
+(let ((.def_1144 (+ 1 .def_1138)))
+(let ((.def_1104 (___z21z___ .def_899)))
+(let ((.def_1145 (ite .def_1104 .def_1144 .def_1138)))
+(let ((.def_1146 (___z5z___ .def_899)))
+(let ((.def_1147 (ite .def_1146 .def_1145 .def_1143)))
+(let ((.def_1122 (___z19z___ .def_899)))
+(let ((.def_1148 (ite .def_1122 .def_1139 .def_1138)))
+(let ((.def_1124 (___z3z___ .def_899)))
+(let ((.def_1149 (ite .def_1124 .def_1148 .def_1147)))
+(let ((.def_1130 (* (- 1) _base)))
+(let ((.def_1131 (+ _n .def_1130)))
+(let ((.def_1132 (= .def_1131 1)))
+(let ((.def_1150 (ite .def_1132 0 .def_1149)))
+(let ((.def_951 (___z13z___ .def_899)))
+(let ((.def_1151 (= .def_951 .def_1150)))
+.def_1151
+))))))))))))))))))))))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_1088 (+ (- 1) .def_899)))
+(let ((.def_1138 (___z13z___ .def_1088)))
+(let ((.def_1154 (= .def_1138 0)))
+(let ((.def_1093 (___z12z___ .def_1088)))
+(let ((.def_1094 (<= 1 .def_1093)))
+(let ((.def_1155 (and .def_1094 .def_1154)))
+(let ((.def_1090 (___z15z___ .def_1088)))
+(let ((.def_1153 (= .def_1090 0)))
+(let ((.def_1156 (and .def_1153 .def_1155)))
+(let ((.def_1089 (___z14z___ .def_1088)))
+(let ((.def_1152 (= .def_1089 0)))
+(let ((.def_1157 (and .def_1152 .def_1156)))
+(let ((.def_1115 (___z23z___ .def_899)))
+(let ((.def_1158 (= .def_1115 .def_1157)))
+.def_1158
+))))))))))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_1088 (+ (- 1) .def_899)))
+(let ((.def_1089 (___z14z___ .def_1088)))
+(let ((.def_1107 (___z25z___ .def_899)))
+(let ((.def_1159 (ite .def_1107 0 .def_1089)))
+(let ((.def_1109 (___z9z___ .def_899)))
+(let ((.def_1160 (ite .def_1109 .def_1159 .def_1089)))
+(let ((.def_1161 (+ 1 .def_1089)))
+(let ((.def_1136 (___z22z___ .def_899)))
+(let ((.def_1162 (ite .def_1136 .def_1161 .def_1089)))
+(let ((.def_1163 (___z6z___ .def_899)))
+(let ((.def_1164 (ite .def_1163 .def_1162 .def_1160)))
+(let ((.def_1165 (+ (- 1) .def_1089)))
+(let ((.def_1104 (___z21z___ .def_899)))
+(let ((.def_1166 (ite .def_1104 .def_1165 .def_1089)))
+(let ((.def_1146 (___z5z___ .def_899)))
+(let ((.def_1167 (ite .def_1146 .def_1166 .def_1164)))
+(let ((.def_1096 (___z20z___ .def_899)))
+(let ((.def_1168 (ite .def_1096 0 .def_1089)))
+(let ((.def_1120 (___z4z___ .def_899)))
+(let ((.def_1169 (ite .def_1120 .def_1168 .def_1167)))
+(let ((.def_1126 (___z18z___ .def_899)))
+(let ((.def_1170 (ite .def_1126 .def_1161 .def_1089)))
+(let ((.def_1128 (___z2z___ .def_899)))
+(let ((.def_1171 (ite .def_1128 .def_1170 .def_1169)))
+(let ((.def_1130 (* (- 1) _base)))
+(let ((.def_1131 (+ _n .def_1130)))
+(let ((.def_1132 (= .def_1131 1)))
+(let ((.def_1172 (ite .def_1132 0 .def_1171)))
+(let ((.def_900 (___z14z___ .def_899)))
+(let ((.def_1173 (= .def_900 .def_1172)))
+.def_1173
+))))))))))))))))))))))))))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_1088 (+ (- 1) .def_899)))
+(let ((.def_1138 (___z13z___ .def_1088)))
+(let ((.def_1174 (<= 1 .def_1138)))
+(let ((.def_1093 (___z12z___ .def_1088)))
+(let ((.def_1094 (<= 1 .def_1093)))
+(let ((.def_1175 (and .def_1094 .def_1174)))
+(let ((.def_1111 (___z24z___ .def_899)))
+(let ((.def_1176 (= .def_1111 .def_1175)))
+.def_1176
+))))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_1088 (+ (- 1) .def_899)))
+(let ((.def_1090 (___z15z___ .def_1088)))
+(let ((.def_1089 (___z14z___ .def_1088)))
+(let ((.def_1091 (+ .def_1089 .def_1090)))
+(let ((.def_1177 (+ 1 .def_1091)))
+(let ((.def_1107 (___z25z___ .def_899)))
+(let ((.def_1178 (ite .def_1107 .def_1177 .def_1090)))
+(let ((.def_1109 (___z9z___ .def_899)))
+(let ((.def_1179 (ite .def_1109 .def_1178 .def_1090)))
+(let ((.def_1180 (+ 2 .def_1090)))
+(let ((.def_1111 (___z24z___ .def_899)))
+(let ((.def_1181 (ite .def_1111 .def_1180 .def_1090)))
+(let ((.def_1113 (___z8z___ .def_899)))
+(let ((.def_1182 (ite .def_1113 .def_1181 .def_1179)))
+(let ((.def_1136 (___z22z___ .def_899)))
+(let ((.def_1183 (ite .def_1136 0 .def_1090)))
+(let ((.def_1163 (___z6z___ .def_899)))
+(let ((.def_1184 (ite .def_1163 .def_1183 .def_1182)))
+(let ((.def_1185 (+ (- 1) .def_1090)))
+(let ((.def_1186 (+ .def_1089 .def_1185)))
+(let ((.def_1187 (+ 1 .def_1186)))
+(let ((.def_1096 (___z20z___ .def_899)))
+(let ((.def_1188 (ite .def_1096 .def_1187 .def_1090)))
+(let ((.def_1120 (___z4z___ .def_899)))
+(let ((.def_1189 (ite .def_1120 .def_1188 .def_1184)))
+(let ((.def_1122 (___z19z___ .def_899)))
+(let ((.def_1190 (ite .def_1122 .def_1180 .def_1090)))
+(let ((.def_1124 (___z3z___ .def_899)))
+(let ((.def_1191 (ite .def_1124 .def_1190 .def_1189)))
+(let ((.def_1130 (* (- 1) _base)))
+(let ((.def_1131 (+ _n .def_1130)))
+(let ((.def_1132 (= .def_1131 1)))
+(let ((.def_1192 (ite .def_1132 0 .def_1191)))
+(let ((.def_901 (___z15z___ .def_899)))
+(let ((.def_1193 (= .def_901 .def_1192)))
+.def_1193
+)))))))))))))))))))))))))))))))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_1107 (___z25z___ .def_899)))
+(let ((.def_1088 (+ (- 1) .def_899)))
+(let ((.def_1093 (___z12z___ .def_1088)))
+(let ((.def_1094 (<= 1 .def_1093)))
+(let ((.def_1090 (___z15z___ .def_1088)))
+(let ((.def_1089 (___z14z___ .def_1088)))
+(let ((.def_1091 (+ .def_1089 .def_1090)))
+(let ((.def_1092 (<= 1 .def_1091)))
+(let ((.def_1095 (and .def_1092 .def_1094)))
+(let ((.def_1194 (= .def_1095 .def_1107)))
+.def_1194
+))))))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_1088 (+ (- 1) .def_899)))
+(let ((.def_1198 (___z16z___ .def_1088)))
+(let ((.def_1196 (___z27z___ .def_899)))
+(let ((.def_1199 (or .def_1196 .def_1198)))
+(let ((.def_1130 (* (- 1) _base)))
+(let ((.def_1131 (+ _n .def_1130)))
+(let ((.def_1132 (= .def_1131 1)))
+(let ((.def_1200 (or .def_1132 .def_1199)))
+(let ((.def_1195 (not .def_1132)))
+(let ((.def_1197 (or .def_1195 .def_1196)))
+(let ((.def_1201 (and .def_1197 .def_1200)))
+(let ((.def_1013 (___z16z___ .def_899)))
+(let ((.def_1202 (= .def_1013 .def_1201)))
+.def_1202
+)))))))))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_1088 (+ (- 1) .def_899)))
+(let ((.def_1203 (___z26z___ .def_1088)))
+(let ((.def_1204 (___z10z___ .def_899)))
+(let ((.def_1130 (* (- 1) _base)))
+(let ((.def_1131 (+ _n .def_1130)))
+(let ((.def_1132 (= .def_1131 1)))
+(let ((.def_1205 (ite .def_1132 .def_1204 .def_1203)))
+(let ((.def_1018 (___z26z___ .def_899)))
+(let ((.def_1206 (= .def_1018 .def_1205)))
+.def_1206
+)))))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_1109 (___z9z___ .def_899)))
+(let ((.def_1225 (not .def_1109)))
+(let ((.def_1128 (___z2z___ .def_899)))
+(let ((.def_1216 (not .def_1128)))
+(let ((.def_1124 (___z3z___ .def_899)))
+(let ((.def_1215 (not .def_1124)))
+(let ((.def_1217 (and .def_1215 .def_1216)))
+(let ((.def_1120 (___z4z___ .def_899)))
+(let ((.def_1214 (not .def_1120)))
+(let ((.def_1218 (and .def_1214 .def_1217)))
+(let ((.def_1146 (___z5z___ .def_899)))
+(let ((.def_1213 (not .def_1146)))
+(let ((.def_1219 (and .def_1213 .def_1218)))
+(let ((.def_1163 (___z6z___ .def_899)))
+(let ((.def_1212 (not .def_1163)))
+(let ((.def_1220 (and .def_1212 .def_1219)))
+(let ((.def_1117 (___z7z___ .def_899)))
+(let ((.def_1211 (not .def_1117)))
+(let ((.def_1221 (and .def_1211 .def_1220)))
+(let ((.def_1113 (___z8z___ .def_899)))
+(let ((.def_1210 (not .def_1113)))
+(let ((.def_1222 (and .def_1210 .def_1221)))
+(let ((.def_1259 (and .def_1222 .def_1225)))
+(let ((.def_1252 (and .def_1128 .def_1215)))
+(let ((.def_1253 (and .def_1214 .def_1252)))
+(let ((.def_1254 (and .def_1213 .def_1253)))
+(let ((.def_1255 (and .def_1212 .def_1254)))
+(let ((.def_1256 (and .def_1211 .def_1255)))
+(let ((.def_1257 (and .def_1210 .def_1256)))
+(let ((.def_1258 (and .def_1225 .def_1257)))
+(let ((.def_1260 (or .def_1258 .def_1259)))
+(let ((.def_1245 (and .def_1124 .def_1216)))
+(let ((.def_1246 (and .def_1214 .def_1245)))
+(let ((.def_1247 (and .def_1213 .def_1246)))
+(let ((.def_1248 (and .def_1212 .def_1247)))
+(let ((.def_1249 (and .def_1211 .def_1248)))
+(let ((.def_1250 (and .def_1210 .def_1249)))
+(let ((.def_1251 (and .def_1225 .def_1250)))
+(let ((.def_1261 (or .def_1251 .def_1260)))
+(let ((.def_1239 (and .def_1120 .def_1217)))
+(let ((.def_1240 (and .def_1213 .def_1239)))
+(let ((.def_1241 (and .def_1212 .def_1240)))
+(let ((.def_1242 (and .def_1211 .def_1241)))
+(let ((.def_1243 (and .def_1210 .def_1242)))
+(let ((.def_1244 (and .def_1225 .def_1243)))
+(let ((.def_1262 (or .def_1244 .def_1261)))
+(let ((.def_1234 (and .def_1146 .def_1218)))
+(let ((.def_1235 (and .def_1212 .def_1234)))
+(let ((.def_1236 (and .def_1211 .def_1235)))
+(let ((.def_1237 (and .def_1210 .def_1236)))
+(let ((.def_1238 (and .def_1225 .def_1237)))
+(let ((.def_1263 (or .def_1238 .def_1262)))
+(let ((.def_1230 (and .def_1163 .def_1219)))
+(let ((.def_1231 (and .def_1211 .def_1230)))
+(let ((.def_1232 (and .def_1210 .def_1231)))
+(let ((.def_1233 (and .def_1225 .def_1232)))
+(let ((.def_1264 (or .def_1233 .def_1263)))
+(let ((.def_1227 (and .def_1117 .def_1220)))
+(let ((.def_1228 (and .def_1210 .def_1227)))
+(let ((.def_1229 (and .def_1225 .def_1228)))
+(let ((.def_1265 (or .def_1229 .def_1264)))
+(let ((.def_1224 (and .def_1113 .def_1221)))
+(let ((.def_1226 (and .def_1224 .def_1225)))
+(let ((.def_1266 (or .def_1226 .def_1265)))
+(let ((.def_1223 (and .def_1109 .def_1222)))
+(let ((.def_1267 (or .def_1223 .def_1266)))
+(let ((.def_1204 (___z10z___ .def_899)))
+(let ((.def_1209 (<= 0 .def_1204)))
+(let ((.def_1268 (and .def_1209 .def_1267)))
+(let ((.def_1207 (<= 5 .def_1204)))
+(let ((.def_1208 (not .def_1207)))
+(let ((.def_1269 (and .def_1208 .def_1268)))
+(let ((.def_1196 (___z27z___ .def_899)))
+(let ((.def_1270 (= .def_1196 .def_1269)))
+.def_1270
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_1088 (+ (- 1) .def_899)))
+(let ((.def_1138 (___z13z___ .def_1088)))
+(let ((.def_1154 (= .def_1138 0)))
+(let ((.def_1093 (___z12z___ .def_1088)))
+(let ((.def_1094 (<= 1 .def_1093)))
+(let ((.def_1155 (and .def_1094 .def_1154)))
+(let ((.def_1090 (___z15z___ .def_1088)))
+(let ((.def_1153 (= .def_1090 0)))
+(let ((.def_1156 (and .def_1153 .def_1155)))
+(let ((.def_1089 (___z14z___ .def_1088)))
+(let ((.def_1152 (= .def_1089 0)))
+(let ((.def_1157 (and .def_1152 .def_1156)))
+(let ((.def_1126 (___z18z___ .def_899)))
+(let ((.def_1271 (= .def_1126 .def_1157)))
+.def_1271
+))))))))))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_1088 (+ (- 1) .def_899)))
+(let ((.def_1138 (___z13z___ .def_1088)))
+(let ((.def_1174 (<= 1 .def_1138)))
+(let ((.def_1093 (___z12z___ .def_1088)))
+(let ((.def_1094 (<= 1 .def_1093)))
+(let ((.def_1175 (and .def_1094 .def_1174)))
+(let ((.def_1122 (___z19z___ .def_899)))
+(let ((.def_1272 (= .def_1122 .def_1175)))
+.def_1272
+))))))))))
+(assert (let ((.def_899 (+ _n (- 1))))
+(let ((.def_1101 (___z11z___ .def_899)))
+.def_1101
+)))
+(assert (let ((.def_914 (___z11z___ _n)))
+(let ((.def_754 (= _base (- 1))))
+(let ((.def_817 (not .def_754)))
+(let ((.def_1273 (or .def_817 .def_914)))
+(let ((.def_1274 (not .def_1273)))
+.def_1274
+))))))
+(assert true
+)
+(check-sat)
+(pop 1)
diff --git a/test/regress/regress2/FIREFLY_3_e2_2236_e7_3681.ec.minimized.smt2.expect b/test/regress/regress2/FIREFLY_3_e2_2236_e7_3681.ec.minimized.smt2.expect
new file mode 100644
index 0000000..7cb6ba8
--- /dev/null
+++ b/test/regress/regress2/FIREFLY_3_e2_2236_e7_3681.ec.minimized.smt2.expect
@@ -0,0 +1,3 @@
+% COMMAND-LINE: --incremental
+% EXPECT: unsat
+% EXPECT: sat
diff --git a/test/regress/regress2/GEO123+1.minimized.smt2 b/test/regress/regress2/GEO123+1.minimized.smt2
new file mode 100644
index 0000000..764c416
--- /dev/null
+++ b/test/regress/regress2/GEO123+1.minimized.smt2
@@ -0,0 +1,396 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+;
+; This is a benchmark demonstrating a nasty incremental bug in the UF
+; symmetry breaker, now fixed.
+;
+(set-logic QF_UF)
+(declare-fun _substvar_29615_ () Bool)
+(declare-sort T 0)
+(declare-fun incident_o (T T) Bool)
+(declare-fun sK25 () T)
+(declare-fun sK26 () T)
+(declare-fun ordered_by (T T T) Bool)
+(declare-fun sK21 (T T) T)
+(declare-fun incident_c (T T) Bool)
+(declare-fun between_o (T T T T) Bool)
+(declare-fun start_point (T T) Bool)
+(declare-fun sK12 (T T) T)
+(declare-fun meet (T T T) Bool)
+(declare-fun end_point (T T) Bool)
+(declare-fun inner_point (T T) Bool)
+(declare-fun part_of (T T) Bool)
+(declare-fun open (T) Bool)
+(declare-fun sK22 (T T) T)
+(declare-fun sK19 (T) T)
+(declare-fun sum (T T) T)
+(declare-fun sK4 (T T T) T)
+(declare-fun sK2 (T T) T)
+(declare-fun sK3 (T T) T)
+(declare-fun sK0 (T T) T)
+(declare-fun sK1 (T T T) T)
+(declare-fun sK24 () T)
+(declare-fun iProver_c13 () T)
+(declare-fun iProver_c41 () T)
+(declare-fun iProver_c14 () T)
+(assert (incident_o sK26 sK24))
+(assert (not (ordered_by sK24 sK25 sK26)))
+(assert (not (= sK25 sK26)))
+(assert (start_point (sK19 sK24) sK24))
+(check-sat)
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK0 sK24 sK25))) (let ((_let_2 (sK21 _let_0 _let_1))) (let ((_let_3 (sK22 _let_0 _let_1))) (or (ordered_by _let_1 _let_2 _let_3) (ordered_by _let_0 _let_2 _let_3) (= _let_1 _let_0)))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK0 iProver_c13 sK25))) (let ((_let_2 (sK21 _let_0 _let_1))) (let ((_let_3 (sK22 _let_0 _let_1))) (or (ordered_by _let_1 _let_2 _let_3) (ordered_by _let_0 _let_2 _let_3) (= _let_1 _let_0)))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK12 sK24 sK25))) (let ((_let_2 (sK21 _let_1 _let_0))) (let ((_let_3 (sK22 _let_1 _let_0))) (or (ordered_by _let_0 _let_2 _let_3) (ordered_by _let_1 _let_2 _let_3) (= _let_0 _let_1)))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK12 iProver_c13 sK25))) (let ((_let_2 (sK21 _let_1 _let_0))) (let ((_let_3 (sK22 _let_1 _let_0))) (or (ordered_by _let_0 _let_2 _let_3) (ordered_by _let_1 _let_2 _let_3) (= _let_0 _let_1)))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK12 sK24 sK25))) (let ((_let_2 (sK21 _let_0 _let_1))) (let ((_let_3 (sK22 _let_0 _let_1))) (or (ordered_by _let_1 _let_2 _let_3) (ordered_by _let_0 _let_2 _let_3) (= _let_1 _let_0)))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK12 iProver_c13 sK25))) (let ((_let_2 (sK21 _let_0 _let_1))) (let ((_let_3 (sK22 _let_0 _let_1))) (or (ordered_by _let_1 _let_2 _let_3) (ordered_by _let_0 _let_2 _let_3) (= _let_1 _let_0)))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK0 sK24 sK25))) (let ((_let_2 (sK21 _let_1 _let_0))) (let ((_let_3 (sK22 _let_1 _let_0))) (or (ordered_by _let_0 _let_2 _let_3) (ordered_by _let_1 _let_2 _let_3) (= _let_0 _let_1)))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK0 iProver_c13 sK25))) (let ((_let_2 (sK21 _let_1 _let_0))) (let ((_let_3 (sK22 _let_1 _let_0))) (or (ordered_by _let_0 _let_2 _let_3) (ordered_by _let_1 _let_2 _let_3) (= _let_0 _let_1)))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK0 sK24 sK25))) (let ((_let_2 (sK12 _let_0 _let_1))) (or (= _let_1 _let_0) (incident_c _let_2 _let_1) (incident_c _let_2 _let_0))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK0 iProver_c13 sK25))) (let ((_let_2 (sK12 _let_0 _let_1))) (or (= _let_1 _let_0) (incident_c _let_2 _let_1) (incident_c _let_2 _let_0))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK12 sK24 sK25))) (let ((_let_2 (sK12 _let_1 _let_0))) (or (= _let_0 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 _let_1))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK12 iProver_c13 sK25))) (let ((_let_2 (sK12 _let_1 _let_0))) (or (= _let_0 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 _let_1))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK12 sK24 sK25))) (let ((_let_2 (sK12 _let_0 _let_1))) (or (= _let_1 _let_0) (incident_c _let_2 _let_1) (incident_c _let_2 _let_0))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK12 iProver_c13 sK25))) (let ((_let_2 (sK12 _let_0 _let_1))) (or (= _let_1 _let_0) (incident_c _let_2 _let_1) (incident_c _let_2 _let_0))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK0 sK24 sK25))) (let ((_let_2 (sK12 _let_1 _let_0))) (or (= _let_0 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 _let_1))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK0 iProver_c13 sK25))) (let ((_let_2 (sK12 _let_1 _let_0))) (or (= _let_0 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 _let_1))))))
+(assert (let ((_let_0 (sK12 sK24 sK25))) (or (= sK25 sK24) (not (incident_c _let_0 sK25)) (not (incident_c _let_0 sK24)))))
+(assert (let ((_let_0 (sK12 iProver_c13 sK25))) (or (= sK25 iProver_c13) (not (incident_c _let_0 sK25)) (not (incident_c _let_0 iProver_c13)))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK0 sK24 sK25))) (or (= _let_1 _let_0) (not (part_of _let_0 _let_1)) (open _let_0)))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK0 iProver_c13 sK25))) (or (= _let_1 _let_0) (open _let_0) (not (part_of _let_0 _let_1))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK12 sK24 sK25))) (or (= _let_0 _let_1) (not (part_of _let_1 _let_0)) (open _let_1)))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK12 iProver_c13 sK25))) (or (= _let_0 _let_1) (not (part_of _let_1 _let_0)) (open _let_1)))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK12 sK24 sK25))) (or (= _let_1 _let_0) (open _let_0) (not (part_of _let_0 _let_1))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK12 iProver_c13 sK25))) (or (= _let_1 _let_0) (open _let_0) (not (part_of _let_0 _let_1))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK0 sK24 sK25))) (or (= _let_0 _let_1) (not (part_of _let_1 _let_0)) (open _let_1)))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK0 iProver_c13 sK25))) (or (= _let_0 _let_1) (not (part_of _let_1 _let_0)) (open _let_1)))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (not (incident_c _let_0 sK24)) (not (meet sK24 sK25 sK24)) (end_point _let_0 sK25))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (end_point _let_0 sK25) (not (incident_c _let_0 iProver_c13)) (not (meet iProver_c14 sK25 iProver_c13)))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (not (incident_c _let_0 sK24)) (not (meet sK24 sK25 sK24)) (end_point _let_0 sK24))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (not (incident_c _let_0 iProver_c13)) (not (meet iProver_c14 sK25 iProver_c13)) (end_point _let_0 iProver_c13))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (not (incident_c _let_0 sK24)) (incident_c (sK4 sK24 sK25 _let_0) sK25) (meet _let_0 sK25 sK24))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (not (incident_c _let_0 iProver_c13)) (incident_c (sK4 iProver_c13 sK25 _let_0) sK25) (meet _let_0 sK25 iProver_c13))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (not (incident_c _let_0 sK24)) (meet _let_0 sK25 sK24) (incident_c (sK4 sK24 sK25 _let_0) sK24))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (not (incident_c _let_0 iProver_c13)) (meet _let_0 sK25 iProver_c13) (incident_c (sK4 iProver_c13 sK25 _let_0) iProver_c13))))
+(assert (let ((_let_0 (sK4 sK24 sK25 (sK12 sK26 sK25)))) (or (not (incident_c (sK12 sK26 sK25) sK25)) (not (incident_c (sK12 sK26 sK25) sK24)) (meet (sK12 sK26 sK25) sK25 sK24) (not (end_point _let_0 sK25)) (not (end_point _let_0 sK24)))))
+(assert (let ((_let_0 (sK4 iProver_c13 sK25 (sK12 sK26 sK25)))) (or (not (incident_c (sK12 sK26 sK25) sK25)) (not (incident_c (sK12 sK26 sK25) iProver_c13)) (meet (sK12 sK26 sK25) sK25 iProver_c13) (not (end_point _let_0 sK25)) (not (end_point _let_0 iProver_c13)))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (end_point _let_0 sK25) (inner_point _let_0 sK25))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (part_of sK25 sK24))) (or (not (part_of sK24 sK24)) (not (incident_c _let_0 sK25)) _let_1 (not _let_1) (part_of sK24 sK25) (not (incident_c _let_0 sK24)) (not (end_point _let_0 sK24))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (part_of iProver_c13 iProver_c14)) (not (incident_c _let_0 sK25)) (part_of sK25 iProver_c13) (part_of iProver_c13 sK25) (not (incident_c _let_0 iProver_c13)) (not (part_of sK25 iProver_c14)) (not (end_point _let_0 iProver_c14)))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (end_point _let_0 sK25) (part_of (sK2 sK25 _let_0) sK25))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (end_point _let_0 sK25) (part_of (sK3 sK25 _let_0) sK25))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (end_point _let_0 sK25) (incident_c _let_0 (sK2 sK25 _let_0)))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (end_point _let_0 sK25) (incident_c _let_0 (sK3 sK25 _let_0)))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (end_point _let_0 sK25) (not (part_of (sK2 sK25 _let_0) (sK3 sK25 _let_0))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (end_point _let_0 sK25) (not (part_of (sK3 sK25 _let_0) (sK2 sK25 _let_0))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (incident_c _let_0 (sum sK25 sK24)))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (incident_c _let_0 (sum sK25 iProver_c13)))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (incident_c _let_0 (sum sK24 sK25)))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (incident_c _let_0 (sum iProver_c13 sK25)))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK1 sK24 sK24 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 sK24) (= (sum sK24 sK24) _let_0)))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK0 sK24 sK25))) (let ((_let_1 (sK1 sK24 sK24 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 sK24) (= (sum sK24 sK24) _let_0)))))
+(assert (let ((_let_0 (sK0 iProver_c41 sK25))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK12 sK24 sK25))) (let ((_let_1 (sK1 sK24 sK24 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 sK24) (= (sum sK24 sK24) _let_0)))))
+(assert (let ((_let_0 (sK12 iProver_c13 sK25))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK12 iProver_c41 sK25))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK0 iProver_c13 sK25))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (not (part_of sK25 sK24)) (incident_c _let_0 sK24))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (not (incident_c _let_0 sK25)) (not (part_of sK25 iProver_c13)) (incident_c _let_0 iProver_c13))))
+(assert (or (part_of sK24 sK25) (not (incident_c (sK0 sK24 sK25) sK25))))
+(assert (or (part_of iProver_c13 sK25) (not (incident_c (sK0 iProver_c13 sK25) sK25))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK0 sK24 sK26))) (let ((_let_2 (sK21 _let_0 _let_1))) (let ((_let_3 (sK22 _let_0 _let_1))) (or (ordered_by _let_1 _let_2 _let_3) (ordered_by _let_0 _let_2 _let_3) (= _let_1 _let_0)))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK0 iProver_c13 sK26))) (let ((_let_2 (sK21 _let_0 _let_1))) (let ((_let_3 (sK22 _let_0 _let_1))) (or (ordered_by _let_1 _let_2 _let_3) (ordered_by _let_0 _let_2 _let_3) (= _let_1 _let_0)))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK12 sK24 sK26))) (let ((_let_2 (sK21 _let_1 _let_0))) (let ((_let_3 (sK22 _let_1 _let_0))) (or (ordered_by _let_0 _let_2 _let_3) (ordered_by _let_1 _let_2 _let_3) (= _let_0 _let_1)))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK12 iProver_c13 sK26))) (let ((_let_2 (sK21 _let_1 _let_0))) (let ((_let_3 (sK22 _let_1 _let_0))) (or (ordered_by _let_0 _let_2 _let_3) (ordered_by _let_1 _let_2 _let_3) (= _let_0 _let_1)))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK12 sK24 sK26))) (let ((_let_2 (sK21 _let_0 _let_1))) (let ((_let_3 (sK22 _let_0 _let_1))) (or (ordered_by _let_1 _let_2 _let_3) (ordered_by _let_0 _let_2 _let_3) (= _let_1 _let_0)))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK12 iProver_c13 sK26))) (let ((_let_2 (sK21 _let_0 _let_1))) (let ((_let_3 (sK22 _let_0 _let_1))) (or (ordered_by _let_1 _let_2 _let_3) (ordered_by _let_0 _let_2 _let_3) (= _let_1 _let_0)))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK0 sK24 sK26))) (let ((_let_2 (sK21 _let_1 _let_0))) (let ((_let_3 (sK22 _let_1 _let_0))) (or (ordered_by _let_0 _let_2 _let_3) (ordered_by _let_1 _let_2 _let_3) (= _let_0 _let_1)))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK0 iProver_c13 sK26))) (let ((_let_2 (sK21 _let_1 _let_0))) (let ((_let_3 (sK22 _let_1 _let_0))) (or (ordered_by _let_0 _let_2 _let_3) (ordered_by _let_1 _let_2 _let_3) (= _let_0 _let_1)))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK0 sK24 sK26))) (let ((_let_2 (sK12 _let_0 _let_1))) (or (= _let_1 _let_0) (incident_c _let_2 _let_1) (incident_c _let_2 _let_0))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK0 iProver_c13 sK26))) (let ((_let_2 (sK12 _let_0 _let_1))) (or (= _let_1 _let_0) (incident_c _let_2 _let_1) (incident_c _let_2 _let_0))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK12 sK24 sK26))) (let ((_let_2 (sK12 _let_1 _let_0))) (or (= _let_0 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 _let_1))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK12 iProver_c13 sK26))) (let ((_let_2 (sK12 _let_1 _let_0))) (or (= _let_0 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 _let_1))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK12 sK24 sK26))) (let ((_let_2 (sK12 _let_0 _let_1))) (or (= _let_1 _let_0) (incident_c _let_2 _let_1) (incident_c _let_2 _let_0))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK12 iProver_c13 sK26))) (let ((_let_2 (sK12 _let_0 _let_1))) (or (= _let_1 _let_0) (incident_c _let_2 _let_1) (incident_c _let_2 _let_0))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK0 sK24 sK26))) (let ((_let_2 (sK12 _let_1 _let_0))) (or (= _let_0 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 _let_1))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK0 iProver_c13 sK26))) (let ((_let_2 (sK12 _let_1 _let_0))) (or (= _let_0 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 _let_1))))))
+(assert (let ((_let_0 (sK12 sK24 sK26))) (or (= sK26 sK24) (not (incident_c _let_0 sK26)) (not (incident_c _let_0 sK24)))))
+(assert (let ((_let_0 (sK12 iProver_c13 sK26))) (or (= sK26 iProver_c13) (not (incident_c _let_0 sK26)) (not (incident_c _let_0 iProver_c13)))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK0 sK24 sK26))) (or (= _let_1 _let_0) (not (part_of _let_0 _let_1)) (open _let_0)))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK0 iProver_c13 sK26))) (or (= _let_1 _let_0) (open _let_0) (not (part_of _let_0 _let_1))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK12 sK24 sK26))) (or (= _let_0 _let_1) (not (part_of _let_1 _let_0)) (open _let_1)))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK12 iProver_c13 sK26))) (or (= _let_0 _let_1) (not (part_of _let_1 _let_0)) (open _let_1)))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK12 sK24 sK26))) (or (= _let_1 _let_0) (open _let_0) (not (part_of _let_0 _let_1))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK12 iProver_c13 sK26))) (or (= _let_1 _let_0) (open _let_0) (not (part_of _let_0 _let_1))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK0 sK24 sK26))) (or (= _let_0 _let_1) (not (part_of _let_1 _let_0)) (open _let_1)))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK0 iProver_c13 sK26))) (or (= _let_0 _let_1) (not (part_of _let_1 _let_0)) (open _let_1)))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (not (incident_c _let_0 sK24)) (not (meet sK24 sK26 sK24)) (end_point _let_0 sK26))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (end_point _let_0 sK26) (not (incident_c _let_0 iProver_c13)) (not (meet iProver_c14 sK26 iProver_c13)))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (not (incident_c _let_0 sK24)) (not (meet sK24 sK26 sK24)) (end_point _let_0 sK24))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (not (incident_c _let_0 iProver_c13)) (not (meet iProver_c14 sK26 iProver_c13)) (end_point _let_0 iProver_c13))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (not (incident_c _let_0 sK24)) (incident_c (sK4 sK24 sK26 _let_0) sK26) (meet _let_0 sK26 sK24))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (not (incident_c _let_0 iProver_c13)) (incident_c (sK4 iProver_c13 sK26 _let_0) sK26) (meet _let_0 sK26 iProver_c13))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (not (incident_c _let_0 sK24)) (meet _let_0 sK26 sK24) (incident_c (sK4 sK24 sK26 _let_0) sK24))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (not (incident_c _let_0 iProver_c13)) (meet _let_0 sK26 iProver_c13) (incident_c (sK4 iProver_c13 sK26 _let_0) iProver_c13))))
+(assert (let ((_let_0 (sK4 sK24 sK26 (sK12 sK25 sK26)))) (or (not (incident_c (sK12 sK25 sK26) sK26)) (not (incident_c (sK12 sK25 sK26) sK24)) (meet (sK12 sK25 sK26) sK26 sK24) (not (end_point _let_0 sK26)) (not (end_point _let_0 sK24)))))
+(assert (let ((_let_0 (sK4 iProver_c13 sK26 (sK12 sK25 sK26)))) (or (not (incident_c (sK12 sK25 sK26) sK26)) (not (incident_c (sK12 sK25 sK26) iProver_c13)) (meet (sK12 sK25 sK26) sK26 iProver_c13) (not (end_point _let_0 sK26)) (not (end_point _let_0 iProver_c13)))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (end_point _let_0 sK26) (inner_point _let_0 sK26))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (part_of sK26 sK24))) (or (not (part_of sK24 sK24)) (not (incident_c _let_0 sK26)) (part_of sK24 sK26) _let_1 (not _let_1) (not (incident_c _let_0 sK24)) (not (end_point _let_0 sK24))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (part_of iProver_c13 iProver_c14)) (not (incident_c _let_0 sK26)) (part_of iProver_c13 sK26) (part_of sK26 iProver_c13) (not (incident_c _let_0 iProver_c13)) (not (part_of sK26 iProver_c14)) (not (end_point _let_0 iProver_c14)))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (end_point _let_0 sK26) (part_of (sK2 sK26 _let_0) sK26))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (end_point _let_0 sK26) (part_of (sK3 sK26 _let_0) sK26))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (end_point _let_0 sK26) (incident_c _let_0 (sK2 sK26 _let_0)))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (end_point _let_0 sK26) (incident_c _let_0 (sK3 sK26 _let_0)))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (end_point _let_0 sK26) (not (part_of (sK2 sK26 _let_0) (sK3 sK26 _let_0))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (end_point _let_0 sK26) (not (part_of (sK3 sK26 _let_0) (sK2 sK26 _let_0))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (incident_c _let_0 (sum sK26 sK24)))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (incident_c _let_0 (sum sK26 iProver_c13)))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (incident_c _let_0 (sum sK24 sK26)))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (incident_c _let_0 (sum iProver_c13 sK26)))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK1 sK24 sK24 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 sK24) (= (sum sK24 sK24) _let_0)))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK0 sK24 sK26))) (let ((_let_1 (sK1 sK24 sK24 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 sK24) (= (sum sK24 sK24) _let_0)))))
+(assert (let ((_let_0 (sK0 iProver_c41 sK26))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK12 sK24 sK26))) (let ((_let_1 (sK1 sK24 sK24 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 sK24) (= (sum sK24 sK24) _let_0)))))
+(assert (let ((_let_0 (sK12 iProver_c13 sK26))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK12 iProver_c41 sK26))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK0 iProver_c13 sK26))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (not (part_of sK26 sK24)) (incident_c _let_0 sK24))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (not (incident_c _let_0 sK26)) (not (part_of sK26 iProver_c13)) (incident_c _let_0 iProver_c13))))
+(assert (or (part_of sK24 sK26) (not (incident_c (sK0 sK24 sK26) sK26))))
+(assert (or (part_of iProver_c13 sK26) (not (incident_c (sK0 iProver_c13 sK26) sK26))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK21 sK24 sK25))) (let ((_let_2 (sK21 _let_1 _let_0))) (let ((_let_3 (sK22 _let_1 _let_0))) (or (ordered_by _let_0 _let_2 _let_3) (ordered_by _let_1 _let_2 _let_3) (= _let_0 _let_1)))))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK21 iProver_c13 sK25))) (let ((_let_2 (sK21 _let_1 _let_0))) (let ((_let_3 (sK22 _let_1 _let_0))) (or (ordered_by _let_0 _let_2 _let_3) (ordered_by _let_1 _let_2 _let_3) (= _let_0 _let_1)))))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK21 sK24 sK25))) (let ((_let_2 (sK21 _let_0 _let_1))) (let ((_let_3 (sK22 _let_0 _let_1))) (or (ordered_by _let_1 _let_2 _let_3) (ordered_by _let_0 _let_2 _let_3) (= _let_1 _let_0)))))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK21 iProver_c13 sK25))) (let ((_let_2 (sK21 _let_0 _let_1))) (let ((_let_3 (sK22 _let_0 _let_1))) (or (ordered_by _let_1 _let_2 _let_3) (ordered_by _let_0 _let_2 _let_3) (= _let_1 _let_0)))))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK22 sK24 sK25))) (let ((_let_2 (sK21 _let_1 _let_0))) (let ((_let_3 (sK22 _let_1 _let_0))) (or (ordered_by _let_0 _let_2 _let_3) (ordered_by _let_1 _let_2 _let_3) (= _let_0 _let_1)))))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK22 iProver_c13 sK25))) (let ((_let_2 (sK21 _let_1 _let_0))) (let ((_let_3 (sK22 _let_1 _let_0))) (or (ordered_by _let_0 _let_2 _let_3) (ordered_by _let_1 _let_2 _let_3) (= _let_0 _let_1)))))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK22 sK24 sK25))) (let ((_let_2 (sK21 _let_0 _let_1))) (let ((_let_3 (sK22 _let_0 _let_1))) (or (ordered_by _let_1 _let_2 _let_3) (ordered_by _let_0 _let_2 _let_3) (= _let_1 _let_0)))))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK22 iProver_c13 sK25))) (let ((_let_2 (sK21 _let_0 _let_1))) (let ((_let_3 (sK22 _let_0 _let_1))) (or (ordered_by _let_1 _let_2 _let_3) (ordered_by _let_0 _let_2 _let_3) (= _let_1 _let_0)))))))
+(assert (let ((_let_0 (sK21 sK24 sK25))) (let ((_let_1 (sK22 sK24 sK25))) (or (not (ordered_by sK25 _let_0 _let_1)) (not (ordered_by sK24 _let_0 _let_1)) (= sK25 sK24)))))
+(assert (let ((_let_0 (sK21 iProver_c13 sK25))) (let ((_let_1 (sK22 iProver_c13 sK25))) (or (not (ordered_by sK25 _let_0 _let_1)) (not (ordered_by iProver_c13 _let_0 _let_1)) (= sK25 iProver_c13)))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (or (not (ordered_by sK25 _let_0 (sK22 sK26 sK25))) (incident_o _let_0 sK25))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (or (not (ordered_by sK25 (sK21 sK26 sK25) _let_0)) (incident_o _let_0 sK25))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK22 sK26 sK25))) (or (not (ordered_by sK25 _let_0 _let_1)) (not (ordered_by sK25 _let_1 sK24)) (between_o sK25 _let_0 _let_1 sK24)))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK22 sK26 sK25))) (or (not (ordered_by sK25 _let_0 _let_1)) (not (ordered_by sK25 _let_1 iProver_c13)) (between_o sK25 _let_0 _let_1 iProver_c13)))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK22 sK26 sK25))) (or (not (ordered_by sK25 _let_0 _let_1)) (not (ordered_by sK25 _let_1 sK24)) (between_o sK25 sK24 _let_1 _let_0)))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK22 sK26 sK25))) (or (not (ordered_by sK25 _let_0 _let_1)) (not (ordered_by sK25 _let_1 iProver_c13)) (between_o sK25 iProver_c13 _let_1 _let_0)))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK21 sK24 sK25))) (let ((_let_2 (sK12 _let_1 _let_0))) (or (= _let_0 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 _let_1))))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK21 iProver_c13 sK25))) (let ((_let_2 (sK12 _let_1 _let_0))) (or (= _let_0 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 _let_1))))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK21 sK24 sK25))) (let ((_let_2 (sK12 _let_0 _let_1))) (or (= _let_1 _let_0) (incident_c _let_2 _let_1) (incident_c _let_2 _let_0))))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK21 iProver_c13 sK25))) (let ((_let_2 (sK12 _let_0 _let_1))) (or (= _let_1 _let_0) (incident_c _let_2 _let_1) (incident_c _let_2 _let_0))))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK22 sK24 sK25))) (let ((_let_2 (sK12 _let_1 _let_0))) (or (= _let_0 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 _let_1))))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK22 iProver_c13 sK25))) (let ((_let_2 (sK12 _let_1 _let_0))) (or (= _let_0 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 _let_1))))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK22 sK24 sK25))) (let ((_let_2 (sK12 _let_0 _let_1))) (or (= _let_1 _let_0) (incident_c _let_2 _let_1) (incident_c _let_2 _let_0))))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK22 iProver_c13 sK25))) (let ((_let_2 (sK12 _let_0 _let_1))) (or (= _let_1 _let_0) (incident_c _let_2 _let_1) (incident_c _let_2 _let_0))))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK21 sK24 sK25))) (or (= _let_0 _let_1) (not (part_of _let_1 _let_0)) (open _let_1)))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK21 iProver_c13 sK25))) (or (= _let_0 _let_1) (not (part_of _let_1 _let_0)) (open _let_1)))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK21 sK24 sK25))) (or (= _let_1 _let_0) (not (part_of _let_0 _let_1)) (open _let_0)))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK21 iProver_c13 sK25))) (or (= _let_1 _let_0) (open _let_0) (not (part_of _let_0 _let_1))))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK22 sK24 sK25))) (or (= _let_0 _let_1) (not (part_of _let_1 _let_0)) (open _let_1)))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK22 iProver_c13 sK25))) (or (= _let_0 _let_1) (not (part_of _let_1 _let_0)) (open _let_1)))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK22 sK24 sK25))) (or (= _let_1 _let_0) (not (part_of _let_0 _let_1)) (open _let_0)))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK22 iProver_c13 sK25))) (or (= _let_1 _let_0) (open _let_0) (not (part_of _let_0 _let_1))))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK1 sK24 sK24 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 sK24) (= (sum sK24 sK24) _let_0)))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK22 sK24 sK25))) (let ((_let_1 (sK1 sK24 sK24 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 sK24) (= (sum sK24 sK24) _let_0)))))
+(assert (let ((_let_0 (sK22 iProver_c41 sK25))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK1 sK24 sK24 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 sK24) (= (sum sK24 sK24) _let_0)))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK21 sK24 sK25))) (let ((_let_1 (sK1 sK24 sK24 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 sK24) (= (sum sK24 sK24) _let_0)))))
+(assert (let ((_let_0 (sK21 iProver_c13 sK25))) (let ((_let_1 (sK1 iProver_c13 iProver_c13 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c13) (= (sum iProver_c13 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK1 iProver_c13 iProver_c13 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c13) (= (sum iProver_c13 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK21 iProver_c13 sK25))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK21 iProver_c41 sK25))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK22 sK24 sK25))) (let ((_let_2 (sK1 sK24 _let_0 _let_1))) (or (incident_c _let_2 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 sK24) (= (sum _let_0 sK24) _let_1))))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK22 iProver_c14 sK25))) (let ((_let_2 (sK1 iProver_c13 _let_0 _let_1))) (or (incident_c _let_2 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 iProver_c13) (= (sum _let_0 iProver_c13) _let_1))))))
+(assert (let ((_let_0 (sK22 iProver_c14 sK25))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK1 _let_0 sK24 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 sK24) (= (sum sK24 _let_0) _let_0)))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK1 _let_0 iProver_c13 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c13) (= (sum iProver_c13 _let_0) _let_0)))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (or (incident_c (sK1 _let_0 _let_0 _let_0) _let_0) (= (sum _let_0 _let_0) _let_0))))
+(assert (let ((_let_0 (sK22 iProver_c13 sK25))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK22 iProver_c13 sK25))) (let ((_let_2 (sK1 iProver_c13 _let_0 _let_1))) (or (incident_c _let_2 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 iProver_c13) (= (sum _let_0 iProver_c13) _let_1))))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK22 sK24 sK25))) (let ((_let_2 (sK1 _let_0 _let_0 _let_1))) (or (incident_c _let_2 _let_1) (incident_c _let_2 _let_0) (= (sum _let_0 _let_0) _let_1))))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK22 iProver_c13 sK25))) (let ((_let_2 (sK1 _let_0 _let_0 _let_1))) (or (incident_c _let_2 _let_1) (incident_c _let_2 _let_0) (= (sum _let_0 _let_0) _let_1))))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK22 sK24 sK25))) (let ((_let_2 (sK1 _let_0 sK24 _let_1))) (or (incident_c _let_2 _let_1) (incident_c _let_2 sK24) (incident_c _let_2 _let_0) (= (sum sK24 _let_0) _let_1))))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK22 iProver_c14 sK25))) (let ((_let_2 (sK1 _let_0 iProver_c13 _let_1))) (or (incident_c _let_2 _let_1) (incident_c _let_2 iProver_c13) (incident_c _let_2 _let_0) (= (sum iProver_c13 _let_0) _let_1))))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK22 sK26 sK25))) (let ((_let_2 (sK1 sK24 _let_1 _let_0))) (or (incident_c _let_2 _let_0) (incident_c _let_2 _let_1) (incident_c _let_2 sK24) (= (sum _let_1 sK24) _let_0))))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (let ((_let_1 (sK22 sK26 sK25))) (let ((_let_2 (sK1 iProver_c13 _let_1 _let_0))) (or (incident_c _let_2 _let_0) (incident_c _let_2 _let_1) (incident_c _let_2 iProver_c13) (= (sum _let_1 iProver_c13) _let_0))))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK1 sK24 _let_0 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 sK24) (= (sum _let_0 sK24) _let_0)))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK1 iProver_c13 _let_0 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c13) (= (sum _let_0 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK21 sK24 sK25))) (let ((_let_2 (sK1 sK24 _let_0 _let_1))) (or (incident_c _let_2 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 sK24) (= (sum _let_0 sK24) _let_1))))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK21 iProver_c14 sK25))) (let ((_let_2 (sK1 iProver_c13 _let_0 _let_1))) (or (incident_c _let_2 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 iProver_c13) (= (sum _let_0 iProver_c13) _let_1))))))
+(assert (let ((_let_0 (sK21 iProver_c14 sK25))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK21 sK24 sK26))) (let ((_let_2 (sK21 _let_1 _let_0))) (let ((_let_3 (sK22 _let_1 _let_0))) (or (ordered_by _let_0 _let_2 _let_3) (ordered_by _let_1 _let_2 _let_3) (= _let_0 _let_1)))))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK21 iProver_c13 sK26))) (let ((_let_2 (sK21 _let_1 _let_0))) (let ((_let_3 (sK22 _let_1 _let_0))) (or (ordered_by _let_0 _let_2 _let_3) (ordered_by _let_1 _let_2 _let_3) (= _let_0 _let_1)))))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK21 sK24 sK26))) (let ((_let_2 (sK21 _let_0 _let_1))) (let ((_let_3 (sK22 _let_0 _let_1))) (or (ordered_by _let_1 _let_2 _let_3) (ordered_by _let_0 _let_2 _let_3) (= _let_1 _let_0)))))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK21 iProver_c13 sK26))) (let ((_let_2 (sK21 _let_0 _let_1))) (let ((_let_3 (sK22 _let_0 _let_1))) (or (ordered_by _let_1 _let_2 _let_3) (ordered_by _let_0 _let_2 _let_3) (= _let_1 _let_0)))))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK22 sK24 sK26))) (let ((_let_2 (sK21 _let_1 _let_0))) (let ((_let_3 (sK22 _let_1 _let_0))) (or (ordered_by _let_0 _let_2 _let_3) (ordered_by _let_1 _let_2 _let_3) (= _let_0 _let_1)))))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK22 iProver_c13 sK26))) (let ((_let_2 (sK21 _let_1 _let_0))) (let ((_let_3 (sK22 _let_1 _let_0))) (or (ordered_by _let_0 _let_2 _let_3) (ordered_by _let_1 _let_2 _let_3) (= _let_0 _let_1)))))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK22 sK24 sK26))) (let ((_let_2 (sK21 _let_0 _let_1))) (let ((_let_3 (sK22 _let_0 _let_1))) (or (ordered_by _let_1 _let_2 _let_3) (ordered_by _let_0 _let_2 _let_3) (= _let_1 _let_0)))))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK22 iProver_c13 sK26))) (let ((_let_2 (sK21 _let_0 _let_1))) (let ((_let_3 (sK22 _let_0 _let_1))) (or (ordered_by _let_1 _let_2 _let_3) (ordered_by _let_0 _let_2 _let_3) (= _let_1 _let_0)))))))
+(assert (let ((_let_0 (sK21 sK24 sK26))) (let ((_let_1 (sK22 sK24 sK26))) (or (not (ordered_by sK26 _let_0 _let_1)) (not (ordered_by sK24 _let_0 _let_1)) (= sK26 sK24)))))
+(assert (let ((_let_0 (sK21 iProver_c13 sK26))) (let ((_let_1 (sK22 iProver_c13 sK26))) (or (not (ordered_by sK26 _let_0 _let_1)) (not (ordered_by iProver_c13 _let_0 _let_1)) (= sK26 iProver_c13)))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (or (not (ordered_by sK26 _let_0 (sK22 sK25 sK26))) (incident_o _let_0 sK26))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (or (not (ordered_by sK26 (sK21 sK25 sK26) _let_0)) (incident_o _let_0 sK26))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK22 sK25 sK26))) (or (not (ordered_by sK26 _let_0 _let_1)) (not (ordered_by sK26 _let_1 sK24)) (between_o sK26 _let_0 _let_1 sK24)))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK22 sK25 sK26))) (or (not (ordered_by sK26 _let_0 _let_1)) (not (ordered_by sK26 _let_1 iProver_c13)) (between_o sK26 _let_0 _let_1 iProver_c13)))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK22 sK25 sK26))) (or (not (ordered_by sK26 _let_0 _let_1)) (not (ordered_by sK26 _let_1 sK24)) (between_o sK26 sK24 _let_1 _let_0)))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK22 sK25 sK26))) (or (not (ordered_by sK26 _let_0 _let_1)) (not (ordered_by sK26 _let_1 iProver_c13)) (between_o sK26 iProver_c13 _let_1 _let_0)))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK21 sK24 sK26))) (let ((_let_2 (sK12 _let_1 _let_0))) (or (= _let_0 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 _let_1))))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK21 iProver_c13 sK26))) (let ((_let_2 (sK12 _let_1 _let_0))) (or (= _let_0 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 _let_1))))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK21 sK24 sK26))) (let ((_let_2 (sK12 _let_0 _let_1))) (or (= _let_1 _let_0) (incident_c _let_2 _let_1) (incident_c _let_2 _let_0))))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK21 iProver_c13 sK26))) (let ((_let_2 (sK12 _let_0 _let_1))) (or (= _let_1 _let_0) (incident_c _let_2 _let_1) (incident_c _let_2 _let_0))))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK22 sK24 sK26))) (let ((_let_2 (sK12 _let_1 _let_0))) (or (= _let_0 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 _let_1))))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK22 iProver_c13 sK26))) (let ((_let_2 (sK12 _let_1 _let_0))) (or (= _let_0 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 _let_1))))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK22 sK24 sK26))) (let ((_let_2 (sK12 _let_0 _let_1))) (or (= _let_1 _let_0) (incident_c _let_2 _let_1) (incident_c _let_2 _let_0))))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK22 iProver_c13 sK26))) (let ((_let_2 (sK12 _let_0 _let_1))) (or (= _let_1 _let_0) (incident_c _let_2 _let_1) (incident_c _let_2 _let_0))))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK21 sK24 sK26))) (or (= _let_0 _let_1) (not (part_of _let_1 _let_0)) (open _let_1)))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK21 iProver_c13 sK26))) (or (= _let_0 _let_1) (not (part_of _let_1 _let_0)) (open _let_1)))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK21 sK24 sK26))) (or (= _let_1 _let_0) (not (part_of _let_0 _let_1)) (open _let_0)))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK21 iProver_c13 sK26))) (or (= _let_1 _let_0) (open _let_0) (not (part_of _let_0 _let_1))))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK22 sK24 sK26))) (or (= _let_0 _let_1) (not (part_of _let_1 _let_0)) (open _let_1)))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK22 iProver_c13 sK26))) (or (= _let_0 _let_1) (not (part_of _let_1 _let_0)) (open _let_1)))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK22 sK24 sK26))) (or (= _let_1 _let_0) (not (part_of _let_0 _let_1)) (open _let_0)))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK22 iProver_c13 sK26))) (or (= _let_1 _let_0) (open _let_0) (not (part_of _let_0 _let_1))))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK1 sK24 sK24 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 sK24) (= (sum sK24 sK24) _let_0)))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK22 sK24 sK26))) (let ((_let_1 (sK1 sK24 sK24 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 sK24) (= (sum sK24 sK24) _let_0)))))
+(assert (let ((_let_0 (sK22 iProver_c41 sK26))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK1 sK24 sK24 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 sK24) (= (sum sK24 sK24) _let_0)))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK21 sK24 sK26))) (let ((_let_1 (sK1 sK24 sK24 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 sK24) (= (sum sK24 sK24) _let_0)))))
+(assert (let ((_let_0 (sK21 iProver_c13 sK26))) (let ((_let_1 (sK1 iProver_c13 iProver_c13 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c13) (= (sum iProver_c13 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK1 iProver_c13 iProver_c13 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c13) (= (sum iProver_c13 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK21 iProver_c13 sK26))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK21 iProver_c41 sK26))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK22 sK24 sK26))) (let ((_let_2 (sK1 sK24 _let_0 _let_1))) (or (incident_c _let_2 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 sK24) (= (sum _let_0 sK24) _let_1))))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK22 iProver_c14 sK26))) (let ((_let_2 (sK1 iProver_c13 _let_0 _let_1))) (or (incident_c _let_2 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 iProver_c13) (= (sum _let_0 iProver_c13) _let_1))))))
+(assert (let ((_let_0 (sK22 iProver_c14 sK26))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK1 _let_0 sK24 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 sK24) (= (sum sK24 _let_0) _let_0)))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK1 _let_0 iProver_c13 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c13) (= (sum iProver_c13 _let_0) _let_0)))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (or (incident_c (sK1 _let_0 _let_0 _let_0) _let_0) (= (sum _let_0 _let_0) _let_0))))
+(assert (let ((_let_0 (sK22 iProver_c13 sK26))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK22 iProver_c13 sK26))) (let ((_let_2 (sK1 iProver_c13 _let_0 _let_1))) (or (incident_c _let_2 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 iProver_c13) (= (sum _let_0 iProver_c13) _let_1))))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK22 sK24 sK26))) (let ((_let_2 (sK1 _let_0 _let_0 _let_1))) (or (incident_c _let_2 _let_1) (incident_c _let_2 _let_0) (= (sum _let_0 _let_0) _let_1))))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK22 iProver_c13 sK26))) (let ((_let_2 (sK1 _let_0 _let_0 _let_1))) (or (incident_c _let_2 _let_1) (incident_c _let_2 _let_0) (= (sum _let_0 _let_0) _let_1))))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK22 sK24 sK26))) (let ((_let_2 (sK1 _let_0 sK24 _let_1))) (or (incident_c _let_2 _let_1) (incident_c _let_2 sK24) (incident_c _let_2 _let_0) (= (sum sK24 _let_0) _let_1))))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK22 iProver_c14 sK26))) (let ((_let_2 (sK1 _let_0 iProver_c13 _let_1))) (or (incident_c _let_2 _let_1) (incident_c _let_2 iProver_c13) (incident_c _let_2 _let_0) (= (sum iProver_c13 _let_0) _let_1))))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK22 sK25 sK26))) (let ((_let_2 (sK1 sK24 _let_1 _let_0))) (or (incident_c _let_2 _let_0) (incident_c _let_2 _let_1) (incident_c _let_2 sK24) (= (sum _let_1 sK24) _let_0))))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (let ((_let_1 (sK22 sK25 sK26))) (let ((_let_2 (sK1 iProver_c13 _let_1 _let_0))) (or (incident_c _let_2 _let_0) (incident_c _let_2 _let_1) (incident_c _let_2 iProver_c13) (= (sum _let_1 iProver_c13) _let_0))))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK1 sK24 _let_0 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 sK24) (= (sum _let_0 sK24) _let_0)))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK1 iProver_c13 _let_0 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c13) (= (sum _let_0 iProver_c13) _let_0)))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK21 sK24 sK26))) (let ((_let_2 (sK1 sK24 _let_0 _let_1))) (or (incident_c _let_2 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 sK24) (= (sum _let_0 sK24) _let_1))))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK21 iProver_c14 sK26))) (let ((_let_2 (sK1 iProver_c13 _let_0 _let_1))) (or (incident_c _let_2 _let_1) (incident_c _let_2 _let_0) (incident_c _let_2 iProver_c13) (= (sum _let_0 iProver_c13) _let_1))))))
+(assert (let ((_let_0 (sK21 iProver_c14 sK26))) (let ((_let_1 (sK1 iProver_c13 iProver_c14 _let_0))) (or (incident_c _let_1 _let_0) (incident_c _let_1 iProver_c14) (incident_c _let_1 iProver_c13) (= (sum iProver_c14 iProver_c13) _let_0)))))
+(assert (or (= iProver_c13 iProver_c14) false false _substvar_29615_ false false))
+(assert (or (not (incident_c sK24 sK24)) (not (meet sK24 sK25 sK24)) (not (incident_c sK24 sK25)) (end_point sK24 sK25)))
+(assert (or (not (meet iProver_c14 sK25 iProver_c13)) (not (incident_c sK24 sK25)) (end_point sK24 sK25) (not (incident_c sK24 iProver_c13))))
+(assert (or (not (incident_c sK24 sK24)) (end_point sK24 sK24) (not (meet sK24 sK25 sK24)) (not (incident_c sK24 sK25))))
+(assert (or (not (meet iProver_c14 sK25 iProver_c13)) (not (incident_c sK24 sK25)) (not (incident_c sK24 iProver_c13)) (end_point sK24 iProver_c13)))
+(assert (or (not (incident_c sK24 sK24)) (meet sK24 sK25 sK24) (not (incident_c sK24 sK25)) (incident_c (sK4 sK24 sK25 sK24) sK25)))
+(assert (or (not (incident_c sK24 sK25)) (not (incident_c sK24 iProver_c13)) (incident_c (sK4 iProver_c13 sK25 sK24) sK25) (meet sK24 sK25 iProver_c13)))
+(assert (or (not (incident_c sK24 sK24)) (meet sK24 sK25 sK24) (not (incident_c sK24 sK25)) (incident_c (sK4 sK24 sK25 sK24) sK24)))
+(assert (or (not (incident_c sK24 sK25)) (not (incident_c sK24 iProver_c13)) (meet sK24 sK25 iProver_c13) (incident_c (sK4 iProver_c13 sK25 sK24) iProver_c13)))
+(assert (let ((_let_0 (sK4 sK24 sK25 sK24))) (or (not (incident_c sK24 sK24)) (meet sK24 sK25 sK24) (not (incident_c sK24 sK25)) (not (end_point _let_0 sK25)) (not (end_point _let_0 sK24)))))
+(assert (let ((_let_0 (sK4 iProver_c13 sK25 sK24))) (or (not (incident_c sK24 sK25)) (not (incident_c sK24 iProver_c13)) (meet sK24 sK25 iProver_c13) (not (end_point _let_0 sK25)) (not (end_point _let_0 iProver_c13)))))
+(assert (or (not (incident_c sK24 sK25)) (end_point sK24 sK25) (inner_point sK24 sK25)))
+(assert (let ((_let_0 (part_of sK25 sK24))) (or (not (incident_c sK24 sK24)) (not (part_of sK24 sK24)) (not (end_point sK24 sK24)) _let_0 (not _let_0) (part_of sK24 sK25) (not (incident_c sK24 sK25)))))
+(assert (or (not (part_of iProver_c13 iProver_c14)) (part_of sK25 iProver_c13) (part_of iProver_c13 sK25) (not (part_of sK25 iProver_c14)) (not (incident_c sK24 sK25)) (not (incident_c sK24 iProver_c13)) (not (end_point sK24 iProver_c14))))
+(assert (or (not (incident_c sK24 sK25)) (end_point sK24 sK25) (part_of (sK2 sK25 sK24) sK25)))
+(assert (or (not (incident_c sK24 sK25)) (end_point sK24 sK25) (part_of (sK3 sK25 sK24) sK25)))
+(assert (or (not (incident_c sK24 sK25)) (end_point sK24 sK25) (incident_c sK24 (sK2 sK25 sK24))))
+(assert (or (not (incident_c sK24 sK25)) (end_point sK24 sK25) (incident_c sK24 (sK3 sK25 sK24))))
+(assert (or (not (incident_c sK24 sK25)) (end_point sK24 sK25) (not (part_of (sK2 sK25 sK24) (sK3 sK25 sK24)))))
+(assert (or (not (incident_c sK24 sK25)) (end_point sK24 sK25) (not (part_of (sK3 sK25 sK24) (sK2 sK25 sK24)))))
+(assert (or (not (incident_c sK24 sK25)) (incident_c sK24 (sum sK25 sK24))))
+(assert (or (not (incident_c sK24 sK25)) (incident_c sK24 (sum sK25 iProver_c13))))
+(assert (or (not (incident_c sK24 sK25)) (incident_c sK24 (sum sK24 sK25))))
+(assert (or (not (incident_c sK24 sK25)) (incident_c sK24 (sum iProver_c13 sK25))))
+(assert (or (incident_c sK24 sK24) (not (part_of sK25 sK24)) (not (incident_c sK24 sK25))))
+(assert (or (not (part_of sK25 iProver_c13)) (not (incident_c sK24 sK25)) (incident_c sK24 iProver_c13)))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK21 _let_0 sK24))) (let ((_let_2 (sK22 _let_0 sK24))) (or (ordered_by sK24 _let_1 _let_2) (ordered_by _let_0 _let_1 _let_2) (= sK24 _let_0))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK12 _let_0 sK24))) (or (= sK24 _let_0) (incident_c _let_1 sK24) (incident_c _let_1 _let_0)))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (open _let_0) (= sK24 _let_0) (not (part_of _let_0 sK24)))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (or (open sK24) (not (part_of sK24 _let_0)) (= _let_0 sK24))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK21 sK24 _let_0))) (let ((_let_2 (sK22 sK24 _let_0))) (or (= _let_0 sK24) (ordered_by sK24 _let_1 _let_2) (ordered_by _let_0 _let_1 _let_2))))))
+(assert (let ((_let_0 (sK12 sK26 sK25))) (let ((_let_1 (sK12 sK24 _let_0))) (or (= _let_0 sK24) (incident_c _let_1 sK24) (incident_c _let_1 _let_0)))))
+(assert (or (not (incident_c sK24 sK24)) (not (meet sK24 sK26 sK24)) (not (incident_c sK24 sK26)) (end_point sK24 sK26)))
+(assert (or (not (meet iProver_c14 sK26 iProver_c13)) (not (incident_c sK24 iProver_c13)) (not (incident_c sK24 sK26)) (end_point sK24 sK26)))
+(assert (or (not (incident_c sK24 sK24)) (end_point sK24 sK24) (not (meet sK24 sK26 sK24)) (not (incident_c sK24 sK26))))
+(assert (or (not (meet iProver_c14 sK26 iProver_c13)) (not (incident_c sK24 iProver_c13)) (end_point sK24 iProver_c13) (not (incident_c sK24 sK26))))
+(assert (or (not (incident_c sK24 sK24)) (meet sK24 sK26 sK24) (not (incident_c sK24 sK26)) (incident_c (sK4 sK24 sK26 sK24) sK26)))
+(assert (or (not (incident_c sK24 iProver_c13)) (not (incident_c sK24 sK26)) (incident_c (sK4 iProver_c13 sK26 sK24) sK26) (meet sK24 sK26 iProver_c13)))
+(assert (or (not (incident_c sK24 sK24)) (meet sK24 sK26 sK24) (not (incident_c sK24 sK26)) (incident_c (sK4 sK24 sK26 sK24) sK24)))
+(assert (or (not (incident_c sK24 iProver_c13)) (not (incident_c sK24 sK26)) (meet sK24 sK26 iProver_c13) (incident_c (sK4 iProver_c13 sK26 sK24) iProver_c13)))
+(assert (let ((_let_0 (sK4 sK24 sK26 sK24))) (or (not (incident_c sK24 sK24)) (meet sK24 sK26 sK24) (not (incident_c sK24 sK26)) (not (end_point _let_0 sK26)) (not (end_point _let_0 sK24)))))
+(assert (let ((_let_0 (sK4 iProver_c13 sK26 sK24))) (or (not (incident_c sK24 iProver_c13)) (not (incident_c sK24 sK26)) (meet sK24 sK26 iProver_c13) (not (end_point _let_0 sK26)) (not (end_point _let_0 iProver_c13)))))
+(assert (or (not (incident_c sK24 sK26)) (end_point sK24 sK26) (inner_point sK24 sK26)))
+(assert (let ((_let_0 (part_of sK26 sK24))) (or (not (incident_c sK24 sK24)) (not (part_of sK24 sK24)) (not (end_point sK24 sK24)) (part_of sK24 sK26) _let_0 (not _let_0) (not (incident_c sK24 sK26)))))
+(assert (or (not (part_of iProver_c13 iProver_c14)) (part_of iProver_c13 sK26) (part_of sK26 iProver_c13) (not (part_of sK26 iProver_c14)) (not (incident_c sK24 iProver_c13)) (not (end_point sK24 iProver_c14)) (not (incident_c sK24 sK26))))
+(assert (or (not (incident_c sK24 sK26)) (end_point sK24 sK26) (part_of (sK2 sK26 sK24) sK26)))
+(assert (or (not (incident_c sK24 sK26)) (end_point sK24 sK26) (part_of (sK3 sK26 sK24) sK26)))
+(assert (or (not (incident_c sK24 sK26)) (end_point sK24 sK26) (incident_c sK24 (sK2 sK26 sK24))))
+(assert (or (not (incident_c sK24 sK26)) (end_point sK24 sK26) (incident_c sK24 (sK3 sK26 sK24))))
+(assert (or (not (incident_c sK24 sK26)) (end_point sK24 sK26) (not (part_of (sK2 sK26 sK24) (sK3 sK26 sK24)))))
+(assert (or (not (incident_c sK24 sK26)) (end_point sK24 sK26) (not (part_of (sK3 sK26 sK24) (sK2 sK26 sK24)))))
+(assert (or (not (incident_c sK24 sK26)) (incident_c sK24 (sum sK26 sK24))))
+(assert (or (not (incident_c sK24 sK26)) (incident_c sK24 (sum sK26 iProver_c13))))
+(assert (or (not (incident_c sK24 sK26)) (incident_c sK24 (sum sK24 sK26))))
+(assert (or (not (incident_c sK24 sK26)) (incident_c sK24 (sum iProver_c13 sK26))))
+(assert (or (incident_c sK24 sK24) (not (part_of sK26 sK24)) (not (incident_c sK24 sK26))))
+(assert (or (not (part_of sK26 iProver_c13)) (incident_c sK24 iProver_c13) (not (incident_c sK24 sK26))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK21 _let_0 sK24))) (let ((_let_2 (sK22 _let_0 sK24))) (or (ordered_by sK24 _let_1 _let_2) (ordered_by _let_0 _let_1 _let_2) (= sK24 _let_0))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK12 _let_0 sK24))) (or (= sK24 _let_0) (incident_c _let_1 sK24) (incident_c _let_1 _let_0)))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (open _let_0) (= sK24 _let_0) (not (part_of _let_0 sK24)))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (or (open sK24) (not (part_of sK24 _let_0)) (= _let_0 sK24))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK21 sK24 _let_0))) (let ((_let_2 (sK22 sK24 _let_0))) (or (= _let_0 sK24) (ordered_by sK24 _let_1 _let_2) (ordered_by _let_0 _let_1 _let_2))))))
+(assert (let ((_let_0 (sK12 sK25 sK26))) (let ((_let_1 (sK12 sK24 _let_0))) (or (= _let_0 sK24) (incident_c _let_1 sK24) (incident_c _let_1 _let_0)))))
+(assert (let ((_let_0 (sK1 sK24 sK24 sK25))) (or (not (incident_c _let_0 sK25)) (not (incident_c _let_0 sK24)) (= (sum sK24 sK24) sK25))))
+(assert (let ((_let_0 (sK1 iProver_c13 iProver_c14 sK25))) (or (not (incident_c _let_0 sK25)) (not (incident_c _let_0 iProver_c14)) (= (sum iProver_c14 iProver_c13) sK25))))
+(assert (let ((_let_0 (sK1 sK24 sK24 sK26))) (or (not (incident_c _let_0 sK26)) (not (incident_c _let_0 sK24)) (= (sum sK24 sK24) sK26))))
+(assert (let ((_let_0 (sK1 iProver_c13 iProver_c14 sK26))) (or (not (incident_c _let_0 sK26)) (not (incident_c _let_0 iProver_c14)) (= (sum iProver_c14 iProver_c13) sK26))))
+(assert (let ((_let_0 (sum sK24 sK24))) (or (open sK25) (= _let_0 sK25) (not (part_of sK25 _let_0)))))
+(assert (let ((_let_0 (sum iProver_c13 iProver_c14))) (or (open sK25) (= _let_0 sK25) (not (part_of sK25 _let_0)))))
+(assert (let ((_let_0 (sum sK24 sK24))) (or (open sK26) (= _let_0 sK26) (not (part_of sK26 _let_0)))))
+(assert (let ((_let_0 (sum iProver_c13 iProver_c14))) (or (open sK26) (= _let_0 sK26) (not (part_of sK26 _let_0)))))
+(assert (let ((_let_0 (sum sK24 sK24))) (or (open _let_0) (not (part_of _let_0 sK25)) (= sK25 _let_0))))
+(assert (let ((_let_0 (sum iProver_c13 iProver_c14))) (or (open _let_0) (not (part_of _let_0 sK25)) (= sK25 _let_0))))
+(assert (let ((_let_0 (sum sK24 sK24))) (or (open _let_0) (not (part_of _let_0 sK26)) (= sK26 _let_0))))
+(assert (let ((_let_0 (sum iProver_c13 iProver_c14))) (or (open _let_0) (not (part_of _let_0 sK26)) (= sK26 _let_0))))
+(assert (let ((_let_0 (sum sK24 sK24))) (let ((_let_1 (sK12 _let_0 sK25))) (or (= sK25 _let_0) (incident_c _let_1 _let_0) (incident_c _let_1 sK25)))))
+(assert (let ((_let_0 (sum iProver_c13 iProver_c14))) (let ((_let_1 (sK12 _let_0 sK25))) (or (= sK25 _let_0) (incident_c _let_1 _let_0) (incident_c _let_1 sK25)))))
+(assert (let ((_let_0 (sum sK24 sK24))) (let ((_let_1 (sK12 _let_0 sK26))) (or (= sK26 _let_0) (incident_c _let_1 _let_0) (incident_c _let_1 sK26)))))
+(assert (let ((_let_0 (sum iProver_c13 iProver_c14))) (let ((_let_1 (sK12 _let_0 sK26))) (or (= sK26 _let_0) (incident_c _let_1 _let_0) (incident_c _let_1 sK26)))))
+(assert (let ((_let_0 (sK19 sK24))) (or (not (incident_o sK25 sK24)) (not (start_point _let_0 sK24)) (ordered_by sK24 _let_0 sK25) (= _let_0 sK25))))
+(assert (let ((_let_0 (sK19 iProver_c13))) (or (not (start_point _let_0 iProver_c13)) (not (incident_o sK25 iProver_c13)) (ordered_by iProver_c13 _let_0 sK25) (= _let_0 sK25))))
+(assert (let ((_let_0 (sK19 sK24))) (or (not (incident_o sK26 sK24)) (not (start_point _let_0 sK24)) (ordered_by sK24 _let_0 sK26) (= _let_0 sK26))))
+(assert (let ((_let_0 (sK19 iProver_c13))) (or (not (start_point _let_0 iProver_c13)) (not (incident_o sK26 iProver_c13)) (ordered_by iProver_c13 _let_0 sK26) (= _let_0 sK26))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (or (incident_o _let_0 sK26) (not (ordered_by sK26 _let_0 sK24)))))
+(assert (or (not (ordered_by sK26 (sK21 sK25 sK26) sK24)) (incident_o sK24 sK26)))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (or (not (ordered_by sK26 _let_0 sK24)) (not (ordered_by sK26 sK24 sK24)) (between_o sK26 _let_0 sK24 sK24))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (or (not (ordered_by sK26 _let_0 sK24)) (not (ordered_by sK26 sK24 iProver_c13)) (between_o sK26 _let_0 sK24 iProver_c13))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (or (not (ordered_by sK26 _let_0 sK24)) (not (ordered_by sK26 sK24 sK24)) (between_o sK26 sK24 sK24 _let_0))))
+(assert (let ((_let_0 (sK21 sK25 sK26))) (or (not (ordered_by sK26 _let_0 sK24)) (not (ordered_by sK26 sK24 iProver_c13)) (between_o sK26 iProver_c13 sK24 _let_0))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK21 _let_0 sK24))) (let ((_let_2 (sK22 _let_0 sK24))) (or (ordered_by sK24 _let_1 _let_2) (ordered_by _let_0 _let_1 _let_2) (= sK24 _let_0))))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK12 _let_0 sK24))) (or (= sK24 _let_0) (incident_c _let_1 sK24) (incident_c _let_1 _let_0)))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (or (open _let_0) (= sK24 _let_0) (not (part_of _let_0 sK24)))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (or (open sK24) (not (part_of sK24 _let_0)) (= _let_0 sK24))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK21 sK24 _let_0))) (let ((_let_2 (sK22 sK24 _let_0))) (or (= _let_0 sK24) (ordered_by sK24 _let_1 _let_2) (ordered_by _let_0 _let_1 _let_2))))))
+(assert (let ((_let_0 (sK22 sK25 sK26))) (let ((_let_1 (sK12 sK24 _let_0))) (or (= _let_0 sK24) (incident_c _let_1 sK24) (incident_c _let_1 _let_0)))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (or (incident_o _let_0 sK25) (not (ordered_by sK25 _let_0 sK24)))))
+(assert (or (not (ordered_by sK25 (sK21 sK26 sK25) sK24)) (incident_o sK24 sK25)))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (or (not (ordered_by sK25 _let_0 sK24)) (not (ordered_by sK25 sK24 sK24)) (between_o sK25 _let_0 sK24 sK24))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (or (not (ordered_by sK25 _let_0 sK24)) (not (ordered_by sK25 sK24 iProver_c13)) (between_o sK25 _let_0 sK24 iProver_c13))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (or (not (ordered_by sK25 _let_0 sK24)) (not (ordered_by sK25 sK24 sK24)) (between_o sK25 sK24 sK24 _let_0))))
+(assert (let ((_let_0 (sK21 sK26 sK25))) (or (not (ordered_by sK25 _let_0 sK24)) (not (ordered_by sK25 sK24 iProver_c13)) (between_o sK25 iProver_c13 sK24 _let_0))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK21 _let_0 sK24))) (let ((_let_2 (sK22 _let_0 sK24))) (or (ordered_by sK24 _let_1 _let_2) (ordered_by _let_0 _let_1 _let_2) (= sK24 _let_0))))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK12 _let_0 sK24))) (or (= sK24 _let_0) (incident_c _let_1 sK24) (incident_c _let_1 _let_0)))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (or (open _let_0) (= sK24 _let_0) (not (part_of _let_0 sK24)))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (or (open sK24) (not (part_of sK24 _let_0)) (= _let_0 sK24))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK21 sK24 _let_0))) (let ((_let_2 (sK22 sK24 _let_0))) (or (= _let_0 sK24) (ordered_by sK24 _let_1 _let_2) (ordered_by _let_0 _let_1 _let_2))))))
+(assert (let ((_let_0 (sK22 sK26 sK25))) (let ((_let_1 (sK12 sK24 _let_0))) (or (= _let_0 sK24) (incident_c _let_1 sK24) (incident_c _let_1 _let_0)))))
+(check-sat)
+
diff --git a/test/regress/regress2/Makefile.am b/test/regress/regress2/Makefile.am
new file mode 100644
index 0000000..c47d584
--- /dev/null
+++ b/test/regress/regress2/Makefile.am
@@ -0,0 +1,69 @@
+SUBDIRS = . arith
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	bug136.smt \
+	bug148.smt \
+	bug394.smt2 \
+	DTP_k2_n35_c175_s15.smt2 \
+	GEO123+1.minimized.smt2 \
+	error1.smt \
+	friedman_n4_i5.smt \
+	hole7.cvc \
+	hole8.cvc \
+	instance_1444.smt \
+	fuzz_2.smt \
+	hash_sat_10_09.smt2 \
+	hash_sat_07_17.smt2 \
+	ooo.tag10.smt2 \
+	hash_sat_06_19.smt2 \
+	hash_sat_09_09.smt2 \
+	ooo.rf6.smt2 \
+	auflia-fuzz06.smt \
+	piVC_5581bd.smt2 \
+	typed_v1l50016-simp.cvc \
+	FIREFLY_3_e2_2236_e7_3681.ec.minimized.smt2 \
+	xs-09-16-3-4-1-5.smt \
+	xs-09-16-3-4-1-5.decn.smt \
+	uflia-error0.smt2
+
+EXTRA_DIST = $(TESTS) \
+	FIREFLY_3_e2_2236_e7_3681.ec.minimized.smt2.expect \
+	uflia-error0.smt2.expect \
+	xs-09-16-3-4-1-5.decn.smt.expect
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress2 test
+regress regress2 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress1 regress3 regress4
+regress0 regress1 regress3 regress4:
diff --git a/test/regress/regress2/Makefile.in b/test/regress/regress2/Makefile.in
new file mode 100644
index 0000000..309ec67
--- /dev/null
+++ b/test/regress/regress2/Makefile.in
@@ -0,0 +1,1364 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress2
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+SUBDIRS = . arith
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = bug136.smt \
+	bug148.smt \
+	bug394.smt2 \
+	DTP_k2_n35_c175_s15.smt2 \
+	GEO123+1.minimized.smt2 \
+	error1.smt \
+	friedman_n4_i5.smt \
+	hole7.cvc \
+	hole8.cvc \
+	instance_1444.smt \
+	fuzz_2.smt \
+	hash_sat_10_09.smt2 \
+	hash_sat_07_17.smt2 \
+	ooo.tag10.smt2 \
+	hash_sat_06_19.smt2 \
+	hash_sat_09_09.smt2 \
+	ooo.rf6.smt2 \
+	auflia-fuzz06.smt \
+	piVC_5581bd.smt2 \
+	typed_v1l50016-simp.cvc \
+	FIREFLY_3_e2_2236_e7_3681.ec.minimized.smt2 \
+	xs-09-16-3-4-1-5.smt \
+	xs-09-16-3-4-1-5.decn.smt \
+	uflia-error0.smt2
+
+EXTRA_DIST = $(TESTS) \
+	FIREFLY_3_e2_2236_e7_3681.ec.minimized.smt2.expect \
+	uflia-error0.smt2.expect \
+	xs-09-16-3-4-1-5.decn.smt.expect
+
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress2/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress2/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+bug136.smt.log: bug136.smt
+	@p='bug136.smt'; \
+	b='bug136.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug148.smt.log: bug148.smt
+	@p='bug148.smt'; \
+	b='bug148.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug394.smt2.log: bug394.smt2
+	@p='bug394.smt2'; \
+	b='bug394.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+DTP_k2_n35_c175_s15.smt2.log: DTP_k2_n35_c175_s15.smt2
+	@p='DTP_k2_n35_c175_s15.smt2'; \
+	b='DTP_k2_n35_c175_s15.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+GEO123+1.minimized.smt2.log: GEO123+1.minimized.smt2
+	@p='GEO123+1.minimized.smt2'; \
+	b='GEO123+1.minimized.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+error1.smt.log: error1.smt
+	@p='error1.smt'; \
+	b='error1.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+friedman_n4_i5.smt.log: friedman_n4_i5.smt
+	@p='friedman_n4_i5.smt'; \
+	b='friedman_n4_i5.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+hole7.cvc.log: hole7.cvc
+	@p='hole7.cvc'; \
+	b='hole7.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+hole8.cvc.log: hole8.cvc
+	@p='hole8.cvc'; \
+	b='hole8.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+instance_1444.smt.log: instance_1444.smt
+	@p='instance_1444.smt'; \
+	b='instance_1444.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fuzz_2.smt.log: fuzz_2.smt
+	@p='fuzz_2.smt'; \
+	b='fuzz_2.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+hash_sat_10_09.smt2.log: hash_sat_10_09.smt2
+	@p='hash_sat_10_09.smt2'; \
+	b='hash_sat_10_09.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+hash_sat_07_17.smt2.log: hash_sat_07_17.smt2
+	@p='hash_sat_07_17.smt2'; \
+	b='hash_sat_07_17.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ooo.tag10.smt2.log: ooo.tag10.smt2
+	@p='ooo.tag10.smt2'; \
+	b='ooo.tag10.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+hash_sat_06_19.smt2.log: hash_sat_06_19.smt2
+	@p='hash_sat_06_19.smt2'; \
+	b='hash_sat_06_19.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+hash_sat_09_09.smt2.log: hash_sat_09_09.smt2
+	@p='hash_sat_09_09.smt2'; \
+	b='hash_sat_09_09.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ooo.rf6.smt2.log: ooo.rf6.smt2
+	@p='ooo.rf6.smt2'; \
+	b='ooo.rf6.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+auflia-fuzz06.smt.log: auflia-fuzz06.smt
+	@p='auflia-fuzz06.smt'; \
+	b='auflia-fuzz06.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+piVC_5581bd.smt2.log: piVC_5581bd.smt2
+	@p='piVC_5581bd.smt2'; \
+	b='piVC_5581bd.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+typed_v1l50016-simp.cvc.log: typed_v1l50016-simp.cvc
+	@p='typed_v1l50016-simp.cvc'; \
+	b='typed_v1l50016-simp.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+FIREFLY_3_e2_2236_e7_3681.ec.minimized.smt2.log: FIREFLY_3_e2_2236_e7_3681.ec.minimized.smt2
+	@p='FIREFLY_3_e2_2236_e7_3681.ec.minimized.smt2'; \
+	b='FIREFLY_3_e2_2236_e7_3681.ec.minimized.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+xs-09-16-3-4-1-5.smt.log: xs-09-16-3-4-1-5.smt
+	@p='xs-09-16-3-4-1-5.smt'; \
+	b='xs-09-16-3-4-1-5.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+xs-09-16-3-4-1-5.decn.smt.log: xs-09-16-3-4-1-5.decn.smt
+	@p='xs-09-16-3-4-1-5.decn.smt'; \
+	b='xs-09-16-3-4-1-5.decn.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+uflia-error0.smt2.log: uflia-error0.smt2
+	@p='uflia-error0.smt2'; \
+	b='uflia-error0.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress2 test
+regress regress2 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress1 regress3 regress4
+regress0 regress1 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress2/arith/Makefile.am b/test/regress/regress2/arith/Makefile.am
new file mode 100644
index 0000000..82d4588
--- /dev/null
+++ b/test/regress/regress2/arith/Makefile.am
@@ -0,0 +1,37 @@
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+	abz5_1400.smt \
+	pursuit-safety-11.smt \
+	pursuit-safety-12.smt \
+	sc-7.base.cvc.smt \
+	uart-8.base.cvc.smt \
+	qlock-4-10-9.base.cvc.smt2 \
+	lpsat-goal-9.smt2 \
+	prp-13-24.smt2
+
+EXTRA_DIST = $(TESTS)
+
+# synonyms for "check" in this directory
+.PHONY: regress regress2 test
+regress regress2 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress1 regress3 regress4
+regress0 regress1 regress3 regress4:
diff --git a/test/regress/regress2/arith/Makefile.in b/test/regress/regress2/arith/Makefile.in
new file mode 100644
index 0000000..541c6fb
--- /dev/null
+++ b/test/regress/regress2/arith/Makefile.in
@@ -0,0 +1,1042 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress2/arith
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = \
+	abz5_1400.smt \
+	pursuit-safety-11.smt \
+	pursuit-safety-12.smt \
+	sc-7.base.cvc.smt \
+	uart-8.base.cvc.smt \
+	qlock-4-10-9.base.cvc.smt2 \
+	lpsat-goal-9.smt2 \
+	prp-13-24.smt2
+
+EXTRA_DIST = $(TESTS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress2/arith/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress2/arith/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+abz5_1400.smt.log: abz5_1400.smt
+	@p='abz5_1400.smt'; \
+	b='abz5_1400.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pursuit-safety-11.smt.log: pursuit-safety-11.smt
+	@p='pursuit-safety-11.smt'; \
+	b='pursuit-safety-11.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pursuit-safety-12.smt.log: pursuit-safety-12.smt
+	@p='pursuit-safety-12.smt'; \
+	b='pursuit-safety-12.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sc-7.base.cvc.smt.log: sc-7.base.cvc.smt
+	@p='sc-7.base.cvc.smt'; \
+	b='sc-7.base.cvc.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+uart-8.base.cvc.smt.log: uart-8.base.cvc.smt
+	@p='uart-8.base.cvc.smt'; \
+	b='uart-8.base.cvc.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+qlock-4-10-9.base.cvc.smt2.log: qlock-4-10-9.base.cvc.smt2
+	@p='qlock-4-10-9.base.cvc.smt2'; \
+	b='qlock-4-10-9.base.cvc.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+lpsat-goal-9.smt2.log: lpsat-goal-9.smt2
+	@p='lpsat-goal-9.smt2'; \
+	b='lpsat-goal-9.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+prp-13-24.smt2.log: prp-13-24.smt2
+	@p='prp-13-24.smt2'; \
+	b='prp-13-24.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+# synonyms for "check" in this directory
+.PHONY: regress regress2 test
+regress regress2 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress1 regress3 regress4
+regress0 regress1 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress2/arith/abz5_1400.smt b/test/regress/regress2/arith/abz5_1400.smt
new file mode 100644
index 0000000..662b398
--- /dev/null
+++ b/test/regress/regress2/arith/abz5_1400.smt
@@ -0,0 +1,119 @@
+(benchmark abz5_1400.smt
+  :source {
+These benchmarks are used by the job-shop scheduling community and were
+originaly from Andre Henning.  They were translated into CVC format by Bruno
+Dutertre and Leonardo de Moura.  Contact demoura at csl.sri.com for more
+information.
+
+This benchmark was automatically translated into SMT-LIB format from
+CVC format using CVC Lite
+}
+  :status sat
+:category { crafted }
+:difficulty { 0 }
+  :logic QF_RDL
+  :extrafuns ((cvclZero Real))
+  :extrafuns ((Z Real))
+  :extrafuns ((t_0_0 Real))
+  :extrafuns ((t_0_1 Real))
+  :extrafuns ((t_0_2 Real))
+  :extrafuns ((t_0_3 Real))
+  :extrafuns ((t_0_4 Real))
+  :extrafuns ((t_0_5 Real))
+  :extrafuns ((t_0_6 Real))
+  :extrafuns ((t_0_7 Real))
+  :extrafuns ((t_0_8 Real))
+  :extrafuns ((t_0_9 Real))
+  :extrafuns ((t_1_0 Real))
+  :extrafuns ((t_1_1 Real))
+  :extrafuns ((t_1_2 Real))
+  :extrafuns ((t_1_3 Real))
+  :extrafuns ((t_1_4 Real))
+  :extrafuns ((t_1_5 Real))
+  :extrafuns ((t_1_6 Real))
+  :extrafuns ((t_1_7 Real))
+  :extrafuns ((t_1_8 Real))
+  :extrafuns ((t_1_9 Real))
+  :extrafuns ((t_2_0 Real))
+  :extrafuns ((t_2_1 Real))
+  :extrafuns ((t_2_2 Real))
+  :extrafuns ((t_2_3 Real))
+  :extrafuns ((t_2_4 Real))
+  :extrafuns ((t_2_5 Real))
+  :extrafuns ((t_2_6 Real))
+  :extrafuns ((t_2_7 Real))
+  :extrafuns ((t_2_8 Real))
+  :extrafuns ((t_2_9 Real))
+  :extrafuns ((t_3_0 Real))
+  :extrafuns ((t_3_1 Real))
+  :extrafuns ((t_3_2 Real))
+  :extrafuns ((t_3_3 Real))
+  :extrafuns ((t_3_4 Real))
+  :extrafuns ((t_3_5 Real))
+  :extrafuns ((t_3_6 Real))
+  :extrafuns ((t_3_7 Real))
+  :extrafuns ((t_3_8 Real))
+  :extrafuns ((t_3_9 Real))
+  :extrafuns ((t_4_0 Real))
+  :extrafuns ((t_4_1 Real))
+  :extrafuns ((t_4_2 Real))
+  :extrafuns ((t_4_3 Real))
+  :extrafuns ((t_4_4 Real))
+  :extrafuns ((t_4_5 Real))
+  :extrafuns ((t_4_6 Real))
+  :extrafuns ((t_4_7 Real))
+  :extrafuns ((t_4_8 Real))
+  :extrafuns ((t_4_9 Real))
+  :extrafuns ((t_5_0 Real))
+  :extrafuns ((t_5_1 Real))
+  :extrafuns ((t_5_2 Real))
+  :extrafuns ((t_5_3 Real))
+  :extrafuns ((t_5_4 Real))
+  :extrafuns ((t_5_5 Real))
+  :extrafuns ((t_5_6 Real))
+  :extrafuns ((t_5_7 Real))
+  :extrafuns ((t_5_8 Real))
+  :extrafuns ((t_5_9 Real))
+  :extrafuns ((t_6_0 Real))
+  :extrafuns ((t_6_1 Real))
+  :extrafuns ((t_6_2 Real))
+  :extrafuns ((t_6_3 Real))
+  :extrafuns ((t_6_4 Real))
+  :extrafuns ((t_6_5 Real))
+  :extrafuns ((t_6_6 Real))
+  :extrafuns ((t_6_7 Real))
+  :extrafuns ((t_6_8 Real))
+  :extrafuns ((t_6_9 Real))
+  :extrafuns ((t_7_0 Real))
+  :extrafuns ((t_7_1 Real))
+  :extrafuns ((t_7_2 Real))
+  :extrafuns ((t_7_3 Real))
+  :extrafuns ((t_7_4 Real))
+  :extrafuns ((t_7_5 Real))
+  :extrafuns ((t_7_6 Real))
+  :extrafuns ((t_7_7 Real))
+  :extrafuns ((t_7_8 Real))
+  :extrafuns ((t_7_9 Real))
+  :extrafuns ((t_8_0 Real))
+  :extrafuns ((t_8_1 Real))
+  :extrafuns ((t_8_2 Real))
+  :extrafuns ((t_8_3 Real))
+  :extrafuns ((t_8_4 Real))
+  :extrafuns ((t_8_5 Real))
+  :extrafuns ((t_8_6 Real))
+  :extrafuns ((t_8_7 Real))
+  :extrafuns ((t_8_8 Real))
+  :extrafuns ((t_8_9 Real))
+  :extrafuns ((t_9_0 Real))
+  :extrafuns ((t_9_1 Real))
+  :extrafuns ((t_9_2 Real))
+  :extrafuns ((t_9_3 Real))
+  :extrafuns ((t_9_4 Real))
+  :extrafuns ((t_9_5 Real))
+  :extrafuns ((t_9_6 Real))
+  :extrafuns ((t_9_7 Real))
+  :extrafuns ((t_9_8 Real))
+  :extrafuns ((t_9_9 Real))
+  :formula
+(and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (>= (- t_0_4 cvclZero) 0) (>= (- t_0_8 t_0_4) 88)) (>= (- t_0_6 t_0_8) 68)) (>= (- t_0_5 t_0_6) 94)) (>= (- t_0_1 t_0_5) 99)) (>= (- t_0_2 t_0_1) 67)) (>= (- t_0_9 t_0_2) 89)) (>= (- t_0_7 t_0_9) 77)) (>= (- t_0_0 t_0_7) 99)) (>= (- t_0_3 t_0_0) 86)) (>= (- Z t_0_3) 92)) (and (and (and (and (and (and (and (and (and (and (>= (- t_1_5 cvclZer [...]
+)
diff --git a/test/regress/regress2/arith/lpsat-goal-9.smt2 b/test/regress/regress2/arith/lpsat-goal-9.smt2
new file mode 100644
index 0000000..d71fc13
--- /dev/null
+++ b/test/regress/regress2/arith/lpsat-goal-9.smt2
@@ -0,0 +1,557 @@
+(set-logic QF_IDL)
+(set-info :source |
+Queuing lock algorithm by Kazuhiro Ogata (ogata at jaist.ac.jp). 
+Translated into CVC format by Leonardo de Moura.
+
+This benchmark was automatically translated into SMT-LIB format from
+CVC format using CVC Lite
+
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-fun cvclZero () Int)
+(declare-fun x_0 () Bool)
+(declare-fun x_1 () Bool)
+(declare-fun x_2 () Bool)
+(declare-fun x_3 () Bool)
+(declare-fun x_4 () Bool)
+(declare-fun x_5 () Bool)
+(declare-fun x_6 () Bool)
+(declare-fun x_7 () Bool)
+(declare-fun x_8 () Bool)
+(declare-fun x_9 () Bool)
+(declare-fun x_10 () Bool)
+(declare-fun x_11 () Bool)
+(declare-fun x_12 () Bool)
+(declare-fun x_13 () Bool)
+(declare-fun x_14 () Bool)
+(declare-fun x_15 () Bool)
+(declare-fun x_16 () Bool)
+(declare-fun x_17 () Bool)
+(declare-fun x_18 () Bool)
+(declare-fun x_19 () Bool)
+(declare-fun x_20 () Bool)
+(declare-fun x_21 () Bool)
+(declare-fun x_22 () Bool)
+(declare-fun x_23 () Bool)
+(declare-fun x_24 () Bool)
+(declare-fun x_25 () Bool)
+(declare-fun x_26 () Bool)
+(declare-fun x_27 () Bool)
+(declare-fun x_28 () Bool)
+(declare-fun x_29 () Bool)
+(declare-fun x_30 () Bool)
+(declare-fun x_31 () Bool)
+(declare-fun x_32 () Int)
+(declare-fun x_33 () Int)
+(declare-fun x_34 () Int)
+(declare-fun x_35 () Int)
+(declare-fun x_36 () Int)
+(declare-fun x_37 () Int)
+(declare-fun x_38 () Int)
+(declare-fun x_39 () Int)
+(declare-fun x_40 () Int)
+(declare-fun x_41 () Int)
+(declare-fun x_42 () Int)
+(declare-fun x_43 () Int)
+(declare-fun x_44 () Int)
+(declare-fun x_45 () Int)
+(declare-fun x_46 () Int)
+(declare-fun x_47 () Int)
+(declare-fun x_48 () Bool)
+(declare-fun x_49 () Bool)
+(declare-fun x_50 () Bool)
+(declare-fun x_51 () Bool)
+(declare-fun x_52 () Bool)
+(declare-fun x_53 () Bool)
+(declare-fun x_54 () Bool)
+(declare-fun x_55 () Bool)
+(declare-fun x_56 () Int)
+(declare-fun x_57 () Int)
+(declare-fun x_58 () Int)
+(declare-fun x_59 () Int)
+(declare-fun x_60 () Int)
+(declare-fun x_61 () Int)
+(declare-fun x_62 () Int)
+(declare-fun x_63 () Int)
+(declare-fun x_64 () Int)
+(declare-fun x_65 () Int)
+(declare-fun x_66 () Int)
+(declare-fun x_67 () Int)
+(declare-fun x_68 () Bool)
+(declare-fun x_69 () Bool)
+(declare-fun x_70 () Bool)
+(declare-fun x_71 () Bool)
+(declare-fun x_72 () Bool)
+(declare-fun x_73 () Bool)
+(declare-fun x_74 () Bool)
+(declare-fun x_75 () Bool)
+(declare-fun x_76 () Int)
+(declare-fun x_77 () Int)
+(declare-fun x_78 () Int)
+(declare-fun x_79 () Bool)
+(declare-fun x_80 () Bool)
+(declare-fun x_81 () Bool)
+(declare-fun x_82 () Bool)
+(declare-fun x_83 () Bool)
+(declare-fun x_84 () Bool)
+(declare-fun x_85 () Bool)
+(declare-fun x_86 () Bool)
+(declare-fun x_87 () Bool)
+(declare-fun x_88 () Bool)
+(declare-fun x_89 () Bool)
+(declare-fun x_90 () Bool)
+(declare-fun x_91 () Bool)
+(declare-fun x_92 () Bool)
+(declare-fun x_93 () Bool)
+(declare-fun x_94 () Bool)
+(declare-fun x_95 () Int)
+(declare-fun x_96 () Int)
+(declare-fun x_97 () Int)
+(declare-fun x_98 () Int)
+(declare-fun x_99 () Int)
+(declare-fun x_100 () Int)
+(declare-fun x_101 () Int)
+(declare-fun x_102 () Int)
+(declare-fun x_103 () Bool)
+(declare-fun x_104 () Bool)
+(declare-fun x_105 () Bool)
+(declare-fun x_106 () Bool)
+(declare-fun x_107 () Bool)
+(declare-fun x_108 () Bool)
+(declare-fun x_109 () Bool)
+(declare-fun x_110 () Bool)
+(declare-fun x_111 () Int)
+(declare-fun x_112 () Int)
+(declare-fun x_113 () Int)
+(declare-fun x_114 () Int)
+(declare-fun x_115 () Int)
+(declare-fun x_116 () Int)
+(declare-fun x_117 () Int)
+(declare-fun x_118 () Int)
+(declare-fun x_119 () Int)
+(declare-fun x_120 () Int)
+(declare-fun x_121 () Int)
+(declare-fun x_122 () Int)
+(declare-fun x_123 () Bool)
+(declare-fun x_124 () Bool)
+(declare-fun x_125 () Bool)
+(declare-fun x_126 () Bool)
+(declare-fun x_127 () Bool)
+(declare-fun x_128 () Bool)
+(declare-fun x_129 () Bool)
+(declare-fun x_130 () Bool)
+(declare-fun x_131 () Int)
+(declare-fun x_132 () Int)
+(declare-fun x_133 () Int)
+(declare-fun x_134 () Bool)
+(declare-fun x_135 () Bool)
+(declare-fun x_136 () Bool)
+(declare-fun x_137 () Bool)
+(declare-fun x_138 () Bool)
+(declare-fun x_139 () Bool)
+(declare-fun x_140 () Bool)
+(declare-fun x_141 () Bool)
+(declare-fun x_142 () Bool)
+(declare-fun x_143 () Bool)
+(declare-fun x_144 () Bool)
+(declare-fun x_145 () Bool)
+(declare-fun x_146 () Bool)
+(declare-fun x_147 () Bool)
+(declare-fun x_148 () Bool)
+(declare-fun x_149 () Bool)
+(declare-fun x_150 () Int)
+(declare-fun x_151 () Int)
+(declare-fun x_152 () Int)
+(declare-fun x_153 () Int)
+(declare-fun x_154 () Int)
+(declare-fun x_155 () Int)
+(declare-fun x_156 () Int)
+(declare-fun x_157 () Int)
+(declare-fun x_158 () Bool)
+(declare-fun x_159 () Bool)
+(declare-fun x_160 () Bool)
+(declare-fun x_161 () Bool)
+(declare-fun x_162 () Bool)
+(declare-fun x_163 () Bool)
+(declare-fun x_164 () Bool)
+(declare-fun x_165 () Bool)
+(declare-fun x_166 () Int)
+(declare-fun x_167 () Int)
+(declare-fun x_168 () Int)
+(declare-fun x_169 () Int)
+(declare-fun x_170 () Int)
+(declare-fun x_171 () Int)
+(declare-fun x_172 () Int)
+(declare-fun x_173 () Int)
+(declare-fun x_174 () Int)
+(declare-fun x_175 () Int)
+(declare-fun x_176 () Int)
+(declare-fun x_177 () Int)
+(declare-fun x_178 () Bool)
+(declare-fun x_179 () Bool)
+(declare-fun x_180 () Bool)
+(declare-fun x_181 () Bool)
+(declare-fun x_182 () Bool)
+(declare-fun x_183 () Bool)
+(declare-fun x_184 () Bool)
+(declare-fun x_185 () Bool)
+(declare-fun x_186 () Int)
+(declare-fun x_187 () Int)
+(declare-fun x_188 () Int)
+(declare-fun x_189 () Bool)
+(declare-fun x_190 () Bool)
+(declare-fun x_191 () Bool)
+(declare-fun x_192 () Bool)
+(declare-fun x_193 () Bool)
+(declare-fun x_194 () Bool)
+(declare-fun x_195 () Bool)
+(declare-fun x_196 () Bool)
+(declare-fun x_197 () Bool)
+(declare-fun x_198 () Bool)
+(declare-fun x_199 () Bool)
+(declare-fun x_200 () Bool)
+(declare-fun x_201 () Bool)
+(declare-fun x_202 () Bool)
+(declare-fun x_203 () Bool)
+(declare-fun x_204 () Bool)
+(declare-fun x_205 () Int)
+(declare-fun x_206 () Int)
+(declare-fun x_207 () Int)
+(declare-fun x_208 () Int)
+(declare-fun x_209 () Int)
+(declare-fun x_210 () Int)
+(declare-fun x_211 () Int)
+(declare-fun x_212 () Int)
+(declare-fun x_213 () Bool)
+(declare-fun x_214 () Bool)
+(declare-fun x_215 () Bool)
+(declare-fun x_216 () Bool)
+(declare-fun x_217 () Bool)
+(declare-fun x_218 () Bool)
+(declare-fun x_219 () Bool)
+(declare-fun x_220 () Bool)
+(declare-fun x_221 () Int)
+(declare-fun x_222 () Int)
+(declare-fun x_223 () Int)
+(declare-fun x_224 () Int)
+(declare-fun x_225 () Int)
+(declare-fun x_226 () Int)
+(declare-fun x_227 () Int)
+(declare-fun x_228 () Int)
+(declare-fun x_229 () Int)
+(declare-fun x_230 () Int)
+(declare-fun x_231 () Int)
+(declare-fun x_232 () Int)
+(declare-fun x_233 () Bool)
+(declare-fun x_234 () Bool)
+(declare-fun x_235 () Bool)
+(declare-fun x_236 () Bool)
+(declare-fun x_237 () Bool)
+(declare-fun x_238 () Bool)
+(declare-fun x_239 () Bool)
+(declare-fun x_240 () Bool)
+(declare-fun x_241 () Int)
+(declare-fun x_242 () Int)
+(declare-fun x_243 () Int)
+(declare-fun x_244 () Bool)
+(declare-fun x_245 () Bool)
+(declare-fun x_246 () Bool)
+(declare-fun x_247 () Bool)
+(declare-fun x_248 () Bool)
+(declare-fun x_249 () Bool)
+(declare-fun x_250 () Bool)
+(declare-fun x_251 () Bool)
+(declare-fun x_252 () Bool)
+(declare-fun x_253 () Bool)
+(declare-fun x_254 () Bool)
+(declare-fun x_255 () Bool)
+(declare-fun x_256 () Bool)
+(declare-fun x_257 () Bool)
+(declare-fun x_258 () Bool)
+(declare-fun x_259 () Bool)
+(declare-fun x_260 () Int)
+(declare-fun x_261 () Int)
+(declare-fun x_262 () Int)
+(declare-fun x_263 () Int)
+(declare-fun x_264 () Int)
+(declare-fun x_265 () Int)
+(declare-fun x_266 () Int)
+(declare-fun x_267 () Int)
+(declare-fun x_268 () Bool)
+(declare-fun x_269 () Bool)
+(declare-fun x_270 () Bool)
+(declare-fun x_271 () Bool)
+(declare-fun x_272 () Bool)
+(declare-fun x_273 () Bool)
+(declare-fun x_274 () Bool)
+(declare-fun x_275 () Bool)
+(declare-fun x_276 () Int)
+(declare-fun x_277 () Int)
+(declare-fun x_278 () Int)
+(declare-fun x_279 () Int)
+(declare-fun x_280 () Int)
+(declare-fun x_281 () Int)
+(declare-fun x_282 () Int)
+(declare-fun x_283 () Int)
+(declare-fun x_284 () Int)
+(declare-fun x_285 () Int)
+(declare-fun x_286 () Int)
+(declare-fun x_287 () Int)
+(declare-fun x_288 () Bool)
+(declare-fun x_289 () Bool)
+(declare-fun x_290 () Bool)
+(declare-fun x_291 () Bool)
+(declare-fun x_292 () Bool)
+(declare-fun x_293 () Bool)
+(declare-fun x_294 () Bool)
+(declare-fun x_295 () Bool)
+(declare-fun x_296 () Int)
+(declare-fun x_297 () Int)
+(declare-fun x_298 () Int)
+(declare-fun x_299 () Bool)
+(declare-fun x_300 () Bool)
+(declare-fun x_301 () Bool)
+(declare-fun x_302 () Bool)
+(declare-fun x_303 () Bool)
+(declare-fun x_304 () Bool)
+(declare-fun x_305 () Bool)
+(declare-fun x_306 () Bool)
+(declare-fun x_307 () Bool)
+(declare-fun x_308 () Bool)
+(declare-fun x_309 () Bool)
+(declare-fun x_310 () Bool)
+(declare-fun x_311 () Bool)
+(declare-fun x_312 () Bool)
+(declare-fun x_313 () Bool)
+(declare-fun x_314 () Bool)
+(declare-fun x_315 () Int)
+(declare-fun x_316 () Int)
+(declare-fun x_317 () Int)
+(declare-fun x_318 () Int)
+(declare-fun x_319 () Int)
+(declare-fun x_320 () Int)
+(declare-fun x_321 () Int)
+(declare-fun x_322 () Int)
+(declare-fun x_323 () Bool)
+(declare-fun x_324 () Bool)
+(declare-fun x_325 () Bool)
+(declare-fun x_326 () Bool)
+(declare-fun x_327 () Bool)
+(declare-fun x_328 () Bool)
+(declare-fun x_329 () Bool)
+(declare-fun x_330 () Bool)
+(declare-fun x_331 () Int)
+(declare-fun x_332 () Int)
+(declare-fun x_333 () Int)
+(declare-fun x_334 () Int)
+(declare-fun x_335 () Int)
+(declare-fun x_336 () Int)
+(declare-fun x_337 () Int)
+(declare-fun x_338 () Int)
+(declare-fun x_339 () Int)
+(declare-fun x_340 () Int)
+(declare-fun x_341 () Int)
+(declare-fun x_342 () Int)
+(declare-fun x_343 () Bool)
+(declare-fun x_344 () Bool)
+(declare-fun x_345 () Bool)
+(declare-fun x_346 () Bool)
+(declare-fun x_347 () Bool)
+(declare-fun x_348 () Bool)
+(declare-fun x_349 () Bool)
+(declare-fun x_350 () Bool)
+(declare-fun x_351 () Int)
+(declare-fun x_352 () Int)
+(declare-fun x_353 () Int)
+(declare-fun x_354 () Bool)
+(declare-fun x_355 () Bool)
+(declare-fun x_356 () Bool)
+(declare-fun x_357 () Bool)
+(declare-fun x_358 () Bool)
+(declare-fun x_359 () Bool)
+(declare-fun x_360 () Bool)
+(declare-fun x_361 () Bool)
+(declare-fun x_362 () Bool)
+(declare-fun x_363 () Bool)
+(declare-fun x_364 () Bool)
+(declare-fun x_365 () Bool)
+(declare-fun x_366 () Bool)
+(declare-fun x_367 () Bool)
+(declare-fun x_368 () Bool)
+(declare-fun x_369 () Bool)
+(declare-fun x_370 () Int)
+(declare-fun x_371 () Int)
+(declare-fun x_372 () Int)
+(declare-fun x_373 () Int)
+(declare-fun x_374 () Int)
+(declare-fun x_375 () Int)
+(declare-fun x_376 () Int)
+(declare-fun x_377 () Int)
+(declare-fun x_378 () Bool)
+(declare-fun x_379 () Bool)
+(declare-fun x_380 () Bool)
+(declare-fun x_381 () Bool)
+(declare-fun x_382 () Bool)
+(declare-fun x_383 () Bool)
+(declare-fun x_384 () Bool)
+(declare-fun x_385 () Bool)
+(declare-fun x_386 () Int)
+(declare-fun x_387 () Int)
+(declare-fun x_388 () Int)
+(declare-fun x_389 () Int)
+(declare-fun x_390 () Int)
+(declare-fun x_391 () Int)
+(declare-fun x_392 () Int)
+(declare-fun x_393 () Int)
+(declare-fun x_394 () Int)
+(declare-fun x_395 () Int)
+(declare-fun x_396 () Int)
+(declare-fun x_397 () Int)
+(declare-fun x_398 () Bool)
+(declare-fun x_399 () Bool)
+(declare-fun x_400 () Bool)
+(declare-fun x_401 () Bool)
+(declare-fun x_402 () Bool)
+(declare-fun x_403 () Bool)
+(declare-fun x_404 () Bool)
+(declare-fun x_405 () Bool)
+(declare-fun x_406 () Int)
+(declare-fun x_407 () Int)
+(declare-fun x_408 () Int)
+(declare-fun x_409 () Bool)
+(declare-fun x_410 () Bool)
+(declare-fun x_411 () Bool)
+(declare-fun x_412 () Bool)
+(declare-fun x_413 () Bool)
+(declare-fun x_414 () Bool)
+(declare-fun x_415 () Bool)
+(declare-fun x_416 () Bool)
+(declare-fun x_417 () Bool)
+(declare-fun x_418 () Bool)
+(declare-fun x_419 () Bool)
+(declare-fun x_420 () Bool)
+(declare-fun x_421 () Bool)
+(declare-fun x_422 () Bool)
+(declare-fun x_423 () Bool)
+(declare-fun x_424 () Bool)
+(declare-fun x_425 () Int)
+(declare-fun x_426 () Int)
+(declare-fun x_427 () Int)
+(declare-fun x_428 () Int)
+(declare-fun x_429 () Int)
+(declare-fun x_430 () Int)
+(declare-fun x_431 () Int)
+(declare-fun x_432 () Int)
+(declare-fun x_433 () Bool)
+(declare-fun x_434 () Bool)
+(declare-fun x_435 () Bool)
+(declare-fun x_436 () Bool)
+(declare-fun x_437 () Bool)
+(declare-fun x_438 () Bool)
+(declare-fun x_439 () Bool)
+(declare-fun x_440 () Bool)
+(declare-fun x_441 () Int)
+(declare-fun x_442 () Int)
+(declare-fun x_443 () Int)
+(declare-fun x_444 () Int)
+(declare-fun x_445 () Int)
+(declare-fun x_446 () Int)
+(declare-fun x_447 () Int)
+(declare-fun x_448 () Int)
+(declare-fun x_449 () Int)
+(declare-fun x_450 () Int)
+(declare-fun x_451 () Int)
+(declare-fun x_452 () Int)
+(declare-fun x_453 () Bool)
+(declare-fun x_454 () Bool)
+(declare-fun x_455 () Bool)
+(declare-fun x_456 () Bool)
+(declare-fun x_457 () Bool)
+(declare-fun x_458 () Bool)
+(declare-fun x_459 () Bool)
+(declare-fun x_460 () Bool)
+(declare-fun x_461 () Int)
+(declare-fun x_462 () Int)
+(declare-fun x_463 () Int)
+(declare-fun x_464 () Bool)
+(declare-fun x_465 () Bool)
+(declare-fun x_466 () Bool)
+(declare-fun x_467 () Bool)
+(declare-fun x_468 () Bool)
+(declare-fun x_469 () Bool)
+(declare-fun x_470 () Bool)
+(declare-fun x_471 () Bool)
+(declare-fun x_472 () Bool)
+(declare-fun x_473 () Bool)
+(declare-fun x_474 () Bool)
+(declare-fun x_475 () Bool)
+(declare-fun x_476 () Bool)
+(declare-fun x_477 () Bool)
+(declare-fun x_478 () Bool)
+(declare-fun x_479 () Bool)
+(declare-fun x_480 () Int)
+(declare-fun x_481 () Int)
+(declare-fun x_482 () Int)
+(declare-fun x_483 () Int)
+(declare-fun x_484 () Int)
+(declare-fun x_485 () Int)
+(declare-fun x_486 () Int)
+(declare-fun x_487 () Int)
+(declare-fun x_488 () Bool)
+(declare-fun x_489 () Bool)
+(declare-fun x_490 () Bool)
+(declare-fun x_491 () Bool)
+(declare-fun x_492 () Bool)
+(declare-fun x_493 () Bool)
+(declare-fun x_494 () Bool)
+(declare-fun x_495 () Bool)
+(declare-fun x_496 () Int)
+(declare-fun x_497 () Int)
+(declare-fun x_498 () Int)
+(declare-fun x_499 () Int)
+(declare-fun x_500 () Int)
+(declare-fun x_501 () Int)
+(declare-fun x_502 () Int)
+(declare-fun x_503 () Int)
+(declare-fun x_504 () Int)
+(declare-fun x_505 () Int)
+(declare-fun x_506 () Int)
+(declare-fun x_507 () Int)
+(declare-fun x_508 () Bool)
+(declare-fun x_509 () Bool)
+(declare-fun x_510 () Bool)
+(declare-fun x_511 () Bool)
+(declare-fun x_512 () Bool)
+(declare-fun x_513 () Bool)
+(declare-fun x_514 () Bool)
+(declare-fun x_515 () Bool)
+(declare-fun x_516 () Int)
+(declare-fun x_517 () Int)
+(declare-fun x_518 () Int)
+(declare-fun x_519 () Bool)
+(declare-fun x_520 () Bool)
+(declare-fun x_521 () Bool)
+(declare-fun x_522 () Bool)
+(declare-fun x_523 () Bool)
+(declare-fun x_524 () Bool)
+(declare-fun x_525 () Bool)
+(declare-fun x_526 () Bool)
+(declare-fun x_527 () Bool)
+(declare-fun x_528 () Bool)
+(declare-fun x_529 () Bool)
+(declare-fun x_530 () Bool)
+(declare-fun x_531 () Bool)
+(declare-fun x_532 () Bool)
+(declare-fun x_533 () Bool)
+(declare-fun x_534 () Bool)
+(declare-fun x_535 () Int)
+(declare-fun x_536 () Int)
+(declare-fun x_537 () Int)
+(declare-fun x_538 () Int)
+(declare-fun x_539 () Int)
+(declare-fun x_540 () Int)
+(assert (let ((?v_1060 (= x_48 x_16)) (?v_1061 (= x_49 x_17)) (?v_1035 (= x_50 x_18)) (?v_1036 (= x_51 x_19)) (?v_1037 (= x_52 x_20)) (?v_1038 (= x_53 x_21)) (?v_1039 (= x_54 x_22)) (?v_1040 (= x_55 x_23))) (let ((?v_1079 (and (and (and (and (and (and (and ?v_1060 ?v_1061) ?v_1035) ?v_1036) ?v_1037) ?v_1038) ?v_1039) ?v_1040)) (?v_1058 (= x_68 x_24)) (?v_1059 (= x_69 x_25)) (?v_1029 (= x_70 x_26)) (?v_1030 (= x_71 x_27)) (?v_1031 (= x_72 x_28)) (?v_1032 (= x_73 x_29)) (?v_1033 (= x_74 x_ [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress2/arith/prp-13-24.smt2 b/test/regress/regress2/arith/prp-13-24.smt2
new file mode 100644
index 0000000..b3b8e69
--- /dev/null
+++ b/test/regress/regress2/arith/prp-13-24.smt2
@@ -0,0 +1,47 @@
+(set-logic QF_LIA)
+(set-info :source |http://www.nec-labs.com/~fsoft/bench.html 
+ The following changes have been made: 
+ The logic is changed to QF_LIA. 
+ The category is set as industrial. 
+ The status (except 'large' cases) is assigned according to the 'outfile' on http://www.nec-labs.com/~fsoft/bench.html.  |)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-fun i1430 () Int)
+(declare-fun i1446 () Int)
+(declare-fun i1474 () Int)
+(declare-fun i1531 () Int)
+(declare-fun i1589 () Int)
+(declare-fun i1651 () Int)
+(declare-fun i1727 () Int)
+(declare-fun i1495 () Int)
+(declare-fun i1874 () Int)
+(declare-fun i2029 () Int)
+(declare-fun i2201 () Int)
+(declare-fun i2370 () Int)
+(declare-fun i2560 () Int)
+(declare-fun i1652 () Int)
+(declare-fun i1875 () Int)
+(declare-fun i1140 () Int)
+(declare-fun i2747 () Int)
+(declare-fun i2954 () Int)
+(declare-fun i2030 () Int)
+(declare-fun i2371 () Int)
+(declare-fun i1728 () Int)
+(declare-fun i2202 () Int)
+(declare-fun i2561 () Int)
+(declare-fun i2748 () Int)
+(declare-fun i2955 () Int)
+(declare-fun i3166 () Int)
+(declare-fun i3389 () Int)
+(declare-fun i3390 () Int)
+(declare-fun i3642 () Int)
+(declare-fun i3643 () Int)
+(declare-fun i3915 () Int)
+(declare-fun i3167 () Int)
+(declare-fun i3916 () Int)
+(declare-fun i4203 () Int)
+(declare-fun i4204 () Int)
+(assert (let ((?v_3 (+ 0 0))) (let ((?v_260 (= i1651 ?v_3)) (?v_261 (= i1874 ?v_3)) (?v_262 (= i2029 ?v_3)) (?v_263 (= i2201 ?v_3)) (?v_264 (= i2370 ?v_3)) (?v_265 (= i2560 ?v_3)) (?v_349 (= i2747 ?v_3)) (?v_413 (= i3166 ?v_3)) (?v_469 (= i3389 ?v_3)) (?v_561 (= i3642 ?v_3)) (?v_655 (= i3915 ?v_3)) (?v_751 (= i4203 ?v_3)) (?v_0 (not (= i1430 ?v_3)))) (let ((?v_1 (ite ?v_0 5 (ite ?v_0 3 41))) (?v_8 (+ 41 0))) (let ((?v_6 (= ?v_1 ?v_8)) (?v_2 (= ?v_1 (+ 5 0)))) (let ((?v_12 (ite (not ?v_6) [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress2/arith/pursuit-safety-11.smt b/test/regress/regress2/arith/pursuit-safety-11.smt
new file mode 100644
index 0000000..1c12e07
--- /dev/null
+++ b/test/regress/regress2/arith/pursuit-safety-11.smt
@@ -0,0 +1,120 @@
+(benchmark pursuit_safety_11.smt
+  :source {
+SAL benchmark suite.  Created at SRI by Bruno Dutertre, John Rushby, Maria
+Sorea, and Leonardo de Moura.  Contact demoura at csl.sri.com for more
+information.
+
+This benchmark was automatically translated into SMT-LIB format from
+CVC format using CVC Lite
+}
+  :status unsat
+:category { industrial }
+:difficulty { 0 }
+  :logic QF_LRA
+  
+  :extrapreds ((x_0))
+  :extrapreds ((x_1))
+  :extrafuns ((x_2 Real))
+  :extrafuns ((x_3 Real))
+  :extrapreds ((x_4))
+  :extrapreds ((x_5))
+  :extrafuns ((x_6 Real))
+  :extrafuns ((x_7 Real))
+  :extrapreds ((x_8))
+  :extrafuns ((x_9 Real))
+  :extrafuns ((x_10 Real))
+  :extrafuns ((x_11 Real))
+  :extrafuns ((x_12 Real))
+  :extrafuns ((x_13 Real))
+  :extrapreds ((x_14))
+  :extrapreds ((x_15))
+  :extrafuns ((x_16 Real))
+  :extrafuns ((x_17 Real))
+  :extrafuns ((x_18 Real))
+  :extrafuns ((x_19 Real))
+  :extrafuns ((x_20 Real))
+  :extrafuns ((x_21 Real))
+  :extrafuns ((x_22 Real))
+  :extrapreds ((x_23))
+  :extrapreds ((x_24))
+  :extrafuns ((x_25 Real))
+  :extrafuns ((x_26 Real))
+  :extrafuns ((x_27 Real))
+  :extrafuns ((x_28 Real))
+  :extrafuns ((x_29 Real))
+  :extrafuns ((x_30 Real))
+  :extrafuns ((x_31 Real))
+  :extrapreds ((x_32))
+  :extrapreds ((x_33))
+  :extrafuns ((x_34 Real))
+  :extrafuns ((x_35 Real))
+  :extrafuns ((x_36 Real))
+  :extrafuns ((x_37 Real))
+  :extrafuns ((x_38 Real))
+  :extrafuns ((x_39 Real))
+  :extrafuns ((x_40 Real))
+  :extrapreds ((x_41))
+  :extrapreds ((x_42))
+  :extrafuns ((x_43 Real))
+  :extrafuns ((x_44 Real))
+  :extrafuns ((x_45 Real))
+  :extrafuns ((x_46 Real))
+  :extrafuns ((x_47 Real))
+  :extrafuns ((x_48 Real))
+  :extrafuns ((x_49 Real))
+  :extrapreds ((x_50))
+  :extrapreds ((x_51))
+  :extrafuns ((x_52 Real))
+  :extrafuns ((x_53 Real))
+  :extrafuns ((x_54 Real))
+  :extrafuns ((x_55 Real))
+  :extrafuns ((x_56 Real))
+  :extrafuns ((x_57 Real))
+  :extrafuns ((x_58 Real))
+  :extrapreds ((x_59))
+  :extrapreds ((x_60))
+  :extrafuns ((x_61 Real))
+  :extrafuns ((x_62 Real))
+  :extrafuns ((x_63 Real))
+  :extrafuns ((x_64 Real))
+  :extrafuns ((x_65 Real))
+  :extrafuns ((x_66 Real))
+  :extrafuns ((x_67 Real))
+  :extrapreds ((x_68))
+  :extrapreds ((x_69))
+  :extrafuns ((x_70 Real))
+  :extrafuns ((x_71 Real))
+  :extrafuns ((x_72 Real))
+  :extrafuns ((x_73 Real))
+  :extrafuns ((x_74 Real))
+  :extrafuns ((x_75 Real))
+  :extrafuns ((x_76 Real))
+  :extrapreds ((x_77))
+  :extrapreds ((x_78))
+  :extrafuns ((x_79 Real))
+  :extrafuns ((x_80 Real))
+  :extrafuns ((x_81 Real))
+  :extrafuns ((x_82 Real))
+  :extrafuns ((x_83 Real))
+  :extrafuns ((x_84 Real))
+  :extrafuns ((x_85 Real))
+  :extrapreds ((x_86))
+  :extrapreds ((x_87))
+  :extrafuns ((x_88 Real))
+  :extrafuns ((x_89 Real))
+  :extrafuns ((x_90 Real))
+  :extrafuns ((x_91 Real))
+  :extrafuns ((x_92 Real))
+  :extrafuns ((x_93 Real))
+  :extrafuns ((x_94 Real))
+  :extrapreds ((x_95))
+  :extrapreds ((x_96))
+  :extrafuns ((x_97 Real))
+  :extrafuns ((x_98 Real))
+  :extrafuns ((x_99 Real))
+  :extrafuns ((x_100 Real))
+  :extrafuns ((x_101 Real))
+  :extrafuns ((x_102 Real))
+  :formula
+(let (?cvcl_342 20) (let (?cvcl_343 10) (let (?cvcl_351 2) (flet ($cvcl_4 (= x_88 40)) (let (?cvcl_30 (+ x_88 (* x_90 6))) (flet ($cvcl_5 (= x_88 0)) (flet ($cvcl_2 (= x_85 40)) (flet ($cvcl_3 $cvcl_2) (flet ($cvcl_7 (= x_85 0)) (flet ($cvcl_20 $cvcl_7) (flet ($cvcl_14 (< (+ (- (* x_88 5) (* x_85 6)) 40) 0)) (let (?cvcl_33 (+ x_85 (* x_90 5))) (let (?cvcl_31 (+ x_89 x_90)) (flet ($cvcl_11 (= x_89 2)) (flet ($cvcl_8 (= x_94 x_85)) (flet ($cvcl_26 (not x_86)) (flet ($cvcl_43 (and $cvcl_26  [...]
+)
diff --git a/test/regress/regress2/arith/pursuit-safety-12.smt b/test/regress/regress2/arith/pursuit-safety-12.smt
new file mode 100644
index 0000000..8f79b3d
--- /dev/null
+++ b/test/regress/regress2/arith/pursuit-safety-12.smt
@@ -0,0 +1,129 @@
+(benchmark pursuit_safety_12.smt
+  :source {
+SAL benchmark suite.  Created at SRI by Bruno Dutertre, John Rushby, Maria
+Sorea, and Leonardo de Moura.  Contact demoura at csl.sri.com for more
+information.
+
+This benchmark was automatically translated into SMT-LIB format from
+CVC format using CVC Lite
+}
+  :status unsat
+:category { industrial }
+:difficulty { 0 }
+  :logic QF_LRA
+  
+  :extrapreds ((x_0))
+  :extrapreds ((x_1))
+  :extrafuns ((x_2 Real))
+  :extrafuns ((x_3 Real))
+  :extrapreds ((x_4))
+  :extrapreds ((x_5))
+  :extrafuns ((x_6 Real))
+  :extrafuns ((x_7 Real))
+  :extrapreds ((x_8))
+  :extrafuns ((x_9 Real))
+  :extrafuns ((x_10 Real))
+  :extrafuns ((x_11 Real))
+  :extrafuns ((x_12 Real))
+  :extrafuns ((x_13 Real))
+  :extrapreds ((x_14))
+  :extrapreds ((x_15))
+  :extrafuns ((x_16 Real))
+  :extrafuns ((x_17 Real))
+  :extrafuns ((x_18 Real))
+  :extrafuns ((x_19 Real))
+  :extrafuns ((x_20 Real))
+  :extrafuns ((x_21 Real))
+  :extrafuns ((x_22 Real))
+  :extrapreds ((x_23))
+  :extrapreds ((x_24))
+  :extrafuns ((x_25 Real))
+  :extrafuns ((x_26 Real))
+  :extrafuns ((x_27 Real))
+  :extrafuns ((x_28 Real))
+  :extrafuns ((x_29 Real))
+  :extrafuns ((x_30 Real))
+  :extrafuns ((x_31 Real))
+  :extrapreds ((x_32))
+  :extrapreds ((x_33))
+  :extrafuns ((x_34 Real))
+  :extrafuns ((x_35 Real))
+  :extrafuns ((x_36 Real))
+  :extrafuns ((x_37 Real))
+  :extrafuns ((x_38 Real))
+  :extrafuns ((x_39 Real))
+  :extrafuns ((x_40 Real))
+  :extrapreds ((x_41))
+  :extrapreds ((x_42))
+  :extrafuns ((x_43 Real))
+  :extrafuns ((x_44 Real))
+  :extrafuns ((x_45 Real))
+  :extrafuns ((x_46 Real))
+  :extrafuns ((x_47 Real))
+  :extrafuns ((x_48 Real))
+  :extrafuns ((x_49 Real))
+  :extrapreds ((x_50))
+  :extrapreds ((x_51))
+  :extrafuns ((x_52 Real))
+  :extrafuns ((x_53 Real))
+  :extrafuns ((x_54 Real))
+  :extrafuns ((x_55 Real))
+  :extrafuns ((x_56 Real))
+  :extrafuns ((x_57 Real))
+  :extrafuns ((x_58 Real))
+  :extrapreds ((x_59))
+  :extrapreds ((x_60))
+  :extrafuns ((x_61 Real))
+  :extrafuns ((x_62 Real))
+  :extrafuns ((x_63 Real))
+  :extrafuns ((x_64 Real))
+  :extrafuns ((x_65 Real))
+  :extrafuns ((x_66 Real))
+  :extrafuns ((x_67 Real))
+  :extrapreds ((x_68))
+  :extrapreds ((x_69))
+  :extrafuns ((x_70 Real))
+  :extrafuns ((x_71 Real))
+  :extrafuns ((x_72 Real))
+  :extrafuns ((x_73 Real))
+  :extrafuns ((x_74 Real))
+  :extrafuns ((x_75 Real))
+  :extrafuns ((x_76 Real))
+  :extrapreds ((x_77))
+  :extrapreds ((x_78))
+  :extrafuns ((x_79 Real))
+  :extrafuns ((x_80 Real))
+  :extrafuns ((x_81 Real))
+  :extrafuns ((x_82 Real))
+  :extrafuns ((x_83 Real))
+  :extrafuns ((x_84 Real))
+  :extrafuns ((x_85 Real))
+  :extrapreds ((x_86))
+  :extrapreds ((x_87))
+  :extrafuns ((x_88 Real))
+  :extrafuns ((x_89 Real))
+  :extrafuns ((x_90 Real))
+  :extrafuns ((x_91 Real))
+  :extrafuns ((x_92 Real))
+  :extrafuns ((x_93 Real))
+  :extrafuns ((x_94 Real))
+  :extrapreds ((x_95))
+  :extrapreds ((x_96))
+  :extrafuns ((x_97 Real))
+  :extrafuns ((x_98 Real))
+  :extrafuns ((x_99 Real))
+  :extrafuns ((x_100 Real))
+  :extrafuns ((x_101 Real))
+  :extrafuns ((x_102 Real))
+  :extrafuns ((x_103 Real))
+  :extrapreds ((x_104))
+  :extrapreds ((x_105))
+  :extrafuns ((x_106 Real))
+  :extrafuns ((x_107 Real))
+  :extrafuns ((x_108 Real))
+  :extrafuns ((x_109 Real))
+  :extrafuns ((x_110 Real))
+  :extrafuns ((x_111 Real))
+  :formula
+(let (?cvcl_376 20) (let (?cvcl_377 10) (let (?cvcl_385 2) (flet ($cvcl_4 (= x_97 40)) (let (?cvcl_30 (+ x_97 (* x_99 6))) (flet ($cvcl_5 (= x_97 0)) (flet ($cvcl_2 (= x_94 40)) (flet ($cvcl_3 $cvcl_2) (flet ($cvcl_7 (= x_94 0)) (flet ($cvcl_20 $cvcl_7) (flet ($cvcl_14 (< (+ (- (* x_97 5) (* x_94 6)) 40) 0)) (let (?cvcl_33 (+ x_94 (* x_99 5))) (let (?cvcl_31 (+ x_98 x_99)) (flet ($cvcl_11 (= x_98 2)) (flet ($cvcl_8 (= x_103 x_94)) (flet ($cvcl_26 (not x_95)) (flet ($cvcl_43 (and $cvcl_26 [...]
+)
diff --git a/test/regress/regress2/arith/qlock-4-10-9.base.cvc.smt2 b/test/regress/regress2/arith/qlock-4-10-9.base.cvc.smt2
new file mode 100644
index 0000000..d71fc13
--- /dev/null
+++ b/test/regress/regress2/arith/qlock-4-10-9.base.cvc.smt2
@@ -0,0 +1,557 @@
+(set-logic QF_IDL)
+(set-info :source |
+Queuing lock algorithm by Kazuhiro Ogata (ogata at jaist.ac.jp). 
+Translated into CVC format by Leonardo de Moura.
+
+This benchmark was automatically translated into SMT-LIB format from
+CVC format using CVC Lite
+
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-fun cvclZero () Int)
+(declare-fun x_0 () Bool)
+(declare-fun x_1 () Bool)
+(declare-fun x_2 () Bool)
+(declare-fun x_3 () Bool)
+(declare-fun x_4 () Bool)
+(declare-fun x_5 () Bool)
+(declare-fun x_6 () Bool)
+(declare-fun x_7 () Bool)
+(declare-fun x_8 () Bool)
+(declare-fun x_9 () Bool)
+(declare-fun x_10 () Bool)
+(declare-fun x_11 () Bool)
+(declare-fun x_12 () Bool)
+(declare-fun x_13 () Bool)
+(declare-fun x_14 () Bool)
+(declare-fun x_15 () Bool)
+(declare-fun x_16 () Bool)
+(declare-fun x_17 () Bool)
+(declare-fun x_18 () Bool)
+(declare-fun x_19 () Bool)
+(declare-fun x_20 () Bool)
+(declare-fun x_21 () Bool)
+(declare-fun x_22 () Bool)
+(declare-fun x_23 () Bool)
+(declare-fun x_24 () Bool)
+(declare-fun x_25 () Bool)
+(declare-fun x_26 () Bool)
+(declare-fun x_27 () Bool)
+(declare-fun x_28 () Bool)
+(declare-fun x_29 () Bool)
+(declare-fun x_30 () Bool)
+(declare-fun x_31 () Bool)
+(declare-fun x_32 () Int)
+(declare-fun x_33 () Int)
+(declare-fun x_34 () Int)
+(declare-fun x_35 () Int)
+(declare-fun x_36 () Int)
+(declare-fun x_37 () Int)
+(declare-fun x_38 () Int)
+(declare-fun x_39 () Int)
+(declare-fun x_40 () Int)
+(declare-fun x_41 () Int)
+(declare-fun x_42 () Int)
+(declare-fun x_43 () Int)
+(declare-fun x_44 () Int)
+(declare-fun x_45 () Int)
+(declare-fun x_46 () Int)
+(declare-fun x_47 () Int)
+(declare-fun x_48 () Bool)
+(declare-fun x_49 () Bool)
+(declare-fun x_50 () Bool)
+(declare-fun x_51 () Bool)
+(declare-fun x_52 () Bool)
+(declare-fun x_53 () Bool)
+(declare-fun x_54 () Bool)
+(declare-fun x_55 () Bool)
+(declare-fun x_56 () Int)
+(declare-fun x_57 () Int)
+(declare-fun x_58 () Int)
+(declare-fun x_59 () Int)
+(declare-fun x_60 () Int)
+(declare-fun x_61 () Int)
+(declare-fun x_62 () Int)
+(declare-fun x_63 () Int)
+(declare-fun x_64 () Int)
+(declare-fun x_65 () Int)
+(declare-fun x_66 () Int)
+(declare-fun x_67 () Int)
+(declare-fun x_68 () Bool)
+(declare-fun x_69 () Bool)
+(declare-fun x_70 () Bool)
+(declare-fun x_71 () Bool)
+(declare-fun x_72 () Bool)
+(declare-fun x_73 () Bool)
+(declare-fun x_74 () Bool)
+(declare-fun x_75 () Bool)
+(declare-fun x_76 () Int)
+(declare-fun x_77 () Int)
+(declare-fun x_78 () Int)
+(declare-fun x_79 () Bool)
+(declare-fun x_80 () Bool)
+(declare-fun x_81 () Bool)
+(declare-fun x_82 () Bool)
+(declare-fun x_83 () Bool)
+(declare-fun x_84 () Bool)
+(declare-fun x_85 () Bool)
+(declare-fun x_86 () Bool)
+(declare-fun x_87 () Bool)
+(declare-fun x_88 () Bool)
+(declare-fun x_89 () Bool)
+(declare-fun x_90 () Bool)
+(declare-fun x_91 () Bool)
+(declare-fun x_92 () Bool)
+(declare-fun x_93 () Bool)
+(declare-fun x_94 () Bool)
+(declare-fun x_95 () Int)
+(declare-fun x_96 () Int)
+(declare-fun x_97 () Int)
+(declare-fun x_98 () Int)
+(declare-fun x_99 () Int)
+(declare-fun x_100 () Int)
+(declare-fun x_101 () Int)
+(declare-fun x_102 () Int)
+(declare-fun x_103 () Bool)
+(declare-fun x_104 () Bool)
+(declare-fun x_105 () Bool)
+(declare-fun x_106 () Bool)
+(declare-fun x_107 () Bool)
+(declare-fun x_108 () Bool)
+(declare-fun x_109 () Bool)
+(declare-fun x_110 () Bool)
+(declare-fun x_111 () Int)
+(declare-fun x_112 () Int)
+(declare-fun x_113 () Int)
+(declare-fun x_114 () Int)
+(declare-fun x_115 () Int)
+(declare-fun x_116 () Int)
+(declare-fun x_117 () Int)
+(declare-fun x_118 () Int)
+(declare-fun x_119 () Int)
+(declare-fun x_120 () Int)
+(declare-fun x_121 () Int)
+(declare-fun x_122 () Int)
+(declare-fun x_123 () Bool)
+(declare-fun x_124 () Bool)
+(declare-fun x_125 () Bool)
+(declare-fun x_126 () Bool)
+(declare-fun x_127 () Bool)
+(declare-fun x_128 () Bool)
+(declare-fun x_129 () Bool)
+(declare-fun x_130 () Bool)
+(declare-fun x_131 () Int)
+(declare-fun x_132 () Int)
+(declare-fun x_133 () Int)
+(declare-fun x_134 () Bool)
+(declare-fun x_135 () Bool)
+(declare-fun x_136 () Bool)
+(declare-fun x_137 () Bool)
+(declare-fun x_138 () Bool)
+(declare-fun x_139 () Bool)
+(declare-fun x_140 () Bool)
+(declare-fun x_141 () Bool)
+(declare-fun x_142 () Bool)
+(declare-fun x_143 () Bool)
+(declare-fun x_144 () Bool)
+(declare-fun x_145 () Bool)
+(declare-fun x_146 () Bool)
+(declare-fun x_147 () Bool)
+(declare-fun x_148 () Bool)
+(declare-fun x_149 () Bool)
+(declare-fun x_150 () Int)
+(declare-fun x_151 () Int)
+(declare-fun x_152 () Int)
+(declare-fun x_153 () Int)
+(declare-fun x_154 () Int)
+(declare-fun x_155 () Int)
+(declare-fun x_156 () Int)
+(declare-fun x_157 () Int)
+(declare-fun x_158 () Bool)
+(declare-fun x_159 () Bool)
+(declare-fun x_160 () Bool)
+(declare-fun x_161 () Bool)
+(declare-fun x_162 () Bool)
+(declare-fun x_163 () Bool)
+(declare-fun x_164 () Bool)
+(declare-fun x_165 () Bool)
+(declare-fun x_166 () Int)
+(declare-fun x_167 () Int)
+(declare-fun x_168 () Int)
+(declare-fun x_169 () Int)
+(declare-fun x_170 () Int)
+(declare-fun x_171 () Int)
+(declare-fun x_172 () Int)
+(declare-fun x_173 () Int)
+(declare-fun x_174 () Int)
+(declare-fun x_175 () Int)
+(declare-fun x_176 () Int)
+(declare-fun x_177 () Int)
+(declare-fun x_178 () Bool)
+(declare-fun x_179 () Bool)
+(declare-fun x_180 () Bool)
+(declare-fun x_181 () Bool)
+(declare-fun x_182 () Bool)
+(declare-fun x_183 () Bool)
+(declare-fun x_184 () Bool)
+(declare-fun x_185 () Bool)
+(declare-fun x_186 () Int)
+(declare-fun x_187 () Int)
+(declare-fun x_188 () Int)
+(declare-fun x_189 () Bool)
+(declare-fun x_190 () Bool)
+(declare-fun x_191 () Bool)
+(declare-fun x_192 () Bool)
+(declare-fun x_193 () Bool)
+(declare-fun x_194 () Bool)
+(declare-fun x_195 () Bool)
+(declare-fun x_196 () Bool)
+(declare-fun x_197 () Bool)
+(declare-fun x_198 () Bool)
+(declare-fun x_199 () Bool)
+(declare-fun x_200 () Bool)
+(declare-fun x_201 () Bool)
+(declare-fun x_202 () Bool)
+(declare-fun x_203 () Bool)
+(declare-fun x_204 () Bool)
+(declare-fun x_205 () Int)
+(declare-fun x_206 () Int)
+(declare-fun x_207 () Int)
+(declare-fun x_208 () Int)
+(declare-fun x_209 () Int)
+(declare-fun x_210 () Int)
+(declare-fun x_211 () Int)
+(declare-fun x_212 () Int)
+(declare-fun x_213 () Bool)
+(declare-fun x_214 () Bool)
+(declare-fun x_215 () Bool)
+(declare-fun x_216 () Bool)
+(declare-fun x_217 () Bool)
+(declare-fun x_218 () Bool)
+(declare-fun x_219 () Bool)
+(declare-fun x_220 () Bool)
+(declare-fun x_221 () Int)
+(declare-fun x_222 () Int)
+(declare-fun x_223 () Int)
+(declare-fun x_224 () Int)
+(declare-fun x_225 () Int)
+(declare-fun x_226 () Int)
+(declare-fun x_227 () Int)
+(declare-fun x_228 () Int)
+(declare-fun x_229 () Int)
+(declare-fun x_230 () Int)
+(declare-fun x_231 () Int)
+(declare-fun x_232 () Int)
+(declare-fun x_233 () Bool)
+(declare-fun x_234 () Bool)
+(declare-fun x_235 () Bool)
+(declare-fun x_236 () Bool)
+(declare-fun x_237 () Bool)
+(declare-fun x_238 () Bool)
+(declare-fun x_239 () Bool)
+(declare-fun x_240 () Bool)
+(declare-fun x_241 () Int)
+(declare-fun x_242 () Int)
+(declare-fun x_243 () Int)
+(declare-fun x_244 () Bool)
+(declare-fun x_245 () Bool)
+(declare-fun x_246 () Bool)
+(declare-fun x_247 () Bool)
+(declare-fun x_248 () Bool)
+(declare-fun x_249 () Bool)
+(declare-fun x_250 () Bool)
+(declare-fun x_251 () Bool)
+(declare-fun x_252 () Bool)
+(declare-fun x_253 () Bool)
+(declare-fun x_254 () Bool)
+(declare-fun x_255 () Bool)
+(declare-fun x_256 () Bool)
+(declare-fun x_257 () Bool)
+(declare-fun x_258 () Bool)
+(declare-fun x_259 () Bool)
+(declare-fun x_260 () Int)
+(declare-fun x_261 () Int)
+(declare-fun x_262 () Int)
+(declare-fun x_263 () Int)
+(declare-fun x_264 () Int)
+(declare-fun x_265 () Int)
+(declare-fun x_266 () Int)
+(declare-fun x_267 () Int)
+(declare-fun x_268 () Bool)
+(declare-fun x_269 () Bool)
+(declare-fun x_270 () Bool)
+(declare-fun x_271 () Bool)
+(declare-fun x_272 () Bool)
+(declare-fun x_273 () Bool)
+(declare-fun x_274 () Bool)
+(declare-fun x_275 () Bool)
+(declare-fun x_276 () Int)
+(declare-fun x_277 () Int)
+(declare-fun x_278 () Int)
+(declare-fun x_279 () Int)
+(declare-fun x_280 () Int)
+(declare-fun x_281 () Int)
+(declare-fun x_282 () Int)
+(declare-fun x_283 () Int)
+(declare-fun x_284 () Int)
+(declare-fun x_285 () Int)
+(declare-fun x_286 () Int)
+(declare-fun x_287 () Int)
+(declare-fun x_288 () Bool)
+(declare-fun x_289 () Bool)
+(declare-fun x_290 () Bool)
+(declare-fun x_291 () Bool)
+(declare-fun x_292 () Bool)
+(declare-fun x_293 () Bool)
+(declare-fun x_294 () Bool)
+(declare-fun x_295 () Bool)
+(declare-fun x_296 () Int)
+(declare-fun x_297 () Int)
+(declare-fun x_298 () Int)
+(declare-fun x_299 () Bool)
+(declare-fun x_300 () Bool)
+(declare-fun x_301 () Bool)
+(declare-fun x_302 () Bool)
+(declare-fun x_303 () Bool)
+(declare-fun x_304 () Bool)
+(declare-fun x_305 () Bool)
+(declare-fun x_306 () Bool)
+(declare-fun x_307 () Bool)
+(declare-fun x_308 () Bool)
+(declare-fun x_309 () Bool)
+(declare-fun x_310 () Bool)
+(declare-fun x_311 () Bool)
+(declare-fun x_312 () Bool)
+(declare-fun x_313 () Bool)
+(declare-fun x_314 () Bool)
+(declare-fun x_315 () Int)
+(declare-fun x_316 () Int)
+(declare-fun x_317 () Int)
+(declare-fun x_318 () Int)
+(declare-fun x_319 () Int)
+(declare-fun x_320 () Int)
+(declare-fun x_321 () Int)
+(declare-fun x_322 () Int)
+(declare-fun x_323 () Bool)
+(declare-fun x_324 () Bool)
+(declare-fun x_325 () Bool)
+(declare-fun x_326 () Bool)
+(declare-fun x_327 () Bool)
+(declare-fun x_328 () Bool)
+(declare-fun x_329 () Bool)
+(declare-fun x_330 () Bool)
+(declare-fun x_331 () Int)
+(declare-fun x_332 () Int)
+(declare-fun x_333 () Int)
+(declare-fun x_334 () Int)
+(declare-fun x_335 () Int)
+(declare-fun x_336 () Int)
+(declare-fun x_337 () Int)
+(declare-fun x_338 () Int)
+(declare-fun x_339 () Int)
+(declare-fun x_340 () Int)
+(declare-fun x_341 () Int)
+(declare-fun x_342 () Int)
+(declare-fun x_343 () Bool)
+(declare-fun x_344 () Bool)
+(declare-fun x_345 () Bool)
+(declare-fun x_346 () Bool)
+(declare-fun x_347 () Bool)
+(declare-fun x_348 () Bool)
+(declare-fun x_349 () Bool)
+(declare-fun x_350 () Bool)
+(declare-fun x_351 () Int)
+(declare-fun x_352 () Int)
+(declare-fun x_353 () Int)
+(declare-fun x_354 () Bool)
+(declare-fun x_355 () Bool)
+(declare-fun x_356 () Bool)
+(declare-fun x_357 () Bool)
+(declare-fun x_358 () Bool)
+(declare-fun x_359 () Bool)
+(declare-fun x_360 () Bool)
+(declare-fun x_361 () Bool)
+(declare-fun x_362 () Bool)
+(declare-fun x_363 () Bool)
+(declare-fun x_364 () Bool)
+(declare-fun x_365 () Bool)
+(declare-fun x_366 () Bool)
+(declare-fun x_367 () Bool)
+(declare-fun x_368 () Bool)
+(declare-fun x_369 () Bool)
+(declare-fun x_370 () Int)
+(declare-fun x_371 () Int)
+(declare-fun x_372 () Int)
+(declare-fun x_373 () Int)
+(declare-fun x_374 () Int)
+(declare-fun x_375 () Int)
+(declare-fun x_376 () Int)
+(declare-fun x_377 () Int)
+(declare-fun x_378 () Bool)
+(declare-fun x_379 () Bool)
+(declare-fun x_380 () Bool)
+(declare-fun x_381 () Bool)
+(declare-fun x_382 () Bool)
+(declare-fun x_383 () Bool)
+(declare-fun x_384 () Bool)
+(declare-fun x_385 () Bool)
+(declare-fun x_386 () Int)
+(declare-fun x_387 () Int)
+(declare-fun x_388 () Int)
+(declare-fun x_389 () Int)
+(declare-fun x_390 () Int)
+(declare-fun x_391 () Int)
+(declare-fun x_392 () Int)
+(declare-fun x_393 () Int)
+(declare-fun x_394 () Int)
+(declare-fun x_395 () Int)
+(declare-fun x_396 () Int)
+(declare-fun x_397 () Int)
+(declare-fun x_398 () Bool)
+(declare-fun x_399 () Bool)
+(declare-fun x_400 () Bool)
+(declare-fun x_401 () Bool)
+(declare-fun x_402 () Bool)
+(declare-fun x_403 () Bool)
+(declare-fun x_404 () Bool)
+(declare-fun x_405 () Bool)
+(declare-fun x_406 () Int)
+(declare-fun x_407 () Int)
+(declare-fun x_408 () Int)
+(declare-fun x_409 () Bool)
+(declare-fun x_410 () Bool)
+(declare-fun x_411 () Bool)
+(declare-fun x_412 () Bool)
+(declare-fun x_413 () Bool)
+(declare-fun x_414 () Bool)
+(declare-fun x_415 () Bool)
+(declare-fun x_416 () Bool)
+(declare-fun x_417 () Bool)
+(declare-fun x_418 () Bool)
+(declare-fun x_419 () Bool)
+(declare-fun x_420 () Bool)
+(declare-fun x_421 () Bool)
+(declare-fun x_422 () Bool)
+(declare-fun x_423 () Bool)
+(declare-fun x_424 () Bool)
+(declare-fun x_425 () Int)
+(declare-fun x_426 () Int)
+(declare-fun x_427 () Int)
+(declare-fun x_428 () Int)
+(declare-fun x_429 () Int)
+(declare-fun x_430 () Int)
+(declare-fun x_431 () Int)
+(declare-fun x_432 () Int)
+(declare-fun x_433 () Bool)
+(declare-fun x_434 () Bool)
+(declare-fun x_435 () Bool)
+(declare-fun x_436 () Bool)
+(declare-fun x_437 () Bool)
+(declare-fun x_438 () Bool)
+(declare-fun x_439 () Bool)
+(declare-fun x_440 () Bool)
+(declare-fun x_441 () Int)
+(declare-fun x_442 () Int)
+(declare-fun x_443 () Int)
+(declare-fun x_444 () Int)
+(declare-fun x_445 () Int)
+(declare-fun x_446 () Int)
+(declare-fun x_447 () Int)
+(declare-fun x_448 () Int)
+(declare-fun x_449 () Int)
+(declare-fun x_450 () Int)
+(declare-fun x_451 () Int)
+(declare-fun x_452 () Int)
+(declare-fun x_453 () Bool)
+(declare-fun x_454 () Bool)
+(declare-fun x_455 () Bool)
+(declare-fun x_456 () Bool)
+(declare-fun x_457 () Bool)
+(declare-fun x_458 () Bool)
+(declare-fun x_459 () Bool)
+(declare-fun x_460 () Bool)
+(declare-fun x_461 () Int)
+(declare-fun x_462 () Int)
+(declare-fun x_463 () Int)
+(declare-fun x_464 () Bool)
+(declare-fun x_465 () Bool)
+(declare-fun x_466 () Bool)
+(declare-fun x_467 () Bool)
+(declare-fun x_468 () Bool)
+(declare-fun x_469 () Bool)
+(declare-fun x_470 () Bool)
+(declare-fun x_471 () Bool)
+(declare-fun x_472 () Bool)
+(declare-fun x_473 () Bool)
+(declare-fun x_474 () Bool)
+(declare-fun x_475 () Bool)
+(declare-fun x_476 () Bool)
+(declare-fun x_477 () Bool)
+(declare-fun x_478 () Bool)
+(declare-fun x_479 () Bool)
+(declare-fun x_480 () Int)
+(declare-fun x_481 () Int)
+(declare-fun x_482 () Int)
+(declare-fun x_483 () Int)
+(declare-fun x_484 () Int)
+(declare-fun x_485 () Int)
+(declare-fun x_486 () Int)
+(declare-fun x_487 () Int)
+(declare-fun x_488 () Bool)
+(declare-fun x_489 () Bool)
+(declare-fun x_490 () Bool)
+(declare-fun x_491 () Bool)
+(declare-fun x_492 () Bool)
+(declare-fun x_493 () Bool)
+(declare-fun x_494 () Bool)
+(declare-fun x_495 () Bool)
+(declare-fun x_496 () Int)
+(declare-fun x_497 () Int)
+(declare-fun x_498 () Int)
+(declare-fun x_499 () Int)
+(declare-fun x_500 () Int)
+(declare-fun x_501 () Int)
+(declare-fun x_502 () Int)
+(declare-fun x_503 () Int)
+(declare-fun x_504 () Int)
+(declare-fun x_505 () Int)
+(declare-fun x_506 () Int)
+(declare-fun x_507 () Int)
+(declare-fun x_508 () Bool)
+(declare-fun x_509 () Bool)
+(declare-fun x_510 () Bool)
+(declare-fun x_511 () Bool)
+(declare-fun x_512 () Bool)
+(declare-fun x_513 () Bool)
+(declare-fun x_514 () Bool)
+(declare-fun x_515 () Bool)
+(declare-fun x_516 () Int)
+(declare-fun x_517 () Int)
+(declare-fun x_518 () Int)
+(declare-fun x_519 () Bool)
+(declare-fun x_520 () Bool)
+(declare-fun x_521 () Bool)
+(declare-fun x_522 () Bool)
+(declare-fun x_523 () Bool)
+(declare-fun x_524 () Bool)
+(declare-fun x_525 () Bool)
+(declare-fun x_526 () Bool)
+(declare-fun x_527 () Bool)
+(declare-fun x_528 () Bool)
+(declare-fun x_529 () Bool)
+(declare-fun x_530 () Bool)
+(declare-fun x_531 () Bool)
+(declare-fun x_532 () Bool)
+(declare-fun x_533 () Bool)
+(declare-fun x_534 () Bool)
+(declare-fun x_535 () Int)
+(declare-fun x_536 () Int)
+(declare-fun x_537 () Int)
+(declare-fun x_538 () Int)
+(declare-fun x_539 () Int)
+(declare-fun x_540 () Int)
+(assert (let ((?v_1060 (= x_48 x_16)) (?v_1061 (= x_49 x_17)) (?v_1035 (= x_50 x_18)) (?v_1036 (= x_51 x_19)) (?v_1037 (= x_52 x_20)) (?v_1038 (= x_53 x_21)) (?v_1039 (= x_54 x_22)) (?v_1040 (= x_55 x_23))) (let ((?v_1079 (and (and (and (and (and (and (and ?v_1060 ?v_1061) ?v_1035) ?v_1036) ?v_1037) ?v_1038) ?v_1039) ?v_1040)) (?v_1058 (= x_68 x_24)) (?v_1059 (= x_69 x_25)) (?v_1029 (= x_70 x_26)) (?v_1030 (= x_71 x_27)) (?v_1031 (= x_72 x_28)) (?v_1032 (= x_73 x_29)) (?v_1033 (= x_74 x_ [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress2/arith/sc-7.base.cvc.smt b/test/regress/regress2/arith/sc-7.base.cvc.smt
new file mode 100644
index 0000000..72a5615
--- /dev/null
+++ b/test/regress/regress2/arith/sc-7.base.cvc.smt
@@ -0,0 +1,164 @@
+(benchmark synch_circuit
+  :source {
+Fully parameterized specification and verification of a synchronizer   
+circuit modeling metastability at various levels of refinement.     
+A paper describing this specification, to be published in Designing     
+Correct Circuits (DCC), 2006, is available from the authors.            
+
+Geoffrey Brown, Indiana University <geobrown at cs.indiana.edu>
+Lee Pike, Galois Connections, Inc. <leepike at galois.com>
+
+Translated into CVC format by Leonardo de Moura.
+
+This benchmark was automatically translated into SMT-LIB format from
+CVC format using CVC Lite
+
+}
+  :status unsat
+:category { industrial }
+:difficulty { 0 }
+  :logic QF_LRA
+  
+  :extrapreds ((x_0))
+  :extrapreds ((x_1))
+  :extrafuns ((x_2 Real))
+  :extrapreds ((x_3))
+  :extrapreds ((x_4))
+  :extrapreds ((x_5))
+  :extrafuns ((x_6 Real))
+  :extrapreds ((x_7))
+  :extrafuns ((x_8 Real))
+  :extrafuns ((x_9 Real))
+  :extrafuns ((x_10 Real))
+  :extrafuns ((x_11 Real))
+  :extrafuns ((x_12 Real))
+  :extrapreds ((x_13))
+  :extrafuns ((x_14 Real))
+  :extrafuns ((x_15 Real))
+  :extrafuns ((x_16 Real))
+  :extrafuns ((x_17 Real))
+  :extrafuns ((x_18 Real))
+  :extrafuns ((x_19 Real))
+  :extrapreds ((x_20))
+  :extrapreds ((x_21))
+  :extrapreds ((x_22))
+  :extrapreds ((x_23))
+  :extrafuns ((x_24 Real))
+  :extrapreds ((x_25))
+  :extrafuns ((x_26 Real))
+  :extrafuns ((x_27 Real))
+  :extrafuns ((x_28 Real))
+  :extrafuns ((x_29 Real))
+  :extrafuns ((x_30 Real))
+  :extrafuns ((x_31 Real))
+  :extrafuns ((x_32 Real))
+  :extrafuns ((x_33 Real))
+  :extrafuns ((x_34 Real))
+  :extrafuns ((x_35 Real))
+  :extrafuns ((x_36 Real))
+  :extrapreds ((x_37))
+  :extrafuns ((x_38 Real))
+  :extrafuns ((x_39 Real))
+  :extrapreds ((x_40))
+  :extrapreds ((x_41))
+  :extrapreds ((x_42))
+  :extrapreds ((x_43))
+  :extrafuns ((x_44 Real))
+  :extrapreds ((x_45))
+  :extrafuns ((x_46 Real))
+  :extrafuns ((x_47 Real))
+  :extrafuns ((x_48 Real))
+  :extrafuns ((x_49 Real))
+  :extrafuns ((x_50 Real))
+  :extrafuns ((x_51 Real))
+  :extrafuns ((x_52 Real))
+  :extrafuns ((x_53 Real))
+  :extrafuns ((x_54 Real))
+  :extrapreds ((x_55))
+  :extrafuns ((x_56 Real))
+  :extrafuns ((x_57 Real))
+  :extrapreds ((x_58))
+  :extrapreds ((x_59))
+  :extrapreds ((x_60))
+  :extrapreds ((x_61))
+  :extrafuns ((x_62 Real))
+  :extrapreds ((x_63))
+  :extrafuns ((x_64 Real))
+  :extrafuns ((x_65 Real))
+  :extrafuns ((x_66 Real))
+  :extrafuns ((x_67 Real))
+  :extrafuns ((x_68 Real))
+  :extrafuns ((x_69 Real))
+  :extrafuns ((x_70 Real))
+  :extrafuns ((x_71 Real))
+  :extrafuns ((x_72 Real))
+  :extrapreds ((x_73))
+  :extrafuns ((x_74 Real))
+  :extrafuns ((x_75 Real))
+  :extrapreds ((x_76))
+  :extrapreds ((x_77))
+  :extrapreds ((x_78))
+  :extrapreds ((x_79))
+  :extrafuns ((x_80 Real))
+  :extrapreds ((x_81))
+  :extrafuns ((x_82 Real))
+  :extrafuns ((x_83 Real))
+  :extrafuns ((x_84 Real))
+  :extrafuns ((x_85 Real))
+  :extrafuns ((x_86 Real))
+  :extrafuns ((x_87 Real))
+  :extrafuns ((x_88 Real))
+  :extrafuns ((x_89 Real))
+  :extrafuns ((x_90 Real))
+  :extrapreds ((x_91))
+  :extrafuns ((x_92 Real))
+  :extrafuns ((x_93 Real))
+  :extrapreds ((x_94))
+  :extrapreds ((x_95))
+  :extrapreds ((x_96))
+  :extrapreds ((x_97))
+  :extrafuns ((x_98 Real))
+  :extrapreds ((x_99))
+  :extrafuns ((x_100 Real))
+  :extrafuns ((x_101 Real))
+  :extrafuns ((x_102 Real))
+  :extrafuns ((x_103 Real))
+  :extrafuns ((x_104 Real))
+  :extrafuns ((x_105 Real))
+  :extrafuns ((x_106 Real))
+  :extrafuns ((x_107 Real))
+  :extrafuns ((x_108 Real))
+  :extrapreds ((x_109))
+  :extrafuns ((x_110 Real))
+  :extrafuns ((x_111 Real))
+  :extrapreds ((x_112))
+  :extrapreds ((x_113))
+  :extrapreds ((x_114))
+  :extrapreds ((x_115))
+  :extrafuns ((x_116 Real))
+  :extrapreds ((x_117))
+  :extrafuns ((x_118 Real))
+  :extrafuns ((x_119 Real))
+  :extrafuns ((x_120 Real))
+  :extrafuns ((x_121 Real))
+  :extrafuns ((x_122 Real))
+  :extrafuns ((x_123 Real))
+  :extrafuns ((x_124 Real))
+  :extrafuns ((x_125 Real))
+  :extrafuns ((x_126 Real))
+  :extrapreds ((x_127))
+  :extrafuns ((x_128 Real))
+  :extrafuns ((x_129 Real))
+  :extrapreds ((x_130))
+  :extrapreds ((x_131))
+  :extrapreds ((x_132))
+  :extrapreds ((x_133))
+  :extrafuns ((x_134 Real))
+  :extrapreds ((x_135))
+  :extrafuns ((x_136 Real))
+  :extrafuns ((x_137 Real))
+  :extrafuns ((x_138 Real))
+  :extrafuns ((x_139 Real))
+  :formula
+(flet ($cvcl_80 (= x_6 x_9)) (flet ($cvcl_77 (= x_2 x_11)) (flet ($cvcl_82 (not $cvcl_77)) (flet ($cvcl_73 (iff x_13 x_7)) (flet ($cvcl_74 (= x_14 x_15)) (let (?cvcl_78 (ite (<= x_6 x_2) x_6 x_2)) (let (?cvcl_72 (ite (<= x_2 x_6) x_2 x_6)) (flet ($cvcl_66 (= x_32 x_8)) (flet ($cvcl_67 (= x_9 x_33)) (flet ($cvcl_68 (= x_34 x_10)) (flet ($cvcl_64 (= x_11 x_35)) (flet ($cvcl_69 (not $cvcl_64)) (flet ($cvcl_71 (= x_36 x_12)) (flet ($cvcl_61 (iff x_37 x_13)) (flet ($cvcl_62 (= x_38 x_14)) (le [...]
+)
diff --git a/test/regress/regress2/arith/uart-8.base.cvc.smt b/test/regress/regress2/arith/uart-8.base.cvc.smt
new file mode 100644
index 0000000..a64a0cd
--- /dev/null
+++ b/test/regress/regress2/arith/uart-8.base.cvc.smt
@@ -0,0 +1,170 @@
+(benchmark uart
+  :source {
+Specification and verification of a 8N1 decoder.
+Geoffrey Brown, Indiana University <geobrown at cs.indiana.edu>
+Lee Pike, Galois Connections, Inc. <leepike at galois.com> 
+
+Translated into CVC format by Leonardo de Moura.
+
+This benchmark was automatically translated into SMT-LIB format from
+CVC format using CVC Lite
+
+
+
+}
+  :status unsat
+:category { industrial }
+:difficulty { 0 }
+  :logic QF_LRA
+  
+  :extrafuns ((x_0 Real))
+  :extrafuns ((x_1 Real))
+  :extrafuns ((x_2 Real))
+  :extrafuns ((x_3 Real))
+  :extrapreds ((x_4))
+  :extrafuns ((x_5 Real))
+  :extrafuns ((x_6 Real))
+  :extrafuns ((x_7 Real))
+  :extrafuns ((x_8 Real))
+  :extrafuns ((x_9 Real))
+  :extrapreds ((x_10))
+  :extrafuns ((x_11 Real))
+  :extrapreds ((x_12))
+  :extrafuns ((x_13 Real))
+  :extrapreds ((x_14))
+  :extrafuns ((x_15 Real))
+  :extrapreds ((x_16))
+  :extrafuns ((x_17 Real))
+  :extrapreds ((x_18))
+  :extrafuns ((x_19 Real))
+  :extrapreds ((x_20))
+  :extrafuns ((x_21 Real))
+  :extrapreds ((x_22))
+  :extrafuns ((x_23 Real))
+  :extrapreds ((x_24))
+  :extrafuns ((x_25 Real))
+  :extrafuns ((x_26 Real))
+  :extrafuns ((x_27 Real))
+  :extrafuns ((x_28 Real))
+  :extrafuns ((x_29 Real))
+  :extrafuns ((x_30 Real))
+  :extrafuns ((x_31 Real))
+  :extrafuns ((x_32 Real))
+  :extrafuns ((x_33 Real))
+  :extrafuns ((x_34 Real))
+  :extrafuns ((x_35 Real))
+  :extrafuns ((x_36 Real))
+  :extrafuns ((x_37 Real))
+  :extrafuns ((x_38 Real))
+  :extrafuns ((x_39 Real))
+  :extrafuns ((x_40 Real))
+  :extrafuns ((x_41 Real))
+  :extrafuns ((x_42 Real))
+  :extrafuns ((x_43 Real))
+  :extrafuns ((x_44 Real))
+  :extrafuns ((x_45 Real))
+  :extrafuns ((x_46 Real))
+  :extrafuns ((x_47 Real))
+  :extrafuns ((x_48 Real))
+  :extrafuns ((x_49 Real))
+  :extrafuns ((x_50 Real))
+  :extrafuns ((x_51 Real))
+  :extrafuns ((x_52 Real))
+  :extrafuns ((x_53 Real))
+  :extrafuns ((x_54 Real))
+  :extrafuns ((x_55 Real))
+  :extrafuns ((x_56 Real))
+  :extrafuns ((x_57 Real))
+  :extrafuns ((x_58 Real))
+  :extrafuns ((x_59 Real))
+  :extrafuns ((x_60 Real))
+  :extrafuns ((x_61 Real))
+  :extrafuns ((x_62 Real))
+  :extrafuns ((x_63 Real))
+  :extrafuns ((x_64 Real))
+  :extrafuns ((x_65 Real))
+  :extrafuns ((x_66 Real))
+  :extrafuns ((x_67 Real))
+  :extrafuns ((x_68 Real))
+  :extrafuns ((x_69 Real))
+  :extrafuns ((x_70 Real))
+  :extrafuns ((x_71 Real))
+  :extrafuns ((x_72 Real))
+  :extrafuns ((x_73 Real))
+  :extrafuns ((x_74 Real))
+  :extrafuns ((x_75 Real))
+  :extrafuns ((x_76 Real))
+  :extrafuns ((x_77 Real))
+  :extrafuns ((x_78 Real))
+  :extrafuns ((x_79 Real))
+  :extrafuns ((x_80 Real))
+  :extrafuns ((x_81 Real))
+  :extrafuns ((x_82 Real))
+  :extrafuns ((x_83 Real))
+  :extrafuns ((x_84 Real))
+  :extrafuns ((x_85 Real))
+  :extrafuns ((x_86 Real))
+  :extrafuns ((x_87 Real))
+  :extrafuns ((x_88 Real))
+  :extrafuns ((x_89 Real))
+  :extrafuns ((x_90 Real))
+  :extrafuns ((x_91 Real))
+  :extrafuns ((x_92 Real))
+  :extrafuns ((x_93 Real))
+  :extrafuns ((x_94 Real))
+  :extrafuns ((x_95 Real))
+  :extrafuns ((x_96 Real))
+  :extrafuns ((x_97 Real))
+  :extrafuns ((x_98 Real))
+  :extrafuns ((x_99 Real))
+  :extrafuns ((x_100 Real))
+  :extrafuns ((x_101 Real))
+  :extrafuns ((x_102 Real))
+  :extrafuns ((x_103 Real))
+  :extrafuns ((x_104 Real))
+  :extrafuns ((x_105 Real))
+  :extrafuns ((x_106 Real))
+  :extrafuns ((x_107 Real))
+  :extrafuns ((x_108 Real))
+  :extrafuns ((x_109 Real))
+  :extrafuns ((x_110 Real))
+  :extrafuns ((x_111 Real))
+  :extrafuns ((x_112 Real))
+  :extrafuns ((x_113 Real))
+  :extrafuns ((x_114 Real))
+  :extrafuns ((x_115 Real))
+  :extrafuns ((x_116 Real))
+  :extrafuns ((x_117 Real))
+  :extrafuns ((x_118 Real))
+  :extrafuns ((x_119 Real))
+  :extrafuns ((x_120 Real))
+  :extrafuns ((x_121 Real))
+  :extrafuns ((x_122 Real))
+  :extrafuns ((x_123 Real))
+  :extrafuns ((x_124 Real))
+  :extrafuns ((x_125 Real))
+  :extrafuns ((x_126 Real))
+  :extrafuns ((x_127 Real))
+  :extrafuns ((x_128 Real))
+  :extrafuns ((x_129 Real))
+  :extrafuns ((x_130 Real))
+  :extrafuns ((x_131 Real))
+  :extrafuns ((x_132 Real))
+  :extrafuns ((x_133 Real))
+  :extrafuns ((x_134 Real))
+  :extrafuns ((x_135 Real))
+  :extrafuns ((x_136 Real))
+  :extrafuns ((x_137 Real))
+  :extrafuns ((x_138 Real))
+  :extrafuns ((x_139 Real))
+  :extrafuns ((x_140 Real))
+  :extrafuns ((x_141 Real))
+  :extrafuns ((x_142 Real))
+  :extrafuns ((x_143 Real))
+  :extrafuns ((x_144 Real))
+  :extrafuns ((x_145 Real))
+  :extrafuns ((x_146 Real))
+  :extrafuns ((x_147 Real))
+  :formula
+(flet ($cvcl_12 (not x_22)) (flet ($cvcl_14 (and $cvcl_12 (< x_23 8))) (flet ($cvcl_49 (not x_20)) (flet ($cvcl_51 (and $cvcl_49 (< x_21 8))) (flet ($cvcl_87 (not x_18)) (flet ($cvcl_89 (and $cvcl_87 (< x_19 8))) (flet ($cvcl_125 (not x_16)) (flet ($cvcl_127 (and $cvcl_125 (< x_17 8))) (flet ($cvcl_163 (not x_14)) (flet ($cvcl_165 (and $cvcl_163 (< x_15 8))) (flet ($cvcl_201 (not x_12)) (flet ($cvcl_203 (and $cvcl_201 (< x_13 8))) (flet ($cvcl_239 (not x_10)) (flet ($cvcl_241 (and $cvcl_ [...]
+)
diff --git a/test/regress/regress2/auflia-fuzz06.smt b/test/regress/regress2/auflia-fuzz06.smt
new file mode 100644
index 0000000..88c2a9d
--- /dev/null
+++ b/test/regress/regress2/auflia-fuzz06.smt
@@ -0,0 +1,349 @@
+(benchmark fuzzsmt
+:logic QF_AUFLIA
+:status sat
+:extrafuns ((f0 Int Int))
+:extrafuns ((f1 Array Array Array))
+:extrapreds ((p0 Int))
+:extrapreds ((p1 Array Array Array))
+:extrafuns ((v0 Int))
+:extrafuns ((v1 Array))
+:formula
+(let (?e2 0)
+(let (?e3 (ite (p0 v0) 1 0))
+(let (?e4 (ite (p0 v0) 1 0))
+(let (?e5 (~ ?e4))
+(let (?e6 (ite (p0 ?e3) 1 0))
+(let (?e7 (f0 ?e3))
+(let (?e8 (* ?e4 (~ ?e2)))
+(let (?e9 (store v1 ?e5 ?e8))
+(let (?e10 (select ?e9 ?e4))
+(let (?e11 (store ?e9 ?e8 ?e7))
+(let (?e12 (select ?e11 ?e10))
+(let (?e13 (f1 ?e11 ?e11))
+(let (?e14 (f1 v1 ?e13))
+(let (?e15 (f1 ?e9 ?e13))
+(flet ($e16 (p1 ?e14 ?e11 ?e15))
+(flet ($e17 (p1 ?e13 ?e15 v1))
+(flet ($e18 (p1 ?e9 ?e9 ?e14))
+(flet ($e19 (p0 ?e7))
+(flet ($e20 (<= v0 ?e4))
+(flet ($e21 (> ?e7 ?e12))
+(flet ($e22 (= ?e7 ?e12))
+(flet ($e23 (distinct ?e6 ?e5))
+(flet ($e24 (p0 ?e7))
+(flet ($e25 (>= ?e3 ?e8))
+(flet ($e26 (< ?e3 ?e7))
+(flet ($e27 (<= ?e7 v0))
+(flet ($e28 (p0 ?e10))
+(let (?e29 (ite $e27 ?e15 ?e13))
+(let (?e30 (ite $e28 ?e14 ?e14))
+(let (?e31 (ite $e26 ?e9 v1))
+(let (?e32 (ite $e17 ?e11 ?e13))
+(let (?e33 (ite $e23 ?e13 ?e13))
+(let (?e34 (ite $e25 ?e14 ?e30))
+(let (?e35 (ite $e22 ?e30 ?e30))
+(let (?e36 (ite $e25 ?e11 ?e31))
+(let (?e37 (ite $e22 ?e14 ?e35))
+(let (?e38 (ite $e19 ?e36 ?e35))
+(let (?e39 (ite $e21 ?e36 ?e9))
+(let (?e40 (ite $e16 ?e39 ?e11))
+(let (?e41 (ite $e28 ?e29 v1))
+(let (?e42 (ite $e25 ?e33 ?e36))
+(let (?e43 (ite $e21 ?e29 ?e9))
+(let (?e44 (ite $e18 ?e30 ?e13))
+(let (?e45 (ite $e18 ?e11 ?e41))
+(let (?e46 (ite $e20 ?e15 ?e34))
+(let (?e47 (ite $e24 ?e40 ?e13))
+(let (?e48 (ite $e26 ?e7 ?e6))
+(let (?e49 (ite $e21 ?e10 ?e6))
+(let (?e50 (ite $e22 v0 ?e8))
+(let (?e51 (ite $e19 ?e5 ?e4))
+(let (?e52 (ite $e16 ?e12 ?e10))
+(let (?e53 (ite $e16 ?e49 ?e8))
+(let (?e54 (ite $e21 ?e3 v0))
+(let (?e55 (ite $e24 ?e51 ?e52))
+(let (?e56 (ite $e23 ?e10 ?e5))
+(let (?e57 (ite $e18 ?e50 ?e49))
+(let (?e58 (ite $e17 ?e10 ?e4))
+(let (?e59 (ite $e27 ?e57 ?e12))
+(let (?e60 (ite $e21 ?e10 ?e3))
+(let (?e61 (ite $e28 ?e7 ?e55))
+(let (?e62 (ite $e20 ?e53 ?e53))
+(let (?e63 (ite $e25 ?e48 ?e8))
+(let (?e64 (store ?e45 ?e49 ?e8))
+(let (?e65 (store ?e43 ?e55 ?e57))
+(let (?e66 (select ?e34 v0))
+(let (?e67 (store ?e9 ?e66 ?e54))
+(let (?e68 (select ?e64 ?e56))
+(let (?e69 (f1 ?e11 ?e30))
+(let (?e70 (f1 ?e34 ?e36))
+(let (?e71 (f1 ?e38 ?e39))
+(let (?e72 (f1 ?e31 ?e45))
+(let (?e73 (f1 ?e43 ?e43))
+(let (?e74 (f1 ?e37 ?e65))
+(let (?e75 (f1 ?e9 ?e38))
+(let (?e76 (f1 ?e37 ?e14))
+(let (?e77 (f1 ?e13 ?e39))
+(let (?e78 (f1 ?e34 ?e39))
+(let (?e79 (f1 ?e64 ?e64))
+(let (?e80 (f1 ?e15 ?e15))
+(let (?e81 (f1 v1 v1))
+(let (?e82 (f1 ?e47 ?e71))
+(let (?e83 (f1 ?e77 ?e13))
+(let (?e84 (f1 ?e32 ?e32))
+(let (?e85 (f1 ?e46 ?e46))
+(let (?e86 (f1 ?e36 ?e72))
+(let (?e87 (f1 ?e81 ?e65))
+(let (?e88 (f1 ?e29 ?e45))
+(let (?e89 (f1 ?e44 ?e31))
+(let (?e90 (f1 ?e41 ?e41))
+(let (?e91 (f1 ?e34 ?e42))
+(let (?e92 (f1 ?e35 ?e35))
+(let (?e93 (f1 ?e33 ?e33))
+(let (?e94 (f1 ?e11 ?e14))
+(let (?e95 (f1 ?e67 ?e34))
+(let (?e96 (f1 ?e86 ?e37))
+(let (?e97 (f1 ?e40 ?e40))
+(let (?e98 (- ?e56 ?e5))
+(let (?e99 (+ ?e52 ?e57))
+(let (?e100 (ite (p0 ?e51) 1 0))
+(let (?e101 (ite (p0 ?e12) 1 0))
+(let (?e102 (ite (p0 ?e58) 1 0))
+(let (?e103 (+ v0 ?e10))
+(let (?e104 (~ ?e48))
+(let (?e105 (* ?e2 ?e12))
+(let (?e106 (- ?e3 ?e101))
+(let (?e107 (- ?e59 ?e100))
+(let (?e108 (ite (p0 ?e10) 1 0))
+(let (?e109 (* ?e2 ?e102))
+(let (?e110 (ite (p0 ?e7) 1 0))
+(let (?e111 (* ?e53 (~ ?e2)))
+(let (?e112 (* ?e2 ?e4))
+(let (?e113 (~ ?e106))
+(let (?e114 (~ ?e57))
+(let (?e115 (* ?e68 (~ ?e2)))
+(let (?e116 (- ?e4 ?e50))
+(let (?e117 (* ?e2 ?e49))
+(let (?e118 (ite (p0 ?e61) 1 0))
+(let (?e119 (ite (p0 ?e62) 1 0))
+(let (?e120 (* ?e10 ?e2))
+(let (?e121 (ite (p0 ?e119) 1 0))
+(let (?e122 (f0 ?e55))
+(let (?e123 (* (~ ?e2) ?e66))
+(let (?e124 (* ?e2 ?e63))
+(let (?e125 (ite (p0 ?e106) 1 0))
+(let (?e126 (f0 ?e102))
+(let (?e127 (f0 ?e55))
+(let (?e128 (f0 ?e103))
+(let (?e129 (~ ?e8))
+(let (?e130 (- ?e126 ?e6))
+(let (?e131 (* (~ ?e2) ?e60))
+(let (?e132 (* (~ ?e2) ?e54))
+(flet ($e133 (p1 ?e15 ?e73 ?e14))
+(flet ($e134 (p1 ?e47 ?e78 ?e81))
+(flet ($e135 (p1 ?e44 ?e80 ?e37))
+(flet ($e136 (p1 ?e42 ?e73 ?e91))
+(flet ($e137 (p1 ?e43 ?e37 ?e14))
+(flet ($e138 (p1 ?e73 ?e87 ?e34))
+(flet ($e139 (p1 ?e75 ?e46 ?e75))
+(flet ($e140 (p1 ?e96 ?e96 ?e88))
+(flet ($e141 (p1 ?e89 ?e78 ?e87))
+(flet ($e142 (p1 ?e70 ?e95 ?e47))
+(flet ($e143 (p1 ?e39 ?e96 ?e74))
+(flet ($e144 (p1 ?e91 ?e72 ?e70))
+(flet ($e145 (p1 v1 ?e65 ?e44))
+(flet ($e146 (p1 ?e90 ?e70 ?e79))
+(flet ($e147 (p1 ?e94 ?e91 ?e13))
+(flet ($e148 (p1 ?e41 ?e93 ?e32))
+(flet ($e149 (p1 ?e40 ?e91 ?e93))
+(flet ($e150 (p1 ?e92 ?e34 ?e80))
+(flet ($e151 (p1 ?e71 ?e44 ?e78))
+(flet ($e152 (p1 ?e43 ?e34 ?e73))
+(flet ($e153 (p1 ?e81 ?e73 ?e70))
+(flet ($e154 (p1 ?e86 ?e86 ?e38))
+(flet ($e155 (p1 ?e45 v1 ?e36))
+(flet ($e156 (p1 ?e43 ?e30 ?e37))
+(flet ($e157 (p1 ?e84 ?e78 ?e45))
+(flet ($e158 (p1 ?e67 ?e38 ?e90))
+(flet ($e159 (p1 ?e31 ?e81 ?e13))
+(flet ($e160 (p1 ?e64 ?e47 ?e94))
+(flet ($e161 (p1 ?e29 ?e75 ?e76))
+(flet ($e162 (p1 ?e85 ?e96 ?e82))
+(flet ($e163 (p1 ?e33 ?e29 ?e38))
+(flet ($e164 (p1 ?e31 ?e78 ?e69))
+(flet ($e165 (p1 ?e97 ?e9 ?e35))
+(flet ($e166 (p1 ?e83 ?e71 ?e79))
+(flet ($e167 (p1 ?e11 ?e67 ?e31))
+(flet ($e168 (p1 ?e39 ?e93 ?e96))
+(flet ($e169 (p1 ?e65 ?e85 ?e44))
+(flet ($e170 (p1 ?e76 ?e40 ?e15))
+(flet ($e171 (p1 ?e77 ?e34 ?e14))
+(flet ($e172 (distinct ?e129 ?e62))
+(flet ($e173 (p0 ?e116))
+(flet ($e174 (> ?e120 ?e10))
+(flet ($e175 (p0 ?e102))
+(flet ($e176 (> ?e50 ?e53))
+(flet ($e177 (> ?e119 ?e127))
+(flet ($e178 (distinct ?e117 ?e55))
+(flet ($e179 (= ?e122 ?e102))
+(flet ($e180 (< ?e123 ?e52))
+(flet ($e181 (> ?e66 ?e51))
+(flet ($e182 (= ?e121 ?e4))
+(flet ($e183 (distinct ?e130 ?e102))
+(flet ($e184 (< ?e111 ?e4))
+(flet ($e185 (p0 ?e68))
+(flet ($e186 (distinct ?e3 ?e3))
+(flet ($e187 (>= ?e66 ?e59))
+(flet ($e188 (< ?e10 ?e48))
+(flet ($e189 (distinct ?e5 ?e52))
+(flet ($e190 (= ?e101 ?e54))
+(flet ($e191 (>= ?e8 ?e116))
+(flet ($e192 (<= ?e62 ?e12))
+(flet ($e193 (< ?e131 ?e114))
+(flet ($e194 (>= ?e49 ?e125))
+(flet ($e195 (> ?e100 ?e7))
+(flet ($e196 (p0 ?e101))
+(flet ($e197 (distinct ?e118 ?e52))
+(flet ($e198 (<= v0 ?e60))
+(flet ($e199 (p0 ?e128))
+(flet ($e200 (>= ?e6 ?e106))
+(flet ($e201 (= ?e50 ?e61))
+(flet ($e202 (> ?e115 ?e132))
+(flet ($e203 (distinct ?e57 ?e102))
+(flet ($e204 (>= ?e102 ?e55))
+(flet ($e205 (p0 ?e55))
+(flet ($e206 (<= ?e113 ?e132))
+(flet ($e207 (<= ?e124 ?e106))
+(flet ($e208 (> ?e68 ?e117))
+(flet ($e209 (p0 ?e56))
+(flet ($e210 (<= ?e63 ?e112))
+(flet ($e211 (<= ?e119 ?e5))
+(flet ($e212 (= ?e105 ?e51))
+(flet ($e213 (< ?e6 ?e118))
+(flet ($e214 (p0 ?e66))
+(flet ($e215 (>= ?e58 ?e101))
+(flet ($e216 (distinct ?e109 ?e57))
+(flet ($e217 (distinct ?e99 ?e103))
+(flet ($e218 (<= ?e126 ?e58))
+(flet ($e219 (>= ?e107 ?e120))
+(flet ($e220 (< ?e125 ?e124))
+(flet ($e221 (> ?e98 ?e105))
+(flet ($e222 (p0 ?e118))
+(flet ($e223 (= ?e108 ?e4))
+(flet ($e224 (= ?e58 ?e114))
+(flet ($e225 (< ?e110 ?e123))
+(flet ($e226 (distinct ?e104 ?e111))
+(flet ($e227 (iff $e179 $e21))
+(flet ($e228 (if_then_else $e185 $e171 $e141))
+(flet ($e229 (and $e152 $e216))
+(flet ($e230 (and $e133 $e165))
+(flet ($e231 (and $e155 $e217))
+(flet ($e232 (iff $e16 $e180))
+(flet ($e233 (if_then_else $e168 $e191 $e153))
+(flet ($e234 (implies $e159 $e147))
+(flet ($e235 (not $e203))
+(flet ($e236 (xor $e28 $e223))
+(flet ($e237 (and $e174 $e172))
+(flet ($e238 (or $e194 $e197))
+(flet ($e239 (iff $e149 $e201))
+(flet ($e240 (not $e181))
+(flet ($e241 (or $e238 $e157))
+(flet ($e242 (and $e190 $e225))
+(flet ($e243 (implies $e140 $e215))
+(flet ($e244 (xor $e176 $e20))
+(flet ($e245 (not $e241))
+(flet ($e246 (iff $e243 $e158))
+(flet ($e247 (iff $e18 $e169))
+(flet ($e248 (xor $e173 $e210))
+(flet ($e249 (if_then_else $e212 $e143 $e218))
+(flet ($e250 (not $e177))
+(flet ($e251 (or $e207 $e163))
+(flet ($e252 (implies $e214 $e156))
+(flet ($e253 (or $e170 $e166))
+(flet ($e254 (iff $e206 $e209))
+(flet ($e255 (and $e231 $e189))
+(flet ($e256 (or $e148 $e167))
+(flet ($e257 (if_then_else $e237 $e248 $e235))
+(flet ($e258 (or $e138 $e142))
+(flet ($e259 (or $e249 $e164))
+(flet ($e260 (and $e208 $e204))
+(flet ($e261 (xor $e260 $e202))
+(flet ($e262 (xor $e193 $e136))
+(flet ($e263 (if_then_else $e184 $e219 $e227))
+(flet ($e264 (not $e145))
+(flet ($e265 (or $e256 $e187))
+(flet ($e266 (implies $e160 $e205))
+(flet ($e267 (iff $e178 $e134))
+(flet ($e268 (or $e220 $e27))
+(flet ($e269 (and $e265 $e25))
+(flet ($e270 (not $e242))
+(flet ($e271 (or $e270 $e255))
+(flet ($e272 (not $e199))
+(flet ($e273 (xor $e239 $e154))
+(flet ($e274 (or $e144 $e144))
+(flet ($e275 (if_then_else $e267 $e230 $e258))
+(flet ($e276 (not $e22))
+(flet ($e277 (and $e17 $e192))
+(flet ($e278 (and $e246 $e135))
+(flet ($e279 (and $e228 $e234))
+(flet ($e280 (and $e232 $e263))
+(flet ($e281 (and $e268 $e269))
+(flet ($e282 (if_then_else $e188 $e229 $e183))
+(flet ($e283 (if_then_else $e150 $e276 $e236))
+(flet ($e284 (if_then_else $e252 $e24 $e211))
+(flet ($e285 (iff $e264 $e151))
+(flet ($e286 (xor $e200 $e175))
+(flet ($e287 (or $e281 $e250))
+(flet ($e288 (if_then_else $e262 $e262 $e280))
+(flet ($e289 (not $e26))
+(flet ($e290 (if_then_else $e245 $e259 $e245))
+(flet ($e291 (not $e162))
+(flet ($e292 (if_then_else $e266 $e251 $e289))
+(flet ($e293 (implies $e254 $e275))
+(flet ($e294 (or $e273 $e293))
+(flet ($e295 (xor $e272 $e224))
+(flet ($e296 (implies $e257 $e240))
+(flet ($e297 (iff $e253 $e23))
+(flet ($e298 (iff $e19 $e292))
+(flet ($e299 (implies $e282 $e196))
+(flet ($e300 (iff $e284 $e139))
+(flet ($e301 (implies $e297 $e283))
+(flet ($e302 (and $e291 $e221))
+(flet ($e303 (not $e247))
+(flet ($e304 (xor $e294 $e161))
+(flet ($e305 (not $e244))
+(flet ($e306 (iff $e290 $e279))
+(flet ($e307 (and $e300 $e182))
+(flet ($e308 (implies $e288 $e195))
+(flet ($e309 (if_then_else $e304 $e299 $e186))
+(flet ($e310 (if_then_else $e261 $e222 $e213))
+(flet ($e311 (or $e286 $e301))
+(flet ($e312 (and $e311 $e298))
+(flet ($e313 (and $e295 $e302))
+(flet ($e314 (if_then_else $e305 $e278 $e278))
+(flet ($e315 (not $e226))
+(flet ($e316 (not $e303))
+(flet ($e317 (not $e315))
+(flet ($e318 (and $e296 $e137))
+(flet ($e319 (if_then_else $e307 $e308 $e313))
+(flet ($e320 (xor $e233 $e319))
+(flet ($e321 (if_then_else $e317 $e310 $e274))
+(flet ($e322 (not $e146))
+(flet ($e323 (xor $e198 $e321))
+(flet ($e324 (implies $e316 $e271))
+(flet ($e325 (xor $e312 $e314))
+(flet ($e326 (implies $e285 $e306))
+(flet ($e327 (if_then_else $e324 $e325 $e325))
+(flet ($e328 (if_then_else $e322 $e287 $e326))
+(flet ($e329 (implies $e323 $e309))
+(flet ($e330 (if_then_else $e327 $e329 $e318))
+(flet ($e331 (if_then_else $e277 $e330 $e277))
+(flet ($e332 (not $e328))
+(flet ($e333 (implies $e332 $e332))
+(flet ($e334 (not $e320))
+(flet ($e335 (implies $e333 $e334))
+(flet ($e336 (xor $e335 $e335))
+(flet ($e337 (iff $e331 $e336))
+$e337
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress2/bug136.smt b/test/regress/regress2/bug136.smt
new file mode 100644
index 0000000..08fb3cb
--- /dev/null
+++ b/test/regress/regress2/bug136.smt
@@ -0,0 +1,1149 @@
+(benchmark fuzzsmt
+:logic QF_LRA
+:status sat
+:extrafuns ((v0 Real))
+:extrafuns ((v1 Real))
+:formula
+(let (?e2 12)
+(let (?e3 0)
+(let (?e4 (~ v1))
+(let (?e5 (+ ?e4 ?e4))
+(let (?e6 (+ v1 v1))
+(let (?e7 (/ ?e3 ?e2))
+(let (?e8 (+ v1 ?e4))
+(let (?e9 (* ?e8 ?e3))
+(let (?e10 (* ?e6 ?e3))
+(let (?e11 (* (~ ?e3) ?e4))
+(let (?e12 (+ ?e4 ?e4))
+(let (?e13 (~ ?e4))
+(let (?e14 (- ?e12 ?e8))
+(let (?e15 (- ?e14 ?e11))
+(let (?e16 (+ v1 ?e7))
+(let (?e17 (- ?e11 ?e8))
+(let (?e18 (+ ?e11 ?e10))
+(let (?e19 (* ?e2 ?e4))
+(let (?e20 (* ?e3 ?e6))
+(let (?e21 (/ ?e3 ?e2))
+(let (?e22 (+ ?e4 ?e4))
+(let (?e23 (- ?e5 ?e17))
+(let (?e24 (~ ?e20))
+(let (?e25 (/ ?e3 (~ ?e2)))
+(let (?e26 (* v1 (~ ?e2)))
+(let (?e27 (* ?e2 ?e6))
+(let (?e28 (~ ?e21))
+(let (?e29 (* (~ ?e3) ?e25))
+(let (?e30 (- v1 ?e15))
+(let (?e31 (* (~ ?e2) ?e15))
+(let (?e32 (/ ?e2 (~ ?e2)))
+(let (?e33 (/ ?e3 ?e2))
+(let (?e34 (/ ?e3 (~ ?e2)))
+(let (?e35 (/ ?e3 ?e2))
+(let (?e36 (* ?e13 (~ ?e3)))
+(let (?e37 (+ ?e21 v1))
+(let (?e38 (- ?e19 v0))
+(flet ($e39 (< ?e20 ?e7))
+(flet ($e40 (> ?e5 v0))
+(flet ($e41 (distinct ?e30 ?e16))
+(flet ($e42 (< ?e20 v0))
+(flet ($e43 (<= ?e17 ?e35))
+(flet ($e44 (= ?e15 ?e29))
+(flet ($e45 (<= ?e15 ?e11))
+(flet ($e46 (distinct ?e30 ?e8))
+(flet ($e47 (< ?e25 ?e4))
+(flet ($e48 (>= ?e19 ?e32))
+(flet ($e49 (< ?e4 ?e35))
+(flet ($e50 (< ?e36 ?e11))
+(flet ($e51 (>= ?e5 ?e7))
+(flet ($e52 (= ?e21 ?e6))
+(flet ($e53 (= ?e11 ?e34))
+(flet ($e54 (distinct ?e14 ?e38))
+(flet ($e55 (= ?e6 ?e34))
+(flet ($e56 (< ?e15 ?e11))
+(flet ($e57 (<= ?e14 ?e25))
+(flet ($e58 (< v1 ?e12))
+(flet ($e59 (> ?e6 ?e11))
+(flet ($e60 (distinct ?e15 ?e4))
+(flet ($e61 (<= ?e25 ?e30))
+(flet ($e62 (>= ?e6 ?e9))
+(flet ($e63 (<= ?e33 ?e29))
+(flet ($e64 (>= ?e25 ?e8))
+(flet ($e65 (> ?e31 ?e33))
+(flet ($e66 (distinct ?e23 ?e31))
+(flet ($e67 (= ?e12 ?e31))
+(flet ($e68 (> ?e18 ?e15))
+(flet ($e69 (< v1 ?e6))
+(flet ($e70 (<= ?e24 v1))
+(flet ($e71 (> ?e19 ?e18))
+(flet ($e72 (distinct ?e37 ?e17))
+(flet ($e73 (distinct ?e16 ?e9))
+(flet ($e74 (distinct ?e25 ?e36))
+(flet ($e75 (> ?e20 ?e21))
+(flet ($e76 (= ?e15 ?e8))
+(flet ($e77 (> ?e17 ?e20))
+(flet ($e78 (>= ?e22 ?e18))
+(flet ($e79 (>= ?e37 ?e38))
+(flet ($e80 (> ?e8 v1))
+(flet ($e81 (distinct ?e36 ?e31))
+(flet ($e82 (>= v1 ?e37))
+(flet ($e83 (distinct ?e26 ?e34))
+(flet ($e84 (= ?e10 ?e24))
+(flet ($e85 (<= v0 ?e37))
+(flet ($e86 (distinct ?e21 ?e17))
+(flet ($e87 (distinct ?e15 ?e25))
+(flet ($e88 (>= ?e12 ?e31))
+(flet ($e89 (< ?e34 ?e32))
+(flet ($e90 (distinct v1 ?e37))
+(flet ($e91 (> ?e8 v1))
+(flet ($e92 (< ?e17 ?e8))
+(flet ($e93 (distinct ?e24 ?e6))
+(flet ($e94 (< ?e13 ?e22))
+(flet ($e95 (distinct ?e8 ?e28))
+(flet ($e96 (< ?e7 ?e25))
+(flet ($e97 (> ?e24 ?e5))
+(flet ($e98 (>= ?e30 ?e12))
+(flet ($e99 (< ?e24 v0))
+(flet ($e100 (> ?e8 ?e12))
+(flet ($e101 (>= ?e17 ?e23))
+(flet ($e102 (> ?e31 ?e25))
+(flet ($e103 (distinct ?e21 ?e22))
+(flet ($e104 (distinct ?e25 ?e34))
+(flet ($e105 (<= ?e11 ?e5))
+(flet ($e106 (< ?e23 ?e19))
+(flet ($e107 (<= ?e22 ?e4))
+(flet ($e108 (>= ?e17 ?e20))
+(flet ($e109 (>= ?e24 ?e24))
+(flet ($e110 (< ?e7 ?e37))
+(flet ($e111 (>= ?e24 ?e33))
+(flet ($e112 (>= v1 ?e30))
+(flet ($e113 (distinct ?e23 ?e35))
+(flet ($e114 (< ?e25 ?e23))
+(flet ($e115 (distinct ?e37 ?e8))
+(flet ($e116 (<= ?e19 ?e29))
+(flet ($e117 (< ?e38 v1))
+(flet ($e118 (< ?e13 ?e28))
+(flet ($e119 (<= ?e12 ?e37))
+(flet ($e120 (> ?e37 ?e12))
+(flet ($e121 (distinct ?e12 ?e11))
+(flet ($e122 (<= ?e30 ?e25))
+(flet ($e123 (> ?e35 ?e10))
+(flet ($e124 (>= v1 ?e38))
+(flet ($e125 (>= ?e35 ?e9))
+(flet ($e126 (<= ?e13 v0))
+(flet ($e127 (>= ?e33 ?e8))
+(flet ($e128 (> ?e16 ?e20))
+(flet ($e129 (> ?e24 ?e9))
+(flet ($e130 (< ?e13 ?e29))
+(flet ($e131 (> ?e23 ?e20))
+(flet ($e132 (= ?e23 ?e9))
+(flet ($e133 (> ?e7 ?e31))
+(flet ($e134 (<= ?e28 ?e17))
+(flet ($e135 (= ?e35 ?e25))
+(flet ($e136 (= ?e14 ?e27))
+(let (?e137 (ite $e97 ?e14 ?e20))
+(let (?e138 (ite $e105 ?e38 ?e19))
+(let (?e139 (ite $e121 ?e4 ?e14))
+(let (?e140 (ite $e128 ?e16 ?e32))
+(let (?e141 (ite $e70 ?e37 ?e9))
+(let (?e142 (ite $e90 ?e26 ?e37))
+(let (?e143 (ite $e108 ?e31 ?e15))
+(let (?e144 (ite $e82 ?e23 ?e28))
+(let (?e145 (ite $e69 ?e35 ?e31))
+(let (?e146 (ite $e126 ?e15 ?e141))
+(let (?e147 (ite $e72 ?e4 ?e8))
+(let (?e148 (ite $e109 ?e26 ?e6))
+(let (?e149 (ite $e68 ?e28 ?e13))
+(let (?e150 (ite $e115 ?e21 ?e4))
+(let (?e151 (ite $e57 ?e17 ?e28))
+(let (?e152 (ite $e45 ?e25 ?e6))
+(let (?e153 (ite $e79 ?e30 ?e28))
+(let (?e154 (ite $e60 v0 ?e14))
+(let (?e155 (ite $e86 ?e23 ?e150))
+(let (?e156 (ite $e76 ?e18 ?e8))
+(let (?e157 (ite $e55 ?e13 ?e32))
+(let (?e158 (ite $e100 ?e149 ?e21))
+(let (?e159 (ite $e94 ?e141 ?e152))
+(let (?e160 (ite $e65 ?e21 ?e36))
+(let (?e161 (ite $e58 ?e29 ?e34))
+(let (?e162 (ite $e123 ?e156 ?e140))
+(let (?e163 (ite $e98 ?e150 ?e4))
+(let (?e164 (ite $e102 ?e11 ?e16))
+(let (?e165 (ite $e94 ?e12 ?e156))
+(let (?e166 (ite $e133 ?e141 ?e7))
+(let (?e167 (ite $e120 ?e30 ?e146))
+(let (?e168 (ite $e129 ?e9 ?e149))
+(let (?e169 (ite $e62 ?e153 ?e14))
+(let (?e170 (ite $e118 ?e33 ?e140))
+(let (?e171 (ite $e114 ?e27 ?e170))
+(let (?e172 (ite $e110 ?e5 ?e143))
+(let (?e173 (ite $e107 ?e22 ?e148))
+(let (?e174 (ite $e89 ?e35 ?e160))
+(let (?e175 (ite $e77 ?e9 ?e142))
+(let (?e176 (ite $e129 ?e163 ?e32))
+(let (?e177 (ite $e84 ?e18 ?e173))
+(let (?e178 (ite $e83 ?e24 ?e38))
+(let (?e179 (ite $e135 v1 ?e6))
+(let (?e180 (ite $e80 ?e26 ?e23))
+(let (?e181 (ite $e49 ?e167 ?e164))
+(let (?e182 (ite $e59 ?e10 ?e180))
+(let (?e183 (ite $e136 ?e14 ?e178))
+(let (?e184 (ite $e121 ?e147 ?e19))
+(let (?e185 (ite $e115 ?e21 ?e172))
+(let (?e186 (ite $e112 ?e163 ?e182))
+(let (?e187 (ite $e81 ?e24 ?e21))
+(let (?e188 (ite $e129 ?e187 ?e180))
+(let (?e189 (ite $e41 ?e159 v1))
+(let (?e190 (ite $e121 ?e155 ?e26))
+(let (?e191 (ite $e133 ?e25 ?e160))
+(let (?e192 (ite $e102 ?e7 ?e16))
+(let (?e193 (ite $e101 ?e12 ?e186))
+(let (?e194 (ite $e40 ?e156 ?e37))
+(let (?e195 (ite $e124 ?e149 ?e139))
+(let (?e196 (ite $e121 ?e137 ?e8))
+(let (?e197 (ite $e105 ?e170 ?e188))
+(let (?e198 (ite $e113 ?e36 ?e193))
+(let (?e199 (ite $e97 ?e197 ?e12))
+(let (?e200 (ite $e127 ?e17 ?e12))
+(let (?e201 (ite $e132 ?e24 ?e187))
+(let (?e202 (ite $e103 v1 ?e142))
+(let (?e203 (ite $e46 ?e149 ?e172))
+(let (?e204 (ite $e91 ?e145 ?e188))
+(let (?e205 (ite $e61 ?e176 ?e157))
+(let (?e206 (ite $e54 ?e195 ?e181))
+(let (?e207 (ite $e53 ?e173 ?e18))
+(let (?e208 (ite $e104 ?e162 ?e10))
+(let (?e209 (ite $e75 ?e183 ?e205))
+(let (?e210 (ite $e50 ?e24 ?e188))
+(let (?e211 (ite $e92 ?e194 ?e18))
+(let (?e212 (ite $e93 ?e149 ?e158))
+(let (?e213 (ite $e43 ?e32 ?e212))
+(let (?e214 (ite $e121 ?e146 ?e188))
+(let (?e215 (ite $e124 ?e156 ?e185))
+(let (?e216 (ite $e115 ?e26 ?e165))
+(let (?e217 (ite $e78 ?e33 ?e27))
+(let (?e218 (ite $e62 ?e149 ?e29))
+(let (?e219 (ite $e48 ?e212 ?e171))
+(let (?e220 (ite $e111 ?e148 ?e192))
+(let (?e221 (ite $e64 ?e176 ?e150))
+(let (?e222 (ite $e118 ?e213 ?e199))
+(let (?e223 (ite $e68 ?e175 ?e8))
+(let (?e224 (ite $e85 ?e4 ?e28))
+(let (?e225 (ite $e81 ?e174 ?e170))
+(let (?e226 (ite $e116 ?e141 ?e197))
+(let (?e227 (ite $e45 ?e22 ?e187))
+(let (?e228 (ite $e125 ?e9 ?e176))
+(let (?e229 (ite $e48 ?e215 ?e200))
+(let (?e230 (ite $e124 ?e28 ?e6))
+(let (?e231 (ite $e54 ?e191 ?e153))
+(let (?e232 (ite $e88 ?e214 ?e227))
+(let (?e233 (ite $e133 ?e5 ?e8))
+(let (?e234 (ite $e63 ?e220 ?e209))
+(let (?e235 (ite $e87 ?e203 ?e31))
+(let (?e236 (ite $e63 ?e184 ?e17))
+(let (?e237 (ite $e106 ?e234 ?e137))
+(let (?e238 (ite $e73 ?e175 ?e179))
+(let (?e239 (ite $e100 ?e9 ?e234))
+(let (?e240 (ite $e99 ?e182 ?e187))
+(let (?e241 (ite $e86 ?e18 ?e29))
+(let (?e242 (ite $e82 ?e225 ?e196))
+(let (?e243 (ite $e77 ?e188 ?e227))
+(let (?e244 (ite $e57 ?e234 ?e172))
+(let (?e245 (ite $e66 ?e165 ?e224))
+(let (?e246 (ite $e56 ?e231 ?e156))
+(let (?e247 (ite $e93 ?e234 ?e225))
+(let (?e248 (ite $e67 ?e182 ?e212))
+(let (?e249 (ite $e111 ?e137 ?e151))
+(let (?e250 (ite $e120 ?e34 ?e233))
+(let (?e251 (ite $e44 ?e19 ?e247))
+(let (?e252 (ite $e92 ?e154 ?e169))
+(let (?e253 (ite $e39 ?e225 ?e225))
+(let (?e254 (ite $e58 ?e19 ?e12))
+(let (?e255 (ite $e41 ?e138 ?e177))
+(let (?e256 (ite $e130 ?e157 ?e12))
+(let (?e257 (ite $e51 v1 ?e240))
+(let (?e258 (ite $e96 ?e171 ?e30))
+(let (?e259 (ite $e74 ?e210 ?e27))
+(let (?e260 (ite $e42 ?e253 ?e154))
+(let (?e261 (ite $e117 ?e161 ?e149))
+(let (?e262 (ite $e109 ?e147 ?e147))
+(let (?e263 (ite $e43 ?e171 ?e251))
+(let (?e264 (ite $e119 ?e260 ?e217))
+(let (?e265 (ite $e122 ?e227 ?e168))
+(let (?e266 (ite $e83 ?e249 ?e9))
+(let (?e267 (ite $e134 ?e246 ?e150))
+(let (?e268 (ite $e112 ?e206 ?e242))
+(let (?e269 (ite $e71 ?e5 ?e150))
+(let (?e270 (ite $e107 ?e152 ?e214))
+(let (?e271 (ite $e114 ?e31 ?e209))
+(let (?e272 (ite $e44 ?e177 ?e188))
+(let (?e273 (ite $e101 ?e235 ?e248))
+(let (?e274 (ite $e52 ?e141 ?e249))
+(let (?e275 (ite $e119 ?e195 ?e205))
+(let (?e276 (ite $e109 ?e256 ?e198))
+(let (?e277 (ite $e47 ?e202 ?e11))
+(let (?e278 (ite $e100 ?e249 ?e19))
+(let (?e279 (ite $e131 ?e20 ?e180))
+(let (?e280 (ite $e95 ?e168 ?e194))
+(flet ($e281 (<= ?e149 ?e271))
+(flet ($e282 (> ?e25 ?e277))
+(flet ($e283 (<= ?e147 ?e231))
+(flet ($e284 (distinct ?e275 ?e148))
+(flet ($e285 (< ?e276 ?e172))
+(flet ($e286 (> ?e227 ?e243))
+(flet ($e287 (>= ?e275 ?e165))
+(flet ($e288 (<= ?e242 ?e158))
+(flet ($e289 (<= ?e238 ?e150))
+(flet ($e290 (distinct ?e138 ?e137))
+(flet ($e291 (= ?e213 ?e17))
+(flet ($e292 (< ?e31 ?e195))
+(flet ($e293 (>= ?e173 ?e137))
+(flet ($e294 (<= ?e141 ?e197))
+(flet ($e295 (<= ?e226 ?e16))
+(flet ($e296 (> ?e227 ?e201))
+(flet ($e297 (<= ?e270 ?e227))
+(flet ($e298 (>= ?e219 ?e151))
+(flet ($e299 (distinct ?e270 ?e179))
+(flet ($e300 (= ?e262 ?e151))
+(flet ($e301 (distinct ?e30 ?e261))
+(flet ($e302 (< ?e37 ?e214))
+(flet ($e303 (distinct ?e189 ?e147))
+(flet ($e304 (= ?e189 ?e255))
+(flet ($e305 (= ?e37 ?e254))
+(flet ($e306 (>= ?e226 ?e5))
+(flet ($e307 (> ?e276 ?e250))
+(flet ($e308 (< ?e214 ?e224))
+(flet ($e309 (< ?e29 ?e212))
+(flet ($e310 (= ?e217 ?e230))
+(flet ($e311 (< ?e269 ?e184))
+(flet ($e312 (<= ?e163 ?e154))
+(flet ($e313 (>= ?e247 ?e203))
+(flet ($e314 (= ?e198 ?e253))
+(flet ($e315 (< ?e248 ?e210))
+(flet ($e316 (>= ?e237 ?e203))
+(flet ($e317 (<= ?e179 ?e24))
+(flet ($e318 (distinct ?e249 ?e26))
+(flet ($e319 (<= ?e262 ?e261))
+(flet ($e320 (<= ?e203 ?e253))
+(flet ($e321 (> ?e158 ?e141))
+(flet ($e322 (= ?e220 ?e185))
+(flet ($e323 (> v1 ?e266))
+(flet ($e324 (> ?e140 ?e155))
+(flet ($e325 (= ?e14 ?e146))
+(flet ($e326 (distinct ?e183 ?e206))
+(flet ($e327 (= ?e170 ?e201))
+(flet ($e328 (< ?e256 ?e269))
+(flet ($e329 (< ?e197 ?e27))
+(flet ($e330 (= ?e137 ?e163))
+(flet ($e331 (= ?e154 ?e27))
+(flet ($e332 (<= ?e254 ?e212))
+(flet ($e333 (= ?e193 ?e29))
+(flet ($e334 (> ?e278 ?e18))
+(flet ($e335 (>= ?e178 ?e22))
+(flet ($e336 (>= ?e155 ?e203))
+(flet ($e337 (>= ?e250 ?e278))
+(flet ($e338 (= ?e201 ?e236))
+(flet ($e339 (<= ?e210 ?e172))
+(flet ($e340 (= ?e27 ?e31))
+(flet ($e341 (<= ?e267 ?e250))
+(flet ($e342 (>= ?e155 ?e158))
+(flet ($e343 (distinct ?e181 ?e190))
+(flet ($e344 (<= ?e218 ?e222))
+(flet ($e345 (< ?e37 ?e266))
+(flet ($e346 (<= ?e214 ?e164))
+(flet ($e347 (> ?e269 ?e11))
+(flet ($e348 (>= ?e174 ?e199))
+(flet ($e349 (< ?e33 ?e235))
+(flet ($e350 (>= ?e207 ?e269))
+(flet ($e351 (< ?e204 ?e147))
+(flet ($e352 (> ?e170 ?e226))
+(flet ($e353 (> ?e7 ?e222))
+(flet ($e354 (> ?e174 ?e162))
+(flet ($e355 (<= v1 ?e37))
+(flet ($e356 (<= ?e4 ?e210))
+(flet ($e357 (= ?e217 ?e150))
+(flet ($e358 (> ?e252 ?e177))
+(flet ($e359 (<= ?e242 ?e190))
+(flet ($e360 (<= ?e278 ?e32))
+(flet ($e361 (> ?e231 ?e248))
+(flet ($e362 (= ?e189 ?e249))
+(flet ($e363 (>= ?e212 ?e247))
+(flet ($e364 (> ?e30 ?e17))
+(flet ($e365 (distinct ?e279 ?e256))
+(flet ($e366 (> ?e37 ?e249))
+(flet ($e367 (<= ?e27 ?e170))
+(flet ($e368 (>= ?e276 ?e206))
+(flet ($e369 (= ?e197 ?e148))
+(flet ($e370 (= ?e241 ?e265))
+(flet ($e371 (distinct ?e191 ?e209))
+(flet ($e372 (<= ?e235 ?e240))
+(flet ($e373 (<= ?e203 ?e244))
+(flet ($e374 (< ?e27 ?e31))
+(flet ($e375 (>= ?e151 ?e174))
+(flet ($e376 (= ?e13 ?e234))
+(flet ($e377 (distinct ?e203 ?e142))
+(flet ($e378 (<= ?e201 ?e38))
+(flet ($e379 (distinct ?e151 ?e173))
+(flet ($e380 (= ?e202 ?e241))
+(flet ($e381 (= ?e233 ?e196))
+(flet ($e382 (= ?e190 ?e22))
+(flet ($e383 (> ?e203 ?e253))
+(flet ($e384 (> ?e204 ?e179))
+(flet ($e385 (distinct ?e37 ?e4))
+(flet ($e386 (distinct ?e164 ?e224))
+(flet ($e387 (<= ?e217 ?e227))
+(flet ($e388 (> ?e159 ?e13))
+(flet ($e389 (>= ?e258 ?e147))
+(flet ($e390 (>= ?e186 ?e207))
+(flet ($e391 (= ?e193 ?e200))
+(flet ($e392 (<= ?e239 ?e207))
+(flet ($e393 (< ?e224 ?e226))
+(flet ($e394 (< ?e260 ?e207))
+(flet ($e395 (> ?e227 ?e266))
+(flet ($e396 (= ?e247 ?e32))
+(flet ($e397 (< ?e206 ?e248))
+(flet ($e398 (>= ?e38 ?e162))
+(flet ($e399 (< ?e214 ?e201))
+(flet ($e400 (<= ?e249 ?e251))
+(flet ($e401 (<= ?e184 ?e20))
+(flet ($e402 (< ?e9 ?e205))
+(flet ($e403 (< ?e32 ?e191))
+(flet ($e404 (<= ?e38 ?e148))
+(flet ($e405 (<= ?e34 ?e166))
+(flet ($e406 (< ?e35 ?e165))
+(flet ($e407 (>= ?e241 ?e216))
+(flet ($e408 (distinct ?e266 ?e250))
+(flet ($e409 (> ?e245 ?e269))
+(flet ($e410 (= ?e144 ?e163))
+(flet ($e411 (< ?e188 ?e170))
+(flet ($e412 (<= ?e26 ?e170))
+(flet ($e413 (<= ?e268 ?e142))
+(flet ($e414 (> ?e188 ?e149))
+(flet ($e415 (< ?e165 ?e228))
+(flet ($e416 (<= ?e13 ?e254))
+(flet ($e417 (= ?e195 ?e206))
+(flet ($e418 (<= ?e11 ?e156))
+(flet ($e419 (<= ?e202 v0))
+(flet ($e420 (>= ?e256 ?e241))
+(flet ($e421 (>= ?e149 ?e139))
+(flet ($e422 (<= ?e191 ?e192))
+(flet ($e423 (> ?e254 ?e204))
+(flet ($e424 (<= ?e220 ?e185))
+(flet ($e425 (= ?e208 ?e258))
+(flet ($e426 (<= ?e27 ?e265))
+(flet ($e427 (distinct ?e264 ?e264))
+(flet ($e428 (distinct ?e31 ?e151))
+(flet ($e429 (< ?e155 ?e28))
+(flet ($e430 (<= ?e254 ?e158))
+(flet ($e431 (<= ?e174 ?e166))
+(flet ($e432 (>= ?e191 ?e249))
+(flet ($e433 (> ?e167 ?e201))
+(flet ($e434 (> ?e205 ?e237))
+(flet ($e435 (<= ?e180 ?e148))
+(flet ($e436 (distinct ?e208 ?e208))
+(flet ($e437 (<= ?e167 ?e15))
+(flet ($e438 (>= ?e149 ?e205))
+(flet ($e439 (>= ?e161 ?e139))
+(flet ($e440 (< ?e266 ?e18))
+(flet ($e441 (<= ?e269 ?e184))
+(flet ($e442 (<= ?e262 ?e195))
+(flet ($e443 (= ?e227 ?e19))
+(flet ($e444 (<= ?e166 ?e272))
+(flet ($e445 (< ?e245 ?e165))
+(flet ($e446 (distinct ?e243 ?e185))
+(flet ($e447 (= ?e18 ?e21))
+(flet ($e448 (< ?e271 ?e241))
+(flet ($e449 (>= ?e213 ?e217))
+(flet ($e450 (< ?e239 ?e184))
+(flet ($e451 (< ?e205 ?e244))
+(flet ($e452 (distinct ?e280 ?e157))
+(flet ($e453 (>= ?e29 ?e215))
+(flet ($e454 (= ?e193 ?e227))
+(flet ($e455 (> ?e149 ?e177))
+(flet ($e456 (>= ?e21 ?e139))
+(flet ($e457 (< ?e187 ?e181))
+(flet ($e458 (< ?e157 ?e228))
+(flet ($e459 (distinct ?e17 ?e210))
+(flet ($e460 (distinct ?e176 ?e186))
+(flet ($e461 (< ?e16 ?e24))
+(flet ($e462 (<= ?e267 ?e251))
+(flet ($e463 (> ?e225 ?e220))
+(flet ($e464 (distinct ?e198 ?e251))
+(flet ($e465 (<= ?e187 ?e173))
+(flet ($e466 (= ?e276 ?e278))
+(flet ($e467 (< ?e157 ?e29))
+(flet ($e468 (<= ?e18 ?e209))
+(flet ($e469 (>= ?e277 ?e142))
+(flet ($e470 (> ?e195 ?e176))
+(flet ($e471 (>= ?e263 ?e247))
+(flet ($e472 (>= ?e257 ?e144))
+(flet ($e473 (>= ?e247 ?e220))
+(flet ($e474 (> ?e213 ?e171))
+(flet ($e475 (< ?e14 ?e261))
+(flet ($e476 (>= ?e160 ?e25))
+(flet ($e477 (< ?e22 ?e200))
+(flet ($e478 (< ?e27 ?e159))
+(flet ($e479 (< ?e137 ?e251))
+(flet ($e480 (< ?e32 ?e147))
+(flet ($e481 (> ?e187 ?e173))
+(flet ($e482 (= ?e180 ?e147))
+(flet ($e483 (distinct ?e144 ?e191))
+(flet ($e484 (distinct ?e140 ?e164))
+(flet ($e485 (> ?e224 ?e243))
+(flet ($e486 (<= ?e137 ?e166))
+(flet ($e487 (< ?e207 ?e207))
+(flet ($e488 (= ?e242 ?e245))
+(flet ($e489 (<= ?e204 ?e256))
+(flet ($e490 (distinct ?e9 ?e262))
+(flet ($e491 (distinct ?e196 ?e14))
+(flet ($e492 (< ?e253 ?e165))
+(flet ($e493 (<= ?e31 ?e30))
+(flet ($e494 (>= ?e196 ?e266))
+(flet ($e495 (>= ?e147 ?e32))
+(flet ($e496 (distinct ?e148 ?e189))
+(flet ($e497 (> ?e169 ?e240))
+(flet ($e498 (< ?e193 ?e174))
+(flet ($e499 (= ?e276 ?e278))
+(flet ($e500 (< ?e199 ?e202))
+(flet ($e501 (distinct ?e5 ?e237))
+(flet ($e502 (< ?e204 ?e212))
+(flet ($e503 (> ?e176 ?e193))
+(flet ($e504 (>= ?e219 ?e184))
+(flet ($e505 (< ?e203 ?e192))
+(flet ($e506 (> ?e231 ?e6))
+(flet ($e507 (>= ?e221 ?e185))
+(flet ($e508 (distinct ?e4 ?e188))
+(flet ($e509 (< ?e245 ?e241))
+(flet ($e510 (distinct ?e232 ?e257))
+(flet ($e511 (> ?e230 ?e223))
+(flet ($e512 (< ?e4 ?e27))
+(flet ($e513 (distinct ?e256 ?e225))
+(flet ($e514 (distinct ?e213 ?e19))
+(flet ($e515 (< ?e190 ?e190))
+(flet ($e516 (>= ?e150 ?e255))
+(flet ($e517 (<= ?e9 ?e274))
+(flet ($e518 (> ?e191 ?e231))
+(flet ($e519 (>= ?e162 ?e173))
+(flet ($e520 (<= ?e181 ?e138))
+(flet ($e521 (< ?e37 ?e155))
+(flet ($e522 (distinct ?e176 ?e249))
+(flet ($e523 (<= ?e196 ?e170))
+(flet ($e524 (< ?e178 ?e34))
+(flet ($e525 (> ?e26 ?e186))
+(flet ($e526 (= ?e20 ?e278))
+(flet ($e527 (< ?e173 ?e223))
+(flet ($e528 (<= ?e212 ?e182))
+(flet ($e529 (= ?e147 ?e7))
+(flet ($e530 (= ?e192 ?e174))
+(flet ($e531 (> ?e140 ?e243))
+(flet ($e532 (< v0 ?e171))
+(flet ($e533 (distinct ?e239 ?e19))
+(flet ($e534 (distinct ?e217 ?e229))
+(flet ($e535 (= ?e209 ?e175))
+(flet ($e536 (<= ?e170 ?e222))
+(flet ($e537 (<= ?e186 ?e233))
+(flet ($e538 (<= ?e225 ?e244))
+(flet ($e539 (<= ?e226 ?e179))
+(flet ($e540 (<= ?e273 ?e30))
+(flet ($e541 (> ?e150 ?e146))
+(flet ($e542 (distinct ?e267 ?e251))
+(flet ($e543 (<= ?e210 ?e14))
+(flet ($e544 (>= ?e230 ?e262))
+(flet ($e545 (<= ?e10 ?e215))
+(flet ($e546 (distinct ?e182 ?e174))
+(flet ($e547 (> ?e271 ?e250))
+(flet ($e548 (<= ?e243 ?e164))
+(flet ($e549 (= ?e246 ?e201))
+(flet ($e550 (< ?e34 ?e261))
+(flet ($e551 (= ?e175 ?e180))
+(flet ($e552 (= ?e139 ?e8))
+(flet ($e553 (> ?e248 ?e164))
+(flet ($e554 (<= ?e197 ?e10))
+(flet ($e555 (> ?e231 ?e159))
+(flet ($e556 (> ?e204 ?e263))
+(flet ($e557 (= ?e149 ?e188))
+(flet ($e558 (<= ?e271 ?e14))
+(flet ($e559 (distinct ?e148 ?e241))
+(flet ($e560 (> ?e156 ?e255))
+(flet ($e561 (< ?e185 ?e5))
+(flet ($e562 (<= ?e140 ?e213))
+(flet ($e563 (>= ?e214 ?e203))
+(flet ($e564 (< ?e278 ?e30))
+(flet ($e565 (>= ?e182 ?e192))
+(flet ($e566 (distinct ?e30 ?e217))
+(flet ($e567 (distinct ?e277 ?e250))
+(flet ($e568 (= ?e205 ?e211))
+(flet ($e569 (= ?e252 ?e210))
+(flet ($e570 (<= ?e261 v0))
+(flet ($e571 (< ?e223 ?e170))
+(flet ($e572 (>= ?e264 ?e196))
+(flet ($e573 (= ?e217 ?e259))
+(flet ($e574 (< ?e207 ?e30))
+(flet ($e575 (<= ?e212 ?e163))
+(flet ($e576 (= ?e31 ?e243))
+(flet ($e577 (distinct ?e201 ?e230))
+(flet ($e578 (distinct ?e161 ?e141))
+(flet ($e579 (<= ?e161 ?e154))
+(flet ($e580 (< ?e11 ?e201))
+(flet ($e581 (< ?e154 ?e213))
+(flet ($e582 (> ?e239 ?e198))
+(flet ($e583 (< ?e162 ?e14))
+(flet ($e584 (< ?e248 ?e13))
+(flet ($e585 (distinct ?e148 ?e263))
+(flet ($e586 (>= ?e200 ?e203))
+(flet ($e587 (> ?e27 ?e209))
+(flet ($e588 (< ?e191 ?e4))
+(flet ($e589 (>= ?e259 ?e180))
+(flet ($e590 (= ?e148 ?e27))
+(flet ($e591 (< ?e21 ?e152))
+(flet ($e592 (distinct ?e167 ?e18))
+(flet ($e593 (distinct ?e35 ?e12))
+(flet ($e594 (= ?e15 ?e24))
+(flet ($e595 (<= ?e37 ?e245))
+(flet ($e596 (distinct ?e218 ?e157))
+(flet ($e597 (<= ?e193 ?e10))
+(flet ($e598 (>= ?e227 ?e28))
+(flet ($e599 (= ?e238 ?e254))
+(flet ($e600 (< ?e201 ?e27))
+(flet ($e601 (> ?e28 ?e209))
+(flet ($e602 (= ?e177 ?e271))
+(flet ($e603 (< ?e243 ?e222))
+(flet ($e604 (>= ?e275 ?e215))
+(flet ($e605 (distinct ?e273 ?e29))
+(flet ($e606 (>= ?e153 ?e211))
+(flet ($e607 (<= ?e271 ?e215))
+(flet ($e608 (<= ?e148 ?e21))
+(flet ($e609 (distinct ?e13 ?e154))
+(flet ($e610 (<= ?e245 ?e242))
+(flet ($e611 (<= ?e141 ?e236))
+(flet ($e612 (>= ?e7 ?e225))
+(flet ($e613 (< ?e234 ?e37))
+(flet ($e614 (>= ?e11 ?e156))
+(flet ($e615 (= ?e280 ?e229))
+(flet ($e616 (> ?e200 ?e166))
+(flet ($e617 (<= ?e24 ?e137))
+(flet ($e618 (<= ?e197 ?e160))
+(flet ($e619 (<= ?e195 ?e139))
+(flet ($e620 (> ?e150 ?e17))
+(flet ($e621 (> ?e216 ?e173))
+(flet ($e622 (= ?e36 ?e16))
+(flet ($e623 (> ?e18 ?e193))
+(flet ($e624 (< ?e35 ?e150))
+(flet ($e625 (> ?e32 ?e201))
+(flet ($e626 (< ?e187 ?e222))
+(flet ($e627 (< ?e243 ?e262))
+(flet ($e628 (distinct ?e238 ?e12))
+(flet ($e629 (< ?e260 ?e238))
+(flet ($e630 (>= ?e232 ?e29))
+(flet ($e631 (distinct ?e264 ?e179))
+(flet ($e632 (> ?e187 ?e164))
+(flet ($e633 (< ?e148 ?e141))
+(flet ($e634 (= ?e150 ?e28))
+(flet ($e635 (>= ?e278 ?e157))
+(flet ($e636 (<= ?e144 ?e209))
+(flet ($e637 (distinct ?e168 ?e144))
+(flet ($e638 (>= ?e253 ?e153))
+(flet ($e639 (>= ?e22 ?e275))
+(flet ($e640 (= ?e205 ?e140))
+(flet ($e641 (= ?e143 ?e150))
+(flet ($e642 (>= ?e185 ?e157))
+(flet ($e643 (<= ?e261 ?e141))
+(flet ($e644 (distinct ?e279 ?e221))
+(flet ($e645 (< ?e154 ?e246))
+(flet ($e646 (>= ?e267 ?e234))
+(flet ($e647 (< ?e231 ?e195))
+(flet ($e648 (> ?e8 ?e145))
+(flet ($e649 (>= ?e214 ?e222))
+(flet ($e650 (distinct ?e216 ?e162))
+(flet ($e651 (= ?e279 ?e252))
+(flet ($e652 (> ?e254 ?e263))
+(flet ($e653 (= ?e172 ?e257))
+(flet ($e654 (distinct ?e194 ?e27))
+(flet ($e655 (> ?e200 ?e237))
+(flet ($e656 (> ?e5 ?e34))
+(flet ($e657 (> ?e21 ?e233))
+(flet ($e658 (<= ?e163 ?e21))
+(flet ($e659 (>= ?e141 ?e257))
+(flet ($e660 (< ?e24 ?e186))
+(flet ($e661 (distinct ?e6 ?e23))
+(flet ($e662 (xor $e535 $e482))
+(flet ($e663 (if_then_else $e122 $e110 $e605))
+(flet ($e664 (xor $e613 $e305))
+(flet ($e665 (or $e583 $e331))
+(flet ($e666 (or $e528 $e483))
+(flet ($e667 (implies $e397 $e567))
+(flet ($e668 (iff $e309 $e563))
+(flet ($e669 (iff $e417 $e498))
+(flet ($e670 (implies $e73 $e416))
+(flet ($e671 (if_then_else $e670 $e299 $e127))
+(flet ($e672 (or $e443 $e437))
+(flet ($e673 (or $e415 $e367))
+(flet ($e674 (xor $e511 $e662))
+(flet ($e675 (implies $e519 $e647))
+(flet ($e676 (iff $e313 $e494))
+(flet ($e677 (iff $e472 $e648))
+(flet ($e678 (if_then_else $e91 $e533 $e481))
+(flet ($e679 (and $e426 $e492))
+(flet ($e680 (iff $e579 $e92))
+(flet ($e681 (and $e295 $e98))
+(flet ($e682 (and $e606 $e580))
+(flet ($e683 (xor $e70 $e655))
+(flet ($e684 (xor $e573 $e360))
+(flet ($e685 (xor $e94 $e462))
+(flet ($e686 (if_then_else $e304 $e107 $e373))
+(flet ($e687 (if_then_else $e40 $e377 $e636))
+(flet ($e688 (and $e644 $e490))
+(flet ($e689 (not $e476))
+(flet ($e690 (iff $e618 $e522))
+(flet ($e691 (or $e384 $e131))
+(flet ($e692 (implies $e355 $e64))
+(flet ($e693 (iff $e557 $e524))
+(flet ($e694 (and $e640 $e76))
+(flet ($e695 (implies $e600 $e677))
+(flet ($e696 (xor $e466 $e599))
+(flet ($e697 (implies $e103 $e585))
+(flet ($e698 (and $e427 $e322))
+(flet ($e699 (or $e635 $e635))
+(flet ($e700 (or $e58 $e403))
+(flet ($e701 (or $e81 $e508))
+(flet ($e702 (and $e393 $e602))
+(flet ($e703 (or $e702 $e653))
+(flet ($e704 (iff $e671 $e111))
+(flet ($e705 (implies $e491 $e641))
+(flet ($e706 (and $e66 $e394))
+(flet ($e707 (if_then_else $e97 $e514 $e500))
+(flet ($e708 (xor $e119 $e69))
+(flet ($e709 (implies $e338 $e532))
+(flet ($e710 (if_then_else $e592 $e521 $e609))
+(flet ($e711 (implies $e421 $e382))
+(flet ($e712 (if_then_else $e290 $e601 $e74))
+(flet ($e713 (xor $e630 $e400))
+(flet ($e714 (not $e633))
+(flet ($e715 (implies $e547 $e402))
+(flet ($e716 (xor $e682 $e666))
+(flet ($e717 (if_then_else $e631 $e559 $e368))
+(flet ($e718 (and $e429 $e621))
+(flet ($e719 (xor $e344 $e345))
+(flet ($e720 (implies $e708 $e652))
+(flet ($e721 (implies $e625 $e525))
+(flet ($e722 (implies $e61 $e48))
+(flet ($e723 (implies $e63 $e375))
+(flet ($e724 (if_then_else $e538 $e669 $e475))
+(flet ($e725 (or $e380 $e319))
+(flet ($e726 (not $e350))
+(flet ($e727 (and $e710 $e485))
+(flet ($e728 (and $e55 $e546))
+(flet ($e729 (if_then_else $e622 $e52 $e288))
+(flet ($e730 (if_then_else $e450 $e463 $e712))
+(flet ($e731 (or $e335 $e575))
+(flet ($e732 (xor $e315 $e723))
+(flet ($e733 (iff $e703 $e449))
+(flet ($e734 (iff $e470 $e370))
+(flet ($e735 (and $e428 $e300))
+(flet ($e736 (xor $e617 $e100))
+(flet ($e737 (not $e79))
+(flet ($e738 (if_then_else $e49 $e623 $e728))
+(flet ($e739 (iff $e627 $e726))
+(flet ($e740 (if_then_else $e354 $e109 $e739))
+(flet ($e741 (not $e624))
+(flet ($e742 (not $e297))
+(flet ($e743 (xor $e326 $e693))
+(flet ($e744 (not $e283))
+(flet ($e745 (and $e517 $e332))
+(flet ($e746 (iff $e383 $e527))
+(flet ($e747 (not $e542))
+(flet ($e748 (and $e534 $e104))
+(flet ($e749 (xor $e503 $e445))
+(flet ($e750 (not $e530))
+(flet ($e751 (iff $e607 $e414))
+(flet ($e752 (xor $e308 $e420))
+(flet ($e753 (or $e128 $e749))
+(flet ($e754 (not $e748))
+(flet ($e755 (iff $e401 $e510))
+(flet ($e756 (and $e461 $e320))
+(flet ($e757 (iff $e289 $e432))
+(flet ($e758 (xor $e425 $e597))
+(flet ($e759 (iff $e419 $e358))
+(flet ($e760 (and $e311 $e136))
+(flet ($e761 (or $e405 $e336))
+(flet ($e762 (not $e610))
+(flet ($e763 (iff $e643 $e745))
+(flet ($e764 (if_then_else $e406 $e378 $e477))
+(flet ($e765 (xor $e385 $e339))
+(flet ($e766 (and $e608 $e337))
+(flet ($e767 (implies $e112 $e134))
+(flet ($e768 (iff $e619 $e711))
+(flet ($e769 (iff $e764 $e505))
+(flet ($e770 (xor $e353 $e560))
+(flet ($e771 (if_then_else $e471 $e691 $e341))
+(flet ($e772 (implies $e312 $e330))
+(flet ($e773 (iff $e321 $e347))
+(flet ($e774 (implies $e386 $e284))
+(flet ($e775 (or $e77 $e679))
+(flet ($e776 (implies $e760 $e446))
+(flet ($e777 (or $e550 $e616))
+(flet ($e778 (xor $e578 $e581))
+(flet ($e779 (implies $e99 $e453))
+(flet ($e780 (xor $e348 $e696))
+(flet ($e781 (iff $e56 $e80))
+(flet ($e782 (iff $e86 $e499))
+(flet ($e783 (iff $e504 $e504))
+(flet ($e784 (iff $e755 $e755))
+(flet ($e785 (if_then_else $e771 $e294 $e699))
+(flet ($e786 (iff $e441 $e282))
+(flet ($e787 (not $e493))
+(flet ($e788 (xor $e132 $e554))
+(flet ($e789 (and $e440 $e661))
+(flet ($e790 (if_then_else $e649 $e412 $e706))
+(flet ($e791 (not $e431))
+(flet ($e792 (if_then_else $e660 $e464 $e84))
+(flet ($e793 (if_then_else $e572 $e133 $e513))
+(flet ($e794 (and $e790 $e590))
+(flet ($e795 (implies $e460 $e707))
+(flet ($e796 (if_then_else $e478 $e775 $e303))
+(flet ($e797 (xor $e361 $e317))
+(flet ($e798 (iff $e410 $e487))
+(flet ($e799 (or $e125 $e526))
+(flet ($e800 (and $e314 $e584))
+(flet ($e801 (if_then_else $e740 $e374 $e604))
+(flet ($e802 (implies $e657 $e362))
+(flet ($e803 (xor $e752 $e701))
+(flet ($e804 (implies $e737 $e444))
+(flet ($e805 (iff $e593 $e328))
+(flet ($e806 (or $e88 $e596))
+(flet ($e807 (and $e665 $e113))
+(flet ($e808 (implies $e455 $e743))
+(flet ($e809 (iff $e413 $e589))
+(flet ($e810 (xor $e796 $e409))
+(flet ($e811 (if_then_else $e41 $e458 $e95))
+(flet ($e812 (and $e85 $e770))
+(flet ($e813 (or $e761 $e759))
+(flet ($e814 (implies $e645 $e800))
+(flet ($e815 (iff $e484 $e496))
+(flet ($e816 (and $e509 $e459))
+(flet ($e817 (iff $e587 $e451))
+(flet ($e818 (xor $e286 $e766))
+(flet ($e819 (and $e72 $e468))
+(flet ($e820 (if_then_else $e799 $e574 $e518))
+(flet ($e821 (xor $e78 $e747))
+(flet ($e822 (iff $e556 $e83))
+(flet ($e823 (xor $e821 $e686))
+(flet ($e824 (or $e454 $e105))
+(flet ($e825 (or $e730 $e60))
+(flet ($e826 (implies $e555 $e722))
+(flet ($e827 (xor $e804 $e285))
+(flet ($e828 (if_then_else $e827 $e501 $e817))
+(flet ($e829 (xor $e714 $e287))
+(flet ($e830 (implies $e791 $e719))
+(flet ($e831 (not $e552))
+(flet ($e832 (xor $e758 $e126))
+(flet ($e833 (if_then_else $e480 $e135 $e831))
+(flet ($e834 (not $e340))
+(flet ($e835 (and $e772 $e489))
+(flet ($e836 (implies $e325 $e296))
+(flet ($e837 (iff $e334 $e474))
+(flet ($e838 (xor $e545 $e598))
+(flet ($e839 (and $e529 $e43))
+(flet ($e840 (if_then_else $e62 $e632 $e318))
+(flet ($e841 (not $e45))
+(flet ($e842 (xor $e681 $e399))
+(flet ($e843 (and $e841 $e434))
+(flet ($e844 (or $e751 $e473))
+(flet ($e845 (not $e675))
+(flet ($e846 (iff $e811 $e828))
+(flet ($e847 (iff $e833 $e698))
+(flet ($e848 (iff $e736 $e548))
+(flet ($e849 (if_then_else $e773 $e614 $e124))
+(flet ($e850 (or $e65 $e808))
+(flet ($e851 (not $e577))
+(flet ($e852 (not $e561))
+(flet ($e853 (xor $e820 $e685))
+(flet ($e854 (if_then_else $e465 $e615 $e418))
+(flet ($e855 (if_then_else $e502 $e720 $e502))
+(flet ($e856 (if_then_else $e678 $e830 $e549))
+(flet ($e857 (and $e807 $e333))
+(flet ($e858 (if_then_else $e520 $e544 $e568))
+(flet ($e859 (if_then_else $e68 $e120 $e683))
+(flet ($e860 (if_then_else $e650 $e89 $e302))
+(flet ($e861 (implies $e694 $e753))
+(flet ($e862 (implies $e852 $e364))
+(flet ($e863 (and $e688 $e789))
+(flet ($e864 (iff $e849 $e778))
+(flet ($e865 (not $e784))
+(flet ($e866 (iff $e734 $e674))
+(flet ($e867 (not $e310))
+(flet ($e868 (or $e369 $e690))
+(flet ($e869 (not $e781))
+(flet ($e870 (or $e329 $e727))
+(flet ($e871 (implies $e379 $e642))
+(flet ($e872 (iff $e697 $e298))
+(flet ($e873 (if_then_else $e672 $e356 $e537))
+(flet ($e874 (if_then_else $e780 $e447 $e651))
+(flet ($e875 (iff $e343 $e634))
+(flet ($e876 (xor $e357 $e123))
+(flet ($e877 (not $e301))
+(flet ($e878 (iff $e87 $e591))
+(flet ($e879 (implies $e576 $e507))
+(flet ($e880 (implies $e855 $e130))
+(flet ($e881 (iff $e435 $e858))
+(flet ($e882 (not $e724))
+(flet ($e883 (implies $e565 $e704))
+(flet ($e884 (xor $e93 $e801))
+(flet ($e885 (xor $e809 $e856))
+(flet ($e886 (if_then_else $e531 $e850 $e664))
+(flet ($e887 (implies $e543 $e59))
+(flet ($e888 (iff $e869 $e436))
+(flet ($e889 (or $e558 $e293))
+(flet ($e890 (not $e844))
+(flet ($e891 (and $e388 $e536))
+(flet ($e892 (or $e351 $e806))
+(flet ($e893 (not $e765))
+(flet ($e894 (xor $e395 $e71))
+(flet ($e895 (not $e783))
+(flet ($e896 (or $e129 $e731))
+(flet ($e897 (or $e861 $e430))
+(flet ($e898 (and $e848 $e121))
+(flet ($e899 (xor $e667 $e540))
+(flet ($e900 (xor $e407 $e342))
+(flet ($e901 (if_then_else $e788 $e656 $e654))
+(flet ($e902 (xor $e117 $e716))
+(flet ($e903 (iff $e44 $e352))
+(flet ($e904 (or $e404 $e769))
+(flet ($e905 (if_then_else $e626 $e116 $e569))
+(flet ($e906 (and $e879 $e822))
+(flet ($e907 (if_then_else $e469 $e564 $e768))
+(flet ($e908 (and $e819 $e570))
+(flet ($e909 (if_then_else $e815 $e840 $e324))
+(flet ($e910 (and $e777 $e735))
+(flet ($e911 (not $e767))
+(flet ($e912 (or $e911 $e887))
+(flet ($e913 (iff $e376 $e725))
+(flet ($e914 (implies $e896 $e700))
+(flet ($e915 (implies $e744 $e878))
+(flet ($e916 (xor $e825 $e390))
+(flet ($e917 (and $e659 $e715))
+(flet ($e918 (implies $e909 $e842))
+(flet ($e919 (iff $e442 $e67))
+(flet ($e920 (iff $e843 $e512))
+(flet ($e921 (implies $e515 $e762))
+(flet ($e922 (iff $e779 $e506))
+(flet ($e923 (xor $e291 $e687))
+(flet ($e924 (implies $e611 $e327))
+(flet ($e925 (or $e898 $e757))
+(flet ($e926 (implies $e366 $e882))
+(flet ($e927 (if_then_else $e884 $e883 $e588))
+(flet ($e928 (if_then_else $e857 $e786 $e307))
+(flet ($e929 (or $e673 $e323))
+(flet ($e930 (implies $e422 $e912))
+(flet ($e931 (and $e586 $e776))
+(flet ($e932 (implies $e346 $e497))
+(flet ($e933 (xor $e516 $e495))
+(flet ($e934 (xor $e90 $e851))
+(flet ($e935 (xor $e391 $e733))
+(flet ($e936 (or $e281 $e836))
+(flet ($e937 (not $e899))
+(flet ($e938 (or $e82 $e467))
+(flet ($e939 (or $e894 $e867))
+(flet ($e940 (xor $e371 $e53))
+(flet ($e941 (implies $e924 $e709))
+(flet ($e942 (iff $e918 $e864))
+(flet ($e943 (not $e51))
+(flet ($e944 (not $e389))
+(flet ($e945 (and $e927 $e108))
+(flet ($e946 (xor $e96 $e892))
+(flet ($e947 (if_then_else $e306 $e39 $e363))
+(flet ($e948 (xor $e845 $e551))
+(flet ($e949 (if_then_else $e900 $e921 $e888))
+(flet ($e950 (implies $e865 $e928))
+(flet ($e951 (xor $e908 $e794))
+(flet ($e952 (iff $e539 $e793))
+(flet ($e953 (not $e922))
+(flet ($e954 (and $e891 $e562))
+(flet ($e955 (or $e689 $e742))
+(flet ($e956 (not $e746))
+(flet ($e957 (or $e398 $e832))
+(flet ($e958 (not $e646))
+(flet ($e959 (iff $e457 $e486))
+(flet ($e960 (or $e763 $e738))
+(flet ($e961 (or $e392 $e895))
+(flet ($e962 (or $e903 $e456))
+(flet ($e963 (if_then_else $e349 $e948 $e946))
+(flet ($e964 (implies $e873 $e316))
+(flet ($e965 (implies $e962 $e756))
+(flet ($e966 (and $e47 $e860))
+(flet ($e967 (or $e925 $e680))
+(flet ($e968 (implies $e424 $e46))
+(flet ($e969 (implies $e810 $e782))
+(flet ($e970 (or $e387 $e741))
+(flet ($e971 (not $e692))
+(flet ($e972 (implies $e705 $e805))
+(flet ($e973 (implies $e951 $e957))
+(flet ($e974 (and $e847 $e823))
+(flet ($e975 (not $e488))
+(flet ($e976 (and $e965 $e876))
+(flet ($e977 (iff $e816 $e787))
+(flet ($e978 (or $e938 $e658))
+(flet ($e979 (implies $e838 $e877))
+(flet ($e980 (iff $e663 $e875))
+(flet ($e981 (iff $e929 $e863))
+(flet ($e982 (if_then_else $e880 $e114 $e115))
+(flet ($e983 (and $e834 $e774))
+(flet ($e984 (if_then_else $e926 $e906 $e920))
+(flet ($e985 (if_then_else $e721 $e978 $e955))
+(flet ($e986 (not $e813))
+(flet ($e987 (xor $e853 $e885))
+(flet ($e988 (iff $e954 $e824))
+(flet ($e989 (iff $e713 $e594))
+(flet ($e990 (xor $e916 $e684))
+(flet ($e991 (if_then_else $e907 $e785 $e960))
+(flet ($e992 (and $e961 $e944))
+(flet ($e993 (and $e54 $e901))
+(flet ($e994 (xor $e932 $e886))
+(flet ($e995 (and $e902 $e479))
+(flet ($e996 (if_then_else $e976 $e949 $e846))
+(flet ($e997 (or $e812 $e859))
+(flet ($e998 (not $e966))
+(flet ($e999 (implies $e553 $e612))
+(flet ($e1000 (iff $e930 $e695))
+(flet ($e1001 (not $e939))
+(flet ($e1002 (xor $e50 $e1000))
+(flet ($e1003 (xor $e953 $e802))
+(flet ($e1004 (implies $e595 $e934))
+(flet ($e1005 (if_then_else $e975 $e981 $e359))
+(flet ($e1006 (if_then_else $e292 $e996 $e676))
+(flet ($e1007 (iff $e433 $e839))
+(flet ($e1008 (or $e1005 $e889))
+(flet ($e1009 (xor $e999 $e106))
+(flet ($e1010 (if_then_else $e1006 $e947 $e989))
+(flet ($e1011 (not $e1004))
+(flet ($e1012 (xor $e872 $e871))
+(flet ($e1013 (implies $e931 $e991))
+(flet ($e1014 (xor $e923 $e717))
+(flet ($e1015 (if_then_else $e890 $e984 $e438))
+(flet ($e1016 (and $e973 $e990))
+(flet ($e1017 (iff $e792 $e874))
+(flet ($e1018 (not $e732))
+(flet ($e1019 (or $e959 $e972))
+(flet ($e1020 (implies $e993 $e582))
+(flet ($e1021 (if_then_else $e987 $e950 $e910))
+(flet ($e1022 (implies $e963 $e980))
+(flet ($e1023 (and $e936 $e893))
+(flet ($e1024 (not $e854))
+(flet ($e1025 (if_then_else $e566 $e571 $e829))
+(flet ($e1026 (xor $e997 $e943))
+(flet ($e1027 (and $e408 $e933))
+(flet ($e1028 (implies $e803 $e423))
+(flet ($e1029 (and $e1013 $e970))
+(flet ($e1030 (iff $e118 $e937))
+(flet ($e1031 (iff $e814 $e995))
+(flet ($e1032 (or $e964 $e974))
+(flet ($e1033 (implies $e620 $e985))
+(flet ($e1034 (if_then_else $e915 $e75 $e983))
+(flet ($e1035 (iff $e866 $e603))
+(flet ($e1036 (xor $e1020 $e718))
+(flet ($e1037 (iff $e904 $e754))
+(flet ($e1038 (iff $e1026 $e396))
+(flet ($e1039 (implies $e729 $e1014))
+(flet ($e1040 (or $e982 $e1011))
+(flet ($e1041 (or $e971 $e637))
+(flet ($e1042 (xor $e1017 $e969))
+(flet ($e1043 (iff $e1029 $e979))
+(flet ($e1044 (or $e952 $e1035))
+(flet ($e1045 (xor $e541 $e1008))
+(flet ($e1046 (or $e1022 $e101))
+(flet ($e1047 (and $e1042 $e1012))
+(flet ($e1048 (or $e967 $e998))
+(flet ($e1049 (or $e826 $e1036))
+(flet ($e1050 (not $e365))
+(flet ($e1051 (or $e1050 $e1027))
+(flet ($e1052 (and $e1025 $e942))
+(flet ($e1053 (or $e638 $e411))
+(flet ($e1054 (iff $e1040 $e881))
+(flet ($e1055 (or $e1023 $e1001))
+(flet ($e1056 (not $e941))
+(flet ($e1057 (iff $e968 $e668))
+(flet ($e1058 (and $e1015 $e1007))
+(flet ($e1059 (if_then_else $e1019 $e102 $e919))
+(flet ($e1060 (implies $e994 $e1038))
+(flet ($e1061 (not $e992))
+(flet ($e1062 (not $e977))
+(flet ($e1063 (not $e837))
+(flet ($e1064 (and $e1048 $e913))
+(flet ($e1065 (implies $e1055 $e1047))
+(flet ($e1066 (or $e1058 $e439))
+(flet ($e1067 (xor $e1037 $e897))
+(flet ($e1068 (and $e956 $e1064))
+(flet ($e1069 (if_then_else $e797 $e940 $e868))
+(flet ($e1070 (if_then_else $e639 $e1056 $e1002))
+(flet ($e1071 (or $e1052 $e945))
+(flet ($e1072 (iff $e1067 $e1043))
+(flet ($e1073 (implies $e1059 $e57))
+(flet ($e1074 (implies $e870 $e818))
+(flet ($e1075 (xor $e1041 $e1072))
+(flet ($e1076 (not $e935))
+(flet ($e1077 (implies $e1049 $e1070))
+(flet ($e1078 (and $e1039 $e1071))
+(flet ($e1079 (if_then_else $e862 $e1076 $e1075))
+(flet ($e1080 (implies $e1061 $e1054))
+(flet ($e1081 (xor $e905 $e986))
+(flet ($e1082 (and $e1030 $e1060))
+(flet ($e1083 (not $e1009))
+(flet ($e1084 (or $e1046 $e1016))
+(flet ($e1085 (or $e1084 $e1028))
+(flet ($e1086 (not $e750))
+(flet ($e1087 (xor $e42 $e1085))
+(flet ($e1088 (implies $e1063 $e628))
+(flet ($e1089 (and $e1068 $e448))
+(flet ($e1090 (xor $e1057 $e1089))
+(flet ($e1091 (if_then_else $e1033 $e1021 $e1034))
+(flet ($e1092 (not $e1045))
+(flet ($e1093 (iff $e1087 $e1044))
+(flet ($e1094 (or $e1086 $e1073))
+(flet ($e1095 (not $e1032))
+(flet ($e1096 (iff $e1091 $e1074))
+(flet ($e1097 (implies $e795 $e1096))
+(flet ($e1098 (and $e1079 $e1077))
+(flet ($e1099 (not $e1092))
+(flet ($e1100 (implies $e1018 $e1081))
+(flet ($e1101 (iff $e1066 $e1098))
+(flet ($e1102 (xor $e1024 $e1062))
+(flet ($e1103 (and $e1090 $e523))
+(flet ($e1104 (and $e988 $e372))
+(flet ($e1105 (if_then_else $e1065 $e1100 $e1083))
+(flet ($e1106 (xor $e629 $e1069))
+(flet ($e1107 (xor $e1010 $e1003))
+(flet ($e1108 (and $e381 $e1107))
+(flet ($e1109 (or $e452 $e835))
+(flet ($e1110 (if_then_else $e1104 $e1101 $e1102))
+(flet ($e1111 (if_then_else $e1095 $e1108 $e798))
+(flet ($e1112 (if_then_else $e914 $e1105 $e1093))
+(flet ($e1113 (or $e1080 $e1103))
+(flet ($e1114 (iff $e958 $e1051))
+(flet ($e1115 (and $e1078 $e1078))
+(flet ($e1116 (iff $e917 $e1031))
+(flet ($e1117 (implies $e1082 $e1112))
+(flet ($e1118 (iff $e1116 $e1109))
+(flet ($e1119 (xor $e1113 $e1099))
+(flet ($e1120 (xor $e1115 $e1094))
+(flet ($e1121 (xor $e1114 $e1097))
+(flet ($e1122 (implies $e1118 $e1117))
+(flet ($e1123 (xor $e1119 $e1119))
+(flet ($e1124 (implies $e1123 $e1123))
+(flet ($e1125 (xor $e1122 $e1122))
+(flet ($e1126 (if_then_else $e1120 $e1106 $e1125))
+(flet ($e1127 (iff $e1053 $e1088))
+(flet ($e1128 (implies $e1121 $e1124))
+(flet ($e1129 (or $e1111 $e1111))
+(flet ($e1130 (xor $e1127 $e1129))
+(flet ($e1131 (not $e1126))
+(flet ($e1132 (xor $e1110 $e1130))
+(flet ($e1133 (implies $e1128 $e1128))
+(flet ($e1134 (iff $e1133 $e1133))
+(flet ($e1135 (if_then_else $e1131 $e1131 $e1132))
+(flet ($e1136 (iff $e1134 $e1134))
+(flet ($e1137 (iff $e1135 $e1135))
+(flet ($e1138 (or $e1136 $e1136))
+(flet ($e1139 (and $e1138 $e1138))
+(flet ($e1140 (not $e1137))
+(flet ($e1141 (xor $e1140 $e1139))
+$e1141
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) [...]
+
diff --git a/test/regress/regress2/bug148.smt b/test/regress/regress2/bug148.smt
new file mode 100644
index 0000000..a07dc1b
--- /dev/null
+++ b/test/regress/regress2/bug148.smt
@@ -0,0 +1,147 @@
+(benchmark fuzzsmt
+:logic QF_LRA
+:status sat
+:extrafuns ((v0 Real))
+:formula
+(let (?e1 12)
+(let (?e2 1)
+(let (?e3 (~ v0))
+(let (?e4 (+ v0 v0))
+(let (?e5 (/ ?e1 ?e1))
+(let (?e6 (+ ?e4 ?e3))
+(let (?e7 (* ?e6 ?e1))
+(let (?e8 (- ?e3 ?e6))
+(let (?e9 (~ ?e8))
+(let (?e10 (+ ?e8 ?e5))
+(let (?e11 (/ ?e2 (~ ?e1)))
+(flet ($e12 (> ?e7 ?e9))
+(flet ($e13 (< ?e4 ?e6))
+(flet ($e14 (distinct ?e9 ?e3))
+(flet ($e15 (<= ?e5 ?e8))
+(flet ($e16 (<= ?e8 ?e8))
+(flet ($e17 (distinct ?e5 v0))
+(flet ($e18 (>= ?e10 v0))
+(flet ($e19 (> ?e10 ?e7))
+(flet ($e20 (distinct ?e7 ?e9))
+(flet ($e21 (<= ?e6 ?e3))
+(flet ($e22 (<= ?e11 ?e4))
+(let (?e23 (ite $e12 ?e3 ?e4))
+(let (?e24 (ite $e19 ?e3 ?e11))
+(let (?e25 (ite $e20 v0 ?e5))
+(let (?e26 (ite $e18 ?e8 v0))
+(let (?e27 (ite $e19 ?e7 ?e8))
+(let (?e28 (ite $e20 ?e10 v0))
+(let (?e29 (ite $e13 ?e9 ?e3))
+(let (?e30 (ite $e20 ?e6 ?e6))
+(let (?e31 (ite $e20 ?e8 ?e24))
+(let (?e32 (ite $e21 ?e10 ?e4))
+(let (?e33 (ite $e18 ?e5 ?e10))
+(let (?e34 (ite $e16 ?e27 ?e5))
+(let (?e35 (ite $e13 ?e5 ?e26))
+(let (?e36 (ite $e19 ?e7 ?e6))
+(let (?e37 (ite $e15 ?e30 ?e31))
+(let (?e38 (ite $e17 ?e28 ?e37))
+(let (?e39 (ite $e22 ?e28 ?e9))
+(let (?e40 (ite $e14 ?e31 ?e28))
+(flet ($e41 (<= ?e4 ?e34))
+(flet ($e42 (<= ?e3 ?e3))
+(flet ($e43 (<= ?e31 ?e37))
+(flet ($e44 (distinct ?e28 ?e36))
+(flet ($e45 (>= v0 ?e26))
+(flet ($e46 (= ?e24 ?e30))
+(flet ($e47 (< ?e38 ?e32))
+(flet ($e48 (> ?e6 ?e29))
+(flet ($e49 (<= ?e25 ?e25))
+(flet ($e50 (> ?e30 ?e30))
+(flet ($e51 (> ?e11 v0))
+(flet ($e52 (<= ?e10 ?e31))
+(flet ($e53 (>= ?e28 ?e36))
+(flet ($e54 (>= v0 ?e33))
+(flet ($e55 (<= ?e33 ?e26))
+(flet ($e56 (distinct ?e37 ?e5))
+(flet ($e57 (distinct ?e10 ?e39))
+(flet ($e58 (> ?e8 ?e39))
+(flet ($e59 (< ?e24 ?e34))
+(flet ($e60 (<= v0 ?e25))
+(flet ($e61 (< ?e33 ?e31))
+(flet ($e62 (distinct ?e7 ?e25))
+(flet ($e63 (< ?e34 ?e4))
+(flet ($e64 (= ?e27 ?e37))
+(flet ($e65 (> ?e5 ?e30))
+(flet ($e66 (>= ?e11 ?e8))
+(flet ($e67 (> ?e6 ?e31))
+(flet ($e68 (<= ?e4 ?e3))
+(flet ($e69 (> ?e9 ?e37))
+(flet ($e70 (< ?e25 ?e6))
+(flet ($e71 (< ?e40 ?e34))
+(flet ($e72 (< ?e9 ?e29))
+(flet ($e73 (< ?e8 ?e35))
+(flet ($e74 (distinct ?e25 ?e5))
+(flet ($e75 (>= ?e8 ?e7))
+(flet ($e76 (<= ?e38 ?e37))
+(flet ($e77 (> ?e5 ?e39))
+(flet ($e78 (>= ?e34 v0))
+(flet ($e79 (>= ?e11 ?e5))
+(flet ($e80 (>= ?e40 ?e3))
+(flet ($e81 (= ?e23 ?e29))
+(flet ($e82 (implies $e52 $e15))
+(flet ($e83 (implies $e16 $e75))
+(flet ($e84 (or $e22 $e59))
+(flet ($e85 (or $e66 $e63))
+(flet ($e86 (xor $e78 $e43))
+(flet ($e87 (or $e73 $e71))
+(flet ($e88 (if_then_else $e18 $e80 $e55))
+(flet ($e89 (xor $e83 $e54))
+(flet ($e90 (if_then_else $e42 $e88 $e42))
+(flet ($e91 (not $e72))
+(flet ($e92 (or $e49 $e68))
+(flet ($e93 (and $e84 $e51))
+(flet ($e94 (iff $e70 $e19))
+(flet ($e95 (not $e93))
+(flet ($e96 (implies $e82 $e13))
+(flet ($e97 (iff $e69 $e64))
+(flet ($e98 (or $e87 $e76))
+(flet ($e99 (if_then_else $e94 $e20 $e96))
+(flet ($e100 (implies $e46 $e98))
+(flet ($e101 (or $e61 $e90))
+(flet ($e102 (or $e92 $e74))
+(flet ($e103 (implies $e97 $e62))
+(flet ($e104 (and $e89 $e77))
+(flet ($e105 (iff $e48 $e67))
+(flet ($e106 (if_then_else $e14 $e14 $e103))
+(flet ($e107 (xor $e58 $e102))
+(flet ($e108 (implies $e99 $e86))
+(flet ($e109 (or $e57 $e21))
+(flet ($e110 (implies $e12 $e108))
+(flet ($e111 (and $e17 $e101))
+(flet ($e112 (or $e107 $e81))
+(flet ($e113 (and $e44 $e44))
+(flet ($e114 (iff $e41 $e111))
+(flet ($e115 (implies $e60 $e56))
+(flet ($e116 (and $e79 $e115))
+(flet ($e117 (or $e114 $e53))
+(flet ($e118 (xor $e110 $e95))
+(flet ($e119 (xor $e104 $e105))
+(flet ($e120 (and $e117 $e85))
+(flet ($e121 (not $e50))
+(flet ($e122 (if_then_else $e120 $e47 $e119))
+(flet ($e123 (if_then_else $e112 $e100 $e91))
+(flet ($e124 (and $e45 $e121))
+(flet ($e125 (implies $e118 $e123))
+(flet ($e126 (xor $e106 $e113))
+(flet ($e127 (xor $e122 $e65))
+(flet ($e128 (implies $e127 $e116))
+(flet ($e129 (not $e125))
+(flet ($e130 (iff $e128 $e124))
+(flet ($e131 (and $e109 $e109))
+(flet ($e132 (and $e129 $e129))
+(flet ($e133 (xor $e131 $e130))
+(flet ($e134 (iff $e126 $e133))
+(flet ($e135 (implies $e132 $e132))
+(flet ($e136 (or $e134 $e134))
+(flet ($e137 (implies $e136 $e136))
+(flet ($e138 (or $e135 $e135))
+(flet ($e139 (implies $e138 $e137))
+$e139
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+
diff --git a/test/regress/regress2/bug394.smt2 b/test/regress/regress2/bug394.smt2
new file mode 100644
index 0000000..99e19e7
--- /dev/null
+++ b/test/regress/regress2/bug394.smt2
@@ -0,0 +1,1728 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+;(set-option :produce-unsat-cores true)
+(set-option :print-success false)
+(set-info :smt-lib-version 2.0)
+;(set-option :produce-models true)
+(set-logic ALL_SUPPORTED)
+; done setting options
+
+; Boogie universal background predicate
+; Copyright (c) 2004-2010, Microsoft Corp.
+(set-info :category "industrial")
+(declare-sort |T at U| 0)
+(declare-sort |T at T| 0)
+(declare-fun int_div (Int Int) Int)
+(declare-fun int_mod (Int Int) Int)
+(declare-fun UOrdering2 (|T at U| |T at U|) Bool)
+(declare-fun UOrdering3 (|T at T| |T at U| |T at U|) Bool)
+
+(declare-fun group_size_z () (_ BitVec 32))
+(declare-fun num_groups_z () (_ BitVec 32))
+(declare-fun group_size_x () (_ BitVec 32))
+(declare-fun group_size_y () (_ BitVec 32))
+(declare-fun num_groups_x () (_ BitVec 32))
+(declare-fun num_groups_y () (_ BitVec 32))
+(declare-fun ControlFlow (Int Int) Int)
+(declare-fun %lbl%+823 () Bool)
+(declare-fun $ret$1 at 0 () (_ BitVec 32))
+(declare-fun _P$1 () Bool)
+(declare-fun $blockIdy$1 () (_ BitVec 32))
+(declare-fun $blockWidth$1 () (_ BitVec 32))
+(declare-fun $localIdy$1 () (_ BitVec 32))
+(declare-fun $globalWidth$1 () (_ BitVec 32))
+(declare-fun $blockIdx$1 () (_ BitVec 32))
+(declare-fun $localIdx$1 () (_ BitVec 32))
+(declare-fun $ret$1 () (_ BitVec 32))
+(declare-fun $ret$2 at 0 () (_ BitVec 32))
+(declare-fun _P$2 () Bool)
+(declare-fun $blockIdy$2 () (_ BitVec 32))
+(declare-fun $blockWidth$2 () (_ BitVec 32))
+(declare-fun $localIdy$2 () (_ BitVec 32))
+(declare-fun $globalWidth$2 () (_ BitVec 32))
+(declare-fun $blockIdx$2 () (_ BitVec 32))
+(declare-fun $localIdx$2 () (_ BitVec 32))
+(declare-fun $ret$2 () (_ BitVec 32))
+(declare-fun %lbl%@10729 () Bool)
+(declare-fun _b29 () Bool)
+(declare-fun %lbl%@10737 () Bool)
+(declare-fun _b30 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$output$1 () Bool)
+(declare-fun %lbl%@10745 () Bool)
+(declare-fun _b31 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$output$1 () Bool)
+(declare-fun %lbl%@10753 () Bool)
+(declare-fun _b32 () Bool)
+(declare-fun _WRITE_OFFSET_$$output$1 () (_ BitVec 32))
+(declare-fun local_id_x$1 () (_ BitVec 32))
+(declare-fun %lbl%@10767 () Bool)
+(declare-fun _b33 () Bool)
+(declare-fun _READ_OFFSET_$$output$1 () (_ BitVec 32))
+(declare-fun %lbl%@10781 () Bool)
+(declare-fun _b34 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$input$1 () Bool)
+(declare-fun %lbl%@10789 () Bool)
+(declare-fun _b35 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$input$1 () Bool)
+(declare-fun %lbl%@10797 () Bool)
+(declare-fun _b36 () Bool)
+(declare-fun _WRITE_OFFSET_$$input$1 () (_ BitVec 32))
+(declare-fun %lbl%@10811 () Bool)
+(declare-fun _b37 () Bool)
+(declare-fun _READ_OFFSET_$$input$1 () (_ BitVec 32))
+(declare-fun %lbl%@10825 () Bool)
+(declare-fun _b38 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$dct8x8$1 () Bool)
+(declare-fun %lbl%@10833 () Bool)
+(declare-fun _b39 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$dct8x8$1 () Bool)
+(declare-fun %lbl%@10841 () Bool)
+(declare-fun _b40 () Bool)
+(declare-fun _WRITE_OFFSET_$$dct8x8$1 () (_ BitVec 32))
+(declare-fun %lbl%@10855 () Bool)
+(declare-fun _b41 () Bool)
+(declare-fun _READ_OFFSET_$$dct8x8$1 () (_ BitVec 32))
+(declare-fun %lbl%@10869 () Bool)
+(declare-fun _b42 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$inter$1 () Bool)
+(declare-fun %lbl%@10877 () Bool)
+(declare-fun _b43 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$inter$1 () Bool)
+(declare-fun %lbl%@10885 () Bool)
+(declare-fun _b44 () Bool)
+(declare-fun _WRITE_OFFSET_$$inter$1 () (_ BitVec 32))
+(declare-fun %lbl%@10899 () Bool)
+(declare-fun _b45 () Bool)
+(declare-fun _READ_OFFSET_$$inter$1 () (_ BitVec 32))
+(declare-fun %lbl%+9318 () Bool)
+(declare-fun group_id_x$1 () (_ BitVec 32))
+(declare-fun group_id_x$2 () (_ BitVec 32))
+(declare-fun local_id_x$2 () (_ BitVec 32))
+(declare-fun group_id_y$1 () (_ BitVec 32))
+(declare-fun group_id_y$2 () (_ BitVec 32))
+(declare-fun local_id_y$1 () (_ BitVec 32))
+(declare-fun local_id_y$2 () (_ BitVec 32))
+(declare-fun group_id_z$1 () (_ BitVec 32))
+(declare-fun group_id_z$2 () (_ BitVec 32))
+(declare-fun local_id_z$1 () (_ BitVec 32))
+(declare-fun local_id_z$2 () (_ BitVec 32))
+(declare-fun _b0 () Bool)
+(declare-fun _b1 () Bool)
+(declare-fun _b2 () Bool)
+(declare-fun _b3 () Bool)
+(declare-fun _b4 () Bool)
+(declare-fun _b5 () Bool)
+(declare-fun _b6 () Bool)
+(declare-fun _b7 () Bool)
+(declare-fun _b8 () Bool)
+(declare-fun _b9 () Bool)
+(declare-fun _b10 () Bool)
+(declare-fun _b11 () Bool)
+(declare-fun _b12 () Bool)
+(declare-fun _b13 () Bool)
+(declare-fun _b14 () Bool)
+(declare-fun _b15 () Bool)
+(declare-fun _b16 () Bool)
+(declare-fun _b17 () Bool)
+(declare-fun _b18 () Bool)
+(declare-fun _b19 () Bool)
+(declare-fun _b20 () Bool)
+(declare-fun _b21 () Bool)
+(declare-fun _b22 () Bool)
+(declare-fun _b23 () Bool)
+(declare-fun _b24 () Bool)
+(declare-fun _b25 () Bool)
+(declare-fun _b26 () Bool)
+(declare-fun _b27 () Bool)
+(declare-fun _b28 () Bool)
+(assert (not (= (ite (= group_size_z #x00000001) #b1 #b0) #b0)))
+(assert (not (= (ite (= num_groups_z #x00000001) #b1 #b0) #b0)))
+(assert (not (= (ite (= group_size_x #x00000008) #b1 #b0) #b0)))
+(assert (not (= (ite (= group_size_y #x00000008) #b1 #b0) #b0)))
+(assert (not (= (ite (= num_groups_x #x00000008) #b1 #b0) #b0)))
+(assert (not (= (ite (= num_groups_y #x00000008) #b1 #b0) #b0)))
+(define-fun $getIdx () Bool (=> (= (ControlFlow 0 0) 9318) (let (($entry_correct (=> (and %lbl%+823 true) (=> (and
+(= $ret$1 at 0 (ite _P$1 (bvadd (bvmul (bvadd (bvmul $blockIdy$1 $blockWidth$1) $localIdy$1) $globalWidth$1) (bvadd (bvmul $blockIdx$1 $blockWidth$1) $localIdx$1)) $ret$1))
+(= $ret$2 at 0 (ite _P$2 (bvadd (bvmul (bvadd (bvmul $blockIdy$2 $blockWidth$2) $localIdy$2) $globalWidth$2) (bvadd (bvmul $blockIdx$2 $blockWidth$2) $localIdx$2)) $ret$2))) (and
+(or %lbl%@10729 (=> (= (ControlFlow 0 823) (- 0 10729)) (=> _b29 (= $ret$1 at 0 $ret$2 at 0))))
+(=> (=> _b29 (= $ret$1 at 0 $ret$2 at 0)) (and
+(or %lbl%@10737 (=> (= (ControlFlow 0 823) (- 0 10737)) (=> _b30 (not _READ_HAS_OCCURRED_$$output$1))))
+(=> (=> _b30 (not _READ_HAS_OCCURRED_$$output$1)) (and
+(or %lbl%@10745 (=> (= (ControlFlow 0 823) (- 0 10745)) (=> _b31 (not _WRITE_HAS_OCCURRED_$$output$1))))
+(=> (=> _b31 (not _WRITE_HAS_OCCURRED_$$output$1)) (and
+(or %lbl%@10753 (=> (= (ControlFlow 0 823) (- 0 10753)) (=> _b32 (=> _WRITE_HAS_OCCURRED_$$output$1 (= _WRITE_OFFSET_$$output$1 local_id_x$1)))))
+(=> (=> _b32 (=> _WRITE_HAS_OCCURRED_$$output$1 (= _WRITE_OFFSET_$$output$1 local_id_x$1))) (and
+(or %lbl%@10767 (=> (= (ControlFlow 0 823) (- 0 10767)) (=> _b33 (=> _READ_HAS_OCCURRED_$$output$1 (= _READ_OFFSET_$$output$1 local_id_x$1)))))
+(=> (=> _b33 (=> _READ_HAS_OCCURRED_$$output$1 (= _READ_OFFSET_$$output$1 local_id_x$1))) (and
+(or %lbl%@10781 (=> (= (ControlFlow 0 823) (- 0 10781)) (=> _b34 (not _READ_HAS_OCCURRED_$$input$1))))
+(=> (=> _b34 (not _READ_HAS_OCCURRED_$$input$1)) (and
+(or %lbl%@10789 (=> (= (ControlFlow 0 823) (- 0 10789)) (=> _b35 (not _WRITE_HAS_OCCURRED_$$input$1))))
+(=> (=> _b35 (not _WRITE_HAS_OCCURRED_$$input$1)) (and
+(or %lbl%@10797 (=> (= (ControlFlow 0 823) (- 0 10797)) (=> _b36 (=> _WRITE_HAS_OCCURRED_$$input$1 (= _WRITE_OFFSET_$$input$1 local_id_x$1)))))
+(=> (=> _b36 (=> _WRITE_HAS_OCCURRED_$$input$1 (= _WRITE_OFFSET_$$input$1 local_id_x$1))) (and
+(or %lbl%@10811 (=> (= (ControlFlow 0 823) (- 0 10811)) (=> _b37 (=> _READ_HAS_OCCURRED_$$input$1 (= _READ_OFFSET_$$input$1 local_id_x$1)))))
+(=> (=> _b37 (=> _READ_HAS_OCCURRED_$$input$1 (= _READ_OFFSET_$$input$1 local_id_x$1))) (and
+(or %lbl%@10825 (=> (= (ControlFlow 0 823) (- 0 10825)) (=> _b38 (not _READ_HAS_OCCURRED_$$dct8x8$1))))
+(=> (=> _b38 (not _READ_HAS_OCCURRED_$$dct8x8$1)) (and
+(or %lbl%@10833 (=> (= (ControlFlow 0 823) (- 0 10833)) (=> _b39 (not _WRITE_HAS_OCCURRED_$$dct8x8$1))))
+(=> (=> _b39 (not _WRITE_HAS_OCCURRED_$$dct8x8$1)) (and
+(or %lbl%@10841 (=> (= (ControlFlow 0 823) (- 0 10841)) (=> _b40 (=> _WRITE_HAS_OCCURRED_$$dct8x8$1 (= _WRITE_OFFSET_$$dct8x8$1 local_id_x$1)))))
+(=> (=> _b40 (=> _WRITE_HAS_OCCURRED_$$dct8x8$1 (= _WRITE_OFFSET_$$dct8x8$1 local_id_x$1))) (and
+(or %lbl%@10855 (=> (= (ControlFlow 0 823) (- 0 10855)) (=> _b41 (=> _READ_HAS_OCCURRED_$$dct8x8$1 (= _READ_OFFSET_$$dct8x8$1 local_id_x$1)))))
+(=> (=> _b41 (=> _READ_HAS_OCCURRED_$$dct8x8$1 (= _READ_OFFSET_$$dct8x8$1 local_id_x$1))) (and
+(or %lbl%@10869 (=> (= (ControlFlow 0 823) (- 0 10869)) (=> _b42 (not _READ_HAS_OCCURRED_$$inter$1))))
+(=> (=> _b42 (not _READ_HAS_OCCURRED_$$inter$1)) (and
+(or %lbl%@10877 (=> (= (ControlFlow 0 823) (- 0 10877)) (=> _b43 (not _WRITE_HAS_OCCURRED_$$inter$1))))
+(=> (=> _b43 (not _WRITE_HAS_OCCURRED_$$inter$1)) (and
+(or %lbl%@10885 (=> (= (ControlFlow 0 823) (- 0 10885)) (=> _b44 (=> _WRITE_HAS_OCCURRED_$$inter$1 (= _WRITE_OFFSET_$$inter$1 local_id_x$1)))))
+(=> (=> _b44 (=> _WRITE_HAS_OCCURRED_$$inter$1 (= _WRITE_OFFSET_$$inter$1 local_id_x$1))) (and
+(or %lbl%@10899 (=> (= (ControlFlow 0 823) (- 0 10899)) (=> _b45 (=> _READ_HAS_OCCURRED_$$inter$1 (= _READ_OFFSET_$$inter$1 local_id_x$1)))))
+(=> (=> _b45 (=> _READ_HAS_OCCURRED_$$inter$1 (= _READ_OFFSET_$$inter$1 local_id_x$1))) true))))))))))))))))))))))))))))))))))))))
+(let ((PreconditionGeneratedEntry_correct (=> (and %lbl%+9318 true) (=> (bvsgt group_size_x #x00000000) (=> (and
+(bvsgt num_groups_x #x00000000)
+(bvsge group_id_x$1 #x00000000)
+(bvsge group_id_x$2 #x00000000)
+(bvslt group_id_x$1 num_groups_x)) (=> (and
+(bvslt group_id_x$2 num_groups_x)
+(bvsge local_id_x$1 #x00000000)
+(bvsge local_id_x$2 #x00000000)
+(bvslt local_id_x$1 group_size_x)
+(bvslt local_id_x$2 group_size_x)
+(bvsgt group_size_y #x00000000)
+(bvsgt num_groups_y #x00000000)
+(bvsge group_id_y$1 #x00000000)) (=> (and
+(bvsge group_id_y$2 #x00000000)
+(bvslt group_id_y$1 num_groups_y)
+(bvslt group_id_y$2 num_groups_y)
+(bvsge local_id_y$1 #x00000000)
+(bvsge local_id_y$2 #x00000000)
+(bvslt local_id_y$1 group_size_y)
+(bvslt local_id_y$2 group_size_y)
+(bvsgt group_size_z #x00000000)
+(bvsgt num_groups_z #x00000000)
+(bvsge group_id_z$1 #x00000000)
+(bvsge group_id_z$2 #x00000000)
+(bvslt group_id_z$1 num_groups_z)
+(bvslt group_id_z$2 num_groups_z)
+(bvsge local_id_z$1 #x00000000)
+(bvsge local_id_z$2 #x00000000)
+(bvslt local_id_z$1 group_size_z)) (=> (and
+(bvslt local_id_z$2 group_size_z)
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (or
+(not (= local_id_x$1 local_id_x$2))
+(not (= local_id_y$1 local_id_y$2))
+(not (= local_id_z$1 local_id_z$2))))
+(=> _b0 (= _P$1 _P$2))
+(=> _b1 (=> (and
+_P$1
+_P$2) (= $blockIdx$1 $blockIdx$2)))
+(=> _b2 (= $blockIdx$1 $blockIdx$2))
+(=> _b3 (=> (and
+_P$1
+_P$2) (= $blockIdy$1 $blockIdy$2)))
+(=> _b4 (= $blockIdy$1 $blockIdy$2))
+(=> _b5 (=> (and
+_P$1
+_P$2) (= $localIdx$1 $localIdx$2)))
+(=> _b6 (= $localIdx$1 $localIdx$2))
+(=> _b7 (=> (and
+_P$1
+_P$2) (= $localIdy$1 $localIdy$2)))
+(=> _b8 (= $localIdy$1 $localIdy$2))
+(=> _b9 (=> (and
+_P$1
+_P$2) (= $blockWidth$1 $blockWidth$2)))
+(=> _b10 (= $blockWidth$1 $blockWidth$2))
+(=> _b11 (=> (and
+_P$1
+_P$2) (= $globalWidth$1 $globalWidth$2)))
+(=> _b12 (= $globalWidth$1 $globalWidth$2))
+(=> _b13 (not _READ_HAS_OCCURRED_$$output$1))
+(=> _b14 (not _WRITE_HAS_OCCURRED_$$output$1))
+(=> _b15 (=> _WRITE_HAS_OCCURRED_$$output$1 (= _WRITE_OFFSET_$$output$1 local_id_x$1)))
+(=> _b16 (=> _READ_HAS_OCCURRED_$$output$1 (= _READ_OFFSET_$$output$1 local_id_x$1)))
+(=> _b17 (not _READ_HAS_OCCURRED_$$input$1))
+(=> _b18 (not _WRITE_HAS_OCCURRED_$$input$1))
+(=> _b19 (=> _WRITE_HAS_OCCURRED_$$input$1 (= _WRITE_OFFSET_$$input$1 local_id_x$1)))
+(=> _b20 (=> _READ_HAS_OCCURRED_$$input$1 (= _READ_OFFSET_$$input$1 local_id_x$1)))
+(=> _b21 (not _READ_HAS_OCCURRED_$$dct8x8$1))
+(=> _b22 (not _WRITE_HAS_OCCURRED_$$dct8x8$1))
+(=> _b23 (=> _WRITE_HAS_OCCURRED_$$dct8x8$1 (= _WRITE_OFFSET_$$dct8x8$1 local_id_x$1)))
+(=> _b24 (=> _READ_HAS_OCCURRED_$$dct8x8$1 (= _READ_OFFSET_$$dct8x8$1 local_id_x$1)))
+(=> _b25 (not _READ_HAS_OCCURRED_$$inter$1))
+(=> _b26 (not _WRITE_HAS_OCCURRED_$$inter$1))
+(=> _b27 (=> _WRITE_HAS_OCCURRED_$$inter$1 (= _WRITE_OFFSET_$$inter$1 local_id_x$1)))
+(=> _b28 (=> _READ_HAS_OCCURRED_$$inter$1 (= _READ_OFFSET_$$inter$1 local_id_x$1)))
+(= (ControlFlow 0 9318) 823)) $entry_correct))))))))
+PreconditionGeneratedEntry_correct))))
+(declare-fun %lbl%+5094 () Bool)
+(declare-fun %lbl%@16466 () Bool)
+(declare-fun _P$2@@0 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$output$1 at 0 () Bool)
+(declare-fun _WRITE_OFFSET_$$output$1 at 0 () (_ BitVec 32))
+(declare-fun v2$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@16478 () Bool)
+(declare-fun %lbl%+5088 () Bool)
+(declare-fun _P$1@@0 () Bool)
+(declare-fun inline$_LOG_WRITE_$$output$0$track at 0 () Bool)
+(declare-fun v2$1 at 0 () (_ BitVec 32))
+(declare-fun _WRITE_SOURCE_$$output$1 at 0 () (_ BitVec 32))
+(declare-fun _WRITE_SOURCE_$$output$1 () (_ BitVec 32))
+(declare-fun %lbl%+5092 () Bool)
+(declare-fun p4$1 at 3 () Bool)
+(declare-fun p4$2 at 3 () Bool)
+(declare-fun %lbl%@16389 () Bool)
+(declare-fun %lbl%+5096 () Bool)
+(declare-fun %lbl%@16216 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$input$1 at 1 () Bool)
+(declare-fun _READ_SOURCE_$$input$1 at 1 () (_ BitVec 32))
+(declare-fun %lbl%@16224 () Bool)
+(declare-fun %lbl%@16230 () Bool)
+(declare-fun %lbl%@16240 () Bool)
+(declare-fun _WRITE_SOURCE_$$input$1 () (_ BitVec 32))
+(declare-fun %lbl%@16252 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$dct8x8$1 at 3 () Bool)
+(declare-fun _READ_SOURCE_$$dct8x8$1 at 3 () (_ BitVec 32))
+(declare-fun %lbl%@16267 () Bool)
+(declare-fun %lbl%@16273 () Bool)
+(declare-fun %lbl%@16283 () Bool)
+(declare-fun _WRITE_SOURCE_$$dct8x8$1 () (_ BitVec 32))
+(declare-fun %lbl%@16295 () Bool)
+(declare-fun %lbl%@16301 () Bool)
+(declare-fun %lbl%@16311 () Bool)
+(declare-fun _READ_SOURCE_$$output$1 () (_ BitVec 32))
+(declare-fun %lbl%@16323 () Bool)
+(declare-fun %lbl%@16335 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$inter$1 at 1 () Bool)
+(declare-fun _READ_SOURCE_$$inter$1 at 1 () (_ BitVec 32))
+(declare-fun %lbl%@16343 () Bool)
+(declare-fun _WRITE_HAS_OCCURRED_$$inter$1 at 0 () Bool)
+(declare-fun _WRITE_SOURCE_$$inter$1 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@16351 () Bool)
+(declare-fun %lbl%@16361 () Bool)
+(declare-fun %lbl%@16371 () Bool)
+(declare-fun %lbl%@16376 () Bool)
+(declare-fun %lbl%+5010 () Bool)
+(declare-fun %lbl%@16114 () Bool)
+(declare-fun p5$2 at 1 () Bool)
+(declare-fun $cond37$2 at 2 () (_ BitVec 32))
+(declare-fun $acc.1$1 at 2 () (_ BitVec 32))
+(declare-fun p5$1 at 1 () Bool)
+(declare-fun FADD32 ((_ BitVec 32) (_ BitVec 32)) (_ BitVec 32))
+(declare-fun $acc.1$1 at 1 () (_ BitVec 32))
+(declare-fun FMUL32 ((_ BitVec 32) (_ BitVec 32)) (_ BitVec 32))
+(declare-fun v11$1 at 1 () (_ BitVec 32))
+(declare-fun v12$1 at 1 () (_ BitVec 32))
+(declare-fun $acc.1$2 at 2 () (_ BitVec 32))
+(declare-fun $acc.1$2 at 1 () (_ BitVec 32))
+(declare-fun v11$2 at 1 () (_ BitVec 32))
+(declare-fun v12$2 at 1 () (_ BitVec 32))
+(declare-fun $k21.0$1 at 2 () (_ BitVec 32))
+(declare-fun $k21.0$1 at 1 () (_ BitVec 32))
+(declare-fun $k21.0$2 at 2 () (_ BitVec 32))
+(declare-fun $k21.0$2 at 1 () (_ BitVec 32))
+(declare-fun p4$1 at 2 () Bool)
+(declare-fun p4$2 at 2 () Bool)
+(declare-fun %lbl%+5004 () Bool)
+(declare-fun inline$_LOG_READ_$$dct8x8$1$track at 1 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$dct8x8$1 at 2 () Bool)
+(declare-fun _READ_OFFSET_$$dct8x8$1 at 3 () (_ BitVec 32))
+(declare-fun $cond37$1 at 2 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$dct8x8$1 at 2 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$dct8x8$1 at 2 () (_ BitVec 32))
+(declare-fun %lbl%+5008 () Bool)
+(declare-fun %lbl%@15983 () Bool)
+(declare-fun _WRITE_OFFSET_$$inter$1 at 0 () (_ BitVec 32))
+(declare-fun v9$2 at 1 () (_ BitVec 32))
+(declare-fun %lbl%@16019 () Bool)
+(declare-fun _HAVOC_bv32$1 at 5 () (_ BitVec 32))
+(declare-fun v12$1 at 0 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 5 () (_ BitVec 32))
+(declare-fun v12$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%+4922 () Bool)
+(declare-fun inline$_LOG_READ_$$inter$0$track at 1 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$inter$1 at 0 () Bool)
+(declare-fun _READ_OFFSET_$$inter$1 at 1 () (_ BitVec 32))
+(declare-fun v9$1 at 1 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$inter$1 at 0 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$inter$1 at 0 () (_ BitVec 32))
+(declare-fun %lbl%+4926 () Bool)
+(declare-fun p4$1 at 1 () Bool)
+(declare-fun p4$2 at 1 () Bool)
+(declare-fun v8$1 at 1 () Bool)
+(declare-fun $blockWidth$1@@0 () (_ BitVec 32))
+(declare-fun v8$1 at 0 () Bool)
+(declare-fun v8$2 at 1 () Bool)
+(declare-fun $blockWidth$2@@0 () (_ BitVec 32))
+(declare-fun v8$2 at 0 () Bool)
+(declare-fun v0$1 at 0 () (_ BitVec 32))
+(declare-fun v9$1 at 0 () (_ BitVec 32))
+(declare-fun v0$2 at 0 () (_ BitVec 32))
+(declare-fun v9$2 at 0 () (_ BitVec 32))
+(declare-fun v10$1 at 1 () Bool)
+(declare-fun $inverse$1 () (_ BitVec 32))
+(declare-fun v10$1 at 0 () Bool)
+(declare-fun v10$2 at 1 () Bool)
+(declare-fun $inverse$2 () (_ BitVec 32))
+(declare-fun v10$2 at 0 () Bool)
+(declare-fun p7$1 at 1 () Bool)
+(declare-fun p7$2 at 1 () Bool)
+(declare-fun p6$1 at 1 () Bool)
+(declare-fun p6$2 at 1 () Bool)
+(declare-fun $cond37$1 at 1 () (_ BitVec 32))
+(declare-fun v1$1 at 0 () (_ BitVec 32))
+(declare-fun $cond37$1 at 0 () (_ BitVec 32))
+(declare-fun $cond37$2 at 1 () (_ BitVec 32))
+(declare-fun v1$2 at 0 () (_ BitVec 32))
+(declare-fun $cond37$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@15888 () Bool)
+(declare-fun _HAVOC_bv32$1 at 4 () (_ BitVec 32))
+(declare-fun v11$1 at 0 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 4 () (_ BitVec 32))
+(declare-fun v11$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%+4844 () Bool)
+(declare-fun $acc.1$1 at 0 () (_ BitVec 32))
+(declare-fun $acc.1$1 () (_ BitVec 32))
+(declare-fun $acc.1$2 at 0 () (_ BitVec 32))
+(declare-fun $acc.1$2 () (_ BitVec 32))
+(declare-fun $k21.0$1 at 0 () (_ BitVec 32))
+(declare-fun $k21.0$1 () (_ BitVec 32))
+(declare-fun $k21.0$2 at 0 () (_ BitVec 32))
+(declare-fun $k21.0$2 () (_ BitVec 32))
+(declare-fun p4$1 at 0 () Bool)
+(declare-fun p4$2 at 0 () Bool)
+(declare-fun %lbl%@15146 () Bool)
+(declare-fun %lbl%@15154 () Bool)
+(declare-fun %lbl%@15160 () Bool)
+(declare-fun %lbl%@15170 () Bool)
+(declare-fun %lbl%@15182 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$dct8x8$1 at 1 () Bool)
+(declare-fun _READ_SOURCE_$$dct8x8$1 at 1 () (_ BitVec 32))
+(declare-fun %lbl%@15197 () Bool)
+(declare-fun %lbl%@15203 () Bool)
+(declare-fun %lbl%@15213 () Bool)
+(declare-fun %lbl%@15225 () Bool)
+(declare-fun %lbl%@15231 () Bool)
+(declare-fun %lbl%@15241 () Bool)
+(declare-fun %lbl%@15253 () Bool)
+(declare-fun %lbl%@15265 () Bool)
+(declare-fun _READ_SOURCE_$$inter$1 () (_ BitVec 32))
+(declare-fun %lbl%@15275 () Bool)
+(declare-fun %lbl%@15283 () Bool)
+(declare-fun %lbl%@15295 () Bool)
+(declare-fun %lbl%@15305 () Bool)
+(declare-fun %lbl%@15310 () Bool)
+(declare-fun %lbl%+4840 () Bool)
+(declare-fun %lbl%+4828 () Bool)
+(declare-fun inline$$bugle_barrier$0$$1$2 at 0 () (_ BitVec 1))
+(declare-fun %lbl%+4830 () Bool)
+(declare-fun %lbl%+4826 () Bool)
+(declare-fun %lbl%+4824 () Bool)
+(declare-fun inline$$bugle_barrier$0$$1$1 at 0 () (_ BitVec 1))
+(declare-fun %lbl%+4832 () Bool)
+(declare-fun %lbl%+4822 () Bool)
+(declare-fun %lbl%+4820 () Bool)
+(declare-fun inline$$bugle_barrier$0$$0$2 at 0 () (_ BitVec 1))
+(declare-fun %lbl%+4834 () Bool)
+(declare-fun %lbl%+4818 () Bool)
+(declare-fun %lbl%+4816 () Bool)
+(declare-fun inline$$bugle_barrier$0$$0$1 at 0 () (_ BitVec 1))
+(declare-fun %lbl%+4836 () Bool)
+(declare-fun %lbl%+4814 () Bool)
+(declare-fun %lbl%+4838 () Bool)
+(declare-fun %lbl%+4810 () Bool)
+(declare-fun %lbl%@14709 () Bool)
+(declare-fun %lbl%+4842 () Bool)
+(declare-fun call1967formal at _offset$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@14573 () Bool)
+(declare-fun %lbl%@14609 () Bool)
+(declare-fun %lbl%+4361 () Bool)
+(declare-fun inline$_LOG_WRITE_$$inter$0$track at 0 () Bool)
+(declare-fun inline$_LOG_WRITE_$$inter$0$_offset$1 at 0 () (_ BitVec 32))
+(declare-fun _WRITE_SOURCE_$$inter$1 () (_ BitVec 32))
+(declare-fun %lbl%+4359 () Bool)
+(declare-fun %lbl%+4365 () Bool)
+(declare-fun p0$1 at 3 () Bool)
+(declare-fun p0$2 at 3 () Bool)
+(declare-fun %lbl%@14472 () Bool)
+(declare-fun %lbl%+5098 () Bool)
+(declare-fun %lbl%@14291 () Bool)
+(declare-fun %lbl%@14299 () Bool)
+(declare-fun %lbl%@14305 () Bool)
+(declare-fun %lbl%@14315 () Bool)
+(declare-fun %lbl%@14327 () Bool)
+(declare-fun %lbl%@14342 () Bool)
+(declare-fun %lbl%@14348 () Bool)
+(declare-fun %lbl%@14358 () Bool)
+(declare-fun %lbl%@14370 () Bool)
+(declare-fun %lbl%@14376 () Bool)
+(declare-fun %lbl%@14386 () Bool)
+(declare-fun %lbl%@14398 () Bool)
+(declare-fun %lbl%@14410 () Bool)
+(declare-fun %lbl%@14420 () Bool)
+(declare-fun %lbl%@14430 () Bool)
+(declare-fun %lbl%@14442 () Bool)
+(declare-fun %lbl%@14454 () Bool)
+(declare-fun %lbl%@14459 () Bool)
+(declare-fun %lbl%+4283 () Bool)
+(declare-fun %lbl%@14189 () Bool)
+(declare-fun p1$2 at 1 () Bool)
+(declare-fun call1785formal@$ret$2 at 0 () (_ BitVec 32))
+(declare-fun $acc.0$1 at 2 () (_ BitVec 32))
+(declare-fun p1$1 at 1 () Bool)
+(declare-fun $acc.0$1 at 1 () (_ BitVec 32))
+(declare-fun v6$1 at 1 () (_ BitVec 32))
+(declare-fun v7$1 at 1 () (_ BitVec 32))
+(declare-fun $acc.0$2 at 2 () (_ BitVec 32))
+(declare-fun $acc.0$2 at 1 () (_ BitVec 32))
+(declare-fun v6$2 at 1 () (_ BitVec 32))
+(declare-fun v7$2 at 1 () (_ BitVec 32))
+(declare-fun $k.0$1 at 2 () (_ BitVec 32))
+(declare-fun $k.0$1 at 1 () (_ BitVec 32))
+(declare-fun $k.0$2 at 2 () (_ BitVec 32))
+(declare-fun $k.0$2 at 1 () (_ BitVec 32))
+(declare-fun p0$1 at 2 () Bool)
+(declare-fun p0$2 at 2 () Bool)
+(declare-fun %lbl%+4277 () Bool)
+(declare-fun inline$_LOG_READ_$$input$0$track at 1 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$input$1 at 0 () Bool)
+(declare-fun _READ_OFFSET_$$input$1 at 1 () (_ BitVec 32))
+(declare-fun call1785formal@$ret$1 at 0 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$input$1 at 0 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$input$1 at 0 () (_ BitVec 32))
+(declare-fun %lbl%+4281 () Bool)
+(declare-fun %lbl%@14080 () Bool)
+(declare-fun $cond$2 at 2 () (_ BitVec 32))
+(declare-fun %lbl%@14094 () Bool)
+(declare-fun _HAVOC_bv32$1 at 2 () (_ BitVec 32))
+(declare-fun v7$1 at 0 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 2 () (_ BitVec 32))
+(declare-fun v7$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%+4195 () Bool)
+(declare-fun inline$_LOG_READ_$$dct8x8$0$track at 1 () Bool)
+(declare-fun _READ_HAS_OCCURRED_$$dct8x8$1 at 0 () Bool)
+(declare-fun _READ_OFFSET_$$dct8x8$1 at 1 () (_ BitVec 32))
+(declare-fun $cond$1 at 2 () (_ BitVec 32))
+(declare-fun _READ_OFFSET_$$dct8x8$1 at 0 () (_ BitVec 32))
+(declare-fun _READ_SOURCE_$$dct8x8$1 at 0 () (_ BitVec 32))
+(declare-fun %lbl%+4199 () Bool)
+(declare-fun p0$1 at 1 () Bool)
+(declare-fun p0$2 at 1 () Bool)
+(declare-fun v3$1 at 1 () Bool)
+(declare-fun v3$1 at 0 () Bool)
+(declare-fun v3$2 at 1 () Bool)
+(declare-fun v3$2 at 0 () Bool)
+(declare-fun v4$1 at 1 () Bool)
+(declare-fun v4$1 at 0 () Bool)
+(declare-fun v4$2 at 1 () Bool)
+(declare-fun v4$2 at 0 () Bool)
+(declare-fun p3$1 at 1 () Bool)
+(declare-fun p3$2 at 1 () Bool)
+(declare-fun p2$1 at 1 () Bool)
+(declare-fun p2$2 at 1 () Bool)
+(declare-fun $cond$1 at 1 () (_ BitVec 32))
+(declare-fun $cond$1 at 0 () (_ BitVec 32))
+(declare-fun $cond$2 at 1 () (_ BitVec 32))
+(declare-fun $cond$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%@13261 () Bool)
+(declare-fun %lbl%@13267 () Bool)
+(declare-fun %lbl%@13273 () Bool)
+(declare-fun %lbl%@13279 () Bool)
+(declare-fun %lbl%@13285 () Bool)
+(declare-fun %lbl%@13291 () Bool)
+(declare-fun %lbl%@13297 () Bool)
+(declare-fun %lbl%@13303 () Bool)
+(declare-fun %lbl%@13309 () Bool)
+(declare-fun %lbl%@13315 () Bool)
+(declare-fun %lbl%@13321 () Bool)
+(declare-fun %lbl%@13327 () Bool)
+(declare-fun %lbl%@13333 () Bool)
+(declare-fun %lbl%@13339 () Bool)
+(declare-fun %lbl%@13345 () Bool)
+(declare-fun %lbl%@13351 () Bool)
+(declare-fun %lbl%@13357 () Bool)
+(declare-fun %lbl%@13363 () Bool)
+(declare-fun %lbl%@13369 () Bool)
+(declare-fun %lbl%@13375 () Bool)
+(declare-fun %lbl%@13381 () Bool)
+(declare-fun %lbl%@13387 () Bool)
+(declare-fun %lbl%@13393 () Bool)
+(declare-fun %lbl%@13399 () Bool)
+(declare-fun %lbl%@13405 () Bool)
+(declare-fun %lbl%@13411 () Bool)
+(declare-fun %lbl%@13417 () Bool)
+(declare-fun %lbl%@13423 () Bool)
+(declare-fun %lbl%@13429 () Bool)
+(declare-fun %lbl%@13435 () Bool)
+(declare-fun %lbl%@13441 () Bool)
+(declare-fun %lbl%@13487 () Bool)
+(declare-fun %lbl%@13495 () Bool)
+(declare-fun %lbl%@13509 () Bool)
+(declare-fun %lbl%@13517 () Bool)
+(declare-fun %lbl%@13531 () Bool)
+(declare-fun %lbl%@13539 () Bool)
+(declare-fun %lbl%@13553 () Bool)
+(declare-fun %lbl%@13561 () Bool)
+(declare-fun %lbl%@13575 () Bool)
+(declare-fun %lbl%@13583 () Bool)
+(declare-fun %lbl%@13597 () Bool)
+(declare-fun %lbl%@13605 () Bool)
+(declare-fun $width$1 () (_ BitVec 32))
+(declare-fun $width$2 () (_ BitVec 32))
+(declare-fun %lbl%@13619 () Bool)
+(declare-fun %lbl%@13627 () Bool)
+(declare-fun %lbl%@13635 () Bool)
+(declare-fun %lbl%@13643 () Bool)
+(declare-fun %lbl%@13657 () Bool)
+(declare-fun %lbl%@13671 () Bool)
+(declare-fun %lbl%@13678 () Bool)
+(declare-fun %lbl%@13686 () Bool)
+(declare-fun %lbl%@13700 () Bool)
+(declare-fun %lbl%@13712 () Bool)
+(declare-fun %lbl%@13719 () Bool)
+(declare-fun %lbl%@13727 () Bool)
+(declare-fun %lbl%@13741 () Bool)
+(declare-fun %lbl%@13753 () Bool)
+(declare-fun %lbl%@13761 () Bool)
+(declare-fun %lbl%@13769 () Bool)
+(declare-fun %lbl%@13783 () Bool)
+(declare-fun %lbl%@13985 () Bool)
+(declare-fun _HAVOC_bv32$1 at 1 () (_ BitVec 32))
+(declare-fun v6$1 at 0 () (_ BitVec 32))
+(declare-fun _HAVOC_bv32$2 at 1 () (_ BitVec 32))
+(declare-fun v6$2 at 0 () (_ BitVec 32))
+(declare-fun %lbl%+4117 () Bool)
+(declare-fun v0$1 () (_ BitVec 32))
+(declare-fun v0$2 () (_ BitVec 32))
+(declare-fun v1$1 () (_ BitVec 32))
+(declare-fun v1$2 () (_ BitVec 32))
+(declare-fun v2$1 () (_ BitVec 32))
+(declare-fun v2$2 () (_ BitVec 32))
+(declare-fun $acc.0$1 at 0 () (_ BitVec 32))
+(declare-fun $acc.0$1 () (_ BitVec 32))
+(declare-fun $acc.0$2 at 0 () (_ BitVec 32))
+(declare-fun $acc.0$2 () (_ BitVec 32))
+(declare-fun $k.0$1 at 0 () (_ BitVec 32))
+(declare-fun $k.0$1 () (_ BitVec 32))
+(declare-fun $k.0$2 at 0 () (_ BitVec 32))
+(declare-fun $k.0$2 () (_ BitVec 32))
+(declare-fun p0$1 at 0 () Bool)
+(declare-fun p0$2 at 0 () Bool)
+(declare-fun %lbl%@12497 () Bool)
+(declare-fun _READ_SOURCE_$$input$1 () (_ BitVec 32))
+(declare-fun %lbl%@12507 () Bool)
+(declare-fun %lbl%@12513 () Bool)
+(declare-fun %lbl%@12525 () Bool)
+(declare-fun %lbl%@12537 () Bool)
+(declare-fun _READ_SOURCE_$$dct8x8$1 () (_ BitVec 32))
+(declare-fun %lbl%@12555 () Bool)
+(declare-fun %lbl%@12561 () Bool)
+(declare-fun %lbl%@12573 () Bool)
+(declare-fun %lbl%@12585 () Bool)
+(declare-fun %lbl%@12591 () Bool)
+(declare-fun %lbl%@12601 () Bool)
+(declare-fun %lbl%@12613 () Bool)
+(declare-fun %lbl%@12625 () Bool)
+(declare-fun %lbl%@12635 () Bool)
+(declare-fun %lbl%@12645 () Bool)
+(declare-fun %lbl%@12657 () Bool)
+(declare-fun %lbl%@12669 () Bool)
+(declare-fun %lbl%@12674 () Bool)
+(declare-fun %lbl%+11167 () Bool)
+(define-fun $DCT () Bool (=> (= (ControlFlow 0 0) 11167) (let (($for.cond22.tail$1_correct (=> (and %lbl%+5094 true) (and
+(or %lbl%@16466 (=> (= (ControlFlow 0 5094) (- 0 16466)) (not (and
+_P$2@@0
+_WRITE_HAS_OCCURRED_$$output$1 at 0
+(= _WRITE_OFFSET_$$output$1 at 0 v2$2 at 0)))))
+(=> (not (and
+_P$2@@0
+_WRITE_HAS_OCCURRED_$$output$1 at 0
+(= _WRITE_OFFSET_$$output$1 at 0 v2$2 at 0))) (and
+(or %lbl%@16478 (=> (= (ControlFlow 0 5094) (- 0 16478)) (not (and
+_P$2@@0
+_READ_HAS_OCCURRED_$$output$1
+(= _READ_OFFSET_$$output$1 v2$2 at 0)))))
+(=> (not (and
+_P$2@@0
+_READ_HAS_OCCURRED_$$output$1
+(= _READ_OFFSET_$$output$1 v2$2 at 0))) true)))))))
+(let ((inline$_LOG_WRITE_$$output$0$_LOG_WRITE_correct (=> (and %lbl%+5088 true) (=> (and
+(= _WRITE_HAS_OCCURRED_$$output$1 at 0 (ite (and
+_P$1@@0
+inline$_LOG_WRITE_$$output$0$track at 0) true _WRITE_HAS_OCCURRED_$$output$1))
+(= _WRITE_OFFSET_$$output$1 at 0 (ite (and
+_P$1@@0
+inline$_LOG_WRITE_$$output$0$track at 0) v2$1 at 0 _WRITE_OFFSET_$$output$1))
+(= _WRITE_SOURCE_$$output$1 at 0 (ite (and
+_P$1@@0
+inline$_LOG_WRITE_$$output$0$track at 0) #x00000002 _WRITE_SOURCE_$$output$1))
+(= (ControlFlow 0 5088) 5094)) $for.cond22.tail$1_correct))))
+(let (($for.cond22.tail_correct (=> (and %lbl%+5092 true) (=> (and
+(not p4$1 at 3)
+(not p4$2 at 3)) (and
+(or %lbl%@16389 (=> (= (ControlFlow 0 5092) (- 0 16389)) (=> _P$1@@0 true)))
+(=> (=> _P$1@@0 true) (=> (= (ControlFlow 0 5092) 5088) inline$_LOG_WRITE_$$output$0$_LOG_WRITE_correct)))))))
+(let (($for.cond22.backedge_correct (=> (and %lbl%+5096 true) (=> (or
+p4$1 at 3
+p4$2 at 3) (and
+(or %lbl%@16216 (=> (= (ControlFlow 0 5096) (- 0 16216)) (=> _READ_HAS_OCCURRED_$$input$1 at 1 (= _READ_SOURCE_$$input$1 at 1 #x00000006))))
+(=> (=> _READ_HAS_OCCURRED_$$input$1 at 1 (= _READ_SOURCE_$$input$1 at 1 #x00000006)) (and
+(or %lbl%@16224 (=> (= (ControlFlow 0 5096) (- 0 16224)) (=> _WRITE_HAS_OCCURRED_$$input$1 false)))
+(=> (=> _WRITE_HAS_OCCURRED_$$input$1 false) (and
+(or %lbl%@16230 (=> (= (ControlFlow 0 5096) (- 0 16230)) (=> (not _READ_HAS_OCCURRED_$$input$1 at 1) (= _READ_SOURCE_$$input$1 at 1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$input$1 at 1) (= _READ_SOURCE_$$input$1 at 1 #x00000000)) (and
+(or %lbl%@16240 (=> (= (ControlFlow 0 5096) (- 0 16240)) (=> (not _WRITE_HAS_OCCURRED_$$input$1) (= _WRITE_SOURCE_$$input$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$input$1) (= _WRITE_SOURCE_$$input$1 #x00000000)) (and
+(or %lbl%@16252 (=> (= (ControlFlow 0 5096) (- 0 16252)) (=> _READ_HAS_OCCURRED_$$dct8x8$1 at 3 (or
+(= _READ_SOURCE_$$dct8x8$1 at 3 #x00000004)
+(= _READ_SOURCE_$$dct8x8$1 at 3 #x00000005)))))
+(=> (=> _READ_HAS_OCCURRED_$$dct8x8$1 at 3 (or
+(= _READ_SOURCE_$$dct8x8$1 at 3 #x00000004)
+(= _READ_SOURCE_$$dct8x8$1 at 3 #x00000005))) (and
+(or %lbl%@16267 (=> (= (ControlFlow 0 5096) (- 0 16267)) (=> _WRITE_HAS_OCCURRED_$$dct8x8$1 false)))
+(=> (=> _WRITE_HAS_OCCURRED_$$dct8x8$1 false) (and
+(or %lbl%@16273 (=> (= (ControlFlow 0 5096) (- 0 16273)) (=> (not _READ_HAS_OCCURRED_$$dct8x8$1 at 3) (= _READ_SOURCE_$$dct8x8$1 at 3 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$dct8x8$1 at 3) (= _READ_SOURCE_$$dct8x8$1 at 3 #x00000000)) (and
+(or %lbl%@16283 (=> (= (ControlFlow 0 5096) (- 0 16283)) (=> (not _WRITE_HAS_OCCURRED_$$dct8x8$1) (= _WRITE_SOURCE_$$dct8x8$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$dct8x8$1) (= _WRITE_SOURCE_$$dct8x8$1 #x00000000)) (and
+(or %lbl%@16295 (=> (= (ControlFlow 0 5096) (- 0 16295)) (=> _READ_HAS_OCCURRED_$$output$1 false)))
+(=> (=> _READ_HAS_OCCURRED_$$output$1 false) (and
+(or %lbl%@16301 (=> (= (ControlFlow 0 5096) (- 0 16301)) (=> _WRITE_HAS_OCCURRED_$$output$1 (= _WRITE_SOURCE_$$output$1 #x00000002))))
+(=> (=> _WRITE_HAS_OCCURRED_$$output$1 (= _WRITE_SOURCE_$$output$1 #x00000002)) (and
+(or %lbl%@16311 (=> (= (ControlFlow 0 5096) (- 0 16311)) (=> (not _READ_HAS_OCCURRED_$$output$1) (= _READ_SOURCE_$$output$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$output$1) (= _READ_SOURCE_$$output$1 #x00000000)) (and
+(or %lbl%@16323 (=> (= (ControlFlow 0 5096) (- 0 16323)) (=> (not _WRITE_HAS_OCCURRED_$$output$1) (= _WRITE_SOURCE_$$output$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$output$1) (= _WRITE_SOURCE_$$output$1 #x00000000)) (and
+(or %lbl%@16335 (=> (= (ControlFlow 0 5096) (- 0 16335)) (=> _READ_HAS_OCCURRED_$$inter$1 at 1 (= _READ_SOURCE_$$inter$1 at 1 #x00000003))))
+(=> (=> _READ_HAS_OCCURRED_$$inter$1 at 1 (= _READ_SOURCE_$$inter$1 at 1 #x00000003)) (and
+(or %lbl%@16343 (=> (= (ControlFlow 0 5096) (- 0 16343)) (=> _WRITE_HAS_OCCURRED_$$inter$1 at 0 (= _WRITE_SOURCE_$$inter$1 at 0 #x00000001))))
+(=> (=> _WRITE_HAS_OCCURRED_$$inter$1 at 0 (= _WRITE_SOURCE_$$inter$1 at 0 #x00000001)) (and
+(or %lbl%@16351 (=> (= (ControlFlow 0 5096) (- 0 16351)) (=> (not _READ_HAS_OCCURRED_$$inter$1 at 1) (= _READ_SOURCE_$$inter$1 at 1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$inter$1 at 1) (= _READ_SOURCE_$$inter$1 at 1 #x00000000)) (and
+(or %lbl%@16361 (=> (= (ControlFlow 0 5096) (- 0 16361)) (=> (not _WRITE_HAS_OCCURRED_$$inter$1 at 0) (= _WRITE_SOURCE_$$inter$1 at 0 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$inter$1 at 0) (= _WRITE_SOURCE_$$inter$1 at 0 #x00000000)) (and
+(or %lbl%@16371 (=> (= (ControlFlow 0 5096) (- 0 16371)) (=> p4$1 at 3 _P$1@@0)))
+(=> (=> p4$1 at 3 _P$1@@0) (and
+(or %lbl%@16376 (=> (= (ControlFlow 0 5096) (- 0 16376)) (=> p4$2 at 3 _P$2@@0)))
+(=> (=> p4$2 at 3 _P$2@@0) true))))))))))))))))))))))))))))))))))))))))
+(let (($for.cond22$2_correct (=> (and %lbl%+5010 true) (and
+(or %lbl%@16114 (=> (= (ControlFlow 0 5010) (- 0 16114)) (not (and
+p5$2 at 1
+_WRITE_HAS_OCCURRED_$$dct8x8$1
+(= _WRITE_OFFSET_$$dct8x8$1 $cond37$2 at 2)))))
+(=> (not (and
+p5$2 at 1
+_WRITE_HAS_OCCURRED_$$dct8x8$1
+(= _WRITE_OFFSET_$$dct8x8$1 $cond37$2 at 2))) (=> (and
+(= $acc.1$1 at 2 (ite p5$1 at 1 (FADD32 $acc.1$1 at 1 (FMUL32 v11$1 at 1 v12$1 at 1)) $acc.1$1 at 1))
+(= $acc.1$2 at 2 (ite p5$2 at 1 (FADD32 $acc.1$2 at 1 (FMUL32 v11$2 at 1 v12$2 at 1)) $acc.1$2 at 1))
+(= $k21.0$1 at 2 (ite p5$1 at 1 (bvadd $k21.0$1 at 1 #x00000001) $k21.0$1 at 1))
+(= $k21.0$2 at 2 (ite p5$2 at 1 (bvadd $k21.0$2 at 1 #x00000001) $k21.0$2 at 1))
+(= p4$1 at 3 (ite p5$1 at 1 true p4$1 at 2))
+(= p4$2 at 3 (ite p5$2 at 1 true p4$2 at 2))) (and
+(=> (= (ControlFlow 0 5010) 5096) $for.cond22.backedge_correct)
+(=> (= (ControlFlow 0 5010) 5092) $for.cond22.tail_correct))))))))
+(let ((inline$_LOG_READ_$$dct8x8$1$_LOG_READ_correct (=> (and %lbl%+5004 true) (=> (and
+(= _READ_HAS_OCCURRED_$$dct8x8$1 at 3 (ite (and
+p5$1 at 1
+inline$_LOG_READ_$$dct8x8$1$track at 1) true _READ_HAS_OCCURRED_$$dct8x8$1 at 2))
+(= _READ_OFFSET_$$dct8x8$1 at 3 (ite (and
+p5$1 at 1
+inline$_LOG_READ_$$dct8x8$1$track at 1) $cond37$1 at 2 _READ_OFFSET_$$dct8x8$1 at 2))
+(= _READ_SOURCE_$$dct8x8$1 at 3 (ite (and
+p5$1 at 1
+inline$_LOG_READ_$$dct8x8$1$track at 1) #x00000004 _READ_SOURCE_$$dct8x8$1 at 2))
+(= (ControlFlow 0 5004) 5010)) $for.cond22$2_correct))))
+(let (($for.cond22$1_correct (=> (and %lbl%+5008 true) (and
+(or %lbl%@15983 (=> (= (ControlFlow 0 5008) (- 0 15983)) (not (and
+p5$2 at 1
+_WRITE_HAS_OCCURRED_$$inter$1 at 0
+(= _WRITE_OFFSET_$$inter$1 at 0 v9$2 at 1)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)))))
+(=> (not (and
+p5$2 at 1
+_WRITE_HAS_OCCURRED_$$inter$1 at 0
+(= _WRITE_OFFSET_$$inter$1 at 0 v9$2 at 1)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2))) (and
+(or %lbl%@16019 (=> (= (ControlFlow 0 5008) (- 0 16019)) (=> p5$1 at 1 true)))
+(=> (=> p5$1 at 1 true) (=> (and
+(= v12$1 at 1 (ite p5$1 at 1 _HAVOC_bv32$1 at 5 v12$1 at 0))
+(= v12$2 at 1 (ite p5$2 at 1 _HAVOC_bv32$2 at 5 v12$2 at 0))
+(= (ControlFlow 0 5008) 5004)) inline$_LOG_READ_$$dct8x8$1$_LOG_READ_correct))))))))
+(let ((inline$_LOG_READ_$$inter$0$_LOG_READ_correct (=> (and %lbl%+4922 true) (=> (and
+(= _READ_HAS_OCCURRED_$$inter$1 at 1 (ite (and
+p5$1 at 1
+inline$_LOG_READ_$$inter$0$track at 1) true _READ_HAS_OCCURRED_$$inter$1 at 0))
+(= _READ_OFFSET_$$inter$1 at 1 (ite (and
+p5$1 at 1
+inline$_LOG_READ_$$inter$0$track at 1) v9$1 at 1 _READ_OFFSET_$$inter$1 at 0))
+(= _READ_SOURCE_$$inter$1 at 1 (ite (and
+p5$1 at 1
+inline$_LOG_READ_$$inter$0$track at 1) #x00000003 _READ_SOURCE_$$inter$1 at 0))
+(= (ControlFlow 0 4922) 5008)) $for.cond22$1_correct))))
+(let (($for.cond22_correct (=> (and %lbl%+4926 true) (=> (and
+(=> _READ_HAS_OCCURRED_$$input$1 at 1 (= _READ_SOURCE_$$input$1 at 1 #x00000006))
+(=> _WRITE_HAS_OCCURRED_$$input$1 false)
+(=> (not _READ_HAS_OCCURRED_$$input$1 at 1) (= _READ_SOURCE_$$input$1 at 1 #x00000000))
+(=> (not _WRITE_HAS_OCCURRED_$$input$1) (= _WRITE_SOURCE_$$input$1 #x00000000))) (=> (and
+(=> _READ_HAS_OCCURRED_$$dct8x8$1 at 2 (or
+(= _READ_SOURCE_$$dct8x8$1 at 2 #x00000004)
+(= _READ_SOURCE_$$dct8x8$1 at 2 #x00000005)))
+(=> _WRITE_HAS_OCCURRED_$$dct8x8$1 false)
+(=> (not _READ_HAS_OCCURRED_$$dct8x8$1 at 2) (= _READ_SOURCE_$$dct8x8$1 at 2 #x00000000))
+(=> (not _WRITE_HAS_OCCURRED_$$dct8x8$1) (= _WRITE_SOURCE_$$dct8x8$1 #x00000000))
+(=> _READ_HAS_OCCURRED_$$output$1 false)
+(=> _WRITE_HAS_OCCURRED_$$output$1 (= _WRITE_SOURCE_$$output$1 #x00000002))
+(=> (not _READ_HAS_OCCURRED_$$output$1) (= _READ_SOURCE_$$output$1 #x00000000))
+(=> (not _WRITE_HAS_OCCURRED_$$output$1) (= _WRITE_SOURCE_$$output$1 #x00000000))
+(=> _READ_HAS_OCCURRED_$$inter$1 at 0 (= _READ_SOURCE_$$inter$1 at 0 #x00000003))
+(=> _WRITE_HAS_OCCURRED_$$inter$1 at 0 (= _WRITE_SOURCE_$$inter$1 at 0 #x00000001))
+(=> (not _READ_HAS_OCCURRED_$$inter$1 at 0) (= _READ_SOURCE_$$inter$1 at 0 #x00000000))
+(=> (not _WRITE_HAS_OCCURRED_$$inter$1 at 0) (= _WRITE_SOURCE_$$inter$1 at 0 #x00000000))
+(=> p4$1 at 1 _P$1@@0)
+(=> p4$2 at 1 _P$2@@0)
+(= v8$1 at 1 (ite p4$1 at 1 (bvult $k21.0$1 at 1 $blockWidth$1@@0) v8$1 at 0))
+(= v8$2 at 1 (ite p4$2 at 1 (bvult $k21.0$2 at 1 $blockWidth$2@@0) v8$2 at 0))
+(= p5$1 at 1 (ite p4$1 at 1 v8$1 at 1 false))
+(= p5$2 at 1 (ite p4$2 at 1 v8$2 at 1 false))
+(= p4$1 at 2 (ite p4$1 at 1 v8$1 at 1 p4$1 at 1))
+(= p4$2 at 2 (ite p4$2 at 1 v8$2 at 1 p4$2 at 1))
+(= v9$1 at 1 (ite p5$1 at 1 (bvadd (bvmul v0$1 at 0 $blockWidth$1@@0) $k21.0$1 at 1) v9$1 at 0))
+(= v9$2 at 1 (ite p5$2 at 1 (bvadd (bvmul v0$2 at 0 $blockWidth$2@@0) $k21.0$2 at 1) v9$2 at 0))
+(= v10$1 at 1 (ite p5$1 at 1 (not (= $inverse$1 #x00000000)) v10$1 at 0))
+(= v10$2 at 1 (ite p5$2 at 1 (not (= $inverse$2 #x00000000)) v10$2 at 0))
+(= p7$1 at 1 (ite p5$1 at 1 v10$1 at 1 false))
+(= p7$2 at 1 (ite p5$2 at 1 v10$2 at 1 false))
+(= p6$1 at 1 (ite p5$1 at 1 (not v10$1 at 1) false))
+(= p6$2 at 1 (ite p5$2 at 1 (not v10$2 at 1) false))
+(= $cond37$1 at 1 (ite p6$1 at 1 (bvadd (bvmul $k21.0$1 at 1 $blockWidth$1@@0) v1$1 at 0) $cond37$1 at 0))
+(= $cond37$2 at 1 (ite p6$2 at 1 (bvadd (bvmul $k21.0$2 at 1 $blockWidth$2@@0) v1$2 at 0) $cond37$2 at 0))
+(= $cond37$1 at 2 (ite p7$1 at 1 (bvadd (bvmul v1$1 at 0 $blockWidth$1@@0) $k21.0$1 at 1) $cond37$1 at 1))
+(= $cond37$2 at 2 (ite p7$2 at 1 (bvadd (bvmul v1$2 at 0 $blockWidth$2@@0) $k21.0$2 at 1) $cond37$2 at 1))) (and
+(or %lbl%@15888 (=> (= (ControlFlow 0 4926) (- 0 15888)) (=> p5$1 at 1 true)))
+(=> (=> p5$1 at 1 true) (=> (and
+(= v11$1 at 1 (ite p5$1 at 1 _HAVOC_bv32$1 at 4 v11$1 at 0))
+(= v11$2 at 1 (ite p5$2 at 1 _HAVOC_bv32$2 at 4 v11$2 at 0))
+(= (ControlFlow 0 4926) 4922)) inline$_LOG_READ_$$inter$0$_LOG_READ_correct))))))))
+(let (($for.cond.tail$2_correct (=> (and %lbl%+4844 true) (=> (and
+(= $acc.1$1 at 0 (ite _P$1@@0 #x00000000 $acc.1$1))
+(= $acc.1$2 at 0 (ite _P$2@@0 #x00000000 $acc.1$2))
+(= $k21.0$1 at 0 (ite _P$1@@0 #x00000000 $k21.0$1))
+(= $k21.0$2 at 0 (ite _P$2@@0 #x00000000 $k21.0$2))
+(= p4$1 at 0 (ite _P$1@@0 true false))
+(= p4$2 at 0 (ite _P$2@@0 true false))) (and
+(or %lbl%@15146 (=> (= (ControlFlow 0 4844) (- 0 15146)) (=> _READ_HAS_OCCURRED_$$input$1 at 1 (= _READ_SOURCE_$$input$1 at 1 #x00000006))))
+(=> (=> _READ_HAS_OCCURRED_$$input$1 at 1 (= _READ_SOURCE_$$input$1 at 1 #x00000006)) (and
+(or %lbl%@15154 (=> (= (ControlFlow 0 4844) (- 0 15154)) (=> _WRITE_HAS_OCCURRED_$$input$1 false)))
+(=> (=> _WRITE_HAS_OCCURRED_$$input$1 false) (and
+(or %lbl%@15160 (=> (= (ControlFlow 0 4844) (- 0 15160)) (=> (not _READ_HAS_OCCURRED_$$input$1 at 1) (= _READ_SOURCE_$$input$1 at 1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$input$1 at 1) (= _READ_SOURCE_$$input$1 at 1 #x00000000)) (and
+(or %lbl%@15170 (=> (= (ControlFlow 0 4844) (- 0 15170)) (=> (not _WRITE_HAS_OCCURRED_$$input$1) (= _WRITE_SOURCE_$$input$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$input$1) (= _WRITE_SOURCE_$$input$1 #x00000000)) (and
+(or %lbl%@15182 (=> (= (ControlFlow 0 4844) (- 0 15182)) (=> _READ_HAS_OCCURRED_$$dct8x8$1 at 1 (or
+(= _READ_SOURCE_$$dct8x8$1 at 1 #x00000004)
+(= _READ_SOURCE_$$dct8x8$1 at 1 #x00000005)))))
+(=> (=> _READ_HAS_OCCURRED_$$dct8x8$1 at 1 (or
+(= _READ_SOURCE_$$dct8x8$1 at 1 #x00000004)
+(= _READ_SOURCE_$$dct8x8$1 at 1 #x00000005))) (and
+(or %lbl%@15197 (=> (= (ControlFlow 0 4844) (- 0 15197)) (=> _WRITE_HAS_OCCURRED_$$dct8x8$1 false)))
+(=> (=> _WRITE_HAS_OCCURRED_$$dct8x8$1 false) (and
+(or %lbl%@15203 (=> (= (ControlFlow 0 4844) (- 0 15203)) (=> (not _READ_HAS_OCCURRED_$$dct8x8$1 at 1) (= _READ_SOURCE_$$dct8x8$1 at 1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$dct8x8$1 at 1) (= _READ_SOURCE_$$dct8x8$1 at 1 #x00000000)) (and
+(or %lbl%@15213 (=> (= (ControlFlow 0 4844) (- 0 15213)) (=> (not _WRITE_HAS_OCCURRED_$$dct8x8$1) (= _WRITE_SOURCE_$$dct8x8$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$dct8x8$1) (= _WRITE_SOURCE_$$dct8x8$1 #x00000000)) (and
+(or %lbl%@15225 (=> (= (ControlFlow 0 4844) (- 0 15225)) (=> _READ_HAS_OCCURRED_$$output$1 false)))
+(=> (=> _READ_HAS_OCCURRED_$$output$1 false) (and
+(or %lbl%@15231 (=> (= (ControlFlow 0 4844) (- 0 15231)) (=> _WRITE_HAS_OCCURRED_$$output$1 (= _WRITE_SOURCE_$$output$1 #x00000002))))
+(=> (=> _WRITE_HAS_OCCURRED_$$output$1 (= _WRITE_SOURCE_$$output$1 #x00000002)) (and
+(or %lbl%@15241 (=> (= (ControlFlow 0 4844) (- 0 15241)) (=> (not _READ_HAS_OCCURRED_$$output$1) (= _READ_SOURCE_$$output$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$output$1) (= _READ_SOURCE_$$output$1 #x00000000)) (and
+(or %lbl%@15253 (=> (= (ControlFlow 0 4844) (- 0 15253)) (=> (not _WRITE_HAS_OCCURRED_$$output$1) (= _WRITE_SOURCE_$$output$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$output$1) (= _WRITE_SOURCE_$$output$1 #x00000000)) (and
+(or %lbl%@15265 (=> (= (ControlFlow 0 4844) (- 0 15265)) (=> _READ_HAS_OCCURRED_$$inter$1 (= _READ_SOURCE_$$inter$1 #x00000003))))
+(=> (=> _READ_HAS_OCCURRED_$$inter$1 (= _READ_SOURCE_$$inter$1 #x00000003)) (and
+(or %lbl%@15275 (=> (= (ControlFlow 0 4844) (- 0 15275)) (=> _WRITE_HAS_OCCURRED_$$inter$1 at 0 (= _WRITE_SOURCE_$$inter$1 at 0 #x00000001))))
+(=> (=> _WRITE_HAS_OCCURRED_$$inter$1 at 0 (= _WRITE_SOURCE_$$inter$1 at 0 #x00000001)) (and
+(or %lbl%@15283 (=> (= (ControlFlow 0 4844) (- 0 15283)) (=> (not _READ_HAS_OCCURRED_$$inter$1) (= _READ_SOURCE_$$inter$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$inter$1) (= _READ_SOURCE_$$inter$1 #x00000000)) (and
+(or %lbl%@15295 (=> (= (ControlFlow 0 4844) (- 0 15295)) (=> (not _WRITE_HAS_OCCURRED_$$inter$1 at 0) (= _WRITE_SOURCE_$$inter$1 at 0 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$inter$1 at 0) (= _WRITE_SOURCE_$$inter$1 at 0 #x00000000)) (and
+(or %lbl%@15305 (=> (= (ControlFlow 0 4844) (- 0 15305)) (=> p4$1 at 0 _P$1@@0)))
+(=> (=> p4$1 at 0 _P$1@@0) (and
+(or %lbl%@15310 (=> (= (ControlFlow 0 4844) (- 0 15310)) (=> p4$2 at 0 _P$2@@0)))
+(=> (=> p4$2 at 0 _P$2@@0) (=> (= (ControlFlow 0 4844) 4926) $for.cond22_correct)))))))))))))))))))))))))))))))))))))))))
+(let ((inline$$bugle_barrier$0$Return_correct (=> (and %lbl%+4840 true) (=> (= (ControlFlow 0 4840) 4844) $for.cond.tail$2_correct))))
+(let ((inline$$bugle_barrier$0$anon16_Else_correct (=> (and %lbl%+4828 true) (=> (and
+(not (and
+_P$2@@0
+(= inline$$bugle_barrier$0$$1$2 at 0 #b1)))
+(= (ControlFlow 0 4828) 4840)) inline$$bugle_barrier$0$Return_correct))))
+(let ((inline$$bugle_barrier$0$anon16_Then_correct (=> (and %lbl%+4830 true) (=> (and
+_P$2@@0
+(= inline$$bugle_barrier$0$$1$2 at 0 #b1)
+(= (ControlFlow 0 4830) 4840)) inline$$bugle_barrier$0$Return_correct))))
+(let ((inline$$bugle_barrier$0$anon8_correct (=> (and %lbl%+4826 true) (and
+(=> (= (ControlFlow 0 4826) 4830) inline$$bugle_barrier$0$anon16_Then_correct)
+(=> (= (ControlFlow 0 4826) 4828) inline$$bugle_barrier$0$anon16_Else_correct)))))
+(let ((inline$$bugle_barrier$0$anon15_Else_correct (=> (and %lbl%+4824 true) (=> (and
+(not (and
+_P$1@@0
+(= inline$$bugle_barrier$0$$1$1 at 0 #b1)))
+(= (ControlFlow 0 4824) 4826)) inline$$bugle_barrier$0$anon8_correct))))
+(let ((inline$$bugle_barrier$0$anon15_Then_correct (=> (and %lbl%+4832 true) (=> (and
+_P$1@@0
+(= inline$$bugle_barrier$0$$1$1 at 0 #b1)
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _READ_HAS_OCCURRED_$$output$1))
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _WRITE_HAS_OCCURRED_$$output$1))
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _READ_HAS_OCCURRED_$$input$1 at 1))
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _WRITE_HAS_OCCURRED_$$input$1))
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _READ_HAS_OCCURRED_$$dct8x8$1 at 1))
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (not _WRITE_HAS_OCCURRED_$$dct8x8$1))) (and
+(=> (= (ControlFlow 0 4832) 4830) inline$$bugle_barrier$0$anon16_Then_correct)
+(=> (= (ControlFlow 0 4832) 4828) inline$$bugle_barrier$0$anon16_Else_correct))))))
+(let ((inline$$bugle_barrier$0$anon4_correct (=> (and %lbl%+4822 true) (and
+(=> (= (ControlFlow 0 4822) 4832) inline$$bugle_barrier$0$anon15_Then_correct)
+(=> (= (ControlFlow 0 4822) 4824) inline$$bugle_barrier$0$anon15_Else_correct)))))
+(let ((inline$$bugle_barrier$0$anon14_Else_correct (=> (and %lbl%+4820 true) (=> (and
+(not (and
+_P$2@@0
+(= inline$$bugle_barrier$0$$0$2 at 0 #b1)))
+(= (ControlFlow 0 4820) 4822)) inline$$bugle_barrier$0$anon4_correct))))
+(let ((inline$$bugle_barrier$0$anon14_Then_correct (=> (and %lbl%+4834 true) (=> (and
+_P$2@@0
+(= inline$$bugle_barrier$0$$0$2 at 0 #b1)) (and
+(=> (= (ControlFlow 0 4834) 4832) inline$$bugle_barrier$0$anon15_Then_correct)
+(=> (= (ControlFlow 0 4834) 4824) inline$$bugle_barrier$0$anon15_Else_correct))))))
+(let ((inline$$bugle_barrier$0$anon2_correct (=> (and %lbl%+4818 true) (and
+(=> (= (ControlFlow 0 4818) 4834) inline$$bugle_barrier$0$anon14_Then_correct)
+(=> (= (ControlFlow 0 4818) 4820) inline$$bugle_barrier$0$anon14_Else_correct)))))
+(let ((inline$$bugle_barrier$0$anon13_Else_correct (=> (and %lbl%+4816 true) (=> (and
+(not (and
+_P$1@@0
+(= inline$$bugle_barrier$0$$0$1 at 0 #b1)))
+(= (ControlFlow 0 4816) 4818)) inline$$bugle_barrier$0$anon2_correct))))
+(let ((inline$$bugle_barrier$0$anon13_Then_correct (=> (and %lbl%+4836 true) (=> (and
+_P$1@@0
+(= inline$$bugle_barrier$0$$0$1 at 0 #b1)
+(not _READ_HAS_OCCURRED_$$inter$1)
+(not _WRITE_HAS_OCCURRED_$$inter$1 at 0)) (and
+(=> (= (ControlFlow 0 4836) 4834) inline$$bugle_barrier$0$anon14_Then_correct)
+(=> (= (ControlFlow 0 4836) 4820) inline$$bugle_barrier$0$anon14_Else_correct))))))
+(let ((inline$$bugle_barrier$0$anon12_Else_correct (=> (and %lbl%+4814 true) (=> (not (or
+(and
+(not _P$1@@0)
+(not _P$2@@0))
+(and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)
+(or
+(not _P$1@@0)
+(not _P$2@@0))))) (and
+(=> (= (ControlFlow 0 4814) 4836) inline$$bugle_barrier$0$anon13_Then_correct)
+(=> (= (ControlFlow 0 4814) 4816) inline$$bugle_barrier$0$anon13_Else_correct))))))
+(let ((inline$$bugle_barrier$0$anon12_Then_correct (=> (and %lbl%+4838 true) (=> (and
+(or
+(and
+(not _P$1@@0)
+(not _P$2@@0))
+(and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)
+(or
+(not _P$1@@0)
+(not _P$2@@0))))
+(= (ControlFlow 0 4838) 4844)) $for.cond.tail$2_correct))))
+(let ((inline$$bugle_barrier$0$Entry_correct (=> (and %lbl%+4810 true) (=> (and
+(= inline$$bugle_barrier$0$$0$1 at 0 (ite true #b1 #b0))
+(= inline$$bugle_barrier$0$$1$1 at 0 (ite false #b1 #b0))
+(= inline$$bugle_barrier$0$$0$2 at 0 (ite true #b1 #b0))
+(= inline$$bugle_barrier$0$$1$2 at 0 (ite false #b1 #b0))) (and
+(or %lbl%@14709 (=> (= (ControlFlow 0 4810) (- 0 14709)) (=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (= _P$1@@0 _P$2@@0))))
+(=> (=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (= _P$1@@0 _P$2@@0)) (and
+(=> (= (ControlFlow 0 4810) 4838) inline$$bugle_barrier$0$anon12_Then_correct)
+(=> (= (ControlFlow 0 4810) 4814) inline$$bugle_barrier$0$anon12_Else_correct))))))))
+(let (($for.cond.tail$1_correct (=> (and %lbl%+4842 true) (=> (= call1967formal at _offset$2 at 0 (bvadd (bvmul v1$2 at 0 $blockWidth$2@@0) v0$2 at 0)) (and
+(or %lbl%@14573 (=> (= (ControlFlow 0 4842) (- 0 14573)) (not (and
+_P$2@@0
+_WRITE_HAS_OCCURRED_$$inter$1 at 0
+(= _WRITE_OFFSET_$$inter$1 at 0 call1967formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)))))
+(=> (not (and
+_P$2@@0
+_WRITE_HAS_OCCURRED_$$inter$1 at 0
+(= _WRITE_OFFSET_$$inter$1 at 0 call1967formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2))) (and
+(or %lbl%@14609 (=> (= (ControlFlow 0 4842) (- 0 14609)) (not (and
+_P$2@@0
+_READ_HAS_OCCURRED_$$inter$1
+(= _READ_OFFSET_$$inter$1 call1967formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)))))
+(=> (not (and
+_P$2@@0
+_READ_HAS_OCCURRED_$$inter$1
+(= _READ_OFFSET_$$inter$1 call1967formal at _offset$2 at 0)
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2))) (=> (= (ControlFlow 0 4842) 4810) inline$$bugle_barrier$0$Entry_correct)))))))))
+(let ((inline$_LOG_WRITE_$$inter$0$_LOG_WRITE_correct (=> (and %lbl%+4361 true) (=> (and
+(= _WRITE_HAS_OCCURRED_$$inter$1 at 0 (ite (and
+_P$1@@0
+inline$_LOG_WRITE_$$inter$0$track at 0) true _WRITE_HAS_OCCURRED_$$inter$1))
+(= _WRITE_OFFSET_$$inter$1 at 0 (ite (and
+_P$1@@0
+inline$_LOG_WRITE_$$inter$0$track at 0) inline$_LOG_WRITE_$$inter$0$_offset$1 at 0 _WRITE_OFFSET_$$inter$1))
+(= _WRITE_SOURCE_$$inter$1 at 0 (ite (and
+_P$1@@0
+inline$_LOG_WRITE_$$inter$0$track at 0) #x00000001 _WRITE_SOURCE_$$inter$1))
+(= (ControlFlow 0 4361) 4842)) $for.cond.tail$1_correct))))
+(let ((inline$_LOG_WRITE_$$inter$0$Entry_correct (=> (and %lbl%+4359 true) (=> (and
+(= inline$_LOG_WRITE_$$inter$0$_offset$1 at 0 (bvadd (bvmul v1$1 at 0 $blockWidth$1@@0) v0$1 at 0))
+(= (ControlFlow 0 4359) 4361)) inline$_LOG_WRITE_$$inter$0$_LOG_WRITE_correct))))
+(let (($for.cond.tail_correct (=> (and %lbl%+4365 true) (=> (and
+(not p0$1 at 3)
+(not p0$2 at 3)) (and
+(or %lbl%@14472 (=> (= (ControlFlow 0 4365) (- 0 14472)) (=> _P$1@@0 true)))
+(=> (=> _P$1@@0 true) (=> (= (ControlFlow 0 4365) 4359) inline$_LOG_WRITE_$$inter$0$Entry_correct)))))))
+(let (($for.cond.backedge_correct (=> (and %lbl%+5098 true) (=> (or
+p0$1 at 3
+p0$2 at 3) (and
+(or %lbl%@14291 (=> (= (ControlFlow 0 5098) (- 0 14291)) (=> _READ_HAS_OCCURRED_$$input$1 at 1 (= _READ_SOURCE_$$input$1 at 1 #x00000006))))
+(=> (=> _READ_HAS_OCCURRED_$$input$1 at 1 (= _READ_SOURCE_$$input$1 at 1 #x00000006)) (and
+(or %lbl%@14299 (=> (= (ControlFlow 0 5098) (- 0 14299)) (=> _WRITE_HAS_OCCURRED_$$input$1 false)))
+(=> (=> _WRITE_HAS_OCCURRED_$$input$1 false) (and
+(or %lbl%@14305 (=> (= (ControlFlow 0 5098) (- 0 14305)) (=> (not _READ_HAS_OCCURRED_$$input$1 at 1) (= _READ_SOURCE_$$input$1 at 1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$input$1 at 1) (= _READ_SOURCE_$$input$1 at 1 #x00000000)) (and
+(or %lbl%@14315 (=> (= (ControlFlow 0 5098) (- 0 14315)) (=> (not _WRITE_HAS_OCCURRED_$$input$1) (= _WRITE_SOURCE_$$input$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$input$1) (= _WRITE_SOURCE_$$input$1 #x00000000)) (and
+(or %lbl%@14327 (=> (= (ControlFlow 0 5098) (- 0 14327)) (=> _READ_HAS_OCCURRED_$$dct8x8$1 at 1 (or
+(= _READ_SOURCE_$$dct8x8$1 at 1 #x00000004)
+(= _READ_SOURCE_$$dct8x8$1 at 1 #x00000005)))))
+(=> (=> _READ_HAS_OCCURRED_$$dct8x8$1 at 1 (or
+(= _READ_SOURCE_$$dct8x8$1 at 1 #x00000004)
+(= _READ_SOURCE_$$dct8x8$1 at 1 #x00000005))) (and
+(or %lbl%@14342 (=> (= (ControlFlow 0 5098) (- 0 14342)) (=> _WRITE_HAS_OCCURRED_$$dct8x8$1 false)))
+(=> (=> _WRITE_HAS_OCCURRED_$$dct8x8$1 false) (and
+(or %lbl%@14348 (=> (= (ControlFlow 0 5098) (- 0 14348)) (=> (not _READ_HAS_OCCURRED_$$dct8x8$1 at 1) (= _READ_SOURCE_$$dct8x8$1 at 1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$dct8x8$1 at 1) (= _READ_SOURCE_$$dct8x8$1 at 1 #x00000000)) (and
+(or %lbl%@14358 (=> (= (ControlFlow 0 5098) (- 0 14358)) (=> (not _WRITE_HAS_OCCURRED_$$dct8x8$1) (= _WRITE_SOURCE_$$dct8x8$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$dct8x8$1) (= _WRITE_SOURCE_$$dct8x8$1 #x00000000)) (and
+(or %lbl%@14370 (=> (= (ControlFlow 0 5098) (- 0 14370)) (=> _READ_HAS_OCCURRED_$$output$1 false)))
+(=> (=> _READ_HAS_OCCURRED_$$output$1 false) (and
+(or %lbl%@14376 (=> (= (ControlFlow 0 5098) (- 0 14376)) (=> _WRITE_HAS_OCCURRED_$$output$1 (= _WRITE_SOURCE_$$output$1 #x00000002))))
+(=> (=> _WRITE_HAS_OCCURRED_$$output$1 (= _WRITE_SOURCE_$$output$1 #x00000002)) (and
+(or %lbl%@14386 (=> (= (ControlFlow 0 5098) (- 0 14386)) (=> (not _READ_HAS_OCCURRED_$$output$1) (= _READ_SOURCE_$$output$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$output$1) (= _READ_SOURCE_$$output$1 #x00000000)) (and
+(or %lbl%@14398 (=> (= (ControlFlow 0 5098) (- 0 14398)) (=> (not _WRITE_HAS_OCCURRED_$$output$1) (= _WRITE_SOURCE_$$output$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$output$1) (= _WRITE_SOURCE_$$output$1 #x00000000)) (and
+(or %lbl%@14410 (=> (= (ControlFlow 0 5098) (- 0 14410)) (=> _READ_HAS_OCCURRED_$$inter$1 (= _READ_SOURCE_$$inter$1 #x00000003))))
+(=> (=> _READ_HAS_OCCURRED_$$inter$1 (= _READ_SOURCE_$$inter$1 #x00000003)) (and
+(or %lbl%@14420 (=> (= (ControlFlow 0 5098) (- 0 14420)) (=> _WRITE_HAS_OCCURRED_$$inter$1 (= _WRITE_SOURCE_$$inter$1 #x00000001))))
+(=> (=> _WRITE_HAS_OCCURRED_$$inter$1 (= _WRITE_SOURCE_$$inter$1 #x00000001)) (and
+(or %lbl%@14430 (=> (= (ControlFlow 0 5098) (- 0 14430)) (=> (not _READ_HAS_OCCURRED_$$inter$1) (= _READ_SOURCE_$$inter$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$inter$1) (= _READ_SOURCE_$$inter$1 #x00000000)) (and
+(or %lbl%@14442 (=> (= (ControlFlow 0 5098) (- 0 14442)) (=> (not _WRITE_HAS_OCCURRED_$$inter$1) (= _WRITE_SOURCE_$$inter$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$inter$1) (= _WRITE_SOURCE_$$inter$1 #x00000000)) (and
+(or %lbl%@14454 (=> (= (ControlFlow 0 5098) (- 0 14454)) (=> p0$1 at 3 _P$1@@0)))
+(=> (=> p0$1 at 3 _P$1@@0) (and
+(or %lbl%@14459 (=> (= (ControlFlow 0 5098) (- 0 14459)) (=> p0$2 at 3 _P$2@@0)))
+(=> (=> p0$2 at 3 _P$2@@0) true))))))))))))))))))))))))))))))))))))))))
+(let (($for.cond$2_correct (=> (and %lbl%+4283 true) (and
+(or %lbl%@14189 (=> (= (ControlFlow 0 4283) (- 0 14189)) (not (and
+p1$2 at 1
+_WRITE_HAS_OCCURRED_$$input$1
+(= _WRITE_OFFSET_$$input$1 call1785formal@$ret$2 at 0)))))
+(=> (not (and
+p1$2 at 1
+_WRITE_HAS_OCCURRED_$$input$1
+(= _WRITE_OFFSET_$$input$1 call1785formal@$ret$2 at 0))) (=> (and
+(= $acc.0$1 at 2 (ite p1$1 at 1 (FADD32 $acc.0$1 at 1 (FMUL32 v6$1 at 1 v7$1 at 1)) $acc.0$1 at 1))
+(= $acc.0$2 at 2 (ite p1$2 at 1 (FADD32 $acc.0$2 at 1 (FMUL32 v6$2 at 1 v7$2 at 1)) $acc.0$2 at 1))
+(= $k.0$1 at 2 (ite p1$1 at 1 (bvadd $k.0$1 at 1 #x00000001) $k.0$1 at 1))
+(= $k.0$2 at 2 (ite p1$2 at 1 (bvadd $k.0$2 at 1 #x00000001) $k.0$2 at 1))
+(= p0$1 at 3 (ite p1$1 at 1 true p0$1 at 2))
+(= p0$2 at 3 (ite p1$2 at 1 true p0$2 at 2))) (and
+(=> (= (ControlFlow 0 4283) 5098) $for.cond.backedge_correct)
+(=> (= (ControlFlow 0 4283) 4365) $for.cond.tail_correct))))))))
+(let ((inline$_LOG_READ_$$input$0$_LOG_READ_correct (=> (and %lbl%+4277 true) (=> (and
+(= _READ_HAS_OCCURRED_$$input$1 at 1 (ite (and
+p1$1 at 1
+inline$_LOG_READ_$$input$0$track at 1) true _READ_HAS_OCCURRED_$$input$1 at 0))
+(= _READ_OFFSET_$$input$1 at 1 (ite (and
+p1$1 at 1
+inline$_LOG_READ_$$input$0$track at 1) call1785formal@$ret$1 at 0 _READ_OFFSET_$$input$1 at 0))
+(= _READ_SOURCE_$$input$1 at 1 (ite (and
+p1$1 at 1
+inline$_LOG_READ_$$input$0$track at 1) #x00000006 _READ_SOURCE_$$input$1 at 0))
+(= (ControlFlow 0 4277) 4283)) $for.cond$2_correct))))
+(let (($for.cond$1_correct (=> (and %lbl%+4281 true) (and
+(or %lbl%@14080 (=> (= (ControlFlow 0 4281) (- 0 14080)) (not (and
+p1$2 at 1
+_WRITE_HAS_OCCURRED_$$dct8x8$1
+(= _WRITE_OFFSET_$$dct8x8$1 $cond$2 at 2)))))
+(=> (not (and
+p1$2 at 1
+_WRITE_HAS_OCCURRED_$$dct8x8$1
+(= _WRITE_OFFSET_$$dct8x8$1 $cond$2 at 2))) (and
+(or %lbl%@14094 (=> (= (ControlFlow 0 4281) (- 0 14094)) (=> p1$1 at 1 true)))
+(=> (=> p1$1 at 1 true) (=> (and
+(= v7$1 at 1 (ite p1$1 at 1 _HAVOC_bv32$1 at 2 v7$1 at 0))
+(= v7$2 at 1 (ite p1$2 at 1 _HAVOC_bv32$2 at 2 v7$2 at 0))
+(= (ControlFlow 0 4281) 4277)) inline$_LOG_READ_$$input$0$_LOG_READ_correct))))))))
+(let ((inline$_LOG_READ_$$dct8x8$0$_LOG_READ_correct (=> (and %lbl%+4195 true) (=> (and
+(= _READ_HAS_OCCURRED_$$dct8x8$1 at 1 (ite (and
+p1$1 at 1
+inline$_LOG_READ_$$dct8x8$0$track at 1) true _READ_HAS_OCCURRED_$$dct8x8$1 at 0))
+(= _READ_OFFSET_$$dct8x8$1 at 1 (ite (and
+p1$1 at 1
+inline$_LOG_READ_$$dct8x8$0$track at 1) $cond$1 at 2 _READ_OFFSET_$$dct8x8$1 at 0))
+(= _READ_SOURCE_$$dct8x8$1 at 1 (ite (and
+p1$1 at 1
+inline$_LOG_READ_$$dct8x8$0$track at 1) #x00000005 _READ_SOURCE_$$dct8x8$1 at 0))
+(= (ControlFlow 0 4195) 4281)) $for.cond$1_correct))))
+(let (($for.cond_correct (=> (and %lbl%+4199 true) (=> (and
+(=> _READ_HAS_OCCURRED_$$input$1 at 0 (= _READ_SOURCE_$$input$1 at 0 #x00000006))
+(=> _WRITE_HAS_OCCURRED_$$input$1 false)) (=> (and
+(=> (not _READ_HAS_OCCURRED_$$input$1 at 0) (= _READ_SOURCE_$$input$1 at 0 #x00000000))
+(=> (not _WRITE_HAS_OCCURRED_$$input$1) (= _WRITE_SOURCE_$$input$1 #x00000000))
+(=> _READ_HAS_OCCURRED_$$dct8x8$1 at 0 (or
+(= _READ_SOURCE_$$dct8x8$1 at 0 #x00000004)
+(= _READ_SOURCE_$$dct8x8$1 at 0 #x00000005)))
+(=> _WRITE_HAS_OCCURRED_$$dct8x8$1 false)
+(=> (not _READ_HAS_OCCURRED_$$dct8x8$1 at 0) (= _READ_SOURCE_$$dct8x8$1 at 0 #x00000000))
+(=> (not _WRITE_HAS_OCCURRED_$$dct8x8$1) (= _WRITE_SOURCE_$$dct8x8$1 #x00000000))
+(=> _READ_HAS_OCCURRED_$$output$1 false)
+(=> _WRITE_HAS_OCCURRED_$$output$1 (= _WRITE_SOURCE_$$output$1 #x00000002))
+(=> (not _READ_HAS_OCCURRED_$$output$1) (= _READ_SOURCE_$$output$1 #x00000000))
+(=> (not _WRITE_HAS_OCCURRED_$$output$1) (= _WRITE_SOURCE_$$output$1 #x00000000))
+(=> _READ_HAS_OCCURRED_$$inter$1 (= _READ_SOURCE_$$inter$1 #x00000003))
+(=> _WRITE_HAS_OCCURRED_$$inter$1 (= _WRITE_SOURCE_$$inter$1 #x00000001))
+(=> (not _READ_HAS_OCCURRED_$$inter$1) (= _READ_SOURCE_$$inter$1 #x00000000))
+(=> (not _WRITE_HAS_OCCURRED_$$inter$1) (= _WRITE_SOURCE_$$inter$1 #x00000000))
+(=> p0$1 at 1 _P$1@@0)
+(=> p0$2 at 1 _P$2@@0)
+(= v3$1 at 1 (ite p0$1 at 1 (bvult $k.0$1 at 1 $blockWidth$1@@0) v3$1 at 0))
+(= v3$2 at 1 (ite p0$2 at 1 (bvult $k.0$2 at 1 $blockWidth$2@@0) v3$2 at 0))
+(= p1$1 at 1 (ite p0$1 at 1 v3$1 at 1 false))
+(= p1$2 at 1 (ite p0$2 at 1 v3$2 at 1 false))
+(= p0$1 at 2 (ite p0$1 at 1 v3$1 at 1 p0$1 at 1))
+(= p0$2 at 2 (ite p0$2 at 1 v3$2 at 1 p0$2 at 1))
+(= v4$1 at 1 (ite p1$1 at 1 (not (= $inverse$1 #x00000000)) v4$1 at 0))
+(= v4$2 at 1 (ite p1$2 at 1 (not (= $inverse$2 #x00000000)) v4$2 at 0))
+(= p3$1 at 1 (ite p1$1 at 1 v4$1 at 1 false))
+(= p3$2 at 1 (ite p1$2 at 1 v4$2 at 1 false))
+(= p2$1 at 1 (ite p1$1 at 1 (not v4$1 at 1) false))
+(= p2$2 at 1 (ite p1$2 at 1 (not v4$2 at 1) false))
+(= $cond$1 at 1 (ite p2$1 at 1 (bvadd (bvmul $k.0$1 at 1 $blockWidth$1@@0) v0$1 at 0) $cond$1 at 0))
+(= $cond$2 at 1 (ite p2$2 at 1 (bvadd (bvmul $k.0$2 at 1 $blockWidth$2@@0) v0$2 at 0) $cond$2 at 0))
+(= $cond$1 at 2 (ite p3$1 at 1 (bvadd (bvmul v0$1 at 0 $blockWidth$1@@0) $k.0$1 at 1) $cond$1 at 1))
+(= $cond$2 at 2 (ite p3$2 at 1 (bvadd (bvmul v0$2 at 0 $blockWidth$2@@0) $k.0$2 at 1) $cond$2 at 1))) (and
+(or %lbl%@13261 (=> (= (ControlFlow 0 4199) (- 0 13261)) (bvsgt group_size_x #x00000000)))
+(=> (bvsgt group_size_x #x00000000) (and
+(or %lbl%@13267 (=> (= (ControlFlow 0 4199) (- 0 13267)) (bvsgt num_groups_x #x00000000)))
+(=> (bvsgt num_groups_x #x00000000) (and
+(or %lbl%@13273 (=> (= (ControlFlow 0 4199) (- 0 13273)) (bvsge group_id_x$1 #x00000000)))
+(=> (bvsge group_id_x$1 #x00000000) (and
+(or %lbl%@13279 (=> (= (ControlFlow 0 4199) (- 0 13279)) (bvsge group_id_x$2 #x00000000)))
+(=> (bvsge group_id_x$2 #x00000000) (and
+(or %lbl%@13285 (=> (= (ControlFlow 0 4199) (- 0 13285)) (bvslt group_id_x$1 num_groups_x)))
+(=> (bvslt group_id_x$1 num_groups_x) (and
+(or %lbl%@13291 (=> (= (ControlFlow 0 4199) (- 0 13291)) (bvslt group_id_x$2 num_groups_x)))
+(=> (bvslt group_id_x$2 num_groups_x) (and
+(or %lbl%@13297 (=> (= (ControlFlow 0 4199) (- 0 13297)) (bvsge local_id_x$1 #x00000000)))
+(=> (bvsge local_id_x$1 #x00000000) (and
+(or %lbl%@13303 (=> (= (ControlFlow 0 4199) (- 0 13303)) (bvsge local_id_x$2 #x00000000)))
+(=> (bvsge local_id_x$2 #x00000000) (and
+(or %lbl%@13309 (=> (= (ControlFlow 0 4199) (- 0 13309)) (bvslt local_id_x$1 group_size_x)))
+(=> (bvslt local_id_x$1 group_size_x) (and
+(or %lbl%@13315 (=> (= (ControlFlow 0 4199) (- 0 13315)) (bvslt local_id_x$2 group_size_x)))
+(=> (bvslt local_id_x$2 group_size_x) (and
+(or %lbl%@13321 (=> (= (ControlFlow 0 4199) (- 0 13321)) (bvsgt group_size_y #x00000000)))
+(=> (bvsgt group_size_y #x00000000) (and
+(or %lbl%@13327 (=> (= (ControlFlow 0 4199) (- 0 13327)) (bvsgt num_groups_y #x00000000)))
+(=> (bvsgt num_groups_y #x00000000) (and
+(or %lbl%@13333 (=> (= (ControlFlow 0 4199) (- 0 13333)) (bvsge group_id_y$1 #x00000000)))
+(=> (bvsge group_id_y$1 #x00000000) (and
+(or %lbl%@13339 (=> (= (ControlFlow 0 4199) (- 0 13339)) (bvsge group_id_y$2 #x00000000)))
+(=> (bvsge group_id_y$2 #x00000000) (and
+(or %lbl%@13345 (=> (= (ControlFlow 0 4199) (- 0 13345)) (bvslt group_id_y$1 num_groups_y)))
+(=> (bvslt group_id_y$1 num_groups_y) (and
+(or %lbl%@13351 (=> (= (ControlFlow 0 4199) (- 0 13351)) (bvslt group_id_y$2 num_groups_y)))
+(=> (bvslt group_id_y$2 num_groups_y) (and
+(or %lbl%@13357 (=> (= (ControlFlow 0 4199) (- 0 13357)) (bvsge local_id_y$1 #x00000000)))
+(=> (bvsge local_id_y$1 #x00000000) (and
+(or %lbl%@13363 (=> (= (ControlFlow 0 4199) (- 0 13363)) (bvsge local_id_y$2 #x00000000)))
+(=> (bvsge local_id_y$2 #x00000000) (and
+(or %lbl%@13369 (=> (= (ControlFlow 0 4199) (- 0 13369)) (bvslt local_id_y$1 group_size_y)))
+(=> (bvslt local_id_y$1 group_size_y) (and
+(or %lbl%@13375 (=> (= (ControlFlow 0 4199) (- 0 13375)) (bvslt local_id_y$2 group_size_y)))
+(=> (bvslt local_id_y$2 group_size_y) (and
+(or %lbl%@13381 (=> (= (ControlFlow 0 4199) (- 0 13381)) (bvsgt group_size_z #x00000000)))
+(=> (bvsgt group_size_z #x00000000) (and
+(or %lbl%@13387 (=> (= (ControlFlow 0 4199) (- 0 13387)) (bvsgt num_groups_z #x00000000)))
+(=> (bvsgt num_groups_z #x00000000) (and
+(or %lbl%@13393 (=> (= (ControlFlow 0 4199) (- 0 13393)) (bvsge group_id_z$1 #x00000000)))
+(=> (bvsge group_id_z$1 #x00000000) (and
+(or %lbl%@13399 (=> (= (ControlFlow 0 4199) (- 0 13399)) (bvsge group_id_z$2 #x00000000)))
+(=> (bvsge group_id_z$2 #x00000000) (and
+(or %lbl%@13405 (=> (= (ControlFlow 0 4199) (- 0 13405)) (bvslt group_id_z$1 num_groups_z)))
+(=> (bvslt group_id_z$1 num_groups_z) (and
+(or %lbl%@13411 (=> (= (ControlFlow 0 4199) (- 0 13411)) (bvslt group_id_z$2 num_groups_z)))
+(=> (bvslt group_id_z$2 num_groups_z) (and
+(or %lbl%@13417 (=> (= (ControlFlow 0 4199) (- 0 13417)) (bvsge local_id_z$1 #x00000000)))
+(=> (bvsge local_id_z$1 #x00000000) (and
+(or %lbl%@13423 (=> (= (ControlFlow 0 4199) (- 0 13423)) (bvsge local_id_z$2 #x00000000)))
+(=> (bvsge local_id_z$2 #x00000000) (and
+(or %lbl%@13429 (=> (= (ControlFlow 0 4199) (- 0 13429)) (bvslt local_id_z$1 group_size_z)))
+(=> (bvslt local_id_z$1 group_size_z) (and
+(or %lbl%@13435 (=> (= (ControlFlow 0 4199) (- 0 13435)) (bvslt local_id_z$2 group_size_z)))
+(=> (bvslt local_id_z$2 group_size_z) (and
+(or %lbl%@13441 (=> (= (ControlFlow 0 4199) (- 0 13441)) (=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (or
+(not (= local_id_x$1 local_id_x$2))
+(not (= local_id_y$1 local_id_y$2))
+(not (= local_id_z$1 local_id_z$2))))))
+(=> (=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (or
+(not (= local_id_x$1 local_id_x$2))
+(not (= local_id_y$1 local_id_y$2))
+(not (= local_id_z$1 local_id_z$2)))) (and
+(or %lbl%@13487 (=> (= (ControlFlow 0 4199) (- 0 13487)) (=> _b0 (= p1$1 at 1 p1$2 at 1))))
+(=> (=> _b0 (= p1$1 at 1 p1$2 at 1)) (and
+(or %lbl%@13495 (=> (= (ControlFlow 0 4199) (- 0 13495)) (=> _b1 (=> (and
+p1$1 at 1
+p1$2 at 1) (= group_id_x$1 group_id_x$2)))))
+(=> (=> _b1 (=> (and
+p1$1 at 1
+p1$2 at 1) (= group_id_x$1 group_id_x$2))) (and
+(or %lbl%@13509 (=> (= (ControlFlow 0 4199) (- 0 13509)) (=> _b2 (= group_id_x$1 group_id_x$2))))
+(=> (=> _b2 (= group_id_x$1 group_id_x$2)) (and
+(or %lbl%@13517 (=> (= (ControlFlow 0 4199) (- 0 13517)) (=> _b3 (=> (and
+p1$1 at 1
+p1$2 at 1) (= group_id_y$1 group_id_y$2)))))
+(=> (=> _b3 (=> (and
+p1$1 at 1
+p1$2 at 1) (= group_id_y$1 group_id_y$2))) (and
+(or %lbl%@13531 (=> (= (ControlFlow 0 4199) (- 0 13531)) (=> _b4 (= group_id_y$1 group_id_y$2))))
+(=> (=> _b4 (= group_id_y$1 group_id_y$2)) (and
+(or %lbl%@13539 (=> (= (ControlFlow 0 4199) (- 0 13539)) (=> _b5 (=> (and
+p1$1 at 1
+p1$2 at 1) (= v1$1 at 0 v1$2 at 0)))))
+(=> (=> _b5 (=> (and
+p1$1 at 1
+p1$2 at 1) (= v1$1 at 0 v1$2 at 0))) (and
+(or %lbl%@13553 (=> (= (ControlFlow 0 4199) (- 0 13553)) (=> _b6 (= v1$1 at 0 v1$2 at 0))))
+(=> (=> _b6 (= v1$1 at 0 v1$2 at 0)) (and
+(or %lbl%@13561 (=> (= (ControlFlow 0 4199) (- 0 13561)) (=> _b7 (=> (and
+p1$1 at 1
+p1$2 at 1) (= $k.0$1 at 1 $k.0$2 at 1)))))
+(=> (=> _b7 (=> (and
+p1$1 at 1
+p1$2 at 1) (= $k.0$1 at 1 $k.0$2 at 1))) (and
+(or %lbl%@13575 (=> (= (ControlFlow 0 4199) (- 0 13575)) (=> _b8 (= $k.0$1 at 1 $k.0$2 at 1))))
+(=> (=> _b8 (= $k.0$1 at 1 $k.0$2 at 1)) (and
+(or %lbl%@13583 (=> (= (ControlFlow 0 4199) (- 0 13583)) (=> _b9 (=> (and
+p1$1 at 1
+p1$2 at 1) (= $blockWidth$1@@0 $blockWidth$2@@0)))))
+(=> (=> _b9 (=> (and
+p1$1 at 1
+p1$2 at 1) (= $blockWidth$1@@0 $blockWidth$2@@0))) (and
+(or %lbl%@13597 (=> (= (ControlFlow 0 4199) (- 0 13597)) (=> _b10 (= $blockWidth$1@@0 $blockWidth$2@@0))))
+(=> (=> _b10 (= $blockWidth$1@@0 $blockWidth$2@@0)) (and
+(or %lbl%@13605 (=> (= (ControlFlow 0 4199) (- 0 13605)) (=> _b11 (=> (and
+p1$1 at 1
+p1$2 at 1) (= $width$1 $width$2)))))
+(=> (=> _b11 (=> (and
+p1$1 at 1
+p1$2 at 1) (= $width$1 $width$2))) (and
+(or %lbl%@13619 (=> (= (ControlFlow 0 4199) (- 0 13619)) (=> _b12 (= $width$1 $width$2))))
+(=> (=> _b12 (= $width$1 $width$2)) (and
+(or %lbl%@13627 (=> (= (ControlFlow 0 4199) (- 0 13627)) (=> _b13 (not _READ_HAS_OCCURRED_$$output$1))))
+(=> (=> _b13 (not _READ_HAS_OCCURRED_$$output$1)) (and
+(or %lbl%@13635 (=> (= (ControlFlow 0 4199) (- 0 13635)) (=> _b14 (not _WRITE_HAS_OCCURRED_$$output$1))))
+(=> (=> _b14 (not _WRITE_HAS_OCCURRED_$$output$1)) (and
+(or %lbl%@13643 (=> (= (ControlFlow 0 4199) (- 0 13643)) (=> _b15 (=> _WRITE_HAS_OCCURRED_$$output$1 (= _WRITE_OFFSET_$$output$1 local_id_x$1)))))
+(=> (=> _b15 (=> _WRITE_HAS_OCCURRED_$$output$1 (= _WRITE_OFFSET_$$output$1 local_id_x$1))) (and
+(or %lbl%@13657 (=> (= (ControlFlow 0 4199) (- 0 13657)) (=> _b16 (=> _READ_HAS_OCCURRED_$$output$1 (= _READ_OFFSET_$$output$1 local_id_x$1)))))
+(=> (=> _b16 (=> _READ_HAS_OCCURRED_$$output$1 (= _READ_OFFSET_$$output$1 local_id_x$1))) (and
+(or %lbl%@13671 (=> (= (ControlFlow 0 4199) (- 0 13671)) (=> _b17 (not _READ_HAS_OCCURRED_$$input$1 at 0))))
+(=> (=> _b17 (not _READ_HAS_OCCURRED_$$input$1 at 0)) (and
+(or %lbl%@13678 (=> (= (ControlFlow 0 4199) (- 0 13678)) (=> _b18 (not _WRITE_HAS_OCCURRED_$$input$1))))
+(=> (=> _b18 (not _WRITE_HAS_OCCURRED_$$input$1)) (and
+(or %lbl%@13686 (=> (= (ControlFlow 0 4199) (- 0 13686)) (=> _b19 (=> _WRITE_HAS_OCCURRED_$$input$1 (= _WRITE_OFFSET_$$input$1 local_id_x$1)))))
+(=> (=> _b19 (=> _WRITE_HAS_OCCURRED_$$input$1 (= _WRITE_OFFSET_$$input$1 local_id_x$1))) (and
+(or %lbl%@13700 (=> (= (ControlFlow 0 4199) (- 0 13700)) (=> _b20 (=> _READ_HAS_OCCURRED_$$input$1 at 0 (= _READ_OFFSET_$$input$1 at 0 local_id_x$1)))))
+(=> (=> _b20 (=> _READ_HAS_OCCURRED_$$input$1 at 0 (= _READ_OFFSET_$$input$1 at 0 local_id_x$1))) (and
+(or %lbl%@13712 (=> (= (ControlFlow 0 4199) (- 0 13712)) (=> _b21 (not _READ_HAS_OCCURRED_$$dct8x8$1 at 0))))
+(=> (=> _b21 (not _READ_HAS_OCCURRED_$$dct8x8$1 at 0)) (and
+(or %lbl%@13719 (=> (= (ControlFlow 0 4199) (- 0 13719)) (=> _b22 (not _WRITE_HAS_OCCURRED_$$dct8x8$1))))
+(=> (=> _b22 (not _WRITE_HAS_OCCURRED_$$dct8x8$1)) (and
+(or %lbl%@13727 (=> (= (ControlFlow 0 4199) (- 0 13727)) (=> _b23 (=> _WRITE_HAS_OCCURRED_$$dct8x8$1 (= _WRITE_OFFSET_$$dct8x8$1 local_id_x$1)))))
+(=> (=> _b23 (=> _WRITE_HAS_OCCURRED_$$dct8x8$1 (= _WRITE_OFFSET_$$dct8x8$1 local_id_x$1))) (and
+(or %lbl%@13741 (=> (= (ControlFlow 0 4199) (- 0 13741)) (=> _b24 (=> _READ_HAS_OCCURRED_$$dct8x8$1 at 0 (= _READ_OFFSET_$$dct8x8$1 at 0 local_id_x$1)))))
+(=> (=> _b24 (=> _READ_HAS_OCCURRED_$$dct8x8$1 at 0 (= _READ_OFFSET_$$dct8x8$1 at 0 local_id_x$1))) (and
+(or %lbl%@13753 (=> (= (ControlFlow 0 4199) (- 0 13753)) (=> _b25 (not _READ_HAS_OCCURRED_$$inter$1))))
+(=> (=> _b25 (not _READ_HAS_OCCURRED_$$inter$1)) (and
+(or %lbl%@13761 (=> (= (ControlFlow 0 4199) (- 0 13761)) (=> _b26 (not _WRITE_HAS_OCCURRED_$$inter$1))))
+(=> (=> _b26 (not _WRITE_HAS_OCCURRED_$$inter$1)) (and
+(or %lbl%@13769 (=> (= (ControlFlow 0 4199) (- 0 13769)) (=> _b27 (=> _WRITE_HAS_OCCURRED_$$inter$1 (= _WRITE_OFFSET_$$inter$1 local_id_x$1)))))
+(=> (=> _b27 (=> _WRITE_HAS_OCCURRED_$$inter$1 (= _WRITE_OFFSET_$$inter$1 local_id_x$1))) (and
+(or %lbl%@13783 (=> (= (ControlFlow 0 4199) (- 0 13783)) (=> _b28 (=> _READ_HAS_OCCURRED_$$inter$1 (= _READ_OFFSET_$$inter$1 local_id_x$1)))))
+(=> (=> _b28 (=> _READ_HAS_OCCURRED_$$inter$1 (= _READ_OFFSET_$$inter$1 local_id_x$1))) (=> (=> _b29 (= call1785formal@$ret$1 at 0 call1785formal@$ret$2 at 0)) (=> (and
+(=> _b30 (not _READ_HAS_OCCURRED_$$output$1))
+(=> _b31 (not _WRITE_HAS_OCCURRED_$$output$1))
+(=> _b32 (=> _WRITE_HAS_OCCURRED_$$output$1 (= _WRITE_OFFSET_$$output$1 local_id_x$1)))
+(=> _b33 (=> _READ_HAS_OCCURRED_$$output$1 (= _READ_OFFSET_$$output$1 local_id_x$1)))
+(=> _b34 (not _READ_HAS_OCCURRED_$$input$1 at 0))
+(=> _b35 (not _WRITE_HAS_OCCURRED_$$input$1))
+(=> _b36 (=> _WRITE_HAS_OCCURRED_$$input$1 (= _WRITE_OFFSET_$$input$1 local_id_x$1)))
+(=> _b37 (=> _READ_HAS_OCCURRED_$$input$1 at 0 (= _READ_OFFSET_$$input$1 at 0 local_id_x$1)))
+(=> _b38 (not _READ_HAS_OCCURRED_$$dct8x8$1 at 0))
+(=> _b39 (not _WRITE_HAS_OCCURRED_$$dct8x8$1))
+(=> _b40 (=> _WRITE_HAS_OCCURRED_$$dct8x8$1 (= _WRITE_OFFSET_$$dct8x8$1 local_id_x$1)))
+(=> _b41 (=> _READ_HAS_OCCURRED_$$dct8x8$1 at 0 (= _READ_OFFSET_$$dct8x8$1 at 0 local_id_x$1)))
+(=> _b42 (not _READ_HAS_OCCURRED_$$inter$1))
+(=> _b43 (not _WRITE_HAS_OCCURRED_$$inter$1))
+(=> _b44 (=> _WRITE_HAS_OCCURRED_$$inter$1 (= _WRITE_OFFSET_$$inter$1 local_id_x$1)))
+(=> _b45 (=> _READ_HAS_OCCURRED_$$inter$1 (= _READ_OFFSET_$$inter$1 local_id_x$1)))) (and
+(or %lbl%@13985 (=> (= (ControlFlow 0 4199) (- 0 13985)) (=> p1$1 at 1 true)))
+(=> (=> p1$1 at 1 true) (=> (and
+(= v6$1 at 1 (ite p1$1 at 1 _HAVOC_bv32$1 at 1 v6$1 at 0))
+(= v6$2 at 1 (ite p1$2 at 1 _HAVOC_bv32$2 at 1 v6$2 at 0))
+(= (ControlFlow 0 4199) 4195)) inline$_LOG_READ_$$dct8x8$0$_LOG_READ_correct))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+(let (($entry_correct@@0 (=> (and %lbl%+4117 true) (=> (and
+(= v0$1 at 0 (ite _P$1@@0 local_id_x$1 v0$1))
+(= v0$2 at 0 (ite _P$2@@0 local_id_x$2 v0$2))) (=> (and
+(= v1$1 at 0 (ite _P$1@@0 local_id_y$1 v1$1))
+(= v1$2 at 0 (ite _P$2@@0 local_id_y$2 v1$2))
+(= v2$1 at 0 (ite _P$1@@0 (bvadd (bvmul (bvadd (bvmul group_size_y group_id_y$1) local_id_y$1) $width$1) (bvadd (bvmul group_size_x group_id_x$1) local_id_x$1)) v2$1))
+(= v2$2 at 0 (ite _P$2@@0 (bvadd (bvmul (bvadd (bvmul group_size_y group_id_y$2) local_id_y$2) $width$2) (bvadd (bvmul group_size_x group_id_x$2) local_id_x$2)) v2$2))) (=> (and
+(= $acc.0$1 at 0 (ite _P$1@@0 #x00000000 $acc.0$1))
+(= $acc.0$2 at 0 (ite _P$2@@0 #x00000000 $acc.0$2))
+(= $k.0$1 at 0 (ite _P$1@@0 #x00000000 $k.0$1))
+(= $k.0$2 at 0 (ite _P$2@@0 #x00000000 $k.0$2))
+(= p0$1 at 0 (ite _P$1@@0 true false))
+(= p0$2 at 0 (ite _P$2@@0 true false))) (and
+(or %lbl%@12497 (=> (= (ControlFlow 0 4117) (- 0 12497)) (=> _READ_HAS_OCCURRED_$$input$1 (= _READ_SOURCE_$$input$1 #x00000006))))
+(=> (=> _READ_HAS_OCCURRED_$$input$1 (= _READ_SOURCE_$$input$1 #x00000006)) (and
+(or %lbl%@12507 (=> (= (ControlFlow 0 4117) (- 0 12507)) (=> _WRITE_HAS_OCCURRED_$$input$1 false)))
+(=> (=> _WRITE_HAS_OCCURRED_$$input$1 false) (and
+(or %lbl%@12513 (=> (= (ControlFlow 0 4117) (- 0 12513)) (=> (not _READ_HAS_OCCURRED_$$input$1) (= _READ_SOURCE_$$input$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$input$1) (= _READ_SOURCE_$$input$1 #x00000000)) (and
+(or %lbl%@12525 (=> (= (ControlFlow 0 4117) (- 0 12525)) (=> (not _WRITE_HAS_OCCURRED_$$input$1) (= _WRITE_SOURCE_$$input$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$input$1) (= _WRITE_SOURCE_$$input$1 #x00000000)) (and
+(or %lbl%@12537 (=> (= (ControlFlow 0 4117) (- 0 12537)) (=> _READ_HAS_OCCURRED_$$dct8x8$1 (or
+(= _READ_SOURCE_$$dct8x8$1 #x00000004)
+(= _READ_SOURCE_$$dct8x8$1 #x00000005)))))
+(=> (=> _READ_HAS_OCCURRED_$$dct8x8$1 (or
+(= _READ_SOURCE_$$dct8x8$1 #x00000004)
+(= _READ_SOURCE_$$dct8x8$1 #x00000005))) (and
+(or %lbl%@12555 (=> (= (ControlFlow 0 4117) (- 0 12555)) (=> _WRITE_HAS_OCCURRED_$$dct8x8$1 false)))
+(=> (=> _WRITE_HAS_OCCURRED_$$dct8x8$1 false) (and
+(or %lbl%@12561 (=> (= (ControlFlow 0 4117) (- 0 12561)) (=> (not _READ_HAS_OCCURRED_$$dct8x8$1) (= _READ_SOURCE_$$dct8x8$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$dct8x8$1) (= _READ_SOURCE_$$dct8x8$1 #x00000000)) (and
+(or %lbl%@12573 (=> (= (ControlFlow 0 4117) (- 0 12573)) (=> (not _WRITE_HAS_OCCURRED_$$dct8x8$1) (= _WRITE_SOURCE_$$dct8x8$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$dct8x8$1) (= _WRITE_SOURCE_$$dct8x8$1 #x00000000)) (and
+(or %lbl%@12585 (=> (= (ControlFlow 0 4117) (- 0 12585)) (=> _READ_HAS_OCCURRED_$$output$1 false)))
+(=> (=> _READ_HAS_OCCURRED_$$output$1 false) (and
+(or %lbl%@12591 (=> (= (ControlFlow 0 4117) (- 0 12591)) (=> _WRITE_HAS_OCCURRED_$$output$1 (= _WRITE_SOURCE_$$output$1 #x00000002))))
+(=> (=> _WRITE_HAS_OCCURRED_$$output$1 (= _WRITE_SOURCE_$$output$1 #x00000002)) (and
+(or %lbl%@12601 (=> (= (ControlFlow 0 4117) (- 0 12601)) (=> (not _READ_HAS_OCCURRED_$$output$1) (= _READ_SOURCE_$$output$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$output$1) (= _READ_SOURCE_$$output$1 #x00000000)) (and
+(or %lbl%@12613 (=> (= (ControlFlow 0 4117) (- 0 12613)) (=> (not _WRITE_HAS_OCCURRED_$$output$1) (= _WRITE_SOURCE_$$output$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$output$1) (= _WRITE_SOURCE_$$output$1 #x00000000)) (and
+(or %lbl%@12625 (=> (= (ControlFlow 0 4117) (- 0 12625)) (=> _READ_HAS_OCCURRED_$$inter$1 (= _READ_SOURCE_$$inter$1 #x00000003))))
+(=> (=> _READ_HAS_OCCURRED_$$inter$1 (= _READ_SOURCE_$$inter$1 #x00000003)) (and
+(or %lbl%@12635 (=> (= (ControlFlow 0 4117) (- 0 12635)) (=> _WRITE_HAS_OCCURRED_$$inter$1 (= _WRITE_SOURCE_$$inter$1 #x00000001))))
+(=> (=> _WRITE_HAS_OCCURRED_$$inter$1 (= _WRITE_SOURCE_$$inter$1 #x00000001)) (and
+(or %lbl%@12645 (=> (= (ControlFlow 0 4117) (- 0 12645)) (=> (not _READ_HAS_OCCURRED_$$inter$1) (= _READ_SOURCE_$$inter$1 #x00000000))))
+(=> (=> (not _READ_HAS_OCCURRED_$$inter$1) (= _READ_SOURCE_$$inter$1 #x00000000)) (and
+(or %lbl%@12657 (=> (= (ControlFlow 0 4117) (- 0 12657)) (=> (not _WRITE_HAS_OCCURRED_$$inter$1) (= _WRITE_SOURCE_$$inter$1 #x00000000))))
+(=> (=> (not _WRITE_HAS_OCCURRED_$$inter$1) (= _WRITE_SOURCE_$$inter$1 #x00000000)) (and
+(or %lbl%@12669 (=> (= (ControlFlow 0 4117) (- 0 12669)) (=> p0$1 at 0 _P$1@@0)))
+(=> (=> p0$1 at 0 _P$1@@0) (and
+(or %lbl%@12674 (=> (= (ControlFlow 0 4117) (- 0 12674)) (=> p0$2 at 0 _P$2@@0)))
+(=> (=> p0$2 at 0 _P$2@@0) (=> (= (ControlFlow 0 4117) 4199) $for.cond_correct)))))))))))))))))))))))))))))))))))))))))))
+(let ((PreconditionGeneratedEntry_correct@@0 (=> (and %lbl%+11167 true) (=> (and
+(not (= (ite (= $width$1 (bvmul group_size_x num_groups_x)) #b1 #b0) #b0))
+(not (= (ite (= $width$2 (bvmul group_size_x num_groups_x)) #b1 #b0) #b0))
+(not (= (ite (= $blockWidth$1@@0 group_size_x) #b1 #b0) #b0))
+(not (= (ite (= $blockWidth$2@@0 group_size_x) #b1 #b0) #b0))
+(not _READ_HAS_OCCURRED_$$output$1)
+(not _WRITE_HAS_OCCURRED_$$output$1)
+(= _READ_SOURCE_$$output$1 #x00000000)
+(= _WRITE_SOURCE_$$output$1 #x00000000)) (=> (and
+(not _READ_HAS_OCCURRED_$$input$1)
+(not _WRITE_HAS_OCCURRED_$$input$1)
+(= _READ_SOURCE_$$input$1 #x00000000)
+(= _WRITE_SOURCE_$$input$1 #x00000000)
+(not _READ_HAS_OCCURRED_$$dct8x8$1)
+(not _WRITE_HAS_OCCURRED_$$dct8x8$1)
+(= _READ_SOURCE_$$dct8x8$1 #x00000000)
+(= _WRITE_SOURCE_$$dct8x8$1 #x00000000)
+(not _READ_HAS_OCCURRED_$$inter$1)
+(not _WRITE_HAS_OCCURRED_$$inter$1)
+(= _READ_SOURCE_$$inter$1 #x00000000)
+(= _WRITE_SOURCE_$$inter$1 #x00000000)
+(bvsgt group_size_x #x00000000)
+(bvsgt num_groups_x #x00000000)
+(bvsge group_id_x$1 #x00000000)
+(bvsge group_id_x$2 #x00000000)) (=> (and
+(bvslt group_id_x$1 num_groups_x)
+(bvslt group_id_x$2 num_groups_x)
+(bvsge local_id_x$1 #x00000000)
+(bvsge local_id_x$2 #x00000000)
+(bvslt local_id_x$1 group_size_x)
+(bvslt local_id_x$2 group_size_x)
+(bvsgt group_size_y #x00000000)
+(bvsgt num_groups_y #x00000000)
+(bvsge group_id_y$1 #x00000000)
+(bvsge group_id_y$2 #x00000000)
+(bvslt group_id_y$1 num_groups_y)
+(bvslt group_id_y$2 num_groups_y)
+(bvsge local_id_y$1 #x00000000)
+(bvsge local_id_y$2 #x00000000)
+(bvslt local_id_y$1 group_size_y)
+(bvslt local_id_y$2 group_size_y)
+(bvsgt group_size_z #x00000000)
+(bvsgt num_groups_z #x00000000)
+(bvsge group_id_z$1 #x00000000)
+(bvsge group_id_z$2 #x00000000)
+(bvslt group_id_z$1 num_groups_z)
+(bvslt group_id_z$2 num_groups_z)
+(bvsge local_id_z$1 #x00000000)
+(bvsge local_id_z$2 #x00000000)
+(bvslt local_id_z$1 group_size_z)
+(bvslt local_id_z$2 group_size_z)
+(=> (and
+(= group_id_x$1 group_id_x$2)
+(= group_id_y$1 group_id_y$2)
+(= group_id_z$1 group_id_z$2)) (or
+(not (= local_id_x$1 local_id_x$2))
+(not (= local_id_y$1 local_id_y$2))
+(not (= local_id_z$1 local_id_z$2))))
+(= _P$1@@0 _P$2@@0)
+(= $width$1 $width$2)
+(= $blockWidth$1@@0 $blockWidth$2@@0)
+(= $inverse$1 $inverse$2)
+(= (ControlFlow 0 11167) 4117)) $entry_correct@@0))))))
+PreconditionGeneratedEntry_correct@@0)))))))))))))))))))))))))))))))))))))))
+(push 1)
+;(set-info :boogie-vc-id $getIdx)
+(assert (not
+(=> (and
+true
+_b0
+_b1
+_b2
+_b3
+_b4
+_b5
+_b6
+_b7
+_b8
+_b9
+_b10
+_b11
+_b12
+_b13
+_b14
+_b15
+_b16
+_b17
+_b18
+_b19
+_b20
+_b21
+_b22
+_b23
+_b24
+_b25
+_b26
+_b27
+_b28
+_b29
+_b30
+_b31
+_b32
+_b33
+_b34
+_b35
+_b36
+_b37
+_b38
+_b39
+_b40
+_b41
+_b42
+_b43
+_b44
+_b45) $getIdx)
+))
+(check-sat)
+;(get-value ((ControlFlow 0 0)))
+;(get-value ((ControlFlow 0 9318)))
+;(get-value ((ControlFlow 0 823)))
+(assert (not (= (ControlFlow 0 823) (- 10729))))
+(check-sat)
+(pop 1)
+(push 1)
+;(set-info :boogie-vc-id $getIdx)
+(assert (not
+(=> (and
+true
+_b0
+_b1
+_b2
+_b3
+_b4
+_b5
+_b6
+_b7
+_b8
+_b9
+_b10
+_b11
+_b12
+_b13
+_b14
+_b15
+_b16
+_b17
+_b18
+_b19
+_b20
+_b21
+_b22
+_b23
+_b24
+_b25
+_b26
+_b27
+_b28
+(not _b29)
+_b30
+_b31
+_b32
+_b33
+_b34
+_b35
+_b36
+_b37
+_b38
+_b39
+_b40
+_b41
+_b42
+_b43
+_b44
+_b45) $getIdx)
+))
+(check-sat)
+(pop 1)
+(push 1)
+;(set-info :boogie-vc-id $DCT)
+(assert (not
+(=> (and
+true
+_b0
+_b1
+_b2
+_b3
+_b4
+_b5
+_b6
+_b7
+_b8
+_b9
+_b10
+_b11
+_b12
+_b13
+_b14
+_b15
+_b16
+_b17
+_b18
+_b19
+_b20
+_b21
+_b22
+_b23
+_b24
+_b25
+_b26
+_b27
+_b28
+(not _b29)
+_b30
+_b31
+_b32
+_b33
+_b34
+_b35
+_b36
+_b37
+_b38
+_b39
+_b40
+_b41
+_b42
+_b43
+_b44
+_b45) $DCT)
+))
+(check-sat)
+;(get-value ((ControlFlow 0 0)))
+;(get-value ((ControlFlow 0 11167)))
+;(get-value ((ControlFlow 0 4117)))
+;(get-value ((ControlFlow 0 4199)))
+(assert (not (= (ControlFlow 0 4199) (- 13495))))
+(check-sat)
+;(get-value ((ControlFlow 0 0)))
+;(get-value ((ControlFlow 0 11167)))
+;(get-value ((ControlFlow 0 4117)))
+;(get-value ((ControlFlow 0 4199)))
+(assert (not (= (ControlFlow 0 4199) (- 13487))))
+(check-sat)
+;(get-value ((ControlFlow 0 0)))
+;(get-value ((ControlFlow 0 11167)))
+;(get-value ((ControlFlow 0 4117)))
+;(get-value ((ControlFlow 0 4199)))
+(assert (not (= (ControlFlow 0 4199) (- 13509))))
+(check-sat)
+;(get-value ((ControlFlow 0 0)))
+;(get-value ((ControlFlow 0 11167)))
+;(get-value ((ControlFlow 0 4117)))
+;(get-value ((ControlFlow 0 4199)))
+(assert (not (= (ControlFlow 0 4199) (- 13553))))
+(check-sat)
+;(get-value ((ControlFlow 0 0)))
+;(get-value ((ControlFlow 0 11167)))
+;(get-value ((ControlFlow 0 4117)))
+;(get-value ((ControlFlow 0 4199)))
+(pop 1)
+(push 1)
+;(set-info :boogie-vc-id $DCT)
+(assert (not
+(=> (and
+true
+(not _b0)
+(not _b1)
+(not _b2)
+_b3
+_b4
+_b5
+(not _b6)
+_b7
+_b8
+_b9
+_b10
+_b11
+_b12
+_b13
+_b14
+_b15
+_b16
+(not _b17)
+_b18
+_b19
+_b20
+_b21
+_b22
+_b23
+_b24
+_b25
+_b26
+_b27
+_b28
+(not _b29)
+_b30
+_b31
+_b32
+_b33
+_b34
+_b35
+_b36
+_b37
+_b38
+_b39
+_b40
+_b41
+_b42
+_b43
+_b44
+_b45) $DCT)
+))
+(check-sat)
+;(get-value ((ControlFlow 0 0)))
+;(get-value ((ControlFlow 0 11167)))
+;(get-value ((ControlFlow 0 4117)))
+;(get-value ((ControlFlow 0 4199)))
+(assert (not (= (ControlFlow 0 4199) (- 13575))))
+(check-sat)
+;(get-value ((ControlFlow 0 0)))
+;(get-value ((ControlFlow 0 11167)))
+;(get-value ((ControlFlow 0 4117)))
+;(get-value ((ControlFlow 0 4199)))
+(assert (not (= (ControlFlow 0 4199) (- 13712))))
+(check-sat)
+;(get-value ((ControlFlow 0 0)))
+;(get-value ((ControlFlow 0 11167)))
+;(get-value ((ControlFlow 0 4117)))
+;(get-value ((ControlFlow 0 4199)))
+(assert (not (= (ControlFlow 0 4199) (- 13700))))
+(check-sat)
diff --git a/test/regress/regress2/error1.smt b/test/regress/regress2/error1.smt
new file mode 100644
index 0000000..9b2cabe
--- /dev/null
+++ b/test/regress/regress2/error1.smt
@@ -0,0 +1,867 @@
+(benchmark fuzzsmt
+:logic QF_UFLRA
+:status sat
+:extrafuns ((f0 Real Real Real))
+:extrafuns ((f1 Real Real))
+:extrapreds ((p0 Real Real))
+:extrafuns ((v0 Real))
+:extrafuns ((v1 Real))
+:extrafuns ((v2 Real))
+:formula
+(let (?e3 5)
+(let (?e4 15)
+(let (?e5 3)
+(let (?e6 (+ v1 v1))
+(let (?e7 (~ v1))
+(let (?e8 (/ ?e3 ?e5))
+(let (?e9 (~ ?e7))
+(let (?e10 (* ?e4 ?e8))
+(let (?e11 (~ v1))
+(let (?e12 (- v0 ?e7))
+(let (?e13 (/ ?e4 ?e4))
+(let (?e14 (+ ?e9 v2))
+(let (?e15 (/ ?e4 ?e4))
+(let (?e16 (f0 ?e12 ?e11))
+(let (?e17 (- ?e6 ?e14))
+(let (?e18 (f0 ?e10 ?e13))
+(let (?e19 (+ v1 ?e15))
+(let (?e20 (/ ?e4 ?e5))
+(let (?e21 (f1 ?e19))
+(let (?e22 (~ ?e9))
+(let (?e23 (ite (p0 ?e7 ?e19) 1 0))
+(flet ($e24 (> ?e7 v1))
+(flet ($e25 (>= ?e16 ?e9))
+(flet ($e26 (>= ?e9 ?e9))
+(flet ($e27 (>= ?e14 ?e19))
+(flet ($e28 (<= v2 ?e15))
+(flet ($e29 (< ?e23 ?e11))
+(flet ($e30 (distinct ?e15 ?e6))
+(flet ($e31 (= ?e8 ?e16))
+(flet ($e32 (>= ?e17 ?e8))
+(flet ($e33 (< ?e14 ?e7))
+(flet ($e34 (> ?e18 ?e11))
+(flet ($e35 (>= v2 ?e20))
+(flet ($e36 (= ?e11 ?e8))
+(flet ($e37 (= v2 ?e9))
+(flet ($e38 (>= ?e22 v0))
+(flet ($e39 (= ?e16 ?e15))
+(flet ($e40 (= ?e9 ?e20))
+(flet ($e41 (<= ?e8 ?e14))
+(flet ($e42 (<= ?e9 ?e8))
+(flet ($e43 (>= ?e23 ?e19))
+(flet ($e44 (> ?e22 v0))
+(flet ($e45 (>= ?e14 ?e23))
+(flet ($e46 (> v2 ?e9))
+(flet ($e47 (distinct ?e18 ?e15))
+(flet ($e48 (distinct ?e15 ?e22))
+(flet ($e49 (distinct ?e12 ?e15))
+(flet ($e50 (<= ?e16 v2))
+(flet ($e51 (> v0 ?e17))
+(flet ($e52 (<= ?e14 ?e14))
+(flet ($e53 (< ?e13 ?e17))
+(flet ($e54 (p0 ?e21 ?e17))
+(flet ($e55 (p0 ?e17 ?e14))
+(flet ($e56 (> ?e20 ?e8))
+(flet ($e57 (p0 ?e17 ?e8))
+(flet ($e58 (distinct ?e15 ?e15))
+(flet ($e59 (> ?e8 ?e9))
+(flet ($e60 (<= ?e23 ?e21))
+(flet ($e61 (p0 ?e20 ?e22))
+(flet ($e62 (p0 ?e9 ?e19))
+(flet ($e63 (distinct ?e11 ?e18))
+(flet ($e64 (= ?e9 v2))
+(flet ($e65 (<= ?e7 ?e14))
+(flet ($e66 (< ?e8 v1))
+(flet ($e67 (distinct ?e18 ?e17))
+(flet ($e68 (>= v0 v1))
+(flet ($e69 (= ?e13 ?e9))
+(flet ($e70 (>= ?e23 ?e16))
+(flet ($e71 (p0 ?e20 ?e8))
+(flet ($e72 (> ?e18 ?e23))
+(flet ($e73 (>= ?e14 ?e6))
+(flet ($e74 (>= ?e8 ?e18))
+(flet ($e75 (= ?e19 v0))
+(flet ($e76 (= ?e9 ?e14))
+(flet ($e77 (> ?e9 ?e21))
+(flet ($e78 (distinct ?e14 ?e21))
+(flet ($e79 (distinct ?e15 ?e17))
+(flet ($e80 (p0 ?e12 v2))
+(flet ($e81 (> ?e11 ?e18))
+(flet ($e82 (= ?e9 ?e7))
+(flet ($e83 (>= ?e6 ?e11))
+(flet ($e84 (< ?e22 ?e7))
+(flet ($e85 (> ?e13 ?e9))
+(flet ($e86 (< v2 ?e21))
+(flet ($e87 (< ?e23 ?e9))
+(flet ($e88 (= ?e11 ?e13))
+(flet ($e89 (p0 ?e23 ?e13))
+(flet ($e90 (< ?e12 ?e19))
+(flet ($e91 (= ?e14 ?e19))
+(flet ($e92 (distinct ?e21 ?e8))
+(flet ($e93 (< ?e14 ?e19))
+(flet ($e94 (p0 ?e12 ?e8))
+(flet ($e95 (<= ?e22 ?e18))
+(flet ($e96 (p0 ?e13 v1))
+(flet ($e97 (p0 v1 v1))
+(flet ($e98 (> ?e17 v1))
+(flet ($e99 (<= v2 ?e9))
+(flet ($e100 (<= ?e21 v0))
+(flet ($e101 (distinct ?e7 ?e9))
+(flet ($e102 (p0 ?e19 ?e6))
+(flet ($e103 (<= ?e12 ?e23))
+(flet ($e104 (= ?e14 ?e9))
+(flet ($e105 (>= ?e10 ?e15))
+(let (?e106 (ite $e31 ?e7 ?e11))
+(let (?e107 (ite $e51 ?e12 ?e9))
+(let (?e108 (ite $e72 ?e8 ?e106))
+(let (?e109 (ite $e77 ?e19 ?e10))
+(let (?e110 (ite $e46 ?e21 ?e10))
+(let (?e111 (ite $e25 ?e14 ?e110))
+(let (?e112 (ite $e87 ?e17 ?e107))
+(let (?e113 (ite $e85 ?e23 ?e108))
+(let (?e114 (ite $e66 v0 ?e109))
+(let (?e115 (ite $e78 ?e108 ?e110))
+(let (?e116 (ite $e27 ?e13 ?e21))
+(let (?e117 (ite $e57 ?e18 v2))
+(let (?e118 (ite $e52 ?e20 ?e18))
+(let (?e119 (ite $e102 ?e12 ?e13))
+(let (?e120 (ite $e42 ?e22 ?e119))
+(let (?e121 (ite $e92 v1 ?e11))
+(let (?e122 (ite $e59 ?e16 ?e22))
+(let (?e123 (ite $e30 v1 ?e117))
+(let (?e124 (ite $e55 ?e13 ?e108))
+(let (?e125 (ite $e86 ?e15 ?e21))
+(let (?e126 (ite $e69 ?e6 ?e123))
+(let (?e127 (ite $e63 ?e121 ?e11))
+(let (?e128 (ite $e31 v0 ?e16))
+(let (?e129 (ite $e70 ?e6 ?e23))
+(let (?e130 (ite $e74 ?e17 ?e127))
+(let (?e131 (ite $e95 ?e106 ?e117))
+(let (?e132 (ite $e28 v1 ?e126))
+(let (?e133 (ite $e34 ?e127 ?e22))
+(let (?e134 (ite $e81 ?e133 ?e16))
+(let (?e135 (ite $e97 ?e14 ?e130))
+(let (?e136 (ite $e31 ?e113 ?e9))
+(let (?e137 (ite $e49 v1 ?e135))
+(let (?e138 (ite $e104 ?e18 ?e110))
+(let (?e139 (ite $e49 ?e9 ?e135))
+(let (?e140 (ite $e33 ?e133 ?e117))
+(let (?e141 (ite $e71 ?e124 ?e20))
+(let (?e142 (ite $e40 ?e111 ?e110))
+(let (?e143 (ite $e37 ?e15 ?e11))
+(let (?e144 (ite $e64 ?e127 ?e134))
+(let (?e145 (ite $e39 ?e115 ?e17))
+(let (?e146 (ite $e33 ?e119 ?e134))
+(let (?e147 (ite $e41 ?e20 ?e107))
+(let (?e148 (ite $e60 ?e138 ?e140))
+(let (?e149 (ite $e88 ?e128 ?e20))
+(let (?e150 (ite $e53 ?e136 ?e132))
+(let (?e151 (ite $e60 ?e19 ?e126))
+(let (?e152 (ite $e42 ?e113 ?e145))
+(let (?e153 (ite $e93 ?e150 ?e147))
+(let (?e154 (ite $e60 ?e19 ?e144))
+(let (?e155 (ite $e35 ?e149 v0))
+(let (?e156 (ite $e30 ?e113 ?e113))
+(let (?e157 (ite $e80 ?e11 ?e17))
+(let (?e158 (ite $e47 ?e114 ?e12))
+(let (?e159 (ite $e62 ?e19 ?e123))
+(let (?e160 (ite $e40 ?e151 ?e17))
+(let (?e161 (ite $e105 ?e19 ?e133))
+(let (?e162 (ite $e45 ?e22 ?e142))
+(let (?e163 (ite $e91 ?e112 ?e8))
+(let (?e164 (ite $e26 ?e160 ?e126))
+(let (?e165 (ite $e56 ?e140 ?e126))
+(let (?e166 (ite $e93 ?e9 ?e18))
+(let (?e167 (ite $e76 ?e158 ?e166))
+(let (?e168 (ite $e80 ?e17 ?e146))
+(let (?e169 (ite $e51 ?e132 ?e117))
+(let (?e170 (ite $e89 ?e21 ?e118))
+(let (?e171 (ite $e64 ?e19 ?e120))
+(let (?e172 (ite $e91 ?e142 ?e118))
+(let (?e173 (ite $e90 ?e16 ?e168))
+(let (?e174 (ite $e66 ?e136 ?e157))
+(let (?e175 (ite $e54 ?e143 ?e165))
+(let (?e176 (ite $e74 ?e12 ?e166))
+(let (?e177 (ite $e51 ?e120 ?e8))
+(let (?e178 (ite $e82 ?e7 ?e125))
+(let (?e179 (ite $e58 ?e143 ?e130))
+(let (?e180 (ite $e43 ?e23 v1))
+(let (?e181 (ite $e101 ?e166 ?e173))
+(let (?e182 (ite $e84 ?e135 ?e157))
+(let (?e183 (ite $e89 ?e172 ?e21))
+(let (?e184 (ite $e75 ?e125 ?e19))
+(let (?e185 (ite $e47 ?e165 ?e155))
+(let (?e186 (ite $e100 ?e21 ?e146))
+(let (?e187 (ite $e27 ?e157 ?e185))
+(let (?e188 (ite $e45 ?e130 ?e110))
+(let (?e189 (ite $e96 ?e6 ?e121))
+(let (?e190 (ite $e67 ?e120 ?e133))
+(let (?e191 (ite $e65 ?e18 ?e130))
+(let (?e192 (ite $e29 ?e112 ?e127))
+(let (?e193 (ite $e49 ?e152 ?e179))
+(let (?e194 (ite $e54 ?e121 v1))
+(let (?e195 (ite $e45 ?e137 ?e19))
+(let (?e196 (ite $e79 ?e125 ?e158))
+(let (?e197 (ite $e50 ?e16 ?e124))
+(let (?e198 (ite $e83 ?e168 ?e134))
+(let (?e199 (ite $e84 ?e121 ?e157))
+(let (?e200 (ite $e94 ?e173 ?e149))
+(let (?e201 (ite $e50 ?e132 ?e186))
+(let (?e202 (ite $e96 ?e115 ?e135))
+(let (?e203 (ite $e99 ?e110 ?e182))
+(let (?e204 (ite $e73 ?e185 ?e198))
+(let (?e205 (ite $e36 ?e131 v2))
+(let (?e206 (ite $e39 ?e6 ?e204))
+(let (?e207 (ite $e34 ?e156 ?e7))
+(let (?e208 (ite $e103 ?e124 ?e173))
+(let (?e209 (ite $e63 ?e149 ?e143))
+(let (?e210 (ite $e70 ?e20 ?e130))
+(let (?e211 (ite $e44 ?e112 ?e176))
+(let (?e212 (ite $e62 v2 ?e118))
+(let (?e213 (ite $e33 ?e150 ?e179))
+(let (?e214 (ite $e87 ?e152 ?e175))
+(let (?e215 (ite $e85 ?e196 ?e198))
+(let (?e216 (ite $e61 ?e143 ?e149))
+(let (?e217 (ite $e48 ?e108 ?e166))
+(let (?e218 (ite $e24 ?e18 ?e204))
+(let (?e219 (ite $e38 ?e179 ?e154))
+(let (?e220 (ite $e84 ?e107 ?e189))
+(let (?e221 (ite $e83 ?e119 ?e158))
+(let (?e222 (ite $e98 ?e23 ?e188))
+(let (?e223 (ite $e92 ?e147 ?e112))
+(let (?e224 (ite $e32 ?e215 ?e16))
+(let (?e225 (ite $e68 ?e128 ?e158))
+(flet ($e226 (>= ?e157 ?e198))
+(flet ($e227 (> ?e182 ?e184))
+(flet ($e228 (< ?e139 ?e225))
+(flet ($e229 (> ?e175 ?e211))
+(flet ($e230 (> ?e212 ?e117))
+(flet ($e231 (> ?e173 ?e196))
+(flet ($e232 (p0 ?e116 v2))
+(flet ($e233 (< ?e173 ?e220))
+(flet ($e234 (< ?e129 ?e127))
+(flet ($e235 (distinct ?e175 ?e135))
+(flet ($e236 (<= ?e177 ?e211))
+(flet ($e237 (>= ?e129 ?e154))
+(flet ($e238 (<= ?e133 ?e174))
+(flet ($e239 (<= ?e9 ?e168))
+(flet ($e240 (>= ?e225 ?e11))
+(flet ($e241 (< ?e131 ?e185))
+(flet ($e242 (<= ?e153 ?e107))
+(flet ($e243 (<= ?e197 ?e143))
+(flet ($e244 (<= ?e198 ?e186))
+(flet ($e245 (>= ?e194 ?e129))
+(flet ($e246 (< ?e13 ?e195))
+(flet ($e247 (distinct ?e8 ?e134))
+(flet ($e248 (>= ?e164 ?e118))
+(flet ($e249 (>= ?e208 ?e170))
+(flet ($e250 (= ?e157 ?e19))
+(flet ($e251 (< ?e160 ?e161))
+(flet ($e252 (<= ?e148 ?e15))
+(flet ($e253 (p0 ?e174 ?e167))
+(flet ($e254 (<= ?e167 ?e121))
+(flet ($e255 (< ?e146 ?e174))
+(flet ($e256 (= ?e166 ?e119))
+(flet ($e257 (>= ?e121 ?e129))
+(flet ($e258 (distinct ?e148 ?e190))
+(flet ($e259 (>= ?e8 ?e209))
+(flet ($e260 (= ?e113 ?e218))
+(flet ($e261 (>= ?e146 ?e153))
+(flet ($e262 (= ?e20 ?e215))
+(flet ($e263 (>= ?e213 ?e21))
+(flet ($e264 (p0 ?e216 ?e168))
+(flet ($e265 (< ?e210 ?e162))
+(flet ($e266 (distinct ?e126 ?e127))
+(flet ($e267 (<= ?e131 ?e223))
+(flet ($e268 (p0 ?e179 ?e7))
+(flet ($e269 (< ?e150 ?e13))
+(flet ($e270 (<= ?e160 ?e182))
+(flet ($e271 (<= ?e180 ?e206))
+(flet ($e272 (= ?e191 ?e206))
+(flet ($e273 (p0 ?e155 ?e180))
+(flet ($e274 (distinct ?e116 ?e186))
+(flet ($e275 (>= ?e173 ?e179))
+(flet ($e276 (p0 ?e16 ?e118))
+(flet ($e277 (p0 ?e164 ?e209))
+(flet ($e278 (>= ?e178 ?e182))
+(flet ($e279 (> ?e138 ?e139))
+(flet ($e280 (> ?e8 ?e110))
+(flet ($e281 (p0 ?e113 ?e157))
+(flet ($e282 (< ?e127 ?e167))
+(flet ($e283 (< ?e222 ?e152))
+(flet ($e284 (= ?e205 ?e201))
+(flet ($e285 (distinct ?e141 ?e153))
+(flet ($e286 (p0 ?e211 ?e140))
+(flet ($e287 (distinct ?e21 ?e10))
+(flet ($e288 (>= ?e182 ?e172))
+(flet ($e289 (< ?e224 ?e159))
+(flet ($e290 (distinct ?e134 ?e118))
+(flet ($e291 (>= ?e170 ?e186))
+(flet ($e292 (> ?e206 ?e11))
+(flet ($e293 (<= v1 ?e160))
+(flet ($e294 (> ?e175 ?e132))
+(flet ($e295 (p0 ?e131 ?e11))
+(flet ($e296 (<= ?e173 ?e137))
+(flet ($e297 (distinct ?e182 ?e165))
+(flet ($e298 (distinct ?e22 ?e159))
+(flet ($e299 (>= ?e155 ?e223))
+(flet ($e300 (p0 ?e10 ?e23))
+(flet ($e301 (= ?e219 ?e11))
+(flet ($e302 (>= ?e181 ?e129))
+(flet ($e303 (< ?e132 ?e150))
+(flet ($e304 (>= ?e204 ?e174))
+(flet ($e305 (p0 ?e16 ?e114))
+(flet ($e306 (<= ?e145 ?e120))
+(flet ($e307 (>= ?e138 ?e190))
+(flet ($e308 (<= ?e190 ?e210))
+(flet ($e309 (> ?e166 ?e198))
+(flet ($e310 (= ?e136 ?e128))
+(flet ($e311 (distinct ?e170 ?e189))
+(flet ($e312 (p0 ?e185 ?e208))
+(flet ($e313 (> ?e143 ?e214))
+(flet ($e314 (= ?e125 ?e194))
+(flet ($e315 (distinct ?e204 ?e157))
+(flet ($e316 (<= ?e183 ?e150))
+(flet ($e317 (> ?e112 ?e113))
+(flet ($e318 (= ?e130 ?e123))
+(flet ($e319 (= ?e7 ?e213))
+(flet ($e320 (= v0 ?e174))
+(flet ($e321 (distinct ?e149 ?e171))
+(flet ($e322 (< ?e178 ?e158))
+(flet ($e323 (< ?e129 ?e155))
+(flet ($e324 (> ?e136 v1))
+(flet ($e325 (= ?e200 v0))
+(flet ($e326 (> ?e162 ?e147))
+(flet ($e327 (< ?e196 ?e182))
+(flet ($e328 (> ?e125 ?e132))
+(flet ($e329 (> ?e12 ?e215))
+(flet ($e330 (<= ?e202 ?e177))
+(flet ($e331 (<= ?e120 ?e114))
+(flet ($e332 (distinct ?e203 ?e132))
+(flet ($e333 (< ?e172 ?e190))
+(flet ($e334 (<= ?e193 ?e170))
+(flet ($e335 (>= ?e175 ?e193))
+(flet ($e336 (>= ?e187 ?e209))
+(flet ($e337 (> ?e19 ?e210))
+(flet ($e338 (> ?e18 ?e172))
+(flet ($e339 (distinct ?e210 ?e177))
+(flet ($e340 (distinct ?e19 ?e106))
+(flet ($e341 (= ?e134 ?e175))
+(flet ($e342 (< ?e21 ?e121))
+(flet ($e343 (> ?e199 ?e148))
+(flet ($e344 (<= ?e184 v2))
+(flet ($e345 (p0 ?e199 ?e137))
+(flet ($e346 (>= ?e15 ?e131))
+(flet ($e347 (< ?e131 ?e180))
+(flet ($e348 (< ?e206 ?e12))
+(flet ($e349 (< ?e173 ?e147))
+(flet ($e350 (<= ?e142 ?e115))
+(flet ($e351 (distinct ?e223 v1))
+(flet ($e352 (> ?e217 ?e187))
+(flet ($e353 (> ?e12 ?e163))
+(flet ($e354 (> ?e15 ?e153))
+(flet ($e355 (>= ?e184 ?e163))
+(flet ($e356 (p0 ?e210 ?e212))
+(flet ($e357 (>= ?e193 ?e114))
+(flet ($e358 (> ?e108 ?e187))
+(flet ($e359 (p0 ?e222 ?e224))
+(flet ($e360 (>= ?e128 ?e168))
+(flet ($e361 (distinct ?e186 ?e18))
+(flet ($e362 (< ?e117 ?e179))
+(flet ($e363 (> ?e199 ?e200))
+(flet ($e364 (<= ?e201 ?e179))
+(flet ($e365 (<= ?e120 ?e187))
+(flet ($e366 (p0 ?e151 ?e188))
+(flet ($e367 (> ?e149 ?e135))
+(flet ($e368 (< ?e205 ?e142))
+(flet ($e369 (>= ?e126 ?e220))
+(flet ($e370 (>= ?e151 ?e169))
+(flet ($e371 (p0 ?e115 ?e126))
+(flet ($e372 (<= ?e22 ?e123))
+(flet ($e373 (>= v0 ?e153))
+(flet ($e374 (> ?e14 ?e128))
+(flet ($e375 (= ?e163 ?e118))
+(flet ($e376 (<= ?e204 ?e135))
+(flet ($e377 (p0 ?e210 ?e167))
+(flet ($e378 (= ?e124 ?e213))
+(flet ($e379 (distinct ?e13 ?e194))
+(flet ($e380 (< ?e171 ?e15))
+(flet ($e381 (< ?e15 ?e156))
+(flet ($e382 (= ?e140 ?e206))
+(flet ($e383 (<= ?e123 v1))
+(flet ($e384 (> ?e194 ?e138))
+(flet ($e385 (= ?e107 ?e127))
+(flet ($e386 (> ?e155 ?e142))
+(flet ($e387 (distinct ?e177 ?e153))
+(flet ($e388 (distinct ?e9 ?e23))
+(flet ($e389 (= ?e136 ?e207))
+(flet ($e390 (= ?e151 ?e212))
+(flet ($e391 (distinct ?e192 ?e218))
+(flet ($e392 (= ?e151 ?e222))
+(flet ($e393 (> ?e195 ?e204))
+(flet ($e394 (= ?e214 ?e121))
+(flet ($e395 (= ?e207 ?e157))
+(flet ($e396 (< ?e205 ?e190))
+(flet ($e397 (>= ?e206 ?e215))
+(flet ($e398 (>= ?e178 ?e210))
+(flet ($e399 (= ?e6 ?e136))
+(flet ($e400 (>= ?e7 ?e150))
+(flet ($e401 (= ?e146 ?e174))
+(flet ($e402 (p0 ?e220 ?e207))
+(flet ($e403 (>= ?e20 ?e131))
+(flet ($e404 (< ?e126 ?e211))
+(flet ($e405 (> ?e208 ?e121))
+(flet ($e406 (< ?e131 ?e222))
+(flet ($e407 (= ?e184 ?e168))
+(flet ($e408 (= ?e210 v2))
+(flet ($e409 (p0 ?e215 ?e147))
+(flet ($e410 (distinct ?e195 ?e108))
+(flet ($e411 (p0 ?e140 ?e151))
+(flet ($e412 (p0 ?e125 ?e214))
+(flet ($e413 (distinct ?e218 ?e167))
+(flet ($e414 (= ?e136 ?e206))
+(flet ($e415 (= ?e22 ?e213))
+(flet ($e416 (>= ?e203 ?e155))
+(flet ($e417 (distinct ?e109 ?e120))
+(flet ($e418 (= ?e112 ?e160))
+(flet ($e419 (> ?e17 ?e146))
+(flet ($e420 (>= ?e200 ?e161))
+(flet ($e421 (>= ?e221 ?e171))
+(flet ($e422 (= ?e157 ?e210))
+(flet ($e423 (> ?e120 ?e118))
+(flet ($e424 (< ?e113 ?e165))
+(flet ($e425 (< ?e183 ?e197))
+(flet ($e426 (<= ?e211 ?e197))
+(flet ($e427 (= ?e136 ?e195))
+(flet ($e428 (= ?e216 ?e222))
+(flet ($e429 (p0 ?e178 ?e204))
+(flet ($e430 (<= ?e111 ?e195))
+(flet ($e431 (> ?e13 ?e199))
+(flet ($e432 (p0 ?e195 ?e136))
+(flet ($e433 (> ?e210 ?e109))
+(flet ($e434 (= ?e15 v2))
+(flet ($e435 (>= ?e168 ?e220))
+(flet ($e436 (< ?e108 ?e213))
+(flet ($e437 (distinct ?e155 ?e142))
+(flet ($e438 (>= ?e173 ?e185))
+(flet ($e439 (= ?e196 ?e209))
+(flet ($e440 (p0 ?e124 ?e15))
+(flet ($e441 (>= v1 ?e200))
+(flet ($e442 (<= ?e132 ?e106))
+(flet ($e443 (p0 ?e15 ?e168))
+(flet ($e444 (>= ?e145 ?e139))
+(flet ($e445 (= ?e198 ?e146))
+(flet ($e446 (= ?e119 ?e140))
+(flet ($e447 (>= ?e16 ?e177))
+(flet ($e448 (< ?e221 ?e200))
+(flet ($e449 (= ?e8 ?e18))
+(flet ($e450 (<= ?e132 ?e134))
+(flet ($e451 (p0 ?e164 v0))
+(flet ($e452 (>= ?e123 ?e12))
+(flet ($e453 (distinct ?e214 ?e199))
+(flet ($e454 (< ?e16 ?e195))
+(flet ($e455 (= ?e6 ?e159))
+(flet ($e456 (> v0 ?e196))
+(flet ($e457 (distinct ?e225 ?e221))
+(flet ($e458 (>= ?e163 ?e146))
+(flet ($e459 (distinct ?e225 ?e212))
+(flet ($e460 (= ?e8 ?e218))
+(flet ($e461 (p0 ?e211 ?e205))
+(flet ($e462 (>= ?e118 ?e176))
+(flet ($e463 (distinct ?e156 ?e171))
+(flet ($e464 (> ?e121 ?e191))
+(flet ($e465 (= ?e202 ?e190))
+(flet ($e466 (= ?e141 ?e149))
+(flet ($e467 (= ?e203 ?e143))
+(flet ($e468 (>= ?e213 ?e132))
+(flet ($e469 (p0 ?e16 ?e161))
+(flet ($e470 (distinct ?e116 v0))
+(flet ($e471 (= ?e156 ?e153))
+(flet ($e472 (p0 ?e130 ?e114))
+(flet ($e473 (<= ?e169 ?e161))
+(flet ($e474 (p0 ?e129 ?e203))
+(flet ($e475 (distinct ?e22 ?e119))
+(flet ($e476 (> ?e194 ?e158))
+(flet ($e477 (> ?e173 ?e222))
+(flet ($e478 (>= ?e112 ?e137))
+(flet ($e479 (< ?e219 ?e120))
+(flet ($e480 (p0 ?e109 ?e211))
+(flet ($e481 (< ?e162 ?e18))
+(flet ($e482 (< ?e160 ?e138))
+(flet ($e483 (p0 ?e111 ?e206))
+(flet ($e484 (<= ?e122 ?e17))
+(flet ($e485 (>= ?e144 ?e171))
+(flet ($e486 (implies $e97 $e362))
+(flet ($e487 (or $e47 $e428))
+(flet ($e488 (implies $e401 $e238))
+(flet ($e489 (xor $e308 $e55))
+(flet ($e490 (not $e60))
+(flet ($e491 (xor $e78 $e366))
+(flet ($e492 (not $e283))
+(flet ($e493 (iff $e353 $e404))
+(flet ($e494 (implies $e446 $e228))
+(flet ($e495 (iff $e259 $e386))
+(flet ($e496 (iff $e236 $e226))
+(flet ($e497 (iff $e394 $e322))
+(flet ($e498 (xor $e255 $e290))
+(flet ($e499 (not $e459))
+(flet ($e500 (or $e277 $e306))
+(flet ($e501 (or $e414 $e81))
+(flet ($e502 (if_then_else $e286 $e475 $e243))
+(flet ($e503 (or $e447 $e449))
+(flet ($e504 (xor $e252 $e288))
+(flet ($e505 (iff $e365 $e339))
+(flet ($e506 (or $e390 $e418))
+(flet ($e507 (and $e51 $e317))
+(flet ($e508 (or $e270 $e30))
+(flet ($e509 (or $e332 $e321))
+(flet ($e510 (implies $e361 $e298))
+(flet ($e511 (not $e29))
+(flet ($e512 (or $e346 $e264))
+(flet ($e513 (not $e399))
+(flet ($e514 (if_then_else $e413 $e94 $e327))
+(flet ($e515 (implies $e261 $e42))
+(flet ($e516 (not $e482))
+(flet ($e517 (or $e325 $e280))
+(flet ($e518 (and $e25 $e452))
+(flet ($e519 (iff $e347 $e481))
+(flet ($e520 (implies $e516 $e409))
+(flet ($e521 (not $e457))
+(flet ($e522 (implies $e348 $e388))
+(flet ($e523 (xor $e103 $e241))
+(flet ($e524 (and $e305 $e326))
+(flet ($e525 (iff $e488 $e44))
+(flet ($e526 (and $e387 $e250))
+(flet ($e527 (iff $e389 $e383))
+(flet ($e528 (iff $e382 $e318))
+(flet ($e529 (and $e239 $e511))
+(flet ($e530 (and $e296 $e439))
+(flet ($e531 (or $e292 $e26))
+(flet ($e532 (not $e301))
+(flet ($e533 (implies $e320 $e431))
+(flet ($e534 (not $e262))
+(flet ($e535 (implies $e514 $e456))
+(flet ($e536 (if_then_else $e485 $e468 $e49))
+(flet ($e537 (or $e79 $e479))
+(flet ($e538 (if_then_else $e274 $e460 $e393))
+(flet ($e539 (xor $e343 $e297))
+(flet ($e540 (xor $e265 $e532))
+(flet ($e541 (iff $e340 $e429))
+(flet ($e542 (not $e61))
+(flet ($e543 (if_then_else $e82 $e260 $e46))
+(flet ($e544 (iff $e367 $e465))
+(flet ($e545 (not $e66))
+(flet ($e546 (not $e54))
+(flet ($e547 (or $e237 $e358))
+(flet ($e548 (and $e539 $e400))
+(flet ($e549 (or $e249 $e368))
+(flet ($e550 (if_then_else $e427 $e377 $e526))
+(flet ($e551 (implies $e229 $e287))
+(flet ($e552 (implies $e396 $e518))
+(flet ($e553 (and $e517 $e430))
+(flet ($e554 (and $e331 $e437))
+(flet ($e555 (xor $e553 $e314))
+(flet ($e556 (and $e469 $e263))
+(flet ($e557 (if_then_else $e335 $e461 $e524))
+(flet ($e558 (if_then_else $e24 $e48 $e48))
+(flet ($e559 (implies $e324 $e304))
+(flet ($e560 (xor $e379 $e300))
+(flet ($e561 (not $e455))
+(flet ($e562 (xor $e27 $e59))
+(flet ($e563 (and $e445 $e311))
+(flet ($e564 (implies $e275 $e512))
+(flet ($e565 (iff $e498 $e484))
+(flet ($e566 (if_then_else $e43 $e336 $e282))
+(flet ($e567 (iff $e458 $e513))
+(flet ($e568 (iff $e356 $e315))
+(flet ($e569 (if_then_else $e550 $e235 $e310))
+(flet ($e570 (or $e487 $e422))
+(flet ($e571 (implies $e506 $e534))
+(flet ($e572 (xor $e99 $e547))
+(flet ($e573 (and $e68 $e88))
+(flet ($e574 (iff $e100 $e472))
+(flet ($e575 (iff $e542 $e556))
+(flet ($e576 (or $e385 $e350))
+(flet ($e577 (xor $e90 $e536))
+(flet ($e578 (iff $e505 $e234))
+(flet ($e579 (iff $e360 $e374))
+(flet ($e580 (iff $e391 $e573))
+(flet ($e581 (xor $e65 $e370))
+(flet ($e582 (if_then_else $e490 $e426 $e559))
+(flet ($e583 (not $e71))
+(flet ($e584 (not $e276))
+(flet ($e585 (and $e72 $e502))
+(flet ($e586 (and $e436 $e552))
+(flet ($e587 (and $e375 $e267))
+(flet ($e588 (not $e574))
+(flet ($e589 (not $e434))
+(flet ($e590 (not $e581))
+(flet ($e591 (not $e299))
+(flet ($e592 (and $e411 $e345))
+(flet ($e593 (and $e41 $e486))
+(flet ($e594 (and $e302 $e93))
+(flet ($e595 (not $e543))
+(flet ($e596 (if_then_else $e85 $e395 $e70))
+(flet ($e597 (or $e273 $e36))
+(flet ($e598 (implies $e371 $e525))
+(flet ($e599 (and $e507 $e582))
+(flet ($e600 (not $e403))
+(flet ($e601 (implies $e480 $e594))
+(flet ($e602 (xor $e231 $e271))
+(flet ($e603 (or $e384 $e580))
+(flet ($e604 (implies $e565 $e35))
+(flet ($e605 (or $e546 $e548))
+(flet ($e606 (implies $e92 $e233))
+(flet ($e607 (if_then_else $e601 $e102 $e500))
+(flet ($e608 (if_then_else $e67 $e392 $e52))
+(flet ($e609 (or $e266 $e39))
+(flet ($e610 (implies $e575 $e599))
+(flet ($e611 (xor $e566 $e293))
+(flet ($e612 (if_then_else $e602 $e330 $e529))
+(flet ($e613 (or $e603 $e256))
+(flet ($e614 (and $e590 $e483))
+(flet ($e615 (not $e415))
+(flet ($e616 (if_then_else $e64 $e373 $e352))
+(flet ($e617 (and $e540 $e489))
+(flet ($e618 (and $e560 $e560))
+(flet ($e619 (not $e281))
+(flet ($e620 (if_then_else $e291 $e521 $e451))
+(flet ($e621 (and $e230 $e528))
+(flet ($e622 (or $e519 $e617))
+(flet ($e623 (and $e329 $e577))
+(flet ($e624 (or $e571 $e606))
+(flet ($e625 (or $e610 $e313))
+(flet ($e626 (not $e477))
+(flet ($e627 (xor $e435 $e378))
+(flet ($e628 (and $e530 $e307))
+(flet ($e629 (not $e96))
+(flet ($e630 (not $e76))
+(flet ($e631 (and $e355 $e621))
+(flet ($e632 (implies $e412 $e495))
+(flet ($e633 (not $e31))
+(flet ($e634 (and $e363 $e632))
+(flet ($e635 (not $e440))
+(flet ($e636 (implies $e463 $e607))
+(flet ($e637 (if_then_else $e576 $e309 $e32))
+(flet ($e638 (or $e433 $e557))
+(flet ($e639 (if_then_else $e77 $e568 $e80))
+(flet ($e640 (not $e242))
+(flet ($e641 (iff $e333 $e53))
+(flet ($e642 (or $e541 $e474))
+(flet ($e643 (xor $e470 $e87))
+(flet ($e644 (or $e624 $e269))
+(flet ($e645 (not $e535))
+(flet ($e646 (and $e612 $e407))
+(flet ($e647 (iff $e62 $e316))
+(flet ($e648 (xor $e600 $e45))
+(flet ($e649 (if_then_else $e608 $e627 $e634))
+(flet ($e650 (and $e246 $e372))
+(flet ($e651 (if_then_else $e227 $e626 $e503))
+(flet ($e652 (iff $e337 $e397))
+(flet ($e653 (implies $e645 $e583))
+(flet ($e654 (and $e551 $e398))
+(flet ($e655 (not $e417))
+(flet ($e656 (implies $e527 $e563))
+(flet ($e657 (or $e38 $e636))
+(flet ($e658 (xor $e232 $e448))
+(flet ($e659 (or $e616 $e57))
+(flet ($e660 (iff $e558 $e589))
+(flet ($e661 (not $e442))
+(flet ($e662 (xor $e416 $e649))
+(flet ($e663 (xor $e75 $e578))
+(flet ($e664 (implies $e476 $e258))
+(flet ($e665 (or $e655 $e424))
+(flet ($e666 (not $e295))
+(flet ($e667 (not $e646))
+(flet ($e668 (if_then_else $e462 $e663 $e33))
+(flet ($e669 (iff $e572 $e662))
+(flet ($e670 (not $e357))
+(flet ($e671 (iff $e510 $e254))
+(flet ($e672 (xor $e272 $e641))
+(flet ($e673 (or $e604 $e251))
+(flet ($e674 (implies $e34 $e338))
+(flet ($e675 (if_then_else $e37 $e381 $e303))
+(flet ($e676 (iff $e544 $e253))
+(flet ($e677 (implies $e673 $e654))
+(flet ($e678 (not $e661))
+(flet ($e679 (or $e667 $e95))
+(flet ($e680 (implies $e587 $e319))
+(flet ($e681 (implies $e596 $e471))
+(flet ($e682 (not $e651))
+(flet ($e683 (and $e515 $e656))
+(flet ($e684 (implies $e497 $e501))
+(flet ($e685 (xor $e402 $e478))
+(flet ($e686 (not $e666))
+(flet ($e687 (iff $e450 $e354))
+(flet ($e688 (iff $e623 $e643))
+(flet ($e689 (implies $e376 $e554))
+(flet ($e690 (iff $e342 $e638))
+(flet ($e691 (implies $e671 $e562))
+(flet ($e692 (and $e682 $e630))
+(flet ($e693 (or $e633 $e323))
+(flet ($e694 (and $e650 $e91))
+(flet ($e695 (and $e648 $e56))
+(flet ($e696 (xor $e351 $e441))
+(flet ($e697 (not $e244))
+(flet ($e698 (or $e678 $e499))
+(flet ($e699 (or $e618 $e248))
+(flet ($e700 (or $e586 $e653))
+(flet ($e701 (xor $e597 $e364))
+(flet ($e702 (and $e684 $e278))
+(flet ($e703 (or $e683 $e657))
+(flet ($e704 (and $e408 $e652))
+(flet ($e705 (iff $e28 $e692))
+(flet ($e706 (xor $e454 $e701))
+(flet ($e707 (if_then_else $e672 $e664 $e257))
+(flet ($e708 (if_then_else $e660 $e613 $e588))
+(flet ($e709 (xor $e695 $e659))
+(flet ($e710 (implies $e706 $e593))
+(flet ($e711 (xor $e443 $e537))
+(flet ($e712 (implies $e69 $e591))
+(flet ($e713 (not $e622))
+(flet ($e714 (xor $e545 $e50))
+(flet ($e715 (and $e620 $e40))
+(flet ($e716 (not $e285))
+(flet ($e717 (xor $e523 $e689))
+(flet ($e718 (if_then_else $e665 $e531 $e670))
+(flet ($e719 (implies $e555 $e716))
+(flet ($e720 (xor $e698 $e669))
+(flet ($e721 (or $e585 $e98))
+(flet ($e722 (xor $e561 $e538))
+(flet ($e723 (xor $e492 $e268))
+(flet ($e724 (iff $e509 $e569))
+(flet ($e725 (if_then_else $e675 $e685 $e699))
+(flet ($e726 (xor $e676 $e691))
+(flet ($e727 (implies $e104 $e467))
+(flet ($e728 (xor $e419 $e709))
+(flet ($e729 (if_then_else $e631 $e496 $e640))
+(flet ($e730 (xor $e680 $e284))
+(flet ($e731 (iff $e609 $e609))
+(flet ($e732 (not $e438))
+(flet ($e733 (if_then_else $e567 $e642 $e693))
+(flet ($e734 (or $e637 $e731))
+(flet ($e735 (if_then_else $e101 $e635 $e584))
+(flet ($e736 (not $e679))
+(flet ($e737 (or $e719 $e732))
+(flet ($e738 (implies $e344 $e734))
+(flet ($e739 (or $e406 $e718))
+(flet ($e740 (and $e721 $e453))
+(flet ($e741 (iff $e491 $e58))
+(flet ($e742 (or $e423 $e700))
+(flet ($e743 (and $e724 $e520))
+(flet ($e744 (iff $e294 $e710))
+(flet ($e745 (not $e410))
+(flet ($e746 (iff $e725 $e473))
+(flet ($e747 (implies $e493 $e359))
+(flet ($e748 (implies $e681 $e349))
+(flet ($e749 (xor $e421 $e595))
+(flet ($e750 (implies $e639 $e735))
+(flet ($e751 (or $e712 $e714))
+(flet ($e752 (and $e549 $e508))
+(flet ($e753 (not $e625))
+(flet ($e754 (implies $e598 $e369))
+(flet ($e755 (and $e564 $e728))
+(flet ($e756 (and $e744 $e89))
+(flet ($e757 (not $e105))
+(flet ($e758 (and $e687 $e752))
+(flet ($e759 (or $e707 $e717))
+(flet ($e760 (xor $e240 $e63))
+(flet ($e761 (or $e746 $e754))
+(flet ($e762 (implies $e466 $e380))
+(flet ($e763 (iff $e592 $e644))
+(flet ($e764 (xor $e738 $e83))
+(flet ($e765 (xor $e720 $e751))
+(flet ($e766 (or $e420 $e739))
+(flet ($e767 (implies $e726 $e289))
+(flet ($e768 (iff $e703 $e341))
+(flet ($e769 (if_then_else $e432 $e674 $e764))
+(flet ($e770 (iff $e74 $e658))
+(flet ($e771 (and $e742 $e704))
+(flet ($e772 (if_then_else $e570 $e743 $e84))
+(flet ($e773 (xor $e425 $e748))
+(flet ($e774 (iff $e759 $e668))
+(flet ($e775 (not $e769))
+(flet ($e776 (iff $e775 $e504))
+(flet ($e777 (implies $e768 $e772))
+(flet ($e778 (and $e328 $e708))
+(flet ($e779 (not $e761))
+(flet ($e780 (or $e740 $e686))
+(flet ($e781 (iff $e628 $e711))
+(flet ($e782 (not $e766))
+(flet ($e783 (implies $e757 $e780))
+(flet ($e784 (or $e444 $e779))
+(flet ($e785 (implies $e765 $e729))
+(flet ($e786 (iff $e767 $e756))
+(flet ($e787 (not $e750))
+(flet ($e788 (not $e677))
+(flet ($e789 (if_then_else $e773 $e605 $e705))
+(flet ($e790 (not $e312))
+(flet ($e791 (if_then_else $e749 $e783 $e713))
+(flet ($e792 (iff $e762 $e522))
+(flet ($e793 (xor $e760 $e279))
+(flet ($e794 (or $e755 $e73))
+(flet ($e795 (and $e690 $e776))
+(flet ($e796 (if_then_else $e789 $e247 $e334))
+(flet ($e797 (not $e793))
+(flet ($e798 (if_then_else $e688 $e782 $e727))
+(flet ($e799 (iff $e741 $e614))
+(flet ($e800 (and $e494 $e791))
+(flet ($e801 (if_then_else $e730 $e798 $e781))
+(flet ($e802 (implies $e736 $e777))
+(flet ($e803 (not $e696))
+(flet ($e804 (xor $e533 $e694))
+(flet ($e805 (if_then_else $e615 $e723 $e747))
+(flet ($e806 (iff $e799 $e405))
+(flet ($e807 (not $e805))
+(flet ($e808 (and $e794 $e787))
+(flet ($e809 (implies $e802 $e245))
+(flet ($e810 (not $e808))
+(flet ($e811 (not $e770))
+(flet ($e812 (or $e629 $e745))
+(flet ($e813 (xor $e797 $e812))
+(flet ($e814 (not $e763))
+(flet ($e815 (iff $e806 $e806))
+(flet ($e816 (not $e758))
+(flet ($e817 (and $e737 $e733))
+(flet ($e818 (or $e722 $e792))
+(flet ($e819 (or $e803 $e804))
+(flet ($e820 (or $e611 $e647))
+(flet ($e821 (and $e810 $e702))
+(flet ($e822 (or $e817 $e817))
+(flet ($e823 (or $e821 $e786))
+(flet ($e824 (not $e771))
+(flet ($e825 (if_then_else $e807 $e619 $e809))
+(flet ($e826 (implies $e464 $e790))
+(flet ($e827 (or $e715 $e579))
+(flet ($e828 (if_then_else $e784 $e697 $e818))
+(flet ($e829 (if_then_else $e825 $e814 $e811))
+(flet ($e830 (and $e828 $e800))
+(flet ($e831 (not $e826))
+(flet ($e832 (if_then_else $e830 $e819 $e830))
+(flet ($e833 (iff $e832 $e829))
+(flet ($e834 (xor $e785 $e827))
+(flet ($e835 (implies $e824 $e824))
+(flet ($e836 (not $e778))
+(flet ($e837 (not $e834))
+(flet ($e838 (not $e831))
+(flet ($e839 (xor $e836 $e836))
+(flet ($e840 (or $e820 $e801))
+(flet ($e841 (and $e813 $e815))
+(flet ($e842 (xor $e788 $e837))
+(flet ($e843 (and $e838 $e823))
+(flet ($e844 (xor $e835 $e841))
+(flet ($e845 (implies $e796 $e774))
+(flet ($e846 (and $e816 $e753))
+(flet ($e847 (not $e845))
+(flet ($e848 (or $e842 $e833))
+(flet ($e849 (if_then_else $e847 $e840 $e822))
+(flet ($e850 (and $e846 $e86))
+(flet ($e851 (xor $e849 $e844))
+(flet ($e852 (xor $e795 $e848))
+(flet ($e853 (iff $e843 $e839))
+(flet ($e854 (not $e852))
+(flet ($e855 (or $e853 $e854))
+(flet ($e856 (if_then_else $e851 $e855 $e850))
+$e856
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) [...]
+
diff --git a/test/regress/regress2/friedman_n4_i5.smt b/test/regress/regress2/friedman_n4_i5.smt
new file mode 100644
index 0000000..ff5c757
--- /dev/null
+++ b/test/regress/regress2/friedman_n4_i5.smt
@@ -0,0 +1,13457 @@
+
+;;;generated using
+;;;  #stratimprsat -pp -ce -ci -n 4 -i 5
+;;;stratimprsat is from from http://www2.tcs.ifi.lmu.de/~friedman/#paritysat
+;;; 
+
+(benchmark b
+:status unsat
+:logic QF_UF
+:extrapreds ((x1))
+: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))
+:extrapreds ((x770))
+:extrapreds ((x771))
+:extrapreds ((x772))
+:extrapreds ((x773))
+:extrapreds ((x774))
+:extrapreds ((x775))
+:extrapreds ((x776))
+:extrapreds ((x777))
+:extrapreds ((x778))
+:extrapreds ((x779))
+:extrapreds ((x780))
+:extrapreds ((x781))
+:extrapreds ((x782))
+:extrapreds ((x783))
+:extrapreds ((x784))
+:extrapreds ((x785))
+:extrapreds ((x786))
+:extrapreds ((x787))
+:extrapreds ((x788))
+:extrapreds ((x789))
+:extrapreds ((x790))
+:extrapreds ((x791))
+:extrapreds ((x792))
+:extrapreds ((x793))
+:extrapreds ((x794))
+:extrapreds ((x795))
+:extrapreds ((x796))
+:extrapreds ((x797))
+:extrapreds ((x798))
+:extrapreds ((x799))
+:extrapreds ((x800))
+:extrapreds ((x801))
+:extrapreds ((x802))
+:extrapreds ((x803))
+:extrapreds ((x804))
+:extrapreds ((x805))
+:extrapreds ((x806))
+:extrapreds ((x807))
+:extrapreds ((x808))
+:extrapreds ((x809))
+:extrapreds ((x810))
+:extrapreds ((x811))
+:extrapreds ((x812))
+:extrapreds ((x813))
+:extrapreds ((x814))
+:extrapreds ((x815))
+:extrapreds ((x816))
+:extrapreds ((x817))
+:extrapreds ((x818))
+:extrapreds ((x819))
+:extrapreds ((x820))
+:extrapreds ((x821))
+:extrapreds ((x822))
+:extrapreds ((x823))
+:extrapreds ((x824))
+:extrapreds ((x825))
+:extrapreds ((x826))
+:extrapreds ((x827))
+:extrapreds ((x828))
+:extrapreds ((x829))
+:extrapreds ((x830))
+:extrapreds ((x831))
+:extrapreds ((x832))
+:extrapreds ((x833))
+:extrapreds ((x834))
+:extrapreds ((x835))
+:extrapreds ((x836))
+:extrapreds ((x837))
+:extrapreds ((x838))
+:extrapreds ((x839))
+:extrapreds ((x840))
+:extrapreds ((x841))
+:extrapreds ((x842))
+:extrapreds ((x843))
+:extrapreds ((x844))
+:extrapreds ((x845))
+:extrapreds ((x846))
+:extrapreds ((x847))
+:extrapreds ((x848))
+:extrapreds ((x849))
+:extrapreds ((x850))
+:extrapreds ((x851))
+:extrapreds ((x852))
+:extrapreds ((x853))
+:extrapreds ((x854))
+:extrapreds ((x855))
+:extrapreds ((x856))
+:extrapreds ((x857))
+:extrapreds ((x858))
+:extrapreds ((x859))
+:extrapreds ((x860))
+:extrapreds ((x861))
+:extrapreds ((x862))
+:extrapreds ((x863))
+:extrapreds ((x864))
+:extrapreds ((x865))
+:extrapreds ((x866))
+:extrapreds ((x867))
+:extrapreds ((x868))
+:extrapreds ((x869))
+:extrapreds ((x870))
+:extrapreds ((x871))
+:extrapreds ((x872))
+:extrapreds ((x873))
+:extrapreds ((x874))
+:extrapreds ((x875))
+:extrapreds ((x876))
+:extrapreds ((x877))
+:extrapreds ((x878))
+:extrapreds ((x879))
+:extrapreds ((x880))
+:extrapreds ((x881))
+:extrapreds ((x882))
+:extrapreds ((x883))
+:extrapreds ((x884))
+:extrapreds ((x885))
+:extrapreds ((x886))
+:extrapreds ((x887))
+:extrapreds ((x888))
+:extrapreds ((x889))
+:extrapreds ((x890))
+:extrapreds ((x891))
+:extrapreds ((x892))
+:extrapreds ((x893))
+:extrapreds ((x894))
+:extrapreds ((x895))
+:extrapreds ((x896))
+:extrapreds ((x897))
+:extrapreds ((x898))
+:extrapreds ((x899))
+:extrapreds ((x900))
+:extrapreds ((x901))
+:extrapreds ((x902))
+:extrapreds ((x903))
+:extrapreds ((x904))
+:extrapreds ((x905))
+:extrapreds ((x906))
+:extrapreds ((x907))
+:extrapreds ((x908))
+:extrapreds ((x909))
+:extrapreds ((x910))
+:extrapreds ((x911))
+:extrapreds ((x912))
+:extrapreds ((x913))
+:extrapreds ((x914))
+:extrapreds ((x915))
+:extrapreds ((x916))
+:extrapreds ((x917))
+:extrapreds ((x918))
+:extrapreds ((x919))
+:extrapreds ((x920))
+:extrapreds ((x921))
+:extrapreds ((x922))
+:extrapreds ((x923))
+:extrapreds ((x924))
+:extrapreds ((x925))
+:extrapreds ((x926))
+:extrapreds ((x927))
+:extrapreds ((x928))
+:extrapreds ((x929))
+:extrapreds ((x930))
+:extrapreds ((x931))
+:extrapreds ((x932))
+:extrapreds ((x933))
+:extrapreds ((x934))
+:extrapreds ((x935))
+:extrapreds ((x936))
+:extrapreds ((x937))
+:extrapreds ((x938))
+:extrapreds ((x939))
+:extrapreds ((x940))
+:extrapreds ((x941))
+:extrapreds ((x942))
+:extrapreds ((x943))
+:extrapreds ((x944))
+:extrapreds ((x945))
+:extrapreds ((x946))
+:extrapreds ((x947))
+:extrapreds ((x948))
+:extrapreds ((x949))
+:extrapreds ((x950))
+:extrapreds ((x951))
+:extrapreds ((x952))
+:extrapreds ((x953))
+:extrapreds ((x954))
+:extrapreds ((x955))
+:extrapreds ((x956))
+:extrapreds ((x957))
+:extrapreds ((x958))
+:extrapreds ((x959))
+:extrapreds ((x960))
+:extrapreds ((x961))
+:extrapreds ((x962))
+:extrapreds ((x963))
+:extrapreds ((x964))
+:extrapreds ((x965))
+:extrapreds ((x966))
+:extrapreds ((x967))
+:extrapreds ((x968))
+:extrapreds ((x969))
+:extrapreds ((x970))
+:extrapreds ((x971))
+:extrapreds ((x972))
+:extrapreds ((x973))
+:extrapreds ((x974))
+:extrapreds ((x975))
+:extrapreds ((x976))
+:extrapreds ((x977))
+:extrapreds ((x978))
+:extrapreds ((x979))
+:extrapreds ((x980))
+:extrapreds ((x981))
+:extrapreds ((x982))
+:extrapreds ((x983))
+:extrapreds ((x984))
+:extrapreds ((x985))
+:extrapreds ((x986))
+:extrapreds ((x987))
+:extrapreds ((x988))
+:extrapreds ((x989))
+:extrapreds ((x990))
+:extrapreds ((x991))
+:extrapreds ((x992))
+:extrapreds ((x993))
+:extrapreds ((x994))
+:extrapreds ((x995))
+:extrapreds ((x996))
+:extrapreds ((x997))
+:extrapreds ((x998))
+:extrapreds ((x999))
+:extrapreds ((x1000))
+:extrapreds ((x1001))
+:extrapreds ((x1002))
+:extrapreds ((x1003))
+:extrapreds ((x1004))
+:extrapreds ((x1005))
+:extrapreds ((x1006))
+:extrapreds ((x1007))
+:extrapreds ((x1008))
+:extrapreds ((x1009))
+:extrapreds ((x1010))
+:extrapreds ((x1011))
+:extrapreds ((x1012))
+:extrapreds ((x1013))
+:extrapreds ((x1014))
+:extrapreds ((x1015))
+:extrapreds ((x1016))
+:extrapreds ((x1017))
+:extrapreds ((x1018))
+:extrapreds ((x1019))
+:extrapreds ((x1020))
+:extrapreds ((x1021))
+:extrapreds ((x1022))
+:extrapreds ((x1023))
+:extrapreds ((x1024))
+:extrapreds ((x1025))
+:extrapreds ((x1026))
+:extrapreds ((x1027))
+:extrapreds ((x1028))
+:extrapreds ((x1029))
+:extrapreds ((x1030))
+:extrapreds ((x1031))
+:extrapreds ((x1032))
+:extrapreds ((x1033))
+:extrapreds ((x1034))
+:extrapreds ((x1035))
+:extrapreds ((x1036))
+:extrapreds ((x1037))
+:extrapreds ((x1038))
+:extrapreds ((x1039))
+:extrapreds ((x1040))
+:extrapreds ((x1041))
+:extrapreds ((x1042))
+:extrapreds ((x1043))
+:extrapreds ((x1044))
+:extrapreds ((x1045))
+:extrapreds ((x1046))
+:extrapreds ((x1047))
+:extrapreds ((x1048))
+:extrapreds ((x1049))
+:extrapreds ((x1050))
+:extrapreds ((x1051))
+:extrapreds ((x1052))
+:extrapreds ((x1053))
+:extrapreds ((x1054))
+:extrapreds ((x1055))
+:extrapreds ((x1056))
+:extrapreds ((x1057))
+:extrapreds ((x1058))
+:extrapreds ((x1059))
+:extrapreds ((x1060))
+:extrapreds ((x1061))
+:extrapreds ((x1062))
+:extrapreds ((x1063))
+:extrapreds ((x1064))
+:extrapreds ((x1065))
+:extrapreds ((x1066))
+:extrapreds ((x1067))
+:extrapreds ((x1068))
+:extrapreds ((x1069))
+:extrapreds ((x1070))
+:extrapreds ((x1071))
+:extrapreds ((x1072))
+:extrapreds ((x1073))
+:extrapreds ((x1074))
+:extrapreds ((x1075))
+:extrapreds ((x1076))
+:extrapreds ((x1077))
+:extrapreds ((x1078))
+:extrapreds ((x1079))
+:extrapreds ((x1080))
+:extrapreds ((x1081))
+:extrapreds ((x1082))
+:extrapreds ((x1083))
+:extrapreds ((x1084))
+:extrapreds ((x1085))
+:extrapreds ((x1086))
+:extrapreds ((x1087))
+:extrapreds ((x1088))
+:extrapreds ((x1089))
+:extrapreds ((x1090))
+:extrapreds ((x1091))
+:extrapreds ((x1092))
+:extrapreds ((x1093))
+:extrapreds ((x1094))
+:extrapreds ((x1095))
+:extrapreds ((x1096))
+:extrapreds ((x1097))
+:extrapreds ((x1098))
+:extrapreds ((x1099))
+:extrapreds ((x1100))
+:extrapreds ((x1101))
+:extrapreds ((x1102))
+:extrapreds ((x1103))
+:extrapreds ((x1104))
+:extrapreds ((x1105))
+:extrapreds ((x1106))
+:extrapreds ((x1107))
+:extrapreds ((x1108))
+:extrapreds ((x1109))
+:extrapreds ((x1110))
+:extrapreds ((x1111))
+:extrapreds ((x1112))
+:extrapreds ((x1113))
+:extrapreds ((x1114))
+:extrapreds ((x1115))
+:extrapreds ((x1116))
+:extrapreds ((x1117))
+:extrapreds ((x1118))
+:extrapreds ((x1119))
+:extrapreds ((x1120))
+:extrapreds ((x1121))
+:extrapreds ((x1122))
+:extrapreds ((x1123))
+:extrapreds ((x1124))
+:extrapreds ((x1125))
+:extrapreds ((x1126))
+:extrapreds ((x1127))
+:extrapreds ((x1128))
+:extrapreds ((x1129))
+:extrapreds ((x1130))
+:extrapreds ((x1131))
+:extrapreds ((x1132))
+:extrapreds ((x1133))
+:extrapreds ((x1134))
+:extrapreds ((x1135))
+:extrapreds ((x1136))
+:extrapreds ((x1137))
+:extrapreds ((x1138))
+:extrapreds ((x1139))
+:extrapreds ((x1140))
+:extrapreds ((x1141))
+:extrapreds ((x1142))
+:extrapreds ((x1143))
+:extrapreds ((x1144))
+:extrapreds ((x1145))
+:extrapreds ((x1146))
+:extrapreds ((x1147))
+:extrapreds ((x1148))
+:extrapreds ((x1149))
+:extrapreds ((x1150))
+:extrapreds ((x1151))
+:extrapreds ((x1152))
+:extrapreds ((x1153))
+:extrapreds ((x1154))
+:extrapreds ((x1155))
+:extrapreds ((x1156))
+:extrapreds ((x1157))
+:extrapreds ((x1158))
+:extrapreds ((x1159))
+:extrapreds ((x1160))
+:extrapreds ((x1161))
+:extrapreds ((x1162))
+:extrapreds ((x1163))
+:extrapreds ((x1164))
+:extrapreds ((x1165))
+:extrapreds ((x1166))
+:extrapreds ((x1167))
+:extrapreds ((x1168))
+:extrapreds ((x1169))
+:extrapreds ((x1170))
+:extrapreds ((x1171))
+:extrapreds ((x1172))
+:extrapreds ((x1173))
+:extrapreds ((x1174))
+:extrapreds ((x1175))
+:extrapreds ((x1176))
+:extrapreds ((x1177))
+:extrapreds ((x1178))
+:extrapreds ((x1179))
+:extrapreds ((x1180))
+:extrapreds ((x1181))
+:extrapreds ((x1182))
+:extrapreds ((x1183))
+:extrapreds ((x1184))
+:extrapreds ((x1185))
+:extrapreds ((x1186))
+:extrapreds ((x1187))
+:extrapreds ((x1188))
+:extrapreds ((x1189))
+:extrapreds ((x1190))
+:extrapreds ((x1191))
+:extrapreds ((x1192))
+:extrapreds ((x1193))
+:extrapreds ((x1194))
+:extrapreds ((x1195))
+:extrapreds ((x1196))
+:extrapreds ((x1197))
+:extrapreds ((x1198))
+:extrapreds ((x1199))
+:extrapreds ((x1200))
+:extrapreds ((x1201))
+:extrapreds ((x1202))
+:extrapreds ((x1203))
+:extrapreds ((x1204))
+:extrapreds ((x1205))
+:extrapreds ((x1206))
+:extrapreds ((x1207))
+:extrapreds ((x1208))
+:extrapreds ((x1209))
+:extrapreds ((x1210))
+:extrapreds ((x1211))
+:extrapreds ((x1212))
+:extrapreds ((x1213))
+:extrapreds ((x1214))
+:extrapreds ((x1215))
+:extrapreds ((x1216))
+:extrapreds ((x1217))
+:extrapreds ((x1218))
+:extrapreds ((x1219))
+:extrapreds ((x1220))
+:extrapreds ((x1221))
+:extrapreds ((x1222))
+:extrapreds ((x1223))
+:extrapreds ((x1224))
+:extrapreds ((x1225))
+:extrapreds ((x1226))
+:extrapreds ((x1227))
+:extrapreds ((x1228))
+:extrapreds ((x1229))
+:extrapreds ((x1230))
+:extrapreds ((x1231))
+:extrapreds ((x1232))
+:extrapreds ((x1233))
+:extrapreds ((x1234))
+:extrapreds ((x1235))
+:extrapreds ((x1236))
+:extrapreds ((x1237))
+:extrapreds ((x1238))
+:extrapreds ((x1239))
+:extrapreds ((x1240))
+:extrapreds ((x1241))
+:extrapreds ((x1242))
+:extrapreds ((x1243))
+:extrapreds ((x1244))
+:extrapreds ((x1245))
+:extrapreds ((x1246))
+:extrapreds ((x1247))
+:extrapreds ((x1248))
+:extrapreds ((x1249))
+:extrapreds ((x1250))
+:extrapreds ((x1251))
+:extrapreds ((x1252))
+:extrapreds ((x1253))
+:extrapreds ((x1254))
+:extrapreds ((x1255))
+:extrapreds ((x1256))
+:extrapreds ((x1257))
+:extrapreds ((x1258))
+:extrapreds ((x1259))
+:extrapreds ((x1260))
+:extrapreds ((x1261))
+:extrapreds ((x1262))
+:extrapreds ((x1263))
+:extrapreds ((x1264))
+:extrapreds ((x1265))
+:extrapreds ((x1266))
+:extrapreds ((x1267))
+:extrapreds ((x1268))
+:extrapreds ((x1269))
+:extrapreds ((x1270))
+:extrapreds ((x1271))
+:extrapreds ((x1272))
+:extrapreds ((x1273))
+:extrapreds ((x1274))
+:extrapreds ((x1275))
+:extrapreds ((x1276))
+:extrapreds ((x1277))
+:extrapreds ((x1278))
+:extrapreds ((x1279))
+:extrapreds ((x1280))
+:extrapreds ((x1281))
+:extrapreds ((x1282))
+:extrapreds ((x1283))
+:extrapreds ((x1284))
+:extrapreds ((x1285))
+:extrapreds ((x1286))
+:extrapreds ((x1287))
+:extrapreds ((x1288))
+:extrapreds ((x1289))
+:extrapreds ((x1290))
+:extrapreds ((x1291))
+:extrapreds ((x1292))
+:extrapreds ((x1293))
+:extrapreds ((x1294))
+:extrapreds ((x1295))
+:extrapreds ((x1296))
+:extrapreds ((x1297))
+:extrapreds ((x1298))
+:extrapreds ((x1299))
+:extrapreds ((x1300))
+:extrapreds ((x1301))
+:extrapreds ((x1302))
+:extrapreds ((x1303))
+:extrapreds ((x1304))
+:extrapreds ((x1305))
+:extrapreds ((x1306))
+:extrapreds ((x1307))
+:extrapreds ((x1308))
+:extrapreds ((x1309))
+:extrapreds ((x1310))
+:extrapreds ((x1311))
+:extrapreds ((x1312))
+:extrapreds ((x1313))
+:extrapreds ((x1314))
+:extrapreds ((x1315))
+:extrapreds ((x1316))
+:extrapreds ((x1317))
+:extrapreds ((x1318))
+:extrapreds ((x1319))
+:extrapreds ((x1320))
+:extrapreds ((x1321))
+:extrapreds ((x1322))
+:extrapreds ((x1323))
+:extrapreds ((x1324))
+:extrapreds ((x1325))
+:extrapreds ((x1326))
+:extrapreds ((x1327))
+:extrapreds ((x1328))
+:extrapreds ((x1329))
+:extrapreds ((x1330))
+:extrapreds ((x1331))
+:extrapreds ((x1332))
+:extrapreds ((x1333))
+:extrapreds ((x1334))
+:extrapreds ((x1335))
+:extrapreds ((x1336))
+:extrapreds ((x1337))
+:extrapreds ((x1338))
+:extrapreds ((x1339))
+:extrapreds ((x1340))
+:extrapreds ((x1341))
+:extrapreds ((x1342))
+:extrapreds ((x1343))
+:extrapreds ((x1344))
+:extrapreds ((x1345))
+:extrapreds ((x1346))
+:extrapreds ((x1347))
+:extrapreds ((x1348))
+:extrapreds ((x1349))
+:extrapreds ((x1350))
+:extrapreds ((x1351))
+:extrapreds ((x1352))
+:extrapreds ((x1353))
+:extrapreds ((x1354))
+:extrapreds ((x1355))
+:extrapreds ((x1356))
+:extrapreds ((x1357))
+:extrapreds ((x1358))
+:extrapreds ((x1359))
+:extrapreds ((x1360))
+:extrapreds ((x1361))
+:extrapreds ((x1362))
+:extrapreds ((x1363))
+:extrapreds ((x1364))
+:extrapreds ((x1365))
+:extrapreds ((x1366))
+:extrapreds ((x1367))
+:extrapreds ((x1368))
+:extrapreds ((x1369))
+:extrapreds ((x1370))
+:extrapreds ((x1371))
+:extrapreds ((x1372))
+:extrapreds ((x1373))
+:extrapreds ((x1374))
+:extrapreds ((x1375))
+:extrapreds ((x1376))
+:extrapreds ((x1377))
+:extrapreds ((x1378))
+:extrapreds ((x1379))
+:extrapreds ((x1380))
+:extrapreds ((x1381))
+:extrapreds ((x1382))
+:extrapreds ((x1383))
+:extrapreds ((x1384))
+:extrapreds ((x1385))
+:extrapreds ((x1386))
+:extrapreds ((x1387))
+:extrapreds ((x1388))
+:extrapreds ((x1389))
+:extrapreds ((x1390))
+:extrapreds ((x1391))
+:extrapreds ((x1392))
+:extrapreds ((x1393))
+:extrapreds ((x1394))
+:extrapreds ((x1395))
+:extrapreds ((x1396))
+:extrapreds ((x1397))
+:extrapreds ((x1398))
+:extrapreds ((x1399))
+:extrapreds ((x1400))
+:extrapreds ((x1401))
+:extrapreds ((x1402))
+:extrapreds ((x1403))
+:extrapreds ((x1404))
+:extrapreds ((x1405))
+:extrapreds ((x1406))
+:extrapreds ((x1407))
+:extrapreds ((x1408))
+:extrapreds ((x1409))
+:extrapreds ((x1410))
+:extrapreds ((x1411))
+:extrapreds ((x1412))
+:extrapreds ((x1413))
+:extrapreds ((x1414))
+:extrapreds ((x1415))
+:extrapreds ((x1416))
+:extrapreds ((x1417))
+:extrapreds ((x1418))
+:extrapreds ((x1419))
+:extrapreds ((x1420))
+:extrapreds ((x1421))
+:extrapreds ((x1422))
+:extrapreds ((x1423))
+:extrapreds ((x1424))
+:extrapreds ((x1425))
+:extrapreds ((x1426))
+:extrapreds ((x1427))
+:extrapreds ((x1428))
+:extrapreds ((x1429))
+:extrapreds ((x1430))
+:extrapreds ((x1431))
+:extrapreds ((x1432))
+:extrapreds ((x1433))
+:extrapreds ((x1434))
+:extrapreds ((x1435))
+:extrapreds ((x1436))
+:extrapreds ((x1437))
+:extrapreds ((x1438))
+:extrapreds ((x1439))
+:extrapreds ((x1440))
+:extrapreds ((x1441))
+:extrapreds ((x1442))
+:extrapreds ((x1443))
+:extrapreds ((x1444))
+:extrapreds ((x1445))
+:extrapreds ((x1446))
+:extrapreds ((x1447))
+:extrapreds ((x1448))
+:extrapreds ((x1449))
+:extrapreds ((x1450))
+:extrapreds ((x1451))
+:extrapreds ((x1452))
+:extrapreds ((x1453))
+:extrapreds ((x1454))
+:extrapreds ((x1455))
+:extrapreds ((x1456))
+:extrapreds ((x1457))
+:extrapreds ((x1458))
+:extrapreds ((x1459))
+:extrapreds ((x1460))
+:extrapreds ((x1461))
+:extrapreds ((x1462))
+:extrapreds ((x1463))
+:extrapreds ((x1464))
+:extrapreds ((x1465))
+:extrapreds ((x1466))
+:extrapreds ((x1467))
+:extrapreds ((x1468))
+:extrapreds ((x1469))
+:extrapreds ((x1470))
+:extrapreds ((x1471))
+:extrapreds ((x1472))
+:extrapreds ((x1473))
+:extrapreds ((x1474))
+:extrapreds ((x1475))
+:extrapreds ((x1476))
+:extrapreds ((x1477))
+:extrapreds ((x1478))
+:extrapreds ((x1479))
+:extrapreds ((x1480))
+:extrapreds ((x1481))
+:extrapreds ((x1482))
+:extrapreds ((x1483))
+:extrapreds ((x1484))
+:extrapreds ((x1485))
+:extrapreds ((x1486))
+:extrapreds ((x1487))
+:extrapreds ((x1488))
+:extrapreds ((x1489))
+:extrapreds ((x1490))
+:extrapreds ((x1491))
+:extrapreds ((x1492))
+:extrapreds ((x1493))
+:extrapreds ((x1494))
+:extrapreds ((x1495))
+:extrapreds ((x1496))
+:extrapreds ((x1497))
+:extrapreds ((x1498))
+:extrapreds ((x1499))
+:extrapreds ((x1500))
+:extrapreds ((x1501))
+:extrapreds ((x1502))
+:extrapreds ((x1503))
+:extrapreds ((x1504))
+:extrapreds ((x1505))
+:extrapreds ((x1506))
+:extrapreds ((x1507))
+:extrapreds ((x1508))
+:extrapreds ((x1509))
+:extrapreds ((x1510))
+:extrapreds ((x1511))
+:extrapreds ((x1512))
+:extrapreds ((x1513))
+:extrapreds ((x1514))
+:extrapreds ((x1515))
+:extrapreds ((x1516))
+:extrapreds ((x1517))
+:extrapreds ((x1518))
+:extrapreds ((x1519))
+:extrapreds ((x1520))
+:extrapreds ((x1521))
+:extrapreds ((x1522))
+:extrapreds ((x1523))
+:extrapreds ((x1524))
+:extrapreds ((x1525))
+:extrapreds ((x1526))
+:extrapreds ((x1527))
+:extrapreds ((x1528))
+:extrapreds ((x1529))
+:extrapreds ((x1530))
+:extrapreds ((x1531))
+:extrapreds ((x1532))
+:extrapreds ((x1533))
+:extrapreds ((x1534))
+:extrapreds ((x1535))
+:extrapreds ((x1536))
+:extrapreds ((x1537))
+:extrapreds ((x1538))
+:extrapreds ((x1539))
+:extrapreds ((x1540))
+:extrapreds ((x1541))
+:extrapreds ((x1542))
+:extrapreds ((x1543))
+:extrapreds ((x1544))
+:extrapreds ((x1545))
+:extrapreds ((x1546))
+:extrapreds ((x1547))
+:extrapreds ((x1548))
+:extrapreds ((x1549))
+:extrapreds ((x1550))
+:extrapreds ((x1551))
+:extrapreds ((x1552))
+:extrapreds ((x1553))
+:extrapreds ((x1554))
+:extrapreds ((x1555))
+:extrapreds ((x1556))
+:extrapreds ((x1557))
+:extrapreds ((x1558))
+:extrapreds ((x1559))
+:extrapreds ((x1560))
+:extrapreds ((x1561))
+:extrapreds ((x1562))
+:extrapreds ((x1563))
+:extrapreds ((x1564))
+:extrapreds ((x1565))
+:extrapreds ((x1566))
+:extrapreds ((x1567))
+:extrapreds ((x1568))
+:extrapreds ((x1569))
+:extrapreds ((x1570))
+:extrapreds ((x1571))
+:extrapreds ((x1572))
+:extrapreds ((x1573))
+:extrapreds ((x1574))
+:extrapreds ((x1575))
+:extrapreds ((x1576))
+:extrapreds ((x1577))
+:extrapreds ((x1578))
+:extrapreds ((x1579))
+:extrapreds ((x1580))
+:extrapreds ((x1581))
+:extrapreds ((x1582))
+:extrapreds ((x1583))
+:extrapreds ((x1584))
+:extrapreds ((x1585))
+:extrapreds ((x1586))
+:extrapreds ((x1587))
+:extrapreds ((x1588))
+:extrapreds ((x1589))
+:extrapreds ((x1590))
+:extrapreds ((x1591))
+:extrapreds ((x1592))
+:extrapreds ((x1593))
+:extrapreds ((x1594))
+:extrapreds ((x1595))
+:extrapreds ((x1596))
+:extrapreds ((x1597))
+:extrapreds ((x1598))
+:extrapreds ((x1599))
+:extrapreds ((x1600))
+:extrapreds ((x1601))
+:extrapreds ((x1602))
+:extrapreds ((x1603))
+:extrapreds ((x1604))
+:extrapreds ((x1605))
+:extrapreds ((x1606))
+:extrapreds ((x1607))
+:extrapreds ((x1608))
+:extrapreds ((x1609))
+:extrapreds ((x1610))
+:extrapreds ((x1611))
+:extrapreds ((x1612))
+:extrapreds ((x1613))
+:extrapreds ((x1614))
+:extrapreds ((x1615))
+:extrapreds ((x1616))
+:extrapreds ((x1617))
+:extrapreds ((x1618))
+:extrapreds ((x1619))
+:extrapreds ((x1620))
+:extrapreds ((x1621))
+:extrapreds ((x1622))
+:extrapreds ((x1623))
+:extrapreds ((x1624))
+:extrapreds ((x1625))
+:extrapreds ((x1626))
+:extrapreds ((x1627))
+:extrapreds ((x1628))
+:extrapreds ((x1629))
+:extrapreds ((x1630))
+:extrapreds ((x1631))
+:extrapreds ((x1632))
+:extrapreds ((x1633))
+:extrapreds ((x1634))
+:extrapreds ((x1635))
+:extrapreds ((x1636))
+:extrapreds ((x1637))
+:extrapreds ((x1638))
+:extrapreds ((x1639))
+:extrapreds ((x1640))
+:extrapreds ((x1641))
+:extrapreds ((x1642))
+:extrapreds ((x1643))
+:extrapreds ((x1644))
+:extrapreds ((x1645))
+:extrapreds ((x1646))
+:extrapreds ((x1647))
+:extrapreds ((x1648))
+:extrapreds ((x1649))
+:extrapreds ((x1650))
+:extrapreds ((x1651))
+:extrapreds ((x1652))
+:extrapreds ((x1653))
+:extrapreds ((x1654))
+:extrapreds ((x1655))
+:extrapreds ((x1656))
+:extrapreds ((x1657))
+:extrapreds ((x1658))
+:extrapreds ((x1659))
+:extrapreds ((x1660))
+:extrapreds ((x1661))
+:extrapreds ((x1662))
+:extrapreds ((x1663))
+:extrapreds ((x1664))
+:extrapreds ((x1665))
+:extrapreds ((x1666))
+:extrapreds ((x1667))
+:extrapreds ((x1668))
+:extrapreds ((x1669))
+:extrapreds ((x1670))
+:extrapreds ((x1671))
+:extrapreds ((x1672))
+:extrapreds ((x1673))
+:extrapreds ((x1674))
+:extrapreds ((x1675))
+:extrapreds ((x1676))
+:extrapreds ((x1677))
+:extrapreds ((x1678))
+:extrapreds ((x1679))
+:extrapreds ((x1680))
+:extrapreds ((x1681))
+:extrapreds ((x1682))
+:extrapreds ((x1683))
+:extrapreds ((x1684))
+:extrapreds ((x1685))
+:extrapreds ((x1686))
+:extrapreds ((x1687))
+:extrapreds ((x1688))
+:extrapreds ((x1689))
+:extrapreds ((x1690))
+:extrapreds ((x1691))
+:extrapreds ((x1692))
+:extrapreds ((x1693))
+:extrapreds ((x1694))
+:extrapreds ((x1695))
+:extrapreds ((x1696))
+:extrapreds ((x1697))
+:extrapreds ((x1698))
+:extrapreds ((x1699))
+:extrapreds ((x1700))
+:extrapreds ((x1701))
+:extrapreds ((x1702))
+:extrapreds ((x1703))
+:extrapreds ((x1704))
+:extrapreds ((x1705))
+:extrapreds ((x1706))
+:extrapreds ((x1707))
+:extrapreds ((x1708))
+:extrapreds ((x1709))
+:extrapreds ((x1710))
+:extrapreds ((x1711))
+:extrapreds ((x1712))
+:extrapreds ((x1713))
+:extrapreds ((x1714))
+:extrapreds ((x1715))
+:extrapreds ((x1716))
+:extrapreds ((x1717))
+:extrapreds ((x1718))
+:extrapreds ((x1719))
+:extrapreds ((x1720))
+:extrapreds ((x1721))
+:extrapreds ((x1722))
+:extrapreds ((x1723))
+:extrapreds ((x1724))
+:extrapreds ((x1725))
+:extrapreds ((x1726))
+:extrapreds ((x1727))
+:extrapreds ((x1728))
+:extrapreds ((x1729))
+:extrapreds ((x1730))
+:extrapreds ((x1731))
+:extrapreds ((x1732))
+:extrapreds ((x1733))
+:extrapreds ((x1734))
+:extrapreds ((x1735))
+:extrapreds ((x1736))
+:extrapreds ((x1737))
+:extrapreds ((x1738))
+:extrapreds ((x1739))
+:extrapreds ((x1740))
+:extrapreds ((x1741))
+:extrapreds ((x1742))
+:extrapreds ((x1743))
+:extrapreds ((x1744))
+:extrapreds ((x1745))
+:extrapreds ((x1746))
+:extrapreds ((x1747))
+:extrapreds ((x1748))
+:extrapreds ((x1749))
+:extrapreds ((x1750))
+:extrapreds ((x1751))
+:extrapreds ((x1752))
+:extrapreds ((x1753))
+:extrapreds ((x1754))
+:extrapreds ((x1755))
+:extrapreds ((x1756))
+:extrapreds ((x1757))
+:extrapreds ((x1758))
+:extrapreds ((x1759))
+:extrapreds ((x1760))
+:extrapreds ((x1761))
+:extrapreds ((x1762))
+:extrapreds ((x1763))
+:extrapreds ((x1764))
+:extrapreds ((x1765))
+:extrapreds ((x1766))
+:extrapreds ((x1767))
+:extrapreds ((x1768))
+:extrapreds ((x1769))
+:extrapreds ((x1770))
+:extrapreds ((x1771))
+:extrapreds ((x1772))
+:extrapreds ((x1773))
+:extrapreds ((x1774))
+:extrapreds ((x1775))
+:extrapreds ((x1776))
+:extrapreds ((x1777))
+:extrapreds ((x1778))
+:extrapreds ((x1779))
+:extrapreds ((x1780))
+:extrapreds ((x1781))
+:extrapreds ((x1782))
+:extrapreds ((x1783))
+:extrapreds ((x1784))
+:extrapreds ((x1785))
+:extrapreds ((x1786))
+:extrapreds ((x1787))
+:extrapreds ((x1788))
+:extrapreds ((x1789))
+:extrapreds ((x1790))
+:extrapreds ((x1791))
+:extrapreds ((x1792))
+:extrapreds ((x1793))
+:extrapreds ((x1794))
+:extrapreds ((x1795))
+:extrapreds ((x1796))
+:extrapreds ((x1797))
+:extrapreds ((x1798))
+:extrapreds ((x1799))
+:extrapreds ((x1800))
+:extrapreds ((x1801))
+:extrapreds ((x1802))
+:extrapreds ((x1803))
+:extrapreds ((x1804))
+:extrapreds ((x1805))
+:extrapreds ((x1806))
+:extrapreds ((x1807))
+:extrapreds ((x1808))
+:extrapreds ((x1809))
+:extrapreds ((x1810))
+:extrapreds ((x1811))
+:extrapreds ((x1812))
+:extrapreds ((x1813))
+:extrapreds ((x1814))
+:extrapreds ((x1815))
+:extrapreds ((x1816))
+:extrapreds ((x1817))
+:extrapreds ((x1818))
+:extrapreds ((x1819))
+:extrapreds ((x1820))
+:extrapreds ((x1821))
+:extrapreds ((x1822))
+:extrapreds ((x1823))
+:extrapreds ((x1824))
+:extrapreds ((x1825))
+:extrapreds ((x1826))
+:extrapreds ((x1827))
+:extrapreds ((x1828))
+:extrapreds ((x1829))
+:extrapreds ((x1830))
+:extrapreds ((x1831))
+:extrapreds ((x1832))
+:extrapreds ((x1833))
+:extrapreds ((x1834))
+:extrapreds ((x1835))
+:extrapreds ((x1836))
+:extrapreds ((x1837))
+:extrapreds ((x1838))
+:extrapreds ((x1839))
+:extrapreds ((x1840))
+:extrapreds ((x1841))
+:extrapreds ((x1842))
+:extrapreds ((x1843))
+:extrapreds ((x1844))
+:extrapreds ((x1845))
+:extrapreds ((x1846))
+:extrapreds ((x1847))
+:extrapreds ((x1848))
+:extrapreds ((x1849))
+:extrapreds ((x1850))
+:extrapreds ((x1851))
+:extrapreds ((x1852))
+:extrapreds ((x1853))
+:extrapreds ((x1854))
+:extrapreds ((x1855))
+:extrapreds ((x1856))
+:extrapreds ((x1857))
+:extrapreds ((x1858))
+:extrapreds ((x1859))
+:extrapreds ((x1860))
+:extrapreds ((x1861))
+:extrapreds ((x1862))
+:extrapreds ((x1863))
+:extrapreds ((x1864))
+:extrapreds ((x1865))
+:extrapreds ((x1866))
+:extrapreds ((x1867))
+:extrapreds ((x1868))
+:extrapreds ((x1869))
+:extrapreds ((x1870))
+:extrapreds ((x1871))
+:extrapreds ((x1872))
+:extrapreds ((x1873))
+:extrapreds ((x1874))
+:extrapreds ((x1875))
+:extrapreds ((x1876))
+:extrapreds ((x1877))
+:extrapreds ((x1878))
+:extrapreds ((x1879))
+:extrapreds ((x1880))
+:extrapreds ((x1881))
+:extrapreds ((x1882))
+:extrapreds ((x1883))
+:extrapreds ((x1884))
+:extrapreds ((x1885))
+:extrapreds ((x1886))
+:extrapreds ((x1887))
+:extrapreds ((x1888))
+:extrapreds ((x1889))
+:extrapreds ((x1890))
+:extrapreds ((x1891))
+:extrapreds ((x1892))
+:extrapreds ((x1893))
+:extrapreds ((x1894))
+:extrapreds ((x1895))
+:extrapreds ((x1896))
+:extrapreds ((x1897))
+:extrapreds ((x1898))
+:extrapreds ((x1899))
+:extrapreds ((x1900))
+:extrapreds ((x1901))
+:extrapreds ((x1902))
+:extrapreds ((x1903))
+:extrapreds ((x1904))
+:extrapreds ((x1905))
+:extrapreds ((x1906))
+:extrapreds ((x1907))
+:extrapreds ((x1908))
+:extrapreds ((x1909))
+:extrapreds ((x1910))
+:extrapreds ((x1911))
+:extrapreds ((x1912))
+:extrapreds ((x1913))
+:extrapreds ((x1914))
+:extrapreds ((x1915))
+:extrapreds ((x1916))
+:extrapreds ((x1917))
+:extrapreds ((x1918))
+:extrapreds ((x1919))
+:extrapreds ((x1920))
+:extrapreds ((x1921))
+:extrapreds ((x1922))
+:extrapreds ((x1923))
+:extrapreds ((x1924))
+:extrapreds ((x1925))
+:extrapreds ((x1926))
+:extrapreds ((x1927))
+:extrapreds ((x1928))
+:extrapreds ((x1929))
+:extrapreds ((x1930))
+:extrapreds ((x1931))
+:extrapreds ((x1932))
+:extrapreds ((x1933))
+:extrapreds ((x1934))
+:extrapreds ((x1935))
+:extrapreds ((x1936))
+:extrapreds ((x1937))
+:extrapreds ((x1938))
+:extrapreds ((x1939))
+:extrapreds ((x1940))
+:extrapreds ((x1941))
+:extrapreds ((x1942))
+:extrapreds ((x1943))
+:extrapreds ((x1944))
+:extrapreds ((x1945))
+:extrapreds ((x1946))
+:extrapreds ((x1947))
+:extrapreds ((x1948))
+:extrapreds ((x1949))
+:extrapreds ((x1950))
+:extrapreds ((x1951))
+:extrapreds ((x1952))
+:extrapreds ((x1953))
+:extrapreds ((x1954))
+:extrapreds ((x1955))
+:extrapreds ((x1956))
+:extrapreds ((x1957))
+:extrapreds ((x1958))
+:extrapreds ((x1959))
+:extrapreds ((x1960))
+:formula (and
+(or (not x25) (not x2))
+(or (not x20) (not x2))
+(or (not x15) (not x2) x56)
+(or (not x9) (not x2) x64)
+(or (not x4) (not x57) x39)
+(or (not x1) (not x57) x48)
+(or (not x25) (not x57) x36)
+(or (not x20) (not x57) x42)
+(or (not x15) (not x57))
+(or (not x9) (not x57))
+(or (not x994) (not x980))
+(or (not x987) (not x980))
+(or (not x992) (not x980) x959)
+(or (not x985) (not x980) x952)
+(or (not x990) (not x980) x957)
+(or (not x983) (not x980) x950)
+(or (not x994) (not x978) x936)
+(or (not x987) (not x978) x929)
+(or (not x992) (not x978))
+(or (not x985) (not x978))
+(or (not x990) (not x978) x933)
+(or (not x983) (not x978) x926)
+(or (not x994) (not x976) x916)
+(or (not x987) (not x976) x910)
+(or (not x992) (not x976) x914)
+(or (not x985) (not x976) x908)
+(or (not x990) (not x976))
+(or (not x983) (not x976))
+(or (not x969) (not x955))
+(or (not x962) (not x955))
+(or (not x966) (not x955) x985)
+(or (not x959) (not x955) x978)
+(or (not x964) (not x955) x983)
+(or (not x957) (not x955) x976)
+(or (not x969) (not x952) x938)
+(or (not x962) (not x952) x931)
+(or (not x966) (not x952))
+(or (not x959) (not x952))
+(or (not x964) (not x952) x933)
+(or (not x957) (not x952) x926)
+(or (not x969) (not x950) x918)
+(or (not x962) (not x950) x912)
+(or (not x966) (not x950) x914)
+(or (not x959) (not x950) x908)
+(or (not x964) (not x950))
+(or (not x957) (not x950))
+(or (not x945) (not x931))
+(or (not x938) (not x931))
+(or (not x943) (not x931) x987)
+(or (not x936) (not x931) x980)
+(or (not x940) (not x931) x983)
+(or (not x933) (not x931) x976)
+(or (not x945) (not x929) x962)
+(or (not x938) (not x929) x955)
+(or (not x943) (not x929))
+(or (not x936) (not x929))
+(or (not x940) (not x929) x957)
+(or (not x933) (not x929) x950)
+(or (not x945) (not x926) x918)
+(or (not x938) (not x926) x912)
+(or (not x943) (not x926) x916)
+(or (not x936) (not x926) x910)
+(or (not x940) (not x926))
+(or (not x933) (not x926))
+(or (not x924) (not x912))
+(or (not x918) (not x912))
+(or (not x922) (not x912) x987)
+(or (not x916) (not x912) x980)
+(or (not x920) (not x912) x985)
+(or (not x914) (not x912) x978)
+(or (not x924) (not x910) x962)
+(or (not x918) (not x910) x955)
+(or (not x922) (not x910))
+(or (not x916) (not x910))
+(or (not x920) (not x910) x959)
+(or (not x914) (not x910) x952)
+(or (not x924) (not x908) x938)
+(or (not x918) (not x908) x931)
+(or (not x922) (not x908) x936)
+(or (not x916) (not x908) x929)
+(or (not x920) (not x908))
+(or (not x914) (not x908))
+(or (not x231) (not x108) (not x23) x1916)
+(or (not x231) (not x108) (not x24) x1905)
+(or (not x229) (not x108) (not x22) x1883)
+(or (not x229) (not x108) (not x24) x1872)
+(or (not x246) (not x108) (not x22) x1850)
+(or (not x246) (not x108) (not x23) x1839)
+(or (not x226) (not x80) (not x18) x1949)
+(or (not x226) (not x80) (not x19) x1938)
+(or (not x224) (not x80) (not x17) x1894)
+(or (not x224) (not x80) (not x19) x1872)
+(or (not x243) (not x80) (not x17) x1861)
+(or (not x243) (not x80) (not x18) x1839)
+(or (not x218) (not x71) (not x13) x1960)
+(or (not x218) (not x71) (not x14) x1938)
+(or (not x214) (not x71) (not x12) x1927)
+(or (not x214) (not x71) (not x14) x1905)
+(or (not x237) (not x71) (not x12) x1861)
+(or (not x237) (not x71) (not x13) x1850)
+(or (not x228) (not x60) (not x7) x1960)
+(or (not x1960) (not x1956) (not x1950) x1959 x1958)
+(or (not x1960) (not x1950) x1957 x1956)
+(or (not x1960) x1951 x1950)
+(or (not x1958) (not x1956) (not x1950) x1960)
+(or (not x1959) (not x1956) (not x1950) x1960)
+(or (not x1957) (not x1950) x1960)
+(or (not x1951) x1960)
+(or (not x1959) (not x1958))
+(or (not x1347) x1959 x1344 x906)
+(or (not x1959) (not x1347) (not x906) x1344)
+(or (not x1959) (not x1344) x1347 x906)
+(or (not x1344) (not x906) x1959 x1347)
+(or (not x1346) x1959 x1343 x906)
+(or (not x1959) (not x1346) (not x906) x1343)
+(or (not x1959) (not x1343) x1346 x906)
+(or (not x1343) (not x906) x1959 x1346)
+(or (not x1345) x1959 x1342 x906)
+(or (not x1959) (not x1345) (not x906) x1342)
+(or (not x1959) (not x1342) x1345 x906)
+(or (not x1342) (not x906) x1959 x1345)
+(or (not x1346) (not x1343) x1958 x1347 x1344)
+(or (not x1345) (not x1342) x1958 x1346 x1343)
+(or x1958 x1345 x1342)
+(or (not x1347) (not x1344) x1958)
+(or (not x1958) (not x1344) x1347)
+(or (not x1958) (not x1347) x1344)
+(or (not x1958) (not x1343) x1346)
+(or (not x1958) (not x1346) x1343)
+(or (not x1958) (not x1342) x1345)
+(or (not x1958) (not x1345) x1342)
+(or (not x34) x1957 x1955 x1283)
+(or (not x1957) (not x1283) (not x34) x1955)
+(or (not x1957) x1955 x1283 x34)
+(or (not x1283) x1957 x1955 x34)
+(or (not x1955) (not x29) x1957 x1954 x1282)
+(or (not x1957) (not x1955) (not x1282) (not x29) x1954)
+(or (not x1957) (not x1955) x1954 x1282 x29)
+(or (not x1955) (not x1282) x1957 x1954 x29)
+(or (not x1954) (not x27) x1957 x1953 x1281)
+(or (not x1957) (not x1954) (not x1281) (not x27) x1953)
+(or (not x1957) (not x1954) x1953 x1281 x27)
+(or (not x1954) (not x1281) x1957 x1953 x27)
+(or (not x1953) (not x1356) x1957 x1952 x1280)
+(or (not x1957) (not x1953) (not x1280) (not x1356) x1952)
+(or (not x1957) (not x1953) x1952 x1280 x1356)
+(or (not x1953) (not x1280) x1957 x1952 x1356)
+(or (not x1957) (not x1956))
+(or (not x1952) x1956)
+(or (not x1956) x1952)
+(or x1955 x1287 x1283)
+(or (not x1287) (not x1283) x1955)
+(or (not x1955) (not x1283) x1287)
+(or (not x1955) (not x1287) x1283)
+(or (not x1955) x1954 x1286 x1282)
+(or (not x1955) (not x1286) (not x1282) x1954)
+(or (not x1954) (not x1282) x1286)
+(or (not x1954) (not x1286) x1282)
+(or (not x1954) x1955)
+(or (not x1954) x1953 x1285 x1281)
+(or (not x1954) (not x1285) (not x1281) x1953)
+(or (not x1953) (not x1281) x1285)
+(or (not x1953) (not x1285) x1281)
+(or (not x1953) x1954)
+(or (not x1953) x1952 x1284 x1280)
+(or (not x1953) (not x1284) (not x1280) x1952)
+(or (not x1952) (not x1280) x1284)
+(or (not x1952) (not x1284) x1280)
+(or (not x1952) x1953)
+(or (not x1951) (not x472) (not x468))
+(or (not x472) (not x468) x1950)
+(or (not x1951) (not x472) (not x466) x55)
+(or (not x472) (not x466) (not x55) x1951)
+(or (not x1950) (not x472) (not x466))
+(or (not x1951) (not x472) (not x465) x53)
+(or (not x472) (not x465) (not x53) x1951)
+(or (not x1950) (not x472) (not x465))
+(or (not x1951) (not x471) (not x468) x51)
+(or (not x471) (not x468) (not x51) x1951)
+(or (not x1950) (not x471) (not x468))
+(or (not x1951) (not x471) (not x466))
+(or (not x471) (not x466) x1950)
+(or (not x1951) (not x471) (not x465) x47)
+(or (not x471) (not x465) (not x47) x1951)
+(or (not x1950) (not x471) (not x465))
+(or (not x1951) (not x469) (not x468) x45)
+(or (not x469) (not x468) (not x45) x1951)
+(or (not x1950) (not x469) (not x468))
+(or (not x1951) (not x469) (not x466) x41)
+(or (not x469) (not x466) (not x41) x1951)
+(or (not x1950) (not x469) (not x466))
+(or (not x1951) (not x469) (not x465))
+(or (not x469) (not x465) x1950)
+(or (not x228) (not x60) (not x8) x1949)
+(or (not x1949) (not x1945) (not x1939) x1948 x1947)
+(or (not x1949) (not x1939) x1946 x1945)
+(or (not x1949) x1940 x1939)
+(or (not x1947) (not x1945) (not x1939) x1949)
+(or (not x1948) (not x1945) (not x1939) x1949)
+(or (not x1946) (not x1939) x1949)
+(or (not x1940) x1949)
+(or (not x1948) (not x1947))
+(or (not x1347) x1948 x1341 x906)
+(or (not x1948) (not x1347) (not x906) x1341)
+(or (not x1948) (not x1341) x1347 x906)
+(or (not x1341) (not x906) x1948 x1347)
+(or (not x1346) x1948 x1340 x906)
+(or (not x1948) (not x1346) (not x906) x1340)
+(or (not x1948) (not x1340) x1346 x906)
+(or (not x1340) (not x906) x1948 x1346)
+(or (not x1345) x1948 x1339 x906)
+(or (not x1948) (not x1345) (not x906) x1339)
+(or (not x1948) (not x1339) x1345 x906)
+(or (not x1339) (not x906) x1948 x1345)
+(or (not x1346) (not x1340) x1947 x1347 x1341)
+(or (not x1345) (not x1339) x1947 x1346 x1340)
+(or x1947 x1345 x1339)
+(or (not x1347) (not x1341) x1947)
+(or (not x1947) (not x1341) x1347)
+(or (not x1947) (not x1347) x1341)
+(or (not x1947) (not x1340) x1346)
+(or (not x1947) (not x1346) x1340)
+(or (not x1947) (not x1339) x1345)
+(or (not x1947) (not x1345) x1339)
+(or (not x34) x1946 x1944 x1279)
+(or (not x1946) (not x1279) (not x34) x1944)
+(or (not x1946) x1944 x1279 x34)
+(or (not x1279) x1946 x1944 x34)
+(or (not x1944) (not x29) x1946 x1943 x1278)
+(or (not x1946) (not x1944) (not x1278) (not x29) x1943)
+(or (not x1946) (not x1944) x1943 x1278 x29)
+(or (not x1944) (not x1278) x1946 x1943 x29)
+(or (not x1943) (not x27) x1946 x1942 x1277)
+(or (not x1946) (not x1943) (not x1277) (not x27) x1942)
+(or (not x1946) (not x1943) x1942 x1277 x27)
+(or (not x1943) (not x1277) x1946 x1942 x27)
+(or (not x1942) (not x1356) x1946 x1941 x1276)
+(or (not x1946) (not x1942) (not x1276) (not x1356) x1941)
+(or (not x1946) (not x1942) x1941 x1276 x1356)
+(or (not x1942) (not x1276) x1946 x1941 x1356)
+(or (not x1946) (not x1945))
+(or (not x1941) x1945)
+(or (not x1945) x1941)
+(or x1944 x1287 x1279)
+(or (not x1287) (not x1279) x1944)
+(or (not x1944) (not x1279) x1287)
+(or (not x1944) (not x1287) x1279)
+(or (not x1944) x1943 x1286 x1278)
+(or (not x1944) (not x1286) (not x1278) x1943)
+(or (not x1943) (not x1278) x1286)
+(or (not x1943) (not x1286) x1278)
+(or (not x1943) x1944)
+(or (not x1943) x1942 x1285 x1277)
+(or (not x1943) (not x1285) (not x1277) x1942)
+(or (not x1942) (not x1277) x1285)
+(or (not x1942) (not x1285) x1277)
+(or (not x1942) x1943)
+(or (not x1942) x1941 x1284 x1276)
+(or (not x1942) (not x1284) (not x1276) x1941)
+(or (not x1941) (not x1276) x1284)
+(or (not x1941) (not x1284) x1276)
+(or (not x1941) x1942)
+(or (not x1940) (not x472) (not x463))
+(or (not x472) (not x463) x1939)
+(or (not x1940) (not x472) (not x462) x55)
+(or (not x472) (not x462) (not x55) x1940)
+(or (not x1939) (not x472) (not x462))
+(or (not x1940) (not x472) (not x460) x53)
+(or (not x472) (not x460) (not x53) x1940)
+(or (not x1939) (not x472) (not x460))
+(or (not x1940) (not x471) (not x463) x51)
+(or (not x471) (not x463) (not x51) x1940)
+(or (not x1939) (not x471) (not x463))
+(or (not x1940) (not x471) (not x462))
+(or (not x471) (not x462) x1939)
+(or (not x1940) (not x471) (not x460) x47)
+(or (not x471) (not x460) (not x47) x1940)
+(or (not x1939) (not x471) (not x460))
+(or (not x1940) (not x469) (not x463) x45)
+(or (not x469) (not x463) (not x45) x1940)
+(or (not x1939) (not x469) (not x463))
+(or (not x1940) (not x469) (not x462) x41)
+(or (not x469) (not x462) (not x41) x1940)
+(or (not x1939) (not x469) (not x462))
+(or (not x1940) (not x469) (not x460))
+(or (not x469) (not x460) x1939)
+(or (not x1938) (not x1934) (not x1928) x1937 x1936)
+(or (not x1938) (not x1928) x1935 x1934)
+(or (not x1938) x1929 x1928)
+(or (not x1936) (not x1934) (not x1928) x1938)
+(or (not x1937) (not x1934) (not x1928) x1938)
+(or (not x1935) (not x1928) x1938)
+(or (not x1929) x1938)
+(or (not x1937) (not x1936))
+(or (not x1347) x1937 x1338 x906)
+(or (not x1937) (not x1347) (not x906) x1338)
+(or (not x1937) (not x1338) x1347 x906)
+(or (not x1338) (not x906) x1937 x1347)
+(or (not x1346) x1937 x1337 x906)
+(or (not x1937) (not x1346) (not x906) x1337)
+(or (not x1937) (not x1337) x1346 x906)
+(or (not x1337) (not x906) x1937 x1346)
+(or (not x1345) x1937 x1336 x906)
+(or (not x1937) (not x1345) (not x906) x1336)
+(or (not x1937) (not x1336) x1345 x906)
+(or (not x1336) (not x906) x1937 x1345)
+(or (not x1346) (not x1337) x1936 x1347 x1338)
+(or (not x1345) (not x1336) x1936 x1346 x1337)
+(or x1936 x1345 x1336)
+(or (not x1347) (not x1338) x1936)
+(or (not x1936) (not x1338) x1347)
+(or (not x1936) (not x1347) x1338)
+(or (not x1936) (not x1337) x1346)
+(or (not x1936) (not x1346) x1337)
+(or (not x1936) (not x1336) x1345)
+(or (not x1936) (not x1345) x1336)
+(or (not x34) x1935 x1933 x1275)
+(or (not x1935) (not x1275) (not x34) x1933)
+(or (not x1935) x1933 x1275 x34)
+(or (not x1275) x1935 x1933 x34)
+(or (not x1933) (not x29) x1935 x1932 x1274)
+(or (not x1935) (not x1933) (not x1274) (not x29) x1932)
+(or (not x1935) (not x1933) x1932 x1274 x29)
+(or (not x1933) (not x1274) x1935 x1932 x29)
+(or (not x1932) (not x27) x1935 x1931 x1272)
+(or (not x1935) (not x1932) (not x1272) (not x27) x1931)
+(or (not x1935) (not x1932) x1931 x1272 x27)
+(or (not x1932) (not x1272) x1935 x1931 x27)
+(or (not x1931) (not x1356) x1935 x1930 x1273)
+(or (not x1935) (not x1931) (not x1273) (not x1356) x1930)
+(or (not x1935) (not x1931) x1930 x1273 x1356)
+(or (not x1931) (not x1273) x1935 x1930 x1356)
+(or (not x1935) (not x1934))
+(or (not x1930) x1934)
+(or (not x1934) x1930)
+(or x1933 x1287 x1275)
+(or (not x1287) (not x1275) x1933)
+(or (not x1933) (not x1275) x1287)
+(or (not x1933) (not x1287) x1275)
+(or (not x1933) x1932 x1286 x1274)
+(or (not x1933) (not x1286) (not x1274) x1932)
+(or (not x1932) (not x1274) x1286)
+(or (not x1932) (not x1286) x1274)
+(or (not x1932) x1933)
+(or (not x1932) x1931 x1285 x1272)
+(or (not x1932) (not x1285) (not x1272) x1931)
+(or (not x1931) (not x1272) x1285)
+(or (not x1931) (not x1285) x1272)
+(or (not x1931) x1932)
+(or (not x1931) x1930 x1284 x1273)
+(or (not x1931) (not x1284) (not x1273) x1930)
+(or (not x1930) (not x1273) x1284)
+(or (not x1930) (not x1284) x1273)
+(or (not x1930) x1931)
+(or (not x1929) (not x472) (not x459))
+(or (not x472) (not x459) x1928)
+(or (not x1929) (not x472) (not x457) x55)
+(or (not x472) (not x457) (not x55) x1929)
+(or (not x1928) (not x472) (not x457))
+(or (not x1929) (not x472) (not x456) x53)
+(or (not x472) (not x456) (not x53) x1929)
+(or (not x1928) (not x472) (not x456))
+(or (not x1929) (not x471) (not x459) x51)
+(or (not x471) (not x459) (not x51) x1929)
+(or (not x1928) (not x471) (not x459))
+(or (not x1929) (not x471) (not x457))
+(or (not x471) (not x457) x1928)
+(or (not x1929) (not x471) (not x456) x47)
+(or (not x471) (not x456) (not x47) x1929)
+(or (not x1928) (not x471) (not x456))
+(or (not x1929) (not x469) (not x459) x45)
+(or (not x469) (not x459) (not x45) x1929)
+(or (not x1928) (not x469) (not x459))
+(or (not x1929) (not x469) (not x457) x41)
+(or (not x469) (not x457) (not x41) x1929)
+(or (not x1928) (not x469) (not x457))
+(or (not x1929) (not x469) (not x456))
+(or (not x469) (not x456) x1928)
+(or (not x223) (not x60) (not x6) x1927)
+(or (not x1927) (not x1923) (not x1917) x1926 x1925)
+(or (not x1927) (not x1917) x1924 x1923)
+(or (not x1927) x1918 x1917)
+(or (not x1925) (not x1923) (not x1917) x1927)
+(or (not x1926) (not x1923) (not x1917) x1927)
+(or (not x1924) (not x1917) x1927)
+(or (not x1918) x1927)
+(or (not x1926) (not x1925))
+(or (not x1344) x1926 x1347 x905)
+(or (not x1926) (not x1344) (not x905) x1347)
+(or (not x1926) (not x1347) x1344 x905)
+(or (not x1347) (not x905) x1926 x1344)
+(or (not x1343) x1926 x1346 x905)
+(or (not x1926) (not x1343) (not x905) x1346)
+(or (not x1926) (not x1346) x1343 x905)
+(or (not x1346) (not x905) x1926 x1343)
+(or (not x1342) x1926 x1345 x905)
+(or (not x1926) (not x1342) (not x905) x1345)
+(or (not x1926) (not x1345) x1342 x905)
+(or (not x1345) (not x905) x1926 x1342)
+(or (not x1346) (not x1343) x1925 x1347 x1344)
+(or (not x1345) (not x1342) x1925 x1346 x1343)
+(or x1925 x1345 x1342)
+(or (not x1347) (not x1344) x1925)
+(or (not x1925) (not x1347) x1344)
+(or (not x1925) (not x1344) x1347)
+(or (not x1925) (not x1346) x1343)
+(or (not x1925) (not x1343) x1346)
+(or (not x1925) (not x1345) x1342)
+(or (not x1925) (not x1342) x1345)
+(or (not x34) x1924 x1922 x1287)
+(or (not x1924) (not x1287) (not x34) x1922)
+(or (not x1924) x1922 x1287 x34)
+(or (not x1287) x1924 x1922 x34)
+(or (not x1922) (not x29) x1924 x1921 x1286)
+(or (not x1924) (not x1922) (not x1286) (not x29) x1921)
+(or (not x1924) (not x1922) x1921 x1286 x29)
+(or (not x1922) (not x1286) x1924 x1921 x29)
+(or (not x1921) (not x27) x1924 x1920 x1285)
+(or (not x1924) (not x1921) (not x1285) (not x27) x1920)
+(or (not x1924) (not x1921) x1920 x1285 x27)
+(or (not x1921) (not x1285) x1924 x1920 x27)
+(or (not x1920) (not x1356) x1924 x1919 x1284)
+(or (not x1924) (not x1920) (not x1284) (not x1356) x1919)
+(or (not x1924) (not x1920) x1919 x1284 x1356)
+(or (not x1920) (not x1284) x1924 x1919 x1356)
+(or (not x1924) (not x1923))
+(or (not x1919) x1923)
+(or (not x1923) x1919)
+(or x1922 x1287 x1283)
+(or (not x1287) (not x1283) x1922)
+(or (not x1922) (not x1287) x1283)
+(or (not x1922) (not x1283) x1287)
+(or (not x1922) x1921 x1286 x1282)
+(or (not x1922) (not x1286) (not x1282) x1921)
+(or (not x1921) (not x1286) x1282)
+(or (not x1921) (not x1282) x1286)
+(or (not x1921) x1922)
+(or (not x1921) x1920 x1285 x1281)
+(or (not x1921) (not x1285) (not x1281) x1920)
+(or (not x1920) (not x1285) x1281)
+(or (not x1920) (not x1281) x1285)
+(or (not x1920) x1921)
+(or (not x1920) x1919 x1284 x1280)
+(or (not x1920) (not x1284) (not x1280) x1919)
+(or (not x1919) (not x1284) x1280)
+(or (not x1919) (not x1280) x1284)
+(or (not x1919) x1920)
+(or (not x1918) (not x472) (not x468))
+(or (not x472) (not x468) x1917)
+(or (not x1918) (not x471) (not x468) x55)
+(or (not x471) (not x468) (not x55) x1918)
+(or (not x1917) (not x471) (not x468))
+(or (not x1918) (not x469) (not x468) x53)
+(or (not x469) (not x468) (not x53) x1918)
+(or (not x1917) (not x469) (not x468))
+(or (not x1918) (not x472) (not x466) x51)
+(or (not x472) (not x466) (not x51) x1918)
+(or (not x1917) (not x472) (not x466))
+(or (not x1918) (not x471) (not x466))
+(or (not x471) (not x466) x1917)
+(or (not x1918) (not x469) (not x466) x47)
+(or (not x469) (not x466) (not x47) x1918)
+(or (not x1917) (not x469) (not x466))
+(or (not x1918) (not x472) (not x465) x45)
+(or (not x472) (not x465) (not x45) x1918)
+(or (not x1917) (not x472) (not x465))
+(or (not x1918) (not x471) (not x465) x41)
+(or (not x471) (not x465) (not x41) x1918)
+(or (not x1917) (not x471) (not x465))
+(or (not x1918) (not x469) (not x465))
+(or (not x469) (not x465) x1917)
+(or (not x223) (not x60) (not x8) x1916)
+(or (not x1916) (not x1912) (not x1906) x1915 x1914)
+(or (not x1916) (not x1906) x1913 x1912)
+(or (not x1916) x1907 x1906)
+(or (not x1914) (not x1912) (not x1906) x1916)
+(or (not x1915) (not x1912) (not x1906) x1916)
+(or (not x1913) (not x1906) x1916)
+(or (not x1907) x1916)
+(or (not x1915) (not x1914))
+(or (not x1344) x1915 x1341 x905)
+(or (not x1915) (not x1344) (not x905) x1341)
+(or (not x1915) (not x1341) x1344 x905)
+(or (not x1341) (not x905) x1915 x1344)
+(or (not x1343) x1915 x1340 x905)
+(or (not x1915) (not x1343) (not x905) x1340)
+(or (not x1915) (not x1340) x1343 x905)
+(or (not x1340) (not x905) x1915 x1343)
+(or (not x1342) x1915 x1339 x905)
+(or (not x1915) (not x1342) (not x905) x1339)
+(or (not x1915) (not x1339) x1342 x905)
+(or (not x1339) (not x905) x1915 x1342)
+(or (not x1343) (not x1340) x1914 x1344 x1341)
+(or (not x1342) (not x1339) x1914 x1343 x1340)
+(or x1914 x1342 x1339)
+(or (not x1344) (not x1341) x1914)
+(or (not x1914) (not x1341) x1344)
+(or (not x1914) (not x1344) x1341)
+(or (not x1914) (not x1340) x1343)
+(or (not x1914) (not x1343) x1340)
+(or (not x1914) (not x1339) x1342)
+(or (not x1914) (not x1342) x1339)
+(or (not x34) x1913 x1911 x1279)
+(or (not x1913) (not x1279) (not x34) x1911)
+(or (not x1913) x1911 x1279 x34)
+(or (not x1279) x1913 x1911 x34)
+(or (not x1911) (not x29) x1913 x1910 x1278)
+(or (not x1913) (not x1911) (not x1278) (not x29) x1910)
+(or (not x1913) (not x1911) x1910 x1278 x29)
+(or (not x1911) (not x1278) x1913 x1910 x29)
+(or (not x1910) (not x27) x1913 x1909 x1277)
+(or (not x1913) (not x1910) (not x1277) (not x27) x1909)
+(or (not x1913) (not x1910) x1909 x1277 x27)
+(or (not x1910) (not x1277) x1913 x1909 x27)
+(or (not x1909) (not x1356) x1913 x1908 x1276)
+(or (not x1913) (not x1909) (not x1276) (not x1356) x1908)
+(or (not x1913) (not x1909) x1908 x1276 x1356)
+(or (not x1909) (not x1276) x1913 x1908 x1356)
+(or (not x1913) (not x1912))
+(or (not x1908) x1912)
+(or (not x1912) x1908)
+(or x1911 x1283 x1279)
+(or (not x1283) (not x1279) x1911)
+(or (not x1911) (not x1279) x1283)
+(or (not x1911) (not x1283) x1279)
+(or (not x1911) x1910 x1282 x1278)
+(or (not x1911) (not x1282) (not x1278) x1910)
+(or (not x1910) (not x1278) x1282)
+(or (not x1910) (not x1282) x1278)
+(or (not x1910) x1911)
+(or (not x1910) x1909 x1281 x1277)
+(or (not x1910) (not x1281) (not x1277) x1909)
+(or (not x1909) (not x1277) x1281)
+(or (not x1909) (not x1281) x1277)
+(or (not x1909) x1910)
+(or (not x1909) x1908 x1280 x1276)
+(or (not x1909) (not x1280) (not x1276) x1908)
+(or (not x1908) (not x1276) x1280)
+(or (not x1908) (not x1280) x1276)
+(or (not x1908) x1909)
+(or (not x1907) (not x468) (not x463))
+(or (not x468) (not x463) x1906)
+(or (not x1907) (not x468) (not x462) x55)
+(or (not x468) (not x462) (not x55) x1907)
+(or (not x1906) (not x468) (not x462))
+(or (not x1907) (not x468) (not x460) x53)
+(or (not x468) (not x460) (not x53) x1907)
+(or (not x1906) (not x468) (not x460))
+(or (not x1907) (not x466) (not x463) x51)
+(or (not x466) (not x463) (not x51) x1907)
+(or (not x1906) (not x466) (not x463))
+(or (not x1907) (not x466) (not x462))
+(or (not x466) (not x462) x1906)
+(or (not x1907) (not x466) (not x460) x47)
+(or (not x466) (not x460) (not x47) x1907)
+(or (not x1906) (not x466) (not x460))
+(or (not x1907) (not x465) (not x463) x45)
+(or (not x465) (not x463) (not x45) x1907)
+(or (not x1906) (not x465) (not x463))
+(or (not x1907) (not x465) (not x462) x41)
+(or (not x465) (not x462) (not x41) x1907)
+(or (not x1906) (not x465) (not x462))
+(or (not x1907) (not x465) (not x460))
+(or (not x465) (not x460) x1906)
+(or (not x1905) (not x1901) (not x1895) x1904 x1903)
+(or (not x1905) (not x1895) x1902 x1901)
+(or (not x1905) x1896 x1895)
+(or (not x1903) (not x1901) (not x1895) x1905)
+(or (not x1904) (not x1901) (not x1895) x1905)
+(or (not x1902) (not x1895) x1905)
+(or (not x1896) x1905)
+(or (not x1904) (not x1903))
+(or (not x1344) x1904 x1338 x905)
+(or (not x1904) (not x1344) (not x905) x1338)
+(or (not x1904) (not x1338) x1344 x905)
+(or (not x1338) (not x905) x1904 x1344)
+(or (not x1343) x1904 x1337 x905)
+(or (not x1904) (not x1343) (not x905) x1337)
+(or (not x1904) (not x1337) x1343 x905)
+(or (not x1337) (not x905) x1904 x1343)
+(or (not x1342) x1904 x1336 x905)
+(or (not x1904) (not x1342) (not x905) x1336)
+(or (not x1904) (not x1336) x1342 x905)
+(or (not x1336) (not x905) x1904 x1342)
+(or (not x1343) (not x1337) x1903 x1344 x1338)
+(or (not x1342) (not x1336) x1903 x1343 x1337)
+(or x1903 x1342 x1336)
+(or (not x1344) (not x1338) x1903)
+(or (not x1903) (not x1338) x1344)
+(or (not x1903) (not x1344) x1338)
+(or (not x1903) (not x1337) x1343)
+(or (not x1903) (not x1343) x1337)
+(or (not x1903) (not x1336) x1342)
+(or (not x1903) (not x1342) x1336)
+(or (not x34) x1902 x1900 x1275)
+(or (not x1902) (not x1275) (not x34) x1900)
+(or (not x1902) x1900 x1275 x34)
+(or (not x1275) x1902 x1900 x34)
+(or (not x1900) (not x29) x1902 x1899 x1274)
+(or (not x1902) (not x1900) (not x1274) (not x29) x1899)
+(or (not x1902) (not x1900) x1899 x1274 x29)
+(or (not x1900) (not x1274) x1902 x1899 x29)
+(or (not x1899) (not x27) x1902 x1898 x1272)
+(or (not x1902) (not x1899) (not x1272) (not x27) x1898)
+(or (not x1902) (not x1899) x1898 x1272 x27)
+(or (not x1899) (not x1272) x1902 x1898 x27)
+(or (not x1898) (not x1356) x1902 x1897 x1273)
+(or (not x1902) (not x1898) (not x1273) (not x1356) x1897)
+(or (not x1902) (not x1898) x1897 x1273 x1356)
+(or (not x1898) (not x1273) x1902 x1897 x1356)
+(or (not x1902) (not x1901))
+(or (not x1897) x1901)
+(or (not x1901) x1897)
+(or x1900 x1283 x1275)
+(or (not x1283) (not x1275) x1900)
+(or (not x1900) (not x1275) x1283)
+(or (not x1900) (not x1283) x1275)
+(or (not x1900) x1899 x1282 x1274)
+(or (not x1900) (not x1282) (not x1274) x1899)
+(or (not x1899) (not x1274) x1282)
+(or (not x1899) (not x1282) x1274)
+(or (not x1899) x1900)
+(or (not x1899) x1898 x1281 x1272)
+(or (not x1899) (not x1281) (not x1272) x1898)
+(or (not x1898) (not x1272) x1281)
+(or (not x1898) (not x1281) x1272)
+(or (not x1898) x1899)
+(or (not x1898) x1897 x1280 x1273)
+(or (not x1898) (not x1280) (not x1273) x1897)
+(or (not x1897) (not x1273) x1280)
+(or (not x1897) (not x1280) x1273)
+(or (not x1897) x1898)
+(or (not x1896) (not x468) (not x459))
+(or (not x468) (not x459) x1895)
+(or (not x1896) (not x468) (not x457) x55)
+(or (not x468) (not x457) (not x55) x1896)
+(or (not x1895) (not x468) (not x457))
+(or (not x1896) (not x468) (not x456) x53)
+(or (not x468) (not x456) (not x53) x1896)
+(or (not x1895) (not x468) (not x456))
+(or (not x1896) (not x466) (not x459) x51)
+(or (not x466) (not x459) (not x51) x1896)
+(or (not x1895) (not x466) (not x459))
+(or (not x1896) (not x466) (not x457))
+(or (not x466) (not x457) x1895)
+(or (not x1896) (not x466) (not x456) x47)
+(or (not x466) (not x456) (not x47) x1896)
+(or (not x1895) (not x466) (not x456))
+(or (not x1896) (not x465) (not x459) x45)
+(or (not x465) (not x459) (not x45) x1896)
+(or (not x1895) (not x465) (not x459))
+(or (not x1896) (not x465) (not x457) x41)
+(or (not x465) (not x457) (not x41) x1896)
+(or (not x1895) (not x465) (not x457))
+(or (not x1896) (not x465) (not x456))
+(or (not x465) (not x456) x1895)
+(or (not x209) (not x60) (not x6) x1894)
+(or (not x1894) (not x1890) (not x1884) x1893 x1892)
+(or (not x1894) (not x1884) x1891 x1890)
+(or (not x1894) x1885 x1884)
+(or (not x1892) (not x1890) (not x1884) x1894)
+(or (not x1893) (not x1890) (not x1884) x1894)
+(or (not x1891) (not x1884) x1894)
+(or (not x1885) x1894)
+(or (not x1893) (not x1892))
+(or (not x1341) x1893 x1347 x904)
+(or (not x1893) (not x1341) (not x904) x1347)
+(or (not x1893) (not x1347) x1341 x904)
+(or (not x1347) (not x904) x1893 x1341)
+(or (not x1340) x1893 x1346 x904)
+(or (not x1893) (not x1340) (not x904) x1346)
+(or (not x1893) (not x1346) x1340 x904)
+(or (not x1346) (not x904) x1893 x1340)
+(or (not x1339) x1893 x1345 x904)
+(or (not x1893) (not x1339) (not x904) x1345)
+(or (not x1893) (not x1345) x1339 x904)
+(or (not x1345) (not x904) x1893 x1339)
+(or (not x1346) (not x1340) x1892 x1347 x1341)
+(or (not x1345) (not x1339) x1892 x1346 x1340)
+(or x1892 x1345 x1339)
+(or (not x1347) (not x1341) x1892)
+(or (not x1892) (not x1347) x1341)
+(or (not x1892) (not x1341) x1347)
+(or (not x1892) (not x1346) x1340)
+(or (not x1892) (not x1340) x1346)
+(or (not x1892) (not x1345) x1339)
+(or (not x1892) (not x1339) x1345)
+(or (not x34) x1891 x1889 x1287)
+(or (not x1891) (not x1287) (not x34) x1889)
+(or (not x1891) x1889 x1287 x34)
+(or (not x1287) x1891 x1889 x34)
+(or (not x1889) (not x29) x1891 x1888 x1286)
+(or (not x1891) (not x1889) (not x1286) (not x29) x1888)
+(or (not x1891) (not x1889) x1888 x1286 x29)
+(or (not x1889) (not x1286) x1891 x1888 x29)
+(or (not x1888) (not x27) x1891 x1887 x1285)
+(or (not x1891) (not x1888) (not x1285) (not x27) x1887)
+(or (not x1891) (not x1888) x1887 x1285 x27)
+(or (not x1888) (not x1285) x1891 x1887 x27)
+(or (not x1887) (not x1356) x1891 x1886 x1284)
+(or (not x1891) (not x1887) (not x1284) (not x1356) x1886)
+(or (not x1891) (not x1887) x1886 x1284 x1356)
+(or (not x1887) (not x1284) x1891 x1886 x1356)
+(or (not x1891) (not x1890))
+(or (not x1886) x1890)
+(or (not x1890) x1886)
+(or x1889 x1287 x1279)
+(or (not x1287) (not x1279) x1889)
+(or (not x1889) (not x1287) x1279)
+(or (not x1889) (not x1279) x1287)
+(or (not x1889) x1888 x1286 x1278)
+(or (not x1889) (not x1286) (not x1278) x1888)
+(or (not x1888) (not x1286) x1278)
+(or (not x1888) (not x1278) x1286)
+(or (not x1888) x1889)
+(or (not x1888) x1887 x1285 x1277)
+(or (not x1888) (not x1285) (not x1277) x1887)
+(or (not x1887) (not x1285) x1277)
+(or (not x1887) (not x1277) x1285)
+(or (not x1887) x1888)
+(or (not x1887) x1886 x1284 x1276)
+(or (not x1887) (not x1284) (not x1276) x1886)
+(or (not x1886) (not x1284) x1276)
+(or (not x1886) (not x1276) x1284)
+(or (not x1886) x1887)
+(or (not x1885) (not x472) (not x463))
+(or (not x472) (not x463) x1884)
+(or (not x1885) (not x471) (not x463) x55)
+(or (not x471) (not x463) (not x55) x1885)
+(or (not x1884) (not x471) (not x463))
+(or (not x1885) (not x469) (not x463) x53)
+(or (not x469) (not x463) (not x53) x1885)
+(or (not x1884) (not x469) (not x463))
+(or (not x1885) (not x472) (not x462) x51)
+(or (not x472) (not x462) (not x51) x1885)
+(or (not x1884) (not x472) (not x462))
+(or (not x1885) (not x471) (not x462))
+(or (not x471) (not x462) x1884)
+(or (not x1885) (not x469) (not x462) x47)
+(or (not x469) (not x462) (not x47) x1885)
+(or (not x1884) (not x469) (not x462))
+(or (not x1885) (not x472) (not x460) x45)
+(or (not x472) (not x460) (not x45) x1885)
+(or (not x1884) (not x472) (not x460))
+(or (not x1885) (not x471) (not x460) x41)
+(or (not x471) (not x460) (not x41) x1885)
+(or (not x1884) (not x471) (not x460))
+(or (not x1885) (not x469) (not x460))
+(or (not x469) (not x460) x1884)
+(or (not x209) (not x60) (not x7) x1883)
+(or (not x1883) (not x1879) (not x1873) x1882 x1881)
+(or (not x1883) (not x1873) x1880 x1879)
+(or (not x1883) x1874 x1873)
+(or (not x1881) (not x1879) (not x1873) x1883)
+(or (not x1882) (not x1879) (not x1873) x1883)
+(or (not x1880) (not x1873) x1883)
+(or (not x1874) x1883)
+(or (not x1882) (not x1881))
+(or (not x1341) x1882 x1344 x904)
+(or (not x1882) (not x1341) (not x904) x1344)
+(or (not x1882) (not x1344) x1341 x904)
+(or (not x1344) (not x904) x1882 x1341)
+(or (not x1340) x1882 x1343 x904)
+(or (not x1882) (not x1340) (not x904) x1343)
+(or (not x1882) (not x1343) x1340 x904)
+(or (not x1343) (not x904) x1882 x1340)
+(or (not x1339) x1882 x1342 x904)
+(or (not x1882) (not x1339) (not x904) x1342)
+(or (not x1882) (not x1342) x1339 x904)
+(or (not x1342) (not x904) x1882 x1339)
+(or (not x1343) (not x1340) x1881 x1344 x1341)
+(or (not x1342) (not x1339) x1881 x1343 x1340)
+(or x1881 x1342 x1339)
+(or (not x1344) (not x1341) x1881)
+(or (not x1881) (not x1344) x1341)
+(or (not x1881) (not x1341) x1344)
+(or (not x1881) (not x1343) x1340)
+(or (not x1881) (not x1340) x1343)
+(or (not x1881) (not x1342) x1339)
+(or (not x1881) (not x1339) x1342)
+(or (not x34) x1880 x1878 x1283)
+(or (not x1880) (not x1283) (not x34) x1878)
+(or (not x1880) x1878 x1283 x34)
+(or (not x1283) x1880 x1878 x34)
+(or (not x1878) (not x29) x1880 x1877 x1282)
+(or (not x1880) (not x1878) (not x1282) (not x29) x1877)
+(or (not x1880) (not x1878) x1877 x1282 x29)
+(or (not x1878) (not x1282) x1880 x1877 x29)
+(or (not x1877) (not x27) x1880 x1876 x1281)
+(or (not x1880) (not x1877) (not x1281) (not x27) x1876)
+(or (not x1880) (not x1877) x1876 x1281 x27)
+(or (not x1877) (not x1281) x1880 x1876 x27)
+(or (not x1876) (not x1356) x1880 x1875 x1280)
+(or (not x1880) (not x1876) (not x1280) (not x1356) x1875)
+(or (not x1880) (not x1876) x1875 x1280 x1356)
+(or (not x1876) (not x1280) x1880 x1875 x1356)
+(or (not x1880) (not x1879))
+(or (not x1875) x1879)
+(or (not x1879) x1875)
+(or x1878 x1283 x1279)
+(or (not x1283) (not x1279) x1878)
+(or (not x1878) (not x1283) x1279)
+(or (not x1878) (not x1279) x1283)
+(or (not x1878) x1877 x1282 x1278)
+(or (not x1878) (not x1282) (not x1278) x1877)
+(or (not x1877) (not x1282) x1278)
+(or (not x1877) (not x1278) x1282)
+(or (not x1877) x1878)
+(or (not x1877) x1876 x1281 x1277)
+(or (not x1877) (not x1281) (not x1277) x1876)
+(or (not x1876) (not x1281) x1277)
+(or (not x1876) (not x1277) x1281)
+(or (not x1876) x1877)
+(or (not x1876) x1875 x1280 x1276)
+(or (not x1876) (not x1280) (not x1276) x1875)
+(or (not x1875) (not x1280) x1276)
+(or (not x1875) (not x1276) x1280)
+(or (not x1875) x1876)
+(or (not x1874) (not x468) (not x463))
+(or (not x468) (not x463) x1873)
+(or (not x1874) (not x466) (not x463) x55)
+(or (not x466) (not x463) (not x55) x1874)
+(or (not x1873) (not x466) (not x463))
+(or (not x1874) (not x465) (not x463) x53)
+(or (not x465) (not x463) (not x53) x1874)
+(or (not x1873) (not x465) (not x463))
+(or (not x1874) (not x468) (not x462) x51)
+(or (not x468) (not x462) (not x51) x1874)
+(or (not x1873) (not x468) (not x462))
+(or (not x1874) (not x466) (not x462))
+(or (not x466) (not x462) x1873)
+(or (not x1874) (not x465) (not x462) x47)
+(or (not x465) (not x462) (not x47) x1874)
+(or (not x1873) (not x465) (not x462))
+(or (not x1874) (not x468) (not x460) x45)
+(or (not x468) (not x460) (not x45) x1874)
+(or (not x1873) (not x468) (not x460))
+(or (not x1874) (not x466) (not x460) x41)
+(or (not x466) (not x460) (not x41) x1874)
+(or (not x1873) (not x466) (not x460))
+(or (not x1874) (not x465) (not x460))
+(or (not x465) (not x460) x1873)
+(or (not x1872) (not x1868) (not x1862) x1871 x1870)
+(or (not x1872) (not x1862) x1869 x1868)
+(or (not x1872) x1863 x1862)
+(or (not x1870) (not x1868) (not x1862) x1872)
+(or (not x1871) (not x1868) (not x1862) x1872)
+(or (not x1869) (not x1862) x1872)
+(or (not x1863) x1872)
+(or (not x1871) (not x1870))
+(or (not x1341) x1871 x1338 x904)
+(or (not x1871) (not x1341) (not x904) x1338)
+(or (not x1871) (not x1338) x1341 x904)
+(or (not x1338) (not x904) x1871 x1341)
+(or (not x1340) x1871 x1337 x904)
+(or (not x1871) (not x1340) (not x904) x1337)
+(or (not x1871) (not x1337) x1340 x904)
+(or (not x1337) (not x904) x1871 x1340)
+(or (not x1339) x1871 x1336 x904)
+(or (not x1871) (not x1339) (not x904) x1336)
+(or (not x1871) (not x1336) x1339 x904)
+(or (not x1336) (not x904) x1871 x1339)
+(or (not x1340) (not x1337) x1870 x1341 x1338)
+(or (not x1339) (not x1336) x1870 x1340 x1337)
+(or x1870 x1339 x1336)
+(or (not x1341) (not x1338) x1870)
+(or (not x1870) (not x1338) x1341)
+(or (not x1870) (not x1341) x1338)
+(or (not x1870) (not x1337) x1340)
+(or (not x1870) (not x1340) x1337)
+(or (not x1870) (not x1336) x1339)
+(or (not x1870) (not x1339) x1336)
+(or (not x34) x1869 x1867 x1275)
+(or (not x1869) (not x1275) (not x34) x1867)
+(or (not x1869) x1867 x1275 x34)
+(or (not x1275) x1869 x1867 x34)
+(or (not x1867) (not x29) x1869 x1866 x1274)
+(or (not x1869) (not x1867) (not x1274) (not x29) x1866)
+(or (not x1869) (not x1867) x1866 x1274 x29)
+(or (not x1867) (not x1274) x1869 x1866 x29)
+(or (not x1866) (not x27) x1869 x1865 x1272)
+(or (not x1869) (not x1866) (not x1272) (not x27) x1865)
+(or (not x1869) (not x1866) x1865 x1272 x27)
+(or (not x1866) (not x1272) x1869 x1865 x27)
+(or (not x1865) (not x1356) x1869 x1864 x1273)
+(or (not x1869) (not x1865) (not x1273) (not x1356) x1864)
+(or (not x1869) (not x1865) x1864 x1273 x1356)
+(or (not x1865) (not x1273) x1869 x1864 x1356)
+(or (not x1869) (not x1868))
+(or (not x1864) x1868)
+(or (not x1868) x1864)
+(or x1867 x1279 x1275)
+(or (not x1279) (not x1275) x1867)
+(or (not x1867) (not x1275) x1279)
+(or (not x1867) (not x1279) x1275)
+(or (not x1867) x1866 x1278 x1274)
+(or (not x1867) (not x1278) (not x1274) x1866)
+(or (not x1866) (not x1274) x1278)
+(or (not x1866) (not x1278) x1274)
+(or (not x1866) x1867)
+(or (not x1866) x1865 x1277 x1272)
+(or (not x1866) (not x1277) (not x1272) x1865)
+(or (not x1865) (not x1272) x1277)
+(or (not x1865) (not x1277) x1272)
+(or (not x1865) x1866)
+(or (not x1865) x1864 x1276 x1273)
+(or (not x1865) (not x1276) (not x1273) x1864)
+(or (not x1864) (not x1273) x1276)
+(or (not x1864) (not x1276) x1273)
+(or (not x1864) x1865)
+(or (not x1863) (not x463) (not x459))
+(or (not x463) (not x459) x1862)
+(or (not x1863) (not x463) (not x457) x55)
+(or (not x463) (not x457) (not x55) x1863)
+(or (not x1862) (not x463) (not x457))
+(or (not x1863) (not x463) (not x456) x53)
+(or (not x463) (not x456) (not x53) x1863)
+(or (not x1862) (not x463) (not x456))
+(or (not x1863) (not x462) (not x459) x51)
+(or (not x462) (not x459) (not x51) x1863)
+(or (not x1862) (not x462) (not x459))
+(or (not x1863) (not x462) (not x457))
+(or (not x462) (not x457) x1862)
+(or (not x1863) (not x462) (not x456) x47)
+(or (not x462) (not x456) (not x47) x1863)
+(or (not x1862) (not x462) (not x456))
+(or (not x1863) (not x460) (not x459) x45)
+(or (not x460) (not x459) (not x45) x1863)
+(or (not x1862) (not x460) (not x459))
+(or (not x1863) (not x460) (not x457) x41)
+(or (not x460) (not x457) (not x41) x1863)
+(or (not x1862) (not x460) (not x457))
+(or (not x1863) (not x460) (not x456))
+(or (not x460) (not x456) x1862)
+(or (not x1861) (not x1857) (not x1851) x1860 x1859)
+(or (not x1861) (not x1851) x1858 x1857)
+(or (not x1861) x1852 x1851)
+(or (not x1859) (not x1857) (not x1851) x1861)
+(or (not x1860) (not x1857) (not x1851) x1861)
+(or (not x1858) (not x1851) x1861)
+(or (not x1852) x1861)
+(or (not x1860) (not x1859))
+(or (not x1338) x1860 x1347 x903)
+(or (not x1860) (not x1338) (not x903) x1347)
+(or (not x1860) (not x1347) x1338 x903)
+(or (not x1347) (not x903) x1860 x1338)
+(or (not x1337) x1860 x1346 x903)
+(or (not x1860) (not x1337) (not x903) x1346)
+(or (not x1860) (not x1346) x1337 x903)
+(or (not x1346) (not x903) x1860 x1337)
+(or (not x1336) x1860 x1345 x903)
+(or (not x1860) (not x1336) (not x903) x1345)
+(or (not x1860) (not x1345) x1336 x903)
+(or (not x1345) (not x903) x1860 x1336)
+(or (not x1346) (not x1337) x1859 x1347 x1338)
+(or (not x1345) (not x1336) x1859 x1346 x1337)
+(or x1859 x1345 x1336)
+(or (not x1347) (not x1338) x1859)
+(or (not x1859) (not x1347) x1338)
+(or (not x1859) (not x1338) x1347)
+(or (not x1859) (not x1346) x1337)
+(or (not x1859) (not x1337) x1346)
+(or (not x1859) (not x1345) x1336)
+(or (not x1859) (not x1336) x1345)
+(or (not x34) x1858 x1856 x1287)
+(or (not x1858) (not x1287) (not x34) x1856)
+(or (not x1858) x1856 x1287 x34)
+(or (not x1287) x1858 x1856 x34)
+(or (not x1856) (not x29) x1858 x1855 x1286)
+(or (not x1858) (not x1856) (not x1286) (not x29) x1855)
+(or (not x1858) (not x1856) x1855 x1286 x29)
+(or (not x1856) (not x1286) x1858 x1855 x29)
+(or (not x1855) (not x27) x1858 x1854 x1285)
+(or (not x1858) (not x1855) (not x1285) (not x27) x1854)
+(or (not x1858) (not x1855) x1854 x1285 x27)
+(or (not x1855) (not x1285) x1858 x1854 x27)
+(or (not x1854) (not x1356) x1858 x1853 x1284)
+(or (not x1858) (not x1854) (not x1284) (not x1356) x1853)
+(or (not x1858) (not x1854) x1853 x1284 x1356)
+(or (not x1854) (not x1284) x1858 x1853 x1356)
+(or (not x1858) (not x1857))
+(or (not x1853) x1857)
+(or (not x1857) x1853)
+(or x1856 x1287 x1275)
+(or (not x1287) (not x1275) x1856)
+(or (not x1856) (not x1287) x1275)
+(or (not x1856) (not x1275) x1287)
+(or (not x1856) x1855 x1286 x1274)
+(or (not x1856) (not x1286) (not x1274) x1855)
+(or (not x1855) (not x1286) x1274)
+(or (not x1855) (not x1274) x1286)
+(or (not x1855) x1856)
+(or (not x1855) x1854 x1285 x1272)
+(or (not x1855) (not x1285) (not x1272) x1854)
+(or (not x1854) (not x1285) x1272)
+(or (not x1854) (not x1272) x1285)
+(or (not x1854) x1855)
+(or (not x1854) x1853 x1284 x1273)
+(or (not x1854) (not x1284) (not x1273) x1853)
+(or (not x1853) (not x1284) x1273)
+(or (not x1853) (not x1273) x1284)
+(or (not x1853) x1854)
+(or (not x1852) (not x472) (not x459))
+(or (not x472) (not x459) x1851)
+(or (not x1852) (not x471) (not x459) x55)
+(or (not x471) (not x459) (not x55) x1852)
+(or (not x1851) (not x471) (not x459))
+(or (not x1852) (not x469) (not x459) x53)
+(or (not x469) (not x459) (not x53) x1852)
+(or (not x1851) (not x469) (not x459))
+(or (not x1852) (not x472) (not x457) x51)
+(or (not x472) (not x457) (not x51) x1852)
+(or (not x1851) (not x472) (not x457))
+(or (not x1852) (not x471) (not x457))
+(or (not x471) (not x457) x1851)
+(or (not x1852) (not x469) (not x457) x47)
+(or (not x469) (not x457) (not x47) x1852)
+(or (not x1851) (not x469) (not x457))
+(or (not x1852) (not x472) (not x456) x45)
+(or (not x472) (not x456) (not x45) x1852)
+(or (not x1851) (not x472) (not x456))
+(or (not x1852) (not x471) (not x456) x41)
+(or (not x471) (not x456) (not x41) x1852)
+(or (not x1851) (not x471) (not x456))
+(or (not x1852) (not x469) (not x456))
+(or (not x469) (not x456) x1851)
+(or (not x1850) (not x1846) (not x1840) x1849 x1848)
+(or (not x1850) (not x1840) x1847 x1846)
+(or (not x1850) x1841 x1840)
+(or (not x1848) (not x1846) (not x1840) x1850)
+(or (not x1849) (not x1846) (not x1840) x1850)
+(or (not x1847) (not x1840) x1850)
+(or (not x1841) x1850)
+(or (not x1849) (not x1848))
+(or (not x1338) x1849 x1344 x903)
+(or (not x1849) (not x1338) (not x903) x1344)
+(or (not x1849) (not x1344) x1338 x903)
+(or (not x1344) (not x903) x1849 x1338)
+(or (not x1337) x1849 x1343 x903)
+(or (not x1849) (not x1337) (not x903) x1343)
+(or (not x1849) (not x1343) x1337 x903)
+(or (not x1343) (not x903) x1849 x1337)
+(or (not x1336) x1849 x1342 x903)
+(or (not x1849) (not x1336) (not x903) x1342)
+(or (not x1849) (not x1342) x1336 x903)
+(or (not x1342) (not x903) x1849 x1336)
+(or (not x1343) (not x1337) x1848 x1344 x1338)
+(or (not x1342) (not x1336) x1848 x1343 x1337)
+(or x1848 x1342 x1336)
+(or (not x1344) (not x1338) x1848)
+(or (not x1848) (not x1344) x1338)
+(or (not x1848) (not x1338) x1344)
+(or (not x1848) (not x1343) x1337)
+(or (not x1848) (not x1337) x1343)
+(or (not x1848) (not x1342) x1336)
+(or (not x1848) (not x1336) x1342)
+(or (not x34) x1847 x1845 x1283)
+(or (not x1847) (not x1283) (not x34) x1845)
+(or (not x1847) x1845 x1283 x34)
+(or (not x1283) x1847 x1845 x34)
+(or (not x1845) (not x29) x1847 x1844 x1282)
+(or (not x1847) (not x1845) (not x1282) (not x29) x1844)
+(or (not x1847) (not x1845) x1844 x1282 x29)
+(or (not x1845) (not x1282) x1847 x1844 x29)
+(or (not x1844) (not x27) x1847 x1843 x1281)
+(or (not x1847) (not x1844) (not x1281) (not x27) x1843)
+(or (not x1847) (not x1844) x1843 x1281 x27)
+(or (not x1844) (not x1281) x1847 x1843 x27)
+(or (not x1843) (not x1356) x1847 x1842 x1280)
+(or (not x1847) (not x1843) (not x1280) (not x1356) x1842)
+(or (not x1847) (not x1843) x1842 x1280 x1356)
+(or (not x1843) (not x1280) x1847 x1842 x1356)
+(or (not x1847) (not x1846))
+(or (not x1842) x1846)
+(or (not x1846) x1842)
+(or x1845 x1283 x1275)
+(or (not x1283) (not x1275) x1845)
+(or (not x1845) (not x1283) x1275)
+(or (not x1845) (not x1275) x1283)
+(or (not x1845) x1844 x1282 x1274)
+(or (not x1845) (not x1282) (not x1274) x1844)
+(or (not x1844) (not x1282) x1274)
+(or (not x1844) (not x1274) x1282)
+(or (not x1844) x1845)
+(or (not x1844) x1843 x1281 x1272)
+(or (not x1844) (not x1281) (not x1272) x1843)
+(or (not x1843) (not x1281) x1272)
+(or (not x1843) (not x1272) x1281)
+(or (not x1843) x1844)
+(or (not x1843) x1842 x1280 x1273)
+(or (not x1843) (not x1280) (not x1273) x1842)
+(or (not x1842) (not x1280) x1273)
+(or (not x1842) (not x1273) x1280)
+(or (not x1842) x1843)
+(or (not x1841) (not x468) (not x459))
+(or (not x468) (not x459) x1840)
+(or (not x1841) (not x466) (not x459) x55)
+(or (not x466) (not x459) (not x55) x1841)
+(or (not x1840) (not x466) (not x459))
+(or (not x1841) (not x465) (not x459) x53)
+(or (not x465) (not x459) (not x53) x1841)
+(or (not x1840) (not x465) (not x459))
+(or (not x1841) (not x468) (not x457) x51)
+(or (not x468) (not x457) (not x51) x1841)
+(or (not x1840) (not x468) (not x457))
+(or (not x1841) (not x466) (not x457))
+(or (not x466) (not x457) x1840)
+(or (not x1841) (not x465) (not x457) x47)
+(or (not x465) (not x457) (not x47) x1841)
+(or (not x1840) (not x465) (not x457))
+(or (not x1841) (not x468) (not x456) x45)
+(or (not x468) (not x456) (not x45) x1841)
+(or (not x1840) (not x468) (not x456))
+(or (not x1841) (not x466) (not x456) x41)
+(or (not x466) (not x456) (not x41) x1841)
+(or (not x1840) (not x466) (not x456))
+(or (not x1841) (not x465) (not x456))
+(or (not x465) (not x456) x1840)
+(or (not x1839) (not x1835) (not x1829) x1838 x1837)
+(or (not x1839) (not x1829) x1836 x1835)
+(or (not x1839) x1830 x1829)
+(or (not x1837) (not x1835) (not x1829) x1839)
+(or (not x1838) (not x1835) (not x1829) x1839)
+(or (not x1836) (not x1829) x1839)
+(or (not x1830) x1839)
+(or (not x1838) (not x1837))
+(or (not x1338) x1838 x1341 x903)
+(or (not x1838) (not x1338) (not x903) x1341)
+(or (not x1838) (not x1341) x1338 x903)
+(or (not x1341) (not x903) x1838 x1338)
+(or (not x1337) x1838 x1340 x903)
+(or (not x1838) (not x1337) (not x903) x1340)
+(or (not x1838) (not x1340) x1337 x903)
+(or (not x1340) (not x903) x1838 x1337)
+(or (not x1336) x1838 x1339 x903)
+(or (not x1838) (not x1336) (not x903) x1339)
+(or (not x1838) (not x1339) x1336 x903)
+(or (not x1339) (not x903) x1838 x1336)
+(or (not x1340) (not x1337) x1837 x1341 x1338)
+(or (not x1339) (not x1336) x1837 x1340 x1337)
+(or x1837 x1339 x1336)
+(or (not x1341) (not x1338) x1837)
+(or (not x1837) (not x1341) x1338)
+(or (not x1837) (not x1338) x1341)
+(or (not x1837) (not x1340) x1337)
+(or (not x1837) (not x1337) x1340)
+(or (not x1837) (not x1339) x1336)
+(or (not x1837) (not x1336) x1339)
+(or (not x34) x1836 x1834 x1279)
+(or (not x1836) (not x1279) (not x34) x1834)
+(or (not x1836) x1834 x1279 x34)
+(or (not x1279) x1836 x1834 x34)
+(or (not x1834) (not x29) x1836 x1833 x1278)
+(or (not x1836) (not x1834) (not x1278) (not x29) x1833)
+(or (not x1836) (not x1834) x1833 x1278 x29)
+(or (not x1834) (not x1278) x1836 x1833 x29)
+(or (not x1833) (not x27) x1836 x1832 x1277)
+(or (not x1836) (not x1833) (not x1277) (not x27) x1832)
+(or (not x1836) (not x1833) x1832 x1277 x27)
+(or (not x1833) (not x1277) x1836 x1832 x27)
+(or (not x1832) (not x1356) x1836 x1831 x1276)
+(or (not x1836) (not x1832) (not x1276) (not x1356) x1831)
+(or (not x1836) (not x1832) x1831 x1276 x1356)
+(or (not x1832) (not x1276) x1836 x1831 x1356)
+(or (not x1836) (not x1835))
+(or (not x1831) x1835)
+(or (not x1835) x1831)
+(or x1834 x1279 x1275)
+(or (not x1279) (not x1275) x1834)
+(or (not x1834) (not x1279) x1275)
+(or (not x1834) (not x1275) x1279)
+(or (not x1834) x1833 x1278 x1274)
+(or (not x1834) (not x1278) (not x1274) x1833)
+(or (not x1833) (not x1278) x1274)
+(or (not x1833) (not x1274) x1278)
+(or (not x1833) x1834)
+(or (not x1833) x1832 x1277 x1272)
+(or (not x1833) (not x1277) (not x1272) x1832)
+(or (not x1832) (not x1277) x1272)
+(or (not x1832) (not x1272) x1277)
+(or (not x1832) x1833)
+(or (not x1832) x1831 x1276 x1273)
+(or (not x1832) (not x1276) (not x1273) x1831)
+(or (not x1831) (not x1276) x1273)
+(or (not x1831) (not x1273) x1276)
+(or (not x1831) x1832)
+(or (not x1830) (not x463) (not x459))
+(or (not x463) (not x459) x1829)
+(or (not x1830) (not x462) (not x459) x55)
+(or (not x462) (not x459) (not x55) x1830)
+(or (not x1829) (not x462) (not x459))
+(or (not x1830) (not x460) (not x459) x53)
+(or (not x460) (not x459) (not x53) x1830)
+(or (not x1829) (not x460) (not x459))
+(or (not x1830) (not x463) (not x457) x51)
+(or (not x463) (not x457) (not x51) x1830)
+(or (not x1829) (not x463) (not x457))
+(or (not x1830) (not x462) (not x457))
+(or (not x462) (not x457) x1829)
+(or (not x1830) (not x460) (not x457) x47)
+(or (not x460) (not x457) (not x47) x1830)
+(or (not x1829) (not x460) (not x457))
+(or (not x1830) (not x463) (not x456) x45)
+(or (not x463) (not x456) (not x45) x1830)
+(or (not x1829) (not x463) (not x456))
+(or (not x1830) (not x462) (not x456) x41)
+(or (not x462) (not x456) (not x41) x1830)
+(or (not x1829) (not x462) (not x456))
+(or (not x1830) (not x460) (not x456))
+(or (not x460) (not x456) x1829)
+(or (not x171) (not x108) (not x23) x332)
+(or (not x171) (not x108) (not x24) x341)
+(or (not x167) (not x108) (not x22) x335)
+(or (not x167) (not x108) (not x24) x347)
+(or (not x185) (not x108) (not x22) x344)
+(or (not x185) (not x108) (not x23) x349)
+(or (not x164) (not x80) (not x18) x333)
+(or (not x164) (not x80) (not x19) x342)
+(or (not x158) (not x80) (not x17) x338)
+(or (not x158) (not x80) (not x19) x347)
+(or (not x179) (not x80) (not x17) x345)
+(or (not x179) (not x80) (not x18) x349)
+(or (not x154) (not x71) (not x13) x336)
+(or (not x154) (not x71) (not x14) x342)
+(or (not x150) (not x71) (not x12) x339)
+(or (not x150) (not x71) (not x14) x341)
+(or (not x174) (not x71) (not x12) x345)
+(or (not x174) (not x71) (not x13) x344)
+(or (not x166) (not x60) (not x7) x336)
+(or (not x336) (not x1825) (not x1819) x1828 x1827)
+(or (not x336) (not x1819) x1826 x1825)
+(or (not x336) x1820 x1819)
+(or (not x1827) (not x1825) (not x1819) x336)
+(or (not x1828) (not x1825) (not x1819) x336)
+(or (not x1826) (not x1819) x336)
+(or (not x1820) x336)
+(or (not x1828) (not x1827))
+(or (not x1335) x1828 x1332 x902)
+(or (not x1828) (not x1335) (not x902) x1332)
+(or (not x1828) (not x1332) x1335 x902)
+(or (not x1332) (not x902) x1828 x1335)
+(or (not x1334) x1828 x1331 x902)
+(or (not x1828) (not x1334) (not x902) x1331)
+(or (not x1828) (not x1331) x1334 x902)
+(or (not x1331) (not x902) x1828 x1334)
+(or (not x1333) x1828 x1330 x902)
+(or (not x1828) (not x1333) (not x902) x1330)
+(or (not x1828) (not x1330) x1333 x902)
+(or (not x1330) (not x902) x1828 x1333)
+(or (not x1334) (not x1331) x1827 x1335 x1332)
+(or (not x1333) (not x1330) x1827 x1334 x1331)
+(or x1827 x1333 x1330)
+(or (not x1335) (not x1332) x1827)
+(or (not x1827) (not x1332) x1335)
+(or (not x1827) (not x1335) x1332)
+(or (not x1827) (not x1331) x1334)
+(or (not x1827) (not x1334) x1331)
+(or (not x1827) (not x1330) x1333)
+(or (not x1827) (not x1333) x1330)
+(or (not x34) x1826 x1824 x1267)
+(or (not x1826) (not x1267) (not x34) x1824)
+(or (not x1826) x1824 x1267 x34)
+(or (not x1267) x1826 x1824 x34)
+(or (not x1824) (not x29) x1826 x1823 x1266)
+(or (not x1826) (not x1824) (not x1266) (not x29) x1823)
+(or (not x1826) (not x1824) x1823 x1266 x29)
+(or (not x1824) (not x1266) x1826 x1823 x29)
+(or (not x1823) (not x27) x1826 x1822 x1265)
+(or (not x1826) (not x1823) (not x1265) (not x27) x1822)
+(or (not x1826) (not x1823) x1822 x1265 x27)
+(or (not x1823) (not x1265) x1826 x1822 x27)
+(or (not x1822) (not x1356) x1826 x1821 x1264)
+(or (not x1826) (not x1822) (not x1264) (not x1356) x1821)
+(or (not x1826) (not x1822) x1821 x1264 x1356)
+(or (not x1822) (not x1264) x1826 x1821 x1356)
+(or (not x1826) (not x1825))
+(or (not x1821) x1825)
+(or (not x1825) x1821)
+(or x1824 x1271 x1267)
+(or (not x1271) (not x1267) x1824)
+(or (not x1824) (not x1267) x1271)
+(or (not x1824) (not x1271) x1267)
+(or (not x1824) x1823 x1270 x1266)
+(or (not x1824) (not x1270) (not x1266) x1823)
+(or (not x1823) (not x1266) x1270)
+(or (not x1823) (not x1270) x1266)
+(or (not x1823) x1824)
+(or (not x1823) x1822 x1269 x1265)
+(or (not x1823) (not x1269) (not x1265) x1822)
+(or (not x1822) (not x1265) x1269)
+(or (not x1822) (not x1269) x1265)
+(or (not x1822) x1823)
+(or (not x1822) x1821 x1268 x1264)
+(or (not x1822) (not x1268) (not x1264) x1821)
+(or (not x1821) (not x1264) x1268)
+(or (not x1821) (not x1268) x1264)
+(or (not x1821) x1822)
+(or (not x1820) (not x454) (not x450))
+(or (not x454) (not x450) x1819)
+(or (not x1820) (not x454) (not x448) x55)
+(or (not x454) (not x448) (not x55) x1820)
+(or (not x1819) (not x454) (not x448))
+(or (not x1820) (not x454) (not x447) x53)
+(or (not x454) (not x447) (not x53) x1820)
+(or (not x1819) (not x454) (not x447))
+(or (not x1820) (not x453) (not x450) x51)
+(or (not x453) (not x450) (not x51) x1820)
+(or (not x1819) (not x453) (not x450))
+(or (not x1820) (not x453) (not x448))
+(or (not x453) (not x448) x1819)
+(or (not x1820) (not x453) (not x447) x47)
+(or (not x453) (not x447) (not x47) x1820)
+(or (not x1819) (not x453) (not x447))
+(or (not x1820) (not x451) (not x450) x45)
+(or (not x451) (not x450) (not x45) x1820)
+(or (not x1819) (not x451) (not x450))
+(or (not x1820) (not x451) (not x448) x41)
+(or (not x451) (not x448) (not x41) x1820)
+(or (not x1819) (not x451) (not x448))
+(or (not x1820) (not x451) (not x447))
+(or (not x451) (not x447) x1819)
+(or (not x166) (not x60) (not x8) x333)
+(or (not x333) (not x1815) (not x1809) x1818 x1817)
+(or (not x333) (not x1809) x1816 x1815)
+(or (not x333) x1810 x1809)
+(or (not x1817) (not x1815) (not x1809) x333)
+(or (not x1818) (not x1815) (not x1809) x333)
+(or (not x1816) (not x1809) x333)
+(or (not x1810) x333)
+(or (not x1818) (not x1817))
+(or (not x1335) x1818 x1329 x902)
+(or (not x1818) (not x1335) (not x902) x1329)
+(or (not x1818) (not x1329) x1335 x902)
+(or (not x1329) (not x902) x1818 x1335)
+(or (not x1334) x1818 x1328 x902)
+(or (not x1818) (not x1334) (not x902) x1328)
+(or (not x1818) (not x1328) x1334 x902)
+(or (not x1328) (not x902) x1818 x1334)
+(or (not x1333) x1818 x1327 x902)
+(or (not x1818) (not x1333) (not x902) x1327)
+(or (not x1818) (not x1327) x1333 x902)
+(or (not x1327) (not x902) x1818 x1333)
+(or (not x1334) (not x1328) x1817 x1335 x1329)
+(or (not x1333) (not x1327) x1817 x1334 x1328)
+(or x1817 x1333 x1327)
+(or (not x1335) (not x1329) x1817)
+(or (not x1817) (not x1329) x1335)
+(or (not x1817) (not x1335) x1329)
+(or (not x1817) (not x1328) x1334)
+(or (not x1817) (not x1334) x1328)
+(or (not x1817) (not x1327) x1333)
+(or (not x1817) (not x1333) x1327)
+(or (not x34) x1816 x1814 x1263)
+(or (not x1816) (not x1263) (not x34) x1814)
+(or (not x1816) x1814 x1263 x34)
+(or (not x1263) x1816 x1814 x34)
+(or (not x1814) (not x29) x1816 x1813 x1262)
+(or (not x1816) (not x1814) (not x1262) (not x29) x1813)
+(or (not x1816) (not x1814) x1813 x1262 x29)
+(or (not x1814) (not x1262) x1816 x1813 x29)
+(or (not x1813) (not x27) x1816 x1812 x1261)
+(or (not x1816) (not x1813) (not x1261) (not x27) x1812)
+(or (not x1816) (not x1813) x1812 x1261 x27)
+(or (not x1813) (not x1261) x1816 x1812 x27)
+(or (not x1812) (not x1356) x1816 x1811 x1260)
+(or (not x1816) (not x1812) (not x1260) (not x1356) x1811)
+(or (not x1816) (not x1812) x1811 x1260 x1356)
+(or (not x1812) (not x1260) x1816 x1811 x1356)
+(or (not x1816) (not x1815))
+(or (not x1811) x1815)
+(or (not x1815) x1811)
+(or x1814 x1271 x1263)
+(or (not x1271) (not x1263) x1814)
+(or (not x1814) (not x1263) x1271)
+(or (not x1814) (not x1271) x1263)
+(or (not x1814) x1813 x1270 x1262)
+(or (not x1814) (not x1270) (not x1262) x1813)
+(or (not x1813) (not x1262) x1270)
+(or (not x1813) (not x1270) x1262)
+(or (not x1813) x1814)
+(or (not x1813) x1812 x1269 x1261)
+(or (not x1813) (not x1269) (not x1261) x1812)
+(or (not x1812) (not x1261) x1269)
+(or (not x1812) (not x1269) x1261)
+(or (not x1812) x1813)
+(or (not x1812) x1811 x1268 x1260)
+(or (not x1812) (not x1268) (not x1260) x1811)
+(or (not x1811) (not x1260) x1268)
+(or (not x1811) (not x1268) x1260)
+(or (not x1811) x1812)
+(or (not x1810) (not x454) (not x445))
+(or (not x454) (not x445) x1809)
+(or (not x1810) (not x454) (not x444) x55)
+(or (not x454) (not x444) (not x55) x1810)
+(or (not x1809) (not x454) (not x444))
+(or (not x1810) (not x454) (not x442) x53)
+(or (not x454) (not x442) (not x53) x1810)
+(or (not x1809) (not x454) (not x442))
+(or (not x1810) (not x453) (not x445) x51)
+(or (not x453) (not x445) (not x51) x1810)
+(or (not x1809) (not x453) (not x445))
+(or (not x1810) (not x453) (not x444))
+(or (not x453) (not x444) x1809)
+(or (not x1810) (not x453) (not x442) x47)
+(or (not x453) (not x442) (not x47) x1810)
+(or (not x1809) (not x453) (not x442))
+(or (not x1810) (not x451) (not x445) x45)
+(or (not x451) (not x445) (not x45) x1810)
+(or (not x1809) (not x451) (not x445))
+(or (not x1810) (not x451) (not x444) x41)
+(or (not x451) (not x444) (not x41) x1810)
+(or (not x1809) (not x451) (not x444))
+(or (not x1810) (not x451) (not x442))
+(or (not x451) (not x442) x1809)
+(or (not x342) (not x1805) (not x1799) x1808 x1807)
+(or (not x342) (not x1799) x1806 x1805)
+(or (not x342) x1800 x1799)
+(or (not x1807) (not x1805) (not x1799) x342)
+(or (not x1808) (not x1805) (not x1799) x342)
+(or (not x1806) (not x1799) x342)
+(or (not x1800) x342)
+(or (not x1808) (not x1807))
+(or (not x1335) x1808 x1326 x902)
+(or (not x1808) (not x1335) (not x902) x1326)
+(or (not x1808) (not x1326) x1335 x902)
+(or (not x1326) (not x902) x1808 x1335)
+(or (not x1334) x1808 x1325 x902)
+(or (not x1808) (not x1334) (not x902) x1325)
+(or (not x1808) (not x1325) x1334 x902)
+(or (not x1325) (not x902) x1808 x1334)
+(or (not x1333) x1808 x1324 x902)
+(or (not x1808) (not x1333) (not x902) x1324)
+(or (not x1808) (not x1324) x1333 x902)
+(or (not x1324) (not x902) x1808 x1333)
+(or (not x1334) (not x1325) x1807 x1335 x1326)
+(or (not x1333) (not x1324) x1807 x1334 x1325)
+(or x1807 x1333 x1324)
+(or (not x1335) (not x1326) x1807)
+(or (not x1807) (not x1326) x1335)
+(or (not x1807) (not x1335) x1326)
+(or (not x1807) (not x1325) x1334)
+(or (not x1807) (not x1334) x1325)
+(or (not x1807) (not x1324) x1333)
+(or (not x1807) (not x1333) x1324)
+(or (not x34) x1806 x1804 x1259)
+(or (not x1806) (not x1259) (not x34) x1804)
+(or (not x1806) x1804 x1259 x34)
+(or (not x1259) x1806 x1804 x34)
+(or (not x1804) (not x29) x1806 x1803 x1258)
+(or (not x1806) (not x1804) (not x1258) (not x29) x1803)
+(or (not x1806) (not x1804) x1803 x1258 x29)
+(or (not x1804) (not x1258) x1806 x1803 x29)
+(or (not x1803) (not x27) x1806 x1802 x1256)
+(or (not x1806) (not x1803) (not x1256) (not x27) x1802)
+(or (not x1806) (not x1803) x1802 x1256 x27)
+(or (not x1803) (not x1256) x1806 x1802 x27)
+(or (not x1802) (not x1356) x1806 x1801 x1257)
+(or (not x1806) (not x1802) (not x1257) (not x1356) x1801)
+(or (not x1806) (not x1802) x1801 x1257 x1356)
+(or (not x1802) (not x1257) x1806 x1801 x1356)
+(or (not x1806) (not x1805))
+(or (not x1801) x1805)
+(or (not x1805) x1801)
+(or x1804 x1271 x1259)
+(or (not x1271) (not x1259) x1804)
+(or (not x1804) (not x1259) x1271)
+(or (not x1804) (not x1271) x1259)
+(or (not x1804) x1803 x1270 x1258)
+(or (not x1804) (not x1270) (not x1258) x1803)
+(or (not x1803) (not x1258) x1270)
+(or (not x1803) (not x1270) x1258)
+(or (not x1803) x1804)
+(or (not x1803) x1802 x1269 x1256)
+(or (not x1803) (not x1269) (not x1256) x1802)
+(or (not x1802) (not x1256) x1269)
+(or (not x1802) (not x1269) x1256)
+(or (not x1802) x1803)
+(or (not x1802) x1801 x1268 x1257)
+(or (not x1802) (not x1268) (not x1257) x1801)
+(or (not x1801) (not x1257) x1268)
+(or (not x1801) (not x1268) x1257)
+(or (not x1801) x1802)
+(or (not x1800) (not x454) (not x441))
+(or (not x454) (not x441) x1799)
+(or (not x1800) (not x454) (not x439) x55)
+(or (not x454) (not x439) (not x55) x1800)
+(or (not x1799) (not x454) (not x439))
+(or (not x1800) (not x454) (not x438) x53)
+(or (not x454) (not x438) (not x53) x1800)
+(or (not x1799) (not x454) (not x438))
+(or (not x1800) (not x453) (not x441) x51)
+(or (not x453) (not x441) (not x51) x1800)
+(or (not x1799) (not x453) (not x441))
+(or (not x1800) (not x453) (not x439))
+(or (not x453) (not x439) x1799)
+(or (not x1800) (not x453) (not x438) x47)
+(or (not x453) (not x438) (not x47) x1800)
+(or (not x1799) (not x453) (not x438))
+(or (not x1800) (not x451) (not x441) x45)
+(or (not x451) (not x441) (not x45) x1800)
+(or (not x1799) (not x451) (not x441))
+(or (not x1800) (not x451) (not x439) x41)
+(or (not x451) (not x439) (not x41) x1800)
+(or (not x1799) (not x451) (not x439))
+(or (not x1800) (not x451) (not x438))
+(or (not x451) (not x438) x1799)
+(or (not x157) (not x60) (not x6) x339)
+(or (not x339) (not x1795) (not x1789) x1798 x1797)
+(or (not x339) (not x1789) x1796 x1795)
+(or (not x339) x1790 x1789)
+(or (not x1797) (not x1795) (not x1789) x339)
+(or (not x1798) (not x1795) (not x1789) x339)
+(or (not x1796) (not x1789) x339)
+(or (not x1790) x339)
+(or (not x1798) (not x1797))
+(or (not x1332) x1798 x1335 x901)
+(or (not x1798) (not x1332) (not x901) x1335)
+(or (not x1798) (not x1335) x1332 x901)
+(or (not x1335) (not x901) x1798 x1332)
+(or (not x1331) x1798 x1334 x901)
+(or (not x1798) (not x1331) (not x901) x1334)
+(or (not x1798) (not x1334) x1331 x901)
+(or (not x1334) (not x901) x1798 x1331)
+(or (not x1330) x1798 x1333 x901)
+(or (not x1798) (not x1330) (not x901) x1333)
+(or (not x1798) (not x1333) x1330 x901)
+(or (not x1333) (not x901) x1798 x1330)
+(or (not x1334) (not x1331) x1797 x1335 x1332)
+(or (not x1333) (not x1330) x1797 x1334 x1331)
+(or x1797 x1333 x1330)
+(or (not x1335) (not x1332) x1797)
+(or (not x1797) (not x1335) x1332)
+(or (not x1797) (not x1332) x1335)
+(or (not x1797) (not x1334) x1331)
+(or (not x1797) (not x1331) x1334)
+(or (not x1797) (not x1333) x1330)
+(or (not x1797) (not x1330) x1333)
+(or (not x34) x1796 x1794 x1271)
+(or (not x1796) (not x1271) (not x34) x1794)
+(or (not x1796) x1794 x1271 x34)
+(or (not x1271) x1796 x1794 x34)
+(or (not x1794) (not x29) x1796 x1793 x1270)
+(or (not x1796) (not x1794) (not x1270) (not x29) x1793)
+(or (not x1796) (not x1794) x1793 x1270 x29)
+(or (not x1794) (not x1270) x1796 x1793 x29)
+(or (not x1793) (not x27) x1796 x1792 x1269)
+(or (not x1796) (not x1793) (not x1269) (not x27) x1792)
+(or (not x1796) (not x1793) x1792 x1269 x27)
+(or (not x1793) (not x1269) x1796 x1792 x27)
+(or (not x1792) (not x1356) x1796 x1791 x1268)
+(or (not x1796) (not x1792) (not x1268) (not x1356) x1791)
+(or (not x1796) (not x1792) x1791 x1268 x1356)
+(or (not x1792) (not x1268) x1796 x1791 x1356)
+(or (not x1796) (not x1795))
+(or (not x1791) x1795)
+(or (not x1795) x1791)
+(or x1794 x1271 x1267)
+(or (not x1271) (not x1267) x1794)
+(or (not x1794) (not x1271) x1267)
+(or (not x1794) (not x1267) x1271)
+(or (not x1794) x1793 x1270 x1266)
+(or (not x1794) (not x1270) (not x1266) x1793)
+(or (not x1793) (not x1270) x1266)
+(or (not x1793) (not x1266) x1270)
+(or (not x1793) x1794)
+(or (not x1793) x1792 x1269 x1265)
+(or (not x1793) (not x1269) (not x1265) x1792)
+(or (not x1792) (not x1269) x1265)
+(or (not x1792) (not x1265) x1269)
+(or (not x1792) x1793)
+(or (not x1792) x1791 x1268 x1264)
+(or (not x1792) (not x1268) (not x1264) x1791)
+(or (not x1791) (not x1268) x1264)
+(or (not x1791) (not x1264) x1268)
+(or (not x1791) x1792)
+(or (not x1790) (not x454) (not x450))
+(or (not x454) (not x450) x1789)
+(or (not x1790) (not x453) (not x450) x55)
+(or (not x453) (not x450) (not x55) x1790)
+(or (not x1789) (not x453) (not x450))
+(or (not x1790) (not x451) (not x450) x53)
+(or (not x451) (not x450) (not x53) x1790)
+(or (not x1789) (not x451) (not x450))
+(or (not x1790) (not x454) (not x448) x51)
+(or (not x454) (not x448) (not x51) x1790)
+(or (not x1789) (not x454) (not x448))
+(or (not x1790) (not x453) (not x448))
+(or (not x453) (not x448) x1789)
+(or (not x1790) (not x451) (not x448) x47)
+(or (not x451) (not x448) (not x47) x1790)
+(or (not x1789) (not x451) (not x448))
+(or (not x1790) (not x454) (not x447) x45)
+(or (not x454) (not x447) (not x45) x1790)
+(or (not x1789) (not x454) (not x447))
+(or (not x1790) (not x453) (not x447) x41)
+(or (not x453) (not x447) (not x41) x1790)
+(or (not x1789) (not x453) (not x447))
+(or (not x1790) (not x451) (not x447))
+(or (not x451) (not x447) x1789)
+(or (not x157) (not x60) (not x8) x332)
+(or (not x332) (not x1785) (not x1779) x1788 x1787)
+(or (not x332) (not x1779) x1786 x1785)
+(or (not x332) x1780 x1779)
+(or (not x1787) (not x1785) (not x1779) x332)
+(or (not x1788) (not x1785) (not x1779) x332)
+(or (not x1786) (not x1779) x332)
+(or (not x1780) x332)
+(or (not x1788) (not x1787))
+(or (not x1332) x1788 x1329 x901)
+(or (not x1788) (not x1332) (not x901) x1329)
+(or (not x1788) (not x1329) x1332 x901)
+(or (not x1329) (not x901) x1788 x1332)
+(or (not x1331) x1788 x1328 x901)
+(or (not x1788) (not x1331) (not x901) x1328)
+(or (not x1788) (not x1328) x1331 x901)
+(or (not x1328) (not x901) x1788 x1331)
+(or (not x1330) x1788 x1327 x901)
+(or (not x1788) (not x1330) (not x901) x1327)
+(or (not x1788) (not x1327) x1330 x901)
+(or (not x1327) (not x901) x1788 x1330)
+(or (not x1331) (not x1328) x1787 x1332 x1329)
+(or (not x1330) (not x1327) x1787 x1331 x1328)
+(or x1787 x1330 x1327)
+(or (not x1332) (not x1329) x1787)
+(or (not x1787) (not x1329) x1332)
+(or (not x1787) (not x1332) x1329)
+(or (not x1787) (not x1328) x1331)
+(or (not x1787) (not x1331) x1328)
+(or (not x1787) (not x1327) x1330)
+(or (not x1787) (not x1330) x1327)
+(or (not x34) x1786 x1784 x1263)
+(or (not x1786) (not x1263) (not x34) x1784)
+(or (not x1786) x1784 x1263 x34)
+(or (not x1263) x1786 x1784 x34)
+(or (not x1784) (not x29) x1786 x1783 x1262)
+(or (not x1786) (not x1784) (not x1262) (not x29) x1783)
+(or (not x1786) (not x1784) x1783 x1262 x29)
+(or (not x1784) (not x1262) x1786 x1783 x29)
+(or (not x1783) (not x27) x1786 x1782 x1261)
+(or (not x1786) (not x1783) (not x1261) (not x27) x1782)
+(or (not x1786) (not x1783) x1782 x1261 x27)
+(or (not x1783) (not x1261) x1786 x1782 x27)
+(or (not x1782) (not x1356) x1786 x1781 x1260)
+(or (not x1786) (not x1782) (not x1260) (not x1356) x1781)
+(or (not x1786) (not x1782) x1781 x1260 x1356)
+(or (not x1782) (not x1260) x1786 x1781 x1356)
+(or (not x1786) (not x1785))
+(or (not x1781) x1785)
+(or (not x1785) x1781)
+(or x1784 x1267 x1263)
+(or (not x1267) (not x1263) x1784)
+(or (not x1784) (not x1263) x1267)
+(or (not x1784) (not x1267) x1263)
+(or (not x1784) x1783 x1266 x1262)
+(or (not x1784) (not x1266) (not x1262) x1783)
+(or (not x1783) (not x1262) x1266)
+(or (not x1783) (not x1266) x1262)
+(or (not x1783) x1784)
+(or (not x1783) x1782 x1265 x1261)
+(or (not x1783) (not x1265) (not x1261) x1782)
+(or (not x1782) (not x1261) x1265)
+(or (not x1782) (not x1265) x1261)
+(or (not x1782) x1783)
+(or (not x1782) x1781 x1264 x1260)
+(or (not x1782) (not x1264) (not x1260) x1781)
+(or (not x1781) (not x1260) x1264)
+(or (not x1781) (not x1264) x1260)
+(or (not x1781) x1782)
+(or (not x1780) (not x450) (not x445))
+(or (not x450) (not x445) x1779)
+(or (not x1780) (not x450) (not x444) x55)
+(or (not x450) (not x444) (not x55) x1780)
+(or (not x1779) (not x450) (not x444))
+(or (not x1780) (not x450) (not x442) x53)
+(or (not x450) (not x442) (not x53) x1780)
+(or (not x1779) (not x450) (not x442))
+(or (not x1780) (not x448) (not x445) x51)
+(or (not x448) (not x445) (not x51) x1780)
+(or (not x1779) (not x448) (not x445))
+(or (not x1780) (not x448) (not x444))
+(or (not x448) (not x444) x1779)
+(or (not x1780) (not x448) (not x442) x47)
+(or (not x448) (not x442) (not x47) x1780)
+(or (not x1779) (not x448) (not x442))
+(or (not x1780) (not x447) (not x445) x45)
+(or (not x447) (not x445) (not x45) x1780)
+(or (not x1779) (not x447) (not x445))
+(or (not x1780) (not x447) (not x444) x41)
+(or (not x447) (not x444) (not x41) x1780)
+(or (not x1779) (not x447) (not x444))
+(or (not x1780) (not x447) (not x442))
+(or (not x447) (not x442) x1779)
+(or (not x341) (not x1775) (not x1769) x1778 x1777)
+(or (not x341) (not x1769) x1776 x1775)
+(or (not x341) x1770 x1769)
+(or (not x1777) (not x1775) (not x1769) x341)
+(or (not x1778) (not x1775) (not x1769) x341)
+(or (not x1776) (not x1769) x341)
+(or (not x1770) x341)
+(or (not x1778) (not x1777))
+(or (not x1332) x1778 x1326 x901)
+(or (not x1778) (not x1332) (not x901) x1326)
+(or (not x1778) (not x1326) x1332 x901)
+(or (not x1326) (not x901) x1778 x1332)
+(or (not x1331) x1778 x1325 x901)
+(or (not x1778) (not x1331) (not x901) x1325)
+(or (not x1778) (not x1325) x1331 x901)
+(or (not x1325) (not x901) x1778 x1331)
+(or (not x1330) x1778 x1324 x901)
+(or (not x1778) (not x1330) (not x901) x1324)
+(or (not x1778) (not x1324) x1330 x901)
+(or (not x1324) (not x901) x1778 x1330)
+(or (not x1331) (not x1325) x1777 x1332 x1326)
+(or (not x1330) (not x1324) x1777 x1331 x1325)
+(or x1777 x1330 x1324)
+(or (not x1332) (not x1326) x1777)
+(or (not x1777) (not x1326) x1332)
+(or (not x1777) (not x1332) x1326)
+(or (not x1777) (not x1325) x1331)
+(or (not x1777) (not x1331) x1325)
+(or (not x1777) (not x1324) x1330)
+(or (not x1777) (not x1330) x1324)
+(or (not x34) x1776 x1774 x1259)
+(or (not x1776) (not x1259) (not x34) x1774)
+(or (not x1776) x1774 x1259 x34)
+(or (not x1259) x1776 x1774 x34)
+(or (not x1774) (not x29) x1776 x1773 x1258)
+(or (not x1776) (not x1774) (not x1258) (not x29) x1773)
+(or (not x1776) (not x1774) x1773 x1258 x29)
+(or (not x1774) (not x1258) x1776 x1773 x29)
+(or (not x1773) (not x27) x1776 x1772 x1256)
+(or (not x1776) (not x1773) (not x1256) (not x27) x1772)
+(or (not x1776) (not x1773) x1772 x1256 x27)
+(or (not x1773) (not x1256) x1776 x1772 x27)
+(or (not x1772) (not x1356) x1776 x1771 x1257)
+(or (not x1776) (not x1772) (not x1257) (not x1356) x1771)
+(or (not x1776) (not x1772) x1771 x1257 x1356)
+(or (not x1772) (not x1257) x1776 x1771 x1356)
+(or (not x1776) (not x1775))
+(or (not x1771) x1775)
+(or (not x1775) x1771)
+(or x1774 x1267 x1259)
+(or (not x1267) (not x1259) x1774)
+(or (not x1774) (not x1259) x1267)
+(or (not x1774) (not x1267) x1259)
+(or (not x1774) x1773 x1266 x1258)
+(or (not x1774) (not x1266) (not x1258) x1773)
+(or (not x1773) (not x1258) x1266)
+(or (not x1773) (not x1266) x1258)
+(or (not x1773) x1774)
+(or (not x1773) x1772 x1265 x1256)
+(or (not x1773) (not x1265) (not x1256) x1772)
+(or (not x1772) (not x1256) x1265)
+(or (not x1772) (not x1265) x1256)
+(or (not x1772) x1773)
+(or (not x1772) x1771 x1264 x1257)
+(or (not x1772) (not x1264) (not x1257) x1771)
+(or (not x1771) (not x1257) x1264)
+(or (not x1771) (not x1264) x1257)
+(or (not x1771) x1772)
+(or (not x1770) (not x450) (not x441))
+(or (not x450) (not x441) x1769)
+(or (not x1770) (not x450) (not x439) x55)
+(or (not x450) (not x439) (not x55) x1770)
+(or (not x1769) (not x450) (not x439))
+(or (not x1770) (not x450) (not x438) x53)
+(or (not x450) (not x438) (not x53) x1770)
+(or (not x1769) (not x450) (not x438))
+(or (not x1770) (not x448) (not x441) x51)
+(or (not x448) (not x441) (not x51) x1770)
+(or (not x1769) (not x448) (not x441))
+(or (not x1770) (not x448) (not x439))
+(or (not x448) (not x439) x1769)
+(or (not x1770) (not x448) (not x438) x47)
+(or (not x448) (not x438) (not x47) x1770)
+(or (not x1769) (not x448) (not x438))
+(or (not x1770) (not x447) (not x441) x45)
+(or (not x447) (not x441) (not x45) x1770)
+(or (not x1769) (not x447) (not x441))
+(or (not x1770) (not x447) (not x439) x41)
+(or (not x447) (not x439) (not x41) x1770)
+(or (not x1769) (not x447) (not x439))
+(or (not x1770) (not x447) (not x438))
+(or (not x447) (not x438) x1769)
+(or (not x146) (not x60) (not x6) x338)
+(or (not x338) (not x1765) (not x1759) x1768 x1767)
+(or (not x338) (not x1759) x1766 x1765)
+(or (not x338) x1760 x1759)
+(or (not x1767) (not x1765) (not x1759) x338)
+(or (not x1768) (not x1765) (not x1759) x338)
+(or (not x1766) (not x1759) x338)
+(or (not x1760) x338)
+(or (not x1768) (not x1767))
+(or (not x1329) x1768 x1335 x900)
+(or (not x1768) (not x1329) (not x900) x1335)
+(or (not x1768) (not x1335) x1329 x900)
+(or (not x1335) (not x900) x1768 x1329)
+(or (not x1328) x1768 x1334 x900)
+(or (not x1768) (not x1328) (not x900) x1334)
+(or (not x1768) (not x1334) x1328 x900)
+(or (not x1334) (not x900) x1768 x1328)
+(or (not x1327) x1768 x1333 x900)
+(or (not x1768) (not x1327) (not x900) x1333)
+(or (not x1768) (not x1333) x1327 x900)
+(or (not x1333) (not x900) x1768 x1327)
+(or (not x1334) (not x1328) x1767 x1335 x1329)
+(or (not x1333) (not x1327) x1767 x1334 x1328)
+(or x1767 x1333 x1327)
+(or (not x1335) (not x1329) x1767)
+(or (not x1767) (not x1335) x1329)
+(or (not x1767) (not x1329) x1335)
+(or (not x1767) (not x1334) x1328)
+(or (not x1767) (not x1328) x1334)
+(or (not x1767) (not x1333) x1327)
+(or (not x1767) (not x1327) x1333)
+(or (not x34) x1766 x1764 x1271)
+(or (not x1766) (not x1271) (not x34) x1764)
+(or (not x1766) x1764 x1271 x34)
+(or (not x1271) x1766 x1764 x34)
+(or (not x1764) (not x29) x1766 x1763 x1270)
+(or (not x1766) (not x1764) (not x1270) (not x29) x1763)
+(or (not x1766) (not x1764) x1763 x1270 x29)
+(or (not x1764) (not x1270) x1766 x1763 x29)
+(or (not x1763) (not x27) x1766 x1762 x1269)
+(or (not x1766) (not x1763) (not x1269) (not x27) x1762)
+(or (not x1766) (not x1763) x1762 x1269 x27)
+(or (not x1763) (not x1269) x1766 x1762 x27)
+(or (not x1762) (not x1356) x1766 x1761 x1268)
+(or (not x1766) (not x1762) (not x1268) (not x1356) x1761)
+(or (not x1766) (not x1762) x1761 x1268 x1356)
+(or (not x1762) (not x1268) x1766 x1761 x1356)
+(or (not x1766) (not x1765))
+(or (not x1761) x1765)
+(or (not x1765) x1761)
+(or x1764 x1271 x1263)
+(or (not x1271) (not x1263) x1764)
+(or (not x1764) (not x1271) x1263)
+(or (not x1764) (not x1263) x1271)
+(or (not x1764) x1763 x1270 x1262)
+(or (not x1764) (not x1270) (not x1262) x1763)
+(or (not x1763) (not x1270) x1262)
+(or (not x1763) (not x1262) x1270)
+(or (not x1763) x1764)
+(or (not x1763) x1762 x1269 x1261)
+(or (not x1763) (not x1269) (not x1261) x1762)
+(or (not x1762) (not x1269) x1261)
+(or (not x1762) (not x1261) x1269)
+(or (not x1762) x1763)
+(or (not x1762) x1761 x1268 x1260)
+(or (not x1762) (not x1268) (not x1260) x1761)
+(or (not x1761) (not x1268) x1260)
+(or (not x1761) (not x1260) x1268)
+(or (not x1761) x1762)
+(or (not x1760) (not x454) (not x445))
+(or (not x454) (not x445) x1759)
+(or (not x1760) (not x453) (not x445) x55)
+(or (not x453) (not x445) (not x55) x1760)
+(or (not x1759) (not x453) (not x445))
+(or (not x1760) (not x451) (not x445) x53)
+(or (not x451) (not x445) (not x53) x1760)
+(or (not x1759) (not x451) (not x445))
+(or (not x1760) (not x454) (not x444) x51)
+(or (not x454) (not x444) (not x51) x1760)
+(or (not x1759) (not x454) (not x444))
+(or (not x1760) (not x453) (not x444))
+(or (not x453) (not x444) x1759)
+(or (not x1760) (not x451) (not x444) x47)
+(or (not x451) (not x444) (not x47) x1760)
+(or (not x1759) (not x451) (not x444))
+(or (not x1760) (not x454) (not x442) x45)
+(or (not x454) (not x442) (not x45) x1760)
+(or (not x1759) (not x454) (not x442))
+(or (not x1760) (not x453) (not x442) x41)
+(or (not x453) (not x442) (not x41) x1760)
+(or (not x1759) (not x453) (not x442))
+(or (not x1760) (not x451) (not x442))
+(or (not x451) (not x442) x1759)
+(or (not x146) (not x60) (not x7) x335)
+(or (not x335) (not x1755) (not x1749) x1758 x1757)
+(or (not x335) (not x1749) x1756 x1755)
+(or (not x335) x1750 x1749)
+(or (not x1757) (not x1755) (not x1749) x335)
+(or (not x1758) (not x1755) (not x1749) x335)
+(or (not x1756) (not x1749) x335)
+(or (not x1750) x335)
+(or (not x1758) (not x1757))
+(or (not x1329) x1758 x1332 x900)
+(or (not x1758) (not x1329) (not x900) x1332)
+(or (not x1758) (not x1332) x1329 x900)
+(or (not x1332) (not x900) x1758 x1329)
+(or (not x1328) x1758 x1331 x900)
+(or (not x1758) (not x1328) (not x900) x1331)
+(or (not x1758) (not x1331) x1328 x900)
+(or (not x1331) (not x900) x1758 x1328)
+(or (not x1327) x1758 x1330 x900)
+(or (not x1758) (not x1327) (not x900) x1330)
+(or (not x1758) (not x1330) x1327 x900)
+(or (not x1330) (not x900) x1758 x1327)
+(or (not x1331) (not x1328) x1757 x1332 x1329)
+(or (not x1330) (not x1327) x1757 x1331 x1328)
+(or x1757 x1330 x1327)
+(or (not x1332) (not x1329) x1757)
+(or (not x1757) (not x1332) x1329)
+(or (not x1757) (not x1329) x1332)
+(or (not x1757) (not x1331) x1328)
+(or (not x1757) (not x1328) x1331)
+(or (not x1757) (not x1330) x1327)
+(or (not x1757) (not x1327) x1330)
+(or (not x34) x1756 x1754 x1267)
+(or (not x1756) (not x1267) (not x34) x1754)
+(or (not x1756) x1754 x1267 x34)
+(or (not x1267) x1756 x1754 x34)
+(or (not x1754) (not x29) x1756 x1753 x1266)
+(or (not x1756) (not x1754) (not x1266) (not x29) x1753)
+(or (not x1756) (not x1754) x1753 x1266 x29)
+(or (not x1754) (not x1266) x1756 x1753 x29)
+(or (not x1753) (not x27) x1756 x1752 x1265)
+(or (not x1756) (not x1753) (not x1265) (not x27) x1752)
+(or (not x1756) (not x1753) x1752 x1265 x27)
+(or (not x1753) (not x1265) x1756 x1752 x27)
+(or (not x1752) (not x1356) x1756 x1751 x1264)
+(or (not x1756) (not x1752) (not x1264) (not x1356) x1751)
+(or (not x1756) (not x1752) x1751 x1264 x1356)
+(or (not x1752) (not x1264) x1756 x1751 x1356)
+(or (not x1756) (not x1755))
+(or (not x1751) x1755)
+(or (not x1755) x1751)
+(or x1754 x1267 x1263)
+(or (not x1267) (not x1263) x1754)
+(or (not x1754) (not x1267) x1263)
+(or (not x1754) (not x1263) x1267)
+(or (not x1754) x1753 x1266 x1262)
+(or (not x1754) (not x1266) (not x1262) x1753)
+(or (not x1753) (not x1266) x1262)
+(or (not x1753) (not x1262) x1266)
+(or (not x1753) x1754)
+(or (not x1753) x1752 x1265 x1261)
+(or (not x1753) (not x1265) (not x1261) x1752)
+(or (not x1752) (not x1265) x1261)
+(or (not x1752) (not x1261) x1265)
+(or (not x1752) x1753)
+(or (not x1752) x1751 x1264 x1260)
+(or (not x1752) (not x1264) (not x1260) x1751)
+(or (not x1751) (not x1264) x1260)
+(or (not x1751) (not x1260) x1264)
+(or (not x1751) x1752)
+(or (not x1750) (not x450) (not x445))
+(or (not x450) (not x445) x1749)
+(or (not x1750) (not x448) (not x445) x55)
+(or (not x448) (not x445) (not x55) x1750)
+(or (not x1749) (not x448) (not x445))
+(or (not x1750) (not x447) (not x445) x53)
+(or (not x447) (not x445) (not x53) x1750)
+(or (not x1749) (not x447) (not x445))
+(or (not x1750) (not x450) (not x444) x51)
+(or (not x450) (not x444) (not x51) x1750)
+(or (not x1749) (not x450) (not x444))
+(or (not x1750) (not x448) (not x444))
+(or (not x448) (not x444) x1749)
+(or (not x1750) (not x447) (not x444) x47)
+(or (not x447) (not x444) (not x47) x1750)
+(or (not x1749) (not x447) (not x444))
+(or (not x1750) (not x450) (not x442) x45)
+(or (not x450) (not x442) (not x45) x1750)
+(or (not x1749) (not x450) (not x442))
+(or (not x1750) (not x448) (not x442) x41)
+(or (not x448) (not x442) (not x41) x1750)
+(or (not x1749) (not x448) (not x442))
+(or (not x1750) (not x447) (not x442))
+(or (not x447) (not x442) x1749)
+(or (not x347) (not x1745) (not x1739) x1748 x1747)
+(or (not x347) (not x1739) x1746 x1745)
+(or (not x347) x1740 x1739)
+(or (not x1747) (not x1745) (not x1739) x347)
+(or (not x1748) (not x1745) (not x1739) x347)
+(or (not x1746) (not x1739) x347)
+(or (not x1740) x347)
+(or (not x1748) (not x1747))
+(or (not x1329) x1748 x1326 x900)
+(or (not x1748) (not x1329) (not x900) x1326)
+(or (not x1748) (not x1326) x1329 x900)
+(or (not x1326) (not x900) x1748 x1329)
+(or (not x1328) x1748 x1325 x900)
+(or (not x1748) (not x1328) (not x900) x1325)
+(or (not x1748) (not x1325) x1328 x900)
+(or (not x1325) (not x900) x1748 x1328)
+(or (not x1327) x1748 x1324 x900)
+(or (not x1748) (not x1327) (not x900) x1324)
+(or (not x1748) (not x1324) x1327 x900)
+(or (not x1324) (not x900) x1748 x1327)
+(or (not x1328) (not x1325) x1747 x1329 x1326)
+(or (not x1327) (not x1324) x1747 x1328 x1325)
+(or x1747 x1327 x1324)
+(or (not x1329) (not x1326) x1747)
+(or (not x1747) (not x1326) x1329)
+(or (not x1747) (not x1329) x1326)
+(or (not x1747) (not x1325) x1328)
+(or (not x1747) (not x1328) x1325)
+(or (not x1747) (not x1324) x1327)
+(or (not x1747) (not x1327) x1324)
+(or (not x34) x1746 x1744 x1259)
+(or (not x1746) (not x1259) (not x34) x1744)
+(or (not x1746) x1744 x1259 x34)
+(or (not x1259) x1746 x1744 x34)
+(or (not x1744) (not x29) x1746 x1743 x1258)
+(or (not x1746) (not x1744) (not x1258) (not x29) x1743)
+(or (not x1746) (not x1744) x1743 x1258 x29)
+(or (not x1744) (not x1258) x1746 x1743 x29)
+(or (not x1743) (not x27) x1746 x1742 x1256)
+(or (not x1746) (not x1743) (not x1256) (not x27) x1742)
+(or (not x1746) (not x1743) x1742 x1256 x27)
+(or (not x1743) (not x1256) x1746 x1742 x27)
+(or (not x1742) (not x1356) x1746 x1741 x1257)
+(or (not x1746) (not x1742) (not x1257) (not x1356) x1741)
+(or (not x1746) (not x1742) x1741 x1257 x1356)
+(or (not x1742) (not x1257) x1746 x1741 x1356)
+(or (not x1746) (not x1745))
+(or (not x1741) x1745)
+(or (not x1745) x1741)
+(or x1744 x1263 x1259)
+(or (not x1263) (not x1259) x1744)
+(or (not x1744) (not x1259) x1263)
+(or (not x1744) (not x1263) x1259)
+(or (not x1744) x1743 x1262 x1258)
+(or (not x1744) (not x1262) (not x1258) x1743)
+(or (not x1743) (not x1258) x1262)
+(or (not x1743) (not x1262) x1258)
+(or (not x1743) x1744)
+(or (not x1743) x1742 x1261 x1256)
+(or (not x1743) (not x1261) (not x1256) x1742)
+(or (not x1742) (not x1256) x1261)
+(or (not x1742) (not x1261) x1256)
+(or (not x1742) x1743)
+(or (not x1742) x1741 x1260 x1257)
+(or (not x1742) (not x1260) (not x1257) x1741)
+(or (not x1741) (not x1257) x1260)
+(or (not x1741) (not x1260) x1257)
+(or (not x1741) x1742)
+(or (not x1740) (not x445) (not x441))
+(or (not x445) (not x441) x1739)
+(or (not x1740) (not x445) (not x439) x55)
+(or (not x445) (not x439) (not x55) x1740)
+(or (not x1739) (not x445) (not x439))
+(or (not x1740) (not x445) (not x438) x53)
+(or (not x445) (not x438) (not x53) x1740)
+(or (not x1739) (not x445) (not x438))
+(or (not x1740) (not x444) (not x441) x51)
+(or (not x444) (not x441) (not x51) x1740)
+(or (not x1739) (not x444) (not x441))
+(or (not x1740) (not x444) (not x439))
+(or (not x444) (not x439) x1739)
+(or (not x1740) (not x444) (not x438) x47)
+(or (not x444) (not x438) (not x47) x1740)
+(or (not x1739) (not x444) (not x438))
+(or (not x1740) (not x442) (not x441) x45)
+(or (not x442) (not x441) (not x45) x1740)
+(or (not x1739) (not x442) (not x441))
+(or (not x1740) (not x442) (not x439) x41)
+(or (not x442) (not x439) (not x41) x1740)
+(or (not x1739) (not x442) (not x439))
+(or (not x1740) (not x442) (not x438))
+(or (not x442) (not x438) x1739)
+(or (not x345) (not x1735) (not x1729) x1738 x1737)
+(or (not x345) (not x1729) x1736 x1735)
+(or (not x345) x1730 x1729)
+(or (not x1737) (not x1735) (not x1729) x345)
+(or (not x1738) (not x1735) (not x1729) x345)
+(or (not x1736) (not x1729) x345)
+(or (not x1730) x345)
+(or (not x1738) (not x1737))
+(or (not x1326) x1738 x1335 x899)
+(or (not x1738) (not x1326) (not x899) x1335)
+(or (not x1738) (not x1335) x1326 x899)
+(or (not x1335) (not x899) x1738 x1326)
+(or (not x1325) x1738 x1334 x899)
+(or (not x1738) (not x1325) (not x899) x1334)
+(or (not x1738) (not x1334) x1325 x899)
+(or (not x1334) (not x899) x1738 x1325)
+(or (not x1324) x1738 x1333 x899)
+(or (not x1738) (not x1324) (not x899) x1333)
+(or (not x1738) (not x1333) x1324 x899)
+(or (not x1333) (not x899) x1738 x1324)
+(or (not x1334) (not x1325) x1737 x1335 x1326)
+(or (not x1333) (not x1324) x1737 x1334 x1325)
+(or x1737 x1333 x1324)
+(or (not x1335) (not x1326) x1737)
+(or (not x1737) (not x1335) x1326)
+(or (not x1737) (not x1326) x1335)
+(or (not x1737) (not x1334) x1325)
+(or (not x1737) (not x1325) x1334)
+(or (not x1737) (not x1333) x1324)
+(or (not x1737) (not x1324) x1333)
+(or (not x34) x1736 x1734 x1271)
+(or (not x1736) (not x1271) (not x34) x1734)
+(or (not x1736) x1734 x1271 x34)
+(or (not x1271) x1736 x1734 x34)
+(or (not x1734) (not x29) x1736 x1733 x1270)
+(or (not x1736) (not x1734) (not x1270) (not x29) x1733)
+(or (not x1736) (not x1734) x1733 x1270 x29)
+(or (not x1734) (not x1270) x1736 x1733 x29)
+(or (not x1733) (not x27) x1736 x1732 x1269)
+(or (not x1736) (not x1733) (not x1269) (not x27) x1732)
+(or (not x1736) (not x1733) x1732 x1269 x27)
+(or (not x1733) (not x1269) x1736 x1732 x27)
+(or (not x1732) (not x1356) x1736 x1731 x1268)
+(or (not x1736) (not x1732) (not x1268) (not x1356) x1731)
+(or (not x1736) (not x1732) x1731 x1268 x1356)
+(or (not x1732) (not x1268) x1736 x1731 x1356)
+(or (not x1736) (not x1735))
+(or (not x1731) x1735)
+(or (not x1735) x1731)
+(or x1734 x1271 x1259)
+(or (not x1271) (not x1259) x1734)
+(or (not x1734) (not x1271) x1259)
+(or (not x1734) (not x1259) x1271)
+(or (not x1734) x1733 x1270 x1258)
+(or (not x1734) (not x1270) (not x1258) x1733)
+(or (not x1733) (not x1270) x1258)
+(or (not x1733) (not x1258) x1270)
+(or (not x1733) x1734)
+(or (not x1733) x1732 x1269 x1256)
+(or (not x1733) (not x1269) (not x1256) x1732)
+(or (not x1732) (not x1269) x1256)
+(or (not x1732) (not x1256) x1269)
+(or (not x1732) x1733)
+(or (not x1732) x1731 x1268 x1257)
+(or (not x1732) (not x1268) (not x1257) x1731)
+(or (not x1731) (not x1268) x1257)
+(or (not x1731) (not x1257) x1268)
+(or (not x1731) x1732)
+(or (not x1730) (not x454) (not x441))
+(or (not x454) (not x441) x1729)
+(or (not x1730) (not x453) (not x441) x55)
+(or (not x453) (not x441) (not x55) x1730)
+(or (not x1729) (not x453) (not x441))
+(or (not x1730) (not x451) (not x441) x53)
+(or (not x451) (not x441) (not x53) x1730)
+(or (not x1729) (not x451) (not x441))
+(or (not x1730) (not x454) (not x439) x51)
+(or (not x454) (not x439) (not x51) x1730)
+(or (not x1729) (not x454) (not x439))
+(or (not x1730) (not x453) (not x439))
+(or (not x453) (not x439) x1729)
+(or (not x1730) (not x451) (not x439) x47)
+(or (not x451) (not x439) (not x47) x1730)
+(or (not x1729) (not x451) (not x439))
+(or (not x1730) (not x454) (not x438) x45)
+(or (not x454) (not x438) (not x45) x1730)
+(or (not x1729) (not x454) (not x438))
+(or (not x1730) (not x453) (not x438) x41)
+(or (not x453) (not x438) (not x41) x1730)
+(or (not x1729) (not x453) (not x438))
+(or (not x1730) (not x451) (not x438))
+(or (not x451) (not x438) x1729)
+(or (not x344) (not x1725) (not x1719) x1728 x1727)
+(or (not x344) (not x1719) x1726 x1725)
+(or (not x344) x1720 x1719)
+(or (not x1727) (not x1725) (not x1719) x344)
+(or (not x1728) (not x1725) (not x1719) x344)
+(or (not x1726) (not x1719) x344)
+(or (not x1720) x344)
+(or (not x1728) (not x1727))
+(or (not x1326) x1728 x1332 x899)
+(or (not x1728) (not x1326) (not x899) x1332)
+(or (not x1728) (not x1332) x1326 x899)
+(or (not x1332) (not x899) x1728 x1326)
+(or (not x1325) x1728 x1331 x899)
+(or (not x1728) (not x1325) (not x899) x1331)
+(or (not x1728) (not x1331) x1325 x899)
+(or (not x1331) (not x899) x1728 x1325)
+(or (not x1324) x1728 x1330 x899)
+(or (not x1728) (not x1324) (not x899) x1330)
+(or (not x1728) (not x1330) x1324 x899)
+(or (not x1330) (not x899) x1728 x1324)
+(or (not x1331) (not x1325) x1727 x1332 x1326)
+(or (not x1330) (not x1324) x1727 x1331 x1325)
+(or x1727 x1330 x1324)
+(or (not x1332) (not x1326) x1727)
+(or (not x1727) (not x1332) x1326)
+(or (not x1727) (not x1326) x1332)
+(or (not x1727) (not x1331) x1325)
+(or (not x1727) (not x1325) x1331)
+(or (not x1727) (not x1330) x1324)
+(or (not x1727) (not x1324) x1330)
+(or (not x34) x1726 x1724 x1267)
+(or (not x1726) (not x1267) (not x34) x1724)
+(or (not x1726) x1724 x1267 x34)
+(or (not x1267) x1726 x1724 x34)
+(or (not x1724) (not x29) x1726 x1723 x1266)
+(or (not x1726) (not x1724) (not x1266) (not x29) x1723)
+(or (not x1726) (not x1724) x1723 x1266 x29)
+(or (not x1724) (not x1266) x1726 x1723 x29)
+(or (not x1723) (not x27) x1726 x1722 x1265)
+(or (not x1726) (not x1723) (not x1265) (not x27) x1722)
+(or (not x1726) (not x1723) x1722 x1265 x27)
+(or (not x1723) (not x1265) x1726 x1722 x27)
+(or (not x1722) (not x1356) x1726 x1721 x1264)
+(or (not x1726) (not x1722) (not x1264) (not x1356) x1721)
+(or (not x1726) (not x1722) x1721 x1264 x1356)
+(or (not x1722) (not x1264) x1726 x1721 x1356)
+(or (not x1726) (not x1725))
+(or (not x1721) x1725)
+(or (not x1725) x1721)
+(or x1724 x1267 x1259)
+(or (not x1267) (not x1259) x1724)
+(or (not x1724) (not x1267) x1259)
+(or (not x1724) (not x1259) x1267)
+(or (not x1724) x1723 x1266 x1258)
+(or (not x1724) (not x1266) (not x1258) x1723)
+(or (not x1723) (not x1266) x1258)
+(or (not x1723) (not x1258) x1266)
+(or (not x1723) x1724)
+(or (not x1723) x1722 x1265 x1256)
+(or (not x1723) (not x1265) (not x1256) x1722)
+(or (not x1722) (not x1265) x1256)
+(or (not x1722) (not x1256) x1265)
+(or (not x1722) x1723)
+(or (not x1722) x1721 x1264 x1257)
+(or (not x1722) (not x1264) (not x1257) x1721)
+(or (not x1721) (not x1264) x1257)
+(or (not x1721) (not x1257) x1264)
+(or (not x1721) x1722)
+(or (not x1720) (not x450) (not x441))
+(or (not x450) (not x441) x1719)
+(or (not x1720) (not x448) (not x441) x55)
+(or (not x448) (not x441) (not x55) x1720)
+(or (not x1719) (not x448) (not x441))
+(or (not x1720) (not x447) (not x441) x53)
+(or (not x447) (not x441) (not x53) x1720)
+(or (not x1719) (not x447) (not x441))
+(or (not x1720) (not x450) (not x439) x51)
+(or (not x450) (not x439) (not x51) x1720)
+(or (not x1719) (not x450) (not x439))
+(or (not x1720) (not x448) (not x439))
+(or (not x448) (not x439) x1719)
+(or (not x1720) (not x447) (not x439) x47)
+(or (not x447) (not x439) (not x47) x1720)
+(or (not x1719) (not x447) (not x439))
+(or (not x1720) (not x450) (not x438) x45)
+(or (not x450) (not x438) (not x45) x1720)
+(or (not x1719) (not x450) (not x438))
+(or (not x1720) (not x448) (not x438) x41)
+(or (not x448) (not x438) (not x41) x1720)
+(or (not x1719) (not x448) (not x438))
+(or (not x1720) (not x447) (not x438))
+(or (not x447) (not x438) x1719)
+(or (not x349) (not x1715) (not x1709) x1718 x1717)
+(or (not x349) (not x1709) x1716 x1715)
+(or (not x349) x1710 x1709)
+(or (not x1717) (not x1715) (not x1709) x349)
+(or (not x1718) (not x1715) (not x1709) x349)
+(or (not x1716) (not x1709) x349)
+(or (not x1710) x349)
+(or (not x1718) (not x1717))
+(or (not x1326) x1718 x1329 x899)
+(or (not x1718) (not x1326) (not x899) x1329)
+(or (not x1718) (not x1329) x1326 x899)
+(or (not x1329) (not x899) x1718 x1326)
+(or (not x1325) x1718 x1328 x899)
+(or (not x1718) (not x1325) (not x899) x1328)
+(or (not x1718) (not x1328) x1325 x899)
+(or (not x1328) (not x899) x1718 x1325)
+(or (not x1324) x1718 x1327 x899)
+(or (not x1718) (not x1324) (not x899) x1327)
+(or (not x1718) (not x1327) x1324 x899)
+(or (not x1327) (not x899) x1718 x1324)
+(or (not x1328) (not x1325) x1717 x1329 x1326)
+(or (not x1327) (not x1324) x1717 x1328 x1325)
+(or x1717 x1327 x1324)
+(or (not x1329) (not x1326) x1717)
+(or (not x1717) (not x1329) x1326)
+(or (not x1717) (not x1326) x1329)
+(or (not x1717) (not x1328) x1325)
+(or (not x1717) (not x1325) x1328)
+(or (not x1717) (not x1327) x1324)
+(or (not x1717) (not x1324) x1327)
+(or (not x34) x1716 x1714 x1263)
+(or (not x1716) (not x1263) (not x34) x1714)
+(or (not x1716) x1714 x1263 x34)
+(or (not x1263) x1716 x1714 x34)
+(or (not x1714) (not x29) x1716 x1713 x1262)
+(or (not x1716) (not x1714) (not x1262) (not x29) x1713)
+(or (not x1716) (not x1714) x1713 x1262 x29)
+(or (not x1714) (not x1262) x1716 x1713 x29)
+(or (not x1713) (not x27) x1716 x1712 x1261)
+(or (not x1716) (not x1713) (not x1261) (not x27) x1712)
+(or (not x1716) (not x1713) x1712 x1261 x27)
+(or (not x1713) (not x1261) x1716 x1712 x27)
+(or (not x1712) (not x1356) x1716 x1711 x1260)
+(or (not x1716) (not x1712) (not x1260) (not x1356) x1711)
+(or (not x1716) (not x1712) x1711 x1260 x1356)
+(or (not x1712) (not x1260) x1716 x1711 x1356)
+(or (not x1716) (not x1715))
+(or (not x1711) x1715)
+(or (not x1715) x1711)
+(or x1714 x1263 x1259)
+(or (not x1263) (not x1259) x1714)
+(or (not x1714) (not x1263) x1259)
+(or (not x1714) (not x1259) x1263)
+(or (not x1714) x1713 x1262 x1258)
+(or (not x1714) (not x1262) (not x1258) x1713)
+(or (not x1713) (not x1262) x1258)
+(or (not x1713) (not x1258) x1262)
+(or (not x1713) x1714)
+(or (not x1713) x1712 x1261 x1256)
+(or (not x1713) (not x1261) (not x1256) x1712)
+(or (not x1712) (not x1261) x1256)
+(or (not x1712) (not x1256) x1261)
+(or (not x1712) x1713)
+(or (not x1712) x1711 x1260 x1257)
+(or (not x1712) (not x1260) (not x1257) x1711)
+(or (not x1711) (not x1260) x1257)
+(or (not x1711) (not x1257) x1260)
+(or (not x1711) x1712)
+(or (not x1710) (not x445) (not x441))
+(or (not x445) (not x441) x1709)
+(or (not x1710) (not x444) (not x441) x55)
+(or (not x444) (not x441) (not x55) x1710)
+(or (not x1709) (not x444) (not x441))
+(or (not x1710) (not x442) (not x441) x53)
+(or (not x442) (not x441) (not x53) x1710)
+(or (not x1709) (not x442) (not x441))
+(or (not x1710) (not x445) (not x439) x51)
+(or (not x445) (not x439) (not x51) x1710)
+(or (not x1709) (not x445) (not x439))
+(or (not x1710) (not x444) (not x439))
+(or (not x444) (not x439) x1709)
+(or (not x1710) (not x442) (not x439) x47)
+(or (not x442) (not x439) (not x47) x1710)
+(or (not x1709) (not x442) (not x439))
+(or (not x1710) (not x445) (not x438) x45)
+(or (not x445) (not x438) (not x45) x1710)
+(or (not x1709) (not x445) (not x438))
+(or (not x1710) (not x444) (not x438) x41)
+(or (not x444) (not x438) (not x41) x1710)
+(or (not x1709) (not x444) (not x438))
+(or (not x1710) (not x442) (not x438))
+(or (not x442) (not x438) x1709)
+(or (not x104) (not x108) (not x23) x313)
+(or (not x104) (not x108) (not x24) x320)
+(or (not x102) (not x108) (not x22) x316)
+(or (not x102) (not x108) (not x24) x328)
+(or (not x120) (not x108) (not x22) x324)
+(or (not x120) (not x108) (not x23) x331)
+(or (not x99) (not x80) (not x18) x314)
+(or (not x99) (not x80) (not x19) x321)
+(or (not x96) (not x80) (not x17) x318)
+(or (not x96) (not x80) (not x19) x328)
+(or (not x118) (not x80) (not x17) x327)
+(or (not x118) (not x80) (not x18) x331)
+(or (not x91) (not x71) (not x13) x317)
+(or (not x91) (not x71) (not x14) x321)
+(or (not x87) (not x71) (not x12) x319)
+(or (not x87) (not x71) (not x14) x320)
+(or (not x112) (not x71) (not x12) x327)
+(or (not x112) (not x71) (not x13) x324)
+(or (not x101) (not x60) (not x7) x317)
+(or (not x317) (not x1705) (not x1699) x1708 x1707)
+(or (not x317) (not x1699) x1706 x1705)
+(or (not x317) x1700 x1699)
+(or (not x1707) (not x1705) (not x1699) x317)
+(or (not x1708) (not x1705) (not x1699) x317)
+(or (not x1706) (not x1699) x317)
+(or (not x1700) x317)
+(or (not x1708) (not x1707))
+(or (not x1323) x1708 x1320 x898)
+(or (not x1708) (not x1323) (not x898) x1320)
+(or (not x1708) (not x1320) x1323 x898)
+(or (not x1320) (not x898) x1708 x1323)
+(or (not x1322) x1708 x1319 x898)
+(or (not x1708) (not x1322) (not x898) x1319)
+(or (not x1708) (not x1319) x1322 x898)
+(or (not x1319) (not x898) x1708 x1322)
+(or (not x1321) x1708 x1318 x898)
+(or (not x1708) (not x1321) (not x898) x1318)
+(or (not x1708) (not x1318) x1321 x898)
+(or (not x1318) (not x898) x1708 x1321)
+(or (not x1322) (not x1319) x1707 x1323 x1320)
+(or (not x1321) (not x1318) x1707 x1322 x1319)
+(or x1707 x1321 x1318)
+(or (not x1323) (not x1320) x1707)
+(or (not x1707) (not x1320) x1323)
+(or (not x1707) (not x1323) x1320)
+(or (not x1707) (not x1319) x1322)
+(or (not x1707) (not x1322) x1319)
+(or (not x1707) (not x1318) x1321)
+(or (not x1707) (not x1321) x1318)
+(or (not x34) x1706 x1704 x1251)
+(or (not x1706) (not x1251) (not x34) x1704)
+(or (not x1706) x1704 x1251 x34)
+(or (not x1251) x1706 x1704 x34)
+(or (not x1704) (not x29) x1706 x1703 x1250)
+(or (not x1706) (not x1704) (not x1250) (not x29) x1703)
+(or (not x1706) (not x1704) x1703 x1250 x29)
+(or (not x1704) (not x1250) x1706 x1703 x29)
+(or (not x1703) (not x27) x1706 x1702 x1249)
+(or (not x1706) (not x1703) (not x1249) (not x27) x1702)
+(or (not x1706) (not x1703) x1702 x1249 x27)
+(or (not x1703) (not x1249) x1706 x1702 x27)
+(or (not x1702) (not x1356) x1706 x1701 x1248)
+(or (not x1706) (not x1702) (not x1248) (not x1356) x1701)
+(or (not x1706) (not x1702) x1701 x1248 x1356)
+(or (not x1702) (not x1248) x1706 x1701 x1356)
+(or (not x1706) (not x1705))
+(or (not x1701) x1705)
+(or (not x1705) x1701)
+(or x1704 x1255 x1251)
+(or (not x1255) (not x1251) x1704)
+(or (not x1704) (not x1251) x1255)
+(or (not x1704) (not x1255) x1251)
+(or (not x1704) x1703 x1254 x1250)
+(or (not x1704) (not x1254) (not x1250) x1703)
+(or (not x1703) (not x1250) x1254)
+(or (not x1703) (not x1254) x1250)
+(or (not x1703) x1704)
+(or (not x1703) x1702 x1253 x1249)
+(or (not x1703) (not x1253) (not x1249) x1702)
+(or (not x1702) (not x1249) x1253)
+(or (not x1702) (not x1253) x1249)
+(or (not x1702) x1703)
+(or (not x1702) x1701 x1252 x1248)
+(or (not x1702) (not x1252) (not x1248) x1701)
+(or (not x1701) (not x1248) x1252)
+(or (not x1701) (not x1252) x1248)
+(or (not x1701) x1702)
+(or (not x1700) (not x436) (not x432))
+(or (not x436) (not x432) x1699)
+(or (not x1700) (not x436) (not x430) x55)
+(or (not x436) (not x430) (not x55) x1700)
+(or (not x1699) (not x436) (not x430))
+(or (not x1700) (not x436) (not x429) x53)
+(or (not x436) (not x429) (not x53) x1700)
+(or (not x1699) (not x436) (not x429))
+(or (not x1700) (not x435) (not x432) x51)
+(or (not x435) (not x432) (not x51) x1700)
+(or (not x1699) (not x435) (not x432))
+(or (not x1700) (not x435) (not x430))
+(or (not x435) (not x430) x1699)
+(or (not x1700) (not x435) (not x429) x47)
+(or (not x435) (not x429) (not x47) x1700)
+(or (not x1699) (not x435) (not x429))
+(or (not x1700) (not x433) (not x432) x45)
+(or (not x433) (not x432) (not x45) x1700)
+(or (not x1699) (not x433) (not x432))
+(or (not x1700) (not x433) (not x430) x41)
+(or (not x433) (not x430) (not x41) x1700)
+(or (not x1699) (not x433) (not x430))
+(or (not x1700) (not x433) (not x429))
+(or (not x433) (not x429) x1699)
+(or (not x101) (not x60) (not x8) x314)
+(or (not x314) (not x1695) (not x1689) x1698 x1697)
+(or (not x314) (not x1689) x1696 x1695)
+(or (not x314) x1690 x1689)
+(or (not x1697) (not x1695) (not x1689) x314)
+(or (not x1698) (not x1695) (not x1689) x314)
+(or (not x1696) (not x1689) x314)
+(or (not x1690) x314)
+(or (not x1698) (not x1697))
+(or (not x1323) x1698 x1317 x898)
+(or (not x1698) (not x1323) (not x898) x1317)
+(or (not x1698) (not x1317) x1323 x898)
+(or (not x1317) (not x898) x1698 x1323)
+(or (not x1322) x1698 x1316 x898)
+(or (not x1698) (not x1322) (not x898) x1316)
+(or (not x1698) (not x1316) x1322 x898)
+(or (not x1316) (not x898) x1698 x1322)
+(or (not x1321) x1698 x1315 x898)
+(or (not x1698) (not x1321) (not x898) x1315)
+(or (not x1698) (not x1315) x1321 x898)
+(or (not x1315) (not x898) x1698 x1321)
+(or (not x1322) (not x1316) x1697 x1323 x1317)
+(or (not x1321) (not x1315) x1697 x1322 x1316)
+(or x1697 x1321 x1315)
+(or (not x1323) (not x1317) x1697)
+(or (not x1697) (not x1317) x1323)
+(or (not x1697) (not x1323) x1317)
+(or (not x1697) (not x1316) x1322)
+(or (not x1697) (not x1322) x1316)
+(or (not x1697) (not x1315) x1321)
+(or (not x1697) (not x1321) x1315)
+(or (not x34) x1696 x1694 x1247)
+(or (not x1696) (not x1247) (not x34) x1694)
+(or (not x1696) x1694 x1247 x34)
+(or (not x1247) x1696 x1694 x34)
+(or (not x1694) (not x29) x1696 x1693 x1246)
+(or (not x1696) (not x1694) (not x1246) (not x29) x1693)
+(or (not x1696) (not x1694) x1693 x1246 x29)
+(or (not x1694) (not x1246) x1696 x1693 x29)
+(or (not x1693) (not x27) x1696 x1692 x1245)
+(or (not x1696) (not x1693) (not x1245) (not x27) x1692)
+(or (not x1696) (not x1693) x1692 x1245 x27)
+(or (not x1693) (not x1245) x1696 x1692 x27)
+(or (not x1692) (not x1356) x1696 x1691 x1244)
+(or (not x1696) (not x1692) (not x1244) (not x1356) x1691)
+(or (not x1696) (not x1692) x1691 x1244 x1356)
+(or (not x1692) (not x1244) x1696 x1691 x1356)
+(or (not x1696) (not x1695))
+(or (not x1691) x1695)
+(or (not x1695) x1691)
+(or x1694 x1255 x1247)
+(or (not x1255) (not x1247) x1694)
+(or (not x1694) (not x1247) x1255)
+(or (not x1694) (not x1255) x1247)
+(or (not x1694) x1693 x1254 x1246)
+(or (not x1694) (not x1254) (not x1246) x1693)
+(or (not x1693) (not x1246) x1254)
+(or (not x1693) (not x1254) x1246)
+(or (not x1693) x1694)
+(or (not x1693) x1692 x1253 x1245)
+(or (not x1693) (not x1253) (not x1245) x1692)
+(or (not x1692) (not x1245) x1253)
+(or (not x1692) (not x1253) x1245)
+(or (not x1692) x1693)
+(or (not x1692) x1691 x1252 x1244)
+(or (not x1692) (not x1252) (not x1244) x1691)
+(or (not x1691) (not x1244) x1252)
+(or (not x1691) (not x1252) x1244)
+(or (not x1691) x1692)
+(or (not x1690) (not x436) (not x427))
+(or (not x436) (not x427) x1689)
+(or (not x1690) (not x436) (not x426) x55)
+(or (not x436) (not x426) (not x55) x1690)
+(or (not x1689) (not x436) (not x426))
+(or (not x1690) (not x436) (not x424) x53)
+(or (not x436) (not x424) (not x53) x1690)
+(or (not x1689) (not x436) (not x424))
+(or (not x1690) (not x435) (not x427) x51)
+(or (not x435) (not x427) (not x51) x1690)
+(or (not x1689) (not x435) (not x427))
+(or (not x1690) (not x435) (not x426))
+(or (not x435) (not x426) x1689)
+(or (not x1690) (not x435) (not x424) x47)
+(or (not x435) (not x424) (not x47) x1690)
+(or (not x1689) (not x435) (not x424))
+(or (not x1690) (not x433) (not x427) x45)
+(or (not x433) (not x427) (not x45) x1690)
+(or (not x1689) (not x433) (not x427))
+(or (not x1690) (not x433) (not x426) x41)
+(or (not x433) (not x426) (not x41) x1690)
+(or (not x1689) (not x433) (not x426))
+(or (not x1690) (not x433) (not x424))
+(or (not x433) (not x424) x1689)
+(or (not x321) (not x1685) (not x1679) x1688 x1687)
+(or (not x321) (not x1679) x1686 x1685)
+(or (not x321) x1680 x1679)
+(or (not x1687) (not x1685) (not x1679) x321)
+(or (not x1688) (not x1685) (not x1679) x321)
+(or (not x1686) (not x1679) x321)
+(or (not x1680) x321)
+(or (not x1688) (not x1687))
+(or (not x1323) x1688 x1314 x898)
+(or (not x1688) (not x1323) (not x898) x1314)
+(or (not x1688) (not x1314) x1323 x898)
+(or (not x1314) (not x898) x1688 x1323)
+(or (not x1322) x1688 x1313 x898)
+(or (not x1688) (not x1322) (not x898) x1313)
+(or (not x1688) (not x1313) x1322 x898)
+(or (not x1313) (not x898) x1688 x1322)
+(or (not x1321) x1688 x1312 x898)
+(or (not x1688) (not x1321) (not x898) x1312)
+(or (not x1688) (not x1312) x1321 x898)
+(or (not x1312) (not x898) x1688 x1321)
+(or (not x1322) (not x1313) x1687 x1323 x1314)
+(or (not x1321) (not x1312) x1687 x1322 x1313)
+(or x1687 x1321 x1312)
+(or (not x1323) (not x1314) x1687)
+(or (not x1687) (not x1314) x1323)
+(or (not x1687) (not x1323) x1314)
+(or (not x1687) (not x1313) x1322)
+(or (not x1687) (not x1322) x1313)
+(or (not x1687) (not x1312) x1321)
+(or (not x1687) (not x1321) x1312)
+(or (not x34) x1686 x1684 x1243)
+(or (not x1686) (not x1243) (not x34) x1684)
+(or (not x1686) x1684 x1243 x34)
+(or (not x1243) x1686 x1684 x34)
+(or (not x1684) (not x29) x1686 x1683 x1242)
+(or (not x1686) (not x1684) (not x1242) (not x29) x1683)
+(or (not x1686) (not x1684) x1683 x1242 x29)
+(or (not x1684) (not x1242) x1686 x1683 x29)
+(or (not x1683) (not x27) x1686 x1682 x1240)
+(or (not x1686) (not x1683) (not x1240) (not x27) x1682)
+(or (not x1686) (not x1683) x1682 x1240 x27)
+(or (not x1683) (not x1240) x1686 x1682 x27)
+(or (not x1682) (not x1356) x1686 x1681 x1241)
+(or (not x1686) (not x1682) (not x1241) (not x1356) x1681)
+(or (not x1686) (not x1682) x1681 x1241 x1356)
+(or (not x1682) (not x1241) x1686 x1681 x1356)
+(or (not x1686) (not x1685))
+(or (not x1681) x1685)
+(or (not x1685) x1681)
+(or x1684 x1255 x1243)
+(or (not x1255) (not x1243) x1684)
+(or (not x1684) (not x1243) x1255)
+(or (not x1684) (not x1255) x1243)
+(or (not x1684) x1683 x1254 x1242)
+(or (not x1684) (not x1254) (not x1242) x1683)
+(or (not x1683) (not x1242) x1254)
+(or (not x1683) (not x1254) x1242)
+(or (not x1683) x1684)
+(or (not x1683) x1682 x1253 x1240)
+(or (not x1683) (not x1253) (not x1240) x1682)
+(or (not x1682) (not x1240) x1253)
+(or (not x1682) (not x1253) x1240)
+(or (not x1682) x1683)
+(or (not x1682) x1681 x1252 x1241)
+(or (not x1682) (not x1252) (not x1241) x1681)
+(or (not x1681) (not x1241) x1252)
+(or (not x1681) (not x1252) x1241)
+(or (not x1681) x1682)
+(or (not x1680) (not x436) (not x423))
+(or (not x436) (not x423) x1679)
+(or (not x1680) (not x436) (not x421) x55)
+(or (not x436) (not x421) (not x55) x1680)
+(or (not x1679) (not x436) (not x421))
+(or (not x1680) (not x436) (not x420) x53)
+(or (not x436) (not x420) (not x53) x1680)
+(or (not x1679) (not x436) (not x420))
+(or (not x1680) (not x435) (not x423) x51)
+(or (not x435) (not x423) (not x51) x1680)
+(or (not x1679) (not x435) (not x423))
+(or (not x1680) (not x435) (not x421))
+(or (not x435) (not x421) x1679)
+(or (not x1680) (not x435) (not x420) x47)
+(or (not x435) (not x420) (not x47) x1680)
+(or (not x1679) (not x435) (not x420))
+(or (not x1680) (not x433) (not x423) x45)
+(or (not x433) (not x423) (not x45) x1680)
+(or (not x1679) (not x433) (not x423))
+(or (not x1680) (not x433) (not x421) x41)
+(or (not x433) (not x421) (not x41) x1680)
+(or (not x1679) (not x433) (not x421))
+(or (not x1680) (not x433) (not x420))
+(or (not x433) (not x420) x1679)
+(or (not x95) (not x60) (not x6) x319)
+(or (not x319) (not x1675) (not x1669) x1678 x1677)
+(or (not x319) (not x1669) x1676 x1675)
+(or (not x319) x1670 x1669)
+(or (not x1677) (not x1675) (not x1669) x319)
+(or (not x1678) (not x1675) (not x1669) x319)
+(or (not x1676) (not x1669) x319)
+(or (not x1670) x319)
+(or (not x1678) (not x1677))
+(or (not x1320) x1678 x1323 x897)
+(or (not x1678) (not x1320) (not x897) x1323)
+(or (not x1678) (not x1323) x1320 x897)
+(or (not x1323) (not x897) x1678 x1320)
+(or (not x1319) x1678 x1322 x897)
+(or (not x1678) (not x1319) (not x897) x1322)
+(or (not x1678) (not x1322) x1319 x897)
+(or (not x1322) (not x897) x1678 x1319)
+(or (not x1318) x1678 x1321 x897)
+(or (not x1678) (not x1318) (not x897) x1321)
+(or (not x1678) (not x1321) x1318 x897)
+(or (not x1321) (not x897) x1678 x1318)
+(or (not x1322) (not x1319) x1677 x1323 x1320)
+(or (not x1321) (not x1318) x1677 x1322 x1319)
+(or x1677 x1321 x1318)
+(or (not x1323) (not x1320) x1677)
+(or (not x1677) (not x1323) x1320)
+(or (not x1677) (not x1320) x1323)
+(or (not x1677) (not x1322) x1319)
+(or (not x1677) (not x1319) x1322)
+(or (not x1677) (not x1321) x1318)
+(or (not x1677) (not x1318) x1321)
+(or (not x34) x1676 x1674 x1255)
+(or (not x1676) (not x1255) (not x34) x1674)
+(or (not x1676) x1674 x1255 x34)
+(or (not x1255) x1676 x1674 x34)
+(or (not x1674) (not x29) x1676 x1673 x1254)
+(or (not x1676) (not x1674) (not x1254) (not x29) x1673)
+(or (not x1676) (not x1674) x1673 x1254 x29)
+(or (not x1674) (not x1254) x1676 x1673 x29)
+(or (not x1673) (not x27) x1676 x1672 x1253)
+(or (not x1676) (not x1673) (not x1253) (not x27) x1672)
+(or (not x1676) (not x1673) x1672 x1253 x27)
+(or (not x1673) (not x1253) x1676 x1672 x27)
+(or (not x1672) (not x1356) x1676 x1671 x1252)
+(or (not x1676) (not x1672) (not x1252) (not x1356) x1671)
+(or (not x1676) (not x1672) x1671 x1252 x1356)
+(or (not x1672) (not x1252) x1676 x1671 x1356)
+(or (not x1676) (not x1675))
+(or (not x1671) x1675)
+(or (not x1675) x1671)
+(or x1674 x1255 x1251)
+(or (not x1255) (not x1251) x1674)
+(or (not x1674) (not x1255) x1251)
+(or (not x1674) (not x1251) x1255)
+(or (not x1674) x1673 x1254 x1250)
+(or (not x1674) (not x1254) (not x1250) x1673)
+(or (not x1673) (not x1254) x1250)
+(or (not x1673) (not x1250) x1254)
+(or (not x1673) x1674)
+(or (not x1673) x1672 x1253 x1249)
+(or (not x1673) (not x1253) (not x1249) x1672)
+(or (not x1672) (not x1253) x1249)
+(or (not x1672) (not x1249) x1253)
+(or (not x1672) x1673)
+(or (not x1672) x1671 x1252 x1248)
+(or (not x1672) (not x1252) (not x1248) x1671)
+(or (not x1671) (not x1252) x1248)
+(or (not x1671) (not x1248) x1252)
+(or (not x1671) x1672)
+(or (not x1670) (not x436) (not x432))
+(or (not x436) (not x432) x1669)
+(or (not x1670) (not x435) (not x432) x55)
+(or (not x435) (not x432) (not x55) x1670)
+(or (not x1669) (not x435) (not x432))
+(or (not x1670) (not x433) (not x432) x53)
+(or (not x433) (not x432) (not x53) x1670)
+(or (not x1669) (not x433) (not x432))
+(or (not x1670) (not x436) (not x430) x51)
+(or (not x436) (not x430) (not x51) x1670)
+(or (not x1669) (not x436) (not x430))
+(or (not x1670) (not x435) (not x430))
+(or (not x435) (not x430) x1669)
+(or (not x1670) (not x433) (not x430) x47)
+(or (not x433) (not x430) (not x47) x1670)
+(or (not x1669) (not x433) (not x430))
+(or (not x1670) (not x436) (not x429) x45)
+(or (not x436) (not x429) (not x45) x1670)
+(or (not x1669) (not x436) (not x429))
+(or (not x1670) (not x435) (not x429) x41)
+(or (not x435) (not x429) (not x41) x1670)
+(or (not x1669) (not x435) (not x429))
+(or (not x1670) (not x433) (not x429))
+(or (not x433) (not x429) x1669)
+(or (not x95) (not x60) (not x8) x313)
+(or (not x313) (not x1665) (not x1659) x1668 x1667)
+(or (not x313) (not x1659) x1666 x1665)
+(or (not x313) x1660 x1659)
+(or (not x1667) (not x1665) (not x1659) x313)
+(or (not x1668) (not x1665) (not x1659) x313)
+(or (not x1666) (not x1659) x313)
+(or (not x1660) x313)
+(or (not x1668) (not x1667))
+(or (not x1320) x1668 x1317 x897)
+(or (not x1668) (not x1320) (not x897) x1317)
+(or (not x1668) (not x1317) x1320 x897)
+(or (not x1317) (not x897) x1668 x1320)
+(or (not x1319) x1668 x1316 x897)
+(or (not x1668) (not x1319) (not x897) x1316)
+(or (not x1668) (not x1316) x1319 x897)
+(or (not x1316) (not x897) x1668 x1319)
+(or (not x1318) x1668 x1315 x897)
+(or (not x1668) (not x1318) (not x897) x1315)
+(or (not x1668) (not x1315) x1318 x897)
+(or (not x1315) (not x897) x1668 x1318)
+(or (not x1319) (not x1316) x1667 x1320 x1317)
+(or (not x1318) (not x1315) x1667 x1319 x1316)
+(or x1667 x1318 x1315)
+(or (not x1320) (not x1317) x1667)
+(or (not x1667) (not x1317) x1320)
+(or (not x1667) (not x1320) x1317)
+(or (not x1667) (not x1316) x1319)
+(or (not x1667) (not x1319) x1316)
+(or (not x1667) (not x1315) x1318)
+(or (not x1667) (not x1318) x1315)
+(or (not x34) x1666 x1664 x1247)
+(or (not x1666) (not x1247) (not x34) x1664)
+(or (not x1666) x1664 x1247 x34)
+(or (not x1247) x1666 x1664 x34)
+(or (not x1664) (not x29) x1666 x1663 x1246)
+(or (not x1666) (not x1664) (not x1246) (not x29) x1663)
+(or (not x1666) (not x1664) x1663 x1246 x29)
+(or (not x1664) (not x1246) x1666 x1663 x29)
+(or (not x1663) (not x27) x1666 x1662 x1245)
+(or (not x1666) (not x1663) (not x1245) (not x27) x1662)
+(or (not x1666) (not x1663) x1662 x1245 x27)
+(or (not x1663) (not x1245) x1666 x1662 x27)
+(or (not x1662) (not x1356) x1666 x1661 x1244)
+(or (not x1666) (not x1662) (not x1244) (not x1356) x1661)
+(or (not x1666) (not x1662) x1661 x1244 x1356)
+(or (not x1662) (not x1244) x1666 x1661 x1356)
+(or (not x1666) (not x1665))
+(or (not x1661) x1665)
+(or (not x1665) x1661)
+(or x1664 x1251 x1247)
+(or (not x1251) (not x1247) x1664)
+(or (not x1664) (not x1247) x1251)
+(or (not x1664) (not x1251) x1247)
+(or (not x1664) x1663 x1250 x1246)
+(or (not x1664) (not x1250) (not x1246) x1663)
+(or (not x1663) (not x1246) x1250)
+(or (not x1663) (not x1250) x1246)
+(or (not x1663) x1664)
+(or (not x1663) x1662 x1249 x1245)
+(or (not x1663) (not x1249) (not x1245) x1662)
+(or (not x1662) (not x1245) x1249)
+(or (not x1662) (not x1249) x1245)
+(or (not x1662) x1663)
+(or (not x1662) x1661 x1248 x1244)
+(or (not x1662) (not x1248) (not x1244) x1661)
+(or (not x1661) (not x1244) x1248)
+(or (not x1661) (not x1248) x1244)
+(or (not x1661) x1662)
+(or (not x1660) (not x432) (not x427))
+(or (not x432) (not x427) x1659)
+(or (not x1660) (not x432) (not x426) x55)
+(or (not x432) (not x426) (not x55) x1660)
+(or (not x1659) (not x432) (not x426))
+(or (not x1660) (not x432) (not x424) x53)
+(or (not x432) (not x424) (not x53) x1660)
+(or (not x1659) (not x432) (not x424))
+(or (not x1660) (not x430) (not x427) x51)
+(or (not x430) (not x427) (not x51) x1660)
+(or (not x1659) (not x430) (not x427))
+(or (not x1660) (not x430) (not x426))
+(or (not x430) (not x426) x1659)
+(or (not x1660) (not x430) (not x424) x47)
+(or (not x430) (not x424) (not x47) x1660)
+(or (not x1659) (not x430) (not x424))
+(or (not x1660) (not x429) (not x427) x45)
+(or (not x429) (not x427) (not x45) x1660)
+(or (not x1659) (not x429) (not x427))
+(or (not x1660) (not x429) (not x426) x41)
+(or (not x429) (not x426) (not x41) x1660)
+(or (not x1659) (not x429) (not x426))
+(or (not x1660) (not x429) (not x424))
+(or (not x429) (not x424) x1659)
+(or (not x320) (not x1655) (not x1649) x1658 x1657)
+(or (not x320) (not x1649) x1656 x1655)
+(or (not x320) x1650 x1649)
+(or (not x1657) (not x1655) (not x1649) x320)
+(or (not x1658) (not x1655) (not x1649) x320)
+(or (not x1656) (not x1649) x320)
+(or (not x1650) x320)
+(or (not x1658) (not x1657))
+(or (not x1320) x1658 x1314 x897)
+(or (not x1658) (not x1320) (not x897) x1314)
+(or (not x1658) (not x1314) x1320 x897)
+(or (not x1314) (not x897) x1658 x1320)
+(or (not x1319) x1658 x1313 x897)
+(or (not x1658) (not x1319) (not x897) x1313)
+(or (not x1658) (not x1313) x1319 x897)
+(or (not x1313) (not x897) x1658 x1319)
+(or (not x1318) x1658 x1312 x897)
+(or (not x1658) (not x1318) (not x897) x1312)
+(or (not x1658) (not x1312) x1318 x897)
+(or (not x1312) (not x897) x1658 x1318)
+(or (not x1319) (not x1313) x1657 x1320 x1314)
+(or (not x1318) (not x1312) x1657 x1319 x1313)
+(or x1657 x1318 x1312)
+(or (not x1320) (not x1314) x1657)
+(or (not x1657) (not x1314) x1320)
+(or (not x1657) (not x1320) x1314)
+(or (not x1657) (not x1313) x1319)
+(or (not x1657) (not x1319) x1313)
+(or (not x1657) (not x1312) x1318)
+(or (not x1657) (not x1318) x1312)
+(or (not x34) x1656 x1654 x1243)
+(or (not x1656) (not x1243) (not x34) x1654)
+(or (not x1656) x1654 x1243 x34)
+(or (not x1243) x1656 x1654 x34)
+(or (not x1654) (not x29) x1656 x1653 x1242)
+(or (not x1656) (not x1654) (not x1242) (not x29) x1653)
+(or (not x1656) (not x1654) x1653 x1242 x29)
+(or (not x1654) (not x1242) x1656 x1653 x29)
+(or (not x1653) (not x27) x1656 x1652 x1240)
+(or (not x1656) (not x1653) (not x1240) (not x27) x1652)
+(or (not x1656) (not x1653) x1652 x1240 x27)
+(or (not x1653) (not x1240) x1656 x1652 x27)
+(or (not x1652) (not x1356) x1656 x1651 x1241)
+(or (not x1656) (not x1652) (not x1241) (not x1356) x1651)
+(or (not x1656) (not x1652) x1651 x1241 x1356)
+(or (not x1652) (not x1241) x1656 x1651 x1356)
+(or (not x1656) (not x1655))
+(or (not x1651) x1655)
+(or (not x1655) x1651)
+(or x1654 x1251 x1243)
+(or (not x1251) (not x1243) x1654)
+(or (not x1654) (not x1243) x1251)
+(or (not x1654) (not x1251) x1243)
+(or (not x1654) x1653 x1250 x1242)
+(or (not x1654) (not x1250) (not x1242) x1653)
+(or (not x1653) (not x1242) x1250)
+(or (not x1653) (not x1250) x1242)
+(or (not x1653) x1654)
+(or (not x1653) x1652 x1249 x1240)
+(or (not x1653) (not x1249) (not x1240) x1652)
+(or (not x1652) (not x1240) x1249)
+(or (not x1652) (not x1249) x1240)
+(or (not x1652) x1653)
+(or (not x1652) x1651 x1248 x1241)
+(or (not x1652) (not x1248) (not x1241) x1651)
+(or (not x1651) (not x1241) x1248)
+(or (not x1651) (not x1248) x1241)
+(or (not x1651) x1652)
+(or (not x1650) (not x432) (not x423))
+(or (not x432) (not x423) x1649)
+(or (not x1650) (not x432) (not x421) x55)
+(or (not x432) (not x421) (not x55) x1650)
+(or (not x1649) (not x432) (not x421))
+(or (not x1650) (not x432) (not x420) x53)
+(or (not x432) (not x420) (not x53) x1650)
+(or (not x1649) (not x432) (not x420))
+(or (not x1650) (not x430) (not x423) x51)
+(or (not x430) (not x423) (not x51) x1650)
+(or (not x1649) (not x430) (not x423))
+(or (not x1650) (not x430) (not x421))
+(or (not x430) (not x421) x1649)
+(or (not x1650) (not x430) (not x420) x47)
+(or (not x430) (not x420) (not x47) x1650)
+(or (not x1649) (not x430) (not x420))
+(or (not x1650) (not x429) (not x423) x45)
+(or (not x429) (not x423) (not x45) x1650)
+(or (not x1649) (not x429) (not x423))
+(or (not x1650) (not x429) (not x421) x41)
+(or (not x429) (not x421) (not x41) x1650)
+(or (not x1649) (not x429) (not x421))
+(or (not x1650) (not x429) (not x420))
+(or (not x429) (not x420) x1649)
+(or (not x82) (not x60) (not x6) x318)
+(or (not x318) (not x1645) (not x1639) x1648 x1647)
+(or (not x318) (not x1639) x1646 x1645)
+(or (not x318) x1640 x1639)
+(or (not x1647) (not x1645) (not x1639) x318)
+(or (not x1648) (not x1645) (not x1639) x318)
+(or (not x1646) (not x1639) x318)
+(or (not x1640) x318)
+(or (not x1648) (not x1647))
+(or (not x1317) x1648 x1323 x896)
+(or (not x1648) (not x1317) (not x896) x1323)
+(or (not x1648) (not x1323) x1317 x896)
+(or (not x1323) (not x896) x1648 x1317)
+(or (not x1316) x1648 x1322 x896)
+(or (not x1648) (not x1316) (not x896) x1322)
+(or (not x1648) (not x1322) x1316 x896)
+(or (not x1322) (not x896) x1648 x1316)
+(or (not x1315) x1648 x1321 x896)
+(or (not x1648) (not x1315) (not x896) x1321)
+(or (not x1648) (not x1321) x1315 x896)
+(or (not x1321) (not x896) x1648 x1315)
+(or (not x1322) (not x1316) x1647 x1323 x1317)
+(or (not x1321) (not x1315) x1647 x1322 x1316)
+(or x1647 x1321 x1315)
+(or (not x1323) (not x1317) x1647)
+(or (not x1647) (not x1323) x1317)
+(or (not x1647) (not x1317) x1323)
+(or (not x1647) (not x1322) x1316)
+(or (not x1647) (not x1316) x1322)
+(or (not x1647) (not x1321) x1315)
+(or (not x1647) (not x1315) x1321)
+(or (not x34) x1646 x1644 x1255)
+(or (not x1646) (not x1255) (not x34) x1644)
+(or (not x1646) x1644 x1255 x34)
+(or (not x1255) x1646 x1644 x34)
+(or (not x1644) (not x29) x1646 x1643 x1254)
+(or (not x1646) (not x1644) (not x1254) (not x29) x1643)
+(or (not x1646) (not x1644) x1643 x1254 x29)
+(or (not x1644) (not x1254) x1646 x1643 x29)
+(or (not x1643) (not x27) x1646 x1642 x1253)
+(or (not x1646) (not x1643) (not x1253) (not x27) x1642)
+(or (not x1646) (not x1643) x1642 x1253 x27)
+(or (not x1643) (not x1253) x1646 x1642 x27)
+(or (not x1642) (not x1356) x1646 x1641 x1252)
+(or (not x1646) (not x1642) (not x1252) (not x1356) x1641)
+(or (not x1646) (not x1642) x1641 x1252 x1356)
+(or (not x1642) (not x1252) x1646 x1641 x1356)
+(or (not x1646) (not x1645))
+(or (not x1641) x1645)
+(or (not x1645) x1641)
+(or x1644 x1255 x1247)
+(or (not x1255) (not x1247) x1644)
+(or (not x1644) (not x1255) x1247)
+(or (not x1644) (not x1247) x1255)
+(or (not x1644) x1643 x1254 x1246)
+(or (not x1644) (not x1254) (not x1246) x1643)
+(or (not x1643) (not x1254) x1246)
+(or (not x1643) (not x1246) x1254)
+(or (not x1643) x1644)
+(or (not x1643) x1642 x1253 x1245)
+(or (not x1643) (not x1253) (not x1245) x1642)
+(or (not x1642) (not x1253) x1245)
+(or (not x1642) (not x1245) x1253)
+(or (not x1642) x1643)
+(or (not x1642) x1641 x1252 x1244)
+(or (not x1642) (not x1252) (not x1244) x1641)
+(or (not x1641) (not x1252) x1244)
+(or (not x1641) (not x1244) x1252)
+(or (not x1641) x1642)
+(or (not x1640) (not x436) (not x427))
+(or (not x436) (not x427) x1639)
+(or (not x1640) (not x435) (not x427) x55)
+(or (not x435) (not x427) (not x55) x1640)
+(or (not x1639) (not x435) (not x427))
+(or (not x1640) (not x433) (not x427) x53)
+(or (not x433) (not x427) (not x53) x1640)
+(or (not x1639) (not x433) (not x427))
+(or (not x1640) (not x436) (not x426) x51)
+(or (not x436) (not x426) (not x51) x1640)
+(or (not x1639) (not x436) (not x426))
+(or (not x1640) (not x435) (not x426))
+(or (not x435) (not x426) x1639)
+(or (not x1640) (not x433) (not x426) x47)
+(or (not x433) (not x426) (not x47) x1640)
+(or (not x1639) (not x433) (not x426))
+(or (not x1640) (not x436) (not x424) x45)
+(or (not x436) (not x424) (not x45) x1640)
+(or (not x1639) (not x436) (not x424))
+(or (not x1640) (not x435) (not x424) x41)
+(or (not x435) (not x424) (not x41) x1640)
+(or (not x1639) (not x435) (not x424))
+(or (not x1640) (not x433) (not x424))
+(or (not x433) (not x424) x1639)
+(or (not x82) (not x60) (not x7) x316)
+(or (not x316) (not x1635) (not x1629) x1638 x1637)
+(or (not x316) (not x1629) x1636 x1635)
+(or (not x316) x1630 x1629)
+(or (not x1637) (not x1635) (not x1629) x316)
+(or (not x1638) (not x1635) (not x1629) x316)
+(or (not x1636) (not x1629) x316)
+(or (not x1630) x316)
+(or (not x1638) (not x1637))
+(or (not x1317) x1638 x1320 x896)
+(or (not x1638) (not x1317) (not x896) x1320)
+(or (not x1638) (not x1320) x1317 x896)
+(or (not x1320) (not x896) x1638 x1317)
+(or (not x1316) x1638 x1319 x896)
+(or (not x1638) (not x1316) (not x896) x1319)
+(or (not x1638) (not x1319) x1316 x896)
+(or (not x1319) (not x896) x1638 x1316)
+(or (not x1315) x1638 x1318 x896)
+(or (not x1638) (not x1315) (not x896) x1318)
+(or (not x1638) (not x1318) x1315 x896)
+(or (not x1318) (not x896) x1638 x1315)
+(or (not x1319) (not x1316) x1637 x1320 x1317)
+(or (not x1318) (not x1315) x1637 x1319 x1316)
+(or x1637 x1318 x1315)
+(or (not x1320) (not x1317) x1637)
+(or (not x1637) (not x1320) x1317)
+(or (not x1637) (not x1317) x1320)
+(or (not x1637) (not x1319) x1316)
+(or (not x1637) (not x1316) x1319)
+(or (not x1637) (not x1318) x1315)
+(or (not x1637) (not x1315) x1318)
+(or (not x34) x1636 x1634 x1251)
+(or (not x1636) (not x1251) (not x34) x1634)
+(or (not x1636) x1634 x1251 x34)
+(or (not x1251) x1636 x1634 x34)
+(or (not x1634) (not x29) x1636 x1633 x1250)
+(or (not x1636) (not x1634) (not x1250) (not x29) x1633)
+(or (not x1636) (not x1634) x1633 x1250 x29)
+(or (not x1634) (not x1250) x1636 x1633 x29)
+(or (not x1633) (not x27) x1636 x1632 x1249)
+(or (not x1636) (not x1633) (not x1249) (not x27) x1632)
+(or (not x1636) (not x1633) x1632 x1249 x27)
+(or (not x1633) (not x1249) x1636 x1632 x27)
+(or (not x1632) (not x1356) x1636 x1631 x1248)
+(or (not x1636) (not x1632) (not x1248) (not x1356) x1631)
+(or (not x1636) (not x1632) x1631 x1248 x1356)
+(or (not x1632) (not x1248) x1636 x1631 x1356)
+(or (not x1636) (not x1635))
+(or (not x1631) x1635)
+(or (not x1635) x1631)
+(or x1634 x1251 x1247)
+(or (not x1251) (not x1247) x1634)
+(or (not x1634) (not x1251) x1247)
+(or (not x1634) (not x1247) x1251)
+(or (not x1634) x1633 x1250 x1246)
+(or (not x1634) (not x1250) (not x1246) x1633)
+(or (not x1633) (not x1250) x1246)
+(or (not x1633) (not x1246) x1250)
+(or (not x1633) x1634)
+(or (not x1633) x1632 x1249 x1245)
+(or (not x1633) (not x1249) (not x1245) x1632)
+(or (not x1632) (not x1249) x1245)
+(or (not x1632) (not x1245) x1249)
+(or (not x1632) x1633)
+(or (not x1632) x1631 x1248 x1244)
+(or (not x1632) (not x1248) (not x1244) x1631)
+(or (not x1631) (not x1248) x1244)
+(or (not x1631) (not x1244) x1248)
+(or (not x1631) x1632)
+(or (not x1630) (not x432) (not x427))
+(or (not x432) (not x427) x1629)
+(or (not x1630) (not x430) (not x427) x55)
+(or (not x430) (not x427) (not x55) x1630)
+(or (not x1629) (not x430) (not x427))
+(or (not x1630) (not x429) (not x427) x53)
+(or (not x429) (not x427) (not x53) x1630)
+(or (not x1629) (not x429) (not x427))
+(or (not x1630) (not x432) (not x426) x51)
+(or (not x432) (not x426) (not x51) x1630)
+(or (not x1629) (not x432) (not x426))
+(or (not x1630) (not x430) (not x426))
+(or (not x430) (not x426) x1629)
+(or (not x1630) (not x429) (not x426) x47)
+(or (not x429) (not x426) (not x47) x1630)
+(or (not x1629) (not x429) (not x426))
+(or (not x1630) (not x432) (not x424) x45)
+(or (not x432) (not x424) (not x45) x1630)
+(or (not x1629) (not x432) (not x424))
+(or (not x1630) (not x430) (not x424) x41)
+(or (not x430) (not x424) (not x41) x1630)
+(or (not x1629) (not x430) (not x424))
+(or (not x1630) (not x429) (not x424))
+(or (not x429) (not x424) x1629)
+(or (not x328) (not x1625) (not x1619) x1628 x1627)
+(or (not x328) (not x1619) x1626 x1625)
+(or (not x328) x1620 x1619)
+(or (not x1627) (not x1625) (not x1619) x328)
+(or (not x1628) (not x1625) (not x1619) x328)
+(or (not x1626) (not x1619) x328)
+(or (not x1620) x328)
+(or (not x1628) (not x1627))
+(or (not x1317) x1628 x1314 x896)
+(or (not x1628) (not x1317) (not x896) x1314)
+(or (not x1628) (not x1314) x1317 x896)
+(or (not x1314) (not x896) x1628 x1317)
+(or (not x1316) x1628 x1313 x896)
+(or (not x1628) (not x1316) (not x896) x1313)
+(or (not x1628) (not x1313) x1316 x896)
+(or (not x1313) (not x896) x1628 x1316)
+(or (not x1315) x1628 x1312 x896)
+(or (not x1628) (not x1315) (not x896) x1312)
+(or (not x1628) (not x1312) x1315 x896)
+(or (not x1312) (not x896) x1628 x1315)
+(or (not x1316) (not x1313) x1627 x1317 x1314)
+(or (not x1315) (not x1312) x1627 x1316 x1313)
+(or x1627 x1315 x1312)
+(or (not x1317) (not x1314) x1627)
+(or (not x1627) (not x1314) x1317)
+(or (not x1627) (not x1317) x1314)
+(or (not x1627) (not x1313) x1316)
+(or (not x1627) (not x1316) x1313)
+(or (not x1627) (not x1312) x1315)
+(or (not x1627) (not x1315) x1312)
+(or (not x34) x1626 x1624 x1243)
+(or (not x1626) (not x1243) (not x34) x1624)
+(or (not x1626) x1624 x1243 x34)
+(or (not x1243) x1626 x1624 x34)
+(or (not x1624) (not x29) x1626 x1623 x1242)
+(or (not x1626) (not x1624) (not x1242) (not x29) x1623)
+(or (not x1626) (not x1624) x1623 x1242 x29)
+(or (not x1624) (not x1242) x1626 x1623 x29)
+(or (not x1623) (not x27) x1626 x1622 x1240)
+(or (not x1626) (not x1623) (not x1240) (not x27) x1622)
+(or (not x1626) (not x1623) x1622 x1240 x27)
+(or (not x1623) (not x1240) x1626 x1622 x27)
+(or (not x1622) (not x1356) x1626 x1621 x1241)
+(or (not x1626) (not x1622) (not x1241) (not x1356) x1621)
+(or (not x1626) (not x1622) x1621 x1241 x1356)
+(or (not x1622) (not x1241) x1626 x1621 x1356)
+(or (not x1626) (not x1625))
+(or (not x1621) x1625)
+(or (not x1625) x1621)
+(or x1624 x1247 x1243)
+(or (not x1247) (not x1243) x1624)
+(or (not x1624) (not x1243) x1247)
+(or (not x1624) (not x1247) x1243)
+(or (not x1624) x1623 x1246 x1242)
+(or (not x1624) (not x1246) (not x1242) x1623)
+(or (not x1623) (not x1242) x1246)
+(or (not x1623) (not x1246) x1242)
+(or (not x1623) x1624)
+(or (not x1623) x1622 x1245 x1240)
+(or (not x1623) (not x1245) (not x1240) x1622)
+(or (not x1622) (not x1240) x1245)
+(or (not x1622) (not x1245) x1240)
+(or (not x1622) x1623)
+(or (not x1622) x1621 x1244 x1241)
+(or (not x1622) (not x1244) (not x1241) x1621)
+(or (not x1621) (not x1241) x1244)
+(or (not x1621) (not x1244) x1241)
+(or (not x1621) x1622)
+(or (not x1620) (not x427) (not x423))
+(or (not x427) (not x423) x1619)
+(or (not x1620) (not x427) (not x421) x55)
+(or (not x427) (not x421) (not x55) x1620)
+(or (not x1619) (not x427) (not x421))
+(or (not x1620) (not x427) (not x420) x53)
+(or (not x427) (not x420) (not x53) x1620)
+(or (not x1619) (not x427) (not x420))
+(or (not x1620) (not x426) (not x423) x51)
+(or (not x426) (not x423) (not x51) x1620)
+(or (not x1619) (not x426) (not x423))
+(or (not x1620) (not x426) (not x421))
+(or (not x426) (not x421) x1619)
+(or (not x1620) (not x426) (not x420) x47)
+(or (not x426) (not x420) (not x47) x1620)
+(or (not x1619) (not x426) (not x420))
+(or (not x1620) (not x424) (not x423) x45)
+(or (not x424) (not x423) (not x45) x1620)
+(or (not x1619) (not x424) (not x423))
+(or (not x1620) (not x424) (not x421) x41)
+(or (not x424) (not x421) (not x41) x1620)
+(or (not x1619) (not x424) (not x421))
+(or (not x1620) (not x424) (not x420))
+(or (not x424) (not x420) x1619)
+(or (not x327) (not x1615) (not x1609) x1618 x1617)
+(or (not x327) (not x1609) x1616 x1615)
+(or (not x327) x1610 x1609)
+(or (not x1617) (not x1615) (not x1609) x327)
+(or (not x1618) (not x1615) (not x1609) x327)
+(or (not x1616) (not x1609) x327)
+(or (not x1610) x327)
+(or (not x1618) (not x1617))
+(or (not x1314) x1618 x1323 x895)
+(or (not x1618) (not x1314) (not x895) x1323)
+(or (not x1618) (not x1323) x1314 x895)
+(or (not x1323) (not x895) x1618 x1314)
+(or (not x1313) x1618 x1322 x895)
+(or (not x1618) (not x1313) (not x895) x1322)
+(or (not x1618) (not x1322) x1313 x895)
+(or (not x1322) (not x895) x1618 x1313)
+(or (not x1312) x1618 x1321 x895)
+(or (not x1618) (not x1312) (not x895) x1321)
+(or (not x1618) (not x1321) x1312 x895)
+(or (not x1321) (not x895) x1618 x1312)
+(or (not x1322) (not x1313) x1617 x1323 x1314)
+(or (not x1321) (not x1312) x1617 x1322 x1313)
+(or x1617 x1321 x1312)
+(or (not x1323) (not x1314) x1617)
+(or (not x1617) (not x1323) x1314)
+(or (not x1617) (not x1314) x1323)
+(or (not x1617) (not x1322) x1313)
+(or (not x1617) (not x1313) x1322)
+(or (not x1617) (not x1321) x1312)
+(or (not x1617) (not x1312) x1321)
+(or (not x34) x1616 x1614 x1255)
+(or (not x1616) (not x1255) (not x34) x1614)
+(or (not x1616) x1614 x1255 x34)
+(or (not x1255) x1616 x1614 x34)
+(or (not x1614) (not x29) x1616 x1613 x1254)
+(or (not x1616) (not x1614) (not x1254) (not x29) x1613)
+(or (not x1616) (not x1614) x1613 x1254 x29)
+(or (not x1614) (not x1254) x1616 x1613 x29)
+(or (not x1613) (not x27) x1616 x1612 x1253)
+(or (not x1616) (not x1613) (not x1253) (not x27) x1612)
+(or (not x1616) (not x1613) x1612 x1253 x27)
+(or (not x1613) (not x1253) x1616 x1612 x27)
+(or (not x1612) (not x1356) x1616 x1611 x1252)
+(or (not x1616) (not x1612) (not x1252) (not x1356) x1611)
+(or (not x1616) (not x1612) x1611 x1252 x1356)
+(or (not x1612) (not x1252) x1616 x1611 x1356)
+(or (not x1616) (not x1615))
+(or (not x1611) x1615)
+(or (not x1615) x1611)
+(or x1614 x1255 x1243)
+(or (not x1255) (not x1243) x1614)
+(or (not x1614) (not x1255) x1243)
+(or (not x1614) (not x1243) x1255)
+(or (not x1614) x1613 x1254 x1242)
+(or (not x1614) (not x1254) (not x1242) x1613)
+(or (not x1613) (not x1254) x1242)
+(or (not x1613) (not x1242) x1254)
+(or (not x1613) x1614)
+(or (not x1613) x1612 x1253 x1240)
+(or (not x1613) (not x1253) (not x1240) x1612)
+(or (not x1612) (not x1253) x1240)
+(or (not x1612) (not x1240) x1253)
+(or (not x1612) x1613)
+(or (not x1612) x1611 x1252 x1241)
+(or (not x1612) (not x1252) (not x1241) x1611)
+(or (not x1611) (not x1252) x1241)
+(or (not x1611) (not x1241) x1252)
+(or (not x1611) x1612)
+(or (not x1610) (not x436) (not x423))
+(or (not x436) (not x423) x1609)
+(or (not x1610) (not x435) (not x423) x55)
+(or (not x435) (not x423) (not x55) x1610)
+(or (not x1609) (not x435) (not x423))
+(or (not x1610) (not x433) (not x423) x53)
+(or (not x433) (not x423) (not x53) x1610)
+(or (not x1609) (not x433) (not x423))
+(or (not x1610) (not x436) (not x421) x51)
+(or (not x436) (not x421) (not x51) x1610)
+(or (not x1609) (not x436) (not x421))
+(or (not x1610) (not x435) (not x421))
+(or (not x435) (not x421) x1609)
+(or (not x1610) (not x433) (not x421) x47)
+(or (not x433) (not x421) (not x47) x1610)
+(or (not x1609) (not x433) (not x421))
+(or (not x1610) (not x436) (not x420) x45)
+(or (not x436) (not x420) (not x45) x1610)
+(or (not x1609) (not x436) (not x420))
+(or (not x1610) (not x435) (not x420) x41)
+(or (not x435) (not x420) (not x41) x1610)
+(or (not x1609) (not x435) (not x420))
+(or (not x1610) (not x433) (not x420))
+(or (not x433) (not x420) x1609)
+(or (not x324) (not x1605) (not x1599) x1608 x1607)
+(or (not x324) (not x1599) x1606 x1605)
+(or (not x324) x1600 x1599)
+(or (not x1607) (not x1605) (not x1599) x324)
+(or (not x1608) (not x1605) (not x1599) x324)
+(or (not x1606) (not x1599) x324)
+(or (not x1600) x324)
+(or (not x1608) (not x1607))
+(or (not x1314) x1608 x1320 x895)
+(or (not x1608) (not x1314) (not x895) x1320)
+(or (not x1608) (not x1320) x1314 x895)
+(or (not x1320) (not x895) x1608 x1314)
+(or (not x1313) x1608 x1319 x895)
+(or (not x1608) (not x1313) (not x895) x1319)
+(or (not x1608) (not x1319) x1313 x895)
+(or (not x1319) (not x895) x1608 x1313)
+(or (not x1312) x1608 x1318 x895)
+(or (not x1608) (not x1312) (not x895) x1318)
+(or (not x1608) (not x1318) x1312 x895)
+(or (not x1318) (not x895) x1608 x1312)
+(or (not x1319) (not x1313) x1607 x1320 x1314)
+(or (not x1318) (not x1312) x1607 x1319 x1313)
+(or x1607 x1318 x1312)
+(or (not x1320) (not x1314) x1607)
+(or (not x1607) (not x1320) x1314)
+(or (not x1607) (not x1314) x1320)
+(or (not x1607) (not x1319) x1313)
+(or (not x1607) (not x1313) x1319)
+(or (not x1607) (not x1318) x1312)
+(or (not x1607) (not x1312) x1318)
+(or (not x34) x1606 x1604 x1251)
+(or (not x1606) (not x1251) (not x34) x1604)
+(or (not x1606) x1604 x1251 x34)
+(or (not x1251) x1606 x1604 x34)
+(or (not x1604) (not x29) x1606 x1603 x1250)
+(or (not x1606) (not x1604) (not x1250) (not x29) x1603)
+(or (not x1606) (not x1604) x1603 x1250 x29)
+(or (not x1604) (not x1250) x1606 x1603 x29)
+(or (not x1603) (not x27) x1606 x1602 x1249)
+(or (not x1606) (not x1603) (not x1249) (not x27) x1602)
+(or (not x1606) (not x1603) x1602 x1249 x27)
+(or (not x1603) (not x1249) x1606 x1602 x27)
+(or (not x1602) (not x1356) x1606 x1601 x1248)
+(or (not x1606) (not x1602) (not x1248) (not x1356) x1601)
+(or (not x1606) (not x1602) x1601 x1248 x1356)
+(or (not x1602) (not x1248) x1606 x1601 x1356)
+(or (not x1606) (not x1605))
+(or (not x1601) x1605)
+(or (not x1605) x1601)
+(or x1604 x1251 x1243)
+(or (not x1251) (not x1243) x1604)
+(or (not x1604) (not x1251) x1243)
+(or (not x1604) (not x1243) x1251)
+(or (not x1604) x1603 x1250 x1242)
+(or (not x1604) (not x1250) (not x1242) x1603)
+(or (not x1603) (not x1250) x1242)
+(or (not x1603) (not x1242) x1250)
+(or (not x1603) x1604)
+(or (not x1603) x1602 x1249 x1240)
+(or (not x1603) (not x1249) (not x1240) x1602)
+(or (not x1602) (not x1249) x1240)
+(or (not x1602) (not x1240) x1249)
+(or (not x1602) x1603)
+(or (not x1602) x1601 x1248 x1241)
+(or (not x1602) (not x1248) (not x1241) x1601)
+(or (not x1601) (not x1248) x1241)
+(or (not x1601) (not x1241) x1248)
+(or (not x1601) x1602)
+(or (not x1600) (not x432) (not x423))
+(or (not x432) (not x423) x1599)
+(or (not x1600) (not x430) (not x423) x55)
+(or (not x430) (not x423) (not x55) x1600)
+(or (not x1599) (not x430) (not x423))
+(or (not x1600) (not x429) (not x423) x53)
+(or (not x429) (not x423) (not x53) x1600)
+(or (not x1599) (not x429) (not x423))
+(or (not x1600) (not x432) (not x421) x51)
+(or (not x432) (not x421) (not x51) x1600)
+(or (not x1599) (not x432) (not x421))
+(or (not x1600) (not x430) (not x421))
+(or (not x430) (not x421) x1599)
+(or (not x1600) (not x429) (not x421) x47)
+(or (not x429) (not x421) (not x47) x1600)
+(or (not x1599) (not x429) (not x421))
+(or (not x1600) (not x432) (not x420) x45)
+(or (not x432) (not x420) (not x45) x1600)
+(or (not x1599) (not x432) (not x420))
+(or (not x1600) (not x430) (not x420) x41)
+(or (not x430) (not x420) (not x41) x1600)
+(or (not x1599) (not x430) (not x420))
+(or (not x1600) (not x429) (not x420))
+(or (not x429) (not x420) x1599)
+(or (not x331) (not x1595) (not x1589) x1598 x1597)
+(or (not x331) (not x1589) x1596 x1595)
+(or (not x331) x1590 x1589)
+(or (not x1597) (not x1595) (not x1589) x331)
+(or (not x1598) (not x1595) (not x1589) x331)
+(or (not x1596) (not x1589) x331)
+(or (not x1590) x331)
+(or (not x1598) (not x1597))
+(or (not x1314) x1598 x1317 x895)
+(or (not x1598) (not x1314) (not x895) x1317)
+(or (not x1598) (not x1317) x1314 x895)
+(or (not x1317) (not x895) x1598 x1314)
+(or (not x1313) x1598 x1316 x895)
+(or (not x1598) (not x1313) (not x895) x1316)
+(or (not x1598) (not x1316) x1313 x895)
+(or (not x1316) (not x895) x1598 x1313)
+(or (not x1312) x1598 x1315 x895)
+(or (not x1598) (not x1312) (not x895) x1315)
+(or (not x1598) (not x1315) x1312 x895)
+(or (not x1315) (not x895) x1598 x1312)
+(or (not x1316) (not x1313) x1597 x1317 x1314)
+(or (not x1315) (not x1312) x1597 x1316 x1313)
+(or x1597 x1315 x1312)
+(or (not x1317) (not x1314) x1597)
+(or (not x1597) (not x1317) x1314)
+(or (not x1597) (not x1314) x1317)
+(or (not x1597) (not x1316) x1313)
+(or (not x1597) (not x1313) x1316)
+(or (not x1597) (not x1315) x1312)
+(or (not x1597) (not x1312) x1315)
+(or (not x34) x1596 x1594 x1247)
+(or (not x1596) (not x1247) (not x34) x1594)
+(or (not x1596) x1594 x1247 x34)
+(or (not x1247) x1596 x1594 x34)
+(or (not x1594) (not x29) x1596 x1593 x1246)
+(or (not x1596) (not x1594) (not x1246) (not x29) x1593)
+(or (not x1596) (not x1594) x1593 x1246 x29)
+(or (not x1594) (not x1246) x1596 x1593 x29)
+(or (not x1593) (not x27) x1596 x1592 x1245)
+(or (not x1596) (not x1593) (not x1245) (not x27) x1592)
+(or (not x1596) (not x1593) x1592 x1245 x27)
+(or (not x1593) (not x1245) x1596 x1592 x27)
+(or (not x1592) (not x1356) x1596 x1591 x1244)
+(or (not x1596) (not x1592) (not x1244) (not x1356) x1591)
+(or (not x1596) (not x1592) x1591 x1244 x1356)
+(or (not x1592) (not x1244) x1596 x1591 x1356)
+(or (not x1596) (not x1595))
+(or (not x1591) x1595)
+(or (not x1595) x1591)
+(or x1594 x1247 x1243)
+(or (not x1247) (not x1243) x1594)
+(or (not x1594) (not x1247) x1243)
+(or (not x1594) (not x1243) x1247)
+(or (not x1594) x1593 x1246 x1242)
+(or (not x1594) (not x1246) (not x1242) x1593)
+(or (not x1593) (not x1246) x1242)
+(or (not x1593) (not x1242) x1246)
+(or (not x1593) x1594)
+(or (not x1593) x1592 x1245 x1240)
+(or (not x1593) (not x1245) (not x1240) x1592)
+(or (not x1592) (not x1245) x1240)
+(or (not x1592) (not x1240) x1245)
+(or (not x1592) x1593)
+(or (not x1592) x1591 x1244 x1241)
+(or (not x1592) (not x1244) (not x1241) x1591)
+(or (not x1591) (not x1244) x1241)
+(or (not x1591) (not x1241) x1244)
+(or (not x1591) x1592)
+(or (not x1590) (not x427) (not x423))
+(or (not x427) (not x423) x1589)
+(or (not x1590) (not x426) (not x423) x55)
+(or (not x426) (not x423) (not x55) x1590)
+(or (not x1589) (not x426) (not x423))
+(or (not x1590) (not x424) (not x423) x53)
+(or (not x424) (not x423) (not x53) x1590)
+(or (not x1589) (not x424) (not x423))
+(or (not x1590) (not x427) (not x421) x51)
+(or (not x427) (not x421) (not x51) x1590)
+(or (not x1589) (not x427) (not x421))
+(or (not x1590) (not x426) (not x421))
+(or (not x426) (not x421) x1589)
+(or (not x1590) (not x424) (not x421) x47)
+(or (not x424) (not x421) (not x47) x1590)
+(or (not x1589) (not x424) (not x421))
+(or (not x1590) (not x427) (not x420) x45)
+(or (not x427) (not x420) (not x45) x1590)
+(or (not x1589) (not x427) (not x420))
+(or (not x1590) (not x426) (not x420) x41)
+(or (not x426) (not x420) (not x41) x1590)
+(or (not x1589) (not x426) (not x420))
+(or (not x1590) (not x424) (not x420))
+(or (not x424) (not x420) x1589)
+(or (not x21) (not x108) (not x23) x292)
+(or (not x21) (not x108) (not x24) x301)
+(or (not x11) (not x108) (not x22) x295)
+(or (not x11) (not x108) (not x24) x306)
+(or (not x49) (not x108) (not x22) x303)
+(or (not x49) (not x108) (not x23) x307)
+(or (not x3) (not x80) (not x18) x293)
+(or (not x3) (not x80) (not x19) x302)
+(or (not x64) (not x80) (not x17) x297)
+(or (not x64) (not x80) (not x19) x306)
+(or (not x43) (not x80) (not x17) x305)
+(or (not x43) (not x80) (not x18) x307)
+(or (not x48) (not x71) (not x13) x296)
+(or (not x48) (not x71) (not x14) x302)
+(or (not x42) (not x71) (not x12) x298)
+(or (not x42) (not x71) (not x14) x301)
+(or (not x32) (not x71) (not x12) x305)
+(or (not x32) (not x71) (not x13) x303)
+(or (not x10) (not x60) (not x7) x296)
+(or (not x296) (not x1585) (not x1579) x1588 x1587)
+(or (not x296) (not x1579) x1586 x1585)
+(or (not x296) x1580 x1579)
+(or (not x1587) (not x1585) (not x1579) x296)
+(or (not x1588) (not x1585) (not x1579) x296)
+(or (not x1586) (not x1579) x296)
+(or (not x1580) x296)
+(or (not x1588) (not x1587))
+(or (not x1311) x1588 x1308 x894)
+(or (not x1588) (not x1311) (not x894) x1308)
+(or (not x1588) (not x1308) x1311 x894)
+(or (not x1308) (not x894) x1588 x1311)
+(or (not x1310) x1588 x1307 x894)
+(or (not x1588) (not x1310) (not x894) x1307)
+(or (not x1588) (not x1307) x1310 x894)
+(or (not x1307) (not x894) x1588 x1310)
+(or (not x1309) x1588 x1306 x894)
+(or (not x1588) (not x1309) (not x894) x1306)
+(or (not x1588) (not x1306) x1309 x894)
+(or (not x1306) (not x894) x1588 x1309)
+(or (not x1310) (not x1307) x1587 x1311 x1308)
+(or (not x1309) (not x1306) x1587 x1310 x1307)
+(or x1587 x1309 x1306)
+(or (not x1311) (not x1308) x1587)
+(or (not x1587) (not x1308) x1311)
+(or (not x1587) (not x1311) x1308)
+(or (not x1587) (not x1307) x1310)
+(or (not x1587) (not x1310) x1307)
+(or (not x1587) (not x1306) x1309)
+(or (not x1587) (not x1309) x1306)
+(or (not x34) x1586 x1584 x1235)
+(or (not x1586) (not x1235) (not x34) x1584)
+(or (not x1586) x1584 x1235 x34)
+(or (not x1235) x1586 x1584 x34)
+(or (not x1584) (not x29) x1586 x1583 x1234)
+(or (not x1586) (not x1584) (not x1234) (not x29) x1583)
+(or (not x1586) (not x1584) x1583 x1234 x29)
+(or (not x1584) (not x1234) x1586 x1583 x29)
+(or (not x1583) (not x27) x1586 x1582 x1233)
+(or (not x1586) (not x1583) (not x1233) (not x27) x1582)
+(or (not x1586) (not x1583) x1582 x1233 x27)
+(or (not x1583) (not x1233) x1586 x1582 x27)
+(or (not x1582) (not x1356) x1586 x1581 x1232)
+(or (not x1586) (not x1582) (not x1232) (not x1356) x1581)
+(or (not x1586) (not x1582) x1581 x1232 x1356)
+(or (not x1582) (not x1232) x1586 x1581 x1356)
+(or (not x1586) (not x1585))
+(or (not x1581) x1585)
+(or (not x1585) x1581)
+(or x1584 x1239 x1235)
+(or (not x1239) (not x1235) x1584)
+(or (not x1584) (not x1235) x1239)
+(or (not x1584) (not x1239) x1235)
+(or (not x1584) x1583 x1238 x1234)
+(or (not x1584) (not x1238) (not x1234) x1583)
+(or (not x1583) (not x1234) x1238)
+(or (not x1583) (not x1238) x1234)
+(or (not x1583) x1584)
+(or (not x1583) x1582 x1237 x1233)
+(or (not x1583) (not x1237) (not x1233) x1582)
+(or (not x1582) (not x1233) x1237)
+(or (not x1582) (not x1237) x1233)
+(or (not x1582) x1583)
+(or (not x1582) x1581 x1236 x1232)
+(or (not x1582) (not x1236) (not x1232) x1581)
+(or (not x1581) (not x1232) x1236)
+(or (not x1581) (not x1236) x1232)
+(or (not x1581) x1582)
+(or (not x1580) (not x418) (not x411))
+(or (not x418) (not x411) x1579)
+(or (not x1580) (not x418) (not x408) x55)
+(or (not x418) (not x408) (not x55) x1580)
+(or (not x1579) (not x418) (not x408))
+(or (not x1580) (not x418) (not x406) x53)
+(or (not x418) (not x406) (not x53) x1580)
+(or (not x1579) (not x418) (not x406))
+(or (not x1580) (not x416) (not x411) x51)
+(or (not x416) (not x411) (not x51) x1580)
+(or (not x1579) (not x416) (not x411))
+(or (not x1580) (not x416) (not x408))
+(or (not x416) (not x408) x1579)
+(or (not x1580) (not x416) (not x406) x47)
+(or (not x416) (not x406) (not x47) x1580)
+(or (not x1579) (not x416) (not x406))
+(or (not x1580) (not x413) (not x411) x45)
+(or (not x413) (not x411) (not x45) x1580)
+(or (not x1579) (not x413) (not x411))
+(or (not x1580) (not x413) (not x408) x41)
+(or (not x413) (not x408) (not x41) x1580)
+(or (not x1579) (not x413) (not x408))
+(or (not x1580) (not x413) (not x406))
+(or (not x413) (not x406) x1579)
+(or (not x10) (not x60) (not x8) x293)
+(or (not x293) (not x1575) (not x1569) x1578 x1577)
+(or (not x293) (not x1569) x1576 x1575)
+(or (not x293) x1570 x1569)
+(or (not x1577) (not x1575) (not x1569) x293)
+(or (not x1578) (not x1575) (not x1569) x293)
+(or (not x1576) (not x1569) x293)
+(or (not x1570) x293)
+(or (not x1578) (not x1577))
+(or (not x1311) x1578 x1305 x894)
+(or (not x1578) (not x1311) (not x894) x1305)
+(or (not x1578) (not x1305) x1311 x894)
+(or (not x1305) (not x894) x1578 x1311)
+(or (not x1310) x1578 x1304 x894)
+(or (not x1578) (not x1310) (not x894) x1304)
+(or (not x1578) (not x1304) x1310 x894)
+(or (not x1304) (not x894) x1578 x1310)
+(or (not x1309) x1578 x1303 x894)
+(or (not x1578) (not x1309) (not x894) x1303)
+(or (not x1578) (not x1303) x1309 x894)
+(or (not x1303) (not x894) x1578 x1309)
+(or (not x1310) (not x1304) x1577 x1311 x1305)
+(or (not x1309) (not x1303) x1577 x1310 x1304)
+(or x1577 x1309 x1303)
+(or (not x1311) (not x1305) x1577)
+(or (not x1577) (not x1305) x1311)
+(or (not x1577) (not x1311) x1305)
+(or (not x1577) (not x1304) x1310)
+(or (not x1577) (not x1310) x1304)
+(or (not x1577) (not x1303) x1309)
+(or (not x1577) (not x1309) x1303)
+(or (not x34) x1576 x1574 x1231)
+(or (not x1576) (not x1231) (not x34) x1574)
+(or (not x1576) x1574 x1231 x34)
+(or (not x1231) x1576 x1574 x34)
+(or (not x1574) (not x29) x1576 x1573 x1230)
+(or (not x1576) (not x1574) (not x1230) (not x29) x1573)
+(or (not x1576) (not x1574) x1573 x1230 x29)
+(or (not x1574) (not x1230) x1576 x1573 x29)
+(or (not x1573) (not x27) x1576 x1572 x1229)
+(or (not x1576) (not x1573) (not x1229) (not x27) x1572)
+(or (not x1576) (not x1573) x1572 x1229 x27)
+(or (not x1573) (not x1229) x1576 x1572 x27)
+(or (not x1572) (not x1356) x1576 x1571 x1228)
+(or (not x1576) (not x1572) (not x1228) (not x1356) x1571)
+(or (not x1576) (not x1572) x1571 x1228 x1356)
+(or (not x1572) (not x1228) x1576 x1571 x1356)
+(or (not x1576) (not x1575))
+(or (not x1571) x1575)
+(or (not x1575) x1571)
+(or x1574 x1239 x1231)
+(or (not x1239) (not x1231) x1574)
+(or (not x1574) (not x1231) x1239)
+(or (not x1574) (not x1239) x1231)
+(or (not x1574) x1573 x1238 x1230)
+(or (not x1574) (not x1238) (not x1230) x1573)
+(or (not x1573) (not x1230) x1238)
+(or (not x1573) (not x1238) x1230)
+(or (not x1573) x1574)
+(or (not x1573) x1572 x1237 x1229)
+(or (not x1573) (not x1237) (not x1229) x1572)
+(or (not x1572) (not x1229) x1237)
+(or (not x1572) (not x1237) x1229)
+(or (not x1572) x1573)
+(or (not x1572) x1571 x1236 x1228)
+(or (not x1572) (not x1236) (not x1228) x1571)
+(or (not x1571) (not x1228) x1236)
+(or (not x1571) (not x1236) x1228)
+(or (not x1571) x1572)
+(or (not x1570) (not x418) (not x403))
+(or (not x418) (not x403) x1569)
+(or (not x1570) (not x418) (not x401) x55)
+(or (not x418) (not x401) (not x55) x1570)
+(or (not x1569) (not x418) (not x401))
+(or (not x1570) (not x418) (not x398) x53)
+(or (not x418) (not x398) (not x53) x1570)
+(or (not x1569) (not x418) (not x398))
+(or (not x1570) (not x416) (not x403) x51)
+(or (not x416) (not x403) (not x51) x1570)
+(or (not x1569) (not x416) (not x403))
+(or (not x1570) (not x416) (not x401))
+(or (not x416) (not x401) x1569)
+(or (not x1570) (not x416) (not x398) x47)
+(or (not x416) (not x398) (not x47) x1570)
+(or (not x1569) (not x416) (not x398))
+(or (not x1570) (not x413) (not x403) x45)
+(or (not x413) (not x403) (not x45) x1570)
+(or (not x1569) (not x413) (not x403))
+(or (not x1570) (not x413) (not x401) x41)
+(or (not x413) (not x401) (not x41) x1570)
+(or (not x1569) (not x413) (not x401))
+(or (not x1570) (not x413) (not x398))
+(or (not x413) (not x398) x1569)
+(or (not x302) (not x1565) (not x1559) x1568 x1567)
+(or (not x302) (not x1559) x1566 x1565)
+(or (not x302) x1560 x1559)
+(or (not x1567) (not x1565) (not x1559) x302)
+(or (not x1568) (not x1565) (not x1559) x302)
+(or (not x1566) (not x1559) x302)
+(or (not x1560) x302)
+(or (not x1568) (not x1567))
+(or (not x1311) x1568 x1302 x894)
+(or (not x1568) (not x1311) (not x894) x1302)
+(or (not x1568) (not x1302) x1311 x894)
+(or (not x1302) (not x894) x1568 x1311)
+(or (not x1310) x1568 x1301 x894)
+(or (not x1568) (not x1310) (not x894) x1301)
+(or (not x1568) (not x1301) x1310 x894)
+(or (not x1301) (not x894) x1568 x1310)
+(or (not x1309) x1568 x1300 x894)
+(or (not x1568) (not x1309) (not x894) x1300)
+(or (not x1568) (not x1300) x1309 x894)
+(or (not x1300) (not x894) x1568 x1309)
+(or (not x1310) (not x1301) x1567 x1311 x1302)
+(or (not x1309) (not x1300) x1567 x1310 x1301)
+(or x1567 x1309 x1300)
+(or (not x1311) (not x1302) x1567)
+(or (not x1567) (not x1302) x1311)
+(or (not x1567) (not x1311) x1302)
+(or (not x1567) (not x1301) x1310)
+(or (not x1567) (not x1310) x1301)
+(or (not x1567) (not x1300) x1309)
+(or (not x1567) (not x1309) x1300)
+(or (not x34) x1566 x1564 x1227)
+(or (not x1566) (not x1227) (not x34) x1564)
+(or (not x1566) x1564 x1227 x34)
+(or (not x1227) x1566 x1564 x34)
+(or (not x1564) (not x29) x1566 x1563 x1226)
+(or (not x1566) (not x1564) (not x1226) (not x29) x1563)
+(or (not x1566) (not x1564) x1563 x1226 x29)
+(or (not x1564) (not x1226) x1566 x1563 x29)
+(or (not x1563) (not x27) x1566 x1562 x1224)
+(or (not x1566) (not x1563) (not x1224) (not x27) x1562)
+(or (not x1566) (not x1563) x1562 x1224 x27)
+(or (not x1563) (not x1224) x1566 x1562 x27)
+(or (not x1562) (not x1356) x1566 x1561 x1225)
+(or (not x1566) (not x1562) (not x1225) (not x1356) x1561)
+(or (not x1566) (not x1562) x1561 x1225 x1356)
+(or (not x1562) (not x1225) x1566 x1561 x1356)
+(or (not x1566) (not x1565))
+(or (not x1561) x1565)
+(or (not x1565) x1561)
+(or x1564 x1239 x1227)
+(or (not x1239) (not x1227) x1564)
+(or (not x1564) (not x1227) x1239)
+(or (not x1564) (not x1239) x1227)
+(or (not x1564) x1563 x1238 x1226)
+(or (not x1564) (not x1238) (not x1226) x1563)
+(or (not x1563) (not x1226) x1238)
+(or (not x1563) (not x1238) x1226)
+(or (not x1563) x1564)
+(or (not x1563) x1562 x1237 x1224)
+(or (not x1563) (not x1237) (not x1224) x1562)
+(or (not x1562) (not x1224) x1237)
+(or (not x1562) (not x1237) x1224)
+(or (not x1562) x1563)
+(or (not x1562) x1561 x1236 x1225)
+(or (not x1562) (not x1236) (not x1225) x1561)
+(or (not x1561) (not x1225) x1236)
+(or (not x1561) (not x1236) x1225)
+(or (not x1561) x1562)
+(or (not x1560) (not x418) (not x395))
+(or (not x418) (not x395) x1559)
+(or (not x1560) (not x418) (not x392) x55)
+(or (not x418) (not x392) (not x55) x1560)
+(or (not x1559) (not x418) (not x392))
+(or (not x1560) (not x418) (not x389) x53)
+(or (not x418) (not x389) (not x53) x1560)
+(or (not x1559) (not x418) (not x389))
+(or (not x1560) (not x416) (not x395) x51)
+(or (not x416) (not x395) (not x51) x1560)
+(or (not x1559) (not x416) (not x395))
+(or (not x1560) (not x416) (not x392))
+(or (not x416) (not x392) x1559)
+(or (not x1560) (not x416) (not x389) x47)
+(or (not x416) (not x389) (not x47) x1560)
+(or (not x1559) (not x416) (not x389))
+(or (not x1560) (not x413) (not x395) x45)
+(or (not x413) (not x395) (not x45) x1560)
+(or (not x1559) (not x413) (not x395))
+(or (not x1560) (not x413) (not x392) x41)
+(or (not x413) (not x392) (not x41) x1560)
+(or (not x1559) (not x413) (not x392))
+(or (not x1560) (not x413) (not x389))
+(or (not x413) (not x389) x1559)
+(or (not x2) (not x60) (not x6) x298)
+(or (not x298) (not x1555) (not x1549) x1558 x1557)
+(or (not x298) (not x1549) x1556 x1555)
+(or (not x298) x1550 x1549)
+(or (not x1557) (not x1555) (not x1549) x298)
+(or (not x1558) (not x1555) (not x1549) x298)
+(or (not x1556) (not x1549) x298)
+(or (not x1550) x298)
+(or (not x1558) (not x1557))
+(or (not x1308) x1558 x1311 x893)
+(or (not x1558) (not x1308) (not x893) x1311)
+(or (not x1558) (not x1311) x1308 x893)
+(or (not x1311) (not x893) x1558 x1308)
+(or (not x1307) x1558 x1310 x893)
+(or (not x1558) (not x1307) (not x893) x1310)
+(or (not x1558) (not x1310) x1307 x893)
+(or (not x1310) (not x893) x1558 x1307)
+(or (not x1306) x1558 x1309 x893)
+(or (not x1558) (not x1306) (not x893) x1309)
+(or (not x1558) (not x1309) x1306 x893)
+(or (not x1309) (not x893) x1558 x1306)
+(or (not x1310) (not x1307) x1557 x1311 x1308)
+(or (not x1309) (not x1306) x1557 x1310 x1307)
+(or x1557 x1309 x1306)
+(or (not x1311) (not x1308) x1557)
+(or (not x1557) (not x1311) x1308)
+(or (not x1557) (not x1308) x1311)
+(or (not x1557) (not x1310) x1307)
+(or (not x1557) (not x1307) x1310)
+(or (not x1557) (not x1309) x1306)
+(or (not x1557) (not x1306) x1309)
+(or (not x34) x1556 x1554 x1239)
+(or (not x1556) (not x1239) (not x34) x1554)
+(or (not x1556) x1554 x1239 x34)
+(or (not x1239) x1556 x1554 x34)
+(or (not x1554) (not x29) x1556 x1553 x1238)
+(or (not x1556) (not x1554) (not x1238) (not x29) x1553)
+(or (not x1556) (not x1554) x1553 x1238 x29)
+(or (not x1554) (not x1238) x1556 x1553 x29)
+(or (not x1553) (not x27) x1556 x1552 x1237)
+(or (not x1556) (not x1553) (not x1237) (not x27) x1552)
+(or (not x1556) (not x1553) x1552 x1237 x27)
+(or (not x1553) (not x1237) x1556 x1552 x27)
+(or (not x1552) (not x1356) x1556 x1551 x1236)
+(or (not x1556) (not x1552) (not x1236) (not x1356) x1551)
+(or (not x1556) (not x1552) x1551 x1236 x1356)
+(or (not x1552) (not x1236) x1556 x1551 x1356)
+(or (not x1556) (not x1555))
+(or (not x1551) x1555)
+(or (not x1555) x1551)
+(or x1554 x1239 x1235)
+(or (not x1239) (not x1235) x1554)
+(or (not x1554) (not x1239) x1235)
+(or (not x1554) (not x1235) x1239)
+(or (not x1554) x1553 x1238 x1234)
+(or (not x1554) (not x1238) (not x1234) x1553)
+(or (not x1553) (not x1238) x1234)
+(or (not x1553) (not x1234) x1238)
+(or (not x1553) x1554)
+(or (not x1553) x1552 x1237 x1233)
+(or (not x1553) (not x1237) (not x1233) x1552)
+(or (not x1552) (not x1237) x1233)
+(or (not x1552) (not x1233) x1237)
+(or (not x1552) x1553)
+(or (not x1552) x1551 x1236 x1232)
+(or (not x1552) (not x1236) (not x1232) x1551)
+(or (not x1551) (not x1236) x1232)
+(or (not x1551) (not x1232) x1236)
+(or (not x1551) x1552)
+(or (not x1550) (not x418) (not x411))
+(or (not x418) (not x411) x1549)
+(or (not x1550) (not x416) (not x411) x55)
+(or (not x416) (not x411) (not x55) x1550)
+(or (not x1549) (not x416) (not x411))
+(or (not x1550) (not x413) (not x411) x53)
+(or (not x413) (not x411) (not x53) x1550)
+(or (not x1549) (not x413) (not x411))
+(or (not x1550) (not x418) (not x408) x51)
+(or (not x418) (not x408) (not x51) x1550)
+(or (not x1549) (not x418) (not x408))
+(or (not x1550) (not x416) (not x408))
+(or (not x416) (not x408) x1549)
+(or (not x1550) (not x413) (not x408) x47)
+(or (not x413) (not x408) (not x47) x1550)
+(or (not x1549) (not x413) (not x408))
+(or (not x1550) (not x418) (not x406) x45)
+(or (not x418) (not x406) (not x45) x1550)
+(or (not x1549) (not x418) (not x406))
+(or (not x1550) (not x416) (not x406) x41)
+(or (not x416) (not x406) (not x41) x1550)
+(or (not x1549) (not x416) (not x406))
+(or (not x1550) (not x413) (not x406))
+(or (not x413) (not x406) x1549)
+(or (not x2) (not x60) (not x8) x292)
+(or (not x292) (not x1545) (not x1539) x1548 x1547)
+(or (not x292) (not x1539) x1546 x1545)
+(or (not x292) x1540 x1539)
+(or (not x1547) (not x1545) (not x1539) x292)
+(or (not x1548) (not x1545) (not x1539) x292)
+(or (not x1546) (not x1539) x292)
+(or (not x1540) x292)
+(or (not x1548) (not x1547))
+(or (not x1308) x1548 x1305 x893)
+(or (not x1548) (not x1308) (not x893) x1305)
+(or (not x1548) (not x1305) x1308 x893)
+(or (not x1305) (not x893) x1548 x1308)
+(or (not x1307) x1548 x1304 x893)
+(or (not x1548) (not x1307) (not x893) x1304)
+(or (not x1548) (not x1304) x1307 x893)
+(or (not x1304) (not x893) x1548 x1307)
+(or (not x1306) x1548 x1303 x893)
+(or (not x1548) (not x1306) (not x893) x1303)
+(or (not x1548) (not x1303) x1306 x893)
+(or (not x1303) (not x893) x1548 x1306)
+(or (not x1307) (not x1304) x1547 x1308 x1305)
+(or (not x1306) (not x1303) x1547 x1307 x1304)
+(or x1547 x1306 x1303)
+(or (not x1308) (not x1305) x1547)
+(or (not x1547) (not x1305) x1308)
+(or (not x1547) (not x1308) x1305)
+(or (not x1547) (not x1304) x1307)
+(or (not x1547) (not x1307) x1304)
+(or (not x1547) (not x1303) x1306)
+(or (not x1547) (not x1306) x1303)
+(or (not x34) x1546 x1544 x1231)
+(or (not x1546) (not x1231) (not x34) x1544)
+(or (not x1546) x1544 x1231 x34)
+(or (not x1231) x1546 x1544 x34)
+(or (not x1544) (not x29) x1546 x1543 x1230)
+(or (not x1546) (not x1544) (not x1230) (not x29) x1543)
+(or (not x1546) (not x1544) x1543 x1230 x29)
+(or (not x1544) (not x1230) x1546 x1543 x29)
+(or (not x1543) (not x27) x1546 x1542 x1229)
+(or (not x1546) (not x1543) (not x1229) (not x27) x1542)
+(or (not x1546) (not x1543) x1542 x1229 x27)
+(or (not x1543) (not x1229) x1546 x1542 x27)
+(or (not x1542) (not x1356) x1546 x1541 x1228)
+(or (not x1546) (not x1542) (not x1228) (not x1356) x1541)
+(or (not x1546) (not x1542) x1541 x1228 x1356)
+(or (not x1542) (not x1228) x1546 x1541 x1356)
+(or (not x1546) (not x1545))
+(or (not x1541) x1545)
+(or (not x1545) x1541)
+(or x1544 x1235 x1231)
+(or (not x1235) (not x1231) x1544)
+(or (not x1544) (not x1231) x1235)
+(or (not x1544) (not x1235) x1231)
+(or (not x1544) x1543 x1234 x1230)
+(or (not x1544) (not x1234) (not x1230) x1543)
+(or (not x1543) (not x1230) x1234)
+(or (not x1543) (not x1234) x1230)
+(or (not x1543) x1544)
+(or (not x1543) x1542 x1233 x1229)
+(or (not x1543) (not x1233) (not x1229) x1542)
+(or (not x1542) (not x1229) x1233)
+(or (not x1542) (not x1233) x1229)
+(or (not x1542) x1543)
+(or (not x1542) x1541 x1232 x1228)
+(or (not x1542) (not x1232) (not x1228) x1541)
+(or (not x1541) (not x1228) x1232)
+(or (not x1541) (not x1232) x1228)
+(or (not x1541) x1542)
+(or (not x1540) (not x411) (not x403))
+(or (not x411) (not x403) x1539)
+(or (not x1540) (not x411) (not x401) x55)
+(or (not x411) (not x401) (not x55) x1540)
+(or (not x1539) (not x411) (not x401))
+(or (not x1540) (not x411) (not x398) x53)
+(or (not x411) (not x398) (not x53) x1540)
+(or (not x1539) (not x411) (not x398))
+(or (not x1540) (not x408) (not x403) x51)
+(or (not x408) (not x403) (not x51) x1540)
+(or (not x1539) (not x408) (not x403))
+(or (not x1540) (not x408) (not x401))
+(or (not x408) (not x401) x1539)
+(or (not x1540) (not x408) (not x398) x47)
+(or (not x408) (not x398) (not x47) x1540)
+(or (not x1539) (not x408) (not x398))
+(or (not x1540) (not x406) (not x403) x45)
+(or (not x406) (not x403) (not x45) x1540)
+(or (not x1539) (not x406) (not x403))
+(or (not x1540) (not x406) (not x401) x41)
+(or (not x406) (not x401) (not x41) x1540)
+(or (not x1539) (not x406) (not x401))
+(or (not x1540) (not x406) (not x398))
+(or (not x406) (not x398) x1539)
+(or (not x301) (not x1535) (not x1529) x1538 x1537)
+(or (not x301) (not x1529) x1536 x1535)
+(or (not x301) x1530 x1529)
+(or (not x1537) (not x1535) (not x1529) x301)
+(or (not x1538) (not x1535) (not x1529) x301)
+(or (not x1536) (not x1529) x301)
+(or (not x1530) x301)
+(or (not x1538) (not x1537))
+(or (not x1308) x1538 x1302 x893)
+(or (not x1538) (not x1308) (not x893) x1302)
+(or (not x1538) (not x1302) x1308 x893)
+(or (not x1302) (not x893) x1538 x1308)
+(or (not x1307) x1538 x1301 x893)
+(or (not x1538) (not x1307) (not x893) x1301)
+(or (not x1538) (not x1301) x1307 x893)
+(or (not x1301) (not x893) x1538 x1307)
+(or (not x1306) x1538 x1300 x893)
+(or (not x1538) (not x1306) (not x893) x1300)
+(or (not x1538) (not x1300) x1306 x893)
+(or (not x1300) (not x893) x1538 x1306)
+(or (not x1307) (not x1301) x1537 x1308 x1302)
+(or (not x1306) (not x1300) x1537 x1307 x1301)
+(or x1537 x1306 x1300)
+(or (not x1308) (not x1302) x1537)
+(or (not x1537) (not x1302) x1308)
+(or (not x1537) (not x1308) x1302)
+(or (not x1537) (not x1301) x1307)
+(or (not x1537) (not x1307) x1301)
+(or (not x1537) (not x1300) x1306)
+(or (not x1537) (not x1306) x1300)
+(or (not x34) x1536 x1534 x1227)
+(or (not x1536) (not x1227) (not x34) x1534)
+(or (not x1536) x1534 x1227 x34)
+(or (not x1227) x1536 x1534 x34)
+(or (not x1534) (not x29) x1536 x1533 x1226)
+(or (not x1536) (not x1534) (not x1226) (not x29) x1533)
+(or (not x1536) (not x1534) x1533 x1226 x29)
+(or (not x1534) (not x1226) x1536 x1533 x29)
+(or (not x1533) (not x27) x1536 x1532 x1224)
+(or (not x1536) (not x1533) (not x1224) (not x27) x1532)
+(or (not x1536) (not x1533) x1532 x1224 x27)
+(or (not x1533) (not x1224) x1536 x1532 x27)
+(or (not x1532) (not x1356) x1536 x1531 x1225)
+(or (not x1536) (not x1532) (not x1225) (not x1356) x1531)
+(or (not x1536) (not x1532) x1531 x1225 x1356)
+(or (not x1532) (not x1225) x1536 x1531 x1356)
+(or (not x1536) (not x1535))
+(or (not x1531) x1535)
+(or (not x1535) x1531)
+(or x1534 x1235 x1227)
+(or (not x1235) (not x1227) x1534)
+(or (not x1534) (not x1227) x1235)
+(or (not x1534) (not x1235) x1227)
+(or (not x1534) x1533 x1234 x1226)
+(or (not x1534) (not x1234) (not x1226) x1533)
+(or (not x1533) (not x1226) x1234)
+(or (not x1533) (not x1234) x1226)
+(or (not x1533) x1534)
+(or (not x1533) x1532 x1233 x1224)
+(or (not x1533) (not x1233) (not x1224) x1532)
+(or (not x1532) (not x1224) x1233)
+(or (not x1532) (not x1233) x1224)
+(or (not x1532) x1533)
+(or (not x1532) x1531 x1232 x1225)
+(or (not x1532) (not x1232) (not x1225) x1531)
+(or (not x1531) (not x1225) x1232)
+(or (not x1531) (not x1232) x1225)
+(or (not x1531) x1532)
+(or (not x1530) (not x411) (not x395))
+(or (not x411) (not x395) x1529)
+(or (not x1530) (not x411) (not x392) x55)
+(or (not x411) (not x392) (not x55) x1530)
+(or (not x1529) (not x411) (not x392))
+(or (not x1530) (not x411) (not x389) x53)
+(or (not x411) (not x389) (not x53) x1530)
+(or (not x1529) (not x411) (not x389))
+(or (not x1530) (not x408) (not x395) x51)
+(or (not x408) (not x395) (not x51) x1530)
+(or (not x1529) (not x408) (not x395))
+(or (not x1530) (not x408) (not x392))
+(or (not x408) (not x392) x1529)
+(or (not x1530) (not x408) (not x389) x47)
+(or (not x408) (not x389) (not x47) x1530)
+(or (not x1529) (not x408) (not x389))
+(or (not x1530) (not x406) (not x395) x45)
+(or (not x406) (not x395) (not x45) x1530)
+(or (not x1529) (not x406) (not x395))
+(or (not x1530) (not x406) (not x392) x41)
+(or (not x406) (not x392) (not x41) x1530)
+(or (not x1529) (not x406) (not x392))
+(or (not x1530) (not x406) (not x389))
+(or (not x406) (not x389) x1529)
+(or (not x57) (not x60) (not x6) x297)
+(or (not x297) (not x1525) (not x1519) x1528 x1527)
+(or (not x297) (not x1519) x1526 x1525)
+(or (not x297) x1520 x1519)
+(or (not x1527) (not x1525) (not x1519) x297)
+(or (not x1528) (not x1525) (not x1519) x297)
+(or (not x1526) (not x1519) x297)
+(or (not x1520) x297)
+(or (not x1528) (not x1527))
+(or (not x1305) x1528 x1311 x892)
+(or (not x1528) (not x1305) (not x892) x1311)
+(or (not x1528) (not x1311) x1305 x892)
+(or (not x1311) (not x892) x1528 x1305)
+(or (not x1304) x1528 x1310 x892)
+(or (not x1528) (not x1304) (not x892) x1310)
+(or (not x1528) (not x1310) x1304 x892)
+(or (not x1310) (not x892) x1528 x1304)
+(or (not x1303) x1528 x1309 x892)
+(or (not x1528) (not x1303) (not x892) x1309)
+(or (not x1528) (not x1309) x1303 x892)
+(or (not x1309) (not x892) x1528 x1303)
+(or (not x1310) (not x1304) x1527 x1311 x1305)
+(or (not x1309) (not x1303) x1527 x1310 x1304)
+(or x1527 x1309 x1303)
+(or (not x1311) (not x1305) x1527)
+(or (not x1527) (not x1311) x1305)
+(or (not x1527) (not x1305) x1311)
+(or (not x1527) (not x1310) x1304)
+(or (not x1527) (not x1304) x1310)
+(or (not x1527) (not x1309) x1303)
+(or (not x1527) (not x1303) x1309)
+(or (not x34) x1526 x1524 x1239)
+(or (not x1526) (not x1239) (not x34) x1524)
+(or (not x1526) x1524 x1239 x34)
+(or (not x1239) x1526 x1524 x34)
+(or (not x1524) (not x29) x1526 x1523 x1238)
+(or (not x1526) (not x1524) (not x1238) (not x29) x1523)
+(or (not x1526) (not x1524) x1523 x1238 x29)
+(or (not x1524) (not x1238) x1526 x1523 x29)
+(or (not x1523) (not x27) x1526 x1522 x1237)
+(or (not x1526) (not x1523) (not x1237) (not x27) x1522)
+(or (not x1526) (not x1523) x1522 x1237 x27)
+(or (not x1523) (not x1237) x1526 x1522 x27)
+(or (not x1522) (not x1356) x1526 x1521 x1236)
+(or (not x1526) (not x1522) (not x1236) (not x1356) x1521)
+(or (not x1526) (not x1522) x1521 x1236 x1356)
+(or (not x1522) (not x1236) x1526 x1521 x1356)
+(or (not x1526) (not x1525))
+(or (not x1521) x1525)
+(or (not x1525) x1521)
+(or x1524 x1239 x1231)
+(or (not x1239) (not x1231) x1524)
+(or (not x1524) (not x1239) x1231)
+(or (not x1524) (not x1231) x1239)
+(or (not x1524) x1523 x1238 x1230)
+(or (not x1524) (not x1238) (not x1230) x1523)
+(or (not x1523) (not x1238) x1230)
+(or (not x1523) (not x1230) x1238)
+(or (not x1523) x1524)
+(or (not x1523) x1522 x1237 x1229)
+(or (not x1523) (not x1237) (not x1229) x1522)
+(or (not x1522) (not x1237) x1229)
+(or (not x1522) (not x1229) x1237)
+(or (not x1522) x1523)
+(or (not x1522) x1521 x1236 x1228)
+(or (not x1522) (not x1236) (not x1228) x1521)
+(or (not x1521) (not x1236) x1228)
+(or (not x1521) (not x1228) x1236)
+(or (not x1521) x1522)
+(or (not x1520) (not x418) (not x403))
+(or (not x418) (not x403) x1519)
+(or (not x1520) (not x416) (not x403) x55)
+(or (not x416) (not x403) (not x55) x1520)
+(or (not x1519) (not x416) (not x403))
+(or (not x1520) (not x413) (not x403) x53)
+(or (not x413) (not x403) (not x53) x1520)
+(or (not x1519) (not x413) (not x403))
+(or (not x1520) (not x418) (not x401) x51)
+(or (not x418) (not x401) (not x51) x1520)
+(or (not x1519) (not x418) (not x401))
+(or (not x1520) (not x416) (not x401))
+(or (not x416) (not x401) x1519)
+(or (not x1520) (not x413) (not x401) x47)
+(or (not x413) (not x401) (not x47) x1520)
+(or (not x1519) (not x413) (not x401))
+(or (not x1520) (not x418) (not x398) x45)
+(or (not x418) (not x398) (not x45) x1520)
+(or (not x1519) (not x418) (not x398))
+(or (not x1520) (not x416) (not x398) x41)
+(or (not x416) (not x398) (not x41) x1520)
+(or (not x1519) (not x416) (not x398))
+(or (not x1520) (not x413) (not x398))
+(or (not x413) (not x398) x1519)
+(or (not x57) (not x60) (not x7) x295)
+(or (not x295) (not x1515) (not x1509) x1518 x1517)
+(or (not x295) (not x1509) x1516 x1515)
+(or (not x295) x1510 x1509)
+(or (not x1517) (not x1515) (not x1509) x295)
+(or (not x1518) (not x1515) (not x1509) x295)
+(or (not x1516) (not x1509) x295)
+(or (not x1510) x295)
+(or (not x1518) (not x1517))
+(or (not x1305) x1518 x1308 x892)
+(or (not x1518) (not x1305) (not x892) x1308)
+(or (not x1518) (not x1308) x1305 x892)
+(or (not x1308) (not x892) x1518 x1305)
+(or (not x1304) x1518 x1307 x892)
+(or (not x1518) (not x1304) (not x892) x1307)
+(or (not x1518) (not x1307) x1304 x892)
+(or (not x1307) (not x892) x1518 x1304)
+(or (not x1303) x1518 x1306 x892)
+(or (not x1518) (not x1303) (not x892) x1306)
+(or (not x1518) (not x1306) x1303 x892)
+(or (not x1306) (not x892) x1518 x1303)
+(or (not x1307) (not x1304) x1517 x1308 x1305)
+(or (not x1306) (not x1303) x1517 x1307 x1304)
+(or x1517 x1306 x1303)
+(or (not x1308) (not x1305) x1517)
+(or (not x1517) (not x1308) x1305)
+(or (not x1517) (not x1305) x1308)
+(or (not x1517) (not x1307) x1304)
+(or (not x1517) (not x1304) x1307)
+(or (not x1517) (not x1306) x1303)
+(or (not x1517) (not x1303) x1306)
+(or (not x34) x1516 x1514 x1235)
+(or (not x1516) (not x1235) (not x34) x1514)
+(or (not x1516) x1514 x1235 x34)
+(or (not x1235) x1516 x1514 x34)
+(or (not x1514) (not x29) x1516 x1513 x1234)
+(or (not x1516) (not x1514) (not x1234) (not x29) x1513)
+(or (not x1516) (not x1514) x1513 x1234 x29)
+(or (not x1514) (not x1234) x1516 x1513 x29)
+(or (not x1513) (not x27) x1516 x1512 x1233)
+(or (not x1516) (not x1513) (not x1233) (not x27) x1512)
+(or (not x1516) (not x1513) x1512 x1233 x27)
+(or (not x1513) (not x1233) x1516 x1512 x27)
+(or (not x1512) (not x1356) x1516 x1511 x1232)
+(or (not x1516) (not x1512) (not x1232) (not x1356) x1511)
+(or (not x1516) (not x1512) x1511 x1232 x1356)
+(or (not x1512) (not x1232) x1516 x1511 x1356)
+(or (not x1516) (not x1515))
+(or (not x1511) x1515)
+(or (not x1515) x1511)
+(or x1514 x1235 x1231)
+(or (not x1235) (not x1231) x1514)
+(or (not x1514) (not x1235) x1231)
+(or (not x1514) (not x1231) x1235)
+(or (not x1514) x1513 x1234 x1230)
+(or (not x1514) (not x1234) (not x1230) x1513)
+(or (not x1513) (not x1234) x1230)
+(or (not x1513) (not x1230) x1234)
+(or (not x1513) x1514)
+(or (not x1513) x1512 x1233 x1229)
+(or (not x1513) (not x1233) (not x1229) x1512)
+(or (not x1512) (not x1233) x1229)
+(or (not x1512) (not x1229) x1233)
+(or (not x1512) x1513)
+(or (not x1512) x1511 x1232 x1228)
+(or (not x1512) (not x1232) (not x1228) x1511)
+(or (not x1511) (not x1232) x1228)
+(or (not x1511) (not x1228) x1232)
+(or (not x1511) x1512)
+(or (not x1510) (not x411) (not x403))
+(or (not x411) (not x403) x1509)
+(or (not x1510) (not x408) (not x403) x55)
+(or (not x408) (not x403) (not x55) x1510)
+(or (not x1509) (not x408) (not x403))
+(or (not x1510) (not x406) (not x403) x53)
+(or (not x406) (not x403) (not x53) x1510)
+(or (not x1509) (not x406) (not x403))
+(or (not x1510) (not x411) (not x401) x51)
+(or (not x411) (not x401) (not x51) x1510)
+(or (not x1509) (not x411) (not x401))
+(or (not x1510) (not x408) (not x401))
+(or (not x408) (not x401) x1509)
+(or (not x1510) (not x406) (not x401) x47)
+(or (not x406) (not x401) (not x47) x1510)
+(or (not x1509) (not x406) (not x401))
+(or (not x1510) (not x411) (not x398) x45)
+(or (not x411) (not x398) (not x45) x1510)
+(or (not x1509) (not x411) (not x398))
+(or (not x1510) (not x408) (not x398) x41)
+(or (not x408) (not x398) (not x41) x1510)
+(or (not x1509) (not x408) (not x398))
+(or (not x1510) (not x406) (not x398))
+(or (not x406) (not x398) x1509)
+(or (not x306) (not x1505) (not x1499) x1508 x1507)
+(or (not x306) (not x1499) x1506 x1505)
+(or (not x306) x1500 x1499)
+(or (not x1507) (not x1505) (not x1499) x306)
+(or (not x1508) (not x1505) (not x1499) x306)
+(or (not x1506) (not x1499) x306)
+(or (not x1500) x306)
+(or (not x1508) (not x1507))
+(or (not x1305) x1508 x1302 x892)
+(or (not x1508) (not x1305) (not x892) x1302)
+(or (not x1508) (not x1302) x1305 x892)
+(or (not x1302) (not x892) x1508 x1305)
+(or (not x1304) x1508 x1301 x892)
+(or (not x1508) (not x1304) (not x892) x1301)
+(or (not x1508) (not x1301) x1304 x892)
+(or (not x1301) (not x892) x1508 x1304)
+(or (not x1303) x1508 x1300 x892)
+(or (not x1508) (not x1303) (not x892) x1300)
+(or (not x1508) (not x1300) x1303 x892)
+(or (not x1300) (not x892) x1508 x1303)
+(or (not x1304) (not x1301) x1507 x1305 x1302)
+(or (not x1303) (not x1300) x1507 x1304 x1301)
+(or x1507 x1303 x1300)
+(or (not x1305) (not x1302) x1507)
+(or (not x1507) (not x1302) x1305)
+(or (not x1507) (not x1305) x1302)
+(or (not x1507) (not x1301) x1304)
+(or (not x1507) (not x1304) x1301)
+(or (not x1507) (not x1300) x1303)
+(or (not x1507) (not x1303) x1300)
+(or (not x34) x1506 x1504 x1227)
+(or (not x1506) (not x1227) (not x34) x1504)
+(or (not x1506) x1504 x1227 x34)
+(or (not x1227) x1506 x1504 x34)
+(or (not x1504) (not x29) x1506 x1503 x1226)
+(or (not x1506) (not x1504) (not x1226) (not x29) x1503)
+(or (not x1506) (not x1504) x1503 x1226 x29)
+(or (not x1504) (not x1226) x1506 x1503 x29)
+(or (not x1503) (not x27) x1506 x1502 x1224)
+(or (not x1506) (not x1503) (not x1224) (not x27) x1502)
+(or (not x1506) (not x1503) x1502 x1224 x27)
+(or (not x1503) (not x1224) x1506 x1502 x27)
+(or (not x1502) (not x1356) x1506 x1501 x1225)
+(or (not x1506) (not x1502) (not x1225) (not x1356) x1501)
+(or (not x1506) (not x1502) x1501 x1225 x1356)
+(or (not x1502) (not x1225) x1506 x1501 x1356)
+(or (not x1506) (not x1505))
+(or (not x1501) x1505)
+(or (not x1505) x1501)
+(or x1504 x1231 x1227)
+(or (not x1231) (not x1227) x1504)
+(or (not x1504) (not x1227) x1231)
+(or (not x1504) (not x1231) x1227)
+(or (not x1504) x1503 x1230 x1226)
+(or (not x1504) (not x1230) (not x1226) x1503)
+(or (not x1503) (not x1226) x1230)
+(or (not x1503) (not x1230) x1226)
+(or (not x1503) x1504)
+(or (not x1503) x1502 x1229 x1224)
+(or (not x1503) (not x1229) (not x1224) x1502)
+(or (not x1502) (not x1224) x1229)
+(or (not x1502) (not x1229) x1224)
+(or (not x1502) x1503)
+(or (not x1502) x1501 x1228 x1225)
+(or (not x1502) (not x1228) (not x1225) x1501)
+(or (not x1501) (not x1225) x1228)
+(or (not x1501) (not x1228) x1225)
+(or (not x1501) x1502)
+(or (not x1500) (not x403) (not x395))
+(or (not x403) (not x395) x1499)
+(or (not x1500) (not x403) (not x392) x55)
+(or (not x403) (not x392) (not x55) x1500)
+(or (not x1499) (not x403) (not x392))
+(or (not x1500) (not x403) (not x389) x53)
+(or (not x403) (not x389) (not x53) x1500)
+(or (not x1499) (not x403) (not x389))
+(or (not x1500) (not x401) (not x395) x51)
+(or (not x401) (not x395) (not x51) x1500)
+(or (not x1499) (not x401) (not x395))
+(or (not x1500) (not x401) (not x392))
+(or (not x401) (not x392) x1499)
+(or (not x1500) (not x401) (not x389) x47)
+(or (not x401) (not x389) (not x47) x1500)
+(or (not x1499) (not x401) (not x389))
+(or (not x1500) (not x398) (not x395) x45)
+(or (not x398) (not x395) (not x45) x1500)
+(or (not x1499) (not x398) (not x395))
+(or (not x1500) (not x398) (not x392) x41)
+(or (not x398) (not x392) (not x41) x1500)
+(or (not x1499) (not x398) (not x392))
+(or (not x1500) (not x398) (not x389))
+(or (not x398) (not x389) x1499)
+(or (not x305) (not x1495) (not x1489) x1498 x1497)
+(or (not x305) (not x1489) x1496 x1495)
+(or (not x305) x1490 x1489)
+(or (not x1497) (not x1495) (not x1489) x305)
+(or (not x1498) (not x1495) (not x1489) x305)
+(or (not x1496) (not x1489) x305)
+(or (not x1490) x305)
+(or (not x1498) (not x1497))
+(or (not x1302) x1498 x1311 x891)
+(or (not x1498) (not x1302) (not x891) x1311)
+(or (not x1498) (not x1311) x1302 x891)
+(or (not x1311) (not x891) x1498 x1302)
+(or (not x1301) x1498 x1310 x891)
+(or (not x1498) (not x1301) (not x891) x1310)
+(or (not x1498) (not x1310) x1301 x891)
+(or (not x1310) (not x891) x1498 x1301)
+(or (not x1300) x1498 x1309 x891)
+(or (not x1498) (not x1300) (not x891) x1309)
+(or (not x1498) (not x1309) x1300 x891)
+(or (not x1309) (not x891) x1498 x1300)
+(or (not x1310) (not x1301) x1497 x1311 x1302)
+(or (not x1309) (not x1300) x1497 x1310 x1301)
+(or x1497 x1309 x1300)
+(or (not x1311) (not x1302) x1497)
+(or (not x1497) (not x1311) x1302)
+(or (not x1497) (not x1302) x1311)
+(or (not x1497) (not x1310) x1301)
+(or (not x1497) (not x1301) x1310)
+(or (not x1497) (not x1309) x1300)
+(or (not x1497) (not x1300) x1309)
+(or (not x34) x1496 x1494 x1239)
+(or (not x1496) (not x1239) (not x34) x1494)
+(or (not x1496) x1494 x1239 x34)
+(or (not x1239) x1496 x1494 x34)
+(or (not x1494) (not x29) x1496 x1493 x1238)
+(or (not x1496) (not x1494) (not x1238) (not x29) x1493)
+(or (not x1496) (not x1494) x1493 x1238 x29)
+(or (not x1494) (not x1238) x1496 x1493 x29)
+(or (not x1493) (not x27) x1496 x1492 x1237)
+(or (not x1496) (not x1493) (not x1237) (not x27) x1492)
+(or (not x1496) (not x1493) x1492 x1237 x27)
+(or (not x1493) (not x1237) x1496 x1492 x27)
+(or (not x1492) (not x1356) x1496 x1491 x1236)
+(or (not x1496) (not x1492) (not x1236) (not x1356) x1491)
+(or (not x1496) (not x1492) x1491 x1236 x1356)
+(or (not x1492) (not x1236) x1496 x1491 x1356)
+(or (not x1496) (not x1495))
+(or (not x1491) x1495)
+(or (not x1495) x1491)
+(or x1494 x1239 x1227)
+(or (not x1239) (not x1227) x1494)
+(or (not x1494) (not x1239) x1227)
+(or (not x1494) (not x1227) x1239)
+(or (not x1494) x1493 x1238 x1226)
+(or (not x1494) (not x1238) (not x1226) x1493)
+(or (not x1493) (not x1238) x1226)
+(or (not x1493) (not x1226) x1238)
+(or (not x1493) x1494)
+(or (not x1493) x1492 x1237 x1224)
+(or (not x1493) (not x1237) (not x1224) x1492)
+(or (not x1492) (not x1237) x1224)
+(or (not x1492) (not x1224) x1237)
+(or (not x1492) x1493)
+(or (not x1492) x1491 x1236 x1225)
+(or (not x1492) (not x1236) (not x1225) x1491)
+(or (not x1491) (not x1236) x1225)
+(or (not x1491) (not x1225) x1236)
+(or (not x1491) x1492)
+(or (not x1490) (not x418) (not x395))
+(or (not x418) (not x395) x1489)
+(or (not x1490) (not x416) (not x395) x55)
+(or (not x416) (not x395) (not x55) x1490)
+(or (not x1489) (not x416) (not x395))
+(or (not x1490) (not x413) (not x395) x53)
+(or (not x413) (not x395) (not x53) x1490)
+(or (not x1489) (not x413) (not x395))
+(or (not x1490) (not x418) (not x392) x51)
+(or (not x418) (not x392) (not x51) x1490)
+(or (not x1489) (not x418) (not x392))
+(or (not x1490) (not x416) (not x392))
+(or (not x416) (not x392) x1489)
+(or (not x1490) (not x413) (not x392) x47)
+(or (not x413) (not x392) (not x47) x1490)
+(or (not x1489) (not x413) (not x392))
+(or (not x1490) (not x418) (not x389) x45)
+(or (not x418) (not x389) (not x45) x1490)
+(or (not x1489) (not x418) (not x389))
+(or (not x1490) (not x416) (not x389) x41)
+(or (not x416) (not x389) (not x41) x1490)
+(or (not x1489) (not x416) (not x389))
+(or (not x1490) (not x413) (not x389))
+(or (not x413) (not x389) x1489)
+(or (not x303) (not x1485) (not x1479) x1488 x1487)
+(or (not x303) (not x1479) x1486 x1485)
+(or (not x303) x1480 x1479)
+(or (not x1487) (not x1485) (not x1479) x303)
+(or (not x1488) (not x1485) (not x1479) x303)
+(or (not x1486) (not x1479) x303)
+(or (not x1480) x303)
+(or (not x1488) (not x1487))
+(or (not x1302) x1488 x1308 x891)
+(or (not x1488) (not x1302) (not x891) x1308)
+(or (not x1488) (not x1308) x1302 x891)
+(or (not x1308) (not x891) x1488 x1302)
+(or (not x1301) x1488 x1307 x891)
+(or (not x1488) (not x1301) (not x891) x1307)
+(or (not x1488) (not x1307) x1301 x891)
+(or (not x1307) (not x891) x1488 x1301)
+(or (not x1300) x1488 x1306 x891)
+(or (not x1488) (not x1300) (not x891) x1306)
+(or (not x1488) (not x1306) x1300 x891)
+(or (not x1306) (not x891) x1488 x1300)
+(or (not x1307) (not x1301) x1487 x1308 x1302)
+(or (not x1306) (not x1300) x1487 x1307 x1301)
+(or x1487 x1306 x1300)
+(or (not x1308) (not x1302) x1487)
+(or (not x1487) (not x1308) x1302)
+(or (not x1487) (not x1302) x1308)
+(or (not x1487) (not x1307) x1301)
+(or (not x1487) (not x1301) x1307)
+(or (not x1487) (not x1306) x1300)
+(or (not x1487) (not x1300) x1306)
+(or (not x34) x1486 x1484 x1235)
+(or (not x1486) (not x1235) (not x34) x1484)
+(or (not x1486) x1484 x1235 x34)
+(or (not x1235) x1486 x1484 x34)
+(or (not x1484) (not x29) x1486 x1483 x1234)
+(or (not x1486) (not x1484) (not x1234) (not x29) x1483)
+(or (not x1486) (not x1484) x1483 x1234 x29)
+(or (not x1484) (not x1234) x1486 x1483 x29)
+(or (not x1483) (not x27) x1486 x1482 x1233)
+(or (not x1486) (not x1483) (not x1233) (not x27) x1482)
+(or (not x1486) (not x1483) x1482 x1233 x27)
+(or (not x1483) (not x1233) x1486 x1482 x27)
+(or (not x1482) (not x1356) x1486 x1481 x1232)
+(or (not x1486) (not x1482) (not x1232) (not x1356) x1481)
+(or (not x1486) (not x1482) x1481 x1232 x1356)
+(or (not x1482) (not x1232) x1486 x1481 x1356)
+(or (not x1486) (not x1485))
+(or (not x1481) x1485)
+(or (not x1485) x1481)
+(or x1484 x1235 x1227)
+(or (not x1235) (not x1227) x1484)
+(or (not x1484) (not x1235) x1227)
+(or (not x1484) (not x1227) x1235)
+(or (not x1484) x1483 x1234 x1226)
+(or (not x1484) (not x1234) (not x1226) x1483)
+(or (not x1483) (not x1234) x1226)
+(or (not x1483) (not x1226) x1234)
+(or (not x1483) x1484)
+(or (not x1483) x1482 x1233 x1224)
+(or (not x1483) (not x1233) (not x1224) x1482)
+(or (not x1482) (not x1233) x1224)
+(or (not x1482) (not x1224) x1233)
+(or (not x1482) x1483)
+(or (not x1482) x1481 x1232 x1225)
+(or (not x1482) (not x1232) (not x1225) x1481)
+(or (not x1481) (not x1232) x1225)
+(or (not x1481) (not x1225) x1232)
+(or (not x1481) x1482)
+(or (not x1480) (not x411) (not x395))
+(or (not x411) (not x395) x1479)
+(or (not x1480) (not x408) (not x395) x55)
+(or (not x408) (not x395) (not x55) x1480)
+(or (not x1479) (not x408) (not x395))
+(or (not x1480) (not x406) (not x395) x53)
+(or (not x406) (not x395) (not x53) x1480)
+(or (not x1479) (not x406) (not x395))
+(or (not x1480) (not x411) (not x392) x51)
+(or (not x411) (not x392) (not x51) x1480)
+(or (not x1479) (not x411) (not x392))
+(or (not x1480) (not x408) (not x392))
+(or (not x408) (not x392) x1479)
+(or (not x1480) (not x406) (not x392) x47)
+(or (not x406) (not x392) (not x47) x1480)
+(or (not x1479) (not x406) (not x392))
+(or (not x1480) (not x411) (not x389) x45)
+(or (not x411) (not x389) (not x45) x1480)
+(or (not x1479) (not x411) (not x389))
+(or (not x1480) (not x408) (not x389) x41)
+(or (not x408) (not x389) (not x41) x1480)
+(or (not x1479) (not x408) (not x389))
+(or (not x1480) (not x406) (not x389))
+(or (not x406) (not x389) x1479)
+(or (not x307) (not x1475) (not x1469) x1478 x1477)
+(or (not x307) (not x1469) x1476 x1475)
+(or (not x307) x1470 x1469)
+(or (not x1477) (not x1475) (not x1469) x307)
+(or (not x1478) (not x1475) (not x1469) x307)
+(or (not x1476) (not x1469) x307)
+(or (not x1470) x307)
+(or (not x1478) (not x1477))
+(or (not x1302) x1478 x1305 x891)
+(or (not x1478) (not x1302) (not x891) x1305)
+(or (not x1478) (not x1305) x1302 x891)
+(or (not x1305) (not x891) x1478 x1302)
+(or (not x1301) x1478 x1304 x891)
+(or (not x1478) (not x1301) (not x891) x1304)
+(or (not x1478) (not x1304) x1301 x891)
+(or (not x1304) (not x891) x1478 x1301)
+(or (not x1300) x1478 x1303 x891)
+(or (not x1478) (not x1300) (not x891) x1303)
+(or (not x1478) (not x1303) x1300 x891)
+(or (not x1303) (not x891) x1478 x1300)
+(or (not x1304) (not x1301) x1477 x1305 x1302)
+(or (not x1303) (not x1300) x1477 x1304 x1301)
+(or x1477 x1303 x1300)
+(or (not x1305) (not x1302) x1477)
+(or (not x1477) (not x1305) x1302)
+(or (not x1477) (not x1302) x1305)
+(or (not x1477) (not x1304) x1301)
+(or (not x1477) (not x1301) x1304)
+(or (not x1477) (not x1303) x1300)
+(or (not x1477) (not x1300) x1303)
+(or (not x34) x1476 x1474 x1231)
+(or (not x1476) (not x1231) (not x34) x1474)
+(or (not x1476) x1474 x1231 x34)
+(or (not x1231) x1476 x1474 x34)
+(or (not x1474) (not x29) x1476 x1473 x1230)
+(or (not x1476) (not x1474) (not x1230) (not x29) x1473)
+(or (not x1476) (not x1474) x1473 x1230 x29)
+(or (not x1474) (not x1230) x1476 x1473 x29)
+(or (not x1473) (not x27) x1476 x1472 x1229)
+(or (not x1476) (not x1473) (not x1229) (not x27) x1472)
+(or (not x1476) (not x1473) x1472 x1229 x27)
+(or (not x1473) (not x1229) x1476 x1472 x27)
+(or (not x1472) (not x1356) x1476 x1471 x1228)
+(or (not x1476) (not x1472) (not x1228) (not x1356) x1471)
+(or (not x1476) (not x1472) x1471 x1228 x1356)
+(or (not x1472) (not x1228) x1476 x1471 x1356)
+(or (not x1476) (not x1475))
+(or (not x1471) x1475)
+(or (not x1475) x1471)
+(or x1474 x1231 x1227)
+(or (not x1231) (not x1227) x1474)
+(or (not x1474) (not x1231) x1227)
+(or (not x1474) (not x1227) x1231)
+(or (not x1474) x1473 x1230 x1226)
+(or (not x1474) (not x1230) (not x1226) x1473)
+(or (not x1473) (not x1230) x1226)
+(or (not x1473) (not x1226) x1230)
+(or (not x1473) x1474)
+(or (not x1473) x1472 x1229 x1224)
+(or (not x1473) (not x1229) (not x1224) x1472)
+(or (not x1472) (not x1229) x1224)
+(or (not x1472) (not x1224) x1229)
+(or (not x1472) x1473)
+(or (not x1472) x1471 x1228 x1225)
+(or (not x1472) (not x1228) (not x1225) x1471)
+(or (not x1471) (not x1228) x1225)
+(or (not x1471) (not x1225) x1228)
+(or (not x1471) x1472)
+(or (not x1470) (not x403) (not x395))
+(or (not x403) (not x395) x1469)
+(or (not x1470) (not x401) (not x395) x55)
+(or (not x401) (not x395) (not x55) x1470)
+(or (not x1469) (not x401) (not x395))
+(or (not x1470) (not x398) (not x395) x53)
+(or (not x398) (not x395) (not x53) x1470)
+(or (not x1469) (not x398) (not x395))
+(or (not x1470) (not x403) (not x392) x51)
+(or (not x403) (not x392) (not x51) x1470)
+(or (not x1469) (not x403) (not x392))
+(or (not x1470) (not x401) (not x392))
+(or (not x401) (not x392) x1469)
+(or (not x1470) (not x398) (not x392) x47)
+(or (not x398) (not x392) (not x47) x1470)
+(or (not x1469) (not x398) (not x392))
+(or (not x1470) (not x403) (not x389) x45)
+(or (not x403) (not x389) (not x45) x1470)
+(or (not x1469) (not x403) (not x389))
+(or (not x1470) (not x401) (not x389) x41)
+(or (not x401) (not x389) (not x41) x1470)
+(or (not x1469) (not x401) (not x389))
+(or (not x1470) (not x398) (not x389))
+(or (not x398) (not x389) x1469)
+(or (not x980) (not x108) (not x23) x272)
+(or (not x980) (not x108) (not x24) x278)
+(or (not x978) (not x108) (not x22) x274)
+(or (not x978) (not x108) (not x24) x285)
+(or (not x976) (not x108) (not x22) x281)
+(or (not x976) (not x108) (not x23) x288)
+(or (not x955) (not x80) (not x18) x273)
+(or (not x955) (not x80) (not x19) x279)
+(or (not x952) (not x80) (not x17) x276)
+(or (not x952) (not x80) (not x19) x285)
+(or (not x950) (not x80) (not x17) x284)
+(or (not x950) (not x80) (not x18) x288)
+(or (not x931) (not x71) (not x13) x275)
+(or (not x931) (not x71) (not x14) x279)
+(or (not x929) (not x71) (not x12) x277)
+(or (not x929) (not x71) (not x14) x278)
+(or (not x926) (not x71) (not x12) x284)
+(or (not x926) (not x71) (not x13) x281)
+(or (not x912) (not x60) (not x7) x275)
+(or (not x275) (not x1465) (not x1459) x1468 x1467)
+(or (not x275) (not x1459) x1466 x1465)
+(or (not x275) x1460 x1459)
+(or (not x1467) (not x1465) (not x1459) x275)
+(or (not x1468) (not x1465) (not x1459) x275)
+(or (not x1466) (not x1459) x275)
+(or (not x1460) x275)
+(or (not x1468) (not x1467))
+(or (not x1299) x1468 x1296 x890)
+(or (not x1468) (not x1299) (not x890) x1296)
+(or (not x1468) (not x1296) x1299 x890)
+(or (not x1296) (not x890) x1468 x1299)
+(or (not x1298) x1468 x1295 x890)
+(or (not x1468) (not x1298) (not x890) x1295)
+(or (not x1468) (not x1295) x1298 x890)
+(or (not x1295) (not x890) x1468 x1298)
+(or (not x1297) x1468 x1294 x890)
+(or (not x1468) (not x1297) (not x890) x1294)
+(or (not x1468) (not x1294) x1297 x890)
+(or (not x1294) (not x890) x1468 x1297)
+(or (not x1298) (not x1295) x1467 x1299 x1296)
+(or (not x1297) (not x1294) x1467 x1298 x1295)
+(or x1467 x1297 x1294)
+(or (not x1299) (not x1296) x1467)
+(or (not x1467) (not x1296) x1299)
+(or (not x1467) (not x1299) x1296)
+(or (not x1467) (not x1295) x1298)
+(or (not x1467) (not x1298) x1295)
+(or (not x1467) (not x1294) x1297)
+(or (not x1467) (not x1297) x1294)
+(or (not x34) x1466 x1464 x1219)
+(or (not x1466) (not x1219) (not x34) x1464)
+(or (not x1466) x1464 x1219 x34)
+(or (not x1219) x1466 x1464 x34)
+(or (not x1464) (not x29) x1466 x1463 x1218)
+(or (not x1466) (not x1464) (not x1218) (not x29) x1463)
+(or (not x1466) (not x1464) x1463 x1218 x29)
+(or (not x1464) (not x1218) x1466 x1463 x29)
+(or (not x1463) (not x27) x1466 x1462 x1217)
+(or (not x1466) (not x1463) (not x1217) (not x27) x1462)
+(or (not x1466) (not x1463) x1462 x1217 x27)
+(or (not x1463) (not x1217) x1466 x1462 x27)
+(or (not x1462) (not x1356) x1466 x1461 x1216)
+(or (not x1466) (not x1462) (not x1216) (not x1356) x1461)
+(or (not x1466) (not x1462) x1461 x1216 x1356)
+(or (not x1462) (not x1216) x1466 x1461 x1356)
+(or (not x1466) (not x1465))
+(or (not x1461) x1465)
+(or (not x1465) x1461)
+(or x1464 x1223 x1219)
+(or (not x1223) (not x1219) x1464)
+(or (not x1464) (not x1219) x1223)
+(or (not x1464) (not x1223) x1219)
+(or (not x1464) x1463 x1222 x1218)
+(or (not x1464) (not x1222) (not x1218) x1463)
+(or (not x1463) (not x1218) x1222)
+(or (not x1463) (not x1222) x1218)
+(or (not x1463) x1464)
+(or (not x1463) x1462 x1221 x1217)
+(or (not x1463) (not x1221) (not x1217) x1462)
+(or (not x1462) (not x1217) x1221)
+(or (not x1462) (not x1221) x1217)
+(or (not x1462) x1463)
+(or (not x1462) x1461 x1220 x1216)
+(or (not x1462) (not x1220) (not x1216) x1461)
+(or (not x1461) (not x1216) x1220)
+(or (not x1461) (not x1220) x1216)
+(or (not x1461) x1462)
+(or (not x1460) (not x417) (not x410))
+(or (not x417) (not x410) x1459)
+(or (not x1460) (not x417) (not x407) x55)
+(or (not x417) (not x407) (not x55) x1460)
+(or (not x1459) (not x417) (not x407))
+(or (not x1460) (not x417) (not x405) x53)
+(or (not x417) (not x405) (not x53) x1460)
+(or (not x1459) (not x417) (not x405))
+(or (not x1460) (not x415) (not x410) x51)
+(or (not x415) (not x410) (not x51) x1460)
+(or (not x1459) (not x415) (not x410))
+(or (not x1460) (not x415) (not x407))
+(or (not x415) (not x407) x1459)
+(or (not x1460) (not x415) (not x405) x47)
+(or (not x415) (not x405) (not x47) x1460)
+(or (not x1459) (not x415) (not x405))
+(or (not x1460) (not x412) (not x410) x45)
+(or (not x412) (not x410) (not x45) x1460)
+(or (not x1459) (not x412) (not x410))
+(or (not x1460) (not x412) (not x407) x41)
+(or (not x412) (not x407) (not x41) x1460)
+(or (not x1459) (not x412) (not x407))
+(or (not x1460) (not x412) (not x405))
+(or (not x412) (not x405) x1459)
+(or (not x912) (not x60) (not x8) x273)
+(or (not x273) (not x1455) (not x1449) x1458 x1457)
+(or (not x273) (not x1449) x1456 x1455)
+(or (not x273) x1450 x1449)
+(or (not x1457) (not x1455) (not x1449) x273)
+(or (not x1458) (not x1455) (not x1449) x273)
+(or (not x1456) (not x1449) x273)
+(or (not x1450) x273)
+(or (not x1458) (not x1457))
+(or (not x1299) x1458 x1293 x890)
+(or (not x1458) (not x1299) (not x890) x1293)
+(or (not x1458) (not x1293) x1299 x890)
+(or (not x1293) (not x890) x1458 x1299)
+(or (not x1298) x1458 x1292 x890)
+(or (not x1458) (not x1298) (not x890) x1292)
+(or (not x1458) (not x1292) x1298 x890)
+(or (not x1292) (not x890) x1458 x1298)
+(or (not x1297) x1458 x1291 x890)
+(or (not x1458) (not x1297) (not x890) x1291)
+(or (not x1458) (not x1291) x1297 x890)
+(or (not x1291) (not x890) x1458 x1297)
+(or (not x1298) (not x1292) x1457 x1299 x1293)
+(or (not x1297) (not x1291) x1457 x1298 x1292)
+(or x1457 x1297 x1291)
+(or (not x1299) (not x1293) x1457)
+(or (not x1457) (not x1293) x1299)
+(or (not x1457) (not x1299) x1293)
+(or (not x1457) (not x1292) x1298)
+(or (not x1457) (not x1298) x1292)
+(or (not x1457) (not x1291) x1297)
+(or (not x1457) (not x1297) x1291)
+(or (not x34) x1456 x1454 x1215)
+(or (not x1456) (not x1215) (not x34) x1454)
+(or (not x1456) x1454 x1215 x34)
+(or (not x1215) x1456 x1454 x34)
+(or (not x1454) (not x29) x1456 x1453 x1214)
+(or (not x1456) (not x1454) (not x1214) (not x29) x1453)
+(or (not x1456) (not x1454) x1453 x1214 x29)
+(or (not x1454) (not x1214) x1456 x1453 x29)
+(or (not x1453) (not x27) x1456 x1452 x1213)
+(or (not x1456) (not x1453) (not x1213) (not x27) x1452)
+(or (not x1456) (not x1453) x1452 x1213 x27)
+(or (not x1453) (not x1213) x1456 x1452 x27)
+(or (not x1452) (not x1356) x1456 x1451 x1212)
+(or (not x1456) (not x1452) (not x1212) (not x1356) x1451)
+(or (not x1456) (not x1452) x1451 x1212 x1356)
+(or (not x1452) (not x1212) x1456 x1451 x1356)
+(or (not x1456) (not x1455))
+(or (not x1451) x1455)
+(or (not x1455) x1451)
+(or x1454 x1223 x1215)
+(or (not x1223) (not x1215) x1454)
+(or (not x1454) (not x1215) x1223)
+(or (not x1454) (not x1223) x1215)
+(or (not x1454) x1453 x1222 x1214)
+(or (not x1454) (not x1222) (not x1214) x1453)
+(or (not x1453) (not x1214) x1222)
+(or (not x1453) (not x1222) x1214)
+(or (not x1453) x1454)
+(or (not x1453) x1452 x1221 x1213)
+(or (not x1453) (not x1221) (not x1213) x1452)
+(or (not x1452) (not x1213) x1221)
+(or (not x1452) (not x1221) x1213)
+(or (not x1452) x1453)
+(or (not x1452) x1451 x1220 x1212)
+(or (not x1452) (not x1220) (not x1212) x1451)
+(or (not x1451) (not x1212) x1220)
+(or (not x1451) (not x1220) x1212)
+(or (not x1451) x1452)
+(or (not x1450) (not x417) (not x402))
+(or (not x417) (not x402) x1449)
+(or (not x1450) (not x417) (not x400) x55)
+(or (not x417) (not x400) (not x55) x1450)
+(or (not x1449) (not x417) (not x400))
+(or (not x1450) (not x417) (not x397) x53)
+(or (not x417) (not x397) (not x53) x1450)
+(or (not x1449) (not x417) (not x397))
+(or (not x1450) (not x415) (not x402) x51)
+(or (not x415) (not x402) (not x51) x1450)
+(or (not x1449) (not x415) (not x402))
+(or (not x1450) (not x415) (not x400))
+(or (not x415) (not x400) x1449)
+(or (not x1450) (not x415) (not x397) x47)
+(or (not x415) (not x397) (not x47) x1450)
+(or (not x1449) (not x415) (not x397))
+(or (not x1450) (not x412) (not x402) x45)
+(or (not x412) (not x402) (not x45) x1450)
+(or (not x1449) (not x412) (not x402))
+(or (not x1450) (not x412) (not x400) x41)
+(or (not x412) (not x400) (not x41) x1450)
+(or (not x1449) (not x412) (not x400))
+(or (not x1450) (not x412) (not x397))
+(or (not x412) (not x397) x1449)
+(or (not x279) (not x1445) (not x1439) x1448 x1447)
+(or (not x279) (not x1439) x1446 x1445)
+(or (not x279) x1440 x1439)
+(or (not x1447) (not x1445) (not x1439) x279)
+(or (not x1448) (not x1445) (not x1439) x279)
+(or (not x1446) (not x1439) x279)
+(or (not x1440) x279)
+(or (not x1448) (not x1447))
+(or (not x1299) x1448 x1290 x890)
+(or (not x1448) (not x1299) (not x890) x1290)
+(or (not x1448) (not x1290) x1299 x890)
+(or (not x1290) (not x890) x1448 x1299)
+(or (not x1298) x1448 x1289 x890)
+(or (not x1448) (not x1298) (not x890) x1289)
+(or (not x1448) (not x1289) x1298 x890)
+(or (not x1289) (not x890) x1448 x1298)
+(or (not x1297) x1448 x1288 x890)
+(or (not x1448) (not x1297) (not x890) x1288)
+(or (not x1448) (not x1288) x1297 x890)
+(or (not x1288) (not x890) x1448 x1297)
+(or (not x1298) (not x1289) x1447 x1299 x1290)
+(or (not x1297) (not x1288) x1447 x1298 x1289)
+(or x1447 x1297 x1288)
+(or (not x1299) (not x1290) x1447)
+(or (not x1447) (not x1290) x1299)
+(or (not x1447) (not x1299) x1290)
+(or (not x1447) (not x1289) x1298)
+(or (not x1447) (not x1298) x1289)
+(or (not x1447) (not x1288) x1297)
+(or (not x1447) (not x1297) x1288)
+(or (not x34) x1446 x1444 x1211)
+(or (not x1446) (not x1211) (not x34) x1444)
+(or (not x1446) x1444 x1211 x34)
+(or (not x1211) x1446 x1444 x34)
+(or (not x1444) (not x29) x1446 x1443 x1210)
+(or (not x1446) (not x1444) (not x1210) (not x29) x1443)
+(or (not x1446) (not x1444) x1443 x1210 x29)
+(or (not x1444) (not x1210) x1446 x1443 x29)
+(or (not x1443) (not x27) x1446 x1442 x1208)
+(or (not x1446) (not x1443) (not x1208) (not x27) x1442)
+(or (not x1446) (not x1443) x1442 x1208 x27)
+(or (not x1443) (not x1208) x1446 x1442 x27)
+(or (not x1442) (not x1356) x1446 x1441 x1209)
+(or (not x1446) (not x1442) (not x1209) (not x1356) x1441)
+(or (not x1446) (not x1442) x1441 x1209 x1356)
+(or (not x1442) (not x1209) x1446 x1441 x1356)
+(or (not x1446) (not x1445))
+(or (not x1441) x1445)
+(or (not x1445) x1441)
+(or x1444 x1223 x1211)
+(or (not x1223) (not x1211) x1444)
+(or (not x1444) (not x1211) x1223)
+(or (not x1444) (not x1223) x1211)
+(or (not x1444) x1443 x1222 x1210)
+(or (not x1444) (not x1222) (not x1210) x1443)
+(or (not x1443) (not x1210) x1222)
+(or (not x1443) (not x1222) x1210)
+(or (not x1443) x1444)
+(or (not x1443) x1442 x1221 x1208)
+(or (not x1443) (not x1221) (not x1208) x1442)
+(or (not x1442) (not x1208) x1221)
+(or (not x1442) (not x1221) x1208)
+(or (not x1442) x1443)
+(or (not x1442) x1441 x1220 x1209)
+(or (not x1442) (not x1220) (not x1209) x1441)
+(or (not x1441) (not x1209) x1220)
+(or (not x1441) (not x1220) x1209)
+(or (not x1441) x1442)
+(or (not x1440) (not x417) (not x394))
+(or (not x417) (not x394) x1439)
+(or (not x1440) (not x417) (not x391) x55)
+(or (not x417) (not x391) (not x55) x1440)
+(or (not x1439) (not x417) (not x391))
+(or (not x1440) (not x417) (not x388) x53)
+(or (not x417) (not x388) (not x53) x1440)
+(or (not x1439) (not x417) (not x388))
+(or (not x1440) (not x415) (not x394) x51)
+(or (not x415) (not x394) (not x51) x1440)
+(or (not x1439) (not x415) (not x394))
+(or (not x1440) (not x415) (not x391))
+(or (not x415) (not x391) x1439)
+(or (not x1440) (not x415) (not x388) x47)
+(or (not x415) (not x388) (not x47) x1440)
+(or (not x1439) (not x415) (not x388))
+(or (not x1440) (not x412) (not x394) x45)
+(or (not x412) (not x394) (not x45) x1440)
+(or (not x1439) (not x412) (not x394))
+(or (not x1440) (not x412) (not x391) x41)
+(or (not x412) (not x391) (not x41) x1440)
+(or (not x1439) (not x412) (not x391))
+(or (not x1440) (not x412) (not x388))
+(or (not x412) (not x388) x1439)
+(or (not x910) (not x60) (not x6) x277)
+(or (not x277) (not x1435) (not x1429) x1438 x1437)
+(or (not x277) (not x1429) x1436 x1435)
+(or (not x277) x1430 x1429)
+(or (not x1437) (not x1435) (not x1429) x277)
+(or (not x1438) (not x1435) (not x1429) x277)
+(or (not x1436) (not x1429) x277)
+(or (not x1430) x277)
+(or (not x1438) (not x1437))
+(or (not x1296) x1438 x1299 x889)
+(or (not x1438) (not x1296) (not x889) x1299)
+(or (not x1438) (not x1299) x1296 x889)
+(or (not x1299) (not x889) x1438 x1296)
+(or (not x1295) x1438 x1298 x889)
+(or (not x1438) (not x1295) (not x889) x1298)
+(or (not x1438) (not x1298) x1295 x889)
+(or (not x1298) (not x889) x1438 x1295)
+(or (not x1294) x1438 x1297 x889)
+(or (not x1438) (not x1294) (not x889) x1297)
+(or (not x1438) (not x1297) x1294 x889)
+(or (not x1297) (not x889) x1438 x1294)
+(or (not x1298) (not x1295) x1437 x1299 x1296)
+(or (not x1297) (not x1294) x1437 x1298 x1295)
+(or x1437 x1297 x1294)
+(or (not x1299) (not x1296) x1437)
+(or (not x1437) (not x1299) x1296)
+(or (not x1437) (not x1296) x1299)
+(or (not x1437) (not x1298) x1295)
+(or (not x1437) (not x1295) x1298)
+(or (not x1437) (not x1297) x1294)
+(or (not x1437) (not x1294) x1297)
+(or (not x34) x1436 x1434 x1223)
+(or (not x1436) (not x1223) (not x34) x1434)
+(or (not x1436) x1434 x1223 x34)
+(or (not x1223) x1436 x1434 x34)
+(or (not x1434) (not x29) x1436 x1433 x1222)
+(or (not x1436) (not x1434) (not x1222) (not x29) x1433)
+(or (not x1436) (not x1434) x1433 x1222 x29)
+(or (not x1434) (not x1222) x1436 x1433 x29)
+(or (not x1433) (not x27) x1436 x1432 x1221)
+(or (not x1436) (not x1433) (not x1221) (not x27) x1432)
+(or (not x1436) (not x1433) x1432 x1221 x27)
+(or (not x1433) (not x1221) x1436 x1432 x27)
+(or (not x1432) (not x1356) x1436 x1431 x1220)
+(or (not x1436) (not x1432) (not x1220) (not x1356) x1431)
+(or (not x1436) (not x1432) x1431 x1220 x1356)
+(or (not x1432) (not x1220) x1436 x1431 x1356)
+(or (not x1436) (not x1435))
+(or (not x1431) x1435)
+(or (not x1435) x1431)
+(or x1434 x1223 x1219)
+(or (not x1223) (not x1219) x1434)
+(or (not x1434) (not x1223) x1219)
+(or (not x1434) (not x1219) x1223)
+(or (not x1434) x1433 x1222 x1218)
+(or (not x1434) (not x1222) (not x1218) x1433)
+(or (not x1433) (not x1222) x1218)
+(or (not x1433) (not x1218) x1222)
+(or (not x1433) x1434)
+(or (not x1433) x1432 x1221 x1217)
+(or (not x1433) (not x1221) (not x1217) x1432)
+(or (not x1432) (not x1221) x1217)
+(or (not x1432) (not x1217) x1221)
+(or (not x1432) x1433)
+(or (not x1432) x1431 x1220 x1216)
+(or (not x1432) (not x1220) (not x1216) x1431)
+(or (not x1431) (not x1220) x1216)
+(or (not x1431) (not x1216) x1220)
+(or (not x1431) x1432)
+(or (not x1430) (not x417) (not x410))
+(or (not x417) (not x410) x1429)
+(or (not x1430) (not x415) (not x410) x55)
+(or (not x415) (not x410) (not x55) x1430)
+(or (not x1429) (not x415) (not x410))
+(or (not x1430) (not x412) (not x410) x53)
+(or (not x412) (not x410) (not x53) x1430)
+(or (not x1429) (not x412) (not x410))
+(or (not x1430) (not x417) (not x407) x51)
+(or (not x417) (not x407) (not x51) x1430)
+(or (not x1429) (not x417) (not x407))
+(or (not x1430) (not x415) (not x407))
+(or (not x415) (not x407) x1429)
+(or (not x1430) (not x412) (not x407) x47)
+(or (not x412) (not x407) (not x47) x1430)
+(or (not x1429) (not x412) (not x407))
+(or (not x1430) (not x417) (not x405) x45)
+(or (not x417) (not x405) (not x45) x1430)
+(or (not x1429) (not x417) (not x405))
+(or (not x1430) (not x415) (not x405) x41)
+(or (not x415) (not x405) (not x41) x1430)
+(or (not x1429) (not x415) (not x405))
+(or (not x1430) (not x412) (not x405))
+(or (not x412) (not x405) x1429)
+(or (not x910) (not x60) (not x8) x272)
+(or (not x272) (not x1425) (not x1419) x1428 x1427)
+(or (not x272) (not x1419) x1426 x1425)
+(or (not x272) x1420 x1419)
+(or (not x1427) (not x1425) (not x1419) x272)
+(or (not x1428) (not x1425) (not x1419) x272)
+(or (not x1426) (not x1419) x272)
+(or (not x1420) x272)
+(or (not x1428) (not x1427))
+(or (not x1296) x1428 x1293 x889)
+(or (not x1428) (not x1296) (not x889) x1293)
+(or (not x1428) (not x1293) x1296 x889)
+(or (not x1293) (not x889) x1428 x1296)
+(or (not x1295) x1428 x1292 x889)
+(or (not x1428) (not x1295) (not x889) x1292)
+(or (not x1428) (not x1292) x1295 x889)
+(or (not x1292) (not x889) x1428 x1295)
+(or (not x1294) x1428 x1291 x889)
+(or (not x1428) (not x1294) (not x889) x1291)
+(or (not x1428) (not x1291) x1294 x889)
+(or (not x1291) (not x889) x1428 x1294)
+(or (not x1295) (not x1292) x1427 x1296 x1293)
+(or (not x1294) (not x1291) x1427 x1295 x1292)
+(or x1427 x1294 x1291)
+(or (not x1296) (not x1293) x1427)
+(or (not x1427) (not x1293) x1296)
+(or (not x1427) (not x1296) x1293)
+(or (not x1427) (not x1292) x1295)
+(or (not x1427) (not x1295) x1292)
+(or (not x1427) (not x1291) x1294)
+(or (not x1427) (not x1294) x1291)
+(or (not x34) x1426 x1424 x1215)
+(or (not x1426) (not x1215) (not x34) x1424)
+(or (not x1426) x1424 x1215 x34)
+(or (not x1215) x1426 x1424 x34)
+(or (not x1424) (not x29) x1426 x1423 x1214)
+(or (not x1426) (not x1424) (not x1214) (not x29) x1423)
+(or (not x1426) (not x1424) x1423 x1214 x29)
+(or (not x1424) (not x1214) x1426 x1423 x29)
+(or (not x1423) (not x27) x1426 x1422 x1213)
+(or (not x1426) (not x1423) (not x1213) (not x27) x1422)
+(or (not x1426) (not x1423) x1422 x1213 x27)
+(or (not x1423) (not x1213) x1426 x1422 x27)
+(or (not x1422) (not x1356) x1426 x1421 x1212)
+(or (not x1426) (not x1422) (not x1212) (not x1356) x1421)
+(or (not x1426) (not x1422) x1421 x1212 x1356)
+(or (not x1422) (not x1212) x1426 x1421 x1356)
+(or (not x1426) (not x1425))
+(or (not x1421) x1425)
+(or (not x1425) x1421)
+(or x1424 x1219 x1215)
+(or (not x1219) (not x1215) x1424)
+(or (not x1424) (not x1215) x1219)
+(or (not x1424) (not x1219) x1215)
+(or (not x1424) x1423 x1218 x1214)
+(or (not x1424) (not x1218) (not x1214) x1423)
+(or (not x1423) (not x1214) x1218)
+(or (not x1423) (not x1218) x1214)
+(or (not x1423) x1424)
+(or (not x1423) x1422 x1217 x1213)
+(or (not x1423) (not x1217) (not x1213) x1422)
+(or (not x1422) (not x1213) x1217)
+(or (not x1422) (not x1217) x1213)
+(or (not x1422) x1423)
+(or (not x1422) x1421 x1216 x1212)
+(or (not x1422) (not x1216) (not x1212) x1421)
+(or (not x1421) (not x1212) x1216)
+(or (not x1421) (not x1216) x1212)
+(or (not x1421) x1422)
+(or (not x1420) (not x410) (not x402))
+(or (not x410) (not x402) x1419)
+(or (not x1420) (not x410) (not x400) x55)
+(or (not x410) (not x400) (not x55) x1420)
+(or (not x1419) (not x410) (not x400))
+(or (not x1420) (not x410) (not x397) x53)
+(or (not x410) (not x397) (not x53) x1420)
+(or (not x1419) (not x410) (not x397))
+(or (not x1420) (not x407) (not x402) x51)
+(or (not x407) (not x402) (not x51) x1420)
+(or (not x1419) (not x407) (not x402))
+(or (not x1420) (not x407) (not x400))
+(or (not x407) (not x400) x1419)
+(or (not x1420) (not x407) (not x397) x47)
+(or (not x407) (not x397) (not x47) x1420)
+(or (not x1419) (not x407) (not x397))
+(or (not x1420) (not x405) (not x402) x45)
+(or (not x405) (not x402) (not x45) x1420)
+(or (not x1419) (not x405) (not x402))
+(or (not x1420) (not x405) (not x400) x41)
+(or (not x405) (not x400) (not x41) x1420)
+(or (not x1419) (not x405) (not x400))
+(or (not x1420) (not x405) (not x397))
+(or (not x405) (not x397) x1419)
+(or (not x278) (not x1415) (not x1409) x1418 x1417)
+(or (not x278) (not x1409) x1416 x1415)
+(or (not x278) x1410 x1409)
+(or (not x1417) (not x1415) (not x1409) x278)
+(or (not x1418) (not x1415) (not x1409) x278)
+(or (not x1416) (not x1409) x278)
+(or (not x1410) x278)
+(or (not x1418) (not x1417))
+(or (not x1296) x1418 x1290 x889)
+(or (not x1418) (not x1296) (not x889) x1290)
+(or (not x1418) (not x1290) x1296 x889)
+(or (not x1290) (not x889) x1418 x1296)
+(or (not x1295) x1418 x1289 x889)
+(or (not x1418) (not x1295) (not x889) x1289)
+(or (not x1418) (not x1289) x1295 x889)
+(or (not x1289) (not x889) x1418 x1295)
+(or (not x1294) x1418 x1288 x889)
+(or (not x1418) (not x1294) (not x889) x1288)
+(or (not x1418) (not x1288) x1294 x889)
+(or (not x1288) (not x889) x1418 x1294)
+(or (not x1295) (not x1289) x1417 x1296 x1290)
+(or (not x1294) (not x1288) x1417 x1295 x1289)
+(or x1417 x1294 x1288)
+(or (not x1296) (not x1290) x1417)
+(or (not x1417) (not x1290) x1296)
+(or (not x1417) (not x1296) x1290)
+(or (not x1417) (not x1289) x1295)
+(or (not x1417) (not x1295) x1289)
+(or (not x1417) (not x1288) x1294)
+(or (not x1417) (not x1294) x1288)
+(or (not x34) x1416 x1414 x1211)
+(or (not x1416) (not x1211) (not x34) x1414)
+(or (not x1416) x1414 x1211 x34)
+(or (not x1211) x1416 x1414 x34)
+(or (not x1414) (not x29) x1416 x1413 x1210)
+(or (not x1416) (not x1414) (not x1210) (not x29) x1413)
+(or (not x1416) (not x1414) x1413 x1210 x29)
+(or (not x1414) (not x1210) x1416 x1413 x29)
+(or (not x1413) (not x27) x1416 x1412 x1208)
+(or (not x1416) (not x1413) (not x1208) (not x27) x1412)
+(or (not x1416) (not x1413) x1412 x1208 x27)
+(or (not x1413) (not x1208) x1416 x1412 x27)
+(or (not x1412) (not x1356) x1416 x1411 x1209)
+(or (not x1416) (not x1412) (not x1209) (not x1356) x1411)
+(or (not x1416) (not x1412) x1411 x1209 x1356)
+(or (not x1412) (not x1209) x1416 x1411 x1356)
+(or (not x1416) (not x1415))
+(or (not x1411) x1415)
+(or (not x1415) x1411)
+(or x1414 x1219 x1211)
+(or (not x1219) (not x1211) x1414)
+(or (not x1414) (not x1211) x1219)
+(or (not x1414) (not x1219) x1211)
+(or (not x1414) x1413 x1218 x1210)
+(or (not x1414) (not x1218) (not x1210) x1413)
+(or (not x1413) (not x1210) x1218)
+(or (not x1413) (not x1218) x1210)
+(or (not x1413) x1414)
+(or (not x1413) x1412 x1217 x1208)
+(or (not x1413) (not x1217) (not x1208) x1412)
+(or (not x1412) (not x1208) x1217)
+(or (not x1412) (not x1217) x1208)
+(or (not x1412) x1413)
+(or (not x1412) x1411 x1216 x1209)
+(or (not x1412) (not x1216) (not x1209) x1411)
+(or (not x1411) (not x1209) x1216)
+(or (not x1411) (not x1216) x1209)
+(or (not x1411) x1412)
+(or (not x1410) (not x410) (not x394))
+(or (not x410) (not x394) x1409)
+(or (not x1410) (not x410) (not x391) x55)
+(or (not x410) (not x391) (not x55) x1410)
+(or (not x1409) (not x410) (not x391))
+(or (not x1410) (not x410) (not x388) x53)
+(or (not x410) (not x388) (not x53) x1410)
+(or (not x1409) (not x410) (not x388))
+(or (not x1410) (not x407) (not x394) x51)
+(or (not x407) (not x394) (not x51) x1410)
+(or (not x1409) (not x407) (not x394))
+(or (not x1410) (not x407) (not x391))
+(or (not x407) (not x391) x1409)
+(or (not x1410) (not x407) (not x388) x47)
+(or (not x407) (not x388) (not x47) x1410)
+(or (not x1409) (not x407) (not x388))
+(or (not x1410) (not x405) (not x394) x45)
+(or (not x405) (not x394) (not x45) x1410)
+(or (not x1409) (not x405) (not x394))
+(or (not x1410) (not x405) (not x391) x41)
+(or (not x405) (not x391) (not x41) x1410)
+(or (not x1409) (not x405) (not x391))
+(or (not x1410) (not x405) (not x388))
+(or (not x405) (not x388) x1409)
+(or (not x908) (not x60) (not x6) x276)
+(or (not x276) (not x1405) (not x1399) x1408 x1407)
+(or (not x276) (not x1399) x1406 x1405)
+(or (not x276) x1400 x1399)
+(or (not x1407) (not x1405) (not x1399) x276)
+(or (not x1408) (not x1405) (not x1399) x276)
+(or (not x1406) (not x1399) x276)
+(or (not x1400) x276)
+(or (not x1408) (not x1407))
+(or (not x1293) x1408 x1299 x888)
+(or (not x1408) (not x1293) (not x888) x1299)
+(or (not x1408) (not x1299) x1293 x888)
+(or (not x1299) (not x888) x1408 x1293)
+(or (not x1292) x1408 x1298 x888)
+(or (not x1408) (not x1292) (not x888) x1298)
+(or (not x1408) (not x1298) x1292 x888)
+(or (not x1298) (not x888) x1408 x1292)
+(or (not x1291) x1408 x1297 x888)
+(or (not x1408) (not x1291) (not x888) x1297)
+(or (not x1408) (not x1297) x1291 x888)
+(or (not x1297) (not x888) x1408 x1291)
+(or (not x1298) (not x1292) x1407 x1299 x1293)
+(or (not x1297) (not x1291) x1407 x1298 x1292)
+(or x1407 x1297 x1291)
+(or (not x1299) (not x1293) x1407)
+(or (not x1407) (not x1299) x1293)
+(or (not x1407) (not x1293) x1299)
+(or (not x1407) (not x1298) x1292)
+(or (not x1407) (not x1292) x1298)
+(or (not x1407) (not x1297) x1291)
+(or (not x1407) (not x1291) x1297)
+(or (not x34) x1406 x1404 x1223)
+(or (not x1406) (not x1223) (not x34) x1404)
+(or (not x1406) x1404 x1223 x34)
+(or (not x1223) x1406 x1404 x34)
+(or (not x1404) (not x29) x1406 x1403 x1222)
+(or (not x1406) (not x1404) (not x1222) (not x29) x1403)
+(or (not x1406) (not x1404) x1403 x1222 x29)
+(or (not x1404) (not x1222) x1406 x1403 x29)
+(or (not x1403) (not x27) x1406 x1402 x1221)
+(or (not x1406) (not x1403) (not x1221) (not x27) x1402)
+(or (not x1406) (not x1403) x1402 x1221 x27)
+(or (not x1403) (not x1221) x1406 x1402 x27)
+(or (not x1402) (not x1356) x1406 x1401 x1220)
+(or (not x1406) (not x1402) (not x1220) (not x1356) x1401)
+(or (not x1406) (not x1402) x1401 x1220 x1356)
+(or (not x1402) (not x1220) x1406 x1401 x1356)
+(or (not x1406) (not x1405))
+(or (not x1401) x1405)
+(or (not x1405) x1401)
+(or x1404 x1223 x1215)
+(or (not x1223) (not x1215) x1404)
+(or (not x1404) (not x1223) x1215)
+(or (not x1404) (not x1215) x1223)
+(or (not x1404) x1403 x1222 x1214)
+(or (not x1404) (not x1222) (not x1214) x1403)
+(or (not x1403) (not x1222) x1214)
+(or (not x1403) (not x1214) x1222)
+(or (not x1403) x1404)
+(or (not x1403) x1402 x1221 x1213)
+(or (not x1403) (not x1221) (not x1213) x1402)
+(or (not x1402) (not x1221) x1213)
+(or (not x1402) (not x1213) x1221)
+(or (not x1402) x1403)
+(or (not x1402) x1401 x1220 x1212)
+(or (not x1402) (not x1220) (not x1212) x1401)
+(or (not x1401) (not x1220) x1212)
+(or (not x1401) (not x1212) x1220)
+(or (not x1401) x1402)
+(or (not x1400) (not x417) (not x402))
+(or (not x417) (not x402) x1399)
+(or (not x1400) (not x415) (not x402) x55)
+(or (not x415) (not x402) (not x55) x1400)
+(or (not x1399) (not x415) (not x402))
+(or (not x1400) (not x412) (not x402) x53)
+(or (not x412) (not x402) (not x53) x1400)
+(or (not x1399) (not x412) (not x402))
+(or (not x1400) (not x417) (not x400) x51)
+(or (not x417) (not x400) (not x51) x1400)
+(or (not x1399) (not x417) (not x400))
+(or (not x1400) (not x415) (not x400))
+(or (not x415) (not x400) x1399)
+(or (not x1400) (not x412) (not x400) x47)
+(or (not x412) (not x400) (not x47) x1400)
+(or (not x1399) (not x412) (not x400))
+(or (not x1400) (not x417) (not x397) x45)
+(or (not x417) (not x397) (not x45) x1400)
+(or (not x1399) (not x417) (not x397))
+(or (not x1400) (not x415) (not x397) x41)
+(or (not x415) (not x397) (not x41) x1400)
+(or (not x1399) (not x415) (not x397))
+(or (not x1400) (not x412) (not x397))
+(or (not x412) (not x397) x1399)
+(or (not x908) (not x60) (not x7) x274)
+(or (not x274) (not x1395) (not x1389) x1398 x1397)
+(or (not x274) (not x1389) x1396 x1395)
+(or (not x274) x1390 x1389)
+(or (not x1397) (not x1395) (not x1389) x274)
+(or (not x1398) (not x1395) (not x1389) x274)
+(or (not x1396) (not x1389) x274)
+(or (not x1390) x274)
+(or (not x1398) (not x1397))
+(or (not x1293) x1398 x1296 x888)
+(or (not x1398) (not x1293) (not x888) x1296)
+(or (not x1398) (not x1296) x1293 x888)
+(or (not x1296) (not x888) x1398 x1293)
+(or (not x1292) x1398 x1295 x888)
+(or (not x1398) (not x1292) (not x888) x1295)
+(or (not x1398) (not x1295) x1292 x888)
+(or (not x1295) (not x888) x1398 x1292)
+(or (not x1291) x1398 x1294 x888)
+(or (not x1398) (not x1291) (not x888) x1294)
+(or (not x1398) (not x1294) x1291 x888)
+(or (not x1294) (not x888) x1398 x1291)
+(or (not x1295) (not x1292) x1397 x1296 x1293)
+(or (not x1294) (not x1291) x1397 x1295 x1292)
+(or x1397 x1294 x1291)
+(or (not x1296) (not x1293) x1397)
+(or (not x1397) (not x1296) x1293)
+(or (not x1397) (not x1293) x1296)
+(or (not x1397) (not x1295) x1292)
+(or (not x1397) (not x1292) x1295)
+(or (not x1397) (not x1294) x1291)
+(or (not x1397) (not x1291) x1294)
+(or (not x34) x1396 x1394 x1219)
+(or (not x1396) (not x1219) (not x34) x1394)
+(or (not x1396) x1394 x1219 x34)
+(or (not x1219) x1396 x1394 x34)
+(or (not x1394) (not x29) x1396 x1393 x1218)
+(or (not x1396) (not x1394) (not x1218) (not x29) x1393)
+(or (not x1396) (not x1394) x1393 x1218 x29)
+(or (not x1394) (not x1218) x1396 x1393 x29)
+(or (not x1393) (not x27) x1396 x1392 x1217)
+(or (not x1396) (not x1393) (not x1217) (not x27) x1392)
+(or (not x1396) (not x1393) x1392 x1217 x27)
+(or (not x1393) (not x1217) x1396 x1392 x27)
+(or (not x1392) (not x1356) x1396 x1391 x1216)
+(or (not x1396) (not x1392) (not x1216) (not x1356) x1391)
+(or (not x1396) (not x1392) x1391 x1216 x1356)
+(or (not x1392) (not x1216) x1396 x1391 x1356)
+(or (not x1396) (not x1395))
+(or (not x1391) x1395)
+(or (not x1395) x1391)
+(or x1394 x1219 x1215)
+(or (not x1219) (not x1215) x1394)
+(or (not x1394) (not x1219) x1215)
+(or (not x1394) (not x1215) x1219)
+(or (not x1394) x1393 x1218 x1214)
+(or (not x1394) (not x1218) (not x1214) x1393)
+(or (not x1393) (not x1218) x1214)
+(or (not x1393) (not x1214) x1218)
+(or (not x1393) x1394)
+(or (not x1393) x1392 x1217 x1213)
+(or (not x1393) (not x1217) (not x1213) x1392)
+(or (not x1392) (not x1217) x1213)
+(or (not x1392) (not x1213) x1217)
+(or (not x1392) x1393)
+(or (not x1392) x1391 x1216 x1212)
+(or (not x1392) (not x1216) (not x1212) x1391)
+(or (not x1391) (not x1216) x1212)
+(or (not x1391) (not x1212) x1216)
+(or (not x1391) x1392)
+(or (not x1390) (not x410) (not x402))
+(or (not x410) (not x402) x1389)
+(or (not x1390) (not x407) (not x402) x55)
+(or (not x407) (not x402) (not x55) x1390)
+(or (not x1389) (not x407) (not x402))
+(or (not x1390) (not x405) (not x402) x53)
+(or (not x405) (not x402) (not x53) x1390)
+(or (not x1389) (not x405) (not x402))
+(or (not x1390) (not x410) (not x400) x51)
+(or (not x410) (not x400) (not x51) x1390)
+(or (not x1389) (not x410) (not x400))
+(or (not x1390) (not x407) (not x400))
+(or (not x407) (not x400) x1389)
+(or (not x1390) (not x405) (not x400) x47)
+(or (not x405) (not x400) (not x47) x1390)
+(or (not x1389) (not x405) (not x400))
+(or (not x1390) (not x410) (not x397) x45)
+(or (not x410) (not x397) (not x45) x1390)
+(or (not x1389) (not x410) (not x397))
+(or (not x1390) (not x407) (not x397) x41)
+(or (not x407) (not x397) (not x41) x1390)
+(or (not x1389) (not x407) (not x397))
+(or (not x1390) (not x405) (not x397))
+(or (not x405) (not x397) x1389)
+(or (not x285) (not x1385) (not x1379) x1388 x1387)
+(or (not x285) (not x1379) x1386 x1385)
+(or (not x285) x1380 x1379)
+(or (not x1387) (not x1385) (not x1379) x285)
+(or (not x1388) (not x1385) (not x1379) x285)
+(or (not x1386) (not x1379) x285)
+(or (not x1380) x285)
+(or (not x1388) (not x1387))
+(or (not x1293) x1388 x1290 x888)
+(or (not x1388) (not x1293) (not x888) x1290)
+(or (not x1388) (not x1290) x1293 x888)
+(or (not x1290) (not x888) x1388 x1293)
+(or (not x1292) x1388 x1289 x888)
+(or (not x1388) (not x1292) (not x888) x1289)
+(or (not x1388) (not x1289) x1292 x888)
+(or (not x1289) (not x888) x1388 x1292)
+(or (not x1291) x1388 x1288 x888)
+(or (not x1388) (not x1291) (not x888) x1288)
+(or (not x1388) (not x1288) x1291 x888)
+(or (not x1288) (not x888) x1388 x1291)
+(or (not x1292) (not x1289) x1387 x1293 x1290)
+(or (not x1291) (not x1288) x1387 x1292 x1289)
+(or x1387 x1291 x1288)
+(or (not x1293) (not x1290) x1387)
+(or (not x1387) (not x1290) x1293)
+(or (not x1387) (not x1293) x1290)
+(or (not x1387) (not x1289) x1292)
+(or (not x1387) (not x1292) x1289)
+(or (not x1387) (not x1288) x1291)
+(or (not x1387) (not x1291) x1288)
+(or (not x34) x1386 x1384 x1211)
+(or (not x1386) (not x1211) (not x34) x1384)
+(or (not x1386) x1384 x1211 x34)
+(or (not x1211) x1386 x1384 x34)
+(or (not x1384) (not x29) x1386 x1383 x1210)
+(or (not x1386) (not x1384) (not x1210) (not x29) x1383)
+(or (not x1386) (not x1384) x1383 x1210 x29)
+(or (not x1384) (not x1210) x1386 x1383 x29)
+(or (not x1383) (not x27) x1386 x1382 x1208)
+(or (not x1386) (not x1383) (not x1208) (not x27) x1382)
+(or (not x1386) (not x1383) x1382 x1208 x27)
+(or (not x1383) (not x1208) x1386 x1382 x27)
+(or (not x1382) (not x1356) x1386 x1381 x1209)
+(or (not x1386) (not x1382) (not x1209) (not x1356) x1381)
+(or (not x1386) (not x1382) x1381 x1209 x1356)
+(or (not x1382) (not x1209) x1386 x1381 x1356)
+(or (not x1386) (not x1385))
+(or (not x1381) x1385)
+(or (not x1385) x1381)
+(or x1384 x1215 x1211)
+(or (not x1215) (not x1211) x1384)
+(or (not x1384) (not x1211) x1215)
+(or (not x1384) (not x1215) x1211)
+(or (not x1384) x1383 x1214 x1210)
+(or (not x1384) (not x1214) (not x1210) x1383)
+(or (not x1383) (not x1210) x1214)
+(or (not x1383) (not x1214) x1210)
+(or (not x1383) x1384)
+(or (not x1383) x1382 x1213 x1208)
+(or (not x1383) (not x1213) (not x1208) x1382)
+(or (not x1382) (not x1208) x1213)
+(or (not x1382) (not x1213) x1208)
+(or (not x1382) x1383)
+(or (not x1382) x1381 x1212 x1209)
+(or (not x1382) (not x1212) (not x1209) x1381)
+(or (not x1381) (not x1209) x1212)
+(or (not x1381) (not x1212) x1209)
+(or (not x1381) x1382)
+(or (not x1380) (not x402) (not x394))
+(or (not x402) (not x394) x1379)
+(or (not x1380) (not x402) (not x391) x55)
+(or (not x402) (not x391) (not x55) x1380)
+(or (not x1379) (not x402) (not x391))
+(or (not x1380) (not x402) (not x388) x53)
+(or (not x402) (not x388) (not x53) x1380)
+(or (not x1379) (not x402) (not x388))
+(or (not x1380) (not x400) (not x394) x51)
+(or (not x400) (not x394) (not x51) x1380)
+(or (not x1379) (not x400) (not x394))
+(or (not x1380) (not x400) (not x391))
+(or (not x400) (not x391) x1379)
+(or (not x1380) (not x400) (not x388) x47)
+(or (not x400) (not x388) (not x47) x1380)
+(or (not x1379) (not x400) (not x388))
+(or (not x1380) (not x397) (not x394) x45)
+(or (not x397) (not x394) (not x45) x1380)
+(or (not x1379) (not x397) (not x394))
+(or (not x1380) (not x397) (not x391) x41)
+(or (not x397) (not x391) (not x41) x1380)
+(or (not x1379) (not x397) (not x391))
+(or (not x1380) (not x397) (not x388))
+(or (not x397) (not x388) x1379)
+(or (not x284) (not x1375) (not x1369) x1378 x1377)
+(or (not x284) (not x1369) x1376 x1375)
+(or (not x284) x1370 x1369)
+(or (not x1377) (not x1375) (not x1369) x284)
+(or (not x1378) (not x1375) (not x1369) x284)
+(or (not x1376) (not x1369) x284)
+(or (not x1370) x284)
+(or (not x1378) (not x1377))
+(or (not x1290) x1378 x1299 x887)
+(or (not x1378) (not x1290) (not x887) x1299)
+(or (not x1378) (not x1299) x1290 x887)
+(or (not x1299) (not x887) x1378 x1290)
+(or (not x1289) x1378 x1298 x887)
+(or (not x1378) (not x1289) (not x887) x1298)
+(or (not x1378) (not x1298) x1289 x887)
+(or (not x1298) (not x887) x1378 x1289)
+(or (not x1288) x1378 x1297 x887)
+(or (not x1378) (not x1288) (not x887) x1297)
+(or (not x1378) (not x1297) x1288 x887)
+(or (not x1297) (not x887) x1378 x1288)
+(or (not x1298) (not x1289) x1377 x1299 x1290)
+(or (not x1297) (not x1288) x1377 x1298 x1289)
+(or x1377 x1297 x1288)
+(or (not x1299) (not x1290) x1377)
+(or (not x1377) (not x1299) x1290)
+(or (not x1377) (not x1290) x1299)
+(or (not x1377) (not x1298) x1289)
+(or (not x1377) (not x1289) x1298)
+(or (not x1377) (not x1297) x1288)
+(or (not x1377) (not x1288) x1297)
+(or (not x34) x1376 x1374 x1223)
+(or (not x1376) (not x1223) (not x34) x1374)
+(or (not x1376) x1374 x1223 x34)
+(or (not x1223) x1376 x1374 x34)
+(or (not x1374) (not x29) x1376 x1373 x1222)
+(or (not x1376) (not x1374) (not x1222) (not x29) x1373)
+(or (not x1376) (not x1374) x1373 x1222 x29)
+(or (not x1374) (not x1222) x1376 x1373 x29)
+(or (not x1373) (not x27) x1376 x1372 x1221)
+(or (not x1376) (not x1373) (not x1221) (not x27) x1372)
+(or (not x1376) (not x1373) x1372 x1221 x27)
+(or (not x1373) (not x1221) x1376 x1372 x27)
+(or (not x1372) (not x1356) x1376 x1371 x1220)
+(or (not x1376) (not x1372) (not x1220) (not x1356) x1371)
+(or (not x1376) (not x1372) x1371 x1220 x1356)
+(or (not x1372) (not x1220) x1376 x1371 x1356)
+(or (not x1376) (not x1375))
+(or (not x1371) x1375)
+(or (not x1375) x1371)
+(or x1374 x1223 x1211)
+(or (not x1223) (not x1211) x1374)
+(or (not x1374) (not x1223) x1211)
+(or (not x1374) (not x1211) x1223)
+(or (not x1374) x1373 x1222 x1210)
+(or (not x1374) (not x1222) (not x1210) x1373)
+(or (not x1373) (not x1222) x1210)
+(or (not x1373) (not x1210) x1222)
+(or (not x1373) x1374)
+(or (not x1373) x1372 x1221 x1208)
+(or (not x1373) (not x1221) (not x1208) x1372)
+(or (not x1372) (not x1221) x1208)
+(or (not x1372) (not x1208) x1221)
+(or (not x1372) x1373)
+(or (not x1372) x1371 x1220 x1209)
+(or (not x1372) (not x1220) (not x1209) x1371)
+(or (not x1371) (not x1220) x1209)
+(or (not x1371) (not x1209) x1220)
+(or (not x1371) x1372)
+(or (not x1370) (not x417) (not x394))
+(or (not x417) (not x394) x1369)
+(or (not x1370) (not x415) (not x394) x55)
+(or (not x415) (not x394) (not x55) x1370)
+(or (not x1369) (not x415) (not x394))
+(or (not x1370) (not x412) (not x394) x53)
+(or (not x412) (not x394) (not x53) x1370)
+(or (not x1369) (not x412) (not x394))
+(or (not x1370) (not x417) (not x391) x51)
+(or (not x417) (not x391) (not x51) x1370)
+(or (not x1369) (not x417) (not x391))
+(or (not x1370) (not x415) (not x391))
+(or (not x415) (not x391) x1369)
+(or (not x1370) (not x412) (not x391) x47)
+(or (not x412) (not x391) (not x47) x1370)
+(or (not x1369) (not x412) (not x391))
+(or (not x1370) (not x417) (not x388) x45)
+(or (not x417) (not x388) (not x45) x1370)
+(or (not x1369) (not x417) (not x388))
+(or (not x1370) (not x415) (not x388) x41)
+(or (not x415) (not x388) (not x41) x1370)
+(or (not x1369) (not x415) (not x388))
+(or (not x1370) (not x412) (not x388))
+(or (not x412) (not x388) x1369)
+(or (not x281) (not x1365) (not x1359) x1368 x1367)
+(or (not x281) (not x1359) x1366 x1365)
+(or (not x281) x1360 x1359)
+(or (not x1367) (not x1365) (not x1359) x281)
+(or (not x1368) (not x1365) (not x1359) x281)
+(or (not x1366) (not x1359) x281)
+(or (not x1360) x281)
+(or (not x1368) (not x1367))
+(or (not x1290) x1368 x1296 x887)
+(or (not x1368) (not x1290) (not x887) x1296)
+(or (not x1368) (not x1296) x1290 x887)
+(or (not x1296) (not x887) x1368 x1290)
+(or (not x1289) x1368 x1295 x887)
+(or (not x1368) (not x1289) (not x887) x1295)
+(or (not x1368) (not x1295) x1289 x887)
+(or (not x1295) (not x887) x1368 x1289)
+(or (not x1288) x1368 x1294 x887)
+(or (not x1368) (not x1288) (not x887) x1294)
+(or (not x1368) (not x1294) x1288 x887)
+(or (not x1294) (not x887) x1368 x1288)
+(or (not x1295) (not x1289) x1367 x1296 x1290)
+(or (not x1294) (not x1288) x1367 x1295 x1289)
+(or x1367 x1294 x1288)
+(or (not x1296) (not x1290) x1367)
+(or (not x1367) (not x1296) x1290)
+(or (not x1367) (not x1290) x1296)
+(or (not x1367) (not x1295) x1289)
+(or (not x1367) (not x1289) x1295)
+(or (not x1367) (not x1294) x1288)
+(or (not x1367) (not x1288) x1294)
+(or (not x34) x1366 x1364 x1219)
+(or (not x1366) (not x1219) (not x34) x1364)
+(or (not x1366) x1364 x1219 x34)
+(or (not x1219) x1366 x1364 x34)
+(or (not x1364) (not x29) x1366 x1363 x1218)
+(or (not x1366) (not x1364) (not x1218) (not x29) x1363)
+(or (not x1366) (not x1364) x1363 x1218 x29)
+(or (not x1364) (not x1218) x1366 x1363 x29)
+(or (not x1363) (not x27) x1366 x1362 x1217)
+(or (not x1366) (not x1363) (not x1217) (not x27) x1362)
+(or (not x1366) (not x1363) x1362 x1217 x27)
+(or (not x1363) (not x1217) x1366 x1362 x27)
+(or (not x1362) (not x1356) x1366 x1361 x1216)
+(or (not x1366) (not x1362) (not x1216) (not x1356) x1361)
+(or (not x1366) (not x1362) x1361 x1216 x1356)
+(or (not x1362) (not x1216) x1366 x1361 x1356)
+(or (not x1366) (not x1365))
+(or (not x1361) x1365)
+(or (not x1365) x1361)
+(or x1364 x1219 x1211)
+(or (not x1219) (not x1211) x1364)
+(or (not x1364) (not x1219) x1211)
+(or (not x1364) (not x1211) x1219)
+(or (not x1364) x1363 x1218 x1210)
+(or (not x1364) (not x1218) (not x1210) x1363)
+(or (not x1363) (not x1218) x1210)
+(or (not x1363) (not x1210) x1218)
+(or (not x1363) x1364)
+(or (not x1363) x1362 x1217 x1208)
+(or (not x1363) (not x1217) (not x1208) x1362)
+(or (not x1362) (not x1217) x1208)
+(or (not x1362) (not x1208) x1217)
+(or (not x1362) x1363)
+(or (not x1362) x1361 x1216 x1209)
+(or (not x1362) (not x1216) (not x1209) x1361)
+(or (not x1361) (not x1216) x1209)
+(or (not x1361) (not x1209) x1216)
+(or (not x1361) x1362)
+(or (not x1360) (not x410) (not x394))
+(or (not x410) (not x394) x1359)
+(or (not x1360) (not x407) (not x394) x55)
+(or (not x407) (not x394) (not x55) x1360)
+(or (not x1359) (not x407) (not x394))
+(or (not x1360) (not x405) (not x394) x53)
+(or (not x405) (not x394) (not x53) x1360)
+(or (not x1359) (not x405) (not x394))
+(or (not x1360) (not x410) (not x391) x51)
+(or (not x410) (not x391) (not x51) x1360)
+(or (not x1359) (not x410) (not x391))
+(or (not x1360) (not x407) (not x391))
+(or (not x407) (not x391) x1359)
+(or (not x1360) (not x405) (not x391) x47)
+(or (not x405) (not x391) (not x47) x1360)
+(or (not x1359) (not x405) (not x391))
+(or (not x1360) (not x410) (not x388) x45)
+(or (not x410) (not x388) (not x45) x1360)
+(or (not x1359) (not x410) (not x388))
+(or (not x1360) (not x407) (not x388) x41)
+(or (not x407) (not x388) (not x41) x1360)
+(or (not x1359) (not x407) (not x388))
+(or (not x1360) (not x405) (not x388))
+(or (not x405) (not x388) x1359)
+(or (not x288) (not x1354) (not x1348) x1358 x1357)
+(or (not x288) (not x1348) x1355 x1354)
+(or (not x288) x1349 x1348)
+(or (not x1357) (not x1354) (not x1348) x288)
+(or (not x1358) (not x1354) (not x1348) x288)
+(or (not x1355) (not x1348) x288)
+(or (not x1349) x288)
+(or (not x1358) (not x1357))
+(or (not x1290) x1358 x1293 x887)
+(or (not x1358) (not x1290) (not x887) x1293)
+(or (not x1358) (not x1293) x1290 x887)
+(or (not x1293) (not x887) x1358 x1290)
+(or (not x1289) x1358 x1292 x887)
+(or (not x1358) (not x1289) (not x887) x1292)
+(or (not x1358) (not x1292) x1289 x887)
+(or (not x1292) (not x887) x1358 x1289)
+(or (not x1288) x1358 x1291 x887)
+(or (not x1358) (not x1288) (not x887) x1291)
+(or (not x1358) (not x1291) x1288 x887)
+(or (not x1291) (not x887) x1358 x1288)
+(or (not x1292) (not x1289) x1357 x1293 x1290)
+(or (not x1291) (not x1288) x1357 x1292 x1289)
+(or x1357 x1291 x1288)
+(or (not x1293) (not x1290) x1357)
+(or (not x1357) (not x1293) x1290)
+(or (not x1357) (not x1290) x1293)
+(or (not x1357) (not x1292) x1289)
+(or (not x1357) (not x1289) x1292)
+(or (not x1357) (not x1291) x1288)
+(or (not x1357) (not x1288) x1291)
+(or (not x34) x1355 x1353 x1215)
+(or (not x1355) (not x1215) (not x34) x1353)
+(or (not x1355) x1353 x1215 x34)
+(or (not x1215) x1355 x1353 x34)
+(or (not x1353) (not x29) x1355 x1352 x1214)
+(or (not x1355) (not x1353) (not x1214) (not x29) x1352)
+(or (not x1355) (not x1353) x1352 x1214 x29)
+(or (not x1353) (not x1214) x1355 x1352 x29)
+(or (not x1352) (not x27) x1355 x1351 x1213)
+(or (not x1355) (not x1352) (not x1213) (not x27) x1351)
+(or (not x1355) (not x1352) x1351 x1213 x27)
+(or (not x1352) (not x1213) x1355 x1351 x27)
+(or (not x1351) (not x1356) x1355 x1350 x1212)
+(or (not x1355) (not x1351) (not x1212) (not x1356) x1350)
+(or (not x1355) (not x1351) x1350 x1212 x1356)
+(or (not x1351) (not x1212) x1355 x1350 x1356)
+(or (not x1355) (not x1354))
+(or (not x1350) x1354)
+(or (not x1354) x1350)
+(or x1353 x1215 x1211)
+(or (not x1215) (not x1211) x1353)
+(or (not x1353) (not x1215) x1211)
+(or (not x1353) (not x1211) x1215)
+(or (not x1353) x1352 x1214 x1210)
+(or (not x1353) (not x1214) (not x1210) x1352)
+(or (not x1352) (not x1214) x1210)
+(or (not x1352) (not x1210) x1214)
+(or (not x1352) x1353)
+(or (not x1352) x1351 x1213 x1208)
+(or (not x1352) (not x1213) (not x1208) x1351)
+(or (not x1351) (not x1213) x1208)
+(or (not x1351) (not x1208) x1213)
+(or (not x1351) x1352)
+(or (not x1351) x1350 x1212 x1209)
+(or (not x1351) (not x1212) (not x1209) x1350)
+(or (not x1350) (not x1212) x1209)
+(or (not x1350) (not x1209) x1212)
+(or (not x1350) x1351)
+(or (not x1349) (not x402) (not x394))
+(or (not x402) (not x394) x1348)
+(or (not x1349) (not x400) (not x394) x55)
+(or (not x400) (not x394) (not x55) x1349)
+(or (not x1348) (not x400) (not x394))
+(or (not x1349) (not x397) (not x394) x53)
+(or (not x397) (not x394) (not x53) x1349)
+(or (not x1348) (not x397) (not x394))
+(or (not x1349) (not x402) (not x391) x51)
+(or (not x402) (not x391) (not x51) x1349)
+(or (not x1348) (not x402) (not x391))
+(or (not x1349) (not x400) (not x391))
+(or (not x400) (not x391) x1348)
+(or (not x1349) (not x397) (not x391) x47)
+(or (not x397) (not x391) (not x47) x1349)
+(or (not x1348) (not x397) (not x391))
+(or (not x1349) (not x402) (not x388) x45)
+(or (not x402) (not x388) (not x45) x1349)
+(or (not x1348) (not x402) (not x388))
+(or (not x1349) (not x400) (not x388) x41)
+(or (not x400) (not x388) (not x41) x1349)
+(or (not x1348) (not x400) (not x388))
+(or (not x1349) (not x397) (not x388))
+(or (not x397) (not x388) x1348)
+(or (not x1347) x265 x263 x262)
+(or (not x265) x1347)
+(or (not x263) x1347)
+(or (not x262) x1347)
+(or (not x1346) x232 x230 x247)
+(or (not x232) x1346)
+(or (not x230) x1346)
+(or (not x247) x1346)
+(or (not x1345) x231 x229 x246)
+(or (not x231) x1345)
+(or (not x229) x1345)
+(or (not x246) x1345)
+(or (not x1344) x255 x254 x251)
+(or (not x255) x1344)
+(or (not x254) x1344)
+(or (not x251) x1344)
+(or (not x1343) x227 x225 x244)
+(or (not x227) x1343)
+(or (not x225) x1343)
+(or (not x244) x1343)
+(or (not x1342) x226 x224 x243)
+(or (not x226) x1342)
+(or (not x224) x1342)
+(or (not x243) x1342)
+(or (not x1341) x242 x239 x238)
+(or (not x242) x1341)
+(or (not x239) x1341)
+(or (not x238) x1341)
+(or (not x1340) x220 x216 x236)
+(or (not x220) x1340)
+(or (not x216) x1340)
+(or (not x236) x1340)
+(or (not x1339) x218 x214 x237)
+(or (not x218) x1339)
+(or (not x214) x1339)
+(or (not x237) x1339)
+(or (not x1338) x219 x215 x210)
+(or (not x219) x1338)
+(or (not x215) x1338)
+(or (not x210) x1338)
+(or (not x1337) x217 x213 x208)
+(or (not x217) x1337)
+(or (not x213) x1337)
+(or (not x208) x1337)
+(or (not x1336) x228 x223 x209)
+(or (not x228) x1336)
+(or (not x223) x1336)
+(or (not x209) x1336)
+(or (not x1335) x203 x200 x197)
+(or (not x203) x1335)
+(or (not x200) x1335)
+(or (not x197) x1335)
+(or (not x1334) x172 x168 x186)
+(or (not x172) x1334)
+(or (not x168) x1334)
+(or (not x186) x1334)
+(or (not x1333) x171 x167 x185)
+(or (not x171) x1333)
+(or (not x167) x1333)
+(or (not x185) x1333)
+(or (not x1332) x192 x189 x188)
+(or (not x192) x1332)
+(or (not x189) x1332)
+(or (not x188) x1332)
+(or (not x1331) x165 x159 x180)
+(or (not x165) x1331)
+(or (not x159) x1331)
+(or (not x180) x1331)
+(or (not x1330) x164 x158 x179)
+(or (not x164) x1330)
+(or (not x158) x1330)
+(or (not x179) x1330)
+(or (not x1329) x177 x176 x175)
+(or (not x177) x1329)
+(or (not x176) x1329)
+(or (not x175) x1329)
+(or (not x1328) x156 x152 x173)
+(or (not x156) x1328)
+(or (not x152) x1328)
+(or (not x173) x1328)
+(or (not x1327) x154 x150 x174)
+(or (not x154) x1327)
+(or (not x150) x1327)
+(or (not x174) x1327)
+(or (not x1326) x155 x151 x147)
+(or (not x155) x1326)
+(or (not x151) x1326)
+(or (not x147) x1326)
+(or (not x1325) x153 x149 x145)
+(or (not x153) x1325)
+(or (not x149) x1325)
+(or (not x145) x1325)
+(or (not x1324) x166 x157 x146)
+(or (not x166) x1324)
+(or (not x157) x1324)
+(or (not x146) x1324)
+(or (not x1323) x139 x137 x136)
+(or (not x139) x1323)
+(or (not x137) x1323)
+(or (not x136) x1323)
+(or (not x1322) x105 x103 x121)
+(or (not x105) x1322)
+(or (not x103) x1322)
+(or (not x121) x1322)
+(or (not x1321) x104 x102 x120)
+(or (not x104) x1321)
+(or (not x102) x1321)
+(or (not x120) x1321)
+(or (not x1320) x129 x128 x125)
+(or (not x129) x1320)
+(or (not x128) x1320)
+(or (not x125) x1320)
+(or (not x1319) x100 x97 x119)
+(or (not x100) x1319)
+(or (not x97) x1319)
+(or (not x119) x1319)
+(or (not x1318) x99 x96 x118)
+(or (not x99) x1318)
+(or (not x96) x1318)
+(or (not x118) x1318)
+(or (not x1317) x117 x114 x113)
+(or (not x117) x1317)
+(or (not x114) x1317)
+(or (not x113) x1317)
+(or (not x1316) x93 x89 x111)
+(or (not x93) x1316)
+(or (not x89) x1316)
+(or (not x111) x1316)
+(or (not x1315) x91 x87 x112)
+(or (not x91) x1315)
+(or (not x87) x1315)
+(or (not x112) x1315)
+(or (not x1314) x92 x88 x83)
+(or (not x92) x1314)
+(or (not x88) x1314)
+(or (not x83) x1314)
+(or (not x1313) x90 x86 x81)
+(or (not x90) x1313)
+(or (not x86) x1313)
+(or (not x81) x1313)
+(or (not x1312) x101 x95 x82)
+(or (not x101) x1312)
+(or (not x95) x1312)
+(or (not x82) x1312)
+(or (not x1311) x74 x72 x68)
+(or (not x74) x1311)
+(or (not x72) x1311)
+(or (not x68) x1311)
+(or (not x1310) x26 x16 x50)
+(or (not x26) x1310)
+(or (not x16) x1310)
+(or (not x50) x1310)
+(or (not x1309) x21 x11 x49)
+(or (not x21) x1309)
+(or (not x11) x1309)
+(or (not x49) x1309)
+(or (not x1308) x61 x58 x54)
+(or (not x61) x1308)
+(or (not x58) x1308)
+(or (not x54) x1308)
+(or (not x1307) x5 x56 x44)
+(or (not x5) x1307)
+(or (not x56) x1307)
+(or (not x44) x1307)
+(or (not x1306) x3 x64 x43)
+(or (not x3) x1306)
+(or (not x64) x1306)
+(or (not x43) x1306)
+(or (not x1305) x40 x37 x33)
+(or (not x40) x1305)
+(or (not x37) x1305)
+(or (not x33) x1305)
+(or (not x1304) x39 x36 x31)
+(or (not x39) x1304)
+(or (not x36) x1304)
+(or (not x31) x1304)
+(or (not x1303) x48 x42 x32)
+(or (not x48) x1303)
+(or (not x42) x1303)
+(or (not x32) x1303)
+(or (not x1302) x4 x25 x15)
+(or (not x4) x1302)
+(or (not x25) x1302)
+(or (not x15) x1302)
+(or (not x1301) x1 x20 x9)
+(or (not x1) x1301)
+(or (not x20) x1301)
+(or (not x9) x1301)
+(or (not x1300) x10 x2 x57)
+(or (not x10) x1300)
+(or (not x2) x1300)
+(or (not x57) x1300)
+(or (not x1299) x994 x992 x990)
+(or (not x994) x1299)
+(or (not x992) x1299)
+(or (not x990) x1299)
+(or (not x1298) x987 x985 x983)
+(or (not x987) x1298)
+(or (not x985) x1298)
+(or (not x983) x1298)
+(or (not x1297) x980 x978 x976)
+(or (not x980) x1297)
+(or (not x978) x1297)
+(or (not x976) x1297)
+(or (not x1296) x969 x966 x964)
+(or (not x969) x1296)
+(or (not x966) x1296)
+(or (not x964) x1296)
+(or (not x1295) x962 x959 x957)
+(or (not x962) x1295)
+(or (not x959) x1295)
+(or (not x957) x1295)
+(or (not x1294) x955 x952 x950)
+(or (not x955) x1294)
+(or (not x952) x1294)
+(or (not x950) x1294)
+(or (not x1293) x945 x943 x940)
+(or (not x945) x1293)
+(or (not x943) x1293)
+(or (not x940) x1293)
+(or (not x1292) x938 x936 x933)
+(or (not x938) x1292)
+(or (not x936) x1292)
+(or (not x933) x1292)
+(or (not x1291) x931 x929 x926)
+(or (not x931) x1291)
+(or (not x929) x1291)
+(or (not x926) x1291)
+(or (not x1290) x924 x922 x920)
+(or (not x924) x1290)
+(or (not x922) x1290)
+(or (not x920) x1290)
+(or (not x1289) x918 x916 x914)
+(or (not x918) x1289)
+(or (not x916) x1289)
+(or (not x914) x1289)
+(or (not x1288) x912 x910 x908)
+(or (not x912) x1288)
+(or (not x910) x1288)
+(or (not x908) x1288)
+(or (not x1287) (not x472))
+(or (not x1286) (not x472))
+(or (not x1285) (not x472))
+(or (not x1284) (not x472))
+(or (not x471) x1287)
+(or (not x469) x1287)
+(or (not x1286) (not x471))
+(or (not x1285) (not x471))
+(or (not x1284) (not x471))
+(or (not x265) (not x469) x1286)
+(or (not x232) (not x469) x1286)
+(or (not x231) (not x469) x1286)
+(or (not x1195) (not x469) x1286)
+(or (not x1286) x265 x232 x231 x1195)
+(or (not x1285) (not x469))
+(or (not x1284) (not x469))
+(or (not x1285) x263 x230 x229 x1194)
+(or (not x1284) x262 x247 x246 x1192)
+(or (not x1283) (not x468))
+(or (not x1282) (not x468))
+(or (not x1281) (not x468))
+(or (not x1280) (not x468))
+(or (not x255) (not x466) x1283)
+(or (not x255) (not x465) x1283)
+(or (not x227) (not x466) x1283)
+(or (not x227) (not x465) x1283)
+(or (not x226) (not x466) x1283)
+(or (not x226) (not x465) x1283)
+(or (not x1283) x255 x227 x226)
+(or (not x1282) (not x466))
+(or (not x1281) (not x466))
+(or (not x1280) (not x466))
+(or (not x465) x1282)
+(or (not x1281) (not x465))
+(or (not x1280) (not x465))
+(or (not x1281) x254 x225 x224 x1178)
+(or (not x1280) x251 x244 x243 x1177)
+(or (not x1279) (not x463))
+(or (not x1278) (not x463))
+(or (not x1277) (not x463))
+(or (not x1276) (not x463))
+(or (not x242) (not x462) x1279)
+(or (not x242) (not x460) x1279)
+(or (not x220) (not x462) x1279)
+(or (not x220) (not x460) x1279)
+(or (not x218) (not x462) x1279)
+(or (not x218) (not x460) x1279)
+(or (not x1279) x242 x220 x218)
+(or (not x1278) (not x462))
+(or (not x1277) (not x462))
+(or (not x1276) (not x462))
+(or (not x239) (not x460) x1278)
+(or (not x216) (not x460) x1278)
+(or (not x214) (not x460) x1278)
+(or (not x1278) x239 x216 x214)
+(or (not x1277) (not x460))
+(or (not x1276) (not x460))
+(or (not x1276) x238 x236 x237)
+(or (not x1275) (not x459))
+(or (not x1274) (not x459))
+(or (not x1272) (not x459))
+(or (not x1273) (not x459))
+(or (not x219) (not x457) x1275)
+(or (not x219) (not x456) x1275)
+(or (not x217) (not x457) x1275)
+(or (not x217) (not x456) x1275)
+(or (not x228) (not x457) x1275)
+(or (not x228) (not x456) x1275)
+(or (not x1275) x219 x217 x228)
+(or (not x1274) (not x457))
+(or (not x1272) (not x457))
+(or (not x1273) (not x457))
+(or (not x215) (not x456) x1274)
+(or (not x213) (not x456) x1274)
+(or (not x223) (not x456) x1274)
+(or (not x1274) x215 x213 x223)
+(or (not x1272) (not x456))
+(or (not x1273) (not x456))
+(or (not x1272) x210 x208 x209)
+(or (not x1271) (not x454))
+(or (not x1270) (not x454))
+(or (not x1269) (not x454))
+(or (not x1268) (not x454))
+(or (not x453) x1271)
+(or (not x451) x1271)
+(or (not x1270) (not x453))
+(or (not x1269) (not x453))
+(or (not x1268) (not x453))
+(or (not x203) (not x451) x1270)
+(or (not x172) (not x451) x1270)
+(or (not x171) (not x451) x1270)
+(or (not x1142) (not x451) x1270)
+(or (not x1270) x203 x172 x171 x1142)
+(or (not x1269) (not x451))
+(or (not x1268) (not x451))
+(or (not x1269) x200 x168 x167 x1141)
+(or (not x1268) x197 x186 x185 x1139)
+(or (not x1267) (not x450))
+(or (not x1266) (not x450))
+(or (not x1265) (not x450))
+(or (not x1264) (not x450))
+(or (not x192) (not x448) x1267)
+(or (not x192) (not x447) x1267)
+(or (not x165) (not x448) x1267)
+(or (not x165) (not x447) x1267)
+(or (not x164) (not x448) x1267)
+(or (not x164) (not x447) x1267)
+(or (not x1267) x192 x165 x164)
+(or (not x1266) (not x448))
+(or (not x1265) (not x448))
+(or (not x1264) (not x448))
+(or (not x447) x1266)
+(or (not x1265) (not x447))
+(or (not x1264) (not x447))
+(or (not x1265) x189 x159 x158 x1125)
+(or (not x1264) x188 x180 x179 x1124)
+(or (not x1263) (not x445))
+(or (not x1262) (not x445))
+(or (not x1261) (not x445))
+(or (not x1260) (not x445))
+(or (not x177) (not x444) x1263)
+(or (not x177) (not x442) x1263)
+(or (not x156) (not x444) x1263)
+(or (not x156) (not x442) x1263)
+(or (not x154) (not x444) x1263)
+(or (not x154) (not x442) x1263)
+(or (not x1263) x177 x156 x154)
+(or (not x1262) (not x444))
+(or (not x1261) (not x444))
+(or (not x1260) (not x444))
+(or (not x176) (not x442) x1262)
+(or (not x152) (not x442) x1262)
+(or (not x150) (not x442) x1262)
+(or (not x1262) x176 x152 x150)
+(or (not x1261) (not x442))
+(or (not x1260) (not x442))
+(or (not x1260) x175 x173 x174)
+(or (not x1259) (not x441))
+(or (not x1258) (not x441))
+(or (not x1256) (not x441))
+(or (not x1257) (not x441))
+(or (not x155) (not x439) x1259)
+(or (not x155) (not x438) x1259)
+(or (not x153) (not x439) x1259)
+(or (not x153) (not x438) x1259)
+(or (not x166) (not x439) x1259)
+(or (not x166) (not x438) x1259)
+(or (not x1259) x155 x153 x166)
+(or (not x1258) (not x439))
+(or (not x1256) (not x439))
+(or (not x1257) (not x439))
+(or (not x151) (not x438) x1258)
+(or (not x149) (not x438) x1258)
+(or (not x157) (not x438) x1258)
+(or (not x1258) x151 x149 x157)
+(or (not x1256) (not x438))
+(or (not x1257) (not x438))
+(or (not x1256) x147 x145 x146)
+(or (not x1255) (not x436))
+(or (not x1254) (not x436))
+(or (not x1253) (not x436))
+(or (not x1252) (not x436))
+(or (not x435) x1255)
+(or (not x433) x1255)
+(or (not x1254) (not x435))
+(or (not x1253) (not x435))
+(or (not x1252) (not x435))
+(or (not x139) (not x433) x1254)
+(or (not x105) (not x433) x1254)
+(or (not x104) (not x433) x1254)
+(or (not x1089) (not x433) x1254)
+(or (not x1254) x139 x105 x104 x1089)
+(or (not x1253) (not x433))
+(or (not x1252) (not x433))
+(or (not x1253) x137 x103 x102 x1088)
+(or (not x1252) x136 x121 x120 x1086)
+(or (not x1251) (not x432))
+(or (not x1250) (not x432))
+(or (not x1249) (not x432))
+(or (not x1248) (not x432))
+(or (not x129) (not x430) x1251)
+(or (not x129) (not x429) x1251)
+(or (not x100) (not x430) x1251)
+(or (not x100) (not x429) x1251)
+(or (not x99) (not x430) x1251)
+(or (not x99) (not x429) x1251)
+(or (not x1251) x129 x100 x99)
+(or (not x1250) (not x430))
+(or (not x1249) (not x430))
+(or (not x1248) (not x430))
+(or (not x429) x1250)
+(or (not x1249) (not x429))
+(or (not x1248) (not x429))
+(or (not x1249) x128 x97 x96 x1072)
+(or (not x1248) x125 x119 x118 x1071)
+(or (not x1247) (not x427))
+(or (not x1246) (not x427))
+(or (not x1245) (not x427))
+(or (not x1244) (not x427))
+(or (not x117) (not x426) x1247)
+(or (not x117) (not x424) x1247)
+(or (not x93) (not x426) x1247)
+(or (not x93) (not x424) x1247)
+(or (not x91) (not x426) x1247)
+(or (not x91) (not x424) x1247)
+(or (not x1247) x117 x93 x91)
+(or (not x1246) (not x426))
+(or (not x1245) (not x426))
+(or (not x1244) (not x426))
+(or (not x114) (not x424) x1246)
+(or (not x89) (not x424) x1246)
+(or (not x87) (not x424) x1246)
+(or (not x1246) x114 x89 x87)
+(or (not x1245) (not x424))
+(or (not x1244) (not x424))
+(or (not x1244) x113 x111 x112)
+(or (not x1243) (not x423))
+(or (not x1242) (not x423))
+(or (not x1240) (not x423))
+(or (not x1241) (not x423))
+(or (not x92) (not x421) x1243)
+(or (not x92) (not x420) x1243)
+(or (not x90) (not x421) x1243)
+(or (not x90) (not x420) x1243)
+(or (not x101) (not x421) x1243)
+(or (not x101) (not x420) x1243)
+(or (not x1243) x92 x90 x101)
+(or (not x1242) (not x421))
+(or (not x1240) (not x421))
+(or (not x1241) (not x421))
+(or (not x88) (not x420) x1242)
+(or (not x86) (not x420) x1242)
+(or (not x95) (not x420) x1242)
+(or (not x1242) x88 x86 x95)
+(or (not x1240) (not x420))
+(or (not x1241) (not x420))
+(or (not x1240) x83 x81 x82)
+(or (not x1239) (not x418))
+(or (not x1238) (not x418))
+(or (not x1237) (not x418))
+(or (not x1236) (not x418))
+(or (not x416) x1239)
+(or (not x413) x1239)
+(or (not x1238) (not x416))
+(or (not x1237) (not x416))
+(or (not x1236) (not x416))
+(or (not x74) (not x413) x1238)
+(or (not x26) (not x413) x1238)
+(or (not x21) (not x413) x1238)
+(or (not x1036) (not x413) x1238)
+(or (not x1238) x74 x26 x21 x1036)
+(or (not x1237) (not x413))
+(or (not x1236) (not x413))
+(or (not x1237) x72 x16 x11 x1035)
+(or (not x1236) x68 x50 x49 x1033)
+(or (not x1235) (not x411))
+(or (not x1234) (not x411))
+(or (not x1233) (not x411))
+(or (not x1232) (not x411))
+(or (not x61) (not x408) x1235)
+(or (not x61) (not x406) x1235)
+(or (not x5) (not x408) x1235)
+(or (not x5) (not x406) x1235)
+(or (not x3) (not x408) x1235)
+(or (not x3) (not x406) x1235)
+(or (not x1235) x61 x5 x3)
+(or (not x1234) (not x408))
+(or (not x1233) (not x408))
+(or (not x1232) (not x408))
+(or (not x406) x1234)
+(or (not x1233) (not x406))
+(or (not x1232) (not x406))
+(or (not x1233) x58 x56 x64 x1019)
+(or (not x1232) x54 x44 x43 x1018)
+(or (not x1231) (not x403))
+(or (not x1230) (not x403))
+(or (not x1229) (not x403))
+(or (not x1228) (not x403))
+(or (not x40) (not x401) x1231)
+(or (not x40) (not x398) x1231)
+(or (not x39) (not x401) x1231)
+(or (not x39) (not x398) x1231)
+(or (not x48) (not x401) x1231)
+(or (not x48) (not x398) x1231)
+(or (not x1231) x40 x39 x48)
+(or (not x1230) (not x401))
+(or (not x1229) (not x401))
+(or (not x1228) (not x401))
+(or (not x37) (not x398) x1230)
+(or (not x36) (not x398) x1230)
+(or (not x42) (not x398) x1230)
+(or (not x1230) x37 x36 x42)
+(or (not x1229) (not x398))
+(or (not x1228) (not x398))
+(or (not x1228) x33 x31 x32)
+(or (not x1227) (not x395))
+(or (not x1226) (not x395))
+(or (not x1224) (not x395))
+(or (not x1225) (not x395))
+(or (not x4) (not x392) x1227)
+(or (not x4) (not x389) x1227)
+(or (not x1) (not x392) x1227)
+(or (not x1) (not x389) x1227)
+(or (not x10) (not x392) x1227)
+(or (not x10) (not x389) x1227)
+(or (not x1227) x4 x1 x10)
+(or (not x1226) (not x392))
+(or (not x1224) (not x392))
+(or (not x1225) (not x392))
+(or (not x25) (not x389) x1226)
+(or (not x20) (not x389) x1226)
+(or (not x2) (not x389) x1226)
+(or (not x1226) x25 x20 x2)
+(or (not x1224) (not x389))
+(or (not x1225) (not x389))
+(or (not x1224) x15 x9 x57)
+(or (not x1223) (not x417))
+(or (not x1222) (not x417))
+(or (not x1221) (not x417))
+(or (not x1220) (not x417))
+(or (not x415) x1223)
+(or (not x412) x1223)
+(or (not x1222) (not x415))
+(or (not x1221) (not x415))
+(or (not x1220) (not x415))
+(or (not x994) (not x412) x1222)
+(or (not x987) (not x412) x1222)
+(or (not x980) (not x412) x1222)
+(or (not x974) (not x412) x1222)
+(or (not x1222) x994 x987 x980 x974)
+(or (not x1221) (not x412))
+(or (not x1220) (not x412))
+(or (not x1221) x992 x985 x978 x973)
+(or (not x1220) x990 x983 x976 x971)
+(or (not x1219) (not x410))
+(or (not x1218) (not x410))
+(or (not x1217) (not x410))
+(or (not x1216) (not x410))
+(or (not x969) (not x407) x1219)
+(or (not x969) (not x405) x1219)
+(or (not x962) (not x407) x1219)
+(or (not x962) (not x405) x1219)
+(or (not x955) (not x407) x1219)
+(or (not x955) (not x405) x1219)
+(or (not x1219) x969 x962 x955)
+(or (not x1218) (not x407))
+(or (not x1217) (not x407))
+(or (not x1216) (not x407))
+(or (not x405) x1218)
+(or (not x1217) (not x405))
+(or (not x1216) (not x405))
+(or (not x1217) x966 x959 x952 x948)
+(or (not x1216) x964 x957 x950 x947)
+(or (not x1215) (not x402))
+(or (not x1214) (not x402))
+(or (not x1213) (not x402))
+(or (not x1212) (not x402))
+(or (not x945) (not x400) x1215)
+(or (not x945) (not x397) x1215)
+(or (not x938) (not x400) x1215)
+(or (not x938) (not x397) x1215)
+(or (not x931) (not x400) x1215)
+(or (not x931) (not x397) x1215)
+(or (not x1215) x945 x938 x931)
+(or (not x1214) (not x400))
+(or (not x1213) (not x400))
+(or (not x1212) (not x400))
+(or (not x943) (not x397) x1214)
+(or (not x936) (not x397) x1214)
+(or (not x929) (not x397) x1214)
+(or (not x1214) x943 x936 x929)
+(or (not x1213) (not x397))
+(or (not x1212) (not x397))
+(or (not x1212) x940 x933 x926)
+(or (not x1211) (not x394))
+(or (not x1210) (not x394))
+(or (not x1208) (not x394))
+(or (not x1209) (not x394))
+(or (not x924) (not x391) x1211)
+(or (not x924) (not x388) x1211)
+(or (not x918) (not x391) x1211)
+(or (not x918) (not x388) x1211)
+(or (not x912) (not x391) x1211)
+(or (not x912) (not x388) x1211)
+(or (not x1211) x924 x918 x912)
+(or (not x1210) (not x391))
+(or (not x1208) (not x391))
+(or (not x1209) (not x391))
+(or (not x922) (not x388) x1210)
+(or (not x916) (not x388) x1210)
+(or (not x910) (not x388) x1210)
+(or (not x1210) x922 x916 x910)
+(or (not x1208) (not x388))
+(or (not x1209) (not x388))
+(or (not x1208) x920 x914 x908)
+(or (not x265) (not x232) (not x471))
+(or (not x265) (not x232))
+(or (not x265) (not x230) (not x469))
+(or (not x265) (not x230) x504)
+(or (not x265) (not x247) x501)
+(or (not x265) x232 x230 x247)
+(or (not x265) (not x232))
+(or (not x265) (not x231))
+(or (not x265) (not x1195))
+(or (not x232) (not x231) (not x471))
+(or (not x232) (not x231))
+(or (not x232) (not x229) (not x469))
+(or (not x232) (not x229) x504)
+(or (not x232) (not x246) x501)
+(or (not x232) x231 x229 x246)
+(or (not x232) (not x231))
+(or (not x232) (not x1195))
+(or (not x231) (not x472))
+(or (not x231) x511)
+(or (not x231) (not x1195) (not x471))
+(or (not x231) (not x1195))
+(or (not x231) (not x1194) (not x469))
+(or (not x231) (not x1194) x504)
+(or (not x231) (not x1192) x501)
+(or (not x231) (not x1195))
+(or (not x471) x265 x232 x231 x1195)
+(or (not x263) (not x232) (not x471))
+(or (not x263) (not x232) x507)
+(or (not x263) (not x230) (not x469))
+(or (not x263) (not x230))
+(or (not x263) (not x247) x500)
+(or (not x263) x232 x230 x247)
+(or (not x263) (not x230))
+(or (not x263) (not x229))
+(or (not x263) (not x1194))
+(or (not x230) (not x231) (not x471))
+(or (not x230) (not x231) x507)
+(or (not x230) (not x229) (not x469))
+(or (not x230) (not x229))
+(or (not x230) (not x246) x500)
+(or (not x230) x231 x229 x246)
+(or (not x230) (not x229))
+(or (not x230) (not x1194))
+(or (not x229) (not x472))
+(or (not x229) x510)
+(or (not x229) (not x1195) (not x471))
+(or (not x229) (not x1195) x507)
+(or (not x229) (not x1194) (not x469))
+(or (not x229) (not x1194))
+(or (not x229) (not x1192) x500)
+(or (not x229) (not x1194))
+(or (not x469) x263 x230 x229 x1194)
+(or (not x262) (not x232) (not x471))
+(or (not x262) (not x232) x506)
+(or (not x262) (not x230) (not x469))
+(or (not x262) (not x230) x503)
+(or (not x262) (not x247))
+(or (not x262) x232 x230 x247)
+(or (not x262) (not x247))
+(or (not x262) (not x246))
+(or (not x262) (not x1192))
+(or (not x247) (not x231) (not x471))
+(or (not x247) (not x231) x506)
+(or (not x247) (not x229) (not x469))
+(or (not x247) (not x229) x503)
+(or (not x247) (not x246))
+(or (not x247) x231 x229 x246)
+(or (not x247) (not x246))
+(or (not x247) (not x1192))
+(or (not x246) (not x472))
+(or (not x246) x509)
+(or (not x246) (not x1195) (not x471))
+(or (not x246) (not x1195) x506)
+(or (not x246) (not x1194) (not x469))
+(or (not x246) (not x1194) x503)
+(or (not x246) (not x1192))
+(or (not x246) (not x1192))
+(or (not x1206) x1207)
+(or (not x1207) x1206)
+(or (not x265) (not x1205))
+(or (not x265) x1206 x1205)
+(or (not x1205) x265 x1206)
+(or (not x1206) x265 x1205)
+(or (not x263) (not x1204))
+(or (not x263) x1205 x1204)
+(or (not x1204) x263 x1205)
+(or (not x1205) x263 x1204)
+(or (not x262) x1204)
+(or (not x1204) x262)
+(or (not x1202) x1203)
+(or (not x1203) x1202)
+(or (not x232) (not x1201))
+(or (not x232) x1202 x1201)
+(or (not x1201) x232 x1202)
+(or (not x1202) x232 x1201)
+(or (not x230) (not x1200))
+(or (not x230) x1201 x1200)
+(or (not x1200) x230 x1201)
+(or (not x1201) x230 x1200)
+(or (not x247) x1200)
+(or (not x1200) x247)
+(or (not x1198) x1199)
+(or (not x1199) x1198)
+(or (not x231) (not x1197))
+(or (not x231) x1198 x1197)
+(or (not x1197) x231 x1198)
+(or (not x1198) x231 x1197)
+(or (not x229) (not x1196))
+(or (not x229) x1197 x1196)
+(or (not x1196) x229 x1197)
+(or (not x1197) x229 x1196)
+(or (not x246) x1196)
+(or (not x1196) x246)
+(or (not x1195) (not x1193))
+(or (not x1195) x1193)
+(or (not x1193) x1195)
+(or (not x1194) (not x1191))
+(or (not x1194) x1193 x1191)
+(or (not x1191) x1194 x1193)
+(or (not x1193) x1194 x1191)
+(or (not x1192) x1191)
+(or (not x1191) x1192)
+(or (not x255) (not x227) (not x468))
+(or (not x255) (not x227))
+(or (not x255) (not x225) (not x465))
+(or (not x255) (not x225) x505)
+(or (not x255) (not x244) x502)
+(or (not x255) x227 x225 x244)
+(or (not x255) (not x227))
+(or (not x255) (not x226))
+(or (not x227) (not x226) (not x468))
+(or (not x227) (not x226))
+(or (not x227) (not x224) (not x465))
+(or (not x227) (not x224) x505)
+(or (not x227) (not x243) x502)
+(or (not x227) x226 x224 x243)
+(or (not x227) (not x226))
+(or (not x226) (not x466))
+(or (not x226) x508)
+(or (not x226) (not x1178) (not x465))
+(or (not x226) (not x1178) x505)
+(or (not x226) (not x1177) x502)
+(or (not x468) x255 x227 x226)
+(or (not x254) (not x227) (not x468))
+(or (not x254) (not x227) x510)
+(or (not x254) (not x225) (not x465))
+(or (not x254) (not x225))
+(or (not x254) (not x244) x500)
+(or (not x254) x227 x225 x244)
+(or (not x254) (not x225))
+(or (not x254) (not x224))
+(or (not x254) (not x1178))
+(or (not x225) (not x226) (not x468))
+(or (not x225) (not x226) x510)
+(or (not x225) (not x224) (not x465))
+(or (not x225) (not x224))
+(or (not x225) (not x243) x500)
+(or (not x225) x226 x224 x243)
+(or (not x225) (not x224))
+(or (not x225) (not x1178))
+(or (not x224) (not x466))
+(or (not x224) x507)
+(or (not x224) (not x1178) (not x465))
+(or (not x224) (not x1178))
+(or (not x224) (not x1177) x500)
+(or (not x224) (not x1178))
+(or (not x465) x254 x225 x224 x1178)
+(or (not x251) (not x227) (not x468))
+(or (not x251) (not x227) x509)
+(or (not x251) (not x225) (not x465))
+(or (not x251) (not x225) x503)
+(or (not x251) (not x244))
+(or (not x251) x227 x225 x244)
+(or (not x251) (not x244))
+(or (not x251) (not x243))
+(or (not x251) (not x1177))
+(or (not x244) (not x226) (not x468))
+(or (not x244) (not x226) x509)
+(or (not x244) (not x224) (not x465))
+(or (not x244) (not x224) x503)
+(or (not x244) (not x243))
+(or (not x244) x226 x224 x243)
+(or (not x244) (not x243))
+(or (not x244) (not x1177))
+(or (not x243) (not x466))
+(or (not x243) x506)
+(or (not x243) (not x1178) (not x465))
+(or (not x243) (not x1178) x503)
+(or (not x243) (not x1177))
+(or (not x243) (not x1177))
+(or (not x255) (not x1189))
+(or (not x255) x1190 x1189)
+(or (not x1189) x255 x1190)
+(or (not x1190) x255 x1189)
+(or (not x1188) x1189)
+(or (not x1189) x1188)
+(or (not x254) (not x1187))
+(or (not x254) x1188 x1187)
+(or (not x1187) x254 x1188)
+(or (not x1188) x254 x1187)
+(or (not x251) x1187)
+(or (not x1187) x251)
+(or (not x227) (not x1185))
+(or (not x227) x1186 x1185)
+(or (not x1185) x227 x1186)
+(or (not x1186) x227 x1185)
+(or (not x1184) x1185)
+(or (not x1185) x1184)
+(or (not x225) (not x1183))
+(or (not x225) x1184 x1183)
+(or (not x1183) x225 x1184)
+(or (not x1184) x225 x1183)
+(or (not x244) x1183)
+(or (not x1183) x244)
+(or (not x226) (not x1181))
+(or (not x226) x1182 x1181)
+(or (not x1181) x226 x1182)
+(or (not x1182) x226 x1181)
+(or (not x1180) x1181)
+(or (not x1181) x1180)
+(or (not x224) (not x1179))
+(or (not x224) x1180 x1179)
+(or (not x1179) x224 x1180)
+(or (not x1180) x224 x1179)
+(or (not x243) x1179)
+(or (not x1179) x243)
+(or (not x1178) (not x1176))
+(or (not x1178) x1176)
+(or (not x1176) x1178)
+(or (not x1177) x1176)
+(or (not x1176) x1177)
+(or (not x242) (not x220) (not x463))
+(or (not x242) (not x220))
+(or (not x242) (not x216) (not x462))
+(or (not x242) (not x216) x508)
+(or (not x242) (not x236) x502)
+(or (not x242) x220 x216 x236)
+(or (not x242) (not x220))
+(or (not x242) (not x218))
+(or (not x220) (not x218) (not x463))
+(or (not x220) (not x218))
+(or (not x220) (not x214) (not x462))
+(or (not x220) (not x214) x508)
+(or (not x220) (not x237) x502)
+(or (not x220) x218 x214 x237)
+(or (not x220) (not x218))
+(or (not x218) (not x460))
+(or (not x218) x505)
+(or (not x463) x242 x220 x218)
+(or (not x239) (not x220) (not x463))
+(or (not x239) (not x220) x511)
+(or (not x239) (not x216) (not x462))
+(or (not x239) (not x216))
+(or (not x239) (not x236) x501)
+(or (not x239) x220 x216 x236)
+(or (not x239) (not x216))
+(or (not x239) (not x214))
+(or (not x216) (not x218) (not x463))
+(or (not x216) (not x218) x511)
+(or (not x216) (not x214) (not x462))
+(or (not x216) (not x214))
+(or (not x216) (not x237) x501)
+(or (not x216) x218 x214 x237)
+(or (not x216) (not x214))
+(or (not x214) (not x460))
+(or (not x214) x504)
+(or (not x462) x239 x216 x214)
+(or (not x238) (not x220) (not x463))
+(or (not x238) (not x220) x509)
+(or (not x238) (not x216) (not x462))
+(or (not x238) (not x216) x506)
+(or (not x238) (not x236))
+(or (not x238) x220 x216 x236)
+(or (not x238) (not x236))
+(or (not x238) (not x237))
+(or (not x236) (not x218) (not x463))
+(or (not x236) (not x218) x509)
+(or (not x236) (not x214) (not x462))
+(or (not x236) (not x214) x506)
+(or (not x236) (not x237))
+(or (not x236) x218 x214 x237)
+(or (not x236) (not x237))
+(or (not x237) (not x460))
+(or (not x237) x503)
+(or (not x242) (not x1174))
+(or (not x242) x1175 x1174)
+(or (not x1174) x242 x1175)
+(or (not x1175) x242 x1174)
+(or (not x239) (not x1173))
+(or (not x239) x1174 x1173)
+(or (not x1173) x239 x1174)
+(or (not x1174) x239 x1173)
+(or (not x1172) x1173)
+(or (not x1173) x1172)
+(or (not x238) x1172)
+(or (not x1172) x238)
+(or (not x220) (not x1170))
+(or (not x220) x1171 x1170)
+(or (not x1170) x220 x1171)
+(or (not x1171) x220 x1170)
+(or (not x216) (not x1169))
+(or (not x216) x1170 x1169)
+(or (not x1169) x216 x1170)
+(or (not x1170) x216 x1169)
+(or (not x1168) x1169)
+(or (not x1169) x1168)
+(or (not x236) x1168)
+(or (not x1168) x236)
+(or (not x218) (not x1166))
+(or (not x218) x1167 x1166)
+(or (not x1166) x218 x1167)
+(or (not x1167) x218 x1166)
+(or (not x214) (not x1165))
+(or (not x214) x1166 x1165)
+(or (not x1165) x214 x1166)
+(or (not x1166) x214 x1165)
+(or (not x1164) x1165)
+(or (not x1165) x1164)
+(or (not x237) x1164)
+(or (not x1164) x237)
+(or (not x219) (not x217) (not x459))
+(or (not x219) (not x217))
+(or (not x219) (not x213) (not x457))
+(or (not x219) (not x213) x508)
+(or (not x219) (not x208) (not x456))
+(or (not x219) (not x208) x505)
+(or (not x219) x217 x213 x208)
+(or (not x219) (not x217))
+(or (not x219) (not x228))
+(or (not x217) (not x228) (not x459))
+(or (not x217) (not x228))
+(or (not x217) (not x223) (not x457))
+(or (not x217) (not x223) x508)
+(or (not x217) (not x209) (not x456))
+(or (not x217) (not x209) x505)
+(or (not x217) x228 x223 x209)
+(or (not x217) (not x228))
+(or (not x228) x502)
+(or (not x459) x219 x217 x228)
+(or (not x215) (not x217) (not x459))
+(or (not x215) (not x217) x511)
+(or (not x215) (not x213) (not x457))
+(or (not x215) (not x213))
+(or (not x215) (not x208) (not x456))
+(or (not x215) (not x208) x504)
+(or (not x215) x217 x213 x208)
+(or (not x215) (not x213))
+(or (not x215) (not x223))
+(or (not x213) (not x228) (not x459))
+(or (not x213) (not x228) x511)
+(or (not x213) (not x223) (not x457))
+(or (not x213) (not x223))
+(or (not x213) (not x209) (not x456))
+(or (not x213) (not x209) x504)
+(or (not x213) x228 x223 x209)
+(or (not x213) (not x223))
+(or (not x223) x501)
+(or (not x457) x215 x213 x223)
+(or (not x210) (not x217) (not x459))
+(or (not x210) (not x217) x510)
+(or (not x210) (not x213) (not x457))
+(or (not x210) (not x213) x507)
+(or (not x210) (not x208) (not x456))
+(or (not x210) (not x208))
+(or (not x210) x217 x213 x208)
+(or (not x210) (not x208))
+(or (not x210) (not x209))
+(or (not x208) (not x228) (not x459))
+(or (not x208) (not x228) x510)
+(or (not x208) (not x223) (not x457))
+(or (not x208) (not x223) x507)
+(or (not x208) (not x209) (not x456))
+(or (not x208) (not x209))
+(or (not x208) x228 x223 x209)
+(or (not x208) (not x209))
+(or (not x209) x500)
+(or (not x456) x210 x208 x209)
+(or (not x219) (not x1162))
+(or (not x219) x1163 x1162)
+(or (not x1162) x219 x1163)
+(or (not x1163) x219 x1162)
+(or (not x215) (not x1161))
+(or (not x215) x1162 x1161)
+(or (not x1161) x215 x1162)
+(or (not x1162) x215 x1161)
+(or (not x210) x1161)
+(or (not x1161) x210)
+(or (not x217) (not x1159))
+(or (not x217) x1160 x1159)
+(or (not x1159) x217 x1160)
+(or (not x1160) x217 x1159)
+(or (not x213) (not x1158))
+(or (not x213) x1159 x1158)
+(or (not x1158) x213 x1159)
+(or (not x1159) x213 x1158)
+(or (not x208) x1158)
+(or (not x1158) x208)
+(or (not x228) (not x1156))
+(or (not x228) x1157 x1156)
+(or (not x1156) x228 x1157)
+(or (not x1157) x228 x1156)
+(or (not x223) (not x1155))
+(or (not x223) x1156 x1155)
+(or (not x1155) x223 x1156)
+(or (not x1156) x223 x1155)
+(or (not x209) x1155)
+(or (not x1155) x209)
+(or (not x203) (not x172) (not x453))
+(or (not x203) (not x172))
+(or (not x203) (not x168) (not x451))
+(or (not x203) (not x168) x492)
+(or (not x203) (not x186) x489)
+(or (not x203) x172 x168 x186)
+(or (not x203) (not x172))
+(or (not x203) (not x171))
+(or (not x203) (not x1142))
+(or (not x172) (not x171) (not x453))
+(or (not x172) (not x171))
+(or (not x172) (not x167) (not x451))
+(or (not x172) (not x167) x492)
+(or (not x172) (not x185) x489)
+(or (not x172) x171 x167 x185)
+(or (not x172) (not x171))
+(or (not x172) (not x1142))
+(or (not x171) (not x454))
+(or (not x171) x499)
+(or (not x171) (not x1142) (not x453))
+(or (not x171) (not x1142))
+(or (not x171) (not x1141) (not x451))
+(or (not x171) (not x1141) x492)
+(or (not x171) (not x1139) x489)
+(or (not x171) (not x1142))
+(or (not x453) x203 x172 x171 x1142)
+(or (not x200) (not x172) (not x453))
+(or (not x200) (not x172) x495)
+(or (not x200) (not x168) (not x451))
+(or (not x200) (not x168))
+(or (not x200) (not x186) x488)
+(or (not x200) x172 x168 x186)
+(or (not x200) (not x168))
+(or (not x200) (not x167))
+(or (not x200) (not x1141))
+(or (not x168) (not x171) (not x453))
+(or (not x168) (not x171) x495)
+(or (not x168) (not x167) (not x451))
+(or (not x168) (not x167))
+(or (not x168) (not x185) x488)
+(or (not x168) x171 x167 x185)
+(or (not x168) (not x167))
+(or (not x168) (not x1141))
+(or (not x167) (not x454))
+(or (not x167) x498)
+(or (not x167) (not x1142) (not x453))
+(or (not x167) (not x1142) x495)
+(or (not x167) (not x1141) (not x451))
+(or (not x167) (not x1141))
+(or (not x167) (not x1139) x488)
+(or (not x167) (not x1141))
+(or (not x451) x200 x168 x167 x1141)
+(or (not x197) (not x172) (not x453))
+(or (not x197) (not x172) x494)
+(or (not x197) (not x168) (not x451))
+(or (not x197) (not x168) x491)
+(or (not x197) (not x186))
+(or (not x197) x172 x168 x186)
+(or (not x197) (not x186))
+(or (not x197) (not x185))
+(or (not x197) (not x1139))
+(or (not x186) (not x171) (not x453))
+(or (not x186) (not x171) x494)
+(or (not x186) (not x167) (not x451))
+(or (not x186) (not x167) x491)
+(or (not x186) (not x185))
+(or (not x186) x171 x167 x185)
+(or (not x186) (not x185))
+(or (not x186) (not x1139))
+(or (not x185) (not x454))
+(or (not x185) x497)
+(or (not x185) (not x1142) (not x453))
+(or (not x185) (not x1142) x494)
+(or (not x185) (not x1141) (not x451))
+(or (not x185) (not x1141) x491)
+(or (not x185) (not x1139))
+(or (not x185) (not x1139))
+(or (not x1153) x1154)
+(or (not x1154) x1153)
+(or (not x203) (not x1152))
+(or (not x203) x1153 x1152)
+(or (not x1152) x203 x1153)
+(or (not x1153) x203 x1152)
+(or (not x200) (not x1151))
+(or (not x200) x1152 x1151)
+(or (not x1151) x200 x1152)
+(or (not x1152) x200 x1151)
+(or (not x197) x1151)
+(or (not x1151) x197)
+(or (not x1149) x1150)
+(or (not x1150) x1149)
+(or (not x172) (not x1148))
+(or (not x172) x1149 x1148)
+(or (not x1148) x172 x1149)
+(or (not x1149) x172 x1148)
+(or (not x168) (not x1147))
+(or (not x168) x1148 x1147)
+(or (not x1147) x168 x1148)
+(or (not x1148) x168 x1147)
+(or (not x186) x1147)
+(or (not x1147) x186)
+(or (not x1145) x1146)
+(or (not x1146) x1145)
+(or (not x171) (not x1144))
+(or (not x171) x1145 x1144)
+(or (not x1144) x171 x1145)
+(or (not x1145) x171 x1144)
+(or (not x167) (not x1143))
+(or (not x167) x1144 x1143)
+(or (not x1143) x167 x1144)
+(or (not x1144) x167 x1143)
+(or (not x185) x1143)
+(or (not x1143) x185)
+(or (not x1142) (not x1140))
+(or (not x1142) x1140)
+(or (not x1140) x1142)
+(or (not x1141) (not x1138))
+(or (not x1141) x1140 x1138)
+(or (not x1138) x1141 x1140)
+(or (not x1140) x1141 x1138)
+(or (not x1139) x1138)
+(or (not x1138) x1139)
+(or (not x192) (not x165) (not x450))
+(or (not x192) (not x165))
+(or (not x192) (not x159) (not x447))
+(or (not x192) (not x159) x493)
+(or (not x192) (not x180) x490)
+(or (not x192) x165 x159 x180)
+(or (not x192) (not x165))
+(or (not x192) (not x164))
+(or (not x165) (not x164) (not x450))
+(or (not x165) (not x164))
+(or (not x165) (not x158) (not x447))
+(or (not x165) (not x158) x493)
+(or (not x165) (not x179) x490)
+(or (not x165) x164 x158 x179)
+(or (not x165) (not x164))
+(or (not x164) (not x448))
+(or (not x164) x496)
+(or (not x164) (not x1125) (not x447))
+(or (not x164) (not x1125) x493)
+(or (not x164) (not x1124) x490)
+(or (not x450) x192 x165 x164)
+(or (not x189) (not x165) (not x450))
+(or (not x189) (not x165) x498)
+(or (not x189) (not x159) (not x447))
+(or (not x189) (not x159))
+(or (not x189) (not x180) x488)
+(or (not x189) x165 x159 x180)
+(or (not x189) (not x159))
+(or (not x189) (not x158))
+(or (not x189) (not x1125))
+(or (not x159) (not x164) (not x450))
+(or (not x159) (not x164) x498)
+(or (not x159) (not x158) (not x447))
+(or (not x159) (not x158))
+(or (not x159) (not x179) x488)
+(or (not x159) x164 x158 x179)
+(or (not x159) (not x158))
+(or (not x159) (not x1125))
+(or (not x158) (not x448))
+(or (not x158) x495)
+(or (not x158) (not x1125) (not x447))
+(or (not x158) (not x1125))
+(or (not x158) (not x1124) x488)
+(or (not x158) (not x1125))
+(or (not x447) x189 x159 x158 x1125)
+(or (not x188) (not x165) (not x450))
+(or (not x188) (not x165) x497)
+(or (not x188) (not x159) (not x447))
+(or (not x188) (not x159) x491)
+(or (not x188) (not x180))
+(or (not x188) x165 x159 x180)
+(or (not x188) (not x180))
+(or (not x188) (not x179))
+(or (not x188) (not x1124))
+(or (not x180) (not x164) (not x450))
+(or (not x180) (not x164) x497)
+(or (not x180) (not x158) (not x447))
+(or (not x180) (not x158) x491)
+(or (not x180) (not x179))
+(or (not x180) x164 x158 x179)
+(or (not x180) (not x179))
+(or (not x180) (not x1124))
+(or (not x179) (not x448))
+(or (not x179) x494)
+(or (not x179) (not x1125) (not x447))
+(or (not x179) (not x1125) x491)
+(or (not x179) (not x1124))
+(or (not x179) (not x1124))
+(or (not x192) (not x1136))
+(or (not x192) x1137 x1136)
+(or (not x1136) x192 x1137)
+(or (not x1137) x192 x1136)
+(or (not x1135) x1136)
+(or (not x1136) x1135)
+(or (not x189) (not x1134))
+(or (not x189) x1135 x1134)
+(or (not x1134) x189 x1135)
+(or (not x1135) x189 x1134)
+(or (not x188) x1134)
+(or (not x1134) x188)
+(or (not x165) (not x1132))
+(or (not x165) x1133 x1132)
+(or (not x1132) x165 x1133)
+(or (not x1133) x165 x1132)
+(or (not x1131) x1132)
+(or (not x1132) x1131)
+(or (not x159) (not x1130))
+(or (not x159) x1131 x1130)
+(or (not x1130) x159 x1131)
+(or (not x1131) x159 x1130)
+(or (not x180) x1130)
+(or (not x1130) x180)
+(or (not x164) (not x1128))
+(or (not x164) x1129 x1128)
+(or (not x1128) x164 x1129)
+(or (not x1129) x164 x1128)
+(or (not x1127) x1128)
+(or (not x1128) x1127)
+(or (not x158) (not x1126))
+(or (not x158) x1127 x1126)
+(or (not x1126) x158 x1127)
+(or (not x1127) x158 x1126)
+(or (not x179) x1126)
+(or (not x1126) x179)
+(or (not x1125) (not x1123))
+(or (not x1125) x1123)
+(or (not x1123) x1125)
+(or (not x1124) x1123)
+(or (not x1123) x1124)
+(or (not x177) (not x156) (not x445))
+(or (not x177) (not x156))
+(or (not x177) (not x152) (not x444))
+(or (not x177) (not x152) x496)
+(or (not x177) (not x173) x490)
+(or (not x177) x156 x152 x173)
+(or (not x177) (not x156))
+(or (not x177) (not x154))
+(or (not x156) (not x154) (not x445))
+(or (not x156) (not x154))
+(or (not x156) (not x150) (not x444))
+(or (not x156) (not x150) x496)
+(or (not x156) (not x174) x490)
+(or (not x156) x154 x150 x174)
+(or (not x156) (not x154))
+(or (not x154) (not x442))
+(or (not x154) x493)
+(or (not x445) x177 x156 x154)
+(or (not x176) (not x156) (not x445))
+(or (not x176) (not x156) x499)
+(or (not x176) (not x152) (not x444))
+(or (not x176) (not x152))
+(or (not x176) (not x173) x489)
+(or (not x176) x156 x152 x173)
+(or (not x176) (not x152))
+(or (not x176) (not x150))
+(or (not x152) (not x154) (not x445))
+(or (not x152) (not x154) x499)
+(or (not x152) (not x150) (not x444))
+(or (not x152) (not x150))
+(or (not x152) (not x174) x489)
+(or (not x152) x154 x150 x174)
+(or (not x152) (not x150))
+(or (not x150) (not x442))
+(or (not x150) x492)
+(or (not x444) x176 x152 x150)
+(or (not x175) (not x156) (not x445))
+(or (not x175) (not x156) x497)
+(or (not x175) (not x152) (not x444))
+(or (not x175) (not x152) x494)
+(or (not x175) (not x173))
+(or (not x175) x156 x152 x173)
+(or (not x175) (not x173))
+(or (not x175) (not x174))
+(or (not x173) (not x154) (not x445))
+(or (not x173) (not x154) x497)
+(or (not x173) (not x150) (not x444))
+(or (not x173) (not x150) x494)
+(or (not x173) (not x174))
+(or (not x173) x154 x150 x174)
+(or (not x173) (not x174))
+(or (not x174) (not x442))
+(or (not x174) x491)
+(or (not x177) (not x1121))
+(or (not x177) x1122 x1121)
+(or (not x1121) x177 x1122)
+(or (not x1122) x177 x1121)
+(or (not x176) (not x1120))
+(or (not x176) x1121 x1120)
+(or (not x1120) x176 x1121)
+(or (not x1121) x176 x1120)
+(or (not x1119) x1120)
+(or (not x1120) x1119)
+(or (not x175) x1119)
+(or (not x1119) x175)
+(or (not x156) (not x1117))
+(or (not x156) x1118 x1117)
+(or (not x1117) x156 x1118)
+(or (not x1118) x156 x1117)
+(or (not x152) (not x1116))
+(or (not x152) x1117 x1116)
+(or (not x1116) x152 x1117)
+(or (not x1117) x152 x1116)
+(or (not x1115) x1116)
+(or (not x1116) x1115)
+(or (not x173) x1115)
+(or (not x1115) x173)
+(or (not x154) (not x1113))
+(or (not x154) x1114 x1113)
+(or (not x1113) x154 x1114)
+(or (not x1114) x154 x1113)
+(or (not x150) (not x1112))
+(or (not x150) x1113 x1112)
+(or (not x1112) x150 x1113)
+(or (not x1113) x150 x1112)
+(or (not x1111) x1112)
+(or (not x1112) x1111)
+(or (not x174) x1111)
+(or (not x1111) x174)
+(or (not x155) (not x153) (not x441))
+(or (not x155) (not x153))
+(or (not x155) (not x149) (not x439))
+(or (not x155) (not x149) x496)
+(or (not x155) (not x145) (not x438))
+(or (not x155) (not x145) x493)
+(or (not x155) x153 x149 x145)
+(or (not x155) (not x153))
+(or (not x155) (not x166))
+(or (not x153) (not x166) (not x441))
+(or (not x153) (not x166))
+(or (not x153) (not x157) (not x439))
+(or (not x153) (not x157) x496)
+(or (not x153) (not x146) (not x438))
+(or (not x153) (not x146) x493)
+(or (not x153) x166 x157 x146)
+(or (not x153) (not x166))
+(or (not x166) x490)
+(or (not x441) x155 x153 x166)
+(or (not x151) (not x153) (not x441))
+(or (not x151) (not x153) x499)
+(or (not x151) (not x149) (not x439))
+(or (not x151) (not x149))
+(or (not x151) (not x145) (not x438))
+(or (not x151) (not x145) x492)
+(or (not x151) x153 x149 x145)
+(or (not x151) (not x149))
+(or (not x151) (not x157))
+(or (not x149) (not x166) (not x441))
+(or (not x149) (not x166) x499)
+(or (not x149) (not x157) (not x439))
+(or (not x149) (not x157))
+(or (not x149) (not x146) (not x438))
+(or (not x149) (not x146) x492)
+(or (not x149) x166 x157 x146)
+(or (not x149) (not x157))
+(or (not x157) x489)
+(or (not x439) x151 x149 x157)
+(or (not x147) (not x153) (not x441))
+(or (not x147) (not x153) x498)
+(or (not x147) (not x149) (not x439))
+(or (not x147) (not x149) x495)
+(or (not x147) (not x145) (not x438))
+(or (not x147) (not x145))
+(or (not x147) x153 x149 x145)
+(or (not x147) (not x145))
+(or (not x147) (not x146))
+(or (not x145) (not x166) (not x441))
+(or (not x145) (not x166) x498)
+(or (not x145) (not x157) (not x439))
+(or (not x145) (not x157) x495)
+(or (not x145) (not x146) (not x438))
+(or (not x145) (not x146))
+(or (not x145) x166 x157 x146)
+(or (not x145) (not x146))
+(or (not x146) x488)
+(or (not x438) x147 x145 x146)
+(or (not x155) (not x1109))
+(or (not x155) x1110 x1109)
+(or (not x1109) x155 x1110)
+(or (not x1110) x155 x1109)
+(or (not x151) (not x1108))
+(or (not x151) x1109 x1108)
+(or (not x1108) x151 x1109)
+(or (not x1109) x151 x1108)
+(or (not x147) x1108)
+(or (not x1108) x147)
+(or (not x153) (not x1106))
+(or (not x153) x1107 x1106)
+(or (not x1106) x153 x1107)
+(or (not x1107) x153 x1106)
+(or (not x149) (not x1105))
+(or (not x149) x1106 x1105)
+(or (not x1105) x149 x1106)
+(or (not x1106) x149 x1105)
+(or (not x145) x1105)
+(or (not x1105) x145)
+(or (not x166) (not x1103))
+(or (not x166) x1104 x1103)
+(or (not x1103) x166 x1104)
+(or (not x1104) x166 x1103)
+(or (not x157) (not x1102))
+(or (not x157) x1103 x1102)
+(or (not x1102) x157 x1103)
+(or (not x1103) x157 x1102)
+(or (not x146) x1102)
+(or (not x1102) x146)
+(or (not x139) (not x105) (not x435))
+(or (not x139) (not x105))
+(or (not x139) (not x103) (not x433))
+(or (not x139) (not x103) x480)
+(or (not x139) (not x121) x477)
+(or (not x139) x105 x103 x121)
+(or (not x139) (not x105))
+(or (not x139) (not x104))
+(or (not x139) (not x1089))
+(or (not x105) (not x104) (not x435))
+(or (not x105) (not x104))
+(or (not x105) (not x102) (not x433))
+(or (not x105) (not x102) x480)
+(or (not x105) (not x120) x477)
+(or (not x105) x104 x102 x120)
+(or (not x105) (not x104))
+(or (not x105) (not x1089))
+(or (not x104) (not x436))
+(or (not x104) x487)
+(or (not x104) (not x1089) (not x435))
+(or (not x104) (not x1089))
+(or (not x104) (not x1088) (not x433))
+(or (not x104) (not x1088) x480)
+(or (not x104) (not x1086) x477)
+(or (not x104) (not x1089))
+(or (not x435) x139 x105 x104 x1089)
+(or (not x137) (not x105) (not x435))
+(or (not x137) (not x105) x483)
+(or (not x137) (not x103) (not x433))
+(or (not x137) (not x103))
+(or (not x137) (not x121) x476)
+(or (not x137) x105 x103 x121)
+(or (not x137) (not x103))
+(or (not x137) (not x102))
+(or (not x137) (not x1088))
+(or (not x103) (not x104) (not x435))
+(or (not x103) (not x104) x483)
+(or (not x103) (not x102) (not x433))
+(or (not x103) (not x102))
+(or (not x103) (not x120) x476)
+(or (not x103) x104 x102 x120)
+(or (not x103) (not x102))
+(or (not x103) (not x1088))
+(or (not x102) (not x436))
+(or (not x102) x486)
+(or (not x102) (not x1089) (not x435))
+(or (not x102) (not x1089) x483)
+(or (not x102) (not x1088) (not x433))
+(or (not x102) (not x1088))
+(or (not x102) (not x1086) x476)
+(or (not x102) (not x1088))
+(or (not x433) x137 x103 x102 x1088)
+(or (not x136) (not x105) (not x435))
+(or (not x136) (not x105) x482)
+(or (not x136) (not x103) (not x433))
+(or (not x136) (not x103) x479)
+(or (not x136) (not x121))
+(or (not x136) x105 x103 x121)
+(or (not x136) (not x121))
+(or (not x136) (not x120))
+(or (not x136) (not x1086))
+(or (not x121) (not x104) (not x435))
+(or (not x121) (not x104) x482)
+(or (not x121) (not x102) (not x433))
+(or (not x121) (not x102) x479)
+(or (not x121) (not x120))
+(or (not x121) x104 x102 x120)
+(or (not x121) (not x120))
+(or (not x121) (not x1086))
+(or (not x120) (not x436))
+(or (not x120) x485)
+(or (not x120) (not x1089) (not x435))
+(or (not x120) (not x1089) x482)
+(or (not x120) (not x1088) (not x433))
+(or (not x120) (not x1088) x479)
+(or (not x120) (not x1086))
+(or (not x120) (not x1086))
+(or (not x1100) x1101)
+(or (not x1101) x1100)
+(or (not x139) (not x1099))
+(or (not x139) x1100 x1099)
+(or (not x1099) x139 x1100)
+(or (not x1100) x139 x1099)
+(or (not x137) (not x1098))
+(or (not x137) x1099 x1098)
+(or (not x1098) x137 x1099)
+(or (not x1099) x137 x1098)
+(or (not x136) x1098)
+(or (not x1098) x136)
+(or (not x1096) x1097)
+(or (not x1097) x1096)
+(or (not x105) (not x1095))
+(or (not x105) x1096 x1095)
+(or (not x1095) x105 x1096)
+(or (not x1096) x105 x1095)
+(or (not x103) (not x1094))
+(or (not x103) x1095 x1094)
+(or (not x1094) x103 x1095)
+(or (not x1095) x103 x1094)
+(or (not x121) x1094)
+(or (not x1094) x121)
+(or (not x1092) x1093)
+(or (not x1093) x1092)
+(or (not x104) (not x1091))
+(or (not x104) x1092 x1091)
+(or (not x1091) x104 x1092)
+(or (not x1092) x104 x1091)
+(or (not x102) (not x1090))
+(or (not x102) x1091 x1090)
+(or (not x1090) x102 x1091)
+(or (not x1091) x102 x1090)
+(or (not x120) x1090)
+(or (not x1090) x120)
+(or (not x1089) (not x1087))
+(or (not x1089) x1087)
+(or (not x1087) x1089)
+(or (not x1088) (not x1085))
+(or (not x1088) x1087 x1085)
+(or (not x1085) x1088 x1087)
+(or (not x1087) x1088 x1085)
+(or (not x1086) x1085)
+(or (not x1085) x1086)
+(or (not x129) (not x100) (not x432))
+(or (not x129) (not x100))
+(or (not x129) (not x97) (not x429))
+(or (not x129) (not x97) x481)
+(or (not x129) (not x119) x478)
+(or (not x129) x100 x97 x119)
+(or (not x129) (not x100))
+(or (not x129) (not x99))
+(or (not x100) (not x99) (not x432))
+(or (not x100) (not x99))
+(or (not x100) (not x96) (not x429))
+(or (not x100) (not x96) x481)
+(or (not x100) (not x118) x478)
+(or (not x100) x99 x96 x118)
+(or (not x100) (not x99))
+(or (not x99) (not x430))
+(or (not x99) x484)
+(or (not x99) (not x1072) (not x429))
+(or (not x99) (not x1072) x481)
+(or (not x99) (not x1071) x478)
+(or (not x432) x129 x100 x99)
+(or (not x128) (not x100) (not x432))
+(or (not x128) (not x100) x486)
+(or (not x128) (not x97) (not x429))
+(or (not x128) (not x97))
+(or (not x128) (not x119) x476)
+(or (not x128) x100 x97 x119)
+(or (not x128) (not x97))
+(or (not x128) (not x96))
+(or (not x128) (not x1072))
+(or (not x97) (not x99) (not x432))
+(or (not x97) (not x99) x486)
+(or (not x97) (not x96) (not x429))
+(or (not x97) (not x96))
+(or (not x97) (not x118) x476)
+(or (not x97) x99 x96 x118)
+(or (not x97) (not x96))
+(or (not x97) (not x1072))
+(or (not x96) (not x430))
+(or (not x96) x483)
+(or (not x96) (not x1072) (not x429))
+(or (not x96) (not x1072))
+(or (not x96) (not x1071) x476)
+(or (not x96) (not x1072))
+(or (not x429) x128 x97 x96 x1072)
+(or (not x125) (not x100) (not x432))
+(or (not x125) (not x100) x485)
+(or (not x125) (not x97) (not x429))
+(or (not x125) (not x97) x479)
+(or (not x125) (not x119))
+(or (not x125) x100 x97 x119)
+(or (not x125) (not x119))
+(or (not x125) (not x118))
+(or (not x125) (not x1071))
+(or (not x119) (not x99) (not x432))
+(or (not x119) (not x99) x485)
+(or (not x119) (not x96) (not x429))
+(or (not x119) (not x96) x479)
+(or (not x119) (not x118))
+(or (not x119) x99 x96 x118)
+(or (not x119) (not x118))
+(or (not x119) (not x1071))
+(or (not x118) (not x430))
+(or (not x118) x482)
+(or (not x118) (not x1072) (not x429))
+(or (not x118) (not x1072) x479)
+(or (not x118) (not x1071))
+(or (not x118) (not x1071))
+(or (not x129) (not x1083))
+(or (not x129) x1084 x1083)
+(or (not x1083) x129 x1084)
+(or (not x1084) x129 x1083)
+(or (not x1082) x1083)
+(or (not x1083) x1082)
+(or (not x128) (not x1081))
+(or (not x128) x1082 x1081)
+(or (not x1081) x128 x1082)
+(or (not x1082) x128 x1081)
+(or (not x125) x1081)
+(or (not x1081) x125)
+(or (not x100) (not x1079))
+(or (not x100) x1080 x1079)
+(or (not x1079) x100 x1080)
+(or (not x1080) x100 x1079)
+(or (not x1078) x1079)
+(or (not x1079) x1078)
+(or (not x97) (not x1077))
+(or (not x97) x1078 x1077)
+(or (not x1077) x97 x1078)
+(or (not x1078) x97 x1077)
+(or (not x119) x1077)
+(or (not x1077) x119)
+(or (not x99) (not x1075))
+(or (not x99) x1076 x1075)
+(or (not x1075) x99 x1076)
+(or (not x1076) x99 x1075)
+(or (not x1074) x1075)
+(or (not x1075) x1074)
+(or (not x96) (not x1073))
+(or (not x96) x1074 x1073)
+(or (not x1073) x96 x1074)
+(or (not x1074) x96 x1073)
+(or (not x118) x1073)
+(or (not x1073) x118)
+(or (not x1072) (not x1070))
+(or (not x1072) x1070)
+(or (not x1070) x1072)
+(or (not x1071) x1070)
+(or (not x1070) x1071)
+(or (not x117) (not x93) (not x427))
+(or (not x117) (not x93))
+(or (not x117) (not x89) (not x426))
+(or (not x117) (not x89) x484)
+(or (not x117) (not x111) x478)
+(or (not x117) x93 x89 x111)
+(or (not x117) (not x93))
+(or (not x117) (not x91))
+(or (not x93) (not x91) (not x427))
+(or (not x93) (not x91))
+(or (not x93) (not x87) (not x426))
+(or (not x93) (not x87) x484)
+(or (not x93) (not x112) x478)
+(or (not x93) x91 x87 x112)
+(or (not x93) (not x91))
+(or (not x91) (not x424))
+(or (not x91) x481)
+(or (not x427) x117 x93 x91)
+(or (not x114) (not x93) (not x427))
+(or (not x114) (not x93) x487)
+(or (not x114) (not x89) (not x426))
+(or (not x114) (not x89))
+(or (not x114) (not x111) x477)
+(or (not x114) x93 x89 x111)
+(or (not x114) (not x89))
+(or (not x114) (not x87))
+(or (not x89) (not x91) (not x427))
+(or (not x89) (not x91) x487)
+(or (not x89) (not x87) (not x426))
+(or (not x89) (not x87))
+(or (not x89) (not x112) x477)
+(or (not x89) x91 x87 x112)
+(or (not x89) (not x87))
+(or (not x87) (not x424))
+(or (not x87) x480)
+(or (not x426) x114 x89 x87)
+(or (not x113) (not x93) (not x427))
+(or (not x113) (not x93) x485)
+(or (not x113) (not x89) (not x426))
+(or (not x113) (not x89) x482)
+(or (not x113) (not x111))
+(or (not x113) x93 x89 x111)
+(or (not x113) (not x111))
+(or (not x113) (not x112))
+(or (not x111) (not x91) (not x427))
+(or (not x111) (not x91) x485)
+(or (not x111) (not x87) (not x426))
+(or (not x111) (not x87) x482)
+(or (not x111) (not x112))
+(or (not x111) x91 x87 x112)
+(or (not x111) (not x112))
+(or (not x112) (not x424))
+(or (not x112) x479)
+(or (not x117) (not x1068))
+(or (not x117) x1069 x1068)
+(or (not x1068) x117 x1069)
+(or (not x1069) x117 x1068)
+(or (not x114) (not x1067))
+(or (not x114) x1068 x1067)
+(or (not x1067) x114 x1068)
+(or (not x1068) x114 x1067)
+(or (not x1066) x1067)
+(or (not x1067) x1066)
+(or (not x113) x1066)
+(or (not x1066) x113)
+(or (not x93) (not x1064))
+(or (not x93) x1065 x1064)
+(or (not x1064) x93 x1065)
+(or (not x1065) x93 x1064)
+(or (not x89) (not x1063))
+(or (not x89) x1064 x1063)
+(or (not x1063) x89 x1064)
+(or (not x1064) x89 x1063)
+(or (not x1062) x1063)
+(or (not x1063) x1062)
+(or (not x111) x1062)
+(or (not x1062) x111)
+(or (not x91) (not x1060))
+(or (not x91) x1061 x1060)
+(or (not x1060) x91 x1061)
+(or (not x1061) x91 x1060)
+(or (not x87) (not x1059))
+(or (not x87) x1060 x1059)
+(or (not x1059) x87 x1060)
+(or (not x1060) x87 x1059)
+(or (not x1058) x1059)
+(or (not x1059) x1058)
+(or (not x112) x1058)
+(or (not x1058) x112)
+(or (not x92) (not x90) (not x423))
+(or (not x92) (not x90))
+(or (not x92) (not x86) (not x421))
+(or (not x92) (not x86) x484)
+(or (not x92) (not x81) (not x420))
+(or (not x92) (not x81) x481)
+(or (not x92) x90 x86 x81)
+(or (not x92) (not x90))
+(or (not x92) (not x101))
+(or (not x90) (not x101) (not x423))
+(or (not x90) (not x101))
+(or (not x90) (not x95) (not x421))
+(or (not x90) (not x95) x484)
+(or (not x90) (not x82) (not x420))
+(or (not x90) (not x82) x481)
+(or (not x90) x101 x95 x82)
+(or (not x90) (not x101))
+(or (not x101) x478)
+(or (not x423) x92 x90 x101)
+(or (not x88) (not x90) (not x423))
+(or (not x88) (not x90) x487)
+(or (not x88) (not x86) (not x421))
+(or (not x88) (not x86))
+(or (not x88) (not x81) (not x420))
+(or (not x88) (not x81) x480)
+(or (not x88) x90 x86 x81)
+(or (not x88) (not x86))
+(or (not x88) (not x95))
+(or (not x86) (not x101) (not x423))
+(or (not x86) (not x101) x487)
+(or (not x86) (not x95) (not x421))
+(or (not x86) (not x95))
+(or (not x86) (not x82) (not x420))
+(or (not x86) (not x82) x480)
+(or (not x86) x101 x95 x82)
+(or (not x86) (not x95))
+(or (not x95) x477)
+(or (not x421) x88 x86 x95)
+(or (not x83) (not x90) (not x423))
+(or (not x83) (not x90) x486)
+(or (not x83) (not x86) (not x421))
+(or (not x83) (not x86) x483)
+(or (not x83) (not x81) (not x420))
+(or (not x83) (not x81))
+(or (not x83) x90 x86 x81)
+(or (not x83) (not x81))
+(or (not x83) (not x82))
+(or (not x81) (not x101) (not x423))
+(or (not x81) (not x101) x486)
+(or (not x81) (not x95) (not x421))
+(or (not x81) (not x95) x483)
+(or (not x81) (not x82) (not x420))
+(or (not x81) (not x82))
+(or (not x81) x101 x95 x82)
+(or (not x81) (not x82))
+(or (not x82) x476)
+(or (not x420) x83 x81 x82)
+(or (not x92) (not x1056))
+(or (not x92) x1057 x1056)
+(or (not x1056) x92 x1057)
+(or (not x1057) x92 x1056)
+(or (not x88) (not x1055))
+(or (not x88) x1056 x1055)
+(or (not x1055) x88 x1056)
+(or (not x1056) x88 x1055)
+(or (not x83) x1055)
+(or (not x1055) x83)
+(or (not x90) (not x1053))
+(or (not x90) x1054 x1053)
+(or (not x1053) x90 x1054)
+(or (not x1054) x90 x1053)
+(or (not x86) (not x1052))
+(or (not x86) x1053 x1052)
+(or (not x1052) x86 x1053)
+(or (not x1053) x86 x1052)
+(or (not x81) x1052)
+(or (not x1052) x81)
+(or (not x101) (not x1050))
+(or (not x101) x1051 x1050)
+(or (not x1050) x101 x1051)
+(or (not x1051) x101 x1050)
+(or (not x95) (not x1049))
+(or (not x95) x1050 x1049)
+(or (not x1049) x95 x1050)
+(or (not x1050) x95 x1049)
+(or (not x82) x1049)
+(or (not x1049) x82)
+(or (not x74) (not x26) (not x416))
+(or (not x74) (not x26))
+(or (not x74) (not x16) (not x413))
+(or (not x74) (not x16) x458)
+(or (not x74) (not x50) x449)
+(or (not x74) x26 x16 x50)
+(or (not x74) (not x26))
+(or (not x74) (not x21))
+(or (not x74) (not x1036))
+(or (not x26) (not x21) (not x416))
+(or (not x26) (not x21))
+(or (not x26) (not x11) (not x413))
+(or (not x26) (not x11) x458)
+(or (not x26) (not x49) x449)
+(or (not x26) x21 x11 x49)
+(or (not x26) (not x21))
+(or (not x26) (not x1036))
+(or (not x21) (not x418))
+(or (not x21) x475)
+(or (not x21) (not x1036) (not x416))
+(or (not x21) (not x1036))
+(or (not x21) (not x1035) (not x413))
+(or (not x21) (not x1035) x458)
+(or (not x21) (not x1033) x449)
+(or (not x21) (not x1036))
+(or (not x416) x74 x26 x21 x1036)
+(or (not x72) (not x26) (not x416))
+(or (not x72) (not x26) x467)
+(or (not x72) (not x16) (not x413))
+(or (not x72) (not x16))
+(or (not x72) (not x50) x446)
+(or (not x72) x26 x16 x50)
+(or (not x72) (not x16))
+(or (not x72) (not x11))
+(or (not x72) (not x1035))
+(or (not x16) (not x21) (not x416))
+(or (not x16) (not x21) x467)
+(or (not x16) (not x11) (not x413))
+(or (not x16) (not x11))
+(or (not x16) (not x49) x446)
+(or (not x16) x21 x11 x49)
+(or (not x16) (not x11))
+(or (not x16) (not x1035))
+(or (not x11) (not x418))
+(or (not x11) x474)
+(or (not x11) (not x1036) (not x416))
+(or (not x11) (not x1036) x467)
+(or (not x11) (not x1035) (not x413))
+(or (not x11) (not x1035))
+(or (not x11) (not x1033) x446)
+(or (not x11) (not x1035))
+(or (not x413) x72 x16 x11 x1035)
+(or (not x68) (not x26) (not x416))
+(or (not x68) (not x26) x464)
+(or (not x68) (not x16) (not x413))
+(or (not x68) (not x16) x455)
+(or (not x68) (not x50))
+(or (not x68) x26 x16 x50)
+(or (not x68) (not x50))
+(or (not x68) (not x49))
+(or (not x68) (not x1033))
+(or (not x50) (not x21) (not x416))
+(or (not x50) (not x21) x464)
+(or (not x50) (not x11) (not x413))
+(or (not x50) (not x11) x455)
+(or (not x50) (not x49))
+(or (not x50) x21 x11 x49)
+(or (not x50) (not x49))
+(or (not x50) (not x1033))
+(or (not x49) (not x418))
+(or (not x49) x473)
+(or (not x49) (not x1036) (not x416))
+(or (not x49) (not x1036) x464)
+(or (not x49) (not x1035) (not x413))
+(or (not x49) (not x1035) x455)
+(or (not x49) (not x1033))
+(or (not x49) (not x1033))
+(or (not x1047) x1048)
+(or (not x1048) x1047)
+(or (not x74) (not x1046))
+(or (not x74) x1047 x1046)
+(or (not x1046) x74 x1047)
+(or (not x1047) x74 x1046)
+(or (not x72) (not x1045))
+(or (not x72) x1046 x1045)
+(or (not x1045) x72 x1046)
+(or (not x1046) x72 x1045)
+(or (not x68) x1045)
+(or (not x1045) x68)
+(or (not x1043) x1044)
+(or (not x1044) x1043)
+(or (not x26) (not x1042))
+(or (not x26) x1043 x1042)
+(or (not x1042) x26 x1043)
+(or (not x1043) x26 x1042)
+(or (not x16) (not x1041))
+(or (not x16) x1042 x1041)
+(or (not x1041) x16 x1042)
+(or (not x1042) x16 x1041)
+(or (not x50) x1041)
+(or (not x1041) x50)
+(or (not x1039) x1040)
+(or (not x1040) x1039)
+(or (not x21) (not x1038))
+(or (not x21) x1039 x1038)
+(or (not x1038) x21 x1039)
+(or (not x1039) x21 x1038)
+(or (not x11) (not x1037))
+(or (not x11) x1038 x1037)
+(or (not x1037) x11 x1038)
+(or (not x1038) x11 x1037)
+(or (not x49) x1037)
+(or (not x1037) x49)
+(or (not x1036) (not x1034))
+(or (not x1036) x1034)
+(or (not x1034) x1036)
+(or (not x1035) (not x1032))
+(or (not x1035) x1034 x1032)
+(or (not x1032) x1035 x1034)
+(or (not x1034) x1035 x1032)
+(or (not x1033) x1032)
+(or (not x1032) x1033)
+(or (not x61) (not x5) (not x411))
+(or (not x61) (not x5))
+(or (not x61) (not x56) (not x406))
+(or (not x61) (not x56) x461)
+(or (not x61) (not x44) x452)
+(or (not x61) x5 x56 x44)
+(or (not x61) (not x5))
+(or (not x61) (not x3))
+(or (not x5) (not x3) (not x411))
+(or (not x5) (not x3))
+(or (not x5) (not x64) (not x406))
+(or (not x5) (not x64) x461)
+(or (not x5) (not x43) x452)
+(or (not x5) x3 x64 x43)
+(or (not x5) (not x3))
+(or (not x3) (not x408))
+(or (not x3) x470)
+(or (not x3) (not x1019) (not x406))
+(or (not x3) (not x1019) x461)
+(or (not x3) (not x1018) x452)
+(or (not x411) x61 x5 x3)
+(or (not x58) (not x5) (not x411))
+(or (not x58) (not x5) x474)
+(or (not x58) (not x56) (not x406))
+(or (not x58) (not x56))
+(or (not x58) (not x44) x446)
+(or (not x58) x5 x56 x44)
+(or (not x58) (not x56))
+(or (not x58) (not x64))
+(or (not x58) (not x1019))
+(or (not x56) (not x3) (not x411))
+(or (not x56) (not x3) x474)
+(or (not x56) (not x64) (not x406))
+(or (not x56) (not x64))
+(or (not x56) (not x43) x446)
+(or (not x56) x3 x64 x43)
+(or (not x56) (not x64))
+(or (not x56) (not x1019))
+(or (not x64) (not x408))
+(or (not x64) x467)
+(or (not x64) (not x1019) (not x406))
+(or (not x64) (not x1019))
+(or (not x64) (not x1018) x446)
+(or (not x64) (not x1019))
+(or (not x406) x58 x56 x64 x1019)
+(or (not x54) (not x5) (not x411))
+(or (not x54) (not x5) x473)
+(or (not x54) (not x56) (not x406))
+(or (not x54) (not x56) x455)
+(or (not x54) (not x44))
+(or (not x54) x5 x56 x44)
+(or (not x54) (not x44))
+(or (not x54) (not x43))
+(or (not x54) (not x1018))
+(or (not x44) (not x3) (not x411))
+(or (not x44) (not x3) x473)
+(or (not x44) (not x64) (not x406))
+(or (not x44) (not x64) x455)
+(or (not x44) (not x43))
+(or (not x44) x3 x64 x43)
+(or (not x44) (not x43))
+(or (not x44) (not x1018))
+(or (not x43) (not x408))
+(or (not x43) x464)
+(or (not x43) (not x1019) (not x406))
+(or (not x43) (not x1019) x455)
+(or (not x43) (not x1018))
+(or (not x43) (not x1018))
+(or (not x61) (not x1030))
+(or (not x61) x1031 x1030)
+(or (not x1030) x61 x1031)
+(or (not x1031) x61 x1030)
+(or (not x1029) x1030)
+(or (not x1030) x1029)
+(or (not x58) (not x1028))
+(or (not x58) x1029 x1028)
+(or (not x1028) x58 x1029)
+(or (not x1029) x58 x1028)
+(or (not x54) x1028)
+(or (not x1028) x54)
+(or (not x5) (not x1026))
+(or (not x5) x1027 x1026)
+(or (not x1026) x5 x1027)
+(or (not x1027) x5 x1026)
+(or (not x1025) x1026)
+(or (not x1026) x1025)
+(or (not x56) (not x1024))
+(or (not x56) x1025 x1024)
+(or (not x1024) x56 x1025)
+(or (not x1025) x56 x1024)
+(or (not x44) x1024)
+(or (not x1024) x44)
+(or (not x3) (not x1022))
+(or (not x3) x1023 x1022)
+(or (not x1022) x3 x1023)
+(or (not x1023) x3 x1022)
+(or (not x1021) x1022)
+(or (not x1022) x1021)
+(or (not x64) (not x1020))
+(or (not x64) x1021 x1020)
+(or (not x1020) x64 x1021)
+(or (not x1021) x64 x1020)
+(or (not x43) x1020)
+(or (not x1020) x43)
+(or (not x1019) (not x1017))
+(or (not x1019) x1017)
+(or (not x1017) x1019)
+(or (not x1018) x1017)
+(or (not x1017) x1018)
+(or (not x40) (not x39) (not x403))
+(or (not x40) (not x39))
+(or (not x40) (not x36) (not x401))
+(or (not x40) (not x36) x470)
+(or (not x40) (not x31) x452)
+(or (not x40) x39 x36 x31)
+(or (not x40) (not x39))
+(or (not x40) (not x48))
+(or (not x39) (not x48) (not x403))
+(or (not x39) (not x48))
+(or (not x39) (not x42) (not x401))
+(or (not x39) (not x42) x470)
+(or (not x39) (not x32) x452)
+(or (not x39) x48 x42 x32)
+(or (not x39) (not x48))
+(or (not x48) (not x398))
+(or (not x48) x461)
+(or (not x403) x40 x39 x48)
+(or (not x37) (not x39) (not x403))
+(or (not x37) (not x39) x475)
+(or (not x37) (not x36) (not x401))
+(or (not x37) (not x36))
+(or (not x37) (not x31) x449)
+(or (not x37) x39 x36 x31)
+(or (not x37) (not x36))
+(or (not x37) (not x42))
+(or (not x36) (not x48) (not x403))
+(or (not x36) (not x48) x475)
+(or (not x36) (not x42) (not x401))
+(or (not x36) (not x42))
+(or (not x36) (not x32) x449)
+(or (not x36) x48 x42 x32)
+(or (not x36) (not x42))
+(or (not x42) (not x398))
+(or (not x42) x458)
+(or (not x401) x37 x36 x42)
+(or (not x33) (not x39) (not x403))
+(or (not x33) (not x39) x473)
+(or (not x33) (not x36) (not x401))
+(or (not x33) (not x36) x464)
+(or (not x33) (not x31))
+(or (not x33) x39 x36 x31)
+(or (not x33) (not x31))
+(or (not x33) (not x32))
+(or (not x31) (not x48) (not x403))
+(or (not x31) (not x48) x473)
+(or (not x31) (not x42) (not x401))
+(or (not x31) (not x42) x464)
+(or (not x31) (not x32))
+(or (not x31) x48 x42 x32)
+(or (not x31) (not x32))
+(or (not x32) (not x398))
+(or (not x32) x455)
+(or (not x40) (not x1015))
+(or (not x40) x1016 x1015)
+(or (not x1015) x40 x1016)
+(or (not x1016) x40 x1015)
+(or (not x37) (not x1014))
+(or (not x37) x1015 x1014)
+(or (not x1014) x37 x1015)
+(or (not x1015) x37 x1014)
+(or (not x1013) x1014)
+(or (not x1014) x1013)
+(or (not x33) x1013)
+(or (not x1013) x33)
+(or (not x39) (not x1011))
+(or (not x39) x1012 x1011)
+(or (not x1011) x39 x1012)
+(or (not x1012) x39 x1011)
+(or (not x36) (not x1010))
+(or (not x36) x1011 x1010)
+(or (not x1010) x36 x1011)
+(or (not x1011) x36 x1010)
+(or (not x1009) x1010)
+(or (not x1010) x1009)
+(or (not x31) x1009)
+(or (not x1009) x31)
+(or (not x48) (not x1007))
+(or (not x48) x1008 x1007)
+(or (not x1007) x48 x1008)
+(or (not x1008) x48 x1007)
+(or (not x42) (not x1006))
+(or (not x42) x1007 x1006)
+(or (not x1006) x42 x1007)
+(or (not x1007) x42 x1006)
+(or (not x1005) x1006)
+(or (not x1006) x1005)
+(or (not x32) x1005)
+(or (not x1005) x32)
+(or (not x4) (not x1) (not x395))
+(or (not x4) (not x1))
+(or (not x4) (not x20) (not x392))
+(or (not x4) (not x20) x470)
+(or (not x4) (not x9) (not x389))
+(or (not x4) (not x9) x461)
+(or (not x4) x1 x20 x9)
+(or (not x4) (not x1))
+(or (not x4) (not x10))
+(or (not x1) (not x10) (not x395))
+(or (not x1) (not x10))
+(or (not x1) (not x2) (not x392))
+(or (not x1) (not x2) x470)
+(or (not x1) (not x57) (not x389))
+(or (not x1) (not x57) x461)
+(or (not x1) x10 x2 x57)
+(or (not x1) (not x10))
+(or (not x10) x452)
+(or (not x395) x4 x1 x10)
+(or (not x25) (not x1) (not x395))
+(or (not x25) (not x1) x475)
+(or (not x25) (not x20) (not x392))
+(or (not x25) (not x20))
+(or (not x25) (not x9) (not x389))
+(or (not x25) (not x9) x458)
+(or (not x25) x1 x20 x9)
+(or (not x25) (not x20))
+(or (not x25) (not x2))
+(or (not x20) (not x10) (not x395))
+(or (not x20) (not x10) x475)
+(or (not x20) (not x2) (not x392))
+(or (not x20) (not x2))
+(or (not x20) (not x57) (not x389))
+(or (not x20) (not x57) x458)
+(or (not x20) x10 x2 x57)
+(or (not x20) (not x2))
+(or (not x2) x449)
+(or (not x392) x25 x20 x2)
+(or (not x15) (not x1) (not x395))
+(or (not x15) (not x1) x474)
+(or (not x15) (not x20) (not x392))
+(or (not x15) (not x20) x467)
+(or (not x15) (not x9) (not x389))
+(or (not x15) (not x9))
+(or (not x15) x1 x20 x9)
+(or (not x15) (not x9))
+(or (not x15) (not x57))
+(or (not x9) (not x10) (not x395))
+(or (not x9) (not x10) x474)
+(or (not x9) (not x2) (not x392))
+(or (not x9) (not x2) x467)
+(or (not x9) (not x57) (not x389))
+(or (not x9) (not x57))
+(or (not x9) x10 x2 x57)
+(or (not x9) (not x57))
+(or (not x57) x446)
+(or (not x389) x15 x9 x57)
+(or (not x4) (not x1003))
+(or (not x4) x1004 x1003)
+(or (not x1003) x4 x1004)
+(or (not x1004) x4 x1003)
+(or (not x25) (not x1002))
+(or (not x25) x1003 x1002)
+(or (not x1002) x25 x1003)
+(or (not x1003) x25 x1002)
+(or (not x15) x1002)
+(or (not x1002) x15)
+(or (not x1) (not x1000))
+(or (not x1) x1001 x1000)
+(or (not x1000) x1 x1001)
+(or (not x1001) x1 x1000)
+(or (not x20) (not x999))
+(or (not x20) x1000 x999)
+(or (not x999) x20 x1000)
+(or (not x1000) x20 x999)
+(or (not x9) x999)
+(or (not x999) x9)
+(or (not x10) (not x997))
+(or (not x10) x998 x997)
+(or (not x997) x10 x998)
+(or (not x998) x10 x997)
+(or (not x2) (not x996))
+(or (not x2) x997 x996)
+(or (not x996) x2 x997)
+(or (not x997) x2 x996)
+(or (not x57) x996)
+(or (not x996) x57)
+(or (not x994) (not x987) (not x415))
+(or (not x994) (not x987))
+(or (not x994) (not x985) (not x412))
+(or (not x994) (not x985) x422)
+(or (not x994) (not x983) x409)
+(or (not x994) x987 x985 x983)
+(or (not x994) (not x987))
+(or (not x994) (not x980))
+(or (not x994) (not x974))
+(or (not x987) (not x980) (not x415))
+(or (not x987) (not x980))
+(or (not x987) (not x978) (not x412))
+(or (not x987) (not x978) x422)
+(or (not x987) (not x976) x409)
+(or (not x987) x980 x978 x976)
+(or (not x987) (not x980))
+(or (not x987) (not x974))
+(or (not x980) (not x417))
+(or (not x980) x443)
+(or (not x980) (not x974) (not x415))
+(or (not x980) (not x974))
+(or (not x980) (not x973) (not x412))
+(or (not x980) (not x973) x422)
+(or (not x980) (not x971) x409)
+(or (not x980) (not x974))
+(or (not x415) x994 x987 x980 x974)
+(or (not x992) (not x987) (not x415))
+(or (not x992) (not x987) x431)
+(or (not x992) (not x985) (not x412))
+(or (not x992) (not x985))
+(or (not x992) (not x983) x404)
+(or (not x992) x987 x985 x983)
+(or (not x992) (not x985))
+(or (not x992) (not x978))
+(or (not x992) (not x973))
+(or (not x985) (not x980) (not x415))
+(or (not x985) (not x980) x431)
+(or (not x985) (not x978) (not x412))
+(or (not x985) (not x978))
+(or (not x985) (not x976) x404)
+(or (not x985) x980 x978 x976)
+(or (not x985) (not x978))
+(or (not x985) (not x973))
+(or (not x978) (not x417))
+(or (not x978) x440)
+(or (not x978) (not x974) (not x415))
+(or (not x978) (not x974) x431)
+(or (not x978) (not x973) (not x412))
+(or (not x978) (not x973))
+(or (not x978) (not x971) x404)
+(or (not x978) (not x973))
+(or (not x412) x992 x985 x978 x973)
+(or (not x990) (not x987) (not x415))
+(or (not x990) (not x987) x428)
+(or (not x990) (not x985) (not x412))
+(or (not x990) (not x985) x419)
+(or (not x990) (not x983))
+(or (not x990) x987 x985 x983)
+(or (not x990) (not x983))
+(or (not x990) (not x976))
+(or (not x990) (not x971))
+(or (not x983) (not x980) (not x415))
+(or (not x983) (not x980) x428)
+(or (not x983) (not x978) (not x412))
+(or (not x983) (not x978) x419)
+(or (not x983) (not x976))
+(or (not x983) x980 x978 x976)
+(or (not x983) (not x976))
+(or (not x983) (not x971))
+(or (not x976) (not x417))
+(or (not x976) x437)
+(or (not x976) (not x974) (not x415))
+(or (not x976) (not x974) x428)
+(or (not x976) (not x973) (not x412))
+(or (not x976) (not x973) x419)
+(or (not x976) (not x971))
+(or (not x976) (not x971))
+(or (not x993) x995)
+(or (not x995) x993)
+(or (not x994) (not x991))
+(or (not x994) x993 x991)
+(or (not x991) x994 x993)
+(or (not x993) x994 x991)
+(or (not x992) (not x989))
+(or (not x992) x991 x989)
+(or (not x989) x992 x991)
+(or (not x991) x992 x989)
+(or (not x990) x989)
+(or (not x989) x990)
+(or (not x986) x988)
+(or (not x988) x986)
+(or (not x987) (not x984))
+(or (not x987) x986 x984)
+(or (not x984) x987 x986)
+(or (not x986) x987 x984)
+(or (not x985) (not x982))
+(or (not x985) x984 x982)
+(or (not x982) x985 x984)
+(or (not x984) x985 x982)
+(or (not x983) x982)
+(or (not x982) x983)
+(or (not x979) x981)
+(or (not x981) x979)
+(or (not x980) (not x977))
+(or (not x980) x979 x977)
+(or (not x977) x980 x979)
+(or (not x979) x980 x977)
+(or (not x978) (not x975))
+(or (not x978) x977 x975)
+(or (not x975) x978 x977)
+(or (not x977) x978 x975)
+(or (not x976) x975)
+(or (not x975) x976)
+(or (not x974) (not x972))
+(or (not x974) x972)
+(or (not x972) x974)
+(or (not x973) (not x970))
+(or (not x973) x972 x970)
+(or (not x970) x973 x972)
+(or (not x972) x973 x970)
+(or (not x971) x970)
+(or (not x970) x971)
+(or (not x969) (not x962) (not x410))
+(or (not x969) (not x962))
+(or (not x969) (not x959) (not x405))
+(or (not x969) (not x959) x425)
+(or (not x969) (not x957) x414)
+(or (not x969) x962 x959 x957)
+(or (not x969) (not x962))
+(or (not x969) (not x955))
+(or (not x962) (not x955) (not x410))
+(or (not x962) (not x955))
+(or (not x962) (not x952) (not x405))
+(or (not x962) (not x952) x425)
+(or (not x962) (not x950) x414)
+(or (not x962) x955 x952 x950)
+(or (not x962) (not x955))
+(or (not x955) (not x407))
+(or (not x955) x434)
+(or (not x955) (not x948) (not x405))
+(or (not x955) (not x948) x425)
+(or (not x955) (not x947) x414)
+(or (not x410) x969 x962 x955)
+(or (not x966) (not x962) (not x410))
+(or (not x966) (not x962) x440)
+(or (not x966) (not x959) (not x405))
+(or (not x966) (not x959))
+(or (not x966) (not x957) x404)
+(or (not x966) x962 x959 x957)
+(or (not x966) (not x959))
+(or (not x966) (not x952))
+(or (not x966) (not x948))
+(or (not x959) (not x955) (not x410))
+(or (not x959) (not x955) x440)
+(or (not x959) (not x952) (not x405))
+(or (not x959) (not x952))
+(or (not x959) (not x950) x404)
+(or (not x959) x955 x952 x950)
+(or (not x959) (not x952))
+(or (not x959) (not x948))
+(or (not x952) (not x407))
+(or (not x952) x431)
+(or (not x952) (not x948) (not x405))
+(or (not x952) (not x948))
+(or (not x952) (not x947) x404)
+(or (not x952) (not x948))
+(or (not x405) x966 x959 x952 x948)
+(or (not x964) (not x962) (not x410))
+(or (not x964) (not x962) x437)
+(or (not x964) (not x959) (not x405))
+(or (not x964) (not x959) x419)
+(or (not x964) (not x957))
+(or (not x964) x962 x959 x957)
+(or (not x964) (not x957))
+(or (not x964) (not x950))
+(or (not x964) (not x947))
+(or (not x957) (not x955) (not x410))
+(or (not x957) (not x955) x437)
+(or (not x957) (not x952) (not x405))
+(or (not x957) (not x952) x419)
+(or (not x957) (not x950))
+(or (not x957) x955 x952 x950)
+(or (not x957) (not x950))
+(or (not x957) (not x947))
+(or (not x950) (not x407))
+(or (not x950) x428)
+(or (not x950) (not x948) (not x405))
+(or (not x950) (not x948) x419)
+(or (not x950) (not x947))
+(or (not x950) (not x947))
+(or (not x969) (not x967))
+(or (not x969) x968 x967)
+(or (not x967) x969 x968)
+(or (not x968) x969 x967)
+(or (not x965) x967)
+(or (not x967) x965)
+(or (not x966) (not x963))
+(or (not x966) x965 x963)
+(or (not x963) x966 x965)
+(or (not x965) x966 x963)
+(or (not x964) x963)
+(or (not x963) x964)
+(or (not x962) (not x960))
+(or (not x962) x961 x960)
+(or (not x960) x962 x961)
+(or (not x961) x962 x960)
+(or (not x958) x960)
+(or (not x960) x958)
+(or (not x959) (not x956))
+(or (not x959) x958 x956)
+(or (not x956) x959 x958)
+(or (not x958) x959 x956)
+(or (not x957) x956)
+(or (not x956) x957)
+(or (not x955) (not x953))
+(or (not x955) x954 x953)
+(or (not x953) x955 x954)
+(or (not x954) x955 x953)
+(or (not x951) x953)
+(or (not x953) x951)
+(or (not x952) (not x949))
+(or (not x952) x951 x949)
+(or (not x949) x952 x951)
+(or (not x951) x952 x949)
+(or (not x950) x949)
+(or (not x949) x950)
+(or (not x948) (not x946))
+(or (not x948) x946)
+(or (not x946) x948)
+(or (not x947) x946)
+(or (not x946) x947)
+(or (not x945) (not x938) (not x402))
+(or (not x945) (not x938))
+(or (not x945) (not x936) (not x400))
+(or (not x945) (not x936) x434)
+(or (not x945) (not x933) x414)
+(or (not x945) x938 x936 x933)
+(or (not x945) (not x938))
+(or (not x945) (not x931))
+(or (not x938) (not x931) (not x402))
+(or (not x938) (not x931))
+(or (not x938) (not x929) (not x400))
+(or (not x938) (not x929) x434)
+(or (not x938) (not x926) x414)
+(or (not x938) x931 x929 x926)
+(or (not x938) (not x931))
+(or (not x931) (not x397))
+(or (not x931) x425)
+(or (not x402) x945 x938 x931)
+(or (not x943) (not x938) (not x402))
+(or (not x943) (not x938) x443)
+(or (not x943) (not x936) (not x400))
+(or (not x943) (not x936))
+(or (not x943) (not x933) x409)
+(or (not x943) x938 x936 x933)
+(or (not x943) (not x936))
+(or (not x943) (not x929))
+(or (not x936) (not x931) (not x402))
+(or (not x936) (not x931) x443)
+(or (not x936) (not x929) (not x400))
+(or (not x936) (not x929))
+(or (not x936) (not x926) x409)
+(or (not x936) x931 x929 x926)
+(or (not x936) (not x929))
+(or (not x929) (not x397))
+(or (not x929) x422)
+(or (not x400) x943 x936 x929)
+(or (not x940) (not x938) (not x402))
+(or (not x940) (not x938) x437)
+(or (not x940) (not x936) (not x400))
+(or (not x940) (not x936) x428)
+(or (not x940) (not x933))
+(or (not x940) x938 x936 x933)
+(or (not x940) (not x933))
+(or (not x940) (not x926))
+(or (not x933) (not x931) (not x402))
+(or (not x933) (not x931) x437)
+(or (not x933) (not x929) (not x400))
+(or (not x933) (not x929) x428)
+(or (not x933) (not x926))
+(or (not x933) x931 x929 x926)
+(or (not x933) (not x926))
+(or (not x926) (not x397))
+(or (not x926) x419)
+(or (not x945) (not x942))
+(or (not x945) x944 x942)
+(or (not x942) x945 x944)
+(or (not x944) x945 x942)
+(or (not x943) (not x941))
+(or (not x943) x942 x941)
+(or (not x941) x943 x942)
+(or (not x942) x943 x941)
+(or (not x939) x941)
+(or (not x941) x939)
+(or (not x940) x939)
+(or (not x939) x940)
+(or (not x938) (not x935))
+(or (not x938) x937 x935)
+(or (not x935) x938 x937)
+(or (not x937) x938 x935)
+(or (not x936) (not x934))
+(or (not x936) x935 x934)
+(or (not x934) x936 x935)
+(or (not x935) x936 x934)
+(or (not x932) x934)
+(or (not x934) x932)
+(or (not x933) x932)
+(or (not x932) x933)
+(or (not x931) (not x928))
+(or (not x931) x930 x928)
+(or (not x928) x931 x930)
+(or (not x930) x931 x928)
+(or (not x929) (not x927))
+(or (not x929) x928 x927)
+(or (not x927) x929 x928)
+(or (not x928) x929 x927)
+(or (not x925) x927)
+(or (not x927) x925)
+(or (not x926) x925)
+(or (not x925) x926)
+(or (not x924) (not x918) (not x394))
+(or (not x924) (not x918))
+(or (not x924) (not x916) (not x391))
+(or (not x924) (not x916) x434)
+(or (not x924) (not x914) (not x388))
+(or (not x924) (not x914) x425)
+(or (not x924) x918 x916 x914)
+(or (not x924) (not x918))
+(or (not x924) (not x912))
+(or (not x918) (not x912) (not x394))
+(or (not x918) (not x912))
+(or (not x918) (not x910) (not x391))
+(or (not x918) (not x910) x434)
+(or (not x918) (not x908) (not x388))
+(or (not x918) (not x908) x425)
+(or (not x918) x912 x910 x908)
+(or (not x918) (not x912))
+(or (not x912) x414)
+(or (not x394) x924 x918 x912)
+(or (not x922) (not x918) (not x394))
+(or (not x922) (not x918) x443)
+(or (not x922) (not x916) (not x391))
+(or (not x922) (not x916))
+(or (not x922) (not x914) (not x388))
+(or (not x922) (not x914) x422)
+(or (not x922) x918 x916 x914)
+(or (not x922) (not x916))
+(or (not x922) (not x910))
+(or (not x916) (not x912) (not x394))
+(or (not x916) (not x912) x443)
+(or (not x916) (not x910) (not x391))
+(or (not x916) (not x910))
+(or (not x916) (not x908) (not x388))
+(or (not x916) (not x908) x422)
+(or (not x916) x912 x910 x908)
+(or (not x916) (not x910))
+(or (not x910) x409)
+(or (not x391) x922 x916 x910)
+(or (not x920) (not x918) (not x394))
+(or (not x920) (not x918) x440)
+(or (not x920) (not x916) (not x391))
+(or (not x920) (not x916) x431)
+(or (not x920) (not x914) (not x388))
+(or (not x920) (not x914))
+(or (not x920) x918 x916 x914)
+(or (not x920) (not x914))
+(or (not x920) (not x908))
+(or (not x914) (not x912) (not x394))
+(or (not x914) (not x912) x440)
+(or (not x914) (not x910) (not x391))
+(or (not x914) (not x910) x431)
+(or (not x914) (not x908) (not x388))
+(or (not x914) (not x908))
+(or (not x914) x912 x910 x908)
+(or (not x914) (not x908))
+(or (not x908) x404)
+(or (not x388) x920 x914 x908)
+(or (not x924) (not x921))
+(or (not x924) x923 x921)
+(or (not x921) x924 x923)
+(or (not x923) x924 x921)
+(or (not x922) (not x919))
+(or (not x922) x921 x919)
+(or (not x919) x922 x921)
+(or (not x921) x922 x919)
+(or (not x920) x919)
+(or (not x919) x920)
+(or (not x918) (not x915))
+(or (not x918) x917 x915)
+(or (not x915) x918 x917)
+(or (not x917) x918 x915)
+(or (not x916) (not x913))
+(or (not x916) x915 x913)
+(or (not x913) x916 x915)
+(or (not x915) x916 x913)
+(or (not x914) x913)
+(or (not x913) x914)
+(or (not x912) (not x909))
+(or (not x912) x911 x909)
+(or (not x909) x912 x911)
+(or (not x911) x912 x909)
+(or (not x910) (not x907))
+(or (not x910) x909 x907)
+(or (not x907) x910 x909)
+(or (not x909) x910 x907)
+(or (not x908) x907)
+(or (not x907) x908)
+(or (not x906) (not x472) x34)
+(or (not x472) (not x34) x906)
+(or (not x906) (not x471) x29)
+(or (not x471) (not x29) x906)
+(or (not x906) (not x469) x27)
+(or (not x469) (not x27) x906)
+(or (not x905) (not x468) x34)
+(or (not x468) (not x34) x905)
+(or (not x905) (not x466) x29)
+(or (not x466) (not x29) x905)
+(or (not x905) (not x465) x27)
+(or (not x465) (not x27) x905)
+(or (not x904) (not x463) x34)
+(or (not x463) (not x34) x904)
+(or (not x904) (not x462) x29)
+(or (not x462) (not x29) x904)
+(or (not x904) (not x460) x27)
+(or (not x460) (not x27) x904)
+(or (not x903) (not x459) x34)
+(or (not x459) (not x34) x903)
+(or (not x903) (not x457) x29)
+(or (not x457) (not x29) x903)
+(or (not x903) (not x456) x27)
+(or (not x456) (not x27) x903)
+(or (not x902) (not x454) x34)
+(or (not x454) (not x34) x902)
+(or (not x902) (not x453) x29)
+(or (not x453) (not x29) x902)
+(or (not x902) (not x451) x27)
+(or (not x451) (not x27) x902)
+(or (not x901) (not x450) x34)
+(or (not x450) (not x34) x901)
+(or (not x901) (not x448) x29)
+(or (not x448) (not x29) x901)
+(or (not x901) (not x447) x27)
+(or (not x447) (not x27) x901)
+(or (not x900) (not x445) x34)
+(or (not x445) (not x34) x900)
+(or (not x900) (not x444) x29)
+(or (not x444) (not x29) x900)
+(or (not x900) (not x442) x27)
+(or (not x442) (not x27) x900)
+(or (not x899) (not x441) x34)
+(or (not x441) (not x34) x899)
+(or (not x899) (not x439) x29)
+(or (not x439) (not x29) x899)
+(or (not x899) (not x438) x27)
+(or (not x438) (not x27) x899)
+(or (not x898) (not x436) x34)
+(or (not x436) (not x34) x898)
+(or (not x898) (not x435) x29)
+(or (not x435) (not x29) x898)
+(or (not x898) (not x433) x27)
+(or (not x433) (not x27) x898)
+(or (not x897) (not x432) x34)
+(or (not x432) (not x34) x897)
+(or (not x897) (not x430) x29)
+(or (not x430) (not x29) x897)
+(or (not x897) (not x429) x27)
+(or (not x429) (not x27) x897)
+(or (not x896) (not x427) x34)
+(or (not x427) (not x34) x896)
+(or (not x896) (not x426) x29)
+(or (not x426) (not x29) x896)
+(or (not x896) (not x424) x27)
+(or (not x424) (not x27) x896)
+(or (not x895) (not x423) x34)
+(or (not x423) (not x34) x895)
+(or (not x895) (not x421) x29)
+(or (not x421) (not x29) x895)
+(or (not x895) (not x420) x27)
+(or (not x420) (not x27) x895)
+(or (not x894) (not x418) x34)
+(or (not x418) (not x34) x894)
+(or (not x894) (not x416) x29)
+(or (not x416) (not x29) x894)
+(or (not x894) (not x413) x27)
+(or (not x413) (not x27) x894)
+(or (not x893) (not x411) x34)
+(or (not x411) (not x34) x893)
+(or (not x893) (not x408) x29)
+(or (not x408) (not x29) x893)
+(or (not x893) (not x406) x27)
+(or (not x406) (not x27) x893)
+(or (not x892) (not x403) x34)
+(or (not x403) (not x34) x892)
+(or (not x892) (not x401) x29)
+(or (not x401) (not x29) x892)
+(or (not x892) (not x398) x27)
+(or (not x398) (not x27) x892)
+(or (not x891) (not x395) x34)
+(or (not x395) (not x34) x891)
+(or (not x891) (not x392) x29)
+(or (not x392) (not x29) x891)
+(or (not x891) (not x389) x27)
+(or (not x389) (not x27) x891)
+(or (not x890) (not x417) x34)
+(or (not x417) (not x34) x890)
+(or (not x890) (not x415) x29)
+(or (not x415) (not x29) x890)
+(or (not x890) (not x412) x27)
+(or (not x412) (not x27) x890)
+(or (not x889) (not x410) x34)
+(or (not x410) (not x34) x889)
+(or (not x889) (not x407) x29)
+(or (not x407) (not x29) x889)
+(or (not x889) (not x405) x27)
+(or (not x405) (not x27) x889)
+(or (not x888) (not x402) x34)
+(or (not x402) (not x34) x888)
+(or (not x888) (not x400) x29)
+(or (not x400) (not x29) x888)
+(or (not x888) (not x397) x27)
+(or (not x397) (not x27) x888)
+(or (not x887) (not x394) x34)
+(or (not x394) (not x34) x887)
+(or (not x887) (not x391) x29)
+(or (not x391) (not x29) x887)
+(or (not x887) (not x388) x27)
+(or (not x388) (not x27) x887)
+(or (not x472) (not x883) (not x867) (not x51))
+(or (not x472) (not x880) (not x848) (not x45))
+(or x472 x471 x469)
+(or (not x472) x886)
+(or (not x472) x886)
+(or (not x468) (not x868) (not x867) (not x51))
+(or (not x468) (not x865) (not x848) (not x45))
+(or x468 x466 x465)
+(or (not x468) x886)
+(or (not x468) x871)
+(or (not x463) (not x867) (not x853) (not x51))
+(or (not x463) (not x850) (not x848) (not x45))
+(or x463 x462 x460)
+(or (not x463) x886)
+(or (not x463) x856)
+(or (not x459) (not x867) (not x833) (not x51))
+(or (not x459) (not x848) (not x826) (not x45))
+(or x459 x457 x456)
+(or (not x459) x886)
+(or (not x459) x840)
+(or (not x471) (not x886) (not x55))
+(or (not x471) (not x880) (not x848) (not x41))
+(or x472 x471 x469)
+(or (not x471) x867)
+(or (not x471) x883)
+(or (not x466) (not x886) (not x871) (not x55))
+(or (not x466) (not x865) (not x848) (not x41))
+(or x468 x466 x465)
+(or (not x466) x867)
+(or (not x466) x868)
+(or (not x462) (not x886) (not x856) (not x55))
+(or (not x462) (not x850) (not x848) (not x41))
+(or x463 x462 x460)
+(or (not x462) x867)
+(or (not x462) x853)
+(or (not x457) (not x886) (not x840) (not x55))
+(or (not x457) (not x848) (not x826) (not x41))
+(or x459 x457 x456)
+(or (not x457) x867)
+(or (not x457) x833)
+(or (not x469) (not x886) (not x53))
+(or (not x469) (not x883) (not x867) (not x47))
+(or x472 x471 x469)
+(or (not x469) x848)
+(or (not x469) x880)
+(or (not x465) (not x886) (not x871) (not x53))
+(or (not x465) (not x868) (not x867) (not x47))
+(or x468 x466 x465)
+(or (not x465) x848)
+(or (not x465) x865)
+(or (not x460) (not x886) (not x856) (not x53))
+(or (not x460) (not x867) (not x853) (not x47))
+(or x463 x462 x460)
+(or (not x460) x848)
+(or (not x460) x850)
+(or (not x456) (not x886) (not x840) (not x53))
+(or (not x456) (not x867) (not x833) (not x47))
+(or x459 x457 x456)
+(or (not x456) x848)
+(or (not x456) x826)
+(or x472 x471 x469)
+(or x468 x466 x465)
+(or x463 x462 x460)
+(or x459 x457 x456)
+(or (not x454) (not x808) (not x792) (not x51))
+(or (not x454) (not x805) (not x773) (not x45))
+(or x454 x453 x451)
+(or (not x454) x811)
+(or (not x454) x811)
+(or (not x450) (not x793) (not x792) (not x51))
+(or (not x450) (not x790) (not x773) (not x45))
+(or x450 x448 x447)
+(or (not x450) x811)
+(or (not x450) x796)
+(or (not x445) (not x792) (not x778) (not x51))
+(or (not x445) (not x775) (not x773) (not x45))
+(or x445 x444 x442)
+(or (not x445) x811)
+(or (not x445) x781)
+(or (not x441) (not x792) (not x758) (not x51))
+(or (not x441) (not x773) (not x751) (not x45))
+(or x441 x439 x438)
+(or (not x441) x811)
+(or (not x441) x765)
+(or (not x453) (not x811) (not x55))
+(or (not x453) (not x805) (not x773) (not x41))
+(or x454 x453 x451)
+(or (not x453) x792)
+(or (not x453) x808)
+(or (not x448) (not x811) (not x796) (not x55))
+(or (not x448) (not x790) (not x773) (not x41))
+(or x450 x448 x447)
+(or (not x448) x792)
+(or (not x448) x793)
+(or (not x444) (not x811) (not x781) (not x55))
+(or (not x444) (not x775) (not x773) (not x41))
+(or x445 x444 x442)
+(or (not x444) x792)
+(or (not x444) x778)
+(or (not x439) (not x811) (not x765) (not x55))
+(or (not x439) (not x773) (not x751) (not x41))
+(or x441 x439 x438)
+(or (not x439) x792)
+(or (not x439) x758)
+(or (not x451) (not x811) (not x53))
+(or (not x451) (not x808) (not x792) (not x47))
+(or x454 x453 x451)
+(or (not x451) x773)
+(or (not x451) x805)
+(or (not x447) (not x811) (not x796) (not x53))
+(or (not x447) (not x793) (not x792) (not x47))
+(or x450 x448 x447)
+(or (not x447) x773)
+(or (not x447) x790)
+(or (not x442) (not x811) (not x781) (not x53))
+(or (not x442) (not x792) (not x778) (not x47))
+(or x445 x444 x442)
+(or (not x442) x773)
+(or (not x442) x775)
+(or (not x438) (not x811) (not x765) (not x53))
+(or (not x438) (not x792) (not x758) (not x47))
+(or x441 x439 x438)
+(or (not x438) x773)
+(or (not x438) x751)
+(or x454 x453 x451)
+(or x450 x448 x447)
+(or x445 x444 x442)
+(or x441 x439 x438)
+(or (not x436) (not x733) (not x717) (not x51))
+(or (not x436) (not x730) (not x698) (not x45))
+(or x436 x435 x433)
+(or (not x436) x736)
+(or (not x436) x736)
+(or (not x432) (not x718) (not x717) (not x51))
+(or (not x432) (not x715) (not x698) (not x45))
+(or x432 x430 x429)
+(or (not x432) x736)
+(or (not x432) x721)
+(or (not x427) (not x717) (not x703) (not x51))
+(or (not x427) (not x700) (not x698) (not x45))
+(or x427 x426 x424)
+(or (not x427) x736)
+(or (not x427) x706)
+(or (not x423) (not x717) (not x683) (not x51))
+(or (not x423) (not x698) (not x676) (not x45))
+(or x423 x421 x420)
+(or (not x423) x736)
+(or (not x423) x690)
+(or (not x435) (not x736) (not x55))
+(or (not x435) (not x730) (not x698) (not x41))
+(or x436 x435 x433)
+(or (not x435) x717)
+(or (not x435) x733)
+(or (not x430) (not x736) (not x721) (not x55))
+(or (not x430) (not x715) (not x698) (not x41))
+(or x432 x430 x429)
+(or (not x430) x717)
+(or (not x430) x718)
+(or (not x426) (not x736) (not x706) (not x55))
+(or (not x426) (not x700) (not x698) (not x41))
+(or x427 x426 x424)
+(or (not x426) x717)
+(or (not x426) x703)
+(or (not x421) (not x736) (not x690) (not x55))
+(or (not x421) (not x698) (not x676) (not x41))
+(or x423 x421 x420)
+(or (not x421) x717)
+(or (not x421) x683)
+(or (not x433) (not x736) (not x53))
+(or (not x433) (not x733) (not x717) (not x47))
+(or x436 x435 x433)
+(or (not x433) x698)
+(or (not x433) x730)
+(or (not x429) (not x736) (not x721) (not x53))
+(or (not x429) (not x718) (not x717) (not x47))
+(or x432 x430 x429)
+(or (not x429) x698)
+(or (not x429) x715)
+(or (not x424) (not x736) (not x706) (not x53))
+(or (not x424) (not x717) (not x703) (not x47))
+(or x427 x426 x424)
+(or (not x424) x698)
+(or (not x424) x700)
+(or (not x420) (not x736) (not x690) (not x53))
+(or (not x420) (not x717) (not x683) (not x47))
+(or x423 x421 x420)
+(or (not x420) x698)
+(or (not x420) x676)
+(or x436 x435 x433)
+(or x432 x430 x429)
+(or x427 x426 x424)
+(or x423 x421 x420)
+(or (not x418) (not x658) (not x642) (not x51))
+(or (not x418) (not x655) (not x623) (not x45))
+(or x418 x416 x413)
+(or (not x418) x661)
+(or (not x418) x661)
+(or (not x411) (not x643) (not x642) (not x51))
+(or (not x411) (not x640) (not x623) (not x45))
+(or x411 x408 x406)
+(or (not x411) x661)
+(or (not x411) x646)
+(or (not x403) (not x642) (not x628) (not x51))
+(or (not x403) (not x625) (not x623) (not x45))
+(or x403 x401 x398)
+(or (not x403) x661)
+(or (not x403) x631)
+(or (not x395) (not x642) (not x608) (not x51))
+(or (not x395) (not x623) (not x601) (not x45))
+(or x395 x392 x389)
+(or (not x395) x661)
+(or (not x395) x615)
+(or (not x416) (not x661) (not x55))
+(or (not x416) (not x655) (not x623) (not x41))
+(or x418 x416 x413)
+(or (not x416) x642)
+(or (not x416) x658)
+(or (not x408) (not x661) (not x646) (not x55))
+(or (not x408) (not x640) (not x623) (not x41))
+(or x411 x408 x406)
+(or (not x408) x642)
+(or (not x408) x643)
+(or (not x401) (not x661) (not x631) (not x55))
+(or (not x401) (not x625) (not x623) (not x41))
+(or x403 x401 x398)
+(or (not x401) x642)
+(or (not x401) x628)
+(or (not x392) (not x661) (not x615) (not x55))
+(or (not x392) (not x623) (not x601) (not x41))
+(or x395 x392 x389)
+(or (not x392) x642)
+(or (not x392) x608)
+(or (not x413) (not x661) (not x53))
+(or (not x413) (not x658) (not x642) (not x47))
+(or x418 x416 x413)
+(or (not x413) x623)
+(or (not x413) x655)
+(or (not x406) (not x661) (not x646) (not x53))
+(or (not x406) (not x643) (not x642) (not x47))
+(or x411 x408 x406)
+(or (not x406) x623)
+(or (not x406) x640)
+(or (not x398) (not x661) (not x631) (not x53))
+(or (not x398) (not x642) (not x628) (not x47))
+(or x403 x401 x398)
+(or (not x398) x623)
+(or (not x398) x625)
+(or (not x389) (not x661) (not x615) (not x53))
+(or (not x389) (not x642) (not x608) (not x47))
+(or x395 x392 x389)
+(or (not x389) x623)
+(or (not x389) x601)
+(or x418 x416 x413)
+(or x411 x408 x406)
+(or x403 x401 x398)
+(or x395 x392 x389)
+(or (not x417) (not x583) (not x567) (not x51))
+(or (not x417) (not x580) (not x548) (not x45))
+(or x417 x415 x412)
+(or (not x417) x586)
+(or (not x417) x586)
+(or (not x410) (not x568) (not x567) (not x51))
+(or (not x410) (not x565) (not x548) (not x45))
+(or x410 x407 x405)
+(or (not x410) x586)
+(or (not x410) x571)
+(or (not x402) (not x567) (not x553) (not x51))
+(or (not x402) (not x550) (not x548) (not x45))
+(or x402 x400 x397)
+(or (not x402) x586)
+(or (not x402) x556)
+(or (not x394) (not x567) (not x533) (not x51))
+(or (not x394) (not x548) (not x526) (not x45))
+(or x394 x391 x388)
+(or (not x394) x586)
+(or (not x394) x540)
+(or (not x415) (not x586) (not x55))
+(or (not x415) (not x580) (not x548) (not x41))
+(or x417 x415 x412)
+(or (not x415) x567)
+(or (not x415) x583)
+(or (not x407) (not x586) (not x571) (not x55))
+(or (not x407) (not x565) (not x548) (not x41))
+(or x410 x407 x405)
+(or (not x407) x567)
+(or (not x407) x568)
+(or (not x400) (not x586) (not x556) (not x55))
+(or (not x400) (not x550) (not x548) (not x41))
+(or x402 x400 x397)
+(or (not x400) x567)
+(or (not x400) x553)
+(or (not x391) (not x586) (not x540) (not x55))
+(or (not x391) (not x548) (not x526) (not x41))
+(or x394 x391 x388)
+(or (not x391) x567)
+(or (not x391) x533)
+(or (not x412) (not x586) (not x53))
+(or (not x412) (not x583) (not x567) (not x47))
+(or x417 x415 x412)
+(or (not x412) x548)
+(or (not x412) x580)
+(or (not x405) (not x586) (not x571) (not x53))
+(or (not x405) (not x568) (not x567) (not x47))
+(or x410 x407 x405)
+(or (not x405) x548)
+(or (not x405) x565)
+(or (not x397) (not x586) (not x556) (not x53))
+(or (not x397) (not x567) (not x553) (not x47))
+(or x402 x400 x397)
+(or (not x397) x548)
+(or (not x397) x550)
+(or (not x388) (not x586) (not x540) (not x53))
+(or (not x388) (not x567) (not x533) (not x47))
+(or x394 x391 x388)
+(or (not x388) x548)
+(or (not x388) x526)
+(or x417 x415 x412)
+(or x410 x407 x405)
+(or x402 x400 x397)
+(or x394 x391 x388)
+(or (not x841) x886)
+(or (not x841) x886)
+(or (not x886) x841)
+(or (not x886) x841)
+(or (not x876) (not x839) x841)
+(or (not x885) x841)
+(or (not x841) x885 x839)
+(or (not x841) x885 x876)
+(or (not x875) (not x838) x885)
+(or (not x884) x885)
+(or (not x885) x884 x838)
+(or (not x885) x884 x875)
+(or (not x872) (not x835) x884)
+(or (not x884) x835)
+(or (not x884) x872)
+(or (not x841) (not x834) x883)
+(or (not x834) x883)
+(or (not x883) x834)
+(or (not x883) x841 x834)
+(or (not x876) (not x832) x834)
+(or (not x876) x834)
+(or (not x834) x876 x832)
+(or (not x834) x876)
+(or (not x875) (not x830) x876)
+(or (not x882) x876)
+(or (not x876) x882 x830)
+(or (not x876) x882 x875)
+(or (not x872) (not x828) x882)
+(or (not x881) x882)
+(or (not x882) x881 x828)
+(or (not x882) x881 x872)
+(or (not x511) x881)
+(or (not x881) x511)
+(or (not x841) (not x827) x880)
+(or (not x827) x880)
+(or (not x880) x827)
+(or (not x880) x841 x827)
+(or (not x876) (not x825) x827)
+(or (not x879) x827)
+(or (not x827) x879 x825)
+(or (not x827) x879 x876)
+(or (not x875) (not x823) x879)
+(or (not x875) x879)
+(or (not x879) x875 x823)
+(or (not x879) x875)
+(or (not x872) (not x821) x875)
+(or (not x878) x875)
+(or (not x875) x878 x821)
+(or (not x875) x878 x872)
+(or (not x510) x878)
+(or (not x878) x510)
+(or (not x841) (not x820) x877)
+(or (not x820) x877)
+(or (not x877) x820)
+(or (not x877) x841 x820)
+(or (not x876) (not x817) x820)
+(or (not x874) x820)
+(or (not x820) x874 x817)
+(or (not x820) x876 x874)
+(or (not x875) (not x814) x874)
+(or (not x873) x874)
+(or (not x874) x873 x814)
+(or (not x874) x875 x873)
+(or (not x872) x873)
+(or (not x873) x872)
+(or (not x873) x872)
+(or (not x509) x872)
+(or (not x872) x509)
+(or (not x862) (not x841) x871)
+(or (not x862) x871)
+(or (not x871) x862 x841)
+(or (not x871) x862)
+(or (not x839) (not x832) x862)
+(or (not x839) x862)
+(or (not x862) x839)
+(or (not x862) x839 x832)
+(or (not x859) (not x838) x839)
+(or (not x870) x839)
+(or (not x839) x870 x838)
+(or (not x839) x870 x859)
+(or (not x857) (not x835) x870)
+(or (not x869) x870)
+(or (not x870) x869 x835)
+(or (not x870) x869 x857)
+(or (not x508) x869)
+(or (not x869) x508)
+(or (not x862) (not x834) x868)
+(or (not x867) x868)
+(or (not x868) x867 x834)
+(or (not x868) x867 x862)
+(or (not x832) x867)
+(or (not x832) x867)
+(or (not x867) x832)
+(or (not x867) x832)
+(or (not x859) (not x830) x832)
+(or (not x866) x832)
+(or (not x832) x866 x830)
+(or (not x832) x866 x859)
+(or (not x857) (not x828) x866)
+(or (not x866) x828)
+(or (not x866) x857)
+(or (not x862) (not x827) x865)
+(or (not x864) x865)
+(or (not x865) x864 x827)
+(or (not x865) x864 x862)
+(or (not x832) (not x825) x864)
+(or (not x825) x864)
+(or (not x864) x825)
+(or (not x864) x832 x825)
+(or (not x859) (not x823) x825)
+(or (not x859) x825)
+(or (not x825) x859 x823)
+(or (not x825) x859)
+(or (not x857) (not x821) x859)
+(or (not x863) x859)
+(or (not x859) x863 x821)
+(or (not x859) x863 x857)
+(or (not x507) x863)
+(or (not x863) x507)
+(or (not x862) (not x820) x861)
+(or (not x860) x861)
+(or (not x861) x860 x820)
+(or (not x861) x862 x860)
+(or (not x832) (not x817) x860)
+(or (not x817) x860)
+(or (not x860) x817)
+(or (not x860) x832 x817)
+(or (not x859) (not x814) x817)
+(or (not x858) x817)
+(or (not x817) x858 x814)
+(or (not x817) x859 x858)
+(or (not x857) x858)
+(or (not x858) x857)
+(or (not x858) x857)
+(or (not x506) x857)
+(or (not x857) x506)
+(or (not x847) (not x841) x856)
+(or (not x847) x856)
+(or (not x856) x847 x841)
+(or (not x856) x847)
+(or (not x845) (not x839) x847)
+(or (not x855) x847)
+(or (not x847) x855 x839)
+(or (not x847) x855 x845)
+(or (not x838) (not x823) x855)
+(or (not x838) x855)
+(or (not x855) x838)
+(or (not x855) x838 x823)
+(or (not x842) (not x835) x838)
+(or (not x854) x838)
+(or (not x838) x854 x835)
+(or (not x838) x854 x842)
+(or (not x505) x854)
+(or (not x854) x505)
+(or (not x847) (not x834) x853)
+(or (not x852) x853)
+(or (not x853) x852 x834)
+(or (not x853) x852 x847)
+(or (not x845) (not x832) x852)
+(or (not x845) x852)
+(or (not x852) x845 x832)
+(or (not x852) x845)
+(or (not x830) (not x823) x845)
+(or (not x830) x845)
+(or (not x845) x830)
+(or (not x845) x830 x823)
+(or (not x842) (not x828) x830)
+(or (not x851) x830)
+(or (not x830) x851 x828)
+(or (not x830) x851 x842)
+(or (not x504) x851)
+(or (not x851) x504)
+(or (not x847) (not x827) x850)
+(or (not x849) x850)
+(or (not x850) x849 x827)
+(or (not x850) x849 x847)
+(or (not x845) (not x825) x849)
+(or (not x848) x849)
+(or (not x849) x848 x825)
+(or (not x849) x848 x845)
+(or (not x823) x848)
+(or (not x823) x848)
+(or (not x848) x823)
+(or (not x848) x823)
+(or (not x842) (not x821) x823)
+(or (not x823) x821)
+(or (not x823) x842)
+(or (not x847) (not x820) x846)
+(or (not x844) x846)
+(or (not x846) x844 x820)
+(or (not x846) x847 x844)
+(or (not x845) (not x817) x844)
+(or (not x843) x844)
+(or (not x844) x843 x817)
+(or (not x844) x845 x843)
+(or (not x823) (not x814) x843)
+(or (not x814) x843)
+(or (not x843) x814)
+(or (not x843) x823 x814)
+(or (not x842) x814)
+(or (not x814) x842)
+(or (not x814) x842)
+(or (not x503) x842)
+(or (not x842) x503)
+(or (not x841) (not x819) x840)
+(or (not x819) x840)
+(or (not x840) x841 x819)
+(or (not x840) x819)
+(or (not x839) (not x816) x819)
+(or (not x837) x819)
+(or (not x819) x839 x837)
+(or (not x819) x837 x816)
+(or (not x838) (not x813) x837)
+(or (not x836) x837)
+(or (not x837) x838 x836)
+(or (not x837) x836 x813)
+(or (not x835) x836)
+(or (not x836) x835)
+(or (not x836) x835)
+(or (not x502) x835)
+(or (not x835) x502)
+(or (not x834) (not x819) x833)
+(or (not x831) x833)
+(or (not x833) x834 x831)
+(or (not x833) x831 x819)
+(or (not x832) (not x816) x831)
+(or (not x816) x831)
+(or (not x831) x832 x816)
+(or (not x831) x816)
+(or (not x830) (not x813) x816)
+(or (not x829) x816)
+(or (not x816) x830 x829)
+(or (not x816) x829 x813)
+(or (not x828) x829)
+(or (not x829) x828)
+(or (not x829) x828)
+(or (not x501) x828)
+(or (not x828) x501)
+(or (not x827) (not x819) x826)
+(or (not x824) x826)
+(or (not x826) x827 x824)
+(or (not x826) x824 x819)
+(or (not x825) (not x816) x824)
+(or (not x822) x824)
+(or (not x824) x825 x822)
+(or (not x824) x822 x816)
+(or (not x823) (not x813) x822)
+(or (not x813) x822)
+(or (not x822) x823 x813)
+(or (not x822) x813)
+(or (not x821) x813)
+(or (not x813) x821)
+(or (not x813) x821)
+(or (not x500) x821)
+(or (not x821) x500)
+(or (not x820) (not x819) x818)
+(or (not x815) x818)
+(or (not x818) x820 x815)
+(or (not x818) x819 x815)
+(or (not x817) (not x816) x815)
+(or (not x812) x815)
+(or (not x815) x817 x812)
+(or (not x815) x816 x812)
+(or (not x814) (not x813) x812)
+(or (not x812) x814)
+(or (not x812) x813)
+(or (not x766) x811)
+(or (not x766) x811)
+(or (not x811) x766)
+(or (not x811) x766)
+(or (not x801) (not x764) x766)
+(or (not x810) x766)
+(or (not x766) x810 x764)
+(or (not x766) x810 x801)
+(or (not x800) (not x763) x810)
+(or (not x809) x810)
+(or (not x810) x809 x763)
+(or (not x810) x809 x800)
+(or (not x797) (not x760) x809)
+(or (not x809) x760)
+(or (not x809) x797)
+(or (not x766) (not x759) x808)
+(or (not x759) x808)
+(or (not x808) x759)
+(or (not x808) x766 x759)
+(or (not x801) (not x757) x759)
+(or (not x801) x759)
+(or (not x759) x801 x757)
+(or (not x759) x801)
+(or (not x800) (not x755) x801)
+(or (not x807) x801)
+(or (not x801) x807 x755)
+(or (not x801) x807 x800)
+(or (not x797) (not x753) x807)
+(or (not x806) x807)
+(or (not x807) x806 x753)
+(or (not x807) x806 x797)
+(or (not x499) x806)
+(or (not x806) x499)
+(or (not x766) (not x752) x805)
+(or (not x752) x805)
+(or (not x805) x752)
+(or (not x805) x766 x752)
+(or (not x801) (not x750) x752)
+(or (not x804) x752)
+(or (not x752) x804 x750)
+(or (not x752) x804 x801)
+(or (not x800) (not x748) x804)
+(or (not x800) x804)
+(or (not x804) x800 x748)
+(or (not x804) x800)
+(or (not x797) (not x746) x800)
+(or (not x803) x800)
+(or (not x800) x803 x746)
+(or (not x800) x803 x797)
+(or (not x498) x803)
+(or (not x803) x498)
+(or (not x766) (not x745) x802)
+(or (not x745) x802)
+(or (not x802) x745)
+(or (not x802) x766 x745)
+(or (not x801) (not x742) x745)
+(or (not x799) x745)
+(or (not x745) x799 x742)
+(or (not x745) x801 x799)
+(or (not x800) (not x739) x799)
+(or (not x798) x799)
+(or (not x799) x798 x739)
+(or (not x799) x800 x798)
+(or (not x797) x798)
+(or (not x798) x797)
+(or (not x798) x797)
+(or (not x497) x797)
+(or (not x797) x497)
+(or (not x787) (not x766) x796)
+(or (not x787) x796)
+(or (not x796) x787 x766)
+(or (not x796) x787)
+(or (not x764) (not x757) x787)
+(or (not x764) x787)
+(or (not x787) x764)
+(or (not x787) x764 x757)
+(or (not x784) (not x763) x764)
+(or (not x795) x764)
+(or (not x764) x795 x763)
+(or (not x764) x795 x784)
+(or (not x782) (not x760) x795)
+(or (not x794) x795)
+(or (not x795) x794 x760)
+(or (not x795) x794 x782)
+(or (not x496) x794)
+(or (not x794) x496)
+(or (not x787) (not x759) x793)
+(or (not x792) x793)
+(or (not x793) x792 x759)
+(or (not x793) x792 x787)
+(or (not x757) x792)
+(or (not x757) x792)
+(or (not x792) x757)
+(or (not x792) x757)
+(or (not x784) (not x755) x757)
+(or (not x791) x757)
+(or (not x757) x791 x755)
+(or (not x757) x791 x784)
+(or (not x782) (not x753) x791)
+(or (not x791) x753)
+(or (not x791) x782)
+(or (not x787) (not x752) x790)
+(or (not x789) x790)
+(or (not x790) x789 x752)
+(or (not x790) x789 x787)
+(or (not x757) (not x750) x789)
+(or (not x750) x789)
+(or (not x789) x750)
+(or (not x789) x757 x750)
+(or (not x784) (not x748) x750)
+(or (not x784) x750)
+(or (not x750) x784 x748)
+(or (not x750) x784)
+(or (not x782) (not x746) x784)
+(or (not x788) x784)
+(or (not x784) x788 x746)
+(or (not x784) x788 x782)
+(or (not x495) x788)
+(or (not x788) x495)
+(or (not x787) (not x745) x786)
+(or (not x785) x786)
+(or (not x786) x785 x745)
+(or (not x786) x787 x785)
+(or (not x757) (not x742) x785)
+(or (not x742) x785)
+(or (not x785) x742)
+(or (not x785) x757 x742)
+(or (not x784) (not x739) x742)
+(or (not x783) x742)
+(or (not x742) x783 x739)
+(or (not x742) x784 x783)
+(or (not x782) x783)
+(or (not x783) x782)
+(or (not x783) x782)
+(or (not x494) x782)
+(or (not x782) x494)
+(or (not x772) (not x766) x781)
+(or (not x772) x781)
+(or (not x781) x772 x766)
+(or (not x781) x772)
+(or (not x770) (not x764) x772)
+(or (not x780) x772)
+(or (not x772) x780 x764)
+(or (not x772) x780 x770)
+(or (not x763) (not x748) x780)
+(or (not x763) x780)
+(or (not x780) x763)
+(or (not x780) x763 x748)
+(or (not x767) (not x760) x763)
+(or (not x779) x763)
+(or (not x763) x779 x760)
+(or (not x763) x779 x767)
+(or (not x493) x779)
+(or (not x779) x493)
+(or (not x772) (not x759) x778)
+(or (not x777) x778)
+(or (not x778) x777 x759)
+(or (not x778) x777 x772)
+(or (not x770) (not x757) x777)
+(or (not x770) x777)
+(or (not x777) x770 x757)
+(or (not x777) x770)
+(or (not x755) (not x748) x770)
+(or (not x755) x770)
+(or (not x770) x755)
+(or (not x770) x755 x748)
+(or (not x767) (not x753) x755)
+(or (not x776) x755)
+(or (not x755) x776 x753)
+(or (not x755) x776 x767)
+(or (not x492) x776)
+(or (not x776) x492)
+(or (not x772) (not x752) x775)
+(or (not x774) x775)
+(or (not x775) x774 x752)
+(or (not x775) x774 x772)
+(or (not x770) (not x750) x774)
+(or (not x773) x774)
+(or (not x774) x773 x750)
+(or (not x774) x773 x770)
+(or (not x748) x773)
+(or (not x748) x773)
+(or (not x773) x748)
+(or (not x773) x748)
+(or (not x767) (not x746) x748)
+(or (not x748) x746)
+(or (not x748) x767)
+(or (not x772) (not x745) x771)
+(or (not x769) x771)
+(or (not x771) x769 x745)
+(or (not x771) x772 x769)
+(or (not x770) (not x742) x769)
+(or (not x768) x769)
+(or (not x769) x768 x742)
+(or (not x769) x770 x768)
+(or (not x748) (not x739) x768)
+(or (not x739) x768)
+(or (not x768) x739)
+(or (not x768) x748 x739)
+(or (not x767) x739)
+(or (not x739) x767)
+(or (not x739) x767)
+(or (not x491) x767)
+(or (not x767) x491)
+(or (not x766) (not x744) x765)
+(or (not x744) x765)
+(or (not x765) x766 x744)
+(or (not x765) x744)
+(or (not x764) (not x741) x744)
+(or (not x762) x744)
+(or (not x744) x764 x762)
+(or (not x744) x762 x741)
+(or (not x763) (not x738) x762)
+(or (not x761) x762)
+(or (not x762) x763 x761)
+(or (not x762) x761 x738)
+(or (not x760) x761)
+(or (not x761) x760)
+(or (not x761) x760)
+(or (not x490) x760)
+(or (not x760) x490)
+(or (not x759) (not x744) x758)
+(or (not x756) x758)
+(or (not x758) x759 x756)
+(or (not x758) x756 x744)
+(or (not x757) (not x741) x756)
+(or (not x741) x756)
+(or (not x756) x757 x741)
+(or (not x756) x741)
+(or (not x755) (not x738) x741)
+(or (not x754) x741)
+(or (not x741) x755 x754)
+(or (not x741) x754 x738)
+(or (not x753) x754)
+(or (not x754) x753)
+(or (not x754) x753)
+(or (not x489) x753)
+(or (not x753) x489)
+(or (not x752) (not x744) x751)
+(or (not x749) x751)
+(or (not x751) x752 x749)
+(or (not x751) x749 x744)
+(or (not x750) (not x741) x749)
+(or (not x747) x749)
+(or (not x749) x750 x747)
+(or (not x749) x747 x741)
+(or (not x748) (not x738) x747)
+(or (not x738) x747)
+(or (not x747) x748 x738)
+(or (not x747) x738)
+(or (not x746) x738)
+(or (not x738) x746)
+(or (not x738) x746)
+(or (not x488) x746)
+(or (not x746) x488)
+(or (not x745) (not x744) x743)
+(or (not x740) x743)
+(or (not x743) x745 x740)
+(or (not x743) x744 x740)
+(or (not x742) (not x741) x740)
+(or (not x737) x740)
+(or (not x740) x742 x737)
+(or (not x740) x741 x737)
+(or (not x739) (not x738) x737)
+(or (not x737) x739)
+(or (not x737) x738)
+(or (not x691) x736)
+(or (not x691) x736)
+(or (not x736) x691)
+(or (not x736) x691)
+(or (not x726) (not x689) x691)
+(or (not x735) x691)
+(or (not x691) x735 x689)
+(or (not x691) x735 x726)
+(or (not x725) (not x688) x735)
+(or (not x734) x735)
+(or (not x735) x734 x688)
+(or (not x735) x734 x725)
+(or (not x722) (not x685) x734)
+(or (not x734) x685)
+(or (not x734) x722)
+(or (not x691) (not x684) x733)
+(or (not x684) x733)
+(or (not x733) x684)
+(or (not x733) x691 x684)
+(or (not x726) (not x682) x684)
+(or (not x726) x684)
+(or (not x684) x726 x682)
+(or (not x684) x726)
+(or (not x725) (not x680) x726)
+(or (not x732) x726)
+(or (not x726) x732 x680)
+(or (not x726) x732 x725)
+(or (not x722) (not x678) x732)
+(or (not x731) x732)
+(or (not x732) x731 x678)
+(or (not x732) x731 x722)
+(or (not x487) x731)
+(or (not x731) x487)
+(or (not x691) (not x677) x730)
+(or (not x677) x730)
+(or (not x730) x677)
+(or (not x730) x691 x677)
+(or (not x726) (not x675) x677)
+(or (not x729) x677)
+(or (not x677) x729 x675)
+(or (not x677) x729 x726)
+(or (not x725) (not x673) x729)
+(or (not x725) x729)
+(or (not x729) x725 x673)
+(or (not x729) x725)
+(or (not x722) (not x671) x725)
+(or (not x728) x725)
+(or (not x725) x728 x671)
+(or (not x725) x728 x722)
+(or (not x486) x728)
+(or (not x728) x486)
+(or (not x691) (not x670) x727)
+(or (not x670) x727)
+(or (not x727) x670)
+(or (not x727) x691 x670)
+(or (not x726) (not x667) x670)
+(or (not x724) x670)
+(or (not x670) x724 x667)
+(or (not x670) x726 x724)
+(or (not x725) (not x664) x724)
+(or (not x723) x724)
+(or (not x724) x723 x664)
+(or (not x724) x725 x723)
+(or (not x722) x723)
+(or (not x723) x722)
+(or (not x723) x722)
+(or (not x485) x722)
+(or (not x722) x485)
+(or (not x712) (not x691) x721)
+(or (not x712) x721)
+(or (not x721) x712 x691)
+(or (not x721) x712)
+(or (not x689) (not x682) x712)
+(or (not x689) x712)
+(or (not x712) x689)
+(or (not x712) x689 x682)
+(or (not x709) (not x688) x689)
+(or (not x720) x689)
+(or (not x689) x720 x688)
+(or (not x689) x720 x709)
+(or (not x707) (not x685) x720)
+(or (not x719) x720)
+(or (not x720) x719 x685)
+(or (not x720) x719 x707)
+(or (not x484) x719)
+(or (not x719) x484)
+(or (not x712) (not x684) x718)
+(or (not x717) x718)
+(or (not x718) x717 x684)
+(or (not x718) x717 x712)
+(or (not x682) x717)
+(or (not x682) x717)
+(or (not x717) x682)
+(or (not x717) x682)
+(or (not x709) (not x680) x682)
+(or (not x716) x682)
+(or (not x682) x716 x680)
+(or (not x682) x716 x709)
+(or (not x707) (not x678) x716)
+(or (not x716) x678)
+(or (not x716) x707)
+(or (not x712) (not x677) x715)
+(or (not x714) x715)
+(or (not x715) x714 x677)
+(or (not x715) x714 x712)
+(or (not x682) (not x675) x714)
+(or (not x675) x714)
+(or (not x714) x675)
+(or (not x714) x682 x675)
+(or (not x709) (not x673) x675)
+(or (not x709) x675)
+(or (not x675) x709 x673)
+(or (not x675) x709)
+(or (not x707) (not x671) x709)
+(or (not x713) x709)
+(or (not x709) x713 x671)
+(or (not x709) x713 x707)
+(or (not x483) x713)
+(or (not x713) x483)
+(or (not x712) (not x670) x711)
+(or (not x710) x711)
+(or (not x711) x710 x670)
+(or (not x711) x712 x710)
+(or (not x682) (not x667) x710)
+(or (not x667) x710)
+(or (not x710) x667)
+(or (not x710) x682 x667)
+(or (not x709) (not x664) x667)
+(or (not x708) x667)
+(or (not x667) x708 x664)
+(or (not x667) x709 x708)
+(or (not x707) x708)
+(or (not x708) x707)
+(or (not x708) x707)
+(or (not x482) x707)
+(or (not x707) x482)
+(or (not x697) (not x691) x706)
+(or (not x697) x706)
+(or (not x706) x697 x691)
+(or (not x706) x697)
+(or (not x695) (not x689) x697)
+(or (not x705) x697)
+(or (not x697) x705 x689)
+(or (not x697) x705 x695)
+(or (not x688) (not x673) x705)
+(or (not x688) x705)
+(or (not x705) x688)
+(or (not x705) x688 x673)
+(or (not x692) (not x685) x688)
+(or (not x704) x688)
+(or (not x688) x704 x685)
+(or (not x688) x704 x692)
+(or (not x481) x704)
+(or (not x704) x481)
+(or (not x697) (not x684) x703)
+(or (not x702) x703)
+(or (not x703) x702 x684)
+(or (not x703) x702 x697)
+(or (not x695) (not x682) x702)
+(or (not x695) x702)
+(or (not x702) x695 x682)
+(or (not x702) x695)
+(or (not x680) (not x673) x695)
+(or (not x680) x695)
+(or (not x695) x680)
+(or (not x695) x680 x673)
+(or (not x692) (not x678) x680)
+(or (not x701) x680)
+(or (not x680) x701 x678)
+(or (not x680) x701 x692)
+(or (not x480) x701)
+(or (not x701) x480)
+(or (not x697) (not x677) x700)
+(or (not x699) x700)
+(or (not x700) x699 x677)
+(or (not x700) x699 x697)
+(or (not x695) (not x675) x699)
+(or (not x698) x699)
+(or (not x699) x698 x675)
+(or (not x699) x698 x695)
+(or (not x673) x698)
+(or (not x673) x698)
+(or (not x698) x673)
+(or (not x698) x673)
+(or (not x692) (not x671) x673)
+(or (not x673) x671)
+(or (not x673) x692)
+(or (not x697) (not x670) x696)
+(or (not x694) x696)
+(or (not x696) x694 x670)
+(or (not x696) x697 x694)
+(or (not x695) (not x667) x694)
+(or (not x693) x694)
+(or (not x694) x693 x667)
+(or (not x694) x695 x693)
+(or (not x673) (not x664) x693)
+(or (not x664) x693)
+(or (not x693) x664)
+(or (not x693) x673 x664)
+(or (not x692) x664)
+(or (not x664) x692)
+(or (not x664) x692)
+(or (not x479) x692)
+(or (not x692) x479)
+(or (not x691) (not x669) x690)
+(or (not x669) x690)
+(or (not x690) x691 x669)
+(or (not x690) x669)
+(or (not x689) (not x666) x669)
+(or (not x687) x669)
+(or (not x669) x689 x687)
+(or (not x669) x687 x666)
+(or (not x688) (not x663) x687)
+(or (not x686) x687)
+(or (not x687) x688 x686)
+(or (not x687) x686 x663)
+(or (not x685) x686)
+(or (not x686) x685)
+(or (not x686) x685)
+(or (not x478) x685)
+(or (not x685) x478)
+(or (not x684) (not x669) x683)
+(or (not x681) x683)
+(or (not x683) x684 x681)
+(or (not x683) x681 x669)
+(or (not x682) (not x666) x681)
+(or (not x666) x681)
+(or (not x681) x682 x666)
+(or (not x681) x666)
+(or (not x680) (not x663) x666)
+(or (not x679) x666)
+(or (not x666) x680 x679)
+(or (not x666) x679 x663)
+(or (not x678) x679)
+(or (not x679) x678)
+(or (not x679) x678)
+(or (not x477) x678)
+(or (not x678) x477)
+(or (not x677) (not x669) x676)
+(or (not x674) x676)
+(or (not x676) x677 x674)
+(or (not x676) x674 x669)
+(or (not x675) (not x666) x674)
+(or (not x672) x674)
+(or (not x674) x675 x672)
+(or (not x674) x672 x666)
+(or (not x673) (not x663) x672)
+(or (not x663) x672)
+(or (not x672) x673 x663)
+(or (not x672) x663)
+(or (not x671) x663)
+(or (not x663) x671)
+(or (not x663) x671)
+(or (not x476) x671)
+(or (not x671) x476)
+(or (not x670) (not x669) x668)
+(or (not x665) x668)
+(or (not x668) x670 x665)
+(or (not x668) x669 x665)
+(or (not x667) (not x666) x665)
+(or (not x662) x665)
+(or (not x665) x667 x662)
+(or (not x665) x666 x662)
+(or (not x664) (not x663) x662)
+(or (not x662) x664)
+(or (not x662) x663)
+(or (not x616) x661)
+(or (not x616) x661)
+(or (not x661) x616)
+(or (not x661) x616)
+(or (not x651) (not x614) x616)
+(or (not x660) x616)
+(or (not x616) x660 x614)
+(or (not x616) x660 x651)
+(or (not x650) (not x613) x660)
+(or (not x659) x660)
+(or (not x660) x659 x613)
+(or (not x660) x659 x650)
+(or (not x647) (not x610) x659)
+(or (not x659) x610)
+(or (not x659) x647)
+(or (not x616) (not x609) x658)
+(or (not x609) x658)
+(or (not x658) x609)
+(or (not x658) x616 x609)
+(or (not x651) (not x607) x609)
+(or (not x651) x609)
+(or (not x609) x651 x607)
+(or (not x609) x651)
+(or (not x650) (not x605) x651)
+(or (not x657) x651)
+(or (not x651) x657 x605)
+(or (not x651) x657 x650)
+(or (not x647) (not x603) x657)
+(or (not x656) x657)
+(or (not x657) x656 x603)
+(or (not x657) x656 x647)
+(or (not x475) x656)
+(or (not x656) x475)
+(or (not x616) (not x602) x655)
+(or (not x602) x655)
+(or (not x655) x602)
+(or (not x655) x616 x602)
+(or (not x651) (not x600) x602)
+(or (not x654) x602)
+(or (not x602) x654 x600)
+(or (not x602) x654 x651)
+(or (not x650) (not x598) x654)
+(or (not x650) x654)
+(or (not x654) x650 x598)
+(or (not x654) x650)
+(or (not x647) (not x596) x650)
+(or (not x653) x650)
+(or (not x650) x653 x596)
+(or (not x650) x653 x647)
+(or (not x474) x653)
+(or (not x653) x474)
+(or (not x616) (not x595) x652)
+(or (not x595) x652)
+(or (not x652) x595)
+(or (not x652) x616 x595)
+(or (not x651) (not x592) x595)
+(or (not x649) x595)
+(or (not x595) x649 x592)
+(or (not x595) x651 x649)
+(or (not x650) (not x589) x649)
+(or (not x648) x649)
+(or (not x649) x648 x589)
+(or (not x649) x650 x648)
+(or (not x647) x648)
+(or (not x648) x647)
+(or (not x648) x647)
+(or (not x473) x647)
+(or (not x647) x473)
+(or (not x637) (not x616) x646)
+(or (not x637) x646)
+(or (not x646) x637 x616)
+(or (not x646) x637)
+(or (not x614) (not x607) x637)
+(or (not x614) x637)
+(or (not x637) x614)
+(or (not x637) x614 x607)
+(or (not x634) (not x613) x614)
+(or (not x645) x614)
+(or (not x614) x645 x613)
+(or (not x614) x645 x634)
+(or (not x632) (not x610) x645)
+(or (not x644) x645)
+(or (not x645) x644 x610)
+(or (not x645) x644 x632)
+(or (not x470) x644)
+(or (not x644) x470)
+(or (not x637) (not x609) x643)
+(or (not x642) x643)
+(or (not x643) x642 x609)
+(or (not x643) x642 x637)
+(or (not x607) x642)
+(or (not x607) x642)
+(or (not x642) x607)
+(or (not x642) x607)
+(or (not x634) (not x605) x607)
+(or (not x641) x607)
+(or (not x607) x641 x605)
+(or (not x607) x641 x634)
+(or (not x632) (not x603) x641)
+(or (not x641) x603)
+(or (not x641) x632)
+(or (not x637) (not x602) x640)
+(or (not x639) x640)
+(or (not x640) x639 x602)
+(or (not x640) x639 x637)
+(or (not x607) (not x600) x639)
+(or (not x600) x639)
+(or (not x639) x600)
+(or (not x639) x607 x600)
+(or (not x634) (not x598) x600)
+(or (not x634) x600)
+(or (not x600) x634 x598)
+(or (not x600) x634)
+(or (not x632) (not x596) x634)
+(or (not x638) x634)
+(or (not x634) x638 x596)
+(or (not x634) x638 x632)
+(or (not x467) x638)
+(or (not x638) x467)
+(or (not x637) (not x595) x636)
+(or (not x635) x636)
+(or (not x636) x635 x595)
+(or (not x636) x637 x635)
+(or (not x607) (not x592) x635)
+(or (not x592) x635)
+(or (not x635) x592)
+(or (not x635) x607 x592)
+(or (not x634) (not x589) x592)
+(or (not x633) x592)
+(or (not x592) x633 x589)
+(or (not x592) x634 x633)
+(or (not x632) x633)
+(or (not x633) x632)
+(or (not x633) x632)
+(or (not x464) x632)
+(or (not x632) x464)
+(or (not x622) (not x616) x631)
+(or (not x622) x631)
+(or (not x631) x622 x616)
+(or (not x631) x622)
+(or (not x620) (not x614) x622)
+(or (not x630) x622)
+(or (not x622) x630 x614)
+(or (not x622) x630 x620)
+(or (not x613) (not x598) x630)
+(or (not x613) x630)
+(or (not x630) x613)
+(or (not x630) x613 x598)
+(or (not x617) (not x610) x613)
+(or (not x629) x613)
+(or (not x613) x629 x610)
+(or (not x613) x629 x617)
+(or (not x461) x629)
+(or (not x629) x461)
+(or (not x622) (not x609) x628)
+(or (not x627) x628)
+(or (not x628) x627 x609)
+(or (not x628) x627 x622)
+(or (not x620) (not x607) x627)
+(or (not x620) x627)
+(or (not x627) x620 x607)
+(or (not x627) x620)
+(or (not x605) (not x598) x620)
+(or (not x605) x620)
+(or (not x620) x605)
+(or (not x620) x605 x598)
+(or (not x617) (not x603) x605)
+(or (not x626) x605)
+(or (not x605) x626 x603)
+(or (not x605) x626 x617)
+(or (not x458) x626)
+(or (not x626) x458)
+(or (not x622) (not x602) x625)
+(or (not x624) x625)
+(or (not x625) x624 x602)
+(or (not x625) x624 x622)
+(or (not x620) (not x600) x624)
+(or (not x623) x624)
+(or (not x624) x623 x600)
+(or (not x624) x623 x620)
+(or (not x598) x623)
+(or (not x598) x623)
+(or (not x623) x598)
+(or (not x623) x598)
+(or (not x617) (not x596) x598)
+(or (not x598) x596)
+(or (not x598) x617)
+(or (not x622) (not x595) x621)
+(or (not x619) x621)
+(or (not x621) x619 x595)
+(or (not x621) x622 x619)
+(or (not x620) (not x592) x619)
+(or (not x618) x619)
+(or (not x619) x618 x592)
+(or (not x619) x620 x618)
+(or (not x598) (not x589) x618)
+(or (not x589) x618)
+(or (not x618) x589)
+(or (not x618) x598 x589)
+(or (not x617) x589)
+(or (not x589) x617)
+(or (not x589) x617)
+(or (not x455) x617)
+(or (not x617) x455)
+(or (not x616) (not x594) x615)
+(or (not x594) x615)
+(or (not x615) x616 x594)
+(or (not x615) x594)
+(or (not x614) (not x591) x594)
+(or (not x612) x594)
+(or (not x594) x614 x612)
+(or (not x594) x612 x591)
+(or (not x613) (not x588) x612)
+(or (not x611) x612)
+(or (not x612) x613 x611)
+(or (not x612) x611 x588)
+(or (not x610) x611)
+(or (not x611) x610)
+(or (not x611) x610)
+(or (not x452) x610)
+(or (not x610) x452)
+(or (not x609) (not x594) x608)
+(or (not x606) x608)
+(or (not x608) x609 x606)
+(or (not x608) x606 x594)
+(or (not x607) (not x591) x606)
+(or (not x591) x606)
+(or (not x606) x607 x591)
+(or (not x606) x591)
+(or (not x605) (not x588) x591)
+(or (not x604) x591)
+(or (not x591) x605 x604)
+(or (not x591) x604 x588)
+(or (not x603) x604)
+(or (not x604) x603)
+(or (not x604) x603)
+(or (not x449) x603)
+(or (not x603) x449)
+(or (not x602) (not x594) x601)
+(or (not x599) x601)
+(or (not x601) x602 x599)
+(or (not x601) x599 x594)
+(or (not x600) (not x591) x599)
+(or (not x597) x599)
+(or (not x599) x600 x597)
+(or (not x599) x597 x591)
+(or (not x598) (not x588) x597)
+(or (not x588) x597)
+(or (not x597) x598 x588)
+(or (not x597) x588)
+(or (not x596) x588)
+(or (not x588) x596)
+(or (not x588) x596)
+(or (not x446) x596)
+(or (not x596) x446)
+(or (not x595) (not x594) x593)
+(or (not x590) x593)
+(or (not x593) x595 x590)
+(or (not x593) x594 x590)
+(or (not x592) (not x591) x590)
+(or (not x587) x590)
+(or (not x590) x592 x587)
+(or (not x590) x591 x587)
+(or (not x589) (not x588) x587)
+(or (not x587) x589)
+(or (not x587) x588)
+(or (not x541) x586)
+(or (not x541) x586)
+(or (not x586) x541)
+(or (not x586) x541)
+(or (not x576) (not x539) x541)
+(or (not x585) x541)
+(or (not x541) x585 x539)
+(or (not x541) x585 x576)
+(or (not x575) (not x538) x585)
+(or (not x584) x585)
+(or (not x585) x584 x538)
+(or (not x585) x584 x575)
+(or (not x572) (not x535) x584)
+(or (not x584) x535)
+(or (not x584) x572)
+(or (not x541) (not x534) x583)
+(or (not x534) x583)
+(or (not x583) x534)
+(or (not x583) x541 x534)
+(or (not x576) (not x532) x534)
+(or (not x576) x534)
+(or (not x534) x576 x532)
+(or (not x534) x576)
+(or (not x575) (not x530) x576)
+(or (not x582) x576)
+(or (not x576) x582 x530)
+(or (not x576) x582 x575)
+(or (not x572) (not x528) x582)
+(or (not x581) x582)
+(or (not x582) x581 x528)
+(or (not x582) x581 x572)
+(or (not x443) x581)
+(or (not x581) x443)
+(or (not x541) (not x527) x580)
+(or (not x527) x580)
+(or (not x580) x527)
+(or (not x580) x541 x527)
+(or (not x576) (not x525) x527)
+(or (not x579) x527)
+(or (not x527) x579 x525)
+(or (not x527) x579 x576)
+(or (not x575) (not x523) x579)
+(or (not x575) x579)
+(or (not x579) x575 x523)
+(or (not x579) x575)
+(or (not x572) (not x521) x575)
+(or (not x578) x575)
+(or (not x575) x578 x521)
+(or (not x575) x578 x572)
+(or (not x440) x578)
+(or (not x578) x440)
+(or (not x541) (not x520) x577)
+(or (not x520) x577)
+(or (not x577) x520)
+(or (not x577) x541 x520)
+(or (not x576) (not x517) x520)
+(or (not x574) x520)
+(or (not x520) x574 x517)
+(or (not x520) x576 x574)
+(or (not x575) (not x514) x574)
+(or (not x573) x574)
+(or (not x574) x573 x514)
+(or (not x574) x575 x573)
+(or (not x572) x573)
+(or (not x573) x572)
+(or (not x573) x572)
+(or (not x437) x572)
+(or (not x572) x437)
+(or (not x562) (not x541) x571)
+(or (not x562) x571)
+(or (not x571) x562 x541)
+(or (not x571) x562)
+(or (not x539) (not x532) x562)
+(or (not x539) x562)
+(or (not x562) x539)
+(or (not x562) x539 x532)
+(or (not x559) (not x538) x539)
+(or (not x570) x539)
+(or (not x539) x570 x538)
+(or (not x539) x570 x559)
+(or (not x557) (not x535) x570)
+(or (not x569) x570)
+(or (not x570) x569 x535)
+(or (not x570) x569 x557)
+(or (not x434) x569)
+(or (not x569) x434)
+(or (not x562) (not x534) x568)
+(or (not x567) x568)
+(or (not x568) x567 x534)
+(or (not x568) x567 x562)
+(or (not x532) x567)
+(or (not x532) x567)
+(or (not x567) x532)
+(or (not x567) x532)
+(or (not x559) (not x530) x532)
+(or (not x566) x532)
+(or (not x532) x566 x530)
+(or (not x532) x566 x559)
+(or (not x557) (not x528) x566)
+(or (not x566) x528)
+(or (not x566) x557)
+(or (not x562) (not x527) x565)
+(or (not x564) x565)
+(or (not x565) x564 x527)
+(or (not x565) x564 x562)
+(or (not x532) (not x525) x564)
+(or (not x525) x564)
+(or (not x564) x525)
+(or (not x564) x532 x525)
+(or (not x559) (not x523) x525)
+(or (not x559) x525)
+(or (not x525) x559 x523)
+(or (not x525) x559)
+(or (not x557) (not x521) x559)
+(or (not x563) x559)
+(or (not x559) x563 x521)
+(or (not x559) x563 x557)
+(or (not x431) x563)
+(or (not x563) x431)
+(or (not x562) (not x520) x561)
+(or (not x560) x561)
+(or (not x561) x560 x520)
+(or (not x561) x562 x560)
+(or (not x532) (not x517) x560)
+(or (not x517) x560)
+(or (not x560) x517)
+(or (not x560) x532 x517)
+(or (not x559) (not x514) x517)
+(or (not x558) x517)
+(or (not x517) x558 x514)
+(or (not x517) x559 x558)
+(or (not x557) x558)
+(or (not x558) x557)
+(or (not x558) x557)
+(or (not x428) x557)
+(or (not x557) x428)
+(or (not x547) (not x541) x556)
+(or (not x547) x556)
+(or (not x556) x547 x541)
+(or (not x556) x547)
+(or (not x545) (not x539) x547)
+(or (not x555) x547)
+(or (not x547) x555 x539)
+(or (not x547) x555 x545)
+(or (not x538) (not x523) x555)
+(or (not x538) x555)
+(or (not x555) x538)
+(or (not x555) x538 x523)
+(or (not x542) (not x535) x538)
+(or (not x554) x538)
+(or (not x538) x554 x535)
+(or (not x538) x554 x542)
+(or (not x425) x554)
+(or (not x554) x425)
+(or (not x547) (not x534) x553)
+(or (not x552) x553)
+(or (not x553) x552 x534)
+(or (not x553) x552 x547)
+(or (not x545) (not x532) x552)
+(or (not x545) x552)
+(or (not x552) x545 x532)
+(or (not x552) x545)
+(or (not x530) (not x523) x545)
+(or (not x530) x545)
+(or (not x545) x530)
+(or (not x545) x530 x523)
+(or (not x542) (not x528) x530)
+(or (not x551) x530)
+(or (not x530) x551 x528)
+(or (not x530) x551 x542)
+(or (not x422) x551)
+(or (not x551) x422)
+(or (not x547) (not x527) x550)
+(or (not x549) x550)
+(or (not x550) x549 x527)
+(or (not x550) x549 x547)
+(or (not x545) (not x525) x549)
+(or (not x548) x549)
+(or (not x549) x548 x525)
+(or (not x549) x548 x545)
+(or (not x523) x548)
+(or (not x523) x548)
+(or (not x548) x523)
+(or (not x548) x523)
+(or (not x542) (not x521) x523)
+(or (not x523) x521)
+(or (not x523) x542)
+(or (not x547) (not x520) x546)
+(or (not x544) x546)
+(or (not x546) x544 x520)
+(or (not x546) x547 x544)
+(or (not x545) (not x517) x544)
+(or (not x543) x544)
+(or (not x544) x543 x517)
+(or (not x544) x545 x543)
+(or (not x523) (not x514) x543)
+(or (not x514) x543)
+(or (not x543) x514)
+(or (not x543) x523 x514)
+(or (not x542) x514)
+(or (not x514) x542)
+(or (not x514) x542)
+(or (not x419) x542)
+(or (not x542) x419)
+(or (not x541) (not x519) x540)
+(or (not x519) x540)
+(or (not x540) x541 x519)
+(or (not x540) x519)
+(or (not x539) (not x516) x519)
+(or (not x537) x519)
+(or (not x519) x539 x537)
+(or (not x519) x537 x516)
+(or (not x538) (not x513) x537)
+(or (not x536) x537)
+(or (not x537) x538 x536)
+(or (not x537) x536 x513)
+(or (not x535) x536)
+(or (not x536) x535)
+(or (not x536) x535)
+(or (not x414) x535)
+(or (not x535) x414)
+(or (not x534) (not x519) x533)
+(or (not x531) x533)
+(or (not x533) x534 x531)
+(or (not x533) x531 x519)
+(or (not x532) (not x516) x531)
+(or (not x516) x531)
+(or (not x531) x532 x516)
+(or (not x531) x516)
+(or (not x530) (not x513) x516)
+(or (not x529) x516)
+(or (not x516) x530 x529)
+(or (not x516) x529 x513)
+(or (not x528) x529)
+(or (not x529) x528)
+(or (not x529) x528)
+(or (not x409) x528)
+(or (not x528) x409)
+(or (not x527) (not x519) x526)
+(or (not x524) x526)
+(or (not x526) x527 x524)
+(or (not x526) x524 x519)
+(or (not x525) (not x516) x524)
+(or (not x522) x524)
+(or (not x524) x525 x522)
+(or (not x524) x522 x516)
+(or (not x523) (not x513) x522)
+(or (not x513) x522)
+(or (not x522) x523 x513)
+(or (not x522) x513)
+(or (not x521) x513)
+(or (not x513) x521)
+(or (not x513) x521)
+(or (not x404) x521)
+(or (not x521) x404)
+(or (not x520) (not x519) x518)
+(or (not x515) x518)
+(or (not x518) x520 x515)
+(or (not x518) x519 x515)
+(or (not x517) (not x516) x515)
+(or (not x512) x515)
+(or (not x515) x517 x512)
+(or (not x515) x516 x512)
+(or (not x514) (not x513) x512)
+(or (not x512) x514)
+(or (not x512) x513)
+(or (not x108) (not x22) x511)
+(or (not x330) x511)
+(or (not x511) x330 x108)
+(or (not x511) x22)
+(or (not x108) (not x23) x510)
+(or (not x326) x510)
+(or (not x510) x326 x108)
+(or (not x510) x23)
+(or (not x108) (not x24) x509)
+(or (not x323) x509)
+(or (not x509) x323 x108)
+(or (not x509) x24)
+(or (not x80) (not x17) x508)
+(or (not x315) x508)
+(or (not x508) x315 x80)
+(or (not x508) x17)
+(or (not x80) (not x18) x507)
+(or (not x311) x507)
+(or (not x507) x311 x80)
+(or (not x507) x18)
+(or (not x80) (not x19) x506)
+(or (not x309) x506)
+(or (not x506) x309 x80)
+(or (not x506) x19)
+(or (not x71) (not x12) x505)
+(or (not x304) x505)
+(or (not x505) x304 x71)
+(or (not x505) x12)
+(or (not x71) (not x13) x504)
+(or (not x300) x504)
+(or (not x504) x300 x71)
+(or (not x504) x13)
+(or (not x71) (not x14) x503)
+(or (not x291) x503)
+(or (not x503) x291 x71)
+(or (not x503) x14)
+(or (not x459) x472)
+(or (not x60) (not x6) x502)
+(or (not x472) x459)
+(or (not x289) x502)
+(or (not x457) x471)
+(or (not x502) x289 x60)
+(or (not x471) x457)
+(or (not x502) x6)
+(or (not x456) x469)
+(or (not x60) (not x7) x501)
+(or (not x469) x456)
+(or (not x287) x501)
+(or (not x472) x468)
+(or (not x501) x287 x60)
+(or (not x468) x472)
+(or (not x501) x7)
+(or (not x471) x466)
+(or (not x60) (not x8) x500)
+(or (not x466) x471)
+(or (not x283) x500)
+(or (not x469) x465)
+(or (not x500) x283 x60)
+(or (not x465) x469)
+(or (not x500) x8)
+(or (not x468) x463)
+(or (not x108) (not x22) x499)
+(or (not x463) x468)
+(or (not x271) x499)
+(or (not x466) x462)
+(or (not x499) x271 x108)
+(or (not x462) x466)
+(or (not x499) x22)
+(or (not x465) x460)
+(or (not x108) (not x23) x498)
+(or (not x460) x465)
+(or (not x269) x498)
+(or (not x463) x459)
+(or (not x498) x269 x108)
+(or (not x459) x463)
+(or (not x498) x23)
+(or (not x462) x457)
+(or (not x108) (not x24) x497)
+(or (not x457) x462)
+(or (not x267) x497)
+(or (not x460) x456)
+(or (not x497) x267 x108)
+(or (not x456) x460)
+(or (not x497) x24)
+(or (not x441) x454)
+(or (not x80) (not x17) x496)
+(or (not x454) x441)
+(or (not x264) x496)
+(or (not x439) x453)
+(or (not x496) x264 x80)
+(or (not x453) x439)
+(or (not x496) x17)
+(or (not x438) x451)
+(or (not x80) (not x18) x495)
+(or (not x451) x438)
+(or (not x260) x495)
+(or (not x454) x450)
+(or (not x495) x260 x80)
+(or (not x450) x454)
+(or (not x495) x18)
+(or (not x453) x448)
+(or (not x80) (not x19) x494)
+(or (not x448) x453)
+(or (not x258) x494)
+(or (not x451) x447)
+(or (not x494) x258 x80)
+(or (not x447) x451)
+(or (not x494) x19)
+(or (not x450) x445)
+(or (not x71) (not x12) x493)
+(or (not x445) x450)
+(or (not x256) x493)
+(or (not x448) x444)
+(or (not x493) x256 x71)
+(or (not x444) x448)
+(or (not x493) x12)
+(or (not x447) x442)
+(or (not x71) (not x13) x492)
+(or (not x442) x447)
+(or (not x253) x492)
+(or (not x445) x441)
+(or (not x492) x253 x71)
+(or (not x441) x445)
+(or (not x492) x13)
+(or (not x444) x439)
+(or (not x71) (not x14) x491)
+(or (not x439) x444)
+(or (not x249) x491)
+(or (not x442) x438)
+(or (not x491) x249 x71)
+(or (not x438) x442)
+(or (not x491) x14)
+(or (not x423) x436)
+(or (not x60) (not x6) x490)
+(or (not x436) x423)
+(or (not x245) x490)
+(or (not x421) x435)
+(or (not x490) x245 x60)
+(or (not x435) x421)
+(or (not x490) x6)
+(or (not x420) x433)
+(or (not x60) (not x7) x489)
+(or (not x433) x420)
+(or (not x241) x489)
+(or (not x436) x432)
+(or (not x489) x241 x60)
+(or (not x432) x436)
+(or (not x489) x7)
+(or (not x435) x430)
+(or (not x60) (not x8) x488)
+(or (not x430) x435)
+(or (not x235) x488)
+(or (not x433) x429)
+(or (not x488) x235 x60)
+(or (not x429) x433)
+(or (not x488) x8)
+(or (not x432) x427)
+(or (not x108) (not x22) x487)
+(or (not x427) x432)
+(or (not x222) x487)
+(or (not x430) x426)
+(or (not x487) x222 x108)
+(or (not x426) x430)
+(or (not x487) x22)
+(or (not x429) x424)
+(or (not x108) (not x23) x486)
+(or (not x424) x429)
+(or (not x212) x486)
+(or (not x427) x423)
+(or (not x486) x212 x108)
+(or (not x423) x427)
+(or (not x486) x23)
+(or (not x426) x421)
+(or (not x108) (not x24) x485)
+(or (not x421) x426)
+(or (not x207) x485)
+(or (not x424) x420)
+(or (not x485) x207 x108)
+(or (not x420) x424)
+(or (not x485) x24)
+(or (not x395) x418)
+(or (not x80) (not x17) x484)
+(or (not x418) x395)
+(or (not x205) x484)
+(or (not x392) x416)
+(or (not x484) x205 x80)
+(or (not x416) x392)
+(or (not x484) x17)
+(or (not x389) x413)
+(or (not x80) (not x18) x483)
+(or (not x413) x389)
+(or (not x202) x483)
+(or (not x418) x411)
+(or (not x483) x202 x80)
+(or (not x411) x418)
+(or (not x483) x18)
+(or (not x416) x408)
+(or (not x80) (not x19) x482)
+(or (not x408) x416)
+(or (not x199) x482)
+(or (not x413) x406)
+(or (not x482) x199 x80)
+(or (not x406) x413)
+(or (not x482) x19)
+(or (not x411) x403)
+(or (not x71) (not x12) x481)
+(or (not x403) x411)
+(or (not x196) x481)
+(or (not x408) x401)
+(or (not x481) x196 x71)
+(or (not x401) x408)
+(or (not x481) x12)
+(or (not x406) x398)
+(or (not x71) (not x13) x480)
+(or (not x398) x406)
+(or (not x195) x480)
+(or (not x403) x395)
+(or (not x480) x195 x71)
+(or (not x395) x403)
+(or (not x480) x13)
+(or (not x401) x392)
+(or (not x71) (not x14) x479)
+(or (not x392) x401)
+(or (not x191) x479)
+(or (not x398) x389)
+(or (not x479) x191 x71)
+(or (not x389) x398)
+(or (not x479) x14)
+(or (not x394) x417)
+(or (not x60) (not x6) x478)
+(or (not x417) x394)
+(or (not x187) x478)
+(or (not x391) x415)
+(or (not x478) x187 x60)
+(or (not x415) x391)
+(or (not x478) x6)
+(or (not x388) x412)
+(or (not x60) (not x7) x477)
+(or (not x412) x388)
+(or (not x184) x477)
+(or (not x417) x410)
+(or (not x477) x184 x60)
+(or (not x410) x417)
+(or (not x477) x7)
+(or (not x415) x407)
+(or (not x60) (not x8) x476)
+(or (not x407) x415)
+(or (not x182) x476)
+(or (not x412) x405)
+(or (not x476) x182 x60)
+(or (not x405) x412)
+(or (not x476) x8)
+(or (not x410) x402)
+(or (not x108) (not x22) x475)
+(or (not x402) x410)
+(or (not x170) x475)
+(or (not x407) x400)
+(or (not x475) x170 x108)
+(or (not x400) x407)
+(or (not x475) x22)
+(or (not x405) x397)
+(or (not x108) (not x23) x474)
+(or (not x397) x405)
+(or (not x163) x474)
+(or (not x402) x394)
+(or (not x474) x163 x108)
+(or (not x394) x402)
+(or (not x474) x23)
+(or (not x400) x391)
+(or (not x108) (not x24) x473)
+(or (not x391) x400)
+(or (not x161) x473)
+(or (not x397) x388)
+(or (not x473) x161 x108)
+(or (not x388) x397)
+(or (not x473) x24)
+(or (not x472) x454)
+(or (not x80) (not x17) x470)
+(or (not x454) x472)
+(or (not x148) x470)
+(or (not x471) x453)
+(or (not x470) x148 x80)
+(or (not x453) x471)
+(or (not x470) x17)
+(or (not x469) x451)
+(or (not x80) (not x18) x467)
+(or (not x451) x469)
+(or (not x143) x467)
+(or (not x468) x450)
+(or (not x467) x143 x80)
+(or (not x450) x468)
+(or (not x467) x18)
+(or (not x466) x448)
+(or (not x80) (not x19) x464)
+(or (not x448) x466)
+(or (not x141) x464)
+(or (not x465) x447)
+(or (not x464) x141 x80)
+(or (not x447) x465)
+(or (not x464) x19)
+(or (not x463) x445)
+(or (not x71) (not x12) x461)
+(or (not x445) x463)
+(or (not x138) x461)
+(or (not x462) x444)
+(or (not x461) x138 x71)
+(or (not x444) x462)
+(or (not x461) x12)
+(or (not x460) x442)
+(or (not x71) (not x13) x458)
+(or (not x442) x460)
+(or (not x135) x458)
+(or (not x459) x441)
+(or (not x458) x135 x71)
+(or (not x441) x459)
+(or (not x458) x13)
+(or (not x457) x439)
+(or (not x71) (not x14) x455)
+(or (not x439) x457)
+(or (not x132) x455)
+(or (not x456) x438)
+(or (not x455) x132 x71)
+(or (not x438) x456)
+(or (not x455) x14)
+(or (not x454) x436)
+(or (not x60) (not x6) x452)
+(or (not x436) x454)
+(or (not x130) x452)
+(or (not x453) x435)
+(or (not x452) x130 x60)
+(or (not x435) x453)
+(or (not x452) x6)
+(or (not x451) x433)
+(or (not x60) (not x7) x449)
+(or (not x433) x451)
+(or (not x127) x449)
+(or (not x450) x432)
+(or (not x449) x127 x60)
+(or (not x432) x450)
+(or (not x449) x7)
+(or (not x448) x430)
+(or (not x60) (not x8) x446)
+(or (not x430) x448)
+(or (not x124) x446)
+(or (not x447) x429)
+(or (not x446) x124 x60)
+(or (not x429) x447)
+(or (not x446) x8)
+(or (not x445) x427)
+(or (not x108) (not x22) x443)
+(or (not x427) x445)
+(or (not x116) x443)
+(or (not x444) x426)
+(or (not x443) x116 x108)
+(or (not x426) x444)
+(or (not x443) x22)
+(or (not x442) x424)
+(or (not x108) (not x23) x440)
+(or (not x424) x442)
+(or (not x110) x440)
+(or (not x441) x423)
+(or (not x440) x110 x108)
+(or (not x423) x441)
+(or (not x440) x23)
+(or (not x439) x421)
+(or (not x108) (not x24) x437)
+(or (not x421) x439)
+(or (not x107) x437)
+(or (not x438) x420)
+(or (not x437) x107 x108)
+(or (not x420) x438)
+(or (not x437) x24)
+(or (not x436) x418)
+(or (not x80) (not x17) x434)
+(or (not x418) x436)
+(or (not x98) x434)
+(or (not x435) x416)
+(or (not x434) x98 x80)
+(or (not x416) x435)
+(or (not x434) x17)
+(or (not x433) x413)
+(or (not x80) (not x18) x431)
+(or (not x413) x433)
+(or (not x85) x431)
+(or (not x432) x411)
+(or (not x431) x85 x80)
+(or (not x411) x432)
+(or (not x431) x18)
+(or (not x430) x408)
+(or (not x80) (not x19) x428)
+(or (not x408) x430)
+(or (not x79) x428)
+(or (not x429) x406)
+(or (not x428) x79 x80)
+(or (not x406) x429)
+(or (not x428) x19)
+(or (not x427) x403)
+(or (not x71) (not x12) x425)
+(or (not x403) x427)
+(or (not x77) x425)
+(or (not x426) x401)
+(or (not x425) x77 x71)
+(or (not x401) x426)
+(or (not x425) x12)
+(or (not x424) x398)
+(or (not x71) (not x13) x422)
+(or (not x398) x424)
+(or (not x76) x422)
+(or (not x423) x395)
+(or (not x422) x76 x71)
+(or (not x395) x423)
+(or (not x422) x13)
+(or (not x421) x392)
+(or (not x71) (not x14) x419)
+(or (not x392) x421)
+(or (not x70) x419)
+(or (not x420) x389)
+(or (not x419) x70 x71)
+(or (not x389) x420)
+(or (not x419) x14)
+(or (not x418) x417)
+(or (not x60) (not x6) x414)
+(or (not x417) x418)
+(or (not x67) x414)
+(or (not x416) x415)
+(or (not x414) x67 x60)
+(or (not x415) x416)
+(or (not x414) x6)
+(or (not x413) x412)
+(or (not x60) (not x7) x409)
+(or (not x412) x413)
+(or (not x66) x409)
+(or (not x411) x410)
+(or (not x409) x66 x60)
+(or (not x410) x411)
+(or (not x409) x7)
+(or (not x408) x407)
+(or (not x60) (not x8) x404)
+(or (not x407) x408)
+(or (not x63) x404)
+(or (not x406) x405)
+(or (not x404) x63 x60)
+(or (not x405) x406)
+(or (not x404) x8)
+(or (not x403) x402)
+(or x399 x396 x393 x390 x387 x386 x385 x384 x383 x382 x381 x380)
+(or (not x402) x403)
+(or (not x401) x400)
+(or (not x400) x401)
+(or (not x399) x330)
+(or (not x398) x397)
+(or (not x399) (not x271))
+(or (not x397) x398)
+(or (not x396) x326)
+(or (not x395) x394)
+(or (not x396) (not x269))
+(or (not x394) x395)
+(or (not x393) x323)
+(or (not x392) x391)
+(or (not x393) (not x267))
+(or (not x391) x392)
+(or (not x390) x315)
+(or (not x389) x388)
+(or (not x390) (not x264))
+(or (not x388) x389)
+(or (not x335) (not x326) (not x271))
+(or (not x344) (not x323) (not x271))
+(or (not x387) x311)
+(or (not x332) (not x330) (not x269))
+(or (not x387) (not x260))
+(or (not x349) (not x323) (not x269))
+(or (not x386) x309)
+(or (not x341) (not x330) (not x267))
+(or (not x386) (not x258))
+(or (not x347) (not x326) (not x267))
+(or (not x385) x304)
+(or (not x338) (not x311) (not x264))
+(or (not x385) (not x256))
+(or (not x345) (not x309) (not x264))
+(or (not x384) x300)
+(or (not x333) (not x315) (not x260))
+(or (not x384) (not x253))
+(or (not x349) (not x309) (not x260))
+(or (not x342) (not x315) (not x258))
+(or (not x347) (not x311) (not x258))
+(or (not x383) x291)
+(or (not x339) (not x300) (not x256))
+(or (not x383) (not x249))
+(or (not x345) (not x291) (not x256))
+(or (not x382) x289)
+(or (not x336) (not x304) (not x253))
+(or (not x382) (not x245))
+(or (not x344) (not x291) (not x253))
+(or (not x381) x287)
+(or (not x342) (not x304) (not x249))
+(or (not x381) (not x241))
+(or (not x341) (not x300) (not x249))
+(or (not x380) x283)
+(or (not x339) (not x287) (not x245))
+(or (not x380) (not x235))
+(or (not x338) (not x283) (not x245))
+(or (not x336) (not x289) (not x241))
+(or (not x335) (not x283) (not x241))
+(or x379 x378 x377 x376 x375 x374 x373 x372 x371 x370 x369 x368)
+(or (not x333) (not x289) (not x235))
+(or (not x332) (not x287) (not x235))
+(or (not x316) (not x269) (not x222))
+(or (not x379) x271)
+(or (not x324) (not x267) (not x222))
+(or (not x379) (not x222))
+(or (not x313) (not x271) (not x212))
+(or (not x378) x269)
+(or (not x331) (not x267) (not x212))
+(or (not x378) (not x212))
+(or (not x320) (not x271) (not x207))
+(or (not x377) x267)
+(or (not x328) (not x269) (not x207))
+(or (not x377) (not x207))
+(or (not x318) (not x260) (not x205))
+(or (not x376) x264)
+(or (not x327) (not x258) (not x205))
+(or (not x376) (not x205))
+(or (not x314) (not x264) (not x202))
+(or (not x331) (not x258) (not x202))
+(or (not x321) (not x264) (not x199))
+(or (not x375) x260)
+(or (not x328) (not x260) (not x199))
+(or (not x375) (not x202))
+(or (not x319) (not x253) (not x196))
+(or (not x374) x258)
+(or (not x327) (not x249) (not x196))
+(or (not x374) (not x199))
+(or (not x317) (not x256) (not x195))
+(or (not x373) x256)
+(or (not x324) (not x249) (not x195))
+(or (not x373) (not x196))
+(or (not x321) (not x256) (not x191))
+(or (not x372) x253)
+(or (not x320) (not x253) (not x191))
+(or (not x372) (not x195))
+(or (not x319) (not x241) (not x187))
+(or (not x318) (not x235) (not x187))
+(or (not x317) (not x245) (not x184))
+(or (not x371) x249)
+(or (not x316) (not x235) (not x184))
+(or (not x371) (not x191))
+(or (not x314) (not x245) (not x182))
+(or (not x370) x245)
+(or (not x313) (not x241) (not x182))
+(or (not x370) (not x187))
+(or (not x295) (not x212) (not x170))
+(or (not x369) x241)
+(or (not x303) (not x207) (not x170))
+(or (not x369) (not x184))
+(or (not x292) (not x222) (not x163))
+(or (not x368) x235)
+(or (not x307) (not x207) (not x163))
+(or (not x368) (not x182))
+(or (not x301) (not x222) (not x161))
+(or (not x306) (not x212) (not x161))
+(or (not x297) (not x202) (not x148))
+(or x367 x366 x365 x364 x363 x362 x361 x360 x359 x358 x357 x356)
+(or (not x305) (not x199) (not x148))
+(or (not x293) (not x205) (not x143))
+(or (not x307) (not x199) (not x143))
+(or (not x367) x222)
+(or (not x302) (not x205) (not x141))
+(or (not x367) (not x170))
+(or (not x306) (not x202) (not x141))
+(or (not x366) x212)
+(or (not x298) (not x195) (not x138))
+(or (not x366) (not x163))
+(or (not x305) (not x191) (not x138))
+(or (not x365) x207)
+(or (not x296) (not x196) (not x135))
+(or (not x365) (not x161))
+(or (not x303) (not x191) (not x135))
+(or (not x364) x205)
+(or (not x302) (not x196) (not x132))
+(or (not x364) (not x148))
+(or (not x301) (not x195) (not x132))
+(or (not x298) (not x184) (not x130))
+(or (not x297) (not x182) (not x130))
+(or (not x363) x202)
+(or (not x296) (not x187) (not x127))
+(or (not x363) (not x143))
+(or (not x295) (not x182) (not x127))
+(or (not x362) x199)
+(or (not x293) (not x187) (not x124))
+(or (not x362) (not x141))
+(or (not x292) (not x184) (not x124))
+(or (not x361) x196)
+(or (not x274) (not x163) (not x116))
+(or (not x361) (not x138))
+(or (not x281) (not x161) (not x116))
+(or (not x360) x195)
+(or (not x272) (not x170) (not x110))
+(or (not x360) (not x135))
+(or (not x288) (not x161) (not x110))
+(or (not x278) (not x170) (not x107))
+(or (not x285) (not x163) (not x107))
+(or (not x359) x191)
+(or (not x276) (not x143) (not x98))
+(or (not x359) (not x132))
+(or (not x284) (not x141) (not x98))
+(or (not x358) x187)
+(or (not x273) (not x148) (not x85))
+(or (not x358) (not x130))
+(or (not x288) (not x141) (not x85))
+(or (not x357) x184)
+(or (not x279) (not x148) (not x79))
+(or (not x357) (not x127))
+(or (not x285) (not x143) (not x79))
+(or (not x356) x182)
+(or (not x277) (not x135) (not x77))
+(or (not x356) (not x124))
+(or (not x284) (not x132) (not x77))
+(or (not x275) (not x138) (not x76))
+(or (not x281) (not x132) (not x76))
+(or x355 x354 x353 x352 x351 x350 x348 x346 x343 x340 x337 x334)
+(or (not x279) (not x138) (not x70))
+(or (not x278) (not x135) (not x70))
+(or (not x277) (not x127) (not x67))
+(or (not x355) x170)
+(or (not x276) (not x124) (not x67))
+(or (not x355) (not x116))
+(or (not x275) (not x130) (not x66))
+(or (not x354) x163)
+(or (not x274) (not x124) (not x66))
+(or (not x354) (not x110))
+(or (not x273) (not x130) (not x63))
+(or (not x353) x161)
+(or (not x272) (not x127) (not x63))
+(or (not x353) (not x107))
+(or (not x330) (not x23) x335 x108)
+(or (not x352) x148)
+(or (not x330) (not x24) x344 x108)
+(or (not x352) (not x98))
+(or (not x326) (not x22) x332 x108)
+(or (not x326) (not x24) x349 x108)
+(or (not x323) (not x22) x341 x108)
+(or (not x351) x143)
+(or (not x323) (not x23) x347 x108)
+(or (not x351) (not x85))
+(or (not x315) (not x18) x338 x80)
+(or (not x350) x141)
+(or (not x315) (not x19) x345 x80)
+(or (not x350) (not x79))
+(or (not x311) (not x17) x333 x80)
+(or (not x348) x138)
+(or (not x311) (not x19) x349 x80)
+(or (not x348) (not x77))
+(or (not x309) (not x17) x342 x80)
+(or (not x346) x135)
+(or (not x309) (not x18) x347 x80)
+(or (not x346) (not x76))
+(or (not x304) (not x13) x339 x71)
+(or (not x304) (not x14) x345 x71)
+(or (not x300) (not x12) x336 x71)
+(or (not x343) x132)
+(or (not x300) (not x14) x344 x71)
+(or (not x343) (not x70))
+(or (not x291) (not x12) x342 x71)
+(or (not x340) x130)
+(or (not x291) (not x13) x341 x71)
+(or (not x340) (not x67))
+(or (not x289) (not x7) x339 x60)
+(or (not x337) x127)
+(or (not x289) (not x8) x338 x60)
+(or (not x337) (not x66))
+(or (not x287) (not x6) x336 x60)
+(or (not x334) x124)
+(or (not x287) (not x8) x335 x60)
+(or (not x334) (not x63))
+(or (not x283) (not x6) x333 x60)
+(or (not x283) (not x7) x332 x60)
+(or (not x271) (not x23) x316 x108)
+(or (not x271) (not x24) x324 x108)
+(or (not x330) (not x108))
+(or (not x269) (not x22) x313 x108)
+(or (not x326) (not x108))
+(or (not x269) (not x24) x331 x108)
+(or (not x323) (not x108))
+(or (not x267) (not x22) x320 x108)
+(or (not x267) (not x23) x328 x108)
+(or x329 x108)
+(or (not x264) (not x18) x318 x80)
+(or (not x330) (not x325) x108)
+(or (not x264) (not x19) x327 x80)
+(or (not x330) x329 x325 x108)
+(or (not x260) (not x17) x314 x80)
+(or (not x325) x330 x329 x108)
+(or (not x260) (not x19) x331 x80)
+(or (not x329) x330 x325 x108)
+(or (not x258) (not x17) x321 x80)
+(or (not x326) (not x322) x108)
+(or (not x258) (not x18) x328 x80)
+(or (not x326) x325 x322 x108)
+(or (not x256) (not x13) x319 x71)
+(or (not x322) x326 x325 x108)
+(or (not x256) (not x14) x327 x71)
+(or (not x325) x326 x322 x108)
+(or (not x253) (not x12) x317 x71)
+(or (not x323) x322 x108)
+(or (not x253) (not x14) x324 x71)
+(or (not x322) x323 x108)
+(or (not x249) (not x12) x321 x71)
+(or (not x315) (not x80))
+(or (not x249) (not x13) x320 x71)
+(or (not x245) (not x7) x319 x60)
+(or (not x311) (not x80))
+(or (not x245) (not x8) x318 x60)
+(or (not x309) (not x80))
+(or (not x241) (not x6) x317 x60)
+(or (not x315) (not x312) x80)
+(or (not x241) (not x8) x316 x60)
+(or x315 x312 x80)
+(or (not x235) (not x6) x314 x60)
+(or (not x235) (not x7) x313 x60)
+(or (not x222) (not x23) x295 x108)
+(or (not x310) x312 x80)
+(or (not x222) (not x24) x303 x108)
+(or (not x312) x310 x80)
+(or (not x212) (not x22) x292 x108)
+(or (not x311) (not x308) x80)
+(or (not x212) (not x24) x307 x108)
+(or (not x311) x310 x308 x80)
+(or (not x207) (not x22) x301 x108)
+(or (not x308) x311 x310 x80)
+(or (not x207) (not x23) x306 x108)
+(or (not x310) x311 x308 x80)
+(or (not x205) (not x18) x297 x80)
+(or (not x309) x308 x80)
+(or (not x205) (not x19) x305 x80)
+(or (not x308) x309 x80)
+(or (not x202) (not x17) x293 x80)
+(or (not x304) (not x71))
+(or (not x202) (not x19) x307 x80)
+(or (not x300) (not x71))
+(or (not x199) (not x17) x302 x80)
+(or (not x199) (not x18) x306 x80)
+(or (not x291) (not x71))
+(or (not x196) (not x13) x298 x71)
+(or (not x304) (not x299) x71)
+(or (not x196) (not x14) x305 x71)
+(or x304 x299 x71)
+(or (not x195) (not x12) x296 x71)
+(or (not x300) (not x294) x71)
+(or (not x195) (not x14) x303 x71)
+(or (not x300) x299 x294 x71)
+(or (not x191) (not x12) x302 x71)
+(or (not x294) x300 x299 x71)
+(or (not x191) (not x13) x301 x71)
+(or (not x299) x300 x294 x71)
+(or (not x187) (not x7) x298 x60)
+(or (not x187) (not x8) x297 x60)
+(or (not x184) (not x6) x296 x60)
+(or (not x290) x294 x71)
+(or (not x184) (not x8) x295 x60)
+(or (not x294) x290 x71)
+(or (not x182) (not x6) x293 x60)
+(or (not x291) x290 x71)
+(or (not x182) (not x7) x292 x60)
+(or (not x290) x291 x71)
+(or (not x170) (not x23) x274 x108)
+(or (not x289) (not x60))
+(or (not x170) (not x24) x281 x108)
+(or (not x287) (not x60))
+(or (not x163) (not x22) x272 x108)
+(or (not x283) (not x60))
+(or (not x163) (not x24) x288 x108)
+(or (not x161) (not x22) x278 x108)
+(or (not x289) (not x286) x60)
+(or (not x161) (not x23) x285 x108)
+(or x289 x286 x60)
+(or (not x148) (not x18) x276 x80)
+(or (not x287) (not x282) x60)
+(or (not x148) (not x19) x284 x80)
+(or (not x287) x286 x282 x60)
+(or (not x143) (not x17) x273 x80)
+(or (not x282) x287 x286 x60)
+(or (not x143) (not x19) x288 x80)
+(or (not x286) x287 x282 x60)
+(or (not x141) (not x17) x279 x80)
+(or (not x283) (not x280) x60)
+(or (not x141) (not x18) x285 x80)
+(or (not x283) x282 x280 x60)
+(or (not x138) (not x13) x277 x71)
+(or (not x280) x283 x282 x60)
+(or (not x138) (not x14) x284 x71)
+(or (not x282) x283 x280 x60)
+(or (not x135) (not x12) x275 x71)
+(or (not x135) (not x14) x281 x71)
+(or (not x280) x60)
+(or (not x132) (not x12) x279 x71)
+(or (not x132) (not x13) x278 x71)
+(or (not x271) (not x108))
+(or (not x130) (not x7) x277 x60)
+(or (not x269) (not x108))
+(or (not x130) (not x8) x276 x60)
+(or (not x267) (not x108))
+(or (not x127) (not x6) x275 x60)
+(or (not x127) (not x8) x274 x60)
+(or x270 x108)
+(or (not x124) (not x6) x273 x60)
+(or (not x271) (not x268) x108)
+(or (not x124) (not x7) x272 x60)
+(or (not x271) x270 x268 x108)
+(or (not x265) (not x231))
+(or (not x268) x271 x270 x108)
+(or (not x232) (not x231))
+(or (not x270) x271 x268 x108)
+(or (not x263) (not x231) x225)
+(or (not x269) (not x266) x108)
+(or (not x230) (not x231) x224)
+(or (not x269) x268 x266 x108)
+(or (not x262) (not x231) x244)
+(or (not x266) x269 x268 x108)
+(or (not x247) (not x231) x243)
+(or (not x268) x269 x266 x108)
+(or (not x265) (not x229) x216)
+(or (not x267) x266 x108)
+(or (not x232) (not x229) x214)
+(or (not x266) x267 x108)
+(or (not x263) (not x229))
+(or (not x264) (not x80))
+(or (not x230) (not x229))
+(or (not x262) (not x229) x236)
+(or (not x260) (not x80))
+(or (not x247) (not x229) x237)
+(or (not x258) (not x80))
+(or (not x265) (not x246) x213)
+(or (not x264) (not x261) x80)
+(or (not x232) (not x246) x223)
+(or x264 x261 x80)
+(or (not x263) (not x246) x208)
+(or (not x230) (not x246) x209)
+(or (not x262) (not x246))
+(or (not x259) x261 x80)
+(or (not x247) (not x246))
+(or (not x261) x259 x80)
+(or (not x255) (not x226))
+(or (not x260) (not x257) x80)
+(or (not x227) (not x226))
+(or (not x260) x259 x257 x80)
+(or (not x254) (not x226) x230)
+(or (not x257) x260 x259 x80)
+(or (not x225) (not x226) x229)
+(or (not x259) x260 x257 x80)
+(or (not x251) (not x226) x247)
+(or (not x258) x257 x80)
+(or (not x244) (not x226) x246)
+(or (not x257) x258 x80)
+(or (not x255) (not x224) x220)
+(or (not x256) (not x71))
+(or (not x227) (not x224) x218)
+(or (not x253) (not x71))
+(or (not x254) (not x224))
+(or (not x225) (not x224))
+(or (not x249) (not x71))
+(or (not x251) (not x224) x236)
+(or (not x256) (not x252) x71)
+(or (not x244) (not x224) x237)
+(or x256 x252 x71)
+(or (not x255) (not x243) x217)
+(or (not x253) (not x250) x71)
+(or (not x227) (not x243) x228)
+(or (not x253) x252 x250 x71)
+(or (not x254) (not x243) x208)
+(or (not x250) x253 x252 x71)
+(or (not x225) (not x243) x209)
+(or (not x252) x253 x250 x71)
+(or (not x251) (not x243))
+(or (not x244) (not x243))
+(or (not x242) (not x218))
+(or (not x248) x250 x71)
+(or (not x220) (not x218))
+(or (not x250) x248 x71)
+(or (not x239) (not x218) x232)
+(or (not x249) x248 x71)
+(or (not x216) (not x218) x231)
+(or (not x248) x249 x71)
+(or (not x238) (not x218) x247)
+(or (not x245) (not x60))
+(or (not x236) (not x218) x246)
+(or (not x241) (not x60))
+(or (not x242) (not x214) x227)
+(or (not x235) (not x60))
+(or (not x220) (not x214) x226)
+(or (not x239) (not x214))
+(or (not x245) (not x240) x60)
+(or (not x216) (not x214))
+(or x245 x240 x60)
+(or (not x238) (not x214) x244)
+(or (not x241) (not x234) x60)
+(or (not x236) (not x214) x243)
+(or (not x241) x240 x234 x60)
+(or (not x242) (not x237) x217)
+(or (not x234) x241 x240 x60)
+(or (not x220) (not x237) x228)
+(or (not x240) x241 x234 x60)
+(or (not x239) (not x237) x213)
+(or (not x235) (not x233) x60)
+(or (not x216) (not x237) x223)
+(or (not x235) x234 x233 x60)
+(or (not x238) (not x237))
+(or (not x233) x235 x234 x60)
+(or (not x236) (not x237))
+(or (not x234) x235 x233 x60)
+(or (not x219) (not x228))
+(or (not x217) (not x228))
+(or (not x233) x60)
+(or (not x215) (not x228) x232)
+(or (not x213) (not x228) x231)
+(or (not x222) (not x108))
+(or (not x210) (not x228) x230)
+(or (not x212) (not x108))
+(or (not x208) (not x228) x229)
+(or (not x207) (not x108))
+(or (not x219) (not x223) x227)
+(or (not x217) (not x223) x226)
+(or x221 x108)
+(or (not x215) (not x223))
+(or (not x222) (not x211) x108)
+(or (not x213) (not x223))
+(or (not x222) x221 x211 x108)
+(or (not x210) (not x223) x225)
+(or (not x211) x222 x221 x108)
+(or (not x208) (not x223) x224)
+(or (not x221) x222 x211 x108)
+(or (not x219) (not x209) x220)
+(or (not x212) (not x206) x108)
+(or (not x217) (not x209) x218)
+(or (not x212) x211 x206 x108)
+(or (not x215) (not x209) x216)
+(or (not x206) x212 x211 x108)
+(or (not x213) (not x209) x214)
+(or (not x211) x212 x206 x108)
+(or (not x210) (not x209))
+(or (not x207) x206 x108)
+(or (not x208) (not x209))
+(or (not x206) x207 x108)
+(or (not x203) (not x171))
+(or (not x205) (not x80))
+(or (not x172) (not x171))
+(or (not x200) (not x171) x159)
+(or (not x202) (not x80))
+(or (not x168) (not x171) x158)
+(or (not x199) (not x80))
+(or (not x197) (not x171) x180)
+(or (not x205) (not x204) x80)
+(or (not x186) (not x171) x179)
+(or x205 x204 x80)
+(or (not x203) (not x167) x152)
+(or (not x172) (not x167) x150)
+(or (not x200) (not x167))
+(or (not x201) x204 x80)
+(or (not x168) (not x167))
+(or (not x204) x201 x80)
+(or (not x197) (not x167) x173)
+(or (not x202) (not x198) x80)
+(or (not x186) (not x167) x174)
+(or (not x202) x201 x198 x80)
+(or (not x203) (not x185) x149)
+(or (not x198) x202 x201 x80)
+(or (not x172) (not x185) x157)
+(or (not x201) x202 x198 x80)
+(or (not x200) (not x185) x145)
+(or (not x199) x198 x80)
+(or (not x168) (not x185) x146)
+(or (not x198) x199 x80)
+(or (not x197) (not x185))
+(or (not x196) (not x71))
+(or (not x186) (not x185))
+(or (not x195) (not x71))
+(or (not x192) (not x164))
+(or (not x165) (not x164))
+(or (not x191) (not x71))
+(or (not x189) (not x164) x168)
+(or (not x196) (not x194) x71)
+(or (not x159) (not x164) x167)
+(or x196 x194 x71)
+(or (not x188) (not x164) x186)
+(or (not x195) (not x193) x71)
+(or (not x180) (not x164) x185)
+(or (not x195) x194 x193 x71)
+(or (not x192) (not x158) x156)
+(or (not x193) x195 x194 x71)
+(or (not x165) (not x158) x154)
+(or (not x194) x195 x193 x71)
+(or (not x189) (not x158))
+(or (not x159) (not x158))
+(or (not x188) (not x158) x173)
+(or (not x190) x193 x71)
+(or (not x180) (not x158) x174)
+(or (not x193) x190 x71)
+(or (not x192) (not x179) x153)
+(or (not x191) x190 x71)
+(or (not x165) (not x179) x166)
+(or (not x190) x191 x71)
+(or (not x189) (not x179) x145)
+(or (not x187) (not x60))
+(or (not x159) (not x179) x146)
+(or (not x184) (not x60))
+(or (not x188) (not x179))
+(or (not x182) (not x60))
+(or (not x180) (not x179))
+(or (not x177) (not x154))
+(or (not x187) (not x183) x60)
+(or (not x156) (not x154))
+(or x187 x183 x60)
+(or (not x176) (not x154) x172)
+(or (not x184) (not x181) x60)
+(or (not x152) (not x154) x171)
+(or (not x184) x183 x181 x60)
+(or (not x175) (not x154) x186)
+(or (not x181) x184 x183 x60)
+(or (not x173) (not x154) x185)
+(or (not x183) x184 x181 x60)
+(or (not x177) (not x150) x165)
+(or (not x182) (not x178) x60)
+(or (not x156) (not x150) x164)
+(or (not x182) x181 x178 x60)
+(or (not x176) (not x150))
+(or (not x178) x182 x181 x60)
+(or (not x152) (not x150))
+(or (not x181) x182 x178 x60)
+(or (not x175) (not x150) x180)
+(or (not x173) (not x150) x179)
+(or (not x178) x60)
+(or (not x177) (not x174) x153)
+(or (not x156) (not x174) x166)
+(or (not x170) (not x108))
+(or (not x176) (not x174) x149)
+(or (not x163) (not x108))
+(or (not x152) (not x174) x157)
+(or (not x161) (not x108))
+(or (not x175) (not x174))
+(or (not x173) (not x174))
+(or x169 x108)
+(or (not x155) (not x166))
+(or (not x170) (not x162) x108)
+(or (not x153) (not x166))
+(or (not x170) x169 x162 x108)
+(or (not x151) (not x166) x172)
+(or (not x162) x170 x169 x108)
+(or (not x149) (not x166) x171)
+(or (not x169) x170 x162 x108)
+(or (not x147) (not x166) x168)
+(or (not x163) (not x160) x108)
+(or (not x145) (not x166) x167)
+(or (not x163) x162 x160 x108)
+(or (not x155) (not x157) x165)
+(or (not x160) x163 x162 x108)
+(or (not x153) (not x157) x164)
+(or (not x162) x163 x160 x108)
+(or (not x151) (not x157))
+(or (not x161) x160 x108)
+(or (not x149) (not x157))
+(or (not x160) x161 x108)
+(or (not x147) (not x157) x159)
+(or (not x148) (not x80))
+(or (not x145) (not x157) x158)
+(or (not x155) (not x146) x156)
+(or (not x143) (not x80))
+(or (not x153) (not x146) x154)
+(or (not x141) (not x80))
+(or (not x151) (not x146) x152)
+(or (not x148) (not x144) x80)
+(or (not x149) (not x146) x150)
+(or x148 x144 x80)
+(or (not x147) (not x146))
+(or (not x145) (not x146))
+(or (not x139) (not x104))
+(or (not x142) x144 x80)
+(or (not x105) (not x104))
+(or (not x144) x142 x80)
+(or (not x137) (not x104) x97)
+(or (not x143) (not x140) x80)
+(or (not x103) (not x104) x96)
+(or (not x143) x142 x140 x80)
+(or (not x136) (not x104) x119)
+(or (not x140) x143 x142 x80)
+(or (not x121) (not x104) x118)
+(or (not x142) x143 x140 x80)
+(or (not x139) (not x102) x89)
+(or (not x141) x140 x80)
+(or (not x105) (not x102) x87)
+(or (not x140) x141 x80)
+(or (not x137) (not x102))
+(or (not x138) (not x71))
+(or (not x103) (not x102))
+(or (not x135) (not x71))
+(or (not x136) (not x102) x111)
+(or (not x121) (not x102) x112)
+(or (not x132) (not x71))
+(or (not x139) (not x120) x86)
+(or (not x138) (not x134) x71)
+(or (not x105) (not x120) x95)
+(or x138 x134 x71)
+(or (not x137) (not x120) x81)
+(or (not x135) (not x133) x71)
+(or (not x103) (not x120) x82)
+(or (not x135) x134 x133 x71)
+(or (not x136) (not x120))
+(or (not x133) x135 x134 x71)
+(or (not x121) (not x120))
+(or (not x134) x135 x133 x71)
+(or (not x129) (not x99))
+(or (not x100) (not x99))
+(or (not x128) (not x99) x103)
+(or (not x131) x133 x71)
+(or (not x97) (not x99) x102)
+(or (not x133) x131 x71)
+(or (not x125) (not x99) x121)
+(or (not x132) x131 x71)
+(or (not x119) (not x99) x120)
+(or (not x131) x132 x71)
+(or (not x129) (not x96) x93)
+(or (not x130) (not x60))
+(or (not x100) (not x96) x91)
+(or (not x127) (not x60))
+(or (not x128) (not x96))
+(or (not x124) (not x60))
+(or (not x97) (not x96))
+(or (not x125) (not x96) x111)
+(or (not x130) (not x126) x60)
+(or (not x119) (not x96) x112)
+(or x130 x126 x60)
+(or (not x129) (not x118) x90)
+(or (not x127) (not x123) x60)
+(or (not x100) (not x118) x101)
+(or (not x127) x126 x123 x60)
+(or (not x128) (not x118) x81)
+(or (not x123) x127 x126 x60)
+(or (not x97) (not x118) x82)
+(or (not x126) x127 x123 x60)
+(or (not x125) (not x118))
+(or (not x124) (not x122) x60)
+(or (not x119) (not x118))
+(or (not x124) x123 x122 x60)
+(or (not x117) (not x91))
+(or (not x122) x124 x123 x60)
+(or (not x93) (not x91))
+(or (not x123) x124 x122 x60)
+(or (not x114) (not x91) x105)
+(or (not x89) (not x91) x104)
+(or (not x122) x60)
+(or (not x113) (not x91) x121)
+(or (not x111) (not x91) x120)
+(or (not x116) (not x108))
+(or (not x117) (not x87) x100)
+(or (not x110) (not x108))
+(or (not x93) (not x87) x99)
+(or (not x107) (not x108))
+(or (not x114) (not x87))
+(or (not x89) (not x87))
+(or x108 x115)
+(or (not x113) (not x87) x119)
+(or (not x116) (not x109) x108)
+(or (not x111) (not x87) x118)
+(or (not x116) x108 x115 x109)
+(or (not x117) (not x112) x90)
+(or (not x109) x116 x108 x115)
+(or (not x93) (not x112) x101)
+(or (not x115) x116 x108 x109)
+(or (not x114) (not x112) x86)
+(or (not x110) (not x106) x108)
+(or (not x89) (not x112) x95)
+(or (not x110) x108 x109 x106)
+(or (not x113) (not x112))
+(or (not x106) x110 x108 x109)
+(or (not x111) (not x112))
+(or (not x109) x110 x108 x106)
+(or (not x92) (not x101))
+(or (not x107) x108 x106)
+(or (not x90) (not x101))
+(or (not x106) x107 x108)
+(or (not x88) (not x101) x105)
+(or (not x98) (not x80))
+(or (not x86) (not x101) x104)
+(or (not x83) (not x101) x103)
+(or (not x85) (not x80))
+(or (not x81) (not x101) x102)
+(or (not x79) (not x80))
+(or (not x92) (not x95) x100)
+(or (not x98) (not x94) x80)
+(or (not x90) (not x95) x99)
+(or x98 x80 x94)
+(or (not x88) (not x95))
+(or (not x86) (not x95))
+(or (not x83) (not x95) x97)
+(or (not x84) x80 x94)
+(or (not x81) (not x95) x96)
+(or (not x94) x80 x84)
+(or (not x92) (not x82) x93)
+(or (not x85) (not x78) x80)
+(or (not x90) (not x82) x91)
+(or (not x85) x80 x84 x78)
+(or (not x88) (not x82) x89)
+(or (not x78) x85 x80 x84)
+(or (not x86) (not x82) x87)
+(or (not x84) x85 x80 x78)
+(or (not x83) (not x82))
+(or (not x79) x80 x78)
+(or (not x81) (not x82))
+(or (not x78) x79 x80)
+(or (not x74) (not x21))
+(or (not x77) (not x71))
+(or (not x26) (not x21))
+(or (not x76) (not x71))
+(or (not x72) (not x21) x56)
+(or (not x16) (not x21) x64)
+(or (not x70) (not x71))
+(or (not x68) (not x21) x44)
+(or (not x77) (not x75) x71)
+(or (not x50) (not x21) x43)
+(or x77 x71 x75)
+(or (not x74) (not x11) x36)
+(or (not x76) (not x73) x71)
+(or (not x26) (not x11) x42)
+(or (not x76) x71 x75 x73)
+(or (not x72) (not x11))
+(or (not x73) x76 x71 x75)
+(or (not x16) (not x11))
+(or (not x75) x76 x71 x73)
+(or (not x68) (not x11) x31)
+(or (not x50) (not x11) x32)
+(or (not x74) (not x49) x20)
+(or (not x69) x71 x73)
+(or (not x26) (not x49) x2)
+(or (not x73) x71 x69)
+(or (not x72) (not x49) x9)
+(or (not x70) x71 x69)
+(or (not x16) (not x49) x57)
+(or (not x69) x70 x71)
+(or (not x68) (not x49))
+(or (not x67) (not x60))
+(or (not x50) (not x49))
+(or (not x66) (not x60))
+(or (not x61) (not x3))
+(or (not x63) (not x60))
+(or (not x5) (not x3))
+(or (not x58) (not x3) x16)
+(or (not x67) (not x65) x60)
+(or (not x56) (not x3) x11)
+(or x67 x60 x65)
+(or (not x54) (not x3) x50)
+(or (not x66) (not x62) x60)
+(or (not x44) (not x3) x49)
+(or (not x66) x60 x65 x62)
+(or (not x61) (not x64) x39)
+(or (not x62) x66 x60 x65)
+(or (not x5) (not x64) x48)
+(or (not x65) x66 x60 x62)
+(or (not x58) (not x64))
+(or (not x63) (not x59) x60)
+(or (not x56) (not x64))
+(or (not x63) x60 x62 x59)
+(or (not x54) (not x64) x31)
+(or (not x59) x63 x60 x62)
+(or (not x44) (not x64) x32)
+(or (not x62) x63 x60 x59)
+(or (not x61) (not x43) x1)
+(or (not x5) (not x43) x10)
+(or (not x59) x60)
+(or (not x58) (not x43) x9)
+(or (not x34) x55)
+(or (not x56) (not x43) x57)
+(or (not x55) x34)
+(or (not x54) (not x43))
+(or (not x34) x53)
+(or (not x44) (not x43))
+(or (not x53) x34)
+(or (not x40) (not x48))
+(or (not x34) x52)
+(or (not x39) (not x48))
+(or (not x52) x34)
+(or (not x37) (not x48) x26)
+(or x51 x34)
+(or (not x36) (not x48) x21)
+(or (not x51) (not x34))
+(or (not x33) (not x48) x50)
+(or (not x29) x47)
+(or (not x31) (not x48) x49)
+(or (not x47) x29)
+(or (not x40) (not x42) x5)
+(or (not x29) x46)
+(or (not x39) (not x42) x3)
+(or (not x46) x29)
+(or (not x37) (not x42))
+(or x45 x34)
+(or (not x36) (not x42))
+(or (not x45) (not x34))
+(or (not x33) (not x42) x44)
+(or x41 x29)
+(or (not x31) (not x42) x43)
+(or (not x41) (not x29))
+(or (not x40) (not x32) x1)
+(or (not x27) x38)
+(or (not x39) (not x32) x10)
+(or (not x38) x27)
+(or (not x37) (not x32) x20)
+(or x34 x35)
+(or (not x36) (not x32) x2)
+(or (not x34) (not x35))
+(or (not x33) (not x32))
+(or x29 x30)
+(or (not x31) (not x32))
+(or (not x29) (not x30))
+(or (not x4) (not x10))
+(or x27 x28)
+(or (not x1) (not x10))
+(or (not x27) (not x28))
+(or (not x25) (not x10) x26)
+(or x22 x23 x24)
+(or (not x20) (not x10) x21)
+(or x17 x18 x19)
+(or (not x15) (not x10) x16)
+(or x12 x13 x14)
+(or (not x9) (not x10) x11)
+(or x6 x7 x8)
+(or (not x4) (not x2) x5)
+(or (not x1) (not x2) x3)
+))
diff --git a/test/regress/regress2/fuzz_2.smt b/test/regress/regress2/fuzz_2.smt
new file mode 100644
index 0000000..1dc2f61
--- /dev/null
+++ b/test/regress/regress2/fuzz_2.smt
@@ -0,0 +1,699 @@
+(benchmark fuzzsmt
+:logic QF_LRA
+:status sat
+:extrafuns ((v0 Real))
+:extrafuns ((v1 Real))
+:extrafuns ((v2 Real))
+:formula
+(let (?e3 3)
+(let (?e4 0)
+(let (?e5 (- v0 v1))
+(let (?e6 (/ ?e4 (~ ?e3)))
+(let (?e7 (/ ?e3 ?e3))
+(let (?e8 (+ v0 v1))
+(let (?e9 (* v0 (~ ?e4)))
+(let (?e10 (- ?e8 ?e8))
+(let (?e11 (/ ?e4 ?e3))
+(let (?e12 (+ ?e7 v0))
+(let (?e13 (/ ?e3 ?e3))
+(let (?e14 (+ ?e8 ?e6))
+(let (?e15 (+ ?e12 ?e13))
+(let (?e16 (+ ?e12 ?e12))
+(let (?e17 (/ ?e3 ?e3))
+(let (?e18 (+ ?e16 ?e9))
+(let (?e19 (- v2 ?e6))
+(flet ($e20 (distinct v0 ?e5))
+(flet ($e21 (= ?e11 ?e15))
+(flet ($e22 (= ?e11 v2))
+(flet ($e23 (distinct ?e14 ?e7))
+(flet ($e24 (<= v2 ?e7))
+(flet ($e25 (> v0 v1))
+(flet ($e26 (distinct v1 ?e17))
+(flet ($e27 (> ?e8 ?e18))
+(flet ($e28 (= ?e6 ?e18))
+(flet ($e29 (<= ?e19 ?e14))
+(flet ($e30 (>= ?e10 ?e8))
+(flet ($e31 (<= ?e11 ?e6))
+(flet ($e32 (> ?e19 ?e7))
+(flet ($e33 (<= ?e10 v2))
+(flet ($e34 (= v0 ?e18))
+(flet ($e35 (< ?e10 ?e8))
+(flet ($e36 (< ?e11 ?e16))
+(flet ($e37 (< ?e6 ?e11))
+(flet ($e38 (distinct ?e10 ?e7))
+(flet ($e39 (>= ?e8 ?e14))
+(flet ($e40 (= ?e8 v2))
+(flet ($e41 (distinct v0 v1))
+(flet ($e42 (< ?e17 v0))
+(flet ($e43 (>= ?e8 ?e17))
+(flet ($e44 (> ?e10 ?e11))
+(flet ($e45 (<= ?e19 ?e13))
+(flet ($e46 (>= ?e19 ?e6))
+(flet ($e47 (< v2 ?e9))
+(flet ($e48 (< ?e13 ?e13))
+(flet ($e49 (>= v2 ?e8))
+(flet ($e50 (<= v0 ?e9))
+(flet ($e51 (<= v1 ?e15))
+(flet ($e52 (< ?e11 ?e9))
+(flet ($e53 (> v0 v1))
+(flet ($e54 (< ?e18 ?e10))
+(flet ($e55 (distinct ?e18 ?e16))
+(flet ($e56 (< ?e6 ?e16))
+(flet ($e57 (<= v0 ?e19))
+(flet ($e58 (<= ?e18 ?e12))
+(let (?e59 (ite $e31 v1 ?e7))
+(let (?e60 (ite $e47 ?e9 ?e7))
+(let (?e61 (ite $e25 ?e5 ?e18))
+(let (?e62 (ite $e33 ?e11 ?e61))
+(let (?e63 (ite $e23 ?e14 ?e59))
+(let (?e64 (ite $e22 ?e8 ?e17))
+(let (?e65 (ite $e56 ?e12 ?e8))
+(let (?e66 (ite $e55 ?e12 v2))
+(let (?e67 (ite $e28 ?e16 ?e62))
+(let (?e68 (ite $e35 ?e19 ?e60))
+(let (?e69 (ite $e43 ?e15 ?e17))
+(let (?e70 (ite $e25 ?e13 ?e5))
+(let (?e71 (ite $e43 v0 ?e18))
+(let (?e72 (ite $e33 ?e10 ?e9))
+(let (?e73 (ite $e31 ?e6 ?e6))
+(let (?e74 (ite $e49 ?e17 ?e64))
+(let (?e75 (ite $e57 ?e13 ?e64))
+(let (?e76 (ite $e54 v0 ?e9))
+(let (?e77 (ite $e27 ?e75 ?e16))
+(let (?e78 (ite $e36 ?e8 ?e8))
+(let (?e79 (ite $e58 ?e17 ?e10))
+(let (?e80 (ite $e41 ?e11 v2))
+(let (?e81 (ite $e36 ?e67 ?e62))
+(let (?e82 (ite $e45 ?e74 ?e77))
+(let (?e83 (ite $e20 ?e6 v2))
+(let (?e84 (ite $e45 ?e73 ?e15))
+(let (?e85 (ite $e25 ?e7 ?e66))
+(let (?e86 (ite $e50 v1 ?e18))
+(let (?e87 (ite $e27 v1 ?e86))
+(let (?e88 (ite $e45 ?e70 ?e71))
+(let (?e89 (ite $e31 ?e84 ?e13))
+(let (?e90 (ite $e44 ?e60 ?e8))
+(let (?e91 (ite $e32 ?e61 ?e62))
+(let (?e92 (ite $e22 ?e72 ?e75))
+(let (?e93 (ite $e51 ?e14 ?e16))
+(let (?e94 (ite $e20 ?e10 ?e67))
+(let (?e95 (ite $e39 ?e14 ?e10))
+(let (?e96 (ite $e50 ?e74 ?e7))
+(let (?e97 (ite $e28 ?e94 ?e68))
+(let (?e98 (ite $e34 ?e12 ?e92))
+(let (?e99 (ite $e52 v0 ?e65))
+(let (?e100 (ite $e53 ?e60 ?e19))
+(let (?e101 (ite $e26 ?e96 ?e74))
+(let (?e102 (ite $e40 ?e10 ?e83))
+(let (?e103 (ite $e42 ?e63 ?e17))
+(let (?e104 (ite $e41 ?e75 ?e93))
+(let (?e105 (ite $e30 ?e97 ?e14))
+(let (?e106 (ite $e23 ?e73 ?e98))
+(let (?e107 (ite $e37 ?e70 v2))
+(let (?e108 (ite $e48 ?e85 ?e90))
+(let (?e109 (ite $e46 v0 ?e85))
+(let (?e110 (ite $e38 ?e71 ?e108))
+(let (?e111 (ite $e21 ?e90 ?e65))
+(let (?e112 (ite $e29 ?e10 ?e13))
+(let (?e113 (ite $e33 ?e79 ?e76))
+(let (?e114 (ite $e36 ?e106 ?e95))
+(let (?e115 (ite $e24 ?e113 ?e91))
+(flet ($e116 (<= ?e114 ?e76))
+(flet ($e117 (< ?e73 ?e88))
+(flet ($e118 (<= ?e63 v2))
+(flet ($e119 (< ?e16 ?e65))
+(flet ($e120 (= ?e61 ?e17))
+(flet ($e121 (distinct ?e97 ?e111))
+(flet ($e122 (< ?e109 ?e65))
+(flet ($e123 (>= ?e100 ?e13))
+(flet ($e124 (distinct ?e8 ?e62))
+(flet ($e125 (< ?e95 ?e99))
+(flet ($e126 (> ?e89 ?e94))
+(flet ($e127 (<= ?e67 ?e18))
+(flet ($e128 (= ?e89 ?e65))
+(flet ($e129 (> ?e102 ?e82))
+(flet ($e130 (> ?e91 ?e9))
+(flet ($e131 (> ?e103 ?e66))
+(flet ($e132 (> ?e101 ?e90))
+(flet ($e133 (>= ?e86 ?e12))
+(flet ($e134 (> ?e9 ?e100))
+(flet ($e135 (<= ?e64 ?e82))
+(flet ($e136 (distinct ?e16 ?e98))
+(flet ($e137 (>= ?e73 ?e71))
+(flet ($e138 (> ?e84 ?e73))
+(flet ($e139 (> ?e14 ?e100))
+(flet ($e140 (>= ?e72 ?e76))
+(flet ($e141 (<= ?e83 ?e99))
+(flet ($e142 (< ?e105 ?e11))
+(flet ($e143 (> ?e109 ?e70))
+(flet ($e144 (<= ?e75 ?e105))
+(flet ($e145 (> ?e77 ?e109))
+(flet ($e146 (= v1 ?e67))
+(flet ($e147 (>= ?e64 ?e103))
+(flet ($e148 (< ?e13 ?e103))
+(flet ($e149 (> ?e99 ?e92))
+(flet ($e150 (>= ?e113 ?e66))
+(flet ($e151 (<= ?e6 ?e84))
+(flet ($e152 (>= ?e60 ?e61))
+(flet ($e153 (= ?e63 ?e14))
+(flet ($e154 (> ?e83 ?e18))
+(flet ($e155 (distinct ?e16 ?e83))
+(flet ($e156 (= ?e92 ?e62))
+(flet ($e157 (>= ?e76 ?e81))
+(flet ($e158 (< ?e97 ?e12))
+(flet ($e159 (< ?e106 ?e72))
+(flet ($e160 (distinct ?e19 ?e109))
+(flet ($e161 (> ?e85 ?e6))
+(flet ($e162 (< ?e65 ?e71))
+(flet ($e163 (<= ?e8 ?e112))
+(flet ($e164 (< v0 ?e83))
+(flet ($e165 (= ?e106 ?e96))
+(flet ($e166 (> ?e81 ?e63))
+(flet ($e167 (< ?e19 ?e86))
+(flet ($e168 (< v2 ?e86))
+(flet ($e169 (>= ?e82 ?e81))
+(flet ($e170 (distinct ?e88 ?e104))
+(flet ($e171 (<= ?e83 ?e11))
+(flet ($e172 (distinct ?e67 ?e93))
+(flet ($e173 (>= ?e65 ?e97))
+(flet ($e174 (<= ?e115 ?e104))
+(flet ($e175 (> ?e106 ?e89))
+(flet ($e176 (<= ?e93 ?e110))
+(flet ($e177 (>= ?e67 ?e112))
+(flet ($e178 (distinct ?e65 ?e110))
+(flet ($e179 (>= ?e81 ?e96))
+(flet ($e180 (>= ?e108 ?e89))
+(flet ($e181 (> ?e7 v2))
+(flet ($e182 (>= ?e105 ?e89))
+(flet ($e183 (<= ?e59 ?e73))
+(flet ($e184 (distinct ?e15 ?e83))
+(flet ($e185 (< ?e105 ?e110))
+(flet ($e186 (< ?e66 ?e16))
+(flet ($e187 (= ?e65 ?e114))
+(flet ($e188 (= ?e84 ?e65))
+(flet ($e189 (<= ?e103 ?e77))
+(flet ($e190 (<= ?e7 ?e86))
+(flet ($e191 (<= ?e114 ?e115))
+(flet ($e192 (distinct ?e104 ?e85))
+(flet ($e193 (<= ?e114 ?e103))
+(flet ($e194 (= ?e103 ?e78))
+(flet ($e195 (= ?e85 ?e13))
+(flet ($e196 (>= ?e77 ?e68))
+(flet ($e197 (> ?e103 ?e98))
+(flet ($e198 (< ?e90 ?e67))
+(flet ($e199 (distinct ?e110 ?e87))
+(flet ($e200 (< ?e70 ?e115))
+(flet ($e201 (<= ?e15 ?e65))
+(flet ($e202 (< ?e90 ?e110))
+(flet ($e203 (> ?e85 ?e65))
+(flet ($e204 (> ?e64 ?e98))
+(flet ($e205 (>= ?e68 v1))
+(flet ($e206 (< ?e13 ?e111))
+(flet ($e207 (>= ?e11 ?e69))
+(flet ($e208 (distinct ?e68 ?e66))
+(flet ($e209 (= ?e92 ?e109))
+(flet ($e210 (distinct ?e76 ?e13))
+(flet ($e211 (> ?e83 ?e71))
+(flet ($e212 (<= ?e86 ?e103))
+(flet ($e213 (> ?e14 ?e112))
+(flet ($e214 (> ?e97 ?e13))
+(flet ($e215 (>= ?e60 ?e13))
+(flet ($e216 (> ?e101 ?e80))
+(flet ($e217 (<= ?e103 ?e84))
+(flet ($e218 (= ?e71 ?e6))
+(flet ($e219 (>= ?e86 ?e75))
+(flet ($e220 (<= ?e110 ?e106))
+(flet ($e221 (< ?e84 ?e88))
+(flet ($e222 (distinct ?e64 ?e96))
+(flet ($e223 (<= ?e104 ?e70))
+(flet ($e224 (<= ?e82 v0))
+(flet ($e225 (<= ?e70 ?e9))
+(flet ($e226 (> ?e115 ?e94))
+(flet ($e227 (<= ?e14 ?e66))
+(flet ($e228 (= ?e112 ?e108))
+(flet ($e229 (<= ?e108 ?e86))
+(flet ($e230 (distinct ?e114 ?e70))
+(flet ($e231 (>= ?e75 ?e60))
+(flet ($e232 (> ?e98 ?e77))
+(flet ($e233 (< ?e91 ?e15))
+(flet ($e234 (<= ?e111 ?e69))
+(flet ($e235 (> ?e82 ?e80))
+(flet ($e236 (distinct ?e63 ?e17))
+(flet ($e237 (= ?e87 v1))
+(flet ($e238 (= ?e62 ?e88))
+(flet ($e239 (>= ?e86 ?e85))
+(flet ($e240 (< ?e90 ?e90))
+(flet ($e241 (> ?e96 ?e18))
+(flet ($e242 (>= ?e13 ?e112))
+(flet ($e243 (<= ?e93 ?e115))
+(flet ($e244 (= ?e18 ?e79))
+(flet ($e245 (distinct ?e81 ?e92))
+(flet ($e246 (distinct ?e103 ?e79))
+(flet ($e247 (> ?e69 ?e77))
+(flet ($e248 (= ?e61 ?e18))
+(flet ($e249 (distinct v1 ?e13))
+(flet ($e250 (> ?e91 ?e93))
+(flet ($e251 (>= ?e70 ?e97))
+(flet ($e252 (< ?e74 ?e74))
+(flet ($e253 (<= ?e80 ?e90))
+(flet ($e254 (= ?e80 ?e81))
+(flet ($e255 (< ?e98 ?e13))
+(flet ($e256 (distinct v0 v1))
+(flet ($e257 (= ?e84 ?e107))
+(flet ($e258 (<= ?e62 ?e103))
+(flet ($e259 (< ?e6 ?e93))
+(flet ($e260 (< ?e66 ?e98))
+(flet ($e261 (= ?e111 ?e98))
+(flet ($e262 (<= ?e59 ?e12))
+(flet ($e263 (> ?e99 ?e81))
+(flet ($e264 (= ?e14 ?e75))
+(flet ($e265 (< ?e115 ?e92))
+(flet ($e266 (distinct ?e89 ?e66))
+(flet ($e267 (<= ?e18 ?e6))
+(flet ($e268 (>= ?e77 ?e83))
+(flet ($e269 (>= ?e97 ?e114))
+(flet ($e270 (= ?e112 ?e6))
+(flet ($e271 (> ?e99 ?e97))
+(flet ($e272 (>= ?e80 ?e93))
+(flet ($e273 (= ?e65 ?e100))
+(flet ($e274 (= ?e18 ?e114))
+(flet ($e275 (>= ?e85 ?e14))
+(flet ($e276 (<= ?e92 ?e85))
+(flet ($e277 (>= ?e66 ?e104))
+(flet ($e278 (distinct ?e64 ?e82))
+(flet ($e279 (> ?e93 ?e75))
+(flet ($e280 (<= ?e111 ?e91))
+(flet ($e281 (distinct ?e80 ?e82))
+(flet ($e282 (<= ?e72 ?e62))
+(flet ($e283 (> ?e5 ?e85))
+(flet ($e284 (<= ?e7 ?e94))
+(flet ($e285 (<= ?e89 ?e15))
+(flet ($e286 (distinct ?e85 ?e74))
+(flet ($e287 (= ?e92 ?e94))
+(flet ($e288 (distinct ?e78 ?e19))
+(flet ($e289 (= ?e73 ?e113))
+(flet ($e290 (< ?e109 ?e19))
+(flet ($e291 (distinct ?e86 ?e93))
+(flet ($e292 (> v0 ?e79))
+(flet ($e293 (>= ?e15 ?e62))
+(flet ($e294 (distinct ?e93 ?e70))
+(flet ($e295 (> ?e89 ?e108))
+(flet ($e296 (= ?e16 ?e97))
+(flet ($e297 (< ?e8 ?e84))
+(flet ($e298 (> ?e102 ?e77))
+(flet ($e299 (distinct v0 ?e79))
+(flet ($e300 (<= ?e5 ?e6))
+(flet ($e301 (<= ?e106 v1))
+(flet ($e302 (distinct ?e69 ?e88))
+(flet ($e303 (= ?e92 ?e101))
+(flet ($e304 (>= ?e67 ?e71))
+(flet ($e305 (> ?e74 ?e11))
+(flet ($e306 (= ?e93 ?e8))
+(flet ($e307 (distinct ?e98 ?e106))
+(flet ($e308 (<= ?e84 ?e104))
+(flet ($e309 (distinct ?e114 ?e74))
+(flet ($e310 (distinct ?e104 ?e6))
+(flet ($e311 (< v2 ?e15))
+(flet ($e312 (<= ?e79 ?e11))
+(flet ($e313 (= ?e89 ?e113))
+(flet ($e314 (> ?e86 ?e103))
+(flet ($e315 (< ?e62 ?e70))
+(flet ($e316 (>= ?e11 ?e92))
+(flet ($e317 (= ?e5 ?e99))
+(flet ($e318 (< ?e77 ?e101))
+(flet ($e319 (<= ?e111 ?e95))
+(flet ($e320 (>= ?e9 ?e64))
+(flet ($e321 (> ?e97 ?e60))
+(flet ($e322 (= v2 ?e92))
+(flet ($e323 (>= ?e74 ?e96))
+(flet ($e324 (> ?e88 ?e114))
+(flet ($e325 (< ?e18 ?e108))
+(flet ($e326 (= ?e17 ?e86))
+(flet ($e327 (= ?e64 ?e93))
+(flet ($e328 (> ?e68 ?e109))
+(flet ($e329 (distinct ?e16 ?e6))
+(flet ($e330 (distinct ?e82 ?e114))
+(flet ($e331 (< ?e109 ?e62))
+(flet ($e332 (<= ?e13 ?e108))
+(flet ($e333 (= ?e88 ?e78))
+(flet ($e334 (>= v2 ?e86))
+(flet ($e335 (>= ?e109 ?e11))
+(flet ($e336 (distinct ?e70 ?e86))
+(flet ($e337 (> ?e88 ?e96))
+(flet ($e338 (< ?e80 ?e15))
+(flet ($e339 (< ?e70 ?e111))
+(flet ($e340 (= ?e96 ?e90))
+(flet ($e341 (= ?e15 ?e18))
+(flet ($e342 (distinct ?e11 ?e97))
+(flet ($e343 (<= ?e66 ?e86))
+(flet ($e344 (> ?e90 ?e70))
+(flet ($e345 (> ?e83 ?e75))
+(flet ($e346 (<= ?e95 ?e105))
+(flet ($e347 (distinct ?e68 ?e13))
+(flet ($e348 (distinct ?e66 ?e59))
+(flet ($e349 (<= ?e15 ?e69))
+(flet ($e350 (> ?e89 ?e99))
+(flet ($e351 (distinct ?e79 ?e19))
+(flet ($e352 (>= ?e110 ?e109))
+(flet ($e353 (<= ?e96 ?e88))
+(flet ($e354 (> v2 ?e76))
+(flet ($e355 (distinct ?e92 ?e16))
+(flet ($e356 (<= ?e80 ?e115))
+(flet ($e357 (= ?e6 ?e89))
+(flet ($e358 (> ?e7 ?e16))
+(flet ($e359 (< ?e77 ?e14))
+(flet ($e360 (< ?e6 ?e98))
+(flet ($e361 (>= ?e110 ?e71))
+(flet ($e362 (>= ?e62 ?e113))
+(flet ($e363 (= ?e82 ?e64))
+(flet ($e364 (distinct ?e92 ?e97))
+(flet ($e365 (<= ?e87 ?e108))
+(flet ($e366 (= ?e113 ?e15))
+(flet ($e367 (<= ?e19 ?e94))
+(flet ($e368 (distinct ?e102 ?e9))
+(flet ($e369 (> ?e91 ?e74))
+(flet ($e370 (> ?e102 ?e15))
+(flet ($e371 (> ?e80 ?e8))
+(flet ($e372 (distinct ?e113 ?e104))
+(flet ($e373 (distinct ?e9 ?e15))
+(flet ($e374 (<= ?e106 ?e113))
+(flet ($e375 (<= ?e8 ?e88))
+(flet ($e376 (<= v1 ?e73))
+(flet ($e377 (distinct v1 ?e10))
+(flet ($e378 (implies $e356 $e299))
+(flet ($e379 (implies $e31 $e251))
+(flet ($e380 (if_then_else $e166 $e262 $e231))
+(flet ($e381 (or $e193 $e188))
+(flet ($e382 (xor $e136 $e288))
+(flet ($e383 (if_then_else $e367 $e234 $e234))
+(flet ($e384 (and $e20 $e200))
+(flet ($e385 (and $e209 $e272))
+(flet ($e386 (implies $e378 $e32))
+(flet ($e387 (if_then_else $e363 $e203 $e351))
+(flet ($e388 (if_then_else $e274 $e375 $e331))
+(flet ($e389 (iff $e257 $e326))
+(flet ($e390 (iff $e353 $e235))
+(flet ($e391 (xor $e298 $e172))
+(flet ($e392 (or $e264 $e321))
+(flet ($e393 (not $e122))
+(flet ($e394 (and $e354 $e322))
+(flet ($e395 (and $e263 $e308))
+(flet ($e396 (iff $e328 $e45))
+(flet ($e397 (if_then_else $e197 $e26 $e390))
+(flet ($e398 (not $e312))
+(flet ($e399 (if_then_else $e301 $e310 $e317))
+(flet ($e400 (xor $e355 $e186))
+(flet ($e401 (implies $e324 $e307))
+(flet ($e402 (not $e246))
+(flet ($e403 (if_then_else $e35 $e171 $e303))
+(flet ($e404 (or $e27 $e339))
+(flet ($e405 (implies $e55 $e372))
+(flet ($e406 (not $e161))
+(flet ($e407 (xor $e207 $e207))
+(flet ($e408 (or $e117 $e327))
+(flet ($e409 (and $e259 $e213))
+(flet ($e410 (or $e385 $e238))
+(flet ($e411 (if_then_else $e147 $e223 $e229))
+(flet ($e412 (not $e252))
+(flet ($e413 (implies $e366 $e347))
+(flet ($e414 (and $e281 $e205))
+(flet ($e415 (and $e151 $e318))
+(flet ($e416 (implies $e348 $e256))
+(flet ($e417 (iff $e399 $e157))
+(flet ($e418 (not $e297))
+(flet ($e419 (and $e243 $e417))
+(flet ($e420 (iff $e280 $e30))
+(flet ($e421 (and $e44 $e170))
+(flet ($e422 (and $e58 $e362))
+(flet ($e423 (implies $e42 $e123))
+(flet ($e424 (implies $e50 $e380))
+(flet ($e425 (iff $e233 $e341))
+(flet ($e426 (not $e162))
+(flet ($e427 (or $e199 $e334))
+(flet ($e428 (if_then_else $e195 $e325 $e391))
+(flet ($e429 (xor $e357 $e53))
+(flet ($e430 (xor $e168 $e418))
+(flet ($e431 (not $e428))
+(flet ($e432 (or $e116 $e226))
+(flet ($e433 (iff $e176 $e289))
+(flet ($e434 (and $e285 $e47))
+(flet ($e435 (and $e121 $e342))
+(flet ($e436 (and $e345 $e398))
+(flet ($e437 (not $e338))
+(flet ($e438 (xor $e155 $e383))
+(flet ($e439 (and $e242 $e140))
+(flet ($e440 (if_then_else $e192 $e202 $e152))
+(flet ($e441 (xor $e125 $e336))
+(flet ($e442 (iff $e254 $e156))
+(flet ($e443 (implies $e21 $e245))
+(flet ($e444 (implies $e395 $e179))
+(flet ($e445 (implies $e164 $e146))
+(flet ($e446 (or $e304 $e283))
+(flet ($e447 (xor $e119 $e191))
+(flet ($e448 (and $e159 $e174))
+(flet ($e449 (iff $e284 $e381))
+(flet ($e450 (and $e29 $e33))
+(flet ($e451 (xor $e57 $e437))
+(flet ($e452 (xor $e126 $e305))
+(flet ($e453 (xor $e397 $e181))
+(flet ($e454 (xor $e219 $e447))
+(flet ($e455 (iff $e344 $e286))
+(flet ($e456 (not $e265))
+(flet ($e457 (or $e34 $e313))
+(flet ($e458 (implies $e409 $e275))
+(flet ($e459 (implies $e455 $e278))
+(flet ($e460 (or $e54 $e220))
+(flet ($e461 (or $e175 $e332))
+(flet ($e462 (iff $e215 $e374))
+(flet ($e463 (if_then_else $e329 $e369 $e236))
+(flet ($e464 (or $e141 $e439))
+(flet ($e465 (xor $e400 $e210))
+(flet ($e466 (and $e153 $e389))
+(flet ($e467 (implies $e452 $e51))
+(flet ($e468 (if_then_else $e296 $e440 $e410))
+(flet ($e469 (implies $e247 $e434))
+(flet ($e470 (or $e458 $e183))
+(flet ($e471 (iff $e352 $e421))
+(flet ($e472 (and $e49 $e167))
+(flet ($e473 (implies $e287 $e449))
+(flet ($e474 (iff $e218 $e406))
+(flet ($e475 (if_then_else $e330 $e260 $e457))
+(flet ($e476 (iff $e462 $e273))
+(flet ($e477 (and $e475 $e249))
+(flet ($e478 (and $e22 $e425))
+(flet ($e479 (or $e454 $e134))
+(flet ($e480 (or $e469 $e143))
+(flet ($e481 (xor $e384 $e221))
+(flet ($e482 (and $e266 $e438))
+(flet ($e483 (not $e270))
+(flet ($e484 (or $e358 $e450))
+(flet ($e485 (xor $e319 $e132))
+(flet ($e486 (xor $e198 $e414))
+(flet ($e487 (not $e465))
+(flet ($e488 (implies $e343 $e377))
+(flet ($e489 (iff $e139 $e38))
+(flet ($e490 (implies $e187 $e484))
+(flet ($e491 (or $e180 $e23))
+(flet ($e492 (implies $e173 $e441))
+(flet ($e493 (iff $e473 $e320))
+(flet ($e494 (implies $e129 $e392))
+(flet ($e495 (and $e492 $e361))
+(flet ($e496 (and $e214 $e295))
+(flet ($e497 (or $e466 $e386))
+(flet ($e498 (implies $e407 $e311))
+(flet ($e499 (if_then_else $e382 $e433 $e491))
+(flet ($e500 (xor $e148 $e365))
+(flet ($e501 (or $e483 $e470))
+(flet ($e502 (xor $e118 $e248))
+(flet ($e503 (implies $e373 $e453))
+(flet ($e504 (implies $e177 $e456))
+(flet ($e505 (if_then_else $e429 $e432 $e436))
+(flet ($e506 (not $e497))
+(flet ($e507 (and $e472 $e224))
+(flet ($e508 (implies $e401 $e467))
+(flet ($e509 (implies $e448 $e461))
+(flet ($e510 (implies $e239 $e500))
+(flet ($e511 (and $e349 $e333))
+(flet ($e512 (and $e376 $e124))
+(flet ($e513 (iff $e486 $e477))
+(flet ($e514 (implies $e501 $e48))
+(flet ($e515 (not $e25))
+(flet ($e516 (or $e314 $e493))
+(flet ($e517 (xor $e509 $e498))
+(flet ($e518 (or $e446 $e149))
+(flet ($e519 (xor $e290 $e506))
+(flet ($e520 (and $e413 $e430))
+(flet ($e521 (implies $e204 $e371))
+(flet ($e522 (xor $e503 $e227))
+(flet ($e523 (not $e502))
+(flet ($e524 (if_then_else $e306 $e507 $e142))
+(flet ($e525 (or $e521 $e196))
+(flet ($e526 (if_then_else $e165 $e476 $e120))
+(flet ($e527 (and $e250 $e408))
+(flet ($e528 (and $e444 $e267))
+(flet ($e529 (not $e241))
+(flet ($e530 (implies $e505 $e292))
+(flet ($e531 (iff $e184 $e510))
+(flet ($e532 (or $e508 $e528))
+(flet ($e533 (xor $e530 $e496))
+(flet ($e534 (xor $e411 $e279))
+(flet ($e535 (if_then_else $e460 $e532 $e387))
+(flet ($e536 (and $e138 $e416))
+(flet ($e537 (implies $e276 $e404))
+(flet ($e538 (or $e158 $e37))
+(flet ($e539 (and $e524 $e537))
+(flet ($e540 (xor $e206 $e40))
+(flet ($e541 (xor $e480 $e468))
+(flet ($e542 (implies $e190 $e185))
+(flet ($e543 (iff $e442 $e402))
+(flet ($e544 (if_then_else $e291 $e485 $e435))
+(flet ($e545 (and $e237 $e403))
+(flet ($e546 (xor $e471 $e388))
+(flet ($e547 (not $e316))
+(flet ($e548 (if_then_else $e463 $e534 $e423))
+(flet ($e549 (and $e52 $e222))
+(flet ($e550 (not $e216))
+(flet ($e551 (implies $e360 $e393))
+(flet ($e552 (not $e412))
+(flet ($e553 (xor $e545 $e133))
+(flet ($e554 (xor $e135 $e240))
+(flet ($e555 (if_then_else $e368 $e137 $e424))
+(flet ($e556 (or $e546 $e520))
+(flet ($e557 (if_then_else $e208 $e212 $e556))
+(flet ($e558 (iff $e540 $e426))
+(flet ($e559 (xor $e294 $e487))
+(flet ($e560 (or $e459 $e547))
+(flet ($e561 (xor $e543 $e128))
+(flet ($e562 (xor $e536 $e544))
+(flet ($e563 (not $e513))
+(flet ($e564 (iff $e293 $e431))
+(flet ($e565 (and $e154 $e549))
+(flet ($e566 (and $e489 $e443))
+(flet ($e567 (or $e495 $e490))
+(flet ($e568 (iff $e163 $e194))
+(flet ($e569 (implies $e552 $e494))
+(flet ($e570 (xor $e24 $e419))
+(flet ($e571 (or $e396 $e557))
+(flet ($e572 (and $e255 $e178))
+(flet ($e573 (and $e504 $e551))
+(flet ($e574 (not $e253))
+(flet ($e575 (xor $e131 $e145))
+(flet ($e576 (and $e512 $e370))
+(flet ($e577 (or $e499 $e189))
+(flet ($e578 (or $e570 $e41))
+(flet ($e579 (not $e555))
+(flet ($e580 (iff $e315 $e269))
+(flet ($e581 (and $e580 $e533))
+(flet ($e582 (if_then_else $e511 $e567 $e340))
+(flet ($e583 (or $e211 $e415))
+(flet ($e584 (if_then_else $e576 $e529 $e523))
+(flet ($e585 (or $e359 $e558))
+(flet ($e586 (not $e150))
+(flet ($e587 (iff $e282 $e586))
+(flet ($e588 (and $e160 $e201))
+(flet ($e589 (implies $e562 $e518))
+(flet ($e590 (implies $e526 $e554))
+(flet ($e591 (or $e144 $e517))
+(flet ($e592 (and $e566 $e337))
+(flet ($e593 (not $e572))
+(flet ($e594 (or $e36 $e427))
+(flet ($e595 (and $e516 $e571))
+(flet ($e596 (not $e39))
+(flet ($e597 (iff $e531 $e583))
+(flet ($e598 (xor $e302 $e478))
+(flet ($e599 (iff $e596 $e590))
+(flet ($e600 (or $e578 $e595))
+(flet ($e601 (and $e225 $e594))
+(flet ($e602 (iff $e560 $e559))
+(flet ($e603 (and $e577 $e130))
+(flet ($e604 (and $e565 $e405))
+(flet ($e605 (iff $e323 $e350))
+(flet ($e606 (and $e451 $e548))
+(flet ($e607 (or $e43 $e217))
+(flet ($e608 (if_then_else $e527 $e606 $e522))
+(flet ($e609 (or $e587 $e591))
+(flet ($e610 (and $e538 $e525))
+(flet ($e611 (and $e182 $e514))
+(flet ($e612 (iff $e550 $e422))
+(flet ($e613 (iff $e584 $e268))
+(flet ($e614 (iff $e244 $e599))
+(flet ($e615 (xor $e601 $e582))
+(flet ($e616 (not $e573))
+(flet ($e617 (if_then_else $e602 $e228 $e607))
+(flet ($e618 (iff $e574 $e553))
+(flet ($e619 (and $e271 $e271))
+(flet ($e620 (not $e539))
+(flet ($e621 (if_then_else $e277 $e479 $e169))
+(flet ($e622 (and $e515 $e620))
+(flet ($e623 (and $e482 $e127))
+(flet ($e624 (not $e261))
+(flet ($e625 (iff $e588 $e379))
+(flet ($e626 (iff $e597 $e603))
+(flet ($e627 (xor $e619 $e568))
+(flet ($e628 (not $e230))
+(flet ($e629 (and $e481 $e561))
+(flet ($e630 (not $e474))
+(flet ($e631 (xor $e612 $e625))
+(flet ($e632 (implies $e616 $e46))
+(flet ($e633 (and $e615 $e309))
+(flet ($e634 (xor $e614 $e541))
+(flet ($e635 (iff $e623 $e600))
+(flet ($e636 (xor $e629 $e613))
+(flet ($e637 (and $e564 $e519))
+(flet ($e638 (xor $e535 $e636))
+(flet ($e639 (xor $e335 $e579))
+(flet ($e640 (xor $e609 $e610))
+(flet ($e641 (and $e585 $e630))
+(flet ($e642 (not $e638))
+(flet ($e643 (implies $e56 $e634))
+(flet ($e644 (or $e639 $e394))
+(flet ($e645 (not $e300))
+(flet ($e646 (iff $e611 $e611))
+(flet ($e647 (iff $e598 $e632))
+(flet ($e648 (xor $e641 $e633))
+(flet ($e649 (or $e621 $e592))
+(flet ($e650 (iff $e647 $e258))
+(flet ($e651 (not $e631))
+(flet ($e652 (xor $e575 $e542))
+(flet ($e653 (iff $e346 $e650))
+(flet ($e654 (implies $e593 $e627))
+(flet ($e655 (if_then_else $e642 $e604 $e605))
+(flet ($e656 (and $e643 $e488))
+(flet ($e657 (if_then_else $e617 $e640 $e655))
+(flet ($e658 (not $e648))
+(flet ($e659 (not $e658))
+(flet ($e660 (not $e608))
+(flet ($e661 (not $e635))
+(flet ($e662 (or $e661 $e232))
+(flet ($e663 (implies $e659 $e656))
+(flet ($e664 (if_then_else $e644 $e624 $e652))
+(flet ($e665 (and $e445 $e654))
+(flet ($e666 (xor $e645 $e581))
+(flet ($e667 (xor $e464 $e420))
+(flet ($e668 (and $e664 $e667))
+(flet ($e669 (or $e364 $e660))
+(flet ($e670 (not $e628))
+(flet ($e671 (iff $e569 $e670))
+(flet ($e672 (xor $e668 $e637))
+(flet ($e673 (not $e672))
+(flet ($e674 (iff $e657 $e651))
+(flet ($e675 (if_then_else $e649 $e671 $e666))
+(flet ($e676 (not $e618))
+(flet ($e677 (xor $e626 $e626))
+(flet ($e678 (if_then_else $e646 $e665 $e669))
+(flet ($e679 (or $e28 $e677))
+(flet ($e680 (and $e622 $e678))
+(flet ($e681 (or $e673 $e663))
+(flet ($e682 (implies $e589 $e674))
+(flet ($e683 (xor $e662 $e680))
+(flet ($e684 (and $e683 $e679))
+(flet ($e685 (implies $e653 $e653))
+(flet ($e686 (if_then_else $e563 $e681 $e682))
+(flet ($e687 (iff $e686 $e675))
+(flet ($e688 (iff $e687 $e685))
+(flet ($e689 (and $e676 $e684))
+(flet ($e690 (not $e689))
+(flet ($e691 (xor $e690 $e688))
+$e691
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) [...]
+
diff --git a/test/regress/regress2/hash_sat_06_19.smt2 b/test/regress/regress2/hash_sat_06_19.smt2
new file mode 100644
index 0000000..b565a4b
--- /dev/null
+++ b/test/regress/regress2/hash_sat_06_19.smt2
@@ -0,0 +1,33 @@
+(set-logic QF_UFLIA)
+(set-info :source | MathSat group |)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun hash_1 (Int) Int)
+(declare-fun hash_2 (Int) Int)
+(declare-fun hash_3 (Int) Int)
+(declare-fun hash_4 (Int) Int)
+(declare-fun hash_5 (Int) Int)
+(declare-fun hash_6 (Int) Int)
+(declare-fun hash_7 (Int) Int)
+(declare-fun hash_8 (Int) Int)
+(declare-fun hash_9 (Int) Int)
+(declare-fun hash_10 (Int) Int)
+(declare-fun hash_11 (Int) Int)
+(declare-fun hash_12 (Int) Int)
+(declare-fun hash_13 (Int) Int)
+(declare-fun hash_14 (Int) Int)
+(declare-fun hash_15 (Int) Int)
+(declare-fun hash_16 (Int) Int)
+(declare-fun hash_17 (Int) Int)
+(declare-fun hash_18 (Int) Int)
+(declare-fun hash_19 (Int) Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(declare-fun x4 () Int)
+(declare-fun x5 () Int)
+(declare-fun x6 () Int)
+(assert (let ((?v_0 (hash_1 x1)) (?v_1 (hash_1 x2)) (?v_2 (hash_1 x3)) (?v_3 (hash_1 x4)) (?v_4 (hash_1 x5)) (?v_5 (hash_1 x6)) (?v_6 (hash_2 x1)) (?v_7 (hash_2 x2)) (?v_8 (hash_2 x3)) (?v_9 (hash_2 x4)) (?v_10 (hash_2 x5)) (?v_11 (hash_2 x6)) (?v_12 (hash_3 x1)) (?v_13 (hash_3 x2)) (?v_14 (hash_3 x3)) (?v_15 (hash_3 x4)) (?v_16 (hash_3 x5)) (?v_17 (hash_3 x6)) (?v_18 (hash_4 x1)) (?v_19 (hash_4 x2)) (?v_20 (hash_4 x3)) (?v_21 (hash_4 x4)) (?v_22 (hash_4 x5)) (?v_23 (hash_4 x6)) (?v_24 ( [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress2/hash_sat_07_17.smt2 b/test/regress/regress2/hash_sat_07_17.smt2
new file mode 100644
index 0000000..0bb4980
--- /dev/null
+++ b/test/regress/regress2/hash_sat_07_17.smt2
@@ -0,0 +1,32 @@
+(set-logic QF_UFLIA)
+(set-info :source | MathSat group |)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun hash_1 (Int) Int)
+(declare-fun hash_2 (Int) Int)
+(declare-fun hash_3 (Int) Int)
+(declare-fun hash_4 (Int) Int)
+(declare-fun hash_5 (Int) Int)
+(declare-fun hash_6 (Int) Int)
+(declare-fun hash_7 (Int) Int)
+(declare-fun hash_8 (Int) Int)
+(declare-fun hash_9 (Int) Int)
+(declare-fun hash_10 (Int) Int)
+(declare-fun hash_11 (Int) Int)
+(declare-fun hash_12 (Int) Int)
+(declare-fun hash_13 (Int) Int)
+(declare-fun hash_14 (Int) Int)
+(declare-fun hash_15 (Int) Int)
+(declare-fun hash_16 (Int) Int)
+(declare-fun hash_17 (Int) Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(declare-fun x4 () Int)
+(declare-fun x5 () Int)
+(declare-fun x6 () Int)
+(declare-fun x7 () Int)
+(assert (let ((?v_0 (hash_1 x1)) (?v_1 (hash_1 x2)) (?v_2 (hash_1 x3)) (?v_3 (hash_1 x4)) (?v_4 (hash_1 x5)) (?v_5 (hash_1 x6)) (?v_6 (hash_1 x7)) (?v_7 (hash_2 x1)) (?v_8 (hash_2 x2)) (?v_9 (hash_2 x3)) (?v_10 (hash_2 x4)) (?v_11 (hash_2 x5)) (?v_12 (hash_2 x6)) (?v_13 (hash_2 x7)) (?v_14 (hash_3 x1)) (?v_15 (hash_3 x2)) (?v_16 (hash_3 x3)) (?v_17 (hash_3 x4)) (?v_18 (hash_3 x5)) (?v_19 (hash_3 x6)) (?v_20 (hash_3 x7)) (?v_21 (hash_4 x1)) (?v_22 (hash_4 x2)) (?v_23 (hash_4 x3)) (?v_24 ( [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress2/hash_sat_09_09.smt2 b/test/regress/regress2/hash_sat_09_09.smt2
new file mode 100644
index 0000000..6dc2654
--- /dev/null
+++ b/test/regress/regress2/hash_sat_09_09.smt2
@@ -0,0 +1,26 @@
+(set-logic QF_UFLIA)
+(set-info :source | MathSat group |)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun hash_1 (Int) Int)
+(declare-fun hash_2 (Int) Int)
+(declare-fun hash_3 (Int) Int)
+(declare-fun hash_4 (Int) Int)
+(declare-fun hash_5 (Int) Int)
+(declare-fun hash_6 (Int) Int)
+(declare-fun hash_7 (Int) Int)
+(declare-fun hash_8 (Int) Int)
+(declare-fun hash_9 (Int) Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(declare-fun x4 () Int)
+(declare-fun x5 () Int)
+(declare-fun x6 () Int)
+(declare-fun x7 () Int)
+(declare-fun x8 () Int)
+(declare-fun x9 () Int)
+(assert (let ((?v_0 (hash_1 x1)) (?v_1 (hash_1 x2)) (?v_2 (hash_1 x3)) (?v_3 (hash_1 x4)) (?v_4 (hash_1 x5)) (?v_5 (hash_1 x6)) (?v_6 (hash_1 x7)) (?v_7 (hash_1 x8)) (?v_8 (hash_1 x9)) (?v_9 (hash_2 x1)) (?v_10 (hash_2 x2)) (?v_11 (hash_2 x3)) (?v_12 (hash_2 x4)) (?v_13 (hash_2 x5)) (?v_14 (hash_2 x6)) (?v_15 (hash_2 x7)) (?v_16 (hash_2 x8)) (?v_17 (hash_2 x9)) (?v_18 (hash_3 x1)) (?v_19 (hash_3 x2)) (?v_20 (hash_3 x3)) (?v_21 (hash_3 x4)) (?v_22 (hash_3 x5)) (?v_23 (hash_3 x6)) (?v_24 ( [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress2/hash_sat_10_09.smt2 b/test/regress/regress2/hash_sat_10_09.smt2
new file mode 100644
index 0000000..20cff8b
--- /dev/null
+++ b/test/regress/regress2/hash_sat_10_09.smt2
@@ -0,0 +1,27 @@
+(set-logic QF_UFLIA)
+(set-info :source | MathSat group |)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status sat)
+(declare-fun hash_1 (Int) Int)
+(declare-fun hash_2 (Int) Int)
+(declare-fun hash_3 (Int) Int)
+(declare-fun hash_4 (Int) Int)
+(declare-fun hash_5 (Int) Int)
+(declare-fun hash_6 (Int) Int)
+(declare-fun hash_7 (Int) Int)
+(declare-fun hash_8 (Int) Int)
+(declare-fun hash_9 (Int) Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(declare-fun x4 () Int)
+(declare-fun x5 () Int)
+(declare-fun x6 () Int)
+(declare-fun x7 () Int)
+(declare-fun x8 () Int)
+(declare-fun x9 () Int)
+(declare-fun x10 () Int)
+(assert (let ((?v_0 (hash_1 x1)) (?v_1 (hash_1 x2)) (?v_2 (hash_1 x3)) (?v_3 (hash_1 x4)) (?v_4 (hash_1 x5)) (?v_5 (hash_1 x6)) (?v_6 (hash_1 x7)) (?v_7 (hash_1 x8)) (?v_8 (hash_1 x9)) (?v_9 (hash_1 x10)) (?v_10 (hash_2 x1)) (?v_11 (hash_2 x2)) (?v_12 (hash_2 x3)) (?v_13 (hash_2 x4)) (?v_14 (hash_2 x5)) (?v_15 (hash_2 x6)) (?v_16 (hash_2 x7)) (?v_17 (hash_2 x8)) (?v_18 (hash_2 x9)) (?v_19 (hash_2 x10)) (?v_20 (hash_3 x1)) (?v_21 (hash_3 x2)) (?v_22 (hash_3 x3)) (?v_23 (hash_3 x4)) (?v_24 [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress2/hole7.cvc b/test/regress/regress2/hole7.cvc
new file mode 100644
index 0000000..1f76247
--- /dev/null
+++ b/test/regress/regress2/hole7.cvc
@@ -0,0 +1,264 @@
+% EXPECT: valid
+x_1 : BOOLEAN;
+x_2 : BOOLEAN;
+x_3 : BOOLEAN;
+x_4 : BOOLEAN;
+x_5 : BOOLEAN;
+x_6 : BOOLEAN;
+x_7 : BOOLEAN;
+x_8 : BOOLEAN;
+x_9 : BOOLEAN;
+x_10 : BOOLEAN;
+x_11 : BOOLEAN;
+x_12 : BOOLEAN;
+x_13 : BOOLEAN;
+x_14 : BOOLEAN;
+x_15 : BOOLEAN;
+x_16 : BOOLEAN;
+x_17 : BOOLEAN;
+x_18 : BOOLEAN;
+x_19 : BOOLEAN;
+x_20 : BOOLEAN;
+x_21 : BOOLEAN;
+x_22 : BOOLEAN;
+x_23 : BOOLEAN;
+x_24 : BOOLEAN;
+x_25 : BOOLEAN;
+x_26 : BOOLEAN;
+x_27 : BOOLEAN;
+x_28 : BOOLEAN;
+x_29 : BOOLEAN;
+x_30 : BOOLEAN;
+x_31 : BOOLEAN;
+x_32 : BOOLEAN;
+x_33 : BOOLEAN;
+x_34 : BOOLEAN;
+x_35 : BOOLEAN;
+x_36 : BOOLEAN;
+x_37 : BOOLEAN;
+x_38 : BOOLEAN;
+x_39 : BOOLEAN;
+x_40 : BOOLEAN;
+x_41 : BOOLEAN;
+x_42 : BOOLEAN;
+x_43 : BOOLEAN;
+x_44 : BOOLEAN;
+x_45 : BOOLEAN;
+x_46 : BOOLEAN;
+x_47 : BOOLEAN;
+x_48 : BOOLEAN;
+x_49 : BOOLEAN;
+x_50 : BOOLEAN;
+x_51 : BOOLEAN;
+x_52 : BOOLEAN;
+x_53 : BOOLEAN;
+x_54 : BOOLEAN;
+x_55 : BOOLEAN;
+x_56 : BOOLEAN;
+ASSERT NOT x_1 OR NOT x_8;
+ASSERT NOT x_1 OR NOT x_15;
+ASSERT NOT x_1 OR NOT x_22;
+ASSERT NOT x_1 OR NOT x_29;
+ASSERT NOT x_1 OR NOT x_36;
+ASSERT NOT x_1 OR NOT x_43;
+ASSERT NOT x_1 OR NOT x_50;
+ASSERT NOT x_8 OR NOT x_15;
+ASSERT NOT x_8 OR NOT x_22;
+ASSERT NOT x_8 OR NOT x_29;
+ASSERT NOT x_8 OR NOT x_36;
+ASSERT NOT x_8 OR NOT x_43;
+ASSERT NOT x_8 OR NOT x_50;
+ASSERT NOT x_15 OR NOT x_22;
+ASSERT NOT x_15 OR NOT x_29;
+ASSERT NOT x_15 OR NOT x_36;
+ASSERT NOT x_15 OR NOT x_43;
+ASSERT NOT x_15 OR NOT x_50;
+ASSERT NOT x_22 OR NOT x_29;
+ASSERT NOT x_22 OR NOT x_36;
+ASSERT NOT x_22 OR NOT x_43;
+ASSERT NOT x_22 OR NOT x_50;
+ASSERT NOT x_29 OR NOT x_36;
+ASSERT NOT x_29 OR NOT x_43;
+ASSERT NOT x_29 OR NOT x_50;
+ASSERT NOT x_36 OR NOT x_43;
+ASSERT NOT x_36 OR NOT x_50;
+ASSERT NOT x_43 OR NOT x_50;
+ASSERT NOT x_2 OR NOT x_9;
+ASSERT NOT x_2 OR NOT x_16;
+ASSERT NOT x_2 OR NOT x_23;
+ASSERT NOT x_2 OR NOT x_30;
+ASSERT NOT x_2 OR NOT x_37;
+ASSERT NOT x_2 OR NOT x_44;
+ASSERT NOT x_2 OR NOT x_51;
+ASSERT NOT x_9 OR NOT x_16;
+ASSERT NOT x_9 OR NOT x_23;
+ASSERT NOT x_9 OR NOT x_30;
+ASSERT NOT x_9 OR NOT x_37;
+ASSERT NOT x_9 OR NOT x_44;
+ASSERT NOT x_9 OR NOT x_51;
+ASSERT NOT x_16 OR NOT x_23;
+ASSERT NOT x_16 OR NOT x_30;
+ASSERT NOT x_16 OR NOT x_37;
+ASSERT NOT x_16 OR NOT x_44;
+ASSERT NOT x_16 OR NOT x_51;
+ASSERT NOT x_23 OR NOT x_30;
+ASSERT NOT x_23 OR NOT x_37;
+ASSERT NOT x_23 OR NOT x_44;
+ASSERT NOT x_23 OR NOT x_51;
+ASSERT NOT x_30 OR NOT x_37;
+ASSERT NOT x_30 OR NOT x_44;
+ASSERT NOT x_30 OR NOT x_51;
+ASSERT NOT x_37 OR NOT x_44;
+ASSERT NOT x_37 OR NOT x_51;
+ASSERT NOT x_44 OR NOT x_51;
+ASSERT NOT x_3 OR NOT x_10;
+ASSERT NOT x_3 OR NOT x_17;
+ASSERT NOT x_3 OR NOT x_24;
+ASSERT NOT x_3 OR NOT x_31;
+ASSERT NOT x_3 OR NOT x_38;
+ASSERT NOT x_3 OR NOT x_45;
+ASSERT NOT x_3 OR NOT x_52;
+ASSERT NOT x_10 OR NOT x_17;
+ASSERT NOT x_10 OR NOT x_24;
+ASSERT NOT x_10 OR NOT x_31;
+ASSERT NOT x_10 OR NOT x_38;
+ASSERT NOT x_10 OR NOT x_45;
+ASSERT NOT x_10 OR NOT x_52;
+ASSERT NOT x_17 OR NOT x_24;
+ASSERT NOT x_17 OR NOT x_31;
+ASSERT NOT x_17 OR NOT x_38;
+ASSERT NOT x_17 OR NOT x_45;
+ASSERT NOT x_17 OR NOT x_52;
+ASSERT NOT x_24 OR NOT x_31;
+ASSERT NOT x_24 OR NOT x_38;
+ASSERT NOT x_24 OR NOT x_45;
+ASSERT NOT x_24 OR NOT x_52;
+ASSERT NOT x_31 OR NOT x_38;
+ASSERT NOT x_31 OR NOT x_45;
+ASSERT NOT x_31 OR NOT x_52;
+ASSERT NOT x_38 OR NOT x_45;
+ASSERT NOT x_38 OR NOT x_52;
+ASSERT NOT x_45 OR NOT x_52;
+ASSERT NOT x_4 OR NOT x_11;
+ASSERT NOT x_4 OR NOT x_18;
+ASSERT NOT x_4 OR NOT x_25;
+ASSERT NOT x_4 OR NOT x_32;
+ASSERT NOT x_4 OR NOT x_39;
+ASSERT NOT x_4 OR NOT x_46;
+ASSERT NOT x_4 OR NOT x_53;
+ASSERT NOT x_11 OR NOT x_18;
+ASSERT NOT x_11 OR NOT x_25;
+ASSERT NOT x_11 OR NOT x_32;
+ASSERT NOT x_11 OR NOT x_39;
+ASSERT NOT x_11 OR NOT x_46;
+ASSERT NOT x_11 OR NOT x_53;
+ASSERT NOT x_18 OR NOT x_25;
+ASSERT NOT x_18 OR NOT x_32;
+ASSERT NOT x_18 OR NOT x_39;
+ASSERT NOT x_18 OR NOT x_46;
+ASSERT NOT x_18 OR NOT x_53;
+ASSERT NOT x_25 OR NOT x_32;
+ASSERT NOT x_25 OR NOT x_39;
+ASSERT NOT x_25 OR NOT x_46;
+ASSERT NOT x_25 OR NOT x_53;
+ASSERT NOT x_32 OR NOT x_39;
+ASSERT NOT x_32 OR NOT x_46;
+ASSERT NOT x_32 OR NOT x_53;
+ASSERT NOT x_39 OR NOT x_46;
+ASSERT NOT x_39 OR NOT x_53;
+ASSERT NOT x_46 OR NOT x_53;
+ASSERT NOT x_5 OR NOT x_12;
+ASSERT NOT x_5 OR NOT x_19;
+ASSERT NOT x_5 OR NOT x_26;
+ASSERT NOT x_5 OR NOT x_33;
+ASSERT NOT x_5 OR NOT x_40;
+ASSERT NOT x_5 OR NOT x_47;
+ASSERT NOT x_5 OR NOT x_54;
+ASSERT NOT x_12 OR NOT x_19;
+ASSERT NOT x_12 OR NOT x_26;
+ASSERT NOT x_12 OR NOT x_33;
+ASSERT NOT x_12 OR NOT x_40;
+ASSERT NOT x_12 OR NOT x_47;
+ASSERT NOT x_12 OR NOT x_54;
+ASSERT NOT x_19 OR NOT x_26;
+ASSERT NOT x_19 OR NOT x_33;
+ASSERT NOT x_19 OR NOT x_40;
+ASSERT NOT x_19 OR NOT x_47;
+ASSERT NOT x_19 OR NOT x_54;
+ASSERT NOT x_26 OR NOT x_33;
+ASSERT NOT x_26 OR NOT x_40;
+ASSERT NOT x_26 OR NOT x_47;
+ASSERT NOT x_26 OR NOT x_54;
+ASSERT NOT x_33 OR NOT x_40;
+ASSERT NOT x_33 OR NOT x_47;
+ASSERT NOT x_33 OR NOT x_54;
+ASSERT NOT x_40 OR NOT x_47;
+ASSERT NOT x_40 OR NOT x_54;
+ASSERT NOT x_47 OR NOT x_54;
+ASSERT NOT x_6 OR NOT x_13;
+ASSERT NOT x_6 OR NOT x_20;
+ASSERT NOT x_6 OR NOT x_27;
+ASSERT NOT x_6 OR NOT x_34;
+ASSERT NOT x_6 OR NOT x_41;
+ASSERT NOT x_6 OR NOT x_48;
+ASSERT NOT x_6 OR NOT x_55;
+ASSERT NOT x_13 OR NOT x_20;
+ASSERT NOT x_13 OR NOT x_27;
+ASSERT NOT x_13 OR NOT x_34;
+ASSERT NOT x_13 OR NOT x_41;
+ASSERT NOT x_13 OR NOT x_48;
+ASSERT NOT x_13 OR NOT x_55;
+ASSERT NOT x_20 OR NOT x_27;
+ASSERT NOT x_20 OR NOT x_34;
+ASSERT NOT x_20 OR NOT x_41;
+ASSERT NOT x_20 OR NOT x_48;
+ASSERT NOT x_20 OR NOT x_55;
+ASSERT NOT x_27 OR NOT x_34;
+ASSERT NOT x_27 OR NOT x_41;
+ASSERT NOT x_27 OR NOT x_48;
+ASSERT NOT x_27 OR NOT x_55;
+ASSERT NOT x_34 OR NOT x_41;
+ASSERT NOT x_34 OR NOT x_48;
+ASSERT NOT x_34 OR NOT x_55;
+ASSERT NOT x_41 OR NOT x_48;
+ASSERT NOT x_41 OR NOT x_55;
+ASSERT NOT x_48 OR NOT x_55;
+ASSERT NOT x_7 OR NOT x_14;
+ASSERT NOT x_7 OR NOT x_21;
+ASSERT NOT x_7 OR NOT x_28;
+ASSERT NOT x_7 OR NOT x_35;
+ASSERT NOT x_7 OR NOT x_42;
+ASSERT NOT x_7 OR NOT x_49;
+ASSERT NOT x_7 OR NOT x_56;
+ASSERT NOT x_14 OR NOT x_21;
+ASSERT NOT x_14 OR NOT x_28;
+ASSERT NOT x_14 OR NOT x_35;
+ASSERT NOT x_14 OR NOT x_42;
+ASSERT NOT x_14 OR NOT x_49;
+ASSERT NOT x_14 OR NOT x_56;
+ASSERT NOT x_21 OR NOT x_28;
+ASSERT NOT x_21 OR NOT x_35;
+ASSERT NOT x_21 OR NOT x_42;
+ASSERT NOT x_21 OR NOT x_49;
+ASSERT NOT x_21 OR NOT x_56;
+ASSERT NOT x_28 OR NOT x_35;
+ASSERT NOT x_28 OR NOT x_42;
+ASSERT NOT x_28 OR NOT x_49;
+ASSERT NOT x_28 OR NOT x_56;
+ASSERT NOT x_35 OR NOT x_42;
+ASSERT NOT x_35 OR NOT x_49;
+ASSERT NOT x_35 OR NOT x_56;
+ASSERT NOT x_42 OR NOT x_49;
+ASSERT NOT x_42 OR NOT x_56;
+ASSERT NOT x_49 OR NOT x_56;
+ASSERT x_7 OR x_6 OR x_5 OR x_4 OR x_3 OR x_2 OR x_1;
+ASSERT x_14 OR x_13 OR x_12 OR x_11 OR x_10 OR x_9 OR x_8;
+ASSERT x_21 OR x_20 OR x_19 OR x_18 OR x_17 OR x_16 OR x_15;
+ASSERT x_28 OR x_27 OR x_26 OR x_25 OR x_24 OR x_23 OR x_22;
+ASSERT x_35 OR x_34 OR x_33 OR x_32 OR x_31 OR x_30 OR x_29;
+ASSERT x_42 OR x_41 OR x_40 OR x_39 OR x_38 OR x_37 OR x_36;
+ASSERT x_49 OR x_48 OR x_47 OR x_46 OR x_45 OR x_44 OR x_43;
+ASSERT x_56 OR x_55 OR x_54 OR x_53 OR x_52 OR x_51 OR x_50;
+
+
+QUERY FALSE;
diff --git a/test/regress/regress2/hole8.cvc b/test/regress/regress2/hole8.cvc
new file mode 100644
index 0000000..705c95e
--- /dev/null
+++ b/test/regress/regress2/hole8.cvc
@@ -0,0 +1,373 @@
+% EXPECT: valid
+x_1 : BOOLEAN;
+x_2 : BOOLEAN;
+x_3 : BOOLEAN;
+x_4 : BOOLEAN;
+x_5 : BOOLEAN;
+x_6 : BOOLEAN;
+x_7 : BOOLEAN;
+x_8 : BOOLEAN;
+x_9 : BOOLEAN;
+x_10 : BOOLEAN;
+x_11 : BOOLEAN;
+x_12 : BOOLEAN;
+x_13 : BOOLEAN;
+x_14 : BOOLEAN;
+x_15 : BOOLEAN;
+x_16 : BOOLEAN;
+x_17 : BOOLEAN;
+x_18 : BOOLEAN;
+x_19 : BOOLEAN;
+x_20 : BOOLEAN;
+x_21 : BOOLEAN;
+x_22 : BOOLEAN;
+x_23 : BOOLEAN;
+x_24 : BOOLEAN;
+x_25 : BOOLEAN;
+x_26 : BOOLEAN;
+x_27 : BOOLEAN;
+x_28 : BOOLEAN;
+x_29 : BOOLEAN;
+x_30 : BOOLEAN;
+x_31 : BOOLEAN;
+x_32 : BOOLEAN;
+x_33 : BOOLEAN;
+x_34 : BOOLEAN;
+x_35 : BOOLEAN;
+x_36 : BOOLEAN;
+x_37 : BOOLEAN;
+x_38 : BOOLEAN;
+x_39 : BOOLEAN;
+x_40 : BOOLEAN;
+x_41 : BOOLEAN;
+x_42 : BOOLEAN;
+x_43 : BOOLEAN;
+x_44 : BOOLEAN;
+x_45 : BOOLEAN;
+x_46 : BOOLEAN;
+x_47 : BOOLEAN;
+x_48 : BOOLEAN;
+x_49 : BOOLEAN;
+x_50 : BOOLEAN;
+x_51 : BOOLEAN;
+x_52 : BOOLEAN;
+x_53 : BOOLEAN;
+x_54 : BOOLEAN;
+x_55 : BOOLEAN;
+x_56 : BOOLEAN;
+x_57 : BOOLEAN;
+x_58 : BOOLEAN;
+x_59 : BOOLEAN;
+x_60 : BOOLEAN;
+x_61 : BOOLEAN;
+x_62 : BOOLEAN;
+x_63 : BOOLEAN;
+x_64 : BOOLEAN;
+x_65 : BOOLEAN;
+x_66 : BOOLEAN;
+x_67 : BOOLEAN;
+x_68 : BOOLEAN;
+x_69 : BOOLEAN;
+x_70 : BOOLEAN;
+x_71 : BOOLEAN;
+x_72 : BOOLEAN;
+ASSERT NOT x_1 OR NOT x_9;
+ASSERT NOT x_1 OR NOT x_17;
+ASSERT NOT x_1 OR NOT x_25;
+ASSERT NOT x_1 OR NOT x_33;
+ASSERT NOT x_1 OR NOT x_41;
+ASSERT NOT x_1 OR NOT x_49;
+ASSERT NOT x_1 OR NOT x_57;
+ASSERT NOT x_1 OR NOT x_65;
+ASSERT NOT x_9 OR NOT x_17;
+ASSERT NOT x_9 OR NOT x_25;
+ASSERT NOT x_9 OR NOT x_33;
+ASSERT NOT x_9 OR NOT x_41;
+ASSERT NOT x_9 OR NOT x_49;
+ASSERT NOT x_9 OR NOT x_57;
+ASSERT NOT x_9 OR NOT x_65;
+ASSERT NOT x_17 OR NOT x_25;
+ASSERT NOT x_17 OR NOT x_33;
+ASSERT NOT x_17 OR NOT x_41;
+ASSERT NOT x_17 OR NOT x_49;
+ASSERT NOT x_17 OR NOT x_57;
+ASSERT NOT x_17 OR NOT x_65;
+ASSERT NOT x_25 OR NOT x_33;
+ASSERT NOT x_25 OR NOT x_41;
+ASSERT NOT x_25 OR NOT x_49;
+ASSERT NOT x_25 OR NOT x_57;
+ASSERT NOT x_25 OR NOT x_65;
+ASSERT NOT x_33 OR NOT x_41;
+ASSERT NOT x_33 OR NOT x_49;
+ASSERT NOT x_33 OR NOT x_57;
+ASSERT NOT x_33 OR NOT x_65;
+ASSERT NOT x_41 OR NOT x_49;
+ASSERT NOT x_41 OR NOT x_57;
+ASSERT NOT x_41 OR NOT x_65;
+ASSERT NOT x_49 OR NOT x_57;
+ASSERT NOT x_49 OR NOT x_65;
+ASSERT NOT x_57 OR NOT x_65;
+ASSERT NOT x_2 OR NOT x_10;
+ASSERT NOT x_2 OR NOT x_18;
+ASSERT NOT x_2 OR NOT x_26;
+ASSERT NOT x_2 OR NOT x_34;
+ASSERT NOT x_2 OR NOT x_42;
+ASSERT NOT x_2 OR NOT x_50;
+ASSERT NOT x_2 OR NOT x_58;
+ASSERT NOT x_2 OR NOT x_66;
+ASSERT NOT x_10 OR NOT x_18;
+ASSERT NOT x_10 OR NOT x_26;
+ASSERT NOT x_10 OR NOT x_34;
+ASSERT NOT x_10 OR NOT x_42;
+ASSERT NOT x_10 OR NOT x_50;
+ASSERT NOT x_10 OR NOT x_58;
+ASSERT NOT x_10 OR NOT x_66;
+ASSERT NOT x_18 OR NOT x_26;
+ASSERT NOT x_18 OR NOT x_34;
+ASSERT NOT x_18 OR NOT x_42;
+ASSERT NOT x_18 OR NOT x_50;
+ASSERT NOT x_18 OR NOT x_58;
+ASSERT NOT x_18 OR NOT x_66;
+ASSERT NOT x_26 OR NOT x_34;
+ASSERT NOT x_26 OR NOT x_42;
+ASSERT NOT x_26 OR NOT x_50;
+ASSERT NOT x_26 OR NOT x_58;
+ASSERT NOT x_26 OR NOT x_66;
+ASSERT NOT x_34 OR NOT x_42;
+ASSERT NOT x_34 OR NOT x_50;
+ASSERT NOT x_34 OR NOT x_58;
+ASSERT NOT x_34 OR NOT x_66;
+ASSERT NOT x_42 OR NOT x_50;
+ASSERT NOT x_42 OR NOT x_58;
+ASSERT NOT x_42 OR NOT x_66;
+ASSERT NOT x_50 OR NOT x_58;
+ASSERT NOT x_50 OR NOT x_66;
+ASSERT NOT x_58 OR NOT x_66;
+ASSERT NOT x_3 OR NOT x_11;
+ASSERT NOT x_3 OR NOT x_19;
+ASSERT NOT x_3 OR NOT x_27;
+ASSERT NOT x_3 OR NOT x_35;
+ASSERT NOT x_3 OR NOT x_43;
+ASSERT NOT x_3 OR NOT x_51;
+ASSERT NOT x_3 OR NOT x_59;
+ASSERT NOT x_3 OR NOT x_67;
+ASSERT NOT x_11 OR NOT x_19;
+ASSERT NOT x_11 OR NOT x_27;
+ASSERT NOT x_11 OR NOT x_35;
+ASSERT NOT x_11 OR NOT x_43;
+ASSERT NOT x_11 OR NOT x_51;
+ASSERT NOT x_11 OR NOT x_59;
+ASSERT NOT x_11 OR NOT x_67;
+ASSERT NOT x_19 OR NOT x_27;
+ASSERT NOT x_19 OR NOT x_35;
+ASSERT NOT x_19 OR NOT x_43;
+ASSERT NOT x_19 OR NOT x_51;
+ASSERT NOT x_19 OR NOT x_59;
+ASSERT NOT x_19 OR NOT x_67;
+ASSERT NOT x_27 OR NOT x_35;
+ASSERT NOT x_27 OR NOT x_43;
+ASSERT NOT x_27 OR NOT x_51;
+ASSERT NOT x_27 OR NOT x_59;
+ASSERT NOT x_27 OR NOT x_67;
+ASSERT NOT x_35 OR NOT x_43;
+ASSERT NOT x_35 OR NOT x_51;
+ASSERT NOT x_35 OR NOT x_59;
+ASSERT NOT x_35 OR NOT x_67;
+ASSERT NOT x_43 OR NOT x_51;
+ASSERT NOT x_43 OR NOT x_59;
+ASSERT NOT x_43 OR NOT x_67;
+ASSERT NOT x_51 OR NOT x_59;
+ASSERT NOT x_51 OR NOT x_67;
+ASSERT NOT x_59 OR NOT x_67;
+ASSERT NOT x_4 OR NOT x_12;
+ASSERT NOT x_4 OR NOT x_20;
+ASSERT NOT x_4 OR NOT x_28;
+ASSERT NOT x_4 OR NOT x_36;
+ASSERT NOT x_4 OR NOT x_44;
+ASSERT NOT x_4 OR NOT x_52;
+ASSERT NOT x_4 OR NOT x_60;
+ASSERT NOT x_4 OR NOT x_68;
+ASSERT NOT x_12 OR NOT x_20;
+ASSERT NOT x_12 OR NOT x_28;
+ASSERT NOT x_12 OR NOT x_36;
+ASSERT NOT x_12 OR NOT x_44;
+ASSERT NOT x_12 OR NOT x_52;
+ASSERT NOT x_12 OR NOT x_60;
+ASSERT NOT x_12 OR NOT x_68;
+ASSERT NOT x_20 OR NOT x_28;
+ASSERT NOT x_20 OR NOT x_36;
+ASSERT NOT x_20 OR NOT x_44;
+ASSERT NOT x_20 OR NOT x_52;
+ASSERT NOT x_20 OR NOT x_60;
+ASSERT NOT x_20 OR NOT x_68;
+ASSERT NOT x_28 OR NOT x_36;
+ASSERT NOT x_28 OR NOT x_44;
+ASSERT NOT x_28 OR NOT x_52;
+ASSERT NOT x_28 OR NOT x_60;
+ASSERT NOT x_28 OR NOT x_68;
+ASSERT NOT x_36 OR NOT x_44;
+ASSERT NOT x_36 OR NOT x_52;
+ASSERT NOT x_36 OR NOT x_60;
+ASSERT NOT x_36 OR NOT x_68;
+ASSERT NOT x_44 OR NOT x_52;
+ASSERT NOT x_44 OR NOT x_60;
+ASSERT NOT x_44 OR NOT x_68;
+ASSERT NOT x_52 OR NOT x_60;
+ASSERT NOT x_52 OR NOT x_68;
+ASSERT NOT x_60 OR NOT x_68;
+ASSERT NOT x_5 OR NOT x_13;
+ASSERT NOT x_5 OR NOT x_21;
+ASSERT NOT x_5 OR NOT x_29;
+ASSERT NOT x_5 OR NOT x_37;
+ASSERT NOT x_5 OR NOT x_45;
+ASSERT NOT x_5 OR NOT x_53;
+ASSERT NOT x_5 OR NOT x_61;
+ASSERT NOT x_5 OR NOT x_69;
+ASSERT NOT x_13 OR NOT x_21;
+ASSERT NOT x_13 OR NOT x_29;
+ASSERT NOT x_13 OR NOT x_37;
+ASSERT NOT x_13 OR NOT x_45;
+ASSERT NOT x_13 OR NOT x_53;
+ASSERT NOT x_13 OR NOT x_61;
+ASSERT NOT x_13 OR NOT x_69;
+ASSERT NOT x_21 OR NOT x_29;
+ASSERT NOT x_21 OR NOT x_37;
+ASSERT NOT x_21 OR NOT x_45;
+ASSERT NOT x_21 OR NOT x_53;
+ASSERT NOT x_21 OR NOT x_61;
+ASSERT NOT x_21 OR NOT x_69;
+ASSERT NOT x_29 OR NOT x_37;
+ASSERT NOT x_29 OR NOT x_45;
+ASSERT NOT x_29 OR NOT x_53;
+ASSERT NOT x_29 OR NOT x_61;
+ASSERT NOT x_29 OR NOT x_69;
+ASSERT NOT x_37 OR NOT x_45;
+ASSERT NOT x_37 OR NOT x_53;
+ASSERT NOT x_37 OR NOT x_61;
+ASSERT NOT x_37 OR NOT x_69;
+ASSERT NOT x_45 OR NOT x_53;
+ASSERT NOT x_45 OR NOT x_61;
+ASSERT NOT x_45 OR NOT x_69;
+ASSERT NOT x_53 OR NOT x_61;
+ASSERT NOT x_53 OR NOT x_69;
+ASSERT NOT x_61 OR NOT x_69;
+ASSERT NOT x_6 OR NOT x_14;
+ASSERT NOT x_6 OR NOT x_22;
+ASSERT NOT x_6 OR NOT x_30;
+ASSERT NOT x_6 OR NOT x_38;
+ASSERT NOT x_6 OR NOT x_46;
+ASSERT NOT x_6 OR NOT x_54;
+ASSERT NOT x_6 OR NOT x_62;
+ASSERT NOT x_6 OR NOT x_70;
+ASSERT NOT x_14 OR NOT x_22;
+ASSERT NOT x_14 OR NOT x_30;
+ASSERT NOT x_14 OR NOT x_38;
+ASSERT NOT x_14 OR NOT x_46;
+ASSERT NOT x_14 OR NOT x_54;
+ASSERT NOT x_14 OR NOT x_62;
+ASSERT NOT x_14 OR NOT x_70;
+ASSERT NOT x_22 OR NOT x_30;
+ASSERT NOT x_22 OR NOT x_38;
+ASSERT NOT x_22 OR NOT x_46;
+ASSERT NOT x_22 OR NOT x_54;
+ASSERT NOT x_22 OR NOT x_62;
+ASSERT NOT x_22 OR NOT x_70;
+ASSERT NOT x_30 OR NOT x_38;
+ASSERT NOT x_30 OR NOT x_46;
+ASSERT NOT x_30 OR NOT x_54;
+ASSERT NOT x_30 OR NOT x_62;
+ASSERT NOT x_30 OR NOT x_70;
+ASSERT NOT x_38 OR NOT x_46;
+ASSERT NOT x_38 OR NOT x_54;
+ASSERT NOT x_38 OR NOT x_62;
+ASSERT NOT x_38 OR NOT x_70;
+ASSERT NOT x_46 OR NOT x_54;
+ASSERT NOT x_46 OR NOT x_62;
+ASSERT NOT x_46 OR NOT x_70;
+ASSERT NOT x_54 OR NOT x_62;
+ASSERT NOT x_54 OR NOT x_70;
+ASSERT NOT x_62 OR NOT x_70;
+ASSERT NOT x_7 OR NOT x_15;
+ASSERT NOT x_7 OR NOT x_23;
+ASSERT NOT x_7 OR NOT x_31;
+ASSERT NOT x_7 OR NOT x_39;
+ASSERT NOT x_7 OR NOT x_47;
+ASSERT NOT x_7 OR NOT x_55;
+ASSERT NOT x_7 OR NOT x_63;
+ASSERT NOT x_7 OR NOT x_71;
+ASSERT NOT x_15 OR NOT x_23;
+ASSERT NOT x_15 OR NOT x_31;
+ASSERT NOT x_15 OR NOT x_39;
+ASSERT NOT x_15 OR NOT x_47;
+ASSERT NOT x_15 OR NOT x_55;
+ASSERT NOT x_15 OR NOT x_63;
+ASSERT NOT x_15 OR NOT x_71;
+ASSERT NOT x_23 OR NOT x_31;
+ASSERT NOT x_23 OR NOT x_39;
+ASSERT NOT x_23 OR NOT x_47;
+ASSERT NOT x_23 OR NOT x_55;
+ASSERT NOT x_23 OR NOT x_63;
+ASSERT NOT x_23 OR NOT x_71;
+ASSERT NOT x_31 OR NOT x_39;
+ASSERT NOT x_31 OR NOT x_47;
+ASSERT NOT x_31 OR NOT x_55;
+ASSERT NOT x_31 OR NOT x_63;
+ASSERT NOT x_31 OR NOT x_71;
+ASSERT NOT x_39 OR NOT x_47;
+ASSERT NOT x_39 OR NOT x_55;
+ASSERT NOT x_39 OR NOT x_63;
+ASSERT NOT x_39 OR NOT x_71;
+ASSERT NOT x_47 OR NOT x_55;
+ASSERT NOT x_47 OR NOT x_63;
+ASSERT NOT x_47 OR NOT x_71;
+ASSERT NOT x_55 OR NOT x_63;
+ASSERT NOT x_55 OR NOT x_71;
+ASSERT NOT x_63 OR NOT x_71;
+ASSERT NOT x_8 OR NOT x_16;
+ASSERT NOT x_8 OR NOT x_24;
+ASSERT NOT x_8 OR NOT x_32;
+ASSERT NOT x_8 OR NOT x_40;
+ASSERT NOT x_8 OR NOT x_48;
+ASSERT NOT x_8 OR NOT x_56;
+ASSERT NOT x_8 OR NOT x_64;
+ASSERT NOT x_8 OR NOT x_72;
+ASSERT NOT x_16 OR NOT x_24;
+ASSERT NOT x_16 OR NOT x_32;
+ASSERT NOT x_16 OR NOT x_40;
+ASSERT NOT x_16 OR NOT x_48;
+ASSERT NOT x_16 OR NOT x_56;
+ASSERT NOT x_16 OR NOT x_64;
+ASSERT NOT x_16 OR NOT x_72;
+ASSERT NOT x_24 OR NOT x_32;
+ASSERT NOT x_24 OR NOT x_40;
+ASSERT NOT x_24 OR NOT x_48;
+ASSERT NOT x_24 OR NOT x_56;
+ASSERT NOT x_24 OR NOT x_64;
+ASSERT NOT x_24 OR NOT x_72;
+ASSERT NOT x_32 OR NOT x_40;
+ASSERT NOT x_32 OR NOT x_48;
+ASSERT NOT x_32 OR NOT x_56;
+ASSERT NOT x_32 OR NOT x_64;
+ASSERT NOT x_32 OR NOT x_72;
+ASSERT NOT x_40 OR NOT x_48;
+ASSERT NOT x_40 OR NOT x_56;
+ASSERT NOT x_40 OR NOT x_64;
+ASSERT NOT x_40 OR NOT x_72;
+ASSERT NOT x_48 OR NOT x_56;
+ASSERT NOT x_48 OR NOT x_64;
+ASSERT NOT x_48 OR NOT x_72;
+ASSERT NOT x_56 OR NOT x_64;
+ASSERT NOT x_56 OR NOT x_72;
+ASSERT NOT x_64 OR NOT x_72;
+ASSERT x_8 OR x_7 OR x_6 OR x_5 OR x_4 OR x_3 OR x_2 OR x_1;
+ASSERT x_16 OR x_15 OR x_14 OR x_13 OR x_12 OR x_11 OR x_10 OR x_9;
+ASSERT x_24 OR x_23 OR x_22 OR x_21 OR x_20 OR x_19 OR x_18 OR x_17;
+ASSERT x_32 OR x_31 OR x_30 OR x_29 OR x_28 OR x_27 OR x_26 OR x_25;
+ASSERT x_40 OR x_39 OR x_38 OR x_37 OR x_36 OR x_35 OR x_34 OR x_33;
+ASSERT x_48 OR x_47 OR x_46 OR x_45 OR x_44 OR x_43 OR x_42 OR x_41;
+ASSERT x_56 OR x_55 OR x_54 OR x_53 OR x_52 OR x_51 OR x_50 OR x_49;
+ASSERT x_64 OR x_63 OR x_62 OR x_61 OR x_60 OR x_59 OR x_58 OR x_57;
+ASSERT x_72 OR x_71 OR x_70 OR x_69 OR x_68 OR x_67 OR x_66 OR x_65;
+
+
+QUERY FALSE;
diff --git a/test/regress/regress2/instance_1444.smt b/test/regress/regress2/instance_1444.smt
new file mode 100644
index 0000000..1bed834
--- /dev/null
+++ b/test/regress/regress2/instance_1444.smt
@@ -0,0 +1,5797 @@
+
+;;; Taken from
+;;; http://www.uni-ulm.de/fileadmin/website_uni_ulm/iui.inst.190/Mitarbeiter/eibach/benchmark-attack-bivium-20080519-ending.zip
+;;; benchmark-attack-bivium-20080519-ending/UNSAT/45/instance_1444.cnf
+
+(benchmark b
+:status unsat
+:logic QF_UF
+:extrapreds ((x1))
+: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))
+:extrapreds ((x770))
+:extrapreds ((x771))
+:extrapreds ((x772))
+:extrapreds ((x773))
+:extrapreds ((x774))
+:extrapreds ((x775))
+:extrapreds ((x776))
+:extrapreds ((x777))
+:extrapreds ((x778))
+:extrapreds ((x779))
+:extrapreds ((x780))
+:extrapreds ((x781))
+:extrapreds ((x782))
+:extrapreds ((x783))
+:extrapreds ((x784))
+:extrapreds ((x785))
+:extrapreds ((x786))
+:extrapreds ((x787))
+:extrapreds ((x788))
+:extrapreds ((x789))
+:extrapreds ((x790))
+:extrapreds ((x791))
+:extrapreds ((x792))
+:extrapreds ((x793))
+:extrapreds ((x794))
+:extrapreds ((x795))
+:extrapreds ((x796))
+:extrapreds ((x797))
+:extrapreds ((x798))
+:extrapreds ((x799))
+:extrapreds ((x800))
+:extrapreds ((x801))
+:extrapreds ((x802))
+:extrapreds ((x803))
+:extrapreds ((x804))
+:extrapreds ((x805))
+:extrapreds ((x806))
+:extrapreds ((x807))
+:extrapreds ((x808))
+:extrapreds ((x809))
+:extrapreds ((x810))
+:extrapreds ((x811))
+:extrapreds ((x812))
+:extrapreds ((x813))
+:extrapreds ((x814))
+:extrapreds ((x815))
+:extrapreds ((x816))
+:extrapreds ((x817))
+:extrapreds ((x818))
+:extrapreds ((x819))
+:extrapreds ((x820))
+:extrapreds ((x821))
+:extrapreds ((x822))
+:extrapreds ((x823))
+:extrapreds ((x824))
+:extrapreds ((x825))
+:extrapreds ((x826))
+:extrapreds ((x827))
+:extrapreds ((x828))
+:extrapreds ((x829))
+:extrapreds ((x830))
+:extrapreds ((x831))
+:extrapreds ((x832))
+:extrapreds ((x833))
+:extrapreds ((x834))
+:extrapreds ((x835))
+:extrapreds ((x836))
+:extrapreds ((x837))
+:extrapreds ((x838))
+:extrapreds ((x839))
+:extrapreds ((x840))
+:extrapreds ((x841))
+:extrapreds ((x842))
+:extrapreds ((x843))
+:extrapreds ((x844))
+:extrapreds ((x845))
+:extrapreds ((x846))
+:extrapreds ((x847))
+:extrapreds ((x848))
+:extrapreds ((x849))
+:extrapreds ((x850))
+:extrapreds ((x851))
+:extrapreds ((x852))
+:extrapreds ((x853))
+:extrapreds ((x854))
+:extrapreds ((x855))
+:extrapreds ((x856))
+:extrapreds ((x857))
+:extrapreds ((x858))
+:extrapreds ((x859))
+:extrapreds ((x860))
+:extrapreds ((x861))
+:extrapreds ((x862))
+:extrapreds ((x863))
+:extrapreds ((x864))
+:extrapreds ((x865))
+:extrapreds ((x866))
+:extrapreds ((x867))
+:extrapreds ((x868))
+:extrapreds ((x869))
+:extrapreds ((x870))
+:extrapreds ((x871))
+:extrapreds ((x872))
+:extrapreds ((x873))
+:extrapreds ((x874))
+:extrapreds ((x875))
+:extrapreds ((x876))
+:extrapreds ((x877))
+:extrapreds ((x878))
+:extrapreds ((x879))
+:extrapreds ((x880))
+:extrapreds ((x881))
+:extrapreds ((x882))
+:extrapreds ((x883))
+:extrapreds ((x884))
+:extrapreds ((x885))
+:extrapreds ((x886))
+:extrapreds ((x887))
+:extrapreds ((x888))
+:extrapreds ((x889))
+:extrapreds ((x890))
+:extrapreds ((x891))
+:extrapreds ((x892))
+:extrapreds ((x893))
+:extrapreds ((x894))
+:extrapreds ((x895))
+:extrapreds ((x896))
+:extrapreds ((x897))
+:extrapreds ((x898))
+:extrapreds ((x899))
+:extrapreds ((x900))
+:extrapreds ((x901))
+:extrapreds ((x902))
+:extrapreds ((x903))
+:extrapreds ((x904))
+:extrapreds ((x905))
+:extrapreds ((x906))
+:extrapreds ((x907))
+:extrapreds ((x908))
+:extrapreds ((x909))
+:extrapreds ((x910))
+:extrapreds ((x911))
+:extrapreds ((x912))
+:extrapreds ((x913))
+:extrapreds ((x914))
+:extrapreds ((x915))
+:extrapreds ((x916))
+:extrapreds ((x917))
+:extrapreds ((x918))
+:extrapreds ((x919))
+:extrapreds ((x920))
+:extrapreds ((x921))
+:extrapreds ((x922))
+:extrapreds ((x923))
+:extrapreds ((x924))
+:extrapreds ((x925))
+:extrapreds ((x926))
+:extrapreds ((x927))
+:extrapreds ((x928))
+:extrapreds ((x929))
+:extrapreds ((x930))
+:extrapreds ((x931))
+:extrapreds ((x932))
+:extrapreds ((x933))
+:extrapreds ((x934))
+:extrapreds ((x935))
+:extrapreds ((x936))
+:extrapreds ((x937))
+:extrapreds ((x938))
+:extrapreds ((x939))
+:extrapreds ((x940))
+:extrapreds ((x941))
+:extrapreds ((x942))
+:extrapreds ((x943))
+:extrapreds ((x944))
+:extrapreds ((x945))
+:extrapreds ((x946))
+:extrapreds ((x947))
+:extrapreds ((x948))
+:extrapreds ((x949))
+:extrapreds ((x950))
+:extrapreds ((x951))
+:extrapreds ((x952))
+:extrapreds ((x953))
+:extrapreds ((x954))
+:extrapreds ((x955))
+:extrapreds ((x956))
+:extrapreds ((x957))
+:extrapreds ((x958))
+:extrapreds ((x959))
+:extrapreds ((x960))
+:extrapreds ((x961))
+:extrapreds ((x962))
+:extrapreds ((x963))
+:extrapreds ((x964))
+:extrapreds ((x965))
+:extrapreds ((x966))
+:extrapreds ((x967))
+:extrapreds ((x968))
+:extrapreds ((x969))
+:extrapreds ((x970))
+:extrapreds ((x971))
+:extrapreds ((x972))
+:extrapreds ((x973))
+:extrapreds ((x974))
+:extrapreds ((x975))
+:extrapreds ((x976))
+:extrapreds ((x977))
+:extrapreds ((x978))
+:extrapreds ((x979))
+:extrapreds ((x980))
+:extrapreds ((x981))
+:extrapreds ((x982))
+:extrapreds ((x983))
+:extrapreds ((x984))
+:extrapreds ((x985))
+:extrapreds ((x986))
+:extrapreds ((x987))
+:extrapreds ((x988))
+:extrapreds ((x989))
+:extrapreds ((x990))
+:extrapreds ((x991))
+:extrapreds ((x992))
+:extrapreds ((x993))
+:extrapreds ((x994))
+:extrapreds ((x995))
+:extrapreds ((x996))
+:extrapreds ((x997))
+:extrapreds ((x998))
+:extrapreds ((x999))
+:extrapreds ((x1000))
+:extrapreds ((x1001))
+:extrapreds ((x1002))
+:extrapreds ((x1003))
+:extrapreds ((x1004))
+:extrapreds ((x1005))
+:extrapreds ((x1006))
+:extrapreds ((x1007))
+:extrapreds ((x1008))
+:extrapreds ((x1009))
+:extrapreds ((x1010))
+:extrapreds ((x1011))
+:extrapreds ((x1012))
+:extrapreds ((x1013))
+:extrapreds ((x1014))
+:extrapreds ((x1015))
+:extrapreds ((x1016))
+:extrapreds ((x1017))
+:extrapreds ((x1018))
+:extrapreds ((x1019))
+:extrapreds ((x1020))
+:extrapreds ((x1021))
+:extrapreds ((x1022))
+:extrapreds ((x1023))
+:extrapreds ((x1024))
+:extrapreds ((x1025))
+:extrapreds ((x1026))
+:extrapreds ((x1027))
+:extrapreds ((x1028))
+:extrapreds ((x1029))
+:extrapreds ((x1030))
+:extrapreds ((x1031))
+:extrapreds ((x1032))
+:extrapreds ((x1033))
+:extrapreds ((x1034))
+:extrapreds ((x1035))
+:extrapreds ((x1036))
+:extrapreds ((x1037))
+:extrapreds ((x1038))
+:extrapreds ((x1039))
+:extrapreds ((x1040))
+:extrapreds ((x1041))
+:extrapreds ((x1042))
+:extrapreds ((x1043))
+:extrapreds ((x1044))
+:extrapreds ((x1045))
+:extrapreds ((x1046))
+:extrapreds ((x1047))
+:extrapreds ((x1048))
+:extrapreds ((x1049))
+:extrapreds ((x1050))
+:extrapreds ((x1051))
+:extrapreds ((x1052))
+:extrapreds ((x1053))
+:extrapreds ((x1054))
+:extrapreds ((x1055))
+:extrapreds ((x1056))
+:extrapreds ((x1057))
+:extrapreds ((x1058))
+:extrapreds ((x1059))
+:extrapreds ((x1060))
+:extrapreds ((x1061))
+:extrapreds ((x1062))
+:extrapreds ((x1063))
+:extrapreds ((x1064))
+:extrapreds ((x1065))
+:extrapreds ((x1066))
+:extrapreds ((x1067))
+:extrapreds ((x1068))
+:extrapreds ((x1069))
+:extrapreds ((x1070))
+:extrapreds ((x1071))
+:extrapreds ((x1072))
+:extrapreds ((x1073))
+:extrapreds ((x1074))
+:extrapreds ((x1075))
+:extrapreds ((x1076))
+:extrapreds ((x1077))
+:extrapreds ((x1078))
+:extrapreds ((x1079))
+:extrapreds ((x1080))
+:extrapreds ((x1081))
+:extrapreds ((x1082))
+:extrapreds ((x1083))
+:extrapreds ((x1084))
+:extrapreds ((x1085))
+:extrapreds ((x1086))
+:extrapreds ((x1087))
+:extrapreds ((x1088))
+:extrapreds ((x1089))
+:extrapreds ((x1090))
+:extrapreds ((x1091))
+:extrapreds ((x1092))
+:extrapreds ((x1093))
+:extrapreds ((x1094))
+:extrapreds ((x1095))
+:extrapreds ((x1096))
+:extrapreds ((x1097))
+:extrapreds ((x1098))
+:extrapreds ((x1099))
+:extrapreds ((x1100))
+:extrapreds ((x1101))
+:extrapreds ((x1102))
+:extrapreds ((x1103))
+:extrapreds ((x1104))
+:extrapreds ((x1105))
+:extrapreds ((x1106))
+:extrapreds ((x1107))
+:extrapreds ((x1108))
+:extrapreds ((x1109))
+:extrapreds ((x1110))
+:extrapreds ((x1111))
+:extrapreds ((x1112))
+:extrapreds ((x1113))
+:extrapreds ((x1114))
+:extrapreds ((x1115))
+:extrapreds ((x1116))
+:extrapreds ((x1117))
+:extrapreds ((x1118))
+:extrapreds ((x1119))
+:extrapreds ((x1120))
+:extrapreds ((x1121))
+:extrapreds ((x1122))
+:extrapreds ((x1123))
+:extrapreds ((x1124))
+:extrapreds ((x1125))
+:extrapreds ((x1126))
+:extrapreds ((x1127))
+:extrapreds ((x1128))
+:extrapreds ((x1129))
+:extrapreds ((x1130))
+:extrapreds ((x1131))
+:extrapreds ((x1132))
+:extrapreds ((x1133))
+:extrapreds ((x1134))
+:extrapreds ((x1135))
+:extrapreds ((x1136))
+:extrapreds ((x1137))
+:extrapreds ((x1138))
+:extrapreds ((x1139))
+:extrapreds ((x1140))
+:extrapreds ((x1141))
+:extrapreds ((x1142))
+:extrapreds ((x1143))
+:extrapreds ((x1144))
+:extrapreds ((x1145))
+:extrapreds ((x1146))
+:extrapreds ((x1147))
+:extrapreds ((x1148))
+:extrapreds ((x1149))
+:extrapreds ((x1150))
+:extrapreds ((x1151))
+:extrapreds ((x1152))
+:extrapreds ((x1153))
+:extrapreds ((x1154))
+:extrapreds ((x1155))
+:extrapreds ((x1156))
+:extrapreds ((x1157))
+:extrapreds ((x1158))
+:extrapreds ((x1159))
+:extrapreds ((x1160))
+:extrapreds ((x1161))
+:extrapreds ((x1162))
+:extrapreds ((x1163))
+:extrapreds ((x1164))
+:extrapreds ((x1165))
+:extrapreds ((x1166))
+:extrapreds ((x1167))
+:extrapreds ((x1168))
+:extrapreds ((x1169))
+:extrapreds ((x1170))
+:extrapreds ((x1171))
+:extrapreds ((x1172))
+:extrapreds ((x1173))
+:extrapreds ((x1174))
+:extrapreds ((x1175))
+:extrapreds ((x1176))
+:extrapreds ((x1177))
+:extrapreds ((x1178))
+:extrapreds ((x1179))
+:extrapreds ((x1180))
+:extrapreds ((x1181))
+:extrapreds ((x1182))
+:extrapreds ((x1183))
+:extrapreds ((x1184))
+:extrapreds ((x1185))
+:extrapreds ((x1186))
+:extrapreds ((x1187))
+:extrapreds ((x1188))
+:extrapreds ((x1189))
+:extrapreds ((x1190))
+:extrapreds ((x1191))
+:extrapreds ((x1192))
+:extrapreds ((x1193))
+:extrapreds ((x1194))
+:extrapreds ((x1195))
+:extrapreds ((x1196))
+:extrapreds ((x1197))
+:extrapreds ((x1198))
+:extrapreds ((x1199))
+:extrapreds ((x1200))
+:extrapreds ((x1201))
+:extrapreds ((x1202))
+:extrapreds ((x1203))
+:extrapreds ((x1204))
+:extrapreds ((x1205))
+:extrapreds ((x1206))
+:extrapreds ((x1207))
+:extrapreds ((x1208))
+:extrapreds ((x1209))
+:extrapreds ((x1210))
+:extrapreds ((x1211))
+:extrapreds ((x1212))
+:extrapreds ((x1213))
+:extrapreds ((x1214))
+:extrapreds ((x1215))
+:extrapreds ((x1216))
+:extrapreds ((x1217))
+:extrapreds ((x1218))
+:extrapreds ((x1219))
+:extrapreds ((x1220))
+:extrapreds ((x1221))
+:extrapreds ((x1222))
+:extrapreds ((x1223))
+:extrapreds ((x1224))
+:extrapreds ((x1225))
+:extrapreds ((x1226))
+:extrapreds ((x1227))
+:extrapreds ((x1228))
+:extrapreds ((x1229))
+:extrapreds ((x1230))
+:extrapreds ((x1231))
+:extrapreds ((x1232))
+:extrapreds ((x1233))
+:extrapreds ((x1234))
+:extrapreds ((x1235))
+:extrapreds ((x1236))
+:extrapreds ((x1237))
+:extrapreds ((x1238))
+:extrapreds ((x1239))
+:extrapreds ((x1240))
+:extrapreds ((x1241))
+:extrapreds ((x1242))
+:extrapreds ((x1243))
+:extrapreds ((x1244))
+:extrapreds ((x1245))
+:extrapreds ((x1246))
+:extrapreds ((x1247))
+:extrapreds ((x1248))
+:extrapreds ((x1249))
+:extrapreds ((x1250))
+:extrapreds ((x1251))
+:extrapreds ((x1252))
+:extrapreds ((x1253))
+:extrapreds ((x1254))
+:extrapreds ((x1255))
+:extrapreds ((x1256))
+:extrapreds ((x1257))
+:formula (and
+(or x163)
+(or (not x136))
+(or (not x151))
+(or x168)
+(or (not x158))
+(or (not x171))
+(or (not x143))
+(or (not x177))
+(or x150)
+(or x135)
+(or x144)
+(or x159)
+(or (not x176))
+(or x149)
+(or x161)
+(or x134)
+(or x169)
+(or (not x137))
+(or x160)
+(or (not x147))
+(or (not x152))
+(or (not x157))
+(or (not x142))
+(or x170)
+(or (not x146))
+(or (not x139))
+(or x154)
+(or x175)
+(or x145)
+(or (not x162))
+(or (not x167))
+(or (not x140))
+(or x155)
+(or x172)
+(or (not x148))
+(or x166)
+(or (not x173))
+(or x141)
+(or (not x156))
+(or (not x165))
+(or (not x133))
+(or x164)
+(or x174)
+(or x153)
+(or (not x138))
+(or (not x66) x93)
+(or x66 (not x93))
+(or (not x65) x92)
+(or x65 (not x92))
+(or x64 x91)
+(or (not x64) (not x91))
+(or x63 x90)
+(or (not x63) (not x90))
+(or (not x62) x89)
+(or x62 (not x89))
+(or (not x61) x88)
+(or x61 (not x88))
+(or (not x60) x87)
+(or x60 (not x87))
+(or (not x59) x86)
+(or x59 (not x86))
+(or (not x58) x85)
+(or x58 (not x85))
+(or x57 x84)
+(or (not x57) (not x84))
+(or (not x56) x83)
+(or x56 (not x83))
+(or (not x55) x82)
+(or x55 (not x82))
+(or (not x54) x81)
+(or x54 (not x81))
+(or x53 x80)
+(or (not x53) (not x80))
+(or x52 x79)
+(or (not x52) (not x79))
+(or (not x51) x78)
+(or x51 (not x78))
+(or (not x50) x77)
+(or x50 (not x77))
+(or x49 x76)
+(or (not x49) (not x76))
+(or x48 x75)
+(or (not x48) (not x75))
+(or x47 x74)
+(or (not x47) (not x74))
+(or (not x46) x73)
+(or x46 (not x73))
+(or x45 x72)
+(or (not x45) (not x72))
+(or (not x44) x71)
+(or x44 (not x71))
+(or x43 x70)
+(or (not x43) (not x70))
+(or (not x42) x69)
+(or x42 (not x69))
+(or x41 x68)
+(or (not x41) (not x68))
+(or x40 x67)
+(or (not x40) (not x67))
+(or x39 x66)
+(or (not x39) (not x66))
+(or (not x38) x65)
+(or x38 (not x65))
+(or x37 x64)
+(or (not x37) (not x64))
+(or (not x132) x480)
+(or x132 (not x480))
+(or x131 x481)
+(or (not x131) (not x481))
+(or x130 x482)
+(or (not x130) (not x482))
+(or (not x129) x483)
+(or x129 (not x483))
+(or (not x128) x484)
+(or x128 (not x484))
+(or x127 x485)
+(or (not x127) (not x485))
+(or x126 x486)
+(or (not x126) (not x486))
+(or x125 x487)
+(or (not x125) (not x487))
+(or x124 x488)
+(or (not x124) (not x488))
+(or x123 x489)
+(or (not x123) (not x489))
+(or x122 x490)
+(or (not x122) (not x490))
+(or x121 x491)
+(or (not x121) (not x491))
+(or x120 x492)
+(or (not x120) (not x492))
+(or (not x119) x493)
+(or x119 (not x493))
+(or (not x118) x494)
+(or x118 (not x494))
+(or (not x495) x496)
+(or x495 (not x496))
+(or x497 x498)
+(or (not x497) (not x498))
+(or (not x499) x500)
+(or x499 (not x500))
+(or x501 x502)
+(or (not x501) (not x502))
+(or (not x503) x504)
+(or x503 (not x504))
+(or (not x505) x506)
+(or x505 (not x506))
+(or x507 x508)
+(or (not x507) (not x508))
+(or x509 x510)
+(or (not x509) (not x510))
+(or x511 x512)
+(or (not x511) (not x512))
+(or (not x513) x514)
+(or x513 (not x514))
+(or x515 x516)
+(or (not x515) (not x516))
+(or x517 x518)
+(or (not x517) (not x518))
+(or x519 x520)
+(or (not x519) (not x520))
+(or (not x521) x522)
+(or x521 (not x522))
+(or x523 x524)
+(or (not x523) (not x524))
+(or x525 x526)
+(or (not x525) (not x526))
+(or x527 x528)
+(or (not x527) (not x528))
+(or x529 x530)
+(or (not x529) (not x530))
+(or (not x531) x532)
+(or x531 (not x532))
+(or x533 x534)
+(or (not x533) (not x534))
+(or (not x535) x536)
+(or x535 (not x536))
+(or (not x537) x538)
+(or x537 (not x538))
+(or (not x539) x540)
+(or x539 (not x540))
+(or (not x541) x542)
+(or x541 (not x542))
+(or (not x543) x544)
+(or x543 (not x544))
+(or x545 x546)
+(or (not x545) (not x546))
+(or x547 x548)
+(or (not x547) (not x548))
+(or x549 x550)
+(or (not x549) (not x550))
+(or x551 x552)
+(or (not x551) (not x552))
+(or (not x553) x554)
+(or x553 (not x554))
+(or (not x555) x556)
+(or x555 (not x556))
+(or x557 x558)
+(or (not x557) (not x558))
+(or (not x559) x560)
+(or x559 (not x560))
+(or x561 x562)
+(or (not x561) (not x562))
+(or x563 x564)
+(or (not x563) (not x564))
+(or x565 x566)
+(or (not x565) (not x566))
+(or (not x567) x568)
+(or x567 (not x568))
+(or x569 x570)
+(or (not x569) (not x570))
+(or x571 x572)
+(or (not x571) (not x572))
+(or x573 x574)
+(or (not x573) (not x574))
+(or x575 x576)
+(or (not x575) (not x576))
+(or x577 x578)
+(or (not x577) (not x578))
+(or (not x579) x580)
+(or x579 (not x580))
+(or (not x581) x582)
+(or x581 (not x582))
+(or (not x583) x584)
+(or x583 (not x584))
+(or x585 x586)
+(or (not x585) (not x586))
+(or (not x587) x588)
+(or x587 (not x588))
+(or (not x589) x590)
+(or x589 (not x590))
+(or (not x187) x202)
+(or x187 (not x202))
+(or x188 x203)
+(or (not x188) (not x203))
+(or (not x189) x204)
+(or x189 (not x204))
+(or (not x205) x591)
+(or x205 (not x591))
+(or (not x206) x592)
+(or x206 (not x592))
+(or (not x207) x593)
+(or x207 (not x593))
+(or x208 x594)
+(or (not x208) (not x594))
+(or (not x209) x595)
+(or x209 (not x595))
+(or (not x210) x596)
+(or x210 (not x596))
+(or x211 x597)
+(or (not x211) (not x597))
+(or (not x212) x598)
+(or x212 (not x598))
+(or x213 x599)
+(or (not x213) (not x599))
+(or x214 x600)
+(or (not x214) (not x600))
+(or x215 x601)
+(or (not x215) (not x601))
+(or x216 x602)
+(or (not x216) (not x602))
+(or x603 x604)
+(or (not x603) (not x604))
+(or x605 x606)
+(or (not x605) (not x606))
+(or x608 x609)
+(or (not x608) (not x609))
+(or x612 x613)
+(or (not x612) (not x613))
+(or x616 x617)
+(or (not x616) (not x617))
+(or x620 x621)
+(or (not x620) (not x621))
+(or (not x625) x626)
+(or x625 (not x626))
+(or x630 x631)
+(or (not x630) (not x631))
+(or (not x635) x636)
+(or x635 (not x636))
+(or x640 x641)
+(or (not x640) (not x641))
+(or x645 x646)
+(or (not x645) (not x646))
+(or x650 x651)
+(or (not x650) (not x651))
+(or x655 x656)
+(or (not x655) (not x656))
+(or x660 x661)
+(or (not x660) (not x661))
+(or (not x665) x666)
+(or x665 (not x666))
+(or x670 x671)
+(or (not x670) (not x671))
+(or x675 x676)
+(or (not x675) (not x676))
+(or (not x680) x681)
+(or x680 (not x681))
+(or x685 x686)
+(or (not x685) (not x686))
+(or x690 x691)
+(or (not x690) (not x691))
+(or x695 x696)
+(or (not x695) (not x696))
+(or x700 x701)
+(or (not x700) (not x701))
+(or (not x705) x706)
+(or x705 (not x706))
+(or x710 x711)
+(or (not x710) (not x711))
+(or x715 x716)
+(or (not x715) (not x716))
+(or (not x720) x721)
+(or x720 (not x721))
+(or x725 x726)
+(or (not x725) (not x726))
+(or x730 x731)
+(or (not x730) (not x731))
+(or x735 x736)
+(or (not x735) (not x736))
+(or x741 x742)
+(or (not x741) (not x742))
+(or (not x748) x749)
+(or x748 (not x749))
+(or x755 x756)
+(or (not x755) (not x756))
+(or x762 x763)
+(or (not x762) (not x763))
+(or x769 x770)
+(or (not x769) (not x770))
+(or (not x776) x777)
+(or x776 (not x777))
+(or (not x783) x784)
+(or x783 (not x784))
+(or x790 x791)
+(or (not x790) (not x791))
+(or (not x797) x798)
+(or x797 (not x798))
+(or (not x804) x805)
+(or x804 (not x805))
+(or x811 x812)
+(or (not x811) (not x812))
+(or (not x820) x821)
+(or x820 (not x821))
+(or (not x834) x835)
+(or x834 (not x835))
+(or (not x847) x848)
+(or x847 (not x848))
+(or (not x860) x861)
+(or x860 (not x861))
+(or x874 x875)
+(or (not x874) (not x875))
+(or (not x887) x888)
+(or x887 (not x888))
+(or x902 x903)
+(or (not x902) (not x903))
+(or x915 x916)
+(or (not x915) (not x916))
+(or (not x929) x930)
+(or x929 (not x930))
+(or x944 x945)
+(or (not x944) (not x945))
+(or (not x957) x958)
+(or x957 (not x958))
+(or x971 x972)
+(or (not x971) (not x972))
+(or (not x985) x986)
+(or x985 (not x986))
+(or (not x1000) x1001)
+(or x1000 (not x1001))
+(or (not x1014) x1015)
+(or x1014 (not x1015))
+(or (not x1028) x1029)
+(or x1028 (not x1029))
+(or (not x1041) x1042)
+(or x1041 (not x1042))
+(or (not x1058) x1059)
+(or x1058 (not x1059))
+(or (not x1076) x1077)
+(or x1076 (not x1077))
+(or (not x1095) x1096)
+(or x1095 (not x1096))
+(or (not x1112) x1113)
+(or x1112 (not x1113))
+(or (not x1127) x1128)
+(or x1127 (not x1128))
+(or x1143 x1144)
+(or (not x1143) (not x1144))
+(or x1161 x1162)
+(or (not x1161) (not x1162))
+(or x1178 x1179)
+(or (not x1178) (not x1179))
+(or (not x1194) x1195)
+(or x1194 (not x1195))
+(or (not x1210) x1211)
+(or x1210 (not x1211))
+(or x1230 x1231)
+(or (not x1230) (not x1231))
+(or (not x1256) x1257)
+(or x1256 (not x1257))
+(or (not x218) x51)
+(or (not x218) (not x51) x52)
+(or x218 (not x51) (not x52))
+(or (not x318) x64)
+(or (not x318) (not x64) x88)
+(or x318 (not x64) (not x88) (not x89))
+(or (not x318) (not x64) (not x88) x89)
+(or (not x1147) x202 x211)
+(or x1147 (not x202) x211)
+(or x1147 x202 (not x211))
+(or (not x1147) (not x202) (not x211))
+(or (not x341) x85)
+(or (not x341) (not x85) x86)
+(or x341 (not x85) (not x86) (not x88))
+(or (not x341) (not x85) (not x86) x88)
+(or (not x523) x7 x34)
+(or x523 (not x7) x34)
+(or x523 x7 (not x34))
+(or (not x523) (not x7) (not x34))
+(or (not x267) x26)
+(or (not x267) (not x26) x27)
+(or x267 (not x26) (not x27))
+(or (not x840) x120 x180)
+(or x840 (not x120) x180)
+(or x840 x120 (not x180))
+(or (not x840) (not x120) (not x180))
+(or (not x1244) x478 x479)
+(or x1244 (not x478) x479)
+(or x1244 x478 (not x479))
+(or (not x1244) (not x478) (not x479))
+(or (not x342) x5)
+(or (not x342) (not x5) x6)
+(or x342 (not x5) (not x6))
+(or (not x944) x942 x943)
+(or x944 (not x942) x943)
+(or x944 x942 (not x943))
+(or (not x944) (not x942) (not x943))
+(or (not x610) x117 x129)
+(or x610 (not x117) x129)
+(or x610 x117 (not x129))
+(or (not x610) (not x117) (not x129))
+(or (not x730) x728 x729)
+(or x730 (not x728) x729)
+(or x730 x728 (not x729))
+(or (not x730) (not x728) (not x729))
+(or (not x1162) x1159 x1160)
+(or x1162 (not x1159) x1160)
+(or x1162 x1159 (not x1160))
+(or (not x1162) (not x1159) (not x1160))
+(or (not x879) x332 x333)
+(or x879 (not x332) x333)
+(or x879 x332 (not x333))
+(or (not x879) (not x332) (not x333))
+(or (not x682) x117 x221)
+(or x682 (not x117) x221)
+(or x682 x117 (not x221))
+(or (not x682) (not x117) (not x221))
+(or (not x1027) x400 x401)
+(or x1027 (not x400) x401)
+(or x1027 x400 (not x401))
+(or (not x1027) (not x400) (not x401))
+(or (not x859) x319 x320)
+(or x859 (not x319) x320)
+(or x859 x319 (not x320))
+(or (not x859) (not x319) (not x320))
+(or (not x1116) x229 x284)
+(or x1116 (not x229) x284)
+(or x1116 x229 (not x284))
+(or (not x1116) (not x229) (not x284))
+(or (not x1054) x1046 x1047)
+(or x1054 (not x1046) x1047)
+(or x1054 x1046 (not x1047))
+(or (not x1054) (not x1046) (not x1047))
+(or (not x331) x62)
+(or (not x331) (not x62) x88)
+(or x331 (not x62) (not x88))
+(or (not x877) x196 x208)
+(or x877 (not x196) x208)
+(or x877 x196 (not x208))
+(or (not x877) (not x196) (not x208))
+(or (not x373) x56)
+(or (not x373) (not x56) x82)
+(or x373 (not x56) (not x82))
+(or (not x760) x517 x757)
+(or x760 (not x517) x757)
+(or x760 x517 (not x757))
+(or (not x760) (not x517) (not x757))
+(or (not x897) x890 x891)
+(or x897 (not x890) x891)
+(or x897 x890 (not x891))
+(or (not x897) (not x890) (not x891))
+(or (not x543) x24 x93)
+(or x543 (not x24) x93)
+(or x543 x24 (not x93))
+(or (not x543) (not x24) (not x93))
+(or (not x824) x302 x303)
+(or x824 (not x302) x303)
+(or x824 x302 (not x303))
+(or (not x824) (not x302) (not x303))
+(or (not x348) x84)
+(or (not x348) (not x84) x85)
+(or x348 (not x84) (not x85) (not x87))
+(or (not x348) (not x84) (not x85) x87)
+(or (not x417) x49)
+(or (not x417) (not x49) x73)
+(or x417 (not x49) (not x73) (not x74))
+(or (not x417) (not x49) (not x73) x74)
+(or (not x1006) x1002 x1003)
+(or x1006 (not x1002) x1003)
+(or x1006 x1002 (not x1003))
+(or (not x1006) (not x1002) (not x1003))
+(or (not x1110) x427 x428)
+(or x1110 (not x427) x428)
+(or x1110 x427 (not x428))
+(or (not x1110) (not x427) (not x428))
+(or (not x965) x371 x372)
+(or x965 (not x371) x372)
+(or x965 x371 (not x372))
+(or (not x965) (not x371) (not x372))
+(or (not x347) x84)
+(or (not x347) (not x84) x85)
+(or x347 (not x84) (not x85) (not x86))
+(or (not x347) (not x84) (not x85) x86)
+(or (not x917) x21 x63)
+(or x917 (not x21) x63)
+(or x917 x21 (not x63))
+(or (not x917) (not x21) (not x63))
+(or (not x1053) x195 x196)
+(or x1053 (not x195) x196)
+(or x1053 x195 (not x196))
+(or (not x1053) (not x195) (not x196))
+(or (not x213) x56)
+(or (not x213) (not x56) x57)
+(or x213 (not x56) (not x57))
+(or (not x864) x323 x324)
+(or x864 (not x323) x324)
+(or x864 x323 (not x324))
+(or (not x864) (not x323) (not x324))
+(or (not x934) x358 x359)
+(or x934 (not x358) x359)
+(or x934 x358 (not x359))
+(or (not x934) (not x358) (not x359))
+(or (not x863) x250 x273)
+(or x863 (not x250) x273)
+(or x863 x250 (not x273))
+(or (not x863) (not x250) (not x273))
+(or (not x536) x97 x112)
+(or x536 (not x97) x112)
+(or x536 x97 (not x112))
+(or (not x536) (not x97) (not x112))
+(or (not x346) x60)
+(or (not x346) (not x60) x84)
+(or x346 (not x60) (not x84) (not x85))
+(or (not x346) (not x60) (not x84) x85)
+(or (not x1066) x1064 x1065)
+(or x1066 (not x1064) x1065)
+(or x1066 x1064 (not x1065))
+(or (not x1066) (not x1064) (not x1065))
+(or (not x427) x46)
+(or (not x427) (not x46) x74)
+(or x427 (not x46) (not x74))
+(or (not x1251) x243 x300)
+(or x1251 (not x243) x300)
+(or x1251 x243 (not x300))
+(or (not x1251) (not x243) (not x300))
+(or (not x815) x533 x813)
+(or x815 (not x533) x813)
+(or x815 x533 (not x813))
+(or (not x815) (not x533) (not x813))
+(or (not x896) x335 x336)
+(or x896 (not x335) x336)
+(or x896 x335 (not x336))
+(or (not x896) (not x335) (not x336))
+(or (not x990) x385 x386)
+(or x990 (not x385) x386)
+(or x990 x385 (not x386))
+(or (not x990) (not x385) (not x386))
+(or (not x764) x129 x184)
+(or x764 (not x129) x184)
+(or x764 x129 (not x184))
+(or (not x764) (not x129) (not x184))
+(or (not x549) x21 x90)
+(or x549 (not x21) x90)
+(or x549 x21 (not x90))
+(or (not x549) (not x21) (not x90))
+(or (not x490) x26 x53)
+(or x490 (not x26) x53)
+(or x490 x26 (not x53))
+(or (not x490) (not x26) (not x53))
+(or (not x1240) x1236 x1237)
+(or x1240 (not x1236) x1237)
+(or x1240 x1236 (not x1237))
+(or (not x1240) (not x1236) (not x1237))
+(or (not x199) x70)
+(or (not x199) (not x70) x71)
+(or x199 (not x70) (not x71))
+(or (not x601) x122 x200)
+(or x601 (not x122) x200)
+(or x601 x122 (not x200))
+(or (not x601) (not x122) (not x200))
+(or (not x948) x363 x364)
+(or x948 (not x363) x364)
+(or x948 x363 (not x364))
+(or (not x948) (not x363) (not x364))
+(or (not x333) x86)
+(or (not x333) (not x86) x87)
+(or x333 (not x86) (not x87) (not x88))
+(or (not x333) (not x86) (not x87) x88)
+(or (not x1131) x213 x231)
+(or x1131 (not x213) x231)
+(or x1131 x213 (not x231))
+(or (not x1131) (not x213) (not x231))
+(or (not x1085) x52 x61)
+(or x1085 (not x52) x61)
+(or x1085 x52 (not x61))
+(or (not x1085) (not x52) (not x61))
+(or (not x461) x66)
+(or (not x461) (not x66) x67)
+(or x461 (not x66) (not x67) (not x69))
+(or (not x461) (not x66) (not x67) x69)
+(or (not x802) x529 x799)
+(or x802 (not x529) x799)
+(or x802 x529 (not x799))
+(or (not x802) (not x529) (not x799))
+(or (not x560) x100 x186)
+(or x560 (not x100) x186)
+(or x560 x100 (not x186))
+(or (not x560) (not x100) (not x186))
+(or (not x285) x17)
+(or (not x285) (not x17) x18)
+(or x285 (not x17) (not x18))
+(or (not x883) x879 x880)
+(or x883 (not x879) x880)
+(or x883 x879 (not x880))
+(or (not x883) (not x879) (not x880))
+(or (not x1114) x8 x32)
+(or x1114 (not x8) x32)
+(or x1114 x8 (not x32))
+(or (not x1114) (not x8) (not x32))
+(or (not x526) x102 x117)
+(or x526 (not x102) x117)
+(or x526 x102 (not x117))
+(or (not x526) (not x102) (not x117))
+(or (not x254) x114)
+(or (not x254) (not x114) x115)
+(or x254 (not x114) (not x115))
+(or (not x621) x618 x619)
+(or x621 (not x618) x619)
+(or x621 x618 (not x619))
+(or (not x621) (not x618) (not x619))
+(or (not x952) x365 x366)
+(or x952 (not x365) x366)
+(or x952 x365 (not x366))
+(or (not x952) (not x365) (not x366))
+(or (not x217) x52)
+(or (not x217) (not x52) x53)
+(or x217 (not x52) (not x53))
+(or (not x1161) x1153 x1154)
+(or x1161 (not x1153) x1154)
+(or x1161 x1153 (not x1154))
+(or (not x1161) (not x1153) (not x1154))
+(or (not x1067) x53 x62)
+(or x1067 (not x53) x62)
+(or x1067 x53 (not x62))
+(or (not x1067) (not x53) (not x62))
+(or (not x1023) x1018 x1019)
+(or x1023 (not x1018) x1019)
+(or x1023 x1018 (not x1019))
+(or (not x1023) (not x1018) (not x1019))
+(or (not x323) x62)
+(or (not x323) (not x62) x90)
+(or x323 (not x62) (not x90))
+(or (not x1205) x1201 x1202)
+(or x1205 (not x1201) x1202)
+(or x1205 x1201 (not x1202))
+(or (not x1205) (not x1201) (not x1202))
+(or (not x277) x21)
+(or (not x277) (not x21) x22)
+(or x277 (not x21) (not x22))
+(or (not x690) x688 x689)
+(or x690 (not x688) x689)
+(or x690 x688 (not x689))
+(or (not x690) (not x688) (not x689))
+(or (not x577) x7 x76)
+(or x577 (not x7) x76)
+(or x577 x7 (not x76))
+(or (not x577) (not x7) (not x76))
+(or (not x1129) x7 x31)
+(or x1129 (not x7) x31)
+(or x1129 x7 (not x31))
+(or (not x1129) (not x7) (not x31))
+(or (not x957) x955 x956)
+(or x957 (not x955) x956)
+(or x957 x955 (not x956))
+(or (not x957) (not x955) (not x956))
+(or (not x563) x14 x83)
+(or x563 (not x14) x83)
+(or x563 x14 (not x83))
+(or (not x563) (not x14) (not x83))
+(or (not x838) x310 x311)
+(or x838 (not x310) x311)
+(or x838 x310 (not x311))
+(or (not x838) (not x310) (not x311))
+(or (not x279) x20)
+(or (not x279) (not x20) x21)
+(or x279 (not x20) (not x21))
+(or (not x1069) x418 x419)
+(or x1069 (not x418) x419)
+(or x1069 x418 (not x419))
+(or (not x1069) (not x418) (not x419))
+(or (not x354) x83)
+(or (not x354) (not x83) x84)
+(or x354 (not x83) (not x84) (not x85))
+(or (not x354) (not x83) (not x84) x85)
+(or (not x619) x225 x226)
+(or x619 (not x225) x226)
+(or x619 x225 (not x226))
+(or (not x619) (not x225) (not x226))
+(or (not x890) x184 x185)
+(or x890 (not x184) x185)
+(or x890 x184 (not x185))
+(or (not x890) (not x184) (not x185))
+(or (not x491) x25 x52)
+(or x491 (not x25) x52)
+(or x491 x25 (not x52))
+(or (not x491) (not x25) (not x52))
+(or (not x440) x45)
+(or (not x440) (not x45) x71)
+(or x440 (not x45) (not x71))
+(or (not x449) x68)
+(or (not x449) (not x68) x69)
+(or x449 (not x68) (not x69) (not x71))
+(or (not x449) (not x68) (not x69) x71)
+(or (not x259) x30)
+(or (not x259) (not x30) x31)
+(or x259 (not x30) (not x31))
+(or (not x828) x300 x301)
+(or x828 (not x300) x301)
+(or x828 x300 (not x301))
+(or (not x828) (not x300) (not x301))
+(or (not x634) x112 x124)
+(or x634 (not x112) x124)
+(or x634 x112 (not x124))
+(or (not x634) (not x112) (not x124))
+(or (not x1089) x1087 x1088)
+(or x1089 (not x1087) x1088)
+(or x1089 x1087 (not x1088))
+(or (not x1089) (not x1087) (not x1088))
+(or (not x1255) x1252 x1253)
+(or x1255 (not x1252) x1253)
+(or x1255 x1252 (not x1253))
+(or (not x1255) (not x1252) (not x1253))
+(or (not x447) x44)
+(or (not x447) (not x44) x68)
+(or x447 (not x44) (not x68) (not x69))
+(or (not x447) (not x44) (not x68) x69)
+(or (not x320) x88)
+(or (not x320) (not x88) x89)
+(or x320 (not x88) (not x89) (not x91))
+(or (not x320) (not x88) (not x89) x91)
+(or (not x888) x883 x884)
+(or x888 (not x883) x884)
+(or x888 x883 (not x884))
+(or (not x888) (not x883) (not x884))
+(or (not x916) x911 x912)
+(or x916 (not x911) x912)
+(or x916 x911 (not x912))
+(or (not x916) (not x911) (not x912))
+(or (not x843) x841 x842)
+(or x843 (not x841) x842)
+(or x843 x841 (not x842))
+(or (not x843) (not x841) (not x842))
+(or (not x870) x868 x869)
+(or x870 (not x868) x869)
+(or x870 x868 (not x869))
+(or (not x870) (not x868) (not x869))
+(or (not x381) x55)
+(or (not x381) (not x55) x79)
+(or x381 (not x55) (not x79) (not x80))
+(or (not x381) (not x55) (not x79) x80)
+(or (not x1082) x421 x422)
+(or x1082 (not x421) x422)
+(or x1082 x421 (not x422))
+(or (not x1082) (not x421) (not x422))
+(or (not x795) x527 x792)
+(or x795 (not x527) x792)
+(or x795 x527 (not x792))
+(or (not x795) (not x527) (not x792))
+(or (not x483) x33 x60)
+(or x483 (not x33) x60)
+(or x483 x33 (not x60))
+(or (not x483) (not x33) (not x60))
+(or (not x1221) x215 x218)
+(or x1221 (not x215) x218)
+(or x1221 x215 (not x218))
+(or (not x1221) (not x215) (not x218))
+(or (not x947) x201 x213)
+(or x947 (not x201) x213)
+(or x947 x201 (not x213))
+(or (not x947) (not x201) (not x213))
+(or (not x645) x643 x644)
+(or x645 (not x643) x644)
+(or x645 x643 (not x644))
+(or (not x645) (not x643) (not x644))
+(or (not x453) x43)
+(or (not x453) (not x43) x67)
+(or x453 (not x43) (not x67) (not x68))
+(or (not x453) (not x43) (not x67) x68)
+(or (not x921) x917 x918)
+(or x921 (not x917) x918)
+(or x921 x917 (not x918))
+(or (not x921) (not x917) (not x918))
+(or (not x1026) x1020 x1021)
+(or x1026 (not x1020) x1021)
+(or x1026 x1020 (not x1021))
+(or (not x1026) (not x1020) (not x1021))
+(or (not x733) x509 x732)
+(or x733 (not x509) x732)
+(or x733 x509 (not x732))
+(or (not x733) (not x509) (not x732))
+(or (not x1169) x47 x56)
+(or x1169 (not x47) x56)
+(or x1169 x47 (not x56))
+(or (not x1169) (not x47) (not x56))
+(or (not x850) x271 x314)
+(or x850 (not x271) x314)
+(or x850 x271 (not x314))
+(or (not x850) (not x271) (not x314))
+(or (not x361) x82)
+(or (not x361) (not x82) x83)
+(or x361 (not x82) (not x83) (not x84))
+(or (not x361) (not x82) (not x83) x84)
+(or (not x511) x13 x40)
+(or x511 (not x13) x40)
+(or x511 x13 (not x40))
+(or (not x511) (not x13) (not x40))
+(or (not x938) x356 x357)
+(or x938 (not x356) x357)
+(or x938 x356 (not x357))
+(or (not x938) (not x356) (not x357))
+(or (not x679) x103 x115)
+(or x679 (not x103) x115)
+(or x679 x103 (not x115))
+(or (not x679) (not x103) (not x115))
+(or (not x187) x82)
+(or (not x187) (not x82) x83)
+(or x187 (not x82) (not x83))
+(or (not x591) x132 x190)
+(or x591 (not x132) x190)
+(or x591 x132 (not x190))
+(or (not x591) (not x132) (not x190))
+(or (not x401) x76)
+(or (not x401) (not x76) x77)
+(or x401 (not x76) (not x77) (not x79))
+(or (not x401) (not x76) (not x77) x79)
+(or (not x1044) x65 x105)
+(or x1044 (not x65) x105)
+(or x1044 x65 (not x105))
+(or (not x1044) (not x65) (not x105))
+(or (not x991) x389 x987)
+(or x991 (not x389) x987)
+(or x991 x389 (not x987))
+(or (not x991) (not x389) (not x987))
+(or (not x722) x109 x237)
+(or x722 (not x109) x237)
+(or x722 x109 (not x237))
+(or (not x722) (not x109) (not x237))
+(or (not x895) x116 x183)
+(or x895 (not x116) x183)
+(or x895 x116 (not x183))
+(or (not x895) (not x116) (not x183))
+(or (not x743) x132 x181)
+(or x743 (not x132) x181)
+(or x743 x132 (not x181))
+(or (not x743) (not x132) (not x181))
+(or (not x748) x746 x747)
+(or x748 (not x746) x747)
+(or x748 x746 (not x747))
+(or (not x748) (not x746) (not x747))
+(or (not x1242) x206 x207)
+(or x1242 (not x206) x207)
+(or x1242 x206 (not x207))
+(or (not x1242) (not x206) (not x207))
+(or (not x519) x9 x36)
+(or x519 (not x9) x36)
+(or x519 x9 (not x36))
+(or (not x519) (not x9) (not x36))
+(or (not x400) x76)
+(or (not x400) (not x76) x77)
+(or x400 (not x76) (not x77) (not x78))
+(or (not x400) (not x76) (not x77) x78)
+(or (not x505) x16 x43)
+(or x505 (not x16) x43)
+(or x505 x16 (not x43))
+(or (not x505) (not x16) (not x43))
+(or (not x184) x85)
+(or (not x184) (not x85) x86)
+(or x184 (not x85) (not x86))
+(or (not x235) x42)
+(or (not x235) (not x42) x43)
+(or x235 (not x42) (not x43))
+(or (not x984) x382 x383)
+(or x984 (not x382) x383)
+(or x984 x382 (not x383))
+(or (not x984) (not x382) (not x383))
+(or (not x1108) x1100 x1101)
+(or x1108 (not x1100) x1101)
+(or x1108 x1100 (not x1101))
+(or (not x1108) (not x1100) (not x1101))
+(or (not x701) x257 x258)
+(or x701 (not x257) x258)
+(or x701 x257 (not x258))
+(or (not x701) (not x257) (not x258))
+(or (not x575) x8 x77)
+(or x575 (not x8) x77)
+(or x575 x8 (not x77))
+(or (not x575) (not x8) (not x77))
+(or (not x272) x105)
+(or (not x272) (not x105) x106)
+(or x272 (not x105) (not x106))
+(or (not x189) x80)
+(or (not x189) (not x80) x81)
+(or x189 (not x80) (not x81))
+(or (not x283) x18)
+(or (not x283) (not x18) x19)
+(or x283 (not x18) (not x19))
+(or (not x945) x940 x941)
+(or x945 (not x940) x941)
+(or x945 x940 (not x941))
+(or (not x945) (not x940) (not x941))
+(or (not x1124) x209 x212)
+(or x1124 (not x209) x212)
+(or x1124 x209 (not x212))
+(or (not x1124) (not x209) (not x212))
+(or (not x860) x858 x859)
+(or x860 (not x858) x859)
+(or x860 x858 (not x859))
+(or (not x860) (not x858) (not x859))
+(or (not x538) x96 x111)
+(or x538 (not x96) x111)
+(or x538 x96 (not x111))
+(or (not x538) (not x96) (not x111))
+(or (not x708) x499 x707)
+(or x708 (not x499) x707)
+(or x708 x499 (not x707))
+(or (not x708) (not x499) (not x707))
+(or (not x742) x739 x740)
+(or x742 (not x739) x740)
+(or x742 x739 (not x740))
+(or (not x742) (not x739) (not x740))
+(or (not x389) x78)
+(or (not x389) (not x78) x79)
+(or x389 (not x78) (not x79) (not x81))
+(or (not x389) (not x78) (not x79) x81)
+(or (not x903) x898 x899)
+(or x903 (not x898) x899)
+(or x903 x898 (not x899))
+(or (not x903) (not x898) (not x899))
+(or (not x980) x975 x976)
+(or x980 (not x975) x976)
+(or x980 x975 (not x976))
+(or (not x980) (not x975) (not x976))
+(or (not x421) x47)
+(or (not x421) (not x47) x75)
+(or x421 (not x47) (not x75))
+(or (not x439) x44)
+(or (not x439) (not x44) x72)
+(or x439 (not x44) (not x72))
+(or (not x485) x31 x58)
+(or x485 (not x31) x58)
+(or x485 x31 (not x58))
+(or (not x485) (not x31) (not x58))
+(or (not x438) x44)
+(or (not x438) (not x44) x70)
+(or x438 (not x44) (not x70) (not x71))
+(or (not x438) (not x44) (not x70) x71)
+(or (not x846) x312 x313)
+(or x846 (not x312) x313)
+(or x846 x312 (not x313))
+(or (not x846) (not x312) (not x313))
+(or (not x996) x994 x995)
+(or x996 (not x994) x995)
+(or x996 x994 (not x995))
+(or (not x996) (not x994) (not x995))
+(or (not x1117) x433 x434)
+(or x1117 (not x433) x434)
+(or x1117 x433 (not x434))
+(or (not x1117) (not x433) (not x434))
+(or (not x1058) x1050 x1051)
+(or x1058 (not x1050) x1051)
+(or x1058 x1050 (not x1051))
+(or (not x1058) (not x1050) (not x1051))
+(or (not x1172) x1168 x1169)
+(or x1172 (not x1168) x1169)
+(or x1172 x1168 (not x1169))
+(or (not x1172) (not x1168) (not x1169))
+(or (not x497) x20 x47)
+(or x497 (not x20) x47)
+(or x497 x20 (not x47))
+(or (not x497) (not x20) (not x47))
+(or (not x310) x65)
+(or (not x310) (not x65) x91)
+(or x310 (not x65) (not x91))
+(or (not x590) x186 x201)
+(or x590 (not x186) x201)
+(or x590 x186 (not x201))
+(or (not x590) (not x186) (not x201))
+(or (not x875) x870 x871)
+(or x875 (not x870) x871)
+(or x875 x870 (not x871))
+(or (not x875) (not x870) (not x871))
+(or (not x465) x41)
+(or (not x465) (not x41) x65)
+(or x465 (not x41) (not x65) (not x66))
+(or (not x465) (not x41) (not x65) x66)
+(or (not x500) x115 x130)
+(or x500 (not x115) x130)
+(or x500 x115 (not x130))
+(or (not x500) (not x115) (not x130))
+(or (not x266) x108)
+(or (not x266) (not x108) x109)
+(or x266 (not x108) (not x109))
+(or (not x332) x62)
+(or (not x332) (not x62) x86)
+(or x332 (not x62) (not x86) (not x87))
+(or (not x332) (not x62) (not x86) x87)
+(or (not x709) x97 x109)
+(or x709 (not x97) x109)
+(or x709 x97 (not x109))
+(or (not x709) (not x97) (not x109))
+(or (not x904) x22 x64)
+(or x904 (not x22) x64)
+(or x904 x22 (not x64))
+(or (not x904) (not x22) (not x64))
+(or (not x683) x492 x682)
+(or x683 (not x492) x682)
+(or x683 x492 (not x682))
+(or (not x683) (not x492) (not x682))
+(or (not x398) x52)
+(or (not x398) (not x52) x78)
+(or x398 (not x52) (not x78))
+(or (not x299) x11)
+(or (not x299) (not x11) x12)
+(or x299 (not x11) (not x12))
+(or (not x1198) x214 x217)
+(or x1198 (not x214) x217)
+(or x1198 x214 (not x217))
+(or (not x1198) (not x214) (not x217))
+(or (not x837) x269 x307)
+(or x837 (not x269) x307)
+(or x837 x269 (not x307))
+(or (not x837) (not x269) (not x307))
+(or (not x861) x856 x857)
+(or x861 (not x856) x857)
+(or x861 x856 (not x857))
+(or (not x861) (not x856) (not x857))
+(or (not x925) x923 x924)
+(or x925 (not x923) x924)
+(or x925 x923 (not x924))
+(or (not x925) (not x923) (not x924))
+(or (not x273) x23)
+(or (not x273) (not x23) x24)
+(or x273 (not x23) (not x24))
+(or (not x229) x45)
+(or (not x229) (not x45) x46)
+(or x229 (not x45) (not x46))
+(or (not x295) x12)
+(or (not x295) (not x12) x13)
+(or x295 (not x12) (not x13))
+(or (not x932) x187 x188)
+(or x932 (not x187) x188)
+(or x932 x187 (not x188))
+(or (not x932) (not x187) (not x188))
+(or (not x1086) x207 x210)
+(or x1086 (not x207) x210)
+(or x1086 x207 (not x210))
+(or (not x1086) (not x207) (not x210))
+(or (not x394) x77)
+(or (not x394) (not x77) x78)
+(or x394 (not x77) (not x78) (not x79))
+(or (not x394) (not x77) (not x78) x79)
+(or (not x757) x130 x183)
+(or x757 (not x130) x183)
+(or x757 x130 (not x183))
+(or (not x757) (not x130) (not x183))
+(or (not x404) x51)
+(or (not x404) (not x51) x77)
+(or x404 (not x51) (not x77))
+(or (not x1111) x1108 x1109)
+(or x1111 (not x1108) x1109)
+(or x1111 x1108 (not x1109))
+(or (not x1111) (not x1108) (not x1109))
+(or (not x617) x614 x615)
+(or x617 (not x614) x615)
+(or x617 x614 (not x615))
+(or (not x617) (not x614) (not x615))
+(or (not x203) x66)
+(or (not x203) (not x66) x67)
+(or x203 (not x66) (not x67))
+(or (not x1148) x288 x349)
+(or x1148 (not x288) x349)
+(or x1148 x288 (not x349))
+(or (not x1148) (not x288) (not x349))
+(or (not x251) x34)
+(or (not x251) (not x34) x35)
+(or x251 (not x34) (not x35))
+(or (not x231) x44)
+(or (not x231) (not x44) x45)
+(or x231 (not x44) (not x45))
+(or (not x1200) x465 x466)
+(or x1200 (not x465) x466)
+(or x1200 x465 (not x466))
+(or (not x1200) (not x465) (not x466))
+(or (not x1157) x1147 x1148)
+(or x1157 (not x1147) x1148)
+(or x1157 x1147 (not x1148))
+(or (not x1157) (not x1147) (not x1148))
+(or (not x478) x63)
+(or (not x478) (not x63) x64)
+(or x478 (not x63) (not x64) (not x65))
+(or (not x478) (not x63) (not x64) x65)
+(or (not x304) x90)
+(or (not x304) (not x90) x91)
+(or x304 (not x90) (not x91) (not x92))
+(or (not x304) (not x90) (not x91) x92)
+(or (not x441) x45)
+(or (not x441) (not x45) x69)
+(or x441 (not x45) (not x69) (not x70))
+(or (not x441) (not x45) (not x69) x70)
+(or (not x993) x109 x190)
+(or x993 (not x109) x190)
+(or x993 x109 (not x190))
+(or (not x993) (not x109) (not x190))
+(or (not x969) x963 x964)
+(or x969 (not x963) x964)
+(or x969 x963 (not x964))
+(or (not x969) (not x963) (not x964))
+(or (not x368) x81)
+(or (not x368) (not x81) x82)
+(or x368 (not x81) (not x82) (not x83))
+(or (not x368) (not x81) (not x82) x83)
+(or (not x937) x113 x186)
+(or x937 (not x113) x186)
+(or x937 x113 (not x186))
+(or (not x937) (not x113) (not x186))
+(or (not x533) x2 x29)
+(or x533 (not x2) x29)
+(or x533 x2 (not x29))
+(or (not x533) (not x2) (not x29))
+(or (not x557) x17 x86)
+(or x557 (not x17) x86)
+(or x557 x17 (not x86))
+(or (not x557) (not x17) (not x86))
+(or (not x290) x96)
+(or (not x290) (not x96) x97)
+(or x290 (not x96) (not x97))
+(or (not x1160) x1157 x1158)
+(or x1160 (not x1157) x1158)
+(or x1160 x1157 (not x1158))
+(or (not x1160) (not x1157) (not x1158))
+(or (not x494) x22 x49)
+(or x494 (not x22) x49)
+(or x494 x22 (not x49))
+(or (not x494) (not x22) (not x49))
+(or (not x178) x91)
+(or (not x178) (not x91) x92)
+(or x178 (not x91) (not x92))
+(or (not x305) x90)
+(or (not x305) (not x90) x91)
+(or x305 (not x90) (not x91) (not x93))
+(or (not x305) (not x90) (not x91) x93)
+(or (not x1166) x356 x450)
+(or x1166 (not x356) x450)
+(or x1166 x356 (not x450))
+(or (not x1166) (not x356) (not x450))
+(or (not x649) x109 x121)
+(or x649 (not x109) x121)
+(or x649 x109 (not x121))
+(or (not x649) (not x109) (not x121))
+(or (not x1003) x193 x202)
+(or x1003 (not x193) x202)
+(or x1003 x193 (not x202))
+(or (not x1003) (not x193) (not x202))
+(or (not x1130) x100 x200)
+(or x1130 (not x100) x200)
+(or x1130 x100 (not x200))
+(or (not x1130) (not x100) (not x200))
+(or (not x1192) x1190 x1191)
+(or x1192 (not x1190) x1191)
+(or x1192 x1190 (not x1191))
+(or (not x1192) (not x1190) (not x1191))
+(or (not x1190) x204 x213)
+(or x1190 (not x204) x213)
+(or x1190 x204 (not x213))
+(or (not x1190) (not x204) (not x213))
+(or (not x1193) x458 x459)
+(or x1193 (not x458) x459)
+(or x1193 x458 (not x459))
+(or (not x1193) (not x458) (not x459))
+(or (not x1095) x1085 x1086)
+(or x1095 (not x1085) x1086)
+(or x1095 x1085 (not x1086))
+(or (not x1095) (not x1085) (not x1086))
+(or (not x503) x17 x44)
+(or x503 (not x17) x44)
+(or x503 x17 (not x44))
+(or (not x503) (not x17) (not x44))
+(or (not x738) x274 x511)
+(or x738 (not x274) x511)
+(or x738 x274 (not x511))
+(or (not x738) (not x274) (not x511))
+(or (not x778) x127 x186)
+(or x778 (not x127) x186)
+(or x778 x127 (not x186))
+(or (not x778) (not x127) (not x186))
+(or (not x999) x387 x388)
+(or x999 (not x387) x388)
+(or x999 x387 (not x388))
+(or (not x999) (not x387) (not x388))
+(or (not x479) x63)
+(or (not x479) (not x63) x64)
+(or x479 (not x63) (not x64) (not x66))
+(or (not x479) (not x63) (not x64) x66)
+(or (not x360) x58)
+(or (not x360) (not x58) x82)
+(or x360 (not x58) (not x82) (not x83))
+(or (not x360) (not x58) (not x82) x83)
+(or (not x727) x178 x239)
+(or x727 (not x178) x239)
+(or x727 x178 (not x239))
+(or (not x727) (not x178) (not x239))
+(or (not x442) x69)
+(or (not x442) (not x69) x70)
+(or x442 (not x69) (not x70) (not x71))
+(or (not x442) (not x69) (not x70) x71)
+(or (not x746) x513 x743)
+(or x746 (not x513) x743)
+(or x746 x513 (not x743))
+(or (not x746) (not x513) (not x743))
+(or (not x596) x127 x195)
+(or x596 (not x127) x195)
+(or x596 x127 (not x195))
+(or (not x596) (not x127) (not x195))
+(or (not x874) x872 x873)
+(or x874 (not x872) x873)
+(or x874 x872 (not x873))
+(or (not x874) (not x872) (not x873))
+(or (not x556) x102 x184)
+(or x556 (not x102) x184)
+(or x556 x102 (not x184))
+(or (not x556) (not x102) (not x184))
+(or (not x351) x58)
+(or (not x351) (not x58) x86)
+(or x351 (not x58) (not x86))
+(or (not x1225) x95 x131)
+(or x1225 (not x95) x131)
+(or x1225 x95 (not x131))
+(or (not x1225) (not x95) (not x131))
+(or (not x623) x480 x622)
+(or x623 (not x480) x622)
+(or x623 x480 (not x622))
+(or (not x623) (not x480) (not x622))
+(or (not x228) x127)
+(or (not x228) (not x127) x128)
+(or x228 (not x127) (not x128))
+(or (not x652) x123 x214)
+(or x652 (not x123) x214)
+(or x652 x123 (not x214))
+(or (not x652) (not x123) (not x214))
+(or (not x1014) x1012 x1013)
+(or x1014 (not x1012) x1013)
+(or x1014 x1012 (not x1013))
+(or (not x1014) (not x1012) (not x1013))
+(or (not x443) x69)
+(or (not x443) (not x69) x70)
+(or x443 (not x69) (not x70) (not x72))
+(or (not x443) (not x69) (not x70) x72)
+(or (not x787) x96 x99)
+(or x787 (not x96) x99)
+(or x787 x96 (not x99))
+(or (not x787) (not x96) (not x99))
+(or (not x1149) x446 x447)
+(or x1149 (not x446) x447)
+(or x1149 x446 (not x447))
+(or (not x1149) (not x446) (not x447))
+(or (not x572) x94 x192)
+(or x572 (not x94) x192)
+(or x572 x94 (not x192))
+(or (not x572) (not x94) (not x192))
+(or (not x956) x369 x946)
+(or x956 (not x369) x946)
+(or x956 x369 (not x946))
+(or (not x956) (not x369) (not x946))
+(or (not x677) x118 x219)
+(or x677 (not x118) x219)
+(or x677 x118 (not x219))
+(or (not x677) (not x118) (not x219))
+(or (not x775) x230 x253)
+(or x775 (not x230) x253)
+(or x775 x230 (not x253))
+(or (not x775) (not x230) (not x253))
+(or (not x808) x96 x123)
+(or x808 (not x96) x123)
+(or x808 x96 (not x123))
+(or (not x808) (not x96) (not x123))
+(or (not x1012) x1006 x1007)
+(or x1012 (not x1006) x1007)
+(or x1012 x1006 (not x1007))
+(or (not x1012) (not x1006) (not x1007))
+(or (not x1203) x239 x294)
+(or x1203 (not x239) x294)
+(or x1203 x239 (not x294))
+(or (not x1203) (not x239) (not x294))
+(or (not x587) x2 x71)
+(or x587 (not x2) x71)
+(or x587 x2 (not x71))
+(or (not x587) (not x2) (not x71))
+(or (not x603) x120 x132)
+(or x603 (not x120) x132)
+(or x603 x120 (not x132))
+(or (not x603) (not x120) (not x132))
+(or (not x1241) x43 x52)
+(or x1241 (not x43) x52)
+(or x1241 x43 (not x52))
+(or (not x1241) (not x43) (not x52))
+(or (not x992) x990 x991)
+(or x992 (not x990) x991)
+(or x992 x990 (not x991))
+(or (not x992) (not x990) (not x991))
+(or (not x464) x41)
+(or (not x464) (not x41) x67)
+(or x464 (not x41) (not x67))
+(or (not x951) x112 x189)
+(or x951 (not x112) x189)
+(or x951 x112 (not x189))
+(or (not x951) (not x112) (not x189))
+(or (not x448) x68)
+(or (not x448) (not x68) x69)
+(or x448 (not x68) (not x69) (not x70))
+(or (not x448) (not x68) (not x69) x70)
+(or (not x510) x110 x125)
+(or x510 (not x110) x125)
+(or x510 x110 (not x125))
+(or (not x510) (not x110) (not x125))
+(or (not x180) x89)
+(or (not x180) (not x89) x90)
+(or x180 (not x89) (not x90))
+(or (not x830) x828 x829)
+(or x830 (not x828) x829)
+(or x830 x828 (not x829))
+(or (not x830) (not x828) (not x829))
+(or (not x1207) x1205 x612)
+(or x1207 (not x1205) x612)
+(or x1207 x1205 (not x612))
+(or (not x1207) (not x1205) (not x612))
+(or (not x573) x9 x78)
+(or x573 (not x9) x78)
+(or x573 x9 (not x78))
+(or (not x573) (not x9) (not x78))
+(or (not x740) x737 x738)
+(or x740 (not x737) x738)
+(or x740 x737 (not x738))
+(or (not x740) (not x737) (not x738))
+(or (not x902) x900 x901)
+(or x902 (not x900) x901)
+(or x902 x900 (not x901))
+(or (not x902) (not x900) (not x901))
+(or (not x1118) x437 x1114)
+(or x1118 (not x437) x1114)
+(or x1118 x437 (not x1114))
+(or (not x1118) (not x437) (not x1114))
+(or (not x508) x111 x126)
+(or x508 (not x111) x126)
+(or x508 x111 (not x126))
+(or (not x508) (not x111) (not x126))
+(or (not x1107) x197 x199)
+(or x1107 (not x197) x199)
+(or x1107 x197 (not x199))
+(or (not x1107) (not x197) (not x199))
+(or (not x939) x932 x933)
+(or x939 (not x932) x933)
+(or x939 x932 (not x933))
+(or (not x939) (not x932) (not x933))
+(or (not x1052) x1048 x1049)
+(or x1052 (not x1048) x1049)
+(or x1052 x1048 (not x1049))
+(or (not x1052) (not x1048) (not x1049))
+(or (not x562) x99 x187)
+(or x562 (not x99) x187)
+(or x562 x99 (not x187))
+(or (not x562) (not x99) (not x187))
+(or (not x1056) x409 x410)
+(or x1056 (not x409) x410)
+(or x1056 x409 (not x410))
+(or (not x1056) (not x409) (not x410))
+(or (not x475) x38)
+(or (not x475) (not x38) x66)
+(or x475 (not x38) (not x66))
+(or (not x974) x191 x203)
+(or x974 (not x191) x203)
+(or x974 x191 (not x203))
+(or (not x974) (not x191) (not x203))
+(or (not x466) x65)
+(or (not x466) (not x65) x66)
+(or x466 (not x65) (not x66) (not x67))
+(or (not x466) (not x65) (not x66) x67)
+(or (not x194) x75)
+(or (not x194) (not x75) x76)
+(or x194 (not x75) (not x76))
+(or (not x1104) x227 x282)
+(or x1104 (not x227) x282)
+(or x1104 x227 (not x282))
+(or (not x1104) (not x227) (not x282))
+(or (not x825) x306 x535)
+(or x825 (not x306) x535)
+(or x825 x306 (not x535))
+(or (not x825) (not x306) (not x535))
+(or (not x495) x21 x48)
+(or x495 (not x21) x48)
+(or x495 x21 (not x48))
+(or (not x495) (not x21) (not x48))
+(or (not x1158) x1155 x1156)
+(or x1158 (not x1155) x1156)
+(or x1158 x1155 (not x1156))
+(or (not x1158) (not x1155) (not x1156))
+(or (not x1142) x440 x441)
+(or x1142 (not x440) x441)
+(or x1142 x440 (not x441))
+(or (not x1142) (not x440) (not x441))
+(or (not x208) x61)
+(or (not x208) (not x61) x62)
+(or x208 (not x61) (not x62))
+(or (not x330) x61)
+(or (not x330) (not x61) x89)
+(or x330 (not x61) (not x89))
+(or (not x260) x111)
+(or (not x260) (not x111) x112)
+(or x260 (not x111) (not x112))
+(or (not x1035) x106 x195)
+(or x1035 (not x106) x195)
+(or x1035 x106 (not x195))
+(or (not x1035) (not x106) (not x195))
+(or (not x699) x99 x111)
+(or x699 (not x99) x111)
+(or x699 x99 (not x111))
+(or (not x699) (not x99) (not x111))
+(or (not x1123) x1121 x1122)
+(or x1123 (not x1121) x1122)
+(or x1123 x1121 (not x1122))
+(or (not x1123) (not x1121) (not x1122))
+(or (not x257) x31)
+(or (not x257) (not x31) x32)
+(or x257 (not x31) (not x32))
+(or (not x226) x128)
+(or (not x226) (not x128) x129)
+(or x226 (not x128) (not x129))
+(or (not x618) x115 x127)
+(or x618 (not x115) x127)
+(or x618 x115 (not x127))
+(or (not x618) (not x115) (not x127))
+(or (not x873) x325 x326)
+(or x873 (not x325) x326)
+(or x873 x325 (not x326))
+(or (not x873) (not x325) (not x326))
+(or (not x1222) x469 x470)
+(or x1222 (not x469) x470)
+(or x1222 x469 (not x470))
+(or (not x1222) (not x469) (not x470))
+(or (not x1038) x219 x274)
+(or x1038 (not x219) x274)
+(or x1038 x219 (not x274))
+(or (not x1038) (not x219) (not x274))
+(or (not x1071) x104 x196)
+(or x1071 (not x104) x196)
+(or x1071 x104 (not x196))
+(or (not x1071) (not x104) (not x196))
+(or (not x451) x42)
+(or (not x451) (not x42) x70)
+(or x451 (not x42) (not x70))
+(or (not x756) x751 x752)
+(or x756 (not x751) x752)
+(or x756 x751 (not x752))
+(or (not x756) (not x751) (not x752))
+(or (not x694) x100 x112)
+(or x694 (not x100) x112)
+(or x694 x100 (not x112))
+(or (not x694) (not x100) (not x112))
+(or (not x847) x845 x846)
+(or x847 (not x845) x846)
+(or x847 x845 (not x846))
+(or (not x847) (not x845) (not x846))
+(or (not x292) x95)
+(or (not x292) (not x95) x96)
+(or x292 (not x95) (not x96))
+(or (not x335) x6)
+(or (not x335) (not x6) x7)
+(or x335 (not x6) (not x7))
+(or (not x788) x525 x785)
+(or x788 (not x525) x785)
+(or x788 x525 (not x785))
+(or (not x788) (not x525) (not x785))
+(or (not x606) x203 x218)
+(or x606 (not x203) x218)
+(or x606 x203 (not x218))
+(or (not x606) (not x203) (not x218))
+(or (not x928) x354 x355)
+(or x928 (not x354) x355)
+(or x928 x354 (not x355))
+(or (not x928) (not x354) (not x355))
+(or (not x955) x951 x952)
+(or x955 (not x951) x952)
+(or x955 x951 (not x952))
+(or (not x955) (not x951) (not x952))
+(or (not x559) x16 x85)
+(or x559 (not x16) x85)
+(or x559 x16 (not x85))
+(or (not x559) (not x16) (not x85))
+(or (not x237) x41)
+(or (not x237) (not x41) x42)
+(or x237 (not x41) (not x42))
+(or (not x732) x179 x241)
+(or x732 (not x179) x241)
+(or x732 x179 (not x241))
+(or (not x732) (not x179) (not x241))
+(or (not x804) x802 x803)
+(or x804 (not x802) x803)
+(or x804 x802 (not x803))
+(or (not x804) (not x802) (not x803))
+(or (not x529) x4 x31)
+(or x529 (not x4) x31)
+(or x529 x4 (not x31))
+(or (not x529) (not x4) (not x31))
+(or (not x230) x126)
+(or (not x230) (not x126) x127)
+(or x230 (not x126) (not x127))
+(or (not x1084) x1081 x1082)
+(or x1084 (not x1081) x1082)
+(or x1084 x1081 (not x1082))
+(or (not x1084) (not x1081) (not x1082))
+(or (not x302) x66)
+(or (not x302) (not x66) x92)
+(or x302 (not x66) (not x92))
+(or (not x915) x913 x914)
+(or x915 (not x913) x914)
+(or x915 x913 (not x914))
+(or (not x915) (not x913) (not x914))
+(or (not x383) x79)
+(or (not x383) (not x79) x80)
+(or x383 (not x79) (not x80) (not x82))
+(or (not x383) (not x79) (not x80) x82)
+(or (not x474) x38)
+(or (not x474) (not x38) x64)
+(or x474 (not x38) (not x64) (not x65))
+(or (not x474) (not x38) (not x64) x65)
+(or (not x768) x228 x251)
+(or x768 (not x228) x251)
+(or x768 x228 (not x251))
+(or (not x768) (not x228) (not x251))
+(or (not x1201) x1197 x1198)
+(or x1201 (not x1197) x1198)
+(or x1201 x1197 (not x1198))
+(or (not x1201) (not x1197) (not x1198))
+(or (not x1077) x1074 x1075)
+(or x1077 (not x1074) x1075)
+(or x1077 x1074 (not x1075))
+(or (not x1077) (not x1074) (not x1075))
+(or (not x696) x255 x256)
+(or x696 (not x255) x256)
+(or x696 x255 (not x256))
+(or (not x696) (not x255) (not x256))
+(or (not x312) x89)
+(or (not x312) (not x89) x90)
+(or x312 (not x89) (not x90) (not x91))
+(or (not x312) (not x89) (not x90) x91)
+(or (not x406) x75)
+(or (not x406) (not x75) x76)
+(or x406 (not x75) (not x76) (not x77))
+(or (not x406) (not x75) (not x76) x77)
+(or (not x248) x117)
+(or (not x248) (not x117) x118)
+(or x248 (not x117) (not x118))
+(or (not x979) x378 x379)
+(or x979 (not x378) x379)
+(or x979 x378 (not x379))
+(or (not x979) (not x378) (not x379))
+(or (not x697) x114 x227)
+(or x697 (not x114) x227)
+(or x697 x114 (not x227))
+(or (not x697) (not x114) (not x227))
+(or (not x243) x38)
+(or (not x243) (not x38) x39)
+(or x243 (not x38) (not x39))
+(or (not x684) x102 x114)
+(or x684 (not x102) x114)
+(or x684 x102 (not x114))
+(or (not x684) (not x102) (not x114))
+(or (not x569) x11 x80)
+(or x569 (not x11) x80)
+(or x569 x11 (not x80))
+(or (not x569) (not x11) (not x80))
+(or (not x630) x628 x629)
+(or x630 (not x628) x629)
+(or x630 x628 (not x629))
+(or (not x630) (not x628) (not x629))
+(or (not x371) x55)
+(or (not x371) (not x55) x81)
+(or x371 (not x55) (not x81) (not x82))
+(or (not x371) (not x55) (not x81) x82)
+(or (not x1246) x1242 x1243)
+(or x1246 (not x1242) x1243)
+(or x1246 x1242 (not x1243))
+(or (not x1246) (not x1242) (not x1243))
+(or (not x482) x34 x61)
+(or x482 (not x34) x61)
+(or x482 x34 (not x61))
+(or (not x482) (not x34) (not x61))
+(or (not x858) x852 x853)
+(or x858 (not x852) x853)
+(or x858 x852 (not x853))
+(or (not x858) (not x852) (not x853))
+(or (not x807) x293 x294)
+(or x807 (not x293) x294)
+(or x807 x293 (not x294))
+(or (not x807) (not x293) (not x294))
+(or (not x817) x297 x298)
+(or x817 (not x297) x298)
+(or x817 x297 (not x298))
+(or (not x817) (not x297) (not x298))
+(or (not x1073) x1070 x1071)
+(or x1073 (not x1070) x1071)
+(or x1073 x1070 (not x1071))
+(or (not x1073) (not x1070) (not x1071))
+(or (not x386) x54)
+(or (not x386) (not x54) x80)
+(or x386 (not x54) (not x80))
+(or (not x700) x698 x699)
+(or x700 (not x698) x699)
+(or x700 x698 (not x699))
+(or (not x700) (not x698) (not x699))
+(or (not x765) x281 x282)
+(or x765 (not x281) x282)
+(or x765 x281 (not x282))
+(or (not x765) (not x281) (not x282))
+(or (not x1227) x1223 x1224)
+(or x1227 (not x1223) x1224)
+(or x1227 x1223 (not x1224))
+(or (not x1227) (not x1223) (not x1224))
+(or (not x650) x648 x649)
+(or x650 (not x648) x649)
+(or x650 x648 (not x649))
+(or (not x650) (not x648) (not x649))
+(or (not x800) x291 x292)
+(or x800 (not x291) x292)
+(or x800 x291 (not x292))
+(or (not x800) (not x291) (not x292))
+(or (not x1059) x1056 x1057)
+(or x1059 (not x1056) x1057)
+(or x1059 x1056 (not x1057))
+(or (not x1059) (not x1056) (not x1057))
+(or (not x432) x45)
+(or (not x432) (not x45) x71)
+(or x432 (not x45) (not x71) (not x72))
+(or (not x432) (not x45) (not x71) x72)
+(or (not x275) x22)
+(or (not x275) (not x22) x23)
+(or x275 (not x22) (not x23))
+(or (not x568) x96 x190)
+(or x568 (not x96) x190)
+(or x568 x96 (not x190))
+(or (not x568) (not x96) (not x190))
+(or (not x1120) x50 x59)
+(or x1120 (not x50) x59)
+(or x1120 x50 (not x59))
+(or (not x1120) (not x50) (not x59))
+(or (not x236) x123)
+(or (not x236) (not x123) x124)
+(or x236 (not x123) (not x124))
+(or (not x392) x53)
+(or (not x392) (not x53) x79)
+(or x392 (not x53) (not x79))
+(or (not x303) x66)
+(or (not x303) (not x66) x90)
+(or x303 (not x66) (not x90) (not x91))
+(or (not x303) (not x66) (not x90) x91)
+(or (not x1019) x398 x399)
+(or x1019 (not x398) x399)
+(or x1019 x398 (not x399))
+(or (not x1019) (not x398) (not x399))
+(or (not x205) x64)
+(or (not x205) (not x64) x65)
+(or x205 (not x64) (not x65))
+(or (not x1153) x214 x233)
+(or x1153 (not x214) x233)
+(or x1153 x214 (not x233))
+(or (not x1153) (not x214) (not x233))
+(or (not x359) x58)
+(or (not x359) (not x58) x84)
+(or x359 (not x58) (not x84))
+(or (not x1197) x56 x96)
+(or x1197 (not x56) x96)
+(or x1197 x56 (not x96))
+(or (not x1197) (not x56) (not x96))
+(or (not x767) x519 x764)
+(or x767 (not x519) x764)
+(or x767 x519 (not x764))
+(or (not x767) (not x519) (not x764))
+(or (not x1022) x396 x397)
+(or x1022 (not x396) x397)
+(or x1022 x396 (not x397))
+(or (not x1022) (not x396) (not x397))
+(or (not x910) x344 x345)
+(or x910 (not x344) x345)
+(or x910 x344 (not x345))
+(or (not x910) (not x344) (not x345))
+(or (not x516) x107 x122)
+(or x516 (not x107) x122)
+(or x516 x107 (not x122))
+(or (not x516) (not x107) (not x122))
+(or (not x669) x105 x117)
+(or x669 (not x105) x117)
+(or x669 x105 (not x117))
+(or (not x669) (not x105) (not x117))
+(or (not x1156) x200 x201)
+(or x1156 (not x200) x201)
+(or x1156 x200 (not x201))
+(or (not x1156) (not x200) (not x201))
+(or (not x481) x35 x62)
+(or x481 (not x35) x62)
+(or x481 x35 (not x62))
+(or (not x481) (not x35) (not x62))
+(or (not x805) x800 x801)
+(or x805 (not x800) x801)
+(or x805 x800 (not x801))
+(or (not x805) (not x800) (not x801))
+(or (not x1034) x1031 x1032)
+(or x1034 (not x1031) x1032)
+(or x1034 x1031 (not x1032))
+(or (not x1034) (not x1031) (not x1032))
+(or (not x284) x99)
+(or (not x284) (not x99) x100)
+(or x284 (not x99) (not x100))
+(or (not x660) x658 x659)
+(or x660 (not x658) x659)
+(or x660 x658 (not x659))
+(or (not x660) (not x658) (not x659))
+(or (not x1096) x1093 x1094)
+(or x1096 (not x1093) x1094)
+(or x1096 x1093 (not x1094))
+(or (not x1096) (not x1093) (not x1094))
+(or (not x929) x927 x928)
+(or x929 (not x927) x928)
+(or x929 x927 (not x928))
+(or (not x929) (not x927) (not x928))
+(or (not x930) x925 x926)
+(or x930 (not x925) x926)
+(or x930 x925 (not x926))
+(or (not x930) (not x925) (not x926))
+(or (not x385) x53)
+(or (not x385) (not x53) x81)
+(or x385 (not x53) (not x81))
+(or (not x1194) x1192 x1193)
+(or x1194 (not x1192) x1193)
+(or x1194 x1192 (not x1193))
+(or (not x1194) (not x1192) (not x1193))
+(or (not x473) x64)
+(or (not x473) (not x64) x65)
+(or x473 (not x64) (not x65) (not x67))
+(or (not x473) (not x64) (not x65) x67)
+(or (not x654) x108 x120)
+(or x654 (not x108) x120)
+(or x654 x108 (not x120))
+(or (not x654) (not x108) (not x120))
+(or (not x784) x779 x780)
+(or x784 (not x779) x780)
+(or x784 x779 (not x780))
+(or (not x784) (not x779) (not x780))
+(or (not x196) x73)
+(or (not x196) (not x73) x74)
+(or x196 (not x73) (not x74))
+(or (not x1078) x10 x34)
+(or x1078 (not x10) x34)
+(or x1078 x10 (not x34))
+(or (not x1078) (not x10) (not x34))
+(or (not x786) x287 x288)
+(or x786 (not x287) x288)
+(or x786 x287 (not x288))
+(or (not x786) (not x287) (not x288))
+(or (not x561) x15 x84)
+(or x561 (not x15) x84)
+(or x561 x15 (not x84))
+(or (not x561) (not x15) (not x84))
+(or (not x486) x30 x57)
+(or x486 (not x30) x57)
+(or x486 x30 (not x57))
+(or (not x486) (not x30) (not x57))
+(or (not x221) x49)
+(or (not x221) (not x49) x50)
+(or x221 (not x49) (not x50))
+(or (not x1041) x1039 x1040)
+(or x1041 (not x1039) x1040)
+(or x1041 x1039 (not x1040))
+(or (not x1041) (not x1039) (not x1040))
+(or (not x954) x262 x285)
+(or x954 (not x262) x285)
+(or x954 x262 (not x285))
+(or (not x954) (not x262) (not x285))
+(or (not x297) x91)
+(or (not x297) (not x91) x92)
+(or x297 (not x91) (not x92) (not x94))
+(or (not x297) (not x91) (not x92) x94)
+(or (not x889) x23 x65)
+(or x889 (not x23) x65)
+(or x889 x23 (not x65))
+(or (not x889) (not x23) (not x65))
+(or (not x412) x74)
+(or (not x412) (not x74) x75)
+(or x412 (not x74) (not x75) (not x76))
+(or (not x412) (not x74) (not x75) x76)
+(or (not x1239) x1232 x1233)
+(or x1239 (not x1232) x1233)
+(or x1239 x1232 (not x1233))
+(or (not x1239) (not x1232) (not x1233))
+(or (not x886) x334 x876)
+(or x886 (not x334) x876)
+(or x886 x334 (not x876))
+(or (not x886) (not x334) (not x876))
+(or (not x407) x75)
+(or (not x407) (not x75) x76)
+(or x407 (not x75) (not x76) (not x78))
+(or (not x407) (not x75) (not x76) x78)
+(or (not x1125) x1119 x1120)
+(or x1125 (not x1119) x1120)
+(or x1125 x1119 (not x1120))
+(or (not x1125) (not x1119) (not x1120))
+(or (not x931) x20 x62)
+(or x931 (not x20) x62)
+(or x931 x20 (not x62))
+(or (not x931) (not x20) (not x62))
+(or (not x282) x100)
+(or (not x282) (not x100) x101)
+(or x282 (not x100) (not x101))
+(or (not x382) x79)
+(or (not x382) (not x79) x80)
+(or x382 (not x79) (not x80) (not x81))
+(or (not x382) (not x79) (not x80) x81)
+(or (not x1163) x5 x29)
+(or x1163 (not x5) x29)
+(or x1163 x5 (not x29))
+(or (not x1163) (not x5) (not x29))
+(or (not x715) x713 x714)
+(or x715 (not x713) x714)
+(or x715 x713 (not x714))
+(or (not x715) (not x713) (not x714))
+(or (not x1139) x201 x210)
+(or x1139 (not x201) x210)
+(or x1139 x201 (not x210))
+(or (not x1139) (not x201) (not x210))
+(or (not x1088) x1083 x1084)
+(or x1088 (not x1083) x1084)
+(or x1088 x1083 (not x1084))
+(or (not x1088) (not x1083) (not x1084))
+(or (not x1256) x1248 x1249)
+(or x1256 (not x1248) x1249)
+(or x1256 x1248 (not x1249))
+(or (not x1256) (not x1248) (not x1249))
+(or (not x640) x638 x639)
+(or x640 (not x638) x639)
+(or x640 x638 (not x639))
+(or (not x640) (not x638) (not x639))
+(or (not x241) x39)
+(or (not x241) (not x39) x40)
+(or x241 (not x39) (not x40))
+(or (not x209) x60)
+(or (not x209) (not x60) x61)
+(or x209 (not x60) (not x61))
+(or (not x1145) x6 x30)
+(or x1145 (not x6) x30)
+(or x1145 x6 (not x30))
+(or (not x1145) (not x6) (not x30))
+(or (not x613) x610 x611)
+(or x613 (not x610) x611)
+(or x613 x610 (not x611))
+(or (not x613) (not x610) (not x611))
+(or (not x615) x223 x224)
+(or x615 (not x223) x224)
+(or x615 x223 (not x224))
+(or (not x615) (not x223) (not x224))
+(or (not x835) x830 x831)
+(or x835 (not x830) x831)
+(or x835 x830 (not x831))
+(or (not x835) (not x830) (not x831))
+(or (not x315) x63)
+(or (not x315) (not x63) x89)
+(or x315 (not x63) (not x89) (not x90))
+(or (not x315) (not x63) (not x89) x90)
+(or (not x663) x488 x662)
+(or x663 (not x488) x662)
+(or x663 x488 (not x662))
+(or (not x663) (not x488) (not x662))
+(or (not x362) x82)
+(or (not x362) (not x82) x83)
+(or x362 (not x82) (not x83) (not x85))
+(or (not x362) (not x82) (not x83) x85)
+(or (not x693) x494 x692)
+(or x693 (not x494) x692)
+(or x693 x494 (not x692))
+(or (not x693) (not x494) (not x692))
+(or (not x1135) x49 x58)
+(or x1135 (not x49) x58)
+(or x1135 x49 (not x58))
+(or (not x1135) (not x49) (not x58))
+(or (not x725) x723 x724)
+(or x725 (not x723) x724)
+(or x725 x723 (not x724))
+(or (not x725) (not x723) (not x724))
+(or (not x1202) x45 x54)
+(or x1202 (not x45) x54)
+(or x1202 x45 (not x54))
+(or (not x1202) (not x45) (not x54))
+(or (not x799) x124 x189)
+(or x799 (not x124) x189)
+(or x799 x124 (not x189))
+(or (not x799) (not x124) (not x189))
+(or (not x745) x102 x105)
+(or x745 (not x102) x105)
+(or x745 x102 (not x105))
+(or (not x745) (not x102) (not x105))
+(or (not x1126) x435 x436)
+(or x1126 (not x435) x436)
+(or x1126 x435 (not x436))
+(or (not x1126) (not x435) (not x436))
+(or (not x352) x59)
+(or (not x352) (not x59) x85)
+(or x352 (not x59) (not x85))
+(or (not x845) x839 x840)
+(or x845 (not x839) x840)
+(or x845 x839 (not x840))
+(or (not x845) (not x839) (not x840))
+(or (not x900) x894 x895)
+(or x900 (not x894) x895)
+(or x900 x894 (not x895))
+(or (not x900) (not x894) (not x895))
+(or (not x393) x53)
+(or (not x393) (not x53) x77)
+(or x393 (not x53) (not x77) (not x78))
+(or (not x393) (not x53) (not x77) x78)
+(or (not x418) x73)
+(or (not x418) (not x73) x74)
+(or x418 (not x73) (not x74) (not x75))
+(or (not x418) (not x73) (not x74) x75)
+(or (not x574) x178 x193)
+(or x574 (not x178) x193)
+(or x574 x178 (not x193))
+(or (not x574) (not x178) (not x193))
+(or (not x822) x180 x192)
+(or x822 (not x180) x192)
+(or x822 x180 (not x192))
+(or (not x822) (not x180) (not x192))
+(or (not x1060) x11 x35)
+(or x1060 (not x11) x35)
+(or x1060 x11 (not x35))
+(or (not x1060) (not x11) (not x35))
+(or (not x1152) x48 x57)
+(or x1152 (not x48) x57)
+(or x1152 x48 (not x57))
+(or (not x1152) (not x48) (not x57))
+(or (not x583) x4 x73)
+(or x583 (not x4) x73)
+(or x583 x4 (not x73))
+(or (not x583) (not x4) (not x73))
+(or (not x1062) x197 x206)
+(or x1062 (not x197) x206)
+(or x1062 x197 (not x206))
+(or (not x1062) (not x197) (not x206))
+(or (not x579) x6 x75)
+(or x579 (not x6) x75)
+(or x579 x6 (not x75))
+(or (not x579) (not x6) (not x75))
+(or (not x252) x115)
+(or (not x252) (not x115) x116)
+(or x252 (not x115) (not x116))
+(or (not x1121) x335 x432)
+(or x1121 (not x335) x432)
+(or x1121 x335 (not x432))
+(or (not x1121) (not x335) (not x432))
+(or (not x353) x59)
+(or (not x353) (not x59) x83)
+(or x353 (not x59) (not x83) (not x84))
+(or (not x353) (not x59) (not x83) x84)
+(or (not x637) x126 x211)
+(or x637 (not x126) x211)
+(or x637 x126 (not x211))
+(or (not x637) (not x126) (not x211))
+(or (not x1061) x63 x64)
+(or x1061 (not x63) x64)
+(or x1061 x63 (not x64))
+(or (not x1061) (not x63) (not x64))
+(or (not x600) x123 x199)
+(or x600 (not x123) x199)
+(or x600 x123 (not x199))
+(or (not x600) (not x123) (not x199))
+(or (not x671) x245 x246)
+(or x671 (not x245) x246)
+(or x671 x245 (not x246))
+(or (not x671) (not x245) (not x246))
+(or (not x1245) x1238 x1239)
+(or x1245 (not x1238) x1239)
+(or x1245 x1238 (not x1239))
+(or (not x1245) (not x1238) (not x1239))
+(or (not x564) x98 x188)
+(or x564 (not x98) x188)
+(or x564 x98 (not x188))
+(or (not x564) (not x98) (not x188))
+(or (not x504) x113 x128)
+(or x504 (not x113) x128)
+(or x504 x113 (not x128))
+(or (not x504) (not x113) (not x128))
+(or (not x216) x53)
+(or (not x216) (not x53) x54)
+(or x216 (not x53) (not x54))
+(or (not x287) x16)
+(or (not x287) (not x16) x17)
+(or x287 (not x16) (not x17))
+(or (not x1228) x1225 x1226)
+(or x1228 (not x1225) x1226)
+(or x1228 x1225 (not x1226))
+(or (not x1228) (not x1225) (not x1226))
+(or (not x857) x206 x248)
+(or x857 (not x206) x248)
+(or x857 x206 (not x248))
+(or (not x857) (not x206) (not x248))
+(or (not x884) x252 x275)
+(or x884 (not x252) x275)
+(or x884 x252 (not x275))
+(or (not x884) (not x252) (not x275))
+(or (not x1141) x1139 x1140)
+(or x1141 (not x1139) x1140)
+(or x1141 x1139 (not x1140))
+(or (not x1141) (not x1139) (not x1140))
+(or (not x327) x87)
+(or (not x327) (not x87) x88)
+(or x327 (not x87) (not x88) (not x90))
+(or (not x327) (not x87) (not x88) x90)
+(or (not x1211) x1208 x1209)
+(or x1211 (not x1208) x1209)
+(or x1211 x1208 (not x1209))
+(or (not x1211) (not x1208) (not x1209))
+(or (not x268) x107)
+(or (not x268) (not x107) x108)
+(or x268 (not x107) (not x108))
+(or (not x712) x111 x233)
+(or x712 (not x111) x233)
+(or x712 x111 (not x233))
+(or (not x712) (not x111) (not x233))
+(or (not x550) x105 x181)
+(or x550 (not x105) x181)
+(or x550 x105 (not x181))
+(or (not x550) (not x105) (not x181))
+(or (not x484) x32 x59)
+(or x484 (not x32) x59)
+(or x484 x32 (not x59))
+(or (not x484) (not x32) (not x59))
+(or (not x435) x46)
+(or (not x435) (not x46) x70)
+(or x435 (not x46) (not x70) (not x71))
+(or (not x435) (not x46) (not x70) x71)
+(or (not x849) x182 x194)
+(or x849 (not x182) x194)
+(or x849 x182 (not x194))
+(or (not x849) (not x182) (not x194))
+(or (not x1036) x403 x404)
+(or x1036 (not x403) x404)
+(or x1036 x403 (not x404))
+(or (not x1036) (not x403) (not x404))
+(or (not x914) x348 x904)
+(or x914 (not x348) x904)
+(or x914 x348 (not x904))
+(or (not x914) (not x348) (not x904))
+(or (not x962) x373 x374)
+(or x962 (not x373) x374)
+(or x962 x373 (not x374))
+(or (not x962) (not x373) (not x374))
+(or (not x1045) x205 x208)
+(or x1045 (not x205) x208)
+(or x1045 x205 (not x208))
+(or (not x1045) (not x205) (not x208))
+(or (not x792) x125 x188)
+(or x792 (not x125) x188)
+(or x792 x125 (not x188))
+(or (not x792) (not x125) (not x188))
+(or (not x989) x216 x268)
+(or x989 (not x216) x268)
+(or x989 x216 (not x268))
+(or (not x989) (not x216) (not x268))
+(or (not x1171) x455 x1163)
+(or x1171 (not x455) x1163)
+(or x1171 x455 (not x1163))
+(or (not x1171) (not x455) (not x1163))
+(or (not x998) x992 x993)
+(or x998 (not x992) x993)
+(or x998 x992 (not x993))
+(or (not x998) (not x992) (not x993))
+(or (not x301) x65)
+(or (not x301) (not x65) x93)
+(or x301 (not x65) (not x93))
+(or (not x762) x760 x761)
+(or x762 (not x760) x761)
+(or x762 x760 (not x761))
+(or (not x762) (not x760) (not x761))
+(or (not x666) x243 x244)
+(or x666 (not x243) x244)
+(or x666 x243 (not x244))
+(or (not x666) (not x243) (not x244))
+(or (not x219) x50)
+(or (not x219) (not x50) x51)
+(or x219 (not x50) (not x51))
+(or (not x1179) x1176 x1177)
+(or x1179 (not x1176) x1177)
+(or x1179 x1176 (not x1177))
+(or (not x1179) (not x1176) (not x1177))
+(or (not x958) x953 x954)
+(or x958 (not x953) x954)
+(or x958 x953 (not x954))
+(or (not x958) (not x953) (not x954))
+(or (not x729) x105 x108)
+(or x729 (not x105) x108)
+(or x729 x105 (not x108))
+(or (not x729) (not x105) (not x108))
+(or (not x691) x253 x254)
+(or x691 (not x253) x254)
+(or x691 x253 (not x254))
+(or (not x691) (not x253) (not x254))
+(or (not x793) x289 x290)
+(or x793 (not x289) x290)
+(or x793 x289 (not x290))
+(or (not x793) (not x289) (not x290))
+(or (not x1167) x453 x454)
+(or x1167 (not x453) x454)
+(or x1167 x453 (not x454))
+(or (not x1167) (not x453) (not x454))
+(or (not x667) x120 x217)
+(or x667 (not x120) x217)
+(or x667 x120 (not x217))
+(or (not x667) (not x120) (not x217))
+(or (not x723) x505 x722)
+(or x723 (not x505) x722)
+(or x723 x505 (not x722))
+(or (not x723) (not x505) (not x722))
+(or (not x1106) x1102 x1103)
+(or x1106 (not x1102) x1103)
+(or x1106 x1102 (not x1103))
+(or (not x1106) (not x1102) (not x1103))
+(or (not x270) x106)
+(or (not x270) (not x106) x107)
+(or x270 (not x106) (not x107))
+(or (not x1011) x205 x217)
+(or x1011 (not x205) x217)
+(or x1011 x205 (not x217))
+(or (not x1011) (not x205) (not x217))
+(or (not x355) x83)
+(or (not x355) (not x83) x84)
+(or x355 (not x83) (not x84) (not x86))
+(or (not x355) (not x83) (not x84) x86)
+(or (not x647) x124 x213)
+(or x647 (not x124) x213)
+(or x647 x124 (not x213))
+(or (not x647) (not x124) (not x213))
+(or (not x255) x32)
+(or (not x255) (not x32) x33)
+(or x255 (not x32) (not x33))
+(or (not x599) x124 x198)
+(or x599 (not x124) x198)
+(or x599 x124 (not x198))
+(or (not x599) (not x124) (not x198))
+(or (not x262) x110)
+(or (not x262) (not x110) x111)
+(or x262 (not x110) (not x111))
+(or (not x293) x13)
+(or (not x293) (not x13) x14)
+(or x293 (not x13) (not x14))
+(or (not x1233) x53 x94)
+(or x1233 (not x53) x94)
+(or x1233 x53 (not x94))
+(or (not x1233) (not x53) (not x94))
+(or (not x433) x45)
+(or (not x433) (not x45) x73)
+(or x433 (not x45) (not x73))
+(or (not x772) x283 x284)
+(or x772 (not x283) x284)
+(or x772 x283 (not x284))
+(or (not x772) (not x283) (not x284))
+(or (not x188) x81)
+(or (not x188) (not x81) x82)
+(or x188 (not x81) (not x82))
+(or (not x595) x128 x194)
+(or x595 (not x128) x194)
+(or x595 x128 (not x194))
+(or (not x595) (not x128) (not x194))
+(or (not x1204) x467 x1196)
+(or x1204 (not x467) x1196)
+(or x1204 x467 (not x1196))
+(or (not x1204) (not x467) (not x1196))
+(or (not x206) x63)
+(or (not x206) (not x63) x64)
+(or x206 (not x63) (not x64))
+(or (not x1004) x270 x293)
+(or x1004 (not x270) x293)
+(or x1004 x270 (not x293))
+(or (not x1004) (not x270) (not x293))
+(or (not x329) x61)
+(or (not x329) (not x61) x87)
+(or x329 (not x61) (not x87) (not x88))
+(or (not x329) (not x61) (not x87) x88)
+(or (not x232) x125)
+(or (not x232) (not x125) x126)
+(or x232 (not x125) (not x126))
+(or (not x340) x85)
+(or (not x340) (not x85) x86)
+(or x340 (not x85) (not x86) (not x87))
+(or (not x340) (not x85) (not x86) x87)
+(or (not x995) x988 x989)
+(or x995 (not x988) x989)
+(or x995 x988 (not x989))
+(or (not x995) (not x988) (not x989))
+(or (not x496) x117 x132)
+(or x496 (not x117) x132)
+(or x496 x117 (not x132))
+(or (not x496) (not x117) (not x132))
+(or (not x1115) x101 x200)
+(or x1115 (not x101) x200)
+(or x1115 x101 (not x200))
+(or (not x1115) (not x101) (not x200))
+(or (not x646) x235 x236)
+(or x646 (not x235) x236)
+(or x646 x235 (not x236))
+(or (not x646) (not x235) (not x236))
+(or (not x707) x112 x231)
+(or x707 (not x112) x231)
+(or x707 x112 (not x231))
+(or (not x707) (not x112) (not x231))
+(or (not x430) x71)
+(or (not x430) (not x71) x72)
+(or x430 (not x71) (not x72) (not x73))
+(or (not x430) (not x71) (not x72) x73)
+(or (not x898) x896 x897)
+(or x898 (not x896) x897)
+(or x898 x896 (not x897))
+(or (not x898) (not x896) (not x897))
+(or (not x402) x50)
+(or (not x402) (not x50) x76)
+(or x402 (not x50) (not x76) (not x77))
+(or (not x402) (not x50) (not x76) x77)
+(or (not x250) x116)
+(or (not x250) (not x116) x117)
+(or x250 (not x116) (not x117))
+(or (not x812) x807 x808)
+(or x812 (not x807) x808)
+(or x812 x807 (not x808))
+(or (not x812) (not x807) (not x808))
+(or (not x584) x183 x198)
+(or x584 (not x183) x198)
+(or x584 x183 (not x198))
+(or (not x584) (not x183) (not x198))
+(or (not x893) x341 x889)
+(or x893 (not x341) x889)
+(or x893 x341 (not x889))
+(or (not x893) (not x341) (not x889))
+(or (not x1091) x1079 x1080)
+(or x1091 (not x1079) x1080)
+(or x1091 x1079 (not x1080))
+(or (not x1091) (not x1079) (not x1080))
+(or (not x1186) x46 x55)
+(or x1186 (not x46) x55)
+(or x1186 x46 (not x55))
+(or (not x1186) (not x46) (not x55))
+(or (not x1183) x456 x457)
+(or x1183 (not x456) x457)
+(or x1183 x456 (not x457))
+(or (not x1183) (not x456) (not x457))
+(or (not x981) x979 x980)
+(or x981 (not x979) x980)
+(or x981 x979 (not x980))
+(or (not x981) (not x979) (not x980))
+(or (not x454) x67)
+(or (not x454) (not x67) x68)
+(or x454 (not x67) (not x68) (not x69))
+(or (not x454) (not x67) (not x68) x69)
+(or (not x887) x885 x886)
+(or x887 (not x885) x886)
+(or x887 x885 (not x886))
+(or (not x887) (not x885) (not x886))
+(or (not x423) x48)
+(or (not x423) (not x48) x72)
+(or x423 (not x48) (not x72) (not x73))
+(or (not x423) (not x48) (not x72) x73)
+(or (not x854) x315 x316)
+(or x854 (not x315) x316)
+(or x854 x315 (not x316))
+(or (not x854) (not x315) (not x316))
+(or (not x225) x47)
+(or (not x225) (not x47) x48)
+(or x225 (not x47) (not x48))
+(or (not x343) x59)
+(or (not x343) (not x59) x85)
+(or x343 (not x59) (not x85) (not x86))
+(or (not x343) (not x59) (not x85) x86)
+(or (not x463) x40)
+(or (not x463) (not x40) x68)
+(or x463 (not x40) (not x68))
+(or (not x662) x121 x216)
+(or x662 (not x121) x216)
+(or x662 x121 (not x216))
+(or (not x662) (not x121) (not x216))
+(or (not x570) x95 x191)
+(or x570 (not x95) x191)
+(or x570 x95 (not x191))
+(or (not x570) (not x95) (not x191))
+(or (not x735) x733 x734)
+(or x735 (not x733) x734)
+(or x735 x733 (not x734))
+(or (not x735) (not x733) (not x734))
+(or (not x1010) x1008 x1009)
+(or x1010 (not x1008) x1009)
+(or x1010 x1008 (not x1009))
+(or (not x1010) (not x1008) (not x1009))
+(or (not x410) x50)
+(or (not x410) (not x50) x76)
+(or x410 (not x50) (not x76))
+(or (not x1064) x416 x417)
+(or x1064 (not x416) x417)
+(or x1064 x416 (not x417))
+(or (not x1064) (not x416) (not x417))
+(or (not x670) x668 x669)
+(or x670 (not x668) x669)
+(or x670 x668 (not x669))
+(or (not x670) (not x668) (not x669))
+(or (not x942) x936 x937)
+(or x942 (not x936) x937)
+(or x942 x936 (not x937))
+(or (not x942) (not x936) (not x937))
+(or (not x457) x41)
+(or (not x457) (not x41) x69)
+(or x457 (not x41) (not x69))
+(or (not x220) x131)
+(or (not x220) (not x131) x132)
+(or x220 (not x131) (not x132))
+(or (not x544) x108 x178)
+(or x544 (not x108) x178)
+(or x544 x108 (not x178))
+(or (not x544) (not x108) (not x178))
+(or (not x638) x483 x637)
+(or x638 (not x483) x637)
+(or x638 x483 (not x637))
+(or (not x638) (not x483) (not x637))
+(or (not x565) x13 x82)
+(or x565 (not x13) x82)
+(or x565 x13 (not x82))
+(or (not x565) (not x13) (not x82))
+(or (not x664) x106 x118)
+(or x664 (not x106) x118)
+(or x664 x106 (not x118))
+(or (not x664) (not x106) (not x118))
+(or (not x688) x493 x687)
+(or x688 (not x493) x687)
+(or x688 x493 (not x687))
+(or (not x688) (not x493) (not x687))
+(or (not x721) x265 x266)
+(or x721 (not x265) x266)
+(or x721 x265 (not x266))
+(or (not x721) (not x265) (not x266))
+(or (not x374) x56)
+(or (not x374) (not x56) x80)
+(or x374 (not x56) (not x80) (not x81))
+(or (not x374) (not x56) (not x80) x81)
+(or (not x602) x121 x201)
+(or x602 (not x121) x201)
+(or x602 x121 (not x201))
+(or (not x602) (not x121) (not x201))
+(or (not x964) x111 x189)
+(or x964 (not x111) x189)
+(or x964 x111 (not x189))
+(or (not x964) (not x111) (not x189))
+(or (not x813) x179 x191)
+(or x813 (not x179) x191)
+(or x813 x179 (not x191))
+(or (not x813) (not x179) (not x191))
+(or (not x961) x287 x370)
+(or x961 (not x287) x370)
+(or x961 x287 (not x370))
+(or (not x961) (not x287) (not x370))
+(or (not x1187) x292 x363)
+(or x1187 (not x292) x363)
+(or x1187 x292 (not x363))
+(or (not x1187) (not x292) (not x363))
+(or (not x1018) x272 x295)
+(or x1018 (not x272) x295)
+(or x1018 x272 (not x295))
+(or (not x1018) (not x272) (not x295))
+(or (not x876) x24 x66)
+(or x876 (not x24) x66)
+(or x876 x24 (not x66))
+(or (not x876) (not x24) (not x66))
+(or (not x296) x66)
+(or (not x296) (not x66) x94)
+(or x296 (not x66) (not x94))
+(or (not x582) x182 x197)
+(or x582 (not x182) x197)
+(or x582 x182 (not x197))
+(or (not x582) (not x182) (not x197))
+(or (not x906) x342 x343)
+(or x906 (not x342) x343)
+(or x906 x342 (not x343))
+(or (not x906) (not x342) (not x343))
+(or (not x413) x74)
+(or (not x413) (not x74) x75)
+(or x413 (not x74) (not x75) (not x77))
+(or (not x413) (not x74) (not x75) x77)
+(or (not x766) x99 x102)
+(or x766 (not x99) x102)
+(or x766 x99 (not x102))
+(or (not x766) (not x99) (not x102))
+(or (not x726) x267 x268)
+(or x726 (not x267) x268)
+(or x726 x267 (not x268))
+(or (not x726) (not x267) (not x268))
+(or (not x328) x7)
+(or (not x328) (not x7) x8)
+(or x328 (not x7) (not x8))
+(or (not x1182) x216 x237)
+(or x1182 (not x216) x237)
+(or x1182 x216 (not x237))
+(or (not x1182) (not x216) (not x237))
+(or (not x791) x786 x787)
+(or x791 (not x786) x787)
+(or x791 x786 (not x787))
+(or (not x791) (not x786) (not x787))
+(or (not x1133) x442 x443)
+(or x1133 (not x442) x443)
+(or x1133 x442 (not x443))
+(or (not x1133) (not x442) (not x443))
+(or (not x833) x304 x305)
+(or x833 (not x304) x305)
+(or x833 x304 (not x305))
+(or (not x833) (not x304) (not x305))
+(or (not x210) x59)
+(or (not x210) (not x59) x60)
+(or x210 (not x59) (not x60))
+(or (not x1174) x1166 x1167)
+(or x1174 (not x1166) x1167)
+(or x1174 x1166 (not x1167))
+(or (not x1174) (not x1166) (not x1167))
+(or (not x1209) x1206 x1207)
+(or x1209 (not x1206) x1207)
+(or x1209 x1206 (not x1207))
+(or (not x1209) (not x1206) (not x1207))
+(or (not x459) x42)
+(or (not x459) (not x42) x66)
+(or x459 (not x42) (not x66) (not x67))
+(or (not x459) (not x42) (not x66) x67)
+(or (not x1101) x429 x430)
+(or x1101 (not x429) x430)
+(or x1101 x429 (not x430))
+(or (not x1101) (not x429) (not x430))
+(or (not x1016) x14 x56)
+(or x1016 (not x14) x56)
+(or x1016 x14 (not x56))
+(or (not x1016) (not x14) (not x56))
+(or (not x862) x182 x183)
+(or x862 (not x182) x183)
+(or x862 x182 (not x183))
+(or (not x862) (not x182) (not x183))
+(or (not x868) x321 x322)
+(or x868 (not x321) x322)
+(or x868 x321 (not x322))
+(or (not x868) (not x321) (not x322))
+(or (not x271) x24)
+(or (not x271) (not x24) x25)
+(or x271 (not x24) (not x25))
+(or (not x261) x29)
+(or (not x261) (not x29) x30)
+(or x261 (not x29) (not x30))
+(or (not x798) x793 x794)
+(or x798 (not x793) x794)
+(or x798 x793 (not x794))
+(or (not x798) (not x793) (not x794))
+(or (not x1017) x194 x203)
+(or x1017 (not x194) x203)
+(or x1017 x194 (not x203))
+(or (not x1017) (not x194) (not x203))
+(or (not x968) x214 x264)
+(or x968 (not x214) x264)
+(or x968 x214 (not x264))
+(or (not x968) (not x214) (not x264))
+(or (not x1144) x1137 x1138)
+(or x1144 (not x1137) x1138)
+(or x1144 x1137 (not x1138))
+(or (not x1144) (not x1137) (not x1138))
+(or (not x1199) x370 x462)
+(or x1199 (not x370) x462)
+(or x1199 x370 (not x462))
+(or (not x1199) (not x370) (not x462))
+(or (not x1040) x407 x1030)
+(or x1040 (not x407) x1030)
+(or x1040 x407 (not x1030))
+(or (not x1040) (not x407) (not x1030))
+(or (not x911) x907 x908)
+(or x911 (not x907) x908)
+(or x911 x907 (not x908))
+(or (not x911) (not x907) (not x908))
+(or (not x522) x104 x119)
+(or x522 (not x104) x119)
+(or x522 x104 (not x119))
+(or (not x522) (not x104) (not x119))
+(or (not x753) x515 x750)
+(or x753 (not x515) x750)
+(or x753 x515 (not x750))
+(or (not x753) (not x515) (not x750))
+(or (not x631) x229 x230)
+(or x631 (not x229) x230)
+(or x631 x229 (not x230))
+(or (not x631) (not x229) (not x230))
+(or (not x416) x49)
+(or (not x416) (not x49) x75)
+(or x416 (not x49) (not x75))
+(or (not x1235) x216 x219)
+(or x1235 (not x216) x219)
+(or x1235 x216 (not x219))
+(or (not x1235) (not x216) (not x219))
+(or (not x278) x102)
+(or (not x278) (not x102) x103)
+(or x278 (not x102) (not x103))
+(or (not x314) x9)
+(or (not x314) (not x9) x10)
+(or x314 (not x9) (not x10))
+(or (not x983) x977 x978)
+(or x983 (not x977) x978)
+(or x983 x977 (not x978))
+(or (not x983) (not x977) (not x978))
+(or (not x814) x295 x296)
+(or x814 (not x295) x296)
+(or x814 x295 (not x296))
+(or (not x814) (not x295) (not x296))
+(or (not x1094) x1091 x1092)
+(or x1094 (not x1091) x1092)
+(or x1094 x1091 (not x1092))
+(or (not x1094) (not x1091) (not x1092))
+(or (not x960) x190 x202)
+(or x960 (not x190) x202)
+(or x960 x190 (not x202))
+(or (not x960) (not x190) (not x202))
+(or (not x344) x59)
+(or (not x344) (not x59) x87)
+(or x344 (not x59) (not x87))
+(or (not x542) x94 x109)
+(or x542 (not x94) x109)
+(or x542 x94 (not x109))
+(or (not x542) (not x94) (not x109))
+(or (not x552) x104 x182)
+(or x552 (not x104) x182)
+(or x552 x104 (not x182))
+(or (not x552) (not x104) (not x182))
+(or (not x612) x132 x205)
+(or x612 (not x132) x205)
+(or x612 x132 (not x205))
+(or (not x612) (not x132) (not x205))
+(or (not x648) x485 x647)
+(or x648 (not x485) x647)
+(or x648 x485 (not x647))
+(or (not x648) (not x485) (not x647))
+(or (not x1206) x1199 x1200)
+(or x1206 (not x1199) x1200)
+(or x1206 x1199 (not x1200))
+(or (not x1206) (not x1199) (not x1200))
+(or (not x366) x57)
+(or (not x366) (not x57) x83)
+(or x366 (not x57) (not x83))
+(or (not x492) x24 x51)
+(or x492 (not x24) x51)
+(or x492 x24 (not x51))
+(or (not x492) (not x24) (not x51))
+(or (not x977) x973 x974)
+(or x977 (not x973) x974)
+(or x977 x973 (not x974))
+(or (not x977) (not x973) (not x974))
+(or (not x1025) x206 x218)
+(or x1025 (not x206) x218)
+(or x1025 x206 (not x218))
+(or (not x1025) (not x206) (not x218))
+(or (not x1001) x996 x997)
+(or x1001 (not x996) x997)
+(or x1001 x996 (not x997))
+(or (not x1001) (not x996) (not x997))
+(or (not x713) x501 x712)
+(or x713 (not x501) x712)
+(or x713 x501 (not x712))
+(or (not x713) (not x501) (not x712))
+(or (not x524) x103 x118)
+(or x524 (not x103) x118)
+(or x524 x103 (not x118))
+(or (not x524) (not x103) (not x118))
+(or (not x749) x744 x745)
+(or x749 (not x744) x745)
+(or x749 x744 (not x745))
+(or (not x749) (not x744) (not x745))
+(or (not x249) x35)
+(or (not x249) (not x35) x36)
+(or x249 (not x35) (not x36))
+(or (not x1231) x1227 x817)
+(or x1231 (not x1227) x817)
+(or x1231 x1227 (not x817))
+(or (not x1231) (not x1227) (not x817))
+(or (not x1033) x405 x406)
+(or x1033 (not x405) x406)
+(or x1033 x405 (not x406))
+(or (not x1033) (not x405) (not x406))
+(or (not x949) x367 x368)
+(or x949 (not x367) x368)
+(or x949 x367 (not x368))
+(or (not x949) (not x367) (not x368))
+(or (not x480) x36 x63)
+(or x480 (not x36) x63)
+(or x480 x36 (not x63))
+(or (not x480) (not x36) (not x63))
+(or (not x912) x256 x279)
+(or x912 (not x256) x279)
+(or x912 x256 (not x279))
+(or (not x912) (not x256) (not x279))
+(or (not x548) x106 x180)
+(or x548 (not x106) x180)
+(or x548 x106 (not x180))
+(or (not x548) (not x106) (not x180))
+(or (not x298) x93)
+(or (not x298) (not x93) x94)
+(or x298 (not x93) (not x94))
+(or (not x632) x127 x210)
+(or x632 (not x127) x210)
+(or x632 x127 (not x210))
+(or (not x632) (not x127) (not x210))
+(or (not x718) x503 x717)
+(or x718 (not x503) x717)
+(or x718 x503 (not x717))
+(or (not x718) (not x503) (not x717))
+(or (not x1127) x1125 x1126)
+(or x1127 (not x1125) x1126)
+(or x1127 x1125 (not x1126))
+(or (not x1127) (not x1125) (not x1126))
+(or (not x566) x97 x189)
+(or x566 (not x97) x189)
+(or x566 x97 (not x189))
+(or (not x566) (not x97) (not x189))
+(or (not x796) x236 x259)
+(or x796 (not x236) x259)
+(or x796 x236 (not x259))
+(or (not x796) (not x236) (not x259))
+(or (not x919) x281 x349)
+(or x919 (not x281) x349)
+(or x919 x281 (not x349))
+(or (not x919) (not x281) (not x349))
+(or (not x319) x88)
+(or (not x319) (not x88) x89)
+(or x319 (not x88) (not x89) (not x90))
+(or (not x319) (not x88) (not x89) x90)
+(or (not x470) x40)
+(or (not x470) (not x40) x66)
+(or x470 (not x40) (not x66))
+(or (not x245) x37)
+(or (not x245) (not x37) x38)
+(or x245 (not x37) (not x38))
+(or (not x829) x822 x823)
+(or x829 (not x822) x823)
+(or x829 x822 (not x823))
+(or (not x829) (not x822) (not x823))
+(or (not x1248) x474 x475)
+(or x1248 (not x474) x475)
+(or x1248 x474 (not x475))
+(or (not x1248) (not x474) (not x475))
+(or (not x1238) x476 x477)
+(or x1238 (not x476) x477)
+(or x1238 x476 (not x477))
+(or (not x1238) (not x476) (not x477))
+(or (not x1099) x208 x211)
+(or x1099 (not x208) x211)
+(or x1099 x208 (not x211))
+(or (not x1099) (not x208) (not x211))
+(or (not x668) x489 x667)
+(or x668 (not x489) x667)
+(or x668 x489 (not x667))
+(or (not x668) (not x489) (not x667))
+(or (not x411) x50)
+(or (not x411) (not x50) x74)
+(or x411 (not x50) (not x74) (not x75))
+(or (not x411) (not x50) (not x74) x75)
+(or (not x1188) x1180 x1181)
+(or x1188 (not x1180) x1181)
+(or x1188 x1180 (not x1181))
+(or (not x1188) (not x1180) (not x1181))
+(or (not x821) x814 x815)
+(or x821 (not x814) x815)
+(or x821 x814 (not x815))
+(or (not x821) (not x814) (not x815))
+(or (not x1068) x209 x223)
+(or x1068 (not x209) x223)
+(or x1068 x209 (not x223))
+(or (not x1068) (not x209) (not x223))
+(or (not x517) x10 x37)
+(or x517 (not x10) x37)
+(or x517 x10 (not x37))
+(or (not x517) (not x10) (not x37))
+(or (not x204) x65)
+(or (not x204) (not x65) x66)
+(or x204 (not x65) (not x66))
+(or (not x546) x107 x179)
+(or x546 (not x107) x179)
+(or x546 x107 (not x179))
+(or (not x546) (not x107) (not x179))
+(or (not x763) x758 x759)
+(or x763 (not x758) x759)
+(or x763 x758 (not x759))
+(or (not x763) (not x758) (not x759))
+(or (not x1217) x471 x472)
+(or x1217 (not x471) x472)
+(or x1217 x471 (not x472))
+(or (not x1217) (not x471) (not x472))
+(or (not x841) x308 x309)
+(or x841 (not x308) x309)
+(or x841 x308 (not x309))
+(or (not x841) (not x308) (not x309))
+(or (not x419) x73)
+(or (not x419) (not x73) x74)
+(or x419 (not x73) (not x74) (not x76))
+(or (not x419) (not x73) (not x74) x76)
+(or (not x819) x242 x265)
+(or x819 (not x242) x265)
+(or x819 x242 (not x265))
+(or (not x819) (not x242) (not x265))
+(or (not x720) x718 x719)
+(or x720 (not x718) x719)
+(or x720 x718 (not x719))
+(or (not x720) (not x718) (not x719))
+(or (not x628) x481 x627)
+(or x628 (not x481) x627)
+(or x628 x481 (not x627))
+(or (not x628) (not x481) (not x627))
+(or (not x1237) x305 x306)
+(or x1237 (not x305) x306)
+(or x1237 x305 (not x306))
+(or (not x1237) (not x305) (not x306))
+(or (not x780) x97 x100)
+(or x780 (not x97) x100)
+(or x780 x97 (not x100))
+(or (not x780) (not x97) (not x100))
+(or (not x809) x531 x806)
+(or x809 (not x531) x806)
+(or x809 x531 (not x806))
+(or (not x809) (not x531) (not x806))
+(or (not x1151) x1149 x1150)
+(or x1151 (not x1149) x1150)
+(or x1151 x1149 (not x1150))
+(or (not x1151) (not x1149) (not x1150))
+(or (not x592) x131 x191)
+(or x592 (not x131) x191)
+(or x592 x131 (not x191))
+(or (not x592) (not x131) (not x191))
+(or (not x716) x263 x264)
+(or x716 (not x263) x264)
+(or x716 x263 (not x264))
+(or (not x716) (not x263) (not x264))
+(or (not x1138) x1135 x1136)
+(or x1138 (not x1135) x1136)
+(or x1138 x1135 (not x1136))
+(or (not x1138) (not x1135) (not x1136))
+(or (not x1178) x1170 x1171)
+(or x1178 (not x1170) x1171)
+(or x1178 x1170 (not x1171))
+(or (not x1178) (not x1170) (not x1171))
+(or (not x616) x131 x206)
+(or x616 (not x131) x206)
+(or x616 x131 (not x206))
+(or (not x616) (not x131) (not x206))
+(or (not x334) x86)
+(or (not x334) (not x86) x87)
+(or x334 (not x86) (not x87) (not x89))
+(or (not x334) (not x86) (not x87) x89)
+(or (not x1093) x321 x420)
+(or x1093 (not x321) x420)
+(or x1093 x321 (not x420))
+(or (not x1093) (not x321) (not x420))
+(or (not x834) x832 x833)
+(or x834 (not x832) x833)
+(or x834 x832 (not x833))
+(or (not x834) (not x832) (not x833))
+(or (not x1196) x3 x27)
+(or x1196 (not x3) x27)
+(or x1196 x3 (not x27))
+(or (not x1196) (not x3) (not x27))
+(or (not x719) x95 x107)
+(or x719 (not x95) x107)
+(or x719 x95 (not x107))
+(or (not x719) (not x95) (not x107))
+(or (not x422) x48)
+(or (not x422) (not x48) x74)
+(or x422 (not x48) (not x74))
+(or (not x326) x87)
+(or (not x326) (not x87) x88)
+(or x326 (not x87) (not x88) (not x89))
+(or (not x326) (not x87) (not x88) x89)
+(or (not x918) x187 x199)
+(or x918 (not x187) x199)
+(or x918 x187 (not x199))
+(or (not x918) (not x187) (not x199))
+(or (not x1005) x392 x393)
+(or x1005 (not x392) x393)
+(or x1005 x392 (not x393))
+(or (not x1005) (not x392) (not x393))
+(or (not x399) x52)
+(or (not x399) (not x52) x76)
+(or x399 (not x52) (not x76) (not x77))
+(or (not x399) (not x52) (not x76) x77)
+(or (not x349) x4)
+(or (not x349) (not x4) x5)
+(or x349 (not x4) (not x5))
+(or (not x545) x23 x92)
+(or x545 (not x23) x92)
+(or x545 x23 (not x92))
+(or (not x545) (not x23) (not x92))
+(or (not x685) x683 x684)
+(or x685 (not x683) x684)
+(or x685 x683 (not x684))
+(or (not x685) (not x683) (not x684))
+(or (not x848) x843 x844)
+(or x848 (not x843) x844)
+(or x848 x843 (not x844))
+(or (not x848) (not x843) (not x844))
+(or (not x1146) x59 x99)
+(or x1146 (not x59) x99)
+(or x1146 x59 (not x99))
+(or (not x1146) (not x59) (not x99))
+(or (not x1173) x201 x203)
+(or x1173 (not x201) x203)
+(or x1173 x201 (not x203))
+(or (not x1173) (not x201) (not x203))
+(or (not x379) x54)
+(or (not x379) (not x54) x82)
+(or x379 (not x54) (not x82))
+(or (not x532) x99 x114)
+(or x532 (not x99) x114)
+(or x532 x99 (not x114))
+(or (not x532) (not x99) (not x114))
+(or (not x1020) x1016 x1017)
+(or x1020 (not x1016) x1017)
+(or x1020 x1016 (not x1017))
+(or (not x1020) (not x1016) (not x1017))
+(or (not x488) x28 x55)
+(or x488 (not x28) x55)
+(or x488 x28 (not x55))
+(or (not x488) (not x28) (not x55))
+(or (not x1007) x108 x191)
+(or x1007 (not x108) x191)
+(or x1007 x108 (not x191))
+(or (not x1007) (not x108) (not x191))
+(or (not x1102) x1098 x1099)
+(or x1102 (not x1098) x1099)
+(or x1102 x1098 (not x1099))
+(or (not x1102) (not x1098) (not x1099))
+(or (not x1137) x1129 x1130)
+(or x1137 (not x1129) x1130)
+(or x1137 x1129 (not x1130))
+(or (not x1137) (not x1129) (not x1130))
+(or (not x289) x15)
+(or (not x289) (not x15) x16)
+(or x289 (not x15) (not x16))
+(or (not x625) x623 x624)
+(or x625 (not x623) x624)
+(or x625 x623 (not x624))
+(or (not x625) (not x623) (not x624))
+(or (not x1098) x61 x102)
+(or x1098 (not x61) x102)
+(or x1098 x61 (not x102))
+(or (not x1098) (not x61) (not x102))
+(or (not x307) x10)
+(or (not x307) (not x10) x11)
+(or x307 (not x10) (not x11))
+(or (not x456) x41)
+(or (not x456) (not x41) x67)
+(or x456 (not x41) (not x67) (not x68))
+(or (not x456) (not x41) (not x67) x68)
+(or (not x842) x837 x838)
+(or x842 (not x837) x838)
+(or x842 x837 (not x838))
+(or (not x842) (not x837) (not x838))
+(or (not x207) x62)
+(or (not x207) (not x62) x63)
+(or x207 (not x62) (not x63))
+(or (not x514) x108 x123)
+(or x514 (not x108) x123)
+(or x514 x108 (not x123))
+(or (not x514) (not x108) (not x123))
+(or (not x922) x114 x186)
+(or x922 (not x114) x186)
+(or x922 x114 (not x186))
+(or (not x922) (not x114) (not x186))
+(or (not x1109) x1106 x1107)
+(or x1109 (not x1106) x1107)
+(or x1109 x1106 (not x1107))
+(or (not x1109) (not x1106) (not x1107))
+(or (not x1074) x414 x415)
+(or x1074 (not x414) x415)
+(or x1074 x414 (not x415))
+(or (not x1074) (not x414) (not x415))
+(or (not x734) x104 x107)
+(or x734 (not x104) x107)
+(or x734 x104 (not x107))
+(or (not x734) (not x104) (not x107))
+(or (not x528) x101 x116)
+(or x528 (not x101) x116)
+(or x528 x101 (not x116))
+(or (not x528) (not x101) (not x116))
+(or (not x472) x64)
+(or (not x472) (not x64) x65)
+(or x472 (not x64) (not x65) (not x66))
+(or (not x472) (not x64) (not x65) x66)
+(or (not x773) x98 x101)
+(or x773 (not x98) x101)
+(or x773 x98 (not x101))
+(or (not x773) (not x98) (not x101))
+(or (not x959) x18 x60)
+(or x959 (not x18) x60)
+(or x959 x18 (not x60))
+(or (not x959) (not x18) (not x60))
+(or (not x445) x43)
+(or (not x445) (not x43) x71)
+(or x445 (not x43) (not x71))
+(or (not x872) x866 x867)
+(or x872 (not x866) x867)
+(or x872 x866 (not x867))
+(or (not x872) (not x866) (not x867))
+(or (not x336) x60)
+(or (not x336) (not x60) x86)
+(or x336 (not x60) (not x86) (not x87))
+(or (not x336) (not x60) (not x86) x87)
+(or (not x1184) x460 x461)
+(or x1184 (not x460) x461)
+(or x1184 x460 (not x461))
+(or (not x1184) (not x460) (not x461))
+(or (not x1122) x1115 x1116)
+(or x1122 (not x1115) x1116)
+(or x1122 x1115 (not x1116))
+(or (not x1122) (not x1115) (not x1116))
+(or (not x1083) x425 x1078)
+(or x1083 (not x425) x1078)
+(or x1083 x425 (not x1078))
+(or (not x1083) (not x425) (not x1078))
+(or (not x755) x753 x754)
+(or x755 (not x753) x754)
+(or x755 x753 (not x754))
+(or (not x755) (not x753) (not x754))
+(or (not x1057) x1054 x1055)
+(or x1057 (not x1054) x1055)
+(or x1057 x1054 (not x1055))
+(or (not x1057) (not x1054) (not x1055))
+(or (not x215) x54)
+(or (not x215) (not x54) x55)
+(or x215 (not x54) (not x55))
+(or (not x1049) x54 x63)
+(or x1049 (not x54) x63)
+(or x1049 x54 (not x63))
+(or (not x1049) (not x54) (not x63))
+(or (not x350) x58)
+(or (not x350) (not x58) x84)
+(or x350 (not x58) (not x84) (not x85))
+(or (not x350) (not x58) (not x84) x85)
+(or (not x892) x337 x338)
+(or x892 (not x337) x338)
+(or x892 x337 (not x338))
+(or (not x892) (not x337) (not x338))
+(or (not x468) x39)
+(or (not x468) (not x39) x65)
+(or x468 (not x39) (not x65) (not x66))
+(or (not x468) (not x39) (not x65) x66)
+(or (not x714) x96 x108)
+(or x714 (not x96) x108)
+(or x714 x96 (not x108))
+(or (not x714) (not x96) (not x108))
+(or (not x1051) x413 x1043)
+(or x1051 (not x413) x1043)
+(or x1051 x413 (not x1043))
+(or (not x1051) (not x413) (not x1043))
+(or (not x642) x125 x212)
+(or x642 (not x125) x212)
+(or x642 x125 (not x212))
+(or (not x642) (not x125) (not x212))
+(or (not x1257) x1254 x1255)
+(or x1257 (not x1254) x1255)
+(or x1257 x1254 (not x1255))
+(or (not x1257) (not x1254) (not x1255))
+(or (not x1047) x411 x412)
+(or x1047 (not x411) x412)
+(or x1047 x411 (not x412))
+(or (not x1047) (not x411) (not x412))
+(or (not x982) x215 x266)
+(or x982 (not x215) x266)
+(or x982 x215 (not x266))
+(or (not x982) (not x215) (not x266))
+(or (not x501) x18 x45)
+(or x501 (not x18) x45)
+(or x501 x18 (not x45))
+(or (not x501) (not x18) (not x45))
+(or (not x558) x101 x185)
+(or x558 (not x101) x185)
+(or x558 x101 (not x185))
+(or (not x558) (not x101) (not x185))
+(or (not x728) x507 x727)
+(or x728 (not x507) x727)
+(or x728 x507 (not x727))
+(or (not x728) (not x507) (not x727))
+(or (not x322) x62)
+(or (not x322) (not x62) x88)
+(or x322 (not x62) (not x88) (not x89))
+(or (not x322) (not x62) (not x88) x89)
+(or (not x1220) x44 x53)
+(or x1220 (not x44) x53)
+(or x1220 x44 (not x53))
+(or (not x1220) (not x44) (not x53))
+(or (not x880) x877 x878)
+(or x880 (not x877) x878)
+(or x880 x877 (not x878))
+(or (not x880) (not x877) (not x878))
+(or (not x424) x72)
+(or (not x424) (not x72) x73)
+(or x424 (not x72) (not x73) (not x74))
+(or (not x424) (not x72) (not x73) x74)
+(or (not x905) x198 x210)
+(or x905 (not x198) x210)
+(or x905 x198 (not x210))
+(or (not x905) (not x198) (not x210))
+(or (not x281) x19)
+(or (not x281) (not x19) x20)
+(or x281 (not x19) (not x20))
+(or (not x520) x105 x120)
+(or x520 (not x105) x120)
+(or x520 x105 (not x120))
+(or (not x520) (not x105) (not x120))
+(or (not x1214) x205 x206)
+(or x1214 (not x205) x206)
+(or x1214 x205 (not x206))
+(or (not x1214) (not x205) (not x206))
+(or (not x462) x40)
+(or (not x462) (not x40) x66)
+(or x462 (not x40) (not x66) (not x67))
+(or (not x462) (not x40) (not x66) x67)
+(or (not x1031) x204 x207)
+(or x1031 (not x204) x207)
+(or x1031 x204 (not x207))
+(or (not x1031) (not x204) (not x207))
+(or (not x1072) x1062 x1063)
+(or x1072 (not x1062) x1063)
+(or x1072 x1062 (not x1063))
+(or (not x1072) (not x1062) (not x1063))
+(or (not x770) x765 x766)
+(or x770 (not x765) x766)
+(or x770 x765 (not x766))
+(or (not x770) (not x765) (not x766))
+(or (not x678) x491 x677)
+(or x678 (not x491) x677)
+(or x678 x491 (not x677))
+(or (not x678) (not x491) (not x677))
+(or (not x384) x53)
+(or (not x384) (not x53) x79)
+(or x384 (not x53) (not x79) (not x80))
+(or (not x384) (not x53) (not x79) x80)
+(or (not x1226) x473 x1212)
+(or x1226 (not x473) x1212)
+(or x1226 x473 (not x1212))
+(or (not x1226) (not x473) (not x1212))
+(or (not x1177) x1174 x1175)
+(or x1177 (not x1174) x1175)
+(or x1177 x1174 (not x1175))
+(or (not x1177) (not x1174) (not x1175))
+(or (not x182) x87)
+(or (not x182) (not x87) x88)
+(or x182 (not x87) (not x88))
+(or (not x785) x126 x187)
+(or x785 (not x126) x187)
+(or x785 x126 (not x187))
+(or (not x785) (not x126) (not x187))
+(or (not x761) x226 x249)
+(or x761 (not x226) x249)
+(or x761 x226 (not x249))
+(or (not x761) (not x226) (not x249))
+(or (not x794) x95 x98)
+(or x794 (not x95) x98)
+(or x794 x95 (not x98))
+(or (not x794) (not x95) (not x98))
+(or (not x238) x122)
+(or (not x238) (not x122) x123)
+(or x238 (not x122) (not x123))
+(or (not x316) x63)
+(or (not x316) (not x63) x91)
+(or x316 (not x63) (not x91))
+(or (not x337) x60)
+(or (not x337) (not x60) x88)
+(or x337 (not x60) (not x88))
+(or (not x758) x279 x280)
+(or x758 (not x279) x280)
+(or x758 x279 (not x280))
+(or (not x758) (not x279) (not x280))
+(or (not x1029) x1024 x1025)
+(or x1029 (not x1024) x1025)
+(or x1029 x1024 (not x1025))
+(or (not x1029) (not x1024) (not x1025))
+(or (not x943) x360 x361)
+(or x943 (not x360) x361)
+(or x943 x360 (not x361))
+(or (not x943) (not x360) (not x361))
+(or (not x580) x181 x196)
+(or x580 (not x181) x196)
+(or x580 x181 (not x196))
+(or (not x580) (not x181) (not x196))
+(or (not x810) x240 x263)
+(or x810 (not x240) x263)
+(or x810 x240 (not x263))
+(or (not x810) (not x240) (not x263))
+(or (not x1119) x1117 x1118)
+(or x1119 (not x1117) x1118)
+(or x1119 x1117 (not x1118))
+(or (not x1119) (not x1117) (not x1118))
+(or (not x581) x5 x74)
+(or x581 (not x5) x74)
+(or x581 x5 (not x74))
+(or (not x581) (not x5) (not x74))
+(or (not x585) x3 x72)
+(or x585 (not x3) x72)
+(or x585 x3 (not x72))
+(or (not x585) (not x3) (not x72))
+(or (not x1076) x1068 x1069)
+(or x1076 (not x1068) x1069)
+(or x1076 x1068 (not x1069))
+(or (not x1076) (not x1068) (not x1069))
+(or (not x604) x202 x217)
+(or x604 (not x202) x217)
+(or x604 x202 (not x217))
+(or (not x604) (not x202) (not x217))
+(or (not x1080) x197 x198)
+(or x1080 (not x197) x198)
+(or x1080 x197 (not x198))
+(or (not x1080) (not x197) (not x198))
+(or (not x970) x375 x376)
+(or x970 (not x375) x376)
+(or x970 x375 (not x376))
+(or (not x970) (not x375) (not x376))
+(or (not x1253) x1250 x1251)
+(or x1253 (not x1250) x1251)
+(or x1253 x1250 (not x1251))
+(or (not x1253) (not x1250) (not x1251))
+(or (not x1247) x130 x201)
+(or x1247 (not x130) x201)
+(or x1247 x130 (not x201))
+(or (not x1247) (not x130) (not x201))
+(or (not x527) x5 x32)
+(or x527 (not x5) x32)
+(or x527 x5 (not x32))
+(or (not x527) (not x5) (not x32))
+(or (not x774) x521 x771)
+(or x774 (not x521) x771)
+(or x774 x521 (not x771))
+(or (not x774) (not x521) (not x771))
+(or (not x986) x981 x982)
+(or x986 (not x981) x982)
+(or x986 x981 (not x982))
+(or (not x986) (not x981) (not x982))
+(or (not x839) x537 x836)
+(or x839 (not x537) x836)
+(or x839 x537 (not x836))
+(or (not x839) (not x537) (not x836))
+(or (not x181) x88)
+(or (not x181) (not x88) x89)
+(or x181 (not x88) (not x89))
+(or (not x687) x116 x223)
+(or x687 (not x116) x223)
+(or x687 x116 (not x223))
+(or (not x687) (not x116) (not x223))
+(or (not x750) x131 x182)
+(or x750 (not x131) x182)
+(or x750 x131 (not x182))
+(or (not x750) (not x131) (not x182))
+(or (not x537) x27 x69)
+(or x537 (not x27) x69)
+(or x537 x27 (not x69))
+(or (not x537) (not x27) (not x69))
+(or (not x624) x114 x126)
+(or x624 (not x114) x126)
+(or x624 x114 (not x126))
+(or (not x624) (not x114) (not x126))
+(or (not x865) x327 x541)
+(or x865 (not x327) x541)
+(or x865 x327 (not x541))
+(or (not x865) (not x327) (not x541))
+(or (not x365) x56)
+(or (not x365) (not x56) x84)
+(or x365 (not x56) (not x84))
+(or (not x364) x56)
+(or (not x364) (not x56) x82)
+(or x364 (not x56) (not x82) (not x83))
+(or (not x364) (not x56) (not x82) x83)
+(or (not x626) x227 x228)
+(or x626 (not x227) x228)
+(or x626 x227 (not x228))
+(or (not x626) (not x227) (not x228))
+(or (not x192) x77)
+(or (not x192) (not x77) x78)
+(or x192 (not x77) (not x78))
+(or (not x751) x277 x278)
+(or x751 (not x277) x278)
+(or x751 x277 (not x278))
+(or (not x751) (not x277) (not x278))
+(or (not x832) x826 x827)
+(or x832 (not x826) x827)
+(or x832 x826 (not x827))
+(or (not x832) (not x826) (not x827))
+(or (not x1008) x390 x391)
+(or x1008 (not x390) x391)
+(or x1008 x390 (not x391))
+(or (not x1008) (not x390) (not x391))
+(or (not x444) x43)
+(or (not x444) (not x43) x69)
+(or x444 (not x43) (not x69) (not x70))
+(or (not x444) (not x43) (not x69) x70)
+(or (not x806) x178 x190)
+(or x806 (not x178) x190)
+(or x806 x178 (not x190))
+(or (not x806) (not x178) (not x190))
+(or (not x200) x69)
+(or (not x200) (not x69) x70)
+(or x200 (not x69) (not x70))
+(or (not x396) x51)
+(or (not x396) (not x51) x77)
+(or x396 (not x51) (not x77) (not x78))
+(or (not x396) (not x51) (not x77) x78)
+(or (not x1175) x1172 x1173)
+(or x1175 (not x1172) x1173)
+(or x1175 x1172 (not x1173))
+(or (not x1175) (not x1172) (not x1173))
+(or (not x1243) x303 x304)
+(or x1243 (not x303) x304)
+(or x1243 x303 (not x304))
+(or (not x1243) (not x303) (not x304))
+(or (not x553) x19 x88)
+(or x553 (not x19) x88)
+(or x553 x19 (not x88))
+(or (not x553) (not x19) (not x88))
+(or (not x409) x49)
+(or (not x409) (not x49) x77)
+(or x409 (not x49) (not x77))
+(or (not x783) x781 x782)
+(or x783 (not x781) x782)
+(or x783 x781 (not x782))
+(or (not x783) (not x781) (not x782))
+(or (not x972) x967 x968)
+(or x972 (not x967) x968)
+(or x972 x967 (not x968))
+(or (not x972) (not x967) (not x968))
+(or (not x253) x33)
+(or (not x253) (not x33) x34)
+(or x253 (not x33) (not x34))
+(or (not x586) x184 x199)
+(or x586 (not x184) x199)
+(or x586 x184 (not x199))
+(or (not x586) (not x184) (not x199))
+(or (not x899) x197 x209)
+(or x899 (not x197) x209)
+(or x899 x197 (not x209))
+(or (not x899) (not x197) (not x209))
+(or (not x779) x285 x286)
+(or x779 (not x285) x286)
+(or x779 x285 (not x286))
+(or (not x779) (not x285) (not x286))
+(or (not x1042) x1037 x1038)
+(or x1042 (not x1037) x1038)
+(or x1042 x1037 (not x1038))
+(or (not x1042) (not x1037) (not x1038))
+(or (not x437) x70)
+(or (not x437) (not x70) x71)
+(or x437 (not x70) (not x71) (not x73))
+(or (not x437) (not x70) (not x71) x73)
+(or (not x193) x76)
+(or (not x193) (not x76) x77)
+(or x193 (not x76) (not x77))
+(or (not x467) x65)
+(or (not x467) (not x65) x66)
+(or x467 (not x65) (not x66) (not x68))
+(or (not x467) (not x65) (not x66) x68)
+(or (not x913) x909 x910)
+(or x913 (not x909) x910)
+(or x913 x909 (not x910))
+(or (not x913) (not x909) (not x910))
+(or (not x659) x107 x119)
+(or x659 (not x107) x119)
+(or x659 x107 (not x119))
+(or (not x659) (not x107) (not x119))
+(or (not x627) x128 x209)
+(or x627 (not x128) x209)
+(or x627 x128 (not x209))
+(or (not x627) (not x128) (not x209))
+(or (not x395) x77)
+(or (not x395) (not x77) x78)
+(or x395 (not x77) (not x78) (not x80))
+(or (not x395) (not x77) (not x78) x80)
+(or (not x280) x101)
+(or (not x280) (not x101) x102)
+(or x280 (not x101) (not x102))
+(or (not x656) x239 x240)
+(or x656 (not x239) x240)
+(or x656 x239 (not x240))
+(or (not x656) (not x239) (not x240))
+(or (not x345) x60)
+(or (not x345) (not x60) x86)
+(or x345 (not x60) (not x86))
+(or (not x741) x243 x273)
+(or x741 (not x243) x273)
+(or x741 x243 (not x273))
+(or (not x741) (not x243) (not x273))
+(or (not x1043) x12 x36)
+(or x1043 (not x12) x36)
+(or x1043 x12 (not x36))
+(or (not x1043) (not x12) (not x36))
+(or (not x869) x862 x863)
+(or x869 (not x862) x863)
+(or x869 x862 (not x863))
+(or (not x869) (not x862) (not x863))
+(or (not x1050) x221 x276)
+(or x1050 (not x221) x276)
+(or x1050 x221 (not x276))
+(or (not x1050) (not x221) (not x276))
+(or (not x1159) x444 x445)
+(or x1159 (not x444) x445)
+(or x1159 x444 (not x445))
+(or (not x1159) (not x444) (not x445))
+(or (not x477) x39)
+(or (not x477) (not x39) x63)
+(or x477 (not x39) (not x63) (not x64))
+(or (not x477) (not x39) (not x63) x64)
+(or (not x1046) x307 x408)
+(or x1046 (not x307) x408)
+(or x1046 x307 (not x408))
+(or (not x1046) (not x307) (not x408))
+(or (not x1002) x15 x57)
+(or x1002 (not x15) x57)
+(or x1002 x15 (not x57))
+(or (not x1002) (not x15) (not x57))
+(or (not x431) x71)
+(or (not x431) (not x71) x72)
+(or x431 (not x71) (not x72) (not x74))
+(or (not x431) (not x71) (not x72) x74)
+(or (not x239) x40)
+(or (not x239) (not x40) x41)
+(or x239 (not x40) (not x41))
+(or (not x405) x51)
+(or (not x405) (not x51) x75)
+(or x405 (not x51) (not x75) (not x76))
+(or (not x405) (not x51) (not x75) x76)
+(or (not x771) x128 x185)
+(or x771 (not x128) x185)
+(or x771 x128 (not x185))
+(or (not x771) (not x128) (not x185))
+(or (not x926) x211 x258)
+(or x926 (not x211) x258)
+(or x926 x211 (not x258))
+(or (not x926) (not x211) (not x258))
+(or (not x1136) x286 x342)
+(or x1136 (not x286) x342)
+(or x1136 x286 (not x342))
+(or (not x1136) (not x286) (not x342))
+(or (not x190) x79)
+(or (not x190) (not x79) x80)
+(or x190 (not x79) (not x80))
+(or (not x403) x50)
+(or (not x403) (not x50) x78)
+(or x403 (not x50) (not x78))
+(or (not x1113) x1110 x1111)
+(or x1113 (not x1110) x1111)
+(or x1113 x1110 (not x1111))
+(or (not x1113) (not x1110) (not x1111))
+(or (not x1229) x1219 x1220)
+(or x1229 (not x1219) x1220)
+(or x1229 x1219 (not x1220))
+(or (not x1229) (not x1219) (not x1220))
+(or (not x907) x346 x347)
+(or x907 (not x346) x347)
+(or x907 x346 (not x347))
+(or (not x907) (not x346) (not x347))
+(or (not x1009) x1004 x1005)
+(or x1009 (not x1004) x1005)
+(or x1009 x1004 (not x1005))
+(or (not x1009) (not x1004) (not x1005))
+(or (not x901) x339 x340)
+(or x901 (not x339) x340)
+(or x901 x339 (not x340))
+(or (not x901) (not x339) (not x340))
+(or (not x446) x44)
+(or (not x446) (not x44) x70)
+(or x446 (not x44) (not x70))
+(or (not x1210) x1203 x1204)
+(or x1210 (not x1203) x1204)
+(or x1210 x1203 (not x1204))
+(or (not x1210) (not x1203) (not x1204))
+(or (not x1170) x235 x290)
+(or x1170 (not x235) x290)
+(or x1170 x235 (not x290))
+(or (not x1170) (not x235) (not x290))
+(or (not x672) x119 x218)
+(or x672 (not x119) x218)
+(or x672 x119 (not x218))
+(or (not x672) (not x119) (not x218))
+(or (not x811) x809 x810)
+(or x811 (not x809) x810)
+(or x811 x809 (not x810))
+(or (not x811) (not x809) (not x810))
+(or (not x1185) x1182 x1183)
+(or x1185 (not x1182) x1183)
+(or x1185 x1182 (not x1183))
+(or (not x1185) (not x1182) (not x1183))
+(or (not x759) x100 x103)
+(or x759 (not x100) x103)
+(or x759 x100 (not x103))
+(or (not x759) (not x100) (not x103))
+(or (not x908) x905 x906)
+(or x908 (not x905) x906)
+(or x908 x905 (not x906))
+(or (not x908) (not x905) (not x906))
+(or (not x521) x8 x35)
+(or x521 (not x8) x35)
+(or x521 x8 (not x35))
+(or (not x521) (not x8) (not x35))
+(or (not x324) x63)
+(or (not x324) (not x63) x89)
+(or x324 (not x63) (not x89))
+(or (not x853) x119 x181)
+(or x853 (not x119) x181)
+(or x853 x119 (not x181))
+(or (not x853) (not x119) (not x181))
+(or (not x1112) x1104 x1105)
+(or x1112 (not x1104) x1105)
+(or x1112 x1104 (not x1105))
+(or (not x1112) (not x1104) (not x1105))
+(or (not x493) x23 x50)
+(or x493 (not x23) x50)
+(or x493 x23 (not x50))
+(or (not x493) (not x23) (not x50))
+(or (not x1013) x394 x395)
+(or x1013 (not x394) x395)
+(or x1013 x394 (not x395))
+(or (not x1013) (not x394) (not x395))
+(or (not x515) x11 x38)
+(or x515 (not x11) x38)
+(or x515 x11 (not x38))
+(or (not x515) (not x11) (not x38))
+(or (not x633) x482 x632)
+(or x633 (not x482) x632)
+(or x633 x482 (not x632))
+(or (not x633) (not x482) (not x632))
+(or (not x534) x98 x113)
+(or x534 (not x98) x113)
+(or x534 x98 (not x113))
+(or (not x534) (not x98) (not x113))
+(or (not x1218) x1213 x1214)
+(or x1218 (not x1213) x1214)
+(or x1218 x1213 (not x1214))
+(or (not x1218) (not x1213) (not x1214))
+(or (not x434) x46)
+(or (not x434) (not x46) x72)
+(or x434 (not x46) (not x72))
+(or (not x752) x101 x104)
+(or x752 (not x101) x104)
+(or x752 x101 (not x104))
+(or (not x752) (not x101) (not x104))
+(or (not x578) x180 x195)
+(or x578 (not x180) x195)
+(or x578 x180 (not x195))
+(or (not x578) (not x180) (not x195))
+(or (not x878) x328 x329)
+(or x878 (not x328) x329)
+(or x878 x328 (not x329))
+(or (not x878) (not x328) (not x329))
+(or (not x1250) x1246 x1247)
+(or x1250 (not x1246) x1247)
+(or x1250 x1246 (not x1247))
+(or (not x1250) (not x1246) (not x1247))
+(or (not x317) x64)
+(or (not x317) (not x64) x90)
+(or x317 (not x64) (not x90))
+(or (not x674) x104 x116)
+(or x674 (not x104) x116)
+(or x674 x104 (not x116))
+(or (not x674) (not x104) (not x116))
+(or (not x212) x57)
+(or (not x212) (not x57) x58)
+(or x212 (not x57) (not x58))
+(or (not x605) x119 x131)
+(or x605 (not x119) x131)
+(or x605 x119 (not x131))
+(or (not x605) (not x119) (not x131))
+(or (not x1097) x9 x33)
+(or x1097 (not x9) x33)
+(or x1097 x9 (not x33))
+(or (not x1097) (not x9) (not x33))
+(or (not x375) x80)
+(or (not x375) (not x80) x81)
+(or x375 (not x80) (not x81) (not x82))
+(or (not x375) (not x80) (not x81) x82)
+(or (not x966) x961 x962)
+(or x966 (not x961) x962)
+(or x966 x961 (not x962))
+(or (not x966) (not x961) (not x962))
+(or (not x276) x103)
+(or (not x276) (not x103) x104)
+(or x276 (not x103) (not x104))
+(or (not x530) x100 x115)
+(or x530 (not x100) x115)
+(or x530 x100 (not x115))
+(or (not x530) (not x100) (not x115))
+(or (not x313) x89)
+(or (not x313) (not x89) x90)
+(or x313 (not x89) (not x90) (not x92))
+(or (not x313) (not x89) (not x90) x92)
+(or (not x789) x234 x257)
+(or x789 (not x234) x257)
+(or x789 x234 (not x257))
+(or (not x789) (not x234) (not x257))
+(or (not x286) x98)
+(or (not x286) (not x98) x99)
+(or x286 (not x98) (not x99))
+(or (not x1000) x998 x999)
+(or x1000 (not x998) x999)
+(or x1000 x998 (not x999))
+(or (not x1000) (not x998) (not x999))
+(or (not x1032) x299 x402)
+(or x1032 (not x299) x402)
+(or x1032 x299 (not x402))
+(or (not x1032) (not x299) (not x402))
+(or (not x294) x94)
+(or (not x294) (not x94) x95)
+(or x294 (not x94) (not x95))
+(or (not x471) x40)
+(or (not x471) (not x40) x64)
+(or x471 (not x40) (not x64) (not x65))
+(or (not x471) (not x40) (not x64) x65)
+(or (not x554) x103 x183)
+(or x554 (not x103) x183)
+(or x554 x103 (not x183))
+(or (not x554) (not x103) (not x183))
+(or (not x653) x486 x652)
+(or x653 (not x486) x652)
+(or x653 x486 (not x652))
+(or (not x653) (not x486) (not x652))
+(or (not x657) x122 x215)
+(or x657 (not x122) x215)
+(or x657 x122 (not x215))
+(or (not x657) (not x122) (not x215))
+(or (not x935) x362 x931)
+(or x935 (not x362) x931)
+(or x935 x362 (not x931))
+(or (not x935) (not x362) (not x931))
+(or (not x507) x15 x42)
+(or x507 (not x15) x42)
+(or x507 x15 (not x42))
+(or (not x507) (not x15) (not x42))
+(or (not x852) x539 x849)
+(or x852 (not x539) x849)
+(or x852 x539 (not x849))
+(or (not x852) (not x539) (not x849))
+(or (not x1208) x463 x464)
+(or x1208 (not x463) x464)
+(or x1208 x463 (not x464))
+(or (not x1208) (not x463) (not x464))
+(or (not x1030) x13 x55)
+(or x1030 (not x13) x55)
+(or x1030 x13 (not x55))
+(or (not x1030) (not x13) (not x55))
+(or (not x539) x26 x68)
+(or x539 (not x26) x68)
+(or x539 x26 (not x68))
+(or (not x539) (not x26) (not x68))
+(or (not x256) x113)
+(or (not x256) (not x113) x114)
+(or x256 (not x113) (not x114))
+(or (not x803) x238 x261)
+(or x803 (not x238) x261)
+(or x803 x238 (not x261))
+(or (not x803) (not x238) (not x261))
+(or (not x1195) x1188 x1189)
+(or x1195 (not x1188) x1189)
+(or x1195 x1188 (not x1189))
+(or (not x1195) (not x1188) (not x1189))
+(or (not x891) x254 x277)
+(or x891 (not x254) x277)
+(or x891 x254 (not x277))
+(or (not x891) (not x254) (not x277))
+(or (not x826) x824 x825)
+(or x826 (not x824) x825)
+(or x826 x824 (not x825))
+(or (not x826) (not x824) (not x825))
+(or (not x397) x51)
+(or (not x397) (not x51) x79)
+(or x397 (not x51) (not x79))
+(or (not x882) x330 x331)
+(or x882 (not x330) x331)
+(or x882 x330 (not x331))
+(or (not x882) (not x330) (not x331))
+(or (not x1105) x431 x1097)
+(or x1105 (not x431) x1097)
+(or x1105 x431 (not x1097))
+(or (not x1105) (not x431) (not x1097))
+(or (not x476) x39)
+(or (not x476) (not x39) x65)
+(or x476 (not x39) (not x65))
+(or (not x370) x1)
+(or (not x370) (not x1) x2)
+(or x370 (not x1) (not x2))
+(or (not x1215) x241 x296)
+(or x1215 (not x241) x296)
+(or x1215 x241 (not x296))
+(or (not x1215) (not x241) (not x296))
+(or (not x502) x114 x129)
+(or x502 (not x114) x129)
+(or x502 x114 (not x129))
+(or (not x502) (not x114) (not x129))
+(or (not x408) x49)
+(or (not x408) (not x49) x75)
+(or x408 (not x49) (not x75) (not x76))
+(or (not x408) (not x49) (not x75) x76)
+(or (not x782) x232 x255)
+(or x782 (not x232) x255)
+(or x782 x232 (not x255))
+(or (not x782) (not x232) (not x255))
+(or (not x651) x237 x238)
+(or x651 (not x237) x238)
+(or x651 x237 (not x238))
+(or (not x651) (not x237) (not x238))
+(or (not x455) x67)
+(or (not x455) (not x67) x68)
+(or x455 (not x67) (not x68) (not x70))
+(or (not x455) (not x67) (not x68) x70)
+(or (not x1216) x377 x468)
+(or x1216 (not x377) x468)
+(or x1216 x377 (not x468))
+(or (not x1216) (not x377) (not x468))
+(or (not x1039) x1035 x1036)
+(or x1039 (not x1035) x1036)
+(or x1039 x1035 (not x1036))
+(or (not x1039) (not x1035) (not x1036))
+(or (not x244) x119)
+(or (not x244) (not x119) x120)
+(or x244 (not x119) (not x120))
+(or (not x429) x47)
+(or (not x429) (not x47) x71)
+(or x429 (not x47) (not x71) (not x72))
+(or (not x429) (not x47) (not x71) x72)
+(or (not x357) x57)
+(or (not x357) (not x57) x83)
+(or x357 (not x57) (not x83) (not x84))
+(or (not x357) (not x57) (not x83) x84)
+(or (not x567) x12 x81)
+(or x567 (not x12) x81)
+(or x567 x12 (not x81))
+(or (not x567) (not x12) (not x81))
+(or (not x736) x271 x272)
+(or x736 (not x271) x272)
+(or x736 x271 (not x272))
+(or (not x736) (not x271) (not x272))
+(or (not x1164) x57 x98)
+(or x1164 (not x57) x98)
+(or x1164 x57 (not x98))
+(or (not x1164) (not x57) (not x98))
+(or (not x629) x113 x125)
+(or x629 (not x113) x125)
+(or x629 x113 (not x125))
+(or (not x629) (not x113) (not x125))
+(or (not x823) x267 x299)
+(or x823 (not x267) x299)
+(or x823 x267 (not x299))
+(or (not x823) (not x267) (not x299))
+(or (not x987) x16 x58)
+(or x987 (not x16) x58)
+(or x987 x16 (not x58))
+(or (not x987) (not x16) (not x58))
+(or (not x388) x78)
+(or (not x388) (not x78) x79)
+(or x388 (not x78) (not x79) (not x80))
+(or (not x388) (not x78) (not x79) x80)
+(or (not x594) x129 x193)
+(or x594 (not x129) x193)
+(or x594 x129 (not x193))
+(or (not x594) (not x129) (not x193))
+(or (not x436) x70)
+(or (not x436) (not x70) x71)
+(or x436 (not x70) (not x71) (not x72))
+(or (not x436) (not x70) (not x71) x72)
+(or (not x291) x14)
+(or (not x291) (not x14) x15)
+(or x291 (not x14) (not x15))
+(or (not x976) x380 x381)
+(or x976 (not x380) x381)
+(or x976 x380 (not x381))
+(or (not x976) (not x380) (not x381))
+(or (not x985) x983 x984)
+(or x985 (not x983) x984)
+(or x985 x983 (not x984))
+(or (not x985) (not x983) (not x984))
+(or (not x197) x72)
+(or (not x197) (not x72) x73)
+(or x197 (not x72) (not x73))
+(or (not x994) x291 x384)
+(or x994 (not x291) x384)
+(or x994 x291 (not x384))
+(or (not x994) (not x291) (not x384))
+(or (not x661) x241 x242)
+(or x661 (not x241) x242)
+(or x661 x241 (not x242))
+(or (not x661) (not x241) (not x242))
+(or (not x1254) x1234 x1235)
+(or x1254 (not x1234) x1235)
+(or x1254 x1234 (not x1235))
+(or (not x1254) (not x1234) (not x1235))
+(or (not x680) x678 x679)
+(or x680 (not x678) x679)
+(or x680 x678 (not x679))
+(or (not x680) (not x678) (not x679))
+(or (not x264) x109)
+(or (not x264) (not x109) x110)
+(or x264 (not x109) (not x110))
+(or (not x866) x864 x865)
+(or x866 (not x864) x865)
+(or x866 x864 (not x865))
+(or (not x866) (not x864) (not x865))
+(or (not x551) x20 x89)
+(or x551 (not x20) x89)
+(or x551 x20 (not x89))
+(or (not x551) (not x20) (not x89))
+(or (not x1092) x1089 x1090)
+(or x1092 (not x1089) x1090)
+(or x1092 x1089 (not x1090))
+(or (not x1092) (not x1089) (not x1090))
+(or (not x506) x112 x127)
+(or x506 (not x112) x127)
+(or x506 x112 (not x127))
+(or (not x506) (not x112) (not x127))
+(or (not x1103) x51 x60)
+(or x1103 (not x51) x60)
+(or x1103 x51 (not x60))
+(or (not x1103) (not x51) (not x60))
+(or (not x183) x86)
+(or (not x183) (not x86) x87)
+(or x183 (not x86) (not x87))
+(or (not x1234) x204 x205)
+(or x1234 (not x204) x205)
+(or x1234 x204 (not x205))
+(or (not x1234) (not x204) (not x205))
+(or (not x1065) x1060 x1061)
+(or x1065 (not x1060) x1061)
+(or x1065 x1060 (not x1061))
+(or (not x1065) (not x1060) (not x1061))
+(or (not x1037) x1033 x1034)
+(or x1037 (not x1033) x1034)
+(or x1037 x1033 (not x1034))
+(or (not x1037) (not x1033) (not x1034))
+(or (not x597) x126 x196)
+(or x597 (not x126) x196)
+(or x597 x126 (not x196))
+(or (not x597) (not x126) (not x196))
+(or (not x816) x95 x122)
+(or x816 (not x95) x122)
+(or x816 x95 (not x122))
+(or (not x816) (not x95) (not x122))
+(or (not x717) x110 x235)
+(or x717 (not x110) x235)
+(or x717 x110 (not x235))
+(or (not x717) (not x110) (not x235))
+(or (not x831) x204 x244)
+(or x831 (not x204) x244)
+(or x831 x204 (not x244))
+(or (not x831) (not x204) (not x244))
+(or (not x338) x61)
+(or (not x338) (not x61) x87)
+(or x338 (not x61) (not x87))
+(or (not x263) x28)
+(or (not x263) (not x28) x29)
+(or x263 (not x28) (not x29))
+(or (not x675) x673 x674)
+(or x675 (not x673) x674)
+(or x675 x673 (not x674))
+(or (not x675) (not x673) (not x674))
+(or (not x1213) x54 x55)
+(or x1213 (not x54) x55)
+(or x1213 x54 (not x55))
+(or (not x1213) (not x54) (not x55))
+(or (not x1048) x1044 x1045)
+(or x1048 (not x1044) x1045)
+(or x1048 x1044 (not x1045))
+(or (not x1048) (not x1044) (not x1045))
+(or (not x1063) x278 x314)
+(or x1063 (not x278) x314)
+(or x1063 x278 (not x314))
+(or (not x1063) (not x278) (not x314))
+(or (not x973) x17 x59)
+(or x973 (not x17) x59)
+(or x973 x17 (not x59))
+(or (not x973) (not x17) (not x59))
+(or (not x777) x772 x773)
+(or x777 (not x772) x773)
+(or x777 x772 (not x773))
+(or (not x777) (not x772) (not x773))
+(or (not x747) x222 x245)
+(or x747 (not x222) x245)
+(or x747 x222 (not x245))
+(or (not x747) (not x222) (not x245))
+(or (not x724) x94 x106)
+(or x724 (not x94) x106)
+(or x724 x94 (not x106))
+(or (not x724) (not x94) (not x106))
+(or (not x614) x116 x128)
+(or x614 (not x116) x128)
+(or x614 x116 (not x128))
+(or (not x614) (not x116) (not x128))
+(or (not x692) x115 x225)
+(or x692 (not x115) x225)
+(or x692 x115 (not x225))
+(or (not x692) (not x115) (not x225))
+(or (not x1230) x1228 x1229)
+(or x1230 (not x1228) x1229)
+(or x1230 x1228 (not x1229))
+(or (not x1230) (not x1228) (not x1229))
+(or (not x499) x19 x46)
+(or x499 (not x19) x46)
+(or x499 x19 (not x46))
+(or (not x499) (not x19) (not x46))
+(or (not x369) x81)
+(or (not x369) (not x81) x82)
+(or x369 (not x81) (not x82) (not x84))
+(or (not x369) (not x81) (not x82) x84)
+(or (not x636) x231 x232)
+(or x636 (not x231) x232)
+(or x636 x231 (not x232))
+(or (not x636) (not x231) (not x232))
+(or (not x924) x919 x920)
+(or x924 (not x919) x920)
+(or x924 x919 (not x920))
+(or (not x924) (not x919) (not x920))
+(or (not x269) x25)
+(or (not x269) (not x25) x26)
+(or x269 (not x25) (not x26))
+(or (not x540) x95 x110)
+(or x540 (not x95) x110)
+(or x540 x95 (not x110))
+(or (not x540) (not x95) (not x110))
+(or (not x380) x55)
+(or (not x380) (not x55) x81)
+(or x380 (not x55) (not x81))
+(or (not x179) x90)
+(or (not x179) (not x90) x91)
+(or x179 (not x90) (not x91))
+(or (not x1134) x1131 x1132)
+(or x1134 (not x1131) x1132)
+(or x1134 x1131 (not x1132))
+(or (not x1134) (not x1131) (not x1132))
+(or (not x513) x12 x39)
+(or x513 (not x12) x39)
+(or x513 x12 (not x39))
+(or (not x513) (not x12) (not x39))
+(or (not x706) x259 x260)
+(or x706 (not x259) x260)
+(or x706 x259 (not x260))
+(or (not x706) (not x259) (not x260))
+(or (not x1087) x423 x424)
+(or x1087 (not x423) x424)
+(or x1087 x423 (not x424))
+(or (not x1087) (not x423) (not x424))
+(or (not x1055) x1052 x1053)
+(or x1055 (not x1052) x1053)
+(or x1055 x1052 (not x1053))
+(or (not x1055) (not x1052) (not x1053))
+(or (not x620) x130 x207)
+(or x620 (not x130) x207)
+(or x620 x130 (not x207))
+(or (not x620) (not x130) (not x207))
+(or (not x1155) x1151 x1152)
+(or x1155 (not x1151) x1152)
+(or x1155 x1151 (not x1152))
+(or (not x1155) (not x1151) (not x1152))
+(or (not x1100) x328 x426)
+(or x1100 (not x328) x426)
+(or x1100 x328 (not x426))
+(or (not x1100) (not x328) (not x426))
+(or (not x776) x774 x775)
+(or x776 (not x774) x775)
+(or x776 x774 (not x775))
+(or (not x776) (not x774) (not x775))
+(or (not x1212) x2 x26)
+(or x1212 (not x2) x26)
+(or x1212 x2 (not x26))
+(or (not x1212) (not x2) (not x26))
+(or (not x1028) x1026 x1027)
+(or x1028 (not x1026) x1027)
+(or x1028 x1026 (not x1027))
+(or (not x1028) (not x1026) (not x1027))
+(or (not x744) x275 x276)
+(or x744 (not x275) x276)
+(or x744 x275 (not x276))
+(or (not x744) (not x275) (not x276))
+(or (not x946) x19 x61)
+(or x946 (not x19) x61)
+(or x946 x19 (not x61))
+(or (not x946) (not x19) (not x61))
+(or (not x731) x269 x270)
+(or x731 (not x269) x270)
+(or x731 x269 (not x270))
+(or (not x731) (not x269) (not x270))
+(or (not x358) x57)
+(or (not x358) (not x57) x85)
+(or x358 (not x57) (not x85))
+(or (not x711) x261 x262)
+(or x711 (not x261) x262)
+(or x711 x261 (not x262))
+(or (not x711) (not x261) (not x262))
+(or (not x576) x179 x194)
+(or x576 (not x179) x194)
+(or x576 x179 (not x194))
+(or (not x576) (not x179) (not x194))
+(or (not x933) x260 x283)
+(or x933 (not x260) x283)
+(or x933 x260 (not x283))
+(or (not x933) (not x260) (not x283))
+(or (not x1024) x1022 x1023)
+(or x1024 (not x1022) x1023)
+(or x1024 x1022 (not x1023))
+(or (not x1024) (not x1022) (not x1023))
+(or (not x658) x487 x657)
+(or x658 (not x487) x657)
+(or x658 x487 (not x657))
+(or (not x658) (not x487) (not x657))
+(or (not x512) x109 x124)
+(or x512 (not x109) x124)
+(or x512 x109 (not x124))
+(or (not x512) (not x109) (not x124))
+(or (not x909) x115 x186)
+(or x909 (not x115) x186)
+(or x909 x115 (not x186))
+(or (not x909) (not x115) (not x186))
+(or (not x622) x129 x208)
+(or x622 (not x129) x208)
+(or x622 x129 (not x208))
+(or (not x622) (not x129) (not x208))
+(or (not x695) x693 x694)
+(or x695 (not x693) x694)
+(or x695 x693 (not x694))
+(or (not x695) (not x693) (not x694))
+(or (not x458) x42)
+(or (not x458) (not x42) x68)
+(or x458 (not x42) (not x68))
+(or (not x885) x881 x882)
+(or x885 (not x881) x882)
+(or x885 x881 (not x882))
+(or (not x885) (not x881) (not x882))
+(or (not x547) x22 x91)
+(or x547 (not x22) x91)
+(or x547 x22 (not x91))
+(or (not x547) (not x22) (not x91))
+(or (not x1081) x225 x280)
+(or x1081 (not x225) x280)
+(or x1081 x225 (not x280))
+(or (not x1081) (not x225) (not x280))
+(or (not x589) x1 x70)
+(or x589 (not x1) x70)
+(or x589 x1 (not x70))
+(or (not x589) (not x1) (not x70))
+(or (not x856) x854 x855)
+(or x856 (not x854) x855)
+(or x856 x854 (not x855))
+(or (not x856) (not x854) (not x855))
+(or (not x306) x92)
+(or (not x306) (not x92) x93)
+(or x306 (not x92) (not x93))
+(or (not x710) x708 x709)
+(or x710 (not x708) x709)
+(or x710 x708 (not x709))
+(or (not x710) (not x708) (not x709))
+(or (not x469) x39)
+(or (not x469) (not x39) x67)
+(or x469 (not x39) (not x67))
+(or (not x593) x130 x192)
+(or x593 (not x130) x192)
+(or x593 x130 (not x192))
+(or (not x593) (not x130) (not x192))
+(or (not x1154) x448 x449)
+(or x1154 (not x448) x449)
+(or x1154 x448 (not x449))
+(or (not x1154) (not x448) (not x449))
+(or (not x871) x195 x207)
+(or x871 (not x195) x207)
+(or x871 x195 (not x207))
+(or (not x871) (not x195) (not x207))
+(or (not x1224) x1221 x1222)
+(or x1224 (not x1221) x1222)
+(or x1224 x1221 (not x1222))
+(or (not x1224) (not x1221) (not x1222))
+(or (not x1079) x62 x63)
+(or x1079 (not x62) x63)
+(or x1079 x62 (not x63))
+(or (not x1079) (not x62) (not x63))
+(or (not x240) x121)
+(or (not x240) (not x121) x122)
+(or x240 (not x121) (not x122))
+(or (not x198) x71)
+(or (not x198) (not x71) x72)
+(or x198 (not x71) (not x72))
+(or (not x1252) x1244 x1245)
+(or x1252 (not x1244) x1245)
+(or x1252 x1244 (not x1245))
+(or (not x1252) (not x1244) (not x1245))
+(or (not x420) x47)
+(or (not x420) (not x47) x73)
+(or x420 (not x47) (not x73) (not x74))
+(or (not x420) (not x47) (not x73) x74)
+(or (not x233) x43)
+(or (not x233) (not x43) x44)
+(or x233 (not x43) (not x44))
+(or (not x1191) x1184 x1185)
+(or x1191 (not x1184) x1185)
+(or x1191 x1184 (not x1185))
+(or (not x1191) (not x1184) (not x1185))
+(or (not x967) x965 x966)
+(or x967 (not x965) x966)
+(or x967 x965 (not x966))
+(or (not x967) (not x965) (not x966))
+(or (not x988) x191 x192)
+(or x988 (not x191) x192)
+(or x988 x191 (not x192))
+(or (not x988) (not x191) (not x192))
+(or (not x265) x27)
+(or (not x265) (not x27) x28)
+(or x265 (not x27) (not x28))
+(or (not x801) x94 x97)
+(or x801 (not x94) x97)
+(or x801 x94 (not x97))
+(or (not x801) (not x94) (not x97))
+(or (not x1232) x1 x25)
+(or x1232 (not x1) x25)
+(or x1232 x1 (not x25))
+(or (not x1232) (not x1) (not x25))
+(or (not x655) x653 x654)
+(or x655 (not x653) x654)
+(or x655 x653 (not x654))
+(or (not x655) (not x653) (not x654))
+(or (not x1015) x1010 x1011)
+(or x1015 (not x1010) x1011)
+(or x1015 x1010 (not x1011))
+(or (not x1015) (not x1010) (not x1011))
+(or (not x425) x72)
+(or (not x425) (not x72) x73)
+(or x425 (not x72) (not x73) (not x75))
+(or (not x425) (not x72) (not x73) x75)
+(or (not x608) x220 x607)
+(or x608 (not x220) x607)
+(or x608 x220 (not x607))
+(or (not x608) (not x220) (not x607))
+(or (not x923) x350 x351)
+(or x923 (not x350) x351)
+(or x923 x350 (not x351))
+(or (not x923) (not x350) (not x351))
+(or (not x769) x767 x768)
+(or x769 (not x767) x768)
+(or x769 x767 (not x768))
+(or (not x769) (not x767) (not x768))
+(or (not x1075) x1072 x1073)
+(or x1075 (not x1072) x1073)
+(or x1075 x1072 (not x1073))
+(or (not x1075) (not x1072) (not x1073))
+(or (not x191) x78)
+(or (not x191) (not x78) x79)
+(or x191 (not x78) (not x79))
+(or (not x844) x205 x246)
+(or x844 (not x205) x246)
+(or x844 x205 (not x246))
+(or (not x844) (not x205) (not x246))
+(or (not x818) x816 x817)
+(or x818 (not x816) x817)
+(or x818 x816 (not x817))
+(or (not x818) (not x816) (not x817))
+(or (not x321) x8)
+(or (not x321) (not x8) x9)
+(or x321 (not x8) (not x9))
+(or (not x704) x98 x110)
+(or x704 (not x98) x110)
+(or x704 x98 (not x110))
+(or (not x704) (not x98) (not x110))
+(or (not x1236) x301 x302)
+(or x1236 (not x301) x302)
+(or x1236 x301 (not x302))
+(or (not x1236) (not x301) (not x302))
+(or (not x387) x54)
+(or (not x387) (not x54) x78)
+(or x387 (not x54) (not x78) (not x79))
+(or (not x387) (not x54) (not x78) x79)
+(or (not x325) x63)
+(or (not x325) (not x63) x87)
+(or x325 (not x63) (not x87) (not x88))
+(or (not x325) (not x63) (not x87) x88)
+(or (not x1176) x451 x452)
+(or x1176 (not x451) x452)
+(or x1176 x451 (not x452))
+(or (not x1176) (not x451) (not x452))
+(or (not x1128) x1123 x1124)
+(or x1128 (not x1123) x1124)
+(or x1128 x1123 (not x1124))
+(or (not x1128) (not x1123) (not x1124))
+(or (not x518) x106 x121)
+(or x518 (not x106) x121)
+(or x518 x106 (not x121))
+(or (not x518) (not x106) (not x121))
+(or (not x1090) x103 x196)
+(or x1090 (not x103) x196)
+(or x1090 x103 (not x196))
+(or (not x1090) (not x103) (not x196))
+(or (not x689) x101 x113)
+(or x689 (not x101) x113)
+(or x689 x101 (not x113))
+(or (not x689) (not x101) (not x113))
+(or (not x607) x118 x130)
+(or x607 (not x118) x130)
+(or x607 x118 (not x130))
+(or (not x607) (not x118) (not x130))
+(or (not x311) x65)
+(or (not x311) (not x65) x89)
+(or x311 (not x65) (not x89) (not x90))
+(or (not x311) (not x65) (not x89) x90)
+(or (not x1143) x1141 x1142)
+(or x1143 (not x1141) x1142)
+(or x1143 x1141 (not x1142))
+(or (not x1143) (not x1141) (not x1142))
+(or (not x247) x36)
+(or (not x247) (not x36) x37)
+(or x247 (not x36) (not x37))
+(or (not x673) x490 x672)
+(or x673 (not x490) x672)
+(or x673 x490 (not x672))
+(or (not x673) (not x490) (not x672))
+(or (not x201) x68)
+(or (not x201) (not x68) x69)
+(or x201 (not x68) (not x69))
+(or (not x274) x104)
+(or (not x274) (not x104) x105)
+(or x274 (not x104) (not x105))
+(or (not x339) x61)
+(or (not x339) (not x61) x85)
+(or x339 (not x61) (not x85) (not x86))
+(or (not x339) (not x61) (not x85) x86)
+(or (not x1165) x212 x215)
+(or x1165 (not x212) x215)
+(or x1165 x212 (not x215))
+(or (not x1165) (not x212) (not x215))
+(or (not x1249) x1240 x1241)
+(or x1249 (not x1240) x1241)
+(or x1249 x1240 (not x1241))
+(or (not x1249) (not x1240) (not x1241))
+(or (not x997) x201 x204)
+(or x997 (not x201) x204)
+(or x997 x201 (not x204))
+(or (not x997) (not x201) (not x204))
+(or (not x639) x111 x123)
+(or x639 (not x111) x123)
+(or x639 x111 (not x123))
+(or (not x639) (not x111) (not x123))
+(or (not x950) x947 x948)
+(or x950 (not x947) x948)
+(or x950 x947 (not x948))
+(or (not x950) (not x947) (not x948))
+(or (not x643) x484 x642)
+(or x643 (not x484) x642)
+(or x643 x484 (not x642))
+(or (not x643) (not x484) (not x642))
+(or (not x978) x110 x190)
+(or x978 (not x110) x190)
+(or x978 x110 (not x190))
+(or (not x978) (not x110) (not x190))
+(or (not x356) x3)
+(or (not x356) (not x3) x4)
+(or x356 (not x3) (not x4))
+(or (not x390) x52)
+(or (not x390) (not x52) x78)
+(or x390 (not x52) (not x78) (not x79))
+(or (not x390) (not x52) (not x78) x79)
+(or (not x702) x113 x229)
+(or x702 (not x113) x229)
+(or x702 x113 (not x229))
+(or (not x702) (not x113) (not x229))
+(or (not x851) x317 x318)
+(or x851 (not x317) x318)
+(or x851 x317 (not x318))
+(or (not x851) (not x317) (not x318))
+(or (not x211) x58)
+(or (not x211) (not x58) x59)
+(or x211 (not x58) (not x59))
+(or (not x855) x850 x851)
+(or x855 (not x850) x851)
+(or x855 x850 (not x851))
+(or (not x855) (not x850) (not x851))
+(or (not x739) x103 x106)
+(or x739 (not x103) x106)
+(or x739 x103 (not x106))
+(or (not x739) (not x103) (not x106))
+(or (not x598) x125 x197)
+(or x598 (not x125) x197)
+(or x598 x125 (not x197))
+(or (not x598) (not x125) (not x197))
+(or (not x234) x124)
+(or (not x234) (not x124) x125)
+(or x234 (not x124) (not x125))
+(or (not x555) x18 x87)
+(or x555 (not x18) x87)
+(or x555 x18 (not x87))
+(or (not x555) (not x18) (not x87))
+(or (not x509) x14 x41)
+(or x509 (not x14) x41)
+(or x509 x14 (not x41))
+(or (not x509) (not x14) (not x41))
+(or (not x797) x795 x796)
+(or x797 (not x795) x796)
+(or x797 x795 (not x796))
+(or (not x797) (not x795) (not x796))
+(or (not x790) x788 x789)
+(or x790 (not x788) x789)
+(or x790 x788 (not x789))
+(or (not x790) (not x788) (not x789))
+(or (not x754) x224 x247)
+(or x754 (not x224) x247)
+(or x754 x224 (not x247))
+(or (not x754) (not x224) (not x247))
+(or (not x975) x289 x377)
+(or x975 (not x289) x377)
+(or x975 x289 (not x377))
+(or (not x975) (not x289) (not x377))
+(or (not x450) x42)
+(or (not x450) (not x42) x68)
+(or x450 (not x42) (not x68) (not x69))
+(or (not x450) (not x42) (not x68) x69)
+(or (not x460) x66)
+(or (not x460) (not x66) x67)
+(or x460 (not x66) (not x67) (not x68))
+(or (not x460) (not x66) (not x67) x68)
+(or (not x705) x703 x704)
+(or x705 (not x703) x704)
+(or x705 x703 (not x704))
+(or (not x705) (not x703) (not x704))
+(or (not x1140) x1133 x1134)
+(or x1140 (not x1133) x1134)
+(or x1140 x1133 (not x1134))
+(or (not x1140) (not x1133) (not x1134))
+(or (not x214) x55)
+(or (not x214) (not x55) x56)
+(or x214 (not x55) (not x56))
+(or (not x820) x818 x819)
+(or x820 (not x818) x819)
+(or x820 x818 (not x819))
+(or (not x820) (not x818) (not x819))
+(or (not x531) x3 x30)
+(or x531 (not x3) x30)
+(or x531 x3 (not x30))
+(or (not x531) (not x3) (not x30))
+(or (not x609) x204 x219)
+(or x609 (not x204) x219)
+(or x609 x204 (not x219))
+(or (not x609) (not x204) (not x219))
+(or (not x737) x180 x220)
+(or x737 (not x180) x220)
+(or x737 x180 (not x220))
+(or (not x737) (not x180) (not x220))
+(or (not x953) x949 x950)
+(or x953 (not x949) x950)
+(or x953 x949 (not x950))
+(or (not x953) (not x949) (not x950))
+(or (not x1070) x1066 x1067)
+(or x1070 (not x1066) x1067)
+(or x1070 x1066 (not x1067))
+(or (not x1070) (not x1066) (not x1067))
+(or (not x611) x221 x222)
+(or x611 (not x221) x222)
+(or x611 x221 (not x222))
+(or (not x611) (not x221) (not x222))
+(or (not x894) x892 x893)
+(or x894 (not x892) x893)
+(or x894 x892 (not x893))
+(or (not x894) (not x892) (not x893))
+(or (not x836) x181 x193)
+(or x836 (not x181) x193)
+(or x836 x181 (not x193))
+(or (not x836) (not x181) (not x193))
+(or (not x571) x10 x79)
+(or x571 (not x10) x79)
+(or x571 x10 (not x79))
+(or (not x571) (not x10) (not x79))
+(or (not x489) x27 x54)
+(or x489 (not x27) x54)
+(or x489 x27 (not x54))
+(or (not x489) (not x27) (not x54))
+(or (not x426) x46)
+(or (not x426) (not x46) x72)
+(or x426 (not x46) (not x72) (not x73))
+(or (not x426) (not x46) (not x72) x73)
+(or (not x940) x938 x939)
+(or x940 (not x938) x939)
+(or x940 x938 (not x939))
+(or (not x940) (not x938) (not x939))
+(or (not x372) x55)
+(or (not x372) (not x55) x83)
+(or x372 (not x55) (not x83))
+(or (not x541) x25 x67)
+(or x541 (not x25) x67)
+(or x541 x25 (not x67))
+(or (not x541) (not x25) (not x67))
+(or (not x644) x110 x122)
+(or x644 (not x110) x122)
+(or x644 x110 (not x122))
+(or (not x644) (not x110) (not x122))
+(or (not x391) x52)
+(or (not x391) (not x52) x80)
+(or x391 (not x52) (not x80))
+(or (not x377) x1)
+(or (not x377) (not x1) x69)
+(or x377 (not x1) (not x69))
+(or (not x781) x523 x778)
+(or x781 (not x523) x778)
+(or x781 x523 (not x778))
+(or (not x781) (not x523) (not x778))
+(or (not x452) x43)
+(or (not x452) (not x43) x69)
+(or x452 (not x43) (not x69))
+(or (not x376) x80)
+(or (not x376) (not x80) x81)
+(or x376 (not x80) (not x81) (not x83))
+(or (not x376) (not x80) (not x81) x83)
+(or (not x1219) x1217 x1218)
+(or x1219 (not x1217) x1218)
+(or x1219 x1217 (not x1218))
+(or (not x1219) (not x1217) (not x1218))
+(or (not x363) x2)
+(or (not x363) (not x2) x3)
+(or x363 (not x2) (not x3))
+(or (not x665) x663 x664)
+(or x665 (not x663) x664)
+(or x665 x663 (not x664))
+(or (not x665) (not x663) (not x664))
+(or (not x288) x97)
+(or (not x288) (not x97) x98)
+(or x288 (not x97) (not x98))
+(or (not x698) x495 x697)
+(or x698 (not x495) x697)
+(or x698 x495 (not x697))
+(or (not x698) (not x495) (not x697))
+(or (not x223) x48)
+(or (not x223) (not x48) x49)
+(or x223 (not x48) (not x49))
+(or (not x246) x118)
+(or (not x246) (not x118) x119)
+(or x246 (not x118) (not x119))
+(or (not x635) x633 x634)
+(or x635 (not x633) x634)
+(or x635 x633 (not x634))
+(or (not x635) (not x633) (not x634))
+(or (not x1150) x1145 x1146)
+(or x1150 (not x1145) x1146)
+(or x1150 x1145 (not x1146))
+(or (not x1150) (not x1145) (not x1146))
+(or (not x971) x969 x970)
+(or x971 (not x969) x970)
+(or x971 x969 (not x970))
+(or (not x971) (not x969) (not x970))
+(or (not x378) x54)
+(or (not x378) (not x54) x80)
+(or x378 (not x54) (not x80) (not x81))
+(or (not x378) (not x54) (not x80) x81)
+(or (not x927) x921 x922)
+(or x927 (not x921) x922)
+(or x927 x921 (not x922))
+(or (not x927) (not x921) (not x922))
+(or (not x498) x116 x131)
+(or x498 (not x116) x131)
+(or x498 x116 (not x131))
+(or (not x498) (not x116) (not x131))
+(or (not x309) x64)
+(or (not x309) (not x64) x92)
+(or x309 (not x64) (not x92))
+(or (not x1223) x1215 x1216)
+(or x1223 (not x1215) x1216)
+(or x1223 x1215 (not x1216))
+(or (not x1223) (not x1215) (not x1216))
+(or (not x242) x120)
+(or (not x242) (not x120) x121)
+(or x242 (not x120) (not x121))
+(or (not x681) x249 x250)
+(or x681 (not x249) x250)
+(or x681 x249 (not x250))
+(or (not x681) (not x249) (not x250))
+(or (not x686) x251 x252)
+(or x686 (not x251) x252)
+(or x686 x251 (not x252))
+(or (not x686) (not x251) (not x252))
+(or (not x487) x29 x56)
+(or x487 (not x29) x56)
+(or x487 x29 (not x56))
+(or (not x487) (not x29) (not x56))
+(or (not x941) x200 x212)
+(or x941 (not x200) x212)
+(or x941 x200 (not x212))
+(or (not x941) (not x200) (not x212))
+(or (not x703) x497 x702)
+(or x703 (not x497) x702)
+(or x703 x497 (not x702))
+(or (not x703) (not x497) (not x702))
+(or (not x1180) x4 x28)
+(or x1180 (not x4) x28)
+(or x1180 x4 (not x28))
+(or (not x1180) (not x4) (not x28))
+(or (not x827) x94 x121)
+(or x827 (not x94) x121)
+(or x827 x94 (not x121))
+(or (not x827) (not x94) (not x121))
+(or (not x920) x352 x353)
+(or x920 (not x352) x353)
+(or x920 x352 (not x353))
+(or (not x920) (not x352) (not x353))
+(or (not x1168) x1164 x1165)
+(or x1168 (not x1164) x1165)
+(or x1168 x1164 (not x1165))
+(or (not x1168) (not x1164) (not x1165))
+(or (not x1021) x107 x192)
+(or x1021 (not x107) x192)
+(or x1021 x107 (not x192))
+(or (not x1021) (not x107) (not x192))
+(or (not x227) x46)
+(or (not x227) (not x46) x47)
+(or x227 (not x46) (not x47))
+(or (not x936) x934 x935)
+(or x936 (not x934) x935)
+(or x936 x934 (not x935))
+(or (not x936) (not x934) (not x935))
+(or (not x588) x185 x200)
+(or x588 (not x185) x200)
+(or x588 x185 (not x200))
+(or (not x588) (not x185) (not x200))
+(or (not x415) x48)
+(or (not x415) (not x48) x76)
+(or x415 (not x48) (not x76))
+(or (not x258) x112)
+(or (not x258) (not x112) x113)
+(or x258 (not x112) (not x113))
+(or (not x367) x57)
+(or (not x367) (not x57) x81)
+(or x367 (not x57) (not x81) (not x82))
+(or (not x367) (not x57) (not x81) x82)
+(or (not x1181) x97 x202)
+(or x1181 (not x97) x202)
+(or x1181 x97 (not x202))
+(or (not x1181) (not x97) (not x202))
+(or (not x641) x233 x234)
+(or x641 (not x233) x234)
+(or x641 x233 (not x234))
+(or (not x641) (not x233) (not x234))
+(or (not x186) x83)
+(or (not x186) (not x83) x84)
+(or x186 (not x83) (not x84))
+(or (not x224) x129)
+(or (not x224) (not x129) x130)
+(or x224 (not x129) (not x130))
+(or (not x963) x959 x960)
+(or x963 (not x959) x960)
+(or x963 x959 (not x960))
+(or (not x963) (not x959) (not x960))
+(or (not x185) x84)
+(or (not x185) (not x84) x85)
+(or x185 (not x84) (not x85))
+(or (not x222) x130)
+(or (not x222) (not x130) x131)
+(or x222 (not x130) (not x131))
+(or (not x676) x247 x248)
+(or x676 (not x247) x248)
+(or x676 x247 (not x248))
+(or (not x676) (not x247) (not x248))
+(or (not x867) x118 x181)
+(or x867 (not x118) x181)
+(or x867 x118 (not x181))
+(or (not x867) (not x118) (not x181))
+(or (not x525) x6 x33)
+(or x525 (not x6) x33)
+(or x525 x6 (not x33))
+(or (not x525) (not x6) (not x33))
+(or (not x428) x47)
+(or (not x428) (not x47) x73)
+(or x428 (not x47) (not x73))
+(or (not x1132) x438 x439)
+(or x1132 (not x438) x439)
+(or x1132 x438 (not x439))
+(or (not x1132) (not x438) (not x439))
+(or (not x308) x64)
+(or (not x308) (not x64) x90)
+(or x308 (not x64) (not x90) (not x91))
+(or (not x308) (not x64) (not x90) x91)
+(or (not x195) x74)
+(or (not x195) (not x74) x75)
+(or x195 (not x74) (not x75))
+(or (not x881) x117 x184)
+(or x881 (not x117) x184)
+(or x881 x117 (not x184))
+(or (not x881) (not x117) (not x184))
+(or (not x1189) x1186 x1187)
+(or x1189 (not x1186) x1187)
+(or x1189 x1186 (not x1187))
+(or (not x1189) (not x1186) (not x1187))
+(or (not x202) x67)
+(or (not x202) (not x67) x68)
+(or x202 (not x67) (not x68))
+(or (not x300) x65)
+(or (not x300) (not x65) x91)
+(or x300 (not x65) (not x91) (not x92))
+(or (not x300) (not x65) (not x91) x92)
+(or (not x535) x1 x28)
+(or x535 (not x1) x28)
+(or x535 x1 (not x28))
+(or (not x535) (not x1) (not x28))
+(or (not x414) x48)
+(or (not x414) (not x48) x74)
+(or x414 (not x48) (not x74) (not x75))
+(or (not x414) (not x48) (not x74) x75)
+))
diff --git a/test/regress/regress2/ooo.rf6.smt2 b/test/regress/regress2/ooo.rf6.smt2
new file mode 100644
index 0000000..4860a34
--- /dev/null
+++ b/test/regress/regress2/ooo.rf6.smt2
@@ -0,0 +1,31 @@
+(set-logic QF_UFIDL)
+(set-info :source |
+UCLID benchmark suite.  See UCLID project: http://www.cs.cmu.edu/~uclid
+
+This benchmark was automatically translated into SMT-LIB format from
+CVC format using CVC Lite
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-fun BOOOB_46_init_null_val () Int)
+(declare-fun BOOOB_46_init_instr () Int)
+(declare-fun BOOOB_46_init_rob_head () Int)
+(declare-fun Baddr () Int)
+(declare-fun BOOOB_46_init_null_opcode () Int)
+(declare-fun BOOOB_46_init_n_oper_0 () Int)
+(declare-fun BOOOB_46_init_n_oper_1 () Int)
+(declare-fun BOOOB_46_init_null_reg () Int)
+(declare-fun BOOOB_46_Alu (Int Int Int) Int)
+(declare-fun BOOOB_46_New_ex_id (Int) Int)
+(declare-fun BOOOB_46_New_var (Int) Int)
+(declare-fun BOOOB_46_Decode_src2 (Int) Int)
+(declare-fun BOOOB_46_Decode_src1 (Int) Int)
+(declare-fun BOOOB_46_Decode_dest (Int) Int)
+(declare-fun BOOOB_46_New_oper_1 (Int) Bool)
+(declare-fun BOOOB_46_New_oper_0 (Int) Bool)
+(declare-fun BOOOB_46_Decode_opcode (Int) Int)
+(declare-fun BOOOB_46_New_instr (Int) Int)
+(assert (let ((?v_4 (BOOOB_46_New_var BOOOB_46_init_n_oper_1))) (let ((?v_2 (BOOOB_46_New_var ?v_4))) (let ((?v_0 (BOOOB_46_New_var ?v_2))) (let ((?v_9 (BOOOB_46_New_oper_1 (BOOOB_46_New_var ?v_0))) (?v_5 (BOOOB_46_New_var BOOOB_46_init_n_oper_0))) (let ((?v_3 (BOOOB_46_New_var ?v_5))) (let ((?v_1 (BOOOB_46_New_var ?v_3))) (let ((?v_10 (BOOOB_46_New_oper_0 (BOOOB_46_New_var ?v_1))) (?v_11 (BOOOB_46_New_oper_1 ?v_0)) (?v_12 (BOOOB_46_New_oper_0 ?v_1))) (let ((?v_66 (and (not ?v_11) ?v_12) [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress2/ooo.tag10.smt2 b/test/regress/regress2/ooo.tag10.smt2
new file mode 100644
index 0000000..ef8e224
--- /dev/null
+++ b/test/regress/regress2/ooo.tag10.smt2
@@ -0,0 +1,28 @@
+(set-logic QF_UFIDL)
+(set-info :source |
+UCLID benchmark suite.  See UCLID project: http://www.cs.cmu.edu/~uclid
+
+This benchmark was automatically translated into SMT-LIB format from
+CVC format using CVC Lite
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-fun Br1 () Int)
+(declare-fun Br2 () Int)
+(declare-fun BOOOB_46_init_instr () Int)
+(declare-fun BOOOB_46_init_rob_head () Int)
+(declare-fun BOOOB_46_init_null_reg () Int)
+(declare-fun BOOOB_46_init_n_oper_0 () Int)
+(declare-fun BOOOB_46_init_n_oper_1 () Int)
+(declare-fun BOOOB_46_New_ex_id (Int) Int)
+(declare-fun BOOOB_46_New_var (Int) Int)
+(declare-fun BOOOB_46_Decode_src2 (Int) Int)
+(declare-fun BOOOB_46_Decode_src1 (Int) Int)
+(declare-fun BOOOB_46_Decode_dest (Int) Int)
+(declare-fun BOOOB_46_New_oper_1 (Int) Bool)
+(declare-fun BOOOB_46_New_oper_0 (Int) Bool)
+(declare-fun BOOOB_46_New_instr (Int) Int)
+(assert (let ((?v_12 (BOOOB_46_New_var BOOOB_46_init_n_oper_1))) (let ((?v_10 (BOOOB_46_New_var ?v_12))) (let ((?v_8 (BOOOB_46_New_var ?v_10))) (let ((?v_6 (BOOOB_46_New_var ?v_8))) (let ((?v_4 (BOOOB_46_New_var ?v_6))) (let ((?v_2 (BOOOB_46_New_var ?v_4))) (let ((?v_0 (BOOOB_46_New_var ?v_2))) (let ((?v_21 (BOOOB_46_New_oper_1 (BOOOB_46_New_var ?v_0))) (?v_13 (BOOOB_46_New_var BOOOB_46_init_n_oper_0))) (let ((?v_11 (BOOOB_46_New_var ?v_13))) (let ((?v_9 (BOOOB_46_New_var ?v_11))) (let ( [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress2/piVC_5581bd.smt2 b/test/regress/regress2/piVC_5581bd.smt2
new file mode 100644
index 0000000..78baeea
--- /dev/null
+++ b/test/regress/regress2/piVC_5581bd.smt2
@@ -0,0 +1,23 @@
+(set-logic AUFLIA)
+(set-info :source |piVC|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-fun V_26 () Int)
+(declare-fun V_24 () Int)
+(declare-fun V_23 () Int)
+(declare-fun u_0 () Int)
+(declare-fun m_0 () Int)
+(declare-fun l_0 () Int)
+(declare-fun arr_0 () (Array Int Int))
+(declare-fun buf () (Array Int Int))
+(declare-fun arr () (Array Int Int))
+(declare-fun k () Int)
+(declare-fun u () Int)
+(declare-fun j () Int)
+(declare-fun m () Int)
+(declare-fun i () Int)
+(declare-fun l () Int)
+(assert (let ((?v_5 (<= 0 l_0)) (?v_6 (<= l_0 m_0)) (?v_7 (< m_0 u_0)) (?v_8 (< u_0 V_23)) (?v_9 (>= V_23 0)) (?v_3 (> j u)) (?v_1 (<= i m)) (?v_0 (+ m 1)) (?v_11 (+ u 1))) (let ((?v_12 (- j ?v_0)) (?v_16 (<= j u)) (?v_2 (= k 0)) (?v_14 (select arr i)) (?v_4 (select buf (- k 1))) (?v_18 (select arr j)) (?v_19 (= V_26 (+ (- u l) 1))) (?v_20 (= V_24 V_23)) (?v_21 (= l l_0)) (?v_22 (= m m_0)) (?v_23 (= u u_0)) (?v_10 (+ i 1)) (?v_13 (+ k 1))) (let ((?v_15 (not (= ?v_13 0))) (?v_17 (select ( [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress2/typed_v1l50016-simp.cvc b/test/regress/regress2/typed_v1l50016-simp.cvc
new file mode 100644
index 0000000..b4a1e4b
--- /dev/null
+++ b/test/regress/regress2/typed_v1l50016-simp.cvc
@@ -0,0 +1,43 @@
+% EXPECT: invalid
+
+DATATYPE
+  nat = succ(pred : nat) | zero,
+  list = cons(car : tree, cdr : list) | null,
+  tree = node(children : list) | leaf(data : nat)
+END;
+
+x1 : nat ;
+x2 : list ;
+x3 : tree ;
+
+QUERY
+
+(NOT is_zero((LET x154 = (LET x155 = node((LET x156 = (LET x157 = (LET x158 = (LET x159 = (LET x160 = (LET x161 = (LET x162 = cons((LET x163 = (LET x164 = (LET x165 = (LET x166 = (LET x167 = (LET x168 = (LET x169 = (LET x170 = (LET x171 = (LET x172 = (LET x173 = x3 IN
+ (IF is_node(x173) THEN children(x173) ELSE null ENDIF)) IN
+ (IF is_cons(x172) THEN car(x172) ELSE leaf(zero) ENDIF)) IN
+ (IF is_node(x171) THEN children(x171) ELSE null ENDIF)) IN
+ (IF is_cons(x170) THEN cdr(x170) ELSE null ENDIF)) IN
+ (IF is_cons(x169) THEN car(x169) ELSE leaf(zero) ENDIF)) IN
+ (IF is_node(x168) THEN children(x168) ELSE null ENDIF)) IN
+ (IF is_cons(x167) THEN cdr(x167) ELSE null ENDIF)) IN
+ (IF is_cons(x166) THEN cdr(x166) ELSE null ENDIF)) IN
+ (IF is_cons(x165) THEN cdr(x165) ELSE null ENDIF)) IN
+ (IF is_cons(x164) THEN cdr(x164) ELSE null ENDIF)) IN
+ (IF is_cons(x163) THEN car(x163) ELSE leaf(zero) ENDIF)),cons((LET x174 = cons(x3,(LET x175 = node(cons(node((LET x176 = x3 IN
+ (IF is_node(x176) THEN children(x176) ELSE null ENDIF))),x2)) IN
+ (IF is_node(x175) THEN children(x175) ELSE null ENDIF))) IN
+ (IF is_cons(x174) THEN car(x174) ELSE leaf(zero) ENDIF)),cons(leaf(succ((LET x177 = node(null) IN
+ (IF is_leaf(x177) THEN data(x177) ELSE zero ENDIF)))),(LET x178 = (LET x179 = (LET x180 = (LET x181 = node(x2) IN
+ (IF is_node(x181) THEN children(x181) ELSE null ENDIF)) IN
+ (IF is_cons(x180) THEN car(x180) ELSE leaf(zero) ENDIF)) IN
+ (IF is_node(x179) THEN children(x179) ELSE null ENDIF)) IN
+ (IF is_cons(x178) THEN cdr(x178) ELSE null ENDIF))))) IN
+ (IF is_cons(x162) THEN cdr(x162) ELSE null ENDIF)) IN
+ (IF is_cons(x161) THEN cdr(x161) ELSE null ENDIF)) IN
+ (IF is_cons(x160) THEN car(x160) ELSE leaf(zero) ENDIF)) IN
+ (IF is_node(x159) THEN children(x159) ELSE null ENDIF)) IN
+ (IF is_cons(x158) THEN cdr(x158) ELSE null ENDIF)) IN
+ (IF is_cons(x157) THEN cdr(x157) ELSE null ENDIF)) IN
+ (IF is_cons(x156) THEN cdr(x156) ELSE null ENDIF))) IN
+ (IF is_leaf(x155) THEN data(x155) ELSE zero ENDIF)) IN
+ (IF is_succ(x154) THEN pred(x154) ELSE zero ENDIF))));
diff --git a/test/regress/regress2/uflia-error0.smt2 b/test/regress/regress2/uflia-error0.smt2
new file mode 100644
index 0000000..73177a2
--- /dev/null
+++ b/test/regress/regress2/uflia-error0.smt2
@@ -0,0 +1,1281 @@
+
+(set-logic QF_UFLIA)
+(declare-sort U 0)
+(set-info :source "Currently this example asserts both a literal and its negation to a theory.")
+(set-info :status unsat)
+(set-info :category "industrial")
+(set-info :difficulty 0)
+(declare-fun arg0 () Int)
+(declare-fun arg1 () Int)
+(declare-fun fmt0 () Int)
+(declare-fun fmt1 () Int)
+(declare-fun distance () Int)
+(declare-fun fmt_length () Int)
+(declare-fun adr_lo () Int)
+(declare-fun adr_medlo () Int)
+(declare-fun adr_medhi () Int)
+(declare-fun adr_hi () Int)
+(declare-fun format (Int) Int)
+(declare-fun percent () Int)
+(declare-fun s () Int)
+(declare-fun s_count (Int) Int)
+(declare-fun x () Int)
+(declare-fun x_count (Int) Int)
+(assert (<= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0))
+(assert (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0))
+(assert (<= adr_hi 6))
+(assert (>= adr_hi 6))
+(assert (<= x 120))
+(assert (>= x 120))
+(assert (<= adr_medhi 5))
+(assert (>= adr_medhi 5))
+(assert (<= percent 37))
+(assert (>= percent 37))
+(assert (<= s 115))
+(assert (>= s 115))
+(assert (<= (+ arg0 (* (- 1) arg1) distance) 0))
+(assert (not (<= (+ arg0 (* (- 1) arg1) distance fmt_length) 4)))
+(assert (<= adr_medlo 4))
+(assert (>= adr_medlo 4))
+(assert (<= adr_lo 3))
+(assert (>= adr_lo 3))
+(assert (not (>= (+ fmt0 (* (- 1) fmt1)) (- 1))))
+(assert (<= distance 18))
+(assert (>= distance 18))
+(assert (<= fmt_length 13))
+(assert (>= fmt_length 13))
+(assert (>= (+ arg1 (* (- 1) fmt0)) 0))
+(assert (not (<= (+ fmt0 (* (- 1) fmt1) fmt_length) 1)))
+(assert (<= fmt0 0))
+(assert (>= fmt0 0))
+(assert (<= (+ arg0 (* (- 1) fmt0) distance) 0))
+(assert (>= (+ arg0 (* (- 1) fmt0) distance) 0))
+(assert (<= distance 18))
+(assert (>= distance 18))
+(assert (<= fmt_length 13))
+(assert (>= fmt_length 13))
+(assert (<= adr_lo 3))
+(assert (>= adr_lo 3))
+(assert (<= adr_medlo 4))
+(assert (>= adr_medlo 4))
+(assert (<= adr_medhi 5))
+(assert (>= adr_medhi 5))
+(assert (<= adr_hi 6))
+(assert (>= adr_hi 6))
+(assert (<= percent 37))
+(assert (>= percent 37))
+(assert (<= s 115))
+(assert (>= s 115))
+(assert (<= x 120))
+(assert (>= x 120))
+(assert (<= fmt0 0))
+(assert (>= fmt0 0))
+(assert (<= (+ arg0 (* (- 1) fmt0) distance) 0))
+(assert (>= (+ arg0 (* (- 1) fmt0) distance) 0))
+(assert (>= (+ arg1 (* (- 1) fmt0)) 0))
+(assert (not (<= (+ fmt0 (* (- 1) fmt1) fmt_length) 1)))
+(assert (not (>= (+ fmt0 (* (- 1) fmt1)) (- 1))))
+(assert (<= (+ arg0 (* (- 1) arg1) distance) 0))
+(assert (not (<= (+ arg0 (* (- 1) arg1) distance fmt_length) 4)))
+(assert (<= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0))
+(assert (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0))
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0))) (<= (+ fmt0 (* (- 1) fmt1)) 0)))
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0))) (>= (+ fmt0 (* (- 1) fmt1)) 0)))
+(assert (or (not (<= (+ fmt0 (* (- 1) fmt1)) 0)) (not (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0))))
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (<= (+ fmt0 (* (- 1) fmt1)) (- 1))))
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (>= (+ fmt0 (* (- 1) fmt1)) (- 1))))
+(assert (or (not (<= (+ fmt0 (* (- 1) fmt1)) (- 1))) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 1))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))))
+(assert (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (not (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)))))
+(assert (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1))))))
+(assert (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1))) (not (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))))))
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (<= (+ fmt0 (* (- 1) fmt1)) (- 2))))
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (>= (+ fmt0 (* (- 1) fmt1)) (- 2))))
+(assert (or (not (<= (+ fmt0 (* (- 1) fmt1)) (- 2))) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 2))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))))
+(assert (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (not (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))))))
+(assert (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2))))))
+(assert (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2))) (not (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))))))
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (<= (+ fmt0 (* (- 1) fmt1)) (- 3))))
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (>= (+ fmt0 (* (- 1) fmt1)) (- 3))))
+(assert (or (not (<= (+ fmt0 (* (- 1) fmt1)) (- 3))) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 3))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))))
+(assert (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (not (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ [...]
+(assert (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3))))))
+(assert (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3))) (not (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+  [...]
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (<= (+ fmt0 (* (- 1) fmt1)) (- 4))))
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (>= (+ fmt0 (* (- 1) fmt1)) (- 4))))
+(assert (or (not (<= (+ fmt0 (* (- 1) fmt1)) (- 4))) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 4))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))))
+(assert (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (not (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (an [...]
+(assert (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4))))))
+(assert (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4))) (not (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and [...]
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt1)) (- 5)))) (<= (+ fmt0 (* (- 1) fmt1)) (- 5))))
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt1)) (- 5)))) (>= (+ fmt0 (* (- 1) fmt1)) (- 5))))
+(assert (or (not (<= (+ fmt0 (* (- 1) fmt1)) (- 5))) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 5))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt1)) (- 5)))))
+(assert (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt1)) (- 5)))) (not (o [...]
+(assert (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt1)) (- 5)))) (not (a [...]
+(assert (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt1)) (- 5))) (not (or (or [...]
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 6)) (>= (+ fmt0 (* (- 1) fmt1)) (- 6)))) (<= (+ fmt0 (* (- 1) fmt1)) (- 6))))
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 6)) (>= (+ fmt0 (* (- 1) fmt1)) (- 6)))) (>= (+ fmt0 (* (- 1) fmt1)) (- 6))))
+(assert (or (not (<= (+ fmt0 (* (- 1) fmt1)) (- 6))) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 6))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 6)) (>= (+ fmt0 (* (- 1) fmt1)) (- 6)))))
+(assert (or (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt1)) (- 5)))) (an [...]
+(assert (or (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt1)) (- 5)))) (an [...]
+(assert (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt1)) (- 5)))) (and (< [...]
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 7)) (>= (+ fmt0 (* (- 1) fmt1)) (- 7)))) (<= (+ fmt0 (* (- 1) fmt1)) (- 7))))
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 7)) (>= (+ fmt0 (* (- 1) fmt1)) (- 7)))) (>= (+ fmt0 (* (- 1) fmt1)) (- 7))))
+(assert (or (not (<= (+ fmt0 (* (- 1) fmt1)) (- 7))) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 7))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 7)) (>= (+ fmt0 (* (- 1) fmt1)) (- 7)))))
+(assert (or (or (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt1)) (- 5)))) [...]
+(assert (or (or (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt1)) (- 5)))) [...]
+(assert (or (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt1)) (- 5)))) (an [...]
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 8)) (>= (+ fmt0 (* (- 1) fmt1)) (- 8)))) (<= (+ fmt0 (* (- 1) fmt1)) (- 8))))
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 8)) (>= (+ fmt0 (* (- 1) fmt1)) (- 8)))) (>= (+ fmt0 (* (- 1) fmt1)) (- 8))))
+(assert (or (not (<= (+ fmt0 (* (- 1) fmt1)) (- 8))) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 8))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 8)) (>= (+ fmt0 (* (- 1) fmt1)) (- 8)))))
+(assert (or (or (or (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt1)) (- 5 [...]
+(assert (or (or (or (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt1)) (- 5 [...]
+(assert (or (or (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt1)) (- 5)))) [...]
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 9)) (>= (+ fmt0 (* (- 1) fmt1)) (- 9)))) (<= (+ fmt0 (* (- 1) fmt1)) (- 9))))
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 9)) (>= (+ fmt0 (* (- 1) fmt1)) (- 9)))) (>= (+ fmt0 (* (- 1) fmt1)) (- 9))))
+(assert (or (not (<= (+ fmt0 (* (- 1) fmt1)) (- 9))) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 9))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 9)) (>= (+ fmt0 (* (- 1) fmt1)) (- 9)))))
+(assert (or (or (or (or (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt1))  [...]
+(assert (or (or (or (or (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt1))  [...]
+(assert (or (or (or (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt1)) (- 5 [...]
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 10)) (>= (+ fmt0 (* (- 1) fmt1)) (- 10)))) (<= (+ fmt0 (* (- 1) fmt1)) (- 10))))
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 10)) (>= (+ fmt0 (* (- 1) fmt1)) (- 10)))) (>= (+ fmt0 (* (- 1) fmt1)) (- 10))))
+(assert (or (not (<= (+ fmt0 (* (- 1) fmt1)) (- 10))) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 10))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 10)) (>= (+ fmt0 (* (- 1) fmt1)) (- 10)))))
+(assert (or (or (or (or (or (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt [...]
+(assert (or (or (or (or (or (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt [...]
+(assert (or (or (or (or (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt1))  [...]
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 11)) (>= (+ fmt0 (* (- 1) fmt1)) (- 11)))) (<= (+ fmt0 (* (- 1) fmt1)) (- 11))))
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 11)) (>= (+ fmt0 (* (- 1) fmt1)) (- 11)))) (>= (+ fmt0 (* (- 1) fmt1)) (- 11))))
+(assert (or (not (<= (+ fmt0 (* (- 1) fmt1)) (- 11))) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 11))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 11)) (>= (+ fmt0 (* (- 1) fmt1)) (- 11)))))
+(assert (or (or (or (or (or (or (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) [...]
+(assert (or (or (or (or (or (or (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) [...]
+(assert (or (or (or (or (or (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) fmt [...]
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 12)) (>= (+ fmt0 (* (- 1) fmt1)) (- 12)))) (<= (+ fmt0 (* (- 1) fmt1)) (- 12))))
+(assert (or (not (and (<= (+ fmt0 (* (- 1) fmt1)) (- 12)) (>= (+ fmt0 (* (- 1) fmt1)) (- 12)))) (>= (+ fmt0 (* (- 1) fmt1)) (- 12))))
+(assert (or (not (<= (+ fmt0 (* (- 1) fmt1)) (- 12))) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 12))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 12)) (>= (+ fmt0 (* (- 1) fmt1)) (- 12)))))
+(assert (or (or (or (or (or (or (or (or (or (or (or (or (and (<= (+ fmt0 (* (- 1) fmt1)) 0) (>= (+ fmt0 (* (- 1) fmt1)) 0)) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 1)) (>= (+ fmt0 (* (- 1) fmt1)) (- 1)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 2)) (>= (+ fmt0 (* (- 1) fmt1)) (- 2)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (>= (+ fmt0 (* (- 1) fmt1)) (- 4)))) (and (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (>= (+ fmt0 (* (- 1) [...]
+(assert (or (not (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0))) (<= (+ arg1 (* (- 1) fmt0)) 0)))
+(assert (or (not (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0))) (>= (+ arg1 (* (- 1) fmt0)) 0)))
+(assert (or (not (<= (+ arg1 (* (- 1) fmt0)) 0)) (not (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0))))
+(assert (or (not (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (<= (+ arg1 (* (- 1) fmt0)) 1)))
+(assert (or (not (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (>= (+ arg1 (* (- 1) fmt0)) 1)))
+(assert (or (not (<= (+ arg1 (* (- 1) fmt0)) 1)) (not (>= (+ arg1 (* (- 1) fmt0)) 1)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))))
+(assert (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (not (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)))))
+(assert (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (not (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1)))))
+(assert (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1)) (not (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))))))
+(assert (or (not (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (<= (+ arg1 (* (- 1) fmt0)) 2)))
+(assert (or (not (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (>= (+ arg1 (* (- 1) fmt0)) 2)))
+(assert (or (not (<= (+ arg1 (* (- 1) fmt0)) 2)) (not (>= (+ arg1 (* (- 1) fmt0)) 2)) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))))
+(assert (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (not (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))))))
+(assert (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (not (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2)))))
+(assert (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2)) (not (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))))))
+(assert (or (not (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))) (<= (+ arg1 (* (- 1) fmt0)) 3)))
+(assert (or (not (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))) (>= (+ arg1 (* (- 1) fmt0)) 3)))
+(assert (or (not (<= (+ arg1 (* (- 1) fmt0)) 3)) (not (>= (+ arg1 (* (- 1) fmt0)) 3)) (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))))
+(assert (or (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))) (not (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+  [...]
+(assert (or (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))) (not (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3)))))
+(assert (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3)) (not (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ a [...]
+(assert (or (not (and (<= (+ arg1 (* (- 1) fmt0)) 4) (>= (+ arg1 (* (- 1) fmt0)) 4))) (<= (+ arg1 (* (- 1) fmt0)) 4)))
+(assert (or (not (and (<= (+ arg1 (* (- 1) fmt0)) 4) (>= (+ arg1 (* (- 1) fmt0)) 4))) (>= (+ arg1 (* (- 1) fmt0)) 4)))
+(assert (or (not (<= (+ arg1 (* (- 1) fmt0)) 4)) (not (>= (+ arg1 (* (- 1) fmt0)) 4)) (and (<= (+ arg1 (* (- 1) fmt0)) 4) (>= (+ arg1 (* (- 1) fmt0)) 4))))
+(assert (or (or (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))) (and (<= (+ arg1 (* (- 1) fmt0)) 4) (>= (+ arg1 (* (- 1) fmt0)) 4))) (not (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) [...]
+(assert (or (or (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))) (and (<= (+ arg1 (* (- 1) fmt0)) 4) (>= (+ arg1 (* (- 1) fmt0)) 4))) (not (and (<= (+ arg1 (* (- 1) fmt0)) 4) (>= (+ arg1 (* (- 1) fmt0)) 4)))))
+(assert (or (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))) (and (<= (+ arg1 (* (- 1) fmt0)) 4) (>= (+ arg1 (* (- 1) fmt0)) 4)) (not (or (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1)  [...]
+(assert (or (not (and (<= (+ arg1 (* (- 1) fmt0)) 5) (>= (+ arg1 (* (- 1) fmt0)) 5))) (<= (+ arg1 (* (- 1) fmt0)) 5)))
+(assert (or (not (and (<= (+ arg1 (* (- 1) fmt0)) 5) (>= (+ arg1 (* (- 1) fmt0)) 5))) (>= (+ arg1 (* (- 1) fmt0)) 5)))
+(assert (or (not (<= (+ arg1 (* (- 1) fmt0)) 5)) (not (>= (+ arg1 (* (- 1) fmt0)) 5)) (and (<= (+ arg1 (* (- 1) fmt0)) 5) (>= (+ arg1 (* (- 1) fmt0)) 5))))
+(assert (or (or (or (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))) (and (<= (+ arg1 (* (- 1) fmt0)) 4) (>= (+ arg1 (* (- 1) fmt0)) 4))) (and (<= (+ arg1 (* (- 1) fmt0)) 5) (>= (+ arg1 (* (- 1) fmt0)) 5))) (not (or (or (or (or (and (<= (+ arg1 (* (- 1)  [...]
+(assert (or (or (or (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))) (and (<= (+ arg1 (* (- 1) fmt0)) 4) (>= (+ arg1 (* (- 1) fmt0)) 4))) (and (<= (+ arg1 (* (- 1) fmt0)) 5) (>= (+ arg1 (* (- 1) fmt0)) 5))) (not (and (<= (+ arg1 (* (- 1) fmt0)) 5) (>= (+ [...]
+(assert (or (or (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))) (and (<= (+ arg1 (* (- 1) fmt0)) 4) (>= (+ arg1 (* (- 1) fmt0)) 4))) (and (<= (+ arg1 (* (- 1) fmt0)) 5) (>= (+ arg1 (* (- 1) fmt0)) 5)) (not (or (or (or (or (or (and (<= (+ arg1 (* (- 1) f [...]
+(assert (or (not (and (<= (+ arg1 (* (- 1) fmt0)) 6) (>= (+ arg1 (* (- 1) fmt0)) 6))) (<= (+ arg1 (* (- 1) fmt0)) 6)))
+(assert (or (not (and (<= (+ arg1 (* (- 1) fmt0)) 6) (>= (+ arg1 (* (- 1) fmt0)) 6))) (>= (+ arg1 (* (- 1) fmt0)) 6)))
+(assert (or (not (<= (+ arg1 (* (- 1) fmt0)) 6)) (not (>= (+ arg1 (* (- 1) fmt0)) 6)) (and (<= (+ arg1 (* (- 1) fmt0)) 6) (>= (+ arg1 (* (- 1) fmt0)) 6))))
+(assert (or (or (or (or (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))) (and (<= (+ arg1 (* (- 1) fmt0)) 4) (>= (+ arg1 (* (- 1) fmt0)) 4))) (and (<= (+ arg1 (* (- 1) fmt0)) 5) (>= (+ arg1 (* (- 1) fmt0)) 5))) (and (<= (+ arg1 (* (- 1) fmt0)) 6) (>= (+  [...]
+(assert (or (or (or (or (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))) (and (<= (+ arg1 (* (- 1) fmt0)) 4) (>= (+ arg1 (* (- 1) fmt0)) 4))) (and (<= (+ arg1 (* (- 1) fmt0)) 5) (>= (+ arg1 (* (- 1) fmt0)) 5))) (and (<= (+ arg1 (* (- 1) fmt0)) 6) (>= (+  [...]
+(assert (or (or (or (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))) (and (<= (+ arg1 (* (- 1) fmt0)) 4) (>= (+ arg1 (* (- 1) fmt0)) 4))) (and (<= (+ arg1 (* (- 1) fmt0)) 5) (>= (+ arg1 (* (- 1) fmt0)) 5))) (and (<= (+ arg1 (* (- 1) fmt0)) 6) (>= (+ arg1 [...]
+(assert (or (not (and (<= (+ arg1 (* (- 1) fmt0)) 7) (>= (+ arg1 (* (- 1) fmt0)) 7))) (<= (+ arg1 (* (- 1) fmt0)) 7)))
+(assert (or (not (and (<= (+ arg1 (* (- 1) fmt0)) 7) (>= (+ arg1 (* (- 1) fmt0)) 7))) (>= (+ arg1 (* (- 1) fmt0)) 7)))
+(assert (or (not (<= (+ arg1 (* (- 1) fmt0)) 7)) (not (>= (+ arg1 (* (- 1) fmt0)) 7)) (and (<= (+ arg1 (* (- 1) fmt0)) 7) (>= (+ arg1 (* (- 1) fmt0)) 7))))
+(assert (or (or (or (or (or (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))) (and (<= (+ arg1 (* (- 1) fmt0)) 4) (>= (+ arg1 (* (- 1) fmt0)) 4))) (and (<= (+ arg1 (* (- 1) fmt0)) 5) (>= (+ arg1 (* (- 1) fmt0)) 5))) (and (<= (+ arg1 (* (- 1) fmt0)) 6) (>= [...]
+(assert (or (or (or (or (or (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))) (and (<= (+ arg1 (* (- 1) fmt0)) 4) (>= (+ arg1 (* (- 1) fmt0)) 4))) (and (<= (+ arg1 (* (- 1) fmt0)) 5) (>= (+ arg1 (* (- 1) fmt0)) 5))) (and (<= (+ arg1 (* (- 1) fmt0)) 6) (>= [...]
+(assert (or (or (or (or (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))) (and (<= (+ arg1 (* (- 1) fmt0)) 4) (>= (+ arg1 (* (- 1) fmt0)) 4))) (and (<= (+ arg1 (* (- 1) fmt0)) 5) (>= (+ arg1 (* (- 1) fmt0)) 5))) (and (<= (+ arg1 (* (- 1) fmt0)) 6) (>= (+  [...]
+(assert (or (not (and (<= (+ arg1 (* (- 1) fmt0)) 8) (>= (+ arg1 (* (- 1) fmt0)) 8))) (<= (+ arg1 (* (- 1) fmt0)) 8)))
+(assert (or (not (and (<= (+ arg1 (* (- 1) fmt0)) 8) (>= (+ arg1 (* (- 1) fmt0)) 8))) (>= (+ arg1 (* (- 1) fmt0)) 8)))
+(assert (or (not (<= (+ arg1 (* (- 1) fmt0)) 8)) (not (>= (+ arg1 (* (- 1) fmt0)) 8)) (and (<= (+ arg1 (* (- 1) fmt0)) 8) (>= (+ arg1 (* (- 1) fmt0)) 8))))
+(assert (or (or (or (or (or (or (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))) (and (<= (+ arg1 (* (- 1) fmt0)) 4) (>= (+ arg1 (* (- 1) fmt0)) 4))) (and (<= (+ arg1 (* (- 1) fmt0)) 5) (>= (+ arg1 (* (- 1) fmt0)) 5))) (and (<= (+ arg1 (* (- 1) fmt0)) 6) [...]
+(assert (or (or (or (or (or (or (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))) (and (<= (+ arg1 (* (- 1) fmt0)) 4) (>= (+ arg1 (* (- 1) fmt0)) 4))) (and (<= (+ arg1 (* (- 1) fmt0)) 5) (>= (+ arg1 (* (- 1) fmt0)) 5))) (and (<= (+ arg1 (* (- 1) fmt0)) 6) [...]
+(assert (or (or (or (or (or (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))) (and (<= (+ arg1 (* (- 1) fmt0)) 4) (>= (+ arg1 (* (- 1) fmt0)) 4))) (and (<= (+ arg1 (* (- 1) fmt0)) 5) (>= (+ arg1 (* (- 1) fmt0)) 5))) (and (<= (+ arg1 (* (- 1) fmt0)) 6) (>= [...]
+(assert (or (not (and (<= (+ arg1 (* (- 1) fmt0)) 9) (>= (+ arg1 (* (- 1) fmt0)) 9))) (<= (+ arg1 (* (- 1) fmt0)) 9)))
+(assert (or (not (and (<= (+ arg1 (* (- 1) fmt0)) 9) (>= (+ arg1 (* (- 1) fmt0)) 9))) (>= (+ arg1 (* (- 1) fmt0)) 9)))
+(assert (or (not (<= (+ arg1 (* (- 1) fmt0)) 9)) (not (>= (+ arg1 (* (- 1) fmt0)) 9)) (and (<= (+ arg1 (* (- 1) fmt0)) 9) (>= (+ arg1 (* (- 1) fmt0)) 9))))
+(assert (or (or (or (or (or (or (or (or (or (and (<= (+ arg1 (* (- 1) fmt0)) 0) (>= (+ arg1 (* (- 1) fmt0)) 0)) (and (<= (+ arg1 (* (- 1) fmt0)) 1) (>= (+ arg1 (* (- 1) fmt0)) 1))) (and (<= (+ arg1 (* (- 1) fmt0)) 2) (>= (+ arg1 (* (- 1) fmt0)) 2))) (and (<= (+ arg1 (* (- 1) fmt0)) 3) (>= (+ arg1 (* (- 1) fmt0)) 3))) (and (<= (+ arg1 (* (- 1) fmt0)) 4) (>= (+ arg1 (* (- 1) fmt0)) 4))) (and (<= (+ arg1 (* (- 1) fmt0)) 5) (>= (+ arg1 (* (- 1) fmt0)) 5))) (and (<= (+ arg1 (* (- 1) fmt0)) 6) [...]
+(assert (or (not (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0))) (<= (+ percent (* (- 1) (format 0))) 0)))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0))) (>= (+ percent (* (- 1) (format 0))) 0)))
+(assert (or (not (<= (+ percent (* (- 1) (format 0))) 0)) (not (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0))))
+(assert (or (not (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (<= (+ s (* (- 1) (format 0))) 0)))
+(assert (or (not (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (>= (+ s (* (- 1) (format 0))) 0)))
+(assert (or (not (<= (+ s (* (- 1) (format 0))) 0)) (not (>= (+ s (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (not (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (not (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0)))))
+(assert (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0)) (not (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))))))
+(assert (or (not (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0))) 0))) (<= (+ x (* (- 1) (format 0))) 0)))
+(assert (or (not (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0))) 0))) (>= (+ x (* (- 1) (format 0))) 0)))
+(assert (or (not (<= (+ x (* (- 1) (format 0))) 0)) (not (>= (+ x (* (- 1) (format 0))) 0)) (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0))) 0))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0))) 0))) (not (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0))) 0))) (not (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0))) 0)) (not (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0) [...]
+(assert (or (not (and (<= (format 0) 3) (>= (format 0) 3))) (<= (format 0) 3)))
+(assert (or (not (and (<= (format 0) 3) (>= (format 0) 3))) (>= (format 0) 3)))
+(assert (or (not (<= (format 0) 3)) (not (>= (format 0) 3)) (and (<= (format 0) 3) (>= (format 0) 3))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0))) 0))) (and (<= (format 0) 3) (>= (format 0) 3))) (not (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (and (<= (+ x ( [...]
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0))) 0))) (and (<= (format 0) 3) (>= (format 0) 3))) (not (and (<= (format 0) 3) (>= (format 0) 3)))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0))) 0))) (and (<= (format 0) 3) (>= (format 0) 3)) (not (or (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (and (<= (+ x (* [...]
+(assert (or (not (and (<= (format 0) 4) (>= (format 0) 4))) (<= (format 0) 4)))
+(assert (or (not (and (<= (format 0) 4) (>= (format 0) 4))) (>= (format 0) 4)))
+(assert (or (not (<= (format 0) 4)) (not (>= (format 0) 4)) (and (<= (format 0) 4) (>= (format 0) 4))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0))) 0))) (and (<= (format 0) 3) (>= (format 0) 3))) (and (<= (format 0) 4) (>= (format 0) 4))) (not (or (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0)  [...]
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0))) 0))) (and (<= (format 0) 3) (>= (format 0) 3))) (and (<= (format 0) 4) (>= (format 0) 4))) (not (and (<= (format 0) 4) (>= (format 0) 4)))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0))) 0))) (and (<= (format 0) 3) (>= (format 0) 3))) (and (<= (format 0) 4) (>= (format 0) 4)) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) ( [...]
+(assert (or (not (and (<= (format 0) 5) (>= (format 0) 5))) (<= (format 0) 5)))
+(assert (or (not (and (<= (format 0) 5) (>= (format 0) 5))) (>= (format 0) 5)))
+(assert (or (not (<= (format 0) 5)) (not (>= (format 0) 5)) (and (<= (format 0) 5) (>= (format 0) 5))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0))) 0))) (and (<= (format 0) 3) (>= (format 0) 3))) (and (<= (format 0) 4) (>= (format 0) 4))) (and (<= (format 0) 5) (>= (format 0) 5))) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (form [...]
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0))) 0))) (and (<= (format 0) 3) (>= (format 0) 3))) (and (<= (format 0) 4) (>= (format 0) 4))) (and (<= (format 0) 5) (>= (format 0) 5))) (not (and (<= (format 0) 5) (>= (format 0) 5)))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0))) 0))) (and (<= (format 0) 3) (>= (format 0) 3))) (and (<= (format 0) 4) (>= (format 0) 4))) (and (<= (format 0) 5) (>= (format 0) 5)) (not (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (forma [...]
+(assert (or (not (and (<= (format 0) 6) (>= (format 0) 6))) (<= (format 0) 6)))
+(assert (or (not (and (<= (format 0) 6) (>= (format 0) 6))) (>= (format 0) 6)))
+(assert (or (not (<= (format 0) 6)) (not (>= (format 0) 6)) (and (<= (format 0) 6) (>= (format 0) 6))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0))) 0))) (and (<= (format 0) 3) (>= (format 0) 3))) (and (<= (format 0) 4) (>= (format 0) 4))) (and (<= (format 0) 5) (>= (format 0) 5))) (and (<= (format 0) 6) (>= (format 0) 6))) (not (or (or (or (or (or (and (<= (+ percent (*  [...]
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0))) 0))) (and (<= (format 0) 3) (>= (format 0) 3))) (and (<= (format 0) 4) (>= (format 0) 4))) (and (<= (format 0) 5) (>= (format 0) 5))) (and (<= (format 0) 6) (>= (format 0) 6))) (not (and (<= (format 0) 6) (>= (format 0) 6)))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0))) 0))) (and (<= (format 0) 3) (>= (format 0) 3))) (and (<= (format 0) 4) (>= (format 0) 4))) (and (<= (format 0) 5) (>= (format 0) 5))) (and (<= (format 0) 6) (>= (format 0) 6)) (not (or (or (or (or (or (or (and (<= (+ percent (* ( [...]
+(assert (or (not (and (<= (format 0) 255) (>= (format 0) 255))) (<= (format 0) 255)))
+(assert (or (not (and (<= (format 0) 255) (>= (format 0) 255))) (>= (format 0) 255)))
+(assert (or (not (<= (format 0) 255)) (not (>= (format 0) 255)) (and (<= (format 0) 255) (>= (format 0) 255))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 0))) 0) (>= (+ s (* (- 1) (format 0))) 0))) (and (<= (+ x (* (- 1) (format 0))) 0) (>= (+ x (* (- 1) (format 0))) 0))) (and (<= (format 0) 3) (>= (format 0) 3))) (and (<= (format 0) 4) (>= (format 0) 4))) (and (<= (format 0) 5) (>= (format 0) 5))) (and (<= (format 0) 6) (>= (format 0) 6))) (and (<= (format 0) 255) (>= (format 0) 255))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0))) (<= (+ percent (* (- 1) (format 1))) 0)))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0))) (>= (+ percent (* (- 1) (format 1))) 0)))
+(assert (or (not (<= (+ percent (* (- 1) (format 1))) 0)) (not (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0))))
+(assert (or (not (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (<= (+ s (* (- 1) (format 1))) 0)))
+(assert (or (not (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (>= (+ s (* (- 1) (format 1))) 0)))
+(assert (or (not (<= (+ s (* (- 1) (format 1))) 0)) (not (>= (+ s (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (not (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (not (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0)))))
+(assert (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0)) (not (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))))))
+(assert (or (not (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))) (<= (+ x (* (- 1) (format 1))) 0)))
+(assert (or (not (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))) (>= (+ x (* (- 1) (format 1))) 0)))
+(assert (or (not (<= (+ x (* (- 1) (format 1))) 0)) (not (>= (+ x (* (- 1) (format 1))) 0)) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))) (not (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))) (not (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0)) (not (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1) [...]
+(assert (or (not (and (<= (format 1) 3) (>= (format 1) 3))) (<= (format 1) 3)))
+(assert (or (not (and (<= (format 1) 3) (>= (format 1) 3))) (>= (format 1) 3)))
+(assert (or (not (<= (format 1) 3)) (not (>= (format 1) 3)) (and (<= (format 1) 3) (>= (format 1) 3))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))) (and (<= (format 1) 3) (>= (format 1) 3))) (not (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (<= (+ x ( [...]
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))) (and (<= (format 1) 3) (>= (format 1) 3))) (not (and (<= (format 1) 3) (>= (format 1) 3)))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))) (and (<= (format 1) 3) (>= (format 1) 3)) (not (or (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (<= (+ x (* [...]
+(assert (or (not (and (<= (format 1) 4) (>= (format 1) 4))) (<= (format 1) 4)))
+(assert (or (not (and (<= (format 1) 4) (>= (format 1) 4))) (>= (format 1) 4)))
+(assert (or (not (<= (format 1) 4)) (not (>= (format 1) 4)) (and (<= (format 1) 4) (>= (format 1) 4))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))) (and (<= (format 1) 3) (>= (format 1) 3))) (and (<= (format 1) 4) (>= (format 1) 4))) (not (or (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0)  [...]
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))) (and (<= (format 1) 3) (>= (format 1) 3))) (and (<= (format 1) 4) (>= (format 1) 4))) (not (and (<= (format 1) 4) (>= (format 1) 4)))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))) (and (<= (format 1) 3) (>= (format 1) 3))) (and (<= (format 1) 4) (>= (format 1) 4)) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) ( [...]
+(assert (or (not (and (<= (format 1) 5) (>= (format 1) 5))) (<= (format 1) 5)))
+(assert (or (not (and (<= (format 1) 5) (>= (format 1) 5))) (>= (format 1) 5)))
+(assert (or (not (<= (format 1) 5)) (not (>= (format 1) 5)) (and (<= (format 1) 5) (>= (format 1) 5))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))) (and (<= (format 1) 3) (>= (format 1) 3))) (and (<= (format 1) 4) (>= (format 1) 4))) (and (<= (format 1) 5) (>= (format 1) 5))) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (form [...]
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))) (and (<= (format 1) 3) (>= (format 1) 3))) (and (<= (format 1) 4) (>= (format 1) 4))) (and (<= (format 1) 5) (>= (format 1) 5))) (not (and (<= (format 1) 5) (>= (format 1) 5)))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))) (and (<= (format 1) 3) (>= (format 1) 3))) (and (<= (format 1) 4) (>= (format 1) 4))) (and (<= (format 1) 5) (>= (format 1) 5)) (not (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (forma [...]
+(assert (or (not (and (<= (format 1) 6) (>= (format 1) 6))) (<= (format 1) 6)))
+(assert (or (not (and (<= (format 1) 6) (>= (format 1) 6))) (>= (format 1) 6)))
+(assert (or (not (<= (format 1) 6)) (not (>= (format 1) 6)) (and (<= (format 1) 6) (>= (format 1) 6))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))) (and (<= (format 1) 3) (>= (format 1) 3))) (and (<= (format 1) 4) (>= (format 1) 4))) (and (<= (format 1) 5) (>= (format 1) 5))) (and (<= (format 1) 6) (>= (format 1) 6))) (not (or (or (or (or (or (and (<= (+ percent (*  [...]
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))) (and (<= (format 1) 3) (>= (format 1) 3))) (and (<= (format 1) 4) (>= (format 1) 4))) (and (<= (format 1) 5) (>= (format 1) 5))) (and (<= (format 1) 6) (>= (format 1) 6))) (not (and (<= (format 1) 6) (>= (format 1) 6)))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))) (and (<= (format 1) 3) (>= (format 1) 3))) (and (<= (format 1) 4) (>= (format 1) 4))) (and (<= (format 1) 5) (>= (format 1) 5))) (and (<= (format 1) 6) (>= (format 1) 6)) (not (or (or (or (or (or (or (and (<= (+ percent (* ( [...]
+(assert (or (not (and (<= (format 1) 255) (>= (format 1) 255))) (<= (format 1) 255)))
+(assert (or (not (and (<= (format 1) 255) (>= (format 1) 255))) (>= (format 1) 255)))
+(assert (or (not (<= (format 1) 255)) (not (>= (format 1) 255)) (and (<= (format 1) 255) (>= (format 1) 255))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))) (and (<= (format 1) 3) (>= (format 1) 3))) (and (<= (format 1) 4) (>= (format 1) 4))) (and (<= (format 1) 5) (>= (format 1) 5))) (and (<= (format 1) 6) (>= (format 1) 6))) (and (<= (format 1) 255) (>= (format 1) 255))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0))) (<= (+ percent (* (- 1) (format 2))) 0)))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0))) (>= (+ percent (* (- 1) (format 2))) 0)))
+(assert (or (not (<= (+ percent (* (- 1) (format 2))) 0)) (not (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0))))
+(assert (or (not (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (<= (+ s (* (- 1) (format 2))) 0)))
+(assert (or (not (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (>= (+ s (* (- 1) (format 2))) 0)))
+(assert (or (not (<= (+ s (* (- 1) (format 2))) 0)) (not (>= (+ s (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (not (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (not (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0)))))
+(assert (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0)) (not (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))))))
+(assert (or (not (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))) (<= (+ x (* (- 1) (format 2))) 0)))
+(assert (or (not (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))) (>= (+ x (* (- 1) (format 2))) 0)))
+(assert (or (not (<= (+ x (* (- 1) (format 2))) 0)) (not (>= (+ x (* (- 1) (format 2))) 0)) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))) (not (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))) (not (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0)) (not (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2) [...]
+(assert (or (not (and (<= (format 2) 3) (>= (format 2) 3))) (<= (format 2) 3)))
+(assert (or (not (and (<= (format 2) 3) (>= (format 2) 3))) (>= (format 2) 3)))
+(assert (or (not (<= (format 2) 3)) (not (>= (format 2) 3)) (and (<= (format 2) 3) (>= (format 2) 3))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))) (and (<= (format 2) 3) (>= (format 2) 3))) (not (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (<= (+ x ( [...]
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))) (and (<= (format 2) 3) (>= (format 2) 3))) (not (and (<= (format 2) 3) (>= (format 2) 3)))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))) (and (<= (format 2) 3) (>= (format 2) 3)) (not (or (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (<= (+ x (* [...]
+(assert (or (not (and (<= (format 2) 4) (>= (format 2) 4))) (<= (format 2) 4)))
+(assert (or (not (and (<= (format 2) 4) (>= (format 2) 4))) (>= (format 2) 4)))
+(assert (or (not (<= (format 2) 4)) (not (>= (format 2) 4)) (and (<= (format 2) 4) (>= (format 2) 4))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))) (and (<= (format 2) 3) (>= (format 2) 3))) (and (<= (format 2) 4) (>= (format 2) 4))) (not (or (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0)  [...]
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))) (and (<= (format 2) 3) (>= (format 2) 3))) (and (<= (format 2) 4) (>= (format 2) 4))) (not (and (<= (format 2) 4) (>= (format 2) 4)))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))) (and (<= (format 2) 3) (>= (format 2) 3))) (and (<= (format 2) 4) (>= (format 2) 4)) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) ( [...]
+(assert (or (not (and (<= (format 2) 5) (>= (format 2) 5))) (<= (format 2) 5)))
+(assert (or (not (and (<= (format 2) 5) (>= (format 2) 5))) (>= (format 2) 5)))
+(assert (or (not (<= (format 2) 5)) (not (>= (format 2) 5)) (and (<= (format 2) 5) (>= (format 2) 5))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))) (and (<= (format 2) 3) (>= (format 2) 3))) (and (<= (format 2) 4) (>= (format 2) 4))) (and (<= (format 2) 5) (>= (format 2) 5))) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (form [...]
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))) (and (<= (format 2) 3) (>= (format 2) 3))) (and (<= (format 2) 4) (>= (format 2) 4))) (and (<= (format 2) 5) (>= (format 2) 5))) (not (and (<= (format 2) 5) (>= (format 2) 5)))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))) (and (<= (format 2) 3) (>= (format 2) 3))) (and (<= (format 2) 4) (>= (format 2) 4))) (and (<= (format 2) 5) (>= (format 2) 5)) (not (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (forma [...]
+(assert (or (not (and (<= (format 2) 6) (>= (format 2) 6))) (<= (format 2) 6)))
+(assert (or (not (and (<= (format 2) 6) (>= (format 2) 6))) (>= (format 2) 6)))
+(assert (or (not (<= (format 2) 6)) (not (>= (format 2) 6)) (and (<= (format 2) 6) (>= (format 2) 6))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))) (and (<= (format 2) 3) (>= (format 2) 3))) (and (<= (format 2) 4) (>= (format 2) 4))) (and (<= (format 2) 5) (>= (format 2) 5))) (and (<= (format 2) 6) (>= (format 2) 6))) (not (or (or (or (or (or (and (<= (+ percent (*  [...]
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))) (and (<= (format 2) 3) (>= (format 2) 3))) (and (<= (format 2) 4) (>= (format 2) 4))) (and (<= (format 2) 5) (>= (format 2) 5))) (and (<= (format 2) 6) (>= (format 2) 6))) (not (and (<= (format 2) 6) (>= (format 2) 6)))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))) (and (<= (format 2) 3) (>= (format 2) 3))) (and (<= (format 2) 4) (>= (format 2) 4))) (and (<= (format 2) 5) (>= (format 2) 5))) (and (<= (format 2) 6) (>= (format 2) 6)) (not (or (or (or (or (or (or (and (<= (+ percent (* ( [...]
+(assert (or (not (and (<= (format 2) 255) (>= (format 2) 255))) (<= (format 2) 255)))
+(assert (or (not (and (<= (format 2) 255) (>= (format 2) 255))) (>= (format 2) 255)))
+(assert (or (not (<= (format 2) 255)) (not (>= (format 2) 255)) (and (<= (format 2) 255) (>= (format 2) 255))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))) (and (<= (format 2) 3) (>= (format 2) 3))) (and (<= (format 2) 4) (>= (format 2) 4))) (and (<= (format 2) 5) (>= (format 2) 5))) (and (<= (format 2) 6) (>= (format 2) 6))) (and (<= (format 2) 255) (>= (format 2) 255))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0))) (<= (+ percent (* (- 1) (format 3))) 0)))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0))) (>= (+ percent (* (- 1) (format 3))) 0)))
+(assert (or (not (<= (+ percent (* (- 1) (format 3))) 0)) (not (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0))))
+(assert (or (not (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (<= (+ s (* (- 1) (format 3))) 0)))
+(assert (or (not (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (>= (+ s (* (- 1) (format 3))) 0)))
+(assert (or (not (<= (+ s (* (- 1) (format 3))) 0)) (not (>= (+ s (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (not (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (not (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0)))))
+(assert (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0)) (not (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))))))
+(assert (or (not (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))) (<= (+ x (* (- 1) (format 3))) 0)))
+(assert (or (not (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))) (>= (+ x (* (- 1) (format 3))) 0)))
+(assert (or (not (<= (+ x (* (- 1) (format 3))) 0)) (not (>= (+ x (* (- 1) (format 3))) 0)) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))) (not (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))) (not (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0)) (not (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3) [...]
+(assert (or (not (and (<= (format 3) 3) (>= (format 3) 3))) (<= (format 3) 3)))
+(assert (or (not (and (<= (format 3) 3) (>= (format 3) 3))) (>= (format 3) 3)))
+(assert (or (not (<= (format 3) 3)) (not (>= (format 3) 3)) (and (<= (format 3) 3) (>= (format 3) 3))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))) (and (<= (format 3) 3) (>= (format 3) 3))) (not (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (<= (+ x ( [...]
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))) (and (<= (format 3) 3) (>= (format 3) 3))) (not (and (<= (format 3) 3) (>= (format 3) 3)))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))) (and (<= (format 3) 3) (>= (format 3) 3)) (not (or (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (<= (+ x (* [...]
+(assert (or (not (and (<= (format 3) 4) (>= (format 3) 4))) (<= (format 3) 4)))
+(assert (or (not (and (<= (format 3) 4) (>= (format 3) 4))) (>= (format 3) 4)))
+(assert (or (not (<= (format 3) 4)) (not (>= (format 3) 4)) (and (<= (format 3) 4) (>= (format 3) 4))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))) (and (<= (format 3) 3) (>= (format 3) 3))) (and (<= (format 3) 4) (>= (format 3) 4))) (not (or (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0)  [...]
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))) (and (<= (format 3) 3) (>= (format 3) 3))) (and (<= (format 3) 4) (>= (format 3) 4))) (not (and (<= (format 3) 4) (>= (format 3) 4)))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))) (and (<= (format 3) 3) (>= (format 3) 3))) (and (<= (format 3) 4) (>= (format 3) 4)) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) ( [...]
+(assert (or (not (and (<= (format 3) 5) (>= (format 3) 5))) (<= (format 3) 5)))
+(assert (or (not (and (<= (format 3) 5) (>= (format 3) 5))) (>= (format 3) 5)))
+(assert (or (not (<= (format 3) 5)) (not (>= (format 3) 5)) (and (<= (format 3) 5) (>= (format 3) 5))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))) (and (<= (format 3) 3) (>= (format 3) 3))) (and (<= (format 3) 4) (>= (format 3) 4))) (and (<= (format 3) 5) (>= (format 3) 5))) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (form [...]
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))) (and (<= (format 3) 3) (>= (format 3) 3))) (and (<= (format 3) 4) (>= (format 3) 4))) (and (<= (format 3) 5) (>= (format 3) 5))) (not (and (<= (format 3) 5) (>= (format 3) 5)))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))) (and (<= (format 3) 3) (>= (format 3) 3))) (and (<= (format 3) 4) (>= (format 3) 4))) (and (<= (format 3) 5) (>= (format 3) 5)) (not (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (forma [...]
+(assert (or (not (and (<= (format 3) 6) (>= (format 3) 6))) (<= (format 3) 6)))
+(assert (or (not (and (<= (format 3) 6) (>= (format 3) 6))) (>= (format 3) 6)))
+(assert (or (not (<= (format 3) 6)) (not (>= (format 3) 6)) (and (<= (format 3) 6) (>= (format 3) 6))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))) (and (<= (format 3) 3) (>= (format 3) 3))) (and (<= (format 3) 4) (>= (format 3) 4))) (and (<= (format 3) 5) (>= (format 3) 5))) (and (<= (format 3) 6) (>= (format 3) 6))) (not (or (or (or (or (or (and (<= (+ percent (*  [...]
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))) (and (<= (format 3) 3) (>= (format 3) 3))) (and (<= (format 3) 4) (>= (format 3) 4))) (and (<= (format 3) 5) (>= (format 3) 5))) (and (<= (format 3) 6) (>= (format 3) 6))) (not (and (<= (format 3) 6) (>= (format 3) 6)))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))) (and (<= (format 3) 3) (>= (format 3) 3))) (and (<= (format 3) 4) (>= (format 3) 4))) (and (<= (format 3) 5) (>= (format 3) 5))) (and (<= (format 3) 6) (>= (format 3) 6)) (not (or (or (or (or (or (or (and (<= (+ percent (* ( [...]
+(assert (or (not (and (<= (format 3) 255) (>= (format 3) 255))) (<= (format 3) 255)))
+(assert (or (not (and (<= (format 3) 255) (>= (format 3) 255))) (>= (format 3) 255)))
+(assert (or (not (<= (format 3) 255)) (not (>= (format 3) 255)) (and (<= (format 3) 255) (>= (format 3) 255))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))) (and (<= (format 3) 3) (>= (format 3) 3))) (and (<= (format 3) 4) (>= (format 3) 4))) (and (<= (format 3) 5) (>= (format 3) 5))) (and (<= (format 3) 6) (>= (format 3) 6))) (and (<= (format 3) 255) (>= (format 3) 255))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0))) (<= (+ percent (* (- 1) (format 4))) 0)))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0))) (>= (+ percent (* (- 1) (format 4))) 0)))
+(assert (or (not (<= (+ percent (* (- 1) (format 4))) 0)) (not (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0))))
+(assert (or (not (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (<= (+ s (* (- 1) (format 4))) 0)))
+(assert (or (not (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (>= (+ s (* (- 1) (format 4))) 0)))
+(assert (or (not (<= (+ s (* (- 1) (format 4))) 0)) (not (>= (+ s (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (not (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (not (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0)))))
+(assert (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0)) (not (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))))))
+(assert (or (not (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))) (<= (+ x (* (- 1) (format 4))) 0)))
+(assert (or (not (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))) (>= (+ x (* (- 1) (format 4))) 0)))
+(assert (or (not (<= (+ x (* (- 1) (format 4))) 0)) (not (>= (+ x (* (- 1) (format 4))) 0)) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))) (not (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))) (not (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0)) (not (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4) [...]
+(assert (or (not (and (<= (format 4) 3) (>= (format 4) 3))) (<= (format 4) 3)))
+(assert (or (not (and (<= (format 4) 3) (>= (format 4) 3))) (>= (format 4) 3)))
+(assert (or (not (<= (format 4) 3)) (not (>= (format 4) 3)) (and (<= (format 4) 3) (>= (format 4) 3))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))) (and (<= (format 4) 3) (>= (format 4) 3))) (not (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (<= (+ x ( [...]
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))) (and (<= (format 4) 3) (>= (format 4) 3))) (not (and (<= (format 4) 3) (>= (format 4) 3)))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))) (and (<= (format 4) 3) (>= (format 4) 3)) (not (or (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (<= (+ x (* [...]
+(assert (or (not (and (<= (format 4) 4) (>= (format 4) 4))) (<= (format 4) 4)))
+(assert (or (not (and (<= (format 4) 4) (>= (format 4) 4))) (>= (format 4) 4)))
+(assert (or (not (<= (format 4) 4)) (not (>= (format 4) 4)) (and (<= (format 4) 4) (>= (format 4) 4))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))) (and (<= (format 4) 3) (>= (format 4) 3))) (and (<= (format 4) 4) (>= (format 4) 4))) (not (or (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0)  [...]
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))) (and (<= (format 4) 3) (>= (format 4) 3))) (and (<= (format 4) 4) (>= (format 4) 4))) (not (and (<= (format 4) 4) (>= (format 4) 4)))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))) (and (<= (format 4) 3) (>= (format 4) 3))) (and (<= (format 4) 4) (>= (format 4) 4)) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) ( [...]
+(assert (or (not (and (<= (format 4) 5) (>= (format 4) 5))) (<= (format 4) 5)))
+(assert (or (not (and (<= (format 4) 5) (>= (format 4) 5))) (>= (format 4) 5)))
+(assert (or (not (<= (format 4) 5)) (not (>= (format 4) 5)) (and (<= (format 4) 5) (>= (format 4) 5))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))) (and (<= (format 4) 3) (>= (format 4) 3))) (and (<= (format 4) 4) (>= (format 4) 4))) (and (<= (format 4) 5) (>= (format 4) 5))) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (form [...]
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))) (and (<= (format 4) 3) (>= (format 4) 3))) (and (<= (format 4) 4) (>= (format 4) 4))) (and (<= (format 4) 5) (>= (format 4) 5))) (not (and (<= (format 4) 5) (>= (format 4) 5)))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))) (and (<= (format 4) 3) (>= (format 4) 3))) (and (<= (format 4) 4) (>= (format 4) 4))) (and (<= (format 4) 5) (>= (format 4) 5)) (not (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (forma [...]
+(assert (or (not (and (<= (format 4) 6) (>= (format 4) 6))) (<= (format 4) 6)))
+(assert (or (not (and (<= (format 4) 6) (>= (format 4) 6))) (>= (format 4) 6)))
+(assert (or (not (<= (format 4) 6)) (not (>= (format 4) 6)) (and (<= (format 4) 6) (>= (format 4) 6))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))) (and (<= (format 4) 3) (>= (format 4) 3))) (and (<= (format 4) 4) (>= (format 4) 4))) (and (<= (format 4) 5) (>= (format 4) 5))) (and (<= (format 4) 6) (>= (format 4) 6))) (not (or (or (or (or (or (and (<= (+ percent (*  [...]
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))) (and (<= (format 4) 3) (>= (format 4) 3))) (and (<= (format 4) 4) (>= (format 4) 4))) (and (<= (format 4) 5) (>= (format 4) 5))) (and (<= (format 4) 6) (>= (format 4) 6))) (not (and (<= (format 4) 6) (>= (format 4) 6)))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))) (and (<= (format 4) 3) (>= (format 4) 3))) (and (<= (format 4) 4) (>= (format 4) 4))) (and (<= (format 4) 5) (>= (format 4) 5))) (and (<= (format 4) 6) (>= (format 4) 6)) (not (or (or (or (or (or (or (and (<= (+ percent (* ( [...]
+(assert (or (not (and (<= (format 4) 255) (>= (format 4) 255))) (<= (format 4) 255)))
+(assert (or (not (and (<= (format 4) 255) (>= (format 4) 255))) (>= (format 4) 255)))
+(assert (or (not (<= (format 4) 255)) (not (>= (format 4) 255)) (and (<= (format 4) 255) (>= (format 4) 255))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))) (and (<= (format 4) 3) (>= (format 4) 3))) (and (<= (format 4) 4) (>= (format 4) 4))) (and (<= (format 4) 5) (>= (format 4) 5))) (and (<= (format 4) 6) (>= (format 4) 6))) (and (<= (format 4) 255) (>= (format 4) 255))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0))) (<= (+ percent (* (- 1) (format 5))) 0)))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0))) (>= (+ percent (* (- 1) (format 5))) 0)))
+(assert (or (not (<= (+ percent (* (- 1) (format 5))) 0)) (not (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0))))
+(assert (or (not (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (<= (+ s (* (- 1) (format 5))) 0)))
+(assert (or (not (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (>= (+ s (* (- 1) (format 5))) 0)))
+(assert (or (not (<= (+ s (* (- 1) (format 5))) 0)) (not (>= (+ s (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (not (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (not (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0)))))
+(assert (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0)) (not (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))))))
+(assert (or (not (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))) (<= (+ x (* (- 1) (format 5))) 0)))
+(assert (or (not (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))) (>= (+ x (* (- 1) (format 5))) 0)))
+(assert (or (not (<= (+ x (* (- 1) (format 5))) 0)) (not (>= (+ x (* (- 1) (format 5))) 0)) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))) (not (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))) (not (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0)) (not (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5) [...]
+(assert (or (not (and (<= (format 5) 3) (>= (format 5) 3))) (<= (format 5) 3)))
+(assert (or (not (and (<= (format 5) 3) (>= (format 5) 3))) (>= (format 5) 3)))
+(assert (or (not (<= (format 5) 3)) (not (>= (format 5) 3)) (and (<= (format 5) 3) (>= (format 5) 3))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))) (and (<= (format 5) 3) (>= (format 5) 3))) (not (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (<= (+ x ( [...]
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))) (and (<= (format 5) 3) (>= (format 5) 3))) (not (and (<= (format 5) 3) (>= (format 5) 3)))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))) (and (<= (format 5) 3) (>= (format 5) 3)) (not (or (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (<= (+ x (* [...]
+(assert (or (not (and (<= (format 5) 4) (>= (format 5) 4))) (<= (format 5) 4)))
+(assert (or (not (and (<= (format 5) 4) (>= (format 5) 4))) (>= (format 5) 4)))
+(assert (or (not (<= (format 5) 4)) (not (>= (format 5) 4)) (and (<= (format 5) 4) (>= (format 5) 4))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))) (and (<= (format 5) 3) (>= (format 5) 3))) (and (<= (format 5) 4) (>= (format 5) 4))) (not (or (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0)  [...]
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))) (and (<= (format 5) 3) (>= (format 5) 3))) (and (<= (format 5) 4) (>= (format 5) 4))) (not (and (<= (format 5) 4) (>= (format 5) 4)))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))) (and (<= (format 5) 3) (>= (format 5) 3))) (and (<= (format 5) 4) (>= (format 5) 4)) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) ( [...]
+(assert (or (not (and (<= (format 5) 5) (>= (format 5) 5))) (<= (format 5) 5)))
+(assert (or (not (and (<= (format 5) 5) (>= (format 5) 5))) (>= (format 5) 5)))
+(assert (or (not (<= (format 5) 5)) (not (>= (format 5) 5)) (and (<= (format 5) 5) (>= (format 5) 5))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))) (and (<= (format 5) 3) (>= (format 5) 3))) (and (<= (format 5) 4) (>= (format 5) 4))) (and (<= (format 5) 5) (>= (format 5) 5))) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (form [...]
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))) (and (<= (format 5) 3) (>= (format 5) 3))) (and (<= (format 5) 4) (>= (format 5) 4))) (and (<= (format 5) 5) (>= (format 5) 5))) (not (and (<= (format 5) 5) (>= (format 5) 5)))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))) (and (<= (format 5) 3) (>= (format 5) 3))) (and (<= (format 5) 4) (>= (format 5) 4))) (and (<= (format 5) 5) (>= (format 5) 5)) (not (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (forma [...]
+(assert (or (not (and (<= (format 5) 6) (>= (format 5) 6))) (<= (format 5) 6)))
+(assert (or (not (and (<= (format 5) 6) (>= (format 5) 6))) (>= (format 5) 6)))
+(assert (or (not (<= (format 5) 6)) (not (>= (format 5) 6)) (and (<= (format 5) 6) (>= (format 5) 6))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))) (and (<= (format 5) 3) (>= (format 5) 3))) (and (<= (format 5) 4) (>= (format 5) 4))) (and (<= (format 5) 5) (>= (format 5) 5))) (and (<= (format 5) 6) (>= (format 5) 6))) (not (or (or (or (or (or (and (<= (+ percent (*  [...]
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))) (and (<= (format 5) 3) (>= (format 5) 3))) (and (<= (format 5) 4) (>= (format 5) 4))) (and (<= (format 5) 5) (>= (format 5) 5))) (and (<= (format 5) 6) (>= (format 5) 6))) (not (and (<= (format 5) 6) (>= (format 5) 6)))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))) (and (<= (format 5) 3) (>= (format 5) 3))) (and (<= (format 5) 4) (>= (format 5) 4))) (and (<= (format 5) 5) (>= (format 5) 5))) (and (<= (format 5) 6) (>= (format 5) 6)) (not (or (or (or (or (or (or (and (<= (+ percent (* ( [...]
+(assert (or (not (and (<= (format 5) 255) (>= (format 5) 255))) (<= (format 5) 255)))
+(assert (or (not (and (<= (format 5) 255) (>= (format 5) 255))) (>= (format 5) 255)))
+(assert (or (not (<= (format 5) 255)) (not (>= (format 5) 255)) (and (<= (format 5) 255) (>= (format 5) 255))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))) (and (<= (format 5) 3) (>= (format 5) 3))) (and (<= (format 5) 4) (>= (format 5) 4))) (and (<= (format 5) 5) (>= (format 5) 5))) (and (<= (format 5) 6) (>= (format 5) 6))) (and (<= (format 5) 255) (>= (format 5) 255))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0))) (<= (+ percent (* (- 1) (format 6))) 0)))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0))) (>= (+ percent (* (- 1) (format 6))) 0)))
+(assert (or (not (<= (+ percent (* (- 1) (format 6))) 0)) (not (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0))))
+(assert (or (not (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (<= (+ s (* (- 1) (format 6))) 0)))
+(assert (or (not (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (>= (+ s (* (- 1) (format 6))) 0)))
+(assert (or (not (<= (+ s (* (- 1) (format 6))) 0)) (not (>= (+ s (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (not (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (not (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0)))))
+(assert (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0)) (not (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))))))
+(assert (or (not (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0))) (<= (+ x (* (- 1) (format 6))) 0)))
+(assert (or (not (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0))) (>= (+ x (* (- 1) (format 6))) 0)))
+(assert (or (not (<= (+ x (* (- 1) (format 6))) 0)) (not (>= (+ x (* (- 1) (format 6))) 0)) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0))) (not (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0))) (not (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0)) (not (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6) [...]
+(assert (or (not (and (<= (format 6) 3) (>= (format 6) 3))) (<= (format 6) 3)))
+(assert (or (not (and (<= (format 6) 3) (>= (format 6) 3))) (>= (format 6) 3)))
+(assert (or (not (<= (format 6) 3)) (not (>= (format 6) 3)) (and (<= (format 6) 3) (>= (format 6) 3))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0))) (and (<= (format 6) 3) (>= (format 6) 3))) (not (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (and (<= (+ x ( [...]
+
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0))) (and (<= (format 6) 3) (>= (format 6) 3)) (not (or (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (and (<= (+ x (* [...]
+
+(assert (or (not (and (<= (format 6) 4) (>= (format 6) 4))) (<= (format 6) 4)))
+(assert (or (not (and (<= (format 6) 4) (>= (format 6) 4))) (>= (format 6) 4)))
+(assert (or (not (<= (format 6) 4)) (not (>= (format 6) 4)) (and (<= (format 6) 4) (>= (format 6) 4))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0))) (and (<= (format 6) 3) (>= (format 6) 3))) (and (<= (format 6) 4) (>= (format 6) 4))) (not (or (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0)  [...]
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0))) (and (<= (format 6) 3) (>= (format 6) 3))) (and (<= (format 6) 4) (>= (format 6) 4))) (not (and (<= (format 6) 4) (>= (format 6) 4)))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0))) (and (<= (format 6) 3) (>= (format 6) 3))) (and (<= (format 6) 4) (>= (format 6) 4)) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) ( [...]
+(assert (or (not (and (<= (format 6) 5) (>= (format 6) 5))) (<= (format 6) 5)))
+(assert (or (not (and (<= (format 6) 5) (>= (format 6) 5))) (>= (format 6) 5)))
+(assert (or (not (<= (format 6) 5)) (not (>= (format 6) 5)) (and (<= (format 6) 5) (>= (format 6) 5))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0))) (and (<= (format 6) 3) (>= (format 6) 3))) (and (<= (format 6) 4) (>= (format 6) 4))) (and (<= (format 6) 5) (>= (format 6) 5))) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (form [...]
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0))) (and (<= (format 6) 3) (>= (format 6) 3))) (and (<= (format 6) 4) (>= (format 6) 4))) (and (<= (format 6) 5) (>= (format 6) 5))) (not (and (<= (format 6) 5) (>= (format 6) 5)))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0))) (and (<= (format 6) 3) (>= (format 6) 3))) (and (<= (format 6) 4) (>= (format 6) 4))) (and (<= (format 6) 5) (>= (format 6) 5)) (not (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (forma [...]
+(assert (or (not (and (<= (format 6) 6) (>= (format 6) 6))) (<= (format 6) 6)))
+(assert (or (not (and (<= (format 6) 6) (>= (format 6) 6))) (>= (format 6) 6)))
+(assert (or (not (<= (format 6) 6)) (not (>= (format 6) 6)) (and (<= (format 6) 6) (>= (format 6) 6))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0))) (and (<= (format 6) 3) (>= (format 6) 3))) (and (<= (format 6) 4) (>= (format 6) 4))) (and (<= (format 6) 5) (>= (format 6) 5))) (and (<= (format 6) 6) (>= (format 6) 6))) (not (or (or (or (or (or (and (<= (+ percent (*  [...]
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0))) (and (<= (format 6) 3) (>= (format 6) 3))) (and (<= (format 6) 4) (>= (format 6) 4))) (and (<= (format 6) 5) (>= (format 6) 5))) (and (<= (format 6) 6) (>= (format 6) 6))) (not (and (<= (format 6) 6) (>= (format 6) 6)))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0))) (and (<= (format 6) 3) (>= (format 6) 3))) (and (<= (format 6) 4) (>= (format 6) 4))) (and (<= (format 6) 5) (>= (format 6) 5))) (and (<= (format 6) 6) (>= (format 6) 6)) (not (or (or (or (or (or (or (and (<= (+ percent (* ( [...]
+(assert (or (not (and (<= (format 6) 255) (>= (format 6) 255))) (<= (format 6) 255)))
+(assert (or (not (and (<= (format 6) 255) (>= (format 6) 255))) (>= (format 6) 255)))
+(assert (or (not (<= (format 6) 255)) (not (>= (format 6) 255)) (and (<= (format 6) 255) (>= (format 6) 255))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0))) (and (<= (format 6) 3) (>= (format 6) 3))) (and (<= (format 6) 4) (>= (format 6) 4))) (and (<= (format 6) 5) (>= (format 6) 5))) (and (<= (format 6) 6) (>= (format 6) 6))) (and (<= (format 6) 255) (>= (format 6) 255))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0))) (<= (+ percent (* (- 1) (format 7))) 0)))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0))) (>= (+ percent (* (- 1) (format 7))) 0)))
+(assert (or (not (<= (+ percent (* (- 1) (format 7))) 0)) (not (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0))))
+(assert (or (not (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (<= (+ s (* (- 1) (format 7))) 0)))
+(assert (or (not (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (>= (+ s (* (- 1) (format 7))) 0)))
+(assert (or (not (<= (+ s (* (- 1) (format 7))) 0)) (not (>= (+ s (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (not (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (not (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0)))))
+(assert (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0)) (not (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))))))
+(assert (or (not (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))) (<= (+ x (* (- 1) (format 7))) 0)))
+(assert (or (not (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))) (>= (+ x (* (- 1) (format 7))) 0)))
+(assert (or (not (<= (+ x (* (- 1) (format 7))) 0)) (not (>= (+ x (* (- 1) (format 7))) 0)) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))) (not (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))) (not (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0)) (not (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7) [...]
+(assert (or (not (and (<= (format 7) 3) (>= (format 7) 3))) (<= (format 7) 3)))
+(assert (or (not (and (<= (format 7) 3) (>= (format 7) 3))) (>= (format 7) 3)))
+(assert (or (not (<= (format 7) 3)) (not (>= (format 7) 3)) (and (<= (format 7) 3) (>= (format 7) 3))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))) (and (<= (format 7) 3) (>= (format 7) 3))) (not (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (<= (+ x ( [...]
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))) (and (<= (format 7) 3) (>= (format 7) 3))) (not (and (<= (format 7) 3) (>= (format 7) 3)))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))) (and (<= (format 7) 3) (>= (format 7) 3)) (not (or (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (<= (+ x (* [...]
+(assert (or (not (and (<= (format 7) 4) (>= (format 7) 4))) (<= (format 7) 4)))
+(assert (or (not (and (<= (format 7) 4) (>= (format 7) 4))) (>= (format 7) 4)))
+(assert (or (not (<= (format 7) 4)) (not (>= (format 7) 4)) (and (<= (format 7) 4) (>= (format 7) 4))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))) (and (<= (format 7) 3) (>= (format 7) 3))) (and (<= (format 7) 4) (>= (format 7) 4))) (not (or (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0)  [...]
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))) (and (<= (format 7) 3) (>= (format 7) 3))) (and (<= (format 7) 4) (>= (format 7) 4))) (not (and (<= (format 7) 4) (>= (format 7) 4)))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))) (and (<= (format 7) 3) (>= (format 7) 3))) (and (<= (format 7) 4) (>= (format 7) 4)) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) ( [...]
+(assert (or (not (and (<= (format 7) 5) (>= (format 7) 5))) (<= (format 7) 5)))
+(assert (or (not (and (<= (format 7) 5) (>= (format 7) 5))) (>= (format 7) 5)))
+(assert (or (not (<= (format 7) 5)) (not (>= (format 7) 5)) (and (<= (format 7) 5) (>= (format 7) 5))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))) (and (<= (format 7) 3) (>= (format 7) 3))) (and (<= (format 7) 4) (>= (format 7) 4))) (and (<= (format 7) 5) (>= (format 7) 5))) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (form [...]
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))) (and (<= (format 7) 3) (>= (format 7) 3))) (and (<= (format 7) 4) (>= (format 7) 4))) (and (<= (format 7) 5) (>= (format 7) 5))) (not (and (<= (format 7) 5) (>= (format 7) 5)))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))) (and (<= (format 7) 3) (>= (format 7) 3))) (and (<= (format 7) 4) (>= (format 7) 4))) (and (<= (format 7) 5) (>= (format 7) 5)) (not (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (forma [...]
+(assert (or (not (and (<= (format 7) 6) (>= (format 7) 6))) (<= (format 7) 6)))
+(assert (or (not (and (<= (format 7) 6) (>= (format 7) 6))) (>= (format 7) 6)))
+(assert (or (not (<= (format 7) 6)) (not (>= (format 7) 6)) (and (<= (format 7) 6) (>= (format 7) 6))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))) (and (<= (format 7) 3) (>= (format 7) 3))) (and (<= (format 7) 4) (>= (format 7) 4))) (and (<= (format 7) 5) (>= (format 7) 5))) (and (<= (format 7) 6) (>= (format 7) 6))) (not (or (or (or (or (or (and (<= (+ percent (*  [...]
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))) (and (<= (format 7) 3) (>= (format 7) 3))) (and (<= (format 7) 4) (>= (format 7) 4))) (and (<= (format 7) 5) (>= (format 7) 5))) (and (<= (format 7) 6) (>= (format 7) 6))) (not (and (<= (format 7) 6) (>= (format 7) 6)))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))) (and (<= (format 7) 3) (>= (format 7) 3))) (and (<= (format 7) 4) (>= (format 7) 4))) (and (<= (format 7) 5) (>= (format 7) 5))) (and (<= (format 7) 6) (>= (format 7) 6)) (not (or (or (or (or (or (or (and (<= (+ percent (* ( [...]
+(assert (or (not (and (<= (format 7) 255) (>= (format 7) 255))) (<= (format 7) 255)))
+(assert (or (not (and (<= (format 7) 255) (>= (format 7) 255))) (>= (format 7) 255)))
+(assert (or (not (<= (format 7) 255)) (not (>= (format 7) 255)) (and (<= (format 7) 255) (>= (format 7) 255))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))) (and (<= (format 7) 3) (>= (format 7) 3))) (and (<= (format 7) 4) (>= (format 7) 4))) (and (<= (format 7) 5) (>= (format 7) 5))) (and (<= (format 7) 6) (>= (format 7) 6))) (and (<= (format 7) 255) (>= (format 7) 255))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0))) (<= (+ percent (* (- 1) (format 8))) 0)))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0))) (>= (+ percent (* (- 1) (format 8))) 0)))
+(assert (or (not (<= (+ percent (* (- 1) (format 8))) 0)) (not (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0))))
+(assert (or (not (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (<= (+ s (* (- 1) (format 8))) 0)))
+(assert (or (not (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (>= (+ s (* (- 1) (format 8))) 0)))
+(assert (or (not (<= (+ s (* (- 1) (format 8))) 0)) (not (>= (+ s (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (not (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (not (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0)))))
+(assert (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0)) (not (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))))))
+(assert (or (not (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0))) (<= (+ x (* (- 1) (format 8))) 0)))
+(assert (or (not (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0))) (>= (+ x (* (- 1) (format 8))) 0)))
+(assert (or (not (<= (+ x (* (- 1) (format 8))) 0)) (not (>= (+ x (* (- 1) (format 8))) 0)) (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0))) (not (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0))) (not (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0)) (not (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8) [...]
+(assert (or (not (and (<= (format 8) 3) (>= (format 8) 3))) (<= (format 8) 3)))
+(assert (or (not (and (<= (format 8) 3) (>= (format 8) 3))) (>= (format 8) 3)))
+(assert (or (not (<= (format 8) 3)) (not (>= (format 8) 3)) (and (<= (format 8) 3) (>= (format 8) 3))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0))) (and (<= (format 8) 3) (>= (format 8) 3))) (not (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (<= (+ x ( [...]
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0))) (and (<= (format 8) 3) (>= (format 8) 3))) (not (and (<= (format 8) 3) (>= (format 8) 3)))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0))) (and (<= (format 8) 3) (>= (format 8) 3)) (not (or (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (<= (+ x (* [...]
+(assert (or (not (and (<= (format 8) 4) (>= (format 8) 4))) (<= (format 8) 4)))
+(assert (or (not (and (<= (format 8) 4) (>= (format 8) 4))) (>= (format 8) 4)))
+(assert (or (not (<= (format 8) 4)) (not (>= (format 8) 4)) (and (<= (format 8) 4) (>= (format 8) 4))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0))) (and (<= (format 8) 3) (>= (format 8) 3))) (and (<= (format 8) 4) (>= (format 8) 4))) (not (or (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0)  [...]
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0))) (and (<= (format 8) 3) (>= (format 8) 3))) (and (<= (format 8) 4) (>= (format 8) 4))) (not (and (<= (format 8) 4) (>= (format 8) 4)))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0))) (and (<= (format 8) 3) (>= (format 8) 3))) (and (<= (format 8) 4) (>= (format 8) 4)) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) ( [...]
+(assert (or (not (and (<= (format 8) 5) (>= (format 8) 5))) (<= (format 8) 5)))
+(assert (or (not (and (<= (format 8) 5) (>= (format 8) 5))) (>= (format 8) 5)))
+(assert (or (not (<= (format 8) 5)) (not (>= (format 8) 5)) (and (<= (format 8) 5) (>= (format 8) 5))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0))) (and (<= (format 8) 3) (>= (format 8) 3))) (and (<= (format 8) 4) (>= (format 8) 4))) (and (<= (format 8) 5) (>= (format 8) 5))) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (form [...]
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0))) (and (<= (format 8) 3) (>= (format 8) 3))) (and (<= (format 8) 4) (>= (format 8) 4))) (and (<= (format 8) 5) (>= (format 8) 5))) (not (and (<= (format 8) 5) (>= (format 8) 5)))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0))) (and (<= (format 8) 3) (>= (format 8) 3))) (and (<= (format 8) 4) (>= (format 8) 4))) (and (<= (format 8) 5) (>= (format 8) 5)) (not (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (forma [...]
+(assert (or (not (and (<= (format 8) 6) (>= (format 8) 6))) (<= (format 8) 6)))
+(assert (or (not (and (<= (format 8) 6) (>= (format 8) 6))) (>= (format 8) 6)))
+(assert (or (not (<= (format 8) 6)) (not (>= (format 8) 6)) (and (<= (format 8) 6) (>= (format 8) 6))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0))) (and (<= (format 8) 3) (>= (format 8) 3))) (and (<= (format 8) 4) (>= (format 8) 4))) (and (<= (format 8) 5) (>= (format 8) 5))) (and (<= (format 8) 6) (>= (format 8) 6))) (not (or (or (or (or (or (and (<= (+ percent (*  [...]
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0))) (and (<= (format 8) 3) (>= (format 8) 3))) (and (<= (format 8) 4) (>= (format 8) 4))) (and (<= (format 8) 5) (>= (format 8) 5))) (and (<= (format 8) 6) (>= (format 8) 6))) (not (and (<= (format 8) 6) (>= (format 8) 6)))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0))) (and (<= (format 8) 3) (>= (format 8) 3))) (and (<= (format 8) 4) (>= (format 8) 4))) (and (<= (format 8) 5) (>= (format 8) 5))) (and (<= (format 8) 6) (>= (format 8) 6)) (not (or (or (or (or (or (or (and (<= (+ percent (* ( [...]
+(assert (or (not (and (<= (format 8) 255) (>= (format 8) 255))) (<= (format 8) 255)))
+(assert (or (not (and (<= (format 8) 255) (>= (format 8) 255))) (>= (format 8) 255)))
+(assert (or (not (<= (format 8) 255)) (not (>= (format 8) 255)) (and (<= (format 8) 255) (>= (format 8) 255))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0))) (and (<= (format 8) 3) (>= (format 8) 3))) (and (<= (format 8) 4) (>= (format 8) 4))) (and (<= (format 8) 5) (>= (format 8) 5))) (and (<= (format 8) 6) (>= (format 8) 6))) (and (<= (format 8) 255) (>= (format 8) 255))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0))) (<= (+ percent (* (- 1) (format 9))) 0)))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0))) (>= (+ percent (* (- 1) (format 9))) 0)))
+(assert (or (not (<= (+ percent (* (- 1) (format 9))) 0)) (not (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0))))
+(assert (or (not (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (<= (+ s (* (- 1) (format 9))) 0)))
+(assert (or (not (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (>= (+ s (* (- 1) (format 9))) 0)))
+(assert (or (not (<= (+ s (* (- 1) (format 9))) 0)) (not (>= (+ s (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (not (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (not (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0)))))
+(assert (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0)) (not (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))))))
+(assert (or (not (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9))) 0))) (<= (+ x (* (- 1) (format 9))) 0)))
+(assert (or (not (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9))) 0))) (>= (+ x (* (- 1) (format 9))) 0)))
+(assert (or (not (<= (+ x (* (- 1) (format 9))) 0)) (not (>= (+ x (* (- 1) (format 9))) 0)) (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9))) 0))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9))) 0))) (not (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9))) 0))) (not (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9))) 0)) (not (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9) [...]
+(assert (or (not (and (<= (format 9) 3) (>= (format 9) 3))) (<= (format 9) 3)))
+(assert (or (not (and (<= (format 9) 3) (>= (format 9) 3))) (>= (format 9) 3)))
+(assert (or (not (<= (format 9) 3)) (not (>= (format 9) 3)) (and (<= (format 9) 3) (>= (format 9) 3))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9))) 0))) (and (<= (format 9) 3) (>= (format 9) 3))) (not (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (<= (+ x ( [...]
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9))) 0))) (and (<= (format 9) 3) (>= (format 9) 3))) (not (and (<= (format 9) 3) (>= (format 9) 3)))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9))) 0))) (and (<= (format 9) 3) (>= (format 9) 3)) (not (or (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (<= (+ x (* [...]
+(assert (or (not (and (<= (format 9) 4) (>= (format 9) 4))) (<= (format 9) 4)))
+(assert (or (not (and (<= (format 9) 4) (>= (format 9) 4))) (>= (format 9) 4)))
+(assert (or (not (<= (format 9) 4)) (not (>= (format 9) 4)) (and (<= (format 9) 4) (>= (format 9) 4))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9))) 0))) (and (<= (format 9) 3) (>= (format 9) 3))) (and (<= (format 9) 4) (>= (format 9) 4))) (not (or (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0)  [...]
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9))) 0))) (and (<= (format 9) 3) (>= (format 9) 3))) (and (<= (format 9) 4) (>= (format 9) 4))) (not (and (<= (format 9) 4) (>= (format 9) 4)))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9))) 0))) (and (<= (format 9) 3) (>= (format 9) 3))) (and (<= (format 9) 4) (>= (format 9) 4)) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) ( [...]
+(assert (or (not (and (<= (format 9) 5) (>= (format 9) 5))) (<= (format 9) 5)))
+(assert (or (not (and (<= (format 9) 5) (>= (format 9) 5))) (>= (format 9) 5)))
+(assert (or (not (<= (format 9) 5)) (not (>= (format 9) 5)) (and (<= (format 9) 5) (>= (format 9) 5))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9))) 0))) (and (<= (format 9) 3) (>= (format 9) 3))) (and (<= (format 9) 4) (>= (format 9) 4))) (and (<= (format 9) 5) (>= (format 9) 5))) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (form [...]
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9))) 0))) (and (<= (format 9) 3) (>= (format 9) 3))) (and (<= (format 9) 4) (>= (format 9) 4))) (and (<= (format 9) 5) (>= (format 9) 5))) (not (and (<= (format 9) 5) (>= (format 9) 5)))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9))) 0))) (and (<= (format 9) 3) (>= (format 9) 3))) (and (<= (format 9) 4) (>= (format 9) 4))) (and (<= (format 9) 5) (>= (format 9) 5)) (not (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (forma [...]
+(assert (or (not (and (<= (format 9) 6) (>= (format 9) 6))) (<= (format 9) 6)))
+(assert (or (not (and (<= (format 9) 6) (>= (format 9) 6))) (>= (format 9) 6)))
+(assert (or (not (<= (format 9) 6)) (not (>= (format 9) 6)) (and (<= (format 9) 6) (>= (format 9) 6))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9))) 0))) (and (<= (format 9) 3) (>= (format 9) 3))) (and (<= (format 9) 4) (>= (format 9) 4))) (and (<= (format 9) 5) (>= (format 9) 5))) (and (<= (format 9) 6) (>= (format 9) 6))) (not (or (or (or (or (or (and (<= (+ percent (*  [...]
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9))) 0))) (and (<= (format 9) 3) (>= (format 9) 3))) (and (<= (format 9) 4) (>= (format 9) 4))) (and (<= (format 9) 5) (>= (format 9) 5))) (and (<= (format 9) 6) (>= (format 9) 6))) (not (and (<= (format 9) 6) (>= (format 9) 6)))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9))) 0))) (and (<= (format 9) 3) (>= (format 9) 3))) (and (<= (format 9) 4) (>= (format 9) 4))) (and (<= (format 9) 5) (>= (format 9) 5))) (and (<= (format 9) 6) (>= (format 9) 6)) (not (or (or (or (or (or (or (and (<= (+ percent (* ( [...]
+(assert (or (not (and (<= (format 9) 255) (>= (format 9) 255))) (<= (format 9) 255)))
+(assert (or (not (and (<= (format 9) 255) (>= (format 9) 255))) (>= (format 9) 255)))
+(assert (or (not (<= (format 9) 255)) (not (>= (format 9) 255)) (and (<= (format 9) 255) (>= (format 9) 255))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (<= (+ x (* (- 1) (format 9))) 0) (>= (+ x (* (- 1) (format 9))) 0))) (and (<= (format 9) 3) (>= (format 9) 3))) (and (<= (format 9) 4) (>= (format 9) 4))) (and (<= (format 9) 5) (>= (format 9) 5))) (and (<= (format 9) 6) (>= (format 9) 6))) (and (<= (format 9) 255) (>= (format 9) 255))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0))) (<= (+ percent (* (- 1) (format 10))) 0)))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0))) (>= (+ percent (* (- 1) (format 10))) 0)))
+(assert (or (not (<= (+ percent (* (- 1) (format 10))) 0)) (not (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0))))
+(assert (or (not (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (<= (+ s (* (- 1) (format 10))) 0)))
+(assert (or (not (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (>= (+ s (* (- 1) (format 10))) 0)))
+(assert (or (not (<= (+ s (* (- 1) (format 10))) 0)) (not (>= (+ s (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (not (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (not (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0)))))
+(assert (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0)) (not (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))))))
+(assert (or (not (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) (format 10))) 0))) (<= (+ x (* (- 1) (format 10))) 0)))
+(assert (or (not (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) (format 10))) 0))) (>= (+ x (* (- 1) (format 10))) 0)))
+(assert (or (not (<= (+ x (* (- 1) (format 10))) 0)) (not (>= (+ x (* (- 1) (format 10))) 0)) (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) (format 10))) 0))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) (format 10))) 0))) (not (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) (format 10))) 0))) (not (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) (format 10))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) (format 10))) 0)) (not (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) [...]
+(assert (or (not (and (<= (format 10) 3) (>= (format 10) 3))) (<= (format 10) 3)))
+(assert (or (not (and (<= (format 10) 3) (>= (format 10) 3))) (>= (format 10) 3)))
+(assert (or (not (<= (format 10) 3)) (not (>= (format 10) 3)) (and (<= (format 10) 3) (>= (format 10) 3))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) (format 10))) 0))) (and (<= (format 10) 3) (>= (format 10) 3))) (not (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (an [...]
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) (format 10))) 0))) (and (<= (format 10) 3) (>= (format 10) 3))) (not (and (<= (format 10) 3) (>= (format 10) 3)))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) (format 10))) 0))) (and (<= (format 10) 3) (>= (format 10) 3)) (not (or (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (and [...]
+(assert (or (not (and (<= (format 10) 4) (>= (format 10) 4))) (<= (format 10) 4)))
+(assert (or (not (and (<= (format 10) 4) (>= (format 10) 4))) (>= (format 10) 4)))
+(assert (or (not (<= (format 10) 4)) (not (>= (format 10) 4)) (and (<= (format 10) 4) (>= (format 10) 4))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) (format 10))) 0))) (and (<= (format 10) 3) (>= (format 10) 3))) (and (<= (format 10) 4) (>= (format 10) 4))) (not (or (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (for [...]
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) (format 10))) 0))) (and (<= (format 10) 3) (>= (format 10) 3))) (and (<= (format 10) 4) (>= (format 10) 4))) (not (and (<= (format 10) 4) (>= (format 10) 4)))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) (format 10))) 0))) (and (<= (format 10) 3) (>= (format 10) 3))) (and (<= (format 10) 4) (>= (format 10) 4)) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (form [...]
+(assert (or (not (and (<= (format 10) 5) (>= (format 10) 5))) (<= (format 10) 5)))
+(assert (or (not (and (<= (format 10) 5) (>= (format 10) 5))) (>= (format 10) 5)))
+(assert (or (not (<= (format 10) 5)) (not (>= (format 10) 5)) (and (<= (format 10) 5) (>= (format 10) 5))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) (format 10))) 0))) (and (<= (format 10) 3) (>= (format 10) 3))) (and (<= (format 10) 4) (>= (format 10) 4))) (and (<= (format 10) 5) (>= (format 10) 5))) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent ( [...]
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) (format 10))) 0))) (and (<= (format 10) 3) (>= (format 10) 3))) (and (<= (format 10) 4) (>= (format 10) 4))) (and (<= (format 10) 5) (>= (format 10) 5))) (not (and (<= (format 10) 5) (>= (format 10) 5)))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) (format 10))) 0))) (and (<= (format 10) 3) (>= (format 10) 3))) (and (<= (format 10) 4) (>= (format 10) 4))) (and (<= (format 10) 5) (>= (format 10) 5)) (not (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* [...]
+(assert (or (not (and (<= (format 10) 6) (>= (format 10) 6))) (<= (format 10) 6)))
+(assert (or (not (and (<= (format 10) 6) (>= (format 10) 6))) (>= (format 10) 6)))
+(assert (or (not (<= (format 10) 6)) (not (>= (format 10) 6)) (and (<= (format 10) 6) (>= (format 10) 6))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) (format 10))) 0))) (and (<= (format 10) 3) (>= (format 10) 3))) (and (<= (format 10) 4) (>= (format 10) 4))) (and (<= (format 10) 5) (>= (format 10) 5))) (and (<= (format 10) 6) (>= (format 10) 6))) (not (or (or (or (or (or (and (<=  [...]
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) (format 10))) 0))) (and (<= (format 10) 3) (>= (format 10) 3))) (and (<= (format 10) 4) (>= (format 10) 4))) (and (<= (format 10) 5) (>= (format 10) 5))) (and (<= (format 10) 6) (>= (format 10) 6))) (not (and (<= (format 10) 6) (>= ( [...]
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) (format 10))) 0))) (and (<= (format 10) 3) (>= (format 10) 3))) (and (<= (format 10) 4) (>= (format 10) 4))) (and (<= (format 10) 5) (>= (format 10) 5))) (and (<= (format 10) 6) (>= (format 10) 6)) (not (or (or (or (or (or (or (and (<= ( [...]
+(assert (or (not (and (<= (format 10) 255) (>= (format 10) 255))) (<= (format 10) 255)))
+(assert (or (not (and (<= (format 10) 255) (>= (format 10) 255))) (>= (format 10) 255)))
+(assert (or (not (<= (format 10) 255)) (not (>= (format 10) 255)) (and (<= (format 10) 255) (>= (format 10) 255))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (and (<= (+ x (* (- 1) (format 10))) 0) (>= (+ x (* (- 1) (format 10))) 0))) (and (<= (format 10) 3) (>= (format 10) 3))) (and (<= (format 10) 4) (>= (format 10) 4))) (and (<= (format 10) 5) (>= (format 10) 5))) (and (<= (format 10) 6) (>= (format 10) 6))) (and (<= (format 10) 255) (>= (for [...]
+(assert (or (not (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0))) (<= (+ percent (* (- 1) (format 11))) 0)))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0))) (>= (+ percent (* (- 1) (format 11))) 0)))
+(assert (or (not (<= (+ percent (* (- 1) (format 11))) 0)) (not (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0))))
+(assert (or (not (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (<= (+ s (* (- 1) (format 11))) 0)))
+(assert (or (not (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (>= (+ s (* (- 1) (format 11))) 0)))
+(assert (or (not (<= (+ s (* (- 1) (format 11))) 0)) (not (>= (+ s (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (not (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (not (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0)))))
+(assert (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0)) (not (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))))))
+(assert (or (not (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) (format 11))) 0))) (<= (+ x (* (- 1) (format 11))) 0)))
+(assert (or (not (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) (format 11))) 0))) (>= (+ x (* (- 1) (format 11))) 0)))
+(assert (or (not (<= (+ x (* (- 1) (format 11))) 0)) (not (>= (+ x (* (- 1) (format 11))) 0)) (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) (format 11))) 0))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) (format 11))) 0))) (not (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) (format 11))) 0))) (not (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) (format 11))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) (format 11))) 0)) (not (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) [...]
+(assert (or (not (and (<= (format 11) 3) (>= (format 11) 3))) (<= (format 11) 3)))
+(assert (or (not (and (<= (format 11) 3) (>= (format 11) 3))) (>= (format 11) 3)))
+(assert (or (not (<= (format 11) 3)) (not (>= (format 11) 3)) (and (<= (format 11) 3) (>= (format 11) 3))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) (format 11))) 0))) (and (<= (format 11) 3) (>= (format 11) 3))) (not (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (an [...]
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) (format 11))) 0))) (and (<= (format 11) 3) (>= (format 11) 3))) (not (and (<= (format 11) 3) (>= (format 11) 3)))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) (format 11))) 0))) (and (<= (format 11) 3) (>= (format 11) 3)) (not (or (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (and [...]
+(assert (or (not (and (<= (format 11) 4) (>= (format 11) 4))) (<= (format 11) 4)))
+(assert (or (not (and (<= (format 11) 4) (>= (format 11) 4))) (>= (format 11) 4)))
+(assert (or (not (<= (format 11) 4)) (not (>= (format 11) 4)) (and (<= (format 11) 4) (>= (format 11) 4))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) (format 11))) 0))) (and (<= (format 11) 3) (>= (format 11) 3))) (and (<= (format 11) 4) (>= (format 11) 4))) (not (or (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (for [...]
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) (format 11))) 0))) (and (<= (format 11) 3) (>= (format 11) 3))) (and (<= (format 11) 4) (>= (format 11) 4))) (not (and (<= (format 11) 4) (>= (format 11) 4)))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) (format 11))) 0))) (and (<= (format 11) 3) (>= (format 11) 3))) (and (<= (format 11) 4) (>= (format 11) 4)) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (form [...]
+(assert (or (not (and (<= (format 11) 5) (>= (format 11) 5))) (<= (format 11) 5)))
+(assert (or (not (and (<= (format 11) 5) (>= (format 11) 5))) (>= (format 11) 5)))
+(assert (or (not (<= (format 11) 5)) (not (>= (format 11) 5)) (and (<= (format 11) 5) (>= (format 11) 5))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) (format 11))) 0))) (and (<= (format 11) 3) (>= (format 11) 3))) (and (<= (format 11) 4) (>= (format 11) 4))) (and (<= (format 11) 5) (>= (format 11) 5))) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent ( [...]
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) (format 11))) 0))) (and (<= (format 11) 3) (>= (format 11) 3))) (and (<= (format 11) 4) (>= (format 11) 4))) (and (<= (format 11) 5) (>= (format 11) 5))) (not (and (<= (format 11) 5) (>= (format 11) 5)))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) (format 11))) 0))) (and (<= (format 11) 3) (>= (format 11) 3))) (and (<= (format 11) 4) (>= (format 11) 4))) (and (<= (format 11) 5) (>= (format 11) 5)) (not (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* [...]
+(assert (or (not (and (<= (format 11) 6) (>= (format 11) 6))) (<= (format 11) 6)))
+(assert (or (not (and (<= (format 11) 6) (>= (format 11) 6))) (>= (format 11) 6)))
+(assert (or (not (<= (format 11) 6)) (not (>= (format 11) 6)) (and (<= (format 11) 6) (>= (format 11) 6))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) (format 11))) 0))) (and (<= (format 11) 3) (>= (format 11) 3))) (and (<= (format 11) 4) (>= (format 11) 4))) (and (<= (format 11) 5) (>= (format 11) 5))) (and (<= (format 11) 6) (>= (format 11) 6))) (not (or (or (or (or (or (and (<=  [...]
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) (format 11))) 0))) (and (<= (format 11) 3) (>= (format 11) 3))) (and (<= (format 11) 4) (>= (format 11) 4))) (and (<= (format 11) 5) (>= (format 11) 5))) (and (<= (format 11) 6) (>= (format 11) 6))) (not (and (<= (format 11) 6) (>= ( [...]
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) (format 11))) 0))) (and (<= (format 11) 3) (>= (format 11) 3))) (and (<= (format 11) 4) (>= (format 11) 4))) (and (<= (format 11) 5) (>= (format 11) 5))) (and (<= (format 11) 6) (>= (format 11) 6)) (not (or (or (or (or (or (or (and (<= ( [...]
+(assert (or (not (and (<= (format 11) 255) (>= (format 11) 255))) (<= (format 11) 255)))
+(assert (or (not (and (<= (format 11) 255) (>= (format 11) 255))) (>= (format 11) 255)))
+(assert (or (not (<= (format 11) 255)) (not (>= (format 11) 255)) (and (<= (format 11) 255) (>= (format 11) 255))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (and (<= (+ x (* (- 1) (format 11))) 0) (>= (+ x (* (- 1) (format 11))) 0))) (and (<= (format 11) 3) (>= (format 11) 3))) (and (<= (format 11) 4) (>= (format 11) 4))) (and (<= (format 11) 5) (>= (format 11) 5))) (and (<= (format 11) 6) (>= (format 11) 6))) (and (<= (format 11) 255) (>= (for [...]
+(assert (or (not (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0))) (<= (+ percent (* (- 1) (format 12))) 0)))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0))) (>= (+ percent (* (- 1) (format 12))) 0)))
+(assert (or (not (<= (+ percent (* (- 1) (format 12))) 0)) (not (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0))))
+(assert (or (not (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (<= (+ s (* (- 1) (format 12))) 0)))
+(assert (or (not (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (>= (+ s (* (- 1) (format 12))) 0)))
+(assert (or (not (<= (+ s (* (- 1) (format 12))) 0)) (not (>= (+ s (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (not (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (not (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0)))))
+(assert (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0)) (not (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))))))
+(assert (or (not (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) (format 12))) 0))) (<= (+ x (* (- 1) (format 12))) 0)))
+(assert (or (not (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) (format 12))) 0))) (>= (+ x (* (- 1) (format 12))) 0)))
+(assert (or (not (<= (+ x (* (- 1) (format 12))) 0)) (not (>= (+ x (* (- 1) (format 12))) 0)) (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) (format 12))) 0))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) (format 12))) 0))) (not (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) (format 12))) 0))) (not (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) (format 12))) 0)))))
+(assert (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) (format 12))) 0)) (not (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) [...]
+(assert (or (not (and (<= (format 12) 3) (>= (format 12) 3))) (<= (format 12) 3)))
+(assert (or (not (and (<= (format 12) 3) (>= (format 12) 3))) (>= (format 12) 3)))
+(assert (or (not (<= (format 12) 3)) (not (>= (format 12) 3)) (and (<= (format 12) 3) (>= (format 12) 3))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) (format 12))) 0))) (and (<= (format 12) 3) (>= (format 12) 3))) (not (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (an [...]
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) (format 12))) 0))) (and (<= (format 12) 3) (>= (format 12) 3))) (not (and (<= (format 12) 3) (>= (format 12) 3)))))
+(assert (or (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) (format 12))) 0))) (and (<= (format 12) 3) (>= (format 12) 3)) (not (or (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (and [...]
+(assert (or (not (and (<= (format 12) 4) (>= (format 12) 4))) (<= (format 12) 4)))
+(assert (or (not (and (<= (format 12) 4) (>= (format 12) 4))) (>= (format 12) 4)))
+(assert (or (not (<= (format 12) 4)) (not (>= (format 12) 4)) (and (<= (format 12) 4) (>= (format 12) 4))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) (format 12))) 0))) (and (<= (format 12) 3) (>= (format 12) 3))) (and (<= (format 12) 4) (>= (format 12) 4))) (not (or (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (for [...]
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) (format 12))) 0))) (and (<= (format 12) 3) (>= (format 12) 3))) (and (<= (format 12) 4) (>= (format 12) 4))) (not (and (<= (format 12) 4) (>= (format 12) 4)))))
+(assert (or (or (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) (format 12))) 0))) (and (<= (format 12) 3) (>= (format 12) 3))) (and (<= (format 12) 4) (>= (format 12) 4)) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (form [...]
+(assert (or (not (and (<= (format 12) 5) (>= (format 12) 5))) (<= (format 12) 5)))
+(assert (or (not (and (<= (format 12) 5) (>= (format 12) 5))) (>= (format 12) 5)))
+(assert (or (not (<= (format 12) 5)) (not (>= (format 12) 5)) (and (<= (format 12) 5) (>= (format 12) 5))))
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) (format 12))) 0))) (and (<= (format 12) 3) (>= (format 12) 3))) (and (<= (format 12) 4) (>= (format 12) 4))) (and (<= (format 12) 5) (>= (format 12) 5))) (not (or (or (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent ( [...]
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) (format 12))) 0))) (and (<= (format 12) 3) (>= (format 12) 3))) (and (<= (format 12) 4) (>= (format 12) 4))) (and (<= (format 12) 5) (>= (format 12) 5))) (not (and (<= (format 12) 5) (>= (format 12) 5)))))
+(assert (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) (format 12))) 0))) (and (<= (format 12) 3) (>= (format 12) 3))) (and (<= (format 12) 4) (>= (format 12) 4))) (and (<= (format 12) 5) (>= (format 12) 5)) (not (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* [...]
+(assert (or (not (and (<= (format 12) 6) (>= (format 12) 6))) (<= (format 12) 6)))
+(assert (or (not (and (<= (format 12) 6) (>= (format 12) 6))) (>= (format 12) 6)))
+(assert (or (not (<= (format 12) 6)) (not (>= (format 12) 6)) (and (<= (format 12) 6) (>= (format 12) 6))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) (format 12))) 0))) (and (<= (format 12) 3) (>= (format 12) 3))) (and (<= (format 12) 4) (>= (format 12) 4))) (and (<= (format 12) 5) (>= (format 12) 5))) (and (<= (format 12) 6) (>= (format 12) 6))) (not (or (or (or (or (or (and (<=  [...]
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) (format 12))) 0))) (and (<= (format 12) 3) (>= (format 12) 3))) (and (<= (format 12) 4) (>= (format 12) 4))) (and (<= (format 12) 5) (>= (format 12) 5))) (and (<= (format 12) 6) (>= (format 12) 6))) (not (and (<= (format 12) 6) (>= ( [...]
+(assert (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) (format 12))) 0))) (and (<= (format 12) 3) (>= (format 12) 3))) (and (<= (format 12) 4) (>= (format 12) 4))) (and (<= (format 12) 5) (>= (format 12) 5))) (and (<= (format 12) 6) (>= (format 12) 6)) (not (or (or (or (or (or (or (and (<= ( [...]
+(assert (or (not (and (<= (format 12) 255) (>= (format 12) 255))) (<= (format 12) 255)))
+(assert (or (not (and (<= (format 12) 255) (>= (format 12) 255))) (>= (format 12) 255)))
+(assert (or (not (<= (format 12) 255)) (not (>= (format 12) 255)) (and (<= (format 12) 255) (>= (format 12) 255))))
+(assert (or (or (or (or (or (or (or (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (and (<= (+ x (* (- 1) (format 12))) 0) (>= (+ x (* (- 1) (format 12))) 0))) (and (<= (format 12) 3) (>= (format 12) 3))) (and (<= (format 12) 4) (>= (format 12) 4))) (and (<= (format 12) 5) (>= (format 12) 5))) (and (<= (format 12) 6) (>= (format 12) 6))) (and (<= (format 12) 255) (>= (for [...]
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0)))) (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0)))) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0))) (not (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0)))))
+(assert (or (not (and (<= (s_count 0) 1) (>= (s_count 0) 1))) (<= (s_count 0) 1)))
+(assert (or (not (and (<= (s_count 0) 1) (>= (s_count 0) 1))) (>= (s_count 0) 1)))
+(assert (or (not (<= (s_count 0) 1)) (not (>= (s_count 0) 1)) (and (<= (s_count 0) 1) (>= (s_count 0) 1))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0)))) (and (<= (s_count 0) 1) (>= (s_count 0) 1))))
+(assert (or (not (and (<= (s_count 0) 0) (>= (s_count 0) 0))) (<= (s_count 0) 0)))
+(assert (or (not (and (<= (s_count 0) 0) (>= (s_count 0) 0))) (>= (s_count 0) 0)))
+(assert (or (not (<= (s_count 0) 0)) (not (>= (s_count 0) 0)) (and (<= (s_count 0) 0) (>= (s_count 0) 0))))
+(assert (or (and (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ s (* (- 1) (format 1))) 0) (>= (+ s (* (- 1) (format 1))) 0))) (and (<= (s_count 0) 0) (>= (s_count 0) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0)))) (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0)))) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0))) (not (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0)))))
+(assert (or (not (and (<= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1)) (>= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1)))) (<= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1))))
+(assert (or (not (and (<= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1)) (>= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1)))) (>= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1))))
+(assert (or (not (<= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1))) (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1))) (and (<= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1)) (>= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1)))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0)))) (and (<= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1)) (>= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1)))))
+(assert (or (not (and (<= (+ (s_count 0) (* (- 1) (s_count 1))) 0) (>= (+ (s_count 0) (* (- 1) (s_count 1))) 0))) (<= (+ (s_count 0) (* (- 1) (s_count 1))) 0)))
+(assert (or (not (and (<= (+ (s_count 0) (* (- 1) (s_count 1))) 0) (>= (+ (s_count 0) (* (- 1) (s_count 1))) 0))) (>= (+ (s_count 0) (* (- 1) (s_count 1))) 0)))
+(assert (or (not (<= (+ (s_count 0) (* (- 1) (s_count 1))) 0)) (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) 0)) (and (<= (+ (s_count 0) (* (- 1) (s_count 1))) 0) (>= (+ (s_count 0) (* (- 1) (s_count 1))) 0))))
+(assert (or (and (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ s (* (- 1) (format 2))) 0) (>= (+ s (* (- 1) (format 2))) 0))) (and (<= (+ (s_count 0) (* (- 1) (s_count 1))) 0) (>= (+ (s_count 0) (* (- 1) (s_count 1))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0)))) (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0)))) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0))) (not (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0)))))
+(assert (or (not (and (<= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1)) (>= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1)))) (<= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1))))
+(assert (or (not (and (<= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1)) (>= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1)))) (>= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1))))
+(assert (or (not (<= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1))) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1))) (and (<= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1)) (>= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1)))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0)))) (and (<= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1)) (>= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1)))))
+(assert (or (not (and (<= (+ (s_count 1) (* (- 1) (s_count 2))) 0) (>= (+ (s_count 1) (* (- 1) (s_count 2))) 0))) (<= (+ (s_count 1) (* (- 1) (s_count 2))) 0)))
+(assert (or (not (and (<= (+ (s_count 1) (* (- 1) (s_count 2))) 0) (>= (+ (s_count 1) (* (- 1) (s_count 2))) 0))) (>= (+ (s_count 1) (* (- 1) (s_count 2))) 0)))
+(assert (or (not (<= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (and (<= (+ (s_count 1) (* (- 1) (s_count 2))) 0) (>= (+ (s_count 1) (* (- 1) (s_count 2))) 0))))
+(assert (or (and (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ s (* (- 1) (format 3))) 0) (>= (+ s (* (- 1) (format 3))) 0))) (and (<= (+ (s_count 1) (* (- 1) (s_count 2))) 0) (>= (+ (s_count 1) (* (- 1) (s_count 2))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0)))) (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0)))) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0))) (not (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0)))))
+(assert (or (not (and (<= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1)) (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1)))) (<= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))))
+(assert (or (not (and (<= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1)) (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1)))) (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))))
+(assert (or (not (<= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))) (and (<= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1)) (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1)))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0)))) (and (<= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1)) (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1)))))
+(assert (or (not (and (<= (+ (s_count 2) (* (- 1) (s_count 3))) 0) (>= (+ (s_count 2) (* (- 1) (s_count 3))) 0))) (<= (+ (s_count 2) (* (- 1) (s_count 3))) 0)))
+(assert (or (not (and (<= (+ (s_count 2) (* (- 1) (s_count 3))) 0) (>= (+ (s_count 2) (* (- 1) (s_count 3))) 0))) (>= (+ (s_count 2) (* (- 1) (s_count 3))) 0)))
+(assert (or (not (<= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (and (<= (+ (s_count 2) (* (- 1) (s_count 3))) 0) (>= (+ (s_count 2) (* (- 1) (s_count 3))) 0))))
+(assert (or (and (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ s (* (- 1) (format 4))) 0) (>= (+ s (* (- 1) (format 4))) 0))) (and (<= (+ (s_count 2) (* (- 1) (s_count 3))) 0) (>= (+ (s_count 2) (* (- 1) (s_count 3))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0)))) (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0)))) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0))) (not (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0)))))
+(assert (or (not (and (<= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1)) (>= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1)))) (<= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1))))
+(assert (or (not (and (<= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1)) (>= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1)))) (>= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1))))
+(assert (or (not (<= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1))) (not (>= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1))) (and (<= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1)) (>= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1)))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0)))) (and (<= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1)) (>= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1)))))
+(assert (or (not (and (<= (+ (s_count 3) (* (- 1) (s_count 4))) 0) (>= (+ (s_count 3) (* (- 1) (s_count 4))) 0))) (<= (+ (s_count 3) (* (- 1) (s_count 4))) 0)))
+(assert (or (not (and (<= (+ (s_count 3) (* (- 1) (s_count 4))) 0) (>= (+ (s_count 3) (* (- 1) (s_count 4))) 0))) (>= (+ (s_count 3) (* (- 1) (s_count 4))) 0)))
+(assert (or (not (<= (+ (s_count 3) (* (- 1) (s_count 4))) 0)) (not (>= (+ (s_count 3) (* (- 1) (s_count 4))) 0)) (and (<= (+ (s_count 3) (* (- 1) (s_count 4))) 0) (>= (+ (s_count 3) (* (- 1) (s_count 4))) 0))))
+(assert (or (and (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ s (* (- 1) (format 5))) 0) (>= (+ s (* (- 1) (format 5))) 0))) (and (<= (+ (s_count 3) (* (- 1) (s_count 4))) 0) (>= (+ (s_count 3) (* (- 1) (s_count 4))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0)))) (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0)))) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0))) (not (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (and (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0)))))
+(assert (or (not (and (<= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1)) (>= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1)))) (<= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1))))
+(assert (or (not (and (<= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1)) (>= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1)))) (>= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1))))
+(assert (or (not (<= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1))) (not (>= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1))) (and (<= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1)) (>= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1)))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0)))) (and (<= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1)) (>= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1)))))
+(assert (or (not (and (<= (+ (s_count 4) (* (- 1) (s_count 5))) 0) (>= (+ (s_count 4) (* (- 1) (s_count 5))) 0))) (<= (+ (s_count 4) (* (- 1) (s_count 5))) 0)))
+(assert (or (not (and (<= (+ (s_count 4) (* (- 1) (s_count 5))) 0) (>= (+ (s_count 4) (* (- 1) (s_count 5))) 0))) (>= (+ (s_count 4) (* (- 1) (s_count 5))) 0)))
+(assert (or (not (<= (+ (s_count 4) (* (- 1) (s_count 5))) 0)) (not (>= (+ (s_count 4) (* (- 1) (s_count 5))) 0)) (and (<= (+ (s_count 4) (* (- 1) (s_count 5))) 0) (>= (+ (s_count 4) (* (- 1) (s_count 5))) 0))))
+(assert (or (and (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ s (* (- 1) (format 6))) 0) (>= (+ s (* (- 1) (format 6))) 0))) (and (<= (+ (s_count 4) (* (- 1) (s_count 5))) 0) (>= (+ (s_count 4) (* (- 1) (s_count 5))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0)))) (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0)))) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0))) (not (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0)))))
+(assert (or (not (and (<= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1)) (>= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1)))) (<= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1))))
+(assert (or (not (and (<= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1)) (>= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1)))) (>= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1))))
+(assert (or (not (<= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1))) (not (>= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1))) (and (<= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1)) (>= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1)))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0)))) (and (<= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1)) (>= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1)))))
+(assert (or (not (and (<= (+ (s_count 5) (* (- 1) (s_count 6))) 0) (>= (+ (s_count 5) (* (- 1) (s_count 6))) 0))) (<= (+ (s_count 5) (* (- 1) (s_count 6))) 0)))
+(assert (or (not (and (<= (+ (s_count 5) (* (- 1) (s_count 6))) 0) (>= (+ (s_count 5) (* (- 1) (s_count 6))) 0))) (>= (+ (s_count 5) (* (- 1) (s_count 6))) 0)))
+(assert (or (not (<= (+ (s_count 5) (* (- 1) (s_count 6))) 0)) (not (>= (+ (s_count 5) (* (- 1) (s_count 6))) 0)) (and (<= (+ (s_count 5) (* (- 1) (s_count 6))) 0) (>= (+ (s_count 5) (* (- 1) (s_count 6))) 0))))
+(assert (or (and (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ s (* (- 1) (format 7))) 0) (>= (+ s (* (- 1) (format 7))) 0))) (and (<= (+ (s_count 5) (* (- 1) (s_count 6))) 0) (>= (+ (s_count 5) (* (- 1) (s_count 6))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0)))) (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0)))) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0))) (not (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0)))))
+(assert (or (not (and (<= (+ (s_count 6) (* (- 1) (s_count 7))) (- 1)) (>= (+ (s_count 6) (* (- 1) (s_count 7))) (- 1)))) (<= (+ (s_count 6) (* (- 1) (s_count 7))) (- 1))))
+(assert (or (not (and (<= (+ (s_count 6) (* (- 1) (s_count 7))) (- 1)) (>= (+ (s_count 6) (* (- 1) (s_count 7))) (- 1)))) (>= (+ (s_count 6) (* (- 1) (s_count 7))) (- 1))))
+(assert (or (not (<= (+ (s_count 6) (* (- 1) (s_count 7))) (- 1))) (not (>= (+ (s_count 6) (* (- 1) (s_count 7))) (- 1))) (and (<= (+ (s_count 6) (* (- 1) (s_count 7))) (- 1)) (>= (+ (s_count 6) (* (- 1) (s_count 7))) (- 1)))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0)))) (and (<= (+ (s_count 6) (* (- 1) (s_count 7))) (- 1)) (>= (+ (s_count 6) (* (- 1) (s_count 7))) (- 1)))))
+(assert (or (not (and (<= (+ (s_count 6) (* (- 1) (s_count 7))) 0) (>= (+ (s_count 6) (* (- 1) (s_count 7))) 0))) (<= (+ (s_count 6) (* (- 1) (s_count 7))) 0)))
+(assert (or (not (and (<= (+ (s_count 6) (* (- 1) (s_count 7))) 0) (>= (+ (s_count 6) (* (- 1) (s_count 7))) 0))) (>= (+ (s_count 6) (* (- 1) (s_count 7))) 0)))
+(assert (or (not (<= (+ (s_count 6) (* (- 1) (s_count 7))) 0)) (not (>= (+ (s_count 6) (* (- 1) (s_count 7))) 0)) (and (<= (+ (s_count 6) (* (- 1) (s_count 7))) 0) (>= (+ (s_count 6) (* (- 1) (s_count 7))) 0))))
+(assert (or (and (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ s (* (- 1) (format 8))) 0) (>= (+ s (* (- 1) (format 8))) 0))) (and (<= (+ (s_count 6) (* (- 1) (s_count 7))) 0) (>= (+ (s_count 6) (* (- 1) (s_count 7))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0)))) (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0)))) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0))) (not (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0)))))
+(assert (or (not (and (<= (+ (s_count 7) (* (- 1) (s_count 8))) (- 1)) (>= (+ (s_count 7) (* (- 1) (s_count 8))) (- 1)))) (<= (+ (s_count 7) (* (- 1) (s_count 8))) (- 1))))
+(assert (or (not (and (<= (+ (s_count 7) (* (- 1) (s_count 8))) (- 1)) (>= (+ (s_count 7) (* (- 1) (s_count 8))) (- 1)))) (>= (+ (s_count 7) (* (- 1) (s_count 8))) (- 1))))
+(assert (or (not (<= (+ (s_count 7) (* (- 1) (s_count 8))) (- 1))) (not (>= (+ (s_count 7) (* (- 1) (s_count 8))) (- 1))) (and (<= (+ (s_count 7) (* (- 1) (s_count 8))) (- 1)) (>= (+ (s_count 7) (* (- 1) (s_count 8))) (- 1)))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0)))) (and (<= (+ (s_count 7) (* (- 1) (s_count 8))) (- 1)) (>= (+ (s_count 7) (* (- 1) (s_count 8))) (- 1)))))
+(assert (or (not (and (<= (+ (s_count 7) (* (- 1) (s_count 8))) 0) (>= (+ (s_count 7) (* (- 1) (s_count 8))) 0))) (<= (+ (s_count 7) (* (- 1) (s_count 8))) 0)))
+(assert (or (not (and (<= (+ (s_count 7) (* (- 1) (s_count 8))) 0) (>= (+ (s_count 7) (* (- 1) (s_count 8))) 0))) (>= (+ (s_count 7) (* (- 1) (s_count 8))) 0)))
+(assert (or (not (<= (+ (s_count 7) (* (- 1) (s_count 8))) 0)) (not (>= (+ (s_count 7) (* (- 1) (s_count 8))) 0)) (and (<= (+ (s_count 7) (* (- 1) (s_count 8))) 0) (>= (+ (s_count 7) (* (- 1) (s_count 8))) 0))))
+(assert (or (and (and (<= (+ percent (* (- 1) (format 8))) 0) (>= (+ percent (* (- 1) (format 8))) 0)) (and (<= (+ s (* (- 1) (format 9))) 0) (>= (+ s (* (- 1) (format 9))) 0))) (and (<= (+ (s_count 7) (* (- 1) (s_count 8))) 0) (>= (+ (s_count 7) (* (- 1) (s_count 8))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0)))) (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0)))) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0))) (not (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (and (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0)))))
+(assert (or (not (and (<= (+ (s_count 8) (* (- 1) (s_count 9))) (- 1)) (>= (+ (s_count 8) (* (- 1) (s_count 9))) (- 1)))) (<= (+ (s_count 8) (* (- 1) (s_count 9))) (- 1))))
+(assert (or (not (and (<= (+ (s_count 8) (* (- 1) (s_count 9))) (- 1)) (>= (+ (s_count 8) (* (- 1) (s_count 9))) (- 1)))) (>= (+ (s_count 8) (* (- 1) (s_count 9))) (- 1))))
+(assert (or (not (<= (+ (s_count 8) (* (- 1) (s_count 9))) (- 1))) (not (>= (+ (s_count 8) (* (- 1) (s_count 9))) (- 1))) (and (<= (+ (s_count 8) (* (- 1) (s_count 9))) (- 1)) (>= (+ (s_count 8) (* (- 1) (s_count 9))) (- 1)))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0)))) (and (<= (+ (s_count 8) (* (- 1) (s_count 9))) (- 1)) (>= (+ (s_count 8) (* (- 1) (s_count 9))) (- 1)))))
+(assert (or (not (and (<= (+ (s_count 8) (* (- 1) (s_count 9))) 0) (>= (+ (s_count 8) (* (- 1) (s_count 9))) 0))) (<= (+ (s_count 8) (* (- 1) (s_count 9))) 0)))
+(assert (or (not (and (<= (+ (s_count 8) (* (- 1) (s_count 9))) 0) (>= (+ (s_count 8) (* (- 1) (s_count 9))) 0))) (>= (+ (s_count 8) (* (- 1) (s_count 9))) 0)))
+(assert (or (not (<= (+ (s_count 8) (* (- 1) (s_count 9))) 0)) (not (>= (+ (s_count 8) (* (- 1) (s_count 9))) 0)) (and (<= (+ (s_count 8) (* (- 1) (s_count 9))) 0) (>= (+ (s_count 8) (* (- 1) (s_count 9))) 0))))
+(assert (or (and (and (<= (+ percent (* (- 1) (format 9))) 0) (>= (+ percent (* (- 1) (format 9))) 0)) (and (<= (+ s (* (- 1) (format 10))) 0) (>= (+ s (* (- 1) (format 10))) 0))) (and (<= (+ (s_count 8) (* (- 1) (s_count 9))) 0) (>= (+ (s_count 8) (* (- 1) (s_count 9))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0)))) (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0)))) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0))) (not (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (and (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0)))))
+(assert (or (not (and (<= (+ (s_count 9) (* (- 1) (s_count 10))) (- 1)) (>= (+ (s_count 9) (* (- 1) (s_count 10))) (- 1)))) (<= (+ (s_count 9) (* (- 1) (s_count 10))) (- 1))))
+(assert (or (not (and (<= (+ (s_count 9) (* (- 1) (s_count 10))) (- 1)) (>= (+ (s_count 9) (* (- 1) (s_count 10))) (- 1)))) (>= (+ (s_count 9) (* (- 1) (s_count 10))) (- 1))))
+(assert (or (not (<= (+ (s_count 9) (* (- 1) (s_count 10))) (- 1))) (not (>= (+ (s_count 9) (* (- 1) (s_count 10))) (- 1))) (and (<= (+ (s_count 9) (* (- 1) (s_count 10))) (- 1)) (>= (+ (s_count 9) (* (- 1) (s_count 10))) (- 1)))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0)))) (and (<= (+ (s_count 9) (* (- 1) (s_count 10))) (- 1)) (>= (+ (s_count 9) (* (- 1) (s_count 10))) (- 1)))))
+(assert (or (not (and (<= (+ (s_count 9) (* (- 1) (s_count 10))) 0) (>= (+ (s_count 9) (* (- 1) (s_count 10))) 0))) (<= (+ (s_count 9) (* (- 1) (s_count 10))) 0)))
+(assert (or (not (and (<= (+ (s_count 9) (* (- 1) (s_count 10))) 0) (>= (+ (s_count 9) (* (- 1) (s_count 10))) 0))) (>= (+ (s_count 9) (* (- 1) (s_count 10))) 0)))
+(assert (or (not (<= (+ (s_count 9) (* (- 1) (s_count 10))) 0)) (not (>= (+ (s_count 9) (* (- 1) (s_count 10))) 0)) (and (<= (+ (s_count 9) (* (- 1) (s_count 10))) 0) (>= (+ (s_count 9) (* (- 1) (s_count 10))) 0))))
+(assert (or (and (and (<= (+ percent (* (- 1) (format 10))) 0) (>= (+ percent (* (- 1) (format 10))) 0)) (and (<= (+ s (* (- 1) (format 11))) 0) (>= (+ s (* (- 1) (format 11))) 0))) (and (<= (+ (s_count 9) (* (- 1) (s_count 10))) 0) (>= (+ (s_count 9) (* (- 1) (s_count 10))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0)))) (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0)))) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0))) (not (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (and (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0)))))
+(assert (or (not (and (<= (+ (s_count 10) (* (- 1) (s_count 11))) (- 1)) (>= (+ (s_count 10) (* (- 1) (s_count 11))) (- 1)))) (<= (+ (s_count 10) (* (- 1) (s_count 11))) (- 1))))
+(assert (or (not (and (<= (+ (s_count 10) (* (- 1) (s_count 11))) (- 1)) (>= (+ (s_count 10) (* (- 1) (s_count 11))) (- 1)))) (>= (+ (s_count 10) (* (- 1) (s_count 11))) (- 1))))
+(assert (or (not (<= (+ (s_count 10) (* (- 1) (s_count 11))) (- 1))) (not (>= (+ (s_count 10) (* (- 1) (s_count 11))) (- 1))) (and (<= (+ (s_count 10) (* (- 1) (s_count 11))) (- 1)) (>= (+ (s_count 10) (* (- 1) (s_count 11))) (- 1)))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0)))) (and (<= (+ (s_count 10) (* (- 1) (s_count 11))) (- 1)) (>= (+ (s_count 10) (* (- 1) (s_count 11))) (- 1)))))
+(assert (or (not (and (<= (+ (s_count 10) (* (- 1) (s_count 11))) 0) (>= (+ (s_count 10) (* (- 1) (s_count 11))) 0))) (<= (+ (s_count 10) (* (- 1) (s_count 11))) 0)))
+(assert (or (not (and (<= (+ (s_count 10) (* (- 1) (s_count 11))) 0) (>= (+ (s_count 10) (* (- 1) (s_count 11))) 0))) (>= (+ (s_count 10) (* (- 1) (s_count 11))) 0)))
+(assert (or (not (<= (+ (s_count 10) (* (- 1) (s_count 11))) 0)) (not (>= (+ (s_count 10) (* (- 1) (s_count 11))) 0)) (and (<= (+ (s_count 10) (* (- 1) (s_count 11))) 0) (>= (+ (s_count 10) (* (- 1) (s_count 11))) 0))))
+(assert (or (and (and (<= (+ percent (* (- 1) (format 11))) 0) (>= (+ percent (* (- 1) (format 11))) 0)) (and (<= (+ s (* (- 1) (format 12))) 0) (>= (+ s (* (- 1) (format 12))) 0))) (and (<= (+ (s_count 10) (* (- 1) (s_count 11))) 0) (>= (+ (s_count 10) (* (- 1) (s_count 11))) 0))))
+(assert (or (not (and (<= (+ s (* (- 1) (format 13))) 0) (>= (+ s (* (- 1) (format 13))) 0))) (<= (+ s (* (- 1) (format 13))) 0)))
+(assert (or (not (and (<= (+ s (* (- 1) (format 13))) 0) (>= (+ s (* (- 1) (format 13))) 0))) (>= (+ s (* (- 1) (format 13))) 0)))
+(assert (or (not (<= (+ s (* (- 1) (format 13))) 0)) (not (>= (+ s (* (- 1) (format 13))) 0)) (and (<= (+ s (* (- 1) (format 13))) 0) (>= (+ s (* (- 1) (format 13))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 13))) 0) (>= (+ s (* (- 1) (format 13))) 0)))) (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 13))) 0) (>= (+ s (* (- 1) (format 13))) 0)))) (and (<= (+ s (* (- 1) (format 13))) 0) (>= (+ s (* (- 1) (format 13))) 0))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0))) (not (and (<= (+ s (* (- 1) (format 13))) 0) (>= (+ s (* (- 1) (format 13))) 0))) (and (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 13))) 0) (>= (+ s (* (- 1) (format 13))) 0)))))
+(assert (or (not (and (<= (+ (s_count 11) (* (- 1) (s_count 12))) (- 1)) (>= (+ (s_count 11) (* (- 1) (s_count 12))) (- 1)))) (<= (+ (s_count 11) (* (- 1) (s_count 12))) (- 1))))
+(assert (or (not (and (<= (+ (s_count 11) (* (- 1) (s_count 12))) (- 1)) (>= (+ (s_count 11) (* (- 1) (s_count 12))) (- 1)))) (>= (+ (s_count 11) (* (- 1) (s_count 12))) (- 1))))
+(assert (or (not (<= (+ (s_count 11) (* (- 1) (s_count 12))) (- 1))) (not (>= (+ (s_count 11) (* (- 1) (s_count 12))) (- 1))) (and (<= (+ (s_count 11) (* (- 1) (s_count 12))) (- 1)) (>= (+ (s_count 11) (* (- 1) (s_count 12))) (- 1)))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 13))) 0) (>= (+ s (* (- 1) (format 13))) 0)))) (and (<= (+ (s_count 11) (* (- 1) (s_count 12))) (- 1)) (>= (+ (s_count 11) (* (- 1) (s_count 12))) (- 1)))))
+(assert (or (not (and (<= (+ (s_count 11) (* (- 1) (s_count 12))) 0) (>= (+ (s_count 11) (* (- 1) (s_count 12))) 0))) (<= (+ (s_count 11) (* (- 1) (s_count 12))) 0)))
+(assert (or (not (and (<= (+ (s_count 11) (* (- 1) (s_count 12))) 0) (>= (+ (s_count 11) (* (- 1) (s_count 12))) 0))) (>= (+ (s_count 11) (* (- 1) (s_count 12))) 0)))
+(assert (or (not (<= (+ (s_count 11) (* (- 1) (s_count 12))) 0)) (not (>= (+ (s_count 11) (* (- 1) (s_count 12))) 0)) (and (<= (+ (s_count 11) (* (- 1) (s_count 12))) 0) (>= (+ (s_count 11) (* (- 1) (s_count 12))) 0))))
+(assert (or (and (and (<= (+ percent (* (- 1) (format 12))) 0) (>= (+ percent (* (- 1) (format 12))) 0)) (and (<= (+ s (* (- 1) (format 13))) 0) (>= (+ s (* (- 1) (format 13))) 0))) (and (<= (+ (s_count 11) (* (- 1) (s_count 12))) 0) (>= (+ (s_count 11) (* (- 1) (s_count 12))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0)))) (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0)))) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0))) (not (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))) (and (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0)))))
+(assert (or (not (and (<= (x_count 0) 1) (>= (x_count 0) 1))) (<= (x_count 0) 1)))
+(assert (or (not (and (<= (x_count 0) 1) (>= (x_count 0) 1))) (>= (x_count 0) 1)))
+(assert (or (not (<= (x_count 0) 1)) (not (>= (x_count 0) 1)) (and (<= (x_count 0) 1) (>= (x_count 0) 1))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0)))) (and (<= (x_count 0) 1) (>= (x_count 0) 1))))
+(assert (or (not (and (<= (x_count 0) 0) (>= (x_count 0) 0))) (<= (x_count 0) 0)))
+(assert (or (not (and (<= (x_count 0) 0) (>= (x_count 0) 0))) (>= (x_count 0) 0)))
+(assert (or (not (<= (x_count 0) 0)) (not (>= (x_count 0) 0)) (and (<= (x_count 0) 0) (>= (x_count 0) 0))))
+(assert (or (and (and (<= (+ percent (* (- 1) (format 0))) 0) (>= (+ percent (* (- 1) (format 0))) 0)) (and (<= (+ x (* (- 1) (format 1))) 0) (>= (+ x (* (- 1) (format 1))) 0))) (and (<= (x_count 0) 0) (>= (x_count 0) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0)))) (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0)))) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0))) (not (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))) (and (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0)))))
+(assert (or (not (and (<= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1)) (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1)))) (<= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))))
+(assert (or (not (and (<= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1)) (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1)))) (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))))
+(assert (or (not (<= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))) (and (<= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1)) (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1)))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0)))) (and (<= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1)) (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1)))))
+(assert (or (not (and (<= (+ (x_count 0) (* (- 1) (x_count 1))) 0) (>= (+ (x_count 0) (* (- 1) (x_count 1))) 0))) (<= (+ (x_count 0) (* (- 1) (x_count 1))) 0)))
+(assert (or (not (and (<= (+ (x_count 0) (* (- 1) (x_count 1))) 0) (>= (+ (x_count 0) (* (- 1) (x_count 1))) 0))) (>= (+ (x_count 0) (* (- 1) (x_count 1))) 0)))
+(assert (or (not (<= (+ (x_count 0) (* (- 1) (x_count 1))) 0)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) 0)) (and (<= (+ (x_count 0) (* (- 1) (x_count 1))) 0) (>= (+ (x_count 0) (* (- 1) (x_count 1))) 0))))
+(assert (or (and (and (<= (+ percent (* (- 1) (format 1))) 0) (>= (+ percent (* (- 1) (format 1))) 0)) (and (<= (+ x (* (- 1) (format 2))) 0) (>= (+ x (* (- 1) (format 2))) 0))) (and (<= (+ (x_count 0) (* (- 1) (x_count 1))) 0) (>= (+ (x_count 0) (* (- 1) (x_count 1))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0)))) (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0)))) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0))) (not (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))) (and (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0)))))
+(assert (or (not (and (<= (+ (x_count 1) (* (- 1) (x_count 2))) (- 1)) (>= (+ (x_count 1) (* (- 1) (x_count 2))) (- 1)))) (<= (+ (x_count 1) (* (- 1) (x_count 2))) (- 1))))
+(assert (or (not (and (<= (+ (x_count 1) (* (- 1) (x_count 2))) (- 1)) (>= (+ (x_count 1) (* (- 1) (x_count 2))) (- 1)))) (>= (+ (x_count 1) (* (- 1) (x_count 2))) (- 1))))
+(assert (or (not (<= (+ (x_count 1) (* (- 1) (x_count 2))) (- 1))) (not (>= (+ (x_count 1) (* (- 1) (x_count 2))) (- 1))) (and (<= (+ (x_count 1) (* (- 1) (x_count 2))) (- 1)) (>= (+ (x_count 1) (* (- 1) (x_count 2))) (- 1)))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0)))) (and (<= (+ (x_count 1) (* (- 1) (x_count 2))) (- 1)) (>= (+ (x_count 1) (* (- 1) (x_count 2))) (- 1)))))
+(assert (or (not (and (<= (+ (x_count 1) (* (- 1) (x_count 2))) 0) (>= (+ (x_count 1) (* (- 1) (x_count 2))) 0))) (<= (+ (x_count 1) (* (- 1) (x_count 2))) 0)))
+(assert (or (not (and (<= (+ (x_count 1) (* (- 1) (x_count 2))) 0) (>= (+ (x_count 1) (* (- 1) (x_count 2))) 0))) (>= (+ (x_count 1) (* (- 1) (x_count 2))) 0)))
+(assert (or (not (<= (+ (x_count 1) (* (- 1) (x_count 2))) 0)) (not (>= (+ (x_count 1) (* (- 1) (x_count 2))) 0)) (and (<= (+ (x_count 1) (* (- 1) (x_count 2))) 0) (>= (+ (x_count 1) (* (- 1) (x_count 2))) 0))))
+(assert (or (and (and (<= (+ percent (* (- 1) (format 2))) 0) (>= (+ percent (* (- 1) (format 2))) 0)) (and (<= (+ x (* (- 1) (format 3))) 0) (>= (+ x (* (- 1) (format 3))) 0))) (and (<= (+ (x_count 1) (* (- 1) (x_count 2))) 0) (>= (+ (x_count 1) (* (- 1) (x_count 2))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0)))) (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0)))) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0))) (not (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))) (and (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0)))))
+(assert (or (not (and (<= (+ (x_count 2) (* (- 1) (x_count 3))) (- 1)) (>= (+ (x_count 2) (* (- 1) (x_count 3))) (- 1)))) (<= (+ (x_count 2) (* (- 1) (x_count 3))) (- 1))))
+(assert (or (not (and (<= (+ (x_count 2) (* (- 1) (x_count 3))) (- 1)) (>= (+ (x_count 2) (* (- 1) (x_count 3))) (- 1)))) (>= (+ (x_count 2) (* (- 1) (x_count 3))) (- 1))))
+(assert (or (not (<= (+ (x_count 2) (* (- 1) (x_count 3))) (- 1))) (not (>= (+ (x_count 2) (* (- 1) (x_count 3))) (- 1))) (and (<= (+ (x_count 2) (* (- 1) (x_count 3))) (- 1)) (>= (+ (x_count 2) (* (- 1) (x_count 3))) (- 1)))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0)))) (and (<= (+ (x_count 2) (* (- 1) (x_count 3))) (- 1)) (>= (+ (x_count 2) (* (- 1) (x_count 3))) (- 1)))))
+(assert (or (not (and (<= (+ (x_count 2) (* (- 1) (x_count 3))) 0) (>= (+ (x_count 2) (* (- 1) (x_count 3))) 0))) (<= (+ (x_count 2) (* (- 1) (x_count 3))) 0)))
+(assert (or (not (and (<= (+ (x_count 2) (* (- 1) (x_count 3))) 0) (>= (+ (x_count 2) (* (- 1) (x_count 3))) 0))) (>= (+ (x_count 2) (* (- 1) (x_count 3))) 0)))
+(assert (or (not (<= (+ (x_count 2) (* (- 1) (x_count 3))) 0)) (not (>= (+ (x_count 2) (* (- 1) (x_count 3))) 0)) (and (<= (+ (x_count 2) (* (- 1) (x_count 3))) 0) (>= (+ (x_count 2) (* (- 1) (x_count 3))) 0))))
+(assert (or (and (and (<= (+ percent (* (- 1) (format 3))) 0) (>= (+ percent (* (- 1) (format 3))) 0)) (and (<= (+ x (* (- 1) (format 4))) 0) (>= (+ x (* (- 1) (format 4))) 0))) (and (<= (+ (x_count 2) (* (- 1) (x_count 3))) 0) (>= (+ (x_count 2) (* (- 1) (x_count 3))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0)))) (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0)))) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0))) (not (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))) (and (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0)))))
+(assert (or (not (and (<= (+ (x_count 3) (* (- 1) (x_count 4))) (- 1)) (>= (+ (x_count 3) (* (- 1) (x_count 4))) (- 1)))) (<= (+ (x_count 3) (* (- 1) (x_count 4))) (- 1))))
+(assert (or (not (and (<= (+ (x_count 3) (* (- 1) (x_count 4))) (- 1)) (>= (+ (x_count 3) (* (- 1) (x_count 4))) (- 1)))) (>= (+ (x_count 3) (* (- 1) (x_count 4))) (- 1))))
+(assert (or (not (<= (+ (x_count 3) (* (- 1) (x_count 4))) (- 1))) (not (>= (+ (x_count 3) (* (- 1) (x_count 4))) (- 1))) (and (<= (+ (x_count 3) (* (- 1) (x_count 4))) (- 1)) (>= (+ (x_count 3) (* (- 1) (x_count 4))) (- 1)))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0)))) (and (<= (+ (x_count 3) (* (- 1) (x_count 4))) (- 1)) (>= (+ (x_count 3) (* (- 1) (x_count 4))) (- 1)))))
+(assert (or (not (and (<= (+ (x_count 3) (* (- 1) (x_count 4))) 0) (>= (+ (x_count 3) (* (- 1) (x_count 4))) 0))) (<= (+ (x_count 3) (* (- 1) (x_count 4))) 0)))
+(assert (or (not (and (<= (+ (x_count 3) (* (- 1) (x_count 4))) 0) (>= (+ (x_count 3) (* (- 1) (x_count 4))) 0))) (>= (+ (x_count 3) (* (- 1) (x_count 4))) 0)))
+(assert (or (not (<= (+ (x_count 3) (* (- 1) (x_count 4))) 0)) (not (>= (+ (x_count 3) (* (- 1) (x_count 4))) 0)) (and (<= (+ (x_count 3) (* (- 1) (x_count 4))) 0) (>= (+ (x_count 3) (* (- 1) (x_count 4))) 0))))
+(assert (or (and (and (<= (+ percent (* (- 1) (format 4))) 0) (>= (+ percent (* (- 1) (format 4))) 0)) (and (<= (+ x (* (- 1) (format 5))) 0) (>= (+ x (* (- 1) (format 5))) 0))) (and (<= (+ (x_count 3) (* (- 1) (x_count 4))) 0) (>= (+ (x_count 3) (* (- 1) (x_count 4))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0)))) (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0)))) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0))) (not (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0))) (and (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0)))))
+(assert (or (not (and (<= (+ (x_count 4) (* (- 1) (x_count 5))) (- 1)) (>= (+ (x_count 4) (* (- 1) (x_count 5))) (- 1)))) (<= (+ (x_count 4) (* (- 1) (x_count 5))) (- 1))))
+(assert (or (not (and (<= (+ (x_count 4) (* (- 1) (x_count 5))) (- 1)) (>= (+ (x_count 4) (* (- 1) (x_count 5))) (- 1)))) (>= (+ (x_count 4) (* (- 1) (x_count 5))) (- 1))))
+(assert (or (not (<= (+ (x_count 4) (* (- 1) (x_count 5))) (- 1))) (not (>= (+ (x_count 4) (* (- 1) (x_count 5))) (- 1))) (and (<= (+ (x_count 4) (* (- 1) (x_count 5))) (- 1)) (>= (+ (x_count 4) (* (- 1) (x_count 5))) (- 1)))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0)))) (and (<= (+ (x_count 4) (* (- 1) (x_count 5))) (- 1)) (>= (+ (x_count 4) (* (- 1) (x_count 5))) (- 1)))))
+(assert (or (not (and (<= (+ (x_count 4) (* (- 1) (x_count 5))) 0) (>= (+ (x_count 4) (* (- 1) (x_count 5))) 0))) (<= (+ (x_count 4) (* (- 1) (x_count 5))) 0)))
+(assert (or (not (and (<= (+ (x_count 4) (* (- 1) (x_count 5))) 0) (>= (+ (x_count 4) (* (- 1) (x_count 5))) 0))) (>= (+ (x_count 4) (* (- 1) (x_count 5))) 0)))
+(assert (or (not (<= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (not (>= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (and (<= (+ (x_count 4) (* (- 1) (x_count 5))) 0) (>= (+ (x_count 4) (* (- 1) (x_count 5))) 0))))
+(assert (or (and (and (<= (+ percent (* (- 1) (format 5))) 0) (>= (+ percent (* (- 1) (format 5))) 0)) (and (<= (+ x (* (- 1) (format 6))) 0) (>= (+ x (* (- 1) (format 6))) 0))) (and (<= (+ (x_count 4) (* (- 1) (x_count 5))) 0) (>= (+ (x_count 4) (* (- 1) (x_count 5))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0)))) (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0)))) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))))
+(assert (or (not (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0))) (not (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))) (and (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0)))))
+(assert (or (not (and (<= (+ (x_count 5) (* (- 1) (x_count 6))) (- 1)) (>= (+ (x_count 5) (* (- 1) (x_count 6))) (- 1)))) (<= (+ (x_count 5) (* (- 1) (x_count 6))) (- 1))))
+(assert (or (not (and (<= (+ (x_count 5) (* (- 1) (x_count 6))) (- 1)) (>= (+ (x_count 5) (* (- 1) (x_count 6))) (- 1)))) (>= (+ (x_count 5) (* (- 1) (x_count 6))) (- 1))))
+(assert (or (not (<= (+ (x_count 5) (* (- 1) (x_count 6))) (- 1))) (not (>= (+ (x_count 5) (* (- 1) (x_count 6))) (- 1))) (and (<= (+ (x_count 5) (* (- 1) (x_count 6))) (- 1)) (>= (+ (x_count 5) (* (- 1) (x_count 6))) (- 1)))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0)))) (and (<= (+ (x_count 5) (* (- 1) (x_count 6))) (- 1)) (>= (+ (x_count 5) (* (- 1) (x_count 6))) (- 1)))))
+(assert (or (not (and (<= (+ (x_count 5) (* (- 1) (x_count 6))) 0) (>= (+ (x_count 5) (* (- 1) (x_count 6))) 0))) (<= (+ (x_count 5) (* (- 1) (x_count 6))) 0)))
+(assert (or (not (and (<= (+ (x_count 5) (* (- 1) (x_count 6))) 0) (>= (+ (x_count 5) (* (- 1) (x_count 6))) 0))) (>= (+ (x_count 5) (* (- 1) (x_count 6))) 0)))
+(assert (or (not (<= (+ (x_count 5) (* (- 1) (x_count 6))) 0)) (not (>= (+ (x_count 5) (* (- 1) (x_count 6))) 0)) (and (<= (+ (x_count 5) (* (- 1) (x_count 6))) 0) (>= (+ (x_count 5) (* (- 1) (x_count 6))) 0))))
+(assert (or (and (and (<= (+ percent (* (- 1) (format 6))) 0) (>= (+ percent (* (- 1) (format 6))) 0)) (and (<= (+ x (* (- 1) (format 7))) 0) (>= (+ x (* (- 1) (format 7))) 0))) (and (<= (+ (x_count 5) (* (- 1) (x_count 6))) 0) (>= (+ (x_count 5) (* (- 1) (x_count 6))) 0))))
+(assert (or (not (and (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0)) (and (<= (+ x (* (- 1) (format 8))) 0) (>= (+ x (* (- 1) (format 8))) 0)))) (and (<= (+ percent (* (- 1) (format 7))) 0) (>= (+ percent (* (- 1) (format 7))) 0))))
+
+
+
+(assert (or (not (= (+ fmt0 (* (- 1) fmt1)) (- 11))) (not (>= (+ (x_count 8) (* (- 1) (x_count 9))) 0)) (not (<= (+ (x_count 8) (* (- 1) (x_count 9))) 0)) (not (>= (+ (x_count 7) (* (- 1) (x_count 8))) 0)) (not (<= (+ (x_count 7) (* (- 1) (x_count 8))) 0)) (not (>= (+ (x_count 6) (* (- 1) (x_count 7))) 0)) (not (<= (+ (x_count 6) (* (- 1) (x_count 7))) 0)) (not (>= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (not (<= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (not (>= (+ (x_count 2) (* (- 1 [...]
+(assert (or (not (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))) (not (<= (x_count 0) 1)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (>= distance 18)) (not (>= (+ arg1 (* (- 1) fmt0)) 0)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (<= (s_count 0) 1)) (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) 0)) (not (>= (+ [...]
+(assert (or (not (<= (+ x (* (- 1) (format 10))) 0)) (not (>= x 120)) (not (<= (format 10) 6))))
+(assert (or (= (+ (s_count 1) (* (- 1) (s_count 3))) 0) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (<= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (<= (+ (s_count 1) (* (- 1) (s_count 2))) 0))))
+(assert (or (not (= (+ fmt0 (* (- 1) fmt1)) (- 11))) (not (>= (+ (s_count 8) (* (- 1) (s_count 9))) 0)) (not (<= (+ (s_count 8) (* (- 1) (s_count 9))) 0)) (not (>= (+ (s_count 7) (* (- 1) (s_count 8))) 0)) (not (<= (+ (s_count 7) (* (- 1) (s_count 8))) 0)) (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 7))) 0)))
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 7))) 0)) (not (>= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1))) (not (>= (+ (s_count 6) (* (- 1) (s_count 7))) (- 1))) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (<= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (<= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (>= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1))) (<= (+ (s_count 3) (* (- 1) (s_co [...]
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 7))) 0)) (not (>= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1))) (not (>= (+ (s_count 6) (* (- 1) (s_count 7))) (- 1))) (not (= (+ (s_count 1) (* (- 1) (s_count 3))) 0)) (<= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1)) (not (>= (+ (s_count 3) (* (- 1) (s_count 4))) 0)) (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) 0)) (not (<= (s_count 0) 0)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= (+ arg1 (*  [...]
+(assert (or (not (<= (+ x (* (- 1) (format 2))) 0)) (not (>= x 120)) (not (<= (format 2) 6))))
+(assert (or (not (<= (+ x (* (- 1) (format 1))) 0)) (not (>= x 120)) (not (<= percent 37)) (not (>= (+ percent (* (- 1) (format 1))) 0))))
+(assert (or (not (>= (+ percent (* (- 1) (format 1))) 0)) (not (<= percent 37)) (not (>= s 115)) (not (<= (+ s (* (- 1) (format 1))) 0))))
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 7))) 0)) (not (>= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1))) (not (>= (+ (s_count 6) (* (- 1) (s_count 7))) (- 1))) (not (= (+ (s_count 1) (* (- 1) (s_count 3))) 0)) (<= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1)) (not (>= (+ (s_count 3) (* (- 1) (s_count 4))) 0)) (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) 0)) (not (<= (s_count 0) 0)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= (+ arg1 (*  [...]
+(assert (or (not (<= (+ x (* (- 1) (format 2))) 0)) (not (>= x 120)) (not (>= (+ adr_lo (* (- 1) (format arg1))) 0)) (not (<= adr_lo 3)) (not (= (+ (format arg1) (* (- 1) (format 2))) 0))))
+(assert (or (not (<= (+ x (* (- 1) (format 2))) 0)) (not (>= x 120)) (not (<= s 115)) (not (>= (+ s (* (- 1) (format 2))) 0))))
+(assert (or (= (+ (format 2) (* (- 1) (format (+ 1 fmt1)))) 0) (not (>= (+ (format 2) (* (- 1) (format (+ 1 fmt1)))) 0)) (not (<= (+ (format 2) (* (- 1) (format (+ 1 fmt1)))) 0))))
+(assert (or (not (>= (+ s (* (- 1) (format 2))) 0)) (not (<= (+ s (* (- 1) (format (+ 1 fmt1)))) 0)) (<= (+ (format 2) (* (- 1) (format (+ 1 fmt1)))) 0)))
+(assert (or (not (<= (+ s (* (- 1) (format 2))) 0)) (not (>= (+ s (* (- 1) (format (+ 1 fmt1)))) 0)) (>= (+ (format 2) (* (- 1) (format (+ 1 fmt1)))) 0)))
+(assert (or (not (= arg1 2)) (= (+ (format arg1) (* (- 1) (format 2))) 0)))
+(assert (or (not (<= (+ s (* (- 1) (format 2))) 0)) (not (>= s 115)) (not (>= (+ adr_lo (* (- 1) (format arg1))) 0)) (not (<= adr_lo 3)) (not (= (+ (format arg1) (* (- 1) (format 2))) 0))))
+(assert (or (not (<= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (<= distance 18)) (not (>= distance 18)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (<= (+ arg1 (* (- 1) fmt0)) 3)) (not (>= (+ arg1 (* (- 1) fmt0)) 3))))
+(assert (or (not (<= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (<= distance 18)) (not (>= distance 18)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (<= (+ arg1 (* (- 1) fmt0)) 4)) (not (>= (+ arg1 (* (- 1) fmt0)) 4))))
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 7))) 0)) (not (>= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1))) (not (>= (+ (s_count 6) (* (- 1) (s_count 7))) (- 1))) (not (= (+ (s_count 1) (* (- 1) (s_count 3))) 0)) (<= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1)) (not (>= (+ (s_count 3) (* (- 1) (s_count 4))) 0)) (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1))) (not (<= (s_count 0) 0)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= (+ arg1 [...]
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 7))) 0)) (not (>= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1))) (not (>= (+ (s_count 6) (* (- 1) (s_count 7))) (- 1))) (not (= (+ (s_count 1) (* (- 1) (s_count 3))) 0)) (<= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1)) (not (>= (+ (s_count 3) (* (- 1) (s_count 4))) 0)) (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) 0)) (not (<= (s_count 0) 1)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= (+ arg1 (*  [...]
+(assert (or (not (>= (+ s (* (- 1) (format 1))) 0)) (not (<= s 115)) (not (<= (+ x (* (- 1) (format 1))) 0)) (not (>= x 120))))
+(assert (or (= (+ fmt0 (* (- 1) fmt1)) (- 11)) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 11))) (not (<= (+ fmt0 (* (- 1) fmt1)) (- 11)))))
+(assert (or (not (<= fmt1 10)) (not (= fmt1 11))))
+(assert (or (= (+ fmt0 (* (- 1) fmt1)) (- 10)) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 10))) (not (<= (+ fmt0 (* (- 1) fmt1)) (- 10)))))
+(assert (or (not (= (+ fmt0 (* (- 1) fmt1)) (- 9))) (not (>= (+ (x_count 6) (* (- 1) (x_count 7))) 0)) (not (<= (+ (x_count 6) (* (- 1) (x_count 7))) 0)) (not (>= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (not (<= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (not (>= (+ (x_count 2) (* (- 1) (x_count 3))) 0)) (not (<= (+ (x_count 2) (* (- 1) (x_count 3))) 0)) (not (>= (+ (x_count 5) (* (- 1) (x_count 6))) 0)) (not (<= (+ (x_count 5) (* (- 1) (x_count 6))) 0)) (not (>= (+ (x_count 3) (* (- 1) [...]
+(assert (or (not (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))) (not (<= (x_count 0) 1)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (>= distance 18)) (not (>= (+ arg1 (* (- 1) fmt0)) 0)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (<= (s_count 0) 0)) (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1))) (not (> [...]
+(assert (or (= (+ fmt0 (* (- 1) fmt1)) (- 9)) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 9))) (not (<= (+ fmt0 (* (- 1) fmt1)) (- 9)))))
+(assert (or (not (>= fmt1 10)) (not (<= fmt1 9))))
+(assert (or (not (>= fmt1 10)) (not (= fmt1 9))))
+(assert (or (not (>= (+ (x_count 7) (* (- 1) (x_count 8))) 0)) (not (<= (+ (x_count 7) (* (- 1) (x_count 8))) 0)) (not (= (+ fmt0 (* (- 1) fmt1)) (- 10))) (not (>= (+ (x_count 6) (* (- 1) (x_count 7))) 0)) (not (<= (+ (x_count 6) (* (- 1) (x_count 7))) 0)) (not (>= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (not (<= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (not (>= (+ (x_count 2) (* (- 1) (x_count 3))) 0)) (not (<= (+ (x_count 2) (* (- 1) (x_count 3))) 0)) (not (>= (+ (x_count 5) (* (- 1 [...]
+(assert (or (not (<= fmt1 8)) (not (>= fmt1 9))))
+(assert (or (= (+ fmt0 (* (- 1) fmt1)) (- 8)) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 8))) (not (<= (+ fmt0 (* (- 1) fmt1)) (- 8)))))
+(assert (or (= (+ fmt0 (* (- 1) fmt1)) (- 7)) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 7))) (not (<= (+ fmt0 (* (- 1) fmt1)) (- 7)))))
+(assert (or (not (>= fmt1 7)) (not (<= fmt0 0)) (<= (+ fmt0 (* (- 1) fmt1)) (- 7))))
+(assert (or (not (<= fmt1 8)) (not (= fmt1 10))))
+(assert (or (not (<= fmt1 8)) (not (= fmt1 9))))
+(assert (or (not (>= fmt1 8)) (not (= fmt1 7))))
+(assert (or (not (>= (+ (x_count 6) (* (- 1) (x_count 7))) 0)) (not (<= (+ (x_count 6) (* (- 1) (x_count 7))) 0)) (not (= (+ fmt0 (* (- 1) fmt1)) (- 8))) (not (>= (+ (x_count 6) (* (- 1) (x_count 7))) 0)) (not (<= (+ (x_count 6) (* (- 1) (x_count 7))) 0)) (not (>= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (not (<= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (not (>= (+ (x_count 2) (* (- 1) (x_count 3))) 0)) (not (<= (+ (x_count 2) (* (- 1) (x_count 3))) 0)) (not (>= (+ (x_count 5) (* (- 1) [...]
+(assert (or (not (<= fmt1 7)) (not (= fmt1 8))))
+(assert (or (not (= (+ fmt0 (* (- 1) fmt1)) (- 7))) (not (>= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (not (<= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (not (>= (+ (x_count 2) (* (- 1) (x_count 3))) 0)) (not (<= (+ (x_count 2) (* (- 1) (x_count 3))) 0)) (not (>= (+ (x_count 3) (* (- 1) (x_count 4))) 0)) (not (<= (+ (x_count 3) (* (- 1) (x_count 4))) 0)) (not (>= (+ (x_count 1) (* (- 1) (x_count 2))) 0)) (not (<= (+ (x_count 1) (* (- 1) (x_count 2))) 0)) (= (+ (x_count (+ (- 2) (* (- 1) [...]
+(assert (or (>= fmt1 7) (not (= fmt1 7))))
+(assert (or (= fmt1 6) (not (= fmt1 6))))
+(assert (or (= (+ fmt0 (* (- 1) fmt1)) (- 6)) (not (= (+ fmt0 (* (- 1) fmt1)) (- 6)))))
+(assert (or (= fmt1 6) (not (= fmt1 6))))
+(assert (or (= fmt1 6) (<= fmt1 5) (>= fmt1 7)))
+(assert (or (= (+ fmt0 (* (- 1) fmt1)) (- 6)) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 6))) (not (<= (+ fmt0 (* (- 1) fmt1)) (- 6)))))
+(assert (or (not (>= (+ (x_count 2) (* (- 1) (x_count 3))) 0)) (not (<= (+ (x_count 2) (* (- 1) (x_count 3))) 0)) (not (>= (+ (x_count 3) (* (- 1) (x_count 4))) 0)) (not (<= (+ (x_count 3) (* (- 1) (x_count 4))) 0)) (not (>= (+ (x_count 1) (* (- 1) (x_count 2))) 0)) (not (<= (+ (x_count 1) (* (- 1) (x_count 2))) 0)) (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0) (not (= (+ fmt0 (* (- 1) fmt1)) (- 6)))))
+(assert (or (= (+ fmt0 (* (- 1) fmt1)) (- 6)) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 6))) (not (<= (+ fmt0 (* (- 1) fmt1)) (- 6)))))
+(assert (or (>= fmt1 5) (not (= fmt1 6))))
+(assert (or (= fmt1 3) (not (= fmt1 3))))
+(assert (or (= (+ arg1 (* (- 1) fmt1)) (- 1)) (not (= (+ arg1 (* (- 1) fmt1)) (- 1)))))
+(assert (or (= (+ fmt0 (* (- 1) fmt1)) (- 3)) (not (= (+ fmt0 (* (- 1) fmt1)) (- 3)))))
+(assert (or (= fmt1 3) (not (= fmt1 3))))
+(assert (or (= (+ arg1 (* (- 1) fmt1)) (- 1)) (not (= (+ arg1 (* (- 1) fmt1)) (- 1)))))
+(assert (or (= fmt1 3) (not (>= fmt1 3)) (not (<= fmt1 3))))
+(assert (or (= (+ fmt0 (* (- 1) fmt1)) (- 3)) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 3))) (not (<= (+ fmt0 (* (- 1) fmt1)) (- 3)))))
+(assert (or (<= fmt1 3) (not (<= fmt0 0)) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 3)))))
+(assert (or (= (+ arg1 (* (- 1) fmt1)) (- 1)) (not (>= (+ arg1 (* (- 1) fmt1)) (- 1))) (not (<= (+ arg1 (* (- 1) fmt1)) (- 1)))))
+(assert (or (<= (+ fmt0 (* (- 1) fmt1)) (- 4)) (not (>= (+ arg1 (* (- 1) fmt0)) 2)) (>= (+ arg1 (* (- 1) fmt1)) (- 1))))
+(assert (or (not (>= (+ fmt0 (* (- 1) fmt1)) (- 2))) (not (= (+ fmt0 (* (- 1) fmt1)) (- 3)))))
+(assert (or (>= fmt1 3) (not (= fmt1 3))))
+(assert (or (= (+ arg1 (* (- 1) fmt1)) 0) (not (= (+ arg1 (* (- 1) fmt1)) 0))))
+(assert (or (= fmt1 2) (not (= fmt1 2))))
+(assert (or (= (+ fmt0 (* (- 1) fmt1)) (- 2)) (not (= (+ fmt0 (* (- 1) fmt1)) (- 2)))))
+(assert (or (= (+ arg1 (* (- 1) fmt1)) 0) (not (= (+ arg1 (* (- 1) fmt1)) 0))))
+(assert (or (= (+ arg1 (* (- 1) fmt1)) 0) (not (>= (+ arg1 (* (- 1) fmt1)) 0)) (not (<= (+ arg1 (* (- 1) fmt1)) 0))))
+(assert (or (= (+ fmt0 (* (- 1) fmt1)) (- 2)) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 2))) (not (<= (+ fmt0 (* (- 1) fmt1)) (- 2)))))
+(assert (or (>= (+ fmt0 (* (- 1) fmt1)) (- 1)) (not (<= (+ arg1 (* (- 1) fmt0)) 2)) (<= (+ arg1 (* (- 1) fmt1)) 0)))
+(assert (or (= fmt1 2) (not (>= fmt1 2)) (not (<= fmt1 2))))
+(assert (or (not (<= (+ arg1 (* (- 1) fmt1)) 0)) (<= (+ arg1 (* (- 1) fmt0)) 1) (>= fmt1 2) (not (>= fmt0 0))))
+(assert (or (not (<= (+ arg1 (* (- 1) fmt1)) (- 1))) (not (>= (+ arg1 (* (- 1) fmt1)) 0))))
+(assert (or (not (<= (+ arg1 (* (- 1) fmt1)) (- 1))) (not (= (+ arg1 (* (- 1) fmt1)) 0))))
+(assert (or (not (<= (+ fmt0 (* (- 1) fmt1)) (- 3))) (not (= (+ fmt0 (* (- 1) fmt1)) (- 2)))))
+(assert (or (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0) (not (= (+ fmt0 (* (- 1) fmt1)) (- 3)))))
+(assert (or (= (+ fmt0 (* (- 1) fmt1)) (- 3)) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 3))) (not (<= (+ fmt0 (* (- 1) fmt1)) (- 3)))))
+(assert (or (not (<= fmt1 2)) (not (>= fmt1 3))))
+(assert (or (not (>= (+ arg1 (* (- 1) fmt1)) 0)) (not (= (+ arg1 (* (- 1) fmt1)) (- 1)))))
+(assert (or (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) 0)) (not (<= (+ (x_count 0) (* (- 1) (x_count 1))) 0)) (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0) (not (= (+ fmt0 (* (- 1) fmt1)) (- 2)))))
+(assert (or (= (+ fmt0 (* (- 1) fmt1)) (- 2)) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 2))) (not (<= (+ fmt0 (* (- 1) fmt1)) (- 2)))))
+(assert (or (not (>= fmt0 0)) (not (<= fmt1 3)) (>= (+ fmt0 (* (- 1) fmt1)) (- 3))))
+(assert (or (not (>= fmt1 5)) (not (= fmt1 2))))
+(assert (or (not (>= fmt1 5)) (not (= fmt1 3))))
+(assert (or (<= (+ arg1 (* (- 1) fmt0)) 2) (not (>= fmt0 0)) (not (<= arg1 2))))
+(assert (or (<= (+ fmt0 (* (- 1) fmt1)) (- 6)) (not (<= (+ arg1 (* (- 1) fmt1)) 0)) (<= (+ arg1 (* (- 1) fmt0)) 5)))
+(assert (or (<= arg1 2) (not (= arg1 2))))
+(assert (or (not (<= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (<= distance 18)) (not (>= distance 18)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (<= (+ arg1 (* (- 1) fmt0)) 5)) (not (>= (+ arg1 (* (- 1) fmt0)) 5))))
+(assert (or (<= (+ arg1 (* (- 1) fmt1)) 0) (not (= (+ arg1 (* (- 1) fmt1)) 0))))
+(assert (or (<= (+ arg1 (* (- 1) fmt0)) 8) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (<= fmt_length 13)) (<= (+ arg0 (* (- 1) arg1) distance fmt_length) 4)))
+(assert (or (not (<= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (<= distance 18)) (not (>= distance 18)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (<= (+ arg1 (* (- 1) fmt0)) 7)) (not (>= (+ arg1 (* (- 1) fmt0)) 7))))
+(assert (or (not (<= (+ arg1 (* (- 1) fmt1)) (- 3))) (not (>= (+ arg1 (* (- 1) fmt1)) (- 1)))))
+(assert (or (not (<= (+ arg1 (* (- 1) fmt1)) (- 3))) (not (= (+ arg1 (* (- 1) fmt1)) (- 1)))))
+(assert (or (not (= (+ fmt0 (* (- 1) fmt1)) (- 5))) (not (>= (+ (x_count 2) (* (- 1) (x_count 3))) 0)) (not (<= (+ (x_count 2) (* (- 1) (x_count 3))) 0)) (not (>= (+ (x_count 1) (* (- 1) (x_count 2))) 0)) (not (<= (+ (x_count 1) (* (- 1) (x_count 2))) 0)) (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)))
+(assert (or (= (+ fmt0 (* (- 1) fmt1)) (- 5)) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 5))) (not (<= (+ fmt0 (* (- 1) fmt1)) (- 5)))))
+(assert (or (not (<= fmt0 0)) (not (>= fmt1 5)) (<= (+ fmt0 (* (- 1) fmt1)) (- 5))))
+(assert (or (<= (+ fmt0 (* (- 1) fmt1)) (- 5)) (not (= (+ arg1 (* (- 1) fmt1)) (- 3))) (not (>= (+ arg1 (* (- 1) fmt0)) 2))))
+(assert (or (>= fmt1 5) (not (= fmt1 5))))
+(assert (or (= fmt1 4) (not (= fmt1 4))))
+(assert (or (= (+ arg1 (* (- 1) fmt1)) (- 2)) (not (= (+ arg1 (* (- 1) fmt1)) (- 2)))))
+(assert (or (= (+ fmt0 (* (- 1) fmt1)) (- 4)) (not (= (+ fmt0 (* (- 1) fmt1)) (- 4)))))
+(assert (or (= (+ arg1 (* (- 1) fmt1)) (- 2)) (not (= (+ arg1 (* (- 1) fmt1)) (- 2)))))
+(assert (or (= fmt1 4) (<= fmt1 3) (>= fmt1 5)))
+(assert (or (= (+ arg1 (* (- 1) fmt1)) (- 2)) (not (>= (+ arg1 (* (- 1) fmt1)) (- 2))) (not (<= (+ arg1 (* (- 1) fmt1)) (- 2)))))
+(assert (or (= (+ arg1 (* (- 1) fmt1)) (- 2)) (>= (+ arg1 (* (- 1) fmt1)) (- 1)) (>= (+ arg1 (* (- 1) fmt1)) (- 1))))
+(assert (or (>= (+ fmt0 (* (- 1) fmt1)) (- 3)) (not (>= (+ arg1 (* (- 1) fmt1)) (- 1))) (not (<= (+ arg1 (* (- 1) fmt0)) 2))))
+(assert (or (not (<= (+ arg1 (* (- 1) fmt1)) (- 2))) (not (= (+ arg1 (* (- 1) fmt1)) (- 1)))))
+(assert (or (>= (+ arg1 (* (- 1) fmt1)) (- 2)) (<= (+ arg1 (* (- 1) fmt1)) (- 3))))
+(assert (or (= (+ fmt0 (* (- 1) fmt1)) (- 4)) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 4))) (not (<= (+ fmt0 (* (- 1) fmt1)) (- 4)))))
+(assert (or (not (>= (+ (x_count 1) (* (- 1) (x_count 2))) 0)) (not (<= (+ (x_count 1) (* (- 1) (x_count 2))) 0)) (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0) (not (= (+ fmt0 (* (- 1) fmt1)) (- 4)))))
+(assert (or (not (>= (+ arg1 (* (- 1) fmt0)) 0)) (not (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))) (not (<= (x_count 0) 0)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (>= distance 18)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (<= (s_count 0) 0)) (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1))) (not (> [...]
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 7))) 0)) (not (>= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1))) (not (>= (+ (s_count 6) (* (- 1) (s_count 7))) (- 1))) (<= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1)) (not (>= (+ (s_count 3) (* (- 1) (s_count 4))) 0)) (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1))) (not (<= (s_count 0) 0)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= distance 18)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_cou [...]
+(assert (or (not (<= (+ s (* (- 1) (format 2))) 0)) (not (>= s 115)) (not (>= (+ percent (* (- 1) (format 2))) 0)) (not (<= percent 37))))
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 7))) 0)) (<= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1)) (not (>= (+ (s_count 6) (* (- 1) (s_count 7))) (- 1))) (not (>= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1))) (not (>= (+ (s_count 3) (* (- 1) (s_count 4))) 0)) (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1))) (not (<= (s_count 0) 0)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= distance 18)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_cou [...]
+(assert (or (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 7))) 0) (not (>= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 7))) 0)) (not (<= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 7))) 0))))
+(assert (or (not (>= (format 4) 255)) (not (<= s 115)) (not (>= (+ s (* (- 1) (format 4))) 0))))
+(assert (or (not (>= (+ percent (* (- 1) (format 7))) 0)) (not (<= percent 37)) (not (>= s 115)) (not (<= (+ s (* (- 1) (format 7))) 0))))
+(assert (or (not (>= s 115)) (not (<= (+ s (* (- 1) (format 6))) 0)) (not (<= (format 6) 6))))
+(assert (or (not (>= (+ s (* (- 1) (format 4))) 0)) (not (<= s 115)) (not (>= x 120)) (not (<= (+ x (* (- 1) (format 4))) 0))))
+(assert (or (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 7))) 0) (not (>= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 7))) 0)) (not (<= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 7))) 0))))
+(assert (or (not (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)) (<= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 7))) 0) (not (<= (+ (x_count 2) (* (- 1) (x_count 3))) 0)) (not (<= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (not (<= (+ (x_count 6) (* (- 1) (x_count 7))) 0)) (not (<= (+ (x_count 5) (* (- 1) (x_count 6))) 0)) (not (<= (+ (x_count 3) (* (- 1) (x_count 4))) 0)) (not (<= (+ (x_count 1) (* (- 1) (x_count 2))) 0))))
+(assert (or (<= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 7))) 0) (>= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 7))) 0)))
+(assert (or (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (<= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (= (+ fmt0 (* (- 1) fmt1)) (- 4))) (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 1))) 0)))
+(assert (or (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1))) (not (<= (s_count 0) 1)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= distance 18)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (<= (x_count 0) 1)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))) (not (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)) (not (>= (+ arg1 (* (- 1) fmt0)) 0)) (not (= [...]
+(assert (or (= (+ fmt0 (* (- 1) fmt1)) (- 4)) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 4))) (not (<= (+ fmt0 (* (- 1) fmt1)) (- 4)))))
+(assert (or (not (<= fmt1 2)) (not (= fmt1 4))))
+(assert (or (not (>= (+ arg1 (* (- 1) fmt1)) 0)) (not (= (+ arg1 (* (- 1) fmt1)) (- 2)))))
+(assert (or (not (>= (+ arg1 (* (- 1) fmt0)) 0)) (not (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))) (not (<= (x_count 0) 1)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (>= distance 18)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (<= (s_count 0) 1)) (not (= (+ fmt0 (* (- 1) fmt1)) (- 2)))))
+(assert (or (not (<= percent 37)) (not (>= (+ percent (* (- 1) (format 1))) 0)) (not (>= x 120)) (not (<= (+ x (* (- 1) (format 10))) 0)) (not (= (+ (format 1) (* (- 1) (format 10))) 0))))
+(assert (or (not (>= fmt1 3)) (not (= fmt1 2))))
+(assert (or (= arg1 6) (not (= arg1 6))))
+(assert (or (= arg1 6) (not (= arg1 6))))
+(assert (or (= arg1 6) (not (= arg1 6))))
+(assert (or (not (= (+ fmt0 (* (- 1) fmt1)) (- 3))) (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 1))) 0)))
+(assert (or (not (>= fmt1 9)) (not (<= fmt1 5))))
+(assert (or (not (>= fmt1 9)) (not (= fmt1 5))))
+(assert (or (not (<= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (<= distance 18)) (not (>= distance 18)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (<= (+ arg1 (* (- 1) fmt0)) 8)) (not (>= (+ arg1 (* (- 1) fmt0)) 8))))
+(assert (or (not (<= (+ arg1 (* (- 1) fmt1)) (- 3))) (not (= (+ arg1 (* (- 1) fmt1)) (- 2)))))
+(assert (or (not (>= (+ fmt0 (* (- 1) fmt1)) (- 8))) (not (= (+ fmt0 (* (- 1) fmt1)) (- 9)))))
+(assert (or (= arg1 6) (not (>= arg1 6)) (not (<= arg1 6))))
+(assert (or (>= (+ arg1 (* (- 1) fmt1)) (- 1)) (not (>= (+ fmt0 (* (- 1) fmt1)) (- 8))) (not (<= fmt0 0)) (<= arg1 6)))
+(assert (or (not (>= (+ arg1 (* (- 1) fmt1)) (- 3))) (not (<= (+ fmt0 (* (- 1) fmt1)) 0)) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) 0)) (not (<= (x_count 0) 0)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (>= dist [...]
+(assert (or (not (>= (+ arg1 (* (- 1) fmt1)) (- 2))) (>= (+ arg1 (* (- 1) fmt1)) (- 3))))
+(assert (or (not (>= (+ percent (* (- 1) (format 3))) 0)) (not (<= percent 37)) (not (>= x 120)) (not (<= (+ x (* (- 1) (format 10))) 0)) (not (= (+ (format 3) (* (- 1) (format 10))) 0))))
+(assert (or (not (>= (+ arg1 (* (- 1) fmt1)) (- 1))) (not (= (+ arg1 (* (- 1) fmt1)) (- 2)))))
+(assert (or (not (>= (+ percent (* (- 1) (format 5))) 0)) (not (<= (+ percent (* (- 1) (format 5))) 0)) (not (>= (+ percent (* (- 1) (format 7))) 0)) (not (<= (+ percent (* (- 1) (format 7))) 0)) (not (>= (+ percent (* (- 1) (format 5))) 0)) (not (<= (+ percent (* (- 1) (format 5))) 0)) (not (>= (+ percent (* (- 1) (format 3))) 0)) (not (<= (+ percent (* (- 1) (format 3))) 0)) (not (= fmt1 6)) (not (= (+ (format 12) (* (- 1) (format (+ 1 fmt1)))) 0)) (not (>= (+ x (* (- 1) (format 10)))  [...]
+(assert (or (= fmt1 6) (not (>= fmt1 6)) (not (<= fmt1 6))))
+(assert (or (not (>= fmt0 0)) (not (<= fmt1 5)) (>= (+ fmt0 (* (- 1) fmt1)) (- 5))))
+(assert (or (= (+ (format 12) (* (- 1) (format (+ 1 fmt1)))) 0) (not (>= (+ (format 12) (* (- 1) (format (+ 1 fmt1)))) 0)) (not (<= (+ (format 12) (* (- 1) (format (+ 1 fmt1)))) 0))))
+(assert (or (<= (+ (format 12) (* (- 1) (format (+ 1 fmt1)))) 0) (>= (+ (format 12) (* (- 1) (format (+ 1 fmt1)))) 0)))
+(assert (or (not (>= fmt1 6)) (not (= fmt1 5))))
+(assert (or (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1))) (not (<= (s_count 0) 1)) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1))) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))) (not (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))) (>= (x_count 0) 1) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (>=  [...]
+(assert (or (not (>= fmt1 7)) (not (<= fmt1 6))))
+(assert (or (not (>= fmt1 7)) (not (= fmt1 6))))
+(assert (or (not (>= (+ arg1 (* (- 1) fmt0)) 0)) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1))) (not (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) 0)) (not (<= (x_count 0) 0)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (>= distance 18)) (not (<= (+ arg0 (* (- 1) f [...]
+(assert (or (<= (+ arg1 (* (- 1) fmt1)) 0) (not (<= (+ arg1 (* (- 1) fmt1)) (- 1)))))
+(assert (or (= (+ arg1 (* (- 1) fmt1)) 1) (not (= (+ arg1 (* (- 1) fmt1)) 1))))
+(assert (or (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1))) (not (<= (s_count 0) 1)) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1))) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))) (not (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))) (>= (x_count 0) 1) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (>=  [...]
+(assert (or (not (>= (+ percent (* (- 1) (format 3))) 0)) (not (<= percent 37)) (not (>= s 115)) (not (<= (+ s (* (- 1) (format 3))) 0))))
+(assert (or (not (= fmt1 4)) (= (+ (format 2) (* (- 1) (format (+ 1 fmt1)))) 0) (not (>= (+ percent (* (- 1) (format 2))) 0)) (not (<= (+ percent (* (- 1) (format 2))) 0)) (not (>= (+ percent (* (- 1) (format 5))) 0)) (not (<= (+ percent (* (- 1) (format 5))) 0))))
+(assert (or (not (= (+ (format 2) (* (- 1) (format (+ 1 fmt1)))) 0)) (>= (+ (format 2) (* (- 1) (format (+ 1 fmt1)))) 0)))
+(assert (or (not (>= (+ percent (* (- 1) (format 2))) 0)) (>= (+ percent (* (- 1) (format fmt1))) 0) (not (>= (+ s (* (- 1) (format 4))) 0)) (not (<= (+ s (* (- 1) (format 4))) 0)) (not (>= (+ s (* (- 1) (format 6))) 0)) (not (<= (+ s (* (- 1) (format 6))) 0)) (not (>= (+ percent (* (- 1) (format 2))) 0)) (not (<= (+ percent (* (- 1) (format 2))) 0)) (not (>= (+ percent (* (- 1) (format 5))) 0)) (not (<= (+ percent (* (- 1) (format 5))) 0)) (not (= fmt1 4)) (not (= arg1 6)) (not (>= (+ p [...]
+(assert (or (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1))) (not (<= (s_count 0) 1)) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1))) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))) (not (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))) (>= (x_count 0) 1) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (>=  [...]
+(assert (or (not (<= percent 37)) (not (>= (+ percent (* (- 1) (format 2))) 0)) (not (>= s 115)) (not (<= (+ s (* (- 1) (format 3))) 0)) (not (= (+ (format 2) (* (- 1) (format 3))) 0))))
+(assert (or (not (>= (+ percent (* (- 1) (format 2))) 0)) (not (<= (+ percent (* (- 1) (format 2))) 0)) (not (>= (+ percent (* (- 1) (format 5))) 0)) (not (<= (+ percent (* (- 1) (format 5))) 0)) (not (= arg1 6)) (not (>= (+ s (* (- 1) (format 6))) 0)) (not (<= (+ s (* (- 1) (format 6))) 0)) (not (>= (+ s (* (- 1) (format 3))) 0)) (not (<= (+ s (* (- 1) (format 3))) 0)) (not (>= (+ percent (* (- 1) (format 2))) 0)) (not (<= (+ percent (* (- 1) (format 2))) 0)) (not (= (+ (format arg1) (* [...]
+(assert (or (= (+ (format arg1) (* (- 1) (format 2))) 0) (not (>= (+ (format arg1) (* (- 1) (format 2))) 0)) (not (<= (+ (format arg1) (* (- 1) (format 2))) 0))))
+(assert (or (>= (+ (format arg1) (* (- 1) (format 2))) 0) (<= (+ (format arg1) (* (- 1) (format 2))) 0)))
+(assert (or (not (>= (+ percent (* (- 1) (format 5))) 0)) (not (<= (+ percent (* (- 1) (format 5))) 0)) (not (>= (+ percent (* (- 1) (format fmt1))) 0)) (not (<= (+ percent (* (- 1) (format fmt1))) 0)) (not (>= (+ s (* (- 1) (format 4))) 0)) (not (<= (+ s (* (- 1) (format 4))) 0)) (not (>= (+ s (* (- 1) (format 6))) 0)) (not (<= (+ s (* (- 1) (format 6))) 0)) (not (>= (+ percent (* (- 1) (format 2))) 0)) (not (<= (+ percent (* (- 1) (format 2))) 0)) (not (>= (+ percent (* (- 1) (format 5 [...]
+(assert (or (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (<= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (= (+ fmt0 (* (- 1) fmt1)) (- 4))) (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 3))) 0)))
+(assert (or (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1))) (not (<= (s_count 0) 1)) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1))) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))) (not (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)) (<= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1)) (not (<= (x_count 0) 0)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (>=  [...]
+(assert (or (not (>= fmt1 8)) (not (= fmt1 4))))
+(assert (or (not (>= (+ arg1 (* (- 1) fmt0)) 0)) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1))) (not (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))) (not (<= (x_count 0) 0)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (>= distance 18)) (not (<= (+ arg0 (* (-  [...]
+(assert (or (not (>= (+ percent (* (- 1) (format fmt1))) 0)) (not (<= percent 37)) (not (>= s 115)) (not (<= (+ s (* (- 1) (format 3))) 0)) (not (= (+ (format fmt1) (* (- 1) (format 3))) 0))))
+(assert (or (not (>= s 115)) (not (<= (+ s (* (- 1) (format 3))) 0)) (not (<= (+ (format arg1) (* (- 1) (format 2))) 0)) (not (>= (+ percent (* (- 1) (format 2))) 0)) (not (<= percent 37)) (not (= (+ (format arg1) (* (- 1) (format 3))) 0))))
+(assert (or (not (>= x 120)) (not (<= (+ x (* (- 1) (format 2))) 0)) (not (<= s 115)) (not (>= (+ s (* (- 1) (format (+ 1 fmt1)))) 0)) (not (= (+ (format 2) (* (- 1) (format (+ 1 fmt1)))) 0))))
+(assert (or (<= (+ s (* (- 1) (format (+ 1 fmt1)))) 0) (not (<= (+ s (* (- 1) (format 6))) 0)) (not (= fmt1 7)) (not (>= (+ s (* (- 1) (format 8))) 0)) (not (<= (+ s (* (- 1) (format 8))) 0)) (not (>= (+ s (* (- 1) (format 6))) 0)) (not (<= (+ s (* (- 1) (format 6))) 0))))
+(assert (or (<= (+ percent (* (- 1) (format fmt1))) 0) (not (<= (+ percent (* (- 1) (format 1))) 0)) (not (= (+ (format fmt1) (* (- 1) (format 1))) 0))))
+(assert (or (not (>= (+ arg1 (* (- 1) fmt0)) 0)) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1))) (not (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))) (not (<= (x_count 0) 0)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (>= distance 18)) (not (<= (+ arg0 (* (-  [...]
+(assert (or (not (>= (+ percent (* (- 1) (format 5))) 0)) (not (<= (+ percent (* (- 1) (format 5))) 0)) (not (>= (+ percent (* (- 1) (format 7))) 0)) (not (<= (+ percent (* (- 1) (format 7))) 0)) (not (= fmt1 7)) (not (>= (+ percent (* (- 1) (format 5))) 0)) (not (<= (+ percent (* (- 1) (format 5))) 0)) (not (>= (+ percent (* (- 1) (format 1))) 0)) (not (<= (+ percent (* (- 1) (format 1))) 0)) (= (+ (format fmt1) (* (- 1) (format 1))) 0)))
+(assert (or (not (= (+ fmt0 (* (- 1) fmt1)) (- 7))) (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 5))) 0)))
+(assert (or (not (<= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (>= (+ (s_count 1) (* (- 1) (s_count 2))) 0) (not (= (+ (s_count 1) (* (- 1) (s_count 3))) 0))))
+(assert (or (not (>= (+ percent (* (- 1) (format 6))) 0)) (not (<= (+ percent (* (- 1) (format 6))) 0)) (not (>= (+ percent (* (- 1) (format 2))) 0)) (not (<= (+ percent (* (- 1) (format 2))) 0)) (= (+ (format arg1) (* (- 1) (format 2))) 0) (not (= arg1 6))))
+(assert (or (not (= (+ (format arg1) (* (- 1) (format 2))) 0)) (>= (+ (format arg1) (* (- 1) (format 2))) 0)))
+(assert (or (not (= fmt1 8)) (not (>= (+ percent (* (- 1) (format 6))) 0)) (not (<= (+ percent (* (- 1) (format 6))) 0)) (not (>= (+ percent (* (- 1) (format 2))) 0)) (not (<= (+ percent (* (- 1) (format 2))) 0)) (not (>= (+ s (* (- 1) (format 7))) 0)) (not (<= (+ s (* (- 1) (format 7))) 0)) (not (>= (+ s (* (- 1) (format 3))) 0)) (not (<= (+ s (* (- 1) (format 3))) 0)) (not (>= (+ percent (* (- 1) (format 6))) 0)) (not (<= (+ percent (* (- 1) (format 6))) 0)) (not (= (+ (format fmt1) (* [...]
+(assert (or (= (+ (format fmt1) (* (- 1) (format 1))) 0) (not (>= (+ (format fmt1) (* (- 1) (format 1))) 0)) (not (<= (+ (format fmt1) (* (- 1) (format 1))) 0))))
+(assert (or (>= (+ (format fmt1) (* (- 1) (format 1))) 0) (<= (+ (format fmt1) (* (- 1) (format 1))) 0)))
+(assert (or (not (<= (+ percent (* (- 1) (format fmt1))) 0)) (not (>= (+ percent (* (- 1) (format 1))) 0)) (>= (+ (format fmt1) (* (- 1) (format 1))) 0)))
+(assert (or (not (= fmt1 8)) (not (>= (+ s (* (- 1) (format 7))) 0)) (not (<= (+ s (* (- 1) (format 7))) 0)) (not (>= (+ s (* (- 1) (format 3))) 0)) (not (<= (+ s (* (- 1) (format 3))) 0)) (not (>= (+ s (* (- 1) (format 8))) 0)) (not (<= (+ s (* (- 1) (format 8))) 0)) (not (>= (+ s (* (- 1) (format 7))) 0)) (not (<= (+ s (* (- 1) (format 7))) 0)) (= (+ (format fmt1) (* (- 1) (format 3))) 0)))
+(assert (or (not (= fmt1 8)) (not (>= (+ percent (* (- 1) (format 6))) 0)) (not (<= (+ percent (* (- 1) (format 6))) 0)) (not (>= (+ percent (* (- 1) (format 2))) 0)) (not (<= (+ percent (* (- 1) (format 2))) 0)) (not (>= (+ s (* (- 1) (format 7))) 0)) (not (<= (+ s (* (- 1) (format 7))) 0)) (not (>= (+ s (* (- 1) (format 3))) 0)) (not (<= (+ s (* (- 1) (format 3))) 0)) (= (+ (format 2) (* (- 1) (format 3))) 0) (not (>= (+ percent (* (- 1) (format 6))) 0)) (not (<= (+ percent (* (- 1) (f [...]
+(assert (or (not (= fmt1 8)) (not (>= (+ percent (* (- 1) (format 6))) 0)) (not (<= (+ percent (* (- 1) (format 6))) 0)) (not (>= (+ percent (* (- 1) (format 2))) 0)) (not (<= (+ percent (* (- 1) (format 2))) 0)) (= (+ (format 2) (* (- 1) (format (+ 1 fmt1)))) 0) (not (>= (+ percent (* (- 1) (format 6))) 0)) (not (<= (+ percent (* (- 1) (format 6))) 0)) (not (>= (+ percent (* (- 1) (format 9))) 0)) (not (<= (+ percent (* (- 1) (format 9))) 0))))
+(assert (or (not (>= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1))) (not (>= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1))) (not (>= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1))) (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1))) (>= (s_count 0) 1) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1))) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) 0)) (not ( [...]
+(assert (or (= (+ (format fmt1) (* (- 1) (format 3))) 0) (not (>= (+ (format fmt1) (* (- 1) (format 3))) 0)) (not (<= (+ (format fmt1) (* (- 1) (format 3))) 0))))
+(assert (or (>= (+ (format fmt1) (* (- 1) (format 3))) 0) (<= (+ (format fmt1) (* (- 1) (format 3))) 0)))
+(assert (or (not (>= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1))) (not (>= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1))) (not (>= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1))) (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1))) (>= (s_count 0) 1) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))) (not (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) 0)) (not ( [...]
+(assert (or (not (>= (+ percent (* (- 1) (format fmt1))) 0)) (not (>= s 115)) (not (<= percent 37)) (not (<= (+ s (* (- 1) (format 4))) 0)) (not (= (+ (format fmt1) (* (- 1) (format 4))) 0))))
+(assert (or (not (>= x 120)) (not (<= (+ x (* (- 1) (format 2))) 0)) (not (<= percent 37)) (not (>= (+ percent (* (- 1) (format 3))) 0)) (not (= (+ (format arg1) (* (- 1) (format 2))) 0)) (not (= (+ (format arg1) (* (- 1) (format 3))) 0))))
+(assert (or (not (>= x 120)) (not (<= (+ x (* (- 1) (format 2))) 0)) (not (<= percent 37)) (not (>= (+ percent (* (- 1) (format 3))) 0)) (not (= (+ (format 2) (* (- 1) (format 3))) 0))))
+(assert (or (not (= fmt1 8)) (not (>= (+ s (* (- 1) (format 8))) 0)) (not (<= (+ s (* (- 1) (format 8))) 0)) (not (>= (+ s (* (- 1) (format 7))) 0)) (not (<= (+ s (* (- 1) (format 7))) 0)) (not (>= (+ s (* (- 1) (format 4))) 0)) (not (<= (+ s (* (- 1) (format 4))) 0)) (not (>= (+ s (* (- 1) (format 7))) 0)) (not (<= (+ s (* (- 1) (format 7))) 0)) (= (+ (format fmt1) (* (- 1) (format 4))) 0)))
+(assert (or (not (<= (format 8) 6)) (not (<= (+ percent (* (- 1) (format 8))) 0)) (not (>= percent 37))))
+(assert (or (not (>= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1))) (not (>= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1))) (not (>= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1))) (<= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1)) (not (<= (s_count 0) 0)) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))) (not (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))) (n [...]
+(assert (or (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0) (not (>= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)) (not (<= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0))))
+(assert (or (not (>= (+ s (* (- 1) (format 7))) 0)) (not (<= s 115)) (not (<= (+ x (* (- 1) (format 7))) 0)) (not (>= x 120))))
+(assert (or (>= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0) (<= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)))
+(assert (or (>= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 7))) 0) (not (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 7))) 0))))
+(assert (or (not (<= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)) (not (<= (+ (x_count 1) (* (- 1) (x_count 2))) 0)) (not (<= (+ (x_count 3) (* (- 1) (x_count 4))) 0)) (>= (+ (x_count 2) (* (- 1) (x_count 3))) 0) (not (= (+ fmt0 (* (- 1) fmt1)) (- 8))) (not (>= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (not (<= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (not (>= (+ (x_count 5) (* (- 1) (x_count 6))) 0)) (not (<= (+ (x_count 5) (* (- 1) (x_count 6))) 0))))
+(assert (or (not (>= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1))) (not (>= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1))) (not (>= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1))) (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1))) (not (<= (s_count 0) 1)) (<= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1)) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (>= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))) (not (< [...]
+(assert (or (not (= (+ fmt0 (* (- 1) fmt1)) (- 8))) (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0)))
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0)) (not (>= (+ arg1 (* (- 1) fmt0)) 0)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= distance 18)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (<= (x_count 0) 1)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (>= (+ (s_count 1) (* (- 1) (s_ [...]
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0)) (not (>= (+ arg1 (* (- 1) fmt0)) 0)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= distance 18)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (<= (x_count 0) 1)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))) (not (>= (+ (s_count 1) (* (- 1) [...]
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0)) (not (>= (+ arg1 (* (- 1) fmt0)) 0)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= distance 18)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (<= (x_count 0) 1)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (>= (+ (s_count 1) (* (- 1) (s_ [...]
+(assert (or (not (>= x 120)) (not (<= (+ x (* (- 1) (format 5))) 0)) (not (<= s 115)) (not (>= (+ s (* (- 1) (format 5))) 0))))
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0)) (not (>= (+ arg1 (* (- 1) fmt0)) 0)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= distance 18)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (<= (x_count 0) 1)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (>= (+ (s_count 1) (* (- 1) (s_ [...]
+(assert (or (not (>= (+ percent (* (- 1) (format 1))) 0)) (not (<= (+ percent (* (- 1) (format 1))) 0)) (not (>= (+ percent (* (- 1) (format 3))) 0)) (not (<= (+ percent (* (- 1) (format 3))) 0)) (not (>= (+ arg1 (* (- 1) fmt1)) 0)) (not (<= (+ arg1 (* (- 1) fmt1)) 0)) (not (= (+ (format arg1) (* (- 1) (format 3))) 0)) (= (+ (format fmt1) (* (- 1) (format 1))) 0)))
+(assert (or (not (>= (+ arg1 (* (- 1) fmt1)) 0)) (not (<= (+ arg1 (* (- 1) fmt1)) 0)) (not (>= (+ percent (* (- 1) (format 6))) 0)) (not (<= (+ percent (* (- 1) (format 6))) 0)) (not (>= (+ percent (* (- 1) (format 1))) 0)) (not (<= (+ percent (* (- 1) (format 1))) 0)) (not (= arg1 6)) (= (+ (format fmt1) (* (- 1) (format 1))) 0)))
+(assert (or (= (+ (format fmt1) (* (- 1) (format 4))) 0) (not (>= (+ (format fmt1) (* (- 1) (format 4))) 0)) (not (<= (+ (format fmt1) (* (- 1) (format 4))) 0))))
+(assert (or (<= (+ (format fmt1) (* (- 1) (format 3))) 0) (not (<= (+ percent (* (- 1) (format 3))) 0)) (not (= (+ (format fmt1) (* (- 1) (format 1))) 0)) (not (>= (+ percent (* (- 1) (format 1))) 0))))
+(assert (or (= (+ (format arg1) (* (- 1) (format 3))) 0) (not (>= (+ (format arg1) (* (- 1) (format 3))) 0)) (not (<= (+ (format arg1) (* (- 1) (format 3))) 0))))
+(assert (or (<= (+ (format arg1) (* (- 1) (format 3))) 0) (>= (+ (format arg1) (* (- 1) (format 3))) 0)))
+(assert (or (<= (+ (format arg1) (* (- 1) (format 3))) 0) (not (<= (+ percent (* (- 1) (format 3))) 0)) (not (>= (+ percent (* (- 1) (format 1))) 0)) (not (>= (+ arg1 (* (- 1) fmt1)) 0)) (not (<= (+ arg1 (* (- 1) fmt1)) 0)) (not (= (+ (format fmt1) (* (- 1) (format 1))) 0))))
+(assert (or (>= (+ (format arg1) (* (- 1) (format 3))) 0) (not (>= (+ percent (* (- 1) (format 3))) 0)) (not (<= (+ percent (* (- 1) (format 1))) 0)) (not (>= (+ arg1 (* (- 1) fmt1)) 0)) (not (<= (+ arg1 (* (- 1) fmt1)) 0)) (not (= (+ (format fmt1) (* (- 1) (format 1))) 0))))
+(assert (or (<= (+ s (* (- 1) (format (+ 1 fmt1)))) 0) (not (<= (+ s (* (- 1) (format 7))) 0)) (not (= fmt1 6))))
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0)) (not (>= (+ arg1 (* (- 1) fmt0)) 0)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= distance 18)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (<= (x_count 0) 1)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (>= (+ (s_count 1) (* (- 1) (s_ [...]
+(assert (or (not (<= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (<= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (<= (+ (s_count 3) (* (- 1) (s_count 4))) 0)) (not (<= (+ (s_count 4) (* (- 1) (s_count 5))) 0)) (>= (+ (s_count 5) (* (- 1) (s_count 6))) 0) (not (= (+ (s_count 1) (* (- 1) (s_count 6))) 0))))
+(assert (or (not (>= (+ (s_count 3) (* (- 1) (s_count 4))) 0)) (not (<= (+ (s_count 3) (* (- 1) (s_count 4))) 0)) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (<= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (<= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (= (+ (s_count 1) (* (- 1) (s_count 6))) 0) (not (= (+ fmt0 (* (- 1) fmt1)) (- 6))) (not (>= (+ (s_count 6) (* (- 1) (s_count 7))) 0)) (not (<= (+ (s_count 6) (* (- 1) (s_cou [...]
+(assert (or (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0) (not (>= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0)) (not (<= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0))))
+(assert (or (>= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0) (<= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0)))
+(assert (or (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 1))) 0) (not (>= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 1))) 0)) (not (<= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 1))) 0))))
+(assert (or (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 3))) 0) (not (>= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 3))) 0)) (not (<= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 3))) 0))))
+(assert (or (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 5))) 0) (not (>= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 5))) 0)) (not (<= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 5))) 0))))
+(assert (or (>= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 5))) 0) (<= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 5))) 0)))
+(assert (or (>= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 3))) 0) (<= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 3))) 0)))
+(assert (or (>= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 1))) 0) (<= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 1))) 0)))
+(assert (or (not (>= (+ (s_count 3) (* (- 1) (s_count 4))) 0)) (not (<= (+ (s_count 3) (* (- 1) (s_count 4))) 0)) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (<= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (<= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (= (+ fmt0 (* (- 1) fmt1)) (- 6))) (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 1))) 0)))
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 1))) 0)) (>= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 1))) 0)))
+(assert (or (not (= (+ fmt0 (* (- 1) fmt1)) (- 6))) (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 4))) 0)))
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 1))) 0)) (not (>= (+ arg1 (* (- 1) fmt0)) 0)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= distance 18)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (<= (x_count 0) 1)) (not (>= (+ (x_count 0) (* (- 1) (x_count 1))) (- 1))) (not (<= (s_count 0) 1)) (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) 0)) (not (>= (+ [...]
+(assert (or (not (>= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (not (<= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (not (= (+ fmt0 (* (- 1) fmt1)) (- 7))) (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 4))) 0)))
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 1))) 0)) (not (>= (+ arg1 (* (- 1) fmt0)) 0)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= distance 18)) (not (>= (+ arg0 (* (- 1) arg1) (* 4 (s_count (+ (- 2) (* (- 1) fmt0) fmt1))) (* 4 (x_count (+ (- 2) (* (- 1) fmt0) fmt1)))) 0)) (not (<= (x_count 0) 1)) (not (<= (s_count 0) 1)) (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) (- 1))) (not (= (+ fmt0 (* (- 1) fmt1)) (- 2)))))
+(assert (or (not (<= (+ s (* (- 1) (format 7))) 0)) (not (>= s 115)) (not (<= percent 37)) (not (>= (+ percent (* (- 1) (format 1))) 0)) (not (= (+ (format 1) (* (- 1) (format 7))) 0))))
+(assert (or (not (>= x 120)) (not (<= (+ x (* (- 1) (format 2))) 0)) (not (<= percent 37)) (not (>= (+ percent (* (- 1) (format 1))) 0)) (not (= (+ (format 1) (* (- 1) (format 2))) 0))))
+(assert (or (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (<= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (<= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 3))) 0)) (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 1))) 0)))
+(assert (or (<= (+ (s_count 6) (* (- 1) (s_count 7))) (- 1)) (>= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 7))) 0) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (>= (+ (s_count 3) (* (- 1) (s_count 4))) 0)) (not (>= (+ (s_count 4) (* (- 1) (s_count 5))) 0)) (not (>= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1))) (<= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 1))) 0)))
+(assert (or (<= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 1))) 0) (not (>= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1))) (not (>= (+ (s_count 4) (* (- 1) (s_count 5))) 0)) (not (>= (+ (s_count 3) (* (- 1) (s_count 4))) 0)) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (>= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0)))
+(assert (or (not (<= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 1))) 0)) (not (<= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (<= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (<= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 3))) 0)))
+(assert (or (not (>= (+ percent (* (- 1) (format 4))) 0)) (not (<= (+ percent (* (- 1) (format 4))) 0)) (not (>= (+ percent (* (- 1) (format 1))) 0)) (not (<= (+ percent (* (- 1) (format 1))) 0)) (not (= (+ (format fmt1) (* (- 1) (format 4))) 0)) (not (= fmt1 2)) (= (+ (format 1) (* (- 1) (format 2))) 0)))
+(assert (or (>= (+ (format fmt1) (* (- 1) (format 4))) 0) (not (>= (+ percent (* (- 1) (format 4))) 0)) (not (= (+ (format fmt1) (* (- 1) (format 1))) 0)) (not (<= (+ percent (* (- 1) (format 1))) 0))))
+(assert (or (>= (+ (format fmt1) (* (- 1) (format 4))) 0) (not (>= (+ percent (* (- 1) (format 4))) 0)) (not (<= (+ percent (* (- 1) (format fmt1))) 0))))
+(assert (or (not (<= (+ (format fmt1) (* (- 1) (format 4))) 0)) (not (>= (+ percent (* (- 1) (format 4))) 0)) (<= (+ (format fmt1) (* (- 1) (format 1))) 0) (not (<= (+ percent (* (- 1) (format 1))) 0))))
+(assert (or (not (= fmt1 2)) (not (>= (+ percent (* (- 1) (format 1))) 0)) (not (<= (+ percent (* (- 1) (format 1))) 0)) (not (>= (+ percent (* (- 1) (format 3))) 0)) (not (<= (+ percent (* (- 1) (format 3))) 0)) (= (+ (format 1) (* (- 1) (format 7))) 0) (not (>= (+ s (* (- 1) (format (+ 1 fmt1)))) 0)) (not (<= (+ s (* (- 1) (format (+ 1 fmt1)))) 0)) (not (>= (+ s (* (- 1) (format 7))) 0)) (not (<= (+ s (* (- 1) (format 7))) 0))))
+(assert (or (not (>= (+ (s_count 0) (* (- 1) (s_count 1))) 0)) (not (<= (+ (s_count 0) (* (- 1) (s_count 1))) 0)) (not (= (+ fmt0 (* (- 1) fmt1)) (- 2))) (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 1))) 0)))
+(assert (or (not (>= (+ (x_count 2) (* (- 1) (x_count 3))) 0)) (not (<= (+ (x_count 2) (* (- 1) (x_count 3))) 0)) (not (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 4))) 0)) (not (>= (+ (x_count 3) (* (- 1) (x_count 4))) 0)) (not (<= (+ (x_count 3) (* (- 1) (x_count 4))) 0)) (not (>= (+ (x_count 1) (* (- 1) (x_count 2))) 0)) (not (<= (+ (x_count 1) (* (- 1) (x_count 2))) 0)) (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0)))
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0)) (not (<= (+ (s_count 3) (* (- 1) (s_count 4))) 0)) (not (<= (+ (s_count 4) (* (- 1) (s_count 5))) 0)) (not (<= (+ (s_count 5) (* (- 1) (s_count 6))) 0)) (>= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 3))) 0)))
+(assert (or (not (<= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 1))) 0)) (not (<= (+ (s_count 5) (* (- 1) (s_count 6))) 0)) (>= (+ (s_count 4) (* (- 1) (s_count 5))) 0) (not (<= (+ (s_count 3) (* (- 1) (s_count 4))) 0)) (not (<= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (<= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0))))
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0)) (>= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0)))
+(assert (or (not (>= fmt1 8)) (not (<= fmt1 6))))
+
+(assert (or (not (= (+ fmt0 (* (- 1) fmt1)) (- 8))) (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 1))) 0) (not (>= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (not (<= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (not (>= (+ (x_count 2) (* (- 1) (x_count 3))) 0)) (not (<= (+ (x_count 2) (* (- 1) (x_count 3))) 0)) (not (>= (+ (x_count 5) (* (- 1) (x_count 6))) 0)) (not (<= (+ (x_count 5) (* (- 1) (x_count 6))) 0)) (not (>= (+ (x_count 3) (* (- 1) (x_count 4))) 0)) (not (<= (+ [...]
+(assert (or (= (+ (s_count 1) (* (- 1) (s_count 6))) 0) (not (>= (+ (s_count 1) (* (- 1) (s_count 6))) 0)) (not (<= (+ (s_count 1) (* (- 1) (s_count 6))) 0))))
+(assert (or (not (<= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (<= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (<= (+ (s_count 3) (* (- 1) (s_count 4))) 0)) (not (<= (+ (s_count 4) (* (- 1) (s_count 5))) 0)) (not (<= (+ (s_count 5) (* (- 1) (s_count 6))) 0)) (<= (+ (s_count 1) (* (- 1) (s_count 6))) 0)))
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0)) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1))) (not (>= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1))) (<= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1)) (not (>= (+ (s_count 5) (* (- 1) (s_count 6))) 0)) (not (>= (+ arg1 (* (- 1) fmt0)) 6)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= distance 18)) (not (>= (+ arg0 (* (- 1) arg1) [...]
+(assert (or (not (>= s 115)) (not (<= (+ s (* (- 1) (format (+ 1 fmt1)))) 0)) (not (>= (+ percent (* (- 1) (format 1))) 0)) (not (<= percent 37)) (not (= (+ (format 1) (* (- 1) (format (+ 1 fmt1)))) 0))))
+(assert (or (not (<= (+ (format fmt1) (* (- 1) (format 4))) 0)) (not (>= (+ percent (* (- 1) (format 4))) 0)) (not (>= x 120)) (not (<= (+ x (* (- 1) (format 2))) 0)) (not (<= percent 37)) (not (= (+ (format fmt1) (* (- 1) (format 2))) 0))))
+(assert (or (not (= fmt1 8)) (not (>= (+ x (* (- 1) (format 7))) 0)) (not (<= (+ x (* (- 1) (format 7))) 0)) (not (>= (+ x (* (- 1) (format 1))) 0)) (not (<= (+ x (* (- 1) (format 1))) 0)) (= (+ (format fmt1) (* (- 1) (format 1))) 0) (not (>= (+ x (* (- 1) (format 7))) 0)) (not (<= (+ x (* (- 1) (format 7))) 0)) (not (>= (+ x (* (- 1) (format 8))) 0)) (not (<= (+ x (* (- 1) (format 8))) 0))))
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0)) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1))) (not (>= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1))) (<= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1)) (not (>= (+ (s_count 5) (* (- 1) (s_count 6))) 0)) (not (>= (+ arg1 (* (- 1) fmt0)) 6)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= distance 18)) (not (>= (+ arg0 (* (- 1) arg1) [...]
+(assert (or (not (>= s 115)) (not (<= (+ s (* (- 1) (format (+ 1 fmt1)))) 0)) (not (>= (+ percent (* (- 1) (format 0))) 0)) (not (<= percent 37)) (not (= (+ (format 0) (* (- 1) (format (+ 1 fmt1)))) 0))))
+(assert (or (not (>= (format 8) 255)) (not (<= percent 37)) (not (<= (+ (format fmt1) (* (- 1) (format 4))) 0)) (not (>= (+ percent (* (- 1) (format 4))) 0)) (not (= (+ (format fmt1) (* (- 1) (format 8))) 0))))
+(assert (or (not (>= x 120)) (not (<= s 115)) (not (>= (+ s (* (- 1) (format 1))) 0)) (not (<= (+ x (* (- 1) (format 10))) 0)) (not (= (+ (format 1) (* (- 1) (format 10))) 0))))
+(assert (or (not (>= x 120)) (not (<= s 115)) (not (>= (+ s (* (- 1) (format 1))) 0)) (not (<= (+ x (* (- 1) (format 7))) 0)) (not (= (+ (format 1) (* (- 1) (format 7))) 0))))
+(assert (or (not (>= (+ x (* (- 1) (format 7))) 0)) (not (<= (+ x (* (- 1) (format 7))) 0)) (not (>= (+ x (* (- 1) (format 2))) 0)) (not (<= (+ x (* (- 1) (format 2))) 0)) (not (= (+ (format 1) (* (- 1) (format 2))) 0)) (= (+ (format 1) (* (- 1) (format 7))) 0)))
+(assert (or (not (= fmt1 8)) (= (+ (format fmt1) (* (- 1) (format 8))) 0)))
+(assert (or (<= (+ (format fmt1) (* (- 1) (format 4))) 0) (>= (+ (format fmt1) (* (- 1) (format 4))) 0)))
+(assert (or (not (= (+ (format fmt1) (* (- 1) (format 8))) 0)) (not (>= (format 8) 255)) (not (<= s 115)) (not (>= (+ s (* (- 1) (format 1))) 0)) (not (<= (+ (format fmt1) (* (- 1) (format 1))) 0))))
+(assert (or (not (= (+ (format fmt1) (* (- 1) (format 8))) 0)) (not (<= percent 37)) (not (>= (format 8) 255)) (not (>= (+ percent (* (- 1) (format fmt1))) 0))))
+(assert (or (not (= fmt1 8)) (not (>= (+ percent (* (- 1) (format 6))) 0)) (not (<= (+ percent (* (- 1) (format 6))) 0)) (not (>= (+ percent (* (- 1) (format 9))) 0)) (not (<= (+ percent (* (- 1) (format 9))) 0)) (not (>= (+ percent (* (- 1) (format 6))) 0)) (not (<= (+ percent (* (- 1) (format 6))) 0)) (not (>= (+ percent (* (- 1) (format 0))) 0)) (not (<= (+ percent (* (- 1) (format 0))) 0)) (= (+ (format 0) (* (- 1) (format (+ 1 fmt1)))) 0)))
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0)) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1))) (not (>= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1))) (<= (+ (s_count 4) (* (- 1) (s_count 5))) (- 1)) (not (>= (+ (s_count 5) (* (- 1) (s_count 6))) 0)) (not (>= (+ arg1 (* (- 1) fmt0)) 6)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= distance 18)) (not (>= (+ arg0 (* (- 1) arg1) [...]
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0)) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1))) (<= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1)) (not (>= (+ (s_count 4) (* (- 1) (s_count 5))) 0)) (not (>= (+ (s_count 5) (* (- 1) (s_count 6))) 0)) (not (>= (+ arg1 (* (- 1) fmt0)) 6)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= distance 18)) (not (>= (+ arg0 (* (- 1) arg1) (*  [...]
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 1))) 0)) (>= (+ (s_count 5) (* (- 1) (s_count 6))) 0) (not (<= (+ (s_count 4) (* (- 1) (s_count 5))) 0)) (not (<= (+ (s_count 3) (* (- 1) (s_count 4))) 0)) (not (<= (+ (s_count 1) (* (- 1) (s_count 2))) 0)) (not (<= (+ (s_count 2) (* (- 1) (s_count 3))) 0)) (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0))))
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0)) (not (<= (+ (s_count 5) (* (- 1) (s_count 6))) 0)) (>= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 5))) 0)))
+(assert (or (not (= (+ fmt0 (* (- 1) fmt1)) (- 8))) (not (>= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (not (<= (+ (x_count 4) (* (- 1) (x_count 5))) 0)) (not (>= (+ (x_count 5) (* (- 1) (x_count 6))) 0)) (not (<= (+ (x_count 5) (* (- 1) (x_count 6))) 0)) (= (+ (x_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (x_count 4))) 0)))
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0)) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1))) (<= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1)) (not (>= (+ (s_count 4) (* (- 1) (s_count 5))) 0)) (not (>= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1))) (not (>= (+ arg1 (* (- 1) fmt0)) 6)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= distance 18)) (not (>= (+ arg0 (* (- 1) arg1) [...]
+(assert (or (not (= (+ (s_count (+ (- 2) (* (- 1) fmt0) fmt1)) (* (- 1) (s_count 6))) 0)) (not (>= (+ (s_count 2) (* (- 1) (s_count 3))) (- 1))) (not (>= (+ (s_count 1) (* (- 1) (s_count 2))) (- 1))) (<= (+ (s_count 3) (* (- 1) (s_count 4))) (- 1)) (not (>= (+ (s_count 4) (* (- 1) (s_count 5))) 0)) (not (>= (+ (s_count 5) (* (- 1) (s_count 6))) (- 1))) (not (>= (+ arg1 (* (- 1) fmt0)) 6)) (not (<= (+ arg0 (* (- 1) fmt0) distance) 0)) (not (>= distance 18)) (not (>= (+ arg0 (* (- 1) arg1) [...]
+
+
+(check-sat)
+(exit)
diff --git a/test/regress/regress2/uflia-error0.smt2.expect b/test/regress/regress2/uflia-error0.smt2.expect
new file mode 100644
index 0000000..7fd1d5a
--- /dev/null
+++ b/test/regress/regress2/uflia-error0.smt2.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --decision=justification
+% EXPECT: unsat
diff --git a/test/regress/regress2/xs-09-16-3-4-1-5.decn.smt b/test/regress/regress2/xs-09-16-3-4-1-5.decn.smt
new file mode 100644
index 0000000..549306c
--- /dev/null
+++ b/test/regress/regress2/xs-09-16-3-4-1-5.decn.smt
@@ -0,0 +1,29 @@
+(benchmark mathsat
+:source { MathSat group }
+:logic QF_UFLIA
+:status unsat 
+:category { industrial } 
+:difficulty { 2 }
+:extrafuns ((fmt1 Int))
+:extrafuns ((fmt0 Int))
+:extrafuns ((arg1 Int))
+:extrafuns ((arg0 Int))
+:extrafuns ((fmt_length Int))
+:extrafuns ((distance Int))
+:extrafuns ((adr_hi Int))
+:extrafuns ((adr_medhi Int))
+:extrafuns ((adr_medlo Int))
+:extrafuns ((adr_lo Int))
+:extrafuns ((select_format Int Int))
+:extrafuns ((percent Int))
+:extrafuns ((s Int))
+:extrafuns ((s_count Int Int))
+:extrafuns ((x Int))
+:extrafuns ((x_count Int Int))
+:formula
+(flet ($concval (and (and (and (and (and (and (and (and (= distance 16) (= fmt_length 9)) (= adr_lo 3)) (= adr_medlo 4)) (= adr_medhi 1)) (= adr_hi 5)) (= percent 37)) (= s 115)) (= x 120)))
+(flet ($attack (and (and (and (and (and (and (and (= fmt0 0) (= arg0 (- fmt0 distance))) (>= arg1 fmt0)) (< fmt1 (- (+ fmt0 fmt_length) 1))) (> fmt1 (+ fmt0 1))) (>= arg1 (+ arg0 distance))) (< arg1 (- (+ (+ arg0 distance) fmt_length) 4))) (= arg1 (+ (+ arg0 (* 4 (s_count (- (- fmt1 2) fmt0)))) (* 4 (x_count (- (- fmt1 2) fmt0)))))))
+(flet ($restrict (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (= (select_format 0) percent) (= (select_format 0) s)) (= (select_format 0) x)) (= (select_format 0) adr_lo)) (= (select_format 0) adr_medlo)) (= (select_format 0) adr_medhi)) (= (select_form [...]
+(flet ($counterdef (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (if_then_else (and (= (select_format 0) percent) (= (select_format 1) s)) (= (s_count 0) 1) (= (s_count 0) 0)) (if_then_else (and (= (select_format 1) percent) (= (select_format 2) s)) (= (s_count 1) (+ (s_count 0) 1)) (= (s_count 1) (s_count 0)))) (if_then_else (and (= (select_format 2) percent) (= (select_format 3) s)) (= (s_count 2) (+ (s_count 1) 1)) (= (s_count 2) (s_count 1)))) ( [...]
+(flet ($integral (and (or (or (or (or (or (or (or (or (= fmt1 (+ fmt0 0)) (= fmt1 (+ fmt0 1))) (= fmt1 (+ fmt0 2))) (= fmt1 (+ fmt0 3))) (= fmt1 (+ fmt0 4))) (= fmt1 (+ fmt0 5))) (= fmt1 (+ fmt0 6))) (= fmt1 (+ fmt0 7))) (= fmt1 (+ fmt0 8))) (or (or (or (or (or (= arg1 (+ fmt0 0)) (= arg1 (+ fmt0 1))) (= arg1 (+ fmt0 2))) (= arg1 (+ fmt0 3))) (= arg1 (+ fmt0 4))) (= arg1 (+ fmt0 5)))))
+(and (and (and (and (and $concval $attack) $restrict) $counterdef) $integral) (not (and (and (and (and (and (= (select_format fmt1) percent) (= (select_format (+ fmt1 1)) s)) (= (select_format arg1) adr_lo)) (= (select_format (+ arg1 1)) adr_medlo)) (= (select_format (+ arg1 2)) adr_medhi)) (= (select_format (+ arg1 3)) adr_hi))))))))))
diff --git a/test/regress/regress2/xs-09-16-3-4-1-5.decn.smt.expect b/test/regress/regress2/xs-09-16-3-4-1-5.decn.smt.expect
new file mode 100644
index 0000000..7fd1d5a
--- /dev/null
+++ b/test/regress/regress2/xs-09-16-3-4-1-5.decn.smt.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --decision=justification
+% EXPECT: unsat
diff --git a/test/regress/regress2/xs-09-16-3-4-1-5.smt b/test/regress/regress2/xs-09-16-3-4-1-5.smt
new file mode 100644
index 0000000..549306c
--- /dev/null
+++ b/test/regress/regress2/xs-09-16-3-4-1-5.smt
@@ -0,0 +1,29 @@
+(benchmark mathsat
+:source { MathSat group }
+:logic QF_UFLIA
+:status unsat 
+:category { industrial } 
+:difficulty { 2 }
+:extrafuns ((fmt1 Int))
+:extrafuns ((fmt0 Int))
+:extrafuns ((arg1 Int))
+:extrafuns ((arg0 Int))
+:extrafuns ((fmt_length Int))
+:extrafuns ((distance Int))
+:extrafuns ((adr_hi Int))
+:extrafuns ((adr_medhi Int))
+:extrafuns ((adr_medlo Int))
+:extrafuns ((adr_lo Int))
+:extrafuns ((select_format Int Int))
+:extrafuns ((percent Int))
+:extrafuns ((s Int))
+:extrafuns ((s_count Int Int))
+:extrafuns ((x Int))
+:extrafuns ((x_count Int Int))
+:formula
+(flet ($concval (and (and (and (and (and (and (and (and (= distance 16) (= fmt_length 9)) (= adr_lo 3)) (= adr_medlo 4)) (= adr_medhi 1)) (= adr_hi 5)) (= percent 37)) (= s 115)) (= x 120)))
+(flet ($attack (and (and (and (and (and (and (and (= fmt0 0) (= arg0 (- fmt0 distance))) (>= arg1 fmt0)) (< fmt1 (- (+ fmt0 fmt_length) 1))) (> fmt1 (+ fmt0 1))) (>= arg1 (+ arg0 distance))) (< arg1 (- (+ (+ arg0 distance) fmt_length) 4))) (= arg1 (+ (+ arg0 (* 4 (s_count (- (- fmt1 2) fmt0)))) (* 4 (x_count (- (- fmt1 2) fmt0)))))))
+(flet ($restrict (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (or (= (select_format 0) percent) (= (select_format 0) s)) (= (select_format 0) x)) (= (select_format 0) adr_lo)) (= (select_format 0) adr_medlo)) (= (select_format 0) adr_medhi)) (= (select_form [...]
+(flet ($counterdef (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (if_then_else (and (= (select_format 0) percent) (= (select_format 1) s)) (= (s_count 0) 1) (= (s_count 0) 0)) (if_then_else (and (= (select_format 1) percent) (= (select_format 2) s)) (= (s_count 1) (+ (s_count 0) 1)) (= (s_count 1) (s_count 0)))) (if_then_else (and (= (select_format 2) percent) (= (select_format 3) s)) (= (s_count 2) (+ (s_count 1) 1)) (= (s_count 2) (s_count 1)))) ( [...]
+(flet ($integral (and (or (or (or (or (or (or (or (or (= fmt1 (+ fmt0 0)) (= fmt1 (+ fmt0 1))) (= fmt1 (+ fmt0 2))) (= fmt1 (+ fmt0 3))) (= fmt1 (+ fmt0 4))) (= fmt1 (+ fmt0 5))) (= fmt1 (+ fmt0 6))) (= fmt1 (+ fmt0 7))) (= fmt1 (+ fmt0 8))) (or (or (or (or (or (= arg1 (+ fmt0 0)) (= arg1 (+ fmt0 1))) (= arg1 (+ fmt0 2))) (= arg1 (+ fmt0 3))) (= arg1 (+ fmt0 4))) (= arg1 (+ fmt0 5)))))
+(and (and (and (and (and $concval $attack) $restrict) $counterdef) $integral) (not (and (and (and (and (and (= (select_format fmt1) percent) (= (select_format (+ fmt1 1)) s)) (= (select_format arg1) adr_lo)) (= (select_format (+ arg1 1)) adr_medlo)) (= (select_format (+ arg1 2)) adr_medhi)) (= (select_format (+ arg1 3)) adr_hi))))))))))
diff --git a/test/regress/regress3/Makefile.am b/test/regress/regress3/Makefile.am
new file mode 100644
index 0000000..f45c5bd
--- /dev/null
+++ b/test/regress/regress3/Makefile.am
@@ -0,0 +1,55 @@
+SUBDIRS = .
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	bmc-ibm-1.smt \
+	bmc-ibm-2.smt \
+	bmc-ibm-5.smt \
+	bmc-ibm-7.smt \
+	friedman_n6_i4.smt \
+	hole9.cvc \
+	qwh.35.405.shuffled-as.sat03-1651.smt \
+	eq_diamond14.smt \
+	incorrect1.smt \
+	incorrect2.smt \
+	bug497.cvc \
+	pp-regfile.smt
+
+EXTRA_DIST = $(TESTS) \
+	pp-regfile.smt.expect
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress3 test
+regress regress3 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress1 regress2 regress4
+regress0 regress1 regress2 regress4:
diff --git a/test/regress/regress3/Makefile.in b/test/regress/regress3/Makefile.in
new file mode 100644
index 0000000..2c524db
--- /dev/null
+++ b/test/regress/regress3/Makefile.in
@@ -0,0 +1,1266 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress3
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+SUBDIRS = .
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = bmc-ibm-1.smt \
+	bmc-ibm-2.smt \
+	bmc-ibm-5.smt \
+	bmc-ibm-7.smt \
+	friedman_n6_i4.smt \
+	hole9.cvc \
+	qwh.35.405.shuffled-as.sat03-1651.smt \
+	eq_diamond14.smt \
+	incorrect1.smt \
+	incorrect2.smt \
+	bug497.cvc \
+	pp-regfile.smt
+
+EXTRA_DIST = $(TESTS) \
+	pp-regfile.smt.expect
+
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress3/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress3/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+bmc-ibm-1.smt.log: bmc-ibm-1.smt
+	@p='bmc-ibm-1.smt'; \
+	b='bmc-ibm-1.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bmc-ibm-2.smt.log: bmc-ibm-2.smt
+	@p='bmc-ibm-2.smt'; \
+	b='bmc-ibm-2.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bmc-ibm-5.smt.log: bmc-ibm-5.smt
+	@p='bmc-ibm-5.smt'; \
+	b='bmc-ibm-5.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bmc-ibm-7.smt.log: bmc-ibm-7.smt
+	@p='bmc-ibm-7.smt'; \
+	b='bmc-ibm-7.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+friedman_n6_i4.smt.log: friedman_n6_i4.smt
+	@p='friedman_n6_i4.smt'; \
+	b='friedman_n6_i4.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+hole9.cvc.log: hole9.cvc
+	@p='hole9.cvc'; \
+	b='hole9.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+qwh.35.405.shuffled-as.sat03-1651.smt.log: qwh.35.405.shuffled-as.sat03-1651.smt
+	@p='qwh.35.405.shuffled-as.sat03-1651.smt'; \
+	b='qwh.35.405.shuffled-as.sat03-1651.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+eq_diamond14.smt.log: eq_diamond14.smt
+	@p='eq_diamond14.smt'; \
+	b='eq_diamond14.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+incorrect1.smt.log: incorrect1.smt
+	@p='incorrect1.smt'; \
+	b='incorrect1.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+incorrect2.smt.log: incorrect2.smt
+	@p='incorrect2.smt'; \
+	b='incorrect2.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug497.cvc.log: bug497.cvc
+	@p='bug497.cvc'; \
+	b='bug497.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pp-regfile.smt.log: pp-regfile.smt
+	@p='pp-regfile.smt'; \
+	b='pp-regfile.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress3 test
+regress regress3 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress1 regress2 regress4
+regress0 regress1 regress2 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress3/bmc-ibm-1.smt b/test/regress/regress3/bmc-ibm-1.smt
new file mode 100644
index 0000000..9c210e3
--- /dev/null
+++ b/test/regress/regress3/bmc-ibm-1.smt
@@ -0,0 +1,65567 @@
+
+;;; Taken from SATLIB: SAT-encoded bounded model checking intances
+;;;source: http://people.cs.ubc.ca/~hoos/SATLIB/Benchmarks/SAT/BMC/bmc.tar.gz
+;;;described here: http://people.cs.ubc.ca/~hoos/SATLIB/Benchmarks/SAT/BMC/description.html
+;;;retrieved: Fri Jan 22 19:05:36 EST 2010
+;;;smt file generated using dimacs_to_smt.pl
+
+(benchmark b
+:status sat
+:logic QF_UF
+:extrapreds ((x1))
+: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))
+:extrapreds ((x770))
+:extrapreds ((x771))
+:extrapreds ((x772))
+:extrapreds ((x773))
+:extrapreds ((x774))
+:extrapreds ((x775))
+:extrapreds ((x776))
+:extrapreds ((x777))
+:extrapreds ((x778))
+:extrapreds ((x779))
+:extrapreds ((x780))
+:extrapreds ((x781))
+:extrapreds ((x782))
+:extrapreds ((x783))
+:extrapreds ((x784))
+:extrapreds ((x785))
+:extrapreds ((x786))
+:extrapreds ((x787))
+:extrapreds ((x788))
+:extrapreds ((x789))
+:extrapreds ((x790))
+:extrapreds ((x791))
+:extrapreds ((x792))
+:extrapreds ((x793))
+:extrapreds ((x794))
+:extrapreds ((x795))
+:extrapreds ((x796))
+:extrapreds ((x797))
+:extrapreds ((x798))
+:extrapreds ((x799))
+:extrapreds ((x800))
+:extrapreds ((x801))
+:extrapreds ((x802))
+:extrapreds ((x803))
+:extrapreds ((x804))
+:extrapreds ((x805))
+:extrapreds ((x806))
+:extrapreds ((x807))
+:extrapreds ((x808))
+:extrapreds ((x809))
+:extrapreds ((x810))
+:extrapreds ((x811))
+:extrapreds ((x812))
+:extrapreds ((x813))
+:extrapreds ((x814))
+:extrapreds ((x815))
+:extrapreds ((x816))
+:extrapreds ((x817))
+:extrapreds ((x818))
+:extrapreds ((x819))
+:extrapreds ((x820))
+:extrapreds ((x821))
+:extrapreds ((x822))
+:extrapreds ((x823))
+:extrapreds ((x824))
+:extrapreds ((x825))
+:extrapreds ((x826))
+:extrapreds ((x827))
+:extrapreds ((x828))
+:extrapreds ((x829))
+:extrapreds ((x830))
+:extrapreds ((x831))
+:extrapreds ((x832))
+:extrapreds ((x833))
+:extrapreds ((x834))
+:extrapreds ((x835))
+:extrapreds ((x836))
+:extrapreds ((x837))
+:extrapreds ((x838))
+:extrapreds ((x839))
+:extrapreds ((x840))
+:extrapreds ((x841))
+:extrapreds ((x842))
+:extrapreds ((x843))
+:extrapreds ((x844))
+:extrapreds ((x845))
+:extrapreds ((x846))
+:extrapreds ((x847))
+:extrapreds ((x848))
+:extrapreds ((x849))
+:extrapreds ((x850))
+:extrapreds ((x851))
+:extrapreds ((x852))
+:extrapreds ((x853))
+:extrapreds ((x854))
+:extrapreds ((x855))
+:extrapreds ((x856))
+:extrapreds ((x857))
+:extrapreds ((x858))
+:extrapreds ((x859))
+:extrapreds ((x860))
+:extrapreds ((x861))
+:extrapreds ((x862))
+:extrapreds ((x863))
+:extrapreds ((x864))
+:extrapreds ((x865))
+:extrapreds ((x866))
+:extrapreds ((x867))
+:extrapreds ((x868))
+:extrapreds ((x869))
+:extrapreds ((x870))
+:extrapreds ((x871))
+:extrapreds ((x872))
+:extrapreds ((x873))
+:extrapreds ((x874))
+:extrapreds ((x875))
+:extrapreds ((x876))
+:extrapreds ((x877))
+:extrapreds ((x878))
+:extrapreds ((x879))
+:extrapreds ((x880))
+:extrapreds ((x881))
+:extrapreds ((x882))
+:extrapreds ((x883))
+:extrapreds ((x884))
+:extrapreds ((x885))
+:extrapreds ((x886))
+:extrapreds ((x887))
+:extrapreds ((x888))
+:extrapreds ((x889))
+:extrapreds ((x890))
+:extrapreds ((x891))
+:extrapreds ((x892))
+:extrapreds ((x893))
+:extrapreds ((x894))
+:extrapreds ((x895))
+:extrapreds ((x896))
+:extrapreds ((x897))
+:extrapreds ((x898))
+:extrapreds ((x899))
+:extrapreds ((x900))
+:extrapreds ((x901))
+:extrapreds ((x902))
+:extrapreds ((x903))
+:extrapreds ((x904))
+:extrapreds ((x905))
+:extrapreds ((x906))
+:extrapreds ((x907))
+:extrapreds ((x908))
+:extrapreds ((x909))
+:extrapreds ((x910))
+:extrapreds ((x911))
+:extrapreds ((x912))
+:extrapreds ((x913))
+:extrapreds ((x914))
+:extrapreds ((x915))
+:extrapreds ((x916))
+:extrapreds ((x917))
+:extrapreds ((x918))
+:extrapreds ((x919))
+:extrapreds ((x920))
+:extrapreds ((x921))
+:extrapreds ((x922))
+:extrapreds ((x923))
+:extrapreds ((x924))
+:extrapreds ((x925))
+:extrapreds ((x926))
+:extrapreds ((x927))
+:extrapreds ((x928))
+:extrapreds ((x929))
+:extrapreds ((x930))
+:extrapreds ((x931))
+:extrapreds ((x932))
+:extrapreds ((x933))
+:extrapreds ((x934))
+:extrapreds ((x935))
+:extrapreds ((x936))
+:extrapreds ((x937))
+:extrapreds ((x938))
+:extrapreds ((x939))
+:extrapreds ((x940))
+:extrapreds ((x941))
+:extrapreds ((x942))
+:extrapreds ((x943))
+:extrapreds ((x944))
+:extrapreds ((x945))
+:extrapreds ((x946))
+:extrapreds ((x947))
+:extrapreds ((x948))
+:extrapreds ((x949))
+:extrapreds ((x950))
+:extrapreds ((x951))
+:extrapreds ((x952))
+:extrapreds ((x953))
+:extrapreds ((x954))
+:extrapreds ((x955))
+:extrapreds ((x956))
+:extrapreds ((x957))
+:extrapreds ((x958))
+:extrapreds ((x959))
+:extrapreds ((x960))
+:extrapreds ((x961))
+:extrapreds ((x962))
+:extrapreds ((x963))
+:extrapreds ((x964))
+:extrapreds ((x965))
+:extrapreds ((x966))
+:extrapreds ((x967))
+:extrapreds ((x968))
+:extrapreds ((x969))
+:extrapreds ((x970))
+:extrapreds ((x971))
+:extrapreds ((x972))
+:extrapreds ((x973))
+:extrapreds ((x974))
+:extrapreds ((x975))
+:extrapreds ((x976))
+:extrapreds ((x977))
+:extrapreds ((x978))
+:extrapreds ((x979))
+:extrapreds ((x980))
+:extrapreds ((x981))
+:extrapreds ((x982))
+:extrapreds ((x983))
+:extrapreds ((x984))
+:extrapreds ((x985))
+:extrapreds ((x986))
+:extrapreds ((x987))
+:extrapreds ((x988))
+:extrapreds ((x989))
+:extrapreds ((x990))
+:extrapreds ((x991))
+:extrapreds ((x992))
+:extrapreds ((x993))
+:extrapreds ((x994))
+:extrapreds ((x995))
+:extrapreds ((x996))
+:extrapreds ((x997))
+:extrapreds ((x998))
+:extrapreds ((x999))
+:extrapreds ((x1000))
+:extrapreds ((x1001))
+:extrapreds ((x1002))
+:extrapreds ((x1003))
+:extrapreds ((x1004))
+:extrapreds ((x1005))
+:extrapreds ((x1006))
+:extrapreds ((x1007))
+:extrapreds ((x1008))
+:extrapreds ((x1009))
+:extrapreds ((x1010))
+:extrapreds ((x1011))
+:extrapreds ((x1012))
+:extrapreds ((x1013))
+:extrapreds ((x1014))
+:extrapreds ((x1015))
+:extrapreds ((x1016))
+:extrapreds ((x1017))
+:extrapreds ((x1018))
+:extrapreds ((x1019))
+:extrapreds ((x1020))
+:extrapreds ((x1021))
+:extrapreds ((x1022))
+:extrapreds ((x1023))
+:extrapreds ((x1024))
+:extrapreds ((x1025))
+:extrapreds ((x1026))
+:extrapreds ((x1027))
+:extrapreds ((x1028))
+:extrapreds ((x1029))
+:extrapreds ((x1030))
+:extrapreds ((x1031))
+:extrapreds ((x1032))
+:extrapreds ((x1033))
+:extrapreds ((x1034))
+:extrapreds ((x1035))
+:extrapreds ((x1036))
+:extrapreds ((x1037))
+:extrapreds ((x1038))
+:extrapreds ((x1039))
+:extrapreds ((x1040))
+:extrapreds ((x1041))
+:extrapreds ((x1042))
+:extrapreds ((x1043))
+:extrapreds ((x1044))
+:extrapreds ((x1045))
+:extrapreds ((x1046))
+:extrapreds ((x1047))
+:extrapreds ((x1048))
+:extrapreds ((x1049))
+:extrapreds ((x1050))
+:extrapreds ((x1051))
+:extrapreds ((x1052))
+:extrapreds ((x1053))
+:extrapreds ((x1054))
+:extrapreds ((x1055))
+:extrapreds ((x1056))
+:extrapreds ((x1057))
+:extrapreds ((x1058))
+:extrapreds ((x1059))
+:extrapreds ((x1060))
+:extrapreds ((x1061))
+:extrapreds ((x1062))
+:extrapreds ((x1063))
+:extrapreds ((x1064))
+:extrapreds ((x1065))
+:extrapreds ((x1066))
+:extrapreds ((x1067))
+:extrapreds ((x1068))
+:extrapreds ((x1069))
+:extrapreds ((x1070))
+:extrapreds ((x1071))
+:extrapreds ((x1072))
+:extrapreds ((x1073))
+:extrapreds ((x1074))
+:extrapreds ((x1075))
+:extrapreds ((x1076))
+:extrapreds ((x1077))
+:extrapreds ((x1078))
+:extrapreds ((x1079))
+:extrapreds ((x1080))
+:extrapreds ((x1081))
+:extrapreds ((x1082))
+:extrapreds ((x1083))
+:extrapreds ((x1084))
+:extrapreds ((x1085))
+:extrapreds ((x1086))
+:extrapreds ((x1087))
+:extrapreds ((x1088))
+:extrapreds ((x1089))
+:extrapreds ((x1090))
+:extrapreds ((x1091))
+:extrapreds ((x1092))
+:extrapreds ((x1093))
+:extrapreds ((x1094))
+:extrapreds ((x1095))
+:extrapreds ((x1096))
+:extrapreds ((x1097))
+:extrapreds ((x1098))
+:extrapreds ((x1099))
+:extrapreds ((x1100))
+:extrapreds ((x1101))
+:extrapreds ((x1102))
+:extrapreds ((x1103))
+:extrapreds ((x1104))
+:extrapreds ((x1105))
+:extrapreds ((x1106))
+:extrapreds ((x1107))
+:extrapreds ((x1108))
+:extrapreds ((x1109))
+:extrapreds ((x1110))
+:extrapreds ((x1111))
+:extrapreds ((x1112))
+:extrapreds ((x1113))
+:extrapreds ((x1114))
+:extrapreds ((x1115))
+:extrapreds ((x1116))
+:extrapreds ((x1117))
+:extrapreds ((x1118))
+:extrapreds ((x1119))
+:extrapreds ((x1120))
+:extrapreds ((x1121))
+:extrapreds ((x1122))
+:extrapreds ((x1123))
+:extrapreds ((x1124))
+:extrapreds ((x1125))
+:extrapreds ((x1126))
+:extrapreds ((x1127))
+:extrapreds ((x1128))
+:extrapreds ((x1129))
+:extrapreds ((x1130))
+:extrapreds ((x1131))
+:extrapreds ((x1132))
+:extrapreds ((x1133))
+:extrapreds ((x1134))
+:extrapreds ((x1135))
+:extrapreds ((x1136))
+:extrapreds ((x1137))
+:extrapreds ((x1138))
+:extrapreds ((x1139))
+:extrapreds ((x1140))
+:extrapreds ((x1141))
+:extrapreds ((x1142))
+:extrapreds ((x1143))
+:extrapreds ((x1144))
+:extrapreds ((x1145))
+:extrapreds ((x1146))
+:extrapreds ((x1147))
+:extrapreds ((x1148))
+:extrapreds ((x1149))
+:extrapreds ((x1150))
+:extrapreds ((x1151))
+:extrapreds ((x1152))
+:extrapreds ((x1153))
+:extrapreds ((x1154))
+:extrapreds ((x1155))
+:extrapreds ((x1156))
+:extrapreds ((x1157))
+:extrapreds ((x1158))
+:extrapreds ((x1159))
+:extrapreds ((x1160))
+:extrapreds ((x1161))
+:extrapreds ((x1162))
+:extrapreds ((x1163))
+:extrapreds ((x1164))
+:extrapreds ((x1165))
+:extrapreds ((x1166))
+:extrapreds ((x1167))
+:extrapreds ((x1168))
+:extrapreds ((x1169))
+:extrapreds ((x1170))
+:extrapreds ((x1171))
+:extrapreds ((x1172))
+:extrapreds ((x1173))
+:extrapreds ((x1174))
+:extrapreds ((x1175))
+:extrapreds ((x1176))
+:extrapreds ((x1177))
+:extrapreds ((x1178))
+:extrapreds ((x1179))
+:extrapreds ((x1180))
+:extrapreds ((x1181))
+:extrapreds ((x1182))
+:extrapreds ((x1183))
+:extrapreds ((x1184))
+:extrapreds ((x1185))
+:extrapreds ((x1186))
+:extrapreds ((x1187))
+:extrapreds ((x1188))
+:extrapreds ((x1189))
+:extrapreds ((x1190))
+:extrapreds ((x1191))
+:extrapreds ((x1192))
+:extrapreds ((x1193))
+:extrapreds ((x1194))
+:extrapreds ((x1195))
+:extrapreds ((x1196))
+:extrapreds ((x1197))
+:extrapreds ((x1198))
+:extrapreds ((x1199))
+:extrapreds ((x1200))
+:extrapreds ((x1201))
+:extrapreds ((x1202))
+:extrapreds ((x1203))
+:extrapreds ((x1204))
+:extrapreds ((x1205))
+:extrapreds ((x1206))
+:extrapreds ((x1207))
+:extrapreds ((x1208))
+:extrapreds ((x1209))
+:extrapreds ((x1210))
+:extrapreds ((x1211))
+:extrapreds ((x1212))
+:extrapreds ((x1213))
+:extrapreds ((x1214))
+:extrapreds ((x1215))
+:extrapreds ((x1216))
+:extrapreds ((x1217))
+:extrapreds ((x1218))
+:extrapreds ((x1219))
+:extrapreds ((x1220))
+:extrapreds ((x1221))
+:extrapreds ((x1222))
+:extrapreds ((x1223))
+:extrapreds ((x1224))
+:extrapreds ((x1225))
+:extrapreds ((x1226))
+:extrapreds ((x1227))
+:extrapreds ((x1228))
+:extrapreds ((x1229))
+:extrapreds ((x1230))
+:extrapreds ((x1231))
+:extrapreds ((x1232))
+:extrapreds ((x1233))
+:extrapreds ((x1234))
+:extrapreds ((x1235))
+:extrapreds ((x1236))
+:extrapreds ((x1237))
+:extrapreds ((x1238))
+:extrapreds ((x1239))
+:extrapreds ((x1240))
+:extrapreds ((x1241))
+:extrapreds ((x1242))
+:extrapreds ((x1243))
+:extrapreds ((x1244))
+:extrapreds ((x1245))
+:extrapreds ((x1246))
+:extrapreds ((x1247))
+:extrapreds ((x1248))
+:extrapreds ((x1249))
+:extrapreds ((x1250))
+:extrapreds ((x1251))
+:extrapreds ((x1252))
+:extrapreds ((x1253))
+:extrapreds ((x1254))
+:extrapreds ((x1255))
+:extrapreds ((x1256))
+:extrapreds ((x1257))
+:extrapreds ((x1258))
+:extrapreds ((x1259))
+:extrapreds ((x1260))
+:extrapreds ((x1261))
+:extrapreds ((x1262))
+:extrapreds ((x1263))
+:extrapreds ((x1264))
+:extrapreds ((x1265))
+:extrapreds ((x1266))
+:extrapreds ((x1267))
+:extrapreds ((x1268))
+:extrapreds ((x1269))
+:extrapreds ((x1270))
+:extrapreds ((x1271))
+:extrapreds ((x1272))
+:extrapreds ((x1273))
+:extrapreds ((x1274))
+:extrapreds ((x1275))
+:extrapreds ((x1276))
+:extrapreds ((x1277))
+:extrapreds ((x1278))
+:extrapreds ((x1279))
+:extrapreds ((x1280))
+:extrapreds ((x1281))
+:extrapreds ((x1282))
+:extrapreds ((x1283))
+:extrapreds ((x1284))
+:extrapreds ((x1285))
+:extrapreds ((x1286))
+:extrapreds ((x1287))
+:extrapreds ((x1288))
+:extrapreds ((x1289))
+:extrapreds ((x1290))
+:extrapreds ((x1291))
+:extrapreds ((x1292))
+:extrapreds ((x1293))
+:extrapreds ((x1294))
+:extrapreds ((x1295))
+:extrapreds ((x1296))
+:extrapreds ((x1297))
+:extrapreds ((x1298))
+:extrapreds ((x1299))
+:extrapreds ((x1300))
+:extrapreds ((x1301))
+:extrapreds ((x1302))
+:extrapreds ((x1303))
+:extrapreds ((x1304))
+:extrapreds ((x1305))
+:extrapreds ((x1306))
+:extrapreds ((x1307))
+:extrapreds ((x1308))
+:extrapreds ((x1309))
+:extrapreds ((x1310))
+:extrapreds ((x1311))
+:extrapreds ((x1312))
+:extrapreds ((x1313))
+:extrapreds ((x1314))
+:extrapreds ((x1315))
+:extrapreds ((x1316))
+:extrapreds ((x1317))
+:extrapreds ((x1318))
+:extrapreds ((x1319))
+:extrapreds ((x1320))
+:extrapreds ((x1321))
+:extrapreds ((x1322))
+:extrapreds ((x1323))
+:extrapreds ((x1324))
+:extrapreds ((x1325))
+:extrapreds ((x1326))
+:extrapreds ((x1327))
+:extrapreds ((x1328))
+:extrapreds ((x1329))
+:extrapreds ((x1330))
+:extrapreds ((x1331))
+:extrapreds ((x1332))
+:extrapreds ((x1333))
+:extrapreds ((x1334))
+:extrapreds ((x1335))
+:extrapreds ((x1336))
+:extrapreds ((x1337))
+:extrapreds ((x1338))
+:extrapreds ((x1339))
+:extrapreds ((x1340))
+:extrapreds ((x1341))
+:extrapreds ((x1342))
+:extrapreds ((x1343))
+:extrapreds ((x1344))
+:extrapreds ((x1345))
+:extrapreds ((x1346))
+:extrapreds ((x1347))
+:extrapreds ((x1348))
+:extrapreds ((x1349))
+:extrapreds ((x1350))
+:extrapreds ((x1351))
+:extrapreds ((x1352))
+:extrapreds ((x1353))
+:extrapreds ((x1354))
+:extrapreds ((x1355))
+:extrapreds ((x1356))
+:extrapreds ((x1357))
+:extrapreds ((x1358))
+:extrapreds ((x1359))
+:extrapreds ((x1360))
+:extrapreds ((x1361))
+:extrapreds ((x1362))
+:extrapreds ((x1363))
+:extrapreds ((x1364))
+:extrapreds ((x1365))
+:extrapreds ((x1366))
+:extrapreds ((x1367))
+:extrapreds ((x1368))
+:extrapreds ((x1369))
+:extrapreds ((x1370))
+:extrapreds ((x1371))
+:extrapreds ((x1372))
+:extrapreds ((x1373))
+:extrapreds ((x1374))
+:extrapreds ((x1375))
+:extrapreds ((x1376))
+:extrapreds ((x1377))
+:extrapreds ((x1378))
+:extrapreds ((x1379))
+:extrapreds ((x1380))
+:extrapreds ((x1381))
+:extrapreds ((x1382))
+:extrapreds ((x1383))
+:extrapreds ((x1384))
+:extrapreds ((x1385))
+:extrapreds ((x1386))
+:extrapreds ((x1387))
+:extrapreds ((x1388))
+:extrapreds ((x1389))
+:extrapreds ((x1390))
+:extrapreds ((x1391))
+:extrapreds ((x1392))
+:extrapreds ((x1393))
+:extrapreds ((x1394))
+:extrapreds ((x1395))
+:extrapreds ((x1396))
+:extrapreds ((x1397))
+:extrapreds ((x1398))
+:extrapreds ((x1399))
+:extrapreds ((x1400))
+:extrapreds ((x1401))
+:extrapreds ((x1402))
+:extrapreds ((x1403))
+:extrapreds ((x1404))
+:extrapreds ((x1405))
+:extrapreds ((x1406))
+:extrapreds ((x1407))
+:extrapreds ((x1408))
+:extrapreds ((x1409))
+:extrapreds ((x1410))
+:extrapreds ((x1411))
+:extrapreds ((x1412))
+:extrapreds ((x1413))
+:extrapreds ((x1414))
+:extrapreds ((x1415))
+:extrapreds ((x1416))
+:extrapreds ((x1417))
+:extrapreds ((x1418))
+:extrapreds ((x1419))
+:extrapreds ((x1420))
+:extrapreds ((x1421))
+:extrapreds ((x1422))
+:extrapreds ((x1423))
+:extrapreds ((x1424))
+:extrapreds ((x1425))
+:extrapreds ((x1426))
+:extrapreds ((x1427))
+:extrapreds ((x1428))
+:extrapreds ((x1429))
+:extrapreds ((x1430))
+:extrapreds ((x1431))
+:extrapreds ((x1432))
+:extrapreds ((x1433))
+:extrapreds ((x1434))
+:extrapreds ((x1435))
+:extrapreds ((x1436))
+:extrapreds ((x1437))
+:extrapreds ((x1438))
+:extrapreds ((x1439))
+:extrapreds ((x1440))
+:extrapreds ((x1441))
+:extrapreds ((x1442))
+:extrapreds ((x1443))
+:extrapreds ((x1444))
+:extrapreds ((x1445))
+:extrapreds ((x1446))
+:extrapreds ((x1447))
+:extrapreds ((x1448))
+:extrapreds ((x1449))
+:extrapreds ((x1450))
+:extrapreds ((x1451))
+:extrapreds ((x1452))
+:extrapreds ((x1453))
+:extrapreds ((x1454))
+:extrapreds ((x1455))
+:extrapreds ((x1456))
+:extrapreds ((x1457))
+:extrapreds ((x1458))
+:extrapreds ((x1459))
+:extrapreds ((x1460))
+:extrapreds ((x1461))
+:extrapreds ((x1462))
+:extrapreds ((x1463))
+:extrapreds ((x1464))
+:extrapreds ((x1465))
+:extrapreds ((x1466))
+:extrapreds ((x1467))
+:extrapreds ((x1468))
+:extrapreds ((x1469))
+:extrapreds ((x1470))
+:extrapreds ((x1471))
+:extrapreds ((x1472))
+:extrapreds ((x1473))
+:extrapreds ((x1474))
+:extrapreds ((x1475))
+:extrapreds ((x1476))
+:extrapreds ((x1477))
+:extrapreds ((x1478))
+:extrapreds ((x1479))
+:extrapreds ((x1480))
+:extrapreds ((x1481))
+:extrapreds ((x1482))
+:extrapreds ((x1483))
+:extrapreds ((x1484))
+:extrapreds ((x1485))
+:extrapreds ((x1486))
+:extrapreds ((x1487))
+:extrapreds ((x1488))
+:extrapreds ((x1489))
+:extrapreds ((x1490))
+:extrapreds ((x1491))
+:extrapreds ((x1492))
+:extrapreds ((x1493))
+:extrapreds ((x1494))
+:extrapreds ((x1495))
+:extrapreds ((x1496))
+:extrapreds ((x1497))
+:extrapreds ((x1498))
+:extrapreds ((x1499))
+:extrapreds ((x1500))
+:extrapreds ((x1501))
+:extrapreds ((x1502))
+:extrapreds ((x1503))
+:extrapreds ((x1504))
+:extrapreds ((x1505))
+:extrapreds ((x1506))
+:extrapreds ((x1507))
+:extrapreds ((x1508))
+:extrapreds ((x1509))
+:extrapreds ((x1510))
+:extrapreds ((x1511))
+:extrapreds ((x1512))
+:extrapreds ((x1513))
+:extrapreds ((x1514))
+:extrapreds ((x1515))
+:extrapreds ((x1516))
+:extrapreds ((x1517))
+:extrapreds ((x1518))
+:extrapreds ((x1519))
+:extrapreds ((x1520))
+:extrapreds ((x1521))
+:extrapreds ((x1522))
+:extrapreds ((x1523))
+:extrapreds ((x1524))
+:extrapreds ((x1525))
+:extrapreds ((x1526))
+:extrapreds ((x1527))
+:extrapreds ((x1528))
+:extrapreds ((x1529))
+:extrapreds ((x1530))
+:extrapreds ((x1531))
+:extrapreds ((x1532))
+:extrapreds ((x1533))
+:extrapreds ((x1534))
+:extrapreds ((x1535))
+:extrapreds ((x1536))
+:extrapreds ((x1537))
+:extrapreds ((x1538))
+:extrapreds ((x1539))
+:extrapreds ((x1540))
+:extrapreds ((x1541))
+:extrapreds ((x1542))
+:extrapreds ((x1543))
+:extrapreds ((x1544))
+:extrapreds ((x1545))
+:extrapreds ((x1546))
+:extrapreds ((x1547))
+:extrapreds ((x1548))
+:extrapreds ((x1549))
+:extrapreds ((x1550))
+:extrapreds ((x1551))
+:extrapreds ((x1552))
+:extrapreds ((x1553))
+:extrapreds ((x1554))
+:extrapreds ((x1555))
+:extrapreds ((x1556))
+:extrapreds ((x1557))
+:extrapreds ((x1558))
+:extrapreds ((x1559))
+:extrapreds ((x1560))
+:extrapreds ((x1561))
+:extrapreds ((x1562))
+:extrapreds ((x1563))
+:extrapreds ((x1564))
+:extrapreds ((x1565))
+:extrapreds ((x1566))
+:extrapreds ((x1567))
+:extrapreds ((x1568))
+:extrapreds ((x1569))
+:extrapreds ((x1570))
+:extrapreds ((x1571))
+:extrapreds ((x1572))
+:extrapreds ((x1573))
+:extrapreds ((x1574))
+:extrapreds ((x1575))
+:extrapreds ((x1576))
+:extrapreds ((x1577))
+:extrapreds ((x1578))
+:extrapreds ((x1579))
+:extrapreds ((x1580))
+:extrapreds ((x1581))
+:extrapreds ((x1582))
+:extrapreds ((x1583))
+:extrapreds ((x1584))
+:extrapreds ((x1585))
+:extrapreds ((x1586))
+:extrapreds ((x1587))
+:extrapreds ((x1588))
+:extrapreds ((x1589))
+:extrapreds ((x1590))
+:extrapreds ((x1591))
+:extrapreds ((x1592))
+:extrapreds ((x1593))
+:extrapreds ((x1594))
+:extrapreds ((x1595))
+:extrapreds ((x1596))
+:extrapreds ((x1597))
+:extrapreds ((x1598))
+:extrapreds ((x1599))
+:extrapreds ((x1600))
+:extrapreds ((x1601))
+:extrapreds ((x1602))
+:extrapreds ((x1603))
+:extrapreds ((x1604))
+:extrapreds ((x1605))
+:extrapreds ((x1606))
+:extrapreds ((x1607))
+:extrapreds ((x1608))
+:extrapreds ((x1609))
+:extrapreds ((x1610))
+:extrapreds ((x1611))
+:extrapreds ((x1612))
+:extrapreds ((x1613))
+:extrapreds ((x1614))
+:extrapreds ((x1615))
+:extrapreds ((x1616))
+:extrapreds ((x1617))
+:extrapreds ((x1618))
+:extrapreds ((x1619))
+:extrapreds ((x1620))
+:extrapreds ((x1621))
+:extrapreds ((x1622))
+:extrapreds ((x1623))
+:extrapreds ((x1624))
+:extrapreds ((x1625))
+:extrapreds ((x1626))
+:extrapreds ((x1627))
+:extrapreds ((x1628))
+:extrapreds ((x1629))
+:extrapreds ((x1630))
+:extrapreds ((x1631))
+:extrapreds ((x1632))
+:extrapreds ((x1633))
+:extrapreds ((x1634))
+:extrapreds ((x1635))
+:extrapreds ((x1636))
+:extrapreds ((x1637))
+:extrapreds ((x1638))
+:extrapreds ((x1639))
+:extrapreds ((x1640))
+:extrapreds ((x1641))
+:extrapreds ((x1642))
+:extrapreds ((x1643))
+:extrapreds ((x1644))
+:extrapreds ((x1645))
+:extrapreds ((x1646))
+:extrapreds ((x1647))
+:extrapreds ((x1648))
+:extrapreds ((x1649))
+:extrapreds ((x1650))
+:extrapreds ((x1651))
+:extrapreds ((x1652))
+:extrapreds ((x1653))
+:extrapreds ((x1654))
+:extrapreds ((x1655))
+:extrapreds ((x1656))
+:extrapreds ((x1657))
+:extrapreds ((x1658))
+:extrapreds ((x1659))
+:extrapreds ((x1660))
+:extrapreds ((x1661))
+:extrapreds ((x1662))
+:extrapreds ((x1663))
+:extrapreds ((x1664))
+:extrapreds ((x1665))
+:extrapreds ((x1666))
+:extrapreds ((x1667))
+:extrapreds ((x1668))
+:extrapreds ((x1669))
+:extrapreds ((x1670))
+:extrapreds ((x1671))
+:extrapreds ((x1672))
+:extrapreds ((x1673))
+:extrapreds ((x1674))
+:extrapreds ((x1675))
+:extrapreds ((x1676))
+:extrapreds ((x1677))
+:extrapreds ((x1678))
+:extrapreds ((x1679))
+:extrapreds ((x1680))
+:extrapreds ((x1681))
+:extrapreds ((x1682))
+:extrapreds ((x1683))
+:extrapreds ((x1684))
+:extrapreds ((x1685))
+:extrapreds ((x1686))
+:extrapreds ((x1687))
+:extrapreds ((x1688))
+:extrapreds ((x1689))
+:extrapreds ((x1690))
+:extrapreds ((x1691))
+:extrapreds ((x1692))
+:extrapreds ((x1693))
+:extrapreds ((x1694))
+:extrapreds ((x1695))
+:extrapreds ((x1696))
+:extrapreds ((x1697))
+:extrapreds ((x1698))
+:extrapreds ((x1699))
+:extrapreds ((x1700))
+:extrapreds ((x1701))
+:extrapreds ((x1702))
+:extrapreds ((x1703))
+:extrapreds ((x1704))
+:extrapreds ((x1705))
+:extrapreds ((x1706))
+:extrapreds ((x1707))
+:extrapreds ((x1708))
+:extrapreds ((x1709))
+:extrapreds ((x1710))
+:extrapreds ((x1711))
+:extrapreds ((x1712))
+:extrapreds ((x1713))
+:extrapreds ((x1714))
+:extrapreds ((x1715))
+:extrapreds ((x1716))
+:extrapreds ((x1717))
+:extrapreds ((x1718))
+:extrapreds ((x1719))
+:extrapreds ((x1720))
+:extrapreds ((x1721))
+:extrapreds ((x1722))
+:extrapreds ((x1723))
+:extrapreds ((x1724))
+:extrapreds ((x1725))
+:extrapreds ((x1726))
+:extrapreds ((x1727))
+:extrapreds ((x1728))
+:extrapreds ((x1729))
+:extrapreds ((x1730))
+:extrapreds ((x1731))
+:extrapreds ((x1732))
+:extrapreds ((x1733))
+:extrapreds ((x1734))
+:extrapreds ((x1735))
+:extrapreds ((x1736))
+:extrapreds ((x1737))
+:extrapreds ((x1738))
+:extrapreds ((x1739))
+:extrapreds ((x1740))
+:extrapreds ((x1741))
+:extrapreds ((x1742))
+:extrapreds ((x1743))
+:extrapreds ((x1744))
+:extrapreds ((x1745))
+:extrapreds ((x1746))
+:extrapreds ((x1747))
+:extrapreds ((x1748))
+:extrapreds ((x1749))
+:extrapreds ((x1750))
+:extrapreds ((x1751))
+:extrapreds ((x1752))
+:extrapreds ((x1753))
+:extrapreds ((x1754))
+:extrapreds ((x1755))
+:extrapreds ((x1756))
+:extrapreds ((x1757))
+:extrapreds ((x1758))
+:extrapreds ((x1759))
+:extrapreds ((x1760))
+:extrapreds ((x1761))
+:extrapreds ((x1762))
+:extrapreds ((x1763))
+:extrapreds ((x1764))
+:extrapreds ((x1765))
+:extrapreds ((x1766))
+:extrapreds ((x1767))
+:extrapreds ((x1768))
+:extrapreds ((x1769))
+:extrapreds ((x1770))
+:extrapreds ((x1771))
+:extrapreds ((x1772))
+:extrapreds ((x1773))
+:extrapreds ((x1774))
+:extrapreds ((x1775))
+:extrapreds ((x1776))
+:extrapreds ((x1777))
+:extrapreds ((x1778))
+:extrapreds ((x1779))
+:extrapreds ((x1780))
+:extrapreds ((x1781))
+:extrapreds ((x1782))
+:extrapreds ((x1783))
+:extrapreds ((x1784))
+:extrapreds ((x1785))
+:extrapreds ((x1786))
+:extrapreds ((x1787))
+:extrapreds ((x1788))
+:extrapreds ((x1789))
+:extrapreds ((x1790))
+:extrapreds ((x1791))
+:extrapreds ((x1792))
+:extrapreds ((x1793))
+:extrapreds ((x1794))
+:extrapreds ((x1795))
+:extrapreds ((x1796))
+:extrapreds ((x1797))
+:extrapreds ((x1798))
+:extrapreds ((x1799))
+:extrapreds ((x1800))
+:extrapreds ((x1801))
+:extrapreds ((x1802))
+:extrapreds ((x1803))
+:extrapreds ((x1804))
+:extrapreds ((x1805))
+:extrapreds ((x1806))
+:extrapreds ((x1807))
+:extrapreds ((x1808))
+:extrapreds ((x1809))
+:extrapreds ((x1810))
+:extrapreds ((x1811))
+:extrapreds ((x1812))
+:extrapreds ((x1813))
+:extrapreds ((x1814))
+:extrapreds ((x1815))
+:extrapreds ((x1816))
+:extrapreds ((x1817))
+:extrapreds ((x1818))
+:extrapreds ((x1819))
+:extrapreds ((x1820))
+:extrapreds ((x1821))
+:extrapreds ((x1822))
+:extrapreds ((x1823))
+:extrapreds ((x1824))
+:extrapreds ((x1825))
+:extrapreds ((x1826))
+:extrapreds ((x1827))
+:extrapreds ((x1828))
+:extrapreds ((x1829))
+:extrapreds ((x1830))
+:extrapreds ((x1831))
+:extrapreds ((x1832))
+:extrapreds ((x1833))
+:extrapreds ((x1834))
+:extrapreds ((x1835))
+:extrapreds ((x1836))
+:extrapreds ((x1837))
+:extrapreds ((x1838))
+:extrapreds ((x1839))
+:extrapreds ((x1840))
+:extrapreds ((x1841))
+:extrapreds ((x1842))
+:extrapreds ((x1843))
+:extrapreds ((x1844))
+:extrapreds ((x1845))
+:extrapreds ((x1846))
+:extrapreds ((x1847))
+:extrapreds ((x1848))
+:extrapreds ((x1849))
+:extrapreds ((x1850))
+:extrapreds ((x1851))
+:extrapreds ((x1852))
+:extrapreds ((x1853))
+:extrapreds ((x1854))
+:extrapreds ((x1855))
+:extrapreds ((x1856))
+:extrapreds ((x1857))
+:extrapreds ((x1858))
+:extrapreds ((x1859))
+:extrapreds ((x1860))
+:extrapreds ((x1861))
+:extrapreds ((x1862))
+:extrapreds ((x1863))
+:extrapreds ((x1864))
+:extrapreds ((x1865))
+:extrapreds ((x1866))
+:extrapreds ((x1867))
+:extrapreds ((x1868))
+:extrapreds ((x1869))
+:extrapreds ((x1870))
+:extrapreds ((x1871))
+:extrapreds ((x1872))
+:extrapreds ((x1873))
+:extrapreds ((x1874))
+:extrapreds ((x1875))
+:extrapreds ((x1876))
+:extrapreds ((x1877))
+:extrapreds ((x1878))
+:extrapreds ((x1879))
+:extrapreds ((x1880))
+:extrapreds ((x1881))
+:extrapreds ((x1882))
+:extrapreds ((x1883))
+:extrapreds ((x1884))
+:extrapreds ((x1885))
+:extrapreds ((x1886))
+:extrapreds ((x1887))
+:extrapreds ((x1888))
+:extrapreds ((x1889))
+:extrapreds ((x1890))
+:extrapreds ((x1891))
+:extrapreds ((x1892))
+:extrapreds ((x1893))
+:extrapreds ((x1894))
+:extrapreds ((x1895))
+:extrapreds ((x1896))
+:extrapreds ((x1897))
+:extrapreds ((x1898))
+:extrapreds ((x1899))
+:extrapreds ((x1900))
+:extrapreds ((x1901))
+:extrapreds ((x1902))
+:extrapreds ((x1903))
+:extrapreds ((x1904))
+:extrapreds ((x1905))
+:extrapreds ((x1906))
+:extrapreds ((x1907))
+:extrapreds ((x1908))
+:extrapreds ((x1909))
+:extrapreds ((x1910))
+:extrapreds ((x1911))
+:extrapreds ((x1912))
+:extrapreds ((x1913))
+:extrapreds ((x1914))
+:extrapreds ((x1915))
+:extrapreds ((x1916))
+:extrapreds ((x1917))
+:extrapreds ((x1918))
+:extrapreds ((x1919))
+:extrapreds ((x1920))
+:extrapreds ((x1921))
+:extrapreds ((x1922))
+:extrapreds ((x1923))
+:extrapreds ((x1924))
+:extrapreds ((x1925))
+:extrapreds ((x1926))
+:extrapreds ((x1927))
+:extrapreds ((x1928))
+:extrapreds ((x1929))
+:extrapreds ((x1930))
+:extrapreds ((x1931))
+:extrapreds ((x1932))
+:extrapreds ((x1933))
+:extrapreds ((x1934))
+:extrapreds ((x1935))
+:extrapreds ((x1936))
+:extrapreds ((x1937))
+:extrapreds ((x1938))
+:extrapreds ((x1939))
+:extrapreds ((x1940))
+:extrapreds ((x1941))
+:extrapreds ((x1942))
+:extrapreds ((x1943))
+:extrapreds ((x1944))
+:extrapreds ((x1945))
+:extrapreds ((x1946))
+:extrapreds ((x1947))
+:extrapreds ((x1948))
+:extrapreds ((x1949))
+:extrapreds ((x1950))
+:extrapreds ((x1951))
+:extrapreds ((x1952))
+:extrapreds ((x1953))
+:extrapreds ((x1954))
+:extrapreds ((x1955))
+:extrapreds ((x1956))
+:extrapreds ((x1957))
+:extrapreds ((x1958))
+:extrapreds ((x1959))
+:extrapreds ((x1960))
+:extrapreds ((x1961))
+:extrapreds ((x1962))
+:extrapreds ((x1963))
+:extrapreds ((x1964))
+:extrapreds ((x1965))
+:extrapreds ((x1966))
+:extrapreds ((x1967))
+:extrapreds ((x1968))
+:extrapreds ((x1969))
+:extrapreds ((x1970))
+:extrapreds ((x1971))
+:extrapreds ((x1972))
+:extrapreds ((x1973))
+:extrapreds ((x1974))
+:extrapreds ((x1975))
+:extrapreds ((x1976))
+:extrapreds ((x1977))
+:extrapreds ((x1978))
+:extrapreds ((x1979))
+:extrapreds ((x1980))
+:extrapreds ((x1981))
+:extrapreds ((x1982))
+:extrapreds ((x1983))
+:extrapreds ((x1984))
+:extrapreds ((x1985))
+:extrapreds ((x1986))
+:extrapreds ((x1987))
+:extrapreds ((x1988))
+:extrapreds ((x1989))
+:extrapreds ((x1990))
+:extrapreds ((x1991))
+:extrapreds ((x1992))
+:extrapreds ((x1993))
+:extrapreds ((x1994))
+:extrapreds ((x1995))
+:extrapreds ((x1996))
+:extrapreds ((x1997))
+:extrapreds ((x1998))
+:extrapreds ((x1999))
+:extrapreds ((x2000))
+:extrapreds ((x2001))
+:extrapreds ((x2002))
+:extrapreds ((x2003))
+:extrapreds ((x2004))
+:extrapreds ((x2005))
+:extrapreds ((x2006))
+:extrapreds ((x2007))
+:extrapreds ((x2008))
+:extrapreds ((x2009))
+:extrapreds ((x2010))
+:extrapreds ((x2011))
+:extrapreds ((x2012))
+:extrapreds ((x2013))
+:extrapreds ((x2014))
+:extrapreds ((x2015))
+:extrapreds ((x2016))
+:extrapreds ((x2017))
+:extrapreds ((x2018))
+:extrapreds ((x2019))
+:extrapreds ((x2020))
+:extrapreds ((x2021))
+:extrapreds ((x2022))
+:extrapreds ((x2023))
+:extrapreds ((x2024))
+:extrapreds ((x2025))
+:extrapreds ((x2026))
+:extrapreds ((x2027))
+:extrapreds ((x2028))
+:extrapreds ((x2029))
+:extrapreds ((x2030))
+:extrapreds ((x2031))
+:extrapreds ((x2032))
+:extrapreds ((x2033))
+:extrapreds ((x2034))
+:extrapreds ((x2035))
+:extrapreds ((x2036))
+:extrapreds ((x2037))
+:extrapreds ((x2038))
+:extrapreds ((x2039))
+:extrapreds ((x2040))
+:extrapreds ((x2041))
+:extrapreds ((x2042))
+:extrapreds ((x2043))
+:extrapreds ((x2044))
+:extrapreds ((x2045))
+:extrapreds ((x2046))
+:extrapreds ((x2047))
+:extrapreds ((x2048))
+:extrapreds ((x2049))
+:extrapreds ((x2050))
+:extrapreds ((x2051))
+:extrapreds ((x2052))
+:extrapreds ((x2053))
+:extrapreds ((x2054))
+:extrapreds ((x2055))
+:extrapreds ((x2056))
+:extrapreds ((x2057))
+:extrapreds ((x2058))
+:extrapreds ((x2059))
+:extrapreds ((x2060))
+:extrapreds ((x2061))
+:extrapreds ((x2062))
+:extrapreds ((x2063))
+:extrapreds ((x2064))
+:extrapreds ((x2065))
+:extrapreds ((x2066))
+:extrapreds ((x2067))
+:extrapreds ((x2068))
+:extrapreds ((x2069))
+:extrapreds ((x2070))
+:extrapreds ((x2071))
+:extrapreds ((x2072))
+:extrapreds ((x2073))
+:extrapreds ((x2074))
+:extrapreds ((x2075))
+:extrapreds ((x2076))
+:extrapreds ((x2077))
+:extrapreds ((x2078))
+:extrapreds ((x2079))
+:extrapreds ((x2080))
+:extrapreds ((x2081))
+:extrapreds ((x2082))
+:extrapreds ((x2083))
+:extrapreds ((x2084))
+:extrapreds ((x2085))
+:extrapreds ((x2086))
+:extrapreds ((x2087))
+:extrapreds ((x2088))
+:extrapreds ((x2089))
+:extrapreds ((x2090))
+:extrapreds ((x2091))
+:extrapreds ((x2092))
+:extrapreds ((x2093))
+:extrapreds ((x2094))
+:extrapreds ((x2095))
+:extrapreds ((x2096))
+:extrapreds ((x2097))
+:extrapreds ((x2098))
+:extrapreds ((x2099))
+:extrapreds ((x2100))
+:extrapreds ((x2101))
+:extrapreds ((x2102))
+:extrapreds ((x2103))
+:extrapreds ((x2104))
+:extrapreds ((x2105))
+:extrapreds ((x2106))
+:extrapreds ((x2107))
+:extrapreds ((x2108))
+:extrapreds ((x2109))
+:extrapreds ((x2110))
+:extrapreds ((x2111))
+:extrapreds ((x2112))
+:extrapreds ((x2113))
+:extrapreds ((x2114))
+:extrapreds ((x2115))
+:extrapreds ((x2116))
+:extrapreds ((x2117))
+:extrapreds ((x2118))
+:extrapreds ((x2119))
+:extrapreds ((x2120))
+:extrapreds ((x2121))
+:extrapreds ((x2122))
+:extrapreds ((x2123))
+:extrapreds ((x2124))
+:extrapreds ((x2125))
+:extrapreds ((x2126))
+:extrapreds ((x2127))
+:extrapreds ((x2128))
+:extrapreds ((x2129))
+:extrapreds ((x2130))
+:extrapreds ((x2131))
+:extrapreds ((x2132))
+:extrapreds ((x2133))
+:extrapreds ((x2134))
+:extrapreds ((x2135))
+:extrapreds ((x2136))
+:extrapreds ((x2137))
+:extrapreds ((x2138))
+:extrapreds ((x2139))
+:extrapreds ((x2140))
+:extrapreds ((x2141))
+:extrapreds ((x2142))
+:extrapreds ((x2143))
+:extrapreds ((x2144))
+:extrapreds ((x2145))
+:extrapreds ((x2146))
+:extrapreds ((x2147))
+:extrapreds ((x2148))
+:extrapreds ((x2149))
+:extrapreds ((x2150))
+:extrapreds ((x2151))
+:extrapreds ((x2152))
+:extrapreds ((x2153))
+:extrapreds ((x2154))
+:extrapreds ((x2155))
+:extrapreds ((x2156))
+:extrapreds ((x2157))
+:extrapreds ((x2158))
+:extrapreds ((x2159))
+:extrapreds ((x2160))
+:extrapreds ((x2161))
+:extrapreds ((x2162))
+:extrapreds ((x2163))
+:extrapreds ((x2164))
+:extrapreds ((x2165))
+:extrapreds ((x2166))
+:extrapreds ((x2167))
+:extrapreds ((x2168))
+:extrapreds ((x2169))
+:extrapreds ((x2170))
+:extrapreds ((x2171))
+:extrapreds ((x2172))
+:extrapreds ((x2173))
+:extrapreds ((x2174))
+:extrapreds ((x2175))
+:extrapreds ((x2176))
+:extrapreds ((x2177))
+:extrapreds ((x2178))
+:extrapreds ((x2179))
+:extrapreds ((x2180))
+:extrapreds ((x2181))
+:extrapreds ((x2182))
+:extrapreds ((x2183))
+:extrapreds ((x2184))
+:extrapreds ((x2185))
+:extrapreds ((x2186))
+:extrapreds ((x2187))
+:extrapreds ((x2188))
+:extrapreds ((x2189))
+:extrapreds ((x2190))
+:extrapreds ((x2191))
+:extrapreds ((x2192))
+:extrapreds ((x2193))
+:extrapreds ((x2194))
+:extrapreds ((x2195))
+:extrapreds ((x2196))
+:extrapreds ((x2197))
+:extrapreds ((x2198))
+:extrapreds ((x2199))
+:extrapreds ((x2200))
+:extrapreds ((x2201))
+:extrapreds ((x2202))
+:extrapreds ((x2203))
+:extrapreds ((x2204))
+:extrapreds ((x2205))
+:extrapreds ((x2206))
+:extrapreds ((x2207))
+:extrapreds ((x2208))
+:extrapreds ((x2209))
+:extrapreds ((x2210))
+:extrapreds ((x2211))
+:extrapreds ((x2212))
+:extrapreds ((x2213))
+:extrapreds ((x2214))
+:extrapreds ((x2215))
+:extrapreds ((x2216))
+:extrapreds ((x2217))
+:extrapreds ((x2218))
+:extrapreds ((x2219))
+:extrapreds ((x2220))
+:extrapreds ((x2221))
+:extrapreds ((x2222))
+:extrapreds ((x2223))
+:extrapreds ((x2224))
+:extrapreds ((x2225))
+:extrapreds ((x2226))
+:extrapreds ((x2227))
+:extrapreds ((x2228))
+:extrapreds ((x2229))
+:extrapreds ((x2230))
+:extrapreds ((x2231))
+:extrapreds ((x2232))
+:extrapreds ((x2233))
+:extrapreds ((x2234))
+:extrapreds ((x2235))
+:extrapreds ((x2236))
+:extrapreds ((x2237))
+:extrapreds ((x2238))
+:extrapreds ((x2239))
+:extrapreds ((x2240))
+:extrapreds ((x2241))
+:extrapreds ((x2242))
+:extrapreds ((x2243))
+:extrapreds ((x2244))
+:extrapreds ((x2245))
+:extrapreds ((x2246))
+:extrapreds ((x2247))
+:extrapreds ((x2248))
+:extrapreds ((x2249))
+:extrapreds ((x2250))
+:extrapreds ((x2251))
+:extrapreds ((x2252))
+:extrapreds ((x2253))
+:extrapreds ((x2254))
+:extrapreds ((x2255))
+:extrapreds ((x2256))
+:extrapreds ((x2257))
+:extrapreds ((x2258))
+:extrapreds ((x2259))
+:extrapreds ((x2260))
+:extrapreds ((x2261))
+:extrapreds ((x2262))
+:extrapreds ((x2263))
+:extrapreds ((x2264))
+:extrapreds ((x2265))
+:extrapreds ((x2266))
+:extrapreds ((x2267))
+:extrapreds ((x2268))
+:extrapreds ((x2269))
+:extrapreds ((x2270))
+:extrapreds ((x2271))
+:extrapreds ((x2272))
+:extrapreds ((x2273))
+:extrapreds ((x2274))
+:extrapreds ((x2275))
+:extrapreds ((x2276))
+:extrapreds ((x2277))
+:extrapreds ((x2278))
+:extrapreds ((x2279))
+:extrapreds ((x2280))
+:extrapreds ((x2281))
+:extrapreds ((x2282))
+:extrapreds ((x2283))
+:extrapreds ((x2284))
+:extrapreds ((x2285))
+:extrapreds ((x2286))
+:extrapreds ((x2287))
+:extrapreds ((x2288))
+:extrapreds ((x2289))
+:extrapreds ((x2290))
+:extrapreds ((x2291))
+:extrapreds ((x2292))
+:extrapreds ((x2293))
+:extrapreds ((x2294))
+:extrapreds ((x2295))
+:extrapreds ((x2296))
+:extrapreds ((x2297))
+:extrapreds ((x2298))
+:extrapreds ((x2299))
+:extrapreds ((x2300))
+:extrapreds ((x2301))
+:extrapreds ((x2302))
+:extrapreds ((x2303))
+:extrapreds ((x2304))
+:extrapreds ((x2305))
+:extrapreds ((x2306))
+:extrapreds ((x2307))
+:extrapreds ((x2308))
+:extrapreds ((x2309))
+:extrapreds ((x2310))
+:extrapreds ((x2311))
+:extrapreds ((x2312))
+:extrapreds ((x2313))
+:extrapreds ((x2314))
+:extrapreds ((x2315))
+:extrapreds ((x2316))
+:extrapreds ((x2317))
+:extrapreds ((x2318))
+:extrapreds ((x2319))
+:extrapreds ((x2320))
+:extrapreds ((x2321))
+:extrapreds ((x2322))
+:extrapreds ((x2323))
+:extrapreds ((x2324))
+:extrapreds ((x2325))
+:extrapreds ((x2326))
+:extrapreds ((x2327))
+:extrapreds ((x2328))
+:extrapreds ((x2329))
+:extrapreds ((x2330))
+:extrapreds ((x2331))
+:extrapreds ((x2332))
+:extrapreds ((x2333))
+:extrapreds ((x2334))
+:extrapreds ((x2335))
+:extrapreds ((x2336))
+:extrapreds ((x2337))
+:extrapreds ((x2338))
+:extrapreds ((x2339))
+:extrapreds ((x2340))
+:extrapreds ((x2341))
+:extrapreds ((x2342))
+:extrapreds ((x2343))
+:extrapreds ((x2344))
+:extrapreds ((x2345))
+:extrapreds ((x2346))
+:extrapreds ((x2347))
+:extrapreds ((x2348))
+:extrapreds ((x2349))
+:extrapreds ((x2350))
+:extrapreds ((x2351))
+:extrapreds ((x2352))
+:extrapreds ((x2353))
+:extrapreds ((x2354))
+:extrapreds ((x2355))
+:extrapreds ((x2356))
+:extrapreds ((x2357))
+:extrapreds ((x2358))
+:extrapreds ((x2359))
+:extrapreds ((x2360))
+:extrapreds ((x2361))
+:extrapreds ((x2362))
+:extrapreds ((x2363))
+:extrapreds ((x2364))
+:extrapreds ((x2365))
+:extrapreds ((x2366))
+:extrapreds ((x2367))
+:extrapreds ((x2368))
+:extrapreds ((x2369))
+:extrapreds ((x2370))
+:extrapreds ((x2371))
+:extrapreds ((x2372))
+:extrapreds ((x2373))
+:extrapreds ((x2374))
+:extrapreds ((x2375))
+:extrapreds ((x2376))
+:extrapreds ((x2377))
+:extrapreds ((x2378))
+:extrapreds ((x2379))
+:extrapreds ((x2380))
+:extrapreds ((x2381))
+:extrapreds ((x2382))
+:extrapreds ((x2383))
+:extrapreds ((x2384))
+:extrapreds ((x2385))
+:extrapreds ((x2386))
+:extrapreds ((x2387))
+:extrapreds ((x2388))
+:extrapreds ((x2389))
+:extrapreds ((x2390))
+:extrapreds ((x2391))
+:extrapreds ((x2392))
+:extrapreds ((x2393))
+:extrapreds ((x2394))
+:extrapreds ((x2395))
+:extrapreds ((x2396))
+:extrapreds ((x2397))
+:extrapreds ((x2398))
+:extrapreds ((x2399))
+:extrapreds ((x2400))
+:extrapreds ((x2401))
+:extrapreds ((x2402))
+:extrapreds ((x2403))
+:extrapreds ((x2404))
+:extrapreds ((x2405))
+:extrapreds ((x2406))
+:extrapreds ((x2407))
+:extrapreds ((x2408))
+:extrapreds ((x2409))
+:extrapreds ((x2410))
+:extrapreds ((x2411))
+:extrapreds ((x2412))
+:extrapreds ((x2413))
+:extrapreds ((x2414))
+:extrapreds ((x2415))
+:extrapreds ((x2416))
+:extrapreds ((x2417))
+:extrapreds ((x2418))
+:extrapreds ((x2419))
+:extrapreds ((x2420))
+:extrapreds ((x2421))
+:extrapreds ((x2422))
+:extrapreds ((x2423))
+:extrapreds ((x2424))
+:extrapreds ((x2425))
+:extrapreds ((x2426))
+:extrapreds ((x2427))
+:extrapreds ((x2428))
+:extrapreds ((x2429))
+:extrapreds ((x2430))
+:extrapreds ((x2431))
+:extrapreds ((x2432))
+:extrapreds ((x2433))
+:extrapreds ((x2434))
+:extrapreds ((x2435))
+:extrapreds ((x2436))
+:extrapreds ((x2437))
+:extrapreds ((x2438))
+:extrapreds ((x2439))
+:extrapreds ((x2440))
+:extrapreds ((x2441))
+:extrapreds ((x2442))
+:extrapreds ((x2443))
+:extrapreds ((x2444))
+:extrapreds ((x2445))
+:extrapreds ((x2446))
+:extrapreds ((x2447))
+:extrapreds ((x2448))
+:extrapreds ((x2449))
+:extrapreds ((x2450))
+:extrapreds ((x2451))
+:extrapreds ((x2452))
+:extrapreds ((x2453))
+:extrapreds ((x2454))
+:extrapreds ((x2455))
+:extrapreds ((x2456))
+:extrapreds ((x2457))
+:extrapreds ((x2458))
+:extrapreds ((x2459))
+:extrapreds ((x2460))
+:extrapreds ((x2461))
+:extrapreds ((x2462))
+:extrapreds ((x2463))
+:extrapreds ((x2464))
+:extrapreds ((x2465))
+:extrapreds ((x2466))
+:extrapreds ((x2467))
+:extrapreds ((x2468))
+:extrapreds ((x2469))
+:extrapreds ((x2470))
+:extrapreds ((x2471))
+:extrapreds ((x2472))
+:extrapreds ((x2473))
+:extrapreds ((x2474))
+:extrapreds ((x2475))
+:extrapreds ((x2476))
+:extrapreds ((x2477))
+:extrapreds ((x2478))
+:extrapreds ((x2479))
+:extrapreds ((x2480))
+:extrapreds ((x2481))
+:extrapreds ((x2482))
+:extrapreds ((x2483))
+:extrapreds ((x2484))
+:extrapreds ((x2485))
+:extrapreds ((x2486))
+:extrapreds ((x2487))
+:extrapreds ((x2488))
+:extrapreds ((x2489))
+:extrapreds ((x2490))
+:extrapreds ((x2491))
+:extrapreds ((x2492))
+:extrapreds ((x2493))
+:extrapreds ((x2494))
+:extrapreds ((x2495))
+:extrapreds ((x2496))
+:extrapreds ((x2497))
+:extrapreds ((x2498))
+:extrapreds ((x2499))
+:extrapreds ((x2500))
+:extrapreds ((x2501))
+:extrapreds ((x2502))
+:extrapreds ((x2503))
+:extrapreds ((x2504))
+:extrapreds ((x2505))
+:extrapreds ((x2506))
+:extrapreds ((x2507))
+:extrapreds ((x2508))
+:extrapreds ((x2509))
+:extrapreds ((x2510))
+:extrapreds ((x2511))
+:extrapreds ((x2512))
+:extrapreds ((x2513))
+:extrapreds ((x2514))
+:extrapreds ((x2515))
+:extrapreds ((x2516))
+:extrapreds ((x2517))
+:extrapreds ((x2518))
+:extrapreds ((x2519))
+:extrapreds ((x2520))
+:extrapreds ((x2521))
+:extrapreds ((x2522))
+:extrapreds ((x2523))
+:extrapreds ((x2524))
+:extrapreds ((x2525))
+:extrapreds ((x2526))
+:extrapreds ((x2527))
+:extrapreds ((x2528))
+:extrapreds ((x2529))
+:extrapreds ((x2530))
+:extrapreds ((x2531))
+:extrapreds ((x2532))
+:extrapreds ((x2533))
+:extrapreds ((x2534))
+:extrapreds ((x2535))
+:extrapreds ((x2536))
+:extrapreds ((x2537))
+:extrapreds ((x2538))
+:extrapreds ((x2539))
+:extrapreds ((x2540))
+:extrapreds ((x2541))
+:extrapreds ((x2542))
+:extrapreds ((x2543))
+:extrapreds ((x2544))
+:extrapreds ((x2545))
+:extrapreds ((x2546))
+:extrapreds ((x2547))
+:extrapreds ((x2548))
+:extrapreds ((x2549))
+:extrapreds ((x2550))
+:extrapreds ((x2551))
+:extrapreds ((x2552))
+:extrapreds ((x2553))
+:extrapreds ((x2554))
+:extrapreds ((x2555))
+:extrapreds ((x2556))
+:extrapreds ((x2557))
+:extrapreds ((x2558))
+:extrapreds ((x2559))
+:extrapreds ((x2560))
+:extrapreds ((x2561))
+:extrapreds ((x2562))
+:extrapreds ((x2563))
+:extrapreds ((x2564))
+:extrapreds ((x2565))
+:extrapreds ((x2566))
+:extrapreds ((x2567))
+:extrapreds ((x2568))
+:extrapreds ((x2569))
+:extrapreds ((x2570))
+:extrapreds ((x2571))
+:extrapreds ((x2572))
+:extrapreds ((x2573))
+:extrapreds ((x2574))
+:extrapreds ((x2575))
+:extrapreds ((x2576))
+:extrapreds ((x2577))
+:extrapreds ((x2578))
+:extrapreds ((x2579))
+:extrapreds ((x2580))
+:extrapreds ((x2581))
+:extrapreds ((x2582))
+:extrapreds ((x2583))
+:extrapreds ((x2584))
+:extrapreds ((x2585))
+:extrapreds ((x2586))
+:extrapreds ((x2587))
+:extrapreds ((x2588))
+:extrapreds ((x2589))
+:extrapreds ((x2590))
+:extrapreds ((x2591))
+:extrapreds ((x2592))
+:extrapreds ((x2593))
+:extrapreds ((x2594))
+:extrapreds ((x2595))
+:extrapreds ((x2596))
+:extrapreds ((x2597))
+:extrapreds ((x2598))
+:extrapreds ((x2599))
+:extrapreds ((x2600))
+:extrapreds ((x2601))
+:extrapreds ((x2602))
+:extrapreds ((x2603))
+:extrapreds ((x2604))
+:extrapreds ((x2605))
+:extrapreds ((x2606))
+:extrapreds ((x2607))
+:extrapreds ((x2608))
+:extrapreds ((x2609))
+:extrapreds ((x2610))
+:extrapreds ((x2611))
+:extrapreds ((x2612))
+:extrapreds ((x2613))
+:extrapreds ((x2614))
+:extrapreds ((x2615))
+:extrapreds ((x2616))
+:extrapreds ((x2617))
+:extrapreds ((x2618))
+:extrapreds ((x2619))
+:extrapreds ((x2620))
+:extrapreds ((x2621))
+:extrapreds ((x2622))
+:extrapreds ((x2623))
+:extrapreds ((x2624))
+:extrapreds ((x2625))
+:extrapreds ((x2626))
+:extrapreds ((x2627))
+:extrapreds ((x2628))
+:extrapreds ((x2629))
+:extrapreds ((x2630))
+:extrapreds ((x2631))
+:extrapreds ((x2632))
+:extrapreds ((x2633))
+:extrapreds ((x2634))
+:extrapreds ((x2635))
+:extrapreds ((x2636))
+:extrapreds ((x2637))
+:extrapreds ((x2638))
+:extrapreds ((x2639))
+:extrapreds ((x2640))
+:extrapreds ((x2641))
+:extrapreds ((x2642))
+:extrapreds ((x2643))
+:extrapreds ((x2644))
+:extrapreds ((x2645))
+:extrapreds ((x2646))
+:extrapreds ((x2647))
+:extrapreds ((x2648))
+:extrapreds ((x2649))
+:extrapreds ((x2650))
+:extrapreds ((x2651))
+:extrapreds ((x2652))
+:extrapreds ((x2653))
+:extrapreds ((x2654))
+:extrapreds ((x2655))
+:extrapreds ((x2656))
+:extrapreds ((x2657))
+:extrapreds ((x2658))
+:extrapreds ((x2659))
+:extrapreds ((x2660))
+:extrapreds ((x2661))
+:extrapreds ((x2662))
+:extrapreds ((x2663))
+:extrapreds ((x2664))
+:extrapreds ((x2665))
+:extrapreds ((x2666))
+:extrapreds ((x2667))
+:extrapreds ((x2668))
+:extrapreds ((x2669))
+:extrapreds ((x2670))
+:extrapreds ((x2671))
+:extrapreds ((x2672))
+:extrapreds ((x2673))
+:extrapreds ((x2674))
+:extrapreds ((x2675))
+:extrapreds ((x2676))
+:extrapreds ((x2677))
+:extrapreds ((x2678))
+:extrapreds ((x2679))
+:extrapreds ((x2680))
+:extrapreds ((x2681))
+:extrapreds ((x2682))
+:extrapreds ((x2683))
+:extrapreds ((x2684))
+:extrapreds ((x2685))
+:extrapreds ((x2686))
+:extrapreds ((x2687))
+:extrapreds ((x2688))
+:extrapreds ((x2689))
+:extrapreds ((x2690))
+:extrapreds ((x2691))
+:extrapreds ((x2692))
+:extrapreds ((x2693))
+:extrapreds ((x2694))
+:extrapreds ((x2695))
+:extrapreds ((x2696))
+:extrapreds ((x2697))
+:extrapreds ((x2698))
+:extrapreds ((x2699))
+:extrapreds ((x2700))
+:extrapreds ((x2701))
+:extrapreds ((x2702))
+:extrapreds ((x2703))
+:extrapreds ((x2704))
+:extrapreds ((x2705))
+:extrapreds ((x2706))
+:extrapreds ((x2707))
+:extrapreds ((x2708))
+:extrapreds ((x2709))
+:extrapreds ((x2710))
+:extrapreds ((x2711))
+:extrapreds ((x2712))
+:extrapreds ((x2713))
+:extrapreds ((x2714))
+:extrapreds ((x2715))
+:extrapreds ((x2716))
+:extrapreds ((x2717))
+:extrapreds ((x2718))
+:extrapreds ((x2719))
+:extrapreds ((x2720))
+:extrapreds ((x2721))
+:extrapreds ((x2722))
+:extrapreds ((x2723))
+:extrapreds ((x2724))
+:extrapreds ((x2725))
+:extrapreds ((x2726))
+:extrapreds ((x2727))
+:extrapreds ((x2728))
+:extrapreds ((x2729))
+:extrapreds ((x2730))
+:extrapreds ((x2731))
+:extrapreds ((x2732))
+:extrapreds ((x2733))
+:extrapreds ((x2734))
+:extrapreds ((x2735))
+:extrapreds ((x2736))
+:extrapreds ((x2737))
+:extrapreds ((x2738))
+:extrapreds ((x2739))
+:extrapreds ((x2740))
+:extrapreds ((x2741))
+:extrapreds ((x2742))
+:extrapreds ((x2743))
+:extrapreds ((x2744))
+:extrapreds ((x2745))
+:extrapreds ((x2746))
+:extrapreds ((x2747))
+:extrapreds ((x2748))
+:extrapreds ((x2749))
+:extrapreds ((x2750))
+:extrapreds ((x2751))
+:extrapreds ((x2752))
+:extrapreds ((x2753))
+:extrapreds ((x2754))
+:extrapreds ((x2755))
+:extrapreds ((x2756))
+:extrapreds ((x2757))
+:extrapreds ((x2758))
+:extrapreds ((x2759))
+:extrapreds ((x2760))
+:extrapreds ((x2761))
+:extrapreds ((x2762))
+:extrapreds ((x2763))
+:extrapreds ((x2764))
+:extrapreds ((x2765))
+:extrapreds ((x2766))
+:extrapreds ((x2767))
+:extrapreds ((x2768))
+:extrapreds ((x2769))
+:extrapreds ((x2770))
+:extrapreds ((x2771))
+:extrapreds ((x2772))
+:extrapreds ((x2773))
+:extrapreds ((x2774))
+:extrapreds ((x2775))
+:extrapreds ((x2776))
+:extrapreds ((x2777))
+:extrapreds ((x2778))
+:extrapreds ((x2779))
+:extrapreds ((x2780))
+:extrapreds ((x2781))
+:extrapreds ((x2782))
+:extrapreds ((x2783))
+:extrapreds ((x2784))
+:extrapreds ((x2785))
+:extrapreds ((x2786))
+:extrapreds ((x2787))
+:extrapreds ((x2788))
+:extrapreds ((x2789))
+:extrapreds ((x2790))
+:extrapreds ((x2791))
+:extrapreds ((x2792))
+:extrapreds ((x2793))
+:extrapreds ((x2794))
+:extrapreds ((x2795))
+:extrapreds ((x2796))
+:extrapreds ((x2797))
+:extrapreds ((x2798))
+:extrapreds ((x2799))
+:extrapreds ((x2800))
+:extrapreds ((x2801))
+:extrapreds ((x2802))
+:extrapreds ((x2803))
+:extrapreds ((x2804))
+:extrapreds ((x2805))
+:extrapreds ((x2806))
+:extrapreds ((x2807))
+:extrapreds ((x2808))
+:extrapreds ((x2809))
+:extrapreds ((x2810))
+:extrapreds ((x2811))
+:extrapreds ((x2812))
+:extrapreds ((x2813))
+:extrapreds ((x2814))
+:extrapreds ((x2815))
+:extrapreds ((x2816))
+:extrapreds ((x2817))
+:extrapreds ((x2818))
+:extrapreds ((x2819))
+:extrapreds ((x2820))
+:extrapreds ((x2821))
+:extrapreds ((x2822))
+:extrapreds ((x2823))
+:extrapreds ((x2824))
+:extrapreds ((x2825))
+:extrapreds ((x2826))
+:extrapreds ((x2827))
+:extrapreds ((x2828))
+:extrapreds ((x2829))
+:extrapreds ((x2830))
+:extrapreds ((x2831))
+:extrapreds ((x2832))
+:extrapreds ((x2833))
+:extrapreds ((x2834))
+:extrapreds ((x2835))
+:extrapreds ((x2836))
+:extrapreds ((x2837))
+:extrapreds ((x2838))
+:extrapreds ((x2839))
+:extrapreds ((x2840))
+:extrapreds ((x2841))
+:extrapreds ((x2842))
+:extrapreds ((x2843))
+:extrapreds ((x2844))
+:extrapreds ((x2845))
+:extrapreds ((x2846))
+:extrapreds ((x2847))
+:extrapreds ((x2848))
+:extrapreds ((x2849))
+:extrapreds ((x2850))
+:extrapreds ((x2851))
+:extrapreds ((x2852))
+:extrapreds ((x2853))
+:extrapreds ((x2854))
+:extrapreds ((x2855))
+:extrapreds ((x2856))
+:extrapreds ((x2857))
+:extrapreds ((x2858))
+:extrapreds ((x2859))
+:extrapreds ((x2860))
+:extrapreds ((x2861))
+:extrapreds ((x2862))
+:extrapreds ((x2863))
+:extrapreds ((x2864))
+:extrapreds ((x2865))
+:extrapreds ((x2866))
+:extrapreds ((x2867))
+:extrapreds ((x2868))
+:extrapreds ((x2869))
+:extrapreds ((x2870))
+:extrapreds ((x2871))
+:extrapreds ((x2872))
+:extrapreds ((x2873))
+:extrapreds ((x2874))
+:extrapreds ((x2875))
+:extrapreds ((x2876))
+:extrapreds ((x2877))
+:extrapreds ((x2878))
+:extrapreds ((x2879))
+:extrapreds ((x2880))
+:extrapreds ((x2881))
+:extrapreds ((x2882))
+:extrapreds ((x2883))
+:extrapreds ((x2884))
+:extrapreds ((x2885))
+:extrapreds ((x2886))
+:extrapreds ((x2887))
+:extrapreds ((x2888))
+:extrapreds ((x2889))
+:extrapreds ((x2890))
+:extrapreds ((x2891))
+:extrapreds ((x2892))
+:extrapreds ((x2893))
+:extrapreds ((x2894))
+:extrapreds ((x2895))
+:extrapreds ((x2896))
+:extrapreds ((x2897))
+:extrapreds ((x2898))
+:extrapreds ((x2899))
+:extrapreds ((x2900))
+:extrapreds ((x2901))
+:extrapreds ((x2902))
+:extrapreds ((x2903))
+:extrapreds ((x2904))
+:extrapreds ((x2905))
+:extrapreds ((x2906))
+:extrapreds ((x2907))
+:extrapreds ((x2908))
+:extrapreds ((x2909))
+:extrapreds ((x2910))
+:extrapreds ((x2911))
+:extrapreds ((x2912))
+:extrapreds ((x2913))
+:extrapreds ((x2914))
+:extrapreds ((x2915))
+:extrapreds ((x2916))
+:extrapreds ((x2917))
+:extrapreds ((x2918))
+:extrapreds ((x2919))
+:extrapreds ((x2920))
+:extrapreds ((x2921))
+:extrapreds ((x2922))
+:extrapreds ((x2923))
+:extrapreds ((x2924))
+:extrapreds ((x2925))
+:extrapreds ((x2926))
+:extrapreds ((x2927))
+:extrapreds ((x2928))
+:extrapreds ((x2929))
+:extrapreds ((x2930))
+:extrapreds ((x2931))
+:extrapreds ((x2932))
+:extrapreds ((x2933))
+:extrapreds ((x2934))
+:extrapreds ((x2935))
+:extrapreds ((x2936))
+:extrapreds ((x2937))
+:extrapreds ((x2938))
+:extrapreds ((x2939))
+:extrapreds ((x2940))
+:extrapreds ((x2941))
+:extrapreds ((x2942))
+:extrapreds ((x2943))
+:extrapreds ((x2944))
+:extrapreds ((x2945))
+:extrapreds ((x2946))
+:extrapreds ((x2947))
+:extrapreds ((x2948))
+:extrapreds ((x2949))
+:extrapreds ((x2950))
+:extrapreds ((x2951))
+:extrapreds ((x2952))
+:extrapreds ((x2953))
+:extrapreds ((x2954))
+:extrapreds ((x2955))
+:extrapreds ((x2956))
+:extrapreds ((x2957))
+:extrapreds ((x2958))
+:extrapreds ((x2959))
+:extrapreds ((x2960))
+:extrapreds ((x2961))
+:extrapreds ((x2962))
+:extrapreds ((x2963))
+:extrapreds ((x2964))
+:extrapreds ((x2965))
+:extrapreds ((x2966))
+:extrapreds ((x2967))
+:extrapreds ((x2968))
+:extrapreds ((x2969))
+:extrapreds ((x2970))
+:extrapreds ((x2971))
+:extrapreds ((x2972))
+:extrapreds ((x2973))
+:extrapreds ((x2974))
+:extrapreds ((x2975))
+:extrapreds ((x2976))
+:extrapreds ((x2977))
+:extrapreds ((x2978))
+:extrapreds ((x2979))
+:extrapreds ((x2980))
+:extrapreds ((x2981))
+:extrapreds ((x2982))
+:extrapreds ((x2983))
+:extrapreds ((x2984))
+:extrapreds ((x2985))
+:extrapreds ((x2986))
+:extrapreds ((x2987))
+:extrapreds ((x2988))
+:extrapreds ((x2989))
+:extrapreds ((x2990))
+:extrapreds ((x2991))
+:extrapreds ((x2992))
+:extrapreds ((x2993))
+:extrapreds ((x2994))
+:extrapreds ((x2995))
+:extrapreds ((x2996))
+:extrapreds ((x2997))
+:extrapreds ((x2998))
+:extrapreds ((x2999))
+:extrapreds ((x3000))
+:extrapreds ((x3001))
+:extrapreds ((x3002))
+:extrapreds ((x3003))
+:extrapreds ((x3004))
+:extrapreds ((x3005))
+:extrapreds ((x3006))
+:extrapreds ((x3007))
+:extrapreds ((x3008))
+:extrapreds ((x3009))
+:extrapreds ((x3010))
+:extrapreds ((x3011))
+:extrapreds ((x3012))
+:extrapreds ((x3013))
+:extrapreds ((x3014))
+:extrapreds ((x3015))
+:extrapreds ((x3016))
+:extrapreds ((x3017))
+:extrapreds ((x3018))
+:extrapreds ((x3019))
+:extrapreds ((x3020))
+:extrapreds ((x3021))
+:extrapreds ((x3022))
+:extrapreds ((x3023))
+:extrapreds ((x3024))
+:extrapreds ((x3025))
+:extrapreds ((x3026))
+:extrapreds ((x3027))
+:extrapreds ((x3028))
+:extrapreds ((x3029))
+:extrapreds ((x3030))
+:extrapreds ((x3031))
+:extrapreds ((x3032))
+:extrapreds ((x3033))
+:extrapreds ((x3034))
+:extrapreds ((x3035))
+:extrapreds ((x3036))
+:extrapreds ((x3037))
+:extrapreds ((x3038))
+:extrapreds ((x3039))
+:extrapreds ((x3040))
+:extrapreds ((x3041))
+:extrapreds ((x3042))
+:extrapreds ((x3043))
+:extrapreds ((x3044))
+:extrapreds ((x3045))
+:extrapreds ((x3046))
+:extrapreds ((x3047))
+:extrapreds ((x3048))
+:extrapreds ((x3049))
+:extrapreds ((x3050))
+:extrapreds ((x3051))
+:extrapreds ((x3052))
+:extrapreds ((x3053))
+:extrapreds ((x3054))
+:extrapreds ((x3055))
+:extrapreds ((x3056))
+:extrapreds ((x3057))
+:extrapreds ((x3058))
+:extrapreds ((x3059))
+:extrapreds ((x3060))
+:extrapreds ((x3061))
+:extrapreds ((x3062))
+:extrapreds ((x3063))
+:extrapreds ((x3064))
+:extrapreds ((x3065))
+:extrapreds ((x3066))
+:extrapreds ((x3067))
+:extrapreds ((x3068))
+:extrapreds ((x3069))
+:extrapreds ((x3070))
+:extrapreds ((x3071))
+:extrapreds ((x3072))
+:extrapreds ((x3073))
+:extrapreds ((x3074))
+:extrapreds ((x3075))
+:extrapreds ((x3076))
+:extrapreds ((x3077))
+:extrapreds ((x3078))
+:extrapreds ((x3079))
+:extrapreds ((x3080))
+:extrapreds ((x3081))
+:extrapreds ((x3082))
+:extrapreds ((x3083))
+:extrapreds ((x3084))
+:extrapreds ((x3085))
+:extrapreds ((x3086))
+:extrapreds ((x3087))
+:extrapreds ((x3088))
+:extrapreds ((x3089))
+:extrapreds ((x3090))
+:extrapreds ((x3091))
+:extrapreds ((x3092))
+:extrapreds ((x3093))
+:extrapreds ((x3094))
+:extrapreds ((x3095))
+:extrapreds ((x3096))
+:extrapreds ((x3097))
+:extrapreds ((x3098))
+:extrapreds ((x3099))
+:extrapreds ((x3100))
+:extrapreds ((x3101))
+:extrapreds ((x3102))
+:extrapreds ((x3103))
+:extrapreds ((x3104))
+:extrapreds ((x3105))
+:extrapreds ((x3106))
+:extrapreds ((x3107))
+:extrapreds ((x3108))
+:extrapreds ((x3109))
+:extrapreds ((x3110))
+:extrapreds ((x3111))
+:extrapreds ((x3112))
+:extrapreds ((x3113))
+:extrapreds ((x3114))
+:extrapreds ((x3115))
+:extrapreds ((x3116))
+:extrapreds ((x3117))
+:extrapreds ((x3118))
+:extrapreds ((x3119))
+:extrapreds ((x3120))
+:extrapreds ((x3121))
+:extrapreds ((x3122))
+:extrapreds ((x3123))
+:extrapreds ((x3124))
+:extrapreds ((x3125))
+:extrapreds ((x3126))
+:extrapreds ((x3127))
+:extrapreds ((x3128))
+:extrapreds ((x3129))
+:extrapreds ((x3130))
+:extrapreds ((x3131))
+:extrapreds ((x3132))
+:extrapreds ((x3133))
+:extrapreds ((x3134))
+:extrapreds ((x3135))
+:extrapreds ((x3136))
+:extrapreds ((x3137))
+:extrapreds ((x3138))
+:extrapreds ((x3139))
+:extrapreds ((x3140))
+:extrapreds ((x3141))
+:extrapreds ((x3142))
+:extrapreds ((x3143))
+:extrapreds ((x3144))
+:extrapreds ((x3145))
+:extrapreds ((x3146))
+:extrapreds ((x3147))
+:extrapreds ((x3148))
+:extrapreds ((x3149))
+:extrapreds ((x3150))
+:extrapreds ((x3151))
+:extrapreds ((x3152))
+:extrapreds ((x3153))
+:extrapreds ((x3154))
+:extrapreds ((x3155))
+:extrapreds ((x3156))
+:extrapreds ((x3157))
+:extrapreds ((x3158))
+:extrapreds ((x3159))
+:extrapreds ((x3160))
+:extrapreds ((x3161))
+:extrapreds ((x3162))
+:extrapreds ((x3163))
+:extrapreds ((x3164))
+:extrapreds ((x3165))
+:extrapreds ((x3166))
+:extrapreds ((x3167))
+:extrapreds ((x3168))
+:extrapreds ((x3169))
+:extrapreds ((x3170))
+:extrapreds ((x3171))
+:extrapreds ((x3172))
+:extrapreds ((x3173))
+:extrapreds ((x3174))
+:extrapreds ((x3175))
+:extrapreds ((x3176))
+:extrapreds ((x3177))
+:extrapreds ((x3178))
+:extrapreds ((x3179))
+:extrapreds ((x3180))
+:extrapreds ((x3181))
+:extrapreds ((x3182))
+:extrapreds ((x3183))
+:extrapreds ((x3184))
+:extrapreds ((x3185))
+:extrapreds ((x3186))
+:extrapreds ((x3187))
+:extrapreds ((x3188))
+:extrapreds ((x3189))
+:extrapreds ((x3190))
+:extrapreds ((x3191))
+:extrapreds ((x3192))
+:extrapreds ((x3193))
+:extrapreds ((x3194))
+:extrapreds ((x3195))
+:extrapreds ((x3196))
+:extrapreds ((x3197))
+:extrapreds ((x3198))
+:extrapreds ((x3199))
+:extrapreds ((x3200))
+:extrapreds ((x3201))
+:extrapreds ((x3202))
+:extrapreds ((x3203))
+:extrapreds ((x3204))
+:extrapreds ((x3205))
+:extrapreds ((x3206))
+:extrapreds ((x3207))
+:extrapreds ((x3208))
+:extrapreds ((x3209))
+:extrapreds ((x3210))
+:extrapreds ((x3211))
+:extrapreds ((x3212))
+:extrapreds ((x3213))
+:extrapreds ((x3214))
+:extrapreds ((x3215))
+:extrapreds ((x3216))
+:extrapreds ((x3217))
+:extrapreds ((x3218))
+:extrapreds ((x3219))
+:extrapreds ((x3220))
+:extrapreds ((x3221))
+:extrapreds ((x3222))
+:extrapreds ((x3223))
+:extrapreds ((x3224))
+:extrapreds ((x3225))
+:extrapreds ((x3226))
+:extrapreds ((x3227))
+:extrapreds ((x3228))
+:extrapreds ((x3229))
+:extrapreds ((x3230))
+:extrapreds ((x3231))
+:extrapreds ((x3232))
+:extrapreds ((x3233))
+:extrapreds ((x3234))
+:extrapreds ((x3235))
+:extrapreds ((x3236))
+:extrapreds ((x3237))
+:extrapreds ((x3238))
+:extrapreds ((x3239))
+:extrapreds ((x3240))
+:extrapreds ((x3241))
+:extrapreds ((x3242))
+:extrapreds ((x3243))
+:extrapreds ((x3244))
+:extrapreds ((x3245))
+:extrapreds ((x3246))
+:extrapreds ((x3247))
+:extrapreds ((x3248))
+:extrapreds ((x3249))
+:extrapreds ((x3250))
+:extrapreds ((x3251))
+:extrapreds ((x3252))
+:extrapreds ((x3253))
+:extrapreds ((x3254))
+:extrapreds ((x3255))
+:extrapreds ((x3256))
+:extrapreds ((x3257))
+:extrapreds ((x3258))
+:extrapreds ((x3259))
+:extrapreds ((x3260))
+:extrapreds ((x3261))
+:extrapreds ((x3262))
+:extrapreds ((x3263))
+:extrapreds ((x3264))
+:extrapreds ((x3265))
+:extrapreds ((x3266))
+:extrapreds ((x3267))
+:extrapreds ((x3268))
+:extrapreds ((x3269))
+:extrapreds ((x3270))
+:extrapreds ((x3271))
+:extrapreds ((x3272))
+:extrapreds ((x3273))
+:extrapreds ((x3274))
+:extrapreds ((x3275))
+:extrapreds ((x3276))
+:extrapreds ((x3277))
+:extrapreds ((x3278))
+:extrapreds ((x3279))
+:extrapreds ((x3280))
+:extrapreds ((x3281))
+:extrapreds ((x3282))
+:extrapreds ((x3283))
+:extrapreds ((x3284))
+:extrapreds ((x3285))
+:extrapreds ((x3286))
+:extrapreds ((x3287))
+:extrapreds ((x3288))
+:extrapreds ((x3289))
+:extrapreds ((x3290))
+:extrapreds ((x3291))
+:extrapreds ((x3292))
+:extrapreds ((x3293))
+:extrapreds ((x3294))
+:extrapreds ((x3295))
+:extrapreds ((x3296))
+:extrapreds ((x3297))
+:extrapreds ((x3298))
+:extrapreds ((x3299))
+:extrapreds ((x3300))
+:extrapreds ((x3301))
+:extrapreds ((x3302))
+:extrapreds ((x3303))
+:extrapreds ((x3304))
+:extrapreds ((x3305))
+:extrapreds ((x3306))
+:extrapreds ((x3307))
+:extrapreds ((x3308))
+:extrapreds ((x3309))
+:extrapreds ((x3310))
+:extrapreds ((x3311))
+:extrapreds ((x3312))
+:extrapreds ((x3313))
+:extrapreds ((x3314))
+:extrapreds ((x3315))
+:extrapreds ((x3316))
+:extrapreds ((x3317))
+:extrapreds ((x3318))
+:extrapreds ((x3319))
+:extrapreds ((x3320))
+:extrapreds ((x3321))
+:extrapreds ((x3322))
+:extrapreds ((x3323))
+:extrapreds ((x3324))
+:extrapreds ((x3325))
+:extrapreds ((x3326))
+:extrapreds ((x3327))
+:extrapreds ((x3328))
+:extrapreds ((x3329))
+:extrapreds ((x3330))
+:extrapreds ((x3331))
+:extrapreds ((x3332))
+:extrapreds ((x3333))
+:extrapreds ((x3334))
+:extrapreds ((x3335))
+:extrapreds ((x3336))
+:extrapreds ((x3337))
+:extrapreds ((x3338))
+:extrapreds ((x3339))
+:extrapreds ((x3340))
+:extrapreds ((x3341))
+:extrapreds ((x3342))
+:extrapreds ((x3343))
+:extrapreds ((x3344))
+:extrapreds ((x3345))
+:extrapreds ((x3346))
+:extrapreds ((x3347))
+:extrapreds ((x3348))
+:extrapreds ((x3349))
+:extrapreds ((x3350))
+:extrapreds ((x3351))
+:extrapreds ((x3352))
+:extrapreds ((x3353))
+:extrapreds ((x3354))
+:extrapreds ((x3355))
+:extrapreds ((x3356))
+:extrapreds ((x3357))
+:extrapreds ((x3358))
+:extrapreds ((x3359))
+:extrapreds ((x3360))
+:extrapreds ((x3361))
+:extrapreds ((x3362))
+:extrapreds ((x3363))
+:extrapreds ((x3364))
+:extrapreds ((x3365))
+:extrapreds ((x3366))
+:extrapreds ((x3367))
+:extrapreds ((x3368))
+:extrapreds ((x3369))
+:extrapreds ((x3370))
+:extrapreds ((x3371))
+:extrapreds ((x3372))
+:extrapreds ((x3373))
+:extrapreds ((x3374))
+:extrapreds ((x3375))
+:extrapreds ((x3376))
+:extrapreds ((x3377))
+:extrapreds ((x3378))
+:extrapreds ((x3379))
+:extrapreds ((x3380))
+:extrapreds ((x3381))
+:extrapreds ((x3382))
+:extrapreds ((x3383))
+:extrapreds ((x3384))
+:extrapreds ((x3385))
+:extrapreds ((x3386))
+:extrapreds ((x3387))
+:extrapreds ((x3388))
+:extrapreds ((x3389))
+:extrapreds ((x3390))
+:extrapreds ((x3391))
+:extrapreds ((x3392))
+:extrapreds ((x3393))
+:extrapreds ((x3394))
+:extrapreds ((x3395))
+:extrapreds ((x3396))
+:extrapreds ((x3397))
+:extrapreds ((x3398))
+:extrapreds ((x3399))
+:extrapreds ((x3400))
+:extrapreds ((x3401))
+:extrapreds ((x3402))
+:extrapreds ((x3403))
+:extrapreds ((x3404))
+:extrapreds ((x3405))
+:extrapreds ((x3406))
+:extrapreds ((x3407))
+:extrapreds ((x3408))
+:extrapreds ((x3409))
+:extrapreds ((x3410))
+:extrapreds ((x3411))
+:extrapreds ((x3412))
+:extrapreds ((x3413))
+:extrapreds ((x3414))
+:extrapreds ((x3415))
+:extrapreds ((x3416))
+:extrapreds ((x3417))
+:extrapreds ((x3418))
+:extrapreds ((x3419))
+:extrapreds ((x3420))
+:extrapreds ((x3421))
+:extrapreds ((x3422))
+:extrapreds ((x3423))
+:extrapreds ((x3424))
+:extrapreds ((x3425))
+:extrapreds ((x3426))
+:extrapreds ((x3427))
+:extrapreds ((x3428))
+:extrapreds ((x3429))
+:extrapreds ((x3430))
+:extrapreds ((x3431))
+:extrapreds ((x3432))
+:extrapreds ((x3433))
+:extrapreds ((x3434))
+:extrapreds ((x3435))
+:extrapreds ((x3436))
+:extrapreds ((x3437))
+:extrapreds ((x3438))
+:extrapreds ((x3439))
+:extrapreds ((x3440))
+:extrapreds ((x3441))
+:extrapreds ((x3442))
+:extrapreds ((x3443))
+:extrapreds ((x3444))
+:extrapreds ((x3445))
+:extrapreds ((x3446))
+:extrapreds ((x3447))
+:extrapreds ((x3448))
+:extrapreds ((x3449))
+:extrapreds ((x3450))
+:extrapreds ((x3451))
+:extrapreds ((x3452))
+:extrapreds ((x3453))
+:extrapreds ((x3454))
+:extrapreds ((x3455))
+:extrapreds ((x3456))
+:extrapreds ((x3457))
+:extrapreds ((x3458))
+:extrapreds ((x3459))
+:extrapreds ((x3460))
+:extrapreds ((x3461))
+:extrapreds ((x3462))
+:extrapreds ((x3463))
+:extrapreds ((x3464))
+:extrapreds ((x3465))
+:extrapreds ((x3466))
+:extrapreds ((x3467))
+:extrapreds ((x3468))
+:extrapreds ((x3469))
+:extrapreds ((x3470))
+:extrapreds ((x3471))
+:extrapreds ((x3472))
+:extrapreds ((x3473))
+:extrapreds ((x3474))
+:extrapreds ((x3475))
+:extrapreds ((x3476))
+:extrapreds ((x3477))
+:extrapreds ((x3478))
+:extrapreds ((x3479))
+:extrapreds ((x3480))
+:extrapreds ((x3481))
+:extrapreds ((x3482))
+:extrapreds ((x3483))
+:extrapreds ((x3484))
+:extrapreds ((x3485))
+:extrapreds ((x3486))
+:extrapreds ((x3487))
+:extrapreds ((x3488))
+:extrapreds ((x3489))
+:extrapreds ((x3490))
+:extrapreds ((x3491))
+:extrapreds ((x3492))
+:extrapreds ((x3493))
+:extrapreds ((x3494))
+:extrapreds ((x3495))
+:extrapreds ((x3496))
+:extrapreds ((x3497))
+:extrapreds ((x3498))
+:extrapreds ((x3499))
+:extrapreds ((x3500))
+:extrapreds ((x3501))
+:extrapreds ((x3502))
+:extrapreds ((x3503))
+:extrapreds ((x3504))
+:extrapreds ((x3505))
+:extrapreds ((x3506))
+:extrapreds ((x3507))
+:extrapreds ((x3508))
+:extrapreds ((x3509))
+:extrapreds ((x3510))
+:extrapreds ((x3511))
+:extrapreds ((x3512))
+:extrapreds ((x3513))
+:extrapreds ((x3514))
+:extrapreds ((x3515))
+:extrapreds ((x3516))
+:extrapreds ((x3517))
+:extrapreds ((x3518))
+:extrapreds ((x3519))
+:extrapreds ((x3520))
+:extrapreds ((x3521))
+:extrapreds ((x3522))
+:extrapreds ((x3523))
+:extrapreds ((x3524))
+:extrapreds ((x3525))
+:extrapreds ((x3526))
+:extrapreds ((x3527))
+:extrapreds ((x3528))
+:extrapreds ((x3529))
+:extrapreds ((x3530))
+:extrapreds ((x3531))
+:extrapreds ((x3532))
+:extrapreds ((x3533))
+:extrapreds ((x3534))
+:extrapreds ((x3535))
+:extrapreds ((x3536))
+:extrapreds ((x3537))
+:extrapreds ((x3538))
+:extrapreds ((x3539))
+:extrapreds ((x3540))
+:extrapreds ((x3541))
+:extrapreds ((x3542))
+:extrapreds ((x3543))
+:extrapreds ((x3544))
+:extrapreds ((x3545))
+:extrapreds ((x3546))
+:extrapreds ((x3547))
+:extrapreds ((x3548))
+:extrapreds ((x3549))
+:extrapreds ((x3550))
+:extrapreds ((x3551))
+:extrapreds ((x3552))
+:extrapreds ((x3553))
+:extrapreds ((x3554))
+:extrapreds ((x3555))
+:extrapreds ((x3556))
+:extrapreds ((x3557))
+:extrapreds ((x3558))
+:extrapreds ((x3559))
+:extrapreds ((x3560))
+:extrapreds ((x3561))
+:extrapreds ((x3562))
+:extrapreds ((x3563))
+:extrapreds ((x3564))
+:extrapreds ((x3565))
+:extrapreds ((x3566))
+:extrapreds ((x3567))
+:extrapreds ((x3568))
+:extrapreds ((x3569))
+:extrapreds ((x3570))
+:extrapreds ((x3571))
+:extrapreds ((x3572))
+:extrapreds ((x3573))
+:extrapreds ((x3574))
+:extrapreds ((x3575))
+:extrapreds ((x3576))
+:extrapreds ((x3577))
+:extrapreds ((x3578))
+:extrapreds ((x3579))
+:extrapreds ((x3580))
+:extrapreds ((x3581))
+:extrapreds ((x3582))
+:extrapreds ((x3583))
+:extrapreds ((x3584))
+:extrapreds ((x3585))
+:extrapreds ((x3586))
+:extrapreds ((x3587))
+:extrapreds ((x3588))
+:extrapreds ((x3589))
+:extrapreds ((x3590))
+:extrapreds ((x3591))
+:extrapreds ((x3592))
+:extrapreds ((x3593))
+:extrapreds ((x3594))
+:extrapreds ((x3595))
+:extrapreds ((x3596))
+:extrapreds ((x3597))
+:extrapreds ((x3598))
+:extrapreds ((x3599))
+:extrapreds ((x3600))
+:extrapreds ((x3601))
+:extrapreds ((x3602))
+:extrapreds ((x3603))
+:extrapreds ((x3604))
+:extrapreds ((x3605))
+:extrapreds ((x3606))
+:extrapreds ((x3607))
+:extrapreds ((x3608))
+:extrapreds ((x3609))
+:extrapreds ((x3610))
+:extrapreds ((x3611))
+:extrapreds ((x3612))
+:extrapreds ((x3613))
+:extrapreds ((x3614))
+:extrapreds ((x3615))
+:extrapreds ((x3616))
+:extrapreds ((x3617))
+:extrapreds ((x3618))
+:extrapreds ((x3619))
+:extrapreds ((x3620))
+:extrapreds ((x3621))
+:extrapreds ((x3622))
+:extrapreds ((x3623))
+:extrapreds ((x3624))
+:extrapreds ((x3625))
+:extrapreds ((x3626))
+:extrapreds ((x3627))
+:extrapreds ((x3628))
+:extrapreds ((x3629))
+:extrapreds ((x3630))
+:extrapreds ((x3631))
+:extrapreds ((x3632))
+:extrapreds ((x3633))
+:extrapreds ((x3634))
+:extrapreds ((x3635))
+:extrapreds ((x3636))
+:extrapreds ((x3637))
+:extrapreds ((x3638))
+:extrapreds ((x3639))
+:extrapreds ((x3640))
+:extrapreds ((x3641))
+:extrapreds ((x3642))
+:extrapreds ((x3643))
+:extrapreds ((x3644))
+:extrapreds ((x3645))
+:extrapreds ((x3646))
+:extrapreds ((x3647))
+:extrapreds ((x3648))
+:extrapreds ((x3649))
+:extrapreds ((x3650))
+:extrapreds ((x3651))
+:extrapreds ((x3652))
+:extrapreds ((x3653))
+:extrapreds ((x3654))
+:extrapreds ((x3655))
+:extrapreds ((x3656))
+:extrapreds ((x3657))
+:extrapreds ((x3658))
+:extrapreds ((x3659))
+:extrapreds ((x3660))
+:extrapreds ((x3661))
+:extrapreds ((x3662))
+:extrapreds ((x3663))
+:extrapreds ((x3664))
+:extrapreds ((x3665))
+:extrapreds ((x3666))
+:extrapreds ((x3667))
+:extrapreds ((x3668))
+:extrapreds ((x3669))
+:extrapreds ((x3670))
+:extrapreds ((x3671))
+:extrapreds ((x3672))
+:extrapreds ((x3673))
+:extrapreds ((x3674))
+:extrapreds ((x3675))
+:extrapreds ((x3676))
+:extrapreds ((x3677))
+:extrapreds ((x3678))
+:extrapreds ((x3679))
+:extrapreds ((x3680))
+:extrapreds ((x3681))
+:extrapreds ((x3682))
+:extrapreds ((x3683))
+:extrapreds ((x3684))
+:extrapreds ((x3685))
+:extrapreds ((x3686))
+:extrapreds ((x3687))
+:extrapreds ((x3688))
+:extrapreds ((x3689))
+:extrapreds ((x3690))
+:extrapreds ((x3691))
+:extrapreds ((x3692))
+:extrapreds ((x3693))
+:extrapreds ((x3694))
+:extrapreds ((x3695))
+:extrapreds ((x3696))
+:extrapreds ((x3697))
+:extrapreds ((x3698))
+:extrapreds ((x3699))
+:extrapreds ((x3700))
+:extrapreds ((x3701))
+:extrapreds ((x3702))
+:extrapreds ((x3703))
+:extrapreds ((x3704))
+:extrapreds ((x3705))
+:extrapreds ((x3706))
+:extrapreds ((x3707))
+:extrapreds ((x3708))
+:extrapreds ((x3709))
+:extrapreds ((x3710))
+:extrapreds ((x3711))
+:extrapreds ((x3712))
+:extrapreds ((x3713))
+:extrapreds ((x3714))
+:extrapreds ((x3715))
+:extrapreds ((x3716))
+:extrapreds ((x3717))
+:extrapreds ((x3718))
+:extrapreds ((x3719))
+:extrapreds ((x3720))
+:extrapreds ((x3721))
+:extrapreds ((x3722))
+:extrapreds ((x3723))
+:extrapreds ((x3724))
+:extrapreds ((x3725))
+:extrapreds ((x3726))
+:extrapreds ((x3727))
+:extrapreds ((x3728))
+:extrapreds ((x3729))
+:extrapreds ((x3730))
+:extrapreds ((x3731))
+:extrapreds ((x3732))
+:extrapreds ((x3733))
+:extrapreds ((x3734))
+:extrapreds ((x3735))
+:extrapreds ((x3736))
+:extrapreds ((x3737))
+:extrapreds ((x3738))
+:extrapreds ((x3739))
+:extrapreds ((x3740))
+:extrapreds ((x3741))
+:extrapreds ((x3742))
+:extrapreds ((x3743))
+:extrapreds ((x3744))
+:extrapreds ((x3745))
+:extrapreds ((x3746))
+:extrapreds ((x3747))
+:extrapreds ((x3748))
+:extrapreds ((x3749))
+:extrapreds ((x3750))
+:extrapreds ((x3751))
+:extrapreds ((x3752))
+:extrapreds ((x3753))
+:extrapreds ((x3754))
+:extrapreds ((x3755))
+:extrapreds ((x3756))
+:extrapreds ((x3757))
+:extrapreds ((x3758))
+:extrapreds ((x3759))
+:extrapreds ((x3760))
+:extrapreds ((x3761))
+:extrapreds ((x3762))
+:extrapreds ((x3763))
+:extrapreds ((x3764))
+:extrapreds ((x3765))
+:extrapreds ((x3766))
+:extrapreds ((x3767))
+:extrapreds ((x3768))
+:extrapreds ((x3769))
+:extrapreds ((x3770))
+:extrapreds ((x3771))
+:extrapreds ((x3772))
+:extrapreds ((x3773))
+:extrapreds ((x3774))
+:extrapreds ((x3775))
+:extrapreds ((x3776))
+:extrapreds ((x3777))
+:extrapreds ((x3778))
+:extrapreds ((x3779))
+:extrapreds ((x3780))
+:extrapreds ((x3781))
+:extrapreds ((x3782))
+:extrapreds ((x3783))
+:extrapreds ((x3784))
+:extrapreds ((x3785))
+:extrapreds ((x3786))
+:extrapreds ((x3787))
+:extrapreds ((x3788))
+:extrapreds ((x3789))
+:extrapreds ((x3790))
+:extrapreds ((x3791))
+:extrapreds ((x3792))
+:extrapreds ((x3793))
+:extrapreds ((x3794))
+:extrapreds ((x3795))
+:extrapreds ((x3796))
+:extrapreds ((x3797))
+:extrapreds ((x3798))
+:extrapreds ((x3799))
+:extrapreds ((x3800))
+:extrapreds ((x3801))
+:extrapreds ((x3802))
+:extrapreds ((x3803))
+:extrapreds ((x3804))
+:extrapreds ((x3805))
+:extrapreds ((x3806))
+:extrapreds ((x3807))
+:extrapreds ((x3808))
+:extrapreds ((x3809))
+:extrapreds ((x3810))
+:extrapreds ((x3811))
+:extrapreds ((x3812))
+:extrapreds ((x3813))
+:extrapreds ((x3814))
+:extrapreds ((x3815))
+:extrapreds ((x3816))
+:extrapreds ((x3817))
+:extrapreds ((x3818))
+:extrapreds ((x3819))
+:extrapreds ((x3820))
+:extrapreds ((x3821))
+:extrapreds ((x3822))
+:extrapreds ((x3823))
+:extrapreds ((x3824))
+:extrapreds ((x3825))
+:extrapreds ((x3826))
+:extrapreds ((x3827))
+:extrapreds ((x3828))
+:extrapreds ((x3829))
+:extrapreds ((x3830))
+:extrapreds ((x3831))
+:extrapreds ((x3832))
+:extrapreds ((x3833))
+:extrapreds ((x3834))
+:extrapreds ((x3835))
+:extrapreds ((x3836))
+:extrapreds ((x3837))
+:extrapreds ((x3838))
+:extrapreds ((x3839))
+:extrapreds ((x3840))
+:extrapreds ((x3841))
+:extrapreds ((x3842))
+:extrapreds ((x3843))
+:extrapreds ((x3844))
+:extrapreds ((x3845))
+:extrapreds ((x3846))
+:extrapreds ((x3847))
+:extrapreds ((x3848))
+:extrapreds ((x3849))
+:extrapreds ((x3850))
+:extrapreds ((x3851))
+:extrapreds ((x3852))
+:extrapreds ((x3853))
+:extrapreds ((x3854))
+:extrapreds ((x3855))
+:extrapreds ((x3856))
+:extrapreds ((x3857))
+:extrapreds ((x3858))
+:extrapreds ((x3859))
+:extrapreds ((x3860))
+:extrapreds ((x3861))
+:extrapreds ((x3862))
+:extrapreds ((x3863))
+:extrapreds ((x3864))
+:extrapreds ((x3865))
+:extrapreds ((x3866))
+:extrapreds ((x3867))
+:extrapreds ((x3868))
+:extrapreds ((x3869))
+:extrapreds ((x3870))
+:extrapreds ((x3871))
+:extrapreds ((x3872))
+:extrapreds ((x3873))
+:extrapreds ((x3874))
+:extrapreds ((x3875))
+:extrapreds ((x3876))
+:extrapreds ((x3877))
+:extrapreds ((x3878))
+:extrapreds ((x3879))
+:extrapreds ((x3880))
+:extrapreds ((x3881))
+:extrapreds ((x3882))
+:extrapreds ((x3883))
+:extrapreds ((x3884))
+:extrapreds ((x3885))
+:extrapreds ((x3886))
+:extrapreds ((x3887))
+:extrapreds ((x3888))
+:extrapreds ((x3889))
+:extrapreds ((x3890))
+:extrapreds ((x3891))
+:extrapreds ((x3892))
+:extrapreds ((x3893))
+:extrapreds ((x3894))
+:extrapreds ((x3895))
+:extrapreds ((x3896))
+:extrapreds ((x3897))
+:extrapreds ((x3898))
+:extrapreds ((x3899))
+:extrapreds ((x3900))
+:extrapreds ((x3901))
+:extrapreds ((x3902))
+:extrapreds ((x3903))
+:extrapreds ((x3904))
+:extrapreds ((x3905))
+:extrapreds ((x3906))
+:extrapreds ((x3907))
+:extrapreds ((x3908))
+:extrapreds ((x3909))
+:extrapreds ((x3910))
+:extrapreds ((x3911))
+:extrapreds ((x3912))
+:extrapreds ((x3913))
+:extrapreds ((x3914))
+:extrapreds ((x3915))
+:extrapreds ((x3916))
+:extrapreds ((x3917))
+:extrapreds ((x3918))
+:extrapreds ((x3919))
+:extrapreds ((x3920))
+:extrapreds ((x3921))
+:extrapreds ((x3922))
+:extrapreds ((x3923))
+:extrapreds ((x3924))
+:extrapreds ((x3925))
+:extrapreds ((x3926))
+:extrapreds ((x3927))
+:extrapreds ((x3928))
+:extrapreds ((x3929))
+:extrapreds ((x3930))
+:extrapreds ((x3931))
+:extrapreds ((x3932))
+:extrapreds ((x3933))
+:extrapreds ((x3934))
+:extrapreds ((x3935))
+:extrapreds ((x3936))
+:extrapreds ((x3937))
+:extrapreds ((x3938))
+:extrapreds ((x3939))
+:extrapreds ((x3940))
+:extrapreds ((x3941))
+:extrapreds ((x3942))
+:extrapreds ((x3943))
+:extrapreds ((x3944))
+:extrapreds ((x3945))
+:extrapreds ((x3946))
+:extrapreds ((x3947))
+:extrapreds ((x3948))
+:extrapreds ((x3949))
+:extrapreds ((x3950))
+:extrapreds ((x3951))
+:extrapreds ((x3952))
+:extrapreds ((x3953))
+:extrapreds ((x3954))
+:extrapreds ((x3955))
+:extrapreds ((x3956))
+:extrapreds ((x3957))
+:extrapreds ((x3958))
+:extrapreds ((x3959))
+:extrapreds ((x3960))
+:extrapreds ((x3961))
+:extrapreds ((x3962))
+:extrapreds ((x3963))
+:extrapreds ((x3964))
+:extrapreds ((x3965))
+:extrapreds ((x3966))
+:extrapreds ((x3967))
+:extrapreds ((x3968))
+:extrapreds ((x3969))
+:extrapreds ((x3970))
+:extrapreds ((x3971))
+:extrapreds ((x3972))
+:extrapreds ((x3973))
+:extrapreds ((x3974))
+:extrapreds ((x3975))
+:extrapreds ((x3976))
+:extrapreds ((x3977))
+:extrapreds ((x3978))
+:extrapreds ((x3979))
+:extrapreds ((x3980))
+:extrapreds ((x3981))
+:extrapreds ((x3982))
+:extrapreds ((x3983))
+:extrapreds ((x3984))
+:extrapreds ((x3985))
+:extrapreds ((x3986))
+:extrapreds ((x3987))
+:extrapreds ((x3988))
+:extrapreds ((x3989))
+:extrapreds ((x3990))
+:extrapreds ((x3991))
+:extrapreds ((x3992))
+:extrapreds ((x3993))
+:extrapreds ((x3994))
+:extrapreds ((x3995))
+:extrapreds ((x3996))
+:extrapreds ((x3997))
+:extrapreds ((x3998))
+:extrapreds ((x3999))
+:extrapreds ((x4000))
+:extrapreds ((x4001))
+:extrapreds ((x4002))
+:extrapreds ((x4003))
+:extrapreds ((x4004))
+:extrapreds ((x4005))
+:extrapreds ((x4006))
+:extrapreds ((x4007))
+:extrapreds ((x4008))
+:extrapreds ((x4009))
+:extrapreds ((x4010))
+:extrapreds ((x4011))
+:extrapreds ((x4012))
+:extrapreds ((x4013))
+:extrapreds ((x4014))
+:extrapreds ((x4015))
+:extrapreds ((x4016))
+:extrapreds ((x4017))
+:extrapreds ((x4018))
+:extrapreds ((x4019))
+:extrapreds ((x4020))
+:extrapreds ((x4021))
+:extrapreds ((x4022))
+:extrapreds ((x4023))
+:extrapreds ((x4024))
+:extrapreds ((x4025))
+:extrapreds ((x4026))
+:extrapreds ((x4027))
+:extrapreds ((x4028))
+:extrapreds ((x4029))
+:extrapreds ((x4030))
+:extrapreds ((x4031))
+:extrapreds ((x4032))
+:extrapreds ((x4033))
+:extrapreds ((x4034))
+:extrapreds ((x4035))
+:extrapreds ((x4036))
+:extrapreds ((x4037))
+:extrapreds ((x4038))
+:extrapreds ((x4039))
+:extrapreds ((x4040))
+:extrapreds ((x4041))
+:extrapreds ((x4042))
+:extrapreds ((x4043))
+:extrapreds ((x4044))
+:extrapreds ((x4045))
+:extrapreds ((x4046))
+:extrapreds ((x4047))
+:extrapreds ((x4048))
+:extrapreds ((x4049))
+:extrapreds ((x4050))
+:extrapreds ((x4051))
+:extrapreds ((x4052))
+:extrapreds ((x4053))
+:extrapreds ((x4054))
+:extrapreds ((x4055))
+:extrapreds ((x4056))
+:extrapreds ((x4057))
+:extrapreds ((x4058))
+:extrapreds ((x4059))
+:extrapreds ((x4060))
+:extrapreds ((x4061))
+:extrapreds ((x4062))
+:extrapreds ((x4063))
+:extrapreds ((x4064))
+:extrapreds ((x4065))
+:extrapreds ((x4066))
+:extrapreds ((x4067))
+:extrapreds ((x4068))
+:extrapreds ((x4069))
+:extrapreds ((x4070))
+:extrapreds ((x4071))
+:extrapreds ((x4072))
+:extrapreds ((x4073))
+:extrapreds ((x4074))
+:extrapreds ((x4075))
+:extrapreds ((x4076))
+:extrapreds ((x4077))
+:extrapreds ((x4078))
+:extrapreds ((x4079))
+:extrapreds ((x4080))
+:extrapreds ((x4081))
+:extrapreds ((x4082))
+:extrapreds ((x4083))
+:extrapreds ((x4084))
+:extrapreds ((x4085))
+:extrapreds ((x4086))
+:extrapreds ((x4087))
+:extrapreds ((x4088))
+:extrapreds ((x4089))
+:extrapreds ((x4090))
+:extrapreds ((x4091))
+:extrapreds ((x4092))
+:extrapreds ((x4093))
+:extrapreds ((x4094))
+:extrapreds ((x4095))
+:extrapreds ((x4096))
+:extrapreds ((x4097))
+:extrapreds ((x4098))
+:extrapreds ((x4099))
+:extrapreds ((x4100))
+:extrapreds ((x4101))
+:extrapreds ((x4102))
+:extrapreds ((x4103))
+:extrapreds ((x4104))
+:extrapreds ((x4105))
+:extrapreds ((x4106))
+:extrapreds ((x4107))
+:extrapreds ((x4108))
+:extrapreds ((x4109))
+:extrapreds ((x4110))
+:extrapreds ((x4111))
+:extrapreds ((x4112))
+:extrapreds ((x4113))
+:extrapreds ((x4114))
+:extrapreds ((x4115))
+:extrapreds ((x4116))
+:extrapreds ((x4117))
+:extrapreds ((x4118))
+:extrapreds ((x4119))
+:extrapreds ((x4120))
+:extrapreds ((x4121))
+:extrapreds ((x4122))
+:extrapreds ((x4123))
+:extrapreds ((x4124))
+:extrapreds ((x4125))
+:extrapreds ((x4126))
+:extrapreds ((x4127))
+:extrapreds ((x4128))
+:extrapreds ((x4129))
+:extrapreds ((x4130))
+:extrapreds ((x4131))
+:extrapreds ((x4132))
+:extrapreds ((x4133))
+:extrapreds ((x4134))
+:extrapreds ((x4135))
+:extrapreds ((x4136))
+:extrapreds ((x4137))
+:extrapreds ((x4138))
+:extrapreds ((x4139))
+:extrapreds ((x4140))
+:extrapreds ((x4141))
+:extrapreds ((x4142))
+:extrapreds ((x4143))
+:extrapreds ((x4144))
+:extrapreds ((x4145))
+:extrapreds ((x4146))
+:extrapreds ((x4147))
+:extrapreds ((x4148))
+:extrapreds ((x4149))
+:extrapreds ((x4150))
+:extrapreds ((x4151))
+:extrapreds ((x4152))
+:extrapreds ((x4153))
+:extrapreds ((x4154))
+:extrapreds ((x4155))
+:extrapreds ((x4156))
+:extrapreds ((x4157))
+:extrapreds ((x4158))
+:extrapreds ((x4159))
+:extrapreds ((x4160))
+:extrapreds ((x4161))
+:extrapreds ((x4162))
+:extrapreds ((x4163))
+:extrapreds ((x4164))
+:extrapreds ((x4165))
+:extrapreds ((x4166))
+:extrapreds ((x4167))
+:extrapreds ((x4168))
+:extrapreds ((x4169))
+:extrapreds ((x4170))
+:extrapreds ((x4171))
+:extrapreds ((x4172))
+:extrapreds ((x4173))
+:extrapreds ((x4174))
+:extrapreds ((x4175))
+:extrapreds ((x4176))
+:extrapreds ((x4177))
+:extrapreds ((x4178))
+:extrapreds ((x4179))
+:extrapreds ((x4180))
+:extrapreds ((x4181))
+:extrapreds ((x4182))
+:extrapreds ((x4183))
+:extrapreds ((x4184))
+:extrapreds ((x4185))
+:extrapreds ((x4186))
+:extrapreds ((x4187))
+:extrapreds ((x4188))
+:extrapreds ((x4189))
+:extrapreds ((x4190))
+:extrapreds ((x4191))
+:extrapreds ((x4192))
+:extrapreds ((x4193))
+:extrapreds ((x4194))
+:extrapreds ((x4195))
+:extrapreds ((x4196))
+:extrapreds ((x4197))
+:extrapreds ((x4198))
+:extrapreds ((x4199))
+:extrapreds ((x4200))
+:extrapreds ((x4201))
+:extrapreds ((x4202))
+:extrapreds ((x4203))
+:extrapreds ((x4204))
+:extrapreds ((x4205))
+:extrapreds ((x4206))
+:extrapreds ((x4207))
+:extrapreds ((x4208))
+:extrapreds ((x4209))
+:extrapreds ((x4210))
+:extrapreds ((x4211))
+:extrapreds ((x4212))
+:extrapreds ((x4213))
+:extrapreds ((x4214))
+:extrapreds ((x4215))
+:extrapreds ((x4216))
+:extrapreds ((x4217))
+:extrapreds ((x4218))
+:extrapreds ((x4219))
+:extrapreds ((x4220))
+:extrapreds ((x4221))
+:extrapreds ((x4222))
+:extrapreds ((x4223))
+:extrapreds ((x4224))
+:extrapreds ((x4225))
+:extrapreds ((x4226))
+:extrapreds ((x4227))
+:extrapreds ((x4228))
+:extrapreds ((x4229))
+:extrapreds ((x4230))
+:extrapreds ((x4231))
+:extrapreds ((x4232))
+:extrapreds ((x4233))
+:extrapreds ((x4234))
+:extrapreds ((x4235))
+:extrapreds ((x4236))
+:extrapreds ((x4237))
+:extrapreds ((x4238))
+:extrapreds ((x4239))
+:extrapreds ((x4240))
+:extrapreds ((x4241))
+:extrapreds ((x4242))
+:extrapreds ((x4243))
+:extrapreds ((x4244))
+:extrapreds ((x4245))
+:extrapreds ((x4246))
+:extrapreds ((x4247))
+:extrapreds ((x4248))
+:extrapreds ((x4249))
+:extrapreds ((x4250))
+:extrapreds ((x4251))
+:extrapreds ((x4252))
+:extrapreds ((x4253))
+:extrapreds ((x4254))
+:extrapreds ((x4255))
+:extrapreds ((x4256))
+:extrapreds ((x4257))
+:extrapreds ((x4258))
+:extrapreds ((x4259))
+:extrapreds ((x4260))
+:extrapreds ((x4261))
+:extrapreds ((x4262))
+:extrapreds ((x4263))
+:extrapreds ((x4264))
+:extrapreds ((x4265))
+:extrapreds ((x4266))
+:extrapreds ((x4267))
+:extrapreds ((x4268))
+:extrapreds ((x4269))
+:extrapreds ((x4270))
+:extrapreds ((x4271))
+:extrapreds ((x4272))
+:extrapreds ((x4273))
+:extrapreds ((x4274))
+:extrapreds ((x4275))
+:extrapreds ((x4276))
+:extrapreds ((x4277))
+:extrapreds ((x4278))
+:extrapreds ((x4279))
+:extrapreds ((x4280))
+:extrapreds ((x4281))
+:extrapreds ((x4282))
+:extrapreds ((x4283))
+:extrapreds ((x4284))
+:extrapreds ((x4285))
+:extrapreds ((x4286))
+:extrapreds ((x4287))
+:extrapreds ((x4288))
+:extrapreds ((x4289))
+:extrapreds ((x4290))
+:extrapreds ((x4291))
+:extrapreds ((x4292))
+:extrapreds ((x4293))
+:extrapreds ((x4294))
+:extrapreds ((x4295))
+:extrapreds ((x4296))
+:extrapreds ((x4297))
+:extrapreds ((x4298))
+:extrapreds ((x4299))
+:extrapreds ((x4300))
+:extrapreds ((x4301))
+:extrapreds ((x4302))
+:extrapreds ((x4303))
+:extrapreds ((x4304))
+:extrapreds ((x4305))
+:extrapreds ((x4306))
+:extrapreds ((x4307))
+:extrapreds ((x4308))
+:extrapreds ((x4309))
+:extrapreds ((x4310))
+:extrapreds ((x4311))
+:extrapreds ((x4312))
+:extrapreds ((x4313))
+:extrapreds ((x4314))
+:extrapreds ((x4315))
+:extrapreds ((x4316))
+:extrapreds ((x4317))
+:extrapreds ((x4318))
+:extrapreds ((x4319))
+:extrapreds ((x4320))
+:extrapreds ((x4321))
+:extrapreds ((x4322))
+:extrapreds ((x4323))
+:extrapreds ((x4324))
+:extrapreds ((x4325))
+:extrapreds ((x4326))
+:extrapreds ((x4327))
+:extrapreds ((x4328))
+:extrapreds ((x4329))
+:extrapreds ((x4330))
+:extrapreds ((x4331))
+:extrapreds ((x4332))
+:extrapreds ((x4333))
+:extrapreds ((x4334))
+:extrapreds ((x4335))
+:extrapreds ((x4336))
+:extrapreds ((x4337))
+:extrapreds ((x4338))
+:extrapreds ((x4339))
+:extrapreds ((x4340))
+:extrapreds ((x4341))
+:extrapreds ((x4342))
+:extrapreds ((x4343))
+:extrapreds ((x4344))
+:extrapreds ((x4345))
+:extrapreds ((x4346))
+:extrapreds ((x4347))
+:extrapreds ((x4348))
+:extrapreds ((x4349))
+:extrapreds ((x4350))
+:extrapreds ((x4351))
+:extrapreds ((x4352))
+:extrapreds ((x4353))
+:extrapreds ((x4354))
+:extrapreds ((x4355))
+:extrapreds ((x4356))
+:extrapreds ((x4357))
+:extrapreds ((x4358))
+:extrapreds ((x4359))
+:extrapreds ((x4360))
+:extrapreds ((x4361))
+:extrapreds ((x4362))
+:extrapreds ((x4363))
+:extrapreds ((x4364))
+:extrapreds ((x4365))
+:extrapreds ((x4366))
+:extrapreds ((x4367))
+:extrapreds ((x4368))
+:extrapreds ((x4369))
+:extrapreds ((x4370))
+:extrapreds ((x4371))
+:extrapreds ((x4372))
+:extrapreds ((x4373))
+:extrapreds ((x4374))
+:extrapreds ((x4375))
+:extrapreds ((x4376))
+:extrapreds ((x4377))
+:extrapreds ((x4378))
+:extrapreds ((x4379))
+:extrapreds ((x4380))
+:extrapreds ((x4381))
+:extrapreds ((x4382))
+:extrapreds ((x4383))
+:extrapreds ((x4384))
+:extrapreds ((x4385))
+:extrapreds ((x4386))
+:extrapreds ((x4387))
+:extrapreds ((x4388))
+:extrapreds ((x4389))
+:extrapreds ((x4390))
+:extrapreds ((x4391))
+:extrapreds ((x4392))
+:extrapreds ((x4393))
+:extrapreds ((x4394))
+:extrapreds ((x4395))
+:extrapreds ((x4396))
+:extrapreds ((x4397))
+:extrapreds ((x4398))
+:extrapreds ((x4399))
+:extrapreds ((x4400))
+:extrapreds ((x4401))
+:extrapreds ((x4402))
+:extrapreds ((x4403))
+:extrapreds ((x4404))
+:extrapreds ((x4405))
+:extrapreds ((x4406))
+:extrapreds ((x4407))
+:extrapreds ((x4408))
+:extrapreds ((x4409))
+:extrapreds ((x4410))
+:extrapreds ((x4411))
+:extrapreds ((x4412))
+:extrapreds ((x4413))
+:extrapreds ((x4414))
+:extrapreds ((x4415))
+:extrapreds ((x4416))
+:extrapreds ((x4417))
+:extrapreds ((x4418))
+:extrapreds ((x4419))
+:extrapreds ((x4420))
+:extrapreds ((x4421))
+:extrapreds ((x4422))
+:extrapreds ((x4423))
+:extrapreds ((x4424))
+:extrapreds ((x4425))
+:extrapreds ((x4426))
+:extrapreds ((x4427))
+:extrapreds ((x4428))
+:extrapreds ((x4429))
+:extrapreds ((x4430))
+:extrapreds ((x4431))
+:extrapreds ((x4432))
+:extrapreds ((x4433))
+:extrapreds ((x4434))
+:extrapreds ((x4435))
+:extrapreds ((x4436))
+:extrapreds ((x4437))
+:extrapreds ((x4438))
+:extrapreds ((x4439))
+:extrapreds ((x4440))
+:extrapreds ((x4441))
+:extrapreds ((x4442))
+:extrapreds ((x4443))
+:extrapreds ((x4444))
+:extrapreds ((x4445))
+:extrapreds ((x4446))
+:extrapreds ((x4447))
+:extrapreds ((x4448))
+:extrapreds ((x4449))
+:extrapreds ((x4450))
+:extrapreds ((x4451))
+:extrapreds ((x4452))
+:extrapreds ((x4453))
+:extrapreds ((x4454))
+:extrapreds ((x4455))
+:extrapreds ((x4456))
+:extrapreds ((x4457))
+:extrapreds ((x4458))
+:extrapreds ((x4459))
+:extrapreds ((x4460))
+:extrapreds ((x4461))
+:extrapreds ((x4462))
+:extrapreds ((x4463))
+:extrapreds ((x4464))
+:extrapreds ((x4465))
+:extrapreds ((x4466))
+:extrapreds ((x4467))
+:extrapreds ((x4468))
+:extrapreds ((x4469))
+:extrapreds ((x4470))
+:extrapreds ((x4471))
+:extrapreds ((x4472))
+:extrapreds ((x4473))
+:extrapreds ((x4474))
+:extrapreds ((x4475))
+:extrapreds ((x4476))
+:extrapreds ((x4477))
+:extrapreds ((x4478))
+:extrapreds ((x4479))
+:extrapreds ((x4480))
+:extrapreds ((x4481))
+:extrapreds ((x4482))
+:extrapreds ((x4483))
+:extrapreds ((x4484))
+:extrapreds ((x4485))
+:extrapreds ((x4486))
+:extrapreds ((x4487))
+:extrapreds ((x4488))
+:extrapreds ((x4489))
+:extrapreds ((x4490))
+:extrapreds ((x4491))
+:extrapreds ((x4492))
+:extrapreds ((x4493))
+:extrapreds ((x4494))
+:extrapreds ((x4495))
+:extrapreds ((x4496))
+:extrapreds ((x4497))
+:extrapreds ((x4498))
+:extrapreds ((x4499))
+:extrapreds ((x4500))
+:extrapreds ((x4501))
+:extrapreds ((x4502))
+:extrapreds ((x4503))
+:extrapreds ((x4504))
+:extrapreds ((x4505))
+:extrapreds ((x4506))
+:extrapreds ((x4507))
+:extrapreds ((x4508))
+:extrapreds ((x4509))
+:extrapreds ((x4510))
+:extrapreds ((x4511))
+:extrapreds ((x4512))
+:extrapreds ((x4513))
+:extrapreds ((x4514))
+:extrapreds ((x4515))
+:extrapreds ((x4516))
+:extrapreds ((x4517))
+:extrapreds ((x4518))
+:extrapreds ((x4519))
+:extrapreds ((x4520))
+:extrapreds ((x4521))
+:extrapreds ((x4522))
+:extrapreds ((x4523))
+:extrapreds ((x4524))
+:extrapreds ((x4525))
+:extrapreds ((x4526))
+:extrapreds ((x4527))
+:extrapreds ((x4528))
+:extrapreds ((x4529))
+:extrapreds ((x4530))
+:extrapreds ((x4531))
+:extrapreds ((x4532))
+:extrapreds ((x4533))
+:extrapreds ((x4534))
+:extrapreds ((x4535))
+:extrapreds ((x4536))
+:extrapreds ((x4537))
+:extrapreds ((x4538))
+:extrapreds ((x4539))
+:extrapreds ((x4540))
+:extrapreds ((x4541))
+:extrapreds ((x4542))
+:extrapreds ((x4543))
+:extrapreds ((x4544))
+:extrapreds ((x4545))
+:extrapreds ((x4546))
+:extrapreds ((x4547))
+:extrapreds ((x4548))
+:extrapreds ((x4549))
+:extrapreds ((x4550))
+:extrapreds ((x4551))
+:extrapreds ((x4552))
+:extrapreds ((x4553))
+:extrapreds ((x4554))
+:extrapreds ((x4555))
+:extrapreds ((x4556))
+:extrapreds ((x4557))
+:extrapreds ((x4558))
+:extrapreds ((x4559))
+:extrapreds ((x4560))
+:extrapreds ((x4561))
+:extrapreds ((x4562))
+:extrapreds ((x4563))
+:extrapreds ((x4564))
+:extrapreds ((x4565))
+:extrapreds ((x4566))
+:extrapreds ((x4567))
+:extrapreds ((x4568))
+:extrapreds ((x4569))
+:extrapreds ((x4570))
+:extrapreds ((x4571))
+:extrapreds ((x4572))
+:extrapreds ((x4573))
+:extrapreds ((x4574))
+:extrapreds ((x4575))
+:extrapreds ((x4576))
+:extrapreds ((x4577))
+:extrapreds ((x4578))
+:extrapreds ((x4579))
+:extrapreds ((x4580))
+:extrapreds ((x4581))
+:extrapreds ((x4582))
+:extrapreds ((x4583))
+:extrapreds ((x4584))
+:extrapreds ((x4585))
+:extrapreds ((x4586))
+:extrapreds ((x4587))
+:extrapreds ((x4588))
+:extrapreds ((x4589))
+:extrapreds ((x4590))
+:extrapreds ((x4591))
+:extrapreds ((x4592))
+:extrapreds ((x4593))
+:extrapreds ((x4594))
+:extrapreds ((x4595))
+:extrapreds ((x4596))
+:extrapreds ((x4597))
+:extrapreds ((x4598))
+:extrapreds ((x4599))
+:extrapreds ((x4600))
+:extrapreds ((x4601))
+:extrapreds ((x4602))
+:extrapreds ((x4603))
+:extrapreds ((x4604))
+:extrapreds ((x4605))
+:extrapreds ((x4606))
+:extrapreds ((x4607))
+:extrapreds ((x4608))
+:extrapreds ((x4609))
+:extrapreds ((x4610))
+:extrapreds ((x4611))
+:extrapreds ((x4612))
+:extrapreds ((x4613))
+:extrapreds ((x4614))
+:extrapreds ((x4615))
+:extrapreds ((x4616))
+:extrapreds ((x4617))
+:extrapreds ((x4618))
+:extrapreds ((x4619))
+:extrapreds ((x4620))
+:extrapreds ((x4621))
+:extrapreds ((x4622))
+:extrapreds ((x4623))
+:extrapreds ((x4624))
+:extrapreds ((x4625))
+:extrapreds ((x4626))
+:extrapreds ((x4627))
+:extrapreds ((x4628))
+:extrapreds ((x4629))
+:extrapreds ((x4630))
+:extrapreds ((x4631))
+:extrapreds ((x4632))
+:extrapreds ((x4633))
+:extrapreds ((x4634))
+:extrapreds ((x4635))
+:extrapreds ((x4636))
+:extrapreds ((x4637))
+:extrapreds ((x4638))
+:extrapreds ((x4639))
+:extrapreds ((x4640))
+:extrapreds ((x4641))
+:extrapreds ((x4642))
+:extrapreds ((x4643))
+:extrapreds ((x4644))
+:extrapreds ((x4645))
+:extrapreds ((x4646))
+:extrapreds ((x4647))
+:extrapreds ((x4648))
+:extrapreds ((x4649))
+:extrapreds ((x4650))
+:extrapreds ((x4651))
+:extrapreds ((x4652))
+:extrapreds ((x4653))
+:extrapreds ((x4654))
+:extrapreds ((x4655))
+:extrapreds ((x4656))
+:extrapreds ((x4657))
+:extrapreds ((x4658))
+:extrapreds ((x4659))
+:extrapreds ((x4660))
+:extrapreds ((x4661))
+:extrapreds ((x4662))
+:extrapreds ((x4663))
+:extrapreds ((x4664))
+:extrapreds ((x4665))
+:extrapreds ((x4666))
+:extrapreds ((x4667))
+:extrapreds ((x4668))
+:extrapreds ((x4669))
+:extrapreds ((x4670))
+:extrapreds ((x4671))
+:extrapreds ((x4672))
+:extrapreds ((x4673))
+:extrapreds ((x4674))
+:extrapreds ((x4675))
+:extrapreds ((x4676))
+:extrapreds ((x4677))
+:extrapreds ((x4678))
+:extrapreds ((x4679))
+:extrapreds ((x4680))
+:extrapreds ((x4681))
+:extrapreds ((x4682))
+:extrapreds ((x4683))
+:extrapreds ((x4684))
+:extrapreds ((x4685))
+:extrapreds ((x4686))
+:extrapreds ((x4687))
+:extrapreds ((x4688))
+:extrapreds ((x4689))
+:extrapreds ((x4690))
+:extrapreds ((x4691))
+:extrapreds ((x4692))
+:extrapreds ((x4693))
+:extrapreds ((x4694))
+:extrapreds ((x4695))
+:extrapreds ((x4696))
+:extrapreds ((x4697))
+:extrapreds ((x4698))
+:extrapreds ((x4699))
+:extrapreds ((x4700))
+:extrapreds ((x4701))
+:extrapreds ((x4702))
+:extrapreds ((x4703))
+:extrapreds ((x4704))
+:extrapreds ((x4705))
+:extrapreds ((x4706))
+:extrapreds ((x4707))
+:extrapreds ((x4708))
+:extrapreds ((x4709))
+:extrapreds ((x4710))
+:extrapreds ((x4711))
+:extrapreds ((x4712))
+:extrapreds ((x4713))
+:extrapreds ((x4714))
+:extrapreds ((x4715))
+:extrapreds ((x4716))
+:extrapreds ((x4717))
+:extrapreds ((x4718))
+:extrapreds ((x4719))
+:extrapreds ((x4720))
+:extrapreds ((x4721))
+:extrapreds ((x4722))
+:extrapreds ((x4723))
+:extrapreds ((x4724))
+:extrapreds ((x4725))
+:extrapreds ((x4726))
+:extrapreds ((x4727))
+:extrapreds ((x4728))
+:extrapreds ((x4729))
+:extrapreds ((x4730))
+:extrapreds ((x4731))
+:extrapreds ((x4732))
+:extrapreds ((x4733))
+:extrapreds ((x4734))
+:extrapreds ((x4735))
+:extrapreds ((x4736))
+:extrapreds ((x4737))
+:extrapreds ((x4738))
+:extrapreds ((x4739))
+:extrapreds ((x4740))
+:extrapreds ((x4741))
+:extrapreds ((x4742))
+:extrapreds ((x4743))
+:extrapreds ((x4744))
+:extrapreds ((x4745))
+:extrapreds ((x4746))
+:extrapreds ((x4747))
+:extrapreds ((x4748))
+:extrapreds ((x4749))
+:extrapreds ((x4750))
+:extrapreds ((x4751))
+:extrapreds ((x4752))
+:extrapreds ((x4753))
+:extrapreds ((x4754))
+:extrapreds ((x4755))
+:extrapreds ((x4756))
+:extrapreds ((x4757))
+:extrapreds ((x4758))
+:extrapreds ((x4759))
+:extrapreds ((x4760))
+:extrapreds ((x4761))
+:extrapreds ((x4762))
+:extrapreds ((x4763))
+:extrapreds ((x4764))
+:extrapreds ((x4765))
+:extrapreds ((x4766))
+:extrapreds ((x4767))
+:extrapreds ((x4768))
+:extrapreds ((x4769))
+:extrapreds ((x4770))
+:extrapreds ((x4771))
+:extrapreds ((x4772))
+:extrapreds ((x4773))
+:extrapreds ((x4774))
+:extrapreds ((x4775))
+:extrapreds ((x4776))
+:extrapreds ((x4777))
+:extrapreds ((x4778))
+:extrapreds ((x4779))
+:extrapreds ((x4780))
+:extrapreds ((x4781))
+:extrapreds ((x4782))
+:extrapreds ((x4783))
+:extrapreds ((x4784))
+:extrapreds ((x4785))
+:extrapreds ((x4786))
+:extrapreds ((x4787))
+:extrapreds ((x4788))
+:extrapreds ((x4789))
+:extrapreds ((x4790))
+:extrapreds ((x4791))
+:extrapreds ((x4792))
+:extrapreds ((x4793))
+:extrapreds ((x4794))
+:extrapreds ((x4795))
+:extrapreds ((x4796))
+:extrapreds ((x4797))
+:extrapreds ((x4798))
+:extrapreds ((x4799))
+:extrapreds ((x4800))
+:extrapreds ((x4801))
+:extrapreds ((x4802))
+:extrapreds ((x4803))
+:extrapreds ((x4804))
+:extrapreds ((x4805))
+:extrapreds ((x4806))
+:extrapreds ((x4807))
+:extrapreds ((x4808))
+:extrapreds ((x4809))
+:extrapreds ((x4810))
+:extrapreds ((x4811))
+:extrapreds ((x4812))
+:extrapreds ((x4813))
+:extrapreds ((x4814))
+:extrapreds ((x4815))
+:extrapreds ((x4816))
+:extrapreds ((x4817))
+:extrapreds ((x4818))
+:extrapreds ((x4819))
+:extrapreds ((x4820))
+:extrapreds ((x4821))
+:extrapreds ((x4822))
+:extrapreds ((x4823))
+:extrapreds ((x4824))
+:extrapreds ((x4825))
+:extrapreds ((x4826))
+:extrapreds ((x4827))
+:extrapreds ((x4828))
+:extrapreds ((x4829))
+:extrapreds ((x4830))
+:extrapreds ((x4831))
+:extrapreds ((x4832))
+:extrapreds ((x4833))
+:extrapreds ((x4834))
+:extrapreds ((x4835))
+:extrapreds ((x4836))
+:extrapreds ((x4837))
+:extrapreds ((x4838))
+:extrapreds ((x4839))
+:extrapreds ((x4840))
+:extrapreds ((x4841))
+:extrapreds ((x4842))
+:extrapreds ((x4843))
+:extrapreds ((x4844))
+:extrapreds ((x4845))
+:extrapreds ((x4846))
+:extrapreds ((x4847))
+:extrapreds ((x4848))
+:extrapreds ((x4849))
+:extrapreds ((x4850))
+:extrapreds ((x4851))
+:extrapreds ((x4852))
+:extrapreds ((x4853))
+:extrapreds ((x4854))
+:extrapreds ((x4855))
+:extrapreds ((x4856))
+:extrapreds ((x4857))
+:extrapreds ((x4858))
+:extrapreds ((x4859))
+:extrapreds ((x4860))
+:extrapreds ((x4861))
+:extrapreds ((x4862))
+:extrapreds ((x4863))
+:extrapreds ((x4864))
+:extrapreds ((x4865))
+:extrapreds ((x4866))
+:extrapreds ((x4867))
+:extrapreds ((x4868))
+:extrapreds ((x4869))
+:extrapreds ((x4870))
+:extrapreds ((x4871))
+:extrapreds ((x4872))
+:extrapreds ((x4873))
+:extrapreds ((x4874))
+:extrapreds ((x4875))
+:extrapreds ((x4876))
+:extrapreds ((x4877))
+:extrapreds ((x4878))
+:extrapreds ((x4879))
+:extrapreds ((x4880))
+:extrapreds ((x4881))
+:extrapreds ((x4882))
+:extrapreds ((x4883))
+:extrapreds ((x4884))
+:extrapreds ((x4885))
+:extrapreds ((x4886))
+:extrapreds ((x4887))
+:extrapreds ((x4888))
+:extrapreds ((x4889))
+:extrapreds ((x4890))
+:extrapreds ((x4891))
+:extrapreds ((x4892))
+:extrapreds ((x4893))
+:extrapreds ((x4894))
+:extrapreds ((x4895))
+:extrapreds ((x4896))
+:extrapreds ((x4897))
+:extrapreds ((x4898))
+:extrapreds ((x4899))
+:extrapreds ((x4900))
+:extrapreds ((x4901))
+:extrapreds ((x4902))
+:extrapreds ((x4903))
+:extrapreds ((x4904))
+:extrapreds ((x4905))
+:extrapreds ((x4906))
+:extrapreds ((x4907))
+:extrapreds ((x4908))
+:extrapreds ((x4909))
+:extrapreds ((x4910))
+:extrapreds ((x4911))
+:extrapreds ((x4912))
+:extrapreds ((x4913))
+:extrapreds ((x4914))
+:extrapreds ((x4915))
+:extrapreds ((x4916))
+:extrapreds ((x4917))
+:extrapreds ((x4918))
+:extrapreds ((x4919))
+:extrapreds ((x4920))
+:extrapreds ((x4921))
+:extrapreds ((x4922))
+:extrapreds ((x4923))
+:extrapreds ((x4924))
+:extrapreds ((x4925))
+:extrapreds ((x4926))
+:extrapreds ((x4927))
+:extrapreds ((x4928))
+:extrapreds ((x4929))
+:extrapreds ((x4930))
+:extrapreds ((x4931))
+:extrapreds ((x4932))
+:extrapreds ((x4933))
+:extrapreds ((x4934))
+:extrapreds ((x4935))
+:extrapreds ((x4936))
+:extrapreds ((x4937))
+:extrapreds ((x4938))
+:extrapreds ((x4939))
+:extrapreds ((x4940))
+:extrapreds ((x4941))
+:extrapreds ((x4942))
+:extrapreds ((x4943))
+:extrapreds ((x4944))
+:extrapreds ((x4945))
+:extrapreds ((x4946))
+:extrapreds ((x4947))
+:extrapreds ((x4948))
+:extrapreds ((x4949))
+:extrapreds ((x4950))
+:extrapreds ((x4951))
+:extrapreds ((x4952))
+:extrapreds ((x4953))
+:extrapreds ((x4954))
+:extrapreds ((x4955))
+:extrapreds ((x4956))
+:extrapreds ((x4957))
+:extrapreds ((x4958))
+:extrapreds ((x4959))
+:extrapreds ((x4960))
+:extrapreds ((x4961))
+:extrapreds ((x4962))
+:extrapreds ((x4963))
+:extrapreds ((x4964))
+:extrapreds ((x4965))
+:extrapreds ((x4966))
+:extrapreds ((x4967))
+:extrapreds ((x4968))
+:extrapreds ((x4969))
+:extrapreds ((x4970))
+:extrapreds ((x4971))
+:extrapreds ((x4972))
+:extrapreds ((x4973))
+:extrapreds ((x4974))
+:extrapreds ((x4975))
+:extrapreds ((x4976))
+:extrapreds ((x4977))
+:extrapreds ((x4978))
+:extrapreds ((x4979))
+:extrapreds ((x4980))
+:extrapreds ((x4981))
+:extrapreds ((x4982))
+:extrapreds ((x4983))
+:extrapreds ((x4984))
+:extrapreds ((x4985))
+:extrapreds ((x4986))
+:extrapreds ((x4987))
+:extrapreds ((x4988))
+:extrapreds ((x4989))
+:extrapreds ((x4990))
+:extrapreds ((x4991))
+:extrapreds ((x4992))
+:extrapreds ((x4993))
+:extrapreds ((x4994))
+:extrapreds ((x4995))
+:extrapreds ((x4996))
+:extrapreds ((x4997))
+:extrapreds ((x4998))
+:extrapreds ((x4999))
+:extrapreds ((x5000))
+:extrapreds ((x5001))
+:extrapreds ((x5002))
+:extrapreds ((x5003))
+:extrapreds ((x5004))
+:extrapreds ((x5005))
+:extrapreds ((x5006))
+:extrapreds ((x5007))
+:extrapreds ((x5008))
+:extrapreds ((x5009))
+:extrapreds ((x5010))
+:extrapreds ((x5011))
+:extrapreds ((x5012))
+:extrapreds ((x5013))
+:extrapreds ((x5014))
+:extrapreds ((x5015))
+:extrapreds ((x5016))
+:extrapreds ((x5017))
+:extrapreds ((x5018))
+:extrapreds ((x5019))
+:extrapreds ((x5020))
+:extrapreds ((x5021))
+:extrapreds ((x5022))
+:extrapreds ((x5023))
+:extrapreds ((x5024))
+:extrapreds ((x5025))
+:extrapreds ((x5026))
+:extrapreds ((x5027))
+:extrapreds ((x5028))
+:extrapreds ((x5029))
+:extrapreds ((x5030))
+:extrapreds ((x5031))
+:extrapreds ((x5032))
+:extrapreds ((x5033))
+:extrapreds ((x5034))
+:extrapreds ((x5035))
+:extrapreds ((x5036))
+:extrapreds ((x5037))
+:extrapreds ((x5038))
+:extrapreds ((x5039))
+:extrapreds ((x5040))
+:extrapreds ((x5041))
+:extrapreds ((x5042))
+:extrapreds ((x5043))
+:extrapreds ((x5044))
+:extrapreds ((x5045))
+:extrapreds ((x5046))
+:extrapreds ((x5047))
+:extrapreds ((x5048))
+:extrapreds ((x5049))
+:extrapreds ((x5050))
+:extrapreds ((x5051))
+:extrapreds ((x5052))
+:extrapreds ((x5053))
+:extrapreds ((x5054))
+:extrapreds ((x5055))
+:extrapreds ((x5056))
+:extrapreds ((x5057))
+:extrapreds ((x5058))
+:extrapreds ((x5059))
+:extrapreds ((x5060))
+:extrapreds ((x5061))
+:extrapreds ((x5062))
+:extrapreds ((x5063))
+:extrapreds ((x5064))
+:extrapreds ((x5065))
+:extrapreds ((x5066))
+:extrapreds ((x5067))
+:extrapreds ((x5068))
+:extrapreds ((x5069))
+:extrapreds ((x5070))
+:extrapreds ((x5071))
+:extrapreds ((x5072))
+:extrapreds ((x5073))
+:extrapreds ((x5074))
+:extrapreds ((x5075))
+:extrapreds ((x5076))
+:extrapreds ((x5077))
+:extrapreds ((x5078))
+:extrapreds ((x5079))
+:extrapreds ((x5080))
+:extrapreds ((x5081))
+:extrapreds ((x5082))
+:extrapreds ((x5083))
+:extrapreds ((x5084))
+:extrapreds ((x5085))
+:extrapreds ((x5086))
+:extrapreds ((x5087))
+:extrapreds ((x5088))
+:extrapreds ((x5089))
+:extrapreds ((x5090))
+:extrapreds ((x5091))
+:extrapreds ((x5092))
+:extrapreds ((x5093))
+:extrapreds ((x5094))
+:extrapreds ((x5095))
+:extrapreds ((x5096))
+:extrapreds ((x5097))
+:extrapreds ((x5098))
+:extrapreds ((x5099))
+:extrapreds ((x5100))
+:extrapreds ((x5101))
+:extrapreds ((x5102))
+:extrapreds ((x5103))
+:extrapreds ((x5104))
+:extrapreds ((x5105))
+:extrapreds ((x5106))
+:extrapreds ((x5107))
+:extrapreds ((x5108))
+:extrapreds ((x5109))
+:extrapreds ((x5110))
+:extrapreds ((x5111))
+:extrapreds ((x5112))
+:extrapreds ((x5113))
+:extrapreds ((x5114))
+:extrapreds ((x5115))
+:extrapreds ((x5116))
+:extrapreds ((x5117))
+:extrapreds ((x5118))
+:extrapreds ((x5119))
+:extrapreds ((x5120))
+:extrapreds ((x5121))
+:extrapreds ((x5122))
+:extrapreds ((x5123))
+:extrapreds ((x5124))
+:extrapreds ((x5125))
+:extrapreds ((x5126))
+:extrapreds ((x5127))
+:extrapreds ((x5128))
+:extrapreds ((x5129))
+:extrapreds ((x5130))
+:extrapreds ((x5131))
+:extrapreds ((x5132))
+:extrapreds ((x5133))
+:extrapreds ((x5134))
+:extrapreds ((x5135))
+:extrapreds ((x5136))
+:extrapreds ((x5137))
+:extrapreds ((x5138))
+:extrapreds ((x5139))
+:extrapreds ((x5140))
+:extrapreds ((x5141))
+:extrapreds ((x5142))
+:extrapreds ((x5143))
+:extrapreds ((x5144))
+:extrapreds ((x5145))
+:extrapreds ((x5146))
+:extrapreds ((x5147))
+:extrapreds ((x5148))
+:extrapreds ((x5149))
+:extrapreds ((x5150))
+:extrapreds ((x5151))
+:extrapreds ((x5152))
+:extrapreds ((x5153))
+:extrapreds ((x5154))
+:extrapreds ((x5155))
+:extrapreds ((x5156))
+:extrapreds ((x5157))
+:extrapreds ((x5158))
+:extrapreds ((x5159))
+:extrapreds ((x5160))
+:extrapreds ((x5161))
+:extrapreds ((x5162))
+:extrapreds ((x5163))
+:extrapreds ((x5164))
+:extrapreds ((x5165))
+:extrapreds ((x5166))
+:extrapreds ((x5167))
+:extrapreds ((x5168))
+:extrapreds ((x5169))
+:extrapreds ((x5170))
+:extrapreds ((x5171))
+:extrapreds ((x5172))
+:extrapreds ((x5173))
+:extrapreds ((x5174))
+:extrapreds ((x5175))
+:extrapreds ((x5176))
+:extrapreds ((x5177))
+:extrapreds ((x5178))
+:extrapreds ((x5179))
+:extrapreds ((x5180))
+:extrapreds ((x5181))
+:extrapreds ((x5182))
+:extrapreds ((x5183))
+:extrapreds ((x5184))
+:extrapreds ((x5185))
+:extrapreds ((x5186))
+:extrapreds ((x5187))
+:extrapreds ((x5188))
+:extrapreds ((x5189))
+:extrapreds ((x5190))
+:extrapreds ((x5191))
+:extrapreds ((x5192))
+:extrapreds ((x5193))
+:extrapreds ((x5194))
+:extrapreds ((x5195))
+:extrapreds ((x5196))
+:extrapreds ((x5197))
+:extrapreds ((x5198))
+:extrapreds ((x5199))
+:extrapreds ((x5200))
+:extrapreds ((x5201))
+:extrapreds ((x5202))
+:extrapreds ((x5203))
+:extrapreds ((x5204))
+:extrapreds ((x5205))
+:extrapreds ((x5206))
+:extrapreds ((x5207))
+:extrapreds ((x5208))
+:extrapreds ((x5209))
+:extrapreds ((x5210))
+:extrapreds ((x5211))
+:extrapreds ((x5212))
+:extrapreds ((x5213))
+:extrapreds ((x5214))
+:extrapreds ((x5215))
+:extrapreds ((x5216))
+:extrapreds ((x5217))
+:extrapreds ((x5218))
+:extrapreds ((x5219))
+:extrapreds ((x5220))
+:extrapreds ((x5221))
+:extrapreds ((x5222))
+:extrapreds ((x5223))
+:extrapreds ((x5224))
+:extrapreds ((x5225))
+:extrapreds ((x5226))
+:extrapreds ((x5227))
+:extrapreds ((x5228))
+:extrapreds ((x5229))
+:extrapreds ((x5230))
+:extrapreds ((x5231))
+:extrapreds ((x5232))
+:extrapreds ((x5233))
+:extrapreds ((x5234))
+:extrapreds ((x5235))
+:extrapreds ((x5236))
+:extrapreds ((x5237))
+:extrapreds ((x5238))
+:extrapreds ((x5239))
+:extrapreds ((x5240))
+:extrapreds ((x5241))
+:extrapreds ((x5242))
+:extrapreds ((x5243))
+:extrapreds ((x5244))
+:extrapreds ((x5245))
+:extrapreds ((x5246))
+:extrapreds ((x5247))
+:extrapreds ((x5248))
+:extrapreds ((x5249))
+:extrapreds ((x5250))
+:extrapreds ((x5251))
+:extrapreds ((x5252))
+:extrapreds ((x5253))
+:extrapreds ((x5254))
+:extrapreds ((x5255))
+:extrapreds ((x5256))
+:extrapreds ((x5257))
+:extrapreds ((x5258))
+:extrapreds ((x5259))
+:extrapreds ((x5260))
+:extrapreds ((x5261))
+:extrapreds ((x5262))
+:extrapreds ((x5263))
+:extrapreds ((x5264))
+:extrapreds ((x5265))
+:extrapreds ((x5266))
+:extrapreds ((x5267))
+:extrapreds ((x5268))
+:extrapreds ((x5269))
+:extrapreds ((x5270))
+:extrapreds ((x5271))
+:extrapreds ((x5272))
+:extrapreds ((x5273))
+:extrapreds ((x5274))
+:extrapreds ((x5275))
+:extrapreds ((x5276))
+:extrapreds ((x5277))
+:extrapreds ((x5278))
+:extrapreds ((x5279))
+:extrapreds ((x5280))
+:extrapreds ((x5281))
+:extrapreds ((x5282))
+:extrapreds ((x5283))
+:extrapreds ((x5284))
+:extrapreds ((x5285))
+:extrapreds ((x5286))
+:extrapreds ((x5287))
+:extrapreds ((x5288))
+:extrapreds ((x5289))
+:extrapreds ((x5290))
+:extrapreds ((x5291))
+:extrapreds ((x5292))
+:extrapreds ((x5293))
+:extrapreds ((x5294))
+:extrapreds ((x5295))
+:extrapreds ((x5296))
+:extrapreds ((x5297))
+:extrapreds ((x5298))
+:extrapreds ((x5299))
+:extrapreds ((x5300))
+:extrapreds ((x5301))
+:extrapreds ((x5302))
+:extrapreds ((x5303))
+:extrapreds ((x5304))
+:extrapreds ((x5305))
+:extrapreds ((x5306))
+:extrapreds ((x5307))
+:extrapreds ((x5308))
+:extrapreds ((x5309))
+:extrapreds ((x5310))
+:extrapreds ((x5311))
+:extrapreds ((x5312))
+:extrapreds ((x5313))
+:extrapreds ((x5314))
+:extrapreds ((x5315))
+:extrapreds ((x5316))
+:extrapreds ((x5317))
+:extrapreds ((x5318))
+:extrapreds ((x5319))
+:extrapreds ((x5320))
+:extrapreds ((x5321))
+:extrapreds ((x5322))
+:extrapreds ((x5323))
+:extrapreds ((x5324))
+:extrapreds ((x5325))
+:extrapreds ((x5326))
+:extrapreds ((x5327))
+:extrapreds ((x5328))
+:extrapreds ((x5329))
+:extrapreds ((x5330))
+:extrapreds ((x5331))
+:extrapreds ((x5332))
+:extrapreds ((x5333))
+:extrapreds ((x5334))
+:extrapreds ((x5335))
+:extrapreds ((x5336))
+:extrapreds ((x5337))
+:extrapreds ((x5338))
+:extrapreds ((x5339))
+:extrapreds ((x5340))
+:extrapreds ((x5341))
+:extrapreds ((x5342))
+:extrapreds ((x5343))
+:extrapreds ((x5344))
+:extrapreds ((x5345))
+:extrapreds ((x5346))
+:extrapreds ((x5347))
+:extrapreds ((x5348))
+:extrapreds ((x5349))
+:extrapreds ((x5350))
+:extrapreds ((x5351))
+:extrapreds ((x5352))
+:extrapreds ((x5353))
+:extrapreds ((x5354))
+:extrapreds ((x5355))
+:extrapreds ((x5356))
+:extrapreds ((x5357))
+:extrapreds ((x5358))
+:extrapreds ((x5359))
+:extrapreds ((x5360))
+:extrapreds ((x5361))
+:extrapreds ((x5362))
+:extrapreds ((x5363))
+:extrapreds ((x5364))
+:extrapreds ((x5365))
+:extrapreds ((x5366))
+:extrapreds ((x5367))
+:extrapreds ((x5368))
+:extrapreds ((x5369))
+:extrapreds ((x5370))
+:extrapreds ((x5371))
+:extrapreds ((x5372))
+:extrapreds ((x5373))
+:extrapreds ((x5374))
+:extrapreds ((x5375))
+:extrapreds ((x5376))
+:extrapreds ((x5377))
+:extrapreds ((x5378))
+:extrapreds ((x5379))
+:extrapreds ((x5380))
+:extrapreds ((x5381))
+:extrapreds ((x5382))
+:extrapreds ((x5383))
+:extrapreds ((x5384))
+:extrapreds ((x5385))
+:extrapreds ((x5386))
+:extrapreds ((x5387))
+:extrapreds ((x5388))
+:extrapreds ((x5389))
+:extrapreds ((x5390))
+:extrapreds ((x5391))
+:extrapreds ((x5392))
+:extrapreds ((x5393))
+:extrapreds ((x5394))
+:extrapreds ((x5395))
+:extrapreds ((x5396))
+:extrapreds ((x5397))
+:extrapreds ((x5398))
+:extrapreds ((x5399))
+:extrapreds ((x5400))
+:extrapreds ((x5401))
+:extrapreds ((x5402))
+:extrapreds ((x5403))
+:extrapreds ((x5404))
+:extrapreds ((x5405))
+:extrapreds ((x5406))
+:extrapreds ((x5407))
+:extrapreds ((x5408))
+:extrapreds ((x5409))
+:extrapreds ((x5410))
+:extrapreds ((x5411))
+:extrapreds ((x5412))
+:extrapreds ((x5413))
+:extrapreds ((x5414))
+:extrapreds ((x5415))
+:extrapreds ((x5416))
+:extrapreds ((x5417))
+:extrapreds ((x5418))
+:extrapreds ((x5419))
+:extrapreds ((x5420))
+:extrapreds ((x5421))
+:extrapreds ((x5422))
+:extrapreds ((x5423))
+:extrapreds ((x5424))
+:extrapreds ((x5425))
+:extrapreds ((x5426))
+:extrapreds ((x5427))
+:extrapreds ((x5428))
+:extrapreds ((x5429))
+:extrapreds ((x5430))
+:extrapreds ((x5431))
+:extrapreds ((x5432))
+:extrapreds ((x5433))
+:extrapreds ((x5434))
+:extrapreds ((x5435))
+:extrapreds ((x5436))
+:extrapreds ((x5437))
+:extrapreds ((x5438))
+:extrapreds ((x5439))
+:extrapreds ((x5440))
+:extrapreds ((x5441))
+:extrapreds ((x5442))
+:extrapreds ((x5443))
+:extrapreds ((x5444))
+:extrapreds ((x5445))
+:extrapreds ((x5446))
+:extrapreds ((x5447))
+:extrapreds ((x5448))
+:extrapreds ((x5449))
+:extrapreds ((x5450))
+:extrapreds ((x5451))
+:extrapreds ((x5452))
+:extrapreds ((x5453))
+:extrapreds ((x5454))
+:extrapreds ((x5455))
+:extrapreds ((x5456))
+:extrapreds ((x5457))
+:extrapreds ((x5458))
+:extrapreds ((x5459))
+:extrapreds ((x5460))
+:extrapreds ((x5461))
+:extrapreds ((x5462))
+:extrapreds ((x5463))
+:extrapreds ((x5464))
+:extrapreds ((x5465))
+:extrapreds ((x5466))
+:extrapreds ((x5467))
+:extrapreds ((x5468))
+:extrapreds ((x5469))
+:extrapreds ((x5470))
+:extrapreds ((x5471))
+:extrapreds ((x5472))
+:extrapreds ((x5473))
+:extrapreds ((x5474))
+:extrapreds ((x5475))
+:extrapreds ((x5476))
+:extrapreds ((x5477))
+:extrapreds ((x5478))
+:extrapreds ((x5479))
+:extrapreds ((x5480))
+:extrapreds ((x5481))
+:extrapreds ((x5482))
+:extrapreds ((x5483))
+:extrapreds ((x5484))
+:extrapreds ((x5485))
+:extrapreds ((x5486))
+:extrapreds ((x5487))
+:extrapreds ((x5488))
+:extrapreds ((x5489))
+:extrapreds ((x5490))
+:extrapreds ((x5491))
+:extrapreds ((x5492))
+:extrapreds ((x5493))
+:extrapreds ((x5494))
+:extrapreds ((x5495))
+:extrapreds ((x5496))
+:extrapreds ((x5497))
+:extrapreds ((x5498))
+:extrapreds ((x5499))
+:extrapreds ((x5500))
+:extrapreds ((x5501))
+:extrapreds ((x5502))
+:extrapreds ((x5503))
+:extrapreds ((x5504))
+:extrapreds ((x5505))
+:extrapreds ((x5506))
+:extrapreds ((x5507))
+:extrapreds ((x5508))
+:extrapreds ((x5509))
+:extrapreds ((x5510))
+:extrapreds ((x5511))
+:extrapreds ((x5512))
+:extrapreds ((x5513))
+:extrapreds ((x5514))
+:extrapreds ((x5515))
+:extrapreds ((x5516))
+:extrapreds ((x5517))
+:extrapreds ((x5518))
+:extrapreds ((x5519))
+:extrapreds ((x5520))
+:extrapreds ((x5521))
+:extrapreds ((x5522))
+:extrapreds ((x5523))
+:extrapreds ((x5524))
+:extrapreds ((x5525))
+:extrapreds ((x5526))
+:extrapreds ((x5527))
+:extrapreds ((x5528))
+:extrapreds ((x5529))
+:extrapreds ((x5530))
+:extrapreds ((x5531))
+:extrapreds ((x5532))
+:extrapreds ((x5533))
+:extrapreds ((x5534))
+:extrapreds ((x5535))
+:extrapreds ((x5536))
+:extrapreds ((x5537))
+:extrapreds ((x5538))
+:extrapreds ((x5539))
+:extrapreds ((x5540))
+:extrapreds ((x5541))
+:extrapreds ((x5542))
+:extrapreds ((x5543))
+:extrapreds ((x5544))
+:extrapreds ((x5545))
+:extrapreds ((x5546))
+:extrapreds ((x5547))
+:extrapreds ((x5548))
+:extrapreds ((x5549))
+:extrapreds ((x5550))
+:extrapreds ((x5551))
+:extrapreds ((x5552))
+:extrapreds ((x5553))
+:extrapreds ((x5554))
+:extrapreds ((x5555))
+:extrapreds ((x5556))
+:extrapreds ((x5557))
+:extrapreds ((x5558))
+:extrapreds ((x5559))
+:extrapreds ((x5560))
+:extrapreds ((x5561))
+:extrapreds ((x5562))
+:extrapreds ((x5563))
+:extrapreds ((x5564))
+:extrapreds ((x5565))
+:extrapreds ((x5566))
+:extrapreds ((x5567))
+:extrapreds ((x5568))
+:extrapreds ((x5569))
+:extrapreds ((x5570))
+:extrapreds ((x5571))
+:extrapreds ((x5572))
+:extrapreds ((x5573))
+:extrapreds ((x5574))
+:extrapreds ((x5575))
+:extrapreds ((x5576))
+:extrapreds ((x5577))
+:extrapreds ((x5578))
+:extrapreds ((x5579))
+:extrapreds ((x5580))
+:extrapreds ((x5581))
+:extrapreds ((x5582))
+:extrapreds ((x5583))
+:extrapreds ((x5584))
+:extrapreds ((x5585))
+:extrapreds ((x5586))
+:extrapreds ((x5587))
+:extrapreds ((x5588))
+:extrapreds ((x5589))
+:extrapreds ((x5590))
+:extrapreds ((x5591))
+:extrapreds ((x5592))
+:extrapreds ((x5593))
+:extrapreds ((x5594))
+:extrapreds ((x5595))
+:extrapreds ((x5596))
+:extrapreds ((x5597))
+:extrapreds ((x5598))
+:extrapreds ((x5599))
+:extrapreds ((x5600))
+:extrapreds ((x5601))
+:extrapreds ((x5602))
+:extrapreds ((x5603))
+:extrapreds ((x5604))
+:extrapreds ((x5605))
+:extrapreds ((x5606))
+:extrapreds ((x5607))
+:extrapreds ((x5608))
+:extrapreds ((x5609))
+:extrapreds ((x5610))
+:extrapreds ((x5611))
+:extrapreds ((x5612))
+:extrapreds ((x5613))
+:extrapreds ((x5614))
+:extrapreds ((x5615))
+:extrapreds ((x5616))
+:extrapreds ((x5617))
+:extrapreds ((x5618))
+:extrapreds ((x5619))
+:extrapreds ((x5620))
+:extrapreds ((x5621))
+:extrapreds ((x5622))
+:extrapreds ((x5623))
+:extrapreds ((x5624))
+:extrapreds ((x5625))
+:extrapreds ((x5626))
+:extrapreds ((x5627))
+:extrapreds ((x5628))
+:extrapreds ((x5629))
+:extrapreds ((x5630))
+:extrapreds ((x5631))
+:extrapreds ((x5632))
+:extrapreds ((x5633))
+:extrapreds ((x5634))
+:extrapreds ((x5635))
+:extrapreds ((x5636))
+:extrapreds ((x5637))
+:extrapreds ((x5638))
+:extrapreds ((x5639))
+:extrapreds ((x5640))
+:extrapreds ((x5641))
+:extrapreds ((x5642))
+:extrapreds ((x5643))
+:extrapreds ((x5644))
+:extrapreds ((x5645))
+:extrapreds ((x5646))
+:extrapreds ((x5647))
+:extrapreds ((x5648))
+:extrapreds ((x5649))
+:extrapreds ((x5650))
+:extrapreds ((x5651))
+:extrapreds ((x5652))
+:extrapreds ((x5653))
+:extrapreds ((x5654))
+:extrapreds ((x5655))
+:extrapreds ((x5656))
+:extrapreds ((x5657))
+:extrapreds ((x5658))
+:extrapreds ((x5659))
+:extrapreds ((x5660))
+:extrapreds ((x5661))
+:extrapreds ((x5662))
+:extrapreds ((x5663))
+:extrapreds ((x5664))
+:extrapreds ((x5665))
+:extrapreds ((x5666))
+:extrapreds ((x5667))
+:extrapreds ((x5668))
+:extrapreds ((x5669))
+:extrapreds ((x5670))
+:extrapreds ((x5671))
+:extrapreds ((x5672))
+:extrapreds ((x5673))
+:extrapreds ((x5674))
+:extrapreds ((x5675))
+:extrapreds ((x5676))
+:extrapreds ((x5677))
+:extrapreds ((x5678))
+:extrapreds ((x5679))
+:extrapreds ((x5680))
+:extrapreds ((x5681))
+:extrapreds ((x5682))
+:extrapreds ((x5683))
+:extrapreds ((x5684))
+:extrapreds ((x5685))
+:extrapreds ((x5686))
+:extrapreds ((x5687))
+:extrapreds ((x5688))
+:extrapreds ((x5689))
+:extrapreds ((x5690))
+:extrapreds ((x5691))
+:extrapreds ((x5692))
+:extrapreds ((x5693))
+:extrapreds ((x5694))
+:extrapreds ((x5695))
+:extrapreds ((x5696))
+:extrapreds ((x5697))
+:extrapreds ((x5698))
+:extrapreds ((x5699))
+:extrapreds ((x5700))
+:extrapreds ((x5701))
+:extrapreds ((x5702))
+:extrapreds ((x5703))
+:extrapreds ((x5704))
+:extrapreds ((x5705))
+:extrapreds ((x5706))
+:extrapreds ((x5707))
+:extrapreds ((x5708))
+:extrapreds ((x5709))
+:extrapreds ((x5710))
+:extrapreds ((x5711))
+:extrapreds ((x5712))
+:extrapreds ((x5713))
+:extrapreds ((x5714))
+:extrapreds ((x5715))
+:extrapreds ((x5716))
+:extrapreds ((x5717))
+:extrapreds ((x5718))
+:extrapreds ((x5719))
+:extrapreds ((x5720))
+:extrapreds ((x5721))
+:extrapreds ((x5722))
+:extrapreds ((x5723))
+:extrapreds ((x5724))
+:extrapreds ((x5725))
+:extrapreds ((x5726))
+:extrapreds ((x5727))
+:extrapreds ((x5728))
+:extrapreds ((x5729))
+:extrapreds ((x5730))
+:extrapreds ((x5731))
+:extrapreds ((x5732))
+:extrapreds ((x5733))
+:extrapreds ((x5734))
+:extrapreds ((x5735))
+:extrapreds ((x5736))
+:extrapreds ((x5737))
+:extrapreds ((x5738))
+:extrapreds ((x5739))
+:extrapreds ((x5740))
+:extrapreds ((x5741))
+:extrapreds ((x5742))
+:extrapreds ((x5743))
+:extrapreds ((x5744))
+:extrapreds ((x5745))
+:extrapreds ((x5746))
+:extrapreds ((x5747))
+:extrapreds ((x5748))
+:extrapreds ((x5749))
+:extrapreds ((x5750))
+:extrapreds ((x5751))
+:extrapreds ((x5752))
+:extrapreds ((x5753))
+:extrapreds ((x5754))
+:extrapreds ((x5755))
+:extrapreds ((x5756))
+:extrapreds ((x5757))
+:extrapreds ((x5758))
+:extrapreds ((x5759))
+:extrapreds ((x5760))
+:extrapreds ((x5761))
+:extrapreds ((x5762))
+:extrapreds ((x5763))
+:extrapreds ((x5764))
+:extrapreds ((x5765))
+:extrapreds ((x5766))
+:extrapreds ((x5767))
+:extrapreds ((x5768))
+:extrapreds ((x5769))
+:extrapreds ((x5770))
+:extrapreds ((x5771))
+:extrapreds ((x5772))
+:extrapreds ((x5773))
+:extrapreds ((x5774))
+:extrapreds ((x5775))
+:extrapreds ((x5776))
+:extrapreds ((x5777))
+:extrapreds ((x5778))
+:extrapreds ((x5779))
+:extrapreds ((x5780))
+:extrapreds ((x5781))
+:extrapreds ((x5782))
+:extrapreds ((x5783))
+:extrapreds ((x5784))
+:extrapreds ((x5785))
+:extrapreds ((x5786))
+:extrapreds ((x5787))
+:extrapreds ((x5788))
+:extrapreds ((x5789))
+:extrapreds ((x5790))
+:extrapreds ((x5791))
+:extrapreds ((x5792))
+:extrapreds ((x5793))
+:extrapreds ((x5794))
+:extrapreds ((x5795))
+:extrapreds ((x5796))
+:extrapreds ((x5797))
+:extrapreds ((x5798))
+:extrapreds ((x5799))
+:extrapreds ((x5800))
+:extrapreds ((x5801))
+:extrapreds ((x5802))
+:extrapreds ((x5803))
+:extrapreds ((x5804))
+:extrapreds ((x5805))
+:extrapreds ((x5806))
+:extrapreds ((x5807))
+:extrapreds ((x5808))
+:extrapreds ((x5809))
+:extrapreds ((x5810))
+:extrapreds ((x5811))
+:extrapreds ((x5812))
+:extrapreds ((x5813))
+:extrapreds ((x5814))
+:extrapreds ((x5815))
+:extrapreds ((x5816))
+:extrapreds ((x5817))
+:extrapreds ((x5818))
+:extrapreds ((x5819))
+:extrapreds ((x5820))
+:extrapreds ((x5821))
+:extrapreds ((x5822))
+:extrapreds ((x5823))
+:extrapreds ((x5824))
+:extrapreds ((x5825))
+:extrapreds ((x5826))
+:extrapreds ((x5827))
+:extrapreds ((x5828))
+:extrapreds ((x5829))
+:extrapreds ((x5830))
+:extrapreds ((x5831))
+:extrapreds ((x5832))
+:extrapreds ((x5833))
+:extrapreds ((x5834))
+:extrapreds ((x5835))
+:extrapreds ((x5836))
+:extrapreds ((x5837))
+:extrapreds ((x5838))
+:extrapreds ((x5839))
+:extrapreds ((x5840))
+:extrapreds ((x5841))
+:extrapreds ((x5842))
+:extrapreds ((x5843))
+:extrapreds ((x5844))
+:extrapreds ((x5845))
+:extrapreds ((x5846))
+:extrapreds ((x5847))
+:extrapreds ((x5848))
+:extrapreds ((x5849))
+:extrapreds ((x5850))
+:extrapreds ((x5851))
+:extrapreds ((x5852))
+:extrapreds ((x5853))
+:extrapreds ((x5854))
+:extrapreds ((x5855))
+:extrapreds ((x5856))
+:extrapreds ((x5857))
+:extrapreds ((x5858))
+:extrapreds ((x5859))
+:extrapreds ((x5860))
+:extrapreds ((x5861))
+:extrapreds ((x5862))
+:extrapreds ((x5863))
+:extrapreds ((x5864))
+:extrapreds ((x5865))
+:extrapreds ((x5866))
+:extrapreds ((x5867))
+:extrapreds ((x5868))
+:extrapreds ((x5869))
+:extrapreds ((x5870))
+:extrapreds ((x5871))
+:extrapreds ((x5872))
+:extrapreds ((x5873))
+:extrapreds ((x5874))
+:extrapreds ((x5875))
+:extrapreds ((x5876))
+:extrapreds ((x5877))
+:extrapreds ((x5878))
+:extrapreds ((x5879))
+:extrapreds ((x5880))
+:extrapreds ((x5881))
+:extrapreds ((x5882))
+:extrapreds ((x5883))
+:extrapreds ((x5884))
+:extrapreds ((x5885))
+:extrapreds ((x5886))
+:extrapreds ((x5887))
+:extrapreds ((x5888))
+:extrapreds ((x5889))
+:extrapreds ((x5890))
+:extrapreds ((x5891))
+:extrapreds ((x5892))
+:extrapreds ((x5893))
+:extrapreds ((x5894))
+:extrapreds ((x5895))
+:extrapreds ((x5896))
+:extrapreds ((x5897))
+:extrapreds ((x5898))
+:extrapreds ((x5899))
+:extrapreds ((x5900))
+:extrapreds ((x5901))
+:extrapreds ((x5902))
+:extrapreds ((x5903))
+:extrapreds ((x5904))
+:extrapreds ((x5905))
+:extrapreds ((x5906))
+:extrapreds ((x5907))
+:extrapreds ((x5908))
+:extrapreds ((x5909))
+:extrapreds ((x5910))
+:extrapreds ((x5911))
+:extrapreds ((x5912))
+:extrapreds ((x5913))
+:extrapreds ((x5914))
+:extrapreds ((x5915))
+:extrapreds ((x5916))
+:extrapreds ((x5917))
+:extrapreds ((x5918))
+:extrapreds ((x5919))
+:extrapreds ((x5920))
+:extrapreds ((x5921))
+:extrapreds ((x5922))
+:extrapreds ((x5923))
+:extrapreds ((x5924))
+:extrapreds ((x5925))
+:extrapreds ((x5926))
+:extrapreds ((x5927))
+:extrapreds ((x5928))
+:extrapreds ((x5929))
+:extrapreds ((x5930))
+:extrapreds ((x5931))
+:extrapreds ((x5932))
+:extrapreds ((x5933))
+:extrapreds ((x5934))
+:extrapreds ((x5935))
+:extrapreds ((x5936))
+:extrapreds ((x5937))
+:extrapreds ((x5938))
+:extrapreds ((x5939))
+:extrapreds ((x5940))
+:extrapreds ((x5941))
+:extrapreds ((x5942))
+:extrapreds ((x5943))
+:extrapreds ((x5944))
+:extrapreds ((x5945))
+:extrapreds ((x5946))
+:extrapreds ((x5947))
+:extrapreds ((x5948))
+:extrapreds ((x5949))
+:extrapreds ((x5950))
+:extrapreds ((x5951))
+:extrapreds ((x5952))
+:extrapreds ((x5953))
+:extrapreds ((x5954))
+:extrapreds ((x5955))
+:extrapreds ((x5956))
+:extrapreds ((x5957))
+:extrapreds ((x5958))
+:extrapreds ((x5959))
+:extrapreds ((x5960))
+:extrapreds ((x5961))
+:extrapreds ((x5962))
+:extrapreds ((x5963))
+:extrapreds ((x5964))
+:extrapreds ((x5965))
+:extrapreds ((x5966))
+:extrapreds ((x5967))
+:extrapreds ((x5968))
+:extrapreds ((x5969))
+:extrapreds ((x5970))
+:extrapreds ((x5971))
+:extrapreds ((x5972))
+:extrapreds ((x5973))
+:extrapreds ((x5974))
+:extrapreds ((x5975))
+:extrapreds ((x5976))
+:extrapreds ((x5977))
+:extrapreds ((x5978))
+:extrapreds ((x5979))
+:extrapreds ((x5980))
+:extrapreds ((x5981))
+:extrapreds ((x5982))
+:extrapreds ((x5983))
+:extrapreds ((x5984))
+:extrapreds ((x5985))
+:extrapreds ((x5986))
+:extrapreds ((x5987))
+:extrapreds ((x5988))
+:extrapreds ((x5989))
+:extrapreds ((x5990))
+:extrapreds ((x5991))
+:extrapreds ((x5992))
+:extrapreds ((x5993))
+:extrapreds ((x5994))
+:extrapreds ((x5995))
+:extrapreds ((x5996))
+:extrapreds ((x5997))
+:extrapreds ((x5998))
+:extrapreds ((x5999))
+:extrapreds ((x6000))
+:extrapreds ((x6001))
+:extrapreds ((x6002))
+:extrapreds ((x6003))
+:extrapreds ((x6004))
+:extrapreds ((x6005))
+:extrapreds ((x6006))
+:extrapreds ((x6007))
+:extrapreds ((x6008))
+:extrapreds ((x6009))
+:extrapreds ((x6010))
+:extrapreds ((x6011))
+:extrapreds ((x6012))
+:extrapreds ((x6013))
+:extrapreds ((x6014))
+:extrapreds ((x6015))
+:extrapreds ((x6016))
+:extrapreds ((x6017))
+:extrapreds ((x6018))
+:extrapreds ((x6019))
+:extrapreds ((x6020))
+:extrapreds ((x6021))
+:extrapreds ((x6022))
+:extrapreds ((x6023))
+:extrapreds ((x6024))
+:extrapreds ((x6025))
+:extrapreds ((x6026))
+:extrapreds ((x6027))
+:extrapreds ((x6028))
+:extrapreds ((x6029))
+:extrapreds ((x6030))
+:extrapreds ((x6031))
+:extrapreds ((x6032))
+:extrapreds ((x6033))
+:extrapreds ((x6034))
+:extrapreds ((x6035))
+:extrapreds ((x6036))
+:extrapreds ((x6037))
+:extrapreds ((x6038))
+:extrapreds ((x6039))
+:extrapreds ((x6040))
+:extrapreds ((x6041))
+:extrapreds ((x6042))
+:extrapreds ((x6043))
+:extrapreds ((x6044))
+:extrapreds ((x6045))
+:extrapreds ((x6046))
+:extrapreds ((x6047))
+:extrapreds ((x6048))
+:extrapreds ((x6049))
+:extrapreds ((x6050))
+:extrapreds ((x6051))
+:extrapreds ((x6052))
+:extrapreds ((x6053))
+:extrapreds ((x6054))
+:extrapreds ((x6055))
+:extrapreds ((x6056))
+:extrapreds ((x6057))
+:extrapreds ((x6058))
+:extrapreds ((x6059))
+:extrapreds ((x6060))
+:extrapreds ((x6061))
+:extrapreds ((x6062))
+:extrapreds ((x6063))
+:extrapreds ((x6064))
+:extrapreds ((x6065))
+:extrapreds ((x6066))
+:extrapreds ((x6067))
+:extrapreds ((x6068))
+:extrapreds ((x6069))
+:extrapreds ((x6070))
+:extrapreds ((x6071))
+:extrapreds ((x6072))
+:extrapreds ((x6073))
+:extrapreds ((x6074))
+:extrapreds ((x6075))
+:extrapreds ((x6076))
+:extrapreds ((x6077))
+:extrapreds ((x6078))
+:extrapreds ((x6079))
+:extrapreds ((x6080))
+:extrapreds ((x6081))
+:extrapreds ((x6082))
+:extrapreds ((x6083))
+:extrapreds ((x6084))
+:extrapreds ((x6085))
+:extrapreds ((x6086))
+:extrapreds ((x6087))
+:extrapreds ((x6088))
+:extrapreds ((x6089))
+:extrapreds ((x6090))
+:extrapreds ((x6091))
+:extrapreds ((x6092))
+:extrapreds ((x6093))
+:extrapreds ((x6094))
+:extrapreds ((x6095))
+:extrapreds ((x6096))
+:extrapreds ((x6097))
+:extrapreds ((x6098))
+:extrapreds ((x6099))
+:extrapreds ((x6100))
+:extrapreds ((x6101))
+:extrapreds ((x6102))
+:extrapreds ((x6103))
+:extrapreds ((x6104))
+:extrapreds ((x6105))
+:extrapreds ((x6106))
+:extrapreds ((x6107))
+:extrapreds ((x6108))
+:extrapreds ((x6109))
+:extrapreds ((x6110))
+:extrapreds ((x6111))
+:extrapreds ((x6112))
+:extrapreds ((x6113))
+:extrapreds ((x6114))
+:extrapreds ((x6115))
+:extrapreds ((x6116))
+:extrapreds ((x6117))
+:extrapreds ((x6118))
+:extrapreds ((x6119))
+:extrapreds ((x6120))
+:extrapreds ((x6121))
+:extrapreds ((x6122))
+:extrapreds ((x6123))
+:extrapreds ((x6124))
+:extrapreds ((x6125))
+:extrapreds ((x6126))
+:extrapreds ((x6127))
+:extrapreds ((x6128))
+:extrapreds ((x6129))
+:extrapreds ((x6130))
+:extrapreds ((x6131))
+:extrapreds ((x6132))
+:extrapreds ((x6133))
+:extrapreds ((x6134))
+:extrapreds ((x6135))
+:extrapreds ((x6136))
+:extrapreds ((x6137))
+:extrapreds ((x6138))
+:extrapreds ((x6139))
+:extrapreds ((x6140))
+:extrapreds ((x6141))
+:extrapreds ((x6142))
+:extrapreds ((x6143))
+:extrapreds ((x6144))
+:extrapreds ((x6145))
+:extrapreds ((x6146))
+:extrapreds ((x6147))
+:extrapreds ((x6148))
+:extrapreds ((x6149))
+:extrapreds ((x6150))
+:extrapreds ((x6151))
+:extrapreds ((x6152))
+:extrapreds ((x6153))
+:extrapreds ((x6154))
+:extrapreds ((x6155))
+:extrapreds ((x6156))
+:extrapreds ((x6157))
+:extrapreds ((x6158))
+:extrapreds ((x6159))
+:extrapreds ((x6160))
+:extrapreds ((x6161))
+:extrapreds ((x6162))
+:extrapreds ((x6163))
+:extrapreds ((x6164))
+:extrapreds ((x6165))
+:extrapreds ((x6166))
+:extrapreds ((x6167))
+:extrapreds ((x6168))
+:extrapreds ((x6169))
+:extrapreds ((x6170))
+:extrapreds ((x6171))
+:extrapreds ((x6172))
+:extrapreds ((x6173))
+:extrapreds ((x6174))
+:extrapreds ((x6175))
+:extrapreds ((x6176))
+:extrapreds ((x6177))
+:extrapreds ((x6178))
+:extrapreds ((x6179))
+:extrapreds ((x6180))
+:extrapreds ((x6181))
+:extrapreds ((x6182))
+:extrapreds ((x6183))
+:extrapreds ((x6184))
+:extrapreds ((x6185))
+:extrapreds ((x6186))
+:extrapreds ((x6187))
+:extrapreds ((x6188))
+:extrapreds ((x6189))
+:extrapreds ((x6190))
+:extrapreds ((x6191))
+:extrapreds ((x6192))
+:extrapreds ((x6193))
+:extrapreds ((x6194))
+:extrapreds ((x6195))
+:extrapreds ((x6196))
+:extrapreds ((x6197))
+:extrapreds ((x6198))
+:extrapreds ((x6199))
+:extrapreds ((x6200))
+:extrapreds ((x6201))
+:extrapreds ((x6202))
+:extrapreds ((x6203))
+:extrapreds ((x6204))
+:extrapreds ((x6205))
+:extrapreds ((x6206))
+:extrapreds ((x6207))
+:extrapreds ((x6208))
+:extrapreds ((x6209))
+:extrapreds ((x6210))
+:extrapreds ((x6211))
+:extrapreds ((x6212))
+:extrapreds ((x6213))
+:extrapreds ((x6214))
+:extrapreds ((x6215))
+:extrapreds ((x6216))
+:extrapreds ((x6217))
+:extrapreds ((x6218))
+:extrapreds ((x6219))
+:extrapreds ((x6220))
+:extrapreds ((x6221))
+:extrapreds ((x6222))
+:extrapreds ((x6223))
+:extrapreds ((x6224))
+:extrapreds ((x6225))
+:extrapreds ((x6226))
+:extrapreds ((x6227))
+:extrapreds ((x6228))
+:extrapreds ((x6229))
+:extrapreds ((x6230))
+:extrapreds ((x6231))
+:extrapreds ((x6232))
+:extrapreds ((x6233))
+:extrapreds ((x6234))
+:extrapreds ((x6235))
+:extrapreds ((x6236))
+:extrapreds ((x6237))
+:extrapreds ((x6238))
+:extrapreds ((x6239))
+:extrapreds ((x6240))
+:extrapreds ((x6241))
+:extrapreds ((x6242))
+:extrapreds ((x6243))
+:extrapreds ((x6244))
+:extrapreds ((x6245))
+:extrapreds ((x6246))
+:extrapreds ((x6247))
+:extrapreds ((x6248))
+:extrapreds ((x6249))
+:extrapreds ((x6250))
+:extrapreds ((x6251))
+:extrapreds ((x6252))
+:extrapreds ((x6253))
+:extrapreds ((x6254))
+:extrapreds ((x6255))
+:extrapreds ((x6256))
+:extrapreds ((x6257))
+:extrapreds ((x6258))
+:extrapreds ((x6259))
+:extrapreds ((x6260))
+:extrapreds ((x6261))
+:extrapreds ((x6262))
+:extrapreds ((x6263))
+:extrapreds ((x6264))
+:extrapreds ((x6265))
+:extrapreds ((x6266))
+:extrapreds ((x6267))
+:extrapreds ((x6268))
+:extrapreds ((x6269))
+:extrapreds ((x6270))
+:extrapreds ((x6271))
+:extrapreds ((x6272))
+:extrapreds ((x6273))
+:extrapreds ((x6274))
+:extrapreds ((x6275))
+:extrapreds ((x6276))
+:extrapreds ((x6277))
+:extrapreds ((x6278))
+:extrapreds ((x6279))
+:extrapreds ((x6280))
+:extrapreds ((x6281))
+:extrapreds ((x6282))
+:extrapreds ((x6283))
+:extrapreds ((x6284))
+:extrapreds ((x6285))
+:extrapreds ((x6286))
+:extrapreds ((x6287))
+:extrapreds ((x6288))
+:extrapreds ((x6289))
+:extrapreds ((x6290))
+:extrapreds ((x6291))
+:extrapreds ((x6292))
+:extrapreds ((x6293))
+:extrapreds ((x6294))
+:extrapreds ((x6295))
+:extrapreds ((x6296))
+:extrapreds ((x6297))
+:extrapreds ((x6298))
+:extrapreds ((x6299))
+:extrapreds ((x6300))
+:extrapreds ((x6301))
+:extrapreds ((x6302))
+:extrapreds ((x6303))
+:extrapreds ((x6304))
+:extrapreds ((x6305))
+:extrapreds ((x6306))
+:extrapreds ((x6307))
+:extrapreds ((x6308))
+:extrapreds ((x6309))
+:extrapreds ((x6310))
+:extrapreds ((x6311))
+:extrapreds ((x6312))
+:extrapreds ((x6313))
+:extrapreds ((x6314))
+:extrapreds ((x6315))
+:extrapreds ((x6316))
+:extrapreds ((x6317))
+:extrapreds ((x6318))
+:extrapreds ((x6319))
+:extrapreds ((x6320))
+:extrapreds ((x6321))
+:extrapreds ((x6322))
+:extrapreds ((x6323))
+:extrapreds ((x6324))
+:extrapreds ((x6325))
+:extrapreds ((x6326))
+:extrapreds ((x6327))
+:extrapreds ((x6328))
+:extrapreds ((x6329))
+:extrapreds ((x6330))
+:extrapreds ((x6331))
+:extrapreds ((x6332))
+:extrapreds ((x6333))
+:extrapreds ((x6334))
+:extrapreds ((x6335))
+:extrapreds ((x6336))
+:extrapreds ((x6337))
+:extrapreds ((x6338))
+:extrapreds ((x6339))
+:extrapreds ((x6340))
+:extrapreds ((x6341))
+:extrapreds ((x6342))
+:extrapreds ((x6343))
+:extrapreds ((x6344))
+:extrapreds ((x6345))
+:extrapreds ((x6346))
+:extrapreds ((x6347))
+:extrapreds ((x6348))
+:extrapreds ((x6349))
+:extrapreds ((x6350))
+:extrapreds ((x6351))
+:extrapreds ((x6352))
+:extrapreds ((x6353))
+:extrapreds ((x6354))
+:extrapreds ((x6355))
+:extrapreds ((x6356))
+:extrapreds ((x6357))
+:extrapreds ((x6358))
+:extrapreds ((x6359))
+:extrapreds ((x6360))
+:extrapreds ((x6361))
+:extrapreds ((x6362))
+:extrapreds ((x6363))
+:extrapreds ((x6364))
+:extrapreds ((x6365))
+:extrapreds ((x6366))
+:extrapreds ((x6367))
+:extrapreds ((x6368))
+:extrapreds ((x6369))
+:extrapreds ((x6370))
+:extrapreds ((x6371))
+:extrapreds ((x6372))
+:extrapreds ((x6373))
+:extrapreds ((x6374))
+:extrapreds ((x6375))
+:extrapreds ((x6376))
+:extrapreds ((x6377))
+:extrapreds ((x6378))
+:extrapreds ((x6379))
+:extrapreds ((x6380))
+:extrapreds ((x6381))
+:extrapreds ((x6382))
+:extrapreds ((x6383))
+:extrapreds ((x6384))
+:extrapreds ((x6385))
+:extrapreds ((x6386))
+:extrapreds ((x6387))
+:extrapreds ((x6388))
+:extrapreds ((x6389))
+:extrapreds ((x6390))
+:extrapreds ((x6391))
+:extrapreds ((x6392))
+:extrapreds ((x6393))
+:extrapreds ((x6394))
+:extrapreds ((x6395))
+:extrapreds ((x6396))
+:extrapreds ((x6397))
+:extrapreds ((x6398))
+:extrapreds ((x6399))
+:extrapreds ((x6400))
+:extrapreds ((x6401))
+:extrapreds ((x6402))
+:extrapreds ((x6403))
+:extrapreds ((x6404))
+:extrapreds ((x6405))
+:extrapreds ((x6406))
+:extrapreds ((x6407))
+:extrapreds ((x6408))
+:extrapreds ((x6409))
+:extrapreds ((x6410))
+:extrapreds ((x6411))
+:extrapreds ((x6412))
+:extrapreds ((x6413))
+:extrapreds ((x6414))
+:extrapreds ((x6415))
+:extrapreds ((x6416))
+:extrapreds ((x6417))
+:extrapreds ((x6418))
+:extrapreds ((x6419))
+:extrapreds ((x6420))
+:extrapreds ((x6421))
+:extrapreds ((x6422))
+:extrapreds ((x6423))
+:extrapreds ((x6424))
+:extrapreds ((x6425))
+:extrapreds ((x6426))
+:extrapreds ((x6427))
+:extrapreds ((x6428))
+:extrapreds ((x6429))
+:extrapreds ((x6430))
+:extrapreds ((x6431))
+:extrapreds ((x6432))
+:extrapreds ((x6433))
+:extrapreds ((x6434))
+:extrapreds ((x6435))
+:extrapreds ((x6436))
+:extrapreds ((x6437))
+:extrapreds ((x6438))
+:extrapreds ((x6439))
+:extrapreds ((x6440))
+:extrapreds ((x6441))
+:extrapreds ((x6442))
+:extrapreds ((x6443))
+:extrapreds ((x6444))
+:extrapreds ((x6445))
+:extrapreds ((x6446))
+:extrapreds ((x6447))
+:extrapreds ((x6448))
+:extrapreds ((x6449))
+:extrapreds ((x6450))
+:extrapreds ((x6451))
+:extrapreds ((x6452))
+:extrapreds ((x6453))
+:extrapreds ((x6454))
+:extrapreds ((x6455))
+:extrapreds ((x6456))
+:extrapreds ((x6457))
+:extrapreds ((x6458))
+:extrapreds ((x6459))
+:extrapreds ((x6460))
+:extrapreds ((x6461))
+:extrapreds ((x6462))
+:extrapreds ((x6463))
+:extrapreds ((x6464))
+:extrapreds ((x6465))
+:extrapreds ((x6466))
+:extrapreds ((x6467))
+:extrapreds ((x6468))
+:extrapreds ((x6469))
+:extrapreds ((x6470))
+:extrapreds ((x6471))
+:extrapreds ((x6472))
+:extrapreds ((x6473))
+:extrapreds ((x6474))
+:extrapreds ((x6475))
+:extrapreds ((x6476))
+:extrapreds ((x6477))
+:extrapreds ((x6478))
+:extrapreds ((x6479))
+:extrapreds ((x6480))
+:extrapreds ((x6481))
+:extrapreds ((x6482))
+:extrapreds ((x6483))
+:extrapreds ((x6484))
+:extrapreds ((x6485))
+:extrapreds ((x6486))
+:extrapreds ((x6487))
+:extrapreds ((x6488))
+:extrapreds ((x6489))
+:extrapreds ((x6490))
+:extrapreds ((x6491))
+:extrapreds ((x6492))
+:extrapreds ((x6493))
+:extrapreds ((x6494))
+:extrapreds ((x6495))
+:extrapreds ((x6496))
+:extrapreds ((x6497))
+:extrapreds ((x6498))
+:extrapreds ((x6499))
+:extrapreds ((x6500))
+:extrapreds ((x6501))
+:extrapreds ((x6502))
+:extrapreds ((x6503))
+:extrapreds ((x6504))
+:extrapreds ((x6505))
+:extrapreds ((x6506))
+:extrapreds ((x6507))
+:extrapreds ((x6508))
+:extrapreds ((x6509))
+:extrapreds ((x6510))
+:extrapreds ((x6511))
+:extrapreds ((x6512))
+:extrapreds ((x6513))
+:extrapreds ((x6514))
+:extrapreds ((x6515))
+:extrapreds ((x6516))
+:extrapreds ((x6517))
+:extrapreds ((x6518))
+:extrapreds ((x6519))
+:extrapreds ((x6520))
+:extrapreds ((x6521))
+:extrapreds ((x6522))
+:extrapreds ((x6523))
+:extrapreds ((x6524))
+:extrapreds ((x6525))
+:extrapreds ((x6526))
+:extrapreds ((x6527))
+:extrapreds ((x6528))
+:extrapreds ((x6529))
+:extrapreds ((x6530))
+:extrapreds ((x6531))
+:extrapreds ((x6532))
+:extrapreds ((x6533))
+:extrapreds ((x6534))
+:extrapreds ((x6535))
+:extrapreds ((x6536))
+:extrapreds ((x6537))
+:extrapreds ((x6538))
+:extrapreds ((x6539))
+:extrapreds ((x6540))
+:extrapreds ((x6541))
+:extrapreds ((x6542))
+:extrapreds ((x6543))
+:extrapreds ((x6544))
+:extrapreds ((x6545))
+:extrapreds ((x6546))
+:extrapreds ((x6547))
+:extrapreds ((x6548))
+:extrapreds ((x6549))
+:extrapreds ((x6550))
+:extrapreds ((x6551))
+:extrapreds ((x6552))
+:extrapreds ((x6553))
+:extrapreds ((x6554))
+:extrapreds ((x6555))
+:extrapreds ((x6556))
+:extrapreds ((x6557))
+:extrapreds ((x6558))
+:extrapreds ((x6559))
+:extrapreds ((x6560))
+:extrapreds ((x6561))
+:extrapreds ((x6562))
+:extrapreds ((x6563))
+:extrapreds ((x6564))
+:extrapreds ((x6565))
+:extrapreds ((x6566))
+:extrapreds ((x6567))
+:extrapreds ((x6568))
+:extrapreds ((x6569))
+:extrapreds ((x6570))
+:extrapreds ((x6571))
+:extrapreds ((x6572))
+:extrapreds ((x6573))
+:extrapreds ((x6574))
+:extrapreds ((x6575))
+:extrapreds ((x6576))
+:extrapreds ((x6577))
+:extrapreds ((x6578))
+:extrapreds ((x6579))
+:extrapreds ((x6580))
+:extrapreds ((x6581))
+:extrapreds ((x6582))
+:extrapreds ((x6583))
+:extrapreds ((x6584))
+:extrapreds ((x6585))
+:extrapreds ((x6586))
+:extrapreds ((x6587))
+:extrapreds ((x6588))
+:extrapreds ((x6589))
+:extrapreds ((x6590))
+:extrapreds ((x6591))
+:extrapreds ((x6592))
+:extrapreds ((x6593))
+:extrapreds ((x6594))
+:extrapreds ((x6595))
+:extrapreds ((x6596))
+:extrapreds ((x6597))
+:extrapreds ((x6598))
+:extrapreds ((x6599))
+:extrapreds ((x6600))
+:extrapreds ((x6601))
+:extrapreds ((x6602))
+:extrapreds ((x6603))
+:extrapreds ((x6604))
+:extrapreds ((x6605))
+:extrapreds ((x6606))
+:extrapreds ((x6607))
+:extrapreds ((x6608))
+:extrapreds ((x6609))
+:extrapreds ((x6610))
+:extrapreds ((x6611))
+:extrapreds ((x6612))
+:extrapreds ((x6613))
+:extrapreds ((x6614))
+:extrapreds ((x6615))
+:extrapreds ((x6616))
+:extrapreds ((x6617))
+:extrapreds ((x6618))
+:extrapreds ((x6619))
+:extrapreds ((x6620))
+:extrapreds ((x6621))
+:extrapreds ((x6622))
+:extrapreds ((x6623))
+:extrapreds ((x6624))
+:extrapreds ((x6625))
+:extrapreds ((x6626))
+:extrapreds ((x6627))
+:extrapreds ((x6628))
+:extrapreds ((x6629))
+:extrapreds ((x6630))
+:extrapreds ((x6631))
+:extrapreds ((x6632))
+:extrapreds ((x6633))
+:extrapreds ((x6634))
+:extrapreds ((x6635))
+:extrapreds ((x6636))
+:extrapreds ((x6637))
+:extrapreds ((x6638))
+:extrapreds ((x6639))
+:extrapreds ((x6640))
+:extrapreds ((x6641))
+:extrapreds ((x6642))
+:extrapreds ((x6643))
+:extrapreds ((x6644))
+:extrapreds ((x6645))
+:extrapreds ((x6646))
+:extrapreds ((x6647))
+:extrapreds ((x6648))
+:extrapreds ((x6649))
+:extrapreds ((x6650))
+:extrapreds ((x6651))
+:extrapreds ((x6652))
+:extrapreds ((x6653))
+:extrapreds ((x6654))
+:extrapreds ((x6655))
+:extrapreds ((x6656))
+:extrapreds ((x6657))
+:extrapreds ((x6658))
+:extrapreds ((x6659))
+:extrapreds ((x6660))
+:extrapreds ((x6661))
+:extrapreds ((x6662))
+:extrapreds ((x6663))
+:extrapreds ((x6664))
+:extrapreds ((x6665))
+:extrapreds ((x6666))
+:extrapreds ((x6667))
+:extrapreds ((x6668))
+:extrapreds ((x6669))
+:extrapreds ((x6670))
+:extrapreds ((x6671))
+:extrapreds ((x6672))
+:extrapreds ((x6673))
+:extrapreds ((x6674))
+:extrapreds ((x6675))
+:extrapreds ((x6676))
+:extrapreds ((x6677))
+:extrapreds ((x6678))
+:extrapreds ((x6679))
+:extrapreds ((x6680))
+:extrapreds ((x6681))
+:extrapreds ((x6682))
+:extrapreds ((x6683))
+:extrapreds ((x6684))
+:extrapreds ((x6685))
+:extrapreds ((x6686))
+:extrapreds ((x6687))
+:extrapreds ((x6688))
+:extrapreds ((x6689))
+:extrapreds ((x6690))
+:extrapreds ((x6691))
+:extrapreds ((x6692))
+:extrapreds ((x6693))
+:extrapreds ((x6694))
+:extrapreds ((x6695))
+:extrapreds ((x6696))
+:extrapreds ((x6697))
+:extrapreds ((x6698))
+:extrapreds ((x6699))
+:extrapreds ((x6700))
+:extrapreds ((x6701))
+:extrapreds ((x6702))
+:extrapreds ((x6703))
+:extrapreds ((x6704))
+:extrapreds ((x6705))
+:extrapreds ((x6706))
+:extrapreds ((x6707))
+:extrapreds ((x6708))
+:extrapreds ((x6709))
+:extrapreds ((x6710))
+:extrapreds ((x6711))
+:extrapreds ((x6712))
+:extrapreds ((x6713))
+:extrapreds ((x6714))
+:extrapreds ((x6715))
+:extrapreds ((x6716))
+:extrapreds ((x6717))
+:extrapreds ((x6718))
+:extrapreds ((x6719))
+:extrapreds ((x6720))
+:extrapreds ((x6721))
+:extrapreds ((x6722))
+:extrapreds ((x6723))
+:extrapreds ((x6724))
+:extrapreds ((x6725))
+:extrapreds ((x6726))
+:extrapreds ((x6727))
+:extrapreds ((x6728))
+:extrapreds ((x6729))
+:extrapreds ((x6730))
+:extrapreds ((x6731))
+:extrapreds ((x6732))
+:extrapreds ((x6733))
+:extrapreds ((x6734))
+:extrapreds ((x6735))
+:extrapreds ((x6736))
+:extrapreds ((x6737))
+:extrapreds ((x6738))
+:extrapreds ((x6739))
+:extrapreds ((x6740))
+:extrapreds ((x6741))
+:extrapreds ((x6742))
+:extrapreds ((x6743))
+:extrapreds ((x6744))
+:extrapreds ((x6745))
+:extrapreds ((x6746))
+:extrapreds ((x6747))
+:extrapreds ((x6748))
+:extrapreds ((x6749))
+:extrapreds ((x6750))
+:extrapreds ((x6751))
+:extrapreds ((x6752))
+:extrapreds ((x6753))
+:extrapreds ((x6754))
+:extrapreds ((x6755))
+:extrapreds ((x6756))
+:extrapreds ((x6757))
+:extrapreds ((x6758))
+:extrapreds ((x6759))
+:extrapreds ((x6760))
+:extrapreds ((x6761))
+:extrapreds ((x6762))
+:extrapreds ((x6763))
+:extrapreds ((x6764))
+:extrapreds ((x6765))
+:extrapreds ((x6766))
+:extrapreds ((x6767))
+:extrapreds ((x6768))
+:extrapreds ((x6769))
+:extrapreds ((x6770))
+:extrapreds ((x6771))
+:extrapreds ((x6772))
+:extrapreds ((x6773))
+:extrapreds ((x6774))
+:extrapreds ((x6775))
+:extrapreds ((x6776))
+:extrapreds ((x6777))
+:extrapreds ((x6778))
+:extrapreds ((x6779))
+:extrapreds ((x6780))
+:extrapreds ((x6781))
+:extrapreds ((x6782))
+:extrapreds ((x6783))
+:extrapreds ((x6784))
+:extrapreds ((x6785))
+:extrapreds ((x6786))
+:extrapreds ((x6787))
+:extrapreds ((x6788))
+:extrapreds ((x6789))
+:extrapreds ((x6790))
+:extrapreds ((x6791))
+:extrapreds ((x6792))
+:extrapreds ((x6793))
+:extrapreds ((x6794))
+:extrapreds ((x6795))
+:extrapreds ((x6796))
+:extrapreds ((x6797))
+:extrapreds ((x6798))
+:extrapreds ((x6799))
+:extrapreds ((x6800))
+:extrapreds ((x6801))
+:extrapreds ((x6802))
+:extrapreds ((x6803))
+:extrapreds ((x6804))
+:extrapreds ((x6805))
+:extrapreds ((x6806))
+:extrapreds ((x6807))
+:extrapreds ((x6808))
+:extrapreds ((x6809))
+:extrapreds ((x6810))
+:extrapreds ((x6811))
+:extrapreds ((x6812))
+:extrapreds ((x6813))
+:extrapreds ((x6814))
+:extrapreds ((x6815))
+:extrapreds ((x6816))
+:extrapreds ((x6817))
+:extrapreds ((x6818))
+:extrapreds ((x6819))
+:extrapreds ((x6820))
+:extrapreds ((x6821))
+:extrapreds ((x6822))
+:extrapreds ((x6823))
+:extrapreds ((x6824))
+:extrapreds ((x6825))
+:extrapreds ((x6826))
+:extrapreds ((x6827))
+:extrapreds ((x6828))
+:extrapreds ((x6829))
+:extrapreds ((x6830))
+:extrapreds ((x6831))
+:extrapreds ((x6832))
+:extrapreds ((x6833))
+:extrapreds ((x6834))
+:extrapreds ((x6835))
+:extrapreds ((x6836))
+:extrapreds ((x6837))
+:extrapreds ((x6838))
+:extrapreds ((x6839))
+:extrapreds ((x6840))
+:extrapreds ((x6841))
+:extrapreds ((x6842))
+:extrapreds ((x6843))
+:extrapreds ((x6844))
+:extrapreds ((x6845))
+:extrapreds ((x6846))
+:extrapreds ((x6847))
+:extrapreds ((x6848))
+:extrapreds ((x6849))
+:extrapreds ((x6850))
+:extrapreds ((x6851))
+:extrapreds ((x6852))
+:extrapreds ((x6853))
+:extrapreds ((x6854))
+:extrapreds ((x6855))
+:extrapreds ((x6856))
+:extrapreds ((x6857))
+:extrapreds ((x6858))
+:extrapreds ((x6859))
+:extrapreds ((x6860))
+:extrapreds ((x6861))
+:extrapreds ((x6862))
+:extrapreds ((x6863))
+:extrapreds ((x6864))
+:extrapreds ((x6865))
+:extrapreds ((x6866))
+:extrapreds ((x6867))
+:extrapreds ((x6868))
+:extrapreds ((x6869))
+:extrapreds ((x6870))
+:extrapreds ((x6871))
+:extrapreds ((x6872))
+:extrapreds ((x6873))
+:extrapreds ((x6874))
+:extrapreds ((x6875))
+:extrapreds ((x6876))
+:extrapreds ((x6877))
+:extrapreds ((x6878))
+:extrapreds ((x6879))
+:extrapreds ((x6880))
+:extrapreds ((x6881))
+:extrapreds ((x6882))
+:extrapreds ((x6883))
+:extrapreds ((x6884))
+:extrapreds ((x6885))
+:extrapreds ((x6886))
+:extrapreds ((x6887))
+:extrapreds ((x6888))
+:extrapreds ((x6889))
+:extrapreds ((x6890))
+:extrapreds ((x6891))
+:extrapreds ((x6892))
+:extrapreds ((x6893))
+:extrapreds ((x6894))
+:extrapreds ((x6895))
+:extrapreds ((x6896))
+:extrapreds ((x6897))
+:extrapreds ((x6898))
+:extrapreds ((x6899))
+:extrapreds ((x6900))
+:extrapreds ((x6901))
+:extrapreds ((x6902))
+:extrapreds ((x6903))
+:extrapreds ((x6904))
+:extrapreds ((x6905))
+:extrapreds ((x6906))
+:extrapreds ((x6907))
+:extrapreds ((x6908))
+:extrapreds ((x6909))
+:extrapreds ((x6910))
+:extrapreds ((x6911))
+:extrapreds ((x6912))
+:extrapreds ((x6913))
+:extrapreds ((x6914))
+:extrapreds ((x6915))
+:extrapreds ((x6916))
+:extrapreds ((x6917))
+:extrapreds ((x6918))
+:extrapreds ((x6919))
+:extrapreds ((x6920))
+:extrapreds ((x6921))
+:extrapreds ((x6922))
+:extrapreds ((x6923))
+:extrapreds ((x6924))
+:extrapreds ((x6925))
+:extrapreds ((x6926))
+:extrapreds ((x6927))
+:extrapreds ((x6928))
+:extrapreds ((x6929))
+:extrapreds ((x6930))
+:extrapreds ((x6931))
+:extrapreds ((x6932))
+:extrapreds ((x6933))
+:extrapreds ((x6934))
+:extrapreds ((x6935))
+:extrapreds ((x6936))
+:extrapreds ((x6937))
+:extrapreds ((x6938))
+:extrapreds ((x6939))
+:extrapreds ((x6940))
+:extrapreds ((x6941))
+:extrapreds ((x6942))
+:extrapreds ((x6943))
+:extrapreds ((x6944))
+:extrapreds ((x6945))
+:extrapreds ((x6946))
+:extrapreds ((x6947))
+:extrapreds ((x6948))
+:extrapreds ((x6949))
+:extrapreds ((x6950))
+:extrapreds ((x6951))
+:extrapreds ((x6952))
+:extrapreds ((x6953))
+:extrapreds ((x6954))
+:extrapreds ((x6955))
+:extrapreds ((x6956))
+:extrapreds ((x6957))
+:extrapreds ((x6958))
+:extrapreds ((x6959))
+:extrapreds ((x6960))
+:extrapreds ((x6961))
+:extrapreds ((x6962))
+:extrapreds ((x6963))
+:extrapreds ((x6964))
+:extrapreds ((x6965))
+:extrapreds ((x6966))
+:extrapreds ((x6967))
+:extrapreds ((x6968))
+:extrapreds ((x6969))
+:extrapreds ((x6970))
+:extrapreds ((x6971))
+:extrapreds ((x6972))
+:extrapreds ((x6973))
+:extrapreds ((x6974))
+:extrapreds ((x6975))
+:extrapreds ((x6976))
+:extrapreds ((x6977))
+:extrapreds ((x6978))
+:extrapreds ((x6979))
+:extrapreds ((x6980))
+:extrapreds ((x6981))
+:extrapreds ((x6982))
+:extrapreds ((x6983))
+:extrapreds ((x6984))
+:extrapreds ((x6985))
+:extrapreds ((x6986))
+:extrapreds ((x6987))
+:extrapreds ((x6988))
+:extrapreds ((x6989))
+:extrapreds ((x6990))
+:extrapreds ((x6991))
+:extrapreds ((x6992))
+:extrapreds ((x6993))
+:extrapreds ((x6994))
+:extrapreds ((x6995))
+:extrapreds ((x6996))
+:extrapreds ((x6997))
+:extrapreds ((x6998))
+:extrapreds ((x6999))
+:extrapreds ((x7000))
+:extrapreds ((x7001))
+:extrapreds ((x7002))
+:extrapreds ((x7003))
+:extrapreds ((x7004))
+:extrapreds ((x7005))
+:extrapreds ((x7006))
+:extrapreds ((x7007))
+:extrapreds ((x7008))
+:extrapreds ((x7009))
+:extrapreds ((x7010))
+:extrapreds ((x7011))
+:extrapreds ((x7012))
+:extrapreds ((x7013))
+:extrapreds ((x7014))
+:extrapreds ((x7015))
+:extrapreds ((x7016))
+:extrapreds ((x7017))
+:extrapreds ((x7018))
+:extrapreds ((x7019))
+:extrapreds ((x7020))
+:extrapreds ((x7021))
+:extrapreds ((x7022))
+:extrapreds ((x7023))
+:extrapreds ((x7024))
+:extrapreds ((x7025))
+:extrapreds ((x7026))
+:extrapreds ((x7027))
+:extrapreds ((x7028))
+:extrapreds ((x7029))
+:extrapreds ((x7030))
+:extrapreds ((x7031))
+:extrapreds ((x7032))
+:extrapreds ((x7033))
+:extrapreds ((x7034))
+:extrapreds ((x7035))
+:extrapreds ((x7036))
+:extrapreds ((x7037))
+:extrapreds ((x7038))
+:extrapreds ((x7039))
+:extrapreds ((x7040))
+:extrapreds ((x7041))
+:extrapreds ((x7042))
+:extrapreds ((x7043))
+:extrapreds ((x7044))
+:extrapreds ((x7045))
+:extrapreds ((x7046))
+:extrapreds ((x7047))
+:extrapreds ((x7048))
+:extrapreds ((x7049))
+:extrapreds ((x7050))
+:extrapreds ((x7051))
+:extrapreds ((x7052))
+:extrapreds ((x7053))
+:extrapreds ((x7054))
+:extrapreds ((x7055))
+:extrapreds ((x7056))
+:extrapreds ((x7057))
+:extrapreds ((x7058))
+:extrapreds ((x7059))
+:extrapreds ((x7060))
+:extrapreds ((x7061))
+:extrapreds ((x7062))
+:extrapreds ((x7063))
+:extrapreds ((x7064))
+:extrapreds ((x7065))
+:extrapreds ((x7066))
+:extrapreds ((x7067))
+:extrapreds ((x7068))
+:extrapreds ((x7069))
+:extrapreds ((x7070))
+:extrapreds ((x7071))
+:extrapreds ((x7072))
+:extrapreds ((x7073))
+:extrapreds ((x7074))
+:extrapreds ((x7075))
+:extrapreds ((x7076))
+:extrapreds ((x7077))
+:extrapreds ((x7078))
+:extrapreds ((x7079))
+:extrapreds ((x7080))
+:extrapreds ((x7081))
+:extrapreds ((x7082))
+:extrapreds ((x7083))
+:extrapreds ((x7084))
+:extrapreds ((x7085))
+:extrapreds ((x7086))
+:extrapreds ((x7087))
+:extrapreds ((x7088))
+:extrapreds ((x7089))
+:extrapreds ((x7090))
+:extrapreds ((x7091))
+:extrapreds ((x7092))
+:extrapreds ((x7093))
+:extrapreds ((x7094))
+:extrapreds ((x7095))
+:extrapreds ((x7096))
+:extrapreds ((x7097))
+:extrapreds ((x7098))
+:extrapreds ((x7099))
+:extrapreds ((x7100))
+:extrapreds ((x7101))
+:extrapreds ((x7102))
+:extrapreds ((x7103))
+:extrapreds ((x7104))
+:extrapreds ((x7105))
+:extrapreds ((x7106))
+:extrapreds ((x7107))
+:extrapreds ((x7108))
+:extrapreds ((x7109))
+:extrapreds ((x7110))
+:extrapreds ((x7111))
+:extrapreds ((x7112))
+:extrapreds ((x7113))
+:extrapreds ((x7114))
+:extrapreds ((x7115))
+:extrapreds ((x7116))
+:extrapreds ((x7117))
+:extrapreds ((x7118))
+:extrapreds ((x7119))
+:extrapreds ((x7120))
+:extrapreds ((x7121))
+:extrapreds ((x7122))
+:extrapreds ((x7123))
+:extrapreds ((x7124))
+:extrapreds ((x7125))
+:extrapreds ((x7126))
+:extrapreds ((x7127))
+:extrapreds ((x7128))
+:extrapreds ((x7129))
+:extrapreds ((x7130))
+:extrapreds ((x7131))
+:extrapreds ((x7132))
+:extrapreds ((x7133))
+:extrapreds ((x7134))
+:extrapreds ((x7135))
+:extrapreds ((x7136))
+:extrapreds ((x7137))
+:extrapreds ((x7138))
+:extrapreds ((x7139))
+:extrapreds ((x7140))
+:extrapreds ((x7141))
+:extrapreds ((x7142))
+:extrapreds ((x7143))
+:extrapreds ((x7144))
+:extrapreds ((x7145))
+:extrapreds ((x7146))
+:extrapreds ((x7147))
+:extrapreds ((x7148))
+:extrapreds ((x7149))
+:extrapreds ((x7150))
+:extrapreds ((x7151))
+:extrapreds ((x7152))
+:extrapreds ((x7153))
+:extrapreds ((x7154))
+:extrapreds ((x7155))
+:extrapreds ((x7156))
+:extrapreds ((x7157))
+:extrapreds ((x7158))
+:extrapreds ((x7159))
+:extrapreds ((x7160))
+:extrapreds ((x7161))
+:extrapreds ((x7162))
+:extrapreds ((x7163))
+:extrapreds ((x7164))
+:extrapreds ((x7165))
+:extrapreds ((x7166))
+:extrapreds ((x7167))
+:extrapreds ((x7168))
+:extrapreds ((x7169))
+:extrapreds ((x7170))
+:extrapreds ((x7171))
+:extrapreds ((x7172))
+:extrapreds ((x7173))
+:extrapreds ((x7174))
+:extrapreds ((x7175))
+:extrapreds ((x7176))
+:extrapreds ((x7177))
+:extrapreds ((x7178))
+:extrapreds ((x7179))
+:extrapreds ((x7180))
+:extrapreds ((x7181))
+:extrapreds ((x7182))
+:extrapreds ((x7183))
+:extrapreds ((x7184))
+:extrapreds ((x7185))
+:extrapreds ((x7186))
+:extrapreds ((x7187))
+:extrapreds ((x7188))
+:extrapreds ((x7189))
+:extrapreds ((x7190))
+:extrapreds ((x7191))
+:extrapreds ((x7192))
+:extrapreds ((x7193))
+:extrapreds ((x7194))
+:extrapreds ((x7195))
+:extrapreds ((x7196))
+:extrapreds ((x7197))
+:extrapreds ((x7198))
+:extrapreds ((x7199))
+:extrapreds ((x7200))
+:extrapreds ((x7201))
+:extrapreds ((x7202))
+:extrapreds ((x7203))
+:extrapreds ((x7204))
+:extrapreds ((x7205))
+:extrapreds ((x7206))
+:extrapreds ((x7207))
+:extrapreds ((x7208))
+:extrapreds ((x7209))
+:extrapreds ((x7210))
+:extrapreds ((x7211))
+:extrapreds ((x7212))
+:extrapreds ((x7213))
+:extrapreds ((x7214))
+:extrapreds ((x7215))
+:extrapreds ((x7216))
+:extrapreds ((x7217))
+:extrapreds ((x7218))
+:extrapreds ((x7219))
+:extrapreds ((x7220))
+:extrapreds ((x7221))
+:extrapreds ((x7222))
+:extrapreds ((x7223))
+:extrapreds ((x7224))
+:extrapreds ((x7225))
+:extrapreds ((x7226))
+:extrapreds ((x7227))
+:extrapreds ((x7228))
+:extrapreds ((x7229))
+:extrapreds ((x7230))
+:extrapreds ((x7231))
+:extrapreds ((x7232))
+:extrapreds ((x7233))
+:extrapreds ((x7234))
+:extrapreds ((x7235))
+:extrapreds ((x7236))
+:extrapreds ((x7237))
+:extrapreds ((x7238))
+:extrapreds ((x7239))
+:extrapreds ((x7240))
+:extrapreds ((x7241))
+:extrapreds ((x7242))
+:extrapreds ((x7243))
+:extrapreds ((x7244))
+:extrapreds ((x7245))
+:extrapreds ((x7246))
+:extrapreds ((x7247))
+:extrapreds ((x7248))
+:extrapreds ((x7249))
+:extrapreds ((x7250))
+:extrapreds ((x7251))
+:extrapreds ((x7252))
+:extrapreds ((x7253))
+:extrapreds ((x7254))
+:extrapreds ((x7255))
+:extrapreds ((x7256))
+:extrapreds ((x7257))
+:extrapreds ((x7258))
+:extrapreds ((x7259))
+:extrapreds ((x7260))
+:extrapreds ((x7261))
+:extrapreds ((x7262))
+:extrapreds ((x7263))
+:extrapreds ((x7264))
+:extrapreds ((x7265))
+:extrapreds ((x7266))
+:extrapreds ((x7267))
+:extrapreds ((x7268))
+:extrapreds ((x7269))
+:extrapreds ((x7270))
+:extrapreds ((x7271))
+:extrapreds ((x7272))
+:extrapreds ((x7273))
+:extrapreds ((x7274))
+:extrapreds ((x7275))
+:extrapreds ((x7276))
+:extrapreds ((x7277))
+:extrapreds ((x7278))
+:extrapreds ((x7279))
+:extrapreds ((x7280))
+:extrapreds ((x7281))
+:extrapreds ((x7282))
+:extrapreds ((x7283))
+:extrapreds ((x7284))
+:extrapreds ((x7285))
+:extrapreds ((x7286))
+:extrapreds ((x7287))
+:extrapreds ((x7288))
+:extrapreds ((x7289))
+:extrapreds ((x7290))
+:extrapreds ((x7291))
+:extrapreds ((x7292))
+:extrapreds ((x7293))
+:extrapreds ((x7294))
+:extrapreds ((x7295))
+:extrapreds ((x7296))
+:extrapreds ((x7297))
+:extrapreds ((x7298))
+:extrapreds ((x7299))
+:extrapreds ((x7300))
+:extrapreds ((x7301))
+:extrapreds ((x7302))
+:extrapreds ((x7303))
+:extrapreds ((x7304))
+:extrapreds ((x7305))
+:extrapreds ((x7306))
+:extrapreds ((x7307))
+:extrapreds ((x7308))
+:extrapreds ((x7309))
+:extrapreds ((x7310))
+:extrapreds ((x7311))
+:extrapreds ((x7312))
+:extrapreds ((x7313))
+:extrapreds ((x7314))
+:extrapreds ((x7315))
+:extrapreds ((x7316))
+:extrapreds ((x7317))
+:extrapreds ((x7318))
+:extrapreds ((x7319))
+:extrapreds ((x7320))
+:extrapreds ((x7321))
+:extrapreds ((x7322))
+:extrapreds ((x7323))
+:extrapreds ((x7324))
+:extrapreds ((x7325))
+:extrapreds ((x7326))
+:extrapreds ((x7327))
+:extrapreds ((x7328))
+:extrapreds ((x7329))
+:extrapreds ((x7330))
+:extrapreds ((x7331))
+:extrapreds ((x7332))
+:extrapreds ((x7333))
+:extrapreds ((x7334))
+:extrapreds ((x7335))
+:extrapreds ((x7336))
+:extrapreds ((x7337))
+:extrapreds ((x7338))
+:extrapreds ((x7339))
+:extrapreds ((x7340))
+:extrapreds ((x7341))
+:extrapreds ((x7342))
+:extrapreds ((x7343))
+:extrapreds ((x7344))
+:extrapreds ((x7345))
+:extrapreds ((x7346))
+:extrapreds ((x7347))
+:extrapreds ((x7348))
+:extrapreds ((x7349))
+:extrapreds ((x7350))
+:extrapreds ((x7351))
+:extrapreds ((x7352))
+:extrapreds ((x7353))
+:extrapreds ((x7354))
+:extrapreds ((x7355))
+:extrapreds ((x7356))
+:extrapreds ((x7357))
+:extrapreds ((x7358))
+:extrapreds ((x7359))
+:extrapreds ((x7360))
+:extrapreds ((x7361))
+:extrapreds ((x7362))
+:extrapreds ((x7363))
+:extrapreds ((x7364))
+:extrapreds ((x7365))
+:extrapreds ((x7366))
+:extrapreds ((x7367))
+:extrapreds ((x7368))
+:extrapreds ((x7369))
+:extrapreds ((x7370))
+:extrapreds ((x7371))
+:extrapreds ((x7372))
+:extrapreds ((x7373))
+:extrapreds ((x7374))
+:extrapreds ((x7375))
+:extrapreds ((x7376))
+:extrapreds ((x7377))
+:extrapreds ((x7378))
+:extrapreds ((x7379))
+:extrapreds ((x7380))
+:extrapreds ((x7381))
+:extrapreds ((x7382))
+:extrapreds ((x7383))
+:extrapreds ((x7384))
+:extrapreds ((x7385))
+:extrapreds ((x7386))
+:extrapreds ((x7387))
+:extrapreds ((x7388))
+:extrapreds ((x7389))
+:extrapreds ((x7390))
+:extrapreds ((x7391))
+:extrapreds ((x7392))
+:extrapreds ((x7393))
+:extrapreds ((x7394))
+:extrapreds ((x7395))
+:extrapreds ((x7396))
+:extrapreds ((x7397))
+:extrapreds ((x7398))
+:extrapreds ((x7399))
+:extrapreds ((x7400))
+:extrapreds ((x7401))
+:extrapreds ((x7402))
+:extrapreds ((x7403))
+:extrapreds ((x7404))
+:extrapreds ((x7405))
+:extrapreds ((x7406))
+:extrapreds ((x7407))
+:extrapreds ((x7408))
+:extrapreds ((x7409))
+:extrapreds ((x7410))
+:extrapreds ((x7411))
+:extrapreds ((x7412))
+:extrapreds ((x7413))
+:extrapreds ((x7414))
+:extrapreds ((x7415))
+:extrapreds ((x7416))
+:extrapreds ((x7417))
+:extrapreds ((x7418))
+:extrapreds ((x7419))
+:extrapreds ((x7420))
+:extrapreds ((x7421))
+:extrapreds ((x7422))
+:extrapreds ((x7423))
+:extrapreds ((x7424))
+:extrapreds ((x7425))
+:extrapreds ((x7426))
+:extrapreds ((x7427))
+:extrapreds ((x7428))
+:extrapreds ((x7429))
+:extrapreds ((x7430))
+:extrapreds ((x7431))
+:extrapreds ((x7432))
+:extrapreds ((x7433))
+:extrapreds ((x7434))
+:extrapreds ((x7435))
+:extrapreds ((x7436))
+:extrapreds ((x7437))
+:extrapreds ((x7438))
+:extrapreds ((x7439))
+:extrapreds ((x7440))
+:extrapreds ((x7441))
+:extrapreds ((x7442))
+:extrapreds ((x7443))
+:extrapreds ((x7444))
+:extrapreds ((x7445))
+:extrapreds ((x7446))
+:extrapreds ((x7447))
+:extrapreds ((x7448))
+:extrapreds ((x7449))
+:extrapreds ((x7450))
+:extrapreds ((x7451))
+:extrapreds ((x7452))
+:extrapreds ((x7453))
+:extrapreds ((x7454))
+:extrapreds ((x7455))
+:extrapreds ((x7456))
+:extrapreds ((x7457))
+:extrapreds ((x7458))
+:extrapreds ((x7459))
+:extrapreds ((x7460))
+:extrapreds ((x7461))
+:extrapreds ((x7462))
+:extrapreds ((x7463))
+:extrapreds ((x7464))
+:extrapreds ((x7465))
+:extrapreds ((x7466))
+:extrapreds ((x7467))
+:extrapreds ((x7468))
+:extrapreds ((x7469))
+:extrapreds ((x7470))
+:extrapreds ((x7471))
+:extrapreds ((x7472))
+:extrapreds ((x7473))
+:extrapreds ((x7474))
+:extrapreds ((x7475))
+:extrapreds ((x7476))
+:extrapreds ((x7477))
+:extrapreds ((x7478))
+:extrapreds ((x7479))
+:extrapreds ((x7480))
+:extrapreds ((x7481))
+:extrapreds ((x7482))
+:extrapreds ((x7483))
+:extrapreds ((x7484))
+:extrapreds ((x7485))
+:extrapreds ((x7486))
+:extrapreds ((x7487))
+:extrapreds ((x7488))
+:extrapreds ((x7489))
+:extrapreds ((x7490))
+:extrapreds ((x7491))
+:extrapreds ((x7492))
+:extrapreds ((x7493))
+:extrapreds ((x7494))
+:extrapreds ((x7495))
+:extrapreds ((x7496))
+:extrapreds ((x7497))
+:extrapreds ((x7498))
+:extrapreds ((x7499))
+:extrapreds ((x7500))
+:extrapreds ((x7501))
+:extrapreds ((x7502))
+:extrapreds ((x7503))
+:extrapreds ((x7504))
+:extrapreds ((x7505))
+:extrapreds ((x7506))
+:extrapreds ((x7507))
+:extrapreds ((x7508))
+:extrapreds ((x7509))
+:extrapreds ((x7510))
+:extrapreds ((x7511))
+:extrapreds ((x7512))
+:extrapreds ((x7513))
+:extrapreds ((x7514))
+:extrapreds ((x7515))
+:extrapreds ((x7516))
+:extrapreds ((x7517))
+:extrapreds ((x7518))
+:extrapreds ((x7519))
+:extrapreds ((x7520))
+:extrapreds ((x7521))
+:extrapreds ((x7522))
+:extrapreds ((x7523))
+:extrapreds ((x7524))
+:extrapreds ((x7525))
+:extrapreds ((x7526))
+:extrapreds ((x7527))
+:extrapreds ((x7528))
+:extrapreds ((x7529))
+:extrapreds ((x7530))
+:extrapreds ((x7531))
+:extrapreds ((x7532))
+:extrapreds ((x7533))
+:extrapreds ((x7534))
+:extrapreds ((x7535))
+:extrapreds ((x7536))
+:extrapreds ((x7537))
+:extrapreds ((x7538))
+:extrapreds ((x7539))
+:extrapreds ((x7540))
+:extrapreds ((x7541))
+:extrapreds ((x7542))
+:extrapreds ((x7543))
+:extrapreds ((x7544))
+:extrapreds ((x7545))
+:extrapreds ((x7546))
+:extrapreds ((x7547))
+:extrapreds ((x7548))
+:extrapreds ((x7549))
+:extrapreds ((x7550))
+:extrapreds ((x7551))
+:extrapreds ((x7552))
+:extrapreds ((x7553))
+:extrapreds ((x7554))
+:extrapreds ((x7555))
+:extrapreds ((x7556))
+:extrapreds ((x7557))
+:extrapreds ((x7558))
+:extrapreds ((x7559))
+:extrapreds ((x7560))
+:extrapreds ((x7561))
+:extrapreds ((x7562))
+:extrapreds ((x7563))
+:extrapreds ((x7564))
+:extrapreds ((x7565))
+:extrapreds ((x7566))
+:extrapreds ((x7567))
+:extrapreds ((x7568))
+:extrapreds ((x7569))
+:extrapreds ((x7570))
+:extrapreds ((x7571))
+:extrapreds ((x7572))
+:extrapreds ((x7573))
+:extrapreds ((x7574))
+:extrapreds ((x7575))
+:extrapreds ((x7576))
+:extrapreds ((x7577))
+:extrapreds ((x7578))
+:extrapreds ((x7579))
+:extrapreds ((x7580))
+:extrapreds ((x7581))
+:extrapreds ((x7582))
+:extrapreds ((x7583))
+:extrapreds ((x7584))
+:extrapreds ((x7585))
+:extrapreds ((x7586))
+:extrapreds ((x7587))
+:extrapreds ((x7588))
+:extrapreds ((x7589))
+:extrapreds ((x7590))
+:extrapreds ((x7591))
+:extrapreds ((x7592))
+:extrapreds ((x7593))
+:extrapreds ((x7594))
+:extrapreds ((x7595))
+:extrapreds ((x7596))
+:extrapreds ((x7597))
+:extrapreds ((x7598))
+:extrapreds ((x7599))
+:extrapreds ((x7600))
+:extrapreds ((x7601))
+:extrapreds ((x7602))
+:extrapreds ((x7603))
+:extrapreds ((x7604))
+:extrapreds ((x7605))
+:extrapreds ((x7606))
+:extrapreds ((x7607))
+:extrapreds ((x7608))
+:extrapreds ((x7609))
+:extrapreds ((x7610))
+:extrapreds ((x7611))
+:extrapreds ((x7612))
+:extrapreds ((x7613))
+:extrapreds ((x7614))
+:extrapreds ((x7615))
+:extrapreds ((x7616))
+:extrapreds ((x7617))
+:extrapreds ((x7618))
+:extrapreds ((x7619))
+:extrapreds ((x7620))
+:extrapreds ((x7621))
+:extrapreds ((x7622))
+:extrapreds ((x7623))
+:extrapreds ((x7624))
+:extrapreds ((x7625))
+:extrapreds ((x7626))
+:extrapreds ((x7627))
+:extrapreds ((x7628))
+:extrapreds ((x7629))
+:extrapreds ((x7630))
+:extrapreds ((x7631))
+:extrapreds ((x7632))
+:extrapreds ((x7633))
+:extrapreds ((x7634))
+:extrapreds ((x7635))
+:extrapreds ((x7636))
+:extrapreds ((x7637))
+:extrapreds ((x7638))
+:extrapreds ((x7639))
+:extrapreds ((x7640))
+:extrapreds ((x7641))
+:extrapreds ((x7642))
+:extrapreds ((x7643))
+:extrapreds ((x7644))
+:extrapreds ((x7645))
+:extrapreds ((x7646))
+:extrapreds ((x7647))
+:extrapreds ((x7648))
+:extrapreds ((x7649))
+:extrapreds ((x7650))
+:extrapreds ((x7651))
+:extrapreds ((x7652))
+:extrapreds ((x7653))
+:extrapreds ((x7654))
+:extrapreds ((x7655))
+:extrapreds ((x7656))
+:extrapreds ((x7657))
+:extrapreds ((x7658))
+:extrapreds ((x7659))
+:extrapreds ((x7660))
+:extrapreds ((x7661))
+:extrapreds ((x7662))
+:extrapreds ((x7663))
+:extrapreds ((x7664))
+:extrapreds ((x7665))
+:extrapreds ((x7666))
+:extrapreds ((x7667))
+:extrapreds ((x7668))
+:extrapreds ((x7669))
+:extrapreds ((x7670))
+:extrapreds ((x7671))
+:extrapreds ((x7672))
+:extrapreds ((x7673))
+:extrapreds ((x7674))
+:extrapreds ((x7675))
+:extrapreds ((x7676))
+:extrapreds ((x7677))
+:extrapreds ((x7678))
+:extrapreds ((x7679))
+:extrapreds ((x7680))
+:extrapreds ((x7681))
+:extrapreds ((x7682))
+:extrapreds ((x7683))
+:extrapreds ((x7684))
+:extrapreds ((x7685))
+:extrapreds ((x7686))
+:extrapreds ((x7687))
+:extrapreds ((x7688))
+:extrapreds ((x7689))
+:extrapreds ((x7690))
+:extrapreds ((x7691))
+:extrapreds ((x7692))
+:extrapreds ((x7693))
+:extrapreds ((x7694))
+:extrapreds ((x7695))
+:extrapreds ((x7696))
+:extrapreds ((x7697))
+:extrapreds ((x7698))
+:extrapreds ((x7699))
+:extrapreds ((x7700))
+:extrapreds ((x7701))
+:extrapreds ((x7702))
+:extrapreds ((x7703))
+:extrapreds ((x7704))
+:extrapreds ((x7705))
+:extrapreds ((x7706))
+:extrapreds ((x7707))
+:extrapreds ((x7708))
+:extrapreds ((x7709))
+:extrapreds ((x7710))
+:extrapreds ((x7711))
+:extrapreds ((x7712))
+:extrapreds ((x7713))
+:extrapreds ((x7714))
+:extrapreds ((x7715))
+:extrapreds ((x7716))
+:extrapreds ((x7717))
+:extrapreds ((x7718))
+:extrapreds ((x7719))
+:extrapreds ((x7720))
+:extrapreds ((x7721))
+:extrapreds ((x7722))
+:extrapreds ((x7723))
+:extrapreds ((x7724))
+:extrapreds ((x7725))
+:extrapreds ((x7726))
+:extrapreds ((x7727))
+:extrapreds ((x7728))
+:extrapreds ((x7729))
+:extrapreds ((x7730))
+:extrapreds ((x7731))
+:extrapreds ((x7732))
+:extrapreds ((x7733))
+:extrapreds ((x7734))
+:extrapreds ((x7735))
+:extrapreds ((x7736))
+:extrapreds ((x7737))
+:extrapreds ((x7738))
+:extrapreds ((x7739))
+:extrapreds ((x7740))
+:extrapreds ((x7741))
+:extrapreds ((x7742))
+:extrapreds ((x7743))
+:extrapreds ((x7744))
+:extrapreds ((x7745))
+:extrapreds ((x7746))
+:extrapreds ((x7747))
+:extrapreds ((x7748))
+:extrapreds ((x7749))
+:extrapreds ((x7750))
+:extrapreds ((x7751))
+:extrapreds ((x7752))
+:extrapreds ((x7753))
+:extrapreds ((x7754))
+:extrapreds ((x7755))
+:extrapreds ((x7756))
+:extrapreds ((x7757))
+:extrapreds ((x7758))
+:extrapreds ((x7759))
+:extrapreds ((x7760))
+:extrapreds ((x7761))
+:extrapreds ((x7762))
+:extrapreds ((x7763))
+:extrapreds ((x7764))
+:extrapreds ((x7765))
+:extrapreds ((x7766))
+:extrapreds ((x7767))
+:extrapreds ((x7768))
+:extrapreds ((x7769))
+:extrapreds ((x7770))
+:extrapreds ((x7771))
+:extrapreds ((x7772))
+:extrapreds ((x7773))
+:extrapreds ((x7774))
+:extrapreds ((x7775))
+:extrapreds ((x7776))
+:extrapreds ((x7777))
+:extrapreds ((x7778))
+:extrapreds ((x7779))
+:extrapreds ((x7780))
+:extrapreds ((x7781))
+:extrapreds ((x7782))
+:extrapreds ((x7783))
+:extrapreds ((x7784))
+:extrapreds ((x7785))
+:extrapreds ((x7786))
+:extrapreds ((x7787))
+:extrapreds ((x7788))
+:extrapreds ((x7789))
+:extrapreds ((x7790))
+:extrapreds ((x7791))
+:extrapreds ((x7792))
+:extrapreds ((x7793))
+:extrapreds ((x7794))
+:extrapreds ((x7795))
+:extrapreds ((x7796))
+:extrapreds ((x7797))
+:extrapreds ((x7798))
+:extrapreds ((x7799))
+:extrapreds ((x7800))
+:extrapreds ((x7801))
+:extrapreds ((x7802))
+:extrapreds ((x7803))
+:extrapreds ((x7804))
+:extrapreds ((x7805))
+:extrapreds ((x7806))
+:extrapreds ((x7807))
+:extrapreds ((x7808))
+:extrapreds ((x7809))
+:extrapreds ((x7810))
+:extrapreds ((x7811))
+:extrapreds ((x7812))
+:extrapreds ((x7813))
+:extrapreds ((x7814))
+:extrapreds ((x7815))
+:extrapreds ((x7816))
+:extrapreds ((x7817))
+:extrapreds ((x7818))
+:extrapreds ((x7819))
+:extrapreds ((x7820))
+:extrapreds ((x7821))
+:extrapreds ((x7822))
+:extrapreds ((x7823))
+:extrapreds ((x7824))
+:extrapreds ((x7825))
+:extrapreds ((x7826))
+:extrapreds ((x7827))
+:extrapreds ((x7828))
+:extrapreds ((x7829))
+:extrapreds ((x7830))
+:extrapreds ((x7831))
+:extrapreds ((x7832))
+:extrapreds ((x7833))
+:extrapreds ((x7834))
+:extrapreds ((x7835))
+:extrapreds ((x7836))
+:extrapreds ((x7837))
+:extrapreds ((x7838))
+:extrapreds ((x7839))
+:extrapreds ((x7840))
+:extrapreds ((x7841))
+:extrapreds ((x7842))
+:extrapreds ((x7843))
+:extrapreds ((x7844))
+:extrapreds ((x7845))
+:extrapreds ((x7846))
+:extrapreds ((x7847))
+:extrapreds ((x7848))
+:extrapreds ((x7849))
+:extrapreds ((x7850))
+:extrapreds ((x7851))
+:extrapreds ((x7852))
+:extrapreds ((x7853))
+:extrapreds ((x7854))
+:extrapreds ((x7855))
+:extrapreds ((x7856))
+:extrapreds ((x7857))
+:extrapreds ((x7858))
+:extrapreds ((x7859))
+:extrapreds ((x7860))
+:extrapreds ((x7861))
+:extrapreds ((x7862))
+:extrapreds ((x7863))
+:extrapreds ((x7864))
+:extrapreds ((x7865))
+:extrapreds ((x7866))
+:extrapreds ((x7867))
+:extrapreds ((x7868))
+:extrapreds ((x7869))
+:extrapreds ((x7870))
+:extrapreds ((x7871))
+:extrapreds ((x7872))
+:extrapreds ((x7873))
+:extrapreds ((x7874))
+:extrapreds ((x7875))
+:extrapreds ((x7876))
+:extrapreds ((x7877))
+:extrapreds ((x7878))
+:extrapreds ((x7879))
+:extrapreds ((x7880))
+:extrapreds ((x7881))
+:extrapreds ((x7882))
+:extrapreds ((x7883))
+:extrapreds ((x7884))
+:extrapreds ((x7885))
+:extrapreds ((x7886))
+:extrapreds ((x7887))
+:extrapreds ((x7888))
+:extrapreds ((x7889))
+:extrapreds ((x7890))
+:extrapreds ((x7891))
+:extrapreds ((x7892))
+:extrapreds ((x7893))
+:extrapreds ((x7894))
+:extrapreds ((x7895))
+:extrapreds ((x7896))
+:extrapreds ((x7897))
+:extrapreds ((x7898))
+:extrapreds ((x7899))
+:extrapreds ((x7900))
+:extrapreds ((x7901))
+:extrapreds ((x7902))
+:extrapreds ((x7903))
+:extrapreds ((x7904))
+:extrapreds ((x7905))
+:extrapreds ((x7906))
+:extrapreds ((x7907))
+:extrapreds ((x7908))
+:extrapreds ((x7909))
+:extrapreds ((x7910))
+:extrapreds ((x7911))
+:extrapreds ((x7912))
+:extrapreds ((x7913))
+:extrapreds ((x7914))
+:extrapreds ((x7915))
+:extrapreds ((x7916))
+:extrapreds ((x7917))
+:extrapreds ((x7918))
+:extrapreds ((x7919))
+:extrapreds ((x7920))
+:extrapreds ((x7921))
+:extrapreds ((x7922))
+:extrapreds ((x7923))
+:extrapreds ((x7924))
+:extrapreds ((x7925))
+:extrapreds ((x7926))
+:extrapreds ((x7927))
+:extrapreds ((x7928))
+:extrapreds ((x7929))
+:extrapreds ((x7930))
+:extrapreds ((x7931))
+:extrapreds ((x7932))
+:extrapreds ((x7933))
+:extrapreds ((x7934))
+:extrapreds ((x7935))
+:extrapreds ((x7936))
+:extrapreds ((x7937))
+:extrapreds ((x7938))
+:extrapreds ((x7939))
+:extrapreds ((x7940))
+:extrapreds ((x7941))
+:extrapreds ((x7942))
+:extrapreds ((x7943))
+:extrapreds ((x7944))
+:extrapreds ((x7945))
+:extrapreds ((x7946))
+:extrapreds ((x7947))
+:extrapreds ((x7948))
+:extrapreds ((x7949))
+:extrapreds ((x7950))
+:extrapreds ((x7951))
+:extrapreds ((x7952))
+:extrapreds ((x7953))
+:extrapreds ((x7954))
+:extrapreds ((x7955))
+:extrapreds ((x7956))
+:extrapreds ((x7957))
+:extrapreds ((x7958))
+:extrapreds ((x7959))
+:extrapreds ((x7960))
+:extrapreds ((x7961))
+:extrapreds ((x7962))
+:extrapreds ((x7963))
+:extrapreds ((x7964))
+:extrapreds ((x7965))
+:extrapreds ((x7966))
+:extrapreds ((x7967))
+:extrapreds ((x7968))
+:extrapreds ((x7969))
+:extrapreds ((x7970))
+:extrapreds ((x7971))
+:extrapreds ((x7972))
+:extrapreds ((x7973))
+:extrapreds ((x7974))
+:extrapreds ((x7975))
+:extrapreds ((x7976))
+:extrapreds ((x7977))
+:extrapreds ((x7978))
+:extrapreds ((x7979))
+:extrapreds ((x7980))
+:extrapreds ((x7981))
+:extrapreds ((x7982))
+:extrapreds ((x7983))
+:extrapreds ((x7984))
+:extrapreds ((x7985))
+:extrapreds ((x7986))
+:extrapreds ((x7987))
+:extrapreds ((x7988))
+:extrapreds ((x7989))
+:extrapreds ((x7990))
+:extrapreds ((x7991))
+:extrapreds ((x7992))
+:extrapreds ((x7993))
+:extrapreds ((x7994))
+:extrapreds ((x7995))
+:extrapreds ((x7996))
+:extrapreds ((x7997))
+:extrapreds ((x7998))
+:extrapreds ((x7999))
+:extrapreds ((x8000))
+:extrapreds ((x8001))
+:extrapreds ((x8002))
+:extrapreds ((x8003))
+:extrapreds ((x8004))
+:extrapreds ((x8005))
+:extrapreds ((x8006))
+:extrapreds ((x8007))
+:extrapreds ((x8008))
+:extrapreds ((x8009))
+:extrapreds ((x8010))
+:extrapreds ((x8011))
+:extrapreds ((x8012))
+:extrapreds ((x8013))
+:extrapreds ((x8014))
+:extrapreds ((x8015))
+:extrapreds ((x8016))
+:extrapreds ((x8017))
+:extrapreds ((x8018))
+:extrapreds ((x8019))
+:extrapreds ((x8020))
+:extrapreds ((x8021))
+:extrapreds ((x8022))
+:extrapreds ((x8023))
+:extrapreds ((x8024))
+:extrapreds ((x8025))
+:extrapreds ((x8026))
+:extrapreds ((x8027))
+:extrapreds ((x8028))
+:extrapreds ((x8029))
+:extrapreds ((x8030))
+:extrapreds ((x8031))
+:extrapreds ((x8032))
+:extrapreds ((x8033))
+:extrapreds ((x8034))
+:extrapreds ((x8035))
+:extrapreds ((x8036))
+:extrapreds ((x8037))
+:extrapreds ((x8038))
+:extrapreds ((x8039))
+:extrapreds ((x8040))
+:extrapreds ((x8041))
+:extrapreds ((x8042))
+:extrapreds ((x8043))
+:extrapreds ((x8044))
+:extrapreds ((x8045))
+:extrapreds ((x8046))
+:extrapreds ((x8047))
+:extrapreds ((x8048))
+:extrapreds ((x8049))
+:extrapreds ((x8050))
+:extrapreds ((x8051))
+:extrapreds ((x8052))
+:extrapreds ((x8053))
+:extrapreds ((x8054))
+:extrapreds ((x8055))
+:extrapreds ((x8056))
+:extrapreds ((x8057))
+:extrapreds ((x8058))
+:extrapreds ((x8059))
+:extrapreds ((x8060))
+:extrapreds ((x8061))
+:extrapreds ((x8062))
+:extrapreds ((x8063))
+:extrapreds ((x8064))
+:extrapreds ((x8065))
+:extrapreds ((x8066))
+:extrapreds ((x8067))
+:extrapreds ((x8068))
+:extrapreds ((x8069))
+:extrapreds ((x8070))
+:extrapreds ((x8071))
+:extrapreds ((x8072))
+:extrapreds ((x8073))
+:extrapreds ((x8074))
+:extrapreds ((x8075))
+:extrapreds ((x8076))
+:extrapreds ((x8077))
+:extrapreds ((x8078))
+:extrapreds ((x8079))
+:extrapreds ((x8080))
+:extrapreds ((x8081))
+:extrapreds ((x8082))
+:extrapreds ((x8083))
+:extrapreds ((x8084))
+:extrapreds ((x8085))
+:extrapreds ((x8086))
+:extrapreds ((x8087))
+:extrapreds ((x8088))
+:extrapreds ((x8089))
+:extrapreds ((x8090))
+:extrapreds ((x8091))
+:extrapreds ((x8092))
+:extrapreds ((x8093))
+:extrapreds ((x8094))
+:extrapreds ((x8095))
+:extrapreds ((x8096))
+:extrapreds ((x8097))
+:extrapreds ((x8098))
+:extrapreds ((x8099))
+:extrapreds ((x8100))
+:extrapreds ((x8101))
+:extrapreds ((x8102))
+:extrapreds ((x8103))
+:extrapreds ((x8104))
+:extrapreds ((x8105))
+:extrapreds ((x8106))
+:extrapreds ((x8107))
+:extrapreds ((x8108))
+:extrapreds ((x8109))
+:extrapreds ((x8110))
+:extrapreds ((x8111))
+:extrapreds ((x8112))
+:extrapreds ((x8113))
+:extrapreds ((x8114))
+:extrapreds ((x8115))
+:extrapreds ((x8116))
+:extrapreds ((x8117))
+:extrapreds ((x8118))
+:extrapreds ((x8119))
+:extrapreds ((x8120))
+:extrapreds ((x8121))
+:extrapreds ((x8122))
+:extrapreds ((x8123))
+:extrapreds ((x8124))
+:extrapreds ((x8125))
+:extrapreds ((x8126))
+:extrapreds ((x8127))
+:extrapreds ((x8128))
+:extrapreds ((x8129))
+:extrapreds ((x8130))
+:extrapreds ((x8131))
+:extrapreds ((x8132))
+:extrapreds ((x8133))
+:extrapreds ((x8134))
+:extrapreds ((x8135))
+:extrapreds ((x8136))
+:extrapreds ((x8137))
+:extrapreds ((x8138))
+:extrapreds ((x8139))
+:extrapreds ((x8140))
+:extrapreds ((x8141))
+:extrapreds ((x8142))
+:extrapreds ((x8143))
+:extrapreds ((x8144))
+:extrapreds ((x8145))
+:extrapreds ((x8146))
+:extrapreds ((x8147))
+:extrapreds ((x8148))
+:extrapreds ((x8149))
+:extrapreds ((x8150))
+:extrapreds ((x8151))
+:extrapreds ((x8152))
+:extrapreds ((x8153))
+:extrapreds ((x8154))
+:extrapreds ((x8155))
+:extrapreds ((x8156))
+:extrapreds ((x8157))
+:extrapreds ((x8158))
+:extrapreds ((x8159))
+:extrapreds ((x8160))
+:extrapreds ((x8161))
+:extrapreds ((x8162))
+:extrapreds ((x8163))
+:extrapreds ((x8164))
+:extrapreds ((x8165))
+:extrapreds ((x8166))
+:extrapreds ((x8167))
+:extrapreds ((x8168))
+:extrapreds ((x8169))
+:extrapreds ((x8170))
+:extrapreds ((x8171))
+:extrapreds ((x8172))
+:extrapreds ((x8173))
+:extrapreds ((x8174))
+:extrapreds ((x8175))
+:extrapreds ((x8176))
+:extrapreds ((x8177))
+:extrapreds ((x8178))
+:extrapreds ((x8179))
+:extrapreds ((x8180))
+:extrapreds ((x8181))
+:extrapreds ((x8182))
+:extrapreds ((x8183))
+:extrapreds ((x8184))
+:extrapreds ((x8185))
+:extrapreds ((x8186))
+:extrapreds ((x8187))
+:extrapreds ((x8188))
+:extrapreds ((x8189))
+:extrapreds ((x8190))
+:extrapreds ((x8191))
+:extrapreds ((x8192))
+:extrapreds ((x8193))
+:extrapreds ((x8194))
+:extrapreds ((x8195))
+:extrapreds ((x8196))
+:extrapreds ((x8197))
+:extrapreds ((x8198))
+:extrapreds ((x8199))
+:extrapreds ((x8200))
+:extrapreds ((x8201))
+:extrapreds ((x8202))
+:extrapreds ((x8203))
+:extrapreds ((x8204))
+:extrapreds ((x8205))
+:extrapreds ((x8206))
+:extrapreds ((x8207))
+:extrapreds ((x8208))
+:extrapreds ((x8209))
+:extrapreds ((x8210))
+:extrapreds ((x8211))
+:extrapreds ((x8212))
+:extrapreds ((x8213))
+:extrapreds ((x8214))
+:extrapreds ((x8215))
+:extrapreds ((x8216))
+:extrapreds ((x8217))
+:extrapreds ((x8218))
+:extrapreds ((x8219))
+:extrapreds ((x8220))
+:extrapreds ((x8221))
+:extrapreds ((x8222))
+:extrapreds ((x8223))
+:extrapreds ((x8224))
+:extrapreds ((x8225))
+:extrapreds ((x8226))
+:extrapreds ((x8227))
+:extrapreds ((x8228))
+:extrapreds ((x8229))
+:extrapreds ((x8230))
+:extrapreds ((x8231))
+:extrapreds ((x8232))
+:extrapreds ((x8233))
+:extrapreds ((x8234))
+:extrapreds ((x8235))
+:extrapreds ((x8236))
+:extrapreds ((x8237))
+:extrapreds ((x8238))
+:extrapreds ((x8239))
+:extrapreds ((x8240))
+:extrapreds ((x8241))
+:extrapreds ((x8242))
+:extrapreds ((x8243))
+:extrapreds ((x8244))
+:extrapreds ((x8245))
+:extrapreds ((x8246))
+:extrapreds ((x8247))
+:extrapreds ((x8248))
+:extrapreds ((x8249))
+:extrapreds ((x8250))
+:extrapreds ((x8251))
+:extrapreds ((x8252))
+:extrapreds ((x8253))
+:extrapreds ((x8254))
+:extrapreds ((x8255))
+:extrapreds ((x8256))
+:extrapreds ((x8257))
+:extrapreds ((x8258))
+:extrapreds ((x8259))
+:extrapreds ((x8260))
+:extrapreds ((x8261))
+:extrapreds ((x8262))
+:extrapreds ((x8263))
+:extrapreds ((x8264))
+:extrapreds ((x8265))
+:extrapreds ((x8266))
+:extrapreds ((x8267))
+:extrapreds ((x8268))
+:extrapreds ((x8269))
+:extrapreds ((x8270))
+:extrapreds ((x8271))
+:extrapreds ((x8272))
+:extrapreds ((x8273))
+:extrapreds ((x8274))
+:extrapreds ((x8275))
+:extrapreds ((x8276))
+:extrapreds ((x8277))
+:extrapreds ((x8278))
+:extrapreds ((x8279))
+:extrapreds ((x8280))
+:extrapreds ((x8281))
+:extrapreds ((x8282))
+:extrapreds ((x8283))
+:extrapreds ((x8284))
+:extrapreds ((x8285))
+:extrapreds ((x8286))
+:extrapreds ((x8287))
+:extrapreds ((x8288))
+:extrapreds ((x8289))
+:extrapreds ((x8290))
+:extrapreds ((x8291))
+:extrapreds ((x8292))
+:extrapreds ((x8293))
+:extrapreds ((x8294))
+:extrapreds ((x8295))
+:extrapreds ((x8296))
+:extrapreds ((x8297))
+:extrapreds ((x8298))
+:extrapreds ((x8299))
+:extrapreds ((x8300))
+:extrapreds ((x8301))
+:extrapreds ((x8302))
+:extrapreds ((x8303))
+:extrapreds ((x8304))
+:extrapreds ((x8305))
+:extrapreds ((x8306))
+:extrapreds ((x8307))
+:extrapreds ((x8308))
+:extrapreds ((x8309))
+:extrapreds ((x8310))
+:extrapreds ((x8311))
+:extrapreds ((x8312))
+:extrapreds ((x8313))
+:extrapreds ((x8314))
+:extrapreds ((x8315))
+:extrapreds ((x8316))
+:extrapreds ((x8317))
+:extrapreds ((x8318))
+:extrapreds ((x8319))
+:extrapreds ((x8320))
+:extrapreds ((x8321))
+:extrapreds ((x8322))
+:extrapreds ((x8323))
+:extrapreds ((x8324))
+:extrapreds ((x8325))
+:extrapreds ((x8326))
+:extrapreds ((x8327))
+:extrapreds ((x8328))
+:extrapreds ((x8329))
+:extrapreds ((x8330))
+:extrapreds ((x8331))
+:extrapreds ((x8332))
+:extrapreds ((x8333))
+:extrapreds ((x8334))
+:extrapreds ((x8335))
+:extrapreds ((x8336))
+:extrapreds ((x8337))
+:extrapreds ((x8338))
+:extrapreds ((x8339))
+:extrapreds ((x8340))
+:extrapreds ((x8341))
+:extrapreds ((x8342))
+:extrapreds ((x8343))
+:extrapreds ((x8344))
+:extrapreds ((x8345))
+:extrapreds ((x8346))
+:extrapreds ((x8347))
+:extrapreds ((x8348))
+:extrapreds ((x8349))
+:extrapreds ((x8350))
+:extrapreds ((x8351))
+:extrapreds ((x8352))
+:extrapreds ((x8353))
+:extrapreds ((x8354))
+:extrapreds ((x8355))
+:extrapreds ((x8356))
+:extrapreds ((x8357))
+:extrapreds ((x8358))
+:extrapreds ((x8359))
+:extrapreds ((x8360))
+:extrapreds ((x8361))
+:extrapreds ((x8362))
+:extrapreds ((x8363))
+:extrapreds ((x8364))
+:extrapreds ((x8365))
+:extrapreds ((x8366))
+:extrapreds ((x8367))
+:extrapreds ((x8368))
+:extrapreds ((x8369))
+:extrapreds ((x8370))
+:extrapreds ((x8371))
+:extrapreds ((x8372))
+:extrapreds ((x8373))
+:extrapreds ((x8374))
+:extrapreds ((x8375))
+:extrapreds ((x8376))
+:extrapreds ((x8377))
+:extrapreds ((x8378))
+:extrapreds ((x8379))
+:extrapreds ((x8380))
+:extrapreds ((x8381))
+:extrapreds ((x8382))
+:extrapreds ((x8383))
+:extrapreds ((x8384))
+:extrapreds ((x8385))
+:extrapreds ((x8386))
+:extrapreds ((x8387))
+:extrapreds ((x8388))
+:extrapreds ((x8389))
+:extrapreds ((x8390))
+:extrapreds ((x8391))
+:extrapreds ((x8392))
+:extrapreds ((x8393))
+:extrapreds ((x8394))
+:extrapreds ((x8395))
+:extrapreds ((x8396))
+:extrapreds ((x8397))
+:extrapreds ((x8398))
+:extrapreds ((x8399))
+:extrapreds ((x8400))
+:extrapreds ((x8401))
+:extrapreds ((x8402))
+:extrapreds ((x8403))
+:extrapreds ((x8404))
+:extrapreds ((x8405))
+:extrapreds ((x8406))
+:extrapreds ((x8407))
+:extrapreds ((x8408))
+:extrapreds ((x8409))
+:extrapreds ((x8410))
+:extrapreds ((x8411))
+:extrapreds ((x8412))
+:extrapreds ((x8413))
+:extrapreds ((x8414))
+:extrapreds ((x8415))
+:extrapreds ((x8416))
+:extrapreds ((x8417))
+:extrapreds ((x8418))
+:extrapreds ((x8419))
+:extrapreds ((x8420))
+:extrapreds ((x8421))
+:extrapreds ((x8422))
+:extrapreds ((x8423))
+:extrapreds ((x8424))
+:extrapreds ((x8425))
+:extrapreds ((x8426))
+:extrapreds ((x8427))
+:extrapreds ((x8428))
+:extrapreds ((x8429))
+:extrapreds ((x8430))
+:extrapreds ((x8431))
+:extrapreds ((x8432))
+:extrapreds ((x8433))
+:extrapreds ((x8434))
+:extrapreds ((x8435))
+:extrapreds ((x8436))
+:extrapreds ((x8437))
+:extrapreds ((x8438))
+:extrapreds ((x8439))
+:extrapreds ((x8440))
+:extrapreds ((x8441))
+:extrapreds ((x8442))
+:extrapreds ((x8443))
+:extrapreds ((x8444))
+:extrapreds ((x8445))
+:extrapreds ((x8446))
+:extrapreds ((x8447))
+:extrapreds ((x8448))
+:extrapreds ((x8449))
+:extrapreds ((x8450))
+:extrapreds ((x8451))
+:extrapreds ((x8452))
+:extrapreds ((x8453))
+:extrapreds ((x8454))
+:extrapreds ((x8455))
+:extrapreds ((x8456))
+:extrapreds ((x8457))
+:extrapreds ((x8458))
+:extrapreds ((x8459))
+:extrapreds ((x8460))
+:extrapreds ((x8461))
+:extrapreds ((x8462))
+:extrapreds ((x8463))
+:extrapreds ((x8464))
+:extrapreds ((x8465))
+:extrapreds ((x8466))
+:extrapreds ((x8467))
+:extrapreds ((x8468))
+:extrapreds ((x8469))
+:extrapreds ((x8470))
+:extrapreds ((x8471))
+:extrapreds ((x8472))
+:extrapreds ((x8473))
+:extrapreds ((x8474))
+:extrapreds ((x8475))
+:extrapreds ((x8476))
+:extrapreds ((x8477))
+:extrapreds ((x8478))
+:extrapreds ((x8479))
+:extrapreds ((x8480))
+:extrapreds ((x8481))
+:extrapreds ((x8482))
+:extrapreds ((x8483))
+:extrapreds ((x8484))
+:extrapreds ((x8485))
+:extrapreds ((x8486))
+:extrapreds ((x8487))
+:extrapreds ((x8488))
+:extrapreds ((x8489))
+:extrapreds ((x8490))
+:extrapreds ((x8491))
+:extrapreds ((x8492))
+:extrapreds ((x8493))
+:extrapreds ((x8494))
+:extrapreds ((x8495))
+:extrapreds ((x8496))
+:extrapreds ((x8497))
+:extrapreds ((x8498))
+:extrapreds ((x8499))
+:extrapreds ((x8500))
+:extrapreds ((x8501))
+:extrapreds ((x8502))
+:extrapreds ((x8503))
+:extrapreds ((x8504))
+:extrapreds ((x8505))
+:extrapreds ((x8506))
+:extrapreds ((x8507))
+:extrapreds ((x8508))
+:extrapreds ((x8509))
+:extrapreds ((x8510))
+:extrapreds ((x8511))
+:extrapreds ((x8512))
+:extrapreds ((x8513))
+:extrapreds ((x8514))
+:extrapreds ((x8515))
+:extrapreds ((x8516))
+:extrapreds ((x8517))
+:extrapreds ((x8518))
+:extrapreds ((x8519))
+:extrapreds ((x8520))
+:extrapreds ((x8521))
+:extrapreds ((x8522))
+:extrapreds ((x8523))
+:extrapreds ((x8524))
+:extrapreds ((x8525))
+:extrapreds ((x8526))
+:extrapreds ((x8527))
+:extrapreds ((x8528))
+:extrapreds ((x8529))
+:extrapreds ((x8530))
+:extrapreds ((x8531))
+:extrapreds ((x8532))
+:extrapreds ((x8533))
+:extrapreds ((x8534))
+:extrapreds ((x8535))
+:extrapreds ((x8536))
+:extrapreds ((x8537))
+:extrapreds ((x8538))
+:extrapreds ((x8539))
+:extrapreds ((x8540))
+:extrapreds ((x8541))
+:extrapreds ((x8542))
+:extrapreds ((x8543))
+:extrapreds ((x8544))
+:extrapreds ((x8545))
+:extrapreds ((x8546))
+:extrapreds ((x8547))
+:extrapreds ((x8548))
+:extrapreds ((x8549))
+:extrapreds ((x8550))
+:extrapreds ((x8551))
+:extrapreds ((x8552))
+:extrapreds ((x8553))
+:extrapreds ((x8554))
+:extrapreds ((x8555))
+:extrapreds ((x8556))
+:extrapreds ((x8557))
+:extrapreds ((x8558))
+:extrapreds ((x8559))
+:extrapreds ((x8560))
+:extrapreds ((x8561))
+:extrapreds ((x8562))
+:extrapreds ((x8563))
+:extrapreds ((x8564))
+:extrapreds ((x8565))
+:extrapreds ((x8566))
+:extrapreds ((x8567))
+:extrapreds ((x8568))
+:extrapreds ((x8569))
+:extrapreds ((x8570))
+:extrapreds ((x8571))
+:extrapreds ((x8572))
+:extrapreds ((x8573))
+:extrapreds ((x8574))
+:extrapreds ((x8575))
+:extrapreds ((x8576))
+:extrapreds ((x8577))
+:extrapreds ((x8578))
+:extrapreds ((x8579))
+:extrapreds ((x8580))
+:extrapreds ((x8581))
+:extrapreds ((x8582))
+:extrapreds ((x8583))
+:extrapreds ((x8584))
+:extrapreds ((x8585))
+:extrapreds ((x8586))
+:extrapreds ((x8587))
+:extrapreds ((x8588))
+:extrapreds ((x8589))
+:extrapreds ((x8590))
+:extrapreds ((x8591))
+:extrapreds ((x8592))
+:extrapreds ((x8593))
+:extrapreds ((x8594))
+:extrapreds ((x8595))
+:extrapreds ((x8596))
+:extrapreds ((x8597))
+:extrapreds ((x8598))
+:extrapreds ((x8599))
+:extrapreds ((x8600))
+:extrapreds ((x8601))
+:extrapreds ((x8602))
+:extrapreds ((x8603))
+:extrapreds ((x8604))
+:extrapreds ((x8605))
+:extrapreds ((x8606))
+:extrapreds ((x8607))
+:extrapreds ((x8608))
+:extrapreds ((x8609))
+:extrapreds ((x8610))
+:extrapreds ((x8611))
+:extrapreds ((x8612))
+:extrapreds ((x8613))
+:extrapreds ((x8614))
+:extrapreds ((x8615))
+:extrapreds ((x8616))
+:extrapreds ((x8617))
+:extrapreds ((x8618))
+:extrapreds ((x8619))
+:extrapreds ((x8620))
+:extrapreds ((x8621))
+:extrapreds ((x8622))
+:extrapreds ((x8623))
+:extrapreds ((x8624))
+:extrapreds ((x8625))
+:extrapreds ((x8626))
+:extrapreds ((x8627))
+:extrapreds ((x8628))
+:extrapreds ((x8629))
+:extrapreds ((x8630))
+:extrapreds ((x8631))
+:extrapreds ((x8632))
+:extrapreds ((x8633))
+:extrapreds ((x8634))
+:extrapreds ((x8635))
+:extrapreds ((x8636))
+:extrapreds ((x8637))
+:extrapreds ((x8638))
+:extrapreds ((x8639))
+:extrapreds ((x8640))
+:extrapreds ((x8641))
+:extrapreds ((x8642))
+:extrapreds ((x8643))
+:extrapreds ((x8644))
+:extrapreds ((x8645))
+:extrapreds ((x8646))
+:extrapreds ((x8647))
+:extrapreds ((x8648))
+:extrapreds ((x8649))
+:extrapreds ((x8650))
+:extrapreds ((x8651))
+:extrapreds ((x8652))
+:extrapreds ((x8653))
+:extrapreds ((x8654))
+:extrapreds ((x8655))
+:extrapreds ((x8656))
+:extrapreds ((x8657))
+:extrapreds ((x8658))
+:extrapreds ((x8659))
+:extrapreds ((x8660))
+:extrapreds ((x8661))
+:extrapreds ((x8662))
+:extrapreds ((x8663))
+:extrapreds ((x8664))
+:extrapreds ((x8665))
+:extrapreds ((x8666))
+:extrapreds ((x8667))
+:extrapreds ((x8668))
+:extrapreds ((x8669))
+:extrapreds ((x8670))
+:extrapreds ((x8671))
+:extrapreds ((x8672))
+:extrapreds ((x8673))
+:extrapreds ((x8674))
+:extrapreds ((x8675))
+:extrapreds ((x8676))
+:extrapreds ((x8677))
+:extrapreds ((x8678))
+:extrapreds ((x8679))
+:extrapreds ((x8680))
+:extrapreds ((x8681))
+:extrapreds ((x8682))
+:extrapreds ((x8683))
+:extrapreds ((x8684))
+:extrapreds ((x8685))
+:extrapreds ((x8686))
+:extrapreds ((x8687))
+:extrapreds ((x8688))
+:extrapreds ((x8689))
+:extrapreds ((x8690))
+:extrapreds ((x8691))
+:extrapreds ((x8692))
+:extrapreds ((x8693))
+:extrapreds ((x8694))
+:extrapreds ((x8695))
+:extrapreds ((x8696))
+:extrapreds ((x8697))
+:extrapreds ((x8698))
+:extrapreds ((x8699))
+:extrapreds ((x8700))
+:extrapreds ((x8701))
+:extrapreds ((x8702))
+:extrapreds ((x8703))
+:extrapreds ((x8704))
+:extrapreds ((x8705))
+:extrapreds ((x8706))
+:extrapreds ((x8707))
+:extrapreds ((x8708))
+:extrapreds ((x8709))
+:extrapreds ((x8710))
+:extrapreds ((x8711))
+:extrapreds ((x8712))
+:extrapreds ((x8713))
+:extrapreds ((x8714))
+:extrapreds ((x8715))
+:extrapreds ((x8716))
+:extrapreds ((x8717))
+:extrapreds ((x8718))
+:extrapreds ((x8719))
+:extrapreds ((x8720))
+:extrapreds ((x8721))
+:extrapreds ((x8722))
+:extrapreds ((x8723))
+:extrapreds ((x8724))
+:extrapreds ((x8725))
+:extrapreds ((x8726))
+:extrapreds ((x8727))
+:extrapreds ((x8728))
+:extrapreds ((x8729))
+:extrapreds ((x8730))
+:extrapreds ((x8731))
+:extrapreds ((x8732))
+:extrapreds ((x8733))
+:extrapreds ((x8734))
+:extrapreds ((x8735))
+:extrapreds ((x8736))
+:extrapreds ((x8737))
+:extrapreds ((x8738))
+:extrapreds ((x8739))
+:extrapreds ((x8740))
+:extrapreds ((x8741))
+:extrapreds ((x8742))
+:extrapreds ((x8743))
+:extrapreds ((x8744))
+:extrapreds ((x8745))
+:extrapreds ((x8746))
+:extrapreds ((x8747))
+:extrapreds ((x8748))
+:extrapreds ((x8749))
+:extrapreds ((x8750))
+:extrapreds ((x8751))
+:extrapreds ((x8752))
+:extrapreds ((x8753))
+:extrapreds ((x8754))
+:extrapreds ((x8755))
+:extrapreds ((x8756))
+:extrapreds ((x8757))
+:extrapreds ((x8758))
+:extrapreds ((x8759))
+:extrapreds ((x8760))
+:extrapreds ((x8761))
+:extrapreds ((x8762))
+:extrapreds ((x8763))
+:extrapreds ((x8764))
+:extrapreds ((x8765))
+:extrapreds ((x8766))
+:extrapreds ((x8767))
+:extrapreds ((x8768))
+:extrapreds ((x8769))
+:extrapreds ((x8770))
+:extrapreds ((x8771))
+:extrapreds ((x8772))
+:extrapreds ((x8773))
+:extrapreds ((x8774))
+:extrapreds ((x8775))
+:extrapreds ((x8776))
+:extrapreds ((x8777))
+:extrapreds ((x8778))
+:extrapreds ((x8779))
+:extrapreds ((x8780))
+:extrapreds ((x8781))
+:extrapreds ((x8782))
+:extrapreds ((x8783))
+:extrapreds ((x8784))
+:extrapreds ((x8785))
+:extrapreds ((x8786))
+:extrapreds ((x8787))
+:extrapreds ((x8788))
+:extrapreds ((x8789))
+:extrapreds ((x8790))
+:extrapreds ((x8791))
+:extrapreds ((x8792))
+:extrapreds ((x8793))
+:extrapreds ((x8794))
+:extrapreds ((x8795))
+:extrapreds ((x8796))
+:extrapreds ((x8797))
+:extrapreds ((x8798))
+:extrapreds ((x8799))
+:extrapreds ((x8800))
+:extrapreds ((x8801))
+:extrapreds ((x8802))
+:extrapreds ((x8803))
+:extrapreds ((x8804))
+:extrapreds ((x8805))
+:extrapreds ((x8806))
+:extrapreds ((x8807))
+:extrapreds ((x8808))
+:extrapreds ((x8809))
+:extrapreds ((x8810))
+:extrapreds ((x8811))
+:extrapreds ((x8812))
+:extrapreds ((x8813))
+:extrapreds ((x8814))
+:extrapreds ((x8815))
+:extrapreds ((x8816))
+:extrapreds ((x8817))
+:extrapreds ((x8818))
+:extrapreds ((x8819))
+:extrapreds ((x8820))
+:extrapreds ((x8821))
+:extrapreds ((x8822))
+:extrapreds ((x8823))
+:extrapreds ((x8824))
+:extrapreds ((x8825))
+:extrapreds ((x8826))
+:extrapreds ((x8827))
+:extrapreds ((x8828))
+:extrapreds ((x8829))
+:extrapreds ((x8830))
+:extrapreds ((x8831))
+:extrapreds ((x8832))
+:extrapreds ((x8833))
+:extrapreds ((x8834))
+:extrapreds ((x8835))
+:extrapreds ((x8836))
+:extrapreds ((x8837))
+:extrapreds ((x8838))
+:extrapreds ((x8839))
+:extrapreds ((x8840))
+:extrapreds ((x8841))
+:extrapreds ((x8842))
+:extrapreds ((x8843))
+:extrapreds ((x8844))
+:extrapreds ((x8845))
+:extrapreds ((x8846))
+:extrapreds ((x8847))
+:extrapreds ((x8848))
+:extrapreds ((x8849))
+:extrapreds ((x8850))
+:extrapreds ((x8851))
+:extrapreds ((x8852))
+:extrapreds ((x8853))
+:extrapreds ((x8854))
+:extrapreds ((x8855))
+:extrapreds ((x8856))
+:extrapreds ((x8857))
+:extrapreds ((x8858))
+:extrapreds ((x8859))
+:extrapreds ((x8860))
+:extrapreds ((x8861))
+:extrapreds ((x8862))
+:extrapreds ((x8863))
+:extrapreds ((x8864))
+:extrapreds ((x8865))
+:extrapreds ((x8866))
+:extrapreds ((x8867))
+:extrapreds ((x8868))
+:extrapreds ((x8869))
+:extrapreds ((x8870))
+:extrapreds ((x8871))
+:extrapreds ((x8872))
+:extrapreds ((x8873))
+:extrapreds ((x8874))
+:extrapreds ((x8875))
+:extrapreds ((x8876))
+:extrapreds ((x8877))
+:extrapreds ((x8878))
+:extrapreds ((x8879))
+:extrapreds ((x8880))
+:extrapreds ((x8881))
+:extrapreds ((x8882))
+:extrapreds ((x8883))
+:extrapreds ((x8884))
+:extrapreds ((x8885))
+:extrapreds ((x8886))
+:extrapreds ((x8887))
+:extrapreds ((x8888))
+:extrapreds ((x8889))
+:extrapreds ((x8890))
+:extrapreds ((x8891))
+:extrapreds ((x8892))
+:extrapreds ((x8893))
+:extrapreds ((x8894))
+:extrapreds ((x8895))
+:extrapreds ((x8896))
+:extrapreds ((x8897))
+:extrapreds ((x8898))
+:extrapreds ((x8899))
+:extrapreds ((x8900))
+:extrapreds ((x8901))
+:extrapreds ((x8902))
+:extrapreds ((x8903))
+:extrapreds ((x8904))
+:extrapreds ((x8905))
+:extrapreds ((x8906))
+:extrapreds ((x8907))
+:extrapreds ((x8908))
+:extrapreds ((x8909))
+:extrapreds ((x8910))
+:extrapreds ((x8911))
+:extrapreds ((x8912))
+:extrapreds ((x8913))
+:extrapreds ((x8914))
+:extrapreds ((x8915))
+:extrapreds ((x8916))
+:extrapreds ((x8917))
+:extrapreds ((x8918))
+:extrapreds ((x8919))
+:extrapreds ((x8920))
+:extrapreds ((x8921))
+:extrapreds ((x8922))
+:extrapreds ((x8923))
+:extrapreds ((x8924))
+:extrapreds ((x8925))
+:extrapreds ((x8926))
+:extrapreds ((x8927))
+:extrapreds ((x8928))
+:extrapreds ((x8929))
+:extrapreds ((x8930))
+:extrapreds ((x8931))
+:extrapreds ((x8932))
+:extrapreds ((x8933))
+:extrapreds ((x8934))
+:extrapreds ((x8935))
+:extrapreds ((x8936))
+:extrapreds ((x8937))
+:extrapreds ((x8938))
+:extrapreds ((x8939))
+:extrapreds ((x8940))
+:extrapreds ((x8941))
+:extrapreds ((x8942))
+:extrapreds ((x8943))
+:extrapreds ((x8944))
+:extrapreds ((x8945))
+:extrapreds ((x8946))
+:extrapreds ((x8947))
+:extrapreds ((x8948))
+:extrapreds ((x8949))
+:extrapreds ((x8950))
+:extrapreds ((x8951))
+:extrapreds ((x8952))
+:extrapreds ((x8953))
+:extrapreds ((x8954))
+:extrapreds ((x8955))
+:extrapreds ((x8956))
+:extrapreds ((x8957))
+:extrapreds ((x8958))
+:extrapreds ((x8959))
+:extrapreds ((x8960))
+:extrapreds ((x8961))
+:extrapreds ((x8962))
+:extrapreds ((x8963))
+:extrapreds ((x8964))
+:extrapreds ((x8965))
+:extrapreds ((x8966))
+:extrapreds ((x8967))
+:extrapreds ((x8968))
+:extrapreds ((x8969))
+:extrapreds ((x8970))
+:extrapreds ((x8971))
+:extrapreds ((x8972))
+:extrapreds ((x8973))
+:extrapreds ((x8974))
+:extrapreds ((x8975))
+:extrapreds ((x8976))
+:extrapreds ((x8977))
+:extrapreds ((x8978))
+:extrapreds ((x8979))
+:extrapreds ((x8980))
+:extrapreds ((x8981))
+:extrapreds ((x8982))
+:extrapreds ((x8983))
+:extrapreds ((x8984))
+:extrapreds ((x8985))
+:extrapreds ((x8986))
+:extrapreds ((x8987))
+:extrapreds ((x8988))
+:extrapreds ((x8989))
+:extrapreds ((x8990))
+:extrapreds ((x8991))
+:extrapreds ((x8992))
+:extrapreds ((x8993))
+:extrapreds ((x8994))
+:extrapreds ((x8995))
+:extrapreds ((x8996))
+:extrapreds ((x8997))
+:extrapreds ((x8998))
+:extrapreds ((x8999))
+:extrapreds ((x9000))
+:extrapreds ((x9001))
+:extrapreds ((x9002))
+:extrapreds ((x9003))
+:extrapreds ((x9004))
+:extrapreds ((x9005))
+:extrapreds ((x9006))
+:extrapreds ((x9007))
+:extrapreds ((x9008))
+:extrapreds ((x9009))
+:extrapreds ((x9010))
+:extrapreds ((x9011))
+:extrapreds ((x9012))
+:extrapreds ((x9013))
+:extrapreds ((x9014))
+:extrapreds ((x9015))
+:extrapreds ((x9016))
+:extrapreds ((x9017))
+:extrapreds ((x9018))
+:extrapreds ((x9019))
+:extrapreds ((x9020))
+:extrapreds ((x9021))
+:extrapreds ((x9022))
+:extrapreds ((x9023))
+:extrapreds ((x9024))
+:extrapreds ((x9025))
+:extrapreds ((x9026))
+:extrapreds ((x9027))
+:extrapreds ((x9028))
+:extrapreds ((x9029))
+:extrapreds ((x9030))
+:extrapreds ((x9031))
+:extrapreds ((x9032))
+:extrapreds ((x9033))
+:extrapreds ((x9034))
+:extrapreds ((x9035))
+:extrapreds ((x9036))
+:extrapreds ((x9037))
+:extrapreds ((x9038))
+:extrapreds ((x9039))
+:extrapreds ((x9040))
+:extrapreds ((x9041))
+:extrapreds ((x9042))
+:extrapreds ((x9043))
+:extrapreds ((x9044))
+:extrapreds ((x9045))
+:extrapreds ((x9046))
+:extrapreds ((x9047))
+:extrapreds ((x9048))
+:extrapreds ((x9049))
+:extrapreds ((x9050))
+:extrapreds ((x9051))
+:extrapreds ((x9052))
+:extrapreds ((x9053))
+:extrapreds ((x9054))
+:extrapreds ((x9055))
+:extrapreds ((x9056))
+:extrapreds ((x9057))
+:extrapreds ((x9058))
+:extrapreds ((x9059))
+:extrapreds ((x9060))
+:extrapreds ((x9061))
+:extrapreds ((x9062))
+:extrapreds ((x9063))
+:extrapreds ((x9064))
+:extrapreds ((x9065))
+:extrapreds ((x9066))
+:extrapreds ((x9067))
+:extrapreds ((x9068))
+:extrapreds ((x9069))
+:extrapreds ((x9070))
+:extrapreds ((x9071))
+:extrapreds ((x9072))
+:extrapreds ((x9073))
+:extrapreds ((x9074))
+:extrapreds ((x9075))
+:extrapreds ((x9076))
+:extrapreds ((x9077))
+:extrapreds ((x9078))
+:extrapreds ((x9079))
+:extrapreds ((x9080))
+:extrapreds ((x9081))
+:extrapreds ((x9082))
+:extrapreds ((x9083))
+:extrapreds ((x9084))
+:extrapreds ((x9085))
+:extrapreds ((x9086))
+:extrapreds ((x9087))
+:extrapreds ((x9088))
+:extrapreds ((x9089))
+:extrapreds ((x9090))
+:extrapreds ((x9091))
+:extrapreds ((x9092))
+:extrapreds ((x9093))
+:extrapreds ((x9094))
+:extrapreds ((x9095))
+:extrapreds ((x9096))
+:extrapreds ((x9097))
+:extrapreds ((x9098))
+:extrapreds ((x9099))
+:extrapreds ((x9100))
+:extrapreds ((x9101))
+:extrapreds ((x9102))
+:extrapreds ((x9103))
+:extrapreds ((x9104))
+:extrapreds ((x9105))
+:extrapreds ((x9106))
+:extrapreds ((x9107))
+:extrapreds ((x9108))
+:extrapreds ((x9109))
+:extrapreds ((x9110))
+:extrapreds ((x9111))
+:extrapreds ((x9112))
+:extrapreds ((x9113))
+:extrapreds ((x9114))
+:extrapreds ((x9115))
+:extrapreds ((x9116))
+:extrapreds ((x9117))
+:extrapreds ((x9118))
+:extrapreds ((x9119))
+:extrapreds ((x9120))
+:extrapreds ((x9121))
+:extrapreds ((x9122))
+:extrapreds ((x9123))
+:extrapreds ((x9124))
+:extrapreds ((x9125))
+:extrapreds ((x9126))
+:extrapreds ((x9127))
+:extrapreds ((x9128))
+:extrapreds ((x9129))
+:extrapreds ((x9130))
+:extrapreds ((x9131))
+:extrapreds ((x9132))
+:extrapreds ((x9133))
+:extrapreds ((x9134))
+:extrapreds ((x9135))
+:extrapreds ((x9136))
+:extrapreds ((x9137))
+:extrapreds ((x9138))
+:extrapreds ((x9139))
+:extrapreds ((x9140))
+:extrapreds ((x9141))
+:extrapreds ((x9142))
+:extrapreds ((x9143))
+:extrapreds ((x9144))
+:extrapreds ((x9145))
+:extrapreds ((x9146))
+:extrapreds ((x9147))
+:extrapreds ((x9148))
+:extrapreds ((x9149))
+:extrapreds ((x9150))
+:extrapreds ((x9151))
+:extrapreds ((x9152))
+:extrapreds ((x9153))
+:extrapreds ((x9154))
+:extrapreds ((x9155))
+:extrapreds ((x9156))
+:extrapreds ((x9157))
+:extrapreds ((x9158))
+:extrapreds ((x9159))
+:extrapreds ((x9160))
+:extrapreds ((x9161))
+:extrapreds ((x9162))
+:extrapreds ((x9163))
+:extrapreds ((x9164))
+:extrapreds ((x9165))
+:extrapreds ((x9166))
+:extrapreds ((x9167))
+:extrapreds ((x9168))
+:extrapreds ((x9169))
+:extrapreds ((x9170))
+:extrapreds ((x9171))
+:extrapreds ((x9172))
+:extrapreds ((x9173))
+:extrapreds ((x9174))
+:extrapreds ((x9175))
+:extrapreds ((x9176))
+:extrapreds ((x9177))
+:extrapreds ((x9178))
+:extrapreds ((x9179))
+:extrapreds ((x9180))
+:extrapreds ((x9181))
+:extrapreds ((x9182))
+:extrapreds ((x9183))
+:extrapreds ((x9184))
+:extrapreds ((x9185))
+:extrapreds ((x9186))
+:extrapreds ((x9187))
+:extrapreds ((x9188))
+:extrapreds ((x9189))
+:extrapreds ((x9190))
+:extrapreds ((x9191))
+:extrapreds ((x9192))
+:extrapreds ((x9193))
+:extrapreds ((x9194))
+:extrapreds ((x9195))
+:extrapreds ((x9196))
+:extrapreds ((x9197))
+:extrapreds ((x9198))
+:extrapreds ((x9199))
+:extrapreds ((x9200))
+:extrapreds ((x9201))
+:extrapreds ((x9202))
+:extrapreds ((x9203))
+:extrapreds ((x9204))
+:extrapreds ((x9205))
+:extrapreds ((x9206))
+:extrapreds ((x9207))
+:extrapreds ((x9208))
+:extrapreds ((x9209))
+:extrapreds ((x9210))
+:extrapreds ((x9211))
+:extrapreds ((x9212))
+:extrapreds ((x9213))
+:extrapreds ((x9214))
+:extrapreds ((x9215))
+:extrapreds ((x9216))
+:extrapreds ((x9217))
+:extrapreds ((x9218))
+:extrapreds ((x9219))
+:extrapreds ((x9220))
+:extrapreds ((x9221))
+:extrapreds ((x9222))
+:extrapreds ((x9223))
+:extrapreds ((x9224))
+:extrapreds ((x9225))
+:extrapreds ((x9226))
+:extrapreds ((x9227))
+:extrapreds ((x9228))
+:extrapreds ((x9229))
+:extrapreds ((x9230))
+:extrapreds ((x9231))
+:extrapreds ((x9232))
+:extrapreds ((x9233))
+:extrapreds ((x9234))
+:extrapreds ((x9235))
+:extrapreds ((x9236))
+:extrapreds ((x9237))
+:extrapreds ((x9238))
+:extrapreds ((x9239))
+:extrapreds ((x9240))
+:extrapreds ((x9241))
+:extrapreds ((x9242))
+:extrapreds ((x9243))
+:extrapreds ((x9244))
+:extrapreds ((x9245))
+:extrapreds ((x9246))
+:extrapreds ((x9247))
+:extrapreds ((x9248))
+:extrapreds ((x9249))
+:extrapreds ((x9250))
+:extrapreds ((x9251))
+:extrapreds ((x9252))
+:extrapreds ((x9253))
+:extrapreds ((x9254))
+:extrapreds ((x9255))
+:extrapreds ((x9256))
+:extrapreds ((x9257))
+:extrapreds ((x9258))
+:extrapreds ((x9259))
+:extrapreds ((x9260))
+:extrapreds ((x9261))
+:extrapreds ((x9262))
+:extrapreds ((x9263))
+:extrapreds ((x9264))
+:extrapreds ((x9265))
+:extrapreds ((x9266))
+:extrapreds ((x9267))
+:extrapreds ((x9268))
+:extrapreds ((x9269))
+:extrapreds ((x9270))
+:extrapreds ((x9271))
+:extrapreds ((x9272))
+:extrapreds ((x9273))
+:extrapreds ((x9274))
+:extrapreds ((x9275))
+:extrapreds ((x9276))
+:extrapreds ((x9277))
+:extrapreds ((x9278))
+:extrapreds ((x9279))
+:extrapreds ((x9280))
+:extrapreds ((x9281))
+:extrapreds ((x9282))
+:extrapreds ((x9283))
+:extrapreds ((x9284))
+:extrapreds ((x9285))
+:extrapreds ((x9286))
+:extrapreds ((x9287))
+:extrapreds ((x9288))
+:extrapreds ((x9289))
+:extrapreds ((x9290))
+:extrapreds ((x9291))
+:extrapreds ((x9292))
+:extrapreds ((x9293))
+:extrapreds ((x9294))
+:extrapreds ((x9295))
+:extrapreds ((x9296))
+:extrapreds ((x9297))
+:extrapreds ((x9298))
+:extrapreds ((x9299))
+:extrapreds ((x9300))
+:extrapreds ((x9301))
+:extrapreds ((x9302))
+:extrapreds ((x9303))
+:extrapreds ((x9304))
+:extrapreds ((x9305))
+:extrapreds ((x9306))
+:extrapreds ((x9307))
+:extrapreds ((x9308))
+:extrapreds ((x9309))
+:extrapreds ((x9310))
+:extrapreds ((x9311))
+:extrapreds ((x9312))
+:extrapreds ((x9313))
+:extrapreds ((x9314))
+:extrapreds ((x9315))
+:extrapreds ((x9316))
+:extrapreds ((x9317))
+:extrapreds ((x9318))
+:extrapreds ((x9319))
+:extrapreds ((x9320))
+:extrapreds ((x9321))
+:extrapreds ((x9322))
+:extrapreds ((x9323))
+:extrapreds ((x9324))
+:extrapreds ((x9325))
+:extrapreds ((x9326))
+:extrapreds ((x9327))
+:extrapreds ((x9328))
+:extrapreds ((x9329))
+:extrapreds ((x9330))
+:extrapreds ((x9331))
+:extrapreds ((x9332))
+:extrapreds ((x9333))
+:extrapreds ((x9334))
+:extrapreds ((x9335))
+:extrapreds ((x9336))
+:extrapreds ((x9337))
+:extrapreds ((x9338))
+:extrapreds ((x9339))
+:extrapreds ((x9340))
+:extrapreds ((x9341))
+:extrapreds ((x9342))
+:extrapreds ((x9343))
+:extrapreds ((x9344))
+:extrapreds ((x9345))
+:extrapreds ((x9346))
+:extrapreds ((x9347))
+:extrapreds ((x9348))
+:extrapreds ((x9349))
+:extrapreds ((x9350))
+:extrapreds ((x9351))
+:extrapreds ((x9352))
+:extrapreds ((x9353))
+:extrapreds ((x9354))
+:extrapreds ((x9355))
+:extrapreds ((x9356))
+:extrapreds ((x9357))
+:extrapreds ((x9358))
+:extrapreds ((x9359))
+:extrapreds ((x9360))
+:extrapreds ((x9361))
+:extrapreds ((x9362))
+:extrapreds ((x9363))
+:extrapreds ((x9364))
+:extrapreds ((x9365))
+:extrapreds ((x9366))
+:extrapreds ((x9367))
+:extrapreds ((x9368))
+:extrapreds ((x9369))
+:extrapreds ((x9370))
+:extrapreds ((x9371))
+:extrapreds ((x9372))
+:extrapreds ((x9373))
+:extrapreds ((x9374))
+:extrapreds ((x9375))
+:extrapreds ((x9376))
+:extrapreds ((x9377))
+:extrapreds ((x9378))
+:extrapreds ((x9379))
+:extrapreds ((x9380))
+:extrapreds ((x9381))
+:extrapreds ((x9382))
+:extrapreds ((x9383))
+:extrapreds ((x9384))
+:extrapreds ((x9385))
+:extrapreds ((x9386))
+:extrapreds ((x9387))
+:extrapreds ((x9388))
+:extrapreds ((x9389))
+:extrapreds ((x9390))
+:extrapreds ((x9391))
+:extrapreds ((x9392))
+:extrapreds ((x9393))
+:extrapreds ((x9394))
+:extrapreds ((x9395))
+:extrapreds ((x9396))
+:extrapreds ((x9397))
+:extrapreds ((x9398))
+:extrapreds ((x9399))
+:extrapreds ((x9400))
+:extrapreds ((x9401))
+:extrapreds ((x9402))
+:extrapreds ((x9403))
+:extrapreds ((x9404))
+:extrapreds ((x9405))
+:extrapreds ((x9406))
+:extrapreds ((x9407))
+:extrapreds ((x9408))
+:extrapreds ((x9409))
+:extrapreds ((x9410))
+:extrapreds ((x9411))
+:extrapreds ((x9412))
+:extrapreds ((x9413))
+:extrapreds ((x9414))
+:extrapreds ((x9415))
+:extrapreds ((x9416))
+:extrapreds ((x9417))
+:extrapreds ((x9418))
+:extrapreds ((x9419))
+:extrapreds ((x9420))
+:extrapreds ((x9421))
+:extrapreds ((x9422))
+:extrapreds ((x9423))
+:extrapreds ((x9424))
+:extrapreds ((x9425))
+:extrapreds ((x9426))
+:extrapreds ((x9427))
+:extrapreds ((x9428))
+:extrapreds ((x9429))
+:extrapreds ((x9430))
+:extrapreds ((x9431))
+:extrapreds ((x9432))
+:extrapreds ((x9433))
+:extrapreds ((x9434))
+:extrapreds ((x9435))
+:extrapreds ((x9436))
+:extrapreds ((x9437))
+:extrapreds ((x9438))
+:extrapreds ((x9439))
+:extrapreds ((x9440))
+:extrapreds ((x9441))
+:extrapreds ((x9442))
+:extrapreds ((x9443))
+:extrapreds ((x9444))
+:extrapreds ((x9445))
+:extrapreds ((x9446))
+:extrapreds ((x9447))
+:extrapreds ((x9448))
+:extrapreds ((x9449))
+:extrapreds ((x9450))
+:extrapreds ((x9451))
+:extrapreds ((x9452))
+:extrapreds ((x9453))
+:extrapreds ((x9454))
+:extrapreds ((x9455))
+:extrapreds ((x9456))
+:extrapreds ((x9457))
+:extrapreds ((x9458))
+:extrapreds ((x9459))
+:extrapreds ((x9460))
+:extrapreds ((x9461))
+:extrapreds ((x9462))
+:extrapreds ((x9463))
+:extrapreds ((x9464))
+:extrapreds ((x9465))
+:extrapreds ((x9466))
+:extrapreds ((x9467))
+:extrapreds ((x9468))
+:extrapreds ((x9469))
+:extrapreds ((x9470))
+:extrapreds ((x9471))
+:extrapreds ((x9472))
+:extrapreds ((x9473))
+:extrapreds ((x9474))
+:extrapreds ((x9475))
+:extrapreds ((x9476))
+:extrapreds ((x9477))
+:extrapreds ((x9478))
+:extrapreds ((x9479))
+:extrapreds ((x9480))
+:extrapreds ((x9481))
+:extrapreds ((x9482))
+:extrapreds ((x9483))
+:extrapreds ((x9484))
+:extrapreds ((x9485))
+:extrapreds ((x9486))
+:extrapreds ((x9487))
+:extrapreds ((x9488))
+:extrapreds ((x9489))
+:extrapreds ((x9490))
+:extrapreds ((x9491))
+:extrapreds ((x9492))
+:extrapreds ((x9493))
+:extrapreds ((x9494))
+:extrapreds ((x9495))
+:extrapreds ((x9496))
+:extrapreds ((x9497))
+:extrapreds ((x9498))
+:extrapreds ((x9499))
+:extrapreds ((x9500))
+:extrapreds ((x9501))
+:extrapreds ((x9502))
+:extrapreds ((x9503))
+:extrapreds ((x9504))
+:extrapreds ((x9505))
+:extrapreds ((x9506))
+:extrapreds ((x9507))
+:extrapreds ((x9508))
+:extrapreds ((x9509))
+:extrapreds ((x9510))
+:extrapreds ((x9511))
+:extrapreds ((x9512))
+:extrapreds ((x9513))
+:extrapreds ((x9514))
+:extrapreds ((x9515))
+:extrapreds ((x9516))
+:extrapreds ((x9517))
+:extrapreds ((x9518))
+:extrapreds ((x9519))
+:extrapreds ((x9520))
+:extrapreds ((x9521))
+:extrapreds ((x9522))
+:extrapreds ((x9523))
+:extrapreds ((x9524))
+:extrapreds ((x9525))
+:extrapreds ((x9526))
+:extrapreds ((x9527))
+:extrapreds ((x9528))
+:extrapreds ((x9529))
+:extrapreds ((x9530))
+:extrapreds ((x9531))
+:extrapreds ((x9532))
+:extrapreds ((x9533))
+:extrapreds ((x9534))
+:extrapreds ((x9535))
+:extrapreds ((x9536))
+:extrapreds ((x9537))
+:extrapreds ((x9538))
+:extrapreds ((x9539))
+:extrapreds ((x9540))
+:extrapreds ((x9541))
+:extrapreds ((x9542))
+:extrapreds ((x9543))
+:extrapreds ((x9544))
+:extrapreds ((x9545))
+:extrapreds ((x9546))
+:extrapreds ((x9547))
+:extrapreds ((x9548))
+:extrapreds ((x9549))
+:extrapreds ((x9550))
+:extrapreds ((x9551))
+:extrapreds ((x9552))
+:extrapreds ((x9553))
+:extrapreds ((x9554))
+:extrapreds ((x9555))
+:extrapreds ((x9556))
+:extrapreds ((x9557))
+:extrapreds ((x9558))
+:extrapreds ((x9559))
+:extrapreds ((x9560))
+:extrapreds ((x9561))
+:extrapreds ((x9562))
+:extrapreds ((x9563))
+:extrapreds ((x9564))
+:extrapreds ((x9565))
+:extrapreds ((x9566))
+:extrapreds ((x9567))
+:extrapreds ((x9568))
+:extrapreds ((x9569))
+:extrapreds ((x9570))
+:extrapreds ((x9571))
+:extrapreds ((x9572))
+:extrapreds ((x9573))
+:extrapreds ((x9574))
+:extrapreds ((x9575))
+:extrapreds ((x9576))
+:extrapreds ((x9577))
+:extrapreds ((x9578))
+:extrapreds ((x9579))
+:extrapreds ((x9580))
+:extrapreds ((x9581))
+:extrapreds ((x9582))
+:extrapreds ((x9583))
+:extrapreds ((x9584))
+:extrapreds ((x9585))
+:extrapreds ((x9586))
+:extrapreds ((x9587))
+:extrapreds ((x9588))
+:extrapreds ((x9589))
+:extrapreds ((x9590))
+:extrapreds ((x9591))
+:extrapreds ((x9592))
+:extrapreds ((x9593))
+:extrapreds ((x9594))
+:extrapreds ((x9595))
+:extrapreds ((x9596))
+:extrapreds ((x9597))
+:extrapreds ((x9598))
+:extrapreds ((x9599))
+:extrapreds ((x9600))
+:extrapreds ((x9601))
+:extrapreds ((x9602))
+:extrapreds ((x9603))
+:extrapreds ((x9604))
+:extrapreds ((x9605))
+:extrapreds ((x9606))
+:extrapreds ((x9607))
+:extrapreds ((x9608))
+:extrapreds ((x9609))
+:extrapreds ((x9610))
+:extrapreds ((x9611))
+:extrapreds ((x9612))
+:extrapreds ((x9613))
+:extrapreds ((x9614))
+:extrapreds ((x9615))
+:extrapreds ((x9616))
+:extrapreds ((x9617))
+:extrapreds ((x9618))
+:extrapreds ((x9619))
+:extrapreds ((x9620))
+:extrapreds ((x9621))
+:extrapreds ((x9622))
+:extrapreds ((x9623))
+:extrapreds ((x9624))
+:extrapreds ((x9625))
+:extrapreds ((x9626))
+:extrapreds ((x9627))
+:extrapreds ((x9628))
+:extrapreds ((x9629))
+:extrapreds ((x9630))
+:extrapreds ((x9631))
+:extrapreds ((x9632))
+:extrapreds ((x9633))
+:extrapreds ((x9634))
+:extrapreds ((x9635))
+:extrapreds ((x9636))
+:extrapreds ((x9637))
+:extrapreds ((x9638))
+:extrapreds ((x9639))
+:extrapreds ((x9640))
+:extrapreds ((x9641))
+:extrapreds ((x9642))
+:extrapreds ((x9643))
+:extrapreds ((x9644))
+:extrapreds ((x9645))
+:extrapreds ((x9646))
+:extrapreds ((x9647))
+:extrapreds ((x9648))
+:extrapreds ((x9649))
+:extrapreds ((x9650))
+:extrapreds ((x9651))
+:extrapreds ((x9652))
+:extrapreds ((x9653))
+:extrapreds ((x9654))
+:extrapreds ((x9655))
+:extrapreds ((x9656))
+:extrapreds ((x9657))
+:extrapreds ((x9658))
+:extrapreds ((x9659))
+:extrapreds ((x9660))
+:extrapreds ((x9661))
+:extrapreds ((x9662))
+:extrapreds ((x9663))
+:extrapreds ((x9664))
+:extrapreds ((x9665))
+:extrapreds ((x9666))
+:extrapreds ((x9667))
+:extrapreds ((x9668))
+:extrapreds ((x9669))
+:extrapreds ((x9670))
+:extrapreds ((x9671))
+:extrapreds ((x9672))
+:extrapreds ((x9673))
+:extrapreds ((x9674))
+:extrapreds ((x9675))
+:extrapreds ((x9676))
+:extrapreds ((x9677))
+:extrapreds ((x9678))
+:extrapreds ((x9679))
+:extrapreds ((x9680))
+:extrapreds ((x9681))
+:extrapreds ((x9682))
+:extrapreds ((x9683))
+:extrapreds ((x9684))
+:extrapreds ((x9685))
+:formula (and
+(or (not x1) x5)
+(or (not x1) x4)
+(or (not x1) (not x3))
+(or (not x1) x2)
+(or (not x1) x6)
+(or (not x1) (not x7))
+(or (not x1) x8)
+(or (not x9) x5)
+(or (not x9) (not x4))
+(or (not x9) (not x3))
+(or (not x9) (not x2))
+(or (not x9) x6)
+(or (not x9) (not x7))
+(or (not x9) x8)
+(or (not x10) x14)
+(or (not x10) x13)
+(or (not x10) (not x12))
+(or (not x10) x11)
+(or (not x10) x15)
+(or (not x10) (not x16))
+(or (not x10) x17)
+(or (not x18) x14)
+(or (not x18) (not x13))
+(or (not x18) (not x12))
+(or (not x18) (not x11))
+(or (not x18) x15)
+(or (not x18) (not x16))
+(or (not x18) x17)
+(or (not x19) x23)
+(or (not x19) x22)
+(or (not x19) (not x21))
+(or (not x19) x20)
+(or (not x19) x24)
+(or (not x19) (not x25))
+(or (not x19) x26)
+(or (not x27) x23)
+(or (not x27) (not x22))
+(or (not x27) (not x21))
+(or (not x27) (not x20))
+(or (not x27) x24)
+(or (not x27) (not x25))
+(or (not x27) x26)
+(or (not x28) x32)
+(or (not x28) x31)
+(or (not x28) (not x30))
+(or (not x28) x29)
+(or (not x28) x33)
+(or (not x28) (not x34))
+(or (not x28) x35)
+(or (not x36) x32)
+(or (not x36) (not x31))
+(or (not x36) (not x30))
+(or (not x36) (not x29))
+(or (not x36) x33)
+(or (not x36) (not x34))
+(or (not x36) x35)
+(or (not x37) x41)
+(or (not x37) x40)
+(or (not x37) (not x39))
+(or (not x37) x38)
+(or (not x37) x42)
+(or (not x37) (not x43))
+(or (not x37) x44)
+(or (not x45) x41)
+(or (not x45) (not x40))
+(or (not x45) (not x39))
+(or (not x45) (not x38))
+(or (not x45) x42)
+(or (not x45) (not x43))
+(or (not x45) x44)
+(or (not x46) x50)
+(or (not x46) x49)
+(or (not x46) (not x48))
+(or (not x46) x47)
+(or (not x46) x51)
+(or (not x46) (not x52))
+(or (not x46) x53)
+(or (not x54) x50)
+(or (not x54) (not x49))
+(or (not x54) (not x48))
+(or (not x54) (not x47))
+(or (not x54) x51)
+(or (not x54) (not x52))
+(or (not x54) x53)
+(or (not x55) x59)
+(or (not x55) x58)
+(or (not x55) (not x57))
+(or (not x55) x56)
+(or (not x55) x60)
+(or (not x55) (not x61))
+(or (not x55) x62)
+(or (not x63) x59)
+(or (not x63) (not x58))
+(or (not x63) (not x57))
+(or (not x63) (not x56))
+(or (not x63) x60)
+(or (not x63) (not x61))
+(or (not x63) x62)
+(or (not x64) x68)
+(or (not x64) x67)
+(or (not x64) (not x66))
+(or (not x64) x65)
+(or (not x64) x69)
+(or (not x64) (not x70))
+(or (not x64) x71)
+(or (not x72) x68)
+(or (not x72) (not x67))
+(or (not x72) (not x66))
+(or (not x72) (not x65))
+(or (not x72) x69)
+(or (not x72) (not x70))
+(or (not x72) x71)
+(or (not x73) x77)
+(or (not x73) x76)
+(or (not x73) (not x75))
+(or (not x73) x74)
+(or (not x73) x78)
+(or (not x73) (not x79))
+(or (not x73) x80)
+(or (not x81) x77)
+(or (not x81) (not x76))
+(or (not x81) (not x75))
+(or (not x81) (not x74))
+(or (not x81) x78)
+(or (not x81) (not x79))
+(or (not x81) x80)
+(or (not x82) x86)
+(or (not x82) x85)
+(or (not x82) (not x84))
+(or (not x82) x83)
+(or (not x82) x87)
+(or (not x82) (not x88))
+(or (not x82) x89)
+(or (not x90) x86)
+(or (not x90) (not x85))
+(or (not x90) (not x84))
+(or (not x90) (not x83))
+(or (not x90) x87)
+(or (not x90) (not x88))
+(or (not x90) x89)
+(or (not x91) x95)
+(or (not x91) x94)
+(or (not x91) (not x93))
+(or (not x91) x92)
+(or (not x91) x96)
+(or (not x91) (not x97))
+(or (not x91) x98)
+(or (not x99) x95)
+(or (not x99) (not x94))
+(or (not x99) (not x93))
+(or (not x99) (not x92))
+(or (not x99) x96)
+(or (not x99) (not x97))
+(or (not x99) x98)
+(or (not x100) x104)
+(or (not x100) x103)
+(or (not x100) (not x102))
+(or (not x100) x101)
+(or (not x100) x105)
+(or (not x100) (not x106))
+(or (not x100) x107)
+(or (not x108) x104)
+(or (not x108) (not x103))
+(or (not x108) (not x102))
+(or (not x108) (not x101))
+(or (not x108) x105)
+(or (not x108) (not x106))
+(or (not x108) x107)
+(or (not x109) x113)
+(or (not x109) x112)
+(or (not x109) (not x111))
+(or (not x109) x110)
+(or (not x109) x114)
+(or (not x109) (not x115))
+(or (not x109) x116)
+(or (not x117) x113)
+(or (not x117) (not x112))
+(or (not x117) (not x111))
+(or (not x117) (not x110))
+(or (not x117) x114)
+(or (not x117) (not x115))
+(or (not x117) x116)
+(or (not x118) x122)
+(or (not x118) x121)
+(or (not x118) (not x120))
+(or (not x118) x119)
+(or (not x118) x123)
+(or (not x118) (not x124))
+(or (not x118) x125)
+(or (not x126) x122)
+(or (not x126) (not x121))
+(or (not x126) (not x120))
+(or (not x126) (not x119))
+(or (not x126) x123)
+(or (not x126) (not x124))
+(or (not x126) x125)
+(or (not x127) x131)
+(or (not x127) x130)
+(or (not x127) (not x129))
+(or (not x127) x128)
+(or (not x127) x132)
+(or (not x127) (not x133))
+(or (not x127) x134)
+(or (not x135) x131)
+(or (not x135) (not x130))
+(or (not x135) (not x129))
+(or (not x135) (not x128))
+(or (not x135) x132)
+(or (not x135) (not x133))
+(or (not x135) x134)
+(or (not x136) x140)
+(or (not x136) x139)
+(or (not x136) (not x138))
+(or (not x136) x137)
+(or (not x136) x141)
+(or (not x136) (not x142))
+(or (not x136) x143)
+(or (not x144) x140)
+(or (not x144) (not x139))
+(or (not x144) (not x138))
+(or (not x144) (not x137))
+(or (not x144) x141)
+(or (not x144) (not x142))
+(or (not x144) x143)
+(or (not x145) x149)
+(or (not x145) x148)
+(or (not x145) (not x147))
+(or (not x145) x146)
+(or (not x145) x150)
+(or (not x145) (not x151))
+(or (not x145) x152)
+(or (not x153) x149)
+(or (not x153) (not x148))
+(or (not x153) (not x147))
+(or (not x153) (not x146))
+(or (not x153) x150)
+(or (not x153) (not x151))
+(or (not x153) x152)
+(or (not x154) x158)
+(or (not x154) x157)
+(or (not x154) (not x156))
+(or (not x154) x155)
+(or (not x154) x159)
+(or (not x154) (not x160))
+(or (not x154) x161)
+(or (not x162) x158)
+(or (not x162) (not x157))
+(or (not x162) (not x156))
+(or (not x162) (not x155))
+(or (not x162) x159)
+(or (not x162) (not x160))
+(or (not x162) x161)
+(or (not x163) x167)
+(or (not x163) x166)
+(or (not x163) (not x165))
+(or (not x163) x164)
+(or (not x163) x168)
+(or (not x163) (not x169))
+(or (not x163) x170)
+(or (not x171) x167)
+(or (not x171) (not x166))
+(or (not x171) (not x165))
+(or (not x171) (not x164))
+(or (not x171) x168)
+(or (not x171) (not x169))
+(or (not x171) x170)
+(or x172 (not x171))
+(or x172 (not x163))
+(or x172 (not x162))
+(or x172 (not x154))
+(or x172 (not x153))
+(or x172 (not x145))
+(or x172 (not x144))
+(or x172 (not x136))
+(or x172 (not x135))
+(or x172 (not x127))
+(or x172 (not x126))
+(or x172 (not x118))
+(or x172 (not x117))
+(or x172 (not x109))
+(or x172 (not x108))
+(or x172 (not x100))
+(or x172 (not x99))
+(or x172 (not x91))
+(or x172 (not x90))
+(or x172 (not x82))
+(or x172 (not x81))
+(or x172 (not x73))
+(or x172 (not x72))
+(or x172 (not x64))
+(or x172 (not x63))
+(or x172 (not x55))
+(or x172 (not x54))
+(or x172 (not x46))
+(or x172 (not x45))
+(or x172 (not x37))
+(or x172 (not x36))
+(or x172 (not x28))
+(or x172 (not x27))
+(or x172 (not x19))
+(or x172 (not x18))
+(or x172 (not x10))
+(or x172 (not x9))
+(or x172 (not x1))
+(or x171 x163 x162 x154 x153 x145 x144 x136 x135 x127 x126 x118 x117 x109 x108 x100 x99 x91 x90 x82 x81 x73 x72 x64 x63 x55 x54 x46 x45 x37 x36 x28 x27 x19 x18 x10 x9 x1 (not x172))
+(or x173 (not x174))
+(or x173 (not x175))
+(or x173 (not x176))
+(or x173 (not x177))
+(or x173 (not x178))
+(or x173 (not x179))
+(or x173 (not x14))
+(or x173 x13)
+(or x173 x12)
+(or x173 x11)
+(or x173 (not x180))
+(or x173 x181)
+(or x174 x175 x176 x177 x178 x179 x14 (not x13) (not x12) (not x11) x180 (not x181) (not x173))
+(or x182 (not x174))
+(or x182 (not x175))
+(or x182 (not x176))
+(or x182 (not x177))
+(or x182 (not x178))
+(or x182 (not x14))
+(or x182 x13)
+(or x182 x12)
+(or x182 (not x11))
+(or x182 x15)
+(or x182 (not x16))
+(or x182 x183)
+(or x174 x175 x176 x177 x178 x14 (not x13) (not x12) x11 (not x15) x16 (not x183) (not x182))
+(or x184 (not x14))
+(or x184 (not x13))
+(or x184 (not x12))
+(or x184 x11)
+(or x184 (not x185))
+(or x14 x13 x12 (not x11) x185 (not x184))
+(or (not x184) (not x186) (not x187) (not x188) (not x189) (not x182) (not x173) (not x190) x191)
+(or (not x191) x184)
+(or (not x191) x186)
+(or (not x191) x187)
+(or (not x191) x188)
+(or (not x191) x189)
+(or (not x191) x182)
+(or (not x191) x173)
+(or (not x191) x190)
+(or x192 (not x174))
+(or x192 (not x175))
+(or x192 (not x14))
+(or x192 (not x13))
+(or x192 x12)
+(or x192 x11)
+(or x192 (not x180))
+(or x192 x193)
+(or x174 x175 x14 x13 (not x12) (not x11) x180 (not x193) (not x192))
+(or x194 (not x174))
+(or x194 (not x14))
+(or x194 (not x13))
+(or x194 x12)
+(or x194 (not x11))
+(or x194 x196)
+(or x194 x195)
+(or x194 (not x180))
+(or x194 x197)
+(or x174 x14 x13 (not x12) x11 (not x196) (not x195) x180 (not x197) (not x194))
+(or x198 (not x199) x185)
+(or (not x185) (not x198))
+(or (not x185) x199)
+(or x198 (not x199) (not x200) x201)
+(or (not x201) (not x198))
+(or (not x201) x199)
+(or (not x201) x200)
+(or x202 (not x14))
+(or x202 (not x13))
+(or x202 (not x12))
+(or x202 x11)
+(or x202 (not x201))
+(or x14 x13 x12 (not x11) x201 (not x202))
+(or (not x202) (not x194) (not x192) (not x203) (not x204) (not x205) (not x206) (not x190) x207)
+(or (not x207) x202)
+(or (not x207) x194)
+(or (not x207) x192)
+(or (not x207) x203)
+(or (not x207) x204)
+(or (not x207) x205)
+(or (not x207) x206)
+(or (not x207) x190)
+(or x208 (not x174))
+(or x208 (not x175))
+(or x208 (not x176))
+(or x208 (not x177))
+(or x208 (not x14))
+(or x208 x13)
+(or x208 (not x12))
+(or x208 x11)
+(or x208 (not x180))
+(or x208 x209)
+(or x174 x175 x176 x177 x14 (not x13) x12 (not x11) x180 (not x209) (not x208))
+(or x210 (not x174))
+(or x210 (not x175))
+(or x210 (not x176))
+(or x210 (not x14))
+(or x210 x13)
+(or x210 (not x12))
+(or x210 (not x11))
+(or x210 x15)
+(or x210 (not x16))
+(or x210 x211)
+(or x174 x175 x176 x14 (not x13) x12 x11 (not x15) x16 (not x211) (not x210))
+(or x200 (not x198))
+(or x200 (not x212))
+(or x198 x212 (not x200))
+(or x198 (not x200) x213)
+(or (not x213) (not x198))
+(or (not x213) x200)
+(or x214 (not x14))
+(or x214 (not x13))
+(or x214 (not x12))
+(or x214 x11)
+(or x214 (not x213))
+(or x14 x13 x12 (not x11) x213 (not x214))
+(or (not x214) (not x215) (not x216) (not x210) (not x208) (not x203) (not x204) (not x217) (not x218) (not x190) x219)
+(or (not x219) x214)
+(or (not x219) x215)
+(or (not x219) x216)
+(or (not x219) x210)
+(or (not x219) x208)
+(or (not x219) x203)
+(or (not x219) x204)
+(or (not x219) x217)
+(or (not x219) x218)
+(or (not x219) x190)
+(or (not x14) (not x13) x12 x11 (not x220) x221)
+(or (not x221) x14)
+(or (not x221) x13)
+(or (not x221) (not x12))
+(or (not x221) (not x11))
+(or (not x221) x220)
+(or x190 (not x174))
+(or x190 (not x175))
+(or x190 (not x176))
+(or x190 (not x177))
+(or x190 (not x178))
+(or x190 (not x179))
+(or x190 (not x222))
+(or x190 (not x223))
+(or x190 (not x224))
+(or x190 (not x225))
+(or x190 (not x221))
+(or x174 x175 x176 x177 x178 x179 x222 x223 x224 x225 x221 (not x190))
+(or (not x14) x13 (not x12) (not x11) (not x15) x16 x225)
+(or (not x225) x14)
+(or (not x225) (not x13))
+(or (not x225) x12)
+(or (not x225) x11)
+(or (not x225) x15)
+(or (not x225) (not x16))
+(or x218 (not x174))
+(or x218 (not x175))
+(or x218 (not x176))
+(or x218 (not x177))
+(or x218 (not x178))
+(or x218 (not x179))
+(or x218 (not x222))
+(or x218 (not x223))
+(or x218 (not x224))
+(or x218 (not x225))
+(or x218 x14)
+(or x218 x13)
+(or x218 (not x12))
+(or x218 (not x11))
+(or x218 (not x180))
+(or x174 x175 x176 x177 x178 x179 x222 x223 x224 x225 (not x14) (not x13) x12 x11 x180 (not x218))
+(or x226 (not x174))
+(or x226 (not x175))
+(or x226 (not x176))
+(or x226 (not x177))
+(or x226 (not x178))
+(or x226 (not x179))
+(or x226 (not x222))
+(or x226 (not x223))
+(or x226 (not x224))
+(or x226 (not x225))
+(or x226 x14)
+(or x226 x13)
+(or x226 (not x12))
+(or x226 (not x11))
+(or x226 (not x180))
+(or x226 x227)
+(or x174 x175 x176 x177 x178 x179 x222 x223 x224 x225 (not x14) (not x13) x12 x11 x180 (not x227) (not x226))
+(or (not x14) x13 (not x12) x11 (not x220) x224)
+(or (not x224) x14)
+(or (not x224) (not x13))
+(or (not x224) x12)
+(or (not x224) (not x11))
+(or (not x224) x220)
+(or x217 (not x174))
+(or x217 (not x175))
+(or x217 (not x176))
+(or x217 (not x177))
+(or x217 (not x178))
+(or x217 (not x179))
+(or x217 (not x222))
+(or x217 (not x223))
+(or x217 (not x224))
+(or x217 x14)
+(or x217 (not x13))
+(or x217 x12)
+(or x217 x11)
+(or x217 x15)
+(or x217 (not x16))
+(or x174 x175 x176 x177 x178 x179 x222 x223 x224 (not x14) x13 (not x12) (not x11) (not x15) x16 (not x217))
+(or x228 (not x174))
+(or x228 (not x175))
+(or x228 (not x176))
+(or x228 (not x177))
+(or x228 (not x178))
+(or x228 (not x179))
+(or x228 (not x222))
+(or x228 (not x223))
+(or x228 (not x224))
+(or x228 x14)
+(or x228 (not x13))
+(or x228 x12)
+(or x228 x11)
+(or x228 x15)
+(or x228 (not x16))
+(or x228 x229)
+(or x174 x175 x176 x177 x178 x179 x222 x223 x224 (not x14) x13 (not x12) (not x11) (not x15) x16 (not x229) (not x228))
+(or (not x14) x13 x12 (not x11) (not x196) (not x195) (not x15) x16 x223)
+(or (not x223) x14)
+(or (not x223) (not x13))
+(or (not x223) (not x12))
+(or (not x223) x11)
+(or (not x223) x196)
+(or (not x223) x195)
+(or (not x223) x15)
+(or (not x223) (not x16))
+(or x206 (not x174))
+(or x206 (not x175))
+(or x206 (not x176))
+(or x206 (not x177))
+(or x206 (not x178))
+(or x206 (not x179))
+(or x206 (not x222))
+(or x206 (not x223))
+(or x206 x14)
+(or x206 (not x13))
+(or x206 x12)
+(or x206 (not x11))
+(or x206 (not x180))
+(or x174 x175 x176 x177 x178 x179 x222 x223 (not x14) x13 (not x12) x11 x180 (not x206))
+(or x230 (not x174))
+(or x230 (not x175))
+(or x230 (not x176))
+(or x230 (not x177))
+(or x230 (not x178))
+(or x230 (not x179))
+(or x230 (not x222))
+(or x230 (not x223))
+(or x230 x14)
+(or x230 (not x13))
+(or x230 x12)
+(or x230 (not x11))
+(or x230 (not x180))
+(or x230 x231)
+(or x174 x175 x176 x177 x178 x179 x222 x223 (not x14) x13 (not x12) x11 x180 (not x231) (not x230))
+(or x14 (not x13) (not x12) (not x11) (not x220) x222)
+(or (not x222) (not x14))
+(or (not x222) x13)
+(or (not x222) x12)
+(or (not x222) x11)
+(or (not x222) x220)
+(or x205 (not x174))
+(or x205 (not x175))
+(or x205 (not x176))
+(or x205 (not x177))
+(or x205 (not x178))
+(or x205 (not x179))
+(or x205 (not x222))
+(or x205 x14)
+(or x205 (not x13))
+(or x205 (not x12))
+(or x205 x11)
+(or x205 x196)
+(or x205 x195)
+(or x205 x15)
+(or x205 (not x16))
+(or x174 x175 x176 x177 x178 x179 x222 (not x14) x13 x12 (not x11) (not x196) (not x195) (not x15) x16 (not x205))
+(or x232 (not x174))
+(or x232 (not x175))
+(or x232 (not x176))
+(or x232 (not x177))
+(or x232 (not x178))
+(or x232 (not x179))
+(or x232 (not x222))
+(or x232 x14)
+(or x232 (not x13))
+(or x232 (not x12))
+(or x232 x11)
+(or x232 x196)
+(or x232 x195)
+(or x232 x15)
+(or x232 (not x16))
+(or x232 x233)
+(or x174 x175 x176 x177 x178 x179 x222 (not x14) x13 x12 (not x11) (not x196) (not x195) (not x15) x16 (not x233) (not x232))
+(or x14 (not x13) (not x12) x11 (not x15) x16 x179)
+(or (not x179) (not x14))
+(or (not x179) x13)
+(or (not x179) x12)
+(or (not x179) (not x11))
+(or (not x179) x15)
+(or (not x179) (not x16))
+(or x204 (not x174))
+(or x204 (not x175))
+(or x204 (not x176))
+(or x204 (not x177))
+(or x204 (not x178))
+(or x204 (not x179))
+(or x204 (not x14))
+(or x204 x13)
+(or x204 x12)
+(or x204 x11)
+(or x204 (not x180))
+(or x204 (not x181))
+(or x174 x175 x176 x177 x178 x179 x14 (not x13) (not x12) (not x11) x180 x181 (not x204))
+(or x14 (not x13) x12 (not x11) (not x220) x178)
+(or (not x178) (not x14))
+(or (not x178) x13)
+(or (not x178) (not x12))
+(or (not x178) x11)
+(or (not x178) x220)
+(or x203 (not x174))
+(or x203 (not x175))
+(or x203 (not x176))
+(or x203 (not x177))
+(or x203 (not x178))
+(or x203 (not x14))
+(or x203 x13)
+(or x203 x12)
+(or x203 (not x11))
+(or x203 x15)
+(or x203 (not x16))
+(or x203 (not x183))
+(or x174 x175 x176 x177 x178 x14 (not x13) (not x12) x11 (not x15) x16 x183 (not x203))
+(or x14 (not x13) x12 x11 (not x15) x16 x177)
+(or (not x177) (not x14))
+(or (not x177) x13)
+(or (not x177) (not x12))
+(or (not x177) (not x11))
+(or (not x177) x15)
+(or (not x177) (not x16))
+(or x189 (not x174))
+(or x189 (not x175))
+(or x189 (not x176))
+(or x189 (not x177))
+(or x189 (not x14))
+(or x189 x13)
+(or x189 (not x12))
+(or x189 x11)
+(or x189 (not x180))
+(or x174 x175 x176 x177 x14 (not x13) x12 (not x11) x180 (not x189))
+(or x234 (not x174))
+(or x234 (not x175))
+(or x234 (not x176))
+(or x234 (not x177))
+(or x234 (not x14))
+(or x234 x13)
+(or x234 (not x12))
+(or x234 x11)
+(or x234 (not x180))
+(or x234 (not x209))
+(or x174 x175 x176 x177 x14 (not x13) x12 (not x11) x180 x209 (not x234))
+(or x14 x13 (not x12) (not x11) (not x220) x176)
+(or (not x176) (not x14))
+(or (not x176) (not x13))
+(or (not x176) x12)
+(or (not x176) x11)
+(or (not x176) x220)
+(or x188 (not x174))
+(or x188 (not x175))
+(or x188 (not x176))
+(or x188 (not x14))
+(or x188 x13)
+(or x188 (not x12))
+(or x188 (not x11))
+(or x188 x15)
+(or x188 (not x16))
+(or x174 x175 x176 x14 (not x13) x12 x11 (not x15) x16 (not x188))
+(or x235 (not x174))
+(or x235 (not x175))
+(or x235 (not x176))
+(or x235 (not x14))
+(or x235 x13)
+(or x235 (not x12))
+(or x235 (not x11))
+(or x235 x15)
+(or x235 (not x16))
+(or x235 (not x211))
+(or x174 x175 x176 x14 (not x13) x12 x11 (not x15) x16 x211 (not x235))
+(or x220 x15)
+(or x220 (not x16))
+(or (not x15) x16 (not x220))
+(or x14 x13 (not x12) x11 (not x196) (not x195) (not x220) x175)
+(or (not x175) (not x14))
+(or (not x175) (not x13))
+(or (not x175) x12)
+(or (not x175) (not x11))
+(or (not x175) x196)
+(or (not x175) x195)
+(or (not x175) x220)
+(or x187 (not x174))
+(or x187 (not x175))
+(or x187 (not x14))
+(or x187 (not x13))
+(or x187 x12)
+(or x187 x11)
+(or x187 (not x180))
+(or x174 x175 x14 x13 (not x12) (not x11) x180 (not x187))
+(or x216 (not x174))
+(or x216 (not x175))
+(or x216 (not x14))
+(or x216 (not x13))
+(or x216 x12)
+(or x216 x11)
+(or x216 (not x180))
+(or x216 (not x193))
+(or x174 x175 x14 x13 (not x12) (not x11) x180 x193 (not x216))
+(or (not x15) x16 x180)
+(or (not x180) x15)
+(or (not x180) (not x16))
+(or x14 x13 x12 (not x11) x174)
+(or (not x174) (not x14))
+(or (not x174) (not x13))
+(or (not x174) (not x12))
+(or (not x174) x11)
+(or x186 (not x174))
+(or x186 (not x14))
+(or x186 (not x13))
+(or x186 x12)
+(or x186 (not x11))
+(or x186 x196)
+(or x186 x195)
+(or x186 (not x180))
+(or x174 x14 x13 (not x12) x11 (not x196) (not x195) x180 (not x186))
+(or x215 (not x174))
+(or x215 (not x14))
+(or x215 (not x13))
+(or x215 x12)
+(or x215 (not x11))
+(or x215 x196)
+(or x215 x195)
+(or x215 (not x180))
+(or x215 (not x197))
+(or x174 x14 x13 (not x12) x11 (not x196) (not x195) x180 x197 (not x215))
+(or x199 (not x198))
+(or x199 x212)
+(or x198 (not x212) (not x199))
+(or x236 (not x14))
+(or x236 (not x13))
+(or x236 (not x12))
+(or x236 x11)
+(or x236 (not x198))
+(or x236 x212)
+(or x14 x13 x12 (not x11) x198 (not x212) (not x236))
+(or (not x236) (not x215) (not x216) (not x235) (not x234) (not x203) (not x204) (not x232) (not x230) (not x228) (not x226) (not x190) x237)
+(or (not x237) x236)
+(or (not x237) x215)
+(or (not x237) x216)
+(or (not x237) x235)
+(or (not x237) x234)
+(or (not x237) x203)
+(or (not x237) x204)
+(or (not x237) x232)
+(or (not x237) x230)
+(or (not x237) x228)
+(or (not x237) x226)
+(or (not x237) x190)
+(or x238 (not x239))
+(or x238 (not x240))
+(or x238 (not x241))
+(or x238 (not x242))
+(or x238 (not x243))
+(or x238 (not x244))
+(or x238 (not x245))
+(or x238 (not x246))
+(or x238 (not x243))
+(or x238 (not x247))
+(or x238 (not x248))
+(or x238 (not x245))
+(or x238 (not x249))
+(or x239 x240 x241 x242 x243 x244 x245 x246 x243 x247 x248 x245 x249 (not x238))
+(or x250 (not x251))
+(or x250 x252)
+(or x250 (not x253))
+(or x250 (not x254))
+(or x250 (not x255))
+(or x250 (not x256))
+(or x250 (not x257))
+(or x250 (not x258))
+(or x250 (not x259))
+(or x250 (not x260))
+(or x250 (not x261))
+(or x250 (not x262))
+(or x250 (not x263))
+(or x251 (not x252) x253 x254 x255 x256 x257 x258 x259 x260 x261 x262 x263 (not x250))
+(or x264 (not x256))
+(or x264 (not x263))
+(or x264 (not x262))
+(or x264 (not x258))
+(or x264 (not x259))
+(or x264 (not x251))
+(or x264 (not x260))
+(or x264 x261)
+(or x264 (not x257))
+(or x264 (not x252))
+(or x264 (not x253))
+(or x264 (not x254))
+(or x264 (not x255))
+(or x256 x263 x262 x258 x259 x251 x260 (not x261) x257 x252 x253 x254 x255 (not x264))
+(or (not x264) (not x250) (not x238) x265)
+(or (not x265) x264)
+(or (not x265) x250)
+(or (not x265) x238)
+(or x266 (not x270))
+(or x266 x269)
+(or x266 x268)
+(or x266 (not x267))
+(or x270 (not x269) (not x268) x267 (not x266))
+(or x271 (not x270))
+(or x271 x269)
+(or x271 (not x268))
+(or x271 x267)
+(or x270 (not x269) x268 (not x267) (not x271))
+(or x272 (not x270))
+(or x272 (not x269))
+(or x272 (not x268))
+(or x272 x267)
+(or x270 x269 x268 (not x267) (not x272))
+(or x273 (not x270))
+(or x273 (not x269))
+(or x273 x268)
+(or x273 x267)
+(or x270 x269 (not x268) (not x267) (not x273))
+(or x274 (not x278))
+(or x274 x277)
+(or x274 x276)
+(or x274 (not x275))
+(or x278 (not x277) (not x276) x275 (not x274))
+(or x279 (not x278))
+(or x279 x277)
+(or x279 (not x276))
+(or x279 x275)
+(or x278 (not x277) x276 (not x275) (not x279))
+(or x280 (not x278))
+(or x280 (not x277))
+(or x280 (not x276))
+(or x280 x275)
+(or x278 x277 x276 (not x275) (not x280))
+(or x281 (not x278))
+(or x281 (not x277))
+(or x281 x276)
+(or x281 x275)
+(or x278 x277 (not x276) (not x275) (not x281))
+(or (not x281) (not x280) (not x279) (not x274) (not x273) (not x272) (not x271) (not x266) x282 x283 x241)
+(or (not x241) x281)
+(or (not x241) x280)
+(or (not x241) x279)
+(or (not x241) x274)
+(or (not x241) x273)
+(or (not x241) x272)
+(or (not x241) x271)
+(or (not x241) x266)
+(or (not x241) (not x282))
+(or (not x241) (not x283))
+(or x284 (not x241))
+(or x284 (not x242))
+(or x284 (not x243))
+(or x284 (not x244))
+(or x284 (not x245))
+(or x284 (not x246))
+(or x284 (not x243))
+(or x284 (not x247))
+(or x284 (not x248))
+(or x284 (not x245))
+(or x284 (not x249))
+(or x284 x262)
+(or x241 x242 x243 x244 x245 x246 x243 x247 x248 x245 x249 (not x262) (not x284))
+(or (not x284) (not x240) x285)
+(or (not x285) x284)
+(or (not x285) x240)
+(or x270 (not x269) (not x268) x267 x245)
+(or (not x245) (not x270))
+(or (not x245) x269)
+(or (not x245) x268)
+(or (not x245) (not x267))
+(or x270 (not x269) x268 (not x267) x249)
+(or (not x249) (not x270))
+(or (not x249) x269)
+(or (not x249) (not x268))
+(or (not x249) x267)
+(or x270 (not x269) x268 x267 x248)
+(or (not x248) (not x270))
+(or (not x248) x269)
+(or (not x248) (not x268))
+(or (not x248) (not x267))
+(or (not x286) (not x270))
+(or (not x286) (not x269))
+(or (not x286) x268)
+(or (not x286) x267)
+(or (not x287) (not x270))
+(or (not x287) (not x269))
+(or (not x287) x268)
+(or (not x287) (not x267))
+(or x270 x269 x268 (not x267) x244)
+(or (not x244) (not x270))
+(or (not x244) (not x269))
+(or (not x244) (not x268))
+(or (not x244) x267)
+(or (not x288) (not x270))
+(or (not x288) (not x269))
+(or (not x288) (not x268))
+(or (not x288) (not x267))
+(or x289 (not x288))
+(or x289 (not x244))
+(or x289 (not x287))
+(or x289 (not x286))
+(or x289 (not x248))
+(or x289 (not x249))
+(or x288 x244 x287 x286 x248 x249 (not x289))
+(or x278 (not x277) (not x276) x275 x243)
+(or (not x243) (not x278))
+(or (not x243) x277)
+(or (not x243) x276)
+(or (not x243) (not x275))
+(or x278 (not x277) x276 (not x275) x247)
+(or (not x247) (not x278))
+(or (not x247) x277)
+(or (not x247) (not x276))
+(or (not x247) x275)
+(or x278 (not x277) x276 x275 x246)
+(or (not x246) (not x278))
+(or (not x246) x277)
+(or (not x246) (not x276))
+(or (not x246) (not x275))
+(or (not x290) (not x278))
+(or (not x290) (not x277))
+(or (not x290) x276)
+(or (not x290) x275)
+(or (not x291) (not x278))
+(or (not x291) (not x277))
+(or (not x291) x276)
+(or (not x291) (not x275))
+(or x278 x277 x276 (not x275) x242)
+(or (not x242) (not x278))
+(or (not x242) (not x277))
+(or (not x242) (not x276))
+(or (not x242) x275)
+(or (not x292) (not x278))
+(or (not x292) (not x277))
+(or (not x292) (not x276))
+(or (not x292) (not x275))
+(or x293 (not x292))
+(or x293 (not x242))
+(or x293 (not x291))
+(or x293 (not x290))
+(or x293 (not x246))
+(or x293 (not x247))
+(or x292 x242 x291 x290 x246 x247 (not x293))
+(or x294 (not x295))
+(or x294 (not x296))
+(or x294 (not x297))
+(or x294 (not x298))
+(or x294 (not x299))
+(or x294 (not x300))
+(or x294 (not x23))
+(or x294 x22)
+(or x294 x21)
+(or x294 x20)
+(or x294 (not x301))
+(or x294 x302)
+(or x295 x296 x297 x298 x299 x300 x23 (not x22) (not x21) (not x20) x301 (not x302) (not x294))
+(or x303 (not x295))
+(or x303 (not x296))
+(or x303 (not x297))
+(or x303 (not x298))
+(or x303 (not x299))
+(or x303 (not x23))
+(or x303 x22)
+(or x303 x21)
+(or x303 (not x20))
+(or x303 x24)
+(or x303 (not x25))
+(or x303 x304)
+(or x295 x296 x297 x298 x299 x23 (not x22) (not x21) x20 (not x24) x25 (not x304) (not x303))
+(or x305 (not x23))
+(or x305 (not x22))
+(or x305 (not x21))
+(or x305 x20)
+(or x305 (not x306))
+(or x23 x22 x21 (not x20) x306 (not x305))
+(or (not x305) (not x307) (not x308) (not x309) (not x310) (not x303) (not x294) (not x311) x312)
+(or (not x312) x305)
+(or (not x312) x307)
+(or (not x312) x308)
+(or (not x312) x309)
+(or (not x312) x310)
+(or (not x312) x303)
+(or (not x312) x294)
+(or (not x312) x311)
+(or x313 (not x295))
+(or x313 (not x296))
+(or x313 (not x23))
+(or x313 (not x22))
+(or x313 x21)
+(or x313 x20)
+(or x313 (not x301))
+(or x313 x314)
+(or x295 x296 x23 x22 (not x21) (not x20) x301 (not x314) (not x313))
+(or x315 (not x295))
+(or x315 (not x23))
+(or x315 (not x22))
+(or x315 x21)
+(or x315 (not x20))
+(or x315 x317)
+(or x315 x316)
+(or x315 (not x301))
+(or x315 x318)
+(or x295 x23 x22 (not x21) x20 (not x317) (not x316) x301 (not x318) (not x315))
+(or x319 (not x320) x306)
+(or (not x306) (not x319))
+(or (not x306) x320)
+(or x319 (not x320) (not x321) x322)
+(or (not x322) (not x319))
+(or (not x322) x320)
+(or (not x322) x321)
+(or x323 (not x23))
+(or x323 (not x22))
+(or x323 (not x21))
+(or x323 x20)
+(or x323 (not x322))
+(or x23 x22 x21 (not x20) x322 (not x323))
+(or (not x323) (not x315) (not x313) (not x324) (not x325) (not x326) (not x327) (not x311) x328)
+(or (not x328) x323)
+(or (not x328) x315)
+(or (not x328) x313)
+(or (not x328) x324)
+(or (not x328) x325)
+(or (not x328) x326)
+(or (not x328) x327)
+(or (not x328) x311)
+(or x329 (not x295))
+(or x329 (not x296))
+(or x329 (not x297))
+(or x329 (not x298))
+(or x329 (not x23))
+(or x329 x22)
+(or x329 (not x21))
+(or x329 x20)
+(or x329 (not x301))
+(or x329 x330)
+(or x295 x296 x297 x298 x23 (not x22) x21 (not x20) x301 (not x330) (not x329))
+(or x331 (not x295))
+(or x331 (not x296))
+(or x331 (not x297))
+(or x331 (not x23))
+(or x331 x22)
+(or x331 (not x21))
+(or x331 (not x20))
+(or x331 x24)
+(or x331 (not x25))
+(or x331 x332)
+(or x295 x296 x297 x23 (not x22) x21 x20 (not x24) x25 (not x332) (not x331))
+(or x321 (not x319))
+(or x321 (not x333))
+(or x319 x333 (not x321))
+(or x319 (not x321) x334)
+(or (not x334) (not x319))
+(or (not x334) x321)
+(or x335 (not x23))
+(or x335 (not x22))
+(or x335 (not x21))
+(or x335 x20)
+(or x335 (not x334))
+(or x23 x22 x21 (not x20) x334 (not x335))
+(or (not x335) (not x336) (not x337) (not x331) (not x329) (not x324) (not x325) (not x338) (not x339) (not x311) x340)
+(or (not x340) x335)
+(or (not x340) x336)
+(or (not x340) x337)
+(or (not x340) x331)
+(or (not x340) x329)
+(or (not x340) x324)
+(or (not x340) x325)
+(or (not x340) x338)
+(or (not x340) x339)
+(or (not x340) x311)
+(or (not x23) (not x22) x21 x20 (not x341) x342)
+(or (not x342) x23)
+(or (not x342) x22)
+(or (not x342) (not x21))
+(or (not x342) (not x20))
+(or (not x342) x341)
+(or x311 (not x295))
+(or x311 (not x296))
+(or x311 (not x297))
+(or x311 (not x298))
+(or x311 (not x299))
+(or x311 (not x300))
+(or x311 (not x343))
+(or x311 (not x344))
+(or x311 (not x345))
+(or x311 (not x346))
+(or x311 (not x342))
+(or x295 x296 x297 x298 x299 x300 x343 x344 x345 x346 x342 (not x311))
+(or (not x23) x22 (not x21) (not x20) (not x24) x25 x346)
+(or (not x346) x23)
+(or (not x346) (not x22))
+(or (not x346) x21)
+(or (not x346) x20)
+(or (not x346) x24)
+(or (not x346) (not x25))
+(or x339 (not x295))
+(or x339 (not x296))
+(or x339 (not x297))
+(or x339 (not x298))
+(or x339 (not x299))
+(or x339 (not x300))
+(or x339 (not x343))
+(or x339 (not x344))
+(or x339 (not x345))
+(or x339 (not x346))
+(or x339 x23)
+(or x339 x22)
+(or x339 (not x21))
+(or x339 (not x20))
+(or x339 (not x301))
+(or x295 x296 x297 x298 x299 x300 x343 x344 x345 x346 (not x23) (not x22) x21 x20 x301 (not x339))
+(or x347 (not x295))
+(or x347 (not x296))
+(or x347 (not x297))
+(or x347 (not x298))
+(or x347 (not x299))
+(or x347 (not x300))
+(or x347 (not x343))
+(or x347 (not x344))
+(or x347 (not x345))
+(or x347 (not x346))
+(or x347 x23)
+(or x347 x22)
+(or x347 (not x21))
+(or x347 (not x20))
+(or x347 (not x301))
+(or x347 x348)
+(or x295 x296 x297 x298 x299 x300 x343 x344 x345 x346 (not x23) (not x22) x21 x20 x301 (not x348) (not x347))
+(or (not x23) x22 (not x21) x20 (not x341) x345)
+(or (not x345) x23)
+(or (not x345) (not x22))
+(or (not x345) x21)
+(or (not x345) (not x20))
+(or (not x345) x341)
+(or x338 (not x295))
+(or x338 (not x296))
+(or x338 (not x297))
+(or x338 (not x298))
+(or x338 (not x299))
+(or x338 (not x300))
+(or x338 (not x343))
+(or x338 (not x344))
+(or x338 (not x345))
+(or x338 x23)
+(or x338 (not x22))
+(or x338 x21)
+(or x338 x20)
+(or x338 x24)
+(or x338 (not x25))
+(or x295 x296 x297 x298 x299 x300 x343 x344 x345 (not x23) x22 (not x21) (not x20) (not x24) x25 (not x338))
+(or x349 (not x295))
+(or x349 (not x296))
+(or x349 (not x297))
+(or x349 (not x298))
+(or x349 (not x299))
+(or x349 (not x300))
+(or x349 (not x343))
+(or x349 (not x344))
+(or x349 (not x345))
+(or x349 x23)
+(or x349 (not x22))
+(or x349 x21)
+(or x349 x20)
+(or x349 x24)
+(or x349 (not x25))
+(or x349 x350)
+(or x295 x296 x297 x298 x299 x300 x343 x344 x345 (not x23) x22 (not x21) (not x20) (not x24) x25 (not x350) (not x349))
+(or (not x23) x22 x21 (not x20) (not x317) (not x316) (not x24) x25 x344)
+(or (not x344) x23)
+(or (not x344) (not x22))
+(or (not x344) (not x21))
+(or (not x344) x20)
+(or (not x344) x317)
+(or (not x344) x316)
+(or (not x344) x24)
+(or (not x344) (not x25))
+(or x327 (not x295))
+(or x327 (not x296))
+(or x327 (not x297))
+(or x327 (not x298))
+(or x327 (not x299))
+(or x327 (not x300))
+(or x327 (not x343))
+(or x327 (not x344))
+(or x327 x23)
+(or x327 (not x22))
+(or x327 x21)
+(or x327 (not x20))
+(or x327 (not x301))
+(or x295 x296 x297 x298 x299 x300 x343 x344 (not x23) x22 (not x21) x20 x301 (not x327))
+(or x351 (not x295))
+(or x351 (not x296))
+(or x351 (not x297))
+(or x351 (not x298))
+(or x351 (not x299))
+(or x351 (not x300))
+(or x351 (not x343))
+(or x351 (not x344))
+(or x351 x23)
+(or x351 (not x22))
+(or x351 x21)
+(or x351 (not x20))
+(or x351 (not x301))
+(or x351 x352)
+(or x295 x296 x297 x298 x299 x300 x343 x344 (not x23) x22 (not x21) x20 x301 (not x352) (not x351))
+(or x23 (not x22) (not x21) (not x20) (not x341) x343)
+(or (not x343) (not x23))
+(or (not x343) x22)
+(or (not x343) x21)
+(or (not x343) x20)
+(or (not x343) x341)
+(or x326 (not x295))
+(or x326 (not x296))
+(or x326 (not x297))
+(or x326 (not x298))
+(or x326 (not x299))
+(or x326 (not x300))
+(or x326 (not x343))
+(or x326 x23)
+(or x326 (not x22))
+(or x326 (not x21))
+(or x326 x20)
+(or x326 x317)
+(or x326 x316)
+(or x326 x24)
+(or x326 (not x25))
+(or x295 x296 x297 x298 x299 x300 x343 (not x23) x22 x21 (not x20) (not x317) (not x316) (not x24) x25 (not x326))
+(or x353 (not x295))
+(or x353 (not x296))
+(or x353 (not x297))
+(or x353 (not x298))
+(or x353 (not x299))
+(or x353 (not x300))
+(or x353 (not x343))
+(or x353 x23)
+(or x353 (not x22))
+(or x353 (not x21))
+(or x353 x20)
+(or x353 x317)
+(or x353 x316)
+(or x353 x24)
+(or x353 (not x25))
+(or x353 x354)
+(or x295 x296 x297 x298 x299 x300 x343 (not x23) x22 x21 (not x20) (not x317) (not x316) (not x24) x25 (not x354) (not x353))
+(or x23 (not x22) (not x21) x20 (not x24) x25 x300)
+(or (not x300) (not x23))
+(or (not x300) x22)
+(or (not x300) x21)
+(or (not x300) (not x20))
+(or (not x300) x24)
+(or (not x300) (not x25))
+(or x325 (not x295))
+(or x325 (not x296))
+(or x325 (not x297))
+(or x325 (not x298))
+(or x325 (not x299))
+(or x325 (not x300))
+(or x325 (not x23))
+(or x325 x22)
+(or x325 x21)
+(or x325 x20)
+(or x325 (not x301))
+(or x325 (not x302))
+(or x295 x296 x297 x298 x299 x300 x23 (not x22) (not x21) (not x20) x301 x302 (not x325))
+(or x23 (not x22) x21 (not x20) (not x341) x299)
+(or (not x299) (not x23))
+(or (not x299) x22)
+(or (not x299) (not x21))
+(or (not x299) x20)
+(or (not x299) x341)
+(or x324 (not x295))
+(or x324 (not x296))
+(or x324 (not x297))
+(or x324 (not x298))
+(or x324 (not x299))
+(or x324 (not x23))
+(or x324 x22)
+(or x324 x21)
+(or x324 (not x20))
+(or x324 x24)
+(or x324 (not x25))
+(or x324 (not x304))
+(or x295 x296 x297 x298 x299 x23 (not x22) (not x21) x20 (not x24) x25 x304 (not x324))
+(or x23 (not x22) x21 x20 (not x24) x25 x298)
+(or (not x298) (not x23))
+(or (not x298) x22)
+(or (not x298) (not x21))
+(or (not x298) (not x20))
+(or (not x298) x24)
+(or (not x298) (not x25))
+(or x310 (not x295))
+(or x310 (not x296))
+(or x310 (not x297))
+(or x310 (not x298))
+(or x310 (not x23))
+(or x310 x22)
+(or x310 (not x21))
+(or x310 x20)
+(or x310 (not x301))
+(or x295 x296 x297 x298 x23 (not x22) x21 (not x20) x301 (not x310))
+(or x355 (not x295))
+(or x355 (not x296))
+(or x355 (not x297))
+(or x355 (not x298))
+(or x355 (not x23))
+(or x355 x22)
+(or x355 (not x21))
+(or x355 x20)
+(or x355 (not x301))
+(or x355 (not x330))
+(or x295 x296 x297 x298 x23 (not x22) x21 (not x20) x301 x330 (not x355))
+(or x23 x22 (not x21) (not x20) (not x341) x297)
+(or (not x297) (not x23))
+(or (not x297) (not x22))
+(or (not x297) x21)
+(or (not x297) x20)
+(or (not x297) x341)
+(or x309 (not x295))
+(or x309 (not x296))
+(or x309 (not x297))
+(or x309 (not x23))
+(or x309 x22)
+(or x309 (not x21))
+(or x309 (not x20))
+(or x309 x24)
+(or x309 (not x25))
+(or x295 x296 x297 x23 (not x22) x21 x20 (not x24) x25 (not x309))
+(or x356 (not x295))
+(or x356 (not x296))
+(or x356 (not x297))
+(or x356 (not x23))
+(or x356 x22)
+(or x356 (not x21))
+(or x356 (not x20))
+(or x356 x24)
+(or x356 (not x25))
+(or x356 (not x332))
+(or x295 x296 x297 x23 (not x22) x21 x20 (not x24) x25 x332 (not x356))
+(or x23 x22 (not x21) x20 (not x317) (not x316) (not x341) x296)
+(or (not x296) (not x23))
+(or (not x296) (not x22))
+(or (not x296) x21)
+(or (not x296) (not x20))
+(or (not x296) x317)
+(or (not x296) x316)
+(or (not x296) x341)
+(or x308 (not x295))
+(or x308 (not x296))
+(or x308 (not x23))
+(or x308 (not x22))
+(or x308 x21)
+(or x308 x20)
+(or x308 (not x301))
+(or x295 x296 x23 x22 (not x21) (not x20) x301 (not x308))
+(or x337 (not x295))
+(or x337 (not x296))
+(or x337 (not x23))
+(or x337 (not x22))
+(or x337 x21)
+(or x337 x20)
+(or x337 (not x301))
+(or x337 (not x314))
+(or x295 x296 x23 x22 (not x21) (not x20) x301 x314 (not x337))
+(or x23 x22 x21 (not x20) x295)
+(or (not x295) (not x23))
+(or (not x295) (not x22))
+(or (not x295) (not x21))
+(or (not x295) x20)
+(or x307 (not x295))
+(or x307 (not x23))
+(or x307 (not x22))
+(or x307 x21)
+(or x307 (not x20))
+(or x307 x317)
+(or x307 x316)
+(or x307 (not x301))
+(or x295 x23 x22 (not x21) x20 (not x317) (not x316) x301 (not x307))
+(or x336 (not x295))
+(or x336 (not x23))
+(or x336 (not x22))
+(or x336 x21)
+(or x336 (not x20))
+(or x336 x317)
+(or x336 x316)
+(or x336 (not x301))
+(or x336 (not x318))
+(or x295 x23 x22 (not x21) x20 (not x317) (not x316) x301 x318 (not x336))
+(or x320 (not x319))
+(or x320 x333)
+(or x319 (not x333) (not x320))
+(or x357 (not x23))
+(or x357 (not x22))
+(or x357 (not x21))
+(or x357 x20)
+(or x357 (not x319))
+(or x357 x333)
+(or x23 x22 x21 (not x20) x319 (not x333) (not x357))
+(or (not x357) (not x336) (not x337) (not x356) (not x355) (not x324) (not x325) (not x353) (not x351) (not x349) (not x347) (not x311) x358)
+(or (not x358) x357)
+(or (not x358) x336)
+(or (not x358) x337)
+(or (not x358) x356)
+(or (not x358) x355)
+(or (not x358) x324)
+(or (not x358) x325)
+(or (not x358) x353)
+(or (not x358) x351)
+(or (not x358) x349)
+(or (not x358) x347)
+(or (not x358) x311)
+(or x359 x360 x361)
+(or (not x361) (not x359))
+(or (not x361) (not x360))
+(or x362 x317)
+(or x362 x316)
+(or x362 (not x363))
+(or x362 (not x364))
+(or x362 (not x361))
+(or (not x317) (not x316) x363 x364 x361 (not x362))
+(or (not x365) (not x362) x366)
+(or (not x366) x365)
+(or (not x366) x362)
+(or x367 (not x359))
+(or x367 (not x368))
+(or x359 x368 (not x367))
+(or (not x360) (not x367) x369)
+(or (not x369) x360)
+(or (not x369) x367)
+(or x370 (not x369))
+(or x370 (not x366))
+(or x369 x366 (not x370))
+(or x371 (not x317) (not x316) (not x372) (not x373) x368)
+(or (not x368) (not x371))
+(or (not x368) x317)
+(or (not x368) x316)
+(or (not x368) x372)
+(or (not x368) x373)
+(or (not x359) x371 (not x317) (not x316) (not x372) (not x373) x374)
+(or (not x374) x359)
+(or (not x374) (not x371))
+(or (not x374) x317)
+(or (not x374) x316)
+(or (not x374) x372)
+(or (not x374) x373)
+(or x375 x317)
+(or x375 x316)
+(or x375 (not x363))
+(or x375 (not x364))
+(or x375 x359)
+(or (not x317) (not x316) x363 x364 (not x359) (not x375))
+(or x365 (not x371))
+(or x365 x317)
+(or x365 x316)
+(or x365 (not x363))
+(or x365 (not x364))
+(or x371 (not x317) (not x316) x363 x364 (not x365))
+(or (not x365) (not x375) x376)
+(or (not x376) x365)
+(or (not x376) x375)
+(or x377 (not x376))
+(or x377 (not x374))
+(or x376 x374 (not x377))
+(or (not x378) (not x317) (not x316) (not x379) (not x380) (not x381) (not x382) x371 x383 x384 x385 x386 x387 (not x378) x388 x389 x390 x391 x392 x393 x394)
+(or (not x394) x378)
+(or (not x394) x317)
+(or (not x394) x316)
+(or (not x394) x379)
+(or (not x394) x380)
+(or (not x394) x381)
+(or (not x394) x382)
+(or (not x394) (not x371))
+(or (not x394) (not x383))
+(or (not x394) (not x384))
+(or (not x394) (not x385))
+(or (not x394) (not x386))
+(or (not x394) (not x387))
+(or (not x394) x378)
+(or (not x394) (not x388))
+(or (not x394) (not x389))
+(or (not x394) (not x390))
+(or (not x394) (not x391))
+(or (not x394) (not x392))
+(or (not x394) (not x393))
+(or (not x395) (not x396) (not x317) (not x316) (not x371) x378 x383 x384 x385 x386 x388 x389 x390 x391 x392 x393 x397)
+(or (not x397) x395)
+(or (not x397) x396)
+(or (not x397) x317)
+(or (not x397) x316)
+(or (not x397) x371)
+(or (not x397) (not x378))
+(or (not x397) (not x383))
+(or (not x397) (not x384))
+(or (not x397) (not x385))
+(or (not x397) (not x386))
+(or (not x397) (not x388))
+(or (not x397) (not x389))
+(or (not x397) (not x390))
+(or (not x397) (not x391))
+(or (not x397) (not x392))
+(or (not x397) (not x393))
+(or x398 (not x397))
+(or x398 (not x394))
+(or x397 x394 (not x398))
+(or x383 x385 x386 (not x384) x388 x389 x390 x391 x392 x393 x371 x378 x399)
+(or (not x399) (not x383))
+(or (not x399) (not x385))
+(or (not x399) (not x386))
+(or (not x399) x384)
+(or (not x399) (not x388))
+(or (not x399) (not x389))
+(or (not x399) (not x390))
+(or (not x399) (not x391))
+(or (not x399) (not x392))
+(or (not x399) (not x393))
+(or (not x399) (not x371))
+(or (not x399) (not x378))
+(or (not x403) x402 x401 x400 (not x392) x393 x388 x378 x371 x390 x391 (not x404) (not x405) x389 x383 x384 x385 x386 x406)
+(or (not x406) x403)
+(or (not x406) (not x402))
+(or (not x406) (not x401))
+(or (not x406) (not x400))
+(or (not x406) x392)
+(or (not x406) (not x393))
+(or (not x406) (not x388))
+(or (not x406) (not x378))
+(or (not x406) (not x371))
+(or (not x406) (not x390))
+(or (not x406) (not x391))
+(or (not x406) x404)
+(or (not x406) x405)
+(or (not x406) (not x389))
+(or (not x406) (not x383))
+(or (not x406) (not x384))
+(or (not x406) (not x385))
+(or (not x406) (not x386))
+(or x407 (not x406))
+(or x407 (not x399))
+(or x406 x399 (not x407))
+(or (not x317) (not x316) (not x408) (not x407) x409)
+(or (not x409) x317)
+(or (not x409) x316)
+(or (not x409) x408)
+(or (not x409) x407)
+(or (not x317) (not x316) (not x371) x378 x383 x384 x385 x386 x388 x389 x390 x391 x392 x393 (not x410) (not x411) (not x412) (not x413) (not x414) (not x415) x416)
+(or (not x416) x317)
+(or (not x416) x316)
+(or (not x416) x371)
+(or (not x416) (not x378))
+(or (not x416) (not x383))
+(or (not x416) (not x384))
+(or (not x416) (not x385))
+(or (not x416) (not x386))
+(or (not x416) (not x388))
+(or (not x416) (not x389))
+(or (not x416) (not x390))
+(or (not x416) (not x391))
+(or (not x416) (not x392))
+(or (not x416) (not x393))
+(or (not x416) x410)
+(or (not x416) x411)
+(or (not x416) x412)
+(or (not x416) x413)
+(or (not x416) x414)
+(or (not x416) x415)
+(or (not x408) x384 x385 x386 x388 x389 x390 x391 x392 x393 x371 x378 x417)
+(or (not x417) x408)
+(or (not x417) (not x384))
+(or (not x417) (not x385))
+(or (not x417) (not x386))
+(or (not x417) (not x388))
+(or (not x417) (not x389))
+(or (not x417) (not x390))
+(or (not x417) (not x391))
+(or (not x417) (not x392))
+(or (not x417) (not x393))
+(or (not x417) (not x371))
+(or (not x417) (not x378))
+(or x418 (not x419))
+(or x418 (not x417))
+(or x419 x417 (not x418))
+(or (not x317) (not x316) (not x383) (not x418) x420)
+(or (not x420) x317)
+(or (not x420) x316)
+(or (not x420) x383)
+(or (not x420) x418)
+(or x388 x390 (not x391) (not x317) (not x316) x392 x393 x371 x378 x389 x383 x384 x385 x386 x421)
+(or (not x421) (not x388))
+(or (not x421) (not x390))
+(or (not x421) x391)
+(or (not x421) x317)
+(or (not x421) x316)
+(or (not x421) (not x392))
+(or (not x421) (not x393))
+(or (not x421) (not x371))
+(or (not x421) (not x378))
+(or (not x421) (not x389))
+(or (not x421) (not x383))
+(or (not x421) (not x384))
+(or (not x421) (not x385))
+(or (not x421) (not x386))
+(or x422 (not x421))
+(or x422 (not x420))
+(or x421 x420 (not x422))
+(or x423 x384)
+(or x423 x393)
+(or (not x384) (not x393) (not x423))
+(or x424 (not x384))
+(or x424 (not x408))
+(or x424 (not x392))
+(or x384 x408 x392 (not x424))
+(or x393 x384 (not x425) x426)
+(or (not x426) (not x393))
+(or (not x426) (not x384))
+(or (not x426) x425)
+(or x427 x392)
+(or x427 (not x426))
+(or (not x392) x426 (not x427))
+(or x428 x408)
+(or x428 (not x392))
+(or x428 (not x393))
+(or (not x408) x392 x393 (not x428))
+(or (not x317) (not x316) x389 x383 x388 x378 x371 x390 x391 x385 x386 (not x428) (not x427) (not x424) (not x423) x429)
+(or (not x429) x317)
+(or (not x429) x316)
+(or (not x429) (not x389))
+(or (not x429) (not x383))
+(or (not x429) (not x388))
+(or (not x429) (not x378))
+(or (not x429) (not x371))
+(or (not x429) (not x390))
+(or (not x429) (not x391))
+(or (not x429) (not x385))
+(or (not x429) (not x386))
+(or (not x429) x428)
+(or (not x429) x427)
+(or (not x429) x424)
+(or (not x429) x423)
+(or (not x317) (not x316) (not x430) x431)
+(or (not x431) x317)
+(or (not x431) x316)
+(or (not x431) x430)
+(or x432 (not x433))
+(or x432 (not x434))
+(or x433 x434 (not x432))
+(or x435 (not x436))
+(or x435 x385)
+(or x436 (not x385) (not x435))
+(or x437 (not x392))
+(or x437 (not x385))
+(or x437 (not x383))
+(or x437 (not x384))
+(or x392 x385 x383 x384 (not x437))
+(or x438 x384)
+(or x438 x383)
+(or (not x384) (not x383) (not x438))
+(or x386 (not x438) (not x437) (not x435) x439)
+(or (not x439) (not x386))
+(or (not x439) x438)
+(or (not x439) x437)
+(or (not x439) x435)
+(or x440 (not x393))
+(or x440 (not x388))
+(or x440 (not x378))
+(or x440 (not x371))
+(or x440 (not x390))
+(or x440 (not x391))
+(or x440 (not x439))
+(or x393 x388 x378 x371 x390 x391 x439 (not x440))
+(or x441 x391)
+(or x441 x390)
+(or (not x391) (not x390) (not x441))
+(or x442 (not x443))
+(or x442 x393)
+(or x443 (not x393) (not x442))
+(or x444 x378)
+(or x444 (not x445))
+(or (not x378) x445 (not x444))
+(or (not x403) x402 x401 x400 x408 x446)
+(or (not x446) x403)
+(or (not x446) (not x402))
+(or (not x446) (not x401))
+(or (not x446) (not x400))
+(or (not x446) (not x408))
+(or (not x403) x402 x401 x400 (not x408) (not x447) x448)
+(or (not x448) x403)
+(or (not x448) (not x402))
+(or (not x448) (not x401))
+(or (not x448) (not x400))
+(or (not x448) x408)
+(or (not x448) x447)
+(or x425 (not x448))
+(or x425 (not x446))
+(or x448 x446 (not x425))
+(or (not x403) x402 x401 x400 (not x408) x449)
+(or (not x449) x403)
+(or (not x449) (not x402))
+(or (not x449) (not x401))
+(or (not x449) (not x400))
+(or (not x449) x408)
+(or x450 (not x449))
+(or x450 (not x448))
+(or x450 (not x446))
+(or x449 x448 x446 (not x450))
+(or x385 x383 x384 x393 x388 x378 x371 x390 x391 (not x450) x451)
+(or (not x451) (not x385))
+(or (not x451) (not x383))
+(or (not x451) (not x384))
+(or (not x451) (not x393))
+(or (not x451) (not x388))
+(or (not x451) (not x378))
+(or (not x451) (not x371))
+(or (not x451) (not x390))
+(or (not x451) (not x391))
+(or (not x451) x450)
+(or x452 x392)
+(or x452 (not x451))
+(or (not x392) x451 (not x452))
+(or x453 (not x454))
+(or x453 x371)
+(or x454 (not x371) (not x453))
+(or x455 (not x456))
+(or x455 x388)
+(or x456 (not x388) (not x455))
+(or x457 x387)
+(or x457 x378)
+(or (not x387) (not x378) (not x457))
+(or (not x415) (not x317) (not x316) x389 (not x457) (not x455) (not x453) (not x452) (not x444) (not x442) (not x441) (not x440) (not x432) (not x458) (not x412) (not x459) (not x460) (not x414) (not x461) (not x462) x463)
+(or (not x463) x415)
+(or (not x463) x317)
+(or (not x463) x316)
+(or (not x463) (not x389))
+(or (not x463) x457)
+(or (not x463) x455)
+(or (not x463) x453)
+(or (not x463) x452)
+(or (not x463) x444)
+(or (not x463) x442)
+(or (not x463) x441)
+(or (not x463) x440)
+(or (not x463) x432)
+(or (not x463) x458)
+(or (not x463) x412)
+(or (not x463) x459)
+(or (not x463) x460)
+(or (not x463) x414)
+(or (not x463) x461)
+(or (not x463) x462)
+(or x464 x317)
+(or x464 x316)
+(or x464 (not x389))
+(or x464 (not x465))
+(or x464 (not x466))
+(or x464 (not x467))
+(or x464 (not x468))
+(or x464 (not x469))
+(or x464 (not x470))
+(or x464 (not x471))
+(or x464 (not x472))
+(or x464 (not x473))
+(or x464 (not x474))
+(or x464 (not x475))
+(or x464 (not x476))
+(or x464 (not x477))
+(or x464 (not x478))
+(or x464 (not x479))
+(or x464 (not x480))
+(or (not x317) (not x316) x389 x465 x466 x467 x468 x469 x470 x471 x472 x473 x474 x475 x476 x477 x478 x479 x480 (not x464))
+(or x481 x317)
+(or x481 x316)
+(or x481 (not x389))
+(or x481 (not x465))
+(or x481 (not x466))
+(or x481 (not x467))
+(or x481 (not x468))
+(or x481 (not x469))
+(or x481 (not x470))
+(or x481 (not x471))
+(or x481 (not x472))
+(or x481 (not x473))
+(or x481 (not x474))
+(or x481 (not x475))
+(or x481 (not x476))
+(or x481 (not x477))
+(or x481 (not x478))
+(or x481 (not x479))
+(or x481 x482)
+(or (not x317) (not x316) x389 x465 x466 x467 x468 x469 x470 x471 x472 x473 x474 x475 x476 x477 x478 x479 (not x482) (not x481))
+(or (not x481) (not x464) x483)
+(or (not x483) x481)
+(or (not x483) x464)
+(or x484 (not x483))
+(or x484 (not x463))
+(or x483 x463 (not x484))
+(or x390 x391 (not x388) (not x317) (not x316) x392 x393 x371 x378 x389 x383 x384 x385 x386 x485)
+(or (not x485) (not x390))
+(or (not x485) (not x391))
+(or (not x485) x388)
+(or (not x485) x317)
+(or (not x485) x316)
+(or (not x485) (not x392))
+(or (not x485) (not x393))
+(or (not x485) (not x371))
+(or (not x485) (not x378))
+(or (not x485) (not x389))
+(or (not x485) (not x383))
+(or (not x485) (not x384))
+(or (not x485) (not x385))
+(or (not x485) (not x386))
+(or x486 (not x487))
+(or x486 (not x488))
+(or x486 (not x476))
+(or x486 (not x475))
+(or x486 (not x489))
+(or x486 (not x490))
+(or x486 (not x479))
+(or x486 (not x478))
+(or x486 (not x359))
+(or x486 (not x360))
+(or x487 x488 x476 x475 x489 x490 x479 x478 x359 x360 (not x486))
+(or (not x458) (not x412) (not x459) (not x460) (not x414) (not x461) x491)
+(or (not x491) x458)
+(or (not x491) x412)
+(or (not x491) x459)
+(or (not x491) x460)
+(or (not x491) x414)
+(or (not x491) x461)
+(or x395 (not x491))
+(or x395 (not x488))
+(or x395 (not x475))
+(or x395 (not x490))
+(or x395 (not x478))
+(or x395 x415)
+(or x491 x488 x475 x490 x478 (not x415) (not x395))
+(or (not x395) (not x486) (not x411) (not x412) (not x413) (not x414) x378 x383 x384 x385 x386 x388 x389 x390 x391 x392 x393 x492)
+(or (not x492) x395)
+(or (not x492) x486)
+(or (not x492) x411)
+(or (not x492) x412)
+(or (not x492) x413)
+(or (not x492) x414)
+(or (not x492) (not x378))
+(or (not x492) (not x383))
+(or (not x492) (not x384))
+(or (not x492) (not x385))
+(or (not x492) (not x386))
+(or (not x492) (not x388))
+(or (not x492) (not x389))
+(or (not x492) (not x390))
+(or (not x492) (not x391))
+(or (not x492) (not x392))
+(or (not x492) (not x393))
+(or x379 (not x493))
+(or x379 (not x494))
+(or x379 (not x380))
+(or x379 x495)
+(or x379 x496)
+(or x493 x494 x380 (not x495) (not x496) (not x379))
+(or (not x379) (not x380) (not x381) (not x382) x371 x383 x384 x385 x386 x387 (not x378) x388 x389 x390 x391 x392 x393 x419)
+(or (not x419) x379)
+(or (not x419) x380)
+(or (not x419) x381)
+(or (not x419) x382)
+(or (not x419) (not x371))
+(or (not x419) (not x383))
+(or (not x419) (not x384))
+(or (not x419) (not x385))
+(or (not x419) (not x386))
+(or (not x419) (not x387))
+(or (not x419) x378)
+(or (not x419) (not x388))
+(or (not x419) (not x389))
+(or (not x419) (not x390))
+(or (not x419) (not x391))
+(or (not x419) (not x392))
+(or (not x419) (not x393))
+(or x497 (not x419))
+(or x497 (not x492))
+(or x419 x492 (not x497))
+(or (not x317) (not x316) (not x371) (not x497) x498)
+(or (not x498) x317)
+(or (not x498) x316)
+(or (not x498) x371)
+(or (not x498) x497)
+(or x499 (not x498))
+(or x499 (not x485))
+(or x498 x485 (not x499))
+(or (not x500) (not x501) x473)
+(or (not x473) x500)
+(or (not x473) x501)
+(or (not x502) (not x385) x503)
+(or (not x503) x502)
+(or (not x503) x385)
+(or x392 x385 x383 x384 x504)
+(or (not x504) (not x392))
+(or (not x504) (not x385))
+(or (not x504) (not x383))
+(or (not x504) (not x384))
+(or (not x384) (not x383) x505)
+(or (not x505) x384)
+(or (not x505) x383)
+(or x506 (not x386))
+(or x506 (not x505))
+(or x506 (not x504))
+(or x506 (not x503))
+(or x386 x505 x504 x503 (not x506))
+(or x393 x388 x378 x371 x390 x391 x434)
+(or (not x434) (not x393))
+(or (not x434) (not x388))
+(or (not x434) (not x378))
+(or (not x434) (not x371))
+(or (not x434) (not x390))
+(or (not x434) (not x391))
+(or x393 x388 x378 x371 x390 x391 (not x506) x472)
+(or (not x472) (not x393))
+(or (not x472) (not x388))
+(or (not x472) (not x378))
+(or (not x472) (not x371))
+(or (not x472) (not x390))
+(or (not x472) (not x391))
+(or (not x472) x506)
+(or (not x391) (not x390) x471)
+(or (not x471) x391)
+(or (not x471) x390)
+(or (not x507) (not x393) x470)
+(or (not x470) x507)
+(or (not x470) x393)
+(or (not x378) (not x508) x469)
+(or (not x469) x378)
+(or (not x469) x508)
+(or x405 x403)
+(or x405 (not x402))
+(or x405 (not x401))
+(or x405 (not x400))
+(or x405 (not x408))
+(or (not x403) x402 x401 x400 x408 (not x405))
+(or x404 x403)
+(or x404 (not x402))
+(or x404 (not x401))
+(or x404 (not x400))
+(or x404 x408)
+(or x404 x447)
+(or (not x403) x402 x401 x400 (not x408) (not x447) (not x404))
+(or x462 x403)
+(or x462 (not x402))
+(or x462 (not x401))
+(or x462 (not x400))
+(or (not x403) x402 x401 x400 (not x462))
+(or x509 x403)
+(or x509 (not x402))
+(or x509 (not x401))
+(or x509 (not x400))
+(or x509 x408)
+(or (not x403) x402 x401 x400 (not x408) (not x509))
+(or (not x509) (not x404) (not x405) x510)
+(or (not x510) x509)
+(or (not x510) x404)
+(or (not x510) x405)
+(or x501 (not x393))
+(or x501 (not x388))
+(or x501 (not x378))
+(or x501 (not x371))
+(or x501 (not x390))
+(or x501 (not x391))
+(or x393 x388 x378 x371 x390 x391 (not x501))
+(or x511 (not x385))
+(or x511 (not x383))
+(or x511 (not x384))
+(or x511 (not x393))
+(or x511 (not x388))
+(or x511 (not x378))
+(or x511 (not x371))
+(or x511 (not x390))
+(or x511 (not x391))
+(or x511 (not x510))
+(or x385 x383 x384 x393 x388 x378 x371 x390 x391 x510 (not x511))
+(or (not x392) (not x511) x468)
+(or (not x468) x392)
+(or (not x468) x511)
+(or (not x512) (not x371) x467)
+(or (not x467) x512)
+(or (not x467) x371)
+(or (not x513) (not x388) x466)
+(or (not x466) x513)
+(or (not x466) x388)
+(or (not x387) (not x378) x465)
+(or (not x465) x387)
+(or (not x465) x378)
+(or x514 x317)
+(or x514 x316)
+(or x514 (not x389))
+(or x514 (not x465))
+(or x514 (not x466))
+(or x514 (not x467))
+(or x514 (not x468))
+(or x514 (not x469))
+(or x514 (not x470))
+(or x514 (not x471))
+(or x514 (not x472))
+(or x514 (not x473))
+(or (not x317) (not x316) x389 x465 x466 x467 x468 x469 x470 x471 x472 x473 (not x514))
+(or x386 (not x317) (not x316) x383 x384 (not x385) x388 x389 x390 x391 x392 x393 x371 x378 x515)
+(or (not x515) (not x386))
+(or (not x515) x317)
+(or (not x515) x316)
+(or (not x515) (not x383))
+(or (not x515) (not x384))
+(or (not x515) x385)
+(or (not x515) (not x388))
+(or (not x515) (not x389))
+(or (not x515) (not x390))
+(or (not x515) (not x391))
+(or (not x515) (not x392))
+(or (not x515) (not x393))
+(or (not x515) (not x371))
+(or (not x515) (not x378))
+(or x381 (not x496))
+(or x381 (not x493))
+(or x381 (not x494))
+(or x381 (not x380))
+(or x381 x495)
+(or x496 x493 x494 x380 (not x495) (not x381))
+(or x493 x494 x380 (not x495) (not x496) x516)
+(or (not x516) (not x493))
+(or (not x516) (not x494))
+(or (not x516) (not x380))
+(or (not x516) x495)
+(or (not x516) x496)
+(or x517 (not x516))
+(or x517 x380)
+(or x516 (not x380) (not x517))
+(or (not x317) (not x316) (not x517) (not x381) (not x382) x371 x383 x384 x385 x386 x387 (not x378) x388 x389 x390 x391 x392 x393 x518)
+(or (not x518) x317)
+(or (not x518) x316)
+(or (not x518) x517)
+(or (not x518) x381)
+(or (not x518) x382)
+(or (not x518) (not x371))
+(or (not x518) (not x383))
+(or (not x518) (not x384))
+(or (not x518) (not x385))
+(or (not x518) (not x386))
+(or (not x518) (not x387))
+(or (not x518) x378)
+(or (not x518) (not x388))
+(or (not x518) (not x389))
+(or (not x518) (not x390))
+(or (not x518) (not x391))
+(or (not x518) (not x392))
+(or (not x518) (not x393))
+(or x388 x391 (not x390) (not x317) (not x316) x392 x393 x371 x378 x389 x383 x384 x385 x386 x519)
+(or (not x519) (not x388))
+(or (not x519) (not x391))
+(or (not x519) x390)
+(or (not x519) x317)
+(or (not x519) x316)
+(or (not x519) (not x392))
+(or (not x519) (not x393))
+(or (not x519) (not x371))
+(or (not x519) (not x378))
+(or (not x519) (not x389))
+(or (not x519) (not x383))
+(or (not x519) (not x384))
+(or (not x519) (not x385))
+(or (not x519) (not x386))
+(or x520 x521 x522)
+(or (not x522) (not x520))
+(or (not x522) (not x521))
+(or x382 (not x522))
+(or x382 (not x494))
+(or x382 (not x380))
+(or x382 x493)
+(or x522 x494 x380 (not x493) (not x382))
+(or (not x382) x496 x493 x494 x380 (not x495) x523)
+(or (not x523) x382)
+(or (not x523) (not x496))
+(or (not x523) (not x493))
+(or (not x523) (not x494))
+(or (not x523) (not x380))
+(or (not x523) x495)
+(or x524 (not x520))
+(or x524 (not x521))
+(or x520 x521 (not x524))
+(or (not x524) x494 x380 (not x493) x525)
+(or (not x525) x524)
+(or (not x525) (not x494))
+(or (not x525) (not x380))
+(or (not x525) x493)
+(or x526 (not x525))
+(or x526 (not x523))
+(or x525 x523 (not x526))
+(or (not x317) (not x316) x371 x383 x384 x385 x386 x387 (not x378) x388 x389 x390 x391 x392 x393 (not x526) x527)
+(or (not x527) x317)
+(or (not x527) x316)
+(or (not x527) (not x371))
+(or (not x527) (not x383))
+(or (not x527) (not x384))
+(or (not x527) (not x385))
+(or (not x527) (not x386))
+(or (not x527) (not x387))
+(or (not x527) x378)
+(or (not x527) (not x388))
+(or (not x527) (not x389))
+(or (not x527) (not x390))
+(or (not x527) (not x391))
+(or (not x527) (not x392))
+(or (not x527) (not x393))
+(or (not x527) x526)
+(or x528 (not x415))
+(or x528 (not x529))
+(or x528 (not x530))
+(or x528 (not x488))
+(or x528 (not x475))
+(or x528 (not x490))
+(or x528 (not x478))
+(or x528 (not x474))
+(or x528 (not x475))
+(or x528 (not x476))
+(or x528 (not x477))
+(or x528 (not x478))
+(or x528 (not x479))
+(or x415 x529 x530 x488 x475 x490 x478 x474 x475 x476 x477 x478 x479 (not x528))
+(or (not x372) (not x373) (not x528) x531)
+(or (not x531) x372)
+(or (not x531) x373)
+(or (not x531) x528)
+(or x532 (not x317))
+(or x532 (not x316))
+(or x317 x316 (not x532))
+(or x317 x316 x533)
+(or (not x533) (not x317))
+(or (not x533) (not x316))
+(or x534 (not x533))
+(or x534 (not x317))
+(or x534 x316)
+(or x533 x317 (not x316) (not x534))
+(or x535 (not x536))
+(or x535 (not x537))
+(or x535 (not x538))
+(or x535 (not x539))
+(or x535 (not x540))
+(or x535 (not x541))
+(or x535 (not x489))
+(or x535 (not x542))
+(or x535 (not x543))
+(or x535 (not x544))
+(or x535 (not x545))
+(or x535 (not x549))
+(or x536 x537 x538 x539 x540 x541 x489 x542 x543 x544 x545 x549 (not x535))
+(or (not x550) (not x551) (not x552) (not x553) (not x554) (not x555) (not x556) (not x557) (not x558) (not x559) (not x560) (not x535) x561)
+(or (not x561) x550)
+(or (not x561) x551)
+(or (not x561) x552)
+(or (not x561) x553)
+(or (not x561) x554)
+(or (not x561) x555)
+(or (not x561) x556)
+(or (not x561) x557)
+(or (not x561) x558)
+(or (not x561) x559)
+(or (not x561) x560)
+(or (not x561) x535)
+(or x562 (not x536))
+(or x562 (not x537))
+(or x562 (not x538))
+(or x562 (not x539))
+(or x562 (not x540))
+(or x562 (not x541))
+(or x562 (not x489))
+(or x562 (not x542))
+(or x562 (not x543))
+(or x562 (not x544))
+(or x562 (not x545))
+(or x562 (not x548))
+(or x536 x537 x538 x539 x540 x541 x489 x542 x543 x544 x545 x548 (not x562))
+(or x563 x564)
+(or x563 (not x565))
+(or (not x564) x565 (not x563))
+(or (not x563) (not x564) x566)
+(or (not x566) x563)
+(or (not x566) x564)
+(or x567 (not x536))
+(or x567 (not x537))
+(or x567 (not x538))
+(or x567 (not x539))
+(or x567 (not x540))
+(or x567 (not x541))
+(or x567 (not x489))
+(or x567 (not x542))
+(or x567 (not x549))
+(or x567 (not x548))
+(or x567 (not x547))
+(or x567 x546)
+(or x567 (not x26))
+(or x567 (not x25))
+(or x567 (not x566))
+(or x536 x537 x538 x539 x540 x541 x489 x542 x549 x548 x547 (not x546) x26 x25 x566 (not x567))
+(or x568 (not x536))
+(or x568 (not x537))
+(or x568 (not x538))
+(or x568 (not x539))
+(or x568 (not x540))
+(or x568 (not x541))
+(or x568 (not x549))
+(or x568 (not x548))
+(or x568 x547)
+(or x568 x546)
+(or x568 x569)
+(or x568 x570)
+(or x568 x571)
+(or x536 x537 x538 x539 x540 x541 x549 x548 (not x547) (not x546) (not x569) (not x570) (not x571) (not x568))
+(or x572 (not x536))
+(or x572 (not x537))
+(or x572 (not x538))
+(or x572 (not x539))
+(or x572 (not x549))
+(or x572 (not x548))
+(or x572 x547)
+(or x572 (not x546))
+(or x572 (not x573))
+(or x572 x574)
+(or x572 x575)
+(or x536 x537 x538 x539 x549 x548 (not x547) x546 x573 (not x574) (not x575) (not x572))
+(or x576 (not x536))
+(or x576 (not x549))
+(or x576 (not x548))
+(or x576 (not x547))
+(or x576 (not x546))
+(or x576 (not x25))
+(or x576 x317)
+(or x576 x316)
+(or x576 (not x573))
+(or x576 (not x577))
+(or x576 (not x578))
+(or x576 x579)
+(or x536 x549 x548 x547 x546 x25 (not x317) (not x316) x573 x577 x578 (not x579) (not x576))
+(or x580 x581)
+(or x580 x582)
+(or x580 x583)
+(or (not x581) (not x582) (not x583) (not x580))
+(or (not x580) (not x581) x584)
+(or (not x584) x580)
+(or (not x584) x581)
+(or x585 x586)
+(or x585 (not x584))
+(or (not x586) x584 (not x585))
+(or (not x585) (not x586) x587)
+(or (not x587) x585)
+(or (not x587) x586)
+(or x588 (not x549))
+(or x588 (not x548))
+(or x588 (not x547))
+(or x588 (not x546))
+(or x588 (not x25))
+(or x588 x317)
+(or x588 x316)
+(or x588 (not x573))
+(or x588 (not x589))
+(or x588 (not x587))
+(or x549 x548 x547 x546 x25 (not x317) (not x316) x573 x589 x587 (not x588))
+(or (not x588) (not x576) (not x552) (not x553) (not x572) (not x555) (not x568) (not x557) (not x567) (not x560) (not x562) x590)
+(or (not x590) x588)
+(or (not x590) x576)
+(or (not x590) x552)
+(or (not x590) x553)
+(or (not x590) x572)
+(or (not x590) x555)
+(or (not x590) x568)
+(or (not x590) x557)
+(or (not x590) x567)
+(or (not x590) x560)
+(or (not x590) x562)
+(or x591 (not x536))
+(or x591 (not x537))
+(or x591 (not x538))
+(or x591 (not x539))
+(or x591 (not x540))
+(or x591 (not x541))
+(or x591 (not x489))
+(or x591 (not x542))
+(or x591 (not x543))
+(or x591 (not x544))
+(or x591 (not x545))
+(or x591 (not x547))
+(or x536 x537 x538 x539 x540 x541 x489 x542 x543 x544 x545 x547 (not x591))
+(or x559 (not x536))
+(or x559 (not x537))
+(or x559 (not x538))
+(or x559 (not x539))
+(or x559 (not x540))
+(or x559 (not x541))
+(or x559 (not x489))
+(or x559 (not x542))
+(or x559 (not x543))
+(or x559 (not x549))
+(or x559 x548)
+(or x559 x547)
+(or x559 (not x546))
+(or x559 (not x26))
+(or x559 (not x25))
+(or x536 x537 x538 x539 x540 x541 x489 x542 x543 x549 (not x548) (not x547) x546 x26 x25 (not x559))
+(or x592 x565)
+(or x592 x593)
+(or (not x565) (not x593) (not x592))
+(or (not x592) (not x565) x594)
+(or (not x594) x592)
+(or (not x594) x565)
+(or x595 (not x536))
+(or x595 (not x537))
+(or x595 (not x538))
+(or x595 (not x539))
+(or x595 (not x540))
+(or x595 (not x541))
+(or x595 (not x489))
+(or x595 (not x542))
+(or x595 (not x549))
+(or x595 (not x548))
+(or x595 (not x547))
+(or x595 x546)
+(or x595 (not x26))
+(or x595 (not x25))
+(or x595 x564)
+(or x595 (not x594))
+(or x536 x537 x538 x539 x540 x541 x489 x542 x549 x548 x547 (not x546) x26 x25 (not x564) x594 (not x595))
+(or x596 x571)
+(or x596 (not x597))
+(or (not x571) x597 (not x596))
+(or (not x596) (not x571) x598)
+(or (not x598) x596)
+(or (not x598) x571)
+(or x599 x569)
+(or x599 x570)
+(or x599 (not x598))
+(or (not x569) (not x570) x598 (not x599))
+(or (not x599) (not x569) x600)
+(or (not x600) x599)
+(or (not x600) x569)
+(or x601 (not x536))
+(or x601 (not x537))
+(or x601 (not x538))
+(or x601 (not x539))
+(or x601 (not x540))
+(or x601 (not x541))
+(or x601 (not x549))
+(or x601 (not x548))
+(or x601 x547)
+(or x601 x546)
+(or x601 (not x600))
+(or x536 x537 x538 x539 x540 x541 x549 x548 (not x547) (not x546) x600 (not x601))
+(or x602 x575)
+(or x602 (not x603))
+(or (not x575) x603 (not x602))
+(or (not x602) (not x575) x604)
+(or (not x604) x602)
+(or (not x604) x575)
+(or x605 (not x536))
+(or x605 (not x537))
+(or x605 (not x538))
+(or x605 (not x539))
+(or x605 (not x549))
+(or x605 (not x548))
+(or x605 x547)
+(or x605 (not x546))
+(or x605 (not x573))
+(or x605 x574)
+(or x605 (not x604))
+(or x536 x537 x538 x539 x549 x548 (not x547) x546 x573 (not x574) x604 (not x605))
+(or x606 (not x536))
+(or x606 (not x549))
+(or x606 (not x548))
+(or x606 (not x547))
+(or x606 (not x546))
+(or x606 (not x25))
+(or x606 x317)
+(or x606 x316)
+(or x606 (not x573))
+(or x606 (not x577))
+(or x606 (not x578))
+(or x606 (not x579))
+(or x536 x549 x548 x547 x546 x25 (not x317) (not x316) x573 x577 x578 x579 (not x606))
+(or x607 x586)
+(or x607 x581)
+(or x607 x582)
+(or x607 (not x583))
+(or (not x586) (not x581) (not x582) x583 (not x607))
+(or (not x607) (not x586) x608)
+(or (not x608) x607)
+(or (not x608) x586)
+(or x609 (not x549))
+(or x609 (not x548))
+(or x609 (not x547))
+(or x609 (not x546))
+(or x609 (not x25))
+(or x609 x317)
+(or x609 x316)
+(or x609 (not x573))
+(or x609 (not x589))
+(or x609 (not x608))
+(or x549 x548 x547 x546 x25 (not x317) (not x316) x573 x589 x608 (not x609))
+(or (not x609) (not x606) (not x553) (not x605) (not x601) (not x557) (not x595) (not x559) (not x560) (not x591) x610)
+(or (not x610) x609)
+(or (not x610) x606)
+(or (not x610) x553)
+(or (not x610) x605)
+(or (not x610) x601)
+(or (not x610) x557)
+(or (not x610) x595)
+(or (not x610) x559)
+(or (not x610) x560)
+(or (not x610) x591)
+(or x611 (not x477))
+(or x611 (not x479))
+(or x611 (not x478))
+(or x477 x479 x478 (not x611))
+(or (not x611) (not x25) x545)
+(or (not x545) x611)
+(or (not x545) x25)
+(or x612 (not x536))
+(or x612 (not x537))
+(or x612 (not x538))
+(or x612 (not x539))
+(or x612 (not x540))
+(or x612 (not x541))
+(or x612 (not x489))
+(or x612 (not x542))
+(or x612 (not x543))
+(or x612 (not x544))
+(or x612 (not x545))
+(or x612 (not x546))
+(or x536 x537 x538 x539 x540 x541 x489 x542 x543 x544 x545 x546 (not x612))
+(or x460 (not x549))
+(or x460 x548)
+(or x460 (not x547))
+(or x460 (not x546))
+(or x549 (not x548) x547 x546 (not x460))
+(or (not x460) (not x461) (not x414) x613)
+(or (not x613) x460)
+(or (not x613) x461)
+(or (not x613) x414)
+(or x549 (not x548) (not x547) x546 x26 x25 x544)
+(or (not x544) (not x549))
+(or (not x544) x548)
+(or (not x544) x547)
+(or (not x544) (not x546))
+(or (not x544) (not x26))
+(or (not x544) (not x25))
+(or x549 x548 x547 (not x546) x26 x25 x543)
+(or (not x543) (not x549))
+(or (not x543) (not x548))
+(or (not x543) (not x547))
+(or (not x543) x546)
+(or (not x543) (not x26))
+(or (not x543) (not x25))
+(or x560 (not x536))
+(or x560 (not x537))
+(or x560 (not x538))
+(or x560 (not x539))
+(or x560 (not x540))
+(or x560 (not x541))
+(or x560 (not x489))
+(or x560 (not x542))
+(or x560 (not x543))
+(or x560 (not x544))
+(or x560 (not x613))
+(or x560 x25)
+(or x536 x537 x538 x539 x540 x541 x489 x542 x543 x544 x613 (not x25) (not x560))
+(or x614 x593)
+(or x614 x615)
+(or (not x593) (not x615) (not x614))
+(or (not x614) (not x593) x616)
+(or (not x616) x614)
+(or (not x616) x593)
+(or x549 x548 x547 (not x546) x26 (not x25) x542)
+(or (not x542) (not x549))
+(or (not x542) (not x548))
+(or (not x542) (not x547))
+(or (not x542) x546)
+(or (not x542) (not x26))
+(or (not x542) x25)
+(or x558 (not x536))
+(or x558 (not x537))
+(or x558 (not x538))
+(or x558 (not x539))
+(or x558 (not x540))
+(or x558 (not x541))
+(or x558 (not x489))
+(or x558 (not x542))
+(or x558 (not x549))
+(or x558 (not x548))
+(or x558 (not x547))
+(or x558 x546)
+(or x558 (not x26))
+(or x558 (not x25))
+(or x536 x537 x538 x539 x540 x541 x489 x542 x549 x548 x547 (not x546) x26 x25 (not x558))
+(or x617 (not x536))
+(or x617 (not x537))
+(or x617 (not x538))
+(or x617 (not x539))
+(or x617 (not x540))
+(or x617 (not x541))
+(or x617 (not x489))
+(or x617 (not x542))
+(or x617 (not x549))
+(or x617 (not x548))
+(or x617 (not x547))
+(or x617 x546)
+(or x617 (not x26))
+(or x617 (not x25))
+(or x617 x564)
+(or x617 x565)
+(or x617 (not x616))
+(or x536 x537 x538 x539 x540 x541 x489 x542 x549 x548 x547 (not x546) x26 x25 (not x564) (not x565) x616 (not x617))
+(or x557 (not x536))
+(or x557 (not x537))
+(or x557 (not x538))
+(or x557 (not x539))
+(or x557 (not x540))
+(or x557 (not x541))
+(or x557 (not x489))
+(or x557 (not x549))
+(or x557 (not x548))
+(or x557 (not x547))
+(or x557 x546)
+(or x557 (not x26))
+(or x557 x25)
+(or x536 x537 x538 x539 x540 x541 x489 x549 x548 x547 (not x546) x26 (not x25) (not x557))
+(or x618 x570)
+(or x618 (not x571))
+(or (not x570) x571 (not x618))
+(or (not x618) (not x570) x619)
+(or (not x619) x618)
+(or (not x619) x570)
+(or x556 (not x536))
+(or x556 (not x537))
+(or x556 (not x538))
+(or x556 (not x539))
+(or x556 (not x540))
+(or x556 (not x541))
+(or x556 (not x549))
+(or x556 (not x548))
+(or x556 x547)
+(or x556 x546)
+(or x536 x537 x538 x539 x540 x541 x549 x548 (not x547) (not x546) (not x556))
+(or x620 (not x536))
+(or x620 (not x537))
+(or x620 (not x538))
+(or x620 (not x539))
+(or x620 (not x540))
+(or x620 (not x541))
+(or x620 (not x549))
+(or x620 (not x548))
+(or x620 x547)
+(or x620 x546)
+(or x620 x569)
+(or x620 (not x619))
+(or x536 x537 x538 x539 x540 x541 x549 x548 (not x547) (not x546) (not x569) x619 (not x620))
+(or x549 x548 (not x547) x546 (not x621) x540)
+(or (not x540) (not x549))
+(or (not x540) (not x548))
+(or (not x540) x547)
+(or (not x540) (not x546))
+(or (not x540) x621)
+(or x555 (not x536))
+(or x555 (not x537))
+(or x555 (not x538))
+(or x555 (not x539))
+(or x555 (not x540))
+(or x555 (not x549))
+(or x555 (not x548))
+(or x555 x547)
+(or x555 (not x546))
+(or x536 x537 x538 x539 x540 x549 x548 (not x547) x546 (not x555))
+(or x622 x574)
+(or x622 x575)
+(or x622 x603)
+(or x622 x623)
+(or (not x574) (not x575) (not x603) (not x623) (not x622))
+(or (not x622) (not x574) x624)
+(or (not x624) x622)
+(or (not x624) x574)
+(or x549 x548 (not x547) x546 (not x25) (not x26) x539)
+(or (not x539) (not x549))
+(or (not x539) (not x548))
+(or (not x539) x547)
+(or (not x539) (not x546))
+(or (not x539) x25)
+(or (not x539) x26)
+(or x554 (not x536))
+(or x554 (not x537))
+(or x554 (not x538))
+(or x554 (not x539))
+(or x554 (not x549))
+(or x554 (not x548))
+(or x554 x547)
+(or x554 (not x546))
+(or x554 (not x573))
+(or x536 x537 x538 x539 x549 x548 (not x547) x546 x573 (not x554))
+(or x625 (not x536))
+(or x625 (not x537))
+(or x625 (not x538))
+(or x625 (not x539))
+(or x625 (not x549))
+(or x625 (not x548))
+(or x625 x547)
+(or x625 (not x546))
+(or x625 (not x573))
+(or x625 (not x624))
+(or x536 x537 x538 x539 x549 x548 (not x547) x546 x573 x624 (not x625))
+(or x553 (not x536))
+(or x553 (not x537))
+(or x553 (not x538))
+(or x553 (not x549))
+(or x553 (not x548))
+(or x553 x547)
+(or x553 (not x546))
+(or x553 x25)
+(or x553 x26)
+(or x536 x537 x538 x549 x548 (not x547) x546 (not x25) (not x26) (not x553))
+(or x549 x548 x547 x546 x25 (not x317) (not x316) (not x621) (not x626) (not x627) x537)
+(or (not x537) (not x549))
+(or (not x537) (not x548))
+(or (not x537) (not x547))
+(or (not x537) (not x546))
+(or (not x537) (not x25))
+(or (not x537) x317)
+(or (not x537) x316)
+(or (not x537) x621)
+(or (not x537) x626)
+(or (not x537) x627)
+(or x552 (not x536))
+(or x552 (not x537))
+(or x552 (not x549))
+(or x552 (not x548))
+(or x552 (not x547))
+(or x552 (not x546))
+(or x552 (not x25))
+(or x552 x317)
+(or x552 x316)
+(or x536 x537 x549 x548 x547 x546 x25 (not x317) (not x316) (not x552))
+(or (not x629) (not x628) x630)
+(or (not x630) x629)
+(or (not x630) x628)
+(or (not x629) x628 x631)
+(or (not x631) x629)
+(or (not x631) (not x628))
+(or x629 (not x628) x632)
+(or (not x632) (not x629))
+(or (not x632) x628)
+(or x629 x628 (not x24) x25 x633)
+(or (not x633) (not x629))
+(or (not x633) (not x628))
+(or (not x633) x24)
+(or (not x633) (not x25))
+(or x621 (not x633))
+(or x621 (not x632))
+(or x621 (not x631))
+(or x621 (not x630))
+(or x633 x632 x631 x630 (not x621))
+(or x549 x548 x547 x546 x25 (not x317) (not x316) x538)
+(or (not x538) (not x549))
+(or (not x538) (not x548))
+(or (not x538) (not x547))
+(or (not x538) (not x546))
+(or (not x538) (not x25))
+(or (not x538) x317)
+(or (not x538) x316)
+(or x549 x548 x547 x546 x25 (not x317) (not x316) (not x621) (not x634) x536)
+(or (not x536) (not x549))
+(or (not x536) (not x548))
+(or (not x536) (not x547))
+(or (not x536) (not x546))
+(or (not x536) (not x25))
+(or (not x536) x317)
+(or (not x536) x316)
+(or (not x536) x621)
+(or (not x536) x634)
+(or x551 (not x536))
+(or x551 (not x549))
+(or x551 (not x548))
+(or x551 (not x547))
+(or x551 (not x546))
+(or x551 (not x25))
+(or x551 x317)
+(or x551 x316)
+(or x551 (not x573))
+(or x551 (not x577))
+(or x551 (not x578))
+(or x536 x549 x548 x547 x546 x25 (not x317) (not x316) x573 x577 x578 (not x551))
+(or x635 (not x536))
+(or x635 (not x549))
+(or x635 (not x548))
+(or x635 (not x547))
+(or x635 (not x546))
+(or x635 (not x25))
+(or x635 x317)
+(or x635 x316)
+(or x635 (not x573))
+(or x635 (not x577))
+(or x635 (not x578))
+(or x635 x579)
+(or x635 x636)
+(or x536 x549 x548 x547 x546 x25 (not x317) (not x316) x573 x577 x578 (not x579) (not x636) (not x635))
+(or x637 x582)
+(or x637 x583)
+(or (not x582) (not x583) (not x637))
+(or (not x637) (not x582) x638)
+(or (not x638) x637)
+(or (not x638) x582)
+(or x639 x629)
+(or x639 x628)
+(or (not x629) (not x628) (not x639))
+(or x640 x629)
+(or x640 (not x628))
+(or (not x629) x628 (not x640))
+(or x641 (not x629))
+(or x641 x628)
+(or x629 (not x628) (not x641))
+(or x642 (not x629))
+(or x642 (not x628))
+(or x642 x24)
+(or x642 (not x25))
+(or x629 x628 (not x24) x25 (not x642))
+(or (not x642) (not x641) (not x640) (not x639) x573)
+(or (not x573) x642)
+(or (not x573) x641)
+(or (not x573) x640)
+(or (not x573) x639)
+(or x550 (not x549))
+(or x550 (not x548))
+(or x550 (not x547))
+(or x550 (not x546))
+(or x550 (not x25))
+(or x550 x317)
+(or x550 x316)
+(or x550 (not x573))
+(or x550 (not x589))
+(or x549 x548 x547 x546 x25 (not x317) (not x316) x573 x589 (not x550))
+(or x643 (not x549))
+(or x643 (not x548))
+(or x643 (not x547))
+(or x643 (not x546))
+(or x643 (not x25))
+(or x643 x317)
+(or x643 x316)
+(or x643 (not x573))
+(or x643 (not x589))
+(or x643 x586)
+(or x643 x581)
+(or x643 (not x638))
+(or x549 x548 x547 x546 x25 (not x317) (not x316) x573 x589 (not x586) (not x581) x638 (not x643))
+(or (not x643) (not x635) (not x552) (not x553) (not x625) (not x555) (not x620) (not x557) (not x617) (not x560) (not x612) x644)
+(or (not x644) x643)
+(or (not x644) x635)
+(or (not x644) x552)
+(or (not x644) x553)
+(or (not x644) x625)
+(or (not x644) x555)
+(or (not x644) x620)
+(or (not x644) x557)
+(or (not x644) x617)
+(or (not x644) x560)
+(or (not x644) x612)
+(or x645 (not x646))
+(or x645 (not x647))
+(or x645 (not x648))
+(or x645 (not x649))
+(or x645 (not x650))
+(or x645 (not x651))
+(or x645 (not x487))
+(or x645 (not x652))
+(or x645 (not x653))
+(or x645 (not x654))
+(or x645 (not x655))
+(or x645 (not x659))
+(or x646 x647 x648 x649 x650 x651 x487 x652 x653 x654 x655 x659 (not x645))
+(or (not x660) (not x661) (not x662) (not x663) (not x664) (not x665) (not x666) (not x667) (not x668) (not x669) (not x670) (not x645) x671)
+(or (not x671) x660)
+(or (not x671) x661)
+(or (not x671) x662)
+(or (not x671) x663)
+(or (not x671) x664)
+(or (not x671) x665)
+(or (not x671) x666)
+(or (not x671) x667)
+(or (not x671) x668)
+(or (not x671) x669)
+(or (not x671) x670)
+(or (not x671) x645)
+(or x672 (not x646))
+(or x672 (not x647))
+(or x672 (not x648))
+(or x672 (not x649))
+(or x672 (not x650))
+(or x672 (not x651))
+(or x672 (not x487))
+(or x672 (not x652))
+(or x672 (not x653))
+(or x672 (not x654))
+(or x672 (not x655))
+(or x672 (not x658))
+(or x646 x647 x648 x649 x650 x651 x487 x652 x653 x654 x655 x658 (not x672))
+(or x673 x674)
+(or x673 (not x675))
+(or (not x674) x675 (not x673))
+(or (not x673) (not x674) x676)
+(or (not x676) x673)
+(or (not x676) x674)
+(or x677 (not x646))
+(or x677 (not x647))
+(or x677 (not x648))
+(or x677 (not x649))
+(or x677 (not x650))
+(or x677 (not x651))
+(or x677 (not x487))
+(or x677 (not x652))
+(or x677 (not x659))
+(or x677 (not x658))
+(or x677 (not x657))
+(or x677 x656)
+(or x677 (not x26))
+(or x677 (not x25))
+(or x677 (not x676))
+(or x646 x647 x648 x649 x650 x651 x487 x652 x659 x658 x657 (not x656) x26 x25 x676 (not x677))
+(or x678 (not x646))
+(or x678 (not x647))
+(or x678 (not x648))
+(or x678 (not x649))
+(or x678 (not x650))
+(or x678 (not x651))
+(or x678 (not x659))
+(or x678 (not x658))
+(or x678 x657)
+(or x678 x656)
+(or x678 x679)
+(or x678 x680)
+(or x678 x681)
+(or x646 x647 x648 x649 x650 x651 x659 x658 (not x657) (not x656) (not x679) (not x680) (not x681) (not x678))
+(or x682 (not x646))
+(or x682 (not x647))
+(or x682 (not x648))
+(or x682 (not x649))
+(or x682 (not x659))
+(or x682 (not x658))
+(or x682 x657)
+(or x682 (not x656))
+(or x682 (not x683))
+(or x682 x684)
+(or x682 x685)
+(or x646 x647 x648 x649 x659 x658 (not x657) x656 x683 (not x684) (not x685) (not x682))
+(or x686 (not x646))
+(or x686 (not x659))
+(or x686 (not x658))
+(or x686 (not x657))
+(or x686 (not x656))
+(or x686 (not x25))
+(or x686 x317)
+(or x686 x316)
+(or x686 (not x683))
+(or x686 (not x577))
+(or x686 (not x578))
+(or x686 x687)
+(or x646 x659 x658 x657 x656 x25 (not x317) (not x316) x683 x577 x578 (not x687) (not x686))
+(or x688 x689)
+(or x688 x690)
+(or x688 x691)
+(or (not x689) (not x690) (not x691) (not x688))
+(or (not x688) (not x689) x692)
+(or (not x692) x688)
+(or (not x692) x689)
+(or x693 x694)
+(or x693 (not x692))
+(or (not x694) x692 (not x693))
+(or (not x693) (not x694) x695)
+(or (not x695) x693)
+(or (not x695) x694)
+(or x696 (not x659))
+(or x696 (not x658))
+(or x696 (not x657))
+(or x696 (not x656))
+(or x696 (not x25))
+(or x696 x317)
+(or x696 x316)
+(or x696 (not x683))
+(or x696 (not x589))
+(or x696 (not x695))
+(or x659 x658 x657 x656 x25 (not x317) (not x316) x683 x589 x695 (not x696))
+(or (not x696) (not x686) (not x662) (not x663) (not x682) (not x665) (not x678) (not x667) (not x677) (not x670) (not x672) x697)
+(or (not x697) x696)
+(or (not x697) x686)
+(or (not x697) x662)
+(or (not x697) x663)
+(or (not x697) x682)
+(or (not x697) x665)
+(or (not x697) x678)
+(or (not x697) x667)
+(or (not x697) x677)
+(or (not x697) x670)
+(or (not x697) x672)
+(or x698 (not x646))
+(or x698 (not x647))
+(or x698 (not x648))
+(or x698 (not x649))
+(or x698 (not x650))
+(or x698 (not x651))
+(or x698 (not x487))
+(or x698 (not x652))
+(or x698 (not x653))
+(or x698 (not x654))
+(or x698 (not x655))
+(or x698 (not x657))
+(or x646 x647 x648 x649 x650 x651 x487 x652 x653 x654 x655 x657 (not x698))
+(or x669 (not x646))
+(or x669 (not x647))
+(or x669 (not x648))
+(or x669 (not x649))
+(or x669 (not x650))
+(or x669 (not x651))
+(or x669 (not x487))
+(or x669 (not x652))
+(or x669 (not x653))
+(or x669 (not x659))
+(or x669 x658)
+(or x669 x657)
+(or x669 (not x656))
+(or x669 (not x26))
+(or x669 (not x25))
+(or x646 x647 x648 x649 x650 x651 x487 x652 x653 x659 (not x658) (not x657) x656 x26 x25 (not x669))
+(or x699 x675)
+(or x699 x700)
+(or (not x675) (not x700) (not x699))
+(or (not x699) (not x675) x701)
+(or (not x701) x699)
+(or (not x701) x675)
+(or x702 (not x646))
+(or x702 (not x647))
+(or x702 (not x648))
+(or x702 (not x649))
+(or x702 (not x650))
+(or x702 (not x651))
+(or x702 (not x487))
+(or x702 (not x652))
+(or x702 (not x659))
+(or x702 (not x658))
+(or x702 (not x657))
+(or x702 x656)
+(or x702 (not x26))
+(or x702 (not x25))
+(or x702 x674)
+(or x702 (not x701))
+(or x646 x647 x648 x649 x650 x651 x487 x652 x659 x658 x657 (not x656) x26 x25 (not x674) x701 (not x702))
+(or x703 x681)
+(or x703 (not x704))
+(or (not x681) x704 (not x703))
+(or (not x703) (not x681) x705)
+(or (not x705) x703)
+(or (not x705) x681)
+(or x706 x679)
+(or x706 x680)
+(or x706 (not x705))
+(or (not x679) (not x680) x705 (not x706))
+(or (not x706) (not x679) x707)
+(or (not x707) x706)
+(or (not x707) x679)
+(or x708 (not x646))
+(or x708 (not x647))
+(or x708 (not x648))
+(or x708 (not x649))
+(or x708 (not x650))
+(or x708 (not x651))
+(or x708 (not x659))
+(or x708 (not x658))
+(or x708 x657)
+(or x708 x656)
+(or x708 (not x707))
+(or x646 x647 x648 x649 x650 x651 x659 x658 (not x657) (not x656) x707 (not x708))
+(or x709 x685)
+(or x709 (not x710))
+(or (not x685) x710 (not x709))
+(or (not x709) (not x685) x711)
+(or (not x711) x709)
+(or (not x711) x685)
+(or x712 (not x646))
+(or x712 (not x647))
+(or x712 (not x648))
+(or x712 (not x649))
+(or x712 (not x659))
+(or x712 (not x658))
+(or x712 x657)
+(or x712 (not x656))
+(or x712 (not x683))
+(or x712 x684)
+(or x712 (not x711))
+(or x646 x647 x648 x649 x659 x658 (not x657) x656 x683 (not x684) x711 (not x712))
+(or x713 (not x646))
+(or x713 (not x659))
+(or x713 (not x658))
+(or x713 (not x657))
+(or x713 (not x656))
+(or x713 (not x25))
+(or x713 x317)
+(or x713 x316)
+(or x713 (not x683))
+(or x713 (not x577))
+(or x713 (not x578))
+(or x713 (not x687))
+(or x646 x659 x658 x657 x656 x25 (not x317) (not x316) x683 x577 x578 x687 (not x713))
+(or x714 x694)
+(or x714 x689)
+(or x714 x690)
+(or x714 (not x691))
+(or (not x694) (not x689) (not x690) x691 (not x714))
+(or (not x714) (not x694) x715)
+(or (not x715) x714)
+(or (not x715) x694)
+(or x716 (not x659))
+(or x716 (not x658))
+(or x716 (not x657))
+(or x716 (not x656))
+(or x716 (not x25))
+(or x716 x317)
+(or x716 x316)
+(or x716 (not x683))
+(or x716 (not x589))
+(or x716 (not x715))
+(or x659 x658 x657 x656 x25 (not x317) (not x316) x683 x589 x715 (not x716))
+(or (not x716) (not x713) (not x663) (not x712) (not x708) (not x667) (not x702) (not x669) (not x670) (not x698) x717)
+(or (not x717) x716)
+(or (not x717) x713)
+(or (not x717) x663)
+(or (not x717) x712)
+(or (not x717) x708)
+(or (not x717) x667)
+(or (not x717) x702)
+(or (not x717) x669)
+(or (not x717) x670)
+(or (not x717) x698)
+(or x718 (not x474))
+(or x718 (not x476))
+(or x718 (not x475))
+(or x474 x476 x475 (not x718))
+(or (not x718) (not x25) x655)
+(or (not x655) x718)
+(or (not x655) x25)
+(or x719 (not x646))
+(or x719 (not x647))
+(or x719 (not x648))
+(or x719 (not x649))
+(or x719 (not x650))
+(or x719 (not x651))
+(or x719 (not x487))
+(or x719 (not x652))
+(or x719 (not x653))
+(or x719 (not x654))
+(or x719 (not x655))
+(or x719 (not x656))
+(or x646 x647 x648 x649 x650 x651 x487 x652 x653 x654 x655 x656 (not x719))
+(or x458 (not x659))
+(or x458 x658)
+(or x458 (not x657))
+(or x458 (not x656))
+(or x659 (not x658) x657 x656 (not x458))
+(or (not x458) (not x459) (not x412) x720)
+(or (not x720) x458)
+(or (not x720) x459)
+(or (not x720) x412)
+(or x659 (not x658) (not x657) x656 x26 x25 x654)
+(or (not x654) (not x659))
+(or (not x654) x658)
+(or (not x654) x657)
+(or (not x654) (not x656))
+(or (not x654) (not x26))
+(or (not x654) (not x25))
+(or x659 x658 x657 (not x656) x26 x25 x653)
+(or (not x653) (not x659))
+(or (not x653) (not x658))
+(or (not x653) (not x657))
+(or (not x653) x656)
+(or (not x653) (not x26))
+(or (not x653) (not x25))
+(or x670 (not x646))
+(or x670 (not x647))
+(or x670 (not x648))
+(or x670 (not x649))
+(or x670 (not x650))
+(or x670 (not x651))
+(or x670 (not x487))
+(or x670 (not x652))
+(or x670 (not x653))
+(or x670 (not x654))
+(or x670 (not x720))
+(or x670 x25)
+(or x646 x647 x648 x649 x650 x651 x487 x652 x653 x654 x720 (not x25) (not x670))
+(or x721 x700)
+(or x721 x722)
+(or (not x700) (not x722) (not x721))
+(or (not x721) (not x700) x723)
+(or (not x723) x721)
+(or (not x723) x700)
+(or x659 x658 x657 (not x656) x26 (not x25) x652)
+(or (not x652) (not x659))
+(or (not x652) (not x658))
+(or (not x652) (not x657))
+(or (not x652) x656)
+(or (not x652) (not x26))
+(or (not x652) x25)
+(or x668 (not x646))
+(or x668 (not x647))
+(or x668 (not x648))
+(or x668 (not x649))
+(or x668 (not x650))
+(or x668 (not x651))
+(or x668 (not x487))
+(or x668 (not x652))
+(or x668 (not x659))
+(or x668 (not x658))
+(or x668 (not x657))
+(or x668 x656)
+(or x668 (not x26))
+(or x668 (not x25))
+(or x646 x647 x648 x649 x650 x651 x487 x652 x659 x658 x657 (not x656) x26 x25 (not x668))
+(or x724 (not x646))
+(or x724 (not x647))
+(or x724 (not x648))
+(or x724 (not x649))
+(or x724 (not x650))
+(or x724 (not x651))
+(or x724 (not x487))
+(or x724 (not x652))
+(or x724 (not x659))
+(or x724 (not x658))
+(or x724 (not x657))
+(or x724 x656)
+(or x724 (not x26))
+(or x724 (not x25))
+(or x724 x674)
+(or x724 x675)
+(or x724 (not x723))
+(or x646 x647 x648 x649 x650 x651 x487 x652 x659 x658 x657 (not x656) x26 x25 (not x674) (not x675) x723 (not x724))
+(or x667 (not x646))
+(or x667 (not x647))
+(or x667 (not x648))
+(or x667 (not x649))
+(or x667 (not x650))
+(or x667 (not x651))
+(or x667 (not x487))
+(or x667 (not x659))
+(or x667 (not x658))
+(or x667 (not x657))
+(or x667 x656)
+(or x667 (not x26))
+(or x667 x25)
+(or x646 x647 x648 x649 x650 x651 x487 x659 x658 x657 (not x656) x26 (not x25) (not x667))
+(or x725 x680)
+(or x725 (not x681))
+(or (not x680) x681 (not x725))
+(or (not x725) (not x680) x726)
+(or (not x726) x725)
+(or (not x726) x680)
+(or x666 (not x646))
+(or x666 (not x647))
+(or x666 (not x648))
+(or x666 (not x649))
+(or x666 (not x650))
+(or x666 (not x651))
+(or x666 (not x659))
+(or x666 (not x658))
+(or x666 x657)
+(or x666 x656)
+(or x646 x647 x648 x649 x650 x651 x659 x658 (not x657) (not x656) (not x666))
+(or x727 (not x646))
+(or x727 (not x647))
+(or x727 (not x648))
+(or x727 (not x649))
+(or x727 (not x650))
+(or x727 (not x651))
+(or x727 (not x659))
+(or x727 (not x658))
+(or x727 x657)
+(or x727 x656)
+(or x727 x679)
+(or x727 (not x726))
+(or x646 x647 x648 x649 x650 x651 x659 x658 (not x657) (not x656) (not x679) x726 (not x727))
+(or x659 x658 (not x657) x656 (not x728) x650)
+(or (not x650) (not x659))
+(or (not x650) (not x658))
+(or (not x650) x657)
+(or (not x650) (not x656))
+(or (not x650) x728)
+(or x665 (not x646))
+(or x665 (not x647))
+(or x665 (not x648))
+(or x665 (not x649))
+(or x665 (not x650))
+(or x665 (not x659))
+(or x665 (not x658))
+(or x665 x657)
+(or x665 (not x656))
+(or x646 x647 x648 x649 x650 x659 x658 (not x657) x656 (not x665))
+(or x729 x684)
+(or x729 x685)
+(or x729 x710)
+(or x729 x730)
+(or (not x684) (not x685) (not x710) (not x730) (not x729))
+(or (not x729) (not x684) x731)
+(or (not x731) x729)
+(or (not x731) x684)
+(or x659 x658 (not x657) x656 (not x25) (not x26) x649)
+(or (not x649) (not x659))
+(or (not x649) (not x658))
+(or (not x649) x657)
+(or (not x649) (not x656))
+(or (not x649) x25)
+(or (not x649) x26)
+(or x664 (not x646))
+(or x664 (not x647))
+(or x664 (not x648))
+(or x664 (not x649))
+(or x664 (not x659))
+(or x664 (not x658))
+(or x664 x657)
+(or x664 (not x656))
+(or x664 (not x683))
+(or x646 x647 x648 x649 x659 x658 (not x657) x656 x683 (not x664))
+(or x732 (not x646))
+(or x732 (not x647))
+(or x732 (not x648))
+(or x732 (not x649))
+(or x732 (not x659))
+(or x732 (not x658))
+(or x732 x657)
+(or x732 (not x656))
+(or x732 (not x683))
+(or x732 (not x731))
+(or x646 x647 x648 x649 x659 x658 (not x657) x656 x683 x731 (not x732))
+(or x663 (not x646))
+(or x663 (not x647))
+(or x663 (not x648))
+(or x663 (not x659))
+(or x663 (not x658))
+(or x663 x657)
+(or x663 (not x656))
+(or x663 x25)
+(or x663 x26)
+(or x646 x647 x648 x659 x658 (not x657) x656 (not x25) (not x26) (not x663))
+(or x659 x658 x657 x656 x25 (not x317) (not x316) (not x728) (not x626) (not x627) x647)
+(or (not x647) (not x659))
+(or (not x647) (not x658))
+(or (not x647) (not x657))
+(or (not x647) (not x656))
+(or (not x647) (not x25))
+(or (not x647) x317)
+(or (not x647) x316)
+(or (not x647) x728)
+(or (not x647) x626)
+(or (not x647) x627)
+(or x662 (not x646))
+(or x662 (not x647))
+(or x662 (not x659))
+(or x662 (not x658))
+(or x662 (not x657))
+(or x662 (not x656))
+(or x662 (not x25))
+(or x662 x317)
+(or x662 x316)
+(or x646 x647 x659 x658 x657 x656 x25 (not x317) (not x316) (not x662))
+(or (not x430) (not x733) x578)
+(or (not x578) x430)
+(or (not x578) x733)
+(or (not x372) (not x373) (not x734) x577)
+(or (not x577) x372)
+(or (not x577) x373)
+(or (not x577) x734)
+(or x634 (not x577))
+(or x634 (not x578))
+(or x577 x578 (not x634))
+(or (not x736) (not x735) x737)
+(or (not x737) x736)
+(or (not x737) x735)
+(or (not x736) x735 x738)
+(or (not x738) x736)
+(or (not x738) (not x735))
+(or x736 (not x735) x739)
+(or (not x739) (not x736))
+(or (not x739) x735)
+(or (not x24) x25 x301)
+(or (not x301) x24)
+(or (not x301) (not x25))
+(or x736 x735 (not x24) x25 x740)
+(or (not x740) (not x736))
+(or (not x740) (not x735))
+(or (not x740) x24)
+(or (not x740) (not x25))
+(or x728 (not x740))
+(or x728 (not x739))
+(or x728 (not x738))
+(or x728 (not x737))
+(or x740 x739 x738 x737 (not x728))
+(or x659 x658 x657 x656 x25 (not x317) (not x316) x648)
+(or (not x648) (not x659))
+(or (not x648) (not x658))
+(or (not x648) (not x657))
+(or (not x648) (not x656))
+(or (not x648) (not x25))
+(or (not x648) x317)
+(or (not x648) x316)
+(or x659 x658 x657 x656 x25 (not x317) (not x316) (not x728) (not x634) x646)
+(or (not x646) (not x659))
+(or (not x646) (not x658))
+(or (not x646) (not x657))
+(or (not x646) (not x656))
+(or (not x646) (not x25))
+(or (not x646) x317)
+(or (not x646) x316)
+(or (not x646) x728)
+(or (not x646) x634)
+(or x661 (not x646))
+(or x661 (not x659))
+(or x661 (not x658))
+(or x661 (not x657))
+(or x661 (not x656))
+(or x661 (not x25))
+(or x661 x317)
+(or x661 x316)
+(or x661 (not x683))
+(or x661 (not x577))
+(or x661 (not x578))
+(or x646 x659 x658 x657 x656 x25 (not x317) (not x316) x683 x577 x578 (not x661))
+(or x741 (not x646))
+(or x741 (not x659))
+(or x741 (not x658))
+(or x741 (not x657))
+(or x741 (not x656))
+(or x741 (not x25))
+(or x741 x317)
+(or x741 x316)
+(or x741 (not x683))
+(or x741 (not x577))
+(or x741 (not x578))
+(or x741 x687)
+(or x741 x742)
+(or x646 x659 x658 x657 x656 x25 (not x317) (not x316) x683 x577 x578 (not x687) (not x742) (not x741))
+(or x743 x690)
+(or x743 x691)
+(or (not x690) (not x691) (not x743))
+(or (not x743) (not x690) x744)
+(or (not x744) x743)
+(or (not x744) x690)
+(or x373 (not x408))
+(or x373 x383)
+(or x373 (not x384))
+(or x373 (not x385))
+(or x373 (not x386))
+(or x373 (not x388))
+(or x373 (not x389))
+(or x373 (not x390))
+(or x373 (not x391))
+(or x373 (not x392))
+(or x373 (not x393))
+(or x373 (not x371))
+(or x373 (not x378))
+(or x408 (not x383) x384 x385 x386 x388 x389 x390 x391 x392 x393 x371 x378 (not x373))
+(or x502 (not x383))
+(or x502 (not x384))
+(or x383 x384 (not x502))
+(or x500 (not x383))
+(or x500 (not x384))
+(or x500 (not x385))
+(or x500 (not x386))
+(or x383 x384 x385 x386 (not x500))
+(or x512 (not x390))
+(or x512 (not x391))
+(or x390 x391 (not x512))
+(or x508 (not x371))
+(or x508 (not x390))
+(or x508 (not x391))
+(or x371 x390 x391 (not x508))
+(or x513 (not x378))
+(or x513 (not x371))
+(or x513 (not x390))
+(or x513 (not x391))
+(or x378 x371 x390 x391 (not x513))
+(or x507 (not x388))
+(or x507 (not x378))
+(or x507 (not x371))
+(or x507 (not x390))
+(or x507 (not x391))
+(or x388 x378 x371 x390 x391 (not x507))
+(or x372 (not x388))
+(or x372 (not x378))
+(or x372 (not x371))
+(or x372 (not x390))
+(or x372 (not x391))
+(or x372 (not x408))
+(or x372 (not x392))
+(or x372 x393)
+(or x372 (not x389))
+(or x372 (not x383))
+(or x372 (not x384))
+(or x372 (not x385))
+(or x372 (not x386))
+(or x388 x378 x371 x390 x391 x408 x392 (not x393) x389 x383 x384 x385 x386 (not x372))
+(or (not x372) (not x373) x745)
+(or (not x745) x372)
+(or (not x745) x373)
+(or x627 (not x745))
+(or x627 x733)
+(or x745 (not x733) (not x627))
+(or x408 (not x383) x384 x385 x386 x388 x389 x390 x391 x392 x393 x371 x378 x364)
+(or (not x364) (not x408))
+(or (not x364) x383)
+(or (not x364) (not x384))
+(or (not x364) (not x385))
+(or (not x364) (not x386))
+(or (not x364) (not x388))
+(or (not x364) (not x389))
+(or (not x364) (not x390))
+(or (not x364) (not x391))
+(or (not x364) (not x392))
+(or (not x364) (not x393))
+(or (not x364) (not x371))
+(or (not x364) (not x378))
+(or x383 x384 x436)
+(or (not x436) (not x383))
+(or (not x436) (not x384))
+(or x383 x384 x385 x386 x433)
+(or (not x433) (not x383))
+(or (not x433) (not x384))
+(or (not x433) (not x385))
+(or (not x433) (not x386))
+(or x390 x391 x454)
+(or (not x454) (not x390))
+(or (not x454) (not x391))
+(or x371 x390 x391 x445)
+(or (not x445) (not x371))
+(or (not x445) (not x390))
+(or (not x445) (not x391))
+(or x378 x371 x390 x391 x456)
+(or (not x456) (not x378))
+(or (not x456) (not x371))
+(or (not x456) (not x390))
+(or (not x456) (not x391))
+(or x388 x378 x371 x390 x391 x443)
+(or (not x443) (not x388))
+(or (not x443) (not x378))
+(or (not x443) (not x371))
+(or (not x443) (not x390))
+(or (not x443) (not x391))
+(or x388 x378 x371 x390 x391 x408 x392 (not x393) x389 x383 x384 x385 x386 x363)
+(or (not x363) (not x388))
+(or (not x363) (not x378))
+(or (not x363) (not x371))
+(or (not x363) (not x390))
+(or (not x363) (not x391))
+(or (not x363) (not x408))
+(or (not x363) (not x392))
+(or (not x363) x393)
+(or (not x363) (not x389))
+(or (not x363) (not x383))
+(or (not x363) (not x384))
+(or (not x363) (not x385))
+(or (not x363) (not x386))
+(or x430 (not x363))
+(or x430 (not x364))
+(or x363 x364 (not x430))
+(or x626 (not x363))
+(or x626 (not x364))
+(or x626 x734)
+(or x363 x364 (not x734) (not x626))
+(or (not x626) (not x627) x589)
+(or (not x589) x626)
+(or (not x589) x627)
+(or x746 x736)
+(or x746 x735)
+(or (not x736) (not x735) (not x746))
+(or x747 x736)
+(or x747 (not x735))
+(or (not x736) x735 (not x747))
+(or x748 (not x736))
+(or x748 x735)
+(or x736 (not x735) (not x748))
+(or x341 x24)
+(or x341 (not x25))
+(or (not x24) x25 (not x341))
+(or x749 (not x736))
+(or x749 (not x735))
+(or x749 x24)
+(or x749 (not x25))
+(or x736 x735 (not x24) x25 (not x749))
+(or (not x749) (not x748) (not x747) (not x746) x683)
+(or (not x683) x749)
+(or (not x683) x748)
+(or (not x683) x747)
+(or (not x683) x746)
+(or x660 (not x659))
+(or x660 (not x658))
+(or x660 (not x657))
+(or x660 (not x656))
+(or x660 (not x25))
+(or x660 x317)
+(or x660 x316)
+(or x660 (not x683))
+(or x660 (not x589))
+(or x659 x658 x657 x656 x25 (not x317) (not x316) x683 x589 (not x660))
+(or x750 (not x659))
+(or x750 (not x658))
+(or x750 (not x657))
+(or x750 (not x656))
+(or x750 (not x25))
+(or x750 x317)
+(or x750 x316)
+(or x750 (not x683))
+(or x750 (not x589))
+(or x750 x694)
+(or x750 x689)
+(or x750 (not x744))
+(or x659 x658 x657 x656 x25 (not x317) (not x316) x683 x589 (not x694) (not x689) x744 (not x750))
+(or (not x750) (not x741) (not x662) (not x663) (not x732) (not x665) (not x727) (not x667) (not x724) (not x670) (not x719) x751)
+(or (not x751) x750)
+(or (not x751) x741)
+(or (not x751) x662)
+(or (not x751) x663)
+(or (not x751) x732)
+(or (not x751) x665)
+(or (not x751) x727)
+(or (not x751) x667)
+(or (not x751) x724)
+(or (not x751) x670)
+(or (not x751) x719)
+(or x410 (not x474))
+(or x410 (not x475))
+(or x410 (not x476))
+(or x410 (not x477))
+(or x410 (not x478))
+(or x410 (not x479))
+(or x474 x475 x476 x477 x478 x479 (not x410))
+(or x414 (not x549))
+(or x414 x548)
+(or x414 x547)
+(or x414 (not x546))
+(or x549 (not x548) (not x547) x546 (not x414))
+(or x461 (not x549))
+(or x461 x548)
+(or x461 (not x547))
+(or x461 x546)
+(or x549 (not x548) x547 (not x546) (not x461))
+(or x413 (not x549))
+(or x413 (not x548))
+(or x413 (not x547))
+(or x413 x546)
+(or x549 x548 x547 (not x546) (not x413))
+(or x752 (not x549))
+(or x752 (not x548))
+(or x752 x547)
+(or x752 x546)
+(or x549 x548 (not x547) (not x546) (not x752))
+(or x412 (not x659))
+(or x412 x658)
+(or x412 x657)
+(or x412 (not x656))
+(or x659 (not x658) (not x657) x656 (not x412))
+(or x459 (not x659))
+(or x459 x658)
+(or x459 (not x657))
+(or x459 x656)
+(or x659 (not x658) x657 (not x656) (not x459))
+(or x411 (not x659))
+(or x411 (not x658))
+(or x411 (not x657))
+(or x411 x656)
+(or x659 x658 x657 (not x656) (not x411))
+(or x753 (not x659))
+(or x753 (not x658))
+(or x753 x657)
+(or x753 x656)
+(or x659 x658 (not x657) (not x656) (not x753))
+(or (not x753) (not x411) (not x459) (not x412) (not x752) (not x413) (not x461) (not x414) x359 x360 x530)
+(or (not x530) x753)
+(or (not x530) x411)
+(or (not x530) x459)
+(or (not x530) x412)
+(or (not x530) x752)
+(or (not x530) x413)
+(or (not x530) x461)
+(or (not x530) x414)
+(or (not x530) (not x359))
+(or (not x530) (not x360))
+(or x396 (not x530))
+(or x396 (not x488))
+(or x396 (not x475))
+(or x396 (not x490))
+(or x396 (not x478))
+(or x530 x488 x475 x490 x478 (not x396))
+(or x754 (not x530))
+(or x754 (not x488))
+(or x754 (not x475))
+(or x754 (not x490))
+(or x754 (not x478))
+(or x754 (not x474))
+(or x754 (not x475))
+(or x754 (not x476))
+(or x754 (not x477))
+(or x754 (not x478))
+(or x754 (not x479))
+(or x754 x371)
+(or x530 x488 x475 x490 x478 x474 x475 x476 x477 x478 x479 (not x371) (not x754))
+(or (not x754) (not x529) x755)
+(or (not x755) x754)
+(or (not x755) x529)
+(or (not x756) x403)
+(or (not x756) (not x402))
+(or (not x756) (not x401))
+(or (not x756) x400)
+(or (not x403) x402 x401 x400 x480)
+(or (not x480) x403)
+(or (not x480) (not x402))
+(or (not x480) (not x401))
+(or (not x480) (not x400))
+(or (not x757) (not x403))
+(or (not x757) x402)
+(or (not x757) x401)
+(or (not x757) x400)
+(or x758 (not x757))
+(or x758 (not x480))
+(or x757 x480 (not x758))
+(or x549 (not x548) (not x547) x546 x478)
+(or (not x478) (not x549))
+(or (not x478) x548)
+(or (not x478) x547)
+(or (not x478) (not x546))
+(or x549 (not x548) x547 (not x546) x479)
+(or (not x479) (not x549))
+(or (not x479) x548)
+(or (not x479) (not x547))
+(or (not x479) x546)
+(or x549 (not x548) x547 x546 x477)
+(or (not x477) (not x549))
+(or (not x477) x548)
+(or (not x477) (not x547))
+(or (not x477) (not x546))
+(or x549 x548 (not x547) (not x546) x489)
+(or (not x489) (not x549))
+(or (not x489) (not x548))
+(or (not x489) x547)
+(or (not x489) x546)
+(or x549 x548 (not x547) x546 x541)
+(or (not x541) (not x549))
+(or (not x541) (not x548))
+(or (not x541) x547)
+(or (not x541) (not x546))
+(or x549 x548 x547 (not x546) x490)
+(or (not x490) (not x549))
+(or (not x490) (not x548))
+(or (not x490) (not x547))
+(or (not x490) x546)
+(or (not x759) (not x549))
+(or (not x759) (not x548))
+(or (not x759) (not x547))
+(or (not x759) (not x546))
+(or x760 (not x759))
+(or x760 (not x490))
+(or x760 (not x541))
+(or x760 (not x489))
+(or x760 (not x477))
+(or x760 (not x479))
+(or x759 x490 x541 x489 x477 x479 (not x760))
+(or x659 (not x658) (not x657) x656 x475)
+(or (not x475) (not x659))
+(or (not x475) x658)
+(or (not x475) x657)
+(or (not x475) (not x656))
+(or x659 (not x658) x657 (not x656) x476)
+(or (not x476) (not x659))
+(or (not x476) x658)
+(or (not x476) (not x657))
+(or (not x476) x656)
+(or x659 (not x658) x657 x656 x474)
+(or (not x474) (not x659))
+(or (not x474) x658)
+(or (not x474) (not x657))
+(or (not x474) (not x656))
+(or x659 x658 (not x657) (not x656) x487)
+(or (not x487) (not x659))
+(or (not x487) (not x658))
+(or (not x487) x657)
+(or (not x487) x656)
+(or x659 x658 (not x657) x656 x651)
+(or (not x651) (not x659))
+(or (not x651) (not x658))
+(or (not x651) x657)
+(or (not x651) (not x656))
+(or x659 x658 x657 (not x656) x488)
+(or (not x488) (not x659))
+(or (not x488) (not x658))
+(or (not x488) (not x657))
+(or (not x488) x656)
+(or (not x761) (not x659))
+(or (not x761) (not x658))
+(or (not x761) (not x657))
+(or (not x761) (not x656))
+(or x762 (not x761))
+(or x762 (not x488))
+(or x762 (not x651))
+(or x762 (not x487))
+(or x762 (not x474))
+(or x762 (not x476))
+(or x761 x488 x651 x487 x474 x476 (not x762))
+(or x763 (not x764))
+(or x763 (not x765))
+(or x763 (not x766))
+(or x763 (not x767))
+(or x763 (not x768))
+(or x763 (not x769))
+(or x763 (not x32))
+(or x763 x31)
+(or x763 x30)
+(or x763 x29)
+(or x763 (not x770))
+(or x763 x771)
+(or x764 x765 x766 x767 x768 x769 x32 (not x31) (not x30) (not x29) x770 (not x771) (not x763))
+(or x772 (not x764))
+(or x772 (not x765))
+(or x772 (not x766))
+(or x772 (not x767))
+(or x772 (not x768))
+(or x772 (not x32))
+(or x772 x31)
+(or x772 x30)
+(or x772 (not x29))
+(or x772 x33)
+(or x772 (not x34))
+(or x772 x773)
+(or x764 x765 x766 x767 x768 x32 (not x31) (not x30) x29 (not x33) x34 (not x773) (not x772))
+(or x774 (not x32))
+(or x774 (not x31))
+(or x774 (not x30))
+(or x774 x29)
+(or x774 (not x775))
+(or x32 x31 x30 (not x29) x775 (not x774))
+(or (not x774) (not x776) (not x777) (not x778) (not x779) (not x772) (not x763) (not x780) x781)
+(or (not x781) x774)
+(or (not x781) x776)
+(or (not x781) x777)
+(or (not x781) x778)
+(or (not x781) x779)
+(or (not x781) x772)
+(or (not x781) x763)
+(or (not x781) x780)
+(or x782 (not x764))
+(or x782 (not x765))
+(or x782 (not x32))
+(or x782 (not x31))
+(or x782 x30)
+(or x782 x29)
+(or x782 (not x770))
+(or x782 x783)
+(or x764 x765 x32 x31 (not x30) (not x29) x770 (not x783) (not x782))
+(or x784 (not x764))
+(or x784 (not x32))
+(or x784 (not x31))
+(or x784 x30)
+(or x784 (not x29))
+(or x784 x786)
+(or x784 x785)
+(or x784 (not x770))
+(or x784 x787)
+(or x764 x32 x31 (not x30) x29 (not x786) (not x785) x770 (not x787) (not x784))
+(or x788 (not x789) x775)
+(or (not x775) (not x788))
+(or (not x775) x789)
+(or x788 (not x789) (not x790) x791)
+(or (not x791) (not x788))
+(or (not x791) x789)
+(or (not x791) x790)
+(or x792 (not x32))
+(or x792 (not x31))
+(or x792 (not x30))
+(or x792 x29)
+(or x792 (not x791))
+(or x32 x31 x30 (not x29) x791 (not x792))
+(or (not x792) (not x784) (not x782) (not x793) (not x794) (not x795) (not x796) (not x780) x797)
+(or (not x797) x792)
+(or (not x797) x784)
+(or (not x797) x782)
+(or (not x797) x793)
+(or (not x797) x794)
+(or (not x797) x795)
+(or (not x797) x796)
+(or (not x797) x780)
+(or x798 (not x764))
+(or x798 (not x765))
+(or x798 (not x766))
+(or x798 (not x767))
+(or x798 (not x32))
+(or x798 x31)
+(or x798 (not x30))
+(or x798 x29)
+(or x798 (not x770))
+(or x798 x799)
+(or x764 x765 x766 x767 x32 (not x31) x30 (not x29) x770 (not x799) (not x798))
+(or x800 (not x764))
+(or x800 (not x765))
+(or x800 (not x766))
+(or x800 (not x32))
+(or x800 x31)
+(or x800 (not x30))
+(or x800 (not x29))
+(or x800 x33)
+(or x800 (not x34))
+(or x800 x801)
+(or x764 x765 x766 x32 (not x31) x30 x29 (not x33) x34 (not x801) (not x800))
+(or x790 (not x788))
+(or x790 (not x802))
+(or x788 x802 (not x790))
+(or x788 (not x790) x803)
+(or (not x803) (not x788))
+(or (not x803) x790)
+(or x804 (not x32))
+(or x804 (not x31))
+(or x804 (not x30))
+(or x804 x29)
+(or x804 (not x803))
+(or x32 x31 x30 (not x29) x803 (not x804))
+(or (not x804) (not x805) (not x806) (not x800) (not x798) (not x793) (not x794) (not x807) (not x808) (not x780) x809)
+(or (not x809) x804)
+(or (not x809) x805)
+(or (not x809) x806)
+(or (not x809) x800)
+(or (not x809) x798)
+(or (not x809) x793)
+(or (not x809) x794)
+(or (not x809) x807)
+(or (not x809) x808)
+(or (not x809) x780)
+(or (not x32) (not x31) x30 x29 (not x810) x811)
+(or (not x811) x32)
+(or (not x811) x31)
+(or (not x811) (not x30))
+(or (not x811) (not x29))
+(or (not x811) x810)
+(or x780 (not x764))
+(or x780 (not x765))
+(or x780 (not x766))
+(or x780 (not x767))
+(or x780 (not x768))
+(or x780 (not x769))
+(or x780 (not x812))
+(or x780 (not x813))
+(or x780 (not x814))
+(or x780 (not x815))
+(or x780 (not x811))
+(or x764 x765 x766 x767 x768 x769 x812 x813 x814 x815 x811 (not x780))
+(or (not x32) x31 (not x30) (not x29) (not x33) x34 x815)
+(or (not x815) x32)
+(or (not x815) (not x31))
+(or (not x815) x30)
+(or (not x815) x29)
+(or (not x815) x33)
+(or (not x815) (not x34))
+(or x808 (not x764))
+(or x808 (not x765))
+(or x808 (not x766))
+(or x808 (not x767))
+(or x808 (not x768))
+(or x808 (not x769))
+(or x808 (not x812))
+(or x808 (not x813))
+(or x808 (not x814))
+(or x808 (not x815))
+(or x808 x32)
+(or x808 x31)
+(or x808 (not x30))
+(or x808 (not x29))
+(or x808 (not x770))
+(or x764 x765 x766 x767 x768 x769 x812 x813 x814 x815 (not x32) (not x31) x30 x29 x770 (not x808))
+(or x816 (not x764))
+(or x816 (not x765))
+(or x816 (not x766))
+(or x816 (not x767))
+(or x816 (not x768))
+(or x816 (not x769))
+(or x816 (not x812))
+(or x816 (not x813))
+(or x816 (not x814))
+(or x816 (not x815))
+(or x816 x32)
+(or x816 x31)
+(or x816 (not x30))
+(or x816 (not x29))
+(or x816 (not x770))
+(or x816 x817)
+(or x764 x765 x766 x767 x768 x769 x812 x813 x814 x815 (not x32) (not x31) x30 x29 x770 (not x817) (not x816))
+(or (not x32) x31 (not x30) x29 (not x810) x814)
+(or (not x814) x32)
+(or (not x814) (not x31))
+(or (not x814) x30)
+(or (not x814) (not x29))
+(or (not x814) x810)
+(or x807 (not x764))
+(or x807 (not x765))
+(or x807 (not x766))
+(or x807 (not x767))
+(or x807 (not x768))
+(or x807 (not x769))
+(or x807 (not x812))
+(or x807 (not x813))
+(or x807 (not x814))
+(or x807 x32)
+(or x807 (not x31))
+(or x807 x30)
+(or x807 x29)
+(or x807 x33)
+(or x807 (not x34))
+(or x764 x765 x766 x767 x768 x769 x812 x813 x814 (not x32) x31 (not x30) (not x29) (not x33) x34 (not x807))
+(or x818 (not x764))
+(or x818 (not x765))
+(or x818 (not x766))
+(or x818 (not x767))
+(or x818 (not x768))
+(or x818 (not x769))
+(or x818 (not x812))
+(or x818 (not x813))
+(or x818 (not x814))
+(or x818 x32)
+(or x818 (not x31))
+(or x818 x30)
+(or x818 x29)
+(or x818 x33)
+(or x818 (not x34))
+(or x818 x819)
+(or x764 x765 x766 x767 x768 x769 x812 x813 x814 (not x32) x31 (not x30) (not x29) (not x33) x34 (not x819) (not x818))
+(or (not x32) x31 x30 (not x29) (not x786) (not x785) (not x33) x34 x813)
+(or (not x813) x32)
+(or (not x813) (not x31))
+(or (not x813) (not x30))
+(or (not x813) x29)
+(or (not x813) x786)
+(or (not x813) x785)
+(or (not x813) x33)
+(or (not x813) (not x34))
+(or x796 (not x764))
+(or x796 (not x765))
+(or x796 (not x766))
+(or x796 (not x767))
+(or x796 (not x768))
+(or x796 (not x769))
+(or x796 (not x812))
+(or x796 (not x813))
+(or x796 x32)
+(or x796 (not x31))
+(or x796 x30)
+(or x796 (not x29))
+(or x796 (not x770))
+(or x764 x765 x766 x767 x768 x769 x812 x813 (not x32) x31 (not x30) x29 x770 (not x796))
+(or x820 (not x764))
+(or x820 (not x765))
+(or x820 (not x766))
+(or x820 (not x767))
+(or x820 (not x768))
+(or x820 (not x769))
+(or x820 (not x812))
+(or x820 (not x813))
+(or x820 x32)
+(or x820 (not x31))
+(or x820 x30)
+(or x820 (not x29))
+(or x820 (not x770))
+(or x820 x821)
+(or x764 x765 x766 x767 x768 x769 x812 x813 (not x32) x31 (not x30) x29 x770 (not x821) (not x820))
+(or x32 (not x31) (not x30) (not x29) (not x810) x812)
+(or (not x812) (not x32))
+(or (not x812) x31)
+(or (not x812) x30)
+(or (not x812) x29)
+(or (not x812) x810)
+(or x795 (not x764))
+(or x795 (not x765))
+(or x795 (not x766))
+(or x795 (not x767))
+(or x795 (not x768))
+(or x795 (not x769))
+(or x795 (not x812))
+(or x795 x32)
+(or x795 (not x31))
+(or x795 (not x30))
+(or x795 x29)
+(or x795 x786)
+(or x795 x785)
+(or x795 x33)
+(or x795 (not x34))
+(or x764 x765 x766 x767 x768 x769 x812 (not x32) x31 x30 (not x29) (not x786) (not x785) (not x33) x34 (not x795))
+(or x822 (not x764))
+(or x822 (not x765))
+(or x822 (not x766))
+(or x822 (not x767))
+(or x822 (not x768))
+(or x822 (not x769))
+(or x822 (not x812))
+(or x822 x32)
+(or x822 (not x31))
+(or x822 (not x30))
+(or x822 x29)
+(or x822 x786)
+(or x822 x785)
+(or x822 x33)
+(or x822 (not x34))
+(or x822 x823)
+(or x764 x765 x766 x767 x768 x769 x812 (not x32) x31 x30 (not x29) (not x786) (not x785) (not x33) x34 (not x823) (not x822))
+(or x32 (not x31) (not x30) x29 (not x33) x34 x769)
+(or (not x769) (not x32))
+(or (not x769) x31)
+(or (not x769) x30)
+(or (not x769) (not x29))
+(or (not x769) x33)
+(or (not x769) (not x34))
+(or x794 (not x764))
+(or x794 (not x765))
+(or x794 (not x766))
+(or x794 (not x767))
+(or x794 (not x768))
+(or x794 (not x769))
+(or x794 (not x32))
+(or x794 x31)
+(or x794 x30)
+(or x794 x29)
+(or x794 (not x770))
+(or x794 (not x771))
+(or x764 x765 x766 x767 x768 x769 x32 (not x31) (not x30) (not x29) x770 x771 (not x794))
+(or x32 (not x31) x30 (not x29) (not x810) x768)
+(or (not x768) (not x32))
+(or (not x768) x31)
+(or (not x768) (not x30))
+(or (not x768) x29)
+(or (not x768) x810)
+(or x793 (not x764))
+(or x793 (not x765))
+(or x793 (not x766))
+(or x793 (not x767))
+(or x793 (not x768))
+(or x793 (not x32))
+(or x793 x31)
+(or x793 x30)
+(or x793 (not x29))
+(or x793 x33)
+(or x793 (not x34))
+(or x793 (not x773))
+(or x764 x765 x766 x767 x768 x32 (not x31) (not x30) x29 (not x33) x34 x773 (not x793))
+(or x32 (not x31) x30 x29 (not x33) x34 x767)
+(or (not x767) (not x32))
+(or (not x767) x31)
+(or (not x767) (not x30))
+(or (not x767) (not x29))
+(or (not x767) x33)
+(or (not x767) (not x34))
+(or x779 (not x764))
+(or x779 (not x765))
+(or x779 (not x766))
+(or x779 (not x767))
+(or x779 (not x32))
+(or x779 x31)
+(or x779 (not x30))
+(or x779 x29)
+(or x779 (not x770))
+(or x764 x765 x766 x767 x32 (not x31) x30 (not x29) x770 (not x779))
+(or x824 (not x764))
+(or x824 (not x765))
+(or x824 (not x766))
+(or x824 (not x767))
+(or x824 (not x32))
+(or x824 x31)
+(or x824 (not x30))
+(or x824 x29)
+(or x824 (not x770))
+(or x824 (not x799))
+(or x764 x765 x766 x767 x32 (not x31) x30 (not x29) x770 x799 (not x824))
+(or x32 x31 (not x30) (not x29) (not x810) x766)
+(or (not x766) (not x32))
+(or (not x766) (not x31))
+(or (not x766) x30)
+(or (not x766) x29)
+(or (not x766) x810)
+(or x778 (not x764))
+(or x778 (not x765))
+(or x778 (not x766))
+(or x778 (not x32))
+(or x778 x31)
+(or x778 (not x30))
+(or x778 (not x29))
+(or x778 x33)
+(or x778 (not x34))
+(or x764 x765 x766 x32 (not x31) x30 x29 (not x33) x34 (not x778))
+(or x825 (not x764))
+(or x825 (not x765))
+(or x825 (not x766))
+(or x825 (not x32))
+(or x825 x31)
+(or x825 (not x30))
+(or x825 (not x29))
+(or x825 x33)
+(or x825 (not x34))
+(or x825 (not x801))
+(or x764 x765 x766 x32 (not x31) x30 x29 (not x33) x34 x801 (not x825))
+(or x32 x31 (not x30) x29 (not x786) (not x785) (not x810) x765)
+(or (not x765) (not x32))
+(or (not x765) (not x31))
+(or (not x765) x30)
+(or (not x765) (not x29))
+(or (not x765) x786)
+(or (not x765) x785)
+(or (not x765) x810)
+(or x777 (not x764))
+(or x777 (not x765))
+(or x777 (not x32))
+(or x777 (not x31))
+(or x777 x30)
+(or x777 x29)
+(or x777 (not x770))
+(or x764 x765 x32 x31 (not x30) (not x29) x770 (not x777))
+(or x806 (not x764))
+(or x806 (not x765))
+(or x806 (not x32))
+(or x806 (not x31))
+(or x806 x30)
+(or x806 x29)
+(or x806 (not x770))
+(or x806 (not x783))
+(or x764 x765 x32 x31 (not x30) (not x29) x770 x783 (not x806))
+(or x32 x31 x30 (not x29) x764)
+(or (not x764) (not x32))
+(or (not x764) (not x31))
+(or (not x764) (not x30))
+(or (not x764) x29)
+(or x776 (not x764))
+(or x776 (not x32))
+(or x776 (not x31))
+(or x776 x30)
+(or x776 (not x29))
+(or x776 x786)
+(or x776 x785)
+(or x776 (not x770))
+(or x764 x32 x31 (not x30) x29 (not x786) (not x785) x770 (not x776))
+(or x805 (not x764))
+(or x805 (not x32))
+(or x805 (not x31))
+(or x805 x30)
+(or x805 (not x29))
+(or x805 x786)
+(or x805 x785)
+(or x805 (not x770))
+(or x805 (not x787))
+(or x764 x32 x31 (not x30) x29 (not x786) (not x785) x770 x787 (not x805))
+(or x789 (not x788))
+(or x789 x802)
+(or x788 (not x802) (not x789))
+(or x826 (not x32))
+(or x826 (not x31))
+(or x826 (not x30))
+(or x826 x29)
+(or x826 (not x788))
+(or x826 x802)
+(or x32 x31 x30 (not x29) x788 (not x802) (not x826))
+(or (not x826) (not x805) (not x806) (not x825) (not x824) (not x793) (not x794) (not x822) (not x820) (not x818) (not x816) (not x780) x827)
+(or (not x827) x826)
+(or (not x827) x805)
+(or (not x827) x806)
+(or (not x827) x825)
+(or (not x827) x824)
+(or (not x827) x793)
+(or (not x827) x794)
+(or (not x827) x822)
+(or (not x827) x820)
+(or (not x827) x818)
+(or (not x827) x816)
+(or (not x827) x780)
+(or x828 x829 (not x830) x831)
+(or (not x831) (not x828))
+(or (not x831) (not x829))
+(or (not x831) x830)
+(or (not x828) x829 (not x832) x833)
+(or (not x833) x828)
+(or (not x833) (not x829))
+(or (not x833) x832)
+(or x834 (not x833))
+(or x834 (not x831))
+(or x833 x831 (not x834))
+(or (not x835) (not x836) x837 x838 (not x839) x840)
+(or (not x840) x835)
+(or (not x840) x836)
+(or (not x840) (not x837))
+(or (not x840) (not x838))
+(or (not x840) x839)
+(or x830 (not x829))
+(or x830 (not x840))
+(or x829 x840 (not x830))
+(or (not x829) (not x830) x841)
+(or (not x841) x829)
+(or (not x841) x830)
+(or x829 (not x828) x842)
+(or (not x842) (not x829))
+(or (not x842) x828)
+(or x832 (not x843))
+(or x832 x836)
+(or x832 (not x837))
+(or x832 (not x838))
+(or x832 x839)
+(or x843 (not x836) x837 x838 (not x839) (not x832))
+(or x829 (not x832) x844)
+(or (not x844) (not x829))
+(or (not x844) x832)
+(or x845 (not x844))
+(or x845 (not x842))
+(or x844 x842 (not x845))
+(or (not x846) (not x845) x847)
+(or (not x847) x846)
+(or (not x847) x845)
+(or x848 (not x847))
+(or x848 (not x841))
+(or x847 x841 (not x848))
+(or x849 (not x829))
+(or x849 (not x850))
+(or x849 (not x851))
+(or x829 x850 x851 (not x849))
+(or x852 (not x829))
+(or x852 x856)
+(or x852 (not x855))
+(or x852 (not x854))
+(or x852 (not x853))
+(or x829 (not x856) x855 x854 x853 (not x852))
+(or x857 x858)
+(or x857 x859)
+(or (not x858) (not x859) (not x857))
+(or (not x857) (not x858) x860)
+(or (not x860) x857)
+(or (not x860) x858)
+(or x861 x829)
+(or x861 x862)
+(or x861 (not x860))
+(or (not x829) (not x862) x860 (not x861))
+(or (not x861) (not x852) (not x849) x863)
+(or (not x863) x861)
+(or (not x863) x852)
+(or (not x863) x849)
+(or (not x856) x855 x854 x853 (not x864) x865)
+(or (not x865) x856)
+(or (not x865) (not x855))
+(or (not x865) (not x854))
+(or (not x865) (not x853))
+(or (not x865) x864)
+(or (not x866) (not x867) x868 (not x869) (not x870) (not x871) (not x872) (not x873) (not x874) (not x875) (not x876) (not x877) x878)
+(or (not x878) x866)
+(or (not x878) x867)
+(or (not x878) (not x868))
+(or (not x878) x869)
+(or (not x878) x870)
+(or (not x878) x871)
+(or (not x878) x872)
+(or (not x878) x873)
+(or (not x878) x874)
+(or (not x878) x875)
+(or (not x878) x876)
+(or (not x878) x877)
+(or x879 (not x878))
+(or x879 (not x865))
+(or x878 x865 (not x879))
+(or x880 x881 x882)
+(or (not x882) (not x880))
+(or (not x882) (not x881))
+(or x883 x786)
+(or x883 x785)
+(or x883 (not x884))
+(or x883 (not x885))
+(or x883 (not x882))
+(or (not x786) (not x785) x884 x885 x882 (not x883))
+(or (not x886) (not x883) x887)
+(or (not x887) x886)
+(or (not x887) x883)
+(or x888 (not x880))
+(or x888 (not x889))
+(or x880 x889 (not x888))
+(or (not x881) (not x888) x890)
+(or (not x890) x881)
+(or (not x890) x888)
+(or x891 (not x890))
+(or x891 (not x887))
+(or x890 x887 (not x891))
+(or x892 (not x786) (not x785) (not x893) (not x894) x889)
+(or (not x889) (not x892))
+(or (not x889) x786)
+(or (not x889) x785)
+(or (not x889) x893)
+(or (not x889) x894)
+(or (not x880) x892 (not x786) (not x785) (not x893) (not x894) x895)
+(or (not x895) x880)
+(or (not x895) (not x892))
+(or (not x895) x786)
+(or (not x895) x785)
+(or (not x895) x893)
+(or (not x895) x894)
+(or x896 x786)
+(or x896 x785)
+(or x896 (not x884))
+(or x896 (not x885))
+(or x896 x880)
+(or (not x786) (not x785) x884 x885 (not x880) (not x896))
+(or x886 (not x892))
+(or x886 x786)
+(or x886 x785)
+(or x886 (not x884))
+(or x886 (not x885))
+(or x892 (not x786) (not x785) x884 x885 (not x886))
+(or (not x886) (not x896) x897)
+(or (not x897) x886)
+(or (not x897) x896)
+(or x898 (not x897))
+(or x898 (not x895))
+(or x897 x895 (not x898))
+(or x836 (not x839) x899)
+(or (not x899) (not x836))
+(or (not x899) x839)
+(or x900 (not x901))
+(or x900 x867)
+(or x900 x902)
+(or x900 (not x899))
+(or x901 (not x867) (not x902) x899 (not x900))
+(or (not x903) (not x866) (not x900) x904)
+(or (not x904) x903)
+(or (not x904) x866)
+(or (not x904) x900)
+(or x905 (not x836))
+(or x905 x839)
+(or x836 (not x839) (not x905))
+(or (not x906) (not x867) (not x902) (not x905) x907)
+(or (not x907) x906)
+(or (not x907) x867)
+(or (not x907) x902)
+(or (not x907) x905)
+(or x908 (not x850))
+(or x908 (not x907))
+(or x850 x907 (not x908))
+(or (not x908) (not x866) x909)
+(or (not x909) x908)
+(or (not x909) x866)
+(or x910 (not x909))
+(or x910 (not x904))
+(or x909 x904 (not x910))
+(or x911 (not x912))
+(or x911 x892)
+(or x912 (not x892) (not x911))
+(or (not x836) (not x786) (not x785) (not x913) (not x838) (not x914) (not x915) x892 x916 x917 x918 x919 x920 (not x836) x921 x868 x922 x923 x829 x924 x925)
+(or (not x925) x836)
+(or (not x925) x786)
+(or (not x925) x785)
+(or (not x925) x913)
+(or (not x925) x838)
+(or (not x925) x914)
+(or (not x925) x915)
+(or (not x925) (not x892))
+(or (not x925) (not x916))
+(or (not x925) (not x917))
+(or (not x925) (not x918))
+(or (not x925) (not x919))
+(or (not x925) (not x920))
+(or (not x925) x836)
+(or (not x925) (not x921))
+(or (not x925) (not x868))
+(or (not x925) (not x922))
+(or (not x925) (not x923))
+(or (not x925) (not x829))
+(or (not x925) (not x924))
+(or (not x926) (not x927) (not x786) (not x785) (not x892) x836 x916 x917 x918 x919 x921 x868 x922 x923 x829 x924 x928)
+(or (not x928) x926)
+(or (not x928) x927)
+(or (not x928) x786)
+(or (not x928) x785)
+(or (not x928) x892)
+(or (not x928) (not x836))
+(or (not x928) (not x916))
+(or (not x928) (not x917))
+(or (not x928) (not x918))
+(or (not x928) (not x919))
+(or (not x928) (not x921))
+(or (not x928) (not x868))
+(or (not x928) (not x922))
+(or (not x928) (not x923))
+(or (not x928) (not x829))
+(or (not x928) (not x924))
+(or x929 (not x928))
+(or x929 (not x925))
+(or x928 x925 (not x929))
+(or x916 x918 x919 (not x917) x921 x868 x922 x923 x829 x924 x892 x836 x930)
+(or (not x930) (not x916))
+(or (not x930) (not x918))
+(or (not x930) (not x919))
+(or (not x930) x917)
+(or (not x930) (not x921))
+(or (not x930) (not x868))
+(or (not x930) (not x922))
+(or (not x930) (not x923))
+(or (not x930) (not x829))
+(or (not x930) (not x924))
+(or (not x930) (not x892))
+(or (not x930) (not x836))
+(or (not x856) x855 x854 x853 (not x829) x924 x921 x836 x892 x922 x923 (not x931) (not x932) x868 x916 x917 x918 x919 x933)
+(or (not x933) x856)
+(or (not x933) (not x855))
+(or (not x933) (not x854))
+(or (not x933) (not x853))
+(or (not x933) x829)
+(or (not x933) (not x924))
+(or (not x933) (not x921))
+(or (not x933) (not x836))
+(or (not x933) (not x892))
+(or (not x933) (not x922))
+(or (not x933) (not x923))
+(or (not x933) x931)
+(or (not x933) x932)
+(or (not x933) (not x868))
+(or (not x933) (not x916))
+(or (not x933) (not x917))
+(or (not x933) (not x918))
+(or (not x933) (not x919))
+(or x934 (not x933))
+(or x934 (not x930))
+(or x933 x930 (not x934))
+(or (not x786) (not x785) (not x935) (not x934) x936)
+(or (not x936) x786)
+(or (not x936) x785)
+(or (not x936) x935)
+(or (not x936) x934)
+(or (not x786) (not x785) (not x892) x836 x916 x917 x918 x919 x921 x868 x922 x923 x829 x924 (not x937) (not x938) (not x939) (not x940) (not x941) (not x902) x942)
+(or (not x942) x786)
+(or (not x942) x785)
+(or (not x942) x892)
+(or (not x942) (not x836))
+(or (not x942) (not x916))
+(or (not x942) (not x917))
+(or (not x942) (not x918))
+(or (not x942) (not x919))
+(or (not x942) (not x921))
+(or (not x942) (not x868))
+(or (not x942) (not x922))
+(or (not x942) (not x923))
+(or (not x942) (not x829))
+(or (not x942) (not x924))
+(or (not x942) x937)
+(or (not x942) x938)
+(or (not x942) x939)
+(or (not x942) x940)
+(or (not x942) x941)
+(or (not x942) x902)
+(or (not x935) x917 x918 x919 x921 x868 x922 x923 x829 x924 x892 x836 x943)
+(or (not x943) x935)
+(or (not x943) (not x917))
+(or (not x943) (not x918))
+(or (not x943) (not x919))
+(or (not x943) (not x921))
+(or (not x943) (not x868))
+(or (not x943) (not x922))
+(or (not x943) (not x923))
+(or (not x943) (not x829))
+(or (not x943) (not x924))
+(or (not x943) (not x892))
+(or (not x943) (not x836))
+(or x944 (not x945))
+(or x944 (not x943))
+(or x945 x943 (not x944))
+(or (not x786) (not x785) (not x916) (not x944) x946)
+(or (not x946) x786)
+(or (not x946) x785)
+(or (not x946) x916)
+(or (not x946) x944)
+(or x921 x922 (not x923) (not x786) (not x785) x829 x924 x892 x836 x868 x916 x917 x918 x919 x947)
+(or (not x947) (not x921))
+(or (not x947) (not x922))
+(or (not x947) x923)
+(or (not x947) x786)
+(or (not x947) x785)
+(or (not x947) (not x829))
+(or (not x947) (not x924))
+(or (not x947) (not x892))
+(or (not x947) (not x836))
+(or (not x947) (not x868))
+(or (not x947) (not x916))
+(or (not x947) (not x917))
+(or (not x947) (not x918))
+(or (not x947) (not x919))
+(or x948 (not x947))
+(or x948 (not x946))
+(or x947 x946 (not x948))
+(or x949 x917)
+(or x949 x924)
+(or (not x917) (not x924) (not x949))
+(or x950 (not x917))
+(or x950 (not x935))
+(or x950 (not x829))
+(or x917 x935 x829 (not x950))
+(or x924 x917 (not x951) x952)
+(or (not x952) (not x924))
+(or (not x952) (not x917))
+(or (not x952) x951)
+(or x953 x829)
+(or x953 (not x952))
+(or (not x829) x952 (not x953))
+(or x954 x935)
+(or x954 (not x829))
+(or x954 (not x924))
+(or (not x935) x829 x924 (not x954))
+(or (not x786) (not x785) x868 x916 x921 x836 x892 x922 x923 x918 x919 (not x954) (not x953) (not x950) (not x949) x955)
+(or (not x955) x786)
+(or (not x955) x785)
+(or (not x955) (not x868))
+(or (not x955) (not x916))
+(or (not x955) (not x921))
+(or (not x955) (not x836))
+(or (not x955) (not x892))
+(or (not x955) (not x922))
+(or (not x955) (not x923))
+(or (not x955) (not x918))
+(or (not x955) (not x919))
+(or (not x955) x954)
+(or (not x955) x953)
+(or (not x955) x950)
+(or (not x955) x949)
+(or (not x786) (not x785) (not x956) x957)
+(or (not x957) x786)
+(or (not x957) x785)
+(or (not x957) x956)
+(or x877 (not x958))
+(or x877 (not x959))
+(or x958 x959 (not x877))
+(or x960 (not x961))
+(or x960 x918)
+(or x961 (not x918) (not x960))
+(or x962 (not x829))
+(or x962 (not x918))
+(or x962 (not x916))
+(or x962 (not x917))
+(or x829 x918 x916 x917 (not x962))
+(or x963 x917)
+(or x963 x916)
+(or (not x917) (not x916) (not x963))
+(or x919 (not x963) (not x962) (not x960) x964)
+(or (not x964) (not x919))
+(or (not x964) x963)
+(or (not x964) x962)
+(or (not x964) x960)
+(or x876 (not x924))
+(or x876 (not x921))
+(or x876 (not x836))
+(or x876 (not x892))
+(or x876 (not x922))
+(or x876 (not x923))
+(or x876 (not x964))
+(or x924 x921 x836 x892 x922 x923 x964 (not x876))
+(or x875 x923)
+(or x875 x922)
+(or (not x923) (not x922) (not x875))
+(or x874 (not x965))
+(or x874 x924)
+(or x965 (not x924) (not x874))
+(or x873 x836)
+(or x873 (not x966))
+(or (not x836) x966 (not x873))
+(or (not x856) x855 x854 x853 x935 x967)
+(or (not x967) x856)
+(or (not x967) (not x855))
+(or (not x967) (not x854))
+(or (not x967) (not x853))
+(or (not x967) (not x935))
+(or (not x856) x855 x854 x853 (not x935) (not x851) x968)
+(or (not x968) x856)
+(or (not x968) (not x855))
+(or (not x968) (not x854))
+(or (not x968) (not x853))
+(or (not x968) x935)
+(or (not x968) x851)
+(or x951 (not x968))
+(or x951 (not x967))
+(or x968 x967 (not x951))
+(or (not x856) x855 x854 x853 (not x935) x969)
+(or (not x969) x856)
+(or (not x969) (not x855))
+(or (not x969) (not x854))
+(or (not x969) (not x853))
+(or (not x969) x935)
+(or x970 (not x969))
+(or x970 (not x968))
+(or x970 (not x967))
+(or x969 x968 x967 (not x970))
+(or x918 x916 x917 x924 x921 x836 x892 x922 x923 (not x970) x971)
+(or (not x971) (not x918))
+(or (not x971) (not x916))
+(or (not x971) (not x917))
+(or (not x971) (not x924))
+(or (not x971) (not x921))
+(or (not x971) (not x836))
+(or (not x971) (not x892))
+(or (not x971) (not x922))
+(or (not x971) (not x923))
+(or (not x971) x970)
+(or x872 x829)
+(or x872 (not x971))
+(or (not x829) x971 (not x872))
+(or x871 (not x972))
+(or x871 x892)
+(or x972 (not x892) (not x871))
+(or x870 (not x973))
+(or x870 x921)
+(or x973 (not x921) (not x870))
+(or x869 x920)
+(or x869 x836)
+(or (not x920) (not x836) (not x869))
+(or (not x902) (not x786) (not x785) x868 (not x869) (not x870) (not x871) (not x872) (not x873) (not x874) (not x875) (not x876) (not x877) (not x974) (not x939) (not x975) (not x976) (not x941) (not x977) (not x866) x978)
+(or (not x978) x902)
+(or (not x978) x786)
+(or (not x978) x785)
+(or (not x978) (not x868))
+(or (not x978) x869)
+(or (not x978) x870)
+(or (not x978) x871)
+(or (not x978) x872)
+(or (not x978) x873)
+(or (not x978) x874)
+(or (not x978) x875)
+(or (not x978) x876)
+(or (not x978) x877)
+(or (not x978) x974)
+(or (not x978) x939)
+(or (not x978) x975)
+(or (not x978) x976)
+(or (not x978) x941)
+(or (not x978) x977)
+(or (not x978) x866)
+(or x979 x786)
+(or x979 x785)
+(or x979 (not x868))
+(or x979 (not x980))
+(or x979 (not x981))
+(or x979 (not x982))
+(or x979 (not x983))
+(or x979 (not x984))
+(or x979 (not x985))
+(or x979 (not x986))
+(or x979 (not x987))
+(or x979 (not x988))
+(or x979 (not x989))
+(or x979 (not x990))
+(or x979 (not x991))
+(or x979 (not x992))
+(or x979 (not x993))
+(or x979 (not x994))
+(or x979 (not x850))
+(or (not x786) (not x785) x868 x980 x981 x982 x983 x984 x985 x986 x987 x988 x989 x990 x991 x992 x993 x994 x850 (not x979))
+(or x995 x786)
+(or x995 x785)
+(or x995 (not x868))
+(or x995 (not x980))
+(or x995 (not x981))
+(or x995 (not x982))
+(or x995 (not x983))
+(or x995 (not x984))
+(or x995 (not x985))
+(or x995 (not x986))
+(or x995 (not x987))
+(or x995 (not x988))
+(or x995 (not x989))
+(or x995 (not x990))
+(or x995 (not x991))
+(or x995 (not x992))
+(or x995 (not x993))
+(or x995 (not x994))
+(or x995 x864)
+(or (not x786) (not x785) x868 x980 x981 x982 x983 x984 x985 x986 x987 x988 x989 x990 x991 x992 x993 x994 (not x864) (not x995))
+(or (not x995) (not x979) x996)
+(or (not x996) x995)
+(or (not x996) x979)
+(or x997 (not x996))
+(or x997 (not x978))
+(or x996 x978 (not x997))
+(or (not x866) (not x998) x999)
+(or (not x999) x866)
+(or (not x999) x998)
+(or (not x856) x855 x854 x853 (not x1000) x1001)
+(or (not x1001) x856)
+(or (not x1001) (not x855))
+(or (not x1001) (not x854))
+(or (not x1001) (not x853))
+(or (not x1001) x1000)
+(or x1002 (not x1001))
+(or x1002 (not x999))
+(or x1001 x999 (not x1002))
+(or (not x866) (not x1003) x1004)
+(or (not x1004) x866)
+(or (not x1004) x1003)
+(or x1005 (not x850))
+(or x1005 (not x1004))
+(or x850 x1004 (not x1005))
+(or x922 x923 (not x921) (not x786) (not x785) x829 x924 x892 x836 x868 x916 x917 x918 x919 x1006)
+(or (not x1006) (not x922))
+(or (not x1006) (not x923))
+(or (not x1006) x921)
+(or (not x1006) x786)
+(or (not x1006) x785)
+(or (not x1006) (not x829))
+(or (not x1006) (not x924))
+(or (not x1006) (not x892))
+(or (not x1006) (not x836))
+(or (not x1006) (not x868))
+(or (not x1006) (not x916))
+(or (not x1006) (not x917))
+(or (not x1006) (not x918))
+(or (not x1006) (not x919))
+(or (not x938) (not x939) (not x940) (not x941) x1007)
+(or (not x1007) x938)
+(or (not x1007) x939)
+(or (not x1007) x940)
+(or (not x1007) x941)
+(or x1008 (not x1009))
+(or x1008 (not x1010))
+(or x1008 (not x991))
+(or x1008 (not x990))
+(or x1008 (not x1011))
+(or x1008 (not x1012))
+(or x1008 (not x994))
+(or x1008 (not x993))
+(or x1008 (not x880))
+(or x1008 (not x881))
+(or x1009 x1010 x991 x990 x1011 x1012 x994 x993 x880 x881 (not x1008))
+(or (not x974) (not x939) (not x975) (not x976) (not x941) (not x977) x912)
+(or (not x912) x974)
+(or (not x912) x939)
+(or (not x912) x975)
+(or (not x912) x976)
+(or (not x912) x941)
+(or (not x912) x977)
+(or x926 (not x912))
+(or x926 (not x1010))
+(or x926 (not x990))
+(or x926 (not x1012))
+(or x926 (not x993))
+(or x926 x902)
+(or x912 x1010 x990 x1012 x993 (not x902) (not x926))
+(or (not x926) (not x1008) (not x938) (not x939) (not x940) (not x941) x836 x916 x917 x918 x919 x921 x868 x922 x923 x829 x924 x1013)
+(or (not x1013) x926)
+(or (not x1013) x1008)
+(or (not x1013) x938)
+(or (not x1013) x939)
+(or (not x1013) x940)
+(or (not x1013) x941)
+(or (not x1013) (not x836))
+(or (not x1013) (not x916))
+(or (not x1013) (not x917))
+(or (not x1013) (not x918))
+(or (not x1013) (not x919))
+(or (not x1013) (not x921))
+(or (not x1013) (not x868))
+(or (not x1013) (not x922))
+(or (not x1013) (not x923))
+(or (not x1013) (not x829))
+(or (not x1013) (not x924))
+(or x913 (not x839))
+(or x913 (not x837))
+(or x913 (not x838))
+(or x913 x867)
+(or x913 x903)
+(or x839 x837 x838 (not x867) (not x903) (not x913))
+(or (not x913) (not x838) (not x914) (not x915) x892 x916 x917 x918 x919 x920 (not x836) x921 x868 x922 x923 x829 x924 x945)
+(or (not x945) x913)
+(or (not x945) x838)
+(or (not x945) x914)
+(or (not x945) x915)
+(or (not x945) (not x892))
+(or (not x945) (not x916))
+(or (not x945) (not x917))
+(or (not x945) (not x918))
+(or (not x945) (not x919))
+(or (not x945) (not x920))
+(or (not x945) x836)
+(or (not x945) (not x921))
+(or (not x945) (not x868))
+(or (not x945) (not x922))
+(or (not x945) (not x923))
+(or (not x945) (not x829))
+(or (not x945) (not x924))
+(or x1014 (not x945))
+(or x1014 (not x1013))
+(or x945 x1013 (not x1014))
+(or (not x786) (not x785) (not x892) (not x1014) x1015)
+(or (not x1015) x786)
+(or (not x1015) x785)
+(or (not x1015) x892)
+(or (not x1015) x1014)
+(or x1016 (not x1015))
+(or x1016 (not x1006))
+(or x1015 x1006 (not x1016))
+(or (not x1017) (not x1018) x988)
+(or (not x988) x1017)
+(or (not x988) x1018)
+(or (not x1019) (not x918) x1020)
+(or (not x1020) x1019)
+(or (not x1020) x918)
+(or x829 x918 x916 x917 x1021)
+(or (not x1021) (not x829))
+(or (not x1021) (not x918))
+(or (not x1021) (not x916))
+(or (not x1021) (not x917))
+(or (not x917) (not x916) x1022)
+(or (not x1022) x917)
+(or (not x1022) x916)
+(or x1023 (not x919))
+(or x1023 (not x1022))
+(or x1023 (not x1021))
+(or x1023 (not x1020))
+(or x919 x1022 x1021 x1020 (not x1023))
+(or x924 x921 x836 x892 x922 x923 x959)
+(or (not x959) (not x924))
+(or (not x959) (not x921))
+(or (not x959) (not x836))
+(or (not x959) (not x892))
+(or (not x959) (not x922))
+(or (not x959) (not x923))
+(or x924 x921 x836 x892 x922 x923 (not x1023) x987)
+(or (not x987) (not x924))
+(or (not x987) (not x921))
+(or (not x987) (not x836))
+(or (not x987) (not x892))
+(or (not x987) (not x922))
+(or (not x987) (not x923))
+(or (not x987) x1023)
+(or (not x923) (not x922) x986)
+(or (not x986) x923)
+(or (not x986) x922)
+(or (not x1024) (not x924) x985)
+(or (not x985) x1024)
+(or (not x985) x924)
+(or (not x836) (not x1025) x984)
+(or (not x984) x836)
+(or (not x984) x1025)
+(or x932 x856)
+(or x932 (not x855))
+(or x932 (not x854))
+(or x932 (not x853))
+(or x932 (not x935))
+(or (not x856) x855 x854 x853 x935 (not x932))
+(or x931 x856)
+(or x931 (not x855))
+(or x931 (not x854))
+(or x931 (not x853))
+(or x931 x935)
+(or x931 x851)
+(or (not x856) x855 x854 x853 (not x935) (not x851) (not x931))
+(or x1026 x856)
+(or x1026 (not x855))
+(or x1026 (not x854))
+(or x1026 (not x853))
+(or x1026 x935)
+(or (not x856) x855 x854 x853 (not x935) (not x1026))
+(or (not x1026) (not x931) (not x932) x1027)
+(or (not x1027) x1026)
+(or (not x1027) x931)
+(or (not x1027) x932)
+(or x1018 (not x924))
+(or x1018 (not x921))
+(or x1018 (not x836))
+(or x1018 (not x892))
+(or x1018 (not x922))
+(or x1018 (not x923))
+(or x924 x921 x836 x892 x922 x923 (not x1018))
+(or x1028 (not x918))
+(or x1028 (not x916))
+(or x1028 (not x917))
+(or x1028 (not x924))
+(or x1028 (not x921))
+(or x1028 (not x836))
+(or x1028 (not x892))
+(or x1028 (not x922))
+(or x1028 (not x923))
+(or x1028 (not x1027))
+(or x918 x916 x917 x924 x921 x836 x892 x922 x923 x1027 (not x1028))
+(or (not x829) (not x1028) x983)
+(or (not x983) x829)
+(or (not x983) x1028)
+(or (not x1029) (not x892) x982)
+(or (not x982) x1029)
+(or (not x982) x892)
+(or (not x1030) (not x921) x981)
+(or (not x981) x1030)
+(or (not x981) x921)
+(or (not x920) (not x836) x980)
+(or (not x980) x920)
+(or (not x980) x836)
+(or x1031 x786)
+(or x1031 x785)
+(or x1031 (not x868))
+(or x1031 (not x980))
+(or x1031 (not x981))
+(or x1031 (not x982))
+(or x1031 (not x983))
+(or x1031 (not x984))
+(or x1031 (not x985))
+(or x1031 (not x986))
+(or x1031 (not x987))
+(or x1031 (not x988))
+(or (not x786) (not x785) x868 x980 x981 x982 x983 x984 x985 x986 x987 x988 (not x1031))
+(or x919 (not x786) (not x785) x916 x917 (not x918) x921 x868 x922 x923 x829 x924 x892 x836 x1032)
+(or (not x1032) (not x919))
+(or (not x1032) x786)
+(or (not x1032) x785)
+(or (not x1032) (not x916))
+(or (not x1032) (not x917))
+(or (not x1032) x918)
+(or (not x1032) (not x921))
+(or (not x1032) (not x868))
+(or (not x1032) (not x922))
+(or (not x1032) (not x923))
+(or (not x1032) (not x829))
+(or (not x1032) (not x924))
+(or (not x1032) (not x892))
+(or (not x1032) (not x836))
+(or x914 (not x903))
+(or x914 (not x839))
+(or x914 (not x837))
+(or x914 (not x838))
+(or x914 x867)
+(or x903 x839 x837 x838 (not x867) (not x914))
+(or x839 x837 x838 (not x867) (not x903) x1033)
+(or (not x1033) (not x839))
+(or (not x1033) (not x837))
+(or (not x1033) (not x838))
+(or (not x1033) x867)
+(or (not x1033) x903)
+(or x1034 (not x1033))
+(or x1034 x838)
+(or x1033 (not x838) (not x1034))
+(or (not x786) (not x785) (not x1034) (not x914) (not x915) x892 x916 x917 x918 x919 x920 (not x836) x921 x868 x922 x923 x829 x924 x1035)
+(or (not x1035) x786)
+(or (not x1035) x785)
+(or (not x1035) x1034)
+(or (not x1035) x914)
+(or (not x1035) x915)
+(or (not x1035) (not x892))
+(or (not x1035) (not x916))
+(or (not x1035) (not x917))
+(or (not x1035) (not x918))
+(or (not x1035) (not x919))
+(or (not x1035) (not x920))
+(or (not x1035) x836)
+(or (not x1035) (not x921))
+(or (not x1035) (not x868))
+(or (not x1035) (not x922))
+(or (not x1035) (not x923))
+(or (not x1035) (not x829))
+(or (not x1035) (not x924))
+(or x921 x923 (not x922) (not x786) (not x785) x829 x924 x892 x836 x868 x916 x917 x918 x919 x1036)
+(or (not x1036) (not x921))
+(or (not x1036) (not x923))
+(or (not x1036) x922)
+(or (not x1036) x786)
+(or (not x1036) x785)
+(or (not x1036) (not x829))
+(or (not x1036) (not x924))
+(or (not x1036) (not x892))
+(or (not x1036) (not x836))
+(or (not x1036) (not x868))
+(or (not x1036) (not x916))
+(or (not x1036) (not x917))
+(or (not x1036) (not x918))
+(or (not x1036) (not x919))
+(or x846 x828 x843)
+(or (not x843) (not x846))
+(or (not x843) (not x828))
+(or x915 (not x843))
+(or x915 (not x837))
+(or x915 (not x838))
+(or x915 x839)
+(or x843 x837 x838 (not x839) (not x915))
+(or (not x915) x903 x839 x837 x838 (not x867) x1037)
+(or (not x1037) x915)
+(or (not x1037) (not x903))
+(or (not x1037) (not x839))
+(or (not x1037) (not x837))
+(or (not x1037) (not x838))
+(or (not x1037) x867)
+(or x835 (not x846))
+(or x835 (not x828))
+(or x846 x828 (not x835))
+(or (not x835) x837 x838 (not x839) x1038)
+(or (not x1038) x835)
+(or (not x1038) (not x837))
+(or (not x1038) (not x838))
+(or (not x1038) x839)
+(or x1039 (not x1038))
+(or x1039 (not x1037))
+(or x1038 x1037 (not x1039))
+(or (not x786) (not x785) x892 x916 x917 x918 x919 x920 (not x836) x921 x868 x922 x923 x829 x924 (not x1039) x1040)
+(or (not x1040) x786)
+(or (not x1040) x785)
+(or (not x1040) (not x892))
+(or (not x1040) (not x916))
+(or (not x1040) (not x917))
+(or (not x1040) (not x918))
+(or (not x1040) (not x919))
+(or (not x1040) (not x920))
+(or (not x1040) x836)
+(or (not x1040) (not x921))
+(or (not x1040) (not x868))
+(or (not x1040) (not x922))
+(or (not x1040) (not x923))
+(or (not x1040) (not x829))
+(or (not x1040) (not x924))
+(or (not x1040) x1039)
+(or x1041 (not x1042))
+(or x1041 (not x1043))
+(or x1041 (not x1044))
+(or x1041 (not x1045))
+(or x1041 (not x1047))
+(or x1042 x1043 x1044 x1045 x1047 (not x1041))
+(or x1048 (not x1047))
+(or x1048 (not x1046))
+(or x1048 x33)
+(or x1048 (not x34))
+(or x1048 x786)
+(or x1048 x785)
+(or x1047 x1046 (not x33) x34 (not x786) (not x785) (not x1048))
+(or (not x1048) (not x1049) (not x1041) x1050)
+(or (not x1050) x1048)
+(or (not x1050) x1049)
+(or (not x1050) x1041)
+(or x1051 (not x1042))
+(or x1051 (not x1043))
+(or x1051 (not x1044))
+(or x1051 (not x1045))
+(or x1051 (not x1046))
+(or x1042 x1043 x1044 x1045 x1046 (not x1051))
+(or x1049 (not x1042))
+(or x1049 (not x1043))
+(or x1049 (not x1044))
+(or x1049 x1047)
+(or x1049 x1046)
+(or x1042 x1043 x1044 (not x1047) (not x1046) (not x1049))
+(or x1047 x1046 (not x33) x34 (not x786) (not x785) x1042)
+(or (not x1042) (not x1047))
+(or (not x1042) (not x1046))
+(or (not x1042) x33)
+(or (not x1042) (not x34))
+(or (not x1042) x786)
+(or (not x1042) x785)
+(or x1052 (not x1042))
+(or x1052 (not x1047))
+(or x1052 x1046)
+(or x1042 x1047 (not x1046) (not x1052))
+(or (not x1052) (not x1049) (not x1051) x1053)
+(or (not x1053) x1052)
+(or (not x1053) x1049)
+(or (not x1053) x1051)
+(or x1054 (not x1055))
+(or x1054 (not x1056))
+(or x1054 (not x1057))
+(or x1054 (not x1058))
+(or x1054 (not x1060))
+(or x1055 x1056 x1057 x1058 x1060 (not x1054))
+(or x1061 (not x1060))
+(or x1061 (not x1059))
+(or x1061 x33)
+(or x1061 (not x34))
+(or x1061 x786)
+(or x1061 x785)
+(or x1060 x1059 (not x33) x34 (not x786) (not x785) (not x1061))
+(or (not x1061) (not x1062) (not x1054) x1063)
+(or (not x1063) x1061)
+(or (not x1063) x1062)
+(or (not x1063) x1054)
+(or x1064 (not x1055))
+(or x1064 (not x1056))
+(or x1064 (not x1057))
+(or x1064 (not x1058))
+(or x1064 (not x1059))
+(or x1055 x1056 x1057 x1058 x1059 (not x1064))
+(or x1062 (not x1055))
+(or x1062 (not x1056))
+(or x1062 (not x1057))
+(or x1062 x1060)
+(or x1062 x1059)
+(or x1055 x1056 x1057 (not x1060) (not x1059) (not x1062))
+(or x1060 x1059 (not x33) x34 (not x786) (not x785) x1055)
+(or (not x1055) (not x1060))
+(or (not x1055) (not x1059))
+(or (not x1055) x33)
+(or (not x1055) (not x34))
+(or (not x1055) x786)
+(or (not x1055) x785)
+(or x1065 (not x1055))
+(or x1065 (not x1060))
+(or x1065 x1059)
+(or x1055 x1060 (not x1059) (not x1065))
+(or (not x1065) (not x1062) (not x1064) x1066)
+(or (not x1066) x1065)
+(or (not x1066) x1062)
+(or (not x1066) x1064)
+(or x1067 (not x902))
+(or x1067 (not x1068))
+(or x1067 (not x1069))
+(or x1067 (not x1010))
+(or x1067 (not x990))
+(or x1067 (not x1012))
+(or x1067 (not x993))
+(or x1067 (not x989))
+(or x1067 (not x990))
+(or x1067 (not x991))
+(or x1067 (not x992))
+(or x1067 (not x993))
+(or x1067 (not x994))
+(or x902 x1068 x1069 x1010 x990 x1012 x993 x989 x990 x991 x992 x993 x994 (not x1067))
+(or (not x893) (not x894) (not x1067) x1070)
+(or (not x1070) x893)
+(or (not x1070) x894)
+(or (not x1070) x1067)
+(or x1071 (not x786))
+(or x1071 (not x785))
+(or x786 x785 (not x1071))
+(or x786 x785 x1072)
+(or (not x1072) (not x786))
+(or (not x1072) (not x785))
+(or x1073 (not x1072))
+(or x1073 (not x786))
+(or x1073 x785)
+(or x1072 x786 (not x785) (not x1073))
+(or x1074 (not x1075))
+(or x1074 (not x1076))
+(or x1074 (not x1077))
+(or x1074 (not x1078))
+(or x1074 (not x1079))
+(or x1074 (not x1080))
+(or x1074 (not x1011))
+(or x1074 (not x1081))
+(or x1074 (not x1082))
+(or x1074 (not x1083))
+(or x1074 (not x1084))
+(or x1074 (not x1088))
+(or x1075 x1076 x1077 x1078 x1079 x1080 x1011 x1081 x1082 x1083 x1084 x1088 (not x1074))
+(or (not x1089) (not x1090) (not x1091) (not x1092) (not x1093) (not x1094) (not x1095) (not x1096) (not x1097) (not x1098) (not x1099) (not x1074) x1100)
+(or (not x1100) x1089)
+(or (not x1100) x1090)
+(or (not x1100) x1091)
+(or (not x1100) x1092)
+(or (not x1100) x1093)
+(or (not x1100) x1094)
+(or (not x1100) x1095)
+(or (not x1100) x1096)
+(or (not x1100) x1097)
+(or (not x1100) x1098)
+(or (not x1100) x1099)
+(or (not x1100) x1074)
+(or x1101 (not x1075))
+(or x1101 (not x1076))
+(or x1101 (not x1077))
+(or x1101 (not x1078))
+(or x1101 (not x1079))
+(or x1101 (not x1080))
+(or x1101 (not x1011))
+(or x1101 (not x1081))
+(or x1101 (not x1082))
+(or x1101 (not x1083))
+(or x1101 (not x1084))
+(or x1101 (not x1087))
+(or x1075 x1076 x1077 x1078 x1079 x1080 x1011 x1081 x1082 x1083 x1084 x1087 (not x1101))
+(or x1102 x1103)
+(or x1102 (not x1104))
+(or (not x1103) x1104 (not x1102))
+(or (not x1102) (not x1103) x1105)
+(or (not x1105) x1102)
+(or (not x1105) x1103)
+(or x1106 (not x1075))
+(or x1106 (not x1076))
+(or x1106 (not x1077))
+(or x1106 (not x1078))
+(or x1106 (not x1079))
+(or x1106 (not x1080))
+(or x1106 (not x1011))
+(or x1106 (not x1081))
+(or x1106 (not x1088))
+(or x1106 (not x1087))
+(or x1106 (not x1086))
+(or x1106 x1085)
+(or x1106 (not x35))
+(or x1106 (not x34))
+(or x1106 (not x1105))
+(or x1075 x1076 x1077 x1078 x1079 x1080 x1011 x1081 x1088 x1087 x1086 (not x1085) x35 x34 x1105 (not x1106))
+(or x1107 (not x1075))
+(or x1107 (not x1076))
+(or x1107 (not x1077))
+(or x1107 (not x1078))
+(or x1107 (not x1079))
+(or x1107 (not x1080))
+(or x1107 (not x1088))
+(or x1107 (not x1087))
+(or x1107 x1086)
+(or x1107 x1085)
+(or x1107 x1108)
+(or x1107 x1109)
+(or x1107 x1110)
+(or x1075 x1076 x1077 x1078 x1079 x1080 x1088 x1087 (not x1086) (not x1085) (not x1108) (not x1109) (not x1110) (not x1107))
+(or x1111 (not x1075))
+(or x1111 (not x1076))
+(or x1111 (not x1077))
+(or x1111 (not x1078))
+(or x1111 (not x1088))
+(or x1111 (not x1087))
+(or x1111 x1086)
+(or x1111 (not x1085))
+(or x1111 (not x1112))
+(or x1111 x1113)
+(or x1111 x1114)
+(or x1075 x1076 x1077 x1078 x1088 x1087 (not x1086) x1085 x1112 (not x1113) (not x1114) (not x1111))
+(or x1115 (not x1075))
+(or x1115 (not x1088))
+(or x1115 (not x1087))
+(or x1115 (not x1086))
+(or x1115 (not x1085))
+(or x1115 (not x34))
+(or x1115 x786)
+(or x1115 x785)
+(or x1115 (not x1112))
+(or x1115 (not x1116))
+(or x1115 (not x1117))
+(or x1115 x1118)
+(or x1075 x1088 x1087 x1086 x1085 x34 (not x786) (not x785) x1112 x1116 x1117 (not x1118) (not x1115))
+(or x1119 x1120)
+(or x1119 x1121)
+(or x1119 x1122)
+(or (not x1120) (not x1121) (not x1122) (not x1119))
+(or (not x1119) (not x1120) x1123)
+(or (not x1123) x1119)
+(or (not x1123) x1120)
+(or x1124 x1125)
+(or x1124 (not x1123))
+(or (not x1125) x1123 (not x1124))
+(or (not x1124) (not x1125) x1126)
+(or (not x1126) x1124)
+(or (not x1126) x1125)
+(or x1127 (not x1088))
+(or x1127 (not x1087))
+(or x1127 (not x1086))
+(or x1127 (not x1085))
+(or x1127 (not x34))
+(or x1127 x786)
+(or x1127 x785)
+(or x1127 (not x1112))
+(or x1127 (not x1128))
+(or x1127 (not x1126))
+(or x1088 x1087 x1086 x1085 x34 (not x786) (not x785) x1112 x1128 x1126 (not x1127))
+(or (not x1127) (not x1115) (not x1091) (not x1092) (not x1111) (not x1094) (not x1107) (not x1096) (not x1106) (not x1099) (not x1101) x1129)
+(or (not x1129) x1127)
+(or (not x1129) x1115)
+(or (not x1129) x1091)
+(or (not x1129) x1092)
+(or (not x1129) x1111)
+(or (not x1129) x1094)
+(or (not x1129) x1107)
+(or (not x1129) x1096)
+(or (not x1129) x1106)
+(or (not x1129) x1099)
+(or (not x1129) x1101)
+(or x1130 (not x1075))
+(or x1130 (not x1076))
+(or x1130 (not x1077))
+(or x1130 (not x1078))
+(or x1130 (not x1079))
+(or x1130 (not x1080))
+(or x1130 (not x1011))
+(or x1130 (not x1081))
+(or x1130 (not x1082))
+(or x1130 (not x1083))
+(or x1130 (not x1084))
+(or x1130 (not x1086))
+(or x1075 x1076 x1077 x1078 x1079 x1080 x1011 x1081 x1082 x1083 x1084 x1086 (not x1130))
+(or x1098 (not x1075))
+(or x1098 (not x1076))
+(or x1098 (not x1077))
+(or x1098 (not x1078))
+(or x1098 (not x1079))
+(or x1098 (not x1080))
+(or x1098 (not x1011))
+(or x1098 (not x1081))
+(or x1098 (not x1082))
+(or x1098 (not x1088))
+(or x1098 x1087)
+(or x1098 x1086)
+(or x1098 (not x1085))
+(or x1098 (not x35))
+(or x1098 (not x34))
+(or x1075 x1076 x1077 x1078 x1079 x1080 x1011 x1081 x1082 x1088 (not x1087) (not x1086) x1085 x35 x34 (not x1098))
+(or x1131 x1104)
+(or x1131 x1132)
+(or (not x1104) (not x1132) (not x1131))
+(or (not x1131) (not x1104) x1133)
+(or (not x1133) x1131)
+(or (not x1133) x1104)
+(or x1134 (not x1075))
+(or x1134 (not x1076))
+(or x1134 (not x1077))
+(or x1134 (not x1078))
+(or x1134 (not x1079))
+(or x1134 (not x1080))
+(or x1134 (not x1011))
+(or x1134 (not x1081))
+(or x1134 (not x1088))
+(or x1134 (not x1087))
+(or x1134 (not x1086))
+(or x1134 x1085)
+(or x1134 (not x35))
+(or x1134 (not x34))
+(or x1134 x1103)
+(or x1134 (not x1133))
+(or x1075 x1076 x1077 x1078 x1079 x1080 x1011 x1081 x1088 x1087 x1086 (not x1085) x35 x34 (not x1103) x1133 (not x1134))
+(or x1135 x1110)
+(or x1135 (not x1136))
+(or (not x1110) x1136 (not x1135))
+(or (not x1135) (not x1110) x1137)
+(or (not x1137) x1135)
+(or (not x1137) x1110)
+(or x1138 x1108)
+(or x1138 x1109)
+(or x1138 (not x1137))
+(or (not x1108) (not x1109) x1137 (not x1138))
+(or (not x1138) (not x1108) x1139)
+(or (not x1139) x1138)
+(or (not x1139) x1108)
+(or x1140 (not x1075))
+(or x1140 (not x1076))
+(or x1140 (not x1077))
+(or x1140 (not x1078))
+(or x1140 (not x1079))
+(or x1140 (not x1080))
+(or x1140 (not x1088))
+(or x1140 (not x1087))
+(or x1140 x1086)
+(or x1140 x1085)
+(or x1140 (not x1139))
+(or x1075 x1076 x1077 x1078 x1079 x1080 x1088 x1087 (not x1086) (not x1085) x1139 (not x1140))
+(or x1141 x1114)
+(or x1141 (not x1142))
+(or (not x1114) x1142 (not x1141))
+(or (not x1141) (not x1114) x1143)
+(or (not x1143) x1141)
+(or (not x1143) x1114)
+(or x1144 (not x1075))
+(or x1144 (not x1076))
+(or x1144 (not x1077))
+(or x1144 (not x1078))
+(or x1144 (not x1088))
+(or x1144 (not x1087))
+(or x1144 x1086)
+(or x1144 (not x1085))
+(or x1144 (not x1112))
+(or x1144 x1113)
+(or x1144 (not x1143))
+(or x1075 x1076 x1077 x1078 x1088 x1087 (not x1086) x1085 x1112 (not x1113) x1143 (not x1144))
+(or x1145 (not x1075))
+(or x1145 (not x1088))
+(or x1145 (not x1087))
+(or x1145 (not x1086))
+(or x1145 (not x1085))
+(or x1145 (not x34))
+(or x1145 x786)
+(or x1145 x785)
+(or x1145 (not x1112))
+(or x1145 (not x1116))
+(or x1145 (not x1117))
+(or x1145 (not x1118))
+(or x1075 x1088 x1087 x1086 x1085 x34 (not x786) (not x785) x1112 x1116 x1117 x1118 (not x1145))
+(or x1146 x1125)
+(or x1146 x1120)
+(or x1146 x1121)
+(or x1146 (not x1122))
+(or (not x1125) (not x1120) (not x1121) x1122 (not x1146))
+(or (not x1146) (not x1125) x1147)
+(or (not x1147) x1146)
+(or (not x1147) x1125)
+(or x1148 (not x1088))
+(or x1148 (not x1087))
+(or x1148 (not x1086))
+(or x1148 (not x1085))
+(or x1148 (not x34))
+(or x1148 x786)
+(or x1148 x785)
+(or x1148 (not x1112))
+(or x1148 (not x1128))
+(or x1148 (not x1147))
+(or x1088 x1087 x1086 x1085 x34 (not x786) (not x785) x1112 x1128 x1147 (not x1148))
+(or (not x1148) (not x1145) (not x1092) (not x1144) (not x1140) (not x1096) (not x1134) (not x1098) (not x1099) (not x1130) x1149)
+(or (not x1149) x1148)
+(or (not x1149) x1145)
+(or (not x1149) x1092)
+(or (not x1149) x1144)
+(or (not x1149) x1140)
+(or (not x1149) x1096)
+(or (not x1149) x1134)
+(or (not x1149) x1098)
+(or (not x1149) x1099)
+(or (not x1149) x1130)
+(or x1150 (not x992))
+(or x1150 (not x994))
+(or x1150 (not x993))
+(or x992 x994 x993 (not x1150))
+(or (not x1150) (not x34) x1084)
+(or (not x1084) x1150)
+(or (not x1084) x34)
+(or x1151 (not x1075))
+(or x1151 (not x1076))
+(or x1151 (not x1077))
+(or x1151 (not x1078))
+(or x1151 (not x1079))
+(or x1151 (not x1080))
+(or x1151 (not x1011))
+(or x1151 (not x1081))
+(or x1151 (not x1082))
+(or x1151 (not x1083))
+(or x1151 (not x1084))
+(or x1151 (not x1085))
+(or x1075 x1076 x1077 x1078 x1079 x1080 x1011 x1081 x1082 x1083 x1084 x1085 (not x1151))
+(or x976 (not x1088))
+(or x976 x1087)
+(or x976 (not x1086))
+(or x976 (not x1085))
+(or x1088 (not x1087) x1086 x1085 (not x976))
+(or (not x976) (not x977) (not x941) x1152)
+(or (not x1152) x976)
+(or (not x1152) x977)
+(or (not x1152) x941)
+(or x1088 (not x1087) (not x1086) x1085 x35 x34 x1083)
+(or (not x1083) (not x1088))
+(or (not x1083) x1087)
+(or (not x1083) x1086)
+(or (not x1083) (not x1085))
+(or (not x1083) (not x35))
+(or (not x1083) (not x34))
+(or x1088 x1087 x1086 (not x1085) x35 x34 x1082)
+(or (not x1082) (not x1088))
+(or (not x1082) (not x1087))
+(or (not x1082) (not x1086))
+(or (not x1082) x1085)
+(or (not x1082) (not x35))
+(or (not x1082) (not x34))
+(or x1099 (not x1075))
+(or x1099 (not x1076))
+(or x1099 (not x1077))
+(or x1099 (not x1078))
+(or x1099 (not x1079))
+(or x1099 (not x1080))
+(or x1099 (not x1011))
+(or x1099 (not x1081))
+(or x1099 (not x1082))
+(or x1099 (not x1083))
+(or x1099 (not x1152))
+(or x1099 x34)
+(or x1075 x1076 x1077 x1078 x1079 x1080 x1011 x1081 x1082 x1083 x1152 (not x34) (not x1099))
+(or x1153 x1132)
+(or x1153 x1154)
+(or (not x1132) (not x1154) (not x1153))
+(or (not x1153) (not x1132) x1155)
+(or (not x1155) x1153)
+(or (not x1155) x1132)
+(or x1088 x1087 x1086 (not x1085) x35 (not x34) x1081)
+(or (not x1081) (not x1088))
+(or (not x1081) (not x1087))
+(or (not x1081) (not x1086))
+(or (not x1081) x1085)
+(or (not x1081) (not x35))
+(or (not x1081) x34)
+(or x1097 (not x1075))
+(or x1097 (not x1076))
+(or x1097 (not x1077))
+(or x1097 (not x1078))
+(or x1097 (not x1079))
+(or x1097 (not x1080))
+(or x1097 (not x1011))
+(or x1097 (not x1081))
+(or x1097 (not x1088))
+(or x1097 (not x1087))
+(or x1097 (not x1086))
+(or x1097 x1085)
+(or x1097 (not x35))
+(or x1097 (not x34))
+(or x1075 x1076 x1077 x1078 x1079 x1080 x1011 x1081 x1088 x1087 x1086 (not x1085) x35 x34 (not x1097))
+(or x1156 (not x1075))
+(or x1156 (not x1076))
+(or x1156 (not x1077))
+(or x1156 (not x1078))
+(or x1156 (not x1079))
+(or x1156 (not x1080))
+(or x1156 (not x1011))
+(or x1156 (not x1081))
+(or x1156 (not x1088))
+(or x1156 (not x1087))
+(or x1156 (not x1086))
+(or x1156 x1085)
+(or x1156 (not x35))
+(or x1156 (not x34))
+(or x1156 x1103)
+(or x1156 x1104)
+(or x1156 (not x1155))
+(or x1075 x1076 x1077 x1078 x1079 x1080 x1011 x1081 x1088 x1087 x1086 (not x1085) x35 x34 (not x1103) (not x1104) x1155 (not x1156))
+(or x1096 (not x1075))
+(or x1096 (not x1076))
+(or x1096 (not x1077))
+(or x1096 (not x1078))
+(or x1096 (not x1079))
+(or x1096 (not x1080))
+(or x1096 (not x1011))
+(or x1096 (not x1088))
+(or x1096 (not x1087))
+(or x1096 (not x1086))
+(or x1096 x1085)
+(or x1096 (not x35))
+(or x1096 x34)
+(or x1075 x1076 x1077 x1078 x1079 x1080 x1011 x1088 x1087 x1086 (not x1085) x35 (not x34) (not x1096))
+(or x1157 x1109)
+(or x1157 (not x1110))
+(or (not x1109) x1110 (not x1157))
+(or (not x1157) (not x1109) x1158)
+(or (not x1158) x1157)
+(or (not x1158) x1109)
+(or x1095 (not x1075))
+(or x1095 (not x1076))
+(or x1095 (not x1077))
+(or x1095 (not x1078))
+(or x1095 (not x1079))
+(or x1095 (not x1080))
+(or x1095 (not x1088))
+(or x1095 (not x1087))
+(or x1095 x1086)
+(or x1095 x1085)
+(or x1075 x1076 x1077 x1078 x1079 x1080 x1088 x1087 (not x1086) (not x1085) (not x1095))
+(or x1159 (not x1075))
+(or x1159 (not x1076))
+(or x1159 (not x1077))
+(or x1159 (not x1078))
+(or x1159 (not x1079))
+(or x1159 (not x1080))
+(or x1159 (not x1088))
+(or x1159 (not x1087))
+(or x1159 x1086)
+(or x1159 x1085)
+(or x1159 x1108)
+(or x1159 (not x1158))
+(or x1075 x1076 x1077 x1078 x1079 x1080 x1088 x1087 (not x1086) (not x1085) (not x1108) x1158 (not x1159))
+(or x1088 x1087 (not x1086) x1085 (not x1160) x1079)
+(or (not x1079) (not x1088))
+(or (not x1079) (not x1087))
+(or (not x1079) x1086)
+(or (not x1079) (not x1085))
+(or (not x1079) x1160)
+(or x1094 (not x1075))
+(or x1094 (not x1076))
+(or x1094 (not x1077))
+(or x1094 (not x1078))
+(or x1094 (not x1079))
+(or x1094 (not x1088))
+(or x1094 (not x1087))
+(or x1094 x1086)
+(or x1094 (not x1085))
+(or x1075 x1076 x1077 x1078 x1079 x1088 x1087 (not x1086) x1085 (not x1094))
+(or x1161 x1113)
+(or x1161 x1114)
+(or x1161 x1142)
+(or x1161 x1162)
+(or (not x1113) (not x1114) (not x1142) (not x1162) (not x1161))
+(or (not x1161) (not x1113) x1163)
+(or (not x1163) x1161)
+(or (not x1163) x1113)
+(or x1088 x1087 (not x1086) x1085 (not x34) (not x35) x1078)
+(or (not x1078) (not x1088))
+(or (not x1078) (not x1087))
+(or (not x1078) x1086)
+(or (not x1078) (not x1085))
+(or (not x1078) x34)
+(or (not x1078) x35)
+(or x1093 (not x1075))
+(or x1093 (not x1076))
+(or x1093 (not x1077))
+(or x1093 (not x1078))
+(or x1093 (not x1088))
+(or x1093 (not x1087))
+(or x1093 x1086)
+(or x1093 (not x1085))
+(or x1093 (not x1112))
+(or x1075 x1076 x1077 x1078 x1088 x1087 (not x1086) x1085 x1112 (not x1093))
+(or x1164 (not x1075))
+(or x1164 (not x1076))
+(or x1164 (not x1077))
+(or x1164 (not x1078))
+(or x1164 (not x1088))
+(or x1164 (not x1087))
+(or x1164 x1086)
+(or x1164 (not x1085))
+(or x1164 (not x1112))
+(or x1164 (not x1163))
+(or x1075 x1076 x1077 x1078 x1088 x1087 (not x1086) x1085 x1112 x1163 (not x1164))
+(or x1092 (not x1075))
+(or x1092 (not x1076))
+(or x1092 (not x1077))
+(or x1092 (not x1088))
+(or x1092 (not x1087))
+(or x1092 x1086)
+(or x1092 (not x1085))
+(or x1092 x34)
+(or x1092 x35)
+(or x1075 x1076 x1077 x1088 x1087 (not x1086) x1085 (not x34) (not x35) (not x1092))
+(or x1088 x1087 x1086 x1085 x34 (not x786) (not x785) (not x1160) (not x1165) (not x1166) x1076)
+(or (not x1076) (not x1088))
+(or (not x1076) (not x1087))
+(or (not x1076) (not x1086))
+(or (not x1076) (not x1085))
+(or (not x1076) (not x34))
+(or (not x1076) x786)
+(or (not x1076) x785)
+(or (not x1076) x1160)
+(or (not x1076) x1165)
+(or (not x1076) x1166)
+(or x1091 (not x1075))
+(or x1091 (not x1076))
+(or x1091 (not x1088))
+(or x1091 (not x1087))
+(or x1091 (not x1086))
+(or x1091 (not x1085))
+(or x1091 (not x34))
+(or x1091 x786)
+(or x1091 x785)
+(or x1075 x1076 x1088 x1087 x1086 x1085 x34 (not x786) (not x785) (not x1091))
+(or (not x1047) (not x1046) x1045)
+(or (not x1045) x1047)
+(or (not x1045) x1046)
+(or (not x1047) x1046 x1044)
+(or (not x1044) x1047)
+(or (not x1044) (not x1046))
+(or x1047 (not x1046) x1043)
+(or (not x1043) (not x1047))
+(or (not x1043) x1046)
+(or x1047 x1046 (not x33) x34 x1167)
+(or (not x1167) (not x1047))
+(or (not x1167) (not x1046))
+(or (not x1167) x33)
+(or (not x1167) (not x34))
+(or x1160 (not x1167))
+(or x1160 (not x1043))
+(or x1160 (not x1044))
+(or x1160 (not x1045))
+(or x1167 x1043 x1044 x1045 (not x1160))
+(or x1088 x1087 x1086 x1085 x34 (not x786) (not x785) x1077)
+(or (not x1077) (not x1088))
+(or (not x1077) (not x1087))
+(or (not x1077) (not x1086))
+(or (not x1077) (not x1085))
+(or (not x1077) (not x34))
+(or (not x1077) x786)
+(or (not x1077) x785)
+(or x1088 x1087 x1086 x1085 x34 (not x786) (not x785) (not x1160) (not x1168) x1075)
+(or (not x1075) (not x1088))
+(or (not x1075) (not x1087))
+(or (not x1075) (not x1086))
+(or (not x1075) (not x1085))
+(or (not x1075) (not x34))
+(or (not x1075) x786)
+(or (not x1075) x785)
+(or (not x1075) x1160)
+(or (not x1075) x1168)
+(or x1090 (not x1075))
+(or x1090 (not x1088))
+(or x1090 (not x1087))
+(or x1090 (not x1086))
+(or x1090 (not x1085))
+(or x1090 (not x34))
+(or x1090 x786)
+(or x1090 x785)
+(or x1090 (not x1112))
+(or x1090 (not x1116))
+(or x1090 (not x1117))
+(or x1075 x1088 x1087 x1086 x1085 x34 (not x786) (not x785) x1112 x1116 x1117 (not x1090))
+(or x1169 (not x1075))
+(or x1169 (not x1088))
+(or x1169 (not x1087))
+(or x1169 (not x1086))
+(or x1169 (not x1085))
+(or x1169 (not x34))
+(or x1169 x786)
+(or x1169 x785)
+(or x1169 (not x1112))
+(or x1169 (not x1116))
+(or x1169 (not x1117))
+(or x1169 x1118)
+(or x1169 x1170)
+(or x1075 x1088 x1087 x1086 x1085 x34 (not x786) (not x785) x1112 x1116 x1117 (not x1118) (not x1170) (not x1169))
+(or x1171 x1121)
+(or x1171 x1122)
+(or (not x1121) (not x1122) (not x1171))
+(or (not x1171) (not x1121) x1172)
+(or (not x1172) x1171)
+(or (not x1172) x1121)
+(or x1173 x1047)
+(or x1173 x1046)
+(or (not x1047) (not x1046) (not x1173))
+(or x1174 x1047)
+(or x1174 (not x1046))
+(or (not x1047) x1046 (not x1174))
+(or x1175 (not x1047))
+(or x1175 x1046)
+(or x1047 (not x1046) (not x1175))
+(or x1176 (not x1047))
+(or x1176 (not x1046))
+(or x1176 x33)
+(or x1176 (not x34))
+(or x1047 x1046 (not x33) x34 (not x1176))
+(or (not x1176) (not x1175) (not x1174) (not x1173) x1112)
+(or (not x1112) x1176)
+(or (not x1112) x1175)
+(or (not x1112) x1174)
+(or (not x1112) x1173)
+(or x1089 (not x1088))
+(or x1089 (not x1087))
+(or x1089 (not x1086))
+(or x1089 (not x1085))
+(or x1089 (not x34))
+(or x1089 x786)
+(or x1089 x785)
+(or x1089 (not x1112))
+(or x1089 (not x1128))
+(or x1088 x1087 x1086 x1085 x34 (not x786) (not x785) x1112 x1128 (not x1089))
+(or x1177 (not x1088))
+(or x1177 (not x1087))
+(or x1177 (not x1086))
+(or x1177 (not x1085))
+(or x1177 (not x34))
+(or x1177 x786)
+(or x1177 x785)
+(or x1177 (not x1112))
+(or x1177 (not x1128))
+(or x1177 x1125)
+(or x1177 x1120)
+(or x1177 (not x1172))
+(or x1088 x1087 x1086 x1085 x34 (not x786) (not x785) x1112 x1128 (not x1125) (not x1120) x1172 (not x1177))
+(or (not x1177) (not x1169) (not x1091) (not x1092) (not x1164) (not x1094) (not x1159) (not x1096) (not x1156) (not x1099) (not x1151) x1178)
+(or (not x1178) x1177)
+(or (not x1178) x1169)
+(or (not x1178) x1091)
+(or (not x1178) x1092)
+(or (not x1178) x1164)
+(or (not x1178) x1094)
+(or (not x1178) x1159)
+(or (not x1178) x1096)
+(or (not x1178) x1156)
+(or (not x1178) x1099)
+(or (not x1178) x1151)
+(or x1179 (not x1180))
+(or x1179 (not x1181))
+(or x1179 (not x1182))
+(or x1179 (not x1183))
+(or x1179 (not x1184))
+(or x1179 (not x1185))
+(or x1179 (not x1009))
+(or x1179 (not x1186))
+(or x1179 (not x1187))
+(or x1179 (not x1188))
+(or x1179 (not x1189))
+(or x1179 (not x1193))
+(or x1180 x1181 x1182 x1183 x1184 x1185 x1009 x1186 x1187 x1188 x1189 x1193 (not x1179))
+(or (not x1194) (not x1195) (not x1196) (not x1197) (not x1198) (not x1199) (not x1200) (not x1201) (not x1202) (not x1203) (not x1204) (not x1179) x1205)
+(or (not x1205) x1194)
+(or (not x1205) x1195)
+(or (not x1205) x1196)
+(or (not x1205) x1197)
+(or (not x1205) x1198)
+(or (not x1205) x1199)
+(or (not x1205) x1200)
+(or (not x1205) x1201)
+(or (not x1205) x1202)
+(or (not x1205) x1203)
+(or (not x1205) x1204)
+(or (not x1205) x1179)
+(or x1206 (not x1180))
+(or x1206 (not x1181))
+(or x1206 (not x1182))
+(or x1206 (not x1183))
+(or x1206 (not x1184))
+(or x1206 (not x1185))
+(or x1206 (not x1009))
+(or x1206 (not x1186))
+(or x1206 (not x1187))
+(or x1206 (not x1188))
+(or x1206 (not x1189))
+(or x1206 (not x1192))
+(or x1180 x1181 x1182 x1183 x1184 x1185 x1009 x1186 x1187 x1188 x1189 x1192 (not x1206))
+(or x1207 x1208)
+(or x1207 (not x1209))
+(or (not x1208) x1209 (not x1207))
+(or (not x1207) (not x1208) x1210)
+(or (not x1210) x1207)
+(or (not x1210) x1208)
+(or x1211 (not x1180))
+(or x1211 (not x1181))
+(or x1211 (not x1182))
+(or x1211 (not x1183))
+(or x1211 (not x1184))
+(or x1211 (not x1185))
+(or x1211 (not x1009))
+(or x1211 (not x1186))
+(or x1211 (not x1193))
+(or x1211 (not x1192))
+(or x1211 (not x1191))
+(or x1211 x1190)
+(or x1211 (not x35))
+(or x1211 (not x34))
+(or x1211 (not x1210))
+(or x1180 x1181 x1182 x1183 x1184 x1185 x1009 x1186 x1193 x1192 x1191 (not x1190) x35 x34 x1210 (not x1211))
+(or x1212 (not x1180))
+(or x1212 (not x1181))
+(or x1212 (not x1182))
+(or x1212 (not x1183))
+(or x1212 (not x1184))
+(or x1212 (not x1185))
+(or x1212 (not x1193))
+(or x1212 (not x1192))
+(or x1212 x1191)
+(or x1212 x1190)
+(or x1212 x1213)
+(or x1212 x1214)
+(or x1212 x1215)
+(or x1180 x1181 x1182 x1183 x1184 x1185 x1193 x1192 (not x1191) (not x1190) (not x1213) (not x1214) (not x1215) (not x1212))
+(or x1216 (not x1180))
+(or x1216 (not x1181))
+(or x1216 (not x1182))
+(or x1216 (not x1183))
+(or x1216 (not x1193))
+(or x1216 (not x1192))
+(or x1216 x1191)
+(or x1216 (not x1190))
+(or x1216 (not x1217))
+(or x1216 x1218)
+(or x1216 x1219)
+(or x1180 x1181 x1182 x1183 x1193 x1192 (not x1191) x1190 x1217 (not x1218) (not x1219) (not x1216))
+(or x1220 (not x1180))
+(or x1220 (not x1193))
+(or x1220 (not x1192))
+(or x1220 (not x1191))
+(or x1220 (not x1190))
+(or x1220 (not x34))
+(or x1220 x786)
+(or x1220 x785)
+(or x1220 (not x1217))
+(or x1220 (not x1116))
+(or x1220 (not x1117))
+(or x1220 x1221)
+(or x1180 x1193 x1192 x1191 x1190 x34 (not x786) (not x785) x1217 x1116 x1117 (not x1221) (not x1220))
+(or x1222 x1223)
+(or x1222 x1224)
+(or x1222 x1225)
+(or (not x1223) (not x1224) (not x1225) (not x1222))
+(or (not x1222) (not x1223) x1226)
+(or (not x1226) x1222)
+(or (not x1226) x1223)
+(or x1227 x1228)
+(or x1227 (not x1226))
+(or (not x1228) x1226 (not x1227))
+(or (not x1227) (not x1228) x1229)
+(or (not x1229) x1227)
+(or (not x1229) x1228)
+(or x1230 (not x1193))
+(or x1230 (not x1192))
+(or x1230 (not x1191))
+(or x1230 (not x1190))
+(or x1230 (not x34))
+(or x1230 x786)
+(or x1230 x785)
+(or x1230 (not x1217))
+(or x1230 (not x1128))
+(or x1230 (not x1229))
+(or x1193 x1192 x1191 x1190 x34 (not x786) (not x785) x1217 x1128 x1229 (not x1230))
+(or (not x1230) (not x1220) (not x1196) (not x1197) (not x1216) (not x1199) (not x1212) (not x1201) (not x1211) (not x1204) (not x1206) x1231)
+(or (not x1231) x1230)
+(or (not x1231) x1220)
+(or (not x1231) x1196)
+(or (not x1231) x1197)
+(or (not x1231) x1216)
+(or (not x1231) x1199)
+(or (not x1231) x1212)
+(or (not x1231) x1201)
+(or (not x1231) x1211)
+(or (not x1231) x1204)
+(or (not x1231) x1206)
+(or x1232 (not x1180))
+(or x1232 (not x1181))
+(or x1232 (not x1182))
+(or x1232 (not x1183))
+(or x1232 (not x1184))
+(or x1232 (not x1185))
+(or x1232 (not x1009))
+(or x1232 (not x1186))
+(or x1232 (not x1187))
+(or x1232 (not x1188))
+(or x1232 (not x1189))
+(or x1232 (not x1191))
+(or x1180 x1181 x1182 x1183 x1184 x1185 x1009 x1186 x1187 x1188 x1189 x1191 (not x1232))
+(or x1203 (not x1180))
+(or x1203 (not x1181))
+(or x1203 (not x1182))
+(or x1203 (not x1183))
+(or x1203 (not x1184))
+(or x1203 (not x1185))
+(or x1203 (not x1009))
+(or x1203 (not x1186))
+(or x1203 (not x1187))
+(or x1203 (not x1193))
+(or x1203 x1192)
+(or x1203 x1191)
+(or x1203 (not x1190))
+(or x1203 (not x35))
+(or x1203 (not x34))
+(or x1180 x1181 x1182 x1183 x1184 x1185 x1009 x1186 x1187 x1193 (not x1192) (not x1191) x1190 x35 x34 (not x1203))
+(or x1233 x1209)
+(or x1233 x1234)
+(or (not x1209) (not x1234) (not x1233))
+(or (not x1233) (not x1209) x1235)
+(or (not x1235) x1233)
+(or (not x1235) x1209)
+(or x1236 (not x1180))
+(or x1236 (not x1181))
+(or x1236 (not x1182))
+(or x1236 (not x1183))
+(or x1236 (not x1184))
+(or x1236 (not x1185))
+(or x1236 (not x1009))
+(or x1236 (not x1186))
+(or x1236 (not x1193))
+(or x1236 (not x1192))
+(or x1236 (not x1191))
+(or x1236 x1190)
+(or x1236 (not x35))
+(or x1236 (not x34))
+(or x1236 x1208)
+(or x1236 (not x1235))
+(or x1180 x1181 x1182 x1183 x1184 x1185 x1009 x1186 x1193 x1192 x1191 (not x1190) x35 x34 (not x1208) x1235 (not x1236))
+(or x1237 x1215)
+(or x1237 (not x1238))
+(or (not x1215) x1238 (not x1237))
+(or (not x1237) (not x1215) x1239)
+(or (not x1239) x1237)
+(or (not x1239) x1215)
+(or x1240 x1213)
+(or x1240 x1214)
+(or x1240 (not x1239))
+(or (not x1213) (not x1214) x1239 (not x1240))
+(or (not x1240) (not x1213) x1241)
+(or (not x1241) x1240)
+(or (not x1241) x1213)
+(or x1242 (not x1180))
+(or x1242 (not x1181))
+(or x1242 (not x1182))
+(or x1242 (not x1183))
+(or x1242 (not x1184))
+(or x1242 (not x1185))
+(or x1242 (not x1193))
+(or x1242 (not x1192))
+(or x1242 x1191)
+(or x1242 x1190)
+(or x1242 (not x1241))
+(or x1180 x1181 x1182 x1183 x1184 x1185 x1193 x1192 (not x1191) (not x1190) x1241 (not x1242))
+(or x1243 x1219)
+(or x1243 (not x1244))
+(or (not x1219) x1244 (not x1243))
+(or (not x1243) (not x1219) x1245)
+(or (not x1245) x1243)
+(or (not x1245) x1219)
+(or x1246 (not x1180))
+(or x1246 (not x1181))
+(or x1246 (not x1182))
+(or x1246 (not x1183))
+(or x1246 (not x1193))
+(or x1246 (not x1192))
+(or x1246 x1191)
+(or x1246 (not x1190))
+(or x1246 (not x1217))
+(or x1246 x1218)
+(or x1246 (not x1245))
+(or x1180 x1181 x1182 x1183 x1193 x1192 (not x1191) x1190 x1217 (not x1218) x1245 (not x1246))
+(or x1247 (not x1180))
+(or x1247 (not x1193))
+(or x1247 (not x1192))
+(or x1247 (not x1191))
+(or x1247 (not x1190))
+(or x1247 (not x34))
+(or x1247 x786)
+(or x1247 x785)
+(or x1247 (not x1217))
+(or x1247 (not x1116))
+(or x1247 (not x1117))
+(or x1247 (not x1221))
+(or x1180 x1193 x1192 x1191 x1190 x34 (not x786) (not x785) x1217 x1116 x1117 x1221 (not x1247))
+(or x1248 x1228)
+(or x1248 x1223)
+(or x1248 x1224)
+(or x1248 (not x1225))
+(or (not x1228) (not x1223) (not x1224) x1225 (not x1248))
+(or (not x1248) (not x1228) x1249)
+(or (not x1249) x1248)
+(or (not x1249) x1228)
+(or x1250 (not x1193))
+(or x1250 (not x1192))
+(or x1250 (not x1191))
+(or x1250 (not x1190))
+(or x1250 (not x34))
+(or x1250 x786)
+(or x1250 x785)
+(or x1250 (not x1217))
+(or x1250 (not x1128))
+(or x1250 (not x1249))
+(or x1193 x1192 x1191 x1190 x34 (not x786) (not x785) x1217 x1128 x1249 (not x1250))
+(or (not x1250) (not x1247) (not x1197) (not x1246) (not x1242) (not x1201) (not x1236) (not x1203) (not x1204) (not x1232) x1251)
+(or (not x1251) x1250)
+(or (not x1251) x1247)
+(or (not x1251) x1197)
+(or (not x1251) x1246)
+(or (not x1251) x1242)
+(or (not x1251) x1201)
+(or (not x1251) x1236)
+(or (not x1251) x1203)
+(or (not x1251) x1204)
+(or (not x1251) x1232)
+(or x1252 (not x989))
+(or x1252 (not x991))
+(or x1252 (not x990))
+(or x989 x991 x990 (not x1252))
+(or (not x1252) (not x34) x1189)
+(or (not x1189) x1252)
+(or (not x1189) x34)
+(or x1253 (not x1180))
+(or x1253 (not x1181))
+(or x1253 (not x1182))
+(or x1253 (not x1183))
+(or x1253 (not x1184))
+(or x1253 (not x1185))
+(or x1253 (not x1009))
+(or x1253 (not x1186))
+(or x1253 (not x1187))
+(or x1253 (not x1188))
+(or x1253 (not x1189))
+(or x1253 (not x1190))
+(or x1180 x1181 x1182 x1183 x1184 x1185 x1009 x1186 x1187 x1188 x1189 x1190 (not x1253))
+(or x974 (not x1193))
+(or x974 x1192)
+(or x974 (not x1191))
+(or x974 (not x1190))
+(or x1193 (not x1192) x1191 x1190 (not x974))
+(or (not x974) (not x975) (not x939) x1254)
+(or (not x1254) x974)
+(or (not x1254) x975)
+(or (not x1254) x939)
+(or x1193 (not x1192) (not x1191) x1190 x35 x34 x1188)
+(or (not x1188) (not x1193))
+(or (not x1188) x1192)
+(or (not x1188) x1191)
+(or (not x1188) (not x1190))
+(or (not x1188) (not x35))
+(or (not x1188) (not x34))
+(or x1193 x1192 x1191 (not x1190) x35 x34 x1187)
+(or (not x1187) (not x1193))
+(or (not x1187) (not x1192))
+(or (not x1187) (not x1191))
+(or (not x1187) x1190)
+(or (not x1187) (not x35))
+(or (not x1187) (not x34))
+(or x1204 (not x1180))
+(or x1204 (not x1181))
+(or x1204 (not x1182))
+(or x1204 (not x1183))
+(or x1204 (not x1184))
+(or x1204 (not x1185))
+(or x1204 (not x1009))
+(or x1204 (not x1186))
+(or x1204 (not x1187))
+(or x1204 (not x1188))
+(or x1204 (not x1254))
+(or x1204 x34)
+(or x1180 x1181 x1182 x1183 x1184 x1185 x1009 x1186 x1187 x1188 x1254 (not x34) (not x1204))
+(or x1255 x1234)
+(or x1255 x1256)
+(or (not x1234) (not x1256) (not x1255))
+(or (not x1255) (not x1234) x1257)
+(or (not x1257) x1255)
+(or (not x1257) x1234)
+(or x1193 x1192 x1191 (not x1190) x35 (not x34) x1186)
+(or (not x1186) (not x1193))
+(or (not x1186) (not x1192))
+(or (not x1186) (not x1191))
+(or (not x1186) x1190)
+(or (not x1186) (not x35))
+(or (not x1186) x34)
+(or x1202 (not x1180))
+(or x1202 (not x1181))
+(or x1202 (not x1182))
+(or x1202 (not x1183))
+(or x1202 (not x1184))
+(or x1202 (not x1185))
+(or x1202 (not x1009))
+(or x1202 (not x1186))
+(or x1202 (not x1193))
+(or x1202 (not x1192))
+(or x1202 (not x1191))
+(or x1202 x1190)
+(or x1202 (not x35))
+(or x1202 (not x34))
+(or x1180 x1181 x1182 x1183 x1184 x1185 x1009 x1186 x1193 x1192 x1191 (not x1190) x35 x34 (not x1202))
+(or x1258 (not x1180))
+(or x1258 (not x1181))
+(or x1258 (not x1182))
+(or x1258 (not x1183))
+(or x1258 (not x1184))
+(or x1258 (not x1185))
+(or x1258 (not x1009))
+(or x1258 (not x1186))
+(or x1258 (not x1193))
+(or x1258 (not x1192))
+(or x1258 (not x1191))
+(or x1258 x1190)
+(or x1258 (not x35))
+(or x1258 (not x34))
+(or x1258 x1208)
+(or x1258 x1209)
+(or x1258 (not x1257))
+(or x1180 x1181 x1182 x1183 x1184 x1185 x1009 x1186 x1193 x1192 x1191 (not x1190) x35 x34 (not x1208) (not x1209) x1257 (not x1258))
+(or x1201 (not x1180))
+(or x1201 (not x1181))
+(or x1201 (not x1182))
+(or x1201 (not x1183))
+(or x1201 (not x1184))
+(or x1201 (not x1185))
+(or x1201 (not x1009))
+(or x1201 (not x1193))
+(or x1201 (not x1192))
+(or x1201 (not x1191))
+(or x1201 x1190)
+(or x1201 (not x35))
+(or x1201 x34)
+(or x1180 x1181 x1182 x1183 x1184 x1185 x1009 x1193 x1192 x1191 (not x1190) x35 (not x34) (not x1201))
+(or x1259 x1214)
+(or x1259 (not x1215))
+(or (not x1214) x1215 (not x1259))
+(or (not x1259) (not x1214) x1260)
+(or (not x1260) x1259)
+(or (not x1260) x1214)
+(or x1200 (not x1180))
+(or x1200 (not x1181))
+(or x1200 (not x1182))
+(or x1200 (not x1183))
+(or x1200 (not x1184))
+(or x1200 (not x1185))
+(or x1200 (not x1193))
+(or x1200 (not x1192))
+(or x1200 x1191)
+(or x1200 x1190)
+(or x1180 x1181 x1182 x1183 x1184 x1185 x1193 x1192 (not x1191) (not x1190) (not x1200))
+(or x1261 (not x1180))
+(or x1261 (not x1181))
+(or x1261 (not x1182))
+(or x1261 (not x1183))
+(or x1261 (not x1184))
+(or x1261 (not x1185))
+(or x1261 (not x1193))
+(or x1261 (not x1192))
+(or x1261 x1191)
+(or x1261 x1190)
+(or x1261 x1213)
+(or x1261 (not x1260))
+(or x1180 x1181 x1182 x1183 x1184 x1185 x1193 x1192 (not x1191) (not x1190) (not x1213) x1260 (not x1261))
+(or x1193 x1192 (not x1191) x1190 (not x1262) x1184)
+(or (not x1184) (not x1193))
+(or (not x1184) (not x1192))
+(or (not x1184) x1191)
+(or (not x1184) (not x1190))
+(or (not x1184) x1262)
+(or x1199 (not x1180))
+(or x1199 (not x1181))
+(or x1199 (not x1182))
+(or x1199 (not x1183))
+(or x1199 (not x1184))
+(or x1199 (not x1193))
+(or x1199 (not x1192))
+(or x1199 x1191)
+(or x1199 (not x1190))
+(or x1180 x1181 x1182 x1183 x1184 x1193 x1192 (not x1191) x1190 (not x1199))
+(or x1263 x1218)
+(or x1263 x1219)
+(or x1263 x1244)
+(or x1263 x1264)
+(or (not x1218) (not x1219) (not x1244) (not x1264) (not x1263))
+(or (not x1263) (not x1218) x1265)
+(or (not x1265) x1263)
+(or (not x1265) x1218)
+(or x1193 x1192 (not x1191) x1190 (not x34) (not x35) x1183)
+(or (not x1183) (not x1193))
+(or (not x1183) (not x1192))
+(or (not x1183) x1191)
+(or (not x1183) (not x1190))
+(or (not x1183) x34)
+(or (not x1183) x35)
+(or x1198 (not x1180))
+(or x1198 (not x1181))
+(or x1198 (not x1182))
+(or x1198 (not x1183))
+(or x1198 (not x1193))
+(or x1198 (not x1192))
+(or x1198 x1191)
+(or x1198 (not x1190))
+(or x1198 (not x1217))
+(or x1180 x1181 x1182 x1183 x1193 x1192 (not x1191) x1190 x1217 (not x1198))
+(or x1266 (not x1180))
+(or x1266 (not x1181))
+(or x1266 (not x1182))
+(or x1266 (not x1183))
+(or x1266 (not x1193))
+(or x1266 (not x1192))
+(or x1266 x1191)
+(or x1266 (not x1190))
+(or x1266 (not x1217))
+(or x1266 (not x1265))
+(or x1180 x1181 x1182 x1183 x1193 x1192 (not x1191) x1190 x1217 x1265 (not x1266))
+(or x1197 (not x1180))
+(or x1197 (not x1181))
+(or x1197 (not x1182))
+(or x1197 (not x1193))
+(or x1197 (not x1192))
+(or x1197 x1191)
+(or x1197 (not x1190))
+(or x1197 x34)
+(or x1197 x35)
+(or x1180 x1181 x1182 x1193 x1192 (not x1191) x1190 (not x34) (not x35) (not x1197))
+(or x1193 x1192 x1191 x1190 x34 (not x786) (not x785) (not x1262) (not x1165) (not x1166) x1181)
+(or (not x1181) (not x1193))
+(or (not x1181) (not x1192))
+(or (not x1181) (not x1191))
+(or (not x1181) (not x1190))
+(or (not x1181) (not x34))
+(or (not x1181) x786)
+(or (not x1181) x785)
+(or (not x1181) x1262)
+(or (not x1181) x1165)
+(or (not x1181) x1166)
+(or x1196 (not x1180))
+(or x1196 (not x1181))
+(or x1196 (not x1193))
+(or x1196 (not x1192))
+(or x1196 (not x1191))
+(or x1196 (not x1190))
+(or x1196 (not x34))
+(or x1196 x786)
+(or x1196 x785)
+(or x1180 x1181 x1193 x1192 x1191 x1190 x34 (not x786) (not x785) (not x1196))
+(or (not x956) (not x998) x1117)
+(or (not x1117) x956)
+(or (not x1117) x998)
+(or (not x893) (not x894) (not x1003) x1116)
+(or (not x1116) x893)
+(or (not x1116) x894)
+(or (not x1116) x1003)
+(or x1168 (not x1116))
+(or x1168 (not x1117))
+(or x1116 x1117 (not x1168))
+(or (not x1060) (not x1059) x1058)
+(or (not x1058) x1060)
+(or (not x1058) x1059)
+(or (not x1060) x1059 x1057)
+(or (not x1057) x1060)
+(or (not x1057) (not x1059))
+(or x1060 (not x1059) x1056)
+(or (not x1056) (not x1060))
+(or (not x1056) x1059)
+(or (not x33) x34 x770)
+(or (not x770) x33)
+(or (not x770) (not x34))
+(or x1060 x1059 (not x33) x34 x1267)
+(or (not x1267) (not x1060))
+(or (not x1267) (not x1059))
+(or (not x1267) x33)
+(or (not x1267) (not x34))
+(or x1262 (not x1267))
+(or x1262 (not x1056))
+(or x1262 (not x1057))
+(or x1262 (not x1058))
+(or x1267 x1056 x1057 x1058 (not x1262))
+(or x1193 x1192 x1191 x1190 x34 (not x786) (not x785) x1182)
+(or (not x1182) (not x1193))
+(or (not x1182) (not x1192))
+(or (not x1182) (not x1191))
+(or (not x1182) (not x1190))
+(or (not x1182) (not x34))
+(or (not x1182) x786)
+(or (not x1182) x785)
+(or x1193 x1192 x1191 x1190 x34 (not x786) (not x785) (not x1262) (not x1168) x1180)
+(or (not x1180) (not x1193))
+(or (not x1180) (not x1192))
+(or (not x1180) (not x1191))
+(or (not x1180) (not x1190))
+(or (not x1180) (not x34))
+(or (not x1180) x786)
+(or (not x1180) x785)
+(or (not x1180) x1262)
+(or (not x1180) x1168)
+(or x1195 (not x1180))
+(or x1195 (not x1193))
+(or x1195 (not x1192))
+(or x1195 (not x1191))
+(or x1195 (not x1190))
+(or x1195 (not x34))
+(or x1195 x786)
+(or x1195 x785)
+(or x1195 (not x1217))
+(or x1195 (not x1116))
+(or x1195 (not x1117))
+(or x1180 x1193 x1192 x1191 x1190 x34 (not x786) (not x785) x1217 x1116 x1117 (not x1195))
+(or x1268 (not x1180))
+(or x1268 (not x1193))
+(or x1268 (not x1192))
+(or x1268 (not x1191))
+(or x1268 (not x1190))
+(or x1268 (not x34))
+(or x1268 x786)
+(or x1268 x785)
+(or x1268 (not x1217))
+(or x1268 (not x1116))
+(or x1268 (not x1117))
+(or x1268 x1221)
+(or x1268 x1269)
+(or x1180 x1193 x1192 x1191 x1190 x34 (not x786) (not x785) x1217 x1116 x1117 (not x1221) (not x1269) (not x1268))
+(or x1270 x1224)
+(or x1270 x1225)
+(or (not x1224) (not x1225) (not x1270))
+(or (not x1270) (not x1224) x1271)
+(or (not x1271) x1270)
+(or (not x1271) x1224)
+(or x906 (not x892))
+(or x906 (not x836))
+(or x892 x836 (not x906))
+(or x894 (not x935))
+(or x894 x916)
+(or x894 (not x917))
+(or x894 (not x918))
+(or x894 (not x919))
+(or x894 (not x921))
+(or x894 (not x868))
+(or x894 (not x922))
+(or x894 (not x923))
+(or x894 (not x829))
+(or x894 (not x924))
+(or x894 (not x892))
+(or x894 (not x836))
+(or x935 (not x916) x917 x918 x919 x921 x868 x922 x923 x829 x924 x892 x836 (not x894))
+(or x1019 (not x916))
+(or x1019 (not x917))
+(or x916 x917 (not x1019))
+(or x1017 (not x916))
+(or x1017 (not x917))
+(or x1017 (not x918))
+(or x1017 (not x919))
+(or x916 x917 x918 x919 (not x1017))
+(or x1029 (not x922))
+(or x1029 (not x923))
+(or x922 x923 (not x1029))
+(or x1025 (not x892))
+(or x1025 (not x922))
+(or x1025 (not x923))
+(or x892 x922 x923 (not x1025))
+(or x1030 (not x836))
+(or x1030 (not x892))
+(or x1030 (not x922))
+(or x1030 (not x923))
+(or x836 x892 x922 x923 (not x1030))
+(or x1024 (not x921))
+(or x1024 (not x836))
+(or x1024 (not x892))
+(or x1024 (not x922))
+(or x1024 (not x923))
+(or x921 x836 x892 x922 x923 (not x1024))
+(or x893 (not x921))
+(or x893 (not x836))
+(or x893 (not x892))
+(or x893 (not x922))
+(or x893 (not x923))
+(or x893 (not x935))
+(or x893 (not x829))
+(or x893 x924)
+(or x893 (not x868))
+(or x893 (not x916))
+(or x893 (not x917))
+(or x893 (not x918))
+(or x893 (not x919))
+(or x921 x836 x892 x922 x923 x935 x829 (not x924) x868 x916 x917 x918 x919 (not x893))
+(or (not x893) (not x894) x1272)
+(or (not x1272) x893)
+(or (not x1272) x894)
+(or x1166 (not x1272))
+(or x1166 x998)
+(or x1272 (not x998) (not x1166))
+(or x892 x836 x901)
+(or (not x901) (not x892))
+(or (not x901) (not x836))
+(or x935 (not x916) x917 x918 x919 x921 x868 x922 x923 x829 x924 x892 x836 x885)
+(or (not x885) (not x935))
+(or (not x885) x916)
+(or (not x885) (not x917))
+(or (not x885) (not x918))
+(or (not x885) (not x919))
+(or (not x885) (not x921))
+(or (not x885) (not x868))
+(or (not x885) (not x922))
+(or (not x885) (not x923))
+(or (not x885) (not x829))
+(or (not x885) (not x924))
+(or (not x885) (not x892))
+(or (not x885) (not x836))
+(or x916 x917 x961)
+(or (not x961) (not x916))
+(or (not x961) (not x917))
+(or x916 x917 x918 x919 x958)
+(or (not x958) (not x916))
+(or (not x958) (not x917))
+(or (not x958) (not x918))
+(or (not x958) (not x919))
+(or x922 x923 x972)
+(or (not x972) (not x922))
+(or (not x972) (not x923))
+(or x892 x922 x923 x966)
+(or (not x966) (not x892))
+(or (not x966) (not x922))
+(or (not x966) (not x923))
+(or x836 x892 x922 x923 x973)
+(or (not x973) (not x836))
+(or (not x973) (not x892))
+(or (not x973) (not x922))
+(or (not x973) (not x923))
+(or x921 x836 x892 x922 x923 x965)
+(or (not x965) (not x921))
+(or (not x965) (not x836))
+(or (not x965) (not x892))
+(or (not x965) (not x922))
+(or (not x965) (not x923))
+(or x921 x836 x892 x922 x923 x935 x829 (not x924) x868 x916 x917 x918 x919 x884)
+(or (not x884) (not x921))
+(or (not x884) (not x836))
+(or (not x884) (not x892))
+(or (not x884) (not x922))
+(or (not x884) (not x923))
+(or (not x884) (not x935))
+(or (not x884) (not x829))
+(or (not x884) x924)
+(or (not x884) (not x868))
+(or (not x884) (not x916))
+(or (not x884) (not x917))
+(or (not x884) (not x918))
+(or (not x884) (not x919))
+(or x956 (not x884))
+(or x956 (not x885))
+(or x884 x885 (not x956))
+(or x1165 (not x884))
+(or x1165 (not x885))
+(or x1165 x1003)
+(or x884 x885 (not x1003) (not x1165))
+(or (not x1165) (not x1166) x1128)
+(or (not x1128) x1165)
+(or (not x1128) x1166)
+(or x1273 x1060)
+(or x1273 x1059)
+(or (not x1060) (not x1059) (not x1273))
+(or x1274 x1060)
+(or x1274 (not x1059))
+(or (not x1060) x1059 (not x1274))
+(or x1275 (not x1060))
+(or x1275 x1059)
+(or x1060 (not x1059) (not x1275))
+(or x810 x33)
+(or x810 (not x34))
+(or (not x33) x34 (not x810))
+(or x1276 (not x1060))
+(or x1276 (not x1059))
+(or x1276 x33)
+(or x1276 (not x34))
+(or x1060 x1059 (not x33) x34 (not x1276))
+(or (not x1276) (not x1275) (not x1274) (not x1273) x1217)
+(or (not x1217) x1276)
+(or (not x1217) x1275)
+(or (not x1217) x1274)
+(or (not x1217) x1273)
+(or x1194 (not x1193))
+(or x1194 (not x1192))
+(or x1194 (not x1191))
+(or x1194 (not x1190))
+(or x1194 (not x34))
+(or x1194 x786)
+(or x1194 x785)
+(or x1194 (not x1217))
+(or x1194 (not x1128))
+(or x1193 x1192 x1191 x1190 x34 (not x786) (not x785) x1217 x1128 (not x1194))
+(or x1277 (not x1193))
+(or x1277 (not x1192))
+(or x1277 (not x1191))
+(or x1277 (not x1190))
+(or x1277 (not x34))
+(or x1277 x786)
+(or x1277 x785)
+(or x1277 (not x1217))
+(or x1277 (not x1128))
+(or x1277 x1228)
+(or x1277 x1223)
+(or x1277 (not x1271))
+(or x1193 x1192 x1191 x1190 x34 (not x786) (not x785) x1217 x1128 (not x1228) (not x1223) x1271 (not x1277))
+(or (not x1277) (not x1268) (not x1196) (not x1197) (not x1266) (not x1199) (not x1261) (not x1201) (not x1258) (not x1204) (not x1253) x1278)
+(or (not x1278) x1277)
+(or (not x1278) x1268)
+(or (not x1278) x1196)
+(or (not x1278) x1197)
+(or (not x1278) x1266)
+(or (not x1278) x1199)
+(or (not x1278) x1261)
+(or (not x1278) x1201)
+(or (not x1278) x1258)
+(or (not x1278) x1204)
+(or (not x1278) x1253)
+(or x1279 (not x1280))
+(or x1279 (not x850))
+(or x1279 (not x1281))
+(or x1279 (not x856))
+(or x1280 x850 x1281 x856 (not x1279))
+(or x1282 (not x1280))
+(or x1282 (not x850))
+(or x1282 x856)
+(or x1282 (not x855))
+(or x1282 (not x854))
+(or x1282 x853)
+(or x1282 x829)
+(or x1282 x1283)
+(or x1280 x850 (not x856) x855 x854 (not x853) (not x829) (not x1283) (not x1282))
+(or x1284 (not x856))
+(or x1284 x855)
+(or x1284 x854)
+(or x1284 x853)
+(or x1284 x786)
+(or x1284 x785)
+(or x1284 x1285)
+(or x1284 x1286)
+(or x856 (not x855) (not x854) (not x853) (not x786) (not x785) (not x1285) (not x1286) (not x1284))
+(or (not x1284) (not x1282) (not x1279) x1287)
+(or (not x1287) x1284)
+(or (not x1287) x1282)
+(or (not x1287) x1279)
+(or x1288 (not x1280))
+(or x1288 (not x850))
+(or x1288 (not x1281))
+(or x1288 (not x855))
+(or x1280 x850 x1281 x855 (not x1288))
+(or (not x1289) (not x1290) (not x1291) (not x1288) x1292)
+(or (not x1292) x1289)
+(or (not x1292) x1290)
+(or (not x1292) x1291)
+(or (not x1292) x1288)
+(or x1293 (not x1280))
+(or x1293 (not x850))
+(or x1293 (not x1281))
+(or x1293 (not x854))
+(or x1280 x850 x1281 x854 (not x1293))
+(or x866 x856)
+(or x866 (not x855))
+(or x866 (not x854))
+(or x866 (not x853))
+(or (not x856) x855 x854 x853 (not x866))
+(or x1290 (not x1280))
+(or x1290 x856)
+(or x1290 (not x855))
+(or x1290 (not x854))
+(or x1290 (not x853))
+(or x1280 (not x856) x855 x854 x853 (not x1290))
+(or (not x1289) (not x1290) (not x1291) (not x1293) x1294)
+(or (not x1294) x1289)
+(or (not x1294) x1290)
+(or (not x1294) x1291)
+(or (not x1294) x1293)
+(or (not x856) x855 x854 (not x853) (not x829) x1281)
+(or (not x1281) x856)
+(or (not x1281) (not x855))
+(or (not x1281) (not x854))
+(or (not x1281) x853)
+(or (not x1281) x829)
+(or x1295 (not x1280))
+(or x1295 (not x850))
+(or x1295 (not x1281))
+(or x1295 (not x853))
+(or x1280 x850 x1281 x853 (not x1295))
+(or x856 (not x855) (not x854) (not x853) (not x786) (not x785) (not x1285) x1280)
+(or (not x1280) (not x856))
+(or (not x1280) x855)
+(or (not x1280) x854)
+(or (not x1280) x853)
+(or (not x1280) x786)
+(or (not x1280) x785)
+(or (not x1280) x1285)
+(or x1291 (not x1280))
+(or x1291 (not x850))
+(or x1291 x856)
+(or x1291 (not x855))
+(or x1291 (not x854))
+(or x1291 x853)
+(or x1291 x829)
+(or x1291 (not x1283))
+(or x1280 x850 (not x856) x855 x854 (not x853) (not x829) x1283 (not x1291))
+(or x1289 (not x856))
+(or x1289 x855)
+(or x1289 x854)
+(or x1289 x853)
+(or x1289 x786)
+(or x1289 x785)
+(or x1289 x1285)
+(or x1289 (not x1286))
+(or x856 (not x855) (not x854) (not x853) (not x786) (not x785) (not x1285) x1286 (not x1289))
+(or (not x1289) (not x1291) (not x1295) x1296)
+(or (not x1296) x1289)
+(or (not x1296) x1291)
+(or (not x1296) x1295)
+(or x937 (not x989))
+(or x937 (not x990))
+(or x937 (not x991))
+(or x937 (not x992))
+(or x937 (not x993))
+(or x937 (not x994))
+(or x989 x990 x991 x992 x993 x994 (not x937))
+(or x941 (not x1088))
+(or x941 x1087)
+(or x941 x1086)
+(or x941 (not x1085))
+(or x1088 (not x1087) (not x1086) x1085 (not x941))
+(or x977 (not x1088))
+(or x977 x1087)
+(or x977 (not x1086))
+(or x977 x1085)
+(or x1088 (not x1087) x1086 (not x1085) (not x977))
+(or x940 (not x1088))
+(or x940 (not x1087))
+(or x940 (not x1086))
+(or x940 x1085)
+(or x1088 x1087 x1086 (not x1085) (not x940))
+(or x1297 (not x1088))
+(or x1297 (not x1087))
+(or x1297 x1086)
+(or x1297 x1085)
+(or x1088 x1087 (not x1086) (not x1085) (not x1297))
+(or x939 (not x1193))
+(or x939 x1192)
+(or x939 x1191)
+(or x939 (not x1190))
+(or x1193 (not x1192) (not x1191) x1190 (not x939))
+(or x975 (not x1193))
+(or x975 x1192)
+(or x975 (not x1191))
+(or x975 x1190)
+(or x1193 (not x1192) x1191 (not x1190) (not x975))
+(or x938 (not x1193))
+(or x938 (not x1192))
+(or x938 (not x1191))
+(or x938 x1190)
+(or x1193 x1192 x1191 (not x1190) (not x938))
+(or x1298 (not x1193))
+(or x1298 (not x1192))
+(or x1298 x1191)
+(or x1298 x1190)
+(or x1193 x1192 (not x1191) (not x1190) (not x1298))
+(or (not x1298) (not x938) (not x975) (not x939) (not x1297) (not x940) (not x977) (not x941) x1299)
+(or (not x1299) x1298)
+(or (not x1299) x938)
+(or (not x1299) x975)
+(or (not x1299) x939)
+(or (not x1299) x1297)
+(or (not x1299) x940)
+(or (not x1299) x977)
+(or (not x1299) x941)
+(or (not x1298) (not x938) (not x975) (not x939) (not x1297) (not x940) (not x977) (not x941) x880 x881 x1069)
+(or (not x1069) x1298)
+(or (not x1069) x938)
+(or (not x1069) x975)
+(or (not x1069) x939)
+(or (not x1069) x1297)
+(or (not x1069) x940)
+(or (not x1069) x977)
+(or (not x1069) x941)
+(or (not x1069) (not x880))
+(or (not x1069) (not x881))
+(or x927 (not x1069))
+(or x927 (not x1010))
+(or x927 (not x990))
+(or x927 (not x1012))
+(or x927 (not x993))
+(or x1069 x1010 x990 x1012 x993 (not x927))
+(or x1300 (not x1069))
+(or x1300 (not x1010))
+(or x1300 (not x990))
+(or x1300 (not x1012))
+(or x1300 (not x993))
+(or x1300 (not x989))
+(or x1300 (not x990))
+(or x1300 (not x991))
+(or x1300 (not x992))
+(or x1300 (not x993))
+(or x1300 (not x994))
+(or x1300 x892)
+(or x1069 x1010 x990 x1012 x993 x989 x990 x991 x992 x993 x994 (not x892) (not x1300))
+(or (not x1300) (not x1068) x1301)
+(or (not x1301) x1300)
+(or (not x1301) x1068)
+(or (not x1302) x856)
+(or (not x1302) (not x855))
+(or (not x1302) (not x854))
+(or (not x1302) x853)
+(or (not x856) x855 x854 x853 x850)
+(or (not x850) x856)
+(or (not x850) (not x855))
+(or (not x850) (not x854))
+(or (not x850) (not x853))
+(or (not x1303) (not x856))
+(or (not x1303) x855)
+(or (not x1303) x854)
+(or (not x1303) x853)
+(or x1304 (not x1303))
+(or x1304 (not x850))
+(or x1303 x850 (not x1304))
+(or x1088 (not x1087) (not x1086) x1085 x993)
+(or (not x993) (not x1088))
+(or (not x993) x1087)
+(or (not x993) x1086)
+(or (not x993) (not x1085))
+(or x1088 (not x1087) x1086 (not x1085) x994)
+(or (not x994) (not x1088))
+(or (not x994) x1087)
+(or (not x994) (not x1086))
+(or (not x994) x1085)
+(or x1088 (not x1087) x1086 x1085 x992)
+(or (not x992) (not x1088))
+(or (not x992) x1087)
+(or (not x992) (not x1086))
+(or (not x992) (not x1085))
+(or x1088 x1087 (not x1086) (not x1085) x1011)
+(or (not x1011) (not x1088))
+(or (not x1011) (not x1087))
+(or (not x1011) x1086)
+(or (not x1011) x1085)
+(or x1088 x1087 (not x1086) x1085 x1080)
+(or (not x1080) (not x1088))
+(or (not x1080) (not x1087))
+(or (not x1080) x1086)
+(or (not x1080) (not x1085))
+(or x1088 x1087 x1086 (not x1085) x1012)
+(or (not x1012) (not x1088))
+(or (not x1012) (not x1087))
+(or (not x1012) (not x1086))
+(or (not x1012) x1085)
+(or (not x1305) (not x1088))
+(or (not x1305) (not x1087))
+(or (not x1305) (not x1086))
+(or (not x1305) (not x1085))
+(or x1306 (not x1305))
+(or x1306 (not x1012))
+(or x1306 (not x1080))
+(or x1306 (not x1011))
+(or x1306 (not x992))
+(or x1306 (not x994))
+(or x1305 x1012 x1080 x1011 x992 x994 (not x1306))
+(or x1193 (not x1192) (not x1191) x1190 x990)
+(or (not x990) (not x1193))
+(or (not x990) x1192)
+(or (not x990) x1191)
+(or (not x990) (not x1190))
+(or x1193 (not x1192) x1191 (not x1190) x991)
+(or (not x991) (not x1193))
+(or (not x991) x1192)
+(or (not x991) (not x1191))
+(or (not x991) x1190)
+(or x1193 (not x1192) x1191 x1190 x989)
+(or (not x989) (not x1193))
+(or (not x989) x1192)
+(or (not x989) (not x1191))
+(or (not x989) (not x1190))
+(or x1193 x1192 (not x1191) (not x1190) x1009)
+(or (not x1009) (not x1193))
+(or (not x1009) (not x1192))
+(or (not x1009) x1191)
+(or (not x1009) x1190)
+(or x1193 x1192 (not x1191) x1190 x1185)
+(or (not x1185) (not x1193))
+(or (not x1185) (not x1192))
+(or (not x1185) x1191)
+(or (not x1185) (not x1190))
+(or x1193 x1192 x1191 (not x1190) x1010)
+(or (not x1010) (not x1193))
+(or (not x1010) (not x1192))
+(or (not x1010) (not x1191))
+(or (not x1010) x1190)
+(or (not x1307) (not x1193))
+(or (not x1307) (not x1192))
+(or (not x1307) (not x1191))
+(or (not x1307) (not x1190))
+(or x1308 (not x1307))
+(or x1308 (not x1010))
+(or x1308 (not x1185))
+(or x1308 (not x1009))
+(or x1308 (not x989))
+(or x1308 (not x991))
+(or x1307 x1010 x1185 x1009 x989 x991 (not x1308))
+(or x1309 (not x1310))
+(or x1309 (not x1311))
+(or x1309 (not x1312))
+(or x1309 (not x1313))
+(or x1309 (not x1314))
+(or x1309 (not x1315))
+(or x1309 (not x41))
+(or x1309 x40)
+(or x1309 x39)
+(or x1309 x38)
+(or x1309 (not x1316))
+(or x1309 x1317)
+(or x1310 x1311 x1312 x1313 x1314 x1315 x41 (not x40) (not x39) (not x38) x1316 (not x1317) (not x1309))
+(or x1318 (not x1310))
+(or x1318 (not x1311))
+(or x1318 (not x1312))
+(or x1318 (not x1313))
+(or x1318 (not x1314))
+(or x1318 (not x41))
+(or x1318 x40)
+(or x1318 x39)
+(or x1318 (not x38))
+(or x1318 x42)
+(or x1318 (not x43))
+(or x1318 x1319)
+(or x1310 x1311 x1312 x1313 x1314 x41 (not x40) (not x39) x38 (not x42) x43 (not x1319) (not x1318))
+(or x1320 (not x41))
+(or x1320 (not x40))
+(or x1320 (not x39))
+(or x1320 x38)
+(or x1320 (not x1321))
+(or x41 x40 x39 (not x38) x1321 (not x1320))
+(or (not x1320) (not x1322) (not x1323) (not x1324) (not x1325) (not x1318) (not x1309) (not x1326) x1327)
+(or (not x1327) x1320)
+(or (not x1327) x1322)
+(or (not x1327) x1323)
+(or (not x1327) x1324)
+(or (not x1327) x1325)
+(or (not x1327) x1318)
+(or (not x1327) x1309)
+(or (not x1327) x1326)
+(or x1328 (not x1310))
+(or x1328 (not x1311))
+(or x1328 (not x41))
+(or x1328 (not x40))
+(or x1328 x39)
+(or x1328 x38)
+(or x1328 (not x1316))
+(or x1328 x1329)
+(or x1310 x1311 x41 x40 (not x39) (not x38) x1316 (not x1329) (not x1328))
+(or x1330 (not x1310))
+(or x1330 (not x41))
+(or x1330 (not x40))
+(or x1330 x39)
+(or x1330 (not x38))
+(or x1330 x1332)
+(or x1330 x1331)
+(or x1330 (not x1316))
+(or x1330 x1333)
+(or x1310 x41 x40 (not x39) x38 (not x1332) (not x1331) x1316 (not x1333) (not x1330))
+(or x1334 (not x1335) x1321)
+(or (not x1321) (not x1334))
+(or (not x1321) x1335)
+(or x1334 (not x1335) (not x1336) x1337)
+(or (not x1337) (not x1334))
+(or (not x1337) x1335)
+(or (not x1337) x1336)
+(or x1338 (not x41))
+(or x1338 (not x40))
+(or x1338 (not x39))
+(or x1338 x38)
+(or x1338 (not x1337))
+(or x41 x40 x39 (not x38) x1337 (not x1338))
+(or (not x1338) (not x1330) (not x1328) (not x1339) (not x1340) (not x1341) (not x1342) (not x1326) x1343)
+(or (not x1343) x1338)
+(or (not x1343) x1330)
+(or (not x1343) x1328)
+(or (not x1343) x1339)
+(or (not x1343) x1340)
+(or (not x1343) x1341)
+(or (not x1343) x1342)
+(or (not x1343) x1326)
+(or x1344 (not x1310))
+(or x1344 (not x1311))
+(or x1344 (not x1312))
+(or x1344 (not x1313))
+(or x1344 (not x41))
+(or x1344 x40)
+(or x1344 (not x39))
+(or x1344 x38)
+(or x1344 (not x1316))
+(or x1344 x1345)
+(or x1310 x1311 x1312 x1313 x41 (not x40) x39 (not x38) x1316 (not x1345) (not x1344))
+(or x1346 (not x1310))
+(or x1346 (not x1311))
+(or x1346 (not x1312))
+(or x1346 (not x41))
+(or x1346 x40)
+(or x1346 (not x39))
+(or x1346 (not x38))
+(or x1346 x42)
+(or x1346 (not x43))
+(or x1346 x1347)
+(or x1310 x1311 x1312 x41 (not x40) x39 x38 (not x42) x43 (not x1347) (not x1346))
+(or x1336 (not x1334))
+(or x1336 (not x1348))
+(or x1334 x1348 (not x1336))
+(or x1334 (not x1336) x1349)
+(or (not x1349) (not x1334))
+(or (not x1349) x1336)
+(or x1350 (not x41))
+(or x1350 (not x40))
+(or x1350 (not x39))
+(or x1350 x38)
+(or x1350 (not x1349))
+(or x41 x40 x39 (not x38) x1349 (not x1350))
+(or (not x1350) (not x1351) (not x1352) (not x1346) (not x1344) (not x1339) (not x1340) (not x1353) (not x1354) (not x1326) x1355)
+(or (not x1355) x1350)
+(or (not x1355) x1351)
+(or (not x1355) x1352)
+(or (not x1355) x1346)
+(or (not x1355) x1344)
+(or (not x1355) x1339)
+(or (not x1355) x1340)
+(or (not x1355) x1353)
+(or (not x1355) x1354)
+(or (not x1355) x1326)
+(or (not x41) (not x40) x39 x38 (not x1356) x1357)
+(or (not x1357) x41)
+(or (not x1357) x40)
+(or (not x1357) (not x39))
+(or (not x1357) (not x38))
+(or (not x1357) x1356)
+(or x1326 (not x1310))
+(or x1326 (not x1311))
+(or x1326 (not x1312))
+(or x1326 (not x1313))
+(or x1326 (not x1314))
+(or x1326 (not x1315))
+(or x1326 (not x1358))
+(or x1326 (not x1359))
+(or x1326 (not x1360))
+(or x1326 (not x1361))
+(or x1326 (not x1357))
+(or x1310 x1311 x1312 x1313 x1314 x1315 x1358 x1359 x1360 x1361 x1357 (not x1326))
+(or (not x41) x40 (not x39) (not x38) (not x42) x43 x1361)
+(or (not x1361) x41)
+(or (not x1361) (not x40))
+(or (not x1361) x39)
+(or (not x1361) x38)
+(or (not x1361) x42)
+(or (not x1361) (not x43))
+(or x1354 (not x1310))
+(or x1354 (not x1311))
+(or x1354 (not x1312))
+(or x1354 (not x1313))
+(or x1354 (not x1314))
+(or x1354 (not x1315))
+(or x1354 (not x1358))
+(or x1354 (not x1359))
+(or x1354 (not x1360))
+(or x1354 (not x1361))
+(or x1354 x41)
+(or x1354 x40)
+(or x1354 (not x39))
+(or x1354 (not x38))
+(or x1354 (not x1316))
+(or x1310 x1311 x1312 x1313 x1314 x1315 x1358 x1359 x1360 x1361 (not x41) (not x40) x39 x38 x1316 (not x1354))
+(or x1362 (not x1310))
+(or x1362 (not x1311))
+(or x1362 (not x1312))
+(or x1362 (not x1313))
+(or x1362 (not x1314))
+(or x1362 (not x1315))
+(or x1362 (not x1358))
+(or x1362 (not x1359))
+(or x1362 (not x1360))
+(or x1362 (not x1361))
+(or x1362 x41)
+(or x1362 x40)
+(or x1362 (not x39))
+(or x1362 (not x38))
+(or x1362 (not x1316))
+(or x1362 x1363)
+(or x1310 x1311 x1312 x1313 x1314 x1315 x1358 x1359 x1360 x1361 (not x41) (not x40) x39 x38 x1316 (not x1363) (not x1362))
+(or (not x41) x40 (not x39) x38 (not x1356) x1360)
+(or (not x1360) x41)
+(or (not x1360) (not x40))
+(or (not x1360) x39)
+(or (not x1360) (not x38))
+(or (not x1360) x1356)
+(or x1353 (not x1310))
+(or x1353 (not x1311))
+(or x1353 (not x1312))
+(or x1353 (not x1313))
+(or x1353 (not x1314))
+(or x1353 (not x1315))
+(or x1353 (not x1358))
+(or x1353 (not x1359))
+(or x1353 (not x1360))
+(or x1353 x41)
+(or x1353 (not x40))
+(or x1353 x39)
+(or x1353 x38)
+(or x1353 x42)
+(or x1353 (not x43))
+(or x1310 x1311 x1312 x1313 x1314 x1315 x1358 x1359 x1360 (not x41) x40 (not x39) (not x38) (not x42) x43 (not x1353))
+(or x1364 (not x1310))
+(or x1364 (not x1311))
+(or x1364 (not x1312))
+(or x1364 (not x1313))
+(or x1364 (not x1314))
+(or x1364 (not x1315))
+(or x1364 (not x1358))
+(or x1364 (not x1359))
+(or x1364 (not x1360))
+(or x1364 x41)
+(or x1364 (not x40))
+(or x1364 x39)
+(or x1364 x38)
+(or x1364 x42)
+(or x1364 (not x43))
+(or x1364 x1365)
+(or x1310 x1311 x1312 x1313 x1314 x1315 x1358 x1359 x1360 (not x41) x40 (not x39) (not x38) (not x42) x43 (not x1365) (not x1364))
+(or (not x41) x40 x39 (not x38) (not x1332) (not x1331) (not x42) x43 x1359)
+(or (not x1359) x41)
+(or (not x1359) (not x40))
+(or (not x1359) (not x39))
+(or (not x1359) x38)
+(or (not x1359) x1332)
+(or (not x1359) x1331)
+(or (not x1359) x42)
+(or (not x1359) (not x43))
+(or x1342 (not x1310))
+(or x1342 (not x1311))
+(or x1342 (not x1312))
+(or x1342 (not x1313))
+(or x1342 (not x1314))
+(or x1342 (not x1315))
+(or x1342 (not x1358))
+(or x1342 (not x1359))
+(or x1342 x41)
+(or x1342 (not x40))
+(or x1342 x39)
+(or x1342 (not x38))
+(or x1342 (not x1316))
+(or x1310 x1311 x1312 x1313 x1314 x1315 x1358 x1359 (not x41) x40 (not x39) x38 x1316 (not x1342))
+(or x1366 (not x1310))
+(or x1366 (not x1311))
+(or x1366 (not x1312))
+(or x1366 (not x1313))
+(or x1366 (not x1314))
+(or x1366 (not x1315))
+(or x1366 (not x1358))
+(or x1366 (not x1359))
+(or x1366 x41)
+(or x1366 (not x40))
+(or x1366 x39)
+(or x1366 (not x38))
+(or x1366 (not x1316))
+(or x1366 x1367)
+(or x1310 x1311 x1312 x1313 x1314 x1315 x1358 x1359 (not x41) x40 (not x39) x38 x1316 (not x1367) (not x1366))
+(or x41 (not x40) (not x39) (not x38) (not x1356) x1358)
+(or (not x1358) (not x41))
+(or (not x1358) x40)
+(or (not x1358) x39)
+(or (not x1358) x38)
+(or (not x1358) x1356)
+(or x1341 (not x1310))
+(or x1341 (not x1311))
+(or x1341 (not x1312))
+(or x1341 (not x1313))
+(or x1341 (not x1314))
+(or x1341 (not x1315))
+(or x1341 (not x1358))
+(or x1341 x41)
+(or x1341 (not x40))
+(or x1341 (not x39))
+(or x1341 x38)
+(or x1341 x1332)
+(or x1341 x1331)
+(or x1341 x42)
+(or x1341 (not x43))
+(or x1310 x1311 x1312 x1313 x1314 x1315 x1358 (not x41) x40 x39 (not x38) (not x1332) (not x1331) (not x42) x43 (not x1341))
+(or x1368 (not x1310))
+(or x1368 (not x1311))
+(or x1368 (not x1312))
+(or x1368 (not x1313))
+(or x1368 (not x1314))
+(or x1368 (not x1315))
+(or x1368 (not x1358))
+(or x1368 x41)
+(or x1368 (not x40))
+(or x1368 (not x39))
+(or x1368 x38)
+(or x1368 x1332)
+(or x1368 x1331)
+(or x1368 x42)
+(or x1368 (not x43))
+(or x1368 x1369)
+(or x1310 x1311 x1312 x1313 x1314 x1315 x1358 (not x41) x40 x39 (not x38) (not x1332) (not x1331) (not x42) x43 (not x1369) (not x1368))
+(or x41 (not x40) (not x39) x38 (not x42) x43 x1315)
+(or (not x1315) (not x41))
+(or (not x1315) x40)
+(or (not x1315) x39)
+(or (not x1315) (not x38))
+(or (not x1315) x42)
+(or (not x1315) (not x43))
+(or x1340 (not x1310))
+(or x1340 (not x1311))
+(or x1340 (not x1312))
+(or x1340 (not x1313))
+(or x1340 (not x1314))
+(or x1340 (not x1315))
+(or x1340 (not x41))
+(or x1340 x40)
+(or x1340 x39)
+(or x1340 x38)
+(or x1340 (not x1316))
+(or x1340 (not x1317))
+(or x1310 x1311 x1312 x1313 x1314 x1315 x41 (not x40) (not x39) (not x38) x1316 x1317 (not x1340))
+(or x41 (not x40) x39 (not x38) (not x1356) x1314)
+(or (not x1314) (not x41))
+(or (not x1314) x40)
+(or (not x1314) (not x39))
+(or (not x1314) x38)
+(or (not x1314) x1356)
+(or x1339 (not x1310))
+(or x1339 (not x1311))
+(or x1339 (not x1312))
+(or x1339 (not x1313))
+(or x1339 (not x1314))
+(or x1339 (not x41))
+(or x1339 x40)
+(or x1339 x39)
+(or x1339 (not x38))
+(or x1339 x42)
+(or x1339 (not x43))
+(or x1339 (not x1319))
+(or x1310 x1311 x1312 x1313 x1314 x41 (not x40) (not x39) x38 (not x42) x43 x1319 (not x1339))
+(or x41 (not x40) x39 x38 (not x42) x43 x1313)
+(or (not x1313) (not x41))
+(or (not x1313) x40)
+(or (not x1313) (not x39))
+(or (not x1313) (not x38))
+(or (not x1313) x42)
+(or (not x1313) (not x43))
+(or x1325 (not x1310))
+(or x1325 (not x1311))
+(or x1325 (not x1312))
+(or x1325 (not x1313))
+(or x1325 (not x41))
+(or x1325 x40)
+(or x1325 (not x39))
+(or x1325 x38)
+(or x1325 (not x1316))
+(or x1310 x1311 x1312 x1313 x41 (not x40) x39 (not x38) x1316 (not x1325))
+(or x1370 (not x1310))
+(or x1370 (not x1311))
+(or x1370 (not x1312))
+(or x1370 (not x1313))
+(or x1370 (not x41))
+(or x1370 x40)
+(or x1370 (not x39))
+(or x1370 x38)
+(or x1370 (not x1316))
+(or x1370 (not x1345))
+(or x1310 x1311 x1312 x1313 x41 (not x40) x39 (not x38) x1316 x1345 (not x1370))
+(or x41 x40 (not x39) (not x38) (not x1356) x1312)
+(or (not x1312) (not x41))
+(or (not x1312) (not x40))
+(or (not x1312) x39)
+(or (not x1312) x38)
+(or (not x1312) x1356)
+(or x1324 (not x1310))
+(or x1324 (not x1311))
+(or x1324 (not x1312))
+(or x1324 (not x41))
+(or x1324 x40)
+(or x1324 (not x39))
+(or x1324 (not x38))
+(or x1324 x42)
+(or x1324 (not x43))
+(or x1310 x1311 x1312 x41 (not x40) x39 x38 (not x42) x43 (not x1324))
+(or x1371 (not x1310))
+(or x1371 (not x1311))
+(or x1371 (not x1312))
+(or x1371 (not x41))
+(or x1371 x40)
+(or x1371 (not x39))
+(or x1371 (not x38))
+(or x1371 x42)
+(or x1371 (not x43))
+(or x1371 (not x1347))
+(or x1310 x1311 x1312 x41 (not x40) x39 x38 (not x42) x43 x1347 (not x1371))
+(or x41 x40 (not x39) x38 (not x1332) (not x1331) (not x1356) x1311)
+(or (not x1311) (not x41))
+(or (not x1311) (not x40))
+(or (not x1311) x39)
+(or (not x1311) (not x38))
+(or (not x1311) x1332)
+(or (not x1311) x1331)
+(or (not x1311) x1356)
+(or x1323 (not x1310))
+(or x1323 (not x1311))
+(or x1323 (not x41))
+(or x1323 (not x40))
+(or x1323 x39)
+(or x1323 x38)
+(or x1323 (not x1316))
+(or x1310 x1311 x41 x40 (not x39) (not x38) x1316 (not x1323))
+(or x1352 (not x1310))
+(or x1352 (not x1311))
+(or x1352 (not x41))
+(or x1352 (not x40))
+(or x1352 x39)
+(or x1352 x38)
+(or x1352 (not x1316))
+(or x1352 (not x1329))
+(or x1310 x1311 x41 x40 (not x39) (not x38) x1316 x1329 (not x1352))
+(or x41 x40 x39 (not x38) x1310)
+(or (not x1310) (not x41))
+(or (not x1310) (not x40))
+(or (not x1310) (not x39))
+(or (not x1310) x38)
+(or x1322 (not x1310))
+(or x1322 (not x41))
+(or x1322 (not x40))
+(or x1322 x39)
+(or x1322 (not x38))
+(or x1322 x1332)
+(or x1322 x1331)
+(or x1322 (not x1316))
+(or x1310 x41 x40 (not x39) x38 (not x1332) (not x1331) x1316 (not x1322))
+(or x1351 (not x1310))
+(or x1351 (not x41))
+(or x1351 (not x40))
+(or x1351 x39)
+(or x1351 (not x38))
+(or x1351 x1332)
+(or x1351 x1331)
+(or x1351 (not x1316))
+(or x1351 (not x1333))
+(or x1310 x41 x40 (not x39) x38 (not x1332) (not x1331) x1316 x1333 (not x1351))
+(or x1335 (not x1334))
+(or x1335 x1348)
+(or x1334 (not x1348) (not x1335))
+(or x1372 (not x41))
+(or x1372 (not x40))
+(or x1372 (not x39))
+(or x1372 x38)
+(or x1372 (not x1334))
+(or x1372 x1348)
+(or x41 x40 x39 (not x38) x1334 (not x1348) (not x1372))
+(or (not x1372) (not x1351) (not x1352) (not x1371) (not x1370) (not x1339) (not x1340) (not x1368) (not x1366) (not x1364) (not x1362) (not x1326) x1373)
+(or (not x1373) x1372)
+(or (not x1373) x1351)
+(or (not x1373) x1352)
+(or (not x1373) x1371)
+(or (not x1373) x1370)
+(or (not x1373) x1339)
+(or (not x1373) x1340)
+(or (not x1373) x1368)
+(or (not x1373) x1366)
+(or (not x1373) x1364)
+(or (not x1373) x1362)
+(or (not x1373) x1326)
+(or x1374 x1375 (not x1376) x1377)
+(or (not x1377) (not x1374))
+(or (not x1377) (not x1375))
+(or (not x1377) x1376)
+(or (not x1374) x1375 (not x1378) x1379)
+(or (not x1379) x1374)
+(or (not x1379) (not x1375))
+(or (not x1379) x1378)
+(or x1380 (not x1379))
+(or x1380 (not x1377))
+(or x1379 x1377 (not x1380))
+(or (not x1381) (not x1382) x1383 x1384 (not x1385) x1386)
+(or (not x1386) x1381)
+(or (not x1386) x1382)
+(or (not x1386) (not x1383))
+(or (not x1386) (not x1384))
+(or (not x1386) x1385)
+(or x1376 (not x1375))
+(or x1376 (not x1386))
+(or x1375 x1386 (not x1376))
+(or (not x1375) (not x1376) x1387)
+(or (not x1387) x1375)
+(or (not x1387) x1376)
+(or x1375 (not x1374) x1388)
+(or (not x1388) (not x1375))
+(or (not x1388) x1374)
+(or x1378 (not x1389))
+(or x1378 x1382)
+(or x1378 (not x1383))
+(or x1378 (not x1384))
+(or x1378 x1385)
+(or x1389 (not x1382) x1383 x1384 (not x1385) (not x1378))
+(or x1375 (not x1378) x1390)
+(or (not x1390) (not x1375))
+(or (not x1390) x1378)
+(or x1391 (not x1390))
+(or x1391 (not x1388))
+(or x1390 x1388 (not x1391))
+(or (not x1392) (not x1391) x1393)
+(or (not x1393) x1392)
+(or (not x1393) x1391)
+(or x1394 (not x1393))
+(or x1394 (not x1387))
+(or x1393 x1387 (not x1394))
+(or x1395 (not x1375))
+(or x1395 (not x1396))
+(or x1395 (not x1397))
+(or x1375 x1396 x1397 (not x1395))
+(or x1398 (not x1375))
+(or x1398 x1402)
+(or x1398 (not x1401))
+(or x1398 (not x1400))
+(or x1398 (not x1399))
+(or x1375 (not x1402) x1401 x1400 x1399 (not x1398))
+(or x1403 x1404)
+(or x1403 x1405)
+(or (not x1404) (not x1405) (not x1403))
+(or (not x1403) (not x1404) x1406)
+(or (not x1406) x1403)
+(or (not x1406) x1404)
+(or x1407 x1375)
+(or x1407 x1408)
+(or x1407 (not x1406))
+(or (not x1375) (not x1408) x1406 (not x1407))
+(or (not x1407) (not x1398) (not x1395) x1409)
+(or (not x1409) x1407)
+(or (not x1409) x1398)
+(or (not x1409) x1395)
+(or (not x1402) x1401 x1400 x1399 (not x1410) x1411)
+(or (not x1411) x1402)
+(or (not x1411) (not x1401))
+(or (not x1411) (not x1400))
+(or (not x1411) (not x1399))
+(or (not x1411) x1410)
+(or (not x1412) (not x1413) x1414 (not x1415) (not x1416) (not x1417) (not x1418) (not x1419) (not x1420) (not x1421) (not x1422) (not x1423) x1424)
+(or (not x1424) x1412)
+(or (not x1424) x1413)
+(or (not x1424) (not x1414))
+(or (not x1424) x1415)
+(or (not x1424) x1416)
+(or (not x1424) x1417)
+(or (not x1424) x1418)
+(or (not x1424) x1419)
+(or (not x1424) x1420)
+(or (not x1424) x1421)
+(or (not x1424) x1422)
+(or (not x1424) x1423)
+(or x1425 (not x1424))
+(or x1425 (not x1411))
+(or x1424 x1411 (not x1425))
+(or x1426 x1427 x1428)
+(or (not x1428) (not x1426))
+(or (not x1428) (not x1427))
+(or x1429 x1332)
+(or x1429 x1331)
+(or x1429 (not x1430))
+(or x1429 (not x1431))
+(or x1429 (not x1428))
+(or (not x1332) (not x1331) x1430 x1431 x1428 (not x1429))
+(or (not x1432) (not x1429) x1433)
+(or (not x1433) x1432)
+(or (not x1433) x1429)
+(or x1434 (not x1426))
+(or x1434 (not x1435))
+(or x1426 x1435 (not x1434))
+(or (not x1427) (not x1434) x1436)
+(or (not x1436) x1427)
+(or (not x1436) x1434)
+(or x1437 (not x1436))
+(or x1437 (not x1433))
+(or x1436 x1433 (not x1437))
+(or x1438 (not x1332) (not x1331) (not x1439) (not x1440) x1435)
+(or (not x1435) (not x1438))
+(or (not x1435) x1332)
+(or (not x1435) x1331)
+(or (not x1435) x1439)
+(or (not x1435) x1440)
+(or (not x1426) x1438 (not x1332) (not x1331) (not x1439) (not x1440) x1441)
+(or (not x1441) x1426)
+(or (not x1441) (not x1438))
+(or (not x1441) x1332)
+(or (not x1441) x1331)
+(or (not x1441) x1439)
+(or (not x1441) x1440)
+(or x1442 x1332)
+(or x1442 x1331)
+(or x1442 (not x1430))
+(or x1442 (not x1431))
+(or x1442 x1426)
+(or (not x1332) (not x1331) x1430 x1431 (not x1426) (not x1442))
+(or x1432 (not x1438))
+(or x1432 x1332)
+(or x1432 x1331)
+(or x1432 (not x1430))
+(or x1432 (not x1431))
+(or x1438 (not x1332) (not x1331) x1430 x1431 (not x1432))
+(or (not x1432) (not x1442) x1443)
+(or (not x1443) x1432)
+(or (not x1443) x1442)
+(or x1444 (not x1443))
+(or x1444 (not x1441))
+(or x1443 x1441 (not x1444))
+(or x1382 (not x1385) x1445)
+(or (not x1445) (not x1382))
+(or (not x1445) x1385)
+(or x1446 (not x1447))
+(or x1446 x1413)
+(or x1446 x1448)
+(or x1446 (not x1445))
+(or x1447 (not x1413) (not x1448) x1445 (not x1446))
+(or (not x1449) (not x1412) (not x1446) x1450)
+(or (not x1450) x1449)
+(or (not x1450) x1412)
+(or (not x1450) x1446)
+(or x1451 (not x1382))
+(or x1451 x1385)
+(or x1382 (not x1385) (not x1451))
+(or (not x1452) (not x1413) (not x1448) (not x1451) x1453)
+(or (not x1453) x1452)
+(or (not x1453) x1413)
+(or (not x1453) x1448)
+(or (not x1453) x1451)
+(or x1454 (not x1396))
+(or x1454 (not x1453))
+(or x1396 x1453 (not x1454))
+(or (not x1454) (not x1412) x1455)
+(or (not x1455) x1454)
+(or (not x1455) x1412)
+(or x1456 (not x1455))
+(or x1456 (not x1450))
+(or x1455 x1450 (not x1456))
+(or x1457 (not x1458))
+(or x1457 x1438)
+(or x1458 (not x1438) (not x1457))
+(or (not x1382) (not x1332) (not x1331) (not x1459) (not x1384) (not x1460) (not x1461) x1438 x1462 x1463 x1464 x1465 x1466 (not x1382) x1467 x1414 x1468 x1469 x1375 x1470 x1471)
+(or (not x1471) x1382)
+(or (not x1471) x1332)
+(or (not x1471) x1331)
+(or (not x1471) x1459)
+(or (not x1471) x1384)
+(or (not x1471) x1460)
+(or (not x1471) x1461)
+(or (not x1471) (not x1438))
+(or (not x1471) (not x1462))
+(or (not x1471) (not x1463))
+(or (not x1471) (not x1464))
+(or (not x1471) (not x1465))
+(or (not x1471) (not x1466))
+(or (not x1471) x1382)
+(or (not x1471) (not x1467))
+(or (not x1471) (not x1414))
+(or (not x1471) (not x1468))
+(or (not x1471) (not x1469))
+(or (not x1471) (not x1375))
+(or (not x1471) (not x1470))
+(or (not x1472) (not x1473) (not x1332) (not x1331) (not x1438) x1382 x1462 x1463 x1464 x1465 x1467 x1414 x1468 x1469 x1375 x1470 x1474)
+(or (not x1474) x1472)
+(or (not x1474) x1473)
+(or (not x1474) x1332)
+(or (not x1474) x1331)
+(or (not x1474) x1438)
+(or (not x1474) (not x1382))
+(or (not x1474) (not x1462))
+(or (not x1474) (not x1463))
+(or (not x1474) (not x1464))
+(or (not x1474) (not x1465))
+(or (not x1474) (not x1467))
+(or (not x1474) (not x1414))
+(or (not x1474) (not x1468))
+(or (not x1474) (not x1469))
+(or (not x1474) (not x1375))
+(or (not x1474) (not x1470))
+(or x1475 (not x1474))
+(or x1475 (not x1471))
+(or x1474 x1471 (not x1475))
+(or x1462 x1464 x1465 (not x1463) x1467 x1414 x1468 x1469 x1375 x1470 x1438 x1382 x1476)
+(or (not x1476) (not x1462))
+(or (not x1476) (not x1464))
+(or (not x1476) (not x1465))
+(or (not x1476) x1463)
+(or (not x1476) (not x1467))
+(or (not x1476) (not x1414))
+(or (not x1476) (not x1468))
+(or (not x1476) (not x1469))
+(or (not x1476) (not x1375))
+(or (not x1476) (not x1470))
+(or (not x1476) (not x1438))
+(or (not x1476) (not x1382))
+(or (not x1402) x1401 x1400 x1399 (not x1375) x1470 x1467 x1382 x1438 x1468 x1469 (not x1477) (not x1478) x1414 x1462 x1463 x1464 x1465 x1479)
+(or (not x1479) x1402)
+(or (not x1479) (not x1401))
+(or (not x1479) (not x1400))
+(or (not x1479) (not x1399))
+(or (not x1479) x1375)
+(or (not x1479) (not x1470))
+(or (not x1479) (not x1467))
+(or (not x1479) (not x1382))
+(or (not x1479) (not x1438))
+(or (not x1479) (not x1468))
+(or (not x1479) (not x1469))
+(or (not x1479) x1477)
+(or (not x1479) x1478)
+(or (not x1479) (not x1414))
+(or (not x1479) (not x1462))
+(or (not x1479) (not x1463))
+(or (not x1479) (not x1464))
+(or (not x1479) (not x1465))
+(or x1480 (not x1479))
+(or x1480 (not x1476))
+(or x1479 x1476 (not x1480))
+(or (not x1332) (not x1331) (not x1481) (not x1480) x1482)
+(or (not x1482) x1332)
+(or (not x1482) x1331)
+(or (not x1482) x1481)
+(or (not x1482) x1480)
+(or (not x1332) (not x1331) (not x1438) x1382 x1462 x1463 x1464 x1465 x1467 x1414 x1468 x1469 x1375 x1470 (not x1483) (not x1484) (not x1485) (not x1486) (not x1487) (not x1448) x1488)
+(or (not x1488) x1332)
+(or (not x1488) x1331)
+(or (not x1488) x1438)
+(or (not x1488) (not x1382))
+(or (not x1488) (not x1462))
+(or (not x1488) (not x1463))
+(or (not x1488) (not x1464))
+(or (not x1488) (not x1465))
+(or (not x1488) (not x1467))
+(or (not x1488) (not x1414))
+(or (not x1488) (not x1468))
+(or (not x1488) (not x1469))
+(or (not x1488) (not x1375))
+(or (not x1488) (not x1470))
+(or (not x1488) x1483)
+(or (not x1488) x1484)
+(or (not x1488) x1485)
+(or (not x1488) x1486)
+(or (not x1488) x1487)
+(or (not x1488) x1448)
+(or (not x1481) x1463 x1464 x1465 x1467 x1414 x1468 x1469 x1375 x1470 x1438 x1382 x1489)
+(or (not x1489) x1481)
+(or (not x1489) (not x1463))
+(or (not x1489) (not x1464))
+(or (not x1489) (not x1465))
+(or (not x1489) (not x1467))
+(or (not x1489) (not x1414))
+(or (not x1489) (not x1468))
+(or (not x1489) (not x1469))
+(or (not x1489) (not x1375))
+(or (not x1489) (not x1470))
+(or (not x1489) (not x1438))
+(or (not x1489) (not x1382))
+(or x1490 (not x1491))
+(or x1490 (not x1489))
+(or x1491 x1489 (not x1490))
+(or (not x1332) (not x1331) (not x1462) (not x1490) x1492)
+(or (not x1492) x1332)
+(or (not x1492) x1331)
+(or (not x1492) x1462)
+(or (not x1492) x1490)
+(or x1467 x1468 (not x1469) (not x1332) (not x1331) x1375 x1470 x1438 x1382 x1414 x1462 x1463 x1464 x1465 x1493)
+(or (not x1493) (not x1467))
+(or (not x1493) (not x1468))
+(or (not x1493) x1469)
+(or (not x1493) x1332)
+(or (not x1493) x1331)
+(or (not x1493) (not x1375))
+(or (not x1493) (not x1470))
+(or (not x1493) (not x1438))
+(or (not x1493) (not x1382))
+(or (not x1493) (not x1414))
+(or (not x1493) (not x1462))
+(or (not x1493) (not x1463))
+(or (not x1493) (not x1464))
+(or (not x1493) (not x1465))
+(or x1494 (not x1493))
+(or x1494 (not x1492))
+(or x1493 x1492 (not x1494))
+(or x1495 x1463)
+(or x1495 x1470)
+(or (not x1463) (not x1470) (not x1495))
+(or x1496 (not x1463))
+(or x1496 (not x1481))
+(or x1496 (not x1375))
+(or x1463 x1481 x1375 (not x1496))
+(or x1470 x1463 (not x1497) x1498)
+(or (not x1498) (not x1470))
+(or (not x1498) (not x1463))
+(or (not x1498) x1497)
+(or x1499 x1375)
+(or x1499 (not x1498))
+(or (not x1375) x1498 (not x1499))
+(or x1500 x1481)
+(or x1500 (not x1375))
+(or x1500 (not x1470))
+(or (not x1481) x1375 x1470 (not x1500))
+(or (not x1332) (not x1331) x1414 x1462 x1467 x1382 x1438 x1468 x1469 x1464 x1465 (not x1500) (not x1499) (not x1496) (not x1495) x1501)
+(or (not x1501) x1332)
+(or (not x1501) x1331)
+(or (not x1501) (not x1414))
+(or (not x1501) (not x1462))
+(or (not x1501) (not x1467))
+(or (not x1501) (not x1382))
+(or (not x1501) (not x1438))
+(or (not x1501) (not x1468))
+(or (not x1501) (not x1469))
+(or (not x1501) (not x1464))
+(or (not x1501) (not x1465))
+(or (not x1501) x1500)
+(or (not x1501) x1499)
+(or (not x1501) x1496)
+(or (not x1501) x1495)
+(or (not x1332) (not x1331) (not x1502) x1503)
+(or (not x1503) x1332)
+(or (not x1503) x1331)
+(or (not x1503) x1502)
+(or x1423 (not x1504))
+(or x1423 (not x1505))
+(or x1504 x1505 (not x1423))
+(or x1506 (not x1507))
+(or x1506 x1464)
+(or x1507 (not x1464) (not x1506))
+(or x1508 (not x1375))
+(or x1508 (not x1464))
+(or x1508 (not x1462))
+(or x1508 (not x1463))
+(or x1375 x1464 x1462 x1463 (not x1508))
+(or x1509 x1463)
+(or x1509 x1462)
+(or (not x1463) (not x1462) (not x1509))
+(or x1465 (not x1509) (not x1508) (not x1506) x1510)
+(or (not x1510) (not x1465))
+(or (not x1510) x1509)
+(or (not x1510) x1508)
+(or (not x1510) x1506)
+(or x1422 (not x1470))
+(or x1422 (not x1467))
+(or x1422 (not x1382))
+(or x1422 (not x1438))
+(or x1422 (not x1468))
+(or x1422 (not x1469))
+(or x1422 (not x1510))
+(or x1470 x1467 x1382 x1438 x1468 x1469 x1510 (not x1422))
+(or x1421 x1469)
+(or x1421 x1468)
+(or (not x1469) (not x1468) (not x1421))
+(or x1420 (not x1511))
+(or x1420 x1470)
+(or x1511 (not x1470) (not x1420))
+(or x1419 x1382)
+(or x1419 (not x1512))
+(or (not x1382) x1512 (not x1419))
+(or (not x1402) x1401 x1400 x1399 x1481 x1513)
+(or (not x1513) x1402)
+(or (not x1513) (not x1401))
+(or (not x1513) (not x1400))
+(or (not x1513) (not x1399))
+(or (not x1513) (not x1481))
+(or (not x1402) x1401 x1400 x1399 (not x1481) (not x1397) x1514)
+(or (not x1514) x1402)
+(or (not x1514) (not x1401))
+(or (not x1514) (not x1400))
+(or (not x1514) (not x1399))
+(or (not x1514) x1481)
+(or (not x1514) x1397)
+(or x1497 (not x1514))
+(or x1497 (not x1513))
+(or x1514 x1513 (not x1497))
+(or (not x1402) x1401 x1400 x1399 (not x1481) x1515)
+(or (not x1515) x1402)
+(or (not x1515) (not x1401))
+(or (not x1515) (not x1400))
+(or (not x1515) (not x1399))
+(or (not x1515) x1481)
+(or x1516 (not x1515))
+(or x1516 (not x1514))
+(or x1516 (not x1513))
+(or x1515 x1514 x1513 (not x1516))
+(or x1464 x1462 x1463 x1470 x1467 x1382 x1438 x1468 x1469 (not x1516) x1517)
+(or (not x1517) (not x1464))
+(or (not x1517) (not x1462))
+(or (not x1517) (not x1463))
+(or (not x1517) (not x1470))
+(or (not x1517) (not x1467))
+(or (not x1517) (not x1382))
+(or (not x1517) (not x1438))
+(or (not x1517) (not x1468))
+(or (not x1517) (not x1469))
+(or (not x1517) x1516)
+(or x1418 x1375)
+(or x1418 (not x1517))
+(or (not x1375) x1517 (not x1418))
+(or x1417 (not x1518))
+(or x1417 x1438)
+(or x1518 (not x1438) (not x1417))
+(or x1416 (not x1519))
+(or x1416 x1467)
+(or x1519 (not x1467) (not x1416))
+(or x1415 x1466)
+(or x1415 x1382)
+(or (not x1466) (not x1382) (not x1415))
+(or (not x1448) (not x1332) (not x1331) x1414 (not x1415) (not x1416) (not x1417) (not x1418) (not x1419) (not x1420) (not x1421) (not x1422) (not x1423) (not x1520) (not x1485) (not x1521) (not x1522) (not x1487) (not x1523) (not x1412) x1524)
+(or (not x1524) x1448)
+(or (not x1524) x1332)
+(or (not x1524) x1331)
+(or (not x1524) (not x1414))
+(or (not x1524) x1415)
+(or (not x1524) x1416)
+(or (not x1524) x1417)
+(or (not x1524) x1418)
+(or (not x1524) x1419)
+(or (not x1524) x1420)
+(or (not x1524) x1421)
+(or (not x1524) x1422)
+(or (not x1524) x1423)
+(or (not x1524) x1520)
+(or (not x1524) x1485)
+(or (not x1524) x1521)
+(or (not x1524) x1522)
+(or (not x1524) x1487)
+(or (not x1524) x1523)
+(or (not x1524) x1412)
+(or x1525 x1332)
+(or x1525 x1331)
+(or x1525 (not x1414))
+(or x1525 (not x1526))
+(or x1525 (not x1527))
+(or x1525 (not x1528))
+(or x1525 (not x1529))
+(or x1525 (not x1530))
+(or x1525 (not x1531))
+(or x1525 (not x1532))
+(or x1525 (not x1533))
+(or x1525 (not x1534))
+(or x1525 (not x1535))
+(or x1525 (not x1536))
+(or x1525 (not x1537))
+(or x1525 (not x1538))
+(or x1525 (not x1539))
+(or x1525 (not x1540))
+(or x1525 (not x1396))
+(or (not x1332) (not x1331) x1414 x1526 x1527 x1528 x1529 x1530 x1531 x1532 x1533 x1534 x1535 x1536 x1537 x1538 x1539 x1540 x1396 (not x1525))
+(or x1541 x1332)
+(or x1541 x1331)
+(or x1541 (not x1414))
+(or x1541 (not x1526))
+(or x1541 (not x1527))
+(or x1541 (not x1528))
+(or x1541 (not x1529))
+(or x1541 (not x1530))
+(or x1541 (not x1531))
+(or x1541 (not x1532))
+(or x1541 (not x1533))
+(or x1541 (not x1534))
+(or x1541 (not x1535))
+(or x1541 (not x1536))
+(or x1541 (not x1537))
+(or x1541 (not x1538))
+(or x1541 (not x1539))
+(or x1541 (not x1540))
+(or x1541 x1410)
+(or (not x1332) (not x1331) x1414 x1526 x1527 x1528 x1529 x1530 x1531 x1532 x1533 x1534 x1535 x1536 x1537 x1538 x1539 x1540 (not x1410) (not x1541))
+(or (not x1541) (not x1525) x1542)
+(or (not x1542) x1541)
+(or (not x1542) x1525)
+(or x1543 (not x1542))
+(or x1543 (not x1524))
+(or x1542 x1524 (not x1543))
+(or (not x1412) (not x1544) x1545)
+(or (not x1545) x1412)
+(or (not x1545) x1544)
+(or (not x1402) x1401 x1400 x1399 (not x1546) x1547)
+(or (not x1547) x1402)
+(or (not x1547) (not x1401))
+(or (not x1547) (not x1400))
+(or (not x1547) (not x1399))
+(or (not x1547) x1546)
+(or x1548 (not x1547))
+(or x1548 (not x1545))
+(or x1547 x1545 (not x1548))
+(or (not x1412) (not x1549) x1550)
+(or (not x1550) x1412)
+(or (not x1550) x1549)
+(or x1551 (not x1396))
+(or x1551 (not x1550))
+(or x1396 x1550 (not x1551))
+(or x1468 x1469 (not x1467) (not x1332) (not x1331) x1375 x1470 x1438 x1382 x1414 x1462 x1463 x1464 x1465 x1552)
+(or (not x1552) (not x1468))
+(or (not x1552) (not x1469))
+(or (not x1552) x1467)
+(or (not x1552) x1332)
+(or (not x1552) x1331)
+(or (not x1552) (not x1375))
+(or (not x1552) (not x1470))
+(or (not x1552) (not x1438))
+(or (not x1552) (not x1382))
+(or (not x1552) (not x1414))
+(or (not x1552) (not x1462))
+(or (not x1552) (not x1463))
+(or (not x1552) (not x1464))
+(or (not x1552) (not x1465))
+(or (not x1484) (not x1485) (not x1486) (not x1487) x1553)
+(or (not x1553) x1484)
+(or (not x1553) x1485)
+(or (not x1553) x1486)
+(or (not x1553) x1487)
+(or x1554 (not x1555))
+(or x1554 (not x1556))
+(or x1554 (not x1537))
+(or x1554 (not x1536))
+(or x1554 (not x1557))
+(or x1554 (not x1558))
+(or x1554 (not x1540))
+(or x1554 (not x1539))
+(or x1554 (not x1426))
+(or x1554 (not x1427))
+(or x1555 x1556 x1537 x1536 x1557 x1558 x1540 x1539 x1426 x1427 (not x1554))
+(or (not x1520) (not x1485) (not x1521) (not x1522) (not x1487) (not x1523) x1458)
+(or (not x1458) x1520)
+(or (not x1458) x1485)
+(or (not x1458) x1521)
+(or (not x1458) x1522)
+(or (not x1458) x1487)
+(or (not x1458) x1523)
+(or x1472 (not x1458))
+(or x1472 (not x1556))
+(or x1472 (not x1536))
+(or x1472 (not x1558))
+(or x1472 (not x1539))
+(or x1472 x1448)
+(or x1458 x1556 x1536 x1558 x1539 (not x1448) (not x1472))
+(or (not x1472) (not x1554) (not x1484) (not x1485) (not x1486) (not x1487) x1382 x1462 x1463 x1464 x1465 x1467 x1414 x1468 x1469 x1375 x1470 x1559)
+(or (not x1559) x1472)
+(or (not x1559) x1554)
+(or (not x1559) x1484)
+(or (not x1559) x1485)
+(or (not x1559) x1486)
+(or (not x1559) x1487)
+(or (not x1559) (not x1382))
+(or (not x1559) (not x1462))
+(or (not x1559) (not x1463))
+(or (not x1559) (not x1464))
+(or (not x1559) (not x1465))
+(or (not x1559) (not x1467))
+(or (not x1559) (not x1414))
+(or (not x1559) (not x1468))
+(or (not x1559) (not x1469))
+(or (not x1559) (not x1375))
+(or (not x1559) (not x1470))
+(or x1459 (not x1385))
+(or x1459 (not x1383))
+(or x1459 (not x1384))
+(or x1459 x1413)
+(or x1459 x1449)
+(or x1385 x1383 x1384 (not x1413) (not x1449) (not x1459))
+(or (not x1459) (not x1384) (not x1460) (not x1461) x1438 x1462 x1463 x1464 x1465 x1466 (not x1382) x1467 x1414 x1468 x1469 x1375 x1470 x1491)
+(or (not x1491) x1459)
+(or (not x1491) x1384)
+(or (not x1491) x1460)
+(or (not x1491) x1461)
+(or (not x1491) (not x1438))
+(or (not x1491) (not x1462))
+(or (not x1491) (not x1463))
+(or (not x1491) (not x1464))
+(or (not x1491) (not x1465))
+(or (not x1491) (not x1466))
+(or (not x1491) x1382)
+(or (not x1491) (not x1467))
+(or (not x1491) (not x1414))
+(or (not x1491) (not x1468))
+(or (not x1491) (not x1469))
+(or (not x1491) (not x1375))
+(or (not x1491) (not x1470))
+(or x1560 (not x1491))
+(or x1560 (not x1559))
+(or x1491 x1559 (not x1560))
+(or (not x1332) (not x1331) (not x1438) (not x1560) x1561)
+(or (not x1561) x1332)
+(or (not x1561) x1331)
+(or (not x1561) x1438)
+(or (not x1561) x1560)
+(or x1562 (not x1561))
+(or x1562 (not x1552))
+(or x1561 x1552 (not x1562))
+(or (not x1563) (not x1564) x1534)
+(or (not x1534) x1563)
+(or (not x1534) x1564)
+(or (not x1565) (not x1464) x1566)
+(or (not x1566) x1565)
+(or (not x1566) x1464)
+(or x1375 x1464 x1462 x1463 x1567)
+(or (not x1567) (not x1375))
+(or (not x1567) (not x1464))
+(or (not x1567) (not x1462))
+(or (not x1567) (not x1463))
+(or (not x1463) (not x1462) x1568)
+(or (not x1568) x1463)
+(or (not x1568) x1462)
+(or x1569 (not x1465))
+(or x1569 (not x1568))
+(or x1569 (not x1567))
+(or x1569 (not x1566))
+(or x1465 x1568 x1567 x1566 (not x1569))
+(or x1470 x1467 x1382 x1438 x1468 x1469 x1505)
+(or (not x1505) (not x1470))
+(or (not x1505) (not x1467))
+(or (not x1505) (not x1382))
+(or (not x1505) (not x1438))
+(or (not x1505) (not x1468))
+(or (not x1505) (not x1469))
+(or x1470 x1467 x1382 x1438 x1468 x1469 (not x1569) x1533)
+(or (not x1533) (not x1470))
+(or (not x1533) (not x1467))
+(or (not x1533) (not x1382))
+(or (not x1533) (not x1438))
+(or (not x1533) (not x1468))
+(or (not x1533) (not x1469))
+(or (not x1533) x1569)
+(or (not x1469) (not x1468) x1532)
+(or (not x1532) x1469)
+(or (not x1532) x1468)
+(or (not x1570) (not x1470) x1531)
+(or (not x1531) x1570)
+(or (not x1531) x1470)
+(or (not x1382) (not x1571) x1530)
+(or (not x1530) x1382)
+(or (not x1530) x1571)
+(or x1478 x1402)
+(or x1478 (not x1401))
+(or x1478 (not x1400))
+(or x1478 (not x1399))
+(or x1478 (not x1481))
+(or (not x1402) x1401 x1400 x1399 x1481 (not x1478))
+(or x1477 x1402)
+(or x1477 (not x1401))
+(or x1477 (not x1400))
+(or x1477 (not x1399))
+(or x1477 x1481)
+(or x1477 x1397)
+(or (not x1402) x1401 x1400 x1399 (not x1481) (not x1397) (not x1477))
+(or x1572 x1402)
+(or x1572 (not x1401))
+(or x1572 (not x1400))
+(or x1572 (not x1399))
+(or x1572 x1481)
+(or (not x1402) x1401 x1400 x1399 (not x1481) (not x1572))
+(or (not x1572) (not x1477) (not x1478) x1573)
+(or (not x1573) x1572)
+(or (not x1573) x1477)
+(or (not x1573) x1478)
+(or x1564 (not x1470))
+(or x1564 (not x1467))
+(or x1564 (not x1382))
+(or x1564 (not x1438))
+(or x1564 (not x1468))
+(or x1564 (not x1469))
+(or x1470 x1467 x1382 x1438 x1468 x1469 (not x1564))
+(or x1574 (not x1464))
+(or x1574 (not x1462))
+(or x1574 (not x1463))
+(or x1574 (not x1470))
+(or x1574 (not x1467))
+(or x1574 (not x1382))
+(or x1574 (not x1438))
+(or x1574 (not x1468))
+(or x1574 (not x1469))
+(or x1574 (not x1573))
+(or x1464 x1462 x1463 x1470 x1467 x1382 x1438 x1468 x1469 x1573 (not x1574))
+(or (not x1375) (not x1574) x1529)
+(or (not x1529) x1375)
+(or (not x1529) x1574)
+(or (not x1575) (not x1438) x1528)
+(or (not x1528) x1575)
+(or (not x1528) x1438)
+(or (not x1576) (not x1467) x1527)
+(or (not x1527) x1576)
+(or (not x1527) x1467)
+(or (not x1466) (not x1382) x1526)
+(or (not x1526) x1466)
+(or (not x1526) x1382)
+(or x1577 x1332)
+(or x1577 x1331)
+(or x1577 (not x1414))
+(or x1577 (not x1526))
+(or x1577 (not x1527))
+(or x1577 (not x1528))
+(or x1577 (not x1529))
+(or x1577 (not x1530))
+(or x1577 (not x1531))
+(or x1577 (not x1532))
+(or x1577 (not x1533))
+(or x1577 (not x1534))
+(or (not x1332) (not x1331) x1414 x1526 x1527 x1528 x1529 x1530 x1531 x1532 x1533 x1534 (not x1577))
+(or x1465 (not x1332) (not x1331) x1462 x1463 (not x1464) x1467 x1414 x1468 x1469 x1375 x1470 x1438 x1382 x1578)
+(or (not x1578) (not x1465))
+(or (not x1578) x1332)
+(or (not x1578) x1331)
+(or (not x1578) (not x1462))
+(or (not x1578) (not x1463))
+(or (not x1578) x1464)
+(or (not x1578) (not x1467))
+(or (not x1578) (not x1414))
+(or (not x1578) (not x1468))
+(or (not x1578) (not x1469))
+(or (not x1578) (not x1375))
+(or (not x1578) (not x1470))
+(or (not x1578) (not x1438))
+(or (not x1578) (not x1382))
+(or x1460 (not x1449))
+(or x1460 (not x1385))
+(or x1460 (not x1383))
+(or x1460 (not x1384))
+(or x1460 x1413)
+(or x1449 x1385 x1383 x1384 (not x1413) (not x1460))
+(or x1385 x1383 x1384 (not x1413) (not x1449) x1579)
+(or (not x1579) (not x1385))
+(or (not x1579) (not x1383))
+(or (not x1579) (not x1384))
+(or (not x1579) x1413)
+(or (not x1579) x1449)
+(or x1580 (not x1579))
+(or x1580 x1384)
+(or x1579 (not x1384) (not x1580))
+(or (not x1332) (not x1331) (not x1580) (not x1460) (not x1461) x1438 x1462 x1463 x1464 x1465 x1466 (not x1382) x1467 x1414 x1468 x1469 x1375 x1470 x1581)
+(or (not x1581) x1332)
+(or (not x1581) x1331)
+(or (not x1581) x1580)
+(or (not x1581) x1460)
+(or (not x1581) x1461)
+(or (not x1581) (not x1438))
+(or (not x1581) (not x1462))
+(or (not x1581) (not x1463))
+(or (not x1581) (not x1464))
+(or (not x1581) (not x1465))
+(or (not x1581) (not x1466))
+(or (not x1581) x1382)
+(or (not x1581) (not x1467))
+(or (not x1581) (not x1414))
+(or (not x1581) (not x1468))
+(or (not x1581) (not x1469))
+(or (not x1581) (not x1375))
+(or (not x1581) (not x1470))
+(or x1467 x1469 (not x1468) (not x1332) (not x1331) x1375 x1470 x1438 x1382 x1414 x1462 x1463 x1464 x1465 x1582)
+(or (not x1582) (not x1467))
+(or (not x1582) (not x1469))
+(or (not x1582) x1468)
+(or (not x1582) x1332)
+(or (not x1582) x1331)
+(or (not x1582) (not x1375))
+(or (not x1582) (not x1470))
+(or (not x1582) (not x1438))
+(or (not x1582) (not x1382))
+(or (not x1582) (not x1414))
+(or (not x1582) (not x1462))
+(or (not x1582) (not x1463))
+(or (not x1582) (not x1464))
+(or (not x1582) (not x1465))
+(or x1392 x1374 x1389)
+(or (not x1389) (not x1392))
+(or (not x1389) (not x1374))
+(or x1461 (not x1389))
+(or x1461 (not x1383))
+(or x1461 (not x1384))
+(or x1461 x1385)
+(or x1389 x1383 x1384 (not x1385) (not x1461))
+(or (not x1461) x1449 x1385 x1383 x1384 (not x1413) x1583)
+(or (not x1583) x1461)
+(or (not x1583) (not x1449))
+(or (not x1583) (not x1385))
+(or (not x1583) (not x1383))
+(or (not x1583) (not x1384))
+(or (not x1583) x1413)
+(or x1381 (not x1392))
+(or x1381 (not x1374))
+(or x1392 x1374 (not x1381))
+(or (not x1381) x1383 x1384 (not x1385) x1584)
+(or (not x1584) x1381)
+(or (not x1584) (not x1383))
+(or (not x1584) (not x1384))
+(or (not x1584) x1385)
+(or x1585 (not x1584))
+(or x1585 (not x1583))
+(or x1584 x1583 (not x1585))
+(or (not x1332) (not x1331) x1438 x1462 x1463 x1464 x1465 x1466 (not x1382) x1467 x1414 x1468 x1469 x1375 x1470 (not x1585) x1586)
+(or (not x1586) x1332)
+(or (not x1586) x1331)
+(or (not x1586) (not x1438))
+(or (not x1586) (not x1462))
+(or (not x1586) (not x1463))
+(or (not x1586) (not x1464))
+(or (not x1586) (not x1465))
+(or (not x1586) (not x1466))
+(or (not x1586) x1382)
+(or (not x1586) (not x1467))
+(or (not x1586) (not x1414))
+(or (not x1586) (not x1468))
+(or (not x1586) (not x1469))
+(or (not x1586) (not x1375))
+(or (not x1586) (not x1470))
+(or (not x1586) x1585)
+(or x1587 (not x1588))
+(or x1587 (not x1589))
+(or x1587 (not x1590))
+(or x1587 (not x1591))
+(or x1587 (not x1593))
+(or x1588 x1589 x1590 x1591 x1593 (not x1587))
+(or x1594 (not x1593))
+(or x1594 (not x1592))
+(or x1594 x42)
+(or x1594 (not x43))
+(or x1594 x1332)
+(or x1594 x1331)
+(or x1593 x1592 (not x42) x43 (not x1332) (not x1331) (not x1594))
+(or (not x1594) (not x1595) (not x1587) x1596)
+(or (not x1596) x1594)
+(or (not x1596) x1595)
+(or (not x1596) x1587)
+(or x1597 (not x1588))
+(or x1597 (not x1589))
+(or x1597 (not x1590))
+(or x1597 (not x1591))
+(or x1597 (not x1592))
+(or x1588 x1589 x1590 x1591 x1592 (not x1597))
+(or x1595 (not x1588))
+(or x1595 (not x1589))
+(or x1595 (not x1590))
+(or x1595 x1593)
+(or x1595 x1592)
+(or x1588 x1589 x1590 (not x1593) (not x1592) (not x1595))
+(or x1593 x1592 (not x42) x43 (not x1332) (not x1331) x1588)
+(or (not x1588) (not x1593))
+(or (not x1588) (not x1592))
+(or (not x1588) x42)
+(or (not x1588) (not x43))
+(or (not x1588) x1332)
+(or (not x1588) x1331)
+(or x1598 (not x1588))
+(or x1598 (not x1593))
+(or x1598 x1592)
+(or x1588 x1593 (not x1592) (not x1598))
+(or (not x1598) (not x1595) (not x1597) x1599)
+(or (not x1599) x1598)
+(or (not x1599) x1595)
+(or (not x1599) x1597)
+(or x1600 (not x1601))
+(or x1600 (not x1602))
+(or x1600 (not x1603))
+(or x1600 (not x1604))
+(or x1600 (not x1606))
+(or x1601 x1602 x1603 x1604 x1606 (not x1600))
+(or x1607 (not x1606))
+(or x1607 (not x1605))
+(or x1607 x42)
+(or x1607 (not x43))
+(or x1607 x1332)
+(or x1607 x1331)
+(or x1606 x1605 (not x42) x43 (not x1332) (not x1331) (not x1607))
+(or (not x1607) (not x1608) (not x1600) x1609)
+(or (not x1609) x1607)
+(or (not x1609) x1608)
+(or (not x1609) x1600)
+(or x1610 (not x1601))
+(or x1610 (not x1602))
+(or x1610 (not x1603))
+(or x1610 (not x1604))
+(or x1610 (not x1605))
+(or x1601 x1602 x1603 x1604 x1605 (not x1610))
+(or x1608 (not x1601))
+(or x1608 (not x1602))
+(or x1608 (not x1603))
+(or x1608 x1606)
+(or x1608 x1605)
+(or x1601 x1602 x1603 (not x1606) (not x1605) (not x1608))
+(or x1606 x1605 (not x42) x43 (not x1332) (not x1331) x1601)
+(or (not x1601) (not x1606))
+(or (not x1601) (not x1605))
+(or (not x1601) x42)
+(or (not x1601) (not x43))
+(or (not x1601) x1332)
+(or (not x1601) x1331)
+(or x1611 (not x1601))
+(or x1611 (not x1606))
+(or x1611 x1605)
+(or x1601 x1606 (not x1605) (not x1611))
+(or (not x1611) (not x1608) (not x1610) x1612)
+(or (not x1612) x1611)
+(or (not x1612) x1608)
+(or (not x1612) x1610)
+(or x1613 (not x1448))
+(or x1613 (not x1614))
+(or x1613 (not x1615))
+(or x1613 (not x1556))
+(or x1613 (not x1536))
+(or x1613 (not x1558))
+(or x1613 (not x1539))
+(or x1613 (not x1535))
+(or x1613 (not x1536))
+(or x1613 (not x1537))
+(or x1613 (not x1538))
+(or x1613 (not x1539))
+(or x1613 (not x1540))
+(or x1448 x1614 x1615 x1556 x1536 x1558 x1539 x1535 x1536 x1537 x1538 x1539 x1540 (not x1613))
+(or (not x1439) (not x1440) (not x1613) x1616)
+(or (not x1616) x1439)
+(or (not x1616) x1440)
+(or (not x1616) x1613)
+(or x1617 (not x1332))
+(or x1617 (not x1331))
+(or x1332 x1331 (not x1617))
+(or x1332 x1331 x1618)
+(or (not x1618) (not x1332))
+(or (not x1618) (not x1331))
+(or x1619 (not x1618))
+(or x1619 (not x1332))
+(or x1619 x1331)
+(or x1618 x1332 (not x1331) (not x1619))
+(or x1620 (not x1621))
+(or x1620 (not x1622))
+(or x1620 (not x1623))
+(or x1620 (not x1624))
+(or x1620 (not x1625))
+(or x1620 (not x1626))
+(or x1620 (not x1557))
+(or x1620 (not x1627))
+(or x1620 (not x1628))
+(or x1620 (not x1629))
+(or x1620 (not x1630))
+(or x1620 (not x1634))
+(or x1621 x1622 x1623 x1624 x1625 x1626 x1557 x1627 x1628 x1629 x1630 x1634 (not x1620))
+(or (not x1635) (not x1636) (not x1637) (not x1638) (not x1639) (not x1640) (not x1641) (not x1642) (not x1643) (not x1644) (not x1645) (not x1620) x1646)
+(or (not x1646) x1635)
+(or (not x1646) x1636)
+(or (not x1646) x1637)
+(or (not x1646) x1638)
+(or (not x1646) x1639)
+(or (not x1646) x1640)
+(or (not x1646) x1641)
+(or (not x1646) x1642)
+(or (not x1646) x1643)
+(or (not x1646) x1644)
+(or (not x1646) x1645)
+(or (not x1646) x1620)
+(or x1647 (not x1621))
+(or x1647 (not x1622))
+(or x1647 (not x1623))
+(or x1647 (not x1624))
+(or x1647 (not x1625))
+(or x1647 (not x1626))
+(or x1647 (not x1557))
+(or x1647 (not x1627))
+(or x1647 (not x1628))
+(or x1647 (not x1629))
+(or x1647 (not x1630))
+(or x1647 (not x1633))
+(or x1621 x1622 x1623 x1624 x1625 x1626 x1557 x1627 x1628 x1629 x1630 x1633 (not x1647))
+(or x1648 x1649)
+(or x1648 (not x1650))
+(or (not x1649) x1650 (not x1648))
+(or (not x1648) (not x1649) x1651)
+(or (not x1651) x1648)
+(or (not x1651) x1649)
+(or x1652 (not x1621))
+(or x1652 (not x1622))
+(or x1652 (not x1623))
+(or x1652 (not x1624))
+(or x1652 (not x1625))
+(or x1652 (not x1626))
+(or x1652 (not x1557))
+(or x1652 (not x1627))
+(or x1652 (not x1634))
+(or x1652 (not x1633))
+(or x1652 (not x1632))
+(or x1652 x1631)
+(or x1652 (not x44))
+(or x1652 (not x43))
+(or x1652 (not x1651))
+(or x1621 x1622 x1623 x1624 x1625 x1626 x1557 x1627 x1634 x1633 x1632 (not x1631) x44 x43 x1651 (not x1652))
+(or x1653 (not x1621))
+(or x1653 (not x1622))
+(or x1653 (not x1623))
+(or x1653 (not x1624))
+(or x1653 (not x1625))
+(or x1653 (not x1626))
+(or x1653 (not x1634))
+(or x1653 (not x1633))
+(or x1653 x1632)
+(or x1653 x1631)
+(or x1653 x1654)
+(or x1653 x1655)
+(or x1653 x1656)
+(or x1621 x1622 x1623 x1624 x1625 x1626 x1634 x1633 (not x1632) (not x1631) (not x1654) (not x1655) (not x1656) (not x1653))
+(or x1657 (not x1621))
+(or x1657 (not x1622))
+(or x1657 (not x1623))
+(or x1657 (not x1624))
+(or x1657 (not x1634))
+(or x1657 (not x1633))
+(or x1657 x1632)
+(or x1657 (not x1631))
+(or x1657 (not x1658))
+(or x1657 x1659)
+(or x1657 x1660)
+(or x1621 x1622 x1623 x1624 x1634 x1633 (not x1632) x1631 x1658 (not x1659) (not x1660) (not x1657))
+(or x1661 (not x1621))
+(or x1661 (not x1634))
+(or x1661 (not x1633))
+(or x1661 (not x1632))
+(or x1661 (not x1631))
+(or x1661 (not x43))
+(or x1661 x1332)
+(or x1661 x1331)
+(or x1661 (not x1658))
+(or x1661 (not x1662))
+(or x1661 (not x1663))
+(or x1661 x1664)
+(or x1621 x1634 x1633 x1632 x1631 x43 (not x1332) (not x1331) x1658 x1662 x1663 (not x1664) (not x1661))
+(or x1665 x1666)
+(or x1665 x1667)
+(or x1665 x1668)
+(or (not x1666) (not x1667) (not x1668) (not x1665))
+(or (not x1665) (not x1666) x1669)
+(or (not x1669) x1665)
+(or (not x1669) x1666)
+(or x1670 x1671)
+(or x1670 (not x1669))
+(or (not x1671) x1669 (not x1670))
+(or (not x1670) (not x1671) x1672)
+(or (not x1672) x1670)
+(or (not x1672) x1671)
+(or x1673 (not x1634))
+(or x1673 (not x1633))
+(or x1673 (not x1632))
+(or x1673 (not x1631))
+(or x1673 (not x43))
+(or x1673 x1332)
+(or x1673 x1331)
+(or x1673 (not x1658))
+(or x1673 (not x1674))
+(or x1673 (not x1672))
+(or x1634 x1633 x1632 x1631 x43 (not x1332) (not x1331) x1658 x1674 x1672 (not x1673))
+(or (not x1673) (not x1661) (not x1637) (not x1638) (not x1657) (not x1640) (not x1653) (not x1642) (not x1652) (not x1645) (not x1647) x1675)
+(or (not x1675) x1673)
+(or (not x1675) x1661)
+(or (not x1675) x1637)
+(or (not x1675) x1638)
+(or (not x1675) x1657)
+(or (not x1675) x1640)
+(or (not x1675) x1653)
+(or (not x1675) x1642)
+(or (not x1675) x1652)
+(or (not x1675) x1645)
+(or (not x1675) x1647)
+(or x1676 (not x1621))
+(or x1676 (not x1622))
+(or x1676 (not x1623))
+(or x1676 (not x1624))
+(or x1676 (not x1625))
+(or x1676 (not x1626))
+(or x1676 (not x1557))
+(or x1676 (not x1627))
+(or x1676 (not x1628))
+(or x1676 (not x1629))
+(or x1676 (not x1630))
+(or x1676 (not x1632))
+(or x1621 x1622 x1623 x1624 x1625 x1626 x1557 x1627 x1628 x1629 x1630 x1632 (not x1676))
+(or x1644 (not x1621))
+(or x1644 (not x1622))
+(or x1644 (not x1623))
+(or x1644 (not x1624))
+(or x1644 (not x1625))
+(or x1644 (not x1626))
+(or x1644 (not x1557))
+(or x1644 (not x1627))
+(or x1644 (not x1628))
+(or x1644 (not x1634))
+(or x1644 x1633)
+(or x1644 x1632)
+(or x1644 (not x1631))
+(or x1644 (not x44))
+(or x1644 (not x43))
+(or x1621 x1622 x1623 x1624 x1625 x1626 x1557 x1627 x1628 x1634 (not x1633) (not x1632) x1631 x44 x43 (not x1644))
+(or x1677 x1650)
+(or x1677 x1678)
+(or (not x1650) (not x1678) (not x1677))
+(or (not x1677) (not x1650) x1679)
+(or (not x1679) x1677)
+(or (not x1679) x1650)
+(or x1680 (not x1621))
+(or x1680 (not x1622))
+(or x1680 (not x1623))
+(or x1680 (not x1624))
+(or x1680 (not x1625))
+(or x1680 (not x1626))
+(or x1680 (not x1557))
+(or x1680 (not x1627))
+(or x1680 (not x1634))
+(or x1680 (not x1633))
+(or x1680 (not x1632))
+(or x1680 x1631)
+(or x1680 (not x44))
+(or x1680 (not x43))
+(or x1680 x1649)
+(or x1680 (not x1679))
+(or x1621 x1622 x1623 x1624 x1625 x1626 x1557 x1627 x1634 x1633 x1632 (not x1631) x44 x43 (not x1649) x1679 (not x1680))
+(or x1681 x1656)
+(or x1681 (not x1682))
+(or (not x1656) x1682 (not x1681))
+(or (not x1681) (not x1656) x1683)
+(or (not x1683) x1681)
+(or (not x1683) x1656)
+(or x1684 x1654)
+(or x1684 x1655)
+(or x1684 (not x1683))
+(or (not x1654) (not x1655) x1683 (not x1684))
+(or (not x1684) (not x1654) x1685)
+(or (not x1685) x1684)
+(or (not x1685) x1654)
+(or x1686 (not x1621))
+(or x1686 (not x1622))
+(or x1686 (not x1623))
+(or x1686 (not x1624))
+(or x1686 (not x1625))
+(or x1686 (not x1626))
+(or x1686 (not x1634))
+(or x1686 (not x1633))
+(or x1686 x1632)
+(or x1686 x1631)
+(or x1686 (not x1685))
+(or x1621 x1622 x1623 x1624 x1625 x1626 x1634 x1633 (not x1632) (not x1631) x1685 (not x1686))
+(or x1687 x1660)
+(or x1687 (not x1688))
+(or (not x1660) x1688 (not x1687))
+(or (not x1687) (not x1660) x1689)
+(or (not x1689) x1687)
+(or (not x1689) x1660)
+(or x1690 (not x1621))
+(or x1690 (not x1622))
+(or x1690 (not x1623))
+(or x1690 (not x1624))
+(or x1690 (not x1634))
+(or x1690 (not x1633))
+(or x1690 x1632)
+(or x1690 (not x1631))
+(or x1690 (not x1658))
+(or x1690 x1659)
+(or x1690 (not x1689))
+(or x1621 x1622 x1623 x1624 x1634 x1633 (not x1632) x1631 x1658 (not x1659) x1689 (not x1690))
+(or x1691 (not x1621))
+(or x1691 (not x1634))
+(or x1691 (not x1633))
+(or x1691 (not x1632))
+(or x1691 (not x1631))
+(or x1691 (not x43))
+(or x1691 x1332)
+(or x1691 x1331)
+(or x1691 (not x1658))
+(or x1691 (not x1662))
+(or x1691 (not x1663))
+(or x1691 (not x1664))
+(or x1621 x1634 x1633 x1632 x1631 x43 (not x1332) (not x1331) x1658 x1662 x1663 x1664 (not x1691))
+(or x1692 x1671)
+(or x1692 x1666)
+(or x1692 x1667)
+(or x1692 (not x1668))
+(or (not x1671) (not x1666) (not x1667) x1668 (not x1692))
+(or (not x1692) (not x1671) x1693)
+(or (not x1693) x1692)
+(or (not x1693) x1671)
+(or x1694 (not x1634))
+(or x1694 (not x1633))
+(or x1694 (not x1632))
+(or x1694 (not x1631))
+(or x1694 (not x43))
+(or x1694 x1332)
+(or x1694 x1331)
+(or x1694 (not x1658))
+(or x1694 (not x1674))
+(or x1694 (not x1693))
+(or x1634 x1633 x1632 x1631 x43 (not x1332) (not x1331) x1658 x1674 x1693 (not x1694))
+(or (not x1694) (not x1691) (not x1638) (not x1690) (not x1686) (not x1642) (not x1680) (not x1644) (not x1645) (not x1676) x1695)
+(or (not x1695) x1694)
+(or (not x1695) x1691)
+(or (not x1695) x1638)
+(or (not x1695) x1690)
+(or (not x1695) x1686)
+(or (not x1695) x1642)
+(or (not x1695) x1680)
+(or (not x1695) x1644)
+(or (not x1695) x1645)
+(or (not x1695) x1676)
+(or x1696 (not x1538))
+(or x1696 (not x1540))
+(or x1696 (not x1539))
+(or x1538 x1540 x1539 (not x1696))
+(or (not x1696) (not x43) x1630)
+(or (not x1630) x1696)
+(or (not x1630) x43)
+(or x1697 (not x1621))
+(or x1697 (not x1622))
+(or x1697 (not x1623))
+(or x1697 (not x1624))
+(or x1697 (not x1625))
+(or x1697 (not x1626))
+(or x1697 (not x1557))
+(or x1697 (not x1627))
+(or x1697 (not x1628))
+(or x1697 (not x1629))
+(or x1697 (not x1630))
+(or x1697 (not x1631))
+(or x1621 x1622 x1623 x1624 x1625 x1626 x1557 x1627 x1628 x1629 x1630 x1631 (not x1697))
+(or x1522 (not x1634))
+(or x1522 x1633)
+(or x1522 (not x1632))
+(or x1522 (not x1631))
+(or x1634 (not x1633) x1632 x1631 (not x1522))
+(or (not x1522) (not x1523) (not x1487) x1698)
+(or (not x1698) x1522)
+(or (not x1698) x1523)
+(or (not x1698) x1487)
+(or x1634 (not x1633) (not x1632) x1631 x44 x43 x1629)
+(or (not x1629) (not x1634))
+(or (not x1629) x1633)
+(or (not x1629) x1632)
+(or (not x1629) (not x1631))
+(or (not x1629) (not x44))
+(or (not x1629) (not x43))
+(or x1634 x1633 x1632 (not x1631) x44 x43 x1628)
+(or (not x1628) (not x1634))
+(or (not x1628) (not x1633))
+(or (not x1628) (not x1632))
+(or (not x1628) x1631)
+(or (not x1628) (not x44))
+(or (not x1628) (not x43))
+(or x1645 (not x1621))
+(or x1645 (not x1622))
+(or x1645 (not x1623))
+(or x1645 (not x1624))
+(or x1645 (not x1625))
+(or x1645 (not x1626))
+(or x1645 (not x1557))
+(or x1645 (not x1627))
+(or x1645 (not x1628))
+(or x1645 (not x1629))
+(or x1645 (not x1698))
+(or x1645 x43)
+(or x1621 x1622 x1623 x1624 x1625 x1626 x1557 x1627 x1628 x1629 x1698 (not x43) (not x1645))
+(or x1699 x1678)
+(or x1699 x1700)
+(or (not x1678) (not x1700) (not x1699))
+(or (not x1699) (not x1678) x1701)
+(or (not x1701) x1699)
+(or (not x1701) x1678)
+(or x1634 x1633 x1632 (not x1631) x44 (not x43) x1627)
+(or (not x1627) (not x1634))
+(or (not x1627) (not x1633))
+(or (not x1627) (not x1632))
+(or (not x1627) x1631)
+(or (not x1627) (not x44))
+(or (not x1627) x43)
+(or x1643 (not x1621))
+(or x1643 (not x1622))
+(or x1643 (not x1623))
+(or x1643 (not x1624))
+(or x1643 (not x1625))
+(or x1643 (not x1626))
+(or x1643 (not x1557))
+(or x1643 (not x1627))
+(or x1643 (not x1634))
+(or x1643 (not x1633))
+(or x1643 (not x1632))
+(or x1643 x1631)
+(or x1643 (not x44))
+(or x1643 (not x43))
+(or x1621 x1622 x1623 x1624 x1625 x1626 x1557 x1627 x1634 x1633 x1632 (not x1631) x44 x43 (not x1643))
+(or x1702 (not x1621))
+(or x1702 (not x1622))
+(or x1702 (not x1623))
+(or x1702 (not x1624))
+(or x1702 (not x1625))
+(or x1702 (not x1626))
+(or x1702 (not x1557))
+(or x1702 (not x1627))
+(or x1702 (not x1634))
+(or x1702 (not x1633))
+(or x1702 (not x1632))
+(or x1702 x1631)
+(or x1702 (not x44))
+(or x1702 (not x43))
+(or x1702 x1649)
+(or x1702 x1650)
+(or x1702 (not x1701))
+(or x1621 x1622 x1623 x1624 x1625 x1626 x1557 x1627 x1634 x1633 x1632 (not x1631) x44 x43 (not x1649) (not x1650) x1701 (not x1702))
+(or x1642 (not x1621))
+(or x1642 (not x1622))
+(or x1642 (not x1623))
+(or x1642 (not x1624))
+(or x1642 (not x1625))
+(or x1642 (not x1626))
+(or x1642 (not x1557))
+(or x1642 (not x1634))
+(or x1642 (not x1633))
+(or x1642 (not x1632))
+(or x1642 x1631)
+(or x1642 (not x44))
+(or x1642 x43)
+(or x1621 x1622 x1623 x1624 x1625 x1626 x1557 x1634 x1633 x1632 (not x1631) x44 (not x43) (not x1642))
+(or x1703 x1655)
+(or x1703 (not x1656))
+(or (not x1655) x1656 (not x1703))
+(or (not x1703) (not x1655) x1704)
+(or (not x1704) x1703)
+(or (not x1704) x1655)
+(or x1641 (not x1621))
+(or x1641 (not x1622))
+(or x1641 (not x1623))
+(or x1641 (not x1624))
+(or x1641 (not x1625))
+(or x1641 (not x1626))
+(or x1641 (not x1634))
+(or x1641 (not x1633))
+(or x1641 x1632)
+(or x1641 x1631)
+(or x1621 x1622 x1623 x1624 x1625 x1626 x1634 x1633 (not x1632) (not x1631) (not x1641))
+(or x1705 (not x1621))
+(or x1705 (not x1622))
+(or x1705 (not x1623))
+(or x1705 (not x1624))
+(or x1705 (not x1625))
+(or x1705 (not x1626))
+(or x1705 (not x1634))
+(or x1705 (not x1633))
+(or x1705 x1632)
+(or x1705 x1631)
+(or x1705 x1654)
+(or x1705 (not x1704))
+(or x1621 x1622 x1623 x1624 x1625 x1626 x1634 x1633 (not x1632) (not x1631) (not x1654) x1704 (not x1705))
+(or x1634 x1633 (not x1632) x1631 (not x1706) x1625)
+(or (not x1625) (not x1634))
+(or (not x1625) (not x1633))
+(or (not x1625) x1632)
+(or (not x1625) (not x1631))
+(or (not x1625) x1706)
+(or x1640 (not x1621))
+(or x1640 (not x1622))
+(or x1640 (not x1623))
+(or x1640 (not x1624))
+(or x1640 (not x1625))
+(or x1640 (not x1634))
+(or x1640 (not x1633))
+(or x1640 x1632)
+(or x1640 (not x1631))
+(or x1621 x1622 x1623 x1624 x1625 x1634 x1633 (not x1632) x1631 (not x1640))
+(or x1707 x1659)
+(or x1707 x1660)
+(or x1707 x1688)
+(or x1707 x1708)
+(or (not x1659) (not x1660) (not x1688) (not x1708) (not x1707))
+(or (not x1707) (not x1659) x1709)
+(or (not x1709) x1707)
+(or (not x1709) x1659)
+(or x1634 x1633 (not x1632) x1631 (not x43) (not x44) x1624)
+(or (not x1624) (not x1634))
+(or (not x1624) (not x1633))
+(or (not x1624) x1632)
+(or (not x1624) (not x1631))
+(or (not x1624) x43)
+(or (not x1624) x44)
+(or x1639 (not x1621))
+(or x1639 (not x1622))
+(or x1639 (not x1623))
+(or x1639 (not x1624))
+(or x1639 (not x1634))
+(or x1639 (not x1633))
+(or x1639 x1632)
+(or x1639 (not x1631))
+(or x1639 (not x1658))
+(or x1621 x1622 x1623 x1624 x1634 x1633 (not x1632) x1631 x1658 (not x1639))
+(or x1710 (not x1621))
+(or x1710 (not x1622))
+(or x1710 (not x1623))
+(or x1710 (not x1624))
+(or x1710 (not x1634))
+(or x1710 (not x1633))
+(or x1710 x1632)
+(or x1710 (not x1631))
+(or x1710 (not x1658))
+(or x1710 (not x1709))
+(or x1621 x1622 x1623 x1624 x1634 x1633 (not x1632) x1631 x1658 x1709 (not x1710))
+(or x1638 (not x1621))
+(or x1638 (not x1622))
+(or x1638 (not x1623))
+(or x1638 (not x1634))
+(or x1638 (not x1633))
+(or x1638 x1632)
+(or x1638 (not x1631))
+(or x1638 x43)
+(or x1638 x44)
+(or x1621 x1622 x1623 x1634 x1633 (not x1632) x1631 (not x43) (not x44) (not x1638))
+(or x1634 x1633 x1632 x1631 x43 (not x1332) (not x1331) (not x1706) (not x1711) (not x1712) x1622)
+(or (not x1622) (not x1634))
+(or (not x1622) (not x1633))
+(or (not x1622) (not x1632))
+(or (not x1622) (not x1631))
+(or (not x1622) (not x43))
+(or (not x1622) x1332)
+(or (not x1622) x1331)
+(or (not x1622) x1706)
+(or (not x1622) x1711)
+(or (not x1622) x1712)
+(or x1637 (not x1621))
+(or x1637 (not x1622))
+(or x1637 (not x1634))
+(or x1637 (not x1633))
+(or x1637 (not x1632))
+(or x1637 (not x1631))
+(or x1637 (not x43))
+(or x1637 x1332)
+(or x1637 x1331)
+(or x1621 x1622 x1634 x1633 x1632 x1631 x43 (not x1332) (not x1331) (not x1637))
+(or (not x1593) (not x1592) x1591)
+(or (not x1591) x1593)
+(or (not x1591) x1592)
+(or (not x1593) x1592 x1590)
+(or (not x1590) x1593)
+(or (not x1590) (not x1592))
+(or x1593 (not x1592) x1589)
+(or (not x1589) (not x1593))
+(or (not x1589) x1592)
+(or x1593 x1592 (not x42) x43 x1713)
+(or (not x1713) (not x1593))
+(or (not x1713) (not x1592))
+(or (not x1713) x42)
+(or (not x1713) (not x43))
+(or x1706 (not x1713))
+(or x1706 (not x1589))
+(or x1706 (not x1590))
+(or x1706 (not x1591))
+(or x1713 x1589 x1590 x1591 (not x1706))
+(or x1634 x1633 x1632 x1631 x43 (not x1332) (not x1331) x1623)
+(or (not x1623) (not x1634))
+(or (not x1623) (not x1633))
+(or (not x1623) (not x1632))
+(or (not x1623) (not x1631))
+(or (not x1623) (not x43))
+(or (not x1623) x1332)
+(or (not x1623) x1331)
+(or x1634 x1633 x1632 x1631 x43 (not x1332) (not x1331) (not x1706) (not x1714) x1621)
+(or (not x1621) (not x1634))
+(or (not x1621) (not x1633))
+(or (not x1621) (not x1632))
+(or (not x1621) (not x1631))
+(or (not x1621) (not x43))
+(or (not x1621) x1332)
+(or (not x1621) x1331)
+(or (not x1621) x1706)
+(or (not x1621) x1714)
+(or x1636 (not x1621))
+(or x1636 (not x1634))
+(or x1636 (not x1633))
+(or x1636 (not x1632))
+(or x1636 (not x1631))
+(or x1636 (not x43))
+(or x1636 x1332)
+(or x1636 x1331)
+(or x1636 (not x1658))
+(or x1636 (not x1662))
+(or x1636 (not x1663))
+(or x1621 x1634 x1633 x1632 x1631 x43 (not x1332) (not x1331) x1658 x1662 x1663 (not x1636))
+(or x1715 (not x1621))
+(or x1715 (not x1634))
+(or x1715 (not x1633))
+(or x1715 (not x1632))
+(or x1715 (not x1631))
+(or x1715 (not x43))
+(or x1715 x1332)
+(or x1715 x1331)
+(or x1715 (not x1658))
+(or x1715 (not x1662))
+(or x1715 (not x1663))
+(or x1715 x1664)
+(or x1715 x1716)
+(or x1621 x1634 x1633 x1632 x1631 x43 (not x1332) (not x1331) x1658 x1662 x1663 (not x1664) (not x1716) (not x1715))
+(or x1717 x1667)
+(or x1717 x1668)
+(or (not x1667) (not x1668) (not x1717))
+(or (not x1717) (not x1667) x1718)
+(or (not x1718) x1717)
+(or (not x1718) x1667)
+(or x1719 x1593)
+(or x1719 x1592)
+(or (not x1593) (not x1592) (not x1719))
+(or x1720 x1593)
+(or x1720 (not x1592))
+(or (not x1593) x1592 (not x1720))
+(or x1721 (not x1593))
+(or x1721 x1592)
+(or x1593 (not x1592) (not x1721))
+(or x1722 (not x1593))
+(or x1722 (not x1592))
+(or x1722 x42)
+(or x1722 (not x43))
+(or x1593 x1592 (not x42) x43 (not x1722))
+(or (not x1722) (not x1721) (not x1720) (not x1719) x1658)
+(or (not x1658) x1722)
+(or (not x1658) x1721)
+(or (not x1658) x1720)
+(or (not x1658) x1719)
+(or x1635 (not x1634))
+(or x1635 (not x1633))
+(or x1635 (not x1632))
+(or x1635 (not x1631))
+(or x1635 (not x43))
+(or x1635 x1332)
+(or x1635 x1331)
+(or x1635 (not x1658))
+(or x1635 (not x1674))
+(or x1634 x1633 x1632 x1631 x43 (not x1332) (not x1331) x1658 x1674 (not x1635))
+(or x1723 (not x1634))
+(or x1723 (not x1633))
+(or x1723 (not x1632))
+(or x1723 (not x1631))
+(or x1723 (not x43))
+(or x1723 x1332)
+(or x1723 x1331)
+(or x1723 (not x1658))
+(or x1723 (not x1674))
+(or x1723 x1671)
+(or x1723 x1666)
+(or x1723 (not x1718))
+(or x1634 x1633 x1632 x1631 x43 (not x1332) (not x1331) x1658 x1674 (not x1671) (not x1666) x1718 (not x1723))
+(or (not x1723) (not x1715) (not x1637) (not x1638) (not x1710) (not x1640) (not x1705) (not x1642) (not x1702) (not x1645) (not x1697) x1724)
+(or (not x1724) x1723)
+(or (not x1724) x1715)
+(or (not x1724) x1637)
+(or (not x1724) x1638)
+(or (not x1724) x1710)
+(or (not x1724) x1640)
+(or (not x1724) x1705)
+(or (not x1724) x1642)
+(or (not x1724) x1702)
+(or (not x1724) x1645)
+(or (not x1724) x1697)
+(or x1725 (not x1726))
+(or x1725 (not x1727))
+(or x1725 (not x1728))
+(or x1725 (not x1729))
+(or x1725 (not x1730))
+(or x1725 (not x1731))
+(or x1725 (not x1555))
+(or x1725 (not x1732))
+(or x1725 (not x1733))
+(or x1725 (not x1734))
+(or x1725 (not x1735))
+(or x1725 (not x1739))
+(or x1726 x1727 x1728 x1729 x1730 x1731 x1555 x1732 x1733 x1734 x1735 x1739 (not x1725))
+(or (not x1740) (not x1741) (not x1742) (not x1743) (not x1744) (not x1745) (not x1746) (not x1747) (not x1748) (not x1749) (not x1750) (not x1725) x1751)
+(or (not x1751) x1740)
+(or (not x1751) x1741)
+(or (not x1751) x1742)
+(or (not x1751) x1743)
+(or (not x1751) x1744)
+(or (not x1751) x1745)
+(or (not x1751) x1746)
+(or (not x1751) x1747)
+(or (not x1751) x1748)
+(or (not x1751) x1749)
+(or (not x1751) x1750)
+(or (not x1751) x1725)
+(or x1752 (not x1726))
+(or x1752 (not x1727))
+(or x1752 (not x1728))
+(or x1752 (not x1729))
+(or x1752 (not x1730))
+(or x1752 (not x1731))
+(or x1752 (not x1555))
+(or x1752 (not x1732))
+(or x1752 (not x1733))
+(or x1752 (not x1734))
+(or x1752 (not x1735))
+(or x1752 (not x1738))
+(or x1726 x1727 x1728 x1729 x1730 x1731 x1555 x1732 x1733 x1734 x1735 x1738 (not x1752))
+(or x1753 x1754)
+(or x1753 (not x1755))
+(or (not x1754) x1755 (not x1753))
+(or (not x1753) (not x1754) x1756)
+(or (not x1756) x1753)
+(or (not x1756) x1754)
+(or x1757 (not x1726))
+(or x1757 (not x1727))
+(or x1757 (not x1728))
+(or x1757 (not x1729))
+(or x1757 (not x1730))
+(or x1757 (not x1731))
+(or x1757 (not x1555))
+(or x1757 (not x1732))
+(or x1757 (not x1739))
+(or x1757 (not x1738))
+(or x1757 (not x1737))
+(or x1757 x1736)
+(or x1757 (not x44))
+(or x1757 (not x43))
+(or x1757 (not x1756))
+(or x1726 x1727 x1728 x1729 x1730 x1731 x1555 x1732 x1739 x1738 x1737 (not x1736) x44 x43 x1756 (not x1757))
+(or x1758 (not x1726))
+(or x1758 (not x1727))
+(or x1758 (not x1728))
+(or x1758 (not x1729))
+(or x1758 (not x1730))
+(or x1758 (not x1731))
+(or x1758 (not x1739))
+(or x1758 (not x1738))
+(or x1758 x1737)
+(or x1758 x1736)
+(or x1758 x1759)
+(or x1758 x1760)
+(or x1758 x1761)
+(or x1726 x1727 x1728 x1729 x1730 x1731 x1739 x1738 (not x1737) (not x1736) (not x1759) (not x1760) (not x1761) (not x1758))
+(or x1762 (not x1726))
+(or x1762 (not x1727))
+(or x1762 (not x1728))
+(or x1762 (not x1729))
+(or x1762 (not x1739))
+(or x1762 (not x1738))
+(or x1762 x1737)
+(or x1762 (not x1736))
+(or x1762 (not x1763))
+(or x1762 x1764)
+(or x1762 x1765)
+(or x1726 x1727 x1728 x1729 x1739 x1738 (not x1737) x1736 x1763 (not x1764) (not x1765) (not x1762))
+(or x1766 (not x1726))
+(or x1766 (not x1739))
+(or x1766 (not x1738))
+(or x1766 (not x1737))
+(or x1766 (not x1736))
+(or x1766 (not x43))
+(or x1766 x1332)
+(or x1766 x1331)
+(or x1766 (not x1763))
+(or x1766 (not x1662))
+(or x1766 (not x1663))
+(or x1766 x1767)
+(or x1726 x1739 x1738 x1737 x1736 x43 (not x1332) (not x1331) x1763 x1662 x1663 (not x1767) (not x1766))
+(or x1768 x1769)
+(or x1768 x1770)
+(or x1768 x1771)
+(or (not x1769) (not x1770) (not x1771) (not x1768))
+(or (not x1768) (not x1769) x1772)
+(or (not x1772) x1768)
+(or (not x1772) x1769)
+(or x1773 x1774)
+(or x1773 (not x1772))
+(or (not x1774) x1772 (not x1773))
+(or (not x1773) (not x1774) x1775)
+(or (not x1775) x1773)
+(or (not x1775) x1774)
+(or x1776 (not x1739))
+(or x1776 (not x1738))
+(or x1776 (not x1737))
+(or x1776 (not x1736))
+(or x1776 (not x43))
+(or x1776 x1332)
+(or x1776 x1331)
+(or x1776 (not x1763))
+(or x1776 (not x1674))
+(or x1776 (not x1775))
+(or x1739 x1738 x1737 x1736 x43 (not x1332) (not x1331) x1763 x1674 x1775 (not x1776))
+(or (not x1776) (not x1766) (not x1742) (not x1743) (not x1762) (not x1745) (not x1758) (not x1747) (not x1757) (not x1750) (not x1752) x1777)
+(or (not x1777) x1776)
+(or (not x1777) x1766)
+(or (not x1777) x1742)
+(or (not x1777) x1743)
+(or (not x1777) x1762)
+(or (not x1777) x1745)
+(or (not x1777) x1758)
+(or (not x1777) x1747)
+(or (not x1777) x1757)
+(or (not x1777) x1750)
+(or (not x1777) x1752)
+(or x1778 (not x1726))
+(or x1778 (not x1727))
+(or x1778 (not x1728))
+(or x1778 (not x1729))
+(or x1778 (not x1730))
+(or x1778 (not x1731))
+(or x1778 (not x1555))
+(or x1778 (not x1732))
+(or x1778 (not x1733))
+(or x1778 (not x1734))
+(or x1778 (not x1735))
+(or x1778 (not x1737))
+(or x1726 x1727 x1728 x1729 x1730 x1731 x1555 x1732 x1733 x1734 x1735 x1737 (not x1778))
+(or x1749 (not x1726))
+(or x1749 (not x1727))
+(or x1749 (not x1728))
+(or x1749 (not x1729))
+(or x1749 (not x1730))
+(or x1749 (not x1731))
+(or x1749 (not x1555))
+(or x1749 (not x1732))
+(or x1749 (not x1733))
+(or x1749 (not x1739))
+(or x1749 x1738)
+(or x1749 x1737)
+(or x1749 (not x1736))
+(or x1749 (not x44))
+(or x1749 (not x43))
+(or x1726 x1727 x1728 x1729 x1730 x1731 x1555 x1732 x1733 x1739 (not x1738) (not x1737) x1736 x44 x43 (not x1749))
+(or x1779 x1755)
+(or x1779 x1780)
+(or (not x1755) (not x1780) (not x1779))
+(or (not x1779) (not x1755) x1781)
+(or (not x1781) x1779)
+(or (not x1781) x1755)
+(or x1782 (not x1726))
+(or x1782 (not x1727))
+(or x1782 (not x1728))
+(or x1782 (not x1729))
+(or x1782 (not x1730))
+(or x1782 (not x1731))
+(or x1782 (not x1555))
+(or x1782 (not x1732))
+(or x1782 (not x1739))
+(or x1782 (not x1738))
+(or x1782 (not x1737))
+(or x1782 x1736)
+(or x1782 (not x44))
+(or x1782 (not x43))
+(or x1782 x1754)
+(or x1782 (not x1781))
+(or x1726 x1727 x1728 x1729 x1730 x1731 x1555 x1732 x1739 x1738 x1737 (not x1736) x44 x43 (not x1754) x1781 (not x1782))
+(or x1783 x1761)
+(or x1783 (not x1784))
+(or (not x1761) x1784 (not x1783))
+(or (not x1783) (not x1761) x1785)
+(or (not x1785) x1783)
+(or (not x1785) x1761)
+(or x1786 x1759)
+(or x1786 x1760)
+(or x1786 (not x1785))
+(or (not x1759) (not x1760) x1785 (not x1786))
+(or (not x1786) (not x1759) x1787)
+(or (not x1787) x1786)
+(or (not x1787) x1759)
+(or x1788 (not x1726))
+(or x1788 (not x1727))
+(or x1788 (not x1728))
+(or x1788 (not x1729))
+(or x1788 (not x1730))
+(or x1788 (not x1731))
+(or x1788 (not x1739))
+(or x1788 (not x1738))
+(or x1788 x1737)
+(or x1788 x1736)
+(or x1788 (not x1787))
+(or x1726 x1727 x1728 x1729 x1730 x1731 x1739 x1738 (not x1737) (not x1736) x1787 (not x1788))
+(or x1789 x1765)
+(or x1789 (not x1790))
+(or (not x1765) x1790 (not x1789))
+(or (not x1789) (not x1765) x1791)
+(or (not x1791) x1789)
+(or (not x1791) x1765)
+(or x1792 (not x1726))
+(or x1792 (not x1727))
+(or x1792 (not x1728))
+(or x1792 (not x1729))
+(or x1792 (not x1739))
+(or x1792 (not x1738))
+(or x1792 x1737)
+(or x1792 (not x1736))
+(or x1792 (not x1763))
+(or x1792 x1764)
+(or x1792 (not x1791))
+(or x1726 x1727 x1728 x1729 x1739 x1738 (not x1737) x1736 x1763 (not x1764) x1791 (not x1792))
+(or x1793 (not x1726))
+(or x1793 (not x1739))
+(or x1793 (not x1738))
+(or x1793 (not x1737))
+(or x1793 (not x1736))
+(or x1793 (not x43))
+(or x1793 x1332)
+(or x1793 x1331)
+(or x1793 (not x1763))
+(or x1793 (not x1662))
+(or x1793 (not x1663))
+(or x1793 (not x1767))
+(or x1726 x1739 x1738 x1737 x1736 x43 (not x1332) (not x1331) x1763 x1662 x1663 x1767 (not x1793))
+(or x1794 x1774)
+(or x1794 x1769)
+(or x1794 x1770)
+(or x1794 (not x1771))
+(or (not x1774) (not x1769) (not x1770) x1771 (not x1794))
+(or (not x1794) (not x1774) x1795)
+(or (not x1795) x1794)
+(or (not x1795) x1774)
+(or x1796 (not x1739))
+(or x1796 (not x1738))
+(or x1796 (not x1737))
+(or x1796 (not x1736))
+(or x1796 (not x43))
+(or x1796 x1332)
+(or x1796 x1331)
+(or x1796 (not x1763))
+(or x1796 (not x1674))
+(or x1796 (not x1795))
+(or x1739 x1738 x1737 x1736 x43 (not x1332) (not x1331) x1763 x1674 x1795 (not x1796))
+(or (not x1796) (not x1793) (not x1743) (not x1792) (not x1788) (not x1747) (not x1782) (not x1749) (not x1750) (not x1778) x1797)
+(or (not x1797) x1796)
+(or (not x1797) x1793)
+(or (not x1797) x1743)
+(or (not x1797) x1792)
+(or (not x1797) x1788)
+(or (not x1797) x1747)
+(or (not x1797) x1782)
+(or (not x1797) x1749)
+(or (not x1797) x1750)
+(or (not x1797) x1778)
+(or x1798 (not x1535))
+(or x1798 (not x1537))
+(or x1798 (not x1536))
+(or x1535 x1537 x1536 (not x1798))
+(or (not x1798) (not x43) x1735)
+(or (not x1735) x1798)
+(or (not x1735) x43)
+(or x1799 (not x1726))
+(or x1799 (not x1727))
+(or x1799 (not x1728))
+(or x1799 (not x1729))
+(or x1799 (not x1730))
+(or x1799 (not x1731))
+(or x1799 (not x1555))
+(or x1799 (not x1732))
+(or x1799 (not x1733))
+(or x1799 (not x1734))
+(or x1799 (not x1735))
+(or x1799 (not x1736))
+(or x1726 x1727 x1728 x1729 x1730 x1731 x1555 x1732 x1733 x1734 x1735 x1736 (not x1799))
+(or x1520 (not x1739))
+(or x1520 x1738)
+(or x1520 (not x1737))
+(or x1520 (not x1736))
+(or x1739 (not x1738) x1737 x1736 (not x1520))
+(or (not x1520) (not x1521) (not x1485) x1800)
+(or (not x1800) x1520)
+(or (not x1800) x1521)
+(or (not x1800) x1485)
+(or x1739 (not x1738) (not x1737) x1736 x44 x43 x1734)
+(or (not x1734) (not x1739))
+(or (not x1734) x1738)
+(or (not x1734) x1737)
+(or (not x1734) (not x1736))
+(or (not x1734) (not x44))
+(or (not x1734) (not x43))
+(or x1739 x1738 x1737 (not x1736) x44 x43 x1733)
+(or (not x1733) (not x1739))
+(or (not x1733) (not x1738))
+(or (not x1733) (not x1737))
+(or (not x1733) x1736)
+(or (not x1733) (not x44))
+(or (not x1733) (not x43))
+(or x1750 (not x1726))
+(or x1750 (not x1727))
+(or x1750 (not x1728))
+(or x1750 (not x1729))
+(or x1750 (not x1730))
+(or x1750 (not x1731))
+(or x1750 (not x1555))
+(or x1750 (not x1732))
+(or x1750 (not x1733))
+(or x1750 (not x1734))
+(or x1750 (not x1800))
+(or x1750 x43)
+(or x1726 x1727 x1728 x1729 x1730 x1731 x1555 x1732 x1733 x1734 x1800 (not x43) (not x1750))
+(or x1801 x1780)
+(or x1801 x1802)
+(or (not x1780) (not x1802) (not x1801))
+(or (not x1801) (not x1780) x1803)
+(or (not x1803) x1801)
+(or (not x1803) x1780)
+(or x1739 x1738 x1737 (not x1736) x44 (not x43) x1732)
+(or (not x1732) (not x1739))
+(or (not x1732) (not x1738))
+(or (not x1732) (not x1737))
+(or (not x1732) x1736)
+(or (not x1732) (not x44))
+(or (not x1732) x43)
+(or x1748 (not x1726))
+(or x1748 (not x1727))
+(or x1748 (not x1728))
+(or x1748 (not x1729))
+(or x1748 (not x1730))
+(or x1748 (not x1731))
+(or x1748 (not x1555))
+(or x1748 (not x1732))
+(or x1748 (not x1739))
+(or x1748 (not x1738))
+(or x1748 (not x1737))
+(or x1748 x1736)
+(or x1748 (not x44))
+(or x1748 (not x43))
+(or x1726 x1727 x1728 x1729 x1730 x1731 x1555 x1732 x1739 x1738 x1737 (not x1736) x44 x43 (not x1748))
+(or x1804 (not x1726))
+(or x1804 (not x1727))
+(or x1804 (not x1728))
+(or x1804 (not x1729))
+(or x1804 (not x1730))
+(or x1804 (not x1731))
+(or x1804 (not x1555))
+(or x1804 (not x1732))
+(or x1804 (not x1739))
+(or x1804 (not x1738))
+(or x1804 (not x1737))
+(or x1804 x1736)
+(or x1804 (not x44))
+(or x1804 (not x43))
+(or x1804 x1754)
+(or x1804 x1755)
+(or x1804 (not x1803))
+(or x1726 x1727 x1728 x1729 x1730 x1731 x1555 x1732 x1739 x1738 x1737 (not x1736) x44 x43 (not x1754) (not x1755) x1803 (not x1804))
+(or x1747 (not x1726))
+(or x1747 (not x1727))
+(or x1747 (not x1728))
+(or x1747 (not x1729))
+(or x1747 (not x1730))
+(or x1747 (not x1731))
+(or x1747 (not x1555))
+(or x1747 (not x1739))
+(or x1747 (not x1738))
+(or x1747 (not x1737))
+(or x1747 x1736)
+(or x1747 (not x44))
+(or x1747 x43)
+(or x1726 x1727 x1728 x1729 x1730 x1731 x1555 x1739 x1738 x1737 (not x1736) x44 (not x43) (not x1747))
+(or x1805 x1760)
+(or x1805 (not x1761))
+(or (not x1760) x1761 (not x1805))
+(or (not x1805) (not x1760) x1806)
+(or (not x1806) x1805)
+(or (not x1806) x1760)
+(or x1746 (not x1726))
+(or x1746 (not x1727))
+(or x1746 (not x1728))
+(or x1746 (not x1729))
+(or x1746 (not x1730))
+(or x1746 (not x1731))
+(or x1746 (not x1739))
+(or x1746 (not x1738))
+(or x1746 x1737)
+(or x1746 x1736)
+(or x1726 x1727 x1728 x1729 x1730 x1731 x1739 x1738 (not x1737) (not x1736) (not x1746))
+(or x1807 (not x1726))
+(or x1807 (not x1727))
+(or x1807 (not x1728))
+(or x1807 (not x1729))
+(or x1807 (not x1730))
+(or x1807 (not x1731))
+(or x1807 (not x1739))
+(or x1807 (not x1738))
+(or x1807 x1737)
+(or x1807 x1736)
+(or x1807 x1759)
+(or x1807 (not x1806))
+(or x1726 x1727 x1728 x1729 x1730 x1731 x1739 x1738 (not x1737) (not x1736) (not x1759) x1806 (not x1807))
+(or x1739 x1738 (not x1737) x1736 (not x1808) x1730)
+(or (not x1730) (not x1739))
+(or (not x1730) (not x1738))
+(or (not x1730) x1737)
+(or (not x1730) (not x1736))
+(or (not x1730) x1808)
+(or x1745 (not x1726))
+(or x1745 (not x1727))
+(or x1745 (not x1728))
+(or x1745 (not x1729))
+(or x1745 (not x1730))
+(or x1745 (not x1739))
+(or x1745 (not x1738))
+(or x1745 x1737)
+(or x1745 (not x1736))
+(or x1726 x1727 x1728 x1729 x1730 x1739 x1738 (not x1737) x1736 (not x1745))
+(or x1809 x1764)
+(or x1809 x1765)
+(or x1809 x1790)
+(or x1809 x1810)
+(or (not x1764) (not x1765) (not x1790) (not x1810) (not x1809))
+(or (not x1809) (not x1764) x1811)
+(or (not x1811) x1809)
+(or (not x1811) x1764)
+(or x1739 x1738 (not x1737) x1736 (not x43) (not x44) x1729)
+(or (not x1729) (not x1739))
+(or (not x1729) (not x1738))
+(or (not x1729) x1737)
+(or (not x1729) (not x1736))
+(or (not x1729) x43)
+(or (not x1729) x44)
+(or x1744 (not x1726))
+(or x1744 (not x1727))
+(or x1744 (not x1728))
+(or x1744 (not x1729))
+(or x1744 (not x1739))
+(or x1744 (not x1738))
+(or x1744 x1737)
+(or x1744 (not x1736))
+(or x1744 (not x1763))
+(or x1726 x1727 x1728 x1729 x1739 x1738 (not x1737) x1736 x1763 (not x1744))
+(or x1812 (not x1726))
+(or x1812 (not x1727))
+(or x1812 (not x1728))
+(or x1812 (not x1729))
+(or x1812 (not x1739))
+(or x1812 (not x1738))
+(or x1812 x1737)
+(or x1812 (not x1736))
+(or x1812 (not x1763))
+(or x1812 (not x1811))
+(or x1726 x1727 x1728 x1729 x1739 x1738 (not x1737) x1736 x1763 x1811 (not x1812))
+(or x1743 (not x1726))
+(or x1743 (not x1727))
+(or x1743 (not x1728))
+(or x1743 (not x1739))
+(or x1743 (not x1738))
+(or x1743 x1737)
+(or x1743 (not x1736))
+(or x1743 x43)
+(or x1743 x44)
+(or x1726 x1727 x1728 x1739 x1738 (not x1737) x1736 (not x43) (not x44) (not x1743))
+(or x1739 x1738 x1737 x1736 x43 (not x1332) (not x1331) (not x1808) (not x1711) (not x1712) x1727)
+(or (not x1727) (not x1739))
+(or (not x1727) (not x1738))
+(or (not x1727) (not x1737))
+(or (not x1727) (not x1736))
+(or (not x1727) (not x43))
+(or (not x1727) x1332)
+(or (not x1727) x1331)
+(or (not x1727) x1808)
+(or (not x1727) x1711)
+(or (not x1727) x1712)
+(or x1742 (not x1726))
+(or x1742 (not x1727))
+(or x1742 (not x1739))
+(or x1742 (not x1738))
+(or x1742 (not x1737))
+(or x1742 (not x1736))
+(or x1742 (not x43))
+(or x1742 x1332)
+(or x1742 x1331)
+(or x1726 x1727 x1739 x1738 x1737 x1736 x43 (not x1332) (not x1331) (not x1742))
+(or (not x1502) (not x1544) x1663)
+(or (not x1663) x1502)
+(or (not x1663) x1544)
+(or (not x1439) (not x1440) (not x1549) x1662)
+(or (not x1662) x1439)
+(or (not x1662) x1440)
+(or (not x1662) x1549)
+(or x1714 (not x1662))
+(or x1714 (not x1663))
+(or x1662 x1663 (not x1714))
+(or (not x1606) (not x1605) x1604)
+(or (not x1604) x1606)
+(or (not x1604) x1605)
+(or (not x1606) x1605 x1603)
+(or (not x1603) x1606)
+(or (not x1603) (not x1605))
+(or x1606 (not x1605) x1602)
+(or (not x1602) (not x1606))
+(or (not x1602) x1605)
+(or (not x42) x43 x1316)
+(or (not x1316) x42)
+(or (not x1316) (not x43))
+(or x1606 x1605 (not x42) x43 x1813)
+(or (not x1813) (not x1606))
+(or (not x1813) (not x1605))
+(or (not x1813) x42)
+(or (not x1813) (not x43))
+(or x1808 (not x1813))
+(or x1808 (not x1602))
+(or x1808 (not x1603))
+(or x1808 (not x1604))
+(or x1813 x1602 x1603 x1604 (not x1808))
+(or x1739 x1738 x1737 x1736 x43 (not x1332) (not x1331) x1728)
+(or (not x1728) (not x1739))
+(or (not x1728) (not x1738))
+(or (not x1728) (not x1737))
+(or (not x1728) (not x1736))
+(or (not x1728) (not x43))
+(or (not x1728) x1332)
+(or (not x1728) x1331)
+(or x1739 x1738 x1737 x1736 x43 (not x1332) (not x1331) (not x1808) (not x1714) x1726)
+(or (not x1726) (not x1739))
+(or (not x1726) (not x1738))
+(or (not x1726) (not x1737))
+(or (not x1726) (not x1736))
+(or (not x1726) (not x43))
+(or (not x1726) x1332)
+(or (not x1726) x1331)
+(or (not x1726) x1808)
+(or (not x1726) x1714)
+(or x1741 (not x1726))
+(or x1741 (not x1739))
+(or x1741 (not x1738))
+(or x1741 (not x1737))
+(or x1741 (not x1736))
+(or x1741 (not x43))
+(or x1741 x1332)
+(or x1741 x1331)
+(or x1741 (not x1763))
+(or x1741 (not x1662))
+(or x1741 (not x1663))
+(or x1726 x1739 x1738 x1737 x1736 x43 (not x1332) (not x1331) x1763 x1662 x1663 (not x1741))
+(or x1814 (not x1726))
+(or x1814 (not x1739))
+(or x1814 (not x1738))
+(or x1814 (not x1737))
+(or x1814 (not x1736))
+(or x1814 (not x43))
+(or x1814 x1332)
+(or x1814 x1331)
+(or x1814 (not x1763))
+(or x1814 (not x1662))
+(or x1814 (not x1663))
+(or x1814 x1767)
+(or x1814 x1815)
+(or x1726 x1739 x1738 x1737 x1736 x43 (not x1332) (not x1331) x1763 x1662 x1663 (not x1767) (not x1815) (not x1814))
+(or x1816 x1770)
+(or x1816 x1771)
+(or (not x1770) (not x1771) (not x1816))
+(or (not x1816) (not x1770) x1817)
+(or (not x1817) x1816)
+(or (not x1817) x1770)
+(or x1452 (not x1438))
+(or x1452 (not x1382))
+(or x1438 x1382 (not x1452))
+(or x1440 (not x1481))
+(or x1440 x1462)
+(or x1440 (not x1463))
+(or x1440 (not x1464))
+(or x1440 (not x1465))
+(or x1440 (not x1467))
+(or x1440 (not x1414))
+(or x1440 (not x1468))
+(or x1440 (not x1469))
+(or x1440 (not x1375))
+(or x1440 (not x1470))
+(or x1440 (not x1438))
+(or x1440 (not x1382))
+(or x1481 (not x1462) x1463 x1464 x1465 x1467 x1414 x1468 x1469 x1375 x1470 x1438 x1382 (not x1440))
+(or x1565 (not x1462))
+(or x1565 (not x1463))
+(or x1462 x1463 (not x1565))
+(or x1563 (not x1462))
+(or x1563 (not x1463))
+(or x1563 (not x1464))
+(or x1563 (not x1465))
+(or x1462 x1463 x1464 x1465 (not x1563))
+(or x1575 (not x1468))
+(or x1575 (not x1469))
+(or x1468 x1469 (not x1575))
+(or x1571 (not x1438))
+(or x1571 (not x1468))
+(or x1571 (not x1469))
+(or x1438 x1468 x1469 (not x1571))
+(or x1576 (not x1382))
+(or x1576 (not x1438))
+(or x1576 (not x1468))
+(or x1576 (not x1469))
+(or x1382 x1438 x1468 x1469 (not x1576))
+(or x1570 (not x1467))
+(or x1570 (not x1382))
+(or x1570 (not x1438))
+(or x1570 (not x1468))
+(or x1570 (not x1469))
+(or x1467 x1382 x1438 x1468 x1469 (not x1570))
+(or x1439 (not x1467))
+(or x1439 (not x1382))
+(or x1439 (not x1438))
+(or x1439 (not x1468))
+(or x1439 (not x1469))
+(or x1439 (not x1481))
+(or x1439 (not x1375))
+(or x1439 x1470)
+(or x1439 (not x1414))
+(or x1439 (not x1462))
+(or x1439 (not x1463))
+(or x1439 (not x1464))
+(or x1439 (not x1465))
+(or x1467 x1382 x1438 x1468 x1469 x1481 x1375 (not x1470) x1414 x1462 x1463 x1464 x1465 (not x1439))
+(or (not x1439) (not x1440) x1818)
+(or (not x1818) x1439)
+(or (not x1818) x1440)
+(or x1712 (not x1818))
+(or x1712 x1544)
+(or x1818 (not x1544) (not x1712))
+(or x1438 x1382 x1447)
+(or (not x1447) (not x1438))
+(or (not x1447) (not x1382))
+(or x1481 (not x1462) x1463 x1464 x1465 x1467 x1414 x1468 x1469 x1375 x1470 x1438 x1382 x1431)
+(or (not x1431) (not x1481))
+(or (not x1431) x1462)
+(or (not x1431) (not x1463))
+(or (not x1431) (not x1464))
+(or (not x1431) (not x1465))
+(or (not x1431) (not x1467))
+(or (not x1431) (not x1414))
+(or (not x1431) (not x1468))
+(or (not x1431) (not x1469))
+(or (not x1431) (not x1375))
+(or (not x1431) (not x1470))
+(or (not x1431) (not x1438))
+(or (not x1431) (not x1382))
+(or x1462 x1463 x1507)
+(or (not x1507) (not x1462))
+(or (not x1507) (not x1463))
+(or x1462 x1463 x1464 x1465 x1504)
+(or (not x1504) (not x1462))
+(or (not x1504) (not x1463))
+(or (not x1504) (not x1464))
+(or (not x1504) (not x1465))
+(or x1468 x1469 x1518)
+(or (not x1518) (not x1468))
+(or (not x1518) (not x1469))
+(or x1438 x1468 x1469 x1512)
+(or (not x1512) (not x1438))
+(or (not x1512) (not x1468))
+(or (not x1512) (not x1469))
+(or x1382 x1438 x1468 x1469 x1519)
+(or (not x1519) (not x1382))
+(or (not x1519) (not x1438))
+(or (not x1519) (not x1468))
+(or (not x1519) (not x1469))
+(or x1467 x1382 x1438 x1468 x1469 x1511)
+(or (not x1511) (not x1467))
+(or (not x1511) (not x1382))
+(or (not x1511) (not x1438))
+(or (not x1511) (not x1468))
+(or (not x1511) (not x1469))
+(or x1467 x1382 x1438 x1468 x1469 x1481 x1375 (not x1470) x1414 x1462 x1463 x1464 x1465 x1430)
+(or (not x1430) (not x1467))
+(or (not x1430) (not x1382))
+(or (not x1430) (not x1438))
+(or (not x1430) (not x1468))
+(or (not x1430) (not x1469))
+(or (not x1430) (not x1481))
+(or (not x1430) (not x1375))
+(or (not x1430) x1470)
+(or (not x1430) (not x1414))
+(or (not x1430) (not x1462))
+(or (not x1430) (not x1463))
+(or (not x1430) (not x1464))
+(or (not x1430) (not x1465))
+(or x1502 (not x1430))
+(or x1502 (not x1431))
+(or x1430 x1431 (not x1502))
+(or x1711 (not x1430))
+(or x1711 (not x1431))
+(or x1711 x1549)
+(or x1430 x1431 (not x1549) (not x1711))
+(or (not x1711) (not x1712) x1674)
+(or (not x1674) x1711)
+(or (not x1674) x1712)
+(or x1819 x1606)
+(or x1819 x1605)
+(or (not x1606) (not x1605) (not x1819))
+(or x1820 x1606)
+(or x1820 (not x1605))
+(or (not x1606) x1605 (not x1820))
+(or x1821 (not x1606))
+(or x1821 x1605)
+(or x1606 (not x1605) (not x1821))
+(or x1356 x42)
+(or x1356 (not x43))
+(or (not x42) x43 (not x1356))
+(or x1822 (not x1606))
+(or x1822 (not x1605))
+(or x1822 x42)
+(or x1822 (not x43))
+(or x1606 x1605 (not x42) x43 (not x1822))
+(or (not x1822) (not x1821) (not x1820) (not x1819) x1763)
+(or (not x1763) x1822)
+(or (not x1763) x1821)
+(or (not x1763) x1820)
+(or (not x1763) x1819)
+(or x1740 (not x1739))
+(or x1740 (not x1738))
+(or x1740 (not x1737))
+(or x1740 (not x1736))
+(or x1740 (not x43))
+(or x1740 x1332)
+(or x1740 x1331)
+(or x1740 (not x1763))
+(or x1740 (not x1674))
+(or x1739 x1738 x1737 x1736 x43 (not x1332) (not x1331) x1763 x1674 (not x1740))
+(or x1823 (not x1739))
+(or x1823 (not x1738))
+(or x1823 (not x1737))
+(or x1823 (not x1736))
+(or x1823 (not x43))
+(or x1823 x1332)
+(or x1823 x1331)
+(or x1823 (not x1763))
+(or x1823 (not x1674))
+(or x1823 x1774)
+(or x1823 x1769)
+(or x1823 (not x1817))
+(or x1739 x1738 x1737 x1736 x43 (not x1332) (not x1331) x1763 x1674 (not x1774) (not x1769) x1817 (not x1823))
+(or (not x1823) (not x1814) (not x1742) (not x1743) (not x1812) (not x1745) (not x1807) (not x1747) (not x1804) (not x1750) (not x1799) x1824)
+(or (not x1824) x1823)
+(or (not x1824) x1814)
+(or (not x1824) x1742)
+(or (not x1824) x1743)
+(or (not x1824) x1812)
+(or (not x1824) x1745)
+(or (not x1824) x1807)
+(or (not x1824) x1747)
+(or (not x1824) x1804)
+(or (not x1824) x1750)
+(or (not x1824) x1799)
+(or x1825 (not x1826))
+(or x1825 (not x1396))
+(or x1825 (not x1827))
+(or x1825 (not x1402))
+(or x1826 x1396 x1827 x1402 (not x1825))
+(or x1828 (not x1826))
+(or x1828 (not x1396))
+(or x1828 x1402)
+(or x1828 (not x1401))
+(or x1828 (not x1400))
+(or x1828 x1399)
+(or x1828 x1375)
+(or x1828 x1829)
+(or x1826 x1396 (not x1402) x1401 x1400 (not x1399) (not x1375) (not x1829) (not x1828))
+(or x1830 (not x1402))
+(or x1830 x1401)
+(or x1830 x1400)
+(or x1830 x1399)
+(or x1830 x1332)
+(or x1830 x1331)
+(or x1830 x1831)
+(or x1830 x1832)
+(or x1402 (not x1401) (not x1400) (not x1399) (not x1332) (not x1331) (not x1831) (not x1832) (not x1830))
+(or (not x1830) (not x1828) (not x1825) x1833)
+(or (not x1833) x1830)
+(or (not x1833) x1828)
+(or (not x1833) x1825)
+(or x1834 (not x1826))
+(or x1834 (not x1396))
+(or x1834 (not x1827))
+(or x1834 (not x1401))
+(or x1826 x1396 x1827 x1401 (not x1834))
+(or (not x1835) (not x1836) (not x1837) (not x1834) x1838)
+(or (not x1838) x1835)
+(or (not x1838) x1836)
+(or (not x1838) x1837)
+(or (not x1838) x1834)
+(or x1839 (not x1826))
+(or x1839 (not x1396))
+(or x1839 (not x1827))
+(or x1839 (not x1400))
+(or x1826 x1396 x1827 x1400 (not x1839))
+(or x1412 x1402)
+(or x1412 (not x1401))
+(or x1412 (not x1400))
+(or x1412 (not x1399))
+(or (not x1402) x1401 x1400 x1399 (not x1412))
+(or x1836 (not x1826))
+(or x1836 x1402)
+(or x1836 (not x1401))
+(or x1836 (not x1400))
+(or x1836 (not x1399))
+(or x1826 (not x1402) x1401 x1400 x1399 (not x1836))
+(or (not x1835) (not x1836) (not x1837) (not x1839) x1840)
+(or (not x1840) x1835)
+(or (not x1840) x1836)
+(or (not x1840) x1837)
+(or (not x1840) x1839)
+(or (not x1402) x1401 x1400 (not x1399) (not x1375) x1827)
+(or (not x1827) x1402)
+(or (not x1827) (not x1401))
+(or (not x1827) (not x1400))
+(or (not x1827) x1399)
+(or (not x1827) x1375)
+(or x1841 (not x1826))
+(or x1841 (not x1396))
+(or x1841 (not x1827))
+(or x1841 (not x1399))
+(or x1826 x1396 x1827 x1399 (not x1841))
+(or x1402 (not x1401) (not x1400) (not x1399) (not x1332) (not x1331) (not x1831) x1826)
+(or (not x1826) (not x1402))
+(or (not x1826) x1401)
+(or (not x1826) x1400)
+(or (not x1826) x1399)
+(or (not x1826) x1332)
+(or (not x1826) x1331)
+(or (not x1826) x1831)
+(or x1837 (not x1826))
+(or x1837 (not x1396))
+(or x1837 x1402)
+(or x1837 (not x1401))
+(or x1837 (not x1400))
+(or x1837 x1399)
+(or x1837 x1375)
+(or x1837 (not x1829))
+(or x1826 x1396 (not x1402) x1401 x1400 (not x1399) (not x1375) x1829 (not x1837))
+(or x1835 (not x1402))
+(or x1835 x1401)
+(or x1835 x1400)
+(or x1835 x1399)
+(or x1835 x1332)
+(or x1835 x1331)
+(or x1835 x1831)
+(or x1835 (not x1832))
+(or x1402 (not x1401) (not x1400) (not x1399) (not x1332) (not x1331) (not x1831) x1832 (not x1835))
+(or (not x1835) (not x1837) (not x1841) x1842)
+(or (not x1842) x1835)
+(or (not x1842) x1837)
+(or (not x1842) x1841)
+(or (not x1831) (not x1843) (not x1375) x1844)
+(or (not x1844) x1831)
+(or (not x1844) x1843)
+(or (not x1844) x1375)
+(or x1845 x1831)
+(or x1845 (not x1844))
+(or x1845 (not x1831))
+(or (not x1831) x1844 x1831 (not x1845))
+(or x1846 x1831)
+(or x1846 x1831)
+(or x1846 x1843)
+(or x1846 x1375)
+(or x1846 x1847)
+(or (not x1831) (not x1831) (not x1843) (not x1375) (not x1847) (not x1846))
+(or x1848 x1849)
+(or x1848 x1850)
+(or (not x1849) (not x1850) (not x1848))
+(or (not x1848) (not x1849) x1851)
+(or (not x1851) x1848)
+(or (not x1851) x1849)
+(or x1852 (not x1831))
+(or x1852 x1853)
+(or x1852 (not x1851))
+(or x1831 (not x1853) x1851 (not x1852))
+(or (not x1852) (not x1846) (not x1845) x1854)
+(or (not x1854) x1852)
+(or (not x1854) x1846)
+(or (not x1854) x1845)
+(or x1483 (not x1535))
+(or x1483 (not x1536))
+(or x1483 (not x1537))
+(or x1483 (not x1538))
+(or x1483 (not x1539))
+(or x1483 (not x1540))
+(or x1535 x1536 x1537 x1538 x1539 x1540 (not x1483))
+(or x1487 (not x1634))
+(or x1487 x1633)
+(or x1487 x1632)
+(or x1487 (not x1631))
+(or x1634 (not x1633) (not x1632) x1631 (not x1487))
+(or x1523 (not x1634))
+(or x1523 x1633)
+(or x1523 (not x1632))
+(or x1523 x1631)
+(or x1634 (not x1633) x1632 (not x1631) (not x1523))
+(or x1486 (not x1634))
+(or x1486 (not x1633))
+(or x1486 (not x1632))
+(or x1486 x1631)
+(or x1634 x1633 x1632 (not x1631) (not x1486))
+(or x1855 (not x1634))
+(or x1855 (not x1633))
+(or x1855 x1632)
+(or x1855 x1631)
+(or x1634 x1633 (not x1632) (not x1631) (not x1855))
+(or x1485 (not x1739))
+(or x1485 x1738)
+(or x1485 x1737)
+(or x1485 (not x1736))
+(or x1739 (not x1738) (not x1737) x1736 (not x1485))
+(or x1521 (not x1739))
+(or x1521 x1738)
+(or x1521 (not x1737))
+(or x1521 x1736)
+(or x1739 (not x1738) x1737 (not x1736) (not x1521))
+(or x1484 (not x1739))
+(or x1484 (not x1738))
+(or x1484 (not x1737))
+(or x1484 x1736)
+(or x1739 x1738 x1737 (not x1736) (not x1484))
+(or x1856 (not x1739))
+(or x1856 (not x1738))
+(or x1856 x1737)
+(or x1856 x1736)
+(or x1739 x1738 (not x1737) (not x1736) (not x1856))
+(or (not x1856) (not x1484) (not x1521) (not x1485) (not x1855) (not x1486) (not x1523) (not x1487) x1857)
+(or (not x1857) x1856)
+(or (not x1857) x1484)
+(or (not x1857) x1521)
+(or (not x1857) x1485)
+(or (not x1857) x1855)
+(or (not x1857) x1486)
+(or (not x1857) x1523)
+(or (not x1857) x1487)
+(or (not x1856) (not x1484) (not x1521) (not x1485) (not x1855) (not x1486) (not x1523) (not x1487) x1426 x1427 x1615)
+(or (not x1615) x1856)
+(or (not x1615) x1484)
+(or (not x1615) x1521)
+(or (not x1615) x1485)
+(or (not x1615) x1855)
+(or (not x1615) x1486)
+(or (not x1615) x1523)
+(or (not x1615) x1487)
+(or (not x1615) (not x1426))
+(or (not x1615) (not x1427))
+(or x1473 (not x1615))
+(or x1473 (not x1556))
+(or x1473 (not x1536))
+(or x1473 (not x1558))
+(or x1473 (not x1539))
+(or x1615 x1556 x1536 x1558 x1539 (not x1473))
+(or x1858 (not x1615))
+(or x1858 (not x1556))
+(or x1858 (not x1536))
+(or x1858 (not x1558))
+(or x1858 (not x1539))
+(or x1858 (not x1535))
+(or x1858 (not x1536))
+(or x1858 (not x1537))
+(or x1858 (not x1538))
+(or x1858 (not x1539))
+(or x1858 (not x1540))
+(or x1858 x1438)
+(or x1615 x1556 x1536 x1558 x1539 x1535 x1536 x1537 x1538 x1539 x1540 (not x1438) (not x1858))
+(or (not x1858) (not x1614) x1859)
+(or (not x1859) x1858)
+(or (not x1859) x1614)
+(or (not x1860) x1402)
+(or (not x1860) (not x1401))
+(or (not x1860) (not x1400))
+(or (not x1860) x1399)
+(or (not x1402) x1401 x1400 x1399 x1396)
+(or (not x1396) x1402)
+(or (not x1396) (not x1401))
+(or (not x1396) (not x1400))
+(or (not x1396) (not x1399))
+(or (not x1861) (not x1402))
+(or (not x1861) x1401)
+(or (not x1861) x1400)
+(or (not x1861) x1399)
+(or x1862 (not x1861))
+(or x1862 (not x1396))
+(or x1861 x1396 (not x1862))
+(or x1634 (not x1633) (not x1632) x1631 x1539)
+(or (not x1539) (not x1634))
+(or (not x1539) x1633)
+(or (not x1539) x1632)
+(or (not x1539) (not x1631))
+(or x1634 (not x1633) x1632 (not x1631) x1540)
+(or (not x1540) (not x1634))
+(or (not x1540) x1633)
+(or (not x1540) (not x1632))
+(or (not x1540) x1631)
+(or x1634 (not x1633) x1632 x1631 x1538)
+(or (not x1538) (not x1634))
+(or (not x1538) x1633)
+(or (not x1538) (not x1632))
+(or (not x1538) (not x1631))
+(or x1634 x1633 (not x1632) (not x1631) x1557)
+(or (not x1557) (not x1634))
+(or (not x1557) (not x1633))
+(or (not x1557) x1632)
+(or (not x1557) x1631)
+(or x1634 x1633 (not x1632) x1631 x1626)
+(or (not x1626) (not x1634))
+(or (not x1626) (not x1633))
+(or (not x1626) x1632)
+(or (not x1626) (not x1631))
+(or x1634 x1633 x1632 (not x1631) x1558)
+(or (not x1558) (not x1634))
+(or (not x1558) (not x1633))
+(or (not x1558) (not x1632))
+(or (not x1558) x1631)
+(or (not x1863) (not x1634))
+(or (not x1863) (not x1633))
+(or (not x1863) (not x1632))
+(or (not x1863) (not x1631))
+(or x1864 (not x1863))
+(or x1864 (not x1558))
+(or x1864 (not x1626))
+(or x1864 (not x1557))
+(or x1864 (not x1538))
+(or x1864 (not x1540))
+(or x1863 x1558 x1626 x1557 x1538 x1540 (not x1864))
+(or x1739 (not x1738) (not x1737) x1736 x1536)
+(or (not x1536) (not x1739))
+(or (not x1536) x1738)
+(or (not x1536) x1737)
+(or (not x1536) (not x1736))
+(or x1739 (not x1738) x1737 (not x1736) x1537)
+(or (not x1537) (not x1739))
+(or (not x1537) x1738)
+(or (not x1537) (not x1737))
+(or (not x1537) x1736)
+(or x1739 (not x1738) x1737 x1736 x1535)
+(or (not x1535) (not x1739))
+(or (not x1535) x1738)
+(or (not x1535) (not x1737))
+(or (not x1535) (not x1736))
+(or x1739 x1738 (not x1737) (not x1736) x1555)
+(or (not x1555) (not x1739))
+(or (not x1555) (not x1738))
+(or (not x1555) x1737)
+(or (not x1555) x1736)
+(or x1739 x1738 (not x1737) x1736 x1731)
+(or (not x1731) (not x1739))
+(or (not x1731) (not x1738))
+(or (not x1731) x1737)
+(or (not x1731) (not x1736))
+(or x1739 x1738 x1737 (not x1736) x1556)
+(or (not x1556) (not x1739))
+(or (not x1556) (not x1738))
+(or (not x1556) (not x1737))
+(or (not x1556) x1736)
+(or (not x1865) (not x1739))
+(or (not x1865) (not x1738))
+(or (not x1865) (not x1737))
+(or (not x1865) (not x1736))
+(or x1866 (not x1865))
+(or x1866 (not x1556))
+(or x1866 (not x1731))
+(or x1866 (not x1555))
+(or x1866 (not x1535))
+(or x1866 (not x1537))
+(or x1865 x1556 x1731 x1555 x1535 x1537 (not x1866))
+(or x1867 (not x1868))
+(or x1867 (not x1869))
+(or x1867 (not x1870))
+(or x1867 (not x1871))
+(or x1867 (not x1872))
+(or x1867 (not x1873))
+(or x1867 (not x50))
+(or x1867 x49)
+(or x1867 x48)
+(or x1867 x47)
+(or x1867 (not x1874))
+(or x1867 x1875)
+(or x1868 x1869 x1870 x1871 x1872 x1873 x50 (not x49) (not x48) (not x47) x1874 (not x1875) (not x1867))
+(or x1876 (not x1868))
+(or x1876 (not x1869))
+(or x1876 (not x1870))
+(or x1876 (not x1871))
+(or x1876 (not x1872))
+(or x1876 (not x50))
+(or x1876 x49)
+(or x1876 x48)
+(or x1876 (not x47))
+(or x1876 x51)
+(or x1876 (not x52))
+(or x1876 x1877)
+(or x1868 x1869 x1870 x1871 x1872 x50 (not x49) (not x48) x47 (not x51) x52 (not x1877) (not x1876))
+(or x1878 (not x50))
+(or x1878 (not x49))
+(or x1878 (not x48))
+(or x1878 x47)
+(or x1878 (not x1879))
+(or x50 x49 x48 (not x47) x1879 (not x1878))
+(or (not x1878) (not x1880) (not x1881) (not x1882) (not x1883) (not x1876) (not x1867) (not x1884) x1885)
+(or (not x1885) x1878)
+(or (not x1885) x1880)
+(or (not x1885) x1881)
+(or (not x1885) x1882)
+(or (not x1885) x1883)
+(or (not x1885) x1876)
+(or (not x1885) x1867)
+(or (not x1885) x1884)
+(or x1886 (not x1868))
+(or x1886 (not x1869))
+(or x1886 (not x50))
+(or x1886 (not x49))
+(or x1886 x48)
+(or x1886 x47)
+(or x1886 (not x1874))
+(or x1886 x1887)
+(or x1868 x1869 x50 x49 (not x48) (not x47) x1874 (not x1887) (not x1886))
+(or x1888 (not x1868))
+(or x1888 (not x50))
+(or x1888 (not x49))
+(or x1888 x48)
+(or x1888 (not x47))
+(or x1888 x1890)
+(or x1888 x1889)
+(or x1888 (not x1874))
+(or x1888 x1891)
+(or x1868 x50 x49 (not x48) x47 (not x1890) (not x1889) x1874 (not x1891) (not x1888))
+(or x1892 (not x1893) x1879)
+(or (not x1879) (not x1892))
+(or (not x1879) x1893)
+(or x1892 (not x1893) (not x1894) x1895)
+(or (not x1895) (not x1892))
+(or (not x1895) x1893)
+(or (not x1895) x1894)
+(or x1896 (not x50))
+(or x1896 (not x49))
+(or x1896 (not x48))
+(or x1896 x47)
+(or x1896 (not x1895))
+(or x50 x49 x48 (not x47) x1895 (not x1896))
+(or (not x1896) (not x1888) (not x1886) (not x1897) (not x1898) (not x1899) (not x1900) (not x1884) x1901)
+(or (not x1901) x1896)
+(or (not x1901) x1888)
+(or (not x1901) x1886)
+(or (not x1901) x1897)
+(or (not x1901) x1898)
+(or (not x1901) x1899)
+(or (not x1901) x1900)
+(or (not x1901) x1884)
+(or x1902 (not x1868))
+(or x1902 (not x1869))
+(or x1902 (not x1870))
+(or x1902 (not x1871))
+(or x1902 (not x50))
+(or x1902 x49)
+(or x1902 (not x48))
+(or x1902 x47)
+(or x1902 (not x1874))
+(or x1902 x1903)
+(or x1868 x1869 x1870 x1871 x50 (not x49) x48 (not x47) x1874 (not x1903) (not x1902))
+(or x1904 (not x1868))
+(or x1904 (not x1869))
+(or x1904 (not x1870))
+(or x1904 (not x50))
+(or x1904 x49)
+(or x1904 (not x48))
+(or x1904 (not x47))
+(or x1904 x51)
+(or x1904 (not x52))
+(or x1904 x1905)
+(or x1868 x1869 x1870 x50 (not x49) x48 x47 (not x51) x52 (not x1905) (not x1904))
+(or x1894 (not x1892))
+(or x1894 (not x1906))
+(or x1892 x1906 (not x1894))
+(or x1892 (not x1894) x1907)
+(or (not x1907) (not x1892))
+(or (not x1907) x1894)
+(or x1908 (not x50))
+(or x1908 (not x49))
+(or x1908 (not x48))
+(or x1908 x47)
+(or x1908 (not x1907))
+(or x50 x49 x48 (not x47) x1907 (not x1908))
+(or (not x1908) (not x1909) (not x1910) (not x1904) (not x1902) (not x1897) (not x1898) (not x1911) (not x1912) (not x1884) x1913)
+(or (not x1913) x1908)
+(or (not x1913) x1909)
+(or (not x1913) x1910)
+(or (not x1913) x1904)
+(or (not x1913) x1902)
+(or (not x1913) x1897)
+(or (not x1913) x1898)
+(or (not x1913) x1911)
+(or (not x1913) x1912)
+(or (not x1913) x1884)
+(or (not x50) (not x49) x48 x47 (not x1914) x1915)
+(or (not x1915) x50)
+(or (not x1915) x49)
+(or (not x1915) (not x48))
+(or (not x1915) (not x47))
+(or (not x1915) x1914)
+(or x1884 (not x1868))
+(or x1884 (not x1869))
+(or x1884 (not x1870))
+(or x1884 (not x1871))
+(or x1884 (not x1872))
+(or x1884 (not x1873))
+(or x1884 (not x1916))
+(or x1884 (not x1917))
+(or x1884 (not x1918))
+(or x1884 (not x1919))
+(or x1884 (not x1915))
+(or x1868 x1869 x1870 x1871 x1872 x1873 x1916 x1917 x1918 x1919 x1915 (not x1884))
+(or (not x50) x49 (not x48) (not x47) (not x51) x52 x1919)
+(or (not x1919) x50)
+(or (not x1919) (not x49))
+(or (not x1919) x48)
+(or (not x1919) x47)
+(or (not x1919) x51)
+(or (not x1919) (not x52))
+(or x1912 (not x1868))
+(or x1912 (not x1869))
+(or x1912 (not x1870))
+(or x1912 (not x1871))
+(or x1912 (not x1872))
+(or x1912 (not x1873))
+(or x1912 (not x1916))
+(or x1912 (not x1917))
+(or x1912 (not x1918))
+(or x1912 (not x1919))
+(or x1912 x50)
+(or x1912 x49)
+(or x1912 (not x48))
+(or x1912 (not x47))
+(or x1912 (not x1874))
+(or x1868 x1869 x1870 x1871 x1872 x1873 x1916 x1917 x1918 x1919 (not x50) (not x49) x48 x47 x1874 (not x1912))
+(or x1920 (not x1868))
+(or x1920 (not x1869))
+(or x1920 (not x1870))
+(or x1920 (not x1871))
+(or x1920 (not x1872))
+(or x1920 (not x1873))
+(or x1920 (not x1916))
+(or x1920 (not x1917))
+(or x1920 (not x1918))
+(or x1920 (not x1919))
+(or x1920 x50)
+(or x1920 x49)
+(or x1920 (not x48))
+(or x1920 (not x47))
+(or x1920 (not x1874))
+(or x1920 x1921)
+(or x1868 x1869 x1870 x1871 x1872 x1873 x1916 x1917 x1918 x1919 (not x50) (not x49) x48 x47 x1874 (not x1921) (not x1920))
+(or (not x50) x49 (not x48) x47 (not x1914) x1918)
+(or (not x1918) x50)
+(or (not x1918) (not x49))
+(or (not x1918) x48)
+(or (not x1918) (not x47))
+(or (not x1918) x1914)
+(or x1911 (not x1868))
+(or x1911 (not x1869))
+(or x1911 (not x1870))
+(or x1911 (not x1871))
+(or x1911 (not x1872))
+(or x1911 (not x1873))
+(or x1911 (not x1916))
+(or x1911 (not x1917))
+(or x1911 (not x1918))
+(or x1911 x50)
+(or x1911 (not x49))
+(or x1911 x48)
+(or x1911 x47)
+(or x1911 x51)
+(or x1911 (not x52))
+(or x1868 x1869 x1870 x1871 x1872 x1873 x1916 x1917 x1918 (not x50) x49 (not x48) (not x47) (not x51) x52 (not x1911))
+(or x1922 (not x1868))
+(or x1922 (not x1869))
+(or x1922 (not x1870))
+(or x1922 (not x1871))
+(or x1922 (not x1872))
+(or x1922 (not x1873))
+(or x1922 (not x1916))
+(or x1922 (not x1917))
+(or x1922 (not x1918))
+(or x1922 x50)
+(or x1922 (not x49))
+(or x1922 x48)
+(or x1922 x47)
+(or x1922 x51)
+(or x1922 (not x52))
+(or x1922 x1923)
+(or x1868 x1869 x1870 x1871 x1872 x1873 x1916 x1917 x1918 (not x50) x49 (not x48) (not x47) (not x51) x52 (not x1923) (not x1922))
+(or (not x50) x49 x48 (not x47) (not x1890) (not x1889) (not x51) x52 x1917)
+(or (not x1917) x50)
+(or (not x1917) (not x49))
+(or (not x1917) (not x48))
+(or (not x1917) x47)
+(or (not x1917) x1890)
+(or (not x1917) x1889)
+(or (not x1917) x51)
+(or (not x1917) (not x52))
+(or x1900 (not x1868))
+(or x1900 (not x1869))
+(or x1900 (not x1870))
+(or x1900 (not x1871))
+(or x1900 (not x1872))
+(or x1900 (not x1873))
+(or x1900 (not x1916))
+(or x1900 (not x1917))
+(or x1900 x50)
+(or x1900 (not x49))
+(or x1900 x48)
+(or x1900 (not x47))
+(or x1900 (not x1874))
+(or x1868 x1869 x1870 x1871 x1872 x1873 x1916 x1917 (not x50) x49 (not x48) x47 x1874 (not x1900))
+(or x1924 (not x1868))
+(or x1924 (not x1869))
+(or x1924 (not x1870))
+(or x1924 (not x1871))
+(or x1924 (not x1872))
+(or x1924 (not x1873))
+(or x1924 (not x1916))
+(or x1924 (not x1917))
+(or x1924 x50)
+(or x1924 (not x49))
+(or x1924 x48)
+(or x1924 (not x47))
+(or x1924 (not x1874))
+(or x1924 x1925)
+(or x1868 x1869 x1870 x1871 x1872 x1873 x1916 x1917 (not x50) x49 (not x48) x47 x1874 (not x1925) (not x1924))
+(or x50 (not x49) (not x48) (not x47) (not x1914) x1916)
+(or (not x1916) (not x50))
+(or (not x1916) x49)
+(or (not x1916) x48)
+(or (not x1916) x47)
+(or (not x1916) x1914)
+(or x1899 (not x1868))
+(or x1899 (not x1869))
+(or x1899 (not x1870))
+(or x1899 (not x1871))
+(or x1899 (not x1872))
+(or x1899 (not x1873))
+(or x1899 (not x1916))
+(or x1899 x50)
+(or x1899 (not x49))
+(or x1899 (not x48))
+(or x1899 x47)
+(or x1899 x1890)
+(or x1899 x1889)
+(or x1899 x51)
+(or x1899 (not x52))
+(or x1868 x1869 x1870 x1871 x1872 x1873 x1916 (not x50) x49 x48 (not x47) (not x1890) (not x1889) (not x51) x52 (not x1899))
+(or x1926 (not x1868))
+(or x1926 (not x1869))
+(or x1926 (not x1870))
+(or x1926 (not x1871))
+(or x1926 (not x1872))
+(or x1926 (not x1873))
+(or x1926 (not x1916))
+(or x1926 x50)
+(or x1926 (not x49))
+(or x1926 (not x48))
+(or x1926 x47)
+(or x1926 x1890)
+(or x1926 x1889)
+(or x1926 x51)
+(or x1926 (not x52))
+(or x1926 x1927)
+(or x1868 x1869 x1870 x1871 x1872 x1873 x1916 (not x50) x49 x48 (not x47) (not x1890) (not x1889) (not x51) x52 (not x1927) (not x1926))
+(or x50 (not x49) (not x48) x47 (not x51) x52 x1873)
+(or (not x1873) (not x50))
+(or (not x1873) x49)
+(or (not x1873) x48)
+(or (not x1873) (not x47))
+(or (not x1873) x51)
+(or (not x1873) (not x52))
+(or x1898 (not x1868))
+(or x1898 (not x1869))
+(or x1898 (not x1870))
+(or x1898 (not x1871))
+(or x1898 (not x1872))
+(or x1898 (not x1873))
+(or x1898 (not x50))
+(or x1898 x49)
+(or x1898 x48)
+(or x1898 x47)
+(or x1898 (not x1874))
+(or x1898 (not x1875))
+(or x1868 x1869 x1870 x1871 x1872 x1873 x50 (not x49) (not x48) (not x47) x1874 x1875 (not x1898))
+(or x50 (not x49) x48 (not x47) (not x1914) x1872)
+(or (not x1872) (not x50))
+(or (not x1872) x49)
+(or (not x1872) (not x48))
+(or (not x1872) x47)
+(or (not x1872) x1914)
+(or x1897 (not x1868))
+(or x1897 (not x1869))
+(or x1897 (not x1870))
+(or x1897 (not x1871))
+(or x1897 (not x1872))
+(or x1897 (not x50))
+(or x1897 x49)
+(or x1897 x48)
+(or x1897 (not x47))
+(or x1897 x51)
+(or x1897 (not x52))
+(or x1897 (not x1877))
+(or x1868 x1869 x1870 x1871 x1872 x50 (not x49) (not x48) x47 (not x51) x52 x1877 (not x1897))
+(or x50 (not x49) x48 x47 (not x51) x52 x1871)
+(or (not x1871) (not x50))
+(or (not x1871) x49)
+(or (not x1871) (not x48))
+(or (not x1871) (not x47))
+(or (not x1871) x51)
+(or (not x1871) (not x52))
+(or x1883 (not x1868))
+(or x1883 (not x1869))
+(or x1883 (not x1870))
+(or x1883 (not x1871))
+(or x1883 (not x50))
+(or x1883 x49)
+(or x1883 (not x48))
+(or x1883 x47)
+(or x1883 (not x1874))
+(or x1868 x1869 x1870 x1871 x50 (not x49) x48 (not x47) x1874 (not x1883))
+(or x1928 (not x1868))
+(or x1928 (not x1869))
+(or x1928 (not x1870))
+(or x1928 (not x1871))
+(or x1928 (not x50))
+(or x1928 x49)
+(or x1928 (not x48))
+(or x1928 x47)
+(or x1928 (not x1874))
+(or x1928 (not x1903))
+(or x1868 x1869 x1870 x1871 x50 (not x49) x48 (not x47) x1874 x1903 (not x1928))
+(or x50 x49 (not x48) (not x47) (not x1914) x1870)
+(or (not x1870) (not x50))
+(or (not x1870) (not x49))
+(or (not x1870) x48)
+(or (not x1870) x47)
+(or (not x1870) x1914)
+(or x1882 (not x1868))
+(or x1882 (not x1869))
+(or x1882 (not x1870))
+(or x1882 (not x50))
+(or x1882 x49)
+(or x1882 (not x48))
+(or x1882 (not x47))
+(or x1882 x51)
+(or x1882 (not x52))
+(or x1868 x1869 x1870 x50 (not x49) x48 x47 (not x51) x52 (not x1882))
+(or x1929 (not x1868))
+(or x1929 (not x1869))
+(or x1929 (not x1870))
+(or x1929 (not x50))
+(or x1929 x49)
+(or x1929 (not x48))
+(or x1929 (not x47))
+(or x1929 x51)
+(or x1929 (not x52))
+(or x1929 (not x1905))
+(or x1868 x1869 x1870 x50 (not x49) x48 x47 (not x51) x52 x1905 (not x1929))
+(or x50 x49 (not x48) x47 (not x1890) (not x1889) (not x1914) x1869)
+(or (not x1869) (not x50))
+(or (not x1869) (not x49))
+(or (not x1869) x48)
+(or (not x1869) (not x47))
+(or (not x1869) x1890)
+(or (not x1869) x1889)
+(or (not x1869) x1914)
+(or x1881 (not x1868))
+(or x1881 (not x1869))
+(or x1881 (not x50))
+(or x1881 (not x49))
+(or x1881 x48)
+(or x1881 x47)
+(or x1881 (not x1874))
+(or x1868 x1869 x50 x49 (not x48) (not x47) x1874 (not x1881))
+(or x1910 (not x1868))
+(or x1910 (not x1869))
+(or x1910 (not x50))
+(or x1910 (not x49))
+(or x1910 x48)
+(or x1910 x47)
+(or x1910 (not x1874))
+(or x1910 (not x1887))
+(or x1868 x1869 x50 x49 (not x48) (not x47) x1874 x1887 (not x1910))
+(or x50 x49 x48 (not x47) x1868)
+(or (not x1868) (not x50))
+(or (not x1868) (not x49))
+(or (not x1868) (not x48))
+(or (not x1868) x47)
+(or x1880 (not x1868))
+(or x1880 (not x50))
+(or x1880 (not x49))
+(or x1880 x48)
+(or x1880 (not x47))
+(or x1880 x1890)
+(or x1880 x1889)
+(or x1880 (not x1874))
+(or x1868 x50 x49 (not x48) x47 (not x1890) (not x1889) x1874 (not x1880))
+(or x1909 (not x1868))
+(or x1909 (not x50))
+(or x1909 (not x49))
+(or x1909 x48)
+(or x1909 (not x47))
+(or x1909 x1890)
+(or x1909 x1889)
+(or x1909 (not x1874))
+(or x1909 (not x1891))
+(or x1868 x50 x49 (not x48) x47 (not x1890) (not x1889) x1874 x1891 (not x1909))
+(or x1893 (not x1892))
+(or x1893 x1906)
+(or x1892 (not x1906) (not x1893))
+(or x1930 (not x50))
+(or x1930 (not x49))
+(or x1930 (not x48))
+(or x1930 x47)
+(or x1930 (not x1892))
+(or x1930 x1906)
+(or x50 x49 x48 (not x47) x1892 (not x1906) (not x1930))
+(or (not x1930) (not x1909) (not x1910) (not x1929) (not x1928) (not x1897) (not x1898) (not x1926) (not x1924) (not x1922) (not x1920) (not x1884) x1931)
+(or (not x1931) x1930)
+(or (not x1931) x1909)
+(or (not x1931) x1910)
+(or (not x1931) x1929)
+(or (not x1931) x1928)
+(or (not x1931) x1897)
+(or (not x1931) x1898)
+(or (not x1931) x1926)
+(or (not x1931) x1924)
+(or (not x1931) x1922)
+(or (not x1931) x1920)
+(or (not x1931) x1884)
+(or x1932 x1933 (not x1934) x1935)
+(or (not x1935) (not x1932))
+(or (not x1935) (not x1933))
+(or (not x1935) x1934)
+(or (not x1932) x1933 (not x1936) x1937)
+(or (not x1937) x1932)
+(or (not x1937) (not x1933))
+(or (not x1937) x1936)
+(or x1938 (not x1937))
+(or x1938 (not x1935))
+(or x1937 x1935 (not x1938))
+(or (not x1939) (not x1940) x1941 x1942 (not x1943) x1944)
+(or (not x1944) x1939)
+(or (not x1944) x1940)
+(or (not x1944) (not x1941))
+(or (not x1944) (not x1942))
+(or (not x1944) x1943)
+(or x1934 (not x1933))
+(or x1934 (not x1944))
+(or x1933 x1944 (not x1934))
+(or (not x1933) (not x1934) x1945)
+(or (not x1945) x1933)
+(or (not x1945) x1934)
+(or x1933 (not x1932) x1946)
+(or (not x1946) (not x1933))
+(or (not x1946) x1932)
+(or x1936 (not x1947))
+(or x1936 x1940)
+(or x1936 (not x1941))
+(or x1936 (not x1942))
+(or x1936 x1943)
+(or x1947 (not x1940) x1941 x1942 (not x1943) (not x1936))
+(or x1933 (not x1936) x1948)
+(or (not x1948) (not x1933))
+(or (not x1948) x1936)
+(or x1949 (not x1948))
+(or x1949 (not x1946))
+(or x1948 x1946 (not x1949))
+(or (not x1950) (not x1949) x1951)
+(or (not x1951) x1950)
+(or (not x1951) x1949)
+(or x1952 (not x1951))
+(or x1952 (not x1945))
+(or x1951 x1945 (not x1952))
+(or x1953 (not x1933))
+(or x1953 (not x1954))
+(or x1953 (not x1955))
+(or x1933 x1954 x1955 (not x1953))
+(or x1956 (not x1933))
+(or x1956 x1960)
+(or x1956 (not x1959))
+(or x1956 (not x1958))
+(or x1956 (not x1957))
+(or x1933 (not x1960) x1959 x1958 x1957 (not x1956))
+(or x1961 x1962)
+(or x1961 x1963)
+(or (not x1962) (not x1963) (not x1961))
+(or (not x1961) (not x1962) x1964)
+(or (not x1964) x1961)
+(or (not x1964) x1962)
+(or x1965 x1933)
+(or x1965 x1966)
+(or x1965 (not x1964))
+(or (not x1933) (not x1966) x1964 (not x1965))
+(or (not x1965) (not x1956) (not x1953) x1967)
+(or (not x1967) x1965)
+(or (not x1967) x1956)
+(or (not x1967) x1953)
+(or (not x1960) x1959 x1958 x1957 (not x1968) x1969)
+(or (not x1969) x1960)
+(or (not x1969) (not x1959))
+(or (not x1969) (not x1958))
+(or (not x1969) (not x1957))
+(or (not x1969) x1968)
+(or (not x1970) (not x1971) x1972 (not x1973) (not x1974) (not x1975) (not x1976) (not x1977) (not x1978) (not x1979) (not x1980) (not x1981) x1982)
+(or (not x1982) x1970)
+(or (not x1982) x1971)
+(or (not x1982) (not x1972))
+(or (not x1982) x1973)
+(or (not x1982) x1974)
+(or (not x1982) x1975)
+(or (not x1982) x1976)
+(or (not x1982) x1977)
+(or (not x1982) x1978)
+(or (not x1982) x1979)
+(or (not x1982) x1980)
+(or (not x1982) x1981)
+(or x1983 (not x1982))
+(or x1983 (not x1969))
+(or x1982 x1969 (not x1983))
+(or x1984 x1985 x1986)
+(or (not x1986) (not x1984))
+(or (not x1986) (not x1985))
+(or x1987 x1890)
+(or x1987 x1889)
+(or x1987 (not x1988))
+(or x1987 (not x1989))
+(or x1987 (not x1986))
+(or (not x1890) (not x1889) x1988 x1989 x1986 (not x1987))
+(or (not x1990) (not x1987) x1991)
+(or (not x1991) x1990)
+(or (not x1991) x1987)
+(or x1992 (not x1984))
+(or x1992 (not x1993))
+(or x1984 x1993 (not x1992))
+(or (not x1985) (not x1992) x1994)
+(or (not x1994) x1985)
+(or (not x1994) x1992)
+(or x1995 (not x1994))
+(or x1995 (not x1991))
+(or x1994 x1991 (not x1995))
+(or x1996 (not x1890) (not x1889) (not x1997) (not x1998) x1993)
+(or (not x1993) (not x1996))
+(or (not x1993) x1890)
+(or (not x1993) x1889)
+(or (not x1993) x1997)
+(or (not x1993) x1998)
+(or (not x1984) x1996 (not x1890) (not x1889) (not x1997) (not x1998) x1999)
+(or (not x1999) x1984)
+(or (not x1999) (not x1996))
+(or (not x1999) x1890)
+(or (not x1999) x1889)
+(or (not x1999) x1997)
+(or (not x1999) x1998)
+(or x2000 x1890)
+(or x2000 x1889)
+(or x2000 (not x1988))
+(or x2000 (not x1989))
+(or x2000 x1984)
+(or (not x1890) (not x1889) x1988 x1989 (not x1984) (not x2000))
+(or x1990 (not x1996))
+(or x1990 x1890)
+(or x1990 x1889)
+(or x1990 (not x1988))
+(or x1990 (not x1989))
+(or x1996 (not x1890) (not x1889) x1988 x1989 (not x1990))
+(or (not x1990) (not x2000) x2001)
+(or (not x2001) x1990)
+(or (not x2001) x2000)
+(or x2002 (not x2001))
+(or x2002 (not x1999))
+(or x2001 x1999 (not x2002))
+(or x1940 (not x1943) x2003)
+(or (not x2003) (not x1940))
+(or (not x2003) x1943)
+(or x2004 (not x2005))
+(or x2004 x1971)
+(or x2004 x2006)
+(or x2004 (not x2003))
+(or x2005 (not x1971) (not x2006) x2003 (not x2004))
+(or (not x2007) (not x1970) (not x2004) x2008)
+(or (not x2008) x2007)
+(or (not x2008) x1970)
+(or (not x2008) x2004)
+(or x2009 (not x1940))
+(or x2009 x1943)
+(or x1940 (not x1943) (not x2009))
+(or (not x2010) (not x1971) (not x2006) (not x2009) x2011)
+(or (not x2011) x2010)
+(or (not x2011) x1971)
+(or (not x2011) x2006)
+(or (not x2011) x2009)
+(or x2012 (not x1954))
+(or x2012 (not x2011))
+(or x1954 x2011 (not x2012))
+(or (not x2012) (not x1970) x2013)
+(or (not x2013) x2012)
+(or (not x2013) x1970)
+(or x2014 (not x2013))
+(or x2014 (not x2008))
+(or x2013 x2008 (not x2014))
+(or x2015 (not x2016))
+(or x2015 x1996)
+(or x2016 (not x1996) (not x2015))
+(or (not x1940) (not x1890) (not x1889) (not x2017) (not x1942) (not x2018) (not x2019) x1996 x2020 x2021 x2022 x2023 x2024 (not x1940) x2025 x1972 x2026 x2027 x1933 x2028 x2029)
+(or (not x2029) x1940)
+(or (not x2029) x1890)
+(or (not x2029) x1889)
+(or (not x2029) x2017)
+(or (not x2029) x1942)
+(or (not x2029) x2018)
+(or (not x2029) x2019)
+(or (not x2029) (not x1996))
+(or (not x2029) (not x2020))
+(or (not x2029) (not x2021))
+(or (not x2029) (not x2022))
+(or (not x2029) (not x2023))
+(or (not x2029) (not x2024))
+(or (not x2029) x1940)
+(or (not x2029) (not x2025))
+(or (not x2029) (not x1972))
+(or (not x2029) (not x2026))
+(or (not x2029) (not x2027))
+(or (not x2029) (not x1933))
+(or (not x2029) (not x2028))
+(or (not x2030) (not x2031) (not x1890) (not x1889) (not x1996) x1940 x2020 x2021 x2022 x2023 x2025 x1972 x2026 x2027 x1933 x2028 x2032)
+(or (not x2032) x2030)
+(or (not x2032) x2031)
+(or (not x2032) x1890)
+(or (not x2032) x1889)
+(or (not x2032) x1996)
+(or (not x2032) (not x1940))
+(or (not x2032) (not x2020))
+(or (not x2032) (not x2021))
+(or (not x2032) (not x2022))
+(or (not x2032) (not x2023))
+(or (not x2032) (not x2025))
+(or (not x2032) (not x1972))
+(or (not x2032) (not x2026))
+(or (not x2032) (not x2027))
+(or (not x2032) (not x1933))
+(or (not x2032) (not x2028))
+(or x2033 (not x2032))
+(or x2033 (not x2029))
+(or x2032 x2029 (not x2033))
+(or x2020 x2022 x2023 (not x2021) x2025 x1972 x2026 x2027 x1933 x2028 x1996 x1940 x2034)
+(or (not x2034) (not x2020))
+(or (not x2034) (not x2022))
+(or (not x2034) (not x2023))
+(or (not x2034) x2021)
+(or (not x2034) (not x2025))
+(or (not x2034) (not x1972))
+(or (not x2034) (not x2026))
+(or (not x2034) (not x2027))
+(or (not x2034) (not x1933))
+(or (not x2034) (not x2028))
+(or (not x2034) (not x1996))
+(or (not x2034) (not x1940))
+(or (not x1960) x1959 x1958 x1957 (not x1933) x2028 x2025 x1940 x1996 x2026 x2027 (not x2035) (not x2036) x1972 x2020 x2021 x2022 x2023 x2037)
+(or (not x2037) x1960)
+(or (not x2037) (not x1959))
+(or (not x2037) (not x1958))
+(or (not x2037) (not x1957))
+(or (not x2037) x1933)
+(or (not x2037) (not x2028))
+(or (not x2037) (not x2025))
+(or (not x2037) (not x1940))
+(or (not x2037) (not x1996))
+(or (not x2037) (not x2026))
+(or (not x2037) (not x2027))
+(or (not x2037) x2035)
+(or (not x2037) x2036)
+(or (not x2037) (not x1972))
+(or (not x2037) (not x2020))
+(or (not x2037) (not x2021))
+(or (not x2037) (not x2022))
+(or (not x2037) (not x2023))
+(or x2038 (not x2037))
+(or x2038 (not x2034))
+(or x2037 x2034 (not x2038))
+(or (not x1890) (not x1889) (not x2039) (not x2038) x2040)
+(or (not x2040) x1890)
+(or (not x2040) x1889)
+(or (not x2040) x2039)
+(or (not x2040) x2038)
+(or (not x1890) (not x1889) (not x1996) x1940 x2020 x2021 x2022 x2023 x2025 x1972 x2026 x2027 x1933 x2028 (not x2041) (not x2042) (not x2043) (not x2044) (not x2045) (not x2006) x2046)
+(or (not x2046) x1890)
+(or (not x2046) x1889)
+(or (not x2046) x1996)
+(or (not x2046) (not x1940))
+(or (not x2046) (not x2020))
+(or (not x2046) (not x2021))
+(or (not x2046) (not x2022))
+(or (not x2046) (not x2023))
+(or (not x2046) (not x2025))
+(or (not x2046) (not x1972))
+(or (not x2046) (not x2026))
+(or (not x2046) (not x2027))
+(or (not x2046) (not x1933))
+(or (not x2046) (not x2028))
+(or (not x2046) x2041)
+(or (not x2046) x2042)
+(or (not x2046) x2043)
+(or (not x2046) x2044)
+(or (not x2046) x2045)
+(or (not x2046) x2006)
+(or (not x2039) x2021 x2022 x2023 x2025 x1972 x2026 x2027 x1933 x2028 x1996 x1940 x2047)
+(or (not x2047) x2039)
+(or (not x2047) (not x2021))
+(or (not x2047) (not x2022))
+(or (not x2047) (not x2023))
+(or (not x2047) (not x2025))
+(or (not x2047) (not x1972))
+(or (not x2047) (not x2026))
+(or (not x2047) (not x2027))
+(or (not x2047) (not x1933))
+(or (not x2047) (not x2028))
+(or (not x2047) (not x1996))
+(or (not x2047) (not x1940))
+(or x2048 (not x2049))
+(or x2048 (not x2047))
+(or x2049 x2047 (not x2048))
+(or (not x1890) (not x1889) (not x2020) (not x2048) x2050)
+(or (not x2050) x1890)
+(or (not x2050) x1889)
+(or (not x2050) x2020)
+(or (not x2050) x2048)
+(or x2025 x2026 (not x2027) (not x1890) (not x1889) x1933 x2028 x1996 x1940 x1972 x2020 x2021 x2022 x2023 x2051)
+(or (not x2051) (not x2025))
+(or (not x2051) (not x2026))
+(or (not x2051) x2027)
+(or (not x2051) x1890)
+(or (not x2051) x1889)
+(or (not x2051) (not x1933))
+(or (not x2051) (not x2028))
+(or (not x2051) (not x1996))
+(or (not x2051) (not x1940))
+(or (not x2051) (not x1972))
+(or (not x2051) (not x2020))
+(or (not x2051) (not x2021))
+(or (not x2051) (not x2022))
+(or (not x2051) (not x2023))
+(or x2052 (not x2051))
+(or x2052 (not x2050))
+(or x2051 x2050 (not x2052))
+(or x2053 x2021)
+(or x2053 x2028)
+(or (not x2021) (not x2028) (not x2053))
+(or x2054 (not x2021))
+(or x2054 (not x2039))
+(or x2054 (not x1933))
+(or x2021 x2039 x1933 (not x2054))
+(or x2028 x2021 (not x2055) x2056)
+(or (not x2056) (not x2028))
+(or (not x2056) (not x2021))
+(or (not x2056) x2055)
+(or x2057 x1933)
+(or x2057 (not x2056))
+(or (not x1933) x2056 (not x2057))
+(or x2058 x2039)
+(or x2058 (not x1933))
+(or x2058 (not x2028))
+(or (not x2039) x1933 x2028 (not x2058))
+(or (not x1890) (not x1889) x1972 x2020 x2025 x1940 x1996 x2026 x2027 x2022 x2023 (not x2058) (not x2057) (not x2054) (not x2053) x2059)
+(or (not x2059) x1890)
+(or (not x2059) x1889)
+(or (not x2059) (not x1972))
+(or (not x2059) (not x2020))
+(or (not x2059) (not x2025))
+(or (not x2059) (not x1940))
+(or (not x2059) (not x1996))
+(or (not x2059) (not x2026))
+(or (not x2059) (not x2027))
+(or (not x2059) (not x2022))
+(or (not x2059) (not x2023))
+(or (not x2059) x2058)
+(or (not x2059) x2057)
+(or (not x2059) x2054)
+(or (not x2059) x2053)
+(or (not x1890) (not x1889) (not x2060) x2061)
+(or (not x2061) x1890)
+(or (not x2061) x1889)
+(or (not x2061) x2060)
+(or x1981 (not x2062))
+(or x1981 (not x2063))
+(or x2062 x2063 (not x1981))
+(or x2064 (not x2065))
+(or x2064 x2022)
+(or x2065 (not x2022) (not x2064))
+(or x2066 (not x1933))
+(or x2066 (not x2022))
+(or x2066 (not x2020))
+(or x2066 (not x2021))
+(or x1933 x2022 x2020 x2021 (not x2066))
+(or x2067 x2021)
+(or x2067 x2020)
+(or (not x2021) (not x2020) (not x2067))
+(or x2023 (not x2067) (not x2066) (not x2064) x2068)
+(or (not x2068) (not x2023))
+(or (not x2068) x2067)
+(or (not x2068) x2066)
+(or (not x2068) x2064)
+(or x1980 (not x2028))
+(or x1980 (not x2025))
+(or x1980 (not x1940))
+(or x1980 (not x1996))
+(or x1980 (not x2026))
+(or x1980 (not x2027))
+(or x1980 (not x2068))
+(or x2028 x2025 x1940 x1996 x2026 x2027 x2068 (not x1980))
+(or x1979 x2027)
+(or x1979 x2026)
+(or (not x2027) (not x2026) (not x1979))
+(or x1978 (not x2069))
+(or x1978 x2028)
+(or x2069 (not x2028) (not x1978))
+(or x1977 x1940)
+(or x1977 (not x2070))
+(or (not x1940) x2070 (not x1977))
+(or (not x1960) x1959 x1958 x1957 x2039 x2071)
+(or (not x2071) x1960)
+(or (not x2071) (not x1959))
+(or (not x2071) (not x1958))
+(or (not x2071) (not x1957))
+(or (not x2071) (not x2039))
+(or (not x1960) x1959 x1958 x1957 (not x2039) (not x1955) x2072)
+(or (not x2072) x1960)
+(or (not x2072) (not x1959))
+(or (not x2072) (not x1958))
+(or (not x2072) (not x1957))
+(or (not x2072) x2039)
+(or (not x2072) x1955)
+(or x2055 (not x2072))
+(or x2055 (not x2071))
+(or x2072 x2071 (not x2055))
+(or (not x1960) x1959 x1958 x1957 (not x2039) x2073)
+(or (not x2073) x1960)
+(or (not x2073) (not x1959))
+(or (not x2073) (not x1958))
+(or (not x2073) (not x1957))
+(or (not x2073) x2039)
+(or x2074 (not x2073))
+(or x2074 (not x2072))
+(or x2074 (not x2071))
+(or x2073 x2072 x2071 (not x2074))
+(or x2022 x2020 x2021 x2028 x2025 x1940 x1996 x2026 x2027 (not x2074) x2075)
+(or (not x2075) (not x2022))
+(or (not x2075) (not x2020))
+(or (not x2075) (not x2021))
+(or (not x2075) (not x2028))
+(or (not x2075) (not x2025))
+(or (not x2075) (not x1940))
+(or (not x2075) (not x1996))
+(or (not x2075) (not x2026))
+(or (not x2075) (not x2027))
+(or (not x2075) x2074)
+(or x1976 x1933)
+(or x1976 (not x2075))
+(or (not x1933) x2075 (not x1976))
+(or x1975 (not x2076))
+(or x1975 x1996)
+(or x2076 (not x1996) (not x1975))
+(or x1974 (not x2077))
+(or x1974 x2025)
+(or x2077 (not x2025) (not x1974))
+(or x1973 x2024)
+(or x1973 x1940)
+(or (not x2024) (not x1940) (not x1973))
+(or (not x2006) (not x1890) (not x1889) x1972 (not x1973) (not x1974) (not x1975) (not x1976) (not x1977) (not x1978) (not x1979) (not x1980) (not x1981) (not x2078) (not x2043) (not x2079) (not x2080) (not x2045) (not x2081) (not x1970) x2082)
+(or (not x2082) x2006)
+(or (not x2082) x1890)
+(or (not x2082) x1889)
+(or (not x2082) (not x1972))
+(or (not x2082) x1973)
+(or (not x2082) x1974)
+(or (not x2082) x1975)
+(or (not x2082) x1976)
+(or (not x2082) x1977)
+(or (not x2082) x1978)
+(or (not x2082) x1979)
+(or (not x2082) x1980)
+(or (not x2082) x1981)
+(or (not x2082) x2078)
+(or (not x2082) x2043)
+(or (not x2082) x2079)
+(or (not x2082) x2080)
+(or (not x2082) x2045)
+(or (not x2082) x2081)
+(or (not x2082) x1970)
+(or x2083 x1890)
+(or x2083 x1889)
+(or x2083 (not x1972))
+(or x2083 (not x2084))
+(or x2083 (not x2085))
+(or x2083 (not x2086))
+(or x2083 (not x2087))
+(or x2083 (not x2088))
+(or x2083 (not x2089))
+(or x2083 (not x2090))
+(or x2083 (not x2091))
+(or x2083 (not x2092))
+(or x2083 (not x2093))
+(or x2083 (not x2094))
+(or x2083 (not x2095))
+(or x2083 (not x2096))
+(or x2083 (not x2097))
+(or x2083 (not x2098))
+(or x2083 (not x1954))
+(or (not x1890) (not x1889) x1972 x2084 x2085 x2086 x2087 x2088 x2089 x2090 x2091 x2092 x2093 x2094 x2095 x2096 x2097 x2098 x1954 (not x2083))
+(or x2099 x1890)
+(or x2099 x1889)
+(or x2099 (not x1972))
+(or x2099 (not x2084))
+(or x2099 (not x2085))
+(or x2099 (not x2086))
+(or x2099 (not x2087))
+(or x2099 (not x2088))
+(or x2099 (not x2089))
+(or x2099 (not x2090))
+(or x2099 (not x2091))
+(or x2099 (not x2092))
+(or x2099 (not x2093))
+(or x2099 (not x2094))
+(or x2099 (not x2095))
+(or x2099 (not x2096))
+(or x2099 (not x2097))
+(or x2099 (not x2098))
+(or x2099 x1968)
+(or (not x1890) (not x1889) x1972 x2084 x2085 x2086 x2087 x2088 x2089 x2090 x2091 x2092 x2093 x2094 x2095 x2096 x2097 x2098 (not x1968) (not x2099))
+(or (not x2099) (not x2083) x2100)
+(or (not x2100) x2099)
+(or (not x2100) x2083)
+(or x2101 (not x2100))
+(or x2101 (not x2082))
+(or x2100 x2082 (not x2101))
+(or (not x1970) (not x2102) x2103)
+(or (not x2103) x1970)
+(or (not x2103) x2102)
+(or (not x1960) x1959 x1958 x1957 (not x2104) x2105)
+(or (not x2105) x1960)
+(or (not x2105) (not x1959))
+(or (not x2105) (not x1958))
+(or (not x2105) (not x1957))
+(or (not x2105) x2104)
+(or x2106 (not x2105))
+(or x2106 (not x2103))
+(or x2105 x2103 (not x2106))
+(or (not x1970) (not x2107) x2108)
+(or (not x2108) x1970)
+(or (not x2108) x2107)
+(or x2109 (not x1954))
+(or x2109 (not x2108))
+(or x1954 x2108 (not x2109))
+(or x2026 x2027 (not x2025) (not x1890) (not x1889) x1933 x2028 x1996 x1940 x1972 x2020 x2021 x2022 x2023 x2110)
+(or (not x2110) (not x2026))
+(or (not x2110) (not x2027))
+(or (not x2110) x2025)
+(or (not x2110) x1890)
+(or (not x2110) x1889)
+(or (not x2110) (not x1933))
+(or (not x2110) (not x2028))
+(or (not x2110) (not x1996))
+(or (not x2110) (not x1940))
+(or (not x2110) (not x1972))
+(or (not x2110) (not x2020))
+(or (not x2110) (not x2021))
+(or (not x2110) (not x2022))
+(or (not x2110) (not x2023))
+(or (not x2042) (not x2043) (not x2044) (not x2045) x2111)
+(or (not x2111) x2042)
+(or (not x2111) x2043)
+(or (not x2111) x2044)
+(or (not x2111) x2045)
+(or x2112 (not x2113))
+(or x2112 (not x2114))
+(or x2112 (not x2095))
+(or x2112 (not x2094))
+(or x2112 (not x2115))
+(or x2112 (not x2116))
+(or x2112 (not x2098))
+(or x2112 (not x2097))
+(or x2112 (not x1984))
+(or x2112 (not x1985))
+(or x2113 x2114 x2095 x2094 x2115 x2116 x2098 x2097 x1984 x1985 (not x2112))
+(or (not x2078) (not x2043) (not x2079) (not x2080) (not x2045) (not x2081) x2016)
+(or (not x2016) x2078)
+(or (not x2016) x2043)
+(or (not x2016) x2079)
+(or (not x2016) x2080)
+(or (not x2016) x2045)
+(or (not x2016) x2081)
+(or x2030 (not x2016))
+(or x2030 (not x2114))
+(or x2030 (not x2094))
+(or x2030 (not x2116))
+(or x2030 (not x2097))
+(or x2030 x2006)
+(or x2016 x2114 x2094 x2116 x2097 (not x2006) (not x2030))
+(or (not x2030) (not x2112) (not x2042) (not x2043) (not x2044) (not x2045) x1940 x2020 x2021 x2022 x2023 x2025 x1972 x2026 x2027 x1933 x2028 x2117)
+(or (not x2117) x2030)
+(or (not x2117) x2112)
+(or (not x2117) x2042)
+(or (not x2117) x2043)
+(or (not x2117) x2044)
+(or (not x2117) x2045)
+(or (not x2117) (not x1940))
+(or (not x2117) (not x2020))
+(or (not x2117) (not x2021))
+(or (not x2117) (not x2022))
+(or (not x2117) (not x2023))
+(or (not x2117) (not x2025))
+(or (not x2117) (not x1972))
+(or (not x2117) (not x2026))
+(or (not x2117) (not x2027))
+(or (not x2117) (not x1933))
+(or (not x2117) (not x2028))
+(or x2017 (not x1943))
+(or x2017 (not x1941))
+(or x2017 (not x1942))
+(or x2017 x1971)
+(or x2017 x2007)
+(or x1943 x1941 x1942 (not x1971) (not x2007) (not x2017))
+(or (not x2017) (not x1942) (not x2018) (not x2019) x1996 x2020 x2021 x2022 x2023 x2024 (not x1940) x2025 x1972 x2026 x2027 x1933 x2028 x2049)
+(or (not x2049) x2017)
+(or (not x2049) x1942)
+(or (not x2049) x2018)
+(or (not x2049) x2019)
+(or (not x2049) (not x1996))
+(or (not x2049) (not x2020))
+(or (not x2049) (not x2021))
+(or (not x2049) (not x2022))
+(or (not x2049) (not x2023))
+(or (not x2049) (not x2024))
+(or (not x2049) x1940)
+(or (not x2049) (not x2025))
+(or (not x2049) (not x1972))
+(or (not x2049) (not x2026))
+(or (not x2049) (not x2027))
+(or (not x2049) (not x1933))
+(or (not x2049) (not x2028))
+(or x2118 (not x2049))
+(or x2118 (not x2117))
+(or x2049 x2117 (not x2118))
+(or (not x1890) (not x1889) (not x1996) (not x2118) x2119)
+(or (not x2119) x1890)
+(or (not x2119) x1889)
+(or (not x2119) x1996)
+(or (not x2119) x2118)
+(or x2120 (not x2119))
+(or x2120 (not x2110))
+(or x2119 x2110 (not x2120))
+(or (not x2121) (not x2122) x2092)
+(or (not x2092) x2121)
+(or (not x2092) x2122)
+(or (not x2123) (not x2022) x2124)
+(or (not x2124) x2123)
+(or (not x2124) x2022)
+(or x1933 x2022 x2020 x2021 x2125)
+(or (not x2125) (not x1933))
+(or (not x2125) (not x2022))
+(or (not x2125) (not x2020))
+(or (not x2125) (not x2021))
+(or (not x2021) (not x2020) x2126)
+(or (not x2126) x2021)
+(or (not x2126) x2020)
+(or x2127 (not x2023))
+(or x2127 (not x2126))
+(or x2127 (not x2125))
+(or x2127 (not x2124))
+(or x2023 x2126 x2125 x2124 (not x2127))
+(or x2028 x2025 x1940 x1996 x2026 x2027 x2063)
+(or (not x2063) (not x2028))
+(or (not x2063) (not x2025))
+(or (not x2063) (not x1940))
+(or (not x2063) (not x1996))
+(or (not x2063) (not x2026))
+(or (not x2063) (not x2027))
+(or x2028 x2025 x1940 x1996 x2026 x2027 (not x2127) x2091)
+(or (not x2091) (not x2028))
+(or (not x2091) (not x2025))
+(or (not x2091) (not x1940))
+(or (not x2091) (not x1996))
+(or (not x2091) (not x2026))
+(or (not x2091) (not x2027))
+(or (not x2091) x2127)
+(or (not x2027) (not x2026) x2090)
+(or (not x2090) x2027)
+(or (not x2090) x2026)
+(or (not x2128) (not x2028) x2089)
+(or (not x2089) x2128)
+(or (not x2089) x2028)
+(or (not x1940) (not x2129) x2088)
+(or (not x2088) x1940)
+(or (not x2088) x2129)
+(or x2036 x1960)
+(or x2036 (not x1959))
+(or x2036 (not x1958))
+(or x2036 (not x1957))
+(or x2036 (not x2039))
+(or (not x1960) x1959 x1958 x1957 x2039 (not x2036))
+(or x2035 x1960)
+(or x2035 (not x1959))
+(or x2035 (not x1958))
+(or x2035 (not x1957))
+(or x2035 x2039)
+(or x2035 x1955)
+(or (not x1960) x1959 x1958 x1957 (not x2039) (not x1955) (not x2035))
+(or x2130 x1960)
+(or x2130 (not x1959))
+(or x2130 (not x1958))
+(or x2130 (not x1957))
+(or x2130 x2039)
+(or (not x1960) x1959 x1958 x1957 (not x2039) (not x2130))
+(or (not x2130) (not x2035) (not x2036) x2131)
+(or (not x2131) x2130)
+(or (not x2131) x2035)
+(or (not x2131) x2036)
+(or x2122 (not x2028))
+(or x2122 (not x2025))
+(or x2122 (not x1940))
+(or x2122 (not x1996))
+(or x2122 (not x2026))
+(or x2122 (not x2027))
+(or x2028 x2025 x1940 x1996 x2026 x2027 (not x2122))
+(or x2132 (not x2022))
+(or x2132 (not x2020))
+(or x2132 (not x2021))
+(or x2132 (not x2028))
+(or x2132 (not x2025))
+(or x2132 (not x1940))
+(or x2132 (not x1996))
+(or x2132 (not x2026))
+(or x2132 (not x2027))
+(or x2132 (not x2131))
+(or x2022 x2020 x2021 x2028 x2025 x1940 x1996 x2026 x2027 x2131 (not x2132))
+(or (not x1933) (not x2132) x2087)
+(or (not x2087) x1933)
+(or (not x2087) x2132)
+(or (not x2133) (not x1996) x2086)
+(or (not x2086) x2133)
+(or (not x2086) x1996)
+(or (not x2134) (not x2025) x2085)
+(or (not x2085) x2134)
+(or (not x2085) x2025)
+(or (not x2024) (not x1940) x2084)
+(or (not x2084) x2024)
+(or (not x2084) x1940)
+(or x2135 x1890)
+(or x2135 x1889)
+(or x2135 (not x1972))
+(or x2135 (not x2084))
+(or x2135 (not x2085))
+(or x2135 (not x2086))
+(or x2135 (not x2087))
+(or x2135 (not x2088))
+(or x2135 (not x2089))
+(or x2135 (not x2090))
+(or x2135 (not x2091))
+(or x2135 (not x2092))
+(or (not x1890) (not x1889) x1972 x2084 x2085 x2086 x2087 x2088 x2089 x2090 x2091 x2092 (not x2135))
+(or x2023 (not x1890) (not x1889) x2020 x2021 (not x2022) x2025 x1972 x2026 x2027 x1933 x2028 x1996 x1940 x2136)
+(or (not x2136) (not x2023))
+(or (not x2136) x1890)
+(or (not x2136) x1889)
+(or (not x2136) (not x2020))
+(or (not x2136) (not x2021))
+(or (not x2136) x2022)
+(or (not x2136) (not x2025))
+(or (not x2136) (not x1972))
+(or (not x2136) (not x2026))
+(or (not x2136) (not x2027))
+(or (not x2136) (not x1933))
+(or (not x2136) (not x2028))
+(or (not x2136) (not x1996))
+(or (not x2136) (not x1940))
+(or x2018 (not x2007))
+(or x2018 (not x1943))
+(or x2018 (not x1941))
+(or x2018 (not x1942))
+(or x2018 x1971)
+(or x2007 x1943 x1941 x1942 (not x1971) (not x2018))
+(or x1943 x1941 x1942 (not x1971) (not x2007) x2137)
+(or (not x2137) (not x1943))
+(or (not x2137) (not x1941))
+(or (not x2137) (not x1942))
+(or (not x2137) x1971)
+(or (not x2137) x2007)
+(or x2138 (not x2137))
+(or x2138 x1942)
+(or x2137 (not x1942) (not x2138))
+(or (not x1890) (not x1889) (not x2138) (not x2018) (not x2019) x1996 x2020 x2021 x2022 x2023 x2024 (not x1940) x2025 x1972 x2026 x2027 x1933 x2028 x2139)
+(or (not x2139) x1890)
+(or (not x2139) x1889)
+(or (not x2139) x2138)
+(or (not x2139) x2018)
+(or (not x2139) x2019)
+(or (not x2139) (not x1996))
+(or (not x2139) (not x2020))
+(or (not x2139) (not x2021))
+(or (not x2139) (not x2022))
+(or (not x2139) (not x2023))
+(or (not x2139) (not x2024))
+(or (not x2139) x1940)
+(or (not x2139) (not x2025))
+(or (not x2139) (not x1972))
+(or (not x2139) (not x2026))
+(or (not x2139) (not x2027))
+(or (not x2139) (not x1933))
+(or (not x2139) (not x2028))
+(or x2025 x2027 (not x2026) (not x1890) (not x1889) x1933 x2028 x1996 x1940 x1972 x2020 x2021 x2022 x2023 x2140)
+(or (not x2140) (not x2025))
+(or (not x2140) (not x2027))
+(or (not x2140) x2026)
+(or (not x2140) x1890)
+(or (not x2140) x1889)
+(or (not x2140) (not x1933))
+(or (not x2140) (not x2028))
+(or (not x2140) (not x1996))
+(or (not x2140) (not x1940))
+(or (not x2140) (not x1972))
+(or (not x2140) (not x2020))
+(or (not x2140) (not x2021))
+(or (not x2140) (not x2022))
+(or (not x2140) (not x2023))
+(or x1950 x1932 x1947)
+(or (not x1947) (not x1950))
+(or (not x1947) (not x1932))
+(or x2019 (not x1947))
+(or x2019 (not x1941))
+(or x2019 (not x1942))
+(or x2019 x1943)
+(or x1947 x1941 x1942 (not x1943) (not x2019))
+(or (not x2019) x2007 x1943 x1941 x1942 (not x1971) x2141)
+(or (not x2141) x2019)
+(or (not x2141) (not x2007))
+(or (not x2141) (not x1943))
+(or (not x2141) (not x1941))
+(or (not x2141) (not x1942))
+(or (not x2141) x1971)
+(or x1939 (not x1950))
+(or x1939 (not x1932))
+(or x1950 x1932 (not x1939))
+(or (not x1939) x1941 x1942 (not x1943) x2142)
+(or (not x2142) x1939)
+(or (not x2142) (not x1941))
+(or (not x2142) (not x1942))
+(or (not x2142) x1943)
+(or x2143 (not x2142))
+(or x2143 (not x2141))
+(or x2142 x2141 (not x2143))
+(or (not x1890) (not x1889) x1996 x2020 x2021 x2022 x2023 x2024 (not x1940) x2025 x1972 x2026 x2027 x1933 x2028 (not x2143) x2144)
+(or (not x2144) x1890)
+(or (not x2144) x1889)
+(or (not x2144) (not x1996))
+(or (not x2144) (not x2020))
+(or (not x2144) (not x2021))
+(or (not x2144) (not x2022))
+(or (not x2144) (not x2023))
+(or (not x2144) (not x2024))
+(or (not x2144) x1940)
+(or (not x2144) (not x2025))
+(or (not x2144) (not x1972))
+(or (not x2144) (not x2026))
+(or (not x2144) (not x2027))
+(or (not x2144) (not x1933))
+(or (not x2144) (not x2028))
+(or (not x2144) x2143)
+(or x2145 (not x2146))
+(or x2145 (not x2147))
+(or x2145 (not x2148))
+(or x2145 (not x2149))
+(or x2145 (not x2151))
+(or x2146 x2147 x2148 x2149 x2151 (not x2145))
+(or x2152 (not x2151))
+(or x2152 (not x2150))
+(or x2152 x51)
+(or x2152 (not x52))
+(or x2152 x1890)
+(or x2152 x1889)
+(or x2151 x2150 (not x51) x52 (not x1890) (not x1889) (not x2152))
+(or (not x2152) (not x2153) (not x2145) x2154)
+(or (not x2154) x2152)
+(or (not x2154) x2153)
+(or (not x2154) x2145)
+(or x2155 (not x2146))
+(or x2155 (not x2147))
+(or x2155 (not x2148))
+(or x2155 (not x2149))
+(or x2155 (not x2150))
+(or x2146 x2147 x2148 x2149 x2150 (not x2155))
+(or x2153 (not x2146))
+(or x2153 (not x2147))
+(or x2153 (not x2148))
+(or x2153 x2151)
+(or x2153 x2150)
+(or x2146 x2147 x2148 (not x2151) (not x2150) (not x2153))
+(or x2151 x2150 (not x51) x52 (not x1890) (not x1889) x2146)
+(or (not x2146) (not x2151))
+(or (not x2146) (not x2150))
+(or (not x2146) x51)
+(or (not x2146) (not x52))
+(or (not x2146) x1890)
+(or (not x2146) x1889)
+(or x2156 (not x2146))
+(or x2156 (not x2151))
+(or x2156 x2150)
+(or x2146 x2151 (not x2150) (not x2156))
+(or (not x2156) (not x2153) (not x2155) x2157)
+(or (not x2157) x2156)
+(or (not x2157) x2153)
+(or (not x2157) x2155)
+(or x2158 (not x2159))
+(or x2158 (not x2160))
+(or x2158 (not x2161))
+(or x2158 (not x2162))
+(or x2158 (not x2164))
+(or x2159 x2160 x2161 x2162 x2164 (not x2158))
+(or x2165 (not x2164))
+(or x2165 (not x2163))
+(or x2165 x51)
+(or x2165 (not x52))
+(or x2165 x1890)
+(or x2165 x1889)
+(or x2164 x2163 (not x51) x52 (not x1890) (not x1889) (not x2165))
+(or (not x2165) (not x2166) (not x2158) x2167)
+(or (not x2167) x2165)
+(or (not x2167) x2166)
+(or (not x2167) x2158)
+(or x2168 (not x2159))
+(or x2168 (not x2160))
+(or x2168 (not x2161))
+(or x2168 (not x2162))
+(or x2168 (not x2163))
+(or x2159 x2160 x2161 x2162 x2163 (not x2168))
+(or x2166 (not x2159))
+(or x2166 (not x2160))
+(or x2166 (not x2161))
+(or x2166 x2164)
+(or x2166 x2163)
+(or x2159 x2160 x2161 (not x2164) (not x2163) (not x2166))
+(or x2164 x2163 (not x51) x52 (not x1890) (not x1889) x2159)
+(or (not x2159) (not x2164))
+(or (not x2159) (not x2163))
+(or (not x2159) x51)
+(or (not x2159) (not x52))
+(or (not x2159) x1890)
+(or (not x2159) x1889)
+(or x2169 (not x2159))
+(or x2169 (not x2164))
+(or x2169 x2163)
+(or x2159 x2164 (not x2163) (not x2169))
+(or (not x2169) (not x2166) (not x2168) x2170)
+(or (not x2170) x2169)
+(or (not x2170) x2166)
+(or (not x2170) x2168)
+(or x2171 (not x2006))
+(or x2171 (not x2172))
+(or x2171 (not x2173))
+(or x2171 (not x2114))
+(or x2171 (not x2094))
+(or x2171 (not x2116))
+(or x2171 (not x2097))
+(or x2171 (not x2093))
+(or x2171 (not x2094))
+(or x2171 (not x2095))
+(or x2171 (not x2096))
+(or x2171 (not x2097))
+(or x2171 (not x2098))
+(or x2006 x2172 x2173 x2114 x2094 x2116 x2097 x2093 x2094 x2095 x2096 x2097 x2098 (not x2171))
+(or (not x1997) (not x1998) (not x2171) x2174)
+(or (not x2174) x1997)
+(or (not x2174) x1998)
+(or (not x2174) x2171)
+(or x2175 (not x1890))
+(or x2175 (not x1889))
+(or x1890 x1889 (not x2175))
+(or x1890 x1889 x2176)
+(or (not x2176) (not x1890))
+(or (not x2176) (not x1889))
+(or x2177 (not x2176))
+(or x2177 (not x1890))
+(or x2177 x1889)
+(or x2176 x1890 (not x1889) (not x2177))
+(or x2178 (not x2179))
+(or x2178 (not x2180))
+(or x2178 (not x2181))
+(or x2178 (not x2182))
+(or x2178 (not x2183))
+(or x2178 (not x2184))
+(or x2178 (not x2115))
+(or x2178 (not x2185))
+(or x2178 (not x2186))
+(or x2178 (not x2187))
+(or x2178 (not x2188))
+(or x2178 (not x2192))
+(or x2179 x2180 x2181 x2182 x2183 x2184 x2115 x2185 x2186 x2187 x2188 x2192 (not x2178))
+(or (not x2193) (not x2194) (not x2195) (not x2196) (not x2197) (not x2198) (not x2199) (not x2200) (not x2201) (not x2202) (not x2203) (not x2178) x2204)
+(or (not x2204) x2193)
+(or (not x2204) x2194)
+(or (not x2204) x2195)
+(or (not x2204) x2196)
+(or (not x2204) x2197)
+(or (not x2204) x2198)
+(or (not x2204) x2199)
+(or (not x2204) x2200)
+(or (not x2204) x2201)
+(or (not x2204) x2202)
+(or (not x2204) x2203)
+(or (not x2204) x2178)
+(or x2205 (not x2179))
+(or x2205 (not x2180))
+(or x2205 (not x2181))
+(or x2205 (not x2182))
+(or x2205 (not x2183))
+(or x2205 (not x2184))
+(or x2205 (not x2115))
+(or x2205 (not x2185))
+(or x2205 (not x2186))
+(or x2205 (not x2187))
+(or x2205 (not x2188))
+(or x2205 (not x2191))
+(or x2179 x2180 x2181 x2182 x2183 x2184 x2115 x2185 x2186 x2187 x2188 x2191 (not x2205))
+(or x2206 x2207)
+(or x2206 (not x2208))
+(or (not x2207) x2208 (not x2206))
+(or (not x2206) (not x2207) x2209)
+(or (not x2209) x2206)
+(or (not x2209) x2207)
+(or x2210 (not x2179))
+(or x2210 (not x2180))
+(or x2210 (not x2181))
+(or x2210 (not x2182))
+(or x2210 (not x2183))
+(or x2210 (not x2184))
+(or x2210 (not x2115))
+(or x2210 (not x2185))
+(or x2210 (not x2192))
+(or x2210 (not x2191))
+(or x2210 (not x2190))
+(or x2210 x2189)
+(or x2210 (not x53))
+(or x2210 (not x52))
+(or x2210 (not x2209))
+(or x2179 x2180 x2181 x2182 x2183 x2184 x2115 x2185 x2192 x2191 x2190 (not x2189) x53 x52 x2209 (not x2210))
+(or x2211 (not x2179))
+(or x2211 (not x2180))
+(or x2211 (not x2181))
+(or x2211 (not x2182))
+(or x2211 (not x2183))
+(or x2211 (not x2184))
+(or x2211 (not x2192))
+(or x2211 (not x2191))
+(or x2211 x2190)
+(or x2211 x2189)
+(or x2211 x2212)
+(or x2211 x2213)
+(or x2211 x2214)
+(or x2179 x2180 x2181 x2182 x2183 x2184 x2192 x2191 (not x2190) (not x2189) (not x2212) (not x2213) (not x2214) (not x2211))
+(or x2215 (not x2179))
+(or x2215 (not x2180))
+(or x2215 (not x2181))
+(or x2215 (not x2182))
+(or x2215 (not x2192))
+(or x2215 (not x2191))
+(or x2215 x2190)
+(or x2215 (not x2189))
+(or x2215 (not x2216))
+(or x2215 x2217)
+(or x2215 x2218)
+(or x2179 x2180 x2181 x2182 x2192 x2191 (not x2190) x2189 x2216 (not x2217) (not x2218) (not x2215))
+(or x2219 (not x2179))
+(or x2219 (not x2192))
+(or x2219 (not x2191))
+(or x2219 (not x2190))
+(or x2219 (not x2189))
+(or x2219 (not x52))
+(or x2219 x1890)
+(or x2219 x1889)
+(or x2219 (not x2216))
+(or x2219 (not x2220))
+(or x2219 (not x2221))
+(or x2219 x2222)
+(or x2179 x2192 x2191 x2190 x2189 x52 (not x1890) (not x1889) x2216 x2220 x2221 (not x2222) (not x2219))
+(or x2223 x2224)
+(or x2223 x2225)
+(or x2223 x2226)
+(or (not x2224) (not x2225) (not x2226) (not x2223))
+(or (not x2223) (not x2224) x2227)
+(or (not x2227) x2223)
+(or (not x2227) x2224)
+(or x2228 x2229)
+(or x2228 (not x2227))
+(or (not x2229) x2227 (not x2228))
+(or (not x2228) (not x2229) x2230)
+(or (not x2230) x2228)
+(or (not x2230) x2229)
+(or x2231 (not x2192))
+(or x2231 (not x2191))
+(or x2231 (not x2190))
+(or x2231 (not x2189))
+(or x2231 (not x52))
+(or x2231 x1890)
+(or x2231 x1889)
+(or x2231 (not x2216))
+(or x2231 (not x2232))
+(or x2231 (not x2230))
+(or x2192 x2191 x2190 x2189 x52 (not x1890) (not x1889) x2216 x2232 x2230 (not x2231))
+(or (not x2231) (not x2219) (not x2195) (not x2196) (not x2215) (not x2198) (not x2211) (not x2200) (not x2210) (not x2203) (not x2205) x2233)
+(or (not x2233) x2231)
+(or (not x2233) x2219)
+(or (not x2233) x2195)
+(or (not x2233) x2196)
+(or (not x2233) x2215)
+(or (not x2233) x2198)
+(or (not x2233) x2211)
+(or (not x2233) x2200)
+(or (not x2233) x2210)
+(or (not x2233) x2203)
+(or (not x2233) x2205)
+(or x2234 (not x2179))
+(or x2234 (not x2180))
+(or x2234 (not x2181))
+(or x2234 (not x2182))
+(or x2234 (not x2183))
+(or x2234 (not x2184))
+(or x2234 (not x2115))
+(or x2234 (not x2185))
+(or x2234 (not x2186))
+(or x2234 (not x2187))
+(or x2234 (not x2188))
+(or x2234 (not x2190))
+(or x2179 x2180 x2181 x2182 x2183 x2184 x2115 x2185 x2186 x2187 x2188 x2190 (not x2234))
+(or x2202 (not x2179))
+(or x2202 (not x2180))
+(or x2202 (not x2181))
+(or x2202 (not x2182))
+(or x2202 (not x2183))
+(or x2202 (not x2184))
+(or x2202 (not x2115))
+(or x2202 (not x2185))
+(or x2202 (not x2186))
+(or x2202 (not x2192))
+(or x2202 x2191)
+(or x2202 x2190)
+(or x2202 (not x2189))
+(or x2202 (not x53))
+(or x2202 (not x52))
+(or x2179 x2180 x2181 x2182 x2183 x2184 x2115 x2185 x2186 x2192 (not x2191) (not x2190) x2189 x53 x52 (not x2202))
+(or x2235 x2208)
+(or x2235 x2236)
+(or (not x2208) (not x2236) (not x2235))
+(or (not x2235) (not x2208) x2237)
+(or (not x2237) x2235)
+(or (not x2237) x2208)
+(or x2238 (not x2179))
+(or x2238 (not x2180))
+(or x2238 (not x2181))
+(or x2238 (not x2182))
+(or x2238 (not x2183))
+(or x2238 (not x2184))
+(or x2238 (not x2115))
+(or x2238 (not x2185))
+(or x2238 (not x2192))
+(or x2238 (not x2191))
+(or x2238 (not x2190))
+(or x2238 x2189)
+(or x2238 (not x53))
+(or x2238 (not x52))
+(or x2238 x2207)
+(or x2238 (not x2237))
+(or x2179 x2180 x2181 x2182 x2183 x2184 x2115 x2185 x2192 x2191 x2190 (not x2189) x53 x52 (not x2207) x2237 (not x2238))
+(or x2239 x2214)
+(or x2239 (not x2240))
+(or (not x2214) x2240 (not x2239))
+(or (not x2239) (not x2214) x2241)
+(or (not x2241) x2239)
+(or (not x2241) x2214)
+(or x2242 x2212)
+(or x2242 x2213)
+(or x2242 (not x2241))
+(or (not x2212) (not x2213) x2241 (not x2242))
+(or (not x2242) (not x2212) x2243)
+(or (not x2243) x2242)
+(or (not x2243) x2212)
+(or x2244 (not x2179))
+(or x2244 (not x2180))
+(or x2244 (not x2181))
+(or x2244 (not x2182))
+(or x2244 (not x2183))
+(or x2244 (not x2184))
+(or x2244 (not x2192))
+(or x2244 (not x2191))
+(or x2244 x2190)
+(or x2244 x2189)
+(or x2244 (not x2243))
+(or x2179 x2180 x2181 x2182 x2183 x2184 x2192 x2191 (not x2190) (not x2189) x2243 (not x2244))
+(or x2245 x2218)
+(or x2245 (not x2246))
+(or (not x2218) x2246 (not x2245))
+(or (not x2245) (not x2218) x2247)
+(or (not x2247) x2245)
+(or (not x2247) x2218)
+(or x2248 (not x2179))
+(or x2248 (not x2180))
+(or x2248 (not x2181))
+(or x2248 (not x2182))
+(or x2248 (not x2192))
+(or x2248 (not x2191))
+(or x2248 x2190)
+(or x2248 (not x2189))
+(or x2248 (not x2216))
+(or x2248 x2217)
+(or x2248 (not x2247))
+(or x2179 x2180 x2181 x2182 x2192 x2191 (not x2190) x2189 x2216 (not x2217) x2247 (not x2248))
+(or x2249 (not x2179))
+(or x2249 (not x2192))
+(or x2249 (not x2191))
+(or x2249 (not x2190))
+(or x2249 (not x2189))
+(or x2249 (not x52))
+(or x2249 x1890)
+(or x2249 x1889)
+(or x2249 (not x2216))
+(or x2249 (not x2220))
+(or x2249 (not x2221))
+(or x2249 (not x2222))
+(or x2179 x2192 x2191 x2190 x2189 x52 (not x1890) (not x1889) x2216 x2220 x2221 x2222 (not x2249))
+(or x2250 x2229)
+(or x2250 x2224)
+(or x2250 x2225)
+(or x2250 (not x2226))
+(or (not x2229) (not x2224) (not x2225) x2226 (not x2250))
+(or (not x2250) (not x2229) x2251)
+(or (not x2251) x2250)
+(or (not x2251) x2229)
+(or x2252 (not x2192))
+(or x2252 (not x2191))
+(or x2252 (not x2190))
+(or x2252 (not x2189))
+(or x2252 (not x52))
+(or x2252 x1890)
+(or x2252 x1889)
+(or x2252 (not x2216))
+(or x2252 (not x2232))
+(or x2252 (not x2251))
+(or x2192 x2191 x2190 x2189 x52 (not x1890) (not x1889) x2216 x2232 x2251 (not x2252))
+(or (not x2252) (not x2249) (not x2196) (not x2248) (not x2244) (not x2200) (not x2238) (not x2202) (not x2203) (not x2234) x2253)
+(or (not x2253) x2252)
+(or (not x2253) x2249)
+(or (not x2253) x2196)
+(or (not x2253) x2248)
+(or (not x2253) x2244)
+(or (not x2253) x2200)
+(or (not x2253) x2238)
+(or (not x2253) x2202)
+(or (not x2253) x2203)
+(or (not x2253) x2234)
+(or x2254 (not x2096))
+(or x2254 (not x2098))
+(or x2254 (not x2097))
+(or x2096 x2098 x2097 (not x2254))
+(or (not x2254) (not x52) x2188)
+(or (not x2188) x2254)
+(or (not x2188) x52)
+(or x2255 (not x2179))
+(or x2255 (not x2180))
+(or x2255 (not x2181))
+(or x2255 (not x2182))
+(or x2255 (not x2183))
+(or x2255 (not x2184))
+(or x2255 (not x2115))
+(or x2255 (not x2185))
+(or x2255 (not x2186))
+(or x2255 (not x2187))
+(or x2255 (not x2188))
+(or x2255 (not x2189))
+(or x2179 x2180 x2181 x2182 x2183 x2184 x2115 x2185 x2186 x2187 x2188 x2189 (not x2255))
+(or x2080 (not x2192))
+(or x2080 x2191)
+(or x2080 (not x2190))
+(or x2080 (not x2189))
+(or x2192 (not x2191) x2190 x2189 (not x2080))
+(or (not x2080) (not x2081) (not x2045) x2256)
+(or (not x2256) x2080)
+(or (not x2256) x2081)
+(or (not x2256) x2045)
+(or x2192 (not x2191) (not x2190) x2189 x53 x52 x2187)
+(or (not x2187) (not x2192))
+(or (not x2187) x2191)
+(or (not x2187) x2190)
+(or (not x2187) (not x2189))
+(or (not x2187) (not x53))
+(or (not x2187) (not x52))
+(or x2192 x2191 x2190 (not x2189) x53 x52 x2186)
+(or (not x2186) (not x2192))
+(or (not x2186) (not x2191))
+(or (not x2186) (not x2190))
+(or (not x2186) x2189)
+(or (not x2186) (not x53))
+(or (not x2186) (not x52))
+(or x2203 (not x2179))
+(or x2203 (not x2180))
+(or x2203 (not x2181))
+(or x2203 (not x2182))
+(or x2203 (not x2183))
+(or x2203 (not x2184))
+(or x2203 (not x2115))
+(or x2203 (not x2185))
+(or x2203 (not x2186))
+(or x2203 (not x2187))
+(or x2203 (not x2256))
+(or x2203 x52)
+(or x2179 x2180 x2181 x2182 x2183 x2184 x2115 x2185 x2186 x2187 x2256 (not x52) (not x2203))
+(or x2257 x2236)
+(or x2257 x2258)
+(or (not x2236) (not x2258) (not x2257))
+(or (not x2257) (not x2236) x2259)
+(or (not x2259) x2257)
+(or (not x2259) x2236)
+(or x2192 x2191 x2190 (not x2189) x53 (not x52) x2185)
+(or (not x2185) (not x2192))
+(or (not x2185) (not x2191))
+(or (not x2185) (not x2190))
+(or (not x2185) x2189)
+(or (not x2185) (not x53))
+(or (not x2185) x52)
+(or x2201 (not x2179))
+(or x2201 (not x2180))
+(or x2201 (not x2181))
+(or x2201 (not x2182))
+(or x2201 (not x2183))
+(or x2201 (not x2184))
+(or x2201 (not x2115))
+(or x2201 (not x2185))
+(or x2201 (not x2192))
+(or x2201 (not x2191))
+(or x2201 (not x2190))
+(or x2201 x2189)
+(or x2201 (not x53))
+(or x2201 (not x52))
+(or x2179 x2180 x2181 x2182 x2183 x2184 x2115 x2185 x2192 x2191 x2190 (not x2189) x53 x52 (not x2201))
+(or x2260 (not x2179))
+(or x2260 (not x2180))
+(or x2260 (not x2181))
+(or x2260 (not x2182))
+(or x2260 (not x2183))
+(or x2260 (not x2184))
+(or x2260 (not x2115))
+(or x2260 (not x2185))
+(or x2260 (not x2192))
+(or x2260 (not x2191))
+(or x2260 (not x2190))
+(or x2260 x2189)
+(or x2260 (not x53))
+(or x2260 (not x52))
+(or x2260 x2207)
+(or x2260 x2208)
+(or x2260 (not x2259))
+(or x2179 x2180 x2181 x2182 x2183 x2184 x2115 x2185 x2192 x2191 x2190 (not x2189) x53 x52 (not x2207) (not x2208) x2259 (not x2260))
+(or x2200 (not x2179))
+(or x2200 (not x2180))
+(or x2200 (not x2181))
+(or x2200 (not x2182))
+(or x2200 (not x2183))
+(or x2200 (not x2184))
+(or x2200 (not x2115))
+(or x2200 (not x2192))
+(or x2200 (not x2191))
+(or x2200 (not x2190))
+(or x2200 x2189)
+(or x2200 (not x53))
+(or x2200 x52)
+(or x2179 x2180 x2181 x2182 x2183 x2184 x2115 x2192 x2191 x2190 (not x2189) x53 (not x52) (not x2200))
+(or x2261 x2213)
+(or x2261 (not x2214))
+(or (not x2213) x2214 (not x2261))
+(or (not x2261) (not x2213) x2262)
+(or (not x2262) x2261)
+(or (not x2262) x2213)
+(or x2199 (not x2179))
+(or x2199 (not x2180))
+(or x2199 (not x2181))
+(or x2199 (not x2182))
+(or x2199 (not x2183))
+(or x2199 (not x2184))
+(or x2199 (not x2192))
+(or x2199 (not x2191))
+(or x2199 x2190)
+(or x2199 x2189)
+(or x2179 x2180 x2181 x2182 x2183 x2184 x2192 x2191 (not x2190) (not x2189) (not x2199))
+(or x2263 (not x2179))
+(or x2263 (not x2180))
+(or x2263 (not x2181))
+(or x2263 (not x2182))
+(or x2263 (not x2183))
+(or x2263 (not x2184))
+(or x2263 (not x2192))
+(or x2263 (not x2191))
+(or x2263 x2190)
+(or x2263 x2189)
+(or x2263 x2212)
+(or x2263 (not x2262))
+(or x2179 x2180 x2181 x2182 x2183 x2184 x2192 x2191 (not x2190) (not x2189) (not x2212) x2262 (not x2263))
+(or x2192 x2191 (not x2190) x2189 (not x2264) x2183)
+(or (not x2183) (not x2192))
+(or (not x2183) (not x2191))
+(or (not x2183) x2190)
+(or (not x2183) (not x2189))
+(or (not x2183) x2264)
+(or x2198 (not x2179))
+(or x2198 (not x2180))
+(or x2198 (not x2181))
+(or x2198 (not x2182))
+(or x2198 (not x2183))
+(or x2198 (not x2192))
+(or x2198 (not x2191))
+(or x2198 x2190)
+(or x2198 (not x2189))
+(or x2179 x2180 x2181 x2182 x2183 x2192 x2191 (not x2190) x2189 (not x2198))
+(or x2265 x2217)
+(or x2265 x2218)
+(or x2265 x2246)
+(or x2265 x2266)
+(or (not x2217) (not x2218) (not x2246) (not x2266) (not x2265))
+(or (not x2265) (not x2217) x2267)
+(or (not x2267) x2265)
+(or (not x2267) x2217)
+(or x2192 x2191 (not x2190) x2189 (not x52) (not x53) x2182)
+(or (not x2182) (not x2192))
+(or (not x2182) (not x2191))
+(or (not x2182) x2190)
+(or (not x2182) (not x2189))
+(or (not x2182) x52)
+(or (not x2182) x53)
+(or x2197 (not x2179))
+(or x2197 (not x2180))
+(or x2197 (not x2181))
+(or x2197 (not x2182))
+(or x2197 (not x2192))
+(or x2197 (not x2191))
+(or x2197 x2190)
+(or x2197 (not x2189))
+(or x2197 (not x2216))
+(or x2179 x2180 x2181 x2182 x2192 x2191 (not x2190) x2189 x2216 (not x2197))
+(or x2268 (not x2179))
+(or x2268 (not x2180))
+(or x2268 (not x2181))
+(or x2268 (not x2182))
+(or x2268 (not x2192))
+(or x2268 (not x2191))
+(or x2268 x2190)
+(or x2268 (not x2189))
+(or x2268 (not x2216))
+(or x2268 (not x2267))
+(or x2179 x2180 x2181 x2182 x2192 x2191 (not x2190) x2189 x2216 x2267 (not x2268))
+(or x2196 (not x2179))
+(or x2196 (not x2180))
+(or x2196 (not x2181))
+(or x2196 (not x2192))
+(or x2196 (not x2191))
+(or x2196 x2190)
+(or x2196 (not x2189))
+(or x2196 x52)
+(or x2196 x53)
+(or x2179 x2180 x2181 x2192 x2191 (not x2190) x2189 (not x52) (not x53) (not x2196))
+(or x2192 x2191 x2190 x2189 x52 (not x1890) (not x1889) (not x2264) (not x2269) (not x2270) x2180)
+(or (not x2180) (not x2192))
+(or (not x2180) (not x2191))
+(or (not x2180) (not x2190))
+(or (not x2180) (not x2189))
+(or (not x2180) (not x52))
+(or (not x2180) x1890)
+(or (not x2180) x1889)
+(or (not x2180) x2264)
+(or (not x2180) x2269)
+(or (not x2180) x2270)
+(or x2195 (not x2179))
+(or x2195 (not x2180))
+(or x2195 (not x2192))
+(or x2195 (not x2191))
+(or x2195 (not x2190))
+(or x2195 (not x2189))
+(or x2195 (not x52))
+(or x2195 x1890)
+(or x2195 x1889)
+(or x2179 x2180 x2192 x2191 x2190 x2189 x52 (not x1890) (not x1889) (not x2195))
+(or (not x2151) (not x2150) x2149)
+(or (not x2149) x2151)
+(or (not x2149) x2150)
+(or (not x2151) x2150 x2148)
+(or (not x2148) x2151)
+(or (not x2148) (not x2150))
+(or x2151 (not x2150) x2147)
+(or (not x2147) (not x2151))
+(or (not x2147) x2150)
+(or x2151 x2150 (not x51) x52 x2271)
+(or (not x2271) (not x2151))
+(or (not x2271) (not x2150))
+(or (not x2271) x51)
+(or (not x2271) (not x52))
+(or x2264 (not x2271))
+(or x2264 (not x2147))
+(or x2264 (not x2148))
+(or x2264 (not x2149))
+(or x2271 x2147 x2148 x2149 (not x2264))
+(or x2192 x2191 x2190 x2189 x52 (not x1890) (not x1889) x2181)
+(or (not x2181) (not x2192))
+(or (not x2181) (not x2191))
+(or (not x2181) (not x2190))
+(or (not x2181) (not x2189))
+(or (not x2181) (not x52))
+(or (not x2181) x1890)
+(or (not x2181) x1889)
+(or x2192 x2191 x2190 x2189 x52 (not x1890) (not x1889) (not x2264) (not x2272) x2179)
+(or (not x2179) (not x2192))
+(or (not x2179) (not x2191))
+(or (not x2179) (not x2190))
+(or (not x2179) (not x2189))
+(or (not x2179) (not x52))
+(or (not x2179) x1890)
+(or (not x2179) x1889)
+(or (not x2179) x2264)
+(or (not x2179) x2272)
+(or x2194 (not x2179))
+(or x2194 (not x2192))
+(or x2194 (not x2191))
+(or x2194 (not x2190))
+(or x2194 (not x2189))
+(or x2194 (not x52))
+(or x2194 x1890)
+(or x2194 x1889)
+(or x2194 (not x2216))
+(or x2194 (not x2220))
+(or x2194 (not x2221))
+(or x2179 x2192 x2191 x2190 x2189 x52 (not x1890) (not x1889) x2216 x2220 x2221 (not x2194))
+(or x2273 (not x2179))
+(or x2273 (not x2192))
+(or x2273 (not x2191))
+(or x2273 (not x2190))
+(or x2273 (not x2189))
+(or x2273 (not x52))
+(or x2273 x1890)
+(or x2273 x1889)
+(or x2273 (not x2216))
+(or x2273 (not x2220))
+(or x2273 (not x2221))
+(or x2273 x2222)
+(or x2273 x2274)
+(or x2179 x2192 x2191 x2190 x2189 x52 (not x1890) (not x1889) x2216 x2220 x2221 (not x2222) (not x2274) (not x2273))
+(or x2275 x2225)
+(or x2275 x2226)
+(or (not x2225) (not x2226) (not x2275))
+(or (not x2275) (not x2225) x2276)
+(or (not x2276) x2275)
+(or (not x2276) x2225)
+(or x2277 x2151)
+(or x2277 x2150)
+(or (not x2151) (not x2150) (not x2277))
+(or x2278 x2151)
+(or x2278 (not x2150))
+(or (not x2151) x2150 (not x2278))
+(or x2279 (not x2151))
+(or x2279 x2150)
+(or x2151 (not x2150) (not x2279))
+(or x2280 (not x2151))
+(or x2280 (not x2150))
+(or x2280 x51)
+(or x2280 (not x52))
+(or x2151 x2150 (not x51) x52 (not x2280))
+(or (not x2280) (not x2279) (not x2278) (not x2277) x2216)
+(or (not x2216) x2280)
+(or (not x2216) x2279)
+(or (not x2216) x2278)
+(or (not x2216) x2277)
+(or x2193 (not x2192))
+(or x2193 (not x2191))
+(or x2193 (not x2190))
+(or x2193 (not x2189))
+(or x2193 (not x52))
+(or x2193 x1890)
+(or x2193 x1889)
+(or x2193 (not x2216))
+(or x2193 (not x2232))
+(or x2192 x2191 x2190 x2189 x52 (not x1890) (not x1889) x2216 x2232 (not x2193))
+(or x2281 (not x2192))
+(or x2281 (not x2191))
+(or x2281 (not x2190))
+(or x2281 (not x2189))
+(or x2281 (not x52))
+(or x2281 x1890)
+(or x2281 x1889)
+(or x2281 (not x2216))
+(or x2281 (not x2232))
+(or x2281 x2229)
+(or x2281 x2224)
+(or x2281 (not x2276))
+(or x2192 x2191 x2190 x2189 x52 (not x1890) (not x1889) x2216 x2232 (not x2229) (not x2224) x2276 (not x2281))
+(or (not x2281) (not x2273) (not x2195) (not x2196) (not x2268) (not x2198) (not x2263) (not x2200) (not x2260) (not x2203) (not x2255) x2282)
+(or (not x2282) x2281)
+(or (not x2282) x2273)
+(or (not x2282) x2195)
+(or (not x2282) x2196)
+(or (not x2282) x2268)
+(or (not x2282) x2198)
+(or (not x2282) x2263)
+(or (not x2282) x2200)
+(or (not x2282) x2260)
+(or (not x2282) x2203)
+(or (not x2282) x2255)
+(or x2283 (not x2284))
+(or x2283 (not x2285))
+(or x2283 (not x2286))
+(or x2283 (not x2287))
+(or x2283 (not x2288))
+(or x2283 (not x2289))
+(or x2283 (not x2113))
+(or x2283 (not x2290))
+(or x2283 (not x2291))
+(or x2283 (not x2292))
+(or x2283 (not x2293))
+(or x2283 (not x2297))
+(or x2284 x2285 x2286 x2287 x2288 x2289 x2113 x2290 x2291 x2292 x2293 x2297 (not x2283))
+(or (not x2298) (not x2299) (not x2300) (not x2301) (not x2302) (not x2303) (not x2304) (not x2305) (not x2306) (not x2307) (not x2308) (not x2283) x2309)
+(or (not x2309) x2298)
+(or (not x2309) x2299)
+(or (not x2309) x2300)
+(or (not x2309) x2301)
+(or (not x2309) x2302)
+(or (not x2309) x2303)
+(or (not x2309) x2304)
+(or (not x2309) x2305)
+(or (not x2309) x2306)
+(or (not x2309) x2307)
+(or (not x2309) x2308)
+(or (not x2309) x2283)
+(or x2310 (not x2284))
+(or x2310 (not x2285))
+(or x2310 (not x2286))
+(or x2310 (not x2287))
+(or x2310 (not x2288))
+(or x2310 (not x2289))
+(or x2310 (not x2113))
+(or x2310 (not x2290))
+(or x2310 (not x2291))
+(or x2310 (not x2292))
+(or x2310 (not x2293))
+(or x2310 (not x2296))
+(or x2284 x2285 x2286 x2287 x2288 x2289 x2113 x2290 x2291 x2292 x2293 x2296 (not x2310))
+(or x2311 x2312)
+(or x2311 (not x2313))
+(or (not x2312) x2313 (not x2311))
+(or (not x2311) (not x2312) x2314)
+(or (not x2314) x2311)
+(or (not x2314) x2312)
+(or x2315 (not x2284))
+(or x2315 (not x2285))
+(or x2315 (not x2286))
+(or x2315 (not x2287))
+(or x2315 (not x2288))
+(or x2315 (not x2289))
+(or x2315 (not x2113))
+(or x2315 (not x2290))
+(or x2315 (not x2297))
+(or x2315 (not x2296))
+(or x2315 (not x2295))
+(or x2315 x2294)
+(or x2315 (not x53))
+(or x2315 (not x52))
+(or x2315 (not x2314))
+(or x2284 x2285 x2286 x2287 x2288 x2289 x2113 x2290 x2297 x2296 x2295 (not x2294) x53 x52 x2314 (not x2315))
+(or x2316 (not x2284))
+(or x2316 (not x2285))
+(or x2316 (not x2286))
+(or x2316 (not x2287))
+(or x2316 (not x2288))
+(or x2316 (not x2289))
+(or x2316 (not x2297))
+(or x2316 (not x2296))
+(or x2316 x2295)
+(or x2316 x2294)
+(or x2316 x2317)
+(or x2316 x2318)
+(or x2316 x2319)
+(or x2284 x2285 x2286 x2287 x2288 x2289 x2297 x2296 (not x2295) (not x2294) (not x2317) (not x2318) (not x2319) (not x2316))
+(or x2320 (not x2284))
+(or x2320 (not x2285))
+(or x2320 (not x2286))
+(or x2320 (not x2287))
+(or x2320 (not x2297))
+(or x2320 (not x2296))
+(or x2320 x2295)
+(or x2320 (not x2294))
+(or x2320 (not x2321))
+(or x2320 x2322)
+(or x2320 x2323)
+(or x2284 x2285 x2286 x2287 x2297 x2296 (not x2295) x2294 x2321 (not x2322) (not x2323) (not x2320))
+(or x2324 (not x2284))
+(or x2324 (not x2297))
+(or x2324 (not x2296))
+(or x2324 (not x2295))
+(or x2324 (not x2294))
+(or x2324 (not x52))
+(or x2324 x1890)
+(or x2324 x1889)
+(or x2324 (not x2321))
+(or x2324 (not x2220))
+(or x2324 (not x2221))
+(or x2324 x2325)
+(or x2284 x2297 x2296 x2295 x2294 x52 (not x1890) (not x1889) x2321 x2220 x2221 (not x2325) (not x2324))
+(or x2326 x2327)
+(or x2326 x2328)
+(or x2326 x2329)
+(or (not x2327) (not x2328) (not x2329) (not x2326))
+(or (not x2326) (not x2327) x2330)
+(or (not x2330) x2326)
+(or (not x2330) x2327)
+(or x2331 x2332)
+(or x2331 (not x2330))
+(or (not x2332) x2330 (not x2331))
+(or (not x2331) (not x2332) x2333)
+(or (not x2333) x2331)
+(or (not x2333) x2332)
+(or x2334 (not x2297))
+(or x2334 (not x2296))
+(or x2334 (not x2295))
+(or x2334 (not x2294))
+(or x2334 (not x52))
+(or x2334 x1890)
+(or x2334 x1889)
+(or x2334 (not x2321))
+(or x2334 (not x2232))
+(or x2334 (not x2333))
+(or x2297 x2296 x2295 x2294 x52 (not x1890) (not x1889) x2321 x2232 x2333 (not x2334))
+(or (not x2334) (not x2324) (not x2300) (not x2301) (not x2320) (not x2303) (not x2316) (not x2305) (not x2315) (not x2308) (not x2310) x2335)
+(or (not x2335) x2334)
+(or (not x2335) x2324)
+(or (not x2335) x2300)
+(or (not x2335) x2301)
+(or (not x2335) x2320)
+(or (not x2335) x2303)
+(or (not x2335) x2316)
+(or (not x2335) x2305)
+(or (not x2335) x2315)
+(or (not x2335) x2308)
+(or (not x2335) x2310)
+(or x2336 (not x2284))
+(or x2336 (not x2285))
+(or x2336 (not x2286))
+(or x2336 (not x2287))
+(or x2336 (not x2288))
+(or x2336 (not x2289))
+(or x2336 (not x2113))
+(or x2336 (not x2290))
+(or x2336 (not x2291))
+(or x2336 (not x2292))
+(or x2336 (not x2293))
+(or x2336 (not x2295))
+(or x2284 x2285 x2286 x2287 x2288 x2289 x2113 x2290 x2291 x2292 x2293 x2295 (not x2336))
+(or x2307 (not x2284))
+(or x2307 (not x2285))
+(or x2307 (not x2286))
+(or x2307 (not x2287))
+(or x2307 (not x2288))
+(or x2307 (not x2289))
+(or x2307 (not x2113))
+(or x2307 (not x2290))
+(or x2307 (not x2291))
+(or x2307 (not x2297))
+(or x2307 x2296)
+(or x2307 x2295)
+(or x2307 (not x2294))
+(or x2307 (not x53))
+(or x2307 (not x52))
+(or x2284 x2285 x2286 x2287 x2288 x2289 x2113 x2290 x2291 x2297 (not x2296) (not x2295) x2294 x53 x52 (not x2307))
+(or x2337 x2313)
+(or x2337 x2338)
+(or (not x2313) (not x2338) (not x2337))
+(or (not x2337) (not x2313) x2339)
+(or (not x2339) x2337)
+(or (not x2339) x2313)
+(or x2340 (not x2284))
+(or x2340 (not x2285))
+(or x2340 (not x2286))
+(or x2340 (not x2287))
+(or x2340 (not x2288))
+(or x2340 (not x2289))
+(or x2340 (not x2113))
+(or x2340 (not x2290))
+(or x2340 (not x2297))
+(or x2340 (not x2296))
+(or x2340 (not x2295))
+(or x2340 x2294)
+(or x2340 (not x53))
+(or x2340 (not x52))
+(or x2340 x2312)
+(or x2340 (not x2339))
+(or x2284 x2285 x2286 x2287 x2288 x2289 x2113 x2290 x2297 x2296 x2295 (not x2294) x53 x52 (not x2312) x2339 (not x2340))
+(or x2341 x2319)
+(or x2341 (not x2342))
+(or (not x2319) x2342 (not x2341))
+(or (not x2341) (not x2319) x2343)
+(or (not x2343) x2341)
+(or (not x2343) x2319)
+(or x2344 x2317)
+(or x2344 x2318)
+(or x2344 (not x2343))
+(or (not x2317) (not x2318) x2343 (not x2344))
+(or (not x2344) (not x2317) x2345)
+(or (not x2345) x2344)
+(or (not x2345) x2317)
+(or x2346 (not x2284))
+(or x2346 (not x2285))
+(or x2346 (not x2286))
+(or x2346 (not x2287))
+(or x2346 (not x2288))
+(or x2346 (not x2289))
+(or x2346 (not x2297))
+(or x2346 (not x2296))
+(or x2346 x2295)
+(or x2346 x2294)
+(or x2346 (not x2345))
+(or x2284 x2285 x2286 x2287 x2288 x2289 x2297 x2296 (not x2295) (not x2294) x2345 (not x2346))
+(or x2347 x2323)
+(or x2347 (not x2348))
+(or (not x2323) x2348 (not x2347))
+(or (not x2347) (not x2323) x2349)
+(or (not x2349) x2347)
+(or (not x2349) x2323)
+(or x2350 (not x2284))
+(or x2350 (not x2285))
+(or x2350 (not x2286))
+(or x2350 (not x2287))
+(or x2350 (not x2297))
+(or x2350 (not x2296))
+(or x2350 x2295)
+(or x2350 (not x2294))
+(or x2350 (not x2321))
+(or x2350 x2322)
+(or x2350 (not x2349))
+(or x2284 x2285 x2286 x2287 x2297 x2296 (not x2295) x2294 x2321 (not x2322) x2349 (not x2350))
+(or x2351 (not x2284))
+(or x2351 (not x2297))
+(or x2351 (not x2296))
+(or x2351 (not x2295))
+(or x2351 (not x2294))
+(or x2351 (not x52))
+(or x2351 x1890)
+(or x2351 x1889)
+(or x2351 (not x2321))
+(or x2351 (not x2220))
+(or x2351 (not x2221))
+(or x2351 (not x2325))
+(or x2284 x2297 x2296 x2295 x2294 x52 (not x1890) (not x1889) x2321 x2220 x2221 x2325 (not x2351))
+(or x2352 x2332)
+(or x2352 x2327)
+(or x2352 x2328)
+(or x2352 (not x2329))
+(or (not x2332) (not x2327) (not x2328) x2329 (not x2352))
+(or (not x2352) (not x2332) x2353)
+(or (not x2353) x2352)
+(or (not x2353) x2332)
+(or x2354 (not x2297))
+(or x2354 (not x2296))
+(or x2354 (not x2295))
+(or x2354 (not x2294))
+(or x2354 (not x52))
+(or x2354 x1890)
+(or x2354 x1889)
+(or x2354 (not x2321))
+(or x2354 (not x2232))
+(or x2354 (not x2353))
+(or x2297 x2296 x2295 x2294 x52 (not x1890) (not x1889) x2321 x2232 x2353 (not x2354))
+(or (not x2354) (not x2351) (not x2301) (not x2350) (not x2346) (not x2305) (not x2340) (not x2307) (not x2308) (not x2336) x2355)
+(or (not x2355) x2354)
+(or (not x2355) x2351)
+(or (not x2355) x2301)
+(or (not x2355) x2350)
+(or (not x2355) x2346)
+(or (not x2355) x2305)
+(or (not x2355) x2340)
+(or (not x2355) x2307)
+(or (not x2355) x2308)
+(or (not x2355) x2336)
+(or x2356 (not x2093))
+(or x2356 (not x2095))
+(or x2356 (not x2094))
+(or x2093 x2095 x2094 (not x2356))
+(or (not x2356) (not x52) x2293)
+(or (not x2293) x2356)
+(or (not x2293) x52)
+(or x2357 (not x2284))
+(or x2357 (not x2285))
+(or x2357 (not x2286))
+(or x2357 (not x2287))
+(or x2357 (not x2288))
+(or x2357 (not x2289))
+(or x2357 (not x2113))
+(or x2357 (not x2290))
+(or x2357 (not x2291))
+(or x2357 (not x2292))
+(or x2357 (not x2293))
+(or x2357 (not x2294))
+(or x2284 x2285 x2286 x2287 x2288 x2289 x2113 x2290 x2291 x2292 x2293 x2294 (not x2357))
+(or x2078 (not x2297))
+(or x2078 x2296)
+(or x2078 (not x2295))
+(or x2078 (not x2294))
+(or x2297 (not x2296) x2295 x2294 (not x2078))
+(or (not x2078) (not x2079) (not x2043) x2358)
+(or (not x2358) x2078)
+(or (not x2358) x2079)
+(or (not x2358) x2043)
+(or x2297 (not x2296) (not x2295) x2294 x53 x52 x2292)
+(or (not x2292) (not x2297))
+(or (not x2292) x2296)
+(or (not x2292) x2295)
+(or (not x2292) (not x2294))
+(or (not x2292) (not x53))
+(or (not x2292) (not x52))
+(or x2297 x2296 x2295 (not x2294) x53 x52 x2291)
+(or (not x2291) (not x2297))
+(or (not x2291) (not x2296))
+(or (not x2291) (not x2295))
+(or (not x2291) x2294)
+(or (not x2291) (not x53))
+(or (not x2291) (not x52))
+(or x2308 (not x2284))
+(or x2308 (not x2285))
+(or x2308 (not x2286))
+(or x2308 (not x2287))
+(or x2308 (not x2288))
+(or x2308 (not x2289))
+(or x2308 (not x2113))
+(or x2308 (not x2290))
+(or x2308 (not x2291))
+(or x2308 (not x2292))
+(or x2308 (not x2358))
+(or x2308 x52)
+(or x2284 x2285 x2286 x2287 x2288 x2289 x2113 x2290 x2291 x2292 x2358 (not x52) (not x2308))
+(or x2359 x2338)
+(or x2359 x2360)
+(or (not x2338) (not x2360) (not x2359))
+(or (not x2359) (not x2338) x2361)
+(or (not x2361) x2359)
+(or (not x2361) x2338)
+(or x2297 x2296 x2295 (not x2294) x53 (not x52) x2290)
+(or (not x2290) (not x2297))
+(or (not x2290) (not x2296))
+(or (not x2290) (not x2295))
+(or (not x2290) x2294)
+(or (not x2290) (not x53))
+(or (not x2290) x52)
+(or x2306 (not x2284))
+(or x2306 (not x2285))
+(or x2306 (not x2286))
+(or x2306 (not x2287))
+(or x2306 (not x2288))
+(or x2306 (not x2289))
+(or x2306 (not x2113))
+(or x2306 (not x2290))
+(or x2306 (not x2297))
+(or x2306 (not x2296))
+(or x2306 (not x2295))
+(or x2306 x2294)
+(or x2306 (not x53))
+(or x2306 (not x52))
+(or x2284 x2285 x2286 x2287 x2288 x2289 x2113 x2290 x2297 x2296 x2295 (not x2294) x53 x52 (not x2306))
+(or x2362 (not x2284))
+(or x2362 (not x2285))
+(or x2362 (not x2286))
+(or x2362 (not x2287))
+(or x2362 (not x2288))
+(or x2362 (not x2289))
+(or x2362 (not x2113))
+(or x2362 (not x2290))
+(or x2362 (not x2297))
+(or x2362 (not x2296))
+(or x2362 (not x2295))
+(or x2362 x2294)
+(or x2362 (not x53))
+(or x2362 (not x52))
+(or x2362 x2312)
+(or x2362 x2313)
+(or x2362 (not x2361))
+(or x2284 x2285 x2286 x2287 x2288 x2289 x2113 x2290 x2297 x2296 x2295 (not x2294) x53 x52 (not x2312) (not x2313) x2361 (not x2362))
+(or x2305 (not x2284))
+(or x2305 (not x2285))
+(or x2305 (not x2286))
+(or x2305 (not x2287))
+(or x2305 (not x2288))
+(or x2305 (not x2289))
+(or x2305 (not x2113))
+(or x2305 (not x2297))
+(or x2305 (not x2296))
+(or x2305 (not x2295))
+(or x2305 x2294)
+(or x2305 (not x53))
+(or x2305 x52)
+(or x2284 x2285 x2286 x2287 x2288 x2289 x2113 x2297 x2296 x2295 (not x2294) x53 (not x52) (not x2305))
+(or x2363 x2318)
+(or x2363 (not x2319))
+(or (not x2318) x2319 (not x2363))
+(or (not x2363) (not x2318) x2364)
+(or (not x2364) x2363)
+(or (not x2364) x2318)
+(or x2304 (not x2284))
+(or x2304 (not x2285))
+(or x2304 (not x2286))
+(or x2304 (not x2287))
+(or x2304 (not x2288))
+(or x2304 (not x2289))
+(or x2304 (not x2297))
+(or x2304 (not x2296))
+(or x2304 x2295)
+(or x2304 x2294)
+(or x2284 x2285 x2286 x2287 x2288 x2289 x2297 x2296 (not x2295) (not x2294) (not x2304))
+(or x2365 (not x2284))
+(or x2365 (not x2285))
+(or x2365 (not x2286))
+(or x2365 (not x2287))
+(or x2365 (not x2288))
+(or x2365 (not x2289))
+(or x2365 (not x2297))
+(or x2365 (not x2296))
+(or x2365 x2295)
+(or x2365 x2294)
+(or x2365 x2317)
+(or x2365 (not x2364))
+(or x2284 x2285 x2286 x2287 x2288 x2289 x2297 x2296 (not x2295) (not x2294) (not x2317) x2364 (not x2365))
+(or x2297 x2296 (not x2295) x2294 (not x2366) x2288)
+(or (not x2288) (not x2297))
+(or (not x2288) (not x2296))
+(or (not x2288) x2295)
+(or (not x2288) (not x2294))
+(or (not x2288) x2366)
+(or x2303 (not x2284))
+(or x2303 (not x2285))
+(or x2303 (not x2286))
+(or x2303 (not x2287))
+(or x2303 (not x2288))
+(or x2303 (not x2297))
+(or x2303 (not x2296))
+(or x2303 x2295)
+(or x2303 (not x2294))
+(or x2284 x2285 x2286 x2287 x2288 x2297 x2296 (not x2295) x2294 (not x2303))
+(or x2367 x2322)
+(or x2367 x2323)
+(or x2367 x2348)
+(or x2367 x2368)
+(or (not x2322) (not x2323) (not x2348) (not x2368) (not x2367))
+(or (not x2367) (not x2322) x2369)
+(or (not x2369) x2367)
+(or (not x2369) x2322)
+(or x2297 x2296 (not x2295) x2294 (not x52) (not x53) x2287)
+(or (not x2287) (not x2297))
+(or (not x2287) (not x2296))
+(or (not x2287) x2295)
+(or (not x2287) (not x2294))
+(or (not x2287) x52)
+(or (not x2287) x53)
+(or x2302 (not x2284))
+(or x2302 (not x2285))
+(or x2302 (not x2286))
+(or x2302 (not x2287))
+(or x2302 (not x2297))
+(or x2302 (not x2296))
+(or x2302 x2295)
+(or x2302 (not x2294))
+(or x2302 (not x2321))
+(or x2284 x2285 x2286 x2287 x2297 x2296 (not x2295) x2294 x2321 (not x2302))
+(or x2370 (not x2284))
+(or x2370 (not x2285))
+(or x2370 (not x2286))
+(or x2370 (not x2287))
+(or x2370 (not x2297))
+(or x2370 (not x2296))
+(or x2370 x2295)
+(or x2370 (not x2294))
+(or x2370 (not x2321))
+(or x2370 (not x2369))
+(or x2284 x2285 x2286 x2287 x2297 x2296 (not x2295) x2294 x2321 x2369 (not x2370))
+(or x2301 (not x2284))
+(or x2301 (not x2285))
+(or x2301 (not x2286))
+(or x2301 (not x2297))
+(or x2301 (not x2296))
+(or x2301 x2295)
+(or x2301 (not x2294))
+(or x2301 x52)
+(or x2301 x53)
+(or x2284 x2285 x2286 x2297 x2296 (not x2295) x2294 (not x52) (not x53) (not x2301))
+(or x2297 x2296 x2295 x2294 x52 (not x1890) (not x1889) (not x2366) (not x2269) (not x2270) x2285)
+(or (not x2285) (not x2297))
+(or (not x2285) (not x2296))
+(or (not x2285) (not x2295))
+(or (not x2285) (not x2294))
+(or (not x2285) (not x52))
+(or (not x2285) x1890)
+(or (not x2285) x1889)
+(or (not x2285) x2366)
+(or (not x2285) x2269)
+(or (not x2285) x2270)
+(or x2300 (not x2284))
+(or x2300 (not x2285))
+(or x2300 (not x2297))
+(or x2300 (not x2296))
+(or x2300 (not x2295))
+(or x2300 (not x2294))
+(or x2300 (not x52))
+(or x2300 x1890)
+(or x2300 x1889)
+(or x2284 x2285 x2297 x2296 x2295 x2294 x52 (not x1890) (not x1889) (not x2300))
+(or (not x2060) (not x2102) x2221)
+(or (not x2221) x2060)
+(or (not x2221) x2102)
+(or (not x1997) (not x1998) (not x2107) x2220)
+(or (not x2220) x1997)
+(or (not x2220) x1998)
+(or (not x2220) x2107)
+(or x2272 (not x2220))
+(or x2272 (not x2221))
+(or x2220 x2221 (not x2272))
+(or (not x2164) (not x2163) x2162)
+(or (not x2162) x2164)
+(or (not x2162) x2163)
+(or (not x2164) x2163 x2161)
+(or (not x2161) x2164)
+(or (not x2161) (not x2163))
+(or x2164 (not x2163) x2160)
+(or (not x2160) (not x2164))
+(or (not x2160) x2163)
+(or (not x51) x52 x1874)
+(or (not x1874) x51)
+(or (not x1874) (not x52))
+(or x2164 x2163 (not x51) x52 x2371)
+(or (not x2371) (not x2164))
+(or (not x2371) (not x2163))
+(or (not x2371) x51)
+(or (not x2371) (not x52))
+(or x2366 (not x2371))
+(or x2366 (not x2160))
+(or x2366 (not x2161))
+(or x2366 (not x2162))
+(or x2371 x2160 x2161 x2162 (not x2366))
+(or x2297 x2296 x2295 x2294 x52 (not x1890) (not x1889) x2286)
+(or (not x2286) (not x2297))
+(or (not x2286) (not x2296))
+(or (not x2286) (not x2295))
+(or (not x2286) (not x2294))
+(or (not x2286) (not x52))
+(or (not x2286) x1890)
+(or (not x2286) x1889)
+(or x2297 x2296 x2295 x2294 x52 (not x1890) (not x1889) (not x2366) (not x2272) x2284)
+(or (not x2284) (not x2297))
+(or (not x2284) (not x2296))
+(or (not x2284) (not x2295))
+(or (not x2284) (not x2294))
+(or (not x2284) (not x52))
+(or (not x2284) x1890)
+(or (not x2284) x1889)
+(or (not x2284) x2366)
+(or (not x2284) x2272)
+(or x2299 (not x2284))
+(or x2299 (not x2297))
+(or x2299 (not x2296))
+(or x2299 (not x2295))
+(or x2299 (not x2294))
+(or x2299 (not x52))
+(or x2299 x1890)
+(or x2299 x1889)
+(or x2299 (not x2321))
+(or x2299 (not x2220))
+(or x2299 (not x2221))
+(or x2284 x2297 x2296 x2295 x2294 x52 (not x1890) (not x1889) x2321 x2220 x2221 (not x2299))
+(or x2372 (not x2284))
+(or x2372 (not x2297))
+(or x2372 (not x2296))
+(or x2372 (not x2295))
+(or x2372 (not x2294))
+(or x2372 (not x52))
+(or x2372 x1890)
+(or x2372 x1889)
+(or x2372 (not x2321))
+(or x2372 (not x2220))
+(or x2372 (not x2221))
+(or x2372 x2325)
+(or x2372 x2373)
+(or x2284 x2297 x2296 x2295 x2294 x52 (not x1890) (not x1889) x2321 x2220 x2221 (not x2325) (not x2373) (not x2372))
+(or x2374 x2328)
+(or x2374 x2329)
+(or (not x2328) (not x2329) (not x2374))
+(or (not x2374) (not x2328) x2375)
+(or (not x2375) x2374)
+(or (not x2375) x2328)
+(or x2010 (not x1996))
+(or x2010 (not x1940))
+(or x1996 x1940 (not x2010))
+(or x1998 (not x2039))
+(or x1998 x2020)
+(or x1998 (not x2021))
+(or x1998 (not x2022))
+(or x1998 (not x2023))
+(or x1998 (not x2025))
+(or x1998 (not x1972))
+(or x1998 (not x2026))
+(or x1998 (not x2027))
+(or x1998 (not x1933))
+(or x1998 (not x2028))
+(or x1998 (not x1996))
+(or x1998 (not x1940))
+(or x2039 (not x2020) x2021 x2022 x2023 x2025 x1972 x2026 x2027 x1933 x2028 x1996 x1940 (not x1998))
+(or x2123 (not x2020))
+(or x2123 (not x2021))
+(or x2020 x2021 (not x2123))
+(or x2121 (not x2020))
+(or x2121 (not x2021))
+(or x2121 (not x2022))
+(or x2121 (not x2023))
+(or x2020 x2021 x2022 x2023 (not x2121))
+(or x2133 (not x2026))
+(or x2133 (not x2027))
+(or x2026 x2027 (not x2133))
+(or x2129 (not x1996))
+(or x2129 (not x2026))
+(or x2129 (not x2027))
+(or x1996 x2026 x2027 (not x2129))
+(or x2134 (not x1940))
+(or x2134 (not x1996))
+(or x2134 (not x2026))
+(or x2134 (not x2027))
+(or x1940 x1996 x2026 x2027 (not x2134))
+(or x2128 (not x2025))
+(or x2128 (not x1940))
+(or x2128 (not x1996))
+(or x2128 (not x2026))
+(or x2128 (not x2027))
+(or x2025 x1940 x1996 x2026 x2027 (not x2128))
+(or x1997 (not x2025))
+(or x1997 (not x1940))
+(or x1997 (not x1996))
+(or x1997 (not x2026))
+(or x1997 (not x2027))
+(or x1997 (not x2039))
+(or x1997 (not x1933))
+(or x1997 x2028)
+(or x1997 (not x1972))
+(or x1997 (not x2020))
+(or x1997 (not x2021))
+(or x1997 (not x2022))
+(or x1997 (not x2023))
+(or x2025 x1940 x1996 x2026 x2027 x2039 x1933 (not x2028) x1972 x2020 x2021 x2022 x2023 (not x1997))
+(or (not x1997) (not x1998) x2376)
+(or (not x2376) x1997)
+(or (not x2376) x1998)
+(or x2270 (not x2376))
+(or x2270 x2102)
+(or x2376 (not x2102) (not x2270))
+(or x1996 x1940 x2005)
+(or (not x2005) (not x1996))
+(or (not x2005) (not x1940))
+(or x2039 (not x2020) x2021 x2022 x2023 x2025 x1972 x2026 x2027 x1933 x2028 x1996 x1940 x1989)
+(or (not x1989) (not x2039))
+(or (not x1989) x2020)
+(or (not x1989) (not x2021))
+(or (not x1989) (not x2022))
+(or (not x1989) (not x2023))
+(or (not x1989) (not x2025))
+(or (not x1989) (not x1972))
+(or (not x1989) (not x2026))
+(or (not x1989) (not x2027))
+(or (not x1989) (not x1933))
+(or (not x1989) (not x2028))
+(or (not x1989) (not x1996))
+(or (not x1989) (not x1940))
+(or x2020 x2021 x2065)
+(or (not x2065) (not x2020))
+(or (not x2065) (not x2021))
+(or x2020 x2021 x2022 x2023 x2062)
+(or (not x2062) (not x2020))
+(or (not x2062) (not x2021))
+(or (not x2062) (not x2022))
+(or (not x2062) (not x2023))
+(or x2026 x2027 x2076)
+(or (not x2076) (not x2026))
+(or (not x2076) (not x2027))
+(or x1996 x2026 x2027 x2070)
+(or (not x2070) (not x1996))
+(or (not x2070) (not x2026))
+(or (not x2070) (not x2027))
+(or x1940 x1996 x2026 x2027 x2077)
+(or (not x2077) (not x1940))
+(or (not x2077) (not x1996))
+(or (not x2077) (not x2026))
+(or (not x2077) (not x2027))
+(or x2025 x1940 x1996 x2026 x2027 x2069)
+(or (not x2069) (not x2025))
+(or (not x2069) (not x1940))
+(or (not x2069) (not x1996))
+(or (not x2069) (not x2026))
+(or (not x2069) (not x2027))
+(or x2025 x1940 x1996 x2026 x2027 x2039 x1933 (not x2028) x1972 x2020 x2021 x2022 x2023 x1988)
+(or (not x1988) (not x2025))
+(or (not x1988) (not x1940))
+(or (not x1988) (not x1996))
+(or (not x1988) (not x2026))
+(or (not x1988) (not x2027))
+(or (not x1988) (not x2039))
+(or (not x1988) (not x1933))
+(or (not x1988) x2028)
+(or (not x1988) (not x1972))
+(or (not x1988) (not x2020))
+(or (not x1988) (not x2021))
+(or (not x1988) (not x2022))
+(or (not x1988) (not x2023))
+(or x2060 (not x1988))
+(or x2060 (not x1989))
+(or x1988 x1989 (not x2060))
+(or x2269 (not x1988))
+(or x2269 (not x1989))
+(or x2269 x2107)
+(or x1988 x1989 (not x2107) (not x2269))
+(or (not x2269) (not x2270) x2232)
+(or (not x2232) x2269)
+(or (not x2232) x2270)
+(or x2377 x2164)
+(or x2377 x2163)
+(or (not x2164) (not x2163) (not x2377))
+(or x2378 x2164)
+(or x2378 (not x2163))
+(or (not x2164) x2163 (not x2378))
+(or x2379 (not x2164))
+(or x2379 x2163)
+(or x2164 (not x2163) (not x2379))
+(or x1914 x51)
+(or x1914 (not x52))
+(or (not x51) x52 (not x1914))
+(or x2380 (not x2164))
+(or x2380 (not x2163))
+(or x2380 x51)
+(or x2380 (not x52))
+(or x2164 x2163 (not x51) x52 (not x2380))
+(or (not x2380) (not x2379) (not x2378) (not x2377) x2321)
+(or (not x2321) x2380)
+(or (not x2321) x2379)
+(or (not x2321) x2378)
+(or (not x2321) x2377)
+(or x2298 (not x2297))
+(or x2298 (not x2296))
+(or x2298 (not x2295))
+(or x2298 (not x2294))
+(or x2298 (not x52))
+(or x2298 x1890)
+(or x2298 x1889)
+(or x2298 (not x2321))
+(or x2298 (not x2232))
+(or x2297 x2296 x2295 x2294 x52 (not x1890) (not x1889) x2321 x2232 (not x2298))
+(or x2381 (not x2297))
+(or x2381 (not x2296))
+(or x2381 (not x2295))
+(or x2381 (not x2294))
+(or x2381 (not x52))
+(or x2381 x1890)
+(or x2381 x1889)
+(or x2381 (not x2321))
+(or x2381 (not x2232))
+(or x2381 x2332)
+(or x2381 x2327)
+(or x2381 (not x2375))
+(or x2297 x2296 x2295 x2294 x52 (not x1890) (not x1889) x2321 x2232 (not x2332) (not x2327) x2375 (not x2381))
+(or (not x2381) (not x2372) (not x2300) (not x2301) (not x2370) (not x2303) (not x2365) (not x2305) (not x2362) (not x2308) (not x2357) x2382)
+(or (not x2382) x2381)
+(or (not x2382) x2372)
+(or (not x2382) x2300)
+(or (not x2382) x2301)
+(or (not x2382) x2370)
+(or (not x2382) x2303)
+(or (not x2382) x2365)
+(or (not x2382) x2305)
+(or (not x2382) x2362)
+(or (not x2382) x2308)
+(or (not x2382) x2357)
+(or x2383 (not x2384))
+(or x2383 (not x1954))
+(or x2383 (not x2385))
+(or x2383 (not x1960))
+(or x2384 x1954 x2385 x1960 (not x2383))
+(or x2386 (not x2384))
+(or x2386 (not x1954))
+(or x2386 x1960)
+(or x2386 (not x1959))
+(or x2386 (not x1958))
+(or x2386 x1957)
+(or x2386 x1933)
+(or x2386 x2387)
+(or x2384 x1954 (not x1960) x1959 x1958 (not x1957) (not x1933) (not x2387) (not x2386))
+(or x2388 (not x1960))
+(or x2388 x1959)
+(or x2388 x1958)
+(or x2388 x1957)
+(or x2388 x1890)
+(or x2388 x1889)
+(or x2388 x2389)
+(or x2388 x2390)
+(or x1960 (not x1959) (not x1958) (not x1957) (not x1890) (not x1889) (not x2389) (not x2390) (not x2388))
+(or (not x2388) (not x2386) (not x2383) x2391)
+(or (not x2391) x2388)
+(or (not x2391) x2386)
+(or (not x2391) x2383)
+(or x2392 (not x2384))
+(or x2392 (not x1954))
+(or x2392 (not x2385))
+(or x2392 (not x1959))
+(or x2384 x1954 x2385 x1959 (not x2392))
+(or (not x2393) (not x2394) (not x2395) (not x2392) x2396)
+(or (not x2396) x2393)
+(or (not x2396) x2394)
+(or (not x2396) x2395)
+(or (not x2396) x2392)
+(or x2397 (not x2384))
+(or x2397 (not x1954))
+(or x2397 (not x2385))
+(or x2397 (not x1958))
+(or x2384 x1954 x2385 x1958 (not x2397))
+(or x1970 x1960)
+(or x1970 (not x1959))
+(or x1970 (not x1958))
+(or x1970 (not x1957))
+(or (not x1960) x1959 x1958 x1957 (not x1970))
+(or x2394 (not x2384))
+(or x2394 x1960)
+(or x2394 (not x1959))
+(or x2394 (not x1958))
+(or x2394 (not x1957))
+(or x2384 (not x1960) x1959 x1958 x1957 (not x2394))
+(or (not x2393) (not x2394) (not x2395) (not x2397) x2398)
+(or (not x2398) x2393)
+(or (not x2398) x2394)
+(or (not x2398) x2395)
+(or (not x2398) x2397)
+(or (not x1960) x1959 x1958 (not x1957) (not x1933) x2385)
+(or (not x2385) x1960)
+(or (not x2385) (not x1959))
+(or (not x2385) (not x1958))
+(or (not x2385) x1957)
+(or (not x2385) x1933)
+(or x2399 (not x2384))
+(or x2399 (not x1954))
+(or x2399 (not x2385))
+(or x2399 (not x1957))
+(or x2384 x1954 x2385 x1957 (not x2399))
+(or x1960 (not x1959) (not x1958) (not x1957) (not x1890) (not x1889) (not x2389) x2384)
+(or (not x2384) (not x1960))
+(or (not x2384) x1959)
+(or (not x2384) x1958)
+(or (not x2384) x1957)
+(or (not x2384) x1890)
+(or (not x2384) x1889)
+(or (not x2384) x2389)
+(or x2395 (not x2384))
+(or x2395 (not x1954))
+(or x2395 x1960)
+(or x2395 (not x1959))
+(or x2395 (not x1958))
+(or x2395 x1957)
+(or x2395 x1933)
+(or x2395 (not x2387))
+(or x2384 x1954 (not x1960) x1959 x1958 (not x1957) (not x1933) x2387 (not x2395))
+(or x2393 (not x1960))
+(or x2393 x1959)
+(or x2393 x1958)
+(or x2393 x1957)
+(or x2393 x1890)
+(or x2393 x1889)
+(or x2393 x2389)
+(or x2393 (not x2390))
+(or x1960 (not x1959) (not x1958) (not x1957) (not x1890) (not x1889) (not x2389) x2390 (not x2393))
+(or (not x2393) (not x2395) (not x2399) x2400)
+(or (not x2400) x2393)
+(or (not x2400) x2395)
+(or (not x2400) x2399)
+(or (not x2389) (not x2401) (not x1933) x2402)
+(or (not x2402) x2389)
+(or (not x2402) x2401)
+(or (not x2402) x1933)
+(or x2403 x2389)
+(or x2403 (not x2402))
+(or x2403 (not x2389))
+(or (not x2389) x2402 x2389 (not x2403))
+(or x2404 x2389)
+(or x2404 x2389)
+(or x2404 x2401)
+(or x2404 x1933)
+(or x2404 x2405)
+(or (not x2389) (not x2389) (not x2401) (not x1933) (not x2405) (not x2404))
+(or x2406 x2407)
+(or x2406 x2408)
+(or (not x2407) (not x2408) (not x2406))
+(or (not x2406) (not x2407) x2409)
+(or (not x2409) x2406)
+(or (not x2409) x2407)
+(or x2410 (not x2389))
+(or x2410 x2411)
+(or x2410 (not x2409))
+(or x2389 (not x2411) x2409 (not x2410))
+(or (not x2410) (not x2404) (not x2403) x2412)
+(or (not x2412) x2410)
+(or (not x2412) x2404)
+(or (not x2412) x2403)
+(or x2041 (not x2093))
+(or x2041 (not x2094))
+(or x2041 (not x2095))
+(or x2041 (not x2096))
+(or x2041 (not x2097))
+(or x2041 (not x2098))
+(or x2093 x2094 x2095 x2096 x2097 x2098 (not x2041))
+(or x2045 (not x2192))
+(or x2045 x2191)
+(or x2045 x2190)
+(or x2045 (not x2189))
+(or x2192 (not x2191) (not x2190) x2189 (not x2045))
+(or x2081 (not x2192))
+(or x2081 x2191)
+(or x2081 (not x2190))
+(or x2081 x2189)
+(or x2192 (not x2191) x2190 (not x2189) (not x2081))
+(or x2044 (not x2192))
+(or x2044 (not x2191))
+(or x2044 (not x2190))
+(or x2044 x2189)
+(or x2192 x2191 x2190 (not x2189) (not x2044))
+(or x2413 (not x2192))
+(or x2413 (not x2191))
+(or x2413 x2190)
+(or x2413 x2189)
+(or x2192 x2191 (not x2190) (not x2189) (not x2413))
+(or x2043 (not x2297))
+(or x2043 x2296)
+(or x2043 x2295)
+(or x2043 (not x2294))
+(or x2297 (not x2296) (not x2295) x2294 (not x2043))
+(or x2079 (not x2297))
+(or x2079 x2296)
+(or x2079 (not x2295))
+(or x2079 x2294)
+(or x2297 (not x2296) x2295 (not x2294) (not x2079))
+(or x2042 (not x2297))
+(or x2042 (not x2296))
+(or x2042 (not x2295))
+(or x2042 x2294)
+(or x2297 x2296 x2295 (not x2294) (not x2042))
+(or x2414 (not x2297))
+(or x2414 (not x2296))
+(or x2414 x2295)
+(or x2414 x2294)
+(or x2297 x2296 (not x2295) (not x2294) (not x2414))
+(or (not x2414) (not x2042) (not x2079) (not x2043) (not x2413) (not x2044) (not x2081) (not x2045) x2415)
+(or (not x2415) x2414)
+(or (not x2415) x2042)
+(or (not x2415) x2079)
+(or (not x2415) x2043)
+(or (not x2415) x2413)
+(or (not x2415) x2044)
+(or (not x2415) x2081)
+(or (not x2415) x2045)
+(or (not x2414) (not x2042) (not x2079) (not x2043) (not x2413) (not x2044) (not x2081) (not x2045) x1984 x1985 x2173)
+(or (not x2173) x2414)
+(or (not x2173) x2042)
+(or (not x2173) x2079)
+(or (not x2173) x2043)
+(or (not x2173) x2413)
+(or (not x2173) x2044)
+(or (not x2173) x2081)
+(or (not x2173) x2045)
+(or (not x2173) (not x1984))
+(or (not x2173) (not x1985))
+(or x2031 (not x2173))
+(or x2031 (not x2114))
+(or x2031 (not x2094))
+(or x2031 (not x2116))
+(or x2031 (not x2097))
+(or x2173 x2114 x2094 x2116 x2097 (not x2031))
+(or x2416 (not x2173))
+(or x2416 (not x2114))
+(or x2416 (not x2094))
+(or x2416 (not x2116))
+(or x2416 (not x2097))
+(or x2416 (not x2093))
+(or x2416 (not x2094))
+(or x2416 (not x2095))
+(or x2416 (not x2096))
+(or x2416 (not x2097))
+(or x2416 (not x2098))
+(or x2416 x1996)
+(or x2173 x2114 x2094 x2116 x2097 x2093 x2094 x2095 x2096 x2097 x2098 (not x1996) (not x2416))
+(or (not x2416) (not x2172) x2417)
+(or (not x2417) x2416)
+(or (not x2417) x2172)
+(or (not x2418) x1960)
+(or (not x2418) (not x1959))
+(or (not x2418) (not x1958))
+(or (not x2418) x1957)
+(or (not x1960) x1959 x1958 x1957 x1954)
+(or (not x1954) x1960)
+(or (not x1954) (not x1959))
+(or (not x1954) (not x1958))
+(or (not x1954) (not x1957))
+(or (not x2419) (not x1960))
+(or (not x2419) x1959)
+(or (not x2419) x1958)
+(or (not x2419) x1957)
+(or x2420 (not x2419))
+(or x2420 (not x1954))
+(or x2419 x1954 (not x2420))
+(or x2192 (not x2191) (not x2190) x2189 x2097)
+(or (not x2097) (not x2192))
+(or (not x2097) x2191)
+(or (not x2097) x2190)
+(or (not x2097) (not x2189))
+(or x2192 (not x2191) x2190 (not x2189) x2098)
+(or (not x2098) (not x2192))
+(or (not x2098) x2191)
+(or (not x2098) (not x2190))
+(or (not x2098) x2189)
+(or x2192 (not x2191) x2190 x2189 x2096)
+(or (not x2096) (not x2192))
+(or (not x2096) x2191)
+(or (not x2096) (not x2190))
+(or (not x2096) (not x2189))
+(or x2192 x2191 (not x2190) (not x2189) x2115)
+(or (not x2115) (not x2192))
+(or (not x2115) (not x2191))
+(or (not x2115) x2190)
+(or (not x2115) x2189)
+(or x2192 x2191 (not x2190) x2189 x2184)
+(or (not x2184) (not x2192))
+(or (not x2184) (not x2191))
+(or (not x2184) x2190)
+(or (not x2184) (not x2189))
+(or x2192 x2191 x2190 (not x2189) x2116)
+(or (not x2116) (not x2192))
+(or (not x2116) (not x2191))
+(or (not x2116) (not x2190))
+(or (not x2116) x2189)
+(or (not x2421) (not x2192))
+(or (not x2421) (not x2191))
+(or (not x2421) (not x2190))
+(or (not x2421) (not x2189))
+(or x2422 (not x2421))
+(or x2422 (not x2116))
+(or x2422 (not x2184))
+(or x2422 (not x2115))
+(or x2422 (not x2096))
+(or x2422 (not x2098))
+(or x2421 x2116 x2184 x2115 x2096 x2098 (not x2422))
+(or x2297 (not x2296) (not x2295) x2294 x2094)
+(or (not x2094) (not x2297))
+(or (not x2094) x2296)
+(or (not x2094) x2295)
+(or (not x2094) (not x2294))
+(or x2297 (not x2296) x2295 (not x2294) x2095)
+(or (not x2095) (not x2297))
+(or (not x2095) x2296)
+(or (not x2095) (not x2295))
+(or (not x2095) x2294)
+(or x2297 (not x2296) x2295 x2294 x2093)
+(or (not x2093) (not x2297))
+(or (not x2093) x2296)
+(or (not x2093) (not x2295))
+(or (not x2093) (not x2294))
+(or x2297 x2296 (not x2295) (not x2294) x2113)
+(or (not x2113) (not x2297))
+(or (not x2113) (not x2296))
+(or (not x2113) x2295)
+(or (not x2113) x2294)
+(or x2297 x2296 (not x2295) x2294 x2289)
+(or (not x2289) (not x2297))
+(or (not x2289) (not x2296))
+(or (not x2289) x2295)
+(or (not x2289) (not x2294))
+(or x2297 x2296 x2295 (not x2294) x2114)
+(or (not x2114) (not x2297))
+(or (not x2114) (not x2296))
+(or (not x2114) (not x2295))
+(or (not x2114) x2294)
+(or (not x2423) (not x2297))
+(or (not x2423) (not x2296))
+(or (not x2423) (not x2295))
+(or (not x2423) (not x2294))
+(or x2424 (not x2423))
+(or x2424 (not x2114))
+(or x2424 (not x2289))
+(or x2424 (not x2113))
+(or x2424 (not x2093))
+(or x2424 (not x2095))
+(or x2423 x2114 x2289 x2113 x2093 x2095 (not x2424))
+(or x2425 (not x2426))
+(or x2425 (not x2427))
+(or x2425 (not x2428))
+(or x2425 (not x2429))
+(or x2425 (not x2430))
+(or x2425 (not x2431))
+(or x2425 (not x59))
+(or x2425 x58)
+(or x2425 x57)
+(or x2425 x56)
+(or x2425 (not x2432))
+(or x2425 x2433)
+(or x2426 x2427 x2428 x2429 x2430 x2431 x59 (not x58) (not x57) (not x56) x2432 (not x2433) (not x2425))
+(or x2434 (not x2426))
+(or x2434 (not x2427))
+(or x2434 (not x2428))
+(or x2434 (not x2429))
+(or x2434 (not x2430))
+(or x2434 (not x59))
+(or x2434 x58)
+(or x2434 x57)
+(or x2434 (not x56))
+(or x2434 x60)
+(or x2434 (not x61))
+(or x2434 x2435)
+(or x2426 x2427 x2428 x2429 x2430 x59 (not x58) (not x57) x56 (not x60) x61 (not x2435) (not x2434))
+(or x2436 (not x59))
+(or x2436 (not x58))
+(or x2436 (not x57))
+(or x2436 x56)
+(or x2436 (not x2437))
+(or x59 x58 x57 (not x56) x2437 (not x2436))
+(or (not x2436) (not x2438) (not x2439) (not x2440) (not x2441) (not x2434) (not x2425) (not x2442) x2443)
+(or (not x2443) x2436)
+(or (not x2443) x2438)
+(or (not x2443) x2439)
+(or (not x2443) x2440)
+(or (not x2443) x2441)
+(or (not x2443) x2434)
+(or (not x2443) x2425)
+(or (not x2443) x2442)
+(or x2444 (not x2426))
+(or x2444 (not x2427))
+(or x2444 (not x59))
+(or x2444 (not x58))
+(or x2444 x57)
+(or x2444 x56)
+(or x2444 (not x2432))
+(or x2444 x2445)
+(or x2426 x2427 x59 x58 (not x57) (not x56) x2432 (not x2445) (not x2444))
+(or x2446 (not x2426))
+(or x2446 (not x59))
+(or x2446 (not x58))
+(or x2446 x57)
+(or x2446 (not x56))
+(or x2446 x2448)
+(or x2446 x2447)
+(or x2446 (not x2432))
+(or x2446 x2449)
+(or x2426 x59 x58 (not x57) x56 (not x2448) (not x2447) x2432 (not x2449) (not x2446))
+(or x2450 (not x2451) x2437)
+(or (not x2437) (not x2450))
+(or (not x2437) x2451)
+(or x2450 (not x2451) (not x2452) x2453)
+(or (not x2453) (not x2450))
+(or (not x2453) x2451)
+(or (not x2453) x2452)
+(or x2454 (not x59))
+(or x2454 (not x58))
+(or x2454 (not x57))
+(or x2454 x56)
+(or x2454 (not x2453))
+(or x59 x58 x57 (not x56) x2453 (not x2454))
+(or (not x2454) (not x2446) (not x2444) (not x2455) (not x2456) (not x2457) (not x2458) (not x2442) x2459)
+(or (not x2459) x2454)
+(or (not x2459) x2446)
+(or (not x2459) x2444)
+(or (not x2459) x2455)
+(or (not x2459) x2456)
+(or (not x2459) x2457)
+(or (not x2459) x2458)
+(or (not x2459) x2442)
+(or x2460 (not x2426))
+(or x2460 (not x2427))
+(or x2460 (not x2428))
+(or x2460 (not x2429))
+(or x2460 (not x59))
+(or x2460 x58)
+(or x2460 (not x57))
+(or x2460 x56)
+(or x2460 (not x2432))
+(or x2460 x2461)
+(or x2426 x2427 x2428 x2429 x59 (not x58) x57 (not x56) x2432 (not x2461) (not x2460))
+(or x2462 (not x2426))
+(or x2462 (not x2427))
+(or x2462 (not x2428))
+(or x2462 (not x59))
+(or x2462 x58)
+(or x2462 (not x57))
+(or x2462 (not x56))
+(or x2462 x60)
+(or x2462 (not x61))
+(or x2462 x2463)
+(or x2426 x2427 x2428 x59 (not x58) x57 x56 (not x60) x61 (not x2463) (not x2462))
+(or x2452 (not x2450))
+(or x2452 (not x2464))
+(or x2450 x2464 (not x2452))
+(or x2450 (not x2452) x2465)
+(or (not x2465) (not x2450))
+(or (not x2465) x2452)
+(or x2466 (not x59))
+(or x2466 (not x58))
+(or x2466 (not x57))
+(or x2466 x56)
+(or x2466 (not x2465))
+(or x59 x58 x57 (not x56) x2465 (not x2466))
+(or (not x2466) (not x2467) (not x2468) (not x2462) (not x2460) (not x2455) (not x2456) (not x2469) (not x2470) (not x2442) x2471)
+(or (not x2471) x2466)
+(or (not x2471) x2467)
+(or (not x2471) x2468)
+(or (not x2471) x2462)
+(or (not x2471) x2460)
+(or (not x2471) x2455)
+(or (not x2471) x2456)
+(or (not x2471) x2469)
+(or (not x2471) x2470)
+(or (not x2471) x2442)
+(or (not x59) (not x58) x57 x56 (not x2472) x2473)
+(or (not x2473) x59)
+(or (not x2473) x58)
+(or (not x2473) (not x57))
+(or (not x2473) (not x56))
+(or (not x2473) x2472)
+(or x2442 (not x2426))
+(or x2442 (not x2427))
+(or x2442 (not x2428))
+(or x2442 (not x2429))
+(or x2442 (not x2430))
+(or x2442 (not x2431))
+(or x2442 (not x2474))
+(or x2442 (not x2475))
+(or x2442 (not x2476))
+(or x2442 (not x2477))
+(or x2442 (not x2473))
+(or x2426 x2427 x2428 x2429 x2430 x2431 x2474 x2475 x2476 x2477 x2473 (not x2442))
+(or (not x59) x58 (not x57) (not x56) (not x60) x61 x2477)
+(or (not x2477) x59)
+(or (not x2477) (not x58))
+(or (not x2477) x57)
+(or (not x2477) x56)
+(or (not x2477) x60)
+(or (not x2477) (not x61))
+(or x2470 (not x2426))
+(or x2470 (not x2427))
+(or x2470 (not x2428))
+(or x2470 (not x2429))
+(or x2470 (not x2430))
+(or x2470 (not x2431))
+(or x2470 (not x2474))
+(or x2470 (not x2475))
+(or x2470 (not x2476))
+(or x2470 (not x2477))
+(or x2470 x59)
+(or x2470 x58)
+(or x2470 (not x57))
+(or x2470 (not x56))
+(or x2470 (not x2432))
+(or x2426 x2427 x2428 x2429 x2430 x2431 x2474 x2475 x2476 x2477 (not x59) (not x58) x57 x56 x2432 (not x2470))
+(or x2478 (not x2426))
+(or x2478 (not x2427))
+(or x2478 (not x2428))
+(or x2478 (not x2429))
+(or x2478 (not x2430))
+(or x2478 (not x2431))
+(or x2478 (not x2474))
+(or x2478 (not x2475))
+(or x2478 (not x2476))
+(or x2478 (not x2477))
+(or x2478 x59)
+(or x2478 x58)
+(or x2478 (not x57))
+(or x2478 (not x56))
+(or x2478 (not x2432))
+(or x2478 x2479)
+(or x2426 x2427 x2428 x2429 x2430 x2431 x2474 x2475 x2476 x2477 (not x59) (not x58) x57 x56 x2432 (not x2479) (not x2478))
+(or (not x59) x58 (not x57) x56 (not x2472) x2476)
+(or (not x2476) x59)
+(or (not x2476) (not x58))
+(or (not x2476) x57)
+(or (not x2476) (not x56))
+(or (not x2476) x2472)
+(or x2469 (not x2426))
+(or x2469 (not x2427))
+(or x2469 (not x2428))
+(or x2469 (not x2429))
+(or x2469 (not x2430))
+(or x2469 (not x2431))
+(or x2469 (not x2474))
+(or x2469 (not x2475))
+(or x2469 (not x2476))
+(or x2469 x59)
+(or x2469 (not x58))
+(or x2469 x57)
+(or x2469 x56)
+(or x2469 x60)
+(or x2469 (not x61))
+(or x2426 x2427 x2428 x2429 x2430 x2431 x2474 x2475 x2476 (not x59) x58 (not x57) (not x56) (not x60) x61 (not x2469))
+(or x2480 (not x2426))
+(or x2480 (not x2427))
+(or x2480 (not x2428))
+(or x2480 (not x2429))
+(or x2480 (not x2430))
+(or x2480 (not x2431))
+(or x2480 (not x2474))
+(or x2480 (not x2475))
+(or x2480 (not x2476))
+(or x2480 x59)
+(or x2480 (not x58))
+(or x2480 x57)
+(or x2480 x56)
+(or x2480 x60)
+(or x2480 (not x61))
+(or x2480 x2481)
+(or x2426 x2427 x2428 x2429 x2430 x2431 x2474 x2475 x2476 (not x59) x58 (not x57) (not x56) (not x60) x61 (not x2481) (not x2480))
+(or (not x59) x58 x57 (not x56) (not x2448) (not x2447) (not x60) x61 x2475)
+(or (not x2475) x59)
+(or (not x2475) (not x58))
+(or (not x2475) (not x57))
+(or (not x2475) x56)
+(or (not x2475) x2448)
+(or (not x2475) x2447)
+(or (not x2475) x60)
+(or (not x2475) (not x61))
+(or x2458 (not x2426))
+(or x2458 (not x2427))
+(or x2458 (not x2428))
+(or x2458 (not x2429))
+(or x2458 (not x2430))
+(or x2458 (not x2431))
+(or x2458 (not x2474))
+(or x2458 (not x2475))
+(or x2458 x59)
+(or x2458 (not x58))
+(or x2458 x57)
+(or x2458 (not x56))
+(or x2458 (not x2432))
+(or x2426 x2427 x2428 x2429 x2430 x2431 x2474 x2475 (not x59) x58 (not x57) x56 x2432 (not x2458))
+(or x2482 (not x2426))
+(or x2482 (not x2427))
+(or x2482 (not x2428))
+(or x2482 (not x2429))
+(or x2482 (not x2430))
+(or x2482 (not x2431))
+(or x2482 (not x2474))
+(or x2482 (not x2475))
+(or x2482 x59)
+(or x2482 (not x58))
+(or x2482 x57)
+(or x2482 (not x56))
+(or x2482 (not x2432))
+(or x2482 x2483)
+(or x2426 x2427 x2428 x2429 x2430 x2431 x2474 x2475 (not x59) x58 (not x57) x56 x2432 (not x2483) (not x2482))
+(or x59 (not x58) (not x57) (not x56) (not x2472) x2474)
+(or (not x2474) (not x59))
+(or (not x2474) x58)
+(or (not x2474) x57)
+(or (not x2474) x56)
+(or (not x2474) x2472)
+(or x2457 (not x2426))
+(or x2457 (not x2427))
+(or x2457 (not x2428))
+(or x2457 (not x2429))
+(or x2457 (not x2430))
+(or x2457 (not x2431))
+(or x2457 (not x2474))
+(or x2457 x59)
+(or x2457 (not x58))
+(or x2457 (not x57))
+(or x2457 x56)
+(or x2457 x2448)
+(or x2457 x2447)
+(or x2457 x60)
+(or x2457 (not x61))
+(or x2426 x2427 x2428 x2429 x2430 x2431 x2474 (not x59) x58 x57 (not x56) (not x2448) (not x2447) (not x60) x61 (not x2457))
+(or x2484 (not x2426))
+(or x2484 (not x2427))
+(or x2484 (not x2428))
+(or x2484 (not x2429))
+(or x2484 (not x2430))
+(or x2484 (not x2431))
+(or x2484 (not x2474))
+(or x2484 x59)
+(or x2484 (not x58))
+(or x2484 (not x57))
+(or x2484 x56)
+(or x2484 x2448)
+(or x2484 x2447)
+(or x2484 x60)
+(or x2484 (not x61))
+(or x2484 x2485)
+(or x2426 x2427 x2428 x2429 x2430 x2431 x2474 (not x59) x58 x57 (not x56) (not x2448) (not x2447) (not x60) x61 (not x2485) (not x2484))
+(or x59 (not x58) (not x57) x56 (not x60) x61 x2431)
+(or (not x2431) (not x59))
+(or (not x2431) x58)
+(or (not x2431) x57)
+(or (not x2431) (not x56))
+(or (not x2431) x60)
+(or (not x2431) (not x61))
+(or x2456 (not x2426))
+(or x2456 (not x2427))
+(or x2456 (not x2428))
+(or x2456 (not x2429))
+(or x2456 (not x2430))
+(or x2456 (not x2431))
+(or x2456 (not x59))
+(or x2456 x58)
+(or x2456 x57)
+(or x2456 x56)
+(or x2456 (not x2432))
+(or x2456 (not x2433))
+(or x2426 x2427 x2428 x2429 x2430 x2431 x59 (not x58) (not x57) (not x56) x2432 x2433 (not x2456))
+(or x59 (not x58) x57 (not x56) (not x2472) x2430)
+(or (not x2430) (not x59))
+(or (not x2430) x58)
+(or (not x2430) (not x57))
+(or (not x2430) x56)
+(or (not x2430) x2472)
+(or x2455 (not x2426))
+(or x2455 (not x2427))
+(or x2455 (not x2428))
+(or x2455 (not x2429))
+(or x2455 (not x2430))
+(or x2455 (not x59))
+(or x2455 x58)
+(or x2455 x57)
+(or x2455 (not x56))
+(or x2455 x60)
+(or x2455 (not x61))
+(or x2455 (not x2435))
+(or x2426 x2427 x2428 x2429 x2430 x59 (not x58) (not x57) x56 (not x60) x61 x2435 (not x2455))
+(or x59 (not x58) x57 x56 (not x60) x61 x2429)
+(or (not x2429) (not x59))
+(or (not x2429) x58)
+(or (not x2429) (not x57))
+(or (not x2429) (not x56))
+(or (not x2429) x60)
+(or (not x2429) (not x61))
+(or x2441 (not x2426))
+(or x2441 (not x2427))
+(or x2441 (not x2428))
+(or x2441 (not x2429))
+(or x2441 (not x59))
+(or x2441 x58)
+(or x2441 (not x57))
+(or x2441 x56)
+(or x2441 (not x2432))
+(or x2426 x2427 x2428 x2429 x59 (not x58) x57 (not x56) x2432 (not x2441))
+(or x2486 (not x2426))
+(or x2486 (not x2427))
+(or x2486 (not x2428))
+(or x2486 (not x2429))
+(or x2486 (not x59))
+(or x2486 x58)
+(or x2486 (not x57))
+(or x2486 x56)
+(or x2486 (not x2432))
+(or x2486 (not x2461))
+(or x2426 x2427 x2428 x2429 x59 (not x58) x57 (not x56) x2432 x2461 (not x2486))
+(or x59 x58 (not x57) (not x56) (not x2472) x2428)
+(or (not x2428) (not x59))
+(or (not x2428) (not x58))
+(or (not x2428) x57)
+(or (not x2428) x56)
+(or (not x2428) x2472)
+(or x2440 (not x2426))
+(or x2440 (not x2427))
+(or x2440 (not x2428))
+(or x2440 (not x59))
+(or x2440 x58)
+(or x2440 (not x57))
+(or x2440 (not x56))
+(or x2440 x60)
+(or x2440 (not x61))
+(or x2426 x2427 x2428 x59 (not x58) x57 x56 (not x60) x61 (not x2440))
+(or x2487 (not x2426))
+(or x2487 (not x2427))
+(or x2487 (not x2428))
+(or x2487 (not x59))
+(or x2487 x58)
+(or x2487 (not x57))
+(or x2487 (not x56))
+(or x2487 x60)
+(or x2487 (not x61))
+(or x2487 (not x2463))
+(or x2426 x2427 x2428 x59 (not x58) x57 x56 (not x60) x61 x2463 (not x2487))
+(or x59 x58 (not x57) x56 (not x2448) (not x2447) (not x2472) x2427)
+(or (not x2427) (not x59))
+(or (not x2427) (not x58))
+(or (not x2427) x57)
+(or (not x2427) (not x56))
+(or (not x2427) x2448)
+(or (not x2427) x2447)
+(or (not x2427) x2472)
+(or x2439 (not x2426))
+(or x2439 (not x2427))
+(or x2439 (not x59))
+(or x2439 (not x58))
+(or x2439 x57)
+(or x2439 x56)
+(or x2439 (not x2432))
+(or x2426 x2427 x59 x58 (not x57) (not x56) x2432 (not x2439))
+(or x2468 (not x2426))
+(or x2468 (not x2427))
+(or x2468 (not x59))
+(or x2468 (not x58))
+(or x2468 x57)
+(or x2468 x56)
+(or x2468 (not x2432))
+(or x2468 (not x2445))
+(or x2426 x2427 x59 x58 (not x57) (not x56) x2432 x2445 (not x2468))
+(or x59 x58 x57 (not x56) x2426)
+(or (not x2426) (not x59))
+(or (not x2426) (not x58))
+(or (not x2426) (not x57))
+(or (not x2426) x56)
+(or x2438 (not x2426))
+(or x2438 (not x59))
+(or x2438 (not x58))
+(or x2438 x57)
+(or x2438 (not x56))
+(or x2438 x2448)
+(or x2438 x2447)
+(or x2438 (not x2432))
+(or x2426 x59 x58 (not x57) x56 (not x2448) (not x2447) x2432 (not x2438))
+(or x2467 (not x2426))
+(or x2467 (not x59))
+(or x2467 (not x58))
+(or x2467 x57)
+(or x2467 (not x56))
+(or x2467 x2448)
+(or x2467 x2447)
+(or x2467 (not x2432))
+(or x2467 (not x2449))
+(or x2426 x59 x58 (not x57) x56 (not x2448) (not x2447) x2432 x2449 (not x2467))
+(or x2451 (not x2450))
+(or x2451 x2464)
+(or x2450 (not x2464) (not x2451))
+(or x2488 (not x59))
+(or x2488 (not x58))
+(or x2488 (not x57))
+(or x2488 x56)
+(or x2488 (not x2450))
+(or x2488 x2464)
+(or x59 x58 x57 (not x56) x2450 (not x2464) (not x2488))
+(or (not x2488) (not x2467) (not x2468) (not x2487) (not x2486) (not x2455) (not x2456) (not x2484) (not x2482) (not x2480) (not x2478) (not x2442) x2489)
+(or (not x2489) x2488)
+(or (not x2489) x2467)
+(or (not x2489) x2468)
+(or (not x2489) x2487)
+(or (not x2489) x2486)
+(or (not x2489) x2455)
+(or (not x2489) x2456)
+(or (not x2489) x2484)
+(or (not x2489) x2482)
+(or (not x2489) x2480)
+(or (not x2489) x2478)
+(or (not x2489) x2442)
+(or x2490 x2491 (not x2492) x2493)
+(or (not x2493) (not x2490))
+(or (not x2493) (not x2491))
+(or (not x2493) x2492)
+(or (not x2490) x2491 (not x2494) x2495)
+(or (not x2495) x2490)
+(or (not x2495) (not x2491))
+(or (not x2495) x2494)
+(or x2496 (not x2495))
+(or x2496 (not x2493))
+(or x2495 x2493 (not x2496))
+(or (not x2497) (not x2498) x2499 x2500 (not x2501) x2502)
+(or (not x2502) x2497)
+(or (not x2502) x2498)
+(or (not x2502) (not x2499))
+(or (not x2502) (not x2500))
+(or (not x2502) x2501)
+(or x2492 (not x2491))
+(or x2492 (not x2502))
+(or x2491 x2502 (not x2492))
+(or (not x2491) (not x2492) x2503)
+(or (not x2503) x2491)
+(or (not x2503) x2492)
+(or x2491 (not x2490) x2504)
+(or (not x2504) (not x2491))
+(or (not x2504) x2490)
+(or x2494 (not x2505))
+(or x2494 x2498)
+(or x2494 (not x2499))
+(or x2494 (not x2500))
+(or x2494 x2501)
+(or x2505 (not x2498) x2499 x2500 (not x2501) (not x2494))
+(or x2491 (not x2494) x2506)
+(or (not x2506) (not x2491))
+(or (not x2506) x2494)
+(or x2507 (not x2506))
+(or x2507 (not x2504))
+(or x2506 x2504 (not x2507))
+(or (not x2508) (not x2507) x2509)
+(or (not x2509) x2508)
+(or (not x2509) x2507)
+(or x2510 (not x2509))
+(or x2510 (not x2503))
+(or x2509 x2503 (not x2510))
+(or x2511 (not x2491))
+(or x2511 (not x2512))
+(or x2511 (not x2513))
+(or x2491 x2512 x2513 (not x2511))
+(or x2514 (not x2491))
+(or x2514 x2518)
+(or x2514 (not x2517))
+(or x2514 (not x2516))
+(or x2514 (not x2515))
+(or x2491 (not x2518) x2517 x2516 x2515 (not x2514))
+(or x2519 x2520)
+(or x2519 x2521)
+(or (not x2520) (not x2521) (not x2519))
+(or (not x2519) (not x2520) x2522)
+(or (not x2522) x2519)
+(or (not x2522) x2520)
+(or x2523 x2491)
+(or x2523 x2524)
+(or x2523 (not x2522))
+(or (not x2491) (not x2524) x2522 (not x2523))
+(or (not x2523) (not x2514) (not x2511) x2525)
+(or (not x2525) x2523)
+(or (not x2525) x2514)
+(or (not x2525) x2511)
+(or (not x2518) x2517 x2516 x2515 (not x2526) x2527)
+(or (not x2527) x2518)
+(or (not x2527) (not x2517))
+(or (not x2527) (not x2516))
+(or (not x2527) (not x2515))
+(or (not x2527) x2526)
+(or (not x2528) (not x2529) x2530 (not x2531) (not x2532) (not x2533) (not x2534) (not x2535) (not x2536) (not x2537) (not x2538) (not x2539) x2540)
+(or (not x2540) x2528)
+(or (not x2540) x2529)
+(or (not x2540) (not x2530))
+(or (not x2540) x2531)
+(or (not x2540) x2532)
+(or (not x2540) x2533)
+(or (not x2540) x2534)
+(or (not x2540) x2535)
+(or (not x2540) x2536)
+(or (not x2540) x2537)
+(or (not x2540) x2538)
+(or (not x2540) x2539)
+(or x2541 (not x2540))
+(or x2541 (not x2527))
+(or x2540 x2527 (not x2541))
+(or x2542 x2543 x2544)
+(or (not x2544) (not x2542))
+(or (not x2544) (not x2543))
+(or x2545 x2448)
+(or x2545 x2447)
+(or x2545 (not x2546))
+(or x2545 (not x2547))
+(or x2545 (not x2544))
+(or (not x2448) (not x2447) x2546 x2547 x2544 (not x2545))
+(or (not x2548) (not x2545) x2549)
+(or (not x2549) x2548)
+(or (not x2549) x2545)
+(or x2550 (not x2542))
+(or x2550 (not x2551))
+(or x2542 x2551 (not x2550))
+(or (not x2543) (not x2550) x2552)
+(or (not x2552) x2543)
+(or (not x2552) x2550)
+(or x2553 (not x2552))
+(or x2553 (not x2549))
+(or x2552 x2549 (not x2553))
+(or x2554 (not x2448) (not x2447) (not x2555) (not x2556) x2551)
+(or (not x2551) (not x2554))
+(or (not x2551) x2448)
+(or (not x2551) x2447)
+(or (not x2551) x2555)
+(or (not x2551) x2556)
+(or (not x2542) x2554 (not x2448) (not x2447) (not x2555) (not x2556) x2557)
+(or (not x2557) x2542)
+(or (not x2557) (not x2554))
+(or (not x2557) x2448)
+(or (not x2557) x2447)
+(or (not x2557) x2555)
+(or (not x2557) x2556)
+(or x2558 x2448)
+(or x2558 x2447)
+(or x2558 (not x2546))
+(or x2558 (not x2547))
+(or x2558 x2542)
+(or (not x2448) (not x2447) x2546 x2547 (not x2542) (not x2558))
+(or x2548 (not x2554))
+(or x2548 x2448)
+(or x2548 x2447)
+(or x2548 (not x2546))
+(or x2548 (not x2547))
+(or x2554 (not x2448) (not x2447) x2546 x2547 (not x2548))
+(or (not x2548) (not x2558) x2559)
+(or (not x2559) x2548)
+(or (not x2559) x2558)
+(or x2560 (not x2559))
+(or x2560 (not x2557))
+(or x2559 x2557 (not x2560))
+(or x2498 (not x2501) x2561)
+(or (not x2561) (not x2498))
+(or (not x2561) x2501)
+(or x2562 (not x2563))
+(or x2562 x2529)
+(or x2562 x2564)
+(or x2562 (not x2561))
+(or x2563 (not x2529) (not x2564) x2561 (not x2562))
+(or (not x2565) (not x2528) (not x2562) x2566)
+(or (not x2566) x2565)
+(or (not x2566) x2528)
+(or (not x2566) x2562)
+(or x2567 (not x2498))
+(or x2567 x2501)
+(or x2498 (not x2501) (not x2567))
+(or (not x2568) (not x2529) (not x2564) (not x2567) x2569)
+(or (not x2569) x2568)
+(or (not x2569) x2529)
+(or (not x2569) x2564)
+(or (not x2569) x2567)
+(or x2570 (not x2512))
+(or x2570 (not x2569))
+(or x2512 x2569 (not x2570))
+(or (not x2570) (not x2528) x2571)
+(or (not x2571) x2570)
+(or (not x2571) x2528)
+(or x2572 (not x2571))
+(or x2572 (not x2566))
+(or x2571 x2566 (not x2572))
+(or x2573 (not x2574))
+(or x2573 x2554)
+(or x2574 (not x2554) (not x2573))
+(or (not x2498) (not x2448) (not x2447) (not x2575) (not x2500) (not x2576) (not x2577) x2554 x2578 x2579 x2580 x2581 x2582 (not x2498) x2583 x2530 x2584 x2585 x2491 x2586 x2587)
+(or (not x2587) x2498)
+(or (not x2587) x2448)
+(or (not x2587) x2447)
+(or (not x2587) x2575)
+(or (not x2587) x2500)
+(or (not x2587) x2576)
+(or (not x2587) x2577)
+(or (not x2587) (not x2554))
+(or (not x2587) (not x2578))
+(or (not x2587) (not x2579))
+(or (not x2587) (not x2580))
+(or (not x2587) (not x2581))
+(or (not x2587) (not x2582))
+(or (not x2587) x2498)
+(or (not x2587) (not x2583))
+(or (not x2587) (not x2530))
+(or (not x2587) (not x2584))
+(or (not x2587) (not x2585))
+(or (not x2587) (not x2491))
+(or (not x2587) (not x2586))
+(or (not x2588) (not x2589) (not x2448) (not x2447) (not x2554) x2498 x2578 x2579 x2580 x2581 x2583 x2530 x2584 x2585 x2491 x2586 x2590)
+(or (not x2590) x2588)
+(or (not x2590) x2589)
+(or (not x2590) x2448)
+(or (not x2590) x2447)
+(or (not x2590) x2554)
+(or (not x2590) (not x2498))
+(or (not x2590) (not x2578))
+(or (not x2590) (not x2579))
+(or (not x2590) (not x2580))
+(or (not x2590) (not x2581))
+(or (not x2590) (not x2583))
+(or (not x2590) (not x2530))
+(or (not x2590) (not x2584))
+(or (not x2590) (not x2585))
+(or (not x2590) (not x2491))
+(or (not x2590) (not x2586))
+(or x2591 (not x2590))
+(or x2591 (not x2587))
+(or x2590 x2587 (not x2591))
+(or x2578 x2580 x2581 (not x2579) x2583 x2530 x2584 x2585 x2491 x2586 x2554 x2498 x2592)
+(or (not x2592) (not x2578))
+(or (not x2592) (not x2580))
+(or (not x2592) (not x2581))
+(or (not x2592) x2579)
+(or (not x2592) (not x2583))
+(or (not x2592) (not x2530))
+(or (not x2592) (not x2584))
+(or (not x2592) (not x2585))
+(or (not x2592) (not x2491))
+(or (not x2592) (not x2586))
+(or (not x2592) (not x2554))
+(or (not x2592) (not x2498))
+(or (not x2518) x2517 x2516 x2515 (not x2491) x2586 x2583 x2498 x2554 x2584 x2585 (not x2593) (not x2594) x2530 x2578 x2579 x2580 x2581 x2595)
+(or (not x2595) x2518)
+(or (not x2595) (not x2517))
+(or (not x2595) (not x2516))
+(or (not x2595) (not x2515))
+(or (not x2595) x2491)
+(or (not x2595) (not x2586))
+(or (not x2595) (not x2583))
+(or (not x2595) (not x2498))
+(or (not x2595) (not x2554))
+(or (not x2595) (not x2584))
+(or (not x2595) (not x2585))
+(or (not x2595) x2593)
+(or (not x2595) x2594)
+(or (not x2595) (not x2530))
+(or (not x2595) (not x2578))
+(or (not x2595) (not x2579))
+(or (not x2595) (not x2580))
+(or (not x2595) (not x2581))
+(or x2596 (not x2595))
+(or x2596 (not x2592))
+(or x2595 x2592 (not x2596))
+(or (not x2448) (not x2447) (not x2597) (not x2596) x2598)
+(or (not x2598) x2448)
+(or (not x2598) x2447)
+(or (not x2598) x2597)
+(or (not x2598) x2596)
+(or (not x2448) (not x2447) (not x2554) x2498 x2578 x2579 x2580 x2581 x2583 x2530 x2584 x2585 x2491 x2586 (not x2599) (not x2600) (not x2601) (not x2602) (not x2603) (not x2564) x2604)
+(or (not x2604) x2448)
+(or (not x2604) x2447)
+(or (not x2604) x2554)
+(or (not x2604) (not x2498))
+(or (not x2604) (not x2578))
+(or (not x2604) (not x2579))
+(or (not x2604) (not x2580))
+(or (not x2604) (not x2581))
+(or (not x2604) (not x2583))
+(or (not x2604) (not x2530))
+(or (not x2604) (not x2584))
+(or (not x2604) (not x2585))
+(or (not x2604) (not x2491))
+(or (not x2604) (not x2586))
+(or (not x2604) x2599)
+(or (not x2604) x2600)
+(or (not x2604) x2601)
+(or (not x2604) x2602)
+(or (not x2604) x2603)
+(or (not x2604) x2564)
+(or (not x2597) x2579 x2580 x2581 x2583 x2530 x2584 x2585 x2491 x2586 x2554 x2498 x2605)
+(or (not x2605) x2597)
+(or (not x2605) (not x2579))
+(or (not x2605) (not x2580))
+(or (not x2605) (not x2581))
+(or (not x2605) (not x2583))
+(or (not x2605) (not x2530))
+(or (not x2605) (not x2584))
+(or (not x2605) (not x2585))
+(or (not x2605) (not x2491))
+(or (not x2605) (not x2586))
+(or (not x2605) (not x2554))
+(or (not x2605) (not x2498))
+(or x2606 (not x2607))
+(or x2606 (not x2605))
+(or x2607 x2605 (not x2606))
+(or (not x2448) (not x2447) (not x2578) (not x2606) x2608)
+(or (not x2608) x2448)
+(or (not x2608) x2447)
+(or (not x2608) x2578)
+(or (not x2608) x2606)
+(or x2583 x2584 (not x2585) (not x2448) (not x2447) x2491 x2586 x2554 x2498 x2530 x2578 x2579 x2580 x2581 x2609)
+(or (not x2609) (not x2583))
+(or (not x2609) (not x2584))
+(or (not x2609) x2585)
+(or (not x2609) x2448)
+(or (not x2609) x2447)
+(or (not x2609) (not x2491))
+(or (not x2609) (not x2586))
+(or (not x2609) (not x2554))
+(or (not x2609) (not x2498))
+(or (not x2609) (not x2530))
+(or (not x2609) (not x2578))
+(or (not x2609) (not x2579))
+(or (not x2609) (not x2580))
+(or (not x2609) (not x2581))
+(or x2610 (not x2609))
+(or x2610 (not x2608))
+(or x2609 x2608 (not x2610))
+(or x2611 x2579)
+(or x2611 x2586)
+(or (not x2579) (not x2586) (not x2611))
+(or x2612 (not x2579))
+(or x2612 (not x2597))
+(or x2612 (not x2491))
+(or x2579 x2597 x2491 (not x2612))
+(or x2586 x2579 (not x2613) x2614)
+(or (not x2614) (not x2586))
+(or (not x2614) (not x2579))
+(or (not x2614) x2613)
+(or x2615 x2491)
+(or x2615 (not x2614))
+(or (not x2491) x2614 (not x2615))
+(or x2616 x2597)
+(or x2616 (not x2491))
+(or x2616 (not x2586))
+(or (not x2597) x2491 x2586 (not x2616))
+(or (not x2448) (not x2447) x2530 x2578 x2583 x2498 x2554 x2584 x2585 x2580 x2581 (not x2616) (not x2615) (not x2612) (not x2611) x2617)
+(or (not x2617) x2448)
+(or (not x2617) x2447)
+(or (not x2617) (not x2530))
+(or (not x2617) (not x2578))
+(or (not x2617) (not x2583))
+(or (not x2617) (not x2498))
+(or (not x2617) (not x2554))
+(or (not x2617) (not x2584))
+(or (not x2617) (not x2585))
+(or (not x2617) (not x2580))
+(or (not x2617) (not x2581))
+(or (not x2617) x2616)
+(or (not x2617) x2615)
+(or (not x2617) x2612)
+(or (not x2617) x2611)
+(or (not x2448) (not x2447) (not x2618) x2619)
+(or (not x2619) x2448)
+(or (not x2619) x2447)
+(or (not x2619) x2618)
+(or x2539 (not x2620))
+(or x2539 (not x2621))
+(or x2620 x2621 (not x2539))
+(or x2622 (not x2623))
+(or x2622 x2580)
+(or x2623 (not x2580) (not x2622))
+(or x2624 (not x2491))
+(or x2624 (not x2580))
+(or x2624 (not x2578))
+(or x2624 (not x2579))
+(or x2491 x2580 x2578 x2579 (not x2624))
+(or x2625 x2579)
+(or x2625 x2578)
+(or (not x2579) (not x2578) (not x2625))
+(or x2581 (not x2625) (not x2624) (not x2622) x2626)
+(or (not x2626) (not x2581))
+(or (not x2626) x2625)
+(or (not x2626) x2624)
+(or (not x2626) x2622)
+(or x2538 (not x2586))
+(or x2538 (not x2583))
+(or x2538 (not x2498))
+(or x2538 (not x2554))
+(or x2538 (not x2584))
+(or x2538 (not x2585))
+(or x2538 (not x2626))
+(or x2586 x2583 x2498 x2554 x2584 x2585 x2626 (not x2538))
+(or x2537 x2585)
+(or x2537 x2584)
+(or (not x2585) (not x2584) (not x2537))
+(or x2536 (not x2627))
+(or x2536 x2586)
+(or x2627 (not x2586) (not x2536))
+(or x2535 x2498)
+(or x2535 (not x2628))
+(or (not x2498) x2628 (not x2535))
+(or (not x2518) x2517 x2516 x2515 x2597 x2629)
+(or (not x2629) x2518)
+(or (not x2629) (not x2517))
+(or (not x2629) (not x2516))
+(or (not x2629) (not x2515))
+(or (not x2629) (not x2597))
+(or (not x2518) x2517 x2516 x2515 (not x2597) (not x2513) x2630)
+(or (not x2630) x2518)
+(or (not x2630) (not x2517))
+(or (not x2630) (not x2516))
+(or (not x2630) (not x2515))
+(or (not x2630) x2597)
+(or (not x2630) x2513)
+(or x2613 (not x2630))
+(or x2613 (not x2629))
+(or x2630 x2629 (not x2613))
+(or (not x2518) x2517 x2516 x2515 (not x2597) x2631)
+(or (not x2631) x2518)
+(or (not x2631) (not x2517))
+(or (not x2631) (not x2516))
+(or (not x2631) (not x2515))
+(or (not x2631) x2597)
+(or x2632 (not x2631))
+(or x2632 (not x2630))
+(or x2632 (not x2629))
+(or x2631 x2630 x2629 (not x2632))
+(or x2580 x2578 x2579 x2586 x2583 x2498 x2554 x2584 x2585 (not x2632) x2633)
+(or (not x2633) (not x2580))
+(or (not x2633) (not x2578))
+(or (not x2633) (not x2579))
+(or (not x2633) (not x2586))
+(or (not x2633) (not x2583))
+(or (not x2633) (not x2498))
+(or (not x2633) (not x2554))
+(or (not x2633) (not x2584))
+(or (not x2633) (not x2585))
+(or (not x2633) x2632)
+(or x2534 x2491)
+(or x2534 (not x2633))
+(or (not x2491) x2633 (not x2534))
+(or x2533 (not x2634))
+(or x2533 x2554)
+(or x2634 (not x2554) (not x2533))
+(or x2532 (not x2635))
+(or x2532 x2583)
+(or x2635 (not x2583) (not x2532))
+(or x2531 x2582)
+(or x2531 x2498)
+(or (not x2582) (not x2498) (not x2531))
+(or (not x2564) (not x2448) (not x2447) x2530 (not x2531) (not x2532) (not x2533) (not x2534) (not x2535) (not x2536) (not x2537) (not x2538) (not x2539) (not x2636) (not x2601) (not x2637) (not x2638) (not x2603) (not x2639) (not x2528) x2640)
+(or (not x2640) x2564)
+(or (not x2640) x2448)
+(or (not x2640) x2447)
+(or (not x2640) (not x2530))
+(or (not x2640) x2531)
+(or (not x2640) x2532)
+(or (not x2640) x2533)
+(or (not x2640) x2534)
+(or (not x2640) x2535)
+(or (not x2640) x2536)
+(or (not x2640) x2537)
+(or (not x2640) x2538)
+(or (not x2640) x2539)
+(or (not x2640) x2636)
+(or (not x2640) x2601)
+(or (not x2640) x2637)
+(or (not x2640) x2638)
+(or (not x2640) x2603)
+(or (not x2640) x2639)
+(or (not x2640) x2528)
+(or x2641 x2448)
+(or x2641 x2447)
+(or x2641 (not x2530))
+(or x2641 (not x2642))
+(or x2641 (not x2643))
+(or x2641 (not x2644))
+(or x2641 (not x2645))
+(or x2641 (not x2646))
+(or x2641 (not x2647))
+(or x2641 (not x2648))
+(or x2641 (not x2649))
+(or x2641 (not x2650))
+(or x2641 (not x2651))
+(or x2641 (not x2652))
+(or x2641 (not x2653))
+(or x2641 (not x2654))
+(or x2641 (not x2655))
+(or x2641 (not x2656))
+(or x2641 (not x2512))
+(or (not x2448) (not x2447) x2530 x2642 x2643 x2644 x2645 x2646 x2647 x2648 x2649 x2650 x2651 x2652 x2653 x2654 x2655 x2656 x2512 (not x2641))
+(or x2657 x2448)
+(or x2657 x2447)
+(or x2657 (not x2530))
+(or x2657 (not x2642))
+(or x2657 (not x2643))
+(or x2657 (not x2644))
+(or x2657 (not x2645))
+(or x2657 (not x2646))
+(or x2657 (not x2647))
+(or x2657 (not x2648))
+(or x2657 (not x2649))
+(or x2657 (not x2650))
+(or x2657 (not x2651))
+(or x2657 (not x2652))
+(or x2657 (not x2653))
+(or x2657 (not x2654))
+(or x2657 (not x2655))
+(or x2657 (not x2656))
+(or x2657 x2526)
+(or (not x2448) (not x2447) x2530 x2642 x2643 x2644 x2645 x2646 x2647 x2648 x2649 x2650 x2651 x2652 x2653 x2654 x2655 x2656 (not x2526) (not x2657))
+(or (not x2657) (not x2641) x2658)
+(or (not x2658) x2657)
+(or (not x2658) x2641)
+(or x2659 (not x2658))
+(or x2659 (not x2640))
+(or x2658 x2640 (not x2659))
+(or (not x2528) (not x2660) x2661)
+(or (not x2661) x2528)
+(or (not x2661) x2660)
+(or (not x2518) x2517 x2516 x2515 (not x2662) x2663)
+(or (not x2663) x2518)
+(or (not x2663) (not x2517))
+(or (not x2663) (not x2516))
+(or (not x2663) (not x2515))
+(or (not x2663) x2662)
+(or x2664 (not x2663))
+(or x2664 (not x2661))
+(or x2663 x2661 (not x2664))
+(or (not x2528) (not x2665) x2666)
+(or (not x2666) x2528)
+(or (not x2666) x2665)
+(or x2667 (not x2512))
+(or x2667 (not x2666))
+(or x2512 x2666 (not x2667))
+(or x2584 x2585 (not x2583) (not x2448) (not x2447) x2491 x2586 x2554 x2498 x2530 x2578 x2579 x2580 x2581 x2668)
+(or (not x2668) (not x2584))
+(or (not x2668) (not x2585))
+(or (not x2668) x2583)
+(or (not x2668) x2448)
+(or (not x2668) x2447)
+(or (not x2668) (not x2491))
+(or (not x2668) (not x2586))
+(or (not x2668) (not x2554))
+(or (not x2668) (not x2498))
+(or (not x2668) (not x2530))
+(or (not x2668) (not x2578))
+(or (not x2668) (not x2579))
+(or (not x2668) (not x2580))
+(or (not x2668) (not x2581))
+(or (not x2600) (not x2601) (not x2602) (not x2603) x2669)
+(or (not x2669) x2600)
+(or (not x2669) x2601)
+(or (not x2669) x2602)
+(or (not x2669) x2603)
+(or x2670 (not x2671))
+(or x2670 (not x2672))
+(or x2670 (not x2653))
+(or x2670 (not x2652))
+(or x2670 (not x2673))
+(or x2670 (not x2674))
+(or x2670 (not x2656))
+(or x2670 (not x2655))
+(or x2670 (not x2542))
+(or x2670 (not x2543))
+(or x2671 x2672 x2653 x2652 x2673 x2674 x2656 x2655 x2542 x2543 (not x2670))
+(or (not x2636) (not x2601) (not x2637) (not x2638) (not x2603) (not x2639) x2574)
+(or (not x2574) x2636)
+(or (not x2574) x2601)
+(or (not x2574) x2637)
+(or (not x2574) x2638)
+(or (not x2574) x2603)
+(or (not x2574) x2639)
+(or x2588 (not x2574))
+(or x2588 (not x2672))
+(or x2588 (not x2652))
+(or x2588 (not x2674))
+(or x2588 (not x2655))
+(or x2588 x2564)
+(or x2574 x2672 x2652 x2674 x2655 (not x2564) (not x2588))
+(or (not x2588) (not x2670) (not x2600) (not x2601) (not x2602) (not x2603) x2498 x2578 x2579 x2580 x2581 x2583 x2530 x2584 x2585 x2491 x2586 x2675)
+(or (not x2675) x2588)
+(or (not x2675) x2670)
+(or (not x2675) x2600)
+(or (not x2675) x2601)
+(or (not x2675) x2602)
+(or (not x2675) x2603)
+(or (not x2675) (not x2498))
+(or (not x2675) (not x2578))
+(or (not x2675) (not x2579))
+(or (not x2675) (not x2580))
+(or (not x2675) (not x2581))
+(or (not x2675) (not x2583))
+(or (not x2675) (not x2530))
+(or (not x2675) (not x2584))
+(or (not x2675) (not x2585))
+(or (not x2675) (not x2491))
+(or (not x2675) (not x2586))
+(or x2575 (not x2501))
+(or x2575 (not x2499))
+(or x2575 (not x2500))
+(or x2575 x2529)
+(or x2575 x2565)
+(or x2501 x2499 x2500 (not x2529) (not x2565) (not x2575))
+(or (not x2575) (not x2500) (not x2576) (not x2577) x2554 x2578 x2579 x2580 x2581 x2582 (not x2498) x2583 x2530 x2584 x2585 x2491 x2586 x2607)
+(or (not x2607) x2575)
+(or (not x2607) x2500)
+(or (not x2607) x2576)
+(or (not x2607) x2577)
+(or (not x2607) (not x2554))
+(or (not x2607) (not x2578))
+(or (not x2607) (not x2579))
+(or (not x2607) (not x2580))
+(or (not x2607) (not x2581))
+(or (not x2607) (not x2582))
+(or (not x2607) x2498)
+(or (not x2607) (not x2583))
+(or (not x2607) (not x2530))
+(or (not x2607) (not x2584))
+(or (not x2607) (not x2585))
+(or (not x2607) (not x2491))
+(or (not x2607) (not x2586))
+(or x2676 (not x2607))
+(or x2676 (not x2675))
+(or x2607 x2675 (not x2676))
+(or (not x2448) (not x2447) (not x2554) (not x2676) x2677)
+(or (not x2677) x2448)
+(or (not x2677) x2447)
+(or (not x2677) x2554)
+(or (not x2677) x2676)
+(or x2678 (not x2677))
+(or x2678 (not x2668))
+(or x2677 x2668 (not x2678))
+(or (not x2679) (not x2680) x2650)
+(or (not x2650) x2679)
+(or (not x2650) x2680)
+(or (not x2681) (not x2580) x2682)
+(or (not x2682) x2681)
+(or (not x2682) x2580)
+(or x2491 x2580 x2578 x2579 x2683)
+(or (not x2683) (not x2491))
+(or (not x2683) (not x2580))
+(or (not x2683) (not x2578))
+(or (not x2683) (not x2579))
+(or (not x2579) (not x2578) x2684)
+(or (not x2684) x2579)
+(or (not x2684) x2578)
+(or x2685 (not x2581))
+(or x2685 (not x2684))
+(or x2685 (not x2683))
+(or x2685 (not x2682))
+(or x2581 x2684 x2683 x2682 (not x2685))
+(or x2586 x2583 x2498 x2554 x2584 x2585 x2621)
+(or (not x2621) (not x2586))
+(or (not x2621) (not x2583))
+(or (not x2621) (not x2498))
+(or (not x2621) (not x2554))
+(or (not x2621) (not x2584))
+(or (not x2621) (not x2585))
+(or x2586 x2583 x2498 x2554 x2584 x2585 (not x2685) x2649)
+(or (not x2649) (not x2586))
+(or (not x2649) (not x2583))
+(or (not x2649) (not x2498))
+(or (not x2649) (not x2554))
+(or (not x2649) (not x2584))
+(or (not x2649) (not x2585))
+(or (not x2649) x2685)
+(or (not x2585) (not x2584) x2648)
+(or (not x2648) x2585)
+(or (not x2648) x2584)
+(or (not x2686) (not x2586) x2647)
+(or (not x2647) x2686)
+(or (not x2647) x2586)
+(or (not x2498) (not x2687) x2646)
+(or (not x2646) x2498)
+(or (not x2646) x2687)
+(or x2594 x2518)
+(or x2594 (not x2517))
+(or x2594 (not x2516))
+(or x2594 (not x2515))
+(or x2594 (not x2597))
+(or (not x2518) x2517 x2516 x2515 x2597 (not x2594))
+(or x2593 x2518)
+(or x2593 (not x2517))
+(or x2593 (not x2516))
+(or x2593 (not x2515))
+(or x2593 x2597)
+(or x2593 x2513)
+(or (not x2518) x2517 x2516 x2515 (not x2597) (not x2513) (not x2593))
+(or x2688 x2518)
+(or x2688 (not x2517))
+(or x2688 (not x2516))
+(or x2688 (not x2515))
+(or x2688 x2597)
+(or (not x2518) x2517 x2516 x2515 (not x2597) (not x2688))
+(or (not x2688) (not x2593) (not x2594) x2689)
+(or (not x2689) x2688)
+(or (not x2689) x2593)
+(or (not x2689) x2594)
+(or x2680 (not x2586))
+(or x2680 (not x2583))
+(or x2680 (not x2498))
+(or x2680 (not x2554))
+(or x2680 (not x2584))
+(or x2680 (not x2585))
+(or x2586 x2583 x2498 x2554 x2584 x2585 (not x2680))
+(or x2690 (not x2580))
+(or x2690 (not x2578))
+(or x2690 (not x2579))
+(or x2690 (not x2586))
+(or x2690 (not x2583))
+(or x2690 (not x2498))
+(or x2690 (not x2554))
+(or x2690 (not x2584))
+(or x2690 (not x2585))
+(or x2690 (not x2689))
+(or x2580 x2578 x2579 x2586 x2583 x2498 x2554 x2584 x2585 x2689 (not x2690))
+(or (not x2491) (not x2690) x2645)
+(or (not x2645) x2491)
+(or (not x2645) x2690)
+(or (not x2691) (not x2554) x2644)
+(or (not x2644) x2691)
+(or (not x2644) x2554)
+(or (not x2692) (not x2583) x2643)
+(or (not x2643) x2692)
+(or (not x2643) x2583)
+(or (not x2582) (not x2498) x2642)
+(or (not x2642) x2582)
+(or (not x2642) x2498)
+(or x2693 x2448)
+(or x2693 x2447)
+(or x2693 (not x2530))
+(or x2693 (not x2642))
+(or x2693 (not x2643))
+(or x2693 (not x2644))
+(or x2693 (not x2645))
+(or x2693 (not x2646))
+(or x2693 (not x2647))
+(or x2693 (not x2648))
+(or x2693 (not x2649))
+(or x2693 (not x2650))
+(or (not x2448) (not x2447) x2530 x2642 x2643 x2644 x2645 x2646 x2647 x2648 x2649 x2650 (not x2693))
+(or x2581 (not x2448) (not x2447) x2578 x2579 (not x2580) x2583 x2530 x2584 x2585 x2491 x2586 x2554 x2498 x2694)
+(or (not x2694) (not x2581))
+(or (not x2694) x2448)
+(or (not x2694) x2447)
+(or (not x2694) (not x2578))
+(or (not x2694) (not x2579))
+(or (not x2694) x2580)
+(or (not x2694) (not x2583))
+(or (not x2694) (not x2530))
+(or (not x2694) (not x2584))
+(or (not x2694) (not x2585))
+(or (not x2694) (not x2491))
+(or (not x2694) (not x2586))
+(or (not x2694) (not x2554))
+(or (not x2694) (not x2498))
+(or x2576 (not x2565))
+(or x2576 (not x2501))
+(or x2576 (not x2499))
+(or x2576 (not x2500))
+(or x2576 x2529)
+(or x2565 x2501 x2499 x2500 (not x2529) (not x2576))
+(or x2501 x2499 x2500 (not x2529) (not x2565) x2695)
+(or (not x2695) (not x2501))
+(or (not x2695) (not x2499))
+(or (not x2695) (not x2500))
+(or (not x2695) x2529)
+(or (not x2695) x2565)
+(or x2696 (not x2695))
+(or x2696 x2500)
+(or x2695 (not x2500) (not x2696))
+(or (not x2448) (not x2447) (not x2696) (not x2576) (not x2577) x2554 x2578 x2579 x2580 x2581 x2582 (not x2498) x2583 x2530 x2584 x2585 x2491 x2586 x2697)
+(or (not x2697) x2448)
+(or (not x2697) x2447)
+(or (not x2697) x2696)
+(or (not x2697) x2576)
+(or (not x2697) x2577)
+(or (not x2697) (not x2554))
+(or (not x2697) (not x2578))
+(or (not x2697) (not x2579))
+(or (not x2697) (not x2580))
+(or (not x2697) (not x2581))
+(or (not x2697) (not x2582))
+(or (not x2697) x2498)
+(or (not x2697) (not x2583))
+(or (not x2697) (not x2530))
+(or (not x2697) (not x2584))
+(or (not x2697) (not x2585))
+(or (not x2697) (not x2491))
+(or (not x2697) (not x2586))
+(or x2583 x2585 (not x2584) (not x2448) (not x2447) x2491 x2586 x2554 x2498 x2530 x2578 x2579 x2580 x2581 x2698)
+(or (not x2698) (not x2583))
+(or (not x2698) (not x2585))
+(or (not x2698) x2584)
+(or (not x2698) x2448)
+(or (not x2698) x2447)
+(or (not x2698) (not x2491))
+(or (not x2698) (not x2586))
+(or (not x2698) (not x2554))
+(or (not x2698) (not x2498))
+(or (not x2698) (not x2530))
+(or (not x2698) (not x2578))
+(or (not x2698) (not x2579))
+(or (not x2698) (not x2580))
+(or (not x2698) (not x2581))
+(or x2508 x2490 x2505)
+(or (not x2505) (not x2508))
+(or (not x2505) (not x2490))
+(or x2577 (not x2505))
+(or x2577 (not x2499))
+(or x2577 (not x2500))
+(or x2577 x2501)
+(or x2505 x2499 x2500 (not x2501) (not x2577))
+(or (not x2577) x2565 x2501 x2499 x2500 (not x2529) x2699)
+(or (not x2699) x2577)
+(or (not x2699) (not x2565))
+(or (not x2699) (not x2501))
+(or (not x2699) (not x2499))
+(or (not x2699) (not x2500))
+(or (not x2699) x2529)
+(or x2497 (not x2508))
+(or x2497 (not x2490))
+(or x2508 x2490 (not x2497))
+(or (not x2497) x2499 x2500 (not x2501) x2700)
+(or (not x2700) x2497)
+(or (not x2700) (not x2499))
+(or (not x2700) (not x2500))
+(or (not x2700) x2501)
+(or x2701 (not x2700))
+(or x2701 (not x2699))
+(or x2700 x2699 (not x2701))
+(or (not x2448) (not x2447) x2554 x2578 x2579 x2580 x2581 x2582 (not x2498) x2583 x2530 x2584 x2585 x2491 x2586 (not x2701) x2702)
+(or (not x2702) x2448)
+(or (not x2702) x2447)
+(or (not x2702) (not x2554))
+(or (not x2702) (not x2578))
+(or (not x2702) (not x2579))
+(or (not x2702) (not x2580))
+(or (not x2702) (not x2581))
+(or (not x2702) (not x2582))
+(or (not x2702) x2498)
+(or (not x2702) (not x2583))
+(or (not x2702) (not x2530))
+(or (not x2702) (not x2584))
+(or (not x2702) (not x2585))
+(or (not x2702) (not x2491))
+(or (not x2702) (not x2586))
+(or (not x2702) x2701)
+(or x2703 (not x2704))
+(or x2703 (not x2705))
+(or x2703 (not x2706))
+(or x2703 (not x2707))
+(or x2703 (not x2709))
+(or x2704 x2705 x2706 x2707 x2709 (not x2703))
+(or x2710 (not x2709))
+(or x2710 (not x2708))
+(or x2710 x60)
+(or x2710 (not x61))
+(or x2710 x2448)
+(or x2710 x2447)
+(or x2709 x2708 (not x60) x61 (not x2448) (not x2447) (not x2710))
+(or (not x2710) (not x2711) (not x2703) x2712)
+(or (not x2712) x2710)
+(or (not x2712) x2711)
+(or (not x2712) x2703)
+(or x2713 (not x2704))
+(or x2713 (not x2705))
+(or x2713 (not x2706))
+(or x2713 (not x2707))
+(or x2713 (not x2708))
+(or x2704 x2705 x2706 x2707 x2708 (not x2713))
+(or x2711 (not x2704))
+(or x2711 (not x2705))
+(or x2711 (not x2706))
+(or x2711 x2709)
+(or x2711 x2708)
+(or x2704 x2705 x2706 (not x2709) (not x2708) (not x2711))
+(or x2709 x2708 (not x60) x61 (not x2448) (not x2447) x2704)
+(or (not x2704) (not x2709))
+(or (not x2704) (not x2708))
+(or (not x2704) x60)
+(or (not x2704) (not x61))
+(or (not x2704) x2448)
+(or (not x2704) x2447)
+(or x2714 (not x2704))
+(or x2714 (not x2709))
+(or x2714 x2708)
+(or x2704 x2709 (not x2708) (not x2714))
+(or (not x2714) (not x2711) (not x2713) x2715)
+(or (not x2715) x2714)
+(or (not x2715) x2711)
+(or (not x2715) x2713)
+(or x2716 (not x2717))
+(or x2716 (not x2718))
+(or x2716 (not x2719))
+(or x2716 (not x2720))
+(or x2716 (not x2722))
+(or x2717 x2718 x2719 x2720 x2722 (not x2716))
+(or x2723 (not x2722))
+(or x2723 (not x2721))
+(or x2723 x60)
+(or x2723 (not x61))
+(or x2723 x2448)
+(or x2723 x2447)
+(or x2722 x2721 (not x60) x61 (not x2448) (not x2447) (not x2723))
+(or (not x2723) (not x2724) (not x2716) x2725)
+(or (not x2725) x2723)
+(or (not x2725) x2724)
+(or (not x2725) x2716)
+(or x2726 (not x2717))
+(or x2726 (not x2718))
+(or x2726 (not x2719))
+(or x2726 (not x2720))
+(or x2726 (not x2721))
+(or x2717 x2718 x2719 x2720 x2721 (not x2726))
+(or x2724 (not x2717))
+(or x2724 (not x2718))
+(or x2724 (not x2719))
+(or x2724 x2722)
+(or x2724 x2721)
+(or x2717 x2718 x2719 (not x2722) (not x2721) (not x2724))
+(or x2722 x2721 (not x60) x61 (not x2448) (not x2447) x2717)
+(or (not x2717) (not x2722))
+(or (not x2717) (not x2721))
+(or (not x2717) x60)
+(or (not x2717) (not x61))
+(or (not x2717) x2448)
+(or (not x2717) x2447)
+(or x2727 (not x2717))
+(or x2727 (not x2722))
+(or x2727 x2721)
+(or x2717 x2722 (not x2721) (not x2727))
+(or (not x2727) (not x2724) (not x2726) x2728)
+(or (not x2728) x2727)
+(or (not x2728) x2724)
+(or (not x2728) x2726)
+(or x2729 (not x2564))
+(or x2729 (not x2730))
+(or x2729 (not x2731))
+(or x2729 (not x2672))
+(or x2729 (not x2652))
+(or x2729 (not x2674))
+(or x2729 (not x2655))
+(or x2729 (not x2651))
+(or x2729 (not x2652))
+(or x2729 (not x2653))
+(or x2729 (not x2654))
+(or x2729 (not x2655))
+(or x2729 (not x2656))
+(or x2564 x2730 x2731 x2672 x2652 x2674 x2655 x2651 x2652 x2653 x2654 x2655 x2656 (not x2729))
+(or (not x2555) (not x2556) (not x2729) x2732)
+(or (not x2732) x2555)
+(or (not x2732) x2556)
+(or (not x2732) x2729)
+(or x2733 (not x2448))
+(or x2733 (not x2447))
+(or x2448 x2447 (not x2733))
+(or x2448 x2447 x2734)
+(or (not x2734) (not x2448))
+(or (not x2734) (not x2447))
+(or x2735 (not x2734))
+(or x2735 (not x2448))
+(or x2735 x2447)
+(or x2734 x2448 (not x2447) (not x2735))
+(or x2736 (not x2737))
+(or x2736 (not x2738))
+(or x2736 (not x2739))
+(or x2736 (not x2740))
+(or x2736 (not x2741))
+(or x2736 (not x2742))
+(or x2736 (not x2673))
+(or x2736 (not x2743))
+(or x2736 (not x2744))
+(or x2736 (not x2745))
+(or x2736 (not x2746))
+(or x2736 (not x2750))
+(or x2737 x2738 x2739 x2740 x2741 x2742 x2673 x2743 x2744 x2745 x2746 x2750 (not x2736))
+(or (not x2751) (not x2752) (not x2753) (not x2754) (not x2755) (not x2756) (not x2757) (not x2758) (not x2759) (not x2760) (not x2761) (not x2736) x2762)
+(or (not x2762) x2751)
+(or (not x2762) x2752)
+(or (not x2762) x2753)
+(or (not x2762) x2754)
+(or (not x2762) x2755)
+(or (not x2762) x2756)
+(or (not x2762) x2757)
+(or (not x2762) x2758)
+(or (not x2762) x2759)
+(or (not x2762) x2760)
+(or (not x2762) x2761)
+(or (not x2762) x2736)
+(or x2763 (not x2737))
+(or x2763 (not x2738))
+(or x2763 (not x2739))
+(or x2763 (not x2740))
+(or x2763 (not x2741))
+(or x2763 (not x2742))
+(or x2763 (not x2673))
+(or x2763 (not x2743))
+(or x2763 (not x2744))
+(or x2763 (not x2745))
+(or x2763 (not x2746))
+(or x2763 (not x2749))
+(or x2737 x2738 x2739 x2740 x2741 x2742 x2673 x2743 x2744 x2745 x2746 x2749 (not x2763))
+(or x2764 x2765)
+(or x2764 (not x2766))
+(or (not x2765) x2766 (not x2764))
+(or (not x2764) (not x2765) x2767)
+(or (not x2767) x2764)
+(or (not x2767) x2765)
+(or x2768 (not x2737))
+(or x2768 (not x2738))
+(or x2768 (not x2739))
+(or x2768 (not x2740))
+(or x2768 (not x2741))
+(or x2768 (not x2742))
+(or x2768 (not x2673))
+(or x2768 (not x2743))
+(or x2768 (not x2750))
+(or x2768 (not x2749))
+(or x2768 (not x2748))
+(or x2768 x2747)
+(or x2768 (not x62))
+(or x2768 (not x61))
+(or x2768 (not x2767))
+(or x2737 x2738 x2739 x2740 x2741 x2742 x2673 x2743 x2750 x2749 x2748 (not x2747) x62 x61 x2767 (not x2768))
+(or x2769 (not x2737))
+(or x2769 (not x2738))
+(or x2769 (not x2739))
+(or x2769 (not x2740))
+(or x2769 (not x2741))
+(or x2769 (not x2742))
+(or x2769 (not x2750))
+(or x2769 (not x2749))
+(or x2769 x2748)
+(or x2769 x2747)
+(or x2769 x2770)
+(or x2769 x2771)
+(or x2769 x2772)
+(or x2737 x2738 x2739 x2740 x2741 x2742 x2750 x2749 (not x2748) (not x2747) (not x2770) (not x2771) (not x2772) (not x2769))
+(or x2773 (not x2737))
+(or x2773 (not x2738))
+(or x2773 (not x2739))
+(or x2773 (not x2740))
+(or x2773 (not x2750))
+(or x2773 (not x2749))
+(or x2773 x2748)
+(or x2773 (not x2747))
+(or x2773 (not x2774))
+(or x2773 x2775)
+(or x2773 x2776)
+(or x2737 x2738 x2739 x2740 x2750 x2749 (not x2748) x2747 x2774 (not x2775) (not x2776) (not x2773))
+(or x2777 (not x2737))
+(or x2777 (not x2750))
+(or x2777 (not x2749))
+(or x2777 (not x2748))
+(or x2777 (not x2747))
+(or x2777 (not x61))
+(or x2777 x2448)
+(or x2777 x2447)
+(or x2777 (not x2774))
+(or x2777 (not x2778))
+(or x2777 (not x2779))
+(or x2777 x2780)
+(or x2737 x2750 x2749 x2748 x2747 x61 (not x2448) (not x2447) x2774 x2778 x2779 (not x2780) (not x2777))
+(or x2781 x2782)
+(or x2781 x2783)
+(or x2781 x2784)
+(or (not x2782) (not x2783) (not x2784) (not x2781))
+(or (not x2781) (not x2782) x2785)
+(or (not x2785) x2781)
+(or (not x2785) x2782)
+(or x2786 x2787)
+(or x2786 (not x2785))
+(or (not x2787) x2785 (not x2786))
+(or (not x2786) (not x2787) x2788)
+(or (not x2788) x2786)
+(or (not x2788) x2787)
+(or x2789 (not x2750))
+(or x2789 (not x2749))
+(or x2789 (not x2748))
+(or x2789 (not x2747))
+(or x2789 (not x61))
+(or x2789 x2448)
+(or x2789 x2447)
+(or x2789 (not x2774))
+(or x2789 (not x2790))
+(or x2789 (not x2788))
+(or x2750 x2749 x2748 x2747 x61 (not x2448) (not x2447) x2774 x2790 x2788 (not x2789))
+(or (not x2789) (not x2777) (not x2753) (not x2754) (not x2773) (not x2756) (not x2769) (not x2758) (not x2768) (not x2761) (not x2763) x2791)
+(or (not x2791) x2789)
+(or (not x2791) x2777)
+(or (not x2791) x2753)
+(or (not x2791) x2754)
+(or (not x2791) x2773)
+(or (not x2791) x2756)
+(or (not x2791) x2769)
+(or (not x2791) x2758)
+(or (not x2791) x2768)
+(or (not x2791) x2761)
+(or (not x2791) x2763)
+(or x2792 (not x2737))
+(or x2792 (not x2738))
+(or x2792 (not x2739))
+(or x2792 (not x2740))
+(or x2792 (not x2741))
+(or x2792 (not x2742))
+(or x2792 (not x2673))
+(or x2792 (not x2743))
+(or x2792 (not x2744))
+(or x2792 (not x2745))
+(or x2792 (not x2746))
+(or x2792 (not x2748))
+(or x2737 x2738 x2739 x2740 x2741 x2742 x2673 x2743 x2744 x2745 x2746 x2748 (not x2792))
+(or x2760 (not x2737))
+(or x2760 (not x2738))
+(or x2760 (not x2739))
+(or x2760 (not x2740))
+(or x2760 (not x2741))
+(or x2760 (not x2742))
+(or x2760 (not x2673))
+(or x2760 (not x2743))
+(or x2760 (not x2744))
+(or x2760 (not x2750))
+(or x2760 x2749)
+(or x2760 x2748)
+(or x2760 (not x2747))
+(or x2760 (not x62))
+(or x2760 (not x61))
+(or x2737 x2738 x2739 x2740 x2741 x2742 x2673 x2743 x2744 x2750 (not x2749) (not x2748) x2747 x62 x61 (not x2760))
+(or x2793 x2766)
+(or x2793 x2794)
+(or (not x2766) (not x2794) (not x2793))
+(or (not x2793) (not x2766) x2795)
+(or (not x2795) x2793)
+(or (not x2795) x2766)
+(or x2796 (not x2737))
+(or x2796 (not x2738))
+(or x2796 (not x2739))
+(or x2796 (not x2740))
+(or x2796 (not x2741))
+(or x2796 (not x2742))
+(or x2796 (not x2673))
+(or x2796 (not x2743))
+(or x2796 (not x2750))
+(or x2796 (not x2749))
+(or x2796 (not x2748))
+(or x2796 x2747)
+(or x2796 (not x62))
+(or x2796 (not x61))
+(or x2796 x2765)
+(or x2796 (not x2795))
+(or x2737 x2738 x2739 x2740 x2741 x2742 x2673 x2743 x2750 x2749 x2748 (not x2747) x62 x61 (not x2765) x2795 (not x2796))
+(or x2797 x2772)
+(or x2797 (not x2798))
+(or (not x2772) x2798 (not x2797))
+(or (not x2797) (not x2772) x2799)
+(or (not x2799) x2797)
+(or (not x2799) x2772)
+(or x2800 x2770)
+(or x2800 x2771)
+(or x2800 (not x2799))
+(or (not x2770) (not x2771) x2799 (not x2800))
+(or (not x2800) (not x2770) x2801)
+(or (not x2801) x2800)
+(or (not x2801) x2770)
+(or x2802 (not x2737))
+(or x2802 (not x2738))
+(or x2802 (not x2739))
+(or x2802 (not x2740))
+(or x2802 (not x2741))
+(or x2802 (not x2742))
+(or x2802 (not x2750))
+(or x2802 (not x2749))
+(or x2802 x2748)
+(or x2802 x2747)
+(or x2802 (not x2801))
+(or x2737 x2738 x2739 x2740 x2741 x2742 x2750 x2749 (not x2748) (not x2747) x2801 (not x2802))
+(or x2803 x2776)
+(or x2803 (not x2804))
+(or (not x2776) x2804 (not x2803))
+(or (not x2803) (not x2776) x2805)
+(or (not x2805) x2803)
+(or (not x2805) x2776)
+(or x2806 (not x2737))
+(or x2806 (not x2738))
+(or x2806 (not x2739))
+(or x2806 (not x2740))
+(or x2806 (not x2750))
+(or x2806 (not x2749))
+(or x2806 x2748)
+(or x2806 (not x2747))
+(or x2806 (not x2774))
+(or x2806 x2775)
+(or x2806 (not x2805))
+(or x2737 x2738 x2739 x2740 x2750 x2749 (not x2748) x2747 x2774 (not x2775) x2805 (not x2806))
+(or x2807 (not x2737))
+(or x2807 (not x2750))
+(or x2807 (not x2749))
+(or x2807 (not x2748))
+(or x2807 (not x2747))
+(or x2807 (not x61))
+(or x2807 x2448)
+(or x2807 x2447)
+(or x2807 (not x2774))
+(or x2807 (not x2778))
+(or x2807 (not x2779))
+(or x2807 (not x2780))
+(or x2737 x2750 x2749 x2748 x2747 x61 (not x2448) (not x2447) x2774 x2778 x2779 x2780 (not x2807))
+(or x2808 x2787)
+(or x2808 x2782)
+(or x2808 x2783)
+(or x2808 (not x2784))
+(or (not x2787) (not x2782) (not x2783) x2784 (not x2808))
+(or (not x2808) (not x2787) x2809)
+(or (not x2809) x2808)
+(or (not x2809) x2787)
+(or x2810 (not x2750))
+(or x2810 (not x2749))
+(or x2810 (not x2748))
+(or x2810 (not x2747))
+(or x2810 (not x61))
+(or x2810 x2448)
+(or x2810 x2447)
+(or x2810 (not x2774))
+(or x2810 (not x2790))
+(or x2810 (not x2809))
+(or x2750 x2749 x2748 x2747 x61 (not x2448) (not x2447) x2774 x2790 x2809 (not x2810))
+(or (not x2810) (not x2807) (not x2754) (not x2806) (not x2802) (not x2758) (not x2796) (not x2760) (not x2761) (not x2792) x2811)
+(or (not x2811) x2810)
+(or (not x2811) x2807)
+(or (not x2811) x2754)
+(or (not x2811) x2806)
+(or (not x2811) x2802)
+(or (not x2811) x2758)
+(or (not x2811) x2796)
+(or (not x2811) x2760)
+(or (not x2811) x2761)
+(or (not x2811) x2792)
+(or x2812 (not x2654))
+(or x2812 (not x2656))
+(or x2812 (not x2655))
+(or x2654 x2656 x2655 (not x2812))
+(or (not x2812) (not x61) x2746)
+(or (not x2746) x2812)
+(or (not x2746) x61)
+(or x2813 (not x2737))
+(or x2813 (not x2738))
+(or x2813 (not x2739))
+(or x2813 (not x2740))
+(or x2813 (not x2741))
+(or x2813 (not x2742))
+(or x2813 (not x2673))
+(or x2813 (not x2743))
+(or x2813 (not x2744))
+(or x2813 (not x2745))
+(or x2813 (not x2746))
+(or x2813 (not x2747))
+(or x2737 x2738 x2739 x2740 x2741 x2742 x2673 x2743 x2744 x2745 x2746 x2747 (not x2813))
+(or x2638 (not x2750))
+(or x2638 x2749)
+(or x2638 (not x2748))
+(or x2638 (not x2747))
+(or x2750 (not x2749) x2748 x2747 (not x2638))
+(or (not x2638) (not x2639) (not x2603) x2814)
+(or (not x2814) x2638)
+(or (not x2814) x2639)
+(or (not x2814) x2603)
+(or x2750 (not x2749) (not x2748) x2747 x62 x61 x2745)
+(or (not x2745) (not x2750))
+(or (not x2745) x2749)
+(or (not x2745) x2748)
+(or (not x2745) (not x2747))
+(or (not x2745) (not x62))
+(or (not x2745) (not x61))
+(or x2750 x2749 x2748 (not x2747) x62 x61 x2744)
+(or (not x2744) (not x2750))
+(or (not x2744) (not x2749))
+(or (not x2744) (not x2748))
+(or (not x2744) x2747)
+(or (not x2744) (not x62))
+(or (not x2744) (not x61))
+(or x2761 (not x2737))
+(or x2761 (not x2738))
+(or x2761 (not x2739))
+(or x2761 (not x2740))
+(or x2761 (not x2741))
+(or x2761 (not x2742))
+(or x2761 (not x2673))
+(or x2761 (not x2743))
+(or x2761 (not x2744))
+(or x2761 (not x2745))
+(or x2761 (not x2814))
+(or x2761 x61)
+(or x2737 x2738 x2739 x2740 x2741 x2742 x2673 x2743 x2744 x2745 x2814 (not x61) (not x2761))
+(or x2815 x2794)
+(or x2815 x2816)
+(or (not x2794) (not x2816) (not x2815))
+(or (not x2815) (not x2794) x2817)
+(or (not x2817) x2815)
+(or (not x2817) x2794)
+(or x2750 x2749 x2748 (not x2747) x62 (not x61) x2743)
+(or (not x2743) (not x2750))
+(or (not x2743) (not x2749))
+(or (not x2743) (not x2748))
+(or (not x2743) x2747)
+(or (not x2743) (not x62))
+(or (not x2743) x61)
+(or x2759 (not x2737))
+(or x2759 (not x2738))
+(or x2759 (not x2739))
+(or x2759 (not x2740))
+(or x2759 (not x2741))
+(or x2759 (not x2742))
+(or x2759 (not x2673))
+(or x2759 (not x2743))
+(or x2759 (not x2750))
+(or x2759 (not x2749))
+(or x2759 (not x2748))
+(or x2759 x2747)
+(or x2759 (not x62))
+(or x2759 (not x61))
+(or x2737 x2738 x2739 x2740 x2741 x2742 x2673 x2743 x2750 x2749 x2748 (not x2747) x62 x61 (not x2759))
+(or x2818 (not x2737))
+(or x2818 (not x2738))
+(or x2818 (not x2739))
+(or x2818 (not x2740))
+(or x2818 (not x2741))
+(or x2818 (not x2742))
+(or x2818 (not x2673))
+(or x2818 (not x2743))
+(or x2818 (not x2750))
+(or x2818 (not x2749))
+(or x2818 (not x2748))
+(or x2818 x2747)
+(or x2818 (not x62))
+(or x2818 (not x61))
+(or x2818 x2765)
+(or x2818 x2766)
+(or x2818 (not x2817))
+(or x2737 x2738 x2739 x2740 x2741 x2742 x2673 x2743 x2750 x2749 x2748 (not x2747) x62 x61 (not x2765) (not x2766) x2817 (not x2818))
+(or x2758 (not x2737))
+(or x2758 (not x2738))
+(or x2758 (not x2739))
+(or x2758 (not x2740))
+(or x2758 (not x2741))
+(or x2758 (not x2742))
+(or x2758 (not x2673))
+(or x2758 (not x2750))
+(or x2758 (not x2749))
+(or x2758 (not x2748))
+(or x2758 x2747)
+(or x2758 (not x62))
+(or x2758 x61)
+(or x2737 x2738 x2739 x2740 x2741 x2742 x2673 x2750 x2749 x2748 (not x2747) x62 (not x61) (not x2758))
+(or x2819 x2771)
+(or x2819 (not x2772))
+(or (not x2771) x2772 (not x2819))
+(or (not x2819) (not x2771) x2820)
+(or (not x2820) x2819)
+(or (not x2820) x2771)
+(or x2757 (not x2737))
+(or x2757 (not x2738))
+(or x2757 (not x2739))
+(or x2757 (not x2740))
+(or x2757 (not x2741))
+(or x2757 (not x2742))
+(or x2757 (not x2750))
+(or x2757 (not x2749))
+(or x2757 x2748)
+(or x2757 x2747)
+(or x2737 x2738 x2739 x2740 x2741 x2742 x2750 x2749 (not x2748) (not x2747) (not x2757))
+(or x2821 (not x2737))
+(or x2821 (not x2738))
+(or x2821 (not x2739))
+(or x2821 (not x2740))
+(or x2821 (not x2741))
+(or x2821 (not x2742))
+(or x2821 (not x2750))
+(or x2821 (not x2749))
+(or x2821 x2748)
+(or x2821 x2747)
+(or x2821 x2770)
+(or x2821 (not x2820))
+(or x2737 x2738 x2739 x2740 x2741 x2742 x2750 x2749 (not x2748) (not x2747) (not x2770) x2820 (not x2821))
+(or x2750 x2749 (not x2748) x2747 (not x2822) x2741)
+(or (not x2741) (not x2750))
+(or (not x2741) (not x2749))
+(or (not x2741) x2748)
+(or (not x2741) (not x2747))
+(or (not x2741) x2822)
+(or x2756 (not x2737))
+(or x2756 (not x2738))
+(or x2756 (not x2739))
+(or x2756 (not x2740))
+(or x2756 (not x2741))
+(or x2756 (not x2750))
+(or x2756 (not x2749))
+(or x2756 x2748)
+(or x2756 (not x2747))
+(or x2737 x2738 x2739 x2740 x2741 x2750 x2749 (not x2748) x2747 (not x2756))
+(or x2823 x2775)
+(or x2823 x2776)
+(or x2823 x2804)
+(or x2823 x2824)
+(or (not x2775) (not x2776) (not x2804) (not x2824) (not x2823))
+(or (not x2823) (not x2775) x2825)
+(or (not x2825) x2823)
+(or (not x2825) x2775)
+(or x2750 x2749 (not x2748) x2747 (not x61) (not x62) x2740)
+(or (not x2740) (not x2750))
+(or (not x2740) (not x2749))
+(or (not x2740) x2748)
+(or (not x2740) (not x2747))
+(or (not x2740) x61)
+(or (not x2740) x62)
+(or x2755 (not x2737))
+(or x2755 (not x2738))
+(or x2755 (not x2739))
+(or x2755 (not x2740))
+(or x2755 (not x2750))
+(or x2755 (not x2749))
+(or x2755 x2748)
+(or x2755 (not x2747))
+(or x2755 (not x2774))
+(or x2737 x2738 x2739 x2740 x2750 x2749 (not x2748) x2747 x2774 (not x2755))
+(or x2826 (not x2737))
+(or x2826 (not x2738))
+(or x2826 (not x2739))
+(or x2826 (not x2740))
+(or x2826 (not x2750))
+(or x2826 (not x2749))
+(or x2826 x2748)
+(or x2826 (not x2747))
+(or x2826 (not x2774))
+(or x2826 (not x2825))
+(or x2737 x2738 x2739 x2740 x2750 x2749 (not x2748) x2747 x2774 x2825 (not x2826))
+(or x2754 (not x2737))
+(or x2754 (not x2738))
+(or x2754 (not x2739))
+(or x2754 (not x2750))
+(or x2754 (not x2749))
+(or x2754 x2748)
+(or x2754 (not x2747))
+(or x2754 x61)
+(or x2754 x62)
+(or x2737 x2738 x2739 x2750 x2749 (not x2748) x2747 (not x61) (not x62) (not x2754))
+(or x2750 x2749 x2748 x2747 x61 (not x2448) (not x2447) (not x2822) (not x2827) (not x2828) x2738)
+(or (not x2738) (not x2750))
+(or (not x2738) (not x2749))
+(or (not x2738) (not x2748))
+(or (not x2738) (not x2747))
+(or (not x2738) (not x61))
+(or (not x2738) x2448)
+(or (not x2738) x2447)
+(or (not x2738) x2822)
+(or (not x2738) x2827)
+(or (not x2738) x2828)
+(or x2753 (not x2737))
+(or x2753 (not x2738))
+(or x2753 (not x2750))
+(or x2753 (not x2749))
+(or x2753 (not x2748))
+(or x2753 (not x2747))
+(or x2753 (not x61))
+(or x2753 x2448)
+(or x2753 x2447)
+(or x2737 x2738 x2750 x2749 x2748 x2747 x61 (not x2448) (not x2447) (not x2753))
+(or (not x2709) (not x2708) x2707)
+(or (not x2707) x2709)
+(or (not x2707) x2708)
+(or (not x2709) x2708 x2706)
+(or (not x2706) x2709)
+(or (not x2706) (not x2708))
+(or x2709 (not x2708) x2705)
+(or (not x2705) (not x2709))
+(or (not x2705) x2708)
+(or x2709 x2708 (not x60) x61 x2829)
+(or (not x2829) (not x2709))
+(or (not x2829) (not x2708))
+(or (not x2829) x60)
+(or (not x2829) (not x61))
+(or x2822 (not x2829))
+(or x2822 (not x2705))
+(or x2822 (not x2706))
+(or x2822 (not x2707))
+(or x2829 x2705 x2706 x2707 (not x2822))
+(or x2750 x2749 x2748 x2747 x61 (not x2448) (not x2447) x2739)
+(or (not x2739) (not x2750))
+(or (not x2739) (not x2749))
+(or (not x2739) (not x2748))
+(or (not x2739) (not x2747))
+(or (not x2739) (not x61))
+(or (not x2739) x2448)
+(or (not x2739) x2447)
+(or x2750 x2749 x2748 x2747 x61 (not x2448) (not x2447) (not x2822) (not x2830) x2737)
+(or (not x2737) (not x2750))
+(or (not x2737) (not x2749))
+(or (not x2737) (not x2748))
+(or (not x2737) (not x2747))
+(or (not x2737) (not x61))
+(or (not x2737) x2448)
+(or (not x2737) x2447)
+(or (not x2737) x2822)
+(or (not x2737) x2830)
+(or x2752 (not x2737))
+(or x2752 (not x2750))
+(or x2752 (not x2749))
+(or x2752 (not x2748))
+(or x2752 (not x2747))
+(or x2752 (not x61))
+(or x2752 x2448)
+(or x2752 x2447)
+(or x2752 (not x2774))
+(or x2752 (not x2778))
+(or x2752 (not x2779))
+(or x2737 x2750 x2749 x2748 x2747 x61 (not x2448) (not x2447) x2774 x2778 x2779 (not x2752))
+(or x2831 (not x2737))
+(or x2831 (not x2750))
+(or x2831 (not x2749))
+(or x2831 (not x2748))
+(or x2831 (not x2747))
+(or x2831 (not x61))
+(or x2831 x2448)
+(or x2831 x2447)
+(or x2831 (not x2774))
+(or x2831 (not x2778))
+(or x2831 (not x2779))
+(or x2831 x2780)
+(or x2831 x2832)
+(or x2737 x2750 x2749 x2748 x2747 x61 (not x2448) (not x2447) x2774 x2778 x2779 (not x2780) (not x2832) (not x2831))
+(or x2833 x2783)
+(or x2833 x2784)
+(or (not x2783) (not x2784) (not x2833))
+(or (not x2833) (not x2783) x2834)
+(or (not x2834) x2833)
+(or (not x2834) x2783)
+(or x2835 x2709)
+(or x2835 x2708)
+(or (not x2709) (not x2708) (not x2835))
+(or x2836 x2709)
+(or x2836 (not x2708))
+(or (not x2709) x2708 (not x2836))
+(or x2837 (not x2709))
+(or x2837 x2708)
+(or x2709 (not x2708) (not x2837))
+(or x2838 (not x2709))
+(or x2838 (not x2708))
+(or x2838 x60)
+(or x2838 (not x61))
+(or x2709 x2708 (not x60) x61 (not x2838))
+(or (not x2838) (not x2837) (not x2836) (not x2835) x2774)
+(or (not x2774) x2838)
+(or (not x2774) x2837)
+(or (not x2774) x2836)
+(or (not x2774) x2835)
+(or x2751 (not x2750))
+(or x2751 (not x2749))
+(or x2751 (not x2748))
+(or x2751 (not x2747))
+(or x2751 (not x61))
+(or x2751 x2448)
+(or x2751 x2447)
+(or x2751 (not x2774))
+(or x2751 (not x2790))
+(or x2750 x2749 x2748 x2747 x61 (not x2448) (not x2447) x2774 x2790 (not x2751))
+(or x2839 (not x2750))
+(or x2839 (not x2749))
+(or x2839 (not x2748))
+(or x2839 (not x2747))
+(or x2839 (not x61))
+(or x2839 x2448)
+(or x2839 x2447)
+(or x2839 (not x2774))
+(or x2839 (not x2790))
+(or x2839 x2787)
+(or x2839 x2782)
+(or x2839 (not x2834))
+(or x2750 x2749 x2748 x2747 x61 (not x2448) (not x2447) x2774 x2790 (not x2787) (not x2782) x2834 (not x2839))
+(or (not x2839) (not x2831) (not x2753) (not x2754) (not x2826) (not x2756) (not x2821) (not x2758) (not x2818) (not x2761) (not x2813) x2840)
+(or (not x2840) x2839)
+(or (not x2840) x2831)
+(or (not x2840) x2753)
+(or (not x2840) x2754)
+(or (not x2840) x2826)
+(or (not x2840) x2756)
+(or (not x2840) x2821)
+(or (not x2840) x2758)
+(or (not x2840) x2818)
+(or (not x2840) x2761)
+(or (not x2840) x2813)
+(or x2841 (not x2842))
+(or x2841 (not x2843))
+(or x2841 (not x2844))
+(or x2841 (not x2845))
+(or x2841 (not x2846))
+(or x2841 (not x2847))
+(or x2841 (not x2671))
+(or x2841 (not x2848))
+(or x2841 (not x2849))
+(or x2841 (not x2850))
+(or x2841 (not x2851))
+(or x2841 (not x2855))
+(or x2842 x2843 x2844 x2845 x2846 x2847 x2671 x2848 x2849 x2850 x2851 x2855 (not x2841))
+(or (not x2856) (not x2857) (not x2858) (not x2859) (not x2860) (not x2861) (not x2862) (not x2863) (not x2864) (not x2865) (not x2866) (not x2841) x2867)
+(or (not x2867) x2856)
+(or (not x2867) x2857)
+(or (not x2867) x2858)
+(or (not x2867) x2859)
+(or (not x2867) x2860)
+(or (not x2867) x2861)
+(or (not x2867) x2862)
+(or (not x2867) x2863)
+(or (not x2867) x2864)
+(or (not x2867) x2865)
+(or (not x2867) x2866)
+(or (not x2867) x2841)
+(or x2868 (not x2842))
+(or x2868 (not x2843))
+(or x2868 (not x2844))
+(or x2868 (not x2845))
+(or x2868 (not x2846))
+(or x2868 (not x2847))
+(or x2868 (not x2671))
+(or x2868 (not x2848))
+(or x2868 (not x2849))
+(or x2868 (not x2850))
+(or x2868 (not x2851))
+(or x2868 (not x2854))
+(or x2842 x2843 x2844 x2845 x2846 x2847 x2671 x2848 x2849 x2850 x2851 x2854 (not x2868))
+(or x2869 x2870)
+(or x2869 (not x2871))
+(or (not x2870) x2871 (not x2869))
+(or (not x2869) (not x2870) x2872)
+(or (not x2872) x2869)
+(or (not x2872) x2870)
+(or x2873 (not x2842))
+(or x2873 (not x2843))
+(or x2873 (not x2844))
+(or x2873 (not x2845))
+(or x2873 (not x2846))
+(or x2873 (not x2847))
+(or x2873 (not x2671))
+(or x2873 (not x2848))
+(or x2873 (not x2855))
+(or x2873 (not x2854))
+(or x2873 (not x2853))
+(or x2873 x2852)
+(or x2873 (not x62))
+(or x2873 (not x61))
+(or x2873 (not x2872))
+(or x2842 x2843 x2844 x2845 x2846 x2847 x2671 x2848 x2855 x2854 x2853 (not x2852) x62 x61 x2872 (not x2873))
+(or x2874 (not x2842))
+(or x2874 (not x2843))
+(or x2874 (not x2844))
+(or x2874 (not x2845))
+(or x2874 (not x2846))
+(or x2874 (not x2847))
+(or x2874 (not x2855))
+(or x2874 (not x2854))
+(or x2874 x2853)
+(or x2874 x2852)
+(or x2874 x2875)
+(or x2874 x2876)
+(or x2874 x2877)
+(or x2842 x2843 x2844 x2845 x2846 x2847 x2855 x2854 (not x2853) (not x2852) (not x2875) (not x2876) (not x2877) (not x2874))
+(or x2878 (not x2842))
+(or x2878 (not x2843))
+(or x2878 (not x2844))
+(or x2878 (not x2845))
+(or x2878 (not x2855))
+(or x2878 (not x2854))
+(or x2878 x2853)
+(or x2878 (not x2852))
+(or x2878 (not x2879))
+(or x2878 x2880)
+(or x2878 x2881)
+(or x2842 x2843 x2844 x2845 x2855 x2854 (not x2853) x2852 x2879 (not x2880) (not x2881) (not x2878))
+(or x2882 (not x2842))
+(or x2882 (not x2855))
+(or x2882 (not x2854))
+(or x2882 (not x2853))
+(or x2882 (not x2852))
+(or x2882 (not x61))
+(or x2882 x2448)
+(or x2882 x2447)
+(or x2882 (not x2879))
+(or x2882 (not x2778))
+(or x2882 (not x2779))
+(or x2882 x2883)
+(or x2842 x2855 x2854 x2853 x2852 x61 (not x2448) (not x2447) x2879 x2778 x2779 (not x2883) (not x2882))
+(or x2884 x2885)
+(or x2884 x2886)
+(or x2884 x2887)
+(or (not x2885) (not x2886) (not x2887) (not x2884))
+(or (not x2884) (not x2885) x2888)
+(or (not x2888) x2884)
+(or (not x2888) x2885)
+(or x2889 x2890)
+(or x2889 (not x2888))
+(or (not x2890) x2888 (not x2889))
+(or (not x2889) (not x2890) x2891)
+(or (not x2891) x2889)
+(or (not x2891) x2890)
+(or x2892 (not x2855))
+(or x2892 (not x2854))
+(or x2892 (not x2853))
+(or x2892 (not x2852))
+(or x2892 (not x61))
+(or x2892 x2448)
+(or x2892 x2447)
+(or x2892 (not x2879))
+(or x2892 (not x2790))
+(or x2892 (not x2891))
+(or x2855 x2854 x2853 x2852 x61 (not x2448) (not x2447) x2879 x2790 x2891 (not x2892))
+(or (not x2892) (not x2882) (not x2858) (not x2859) (not x2878) (not x2861) (not x2874) (not x2863) (not x2873) (not x2866) (not x2868) x2893)
+(or (not x2893) x2892)
+(or (not x2893) x2882)
+(or (not x2893) x2858)
+(or (not x2893) x2859)
+(or (not x2893) x2878)
+(or (not x2893) x2861)
+(or (not x2893) x2874)
+(or (not x2893) x2863)
+(or (not x2893) x2873)
+(or (not x2893) x2866)
+(or (not x2893) x2868)
+(or x2894 (not x2842))
+(or x2894 (not x2843))
+(or x2894 (not x2844))
+(or x2894 (not x2845))
+(or x2894 (not x2846))
+(or x2894 (not x2847))
+(or x2894 (not x2671))
+(or x2894 (not x2848))
+(or x2894 (not x2849))
+(or x2894 (not x2850))
+(or x2894 (not x2851))
+(or x2894 (not x2853))
+(or x2842 x2843 x2844 x2845 x2846 x2847 x2671 x2848 x2849 x2850 x2851 x2853 (not x2894))
+(or x2865 (not x2842))
+(or x2865 (not x2843))
+(or x2865 (not x2844))
+(or x2865 (not x2845))
+(or x2865 (not x2846))
+(or x2865 (not x2847))
+(or x2865 (not x2671))
+(or x2865 (not x2848))
+(or x2865 (not x2849))
+(or x2865 (not x2855))
+(or x2865 x2854)
+(or x2865 x2853)
+(or x2865 (not x2852))
+(or x2865 (not x62))
+(or x2865 (not x61))
+(or x2842 x2843 x2844 x2845 x2846 x2847 x2671 x2848 x2849 x2855 (not x2854) (not x2853) x2852 x62 x61 (not x2865))
+(or x2895 x2871)
+(or x2895 x2896)
+(or (not x2871) (not x2896) (not x2895))
+(or (not x2895) (not x2871) x2897)
+(or (not x2897) x2895)
+(or (not x2897) x2871)
+(or x2898 (not x2842))
+(or x2898 (not x2843))
+(or x2898 (not x2844))
+(or x2898 (not x2845))
+(or x2898 (not x2846))
+(or x2898 (not x2847))
+(or x2898 (not x2671))
+(or x2898 (not x2848))
+(or x2898 (not x2855))
+(or x2898 (not x2854))
+(or x2898 (not x2853))
+(or x2898 x2852)
+(or x2898 (not x62))
+(or x2898 (not x61))
+(or x2898 x2870)
+(or x2898 (not x2897))
+(or x2842 x2843 x2844 x2845 x2846 x2847 x2671 x2848 x2855 x2854 x2853 (not x2852) x62 x61 (not x2870) x2897 (not x2898))
+(or x2899 x2877)
+(or x2899 (not x2900))
+(or (not x2877) x2900 (not x2899))
+(or (not x2899) (not x2877) x2901)
+(or (not x2901) x2899)
+(or (not x2901) x2877)
+(or x2902 x2875)
+(or x2902 x2876)
+(or x2902 (not x2901))
+(or (not x2875) (not x2876) x2901 (not x2902))
+(or (not x2902) (not x2875) x2903)
+(or (not x2903) x2902)
+(or (not x2903) x2875)
+(or x2904 (not x2842))
+(or x2904 (not x2843))
+(or x2904 (not x2844))
+(or x2904 (not x2845))
+(or x2904 (not x2846))
+(or x2904 (not x2847))
+(or x2904 (not x2855))
+(or x2904 (not x2854))
+(or x2904 x2853)
+(or x2904 x2852)
+(or x2904 (not x2903))
+(or x2842 x2843 x2844 x2845 x2846 x2847 x2855 x2854 (not x2853) (not x2852) x2903 (not x2904))
+(or x2905 x2881)
+(or x2905 (not x2906))
+(or (not x2881) x2906 (not x2905))
+(or (not x2905) (not x2881) x2907)
+(or (not x2907) x2905)
+(or (not x2907) x2881)
+(or x2908 (not x2842))
+(or x2908 (not x2843))
+(or x2908 (not x2844))
+(or x2908 (not x2845))
+(or x2908 (not x2855))
+(or x2908 (not x2854))
+(or x2908 x2853)
+(or x2908 (not x2852))
+(or x2908 (not x2879))
+(or x2908 x2880)
+(or x2908 (not x2907))
+(or x2842 x2843 x2844 x2845 x2855 x2854 (not x2853) x2852 x2879 (not x2880) x2907 (not x2908))
+(or x2909 (not x2842))
+(or x2909 (not x2855))
+(or x2909 (not x2854))
+(or x2909 (not x2853))
+(or x2909 (not x2852))
+(or x2909 (not x61))
+(or x2909 x2448)
+(or x2909 x2447)
+(or x2909 (not x2879))
+(or x2909 (not x2778))
+(or x2909 (not x2779))
+(or x2909 (not x2883))
+(or x2842 x2855 x2854 x2853 x2852 x61 (not x2448) (not x2447) x2879 x2778 x2779 x2883 (not x2909))
+(or x2910 x2890)
+(or x2910 x2885)
+(or x2910 x2886)
+(or x2910 (not x2887))
+(or (not x2890) (not x2885) (not x2886) x2887 (not x2910))
+(or (not x2910) (not x2890) x2911)
+(or (not x2911) x2910)
+(or (not x2911) x2890)
+(or x2912 (not x2855))
+(or x2912 (not x2854))
+(or x2912 (not x2853))
+(or x2912 (not x2852))
+(or x2912 (not x61))
+(or x2912 x2448)
+(or x2912 x2447)
+(or x2912 (not x2879))
+(or x2912 (not x2790))
+(or x2912 (not x2911))
+(or x2855 x2854 x2853 x2852 x61 (not x2448) (not x2447) x2879 x2790 x2911 (not x2912))
+(or (not x2912) (not x2909) (not x2859) (not x2908) (not x2904) (not x2863) (not x2898) (not x2865) (not x2866) (not x2894) x2913)
+(or (not x2913) x2912)
+(or (not x2913) x2909)
+(or (not x2913) x2859)
+(or (not x2913) x2908)
+(or (not x2913) x2904)
+(or (not x2913) x2863)
+(or (not x2913) x2898)
+(or (not x2913) x2865)
+(or (not x2913) x2866)
+(or (not x2913) x2894)
+(or x2914 (not x2651))
+(or x2914 (not x2653))
+(or x2914 (not x2652))
+(or x2651 x2653 x2652 (not x2914))
+(or (not x2914) (not x61) x2851)
+(or (not x2851) x2914)
+(or (not x2851) x61)
+(or x2915 (not x2842))
+(or x2915 (not x2843))
+(or x2915 (not x2844))
+(or x2915 (not x2845))
+(or x2915 (not x2846))
+(or x2915 (not x2847))
+(or x2915 (not x2671))
+(or x2915 (not x2848))
+(or x2915 (not x2849))
+(or x2915 (not x2850))
+(or x2915 (not x2851))
+(or x2915 (not x2852))
+(or x2842 x2843 x2844 x2845 x2846 x2847 x2671 x2848 x2849 x2850 x2851 x2852 (not x2915))
+(or x2636 (not x2855))
+(or x2636 x2854)
+(or x2636 (not x2853))
+(or x2636 (not x2852))
+(or x2855 (not x2854) x2853 x2852 (not x2636))
+(or (not x2636) (not x2637) (not x2601) x2916)
+(or (not x2916) x2636)
+(or (not x2916) x2637)
+(or (not x2916) x2601)
+(or x2855 (not x2854) (not x2853) x2852 x62 x61 x2850)
+(or (not x2850) (not x2855))
+(or (not x2850) x2854)
+(or (not x2850) x2853)
+(or (not x2850) (not x2852))
+(or (not x2850) (not x62))
+(or (not x2850) (not x61))
+(or x2855 x2854 x2853 (not x2852) x62 x61 x2849)
+(or (not x2849) (not x2855))
+(or (not x2849) (not x2854))
+(or (not x2849) (not x2853))
+(or (not x2849) x2852)
+(or (not x2849) (not x62))
+(or (not x2849) (not x61))
+(or x2866 (not x2842))
+(or x2866 (not x2843))
+(or x2866 (not x2844))
+(or x2866 (not x2845))
+(or x2866 (not x2846))
+(or x2866 (not x2847))
+(or x2866 (not x2671))
+(or x2866 (not x2848))
+(or x2866 (not x2849))
+(or x2866 (not x2850))
+(or x2866 (not x2916))
+(or x2866 x61)
+(or x2842 x2843 x2844 x2845 x2846 x2847 x2671 x2848 x2849 x2850 x2916 (not x61) (not x2866))
+(or x2917 x2896)
+(or x2917 x2918)
+(or (not x2896) (not x2918) (not x2917))
+(or (not x2917) (not x2896) x2919)
+(or (not x2919) x2917)
+(or (not x2919) x2896)
+(or x2855 x2854 x2853 (not x2852) x62 (not x61) x2848)
+(or (not x2848) (not x2855))
+(or (not x2848) (not x2854))
+(or (not x2848) (not x2853))
+(or (not x2848) x2852)
+(or (not x2848) (not x62))
+(or (not x2848) x61)
+(or x2864 (not x2842))
+(or x2864 (not x2843))
+(or x2864 (not x2844))
+(or x2864 (not x2845))
+(or x2864 (not x2846))
+(or x2864 (not x2847))
+(or x2864 (not x2671))
+(or x2864 (not x2848))
+(or x2864 (not x2855))
+(or x2864 (not x2854))
+(or x2864 (not x2853))
+(or x2864 x2852)
+(or x2864 (not x62))
+(or x2864 (not x61))
+(or x2842 x2843 x2844 x2845 x2846 x2847 x2671 x2848 x2855 x2854 x2853 (not x2852) x62 x61 (not x2864))
+(or x2920 (not x2842))
+(or x2920 (not x2843))
+(or x2920 (not x2844))
+(or x2920 (not x2845))
+(or x2920 (not x2846))
+(or x2920 (not x2847))
+(or x2920 (not x2671))
+(or x2920 (not x2848))
+(or x2920 (not x2855))
+(or x2920 (not x2854))
+(or x2920 (not x2853))
+(or x2920 x2852)
+(or x2920 (not x62))
+(or x2920 (not x61))
+(or x2920 x2870)
+(or x2920 x2871)
+(or x2920 (not x2919))
+(or x2842 x2843 x2844 x2845 x2846 x2847 x2671 x2848 x2855 x2854 x2853 (not x2852) x62 x61 (not x2870) (not x2871) x2919 (not x2920))
+(or x2863 (not x2842))
+(or x2863 (not x2843))
+(or x2863 (not x2844))
+(or x2863 (not x2845))
+(or x2863 (not x2846))
+(or x2863 (not x2847))
+(or x2863 (not x2671))
+(or x2863 (not x2855))
+(or x2863 (not x2854))
+(or x2863 (not x2853))
+(or x2863 x2852)
+(or x2863 (not x62))
+(or x2863 x61)
+(or x2842 x2843 x2844 x2845 x2846 x2847 x2671 x2855 x2854 x2853 (not x2852) x62 (not x61) (not x2863))
+(or x2921 x2876)
+(or x2921 (not x2877))
+(or (not x2876) x2877 (not x2921))
+(or (not x2921) (not x2876) x2922)
+(or (not x2922) x2921)
+(or (not x2922) x2876)
+(or x2862 (not x2842))
+(or x2862 (not x2843))
+(or x2862 (not x2844))
+(or x2862 (not x2845))
+(or x2862 (not x2846))
+(or x2862 (not x2847))
+(or x2862 (not x2855))
+(or x2862 (not x2854))
+(or x2862 x2853)
+(or x2862 x2852)
+(or x2842 x2843 x2844 x2845 x2846 x2847 x2855 x2854 (not x2853) (not x2852) (not x2862))
+(or x2923 (not x2842))
+(or x2923 (not x2843))
+(or x2923 (not x2844))
+(or x2923 (not x2845))
+(or x2923 (not x2846))
+(or x2923 (not x2847))
+(or x2923 (not x2855))
+(or x2923 (not x2854))
+(or x2923 x2853)
+(or x2923 x2852)
+(or x2923 x2875)
+(or x2923 (not x2922))
+(or x2842 x2843 x2844 x2845 x2846 x2847 x2855 x2854 (not x2853) (not x2852) (not x2875) x2922 (not x2923))
+(or x2855 x2854 (not x2853) x2852 (not x2924) x2846)
+(or (not x2846) (not x2855))
+(or (not x2846) (not x2854))
+(or (not x2846) x2853)
+(or (not x2846) (not x2852))
+(or (not x2846) x2924)
+(or x2861 (not x2842))
+(or x2861 (not x2843))
+(or x2861 (not x2844))
+(or x2861 (not x2845))
+(or x2861 (not x2846))
+(or x2861 (not x2855))
+(or x2861 (not x2854))
+(or x2861 x2853)
+(or x2861 (not x2852))
+(or x2842 x2843 x2844 x2845 x2846 x2855 x2854 (not x2853) x2852 (not x2861))
+(or x2925 x2880)
+(or x2925 x2881)
+(or x2925 x2906)
+(or x2925 x2926)
+(or (not x2880) (not x2881) (not x2906) (not x2926) (not x2925))
+(or (not x2925) (not x2880) x2927)
+(or (not x2927) x2925)
+(or (not x2927) x2880)
+(or x2855 x2854 (not x2853) x2852 (not x61) (not x62) x2845)
+(or (not x2845) (not x2855))
+(or (not x2845) (not x2854))
+(or (not x2845) x2853)
+(or (not x2845) (not x2852))
+(or (not x2845) x61)
+(or (not x2845) x62)
+(or x2860 (not x2842))
+(or x2860 (not x2843))
+(or x2860 (not x2844))
+(or x2860 (not x2845))
+(or x2860 (not x2855))
+(or x2860 (not x2854))
+(or x2860 x2853)
+(or x2860 (not x2852))
+(or x2860 (not x2879))
+(or x2842 x2843 x2844 x2845 x2855 x2854 (not x2853) x2852 x2879 (not x2860))
+(or x2928 (not x2842))
+(or x2928 (not x2843))
+(or x2928 (not x2844))
+(or x2928 (not x2845))
+(or x2928 (not x2855))
+(or x2928 (not x2854))
+(or x2928 x2853)
+(or x2928 (not x2852))
+(or x2928 (not x2879))
+(or x2928 (not x2927))
+(or x2842 x2843 x2844 x2845 x2855 x2854 (not x2853) x2852 x2879 x2927 (not x2928))
+(or x2859 (not x2842))
+(or x2859 (not x2843))
+(or x2859 (not x2844))
+(or x2859 (not x2855))
+(or x2859 (not x2854))
+(or x2859 x2853)
+(or x2859 (not x2852))
+(or x2859 x61)
+(or x2859 x62)
+(or x2842 x2843 x2844 x2855 x2854 (not x2853) x2852 (not x61) (not x62) (not x2859))
+(or x2855 x2854 x2853 x2852 x61 (not x2448) (not x2447) (not x2924) (not x2827) (not x2828) x2843)
+(or (not x2843) (not x2855))
+(or (not x2843) (not x2854))
+(or (not x2843) (not x2853))
+(or (not x2843) (not x2852))
+(or (not x2843) (not x61))
+(or (not x2843) x2448)
+(or (not x2843) x2447)
+(or (not x2843) x2924)
+(or (not x2843) x2827)
+(or (not x2843) x2828)
+(or x2858 (not x2842))
+(or x2858 (not x2843))
+(or x2858 (not x2855))
+(or x2858 (not x2854))
+(or x2858 (not x2853))
+(or x2858 (not x2852))
+(or x2858 (not x61))
+(or x2858 x2448)
+(or x2858 x2447)
+(or x2842 x2843 x2855 x2854 x2853 x2852 x61 (not x2448) (not x2447) (not x2858))
+(or (not x2618) (not x2660) x2779)
+(or (not x2779) x2618)
+(or (not x2779) x2660)
+(or (not x2555) (not x2556) (not x2665) x2778)
+(or (not x2778) x2555)
+(or (not x2778) x2556)
+(or (not x2778) x2665)
+(or x2830 (not x2778))
+(or x2830 (not x2779))
+(or x2778 x2779 (not x2830))
+(or (not x2722) (not x2721) x2720)
+(or (not x2720) x2722)
+(or (not x2720) x2721)
+(or (not x2722) x2721 x2719)
+(or (not x2719) x2722)
+(or (not x2719) (not x2721))
+(or x2722 (not x2721) x2718)
+(or (not x2718) (not x2722))
+(or (not x2718) x2721)
+(or (not x60) x61 x2432)
+(or (not x2432) x60)
+(or (not x2432) (not x61))
+(or x2722 x2721 (not x60) x61 x2929)
+(or (not x2929) (not x2722))
+(or (not x2929) (not x2721))
+(or (not x2929) x60)
+(or (not x2929) (not x61))
+(or x2924 (not x2929))
+(or x2924 (not x2718))
+(or x2924 (not x2719))
+(or x2924 (not x2720))
+(or x2929 x2718 x2719 x2720 (not x2924))
+(or x2855 x2854 x2853 x2852 x61 (not x2448) (not x2447) x2844)
+(or (not x2844) (not x2855))
+(or (not x2844) (not x2854))
+(or (not x2844) (not x2853))
+(or (not x2844) (not x2852))
+(or (not x2844) (not x61))
+(or (not x2844) x2448)
+(or (not x2844) x2447)
+(or x2855 x2854 x2853 x2852 x61 (not x2448) (not x2447) (not x2924) (not x2830) x2842)
+(or (not x2842) (not x2855))
+(or (not x2842) (not x2854))
+(or (not x2842) (not x2853))
+(or (not x2842) (not x2852))
+(or (not x2842) (not x61))
+(or (not x2842) x2448)
+(or (not x2842) x2447)
+(or (not x2842) x2924)
+(or (not x2842) x2830)
+(or x2857 (not x2842))
+(or x2857 (not x2855))
+(or x2857 (not x2854))
+(or x2857 (not x2853))
+(or x2857 (not x2852))
+(or x2857 (not x61))
+(or x2857 x2448)
+(or x2857 x2447)
+(or x2857 (not x2879))
+(or x2857 (not x2778))
+(or x2857 (not x2779))
+(or x2842 x2855 x2854 x2853 x2852 x61 (not x2448) (not x2447) x2879 x2778 x2779 (not x2857))
+(or x2930 (not x2842))
+(or x2930 (not x2855))
+(or x2930 (not x2854))
+(or x2930 (not x2853))
+(or x2930 (not x2852))
+(or x2930 (not x61))
+(or x2930 x2448)
+(or x2930 x2447)
+(or x2930 (not x2879))
+(or x2930 (not x2778))
+(or x2930 (not x2779))
+(or x2930 x2883)
+(or x2930 x2931)
+(or x2842 x2855 x2854 x2853 x2852 x61 (not x2448) (not x2447) x2879 x2778 x2779 (not x2883) (not x2931) (not x2930))
+(or x2932 x2886)
+(or x2932 x2887)
+(or (not x2886) (not x2887) (not x2932))
+(or (not x2932) (not x2886) x2933)
+(or (not x2933) x2932)
+(or (not x2933) x2886)
+(or x2568 (not x2554))
+(or x2568 (not x2498))
+(or x2554 x2498 (not x2568))
+(or x2556 (not x2597))
+(or x2556 x2578)
+(or x2556 (not x2579))
+(or x2556 (not x2580))
+(or x2556 (not x2581))
+(or x2556 (not x2583))
+(or x2556 (not x2530))
+(or x2556 (not x2584))
+(or x2556 (not x2585))
+(or x2556 (not x2491))
+(or x2556 (not x2586))
+(or x2556 (not x2554))
+(or x2556 (not x2498))
+(or x2597 (not x2578) x2579 x2580 x2581 x2583 x2530 x2584 x2585 x2491 x2586 x2554 x2498 (not x2556))
+(or x2681 (not x2578))
+(or x2681 (not x2579))
+(or x2578 x2579 (not x2681))
+(or x2679 (not x2578))
+(or x2679 (not x2579))
+(or x2679 (not x2580))
+(or x2679 (not x2581))
+(or x2578 x2579 x2580 x2581 (not x2679))
+(or x2691 (not x2584))
+(or x2691 (not x2585))
+(or x2584 x2585 (not x2691))
+(or x2687 (not x2554))
+(or x2687 (not x2584))
+(or x2687 (not x2585))
+(or x2554 x2584 x2585 (not x2687))
+(or x2692 (not x2498))
+(or x2692 (not x2554))
+(or x2692 (not x2584))
+(or x2692 (not x2585))
+(or x2498 x2554 x2584 x2585 (not x2692))
+(or x2686 (not x2583))
+(or x2686 (not x2498))
+(or x2686 (not x2554))
+(or x2686 (not x2584))
+(or x2686 (not x2585))
+(or x2583 x2498 x2554 x2584 x2585 (not x2686))
+(or x2555 (not x2583))
+(or x2555 (not x2498))
+(or x2555 (not x2554))
+(or x2555 (not x2584))
+(or x2555 (not x2585))
+(or x2555 (not x2597))
+(or x2555 (not x2491))
+(or x2555 x2586)
+(or x2555 (not x2530))
+(or x2555 (not x2578))
+(or x2555 (not x2579))
+(or x2555 (not x2580))
+(or x2555 (not x2581))
+(or x2583 x2498 x2554 x2584 x2585 x2597 x2491 (not x2586) x2530 x2578 x2579 x2580 x2581 (not x2555))
+(or (not x2555) (not x2556) x2934)
+(or (not x2934) x2555)
+(or (not x2934) x2556)
+(or x2828 (not x2934))
+(or x2828 x2660)
+(or x2934 (not x2660) (not x2828))
+(or x2554 x2498 x2563)
+(or (not x2563) (not x2554))
+(or (not x2563) (not x2498))
+(or x2597 (not x2578) x2579 x2580 x2581 x2583 x2530 x2584 x2585 x2491 x2586 x2554 x2498 x2547)
+(or (not x2547) (not x2597))
+(or (not x2547) x2578)
+(or (not x2547) (not x2579))
+(or (not x2547) (not x2580))
+(or (not x2547) (not x2581))
+(or (not x2547) (not x2583))
+(or (not x2547) (not x2530))
+(or (not x2547) (not x2584))
+(or (not x2547) (not x2585))
+(or (not x2547) (not x2491))
+(or (not x2547) (not x2586))
+(or (not x2547) (not x2554))
+(or (not x2547) (not x2498))
+(or x2578 x2579 x2623)
+(or (not x2623) (not x2578))
+(or (not x2623) (not x2579))
+(or x2578 x2579 x2580 x2581 x2620)
+(or (not x2620) (not x2578))
+(or (not x2620) (not x2579))
+(or (not x2620) (not x2580))
+(or (not x2620) (not x2581))
+(or x2584 x2585 x2634)
+(or (not x2634) (not x2584))
+(or (not x2634) (not x2585))
+(or x2554 x2584 x2585 x2628)
+(or (not x2628) (not x2554))
+(or (not x2628) (not x2584))
+(or (not x2628) (not x2585))
+(or x2498 x2554 x2584 x2585 x2635)
+(or (not x2635) (not x2498))
+(or (not x2635) (not x2554))
+(or (not x2635) (not x2584))
+(or (not x2635) (not x2585))
+(or x2583 x2498 x2554 x2584 x2585 x2627)
+(or (not x2627) (not x2583))
+(or (not x2627) (not x2498))
+(or (not x2627) (not x2554))
+(or (not x2627) (not x2584))
+(or (not x2627) (not x2585))
+(or x2583 x2498 x2554 x2584 x2585 x2597 x2491 (not x2586) x2530 x2578 x2579 x2580 x2581 x2546)
+(or (not x2546) (not x2583))
+(or (not x2546) (not x2498))
+(or (not x2546) (not x2554))
+(or (not x2546) (not x2584))
+(or (not x2546) (not x2585))
+(or (not x2546) (not x2597))
+(or (not x2546) (not x2491))
+(or (not x2546) x2586)
+(or (not x2546) (not x2530))
+(or (not x2546) (not x2578))
+(or (not x2546) (not x2579))
+(or (not x2546) (not x2580))
+(or (not x2546) (not x2581))
+(or x2618 (not x2546))
+(or x2618 (not x2547))
+(or x2546 x2547 (not x2618))
+(or x2827 (not x2546))
+(or x2827 (not x2547))
+(or x2827 x2665)
+(or x2546 x2547 (not x2665) (not x2827))
+(or (not x2827) (not x2828) x2790)
+(or (not x2790) x2827)
+(or (not x2790) x2828)
+(or x2935 x2722)
+(or x2935 x2721)
+(or (not x2722) (not x2721) (not x2935))
+(or x2936 x2722)
+(or x2936 (not x2721))
+(or (not x2722) x2721 (not x2936))
+(or x2937 (not x2722))
+(or x2937 x2721)
+(or x2722 (not x2721) (not x2937))
+(or x2472 x60)
+(or x2472 (not x61))
+(or (not x60) x61 (not x2472))
+(or x2938 (not x2722))
+(or x2938 (not x2721))
+(or x2938 x60)
+(or x2938 (not x61))
+(or x2722 x2721 (not x60) x61 (not x2938))
+(or (not x2938) (not x2937) (not x2936) (not x2935) x2879)
+(or (not x2879) x2938)
+(or (not x2879) x2937)
+(or (not x2879) x2936)
+(or (not x2879) x2935)
+(or x2856 (not x2855))
+(or x2856 (not x2854))
+(or x2856 (not x2853))
+(or x2856 (not x2852))
+(or x2856 (not x61))
+(or x2856 x2448)
+(or x2856 x2447)
+(or x2856 (not x2879))
+(or x2856 (not x2790))
+(or x2855 x2854 x2853 x2852 x61 (not x2448) (not x2447) x2879 x2790 (not x2856))
+(or x2939 (not x2855))
+(or x2939 (not x2854))
+(or x2939 (not x2853))
+(or x2939 (not x2852))
+(or x2939 (not x61))
+(or x2939 x2448)
+(or x2939 x2447)
+(or x2939 (not x2879))
+(or x2939 (not x2790))
+(or x2939 x2890)
+(or x2939 x2885)
+(or x2939 (not x2933))
+(or x2855 x2854 x2853 x2852 x61 (not x2448) (not x2447) x2879 x2790 (not x2890) (not x2885) x2933 (not x2939))
+(or (not x2939) (not x2930) (not x2858) (not x2859) (not x2928) (not x2861) (not x2923) (not x2863) (not x2920) (not x2866) (not x2915) x2940)
+(or (not x2940) x2939)
+(or (not x2940) x2930)
+(or (not x2940) x2858)
+(or (not x2940) x2859)
+(or (not x2940) x2928)
+(or (not x2940) x2861)
+(or (not x2940) x2923)
+(or (not x2940) x2863)
+(or (not x2940) x2920)
+(or (not x2940) x2866)
+(or (not x2940) x2915)
+(or x2941 (not x2942))
+(or x2941 (not x2512))
+(or x2941 (not x2943))
+(or x2941 (not x2518))
+(or x2942 x2512 x2943 x2518 (not x2941))
+(or x2944 (not x2942))
+(or x2944 (not x2512))
+(or x2944 x2518)
+(or x2944 (not x2517))
+(or x2944 (not x2516))
+(or x2944 x2515)
+(or x2944 x2491)
+(or x2944 x2945)
+(or x2942 x2512 (not x2518) x2517 x2516 (not x2515) (not x2491) (not x2945) (not x2944))
+(or x2946 (not x2518))
+(or x2946 x2517)
+(or x2946 x2516)
+(or x2946 x2515)
+(or x2946 x2448)
+(or x2946 x2447)
+(or x2946 x2947)
+(or x2946 x2948)
+(or x2518 (not x2517) (not x2516) (not x2515) (not x2448) (not x2447) (not x2947) (not x2948) (not x2946))
+(or (not x2946) (not x2944) (not x2941) x2949)
+(or (not x2949) x2946)
+(or (not x2949) x2944)
+(or (not x2949) x2941)
+(or x2950 (not x2942))
+(or x2950 (not x2512))
+(or x2950 (not x2943))
+(or x2950 (not x2517))
+(or x2942 x2512 x2943 x2517 (not x2950))
+(or (not x2951) (not x2952) (not x2953) (not x2950) x2954)
+(or (not x2954) x2951)
+(or (not x2954) x2952)
+(or (not x2954) x2953)
+(or (not x2954) x2950)
+(or x2955 (not x2942))
+(or x2955 (not x2512))
+(or x2955 (not x2943))
+(or x2955 (not x2516))
+(or x2942 x2512 x2943 x2516 (not x2955))
+(or x2528 x2518)
+(or x2528 (not x2517))
+(or x2528 (not x2516))
+(or x2528 (not x2515))
+(or (not x2518) x2517 x2516 x2515 (not x2528))
+(or x2952 (not x2942))
+(or x2952 x2518)
+(or x2952 (not x2517))
+(or x2952 (not x2516))
+(or x2952 (not x2515))
+(or x2942 (not x2518) x2517 x2516 x2515 (not x2952))
+(or (not x2951) (not x2952) (not x2953) (not x2955) x2956)
+(or (not x2956) x2951)
+(or (not x2956) x2952)
+(or (not x2956) x2953)
+(or (not x2956) x2955)
+(or (not x2518) x2517 x2516 (not x2515) (not x2491) x2943)
+(or (not x2943) x2518)
+(or (not x2943) (not x2517))
+(or (not x2943) (not x2516))
+(or (not x2943) x2515)
+(or (not x2943) x2491)
+(or x2957 (not x2942))
+(or x2957 (not x2512))
+(or x2957 (not x2943))
+(or x2957 (not x2515))
+(or x2942 x2512 x2943 x2515 (not x2957))
+(or x2518 (not x2517) (not x2516) (not x2515) (not x2448) (not x2447) (not x2947) x2942)
+(or (not x2942) (not x2518))
+(or (not x2942) x2517)
+(or (not x2942) x2516)
+(or (not x2942) x2515)
+(or (not x2942) x2448)
+(or (not x2942) x2447)
+(or (not x2942) x2947)
+(or x2953 (not x2942))
+(or x2953 (not x2512))
+(or x2953 x2518)
+(or x2953 (not x2517))
+(or x2953 (not x2516))
+(or x2953 x2515)
+(or x2953 x2491)
+(or x2953 (not x2945))
+(or x2942 x2512 (not x2518) x2517 x2516 (not x2515) (not x2491) x2945 (not x2953))
+(or x2951 (not x2518))
+(or x2951 x2517)
+(or x2951 x2516)
+(or x2951 x2515)
+(or x2951 x2448)
+(or x2951 x2447)
+(or x2951 x2947)
+(or x2951 (not x2948))
+(or x2518 (not x2517) (not x2516) (not x2515) (not x2448) (not x2447) (not x2947) x2948 (not x2951))
+(or (not x2951) (not x2953) (not x2957) x2958)
+(or (not x2958) x2951)
+(or (not x2958) x2953)
+(or (not x2958) x2957)
+(or (not x2947) (not x2959) (not x2491) x2960)
+(or (not x2960) x2947)
+(or (not x2960) x2959)
+(or (not x2960) x2491)
+(or x2961 x2947)
+(or x2961 (not x2960))
+(or x2961 (not x2947))
+(or (not x2947) x2960 x2947 (not x2961))
+(or x2962 x2947)
+(or x2962 x2947)
+(or x2962 x2959)
+(or x2962 x2491)
+(or x2962 x2963)
+(or (not x2947) (not x2947) (not x2959) (not x2491) (not x2963) (not x2962))
+(or x2964 x2965)
+(or x2964 x2966)
+(or (not x2965) (not x2966) (not x2964))
+(or (not x2964) (not x2965) x2967)
+(or (not x2967) x2964)
+(or (not x2967) x2965)
+(or x2968 (not x2947))
+(or x2968 x2969)
+(or x2968 (not x2967))
+(or x2947 (not x2969) x2967 (not x2968))
+(or (not x2968) (not x2962) (not x2961) x2970)
+(or (not x2970) x2968)
+(or (not x2970) x2962)
+(or (not x2970) x2961)
+(or x2599 (not x2651))
+(or x2599 (not x2652))
+(or x2599 (not x2653))
+(or x2599 (not x2654))
+(or x2599 (not x2655))
+(or x2599 (not x2656))
+(or x2651 x2652 x2653 x2654 x2655 x2656 (not x2599))
+(or x2603 (not x2750))
+(or x2603 x2749)
+(or x2603 x2748)
+(or x2603 (not x2747))
+(or x2750 (not x2749) (not x2748) x2747 (not x2603))
+(or x2639 (not x2750))
+(or x2639 x2749)
+(or x2639 (not x2748))
+(or x2639 x2747)
+(or x2750 (not x2749) x2748 (not x2747) (not x2639))
+(or x2602 (not x2750))
+(or x2602 (not x2749))
+(or x2602 (not x2748))
+(or x2602 x2747)
+(or x2750 x2749 x2748 (not x2747) (not x2602))
+(or x2971 (not x2750))
+(or x2971 (not x2749))
+(or x2971 x2748)
+(or x2971 x2747)
+(or x2750 x2749 (not x2748) (not x2747) (not x2971))
+(or x2601 (not x2855))
+(or x2601 x2854)
+(or x2601 x2853)
+(or x2601 (not x2852))
+(or x2855 (not x2854) (not x2853) x2852 (not x2601))
+(or x2637 (not x2855))
+(or x2637 x2854)
+(or x2637 (not x2853))
+(or x2637 x2852)
+(or x2855 (not x2854) x2853 (not x2852) (not x2637))
+(or x2600 (not x2855))
+(or x2600 (not x2854))
+(or x2600 (not x2853))
+(or x2600 x2852)
+(or x2855 x2854 x2853 (not x2852) (not x2600))
+(or x2972 (not x2855))
+(or x2972 (not x2854))
+(or x2972 x2853)
+(or x2972 x2852)
+(or x2855 x2854 (not x2853) (not x2852) (not x2972))
+(or (not x2972) (not x2600) (not x2637) (not x2601) (not x2971) (not x2602) (not x2639) (not x2603) x2973)
+(or (not x2973) x2972)
+(or (not x2973) x2600)
+(or (not x2973) x2637)
+(or (not x2973) x2601)
+(or (not x2973) x2971)
+(or (not x2973) x2602)
+(or (not x2973) x2639)
+(or (not x2973) x2603)
+(or (not x2972) (not x2600) (not x2637) (not x2601) (not x2971) (not x2602) (not x2639) (not x2603) x2542 x2543 x2731)
+(or (not x2731) x2972)
+(or (not x2731) x2600)
+(or (not x2731) x2637)
+(or (not x2731) x2601)
+(or (not x2731) x2971)
+(or (not x2731) x2602)
+(or (not x2731) x2639)
+(or (not x2731) x2603)
+(or (not x2731) (not x2542))
+(or (not x2731) (not x2543))
+(or x2589 (not x2731))
+(or x2589 (not x2672))
+(or x2589 (not x2652))
+(or x2589 (not x2674))
+(or x2589 (not x2655))
+(or x2731 x2672 x2652 x2674 x2655 (not x2589))
+(or x2974 (not x2731))
+(or x2974 (not x2672))
+(or x2974 (not x2652))
+(or x2974 (not x2674))
+(or x2974 (not x2655))
+(or x2974 (not x2651))
+(or x2974 (not x2652))
+(or x2974 (not x2653))
+(or x2974 (not x2654))
+(or x2974 (not x2655))
+(or x2974 (not x2656))
+(or x2974 x2554)
+(or x2731 x2672 x2652 x2674 x2655 x2651 x2652 x2653 x2654 x2655 x2656 (not x2554) (not x2974))
+(or (not x2974) (not x2730) x2975)
+(or (not x2975) x2974)
+(or (not x2975) x2730)
+(or (not x2976) x2518)
+(or (not x2976) (not x2517))
+(or (not x2976) (not x2516))
+(or (not x2976) x2515)
+(or (not x2518) x2517 x2516 x2515 x2512)
+(or (not x2512) x2518)
+(or (not x2512) (not x2517))
+(or (not x2512) (not x2516))
+(or (not x2512) (not x2515))
+(or (not x2977) (not x2518))
+(or (not x2977) x2517)
+(or (not x2977) x2516)
+(or (not x2977) x2515)
+(or x2978 (not x2977))
+(or x2978 (not x2512))
+(or x2977 x2512 (not x2978))
+(or x2750 (not x2749) (not x2748) x2747 x2655)
+(or (not x2655) (not x2750))
+(or (not x2655) x2749)
+(or (not x2655) x2748)
+(or (not x2655) (not x2747))
+(or x2750 (not x2749) x2748 (not x2747) x2656)
+(or (not x2656) (not x2750))
+(or (not x2656) x2749)
+(or (not x2656) (not x2748))
+(or (not x2656) x2747)
+(or x2750 (not x2749) x2748 x2747 x2654)
+(or (not x2654) (not x2750))
+(or (not x2654) x2749)
+(or (not x2654) (not x2748))
+(or (not x2654) (not x2747))
+(or x2750 x2749 (not x2748) (not x2747) x2673)
+(or (not x2673) (not x2750))
+(or (not x2673) (not x2749))
+(or (not x2673) x2748)
+(or (not x2673) x2747)
+(or x2750 x2749 (not x2748) x2747 x2742)
+(or (not x2742) (not x2750))
+(or (not x2742) (not x2749))
+(or (not x2742) x2748)
+(or (not x2742) (not x2747))
+(or x2750 x2749 x2748 (not x2747) x2674)
+(or (not x2674) (not x2750))
+(or (not x2674) (not x2749))
+(or (not x2674) (not x2748))
+(or (not x2674) x2747)
+(or (not x2979) (not x2750))
+(or (not x2979) (not x2749))
+(or (not x2979) (not x2748))
+(or (not x2979) (not x2747))
+(or x2980 (not x2979))
+(or x2980 (not x2674))
+(or x2980 (not x2742))
+(or x2980 (not x2673))
+(or x2980 (not x2654))
+(or x2980 (not x2656))
+(or x2979 x2674 x2742 x2673 x2654 x2656 (not x2980))
+(or x2855 (not x2854) (not x2853) x2852 x2652)
+(or (not x2652) (not x2855))
+(or (not x2652) x2854)
+(or (not x2652) x2853)
+(or (not x2652) (not x2852))
+(or x2855 (not x2854) x2853 (not x2852) x2653)
+(or (not x2653) (not x2855))
+(or (not x2653) x2854)
+(or (not x2653) (not x2853))
+(or (not x2653) x2852)
+(or x2855 (not x2854) x2853 x2852 x2651)
+(or (not x2651) (not x2855))
+(or (not x2651) x2854)
+(or (not x2651) (not x2853))
+(or (not x2651) (not x2852))
+(or x2855 x2854 (not x2853) (not x2852) x2671)
+(or (not x2671) (not x2855))
+(or (not x2671) (not x2854))
+(or (not x2671) x2853)
+(or (not x2671) x2852)
+(or x2855 x2854 (not x2853) x2852 x2847)
+(or (not x2847) (not x2855))
+(or (not x2847) (not x2854))
+(or (not x2847) x2853)
+(or (not x2847) (not x2852))
+(or x2855 x2854 x2853 (not x2852) x2672)
+(or (not x2672) (not x2855))
+(or (not x2672) (not x2854))
+(or (not x2672) (not x2853))
+(or (not x2672) x2852)
+(or (not x2981) (not x2855))
+(or (not x2981) (not x2854))
+(or (not x2981) (not x2853))
+(or (not x2981) (not x2852))
+(or x2982 (not x2981))
+(or x2982 (not x2672))
+(or x2982 (not x2847))
+(or x2982 (not x2671))
+(or x2982 (not x2651))
+(or x2982 (not x2653))
+(or x2981 x2672 x2847 x2671 x2651 x2653 (not x2982))
+(or x2983 (not x2984))
+(or x2983 (not x2985))
+(or x2983 (not x2986))
+(or x2983 (not x2987))
+(or x2983 (not x2988))
+(or x2983 (not x2989))
+(or x2983 (not x68))
+(or x2983 x67)
+(or x2983 x66)
+(or x2983 x65)
+(or x2983 (not x2990))
+(or x2983 x2991)
+(or x2984 x2985 x2986 x2987 x2988 x2989 x68 (not x67) (not x66) (not x65) x2990 (not x2991) (not x2983))
+(or x2992 (not x2984))
+(or x2992 (not x2985))
+(or x2992 (not x2986))
+(or x2992 (not x2987))
+(or x2992 (not x2988))
+(or x2992 (not x68))
+(or x2992 x67)
+(or x2992 x66)
+(or x2992 (not x65))
+(or x2992 x69)
+(or x2992 (not x70))
+(or x2992 x2993)
+(or x2984 x2985 x2986 x2987 x2988 x68 (not x67) (not x66) x65 (not x69) x70 (not x2993) (not x2992))
+(or x2994 (not x68))
+(or x2994 (not x67))
+(or x2994 (not x66))
+(or x2994 x65)
+(or x2994 (not x2995))
+(or x68 x67 x66 (not x65) x2995 (not x2994))
+(or (not x2994) (not x2996) (not x2997) (not x2998) (not x2999) (not x2992) (not x2983) (not x3000) x3001)
+(or (not x3001) x2994)
+(or (not x3001) x2996)
+(or (not x3001) x2997)
+(or (not x3001) x2998)
+(or (not x3001) x2999)
+(or (not x3001) x2992)
+(or (not x3001) x2983)
+(or (not x3001) x3000)
+(or x3002 (not x2984))
+(or x3002 (not x2985))
+(or x3002 (not x68))
+(or x3002 (not x67))
+(or x3002 x66)
+(or x3002 x65)
+(or x3002 (not x2990))
+(or x3002 x3003)
+(or x2984 x2985 x68 x67 (not x66) (not x65) x2990 (not x3003) (not x3002))
+(or x3004 (not x2984))
+(or x3004 (not x68))
+(or x3004 (not x67))
+(or x3004 x66)
+(or x3004 (not x65))
+(or x3004 x3006)
+(or x3004 x3005)
+(or x3004 (not x2990))
+(or x3004 x3007)
+(or x2984 x68 x67 (not x66) x65 (not x3006) (not x3005) x2990 (not x3007) (not x3004))
+(or x3008 (not x3009) x2995)
+(or (not x2995) (not x3008))
+(or (not x2995) x3009)
+(or x3008 (not x3009) (not x3010) x3011)
+(or (not x3011) (not x3008))
+(or (not x3011) x3009)
+(or (not x3011) x3010)
+(or x3012 (not x68))
+(or x3012 (not x67))
+(or x3012 (not x66))
+(or x3012 x65)
+(or x3012 (not x3011))
+(or x68 x67 x66 (not x65) x3011 (not x3012))
+(or (not x3012) (not x3004) (not x3002) (not x3013) (not x3014) (not x3015) (not x3016) (not x3000) x3017)
+(or (not x3017) x3012)
+(or (not x3017) x3004)
+(or (not x3017) x3002)
+(or (not x3017) x3013)
+(or (not x3017) x3014)
+(or (not x3017) x3015)
+(or (not x3017) x3016)
+(or (not x3017) x3000)
+(or x3018 (not x2984))
+(or x3018 (not x2985))
+(or x3018 (not x2986))
+(or x3018 (not x2987))
+(or x3018 (not x68))
+(or x3018 x67)
+(or x3018 (not x66))
+(or x3018 x65)
+(or x3018 (not x2990))
+(or x3018 x3019)
+(or x2984 x2985 x2986 x2987 x68 (not x67) x66 (not x65) x2990 (not x3019) (not x3018))
+(or x3020 (not x2984))
+(or x3020 (not x2985))
+(or x3020 (not x2986))
+(or x3020 (not x68))
+(or x3020 x67)
+(or x3020 (not x66))
+(or x3020 (not x65))
+(or x3020 x69)
+(or x3020 (not x70))
+(or x3020 x3021)
+(or x2984 x2985 x2986 x68 (not x67) x66 x65 (not x69) x70 (not x3021) (not x3020))
+(or x3010 (not x3008))
+(or x3010 (not x3022))
+(or x3008 x3022 (not x3010))
+(or x3008 (not x3010) x3023)
+(or (not x3023) (not x3008))
+(or (not x3023) x3010)
+(or x3024 (not x68))
+(or x3024 (not x67))
+(or x3024 (not x66))
+(or x3024 x65)
+(or x3024 (not x3023))
+(or x68 x67 x66 (not x65) x3023 (not x3024))
+(or (not x3024) (not x3025) (not x3026) (not x3020) (not x3018) (not x3013) (not x3014) (not x3027) (not x3028) (not x3000) x3029)
+(or (not x3029) x3024)
+(or (not x3029) x3025)
+(or (not x3029) x3026)
+(or (not x3029) x3020)
+(or (not x3029) x3018)
+(or (not x3029) x3013)
+(or (not x3029) x3014)
+(or (not x3029) x3027)
+(or (not x3029) x3028)
+(or (not x3029) x3000)
+(or (not x68) (not x67) x66 x65 (not x3030) x3031)
+(or (not x3031) x68)
+(or (not x3031) x67)
+(or (not x3031) (not x66))
+(or (not x3031) (not x65))
+(or (not x3031) x3030)
+(or x3000 (not x2984))
+(or x3000 (not x2985))
+(or x3000 (not x2986))
+(or x3000 (not x2987))
+(or x3000 (not x2988))
+(or x3000 (not x2989))
+(or x3000 (not x3032))
+(or x3000 (not x3033))
+(or x3000 (not x3034))
+(or x3000 (not x3035))
+(or x3000 (not x3031))
+(or x2984 x2985 x2986 x2987 x2988 x2989 x3032 x3033 x3034 x3035 x3031 (not x3000))
+(or (not x68) x67 (not x66) (not x65) (not x69) x70 x3035)
+(or (not x3035) x68)
+(or (not x3035) (not x67))
+(or (not x3035) x66)
+(or (not x3035) x65)
+(or (not x3035) x69)
+(or (not x3035) (not x70))
+(or x3028 (not x2984))
+(or x3028 (not x2985))
+(or x3028 (not x2986))
+(or x3028 (not x2987))
+(or x3028 (not x2988))
+(or x3028 (not x2989))
+(or x3028 (not x3032))
+(or x3028 (not x3033))
+(or x3028 (not x3034))
+(or x3028 (not x3035))
+(or x3028 x68)
+(or x3028 x67)
+(or x3028 (not x66))
+(or x3028 (not x65))
+(or x3028 (not x2990))
+(or x2984 x2985 x2986 x2987 x2988 x2989 x3032 x3033 x3034 x3035 (not x68) (not x67) x66 x65 x2990 (not x3028))
+(or x3036 (not x2984))
+(or x3036 (not x2985))
+(or x3036 (not x2986))
+(or x3036 (not x2987))
+(or x3036 (not x2988))
+(or x3036 (not x2989))
+(or x3036 (not x3032))
+(or x3036 (not x3033))
+(or x3036 (not x3034))
+(or x3036 (not x3035))
+(or x3036 x68)
+(or x3036 x67)
+(or x3036 (not x66))
+(or x3036 (not x65))
+(or x3036 (not x2990))
+(or x3036 x3037)
+(or x2984 x2985 x2986 x2987 x2988 x2989 x3032 x3033 x3034 x3035 (not x68) (not x67) x66 x65 x2990 (not x3037) (not x3036))
+(or (not x68) x67 (not x66) x65 (not x3030) x3034)
+(or (not x3034) x68)
+(or (not x3034) (not x67))
+(or (not x3034) x66)
+(or (not x3034) (not x65))
+(or (not x3034) x3030)
+(or x3027 (not x2984))
+(or x3027 (not x2985))
+(or x3027 (not x2986))
+(or x3027 (not x2987))
+(or x3027 (not x2988))
+(or x3027 (not x2989))
+(or x3027 (not x3032))
+(or x3027 (not x3033))
+(or x3027 (not x3034))
+(or x3027 x68)
+(or x3027 (not x67))
+(or x3027 x66)
+(or x3027 x65)
+(or x3027 x69)
+(or x3027 (not x70))
+(or x2984 x2985 x2986 x2987 x2988 x2989 x3032 x3033 x3034 (not x68) x67 (not x66) (not x65) (not x69) x70 (not x3027))
+(or x3038 (not x2984))
+(or x3038 (not x2985))
+(or x3038 (not x2986))
+(or x3038 (not x2987))
+(or x3038 (not x2988))
+(or x3038 (not x2989))
+(or x3038 (not x3032))
+(or x3038 (not x3033))
+(or x3038 (not x3034))
+(or x3038 x68)
+(or x3038 (not x67))
+(or x3038 x66)
+(or x3038 x65)
+(or x3038 x69)
+(or x3038 (not x70))
+(or x3038 x3039)
+(or x2984 x2985 x2986 x2987 x2988 x2989 x3032 x3033 x3034 (not x68) x67 (not x66) (not x65) (not x69) x70 (not x3039) (not x3038))
+(or (not x68) x67 x66 (not x65) (not x3006) (not x3005) (not x69) x70 x3033)
+(or (not x3033) x68)
+(or (not x3033) (not x67))
+(or (not x3033) (not x66))
+(or (not x3033) x65)
+(or (not x3033) x3006)
+(or (not x3033) x3005)
+(or (not x3033) x69)
+(or (not x3033) (not x70))
+(or x3016 (not x2984))
+(or x3016 (not x2985))
+(or x3016 (not x2986))
+(or x3016 (not x2987))
+(or x3016 (not x2988))
+(or x3016 (not x2989))
+(or x3016 (not x3032))
+(or x3016 (not x3033))
+(or x3016 x68)
+(or x3016 (not x67))
+(or x3016 x66)
+(or x3016 (not x65))
+(or x3016 (not x2990))
+(or x2984 x2985 x2986 x2987 x2988 x2989 x3032 x3033 (not x68) x67 (not x66) x65 x2990 (not x3016))
+(or x3040 (not x2984))
+(or x3040 (not x2985))
+(or x3040 (not x2986))
+(or x3040 (not x2987))
+(or x3040 (not x2988))
+(or x3040 (not x2989))
+(or x3040 (not x3032))
+(or x3040 (not x3033))
+(or x3040 x68)
+(or x3040 (not x67))
+(or x3040 x66)
+(or x3040 (not x65))
+(or x3040 (not x2990))
+(or x3040 x3041)
+(or x2984 x2985 x2986 x2987 x2988 x2989 x3032 x3033 (not x68) x67 (not x66) x65 x2990 (not x3041) (not x3040))
+(or x68 (not x67) (not x66) (not x65) (not x3030) x3032)
+(or (not x3032) (not x68))
+(or (not x3032) x67)
+(or (not x3032) x66)
+(or (not x3032) x65)
+(or (not x3032) x3030)
+(or x3015 (not x2984))
+(or x3015 (not x2985))
+(or x3015 (not x2986))
+(or x3015 (not x2987))
+(or x3015 (not x2988))
+(or x3015 (not x2989))
+(or x3015 (not x3032))
+(or x3015 x68)
+(or x3015 (not x67))
+(or x3015 (not x66))
+(or x3015 x65)
+(or x3015 x3006)
+(or x3015 x3005)
+(or x3015 x69)
+(or x3015 (not x70))
+(or x2984 x2985 x2986 x2987 x2988 x2989 x3032 (not x68) x67 x66 (not x65) (not x3006) (not x3005) (not x69) x70 (not x3015))
+(or x3042 (not x2984))
+(or x3042 (not x2985))
+(or x3042 (not x2986))
+(or x3042 (not x2987))
+(or x3042 (not x2988))
+(or x3042 (not x2989))
+(or x3042 (not x3032))
+(or x3042 x68)
+(or x3042 (not x67))
+(or x3042 (not x66))
+(or x3042 x65)
+(or x3042 x3006)
+(or x3042 x3005)
+(or x3042 x69)
+(or x3042 (not x70))
+(or x3042 x3043)
+(or x2984 x2985 x2986 x2987 x2988 x2989 x3032 (not x68) x67 x66 (not x65) (not x3006) (not x3005) (not x69) x70 (not x3043) (not x3042))
+(or x68 (not x67) (not x66) x65 (not x69) x70 x2989)
+(or (not x2989) (not x68))
+(or (not x2989) x67)
+(or (not x2989) x66)
+(or (not x2989) (not x65))
+(or (not x2989) x69)
+(or (not x2989) (not x70))
+(or x3014 (not x2984))
+(or x3014 (not x2985))
+(or x3014 (not x2986))
+(or x3014 (not x2987))
+(or x3014 (not x2988))
+(or x3014 (not x2989))
+(or x3014 (not x68))
+(or x3014 x67)
+(or x3014 x66)
+(or x3014 x65)
+(or x3014 (not x2990))
+(or x3014 (not x2991))
+(or x2984 x2985 x2986 x2987 x2988 x2989 x68 (not x67) (not x66) (not x65) x2990 x2991 (not x3014))
+(or x68 (not x67) x66 (not x65) (not x3030) x2988)
+(or (not x2988) (not x68))
+(or (not x2988) x67)
+(or (not x2988) (not x66))
+(or (not x2988) x65)
+(or (not x2988) x3030)
+(or x3013 (not x2984))
+(or x3013 (not x2985))
+(or x3013 (not x2986))
+(or x3013 (not x2987))
+(or x3013 (not x2988))
+(or x3013 (not x68))
+(or x3013 x67)
+(or x3013 x66)
+(or x3013 (not x65))
+(or x3013 x69)
+(or x3013 (not x70))
+(or x3013 (not x2993))
+(or x2984 x2985 x2986 x2987 x2988 x68 (not x67) (not x66) x65 (not x69) x70 x2993 (not x3013))
+(or x68 (not x67) x66 x65 (not x69) x70 x2987)
+(or (not x2987) (not x68))
+(or (not x2987) x67)
+(or (not x2987) (not x66))
+(or (not x2987) (not x65))
+(or (not x2987) x69)
+(or (not x2987) (not x70))
+(or x2999 (not x2984))
+(or x2999 (not x2985))
+(or x2999 (not x2986))
+(or x2999 (not x2987))
+(or x2999 (not x68))
+(or x2999 x67)
+(or x2999 (not x66))
+(or x2999 x65)
+(or x2999 (not x2990))
+(or x2984 x2985 x2986 x2987 x68 (not x67) x66 (not x65) x2990 (not x2999))
+(or x3044 (not x2984))
+(or x3044 (not x2985))
+(or x3044 (not x2986))
+(or x3044 (not x2987))
+(or x3044 (not x68))
+(or x3044 x67)
+(or x3044 (not x66))
+(or x3044 x65)
+(or x3044 (not x2990))
+(or x3044 (not x3019))
+(or x2984 x2985 x2986 x2987 x68 (not x67) x66 (not x65) x2990 x3019 (not x3044))
+(or x68 x67 (not x66) (not x65) (not x3030) x2986)
+(or (not x2986) (not x68))
+(or (not x2986) (not x67))
+(or (not x2986) x66)
+(or (not x2986) x65)
+(or (not x2986) x3030)
+(or x2998 (not x2984))
+(or x2998 (not x2985))
+(or x2998 (not x2986))
+(or x2998 (not x68))
+(or x2998 x67)
+(or x2998 (not x66))
+(or x2998 (not x65))
+(or x2998 x69)
+(or x2998 (not x70))
+(or x2984 x2985 x2986 x68 (not x67) x66 x65 (not x69) x70 (not x2998))
+(or x3045 (not x2984))
+(or x3045 (not x2985))
+(or x3045 (not x2986))
+(or x3045 (not x68))
+(or x3045 x67)
+(or x3045 (not x66))
+(or x3045 (not x65))
+(or x3045 x69)
+(or x3045 (not x70))
+(or x3045 (not x3021))
+(or x2984 x2985 x2986 x68 (not x67) x66 x65 (not x69) x70 x3021 (not x3045))
+(or x68 x67 (not x66) x65 (not x3006) (not x3005) (not x3030) x2985)
+(or (not x2985) (not x68))
+(or (not x2985) (not x67))
+(or (not x2985) x66)
+(or (not x2985) (not x65))
+(or (not x2985) x3006)
+(or (not x2985) x3005)
+(or (not x2985) x3030)
+(or x2997 (not x2984))
+(or x2997 (not x2985))
+(or x2997 (not x68))
+(or x2997 (not x67))
+(or x2997 x66)
+(or x2997 x65)
+(or x2997 (not x2990))
+(or x2984 x2985 x68 x67 (not x66) (not x65) x2990 (not x2997))
+(or x3026 (not x2984))
+(or x3026 (not x2985))
+(or x3026 (not x68))
+(or x3026 (not x67))
+(or x3026 x66)
+(or x3026 x65)
+(or x3026 (not x2990))
+(or x3026 (not x3003))
+(or x2984 x2985 x68 x67 (not x66) (not x65) x2990 x3003 (not x3026))
+(or x68 x67 x66 (not x65) x2984)
+(or (not x2984) (not x68))
+(or (not x2984) (not x67))
+(or (not x2984) (not x66))
+(or (not x2984) x65)
+(or x2996 (not x2984))
+(or x2996 (not x68))
+(or x2996 (not x67))
+(or x2996 x66)
+(or x2996 (not x65))
+(or x2996 x3006)
+(or x2996 x3005)
+(or x2996 (not x2990))
+(or x2984 x68 x67 (not x66) x65 (not x3006) (not x3005) x2990 (not x2996))
+(or x3025 (not x2984))
+(or x3025 (not x68))
+(or x3025 (not x67))
+(or x3025 x66)
+(or x3025 (not x65))
+(or x3025 x3006)
+(or x3025 x3005)
+(or x3025 (not x2990))
+(or x3025 (not x3007))
+(or x2984 x68 x67 (not x66) x65 (not x3006) (not x3005) x2990 x3007 (not x3025))
+(or x3009 (not x3008))
+(or x3009 x3022)
+(or x3008 (not x3022) (not x3009))
+(or x3046 (not x68))
+(or x3046 (not x67))
+(or x3046 (not x66))
+(or x3046 x65)
+(or x3046 (not x3008))
+(or x3046 x3022)
+(or x68 x67 x66 (not x65) x3008 (not x3022) (not x3046))
+(or (not x3046) (not x3025) (not x3026) (not x3045) (not x3044) (not x3013) (not x3014) (not x3042) (not x3040) (not x3038) (not x3036) (not x3000) x3047)
+(or (not x3047) x3046)
+(or (not x3047) x3025)
+(or (not x3047) x3026)
+(or (not x3047) x3045)
+(or (not x3047) x3044)
+(or (not x3047) x3013)
+(or (not x3047) x3014)
+(or (not x3047) x3042)
+(or (not x3047) x3040)
+(or (not x3047) x3038)
+(or (not x3047) x3036)
+(or (not x3047) x3000)
+(or x3048 x3049 (not x3050) x3051)
+(or (not x3051) (not x3048))
+(or (not x3051) (not x3049))
+(or (not x3051) x3050)
+(or (not x3048) x3049 (not x3052) x3053)
+(or (not x3053) x3048)
+(or (not x3053) (not x3049))
+(or (not x3053) x3052)
+(or x3054 (not x3053))
+(or x3054 (not x3051))
+(or x3053 x3051 (not x3054))
+(or (not x3055) (not x3056) x3057 x3058 (not x3059) x3060)
+(or (not x3060) x3055)
+(or (not x3060) x3056)
+(or (not x3060) (not x3057))
+(or (not x3060) (not x3058))
+(or (not x3060) x3059)
+(or x3050 (not x3049))
+(or x3050 (not x3060))
+(or x3049 x3060 (not x3050))
+(or (not x3049) (not x3050) x3061)
+(or (not x3061) x3049)
+(or (not x3061) x3050)
+(or x3049 (not x3048) x3062)
+(or (not x3062) (not x3049))
+(or (not x3062) x3048)
+(or x3052 (not x3063))
+(or x3052 x3056)
+(or x3052 (not x3057))
+(or x3052 (not x3058))
+(or x3052 x3059)
+(or x3063 (not x3056) x3057 x3058 (not x3059) (not x3052))
+(or x3049 (not x3052) x3064)
+(or (not x3064) (not x3049))
+(or (not x3064) x3052)
+(or x3065 (not x3064))
+(or x3065 (not x3062))
+(or x3064 x3062 (not x3065))
+(or (not x3066) (not x3065) x3067)
+(or (not x3067) x3066)
+(or (not x3067) x3065)
+(or x3068 (not x3067))
+(or x3068 (not x3061))
+(or x3067 x3061 (not x3068))
+(or x3069 (not x3049))
+(or x3069 (not x3070))
+(or x3069 (not x3071))
+(or x3049 x3070 x3071 (not x3069))
+(or x3072 (not x3049))
+(or x3072 x3076)
+(or x3072 (not x3075))
+(or x3072 (not x3074))
+(or x3072 (not x3073))
+(or x3049 (not x3076) x3075 x3074 x3073 (not x3072))
+(or x3077 x3078)
+(or x3077 x3079)
+(or (not x3078) (not x3079) (not x3077))
+(or (not x3077) (not x3078) x3080)
+(or (not x3080) x3077)
+(or (not x3080) x3078)
+(or x3081 x3049)
+(or x3081 x3082)
+(or x3081 (not x3080))
+(or (not x3049) (not x3082) x3080 (not x3081))
+(or (not x3081) (not x3072) (not x3069) x3083)
+(or (not x3083) x3081)
+(or (not x3083) x3072)
+(or (not x3083) x3069)
+(or (not x3076) x3075 x3074 x3073 (not x3084) x3085)
+(or (not x3085) x3076)
+(or (not x3085) (not x3075))
+(or (not x3085) (not x3074))
+(or (not x3085) (not x3073))
+(or (not x3085) x3084)
+(or (not x3086) (not x3087) x3088 (not x3089) (not x3090) (not x3091) (not x3092) (not x3093) (not x3094) (not x3095) (not x3096) (not x3097) x3098)
+(or (not x3098) x3086)
+(or (not x3098) x3087)
+(or (not x3098) (not x3088))
+(or (not x3098) x3089)
+(or (not x3098) x3090)
+(or (not x3098) x3091)
+(or (not x3098) x3092)
+(or (not x3098) x3093)
+(or (not x3098) x3094)
+(or (not x3098) x3095)
+(or (not x3098) x3096)
+(or (not x3098) x3097)
+(or x3099 (not x3098))
+(or x3099 (not x3085))
+(or x3098 x3085 (not x3099))
+(or x3100 x3101 x3102)
+(or (not x3102) (not x3100))
+(or (not x3102) (not x3101))
+(or x3103 x3006)
+(or x3103 x3005)
+(or x3103 (not x3104))
+(or x3103 (not x3105))
+(or x3103 (not x3102))
+(or (not x3006) (not x3005) x3104 x3105 x3102 (not x3103))
+(or (not x3106) (not x3103) x3107)
+(or (not x3107) x3106)
+(or (not x3107) x3103)
+(or x3108 (not x3100))
+(or x3108 (not x3109))
+(or x3100 x3109 (not x3108))
+(or (not x3101) (not x3108) x3110)
+(or (not x3110) x3101)
+(or (not x3110) x3108)
+(or x3111 (not x3110))
+(or x3111 (not x3107))
+(or x3110 x3107 (not x3111))
+(or x3112 (not x3006) (not x3005) (not x3113) (not x3114) x3109)
+(or (not x3109) (not x3112))
+(or (not x3109) x3006)
+(or (not x3109) x3005)
+(or (not x3109) x3113)
+(or (not x3109) x3114)
+(or (not x3100) x3112 (not x3006) (not x3005) (not x3113) (not x3114) x3115)
+(or (not x3115) x3100)
+(or (not x3115) (not x3112))
+(or (not x3115) x3006)
+(or (not x3115) x3005)
+(or (not x3115) x3113)
+(or (not x3115) x3114)
+(or x3116 x3006)
+(or x3116 x3005)
+(or x3116 (not x3104))
+(or x3116 (not x3105))
+(or x3116 x3100)
+(or (not x3006) (not x3005) x3104 x3105 (not x3100) (not x3116))
+(or x3106 (not x3112))
+(or x3106 x3006)
+(or x3106 x3005)
+(or x3106 (not x3104))
+(or x3106 (not x3105))
+(or x3112 (not x3006) (not x3005) x3104 x3105 (not x3106))
+(or (not x3106) (not x3116) x3117)
+(or (not x3117) x3106)
+(or (not x3117) x3116)
+(or x3118 (not x3117))
+(or x3118 (not x3115))
+(or x3117 x3115 (not x3118))
+(or x3056 (not x3059) x3119)
+(or (not x3119) (not x3056))
+(or (not x3119) x3059)
+(or x3120 (not x3121))
+(or x3120 x3087)
+(or x3120 x3122)
+(or x3120 (not x3119))
+(or x3121 (not x3087) (not x3122) x3119 (not x3120))
+(or (not x3123) (not x3086) (not x3120) x3124)
+(or (not x3124) x3123)
+(or (not x3124) x3086)
+(or (not x3124) x3120)
+(or x3125 (not x3056))
+(or x3125 x3059)
+(or x3056 (not x3059) (not x3125))
+(or (not x3126) (not x3087) (not x3122) (not x3125) x3127)
+(or (not x3127) x3126)
+(or (not x3127) x3087)
+(or (not x3127) x3122)
+(or (not x3127) x3125)
+(or x3128 (not x3070))
+(or x3128 (not x3127))
+(or x3070 x3127 (not x3128))
+(or (not x3128) (not x3086) x3129)
+(or (not x3129) x3128)
+(or (not x3129) x3086)
+(or x3130 (not x3129))
+(or x3130 (not x3124))
+(or x3129 x3124 (not x3130))
+(or x3131 (not x3132))
+(or x3131 x3112)
+(or x3132 (not x3112) (not x3131))
+(or (not x3056) (not x3006) (not x3005) (not x3133) (not x3058) (not x3134) (not x3135) x3112 x3136 x3137 x3138 x3139 x3140 (not x3056) x3141 x3088 x3142 x3143 x3049 x3144 x3145)
+(or (not x3145) x3056)
+(or (not x3145) x3006)
+(or (not x3145) x3005)
+(or (not x3145) x3133)
+(or (not x3145) x3058)
+(or (not x3145) x3134)
+(or (not x3145) x3135)
+(or (not x3145) (not x3112))
+(or (not x3145) (not x3136))
+(or (not x3145) (not x3137))
+(or (not x3145) (not x3138))
+(or (not x3145) (not x3139))
+(or (not x3145) (not x3140))
+(or (not x3145) x3056)
+(or (not x3145) (not x3141))
+(or (not x3145) (not x3088))
+(or (not x3145) (not x3142))
+(or (not x3145) (not x3143))
+(or (not x3145) (not x3049))
+(or (not x3145) (not x3144))
+(or (not x3146) (not x3147) (not x3006) (not x3005) (not x3112) x3056 x3136 x3137 x3138 x3139 x3141 x3088 x3142 x3143 x3049 x3144 x3148)
+(or (not x3148) x3146)
+(or (not x3148) x3147)
+(or (not x3148) x3006)
+(or (not x3148) x3005)
+(or (not x3148) x3112)
+(or (not x3148) (not x3056))
+(or (not x3148) (not x3136))
+(or (not x3148) (not x3137))
+(or (not x3148) (not x3138))
+(or (not x3148) (not x3139))
+(or (not x3148) (not x3141))
+(or (not x3148) (not x3088))
+(or (not x3148) (not x3142))
+(or (not x3148) (not x3143))
+(or (not x3148) (not x3049))
+(or (not x3148) (not x3144))
+(or x3149 (not x3148))
+(or x3149 (not x3145))
+(or x3148 x3145 (not x3149))
+(or x3136 x3138 x3139 (not x3137) x3141 x3088 x3142 x3143 x3049 x3144 x3112 x3056 x3150)
+(or (not x3150) (not x3136))
+(or (not x3150) (not x3138))
+(or (not x3150) (not x3139))
+(or (not x3150) x3137)
+(or (not x3150) (not x3141))
+(or (not x3150) (not x3088))
+(or (not x3150) (not x3142))
+(or (not x3150) (not x3143))
+(or (not x3150) (not x3049))
+(or (not x3150) (not x3144))
+(or (not x3150) (not x3112))
+(or (not x3150) (not x3056))
+(or (not x3076) x3075 x3074 x3073 (not x3049) x3144 x3141 x3056 x3112 x3142 x3143 (not x3151) (not x3152) x3088 x3136 x3137 x3138 x3139 x3153)
+(or (not x3153) x3076)
+(or (not x3153) (not x3075))
+(or (not x3153) (not x3074))
+(or (not x3153) (not x3073))
+(or (not x3153) x3049)
+(or (not x3153) (not x3144))
+(or (not x3153) (not x3141))
+(or (not x3153) (not x3056))
+(or (not x3153) (not x3112))
+(or (not x3153) (not x3142))
+(or (not x3153) (not x3143))
+(or (not x3153) x3151)
+(or (not x3153) x3152)
+(or (not x3153) (not x3088))
+(or (not x3153) (not x3136))
+(or (not x3153) (not x3137))
+(or (not x3153) (not x3138))
+(or (not x3153) (not x3139))
+(or x3154 (not x3153))
+(or x3154 (not x3150))
+(or x3153 x3150 (not x3154))
+(or (not x3006) (not x3005) (not x3155) (not x3154) x3156)
+(or (not x3156) x3006)
+(or (not x3156) x3005)
+(or (not x3156) x3155)
+(or (not x3156) x3154)
+(or (not x3006) (not x3005) (not x3112) x3056 x3136 x3137 x3138 x3139 x3141 x3088 x3142 x3143 x3049 x3144 (not x3157) (not x3158) (not x3159) (not x3160) (not x3161) (not x3122) x3162)
+(or (not x3162) x3006)
+(or (not x3162) x3005)
+(or (not x3162) x3112)
+(or (not x3162) (not x3056))
+(or (not x3162) (not x3136))
+(or (not x3162) (not x3137))
+(or (not x3162) (not x3138))
+(or (not x3162) (not x3139))
+(or (not x3162) (not x3141))
+(or (not x3162) (not x3088))
+(or (not x3162) (not x3142))
+(or (not x3162) (not x3143))
+(or (not x3162) (not x3049))
+(or (not x3162) (not x3144))
+(or (not x3162) x3157)
+(or (not x3162) x3158)
+(or (not x3162) x3159)
+(or (not x3162) x3160)
+(or (not x3162) x3161)
+(or (not x3162) x3122)
+(or (not x3155) x3137 x3138 x3139 x3141 x3088 x3142 x3143 x3049 x3144 x3112 x3056 x3163)
+(or (not x3163) x3155)
+(or (not x3163) (not x3137))
+(or (not x3163) (not x3138))
+(or (not x3163) (not x3139))
+(or (not x3163) (not x3141))
+(or (not x3163) (not x3088))
+(or (not x3163) (not x3142))
+(or (not x3163) (not x3143))
+(or (not x3163) (not x3049))
+(or (not x3163) (not x3144))
+(or (not x3163) (not x3112))
+(or (not x3163) (not x3056))
+(or x3164 (not x3165))
+(or x3164 (not x3163))
+(or x3165 x3163 (not x3164))
+(or (not x3006) (not x3005) (not x3136) (not x3164) x3166)
+(or (not x3166) x3006)
+(or (not x3166) x3005)
+(or (not x3166) x3136)
+(or (not x3166) x3164)
+(or x3141 x3142 (not x3143) (not x3006) (not x3005) x3049 x3144 x3112 x3056 x3088 x3136 x3137 x3138 x3139 x3167)
+(or (not x3167) (not x3141))
+(or (not x3167) (not x3142))
+(or (not x3167) x3143)
+(or (not x3167) x3006)
+(or (not x3167) x3005)
+(or (not x3167) (not x3049))
+(or (not x3167) (not x3144))
+(or (not x3167) (not x3112))
+(or (not x3167) (not x3056))
+(or (not x3167) (not x3088))
+(or (not x3167) (not x3136))
+(or (not x3167) (not x3137))
+(or (not x3167) (not x3138))
+(or (not x3167) (not x3139))
+(or x3168 (not x3167))
+(or x3168 (not x3166))
+(or x3167 x3166 (not x3168))
+(or x3169 x3137)
+(or x3169 x3144)
+(or (not x3137) (not x3144) (not x3169))
+(or x3170 (not x3137))
+(or x3170 (not x3155))
+(or x3170 (not x3049))
+(or x3137 x3155 x3049 (not x3170))
+(or x3144 x3137 (not x3171) x3172)
+(or (not x3172) (not x3144))
+(or (not x3172) (not x3137))
+(or (not x3172) x3171)
+(or x3173 x3049)
+(or x3173 (not x3172))
+(or (not x3049) x3172 (not x3173))
+(or x3174 x3155)
+(or x3174 (not x3049))
+(or x3174 (not x3144))
+(or (not x3155) x3049 x3144 (not x3174))
+(or (not x3006) (not x3005) x3088 x3136 x3141 x3056 x3112 x3142 x3143 x3138 x3139 (not x3174) (not x3173) (not x3170) (not x3169) x3175)
+(or (not x3175) x3006)
+(or (not x3175) x3005)
+(or (not x3175) (not x3088))
+(or (not x3175) (not x3136))
+(or (not x3175) (not x3141))
+(or (not x3175) (not x3056))
+(or (not x3175) (not x3112))
+(or (not x3175) (not x3142))
+(or (not x3175) (not x3143))
+(or (not x3175) (not x3138))
+(or (not x3175) (not x3139))
+(or (not x3175) x3174)
+(or (not x3175) x3173)
+(or (not x3175) x3170)
+(or (not x3175) x3169)
+(or (not x3006) (not x3005) (not x3176) x3177)
+(or (not x3177) x3006)
+(or (not x3177) x3005)
+(or (not x3177) x3176)
+(or x3097 (not x3178))
+(or x3097 (not x3179))
+(or x3178 x3179 (not x3097))
+(or x3180 (not x3181))
+(or x3180 x3138)
+(or x3181 (not x3138) (not x3180))
+(or x3182 (not x3049))
+(or x3182 (not x3138))
+(or x3182 (not x3136))
+(or x3182 (not x3137))
+(or x3049 x3138 x3136 x3137 (not x3182))
+(or x3183 x3137)
+(or x3183 x3136)
+(or (not x3137) (not x3136) (not x3183))
+(or x3139 (not x3183) (not x3182) (not x3180) x3184)
+(or (not x3184) (not x3139))
+(or (not x3184) x3183)
+(or (not x3184) x3182)
+(or (not x3184) x3180)
+(or x3096 (not x3144))
+(or x3096 (not x3141))
+(or x3096 (not x3056))
+(or x3096 (not x3112))
+(or x3096 (not x3142))
+(or x3096 (not x3143))
+(or x3096 (not x3184))
+(or x3144 x3141 x3056 x3112 x3142 x3143 x3184 (not x3096))
+(or x3095 x3143)
+(or x3095 x3142)
+(or (not x3143) (not x3142) (not x3095))
+(or x3094 (not x3185))
+(or x3094 x3144)
+(or x3185 (not x3144) (not x3094))
+(or x3093 x3056)
+(or x3093 (not x3186))
+(or (not x3056) x3186 (not x3093))
+(or (not x3076) x3075 x3074 x3073 x3155 x3187)
+(or (not x3187) x3076)
+(or (not x3187) (not x3075))
+(or (not x3187) (not x3074))
+(or (not x3187) (not x3073))
+(or (not x3187) (not x3155))
+(or (not x3076) x3075 x3074 x3073 (not x3155) (not x3071) x3188)
+(or (not x3188) x3076)
+(or (not x3188) (not x3075))
+(or (not x3188) (not x3074))
+(or (not x3188) (not x3073))
+(or (not x3188) x3155)
+(or (not x3188) x3071)
+(or x3171 (not x3188))
+(or x3171 (not x3187))
+(or x3188 x3187 (not x3171))
+(or (not x3076) x3075 x3074 x3073 (not x3155) x3189)
+(or (not x3189) x3076)
+(or (not x3189) (not x3075))
+(or (not x3189) (not x3074))
+(or (not x3189) (not x3073))
+(or (not x3189) x3155)
+(or x3190 (not x3189))
+(or x3190 (not x3188))
+(or x3190 (not x3187))
+(or x3189 x3188 x3187 (not x3190))
+(or x3138 x3136 x3137 x3144 x3141 x3056 x3112 x3142 x3143 (not x3190) x3191)
+(or (not x3191) (not x3138))
+(or (not x3191) (not x3136))
+(or (not x3191) (not x3137))
+(or (not x3191) (not x3144))
+(or (not x3191) (not x3141))
+(or (not x3191) (not x3056))
+(or (not x3191) (not x3112))
+(or (not x3191) (not x3142))
+(or (not x3191) (not x3143))
+(or (not x3191) x3190)
+(or x3092 x3049)
+(or x3092 (not x3191))
+(or (not x3049) x3191 (not x3092))
+(or x3091 (not x3192))
+(or x3091 x3112)
+(or x3192 (not x3112) (not x3091))
+(or x3090 (not x3193))
+(or x3090 x3141)
+(or x3193 (not x3141) (not x3090))
+(or x3089 x3140)
+(or x3089 x3056)
+(or (not x3140) (not x3056) (not x3089))
+(or (not x3122) (not x3006) (not x3005) x3088 (not x3089) (not x3090) (not x3091) (not x3092) (not x3093) (not x3094) (not x3095) (not x3096) (not x3097) (not x3194) (not x3159) (not x3195) (not x3196) (not x3161) (not x3197) (not x3086) x3198)
+(or (not x3198) x3122)
+(or (not x3198) x3006)
+(or (not x3198) x3005)
+(or (not x3198) (not x3088))
+(or (not x3198) x3089)
+(or (not x3198) x3090)
+(or (not x3198) x3091)
+(or (not x3198) x3092)
+(or (not x3198) x3093)
+(or (not x3198) x3094)
+(or (not x3198) x3095)
+(or (not x3198) x3096)
+(or (not x3198) x3097)
+(or (not x3198) x3194)
+(or (not x3198) x3159)
+(or (not x3198) x3195)
+(or (not x3198) x3196)
+(or (not x3198) x3161)
+(or (not x3198) x3197)
+(or (not x3198) x3086)
+(or x3199 x3006)
+(or x3199 x3005)
+(or x3199 (not x3088))
+(or x3199 (not x3200))
+(or x3199 (not x3201))
+(or x3199 (not x3202))
+(or x3199 (not x3203))
+(or x3199 (not x3204))
+(or x3199 (not x3205))
+(or x3199 (not x3206))
+(or x3199 (not x3207))
+(or x3199 (not x3208))
+(or x3199 (not x3209))
+(or x3199 (not x3210))
+(or x3199 (not x3211))
+(or x3199 (not x3212))
+(or x3199 (not x3213))
+(or x3199 (not x3214))
+(or x3199 (not x3070))
+(or (not x3006) (not x3005) x3088 x3200 x3201 x3202 x3203 x3204 x3205 x3206 x3207 x3208 x3209 x3210 x3211 x3212 x3213 x3214 x3070 (not x3199))
+(or x3215 x3006)
+(or x3215 x3005)
+(or x3215 (not x3088))
+(or x3215 (not x3200))
+(or x3215 (not x3201))
+(or x3215 (not x3202))
+(or x3215 (not x3203))
+(or x3215 (not x3204))
+(or x3215 (not x3205))
+(or x3215 (not x3206))
+(or x3215 (not x3207))
+(or x3215 (not x3208))
+(or x3215 (not x3209))
+(or x3215 (not x3210))
+(or x3215 (not x3211))
+(or x3215 (not x3212))
+(or x3215 (not x3213))
+(or x3215 (not x3214))
+(or x3215 x3084)
+(or (not x3006) (not x3005) x3088 x3200 x3201 x3202 x3203 x3204 x3205 x3206 x3207 x3208 x3209 x3210 x3211 x3212 x3213 x3214 (not x3084) (not x3215))
+(or (not x3215) (not x3199) x3216)
+(or (not x3216) x3215)
+(or (not x3216) x3199)
+(or x3217 (not x3216))
+(or x3217 (not x3198))
+(or x3216 x3198 (not x3217))
+(or (not x3086) (not x3218) x3219)
+(or (not x3219) x3086)
+(or (not x3219) x3218)
+(or (not x3076) x3075 x3074 x3073 (not x3220) x3221)
+(or (not x3221) x3076)
+(or (not x3221) (not x3075))
+(or (not x3221) (not x3074))
+(or (not x3221) (not x3073))
+(or (not x3221) x3220)
+(or x3222 (not x3221))
+(or x3222 (not x3219))
+(or x3221 x3219 (not x3222))
+(or (not x3086) (not x3223) x3224)
+(or (not x3224) x3086)
+(or (not x3224) x3223)
+(or x3225 (not x3070))
+(or x3225 (not x3224))
+(or x3070 x3224 (not x3225))
+(or x3142 x3143 (not x3141) (not x3006) (not x3005) x3049 x3144 x3112 x3056 x3088 x3136 x3137 x3138 x3139 x3226)
+(or (not x3226) (not x3142))
+(or (not x3226) (not x3143))
+(or (not x3226) x3141)
+(or (not x3226) x3006)
+(or (not x3226) x3005)
+(or (not x3226) (not x3049))
+(or (not x3226) (not x3144))
+(or (not x3226) (not x3112))
+(or (not x3226) (not x3056))
+(or (not x3226) (not x3088))
+(or (not x3226) (not x3136))
+(or (not x3226) (not x3137))
+(or (not x3226) (not x3138))
+(or (not x3226) (not x3139))
+(or (not x3158) (not x3159) (not x3160) (not x3161) x3227)
+(or (not x3227) x3158)
+(or (not x3227) x3159)
+(or (not x3227) x3160)
+(or (not x3227) x3161)
+(or x3228 (not x3229))
+(or x3228 (not x3230))
+(or x3228 (not x3211))
+(or x3228 (not x3210))
+(or x3228 (not x3231))
+(or x3228 (not x3232))
+(or x3228 (not x3214))
+(or x3228 (not x3213))
+(or x3228 (not x3100))
+(or x3228 (not x3101))
+(or x3229 x3230 x3211 x3210 x3231 x3232 x3214 x3213 x3100 x3101 (not x3228))
+(or (not x3194) (not x3159) (not x3195) (not x3196) (not x3161) (not x3197) x3132)
+(or (not x3132) x3194)
+(or (not x3132) x3159)
+(or (not x3132) x3195)
+(or (not x3132) x3196)
+(or (not x3132) x3161)
+(or (not x3132) x3197)
+(or x3146 (not x3132))
+(or x3146 (not x3230))
+(or x3146 (not x3210))
+(or x3146 (not x3232))
+(or x3146 (not x3213))
+(or x3146 x3122)
+(or x3132 x3230 x3210 x3232 x3213 (not x3122) (not x3146))
+(or (not x3146) (not x3228) (not x3158) (not x3159) (not x3160) (not x3161) x3056 x3136 x3137 x3138 x3139 x3141 x3088 x3142 x3143 x3049 x3144 x3233)
+(or (not x3233) x3146)
+(or (not x3233) x3228)
+(or (not x3233) x3158)
+(or (not x3233) x3159)
+(or (not x3233) x3160)
+(or (not x3233) x3161)
+(or (not x3233) (not x3056))
+(or (not x3233) (not x3136))
+(or (not x3233) (not x3137))
+(or (not x3233) (not x3138))
+(or (not x3233) (not x3139))
+(or (not x3233) (not x3141))
+(or (not x3233) (not x3088))
+(or (not x3233) (not x3142))
+(or (not x3233) (not x3143))
+(or (not x3233) (not x3049))
+(or (not x3233) (not x3144))
+(or x3133 (not x3059))
+(or x3133 (not x3057))
+(or x3133 (not x3058))
+(or x3133 x3087)
+(or x3133 x3123)
+(or x3059 x3057 x3058 (not x3087) (not x3123) (not x3133))
+(or (not x3133) (not x3058) (not x3134) (not x3135) x3112 x3136 x3137 x3138 x3139 x3140 (not x3056) x3141 x3088 x3142 x3143 x3049 x3144 x3165)
+(or (not x3165) x3133)
+(or (not x3165) x3058)
+(or (not x3165) x3134)
+(or (not x3165) x3135)
+(or (not x3165) (not x3112))
+(or (not x3165) (not x3136))
+(or (not x3165) (not x3137))
+(or (not x3165) (not x3138))
+(or (not x3165) (not x3139))
+(or (not x3165) (not x3140))
+(or (not x3165) x3056)
+(or (not x3165) (not x3141))
+(or (not x3165) (not x3088))
+(or (not x3165) (not x3142))
+(or (not x3165) (not x3143))
+(or (not x3165) (not x3049))
+(or (not x3165) (not x3144))
+(or x3234 (not x3165))
+(or x3234 (not x3233))
+(or x3165 x3233 (not x3234))
+(or (not x3006) (not x3005) (not x3112) (not x3234) x3235)
+(or (not x3235) x3006)
+(or (not x3235) x3005)
+(or (not x3235) x3112)
+(or (not x3235) x3234)
+(or x3236 (not x3235))
+(or x3236 (not x3226))
+(or x3235 x3226 (not x3236))
+(or (not x3237) (not x3238) x3208)
+(or (not x3208) x3237)
+(or (not x3208) x3238)
+(or (not x3239) (not x3138) x3240)
+(or (not x3240) x3239)
+(or (not x3240) x3138)
+(or x3049 x3138 x3136 x3137 x3241)
+(or (not x3241) (not x3049))
+(or (not x3241) (not x3138))
+(or (not x3241) (not x3136))
+(or (not x3241) (not x3137))
+(or (not x3137) (not x3136) x3242)
+(or (not x3242) x3137)
+(or (not x3242) x3136)
+(or x3243 (not x3139))
+(or x3243 (not x3242))
+(or x3243 (not x3241))
+(or x3243 (not x3240))
+(or x3139 x3242 x3241 x3240 (not x3243))
+(or x3144 x3141 x3056 x3112 x3142 x3143 x3179)
+(or (not x3179) (not x3144))
+(or (not x3179) (not x3141))
+(or (not x3179) (not x3056))
+(or (not x3179) (not x3112))
+(or (not x3179) (not x3142))
+(or (not x3179) (not x3143))
+(or x3144 x3141 x3056 x3112 x3142 x3143 (not x3243) x3207)
+(or (not x3207) (not x3144))
+(or (not x3207) (not x3141))
+(or (not x3207) (not x3056))
+(or (not x3207) (not x3112))
+(or (not x3207) (not x3142))
+(or (not x3207) (not x3143))
+(or (not x3207) x3243)
+(or (not x3143) (not x3142) x3206)
+(or (not x3206) x3143)
+(or (not x3206) x3142)
+(or (not x3244) (not x3144) x3205)
+(or (not x3205) x3244)
+(or (not x3205) x3144)
+(or (not x3056) (not x3245) x3204)
+(or (not x3204) x3056)
+(or (not x3204) x3245)
+(or x3152 x3076)
+(or x3152 (not x3075))
+(or x3152 (not x3074))
+(or x3152 (not x3073))
+(or x3152 (not x3155))
+(or (not x3076) x3075 x3074 x3073 x3155 (not x3152))
+(or x3151 x3076)
+(or x3151 (not x3075))
+(or x3151 (not x3074))
+(or x3151 (not x3073))
+(or x3151 x3155)
+(or x3151 x3071)
+(or (not x3076) x3075 x3074 x3073 (not x3155) (not x3071) (not x3151))
+(or x3246 x3076)
+(or x3246 (not x3075))
+(or x3246 (not x3074))
+(or x3246 (not x3073))
+(or x3246 x3155)
+(or (not x3076) x3075 x3074 x3073 (not x3155) (not x3246))
+(or (not x3246) (not x3151) (not x3152) x3247)
+(or (not x3247) x3246)
+(or (not x3247) x3151)
+(or (not x3247) x3152)
+(or x3238 (not x3144))
+(or x3238 (not x3141))
+(or x3238 (not x3056))
+(or x3238 (not x3112))
+(or x3238 (not x3142))
+(or x3238 (not x3143))
+(or x3144 x3141 x3056 x3112 x3142 x3143 (not x3238))
+(or x3248 (not x3138))
+(or x3248 (not x3136))
+(or x3248 (not x3137))
+(or x3248 (not x3144))
+(or x3248 (not x3141))
+(or x3248 (not x3056))
+(or x3248 (not x3112))
+(or x3248 (not x3142))
+(or x3248 (not x3143))
+(or x3248 (not x3247))
+(or x3138 x3136 x3137 x3144 x3141 x3056 x3112 x3142 x3143 x3247 (not x3248))
+(or (not x3049) (not x3248) x3203)
+(or (not x3203) x3049)
+(or (not x3203) x3248)
+(or (not x3249) (not x3112) x3202)
+(or (not x3202) x3249)
+(or (not x3202) x3112)
+(or (not x3250) (not x3141) x3201)
+(or (not x3201) x3250)
+(or (not x3201) x3141)
+(or (not x3140) (not x3056) x3200)
+(or (not x3200) x3140)
+(or (not x3200) x3056)
+(or x3251 x3006)
+(or x3251 x3005)
+(or x3251 (not x3088))
+(or x3251 (not x3200))
+(or x3251 (not x3201))
+(or x3251 (not x3202))
+(or x3251 (not x3203))
+(or x3251 (not x3204))
+(or x3251 (not x3205))
+(or x3251 (not x3206))
+(or x3251 (not x3207))
+(or x3251 (not x3208))
+(or (not x3006) (not x3005) x3088 x3200 x3201 x3202 x3203 x3204 x3205 x3206 x3207 x3208 (not x3251))
+(or x3139 (not x3006) (not x3005) x3136 x3137 (not x3138) x3141 x3088 x3142 x3143 x3049 x3144 x3112 x3056 x3252)
+(or (not x3252) (not x3139))
+(or (not x3252) x3006)
+(or (not x3252) x3005)
+(or (not x3252) (not x3136))
+(or (not x3252) (not x3137))
+(or (not x3252) x3138)
+(or (not x3252) (not x3141))
+(or (not x3252) (not x3088))
+(or (not x3252) (not x3142))
+(or (not x3252) (not x3143))
+(or (not x3252) (not x3049))
+(or (not x3252) (not x3144))
+(or (not x3252) (not x3112))
+(or (not x3252) (not x3056))
+(or x3134 (not x3123))
+(or x3134 (not x3059))
+(or x3134 (not x3057))
+(or x3134 (not x3058))
+(or x3134 x3087)
+(or x3123 x3059 x3057 x3058 (not x3087) (not x3134))
+(or x3059 x3057 x3058 (not x3087) (not x3123) x3253)
+(or (not x3253) (not x3059))
+(or (not x3253) (not x3057))
+(or (not x3253) (not x3058))
+(or (not x3253) x3087)
+(or (not x3253) x3123)
+(or x3254 (not x3253))
+(or x3254 x3058)
+(or x3253 (not x3058) (not x3254))
+(or (not x3006) (not x3005) (not x3254) (not x3134) (not x3135) x3112 x3136 x3137 x3138 x3139 x3140 (not x3056) x3141 x3088 x3142 x3143 x3049 x3144 x3255)
+(or (not x3255) x3006)
+(or (not x3255) x3005)
+(or (not x3255) x3254)
+(or (not x3255) x3134)
+(or (not x3255) x3135)
+(or (not x3255) (not x3112))
+(or (not x3255) (not x3136))
+(or (not x3255) (not x3137))
+(or (not x3255) (not x3138))
+(or (not x3255) (not x3139))
+(or (not x3255) (not x3140))
+(or (not x3255) x3056)
+(or (not x3255) (not x3141))
+(or (not x3255) (not x3088))
+(or (not x3255) (not x3142))
+(or (not x3255) (not x3143))
+(or (not x3255) (not x3049))
+(or (not x3255) (not x3144))
+(or x3141 x3143 (not x3142) (not x3006) (not x3005) x3049 x3144 x3112 x3056 x3088 x3136 x3137 x3138 x3139 x3256)
+(or (not x3256) (not x3141))
+(or (not x3256) (not x3143))
+(or (not x3256) x3142)
+(or (not x3256) x3006)
+(or (not x3256) x3005)
+(or (not x3256) (not x3049))
+(or (not x3256) (not x3144))
+(or (not x3256) (not x3112))
+(or (not x3256) (not x3056))
+(or (not x3256) (not x3088))
+(or (not x3256) (not x3136))
+(or (not x3256) (not x3137))
+(or (not x3256) (not x3138))
+(or (not x3256) (not x3139))
+(or x3066 x3048 x3063)
+(or (not x3063) (not x3066))
+(or (not x3063) (not x3048))
+(or x3135 (not x3063))
+(or x3135 (not x3057))
+(or x3135 (not x3058))
+(or x3135 x3059)
+(or x3063 x3057 x3058 (not x3059) (not x3135))
+(or (not x3135) x3123 x3059 x3057 x3058 (not x3087) x3257)
+(or (not x3257) x3135)
+(or (not x3257) (not x3123))
+(or (not x3257) (not x3059))
+(or (not x3257) (not x3057))
+(or (not x3257) (not x3058))
+(or (not x3257) x3087)
+(or x3055 (not x3066))
+(or x3055 (not x3048))
+(or x3066 x3048 (not x3055))
+(or (not x3055) x3057 x3058 (not x3059) x3258)
+(or (not x3258) x3055)
+(or (not x3258) (not x3057))
+(or (not x3258) (not x3058))
+(or (not x3258) x3059)
+(or x3259 (not x3258))
+(or x3259 (not x3257))
+(or x3258 x3257 (not x3259))
+(or (not x3006) (not x3005) x3112 x3136 x3137 x3138 x3139 x3140 (not x3056) x3141 x3088 x3142 x3143 x3049 x3144 (not x3259) x3260)
+(or (not x3260) x3006)
+(or (not x3260) x3005)
+(or (not x3260) (not x3112))
+(or (not x3260) (not x3136))
+(or (not x3260) (not x3137))
+(or (not x3260) (not x3138))
+(or (not x3260) (not x3139))
+(or (not x3260) (not x3140))
+(or (not x3260) x3056)
+(or (not x3260) (not x3141))
+(or (not x3260) (not x3088))
+(or (not x3260) (not x3142))
+(or (not x3260) (not x3143))
+(or (not x3260) (not x3049))
+(or (not x3260) (not x3144))
+(or (not x3260) x3259)
+(or x3261 (not x3262))
+(or x3261 (not x3263))
+(or x3261 (not x3264))
+(or x3261 (not x3265))
+(or x3261 (not x3267))
+(or x3262 x3263 x3264 x3265 x3267 (not x3261))
+(or x3268 (not x3267))
+(or x3268 (not x3266))
+(or x3268 x69)
+(or x3268 (not x70))
+(or x3268 x3006)
+(or x3268 x3005)
+(or x3267 x3266 (not x69) x70 (not x3006) (not x3005) (not x3268))
+(or (not x3268) (not x3269) (not x3261) x3270)
+(or (not x3270) x3268)
+(or (not x3270) x3269)
+(or (not x3270) x3261)
+(or x3271 (not x3262))
+(or x3271 (not x3263))
+(or x3271 (not x3264))
+(or x3271 (not x3265))
+(or x3271 (not x3266))
+(or x3262 x3263 x3264 x3265 x3266 (not x3271))
+(or x3269 (not x3262))
+(or x3269 (not x3263))
+(or x3269 (not x3264))
+(or x3269 x3267)
+(or x3269 x3266)
+(or x3262 x3263 x3264 (not x3267) (not x3266) (not x3269))
+(or x3267 x3266 (not x69) x70 (not x3006) (not x3005) x3262)
+(or (not x3262) (not x3267))
+(or (not x3262) (not x3266))
+(or (not x3262) x69)
+(or (not x3262) (not x70))
+(or (not x3262) x3006)
+(or (not x3262) x3005)
+(or x3272 (not x3262))
+(or x3272 (not x3267))
+(or x3272 x3266)
+(or x3262 x3267 (not x3266) (not x3272))
+(or (not x3272) (not x3269) (not x3271) x3273)
+(or (not x3273) x3272)
+(or (not x3273) x3269)
+(or (not x3273) x3271)
+(or x3274 (not x3275))
+(or x3274 (not x3276))
+(or x3274 (not x3277))
+(or x3274 (not x3278))
+(or x3274 (not x3280))
+(or x3275 x3276 x3277 x3278 x3280 (not x3274))
+(or x3281 (not x3280))
+(or x3281 (not x3279))
+(or x3281 x69)
+(or x3281 (not x70))
+(or x3281 x3006)
+(or x3281 x3005)
+(or x3280 x3279 (not x69) x70 (not x3006) (not x3005) (not x3281))
+(or (not x3281) (not x3282) (not x3274) x3283)
+(or (not x3283) x3281)
+(or (not x3283) x3282)
+(or (not x3283) x3274)
+(or x3284 (not x3275))
+(or x3284 (not x3276))
+(or x3284 (not x3277))
+(or x3284 (not x3278))
+(or x3284 (not x3279))
+(or x3275 x3276 x3277 x3278 x3279 (not x3284))
+(or x3282 (not x3275))
+(or x3282 (not x3276))
+(or x3282 (not x3277))
+(or x3282 x3280)
+(or x3282 x3279)
+(or x3275 x3276 x3277 (not x3280) (not x3279) (not x3282))
+(or x3280 x3279 (not x69) x70 (not x3006) (not x3005) x3275)
+(or (not x3275) (not x3280))
+(or (not x3275) (not x3279))
+(or (not x3275) x69)
+(or (not x3275) (not x70))
+(or (not x3275) x3006)
+(or (not x3275) x3005)
+(or x3285 (not x3275))
+(or x3285 (not x3280))
+(or x3285 x3279)
+(or x3275 x3280 (not x3279) (not x3285))
+(or (not x3285) (not x3282) (not x3284) x3286)
+(or (not x3286) x3285)
+(or (not x3286) x3282)
+(or (not x3286) x3284)
+(or x3287 (not x3122))
+(or x3287 (not x3288))
+(or x3287 (not x3289))
+(or x3287 (not x3230))
+(or x3287 (not x3210))
+(or x3287 (not x3232))
+(or x3287 (not x3213))
+(or x3287 (not x3209))
+(or x3287 (not x3210))
+(or x3287 (not x3211))
+(or x3287 (not x3212))
+(or x3287 (not x3213))
+(or x3287 (not x3214))
+(or x3122 x3288 x3289 x3230 x3210 x3232 x3213 x3209 x3210 x3211 x3212 x3213 x3214 (not x3287))
+(or (not x3113) (not x3114) (not x3287) x3290)
+(or (not x3290) x3113)
+(or (not x3290) x3114)
+(or (not x3290) x3287)
+(or x3291 (not x3006))
+(or x3291 (not x3005))
+(or x3006 x3005 (not x3291))
+(or x3006 x3005 x3292)
+(or (not x3292) (not x3006))
+(or (not x3292) (not x3005))
+(or x3293 (not x3292))
+(or x3293 (not x3006))
+(or x3293 x3005)
+(or x3292 x3006 (not x3005) (not x3293))
+(or x3294 (not x3295))
+(or x3294 (not x3296))
+(or x3294 (not x3297))
+(or x3294 (not x3298))
+(or x3294 (not x3299))
+(or x3294 (not x3300))
+(or x3294 (not x3231))
+(or x3294 (not x3301))
+(or x3294 (not x3302))
+(or x3294 (not x3303))
+(or x3294 (not x3304))
+(or x3294 (not x3308))
+(or x3295 x3296 x3297 x3298 x3299 x3300 x3231 x3301 x3302 x3303 x3304 x3308 (not x3294))
+(or (not x3309) (not x3310) (not x3311) (not x3312) (not x3313) (not x3314) (not x3315) (not x3316) (not x3317) (not x3318) (not x3319) (not x3294) x3320)
+(or (not x3320) x3309)
+(or (not x3320) x3310)
+(or (not x3320) x3311)
+(or (not x3320) x3312)
+(or (not x3320) x3313)
+(or (not x3320) x3314)
+(or (not x3320) x3315)
+(or (not x3320) x3316)
+(or (not x3320) x3317)
+(or (not x3320) x3318)
+(or (not x3320) x3319)
+(or (not x3320) x3294)
+(or x3321 (not x3295))
+(or x3321 (not x3296))
+(or x3321 (not x3297))
+(or x3321 (not x3298))
+(or x3321 (not x3299))
+(or x3321 (not x3300))
+(or x3321 (not x3231))
+(or x3321 (not x3301))
+(or x3321 (not x3302))
+(or x3321 (not x3303))
+(or x3321 (not x3304))
+(or x3321 (not x3307))
+(or x3295 x3296 x3297 x3298 x3299 x3300 x3231 x3301 x3302 x3303 x3304 x3307 (not x3321))
+(or x3322 x3323)
+(or x3322 (not x3324))
+(or (not x3323) x3324 (not x3322))
+(or (not x3322) (not x3323) x3325)
+(or (not x3325) x3322)
+(or (not x3325) x3323)
+(or x3326 (not x3295))
+(or x3326 (not x3296))
+(or x3326 (not x3297))
+(or x3326 (not x3298))
+(or x3326 (not x3299))
+(or x3326 (not x3300))
+(or x3326 (not x3231))
+(or x3326 (not x3301))
+(or x3326 (not x3308))
+(or x3326 (not x3307))
+(or x3326 (not x3306))
+(or x3326 x3305)
+(or x3326 (not x71))
+(or x3326 (not x70))
+(or x3326 (not x3325))
+(or x3295 x3296 x3297 x3298 x3299 x3300 x3231 x3301 x3308 x3307 x3306 (not x3305) x71 x70 x3325 (not x3326))
+(or x3327 (not x3295))
+(or x3327 (not x3296))
+(or x3327 (not x3297))
+(or x3327 (not x3298))
+(or x3327 (not x3299))
+(or x3327 (not x3300))
+(or x3327 (not x3308))
+(or x3327 (not x3307))
+(or x3327 x3306)
+(or x3327 x3305)
+(or x3327 x3328)
+(or x3327 x3329)
+(or x3327 x3330)
+(or x3295 x3296 x3297 x3298 x3299 x3300 x3308 x3307 (not x3306) (not x3305) (not x3328) (not x3329) (not x3330) (not x3327))
+(or x3331 (not x3295))
+(or x3331 (not x3296))
+(or x3331 (not x3297))
+(or x3331 (not x3298))
+(or x3331 (not x3308))
+(or x3331 (not x3307))
+(or x3331 x3306)
+(or x3331 (not x3305))
+(or x3331 (not x3332))
+(or x3331 x3333)
+(or x3331 x3334)
+(or x3295 x3296 x3297 x3298 x3308 x3307 (not x3306) x3305 x3332 (not x3333) (not x3334) (not x3331))
+(or x3335 (not x3295))
+(or x3335 (not x3308))
+(or x3335 (not x3307))
+(or x3335 (not x3306))
+(or x3335 (not x3305))
+(or x3335 (not x70))
+(or x3335 x3006)
+(or x3335 x3005)
+(or x3335 (not x3332))
+(or x3335 (not x3336))
+(or x3335 (not x3337))
+(or x3335 x3338)
+(or x3295 x3308 x3307 x3306 x3305 x70 (not x3006) (not x3005) x3332 x3336 x3337 (not x3338) (not x3335))
+(or x3339 x3340)
+(or x3339 x3341)
+(or x3339 x3342)
+(or (not x3340) (not x3341) (not x3342) (not x3339))
+(or (not x3339) (not x3340) x3343)
+(or (not x3343) x3339)
+(or (not x3343) x3340)
+(or x3344 x3345)
+(or x3344 (not x3343))
+(or (not x3345) x3343 (not x3344))
+(or (not x3344) (not x3345) x3346)
+(or (not x3346) x3344)
+(or (not x3346) x3345)
+(or x3347 (not x3308))
+(or x3347 (not x3307))
+(or x3347 (not x3306))
+(or x3347 (not x3305))
+(or x3347 (not x70))
+(or x3347 x3006)
+(or x3347 x3005)
+(or x3347 (not x3332))
+(or x3347 (not x3348))
+(or x3347 (not x3346))
+(or x3308 x3307 x3306 x3305 x70 (not x3006) (not x3005) x3332 x3348 x3346 (not x3347))
+(or (not x3347) (not x3335) (not x3311) (not x3312) (not x3331) (not x3314) (not x3327) (not x3316) (not x3326) (not x3319) (not x3321) x3349)
+(or (not x3349) x3347)
+(or (not x3349) x3335)
+(or (not x3349) x3311)
+(or (not x3349) x3312)
+(or (not x3349) x3331)
+(or (not x3349) x3314)
+(or (not x3349) x3327)
+(or (not x3349) x3316)
+(or (not x3349) x3326)
+(or (not x3349) x3319)
+(or (not x3349) x3321)
+(or x3350 (not x3295))
+(or x3350 (not x3296))
+(or x3350 (not x3297))
+(or x3350 (not x3298))
+(or x3350 (not x3299))
+(or x3350 (not x3300))
+(or x3350 (not x3231))
+(or x3350 (not x3301))
+(or x3350 (not x3302))
+(or x3350 (not x3303))
+(or x3350 (not x3304))
+(or x3350 (not x3306))
+(or x3295 x3296 x3297 x3298 x3299 x3300 x3231 x3301 x3302 x3303 x3304 x3306 (not x3350))
+(or x3318 (not x3295))
+(or x3318 (not x3296))
+(or x3318 (not x3297))
+(or x3318 (not x3298))
+(or x3318 (not x3299))
+(or x3318 (not x3300))
+(or x3318 (not x3231))
+(or x3318 (not x3301))
+(or x3318 (not x3302))
+(or x3318 (not x3308))
+(or x3318 x3307)
+(or x3318 x3306)
+(or x3318 (not x3305))
+(or x3318 (not x71))
+(or x3318 (not x70))
+(or x3295 x3296 x3297 x3298 x3299 x3300 x3231 x3301 x3302 x3308 (not x3307) (not x3306) x3305 x71 x70 (not x3318))
+(or x3351 x3324)
+(or x3351 x3352)
+(or (not x3324) (not x3352) (not x3351))
+(or (not x3351) (not x3324) x3353)
+(or (not x3353) x3351)
+(or (not x3353) x3324)
+(or x3354 (not x3295))
+(or x3354 (not x3296))
+(or x3354 (not x3297))
+(or x3354 (not x3298))
+(or x3354 (not x3299))
+(or x3354 (not x3300))
+(or x3354 (not x3231))
+(or x3354 (not x3301))
+(or x3354 (not x3308))
+(or x3354 (not x3307))
+(or x3354 (not x3306))
+(or x3354 x3305)
+(or x3354 (not x71))
+(or x3354 (not x70))
+(or x3354 x3323)
+(or x3354 (not x3353))
+(or x3295 x3296 x3297 x3298 x3299 x3300 x3231 x3301 x3308 x3307 x3306 (not x3305) x71 x70 (not x3323) x3353 (not x3354))
+(or x3355 x3330)
+(or x3355 (not x3356))
+(or (not x3330) x3356 (not x3355))
+(or (not x3355) (not x3330) x3357)
+(or (not x3357) x3355)
+(or (not x3357) x3330)
+(or x3358 x3328)
+(or x3358 x3329)
+(or x3358 (not x3357))
+(or (not x3328) (not x3329) x3357 (not x3358))
+(or (not x3358) (not x3328) x3359)
+(or (not x3359) x3358)
+(or (not x3359) x3328)
+(or x3360 (not x3295))
+(or x3360 (not x3296))
+(or x3360 (not x3297))
+(or x3360 (not x3298))
+(or x3360 (not x3299))
+(or x3360 (not x3300))
+(or x3360 (not x3308))
+(or x3360 (not x3307))
+(or x3360 x3306)
+(or x3360 x3305)
+(or x3360 (not x3359))
+(or x3295 x3296 x3297 x3298 x3299 x3300 x3308 x3307 (not x3306) (not x3305) x3359 (not x3360))
+(or x3361 x3334)
+(or x3361 (not x3362))
+(or (not x3334) x3362 (not x3361))
+(or (not x3361) (not x3334) x3363)
+(or (not x3363) x3361)
+(or (not x3363) x3334)
+(or x3364 (not x3295))
+(or x3364 (not x3296))
+(or x3364 (not x3297))
+(or x3364 (not x3298))
+(or x3364 (not x3308))
+(or x3364 (not x3307))
+(or x3364 x3306)
+(or x3364 (not x3305))
+(or x3364 (not x3332))
+(or x3364 x3333)
+(or x3364 (not x3363))
+(or x3295 x3296 x3297 x3298 x3308 x3307 (not x3306) x3305 x3332 (not x3333) x3363 (not x3364))
+(or x3365 (not x3295))
+(or x3365 (not x3308))
+(or x3365 (not x3307))
+(or x3365 (not x3306))
+(or x3365 (not x3305))
+(or x3365 (not x70))
+(or x3365 x3006)
+(or x3365 x3005)
+(or x3365 (not x3332))
+(or x3365 (not x3336))
+(or x3365 (not x3337))
+(or x3365 (not x3338))
+(or x3295 x3308 x3307 x3306 x3305 x70 (not x3006) (not x3005) x3332 x3336 x3337 x3338 (not x3365))
+(or x3366 x3345)
+(or x3366 x3340)
+(or x3366 x3341)
+(or x3366 (not x3342))
+(or (not x3345) (not x3340) (not x3341) x3342 (not x3366))
+(or (not x3366) (not x3345) x3367)
+(or (not x3367) x3366)
+(or (not x3367) x3345)
+(or x3368 (not x3308))
+(or x3368 (not x3307))
+(or x3368 (not x3306))
+(or x3368 (not x3305))
+(or x3368 (not x70))
+(or x3368 x3006)
+(or x3368 x3005)
+(or x3368 (not x3332))
+(or x3368 (not x3348))
+(or x3368 (not x3367))
+(or x3308 x3307 x3306 x3305 x70 (not x3006) (not x3005) x3332 x3348 x3367 (not x3368))
+(or (not x3368) (not x3365) (not x3312) (not x3364) (not x3360) (not x3316) (not x3354) (not x3318) (not x3319) (not x3350) x3369)
+(or (not x3369) x3368)
+(or (not x3369) x3365)
+(or (not x3369) x3312)
+(or (not x3369) x3364)
+(or (not x3369) x3360)
+(or (not x3369) x3316)
+(or (not x3369) x3354)
+(or (not x3369) x3318)
+(or (not x3369) x3319)
+(or (not x3369) x3350)
+(or x3370 (not x3212))
+(or x3370 (not x3214))
+(or x3370 (not x3213))
+(or x3212 x3214 x3213 (not x3370))
+(or (not x3370) (not x70) x3304)
+(or (not x3304) x3370)
+(or (not x3304) x70)
+(or x3371 (not x3295))
+(or x3371 (not x3296))
+(or x3371 (not x3297))
+(or x3371 (not x3298))
+(or x3371 (not x3299))
+(or x3371 (not x3300))
+(or x3371 (not x3231))
+(or x3371 (not x3301))
+(or x3371 (not x3302))
+(or x3371 (not x3303))
+(or x3371 (not x3304))
+(or x3371 (not x3305))
+(or x3295 x3296 x3297 x3298 x3299 x3300 x3231 x3301 x3302 x3303 x3304 x3305 (not x3371))
+(or x3196 (not x3308))
+(or x3196 x3307)
+(or x3196 (not x3306))
+(or x3196 (not x3305))
+(or x3308 (not x3307) x3306 x3305 (not x3196))
+(or (not x3196) (not x3197) (not x3161) x3372)
+(or (not x3372) x3196)
+(or (not x3372) x3197)
+(or (not x3372) x3161)
+(or x3308 (not x3307) (not x3306) x3305 x71 x70 x3303)
+(or (not x3303) (not x3308))
+(or (not x3303) x3307)
+(or (not x3303) x3306)
+(or (not x3303) (not x3305))
+(or (not x3303) (not x71))
+(or (not x3303) (not x70))
+(or x3308 x3307 x3306 (not x3305) x71 x70 x3302)
+(or (not x3302) (not x3308))
+(or (not x3302) (not x3307))
+(or (not x3302) (not x3306))
+(or (not x3302) x3305)
+(or (not x3302) (not x71))
+(or (not x3302) (not x70))
+(or x3319 (not x3295))
+(or x3319 (not x3296))
+(or x3319 (not x3297))
+(or x3319 (not x3298))
+(or x3319 (not x3299))
+(or x3319 (not x3300))
+(or x3319 (not x3231))
+(or x3319 (not x3301))
+(or x3319 (not x3302))
+(or x3319 (not x3303))
+(or x3319 (not x3372))
+(or x3319 x70)
+(or x3295 x3296 x3297 x3298 x3299 x3300 x3231 x3301 x3302 x3303 x3372 (not x70) (not x3319))
+(or x3373 x3352)
+(or x3373 x3374)
+(or (not x3352) (not x3374) (not x3373))
+(or (not x3373) (not x3352) x3375)
+(or (not x3375) x3373)
+(or (not x3375) x3352)
+(or x3308 x3307 x3306 (not x3305) x71 (not x70) x3301)
+(or (not x3301) (not x3308))
+(or (not x3301) (not x3307))
+(or (not x3301) (not x3306))
+(or (not x3301) x3305)
+(or (not x3301) (not x71))
+(or (not x3301) x70)
+(or x3317 (not x3295))
+(or x3317 (not x3296))
+(or x3317 (not x3297))
+(or x3317 (not x3298))
+(or x3317 (not x3299))
+(or x3317 (not x3300))
+(or x3317 (not x3231))
+(or x3317 (not x3301))
+(or x3317 (not x3308))
+(or x3317 (not x3307))
+(or x3317 (not x3306))
+(or x3317 x3305)
+(or x3317 (not x71))
+(or x3317 (not x70))
+(or x3295 x3296 x3297 x3298 x3299 x3300 x3231 x3301 x3308 x3307 x3306 (not x3305) x71 x70 (not x3317))
+(or x3376 (not x3295))
+(or x3376 (not x3296))
+(or x3376 (not x3297))
+(or x3376 (not x3298))
+(or x3376 (not x3299))
+(or x3376 (not x3300))
+(or x3376 (not x3231))
+(or x3376 (not x3301))
+(or x3376 (not x3308))
+(or x3376 (not x3307))
+(or x3376 (not x3306))
+(or x3376 x3305)
+(or x3376 (not x71))
+(or x3376 (not x70))
+(or x3376 x3323)
+(or x3376 x3324)
+(or x3376 (not x3375))
+(or x3295 x3296 x3297 x3298 x3299 x3300 x3231 x3301 x3308 x3307 x3306 (not x3305) x71 x70 (not x3323) (not x3324) x3375 (not x3376))
+(or x3316 (not x3295))
+(or x3316 (not x3296))
+(or x3316 (not x3297))
+(or x3316 (not x3298))
+(or x3316 (not x3299))
+(or x3316 (not x3300))
+(or x3316 (not x3231))
+(or x3316 (not x3308))
+(or x3316 (not x3307))
+(or x3316 (not x3306))
+(or x3316 x3305)
+(or x3316 (not x71))
+(or x3316 x70)
+(or x3295 x3296 x3297 x3298 x3299 x3300 x3231 x3308 x3307 x3306 (not x3305) x71 (not x70) (not x3316))
+(or x3377 x3329)
+(or x3377 (not x3330))
+(or (not x3329) x3330 (not x3377))
+(or (not x3377) (not x3329) x3378)
+(or (not x3378) x3377)
+(or (not x3378) x3329)
+(or x3315 (not x3295))
+(or x3315 (not x3296))
+(or x3315 (not x3297))
+(or x3315 (not x3298))
+(or x3315 (not x3299))
+(or x3315 (not x3300))
+(or x3315 (not x3308))
+(or x3315 (not x3307))
+(or x3315 x3306)
+(or x3315 x3305)
+(or x3295 x3296 x3297 x3298 x3299 x3300 x3308 x3307 (not x3306) (not x3305) (not x3315))
+(or x3379 (not x3295))
+(or x3379 (not x3296))
+(or x3379 (not x3297))
+(or x3379 (not x3298))
+(or x3379 (not x3299))
+(or x3379 (not x3300))
+(or x3379 (not x3308))
+(or x3379 (not x3307))
+(or x3379 x3306)
+(or x3379 x3305)
+(or x3379 x3328)
+(or x3379 (not x3378))
+(or x3295 x3296 x3297 x3298 x3299 x3300 x3308 x3307 (not x3306) (not x3305) (not x3328) x3378 (not x3379))
+(or x3308 x3307 (not x3306) x3305 (not x3380) x3299)
+(or (not x3299) (not x3308))
+(or (not x3299) (not x3307))
+(or (not x3299) x3306)
+(or (not x3299) (not x3305))
+(or (not x3299) x3380)
+(or x3314 (not x3295))
+(or x3314 (not x3296))
+(or x3314 (not x3297))
+(or x3314 (not x3298))
+(or x3314 (not x3299))
+(or x3314 (not x3308))
+(or x3314 (not x3307))
+(or x3314 x3306)
+(or x3314 (not x3305))
+(or x3295 x3296 x3297 x3298 x3299 x3308 x3307 (not x3306) x3305 (not x3314))
+(or x3381 x3333)
+(or x3381 x3334)
+(or x3381 x3362)
+(or x3381 x3382)
+(or (not x3333) (not x3334) (not x3362) (not x3382) (not x3381))
+(or (not x3381) (not x3333) x3383)
+(or (not x3383) x3381)
+(or (not x3383) x3333)
+(or x3308 x3307 (not x3306) x3305 (not x70) (not x71) x3298)
+(or (not x3298) (not x3308))
+(or (not x3298) (not x3307))
+(or (not x3298) x3306)
+(or (not x3298) (not x3305))
+(or (not x3298) x70)
+(or (not x3298) x71)
+(or x3313 (not x3295))
+(or x3313 (not x3296))
+(or x3313 (not x3297))
+(or x3313 (not x3298))
+(or x3313 (not x3308))
+(or x3313 (not x3307))
+(or x3313 x3306)
+(or x3313 (not x3305))
+(or x3313 (not x3332))
+(or x3295 x3296 x3297 x3298 x3308 x3307 (not x3306) x3305 x3332 (not x3313))
+(or x3384 (not x3295))
+(or x3384 (not x3296))
+(or x3384 (not x3297))
+(or x3384 (not x3298))
+(or x3384 (not x3308))
+(or x3384 (not x3307))
+(or x3384 x3306)
+(or x3384 (not x3305))
+(or x3384 (not x3332))
+(or x3384 (not x3383))
+(or x3295 x3296 x3297 x3298 x3308 x3307 (not x3306) x3305 x3332 x3383 (not x3384))
+(or x3312 (not x3295))
+(or x3312 (not x3296))
+(or x3312 (not x3297))
+(or x3312 (not x3308))
+(or x3312 (not x3307))
+(or x3312 x3306)
+(or x3312 (not x3305))
+(or x3312 x70)
+(or x3312 x71)
+(or x3295 x3296 x3297 x3308 x3307 (not x3306) x3305 (not x70) (not x71) (not x3312))
+(or x3308 x3307 x3306 x3305 x70 (not x3006) (not x3005) (not x3380) (not x3385) (not x3386) x3296)
+(or (not x3296) (not x3308))
+(or (not x3296) (not x3307))
+(or (not x3296) (not x3306))
+(or (not x3296) (not x3305))
+(or (not x3296) (not x70))
+(or (not x3296) x3006)
+(or (not x3296) x3005)
+(or (not x3296) x3380)
+(or (not x3296) x3385)
+(or (not x3296) x3386)
+(or x3311 (not x3295))
+(or x3311 (not x3296))
+(or x3311 (not x3308))
+(or x3311 (not x3307))
+(or x3311 (not x3306))
+(or x3311 (not x3305))
+(or x3311 (not x70))
+(or x3311 x3006)
+(or x3311 x3005)
+(or x3295 x3296 x3308 x3307 x3306 x3305 x70 (not x3006) (not x3005) (not x3311))
+(or (not x3267) (not x3266) x3265)
+(or (not x3265) x3267)
+(or (not x3265) x3266)
+(or (not x3267) x3266 x3264)
+(or (not x3264) x3267)
+(or (not x3264) (not x3266))
+(or x3267 (not x3266) x3263)
+(or (not x3263) (not x3267))
+(or (not x3263) x3266)
+(or x3267 x3266 (not x69) x70 x3387)
+(or (not x3387) (not x3267))
+(or (not x3387) (not x3266))
+(or (not x3387) x69)
+(or (not x3387) (not x70))
+(or x3380 (not x3387))
+(or x3380 (not x3263))
+(or x3380 (not x3264))
+(or x3380 (not x3265))
+(or x3387 x3263 x3264 x3265 (not x3380))
+(or x3308 x3307 x3306 x3305 x70 (not x3006) (not x3005) x3297)
+(or (not x3297) (not x3308))
+(or (not x3297) (not x3307))
+(or (not x3297) (not x3306))
+(or (not x3297) (not x3305))
+(or (not x3297) (not x70))
+(or (not x3297) x3006)
+(or (not x3297) x3005)
+(or x3308 x3307 x3306 x3305 x70 (not x3006) (not x3005) (not x3380) (not x3388) x3295)
+(or (not x3295) (not x3308))
+(or (not x3295) (not x3307))
+(or (not x3295) (not x3306))
+(or (not x3295) (not x3305))
+(or (not x3295) (not x70))
+(or (not x3295) x3006)
+(or (not x3295) x3005)
+(or (not x3295) x3380)
+(or (not x3295) x3388)
+(or x3310 (not x3295))
+(or x3310 (not x3308))
+(or x3310 (not x3307))
+(or x3310 (not x3306))
+(or x3310 (not x3305))
+(or x3310 (not x70))
+(or x3310 x3006)
+(or x3310 x3005)
+(or x3310 (not x3332))
+(or x3310 (not x3336))
+(or x3310 (not x3337))
+(or x3295 x3308 x3307 x3306 x3305 x70 (not x3006) (not x3005) x3332 x3336 x3337 (not x3310))
+(or x3389 (not x3295))
+(or x3389 (not x3308))
+(or x3389 (not x3307))
+(or x3389 (not x3306))
+(or x3389 (not x3305))
+(or x3389 (not x70))
+(or x3389 x3006)
+(or x3389 x3005)
+(or x3389 (not x3332))
+(or x3389 (not x3336))
+(or x3389 (not x3337))
+(or x3389 x3338)
+(or x3389 x3390)
+(or x3295 x3308 x3307 x3306 x3305 x70 (not x3006) (not x3005) x3332 x3336 x3337 (not x3338) (not x3390) (not x3389))
+(or x3391 x3341)
+(or x3391 x3342)
+(or (not x3341) (not x3342) (not x3391))
+(or (not x3391) (not x3341) x3392)
+(or (not x3392) x3391)
+(or (not x3392) x3341)
+(or x3393 x3267)
+(or x3393 x3266)
+(or (not x3267) (not x3266) (not x3393))
+(or x3394 x3267)
+(or x3394 (not x3266))
+(or (not x3267) x3266 (not x3394))
+(or x3395 (not x3267))
+(or x3395 x3266)
+(or x3267 (not x3266) (not x3395))
+(or x3396 (not x3267))
+(or x3396 (not x3266))
+(or x3396 x69)
+(or x3396 (not x70))
+(or x3267 x3266 (not x69) x70 (not x3396))
+(or (not x3396) (not x3395) (not x3394) (not x3393) x3332)
+(or (not x3332) x3396)
+(or (not x3332) x3395)
+(or (not x3332) x3394)
+(or (not x3332) x3393)
+(or x3309 (not x3308))
+(or x3309 (not x3307))
+(or x3309 (not x3306))
+(or x3309 (not x3305))
+(or x3309 (not x70))
+(or x3309 x3006)
+(or x3309 x3005)
+(or x3309 (not x3332))
+(or x3309 (not x3348))
+(or x3308 x3307 x3306 x3305 x70 (not x3006) (not x3005) x3332 x3348 (not x3309))
+(or x3397 (not x3308))
+(or x3397 (not x3307))
+(or x3397 (not x3306))
+(or x3397 (not x3305))
+(or x3397 (not x70))
+(or x3397 x3006)
+(or x3397 x3005)
+(or x3397 (not x3332))
+(or x3397 (not x3348))
+(or x3397 x3345)
+(or x3397 x3340)
+(or x3397 (not x3392))
+(or x3308 x3307 x3306 x3305 x70 (not x3006) (not x3005) x3332 x3348 (not x3345) (not x3340) x3392 (not x3397))
+(or (not x3397) (not x3389) (not x3311) (not x3312) (not x3384) (not x3314) (not x3379) (not x3316) (not x3376) (not x3319) (not x3371) x3398)
+(or (not x3398) x3397)
+(or (not x3398) x3389)
+(or (not x3398) x3311)
+(or (not x3398) x3312)
+(or (not x3398) x3384)
+(or (not x3398) x3314)
+(or (not x3398) x3379)
+(or (not x3398) x3316)
+(or (not x3398) x3376)
+(or (not x3398) x3319)
+(or (not x3398) x3371)
+(or x3399 (not x3400))
+(or x3399 (not x3401))
+(or x3399 (not x3402))
+(or x3399 (not x3403))
+(or x3399 (not x3404))
+(or x3399 (not x3405))
+(or x3399 (not x3229))
+(or x3399 (not x3406))
+(or x3399 (not x3407))
+(or x3399 (not x3408))
+(or x3399 (not x3409))
+(or x3399 (not x3413))
+(or x3400 x3401 x3402 x3403 x3404 x3405 x3229 x3406 x3407 x3408 x3409 x3413 (not x3399))
+(or (not x3414) (not x3415) (not x3416) (not x3417) (not x3418) (not x3419) (not x3420) (not x3421) (not x3422) (not x3423) (not x3424) (not x3399) x3425)
+(or (not x3425) x3414)
+(or (not x3425) x3415)
+(or (not x3425) x3416)
+(or (not x3425) x3417)
+(or (not x3425) x3418)
+(or (not x3425) x3419)
+(or (not x3425) x3420)
+(or (not x3425) x3421)
+(or (not x3425) x3422)
+(or (not x3425) x3423)
+(or (not x3425) x3424)
+(or (not x3425) x3399)
+(or x3426 (not x3400))
+(or x3426 (not x3401))
+(or x3426 (not x3402))
+(or x3426 (not x3403))
+(or x3426 (not x3404))
+(or x3426 (not x3405))
+(or x3426 (not x3229))
+(or x3426 (not x3406))
+(or x3426 (not x3407))
+(or x3426 (not x3408))
+(or x3426 (not x3409))
+(or x3426 (not x3412))
+(or x3400 x3401 x3402 x3403 x3404 x3405 x3229 x3406 x3407 x3408 x3409 x3412 (not x3426))
+(or x3427 x3428)
+(or x3427 (not x3429))
+(or (not x3428) x3429 (not x3427))
+(or (not x3427) (not x3428) x3430)
+(or (not x3430) x3427)
+(or (not x3430) x3428)
+(or x3431 (not x3400))
+(or x3431 (not x3401))
+(or x3431 (not x3402))
+(or x3431 (not x3403))
+(or x3431 (not x3404))
+(or x3431 (not x3405))
+(or x3431 (not x3229))
+(or x3431 (not x3406))
+(or x3431 (not x3413))
+(or x3431 (not x3412))
+(or x3431 (not x3411))
+(or x3431 x3410)
+(or x3431 (not x71))
+(or x3431 (not x70))
+(or x3431 (not x3430))
+(or x3400 x3401 x3402 x3403 x3404 x3405 x3229 x3406 x3413 x3412 x3411 (not x3410) x71 x70 x3430 (not x3431))
+(or x3432 (not x3400))
+(or x3432 (not x3401))
+(or x3432 (not x3402))
+(or x3432 (not x3403))
+(or x3432 (not x3404))
+(or x3432 (not x3405))
+(or x3432 (not x3413))
+(or x3432 (not x3412))
+(or x3432 x3411)
+(or x3432 x3410)
+(or x3432 x3433)
+(or x3432 x3434)
+(or x3432 x3435)
+(or x3400 x3401 x3402 x3403 x3404 x3405 x3413 x3412 (not x3411) (not x3410) (not x3433) (not x3434) (not x3435) (not x3432))
+(or x3436 (not x3400))
+(or x3436 (not x3401))
+(or x3436 (not x3402))
+(or x3436 (not x3403))
+(or x3436 (not x3413))
+(or x3436 (not x3412))
+(or x3436 x3411)
+(or x3436 (not x3410))
+(or x3436 (not x3437))
+(or x3436 x3438)
+(or x3436 x3439)
+(or x3400 x3401 x3402 x3403 x3413 x3412 (not x3411) x3410 x3437 (not x3438) (not x3439) (not x3436))
+(or x3440 (not x3400))
+(or x3440 (not x3413))
+(or x3440 (not x3412))
+(or x3440 (not x3411))
+(or x3440 (not x3410))
+(or x3440 (not x70))
+(or x3440 x3006)
+(or x3440 x3005)
+(or x3440 (not x3437))
+(or x3440 (not x3336))
+(or x3440 (not x3337))
+(or x3440 x3441)
+(or x3400 x3413 x3412 x3411 x3410 x70 (not x3006) (not x3005) x3437 x3336 x3337 (not x3441) (not x3440))
+(or x3442 x3443)
+(or x3442 x3444)
+(or x3442 x3445)
+(or (not x3443) (not x3444) (not x3445) (not x3442))
+(or (not x3442) (not x3443) x3446)
+(or (not x3446) x3442)
+(or (not x3446) x3443)
+(or x3447 x3448)
+(or x3447 (not x3446))
+(or (not x3448) x3446 (not x3447))
+(or (not x3447) (not x3448) x3449)
+(or (not x3449) x3447)
+(or (not x3449) x3448)
+(or x3450 (not x3413))
+(or x3450 (not x3412))
+(or x3450 (not x3411))
+(or x3450 (not x3410))
+(or x3450 (not x70))
+(or x3450 x3006)
+(or x3450 x3005)
+(or x3450 (not x3437))
+(or x3450 (not x3348))
+(or x3450 (not x3449))
+(or x3413 x3412 x3411 x3410 x70 (not x3006) (not x3005) x3437 x3348 x3449 (not x3450))
+(or (not x3450) (not x3440) (not x3416) (not x3417) (not x3436) (not x3419) (not x3432) (not x3421) (not x3431) (not x3424) (not x3426) x3451)
+(or (not x3451) x3450)
+(or (not x3451) x3440)
+(or (not x3451) x3416)
+(or (not x3451) x3417)
+(or (not x3451) x3436)
+(or (not x3451) x3419)
+(or (not x3451) x3432)
+(or (not x3451) x3421)
+(or (not x3451) x3431)
+(or (not x3451) x3424)
+(or (not x3451) x3426)
+(or x3452 (not x3400))
+(or x3452 (not x3401))
+(or x3452 (not x3402))
+(or x3452 (not x3403))
+(or x3452 (not x3404))
+(or x3452 (not x3405))
+(or x3452 (not x3229))
+(or x3452 (not x3406))
+(or x3452 (not x3407))
+(or x3452 (not x3408))
+(or x3452 (not x3409))
+(or x3452 (not x3411))
+(or x3400 x3401 x3402 x3403 x3404 x3405 x3229 x3406 x3407 x3408 x3409 x3411 (not x3452))
+(or x3423 (not x3400))
+(or x3423 (not x3401))
+(or x3423 (not x3402))
+(or x3423 (not x3403))
+(or x3423 (not x3404))
+(or x3423 (not x3405))
+(or x3423 (not x3229))
+(or x3423 (not x3406))
+(or x3423 (not x3407))
+(or x3423 (not x3413))
+(or x3423 x3412)
+(or x3423 x3411)
+(or x3423 (not x3410))
+(or x3423 (not x71))
+(or x3423 (not x70))
+(or x3400 x3401 x3402 x3403 x3404 x3405 x3229 x3406 x3407 x3413 (not x3412) (not x3411) x3410 x71 x70 (not x3423))
+(or x3453 x3429)
+(or x3453 x3454)
+(or (not x3429) (not x3454) (not x3453))
+(or (not x3453) (not x3429) x3455)
+(or (not x3455) x3453)
+(or (not x3455) x3429)
+(or x3456 (not x3400))
+(or x3456 (not x3401))
+(or x3456 (not x3402))
+(or x3456 (not x3403))
+(or x3456 (not x3404))
+(or x3456 (not x3405))
+(or x3456 (not x3229))
+(or x3456 (not x3406))
+(or x3456 (not x3413))
+(or x3456 (not x3412))
+(or x3456 (not x3411))
+(or x3456 x3410)
+(or x3456 (not x71))
+(or x3456 (not x70))
+(or x3456 x3428)
+(or x3456 (not x3455))
+(or x3400 x3401 x3402 x3403 x3404 x3405 x3229 x3406 x3413 x3412 x3411 (not x3410) x71 x70 (not x3428) x3455 (not x3456))
+(or x3457 x3435)
+(or x3457 (not x3458))
+(or (not x3435) x3458 (not x3457))
+(or (not x3457) (not x3435) x3459)
+(or (not x3459) x3457)
+(or (not x3459) x3435)
+(or x3460 x3433)
+(or x3460 x3434)
+(or x3460 (not x3459))
+(or (not x3433) (not x3434) x3459 (not x3460))
+(or (not x3460) (not x3433) x3461)
+(or (not x3461) x3460)
+(or (not x3461) x3433)
+(or x3462 (not x3400))
+(or x3462 (not x3401))
+(or x3462 (not x3402))
+(or x3462 (not x3403))
+(or x3462 (not x3404))
+(or x3462 (not x3405))
+(or x3462 (not x3413))
+(or x3462 (not x3412))
+(or x3462 x3411)
+(or x3462 x3410)
+(or x3462 (not x3461))
+(or x3400 x3401 x3402 x3403 x3404 x3405 x3413 x3412 (not x3411) (not x3410) x3461 (not x3462))
+(or x3463 x3439)
+(or x3463 (not x3464))
+(or (not x3439) x3464 (not x3463))
+(or (not x3463) (not x3439) x3465)
+(or (not x3465) x3463)
+(or (not x3465) x3439)
+(or x3466 (not x3400))
+(or x3466 (not x3401))
+(or x3466 (not x3402))
+(or x3466 (not x3403))
+(or x3466 (not x3413))
+(or x3466 (not x3412))
+(or x3466 x3411)
+(or x3466 (not x3410))
+(or x3466 (not x3437))
+(or x3466 x3438)
+(or x3466 (not x3465))
+(or x3400 x3401 x3402 x3403 x3413 x3412 (not x3411) x3410 x3437 (not x3438) x3465 (not x3466))
+(or x3467 (not x3400))
+(or x3467 (not x3413))
+(or x3467 (not x3412))
+(or x3467 (not x3411))
+(or x3467 (not x3410))
+(or x3467 (not x70))
+(or x3467 x3006)
+(or x3467 x3005)
+(or x3467 (not x3437))
+(or x3467 (not x3336))
+(or x3467 (not x3337))
+(or x3467 (not x3441))
+(or x3400 x3413 x3412 x3411 x3410 x70 (not x3006) (not x3005) x3437 x3336 x3337 x3441 (not x3467))
+(or x3468 x3448)
+(or x3468 x3443)
+(or x3468 x3444)
+(or x3468 (not x3445))
+(or (not x3448) (not x3443) (not x3444) x3445 (not x3468))
+(or (not x3468) (not x3448) x3469)
+(or (not x3469) x3468)
+(or (not x3469) x3448)
+(or x3470 (not x3413))
+(or x3470 (not x3412))
+(or x3470 (not x3411))
+(or x3470 (not x3410))
+(or x3470 (not x70))
+(or x3470 x3006)
+(or x3470 x3005)
+(or x3470 (not x3437))
+(or x3470 (not x3348))
+(or x3470 (not x3469))
+(or x3413 x3412 x3411 x3410 x70 (not x3006) (not x3005) x3437 x3348 x3469 (not x3470))
+(or (not x3470) (not x3467) (not x3417) (not x3466) (not x3462) (not x3421) (not x3456) (not x3423) (not x3424) (not x3452) x3471)
+(or (not x3471) x3470)
+(or (not x3471) x3467)
+(or (not x3471) x3417)
+(or (not x3471) x3466)
+(or (not x3471) x3462)
+(or (not x3471) x3421)
+(or (not x3471) x3456)
+(or (not x3471) x3423)
+(or (not x3471) x3424)
+(or (not x3471) x3452)
+(or x3472 (not x3209))
+(or x3472 (not x3211))
+(or x3472 (not x3210))
+(or x3209 x3211 x3210 (not x3472))
+(or (not x3472) (not x70) x3409)
+(or (not x3409) x3472)
+(or (not x3409) x70)
+(or x3473 (not x3400))
+(or x3473 (not x3401))
+(or x3473 (not x3402))
+(or x3473 (not x3403))
+(or x3473 (not x3404))
+(or x3473 (not x3405))
+(or x3473 (not x3229))
+(or x3473 (not x3406))
+(or x3473 (not x3407))
+(or x3473 (not x3408))
+(or x3473 (not x3409))
+(or x3473 (not x3410))
+(or x3400 x3401 x3402 x3403 x3404 x3405 x3229 x3406 x3407 x3408 x3409 x3410 (not x3473))
+(or x3194 (not x3413))
+(or x3194 x3412)
+(or x3194 (not x3411))
+(or x3194 (not x3410))
+(or x3413 (not x3412) x3411 x3410 (not x3194))
+(or (not x3194) (not x3195) (not x3159) x3474)
+(or (not x3474) x3194)
+(or (not x3474) x3195)
+(or (not x3474) x3159)
+(or x3413 (not x3412) (not x3411) x3410 x71 x70 x3408)
+(or (not x3408) (not x3413))
+(or (not x3408) x3412)
+(or (not x3408) x3411)
+(or (not x3408) (not x3410))
+(or (not x3408) (not x71))
+(or (not x3408) (not x70))
+(or x3413 x3412 x3411 (not x3410) x71 x70 x3407)
+(or (not x3407) (not x3413))
+(or (not x3407) (not x3412))
+(or (not x3407) (not x3411))
+(or (not x3407) x3410)
+(or (not x3407) (not x71))
+(or (not x3407) (not x70))
+(or x3424 (not x3400))
+(or x3424 (not x3401))
+(or x3424 (not x3402))
+(or x3424 (not x3403))
+(or x3424 (not x3404))
+(or x3424 (not x3405))
+(or x3424 (not x3229))
+(or x3424 (not x3406))
+(or x3424 (not x3407))
+(or x3424 (not x3408))
+(or x3424 (not x3474))
+(or x3424 x70)
+(or x3400 x3401 x3402 x3403 x3404 x3405 x3229 x3406 x3407 x3408 x3474 (not x70) (not x3424))
+(or x3475 x3454)
+(or x3475 x3476)
+(or (not x3454) (not x3476) (not x3475))
+(or (not x3475) (not x3454) x3477)
+(or (not x3477) x3475)
+(or (not x3477) x3454)
+(or x3413 x3412 x3411 (not x3410) x71 (not x70) x3406)
+(or (not x3406) (not x3413))
+(or (not x3406) (not x3412))
+(or (not x3406) (not x3411))
+(or (not x3406) x3410)
+(or (not x3406) (not x71))
+(or (not x3406) x70)
+(or x3422 (not x3400))
+(or x3422 (not x3401))
+(or x3422 (not x3402))
+(or x3422 (not x3403))
+(or x3422 (not x3404))
+(or x3422 (not x3405))
+(or x3422 (not x3229))
+(or x3422 (not x3406))
+(or x3422 (not x3413))
+(or x3422 (not x3412))
+(or x3422 (not x3411))
+(or x3422 x3410)
+(or x3422 (not x71))
+(or x3422 (not x70))
+(or x3400 x3401 x3402 x3403 x3404 x3405 x3229 x3406 x3413 x3412 x3411 (not x3410) x71 x70 (not x3422))
+(or x3478 (not x3400))
+(or x3478 (not x3401))
+(or x3478 (not x3402))
+(or x3478 (not x3403))
+(or x3478 (not x3404))
+(or x3478 (not x3405))
+(or x3478 (not x3229))
+(or x3478 (not x3406))
+(or x3478 (not x3413))
+(or x3478 (not x3412))
+(or x3478 (not x3411))
+(or x3478 x3410)
+(or x3478 (not x71))
+(or x3478 (not x70))
+(or x3478 x3428)
+(or x3478 x3429)
+(or x3478 (not x3477))
+(or x3400 x3401 x3402 x3403 x3404 x3405 x3229 x3406 x3413 x3412 x3411 (not x3410) x71 x70 (not x3428) (not x3429) x3477 (not x3478))
+(or x3421 (not x3400))
+(or x3421 (not x3401))
+(or x3421 (not x3402))
+(or x3421 (not x3403))
+(or x3421 (not x3404))
+(or x3421 (not x3405))
+(or x3421 (not x3229))
+(or x3421 (not x3413))
+(or x3421 (not x3412))
+(or x3421 (not x3411))
+(or x3421 x3410)
+(or x3421 (not x71))
+(or x3421 x70)
+(or x3400 x3401 x3402 x3403 x3404 x3405 x3229 x3413 x3412 x3411 (not x3410) x71 (not x70) (not x3421))
+(or x3479 x3434)
+(or x3479 (not x3435))
+(or (not x3434) x3435 (not x3479))
+(or (not x3479) (not x3434) x3480)
+(or (not x3480) x3479)
+(or (not x3480) x3434)
+(or x3420 (not x3400))
+(or x3420 (not x3401))
+(or x3420 (not x3402))
+(or x3420 (not x3403))
+(or x3420 (not x3404))
+(or x3420 (not x3405))
+(or x3420 (not x3413))
+(or x3420 (not x3412))
+(or x3420 x3411)
+(or x3420 x3410)
+(or x3400 x3401 x3402 x3403 x3404 x3405 x3413 x3412 (not x3411) (not x3410) (not x3420))
+(or x3481 (not x3400))
+(or x3481 (not x3401))
+(or x3481 (not x3402))
+(or x3481 (not x3403))
+(or x3481 (not x3404))
+(or x3481 (not x3405))
+(or x3481 (not x3413))
+(or x3481 (not x3412))
+(or x3481 x3411)
+(or x3481 x3410)
+(or x3481 x3433)
+(or x3481 (not x3480))
+(or x3400 x3401 x3402 x3403 x3404 x3405 x3413 x3412 (not x3411) (not x3410) (not x3433) x3480 (not x3481))
+(or x3413 x3412 (not x3411) x3410 (not x3482) x3404)
+(or (not x3404) (not x3413))
+(or (not x3404) (not x3412))
+(or (not x3404) x3411)
+(or (not x3404) (not x3410))
+(or (not x3404) x3482)
+(or x3419 (not x3400))
+(or x3419 (not x3401))
+(or x3419 (not x3402))
+(or x3419 (not x3403))
+(or x3419 (not x3404))
+(or x3419 (not x3413))
+(or x3419 (not x3412))
+(or x3419 x3411)
+(or x3419 (not x3410))
+(or x3400 x3401 x3402 x3403 x3404 x3413 x3412 (not x3411) x3410 (not x3419))
+(or x3483 x3438)
+(or x3483 x3439)
+(or x3483 x3464)
+(or x3483 x3484)
+(or (not x3438) (not x3439) (not x3464) (not x3484) (not x3483))
+(or (not x3483) (not x3438) x3485)
+(or (not x3485) x3483)
+(or (not x3485) x3438)
+(or x3413 x3412 (not x3411) x3410 (not x70) (not x71) x3403)
+(or (not x3403) (not x3413))
+(or (not x3403) (not x3412))
+(or (not x3403) x3411)
+(or (not x3403) (not x3410))
+(or (not x3403) x70)
+(or (not x3403) x71)
+(or x3418 (not x3400))
+(or x3418 (not x3401))
+(or x3418 (not x3402))
+(or x3418 (not x3403))
+(or x3418 (not x3413))
+(or x3418 (not x3412))
+(or x3418 x3411)
+(or x3418 (not x3410))
+(or x3418 (not x3437))
+(or x3400 x3401 x3402 x3403 x3413 x3412 (not x3411) x3410 x3437 (not x3418))
+(or x3486 (not x3400))
+(or x3486 (not x3401))
+(or x3486 (not x3402))
+(or x3486 (not x3403))
+(or x3486 (not x3413))
+(or x3486 (not x3412))
+(or x3486 x3411)
+(or x3486 (not x3410))
+(or x3486 (not x3437))
+(or x3486 (not x3485))
+(or x3400 x3401 x3402 x3403 x3413 x3412 (not x3411) x3410 x3437 x3485 (not x3486))
+(or x3417 (not x3400))
+(or x3417 (not x3401))
+(or x3417 (not x3402))
+(or x3417 (not x3413))
+(or x3417 (not x3412))
+(or x3417 x3411)
+(or x3417 (not x3410))
+(or x3417 x70)
+(or x3417 x71)
+(or x3400 x3401 x3402 x3413 x3412 (not x3411) x3410 (not x70) (not x71) (not x3417))
+(or x3413 x3412 x3411 x3410 x70 (not x3006) (not x3005) (not x3482) (not x3385) (not x3386) x3401)
+(or (not x3401) (not x3413))
+(or (not x3401) (not x3412))
+(or (not x3401) (not x3411))
+(or (not x3401) (not x3410))
+(or (not x3401) (not x70))
+(or (not x3401) x3006)
+(or (not x3401) x3005)
+(or (not x3401) x3482)
+(or (not x3401) x3385)
+(or (not x3401) x3386)
+(or x3416 (not x3400))
+(or x3416 (not x3401))
+(or x3416 (not x3413))
+(or x3416 (not x3412))
+(or x3416 (not x3411))
+(or x3416 (not x3410))
+(or x3416 (not x70))
+(or x3416 x3006)
+(or x3416 x3005)
+(or x3400 x3401 x3413 x3412 x3411 x3410 x70 (not x3006) (not x3005) (not x3416))
+(or (not x3176) (not x3218) x3337)
+(or (not x3337) x3176)
+(or (not x3337) x3218)
+(or (not x3113) (not x3114) (not x3223) x3336)
+(or (not x3336) x3113)
+(or (not x3336) x3114)
+(or (not x3336) x3223)
+(or x3388 (not x3336))
+(or x3388 (not x3337))
+(or x3336 x3337 (not x3388))
+(or (not x3280) (not x3279) x3278)
+(or (not x3278) x3280)
+(or (not x3278) x3279)
+(or (not x3280) x3279 x3277)
+(or (not x3277) x3280)
+(or (not x3277) (not x3279))
+(or x3280 (not x3279) x3276)
+(or (not x3276) (not x3280))
+(or (not x3276) x3279)
+(or (not x69) x70 x2990)
+(or (not x2990) x69)
+(or (not x2990) (not x70))
+(or x3280 x3279 (not x69) x70 x3487)
+(or (not x3487) (not x3280))
+(or (not x3487) (not x3279))
+(or (not x3487) x69)
+(or (not x3487) (not x70))
+(or x3482 (not x3487))
+(or x3482 (not x3276))
+(or x3482 (not x3277))
+(or x3482 (not x3278))
+(or x3487 x3276 x3277 x3278 (not x3482))
+(or x3413 x3412 x3411 x3410 x70 (not x3006) (not x3005) x3402)
+(or (not x3402) (not x3413))
+(or (not x3402) (not x3412))
+(or (not x3402) (not x3411))
+(or (not x3402) (not x3410))
+(or (not x3402) (not x70))
+(or (not x3402) x3006)
+(or (not x3402) x3005)
+(or x3413 x3412 x3411 x3410 x70 (not x3006) (not x3005) (not x3482) (not x3388) x3400)
+(or (not x3400) (not x3413))
+(or (not x3400) (not x3412))
+(or (not x3400) (not x3411))
+(or (not x3400) (not x3410))
+(or (not x3400) (not x70))
+(or (not x3400) x3006)
+(or (not x3400) x3005)
+(or (not x3400) x3482)
+(or (not x3400) x3388)
+(or x3415 (not x3400))
+(or x3415 (not x3413))
+(or x3415 (not x3412))
+(or x3415 (not x3411))
+(or x3415 (not x3410))
+(or x3415 (not x70))
+(or x3415 x3006)
+(or x3415 x3005)
+(or x3415 (not x3437))
+(or x3415 (not x3336))
+(or x3415 (not x3337))
+(or x3400 x3413 x3412 x3411 x3410 x70 (not x3006) (not x3005) x3437 x3336 x3337 (not x3415))
+(or x3488 (not x3400))
+(or x3488 (not x3413))
+(or x3488 (not x3412))
+(or x3488 (not x3411))
+(or x3488 (not x3410))
+(or x3488 (not x70))
+(or x3488 x3006)
+(or x3488 x3005)
+(or x3488 (not x3437))
+(or x3488 (not x3336))
+(or x3488 (not x3337))
+(or x3488 x3441)
+(or x3488 x3489)
+(or x3400 x3413 x3412 x3411 x3410 x70 (not x3006) (not x3005) x3437 x3336 x3337 (not x3441) (not x3489) (not x3488))
+(or x3490 x3444)
+(or x3490 x3445)
+(or (not x3444) (not x3445) (not x3490))
+(or (not x3490) (not x3444) x3491)
+(or (not x3491) x3490)
+(or (not x3491) x3444)
+(or x3126 (not x3112))
+(or x3126 (not x3056))
+(or x3112 x3056 (not x3126))
+(or x3114 (not x3155))
+(or x3114 x3136)
+(or x3114 (not x3137))
+(or x3114 (not x3138))
+(or x3114 (not x3139))
+(or x3114 (not x3141))
+(or x3114 (not x3088))
+(or x3114 (not x3142))
+(or x3114 (not x3143))
+(or x3114 (not x3049))
+(or x3114 (not x3144))
+(or x3114 (not x3112))
+(or x3114 (not x3056))
+(or x3155 (not x3136) x3137 x3138 x3139 x3141 x3088 x3142 x3143 x3049 x3144 x3112 x3056 (not x3114))
+(or x3239 (not x3136))
+(or x3239 (not x3137))
+(or x3136 x3137 (not x3239))
+(or x3237 (not x3136))
+(or x3237 (not x3137))
+(or x3237 (not x3138))
+(or x3237 (not x3139))
+(or x3136 x3137 x3138 x3139 (not x3237))
+(or x3249 (not x3142))
+(or x3249 (not x3143))
+(or x3142 x3143 (not x3249))
+(or x3245 (not x3112))
+(or x3245 (not x3142))
+(or x3245 (not x3143))
+(or x3112 x3142 x3143 (not x3245))
+(or x3250 (not x3056))
+(or x3250 (not x3112))
+(or x3250 (not x3142))
+(or x3250 (not x3143))
+(or x3056 x3112 x3142 x3143 (not x3250))
+(or x3244 (not x3141))
+(or x3244 (not x3056))
+(or x3244 (not x3112))
+(or x3244 (not x3142))
+(or x3244 (not x3143))
+(or x3141 x3056 x3112 x3142 x3143 (not x3244))
+(or x3113 (not x3141))
+(or x3113 (not x3056))
+(or x3113 (not x3112))
+(or x3113 (not x3142))
+(or x3113 (not x3143))
+(or x3113 (not x3155))
+(or x3113 (not x3049))
+(or x3113 x3144)
+(or x3113 (not x3088))
+(or x3113 (not x3136))
+(or x3113 (not x3137))
+(or x3113 (not x3138))
+(or x3113 (not x3139))
+(or x3141 x3056 x3112 x3142 x3143 x3155 x3049 (not x3144) x3088 x3136 x3137 x3138 x3139 (not x3113))
+(or (not x3113) (not x3114) x3492)
+(or (not x3492) x3113)
+(or (not x3492) x3114)
+(or x3386 (not x3492))
+(or x3386 x3218)
+(or x3492 (not x3218) (not x3386))
+(or x3112 x3056 x3121)
+(or (not x3121) (not x3112))
+(or (not x3121) (not x3056))
+(or x3155 (not x3136) x3137 x3138 x3139 x3141 x3088 x3142 x3143 x3049 x3144 x3112 x3056 x3105)
+(or (not x3105) (not x3155))
+(or (not x3105) x3136)
+(or (not x3105) (not x3137))
+(or (not x3105) (not x3138))
+(or (not x3105) (not x3139))
+(or (not x3105) (not x3141))
+(or (not x3105) (not x3088))
+(or (not x3105) (not x3142))
+(or (not x3105) (not x3143))
+(or (not x3105) (not x3049))
+(or (not x3105) (not x3144))
+(or (not x3105) (not x3112))
+(or (not x3105) (not x3056))
+(or x3136 x3137 x3181)
+(or (not x3181) (not x3136))
+(or (not x3181) (not x3137))
+(or x3136 x3137 x3138 x3139 x3178)
+(or (not x3178) (not x3136))
+(or (not x3178) (not x3137))
+(or (not x3178) (not x3138))
+(or (not x3178) (not x3139))
+(or x3142 x3143 x3192)
+(or (not x3192) (not x3142))
+(or (not x3192) (not x3143))
+(or x3112 x3142 x3143 x3186)
+(or (not x3186) (not x3112))
+(or (not x3186) (not x3142))
+(or (not x3186) (not x3143))
+(or x3056 x3112 x3142 x3143 x3193)
+(or (not x3193) (not x3056))
+(or (not x3193) (not x3112))
+(or (not x3193) (not x3142))
+(or (not x3193) (not x3143))
+(or x3141 x3056 x3112 x3142 x3143 x3185)
+(or (not x3185) (not x3141))
+(or (not x3185) (not x3056))
+(or (not x3185) (not x3112))
+(or (not x3185) (not x3142))
+(or (not x3185) (not x3143))
+(or x3141 x3056 x3112 x3142 x3143 x3155 x3049 (not x3144) x3088 x3136 x3137 x3138 x3139 x3104)
+(or (not x3104) (not x3141))
+(or (not x3104) (not x3056))
+(or (not x3104) (not x3112))
+(or (not x3104) (not x3142))
+(or (not x3104) (not x3143))
+(or (not x3104) (not x3155))
+(or (not x3104) (not x3049))
+(or (not x3104) x3144)
+(or (not x3104) (not x3088))
+(or (not x3104) (not x3136))
+(or (not x3104) (not x3137))
+(or (not x3104) (not x3138))
+(or (not x3104) (not x3139))
+(or x3176 (not x3104))
+(or x3176 (not x3105))
+(or x3104 x3105 (not x3176))
+(or x3385 (not x3104))
+(or x3385 (not x3105))
+(or x3385 x3223)
+(or x3104 x3105 (not x3223) (not x3385))
+(or (not x3385) (not x3386) x3348)
+(or (not x3348) x3385)
+(or (not x3348) x3386)
+(or x3493 x3280)
+(or x3493 x3279)
+(or (not x3280) (not x3279) (not x3493))
+(or x3494 x3280)
+(or x3494 (not x3279))
+(or (not x3280) x3279 (not x3494))
+(or x3495 (not x3280))
+(or x3495 x3279)
+(or x3280 (not x3279) (not x3495))
+(or x3030 x69)
+(or x3030 (not x70))
+(or (not x69) x70 (not x3030))
+(or x3496 (not x3280))
+(or x3496 (not x3279))
+(or x3496 x69)
+(or x3496 (not x70))
+(or x3280 x3279 (not x69) x70 (not x3496))
+(or (not x3496) (not x3495) (not x3494) (not x3493) x3437)
+(or (not x3437) x3496)
+(or (not x3437) x3495)
+(or (not x3437) x3494)
+(or (not x3437) x3493)
+(or x3414 (not x3413))
+(or x3414 (not x3412))
+(or x3414 (not x3411))
+(or x3414 (not x3410))
+(or x3414 (not x70))
+(or x3414 x3006)
+(or x3414 x3005)
+(or x3414 (not x3437))
+(or x3414 (not x3348))
+(or x3413 x3412 x3411 x3410 x70 (not x3006) (not x3005) x3437 x3348 (not x3414))
+(or x3497 (not x3413))
+(or x3497 (not x3412))
+(or x3497 (not x3411))
+(or x3497 (not x3410))
+(or x3497 (not x70))
+(or x3497 x3006)
+(or x3497 x3005)
+(or x3497 (not x3437))
+(or x3497 (not x3348))
+(or x3497 x3448)
+(or x3497 x3443)
+(or x3497 (not x3491))
+(or x3413 x3412 x3411 x3410 x70 (not x3006) (not x3005) x3437 x3348 (not x3448) (not x3443) x3491 (not x3497))
+(or (not x3497) (not x3488) (not x3416) (not x3417) (not x3486) (not x3419) (not x3481) (not x3421) (not x3478) (not x3424) (not x3473) x3498)
+(or (not x3498) x3497)
+(or (not x3498) x3488)
+(or (not x3498) x3416)
+(or (not x3498) x3417)
+(or (not x3498) x3486)
+(or (not x3498) x3419)
+(or (not x3498) x3481)
+(or (not x3498) x3421)
+(or (not x3498) x3478)
+(or (not x3498) x3424)
+(or (not x3498) x3473)
+(or x3499 (not x3500))
+(or x3499 (not x3070))
+(or x3499 (not x3501))
+(or x3499 (not x3076))
+(or x3500 x3070 x3501 x3076 (not x3499))
+(or x3502 (not x3500))
+(or x3502 (not x3070))
+(or x3502 x3076)
+(or x3502 (not x3075))
+(or x3502 (not x3074))
+(or x3502 x3073)
+(or x3502 x3049)
+(or x3502 x3503)
+(or x3500 x3070 (not x3076) x3075 x3074 (not x3073) (not x3049) (not x3503) (not x3502))
+(or x3504 (not x3076))
+(or x3504 x3075)
+(or x3504 x3074)
+(or x3504 x3073)
+(or x3504 x3006)
+(or x3504 x3005)
+(or x3504 x3505)
+(or x3504 x3506)
+(or x3076 (not x3075) (not x3074) (not x3073) (not x3006) (not x3005) (not x3505) (not x3506) (not x3504))
+(or (not x3504) (not x3502) (not x3499) x3507)
+(or (not x3507) x3504)
+(or (not x3507) x3502)
+(or (not x3507) x3499)
+(or x3508 (not x3500))
+(or x3508 (not x3070))
+(or x3508 (not x3501))
+(or x3508 (not x3075))
+(or x3500 x3070 x3501 x3075 (not x3508))
+(or (not x3509) (not x3510) (not x3511) (not x3508) x3512)
+(or (not x3512) x3509)
+(or (not x3512) x3510)
+(or (not x3512) x3511)
+(or (not x3512) x3508)
+(or x3513 (not x3500))
+(or x3513 (not x3070))
+(or x3513 (not x3501))
+(or x3513 (not x3074))
+(or x3500 x3070 x3501 x3074 (not x3513))
+(or x3086 x3076)
+(or x3086 (not x3075))
+(or x3086 (not x3074))
+(or x3086 (not x3073))
+(or (not x3076) x3075 x3074 x3073 (not x3086))
+(or x3510 (not x3500))
+(or x3510 x3076)
+(or x3510 (not x3075))
+(or x3510 (not x3074))
+(or x3510 (not x3073))
+(or x3500 (not x3076) x3075 x3074 x3073 (not x3510))
+(or (not x3509) (not x3510) (not x3511) (not x3513) x3514)
+(or (not x3514) x3509)
+(or (not x3514) x3510)
+(or (not x3514) x3511)
+(or (not x3514) x3513)
+(or (not x3076) x3075 x3074 (not x3073) (not x3049) x3501)
+(or (not x3501) x3076)
+(or (not x3501) (not x3075))
+(or (not x3501) (not x3074))
+(or (not x3501) x3073)
+(or (not x3501) x3049)
+(or x3515 (not x3500))
+(or x3515 (not x3070))
+(or x3515 (not x3501))
+(or x3515 (not x3073))
+(or x3500 x3070 x3501 x3073 (not x3515))
+(or x3076 (not x3075) (not x3074) (not x3073) (not x3006) (not x3005) (not x3505) x3500)
+(or (not x3500) (not x3076))
+(or (not x3500) x3075)
+(or (not x3500) x3074)
+(or (not x3500) x3073)
+(or (not x3500) x3006)
+(or (not x3500) x3005)
+(or (not x3500) x3505)
+(or x3511 (not x3500))
+(or x3511 (not x3070))
+(or x3511 x3076)
+(or x3511 (not x3075))
+(or x3511 (not x3074))
+(or x3511 x3073)
+(or x3511 x3049)
+(or x3511 (not x3503))
+(or x3500 x3070 (not x3076) x3075 x3074 (not x3073) (not x3049) x3503 (not x3511))
+(or x3509 (not x3076))
+(or x3509 x3075)
+(or x3509 x3074)
+(or x3509 x3073)
+(or x3509 x3006)
+(or x3509 x3005)
+(or x3509 x3505)
+(or x3509 (not x3506))
+(or x3076 (not x3075) (not x3074) (not x3073) (not x3006) (not x3005) (not x3505) x3506 (not x3509))
+(or (not x3509) (not x3511) (not x3515) x3516)
+(or (not x3516) x3509)
+(or (not x3516) x3511)
+(or (not x3516) x3515)
+(or (not x3505) (not x3517) (not x3049) x3518)
+(or (not x3518) x3505)
+(or (not x3518) x3517)
+(or (not x3518) x3049)
+(or x3519 x3505)
+(or x3519 (not x3518))
+(or x3519 (not x3505))
+(or (not x3505) x3518 x3505 (not x3519))
+(or x3520 x3505)
+(or x3520 x3505)
+(or x3520 x3517)
+(or x3520 x3049)
+(or x3520 x3521)
+(or (not x3505) (not x3505) (not x3517) (not x3049) (not x3521) (not x3520))
+(or x3522 x3523)
+(or x3522 x3524)
+(or (not x3523) (not x3524) (not x3522))
+(or (not x3522) (not x3523) x3525)
+(or (not x3525) x3522)
+(or (not x3525) x3523)
+(or x3526 (not x3505))
+(or x3526 x3527)
+(or x3526 (not x3525))
+(or x3505 (not x3527) x3525 (not x3526))
+(or (not x3526) (not x3520) (not x3519) x3528)
+(or (not x3528) x3526)
+(or (not x3528) x3520)
+(or (not x3528) x3519)
+(or x3157 (not x3209))
+(or x3157 (not x3210))
+(or x3157 (not x3211))
+(or x3157 (not x3212))
+(or x3157 (not x3213))
+(or x3157 (not x3214))
+(or x3209 x3210 x3211 x3212 x3213 x3214 (not x3157))
+(or x3161 (not x3308))
+(or x3161 x3307)
+(or x3161 x3306)
+(or x3161 (not x3305))
+(or x3308 (not x3307) (not x3306) x3305 (not x3161))
+(or x3197 (not x3308))
+(or x3197 x3307)
+(or x3197 (not x3306))
+(or x3197 x3305)
+(or x3308 (not x3307) x3306 (not x3305) (not x3197))
+(or x3160 (not x3308))
+(or x3160 (not x3307))
+(or x3160 (not x3306))
+(or x3160 x3305)
+(or x3308 x3307 x3306 (not x3305) (not x3160))
+(or x3529 (not x3308))
+(or x3529 (not x3307))
+(or x3529 x3306)
+(or x3529 x3305)
+(or x3308 x3307 (not x3306) (not x3305) (not x3529))
+(or x3159 (not x3413))
+(or x3159 x3412)
+(or x3159 x3411)
+(or x3159 (not x3410))
+(or x3413 (not x3412) (not x3411) x3410 (not x3159))
+(or x3195 (not x3413))
+(or x3195 x3412)
+(or x3195 (not x3411))
+(or x3195 x3410)
+(or x3413 (not x3412) x3411 (not x3410) (not x3195))
+(or x3158 (not x3413))
+(or x3158 (not x3412))
+(or x3158 (not x3411))
+(or x3158 x3410)
+(or x3413 x3412 x3411 (not x3410) (not x3158))
+(or x3530 (not x3413))
+(or x3530 (not x3412))
+(or x3530 x3411)
+(or x3530 x3410)
+(or x3413 x3412 (not x3411) (not x3410) (not x3530))
+(or (not x3530) (not x3158) (not x3195) (not x3159) (not x3529) (not x3160) (not x3197) (not x3161) x3531)
+(or (not x3531) x3530)
+(or (not x3531) x3158)
+(or (not x3531) x3195)
+(or (not x3531) x3159)
+(or (not x3531) x3529)
+(or (not x3531) x3160)
+(or (not x3531) x3197)
+(or (not x3531) x3161)
+(or (not x3530) (not x3158) (not x3195) (not x3159) (not x3529) (not x3160) (not x3197) (not x3161) x3100 x3101 x3289)
+(or (not x3289) x3530)
+(or (not x3289) x3158)
+(or (not x3289) x3195)
+(or (not x3289) x3159)
+(or (not x3289) x3529)
+(or (not x3289) x3160)
+(or (not x3289) x3197)
+(or (not x3289) x3161)
+(or (not x3289) (not x3100))
+(or (not x3289) (not x3101))
+(or x3147 (not x3289))
+(or x3147 (not x3230))
+(or x3147 (not x3210))
+(or x3147 (not x3232))
+(or x3147 (not x3213))
+(or x3289 x3230 x3210 x3232 x3213 (not x3147))
+(or x3532 (not x3289))
+(or x3532 (not x3230))
+(or x3532 (not x3210))
+(or x3532 (not x3232))
+(or x3532 (not x3213))
+(or x3532 (not x3209))
+(or x3532 (not x3210))
+(or x3532 (not x3211))
+(or x3532 (not x3212))
+(or x3532 (not x3213))
+(or x3532 (not x3214))
+(or x3532 x3112)
+(or x3289 x3230 x3210 x3232 x3213 x3209 x3210 x3211 x3212 x3213 x3214 (not x3112) (not x3532))
+(or (not x3532) (not x3288) x3533)
+(or (not x3533) x3532)
+(or (not x3533) x3288)
+(or (not x3534) x3076)
+(or (not x3534) (not x3075))
+(or (not x3534) (not x3074))
+(or (not x3534) x3073)
+(or (not x3076) x3075 x3074 x3073 x3070)
+(or (not x3070) x3076)
+(or (not x3070) (not x3075))
+(or (not x3070) (not x3074))
+(or (not x3070) (not x3073))
+(or (not x3535) (not x3076))
+(or (not x3535) x3075)
+(or (not x3535) x3074)
+(or (not x3535) x3073)
+(or x3536 (not x3535))
+(or x3536 (not x3070))
+(or x3535 x3070 (not x3536))
+(or x3308 (not x3307) (not x3306) x3305 x3213)
+(or (not x3213) (not x3308))
+(or (not x3213) x3307)
+(or (not x3213) x3306)
+(or (not x3213) (not x3305))
+(or x3308 (not x3307) x3306 (not x3305) x3214)
+(or (not x3214) (not x3308))
+(or (not x3214) x3307)
+(or (not x3214) (not x3306))
+(or (not x3214) x3305)
+(or x3308 (not x3307) x3306 x3305 x3212)
+(or (not x3212) (not x3308))
+(or (not x3212) x3307)
+(or (not x3212) (not x3306))
+(or (not x3212) (not x3305))
+(or x3308 x3307 (not x3306) (not x3305) x3231)
+(or (not x3231) (not x3308))
+(or (not x3231) (not x3307))
+(or (not x3231) x3306)
+(or (not x3231) x3305)
+(or x3308 x3307 (not x3306) x3305 x3300)
+(or (not x3300) (not x3308))
+(or (not x3300) (not x3307))
+(or (not x3300) x3306)
+(or (not x3300) (not x3305))
+(or x3308 x3307 x3306 (not x3305) x3232)
+(or (not x3232) (not x3308))
+(or (not x3232) (not x3307))
+(or (not x3232) (not x3306))
+(or (not x3232) x3305)
+(or (not x3537) (not x3308))
+(or (not x3537) (not x3307))
+(or (not x3537) (not x3306))
+(or (not x3537) (not x3305))
+(or x3538 (not x3537))
+(or x3538 (not x3232))
+(or x3538 (not x3300))
+(or x3538 (not x3231))
+(or x3538 (not x3212))
+(or x3538 (not x3214))
+(or x3537 x3232 x3300 x3231 x3212 x3214 (not x3538))
+(or x3413 (not x3412) (not x3411) x3410 x3210)
+(or (not x3210) (not x3413))
+(or (not x3210) x3412)
+(or (not x3210) x3411)
+(or (not x3210) (not x3410))
+(or x3413 (not x3412) x3411 (not x3410) x3211)
+(or (not x3211) (not x3413))
+(or (not x3211) x3412)
+(or (not x3211) (not x3411))
+(or (not x3211) x3410)
+(or x3413 (not x3412) x3411 x3410 x3209)
+(or (not x3209) (not x3413))
+(or (not x3209) x3412)
+(or (not x3209) (not x3411))
+(or (not x3209) (not x3410))
+(or x3413 x3412 (not x3411) (not x3410) x3229)
+(or (not x3229) (not x3413))
+(or (not x3229) (not x3412))
+(or (not x3229) x3411)
+(or (not x3229) x3410)
+(or x3413 x3412 (not x3411) x3410 x3405)
+(or (not x3405) (not x3413))
+(or (not x3405) (not x3412))
+(or (not x3405) x3411)
+(or (not x3405) (not x3410))
+(or x3413 x3412 x3411 (not x3410) x3230)
+(or (not x3230) (not x3413))
+(or (not x3230) (not x3412))
+(or (not x3230) (not x3411))
+(or (not x3230) x3410)
+(or (not x3539) (not x3413))
+(or (not x3539) (not x3412))
+(or (not x3539) (not x3411))
+(or (not x3539) (not x3410))
+(or x3540 (not x3539))
+(or x3540 (not x3230))
+(or x3540 (not x3405))
+(or x3540 (not x3229))
+(or x3540 (not x3209))
+(or x3540 (not x3211))
+(or x3539 x3230 x3405 x3229 x3209 x3211 (not x3540))
+(or x3541 (not x3542))
+(or x3541 (not x3543))
+(or x3541 (not x3544))
+(or x3541 (not x3545))
+(or x3541 (not x3546))
+(or x3541 (not x3547))
+(or x3541 (not x77))
+(or x3541 x76)
+(or x3541 x75)
+(or x3541 x74)
+(or x3541 (not x3548))
+(or x3541 x3549)
+(or x3542 x3543 x3544 x3545 x3546 x3547 x77 (not x76) (not x75) (not x74) x3548 (not x3549) (not x3541))
+(or x3550 (not x3542))
+(or x3550 (not x3543))
+(or x3550 (not x3544))
+(or x3550 (not x3545))
+(or x3550 (not x3546))
+(or x3550 (not x77))
+(or x3550 x76)
+(or x3550 x75)
+(or x3550 (not x74))
+(or x3550 x78)
+(or x3550 (not x79))
+(or x3550 x3551)
+(or x3542 x3543 x3544 x3545 x3546 x77 (not x76) (not x75) x74 (not x78) x79 (not x3551) (not x3550))
+(or x3552 (not x77))
+(or x3552 (not x76))
+(or x3552 (not x75))
+(or x3552 x74)
+(or x3552 (not x3553))
+(or x77 x76 x75 (not x74) x3553 (not x3552))
+(or (not x3552) (not x3554) (not x3555) (not x3556) (not x3557) (not x3550) (not x3541) (not x3558) x3559)
+(or (not x3559) x3552)
+(or (not x3559) x3554)
+(or (not x3559) x3555)
+(or (not x3559) x3556)
+(or (not x3559) x3557)
+(or (not x3559) x3550)
+(or (not x3559) x3541)
+(or (not x3559) x3558)
+(or x3560 (not x3542))
+(or x3560 (not x3543))
+(or x3560 (not x77))
+(or x3560 (not x76))
+(or x3560 x75)
+(or x3560 x74)
+(or x3560 (not x3548))
+(or x3560 x3561)
+(or x3542 x3543 x77 x76 (not x75) (not x74) x3548 (not x3561) (not x3560))
+(or x3562 (not x3542))
+(or x3562 (not x77))
+(or x3562 (not x76))
+(or x3562 x75)
+(or x3562 (not x74))
+(or x3562 x3564)
+(or x3562 x3563)
+(or x3562 (not x3548))
+(or x3562 x3565)
+(or x3542 x77 x76 (not x75) x74 (not x3564) (not x3563) x3548 (not x3565) (not x3562))
+(or x3566 (not x3567) x3553)
+(or (not x3553) (not x3566))
+(or (not x3553) x3567)
+(or x3566 (not x3567) (not x3568) x3569)
+(or (not x3569) (not x3566))
+(or (not x3569) x3567)
+(or (not x3569) x3568)
+(or x3570 (not x77))
+(or x3570 (not x76))
+(or x3570 (not x75))
+(or x3570 x74)
+(or x3570 (not x3569))
+(or x77 x76 x75 (not x74) x3569 (not x3570))
+(or (not x3570) (not x3562) (not x3560) (not x3571) (not x3572) (not x3573) (not x3574) (not x3558) x3575)
+(or (not x3575) x3570)
+(or (not x3575) x3562)
+(or (not x3575) x3560)
+(or (not x3575) x3571)
+(or (not x3575) x3572)
+(or (not x3575) x3573)
+(or (not x3575) x3574)
+(or (not x3575) x3558)
+(or x3576 (not x3542))
+(or x3576 (not x3543))
+(or x3576 (not x3544))
+(or x3576 (not x3545))
+(or x3576 (not x77))
+(or x3576 x76)
+(or x3576 (not x75))
+(or x3576 x74)
+(or x3576 (not x3548))
+(or x3576 x3577)
+(or x3542 x3543 x3544 x3545 x77 (not x76) x75 (not x74) x3548 (not x3577) (not x3576))
+(or x3578 (not x3542))
+(or x3578 (not x3543))
+(or x3578 (not x3544))
+(or x3578 (not x77))
+(or x3578 x76)
+(or x3578 (not x75))
+(or x3578 (not x74))
+(or x3578 x78)
+(or x3578 (not x79))
+(or x3578 x3579)
+(or x3542 x3543 x3544 x77 (not x76) x75 x74 (not x78) x79 (not x3579) (not x3578))
+(or x3568 (not x3566))
+(or x3568 (not x3580))
+(or x3566 x3580 (not x3568))
+(or x3566 (not x3568) x3581)
+(or (not x3581) (not x3566))
+(or (not x3581) x3568)
+(or x3582 (not x77))
+(or x3582 (not x76))
+(or x3582 (not x75))
+(or x3582 x74)
+(or x3582 (not x3581))
+(or x77 x76 x75 (not x74) x3581 (not x3582))
+(or (not x3582) (not x3583) (not x3584) (not x3578) (not x3576) (not x3571) (not x3572) (not x3585) (not x3586) (not x3558) x3587)
+(or (not x3587) x3582)
+(or (not x3587) x3583)
+(or (not x3587) x3584)
+(or (not x3587) x3578)
+(or (not x3587) x3576)
+(or (not x3587) x3571)
+(or (not x3587) x3572)
+(or (not x3587) x3585)
+(or (not x3587) x3586)
+(or (not x3587) x3558)
+(or (not x77) (not x76) x75 x74 (not x3588) x3589)
+(or (not x3589) x77)
+(or (not x3589) x76)
+(or (not x3589) (not x75))
+(or (not x3589) (not x74))
+(or (not x3589) x3588)
+(or x3558 (not x3542))
+(or x3558 (not x3543))
+(or x3558 (not x3544))
+(or x3558 (not x3545))
+(or x3558 (not x3546))
+(or x3558 (not x3547))
+(or x3558 (not x3590))
+(or x3558 (not x3591))
+(or x3558 (not x3592))
+(or x3558 (not x3593))
+(or x3558 (not x3589))
+(or x3542 x3543 x3544 x3545 x3546 x3547 x3590 x3591 x3592 x3593 x3589 (not x3558))
+(or (not x77) x76 (not x75) (not x74) (not x78) x79 x3593)
+(or (not x3593) x77)
+(or (not x3593) (not x76))
+(or (not x3593) x75)
+(or (not x3593) x74)
+(or (not x3593) x78)
+(or (not x3593) (not x79))
+(or x3586 (not x3542))
+(or x3586 (not x3543))
+(or x3586 (not x3544))
+(or x3586 (not x3545))
+(or x3586 (not x3546))
+(or x3586 (not x3547))
+(or x3586 (not x3590))
+(or x3586 (not x3591))
+(or x3586 (not x3592))
+(or x3586 (not x3593))
+(or x3586 x77)
+(or x3586 x76)
+(or x3586 (not x75))
+(or x3586 (not x74))
+(or x3586 (not x3548))
+(or x3542 x3543 x3544 x3545 x3546 x3547 x3590 x3591 x3592 x3593 (not x77) (not x76) x75 x74 x3548 (not x3586))
+(or x3594 (not x3542))
+(or x3594 (not x3543))
+(or x3594 (not x3544))
+(or x3594 (not x3545))
+(or x3594 (not x3546))
+(or x3594 (not x3547))
+(or x3594 (not x3590))
+(or x3594 (not x3591))
+(or x3594 (not x3592))
+(or x3594 (not x3593))
+(or x3594 x77)
+(or x3594 x76)
+(or x3594 (not x75))
+(or x3594 (not x74))
+(or x3594 (not x3548))
+(or x3594 x3595)
+(or x3542 x3543 x3544 x3545 x3546 x3547 x3590 x3591 x3592 x3593 (not x77) (not x76) x75 x74 x3548 (not x3595) (not x3594))
+(or (not x77) x76 (not x75) x74 (not x3588) x3592)
+(or (not x3592) x77)
+(or (not x3592) (not x76))
+(or (not x3592) x75)
+(or (not x3592) (not x74))
+(or (not x3592) x3588)
+(or x3585 (not x3542))
+(or x3585 (not x3543))
+(or x3585 (not x3544))
+(or x3585 (not x3545))
+(or x3585 (not x3546))
+(or x3585 (not x3547))
+(or x3585 (not x3590))
+(or x3585 (not x3591))
+(or x3585 (not x3592))
+(or x3585 x77)
+(or x3585 (not x76))
+(or x3585 x75)
+(or x3585 x74)
+(or x3585 x78)
+(or x3585 (not x79))
+(or x3542 x3543 x3544 x3545 x3546 x3547 x3590 x3591 x3592 (not x77) x76 (not x75) (not x74) (not x78) x79 (not x3585))
+(or x3596 (not x3542))
+(or x3596 (not x3543))
+(or x3596 (not x3544))
+(or x3596 (not x3545))
+(or x3596 (not x3546))
+(or x3596 (not x3547))
+(or x3596 (not x3590))
+(or x3596 (not x3591))
+(or x3596 (not x3592))
+(or x3596 x77)
+(or x3596 (not x76))
+(or x3596 x75)
+(or x3596 x74)
+(or x3596 x78)
+(or x3596 (not x79))
+(or x3596 x3597)
+(or x3542 x3543 x3544 x3545 x3546 x3547 x3590 x3591 x3592 (not x77) x76 (not x75) (not x74) (not x78) x79 (not x3597) (not x3596))
+(or (not x77) x76 x75 (not x74) (not x3564) (not x3563) (not x78) x79 x3591)
+(or (not x3591) x77)
+(or (not x3591) (not x76))
+(or (not x3591) (not x75))
+(or (not x3591) x74)
+(or (not x3591) x3564)
+(or (not x3591) x3563)
+(or (not x3591) x78)
+(or (not x3591) (not x79))
+(or x3574 (not x3542))
+(or x3574 (not x3543))
+(or x3574 (not x3544))
+(or x3574 (not x3545))
+(or x3574 (not x3546))
+(or x3574 (not x3547))
+(or x3574 (not x3590))
+(or x3574 (not x3591))
+(or x3574 x77)
+(or x3574 (not x76))
+(or x3574 x75)
+(or x3574 (not x74))
+(or x3574 (not x3548))
+(or x3542 x3543 x3544 x3545 x3546 x3547 x3590 x3591 (not x77) x76 (not x75) x74 x3548 (not x3574))
+(or x3598 (not x3542))
+(or x3598 (not x3543))
+(or x3598 (not x3544))
+(or x3598 (not x3545))
+(or x3598 (not x3546))
+(or x3598 (not x3547))
+(or x3598 (not x3590))
+(or x3598 (not x3591))
+(or x3598 x77)
+(or x3598 (not x76))
+(or x3598 x75)
+(or x3598 (not x74))
+(or x3598 (not x3548))
+(or x3598 x3599)
+(or x3542 x3543 x3544 x3545 x3546 x3547 x3590 x3591 (not x77) x76 (not x75) x74 x3548 (not x3599) (not x3598))
+(or x77 (not x76) (not x75) (not x74) (not x3588) x3590)
+(or (not x3590) (not x77))
+(or (not x3590) x76)
+(or (not x3590) x75)
+(or (not x3590) x74)
+(or (not x3590) x3588)
+(or x3573 (not x3542))
+(or x3573 (not x3543))
+(or x3573 (not x3544))
+(or x3573 (not x3545))
+(or x3573 (not x3546))
+(or x3573 (not x3547))
+(or x3573 (not x3590))
+(or x3573 x77)
+(or x3573 (not x76))
+(or x3573 (not x75))
+(or x3573 x74)
+(or x3573 x3564)
+(or x3573 x3563)
+(or x3573 x78)
+(or x3573 (not x79))
+(or x3542 x3543 x3544 x3545 x3546 x3547 x3590 (not x77) x76 x75 (not x74) (not x3564) (not x3563) (not x78) x79 (not x3573))
+(or x3600 (not x3542))
+(or x3600 (not x3543))
+(or x3600 (not x3544))
+(or x3600 (not x3545))
+(or x3600 (not x3546))
+(or x3600 (not x3547))
+(or x3600 (not x3590))
+(or x3600 x77)
+(or x3600 (not x76))
+(or x3600 (not x75))
+(or x3600 x74)
+(or x3600 x3564)
+(or x3600 x3563)
+(or x3600 x78)
+(or x3600 (not x79))
+(or x3600 x3601)
+(or x3542 x3543 x3544 x3545 x3546 x3547 x3590 (not x77) x76 x75 (not x74) (not x3564) (not x3563) (not x78) x79 (not x3601) (not x3600))
+(or x77 (not x76) (not x75) x74 (not x78) x79 x3547)
+(or (not x3547) (not x77))
+(or (not x3547) x76)
+(or (not x3547) x75)
+(or (not x3547) (not x74))
+(or (not x3547) x78)
+(or (not x3547) (not x79))
+(or x3572 (not x3542))
+(or x3572 (not x3543))
+(or x3572 (not x3544))
+(or x3572 (not x3545))
+(or x3572 (not x3546))
+(or x3572 (not x3547))
+(or x3572 (not x77))
+(or x3572 x76)
+(or x3572 x75)
+(or x3572 x74)
+(or x3572 (not x3548))
+(or x3572 (not x3549))
+(or x3542 x3543 x3544 x3545 x3546 x3547 x77 (not x76) (not x75) (not x74) x3548 x3549 (not x3572))
+(or x77 (not x76) x75 (not x74) (not x3588) x3546)
+(or (not x3546) (not x77))
+(or (not x3546) x76)
+(or (not x3546) (not x75))
+(or (not x3546) x74)
+(or (not x3546) x3588)
+(or x3571 (not x3542))
+(or x3571 (not x3543))
+(or x3571 (not x3544))
+(or x3571 (not x3545))
+(or x3571 (not x3546))
+(or x3571 (not x77))
+(or x3571 x76)
+(or x3571 x75)
+(or x3571 (not x74))
+(or x3571 x78)
+(or x3571 (not x79))
+(or x3571 (not x3551))
+(or x3542 x3543 x3544 x3545 x3546 x77 (not x76) (not x75) x74 (not x78) x79 x3551 (not x3571))
+(or x77 (not x76) x75 x74 (not x78) x79 x3545)
+(or (not x3545) (not x77))
+(or (not x3545) x76)
+(or (not x3545) (not x75))
+(or (not x3545) (not x74))
+(or (not x3545) x78)
+(or (not x3545) (not x79))
+(or x3557 (not x3542))
+(or x3557 (not x3543))
+(or x3557 (not x3544))
+(or x3557 (not x3545))
+(or x3557 (not x77))
+(or x3557 x76)
+(or x3557 (not x75))
+(or x3557 x74)
+(or x3557 (not x3548))
+(or x3542 x3543 x3544 x3545 x77 (not x76) x75 (not x74) x3548 (not x3557))
+(or x3602 (not x3542))
+(or x3602 (not x3543))
+(or x3602 (not x3544))
+(or x3602 (not x3545))
+(or x3602 (not x77))
+(or x3602 x76)
+(or x3602 (not x75))
+(or x3602 x74)
+(or x3602 (not x3548))
+(or x3602 (not x3577))
+(or x3542 x3543 x3544 x3545 x77 (not x76) x75 (not x74) x3548 x3577 (not x3602))
+(or x77 x76 (not x75) (not x74) (not x3588) x3544)
+(or (not x3544) (not x77))
+(or (not x3544) (not x76))
+(or (not x3544) x75)
+(or (not x3544) x74)
+(or (not x3544) x3588)
+(or x3556 (not x3542))
+(or x3556 (not x3543))
+(or x3556 (not x3544))
+(or x3556 (not x77))
+(or x3556 x76)
+(or x3556 (not x75))
+(or x3556 (not x74))
+(or x3556 x78)
+(or x3556 (not x79))
+(or x3542 x3543 x3544 x77 (not x76) x75 x74 (not x78) x79 (not x3556))
+(or x3603 (not x3542))
+(or x3603 (not x3543))
+(or x3603 (not x3544))
+(or x3603 (not x77))
+(or x3603 x76)
+(or x3603 (not x75))
+(or x3603 (not x74))
+(or x3603 x78)
+(or x3603 (not x79))
+(or x3603 (not x3579))
+(or x3542 x3543 x3544 x77 (not x76) x75 x74 (not x78) x79 x3579 (not x3603))
+(or x77 x76 (not x75) x74 (not x3564) (not x3563) (not x3588) x3543)
+(or (not x3543) (not x77))
+(or (not x3543) (not x76))
+(or (not x3543) x75)
+(or (not x3543) (not x74))
+(or (not x3543) x3564)
+(or (not x3543) x3563)
+(or (not x3543) x3588)
+(or x3555 (not x3542))
+(or x3555 (not x3543))
+(or x3555 (not x77))
+(or x3555 (not x76))
+(or x3555 x75)
+(or x3555 x74)
+(or x3555 (not x3548))
+(or x3542 x3543 x77 x76 (not x75) (not x74) x3548 (not x3555))
+(or x3584 (not x3542))
+(or x3584 (not x3543))
+(or x3584 (not x77))
+(or x3584 (not x76))
+(or x3584 x75)
+(or x3584 x74)
+(or x3584 (not x3548))
+(or x3584 (not x3561))
+(or x3542 x3543 x77 x76 (not x75) (not x74) x3548 x3561 (not x3584))
+(or x77 x76 x75 (not x74) x3542)
+(or (not x3542) (not x77))
+(or (not x3542) (not x76))
+(or (not x3542) (not x75))
+(or (not x3542) x74)
+(or x3554 (not x3542))
+(or x3554 (not x77))
+(or x3554 (not x76))
+(or x3554 x75)
+(or x3554 (not x74))
+(or x3554 x3564)
+(or x3554 x3563)
+(or x3554 (not x3548))
+(or x3542 x77 x76 (not x75) x74 (not x3564) (not x3563) x3548 (not x3554))
+(or x3583 (not x3542))
+(or x3583 (not x77))
+(or x3583 (not x76))
+(or x3583 x75)
+(or x3583 (not x74))
+(or x3583 x3564)
+(or x3583 x3563)
+(or x3583 (not x3548))
+(or x3583 (not x3565))
+(or x3542 x77 x76 (not x75) x74 (not x3564) (not x3563) x3548 x3565 (not x3583))
+(or x3567 (not x3566))
+(or x3567 x3580)
+(or x3566 (not x3580) (not x3567))
+(or x3604 (not x77))
+(or x3604 (not x76))
+(or x3604 (not x75))
+(or x3604 x74)
+(or x3604 (not x3566))
+(or x3604 x3580)
+(or x77 x76 x75 (not x74) x3566 (not x3580) (not x3604))
+(or (not x3604) (not x3583) (not x3584) (not x3603) (not x3602) (not x3571) (not x3572) (not x3600) (not x3598) (not x3596) (not x3594) (not x3558) x3605)
+(or (not x3605) x3604)
+(or (not x3605) x3583)
+(or (not x3605) x3584)
+(or (not x3605) x3603)
+(or (not x3605) x3602)
+(or (not x3605) x3571)
+(or (not x3605) x3572)
+(or (not x3605) x3600)
+(or (not x3605) x3598)
+(or (not x3605) x3596)
+(or (not x3605) x3594)
+(or (not x3605) x3558)
+(or x3606 x3607 (not x3608) x3609)
+(or (not x3609) (not x3606))
+(or (not x3609) (not x3607))
+(or (not x3609) x3608)
+(or (not x3606) x3607 (not x3610) x3611)
+(or (not x3611) x3606)
+(or (not x3611) (not x3607))
+(or (not x3611) x3610)
+(or x3612 (not x3611))
+(or x3612 (not x3609))
+(or x3611 x3609 (not x3612))
+(or (not x3613) (not x3614) x3615 x3616 (not x3617) x3618)
+(or (not x3618) x3613)
+(or (not x3618) x3614)
+(or (not x3618) (not x3615))
+(or (not x3618) (not x3616))
+(or (not x3618) x3617)
+(or x3608 (not x3607))
+(or x3608 (not x3618))
+(or x3607 x3618 (not x3608))
+(or (not x3607) (not x3608) x3619)
+(or (not x3619) x3607)
+(or (not x3619) x3608)
+(or x3607 (not x3606) x3620)
+(or (not x3620) (not x3607))
+(or (not x3620) x3606)
+(or x3610 (not x3621))
+(or x3610 x3614)
+(or x3610 (not x3615))
+(or x3610 (not x3616))
+(or x3610 x3617)
+(or x3621 (not x3614) x3615 x3616 (not x3617) (not x3610))
+(or x3607 (not x3610) x3622)
+(or (not x3622) (not x3607))
+(or (not x3622) x3610)
+(or x3623 (not x3622))
+(or x3623 (not x3620))
+(or x3622 x3620 (not x3623))
+(or (not x3624) (not x3623) x3625)
+(or (not x3625) x3624)
+(or (not x3625) x3623)
+(or x3626 (not x3625))
+(or x3626 (not x3619))
+(or x3625 x3619 (not x3626))
+(or x3627 (not x3607))
+(or x3627 (not x3628))
+(or x3627 (not x3629))
+(or x3607 x3628 x3629 (not x3627))
+(or x3630 (not x3607))
+(or x3630 x3634)
+(or x3630 (not x3633))
+(or x3630 (not x3632))
+(or x3630 (not x3631))
+(or x3607 (not x3634) x3633 x3632 x3631 (not x3630))
+(or x3635 x3636)
+(or x3635 x3637)
+(or (not x3636) (not x3637) (not x3635))
+(or (not x3635) (not x3636) x3638)
+(or (not x3638) x3635)
+(or (not x3638) x3636)
+(or x3639 x3607)
+(or x3639 x3640)
+(or x3639 (not x3638))
+(or (not x3607) (not x3640) x3638 (not x3639))
+(or (not x3639) (not x3630) (not x3627) x3641)
+(or (not x3641) x3639)
+(or (not x3641) x3630)
+(or (not x3641) x3627)
+(or (not x3634) x3633 x3632 x3631 (not x3642) x3643)
+(or (not x3643) x3634)
+(or (not x3643) (not x3633))
+(or (not x3643) (not x3632))
+(or (not x3643) (not x3631))
+(or (not x3643) x3642)
+(or (not x3644) (not x3645) x3646 (not x3647) (not x3648) (not x3649) (not x3650) (not x3651) (not x3652) (not x3653) (not x3654) (not x3655) x3656)
+(or (not x3656) x3644)
+(or (not x3656) x3645)
+(or (not x3656) (not x3646))
+(or (not x3656) x3647)
+(or (not x3656) x3648)
+(or (not x3656) x3649)
+(or (not x3656) x3650)
+(or (not x3656) x3651)
+(or (not x3656) x3652)
+(or (not x3656) x3653)
+(or (not x3656) x3654)
+(or (not x3656) x3655)
+(or x3657 (not x3656))
+(or x3657 (not x3643))
+(or x3656 x3643 (not x3657))
+(or x3658 x3659 x3660)
+(or (not x3660) (not x3658))
+(or (not x3660) (not x3659))
+(or x3661 x3564)
+(or x3661 x3563)
+(or x3661 (not x3662))
+(or x3661 (not x3663))
+(or x3661 (not x3660))
+(or (not x3564) (not x3563) x3662 x3663 x3660 (not x3661))
+(or (not x3664) (not x3661) x3665)
+(or (not x3665) x3664)
+(or (not x3665) x3661)
+(or x3666 (not x3658))
+(or x3666 (not x3667))
+(or x3658 x3667 (not x3666))
+(or (not x3659) (not x3666) x3668)
+(or (not x3668) x3659)
+(or (not x3668) x3666)
+(or x3669 (not x3668))
+(or x3669 (not x3665))
+(or x3668 x3665 (not x3669))
+(or x3670 (not x3564) (not x3563) (not x3671) (not x3672) x3667)
+(or (not x3667) (not x3670))
+(or (not x3667) x3564)
+(or (not x3667) x3563)
+(or (not x3667) x3671)
+(or (not x3667) x3672)
+(or (not x3658) x3670 (not x3564) (not x3563) (not x3671) (not x3672) x3673)
+(or (not x3673) x3658)
+(or (not x3673) (not x3670))
+(or (not x3673) x3564)
+(or (not x3673) x3563)
+(or (not x3673) x3671)
+(or (not x3673) x3672)
+(or x3674 x3564)
+(or x3674 x3563)
+(or x3674 (not x3662))
+(or x3674 (not x3663))
+(or x3674 x3658)
+(or (not x3564) (not x3563) x3662 x3663 (not x3658) (not x3674))
+(or x3664 (not x3670))
+(or x3664 x3564)
+(or x3664 x3563)
+(or x3664 (not x3662))
+(or x3664 (not x3663))
+(or x3670 (not x3564) (not x3563) x3662 x3663 (not x3664))
+(or (not x3664) (not x3674) x3675)
+(or (not x3675) x3664)
+(or (not x3675) x3674)
+(or x3676 (not x3675))
+(or x3676 (not x3673))
+(or x3675 x3673 (not x3676))
+(or x3614 (not x3617) x3677)
+(or (not x3677) (not x3614))
+(or (not x3677) x3617)
+(or x3678 (not x3679))
+(or x3678 x3645)
+(or x3678 x3680)
+(or x3678 (not x3677))
+(or x3679 (not x3645) (not x3680) x3677 (not x3678))
+(or (not x3681) (not x3644) (not x3678) x3682)
+(or (not x3682) x3681)
+(or (not x3682) x3644)
+(or (not x3682) x3678)
+(or x3683 (not x3614))
+(or x3683 x3617)
+(or x3614 (not x3617) (not x3683))
+(or (not x3684) (not x3645) (not x3680) (not x3683) x3685)
+(or (not x3685) x3684)
+(or (not x3685) x3645)
+(or (not x3685) x3680)
+(or (not x3685) x3683)
+(or x3686 (not x3628))
+(or x3686 (not x3685))
+(or x3628 x3685 (not x3686))
+(or (not x3686) (not x3644) x3687)
+(or (not x3687) x3686)
+(or (not x3687) x3644)
+(or x3688 (not x3687))
+(or x3688 (not x3682))
+(or x3687 x3682 (not x3688))
+(or x3689 (not x3690))
+(or x3689 x3670)
+(or x3690 (not x3670) (not x3689))
+(or (not x3614) (not x3564) (not x3563) (not x3691) (not x3616) (not x3692) (not x3693) x3670 x3694 x3695 x3696 x3697 x3698 (not x3614) x3699 x3646 x3700 x3701 x3607 x3702 x3703)
+(or (not x3703) x3614)
+(or (not x3703) x3564)
+(or (not x3703) x3563)
+(or (not x3703) x3691)
+(or (not x3703) x3616)
+(or (not x3703) x3692)
+(or (not x3703) x3693)
+(or (not x3703) (not x3670))
+(or (not x3703) (not x3694))
+(or (not x3703) (not x3695))
+(or (not x3703) (not x3696))
+(or (not x3703) (not x3697))
+(or (not x3703) (not x3698))
+(or (not x3703) x3614)
+(or (not x3703) (not x3699))
+(or (not x3703) (not x3646))
+(or (not x3703) (not x3700))
+(or (not x3703) (not x3701))
+(or (not x3703) (not x3607))
+(or (not x3703) (not x3702))
+(or (not x3704) (not x3705) (not x3564) (not x3563) (not x3670) x3614 x3694 x3695 x3696 x3697 x3699 x3646 x3700 x3701 x3607 x3702 x3706)
+(or (not x3706) x3704)
+(or (not x3706) x3705)
+(or (not x3706) x3564)
+(or (not x3706) x3563)
+(or (not x3706) x3670)
+(or (not x3706) (not x3614))
+(or (not x3706) (not x3694))
+(or (not x3706) (not x3695))
+(or (not x3706) (not x3696))
+(or (not x3706) (not x3697))
+(or (not x3706) (not x3699))
+(or (not x3706) (not x3646))
+(or (not x3706) (not x3700))
+(or (not x3706) (not x3701))
+(or (not x3706) (not x3607))
+(or (not x3706) (not x3702))
+(or x3707 (not x3706))
+(or x3707 (not x3703))
+(or x3706 x3703 (not x3707))
+(or x3694 x3696 x3697 (not x3695) x3699 x3646 x3700 x3701 x3607 x3702 x3670 x3614 x3708)
+(or (not x3708) (not x3694))
+(or (not x3708) (not x3696))
+(or (not x3708) (not x3697))
+(or (not x3708) x3695)
+(or (not x3708) (not x3699))
+(or (not x3708) (not x3646))
+(or (not x3708) (not x3700))
+(or (not x3708) (not x3701))
+(or (not x3708) (not x3607))
+(or (not x3708) (not x3702))
+(or (not x3708) (not x3670))
+(or (not x3708) (not x3614))
+(or (not x3634) x3633 x3632 x3631 (not x3607) x3702 x3699 x3614 x3670 x3700 x3701 (not x3709) (not x3710) x3646 x3694 x3695 x3696 x3697 x3711)
+(or (not x3711) x3634)
+(or (not x3711) (not x3633))
+(or (not x3711) (not x3632))
+(or (not x3711) (not x3631))
+(or (not x3711) x3607)
+(or (not x3711) (not x3702))
+(or (not x3711) (not x3699))
+(or (not x3711) (not x3614))
+(or (not x3711) (not x3670))
+(or (not x3711) (not x3700))
+(or (not x3711) (not x3701))
+(or (not x3711) x3709)
+(or (not x3711) x3710)
+(or (not x3711) (not x3646))
+(or (not x3711) (not x3694))
+(or (not x3711) (not x3695))
+(or (not x3711) (not x3696))
+(or (not x3711) (not x3697))
+(or x3712 (not x3711))
+(or x3712 (not x3708))
+(or x3711 x3708 (not x3712))
+(or (not x3564) (not x3563) (not x3713) (not x3712) x3714)
+(or (not x3714) x3564)
+(or (not x3714) x3563)
+(or (not x3714) x3713)
+(or (not x3714) x3712)
+(or (not x3564) (not x3563) (not x3670) x3614 x3694 x3695 x3696 x3697 x3699 x3646 x3700 x3701 x3607 x3702 (not x3715) (not x3716) (not x3717) (not x3718) (not x3719) (not x3680) x3720)
+(or (not x3720) x3564)
+(or (not x3720) x3563)
+(or (not x3720) x3670)
+(or (not x3720) (not x3614))
+(or (not x3720) (not x3694))
+(or (not x3720) (not x3695))
+(or (not x3720) (not x3696))
+(or (not x3720) (not x3697))
+(or (not x3720) (not x3699))
+(or (not x3720) (not x3646))
+(or (not x3720) (not x3700))
+(or (not x3720) (not x3701))
+(or (not x3720) (not x3607))
+(or (not x3720) (not x3702))
+(or (not x3720) x3715)
+(or (not x3720) x3716)
+(or (not x3720) x3717)
+(or (not x3720) x3718)
+(or (not x3720) x3719)
+(or (not x3720) x3680)
+(or (not x3713) x3695 x3696 x3697 x3699 x3646 x3700 x3701 x3607 x3702 x3670 x3614 x3721)
+(or (not x3721) x3713)
+(or (not x3721) (not x3695))
+(or (not x3721) (not x3696))
+(or (not x3721) (not x3697))
+(or (not x3721) (not x3699))
+(or (not x3721) (not x3646))
+(or (not x3721) (not x3700))
+(or (not x3721) (not x3701))
+(or (not x3721) (not x3607))
+(or (not x3721) (not x3702))
+(or (not x3721) (not x3670))
+(or (not x3721) (not x3614))
+(or x3722 (not x3723))
+(or x3722 (not x3721))
+(or x3723 x3721 (not x3722))
+(or (not x3564) (not x3563) (not x3694) (not x3722) x3724)
+(or (not x3724) x3564)
+(or (not x3724) x3563)
+(or (not x3724) x3694)
+(or (not x3724) x3722)
+(or x3699 x3700 (not x3701) (not x3564) (not x3563) x3607 x3702 x3670 x3614 x3646 x3694 x3695 x3696 x3697 x3725)
+(or (not x3725) (not x3699))
+(or (not x3725) (not x3700))
+(or (not x3725) x3701)
+(or (not x3725) x3564)
+(or (not x3725) x3563)
+(or (not x3725) (not x3607))
+(or (not x3725) (not x3702))
+(or (not x3725) (not x3670))
+(or (not x3725) (not x3614))
+(or (not x3725) (not x3646))
+(or (not x3725) (not x3694))
+(or (not x3725) (not x3695))
+(or (not x3725) (not x3696))
+(or (not x3725) (not x3697))
+(or x3726 (not x3725))
+(or x3726 (not x3724))
+(or x3725 x3724 (not x3726))
+(or x3727 x3695)
+(or x3727 x3702)
+(or (not x3695) (not x3702) (not x3727))
+(or x3728 (not x3695))
+(or x3728 (not x3713))
+(or x3728 (not x3607))
+(or x3695 x3713 x3607 (not x3728))
+(or x3702 x3695 (not x3729) x3730)
+(or (not x3730) (not x3702))
+(or (not x3730) (not x3695))
+(or (not x3730) x3729)
+(or x3731 x3607)
+(or x3731 (not x3730))
+(or (not x3607) x3730 (not x3731))
+(or x3732 x3713)
+(or x3732 (not x3607))
+(or x3732 (not x3702))
+(or (not x3713) x3607 x3702 (not x3732))
+(or (not x3564) (not x3563) x3646 x3694 x3699 x3614 x3670 x3700 x3701 x3696 x3697 (not x3732) (not x3731) (not x3728) (not x3727) x3733)
+(or (not x3733) x3564)
+(or (not x3733) x3563)
+(or (not x3733) (not x3646))
+(or (not x3733) (not x3694))
+(or (not x3733) (not x3699))
+(or (not x3733) (not x3614))
+(or (not x3733) (not x3670))
+(or (not x3733) (not x3700))
+(or (not x3733) (not x3701))
+(or (not x3733) (not x3696))
+(or (not x3733) (not x3697))
+(or (not x3733) x3732)
+(or (not x3733) x3731)
+(or (not x3733) x3728)
+(or (not x3733) x3727)
+(or (not x3564) (not x3563) (not x3734) x3735)
+(or (not x3735) x3564)
+(or (not x3735) x3563)
+(or (not x3735) x3734)
+(or x3655 (not x3736))
+(or x3655 (not x3737))
+(or x3736 x3737 (not x3655))
+(or x3738 (not x3739))
+(or x3738 x3696)
+(or x3739 (not x3696) (not x3738))
+(or x3740 (not x3607))
+(or x3740 (not x3696))
+(or x3740 (not x3694))
+(or x3740 (not x3695))
+(or x3607 x3696 x3694 x3695 (not x3740))
+(or x3741 x3695)
+(or x3741 x3694)
+(or (not x3695) (not x3694) (not x3741))
+(or x3697 (not x3741) (not x3740) (not x3738) x3742)
+(or (not x3742) (not x3697))
+(or (not x3742) x3741)
+(or (not x3742) x3740)
+(or (not x3742) x3738)
+(or x3654 (not x3702))
+(or x3654 (not x3699))
+(or x3654 (not x3614))
+(or x3654 (not x3670))
+(or x3654 (not x3700))
+(or x3654 (not x3701))
+(or x3654 (not x3742))
+(or x3702 x3699 x3614 x3670 x3700 x3701 x3742 (not x3654))
+(or x3653 x3701)
+(or x3653 x3700)
+(or (not x3701) (not x3700) (not x3653))
+(or x3652 (not x3743))
+(or x3652 x3702)
+(or x3743 (not x3702) (not x3652))
+(or x3651 x3614)
+(or x3651 (not x3744))
+(or (not x3614) x3744 (not x3651))
+(or (not x3634) x3633 x3632 x3631 x3713 x3745)
+(or (not x3745) x3634)
+(or (not x3745) (not x3633))
+(or (not x3745) (not x3632))
+(or (not x3745) (not x3631))
+(or (not x3745) (not x3713))
+(or (not x3634) x3633 x3632 x3631 (not x3713) (not x3629) x3746)
+(or (not x3746) x3634)
+(or (not x3746) (not x3633))
+(or (not x3746) (not x3632))
+(or (not x3746) (not x3631))
+(or (not x3746) x3713)
+(or (not x3746) x3629)
+(or x3729 (not x3746))
+(or x3729 (not x3745))
+(or x3746 x3745 (not x3729))
+(or (not x3634) x3633 x3632 x3631 (not x3713) x3747)
+(or (not x3747) x3634)
+(or (not x3747) (not x3633))
+(or (not x3747) (not x3632))
+(or (not x3747) (not x3631))
+(or (not x3747) x3713)
+(or x3748 (not x3747))
+(or x3748 (not x3746))
+(or x3748 (not x3745))
+(or x3747 x3746 x3745 (not x3748))
+(or x3696 x3694 x3695 x3702 x3699 x3614 x3670 x3700 x3701 (not x3748) x3749)
+(or (not x3749) (not x3696))
+(or (not x3749) (not x3694))
+(or (not x3749) (not x3695))
+(or (not x3749) (not x3702))
+(or (not x3749) (not x3699))
+(or (not x3749) (not x3614))
+(or (not x3749) (not x3670))
+(or (not x3749) (not x3700))
+(or (not x3749) (not x3701))
+(or (not x3749) x3748)
+(or x3650 x3607)
+(or x3650 (not x3749))
+(or (not x3607) x3749 (not x3650))
+(or x3649 (not x3750))
+(or x3649 x3670)
+(or x3750 (not x3670) (not x3649))
+(or x3648 (not x3751))
+(or x3648 x3699)
+(or x3751 (not x3699) (not x3648))
+(or x3647 x3698)
+(or x3647 x3614)
+(or (not x3698) (not x3614) (not x3647))
+(or (not x3680) (not x3564) (not x3563) x3646 (not x3647) (not x3648) (not x3649) (not x3650) (not x3651) (not x3652) (not x3653) (not x3654) (not x3655) (not x3752) (not x3717) (not x3753) (not x3754) (not x3719) (not x3755) (not x3644) x3756)
+(or (not x3756) x3680)
+(or (not x3756) x3564)
+(or (not x3756) x3563)
+(or (not x3756) (not x3646))
+(or (not x3756) x3647)
+(or (not x3756) x3648)
+(or (not x3756) x3649)
+(or (not x3756) x3650)
+(or (not x3756) x3651)
+(or (not x3756) x3652)
+(or (not x3756) x3653)
+(or (not x3756) x3654)
+(or (not x3756) x3655)
+(or (not x3756) x3752)
+(or (not x3756) x3717)
+(or (not x3756) x3753)
+(or (not x3756) x3754)
+(or (not x3756) x3719)
+(or (not x3756) x3755)
+(or (not x3756) x3644)
+(or x3757 x3564)
+(or x3757 x3563)
+(or x3757 (not x3646))
+(or x3757 (not x3758))
+(or x3757 (not x3759))
+(or x3757 (not x3760))
+(or x3757 (not x3761))
+(or x3757 (not x3762))
+(or x3757 (not x3763))
+(or x3757 (not x3764))
+(or x3757 (not x3765))
+(or x3757 (not x3766))
+(or x3757 (not x3767))
+(or x3757 (not x3768))
+(or x3757 (not x3769))
+(or x3757 (not x3770))
+(or x3757 (not x3771))
+(or x3757 (not x3772))
+(or x3757 (not x3628))
+(or (not x3564) (not x3563) x3646 x3758 x3759 x3760 x3761 x3762 x3763 x3764 x3765 x3766 x3767 x3768 x3769 x3770 x3771 x3772 x3628 (not x3757))
+(or x3773 x3564)
+(or x3773 x3563)
+(or x3773 (not x3646))
+(or x3773 (not x3758))
+(or x3773 (not x3759))
+(or x3773 (not x3760))
+(or x3773 (not x3761))
+(or x3773 (not x3762))
+(or x3773 (not x3763))
+(or x3773 (not x3764))
+(or x3773 (not x3765))
+(or x3773 (not x3766))
+(or x3773 (not x3767))
+(or x3773 (not x3768))
+(or x3773 (not x3769))
+(or x3773 (not x3770))
+(or x3773 (not x3771))
+(or x3773 (not x3772))
+(or x3773 x3642)
+(or (not x3564) (not x3563) x3646 x3758 x3759 x3760 x3761 x3762 x3763 x3764 x3765 x3766 x3767 x3768 x3769 x3770 x3771 x3772 (not x3642) (not x3773))
+(or (not x3773) (not x3757) x3774)
+(or (not x3774) x3773)
+(or (not x3774) x3757)
+(or x3775 (not x3774))
+(or x3775 (not x3756))
+(or x3774 x3756 (not x3775))
+(or (not x3644) (not x3776) x3777)
+(or (not x3777) x3644)
+(or (not x3777) x3776)
+(or (not x3634) x3633 x3632 x3631 (not x3778) x3779)
+(or (not x3779) x3634)
+(or (not x3779) (not x3633))
+(or (not x3779) (not x3632))
+(or (not x3779) (not x3631))
+(or (not x3779) x3778)
+(or x3780 (not x3779))
+(or x3780 (not x3777))
+(or x3779 x3777 (not x3780))
+(or (not x3644) (not x3781) x3782)
+(or (not x3782) x3644)
+(or (not x3782) x3781)
+(or x3783 (not x3628))
+(or x3783 (not x3782))
+(or x3628 x3782 (not x3783))
+(or x3700 x3701 (not x3699) (not x3564) (not x3563) x3607 x3702 x3670 x3614 x3646 x3694 x3695 x3696 x3697 x3784)
+(or (not x3784) (not x3700))
+(or (not x3784) (not x3701))
+(or (not x3784) x3699)
+(or (not x3784) x3564)
+(or (not x3784) x3563)
+(or (not x3784) (not x3607))
+(or (not x3784) (not x3702))
+(or (not x3784) (not x3670))
+(or (not x3784) (not x3614))
+(or (not x3784) (not x3646))
+(or (not x3784) (not x3694))
+(or (not x3784) (not x3695))
+(or (not x3784) (not x3696))
+(or (not x3784) (not x3697))
+(or (not x3716) (not x3717) (not x3718) (not x3719) x3785)
+(or (not x3785) x3716)
+(or (not x3785) x3717)
+(or (not x3785) x3718)
+(or (not x3785) x3719)
+(or x3786 (not x3787))
+(or x3786 (not x3788))
+(or x3786 (not x3769))
+(or x3786 (not x3768))
+(or x3786 (not x3789))
+(or x3786 (not x3790))
+(or x3786 (not x3772))
+(or x3786 (not x3771))
+(or x3786 (not x3658))
+(or x3786 (not x3659))
+(or x3787 x3788 x3769 x3768 x3789 x3790 x3772 x3771 x3658 x3659 (not x3786))
+(or (not x3752) (not x3717) (not x3753) (not x3754) (not x3719) (not x3755) x3690)
+(or (not x3690) x3752)
+(or (not x3690) x3717)
+(or (not x3690) x3753)
+(or (not x3690) x3754)
+(or (not x3690) x3719)
+(or (not x3690) x3755)
+(or x3704 (not x3690))
+(or x3704 (not x3788))
+(or x3704 (not x3768))
+(or x3704 (not x3790))
+(or x3704 (not x3771))
+(or x3704 x3680)
+(or x3690 x3788 x3768 x3790 x3771 (not x3680) (not x3704))
+(or (not x3704) (not x3786) (not x3716) (not x3717) (not x3718) (not x3719) x3614 x3694 x3695 x3696 x3697 x3699 x3646 x3700 x3701 x3607 x3702 x3791)
+(or (not x3791) x3704)
+(or (not x3791) x3786)
+(or (not x3791) x3716)
+(or (not x3791) x3717)
+(or (not x3791) x3718)
+(or (not x3791) x3719)
+(or (not x3791) (not x3614))
+(or (not x3791) (not x3694))
+(or (not x3791) (not x3695))
+(or (not x3791) (not x3696))
+(or (not x3791) (not x3697))
+(or (not x3791) (not x3699))
+(or (not x3791) (not x3646))
+(or (not x3791) (not x3700))
+(or (not x3791) (not x3701))
+(or (not x3791) (not x3607))
+(or (not x3791) (not x3702))
+(or x3691 (not x3617))
+(or x3691 (not x3615))
+(or x3691 (not x3616))
+(or x3691 x3645)
+(or x3691 x3681)
+(or x3617 x3615 x3616 (not x3645) (not x3681) (not x3691))
+(or (not x3691) (not x3616) (not x3692) (not x3693) x3670 x3694 x3695 x3696 x3697 x3698 (not x3614) x3699 x3646 x3700 x3701 x3607 x3702 x3723)
+(or (not x3723) x3691)
+(or (not x3723) x3616)
+(or (not x3723) x3692)
+(or (not x3723) x3693)
+(or (not x3723) (not x3670))
+(or (not x3723) (not x3694))
+(or (not x3723) (not x3695))
+(or (not x3723) (not x3696))
+(or (not x3723) (not x3697))
+(or (not x3723) (not x3698))
+(or (not x3723) x3614)
+(or (not x3723) (not x3699))
+(or (not x3723) (not x3646))
+(or (not x3723) (not x3700))
+(or (not x3723) (not x3701))
+(or (not x3723) (not x3607))
+(or (not x3723) (not x3702))
+(or x3792 (not x3723))
+(or x3792 (not x3791))
+(or x3723 x3791 (not x3792))
+(or (not x3564) (not x3563) (not x3670) (not x3792) x3793)
+(or (not x3793) x3564)
+(or (not x3793) x3563)
+(or (not x3793) x3670)
+(or (not x3793) x3792)
+(or x3794 (not x3793))
+(or x3794 (not x3784))
+(or x3793 x3784 (not x3794))
+(or (not x3795) (not x3796) x3766)
+(or (not x3766) x3795)
+(or (not x3766) x3796)
+(or (not x3797) (not x3696) x3798)
+(or (not x3798) x3797)
+(or (not x3798) x3696)
+(or x3607 x3696 x3694 x3695 x3799)
+(or (not x3799) (not x3607))
+(or (not x3799) (not x3696))
+(or (not x3799) (not x3694))
+(or (not x3799) (not x3695))
+(or (not x3695) (not x3694) x3800)
+(or (not x3800) x3695)
+(or (not x3800) x3694)
+(or x3801 (not x3697))
+(or x3801 (not x3800))
+(or x3801 (not x3799))
+(or x3801 (not x3798))
+(or x3697 x3800 x3799 x3798 (not x3801))
+(or x3702 x3699 x3614 x3670 x3700 x3701 x3737)
+(or (not x3737) (not x3702))
+(or (not x3737) (not x3699))
+(or (not x3737) (not x3614))
+(or (not x3737) (not x3670))
+(or (not x3737) (not x3700))
+(or (not x3737) (not x3701))
+(or x3702 x3699 x3614 x3670 x3700 x3701 (not x3801) x3765)
+(or (not x3765) (not x3702))
+(or (not x3765) (not x3699))
+(or (not x3765) (not x3614))
+(or (not x3765) (not x3670))
+(or (not x3765) (not x3700))
+(or (not x3765) (not x3701))
+(or (not x3765) x3801)
+(or (not x3701) (not x3700) x3764)
+(or (not x3764) x3701)
+(or (not x3764) x3700)
+(or (not x3802) (not x3702) x3763)
+(or (not x3763) x3802)
+(or (not x3763) x3702)
+(or (not x3614) (not x3803) x3762)
+(or (not x3762) x3614)
+(or (not x3762) x3803)
+(or x3710 x3634)
+(or x3710 (not x3633))
+(or x3710 (not x3632))
+(or x3710 (not x3631))
+(or x3710 (not x3713))
+(or (not x3634) x3633 x3632 x3631 x3713 (not x3710))
+(or x3709 x3634)
+(or x3709 (not x3633))
+(or x3709 (not x3632))
+(or x3709 (not x3631))
+(or x3709 x3713)
+(or x3709 x3629)
+(or (not x3634) x3633 x3632 x3631 (not x3713) (not x3629) (not x3709))
+(or x3804 x3634)
+(or x3804 (not x3633))
+(or x3804 (not x3632))
+(or x3804 (not x3631))
+(or x3804 x3713)
+(or (not x3634) x3633 x3632 x3631 (not x3713) (not x3804))
+(or (not x3804) (not x3709) (not x3710) x3805)
+(or (not x3805) x3804)
+(or (not x3805) x3709)
+(or (not x3805) x3710)
+(or x3796 (not x3702))
+(or x3796 (not x3699))
+(or x3796 (not x3614))
+(or x3796 (not x3670))
+(or x3796 (not x3700))
+(or x3796 (not x3701))
+(or x3702 x3699 x3614 x3670 x3700 x3701 (not x3796))
+(or x3806 (not x3696))
+(or x3806 (not x3694))
+(or x3806 (not x3695))
+(or x3806 (not x3702))
+(or x3806 (not x3699))
+(or x3806 (not x3614))
+(or x3806 (not x3670))
+(or x3806 (not x3700))
+(or x3806 (not x3701))
+(or x3806 (not x3805))
+(or x3696 x3694 x3695 x3702 x3699 x3614 x3670 x3700 x3701 x3805 (not x3806))
+(or (not x3607) (not x3806) x3761)
+(or (not x3761) x3607)
+(or (not x3761) x3806)
+(or (not x3807) (not x3670) x3760)
+(or (not x3760) x3807)
+(or (not x3760) x3670)
+(or (not x3808) (not x3699) x3759)
+(or (not x3759) x3808)
+(or (not x3759) x3699)
+(or (not x3698) (not x3614) x3758)
+(or (not x3758) x3698)
+(or (not x3758) x3614)
+(or x3809 x3564)
+(or x3809 x3563)
+(or x3809 (not x3646))
+(or x3809 (not x3758))
+(or x3809 (not x3759))
+(or x3809 (not x3760))
+(or x3809 (not x3761))
+(or x3809 (not x3762))
+(or x3809 (not x3763))
+(or x3809 (not x3764))
+(or x3809 (not x3765))
+(or x3809 (not x3766))
+(or (not x3564) (not x3563) x3646 x3758 x3759 x3760 x3761 x3762 x3763 x3764 x3765 x3766 (not x3809))
+(or x3697 (not x3564) (not x3563) x3694 x3695 (not x3696) x3699 x3646 x3700 x3701 x3607 x3702 x3670 x3614 x3810)
+(or (not x3810) (not x3697))
+(or (not x3810) x3564)
+(or (not x3810) x3563)
+(or (not x3810) (not x3694))
+(or (not x3810) (not x3695))
+(or (not x3810) x3696)
+(or (not x3810) (not x3699))
+(or (not x3810) (not x3646))
+(or (not x3810) (not x3700))
+(or (not x3810) (not x3701))
+(or (not x3810) (not x3607))
+(or (not x3810) (not x3702))
+(or (not x3810) (not x3670))
+(or (not x3810) (not x3614))
+(or x3692 (not x3681))
+(or x3692 (not x3617))
+(or x3692 (not x3615))
+(or x3692 (not x3616))
+(or x3692 x3645)
+(or x3681 x3617 x3615 x3616 (not x3645) (not x3692))
+(or x3617 x3615 x3616 (not x3645) (not x3681) x3811)
+(or (not x3811) (not x3617))
+(or (not x3811) (not x3615))
+(or (not x3811) (not x3616))
+(or (not x3811) x3645)
+(or (not x3811) x3681)
+(or x3812 (not x3811))
+(or x3812 x3616)
+(or x3811 (not x3616) (not x3812))
+(or (not x3564) (not x3563) (not x3812) (not x3692) (not x3693) x3670 x3694 x3695 x3696 x3697 x3698 (not x3614) x3699 x3646 x3700 x3701 x3607 x3702 x3813)
+(or (not x3813) x3564)
+(or (not x3813) x3563)
+(or (not x3813) x3812)
+(or (not x3813) x3692)
+(or (not x3813) x3693)
+(or (not x3813) (not x3670))
+(or (not x3813) (not x3694))
+(or (not x3813) (not x3695))
+(or (not x3813) (not x3696))
+(or (not x3813) (not x3697))
+(or (not x3813) (not x3698))
+(or (not x3813) x3614)
+(or (not x3813) (not x3699))
+(or (not x3813) (not x3646))
+(or (not x3813) (not x3700))
+(or (not x3813) (not x3701))
+(or (not x3813) (not x3607))
+(or (not x3813) (not x3702))
+(or x3699 x3701 (not x3700) (not x3564) (not x3563) x3607 x3702 x3670 x3614 x3646 x3694 x3695 x3696 x3697 x3814)
+(or (not x3814) (not x3699))
+(or (not x3814) (not x3701))
+(or (not x3814) x3700)
+(or (not x3814) x3564)
+(or (not x3814) x3563)
+(or (not x3814) (not x3607))
+(or (not x3814) (not x3702))
+(or (not x3814) (not x3670))
+(or (not x3814) (not x3614))
+(or (not x3814) (not x3646))
+(or (not x3814) (not x3694))
+(or (not x3814) (not x3695))
+(or (not x3814) (not x3696))
+(or (not x3814) (not x3697))
+(or x3624 x3606 x3621)
+(or (not x3621) (not x3624))
+(or (not x3621) (not x3606))
+(or x3693 (not x3621))
+(or x3693 (not x3615))
+(or x3693 (not x3616))
+(or x3693 x3617)
+(or x3621 x3615 x3616 (not x3617) (not x3693))
+(or (not x3693) x3681 x3617 x3615 x3616 (not x3645) x3815)
+(or (not x3815) x3693)
+(or (not x3815) (not x3681))
+(or (not x3815) (not x3617))
+(or (not x3815) (not x3615))
+(or (not x3815) (not x3616))
+(or (not x3815) x3645)
+(or x3613 (not x3624))
+(or x3613 (not x3606))
+(or x3624 x3606 (not x3613))
+(or (not x3613) x3615 x3616 (not x3617) x3816)
+(or (not x3816) x3613)
+(or (not x3816) (not x3615))
+(or (not x3816) (not x3616))
+(or (not x3816) x3617)
+(or x3817 (not x3816))
+(or x3817 (not x3815))
+(or x3816 x3815 (not x3817))
+(or (not x3564) (not x3563) x3670 x3694 x3695 x3696 x3697 x3698 (not x3614) x3699 x3646 x3700 x3701 x3607 x3702 (not x3817) x3818)
+(or (not x3818) x3564)
+(or (not x3818) x3563)
+(or (not x3818) (not x3670))
+(or (not x3818) (not x3694))
+(or (not x3818) (not x3695))
+(or (not x3818) (not x3696))
+(or (not x3818) (not x3697))
+(or (not x3818) (not x3698))
+(or (not x3818) x3614)
+(or (not x3818) (not x3699))
+(or (not x3818) (not x3646))
+(or (not x3818) (not x3700))
+(or (not x3818) (not x3701))
+(or (not x3818) (not x3607))
+(or (not x3818) (not x3702))
+(or (not x3818) x3817)
+(or x3819 (not x3820))
+(or x3819 (not x3821))
+(or x3819 (not x3822))
+(or x3819 (not x3823))
+(or x3819 (not x3825))
+(or x3820 x3821 x3822 x3823 x3825 (not x3819))
+(or x3826 (not x3825))
+(or x3826 (not x3824))
+(or x3826 x78)
+(or x3826 (not x79))
+(or x3826 x3564)
+(or x3826 x3563)
+(or x3825 x3824 (not x78) x79 (not x3564) (not x3563) (not x3826))
+(or (not x3826) (not x3827) (not x3819) x3828)
+(or (not x3828) x3826)
+(or (not x3828) x3827)
+(or (not x3828) x3819)
+(or x3829 (not x3820))
+(or x3829 (not x3821))
+(or x3829 (not x3822))
+(or x3829 (not x3823))
+(or x3829 (not x3824))
+(or x3820 x3821 x3822 x3823 x3824 (not x3829))
+(or x3827 (not x3820))
+(or x3827 (not x3821))
+(or x3827 (not x3822))
+(or x3827 x3825)
+(or x3827 x3824)
+(or x3820 x3821 x3822 (not x3825) (not x3824) (not x3827))
+(or x3825 x3824 (not x78) x79 (not x3564) (not x3563) x3820)
+(or (not x3820) (not x3825))
+(or (not x3820) (not x3824))
+(or (not x3820) x78)
+(or (not x3820) (not x79))
+(or (not x3820) x3564)
+(or (not x3820) x3563)
+(or x3830 (not x3820))
+(or x3830 (not x3825))
+(or x3830 x3824)
+(or x3820 x3825 (not x3824) (not x3830))
+(or (not x3830) (not x3827) (not x3829) x3831)
+(or (not x3831) x3830)
+(or (not x3831) x3827)
+(or (not x3831) x3829)
+(or x3832 (not x3833))
+(or x3832 (not x3834))
+(or x3832 (not x3835))
+(or x3832 (not x3836))
+(or x3832 (not x3838))
+(or x3833 x3834 x3835 x3836 x3838 (not x3832))
+(or x3839 (not x3838))
+(or x3839 (not x3837))
+(or x3839 x78)
+(or x3839 (not x79))
+(or x3839 x3564)
+(or x3839 x3563)
+(or x3838 x3837 (not x78) x79 (not x3564) (not x3563) (not x3839))
+(or (not x3839) (not x3840) (not x3832) x3841)
+(or (not x3841) x3839)
+(or (not x3841) x3840)
+(or (not x3841) x3832)
+(or x3842 (not x3833))
+(or x3842 (not x3834))
+(or x3842 (not x3835))
+(or x3842 (not x3836))
+(or x3842 (not x3837))
+(or x3833 x3834 x3835 x3836 x3837 (not x3842))
+(or x3840 (not x3833))
+(or x3840 (not x3834))
+(or x3840 (not x3835))
+(or x3840 x3838)
+(or x3840 x3837)
+(or x3833 x3834 x3835 (not x3838) (not x3837) (not x3840))
+(or x3838 x3837 (not x78) x79 (not x3564) (not x3563) x3833)
+(or (not x3833) (not x3838))
+(or (not x3833) (not x3837))
+(or (not x3833) x78)
+(or (not x3833) (not x79))
+(or (not x3833) x3564)
+(or (not x3833) x3563)
+(or x3843 (not x3833))
+(or x3843 (not x3838))
+(or x3843 x3837)
+(or x3833 x3838 (not x3837) (not x3843))
+(or (not x3843) (not x3840) (not x3842) x3844)
+(or (not x3844) x3843)
+(or (not x3844) x3840)
+(or (not x3844) x3842)
+(or x3845 (not x3680))
+(or x3845 (not x3846))
+(or x3845 (not x3847))
+(or x3845 (not x3788))
+(or x3845 (not x3768))
+(or x3845 (not x3790))
+(or x3845 (not x3771))
+(or x3845 (not x3767))
+(or x3845 (not x3768))
+(or x3845 (not x3769))
+(or x3845 (not x3770))
+(or x3845 (not x3771))
+(or x3845 (not x3772))
+(or x3680 x3846 x3847 x3788 x3768 x3790 x3771 x3767 x3768 x3769 x3770 x3771 x3772 (not x3845))
+(or (not x3671) (not x3672) (not x3845) x3848)
+(or (not x3848) x3671)
+(or (not x3848) x3672)
+(or (not x3848) x3845)
+(or x3849 (not x3564))
+(or x3849 (not x3563))
+(or x3564 x3563 (not x3849))
+(or x3564 x3563 x3850)
+(or (not x3850) (not x3564))
+(or (not x3850) (not x3563))
+(or x3851 (not x3850))
+(or x3851 (not x3564))
+(or x3851 x3563)
+(or x3850 x3564 (not x3563) (not x3851))
+(or x3852 (not x3853))
+(or x3852 (not x3854))
+(or x3852 (not x3855))
+(or x3852 (not x3856))
+(or x3852 (not x3857))
+(or x3852 (not x3858))
+(or x3852 (not x3789))
+(or x3852 (not x3859))
+(or x3852 (not x3860))
+(or x3852 (not x3861))
+(or x3852 (not x3862))
+(or x3852 (not x3866))
+(or x3853 x3854 x3855 x3856 x3857 x3858 x3789 x3859 x3860 x3861 x3862 x3866 (not x3852))
+(or (not x3867) (not x3868) (not x3869) (not x3870) (not x3871) (not x3872) (not x3873) (not x3874) (not x3875) (not x3876) (not x3877) (not x3852) x3878)
+(or (not x3878) x3867)
+(or (not x3878) x3868)
+(or (not x3878) x3869)
+(or (not x3878) x3870)
+(or (not x3878) x3871)
+(or (not x3878) x3872)
+(or (not x3878) x3873)
+(or (not x3878) x3874)
+(or (not x3878) x3875)
+(or (not x3878) x3876)
+(or (not x3878) x3877)
+(or (not x3878) x3852)
+(or x3879 (not x3853))
+(or x3879 (not x3854))
+(or x3879 (not x3855))
+(or x3879 (not x3856))
+(or x3879 (not x3857))
+(or x3879 (not x3858))
+(or x3879 (not x3789))
+(or x3879 (not x3859))
+(or x3879 (not x3860))
+(or x3879 (not x3861))
+(or x3879 (not x3862))
+(or x3879 (not x3865))
+(or x3853 x3854 x3855 x3856 x3857 x3858 x3789 x3859 x3860 x3861 x3862 x3865 (not x3879))
+(or x3880 x3881)
+(or x3880 (not x3882))
+(or (not x3881) x3882 (not x3880))
+(or (not x3880) (not x3881) x3883)
+(or (not x3883) x3880)
+(or (not x3883) x3881)
+(or x3884 (not x3853))
+(or x3884 (not x3854))
+(or x3884 (not x3855))
+(or x3884 (not x3856))
+(or x3884 (not x3857))
+(or x3884 (not x3858))
+(or x3884 (not x3789))
+(or x3884 (not x3859))
+(or x3884 (not x3866))
+(or x3884 (not x3865))
+(or x3884 (not x3864))
+(or x3884 x3863)
+(or x3884 (not x80))
+(or x3884 (not x79))
+(or x3884 (not x3883))
+(or x3853 x3854 x3855 x3856 x3857 x3858 x3789 x3859 x3866 x3865 x3864 (not x3863) x80 x79 x3883 (not x3884))
+(or x3885 (not x3853))
+(or x3885 (not x3854))
+(or x3885 (not x3855))
+(or x3885 (not x3856))
+(or x3885 (not x3857))
+(or x3885 (not x3858))
+(or x3885 (not x3866))
+(or x3885 (not x3865))
+(or x3885 x3864)
+(or x3885 x3863)
+(or x3885 x3886)
+(or x3885 x3887)
+(or x3885 x3888)
+(or x3853 x3854 x3855 x3856 x3857 x3858 x3866 x3865 (not x3864) (not x3863) (not x3886) (not x3887) (not x3888) (not x3885))
+(or x3889 (not x3853))
+(or x3889 (not x3854))
+(or x3889 (not x3855))
+(or x3889 (not x3856))
+(or x3889 (not x3866))
+(or x3889 (not x3865))
+(or x3889 x3864)
+(or x3889 (not x3863))
+(or x3889 (not x3890))
+(or x3889 x3891)
+(or x3889 x3892)
+(or x3853 x3854 x3855 x3856 x3866 x3865 (not x3864) x3863 x3890 (not x3891) (not x3892) (not x3889))
+(or x3893 (not x3853))
+(or x3893 (not x3866))
+(or x3893 (not x3865))
+(or x3893 (not x3864))
+(or x3893 (not x3863))
+(or x3893 (not x79))
+(or x3893 x3564)
+(or x3893 x3563)
+(or x3893 (not x3890))
+(or x3893 (not x3894))
+(or x3893 (not x3895))
+(or x3893 x3896)
+(or x3853 x3866 x3865 x3864 x3863 x79 (not x3564) (not x3563) x3890 x3894 x3895 (not x3896) (not x3893))
+(or x3897 x3898)
+(or x3897 x3899)
+(or x3897 x3900)
+(or (not x3898) (not x3899) (not x3900) (not x3897))
+(or (not x3897) (not x3898) x3901)
+(or (not x3901) x3897)
+(or (not x3901) x3898)
+(or x3902 x3903)
+(or x3902 (not x3901))
+(or (not x3903) x3901 (not x3902))
+(or (not x3902) (not x3903) x3904)
+(or (not x3904) x3902)
+(or (not x3904) x3903)
+(or x3905 (not x3866))
+(or x3905 (not x3865))
+(or x3905 (not x3864))
+(or x3905 (not x3863))
+(or x3905 (not x79))
+(or x3905 x3564)
+(or x3905 x3563)
+(or x3905 (not x3890))
+(or x3905 (not x3906))
+(or x3905 (not x3904))
+(or x3866 x3865 x3864 x3863 x79 (not x3564) (not x3563) x3890 x3906 x3904 (not x3905))
+(or (not x3905) (not x3893) (not x3869) (not x3870) (not x3889) (not x3872) (not x3885) (not x3874) (not x3884) (not x3877) (not x3879) x3907)
+(or (not x3907) x3905)
+(or (not x3907) x3893)
+(or (not x3907) x3869)
+(or (not x3907) x3870)
+(or (not x3907) x3889)
+(or (not x3907) x3872)
+(or (not x3907) x3885)
+(or (not x3907) x3874)
+(or (not x3907) x3884)
+(or (not x3907) x3877)
+(or (not x3907) x3879)
+(or x3908 (not x3853))
+(or x3908 (not x3854))
+(or x3908 (not x3855))
+(or x3908 (not x3856))
+(or x3908 (not x3857))
+(or x3908 (not x3858))
+(or x3908 (not x3789))
+(or x3908 (not x3859))
+(or x3908 (not x3860))
+(or x3908 (not x3861))
+(or x3908 (not x3862))
+(or x3908 (not x3864))
+(or x3853 x3854 x3855 x3856 x3857 x3858 x3789 x3859 x3860 x3861 x3862 x3864 (not x3908))
+(or x3876 (not x3853))
+(or x3876 (not x3854))
+(or x3876 (not x3855))
+(or x3876 (not x3856))
+(or x3876 (not x3857))
+(or x3876 (not x3858))
+(or x3876 (not x3789))
+(or x3876 (not x3859))
+(or x3876 (not x3860))
+(or x3876 (not x3866))
+(or x3876 x3865)
+(or x3876 x3864)
+(or x3876 (not x3863))
+(or x3876 (not x80))
+(or x3876 (not x79))
+(or x3853 x3854 x3855 x3856 x3857 x3858 x3789 x3859 x3860 x3866 (not x3865) (not x3864) x3863 x80 x79 (not x3876))
+(or x3909 x3882)
+(or x3909 x3910)
+(or (not x3882) (not x3910) (not x3909))
+(or (not x3909) (not x3882) x3911)
+(or (not x3911) x3909)
+(or (not x3911) x3882)
+(or x3912 (not x3853))
+(or x3912 (not x3854))
+(or x3912 (not x3855))
+(or x3912 (not x3856))
+(or x3912 (not x3857))
+(or x3912 (not x3858))
+(or x3912 (not x3789))
+(or x3912 (not x3859))
+(or x3912 (not x3866))
+(or x3912 (not x3865))
+(or x3912 (not x3864))
+(or x3912 x3863)
+(or x3912 (not x80))
+(or x3912 (not x79))
+(or x3912 x3881)
+(or x3912 (not x3911))
+(or x3853 x3854 x3855 x3856 x3857 x3858 x3789 x3859 x3866 x3865 x3864 (not x3863) x80 x79 (not x3881) x3911 (not x3912))
+(or x3913 x3888)
+(or x3913 (not x3914))
+(or (not x3888) x3914 (not x3913))
+(or (not x3913) (not x3888) x3915)
+(or (not x3915) x3913)
+(or (not x3915) x3888)
+(or x3916 x3886)
+(or x3916 x3887)
+(or x3916 (not x3915))
+(or (not x3886) (not x3887) x3915 (not x3916))
+(or (not x3916) (not x3886) x3917)
+(or (not x3917) x3916)
+(or (not x3917) x3886)
+(or x3918 (not x3853))
+(or x3918 (not x3854))
+(or x3918 (not x3855))
+(or x3918 (not x3856))
+(or x3918 (not x3857))
+(or x3918 (not x3858))
+(or x3918 (not x3866))
+(or x3918 (not x3865))
+(or x3918 x3864)
+(or x3918 x3863)
+(or x3918 (not x3917))
+(or x3853 x3854 x3855 x3856 x3857 x3858 x3866 x3865 (not x3864) (not x3863) x3917 (not x3918))
+(or x3919 x3892)
+(or x3919 (not x3920))
+(or (not x3892) x3920 (not x3919))
+(or (not x3919) (not x3892) x3921)
+(or (not x3921) x3919)
+(or (not x3921) x3892)
+(or x3922 (not x3853))
+(or x3922 (not x3854))
+(or x3922 (not x3855))
+(or x3922 (not x3856))
+(or x3922 (not x3866))
+(or x3922 (not x3865))
+(or x3922 x3864)
+(or x3922 (not x3863))
+(or x3922 (not x3890))
+(or x3922 x3891)
+(or x3922 (not x3921))
+(or x3853 x3854 x3855 x3856 x3866 x3865 (not x3864) x3863 x3890 (not x3891) x3921 (not x3922))
+(or x3923 (not x3853))
+(or x3923 (not x3866))
+(or x3923 (not x3865))
+(or x3923 (not x3864))
+(or x3923 (not x3863))
+(or x3923 (not x79))
+(or x3923 x3564)
+(or x3923 x3563)
+(or x3923 (not x3890))
+(or x3923 (not x3894))
+(or x3923 (not x3895))
+(or x3923 (not x3896))
+(or x3853 x3866 x3865 x3864 x3863 x79 (not x3564) (not x3563) x3890 x3894 x3895 x3896 (not x3923))
+(or x3924 x3903)
+(or x3924 x3898)
+(or x3924 x3899)
+(or x3924 (not x3900))
+(or (not x3903) (not x3898) (not x3899) x3900 (not x3924))
+(or (not x3924) (not x3903) x3925)
+(or (not x3925) x3924)
+(or (not x3925) x3903)
+(or x3926 (not x3866))
+(or x3926 (not x3865))
+(or x3926 (not x3864))
+(or x3926 (not x3863))
+(or x3926 (not x79))
+(or x3926 x3564)
+(or x3926 x3563)
+(or x3926 (not x3890))
+(or x3926 (not x3906))
+(or x3926 (not x3925))
+(or x3866 x3865 x3864 x3863 x79 (not x3564) (not x3563) x3890 x3906 x3925 (not x3926))
+(or (not x3926) (not x3923) (not x3870) (not x3922) (not x3918) (not x3874) (not x3912) (not x3876) (not x3877) (not x3908) x3927)
+(or (not x3927) x3926)
+(or (not x3927) x3923)
+(or (not x3927) x3870)
+(or (not x3927) x3922)
+(or (not x3927) x3918)
+(or (not x3927) x3874)
+(or (not x3927) x3912)
+(or (not x3927) x3876)
+(or (not x3927) x3877)
+(or (not x3927) x3908)
+(or x3928 (not x3770))
+(or x3928 (not x3772))
+(or x3928 (not x3771))
+(or x3770 x3772 x3771 (not x3928))
+(or (not x3928) (not x79) x3862)
+(or (not x3862) x3928)
+(or (not x3862) x79)
+(or x3929 (not x3853))
+(or x3929 (not x3854))
+(or x3929 (not x3855))
+(or x3929 (not x3856))
+(or x3929 (not x3857))
+(or x3929 (not x3858))
+(or x3929 (not x3789))
+(or x3929 (not x3859))
+(or x3929 (not x3860))
+(or x3929 (not x3861))
+(or x3929 (not x3862))
+(or x3929 (not x3863))
+(or x3853 x3854 x3855 x3856 x3857 x3858 x3789 x3859 x3860 x3861 x3862 x3863 (not x3929))
+(or x3754 (not x3866))
+(or x3754 x3865)
+(or x3754 (not x3864))
+(or x3754 (not x3863))
+(or x3866 (not x3865) x3864 x3863 (not x3754))
+(or (not x3754) (not x3755) (not x3719) x3930)
+(or (not x3930) x3754)
+(or (not x3930) x3755)
+(or (not x3930) x3719)
+(or x3866 (not x3865) (not x3864) x3863 x80 x79 x3861)
+(or (not x3861) (not x3866))
+(or (not x3861) x3865)
+(or (not x3861) x3864)
+(or (not x3861) (not x3863))
+(or (not x3861) (not x80))
+(or (not x3861) (not x79))
+(or x3866 x3865 x3864 (not x3863) x80 x79 x3860)
+(or (not x3860) (not x3866))
+(or (not x3860) (not x3865))
+(or (not x3860) (not x3864))
+(or (not x3860) x3863)
+(or (not x3860) (not x80))
+(or (not x3860) (not x79))
+(or x3877 (not x3853))
+(or x3877 (not x3854))
+(or x3877 (not x3855))
+(or x3877 (not x3856))
+(or x3877 (not x3857))
+(or x3877 (not x3858))
+(or x3877 (not x3789))
+(or x3877 (not x3859))
+(or x3877 (not x3860))
+(or x3877 (not x3861))
+(or x3877 (not x3930))
+(or x3877 x79)
+(or x3853 x3854 x3855 x3856 x3857 x3858 x3789 x3859 x3860 x3861 x3930 (not x79) (not x3877))
+(or x3931 x3910)
+(or x3931 x3932)
+(or (not x3910) (not x3932) (not x3931))
+(or (not x3931) (not x3910) x3933)
+(or (not x3933) x3931)
+(or (not x3933) x3910)
+(or x3866 x3865 x3864 (not x3863) x80 (not x79) x3859)
+(or (not x3859) (not x3866))
+(or (not x3859) (not x3865))
+(or (not x3859) (not x3864))
+(or (not x3859) x3863)
+(or (not x3859) (not x80))
+(or (not x3859) x79)
+(or x3875 (not x3853))
+(or x3875 (not x3854))
+(or x3875 (not x3855))
+(or x3875 (not x3856))
+(or x3875 (not x3857))
+(or x3875 (not x3858))
+(or x3875 (not x3789))
+(or x3875 (not x3859))
+(or x3875 (not x3866))
+(or x3875 (not x3865))
+(or x3875 (not x3864))
+(or x3875 x3863)
+(or x3875 (not x80))
+(or x3875 (not x79))
+(or x3853 x3854 x3855 x3856 x3857 x3858 x3789 x3859 x3866 x3865 x3864 (not x3863) x80 x79 (not x3875))
+(or x3934 (not x3853))
+(or x3934 (not x3854))
+(or x3934 (not x3855))
+(or x3934 (not x3856))
+(or x3934 (not x3857))
+(or x3934 (not x3858))
+(or x3934 (not x3789))
+(or x3934 (not x3859))
+(or x3934 (not x3866))
+(or x3934 (not x3865))
+(or x3934 (not x3864))
+(or x3934 x3863)
+(or x3934 (not x80))
+(or x3934 (not x79))
+(or x3934 x3881)
+(or x3934 x3882)
+(or x3934 (not x3933))
+(or x3853 x3854 x3855 x3856 x3857 x3858 x3789 x3859 x3866 x3865 x3864 (not x3863) x80 x79 (not x3881) (not x3882) x3933 (not x3934))
+(or x3874 (not x3853))
+(or x3874 (not x3854))
+(or x3874 (not x3855))
+(or x3874 (not x3856))
+(or x3874 (not x3857))
+(or x3874 (not x3858))
+(or x3874 (not x3789))
+(or x3874 (not x3866))
+(or x3874 (not x3865))
+(or x3874 (not x3864))
+(or x3874 x3863)
+(or x3874 (not x80))
+(or x3874 x79)
+(or x3853 x3854 x3855 x3856 x3857 x3858 x3789 x3866 x3865 x3864 (not x3863) x80 (not x79) (not x3874))
+(or x3935 x3887)
+(or x3935 (not x3888))
+(or (not x3887) x3888 (not x3935))
+(or (not x3935) (not x3887) x3936)
+(or (not x3936) x3935)
+(or (not x3936) x3887)
+(or x3873 (not x3853))
+(or x3873 (not x3854))
+(or x3873 (not x3855))
+(or x3873 (not x3856))
+(or x3873 (not x3857))
+(or x3873 (not x3858))
+(or x3873 (not x3866))
+(or x3873 (not x3865))
+(or x3873 x3864)
+(or x3873 x3863)
+(or x3853 x3854 x3855 x3856 x3857 x3858 x3866 x3865 (not x3864) (not x3863) (not x3873))
+(or x3937 (not x3853))
+(or x3937 (not x3854))
+(or x3937 (not x3855))
+(or x3937 (not x3856))
+(or x3937 (not x3857))
+(or x3937 (not x3858))
+(or x3937 (not x3866))
+(or x3937 (not x3865))
+(or x3937 x3864)
+(or x3937 x3863)
+(or x3937 x3886)
+(or x3937 (not x3936))
+(or x3853 x3854 x3855 x3856 x3857 x3858 x3866 x3865 (not x3864) (not x3863) (not x3886) x3936 (not x3937))
+(or x3866 x3865 (not x3864) x3863 (not x3938) x3857)
+(or (not x3857) (not x3866))
+(or (not x3857) (not x3865))
+(or (not x3857) x3864)
+(or (not x3857) (not x3863))
+(or (not x3857) x3938)
+(or x3872 (not x3853))
+(or x3872 (not x3854))
+(or x3872 (not x3855))
+(or x3872 (not x3856))
+(or x3872 (not x3857))
+(or x3872 (not x3866))
+(or x3872 (not x3865))
+(or x3872 x3864)
+(or x3872 (not x3863))
+(or x3853 x3854 x3855 x3856 x3857 x3866 x3865 (not x3864) x3863 (not x3872))
+(or x3939 x3891)
+(or x3939 x3892)
+(or x3939 x3920)
+(or x3939 x3940)
+(or (not x3891) (not x3892) (not x3920) (not x3940) (not x3939))
+(or (not x3939) (not x3891) x3941)
+(or (not x3941) x3939)
+(or (not x3941) x3891)
+(or x3866 x3865 (not x3864) x3863 (not x79) (not x80) x3856)
+(or (not x3856) (not x3866))
+(or (not x3856) (not x3865))
+(or (not x3856) x3864)
+(or (not x3856) (not x3863))
+(or (not x3856) x79)
+(or (not x3856) x80)
+(or x3871 (not x3853))
+(or x3871 (not x3854))
+(or x3871 (not x3855))
+(or x3871 (not x3856))
+(or x3871 (not x3866))
+(or x3871 (not x3865))
+(or x3871 x3864)
+(or x3871 (not x3863))
+(or x3871 (not x3890))
+(or x3853 x3854 x3855 x3856 x3866 x3865 (not x3864) x3863 x3890 (not x3871))
+(or x3942 (not x3853))
+(or x3942 (not x3854))
+(or x3942 (not x3855))
+(or x3942 (not x3856))
+(or x3942 (not x3866))
+(or x3942 (not x3865))
+(or x3942 x3864)
+(or x3942 (not x3863))
+(or x3942 (not x3890))
+(or x3942 (not x3941))
+(or x3853 x3854 x3855 x3856 x3866 x3865 (not x3864) x3863 x3890 x3941 (not x3942))
+(or x3870 (not x3853))
+(or x3870 (not x3854))
+(or x3870 (not x3855))
+(or x3870 (not x3866))
+(or x3870 (not x3865))
+(or x3870 x3864)
+(or x3870 (not x3863))
+(or x3870 x79)
+(or x3870 x80)
+(or x3853 x3854 x3855 x3866 x3865 (not x3864) x3863 (not x79) (not x80) (not x3870))
+(or x3866 x3865 x3864 x3863 x79 (not x3564) (not x3563) (not x3938) (not x3943) (not x3944) x3854)
+(or (not x3854) (not x3866))
+(or (not x3854) (not x3865))
+(or (not x3854) (not x3864))
+(or (not x3854) (not x3863))
+(or (not x3854) (not x79))
+(or (not x3854) x3564)
+(or (not x3854) x3563)
+(or (not x3854) x3938)
+(or (not x3854) x3943)
+(or (not x3854) x3944)
+(or x3869 (not x3853))
+(or x3869 (not x3854))
+(or x3869 (not x3866))
+(or x3869 (not x3865))
+(or x3869 (not x3864))
+(or x3869 (not x3863))
+(or x3869 (not x79))
+(or x3869 x3564)
+(or x3869 x3563)
+(or x3853 x3854 x3866 x3865 x3864 x3863 x79 (not x3564) (not x3563) (not x3869))
+(or (not x3825) (not x3824) x3823)
+(or (not x3823) x3825)
+(or (not x3823) x3824)
+(or (not x3825) x3824 x3822)
+(or (not x3822) x3825)
+(or (not x3822) (not x3824))
+(or x3825 (not x3824) x3821)
+(or (not x3821) (not x3825))
+(or (not x3821) x3824)
+(or x3825 x3824 (not x78) x79 x3945)
+(or (not x3945) (not x3825))
+(or (not x3945) (not x3824))
+(or (not x3945) x78)
+(or (not x3945) (not x79))
+(or x3938 (not x3945))
+(or x3938 (not x3821))
+(or x3938 (not x3822))
+(or x3938 (not x3823))
+(or x3945 x3821 x3822 x3823 (not x3938))
+(or x3866 x3865 x3864 x3863 x79 (not x3564) (not x3563) x3855)
+(or (not x3855) (not x3866))
+(or (not x3855) (not x3865))
+(or (not x3855) (not x3864))
+(or (not x3855) (not x3863))
+(or (not x3855) (not x79))
+(or (not x3855) x3564)
+(or (not x3855) x3563)
+(or x3866 x3865 x3864 x3863 x79 (not x3564) (not x3563) (not x3938) (not x3946) x3853)
+(or (not x3853) (not x3866))
+(or (not x3853) (not x3865))
+(or (not x3853) (not x3864))
+(or (not x3853) (not x3863))
+(or (not x3853) (not x79))
+(or (not x3853) x3564)
+(or (not x3853) x3563)
+(or (not x3853) x3938)
+(or (not x3853) x3946)
+(or x3868 (not x3853))
+(or x3868 (not x3866))
+(or x3868 (not x3865))
+(or x3868 (not x3864))
+(or x3868 (not x3863))
+(or x3868 (not x79))
+(or x3868 x3564)
+(or x3868 x3563)
+(or x3868 (not x3890))
+(or x3868 (not x3894))
+(or x3868 (not x3895))
+(or x3853 x3866 x3865 x3864 x3863 x79 (not x3564) (not x3563) x3890 x3894 x3895 (not x3868))
+(or x3947 (not x3853))
+(or x3947 (not x3866))
+(or x3947 (not x3865))
+(or x3947 (not x3864))
+(or x3947 (not x3863))
+(or x3947 (not x79))
+(or x3947 x3564)
+(or x3947 x3563)
+(or x3947 (not x3890))
+(or x3947 (not x3894))
+(or x3947 (not x3895))
+(or x3947 x3896)
+(or x3947 x3948)
+(or x3853 x3866 x3865 x3864 x3863 x79 (not x3564) (not x3563) x3890 x3894 x3895 (not x3896) (not x3948) (not x3947))
+(or x3949 x3899)
+(or x3949 x3900)
+(or (not x3899) (not x3900) (not x3949))
+(or (not x3949) (not x3899) x3950)
+(or (not x3950) x3949)
+(or (not x3950) x3899)
+(or x3951 x3825)
+(or x3951 x3824)
+(or (not x3825) (not x3824) (not x3951))
+(or x3952 x3825)
+(or x3952 (not x3824))
+(or (not x3825) x3824 (not x3952))
+(or x3953 (not x3825))
+(or x3953 x3824)
+(or x3825 (not x3824) (not x3953))
+(or x3954 (not x3825))
+(or x3954 (not x3824))
+(or x3954 x78)
+(or x3954 (not x79))
+(or x3825 x3824 (not x78) x79 (not x3954))
+(or (not x3954) (not x3953) (not x3952) (not x3951) x3890)
+(or (not x3890) x3954)
+(or (not x3890) x3953)
+(or (not x3890) x3952)
+(or (not x3890) x3951)
+(or x3867 (not x3866))
+(or x3867 (not x3865))
+(or x3867 (not x3864))
+(or x3867 (not x3863))
+(or x3867 (not x79))
+(or x3867 x3564)
+(or x3867 x3563)
+(or x3867 (not x3890))
+(or x3867 (not x3906))
+(or x3866 x3865 x3864 x3863 x79 (not x3564) (not x3563) x3890 x3906 (not x3867))
+(or x3955 (not x3866))
+(or x3955 (not x3865))
+(or x3955 (not x3864))
+(or x3955 (not x3863))
+(or x3955 (not x79))
+(or x3955 x3564)
+(or x3955 x3563)
+(or x3955 (not x3890))
+(or x3955 (not x3906))
+(or x3955 x3903)
+(or x3955 x3898)
+(or x3955 (not x3950))
+(or x3866 x3865 x3864 x3863 x79 (not x3564) (not x3563) x3890 x3906 (not x3903) (not x3898) x3950 (not x3955))
+(or (not x3955) (not x3947) (not x3869) (not x3870) (not x3942) (not x3872) (not x3937) (not x3874) (not x3934) (not x3877) (not x3929) x3956)
+(or (not x3956) x3955)
+(or (not x3956) x3947)
+(or (not x3956) x3869)
+(or (not x3956) x3870)
+(or (not x3956) x3942)
+(or (not x3956) x3872)
+(or (not x3956) x3937)
+(or (not x3956) x3874)
+(or (not x3956) x3934)
+(or (not x3956) x3877)
+(or (not x3956) x3929)
+(or x3957 (not x3958))
+(or x3957 (not x3959))
+(or x3957 (not x3960))
+(or x3957 (not x3961))
+(or x3957 (not x3962))
+(or x3957 (not x3963))
+(or x3957 (not x3787))
+(or x3957 (not x3964))
+(or x3957 (not x3965))
+(or x3957 (not x3966))
+(or x3957 (not x3967))
+(or x3957 (not x3971))
+(or x3958 x3959 x3960 x3961 x3962 x3963 x3787 x3964 x3965 x3966 x3967 x3971 (not x3957))
+(or (not x3972) (not x3973) (not x3974) (not x3975) (not x3976) (not x3977) (not x3978) (not x3979) (not x3980) (not x3981) (not x3982) (not x3957) x3983)
+(or (not x3983) x3972)
+(or (not x3983) x3973)
+(or (not x3983) x3974)
+(or (not x3983) x3975)
+(or (not x3983) x3976)
+(or (not x3983) x3977)
+(or (not x3983) x3978)
+(or (not x3983) x3979)
+(or (not x3983) x3980)
+(or (not x3983) x3981)
+(or (not x3983) x3982)
+(or (not x3983) x3957)
+(or x3984 (not x3958))
+(or x3984 (not x3959))
+(or x3984 (not x3960))
+(or x3984 (not x3961))
+(or x3984 (not x3962))
+(or x3984 (not x3963))
+(or x3984 (not x3787))
+(or x3984 (not x3964))
+(or x3984 (not x3965))
+(or x3984 (not x3966))
+(or x3984 (not x3967))
+(or x3984 (not x3970))
+(or x3958 x3959 x3960 x3961 x3962 x3963 x3787 x3964 x3965 x3966 x3967 x3970 (not x3984))
+(or x3985 x3986)
+(or x3985 (not x3987))
+(or (not x3986) x3987 (not x3985))
+(or (not x3985) (not x3986) x3988)
+(or (not x3988) x3985)
+(or (not x3988) x3986)
+(or x3989 (not x3958))
+(or x3989 (not x3959))
+(or x3989 (not x3960))
+(or x3989 (not x3961))
+(or x3989 (not x3962))
+(or x3989 (not x3963))
+(or x3989 (not x3787))
+(or x3989 (not x3964))
+(or x3989 (not x3971))
+(or x3989 (not x3970))
+(or x3989 (not x3969))
+(or x3989 x3968)
+(or x3989 (not x80))
+(or x3989 (not x79))
+(or x3989 (not x3988))
+(or x3958 x3959 x3960 x3961 x3962 x3963 x3787 x3964 x3971 x3970 x3969 (not x3968) x80 x79 x3988 (not x3989))
+(or x3990 (not x3958))
+(or x3990 (not x3959))
+(or x3990 (not x3960))
+(or x3990 (not x3961))
+(or x3990 (not x3962))
+(or x3990 (not x3963))
+(or x3990 (not x3971))
+(or x3990 (not x3970))
+(or x3990 x3969)
+(or x3990 x3968)
+(or x3990 x3991)
+(or x3990 x3992)
+(or x3990 x3993)
+(or x3958 x3959 x3960 x3961 x3962 x3963 x3971 x3970 (not x3969) (not x3968) (not x3991) (not x3992) (not x3993) (not x3990))
+(or x3994 (not x3958))
+(or x3994 (not x3959))
+(or x3994 (not x3960))
+(or x3994 (not x3961))
+(or x3994 (not x3971))
+(or x3994 (not x3970))
+(or x3994 x3969)
+(or x3994 (not x3968))
+(or x3994 (not x3995))
+(or x3994 x3996)
+(or x3994 x3997)
+(or x3958 x3959 x3960 x3961 x3971 x3970 (not x3969) x3968 x3995 (not x3996) (not x3997) (not x3994))
+(or x3998 (not x3958))
+(or x3998 (not x3971))
+(or x3998 (not x3970))
+(or x3998 (not x3969))
+(or x3998 (not x3968))
+(or x3998 (not x79))
+(or x3998 x3564)
+(or x3998 x3563)
+(or x3998 (not x3995))
+(or x3998 (not x3894))
+(or x3998 (not x3895))
+(or x3998 x3999)
+(or x3958 x3971 x3970 x3969 x3968 x79 (not x3564) (not x3563) x3995 x3894 x3895 (not x3999) (not x3998))
+(or x4000 x4001)
+(or x4000 x4002)
+(or x4000 x4003)
+(or (not x4001) (not x4002) (not x4003) (not x4000))
+(or (not x4000) (not x4001) x4004)
+(or (not x4004) x4000)
+(or (not x4004) x4001)
+(or x4005 x4006)
+(or x4005 (not x4004))
+(or (not x4006) x4004 (not x4005))
+(or (not x4005) (not x4006) x4007)
+(or (not x4007) x4005)
+(or (not x4007) x4006)
+(or x4008 (not x3971))
+(or x4008 (not x3970))
+(or x4008 (not x3969))
+(or x4008 (not x3968))
+(or x4008 (not x79))
+(or x4008 x3564)
+(or x4008 x3563)
+(or x4008 (not x3995))
+(or x4008 (not x3906))
+(or x4008 (not x4007))
+(or x3971 x3970 x3969 x3968 x79 (not x3564) (not x3563) x3995 x3906 x4007 (not x4008))
+(or (not x4008) (not x3998) (not x3974) (not x3975) (not x3994) (not x3977) (not x3990) (not x3979) (not x3989) (not x3982) (not x3984) x4009)
+(or (not x4009) x4008)
+(or (not x4009) x3998)
+(or (not x4009) x3974)
+(or (not x4009) x3975)
+(or (not x4009) x3994)
+(or (not x4009) x3977)
+(or (not x4009) x3990)
+(or (not x4009) x3979)
+(or (not x4009) x3989)
+(or (not x4009) x3982)
+(or (not x4009) x3984)
+(or x4010 (not x3958))
+(or x4010 (not x3959))
+(or x4010 (not x3960))
+(or x4010 (not x3961))
+(or x4010 (not x3962))
+(or x4010 (not x3963))
+(or x4010 (not x3787))
+(or x4010 (not x3964))
+(or x4010 (not x3965))
+(or x4010 (not x3966))
+(or x4010 (not x3967))
+(or x4010 (not x3969))
+(or x3958 x3959 x3960 x3961 x3962 x3963 x3787 x3964 x3965 x3966 x3967 x3969 (not x4010))
+(or x3981 (not x3958))
+(or x3981 (not x3959))
+(or x3981 (not x3960))
+(or x3981 (not x3961))
+(or x3981 (not x3962))
+(or x3981 (not x3963))
+(or x3981 (not x3787))
+(or x3981 (not x3964))
+(or x3981 (not x3965))
+(or x3981 (not x3971))
+(or x3981 x3970)
+(or x3981 x3969)
+(or x3981 (not x3968))
+(or x3981 (not x80))
+(or x3981 (not x79))
+(or x3958 x3959 x3960 x3961 x3962 x3963 x3787 x3964 x3965 x3971 (not x3970) (not x3969) x3968 x80 x79 (not x3981))
+(or x4011 x3987)
+(or x4011 x4012)
+(or (not x3987) (not x4012) (not x4011))
+(or (not x4011) (not x3987) x4013)
+(or (not x4013) x4011)
+(or (not x4013) x3987)
+(or x4014 (not x3958))
+(or x4014 (not x3959))
+(or x4014 (not x3960))
+(or x4014 (not x3961))
+(or x4014 (not x3962))
+(or x4014 (not x3963))
+(or x4014 (not x3787))
+(or x4014 (not x3964))
+(or x4014 (not x3971))
+(or x4014 (not x3970))
+(or x4014 (not x3969))
+(or x4014 x3968)
+(or x4014 (not x80))
+(or x4014 (not x79))
+(or x4014 x3986)
+(or x4014 (not x4013))
+(or x3958 x3959 x3960 x3961 x3962 x3963 x3787 x3964 x3971 x3970 x3969 (not x3968) x80 x79 (not x3986) x4013 (not x4014))
+(or x4015 x3993)
+(or x4015 (not x4016))
+(or (not x3993) x4016 (not x4015))
+(or (not x4015) (not x3993) x4017)
+(or (not x4017) x4015)
+(or (not x4017) x3993)
+(or x4018 x3991)
+(or x4018 x3992)
+(or x4018 (not x4017))
+(or (not x3991) (not x3992) x4017 (not x4018))
+(or (not x4018) (not x3991) x4019)
+(or (not x4019) x4018)
+(or (not x4019) x3991)
+(or x4020 (not x3958))
+(or x4020 (not x3959))
+(or x4020 (not x3960))
+(or x4020 (not x3961))
+(or x4020 (not x3962))
+(or x4020 (not x3963))
+(or x4020 (not x3971))
+(or x4020 (not x3970))
+(or x4020 x3969)
+(or x4020 x3968)
+(or x4020 (not x4019))
+(or x3958 x3959 x3960 x3961 x3962 x3963 x3971 x3970 (not x3969) (not x3968) x4019 (not x4020))
+(or x4021 x3997)
+(or x4021 (not x4022))
+(or (not x3997) x4022 (not x4021))
+(or (not x4021) (not x3997) x4023)
+(or (not x4023) x4021)
+(or (not x4023) x3997)
+(or x4024 (not x3958))
+(or x4024 (not x3959))
+(or x4024 (not x3960))
+(or x4024 (not x3961))
+(or x4024 (not x3971))
+(or x4024 (not x3970))
+(or x4024 x3969)
+(or x4024 (not x3968))
+(or x4024 (not x3995))
+(or x4024 x3996)
+(or x4024 (not x4023))
+(or x3958 x3959 x3960 x3961 x3971 x3970 (not x3969) x3968 x3995 (not x3996) x4023 (not x4024))
+(or x4025 (not x3958))
+(or x4025 (not x3971))
+(or x4025 (not x3970))
+(or x4025 (not x3969))
+(or x4025 (not x3968))
+(or x4025 (not x79))
+(or x4025 x3564)
+(or x4025 x3563)
+(or x4025 (not x3995))
+(or x4025 (not x3894))
+(or x4025 (not x3895))
+(or x4025 (not x3999))
+(or x3958 x3971 x3970 x3969 x3968 x79 (not x3564) (not x3563) x3995 x3894 x3895 x3999 (not x4025))
+(or x4026 x4006)
+(or x4026 x4001)
+(or x4026 x4002)
+(or x4026 (not x4003))
+(or (not x4006) (not x4001) (not x4002) x4003 (not x4026))
+(or (not x4026) (not x4006) x4027)
+(or (not x4027) x4026)
+(or (not x4027) x4006)
+(or x4028 (not x3971))
+(or x4028 (not x3970))
+(or x4028 (not x3969))
+(or x4028 (not x3968))
+(or x4028 (not x79))
+(or x4028 x3564)
+(or x4028 x3563)
+(or x4028 (not x3995))
+(or x4028 (not x3906))
+(or x4028 (not x4027))
+(or x3971 x3970 x3969 x3968 x79 (not x3564) (not x3563) x3995 x3906 x4027 (not x4028))
+(or (not x4028) (not x4025) (not x3975) (not x4024) (not x4020) (not x3979) (not x4014) (not x3981) (not x3982) (not x4010) x4029)
+(or (not x4029) x4028)
+(or (not x4029) x4025)
+(or (not x4029) x3975)
+(or (not x4029) x4024)
+(or (not x4029) x4020)
+(or (not x4029) x3979)
+(or (not x4029) x4014)
+(or (not x4029) x3981)
+(or (not x4029) x3982)
+(or (not x4029) x4010)
+(or x4030 (not x3767))
+(or x4030 (not x3769))
+(or x4030 (not x3768))
+(or x3767 x3769 x3768 (not x4030))
+(or (not x4030) (not x79) x3967)
+(or (not x3967) x4030)
+(or (not x3967) x79)
+(or x4031 (not x3958))
+(or x4031 (not x3959))
+(or x4031 (not x3960))
+(or x4031 (not x3961))
+(or x4031 (not x3962))
+(or x4031 (not x3963))
+(or x4031 (not x3787))
+(or x4031 (not x3964))
+(or x4031 (not x3965))
+(or x4031 (not x3966))
+(or x4031 (not x3967))
+(or x4031 (not x3968))
+(or x3958 x3959 x3960 x3961 x3962 x3963 x3787 x3964 x3965 x3966 x3967 x3968 (not x4031))
+(or x3752 (not x3971))
+(or x3752 x3970)
+(or x3752 (not x3969))
+(or x3752 (not x3968))
+(or x3971 (not x3970) x3969 x3968 (not x3752))
+(or (not x3752) (not x3753) (not x3717) x4032)
+(or (not x4032) x3752)
+(or (not x4032) x3753)
+(or (not x4032) x3717)
+(or x3971 (not x3970) (not x3969) x3968 x80 x79 x3966)
+(or (not x3966) (not x3971))
+(or (not x3966) x3970)
+(or (not x3966) x3969)
+(or (not x3966) (not x3968))
+(or (not x3966) (not x80))
+(or (not x3966) (not x79))
+(or x3971 x3970 x3969 (not x3968) x80 x79 x3965)
+(or (not x3965) (not x3971))
+(or (not x3965) (not x3970))
+(or (not x3965) (not x3969))
+(or (not x3965) x3968)
+(or (not x3965) (not x80))
+(or (not x3965) (not x79))
+(or x3982 (not x3958))
+(or x3982 (not x3959))
+(or x3982 (not x3960))
+(or x3982 (not x3961))
+(or x3982 (not x3962))
+(or x3982 (not x3963))
+(or x3982 (not x3787))
+(or x3982 (not x3964))
+(or x3982 (not x3965))
+(or x3982 (not x3966))
+(or x3982 (not x4032))
+(or x3982 x79)
+(or x3958 x3959 x3960 x3961 x3962 x3963 x3787 x3964 x3965 x3966 x4032 (not x79) (not x3982))
+(or x4033 x4012)
+(or x4033 x4034)
+(or (not x4012) (not x4034) (not x4033))
+(or (not x4033) (not x4012) x4035)
+(or (not x4035) x4033)
+(or (not x4035) x4012)
+(or x3971 x3970 x3969 (not x3968) x80 (not x79) x3964)
+(or (not x3964) (not x3971))
+(or (not x3964) (not x3970))
+(or (not x3964) (not x3969))
+(or (not x3964) x3968)
+(or (not x3964) (not x80))
+(or (not x3964) x79)
+(or x3980 (not x3958))
+(or x3980 (not x3959))
+(or x3980 (not x3960))
+(or x3980 (not x3961))
+(or x3980 (not x3962))
+(or x3980 (not x3963))
+(or x3980 (not x3787))
+(or x3980 (not x3964))
+(or x3980 (not x3971))
+(or x3980 (not x3970))
+(or x3980 (not x3969))
+(or x3980 x3968)
+(or x3980 (not x80))
+(or x3980 (not x79))
+(or x3958 x3959 x3960 x3961 x3962 x3963 x3787 x3964 x3971 x3970 x3969 (not x3968) x80 x79 (not x3980))
+(or x4036 (not x3958))
+(or x4036 (not x3959))
+(or x4036 (not x3960))
+(or x4036 (not x3961))
+(or x4036 (not x3962))
+(or x4036 (not x3963))
+(or x4036 (not x3787))
+(or x4036 (not x3964))
+(or x4036 (not x3971))
+(or x4036 (not x3970))
+(or x4036 (not x3969))
+(or x4036 x3968)
+(or x4036 (not x80))
+(or x4036 (not x79))
+(or x4036 x3986)
+(or x4036 x3987)
+(or x4036 (not x4035))
+(or x3958 x3959 x3960 x3961 x3962 x3963 x3787 x3964 x3971 x3970 x3969 (not x3968) x80 x79 (not x3986) (not x3987) x4035 (not x4036))
+(or x3979 (not x3958))
+(or x3979 (not x3959))
+(or x3979 (not x3960))
+(or x3979 (not x3961))
+(or x3979 (not x3962))
+(or x3979 (not x3963))
+(or x3979 (not x3787))
+(or x3979 (not x3971))
+(or x3979 (not x3970))
+(or x3979 (not x3969))
+(or x3979 x3968)
+(or x3979 (not x80))
+(or x3979 x79)
+(or x3958 x3959 x3960 x3961 x3962 x3963 x3787 x3971 x3970 x3969 (not x3968) x80 (not x79) (not x3979))
+(or x4037 x3992)
+(or x4037 (not x3993))
+(or (not x3992) x3993 (not x4037))
+(or (not x4037) (not x3992) x4038)
+(or (not x4038) x4037)
+(or (not x4038) x3992)
+(or x3978 (not x3958))
+(or x3978 (not x3959))
+(or x3978 (not x3960))
+(or x3978 (not x3961))
+(or x3978 (not x3962))
+(or x3978 (not x3963))
+(or x3978 (not x3971))
+(or x3978 (not x3970))
+(or x3978 x3969)
+(or x3978 x3968)
+(or x3958 x3959 x3960 x3961 x3962 x3963 x3971 x3970 (not x3969) (not x3968) (not x3978))
+(or x4039 (not x3958))
+(or x4039 (not x3959))
+(or x4039 (not x3960))
+(or x4039 (not x3961))
+(or x4039 (not x3962))
+(or x4039 (not x3963))
+(or x4039 (not x3971))
+(or x4039 (not x3970))
+(or x4039 x3969)
+(or x4039 x3968)
+(or x4039 x3991)
+(or x4039 (not x4038))
+(or x3958 x3959 x3960 x3961 x3962 x3963 x3971 x3970 (not x3969) (not x3968) (not x3991) x4038 (not x4039))
+(or x3971 x3970 (not x3969) x3968 (not x4040) x3962)
+(or (not x3962) (not x3971))
+(or (not x3962) (not x3970))
+(or (not x3962) x3969)
+(or (not x3962) (not x3968))
+(or (not x3962) x4040)
+(or x3977 (not x3958))
+(or x3977 (not x3959))
+(or x3977 (not x3960))
+(or x3977 (not x3961))
+(or x3977 (not x3962))
+(or x3977 (not x3971))
+(or x3977 (not x3970))
+(or x3977 x3969)
+(or x3977 (not x3968))
+(or x3958 x3959 x3960 x3961 x3962 x3971 x3970 (not x3969) x3968 (not x3977))
+(or x4041 x3996)
+(or x4041 x3997)
+(or x4041 x4022)
+(or x4041 x4042)
+(or (not x3996) (not x3997) (not x4022) (not x4042) (not x4041))
+(or (not x4041) (not x3996) x4043)
+(or (not x4043) x4041)
+(or (not x4043) x3996)
+(or x3971 x3970 (not x3969) x3968 (not x79) (not x80) x3961)
+(or (not x3961) (not x3971))
+(or (not x3961) (not x3970))
+(or (not x3961) x3969)
+(or (not x3961) (not x3968))
+(or (not x3961) x79)
+(or (not x3961) x80)
+(or x3976 (not x3958))
+(or x3976 (not x3959))
+(or x3976 (not x3960))
+(or x3976 (not x3961))
+(or x3976 (not x3971))
+(or x3976 (not x3970))
+(or x3976 x3969)
+(or x3976 (not x3968))
+(or x3976 (not x3995))
+(or x3958 x3959 x3960 x3961 x3971 x3970 (not x3969) x3968 x3995 (not x3976))
+(or x4044 (not x3958))
+(or x4044 (not x3959))
+(or x4044 (not x3960))
+(or x4044 (not x3961))
+(or x4044 (not x3971))
+(or x4044 (not x3970))
+(or x4044 x3969)
+(or x4044 (not x3968))
+(or x4044 (not x3995))
+(or x4044 (not x4043))
+(or x3958 x3959 x3960 x3961 x3971 x3970 (not x3969) x3968 x3995 x4043 (not x4044))
+(or x3975 (not x3958))
+(or x3975 (not x3959))
+(or x3975 (not x3960))
+(or x3975 (not x3971))
+(or x3975 (not x3970))
+(or x3975 x3969)
+(or x3975 (not x3968))
+(or x3975 x79)
+(or x3975 x80)
+(or x3958 x3959 x3960 x3971 x3970 (not x3969) x3968 (not x79) (not x80) (not x3975))
+(or x3971 x3970 x3969 x3968 x79 (not x3564) (not x3563) (not x4040) (not x3943) (not x3944) x3959)
+(or (not x3959) (not x3971))
+(or (not x3959) (not x3970))
+(or (not x3959) (not x3969))
+(or (not x3959) (not x3968))
+(or (not x3959) (not x79))
+(or (not x3959) x3564)
+(or (not x3959) x3563)
+(or (not x3959) x4040)
+(or (not x3959) x3943)
+(or (not x3959) x3944)
+(or x3974 (not x3958))
+(or x3974 (not x3959))
+(or x3974 (not x3971))
+(or x3974 (not x3970))
+(or x3974 (not x3969))
+(or x3974 (not x3968))
+(or x3974 (not x79))
+(or x3974 x3564)
+(or x3974 x3563)
+(or x3958 x3959 x3971 x3970 x3969 x3968 x79 (not x3564) (not x3563) (not x3974))
+(or (not x3734) (not x3776) x3895)
+(or (not x3895) x3734)
+(or (not x3895) x3776)
+(or (not x3671) (not x3672) (not x3781) x3894)
+(or (not x3894) x3671)
+(or (not x3894) x3672)
+(or (not x3894) x3781)
+(or x3946 (not x3894))
+(or x3946 (not x3895))
+(or x3894 x3895 (not x3946))
+(or (not x3838) (not x3837) x3836)
+(or (not x3836) x3838)
+(or (not x3836) x3837)
+(or (not x3838) x3837 x3835)
+(or (not x3835) x3838)
+(or (not x3835) (not x3837))
+(or x3838 (not x3837) x3834)
+(or (not x3834) (not x3838))
+(or (not x3834) x3837)
+(or (not x78) x79 x3548)
+(or (not x3548) x78)
+(or (not x3548) (not x79))
+(or x3838 x3837 (not x78) x79 x4045)
+(or (not x4045) (not x3838))
+(or (not x4045) (not x3837))
+(or (not x4045) x78)
+(or (not x4045) (not x79))
+(or x4040 (not x4045))
+(or x4040 (not x3834))
+(or x4040 (not x3835))
+(or x4040 (not x3836))
+(or x4045 x3834 x3835 x3836 (not x4040))
+(or x3971 x3970 x3969 x3968 x79 (not x3564) (not x3563) x3960)
+(or (not x3960) (not x3971))
+(or (not x3960) (not x3970))
+(or (not x3960) (not x3969))
+(or (not x3960) (not x3968))
+(or (not x3960) (not x79))
+(or (not x3960) x3564)
+(or (not x3960) x3563)
+(or x3971 x3970 x3969 x3968 x79 (not x3564) (not x3563) (not x4040) (not x3946) x3958)
+(or (not x3958) (not x3971))
+(or (not x3958) (not x3970))
+(or (not x3958) (not x3969))
+(or (not x3958) (not x3968))
+(or (not x3958) (not x79))
+(or (not x3958) x3564)
+(or (not x3958) x3563)
+(or (not x3958) x4040)
+(or (not x3958) x3946)
+(or x3973 (not x3958))
+(or x3973 (not x3971))
+(or x3973 (not x3970))
+(or x3973 (not x3969))
+(or x3973 (not x3968))
+(or x3973 (not x79))
+(or x3973 x3564)
+(or x3973 x3563)
+(or x3973 (not x3995))
+(or x3973 (not x3894))
+(or x3973 (not x3895))
+(or x3958 x3971 x3970 x3969 x3968 x79 (not x3564) (not x3563) x3995 x3894 x3895 (not x3973))
+(or x4046 (not x3958))
+(or x4046 (not x3971))
+(or x4046 (not x3970))
+(or x4046 (not x3969))
+(or x4046 (not x3968))
+(or x4046 (not x79))
+(or x4046 x3564)
+(or x4046 x3563)
+(or x4046 (not x3995))
+(or x4046 (not x3894))
+(or x4046 (not x3895))
+(or x4046 x3999)
+(or x4046 x4047)
+(or x3958 x3971 x3970 x3969 x3968 x79 (not x3564) (not x3563) x3995 x3894 x3895 (not x3999) (not x4047) (not x4046))
+(or x4048 x4002)
+(or x4048 x4003)
+(or (not x4002) (not x4003) (not x4048))
+(or (not x4048) (not x4002) x4049)
+(or (not x4049) x4048)
+(or (not x4049) x4002)
+(or x3684 (not x3670))
+(or x3684 (not x3614))
+(or x3670 x3614 (not x3684))
+(or x3672 (not x3713))
+(or x3672 x3694)
+(or x3672 (not x3695))
+(or x3672 (not x3696))
+(or x3672 (not x3697))
+(or x3672 (not x3699))
+(or x3672 (not x3646))
+(or x3672 (not x3700))
+(or x3672 (not x3701))
+(or x3672 (not x3607))
+(or x3672 (not x3702))
+(or x3672 (not x3670))
+(or x3672 (not x3614))
+(or x3713 (not x3694) x3695 x3696 x3697 x3699 x3646 x3700 x3701 x3607 x3702 x3670 x3614 (not x3672))
+(or x3797 (not x3694))
+(or x3797 (not x3695))
+(or x3694 x3695 (not x3797))
+(or x3795 (not x3694))
+(or x3795 (not x3695))
+(or x3795 (not x3696))
+(or x3795 (not x3697))
+(or x3694 x3695 x3696 x3697 (not x3795))
+(or x3807 (not x3700))
+(or x3807 (not x3701))
+(or x3700 x3701 (not x3807))
+(or x3803 (not x3670))
+(or x3803 (not x3700))
+(or x3803 (not x3701))
+(or x3670 x3700 x3701 (not x3803))
+(or x3808 (not x3614))
+(or x3808 (not x3670))
+(or x3808 (not x3700))
+(or x3808 (not x3701))
+(or x3614 x3670 x3700 x3701 (not x3808))
+(or x3802 (not x3699))
+(or x3802 (not x3614))
+(or x3802 (not x3670))
+(or x3802 (not x3700))
+(or x3802 (not x3701))
+(or x3699 x3614 x3670 x3700 x3701 (not x3802))
+(or x3671 (not x3699))
+(or x3671 (not x3614))
+(or x3671 (not x3670))
+(or x3671 (not x3700))
+(or x3671 (not x3701))
+(or x3671 (not x3713))
+(or x3671 (not x3607))
+(or x3671 x3702)
+(or x3671 (not x3646))
+(or x3671 (not x3694))
+(or x3671 (not x3695))
+(or x3671 (not x3696))
+(or x3671 (not x3697))
+(or x3699 x3614 x3670 x3700 x3701 x3713 x3607 (not x3702) x3646 x3694 x3695 x3696 x3697 (not x3671))
+(or (not x3671) (not x3672) x4050)
+(or (not x4050) x3671)
+(or (not x4050) x3672)
+(or x3944 (not x4050))
+(or x3944 x3776)
+(or x4050 (not x3776) (not x3944))
+(or x3670 x3614 x3679)
+(or (not x3679) (not x3670))
+(or (not x3679) (not x3614))
+(or x3713 (not x3694) x3695 x3696 x3697 x3699 x3646 x3700 x3701 x3607 x3702 x3670 x3614 x3663)
+(or (not x3663) (not x3713))
+(or (not x3663) x3694)
+(or (not x3663) (not x3695))
+(or (not x3663) (not x3696))
+(or (not x3663) (not x3697))
+(or (not x3663) (not x3699))
+(or (not x3663) (not x3646))
+(or (not x3663) (not x3700))
+(or (not x3663) (not x3701))
+(or (not x3663) (not x3607))
+(or (not x3663) (not x3702))
+(or (not x3663) (not x3670))
+(or (not x3663) (not x3614))
+(or x3694 x3695 x3739)
+(or (not x3739) (not x3694))
+(or (not x3739) (not x3695))
+(or x3694 x3695 x3696 x3697 x3736)
+(or (not x3736) (not x3694))
+(or (not x3736) (not x3695))
+(or (not x3736) (not x3696))
+(or (not x3736) (not x3697))
+(or x3700 x3701 x3750)
+(or (not x3750) (not x3700))
+(or (not x3750) (not x3701))
+(or x3670 x3700 x3701 x3744)
+(or (not x3744) (not x3670))
+(or (not x3744) (not x3700))
+(or (not x3744) (not x3701))
+(or x3614 x3670 x3700 x3701 x3751)
+(or (not x3751) (not x3614))
+(or (not x3751) (not x3670))
+(or (not x3751) (not x3700))
+(or (not x3751) (not x3701))
+(or x3699 x3614 x3670 x3700 x3701 x3743)
+(or (not x3743) (not x3699))
+(or (not x3743) (not x3614))
+(or (not x3743) (not x3670))
+(or (not x3743) (not x3700))
+(or (not x3743) (not x3701))
+(or x3699 x3614 x3670 x3700 x3701 x3713 x3607 (not x3702) x3646 x3694 x3695 x3696 x3697 x3662)
+(or (not x3662) (not x3699))
+(or (not x3662) (not x3614))
+(or (not x3662) (not x3670))
+(or (not x3662) (not x3700))
+(or (not x3662) (not x3701))
+(or (not x3662) (not x3713))
+(or (not x3662) (not x3607))
+(or (not x3662) x3702)
+(or (not x3662) (not x3646))
+(or (not x3662) (not x3694))
+(or (not x3662) (not x3695))
+(or (not x3662) (not x3696))
+(or (not x3662) (not x3697))
+(or x3734 (not x3662))
+(or x3734 (not x3663))
+(or x3662 x3663 (not x3734))
+(or x3943 (not x3662))
+(or x3943 (not x3663))
+(or x3943 x3781)
+(or x3662 x3663 (not x3781) (not x3943))
+(or (not x3943) (not x3944) x3906)
+(or (not x3906) x3943)
+(or (not x3906) x3944)
+(or x4051 x3838)
+(or x4051 x3837)
+(or (not x3838) (not x3837) (not x4051))
+(or x4052 x3838)
+(or x4052 (not x3837))
+(or (not x3838) x3837 (not x4052))
+(or x4053 (not x3838))
+(or x4053 x3837)
+(or x3838 (not x3837) (not x4053))
+(or x3588 x78)
+(or x3588 (not x79))
+(or (not x78) x79 (not x3588))
+(or x4054 (not x3838))
+(or x4054 (not x3837))
+(or x4054 x78)
+(or x4054 (not x79))
+(or x3838 x3837 (not x78) x79 (not x4054))
+(or (not x4054) (not x4053) (not x4052) (not x4051) x3995)
+(or (not x3995) x4054)
+(or (not x3995) x4053)
+(or (not x3995) x4052)
+(or (not x3995) x4051)
+(or x3972 (not x3971))
+(or x3972 (not x3970))
+(or x3972 (not x3969))
+(or x3972 (not x3968))
+(or x3972 (not x79))
+(or x3972 x3564)
+(or x3972 x3563)
+(or x3972 (not x3995))
+(or x3972 (not x3906))
+(or x3971 x3970 x3969 x3968 x79 (not x3564) (not x3563) x3995 x3906 (not x3972))
+(or x4055 (not x3971))
+(or x4055 (not x3970))
+(or x4055 (not x3969))
+(or x4055 (not x3968))
+(or x4055 (not x79))
+(or x4055 x3564)
+(or x4055 x3563)
+(or x4055 (not x3995))
+(or x4055 (not x3906))
+(or x4055 x4006)
+(or x4055 x4001)
+(or x4055 (not x4049))
+(or x3971 x3970 x3969 x3968 x79 (not x3564) (not x3563) x3995 x3906 (not x4006) (not x4001) x4049 (not x4055))
+(or (not x4055) (not x4046) (not x3974) (not x3975) (not x4044) (not x3977) (not x4039) (not x3979) (not x4036) (not x3982) (not x4031) x4056)
+(or (not x4056) x4055)
+(or (not x4056) x4046)
+(or (not x4056) x3974)
+(or (not x4056) x3975)
+(or (not x4056) x4044)
+(or (not x4056) x3977)
+(or (not x4056) x4039)
+(or (not x4056) x3979)
+(or (not x4056) x4036)
+(or (not x4056) x3982)
+(or (not x4056) x4031)
+(or x4057 (not x4058))
+(or x4057 (not x3628))
+(or x4057 (not x4059))
+(or x4057 (not x3634))
+(or x4058 x3628 x4059 x3634 (not x4057))
+(or x4060 (not x4058))
+(or x4060 (not x3628))
+(or x4060 x3634)
+(or x4060 (not x3633))
+(or x4060 (not x3632))
+(or x4060 x3631)
+(or x4060 x3607)
+(or x4060 x4061)
+(or x4058 x3628 (not x3634) x3633 x3632 (not x3631) (not x3607) (not x4061) (not x4060))
+(or x4062 (not x3634))
+(or x4062 x3633)
+(or x4062 x3632)
+(or x4062 x3631)
+(or x4062 x3564)
+(or x4062 x3563)
+(or x4062 x4063)
+(or x4062 x4064)
+(or x3634 (not x3633) (not x3632) (not x3631) (not x3564) (not x3563) (not x4063) (not x4064) (not x4062))
+(or (not x4062) (not x4060) (not x4057) x4065)
+(or (not x4065) x4062)
+(or (not x4065) x4060)
+(or (not x4065) x4057)
+(or x4066 (not x4058))
+(or x4066 (not x3628))
+(or x4066 (not x4059))
+(or x4066 (not x3633))
+(or x4058 x3628 x4059 x3633 (not x4066))
+(or (not x4067) (not x4068) (not x4069) (not x4066) x4070)
+(or (not x4070) x4067)
+(or (not x4070) x4068)
+(or (not x4070) x4069)
+(or (not x4070) x4066)
+(or x4071 (not x4058))
+(or x4071 (not x3628))
+(or x4071 (not x4059))
+(or x4071 (not x3632))
+(or x4058 x3628 x4059 x3632 (not x4071))
+(or x3644 x3634)
+(or x3644 (not x3633))
+(or x3644 (not x3632))
+(or x3644 (not x3631))
+(or (not x3634) x3633 x3632 x3631 (not x3644))
+(or x4068 (not x4058))
+(or x4068 x3634)
+(or x4068 (not x3633))
+(or x4068 (not x3632))
+(or x4068 (not x3631))
+(or x4058 (not x3634) x3633 x3632 x3631 (not x4068))
+(or (not x4067) (not x4068) (not x4069) (not x4071) x4072)
+(or (not x4072) x4067)
+(or (not x4072) x4068)
+(or (not x4072) x4069)
+(or (not x4072) x4071)
+(or (not x3634) x3633 x3632 (not x3631) (not x3607) x4059)
+(or (not x4059) x3634)
+(or (not x4059) (not x3633))
+(or (not x4059) (not x3632))
+(or (not x4059) x3631)
+(or (not x4059) x3607)
+(or x4073 (not x4058))
+(or x4073 (not x3628))
+(or x4073 (not x4059))
+(or x4073 (not x3631))
+(or x4058 x3628 x4059 x3631 (not x4073))
+(or x3634 (not x3633) (not x3632) (not x3631) (not x3564) (not x3563) (not x4063) x4058)
+(or (not x4058) (not x3634))
+(or (not x4058) x3633)
+(or (not x4058) x3632)
+(or (not x4058) x3631)
+(or (not x4058) x3564)
+(or (not x4058) x3563)
+(or (not x4058) x4063)
+(or x4069 (not x4058))
+(or x4069 (not x3628))
+(or x4069 x3634)
+(or x4069 (not x3633))
+(or x4069 (not x3632))
+(or x4069 x3631)
+(or x4069 x3607)
+(or x4069 (not x4061))
+(or x4058 x3628 (not x3634) x3633 x3632 (not x3631) (not x3607) x4061 (not x4069))
+(or x4067 (not x3634))
+(or x4067 x3633)
+(or x4067 x3632)
+(or x4067 x3631)
+(or x4067 x3564)
+(or x4067 x3563)
+(or x4067 x4063)
+(or x4067 (not x4064))
+(or x3634 (not x3633) (not x3632) (not x3631) (not x3564) (not x3563) (not x4063) x4064 (not x4067))
+(or (not x4067) (not x4069) (not x4073) x4074)
+(or (not x4074) x4067)
+(or (not x4074) x4069)
+(or (not x4074) x4073)
+(or (not x4063) (not x4075) (not x3607) x4076)
+(or (not x4076) x4063)
+(or (not x4076) x4075)
+(or (not x4076) x3607)
+(or x4077 x4063)
+(or x4077 (not x4076))
+(or x4077 (not x4063))
+(or (not x4063) x4076 x4063 (not x4077))
+(or x4078 x4063)
+(or x4078 x4063)
+(or x4078 x4075)
+(or x4078 x3607)
+(or x4078 x4079)
+(or (not x4063) (not x4063) (not x4075) (not x3607) (not x4079) (not x4078))
+(or x4080 x4081)
+(or x4080 x4082)
+(or (not x4081) (not x4082) (not x4080))
+(or (not x4080) (not x4081) x4083)
+(or (not x4083) x4080)
+(or (not x4083) x4081)
+(or x4084 (not x4063))
+(or x4084 x4085)
+(or x4084 (not x4083))
+(or x4063 (not x4085) x4083 (not x4084))
+(or (not x4084) (not x4078) (not x4077) x4086)
+(or (not x4086) x4084)
+(or (not x4086) x4078)
+(or (not x4086) x4077)
+(or x3715 (not x3767))
+(or x3715 (not x3768))
+(or x3715 (not x3769))
+(or x3715 (not x3770))
+(or x3715 (not x3771))
+(or x3715 (not x3772))
+(or x3767 x3768 x3769 x3770 x3771 x3772 (not x3715))
+(or x3719 (not x3866))
+(or x3719 x3865)
+(or x3719 x3864)
+(or x3719 (not x3863))
+(or x3866 (not x3865) (not x3864) x3863 (not x3719))
+(or x3755 (not x3866))
+(or x3755 x3865)
+(or x3755 (not x3864))
+(or x3755 x3863)
+(or x3866 (not x3865) x3864 (not x3863) (not x3755))
+(or x3718 (not x3866))
+(or x3718 (not x3865))
+(or x3718 (not x3864))
+(or x3718 x3863)
+(or x3866 x3865 x3864 (not x3863) (not x3718))
+(or x4087 (not x3866))
+(or x4087 (not x3865))
+(or x4087 x3864)
+(or x4087 x3863)
+(or x3866 x3865 (not x3864) (not x3863) (not x4087))
+(or x3717 (not x3971))
+(or x3717 x3970)
+(or x3717 x3969)
+(or x3717 (not x3968))
+(or x3971 (not x3970) (not x3969) x3968 (not x3717))
+(or x3753 (not x3971))
+(or x3753 x3970)
+(or x3753 (not x3969))
+(or x3753 x3968)
+(or x3971 (not x3970) x3969 (not x3968) (not x3753))
+(or x3716 (not x3971))
+(or x3716 (not x3970))
+(or x3716 (not x3969))
+(or x3716 x3968)
+(or x3971 x3970 x3969 (not x3968) (not x3716))
+(or x4088 (not x3971))
+(or x4088 (not x3970))
+(or x4088 x3969)
+(or x4088 x3968)
+(or x3971 x3970 (not x3969) (not x3968) (not x4088))
+(or (not x4088) (not x3716) (not x3753) (not x3717) (not x4087) (not x3718) (not x3755) (not x3719) x4089)
+(or (not x4089) x4088)
+(or (not x4089) x3716)
+(or (not x4089) x3753)
+(or (not x4089) x3717)
+(or (not x4089) x4087)
+(or (not x4089) x3718)
+(or (not x4089) x3755)
+(or (not x4089) x3719)
+(or (not x4088) (not x3716) (not x3753) (not x3717) (not x4087) (not x3718) (not x3755) (not x3719) x3658 x3659 x3847)
+(or (not x3847) x4088)
+(or (not x3847) x3716)
+(or (not x3847) x3753)
+(or (not x3847) x3717)
+(or (not x3847) x4087)
+(or (not x3847) x3718)
+(or (not x3847) x3755)
+(or (not x3847) x3719)
+(or (not x3847) (not x3658))
+(or (not x3847) (not x3659))
+(or x3705 (not x3847))
+(or x3705 (not x3788))
+(or x3705 (not x3768))
+(or x3705 (not x3790))
+(or x3705 (not x3771))
+(or x3847 x3788 x3768 x3790 x3771 (not x3705))
+(or x4090 (not x3847))
+(or x4090 (not x3788))
+(or x4090 (not x3768))
+(or x4090 (not x3790))
+(or x4090 (not x3771))
+(or x4090 (not x3767))
+(or x4090 (not x3768))
+(or x4090 (not x3769))
+(or x4090 (not x3770))
+(or x4090 (not x3771))
+(or x4090 (not x3772))
+(or x4090 x3670)
+(or x3847 x3788 x3768 x3790 x3771 x3767 x3768 x3769 x3770 x3771 x3772 (not x3670) (not x4090))
+(or (not x4090) (not x3846) x4091)
+(or (not x4091) x4090)
+(or (not x4091) x3846)
+(or (not x4092) x3634)
+(or (not x4092) (not x3633))
+(or (not x4092) (not x3632))
+(or (not x4092) x3631)
+(or (not x3634) x3633 x3632 x3631 x3628)
+(or (not x3628) x3634)
+(or (not x3628) (not x3633))
+(or (not x3628) (not x3632))
+(or (not x3628) (not x3631))
+(or (not x4093) (not x3634))
+(or (not x4093) x3633)
+(or (not x4093) x3632)
+(or (not x4093) x3631)
+(or x4094 (not x4093))
+(or x4094 (not x3628))
+(or x4093 x3628 (not x4094))
+(or x3866 (not x3865) (not x3864) x3863 x3771)
+(or (not x3771) (not x3866))
+(or (not x3771) x3865)
+(or (not x3771) x3864)
+(or (not x3771) (not x3863))
+(or x3866 (not x3865) x3864 (not x3863) x3772)
+(or (not x3772) (not x3866))
+(or (not x3772) x3865)
+(or (not x3772) (not x3864))
+(or (not x3772) x3863)
+(or x3866 (not x3865) x3864 x3863 x3770)
+(or (not x3770) (not x3866))
+(or (not x3770) x3865)
+(or (not x3770) (not x3864))
+(or (not x3770) (not x3863))
+(or x3866 x3865 (not x3864) (not x3863) x3789)
+(or (not x3789) (not x3866))
+(or (not x3789) (not x3865))
+(or (not x3789) x3864)
+(or (not x3789) x3863)
+(or x3866 x3865 (not x3864) x3863 x3858)
+(or (not x3858) (not x3866))
+(or (not x3858) (not x3865))
+(or (not x3858) x3864)
+(or (not x3858) (not x3863))
+(or x3866 x3865 x3864 (not x3863) x3790)
+(or (not x3790) (not x3866))
+(or (not x3790) (not x3865))
+(or (not x3790) (not x3864))
+(or (not x3790) x3863)
+(or (not x4095) (not x3866))
+(or (not x4095) (not x3865))
+(or (not x4095) (not x3864))
+(or (not x4095) (not x3863))
+(or x4096 (not x4095))
+(or x4096 (not x3790))
+(or x4096 (not x3858))
+(or x4096 (not x3789))
+(or x4096 (not x3770))
+(or x4096 (not x3772))
+(or x4095 x3790 x3858 x3789 x3770 x3772 (not x4096))
+(or x3971 (not x3970) (not x3969) x3968 x3768)
+(or (not x3768) (not x3971))
+(or (not x3768) x3970)
+(or (not x3768) x3969)
+(or (not x3768) (not x3968))
+(or x3971 (not x3970) x3969 (not x3968) x3769)
+(or (not x3769) (not x3971))
+(or (not x3769) x3970)
+(or (not x3769) (not x3969))
+(or (not x3769) x3968)
+(or x3971 (not x3970) x3969 x3968 x3767)
+(or (not x3767) (not x3971))
+(or (not x3767) x3970)
+(or (not x3767) (not x3969))
+(or (not x3767) (not x3968))
+(or x3971 x3970 (not x3969) (not x3968) x3787)
+(or (not x3787) (not x3971))
+(or (not x3787) (not x3970))
+(or (not x3787) x3969)
+(or (not x3787) x3968)
+(or x3971 x3970 (not x3969) x3968 x3963)
+(or (not x3963) (not x3971))
+(or (not x3963) (not x3970))
+(or (not x3963) x3969)
+(or (not x3963) (not x3968))
+(or x3971 x3970 x3969 (not x3968) x3788)
+(or (not x3788) (not x3971))
+(or (not x3788) (not x3970))
+(or (not x3788) (not x3969))
+(or (not x3788) x3968)
+(or (not x4097) (not x3971))
+(or (not x4097) (not x3970))
+(or (not x4097) (not x3969))
+(or (not x4097) (not x3968))
+(or x4098 (not x4097))
+(or x4098 (not x3788))
+(or x4098 (not x3963))
+(or x4098 (not x3787))
+(or x4098 (not x3767))
+(or x4098 (not x3769))
+(or x4097 x3788 x3963 x3787 x3767 x3769 (not x4098))
+(or x4099 (not x4100))
+(or x4099 (not x4101))
+(or x4099 (not x4102))
+(or x4099 (not x4103))
+(or x4099 (not x4104))
+(or x4099 (not x4105))
+(or x4099 (not x86))
+(or x4099 x85)
+(or x4099 x84)
+(or x4099 x83)
+(or x4099 (not x4106))
+(or x4099 x4107)
+(or x4100 x4101 x4102 x4103 x4104 x4105 x86 (not x85) (not x84) (not x83) x4106 (not x4107) (not x4099))
+(or x4108 (not x4100))
+(or x4108 (not x4101))
+(or x4108 (not x4102))
+(or x4108 (not x4103))
+(or x4108 (not x4104))
+(or x4108 (not x86))
+(or x4108 x85)
+(or x4108 x84)
+(or x4108 (not x83))
+(or x4108 x87)
+(or x4108 (not x88))
+(or x4108 x4109)
+(or x4100 x4101 x4102 x4103 x4104 x86 (not x85) (not x84) x83 (not x87) x88 (not x4109) (not x4108))
+(or x4110 (not x86))
+(or x4110 (not x85))
+(or x4110 (not x84))
+(or x4110 x83)
+(or x4110 (not x4111))
+(or x86 x85 x84 (not x83) x4111 (not x4110))
+(or (not x4110) (not x4112) (not x4113) (not x4114) (not x4115) (not x4108) (not x4099) (not x4116) x4117)
+(or (not x4117) x4110)
+(or (not x4117) x4112)
+(or (not x4117) x4113)
+(or (not x4117) x4114)
+(or (not x4117) x4115)
+(or (not x4117) x4108)
+(or (not x4117) x4099)
+(or (not x4117) x4116)
+(or x4118 (not x4100))
+(or x4118 (not x4101))
+(or x4118 (not x86))
+(or x4118 (not x85))
+(or x4118 x84)
+(or x4118 x83)
+(or x4118 (not x4106))
+(or x4118 x4119)
+(or x4100 x4101 x86 x85 (not x84) (not x83) x4106 (not x4119) (not x4118))
+(or x4120 (not x4100))
+(or x4120 (not x86))
+(or x4120 (not x85))
+(or x4120 x84)
+(or x4120 (not x83))
+(or x4120 x4122)
+(or x4120 x4121)
+(or x4120 (not x4106))
+(or x4120 x4123)
+(or x4100 x86 x85 (not x84) x83 (not x4122) (not x4121) x4106 (not x4123) (not x4120))
+(or x4124 (not x4125) x4111)
+(or (not x4111) (not x4124))
+(or (not x4111) x4125)
+(or x4124 (not x4125) (not x4126) x4127)
+(or (not x4127) (not x4124))
+(or (not x4127) x4125)
+(or (not x4127) x4126)
+(or x4128 (not x86))
+(or x4128 (not x85))
+(or x4128 (not x84))
+(or x4128 x83)
+(or x4128 (not x4127))
+(or x86 x85 x84 (not x83) x4127 (not x4128))
+(or (not x4128) (not x4120) (not x4118) (not x4129) (not x4130) (not x4131) (not x4132) (not x4116) x4133)
+(or (not x4133) x4128)
+(or (not x4133) x4120)
+(or (not x4133) x4118)
+(or (not x4133) x4129)
+(or (not x4133) x4130)
+(or (not x4133) x4131)
+(or (not x4133) x4132)
+(or (not x4133) x4116)
+(or x4134 (not x4100))
+(or x4134 (not x4101))
+(or x4134 (not x4102))
+(or x4134 (not x4103))
+(or x4134 (not x86))
+(or x4134 x85)
+(or x4134 (not x84))
+(or x4134 x83)
+(or x4134 (not x4106))
+(or x4134 x4135)
+(or x4100 x4101 x4102 x4103 x86 (not x85) x84 (not x83) x4106 (not x4135) (not x4134))
+(or x4136 (not x4100))
+(or x4136 (not x4101))
+(or x4136 (not x4102))
+(or x4136 (not x86))
+(or x4136 x85)
+(or x4136 (not x84))
+(or x4136 (not x83))
+(or x4136 x87)
+(or x4136 (not x88))
+(or x4136 x4137)
+(or x4100 x4101 x4102 x86 (not x85) x84 x83 (not x87) x88 (not x4137) (not x4136))
+(or x4126 (not x4124))
+(or x4126 (not x4138))
+(or x4124 x4138 (not x4126))
+(or x4124 (not x4126) x4139)
+(or (not x4139) (not x4124))
+(or (not x4139) x4126)
+(or x4140 (not x86))
+(or x4140 (not x85))
+(or x4140 (not x84))
+(or x4140 x83)
+(or x4140 (not x4139))
+(or x86 x85 x84 (not x83) x4139 (not x4140))
+(or (not x4140) (not x4141) (not x4142) (not x4136) (not x4134) (not x4129) (not x4130) (not x4143) (not x4144) (not x4116) x4145)
+(or (not x4145) x4140)
+(or (not x4145) x4141)
+(or (not x4145) x4142)
+(or (not x4145) x4136)
+(or (not x4145) x4134)
+(or (not x4145) x4129)
+(or (not x4145) x4130)
+(or (not x4145) x4143)
+(or (not x4145) x4144)
+(or (not x4145) x4116)
+(or (not x86) (not x85) x84 x83 (not x4146) x4147)
+(or (not x4147) x86)
+(or (not x4147) x85)
+(or (not x4147) (not x84))
+(or (not x4147) (not x83))
+(or (not x4147) x4146)
+(or x4116 (not x4100))
+(or x4116 (not x4101))
+(or x4116 (not x4102))
+(or x4116 (not x4103))
+(or x4116 (not x4104))
+(or x4116 (not x4105))
+(or x4116 (not x4148))
+(or x4116 (not x4149))
+(or x4116 (not x4150))
+(or x4116 (not x4151))
+(or x4116 (not x4147))
+(or x4100 x4101 x4102 x4103 x4104 x4105 x4148 x4149 x4150 x4151 x4147 (not x4116))
+(or (not x86) x85 (not x84) (not x83) (not x87) x88 x4151)
+(or (not x4151) x86)
+(or (not x4151) (not x85))
+(or (not x4151) x84)
+(or (not x4151) x83)
+(or (not x4151) x87)
+(or (not x4151) (not x88))
+(or x4144 (not x4100))
+(or x4144 (not x4101))
+(or x4144 (not x4102))
+(or x4144 (not x4103))
+(or x4144 (not x4104))
+(or x4144 (not x4105))
+(or x4144 (not x4148))
+(or x4144 (not x4149))
+(or x4144 (not x4150))
+(or x4144 (not x4151))
+(or x4144 x86)
+(or x4144 x85)
+(or x4144 (not x84))
+(or x4144 (not x83))
+(or x4144 (not x4106))
+(or x4100 x4101 x4102 x4103 x4104 x4105 x4148 x4149 x4150 x4151 (not x86) (not x85) x84 x83 x4106 (not x4144))
+(or x4152 (not x4100))
+(or x4152 (not x4101))
+(or x4152 (not x4102))
+(or x4152 (not x4103))
+(or x4152 (not x4104))
+(or x4152 (not x4105))
+(or x4152 (not x4148))
+(or x4152 (not x4149))
+(or x4152 (not x4150))
+(or x4152 (not x4151))
+(or x4152 x86)
+(or x4152 x85)
+(or x4152 (not x84))
+(or x4152 (not x83))
+(or x4152 (not x4106))
+(or x4152 x4153)
+(or x4100 x4101 x4102 x4103 x4104 x4105 x4148 x4149 x4150 x4151 (not x86) (not x85) x84 x83 x4106 (not x4153) (not x4152))
+(or (not x86) x85 (not x84) x83 (not x4146) x4150)
+(or (not x4150) x86)
+(or (not x4150) (not x85))
+(or (not x4150) x84)
+(or (not x4150) (not x83))
+(or (not x4150) x4146)
+(or x4143 (not x4100))
+(or x4143 (not x4101))
+(or x4143 (not x4102))
+(or x4143 (not x4103))
+(or x4143 (not x4104))
+(or x4143 (not x4105))
+(or x4143 (not x4148))
+(or x4143 (not x4149))
+(or x4143 (not x4150))
+(or x4143 x86)
+(or x4143 (not x85))
+(or x4143 x84)
+(or x4143 x83)
+(or x4143 x87)
+(or x4143 (not x88))
+(or x4100 x4101 x4102 x4103 x4104 x4105 x4148 x4149 x4150 (not x86) x85 (not x84) (not x83) (not x87) x88 (not x4143))
+(or x4154 (not x4100))
+(or x4154 (not x4101))
+(or x4154 (not x4102))
+(or x4154 (not x4103))
+(or x4154 (not x4104))
+(or x4154 (not x4105))
+(or x4154 (not x4148))
+(or x4154 (not x4149))
+(or x4154 (not x4150))
+(or x4154 x86)
+(or x4154 (not x85))
+(or x4154 x84)
+(or x4154 x83)
+(or x4154 x87)
+(or x4154 (not x88))
+(or x4154 x4155)
+(or x4100 x4101 x4102 x4103 x4104 x4105 x4148 x4149 x4150 (not x86) x85 (not x84) (not x83) (not x87) x88 (not x4155) (not x4154))
+(or (not x86) x85 x84 (not x83) (not x4122) (not x4121) (not x87) x88 x4149)
+(or (not x4149) x86)
+(or (not x4149) (not x85))
+(or (not x4149) (not x84))
+(or (not x4149) x83)
+(or (not x4149) x4122)
+(or (not x4149) x4121)
+(or (not x4149) x87)
+(or (not x4149) (not x88))
+(or x4132 (not x4100))
+(or x4132 (not x4101))
+(or x4132 (not x4102))
+(or x4132 (not x4103))
+(or x4132 (not x4104))
+(or x4132 (not x4105))
+(or x4132 (not x4148))
+(or x4132 (not x4149))
+(or x4132 x86)
+(or x4132 (not x85))
+(or x4132 x84)
+(or x4132 (not x83))
+(or x4132 (not x4106))
+(or x4100 x4101 x4102 x4103 x4104 x4105 x4148 x4149 (not x86) x85 (not x84) x83 x4106 (not x4132))
+(or x4156 (not x4100))
+(or x4156 (not x4101))
+(or x4156 (not x4102))
+(or x4156 (not x4103))
+(or x4156 (not x4104))
+(or x4156 (not x4105))
+(or x4156 (not x4148))
+(or x4156 (not x4149))
+(or x4156 x86)
+(or x4156 (not x85))
+(or x4156 x84)
+(or x4156 (not x83))
+(or x4156 (not x4106))
+(or x4156 x4157)
+(or x4100 x4101 x4102 x4103 x4104 x4105 x4148 x4149 (not x86) x85 (not x84) x83 x4106 (not x4157) (not x4156))
+(or x86 (not x85) (not x84) (not x83) (not x4146) x4148)
+(or (not x4148) (not x86))
+(or (not x4148) x85)
+(or (not x4148) x84)
+(or (not x4148) x83)
+(or (not x4148) x4146)
+(or x4131 (not x4100))
+(or x4131 (not x4101))
+(or x4131 (not x4102))
+(or x4131 (not x4103))
+(or x4131 (not x4104))
+(or x4131 (not x4105))
+(or x4131 (not x4148))
+(or x4131 x86)
+(or x4131 (not x85))
+(or x4131 (not x84))
+(or x4131 x83)
+(or x4131 x4122)
+(or x4131 x4121)
+(or x4131 x87)
+(or x4131 (not x88))
+(or x4100 x4101 x4102 x4103 x4104 x4105 x4148 (not x86) x85 x84 (not x83) (not x4122) (not x4121) (not x87) x88 (not x4131))
+(or x4158 (not x4100))
+(or x4158 (not x4101))
+(or x4158 (not x4102))
+(or x4158 (not x4103))
+(or x4158 (not x4104))
+(or x4158 (not x4105))
+(or x4158 (not x4148))
+(or x4158 x86)
+(or x4158 (not x85))
+(or x4158 (not x84))
+(or x4158 x83)
+(or x4158 x4122)
+(or x4158 x4121)
+(or x4158 x87)
+(or x4158 (not x88))
+(or x4158 x4159)
+(or x4100 x4101 x4102 x4103 x4104 x4105 x4148 (not x86) x85 x84 (not x83) (not x4122) (not x4121) (not x87) x88 (not x4159) (not x4158))
+(or x86 (not x85) (not x84) x83 (not x87) x88 x4105)
+(or (not x4105) (not x86))
+(or (not x4105) x85)
+(or (not x4105) x84)
+(or (not x4105) (not x83))
+(or (not x4105) x87)
+(or (not x4105) (not x88))
+(or x4130 (not x4100))
+(or x4130 (not x4101))
+(or x4130 (not x4102))
+(or x4130 (not x4103))
+(or x4130 (not x4104))
+(or x4130 (not x4105))
+(or x4130 (not x86))
+(or x4130 x85)
+(or x4130 x84)
+(or x4130 x83)
+(or x4130 (not x4106))
+(or x4130 (not x4107))
+(or x4100 x4101 x4102 x4103 x4104 x4105 x86 (not x85) (not x84) (not x83) x4106 x4107 (not x4130))
+(or x86 (not x85) x84 (not x83) (not x4146) x4104)
+(or (not x4104) (not x86))
+(or (not x4104) x85)
+(or (not x4104) (not x84))
+(or (not x4104) x83)
+(or (not x4104) x4146)
+(or x4129 (not x4100))
+(or x4129 (not x4101))
+(or x4129 (not x4102))
+(or x4129 (not x4103))
+(or x4129 (not x4104))
+(or x4129 (not x86))
+(or x4129 x85)
+(or x4129 x84)
+(or x4129 (not x83))
+(or x4129 x87)
+(or x4129 (not x88))
+(or x4129 (not x4109))
+(or x4100 x4101 x4102 x4103 x4104 x86 (not x85) (not x84) x83 (not x87) x88 x4109 (not x4129))
+(or x86 (not x85) x84 x83 (not x87) x88 x4103)
+(or (not x4103) (not x86))
+(or (not x4103) x85)
+(or (not x4103) (not x84))
+(or (not x4103) (not x83))
+(or (not x4103) x87)
+(or (not x4103) (not x88))
+(or x4115 (not x4100))
+(or x4115 (not x4101))
+(or x4115 (not x4102))
+(or x4115 (not x4103))
+(or x4115 (not x86))
+(or x4115 x85)
+(or x4115 (not x84))
+(or x4115 x83)
+(or x4115 (not x4106))
+(or x4100 x4101 x4102 x4103 x86 (not x85) x84 (not x83) x4106 (not x4115))
+(or x4160 (not x4100))
+(or x4160 (not x4101))
+(or x4160 (not x4102))
+(or x4160 (not x4103))
+(or x4160 (not x86))
+(or x4160 x85)
+(or x4160 (not x84))
+(or x4160 x83)
+(or x4160 (not x4106))
+(or x4160 (not x4135))
+(or x4100 x4101 x4102 x4103 x86 (not x85) x84 (not x83) x4106 x4135 (not x4160))
+(or x86 x85 (not x84) (not x83) (not x4146) x4102)
+(or (not x4102) (not x86))
+(or (not x4102) (not x85))
+(or (not x4102) x84)
+(or (not x4102) x83)
+(or (not x4102) x4146)
+(or x4114 (not x4100))
+(or x4114 (not x4101))
+(or x4114 (not x4102))
+(or x4114 (not x86))
+(or x4114 x85)
+(or x4114 (not x84))
+(or x4114 (not x83))
+(or x4114 x87)
+(or x4114 (not x88))
+(or x4100 x4101 x4102 x86 (not x85) x84 x83 (not x87) x88 (not x4114))
+(or x4161 (not x4100))
+(or x4161 (not x4101))
+(or x4161 (not x4102))
+(or x4161 (not x86))
+(or x4161 x85)
+(or x4161 (not x84))
+(or x4161 (not x83))
+(or x4161 x87)
+(or x4161 (not x88))
+(or x4161 (not x4137))
+(or x4100 x4101 x4102 x86 (not x85) x84 x83 (not x87) x88 x4137 (not x4161))
+(or x86 x85 (not x84) x83 (not x4122) (not x4121) (not x4146) x4101)
+(or (not x4101) (not x86))
+(or (not x4101) (not x85))
+(or (not x4101) x84)
+(or (not x4101) (not x83))
+(or (not x4101) x4122)
+(or (not x4101) x4121)
+(or (not x4101) x4146)
+(or x4113 (not x4100))
+(or x4113 (not x4101))
+(or x4113 (not x86))
+(or x4113 (not x85))
+(or x4113 x84)
+(or x4113 x83)
+(or x4113 (not x4106))
+(or x4100 x4101 x86 x85 (not x84) (not x83) x4106 (not x4113))
+(or x4142 (not x4100))
+(or x4142 (not x4101))
+(or x4142 (not x86))
+(or x4142 (not x85))
+(or x4142 x84)
+(or x4142 x83)
+(or x4142 (not x4106))
+(or x4142 (not x4119))
+(or x4100 x4101 x86 x85 (not x84) (not x83) x4106 x4119 (not x4142))
+(or x86 x85 x84 (not x83) x4100)
+(or (not x4100) (not x86))
+(or (not x4100) (not x85))
+(or (not x4100) (not x84))
+(or (not x4100) x83)
+(or x4112 (not x4100))
+(or x4112 (not x86))
+(or x4112 (not x85))
+(or x4112 x84)
+(or x4112 (not x83))
+(or x4112 x4122)
+(or x4112 x4121)
+(or x4112 (not x4106))
+(or x4100 x86 x85 (not x84) x83 (not x4122) (not x4121) x4106 (not x4112))
+(or x4141 (not x4100))
+(or x4141 (not x86))
+(or x4141 (not x85))
+(or x4141 x84)
+(or x4141 (not x83))
+(or x4141 x4122)
+(or x4141 x4121)
+(or x4141 (not x4106))
+(or x4141 (not x4123))
+(or x4100 x86 x85 (not x84) x83 (not x4122) (not x4121) x4106 x4123 (not x4141))
+(or x4125 (not x4124))
+(or x4125 x4138)
+(or x4124 (not x4138) (not x4125))
+(or x4162 (not x86))
+(or x4162 (not x85))
+(or x4162 (not x84))
+(or x4162 x83)
+(or x4162 (not x4124))
+(or x4162 x4138)
+(or x86 x85 x84 (not x83) x4124 (not x4138) (not x4162))
+(or (not x4162) (not x4141) (not x4142) (not x4161) (not x4160) (not x4129) (not x4130) (not x4158) (not x4156) (not x4154) (not x4152) (not x4116) x4163)
+(or (not x4163) x4162)
+(or (not x4163) x4141)
+(or (not x4163) x4142)
+(or (not x4163) x4161)
+(or (not x4163) x4160)
+(or (not x4163) x4129)
+(or (not x4163) x4130)
+(or (not x4163) x4158)
+(or (not x4163) x4156)
+(or (not x4163) x4154)
+(or (not x4163) x4152)
+(or (not x4163) x4116)
+(or x4164 x4165 (not x4166) x4167)
+(or (not x4167) (not x4164))
+(or (not x4167) (not x4165))
+(or (not x4167) x4166)
+(or (not x4164) x4165 (not x4168) x4169)
+(or (not x4169) x4164)
+(or (not x4169) (not x4165))
+(or (not x4169) x4168)
+(or x4170 (not x4169))
+(or x4170 (not x4167))
+(or x4169 x4167 (not x4170))
+(or (not x4171) (not x4172) x4173 x4174 (not x4175) x4176)
+(or (not x4176) x4171)
+(or (not x4176) x4172)
+(or (not x4176) (not x4173))
+(or (not x4176) (not x4174))
+(or (not x4176) x4175)
+(or x4166 (not x4165))
+(or x4166 (not x4176))
+(or x4165 x4176 (not x4166))
+(or (not x4165) (not x4166) x4177)
+(or (not x4177) x4165)
+(or (not x4177) x4166)
+(or x4165 (not x4164) x4178)
+(or (not x4178) (not x4165))
+(or (not x4178) x4164)
+(or x4168 (not x4179))
+(or x4168 x4172)
+(or x4168 (not x4173))
+(or x4168 (not x4174))
+(or x4168 x4175)
+(or x4179 (not x4172) x4173 x4174 (not x4175) (not x4168))
+(or x4165 (not x4168) x4180)
+(or (not x4180) (not x4165))
+(or (not x4180) x4168)
+(or x4181 (not x4180))
+(or x4181 (not x4178))
+(or x4180 x4178 (not x4181))
+(or (not x4182) (not x4181) x4183)
+(or (not x4183) x4182)
+(or (not x4183) x4181)
+(or x4184 (not x4183))
+(or x4184 (not x4177))
+(or x4183 x4177 (not x4184))
+(or x4185 (not x4165))
+(or x4185 (not x4186))
+(or x4185 (not x4187))
+(or x4165 x4186 x4187 (not x4185))
+(or x4188 (not x4165))
+(or x4188 x4192)
+(or x4188 (not x4191))
+(or x4188 (not x4190))
+(or x4188 (not x4189))
+(or x4165 (not x4192) x4191 x4190 x4189 (not x4188))
+(or x4193 x4194)
+(or x4193 x4195)
+(or (not x4194) (not x4195) (not x4193))
+(or (not x4193) (not x4194) x4196)
+(or (not x4196) x4193)
+(or (not x4196) x4194)
+(or x4197 x4165)
+(or x4197 x4198)
+(or x4197 (not x4196))
+(or (not x4165) (not x4198) x4196 (not x4197))
+(or (not x4197) (not x4188) (not x4185) x4199)
+(or (not x4199) x4197)
+(or (not x4199) x4188)
+(or (not x4199) x4185)
+(or (not x4192) x4191 x4190 x4189 (not x4200) x4201)
+(or (not x4201) x4192)
+(or (not x4201) (not x4191))
+(or (not x4201) (not x4190))
+(or (not x4201) (not x4189))
+(or (not x4201) x4200)
+(or (not x4202) (not x4203) x4204 (not x4205) (not x4206) (not x4207) (not x4208) (not x4209) (not x4210) (not x4211) (not x4212) (not x4213) x4214)
+(or (not x4214) x4202)
+(or (not x4214) x4203)
+(or (not x4214) (not x4204))
+(or (not x4214) x4205)
+(or (not x4214) x4206)
+(or (not x4214) x4207)
+(or (not x4214) x4208)
+(or (not x4214) x4209)
+(or (not x4214) x4210)
+(or (not x4214) x4211)
+(or (not x4214) x4212)
+(or (not x4214) x4213)
+(or x4215 (not x4214))
+(or x4215 (not x4201))
+(or x4214 x4201 (not x4215))
+(or x4216 x4217 x4218)
+(or (not x4218) (not x4216))
+(or (not x4218) (not x4217))
+(or x4219 x4122)
+(or x4219 x4121)
+(or x4219 (not x4220))
+(or x4219 (not x4221))
+(or x4219 (not x4218))
+(or (not x4122) (not x4121) x4220 x4221 x4218 (not x4219))
+(or (not x4222) (not x4219) x4223)
+(or (not x4223) x4222)
+(or (not x4223) x4219)
+(or x4224 (not x4216))
+(or x4224 (not x4225))
+(or x4216 x4225 (not x4224))
+(or (not x4217) (not x4224) x4226)
+(or (not x4226) x4217)
+(or (not x4226) x4224)
+(or x4227 (not x4226))
+(or x4227 (not x4223))
+(or x4226 x4223 (not x4227))
+(or x4228 (not x4122) (not x4121) (not x4229) (not x4230) x4225)
+(or (not x4225) (not x4228))
+(or (not x4225) x4122)
+(or (not x4225) x4121)
+(or (not x4225) x4229)
+(or (not x4225) x4230)
+(or (not x4216) x4228 (not x4122) (not x4121) (not x4229) (not x4230) x4231)
+(or (not x4231) x4216)
+(or (not x4231) (not x4228))
+(or (not x4231) x4122)
+(or (not x4231) x4121)
+(or (not x4231) x4229)
+(or (not x4231) x4230)
+(or x4232 x4122)
+(or x4232 x4121)
+(or x4232 (not x4220))
+(or x4232 (not x4221))
+(or x4232 x4216)
+(or (not x4122) (not x4121) x4220 x4221 (not x4216) (not x4232))
+(or x4222 (not x4228))
+(or x4222 x4122)
+(or x4222 x4121)
+(or x4222 (not x4220))
+(or x4222 (not x4221))
+(or x4228 (not x4122) (not x4121) x4220 x4221 (not x4222))
+(or (not x4222) (not x4232) x4233)
+(or (not x4233) x4222)
+(or (not x4233) x4232)
+(or x4234 (not x4233))
+(or x4234 (not x4231))
+(or x4233 x4231 (not x4234))
+(or x4172 (not x4175) x4235)
+(or (not x4235) (not x4172))
+(or (not x4235) x4175)
+(or x4236 (not x4237))
+(or x4236 x4203)
+(or x4236 x4238)
+(or x4236 (not x4235))
+(or x4237 (not x4203) (not x4238) x4235 (not x4236))
+(or (not x4239) (not x4202) (not x4236) x4240)
+(or (not x4240) x4239)
+(or (not x4240) x4202)
+(or (not x4240) x4236)
+(or x4241 (not x4172))
+(or x4241 x4175)
+(or x4172 (not x4175) (not x4241))
+(or (not x4242) (not x4203) (not x4238) (not x4241) x4243)
+(or (not x4243) x4242)
+(or (not x4243) x4203)
+(or (not x4243) x4238)
+(or (not x4243) x4241)
+(or x4244 (not x4186))
+(or x4244 (not x4243))
+(or x4186 x4243 (not x4244))
+(or (not x4244) (not x4202) x4245)
+(or (not x4245) x4244)
+(or (not x4245) x4202)
+(or x4246 (not x4245))
+(or x4246 (not x4240))
+(or x4245 x4240 (not x4246))
+(or x4247 (not x4248))
+(or x4247 x4228)
+(or x4248 (not x4228) (not x4247))
+(or (not x4172) (not x4122) (not x4121) (not x4249) (not x4174) (not x4250) (not x4251) x4228 x4252 x4253 x4254 x4255 x4256 (not x4172) x4257 x4204 x4258 x4259 x4165 x4260 x4261)
+(or (not x4261) x4172)
+(or (not x4261) x4122)
+(or (not x4261) x4121)
+(or (not x4261) x4249)
+(or (not x4261) x4174)
+(or (not x4261) x4250)
+(or (not x4261) x4251)
+(or (not x4261) (not x4228))
+(or (not x4261) (not x4252))
+(or (not x4261) (not x4253))
+(or (not x4261) (not x4254))
+(or (not x4261) (not x4255))
+(or (not x4261) (not x4256))
+(or (not x4261) x4172)
+(or (not x4261) (not x4257))
+(or (not x4261) (not x4204))
+(or (not x4261) (not x4258))
+(or (not x4261) (not x4259))
+(or (not x4261) (not x4165))
+(or (not x4261) (not x4260))
+(or (not x4262) (not x4263) (not x4122) (not x4121) (not x4228) x4172 x4252 x4253 x4254 x4255 x4257 x4204 x4258 x4259 x4165 x4260 x4264)
+(or (not x4264) x4262)
+(or (not x4264) x4263)
+(or (not x4264) x4122)
+(or (not x4264) x4121)
+(or (not x4264) x4228)
+(or (not x4264) (not x4172))
+(or (not x4264) (not x4252))
+(or (not x4264) (not x4253))
+(or (not x4264) (not x4254))
+(or (not x4264) (not x4255))
+(or (not x4264) (not x4257))
+(or (not x4264) (not x4204))
+(or (not x4264) (not x4258))
+(or (not x4264) (not x4259))
+(or (not x4264) (not x4165))
+(or (not x4264) (not x4260))
+(or x4265 (not x4264))
+(or x4265 (not x4261))
+(or x4264 x4261 (not x4265))
+(or x4252 x4254 x4255 (not x4253) x4257 x4204 x4258 x4259 x4165 x4260 x4228 x4172 x4266)
+(or (not x4266) (not x4252))
+(or (not x4266) (not x4254))
+(or (not x4266) (not x4255))
+(or (not x4266) x4253)
+(or (not x4266) (not x4257))
+(or (not x4266) (not x4204))
+(or (not x4266) (not x4258))
+(or (not x4266) (not x4259))
+(or (not x4266) (not x4165))
+(or (not x4266) (not x4260))
+(or (not x4266) (not x4228))
+(or (not x4266) (not x4172))
+(or (not x4192) x4191 x4190 x4189 (not x4165) x4260 x4257 x4172 x4228 x4258 x4259 (not x4267) (not x4268) x4204 x4252 x4253 x4254 x4255 x4269)
+(or (not x4269) x4192)
+(or (not x4269) (not x4191))
+(or (not x4269) (not x4190))
+(or (not x4269) (not x4189))
+(or (not x4269) x4165)
+(or (not x4269) (not x4260))
+(or (not x4269) (not x4257))
+(or (not x4269) (not x4172))
+(or (not x4269) (not x4228))
+(or (not x4269) (not x4258))
+(or (not x4269) (not x4259))
+(or (not x4269) x4267)
+(or (not x4269) x4268)
+(or (not x4269) (not x4204))
+(or (not x4269) (not x4252))
+(or (not x4269) (not x4253))
+(or (not x4269) (not x4254))
+(or (not x4269) (not x4255))
+(or x4270 (not x4269))
+(or x4270 (not x4266))
+(or x4269 x4266 (not x4270))
+(or (not x4122) (not x4121) (not x4271) (not x4270) x4272)
+(or (not x4272) x4122)
+(or (not x4272) x4121)
+(or (not x4272) x4271)
+(or (not x4272) x4270)
+(or (not x4122) (not x4121) (not x4228) x4172 x4252 x4253 x4254 x4255 x4257 x4204 x4258 x4259 x4165 x4260 (not x4273) (not x4274) (not x4275) (not x4276) (not x4277) (not x4238) x4278)
+(or (not x4278) x4122)
+(or (not x4278) x4121)
+(or (not x4278) x4228)
+(or (not x4278) (not x4172))
+(or (not x4278) (not x4252))
+(or (not x4278) (not x4253))
+(or (not x4278) (not x4254))
+(or (not x4278) (not x4255))
+(or (not x4278) (not x4257))
+(or (not x4278) (not x4204))
+(or (not x4278) (not x4258))
+(or (not x4278) (not x4259))
+(or (not x4278) (not x4165))
+(or (not x4278) (not x4260))
+(or (not x4278) x4273)
+(or (not x4278) x4274)
+(or (not x4278) x4275)
+(or (not x4278) x4276)
+(or (not x4278) x4277)
+(or (not x4278) x4238)
+(or (not x4271) x4253 x4254 x4255 x4257 x4204 x4258 x4259 x4165 x4260 x4228 x4172 x4279)
+(or (not x4279) x4271)
+(or (not x4279) (not x4253))
+(or (not x4279) (not x4254))
+(or (not x4279) (not x4255))
+(or (not x4279) (not x4257))
+(or (not x4279) (not x4204))
+(or (not x4279) (not x4258))
+(or (not x4279) (not x4259))
+(or (not x4279) (not x4165))
+(or (not x4279) (not x4260))
+(or (not x4279) (not x4228))
+(or (not x4279) (not x4172))
+(or x4280 (not x4281))
+(or x4280 (not x4279))
+(or x4281 x4279 (not x4280))
+(or (not x4122) (not x4121) (not x4252) (not x4280) x4282)
+(or (not x4282) x4122)
+(or (not x4282) x4121)
+(or (not x4282) x4252)
+(or (not x4282) x4280)
+(or x4257 x4258 (not x4259) (not x4122) (not x4121) x4165 x4260 x4228 x4172 x4204 x4252 x4253 x4254 x4255 x4283)
+(or (not x4283) (not x4257))
+(or (not x4283) (not x4258))
+(or (not x4283) x4259)
+(or (not x4283) x4122)
+(or (not x4283) x4121)
+(or (not x4283) (not x4165))
+(or (not x4283) (not x4260))
+(or (not x4283) (not x4228))
+(or (not x4283) (not x4172))
+(or (not x4283) (not x4204))
+(or (not x4283) (not x4252))
+(or (not x4283) (not x4253))
+(or (not x4283) (not x4254))
+(or (not x4283) (not x4255))
+(or x4284 (not x4283))
+(or x4284 (not x4282))
+(or x4283 x4282 (not x4284))
+(or x4285 x4253)
+(or x4285 x4260)
+(or (not x4253) (not x4260) (not x4285))
+(or x4286 (not x4253))
+(or x4286 (not x4271))
+(or x4286 (not x4165))
+(or x4253 x4271 x4165 (not x4286))
+(or x4260 x4253 (not x4287) x4288)
+(or (not x4288) (not x4260))
+(or (not x4288) (not x4253))
+(or (not x4288) x4287)
+(or x4289 x4165)
+(or x4289 (not x4288))
+(or (not x4165) x4288 (not x4289))
+(or x4290 x4271)
+(or x4290 (not x4165))
+(or x4290 (not x4260))
+(or (not x4271) x4165 x4260 (not x4290))
+(or (not x4122) (not x4121) x4204 x4252 x4257 x4172 x4228 x4258 x4259 x4254 x4255 (not x4290) (not x4289) (not x4286) (not x4285) x4291)
+(or (not x4291) x4122)
+(or (not x4291) x4121)
+(or (not x4291) (not x4204))
+(or (not x4291) (not x4252))
+(or (not x4291) (not x4257))
+(or (not x4291) (not x4172))
+(or (not x4291) (not x4228))
+(or (not x4291) (not x4258))
+(or (not x4291) (not x4259))
+(or (not x4291) (not x4254))
+(or (not x4291) (not x4255))
+(or (not x4291) x4290)
+(or (not x4291) x4289)
+(or (not x4291) x4286)
+(or (not x4291) x4285)
+(or (not x4122) (not x4121) (not x4292) x4293)
+(or (not x4293) x4122)
+(or (not x4293) x4121)
+(or (not x4293) x4292)
+(or x4213 (not x4294))
+(or x4213 (not x4295))
+(or x4294 x4295 (not x4213))
+(or x4296 (not x4297))
+(or x4296 x4254)
+(or x4297 (not x4254) (not x4296))
+(or x4298 (not x4165))
+(or x4298 (not x4254))
+(or x4298 (not x4252))
+(or x4298 (not x4253))
+(or x4165 x4254 x4252 x4253 (not x4298))
+(or x4299 x4253)
+(or x4299 x4252)
+(or (not x4253) (not x4252) (not x4299))
+(or x4255 (not x4299) (not x4298) (not x4296) x4300)
+(or (not x4300) (not x4255))
+(or (not x4300) x4299)
+(or (not x4300) x4298)
+(or (not x4300) x4296)
+(or x4212 (not x4260))
+(or x4212 (not x4257))
+(or x4212 (not x4172))
+(or x4212 (not x4228))
+(or x4212 (not x4258))
+(or x4212 (not x4259))
+(or x4212 (not x4300))
+(or x4260 x4257 x4172 x4228 x4258 x4259 x4300 (not x4212))
+(or x4211 x4259)
+(or x4211 x4258)
+(or (not x4259) (not x4258) (not x4211))
+(or x4210 (not x4301))
+(or x4210 x4260)
+(or x4301 (not x4260) (not x4210))
+(or x4209 x4172)
+(or x4209 (not x4302))
+(or (not x4172) x4302 (not x4209))
+(or (not x4192) x4191 x4190 x4189 x4271 x4303)
+(or (not x4303) x4192)
+(or (not x4303) (not x4191))
+(or (not x4303) (not x4190))
+(or (not x4303) (not x4189))
+(or (not x4303) (not x4271))
+(or (not x4192) x4191 x4190 x4189 (not x4271) (not x4187) x4304)
+(or (not x4304) x4192)
+(or (not x4304) (not x4191))
+(or (not x4304) (not x4190))
+(or (not x4304) (not x4189))
+(or (not x4304) x4271)
+(or (not x4304) x4187)
+(or x4287 (not x4304))
+(or x4287 (not x4303))
+(or x4304 x4303 (not x4287))
+(or (not x4192) x4191 x4190 x4189 (not x4271) x4305)
+(or (not x4305) x4192)
+(or (not x4305) (not x4191))
+(or (not x4305) (not x4190))
+(or (not x4305) (not x4189))
+(or (not x4305) x4271)
+(or x4306 (not x4305))
+(or x4306 (not x4304))
+(or x4306 (not x4303))
+(or x4305 x4304 x4303 (not x4306))
+(or x4254 x4252 x4253 x4260 x4257 x4172 x4228 x4258 x4259 (not x4306) x4307)
+(or (not x4307) (not x4254))
+(or (not x4307) (not x4252))
+(or (not x4307) (not x4253))
+(or (not x4307) (not x4260))
+(or (not x4307) (not x4257))
+(or (not x4307) (not x4172))
+(or (not x4307) (not x4228))
+(or (not x4307) (not x4258))
+(or (not x4307) (not x4259))
+(or (not x4307) x4306)
+(or x4208 x4165)
+(or x4208 (not x4307))
+(or (not x4165) x4307 (not x4208))
+(or x4207 (not x4308))
+(or x4207 x4228)
+(or x4308 (not x4228) (not x4207))
+(or x4206 (not x4309))
+(or x4206 x4257)
+(or x4309 (not x4257) (not x4206))
+(or x4205 x4256)
+(or x4205 x4172)
+(or (not x4256) (not x4172) (not x4205))
+(or (not x4238) (not x4122) (not x4121) x4204 (not x4205) (not x4206) (not x4207) (not x4208) (not x4209) (not x4210) (not x4211) (not x4212) (not x4213) (not x4310) (not x4275) (not x4311) (not x4312) (not x4277) (not x4313) (not x4202) x4314)
+(or (not x4314) x4238)
+(or (not x4314) x4122)
+(or (not x4314) x4121)
+(or (not x4314) (not x4204))
+(or (not x4314) x4205)
+(or (not x4314) x4206)
+(or (not x4314) x4207)
+(or (not x4314) x4208)
+(or (not x4314) x4209)
+(or (not x4314) x4210)
+(or (not x4314) x4211)
+(or (not x4314) x4212)
+(or (not x4314) x4213)
+(or (not x4314) x4310)
+(or (not x4314) x4275)
+(or (not x4314) x4311)
+(or (not x4314) x4312)
+(or (not x4314) x4277)
+(or (not x4314) x4313)
+(or (not x4314) x4202)
+(or x4315 x4122)
+(or x4315 x4121)
+(or x4315 (not x4204))
+(or x4315 (not x4316))
+(or x4315 (not x4317))
+(or x4315 (not x4318))
+(or x4315 (not x4319))
+(or x4315 (not x4320))
+(or x4315 (not x4321))
+(or x4315 (not x4322))
+(or x4315 (not x4323))
+(or x4315 (not x4324))
+(or x4315 (not x4325))
+(or x4315 (not x4326))
+(or x4315 (not x4327))
+(or x4315 (not x4328))
+(or x4315 (not x4329))
+(or x4315 (not x4330))
+(or x4315 (not x4186))
+(or (not x4122) (not x4121) x4204 x4316 x4317 x4318 x4319 x4320 x4321 x4322 x4323 x4324 x4325 x4326 x4327 x4328 x4329 x4330 x4186 (not x4315))
+(or x4331 x4122)
+(or x4331 x4121)
+(or x4331 (not x4204))
+(or x4331 (not x4316))
+(or x4331 (not x4317))
+(or x4331 (not x4318))
+(or x4331 (not x4319))
+(or x4331 (not x4320))
+(or x4331 (not x4321))
+(or x4331 (not x4322))
+(or x4331 (not x4323))
+(or x4331 (not x4324))
+(or x4331 (not x4325))
+(or x4331 (not x4326))
+(or x4331 (not x4327))
+(or x4331 (not x4328))
+(or x4331 (not x4329))
+(or x4331 (not x4330))
+(or x4331 x4200)
+(or (not x4122) (not x4121) x4204 x4316 x4317 x4318 x4319 x4320 x4321 x4322 x4323 x4324 x4325 x4326 x4327 x4328 x4329 x4330 (not x4200) (not x4331))
+(or (not x4331) (not x4315) x4332)
+(or (not x4332) x4331)
+(or (not x4332) x4315)
+(or x4333 (not x4332))
+(or x4333 (not x4314))
+(or x4332 x4314 (not x4333))
+(or (not x4202) (not x4334) x4335)
+(or (not x4335) x4202)
+(or (not x4335) x4334)
+(or (not x4192) x4191 x4190 x4189 (not x4336) x4337)
+(or (not x4337) x4192)
+(or (not x4337) (not x4191))
+(or (not x4337) (not x4190))
+(or (not x4337) (not x4189))
+(or (not x4337) x4336)
+(or x4338 (not x4337))
+(or x4338 (not x4335))
+(or x4337 x4335 (not x4338))
+(or (not x4202) (not x4339) x4340)
+(or (not x4340) x4202)
+(or (not x4340) x4339)
+(or x4341 (not x4186))
+(or x4341 (not x4340))
+(or x4186 x4340 (not x4341))
+(or x4258 x4259 (not x4257) (not x4122) (not x4121) x4165 x4260 x4228 x4172 x4204 x4252 x4253 x4254 x4255 x4342)
+(or (not x4342) (not x4258))
+(or (not x4342) (not x4259))
+(or (not x4342) x4257)
+(or (not x4342) x4122)
+(or (not x4342) x4121)
+(or (not x4342) (not x4165))
+(or (not x4342) (not x4260))
+(or (not x4342) (not x4228))
+(or (not x4342) (not x4172))
+(or (not x4342) (not x4204))
+(or (not x4342) (not x4252))
+(or (not x4342) (not x4253))
+(or (not x4342) (not x4254))
+(or (not x4342) (not x4255))
+(or (not x4274) (not x4275) (not x4276) (not x4277) x4343)
+(or (not x4343) x4274)
+(or (not x4343) x4275)
+(or (not x4343) x4276)
+(or (not x4343) x4277)
+(or x4344 (not x4345))
+(or x4344 (not x4346))
+(or x4344 (not x4327))
+(or x4344 (not x4326))
+(or x4344 (not x4347))
+(or x4344 (not x4348))
+(or x4344 (not x4330))
+(or x4344 (not x4329))
+(or x4344 (not x4216))
+(or x4344 (not x4217))
+(or x4345 x4346 x4327 x4326 x4347 x4348 x4330 x4329 x4216 x4217 (not x4344))
+(or (not x4310) (not x4275) (not x4311) (not x4312) (not x4277) (not x4313) x4248)
+(or (not x4248) x4310)
+(or (not x4248) x4275)
+(or (not x4248) x4311)
+(or (not x4248) x4312)
+(or (not x4248) x4277)
+(or (not x4248) x4313)
+(or x4262 (not x4248))
+(or x4262 (not x4346))
+(or x4262 (not x4326))
+(or x4262 (not x4348))
+(or x4262 (not x4329))
+(or x4262 x4238)
+(or x4248 x4346 x4326 x4348 x4329 (not x4238) (not x4262))
+(or (not x4262) (not x4344) (not x4274) (not x4275) (not x4276) (not x4277) x4172 x4252 x4253 x4254 x4255 x4257 x4204 x4258 x4259 x4165 x4260 x4349)
+(or (not x4349) x4262)
+(or (not x4349) x4344)
+(or (not x4349) x4274)
+(or (not x4349) x4275)
+(or (not x4349) x4276)
+(or (not x4349) x4277)
+(or (not x4349) (not x4172))
+(or (not x4349) (not x4252))
+(or (not x4349) (not x4253))
+(or (not x4349) (not x4254))
+(or (not x4349) (not x4255))
+(or (not x4349) (not x4257))
+(or (not x4349) (not x4204))
+(or (not x4349) (not x4258))
+(or (not x4349) (not x4259))
+(or (not x4349) (not x4165))
+(or (not x4349) (not x4260))
+(or x4249 (not x4175))
+(or x4249 (not x4173))
+(or x4249 (not x4174))
+(or x4249 x4203)
+(or x4249 x4239)
+(or x4175 x4173 x4174 (not x4203) (not x4239) (not x4249))
+(or (not x4249) (not x4174) (not x4250) (not x4251) x4228 x4252 x4253 x4254 x4255 x4256 (not x4172) x4257 x4204 x4258 x4259 x4165 x4260 x4281)
+(or (not x4281) x4249)
+(or (not x4281) x4174)
+(or (not x4281) x4250)
+(or (not x4281) x4251)
+(or (not x4281) (not x4228))
+(or (not x4281) (not x4252))
+(or (not x4281) (not x4253))
+(or (not x4281) (not x4254))
+(or (not x4281) (not x4255))
+(or (not x4281) (not x4256))
+(or (not x4281) x4172)
+(or (not x4281) (not x4257))
+(or (not x4281) (not x4204))
+(or (not x4281) (not x4258))
+(or (not x4281) (not x4259))
+(or (not x4281) (not x4165))
+(or (not x4281) (not x4260))
+(or x4350 (not x4281))
+(or x4350 (not x4349))
+(or x4281 x4349 (not x4350))
+(or (not x4122) (not x4121) (not x4228) (not x4350) x4351)
+(or (not x4351) x4122)
+(or (not x4351) x4121)
+(or (not x4351) x4228)
+(or (not x4351) x4350)
+(or x4352 (not x4351))
+(or x4352 (not x4342))
+(or x4351 x4342 (not x4352))
+(or (not x4353) (not x4354) x4324)
+(or (not x4324) x4353)
+(or (not x4324) x4354)
+(or (not x4355) (not x4254) x4356)
+(or (not x4356) x4355)
+(or (not x4356) x4254)
+(or x4165 x4254 x4252 x4253 x4357)
+(or (not x4357) (not x4165))
+(or (not x4357) (not x4254))
+(or (not x4357) (not x4252))
+(or (not x4357) (not x4253))
+(or (not x4253) (not x4252) x4358)
+(or (not x4358) x4253)
+(or (not x4358) x4252)
+(or x4359 (not x4255))
+(or x4359 (not x4358))
+(or x4359 (not x4357))
+(or x4359 (not x4356))
+(or x4255 x4358 x4357 x4356 (not x4359))
+(or x4260 x4257 x4172 x4228 x4258 x4259 x4295)
+(or (not x4295) (not x4260))
+(or (not x4295) (not x4257))
+(or (not x4295) (not x4172))
+(or (not x4295) (not x4228))
+(or (not x4295) (not x4258))
+(or (not x4295) (not x4259))
+(or x4260 x4257 x4172 x4228 x4258 x4259 (not x4359) x4323)
+(or (not x4323) (not x4260))
+(or (not x4323) (not x4257))
+(or (not x4323) (not x4172))
+(or (not x4323) (not x4228))
+(or (not x4323) (not x4258))
+(or (not x4323) (not x4259))
+(or (not x4323) x4359)
+(or (not x4259) (not x4258) x4322)
+(or (not x4322) x4259)
+(or (not x4322) x4258)
+(or (not x4360) (not x4260) x4321)
+(or (not x4321) x4360)
+(or (not x4321) x4260)
+(or (not x4172) (not x4361) x4320)
+(or (not x4320) x4172)
+(or (not x4320) x4361)
+(or x4268 x4192)
+(or x4268 (not x4191))
+(or x4268 (not x4190))
+(or x4268 (not x4189))
+(or x4268 (not x4271))
+(or (not x4192) x4191 x4190 x4189 x4271 (not x4268))
+(or x4267 x4192)
+(or x4267 (not x4191))
+(or x4267 (not x4190))
+(or x4267 (not x4189))
+(or x4267 x4271)
+(or x4267 x4187)
+(or (not x4192) x4191 x4190 x4189 (not x4271) (not x4187) (not x4267))
+(or x4362 x4192)
+(or x4362 (not x4191))
+(or x4362 (not x4190))
+(or x4362 (not x4189))
+(or x4362 x4271)
+(or (not x4192) x4191 x4190 x4189 (not x4271) (not x4362))
+(or (not x4362) (not x4267) (not x4268) x4363)
+(or (not x4363) x4362)
+(or (not x4363) x4267)
+(or (not x4363) x4268)
+(or x4354 (not x4260))
+(or x4354 (not x4257))
+(or x4354 (not x4172))
+(or x4354 (not x4228))
+(or x4354 (not x4258))
+(or x4354 (not x4259))
+(or x4260 x4257 x4172 x4228 x4258 x4259 (not x4354))
+(or x4364 (not x4254))
+(or x4364 (not x4252))
+(or x4364 (not x4253))
+(or x4364 (not x4260))
+(or x4364 (not x4257))
+(or x4364 (not x4172))
+(or x4364 (not x4228))
+(or x4364 (not x4258))
+(or x4364 (not x4259))
+(or x4364 (not x4363))
+(or x4254 x4252 x4253 x4260 x4257 x4172 x4228 x4258 x4259 x4363 (not x4364))
+(or (not x4165) (not x4364) x4319)
+(or (not x4319) x4165)
+(or (not x4319) x4364)
+(or (not x4365) (not x4228) x4318)
+(or (not x4318) x4365)
+(or (not x4318) x4228)
+(or (not x4366) (not x4257) x4317)
+(or (not x4317) x4366)
+(or (not x4317) x4257)
+(or (not x4256) (not x4172) x4316)
+(or (not x4316) x4256)
+(or (not x4316) x4172)
+(or x4367 x4122)
+(or x4367 x4121)
+(or x4367 (not x4204))
+(or x4367 (not x4316))
+(or x4367 (not x4317))
+(or x4367 (not x4318))
+(or x4367 (not x4319))
+(or x4367 (not x4320))
+(or x4367 (not x4321))
+(or x4367 (not x4322))
+(or x4367 (not x4323))
+(or x4367 (not x4324))
+(or (not x4122) (not x4121) x4204 x4316 x4317 x4318 x4319 x4320 x4321 x4322 x4323 x4324 (not x4367))
+(or x4255 (not x4122) (not x4121) x4252 x4253 (not x4254) x4257 x4204 x4258 x4259 x4165 x4260 x4228 x4172 x4368)
+(or (not x4368) (not x4255))
+(or (not x4368) x4122)
+(or (not x4368) x4121)
+(or (not x4368) (not x4252))
+(or (not x4368) (not x4253))
+(or (not x4368) x4254)
+(or (not x4368) (not x4257))
+(or (not x4368) (not x4204))
+(or (not x4368) (not x4258))
+(or (not x4368) (not x4259))
+(or (not x4368) (not x4165))
+(or (not x4368) (not x4260))
+(or (not x4368) (not x4228))
+(or (not x4368) (not x4172))
+(or x4250 (not x4239))
+(or x4250 (not x4175))
+(or x4250 (not x4173))
+(or x4250 (not x4174))
+(or x4250 x4203)
+(or x4239 x4175 x4173 x4174 (not x4203) (not x4250))
+(or x4175 x4173 x4174 (not x4203) (not x4239) x4369)
+(or (not x4369) (not x4175))
+(or (not x4369) (not x4173))
+(or (not x4369) (not x4174))
+(or (not x4369) x4203)
+(or (not x4369) x4239)
+(or x4370 (not x4369))
+(or x4370 x4174)
+(or x4369 (not x4174) (not x4370))
+(or (not x4122) (not x4121) (not x4370) (not x4250) (not x4251) x4228 x4252 x4253 x4254 x4255 x4256 (not x4172) x4257 x4204 x4258 x4259 x4165 x4260 x4371)
+(or (not x4371) x4122)
+(or (not x4371) x4121)
+(or (not x4371) x4370)
+(or (not x4371) x4250)
+(or (not x4371) x4251)
+(or (not x4371) (not x4228))
+(or (not x4371) (not x4252))
+(or (not x4371) (not x4253))
+(or (not x4371) (not x4254))
+(or (not x4371) (not x4255))
+(or (not x4371) (not x4256))
+(or (not x4371) x4172)
+(or (not x4371) (not x4257))
+(or (not x4371) (not x4204))
+(or (not x4371) (not x4258))
+(or (not x4371) (not x4259))
+(or (not x4371) (not x4165))
+(or (not x4371) (not x4260))
+(or x4257 x4259 (not x4258) (not x4122) (not x4121) x4165 x4260 x4228 x4172 x4204 x4252 x4253 x4254 x4255 x4372)
+(or (not x4372) (not x4257))
+(or (not x4372) (not x4259))
+(or (not x4372) x4258)
+(or (not x4372) x4122)
+(or (not x4372) x4121)
+(or (not x4372) (not x4165))
+(or (not x4372) (not x4260))
+(or (not x4372) (not x4228))
+(or (not x4372) (not x4172))
+(or (not x4372) (not x4204))
+(or (not x4372) (not x4252))
+(or (not x4372) (not x4253))
+(or (not x4372) (not x4254))
+(or (not x4372) (not x4255))
+(or x4182 x4164 x4179)
+(or (not x4179) (not x4182))
+(or (not x4179) (not x4164))
+(or x4251 (not x4179))
+(or x4251 (not x4173))
+(or x4251 (not x4174))
+(or x4251 x4175)
+(or x4179 x4173 x4174 (not x4175) (not x4251))
+(or (not x4251) x4239 x4175 x4173 x4174 (not x4203) x4373)
+(or (not x4373) x4251)
+(or (not x4373) (not x4239))
+(or (not x4373) (not x4175))
+(or (not x4373) (not x4173))
+(or (not x4373) (not x4174))
+(or (not x4373) x4203)
+(or x4171 (not x4182))
+(or x4171 (not x4164))
+(or x4182 x4164 (not x4171))
+(or (not x4171) x4173 x4174 (not x4175) x4374)
+(or (not x4374) x4171)
+(or (not x4374) (not x4173))
+(or (not x4374) (not x4174))
+(or (not x4374) x4175)
+(or x4375 (not x4374))
+(or x4375 (not x4373))
+(or x4374 x4373 (not x4375))
+(or (not x4122) (not x4121) x4228 x4252 x4253 x4254 x4255 x4256 (not x4172) x4257 x4204 x4258 x4259 x4165 x4260 (not x4375) x4376)
+(or (not x4376) x4122)
+(or (not x4376) x4121)
+(or (not x4376) (not x4228))
+(or (not x4376) (not x4252))
+(or (not x4376) (not x4253))
+(or (not x4376) (not x4254))
+(or (not x4376) (not x4255))
+(or (not x4376) (not x4256))
+(or (not x4376) x4172)
+(or (not x4376) (not x4257))
+(or (not x4376) (not x4204))
+(or (not x4376) (not x4258))
+(or (not x4376) (not x4259))
+(or (not x4376) (not x4165))
+(or (not x4376) (not x4260))
+(or (not x4376) x4375)
+(or x4377 (not x4378))
+(or x4377 (not x4379))
+(or x4377 (not x4380))
+(or x4377 (not x4381))
+(or x4377 (not x4383))
+(or x4378 x4379 x4380 x4381 x4383 (not x4377))
+(or x4384 (not x4383))
+(or x4384 (not x4382))
+(or x4384 x87)
+(or x4384 (not x88))
+(or x4384 x4122)
+(or x4384 x4121)
+(or x4383 x4382 (not x87) x88 (not x4122) (not x4121) (not x4384))
+(or (not x4384) (not x4385) (not x4377) x4386)
+(or (not x4386) x4384)
+(or (not x4386) x4385)
+(or (not x4386) x4377)
+(or x4387 (not x4378))
+(or x4387 (not x4379))
+(or x4387 (not x4380))
+(or x4387 (not x4381))
+(or x4387 (not x4382))
+(or x4378 x4379 x4380 x4381 x4382 (not x4387))
+(or x4385 (not x4378))
+(or x4385 (not x4379))
+(or x4385 (not x4380))
+(or x4385 x4383)
+(or x4385 x4382)
+(or x4378 x4379 x4380 (not x4383) (not x4382) (not x4385))
+(or x4383 x4382 (not x87) x88 (not x4122) (not x4121) x4378)
+(or (not x4378) (not x4383))
+(or (not x4378) (not x4382))
+(or (not x4378) x87)
+(or (not x4378) (not x88))
+(or (not x4378) x4122)
+(or (not x4378) x4121)
+(or x4388 (not x4378))
+(or x4388 (not x4383))
+(or x4388 x4382)
+(or x4378 x4383 (not x4382) (not x4388))
+(or (not x4388) (not x4385) (not x4387) x4389)
+(or (not x4389) x4388)
+(or (not x4389) x4385)
+(or (not x4389) x4387)
+(or x4390 (not x4391))
+(or x4390 (not x4392))
+(or x4390 (not x4393))
+(or x4390 (not x4394))
+(or x4390 (not x4396))
+(or x4391 x4392 x4393 x4394 x4396 (not x4390))
+(or x4397 (not x4396))
+(or x4397 (not x4395))
+(or x4397 x87)
+(or x4397 (not x88))
+(or x4397 x4122)
+(or x4397 x4121)
+(or x4396 x4395 (not x87) x88 (not x4122) (not x4121) (not x4397))
+(or (not x4397) (not x4398) (not x4390) x4399)
+(or (not x4399) x4397)
+(or (not x4399) x4398)
+(or (not x4399) x4390)
+(or x4400 (not x4391))
+(or x4400 (not x4392))
+(or x4400 (not x4393))
+(or x4400 (not x4394))
+(or x4400 (not x4395))
+(or x4391 x4392 x4393 x4394 x4395 (not x4400))
+(or x4398 (not x4391))
+(or x4398 (not x4392))
+(or x4398 (not x4393))
+(or x4398 x4396)
+(or x4398 x4395)
+(or x4391 x4392 x4393 (not x4396) (not x4395) (not x4398))
+(or x4396 x4395 (not x87) x88 (not x4122) (not x4121) x4391)
+(or (not x4391) (not x4396))
+(or (not x4391) (not x4395))
+(or (not x4391) x87)
+(or (not x4391) (not x88))
+(or (not x4391) x4122)
+(or (not x4391) x4121)
+(or x4401 (not x4391))
+(or x4401 (not x4396))
+(or x4401 x4395)
+(or x4391 x4396 (not x4395) (not x4401))
+(or (not x4401) (not x4398) (not x4400) x4402)
+(or (not x4402) x4401)
+(or (not x4402) x4398)
+(or (not x4402) x4400)
+(or x4403 (not x4238))
+(or x4403 (not x4404))
+(or x4403 (not x4405))
+(or x4403 (not x4346))
+(or x4403 (not x4326))
+(or x4403 (not x4348))
+(or x4403 (not x4329))
+(or x4403 (not x4325))
+(or x4403 (not x4326))
+(or x4403 (not x4327))
+(or x4403 (not x4328))
+(or x4403 (not x4329))
+(or x4403 (not x4330))
+(or x4238 x4404 x4405 x4346 x4326 x4348 x4329 x4325 x4326 x4327 x4328 x4329 x4330 (not x4403))
+(or (not x4229) (not x4230) (not x4403) x4406)
+(or (not x4406) x4229)
+(or (not x4406) x4230)
+(or (not x4406) x4403)
+(or x4407 (not x4122))
+(or x4407 (not x4121))
+(or x4122 x4121 (not x4407))
+(or x4122 x4121 x4408)
+(or (not x4408) (not x4122))
+(or (not x4408) (not x4121))
+(or x4409 (not x4408))
+(or x4409 (not x4122))
+(or x4409 x4121)
+(or x4408 x4122 (not x4121) (not x4409))
+(or x4410 (not x4411))
+(or x4410 (not x4412))
+(or x4410 (not x4413))
+(or x4410 (not x4414))
+(or x4410 (not x4415))
+(or x4410 (not x4416))
+(or x4410 (not x4347))
+(or x4410 (not x4417))
+(or x4410 (not x4418))
+(or x4410 (not x4419))
+(or x4410 (not x4420))
+(or x4410 (not x4424))
+(or x4411 x4412 x4413 x4414 x4415 x4416 x4347 x4417 x4418 x4419 x4420 x4424 (not x4410))
+(or (not x4425) (not x4426) (not x4427) (not x4428) (not x4429) (not x4430) (not x4431) (not x4432) (not x4433) (not x4434) (not x4435) (not x4410) x4436)
+(or (not x4436) x4425)
+(or (not x4436) x4426)
+(or (not x4436) x4427)
+(or (not x4436) x4428)
+(or (not x4436) x4429)
+(or (not x4436) x4430)
+(or (not x4436) x4431)
+(or (not x4436) x4432)
+(or (not x4436) x4433)
+(or (not x4436) x4434)
+(or (not x4436) x4435)
+(or (not x4436) x4410)
+(or x4437 (not x4411))
+(or x4437 (not x4412))
+(or x4437 (not x4413))
+(or x4437 (not x4414))
+(or x4437 (not x4415))
+(or x4437 (not x4416))
+(or x4437 (not x4347))
+(or x4437 (not x4417))
+(or x4437 (not x4418))
+(or x4437 (not x4419))
+(or x4437 (not x4420))
+(or x4437 (not x4423))
+(or x4411 x4412 x4413 x4414 x4415 x4416 x4347 x4417 x4418 x4419 x4420 x4423 (not x4437))
+(or x4438 x4439)
+(or x4438 (not x4440))
+(or (not x4439) x4440 (not x4438))
+(or (not x4438) (not x4439) x4441)
+(or (not x4441) x4438)
+(or (not x4441) x4439)
+(or x4442 (not x4411))
+(or x4442 (not x4412))
+(or x4442 (not x4413))
+(or x4442 (not x4414))
+(or x4442 (not x4415))
+(or x4442 (not x4416))
+(or x4442 (not x4347))
+(or x4442 (not x4417))
+(or x4442 (not x4424))
+(or x4442 (not x4423))
+(or x4442 (not x4422))
+(or x4442 x4421)
+(or x4442 (not x89))
+(or x4442 (not x88))
+(or x4442 (not x4441))
+(or x4411 x4412 x4413 x4414 x4415 x4416 x4347 x4417 x4424 x4423 x4422 (not x4421) x89 x88 x4441 (not x4442))
+(or x4443 (not x4411))
+(or x4443 (not x4412))
+(or x4443 (not x4413))
+(or x4443 (not x4414))
+(or x4443 (not x4415))
+(or x4443 (not x4416))
+(or x4443 (not x4424))
+(or x4443 (not x4423))
+(or x4443 x4422)
+(or x4443 x4421)
+(or x4443 x4444)
+(or x4443 x4445)
+(or x4443 x4446)
+(or x4411 x4412 x4413 x4414 x4415 x4416 x4424 x4423 (not x4422) (not x4421) (not x4444) (not x4445) (not x4446) (not x4443))
+(or x4447 (not x4411))
+(or x4447 (not x4412))
+(or x4447 (not x4413))
+(or x4447 (not x4414))
+(or x4447 (not x4424))
+(or x4447 (not x4423))
+(or x4447 x4422)
+(or x4447 (not x4421))
+(or x4447 (not x4448))
+(or x4447 x4449)
+(or x4447 x4450)
+(or x4411 x4412 x4413 x4414 x4424 x4423 (not x4422) x4421 x4448 (not x4449) (not x4450) (not x4447))
+(or x4451 (not x4411))
+(or x4451 (not x4424))
+(or x4451 (not x4423))
+(or x4451 (not x4422))
+(or x4451 (not x4421))
+(or x4451 (not x88))
+(or x4451 x4122)
+(or x4451 x4121)
+(or x4451 (not x4448))
+(or x4451 (not x4452))
+(or x4451 (not x4453))
+(or x4451 x4454)
+(or x4411 x4424 x4423 x4422 x4421 x88 (not x4122) (not x4121) x4448 x4452 x4453 (not x4454) (not x4451))
+(or x4455 x4456)
+(or x4455 x4457)
+(or x4455 x4458)
+(or (not x4456) (not x4457) (not x4458) (not x4455))
+(or (not x4455) (not x4456) x4459)
+(or (not x4459) x4455)
+(or (not x4459) x4456)
+(or x4460 x4461)
+(or x4460 (not x4459))
+(or (not x4461) x4459 (not x4460))
+(or (not x4460) (not x4461) x4462)
+(or (not x4462) x4460)
+(or (not x4462) x4461)
+(or x4463 (not x4424))
+(or x4463 (not x4423))
+(or x4463 (not x4422))
+(or x4463 (not x4421))
+(or x4463 (not x88))
+(or x4463 x4122)
+(or x4463 x4121)
+(or x4463 (not x4448))
+(or x4463 (not x4464))
+(or x4463 (not x4462))
+(or x4424 x4423 x4422 x4421 x88 (not x4122) (not x4121) x4448 x4464 x4462 (not x4463))
+(or (not x4463) (not x4451) (not x4427) (not x4428) (not x4447) (not x4430) (not x4443) (not x4432) (not x4442) (not x4435) (not x4437) x4465)
+(or (not x4465) x4463)
+(or (not x4465) x4451)
+(or (not x4465) x4427)
+(or (not x4465) x4428)
+(or (not x4465) x4447)
+(or (not x4465) x4430)
+(or (not x4465) x4443)
+(or (not x4465) x4432)
+(or (not x4465) x4442)
+(or (not x4465) x4435)
+(or (not x4465) x4437)
+(or x4466 (not x4411))
+(or x4466 (not x4412))
+(or x4466 (not x4413))
+(or x4466 (not x4414))
+(or x4466 (not x4415))
+(or x4466 (not x4416))
+(or x4466 (not x4347))
+(or x4466 (not x4417))
+(or x4466 (not x4418))
+(or x4466 (not x4419))
+(or x4466 (not x4420))
+(or x4466 (not x4422))
+(or x4411 x4412 x4413 x4414 x4415 x4416 x4347 x4417 x4418 x4419 x4420 x4422 (not x4466))
+(or x4434 (not x4411))
+(or x4434 (not x4412))
+(or x4434 (not x4413))
+(or x4434 (not x4414))
+(or x4434 (not x4415))
+(or x4434 (not x4416))
+(or x4434 (not x4347))
+(or x4434 (not x4417))
+(or x4434 (not x4418))
+(or x4434 (not x4424))
+(or x4434 x4423)
+(or x4434 x4422)
+(or x4434 (not x4421))
+(or x4434 (not x89))
+(or x4434 (not x88))
+(or x4411 x4412 x4413 x4414 x4415 x4416 x4347 x4417 x4418 x4424 (not x4423) (not x4422) x4421 x89 x88 (not x4434))
+(or x4467 x4440)
+(or x4467 x4468)
+(or (not x4440) (not x4468) (not x4467))
+(or (not x4467) (not x4440) x4469)
+(or (not x4469) x4467)
+(or (not x4469) x4440)
+(or x4470 (not x4411))
+(or x4470 (not x4412))
+(or x4470 (not x4413))
+(or x4470 (not x4414))
+(or x4470 (not x4415))
+(or x4470 (not x4416))
+(or x4470 (not x4347))
+(or x4470 (not x4417))
+(or x4470 (not x4424))
+(or x4470 (not x4423))
+(or x4470 (not x4422))
+(or x4470 x4421)
+(or x4470 (not x89))
+(or x4470 (not x88))
+(or x4470 x4439)
+(or x4470 (not x4469))
+(or x4411 x4412 x4413 x4414 x4415 x4416 x4347 x4417 x4424 x4423 x4422 (not x4421) x89 x88 (not x4439) x4469 (not x4470))
+(or x4471 x4446)
+(or x4471 (not x4472))
+(or (not x4446) x4472 (not x4471))
+(or (not x4471) (not x4446) x4473)
+(or (not x4473) x4471)
+(or (not x4473) x4446)
+(or x4474 x4444)
+(or x4474 x4445)
+(or x4474 (not x4473))
+(or (not x4444) (not x4445) x4473 (not x4474))
+(or (not x4474) (not x4444) x4475)
+(or (not x4475) x4474)
+(or (not x4475) x4444)
+(or x4476 (not x4411))
+(or x4476 (not x4412))
+(or x4476 (not x4413))
+(or x4476 (not x4414))
+(or x4476 (not x4415))
+(or x4476 (not x4416))
+(or x4476 (not x4424))
+(or x4476 (not x4423))
+(or x4476 x4422)
+(or x4476 x4421)
+(or x4476 (not x4475))
+(or x4411 x4412 x4413 x4414 x4415 x4416 x4424 x4423 (not x4422) (not x4421) x4475 (not x4476))
+(or x4477 x4450)
+(or x4477 (not x4478))
+(or (not x4450) x4478 (not x4477))
+(or (not x4477) (not x4450) x4479)
+(or (not x4479) x4477)
+(or (not x4479) x4450)
+(or x4480 (not x4411))
+(or x4480 (not x4412))
+(or x4480 (not x4413))
+(or x4480 (not x4414))
+(or x4480 (not x4424))
+(or x4480 (not x4423))
+(or x4480 x4422)
+(or x4480 (not x4421))
+(or x4480 (not x4448))
+(or x4480 x4449)
+(or x4480 (not x4479))
+(or x4411 x4412 x4413 x4414 x4424 x4423 (not x4422) x4421 x4448 (not x4449) x4479 (not x4480))
+(or x4481 (not x4411))
+(or x4481 (not x4424))
+(or x4481 (not x4423))
+(or x4481 (not x4422))
+(or x4481 (not x4421))
+(or x4481 (not x88))
+(or x4481 x4122)
+(or x4481 x4121)
+(or x4481 (not x4448))
+(or x4481 (not x4452))
+(or x4481 (not x4453))
+(or x4481 (not x4454))
+(or x4411 x4424 x4423 x4422 x4421 x88 (not x4122) (not x4121) x4448 x4452 x4453 x4454 (not x4481))
+(or x4482 x4461)
+(or x4482 x4456)
+(or x4482 x4457)
+(or x4482 (not x4458))
+(or (not x4461) (not x4456) (not x4457) x4458 (not x4482))
+(or (not x4482) (not x4461) x4483)
+(or (not x4483) x4482)
+(or (not x4483) x4461)
+(or x4484 (not x4424))
+(or x4484 (not x4423))
+(or x4484 (not x4422))
+(or x4484 (not x4421))
+(or x4484 (not x88))
+(or x4484 x4122)
+(or x4484 x4121)
+(or x4484 (not x4448))
+(or x4484 (not x4464))
+(or x4484 (not x4483))
+(or x4424 x4423 x4422 x4421 x88 (not x4122) (not x4121) x4448 x4464 x4483 (not x4484))
+(or (not x4484) (not x4481) (not x4428) (not x4480) (not x4476) (not x4432) (not x4470) (not x4434) (not x4435) (not x4466) x4485)
+(or (not x4485) x4484)
+(or (not x4485) x4481)
+(or (not x4485) x4428)
+(or (not x4485) x4480)
+(or (not x4485) x4476)
+(or (not x4485) x4432)
+(or (not x4485) x4470)
+(or (not x4485) x4434)
+(or (not x4485) x4435)
+(or (not x4485) x4466)
+(or x4486 (not x4328))
+(or x4486 (not x4330))
+(or x4486 (not x4329))
+(or x4328 x4330 x4329 (not x4486))
+(or (not x4486) (not x88) x4420)
+(or (not x4420) x4486)
+(or (not x4420) x88)
+(or x4487 (not x4411))
+(or x4487 (not x4412))
+(or x4487 (not x4413))
+(or x4487 (not x4414))
+(or x4487 (not x4415))
+(or x4487 (not x4416))
+(or x4487 (not x4347))
+(or x4487 (not x4417))
+(or x4487 (not x4418))
+(or x4487 (not x4419))
+(or x4487 (not x4420))
+(or x4487 (not x4421))
+(or x4411 x4412 x4413 x4414 x4415 x4416 x4347 x4417 x4418 x4419 x4420 x4421 (not x4487))
+(or x4312 (not x4424))
+(or x4312 x4423)
+(or x4312 (not x4422))
+(or x4312 (not x4421))
+(or x4424 (not x4423) x4422 x4421 (not x4312))
+(or (not x4312) (not x4313) (not x4277) x4488)
+(or (not x4488) x4312)
+(or (not x4488) x4313)
+(or (not x4488) x4277)
+(or x4424 (not x4423) (not x4422) x4421 x89 x88 x4419)
+(or (not x4419) (not x4424))
+(or (not x4419) x4423)
+(or (not x4419) x4422)
+(or (not x4419) (not x4421))
+(or (not x4419) (not x89))
+(or (not x4419) (not x88))
+(or x4424 x4423 x4422 (not x4421) x89 x88 x4418)
+(or (not x4418) (not x4424))
+(or (not x4418) (not x4423))
+(or (not x4418) (not x4422))
+(or (not x4418) x4421)
+(or (not x4418) (not x89))
+(or (not x4418) (not x88))
+(or x4435 (not x4411))
+(or x4435 (not x4412))
+(or x4435 (not x4413))
+(or x4435 (not x4414))
+(or x4435 (not x4415))
+(or x4435 (not x4416))
+(or x4435 (not x4347))
+(or x4435 (not x4417))
+(or x4435 (not x4418))
+(or x4435 (not x4419))
+(or x4435 (not x4488))
+(or x4435 x88)
+(or x4411 x4412 x4413 x4414 x4415 x4416 x4347 x4417 x4418 x4419 x4488 (not x88) (not x4435))
+(or x4489 x4468)
+(or x4489 x4490)
+(or (not x4468) (not x4490) (not x4489))
+(or (not x4489) (not x4468) x4491)
+(or (not x4491) x4489)
+(or (not x4491) x4468)
+(or x4424 x4423 x4422 (not x4421) x89 (not x88) x4417)
+(or (not x4417) (not x4424))
+(or (not x4417) (not x4423))
+(or (not x4417) (not x4422))
+(or (not x4417) x4421)
+(or (not x4417) (not x89))
+(or (not x4417) x88)
+(or x4433 (not x4411))
+(or x4433 (not x4412))
+(or x4433 (not x4413))
+(or x4433 (not x4414))
+(or x4433 (not x4415))
+(or x4433 (not x4416))
+(or x4433 (not x4347))
+(or x4433 (not x4417))
+(or x4433 (not x4424))
+(or x4433 (not x4423))
+(or x4433 (not x4422))
+(or x4433 x4421)
+(or x4433 (not x89))
+(or x4433 (not x88))
+(or x4411 x4412 x4413 x4414 x4415 x4416 x4347 x4417 x4424 x4423 x4422 (not x4421) x89 x88 (not x4433))
+(or x4492 (not x4411))
+(or x4492 (not x4412))
+(or x4492 (not x4413))
+(or x4492 (not x4414))
+(or x4492 (not x4415))
+(or x4492 (not x4416))
+(or x4492 (not x4347))
+(or x4492 (not x4417))
+(or x4492 (not x4424))
+(or x4492 (not x4423))
+(or x4492 (not x4422))
+(or x4492 x4421)
+(or x4492 (not x89))
+(or x4492 (not x88))
+(or x4492 x4439)
+(or x4492 x4440)
+(or x4492 (not x4491))
+(or x4411 x4412 x4413 x4414 x4415 x4416 x4347 x4417 x4424 x4423 x4422 (not x4421) x89 x88 (not x4439) (not x4440) x4491 (not x4492))
+(or x4432 (not x4411))
+(or x4432 (not x4412))
+(or x4432 (not x4413))
+(or x4432 (not x4414))
+(or x4432 (not x4415))
+(or x4432 (not x4416))
+(or x4432 (not x4347))
+(or x4432 (not x4424))
+(or x4432 (not x4423))
+(or x4432 (not x4422))
+(or x4432 x4421)
+(or x4432 (not x89))
+(or x4432 x88)
+(or x4411 x4412 x4413 x4414 x4415 x4416 x4347 x4424 x4423 x4422 (not x4421) x89 (not x88) (not x4432))
+(or x4493 x4445)
+(or x4493 (not x4446))
+(or (not x4445) x4446 (not x4493))
+(or (not x4493) (not x4445) x4494)
+(or (not x4494) x4493)
+(or (not x4494) x4445)
+(or x4431 (not x4411))
+(or x4431 (not x4412))
+(or x4431 (not x4413))
+(or x4431 (not x4414))
+(or x4431 (not x4415))
+(or x4431 (not x4416))
+(or x4431 (not x4424))
+(or x4431 (not x4423))
+(or x4431 x4422)
+(or x4431 x4421)
+(or x4411 x4412 x4413 x4414 x4415 x4416 x4424 x4423 (not x4422) (not x4421) (not x4431))
+(or x4495 (not x4411))
+(or x4495 (not x4412))
+(or x4495 (not x4413))
+(or x4495 (not x4414))
+(or x4495 (not x4415))
+(or x4495 (not x4416))
+(or x4495 (not x4424))
+(or x4495 (not x4423))
+(or x4495 x4422)
+(or x4495 x4421)
+(or x4495 x4444)
+(or x4495 (not x4494))
+(or x4411 x4412 x4413 x4414 x4415 x4416 x4424 x4423 (not x4422) (not x4421) (not x4444) x4494 (not x4495))
+(or x4424 x4423 (not x4422) x4421 (not x4496) x4415)
+(or (not x4415) (not x4424))
+(or (not x4415) (not x4423))
+(or (not x4415) x4422)
+(or (not x4415) (not x4421))
+(or (not x4415) x4496)
+(or x4430 (not x4411))
+(or x4430 (not x4412))
+(or x4430 (not x4413))
+(or x4430 (not x4414))
+(or x4430 (not x4415))
+(or x4430 (not x4424))
+(or x4430 (not x4423))
+(or x4430 x4422)
+(or x4430 (not x4421))
+(or x4411 x4412 x4413 x4414 x4415 x4424 x4423 (not x4422) x4421 (not x4430))
+(or x4497 x4449)
+(or x4497 x4450)
+(or x4497 x4478)
+(or x4497 x4498)
+(or (not x4449) (not x4450) (not x4478) (not x4498) (not x4497))
+(or (not x4497) (not x4449) x4499)
+(or (not x4499) x4497)
+(or (not x4499) x4449)
+(or x4424 x4423 (not x4422) x4421 (not x88) (not x89) x4414)
+(or (not x4414) (not x4424))
+(or (not x4414) (not x4423))
+(or (not x4414) x4422)
+(or (not x4414) (not x4421))
+(or (not x4414) x88)
+(or (not x4414) x89)
+(or x4429 (not x4411))
+(or x4429 (not x4412))
+(or x4429 (not x4413))
+(or x4429 (not x4414))
+(or x4429 (not x4424))
+(or x4429 (not x4423))
+(or x4429 x4422)
+(or x4429 (not x4421))
+(or x4429 (not x4448))
+(or x4411 x4412 x4413 x4414 x4424 x4423 (not x4422) x4421 x4448 (not x4429))
+(or x4500 (not x4411))
+(or x4500 (not x4412))
+(or x4500 (not x4413))
+(or x4500 (not x4414))
+(or x4500 (not x4424))
+(or x4500 (not x4423))
+(or x4500 x4422)
+(or x4500 (not x4421))
+(or x4500 (not x4448))
+(or x4500 (not x4499))
+(or x4411 x4412 x4413 x4414 x4424 x4423 (not x4422) x4421 x4448 x4499 (not x4500))
+(or x4428 (not x4411))
+(or x4428 (not x4412))
+(or x4428 (not x4413))
+(or x4428 (not x4424))
+(or x4428 (not x4423))
+(or x4428 x4422)
+(or x4428 (not x4421))
+(or x4428 x88)
+(or x4428 x89)
+(or x4411 x4412 x4413 x4424 x4423 (not x4422) x4421 (not x88) (not x89) (not x4428))
+(or x4424 x4423 x4422 x4421 x88 (not x4122) (not x4121) (not x4496) (not x4501) (not x4502) x4412)
+(or (not x4412) (not x4424))
+(or (not x4412) (not x4423))
+(or (not x4412) (not x4422))
+(or (not x4412) (not x4421))
+(or (not x4412) (not x88))
+(or (not x4412) x4122)
+(or (not x4412) x4121)
+(or (not x4412) x4496)
+(or (not x4412) x4501)
+(or (not x4412) x4502)
+(or x4427 (not x4411))
+(or x4427 (not x4412))
+(or x4427 (not x4424))
+(or x4427 (not x4423))
+(or x4427 (not x4422))
+(or x4427 (not x4421))
+(or x4427 (not x88))
+(or x4427 x4122)
+(or x4427 x4121)
+(or x4411 x4412 x4424 x4423 x4422 x4421 x88 (not x4122) (not x4121) (not x4427))
+(or (not x4383) (not x4382) x4381)
+(or (not x4381) x4383)
+(or (not x4381) x4382)
+(or (not x4383) x4382 x4380)
+(or (not x4380) x4383)
+(or (not x4380) (not x4382))
+(or x4383 (not x4382) x4379)
+(or (not x4379) (not x4383))
+(or (not x4379) x4382)
+(or x4383 x4382 (not x87) x88 x4503)
+(or (not x4503) (not x4383))
+(or (not x4503) (not x4382))
+(or (not x4503) x87)
+(or (not x4503) (not x88))
+(or x4496 (not x4503))
+(or x4496 (not x4379))
+(or x4496 (not x4380))
+(or x4496 (not x4381))
+(or x4503 x4379 x4380 x4381 (not x4496))
+(or x4424 x4423 x4422 x4421 x88 (not x4122) (not x4121) x4413)
+(or (not x4413) (not x4424))
+(or (not x4413) (not x4423))
+(or (not x4413) (not x4422))
+(or (not x4413) (not x4421))
+(or (not x4413) (not x88))
+(or (not x4413) x4122)
+(or (not x4413) x4121)
+(or x4424 x4423 x4422 x4421 x88 (not x4122) (not x4121) (not x4496) (not x4504) x4411)
+(or (not x4411) (not x4424))
+(or (not x4411) (not x4423))
+(or (not x4411) (not x4422))
+(or (not x4411) (not x4421))
+(or (not x4411) (not x88))
+(or (not x4411) x4122)
+(or (not x4411) x4121)
+(or (not x4411) x4496)
+(or (not x4411) x4504)
+(or x4426 (not x4411))
+(or x4426 (not x4424))
+(or x4426 (not x4423))
+(or x4426 (not x4422))
+(or x4426 (not x4421))
+(or x4426 (not x88))
+(or x4426 x4122)
+(or x4426 x4121)
+(or x4426 (not x4448))
+(or x4426 (not x4452))
+(or x4426 (not x4453))
+(or x4411 x4424 x4423 x4422 x4421 x88 (not x4122) (not x4121) x4448 x4452 x4453 (not x4426))
+(or x4505 (not x4411))
+(or x4505 (not x4424))
+(or x4505 (not x4423))
+(or x4505 (not x4422))
+(or x4505 (not x4421))
+(or x4505 (not x88))
+(or x4505 x4122)
+(or x4505 x4121)
+(or x4505 (not x4448))
+(or x4505 (not x4452))
+(or x4505 (not x4453))
+(or x4505 x4454)
+(or x4505 x4506)
+(or x4411 x4424 x4423 x4422 x4421 x88 (not x4122) (not x4121) x4448 x4452 x4453 (not x4454) (not x4506) (not x4505))
+(or x4507 x4457)
+(or x4507 x4458)
+(or (not x4457) (not x4458) (not x4507))
+(or (not x4507) (not x4457) x4508)
+(or (not x4508) x4507)
+(or (not x4508) x4457)
+(or x4509 x4383)
+(or x4509 x4382)
+(or (not x4383) (not x4382) (not x4509))
+(or x4510 x4383)
+(or x4510 (not x4382))
+(or (not x4383) x4382 (not x4510))
+(or x4511 (not x4383))
+(or x4511 x4382)
+(or x4383 (not x4382) (not x4511))
+(or x4512 (not x4383))
+(or x4512 (not x4382))
+(or x4512 x87)
+(or x4512 (not x88))
+(or x4383 x4382 (not x87) x88 (not x4512))
+(or (not x4512) (not x4511) (not x4510) (not x4509) x4448)
+(or (not x4448) x4512)
+(or (not x4448) x4511)
+(or (not x4448) x4510)
+(or (not x4448) x4509)
+(or x4425 (not x4424))
+(or x4425 (not x4423))
+(or x4425 (not x4422))
+(or x4425 (not x4421))
+(or x4425 (not x88))
+(or x4425 x4122)
+(or x4425 x4121)
+(or x4425 (not x4448))
+(or x4425 (not x4464))
+(or x4424 x4423 x4422 x4421 x88 (not x4122) (not x4121) x4448 x4464 (not x4425))
+(or x4513 (not x4424))
+(or x4513 (not x4423))
+(or x4513 (not x4422))
+(or x4513 (not x4421))
+(or x4513 (not x88))
+(or x4513 x4122)
+(or x4513 x4121)
+(or x4513 (not x4448))
+(or x4513 (not x4464))
+(or x4513 x4461)
+(or x4513 x4456)
+(or x4513 (not x4508))
+(or x4424 x4423 x4422 x4421 x88 (not x4122) (not x4121) x4448 x4464 (not x4461) (not x4456) x4508 (not x4513))
+(or (not x4513) (not x4505) (not x4427) (not x4428) (not x4500) (not x4430) (not x4495) (not x4432) (not x4492) (not x4435) (not x4487) x4514)
+(or (not x4514) x4513)
+(or (not x4514) x4505)
+(or (not x4514) x4427)
+(or (not x4514) x4428)
+(or (not x4514) x4500)
+(or (not x4514) x4430)
+(or (not x4514) x4495)
+(or (not x4514) x4432)
+(or (not x4514) x4492)
+(or (not x4514) x4435)
+(or (not x4514) x4487)
+(or x4515 (not x4516))
+(or x4515 (not x4517))
+(or x4515 (not x4518))
+(or x4515 (not x4519))
+(or x4515 (not x4520))
+(or x4515 (not x4521))
+(or x4515 (not x4345))
+(or x4515 (not x4522))
+(or x4515 (not x4523))
+(or x4515 (not x4524))
+(or x4515 (not x4525))
+(or x4515 (not x4529))
+(or x4516 x4517 x4518 x4519 x4520 x4521 x4345 x4522 x4523 x4524 x4525 x4529 (not x4515))
+(or (not x4530) (not x4531) (not x4532) (not x4533) (not x4534) (not x4535) (not x4536) (not x4537) (not x4538) (not x4539) (not x4540) (not x4515) x4541)
+(or (not x4541) x4530)
+(or (not x4541) x4531)
+(or (not x4541) x4532)
+(or (not x4541) x4533)
+(or (not x4541) x4534)
+(or (not x4541) x4535)
+(or (not x4541) x4536)
+(or (not x4541) x4537)
+(or (not x4541) x4538)
+(or (not x4541) x4539)
+(or (not x4541) x4540)
+(or (not x4541) x4515)
+(or x4542 (not x4516))
+(or x4542 (not x4517))
+(or x4542 (not x4518))
+(or x4542 (not x4519))
+(or x4542 (not x4520))
+(or x4542 (not x4521))
+(or x4542 (not x4345))
+(or x4542 (not x4522))
+(or x4542 (not x4523))
+(or x4542 (not x4524))
+(or x4542 (not x4525))
+(or x4542 (not x4528))
+(or x4516 x4517 x4518 x4519 x4520 x4521 x4345 x4522 x4523 x4524 x4525 x4528 (not x4542))
+(or x4543 x4544)
+(or x4543 (not x4545))
+(or (not x4544) x4545 (not x4543))
+(or (not x4543) (not x4544) x4546)
+(or (not x4546) x4543)
+(or (not x4546) x4544)
+(or x4547 (not x4516))
+(or x4547 (not x4517))
+(or x4547 (not x4518))
+(or x4547 (not x4519))
+(or x4547 (not x4520))
+(or x4547 (not x4521))
+(or x4547 (not x4345))
+(or x4547 (not x4522))
+(or x4547 (not x4529))
+(or x4547 (not x4528))
+(or x4547 (not x4527))
+(or x4547 x4526)
+(or x4547 (not x89))
+(or x4547 (not x88))
+(or x4547 (not x4546))
+(or x4516 x4517 x4518 x4519 x4520 x4521 x4345 x4522 x4529 x4528 x4527 (not x4526) x89 x88 x4546 (not x4547))
+(or x4548 (not x4516))
+(or x4548 (not x4517))
+(or x4548 (not x4518))
+(or x4548 (not x4519))
+(or x4548 (not x4520))
+(or x4548 (not x4521))
+(or x4548 (not x4529))
+(or x4548 (not x4528))
+(or x4548 x4527)
+(or x4548 x4526)
+(or x4548 x4549)
+(or x4548 x4550)
+(or x4548 x4551)
+(or x4516 x4517 x4518 x4519 x4520 x4521 x4529 x4528 (not x4527) (not x4526) (not x4549) (not x4550) (not x4551) (not x4548))
+(or x4552 (not x4516))
+(or x4552 (not x4517))
+(or x4552 (not x4518))
+(or x4552 (not x4519))
+(or x4552 (not x4529))
+(or x4552 (not x4528))
+(or x4552 x4527)
+(or x4552 (not x4526))
+(or x4552 (not x4553))
+(or x4552 x4554)
+(or x4552 x4555)
+(or x4516 x4517 x4518 x4519 x4529 x4528 (not x4527) x4526 x4553 (not x4554) (not x4555) (not x4552))
+(or x4556 (not x4516))
+(or x4556 (not x4529))
+(or x4556 (not x4528))
+(or x4556 (not x4527))
+(or x4556 (not x4526))
+(or x4556 (not x88))
+(or x4556 x4122)
+(or x4556 x4121)
+(or x4556 (not x4553))
+(or x4556 (not x4452))
+(or x4556 (not x4453))
+(or x4556 x4557)
+(or x4516 x4529 x4528 x4527 x4526 x88 (not x4122) (not x4121) x4553 x4452 x4453 (not x4557) (not x4556))
+(or x4558 x4559)
+(or x4558 x4560)
+(or x4558 x4561)
+(or (not x4559) (not x4560) (not x4561) (not x4558))
+(or (not x4558) (not x4559) x4562)
+(or (not x4562) x4558)
+(or (not x4562) x4559)
+(or x4563 x4564)
+(or x4563 (not x4562))
+(or (not x4564) x4562 (not x4563))
+(or (not x4563) (not x4564) x4565)
+(or (not x4565) x4563)
+(or (not x4565) x4564)
+(or x4566 (not x4529))
+(or x4566 (not x4528))
+(or x4566 (not x4527))
+(or x4566 (not x4526))
+(or x4566 (not x88))
+(or x4566 x4122)
+(or x4566 x4121)
+(or x4566 (not x4553))
+(or x4566 (not x4464))
+(or x4566 (not x4565))
+(or x4529 x4528 x4527 x4526 x88 (not x4122) (not x4121) x4553 x4464 x4565 (not x4566))
+(or (not x4566) (not x4556) (not x4532) (not x4533) (not x4552) (not x4535) (not x4548) (not x4537) (not x4547) (not x4540) (not x4542) x4567)
+(or (not x4567) x4566)
+(or (not x4567) x4556)
+(or (not x4567) x4532)
+(or (not x4567) x4533)
+(or (not x4567) x4552)
+(or (not x4567) x4535)
+(or (not x4567) x4548)
+(or (not x4567) x4537)
+(or (not x4567) x4547)
+(or (not x4567) x4540)
+(or (not x4567) x4542)
+(or x4568 (not x4516))
+(or x4568 (not x4517))
+(or x4568 (not x4518))
+(or x4568 (not x4519))
+(or x4568 (not x4520))
+(or x4568 (not x4521))
+(or x4568 (not x4345))
+(or x4568 (not x4522))
+(or x4568 (not x4523))
+(or x4568 (not x4524))
+(or x4568 (not x4525))
+(or x4568 (not x4527))
+(or x4516 x4517 x4518 x4519 x4520 x4521 x4345 x4522 x4523 x4524 x4525 x4527 (not x4568))
+(or x4539 (not x4516))
+(or x4539 (not x4517))
+(or x4539 (not x4518))
+(or x4539 (not x4519))
+(or x4539 (not x4520))
+(or x4539 (not x4521))
+(or x4539 (not x4345))
+(or x4539 (not x4522))
+(or x4539 (not x4523))
+(or x4539 (not x4529))
+(or x4539 x4528)
+(or x4539 x4527)
+(or x4539 (not x4526))
+(or x4539 (not x89))
+(or x4539 (not x88))
+(or x4516 x4517 x4518 x4519 x4520 x4521 x4345 x4522 x4523 x4529 (not x4528) (not x4527) x4526 x89 x88 (not x4539))
+(or x4569 x4545)
+(or x4569 x4570)
+(or (not x4545) (not x4570) (not x4569))
+(or (not x4569) (not x4545) x4571)
+(or (not x4571) x4569)
+(or (not x4571) x4545)
+(or x4572 (not x4516))
+(or x4572 (not x4517))
+(or x4572 (not x4518))
+(or x4572 (not x4519))
+(or x4572 (not x4520))
+(or x4572 (not x4521))
+(or x4572 (not x4345))
+(or x4572 (not x4522))
+(or x4572 (not x4529))
+(or x4572 (not x4528))
+(or x4572 (not x4527))
+(or x4572 x4526)
+(or x4572 (not x89))
+(or x4572 (not x88))
+(or x4572 x4544)
+(or x4572 (not x4571))
+(or x4516 x4517 x4518 x4519 x4520 x4521 x4345 x4522 x4529 x4528 x4527 (not x4526) x89 x88 (not x4544) x4571 (not x4572))
+(or x4573 x4551)
+(or x4573 (not x4574))
+(or (not x4551) x4574 (not x4573))
+(or (not x4573) (not x4551) x4575)
+(or (not x4575) x4573)
+(or (not x4575) x4551)
+(or x4576 x4549)
+(or x4576 x4550)
+(or x4576 (not x4575))
+(or (not x4549) (not x4550) x4575 (not x4576))
+(or (not x4576) (not x4549) x4577)
+(or (not x4577) x4576)
+(or (not x4577) x4549)
+(or x4578 (not x4516))
+(or x4578 (not x4517))
+(or x4578 (not x4518))
+(or x4578 (not x4519))
+(or x4578 (not x4520))
+(or x4578 (not x4521))
+(or x4578 (not x4529))
+(or x4578 (not x4528))
+(or x4578 x4527)
+(or x4578 x4526)
+(or x4578 (not x4577))
+(or x4516 x4517 x4518 x4519 x4520 x4521 x4529 x4528 (not x4527) (not x4526) x4577 (not x4578))
+(or x4579 x4555)
+(or x4579 (not x4580))
+(or (not x4555) x4580 (not x4579))
+(or (not x4579) (not x4555) x4581)
+(or (not x4581) x4579)
+(or (not x4581) x4555)
+(or x4582 (not x4516))
+(or x4582 (not x4517))
+(or x4582 (not x4518))
+(or x4582 (not x4519))
+(or x4582 (not x4529))
+(or x4582 (not x4528))
+(or x4582 x4527)
+(or x4582 (not x4526))
+(or x4582 (not x4553))
+(or x4582 x4554)
+(or x4582 (not x4581))
+(or x4516 x4517 x4518 x4519 x4529 x4528 (not x4527) x4526 x4553 (not x4554) x4581 (not x4582))
+(or x4583 (not x4516))
+(or x4583 (not x4529))
+(or x4583 (not x4528))
+(or x4583 (not x4527))
+(or x4583 (not x4526))
+(or x4583 (not x88))
+(or x4583 x4122)
+(or x4583 x4121)
+(or x4583 (not x4553))
+(or x4583 (not x4452))
+(or x4583 (not x4453))
+(or x4583 (not x4557))
+(or x4516 x4529 x4528 x4527 x4526 x88 (not x4122) (not x4121) x4553 x4452 x4453 x4557 (not x4583))
+(or x4584 x4564)
+(or x4584 x4559)
+(or x4584 x4560)
+(or x4584 (not x4561))
+(or (not x4564) (not x4559) (not x4560) x4561 (not x4584))
+(or (not x4584) (not x4564) x4585)
+(or (not x4585) x4584)
+(or (not x4585) x4564)
+(or x4586 (not x4529))
+(or x4586 (not x4528))
+(or x4586 (not x4527))
+(or x4586 (not x4526))
+(or x4586 (not x88))
+(or x4586 x4122)
+(or x4586 x4121)
+(or x4586 (not x4553))
+(or x4586 (not x4464))
+(or x4586 (not x4585))
+(or x4529 x4528 x4527 x4526 x88 (not x4122) (not x4121) x4553 x4464 x4585 (not x4586))
+(or (not x4586) (not x4583) (not x4533) (not x4582) (not x4578) (not x4537) (not x4572) (not x4539) (not x4540) (not x4568) x4587)
+(or (not x4587) x4586)
+(or (not x4587) x4583)
+(or (not x4587) x4533)
+(or (not x4587) x4582)
+(or (not x4587) x4578)
+(or (not x4587) x4537)
+(or (not x4587) x4572)
+(or (not x4587) x4539)
+(or (not x4587) x4540)
+(or (not x4587) x4568)
+(or x4588 (not x4325))
+(or x4588 (not x4327))
+(or x4588 (not x4326))
+(or x4325 x4327 x4326 (not x4588))
+(or (not x4588) (not x88) x4525)
+(or (not x4525) x4588)
+(or (not x4525) x88)
+(or x4589 (not x4516))
+(or x4589 (not x4517))
+(or x4589 (not x4518))
+(or x4589 (not x4519))
+(or x4589 (not x4520))
+(or x4589 (not x4521))
+(or x4589 (not x4345))
+(or x4589 (not x4522))
+(or x4589 (not x4523))
+(or x4589 (not x4524))
+(or x4589 (not x4525))
+(or x4589 (not x4526))
+(or x4516 x4517 x4518 x4519 x4520 x4521 x4345 x4522 x4523 x4524 x4525 x4526 (not x4589))
+(or x4310 (not x4529))
+(or x4310 x4528)
+(or x4310 (not x4527))
+(or x4310 (not x4526))
+(or x4529 (not x4528) x4527 x4526 (not x4310))
+(or (not x4310) (not x4311) (not x4275) x4590)
+(or (not x4590) x4310)
+(or (not x4590) x4311)
+(or (not x4590) x4275)
+(or x4529 (not x4528) (not x4527) x4526 x89 x88 x4524)
+(or (not x4524) (not x4529))
+(or (not x4524) x4528)
+(or (not x4524) x4527)
+(or (not x4524) (not x4526))
+(or (not x4524) (not x89))
+(or (not x4524) (not x88))
+(or x4529 x4528 x4527 (not x4526) x89 x88 x4523)
+(or (not x4523) (not x4529))
+(or (not x4523) (not x4528))
+(or (not x4523) (not x4527))
+(or (not x4523) x4526)
+(or (not x4523) (not x89))
+(or (not x4523) (not x88))
+(or x4540 (not x4516))
+(or x4540 (not x4517))
+(or x4540 (not x4518))
+(or x4540 (not x4519))
+(or x4540 (not x4520))
+(or x4540 (not x4521))
+(or x4540 (not x4345))
+(or x4540 (not x4522))
+(or x4540 (not x4523))
+(or x4540 (not x4524))
+(or x4540 (not x4590))
+(or x4540 x88)
+(or x4516 x4517 x4518 x4519 x4520 x4521 x4345 x4522 x4523 x4524 x4590 (not x88) (not x4540))
+(or x4591 x4570)
+(or x4591 x4592)
+(or (not x4570) (not x4592) (not x4591))
+(or (not x4591) (not x4570) x4593)
+(or (not x4593) x4591)
+(or (not x4593) x4570)
+(or x4529 x4528 x4527 (not x4526) x89 (not x88) x4522)
+(or (not x4522) (not x4529))
+(or (not x4522) (not x4528))
+(or (not x4522) (not x4527))
+(or (not x4522) x4526)
+(or (not x4522) (not x89))
+(or (not x4522) x88)
+(or x4538 (not x4516))
+(or x4538 (not x4517))
+(or x4538 (not x4518))
+(or x4538 (not x4519))
+(or x4538 (not x4520))
+(or x4538 (not x4521))
+(or x4538 (not x4345))
+(or x4538 (not x4522))
+(or x4538 (not x4529))
+(or x4538 (not x4528))
+(or x4538 (not x4527))
+(or x4538 x4526)
+(or x4538 (not x89))
+(or x4538 (not x88))
+(or x4516 x4517 x4518 x4519 x4520 x4521 x4345 x4522 x4529 x4528 x4527 (not x4526) x89 x88 (not x4538))
+(or x4594 (not x4516))
+(or x4594 (not x4517))
+(or x4594 (not x4518))
+(or x4594 (not x4519))
+(or x4594 (not x4520))
+(or x4594 (not x4521))
+(or x4594 (not x4345))
+(or x4594 (not x4522))
+(or x4594 (not x4529))
+(or x4594 (not x4528))
+(or x4594 (not x4527))
+(or x4594 x4526)
+(or x4594 (not x89))
+(or x4594 (not x88))
+(or x4594 x4544)
+(or x4594 x4545)
+(or x4594 (not x4593))
+(or x4516 x4517 x4518 x4519 x4520 x4521 x4345 x4522 x4529 x4528 x4527 (not x4526) x89 x88 (not x4544) (not x4545) x4593 (not x4594))
+(or x4537 (not x4516))
+(or x4537 (not x4517))
+(or x4537 (not x4518))
+(or x4537 (not x4519))
+(or x4537 (not x4520))
+(or x4537 (not x4521))
+(or x4537 (not x4345))
+(or x4537 (not x4529))
+(or x4537 (not x4528))
+(or x4537 (not x4527))
+(or x4537 x4526)
+(or x4537 (not x89))
+(or x4537 x88)
+(or x4516 x4517 x4518 x4519 x4520 x4521 x4345 x4529 x4528 x4527 (not x4526) x89 (not x88) (not x4537))
+(or x4595 x4550)
+(or x4595 (not x4551))
+(or (not x4550) x4551 (not x4595))
+(or (not x4595) (not x4550) x4596)
+(or (not x4596) x4595)
+(or (not x4596) x4550)
+(or x4536 (not x4516))
+(or x4536 (not x4517))
+(or x4536 (not x4518))
+(or x4536 (not x4519))
+(or x4536 (not x4520))
+(or x4536 (not x4521))
+(or x4536 (not x4529))
+(or x4536 (not x4528))
+(or x4536 x4527)
+(or x4536 x4526)
+(or x4516 x4517 x4518 x4519 x4520 x4521 x4529 x4528 (not x4527) (not x4526) (not x4536))
+(or x4597 (not x4516))
+(or x4597 (not x4517))
+(or x4597 (not x4518))
+(or x4597 (not x4519))
+(or x4597 (not x4520))
+(or x4597 (not x4521))
+(or x4597 (not x4529))
+(or x4597 (not x4528))
+(or x4597 x4527)
+(or x4597 x4526)
+(or x4597 x4549)
+(or x4597 (not x4596))
+(or x4516 x4517 x4518 x4519 x4520 x4521 x4529 x4528 (not x4527) (not x4526) (not x4549) x4596 (not x4597))
+(or x4529 x4528 (not x4527) x4526 (not x4598) x4520)
+(or (not x4520) (not x4529))
+(or (not x4520) (not x4528))
+(or (not x4520) x4527)
+(or (not x4520) (not x4526))
+(or (not x4520) x4598)
+(or x4535 (not x4516))
+(or x4535 (not x4517))
+(or x4535 (not x4518))
+(or x4535 (not x4519))
+(or x4535 (not x4520))
+(or x4535 (not x4529))
+(or x4535 (not x4528))
+(or x4535 x4527)
+(or x4535 (not x4526))
+(or x4516 x4517 x4518 x4519 x4520 x4529 x4528 (not x4527) x4526 (not x4535))
+(or x4599 x4554)
+(or x4599 x4555)
+(or x4599 x4580)
+(or x4599 x4600)
+(or (not x4554) (not x4555) (not x4580) (not x4600) (not x4599))
+(or (not x4599) (not x4554) x4601)
+(or (not x4601) x4599)
+(or (not x4601) x4554)
+(or x4529 x4528 (not x4527) x4526 (not x88) (not x89) x4519)
+(or (not x4519) (not x4529))
+(or (not x4519) (not x4528))
+(or (not x4519) x4527)
+(or (not x4519) (not x4526))
+(or (not x4519) x88)
+(or (not x4519) x89)
+(or x4534 (not x4516))
+(or x4534 (not x4517))
+(or x4534 (not x4518))
+(or x4534 (not x4519))
+(or x4534 (not x4529))
+(or x4534 (not x4528))
+(or x4534 x4527)
+(or x4534 (not x4526))
+(or x4534 (not x4553))
+(or x4516 x4517 x4518 x4519 x4529 x4528 (not x4527) x4526 x4553 (not x4534))
+(or x4602 (not x4516))
+(or x4602 (not x4517))
+(or x4602 (not x4518))
+(or x4602 (not x4519))
+(or x4602 (not x4529))
+(or x4602 (not x4528))
+(or x4602 x4527)
+(or x4602 (not x4526))
+(or x4602 (not x4553))
+(or x4602 (not x4601))
+(or x4516 x4517 x4518 x4519 x4529 x4528 (not x4527) x4526 x4553 x4601 (not x4602))
+(or x4533 (not x4516))
+(or x4533 (not x4517))
+(or x4533 (not x4518))
+(or x4533 (not x4529))
+(or x4533 (not x4528))
+(or x4533 x4527)
+(or x4533 (not x4526))
+(or x4533 x88)
+(or x4533 x89)
+(or x4516 x4517 x4518 x4529 x4528 (not x4527) x4526 (not x88) (not x89) (not x4533))
+(or x4529 x4528 x4527 x4526 x88 (not x4122) (not x4121) (not x4598) (not x4501) (not x4502) x4517)
+(or (not x4517) (not x4529))
+(or (not x4517) (not x4528))
+(or (not x4517) (not x4527))
+(or (not x4517) (not x4526))
+(or (not x4517) (not x88))
+(or (not x4517) x4122)
+(or (not x4517) x4121)
+(or (not x4517) x4598)
+(or (not x4517) x4501)
+(or (not x4517) x4502)
+(or x4532 (not x4516))
+(or x4532 (not x4517))
+(or x4532 (not x4529))
+(or x4532 (not x4528))
+(or x4532 (not x4527))
+(or x4532 (not x4526))
+(or x4532 (not x88))
+(or x4532 x4122)
+(or x4532 x4121)
+(or x4516 x4517 x4529 x4528 x4527 x4526 x88 (not x4122) (not x4121) (not x4532))
+(or (not x4292) (not x4334) x4453)
+(or (not x4453) x4292)
+(or (not x4453) x4334)
+(or (not x4229) (not x4230) (not x4339) x4452)
+(or (not x4452) x4229)
+(or (not x4452) x4230)
+(or (not x4452) x4339)
+(or x4504 (not x4452))
+(or x4504 (not x4453))
+(or x4452 x4453 (not x4504))
+(or (not x4396) (not x4395) x4394)
+(or (not x4394) x4396)
+(or (not x4394) x4395)
+(or (not x4396) x4395 x4393)
+(or (not x4393) x4396)
+(or (not x4393) (not x4395))
+(or x4396 (not x4395) x4392)
+(or (not x4392) (not x4396))
+(or (not x4392) x4395)
+(or (not x87) x88 x4106)
+(or (not x4106) x87)
+(or (not x4106) (not x88))
+(or x4396 x4395 (not x87) x88 x4603)
+(or (not x4603) (not x4396))
+(or (not x4603) (not x4395))
+(or (not x4603) x87)
+(or (not x4603) (not x88))
+(or x4598 (not x4603))
+(or x4598 (not x4392))
+(or x4598 (not x4393))
+(or x4598 (not x4394))
+(or x4603 x4392 x4393 x4394 (not x4598))
+(or x4529 x4528 x4527 x4526 x88 (not x4122) (not x4121) x4518)
+(or (not x4518) (not x4529))
+(or (not x4518) (not x4528))
+(or (not x4518) (not x4527))
+(or (not x4518) (not x4526))
+(or (not x4518) (not x88))
+(or (not x4518) x4122)
+(or (not x4518) x4121)
+(or x4529 x4528 x4527 x4526 x88 (not x4122) (not x4121) (not x4598) (not x4504) x4516)
+(or (not x4516) (not x4529))
+(or (not x4516) (not x4528))
+(or (not x4516) (not x4527))
+(or (not x4516) (not x4526))
+(or (not x4516) (not x88))
+(or (not x4516) x4122)
+(or (not x4516) x4121)
+(or (not x4516) x4598)
+(or (not x4516) x4504)
+(or x4531 (not x4516))
+(or x4531 (not x4529))
+(or x4531 (not x4528))
+(or x4531 (not x4527))
+(or x4531 (not x4526))
+(or x4531 (not x88))
+(or x4531 x4122)
+(or x4531 x4121)
+(or x4531 (not x4553))
+(or x4531 (not x4452))
+(or x4531 (not x4453))
+(or x4516 x4529 x4528 x4527 x4526 x88 (not x4122) (not x4121) x4553 x4452 x4453 (not x4531))
+(or x4604 (not x4516))
+(or x4604 (not x4529))
+(or x4604 (not x4528))
+(or x4604 (not x4527))
+(or x4604 (not x4526))
+(or x4604 (not x88))
+(or x4604 x4122)
+(or x4604 x4121)
+(or x4604 (not x4553))
+(or x4604 (not x4452))
+(or x4604 (not x4453))
+(or x4604 x4557)
+(or x4604 x4605)
+(or x4516 x4529 x4528 x4527 x4526 x88 (not x4122) (not x4121) x4553 x4452 x4453 (not x4557) (not x4605) (not x4604))
+(or x4606 x4560)
+(or x4606 x4561)
+(or (not x4560) (not x4561) (not x4606))
+(or (not x4606) (not x4560) x4607)
+(or (not x4607) x4606)
+(or (not x4607) x4560)
+(or x4242 (not x4228))
+(or x4242 (not x4172))
+(or x4228 x4172 (not x4242))
+(or x4230 (not x4271))
+(or x4230 x4252)
+(or x4230 (not x4253))
+(or x4230 (not x4254))
+(or x4230 (not x4255))
+(or x4230 (not x4257))
+(or x4230 (not x4204))
+(or x4230 (not x4258))
+(or x4230 (not x4259))
+(or x4230 (not x4165))
+(or x4230 (not x4260))
+(or x4230 (not x4228))
+(or x4230 (not x4172))
+(or x4271 (not x4252) x4253 x4254 x4255 x4257 x4204 x4258 x4259 x4165 x4260 x4228 x4172 (not x4230))
+(or x4355 (not x4252))
+(or x4355 (not x4253))
+(or x4252 x4253 (not x4355))
+(or x4353 (not x4252))
+(or x4353 (not x4253))
+(or x4353 (not x4254))
+(or x4353 (not x4255))
+(or x4252 x4253 x4254 x4255 (not x4353))
+(or x4365 (not x4258))
+(or x4365 (not x4259))
+(or x4258 x4259 (not x4365))
+(or x4361 (not x4228))
+(or x4361 (not x4258))
+(or x4361 (not x4259))
+(or x4228 x4258 x4259 (not x4361))
+(or x4366 (not x4172))
+(or x4366 (not x4228))
+(or x4366 (not x4258))
+(or x4366 (not x4259))
+(or x4172 x4228 x4258 x4259 (not x4366))
+(or x4360 (not x4257))
+(or x4360 (not x4172))
+(or x4360 (not x4228))
+(or x4360 (not x4258))
+(or x4360 (not x4259))
+(or x4257 x4172 x4228 x4258 x4259 (not x4360))
+(or x4229 (not x4257))
+(or x4229 (not x4172))
+(or x4229 (not x4228))
+(or x4229 (not x4258))
+(or x4229 (not x4259))
+(or x4229 (not x4271))
+(or x4229 (not x4165))
+(or x4229 x4260)
+(or x4229 (not x4204))
+(or x4229 (not x4252))
+(or x4229 (not x4253))
+(or x4229 (not x4254))
+(or x4229 (not x4255))
+(or x4257 x4172 x4228 x4258 x4259 x4271 x4165 (not x4260) x4204 x4252 x4253 x4254 x4255 (not x4229))
+(or (not x4229) (not x4230) x4608)
+(or (not x4608) x4229)
+(or (not x4608) x4230)
+(or x4502 (not x4608))
+(or x4502 x4334)
+(or x4608 (not x4334) (not x4502))
+(or x4228 x4172 x4237)
+(or (not x4237) (not x4228))
+(or (not x4237) (not x4172))
+(or x4271 (not x4252) x4253 x4254 x4255 x4257 x4204 x4258 x4259 x4165 x4260 x4228 x4172 x4221)
+(or (not x4221) (not x4271))
+(or (not x4221) x4252)
+(or (not x4221) (not x4253))
+(or (not x4221) (not x4254))
+(or (not x4221) (not x4255))
+(or (not x4221) (not x4257))
+(or (not x4221) (not x4204))
+(or (not x4221) (not x4258))
+(or (not x4221) (not x4259))
+(or (not x4221) (not x4165))
+(or (not x4221) (not x4260))
+(or (not x4221) (not x4228))
+(or (not x4221) (not x4172))
+(or x4252 x4253 x4297)
+(or (not x4297) (not x4252))
+(or (not x4297) (not x4253))
+(or x4252 x4253 x4254 x4255 x4294)
+(or (not x4294) (not x4252))
+(or (not x4294) (not x4253))
+(or (not x4294) (not x4254))
+(or (not x4294) (not x4255))
+(or x4258 x4259 x4308)
+(or (not x4308) (not x4258))
+(or (not x4308) (not x4259))
+(or x4228 x4258 x4259 x4302)
+(or (not x4302) (not x4228))
+(or (not x4302) (not x4258))
+(or (not x4302) (not x4259))
+(or x4172 x4228 x4258 x4259 x4309)
+(or (not x4309) (not x4172))
+(or (not x4309) (not x4228))
+(or (not x4309) (not x4258))
+(or (not x4309) (not x4259))
+(or x4257 x4172 x4228 x4258 x4259 x4301)
+(or (not x4301) (not x4257))
+(or (not x4301) (not x4172))
+(or (not x4301) (not x4228))
+(or (not x4301) (not x4258))
+(or (not x4301) (not x4259))
+(or x4257 x4172 x4228 x4258 x4259 x4271 x4165 (not x4260) x4204 x4252 x4253 x4254 x4255 x4220)
+(or (not x4220) (not x4257))
+(or (not x4220) (not x4172))
+(or (not x4220) (not x4228))
+(or (not x4220) (not x4258))
+(or (not x4220) (not x4259))
+(or (not x4220) (not x4271))
+(or (not x4220) (not x4165))
+(or (not x4220) x4260)
+(or (not x4220) (not x4204))
+(or (not x4220) (not x4252))
+(or (not x4220) (not x4253))
+(or (not x4220) (not x4254))
+(or (not x4220) (not x4255))
+(or x4292 (not x4220))
+(or x4292 (not x4221))
+(or x4220 x4221 (not x4292))
+(or x4501 (not x4220))
+(or x4501 (not x4221))
+(or x4501 x4339)
+(or x4220 x4221 (not x4339) (not x4501))
+(or (not x4501) (not x4502) x4464)
+(or (not x4464) x4501)
+(or (not x4464) x4502)
+(or x4609 x4396)
+(or x4609 x4395)
+(or (not x4396) (not x4395) (not x4609))
+(or x4610 x4396)
+(or x4610 (not x4395))
+(or (not x4396) x4395 (not x4610))
+(or x4611 (not x4396))
+(or x4611 x4395)
+(or x4396 (not x4395) (not x4611))
+(or x4146 x87)
+(or x4146 (not x88))
+(or (not x87) x88 (not x4146))
+(or x4612 (not x4396))
+(or x4612 (not x4395))
+(or x4612 x87)
+(or x4612 (not x88))
+(or x4396 x4395 (not x87) x88 (not x4612))
+(or (not x4612) (not x4611) (not x4610) (not x4609) x4553)
+(or (not x4553) x4612)
+(or (not x4553) x4611)
+(or (not x4553) x4610)
+(or (not x4553) x4609)
+(or x4530 (not x4529))
+(or x4530 (not x4528))
+(or x4530 (not x4527))
+(or x4530 (not x4526))
+(or x4530 (not x88))
+(or x4530 x4122)
+(or x4530 x4121)
+(or x4530 (not x4553))
+(or x4530 (not x4464))
+(or x4529 x4528 x4527 x4526 x88 (not x4122) (not x4121) x4553 x4464 (not x4530))
+(or x4613 (not x4529))
+(or x4613 (not x4528))
+(or x4613 (not x4527))
+(or x4613 (not x4526))
+(or x4613 (not x88))
+(or x4613 x4122)
+(or x4613 x4121)
+(or x4613 (not x4553))
+(or x4613 (not x4464))
+(or x4613 x4564)
+(or x4613 x4559)
+(or x4613 (not x4607))
+(or x4529 x4528 x4527 x4526 x88 (not x4122) (not x4121) x4553 x4464 (not x4564) (not x4559) x4607 (not x4613))
+(or (not x4613) (not x4604) (not x4532) (not x4533) (not x4602) (not x4535) (not x4597) (not x4537) (not x4594) (not x4540) (not x4589) x4614)
+(or (not x4614) x4613)
+(or (not x4614) x4604)
+(or (not x4614) x4532)
+(or (not x4614) x4533)
+(or (not x4614) x4602)
+(or (not x4614) x4535)
+(or (not x4614) x4597)
+(or (not x4614) x4537)
+(or (not x4614) x4594)
+(or (not x4614) x4540)
+(or (not x4614) x4589)
+(or x4615 (not x4616))
+(or x4615 (not x4186))
+(or x4615 (not x4617))
+(or x4615 (not x4192))
+(or x4616 x4186 x4617 x4192 (not x4615))
+(or x4618 (not x4616))
+(or x4618 (not x4186))
+(or x4618 x4192)
+(or x4618 (not x4191))
+(or x4618 (not x4190))
+(or x4618 x4189)
+(or x4618 x4165)
+(or x4618 x4619)
+(or x4616 x4186 (not x4192) x4191 x4190 (not x4189) (not x4165) (not x4619) (not x4618))
+(or x4620 (not x4192))
+(or x4620 x4191)
+(or x4620 x4190)
+(or x4620 x4189)
+(or x4620 x4122)
+(or x4620 x4121)
+(or x4620 x4621)
+(or x4620 x4622)
+(or x4192 (not x4191) (not x4190) (not x4189) (not x4122) (not x4121) (not x4621) (not x4622) (not x4620))
+(or (not x4620) (not x4618) (not x4615) x4623)
+(or (not x4623) x4620)
+(or (not x4623) x4618)
+(or (not x4623) x4615)
+(or x4624 (not x4616))
+(or x4624 (not x4186))
+(or x4624 (not x4617))
+(or x4624 (not x4191))
+(or x4616 x4186 x4617 x4191 (not x4624))
+(or (not x4625) (not x4626) (not x4627) (not x4624) x4628)
+(or (not x4628) x4625)
+(or (not x4628) x4626)
+(or (not x4628) x4627)
+(or (not x4628) x4624)
+(or x4629 (not x4616))
+(or x4629 (not x4186))
+(or x4629 (not x4617))
+(or x4629 (not x4190))
+(or x4616 x4186 x4617 x4190 (not x4629))
+(or x4202 x4192)
+(or x4202 (not x4191))
+(or x4202 (not x4190))
+(or x4202 (not x4189))
+(or (not x4192) x4191 x4190 x4189 (not x4202))
+(or x4626 (not x4616))
+(or x4626 x4192)
+(or x4626 (not x4191))
+(or x4626 (not x4190))
+(or x4626 (not x4189))
+(or x4616 (not x4192) x4191 x4190 x4189 (not x4626))
+(or (not x4625) (not x4626) (not x4627) (not x4629) x4630)
+(or (not x4630) x4625)
+(or (not x4630) x4626)
+(or (not x4630) x4627)
+(or (not x4630) x4629)
+(or (not x4192) x4191 x4190 (not x4189) (not x4165) x4617)
+(or (not x4617) x4192)
+(or (not x4617) (not x4191))
+(or (not x4617) (not x4190))
+(or (not x4617) x4189)
+(or (not x4617) x4165)
+(or x4631 (not x4616))
+(or x4631 (not x4186))
+(or x4631 (not x4617))
+(or x4631 (not x4189))
+(or x4616 x4186 x4617 x4189 (not x4631))
+(or x4192 (not x4191) (not x4190) (not x4189) (not x4122) (not x4121) (not x4621) x4616)
+(or (not x4616) (not x4192))
+(or (not x4616) x4191)
+(or (not x4616) x4190)
+(or (not x4616) x4189)
+(or (not x4616) x4122)
+(or (not x4616) x4121)
+(or (not x4616) x4621)
+(or x4627 (not x4616))
+(or x4627 (not x4186))
+(or x4627 x4192)
+(or x4627 (not x4191))
+(or x4627 (not x4190))
+(or x4627 x4189)
+(or x4627 x4165)
+(or x4627 (not x4619))
+(or x4616 x4186 (not x4192) x4191 x4190 (not x4189) (not x4165) x4619 (not x4627))
+(or x4625 (not x4192))
+(or x4625 x4191)
+(or x4625 x4190)
+(or x4625 x4189)
+(or x4625 x4122)
+(or x4625 x4121)
+(or x4625 x4621)
+(or x4625 (not x4622))
+(or x4192 (not x4191) (not x4190) (not x4189) (not x4122) (not x4121) (not x4621) x4622 (not x4625))
+(or (not x4625) (not x4627) (not x4631) x4632)
+(or (not x4632) x4625)
+(or (not x4632) x4627)
+(or (not x4632) x4631)
+(or (not x4621) (not x4633) (not x4165) x4634)
+(or (not x4634) x4621)
+(or (not x4634) x4633)
+(or (not x4634) x4165)
+(or x4635 x4621)
+(or x4635 (not x4634))
+(or x4635 (not x4621))
+(or (not x4621) x4634 x4621 (not x4635))
+(or x4636 x4621)
+(or x4636 x4621)
+(or x4636 x4633)
+(or x4636 x4165)
+(or x4636 x4637)
+(or (not x4621) (not x4621) (not x4633) (not x4165) (not x4637) (not x4636))
+(or x4638 x4639)
+(or x4638 x4640)
+(or (not x4639) (not x4640) (not x4638))
+(or (not x4638) (not x4639) x4641)
+(or (not x4641) x4638)
+(or (not x4641) x4639)
+(or x4642 (not x4621))
+(or x4642 x4643)
+(or x4642 (not x4641))
+(or x4621 (not x4643) x4641 (not x4642))
+(or (not x4642) (not x4636) (not x4635) x4644)
+(or (not x4644) x4642)
+(or (not x4644) x4636)
+(or (not x4644) x4635)
+(or x4273 (not x4325))
+(or x4273 (not x4326))
+(or x4273 (not x4327))
+(or x4273 (not x4328))
+(or x4273 (not x4329))
+(or x4273 (not x4330))
+(or x4325 x4326 x4327 x4328 x4329 x4330 (not x4273))
+(or x4277 (not x4424))
+(or x4277 x4423)
+(or x4277 x4422)
+(or x4277 (not x4421))
+(or x4424 (not x4423) (not x4422) x4421 (not x4277))
+(or x4313 (not x4424))
+(or x4313 x4423)
+(or x4313 (not x4422))
+(or x4313 x4421)
+(or x4424 (not x4423) x4422 (not x4421) (not x4313))
+(or x4276 (not x4424))
+(or x4276 (not x4423))
+(or x4276 (not x4422))
+(or x4276 x4421)
+(or x4424 x4423 x4422 (not x4421) (not x4276))
+(or x4645 (not x4424))
+(or x4645 (not x4423))
+(or x4645 x4422)
+(or x4645 x4421)
+(or x4424 x4423 (not x4422) (not x4421) (not x4645))
+(or x4275 (not x4529))
+(or x4275 x4528)
+(or x4275 x4527)
+(or x4275 (not x4526))
+(or x4529 (not x4528) (not x4527) x4526 (not x4275))
+(or x4311 (not x4529))
+(or x4311 x4528)
+(or x4311 (not x4527))
+(or x4311 x4526)
+(or x4529 (not x4528) x4527 (not x4526) (not x4311))
+(or x4274 (not x4529))
+(or x4274 (not x4528))
+(or x4274 (not x4527))
+(or x4274 x4526)
+(or x4529 x4528 x4527 (not x4526) (not x4274))
+(or x4646 (not x4529))
+(or x4646 (not x4528))
+(or x4646 x4527)
+(or x4646 x4526)
+(or x4529 x4528 (not x4527) (not x4526) (not x4646))
+(or (not x4646) (not x4274) (not x4311) (not x4275) (not x4645) (not x4276) (not x4313) (not x4277) x4647)
+(or (not x4647) x4646)
+(or (not x4647) x4274)
+(or (not x4647) x4311)
+(or (not x4647) x4275)
+(or (not x4647) x4645)
+(or (not x4647) x4276)
+(or (not x4647) x4313)
+(or (not x4647) x4277)
+(or (not x4646) (not x4274) (not x4311) (not x4275) (not x4645) (not x4276) (not x4313) (not x4277) x4216 x4217 x4405)
+(or (not x4405) x4646)
+(or (not x4405) x4274)
+(or (not x4405) x4311)
+(or (not x4405) x4275)
+(or (not x4405) x4645)
+(or (not x4405) x4276)
+(or (not x4405) x4313)
+(or (not x4405) x4277)
+(or (not x4405) (not x4216))
+(or (not x4405) (not x4217))
+(or x4263 (not x4405))
+(or x4263 (not x4346))
+(or x4263 (not x4326))
+(or x4263 (not x4348))
+(or x4263 (not x4329))
+(or x4405 x4346 x4326 x4348 x4329 (not x4263))
+(or x4648 (not x4405))
+(or x4648 (not x4346))
+(or x4648 (not x4326))
+(or x4648 (not x4348))
+(or x4648 (not x4329))
+(or x4648 (not x4325))
+(or x4648 (not x4326))
+(or x4648 (not x4327))
+(or x4648 (not x4328))
+(or x4648 (not x4329))
+(or x4648 (not x4330))
+(or x4648 x4228)
+(or x4405 x4346 x4326 x4348 x4329 x4325 x4326 x4327 x4328 x4329 x4330 (not x4228) (not x4648))
+(or (not x4648) (not x4404) x4649)
+(or (not x4649) x4648)
+(or (not x4649) x4404)
+(or (not x4650) x4192)
+(or (not x4650) (not x4191))
+(or (not x4650) (not x4190))
+(or (not x4650) x4189)
+(or (not x4192) x4191 x4190 x4189 x4186)
+(or (not x4186) x4192)
+(or (not x4186) (not x4191))
+(or (not x4186) (not x4190))
+(or (not x4186) (not x4189))
+(or (not x4651) (not x4192))
+(or (not x4651) x4191)
+(or (not x4651) x4190)
+(or (not x4651) x4189)
+(or x4652 (not x4651))
+(or x4652 (not x4186))
+(or x4651 x4186 (not x4652))
+(or x4424 (not x4423) (not x4422) x4421 x4329)
+(or (not x4329) (not x4424))
+(or (not x4329) x4423)
+(or (not x4329) x4422)
+(or (not x4329) (not x4421))
+(or x4424 (not x4423) x4422 (not x4421) x4330)
+(or (not x4330) (not x4424))
+(or (not x4330) x4423)
+(or (not x4330) (not x4422))
+(or (not x4330) x4421)
+(or x4424 (not x4423) x4422 x4421 x4328)
+(or (not x4328) (not x4424))
+(or (not x4328) x4423)
+(or (not x4328) (not x4422))
+(or (not x4328) (not x4421))
+(or x4424 x4423 (not x4422) (not x4421) x4347)
+(or (not x4347) (not x4424))
+(or (not x4347) (not x4423))
+(or (not x4347) x4422)
+(or (not x4347) x4421)
+(or x4424 x4423 (not x4422) x4421 x4416)
+(or (not x4416) (not x4424))
+(or (not x4416) (not x4423))
+(or (not x4416) x4422)
+(or (not x4416) (not x4421))
+(or x4424 x4423 x4422 (not x4421) x4348)
+(or (not x4348) (not x4424))
+(or (not x4348) (not x4423))
+(or (not x4348) (not x4422))
+(or (not x4348) x4421)
+(or (not x4653) (not x4424))
+(or (not x4653) (not x4423))
+(or (not x4653) (not x4422))
+(or (not x4653) (not x4421))
+(or x4654 (not x4653))
+(or x4654 (not x4348))
+(or x4654 (not x4416))
+(or x4654 (not x4347))
+(or x4654 (not x4328))
+(or x4654 (not x4330))
+(or x4653 x4348 x4416 x4347 x4328 x4330 (not x4654))
+(or x4529 (not x4528) (not x4527) x4526 x4326)
+(or (not x4326) (not x4529))
+(or (not x4326) x4528)
+(or (not x4326) x4527)
+(or (not x4326) (not x4526))
+(or x4529 (not x4528) x4527 (not x4526) x4327)
+(or (not x4327) (not x4529))
+(or (not x4327) x4528)
+(or (not x4327) (not x4527))
+(or (not x4327) x4526)
+(or x4529 (not x4528) x4527 x4526 x4325)
+(or (not x4325) (not x4529))
+(or (not x4325) x4528)
+(or (not x4325) (not x4527))
+(or (not x4325) (not x4526))
+(or x4529 x4528 (not x4527) (not x4526) x4345)
+(or (not x4345) (not x4529))
+(or (not x4345) (not x4528))
+(or (not x4345) x4527)
+(or (not x4345) x4526)
+(or x4529 x4528 (not x4527) x4526 x4521)
+(or (not x4521) (not x4529))
+(or (not x4521) (not x4528))
+(or (not x4521) x4527)
+(or (not x4521) (not x4526))
+(or x4529 x4528 x4527 (not x4526) x4346)
+(or (not x4346) (not x4529))
+(or (not x4346) (not x4528))
+(or (not x4346) (not x4527))
+(or (not x4346) x4526)
+(or (not x4655) (not x4529))
+(or (not x4655) (not x4528))
+(or (not x4655) (not x4527))
+(or (not x4655) (not x4526))
+(or x4656 (not x4655))
+(or x4656 (not x4346))
+(or x4656 (not x4521))
+(or x4656 (not x4345))
+(or x4656 (not x4325))
+(or x4656 (not x4327))
+(or x4655 x4346 x4521 x4345 x4325 x4327 (not x4656))
+(or x4657 (not x4658))
+(or x4657 (not x4659))
+(or x4657 (not x4660))
+(or x4657 (not x4661))
+(or x4657 (not x4662))
+(or x4657 (not x4663))
+(or x4657 (not x95))
+(or x4657 x94)
+(or x4657 x93)
+(or x4657 x92)
+(or x4657 (not x4664))
+(or x4657 x4665)
+(or x4658 x4659 x4660 x4661 x4662 x4663 x95 (not x94) (not x93) (not x92) x4664 (not x4665) (not x4657))
+(or x4666 (not x4658))
+(or x4666 (not x4659))
+(or x4666 (not x4660))
+(or x4666 (not x4661))
+(or x4666 (not x4662))
+(or x4666 (not x95))
+(or x4666 x94)
+(or x4666 x93)
+(or x4666 (not x92))
+(or x4666 x96)
+(or x4666 (not x97))
+(or x4666 x4667)
+(or x4658 x4659 x4660 x4661 x4662 x95 (not x94) (not x93) x92 (not x96) x97 (not x4667) (not x4666))
+(or x4668 (not x95))
+(or x4668 (not x94))
+(or x4668 (not x93))
+(or x4668 x92)
+(or x4668 (not x4669))
+(or x95 x94 x93 (not x92) x4669 (not x4668))
+(or (not x4668) (not x4670) (not x4671) (not x4672) (not x4673) (not x4666) (not x4657) (not x4674) x4675)
+(or (not x4675) x4668)
+(or (not x4675) x4670)
+(or (not x4675) x4671)
+(or (not x4675) x4672)
+(or (not x4675) x4673)
+(or (not x4675) x4666)
+(or (not x4675) x4657)
+(or (not x4675) x4674)
+(or x4676 (not x4658))
+(or x4676 (not x4659))
+(or x4676 (not x95))
+(or x4676 (not x94))
+(or x4676 x93)
+(or x4676 x92)
+(or x4676 (not x4664))
+(or x4676 x4677)
+(or x4658 x4659 x95 x94 (not x93) (not x92) x4664 (not x4677) (not x4676))
+(or x4678 (not x4658))
+(or x4678 (not x95))
+(or x4678 (not x94))
+(or x4678 x93)
+(or x4678 (not x92))
+(or x4678 x4680)
+(or x4678 x4679)
+(or x4678 (not x4664))
+(or x4678 x4681)
+(or x4658 x95 x94 (not x93) x92 (not x4680) (not x4679) x4664 (not x4681) (not x4678))
+(or x4682 (not x4683) x4669)
+(or (not x4669) (not x4682))
+(or (not x4669) x4683)
+(or x4682 (not x4683) (not x4684) x4685)
+(or (not x4685) (not x4682))
+(or (not x4685) x4683)
+(or (not x4685) x4684)
+(or x4686 (not x95))
+(or x4686 (not x94))
+(or x4686 (not x93))
+(or x4686 x92)
+(or x4686 (not x4685))
+(or x95 x94 x93 (not x92) x4685 (not x4686))
+(or (not x4686) (not x4678) (not x4676) (not x4687) (not x4688) (not x4689) (not x4690) (not x4674) x4691)
+(or (not x4691) x4686)
+(or (not x4691) x4678)
+(or (not x4691) x4676)
+(or (not x4691) x4687)
+(or (not x4691) x4688)
+(or (not x4691) x4689)
+(or (not x4691) x4690)
+(or (not x4691) x4674)
+(or x4692 (not x4658))
+(or x4692 (not x4659))
+(or x4692 (not x4660))
+(or x4692 (not x4661))
+(or x4692 (not x95))
+(or x4692 x94)
+(or x4692 (not x93))
+(or x4692 x92)
+(or x4692 (not x4664))
+(or x4692 x4693)
+(or x4658 x4659 x4660 x4661 x95 (not x94) x93 (not x92) x4664 (not x4693) (not x4692))
+(or x4694 (not x4658))
+(or x4694 (not x4659))
+(or x4694 (not x4660))
+(or x4694 (not x95))
+(or x4694 x94)
+(or x4694 (not x93))
+(or x4694 (not x92))
+(or x4694 x96)
+(or x4694 (not x97))
+(or x4694 x4695)
+(or x4658 x4659 x4660 x95 (not x94) x93 x92 (not x96) x97 (not x4695) (not x4694))
+(or x4684 (not x4682))
+(or x4684 (not x4696))
+(or x4682 x4696 (not x4684))
+(or x4682 (not x4684) x4697)
+(or (not x4697) (not x4682))
+(or (not x4697) x4684)
+(or x4698 (not x95))
+(or x4698 (not x94))
+(or x4698 (not x93))
+(or x4698 x92)
+(or x4698 (not x4697))
+(or x95 x94 x93 (not x92) x4697 (not x4698))
+(or (not x4698) (not x4699) (not x4700) (not x4694) (not x4692) (not x4687) (not x4688) (not x4701) (not x4702) (not x4674) x4703)
+(or (not x4703) x4698)
+(or (not x4703) x4699)
+(or (not x4703) x4700)
+(or (not x4703) x4694)
+(or (not x4703) x4692)
+(or (not x4703) x4687)
+(or (not x4703) x4688)
+(or (not x4703) x4701)
+(or (not x4703) x4702)
+(or (not x4703) x4674)
+(or (not x95) (not x94) x93 x92 (not x4704) x4705)
+(or (not x4705) x95)
+(or (not x4705) x94)
+(or (not x4705) (not x93))
+(or (not x4705) (not x92))
+(or (not x4705) x4704)
+(or x4674 (not x4658))
+(or x4674 (not x4659))
+(or x4674 (not x4660))
+(or x4674 (not x4661))
+(or x4674 (not x4662))
+(or x4674 (not x4663))
+(or x4674 (not x4706))
+(or x4674 (not x4707))
+(or x4674 (not x4708))
+(or x4674 (not x4709))
+(or x4674 (not x4705))
+(or x4658 x4659 x4660 x4661 x4662 x4663 x4706 x4707 x4708 x4709 x4705 (not x4674))
+(or (not x95) x94 (not x93) (not x92) (not x96) x97 x4709)
+(or (not x4709) x95)
+(or (not x4709) (not x94))
+(or (not x4709) x93)
+(or (not x4709) x92)
+(or (not x4709) x96)
+(or (not x4709) (not x97))
+(or x4702 (not x4658))
+(or x4702 (not x4659))
+(or x4702 (not x4660))
+(or x4702 (not x4661))
+(or x4702 (not x4662))
+(or x4702 (not x4663))
+(or x4702 (not x4706))
+(or x4702 (not x4707))
+(or x4702 (not x4708))
+(or x4702 (not x4709))
+(or x4702 x95)
+(or x4702 x94)
+(or x4702 (not x93))
+(or x4702 (not x92))
+(or x4702 (not x4664))
+(or x4658 x4659 x4660 x4661 x4662 x4663 x4706 x4707 x4708 x4709 (not x95) (not x94) x93 x92 x4664 (not x4702))
+(or x4710 (not x4658))
+(or x4710 (not x4659))
+(or x4710 (not x4660))
+(or x4710 (not x4661))
+(or x4710 (not x4662))
+(or x4710 (not x4663))
+(or x4710 (not x4706))
+(or x4710 (not x4707))
+(or x4710 (not x4708))
+(or x4710 (not x4709))
+(or x4710 x95)
+(or x4710 x94)
+(or x4710 (not x93))
+(or x4710 (not x92))
+(or x4710 (not x4664))
+(or x4710 x4711)
+(or x4658 x4659 x4660 x4661 x4662 x4663 x4706 x4707 x4708 x4709 (not x95) (not x94) x93 x92 x4664 (not x4711) (not x4710))
+(or (not x95) x94 (not x93) x92 (not x4704) x4708)
+(or (not x4708) x95)
+(or (not x4708) (not x94))
+(or (not x4708) x93)
+(or (not x4708) (not x92))
+(or (not x4708) x4704)
+(or x4701 (not x4658))
+(or x4701 (not x4659))
+(or x4701 (not x4660))
+(or x4701 (not x4661))
+(or x4701 (not x4662))
+(or x4701 (not x4663))
+(or x4701 (not x4706))
+(or x4701 (not x4707))
+(or x4701 (not x4708))
+(or x4701 x95)
+(or x4701 (not x94))
+(or x4701 x93)
+(or x4701 x92)
+(or x4701 x96)
+(or x4701 (not x97))
+(or x4658 x4659 x4660 x4661 x4662 x4663 x4706 x4707 x4708 (not x95) x94 (not x93) (not x92) (not x96) x97 (not x4701))
+(or x4712 (not x4658))
+(or x4712 (not x4659))
+(or x4712 (not x4660))
+(or x4712 (not x4661))
+(or x4712 (not x4662))
+(or x4712 (not x4663))
+(or x4712 (not x4706))
+(or x4712 (not x4707))
+(or x4712 (not x4708))
+(or x4712 x95)
+(or x4712 (not x94))
+(or x4712 x93)
+(or x4712 x92)
+(or x4712 x96)
+(or x4712 (not x97))
+(or x4712 x4713)
+(or x4658 x4659 x4660 x4661 x4662 x4663 x4706 x4707 x4708 (not x95) x94 (not x93) (not x92) (not x96) x97 (not x4713) (not x4712))
+(or (not x95) x94 x93 (not x92) (not x4680) (not x4679) (not x96) x97 x4707)
+(or (not x4707) x95)
+(or (not x4707) (not x94))
+(or (not x4707) (not x93))
+(or (not x4707) x92)
+(or (not x4707) x4680)
+(or (not x4707) x4679)
+(or (not x4707) x96)
+(or (not x4707) (not x97))
+(or x4690 (not x4658))
+(or x4690 (not x4659))
+(or x4690 (not x4660))
+(or x4690 (not x4661))
+(or x4690 (not x4662))
+(or x4690 (not x4663))
+(or x4690 (not x4706))
+(or x4690 (not x4707))
+(or x4690 x95)
+(or x4690 (not x94))
+(or x4690 x93)
+(or x4690 (not x92))
+(or x4690 (not x4664))
+(or x4658 x4659 x4660 x4661 x4662 x4663 x4706 x4707 (not x95) x94 (not x93) x92 x4664 (not x4690))
+(or x4714 (not x4658))
+(or x4714 (not x4659))
+(or x4714 (not x4660))
+(or x4714 (not x4661))
+(or x4714 (not x4662))
+(or x4714 (not x4663))
+(or x4714 (not x4706))
+(or x4714 (not x4707))
+(or x4714 x95)
+(or x4714 (not x94))
+(or x4714 x93)
+(or x4714 (not x92))
+(or x4714 (not x4664))
+(or x4714 x4715)
+(or x4658 x4659 x4660 x4661 x4662 x4663 x4706 x4707 (not x95) x94 (not x93) x92 x4664 (not x4715) (not x4714))
+(or x95 (not x94) (not x93) (not x92) (not x4704) x4706)
+(or (not x4706) (not x95))
+(or (not x4706) x94)
+(or (not x4706) x93)
+(or (not x4706) x92)
+(or (not x4706) x4704)
+(or x4689 (not x4658))
+(or x4689 (not x4659))
+(or x4689 (not x4660))
+(or x4689 (not x4661))
+(or x4689 (not x4662))
+(or x4689 (not x4663))
+(or x4689 (not x4706))
+(or x4689 x95)
+(or x4689 (not x94))
+(or x4689 (not x93))
+(or x4689 x92)
+(or x4689 x4680)
+(or x4689 x4679)
+(or x4689 x96)
+(or x4689 (not x97))
+(or x4658 x4659 x4660 x4661 x4662 x4663 x4706 (not x95) x94 x93 (not x92) (not x4680) (not x4679) (not x96) x97 (not x4689))
+(or x4716 (not x4658))
+(or x4716 (not x4659))
+(or x4716 (not x4660))
+(or x4716 (not x4661))
+(or x4716 (not x4662))
+(or x4716 (not x4663))
+(or x4716 (not x4706))
+(or x4716 x95)
+(or x4716 (not x94))
+(or x4716 (not x93))
+(or x4716 x92)
+(or x4716 x4680)
+(or x4716 x4679)
+(or x4716 x96)
+(or x4716 (not x97))
+(or x4716 x4717)
+(or x4658 x4659 x4660 x4661 x4662 x4663 x4706 (not x95) x94 x93 (not x92) (not x4680) (not x4679) (not x96) x97 (not x4717) (not x4716))
+(or x95 (not x94) (not x93) x92 (not x96) x97 x4663)
+(or (not x4663) (not x95))
+(or (not x4663) x94)
+(or (not x4663) x93)
+(or (not x4663) (not x92))
+(or (not x4663) x96)
+(or (not x4663) (not x97))
+(or x4688 (not x4658))
+(or x4688 (not x4659))
+(or x4688 (not x4660))
+(or x4688 (not x4661))
+(or x4688 (not x4662))
+(or x4688 (not x4663))
+(or x4688 (not x95))
+(or x4688 x94)
+(or x4688 x93)
+(or x4688 x92)
+(or x4688 (not x4664))
+(or x4688 (not x4665))
+(or x4658 x4659 x4660 x4661 x4662 x4663 x95 (not x94) (not x93) (not x92) x4664 x4665 (not x4688))
+(or x95 (not x94) x93 (not x92) (not x4704) x4662)
+(or (not x4662) (not x95))
+(or (not x4662) x94)
+(or (not x4662) (not x93))
+(or (not x4662) x92)
+(or (not x4662) x4704)
+(or x4687 (not x4658))
+(or x4687 (not x4659))
+(or x4687 (not x4660))
+(or x4687 (not x4661))
+(or x4687 (not x4662))
+(or x4687 (not x95))
+(or x4687 x94)
+(or x4687 x93)
+(or x4687 (not x92))
+(or x4687 x96)
+(or x4687 (not x97))
+(or x4687 (not x4667))
+(or x4658 x4659 x4660 x4661 x4662 x95 (not x94) (not x93) x92 (not x96) x97 x4667 (not x4687))
+(or x95 (not x94) x93 x92 (not x96) x97 x4661)
+(or (not x4661) (not x95))
+(or (not x4661) x94)
+(or (not x4661) (not x93))
+(or (not x4661) (not x92))
+(or (not x4661) x96)
+(or (not x4661) (not x97))
+(or x4673 (not x4658))
+(or x4673 (not x4659))
+(or x4673 (not x4660))
+(or x4673 (not x4661))
+(or x4673 (not x95))
+(or x4673 x94)
+(or x4673 (not x93))
+(or x4673 x92)
+(or x4673 (not x4664))
+(or x4658 x4659 x4660 x4661 x95 (not x94) x93 (not x92) x4664 (not x4673))
+(or x4718 (not x4658))
+(or x4718 (not x4659))
+(or x4718 (not x4660))
+(or x4718 (not x4661))
+(or x4718 (not x95))
+(or x4718 x94)
+(or x4718 (not x93))
+(or x4718 x92)
+(or x4718 (not x4664))
+(or x4718 (not x4693))
+(or x4658 x4659 x4660 x4661 x95 (not x94) x93 (not x92) x4664 x4693 (not x4718))
+(or x95 x94 (not x93) (not x92) (not x4704) x4660)
+(or (not x4660) (not x95))
+(or (not x4660) (not x94))
+(or (not x4660) x93)
+(or (not x4660) x92)
+(or (not x4660) x4704)
+(or x4672 (not x4658))
+(or x4672 (not x4659))
+(or x4672 (not x4660))
+(or x4672 (not x95))
+(or x4672 x94)
+(or x4672 (not x93))
+(or x4672 (not x92))
+(or x4672 x96)
+(or x4672 (not x97))
+(or x4658 x4659 x4660 x95 (not x94) x93 x92 (not x96) x97 (not x4672))
+(or x4719 (not x4658))
+(or x4719 (not x4659))
+(or x4719 (not x4660))
+(or x4719 (not x95))
+(or x4719 x94)
+(or x4719 (not x93))
+(or x4719 (not x92))
+(or x4719 x96)
+(or x4719 (not x97))
+(or x4719 (not x4695))
+(or x4658 x4659 x4660 x95 (not x94) x93 x92 (not x96) x97 x4695 (not x4719))
+(or x95 x94 (not x93) x92 (not x4680) (not x4679) (not x4704) x4659)
+(or (not x4659) (not x95))
+(or (not x4659) (not x94))
+(or (not x4659) x93)
+(or (not x4659) (not x92))
+(or (not x4659) x4680)
+(or (not x4659) x4679)
+(or (not x4659) x4704)
+(or x4671 (not x4658))
+(or x4671 (not x4659))
+(or x4671 (not x95))
+(or x4671 (not x94))
+(or x4671 x93)
+(or x4671 x92)
+(or x4671 (not x4664))
+(or x4658 x4659 x95 x94 (not x93) (not x92) x4664 (not x4671))
+(or x4700 (not x4658))
+(or x4700 (not x4659))
+(or x4700 (not x95))
+(or x4700 (not x94))
+(or x4700 x93)
+(or x4700 x92)
+(or x4700 (not x4664))
+(or x4700 (not x4677))
+(or x4658 x4659 x95 x94 (not x93) (not x92) x4664 x4677 (not x4700))
+(or x95 x94 x93 (not x92) x4658)
+(or (not x4658) (not x95))
+(or (not x4658) (not x94))
+(or (not x4658) (not x93))
+(or (not x4658) x92)
+(or x4670 (not x4658))
+(or x4670 (not x95))
+(or x4670 (not x94))
+(or x4670 x93)
+(or x4670 (not x92))
+(or x4670 x4680)
+(or x4670 x4679)
+(or x4670 (not x4664))
+(or x4658 x95 x94 (not x93) x92 (not x4680) (not x4679) x4664 (not x4670))
+(or x4699 (not x4658))
+(or x4699 (not x95))
+(or x4699 (not x94))
+(or x4699 x93)
+(or x4699 (not x92))
+(or x4699 x4680)
+(or x4699 x4679)
+(or x4699 (not x4664))
+(or x4699 (not x4681))
+(or x4658 x95 x94 (not x93) x92 (not x4680) (not x4679) x4664 x4681 (not x4699))
+(or x4683 (not x4682))
+(or x4683 x4696)
+(or x4682 (not x4696) (not x4683))
+(or x4720 (not x95))
+(or x4720 (not x94))
+(or x4720 (not x93))
+(or x4720 x92)
+(or x4720 (not x4682))
+(or x4720 x4696)
+(or x95 x94 x93 (not x92) x4682 (not x4696) (not x4720))
+(or (not x4720) (not x4699) (not x4700) (not x4719) (not x4718) (not x4687) (not x4688) (not x4716) (not x4714) (not x4712) (not x4710) (not x4674) x4721)
+(or (not x4721) x4720)
+(or (not x4721) x4699)
+(or (not x4721) x4700)
+(or (not x4721) x4719)
+(or (not x4721) x4718)
+(or (not x4721) x4687)
+(or (not x4721) x4688)
+(or (not x4721) x4716)
+(or (not x4721) x4714)
+(or (not x4721) x4712)
+(or (not x4721) x4710)
+(or (not x4721) x4674)
+(or x4722 x4723 (not x4724) x4725)
+(or (not x4725) (not x4722))
+(or (not x4725) (not x4723))
+(or (not x4725) x4724)
+(or (not x4722) x4723 (not x4726) x4727)
+(or (not x4727) x4722)
+(or (not x4727) (not x4723))
+(or (not x4727) x4726)
+(or x4728 (not x4727))
+(or x4728 (not x4725))
+(or x4727 x4725 (not x4728))
+(or (not x4729) (not x4730) x4731 x4732 (not x4733) x4734)
+(or (not x4734) x4729)
+(or (not x4734) x4730)
+(or (not x4734) (not x4731))
+(or (not x4734) (not x4732))
+(or (not x4734) x4733)
+(or x4724 (not x4723))
+(or x4724 (not x4734))
+(or x4723 x4734 (not x4724))
+(or (not x4723) (not x4724) x4735)
+(or (not x4735) x4723)
+(or (not x4735) x4724)
+(or x4723 (not x4722) x4736)
+(or (not x4736) (not x4723))
+(or (not x4736) x4722)
+(or x4726 (not x4737))
+(or x4726 x4730)
+(or x4726 (not x4731))
+(or x4726 (not x4732))
+(or x4726 x4733)
+(or x4737 (not x4730) x4731 x4732 (not x4733) (not x4726))
+(or x4723 (not x4726) x4738)
+(or (not x4738) (not x4723))
+(or (not x4738) x4726)
+(or x4739 (not x4738))
+(or x4739 (not x4736))
+(or x4738 x4736 (not x4739))
+(or (not x4740) (not x4739) x4741)
+(or (not x4741) x4740)
+(or (not x4741) x4739)
+(or x4742 (not x4741))
+(or x4742 (not x4735))
+(or x4741 x4735 (not x4742))
+(or x4743 (not x4723))
+(or x4743 (not x4744))
+(or x4743 (not x4745))
+(or x4723 x4744 x4745 (not x4743))
+(or x4746 (not x4723))
+(or x4746 x4750)
+(or x4746 (not x4749))
+(or x4746 (not x4748))
+(or x4746 (not x4747))
+(or x4723 (not x4750) x4749 x4748 x4747 (not x4746))
+(or x4751 x4752)
+(or x4751 x4753)
+(or (not x4752) (not x4753) (not x4751))
+(or (not x4751) (not x4752) x4754)
+(or (not x4754) x4751)
+(or (not x4754) x4752)
+(or x4755 x4723)
+(or x4755 x4756)
+(or x4755 (not x4754))
+(or (not x4723) (not x4756) x4754 (not x4755))
+(or (not x4755) (not x4746) (not x4743) x4757)
+(or (not x4757) x4755)
+(or (not x4757) x4746)
+(or (not x4757) x4743)
+(or (not x4750) x4749 x4748 x4747 (not x4758) x4759)
+(or (not x4759) x4750)
+(or (not x4759) (not x4749))
+(or (not x4759) (not x4748))
+(or (not x4759) (not x4747))
+(or (not x4759) x4758)
+(or (not x4760) (not x4761) x4762 (not x4763) (not x4764) (not x4765) (not x4766) (not x4767) (not x4768) (not x4769) (not x4770) (not x4771) x4772)
+(or (not x4772) x4760)
+(or (not x4772) x4761)
+(or (not x4772) (not x4762))
+(or (not x4772) x4763)
+(or (not x4772) x4764)
+(or (not x4772) x4765)
+(or (not x4772) x4766)
+(or (not x4772) x4767)
+(or (not x4772) x4768)
+(or (not x4772) x4769)
+(or (not x4772) x4770)
+(or (not x4772) x4771)
+(or x4773 (not x4772))
+(or x4773 (not x4759))
+(or x4772 x4759 (not x4773))
+(or x4774 x4775 x4776)
+(or (not x4776) (not x4774))
+(or (not x4776) (not x4775))
+(or x4777 x4680)
+(or x4777 x4679)
+(or x4777 (not x4778))
+(or x4777 (not x4779))
+(or x4777 (not x4776))
+(or (not x4680) (not x4679) x4778 x4779 x4776 (not x4777))
+(or (not x4780) (not x4777) x4781)
+(or (not x4781) x4780)
+(or (not x4781) x4777)
+(or x4782 (not x4774))
+(or x4782 (not x4783))
+(or x4774 x4783 (not x4782))
+(or (not x4775) (not x4782) x4784)
+(or (not x4784) x4775)
+(or (not x4784) x4782)
+(or x4785 (not x4784))
+(or x4785 (not x4781))
+(or x4784 x4781 (not x4785))
+(or x4786 (not x4680) (not x4679) (not x4787) (not x4788) x4783)
+(or (not x4783) (not x4786))
+(or (not x4783) x4680)
+(or (not x4783) x4679)
+(or (not x4783) x4787)
+(or (not x4783) x4788)
+(or (not x4774) x4786 (not x4680) (not x4679) (not x4787) (not x4788) x4789)
+(or (not x4789) x4774)
+(or (not x4789) (not x4786))
+(or (not x4789) x4680)
+(or (not x4789) x4679)
+(or (not x4789) x4787)
+(or (not x4789) x4788)
+(or x4790 x4680)
+(or x4790 x4679)
+(or x4790 (not x4778))
+(or x4790 (not x4779))
+(or x4790 x4774)
+(or (not x4680) (not x4679) x4778 x4779 (not x4774) (not x4790))
+(or x4780 (not x4786))
+(or x4780 x4680)
+(or x4780 x4679)
+(or x4780 (not x4778))
+(or x4780 (not x4779))
+(or x4786 (not x4680) (not x4679) x4778 x4779 (not x4780))
+(or (not x4780) (not x4790) x4791)
+(or (not x4791) x4780)
+(or (not x4791) x4790)
+(or x4792 (not x4791))
+(or x4792 (not x4789))
+(or x4791 x4789 (not x4792))
+(or x4730 (not x4733) x4793)
+(or (not x4793) (not x4730))
+(or (not x4793) x4733)
+(or x4794 (not x4795))
+(or x4794 x4761)
+(or x4794 x4796)
+(or x4794 (not x4793))
+(or x4795 (not x4761) (not x4796) x4793 (not x4794))
+(or (not x4797) (not x4760) (not x4794) x4798)
+(or (not x4798) x4797)
+(or (not x4798) x4760)
+(or (not x4798) x4794)
+(or x4799 (not x4730))
+(or x4799 x4733)
+(or x4730 (not x4733) (not x4799))
+(or (not x4800) (not x4761) (not x4796) (not x4799) x4801)
+(or (not x4801) x4800)
+(or (not x4801) x4761)
+(or (not x4801) x4796)
+(or (not x4801) x4799)
+(or x4802 (not x4744))
+(or x4802 (not x4801))
+(or x4744 x4801 (not x4802))
+(or (not x4802) (not x4760) x4803)
+(or (not x4803) x4802)
+(or (not x4803) x4760)
+(or x4804 (not x4803))
+(or x4804 (not x4798))
+(or x4803 x4798 (not x4804))
+(or x4805 (not x4806))
+(or x4805 x4786)
+(or x4806 (not x4786) (not x4805))
+(or (not x4730) (not x4680) (not x4679) (not x4807) (not x4732) (not x4808) (not x4809) x4786 x4810 x4811 x4812 x4813 x4814 (not x4730) x4815 x4762 x4816 x4817 x4723 x4818 x4819)
+(or (not x4819) x4730)
+(or (not x4819) x4680)
+(or (not x4819) x4679)
+(or (not x4819) x4807)
+(or (not x4819) x4732)
+(or (not x4819) x4808)
+(or (not x4819) x4809)
+(or (not x4819) (not x4786))
+(or (not x4819) (not x4810))
+(or (not x4819) (not x4811))
+(or (not x4819) (not x4812))
+(or (not x4819) (not x4813))
+(or (not x4819) (not x4814))
+(or (not x4819) x4730)
+(or (not x4819) (not x4815))
+(or (not x4819) (not x4762))
+(or (not x4819) (not x4816))
+(or (not x4819) (not x4817))
+(or (not x4819) (not x4723))
+(or (not x4819) (not x4818))
+(or (not x4820) (not x4821) (not x4680) (not x4679) (not x4786) x4730 x4810 x4811 x4812 x4813 x4815 x4762 x4816 x4817 x4723 x4818 x4822)
+(or (not x4822) x4820)
+(or (not x4822) x4821)
+(or (not x4822) x4680)
+(or (not x4822) x4679)
+(or (not x4822) x4786)
+(or (not x4822) (not x4730))
+(or (not x4822) (not x4810))
+(or (not x4822) (not x4811))
+(or (not x4822) (not x4812))
+(or (not x4822) (not x4813))
+(or (not x4822) (not x4815))
+(or (not x4822) (not x4762))
+(or (not x4822) (not x4816))
+(or (not x4822) (not x4817))
+(or (not x4822) (not x4723))
+(or (not x4822) (not x4818))
+(or x4823 (not x4822))
+(or x4823 (not x4819))
+(or x4822 x4819 (not x4823))
+(or x4810 x4812 x4813 (not x4811) x4815 x4762 x4816 x4817 x4723 x4818 x4786 x4730 x4824)
+(or (not x4824) (not x4810))
+(or (not x4824) (not x4812))
+(or (not x4824) (not x4813))
+(or (not x4824) x4811)
+(or (not x4824) (not x4815))
+(or (not x4824) (not x4762))
+(or (not x4824) (not x4816))
+(or (not x4824) (not x4817))
+(or (not x4824) (not x4723))
+(or (not x4824) (not x4818))
+(or (not x4824) (not x4786))
+(or (not x4824) (not x4730))
+(or (not x4750) x4749 x4748 x4747 (not x4723) x4818 x4815 x4730 x4786 x4816 x4817 (not x4825) (not x4826) x4762 x4810 x4811 x4812 x4813 x4827)
+(or (not x4827) x4750)
+(or (not x4827) (not x4749))
+(or (not x4827) (not x4748))
+(or (not x4827) (not x4747))
+(or (not x4827) x4723)
+(or (not x4827) (not x4818))
+(or (not x4827) (not x4815))
+(or (not x4827) (not x4730))
+(or (not x4827) (not x4786))
+(or (not x4827) (not x4816))
+(or (not x4827) (not x4817))
+(or (not x4827) x4825)
+(or (not x4827) x4826)
+(or (not x4827) (not x4762))
+(or (not x4827) (not x4810))
+(or (not x4827) (not x4811))
+(or (not x4827) (not x4812))
+(or (not x4827) (not x4813))
+(or x4828 (not x4827))
+(or x4828 (not x4824))
+(or x4827 x4824 (not x4828))
+(or (not x4680) (not x4679) (not x4829) (not x4828) x4830)
+(or (not x4830) x4680)
+(or (not x4830) x4679)
+(or (not x4830) x4829)
+(or (not x4830) x4828)
+(or (not x4680) (not x4679) (not x4786) x4730 x4810 x4811 x4812 x4813 x4815 x4762 x4816 x4817 x4723 x4818 (not x4831) (not x4832) (not x4833) (not x4834) (not x4835) (not x4796) x4836)
+(or (not x4836) x4680)
+(or (not x4836) x4679)
+(or (not x4836) x4786)
+(or (not x4836) (not x4730))
+(or (not x4836) (not x4810))
+(or (not x4836) (not x4811))
+(or (not x4836) (not x4812))
+(or (not x4836) (not x4813))
+(or (not x4836) (not x4815))
+(or (not x4836) (not x4762))
+(or (not x4836) (not x4816))
+(or (not x4836) (not x4817))
+(or (not x4836) (not x4723))
+(or (not x4836) (not x4818))
+(or (not x4836) x4831)
+(or (not x4836) x4832)
+(or (not x4836) x4833)
+(or (not x4836) x4834)
+(or (not x4836) x4835)
+(or (not x4836) x4796)
+(or (not x4829) x4811 x4812 x4813 x4815 x4762 x4816 x4817 x4723 x4818 x4786 x4730 x4837)
+(or (not x4837) x4829)
+(or (not x4837) (not x4811))
+(or (not x4837) (not x4812))
+(or (not x4837) (not x4813))
+(or (not x4837) (not x4815))
+(or (not x4837) (not x4762))
+(or (not x4837) (not x4816))
+(or (not x4837) (not x4817))
+(or (not x4837) (not x4723))
+(or (not x4837) (not x4818))
+(or (not x4837) (not x4786))
+(or (not x4837) (not x4730))
+(or x4838 (not x4839))
+(or x4838 (not x4837))
+(or x4839 x4837 (not x4838))
+(or (not x4680) (not x4679) (not x4810) (not x4838) x4840)
+(or (not x4840) x4680)
+(or (not x4840) x4679)
+(or (not x4840) x4810)
+(or (not x4840) x4838)
+(or x4815 x4816 (not x4817) (not x4680) (not x4679) x4723 x4818 x4786 x4730 x4762 x4810 x4811 x4812 x4813 x4841)
+(or (not x4841) (not x4815))
+(or (not x4841) (not x4816))
+(or (not x4841) x4817)
+(or (not x4841) x4680)
+(or (not x4841) x4679)
+(or (not x4841) (not x4723))
+(or (not x4841) (not x4818))
+(or (not x4841) (not x4786))
+(or (not x4841) (not x4730))
+(or (not x4841) (not x4762))
+(or (not x4841) (not x4810))
+(or (not x4841) (not x4811))
+(or (not x4841) (not x4812))
+(or (not x4841) (not x4813))
+(or x4842 (not x4841))
+(or x4842 (not x4840))
+(or x4841 x4840 (not x4842))
+(or x4843 x4811)
+(or x4843 x4818)
+(or (not x4811) (not x4818) (not x4843))
+(or x4844 (not x4811))
+(or x4844 (not x4829))
+(or x4844 (not x4723))
+(or x4811 x4829 x4723 (not x4844))
+(or x4818 x4811 (not x4845) x4846)
+(or (not x4846) (not x4818))
+(or (not x4846) (not x4811))
+(or (not x4846) x4845)
+(or x4847 x4723)
+(or x4847 (not x4846))
+(or (not x4723) x4846 (not x4847))
+(or x4848 x4829)
+(or x4848 (not x4723))
+(or x4848 (not x4818))
+(or (not x4829) x4723 x4818 (not x4848))
+(or (not x4680) (not x4679) x4762 x4810 x4815 x4730 x4786 x4816 x4817 x4812 x4813 (not x4848) (not x4847) (not x4844) (not x4843) x4849)
+(or (not x4849) x4680)
+(or (not x4849) x4679)
+(or (not x4849) (not x4762))
+(or (not x4849) (not x4810))
+(or (not x4849) (not x4815))
+(or (not x4849) (not x4730))
+(or (not x4849) (not x4786))
+(or (not x4849) (not x4816))
+(or (not x4849) (not x4817))
+(or (not x4849) (not x4812))
+(or (not x4849) (not x4813))
+(or (not x4849) x4848)
+(or (not x4849) x4847)
+(or (not x4849) x4844)
+(or (not x4849) x4843)
+(or (not x4680) (not x4679) (not x4850) x4851)
+(or (not x4851) x4680)
+(or (not x4851) x4679)
+(or (not x4851) x4850)
+(or x4771 (not x4852))
+(or x4771 (not x4853))
+(or x4852 x4853 (not x4771))
+(or x4854 (not x4855))
+(or x4854 x4812)
+(or x4855 (not x4812) (not x4854))
+(or x4856 (not x4723))
+(or x4856 (not x4812))
+(or x4856 (not x4810))
+(or x4856 (not x4811))
+(or x4723 x4812 x4810 x4811 (not x4856))
+(or x4857 x4811)
+(or x4857 x4810)
+(or (not x4811) (not x4810) (not x4857))
+(or x4813 (not x4857) (not x4856) (not x4854) x4858)
+(or (not x4858) (not x4813))
+(or (not x4858) x4857)
+(or (not x4858) x4856)
+(or (not x4858) x4854)
+(or x4770 (not x4818))
+(or x4770 (not x4815))
+(or x4770 (not x4730))
+(or x4770 (not x4786))
+(or x4770 (not x4816))
+(or x4770 (not x4817))
+(or x4770 (not x4858))
+(or x4818 x4815 x4730 x4786 x4816 x4817 x4858 (not x4770))
+(or x4769 x4817)
+(or x4769 x4816)
+(or (not x4817) (not x4816) (not x4769))
+(or x4768 (not x4859))
+(or x4768 x4818)
+(or x4859 (not x4818) (not x4768))
+(or x4767 x4730)
+(or x4767 (not x4860))
+(or (not x4730) x4860 (not x4767))
+(or (not x4750) x4749 x4748 x4747 x4829 x4861)
+(or (not x4861) x4750)
+(or (not x4861) (not x4749))
+(or (not x4861) (not x4748))
+(or (not x4861) (not x4747))
+(or (not x4861) (not x4829))
+(or (not x4750) x4749 x4748 x4747 (not x4829) (not x4745) x4862)
+(or (not x4862) x4750)
+(or (not x4862) (not x4749))
+(or (not x4862) (not x4748))
+(or (not x4862) (not x4747))
+(or (not x4862) x4829)
+(or (not x4862) x4745)
+(or x4845 (not x4862))
+(or x4845 (not x4861))
+(or x4862 x4861 (not x4845))
+(or (not x4750) x4749 x4748 x4747 (not x4829) x4863)
+(or (not x4863) x4750)
+(or (not x4863) (not x4749))
+(or (not x4863) (not x4748))
+(or (not x4863) (not x4747))
+(or (not x4863) x4829)
+(or x4864 (not x4863))
+(or x4864 (not x4862))
+(or x4864 (not x4861))
+(or x4863 x4862 x4861 (not x4864))
+(or x4812 x4810 x4811 x4818 x4815 x4730 x4786 x4816 x4817 (not x4864) x4865)
+(or (not x4865) (not x4812))
+(or (not x4865) (not x4810))
+(or (not x4865) (not x4811))
+(or (not x4865) (not x4818))
+(or (not x4865) (not x4815))
+(or (not x4865) (not x4730))
+(or (not x4865) (not x4786))
+(or (not x4865) (not x4816))
+(or (not x4865) (not x4817))
+(or (not x4865) x4864)
+(or x4766 x4723)
+(or x4766 (not x4865))
+(or (not x4723) x4865 (not x4766))
+(or x4765 (not x4866))
+(or x4765 x4786)
+(or x4866 (not x4786) (not x4765))
+(or x4764 (not x4867))
+(or x4764 x4815)
+(or x4867 (not x4815) (not x4764))
+(or x4763 x4814)
+(or x4763 x4730)
+(or (not x4814) (not x4730) (not x4763))
+(or (not x4796) (not x4680) (not x4679) x4762 (not x4763) (not x4764) (not x4765) (not x4766) (not x4767) (not x4768) (not x4769) (not x4770) (not x4771) (not x4868) (not x4833) (not x4869) (not x4870) (not x4835) (not x4871) (not x4760) x4872)
+(or (not x4872) x4796)
+(or (not x4872) x4680)
+(or (not x4872) x4679)
+(or (not x4872) (not x4762))
+(or (not x4872) x4763)
+(or (not x4872) x4764)
+(or (not x4872) x4765)
+(or (not x4872) x4766)
+(or (not x4872) x4767)
+(or (not x4872) x4768)
+(or (not x4872) x4769)
+(or (not x4872) x4770)
+(or (not x4872) x4771)
+(or (not x4872) x4868)
+(or (not x4872) x4833)
+(or (not x4872) x4869)
+(or (not x4872) x4870)
+(or (not x4872) x4835)
+(or (not x4872) x4871)
+(or (not x4872) x4760)
+(or x4873 x4680)
+(or x4873 x4679)
+(or x4873 (not x4762))
+(or x4873 (not x4874))
+(or x4873 (not x4875))
+(or x4873 (not x4876))
+(or x4873 (not x4877))
+(or x4873 (not x4878))
+(or x4873 (not x4879))
+(or x4873 (not x4880))
+(or x4873 (not x4881))
+(or x4873 (not x4882))
+(or x4873 (not x4883))
+(or x4873 (not x4884))
+(or x4873 (not x4885))
+(or x4873 (not x4886))
+(or x4873 (not x4887))
+(or x4873 (not x4888))
+(or x4873 (not x4744))
+(or (not x4680) (not x4679) x4762 x4874 x4875 x4876 x4877 x4878 x4879 x4880 x4881 x4882 x4883 x4884 x4885 x4886 x4887 x4888 x4744 (not x4873))
+(or x4889 x4680)
+(or x4889 x4679)
+(or x4889 (not x4762))
+(or x4889 (not x4874))
+(or x4889 (not x4875))
+(or x4889 (not x4876))
+(or x4889 (not x4877))
+(or x4889 (not x4878))
+(or x4889 (not x4879))
+(or x4889 (not x4880))
+(or x4889 (not x4881))
+(or x4889 (not x4882))
+(or x4889 (not x4883))
+(or x4889 (not x4884))
+(or x4889 (not x4885))
+(or x4889 (not x4886))
+(or x4889 (not x4887))
+(or x4889 (not x4888))
+(or x4889 x4758)
+(or (not x4680) (not x4679) x4762 x4874 x4875 x4876 x4877 x4878 x4879 x4880 x4881 x4882 x4883 x4884 x4885 x4886 x4887 x4888 (not x4758) (not x4889))
+(or (not x4889) (not x4873) x4890)
+(or (not x4890) x4889)
+(or (not x4890) x4873)
+(or x4891 (not x4890))
+(or x4891 (not x4872))
+(or x4890 x4872 (not x4891))
+(or (not x4760) (not x4892) x4893)
+(or (not x4893) x4760)
+(or (not x4893) x4892)
+(or (not x4750) x4749 x4748 x4747 (not x4894) x4895)
+(or (not x4895) x4750)
+(or (not x4895) (not x4749))
+(or (not x4895) (not x4748))
+(or (not x4895) (not x4747))
+(or (not x4895) x4894)
+(or x4896 (not x4895))
+(or x4896 (not x4893))
+(or x4895 x4893 (not x4896))
+(or (not x4760) (not x4897) x4898)
+(or (not x4898) x4760)
+(or (not x4898) x4897)
+(or x4899 (not x4744))
+(or x4899 (not x4898))
+(or x4744 x4898 (not x4899))
+(or x4816 x4817 (not x4815) (not x4680) (not x4679) x4723 x4818 x4786 x4730 x4762 x4810 x4811 x4812 x4813 x4900)
+(or (not x4900) (not x4816))
+(or (not x4900) (not x4817))
+(or (not x4900) x4815)
+(or (not x4900) x4680)
+(or (not x4900) x4679)
+(or (not x4900) (not x4723))
+(or (not x4900) (not x4818))
+(or (not x4900) (not x4786))
+(or (not x4900) (not x4730))
+(or (not x4900) (not x4762))
+(or (not x4900) (not x4810))
+(or (not x4900) (not x4811))
+(or (not x4900) (not x4812))
+(or (not x4900) (not x4813))
+(or (not x4832) (not x4833) (not x4834) (not x4835) x4901)
+(or (not x4901) x4832)
+(or (not x4901) x4833)
+(or (not x4901) x4834)
+(or (not x4901) x4835)
+(or x4902 (not x4903))
+(or x4902 (not x4904))
+(or x4902 (not x4885))
+(or x4902 (not x4884))
+(or x4902 (not x4905))
+(or x4902 (not x4906))
+(or x4902 (not x4888))
+(or x4902 (not x4887))
+(or x4902 (not x4774))
+(or x4902 (not x4775))
+(or x4903 x4904 x4885 x4884 x4905 x4906 x4888 x4887 x4774 x4775 (not x4902))
+(or (not x4868) (not x4833) (not x4869) (not x4870) (not x4835) (not x4871) x4806)
+(or (not x4806) x4868)
+(or (not x4806) x4833)
+(or (not x4806) x4869)
+(or (not x4806) x4870)
+(or (not x4806) x4835)
+(or (not x4806) x4871)
+(or x4820 (not x4806))
+(or x4820 (not x4904))
+(or x4820 (not x4884))
+(or x4820 (not x4906))
+(or x4820 (not x4887))
+(or x4820 x4796)
+(or x4806 x4904 x4884 x4906 x4887 (not x4796) (not x4820))
+(or (not x4820) (not x4902) (not x4832) (not x4833) (not x4834) (not x4835) x4730 x4810 x4811 x4812 x4813 x4815 x4762 x4816 x4817 x4723 x4818 x4907)
+(or (not x4907) x4820)
+(or (not x4907) x4902)
+(or (not x4907) x4832)
+(or (not x4907) x4833)
+(or (not x4907) x4834)
+(or (not x4907) x4835)
+(or (not x4907) (not x4730))
+(or (not x4907) (not x4810))
+(or (not x4907) (not x4811))
+(or (not x4907) (not x4812))
+(or (not x4907) (not x4813))
+(or (not x4907) (not x4815))
+(or (not x4907) (not x4762))
+(or (not x4907) (not x4816))
+(or (not x4907) (not x4817))
+(or (not x4907) (not x4723))
+(or (not x4907) (not x4818))
+(or x4807 (not x4733))
+(or x4807 (not x4731))
+(or x4807 (not x4732))
+(or x4807 x4761)
+(or x4807 x4797)
+(or x4733 x4731 x4732 (not x4761) (not x4797) (not x4807))
+(or (not x4807) (not x4732) (not x4808) (not x4809) x4786 x4810 x4811 x4812 x4813 x4814 (not x4730) x4815 x4762 x4816 x4817 x4723 x4818 x4839)
+(or (not x4839) x4807)
+(or (not x4839) x4732)
+(or (not x4839) x4808)
+(or (not x4839) x4809)
+(or (not x4839) (not x4786))
+(or (not x4839) (not x4810))
+(or (not x4839) (not x4811))
+(or (not x4839) (not x4812))
+(or (not x4839) (not x4813))
+(or (not x4839) (not x4814))
+(or (not x4839) x4730)
+(or (not x4839) (not x4815))
+(or (not x4839) (not x4762))
+(or (not x4839) (not x4816))
+(or (not x4839) (not x4817))
+(or (not x4839) (not x4723))
+(or (not x4839) (not x4818))
+(or x4908 (not x4839))
+(or x4908 (not x4907))
+(or x4839 x4907 (not x4908))
+(or (not x4680) (not x4679) (not x4786) (not x4908) x4909)
+(or (not x4909) x4680)
+(or (not x4909) x4679)
+(or (not x4909) x4786)
+(or (not x4909) x4908)
+(or x4910 (not x4909))
+(or x4910 (not x4900))
+(or x4909 x4900 (not x4910))
+(or (not x4911) (not x4912) x4882)
+(or (not x4882) x4911)
+(or (not x4882) x4912)
+(or (not x4913) (not x4812) x4914)
+(or (not x4914) x4913)
+(or (not x4914) x4812)
+(or x4723 x4812 x4810 x4811 x4915)
+(or (not x4915) (not x4723))
+(or (not x4915) (not x4812))
+(or (not x4915) (not x4810))
+(or (not x4915) (not x4811))
+(or (not x4811) (not x4810) x4916)
+(or (not x4916) x4811)
+(or (not x4916) x4810)
+(or x4917 (not x4813))
+(or x4917 (not x4916))
+(or x4917 (not x4915))
+(or x4917 (not x4914))
+(or x4813 x4916 x4915 x4914 (not x4917))
+(or x4818 x4815 x4730 x4786 x4816 x4817 x4853)
+(or (not x4853) (not x4818))
+(or (not x4853) (not x4815))
+(or (not x4853) (not x4730))
+(or (not x4853) (not x4786))
+(or (not x4853) (not x4816))
+(or (not x4853) (not x4817))
+(or x4818 x4815 x4730 x4786 x4816 x4817 (not x4917) x4881)
+(or (not x4881) (not x4818))
+(or (not x4881) (not x4815))
+(or (not x4881) (not x4730))
+(or (not x4881) (not x4786))
+(or (not x4881) (not x4816))
+(or (not x4881) (not x4817))
+(or (not x4881) x4917)
+(or (not x4817) (not x4816) x4880)
+(or (not x4880) x4817)
+(or (not x4880) x4816)
+(or (not x4918) (not x4818) x4879)
+(or (not x4879) x4918)
+(or (not x4879) x4818)
+(or (not x4730) (not x4919) x4878)
+(or (not x4878) x4730)
+(or (not x4878) x4919)
+(or x4826 x4750)
+(or x4826 (not x4749))
+(or x4826 (not x4748))
+(or x4826 (not x4747))
+(or x4826 (not x4829))
+(or (not x4750) x4749 x4748 x4747 x4829 (not x4826))
+(or x4825 x4750)
+(or x4825 (not x4749))
+(or x4825 (not x4748))
+(or x4825 (not x4747))
+(or x4825 x4829)
+(or x4825 x4745)
+(or (not x4750) x4749 x4748 x4747 (not x4829) (not x4745) (not x4825))
+(or x4920 x4750)
+(or x4920 (not x4749))
+(or x4920 (not x4748))
+(or x4920 (not x4747))
+(or x4920 x4829)
+(or (not x4750) x4749 x4748 x4747 (not x4829) (not x4920))
+(or (not x4920) (not x4825) (not x4826) x4921)
+(or (not x4921) x4920)
+(or (not x4921) x4825)
+(or (not x4921) x4826)
+(or x4912 (not x4818))
+(or x4912 (not x4815))
+(or x4912 (not x4730))
+(or x4912 (not x4786))
+(or x4912 (not x4816))
+(or x4912 (not x4817))
+(or x4818 x4815 x4730 x4786 x4816 x4817 (not x4912))
+(or x4922 (not x4812))
+(or x4922 (not x4810))
+(or x4922 (not x4811))
+(or x4922 (not x4818))
+(or x4922 (not x4815))
+(or x4922 (not x4730))
+(or x4922 (not x4786))
+(or x4922 (not x4816))
+(or x4922 (not x4817))
+(or x4922 (not x4921))
+(or x4812 x4810 x4811 x4818 x4815 x4730 x4786 x4816 x4817 x4921 (not x4922))
+(or (not x4723) (not x4922) x4877)
+(or (not x4877) x4723)
+(or (not x4877) x4922)
+(or (not x4923) (not x4786) x4876)
+(or (not x4876) x4923)
+(or (not x4876) x4786)
+(or (not x4924) (not x4815) x4875)
+(or (not x4875) x4924)
+(or (not x4875) x4815)
+(or (not x4814) (not x4730) x4874)
+(or (not x4874) x4814)
+(or (not x4874) x4730)
+(or x4925 x4680)
+(or x4925 x4679)
+(or x4925 (not x4762))
+(or x4925 (not x4874))
+(or x4925 (not x4875))
+(or x4925 (not x4876))
+(or x4925 (not x4877))
+(or x4925 (not x4878))
+(or x4925 (not x4879))
+(or x4925 (not x4880))
+(or x4925 (not x4881))
+(or x4925 (not x4882))
+(or (not x4680) (not x4679) x4762 x4874 x4875 x4876 x4877 x4878 x4879 x4880 x4881 x4882 (not x4925))
+(or x4813 (not x4680) (not x4679) x4810 x4811 (not x4812) x4815 x4762 x4816 x4817 x4723 x4818 x4786 x4730 x4926)
+(or (not x4926) (not x4813))
+(or (not x4926) x4680)
+(or (not x4926) x4679)
+(or (not x4926) (not x4810))
+(or (not x4926) (not x4811))
+(or (not x4926) x4812)
+(or (not x4926) (not x4815))
+(or (not x4926) (not x4762))
+(or (not x4926) (not x4816))
+(or (not x4926) (not x4817))
+(or (not x4926) (not x4723))
+(or (not x4926) (not x4818))
+(or (not x4926) (not x4786))
+(or (not x4926) (not x4730))
+(or x4808 (not x4797))
+(or x4808 (not x4733))
+(or x4808 (not x4731))
+(or x4808 (not x4732))
+(or x4808 x4761)
+(or x4797 x4733 x4731 x4732 (not x4761) (not x4808))
+(or x4733 x4731 x4732 (not x4761) (not x4797) x4927)
+(or (not x4927) (not x4733))
+(or (not x4927) (not x4731))
+(or (not x4927) (not x4732))
+(or (not x4927) x4761)
+(or (not x4927) x4797)
+(or x4928 (not x4927))
+(or x4928 x4732)
+(or x4927 (not x4732) (not x4928))
+(or (not x4680) (not x4679) (not x4928) (not x4808) (not x4809) x4786 x4810 x4811 x4812 x4813 x4814 (not x4730) x4815 x4762 x4816 x4817 x4723 x4818 x4929)
+(or (not x4929) x4680)
+(or (not x4929) x4679)
+(or (not x4929) x4928)
+(or (not x4929) x4808)
+(or (not x4929) x4809)
+(or (not x4929) (not x4786))
+(or (not x4929) (not x4810))
+(or (not x4929) (not x4811))
+(or (not x4929) (not x4812))
+(or (not x4929) (not x4813))
+(or (not x4929) (not x4814))
+(or (not x4929) x4730)
+(or (not x4929) (not x4815))
+(or (not x4929) (not x4762))
+(or (not x4929) (not x4816))
+(or (not x4929) (not x4817))
+(or (not x4929) (not x4723))
+(or (not x4929) (not x4818))
+(or x4815 x4817 (not x4816) (not x4680) (not x4679) x4723 x4818 x4786 x4730 x4762 x4810 x4811 x4812 x4813 x4930)
+(or (not x4930) (not x4815))
+(or (not x4930) (not x4817))
+(or (not x4930) x4816)
+(or (not x4930) x4680)
+(or (not x4930) x4679)
+(or (not x4930) (not x4723))
+(or (not x4930) (not x4818))
+(or (not x4930) (not x4786))
+(or (not x4930) (not x4730))
+(or (not x4930) (not x4762))
+(or (not x4930) (not x4810))
+(or (not x4930) (not x4811))
+(or (not x4930) (not x4812))
+(or (not x4930) (not x4813))
+(or x4740 x4722 x4737)
+(or (not x4737) (not x4740))
+(or (not x4737) (not x4722))
+(or x4809 (not x4737))
+(or x4809 (not x4731))
+(or x4809 (not x4732))
+(or x4809 x4733)
+(or x4737 x4731 x4732 (not x4733) (not x4809))
+(or (not x4809) x4797 x4733 x4731 x4732 (not x4761) x4931)
+(or (not x4931) x4809)
+(or (not x4931) (not x4797))
+(or (not x4931) (not x4733))
+(or (not x4931) (not x4731))
+(or (not x4931) (not x4732))
+(or (not x4931) x4761)
+(or x4729 (not x4740))
+(or x4729 (not x4722))
+(or x4740 x4722 (not x4729))
+(or (not x4729) x4731 x4732 (not x4733) x4932)
+(or (not x4932) x4729)
+(or (not x4932) (not x4731))
+(or (not x4932) (not x4732))
+(or (not x4932) x4733)
+(or x4933 (not x4932))
+(or x4933 (not x4931))
+(or x4932 x4931 (not x4933))
+(or (not x4680) (not x4679) x4786 x4810 x4811 x4812 x4813 x4814 (not x4730) x4815 x4762 x4816 x4817 x4723 x4818 (not x4933) x4934)
+(or (not x4934) x4680)
+(or (not x4934) x4679)
+(or (not x4934) (not x4786))
+(or (not x4934) (not x4810))
+(or (not x4934) (not x4811))
+(or (not x4934) (not x4812))
+(or (not x4934) (not x4813))
+(or (not x4934) (not x4814))
+(or (not x4934) x4730)
+(or (not x4934) (not x4815))
+(or (not x4934) (not x4762))
+(or (not x4934) (not x4816))
+(or (not x4934) (not x4817))
+(or (not x4934) (not x4723))
+(or (not x4934) (not x4818))
+(or (not x4934) x4933)
+(or x4935 (not x4936))
+(or x4935 (not x4937))
+(or x4935 (not x4938))
+(or x4935 (not x4939))
+(or x4935 (not x4941))
+(or x4936 x4937 x4938 x4939 x4941 (not x4935))
+(or x4942 (not x4941))
+(or x4942 (not x4940))
+(or x4942 x96)
+(or x4942 (not x97))
+(or x4942 x4680)
+(or x4942 x4679)
+(or x4941 x4940 (not x96) x97 (not x4680) (not x4679) (not x4942))
+(or (not x4942) (not x4943) (not x4935) x4944)
+(or (not x4944) x4942)
+(or (not x4944) x4943)
+(or (not x4944) x4935)
+(or x4945 (not x4936))
+(or x4945 (not x4937))
+(or x4945 (not x4938))
+(or x4945 (not x4939))
+(or x4945 (not x4940))
+(or x4936 x4937 x4938 x4939 x4940 (not x4945))
+(or x4943 (not x4936))
+(or x4943 (not x4937))
+(or x4943 (not x4938))
+(or x4943 x4941)
+(or x4943 x4940)
+(or x4936 x4937 x4938 (not x4941) (not x4940) (not x4943))
+(or x4941 x4940 (not x96) x97 (not x4680) (not x4679) x4936)
+(or (not x4936) (not x4941))
+(or (not x4936) (not x4940))
+(or (not x4936) x96)
+(or (not x4936) (not x97))
+(or (not x4936) x4680)
+(or (not x4936) x4679)
+(or x4946 (not x4936))
+(or x4946 (not x4941))
+(or x4946 x4940)
+(or x4936 x4941 (not x4940) (not x4946))
+(or (not x4946) (not x4943) (not x4945) x4947)
+(or (not x4947) x4946)
+(or (not x4947) x4943)
+(or (not x4947) x4945)
+(or x4948 (not x4949))
+(or x4948 (not x4950))
+(or x4948 (not x4951))
+(or x4948 (not x4952))
+(or x4948 (not x4954))
+(or x4949 x4950 x4951 x4952 x4954 (not x4948))
+(or x4955 (not x4954))
+(or x4955 (not x4953))
+(or x4955 x96)
+(or x4955 (not x97))
+(or x4955 x4680)
+(or x4955 x4679)
+(or x4954 x4953 (not x96) x97 (not x4680) (not x4679) (not x4955))
+(or (not x4955) (not x4956) (not x4948) x4957)
+(or (not x4957) x4955)
+(or (not x4957) x4956)
+(or (not x4957) x4948)
+(or x4958 (not x4949))
+(or x4958 (not x4950))
+(or x4958 (not x4951))
+(or x4958 (not x4952))
+(or x4958 (not x4953))
+(or x4949 x4950 x4951 x4952 x4953 (not x4958))
+(or x4956 (not x4949))
+(or x4956 (not x4950))
+(or x4956 (not x4951))
+(or x4956 x4954)
+(or x4956 x4953)
+(or x4949 x4950 x4951 (not x4954) (not x4953) (not x4956))
+(or x4954 x4953 (not x96) x97 (not x4680) (not x4679) x4949)
+(or (not x4949) (not x4954))
+(or (not x4949) (not x4953))
+(or (not x4949) x96)
+(or (not x4949) (not x97))
+(or (not x4949) x4680)
+(or (not x4949) x4679)
+(or x4959 (not x4949))
+(or x4959 (not x4954))
+(or x4959 x4953)
+(or x4949 x4954 (not x4953) (not x4959))
+(or (not x4959) (not x4956) (not x4958) x4960)
+(or (not x4960) x4959)
+(or (not x4960) x4956)
+(or (not x4960) x4958)
+(or x4961 (not x4796))
+(or x4961 (not x4962))
+(or x4961 (not x4963))
+(or x4961 (not x4904))
+(or x4961 (not x4884))
+(or x4961 (not x4906))
+(or x4961 (not x4887))
+(or x4961 (not x4883))
+(or x4961 (not x4884))
+(or x4961 (not x4885))
+(or x4961 (not x4886))
+(or x4961 (not x4887))
+(or x4961 (not x4888))
+(or x4796 x4962 x4963 x4904 x4884 x4906 x4887 x4883 x4884 x4885 x4886 x4887 x4888 (not x4961))
+(or (not x4787) (not x4788) (not x4961) x4964)
+(or (not x4964) x4787)
+(or (not x4964) x4788)
+(or (not x4964) x4961)
+(or x4965 (not x4680))
+(or x4965 (not x4679))
+(or x4680 x4679 (not x4965))
+(or x4680 x4679 x4966)
+(or (not x4966) (not x4680))
+(or (not x4966) (not x4679))
+(or x4967 (not x4966))
+(or x4967 (not x4680))
+(or x4967 x4679)
+(or x4966 x4680 (not x4679) (not x4967))
+(or x4968 (not x4969))
+(or x4968 (not x4970))
+(or x4968 (not x4971))
+(or x4968 (not x4972))
+(or x4968 (not x4973))
+(or x4968 (not x4974))
+(or x4968 (not x4905))
+(or x4968 (not x4975))
+(or x4968 (not x4976))
+(or x4968 (not x4977))
+(or x4968 (not x4978))
+(or x4968 (not x4982))
+(or x4969 x4970 x4971 x4972 x4973 x4974 x4905 x4975 x4976 x4977 x4978 x4982 (not x4968))
+(or (not x4983) (not x4984) (not x4985) (not x4986) (not x4987) (not x4988) (not x4989) (not x4990) (not x4991) (not x4992) (not x4993) (not x4968) x4994)
+(or (not x4994) x4983)
+(or (not x4994) x4984)
+(or (not x4994) x4985)
+(or (not x4994) x4986)
+(or (not x4994) x4987)
+(or (not x4994) x4988)
+(or (not x4994) x4989)
+(or (not x4994) x4990)
+(or (not x4994) x4991)
+(or (not x4994) x4992)
+(or (not x4994) x4993)
+(or (not x4994) x4968)
+(or x4995 (not x4969))
+(or x4995 (not x4970))
+(or x4995 (not x4971))
+(or x4995 (not x4972))
+(or x4995 (not x4973))
+(or x4995 (not x4974))
+(or x4995 (not x4905))
+(or x4995 (not x4975))
+(or x4995 (not x4976))
+(or x4995 (not x4977))
+(or x4995 (not x4978))
+(or x4995 (not x4981))
+(or x4969 x4970 x4971 x4972 x4973 x4974 x4905 x4975 x4976 x4977 x4978 x4981 (not x4995))
+(or x4996 x4997)
+(or x4996 (not x4998))
+(or (not x4997) x4998 (not x4996))
+(or (not x4996) (not x4997) x4999)
+(or (not x4999) x4996)
+(or (not x4999) x4997)
+(or x5000 (not x4969))
+(or x5000 (not x4970))
+(or x5000 (not x4971))
+(or x5000 (not x4972))
+(or x5000 (not x4973))
+(or x5000 (not x4974))
+(or x5000 (not x4905))
+(or x5000 (not x4975))
+(or x5000 (not x4982))
+(or x5000 (not x4981))
+(or x5000 (not x4980))
+(or x5000 x4979)
+(or x5000 (not x98))
+(or x5000 (not x97))
+(or x5000 (not x4999))
+(or x4969 x4970 x4971 x4972 x4973 x4974 x4905 x4975 x4982 x4981 x4980 (not x4979) x98 x97 x4999 (not x5000))
+(or x5001 (not x4969))
+(or x5001 (not x4970))
+(or x5001 (not x4971))
+(or x5001 (not x4972))
+(or x5001 (not x4973))
+(or x5001 (not x4974))
+(or x5001 (not x4982))
+(or x5001 (not x4981))
+(or x5001 x4980)
+(or x5001 x4979)
+(or x5001 x5002)
+(or x5001 x5003)
+(or x5001 x5004)
+(or x4969 x4970 x4971 x4972 x4973 x4974 x4982 x4981 (not x4980) (not x4979) (not x5002) (not x5003) (not x5004) (not x5001))
+(or x5005 (not x4969))
+(or x5005 (not x4970))
+(or x5005 (not x4971))
+(or x5005 (not x4972))
+(or x5005 (not x4982))
+(or x5005 (not x4981))
+(or x5005 x4980)
+(or x5005 (not x4979))
+(or x5005 (not x5006))
+(or x5005 x5007)
+(or x5005 x5008)
+(or x4969 x4970 x4971 x4972 x4982 x4981 (not x4980) x4979 x5006 (not x5007) (not x5008) (not x5005))
+(or x5009 (not x4969))
+(or x5009 (not x4982))
+(or x5009 (not x4981))
+(or x5009 (not x4980))
+(or x5009 (not x4979))
+(or x5009 (not x97))
+(or x5009 x4680)
+(or x5009 x4679)
+(or x5009 (not x5006))
+(or x5009 (not x5010))
+(or x5009 (not x5011))
+(or x5009 x5012)
+(or x4969 x4982 x4981 x4980 x4979 x97 (not x4680) (not x4679) x5006 x5010 x5011 (not x5012) (not x5009))
+(or x5013 x5014)
+(or x5013 x5015)
+(or x5013 x5016)
+(or (not x5014) (not x5015) (not x5016) (not x5013))
+(or (not x5013) (not x5014) x5017)
+(or (not x5017) x5013)
+(or (not x5017) x5014)
+(or x5018 x5019)
+(or x5018 (not x5017))
+(or (not x5019) x5017 (not x5018))
+(or (not x5018) (not x5019) x5020)
+(or (not x5020) x5018)
+(or (not x5020) x5019)
+(or x5021 (not x4982))
+(or x5021 (not x4981))
+(or x5021 (not x4980))
+(or x5021 (not x4979))
+(or x5021 (not x97))
+(or x5021 x4680)
+(or x5021 x4679)
+(or x5021 (not x5006))
+(or x5021 (not x5022))
+(or x5021 (not x5020))
+(or x4982 x4981 x4980 x4979 x97 (not x4680) (not x4679) x5006 x5022 x5020 (not x5021))
+(or (not x5021) (not x5009) (not x4985) (not x4986) (not x5005) (not x4988) (not x5001) (not x4990) (not x5000) (not x4993) (not x4995) x5023)
+(or (not x5023) x5021)
+(or (not x5023) x5009)
+(or (not x5023) x4985)
+(or (not x5023) x4986)
+(or (not x5023) x5005)
+(or (not x5023) x4988)
+(or (not x5023) x5001)
+(or (not x5023) x4990)
+(or (not x5023) x5000)
+(or (not x5023) x4993)
+(or (not x5023) x4995)
+(or x5024 (not x4969))
+(or x5024 (not x4970))
+(or x5024 (not x4971))
+(or x5024 (not x4972))
+(or x5024 (not x4973))
+(or x5024 (not x4974))
+(or x5024 (not x4905))
+(or x5024 (not x4975))
+(or x5024 (not x4976))
+(or x5024 (not x4977))
+(or x5024 (not x4978))
+(or x5024 (not x4980))
+(or x4969 x4970 x4971 x4972 x4973 x4974 x4905 x4975 x4976 x4977 x4978 x4980 (not x5024))
+(or x4992 (not x4969))
+(or x4992 (not x4970))
+(or x4992 (not x4971))
+(or x4992 (not x4972))
+(or x4992 (not x4973))
+(or x4992 (not x4974))
+(or x4992 (not x4905))
+(or x4992 (not x4975))
+(or x4992 (not x4976))
+(or x4992 (not x4982))
+(or x4992 x4981)
+(or x4992 x4980)
+(or x4992 (not x4979))
+(or x4992 (not x98))
+(or x4992 (not x97))
+(or x4969 x4970 x4971 x4972 x4973 x4974 x4905 x4975 x4976 x4982 (not x4981) (not x4980) x4979 x98 x97 (not x4992))
+(or x5025 x4998)
+(or x5025 x5026)
+(or (not x4998) (not x5026) (not x5025))
+(or (not x5025) (not x4998) x5027)
+(or (not x5027) x5025)
+(or (not x5027) x4998)
+(or x5028 (not x4969))
+(or x5028 (not x4970))
+(or x5028 (not x4971))
+(or x5028 (not x4972))
+(or x5028 (not x4973))
+(or x5028 (not x4974))
+(or x5028 (not x4905))
+(or x5028 (not x4975))
+(or x5028 (not x4982))
+(or x5028 (not x4981))
+(or x5028 (not x4980))
+(or x5028 x4979)
+(or x5028 (not x98))
+(or x5028 (not x97))
+(or x5028 x4997)
+(or x5028 (not x5027))
+(or x4969 x4970 x4971 x4972 x4973 x4974 x4905 x4975 x4982 x4981 x4980 (not x4979) x98 x97 (not x4997) x5027 (not x5028))
+(or x5029 x5004)
+(or x5029 (not x5030))
+(or (not x5004) x5030 (not x5029))
+(or (not x5029) (not x5004) x5031)
+(or (not x5031) x5029)
+(or (not x5031) x5004)
+(or x5032 x5002)
+(or x5032 x5003)
+(or x5032 (not x5031))
+(or (not x5002) (not x5003) x5031 (not x5032))
+(or (not x5032) (not x5002) x5033)
+(or (not x5033) x5032)
+(or (not x5033) x5002)
+(or x5034 (not x4969))
+(or x5034 (not x4970))
+(or x5034 (not x4971))
+(or x5034 (not x4972))
+(or x5034 (not x4973))
+(or x5034 (not x4974))
+(or x5034 (not x4982))
+(or x5034 (not x4981))
+(or x5034 x4980)
+(or x5034 x4979)
+(or x5034 (not x5033))
+(or x4969 x4970 x4971 x4972 x4973 x4974 x4982 x4981 (not x4980) (not x4979) x5033 (not x5034))
+(or x5035 x5008)
+(or x5035 (not x5036))
+(or (not x5008) x5036 (not x5035))
+(or (not x5035) (not x5008) x5037)
+(or (not x5037) x5035)
+(or (not x5037) x5008)
+(or x5038 (not x4969))
+(or x5038 (not x4970))
+(or x5038 (not x4971))
+(or x5038 (not x4972))
+(or x5038 (not x4982))
+(or x5038 (not x4981))
+(or x5038 x4980)
+(or x5038 (not x4979))
+(or x5038 (not x5006))
+(or x5038 x5007)
+(or x5038 (not x5037))
+(or x4969 x4970 x4971 x4972 x4982 x4981 (not x4980) x4979 x5006 (not x5007) x5037 (not x5038))
+(or x5039 (not x4969))
+(or x5039 (not x4982))
+(or x5039 (not x4981))
+(or x5039 (not x4980))
+(or x5039 (not x4979))
+(or x5039 (not x97))
+(or x5039 x4680)
+(or x5039 x4679)
+(or x5039 (not x5006))
+(or x5039 (not x5010))
+(or x5039 (not x5011))
+(or x5039 (not x5012))
+(or x4969 x4982 x4981 x4980 x4979 x97 (not x4680) (not x4679) x5006 x5010 x5011 x5012 (not x5039))
+(or x5040 x5019)
+(or x5040 x5014)
+(or x5040 x5015)
+(or x5040 (not x5016))
+(or (not x5019) (not x5014) (not x5015) x5016 (not x5040))
+(or (not x5040) (not x5019) x5041)
+(or (not x5041) x5040)
+(or (not x5041) x5019)
+(or x5042 (not x4982))
+(or x5042 (not x4981))
+(or x5042 (not x4980))
+(or x5042 (not x4979))
+(or x5042 (not x97))
+(or x5042 x4680)
+(or x5042 x4679)
+(or x5042 (not x5006))
+(or x5042 (not x5022))
+(or x5042 (not x5041))
+(or x4982 x4981 x4980 x4979 x97 (not x4680) (not x4679) x5006 x5022 x5041 (not x5042))
+(or (not x5042) (not x5039) (not x4986) (not x5038) (not x5034) (not x4990) (not x5028) (not x4992) (not x4993) (not x5024) x5043)
+(or (not x5043) x5042)
+(or (not x5043) x5039)
+(or (not x5043) x4986)
+(or (not x5043) x5038)
+(or (not x5043) x5034)
+(or (not x5043) x4990)
+(or (not x5043) x5028)
+(or (not x5043) x4992)
+(or (not x5043) x4993)
+(or (not x5043) x5024)
+(or x5044 (not x4886))
+(or x5044 (not x4888))
+(or x5044 (not x4887))
+(or x4886 x4888 x4887 (not x5044))
+(or (not x5044) (not x97) x4978)
+(or (not x4978) x5044)
+(or (not x4978) x97)
+(or x5045 (not x4969))
+(or x5045 (not x4970))
+(or x5045 (not x4971))
+(or x5045 (not x4972))
+(or x5045 (not x4973))
+(or x5045 (not x4974))
+(or x5045 (not x4905))
+(or x5045 (not x4975))
+(or x5045 (not x4976))
+(or x5045 (not x4977))
+(or x5045 (not x4978))
+(or x5045 (not x4979))
+(or x4969 x4970 x4971 x4972 x4973 x4974 x4905 x4975 x4976 x4977 x4978 x4979 (not x5045))
+(or x4870 (not x4982))
+(or x4870 x4981)
+(or x4870 (not x4980))
+(or x4870 (not x4979))
+(or x4982 (not x4981) x4980 x4979 (not x4870))
+(or (not x4870) (not x4871) (not x4835) x5046)
+(or (not x5046) x4870)
+(or (not x5046) x4871)
+(or (not x5046) x4835)
+(or x4982 (not x4981) (not x4980) x4979 x98 x97 x4977)
+(or (not x4977) (not x4982))
+(or (not x4977) x4981)
+(or (not x4977) x4980)
+(or (not x4977) (not x4979))
+(or (not x4977) (not x98))
+(or (not x4977) (not x97))
+(or x4982 x4981 x4980 (not x4979) x98 x97 x4976)
+(or (not x4976) (not x4982))
+(or (not x4976) (not x4981))
+(or (not x4976) (not x4980))
+(or (not x4976) x4979)
+(or (not x4976) (not x98))
+(or (not x4976) (not x97))
+(or x4993 (not x4969))
+(or x4993 (not x4970))
+(or x4993 (not x4971))
+(or x4993 (not x4972))
+(or x4993 (not x4973))
+(or x4993 (not x4974))
+(or x4993 (not x4905))
+(or x4993 (not x4975))
+(or x4993 (not x4976))
+(or x4993 (not x4977))
+(or x4993 (not x5046))
+(or x4993 x97)
+(or x4969 x4970 x4971 x4972 x4973 x4974 x4905 x4975 x4976 x4977 x5046 (not x97) (not x4993))
+(or x5047 x5026)
+(or x5047 x5048)
+(or (not x5026) (not x5048) (not x5047))
+(or (not x5047) (not x5026) x5049)
+(or (not x5049) x5047)
+(or (not x5049) x5026)
+(or x4982 x4981 x4980 (not x4979) x98 (not x97) x4975)
+(or (not x4975) (not x4982))
+(or (not x4975) (not x4981))
+(or (not x4975) (not x4980))
+(or (not x4975) x4979)
+(or (not x4975) (not x98))
+(or (not x4975) x97)
+(or x4991 (not x4969))
+(or x4991 (not x4970))
+(or x4991 (not x4971))
+(or x4991 (not x4972))
+(or x4991 (not x4973))
+(or x4991 (not x4974))
+(or x4991 (not x4905))
+(or x4991 (not x4975))
+(or x4991 (not x4982))
+(or x4991 (not x4981))
+(or x4991 (not x4980))
+(or x4991 x4979)
+(or x4991 (not x98))
+(or x4991 (not x97))
+(or x4969 x4970 x4971 x4972 x4973 x4974 x4905 x4975 x4982 x4981 x4980 (not x4979) x98 x97 (not x4991))
+(or x5050 (not x4969))
+(or x5050 (not x4970))
+(or x5050 (not x4971))
+(or x5050 (not x4972))
+(or x5050 (not x4973))
+(or x5050 (not x4974))
+(or x5050 (not x4905))
+(or x5050 (not x4975))
+(or x5050 (not x4982))
+(or x5050 (not x4981))
+(or x5050 (not x4980))
+(or x5050 x4979)
+(or x5050 (not x98))
+(or x5050 (not x97))
+(or x5050 x4997)
+(or x5050 x4998)
+(or x5050 (not x5049))
+(or x4969 x4970 x4971 x4972 x4973 x4974 x4905 x4975 x4982 x4981 x4980 (not x4979) x98 x97 (not x4997) (not x4998) x5049 (not x5050))
+(or x4990 (not x4969))
+(or x4990 (not x4970))
+(or x4990 (not x4971))
+(or x4990 (not x4972))
+(or x4990 (not x4973))
+(or x4990 (not x4974))
+(or x4990 (not x4905))
+(or x4990 (not x4982))
+(or x4990 (not x4981))
+(or x4990 (not x4980))
+(or x4990 x4979)
+(or x4990 (not x98))
+(or x4990 x97)
+(or x4969 x4970 x4971 x4972 x4973 x4974 x4905 x4982 x4981 x4980 (not x4979) x98 (not x97) (not x4990))
+(or x5051 x5003)
+(or x5051 (not x5004))
+(or (not x5003) x5004 (not x5051))
+(or (not x5051) (not x5003) x5052)
+(or (not x5052) x5051)
+(or (not x5052) x5003)
+(or x4989 (not x4969))
+(or x4989 (not x4970))
+(or x4989 (not x4971))
+(or x4989 (not x4972))
+(or x4989 (not x4973))
+(or x4989 (not x4974))
+(or x4989 (not x4982))
+(or x4989 (not x4981))
+(or x4989 x4980)
+(or x4989 x4979)
+(or x4969 x4970 x4971 x4972 x4973 x4974 x4982 x4981 (not x4980) (not x4979) (not x4989))
+(or x5053 (not x4969))
+(or x5053 (not x4970))
+(or x5053 (not x4971))
+(or x5053 (not x4972))
+(or x5053 (not x4973))
+(or x5053 (not x4974))
+(or x5053 (not x4982))
+(or x5053 (not x4981))
+(or x5053 x4980)
+(or x5053 x4979)
+(or x5053 x5002)
+(or x5053 (not x5052))
+(or x4969 x4970 x4971 x4972 x4973 x4974 x4982 x4981 (not x4980) (not x4979) (not x5002) x5052 (not x5053))
+(or x4982 x4981 (not x4980) x4979 (not x5054) x4973)
+(or (not x4973) (not x4982))
+(or (not x4973) (not x4981))
+(or (not x4973) x4980)
+(or (not x4973) (not x4979))
+(or (not x4973) x5054)
+(or x4988 (not x4969))
+(or x4988 (not x4970))
+(or x4988 (not x4971))
+(or x4988 (not x4972))
+(or x4988 (not x4973))
+(or x4988 (not x4982))
+(or x4988 (not x4981))
+(or x4988 x4980)
+(or x4988 (not x4979))
+(or x4969 x4970 x4971 x4972 x4973 x4982 x4981 (not x4980) x4979 (not x4988))
+(or x5055 x5007)
+(or x5055 x5008)
+(or x5055 x5036)
+(or x5055 x5056)
+(or (not x5007) (not x5008) (not x5036) (not x5056) (not x5055))
+(or (not x5055) (not x5007) x5057)
+(or (not x5057) x5055)
+(or (not x5057) x5007)
+(or x4982 x4981 (not x4980) x4979 (not x97) (not x98) x4972)
+(or (not x4972) (not x4982))
+(or (not x4972) (not x4981))
+(or (not x4972) x4980)
+(or (not x4972) (not x4979))
+(or (not x4972) x97)
+(or (not x4972) x98)
+(or x4987 (not x4969))
+(or x4987 (not x4970))
+(or x4987 (not x4971))
+(or x4987 (not x4972))
+(or x4987 (not x4982))
+(or x4987 (not x4981))
+(or x4987 x4980)
+(or x4987 (not x4979))
+(or x4987 (not x5006))
+(or x4969 x4970 x4971 x4972 x4982 x4981 (not x4980) x4979 x5006 (not x4987))
+(or x5058 (not x4969))
+(or x5058 (not x4970))
+(or x5058 (not x4971))
+(or x5058 (not x4972))
+(or x5058 (not x4982))
+(or x5058 (not x4981))
+(or x5058 x4980)
+(or x5058 (not x4979))
+(or x5058 (not x5006))
+(or x5058 (not x5057))
+(or x4969 x4970 x4971 x4972 x4982 x4981 (not x4980) x4979 x5006 x5057 (not x5058))
+(or x4986 (not x4969))
+(or x4986 (not x4970))
+(or x4986 (not x4971))
+(or x4986 (not x4982))
+(or x4986 (not x4981))
+(or x4986 x4980)
+(or x4986 (not x4979))
+(or x4986 x97)
+(or x4986 x98)
+(or x4969 x4970 x4971 x4982 x4981 (not x4980) x4979 (not x97) (not x98) (not x4986))
+(or x4982 x4981 x4980 x4979 x97 (not x4680) (not x4679) (not x5054) (not x5059) (not x5060) x4970)
+(or (not x4970) (not x4982))
+(or (not x4970) (not x4981))
+(or (not x4970) (not x4980))
+(or (not x4970) (not x4979))
+(or (not x4970) (not x97))
+(or (not x4970) x4680)
+(or (not x4970) x4679)
+(or (not x4970) x5054)
+(or (not x4970) x5059)
+(or (not x4970) x5060)
+(or x4985 (not x4969))
+(or x4985 (not x4970))
+(or x4985 (not x4982))
+(or x4985 (not x4981))
+(or x4985 (not x4980))
+(or x4985 (not x4979))
+(or x4985 (not x97))
+(or x4985 x4680)
+(or x4985 x4679)
+(or x4969 x4970 x4982 x4981 x4980 x4979 x97 (not x4680) (not x4679) (not x4985))
+(or (not x4941) (not x4940) x4939)
+(or (not x4939) x4941)
+(or (not x4939) x4940)
+(or (not x4941) x4940 x4938)
+(or (not x4938) x4941)
+(or (not x4938) (not x4940))
+(or x4941 (not x4940) x4937)
+(or (not x4937) (not x4941))
+(or (not x4937) x4940)
+(or x4941 x4940 (not x96) x97 x5061)
+(or (not x5061) (not x4941))
+(or (not x5061) (not x4940))
+(or (not x5061) x96)
+(or (not x5061) (not x97))
+(or x5054 (not x5061))
+(or x5054 (not x4937))
+(or x5054 (not x4938))
+(or x5054 (not x4939))
+(or x5061 x4937 x4938 x4939 (not x5054))
+(or x4982 x4981 x4980 x4979 x97 (not x4680) (not x4679) x4971)
+(or (not x4971) (not x4982))
+(or (not x4971) (not x4981))
+(or (not x4971) (not x4980))
+(or (not x4971) (not x4979))
+(or (not x4971) (not x97))
+(or (not x4971) x4680)
+(or (not x4971) x4679)
+(or x4982 x4981 x4980 x4979 x97 (not x4680) (not x4679) (not x5054) (not x5062) x4969)
+(or (not x4969) (not x4982))
+(or (not x4969) (not x4981))
+(or (not x4969) (not x4980))
+(or (not x4969) (not x4979))
+(or (not x4969) (not x97))
+(or (not x4969) x4680)
+(or (not x4969) x4679)
+(or (not x4969) x5054)
+(or (not x4969) x5062)
+(or x4984 (not x4969))
+(or x4984 (not x4982))
+(or x4984 (not x4981))
+(or x4984 (not x4980))
+(or x4984 (not x4979))
+(or x4984 (not x97))
+(or x4984 x4680)
+(or x4984 x4679)
+(or x4984 (not x5006))
+(or x4984 (not x5010))
+(or x4984 (not x5011))
+(or x4969 x4982 x4981 x4980 x4979 x97 (not x4680) (not x4679) x5006 x5010 x5011 (not x4984))
+(or x5063 (not x4969))
+(or x5063 (not x4982))
+(or x5063 (not x4981))
+(or x5063 (not x4980))
+(or x5063 (not x4979))
+(or x5063 (not x97))
+(or x5063 x4680)
+(or x5063 x4679)
+(or x5063 (not x5006))
+(or x5063 (not x5010))
+(or x5063 (not x5011))
+(or x5063 x5012)
+(or x5063 x5064)
+(or x4969 x4982 x4981 x4980 x4979 x97 (not x4680) (not x4679) x5006 x5010 x5011 (not x5012) (not x5064) (not x5063))
+(or x5065 x5015)
+(or x5065 x5016)
+(or (not x5015) (not x5016) (not x5065))
+(or (not x5065) (not x5015) x5066)
+(or (not x5066) x5065)
+(or (not x5066) x5015)
+(or x5067 x4941)
+(or x5067 x4940)
+(or (not x4941) (not x4940) (not x5067))
+(or x5068 x4941)
+(or x5068 (not x4940))
+(or (not x4941) x4940 (not x5068))
+(or x5069 (not x4941))
+(or x5069 x4940)
+(or x4941 (not x4940) (not x5069))
+(or x5070 (not x4941))
+(or x5070 (not x4940))
+(or x5070 x96)
+(or x5070 (not x97))
+(or x4941 x4940 (not x96) x97 (not x5070))
+(or (not x5070) (not x5069) (not x5068) (not x5067) x5006)
+(or (not x5006) x5070)
+(or (not x5006) x5069)
+(or (not x5006) x5068)
+(or (not x5006) x5067)
+(or x4983 (not x4982))
+(or x4983 (not x4981))
+(or x4983 (not x4980))
+(or x4983 (not x4979))
+(or x4983 (not x97))
+(or x4983 x4680)
+(or x4983 x4679)
+(or x4983 (not x5006))
+(or x4983 (not x5022))
+(or x4982 x4981 x4980 x4979 x97 (not x4680) (not x4679) x5006 x5022 (not x4983))
+(or x5071 (not x4982))
+(or x5071 (not x4981))
+(or x5071 (not x4980))
+(or x5071 (not x4979))
+(or x5071 (not x97))
+(or x5071 x4680)
+(or x5071 x4679)
+(or x5071 (not x5006))
+(or x5071 (not x5022))
+(or x5071 x5019)
+(or x5071 x5014)
+(or x5071 (not x5066))
+(or x4982 x4981 x4980 x4979 x97 (not x4680) (not x4679) x5006 x5022 (not x5019) (not x5014) x5066 (not x5071))
+(or (not x5071) (not x5063) (not x4985) (not x4986) (not x5058) (not x4988) (not x5053) (not x4990) (not x5050) (not x4993) (not x5045) x5072)
+(or (not x5072) x5071)
+(or (not x5072) x5063)
+(or (not x5072) x4985)
+(or (not x5072) x4986)
+(or (not x5072) x5058)
+(or (not x5072) x4988)
+(or (not x5072) x5053)
+(or (not x5072) x4990)
+(or (not x5072) x5050)
+(or (not x5072) x4993)
+(or (not x5072) x5045)
+(or x5073 (not x5074))
+(or x5073 (not x5075))
+(or x5073 (not x5076))
+(or x5073 (not x5077))
+(or x5073 (not x5078))
+(or x5073 (not x5079))
+(or x5073 (not x4903))
+(or x5073 (not x5080))
+(or x5073 (not x5081))
+(or x5073 (not x5082))
+(or x5073 (not x5083))
+(or x5073 (not x5087))
+(or x5074 x5075 x5076 x5077 x5078 x5079 x4903 x5080 x5081 x5082 x5083 x5087 (not x5073))
+(or (not x5088) (not x5089) (not x5090) (not x5091) (not x5092) (not x5093) (not x5094) (not x5095) (not x5096) (not x5097) (not x5098) (not x5073) x5099)
+(or (not x5099) x5088)
+(or (not x5099) x5089)
+(or (not x5099) x5090)
+(or (not x5099) x5091)
+(or (not x5099) x5092)
+(or (not x5099) x5093)
+(or (not x5099) x5094)
+(or (not x5099) x5095)
+(or (not x5099) x5096)
+(or (not x5099) x5097)
+(or (not x5099) x5098)
+(or (not x5099) x5073)
+(or x5100 (not x5074))
+(or x5100 (not x5075))
+(or x5100 (not x5076))
+(or x5100 (not x5077))
+(or x5100 (not x5078))
+(or x5100 (not x5079))
+(or x5100 (not x4903))
+(or x5100 (not x5080))
+(or x5100 (not x5081))
+(or x5100 (not x5082))
+(or x5100 (not x5083))
+(or x5100 (not x5086))
+(or x5074 x5075 x5076 x5077 x5078 x5079 x4903 x5080 x5081 x5082 x5083 x5086 (not x5100))
+(or x5101 x5102)
+(or x5101 (not x5103))
+(or (not x5102) x5103 (not x5101))
+(or (not x5101) (not x5102) x5104)
+(or (not x5104) x5101)
+(or (not x5104) x5102)
+(or x5105 (not x5074))
+(or x5105 (not x5075))
+(or x5105 (not x5076))
+(or x5105 (not x5077))
+(or x5105 (not x5078))
+(or x5105 (not x5079))
+(or x5105 (not x4903))
+(or x5105 (not x5080))
+(or x5105 (not x5087))
+(or x5105 (not x5086))
+(or x5105 (not x5085))
+(or x5105 x5084)
+(or x5105 (not x98))
+(or x5105 (not x97))
+(or x5105 (not x5104))
+(or x5074 x5075 x5076 x5077 x5078 x5079 x4903 x5080 x5087 x5086 x5085 (not x5084) x98 x97 x5104 (not x5105))
+(or x5106 (not x5074))
+(or x5106 (not x5075))
+(or x5106 (not x5076))
+(or x5106 (not x5077))
+(or x5106 (not x5078))
+(or x5106 (not x5079))
+(or x5106 (not x5087))
+(or x5106 (not x5086))
+(or x5106 x5085)
+(or x5106 x5084)
+(or x5106 x5107)
+(or x5106 x5108)
+(or x5106 x5109)
+(or x5074 x5075 x5076 x5077 x5078 x5079 x5087 x5086 (not x5085) (not x5084) (not x5107) (not x5108) (not x5109) (not x5106))
+(or x5110 (not x5074))
+(or x5110 (not x5075))
+(or x5110 (not x5076))
+(or x5110 (not x5077))
+(or x5110 (not x5087))
+(or x5110 (not x5086))
+(or x5110 x5085)
+(or x5110 (not x5084))
+(or x5110 (not x5111))
+(or x5110 x5112)
+(or x5110 x5113)
+(or x5074 x5075 x5076 x5077 x5087 x5086 (not x5085) x5084 x5111 (not x5112) (not x5113) (not x5110))
+(or x5114 (not x5074))
+(or x5114 (not x5087))
+(or x5114 (not x5086))
+(or x5114 (not x5085))
+(or x5114 (not x5084))
+(or x5114 (not x97))
+(or x5114 x4680)
+(or x5114 x4679)
+(or x5114 (not x5111))
+(or x5114 (not x5010))
+(or x5114 (not x5011))
+(or x5114 x5115)
+(or x5074 x5087 x5086 x5085 x5084 x97 (not x4680) (not x4679) x5111 x5010 x5011 (not x5115) (not x5114))
+(or x5116 x5117)
+(or x5116 x5118)
+(or x5116 x5119)
+(or (not x5117) (not x5118) (not x5119) (not x5116))
+(or (not x5116) (not x5117) x5120)
+(or (not x5120) x5116)
+(or (not x5120) x5117)
+(or x5121 x5122)
+(or x5121 (not x5120))
+(or (not x5122) x5120 (not x5121))
+(or (not x5121) (not x5122) x5123)
+(or (not x5123) x5121)
+(or (not x5123) x5122)
+(or x5124 (not x5087))
+(or x5124 (not x5086))
+(or x5124 (not x5085))
+(or x5124 (not x5084))
+(or x5124 (not x97))
+(or x5124 x4680)
+(or x5124 x4679)
+(or x5124 (not x5111))
+(or x5124 (not x5022))
+(or x5124 (not x5123))
+(or x5087 x5086 x5085 x5084 x97 (not x4680) (not x4679) x5111 x5022 x5123 (not x5124))
+(or (not x5124) (not x5114) (not x5090) (not x5091) (not x5110) (not x5093) (not x5106) (not x5095) (not x5105) (not x5098) (not x5100) x5125)
+(or (not x5125) x5124)
+(or (not x5125) x5114)
+(or (not x5125) x5090)
+(or (not x5125) x5091)
+(or (not x5125) x5110)
+(or (not x5125) x5093)
+(or (not x5125) x5106)
+(or (not x5125) x5095)
+(or (not x5125) x5105)
+(or (not x5125) x5098)
+(or (not x5125) x5100)
+(or x5126 (not x5074))
+(or x5126 (not x5075))
+(or x5126 (not x5076))
+(or x5126 (not x5077))
+(or x5126 (not x5078))
+(or x5126 (not x5079))
+(or x5126 (not x4903))
+(or x5126 (not x5080))
+(or x5126 (not x5081))
+(or x5126 (not x5082))
+(or x5126 (not x5083))
+(or x5126 (not x5085))
+(or x5074 x5075 x5076 x5077 x5078 x5079 x4903 x5080 x5081 x5082 x5083 x5085 (not x5126))
+(or x5097 (not x5074))
+(or x5097 (not x5075))
+(or x5097 (not x5076))
+(or x5097 (not x5077))
+(or x5097 (not x5078))
+(or x5097 (not x5079))
+(or x5097 (not x4903))
+(or x5097 (not x5080))
+(or x5097 (not x5081))
+(or x5097 (not x5087))
+(or x5097 x5086)
+(or x5097 x5085)
+(or x5097 (not x5084))
+(or x5097 (not x98))
+(or x5097 (not x97))
+(or x5074 x5075 x5076 x5077 x5078 x5079 x4903 x5080 x5081 x5087 (not x5086) (not x5085) x5084 x98 x97 (not x5097))
+(or x5127 x5103)
+(or x5127 x5128)
+(or (not x5103) (not x5128) (not x5127))
+(or (not x5127) (not x5103) x5129)
+(or (not x5129) x5127)
+(or (not x5129) x5103)
+(or x5130 (not x5074))
+(or x5130 (not x5075))
+(or x5130 (not x5076))
+(or x5130 (not x5077))
+(or x5130 (not x5078))
+(or x5130 (not x5079))
+(or x5130 (not x4903))
+(or x5130 (not x5080))
+(or x5130 (not x5087))
+(or x5130 (not x5086))
+(or x5130 (not x5085))
+(or x5130 x5084)
+(or x5130 (not x98))
+(or x5130 (not x97))
+(or x5130 x5102)
+(or x5130 (not x5129))
+(or x5074 x5075 x5076 x5077 x5078 x5079 x4903 x5080 x5087 x5086 x5085 (not x5084) x98 x97 (not x5102) x5129 (not x5130))
+(or x5131 x5109)
+(or x5131 (not x5132))
+(or (not x5109) x5132 (not x5131))
+(or (not x5131) (not x5109) x5133)
+(or (not x5133) x5131)
+(or (not x5133) x5109)
+(or x5134 x5107)
+(or x5134 x5108)
+(or x5134 (not x5133))
+(or (not x5107) (not x5108) x5133 (not x5134))
+(or (not x5134) (not x5107) x5135)
+(or (not x5135) x5134)
+(or (not x5135) x5107)
+(or x5136 (not x5074))
+(or x5136 (not x5075))
+(or x5136 (not x5076))
+(or x5136 (not x5077))
+(or x5136 (not x5078))
+(or x5136 (not x5079))
+(or x5136 (not x5087))
+(or x5136 (not x5086))
+(or x5136 x5085)
+(or x5136 x5084)
+(or x5136 (not x5135))
+(or x5074 x5075 x5076 x5077 x5078 x5079 x5087 x5086 (not x5085) (not x5084) x5135 (not x5136))
+(or x5137 x5113)
+(or x5137 (not x5138))
+(or (not x5113) x5138 (not x5137))
+(or (not x5137) (not x5113) x5139)
+(or (not x5139) x5137)
+(or (not x5139) x5113)
+(or x5140 (not x5074))
+(or x5140 (not x5075))
+(or x5140 (not x5076))
+(or x5140 (not x5077))
+(or x5140 (not x5087))
+(or x5140 (not x5086))
+(or x5140 x5085)
+(or x5140 (not x5084))
+(or x5140 (not x5111))
+(or x5140 x5112)
+(or x5140 (not x5139))
+(or x5074 x5075 x5076 x5077 x5087 x5086 (not x5085) x5084 x5111 (not x5112) x5139 (not x5140))
+(or x5141 (not x5074))
+(or x5141 (not x5087))
+(or x5141 (not x5086))
+(or x5141 (not x5085))
+(or x5141 (not x5084))
+(or x5141 (not x97))
+(or x5141 x4680)
+(or x5141 x4679)
+(or x5141 (not x5111))
+(or x5141 (not x5010))
+(or x5141 (not x5011))
+(or x5141 (not x5115))
+(or x5074 x5087 x5086 x5085 x5084 x97 (not x4680) (not x4679) x5111 x5010 x5011 x5115 (not x5141))
+(or x5142 x5122)
+(or x5142 x5117)
+(or x5142 x5118)
+(or x5142 (not x5119))
+(or (not x5122) (not x5117) (not x5118) x5119 (not x5142))
+(or (not x5142) (not x5122) x5143)
+(or (not x5143) x5142)
+(or (not x5143) x5122)
+(or x5144 (not x5087))
+(or x5144 (not x5086))
+(or x5144 (not x5085))
+(or x5144 (not x5084))
+(or x5144 (not x97))
+(or x5144 x4680)
+(or x5144 x4679)
+(or x5144 (not x5111))
+(or x5144 (not x5022))
+(or x5144 (not x5143))
+(or x5087 x5086 x5085 x5084 x97 (not x4680) (not x4679) x5111 x5022 x5143 (not x5144))
+(or (not x5144) (not x5141) (not x5091) (not x5140) (not x5136) (not x5095) (not x5130) (not x5097) (not x5098) (not x5126) x5145)
+(or (not x5145) x5144)
+(or (not x5145) x5141)
+(or (not x5145) x5091)
+(or (not x5145) x5140)
+(or (not x5145) x5136)
+(or (not x5145) x5095)
+(or (not x5145) x5130)
+(or (not x5145) x5097)
+(or (not x5145) x5098)
+(or (not x5145) x5126)
+(or x5146 (not x4883))
+(or x5146 (not x4885))
+(or x5146 (not x4884))
+(or x4883 x4885 x4884 (not x5146))
+(or (not x5146) (not x97) x5083)
+(or (not x5083) x5146)
+(or (not x5083) x97)
+(or x5147 (not x5074))
+(or x5147 (not x5075))
+(or x5147 (not x5076))
+(or x5147 (not x5077))
+(or x5147 (not x5078))
+(or x5147 (not x5079))
+(or x5147 (not x4903))
+(or x5147 (not x5080))
+(or x5147 (not x5081))
+(or x5147 (not x5082))
+(or x5147 (not x5083))
+(or x5147 (not x5084))
+(or x5074 x5075 x5076 x5077 x5078 x5079 x4903 x5080 x5081 x5082 x5083 x5084 (not x5147))
+(or x4868 (not x5087))
+(or x4868 x5086)
+(or x4868 (not x5085))
+(or x4868 (not x5084))
+(or x5087 (not x5086) x5085 x5084 (not x4868))
+(or (not x4868) (not x4869) (not x4833) x5148)
+(or (not x5148) x4868)
+(or (not x5148) x4869)
+(or (not x5148) x4833)
+(or x5087 (not x5086) (not x5085) x5084 x98 x97 x5082)
+(or (not x5082) (not x5087))
+(or (not x5082) x5086)
+(or (not x5082) x5085)
+(or (not x5082) (not x5084))
+(or (not x5082) (not x98))
+(or (not x5082) (not x97))
+(or x5087 x5086 x5085 (not x5084) x98 x97 x5081)
+(or (not x5081) (not x5087))
+(or (not x5081) (not x5086))
+(or (not x5081) (not x5085))
+(or (not x5081) x5084)
+(or (not x5081) (not x98))
+(or (not x5081) (not x97))
+(or x5098 (not x5074))
+(or x5098 (not x5075))
+(or x5098 (not x5076))
+(or x5098 (not x5077))
+(or x5098 (not x5078))
+(or x5098 (not x5079))
+(or x5098 (not x4903))
+(or x5098 (not x5080))
+(or x5098 (not x5081))
+(or x5098 (not x5082))
+(or x5098 (not x5148))
+(or x5098 x97)
+(or x5074 x5075 x5076 x5077 x5078 x5079 x4903 x5080 x5081 x5082 x5148 (not x97) (not x5098))
+(or x5149 x5128)
+(or x5149 x5150)
+(or (not x5128) (not x5150) (not x5149))
+(or (not x5149) (not x5128) x5151)
+(or (not x5151) x5149)
+(or (not x5151) x5128)
+(or x5087 x5086 x5085 (not x5084) x98 (not x97) x5080)
+(or (not x5080) (not x5087))
+(or (not x5080) (not x5086))
+(or (not x5080) (not x5085))
+(or (not x5080) x5084)
+(or (not x5080) (not x98))
+(or (not x5080) x97)
+(or x5096 (not x5074))
+(or x5096 (not x5075))
+(or x5096 (not x5076))
+(or x5096 (not x5077))
+(or x5096 (not x5078))
+(or x5096 (not x5079))
+(or x5096 (not x4903))
+(or x5096 (not x5080))
+(or x5096 (not x5087))
+(or x5096 (not x5086))
+(or x5096 (not x5085))
+(or x5096 x5084)
+(or x5096 (not x98))
+(or x5096 (not x97))
+(or x5074 x5075 x5076 x5077 x5078 x5079 x4903 x5080 x5087 x5086 x5085 (not x5084) x98 x97 (not x5096))
+(or x5152 (not x5074))
+(or x5152 (not x5075))
+(or x5152 (not x5076))
+(or x5152 (not x5077))
+(or x5152 (not x5078))
+(or x5152 (not x5079))
+(or x5152 (not x4903))
+(or x5152 (not x5080))
+(or x5152 (not x5087))
+(or x5152 (not x5086))
+(or x5152 (not x5085))
+(or x5152 x5084)
+(or x5152 (not x98))
+(or x5152 (not x97))
+(or x5152 x5102)
+(or x5152 x5103)
+(or x5152 (not x5151))
+(or x5074 x5075 x5076 x5077 x5078 x5079 x4903 x5080 x5087 x5086 x5085 (not x5084) x98 x97 (not x5102) (not x5103) x5151 (not x5152))
+(or x5095 (not x5074))
+(or x5095 (not x5075))
+(or x5095 (not x5076))
+(or x5095 (not x5077))
+(or x5095 (not x5078))
+(or x5095 (not x5079))
+(or x5095 (not x4903))
+(or x5095 (not x5087))
+(or x5095 (not x5086))
+(or x5095 (not x5085))
+(or x5095 x5084)
+(or x5095 (not x98))
+(or x5095 x97)
+(or x5074 x5075 x5076 x5077 x5078 x5079 x4903 x5087 x5086 x5085 (not x5084) x98 (not x97) (not x5095))
+(or x5153 x5108)
+(or x5153 (not x5109))
+(or (not x5108) x5109 (not x5153))
+(or (not x5153) (not x5108) x5154)
+(or (not x5154) x5153)
+(or (not x5154) x5108)
+(or x5094 (not x5074))
+(or x5094 (not x5075))
+(or x5094 (not x5076))
+(or x5094 (not x5077))
+(or x5094 (not x5078))
+(or x5094 (not x5079))
+(or x5094 (not x5087))
+(or x5094 (not x5086))
+(or x5094 x5085)
+(or x5094 x5084)
+(or x5074 x5075 x5076 x5077 x5078 x5079 x5087 x5086 (not x5085) (not x5084) (not x5094))
+(or x5155 (not x5074))
+(or x5155 (not x5075))
+(or x5155 (not x5076))
+(or x5155 (not x5077))
+(or x5155 (not x5078))
+(or x5155 (not x5079))
+(or x5155 (not x5087))
+(or x5155 (not x5086))
+(or x5155 x5085)
+(or x5155 x5084)
+(or x5155 x5107)
+(or x5155 (not x5154))
+(or x5074 x5075 x5076 x5077 x5078 x5079 x5087 x5086 (not x5085) (not x5084) (not x5107) x5154 (not x5155))
+(or x5087 x5086 (not x5085) x5084 (not x5156) x5078)
+(or (not x5078) (not x5087))
+(or (not x5078) (not x5086))
+(or (not x5078) x5085)
+(or (not x5078) (not x5084))
+(or (not x5078) x5156)
+(or x5093 (not x5074))
+(or x5093 (not x5075))
+(or x5093 (not x5076))
+(or x5093 (not x5077))
+(or x5093 (not x5078))
+(or x5093 (not x5087))
+(or x5093 (not x5086))
+(or x5093 x5085)
+(or x5093 (not x5084))
+(or x5074 x5075 x5076 x5077 x5078 x5087 x5086 (not x5085) x5084 (not x5093))
+(or x5157 x5112)
+(or x5157 x5113)
+(or x5157 x5138)
+(or x5157 x5158)
+(or (not x5112) (not x5113) (not x5138) (not x5158) (not x5157))
+(or (not x5157) (not x5112) x5159)
+(or (not x5159) x5157)
+(or (not x5159) x5112)
+(or x5087 x5086 (not x5085) x5084 (not x97) (not x98) x5077)
+(or (not x5077) (not x5087))
+(or (not x5077) (not x5086))
+(or (not x5077) x5085)
+(or (not x5077) (not x5084))
+(or (not x5077) x97)
+(or (not x5077) x98)
+(or x5092 (not x5074))
+(or x5092 (not x5075))
+(or x5092 (not x5076))
+(or x5092 (not x5077))
+(or x5092 (not x5087))
+(or x5092 (not x5086))
+(or x5092 x5085)
+(or x5092 (not x5084))
+(or x5092 (not x5111))
+(or x5074 x5075 x5076 x5077 x5087 x5086 (not x5085) x5084 x5111 (not x5092))
+(or x5160 (not x5074))
+(or x5160 (not x5075))
+(or x5160 (not x5076))
+(or x5160 (not x5077))
+(or x5160 (not x5087))
+(or x5160 (not x5086))
+(or x5160 x5085)
+(or x5160 (not x5084))
+(or x5160 (not x5111))
+(or x5160 (not x5159))
+(or x5074 x5075 x5076 x5077 x5087 x5086 (not x5085) x5084 x5111 x5159 (not x5160))
+(or x5091 (not x5074))
+(or x5091 (not x5075))
+(or x5091 (not x5076))
+(or x5091 (not x5087))
+(or x5091 (not x5086))
+(or x5091 x5085)
+(or x5091 (not x5084))
+(or x5091 x97)
+(or x5091 x98)
+(or x5074 x5075 x5076 x5087 x5086 (not x5085) x5084 (not x97) (not x98) (not x5091))
+(or x5087 x5086 x5085 x5084 x97 (not x4680) (not x4679) (not x5156) (not x5059) (not x5060) x5075)
+(or (not x5075) (not x5087))
+(or (not x5075) (not x5086))
+(or (not x5075) (not x5085))
+(or (not x5075) (not x5084))
+(or (not x5075) (not x97))
+(or (not x5075) x4680)
+(or (not x5075) x4679)
+(or (not x5075) x5156)
+(or (not x5075) x5059)
+(or (not x5075) x5060)
+(or x5090 (not x5074))
+(or x5090 (not x5075))
+(or x5090 (not x5087))
+(or x5090 (not x5086))
+(or x5090 (not x5085))
+(or x5090 (not x5084))
+(or x5090 (not x97))
+(or x5090 x4680)
+(or x5090 x4679)
+(or x5074 x5075 x5087 x5086 x5085 x5084 x97 (not x4680) (not x4679) (not x5090))
+(or (not x4850) (not x4892) x5011)
+(or (not x5011) x4850)
+(or (not x5011) x4892)
+(or (not x4787) (not x4788) (not x4897) x5010)
+(or (not x5010) x4787)
+(or (not x5010) x4788)
+(or (not x5010) x4897)
+(or x5062 (not x5010))
+(or x5062 (not x5011))
+(or x5010 x5011 (not x5062))
+(or (not x4954) (not x4953) x4952)
+(or (not x4952) x4954)
+(or (not x4952) x4953)
+(or (not x4954) x4953 x4951)
+(or (not x4951) x4954)
+(or (not x4951) (not x4953))
+(or x4954 (not x4953) x4950)
+(or (not x4950) (not x4954))
+(or (not x4950) x4953)
+(or (not x96) x97 x4664)
+(or (not x4664) x96)
+(or (not x4664) (not x97))
+(or x4954 x4953 (not x96) x97 x5161)
+(or (not x5161) (not x4954))
+(or (not x5161) (not x4953))
+(or (not x5161) x96)
+(or (not x5161) (not x97))
+(or x5156 (not x5161))
+(or x5156 (not x4950))
+(or x5156 (not x4951))
+(or x5156 (not x4952))
+(or x5161 x4950 x4951 x4952 (not x5156))
+(or x5087 x5086 x5085 x5084 x97 (not x4680) (not x4679) x5076)
+(or (not x5076) (not x5087))
+(or (not x5076) (not x5086))
+(or (not x5076) (not x5085))
+(or (not x5076) (not x5084))
+(or (not x5076) (not x97))
+(or (not x5076) x4680)
+(or (not x5076) x4679)
+(or x5087 x5086 x5085 x5084 x97 (not x4680) (not x4679) (not x5156) (not x5062) x5074)
+(or (not x5074) (not x5087))
+(or (not x5074) (not x5086))
+(or (not x5074) (not x5085))
+(or (not x5074) (not x5084))
+(or (not x5074) (not x97))
+(or (not x5074) x4680)
+(or (not x5074) x4679)
+(or (not x5074) x5156)
+(or (not x5074) x5062)
+(or x5089 (not x5074))
+(or x5089 (not x5087))
+(or x5089 (not x5086))
+(or x5089 (not x5085))
+(or x5089 (not x5084))
+(or x5089 (not x97))
+(or x5089 x4680)
+(or x5089 x4679)
+(or x5089 (not x5111))
+(or x5089 (not x5010))
+(or x5089 (not x5011))
+(or x5074 x5087 x5086 x5085 x5084 x97 (not x4680) (not x4679) x5111 x5010 x5011 (not x5089))
+(or x5162 (not x5074))
+(or x5162 (not x5087))
+(or x5162 (not x5086))
+(or x5162 (not x5085))
+(or x5162 (not x5084))
+(or x5162 (not x97))
+(or x5162 x4680)
+(or x5162 x4679)
+(or x5162 (not x5111))
+(or x5162 (not x5010))
+(or x5162 (not x5011))
+(or x5162 x5115)
+(or x5162 x5163)
+(or x5074 x5087 x5086 x5085 x5084 x97 (not x4680) (not x4679) x5111 x5010 x5011 (not x5115) (not x5163) (not x5162))
+(or x5164 x5118)
+(or x5164 x5119)
+(or (not x5118) (not x5119) (not x5164))
+(or (not x5164) (not x5118) x5165)
+(or (not x5165) x5164)
+(or (not x5165) x5118)
+(or x4800 (not x4786))
+(or x4800 (not x4730))
+(or x4786 x4730 (not x4800))
+(or x4788 (not x4829))
+(or x4788 x4810)
+(or x4788 (not x4811))
+(or x4788 (not x4812))
+(or x4788 (not x4813))
+(or x4788 (not x4815))
+(or x4788 (not x4762))
+(or x4788 (not x4816))
+(or x4788 (not x4817))
+(or x4788 (not x4723))
+(or x4788 (not x4818))
+(or x4788 (not x4786))
+(or x4788 (not x4730))
+(or x4829 (not x4810) x4811 x4812 x4813 x4815 x4762 x4816 x4817 x4723 x4818 x4786 x4730 (not x4788))
+(or x4913 (not x4810))
+(or x4913 (not x4811))
+(or x4810 x4811 (not x4913))
+(or x4911 (not x4810))
+(or x4911 (not x4811))
+(or x4911 (not x4812))
+(or x4911 (not x4813))
+(or x4810 x4811 x4812 x4813 (not x4911))
+(or x4923 (not x4816))
+(or x4923 (not x4817))
+(or x4816 x4817 (not x4923))
+(or x4919 (not x4786))
+(or x4919 (not x4816))
+(or x4919 (not x4817))
+(or x4786 x4816 x4817 (not x4919))
+(or x4924 (not x4730))
+(or x4924 (not x4786))
+(or x4924 (not x4816))
+(or x4924 (not x4817))
+(or x4730 x4786 x4816 x4817 (not x4924))
+(or x4918 (not x4815))
+(or x4918 (not x4730))
+(or x4918 (not x4786))
+(or x4918 (not x4816))
+(or x4918 (not x4817))
+(or x4815 x4730 x4786 x4816 x4817 (not x4918))
+(or x4787 (not x4815))
+(or x4787 (not x4730))
+(or x4787 (not x4786))
+(or x4787 (not x4816))
+(or x4787 (not x4817))
+(or x4787 (not x4829))
+(or x4787 (not x4723))
+(or x4787 x4818)
+(or x4787 (not x4762))
+(or x4787 (not x4810))
+(or x4787 (not x4811))
+(or x4787 (not x4812))
+(or x4787 (not x4813))
+(or x4815 x4730 x4786 x4816 x4817 x4829 x4723 (not x4818) x4762 x4810 x4811 x4812 x4813 (not x4787))
+(or (not x4787) (not x4788) x5166)
+(or (not x5166) x4787)
+(or (not x5166) x4788)
+(or x5060 (not x5166))
+(or x5060 x4892)
+(or x5166 (not x4892) (not x5060))
+(or x4786 x4730 x4795)
+(or (not x4795) (not x4786))
+(or (not x4795) (not x4730))
+(or x4829 (not x4810) x4811 x4812 x4813 x4815 x4762 x4816 x4817 x4723 x4818 x4786 x4730 x4779)
+(or (not x4779) (not x4829))
+(or (not x4779) x4810)
+(or (not x4779) (not x4811))
+(or (not x4779) (not x4812))
+(or (not x4779) (not x4813))
+(or (not x4779) (not x4815))
+(or (not x4779) (not x4762))
+(or (not x4779) (not x4816))
+(or (not x4779) (not x4817))
+(or (not x4779) (not x4723))
+(or (not x4779) (not x4818))
+(or (not x4779) (not x4786))
+(or (not x4779) (not x4730))
+(or x4810 x4811 x4855)
+(or (not x4855) (not x4810))
+(or (not x4855) (not x4811))
+(or x4810 x4811 x4812 x4813 x4852)
+(or (not x4852) (not x4810))
+(or (not x4852) (not x4811))
+(or (not x4852) (not x4812))
+(or (not x4852) (not x4813))
+(or x4816 x4817 x4866)
+(or (not x4866) (not x4816))
+(or (not x4866) (not x4817))
+(or x4786 x4816 x4817 x4860)
+(or (not x4860) (not x4786))
+(or (not x4860) (not x4816))
+(or (not x4860) (not x4817))
+(or x4730 x4786 x4816 x4817 x4867)
+(or (not x4867) (not x4730))
+(or (not x4867) (not x4786))
+(or (not x4867) (not x4816))
+(or (not x4867) (not x4817))
+(or x4815 x4730 x4786 x4816 x4817 x4859)
+(or (not x4859) (not x4815))
+(or (not x4859) (not x4730))
+(or (not x4859) (not x4786))
+(or (not x4859) (not x4816))
+(or (not x4859) (not x4817))
+(or x4815 x4730 x4786 x4816 x4817 x4829 x4723 (not x4818) x4762 x4810 x4811 x4812 x4813 x4778)
+(or (not x4778) (not x4815))
+(or (not x4778) (not x4730))
+(or (not x4778) (not x4786))
+(or (not x4778) (not x4816))
+(or (not x4778) (not x4817))
+(or (not x4778) (not x4829))
+(or (not x4778) (not x4723))
+(or (not x4778) x4818)
+(or (not x4778) (not x4762))
+(or (not x4778) (not x4810))
+(or (not x4778) (not x4811))
+(or (not x4778) (not x4812))
+(or (not x4778) (not x4813))
+(or x4850 (not x4778))
+(or x4850 (not x4779))
+(or x4778 x4779 (not x4850))
+(or x5059 (not x4778))
+(or x5059 (not x4779))
+(or x5059 x4897)
+(or x4778 x4779 (not x4897) (not x5059))
+(or (not x5059) (not x5060) x5022)
+(or (not x5022) x5059)
+(or (not x5022) x5060)
+(or x5167 x4954)
+(or x5167 x4953)
+(or (not x4954) (not x4953) (not x5167))
+(or x5168 x4954)
+(or x5168 (not x4953))
+(or (not x4954) x4953 (not x5168))
+(or x5169 (not x4954))
+(or x5169 x4953)
+(or x4954 (not x4953) (not x5169))
+(or x4704 x96)
+(or x4704 (not x97))
+(or (not x96) x97 (not x4704))
+(or x5170 (not x4954))
+(or x5170 (not x4953))
+(or x5170 x96)
+(or x5170 (not x97))
+(or x4954 x4953 (not x96) x97 (not x5170))
+(or (not x5170) (not x5169) (not x5168) (not x5167) x5111)
+(or (not x5111) x5170)
+(or (not x5111) x5169)
+(or (not x5111) x5168)
+(or (not x5111) x5167)
+(or x5088 (not x5087))
+(or x5088 (not x5086))
+(or x5088 (not x5085))
+(or x5088 (not x5084))
+(or x5088 (not x97))
+(or x5088 x4680)
+(or x5088 x4679)
+(or x5088 (not x5111))
+(or x5088 (not x5022))
+(or x5087 x5086 x5085 x5084 x97 (not x4680) (not x4679) x5111 x5022 (not x5088))
+(or x5171 (not x5087))
+(or x5171 (not x5086))
+(or x5171 (not x5085))
+(or x5171 (not x5084))
+(or x5171 (not x97))
+(or x5171 x4680)
+(or x5171 x4679)
+(or x5171 (not x5111))
+(or x5171 (not x5022))
+(or x5171 x5122)
+(or x5171 x5117)
+(or x5171 (not x5165))
+(or x5087 x5086 x5085 x5084 x97 (not x4680) (not x4679) x5111 x5022 (not x5122) (not x5117) x5165 (not x5171))
+(or (not x5171) (not x5162) (not x5090) (not x5091) (not x5160) (not x5093) (not x5155) (not x5095) (not x5152) (not x5098) (not x5147) x5172)
+(or (not x5172) x5171)
+(or (not x5172) x5162)
+(or (not x5172) x5090)
+(or (not x5172) x5091)
+(or (not x5172) x5160)
+(or (not x5172) x5093)
+(or (not x5172) x5155)
+(or (not x5172) x5095)
+(or (not x5172) x5152)
+(or (not x5172) x5098)
+(or (not x5172) x5147)
+(or x5173 (not x5174))
+(or x5173 (not x4744))
+(or x5173 (not x5175))
+(or x5173 (not x4750))
+(or x5174 x4744 x5175 x4750 (not x5173))
+(or x5176 (not x5174))
+(or x5176 (not x4744))
+(or x5176 x4750)
+(or x5176 (not x4749))
+(or x5176 (not x4748))
+(or x5176 x4747)
+(or x5176 x4723)
+(or x5176 x5177)
+(or x5174 x4744 (not x4750) x4749 x4748 (not x4747) (not x4723) (not x5177) (not x5176))
+(or x5178 (not x4750))
+(or x5178 x4749)
+(or x5178 x4748)
+(or x5178 x4747)
+(or x5178 x4680)
+(or x5178 x4679)
+(or x5178 x5179)
+(or x5178 x5180)
+(or x4750 (not x4749) (not x4748) (not x4747) (not x4680) (not x4679) (not x5179) (not x5180) (not x5178))
+(or (not x5178) (not x5176) (not x5173) x5181)
+(or (not x5181) x5178)
+(or (not x5181) x5176)
+(or (not x5181) x5173)
+(or x5182 (not x5174))
+(or x5182 (not x4744))
+(or x5182 (not x5175))
+(or x5182 (not x4749))
+(or x5174 x4744 x5175 x4749 (not x5182))
+(or (not x5183) (not x5184) (not x5185) (not x5182) x5186)
+(or (not x5186) x5183)
+(or (not x5186) x5184)
+(or (not x5186) x5185)
+(or (not x5186) x5182)
+(or x5187 (not x5174))
+(or x5187 (not x4744))
+(or x5187 (not x5175))
+(or x5187 (not x4748))
+(or x5174 x4744 x5175 x4748 (not x5187))
+(or x4760 x4750)
+(or x4760 (not x4749))
+(or x4760 (not x4748))
+(or x4760 (not x4747))
+(or (not x4750) x4749 x4748 x4747 (not x4760))
+(or x5184 (not x5174))
+(or x5184 x4750)
+(or x5184 (not x4749))
+(or x5184 (not x4748))
+(or x5184 (not x4747))
+(or x5174 (not x4750) x4749 x4748 x4747 (not x5184))
+(or (not x5183) (not x5184) (not x5185) (not x5187) x5188)
+(or (not x5188) x5183)
+(or (not x5188) x5184)
+(or (not x5188) x5185)
+(or (not x5188) x5187)
+(or (not x4750) x4749 x4748 (not x4747) (not x4723) x5175)
+(or (not x5175) x4750)
+(or (not x5175) (not x4749))
+(or (not x5175) (not x4748))
+(or (not x5175) x4747)
+(or (not x5175) x4723)
+(or x5189 (not x5174))
+(or x5189 (not x4744))
+(or x5189 (not x5175))
+(or x5189 (not x4747))
+(or x5174 x4744 x5175 x4747 (not x5189))
+(or x4750 (not x4749) (not x4748) (not x4747) (not x4680) (not x4679) (not x5179) x5174)
+(or (not x5174) (not x4750))
+(or (not x5174) x4749)
+(or (not x5174) x4748)
+(or (not x5174) x4747)
+(or (not x5174) x4680)
+(or (not x5174) x4679)
+(or (not x5174) x5179)
+(or x5185 (not x5174))
+(or x5185 (not x4744))
+(or x5185 x4750)
+(or x5185 (not x4749))
+(or x5185 (not x4748))
+(or x5185 x4747)
+(or x5185 x4723)
+(or x5185 (not x5177))
+(or x5174 x4744 (not x4750) x4749 x4748 (not x4747) (not x4723) x5177 (not x5185))
+(or x5183 (not x4750))
+(or x5183 x4749)
+(or x5183 x4748)
+(or x5183 x4747)
+(or x5183 x4680)
+(or x5183 x4679)
+(or x5183 x5179)
+(or x5183 (not x5180))
+(or x4750 (not x4749) (not x4748) (not x4747) (not x4680) (not x4679) (not x5179) x5180 (not x5183))
+(or (not x5183) (not x5185) (not x5189) x5190)
+(or (not x5190) x5183)
+(or (not x5190) x5185)
+(or (not x5190) x5189)
+(or (not x5179) (not x5191) (not x4723) x5192)
+(or (not x5192) x5179)
+(or (not x5192) x5191)
+(or (not x5192) x4723)
+(or x5193 x5179)
+(or x5193 (not x5192))
+(or x5193 (not x5179))
+(or (not x5179) x5192 x5179 (not x5193))
+(or x5194 x5179)
+(or x5194 x5179)
+(or x5194 x5191)
+(or x5194 x4723)
+(or x5194 x5195)
+(or (not x5179) (not x5179) (not x5191) (not x4723) (not x5195) (not x5194))
+(or x5196 x5197)
+(or x5196 x5198)
+(or (not x5197) (not x5198) (not x5196))
+(or (not x5196) (not x5197) x5199)
+(or (not x5199) x5196)
+(or (not x5199) x5197)
+(or x5200 (not x5179))
+(or x5200 x5201)
+(or x5200 (not x5199))
+(or x5179 (not x5201) x5199 (not x5200))
+(or (not x5200) (not x5194) (not x5193) x5202)
+(or (not x5202) x5200)
+(or (not x5202) x5194)
+(or (not x5202) x5193)
+(or x4831 (not x4883))
+(or x4831 (not x4884))
+(or x4831 (not x4885))
+(or x4831 (not x4886))
+(or x4831 (not x4887))
+(or x4831 (not x4888))
+(or x4883 x4884 x4885 x4886 x4887 x4888 (not x4831))
+(or x4835 (not x4982))
+(or x4835 x4981)
+(or x4835 x4980)
+(or x4835 (not x4979))
+(or x4982 (not x4981) (not x4980) x4979 (not x4835))
+(or x4871 (not x4982))
+(or x4871 x4981)
+(or x4871 (not x4980))
+(or x4871 x4979)
+(or x4982 (not x4981) x4980 (not x4979) (not x4871))
+(or x4834 (not x4982))
+(or x4834 (not x4981))
+(or x4834 (not x4980))
+(or x4834 x4979)
+(or x4982 x4981 x4980 (not x4979) (not x4834))
+(or x5203 (not x4982))
+(or x5203 (not x4981))
+(or x5203 x4980)
+(or x5203 x4979)
+(or x4982 x4981 (not x4980) (not x4979) (not x5203))
+(or x4833 (not x5087))
+(or x4833 x5086)
+(or x4833 x5085)
+(or x4833 (not x5084))
+(or x5087 (not x5086) (not x5085) x5084 (not x4833))
+(or x4869 (not x5087))
+(or x4869 x5086)
+(or x4869 (not x5085))
+(or x4869 x5084)
+(or x5087 (not x5086) x5085 (not x5084) (not x4869))
+(or x4832 (not x5087))
+(or x4832 (not x5086))
+(or x4832 (not x5085))
+(or x4832 x5084)
+(or x5087 x5086 x5085 (not x5084) (not x4832))
+(or x5204 (not x5087))
+(or x5204 (not x5086))
+(or x5204 x5085)
+(or x5204 x5084)
+(or x5087 x5086 (not x5085) (not x5084) (not x5204))
+(or (not x5204) (not x4832) (not x4869) (not x4833) (not x5203) (not x4834) (not x4871) (not x4835) x5205)
+(or (not x5205) x5204)
+(or (not x5205) x4832)
+(or (not x5205) x4869)
+(or (not x5205) x4833)
+(or (not x5205) x5203)
+(or (not x5205) x4834)
+(or (not x5205) x4871)
+(or (not x5205) x4835)
+(or (not x5204) (not x4832) (not x4869) (not x4833) (not x5203) (not x4834) (not x4871) (not x4835) x4774 x4775 x4963)
+(or (not x4963) x5204)
+(or (not x4963) x4832)
+(or (not x4963) x4869)
+(or (not x4963) x4833)
+(or (not x4963) x5203)
+(or (not x4963) x4834)
+(or (not x4963) x4871)
+(or (not x4963) x4835)
+(or (not x4963) (not x4774))
+(or (not x4963) (not x4775))
+(or x4821 (not x4963))
+(or x4821 (not x4904))
+(or x4821 (not x4884))
+(or x4821 (not x4906))
+(or x4821 (not x4887))
+(or x4963 x4904 x4884 x4906 x4887 (not x4821))
+(or x5206 (not x4963))
+(or x5206 (not x4904))
+(or x5206 (not x4884))
+(or x5206 (not x4906))
+(or x5206 (not x4887))
+(or x5206 (not x4883))
+(or x5206 (not x4884))
+(or x5206 (not x4885))
+(or x5206 (not x4886))
+(or x5206 (not x4887))
+(or x5206 (not x4888))
+(or x5206 x4786)
+(or x4963 x4904 x4884 x4906 x4887 x4883 x4884 x4885 x4886 x4887 x4888 (not x4786) (not x5206))
+(or (not x5206) (not x4962) x5207)
+(or (not x5207) x5206)
+(or (not x5207) x4962)
+(or (not x5208) x4750)
+(or (not x5208) (not x4749))
+(or (not x5208) (not x4748))
+(or (not x5208) x4747)
+(or (not x4750) x4749 x4748 x4747 x4744)
+(or (not x4744) x4750)
+(or (not x4744) (not x4749))
+(or (not x4744) (not x4748))
+(or (not x4744) (not x4747))
+(or (not x5209) (not x4750))
+(or (not x5209) x4749)
+(or (not x5209) x4748)
+(or (not x5209) x4747)
+(or x5210 (not x5209))
+(or x5210 (not x4744))
+(or x5209 x4744 (not x5210))
+(or x4982 (not x4981) (not x4980) x4979 x4887)
+(or (not x4887) (not x4982))
+(or (not x4887) x4981)
+(or (not x4887) x4980)
+(or (not x4887) (not x4979))
+(or x4982 (not x4981) x4980 (not x4979) x4888)
+(or (not x4888) (not x4982))
+(or (not x4888) x4981)
+(or (not x4888) (not x4980))
+(or (not x4888) x4979)
+(or x4982 (not x4981) x4980 x4979 x4886)
+(or (not x4886) (not x4982))
+(or (not x4886) x4981)
+(or (not x4886) (not x4980))
+(or (not x4886) (not x4979))
+(or x4982 x4981 (not x4980) (not x4979) x4905)
+(or (not x4905) (not x4982))
+(or (not x4905) (not x4981))
+(or (not x4905) x4980)
+(or (not x4905) x4979)
+(or x4982 x4981 (not x4980) x4979 x4974)
+(or (not x4974) (not x4982))
+(or (not x4974) (not x4981))
+(or (not x4974) x4980)
+(or (not x4974) (not x4979))
+(or x4982 x4981 x4980 (not x4979) x4906)
+(or (not x4906) (not x4982))
+(or (not x4906) (not x4981))
+(or (not x4906) (not x4980))
+(or (not x4906) x4979)
+(or (not x5211) (not x4982))
+(or (not x5211) (not x4981))
+(or (not x5211) (not x4980))
+(or (not x5211) (not x4979))
+(or x5212 (not x5211))
+(or x5212 (not x4906))
+(or x5212 (not x4974))
+(or x5212 (not x4905))
+(or x5212 (not x4886))
+(or x5212 (not x4888))
+(or x5211 x4906 x4974 x4905 x4886 x4888 (not x5212))
+(or x5087 (not x5086) (not x5085) x5084 x4884)
+(or (not x4884) (not x5087))
+(or (not x4884) x5086)
+(or (not x4884) x5085)
+(or (not x4884) (not x5084))
+(or x5087 (not x5086) x5085 (not x5084) x4885)
+(or (not x4885) (not x5087))
+(or (not x4885) x5086)
+(or (not x4885) (not x5085))
+(or (not x4885) x5084)
+(or x5087 (not x5086) x5085 x5084 x4883)
+(or (not x4883) (not x5087))
+(or (not x4883) x5086)
+(or (not x4883) (not x5085))
+(or (not x4883) (not x5084))
+(or x5087 x5086 (not x5085) (not x5084) x4903)
+(or (not x4903) (not x5087))
+(or (not x4903) (not x5086))
+(or (not x4903) x5085)
+(or (not x4903) x5084)
+(or x5087 x5086 (not x5085) x5084 x5079)
+(or (not x5079) (not x5087))
+(or (not x5079) (not x5086))
+(or (not x5079) x5085)
+(or (not x5079) (not x5084))
+(or x5087 x5086 x5085 (not x5084) x4904)
+(or (not x4904) (not x5087))
+(or (not x4904) (not x5086))
+(or (not x4904) (not x5085))
+(or (not x4904) x5084)
+(or (not x5213) (not x5087))
+(or (not x5213) (not x5086))
+(or (not x5213) (not x5085))
+(or (not x5213) (not x5084))
+(or x5214 (not x5213))
+(or x5214 (not x4904))
+(or x5214 (not x5079))
+(or x5214 (not x4903))
+(or x5214 (not x4883))
+(or x5214 (not x4885))
+(or x5213 x4904 x5079 x4903 x4883 x4885 (not x5214))
+(or x5215 (not x5216))
+(or x5215 (not x5217))
+(or x5215 (not x5218))
+(or x5215 (not x5219))
+(or x5215 (not x5220))
+(or x5215 (not x5221))
+(or x5215 (not x104))
+(or x5215 x103)
+(or x5215 x102)
+(or x5215 x101)
+(or x5215 (not x5222))
+(or x5215 x5223)
+(or x5216 x5217 x5218 x5219 x5220 x5221 x104 (not x103) (not x102) (not x101) x5222 (not x5223) (not x5215))
+(or x5224 (not x5216))
+(or x5224 (not x5217))
+(or x5224 (not x5218))
+(or x5224 (not x5219))
+(or x5224 (not x5220))
+(or x5224 (not x104))
+(or x5224 x103)
+(or x5224 x102)
+(or x5224 (not x101))
+(or x5224 x105)
+(or x5224 (not x106))
+(or x5224 x5225)
+(or x5216 x5217 x5218 x5219 x5220 x104 (not x103) (not x102) x101 (not x105) x106 (not x5225) (not x5224))
+(or x5226 (not x104))
+(or x5226 (not x103))
+(or x5226 (not x102))
+(or x5226 x101)
+(or x5226 (not x5227))
+(or x104 x103 x102 (not x101) x5227 (not x5226))
+(or (not x5226) (not x5228) (not x5229) (not x5230) (not x5231) (not x5224) (not x5215) (not x5232) x5233)
+(or (not x5233) x5226)
+(or (not x5233) x5228)
+(or (not x5233) x5229)
+(or (not x5233) x5230)
+(or (not x5233) x5231)
+(or (not x5233) x5224)
+(or (not x5233) x5215)
+(or (not x5233) x5232)
+(or x5234 (not x5216))
+(or x5234 (not x5217))
+(or x5234 (not x104))
+(or x5234 (not x103))
+(or x5234 x102)
+(or x5234 x101)
+(or x5234 (not x5222))
+(or x5234 x5235)
+(or x5216 x5217 x104 x103 (not x102) (not x101) x5222 (not x5235) (not x5234))
+(or x5236 (not x5216))
+(or x5236 (not x104))
+(or x5236 (not x103))
+(or x5236 x102)
+(or x5236 (not x101))
+(or x5236 x5238)
+(or x5236 x5237)
+(or x5236 (not x5222))
+(or x5236 x5239)
+(or x5216 x104 x103 (not x102) x101 (not x5238) (not x5237) x5222 (not x5239) (not x5236))
+(or x5240 (not x5241) x5227)
+(or (not x5227) (not x5240))
+(or (not x5227) x5241)
+(or x5240 (not x5241) (not x5242) x5243)
+(or (not x5243) (not x5240))
+(or (not x5243) x5241)
+(or (not x5243) x5242)
+(or x5244 (not x104))
+(or x5244 (not x103))
+(or x5244 (not x102))
+(or x5244 x101)
+(or x5244 (not x5243))
+(or x104 x103 x102 (not x101) x5243 (not x5244))
+(or (not x5244) (not x5236) (not x5234) (not x5245) (not x5246) (not x5247) (not x5248) (not x5232) x5249)
+(or (not x5249) x5244)
+(or (not x5249) x5236)
+(or (not x5249) x5234)
+(or (not x5249) x5245)
+(or (not x5249) x5246)
+(or (not x5249) x5247)
+(or (not x5249) x5248)
+(or (not x5249) x5232)
+(or x5250 (not x5216))
+(or x5250 (not x5217))
+(or x5250 (not x5218))
+(or x5250 (not x5219))
+(or x5250 (not x104))
+(or x5250 x103)
+(or x5250 (not x102))
+(or x5250 x101)
+(or x5250 (not x5222))
+(or x5250 x5251)
+(or x5216 x5217 x5218 x5219 x104 (not x103) x102 (not x101) x5222 (not x5251) (not x5250))
+(or x5252 (not x5216))
+(or x5252 (not x5217))
+(or x5252 (not x5218))
+(or x5252 (not x104))
+(or x5252 x103)
+(or x5252 (not x102))
+(or x5252 (not x101))
+(or x5252 x105)
+(or x5252 (not x106))
+(or x5252 x5253)
+(or x5216 x5217 x5218 x104 (not x103) x102 x101 (not x105) x106 (not x5253) (not x5252))
+(or x5242 (not x5240))
+(or x5242 (not x5254))
+(or x5240 x5254 (not x5242))
+(or x5240 (not x5242) x5255)
+(or (not x5255) (not x5240))
+(or (not x5255) x5242)
+(or x5256 (not x104))
+(or x5256 (not x103))
+(or x5256 (not x102))
+(or x5256 x101)
+(or x5256 (not x5255))
+(or x104 x103 x102 (not x101) x5255 (not x5256))
+(or (not x5256) (not x5257) (not x5258) (not x5252) (not x5250) (not x5245) (not x5246) (not x5259) (not x5260) (not x5232) x5261)
+(or (not x5261) x5256)
+(or (not x5261) x5257)
+(or (not x5261) x5258)
+(or (not x5261) x5252)
+(or (not x5261) x5250)
+(or (not x5261) x5245)
+(or (not x5261) x5246)
+(or (not x5261) x5259)
+(or (not x5261) x5260)
+(or (not x5261) x5232)
+(or (not x104) (not x103) x102 x101 (not x5262) x5263)
+(or (not x5263) x104)
+(or (not x5263) x103)
+(or (not x5263) (not x102))
+(or (not x5263) (not x101))
+(or (not x5263) x5262)
+(or x5232 (not x5216))
+(or x5232 (not x5217))
+(or x5232 (not x5218))
+(or x5232 (not x5219))
+(or x5232 (not x5220))
+(or x5232 (not x5221))
+(or x5232 (not x5264))
+(or x5232 (not x5265))
+(or x5232 (not x5266))
+(or x5232 (not x5267))
+(or x5232 (not x5263))
+(or x5216 x5217 x5218 x5219 x5220 x5221 x5264 x5265 x5266 x5267 x5263 (not x5232))
+(or (not x104) x103 (not x102) (not x101) (not x105) x106 x5267)
+(or (not x5267) x104)
+(or (not x5267) (not x103))
+(or (not x5267) x102)
+(or (not x5267) x101)
+(or (not x5267) x105)
+(or (not x5267) (not x106))
+(or x5260 (not x5216))
+(or x5260 (not x5217))
+(or x5260 (not x5218))
+(or x5260 (not x5219))
+(or x5260 (not x5220))
+(or x5260 (not x5221))
+(or x5260 (not x5264))
+(or x5260 (not x5265))
+(or x5260 (not x5266))
+(or x5260 (not x5267))
+(or x5260 x104)
+(or x5260 x103)
+(or x5260 (not x102))
+(or x5260 (not x101))
+(or x5260 (not x5222))
+(or x5216 x5217 x5218 x5219 x5220 x5221 x5264 x5265 x5266 x5267 (not x104) (not x103) x102 x101 x5222 (not x5260))
+(or x5268 (not x5216))
+(or x5268 (not x5217))
+(or x5268 (not x5218))
+(or x5268 (not x5219))
+(or x5268 (not x5220))
+(or x5268 (not x5221))
+(or x5268 (not x5264))
+(or x5268 (not x5265))
+(or x5268 (not x5266))
+(or x5268 (not x5267))
+(or x5268 x104)
+(or x5268 x103)
+(or x5268 (not x102))
+(or x5268 (not x101))
+(or x5268 (not x5222))
+(or x5268 x5269)
+(or x5216 x5217 x5218 x5219 x5220 x5221 x5264 x5265 x5266 x5267 (not x104) (not x103) x102 x101 x5222 (not x5269) (not x5268))
+(or (not x104) x103 (not x102) x101 (not x5262) x5266)
+(or (not x5266) x104)
+(or (not x5266) (not x103))
+(or (not x5266) x102)
+(or (not x5266) (not x101))
+(or (not x5266) x5262)
+(or x5259 (not x5216))
+(or x5259 (not x5217))
+(or x5259 (not x5218))
+(or x5259 (not x5219))
+(or x5259 (not x5220))
+(or x5259 (not x5221))
+(or x5259 (not x5264))
+(or x5259 (not x5265))
+(or x5259 (not x5266))
+(or x5259 x104)
+(or x5259 (not x103))
+(or x5259 x102)
+(or x5259 x101)
+(or x5259 x105)
+(or x5259 (not x106))
+(or x5216 x5217 x5218 x5219 x5220 x5221 x5264 x5265 x5266 (not x104) x103 (not x102) (not x101) (not x105) x106 (not x5259))
+(or x5270 (not x5216))
+(or x5270 (not x5217))
+(or x5270 (not x5218))
+(or x5270 (not x5219))
+(or x5270 (not x5220))
+(or x5270 (not x5221))
+(or x5270 (not x5264))
+(or x5270 (not x5265))
+(or x5270 (not x5266))
+(or x5270 x104)
+(or x5270 (not x103))
+(or x5270 x102)
+(or x5270 x101)
+(or x5270 x105)
+(or x5270 (not x106))
+(or x5270 x5271)
+(or x5216 x5217 x5218 x5219 x5220 x5221 x5264 x5265 x5266 (not x104) x103 (not x102) (not x101) (not x105) x106 (not x5271) (not x5270))
+(or (not x104) x103 x102 (not x101) (not x5238) (not x5237) (not x105) x106 x5265)
+(or (not x5265) x104)
+(or (not x5265) (not x103))
+(or (not x5265) (not x102))
+(or (not x5265) x101)
+(or (not x5265) x5238)
+(or (not x5265) x5237)
+(or (not x5265) x105)
+(or (not x5265) (not x106))
+(or x5248 (not x5216))
+(or x5248 (not x5217))
+(or x5248 (not x5218))
+(or x5248 (not x5219))
+(or x5248 (not x5220))
+(or x5248 (not x5221))
+(or x5248 (not x5264))
+(or x5248 (not x5265))
+(or x5248 x104)
+(or x5248 (not x103))
+(or x5248 x102)
+(or x5248 (not x101))
+(or x5248 (not x5222))
+(or x5216 x5217 x5218 x5219 x5220 x5221 x5264 x5265 (not x104) x103 (not x102) x101 x5222 (not x5248))
+(or x5272 (not x5216))
+(or x5272 (not x5217))
+(or x5272 (not x5218))
+(or x5272 (not x5219))
+(or x5272 (not x5220))
+(or x5272 (not x5221))
+(or x5272 (not x5264))
+(or x5272 (not x5265))
+(or x5272 x104)
+(or x5272 (not x103))
+(or x5272 x102)
+(or x5272 (not x101))
+(or x5272 (not x5222))
+(or x5272 x5273)
+(or x5216 x5217 x5218 x5219 x5220 x5221 x5264 x5265 (not x104) x103 (not x102) x101 x5222 (not x5273) (not x5272))
+(or x104 (not x103) (not x102) (not x101) (not x5262) x5264)
+(or (not x5264) (not x104))
+(or (not x5264) x103)
+(or (not x5264) x102)
+(or (not x5264) x101)
+(or (not x5264) x5262)
+(or x5247 (not x5216))
+(or x5247 (not x5217))
+(or x5247 (not x5218))
+(or x5247 (not x5219))
+(or x5247 (not x5220))
+(or x5247 (not x5221))
+(or x5247 (not x5264))
+(or x5247 x104)
+(or x5247 (not x103))
+(or x5247 (not x102))
+(or x5247 x101)
+(or x5247 x5238)
+(or x5247 x5237)
+(or x5247 x105)
+(or x5247 (not x106))
+(or x5216 x5217 x5218 x5219 x5220 x5221 x5264 (not x104) x103 x102 (not x101) (not x5238) (not x5237) (not x105) x106 (not x5247))
+(or x5274 (not x5216))
+(or x5274 (not x5217))
+(or x5274 (not x5218))
+(or x5274 (not x5219))
+(or x5274 (not x5220))
+(or x5274 (not x5221))
+(or x5274 (not x5264))
+(or x5274 x104)
+(or x5274 (not x103))
+(or x5274 (not x102))
+(or x5274 x101)
+(or x5274 x5238)
+(or x5274 x5237)
+(or x5274 x105)
+(or x5274 (not x106))
+(or x5274 x5275)
+(or x5216 x5217 x5218 x5219 x5220 x5221 x5264 (not x104) x103 x102 (not x101) (not x5238) (not x5237) (not x105) x106 (not x5275) (not x5274))
+(or x104 (not x103) (not x102) x101 (not x105) x106 x5221)
+(or (not x5221) (not x104))
+(or (not x5221) x103)
+(or (not x5221) x102)
+(or (not x5221) (not x101))
+(or (not x5221) x105)
+(or (not x5221) (not x106))
+(or x5246 (not x5216))
+(or x5246 (not x5217))
+(or x5246 (not x5218))
+(or x5246 (not x5219))
+(or x5246 (not x5220))
+(or x5246 (not x5221))
+(or x5246 (not x104))
+(or x5246 x103)
+(or x5246 x102)
+(or x5246 x101)
+(or x5246 (not x5222))
+(or x5246 (not x5223))
+(or x5216 x5217 x5218 x5219 x5220 x5221 x104 (not x103) (not x102) (not x101) x5222 x5223 (not x5246))
+(or x104 (not x103) x102 (not x101) (not x5262) x5220)
+(or (not x5220) (not x104))
+(or (not x5220) x103)
+(or (not x5220) (not x102))
+(or (not x5220) x101)
+(or (not x5220) x5262)
+(or x5245 (not x5216))
+(or x5245 (not x5217))
+(or x5245 (not x5218))
+(or x5245 (not x5219))
+(or x5245 (not x5220))
+(or x5245 (not x104))
+(or x5245 x103)
+(or x5245 x102)
+(or x5245 (not x101))
+(or x5245 x105)
+(or x5245 (not x106))
+(or x5245 (not x5225))
+(or x5216 x5217 x5218 x5219 x5220 x104 (not x103) (not x102) x101 (not x105) x106 x5225 (not x5245))
+(or x104 (not x103) x102 x101 (not x105) x106 x5219)
+(or (not x5219) (not x104))
+(or (not x5219) x103)
+(or (not x5219) (not x102))
+(or (not x5219) (not x101))
+(or (not x5219) x105)
+(or (not x5219) (not x106))
+(or x5231 (not x5216))
+(or x5231 (not x5217))
+(or x5231 (not x5218))
+(or x5231 (not x5219))
+(or x5231 (not x104))
+(or x5231 x103)
+(or x5231 (not x102))
+(or x5231 x101)
+(or x5231 (not x5222))
+(or x5216 x5217 x5218 x5219 x104 (not x103) x102 (not x101) x5222 (not x5231))
+(or x5276 (not x5216))
+(or x5276 (not x5217))
+(or x5276 (not x5218))
+(or x5276 (not x5219))
+(or x5276 (not x104))
+(or x5276 x103)
+(or x5276 (not x102))
+(or x5276 x101)
+(or x5276 (not x5222))
+(or x5276 (not x5251))
+(or x5216 x5217 x5218 x5219 x104 (not x103) x102 (not x101) x5222 x5251 (not x5276))
+(or x104 x103 (not x102) (not x101) (not x5262) x5218)
+(or (not x5218) (not x104))
+(or (not x5218) (not x103))
+(or (not x5218) x102)
+(or (not x5218) x101)
+(or (not x5218) x5262)
+(or x5230 (not x5216))
+(or x5230 (not x5217))
+(or x5230 (not x5218))
+(or x5230 (not x104))
+(or x5230 x103)
+(or x5230 (not x102))
+(or x5230 (not x101))
+(or x5230 x105)
+(or x5230 (not x106))
+(or x5216 x5217 x5218 x104 (not x103) x102 x101 (not x105) x106 (not x5230))
+(or x5277 (not x5216))
+(or x5277 (not x5217))
+(or x5277 (not x5218))
+(or x5277 (not x104))
+(or x5277 x103)
+(or x5277 (not x102))
+(or x5277 (not x101))
+(or x5277 x105)
+(or x5277 (not x106))
+(or x5277 (not x5253))
+(or x5216 x5217 x5218 x104 (not x103) x102 x101 (not x105) x106 x5253 (not x5277))
+(or x104 x103 (not x102) x101 (not x5238) (not x5237) (not x5262) x5217)
+(or (not x5217) (not x104))
+(or (not x5217) (not x103))
+(or (not x5217) x102)
+(or (not x5217) (not x101))
+(or (not x5217) x5238)
+(or (not x5217) x5237)
+(or (not x5217) x5262)
+(or x5229 (not x5216))
+(or x5229 (not x5217))
+(or x5229 (not x104))
+(or x5229 (not x103))
+(or x5229 x102)
+(or x5229 x101)
+(or x5229 (not x5222))
+(or x5216 x5217 x104 x103 (not x102) (not x101) x5222 (not x5229))
+(or x5258 (not x5216))
+(or x5258 (not x5217))
+(or x5258 (not x104))
+(or x5258 (not x103))
+(or x5258 x102)
+(or x5258 x101)
+(or x5258 (not x5222))
+(or x5258 (not x5235))
+(or x5216 x5217 x104 x103 (not x102) (not x101) x5222 x5235 (not x5258))
+(or x104 x103 x102 (not x101) x5216)
+(or (not x5216) (not x104))
+(or (not x5216) (not x103))
+(or (not x5216) (not x102))
+(or (not x5216) x101)
+(or x5228 (not x5216))
+(or x5228 (not x104))
+(or x5228 (not x103))
+(or x5228 x102)
+(or x5228 (not x101))
+(or x5228 x5238)
+(or x5228 x5237)
+(or x5228 (not x5222))
+(or x5216 x104 x103 (not x102) x101 (not x5238) (not x5237) x5222 (not x5228))
+(or x5257 (not x5216))
+(or x5257 (not x104))
+(or x5257 (not x103))
+(or x5257 x102)
+(or x5257 (not x101))
+(or x5257 x5238)
+(or x5257 x5237)
+(or x5257 (not x5222))
+(or x5257 (not x5239))
+(or x5216 x104 x103 (not x102) x101 (not x5238) (not x5237) x5222 x5239 (not x5257))
+(or x5241 (not x5240))
+(or x5241 x5254)
+(or x5240 (not x5254) (not x5241))
+(or x5278 (not x104))
+(or x5278 (not x103))
+(or x5278 (not x102))
+(or x5278 x101)
+(or x5278 (not x5240))
+(or x5278 x5254)
+(or x104 x103 x102 (not x101) x5240 (not x5254) (not x5278))
+(or (not x5278) (not x5257) (not x5258) (not x5277) (not x5276) (not x5245) (not x5246) (not x5274) (not x5272) (not x5270) (not x5268) (not x5232) x5279)
+(or (not x5279) x5278)
+(or (not x5279) x5257)
+(or (not x5279) x5258)
+(or (not x5279) x5277)
+(or (not x5279) x5276)
+(or (not x5279) x5245)
+(or (not x5279) x5246)
+(or (not x5279) x5274)
+(or (not x5279) x5272)
+(or (not x5279) x5270)
+(or (not x5279) x5268)
+(or (not x5279) x5232)
+(or x5280 x5281 (not x5282) x5283)
+(or (not x5283) (not x5280))
+(or (not x5283) (not x5281))
+(or (not x5283) x5282)
+(or (not x5280) x5281 (not x5284) x5285)
+(or (not x5285) x5280)
+(or (not x5285) (not x5281))
+(or (not x5285) x5284)
+(or x5286 (not x5285))
+(or x5286 (not x5283))
+(or x5285 x5283 (not x5286))
+(or (not x5287) (not x5288) x5289 x5290 (not x5291) x5292)
+(or (not x5292) x5287)
+(or (not x5292) x5288)
+(or (not x5292) (not x5289))
+(or (not x5292) (not x5290))
+(or (not x5292) x5291)
+(or x5282 (not x5281))
+(or x5282 (not x5292))
+(or x5281 x5292 (not x5282))
+(or (not x5281) (not x5282) x5293)
+(or (not x5293) x5281)
+(or (not x5293) x5282)
+(or x5281 (not x5280) x5294)
+(or (not x5294) (not x5281))
+(or (not x5294) x5280)
+(or x5284 (not x5295))
+(or x5284 x5288)
+(or x5284 (not x5289))
+(or x5284 (not x5290))
+(or x5284 x5291)
+(or x5295 (not x5288) x5289 x5290 (not x5291) (not x5284))
+(or x5281 (not x5284) x5296)
+(or (not x5296) (not x5281))
+(or (not x5296) x5284)
+(or x5297 (not x5296))
+(or x5297 (not x5294))
+(or x5296 x5294 (not x5297))
+(or (not x5298) (not x5297) x5299)
+(or (not x5299) x5298)
+(or (not x5299) x5297)
+(or x5300 (not x5299))
+(or x5300 (not x5293))
+(or x5299 x5293 (not x5300))
+(or x5301 (not x5281))
+(or x5301 (not x5302))
+(or x5301 (not x5303))
+(or x5281 x5302 x5303 (not x5301))
+(or x5304 (not x5281))
+(or x5304 x5308)
+(or x5304 (not x5307))
+(or x5304 (not x5306))
+(or x5304 (not x5305))
+(or x5281 (not x5308) x5307 x5306 x5305 (not x5304))
+(or x5309 x5310)
+(or x5309 x5311)
+(or (not x5310) (not x5311) (not x5309))
+(or (not x5309) (not x5310) x5312)
+(or (not x5312) x5309)
+(or (not x5312) x5310)
+(or x5313 x5281)
+(or x5313 x5314)
+(or x5313 (not x5312))
+(or (not x5281) (not x5314) x5312 (not x5313))
+(or (not x5313) (not x5304) (not x5301) x5315)
+(or (not x5315) x5313)
+(or (not x5315) x5304)
+(or (not x5315) x5301)
+(or (not x5308) x5307 x5306 x5305 (not x5316) x5317)
+(or (not x5317) x5308)
+(or (not x5317) (not x5307))
+(or (not x5317) (not x5306))
+(or (not x5317) (not x5305))
+(or (not x5317) x5316)
+(or (not x5318) (not x5319) x5320 (not x5321) (not x5322) (not x5323) (not x5324) (not x5325) (not x5326) (not x5327) (not x5328) (not x5329) x5330)
+(or (not x5330) x5318)
+(or (not x5330) x5319)
+(or (not x5330) (not x5320))
+(or (not x5330) x5321)
+(or (not x5330) x5322)
+(or (not x5330) x5323)
+(or (not x5330) x5324)
+(or (not x5330) x5325)
+(or (not x5330) x5326)
+(or (not x5330) x5327)
+(or (not x5330) x5328)
+(or (not x5330) x5329)
+(or x5331 (not x5330))
+(or x5331 (not x5317))
+(or x5330 x5317 (not x5331))
+(or x5332 x5333 x5334)
+(or (not x5334) (not x5332))
+(or (not x5334) (not x5333))
+(or x5335 x5238)
+(or x5335 x5237)
+(or x5335 (not x5336))
+(or x5335 (not x5337))
+(or x5335 (not x5334))
+(or (not x5238) (not x5237) x5336 x5337 x5334 (not x5335))
+(or (not x5338) (not x5335) x5339)
+(or (not x5339) x5338)
+(or (not x5339) x5335)
+(or x5340 (not x5332))
+(or x5340 (not x5341))
+(or x5332 x5341 (not x5340))
+(or (not x5333) (not x5340) x5342)
+(or (not x5342) x5333)
+(or (not x5342) x5340)
+(or x5343 (not x5342))
+(or x5343 (not x5339))
+(or x5342 x5339 (not x5343))
+(or x5344 (not x5238) (not x5237) (not x5345) (not x5346) x5341)
+(or (not x5341) (not x5344))
+(or (not x5341) x5238)
+(or (not x5341) x5237)
+(or (not x5341) x5345)
+(or (not x5341) x5346)
+(or (not x5332) x5344 (not x5238) (not x5237) (not x5345) (not x5346) x5347)
+(or (not x5347) x5332)
+(or (not x5347) (not x5344))
+(or (not x5347) x5238)
+(or (not x5347) x5237)
+(or (not x5347) x5345)
+(or (not x5347) x5346)
+(or x5348 x5238)
+(or x5348 x5237)
+(or x5348 (not x5336))
+(or x5348 (not x5337))
+(or x5348 x5332)
+(or (not x5238) (not x5237) x5336 x5337 (not x5332) (not x5348))
+(or x5338 (not x5344))
+(or x5338 x5238)
+(or x5338 x5237)
+(or x5338 (not x5336))
+(or x5338 (not x5337))
+(or x5344 (not x5238) (not x5237) x5336 x5337 (not x5338))
+(or (not x5338) (not x5348) x5349)
+(or (not x5349) x5338)
+(or (not x5349) x5348)
+(or x5350 (not x5349))
+(or x5350 (not x5347))
+(or x5349 x5347 (not x5350))
+(or x5288 (not x5291) x5351)
+(or (not x5351) (not x5288))
+(or (not x5351) x5291)
+(or x5352 (not x5353))
+(or x5352 x5319)
+(or x5352 x5354)
+(or x5352 (not x5351))
+(or x5353 (not x5319) (not x5354) x5351 (not x5352))
+(or (not x5355) (not x5318) (not x5352) x5356)
+(or (not x5356) x5355)
+(or (not x5356) x5318)
+(or (not x5356) x5352)
+(or x5357 (not x5288))
+(or x5357 x5291)
+(or x5288 (not x5291) (not x5357))
+(or (not x5358) (not x5319) (not x5354) (not x5357) x5359)
+(or (not x5359) x5358)
+(or (not x5359) x5319)
+(or (not x5359) x5354)
+(or (not x5359) x5357)
+(or x5360 (not x5302))
+(or x5360 (not x5359))
+(or x5302 x5359 (not x5360))
+(or (not x5360) (not x5318) x5361)
+(or (not x5361) x5360)
+(or (not x5361) x5318)
+(or x5362 (not x5361))
+(or x5362 (not x5356))
+(or x5361 x5356 (not x5362))
+(or x5363 (not x5364))
+(or x5363 x5344)
+(or x5364 (not x5344) (not x5363))
+(or (not x5288) (not x5238) (not x5237) (not x5365) (not x5290) (not x5366) (not x5367) x5344 x5368 x5369 x5370 x5371 x5372 (not x5288) x5373 x5320 x5374 x5375 x5281 x5376 x5377)
+(or (not x5377) x5288)
+(or (not x5377) x5238)
+(or (not x5377) x5237)
+(or (not x5377) x5365)
+(or (not x5377) x5290)
+(or (not x5377) x5366)
+(or (not x5377) x5367)
+(or (not x5377) (not x5344))
+(or (not x5377) (not x5368))
+(or (not x5377) (not x5369))
+(or (not x5377) (not x5370))
+(or (not x5377) (not x5371))
+(or (not x5377) (not x5372))
+(or (not x5377) x5288)
+(or (not x5377) (not x5373))
+(or (not x5377) (not x5320))
+(or (not x5377) (not x5374))
+(or (not x5377) (not x5375))
+(or (not x5377) (not x5281))
+(or (not x5377) (not x5376))
+(or (not x5378) (not x5379) (not x5238) (not x5237) (not x5344) x5288 x5368 x5369 x5370 x5371 x5373 x5320 x5374 x5375 x5281 x5376 x5380)
+(or (not x5380) x5378)
+(or (not x5380) x5379)
+(or (not x5380) x5238)
+(or (not x5380) x5237)
+(or (not x5380) x5344)
+(or (not x5380) (not x5288))
+(or (not x5380) (not x5368))
+(or (not x5380) (not x5369))
+(or (not x5380) (not x5370))
+(or (not x5380) (not x5371))
+(or (not x5380) (not x5373))
+(or (not x5380) (not x5320))
+(or (not x5380) (not x5374))
+(or (not x5380) (not x5375))
+(or (not x5380) (not x5281))
+(or (not x5380) (not x5376))
+(or x5381 (not x5380))
+(or x5381 (not x5377))
+(or x5380 x5377 (not x5381))
+(or x5368 x5370 x5371 (not x5369) x5373 x5320 x5374 x5375 x5281 x5376 x5344 x5288 x5382)
+(or (not x5382) (not x5368))
+(or (not x5382) (not x5370))
+(or (not x5382) (not x5371))
+(or (not x5382) x5369)
+(or (not x5382) (not x5373))
+(or (not x5382) (not x5320))
+(or (not x5382) (not x5374))
+(or (not x5382) (not x5375))
+(or (not x5382) (not x5281))
+(or (not x5382) (not x5376))
+(or (not x5382) (not x5344))
+(or (not x5382) (not x5288))
+(or (not x5308) x5307 x5306 x5305 (not x5281) x5376 x5373 x5288 x5344 x5374 x5375 (not x5383) (not x5384) x5320 x5368 x5369 x5370 x5371 x5385)
+(or (not x5385) x5308)
+(or (not x5385) (not x5307))
+(or (not x5385) (not x5306))
+(or (not x5385) (not x5305))
+(or (not x5385) x5281)
+(or (not x5385) (not x5376))
+(or (not x5385) (not x5373))
+(or (not x5385) (not x5288))
+(or (not x5385) (not x5344))
+(or (not x5385) (not x5374))
+(or (not x5385) (not x5375))
+(or (not x5385) x5383)
+(or (not x5385) x5384)
+(or (not x5385) (not x5320))
+(or (not x5385) (not x5368))
+(or (not x5385) (not x5369))
+(or (not x5385) (not x5370))
+(or (not x5385) (not x5371))
+(or x5386 (not x5385))
+(or x5386 (not x5382))
+(or x5385 x5382 (not x5386))
+(or (not x5238) (not x5237) (not x5387) (not x5386) x5388)
+(or (not x5388) x5238)
+(or (not x5388) x5237)
+(or (not x5388) x5387)
+(or (not x5388) x5386)
+(or (not x5238) (not x5237) (not x5344) x5288 x5368 x5369 x5370 x5371 x5373 x5320 x5374 x5375 x5281 x5376 (not x5389) (not x5390) (not x5391) (not x5392) (not x5393) (not x5354) x5394)
+(or (not x5394) x5238)
+(or (not x5394) x5237)
+(or (not x5394) x5344)
+(or (not x5394) (not x5288))
+(or (not x5394) (not x5368))
+(or (not x5394) (not x5369))
+(or (not x5394) (not x5370))
+(or (not x5394) (not x5371))
+(or (not x5394) (not x5373))
+(or (not x5394) (not x5320))
+(or (not x5394) (not x5374))
+(or (not x5394) (not x5375))
+(or (not x5394) (not x5281))
+(or (not x5394) (not x5376))
+(or (not x5394) x5389)
+(or (not x5394) x5390)
+(or (not x5394) x5391)
+(or (not x5394) x5392)
+(or (not x5394) x5393)
+(or (not x5394) x5354)
+(or (not x5387) x5369 x5370 x5371 x5373 x5320 x5374 x5375 x5281 x5376 x5344 x5288 x5395)
+(or (not x5395) x5387)
+(or (not x5395) (not x5369))
+(or (not x5395) (not x5370))
+(or (not x5395) (not x5371))
+(or (not x5395) (not x5373))
+(or (not x5395) (not x5320))
+(or (not x5395) (not x5374))
+(or (not x5395) (not x5375))
+(or (not x5395) (not x5281))
+(or (not x5395) (not x5376))
+(or (not x5395) (not x5344))
+(or (not x5395) (not x5288))
+(or x5396 (not x5397))
+(or x5396 (not x5395))
+(or x5397 x5395 (not x5396))
+(or (not x5238) (not x5237) (not x5368) (not x5396) x5398)
+(or (not x5398) x5238)
+(or (not x5398) x5237)
+(or (not x5398) x5368)
+(or (not x5398) x5396)
+(or x5373 x5374 (not x5375) (not x5238) (not x5237) x5281 x5376 x5344 x5288 x5320 x5368 x5369 x5370 x5371 x5399)
+(or (not x5399) (not x5373))
+(or (not x5399) (not x5374))
+(or (not x5399) x5375)
+(or (not x5399) x5238)
+(or (not x5399) x5237)
+(or (not x5399) (not x5281))
+(or (not x5399) (not x5376))
+(or (not x5399) (not x5344))
+(or (not x5399) (not x5288))
+(or (not x5399) (not x5320))
+(or (not x5399) (not x5368))
+(or (not x5399) (not x5369))
+(or (not x5399) (not x5370))
+(or (not x5399) (not x5371))
+(or x5400 (not x5399))
+(or x5400 (not x5398))
+(or x5399 x5398 (not x5400))
+(or x5401 x5369)
+(or x5401 x5376)
+(or (not x5369) (not x5376) (not x5401))
+(or x5402 (not x5369))
+(or x5402 (not x5387))
+(or x5402 (not x5281))
+(or x5369 x5387 x5281 (not x5402))
+(or x5376 x5369 (not x5403) x5404)
+(or (not x5404) (not x5376))
+(or (not x5404) (not x5369))
+(or (not x5404) x5403)
+(or x5405 x5281)
+(or x5405 (not x5404))
+(or (not x5281) x5404 (not x5405))
+(or x5406 x5387)
+(or x5406 (not x5281))
+(or x5406 (not x5376))
+(or (not x5387) x5281 x5376 (not x5406))
+(or (not x5238) (not x5237) x5320 x5368 x5373 x5288 x5344 x5374 x5375 x5370 x5371 (not x5406) (not x5405) (not x5402) (not x5401) x5407)
+(or (not x5407) x5238)
+(or (not x5407) x5237)
+(or (not x5407) (not x5320))
+(or (not x5407) (not x5368))
+(or (not x5407) (not x5373))
+(or (not x5407) (not x5288))
+(or (not x5407) (not x5344))
+(or (not x5407) (not x5374))
+(or (not x5407) (not x5375))
+(or (not x5407) (not x5370))
+(or (not x5407) (not x5371))
+(or (not x5407) x5406)
+(or (not x5407) x5405)
+(or (not x5407) x5402)
+(or (not x5407) x5401)
+(or (not x5238) (not x5237) (not x5408) x5409)
+(or (not x5409) x5238)
+(or (not x5409) x5237)
+(or (not x5409) x5408)
+(or x5329 (not x5410))
+(or x5329 (not x5411))
+(or x5410 x5411 (not x5329))
+(or x5412 (not x5413))
+(or x5412 x5370)
+(or x5413 (not x5370) (not x5412))
+(or x5414 (not x5281))
+(or x5414 (not x5370))
+(or x5414 (not x5368))
+(or x5414 (not x5369))
+(or x5281 x5370 x5368 x5369 (not x5414))
+(or x5415 x5369)
+(or x5415 x5368)
+(or (not x5369) (not x5368) (not x5415))
+(or x5371 (not x5415) (not x5414) (not x5412) x5416)
+(or (not x5416) (not x5371))
+(or (not x5416) x5415)
+(or (not x5416) x5414)
+(or (not x5416) x5412)
+(or x5328 (not x5376))
+(or x5328 (not x5373))
+(or x5328 (not x5288))
+(or x5328 (not x5344))
+(or x5328 (not x5374))
+(or x5328 (not x5375))
+(or x5328 (not x5416))
+(or x5376 x5373 x5288 x5344 x5374 x5375 x5416 (not x5328))
+(or x5327 x5375)
+(or x5327 x5374)
+(or (not x5375) (not x5374) (not x5327))
+(or x5326 (not x5417))
+(or x5326 x5376)
+(or x5417 (not x5376) (not x5326))
+(or x5325 x5288)
+(or x5325 (not x5418))
+(or (not x5288) x5418 (not x5325))
+(or (not x5308) x5307 x5306 x5305 x5387 x5419)
+(or (not x5419) x5308)
+(or (not x5419) (not x5307))
+(or (not x5419) (not x5306))
+(or (not x5419) (not x5305))
+(or (not x5419) (not x5387))
+(or (not x5308) x5307 x5306 x5305 (not x5387) (not x5303) x5420)
+(or (not x5420) x5308)
+(or (not x5420) (not x5307))
+(or (not x5420) (not x5306))
+(or (not x5420) (not x5305))
+(or (not x5420) x5387)
+(or (not x5420) x5303)
+(or x5403 (not x5420))
+(or x5403 (not x5419))
+(or x5420 x5419 (not x5403))
+(or (not x5308) x5307 x5306 x5305 (not x5387) x5421)
+(or (not x5421) x5308)
+(or (not x5421) (not x5307))
+(or (not x5421) (not x5306))
+(or (not x5421) (not x5305))
+(or (not x5421) x5387)
+(or x5422 (not x5421))
+(or x5422 (not x5420))
+(or x5422 (not x5419))
+(or x5421 x5420 x5419 (not x5422))
+(or x5370 x5368 x5369 x5376 x5373 x5288 x5344 x5374 x5375 (not x5422) x5423)
+(or (not x5423) (not x5370))
+(or (not x5423) (not x5368))
+(or (not x5423) (not x5369))
+(or (not x5423) (not x5376))
+(or (not x5423) (not x5373))
+(or (not x5423) (not x5288))
+(or (not x5423) (not x5344))
+(or (not x5423) (not x5374))
+(or (not x5423) (not x5375))
+(or (not x5423) x5422)
+(or x5324 x5281)
+(or x5324 (not x5423))
+(or (not x5281) x5423 (not x5324))
+(or x5323 (not x5424))
+(or x5323 x5344)
+(or x5424 (not x5344) (not x5323))
+(or x5322 (not x5425))
+(or x5322 x5373)
+(or x5425 (not x5373) (not x5322))
+(or x5321 x5372)
+(or x5321 x5288)
+(or (not x5372) (not x5288) (not x5321))
+(or (not x5354) (not x5238) (not x5237) x5320 (not x5321) (not x5322) (not x5323) (not x5324) (not x5325) (not x5326) (not x5327) (not x5328) (not x5329) (not x5426) (not x5391) (not x5427) (not x5428) (not x5393) (not x5429) (not x5318) x5430)
+(or (not x5430) x5354)
+(or (not x5430) x5238)
+(or (not x5430) x5237)
+(or (not x5430) (not x5320))
+(or (not x5430) x5321)
+(or (not x5430) x5322)
+(or (not x5430) x5323)
+(or (not x5430) x5324)
+(or (not x5430) x5325)
+(or (not x5430) x5326)
+(or (not x5430) x5327)
+(or (not x5430) x5328)
+(or (not x5430) x5329)
+(or (not x5430) x5426)
+(or (not x5430) x5391)
+(or (not x5430) x5427)
+(or (not x5430) x5428)
+(or (not x5430) x5393)
+(or (not x5430) x5429)
+(or (not x5430) x5318)
+(or x5431 x5238)
+(or x5431 x5237)
+(or x5431 (not x5320))
+(or x5431 (not x5432))
+(or x5431 (not x5433))
+(or x5431 (not x5434))
+(or x5431 (not x5435))
+(or x5431 (not x5436))
+(or x5431 (not x5437))
+(or x5431 (not x5438))
+(or x5431 (not x5439))
+(or x5431 (not x5440))
+(or x5431 (not x5441))
+(or x5431 (not x5442))
+(or x5431 (not x5443))
+(or x5431 (not x5444))
+(or x5431 (not x5445))
+(or x5431 (not x5446))
+(or x5431 (not x5302))
+(or (not x5238) (not x5237) x5320 x5432 x5433 x5434 x5435 x5436 x5437 x5438 x5439 x5440 x5441 x5442 x5443 x5444 x5445 x5446 x5302 (not x5431))
+(or x5447 x5238)
+(or x5447 x5237)
+(or x5447 (not x5320))
+(or x5447 (not x5432))
+(or x5447 (not x5433))
+(or x5447 (not x5434))
+(or x5447 (not x5435))
+(or x5447 (not x5436))
+(or x5447 (not x5437))
+(or x5447 (not x5438))
+(or x5447 (not x5439))
+(or x5447 (not x5440))
+(or x5447 (not x5441))
+(or x5447 (not x5442))
+(or x5447 (not x5443))
+(or x5447 (not x5444))
+(or x5447 (not x5445))
+(or x5447 (not x5446))
+(or x5447 x5316)
+(or (not x5238) (not x5237) x5320 x5432 x5433 x5434 x5435 x5436 x5437 x5438 x5439 x5440 x5441 x5442 x5443 x5444 x5445 x5446 (not x5316) (not x5447))
+(or (not x5447) (not x5431) x5448)
+(or (not x5448) x5447)
+(or (not x5448) x5431)
+(or x5449 (not x5448))
+(or x5449 (not x5430))
+(or x5448 x5430 (not x5449))
+(or (not x5318) (not x5450) x5451)
+(or (not x5451) x5318)
+(or (not x5451) x5450)
+(or (not x5308) x5307 x5306 x5305 (not x5452) x5453)
+(or (not x5453) x5308)
+(or (not x5453) (not x5307))
+(or (not x5453) (not x5306))
+(or (not x5453) (not x5305))
+(or (not x5453) x5452)
+(or x5454 (not x5453))
+(or x5454 (not x5451))
+(or x5453 x5451 (not x5454))
+(or (not x5318) (not x5455) x5456)
+(or (not x5456) x5318)
+(or (not x5456) x5455)
+(or x5457 (not x5302))
+(or x5457 (not x5456))
+(or x5302 x5456 (not x5457))
+(or x5374 x5375 (not x5373) (not x5238) (not x5237) x5281 x5376 x5344 x5288 x5320 x5368 x5369 x5370 x5371 x5458)
+(or (not x5458) (not x5374))
+(or (not x5458) (not x5375))
+(or (not x5458) x5373)
+(or (not x5458) x5238)
+(or (not x5458) x5237)
+(or (not x5458) (not x5281))
+(or (not x5458) (not x5376))
+(or (not x5458) (not x5344))
+(or (not x5458) (not x5288))
+(or (not x5458) (not x5320))
+(or (not x5458) (not x5368))
+(or (not x5458) (not x5369))
+(or (not x5458) (not x5370))
+(or (not x5458) (not x5371))
+(or (not x5390) (not x5391) (not x5392) (not x5393) x5459)
+(or (not x5459) x5390)
+(or (not x5459) x5391)
+(or (not x5459) x5392)
+(or (not x5459) x5393)
+(or x5460 (not x5461))
+(or x5460 (not x5462))
+(or x5460 (not x5443))
+(or x5460 (not x5442))
+(or x5460 (not x5463))
+(or x5460 (not x5464))
+(or x5460 (not x5446))
+(or x5460 (not x5445))
+(or x5460 (not x5332))
+(or x5460 (not x5333))
+(or x5461 x5462 x5443 x5442 x5463 x5464 x5446 x5445 x5332 x5333 (not x5460))
+(or (not x5426) (not x5391) (not x5427) (not x5428) (not x5393) (not x5429) x5364)
+(or (not x5364) x5426)
+(or (not x5364) x5391)
+(or (not x5364) x5427)
+(or (not x5364) x5428)
+(or (not x5364) x5393)
+(or (not x5364) x5429)
+(or x5378 (not x5364))
+(or x5378 (not x5462))
+(or x5378 (not x5442))
+(or x5378 (not x5464))
+(or x5378 (not x5445))
+(or x5378 x5354)
+(or x5364 x5462 x5442 x5464 x5445 (not x5354) (not x5378))
+(or (not x5378) (not x5460) (not x5390) (not x5391) (not x5392) (not x5393) x5288 x5368 x5369 x5370 x5371 x5373 x5320 x5374 x5375 x5281 x5376 x5465)
+(or (not x5465) x5378)
+(or (not x5465) x5460)
+(or (not x5465) x5390)
+(or (not x5465) x5391)
+(or (not x5465) x5392)
+(or (not x5465) x5393)
+(or (not x5465) (not x5288))
+(or (not x5465) (not x5368))
+(or (not x5465) (not x5369))
+(or (not x5465) (not x5370))
+(or (not x5465) (not x5371))
+(or (not x5465) (not x5373))
+(or (not x5465) (not x5320))
+(or (not x5465) (not x5374))
+(or (not x5465) (not x5375))
+(or (not x5465) (not x5281))
+(or (not x5465) (not x5376))
+(or x5365 (not x5291))
+(or x5365 (not x5289))
+(or x5365 (not x5290))
+(or x5365 x5319)
+(or x5365 x5355)
+(or x5291 x5289 x5290 (not x5319) (not x5355) (not x5365))
+(or (not x5365) (not x5290) (not x5366) (not x5367) x5344 x5368 x5369 x5370 x5371 x5372 (not x5288) x5373 x5320 x5374 x5375 x5281 x5376 x5397)
+(or (not x5397) x5365)
+(or (not x5397) x5290)
+(or (not x5397) x5366)
+(or (not x5397) x5367)
+(or (not x5397) (not x5344))
+(or (not x5397) (not x5368))
+(or (not x5397) (not x5369))
+(or (not x5397) (not x5370))
+(or (not x5397) (not x5371))
+(or (not x5397) (not x5372))
+(or (not x5397) x5288)
+(or (not x5397) (not x5373))
+(or (not x5397) (not x5320))
+(or (not x5397) (not x5374))
+(or (not x5397) (not x5375))
+(or (not x5397) (not x5281))
+(or (not x5397) (not x5376))
+(or x5466 (not x5397))
+(or x5466 (not x5465))
+(or x5397 x5465 (not x5466))
+(or (not x5238) (not x5237) (not x5344) (not x5466) x5467)
+(or (not x5467) x5238)
+(or (not x5467) x5237)
+(or (not x5467) x5344)
+(or (not x5467) x5466)
+(or x5468 (not x5467))
+(or x5468 (not x5458))
+(or x5467 x5458 (not x5468))
+(or (not x5469) (not x5470) x5440)
+(or (not x5440) x5469)
+(or (not x5440) x5470)
+(or (not x5471) (not x5370) x5472)
+(or (not x5472) x5471)
+(or (not x5472) x5370)
+(or x5281 x5370 x5368 x5369 x5473)
+(or (not x5473) (not x5281))
+(or (not x5473) (not x5370))
+(or (not x5473) (not x5368))
+(or (not x5473) (not x5369))
+(or (not x5369) (not x5368) x5474)
+(or (not x5474) x5369)
+(or (not x5474) x5368)
+(or x5475 (not x5371))
+(or x5475 (not x5474))
+(or x5475 (not x5473))
+(or x5475 (not x5472))
+(or x5371 x5474 x5473 x5472 (not x5475))
+(or x5376 x5373 x5288 x5344 x5374 x5375 x5411)
+(or (not x5411) (not x5376))
+(or (not x5411) (not x5373))
+(or (not x5411) (not x5288))
+(or (not x5411) (not x5344))
+(or (not x5411) (not x5374))
+(or (not x5411) (not x5375))
+(or x5376 x5373 x5288 x5344 x5374 x5375 (not x5475) x5439)
+(or (not x5439) (not x5376))
+(or (not x5439) (not x5373))
+(or (not x5439) (not x5288))
+(or (not x5439) (not x5344))
+(or (not x5439) (not x5374))
+(or (not x5439) (not x5375))
+(or (not x5439) x5475)
+(or (not x5375) (not x5374) x5438)
+(or (not x5438) x5375)
+(or (not x5438) x5374)
+(or (not x5476) (not x5376) x5437)
+(or (not x5437) x5476)
+(or (not x5437) x5376)
+(or (not x5288) (not x5477) x5436)
+(or (not x5436) x5288)
+(or (not x5436) x5477)
+(or x5384 x5308)
+(or x5384 (not x5307))
+(or x5384 (not x5306))
+(or x5384 (not x5305))
+(or x5384 (not x5387))
+(or (not x5308) x5307 x5306 x5305 x5387 (not x5384))
+(or x5383 x5308)
+(or x5383 (not x5307))
+(or x5383 (not x5306))
+(or x5383 (not x5305))
+(or x5383 x5387)
+(or x5383 x5303)
+(or (not x5308) x5307 x5306 x5305 (not x5387) (not x5303) (not x5383))
+(or x5478 x5308)
+(or x5478 (not x5307))
+(or x5478 (not x5306))
+(or x5478 (not x5305))
+(or x5478 x5387)
+(or (not x5308) x5307 x5306 x5305 (not x5387) (not x5478))
+(or (not x5478) (not x5383) (not x5384) x5479)
+(or (not x5479) x5478)
+(or (not x5479) x5383)
+(or (not x5479) x5384)
+(or x5470 (not x5376))
+(or x5470 (not x5373))
+(or x5470 (not x5288))
+(or x5470 (not x5344))
+(or x5470 (not x5374))
+(or x5470 (not x5375))
+(or x5376 x5373 x5288 x5344 x5374 x5375 (not x5470))
+(or x5480 (not x5370))
+(or x5480 (not x5368))
+(or x5480 (not x5369))
+(or x5480 (not x5376))
+(or x5480 (not x5373))
+(or x5480 (not x5288))
+(or x5480 (not x5344))
+(or x5480 (not x5374))
+(or x5480 (not x5375))
+(or x5480 (not x5479))
+(or x5370 x5368 x5369 x5376 x5373 x5288 x5344 x5374 x5375 x5479 (not x5480))
+(or (not x5281) (not x5480) x5435)
+(or (not x5435) x5281)
+(or (not x5435) x5480)
+(or (not x5481) (not x5344) x5434)
+(or (not x5434) x5481)
+(or (not x5434) x5344)
+(or (not x5482) (not x5373) x5433)
+(or (not x5433) x5482)
+(or (not x5433) x5373)
+(or (not x5372) (not x5288) x5432)
+(or (not x5432) x5372)
+(or (not x5432) x5288)
+(or x5483 x5238)
+(or x5483 x5237)
+(or x5483 (not x5320))
+(or x5483 (not x5432))
+(or x5483 (not x5433))
+(or x5483 (not x5434))
+(or x5483 (not x5435))
+(or x5483 (not x5436))
+(or x5483 (not x5437))
+(or x5483 (not x5438))
+(or x5483 (not x5439))
+(or x5483 (not x5440))
+(or (not x5238) (not x5237) x5320 x5432 x5433 x5434 x5435 x5436 x5437 x5438 x5439 x5440 (not x5483))
+(or x5371 (not x5238) (not x5237) x5368 x5369 (not x5370) x5373 x5320 x5374 x5375 x5281 x5376 x5344 x5288 x5484)
+(or (not x5484) (not x5371))
+(or (not x5484) x5238)
+(or (not x5484) x5237)
+(or (not x5484) (not x5368))
+(or (not x5484) (not x5369))
+(or (not x5484) x5370)
+(or (not x5484) (not x5373))
+(or (not x5484) (not x5320))
+(or (not x5484) (not x5374))
+(or (not x5484) (not x5375))
+(or (not x5484) (not x5281))
+(or (not x5484) (not x5376))
+(or (not x5484) (not x5344))
+(or (not x5484) (not x5288))
+(or x5366 (not x5355))
+(or x5366 (not x5291))
+(or x5366 (not x5289))
+(or x5366 (not x5290))
+(or x5366 x5319)
+(or x5355 x5291 x5289 x5290 (not x5319) (not x5366))
+(or x5291 x5289 x5290 (not x5319) (not x5355) x5485)
+(or (not x5485) (not x5291))
+(or (not x5485) (not x5289))
+(or (not x5485) (not x5290))
+(or (not x5485) x5319)
+(or (not x5485) x5355)
+(or x5486 (not x5485))
+(or x5486 x5290)
+(or x5485 (not x5290) (not x5486))
+(or (not x5238) (not x5237) (not x5486) (not x5366) (not x5367) x5344 x5368 x5369 x5370 x5371 x5372 (not x5288) x5373 x5320 x5374 x5375 x5281 x5376 x5487)
+(or (not x5487) x5238)
+(or (not x5487) x5237)
+(or (not x5487) x5486)
+(or (not x5487) x5366)
+(or (not x5487) x5367)
+(or (not x5487) (not x5344))
+(or (not x5487) (not x5368))
+(or (not x5487) (not x5369))
+(or (not x5487) (not x5370))
+(or (not x5487) (not x5371))
+(or (not x5487) (not x5372))
+(or (not x5487) x5288)
+(or (not x5487) (not x5373))
+(or (not x5487) (not x5320))
+(or (not x5487) (not x5374))
+(or (not x5487) (not x5375))
+(or (not x5487) (not x5281))
+(or (not x5487) (not x5376))
+(or x5373 x5375 (not x5374) (not x5238) (not x5237) x5281 x5376 x5344 x5288 x5320 x5368 x5369 x5370 x5371 x5488)
+(or (not x5488) (not x5373))
+(or (not x5488) (not x5375))
+(or (not x5488) x5374)
+(or (not x5488) x5238)
+(or (not x5488) x5237)
+(or (not x5488) (not x5281))
+(or (not x5488) (not x5376))
+(or (not x5488) (not x5344))
+(or (not x5488) (not x5288))
+(or (not x5488) (not x5320))
+(or (not x5488) (not x5368))
+(or (not x5488) (not x5369))
+(or (not x5488) (not x5370))
+(or (not x5488) (not x5371))
+(or x5298 x5280 x5295)
+(or (not x5295) (not x5298))
+(or (not x5295) (not x5280))
+(or x5367 (not x5295))
+(or x5367 (not x5289))
+(or x5367 (not x5290))
+(or x5367 x5291)
+(or x5295 x5289 x5290 (not x5291) (not x5367))
+(or (not x5367) x5355 x5291 x5289 x5290 (not x5319) x5489)
+(or (not x5489) x5367)
+(or (not x5489) (not x5355))
+(or (not x5489) (not x5291))
+(or (not x5489) (not x5289))
+(or (not x5489) (not x5290))
+(or (not x5489) x5319)
+(or x5287 (not x5298))
+(or x5287 (not x5280))
+(or x5298 x5280 (not x5287))
+(or (not x5287) x5289 x5290 (not x5291) x5490)
+(or (not x5490) x5287)
+(or (not x5490) (not x5289))
+(or (not x5490) (not x5290))
+(or (not x5490) x5291)
+(or x5491 (not x5490))
+(or x5491 (not x5489))
+(or x5490 x5489 (not x5491))
+(or (not x5238) (not x5237) x5344 x5368 x5369 x5370 x5371 x5372 (not x5288) x5373 x5320 x5374 x5375 x5281 x5376 (not x5491) x5492)
+(or (not x5492) x5238)
+(or (not x5492) x5237)
+(or (not x5492) (not x5344))
+(or (not x5492) (not x5368))
+(or (not x5492) (not x5369))
+(or (not x5492) (not x5370))
+(or (not x5492) (not x5371))
+(or (not x5492) (not x5372))
+(or (not x5492) x5288)
+(or (not x5492) (not x5373))
+(or (not x5492) (not x5320))
+(or (not x5492) (not x5374))
+(or (not x5492) (not x5375))
+(or (not x5492) (not x5281))
+(or (not x5492) (not x5376))
+(or (not x5492) x5491)
+(or x5493 (not x5494))
+(or x5493 (not x5495))
+(or x5493 (not x5496))
+(or x5493 (not x5497))
+(or x5493 (not x5499))
+(or x5494 x5495 x5496 x5497 x5499 (not x5493))
+(or x5500 (not x5499))
+(or x5500 (not x5498))
+(or x5500 x105)
+(or x5500 (not x106))
+(or x5500 x5238)
+(or x5500 x5237)
+(or x5499 x5498 (not x105) x106 (not x5238) (not x5237) (not x5500))
+(or (not x5500) (not x5501) (not x5493) x5502)
+(or (not x5502) x5500)
+(or (not x5502) x5501)
+(or (not x5502) x5493)
+(or x5503 (not x5494))
+(or x5503 (not x5495))
+(or x5503 (not x5496))
+(or x5503 (not x5497))
+(or x5503 (not x5498))
+(or x5494 x5495 x5496 x5497 x5498 (not x5503))
+(or x5501 (not x5494))
+(or x5501 (not x5495))
+(or x5501 (not x5496))
+(or x5501 x5499)
+(or x5501 x5498)
+(or x5494 x5495 x5496 (not x5499) (not x5498) (not x5501))
+(or x5499 x5498 (not x105) x106 (not x5238) (not x5237) x5494)
+(or (not x5494) (not x5499))
+(or (not x5494) (not x5498))
+(or (not x5494) x105)
+(or (not x5494) (not x106))
+(or (not x5494) x5238)
+(or (not x5494) x5237)
+(or x5504 (not x5494))
+(or x5504 (not x5499))
+(or x5504 x5498)
+(or x5494 x5499 (not x5498) (not x5504))
+(or (not x5504) (not x5501) (not x5503) x5505)
+(or (not x5505) x5504)
+(or (not x5505) x5501)
+(or (not x5505) x5503)
+(or x5506 (not x5507))
+(or x5506 (not x5508))
+(or x5506 (not x5509))
+(or x5506 (not x5510))
+(or x5506 (not x5512))
+(or x5507 x5508 x5509 x5510 x5512 (not x5506))
+(or x5513 (not x5512))
+(or x5513 (not x5511))
+(or x5513 x105)
+(or x5513 (not x106))
+(or x5513 x5238)
+(or x5513 x5237)
+(or x5512 x5511 (not x105) x106 (not x5238) (not x5237) (not x5513))
+(or (not x5513) (not x5514) (not x5506) x5515)
+(or (not x5515) x5513)
+(or (not x5515) x5514)
+(or (not x5515) x5506)
+(or x5516 (not x5507))
+(or x5516 (not x5508))
+(or x5516 (not x5509))
+(or x5516 (not x5510))
+(or x5516 (not x5511))
+(or x5507 x5508 x5509 x5510 x5511 (not x5516))
+(or x5514 (not x5507))
+(or x5514 (not x5508))
+(or x5514 (not x5509))
+(or x5514 x5512)
+(or x5514 x5511)
+(or x5507 x5508 x5509 (not x5512) (not x5511) (not x5514))
+(or x5512 x5511 (not x105) x106 (not x5238) (not x5237) x5507)
+(or (not x5507) (not x5512))
+(or (not x5507) (not x5511))
+(or (not x5507) x105)
+(or (not x5507) (not x106))
+(or (not x5507) x5238)
+(or (not x5507) x5237)
+(or x5517 (not x5507))
+(or x5517 (not x5512))
+(or x5517 x5511)
+(or x5507 x5512 (not x5511) (not x5517))
+(or (not x5517) (not x5514) (not x5516) x5518)
+(or (not x5518) x5517)
+(or (not x5518) x5514)
+(or (not x5518) x5516)
+(or x5519 (not x5354))
+(or x5519 (not x5520))
+(or x5519 (not x5521))
+(or x5519 (not x5462))
+(or x5519 (not x5442))
+(or x5519 (not x5464))
+(or x5519 (not x5445))
+(or x5519 (not x5441))
+(or x5519 (not x5442))
+(or x5519 (not x5443))
+(or x5519 (not x5444))
+(or x5519 (not x5445))
+(or x5519 (not x5446))
+(or x5354 x5520 x5521 x5462 x5442 x5464 x5445 x5441 x5442 x5443 x5444 x5445 x5446 (not x5519))
+(or (not x5345) (not x5346) (not x5519) x5522)
+(or (not x5522) x5345)
+(or (not x5522) x5346)
+(or (not x5522) x5519)
+(or x5523 (not x5238))
+(or x5523 (not x5237))
+(or x5238 x5237 (not x5523))
+(or x5238 x5237 x5524)
+(or (not x5524) (not x5238))
+(or (not x5524) (not x5237))
+(or x5525 (not x5524))
+(or x5525 (not x5238))
+(or x5525 x5237)
+(or x5524 x5238 (not x5237) (not x5525))
+(or x5526 (not x5527))
+(or x5526 (not x5528))
+(or x5526 (not x5529))
+(or x5526 (not x5530))
+(or x5526 (not x5531))
+(or x5526 (not x5532))
+(or x5526 (not x5463))
+(or x5526 (not x5533))
+(or x5526 (not x5534))
+(or x5526 (not x5535))
+(or x5526 (not x5536))
+(or x5526 (not x5540))
+(or x5527 x5528 x5529 x5530 x5531 x5532 x5463 x5533 x5534 x5535 x5536 x5540 (not x5526))
+(or (not x5541) (not x5542) (not x5543) (not x5544) (not x5545) (not x5546) (not x5547) (not x5548) (not x5549) (not x5550) (not x5551) (not x5526) x5552)
+(or (not x5552) x5541)
+(or (not x5552) x5542)
+(or (not x5552) x5543)
+(or (not x5552) x5544)
+(or (not x5552) x5545)
+(or (not x5552) x5546)
+(or (not x5552) x5547)
+(or (not x5552) x5548)
+(or (not x5552) x5549)
+(or (not x5552) x5550)
+(or (not x5552) x5551)
+(or (not x5552) x5526)
+(or x5553 (not x5527))
+(or x5553 (not x5528))
+(or x5553 (not x5529))
+(or x5553 (not x5530))
+(or x5553 (not x5531))
+(or x5553 (not x5532))
+(or x5553 (not x5463))
+(or x5553 (not x5533))
+(or x5553 (not x5534))
+(or x5553 (not x5535))
+(or x5553 (not x5536))
+(or x5553 (not x5539))
+(or x5527 x5528 x5529 x5530 x5531 x5532 x5463 x5533 x5534 x5535 x5536 x5539 (not x5553))
+(or x5554 x5555)
+(or x5554 (not x5556))
+(or (not x5555) x5556 (not x5554))
+(or (not x5554) (not x5555) x5557)
+(or (not x5557) x5554)
+(or (not x5557) x5555)
+(or x5558 (not x5527))
+(or x5558 (not x5528))
+(or x5558 (not x5529))
+(or x5558 (not x5530))
+(or x5558 (not x5531))
+(or x5558 (not x5532))
+(or x5558 (not x5463))
+(or x5558 (not x5533))
+(or x5558 (not x5540))
+(or x5558 (not x5539))
+(or x5558 (not x5538))
+(or x5558 x5537)
+(or x5558 (not x107))
+(or x5558 (not x106))
+(or x5558 (not x5557))
+(or x5527 x5528 x5529 x5530 x5531 x5532 x5463 x5533 x5540 x5539 x5538 (not x5537) x107 x106 x5557 (not x5558))
+(or x5559 (not x5527))
+(or x5559 (not x5528))
+(or x5559 (not x5529))
+(or x5559 (not x5530))
+(or x5559 (not x5531))
+(or x5559 (not x5532))
+(or x5559 (not x5540))
+(or x5559 (not x5539))
+(or x5559 x5538)
+(or x5559 x5537)
+(or x5559 x5560)
+(or x5559 x5561)
+(or x5559 x5562)
+(or x5527 x5528 x5529 x5530 x5531 x5532 x5540 x5539 (not x5538) (not x5537) (not x5560) (not x5561) (not x5562) (not x5559))
+(or x5563 (not x5527))
+(or x5563 (not x5528))
+(or x5563 (not x5529))
+(or x5563 (not x5530))
+(or x5563 (not x5540))
+(or x5563 (not x5539))
+(or x5563 x5538)
+(or x5563 (not x5537))
+(or x5563 (not x5564))
+(or x5563 x5565)
+(or x5563 x5566)
+(or x5527 x5528 x5529 x5530 x5540 x5539 (not x5538) x5537 x5564 (not x5565) (not x5566) (not x5563))
+(or x5567 (not x5527))
+(or x5567 (not x5540))
+(or x5567 (not x5539))
+(or x5567 (not x5538))
+(or x5567 (not x5537))
+(or x5567 (not x106))
+(or x5567 x5238)
+(or x5567 x5237)
+(or x5567 (not x5564))
+(or x5567 (not x5568))
+(or x5567 (not x5569))
+(or x5567 x5570)
+(or x5527 x5540 x5539 x5538 x5537 x106 (not x5238) (not x5237) x5564 x5568 x5569 (not x5570) (not x5567))
+(or x5571 x5572)
+(or x5571 x5573)
+(or x5571 x5574)
+(or (not x5572) (not x5573) (not x5574) (not x5571))
+(or (not x5571) (not x5572) x5575)
+(or (not x5575) x5571)
+(or (not x5575) x5572)
+(or x5576 x5577)
+(or x5576 (not x5575))
+(or (not x5577) x5575 (not x5576))
+(or (not x5576) (not x5577) x5578)
+(or (not x5578) x5576)
+(or (not x5578) x5577)
+(or x5579 (not x5540))
+(or x5579 (not x5539))
+(or x5579 (not x5538))
+(or x5579 (not x5537))
+(or x5579 (not x106))
+(or x5579 x5238)
+(or x5579 x5237)
+(or x5579 (not x5564))
+(or x5579 (not x5580))
+(or x5579 (not x5578))
+(or x5540 x5539 x5538 x5537 x106 (not x5238) (not x5237) x5564 x5580 x5578 (not x5579))
+(or (not x5579) (not x5567) (not x5543) (not x5544) (not x5563) (not x5546) (not x5559) (not x5548) (not x5558) (not x5551) (not x5553) x5581)
+(or (not x5581) x5579)
+(or (not x5581) x5567)
+(or (not x5581) x5543)
+(or (not x5581) x5544)
+(or (not x5581) x5563)
+(or (not x5581) x5546)
+(or (not x5581) x5559)
+(or (not x5581) x5548)
+(or (not x5581) x5558)
+(or (not x5581) x5551)
+(or (not x5581) x5553)
+(or x5582 (not x5527))
+(or x5582 (not x5528))
+(or x5582 (not x5529))
+(or x5582 (not x5530))
+(or x5582 (not x5531))
+(or x5582 (not x5532))
+(or x5582 (not x5463))
+(or x5582 (not x5533))
+(or x5582 (not x5534))
+(or x5582 (not x5535))
+(or x5582 (not x5536))
+(or x5582 (not x5538))
+(or x5527 x5528 x5529 x5530 x5531 x5532 x5463 x5533 x5534 x5535 x5536 x5538 (not x5582))
+(or x5550 (not x5527))
+(or x5550 (not x5528))
+(or x5550 (not x5529))
+(or x5550 (not x5530))
+(or x5550 (not x5531))
+(or x5550 (not x5532))
+(or x5550 (not x5463))
+(or x5550 (not x5533))
+(or x5550 (not x5534))
+(or x5550 (not x5540))
+(or x5550 x5539)
+(or x5550 x5538)
+(or x5550 (not x5537))
+(or x5550 (not x107))
+(or x5550 (not x106))
+(or x5527 x5528 x5529 x5530 x5531 x5532 x5463 x5533 x5534 x5540 (not x5539) (not x5538) x5537 x107 x106 (not x5550))
+(or x5583 x5556)
+(or x5583 x5584)
+(or (not x5556) (not x5584) (not x5583))
+(or (not x5583) (not x5556) x5585)
+(or (not x5585) x5583)
+(or (not x5585) x5556)
+(or x5586 (not x5527))
+(or x5586 (not x5528))
+(or x5586 (not x5529))
+(or x5586 (not x5530))
+(or x5586 (not x5531))
+(or x5586 (not x5532))
+(or x5586 (not x5463))
+(or x5586 (not x5533))
+(or x5586 (not x5540))
+(or x5586 (not x5539))
+(or x5586 (not x5538))
+(or x5586 x5537)
+(or x5586 (not x107))
+(or x5586 (not x106))
+(or x5586 x5555)
+(or x5586 (not x5585))
+(or x5527 x5528 x5529 x5530 x5531 x5532 x5463 x5533 x5540 x5539 x5538 (not x5537) x107 x106 (not x5555) x5585 (not x5586))
+(or x5587 x5562)
+(or x5587 (not x5588))
+(or (not x5562) x5588 (not x5587))
+(or (not x5587) (not x5562) x5589)
+(or (not x5589) x5587)
+(or (not x5589) x5562)
+(or x5590 x5560)
+(or x5590 x5561)
+(or x5590 (not x5589))
+(or (not x5560) (not x5561) x5589 (not x5590))
+(or (not x5590) (not x5560) x5591)
+(or (not x5591) x5590)
+(or (not x5591) x5560)
+(or x5592 (not x5527))
+(or x5592 (not x5528))
+(or x5592 (not x5529))
+(or x5592 (not x5530))
+(or x5592 (not x5531))
+(or x5592 (not x5532))
+(or x5592 (not x5540))
+(or x5592 (not x5539))
+(or x5592 x5538)
+(or x5592 x5537)
+(or x5592 (not x5591))
+(or x5527 x5528 x5529 x5530 x5531 x5532 x5540 x5539 (not x5538) (not x5537) x5591 (not x5592))
+(or x5593 x5566)
+(or x5593 (not x5594))
+(or (not x5566) x5594 (not x5593))
+(or (not x5593) (not x5566) x5595)
+(or (not x5595) x5593)
+(or (not x5595) x5566)
+(or x5596 (not x5527))
+(or x5596 (not x5528))
+(or x5596 (not x5529))
+(or x5596 (not x5530))
+(or x5596 (not x5540))
+(or x5596 (not x5539))
+(or x5596 x5538)
+(or x5596 (not x5537))
+(or x5596 (not x5564))
+(or x5596 x5565)
+(or x5596 (not x5595))
+(or x5527 x5528 x5529 x5530 x5540 x5539 (not x5538) x5537 x5564 (not x5565) x5595 (not x5596))
+(or x5597 (not x5527))
+(or x5597 (not x5540))
+(or x5597 (not x5539))
+(or x5597 (not x5538))
+(or x5597 (not x5537))
+(or x5597 (not x106))
+(or x5597 x5238)
+(or x5597 x5237)
+(or x5597 (not x5564))
+(or x5597 (not x5568))
+(or x5597 (not x5569))
+(or x5597 (not x5570))
+(or x5527 x5540 x5539 x5538 x5537 x106 (not x5238) (not x5237) x5564 x5568 x5569 x5570 (not x5597))
+(or x5598 x5577)
+(or x5598 x5572)
+(or x5598 x5573)
+(or x5598 (not x5574))
+(or (not x5577) (not x5572) (not x5573) x5574 (not x5598))
+(or (not x5598) (not x5577) x5599)
+(or (not x5599) x5598)
+(or (not x5599) x5577)
+(or x5600 (not x5540))
+(or x5600 (not x5539))
+(or x5600 (not x5538))
+(or x5600 (not x5537))
+(or x5600 (not x106))
+(or x5600 x5238)
+(or x5600 x5237)
+(or x5600 (not x5564))
+(or x5600 (not x5580))
+(or x5600 (not x5599))
+(or x5540 x5539 x5538 x5537 x106 (not x5238) (not x5237) x5564 x5580 x5599 (not x5600))
+(or (not x5600) (not x5597) (not x5544) (not x5596) (not x5592) (not x5548) (not x5586) (not x5550) (not x5551) (not x5582) x5601)
+(or (not x5601) x5600)
+(or (not x5601) x5597)
+(or (not x5601) x5544)
+(or (not x5601) x5596)
+(or (not x5601) x5592)
+(or (not x5601) x5548)
+(or (not x5601) x5586)
+(or (not x5601) x5550)
+(or (not x5601) x5551)
+(or (not x5601) x5582)
+(or x5602 (not x5444))
+(or x5602 (not x5446))
+(or x5602 (not x5445))
+(or x5444 x5446 x5445 (not x5602))
+(or (not x5602) (not x106) x5536)
+(or (not x5536) x5602)
+(or (not x5536) x106)
+(or x5603 (not x5527))
+(or x5603 (not x5528))
+(or x5603 (not x5529))
+(or x5603 (not x5530))
+(or x5603 (not x5531))
+(or x5603 (not x5532))
+(or x5603 (not x5463))
+(or x5603 (not x5533))
+(or x5603 (not x5534))
+(or x5603 (not x5535))
+(or x5603 (not x5536))
+(or x5603 (not x5537))
+(or x5527 x5528 x5529 x5530 x5531 x5532 x5463 x5533 x5534 x5535 x5536 x5537 (not x5603))
+(or x5428 (not x5540))
+(or x5428 x5539)
+(or x5428 (not x5538))
+(or x5428 (not x5537))
+(or x5540 (not x5539) x5538 x5537 (not x5428))
+(or (not x5428) (not x5429) (not x5393) x5604)
+(or (not x5604) x5428)
+(or (not x5604) x5429)
+(or (not x5604) x5393)
+(or x5540 (not x5539) (not x5538) x5537 x107 x106 x5535)
+(or (not x5535) (not x5540))
+(or (not x5535) x5539)
+(or (not x5535) x5538)
+(or (not x5535) (not x5537))
+(or (not x5535) (not x107))
+(or (not x5535) (not x106))
+(or x5540 x5539 x5538 (not x5537) x107 x106 x5534)
+(or (not x5534) (not x5540))
+(or (not x5534) (not x5539))
+(or (not x5534) (not x5538))
+(or (not x5534) x5537)
+(or (not x5534) (not x107))
+(or (not x5534) (not x106))
+(or x5551 (not x5527))
+(or x5551 (not x5528))
+(or x5551 (not x5529))
+(or x5551 (not x5530))
+(or x5551 (not x5531))
+(or x5551 (not x5532))
+(or x5551 (not x5463))
+(or x5551 (not x5533))
+(or x5551 (not x5534))
+(or x5551 (not x5535))
+(or x5551 (not x5604))
+(or x5551 x106)
+(or x5527 x5528 x5529 x5530 x5531 x5532 x5463 x5533 x5534 x5535 x5604 (not x106) (not x5551))
+(or x5605 x5584)
+(or x5605 x5606)
+(or (not x5584) (not x5606) (not x5605))
+(or (not x5605) (not x5584) x5607)
+(or (not x5607) x5605)
+(or (not x5607) x5584)
+(or x5540 x5539 x5538 (not x5537) x107 (not x106) x5533)
+(or (not x5533) (not x5540))
+(or (not x5533) (not x5539))
+(or (not x5533) (not x5538))
+(or (not x5533) x5537)
+(or (not x5533) (not x107))
+(or (not x5533) x106)
+(or x5549 (not x5527))
+(or x5549 (not x5528))
+(or x5549 (not x5529))
+(or x5549 (not x5530))
+(or x5549 (not x5531))
+(or x5549 (not x5532))
+(or x5549 (not x5463))
+(or x5549 (not x5533))
+(or x5549 (not x5540))
+(or x5549 (not x5539))
+(or x5549 (not x5538))
+(or x5549 x5537)
+(or x5549 (not x107))
+(or x5549 (not x106))
+(or x5527 x5528 x5529 x5530 x5531 x5532 x5463 x5533 x5540 x5539 x5538 (not x5537) x107 x106 (not x5549))
+(or x5608 (not x5527))
+(or x5608 (not x5528))
+(or x5608 (not x5529))
+(or x5608 (not x5530))
+(or x5608 (not x5531))
+(or x5608 (not x5532))
+(or x5608 (not x5463))
+(or x5608 (not x5533))
+(or x5608 (not x5540))
+(or x5608 (not x5539))
+(or x5608 (not x5538))
+(or x5608 x5537)
+(or x5608 (not x107))
+(or x5608 (not x106))
+(or x5608 x5555)
+(or x5608 x5556)
+(or x5608 (not x5607))
+(or x5527 x5528 x5529 x5530 x5531 x5532 x5463 x5533 x5540 x5539 x5538 (not x5537) x107 x106 (not x5555) (not x5556) x5607 (not x5608))
+(or x5548 (not x5527))
+(or x5548 (not x5528))
+(or x5548 (not x5529))
+(or x5548 (not x5530))
+(or x5548 (not x5531))
+(or x5548 (not x5532))
+(or x5548 (not x5463))
+(or x5548 (not x5540))
+(or x5548 (not x5539))
+(or x5548 (not x5538))
+(or x5548 x5537)
+(or x5548 (not x107))
+(or x5548 x106)
+(or x5527 x5528 x5529 x5530 x5531 x5532 x5463 x5540 x5539 x5538 (not x5537) x107 (not x106) (not x5548))
+(or x5609 x5561)
+(or x5609 (not x5562))
+(or (not x5561) x5562 (not x5609))
+(or (not x5609) (not x5561) x5610)
+(or (not x5610) x5609)
+(or (not x5610) x5561)
+(or x5547 (not x5527))
+(or x5547 (not x5528))
+(or x5547 (not x5529))
+(or x5547 (not x5530))
+(or x5547 (not x5531))
+(or x5547 (not x5532))
+(or x5547 (not x5540))
+(or x5547 (not x5539))
+(or x5547 x5538)
+(or x5547 x5537)
+(or x5527 x5528 x5529 x5530 x5531 x5532 x5540 x5539 (not x5538) (not x5537) (not x5547))
+(or x5611 (not x5527))
+(or x5611 (not x5528))
+(or x5611 (not x5529))
+(or x5611 (not x5530))
+(or x5611 (not x5531))
+(or x5611 (not x5532))
+(or x5611 (not x5540))
+(or x5611 (not x5539))
+(or x5611 x5538)
+(or x5611 x5537)
+(or x5611 x5560)
+(or x5611 (not x5610))
+(or x5527 x5528 x5529 x5530 x5531 x5532 x5540 x5539 (not x5538) (not x5537) (not x5560) x5610 (not x5611))
+(or x5540 x5539 (not x5538) x5537 (not x5612) x5531)
+(or (not x5531) (not x5540))
+(or (not x5531) (not x5539))
+(or (not x5531) x5538)
+(or (not x5531) (not x5537))
+(or (not x5531) x5612)
+(or x5546 (not x5527))
+(or x5546 (not x5528))
+(or x5546 (not x5529))
+(or x5546 (not x5530))
+(or x5546 (not x5531))
+(or x5546 (not x5540))
+(or x5546 (not x5539))
+(or x5546 x5538)
+(or x5546 (not x5537))
+(or x5527 x5528 x5529 x5530 x5531 x5540 x5539 (not x5538) x5537 (not x5546))
+(or x5613 x5565)
+(or x5613 x5566)
+(or x5613 x5594)
+(or x5613 x5614)
+(or (not x5565) (not x5566) (not x5594) (not x5614) (not x5613))
+(or (not x5613) (not x5565) x5615)
+(or (not x5615) x5613)
+(or (not x5615) x5565)
+(or x5540 x5539 (not x5538) x5537 (not x106) (not x107) x5530)
+(or (not x5530) (not x5540))
+(or (not x5530) (not x5539))
+(or (not x5530) x5538)
+(or (not x5530) (not x5537))
+(or (not x5530) x106)
+(or (not x5530) x107)
+(or x5545 (not x5527))
+(or x5545 (not x5528))
+(or x5545 (not x5529))
+(or x5545 (not x5530))
+(or x5545 (not x5540))
+(or x5545 (not x5539))
+(or x5545 x5538)
+(or x5545 (not x5537))
+(or x5545 (not x5564))
+(or x5527 x5528 x5529 x5530 x5540 x5539 (not x5538) x5537 x5564 (not x5545))
+(or x5616 (not x5527))
+(or x5616 (not x5528))
+(or x5616 (not x5529))
+(or x5616 (not x5530))
+(or x5616 (not x5540))
+(or x5616 (not x5539))
+(or x5616 x5538)
+(or x5616 (not x5537))
+(or x5616 (not x5564))
+(or x5616 (not x5615))
+(or x5527 x5528 x5529 x5530 x5540 x5539 (not x5538) x5537 x5564 x5615 (not x5616))
+(or x5544 (not x5527))
+(or x5544 (not x5528))
+(or x5544 (not x5529))
+(or x5544 (not x5540))
+(or x5544 (not x5539))
+(or x5544 x5538)
+(or x5544 (not x5537))
+(or x5544 x106)
+(or x5544 x107)
+(or x5527 x5528 x5529 x5540 x5539 (not x5538) x5537 (not x106) (not x107) (not x5544))
+(or x5540 x5539 x5538 x5537 x106 (not x5238) (not x5237) (not x5612) (not x5617) (not x5618) x5528)
+(or (not x5528) (not x5540))
+(or (not x5528) (not x5539))
+(or (not x5528) (not x5538))
+(or (not x5528) (not x5537))
+(or (not x5528) (not x106))
+(or (not x5528) x5238)
+(or (not x5528) x5237)
+(or (not x5528) x5612)
+(or (not x5528) x5617)
+(or (not x5528) x5618)
+(or x5543 (not x5527))
+(or x5543 (not x5528))
+(or x5543 (not x5540))
+(or x5543 (not x5539))
+(or x5543 (not x5538))
+(or x5543 (not x5537))
+(or x5543 (not x106))
+(or x5543 x5238)
+(or x5543 x5237)
+(or x5527 x5528 x5540 x5539 x5538 x5537 x106 (not x5238) (not x5237) (not x5543))
+(or (not x5499) (not x5498) x5497)
+(or (not x5497) x5499)
+(or (not x5497) x5498)
+(or (not x5499) x5498 x5496)
+(or (not x5496) x5499)
+(or (not x5496) (not x5498))
+(or x5499 (not x5498) x5495)
+(or (not x5495) (not x5499))
+(or (not x5495) x5498)
+(or x5499 x5498 (not x105) x106 x5619)
+(or (not x5619) (not x5499))
+(or (not x5619) (not x5498))
+(or (not x5619) x105)
+(or (not x5619) (not x106))
+(or x5612 (not x5619))
+(or x5612 (not x5495))
+(or x5612 (not x5496))
+(or x5612 (not x5497))
+(or x5619 x5495 x5496 x5497 (not x5612))
+(or x5540 x5539 x5538 x5537 x106 (not x5238) (not x5237) x5529)
+(or (not x5529) (not x5540))
+(or (not x5529) (not x5539))
+(or (not x5529) (not x5538))
+(or (not x5529) (not x5537))
+(or (not x5529) (not x106))
+(or (not x5529) x5238)
+(or (not x5529) x5237)
+(or x5540 x5539 x5538 x5537 x106 (not x5238) (not x5237) (not x5612) (not x5620) x5527)
+(or (not x5527) (not x5540))
+(or (not x5527) (not x5539))
+(or (not x5527) (not x5538))
+(or (not x5527) (not x5537))
+(or (not x5527) (not x106))
+(or (not x5527) x5238)
+(or (not x5527) x5237)
+(or (not x5527) x5612)
+(or (not x5527) x5620)
+(or x5542 (not x5527))
+(or x5542 (not x5540))
+(or x5542 (not x5539))
+(or x5542 (not x5538))
+(or x5542 (not x5537))
+(or x5542 (not x106))
+(or x5542 x5238)
+(or x5542 x5237)
+(or x5542 (not x5564))
+(or x5542 (not x5568))
+(or x5542 (not x5569))
+(or x5527 x5540 x5539 x5538 x5537 x106 (not x5238) (not x5237) x5564 x5568 x5569 (not x5542))
+(or x5621 (not x5527))
+(or x5621 (not x5540))
+(or x5621 (not x5539))
+(or x5621 (not x5538))
+(or x5621 (not x5537))
+(or x5621 (not x106))
+(or x5621 x5238)
+(or x5621 x5237)
+(or x5621 (not x5564))
+(or x5621 (not x5568))
+(or x5621 (not x5569))
+(or x5621 x5570)
+(or x5621 x5622)
+(or x5527 x5540 x5539 x5538 x5537 x106 (not x5238) (not x5237) x5564 x5568 x5569 (not x5570) (not x5622) (not x5621))
+(or x5623 x5573)
+(or x5623 x5574)
+(or (not x5573) (not x5574) (not x5623))
+(or (not x5623) (not x5573) x5624)
+(or (not x5624) x5623)
+(or (not x5624) x5573)
+(or x5625 x5499)
+(or x5625 x5498)
+(or (not x5499) (not x5498) (not x5625))
+(or x5626 x5499)
+(or x5626 (not x5498))
+(or (not x5499) x5498 (not x5626))
+(or x5627 (not x5499))
+(or x5627 x5498)
+(or x5499 (not x5498) (not x5627))
+(or x5628 (not x5499))
+(or x5628 (not x5498))
+(or x5628 x105)
+(or x5628 (not x106))
+(or x5499 x5498 (not x105) x106 (not x5628))
+(or (not x5628) (not x5627) (not x5626) (not x5625) x5564)
+(or (not x5564) x5628)
+(or (not x5564) x5627)
+(or (not x5564) x5626)
+(or (not x5564) x5625)
+(or x5541 (not x5540))
+(or x5541 (not x5539))
+(or x5541 (not x5538))
+(or x5541 (not x5537))
+(or x5541 (not x106))
+(or x5541 x5238)
+(or x5541 x5237)
+(or x5541 (not x5564))
+(or x5541 (not x5580))
+(or x5540 x5539 x5538 x5537 x106 (not x5238) (not x5237) x5564 x5580 (not x5541))
+(or x5629 (not x5540))
+(or x5629 (not x5539))
+(or x5629 (not x5538))
+(or x5629 (not x5537))
+(or x5629 (not x106))
+(or x5629 x5238)
+(or x5629 x5237)
+(or x5629 (not x5564))
+(or x5629 (not x5580))
+(or x5629 x5577)
+(or x5629 x5572)
+(or x5629 (not x5624))
+(or x5540 x5539 x5538 x5537 x106 (not x5238) (not x5237) x5564 x5580 (not x5577) (not x5572) x5624 (not x5629))
+(or (not x5629) (not x5621) (not x5543) (not x5544) (not x5616) (not x5546) (not x5611) (not x5548) (not x5608) (not x5551) (not x5603) x5630)
+(or (not x5630) x5629)
+(or (not x5630) x5621)
+(or (not x5630) x5543)
+(or (not x5630) x5544)
+(or (not x5630) x5616)
+(or (not x5630) x5546)
+(or (not x5630) x5611)
+(or (not x5630) x5548)
+(or (not x5630) x5608)
+(or (not x5630) x5551)
+(or (not x5630) x5603)
+(or x5631 (not x5632))
+(or x5631 (not x5633))
+(or x5631 (not x5634))
+(or x5631 (not x5635))
+(or x5631 (not x5636))
+(or x5631 (not x5637))
+(or x5631 (not x5461))
+(or x5631 (not x5638))
+(or x5631 (not x5639))
+(or x5631 (not x5640))
+(or x5631 (not x5641))
+(or x5631 (not x5645))
+(or x5632 x5633 x5634 x5635 x5636 x5637 x5461 x5638 x5639 x5640 x5641 x5645 (not x5631))
+(or (not x5646) (not x5647) (not x5648) (not x5649) (not x5650) (not x5651) (not x5652) (not x5653) (not x5654) (not x5655) (not x5656) (not x5631) x5657)
+(or (not x5657) x5646)
+(or (not x5657) x5647)
+(or (not x5657) x5648)
+(or (not x5657) x5649)
+(or (not x5657) x5650)
+(or (not x5657) x5651)
+(or (not x5657) x5652)
+(or (not x5657) x5653)
+(or (not x5657) x5654)
+(or (not x5657) x5655)
+(or (not x5657) x5656)
+(or (not x5657) x5631)
+(or x5658 (not x5632))
+(or x5658 (not x5633))
+(or x5658 (not x5634))
+(or x5658 (not x5635))
+(or x5658 (not x5636))
+(or x5658 (not x5637))
+(or x5658 (not x5461))
+(or x5658 (not x5638))
+(or x5658 (not x5639))
+(or x5658 (not x5640))
+(or x5658 (not x5641))
+(or x5658 (not x5644))
+(or x5632 x5633 x5634 x5635 x5636 x5637 x5461 x5638 x5639 x5640 x5641 x5644 (not x5658))
+(or x5659 x5660)
+(or x5659 (not x5661))
+(or (not x5660) x5661 (not x5659))
+(or (not x5659) (not x5660) x5662)
+(or (not x5662) x5659)
+(or (not x5662) x5660)
+(or x5663 (not x5632))
+(or x5663 (not x5633))
+(or x5663 (not x5634))
+(or x5663 (not x5635))
+(or x5663 (not x5636))
+(or x5663 (not x5637))
+(or x5663 (not x5461))
+(or x5663 (not x5638))
+(or x5663 (not x5645))
+(or x5663 (not x5644))
+(or x5663 (not x5643))
+(or x5663 x5642)
+(or x5663 (not x107))
+(or x5663 (not x106))
+(or x5663 (not x5662))
+(or x5632 x5633 x5634 x5635 x5636 x5637 x5461 x5638 x5645 x5644 x5643 (not x5642) x107 x106 x5662 (not x5663))
+(or x5664 (not x5632))
+(or x5664 (not x5633))
+(or x5664 (not x5634))
+(or x5664 (not x5635))
+(or x5664 (not x5636))
+(or x5664 (not x5637))
+(or x5664 (not x5645))
+(or x5664 (not x5644))
+(or x5664 x5643)
+(or x5664 x5642)
+(or x5664 x5665)
+(or x5664 x5666)
+(or x5664 x5667)
+(or x5632 x5633 x5634 x5635 x5636 x5637 x5645 x5644 (not x5643) (not x5642) (not x5665) (not x5666) (not x5667) (not x5664))
+(or x5668 (not x5632))
+(or x5668 (not x5633))
+(or x5668 (not x5634))
+(or x5668 (not x5635))
+(or x5668 (not x5645))
+(or x5668 (not x5644))
+(or x5668 x5643)
+(or x5668 (not x5642))
+(or x5668 (not x5669))
+(or x5668 x5670)
+(or x5668 x5671)
+(or x5632 x5633 x5634 x5635 x5645 x5644 (not x5643) x5642 x5669 (not x5670) (not x5671) (not x5668))
+(or x5672 (not x5632))
+(or x5672 (not x5645))
+(or x5672 (not x5644))
+(or x5672 (not x5643))
+(or x5672 (not x5642))
+(or x5672 (not x106))
+(or x5672 x5238)
+(or x5672 x5237)
+(or x5672 (not x5669))
+(or x5672 (not x5568))
+(or x5672 (not x5569))
+(or x5672 x5673)
+(or x5632 x5645 x5644 x5643 x5642 x106 (not x5238) (not x5237) x5669 x5568 x5569 (not x5673) (not x5672))
+(or x5674 x5675)
+(or x5674 x5676)
+(or x5674 x5677)
+(or (not x5675) (not x5676) (not x5677) (not x5674))
+(or (not x5674) (not x5675) x5678)
+(or (not x5678) x5674)
+(or (not x5678) x5675)
+(or x5679 x5680)
+(or x5679 (not x5678))
+(or (not x5680) x5678 (not x5679))
+(or (not x5679) (not x5680) x5681)
+(or (not x5681) x5679)
+(or (not x5681) x5680)
+(or x5682 (not x5645))
+(or x5682 (not x5644))
+(or x5682 (not x5643))
+(or x5682 (not x5642))
+(or x5682 (not x106))
+(or x5682 x5238)
+(or x5682 x5237)
+(or x5682 (not x5669))
+(or x5682 (not x5580))
+(or x5682 (not x5681))
+(or x5645 x5644 x5643 x5642 x106 (not x5238) (not x5237) x5669 x5580 x5681 (not x5682))
+(or (not x5682) (not x5672) (not x5648) (not x5649) (not x5668) (not x5651) (not x5664) (not x5653) (not x5663) (not x5656) (not x5658) x5683)
+(or (not x5683) x5682)
+(or (not x5683) x5672)
+(or (not x5683) x5648)
+(or (not x5683) x5649)
+(or (not x5683) x5668)
+(or (not x5683) x5651)
+(or (not x5683) x5664)
+(or (not x5683) x5653)
+(or (not x5683) x5663)
+(or (not x5683) x5656)
+(or (not x5683) x5658)
+(or x5684 (not x5632))
+(or x5684 (not x5633))
+(or x5684 (not x5634))
+(or x5684 (not x5635))
+(or x5684 (not x5636))
+(or x5684 (not x5637))
+(or x5684 (not x5461))
+(or x5684 (not x5638))
+(or x5684 (not x5639))
+(or x5684 (not x5640))
+(or x5684 (not x5641))
+(or x5684 (not x5643))
+(or x5632 x5633 x5634 x5635 x5636 x5637 x5461 x5638 x5639 x5640 x5641 x5643 (not x5684))
+(or x5655 (not x5632))
+(or x5655 (not x5633))
+(or x5655 (not x5634))
+(or x5655 (not x5635))
+(or x5655 (not x5636))
+(or x5655 (not x5637))
+(or x5655 (not x5461))
+(or x5655 (not x5638))
+(or x5655 (not x5639))
+(or x5655 (not x5645))
+(or x5655 x5644)
+(or x5655 x5643)
+(or x5655 (not x5642))
+(or x5655 (not x107))
+(or x5655 (not x106))
+(or x5632 x5633 x5634 x5635 x5636 x5637 x5461 x5638 x5639 x5645 (not x5644) (not x5643) x5642 x107 x106 (not x5655))
+(or x5685 x5661)
+(or x5685 x5686)
+(or (not x5661) (not x5686) (not x5685))
+(or (not x5685) (not x5661) x5687)
+(or (not x5687) x5685)
+(or (not x5687) x5661)
+(or x5688 (not x5632))
+(or x5688 (not x5633))
+(or x5688 (not x5634))
+(or x5688 (not x5635))
+(or x5688 (not x5636))
+(or x5688 (not x5637))
+(or x5688 (not x5461))
+(or x5688 (not x5638))
+(or x5688 (not x5645))
+(or x5688 (not x5644))
+(or x5688 (not x5643))
+(or x5688 x5642)
+(or x5688 (not x107))
+(or x5688 (not x106))
+(or x5688 x5660)
+(or x5688 (not x5687))
+(or x5632 x5633 x5634 x5635 x5636 x5637 x5461 x5638 x5645 x5644 x5643 (not x5642) x107 x106 (not x5660) x5687 (not x5688))
+(or x5689 x5667)
+(or x5689 (not x5690))
+(or (not x5667) x5690 (not x5689))
+(or (not x5689) (not x5667) x5691)
+(or (not x5691) x5689)
+(or (not x5691) x5667)
+(or x5692 x5665)
+(or x5692 x5666)
+(or x5692 (not x5691))
+(or (not x5665) (not x5666) x5691 (not x5692))
+(or (not x5692) (not x5665) x5693)
+(or (not x5693) x5692)
+(or (not x5693) x5665)
+(or x5694 (not x5632))
+(or x5694 (not x5633))
+(or x5694 (not x5634))
+(or x5694 (not x5635))
+(or x5694 (not x5636))
+(or x5694 (not x5637))
+(or x5694 (not x5645))
+(or x5694 (not x5644))
+(or x5694 x5643)
+(or x5694 x5642)
+(or x5694 (not x5693))
+(or x5632 x5633 x5634 x5635 x5636 x5637 x5645 x5644 (not x5643) (not x5642) x5693 (not x5694))
+(or x5695 x5671)
+(or x5695 (not x5696))
+(or (not x5671) x5696 (not x5695))
+(or (not x5695) (not x5671) x5697)
+(or (not x5697) x5695)
+(or (not x5697) x5671)
+(or x5698 (not x5632))
+(or x5698 (not x5633))
+(or x5698 (not x5634))
+(or x5698 (not x5635))
+(or x5698 (not x5645))
+(or x5698 (not x5644))
+(or x5698 x5643)
+(or x5698 (not x5642))
+(or x5698 (not x5669))
+(or x5698 x5670)
+(or x5698 (not x5697))
+(or x5632 x5633 x5634 x5635 x5645 x5644 (not x5643) x5642 x5669 (not x5670) x5697 (not x5698))
+(or x5699 (not x5632))
+(or x5699 (not x5645))
+(or x5699 (not x5644))
+(or x5699 (not x5643))
+(or x5699 (not x5642))
+(or x5699 (not x106))
+(or x5699 x5238)
+(or x5699 x5237)
+(or x5699 (not x5669))
+(or x5699 (not x5568))
+(or x5699 (not x5569))
+(or x5699 (not x5673))
+(or x5632 x5645 x5644 x5643 x5642 x106 (not x5238) (not x5237) x5669 x5568 x5569 x5673 (not x5699))
+(or x5700 x5680)
+(or x5700 x5675)
+(or x5700 x5676)
+(or x5700 (not x5677))
+(or (not x5680) (not x5675) (not x5676) x5677 (not x5700))
+(or (not x5700) (not x5680) x5701)
+(or (not x5701) x5700)
+(or (not x5701) x5680)
+(or x5702 (not x5645))
+(or x5702 (not x5644))
+(or x5702 (not x5643))
+(or x5702 (not x5642))
+(or x5702 (not x106))
+(or x5702 x5238)
+(or x5702 x5237)
+(or x5702 (not x5669))
+(or x5702 (not x5580))
+(or x5702 (not x5701))
+(or x5645 x5644 x5643 x5642 x106 (not x5238) (not x5237) x5669 x5580 x5701 (not x5702))
+(or (not x5702) (not x5699) (not x5649) (not x5698) (not x5694) (not x5653) (not x5688) (not x5655) (not x5656) (not x5684) x5703)
+(or (not x5703) x5702)
+(or (not x5703) x5699)
+(or (not x5703) x5649)
+(or (not x5703) x5698)
+(or (not x5703) x5694)
+(or (not x5703) x5653)
+(or (not x5703) x5688)
+(or (not x5703) x5655)
+(or (not x5703) x5656)
+(or (not x5703) x5684)
+(or x5704 (not x5441))
+(or x5704 (not x5443))
+(or x5704 (not x5442))
+(or x5441 x5443 x5442 (not x5704))
+(or (not x5704) (not x106) x5641)
+(or (not x5641) x5704)
+(or (not x5641) x106)
+(or x5705 (not x5632))
+(or x5705 (not x5633))
+(or x5705 (not x5634))
+(or x5705 (not x5635))
+(or x5705 (not x5636))
+(or x5705 (not x5637))
+(or x5705 (not x5461))
+(or x5705 (not x5638))
+(or x5705 (not x5639))
+(or x5705 (not x5640))
+(or x5705 (not x5641))
+(or x5705 (not x5642))
+(or x5632 x5633 x5634 x5635 x5636 x5637 x5461 x5638 x5639 x5640 x5641 x5642 (not x5705))
+(or x5426 (not x5645))
+(or x5426 x5644)
+(or x5426 (not x5643))
+(or x5426 (not x5642))
+(or x5645 (not x5644) x5643 x5642 (not x5426))
+(or (not x5426) (not x5427) (not x5391) x5706)
+(or (not x5706) x5426)
+(or (not x5706) x5427)
+(or (not x5706) x5391)
+(or x5645 (not x5644) (not x5643) x5642 x107 x106 x5640)
+(or (not x5640) (not x5645))
+(or (not x5640) x5644)
+(or (not x5640) x5643)
+(or (not x5640) (not x5642))
+(or (not x5640) (not x107))
+(or (not x5640) (not x106))
+(or x5645 x5644 x5643 (not x5642) x107 x106 x5639)
+(or (not x5639) (not x5645))
+(or (not x5639) (not x5644))
+(or (not x5639) (not x5643))
+(or (not x5639) x5642)
+(or (not x5639) (not x107))
+(or (not x5639) (not x106))
+(or x5656 (not x5632))
+(or x5656 (not x5633))
+(or x5656 (not x5634))
+(or x5656 (not x5635))
+(or x5656 (not x5636))
+(or x5656 (not x5637))
+(or x5656 (not x5461))
+(or x5656 (not x5638))
+(or x5656 (not x5639))
+(or x5656 (not x5640))
+(or x5656 (not x5706))
+(or x5656 x106)
+(or x5632 x5633 x5634 x5635 x5636 x5637 x5461 x5638 x5639 x5640 x5706 (not x106) (not x5656))
+(or x5707 x5686)
+(or x5707 x5708)
+(or (not x5686) (not x5708) (not x5707))
+(or (not x5707) (not x5686) x5709)
+(or (not x5709) x5707)
+(or (not x5709) x5686)
+(or x5645 x5644 x5643 (not x5642) x107 (not x106) x5638)
+(or (not x5638) (not x5645))
+(or (not x5638) (not x5644))
+(or (not x5638) (not x5643))
+(or (not x5638) x5642)
+(or (not x5638) (not x107))
+(or (not x5638) x106)
+(or x5654 (not x5632))
+(or x5654 (not x5633))
+(or x5654 (not x5634))
+(or x5654 (not x5635))
+(or x5654 (not x5636))
+(or x5654 (not x5637))
+(or x5654 (not x5461))
+(or x5654 (not x5638))
+(or x5654 (not x5645))
+(or x5654 (not x5644))
+(or x5654 (not x5643))
+(or x5654 x5642)
+(or x5654 (not x107))
+(or x5654 (not x106))
+(or x5632 x5633 x5634 x5635 x5636 x5637 x5461 x5638 x5645 x5644 x5643 (not x5642) x107 x106 (not x5654))
+(or x5710 (not x5632))
+(or x5710 (not x5633))
+(or x5710 (not x5634))
+(or x5710 (not x5635))
+(or x5710 (not x5636))
+(or x5710 (not x5637))
+(or x5710 (not x5461))
+(or x5710 (not x5638))
+(or x5710 (not x5645))
+(or x5710 (not x5644))
+(or x5710 (not x5643))
+(or x5710 x5642)
+(or x5710 (not x107))
+(or x5710 (not x106))
+(or x5710 x5660)
+(or x5710 x5661)
+(or x5710 (not x5709))
+(or x5632 x5633 x5634 x5635 x5636 x5637 x5461 x5638 x5645 x5644 x5643 (not x5642) x107 x106 (not x5660) (not x5661) x5709 (not x5710))
+(or x5653 (not x5632))
+(or x5653 (not x5633))
+(or x5653 (not x5634))
+(or x5653 (not x5635))
+(or x5653 (not x5636))
+(or x5653 (not x5637))
+(or x5653 (not x5461))
+(or x5653 (not x5645))
+(or x5653 (not x5644))
+(or x5653 (not x5643))
+(or x5653 x5642)
+(or x5653 (not x107))
+(or x5653 x106)
+(or x5632 x5633 x5634 x5635 x5636 x5637 x5461 x5645 x5644 x5643 (not x5642) x107 (not x106) (not x5653))
+(or x5711 x5666)
+(or x5711 (not x5667))
+(or (not x5666) x5667 (not x5711))
+(or (not x5711) (not x5666) x5712)
+(or (not x5712) x5711)
+(or (not x5712) x5666)
+(or x5652 (not x5632))
+(or x5652 (not x5633))
+(or x5652 (not x5634))
+(or x5652 (not x5635))
+(or x5652 (not x5636))
+(or x5652 (not x5637))
+(or x5652 (not x5645))
+(or x5652 (not x5644))
+(or x5652 x5643)
+(or x5652 x5642)
+(or x5632 x5633 x5634 x5635 x5636 x5637 x5645 x5644 (not x5643) (not x5642) (not x5652))
+(or x5713 (not x5632))
+(or x5713 (not x5633))
+(or x5713 (not x5634))
+(or x5713 (not x5635))
+(or x5713 (not x5636))
+(or x5713 (not x5637))
+(or x5713 (not x5645))
+(or x5713 (not x5644))
+(or x5713 x5643)
+(or x5713 x5642)
+(or x5713 x5665)
+(or x5713 (not x5712))
+(or x5632 x5633 x5634 x5635 x5636 x5637 x5645 x5644 (not x5643) (not x5642) (not x5665) x5712 (not x5713))
+(or x5645 x5644 (not x5643) x5642 (not x5714) x5636)
+(or (not x5636) (not x5645))
+(or (not x5636) (not x5644))
+(or (not x5636) x5643)
+(or (not x5636) (not x5642))
+(or (not x5636) x5714)
+(or x5651 (not x5632))
+(or x5651 (not x5633))
+(or x5651 (not x5634))
+(or x5651 (not x5635))
+(or x5651 (not x5636))
+(or x5651 (not x5645))
+(or x5651 (not x5644))
+(or x5651 x5643)
+(or x5651 (not x5642))
+(or x5632 x5633 x5634 x5635 x5636 x5645 x5644 (not x5643) x5642 (not x5651))
+(or x5715 x5670)
+(or x5715 x5671)
+(or x5715 x5696)
+(or x5715 x5716)
+(or (not x5670) (not x5671) (not x5696) (not x5716) (not x5715))
+(or (not x5715) (not x5670) x5717)
+(or (not x5717) x5715)
+(or (not x5717) x5670)
+(or x5645 x5644 (not x5643) x5642 (not x106) (not x107) x5635)
+(or (not x5635) (not x5645))
+(or (not x5635) (not x5644))
+(or (not x5635) x5643)
+(or (not x5635) (not x5642))
+(or (not x5635) x106)
+(or (not x5635) x107)
+(or x5650 (not x5632))
+(or x5650 (not x5633))
+(or x5650 (not x5634))
+(or x5650 (not x5635))
+(or x5650 (not x5645))
+(or x5650 (not x5644))
+(or x5650 x5643)
+(or x5650 (not x5642))
+(or x5650 (not x5669))
+(or x5632 x5633 x5634 x5635 x5645 x5644 (not x5643) x5642 x5669 (not x5650))
+(or x5718 (not x5632))
+(or x5718 (not x5633))
+(or x5718 (not x5634))
+(or x5718 (not x5635))
+(or x5718 (not x5645))
+(or x5718 (not x5644))
+(or x5718 x5643)
+(or x5718 (not x5642))
+(or x5718 (not x5669))
+(or x5718 (not x5717))
+(or x5632 x5633 x5634 x5635 x5645 x5644 (not x5643) x5642 x5669 x5717 (not x5718))
+(or x5649 (not x5632))
+(or x5649 (not x5633))
+(or x5649 (not x5634))
+(or x5649 (not x5645))
+(or x5649 (not x5644))
+(or x5649 x5643)
+(or x5649 (not x5642))
+(or x5649 x106)
+(or x5649 x107)
+(or x5632 x5633 x5634 x5645 x5644 (not x5643) x5642 (not x106) (not x107) (not x5649))
+(or x5645 x5644 x5643 x5642 x106 (not x5238) (not x5237) (not x5714) (not x5617) (not x5618) x5633)
+(or (not x5633) (not x5645))
+(or (not x5633) (not x5644))
+(or (not x5633) (not x5643))
+(or (not x5633) (not x5642))
+(or (not x5633) (not x106))
+(or (not x5633) x5238)
+(or (not x5633) x5237)
+(or (not x5633) x5714)
+(or (not x5633) x5617)
+(or (not x5633) x5618)
+(or x5648 (not x5632))
+(or x5648 (not x5633))
+(or x5648 (not x5645))
+(or x5648 (not x5644))
+(or x5648 (not x5643))
+(or x5648 (not x5642))
+(or x5648 (not x106))
+(or x5648 x5238)
+(or x5648 x5237)
+(or x5632 x5633 x5645 x5644 x5643 x5642 x106 (not x5238) (not x5237) (not x5648))
+(or (not x5408) (not x5450) x5569)
+(or (not x5569) x5408)
+(or (not x5569) x5450)
+(or (not x5345) (not x5346) (not x5455) x5568)
+(or (not x5568) x5345)
+(or (not x5568) x5346)
+(or (not x5568) x5455)
+(or x5620 (not x5568))
+(or x5620 (not x5569))
+(or x5568 x5569 (not x5620))
+(or (not x5512) (not x5511) x5510)
+(or (not x5510) x5512)
+(or (not x5510) x5511)
+(or (not x5512) x5511 x5509)
+(or (not x5509) x5512)
+(or (not x5509) (not x5511))
+(or x5512 (not x5511) x5508)
+(or (not x5508) (not x5512))
+(or (not x5508) x5511)
+(or (not x105) x106 x5222)
+(or (not x5222) x105)
+(or (not x5222) (not x106))
+(or x5512 x5511 (not x105) x106 x5719)
+(or (not x5719) (not x5512))
+(or (not x5719) (not x5511))
+(or (not x5719) x105)
+(or (not x5719) (not x106))
+(or x5714 (not x5719))
+(or x5714 (not x5508))
+(or x5714 (not x5509))
+(or x5714 (not x5510))
+(or x5719 x5508 x5509 x5510 (not x5714))
+(or x5645 x5644 x5643 x5642 x106 (not x5238) (not x5237) x5634)
+(or (not x5634) (not x5645))
+(or (not x5634) (not x5644))
+(or (not x5634) (not x5643))
+(or (not x5634) (not x5642))
+(or (not x5634) (not x106))
+(or (not x5634) x5238)
+(or (not x5634) x5237)
+(or x5645 x5644 x5643 x5642 x106 (not x5238) (not x5237) (not x5714) (not x5620) x5632)
+(or (not x5632) (not x5645))
+(or (not x5632) (not x5644))
+(or (not x5632) (not x5643))
+(or (not x5632) (not x5642))
+(or (not x5632) (not x106))
+(or (not x5632) x5238)
+(or (not x5632) x5237)
+(or (not x5632) x5714)
+(or (not x5632) x5620)
+(or x5647 (not x5632))
+(or x5647 (not x5645))
+(or x5647 (not x5644))
+(or x5647 (not x5643))
+(or x5647 (not x5642))
+(or x5647 (not x106))
+(or x5647 x5238)
+(or x5647 x5237)
+(or x5647 (not x5669))
+(or x5647 (not x5568))
+(or x5647 (not x5569))
+(or x5632 x5645 x5644 x5643 x5642 x106 (not x5238) (not x5237) x5669 x5568 x5569 (not x5647))
+(or x5720 (not x5632))
+(or x5720 (not x5645))
+(or x5720 (not x5644))
+(or x5720 (not x5643))
+(or x5720 (not x5642))
+(or x5720 (not x106))
+(or x5720 x5238)
+(or x5720 x5237)
+(or x5720 (not x5669))
+(or x5720 (not x5568))
+(or x5720 (not x5569))
+(or x5720 x5673)
+(or x5720 x5721)
+(or x5632 x5645 x5644 x5643 x5642 x106 (not x5238) (not x5237) x5669 x5568 x5569 (not x5673) (not x5721) (not x5720))
+(or x5722 x5676)
+(or x5722 x5677)
+(or (not x5676) (not x5677) (not x5722))
+(or (not x5722) (not x5676) x5723)
+(or (not x5723) x5722)
+(or (not x5723) x5676)
+(or x5358 (not x5344))
+(or x5358 (not x5288))
+(or x5344 x5288 (not x5358))
+(or x5346 (not x5387))
+(or x5346 x5368)
+(or x5346 (not x5369))
+(or x5346 (not x5370))
+(or x5346 (not x5371))
+(or x5346 (not x5373))
+(or x5346 (not x5320))
+(or x5346 (not x5374))
+(or x5346 (not x5375))
+(or x5346 (not x5281))
+(or x5346 (not x5376))
+(or x5346 (not x5344))
+(or x5346 (not x5288))
+(or x5387 (not x5368) x5369 x5370 x5371 x5373 x5320 x5374 x5375 x5281 x5376 x5344 x5288 (not x5346))
+(or x5471 (not x5368))
+(or x5471 (not x5369))
+(or x5368 x5369 (not x5471))
+(or x5469 (not x5368))
+(or x5469 (not x5369))
+(or x5469 (not x5370))
+(or x5469 (not x5371))
+(or x5368 x5369 x5370 x5371 (not x5469))
+(or x5481 (not x5374))
+(or x5481 (not x5375))
+(or x5374 x5375 (not x5481))
+(or x5477 (not x5344))
+(or x5477 (not x5374))
+(or x5477 (not x5375))
+(or x5344 x5374 x5375 (not x5477))
+(or x5482 (not x5288))
+(or x5482 (not x5344))
+(or x5482 (not x5374))
+(or x5482 (not x5375))
+(or x5288 x5344 x5374 x5375 (not x5482))
+(or x5476 (not x5373))
+(or x5476 (not x5288))
+(or x5476 (not x5344))
+(or x5476 (not x5374))
+(or x5476 (not x5375))
+(or x5373 x5288 x5344 x5374 x5375 (not x5476))
+(or x5345 (not x5373))
+(or x5345 (not x5288))
+(or x5345 (not x5344))
+(or x5345 (not x5374))
+(or x5345 (not x5375))
+(or x5345 (not x5387))
+(or x5345 (not x5281))
+(or x5345 x5376)
+(or x5345 (not x5320))
+(or x5345 (not x5368))
+(or x5345 (not x5369))
+(or x5345 (not x5370))
+(or x5345 (not x5371))
+(or x5373 x5288 x5344 x5374 x5375 x5387 x5281 (not x5376) x5320 x5368 x5369 x5370 x5371 (not x5345))
+(or (not x5345) (not x5346) x5724)
+(or (not x5724) x5345)
+(or (not x5724) x5346)
+(or x5618 (not x5724))
+(or x5618 x5450)
+(or x5724 (not x5450) (not x5618))
+(or x5344 x5288 x5353)
+(or (not x5353) (not x5344))
+(or (not x5353) (not x5288))
+(or x5387 (not x5368) x5369 x5370 x5371 x5373 x5320 x5374 x5375 x5281 x5376 x5344 x5288 x5337)
+(or (not x5337) (not x5387))
+(or (not x5337) x5368)
+(or (not x5337) (not x5369))
+(or (not x5337) (not x5370))
+(or (not x5337) (not x5371))
+(or (not x5337) (not x5373))
+(or (not x5337) (not x5320))
+(or (not x5337) (not x5374))
+(or (not x5337) (not x5375))
+(or (not x5337) (not x5281))
+(or (not x5337) (not x5376))
+(or (not x5337) (not x5344))
+(or (not x5337) (not x5288))
+(or x5368 x5369 x5413)
+(or (not x5413) (not x5368))
+(or (not x5413) (not x5369))
+(or x5368 x5369 x5370 x5371 x5410)
+(or (not x5410) (not x5368))
+(or (not x5410) (not x5369))
+(or (not x5410) (not x5370))
+(or (not x5410) (not x5371))
+(or x5374 x5375 x5424)
+(or (not x5424) (not x5374))
+(or (not x5424) (not x5375))
+(or x5344 x5374 x5375 x5418)
+(or (not x5418) (not x5344))
+(or (not x5418) (not x5374))
+(or (not x5418) (not x5375))
+(or x5288 x5344 x5374 x5375 x5425)
+(or (not x5425) (not x5288))
+(or (not x5425) (not x5344))
+(or (not x5425) (not x5374))
+(or (not x5425) (not x5375))
+(or x5373 x5288 x5344 x5374 x5375 x5417)
+(or (not x5417) (not x5373))
+(or (not x5417) (not x5288))
+(or (not x5417) (not x5344))
+(or (not x5417) (not x5374))
+(or (not x5417) (not x5375))
+(or x5373 x5288 x5344 x5374 x5375 x5387 x5281 (not x5376) x5320 x5368 x5369 x5370 x5371 x5336)
+(or (not x5336) (not x5373))
+(or (not x5336) (not x5288))
+(or (not x5336) (not x5344))
+(or (not x5336) (not x5374))
+(or (not x5336) (not x5375))
+(or (not x5336) (not x5387))
+(or (not x5336) (not x5281))
+(or (not x5336) x5376)
+(or (not x5336) (not x5320))
+(or (not x5336) (not x5368))
+(or (not x5336) (not x5369))
+(or (not x5336) (not x5370))
+(or (not x5336) (not x5371))
+(or x5408 (not x5336))
+(or x5408 (not x5337))
+(or x5336 x5337 (not x5408))
+(or x5617 (not x5336))
+(or x5617 (not x5337))
+(or x5617 x5455)
+(or x5336 x5337 (not x5455) (not x5617))
+(or (not x5617) (not x5618) x5580)
+(or (not x5580) x5617)
+(or (not x5580) x5618)
+(or x5725 x5512)
+(or x5725 x5511)
+(or (not x5512) (not x5511) (not x5725))
+(or x5726 x5512)
+(or x5726 (not x5511))
+(or (not x5512) x5511 (not x5726))
+(or x5727 (not x5512))
+(or x5727 x5511)
+(or x5512 (not x5511) (not x5727))
+(or x5262 x105)
+(or x5262 (not x106))
+(or (not x105) x106 (not x5262))
+(or x5728 (not x5512))
+(or x5728 (not x5511))
+(or x5728 x105)
+(or x5728 (not x106))
+(or x5512 x5511 (not x105) x106 (not x5728))
+(or (not x5728) (not x5727) (not x5726) (not x5725) x5669)
+(or (not x5669) x5728)
+(or (not x5669) x5727)
+(or (not x5669) x5726)
+(or (not x5669) x5725)
+(or x5646 (not x5645))
+(or x5646 (not x5644))
+(or x5646 (not x5643))
+(or x5646 (not x5642))
+(or x5646 (not x106))
+(or x5646 x5238)
+(or x5646 x5237)
+(or x5646 (not x5669))
+(or x5646 (not x5580))
+(or x5645 x5644 x5643 x5642 x106 (not x5238) (not x5237) x5669 x5580 (not x5646))
+(or x5729 (not x5645))
+(or x5729 (not x5644))
+(or x5729 (not x5643))
+(or x5729 (not x5642))
+(or x5729 (not x106))
+(or x5729 x5238)
+(or x5729 x5237)
+(or x5729 (not x5669))
+(or x5729 (not x5580))
+(or x5729 x5680)
+(or x5729 x5675)
+(or x5729 (not x5723))
+(or x5645 x5644 x5643 x5642 x106 (not x5238) (not x5237) x5669 x5580 (not x5680) (not x5675) x5723 (not x5729))
+(or (not x5729) (not x5720) (not x5648) (not x5649) (not x5718) (not x5651) (not x5713) (not x5653) (not x5710) (not x5656) (not x5705) x5730)
+(or (not x5730) x5729)
+(or (not x5730) x5720)
+(or (not x5730) x5648)
+(or (not x5730) x5649)
+(or (not x5730) x5718)
+(or (not x5730) x5651)
+(or (not x5730) x5713)
+(or (not x5730) x5653)
+(or (not x5730) x5710)
+(or (not x5730) x5656)
+(or (not x5730) x5705)
+(or x5731 (not x5732))
+(or x5731 (not x5302))
+(or x5731 (not x5733))
+(or x5731 (not x5308))
+(or x5732 x5302 x5733 x5308 (not x5731))
+(or x5734 (not x5732))
+(or x5734 (not x5302))
+(or x5734 x5308)
+(or x5734 (not x5307))
+(or x5734 (not x5306))
+(or x5734 x5305)
+(or x5734 x5281)
+(or x5734 x5735)
+(or x5732 x5302 (not x5308) x5307 x5306 (not x5305) (not x5281) (not x5735) (not x5734))
+(or x5736 (not x5308))
+(or x5736 x5307)
+(or x5736 x5306)
+(or x5736 x5305)
+(or x5736 x5238)
+(or x5736 x5237)
+(or x5736 x5737)
+(or x5736 x5738)
+(or x5308 (not x5307) (not x5306) (not x5305) (not x5238) (not x5237) (not x5737) (not x5738) (not x5736))
+(or (not x5736) (not x5734) (not x5731) x5739)
+(or (not x5739) x5736)
+(or (not x5739) x5734)
+(or (not x5739) x5731)
+(or x5740 (not x5732))
+(or x5740 (not x5302))
+(or x5740 (not x5733))
+(or x5740 (not x5307))
+(or x5732 x5302 x5733 x5307 (not x5740))
+(or (not x5741) (not x5742) (not x5743) (not x5740) x5744)
+(or (not x5744) x5741)
+(or (not x5744) x5742)
+(or (not x5744) x5743)
+(or (not x5744) x5740)
+(or x5745 (not x5732))
+(or x5745 (not x5302))
+(or x5745 (not x5733))
+(or x5745 (not x5306))
+(or x5732 x5302 x5733 x5306 (not x5745))
+(or x5318 x5308)
+(or x5318 (not x5307))
+(or x5318 (not x5306))
+(or x5318 (not x5305))
+(or (not x5308) x5307 x5306 x5305 (not x5318))
+(or x5742 (not x5732))
+(or x5742 x5308)
+(or x5742 (not x5307))
+(or x5742 (not x5306))
+(or x5742 (not x5305))
+(or x5732 (not x5308) x5307 x5306 x5305 (not x5742))
+(or (not x5741) (not x5742) (not x5743) (not x5745) x5746)
+(or (not x5746) x5741)
+(or (not x5746) x5742)
+(or (not x5746) x5743)
+(or (not x5746) x5745)
+(or (not x5308) x5307 x5306 (not x5305) (not x5281) x5733)
+(or (not x5733) x5308)
+(or (not x5733) (not x5307))
+(or (not x5733) (not x5306))
+(or (not x5733) x5305)
+(or (not x5733) x5281)
+(or x5747 (not x5732))
+(or x5747 (not x5302))
+(or x5747 (not x5733))
+(or x5747 (not x5305))
+(or x5732 x5302 x5733 x5305 (not x5747))
+(or x5308 (not x5307) (not x5306) (not x5305) (not x5238) (not x5237) (not x5737) x5732)
+(or (not x5732) (not x5308))
+(or (not x5732) x5307)
+(or (not x5732) x5306)
+(or (not x5732) x5305)
+(or (not x5732) x5238)
+(or (not x5732) x5237)
+(or (not x5732) x5737)
+(or x5743 (not x5732))
+(or x5743 (not x5302))
+(or x5743 x5308)
+(or x5743 (not x5307))
+(or x5743 (not x5306))
+(or x5743 x5305)
+(or x5743 x5281)
+(or x5743 (not x5735))
+(or x5732 x5302 (not x5308) x5307 x5306 (not x5305) (not x5281) x5735 (not x5743))
+(or x5741 (not x5308))
+(or x5741 x5307)
+(or x5741 x5306)
+(or x5741 x5305)
+(or x5741 x5238)
+(or x5741 x5237)
+(or x5741 x5737)
+(or x5741 (not x5738))
+(or x5308 (not x5307) (not x5306) (not x5305) (not x5238) (not x5237) (not x5737) x5738 (not x5741))
+(or (not x5741) (not x5743) (not x5747) x5748)
+(or (not x5748) x5741)
+(or (not x5748) x5743)
+(or (not x5748) x5747)
+(or (not x5737) (not x5749) (not x5281) x5750)
+(or (not x5750) x5737)
+(or (not x5750) x5749)
+(or (not x5750) x5281)
+(or x5751 x5737)
+(or x5751 (not x5750))
+(or x5751 (not x5737))
+(or (not x5737) x5750 x5737 (not x5751))
+(or x5752 x5737)
+(or x5752 x5737)
+(or x5752 x5749)
+(or x5752 x5281)
+(or x5752 x5753)
+(or (not x5737) (not x5737) (not x5749) (not x5281) (not x5753) (not x5752))
+(or x5754 x5755)
+(or x5754 x5756)
+(or (not x5755) (not x5756) (not x5754))
+(or (not x5754) (not x5755) x5757)
+(or (not x5757) x5754)
+(or (not x5757) x5755)
+(or x5758 (not x5737))
+(or x5758 x5759)
+(or x5758 (not x5757))
+(or x5737 (not x5759) x5757 (not x5758))
+(or (not x5758) (not x5752) (not x5751) x5760)
+(or (not x5760) x5758)
+(or (not x5760) x5752)
+(or (not x5760) x5751)
+(or x5389 (not x5441))
+(or x5389 (not x5442))
+(or x5389 (not x5443))
+(or x5389 (not x5444))
+(or x5389 (not x5445))
+(or x5389 (not x5446))
+(or x5441 x5442 x5443 x5444 x5445 x5446 (not x5389))
+(or x5393 (not x5540))
+(or x5393 x5539)
+(or x5393 x5538)
+(or x5393 (not x5537))
+(or x5540 (not x5539) (not x5538) x5537 (not x5393))
+(or x5429 (not x5540))
+(or x5429 x5539)
+(or x5429 (not x5538))
+(or x5429 x5537)
+(or x5540 (not x5539) x5538 (not x5537) (not x5429))
+(or x5392 (not x5540))
+(or x5392 (not x5539))
+(or x5392 (not x5538))
+(or x5392 x5537)
+(or x5540 x5539 x5538 (not x5537) (not x5392))
+(or x5761 (not x5540))
+(or x5761 (not x5539))
+(or x5761 x5538)
+(or x5761 x5537)
+(or x5540 x5539 (not x5538) (not x5537) (not x5761))
+(or x5391 (not x5645))
+(or x5391 x5644)
+(or x5391 x5643)
+(or x5391 (not x5642))
+(or x5645 (not x5644) (not x5643) x5642 (not x5391))
+(or x5427 (not x5645))
+(or x5427 x5644)
+(or x5427 (not x5643))
+(or x5427 x5642)
+(or x5645 (not x5644) x5643 (not x5642) (not x5427))
+(or x5390 (not x5645))
+(or x5390 (not x5644))
+(or x5390 (not x5643))
+(or x5390 x5642)
+(or x5645 x5644 x5643 (not x5642) (not x5390))
+(or x5762 (not x5645))
+(or x5762 (not x5644))
+(or x5762 x5643)
+(or x5762 x5642)
+(or x5645 x5644 (not x5643) (not x5642) (not x5762))
+(or (not x5762) (not x5390) (not x5427) (not x5391) (not x5761) (not x5392) (not x5429) (not x5393) x5763)
+(or (not x5763) x5762)
+(or (not x5763) x5390)
+(or (not x5763) x5427)
+(or (not x5763) x5391)
+(or (not x5763) x5761)
+(or (not x5763) x5392)
+(or (not x5763) x5429)
+(or (not x5763) x5393)
+(or (not x5762) (not x5390) (not x5427) (not x5391) (not x5761) (not x5392) (not x5429) (not x5393) x5332 x5333 x5521)
+(or (not x5521) x5762)
+(or (not x5521) x5390)
+(or (not x5521) x5427)
+(or (not x5521) x5391)
+(or (not x5521) x5761)
+(or (not x5521) x5392)
+(or (not x5521) x5429)
+(or (not x5521) x5393)
+(or (not x5521) (not x5332))
+(or (not x5521) (not x5333))
+(or x5379 (not x5521))
+(or x5379 (not x5462))
+(or x5379 (not x5442))
+(or x5379 (not x5464))
+(or x5379 (not x5445))
+(or x5521 x5462 x5442 x5464 x5445 (not x5379))
+(or x5764 (not x5521))
+(or x5764 (not x5462))
+(or x5764 (not x5442))
+(or x5764 (not x5464))
+(or x5764 (not x5445))
+(or x5764 (not x5441))
+(or x5764 (not x5442))
+(or x5764 (not x5443))
+(or x5764 (not x5444))
+(or x5764 (not x5445))
+(or x5764 (not x5446))
+(or x5764 x5344)
+(or x5521 x5462 x5442 x5464 x5445 x5441 x5442 x5443 x5444 x5445 x5446 (not x5344) (not x5764))
+(or (not x5764) (not x5520) x5765)
+(or (not x5765) x5764)
+(or (not x5765) x5520)
+(or (not x5766) x5308)
+(or (not x5766) (not x5307))
+(or (not x5766) (not x5306))
+(or (not x5766) x5305)
+(or (not x5308) x5307 x5306 x5305 x5302)
+(or (not x5302) x5308)
+(or (not x5302) (not x5307))
+(or (not x5302) (not x5306))
+(or (not x5302) (not x5305))
+(or (not x5767) (not x5308))
+(or (not x5767) x5307)
+(or (not x5767) x5306)
+(or (not x5767) x5305)
+(or x5768 (not x5767))
+(or x5768 (not x5302))
+(or x5767 x5302 (not x5768))
+(or x5540 (not x5539) (not x5538) x5537 x5445)
+(or (not x5445) (not x5540))
+(or (not x5445) x5539)
+(or (not x5445) x5538)
+(or (not x5445) (not x5537))
+(or x5540 (not x5539) x5538 (not x5537) x5446)
+(or (not x5446) (not x5540))
+(or (not x5446) x5539)
+(or (not x5446) (not x5538))
+(or (not x5446) x5537)
+(or x5540 (not x5539) x5538 x5537 x5444)
+(or (not x5444) (not x5540))
+(or (not x5444) x5539)
+(or (not x5444) (not x5538))
+(or (not x5444) (not x5537))
+(or x5540 x5539 (not x5538) (not x5537) x5463)
+(or (not x5463) (not x5540))
+(or (not x5463) (not x5539))
+(or (not x5463) x5538)
+(or (not x5463) x5537)
+(or x5540 x5539 (not x5538) x5537 x5532)
+(or (not x5532) (not x5540))
+(or (not x5532) (not x5539))
+(or (not x5532) x5538)
+(or (not x5532) (not x5537))
+(or x5540 x5539 x5538 (not x5537) x5464)
+(or (not x5464) (not x5540))
+(or (not x5464) (not x5539))
+(or (not x5464) (not x5538))
+(or (not x5464) x5537)
+(or (not x5769) (not x5540))
+(or (not x5769) (not x5539))
+(or (not x5769) (not x5538))
+(or (not x5769) (not x5537))
+(or x5770 (not x5769))
+(or x5770 (not x5464))
+(or x5770 (not x5532))
+(or x5770 (not x5463))
+(or x5770 (not x5444))
+(or x5770 (not x5446))
+(or x5769 x5464 x5532 x5463 x5444 x5446 (not x5770))
+(or x5645 (not x5644) (not x5643) x5642 x5442)
+(or (not x5442) (not x5645))
+(or (not x5442) x5644)
+(or (not x5442) x5643)
+(or (not x5442) (not x5642))
+(or x5645 (not x5644) x5643 (not x5642) x5443)
+(or (not x5443) (not x5645))
+(or (not x5443) x5644)
+(or (not x5443) (not x5643))
+(or (not x5443) x5642)
+(or x5645 (not x5644) x5643 x5642 x5441)
+(or (not x5441) (not x5645))
+(or (not x5441) x5644)
+(or (not x5441) (not x5643))
+(or (not x5441) (not x5642))
+(or x5645 x5644 (not x5643) (not x5642) x5461)
+(or (not x5461) (not x5645))
+(or (not x5461) (not x5644))
+(or (not x5461) x5643)
+(or (not x5461) x5642)
+(or x5645 x5644 (not x5643) x5642 x5637)
+(or (not x5637) (not x5645))
+(or (not x5637) (not x5644))
+(or (not x5637) x5643)
+(or (not x5637) (not x5642))
+(or x5645 x5644 x5643 (not x5642) x5462)
+(or (not x5462) (not x5645))
+(or (not x5462) (not x5644))
+(or (not x5462) (not x5643))
+(or (not x5462) x5642)
+(or (not x5771) (not x5645))
+(or (not x5771) (not x5644))
+(or (not x5771) (not x5643))
+(or (not x5771) (not x5642))
+(or x5772 (not x5771))
+(or x5772 (not x5462))
+(or x5772 (not x5637))
+(or x5772 (not x5461))
+(or x5772 (not x5441))
+(or x5772 (not x5443))
+(or x5771 x5462 x5637 x5461 x5441 x5443 (not x5772))
+(or x5773 (not x5774))
+(or x5773 (not x5775))
+(or x5773 (not x5776))
+(or x5773 (not x5777))
+(or x5773 (not x5778))
+(or x5773 (not x5779))
+(or x5773 (not x113))
+(or x5773 x112)
+(or x5773 x111)
+(or x5773 x110)
+(or x5773 (not x5780))
+(or x5773 x5781)
+(or x5774 x5775 x5776 x5777 x5778 x5779 x113 (not x112) (not x111) (not x110) x5780 (not x5781) (not x5773))
+(or x5782 (not x5774))
+(or x5782 (not x5775))
+(or x5782 (not x5776))
+(or x5782 (not x5777))
+(or x5782 (not x5778))
+(or x5782 (not x113))
+(or x5782 x112)
+(or x5782 x111)
+(or x5782 (not x110))
+(or x5782 x114)
+(or x5782 (not x115))
+(or x5782 x5783)
+(or x5774 x5775 x5776 x5777 x5778 x113 (not x112) (not x111) x110 (not x114) x115 (not x5783) (not x5782))
+(or x5784 (not x113))
+(or x5784 (not x112))
+(or x5784 (not x111))
+(or x5784 x110)
+(or x5784 (not x5785))
+(or x113 x112 x111 (not x110) x5785 (not x5784))
+(or (not x5784) (not x5786) (not x5787) (not x5788) (not x5789) (not x5782) (not x5773) (not x5790) x5791)
+(or (not x5791) x5784)
+(or (not x5791) x5786)
+(or (not x5791) x5787)
+(or (not x5791) x5788)
+(or (not x5791) x5789)
+(or (not x5791) x5782)
+(or (not x5791) x5773)
+(or (not x5791) x5790)
+(or x5792 (not x5774))
+(or x5792 (not x5775))
+(or x5792 (not x113))
+(or x5792 (not x112))
+(or x5792 x111)
+(or x5792 x110)
+(or x5792 (not x5780))
+(or x5792 x5793)
+(or x5774 x5775 x113 x112 (not x111) (not x110) x5780 (not x5793) (not x5792))
+(or x5794 (not x5774))
+(or x5794 (not x113))
+(or x5794 (not x112))
+(or x5794 x111)
+(or x5794 (not x110))
+(or x5794 x5796)
+(or x5794 x5795)
+(or x5794 (not x5780))
+(or x5794 x5797)
+(or x5774 x113 x112 (not x111) x110 (not x5796) (not x5795) x5780 (not x5797) (not x5794))
+(or x5798 (not x5799) x5785)
+(or (not x5785) (not x5798))
+(or (not x5785) x5799)
+(or x5798 (not x5799) (not x5800) x5801)
+(or (not x5801) (not x5798))
+(or (not x5801) x5799)
+(or (not x5801) x5800)
+(or x5802 (not x113))
+(or x5802 (not x112))
+(or x5802 (not x111))
+(or x5802 x110)
+(or x5802 (not x5801))
+(or x113 x112 x111 (not x110) x5801 (not x5802))
+(or (not x5802) (not x5794) (not x5792) (not x5803) (not x5804) (not x5805) (not x5806) (not x5790) x5807)
+(or (not x5807) x5802)
+(or (not x5807) x5794)
+(or (not x5807) x5792)
+(or (not x5807) x5803)
+(or (not x5807) x5804)
+(or (not x5807) x5805)
+(or (not x5807) x5806)
+(or (not x5807) x5790)
+(or x5808 (not x5774))
+(or x5808 (not x5775))
+(or x5808 (not x5776))
+(or x5808 (not x5777))
+(or x5808 (not x113))
+(or x5808 x112)
+(or x5808 (not x111))
+(or x5808 x110)
+(or x5808 (not x5780))
+(or x5808 x5809)
+(or x5774 x5775 x5776 x5777 x113 (not x112) x111 (not x110) x5780 (not x5809) (not x5808))
+(or x5810 (not x5774))
+(or x5810 (not x5775))
+(or x5810 (not x5776))
+(or x5810 (not x113))
+(or x5810 x112)
+(or x5810 (not x111))
+(or x5810 (not x110))
+(or x5810 x114)
+(or x5810 (not x115))
+(or x5810 x5811)
+(or x5774 x5775 x5776 x113 (not x112) x111 x110 (not x114) x115 (not x5811) (not x5810))
+(or x5800 (not x5798))
+(or x5800 (not x5812))
+(or x5798 x5812 (not x5800))
+(or x5798 (not x5800) x5813)
+(or (not x5813) (not x5798))
+(or (not x5813) x5800)
+(or x5814 (not x113))
+(or x5814 (not x112))
+(or x5814 (not x111))
+(or x5814 x110)
+(or x5814 (not x5813))
+(or x113 x112 x111 (not x110) x5813 (not x5814))
+(or (not x5814) (not x5815) (not x5816) (not x5810) (not x5808) (not x5803) (not x5804) (not x5817) (not x5818) (not x5790) x5819)
+(or (not x5819) x5814)
+(or (not x5819) x5815)
+(or (not x5819) x5816)
+(or (not x5819) x5810)
+(or (not x5819) x5808)
+(or (not x5819) x5803)
+(or (not x5819) x5804)
+(or (not x5819) x5817)
+(or (not x5819) x5818)
+(or (not x5819) x5790)
+(or (not x113) (not x112) x111 x110 (not x5820) x5821)
+(or (not x5821) x113)
+(or (not x5821) x112)
+(or (not x5821) (not x111))
+(or (not x5821) (not x110))
+(or (not x5821) x5820)
+(or x5790 (not x5774))
+(or x5790 (not x5775))
+(or x5790 (not x5776))
+(or x5790 (not x5777))
+(or x5790 (not x5778))
+(or x5790 (not x5779))
+(or x5790 (not x5822))
+(or x5790 (not x5823))
+(or x5790 (not x5824))
+(or x5790 (not x5825))
+(or x5790 (not x5821))
+(or x5774 x5775 x5776 x5777 x5778 x5779 x5822 x5823 x5824 x5825 x5821 (not x5790))
+(or (not x113) x112 (not x111) (not x110) (not x114) x115 x5825)
+(or (not x5825) x113)
+(or (not x5825) (not x112))
+(or (not x5825) x111)
+(or (not x5825) x110)
+(or (not x5825) x114)
+(or (not x5825) (not x115))
+(or x5818 (not x5774))
+(or x5818 (not x5775))
+(or x5818 (not x5776))
+(or x5818 (not x5777))
+(or x5818 (not x5778))
+(or x5818 (not x5779))
+(or x5818 (not x5822))
+(or x5818 (not x5823))
+(or x5818 (not x5824))
+(or x5818 (not x5825))
+(or x5818 x113)
+(or x5818 x112)
+(or x5818 (not x111))
+(or x5818 (not x110))
+(or x5818 (not x5780))
+(or x5774 x5775 x5776 x5777 x5778 x5779 x5822 x5823 x5824 x5825 (not x113) (not x112) x111 x110 x5780 (not x5818))
+(or x5826 (not x5774))
+(or x5826 (not x5775))
+(or x5826 (not x5776))
+(or x5826 (not x5777))
+(or x5826 (not x5778))
+(or x5826 (not x5779))
+(or x5826 (not x5822))
+(or x5826 (not x5823))
+(or x5826 (not x5824))
+(or x5826 (not x5825))
+(or x5826 x113)
+(or x5826 x112)
+(or x5826 (not x111))
+(or x5826 (not x110))
+(or x5826 (not x5780))
+(or x5826 x5827)
+(or x5774 x5775 x5776 x5777 x5778 x5779 x5822 x5823 x5824 x5825 (not x113) (not x112) x111 x110 x5780 (not x5827) (not x5826))
+(or (not x113) x112 (not x111) x110 (not x5820) x5824)
+(or (not x5824) x113)
+(or (not x5824) (not x112))
+(or (not x5824) x111)
+(or (not x5824) (not x110))
+(or (not x5824) x5820)
+(or x5817 (not x5774))
+(or x5817 (not x5775))
+(or x5817 (not x5776))
+(or x5817 (not x5777))
+(or x5817 (not x5778))
+(or x5817 (not x5779))
+(or x5817 (not x5822))
+(or x5817 (not x5823))
+(or x5817 (not x5824))
+(or x5817 x113)
+(or x5817 (not x112))
+(or x5817 x111)
+(or x5817 x110)
+(or x5817 x114)
+(or x5817 (not x115))
+(or x5774 x5775 x5776 x5777 x5778 x5779 x5822 x5823 x5824 (not x113) x112 (not x111) (not x110) (not x114) x115 (not x5817))
+(or x5828 (not x5774))
+(or x5828 (not x5775))
+(or x5828 (not x5776))
+(or x5828 (not x5777))
+(or x5828 (not x5778))
+(or x5828 (not x5779))
+(or x5828 (not x5822))
+(or x5828 (not x5823))
+(or x5828 (not x5824))
+(or x5828 x113)
+(or x5828 (not x112))
+(or x5828 x111)
+(or x5828 x110)
+(or x5828 x114)
+(or x5828 (not x115))
+(or x5828 x5829)
+(or x5774 x5775 x5776 x5777 x5778 x5779 x5822 x5823 x5824 (not x113) x112 (not x111) (not x110) (not x114) x115 (not x5829) (not x5828))
+(or (not x113) x112 x111 (not x110) (not x5796) (not x5795) (not x114) x115 x5823)
+(or (not x5823) x113)
+(or (not x5823) (not x112))
+(or (not x5823) (not x111))
+(or (not x5823) x110)
+(or (not x5823) x5796)
+(or (not x5823) x5795)
+(or (not x5823) x114)
+(or (not x5823) (not x115))
+(or x5806 (not x5774))
+(or x5806 (not x5775))
+(or x5806 (not x5776))
+(or x5806 (not x5777))
+(or x5806 (not x5778))
+(or x5806 (not x5779))
+(or x5806 (not x5822))
+(or x5806 (not x5823))
+(or x5806 x113)
+(or x5806 (not x112))
+(or x5806 x111)
+(or x5806 (not x110))
+(or x5806 (not x5780))
+(or x5774 x5775 x5776 x5777 x5778 x5779 x5822 x5823 (not x113) x112 (not x111) x110 x5780 (not x5806))
+(or x5830 (not x5774))
+(or x5830 (not x5775))
+(or x5830 (not x5776))
+(or x5830 (not x5777))
+(or x5830 (not x5778))
+(or x5830 (not x5779))
+(or x5830 (not x5822))
+(or x5830 (not x5823))
+(or x5830 x113)
+(or x5830 (not x112))
+(or x5830 x111)
+(or x5830 (not x110))
+(or x5830 (not x5780))
+(or x5830 x5831)
+(or x5774 x5775 x5776 x5777 x5778 x5779 x5822 x5823 (not x113) x112 (not x111) x110 x5780 (not x5831) (not x5830))
+(or x113 (not x112) (not x111) (not x110) (not x5820) x5822)
+(or (not x5822) (not x113))
+(or (not x5822) x112)
+(or (not x5822) x111)
+(or (not x5822) x110)
+(or (not x5822) x5820)
+(or x5805 (not x5774))
+(or x5805 (not x5775))
+(or x5805 (not x5776))
+(or x5805 (not x5777))
+(or x5805 (not x5778))
+(or x5805 (not x5779))
+(or x5805 (not x5822))
+(or x5805 x113)
+(or x5805 (not x112))
+(or x5805 (not x111))
+(or x5805 x110)
+(or x5805 x5796)
+(or x5805 x5795)
+(or x5805 x114)
+(or x5805 (not x115))
+(or x5774 x5775 x5776 x5777 x5778 x5779 x5822 (not x113) x112 x111 (not x110) (not x5796) (not x5795) (not x114) x115 (not x5805))
+(or x5832 (not x5774))
+(or x5832 (not x5775))
+(or x5832 (not x5776))
+(or x5832 (not x5777))
+(or x5832 (not x5778))
+(or x5832 (not x5779))
+(or x5832 (not x5822))
+(or x5832 x113)
+(or x5832 (not x112))
+(or x5832 (not x111))
+(or x5832 x110)
+(or x5832 x5796)
+(or x5832 x5795)
+(or x5832 x114)
+(or x5832 (not x115))
+(or x5832 x5833)
+(or x5774 x5775 x5776 x5777 x5778 x5779 x5822 (not x113) x112 x111 (not x110) (not x5796) (not x5795) (not x114) x115 (not x5833) (not x5832))
+(or x113 (not x112) (not x111) x110 (not x114) x115 x5779)
+(or (not x5779) (not x113))
+(or (not x5779) x112)
+(or (not x5779) x111)
+(or (not x5779) (not x110))
+(or (not x5779) x114)
+(or (not x5779) (not x115))
+(or x5804 (not x5774))
+(or x5804 (not x5775))
+(or x5804 (not x5776))
+(or x5804 (not x5777))
+(or x5804 (not x5778))
+(or x5804 (not x5779))
+(or x5804 (not x113))
+(or x5804 x112)
+(or x5804 x111)
+(or x5804 x110)
+(or x5804 (not x5780))
+(or x5804 (not x5781))
+(or x5774 x5775 x5776 x5777 x5778 x5779 x113 (not x112) (not x111) (not x110) x5780 x5781 (not x5804))
+(or x113 (not x112) x111 (not x110) (not x5820) x5778)
+(or (not x5778) (not x113))
+(or (not x5778) x112)
+(or (not x5778) (not x111))
+(or (not x5778) x110)
+(or (not x5778) x5820)
+(or x5803 (not x5774))
+(or x5803 (not x5775))
+(or x5803 (not x5776))
+(or x5803 (not x5777))
+(or x5803 (not x5778))
+(or x5803 (not x113))
+(or x5803 x112)
+(or x5803 x111)
+(or x5803 (not x110))
+(or x5803 x114)
+(or x5803 (not x115))
+(or x5803 (not x5783))
+(or x5774 x5775 x5776 x5777 x5778 x113 (not x112) (not x111) x110 (not x114) x115 x5783 (not x5803))
+(or x113 (not x112) x111 x110 (not x114) x115 x5777)
+(or (not x5777) (not x113))
+(or (not x5777) x112)
+(or (not x5777) (not x111))
+(or (not x5777) (not x110))
+(or (not x5777) x114)
+(or (not x5777) (not x115))
+(or x5789 (not x5774))
+(or x5789 (not x5775))
+(or x5789 (not x5776))
+(or x5789 (not x5777))
+(or x5789 (not x113))
+(or x5789 x112)
+(or x5789 (not x111))
+(or x5789 x110)
+(or x5789 (not x5780))
+(or x5774 x5775 x5776 x5777 x113 (not x112) x111 (not x110) x5780 (not x5789))
+(or x5834 (not x5774))
+(or x5834 (not x5775))
+(or x5834 (not x5776))
+(or x5834 (not x5777))
+(or x5834 (not x113))
+(or x5834 x112)
+(or x5834 (not x111))
+(or x5834 x110)
+(or x5834 (not x5780))
+(or x5834 (not x5809))
+(or x5774 x5775 x5776 x5777 x113 (not x112) x111 (not x110) x5780 x5809 (not x5834))
+(or x113 x112 (not x111) (not x110) (not x5820) x5776)
+(or (not x5776) (not x113))
+(or (not x5776) (not x112))
+(or (not x5776) x111)
+(or (not x5776) x110)
+(or (not x5776) x5820)
+(or x5788 (not x5774))
+(or x5788 (not x5775))
+(or x5788 (not x5776))
+(or x5788 (not x113))
+(or x5788 x112)
+(or x5788 (not x111))
+(or x5788 (not x110))
+(or x5788 x114)
+(or x5788 (not x115))
+(or x5774 x5775 x5776 x113 (not x112) x111 x110 (not x114) x115 (not x5788))
+(or x5835 (not x5774))
+(or x5835 (not x5775))
+(or x5835 (not x5776))
+(or x5835 (not x113))
+(or x5835 x112)
+(or x5835 (not x111))
+(or x5835 (not x110))
+(or x5835 x114)
+(or x5835 (not x115))
+(or x5835 (not x5811))
+(or x5774 x5775 x5776 x113 (not x112) x111 x110 (not x114) x115 x5811 (not x5835))
+(or x113 x112 (not x111) x110 (not x5796) (not x5795) (not x5820) x5775)
+(or (not x5775) (not x113))
+(or (not x5775) (not x112))
+(or (not x5775) x111)
+(or (not x5775) (not x110))
+(or (not x5775) x5796)
+(or (not x5775) x5795)
+(or (not x5775) x5820)
+(or x5787 (not x5774))
+(or x5787 (not x5775))
+(or x5787 (not x113))
+(or x5787 (not x112))
+(or x5787 x111)
+(or x5787 x110)
+(or x5787 (not x5780))
+(or x5774 x5775 x113 x112 (not x111) (not x110) x5780 (not x5787))
+(or x5816 (not x5774))
+(or x5816 (not x5775))
+(or x5816 (not x113))
+(or x5816 (not x112))
+(or x5816 x111)
+(or x5816 x110)
+(or x5816 (not x5780))
+(or x5816 (not x5793))
+(or x5774 x5775 x113 x112 (not x111) (not x110) x5780 x5793 (not x5816))
+(or x113 x112 x111 (not x110) x5774)
+(or (not x5774) (not x113))
+(or (not x5774) (not x112))
+(or (not x5774) (not x111))
+(or (not x5774) x110)
+(or x5786 (not x5774))
+(or x5786 (not x113))
+(or x5786 (not x112))
+(or x5786 x111)
+(or x5786 (not x110))
+(or x5786 x5796)
+(or x5786 x5795)
+(or x5786 (not x5780))
+(or x5774 x113 x112 (not x111) x110 (not x5796) (not x5795) x5780 (not x5786))
+(or x5815 (not x5774))
+(or x5815 (not x113))
+(or x5815 (not x112))
+(or x5815 x111)
+(or x5815 (not x110))
+(or x5815 x5796)
+(or x5815 x5795)
+(or x5815 (not x5780))
+(or x5815 (not x5797))
+(or x5774 x113 x112 (not x111) x110 (not x5796) (not x5795) x5780 x5797 (not x5815))
+(or x5799 (not x5798))
+(or x5799 x5812)
+(or x5798 (not x5812) (not x5799))
+(or x5836 (not x113))
+(or x5836 (not x112))
+(or x5836 (not x111))
+(or x5836 x110)
+(or x5836 (not x5798))
+(or x5836 x5812)
+(or x113 x112 x111 (not x110) x5798 (not x5812) (not x5836))
+(or (not x5836) (not x5815) (not x5816) (not x5835) (not x5834) (not x5803) (not x5804) (not x5832) (not x5830) (not x5828) (not x5826) (not x5790) x5837)
+(or (not x5837) x5836)
+(or (not x5837) x5815)
+(or (not x5837) x5816)
+(or (not x5837) x5835)
+(or (not x5837) x5834)
+(or (not x5837) x5803)
+(or (not x5837) x5804)
+(or (not x5837) x5832)
+(or (not x5837) x5830)
+(or (not x5837) x5828)
+(or (not x5837) x5826)
+(or (not x5837) x5790)
+(or x5838 x5839 (not x5840) x5841)
+(or (not x5841) (not x5838))
+(or (not x5841) (not x5839))
+(or (not x5841) x5840)
+(or (not x5838) x5839 (not x5842) x5843)
+(or (not x5843) x5838)
+(or (not x5843) (not x5839))
+(or (not x5843) x5842)
+(or x5844 (not x5843))
+(or x5844 (not x5841))
+(or x5843 x5841 (not x5844))
+(or (not x5845) (not x5846) x5847 x5848 (not x5849) x5850)
+(or (not x5850) x5845)
+(or (not x5850) x5846)
+(or (not x5850) (not x5847))
+(or (not x5850) (not x5848))
+(or (not x5850) x5849)
+(or x5840 (not x5839))
+(or x5840 (not x5850))
+(or x5839 x5850 (not x5840))
+(or (not x5839) (not x5840) x5851)
+(or (not x5851) x5839)
+(or (not x5851) x5840)
+(or x5839 (not x5838) x5852)
+(or (not x5852) (not x5839))
+(or (not x5852) x5838)
+(or x5842 (not x5853))
+(or x5842 x5846)
+(or x5842 (not x5847))
+(or x5842 (not x5848))
+(or x5842 x5849)
+(or x5853 (not x5846) x5847 x5848 (not x5849) (not x5842))
+(or x5839 (not x5842) x5854)
+(or (not x5854) (not x5839))
+(or (not x5854) x5842)
+(or x5855 (not x5854))
+(or x5855 (not x5852))
+(or x5854 x5852 (not x5855))
+(or (not x5856) (not x5855) x5857)
+(or (not x5857) x5856)
+(or (not x5857) x5855)
+(or x5858 (not x5857))
+(or x5858 (not x5851))
+(or x5857 x5851 (not x5858))
+(or x5859 (not x5839))
+(or x5859 (not x5860))
+(or x5859 (not x5861))
+(or x5839 x5860 x5861 (not x5859))
+(or x5862 (not x5839))
+(or x5862 x5866)
+(or x5862 (not x5865))
+(or x5862 (not x5864))
+(or x5862 (not x5863))
+(or x5839 (not x5866) x5865 x5864 x5863 (not x5862))
+(or x5867 x5868)
+(or x5867 x5869)
+(or (not x5868) (not x5869) (not x5867))
+(or (not x5867) (not x5868) x5870)
+(or (not x5870) x5867)
+(or (not x5870) x5868)
+(or x5871 x5839)
+(or x5871 x5872)
+(or x5871 (not x5870))
+(or (not x5839) (not x5872) x5870 (not x5871))
+(or (not x5871) (not x5862) (not x5859) x5873)
+(or (not x5873) x5871)
+(or (not x5873) x5862)
+(or (not x5873) x5859)
+(or (not x5866) x5865 x5864 x5863 (not x5874) x5875)
+(or (not x5875) x5866)
+(or (not x5875) (not x5865))
+(or (not x5875) (not x5864))
+(or (not x5875) (not x5863))
+(or (not x5875) x5874)
+(or (not x5876) (not x5877) x5878 (not x5879) (not x5880) (not x5881) (not x5882) (not x5883) (not x5884) (not x5885) (not x5886) (not x5887) x5888)
+(or (not x5888) x5876)
+(or (not x5888) x5877)
+(or (not x5888) (not x5878))
+(or (not x5888) x5879)
+(or (not x5888) x5880)
+(or (not x5888) x5881)
+(or (not x5888) x5882)
+(or (not x5888) x5883)
+(or (not x5888) x5884)
+(or (not x5888) x5885)
+(or (not x5888) x5886)
+(or (not x5888) x5887)
+(or x5889 (not x5888))
+(or x5889 (not x5875))
+(or x5888 x5875 (not x5889))
+(or x5890 x5891 x5892)
+(or (not x5892) (not x5890))
+(or (not x5892) (not x5891))
+(or x5893 x5796)
+(or x5893 x5795)
+(or x5893 (not x5894))
+(or x5893 (not x5895))
+(or x5893 (not x5892))
+(or (not x5796) (not x5795) x5894 x5895 x5892 (not x5893))
+(or (not x5896) (not x5893) x5897)
+(or (not x5897) x5896)
+(or (not x5897) x5893)
+(or x5898 (not x5890))
+(or x5898 (not x5899))
+(or x5890 x5899 (not x5898))
+(or (not x5891) (not x5898) x5900)
+(or (not x5900) x5891)
+(or (not x5900) x5898)
+(or x5901 (not x5900))
+(or x5901 (not x5897))
+(or x5900 x5897 (not x5901))
+(or x5902 (not x5796) (not x5795) (not x5903) (not x5904) x5899)
+(or (not x5899) (not x5902))
+(or (not x5899) x5796)
+(or (not x5899) x5795)
+(or (not x5899) x5903)
+(or (not x5899) x5904)
+(or (not x5890) x5902 (not x5796) (not x5795) (not x5903) (not x5904) x5905)
+(or (not x5905) x5890)
+(or (not x5905) (not x5902))
+(or (not x5905) x5796)
+(or (not x5905) x5795)
+(or (not x5905) x5903)
+(or (not x5905) x5904)
+(or x5906 x5796)
+(or x5906 x5795)
+(or x5906 (not x5894))
+(or x5906 (not x5895))
+(or x5906 x5890)
+(or (not x5796) (not x5795) x5894 x5895 (not x5890) (not x5906))
+(or x5896 (not x5902))
+(or x5896 x5796)
+(or x5896 x5795)
+(or x5896 (not x5894))
+(or x5896 (not x5895))
+(or x5902 (not x5796) (not x5795) x5894 x5895 (not x5896))
+(or (not x5896) (not x5906) x5907)
+(or (not x5907) x5896)
+(or (not x5907) x5906)
+(or x5908 (not x5907))
+(or x5908 (not x5905))
+(or x5907 x5905 (not x5908))
+(or x5846 (not x5849) x5909)
+(or (not x5909) (not x5846))
+(or (not x5909) x5849)
+(or x5910 (not x5911))
+(or x5910 x5877)
+(or x5910 x5912)
+(or x5910 (not x5909))
+(or x5911 (not x5877) (not x5912) x5909 (not x5910))
+(or (not x5913) (not x5876) (not x5910) x5914)
+(or (not x5914) x5913)
+(or (not x5914) x5876)
+(or (not x5914) x5910)
+(or x5915 (not x5846))
+(or x5915 x5849)
+(or x5846 (not x5849) (not x5915))
+(or (not x5916) (not x5877) (not x5912) (not x5915) x5917)
+(or (not x5917) x5916)
+(or (not x5917) x5877)
+(or (not x5917) x5912)
+(or (not x5917) x5915)
+(or x5918 (not x5860))
+(or x5918 (not x5917))
+(or x5860 x5917 (not x5918))
+(or (not x5918) (not x5876) x5919)
+(or (not x5919) x5918)
+(or (not x5919) x5876)
+(or x5920 (not x5919))
+(or x5920 (not x5914))
+(or x5919 x5914 (not x5920))
+(or x5921 (not x5922))
+(or x5921 x5902)
+(or x5922 (not x5902) (not x5921))
+(or (not x5846) (not x5796) (not x5795) (not x5923) (not x5848) (not x5924) (not x5925) x5902 x5926 x5927 x5928 x5929 x5930 (not x5846) x5931 x5878 x5932 x5933 x5839 x5934 x5935)
+(or (not x5935) x5846)
+(or (not x5935) x5796)
+(or (not x5935) x5795)
+(or (not x5935) x5923)
+(or (not x5935) x5848)
+(or (not x5935) x5924)
+(or (not x5935) x5925)
+(or (not x5935) (not x5902))
+(or (not x5935) (not x5926))
+(or (not x5935) (not x5927))
+(or (not x5935) (not x5928))
+(or (not x5935) (not x5929))
+(or (not x5935) (not x5930))
+(or (not x5935) x5846)
+(or (not x5935) (not x5931))
+(or (not x5935) (not x5878))
+(or (not x5935) (not x5932))
+(or (not x5935) (not x5933))
+(or (not x5935) (not x5839))
+(or (not x5935) (not x5934))
+(or (not x5936) (not x5937) (not x5796) (not x5795) (not x5902) x5846 x5926 x5927 x5928 x5929 x5931 x5878 x5932 x5933 x5839 x5934 x5938)
+(or (not x5938) x5936)
+(or (not x5938) x5937)
+(or (not x5938) x5796)
+(or (not x5938) x5795)
+(or (not x5938) x5902)
+(or (not x5938) (not x5846))
+(or (not x5938) (not x5926))
+(or (not x5938) (not x5927))
+(or (not x5938) (not x5928))
+(or (not x5938) (not x5929))
+(or (not x5938) (not x5931))
+(or (not x5938) (not x5878))
+(or (not x5938) (not x5932))
+(or (not x5938) (not x5933))
+(or (not x5938) (not x5839))
+(or (not x5938) (not x5934))
+(or x5939 (not x5938))
+(or x5939 (not x5935))
+(or x5938 x5935 (not x5939))
+(or x5926 x5928 x5929 (not x5927) x5931 x5878 x5932 x5933 x5839 x5934 x5902 x5846 x5940)
+(or (not x5940) (not x5926))
+(or (not x5940) (not x5928))
+(or (not x5940) (not x5929))
+(or (not x5940) x5927)
+(or (not x5940) (not x5931))
+(or (not x5940) (not x5878))
+(or (not x5940) (not x5932))
+(or (not x5940) (not x5933))
+(or (not x5940) (not x5839))
+(or (not x5940) (not x5934))
+(or (not x5940) (not x5902))
+(or (not x5940) (not x5846))
+(or (not x5866) x5865 x5864 x5863 (not x5839) x5934 x5931 x5846 x5902 x5932 x5933 (not x5941) (not x5942) x5878 x5926 x5927 x5928 x5929 x5943)
+(or (not x5943) x5866)
+(or (not x5943) (not x5865))
+(or (not x5943) (not x5864))
+(or (not x5943) (not x5863))
+(or (not x5943) x5839)
+(or (not x5943) (not x5934))
+(or (not x5943) (not x5931))
+(or (not x5943) (not x5846))
+(or (not x5943) (not x5902))
+(or (not x5943) (not x5932))
+(or (not x5943) (not x5933))
+(or (not x5943) x5941)
+(or (not x5943) x5942)
+(or (not x5943) (not x5878))
+(or (not x5943) (not x5926))
+(or (not x5943) (not x5927))
+(or (not x5943) (not x5928))
+(or (not x5943) (not x5929))
+(or x5944 (not x5943))
+(or x5944 (not x5940))
+(or x5943 x5940 (not x5944))
+(or (not x5796) (not x5795) (not x5945) (not x5944) x5946)
+(or (not x5946) x5796)
+(or (not x5946) x5795)
+(or (not x5946) x5945)
+(or (not x5946) x5944)
+(or (not x5796) (not x5795) (not x5902) x5846 x5926 x5927 x5928 x5929 x5931 x5878 x5932 x5933 x5839 x5934 (not x5947) (not x5948) (not x5949) (not x5950) (not x5951) (not x5912) x5952)
+(or (not x5952) x5796)
+(or (not x5952) x5795)
+(or (not x5952) x5902)
+(or (not x5952) (not x5846))
+(or (not x5952) (not x5926))
+(or (not x5952) (not x5927))
+(or (not x5952) (not x5928))
+(or (not x5952) (not x5929))
+(or (not x5952) (not x5931))
+(or (not x5952) (not x5878))
+(or (not x5952) (not x5932))
+(or (not x5952) (not x5933))
+(or (not x5952) (not x5839))
+(or (not x5952) (not x5934))
+(or (not x5952) x5947)
+(or (not x5952) x5948)
+(or (not x5952) x5949)
+(or (not x5952) x5950)
+(or (not x5952) x5951)
+(or (not x5952) x5912)
+(or (not x5945) x5927 x5928 x5929 x5931 x5878 x5932 x5933 x5839 x5934 x5902 x5846 x5953)
+(or (not x5953) x5945)
+(or (not x5953) (not x5927))
+(or (not x5953) (not x5928))
+(or (not x5953) (not x5929))
+(or (not x5953) (not x5931))
+(or (not x5953) (not x5878))
+(or (not x5953) (not x5932))
+(or (not x5953) (not x5933))
+(or (not x5953) (not x5839))
+(or (not x5953) (not x5934))
+(or (not x5953) (not x5902))
+(or (not x5953) (not x5846))
+(or x5954 (not x5955))
+(or x5954 (not x5953))
+(or x5955 x5953 (not x5954))
+(or (not x5796) (not x5795) (not x5926) (not x5954) x5956)
+(or (not x5956) x5796)
+(or (not x5956) x5795)
+(or (not x5956) x5926)
+(or (not x5956) x5954)
+(or x5931 x5932 (not x5933) (not x5796) (not x5795) x5839 x5934 x5902 x5846 x5878 x5926 x5927 x5928 x5929 x5957)
+(or (not x5957) (not x5931))
+(or (not x5957) (not x5932))
+(or (not x5957) x5933)
+(or (not x5957) x5796)
+(or (not x5957) x5795)
+(or (not x5957) (not x5839))
+(or (not x5957) (not x5934))
+(or (not x5957) (not x5902))
+(or (not x5957) (not x5846))
+(or (not x5957) (not x5878))
+(or (not x5957) (not x5926))
+(or (not x5957) (not x5927))
+(or (not x5957) (not x5928))
+(or (not x5957) (not x5929))
+(or x5958 (not x5957))
+(or x5958 (not x5956))
+(or x5957 x5956 (not x5958))
+(or x5959 x5927)
+(or x5959 x5934)
+(or (not x5927) (not x5934) (not x5959))
+(or x5960 (not x5927))
+(or x5960 (not x5945))
+(or x5960 (not x5839))
+(or x5927 x5945 x5839 (not x5960))
+(or x5934 x5927 (not x5961) x5962)
+(or (not x5962) (not x5934))
+(or (not x5962) (not x5927))
+(or (not x5962) x5961)
+(or x5963 x5839)
+(or x5963 (not x5962))
+(or (not x5839) x5962 (not x5963))
+(or x5964 x5945)
+(or x5964 (not x5839))
+(or x5964 (not x5934))
+(or (not x5945) x5839 x5934 (not x5964))
+(or (not x5796) (not x5795) x5878 x5926 x5931 x5846 x5902 x5932 x5933 x5928 x5929 (not x5964) (not x5963) (not x5960) (not x5959) x5965)
+(or (not x5965) x5796)
+(or (not x5965) x5795)
+(or (not x5965) (not x5878))
+(or (not x5965) (not x5926))
+(or (not x5965) (not x5931))
+(or (not x5965) (not x5846))
+(or (not x5965) (not x5902))
+(or (not x5965) (not x5932))
+(or (not x5965) (not x5933))
+(or (not x5965) (not x5928))
+(or (not x5965) (not x5929))
+(or (not x5965) x5964)
+(or (not x5965) x5963)
+(or (not x5965) x5960)
+(or (not x5965) x5959)
+(or (not x5796) (not x5795) (not x5966) x5967)
+(or (not x5967) x5796)
+(or (not x5967) x5795)
+(or (not x5967) x5966)
+(or x5887 (not x5968))
+(or x5887 (not x5969))
+(or x5968 x5969 (not x5887))
+(or x5970 (not x5971))
+(or x5970 x5928)
+(or x5971 (not x5928) (not x5970))
+(or x5972 (not x5839))
+(or x5972 (not x5928))
+(or x5972 (not x5926))
+(or x5972 (not x5927))
+(or x5839 x5928 x5926 x5927 (not x5972))
+(or x5973 x5927)
+(or x5973 x5926)
+(or (not x5927) (not x5926) (not x5973))
+(or x5929 (not x5973) (not x5972) (not x5970) x5974)
+(or (not x5974) (not x5929))
+(or (not x5974) x5973)
+(or (not x5974) x5972)
+(or (not x5974) x5970)
+(or x5886 (not x5934))
+(or x5886 (not x5931))
+(or x5886 (not x5846))
+(or x5886 (not x5902))
+(or x5886 (not x5932))
+(or x5886 (not x5933))
+(or x5886 (not x5974))
+(or x5934 x5931 x5846 x5902 x5932 x5933 x5974 (not x5886))
+(or x5885 x5933)
+(or x5885 x5932)
+(or (not x5933) (not x5932) (not x5885))
+(or x5884 (not x5975))
+(or x5884 x5934)
+(or x5975 (not x5934) (not x5884))
+(or x5883 x5846)
+(or x5883 (not x5976))
+(or (not x5846) x5976 (not x5883))
+(or (not x5866) x5865 x5864 x5863 x5945 x5977)
+(or (not x5977) x5866)
+(or (not x5977) (not x5865))
+(or (not x5977) (not x5864))
+(or (not x5977) (not x5863))
+(or (not x5977) (not x5945))
+(or (not x5866) x5865 x5864 x5863 (not x5945) (not x5861) x5978)
+(or (not x5978) x5866)
+(or (not x5978) (not x5865))
+(or (not x5978) (not x5864))
+(or (not x5978) (not x5863))
+(or (not x5978) x5945)
+(or (not x5978) x5861)
+(or x5961 (not x5978))
+(or x5961 (not x5977))
+(or x5978 x5977 (not x5961))
+(or (not x5866) x5865 x5864 x5863 (not x5945) x5979)
+(or (not x5979) x5866)
+(or (not x5979) (not x5865))
+(or (not x5979) (not x5864))
+(or (not x5979) (not x5863))
+(or (not x5979) x5945)
+(or x5980 (not x5979))
+(or x5980 (not x5978))
+(or x5980 (not x5977))
+(or x5979 x5978 x5977 (not x5980))
+(or x5928 x5926 x5927 x5934 x5931 x5846 x5902 x5932 x5933 (not x5980) x5981)
+(or (not x5981) (not x5928))
+(or (not x5981) (not x5926))
+(or (not x5981) (not x5927))
+(or (not x5981) (not x5934))
+(or (not x5981) (not x5931))
+(or (not x5981) (not x5846))
+(or (not x5981) (not x5902))
+(or (not x5981) (not x5932))
+(or (not x5981) (not x5933))
+(or (not x5981) x5980)
+(or x5882 x5839)
+(or x5882 (not x5981))
+(or (not x5839) x5981 (not x5882))
+(or x5881 (not x5982))
+(or x5881 x5902)
+(or x5982 (not x5902) (not x5881))
+(or x5880 (not x5983))
+(or x5880 x5931)
+(or x5983 (not x5931) (not x5880))
+(or x5879 x5930)
+(or x5879 x5846)
+(or (not x5930) (not x5846) (not x5879))
+(or (not x5912) (not x5796) (not x5795) x5878 (not x5879) (not x5880) (not x5881) (not x5882) (not x5883) (not x5884) (not x5885) (not x5886) (not x5887) (not x5984) (not x5949) (not x5985) (not x5986) (not x5951) (not x5987) (not x5876) x5988)
+(or (not x5988) x5912)
+(or (not x5988) x5796)
+(or (not x5988) x5795)
+(or (not x5988) (not x5878))
+(or (not x5988) x5879)
+(or (not x5988) x5880)
+(or (not x5988) x5881)
+(or (not x5988) x5882)
+(or (not x5988) x5883)
+(or (not x5988) x5884)
+(or (not x5988) x5885)
+(or (not x5988) x5886)
+(or (not x5988) x5887)
+(or (not x5988) x5984)
+(or (not x5988) x5949)
+(or (not x5988) x5985)
+(or (not x5988) x5986)
+(or (not x5988) x5951)
+(or (not x5988) x5987)
+(or (not x5988) x5876)
+(or x5989 x5796)
+(or x5989 x5795)
+(or x5989 (not x5878))
+(or x5989 (not x5990))
+(or x5989 (not x5991))
+(or x5989 (not x5992))
+(or x5989 (not x5993))
+(or x5989 (not x5994))
+(or x5989 (not x5995))
+(or x5989 (not x5996))
+(or x5989 (not x5997))
+(or x5989 (not x5998))
+(or x5989 (not x5999))
+(or x5989 (not x6000))
+(or x5989 (not x6001))
+(or x5989 (not x6002))
+(or x5989 (not x6003))
+(or x5989 (not x6004))
+(or x5989 (not x5860))
+(or (not x5796) (not x5795) x5878 x5990 x5991 x5992 x5993 x5994 x5995 x5996 x5997 x5998 x5999 x6000 x6001 x6002 x6003 x6004 x5860 (not x5989))
+(or x6005 x5796)
+(or x6005 x5795)
+(or x6005 (not x5878))
+(or x6005 (not x5990))
+(or x6005 (not x5991))
+(or x6005 (not x5992))
+(or x6005 (not x5993))
+(or x6005 (not x5994))
+(or x6005 (not x5995))
+(or x6005 (not x5996))
+(or x6005 (not x5997))
+(or x6005 (not x5998))
+(or x6005 (not x5999))
+(or x6005 (not x6000))
+(or x6005 (not x6001))
+(or x6005 (not x6002))
+(or x6005 (not x6003))
+(or x6005 (not x6004))
+(or x6005 x5874)
+(or (not x5796) (not x5795) x5878 x5990 x5991 x5992 x5993 x5994 x5995 x5996 x5997 x5998 x5999 x6000 x6001 x6002 x6003 x6004 (not x5874) (not x6005))
+(or (not x6005) (not x5989) x6006)
+(or (not x6006) x6005)
+(or (not x6006) x5989)
+(or x6007 (not x6006))
+(or x6007 (not x5988))
+(or x6006 x5988 (not x6007))
+(or (not x5876) (not x6008) x6009)
+(or (not x6009) x5876)
+(or (not x6009) x6008)
+(or (not x5866) x5865 x5864 x5863 (not x6010) x6011)
+(or (not x6011) x5866)
+(or (not x6011) (not x5865))
+(or (not x6011) (not x5864))
+(or (not x6011) (not x5863))
+(or (not x6011) x6010)
+(or x6012 (not x6011))
+(or x6012 (not x6009))
+(or x6011 x6009 (not x6012))
+(or (not x5876) (not x6013) x6014)
+(or (not x6014) x5876)
+(or (not x6014) x6013)
+(or x6015 (not x5860))
+(or x6015 (not x6014))
+(or x5860 x6014 (not x6015))
+(or x5932 x5933 (not x5931) (not x5796) (not x5795) x5839 x5934 x5902 x5846 x5878 x5926 x5927 x5928 x5929 x6016)
+(or (not x6016) (not x5932))
+(or (not x6016) (not x5933))
+(or (not x6016) x5931)
+(or (not x6016) x5796)
+(or (not x6016) x5795)
+(or (not x6016) (not x5839))
+(or (not x6016) (not x5934))
+(or (not x6016) (not x5902))
+(or (not x6016) (not x5846))
+(or (not x6016) (not x5878))
+(or (not x6016) (not x5926))
+(or (not x6016) (not x5927))
+(or (not x6016) (not x5928))
+(or (not x6016) (not x5929))
+(or (not x5948) (not x5949) (not x5950) (not x5951) x6017)
+(or (not x6017) x5948)
+(or (not x6017) x5949)
+(or (not x6017) x5950)
+(or (not x6017) x5951)
+(or x6018 (not x6019))
+(or x6018 (not x6020))
+(or x6018 (not x6001))
+(or x6018 (not x6000))
+(or x6018 (not x6021))
+(or x6018 (not x6022))
+(or x6018 (not x6004))
+(or x6018 (not x6003))
+(or x6018 (not x5890))
+(or x6018 (not x5891))
+(or x6019 x6020 x6001 x6000 x6021 x6022 x6004 x6003 x5890 x5891 (not x6018))
+(or (not x5984) (not x5949) (not x5985) (not x5986) (not x5951) (not x5987) x5922)
+(or (not x5922) x5984)
+(or (not x5922) x5949)
+(or (not x5922) x5985)
+(or (not x5922) x5986)
+(or (not x5922) x5951)
+(or (not x5922) x5987)
+(or x5936 (not x5922))
+(or x5936 (not x6020))
+(or x5936 (not x6000))
+(or x5936 (not x6022))
+(or x5936 (not x6003))
+(or x5936 x5912)
+(or x5922 x6020 x6000 x6022 x6003 (not x5912) (not x5936))
+(or (not x5936) (not x6018) (not x5948) (not x5949) (not x5950) (not x5951) x5846 x5926 x5927 x5928 x5929 x5931 x5878 x5932 x5933 x5839 x5934 x6023)
+(or (not x6023) x5936)
+(or (not x6023) x6018)
+(or (not x6023) x5948)
+(or (not x6023) x5949)
+(or (not x6023) x5950)
+(or (not x6023) x5951)
+(or (not x6023) (not x5846))
+(or (not x6023) (not x5926))
+(or (not x6023) (not x5927))
+(or (not x6023) (not x5928))
+(or (not x6023) (not x5929))
+(or (not x6023) (not x5931))
+(or (not x6023) (not x5878))
+(or (not x6023) (not x5932))
+(or (not x6023) (not x5933))
+(or (not x6023) (not x5839))
+(or (not x6023) (not x5934))
+(or x5923 (not x5849))
+(or x5923 (not x5847))
+(or x5923 (not x5848))
+(or x5923 x5877)
+(or x5923 x5913)
+(or x5849 x5847 x5848 (not x5877) (not x5913) (not x5923))
+(or (not x5923) (not x5848) (not x5924) (not x5925) x5902 x5926 x5927 x5928 x5929 x5930 (not x5846) x5931 x5878 x5932 x5933 x5839 x5934 x5955)
+(or (not x5955) x5923)
+(or (not x5955) x5848)
+(or (not x5955) x5924)
+(or (not x5955) x5925)
+(or (not x5955) (not x5902))
+(or (not x5955) (not x5926))
+(or (not x5955) (not x5927))
+(or (not x5955) (not x5928))
+(or (not x5955) (not x5929))
+(or (not x5955) (not x5930))
+(or (not x5955) x5846)
+(or (not x5955) (not x5931))
+(or (not x5955) (not x5878))
+(or (not x5955) (not x5932))
+(or (not x5955) (not x5933))
+(or (not x5955) (not x5839))
+(or (not x5955) (not x5934))
+(or x6024 (not x5955))
+(or x6024 (not x6023))
+(or x5955 x6023 (not x6024))
+(or (not x5796) (not x5795) (not x5902) (not x6024) x6025)
+(or (not x6025) x5796)
+(or (not x6025) x5795)
+(or (not x6025) x5902)
+(or (not x6025) x6024)
+(or x6026 (not x6025))
+(or x6026 (not x6016))
+(or x6025 x6016 (not x6026))
+(or (not x6027) (not x6028) x5998)
+(or (not x5998) x6027)
+(or (not x5998) x6028)
+(or (not x6029) (not x5928) x6030)
+(or (not x6030) x6029)
+(or (not x6030) x5928)
+(or x5839 x5928 x5926 x5927 x6031)
+(or (not x6031) (not x5839))
+(or (not x6031) (not x5928))
+(or (not x6031) (not x5926))
+(or (not x6031) (not x5927))
+(or (not x5927) (not x5926) x6032)
+(or (not x6032) x5927)
+(or (not x6032) x5926)
+(or x6033 (not x5929))
+(or x6033 (not x6032))
+(or x6033 (not x6031))
+(or x6033 (not x6030))
+(or x5929 x6032 x6031 x6030 (not x6033))
+(or x5934 x5931 x5846 x5902 x5932 x5933 x5969)
+(or (not x5969) (not x5934))
+(or (not x5969) (not x5931))
+(or (not x5969) (not x5846))
+(or (not x5969) (not x5902))
+(or (not x5969) (not x5932))
+(or (not x5969) (not x5933))
+(or x5934 x5931 x5846 x5902 x5932 x5933 (not x6033) x5997)
+(or (not x5997) (not x5934))
+(or (not x5997) (not x5931))
+(or (not x5997) (not x5846))
+(or (not x5997) (not x5902))
+(or (not x5997) (not x5932))
+(or (not x5997) (not x5933))
+(or (not x5997) x6033)
+(or (not x5933) (not x5932) x5996)
+(or (not x5996) x5933)
+(or (not x5996) x5932)
+(or (not x6034) (not x5934) x5995)
+(or (not x5995) x6034)
+(or (not x5995) x5934)
+(or (not x5846) (not x6035) x5994)
+(or (not x5994) x5846)
+(or (not x5994) x6035)
+(or x5942 x5866)
+(or x5942 (not x5865))
+(or x5942 (not x5864))
+(or x5942 (not x5863))
+(or x5942 (not x5945))
+(or (not x5866) x5865 x5864 x5863 x5945 (not x5942))
+(or x5941 x5866)
+(or x5941 (not x5865))
+(or x5941 (not x5864))
+(or x5941 (not x5863))
+(or x5941 x5945)
+(or x5941 x5861)
+(or (not x5866) x5865 x5864 x5863 (not x5945) (not x5861) (not x5941))
+(or x6036 x5866)
+(or x6036 (not x5865))
+(or x6036 (not x5864))
+(or x6036 (not x5863))
+(or x6036 x5945)
+(or (not x5866) x5865 x5864 x5863 (not x5945) (not x6036))
+(or (not x6036) (not x5941) (not x5942) x6037)
+(or (not x6037) x6036)
+(or (not x6037) x5941)
+(or (not x6037) x5942)
+(or x6028 (not x5934))
+(or x6028 (not x5931))
+(or x6028 (not x5846))
+(or x6028 (not x5902))
+(or x6028 (not x5932))
+(or x6028 (not x5933))
+(or x5934 x5931 x5846 x5902 x5932 x5933 (not x6028))
+(or x6038 (not x5928))
+(or x6038 (not x5926))
+(or x6038 (not x5927))
+(or x6038 (not x5934))
+(or x6038 (not x5931))
+(or x6038 (not x5846))
+(or x6038 (not x5902))
+(or x6038 (not x5932))
+(or x6038 (not x5933))
+(or x6038 (not x6037))
+(or x5928 x5926 x5927 x5934 x5931 x5846 x5902 x5932 x5933 x6037 (not x6038))
+(or (not x5839) (not x6038) x5993)
+(or (not x5993) x5839)
+(or (not x5993) x6038)
+(or (not x6039) (not x5902) x5992)
+(or (not x5992) x6039)
+(or (not x5992) x5902)
+(or (not x6040) (not x5931) x5991)
+(or (not x5991) x6040)
+(or (not x5991) x5931)
+(or (not x5930) (not x5846) x5990)
+(or (not x5990) x5930)
+(or (not x5990) x5846)
+(or x6041 x5796)
+(or x6041 x5795)
+(or x6041 (not x5878))
+(or x6041 (not x5990))
+(or x6041 (not x5991))
+(or x6041 (not x5992))
+(or x6041 (not x5993))
+(or x6041 (not x5994))
+(or x6041 (not x5995))
+(or x6041 (not x5996))
+(or x6041 (not x5997))
+(or x6041 (not x5998))
+(or (not x5796) (not x5795) x5878 x5990 x5991 x5992 x5993 x5994 x5995 x5996 x5997 x5998 (not x6041))
+(or x5929 (not x5796) (not x5795) x5926 x5927 (not x5928) x5931 x5878 x5932 x5933 x5839 x5934 x5902 x5846 x6042)
+(or (not x6042) (not x5929))
+(or (not x6042) x5796)
+(or (not x6042) x5795)
+(or (not x6042) (not x5926))
+(or (not x6042) (not x5927))
+(or (not x6042) x5928)
+(or (not x6042) (not x5931))
+(or (not x6042) (not x5878))
+(or (not x6042) (not x5932))
+(or (not x6042) (not x5933))
+(or (not x6042) (not x5839))
+(or (not x6042) (not x5934))
+(or (not x6042) (not x5902))
+(or (not x6042) (not x5846))
+(or x5924 (not x5913))
+(or x5924 (not x5849))
+(or x5924 (not x5847))
+(or x5924 (not x5848))
+(or x5924 x5877)
+(or x5913 x5849 x5847 x5848 (not x5877) (not x5924))
+(or x5849 x5847 x5848 (not x5877) (not x5913) x6043)
+(or (not x6043) (not x5849))
+(or (not x6043) (not x5847))
+(or (not x6043) (not x5848))
+(or (not x6043) x5877)
+(or (not x6043) x5913)
+(or x6044 (not x6043))
+(or x6044 x5848)
+(or x6043 (not x5848) (not x6044))
+(or (not x5796) (not x5795) (not x6044) (not x5924) (not x5925) x5902 x5926 x5927 x5928 x5929 x5930 (not x5846) x5931 x5878 x5932 x5933 x5839 x5934 x6045)
+(or (not x6045) x5796)
+(or (not x6045) x5795)
+(or (not x6045) x6044)
+(or (not x6045) x5924)
+(or (not x6045) x5925)
+(or (not x6045) (not x5902))
+(or (not x6045) (not x5926))
+(or (not x6045) (not x5927))
+(or (not x6045) (not x5928))
+(or (not x6045) (not x5929))
+(or (not x6045) (not x5930))
+(or (not x6045) x5846)
+(or (not x6045) (not x5931))
+(or (not x6045) (not x5878))
+(or (not x6045) (not x5932))
+(or (not x6045) (not x5933))
+(or (not x6045) (not x5839))
+(or (not x6045) (not x5934))
+(or x5931 x5933 (not x5932) (not x5796) (not x5795) x5839 x5934 x5902 x5846 x5878 x5926 x5927 x5928 x5929 x6046)
+(or (not x6046) (not x5931))
+(or (not x6046) (not x5933))
+(or (not x6046) x5932)
+(or (not x6046) x5796)
+(or (not x6046) x5795)
+(or (not x6046) (not x5839))
+(or (not x6046) (not x5934))
+(or (not x6046) (not x5902))
+(or (not x6046) (not x5846))
+(or (not x6046) (not x5878))
+(or (not x6046) (not x5926))
+(or (not x6046) (not x5927))
+(or (not x6046) (not x5928))
+(or (not x6046) (not x5929))
+(or x5856 x5838 x5853)
+(or (not x5853) (not x5856))
+(or (not x5853) (not x5838))
+(or x5925 (not x5853))
+(or x5925 (not x5847))
+(or x5925 (not x5848))
+(or x5925 x5849)
+(or x5853 x5847 x5848 (not x5849) (not x5925))
+(or (not x5925) x5913 x5849 x5847 x5848 (not x5877) x6047)
+(or (not x6047) x5925)
+(or (not x6047) (not x5913))
+(or (not x6047) (not x5849))
+(or (not x6047) (not x5847))
+(or (not x6047) (not x5848))
+(or (not x6047) x5877)
+(or x5845 (not x5856))
+(or x5845 (not x5838))
+(or x5856 x5838 (not x5845))
+(or (not x5845) x5847 x5848 (not x5849) x6048)
+(or (not x6048) x5845)
+(or (not x6048) (not x5847))
+(or (not x6048) (not x5848))
+(or (not x6048) x5849)
+(or x6049 (not x6048))
+(or x6049 (not x6047))
+(or x6048 x6047 (not x6049))
+(or (not x5796) (not x5795) x5902 x5926 x5927 x5928 x5929 x5930 (not x5846) x5931 x5878 x5932 x5933 x5839 x5934 (not x6049) x6050)
+(or (not x6050) x5796)
+(or (not x6050) x5795)
+(or (not x6050) (not x5902))
+(or (not x6050) (not x5926))
+(or (not x6050) (not x5927))
+(or (not x6050) (not x5928))
+(or (not x6050) (not x5929))
+(or (not x6050) (not x5930))
+(or (not x6050) x5846)
+(or (not x6050) (not x5931))
+(or (not x6050) (not x5878))
+(or (not x6050) (not x5932))
+(or (not x6050) (not x5933))
+(or (not x6050) (not x5839))
+(or (not x6050) (not x5934))
+(or (not x6050) x6049)
+(or x6051 (not x6052))
+(or x6051 (not x6053))
+(or x6051 (not x6054))
+(or x6051 (not x6055))
+(or x6051 (not x6057))
+(or x6052 x6053 x6054 x6055 x6057 (not x6051))
+(or x6058 (not x6057))
+(or x6058 (not x6056))
+(or x6058 x114)
+(or x6058 (not x115))
+(or x6058 x5796)
+(or x6058 x5795)
+(or x6057 x6056 (not x114) x115 (not x5796) (not x5795) (not x6058))
+(or (not x6058) (not x6059) (not x6051) x6060)
+(or (not x6060) x6058)
+(or (not x6060) x6059)
+(or (not x6060) x6051)
+(or x6061 (not x6052))
+(or x6061 (not x6053))
+(or x6061 (not x6054))
+(or x6061 (not x6055))
+(or x6061 (not x6056))
+(or x6052 x6053 x6054 x6055 x6056 (not x6061))
+(or x6059 (not x6052))
+(or x6059 (not x6053))
+(or x6059 (not x6054))
+(or x6059 x6057)
+(or x6059 x6056)
+(or x6052 x6053 x6054 (not x6057) (not x6056) (not x6059))
+(or x6057 x6056 (not x114) x115 (not x5796) (not x5795) x6052)
+(or (not x6052) (not x6057))
+(or (not x6052) (not x6056))
+(or (not x6052) x114)
+(or (not x6052) (not x115))
+(or (not x6052) x5796)
+(or (not x6052) x5795)
+(or x6062 (not x6052))
+(or x6062 (not x6057))
+(or x6062 x6056)
+(or x6052 x6057 (not x6056) (not x6062))
+(or (not x6062) (not x6059) (not x6061) x6063)
+(or (not x6063) x6062)
+(or (not x6063) x6059)
+(or (not x6063) x6061)
+(or x6064 (not x6065))
+(or x6064 (not x6066))
+(or x6064 (not x6067))
+(or x6064 (not x6068))
+(or x6064 (not x6070))
+(or x6065 x6066 x6067 x6068 x6070 (not x6064))
+(or x6071 (not x6070))
+(or x6071 (not x6069))
+(or x6071 x114)
+(or x6071 (not x115))
+(or x6071 x5796)
+(or x6071 x5795)
+(or x6070 x6069 (not x114) x115 (not x5796) (not x5795) (not x6071))
+(or (not x6071) (not x6072) (not x6064) x6073)
+(or (not x6073) x6071)
+(or (not x6073) x6072)
+(or (not x6073) x6064)
+(or x6074 (not x6065))
+(or x6074 (not x6066))
+(or x6074 (not x6067))
+(or x6074 (not x6068))
+(or x6074 (not x6069))
+(or x6065 x6066 x6067 x6068 x6069 (not x6074))
+(or x6072 (not x6065))
+(or x6072 (not x6066))
+(or x6072 (not x6067))
+(or x6072 x6070)
+(or x6072 x6069)
+(or x6065 x6066 x6067 (not x6070) (not x6069) (not x6072))
+(or x6070 x6069 (not x114) x115 (not x5796) (not x5795) x6065)
+(or (not x6065) (not x6070))
+(or (not x6065) (not x6069))
+(or (not x6065) x114)
+(or (not x6065) (not x115))
+(or (not x6065) x5796)
+(or (not x6065) x5795)
+(or x6075 (not x6065))
+(or x6075 (not x6070))
+(or x6075 x6069)
+(or x6065 x6070 (not x6069) (not x6075))
+(or (not x6075) (not x6072) (not x6074) x6076)
+(or (not x6076) x6075)
+(or (not x6076) x6072)
+(or (not x6076) x6074)
+(or x6077 (not x5912))
+(or x6077 (not x6078))
+(or x6077 (not x6079))
+(or x6077 (not x6020))
+(or x6077 (not x6000))
+(or x6077 (not x6022))
+(or x6077 (not x6003))
+(or x6077 (not x5999))
+(or x6077 (not x6000))
+(or x6077 (not x6001))
+(or x6077 (not x6002))
+(or x6077 (not x6003))
+(or x6077 (not x6004))
+(or x5912 x6078 x6079 x6020 x6000 x6022 x6003 x5999 x6000 x6001 x6002 x6003 x6004 (not x6077))
+(or (not x5903) (not x5904) (not x6077) x6080)
+(or (not x6080) x5903)
+(or (not x6080) x5904)
+(or (not x6080) x6077)
+(or x6081 (not x5796))
+(or x6081 (not x5795))
+(or x5796 x5795 (not x6081))
+(or x5796 x5795 x6082)
+(or (not x6082) (not x5796))
+(or (not x6082) (not x5795))
+(or x6083 (not x6082))
+(or x6083 (not x5796))
+(or x6083 x5795)
+(or x6082 x5796 (not x5795) (not x6083))
+(or x6084 (not x6085))
+(or x6084 (not x6086))
+(or x6084 (not x6087))
+(or x6084 (not x6088))
+(or x6084 (not x6089))
+(or x6084 (not x6090))
+(or x6084 (not x6021))
+(or x6084 (not x6091))
+(or x6084 (not x6092))
+(or x6084 (not x6093))
+(or x6084 (not x6094))
+(or x6084 (not x6098))
+(or x6085 x6086 x6087 x6088 x6089 x6090 x6021 x6091 x6092 x6093 x6094 x6098 (not x6084))
+(or (not x6099) (not x6100) (not x6101) (not x6102) (not x6103) (not x6104) (not x6105) (not x6106) (not x6107) (not x6108) (not x6109) (not x6084) x6110)
+(or (not x6110) x6099)
+(or (not x6110) x6100)
+(or (not x6110) x6101)
+(or (not x6110) x6102)
+(or (not x6110) x6103)
+(or (not x6110) x6104)
+(or (not x6110) x6105)
+(or (not x6110) x6106)
+(or (not x6110) x6107)
+(or (not x6110) x6108)
+(or (not x6110) x6109)
+(or (not x6110) x6084)
+(or x6111 (not x6085))
+(or x6111 (not x6086))
+(or x6111 (not x6087))
+(or x6111 (not x6088))
+(or x6111 (not x6089))
+(or x6111 (not x6090))
+(or x6111 (not x6021))
+(or x6111 (not x6091))
+(or x6111 (not x6092))
+(or x6111 (not x6093))
+(or x6111 (not x6094))
+(or x6111 (not x6097))
+(or x6085 x6086 x6087 x6088 x6089 x6090 x6021 x6091 x6092 x6093 x6094 x6097 (not x6111))
+(or x6112 x6113)
+(or x6112 (not x6114))
+(or (not x6113) x6114 (not x6112))
+(or (not x6112) (not x6113) x6115)
+(or (not x6115) x6112)
+(or (not x6115) x6113)
+(or x6116 (not x6085))
+(or x6116 (not x6086))
+(or x6116 (not x6087))
+(or x6116 (not x6088))
+(or x6116 (not x6089))
+(or x6116 (not x6090))
+(or x6116 (not x6021))
+(or x6116 (not x6091))
+(or x6116 (not x6098))
+(or x6116 (not x6097))
+(or x6116 (not x6096))
+(or x6116 x6095)
+(or x6116 (not x116))
+(or x6116 (not x115))
+(or x6116 (not x6115))
+(or x6085 x6086 x6087 x6088 x6089 x6090 x6021 x6091 x6098 x6097 x6096 (not x6095) x116 x115 x6115 (not x6116))
+(or x6117 (not x6085))
+(or x6117 (not x6086))
+(or x6117 (not x6087))
+(or x6117 (not x6088))
+(or x6117 (not x6089))
+(or x6117 (not x6090))
+(or x6117 (not x6098))
+(or x6117 (not x6097))
+(or x6117 x6096)
+(or x6117 x6095)
+(or x6117 x6118)
+(or x6117 x6119)
+(or x6117 x6120)
+(or x6085 x6086 x6087 x6088 x6089 x6090 x6098 x6097 (not x6096) (not x6095) (not x6118) (not x6119) (not x6120) (not x6117))
+(or x6121 (not x6085))
+(or x6121 (not x6086))
+(or x6121 (not x6087))
+(or x6121 (not x6088))
+(or x6121 (not x6098))
+(or x6121 (not x6097))
+(or x6121 x6096)
+(or x6121 (not x6095))
+(or x6121 (not x6122))
+(or x6121 x6123)
+(or x6121 x6124)
+(or x6085 x6086 x6087 x6088 x6098 x6097 (not x6096) x6095 x6122 (not x6123) (not x6124) (not x6121))
+(or x6125 (not x6085))
+(or x6125 (not x6098))
+(or x6125 (not x6097))
+(or x6125 (not x6096))
+(or x6125 (not x6095))
+(or x6125 (not x115))
+(or x6125 x5796)
+(or x6125 x5795)
+(or x6125 (not x6122))
+(or x6125 (not x6126))
+(or x6125 (not x6127))
+(or x6125 x6128)
+(or x6085 x6098 x6097 x6096 x6095 x115 (not x5796) (not x5795) x6122 x6126 x6127 (not x6128) (not x6125))
+(or x6129 x6130)
+(or x6129 x6131)
+(or x6129 x6132)
+(or (not x6130) (not x6131) (not x6132) (not x6129))
+(or (not x6129) (not x6130) x6133)
+(or (not x6133) x6129)
+(or (not x6133) x6130)
+(or x6134 x6135)
+(or x6134 (not x6133))
+(or (not x6135) x6133 (not x6134))
+(or (not x6134) (not x6135) x6136)
+(or (not x6136) x6134)
+(or (not x6136) x6135)
+(or x6137 (not x6098))
+(or x6137 (not x6097))
+(or x6137 (not x6096))
+(or x6137 (not x6095))
+(or x6137 (not x115))
+(or x6137 x5796)
+(or x6137 x5795)
+(or x6137 (not x6122))
+(or x6137 (not x6138))
+(or x6137 (not x6136))
+(or x6098 x6097 x6096 x6095 x115 (not x5796) (not x5795) x6122 x6138 x6136 (not x6137))
+(or (not x6137) (not x6125) (not x6101) (not x6102) (not x6121) (not x6104) (not x6117) (not x6106) (not x6116) (not x6109) (not x6111) x6139)
+(or (not x6139) x6137)
+(or (not x6139) x6125)
+(or (not x6139) x6101)
+(or (not x6139) x6102)
+(or (not x6139) x6121)
+(or (not x6139) x6104)
+(or (not x6139) x6117)
+(or (not x6139) x6106)
+(or (not x6139) x6116)
+(or (not x6139) x6109)
+(or (not x6139) x6111)
+(or x6140 (not x6085))
+(or x6140 (not x6086))
+(or x6140 (not x6087))
+(or x6140 (not x6088))
+(or x6140 (not x6089))
+(or x6140 (not x6090))
+(or x6140 (not x6021))
+(or x6140 (not x6091))
+(or x6140 (not x6092))
+(or x6140 (not x6093))
+(or x6140 (not x6094))
+(or x6140 (not x6096))
+(or x6085 x6086 x6087 x6088 x6089 x6090 x6021 x6091 x6092 x6093 x6094 x6096 (not x6140))
+(or x6108 (not x6085))
+(or x6108 (not x6086))
+(or x6108 (not x6087))
+(or x6108 (not x6088))
+(or x6108 (not x6089))
+(or x6108 (not x6090))
+(or x6108 (not x6021))
+(or x6108 (not x6091))
+(or x6108 (not x6092))
+(or x6108 (not x6098))
+(or x6108 x6097)
+(or x6108 x6096)
+(or x6108 (not x6095))
+(or x6108 (not x116))
+(or x6108 (not x115))
+(or x6085 x6086 x6087 x6088 x6089 x6090 x6021 x6091 x6092 x6098 (not x6097) (not x6096) x6095 x116 x115 (not x6108))
+(or x6141 x6114)
+(or x6141 x6142)
+(or (not x6114) (not x6142) (not x6141))
+(or (not x6141) (not x6114) x6143)
+(or (not x6143) x6141)
+(or (not x6143) x6114)
+(or x6144 (not x6085))
+(or x6144 (not x6086))
+(or x6144 (not x6087))
+(or x6144 (not x6088))
+(or x6144 (not x6089))
+(or x6144 (not x6090))
+(or x6144 (not x6021))
+(or x6144 (not x6091))
+(or x6144 (not x6098))
+(or x6144 (not x6097))
+(or x6144 (not x6096))
+(or x6144 x6095)
+(or x6144 (not x116))
+(or x6144 (not x115))
+(or x6144 x6113)
+(or x6144 (not x6143))
+(or x6085 x6086 x6087 x6088 x6089 x6090 x6021 x6091 x6098 x6097 x6096 (not x6095) x116 x115 (not x6113) x6143 (not x6144))
+(or x6145 x6120)
+(or x6145 (not x6146))
+(or (not x6120) x6146 (not x6145))
+(or (not x6145) (not x6120) x6147)
+(or (not x6147) x6145)
+(or (not x6147) x6120)
+(or x6148 x6118)
+(or x6148 x6119)
+(or x6148 (not x6147))
+(or (not x6118) (not x6119) x6147 (not x6148))
+(or (not x6148) (not x6118) x6149)
+(or (not x6149) x6148)
+(or (not x6149) x6118)
+(or x6150 (not x6085))
+(or x6150 (not x6086))
+(or x6150 (not x6087))
+(or x6150 (not x6088))
+(or x6150 (not x6089))
+(or x6150 (not x6090))
+(or x6150 (not x6098))
+(or x6150 (not x6097))
+(or x6150 x6096)
+(or x6150 x6095)
+(or x6150 (not x6149))
+(or x6085 x6086 x6087 x6088 x6089 x6090 x6098 x6097 (not x6096) (not x6095) x6149 (not x6150))
+(or x6151 x6124)
+(or x6151 (not x6152))
+(or (not x6124) x6152 (not x6151))
+(or (not x6151) (not x6124) x6153)
+(or (not x6153) x6151)
+(or (not x6153) x6124)
+(or x6154 (not x6085))
+(or x6154 (not x6086))
+(or x6154 (not x6087))
+(or x6154 (not x6088))
+(or x6154 (not x6098))
+(or x6154 (not x6097))
+(or x6154 x6096)
+(or x6154 (not x6095))
+(or x6154 (not x6122))
+(or x6154 x6123)
+(or x6154 (not x6153))
+(or x6085 x6086 x6087 x6088 x6098 x6097 (not x6096) x6095 x6122 (not x6123) x6153 (not x6154))
+(or x6155 (not x6085))
+(or x6155 (not x6098))
+(or x6155 (not x6097))
+(or x6155 (not x6096))
+(or x6155 (not x6095))
+(or x6155 (not x115))
+(or x6155 x5796)
+(or x6155 x5795)
+(or x6155 (not x6122))
+(or x6155 (not x6126))
+(or x6155 (not x6127))
+(or x6155 (not x6128))
+(or x6085 x6098 x6097 x6096 x6095 x115 (not x5796) (not x5795) x6122 x6126 x6127 x6128 (not x6155))
+(or x6156 x6135)
+(or x6156 x6130)
+(or x6156 x6131)
+(or x6156 (not x6132))
+(or (not x6135) (not x6130) (not x6131) x6132 (not x6156))
+(or (not x6156) (not x6135) x6157)
+(or (not x6157) x6156)
+(or (not x6157) x6135)
+(or x6158 (not x6098))
+(or x6158 (not x6097))
+(or x6158 (not x6096))
+(or x6158 (not x6095))
+(or x6158 (not x115))
+(or x6158 x5796)
+(or x6158 x5795)
+(or x6158 (not x6122))
+(or x6158 (not x6138))
+(or x6158 (not x6157))
+(or x6098 x6097 x6096 x6095 x115 (not x5796) (not x5795) x6122 x6138 x6157 (not x6158))
+(or (not x6158) (not x6155) (not x6102) (not x6154) (not x6150) (not x6106) (not x6144) (not x6108) (not x6109) (not x6140) x6159)
+(or (not x6159) x6158)
+(or (not x6159) x6155)
+(or (not x6159) x6102)
+(or (not x6159) x6154)
+(or (not x6159) x6150)
+(or (not x6159) x6106)
+(or (not x6159) x6144)
+(or (not x6159) x6108)
+(or (not x6159) x6109)
+(or (not x6159) x6140)
+(or x6160 (not x6002))
+(or x6160 (not x6004))
+(or x6160 (not x6003))
+(or x6002 x6004 x6003 (not x6160))
+(or (not x6160) (not x115) x6094)
+(or (not x6094) x6160)
+(or (not x6094) x115)
+(or x6161 (not x6085))
+(or x6161 (not x6086))
+(or x6161 (not x6087))
+(or x6161 (not x6088))
+(or x6161 (not x6089))
+(or x6161 (not x6090))
+(or x6161 (not x6021))
+(or x6161 (not x6091))
+(or x6161 (not x6092))
+(or x6161 (not x6093))
+(or x6161 (not x6094))
+(or x6161 (not x6095))
+(or x6085 x6086 x6087 x6088 x6089 x6090 x6021 x6091 x6092 x6093 x6094 x6095 (not x6161))
+(or x5986 (not x6098))
+(or x5986 x6097)
+(or x5986 (not x6096))
+(or x5986 (not x6095))
+(or x6098 (not x6097) x6096 x6095 (not x5986))
+(or (not x5986) (not x5987) (not x5951) x6162)
+(or (not x6162) x5986)
+(or (not x6162) x5987)
+(or (not x6162) x5951)
+(or x6098 (not x6097) (not x6096) x6095 x116 x115 x6093)
+(or (not x6093) (not x6098))
+(or (not x6093) x6097)
+(or (not x6093) x6096)
+(or (not x6093) (not x6095))
+(or (not x6093) (not x116))
+(or (not x6093) (not x115))
+(or x6098 x6097 x6096 (not x6095) x116 x115 x6092)
+(or (not x6092) (not x6098))
+(or (not x6092) (not x6097))
+(or (not x6092) (not x6096))
+(or (not x6092) x6095)
+(or (not x6092) (not x116))
+(or (not x6092) (not x115))
+(or x6109 (not x6085))
+(or x6109 (not x6086))
+(or x6109 (not x6087))
+(or x6109 (not x6088))
+(or x6109 (not x6089))
+(or x6109 (not x6090))
+(or x6109 (not x6021))
+(or x6109 (not x6091))
+(or x6109 (not x6092))
+(or x6109 (not x6093))
+(or x6109 (not x6162))
+(or x6109 x115)
+(or x6085 x6086 x6087 x6088 x6089 x6090 x6021 x6091 x6092 x6093 x6162 (not x115) (not x6109))
+(or x6163 x6142)
+(or x6163 x6164)
+(or (not x6142) (not x6164) (not x6163))
+(or (not x6163) (not x6142) x6165)
+(or (not x6165) x6163)
+(or (not x6165) x6142)
+(or x6098 x6097 x6096 (not x6095) x116 (not x115) x6091)
+(or (not x6091) (not x6098))
+(or (not x6091) (not x6097))
+(or (not x6091) (not x6096))
+(or (not x6091) x6095)
+(or (not x6091) (not x116))
+(or (not x6091) x115)
+(or x6107 (not x6085))
+(or x6107 (not x6086))
+(or x6107 (not x6087))
+(or x6107 (not x6088))
+(or x6107 (not x6089))
+(or x6107 (not x6090))
+(or x6107 (not x6021))
+(or x6107 (not x6091))
+(or x6107 (not x6098))
+(or x6107 (not x6097))
+(or x6107 (not x6096))
+(or x6107 x6095)
+(or x6107 (not x116))
+(or x6107 (not x115))
+(or x6085 x6086 x6087 x6088 x6089 x6090 x6021 x6091 x6098 x6097 x6096 (not x6095) x116 x115 (not x6107))
+(or x6166 (not x6085))
+(or x6166 (not x6086))
+(or x6166 (not x6087))
+(or x6166 (not x6088))
+(or x6166 (not x6089))
+(or x6166 (not x6090))
+(or x6166 (not x6021))
+(or x6166 (not x6091))
+(or x6166 (not x6098))
+(or x6166 (not x6097))
+(or x6166 (not x6096))
+(or x6166 x6095)
+(or x6166 (not x116))
+(or x6166 (not x115))
+(or x6166 x6113)
+(or x6166 x6114)
+(or x6166 (not x6165))
+(or x6085 x6086 x6087 x6088 x6089 x6090 x6021 x6091 x6098 x6097 x6096 (not x6095) x116 x115 (not x6113) (not x6114) x6165 (not x6166))
+(or x6106 (not x6085))
+(or x6106 (not x6086))
+(or x6106 (not x6087))
+(or x6106 (not x6088))
+(or x6106 (not x6089))
+(or x6106 (not x6090))
+(or x6106 (not x6021))
+(or x6106 (not x6098))
+(or x6106 (not x6097))
+(or x6106 (not x6096))
+(or x6106 x6095)
+(or x6106 (not x116))
+(or x6106 x115)
+(or x6085 x6086 x6087 x6088 x6089 x6090 x6021 x6098 x6097 x6096 (not x6095) x116 (not x115) (not x6106))
+(or x6167 x6119)
+(or x6167 (not x6120))
+(or (not x6119) x6120 (not x6167))
+(or (not x6167) (not x6119) x6168)
+(or (not x6168) x6167)
+(or (not x6168) x6119)
+(or x6105 (not x6085))
+(or x6105 (not x6086))
+(or x6105 (not x6087))
+(or x6105 (not x6088))
+(or x6105 (not x6089))
+(or x6105 (not x6090))
+(or x6105 (not x6098))
+(or x6105 (not x6097))
+(or x6105 x6096)
+(or x6105 x6095)
+(or x6085 x6086 x6087 x6088 x6089 x6090 x6098 x6097 (not x6096) (not x6095) (not x6105))
+(or x6169 (not x6085))
+(or x6169 (not x6086))
+(or x6169 (not x6087))
+(or x6169 (not x6088))
+(or x6169 (not x6089))
+(or x6169 (not x6090))
+(or x6169 (not x6098))
+(or x6169 (not x6097))
+(or x6169 x6096)
+(or x6169 x6095)
+(or x6169 x6118)
+(or x6169 (not x6168))
+(or x6085 x6086 x6087 x6088 x6089 x6090 x6098 x6097 (not x6096) (not x6095) (not x6118) x6168 (not x6169))
+(or x6098 x6097 (not x6096) x6095 (not x6170) x6089)
+(or (not x6089) (not x6098))
+(or (not x6089) (not x6097))
+(or (not x6089) x6096)
+(or (not x6089) (not x6095))
+(or (not x6089) x6170)
+(or x6104 (not x6085))
+(or x6104 (not x6086))
+(or x6104 (not x6087))
+(or x6104 (not x6088))
+(or x6104 (not x6089))
+(or x6104 (not x6098))
+(or x6104 (not x6097))
+(or x6104 x6096)
+(or x6104 (not x6095))
+(or x6085 x6086 x6087 x6088 x6089 x6098 x6097 (not x6096) x6095 (not x6104))
+(or x6171 x6123)
+(or x6171 x6124)
+(or x6171 x6152)
+(or x6171 x6172)
+(or (not x6123) (not x6124) (not x6152) (not x6172) (not x6171))
+(or (not x6171) (not x6123) x6173)
+(or (not x6173) x6171)
+(or (not x6173) x6123)
+(or x6098 x6097 (not x6096) x6095 (not x115) (not x116) x6088)
+(or (not x6088) (not x6098))
+(or (not x6088) (not x6097))
+(or (not x6088) x6096)
+(or (not x6088) (not x6095))
+(or (not x6088) x115)
+(or (not x6088) x116)
+(or x6103 (not x6085))
+(or x6103 (not x6086))
+(or x6103 (not x6087))
+(or x6103 (not x6088))
+(or x6103 (not x6098))
+(or x6103 (not x6097))
+(or x6103 x6096)
+(or x6103 (not x6095))
+(or x6103 (not x6122))
+(or x6085 x6086 x6087 x6088 x6098 x6097 (not x6096) x6095 x6122 (not x6103))
+(or x6174 (not x6085))
+(or x6174 (not x6086))
+(or x6174 (not x6087))
+(or x6174 (not x6088))
+(or x6174 (not x6098))
+(or x6174 (not x6097))
+(or x6174 x6096)
+(or x6174 (not x6095))
+(or x6174 (not x6122))
+(or x6174 (not x6173))
+(or x6085 x6086 x6087 x6088 x6098 x6097 (not x6096) x6095 x6122 x6173 (not x6174))
+(or x6102 (not x6085))
+(or x6102 (not x6086))
+(or x6102 (not x6087))
+(or x6102 (not x6098))
+(or x6102 (not x6097))
+(or x6102 x6096)
+(or x6102 (not x6095))
+(or x6102 x115)
+(or x6102 x116)
+(or x6085 x6086 x6087 x6098 x6097 (not x6096) x6095 (not x115) (not x116) (not x6102))
+(or x6098 x6097 x6096 x6095 x115 (not x5796) (not x5795) (not x6170) (not x6175) (not x6176) x6086)
+(or (not x6086) (not x6098))
+(or (not x6086) (not x6097))
+(or (not x6086) (not x6096))
+(or (not x6086) (not x6095))
+(or (not x6086) (not x115))
+(or (not x6086) x5796)
+(or (not x6086) x5795)
+(or (not x6086) x6170)
+(or (not x6086) x6175)
+(or (not x6086) x6176)
+(or x6101 (not x6085))
+(or x6101 (not x6086))
+(or x6101 (not x6098))
+(or x6101 (not x6097))
+(or x6101 (not x6096))
+(or x6101 (not x6095))
+(or x6101 (not x115))
+(or x6101 x5796)
+(or x6101 x5795)
+(or x6085 x6086 x6098 x6097 x6096 x6095 x115 (not x5796) (not x5795) (not x6101))
+(or (not x6057) (not x6056) x6055)
+(or (not x6055) x6057)
+(or (not x6055) x6056)
+(or (not x6057) x6056 x6054)
+(or (not x6054) x6057)
+(or (not x6054) (not x6056))
+(or x6057 (not x6056) x6053)
+(or (not x6053) (not x6057))
+(or (not x6053) x6056)
+(or x6057 x6056 (not x114) x115 x6177)
+(or (not x6177) (not x6057))
+(or (not x6177) (not x6056))
+(or (not x6177) x114)
+(or (not x6177) (not x115))
+(or x6170 (not x6177))
+(or x6170 (not x6053))
+(or x6170 (not x6054))
+(or x6170 (not x6055))
+(or x6177 x6053 x6054 x6055 (not x6170))
+(or x6098 x6097 x6096 x6095 x115 (not x5796) (not x5795) x6087)
+(or (not x6087) (not x6098))
+(or (not x6087) (not x6097))
+(or (not x6087) (not x6096))
+(or (not x6087) (not x6095))
+(or (not x6087) (not x115))
+(or (not x6087) x5796)
+(or (not x6087) x5795)
+(or x6098 x6097 x6096 x6095 x115 (not x5796) (not x5795) (not x6170) (not x6178) x6085)
+(or (not x6085) (not x6098))
+(or (not x6085) (not x6097))
+(or (not x6085) (not x6096))
+(or (not x6085) (not x6095))
+(or (not x6085) (not x115))
+(or (not x6085) x5796)
+(or (not x6085) x5795)
+(or (not x6085) x6170)
+(or (not x6085) x6178)
+(or x6100 (not x6085))
+(or x6100 (not x6098))
+(or x6100 (not x6097))
+(or x6100 (not x6096))
+(or x6100 (not x6095))
+(or x6100 (not x115))
+(or x6100 x5796)
+(or x6100 x5795)
+(or x6100 (not x6122))
+(or x6100 (not x6126))
+(or x6100 (not x6127))
+(or x6085 x6098 x6097 x6096 x6095 x115 (not x5796) (not x5795) x6122 x6126 x6127 (not x6100))
+(or x6179 (not x6085))
+(or x6179 (not x6098))
+(or x6179 (not x6097))
+(or x6179 (not x6096))
+(or x6179 (not x6095))
+(or x6179 (not x115))
+(or x6179 x5796)
+(or x6179 x5795)
+(or x6179 (not x6122))
+(or x6179 (not x6126))
+(or x6179 (not x6127))
+(or x6179 x6128)
+(or x6179 x6180)
+(or x6085 x6098 x6097 x6096 x6095 x115 (not x5796) (not x5795) x6122 x6126 x6127 (not x6128) (not x6180) (not x6179))
+(or x6181 x6131)
+(or x6181 x6132)
+(or (not x6131) (not x6132) (not x6181))
+(or (not x6181) (not x6131) x6182)
+(or (not x6182) x6181)
+(or (not x6182) x6131)
+(or x6183 x6057)
+(or x6183 x6056)
+(or (not x6057) (not x6056) (not x6183))
+(or x6184 x6057)
+(or x6184 (not x6056))
+(or (not x6057) x6056 (not x6184))
+(or x6185 (not x6057))
+(or x6185 x6056)
+(or x6057 (not x6056) (not x6185))
+(or x6186 (not x6057))
+(or x6186 (not x6056))
+(or x6186 x114)
+(or x6186 (not x115))
+(or x6057 x6056 (not x114) x115 (not x6186))
+(or (not x6186) (not x6185) (not x6184) (not x6183) x6122)
+(or (not x6122) x6186)
+(or (not x6122) x6185)
+(or (not x6122) x6184)
+(or (not x6122) x6183)
+(or x6099 (not x6098))
+(or x6099 (not x6097))
+(or x6099 (not x6096))
+(or x6099 (not x6095))
+(or x6099 (not x115))
+(or x6099 x5796)
+(or x6099 x5795)
+(or x6099 (not x6122))
+(or x6099 (not x6138))
+(or x6098 x6097 x6096 x6095 x115 (not x5796) (not x5795) x6122 x6138 (not x6099))
+(or x6187 (not x6098))
+(or x6187 (not x6097))
+(or x6187 (not x6096))
+(or x6187 (not x6095))
+(or x6187 (not x115))
+(or x6187 x5796)
+(or x6187 x5795)
+(or x6187 (not x6122))
+(or x6187 (not x6138))
+(or x6187 x6135)
+(or x6187 x6130)
+(or x6187 (not x6182))
+(or x6098 x6097 x6096 x6095 x115 (not x5796) (not x5795) x6122 x6138 (not x6135) (not x6130) x6182 (not x6187))
+(or (not x6187) (not x6179) (not x6101) (not x6102) (not x6174) (not x6104) (not x6169) (not x6106) (not x6166) (not x6109) (not x6161) x6188)
+(or (not x6188) x6187)
+(or (not x6188) x6179)
+(or (not x6188) x6101)
+(or (not x6188) x6102)
+(or (not x6188) x6174)
+(or (not x6188) x6104)
+(or (not x6188) x6169)
+(or (not x6188) x6106)
+(or (not x6188) x6166)
+(or (not x6188) x6109)
+(or (not x6188) x6161)
+(or x6189 (not x6190))
+(or x6189 (not x6191))
+(or x6189 (not x6192))
+(or x6189 (not x6193))
+(or x6189 (not x6194))
+(or x6189 (not x6195))
+(or x6189 (not x6019))
+(or x6189 (not x6196))
+(or x6189 (not x6197))
+(or x6189 (not x6198))
+(or x6189 (not x6199))
+(or x6189 (not x6203))
+(or x6190 x6191 x6192 x6193 x6194 x6195 x6019 x6196 x6197 x6198 x6199 x6203 (not x6189))
+(or (not x6204) (not x6205) (not x6206) (not x6207) (not x6208) (not x6209) (not x6210) (not x6211) (not x6212) (not x6213) (not x6214) (not x6189) x6215)
+(or (not x6215) x6204)
+(or (not x6215) x6205)
+(or (not x6215) x6206)
+(or (not x6215) x6207)
+(or (not x6215) x6208)
+(or (not x6215) x6209)
+(or (not x6215) x6210)
+(or (not x6215) x6211)
+(or (not x6215) x6212)
+(or (not x6215) x6213)
+(or (not x6215) x6214)
+(or (not x6215) x6189)
+(or x6216 (not x6190))
+(or x6216 (not x6191))
+(or x6216 (not x6192))
+(or x6216 (not x6193))
+(or x6216 (not x6194))
+(or x6216 (not x6195))
+(or x6216 (not x6019))
+(or x6216 (not x6196))
+(or x6216 (not x6197))
+(or x6216 (not x6198))
+(or x6216 (not x6199))
+(or x6216 (not x6202))
+(or x6190 x6191 x6192 x6193 x6194 x6195 x6019 x6196 x6197 x6198 x6199 x6202 (not x6216))
+(or x6217 x6218)
+(or x6217 (not x6219))
+(or (not x6218) x6219 (not x6217))
+(or (not x6217) (not x6218) x6220)
+(or (not x6220) x6217)
+(or (not x6220) x6218)
+(or x6221 (not x6190))
+(or x6221 (not x6191))
+(or x6221 (not x6192))
+(or x6221 (not x6193))
+(or x6221 (not x6194))
+(or x6221 (not x6195))
+(or x6221 (not x6019))
+(or x6221 (not x6196))
+(or x6221 (not x6203))
+(or x6221 (not x6202))
+(or x6221 (not x6201))
+(or x6221 x6200)
+(or x6221 (not x116))
+(or x6221 (not x115))
+(or x6221 (not x6220))
+(or x6190 x6191 x6192 x6193 x6194 x6195 x6019 x6196 x6203 x6202 x6201 (not x6200) x116 x115 x6220 (not x6221))
+(or x6222 (not x6190))
+(or x6222 (not x6191))
+(or x6222 (not x6192))
+(or x6222 (not x6193))
+(or x6222 (not x6194))
+(or x6222 (not x6195))
+(or x6222 (not x6203))
+(or x6222 (not x6202))
+(or x6222 x6201)
+(or x6222 x6200)
+(or x6222 x6223)
+(or x6222 x6224)
+(or x6222 x6225)
+(or x6190 x6191 x6192 x6193 x6194 x6195 x6203 x6202 (not x6201) (not x6200) (not x6223) (not x6224) (not x6225) (not x6222))
+(or x6226 (not x6190))
+(or x6226 (not x6191))
+(or x6226 (not x6192))
+(or x6226 (not x6193))
+(or x6226 (not x6203))
+(or x6226 (not x6202))
+(or x6226 x6201)
+(or x6226 (not x6200))
+(or x6226 (not x6227))
+(or x6226 x6228)
+(or x6226 x6229)
+(or x6190 x6191 x6192 x6193 x6203 x6202 (not x6201) x6200 x6227 (not x6228) (not x6229) (not x6226))
+(or x6230 (not x6190))
+(or x6230 (not x6203))
+(or x6230 (not x6202))
+(or x6230 (not x6201))
+(or x6230 (not x6200))
+(or x6230 (not x115))
+(or x6230 x5796)
+(or x6230 x5795)
+(or x6230 (not x6227))
+(or x6230 (not x6126))
+(or x6230 (not x6127))
+(or x6230 x6231)
+(or x6190 x6203 x6202 x6201 x6200 x115 (not x5796) (not x5795) x6227 x6126 x6127 (not x6231) (not x6230))
+(or x6232 x6233)
+(or x6232 x6234)
+(or x6232 x6235)
+(or (not x6233) (not x6234) (not x6235) (not x6232))
+(or (not x6232) (not x6233) x6236)
+(or (not x6236) x6232)
+(or (not x6236) x6233)
+(or x6237 x6238)
+(or x6237 (not x6236))
+(or (not x6238) x6236 (not x6237))
+(or (not x6237) (not x6238) x6239)
+(or (not x6239) x6237)
+(or (not x6239) x6238)
+(or x6240 (not x6203))
+(or x6240 (not x6202))
+(or x6240 (not x6201))
+(or x6240 (not x6200))
+(or x6240 (not x115))
+(or x6240 x5796)
+(or x6240 x5795)
+(or x6240 (not x6227))
+(or x6240 (not x6138))
+(or x6240 (not x6239))
+(or x6203 x6202 x6201 x6200 x115 (not x5796) (not x5795) x6227 x6138 x6239 (not x6240))
+(or (not x6240) (not x6230) (not x6206) (not x6207) (not x6226) (not x6209) (not x6222) (not x6211) (not x6221) (not x6214) (not x6216) x6241)
+(or (not x6241) x6240)
+(or (not x6241) x6230)
+(or (not x6241) x6206)
+(or (not x6241) x6207)
+(or (not x6241) x6226)
+(or (not x6241) x6209)
+(or (not x6241) x6222)
+(or (not x6241) x6211)
+(or (not x6241) x6221)
+(or (not x6241) x6214)
+(or (not x6241) x6216)
+(or x6242 (not x6190))
+(or x6242 (not x6191))
+(or x6242 (not x6192))
+(or x6242 (not x6193))
+(or x6242 (not x6194))
+(or x6242 (not x6195))
+(or x6242 (not x6019))
+(or x6242 (not x6196))
+(or x6242 (not x6197))
+(or x6242 (not x6198))
+(or x6242 (not x6199))
+(or x6242 (not x6201))
+(or x6190 x6191 x6192 x6193 x6194 x6195 x6019 x6196 x6197 x6198 x6199 x6201 (not x6242))
+(or x6213 (not x6190))
+(or x6213 (not x6191))
+(or x6213 (not x6192))
+(or x6213 (not x6193))
+(or x6213 (not x6194))
+(or x6213 (not x6195))
+(or x6213 (not x6019))
+(or x6213 (not x6196))
+(or x6213 (not x6197))
+(or x6213 (not x6203))
+(or x6213 x6202)
+(or x6213 x6201)
+(or x6213 (not x6200))
+(or x6213 (not x116))
+(or x6213 (not x115))
+(or x6190 x6191 x6192 x6193 x6194 x6195 x6019 x6196 x6197 x6203 (not x6202) (not x6201) x6200 x116 x115 (not x6213))
+(or x6243 x6219)
+(or x6243 x6244)
+(or (not x6219) (not x6244) (not x6243))
+(or (not x6243) (not x6219) x6245)
+(or (not x6245) x6243)
+(or (not x6245) x6219)
+(or x6246 (not x6190))
+(or x6246 (not x6191))
+(or x6246 (not x6192))
+(or x6246 (not x6193))
+(or x6246 (not x6194))
+(or x6246 (not x6195))
+(or x6246 (not x6019))
+(or x6246 (not x6196))
+(or x6246 (not x6203))
+(or x6246 (not x6202))
+(or x6246 (not x6201))
+(or x6246 x6200)
+(or x6246 (not x116))
+(or x6246 (not x115))
+(or x6246 x6218)
+(or x6246 (not x6245))
+(or x6190 x6191 x6192 x6193 x6194 x6195 x6019 x6196 x6203 x6202 x6201 (not x6200) x116 x115 (not x6218) x6245 (not x6246))
+(or x6247 x6225)
+(or x6247 (not x6248))
+(or (not x6225) x6248 (not x6247))
+(or (not x6247) (not x6225) x6249)
+(or (not x6249) x6247)
+(or (not x6249) x6225)
+(or x6250 x6223)
+(or x6250 x6224)
+(or x6250 (not x6249))
+(or (not x6223) (not x6224) x6249 (not x6250))
+(or (not x6250) (not x6223) x6251)
+(or (not x6251) x6250)
+(or (not x6251) x6223)
+(or x6252 (not x6190))
+(or x6252 (not x6191))
+(or x6252 (not x6192))
+(or x6252 (not x6193))
+(or x6252 (not x6194))
+(or x6252 (not x6195))
+(or x6252 (not x6203))
+(or x6252 (not x6202))
+(or x6252 x6201)
+(or x6252 x6200)
+(or x6252 (not x6251))
+(or x6190 x6191 x6192 x6193 x6194 x6195 x6203 x6202 (not x6201) (not x6200) x6251 (not x6252))
+(or x6253 x6229)
+(or x6253 (not x6254))
+(or (not x6229) x6254 (not x6253))
+(or (not x6253) (not x6229) x6255)
+(or (not x6255) x6253)
+(or (not x6255) x6229)
+(or x6256 (not x6190))
+(or x6256 (not x6191))
+(or x6256 (not x6192))
+(or x6256 (not x6193))
+(or x6256 (not x6203))
+(or x6256 (not x6202))
+(or x6256 x6201)
+(or x6256 (not x6200))
+(or x6256 (not x6227))
+(or x6256 x6228)
+(or x6256 (not x6255))
+(or x6190 x6191 x6192 x6193 x6203 x6202 (not x6201) x6200 x6227 (not x6228) x6255 (not x6256))
+(or x6257 (not x6190))
+(or x6257 (not x6203))
+(or x6257 (not x6202))
+(or x6257 (not x6201))
+(or x6257 (not x6200))
+(or x6257 (not x115))
+(or x6257 x5796)
+(or x6257 x5795)
+(or x6257 (not x6227))
+(or x6257 (not x6126))
+(or x6257 (not x6127))
+(or x6257 (not x6231))
+(or x6190 x6203 x6202 x6201 x6200 x115 (not x5796) (not x5795) x6227 x6126 x6127 x6231 (not x6257))
+(or x6258 x6238)
+(or x6258 x6233)
+(or x6258 x6234)
+(or x6258 (not x6235))
+(or (not x6238) (not x6233) (not x6234) x6235 (not x6258))
+(or (not x6258) (not x6238) x6259)
+(or (not x6259) x6258)
+(or (not x6259) x6238)
+(or x6260 (not x6203))
+(or x6260 (not x6202))
+(or x6260 (not x6201))
+(or x6260 (not x6200))
+(or x6260 (not x115))
+(or x6260 x5796)
+(or x6260 x5795)
+(or x6260 (not x6227))
+(or x6260 (not x6138))
+(or x6260 (not x6259))
+(or x6203 x6202 x6201 x6200 x115 (not x5796) (not x5795) x6227 x6138 x6259 (not x6260))
+(or (not x6260) (not x6257) (not x6207) (not x6256) (not x6252) (not x6211) (not x6246) (not x6213) (not x6214) (not x6242) x6261)
+(or (not x6261) x6260)
+(or (not x6261) x6257)
+(or (not x6261) x6207)
+(or (not x6261) x6256)
+(or (not x6261) x6252)
+(or (not x6261) x6211)
+(or (not x6261) x6246)
+(or (not x6261) x6213)
+(or (not x6261) x6214)
+(or (not x6261) x6242)
+(or x6262 (not x5999))
+(or x6262 (not x6001))
+(or x6262 (not x6000))
+(or x5999 x6001 x6000 (not x6262))
+(or (not x6262) (not x115) x6199)
+(or (not x6199) x6262)
+(or (not x6199) x115)
+(or x6263 (not x6190))
+(or x6263 (not x6191))
+(or x6263 (not x6192))
+(or x6263 (not x6193))
+(or x6263 (not x6194))
+(or x6263 (not x6195))
+(or x6263 (not x6019))
+(or x6263 (not x6196))
+(or x6263 (not x6197))
+(or x6263 (not x6198))
+(or x6263 (not x6199))
+(or x6263 (not x6200))
+(or x6190 x6191 x6192 x6193 x6194 x6195 x6019 x6196 x6197 x6198 x6199 x6200 (not x6263))
+(or x5984 (not x6203))
+(or x5984 x6202)
+(or x5984 (not x6201))
+(or x5984 (not x6200))
+(or x6203 (not x6202) x6201 x6200 (not x5984))
+(or (not x5984) (not x5985) (not x5949) x6264)
+(or (not x6264) x5984)
+(or (not x6264) x5985)
+(or (not x6264) x5949)
+(or x6203 (not x6202) (not x6201) x6200 x116 x115 x6198)
+(or (not x6198) (not x6203))
+(or (not x6198) x6202)
+(or (not x6198) x6201)
+(or (not x6198) (not x6200))
+(or (not x6198) (not x116))
+(or (not x6198) (not x115))
+(or x6203 x6202 x6201 (not x6200) x116 x115 x6197)
+(or (not x6197) (not x6203))
+(or (not x6197) (not x6202))
+(or (not x6197) (not x6201))
+(or (not x6197) x6200)
+(or (not x6197) (not x116))
+(or (not x6197) (not x115))
+(or x6214 (not x6190))
+(or x6214 (not x6191))
+(or x6214 (not x6192))
+(or x6214 (not x6193))
+(or x6214 (not x6194))
+(or x6214 (not x6195))
+(or x6214 (not x6019))
+(or x6214 (not x6196))
+(or x6214 (not x6197))
+(or x6214 (not x6198))
+(or x6214 (not x6264))
+(or x6214 x115)
+(or x6190 x6191 x6192 x6193 x6194 x6195 x6019 x6196 x6197 x6198 x6264 (not x115) (not x6214))
+(or x6265 x6244)
+(or x6265 x6266)
+(or (not x6244) (not x6266) (not x6265))
+(or (not x6265) (not x6244) x6267)
+(or (not x6267) x6265)
+(or (not x6267) x6244)
+(or x6203 x6202 x6201 (not x6200) x116 (not x115) x6196)
+(or (not x6196) (not x6203))
+(or (not x6196) (not x6202))
+(or (not x6196) (not x6201))
+(or (not x6196) x6200)
+(or (not x6196) (not x116))
+(or (not x6196) x115)
+(or x6212 (not x6190))
+(or x6212 (not x6191))
+(or x6212 (not x6192))
+(or x6212 (not x6193))
+(or x6212 (not x6194))
+(or x6212 (not x6195))
+(or x6212 (not x6019))
+(or x6212 (not x6196))
+(or x6212 (not x6203))
+(or x6212 (not x6202))
+(or x6212 (not x6201))
+(or x6212 x6200)
+(or x6212 (not x116))
+(or x6212 (not x115))
+(or x6190 x6191 x6192 x6193 x6194 x6195 x6019 x6196 x6203 x6202 x6201 (not x6200) x116 x115 (not x6212))
+(or x6268 (not x6190))
+(or x6268 (not x6191))
+(or x6268 (not x6192))
+(or x6268 (not x6193))
+(or x6268 (not x6194))
+(or x6268 (not x6195))
+(or x6268 (not x6019))
+(or x6268 (not x6196))
+(or x6268 (not x6203))
+(or x6268 (not x6202))
+(or x6268 (not x6201))
+(or x6268 x6200)
+(or x6268 (not x116))
+(or x6268 (not x115))
+(or x6268 x6218)
+(or x6268 x6219)
+(or x6268 (not x6267))
+(or x6190 x6191 x6192 x6193 x6194 x6195 x6019 x6196 x6203 x6202 x6201 (not x6200) x116 x115 (not x6218) (not x6219) x6267 (not x6268))
+(or x6211 (not x6190))
+(or x6211 (not x6191))
+(or x6211 (not x6192))
+(or x6211 (not x6193))
+(or x6211 (not x6194))
+(or x6211 (not x6195))
+(or x6211 (not x6019))
+(or x6211 (not x6203))
+(or x6211 (not x6202))
+(or x6211 (not x6201))
+(or x6211 x6200)
+(or x6211 (not x116))
+(or x6211 x115)
+(or x6190 x6191 x6192 x6193 x6194 x6195 x6019 x6203 x6202 x6201 (not x6200) x116 (not x115) (not x6211))
+(or x6269 x6224)
+(or x6269 (not x6225))
+(or (not x6224) x6225 (not x6269))
+(or (not x6269) (not x6224) x6270)
+(or (not x6270) x6269)
+(or (not x6270) x6224)
+(or x6210 (not x6190))
+(or x6210 (not x6191))
+(or x6210 (not x6192))
+(or x6210 (not x6193))
+(or x6210 (not x6194))
+(or x6210 (not x6195))
+(or x6210 (not x6203))
+(or x6210 (not x6202))
+(or x6210 x6201)
+(or x6210 x6200)
+(or x6190 x6191 x6192 x6193 x6194 x6195 x6203 x6202 (not x6201) (not x6200) (not x6210))
+(or x6271 (not x6190))
+(or x6271 (not x6191))
+(or x6271 (not x6192))
+(or x6271 (not x6193))
+(or x6271 (not x6194))
+(or x6271 (not x6195))
+(or x6271 (not x6203))
+(or x6271 (not x6202))
+(or x6271 x6201)
+(or x6271 x6200)
+(or x6271 x6223)
+(or x6271 (not x6270))
+(or x6190 x6191 x6192 x6193 x6194 x6195 x6203 x6202 (not x6201) (not x6200) (not x6223) x6270 (not x6271))
+(or x6203 x6202 (not x6201) x6200 (not x6272) x6194)
+(or (not x6194) (not x6203))
+(or (not x6194) (not x6202))
+(or (not x6194) x6201)
+(or (not x6194) (not x6200))
+(or (not x6194) x6272)
+(or x6209 (not x6190))
+(or x6209 (not x6191))
+(or x6209 (not x6192))
+(or x6209 (not x6193))
+(or x6209 (not x6194))
+(or x6209 (not x6203))
+(or x6209 (not x6202))
+(or x6209 x6201)
+(or x6209 (not x6200))
+(or x6190 x6191 x6192 x6193 x6194 x6203 x6202 (not x6201) x6200 (not x6209))
+(or x6273 x6228)
+(or x6273 x6229)
+(or x6273 x6254)
+(or x6273 x6274)
+(or (not x6228) (not x6229) (not x6254) (not x6274) (not x6273))
+(or (not x6273) (not x6228) x6275)
+(or (not x6275) x6273)
+(or (not x6275) x6228)
+(or x6203 x6202 (not x6201) x6200 (not x115) (not x116) x6193)
+(or (not x6193) (not x6203))
+(or (not x6193) (not x6202))
+(or (not x6193) x6201)
+(or (not x6193) (not x6200))
+(or (not x6193) x115)
+(or (not x6193) x116)
+(or x6208 (not x6190))
+(or x6208 (not x6191))
+(or x6208 (not x6192))
+(or x6208 (not x6193))
+(or x6208 (not x6203))
+(or x6208 (not x6202))
+(or x6208 x6201)
+(or x6208 (not x6200))
+(or x6208 (not x6227))
+(or x6190 x6191 x6192 x6193 x6203 x6202 (not x6201) x6200 x6227 (not x6208))
+(or x6276 (not x6190))
+(or x6276 (not x6191))
+(or x6276 (not x6192))
+(or x6276 (not x6193))
+(or x6276 (not x6203))
+(or x6276 (not x6202))
+(or x6276 x6201)
+(or x6276 (not x6200))
+(or x6276 (not x6227))
+(or x6276 (not x6275))
+(or x6190 x6191 x6192 x6193 x6203 x6202 (not x6201) x6200 x6227 x6275 (not x6276))
+(or x6207 (not x6190))
+(or x6207 (not x6191))
+(or x6207 (not x6192))
+(or x6207 (not x6203))
+(or x6207 (not x6202))
+(or x6207 x6201)
+(or x6207 (not x6200))
+(or x6207 x115)
+(or x6207 x116)
+(or x6190 x6191 x6192 x6203 x6202 (not x6201) x6200 (not x115) (not x116) (not x6207))
+(or x6203 x6202 x6201 x6200 x115 (not x5796) (not x5795) (not x6272) (not x6175) (not x6176) x6191)
+(or (not x6191) (not x6203))
+(or (not x6191) (not x6202))
+(or (not x6191) (not x6201))
+(or (not x6191) (not x6200))
+(or (not x6191) (not x115))
+(or (not x6191) x5796)
+(or (not x6191) x5795)
+(or (not x6191) x6272)
+(or (not x6191) x6175)
+(or (not x6191) x6176)
+(or x6206 (not x6190))
+(or x6206 (not x6191))
+(or x6206 (not x6203))
+(or x6206 (not x6202))
+(or x6206 (not x6201))
+(or x6206 (not x6200))
+(or x6206 (not x115))
+(or x6206 x5796)
+(or x6206 x5795)
+(or x6190 x6191 x6203 x6202 x6201 x6200 x115 (not x5796) (not x5795) (not x6206))
+(or (not x5966) (not x6008) x6127)
+(or (not x6127) x5966)
+(or (not x6127) x6008)
+(or (not x5903) (not x5904) (not x6013) x6126)
+(or (not x6126) x5903)
+(or (not x6126) x5904)
+(or (not x6126) x6013)
+(or x6178 (not x6126))
+(or x6178 (not x6127))
+(or x6126 x6127 (not x6178))
+(or (not x6070) (not x6069) x6068)
+(or (not x6068) x6070)
+(or (not x6068) x6069)
+(or (not x6070) x6069 x6067)
+(or (not x6067) x6070)
+(or (not x6067) (not x6069))
+(or x6070 (not x6069) x6066)
+(or (not x6066) (not x6070))
+(or (not x6066) x6069)
+(or (not x114) x115 x5780)
+(or (not x5780) x114)
+(or (not x5780) (not x115))
+(or x6070 x6069 (not x114) x115 x6277)
+(or (not x6277) (not x6070))
+(or (not x6277) (not x6069))
+(or (not x6277) x114)
+(or (not x6277) (not x115))
+(or x6272 (not x6277))
+(or x6272 (not x6066))
+(or x6272 (not x6067))
+(or x6272 (not x6068))
+(or x6277 x6066 x6067 x6068 (not x6272))
+(or x6203 x6202 x6201 x6200 x115 (not x5796) (not x5795) x6192)
+(or (not x6192) (not x6203))
+(or (not x6192) (not x6202))
+(or (not x6192) (not x6201))
+(or (not x6192) (not x6200))
+(or (not x6192) (not x115))
+(or (not x6192) x5796)
+(or (not x6192) x5795)
+(or x6203 x6202 x6201 x6200 x115 (not x5796) (not x5795) (not x6272) (not x6178) x6190)
+(or (not x6190) (not x6203))
+(or (not x6190) (not x6202))
+(or (not x6190) (not x6201))
+(or (not x6190) (not x6200))
+(or (not x6190) (not x115))
+(or (not x6190) x5796)
+(or (not x6190) x5795)
+(or (not x6190) x6272)
+(or (not x6190) x6178)
+(or x6205 (not x6190))
+(or x6205 (not x6203))
+(or x6205 (not x6202))
+(or x6205 (not x6201))
+(or x6205 (not x6200))
+(or x6205 (not x115))
+(or x6205 x5796)
+(or x6205 x5795)
+(or x6205 (not x6227))
+(or x6205 (not x6126))
+(or x6205 (not x6127))
+(or x6190 x6203 x6202 x6201 x6200 x115 (not x5796) (not x5795) x6227 x6126 x6127 (not x6205))
+(or x6278 (not x6190))
+(or x6278 (not x6203))
+(or x6278 (not x6202))
+(or x6278 (not x6201))
+(or x6278 (not x6200))
+(or x6278 (not x115))
+(or x6278 x5796)
+(or x6278 x5795)
+(or x6278 (not x6227))
+(or x6278 (not x6126))
+(or x6278 (not x6127))
+(or x6278 x6231)
+(or x6278 x6279)
+(or x6190 x6203 x6202 x6201 x6200 x115 (not x5796) (not x5795) x6227 x6126 x6127 (not x6231) (not x6279) (not x6278))
+(or x6280 x6234)
+(or x6280 x6235)
+(or (not x6234) (not x6235) (not x6280))
+(or (not x6280) (not x6234) x6281)
+(or (not x6281) x6280)
+(or (not x6281) x6234)
+(or x5916 (not x5902))
+(or x5916 (not x5846))
+(or x5902 x5846 (not x5916))
+(or x5904 (not x5945))
+(or x5904 x5926)
+(or x5904 (not x5927))
+(or x5904 (not x5928))
+(or x5904 (not x5929))
+(or x5904 (not x5931))
+(or x5904 (not x5878))
+(or x5904 (not x5932))
+(or x5904 (not x5933))
+(or x5904 (not x5839))
+(or x5904 (not x5934))
+(or x5904 (not x5902))
+(or x5904 (not x5846))
+(or x5945 (not x5926) x5927 x5928 x5929 x5931 x5878 x5932 x5933 x5839 x5934 x5902 x5846 (not x5904))
+(or x6029 (not x5926))
+(or x6029 (not x5927))
+(or x5926 x5927 (not x6029))
+(or x6027 (not x5926))
+(or x6027 (not x5927))
+(or x6027 (not x5928))
+(or x6027 (not x5929))
+(or x5926 x5927 x5928 x5929 (not x6027))
+(or x6039 (not x5932))
+(or x6039 (not x5933))
+(or x5932 x5933 (not x6039))
+(or x6035 (not x5902))
+(or x6035 (not x5932))
+(or x6035 (not x5933))
+(or x5902 x5932 x5933 (not x6035))
+(or x6040 (not x5846))
+(or x6040 (not x5902))
+(or x6040 (not x5932))
+(or x6040 (not x5933))
+(or x5846 x5902 x5932 x5933 (not x6040))
+(or x6034 (not x5931))
+(or x6034 (not x5846))
+(or x6034 (not x5902))
+(or x6034 (not x5932))
+(or x6034 (not x5933))
+(or x5931 x5846 x5902 x5932 x5933 (not x6034))
+(or x5903 (not x5931))
+(or x5903 (not x5846))
+(or x5903 (not x5902))
+(or x5903 (not x5932))
+(or x5903 (not x5933))
+(or x5903 (not x5945))
+(or x5903 (not x5839))
+(or x5903 x5934)
+(or x5903 (not x5878))
+(or x5903 (not x5926))
+(or x5903 (not x5927))
+(or x5903 (not x5928))
+(or x5903 (not x5929))
+(or x5931 x5846 x5902 x5932 x5933 x5945 x5839 (not x5934) x5878 x5926 x5927 x5928 x5929 (not x5903))
+(or (not x5903) (not x5904) x6282)
+(or (not x6282) x5903)
+(or (not x6282) x5904)
+(or x6176 (not x6282))
+(or x6176 x6008)
+(or x6282 (not x6008) (not x6176))
+(or x5902 x5846 x5911)
+(or (not x5911) (not x5902))
+(or (not x5911) (not x5846))
+(or x5945 (not x5926) x5927 x5928 x5929 x5931 x5878 x5932 x5933 x5839 x5934 x5902 x5846 x5895)
+(or (not x5895) (not x5945))
+(or (not x5895) x5926)
+(or (not x5895) (not x5927))
+(or (not x5895) (not x5928))
+(or (not x5895) (not x5929))
+(or (not x5895) (not x5931))
+(or (not x5895) (not x5878))
+(or (not x5895) (not x5932))
+(or (not x5895) (not x5933))
+(or (not x5895) (not x5839))
+(or (not x5895) (not x5934))
+(or (not x5895) (not x5902))
+(or (not x5895) (not x5846))
+(or x5926 x5927 x5971)
+(or (not x5971) (not x5926))
+(or (not x5971) (not x5927))
+(or x5926 x5927 x5928 x5929 x5968)
+(or (not x5968) (not x5926))
+(or (not x5968) (not x5927))
+(or (not x5968) (not x5928))
+(or (not x5968) (not x5929))
+(or x5932 x5933 x5982)
+(or (not x5982) (not x5932))
+(or (not x5982) (not x5933))
+(or x5902 x5932 x5933 x5976)
+(or (not x5976) (not x5902))
+(or (not x5976) (not x5932))
+(or (not x5976) (not x5933))
+(or x5846 x5902 x5932 x5933 x5983)
+(or (not x5983) (not x5846))
+(or (not x5983) (not x5902))
+(or (not x5983) (not x5932))
+(or (not x5983) (not x5933))
+(or x5931 x5846 x5902 x5932 x5933 x5975)
+(or (not x5975) (not x5931))
+(or (not x5975) (not x5846))
+(or (not x5975) (not x5902))
+(or (not x5975) (not x5932))
+(or (not x5975) (not x5933))
+(or x5931 x5846 x5902 x5932 x5933 x5945 x5839 (not x5934) x5878 x5926 x5927 x5928 x5929 x5894)
+(or (not x5894) (not x5931))
+(or (not x5894) (not x5846))
+(or (not x5894) (not x5902))
+(or (not x5894) (not x5932))
+(or (not x5894) (not x5933))
+(or (not x5894) (not x5945))
+(or (not x5894) (not x5839))
+(or (not x5894) x5934)
+(or (not x5894) (not x5878))
+(or (not x5894) (not x5926))
+(or (not x5894) (not x5927))
+(or (not x5894) (not x5928))
+(or (not x5894) (not x5929))
+(or x5966 (not x5894))
+(or x5966 (not x5895))
+(or x5894 x5895 (not x5966))
+(or x6175 (not x5894))
+(or x6175 (not x5895))
+(or x6175 x6013)
+(or x5894 x5895 (not x6013) (not x6175))
+(or (not x6175) (not x6176) x6138)
+(or (not x6138) x6175)
+(or (not x6138) x6176)
+(or x6283 x6070)
+(or x6283 x6069)
+(or (not x6070) (not x6069) (not x6283))
+(or x6284 x6070)
+(or x6284 (not x6069))
+(or (not x6070) x6069 (not x6284))
+(or x6285 (not x6070))
+(or x6285 x6069)
+(or x6070 (not x6069) (not x6285))
+(or x5820 x114)
+(or x5820 (not x115))
+(or (not x114) x115 (not x5820))
+(or x6286 (not x6070))
+(or x6286 (not x6069))
+(or x6286 x114)
+(or x6286 (not x115))
+(or x6070 x6069 (not x114) x115 (not x6286))
+(or (not x6286) (not x6285) (not x6284) (not x6283) x6227)
+(or (not x6227) x6286)
+(or (not x6227) x6285)
+(or (not x6227) x6284)
+(or (not x6227) x6283)
+(or x6204 (not x6203))
+(or x6204 (not x6202))
+(or x6204 (not x6201))
+(or x6204 (not x6200))
+(or x6204 (not x115))
+(or x6204 x5796)
+(or x6204 x5795)
+(or x6204 (not x6227))
+(or x6204 (not x6138))
+(or x6203 x6202 x6201 x6200 x115 (not x5796) (not x5795) x6227 x6138 (not x6204))
+(or x6287 (not x6203))
+(or x6287 (not x6202))
+(or x6287 (not x6201))
+(or x6287 (not x6200))
+(or x6287 (not x115))
+(or x6287 x5796)
+(or x6287 x5795)
+(or x6287 (not x6227))
+(or x6287 (not x6138))
+(or x6287 x6238)
+(or x6287 x6233)
+(or x6287 (not x6281))
+(or x6203 x6202 x6201 x6200 x115 (not x5796) (not x5795) x6227 x6138 (not x6238) (not x6233) x6281 (not x6287))
+(or (not x6287) (not x6278) (not x6206) (not x6207) (not x6276) (not x6209) (not x6271) (not x6211) (not x6268) (not x6214) (not x6263) x6288)
+(or (not x6288) x6287)
+(or (not x6288) x6278)
+(or (not x6288) x6206)
+(or (not x6288) x6207)
+(or (not x6288) x6276)
+(or (not x6288) x6209)
+(or (not x6288) x6271)
+(or (not x6288) x6211)
+(or (not x6288) x6268)
+(or (not x6288) x6214)
+(or (not x6288) x6263)
+(or x6289 (not x6290))
+(or x6289 (not x5860))
+(or x6289 (not x6291))
+(or x6289 (not x5866))
+(or x6290 x5860 x6291 x5866 (not x6289))
+(or x6292 (not x6290))
+(or x6292 (not x5860))
+(or x6292 x5866)
+(or x6292 (not x5865))
+(or x6292 (not x5864))
+(or x6292 x5863)
+(or x6292 x5839)
+(or x6292 x6293)
+(or x6290 x5860 (not x5866) x5865 x5864 (not x5863) (not x5839) (not x6293) (not x6292))
+(or x6294 (not x5866))
+(or x6294 x5865)
+(or x6294 x5864)
+(or x6294 x5863)
+(or x6294 x5796)
+(or x6294 x5795)
+(or x6294 x6295)
+(or x6294 x6296)
+(or x5866 (not x5865) (not x5864) (not x5863) (not x5796) (not x5795) (not x6295) (not x6296) (not x6294))
+(or (not x6294) (not x6292) (not x6289) x6297)
+(or (not x6297) x6294)
+(or (not x6297) x6292)
+(or (not x6297) x6289)
+(or x6298 (not x6290))
+(or x6298 (not x5860))
+(or x6298 (not x6291))
+(or x6298 (not x5865))
+(or x6290 x5860 x6291 x5865 (not x6298))
+(or (not x6299) (not x6300) (not x6301) (not x6298) x6302)
+(or (not x6302) x6299)
+(or (not x6302) x6300)
+(or (not x6302) x6301)
+(or (not x6302) x6298)
+(or x6303 (not x6290))
+(or x6303 (not x5860))
+(or x6303 (not x6291))
+(or x6303 (not x5864))
+(or x6290 x5860 x6291 x5864 (not x6303))
+(or x5876 x5866)
+(or x5876 (not x5865))
+(or x5876 (not x5864))
+(or x5876 (not x5863))
+(or (not x5866) x5865 x5864 x5863 (not x5876))
+(or x6300 (not x6290))
+(or x6300 x5866)
+(or x6300 (not x5865))
+(or x6300 (not x5864))
+(or x6300 (not x5863))
+(or x6290 (not x5866) x5865 x5864 x5863 (not x6300))
+(or (not x6299) (not x6300) (not x6301) (not x6303) x6304)
+(or (not x6304) x6299)
+(or (not x6304) x6300)
+(or (not x6304) x6301)
+(or (not x6304) x6303)
+(or (not x5866) x5865 x5864 (not x5863) (not x5839) x6291)
+(or (not x6291) x5866)
+(or (not x6291) (not x5865))
+(or (not x6291) (not x5864))
+(or (not x6291) x5863)
+(or (not x6291) x5839)
+(or x6305 (not x6290))
+(or x6305 (not x5860))
+(or x6305 (not x6291))
+(or x6305 (not x5863))
+(or x6290 x5860 x6291 x5863 (not x6305))
+(or x5866 (not x5865) (not x5864) (not x5863) (not x5796) (not x5795) (not x6295) x6290)
+(or (not x6290) (not x5866))
+(or (not x6290) x5865)
+(or (not x6290) x5864)
+(or (not x6290) x5863)
+(or (not x6290) x5796)
+(or (not x6290) x5795)
+(or (not x6290) x6295)
+(or x6301 (not x6290))
+(or x6301 (not x5860))
+(or x6301 x5866)
+(or x6301 (not x5865))
+(or x6301 (not x5864))
+(or x6301 x5863)
+(or x6301 x5839)
+(or x6301 (not x6293))
+(or x6290 x5860 (not x5866) x5865 x5864 (not x5863) (not x5839) x6293 (not x6301))
+(or x6299 (not x5866))
+(or x6299 x5865)
+(or x6299 x5864)
+(or x6299 x5863)
+(or x6299 x5796)
+(or x6299 x5795)
+(or x6299 x6295)
+(or x6299 (not x6296))
+(or x5866 (not x5865) (not x5864) (not x5863) (not x5796) (not x5795) (not x6295) x6296 (not x6299))
+(or (not x6299) (not x6301) (not x6305) x6306)
+(or (not x6306) x6299)
+(or (not x6306) x6301)
+(or (not x6306) x6305)
+(or (not x6295) (not x6307) (not x5839) x6308)
+(or (not x6308) x6295)
+(or (not x6308) x6307)
+(or (not x6308) x5839)
+(or x6309 x6295)
+(or x6309 (not x6308))
+(or x6309 (not x6295))
+(or (not x6295) x6308 x6295 (not x6309))
+(or x6310 x6295)
+(or x6310 x6295)
+(or x6310 x6307)
+(or x6310 x5839)
+(or x6310 x6311)
+(or (not x6295) (not x6295) (not x6307) (not x5839) (not x6311) (not x6310))
+(or x6312 x6313)
+(or x6312 x6314)
+(or (not x6313) (not x6314) (not x6312))
+(or (not x6312) (not x6313) x6315)
+(or (not x6315) x6312)
+(or (not x6315) x6313)
+(or x6316 (not x6295))
+(or x6316 x6317)
+(or x6316 (not x6315))
+(or x6295 (not x6317) x6315 (not x6316))
+(or (not x6316) (not x6310) (not x6309) x6318)
+(or (not x6318) x6316)
+(or (not x6318) x6310)
+(or (not x6318) x6309)
+(or x5947 (not x5999))
+(or x5947 (not x6000))
+(or x5947 (not x6001))
+(or x5947 (not x6002))
+(or x5947 (not x6003))
+(or x5947 (not x6004))
+(or x5999 x6000 x6001 x6002 x6003 x6004 (not x5947))
+(or x5951 (not x6098))
+(or x5951 x6097)
+(or x5951 x6096)
+(or x5951 (not x6095))
+(or x6098 (not x6097) (not x6096) x6095 (not x5951))
+(or x5987 (not x6098))
+(or x5987 x6097)
+(or x5987 (not x6096))
+(or x5987 x6095)
+(or x6098 (not x6097) x6096 (not x6095) (not x5987))
+(or x5950 (not x6098))
+(or x5950 (not x6097))
+(or x5950 (not x6096))
+(or x5950 x6095)
+(or x6098 x6097 x6096 (not x6095) (not x5950))
+(or x6319 (not x6098))
+(or x6319 (not x6097))
+(or x6319 x6096)
+(or x6319 x6095)
+(or x6098 x6097 (not x6096) (not x6095) (not x6319))
+(or x5949 (not x6203))
+(or x5949 x6202)
+(or x5949 x6201)
+(or x5949 (not x6200))
+(or x6203 (not x6202) (not x6201) x6200 (not x5949))
+(or x5985 (not x6203))
+(or x5985 x6202)
+(or x5985 (not x6201))
+(or x5985 x6200)
+(or x6203 (not x6202) x6201 (not x6200) (not x5985))
+(or x5948 (not x6203))
+(or x5948 (not x6202))
+(or x5948 (not x6201))
+(or x5948 x6200)
+(or x6203 x6202 x6201 (not x6200) (not x5948))
+(or x6320 (not x6203))
+(or x6320 (not x6202))
+(or x6320 x6201)
+(or x6320 x6200)
+(or x6203 x6202 (not x6201) (not x6200) (not x6320))
+(or (not x6320) (not x5948) (not x5985) (not x5949) (not x6319) (not x5950) (not x5987) (not x5951) x6321)
+(or (not x6321) x6320)
+(or (not x6321) x5948)
+(or (not x6321) x5985)
+(or (not x6321) x5949)
+(or (not x6321) x6319)
+(or (not x6321) x5950)
+(or (not x6321) x5987)
+(or (not x6321) x5951)
+(or (not x6320) (not x5948) (not x5985) (not x5949) (not x6319) (not x5950) (not x5987) (not x5951) x5890 x5891 x6079)
+(or (not x6079) x6320)
+(or (not x6079) x5948)
+(or (not x6079) x5985)
+(or (not x6079) x5949)
+(or (not x6079) x6319)
+(or (not x6079) x5950)
+(or (not x6079) x5987)
+(or (not x6079) x5951)
+(or (not x6079) (not x5890))
+(or (not x6079) (not x5891))
+(or x5937 (not x6079))
+(or x5937 (not x6020))
+(or x5937 (not x6000))
+(or x5937 (not x6022))
+(or x5937 (not x6003))
+(or x6079 x6020 x6000 x6022 x6003 (not x5937))
+(or x6322 (not x6079))
+(or x6322 (not x6020))
+(or x6322 (not x6000))
+(or x6322 (not x6022))
+(or x6322 (not x6003))
+(or x6322 (not x5999))
+(or x6322 (not x6000))
+(or x6322 (not x6001))
+(or x6322 (not x6002))
+(or x6322 (not x6003))
+(or x6322 (not x6004))
+(or x6322 x5902)
+(or x6079 x6020 x6000 x6022 x6003 x5999 x6000 x6001 x6002 x6003 x6004 (not x5902) (not x6322))
+(or (not x6322) (not x6078) x6323)
+(or (not x6323) x6322)
+(or (not x6323) x6078)
+(or (not x6324) x5866)
+(or (not x6324) (not x5865))
+(or (not x6324) (not x5864))
+(or (not x6324) x5863)
+(or (not x5866) x5865 x5864 x5863 x5860)
+(or (not x5860) x5866)
+(or (not x5860) (not x5865))
+(or (not x5860) (not x5864))
+(or (not x5860) (not x5863))
+(or (not x6325) (not x5866))
+(or (not x6325) x5865)
+(or (not x6325) x5864)
+(or (not x6325) x5863)
+(or x6326 (not x6325))
+(or x6326 (not x5860))
+(or x6325 x5860 (not x6326))
+(or x6098 (not x6097) (not x6096) x6095 x6003)
+(or (not x6003) (not x6098))
+(or (not x6003) x6097)
+(or (not x6003) x6096)
+(or (not x6003) (not x6095))
+(or x6098 (not x6097) x6096 (not x6095) x6004)
+(or (not x6004) (not x6098))
+(or (not x6004) x6097)
+(or (not x6004) (not x6096))
+(or (not x6004) x6095)
+(or x6098 (not x6097) x6096 x6095 x6002)
+(or (not x6002) (not x6098))
+(or (not x6002) x6097)
+(or (not x6002) (not x6096))
+(or (not x6002) (not x6095))
+(or x6098 x6097 (not x6096) (not x6095) x6021)
+(or (not x6021) (not x6098))
+(or (not x6021) (not x6097))
+(or (not x6021) x6096)
+(or (not x6021) x6095)
+(or x6098 x6097 (not x6096) x6095 x6090)
+(or (not x6090) (not x6098))
+(or (not x6090) (not x6097))
+(or (not x6090) x6096)
+(or (not x6090) (not x6095))
+(or x6098 x6097 x6096 (not x6095) x6022)
+(or (not x6022) (not x6098))
+(or (not x6022) (not x6097))
+(or (not x6022) (not x6096))
+(or (not x6022) x6095)
+(or (not x6327) (not x6098))
+(or (not x6327) (not x6097))
+(or (not x6327) (not x6096))
+(or (not x6327) (not x6095))
+(or x6328 (not x6327))
+(or x6328 (not x6022))
+(or x6328 (not x6090))
+(or x6328 (not x6021))
+(or x6328 (not x6002))
+(or x6328 (not x6004))
+(or x6327 x6022 x6090 x6021 x6002 x6004 (not x6328))
+(or x6203 (not x6202) (not x6201) x6200 x6000)
+(or (not x6000) (not x6203))
+(or (not x6000) x6202)
+(or (not x6000) x6201)
+(or (not x6000) (not x6200))
+(or x6203 (not x6202) x6201 (not x6200) x6001)
+(or (not x6001) (not x6203))
+(or (not x6001) x6202)
+(or (not x6001) (not x6201))
+(or (not x6001) x6200)
+(or x6203 (not x6202) x6201 x6200 x5999)
+(or (not x5999) (not x6203))
+(or (not x5999) x6202)
+(or (not x5999) (not x6201))
+(or (not x5999) (not x6200))
+(or x6203 x6202 (not x6201) (not x6200) x6019)
+(or (not x6019) (not x6203))
+(or (not x6019) (not x6202))
+(or (not x6019) x6201)
+(or (not x6019) x6200)
+(or x6203 x6202 (not x6201) x6200 x6195)
+(or (not x6195) (not x6203))
+(or (not x6195) (not x6202))
+(or (not x6195) x6201)
+(or (not x6195) (not x6200))
+(or x6203 x6202 x6201 (not x6200) x6020)
+(or (not x6020) (not x6203))
+(or (not x6020) (not x6202))
+(or (not x6020) (not x6201))
+(or (not x6020) x6200)
+(or (not x6329) (not x6203))
+(or (not x6329) (not x6202))
+(or (not x6329) (not x6201))
+(or (not x6329) (not x6200))
+(or x6330 (not x6329))
+(or x6330 (not x6020))
+(or x6330 (not x6195))
+(or x6330 (not x6019))
+(or x6330 (not x5999))
+(or x6330 (not x6001))
+(or x6329 x6020 x6195 x6019 x5999 x6001 (not x6330))
+(or x6331 (not x6332))
+(or x6331 (not x6333))
+(or x6331 (not x6334))
+(or x6331 (not x6335))
+(or x6331 (not x6336))
+(or x6331 (not x6337))
+(or x6331 (not x122))
+(or x6331 x121)
+(or x6331 x120)
+(or x6331 x119)
+(or x6331 (not x6338))
+(or x6331 x6339)
+(or x6332 x6333 x6334 x6335 x6336 x6337 x122 (not x121) (not x120) (not x119) x6338 (not x6339) (not x6331))
+(or x6340 (not x6332))
+(or x6340 (not x6333))
+(or x6340 (not x6334))
+(or x6340 (not x6335))
+(or x6340 (not x6336))
+(or x6340 (not x122))
+(or x6340 x121)
+(or x6340 x120)
+(or x6340 (not x119))
+(or x6340 x123)
+(or x6340 (not x124))
+(or x6340 x6341)
+(or x6332 x6333 x6334 x6335 x6336 x122 (not x121) (not x120) x119 (not x123) x124 (not x6341) (not x6340))
+(or x6342 (not x122))
+(or x6342 (not x121))
+(or x6342 (not x120))
+(or x6342 x119)
+(or x6342 (not x6343))
+(or x122 x121 x120 (not x119) x6343 (not x6342))
+(or (not x6342) (not x6344) (not x6345) (not x6346) (not x6347) (not x6340) (not x6331) (not x6348) x6349)
+(or (not x6349) x6342)
+(or (not x6349) x6344)
+(or (not x6349) x6345)
+(or (not x6349) x6346)
+(or (not x6349) x6347)
+(or (not x6349) x6340)
+(or (not x6349) x6331)
+(or (not x6349) x6348)
+(or x6350 (not x6332))
+(or x6350 (not x6333))
+(or x6350 (not x122))
+(or x6350 (not x121))
+(or x6350 x120)
+(or x6350 x119)
+(or x6350 (not x6338))
+(or x6350 x6351)
+(or x6332 x6333 x122 x121 (not x120) (not x119) x6338 (not x6351) (not x6350))
+(or x6352 (not x6332))
+(or x6352 (not x122))
+(or x6352 (not x121))
+(or x6352 x120)
+(or x6352 (not x119))
+(or x6352 x6354)
+(or x6352 x6353)
+(or x6352 (not x6338))
+(or x6352 x6355)
+(or x6332 x122 x121 (not x120) x119 (not x6354) (not x6353) x6338 (not x6355) (not x6352))
+(or x6356 (not x6357) x6343)
+(or (not x6343) (not x6356))
+(or (not x6343) x6357)
+(or x6356 (not x6357) (not x6358) x6359)
+(or (not x6359) (not x6356))
+(or (not x6359) x6357)
+(or (not x6359) x6358)
+(or x6360 (not x122))
+(or x6360 (not x121))
+(or x6360 (not x120))
+(or x6360 x119)
+(or x6360 (not x6359))
+(or x122 x121 x120 (not x119) x6359 (not x6360))
+(or (not x6360) (not x6352) (not x6350) (not x6361) (not x6362) (not x6363) (not x6364) (not x6348) x6365)
+(or (not x6365) x6360)
+(or (not x6365) x6352)
+(or (not x6365) x6350)
+(or (not x6365) x6361)
+(or (not x6365) x6362)
+(or (not x6365) x6363)
+(or (not x6365) x6364)
+(or (not x6365) x6348)
+(or x6366 (not x6332))
+(or x6366 (not x6333))
+(or x6366 (not x6334))
+(or x6366 (not x6335))
+(or x6366 (not x122))
+(or x6366 x121)
+(or x6366 (not x120))
+(or x6366 x119)
+(or x6366 (not x6338))
+(or x6366 x6367)
+(or x6332 x6333 x6334 x6335 x122 (not x121) x120 (not x119) x6338 (not x6367) (not x6366))
+(or x6368 (not x6332))
+(or x6368 (not x6333))
+(or x6368 (not x6334))
+(or x6368 (not x122))
+(or x6368 x121)
+(or x6368 (not x120))
+(or x6368 (not x119))
+(or x6368 x123)
+(or x6368 (not x124))
+(or x6368 x6369)
+(or x6332 x6333 x6334 x122 (not x121) x120 x119 (not x123) x124 (not x6369) (not x6368))
+(or x6358 (not x6356))
+(or x6358 (not x6370))
+(or x6356 x6370 (not x6358))
+(or x6356 (not x6358) x6371)
+(or (not x6371) (not x6356))
+(or (not x6371) x6358)
+(or x6372 (not x122))
+(or x6372 (not x121))
+(or x6372 (not x120))
+(or x6372 x119)
+(or x6372 (not x6371))
+(or x122 x121 x120 (not x119) x6371 (not x6372))
+(or (not x6372) (not x6373) (not x6374) (not x6368) (not x6366) (not x6361) (not x6362) (not x6375) (not x6376) (not x6348) x6377)
+(or (not x6377) x6372)
+(or (not x6377) x6373)
+(or (not x6377) x6374)
+(or (not x6377) x6368)
+(or (not x6377) x6366)
+(or (not x6377) x6361)
+(or (not x6377) x6362)
+(or (not x6377) x6375)
+(or (not x6377) x6376)
+(or (not x6377) x6348)
+(or (not x122) (not x121) x120 x119 (not x6378) x6379)
+(or (not x6379) x122)
+(or (not x6379) x121)
+(or (not x6379) (not x120))
+(or (not x6379) (not x119))
+(or (not x6379) x6378)
+(or x6348 (not x6332))
+(or x6348 (not x6333))
+(or x6348 (not x6334))
+(or x6348 (not x6335))
+(or x6348 (not x6336))
+(or x6348 (not x6337))
+(or x6348 (not x6380))
+(or x6348 (not x6381))
+(or x6348 (not x6382))
+(or x6348 (not x6383))
+(or x6348 (not x6379))
+(or x6332 x6333 x6334 x6335 x6336 x6337 x6380 x6381 x6382 x6383 x6379 (not x6348))
+(or (not x122) x121 (not x120) (not x119) (not x123) x124 x6383)
+(or (not x6383) x122)
+(or (not x6383) (not x121))
+(or (not x6383) x120)
+(or (not x6383) x119)
+(or (not x6383) x123)
+(or (not x6383) (not x124))
+(or x6376 (not x6332))
+(or x6376 (not x6333))
+(or x6376 (not x6334))
+(or x6376 (not x6335))
+(or x6376 (not x6336))
+(or x6376 (not x6337))
+(or x6376 (not x6380))
+(or x6376 (not x6381))
+(or x6376 (not x6382))
+(or x6376 (not x6383))
+(or x6376 x122)
+(or x6376 x121)
+(or x6376 (not x120))
+(or x6376 (not x119))
+(or x6376 (not x6338))
+(or x6332 x6333 x6334 x6335 x6336 x6337 x6380 x6381 x6382 x6383 (not x122) (not x121) x120 x119 x6338 (not x6376))
+(or x6384 (not x6332))
+(or x6384 (not x6333))
+(or x6384 (not x6334))
+(or x6384 (not x6335))
+(or x6384 (not x6336))
+(or x6384 (not x6337))
+(or x6384 (not x6380))
+(or x6384 (not x6381))
+(or x6384 (not x6382))
+(or x6384 (not x6383))
+(or x6384 x122)
+(or x6384 x121)
+(or x6384 (not x120))
+(or x6384 (not x119))
+(or x6384 (not x6338))
+(or x6384 x6385)
+(or x6332 x6333 x6334 x6335 x6336 x6337 x6380 x6381 x6382 x6383 (not x122) (not x121) x120 x119 x6338 (not x6385) (not x6384))
+(or (not x122) x121 (not x120) x119 (not x6378) x6382)
+(or (not x6382) x122)
+(or (not x6382) (not x121))
+(or (not x6382) x120)
+(or (not x6382) (not x119))
+(or (not x6382) x6378)
+(or x6375 (not x6332))
+(or x6375 (not x6333))
+(or x6375 (not x6334))
+(or x6375 (not x6335))
+(or x6375 (not x6336))
+(or x6375 (not x6337))
+(or x6375 (not x6380))
+(or x6375 (not x6381))
+(or x6375 (not x6382))
+(or x6375 x122)
+(or x6375 (not x121))
+(or x6375 x120)
+(or x6375 x119)
+(or x6375 x123)
+(or x6375 (not x124))
+(or x6332 x6333 x6334 x6335 x6336 x6337 x6380 x6381 x6382 (not x122) x121 (not x120) (not x119) (not x123) x124 (not x6375))
+(or x6386 (not x6332))
+(or x6386 (not x6333))
+(or x6386 (not x6334))
+(or x6386 (not x6335))
+(or x6386 (not x6336))
+(or x6386 (not x6337))
+(or x6386 (not x6380))
+(or x6386 (not x6381))
+(or x6386 (not x6382))
+(or x6386 x122)
+(or x6386 (not x121))
+(or x6386 x120)
+(or x6386 x119)
+(or x6386 x123)
+(or x6386 (not x124))
+(or x6386 x6387)
+(or x6332 x6333 x6334 x6335 x6336 x6337 x6380 x6381 x6382 (not x122) x121 (not x120) (not x119) (not x123) x124 (not x6387) (not x6386))
+(or (not x122) x121 x120 (not x119) (not x6354) (not x6353) (not x123) x124 x6381)
+(or (not x6381) x122)
+(or (not x6381) (not x121))
+(or (not x6381) (not x120))
+(or (not x6381) x119)
+(or (not x6381) x6354)
+(or (not x6381) x6353)
+(or (not x6381) x123)
+(or (not x6381) (not x124))
+(or x6364 (not x6332))
+(or x6364 (not x6333))
+(or x6364 (not x6334))
+(or x6364 (not x6335))
+(or x6364 (not x6336))
+(or x6364 (not x6337))
+(or x6364 (not x6380))
+(or x6364 (not x6381))
+(or x6364 x122)
+(or x6364 (not x121))
+(or x6364 x120)
+(or x6364 (not x119))
+(or x6364 (not x6338))
+(or x6332 x6333 x6334 x6335 x6336 x6337 x6380 x6381 (not x122) x121 (not x120) x119 x6338 (not x6364))
+(or x6388 (not x6332))
+(or x6388 (not x6333))
+(or x6388 (not x6334))
+(or x6388 (not x6335))
+(or x6388 (not x6336))
+(or x6388 (not x6337))
+(or x6388 (not x6380))
+(or x6388 (not x6381))
+(or x6388 x122)
+(or x6388 (not x121))
+(or x6388 x120)
+(or x6388 (not x119))
+(or x6388 (not x6338))
+(or x6388 x6389)
+(or x6332 x6333 x6334 x6335 x6336 x6337 x6380 x6381 (not x122) x121 (not x120) x119 x6338 (not x6389) (not x6388))
+(or x122 (not x121) (not x120) (not x119) (not x6378) x6380)
+(or (not x6380) (not x122))
+(or (not x6380) x121)
+(or (not x6380) x120)
+(or (not x6380) x119)
+(or (not x6380) x6378)
+(or x6363 (not x6332))
+(or x6363 (not x6333))
+(or x6363 (not x6334))
+(or x6363 (not x6335))
+(or x6363 (not x6336))
+(or x6363 (not x6337))
+(or x6363 (not x6380))
+(or x6363 x122)
+(or x6363 (not x121))
+(or x6363 (not x120))
+(or x6363 x119)
+(or x6363 x6354)
+(or x6363 x6353)
+(or x6363 x123)
+(or x6363 (not x124))
+(or x6332 x6333 x6334 x6335 x6336 x6337 x6380 (not x122) x121 x120 (not x119) (not x6354) (not x6353) (not x123) x124 (not x6363))
+(or x6390 (not x6332))
+(or x6390 (not x6333))
+(or x6390 (not x6334))
+(or x6390 (not x6335))
+(or x6390 (not x6336))
+(or x6390 (not x6337))
+(or x6390 (not x6380))
+(or x6390 x122)
+(or x6390 (not x121))
+(or x6390 (not x120))
+(or x6390 x119)
+(or x6390 x6354)
+(or x6390 x6353)
+(or x6390 x123)
+(or x6390 (not x124))
+(or x6390 x6391)
+(or x6332 x6333 x6334 x6335 x6336 x6337 x6380 (not x122) x121 x120 (not x119) (not x6354) (not x6353) (not x123) x124 (not x6391) (not x6390))
+(or x122 (not x121) (not x120) x119 (not x123) x124 x6337)
+(or (not x6337) (not x122))
+(or (not x6337) x121)
+(or (not x6337) x120)
+(or (not x6337) (not x119))
+(or (not x6337) x123)
+(or (not x6337) (not x124))
+(or x6362 (not x6332))
+(or x6362 (not x6333))
+(or x6362 (not x6334))
+(or x6362 (not x6335))
+(or x6362 (not x6336))
+(or x6362 (not x6337))
+(or x6362 (not x122))
+(or x6362 x121)
+(or x6362 x120)
+(or x6362 x119)
+(or x6362 (not x6338))
+(or x6362 (not x6339))
+(or x6332 x6333 x6334 x6335 x6336 x6337 x122 (not x121) (not x120) (not x119) x6338 x6339 (not x6362))
+(or x122 (not x121) x120 (not x119) (not x6378) x6336)
+(or (not x6336) (not x122))
+(or (not x6336) x121)
+(or (not x6336) (not x120))
+(or (not x6336) x119)
+(or (not x6336) x6378)
+(or x6361 (not x6332))
+(or x6361 (not x6333))
+(or x6361 (not x6334))
+(or x6361 (not x6335))
+(or x6361 (not x6336))
+(or x6361 (not x122))
+(or x6361 x121)
+(or x6361 x120)
+(or x6361 (not x119))
+(or x6361 x123)
+(or x6361 (not x124))
+(or x6361 (not x6341))
+(or x6332 x6333 x6334 x6335 x6336 x122 (not x121) (not x120) x119 (not x123) x124 x6341 (not x6361))
+(or x122 (not x121) x120 x119 (not x123) x124 x6335)
+(or (not x6335) (not x122))
+(or (not x6335) x121)
+(or (not x6335) (not x120))
+(or (not x6335) (not x119))
+(or (not x6335) x123)
+(or (not x6335) (not x124))
+(or x6347 (not x6332))
+(or x6347 (not x6333))
+(or x6347 (not x6334))
+(or x6347 (not x6335))
+(or x6347 (not x122))
+(or x6347 x121)
+(or x6347 (not x120))
+(or x6347 x119)
+(or x6347 (not x6338))
+(or x6332 x6333 x6334 x6335 x122 (not x121) x120 (not x119) x6338 (not x6347))
+(or x6392 (not x6332))
+(or x6392 (not x6333))
+(or x6392 (not x6334))
+(or x6392 (not x6335))
+(or x6392 (not x122))
+(or x6392 x121)
+(or x6392 (not x120))
+(or x6392 x119)
+(or x6392 (not x6338))
+(or x6392 (not x6367))
+(or x6332 x6333 x6334 x6335 x122 (not x121) x120 (not x119) x6338 x6367 (not x6392))
+(or x122 x121 (not x120) (not x119) (not x6378) x6334)
+(or (not x6334) (not x122))
+(or (not x6334) (not x121))
+(or (not x6334) x120)
+(or (not x6334) x119)
+(or (not x6334) x6378)
+(or x6346 (not x6332))
+(or x6346 (not x6333))
+(or x6346 (not x6334))
+(or x6346 (not x122))
+(or x6346 x121)
+(or x6346 (not x120))
+(or x6346 (not x119))
+(or x6346 x123)
+(or x6346 (not x124))
+(or x6332 x6333 x6334 x122 (not x121) x120 x119 (not x123) x124 (not x6346))
+(or x6393 (not x6332))
+(or x6393 (not x6333))
+(or x6393 (not x6334))
+(or x6393 (not x122))
+(or x6393 x121)
+(or x6393 (not x120))
+(or x6393 (not x119))
+(or x6393 x123)
+(or x6393 (not x124))
+(or x6393 (not x6369))
+(or x6332 x6333 x6334 x122 (not x121) x120 x119 (not x123) x124 x6369 (not x6393))
+(or x122 x121 (not x120) x119 (not x6354) (not x6353) (not x6378) x6333)
+(or (not x6333) (not x122))
+(or (not x6333) (not x121))
+(or (not x6333) x120)
+(or (not x6333) (not x119))
+(or (not x6333) x6354)
+(or (not x6333) x6353)
+(or (not x6333) x6378)
+(or x6345 (not x6332))
+(or x6345 (not x6333))
+(or x6345 (not x122))
+(or x6345 (not x121))
+(or x6345 x120)
+(or x6345 x119)
+(or x6345 (not x6338))
+(or x6332 x6333 x122 x121 (not x120) (not x119) x6338 (not x6345))
+(or x6374 (not x6332))
+(or x6374 (not x6333))
+(or x6374 (not x122))
+(or x6374 (not x121))
+(or x6374 x120)
+(or x6374 x119)
+(or x6374 (not x6338))
+(or x6374 (not x6351))
+(or x6332 x6333 x122 x121 (not x120) (not x119) x6338 x6351 (not x6374))
+(or x122 x121 x120 (not x119) x6332)
+(or (not x6332) (not x122))
+(or (not x6332) (not x121))
+(or (not x6332) (not x120))
+(or (not x6332) x119)
+(or x6344 (not x6332))
+(or x6344 (not x122))
+(or x6344 (not x121))
+(or x6344 x120)
+(or x6344 (not x119))
+(or x6344 x6354)
+(or x6344 x6353)
+(or x6344 (not x6338))
+(or x6332 x122 x121 (not x120) x119 (not x6354) (not x6353) x6338 (not x6344))
+(or x6373 (not x6332))
+(or x6373 (not x122))
+(or x6373 (not x121))
+(or x6373 x120)
+(or x6373 (not x119))
+(or x6373 x6354)
+(or x6373 x6353)
+(or x6373 (not x6338))
+(or x6373 (not x6355))
+(or x6332 x122 x121 (not x120) x119 (not x6354) (not x6353) x6338 x6355 (not x6373))
+(or x6357 (not x6356))
+(or x6357 x6370)
+(or x6356 (not x6370) (not x6357))
+(or x6394 (not x122))
+(or x6394 (not x121))
+(or x6394 (not x120))
+(or x6394 x119)
+(or x6394 (not x6356))
+(or x6394 x6370)
+(or x122 x121 x120 (not x119) x6356 (not x6370) (not x6394))
+(or (not x6394) (not x6373) (not x6374) (not x6393) (not x6392) (not x6361) (not x6362) (not x6390) (not x6388) (not x6386) (not x6384) (not x6348) x6395)
+(or (not x6395) x6394)
+(or (not x6395) x6373)
+(or (not x6395) x6374)
+(or (not x6395) x6393)
+(or (not x6395) x6392)
+(or (not x6395) x6361)
+(or (not x6395) x6362)
+(or (not x6395) x6390)
+(or (not x6395) x6388)
+(or (not x6395) x6386)
+(or (not x6395) x6384)
+(or (not x6395) x6348)
+(or x6396 x6397 (not x6398) x6399)
+(or (not x6399) (not x6396))
+(or (not x6399) (not x6397))
+(or (not x6399) x6398)
+(or (not x6396) x6397 (not x6400) x6401)
+(or (not x6401) x6396)
+(or (not x6401) (not x6397))
+(or (not x6401) x6400)
+(or x6402 (not x6401))
+(or x6402 (not x6399))
+(or x6401 x6399 (not x6402))
+(or (not x6403) (not x6404) x6405 x6406 (not x6407) x6408)
+(or (not x6408) x6403)
+(or (not x6408) x6404)
+(or (not x6408) (not x6405))
+(or (not x6408) (not x6406))
+(or (not x6408) x6407)
+(or x6398 (not x6397))
+(or x6398 (not x6408))
+(or x6397 x6408 (not x6398))
+(or (not x6397) (not x6398) x6409)
+(or (not x6409) x6397)
+(or (not x6409) x6398)
+(or x6397 (not x6396) x6410)
+(or (not x6410) (not x6397))
+(or (not x6410) x6396)
+(or x6400 (not x6411))
+(or x6400 x6404)
+(or x6400 (not x6405))
+(or x6400 (not x6406))
+(or x6400 x6407)
+(or x6411 (not x6404) x6405 x6406 (not x6407) (not x6400))
+(or x6397 (not x6400) x6412)
+(or (not x6412) (not x6397))
+(or (not x6412) x6400)
+(or x6413 (not x6412))
+(or x6413 (not x6410))
+(or x6412 x6410 (not x6413))
+(or (not x6414) (not x6413) x6415)
+(or (not x6415) x6414)
+(or (not x6415) x6413)
+(or x6416 (not x6415))
+(or x6416 (not x6409))
+(or x6415 x6409 (not x6416))
+(or x6417 (not x6397))
+(or x6417 (not x6418))
+(or x6417 (not x6419))
+(or x6397 x6418 x6419 (not x6417))
+(or x6420 (not x6397))
+(or x6420 x6424)
+(or x6420 (not x6423))
+(or x6420 (not x6422))
+(or x6420 (not x6421))
+(or x6397 (not x6424) x6423 x6422 x6421 (not x6420))
+(or x6425 x6426)
+(or x6425 x6427)
+(or (not x6426) (not x6427) (not x6425))
+(or (not x6425) (not x6426) x6428)
+(or (not x6428) x6425)
+(or (not x6428) x6426)
+(or x6429 x6397)
+(or x6429 x6430)
+(or x6429 (not x6428))
+(or (not x6397) (not x6430) x6428 (not x6429))
+(or (not x6429) (not x6420) (not x6417) x6431)
+(or (not x6431) x6429)
+(or (not x6431) x6420)
+(or (not x6431) x6417)
+(or (not x6424) x6423 x6422 x6421 (not x6432) x6433)
+(or (not x6433) x6424)
+(or (not x6433) (not x6423))
+(or (not x6433) (not x6422))
+(or (not x6433) (not x6421))
+(or (not x6433) x6432)
+(or (not x6434) (not x6435) x6436 (not x6437) (not x6438) (not x6439) (not x6440) (not x6441) (not x6442) (not x6443) (not x6444) (not x6445) x6446)
+(or (not x6446) x6434)
+(or (not x6446) x6435)
+(or (not x6446) (not x6436))
+(or (not x6446) x6437)
+(or (not x6446) x6438)
+(or (not x6446) x6439)
+(or (not x6446) x6440)
+(or (not x6446) x6441)
+(or (not x6446) x6442)
+(or (not x6446) x6443)
+(or (not x6446) x6444)
+(or (not x6446) x6445)
+(or x6447 (not x6446))
+(or x6447 (not x6433))
+(or x6446 x6433 (not x6447))
+(or x6448 x6449 x6450)
+(or (not x6450) (not x6448))
+(or (not x6450) (not x6449))
+(or x6451 x6354)
+(or x6451 x6353)
+(or x6451 (not x6452))
+(or x6451 (not x6453))
+(or x6451 (not x6450))
+(or (not x6354) (not x6353) x6452 x6453 x6450 (not x6451))
+(or (not x6454) (not x6451) x6455)
+(or (not x6455) x6454)
+(or (not x6455) x6451)
+(or x6456 (not x6448))
+(or x6456 (not x6457))
+(or x6448 x6457 (not x6456))
+(or (not x6449) (not x6456) x6458)
+(or (not x6458) x6449)
+(or (not x6458) x6456)
+(or x6459 (not x6458))
+(or x6459 (not x6455))
+(or x6458 x6455 (not x6459))
+(or x6460 (not x6354) (not x6353) (not x6461) (not x6462) x6457)
+(or (not x6457) (not x6460))
+(or (not x6457) x6354)
+(or (not x6457) x6353)
+(or (not x6457) x6461)
+(or (not x6457) x6462)
+(or (not x6448) x6460 (not x6354) (not x6353) (not x6461) (not x6462) x6463)
+(or (not x6463) x6448)
+(or (not x6463) (not x6460))
+(or (not x6463) x6354)
+(or (not x6463) x6353)
+(or (not x6463) x6461)
+(or (not x6463) x6462)
+(or x6464 x6354)
+(or x6464 x6353)
+(or x6464 (not x6452))
+(or x6464 (not x6453))
+(or x6464 x6448)
+(or (not x6354) (not x6353) x6452 x6453 (not x6448) (not x6464))
+(or x6454 (not x6460))
+(or x6454 x6354)
+(or x6454 x6353)
+(or x6454 (not x6452))
+(or x6454 (not x6453))
+(or x6460 (not x6354) (not x6353) x6452 x6453 (not x6454))
+(or (not x6454) (not x6464) x6465)
+(or (not x6465) x6454)
+(or (not x6465) x6464)
+(or x6466 (not x6465))
+(or x6466 (not x6463))
+(or x6465 x6463 (not x6466))
+(or x6404 (not x6407) x6467)
+(or (not x6467) (not x6404))
+(or (not x6467) x6407)
+(or x6468 (not x6469))
+(or x6468 x6435)
+(or x6468 x6470)
+(or x6468 (not x6467))
+(or x6469 (not x6435) (not x6470) x6467 (not x6468))
+(or (not x6471) (not x6434) (not x6468) x6472)
+(or (not x6472) x6471)
+(or (not x6472) x6434)
+(or (not x6472) x6468)
+(or x6473 (not x6404))
+(or x6473 x6407)
+(or x6404 (not x6407) (not x6473))
+(or (not x6474) (not x6435) (not x6470) (not x6473) x6475)
+(or (not x6475) x6474)
+(or (not x6475) x6435)
+(or (not x6475) x6470)
+(or (not x6475) x6473)
+(or x6476 (not x6418))
+(or x6476 (not x6475))
+(or x6418 x6475 (not x6476))
+(or (not x6476) (not x6434) x6477)
+(or (not x6477) x6476)
+(or (not x6477) x6434)
+(or x6478 (not x6477))
+(or x6478 (not x6472))
+(or x6477 x6472 (not x6478))
+(or x6479 (not x6480))
+(or x6479 x6460)
+(or x6480 (not x6460) (not x6479))
+(or (not x6404) (not x6354) (not x6353) (not x6481) (not x6406) (not x6482) (not x6483) x6460 x6484 x6485 x6486 x6487 x6488 (not x6404) x6489 x6436 x6490 x6491 x6397 x6492 x6493)
+(or (not x6493) x6404)
+(or (not x6493) x6354)
+(or (not x6493) x6353)
+(or (not x6493) x6481)
+(or (not x6493) x6406)
+(or (not x6493) x6482)
+(or (not x6493) x6483)
+(or (not x6493) (not x6460))
+(or (not x6493) (not x6484))
+(or (not x6493) (not x6485))
+(or (not x6493) (not x6486))
+(or (not x6493) (not x6487))
+(or (not x6493) (not x6488))
+(or (not x6493) x6404)
+(or (not x6493) (not x6489))
+(or (not x6493) (not x6436))
+(or (not x6493) (not x6490))
+(or (not x6493) (not x6491))
+(or (not x6493) (not x6397))
+(or (not x6493) (not x6492))
+(or (not x6494) (not x6495) (not x6354) (not x6353) (not x6460) x6404 x6484 x6485 x6486 x6487 x6489 x6436 x6490 x6491 x6397 x6492 x6496)
+(or (not x6496) x6494)
+(or (not x6496) x6495)
+(or (not x6496) x6354)
+(or (not x6496) x6353)
+(or (not x6496) x6460)
+(or (not x6496) (not x6404))
+(or (not x6496) (not x6484))
+(or (not x6496) (not x6485))
+(or (not x6496) (not x6486))
+(or (not x6496) (not x6487))
+(or (not x6496) (not x6489))
+(or (not x6496) (not x6436))
+(or (not x6496) (not x6490))
+(or (not x6496) (not x6491))
+(or (not x6496) (not x6397))
+(or (not x6496) (not x6492))
+(or x6497 (not x6496))
+(or x6497 (not x6493))
+(or x6496 x6493 (not x6497))
+(or x6484 x6486 x6487 (not x6485) x6489 x6436 x6490 x6491 x6397 x6492 x6460 x6404 x6498)
+(or (not x6498) (not x6484))
+(or (not x6498) (not x6486))
+(or (not x6498) (not x6487))
+(or (not x6498) x6485)
+(or (not x6498) (not x6489))
+(or (not x6498) (not x6436))
+(or (not x6498) (not x6490))
+(or (not x6498) (not x6491))
+(or (not x6498) (not x6397))
+(or (not x6498) (not x6492))
+(or (not x6498) (not x6460))
+(or (not x6498) (not x6404))
+(or (not x6424) x6423 x6422 x6421 (not x6397) x6492 x6489 x6404 x6460 x6490 x6491 (not x6499) (not x6500) x6436 x6484 x6485 x6486 x6487 x6501)
+(or (not x6501) x6424)
+(or (not x6501) (not x6423))
+(or (not x6501) (not x6422))
+(or (not x6501) (not x6421))
+(or (not x6501) x6397)
+(or (not x6501) (not x6492))
+(or (not x6501) (not x6489))
+(or (not x6501) (not x6404))
+(or (not x6501) (not x6460))
+(or (not x6501) (not x6490))
+(or (not x6501) (not x6491))
+(or (not x6501) x6499)
+(or (not x6501) x6500)
+(or (not x6501) (not x6436))
+(or (not x6501) (not x6484))
+(or (not x6501) (not x6485))
+(or (not x6501) (not x6486))
+(or (not x6501) (not x6487))
+(or x6502 (not x6501))
+(or x6502 (not x6498))
+(or x6501 x6498 (not x6502))
+(or (not x6354) (not x6353) (not x6503) (not x6502) x6504)
+(or (not x6504) x6354)
+(or (not x6504) x6353)
+(or (not x6504) x6503)
+(or (not x6504) x6502)
+(or (not x6354) (not x6353) (not x6460) x6404 x6484 x6485 x6486 x6487 x6489 x6436 x6490 x6491 x6397 x6492 (not x6505) (not x6506) (not x6507) (not x6508) (not x6509) (not x6470) x6510)
+(or (not x6510) x6354)
+(or (not x6510) x6353)
+(or (not x6510) x6460)
+(or (not x6510) (not x6404))
+(or (not x6510) (not x6484))
+(or (not x6510) (not x6485))
+(or (not x6510) (not x6486))
+(or (not x6510) (not x6487))
+(or (not x6510) (not x6489))
+(or (not x6510) (not x6436))
+(or (not x6510) (not x6490))
+(or (not x6510) (not x6491))
+(or (not x6510) (not x6397))
+(or (not x6510) (not x6492))
+(or (not x6510) x6505)
+(or (not x6510) x6506)
+(or (not x6510) x6507)
+(or (not x6510) x6508)
+(or (not x6510) x6509)
+(or (not x6510) x6470)
+(or (not x6503) x6485 x6486 x6487 x6489 x6436 x6490 x6491 x6397 x6492 x6460 x6404 x6511)
+(or (not x6511) x6503)
+(or (not x6511) (not x6485))
+(or (not x6511) (not x6486))
+(or (not x6511) (not x6487))
+(or (not x6511) (not x6489))
+(or (not x6511) (not x6436))
+(or (not x6511) (not x6490))
+(or (not x6511) (not x6491))
+(or (not x6511) (not x6397))
+(or (not x6511) (not x6492))
+(or (not x6511) (not x6460))
+(or (not x6511) (not x6404))
+(or x6512 (not x6513))
+(or x6512 (not x6511))
+(or x6513 x6511 (not x6512))
+(or (not x6354) (not x6353) (not x6484) (not x6512) x6514)
+(or (not x6514) x6354)
+(or (not x6514) x6353)
+(or (not x6514) x6484)
+(or (not x6514) x6512)
+(or x6489 x6490 (not x6491) (not x6354) (not x6353) x6397 x6492 x6460 x6404 x6436 x6484 x6485 x6486 x6487 x6515)
+(or (not x6515) (not x6489))
+(or (not x6515) (not x6490))
+(or (not x6515) x6491)
+(or (not x6515) x6354)
+(or (not x6515) x6353)
+(or (not x6515) (not x6397))
+(or (not x6515) (not x6492))
+(or (not x6515) (not x6460))
+(or (not x6515) (not x6404))
+(or (not x6515) (not x6436))
+(or (not x6515) (not x6484))
+(or (not x6515) (not x6485))
+(or (not x6515) (not x6486))
+(or (not x6515) (not x6487))
+(or x6516 (not x6515))
+(or x6516 (not x6514))
+(or x6515 x6514 (not x6516))
+(or x6517 x6485)
+(or x6517 x6492)
+(or (not x6485) (not x6492) (not x6517))
+(or x6518 (not x6485))
+(or x6518 (not x6503))
+(or x6518 (not x6397))
+(or x6485 x6503 x6397 (not x6518))
+(or x6492 x6485 (not x6519) x6520)
+(or (not x6520) (not x6492))
+(or (not x6520) (not x6485))
+(or (not x6520) x6519)
+(or x6521 x6397)
+(or x6521 (not x6520))
+(or (not x6397) x6520 (not x6521))
+(or x6522 x6503)
+(or x6522 (not x6397))
+(or x6522 (not x6492))
+(or (not x6503) x6397 x6492 (not x6522))
+(or (not x6354) (not x6353) x6436 x6484 x6489 x6404 x6460 x6490 x6491 x6486 x6487 (not x6522) (not x6521) (not x6518) (not x6517) x6523)
+(or (not x6523) x6354)
+(or (not x6523) x6353)
+(or (not x6523) (not x6436))
+(or (not x6523) (not x6484))
+(or (not x6523) (not x6489))
+(or (not x6523) (not x6404))
+(or (not x6523) (not x6460))
+(or (not x6523) (not x6490))
+(or (not x6523) (not x6491))
+(or (not x6523) (not x6486))
+(or (not x6523) (not x6487))
+(or (not x6523) x6522)
+(or (not x6523) x6521)
+(or (not x6523) x6518)
+(or (not x6523) x6517)
+(or (not x6354) (not x6353) (not x6524) x6525)
+(or (not x6525) x6354)
+(or (not x6525) x6353)
+(or (not x6525) x6524)
+(or x6445 (not x6526))
+(or x6445 (not x6527))
+(or x6526 x6527 (not x6445))
+(or x6528 (not x6529))
+(or x6528 x6486)
+(or x6529 (not x6486) (not x6528))
+(or x6530 (not x6397))
+(or x6530 (not x6486))
+(or x6530 (not x6484))
+(or x6530 (not x6485))
+(or x6397 x6486 x6484 x6485 (not x6530))
+(or x6531 x6485)
+(or x6531 x6484)
+(or (not x6485) (not x6484) (not x6531))
+(or x6487 (not x6531) (not x6530) (not x6528) x6532)
+(or (not x6532) (not x6487))
+(or (not x6532) x6531)
+(or (not x6532) x6530)
+(or (not x6532) x6528)
+(or x6444 (not x6492))
+(or x6444 (not x6489))
+(or x6444 (not x6404))
+(or x6444 (not x6460))
+(or x6444 (not x6490))
+(or x6444 (not x6491))
+(or x6444 (not x6532))
+(or x6492 x6489 x6404 x6460 x6490 x6491 x6532 (not x6444))
+(or x6443 x6491)
+(or x6443 x6490)
+(or (not x6491) (not x6490) (not x6443))
+(or x6442 (not x6533))
+(or x6442 x6492)
+(or x6533 (not x6492) (not x6442))
+(or x6441 x6404)
+(or x6441 (not x6534))
+(or (not x6404) x6534 (not x6441))
+(or (not x6424) x6423 x6422 x6421 x6503 x6535)
+(or (not x6535) x6424)
+(or (not x6535) (not x6423))
+(or (not x6535) (not x6422))
+(or (not x6535) (not x6421))
+(or (not x6535) (not x6503))
+(or (not x6424) x6423 x6422 x6421 (not x6503) (not x6419) x6536)
+(or (not x6536) x6424)
+(or (not x6536) (not x6423))
+(or (not x6536) (not x6422))
+(or (not x6536) (not x6421))
+(or (not x6536) x6503)
+(or (not x6536) x6419)
+(or x6519 (not x6536))
+(or x6519 (not x6535))
+(or x6536 x6535 (not x6519))
+(or (not x6424) x6423 x6422 x6421 (not x6503) x6537)
+(or (not x6537) x6424)
+(or (not x6537) (not x6423))
+(or (not x6537) (not x6422))
+(or (not x6537) (not x6421))
+(or (not x6537) x6503)
+(or x6538 (not x6537))
+(or x6538 (not x6536))
+(or x6538 (not x6535))
+(or x6537 x6536 x6535 (not x6538))
+(or x6486 x6484 x6485 x6492 x6489 x6404 x6460 x6490 x6491 (not x6538) x6539)
+(or (not x6539) (not x6486))
+(or (not x6539) (not x6484))
+(or (not x6539) (not x6485))
+(or (not x6539) (not x6492))
+(or (not x6539) (not x6489))
+(or (not x6539) (not x6404))
+(or (not x6539) (not x6460))
+(or (not x6539) (not x6490))
+(or (not x6539) (not x6491))
+(or (not x6539) x6538)
+(or x6440 x6397)
+(or x6440 (not x6539))
+(or (not x6397) x6539 (not x6440))
+(or x6439 (not x6540))
+(or x6439 x6460)
+(or x6540 (not x6460) (not x6439))
+(or x6438 (not x6541))
+(or x6438 x6489)
+(or x6541 (not x6489) (not x6438))
+(or x6437 x6488)
+(or x6437 x6404)
+(or (not x6488) (not x6404) (not x6437))
+(or (not x6470) (not x6354) (not x6353) x6436 (not x6437) (not x6438) (not x6439) (not x6440) (not x6441) (not x6442) (not x6443) (not x6444) (not x6445) (not x6542) (not x6507) (not x6543) (not x6544) (not x6509) (not x6545) (not x6434) x6546)
+(or (not x6546) x6470)
+(or (not x6546) x6354)
+(or (not x6546) x6353)
+(or (not x6546) (not x6436))
+(or (not x6546) x6437)
+(or (not x6546) x6438)
+(or (not x6546) x6439)
+(or (not x6546) x6440)
+(or (not x6546) x6441)
+(or (not x6546) x6442)
+(or (not x6546) x6443)
+(or (not x6546) x6444)
+(or (not x6546) x6445)
+(or (not x6546) x6542)
+(or (not x6546) x6507)
+(or (not x6546) x6543)
+(or (not x6546) x6544)
+(or (not x6546) x6509)
+(or (not x6546) x6545)
+(or (not x6546) x6434)
+(or x6547 x6354)
+(or x6547 x6353)
+(or x6547 (not x6436))
+(or x6547 (not x6548))
+(or x6547 (not x6549))
+(or x6547 (not x6550))
+(or x6547 (not x6551))
+(or x6547 (not x6552))
+(or x6547 (not x6553))
+(or x6547 (not x6554))
+(or x6547 (not x6555))
+(or x6547 (not x6556))
+(or x6547 (not x6557))
+(or x6547 (not x6558))
+(or x6547 (not x6559))
+(or x6547 (not x6560))
+(or x6547 (not x6561))
+(or x6547 (not x6562))
+(or x6547 (not x6418))
+(or (not x6354) (not x6353) x6436 x6548 x6549 x6550 x6551 x6552 x6553 x6554 x6555 x6556 x6557 x6558 x6559 x6560 x6561 x6562 x6418 (not x6547))
+(or x6563 x6354)
+(or x6563 x6353)
+(or x6563 (not x6436))
+(or x6563 (not x6548))
+(or x6563 (not x6549))
+(or x6563 (not x6550))
+(or x6563 (not x6551))
+(or x6563 (not x6552))
+(or x6563 (not x6553))
+(or x6563 (not x6554))
+(or x6563 (not x6555))
+(or x6563 (not x6556))
+(or x6563 (not x6557))
+(or x6563 (not x6558))
+(or x6563 (not x6559))
+(or x6563 (not x6560))
+(or x6563 (not x6561))
+(or x6563 (not x6562))
+(or x6563 x6432)
+(or (not x6354) (not x6353) x6436 x6548 x6549 x6550 x6551 x6552 x6553 x6554 x6555 x6556 x6557 x6558 x6559 x6560 x6561 x6562 (not x6432) (not x6563))
+(or (not x6563) (not x6547) x6564)
+(or (not x6564) x6563)
+(or (not x6564) x6547)
+(or x6565 (not x6564))
+(or x6565 (not x6546))
+(or x6564 x6546 (not x6565))
+(or (not x6434) (not x6566) x6567)
+(or (not x6567) x6434)
+(or (not x6567) x6566)
+(or (not x6424) x6423 x6422 x6421 (not x6568) x6569)
+(or (not x6569) x6424)
+(or (not x6569) (not x6423))
+(or (not x6569) (not x6422))
+(or (not x6569) (not x6421))
+(or (not x6569) x6568)
+(or x6570 (not x6569))
+(or x6570 (not x6567))
+(or x6569 x6567 (not x6570))
+(or (not x6434) (not x6571) x6572)
+(or (not x6572) x6434)
+(or (not x6572) x6571)
+(or x6573 (not x6418))
+(or x6573 (not x6572))
+(or x6418 x6572 (not x6573))
+(or x6490 x6491 (not x6489) (not x6354) (not x6353) x6397 x6492 x6460 x6404 x6436 x6484 x6485 x6486 x6487 x6574)
+(or (not x6574) (not x6490))
+(or (not x6574) (not x6491))
+(or (not x6574) x6489)
+(or (not x6574) x6354)
+(or (not x6574) x6353)
+(or (not x6574) (not x6397))
+(or (not x6574) (not x6492))
+(or (not x6574) (not x6460))
+(or (not x6574) (not x6404))
+(or (not x6574) (not x6436))
+(or (not x6574) (not x6484))
+(or (not x6574) (not x6485))
+(or (not x6574) (not x6486))
+(or (not x6574) (not x6487))
+(or (not x6506) (not x6507) (not x6508) (not x6509) x6575)
+(or (not x6575) x6506)
+(or (not x6575) x6507)
+(or (not x6575) x6508)
+(or (not x6575) x6509)
+(or x6576 (not x6577))
+(or x6576 (not x6578))
+(or x6576 (not x6559))
+(or x6576 (not x6558))
+(or x6576 (not x6579))
+(or x6576 (not x6580))
+(or x6576 (not x6562))
+(or x6576 (not x6561))
+(or x6576 (not x6448))
+(or x6576 (not x6449))
+(or x6577 x6578 x6559 x6558 x6579 x6580 x6562 x6561 x6448 x6449 (not x6576))
+(or (not x6542) (not x6507) (not x6543) (not x6544) (not x6509) (not x6545) x6480)
+(or (not x6480) x6542)
+(or (not x6480) x6507)
+(or (not x6480) x6543)
+(or (not x6480) x6544)
+(or (not x6480) x6509)
+(or (not x6480) x6545)
+(or x6494 (not x6480))
+(or x6494 (not x6578))
+(or x6494 (not x6558))
+(or x6494 (not x6580))
+(or x6494 (not x6561))
+(or x6494 x6470)
+(or x6480 x6578 x6558 x6580 x6561 (not x6470) (not x6494))
+(or (not x6494) (not x6576) (not x6506) (not x6507) (not x6508) (not x6509) x6404 x6484 x6485 x6486 x6487 x6489 x6436 x6490 x6491 x6397 x6492 x6581)
+(or (not x6581) x6494)
+(or (not x6581) x6576)
+(or (not x6581) x6506)
+(or (not x6581) x6507)
+(or (not x6581) x6508)
+(or (not x6581) x6509)
+(or (not x6581) (not x6404))
+(or (not x6581) (not x6484))
+(or (not x6581) (not x6485))
+(or (not x6581) (not x6486))
+(or (not x6581) (not x6487))
+(or (not x6581) (not x6489))
+(or (not x6581) (not x6436))
+(or (not x6581) (not x6490))
+(or (not x6581) (not x6491))
+(or (not x6581) (not x6397))
+(or (not x6581) (not x6492))
+(or x6481 (not x6407))
+(or x6481 (not x6405))
+(or x6481 (not x6406))
+(or x6481 x6435)
+(or x6481 x6471)
+(or x6407 x6405 x6406 (not x6435) (not x6471) (not x6481))
+(or (not x6481) (not x6406) (not x6482) (not x6483) x6460 x6484 x6485 x6486 x6487 x6488 (not x6404) x6489 x6436 x6490 x6491 x6397 x6492 x6513)
+(or (not x6513) x6481)
+(or (not x6513) x6406)
+(or (not x6513) x6482)
+(or (not x6513) x6483)
+(or (not x6513) (not x6460))
+(or (not x6513) (not x6484))
+(or (not x6513) (not x6485))
+(or (not x6513) (not x6486))
+(or (not x6513) (not x6487))
+(or (not x6513) (not x6488))
+(or (not x6513) x6404)
+(or (not x6513) (not x6489))
+(or (not x6513) (not x6436))
+(or (not x6513) (not x6490))
+(or (not x6513) (not x6491))
+(or (not x6513) (not x6397))
+(or (not x6513) (not x6492))
+(or x6582 (not x6513))
+(or x6582 (not x6581))
+(or x6513 x6581 (not x6582))
+(or (not x6354) (not x6353) (not x6460) (not x6582) x6583)
+(or (not x6583) x6354)
+(or (not x6583) x6353)
+(or (not x6583) x6460)
+(or (not x6583) x6582)
+(or x6584 (not x6583))
+(or x6584 (not x6574))
+(or x6583 x6574 (not x6584))
+(or (not x6585) (not x6586) x6556)
+(or (not x6556) x6585)
+(or (not x6556) x6586)
+(or (not x6587) (not x6486) x6588)
+(or (not x6588) x6587)
+(or (not x6588) x6486)
+(or x6397 x6486 x6484 x6485 x6589)
+(or (not x6589) (not x6397))
+(or (not x6589) (not x6486))
+(or (not x6589) (not x6484))
+(or (not x6589) (not x6485))
+(or (not x6485) (not x6484) x6590)
+(or (not x6590) x6485)
+(or (not x6590) x6484)
+(or x6591 (not x6487))
+(or x6591 (not x6590))
+(or x6591 (not x6589))
+(or x6591 (not x6588))
+(or x6487 x6590 x6589 x6588 (not x6591))
+(or x6492 x6489 x6404 x6460 x6490 x6491 x6527)
+(or (not x6527) (not x6492))
+(or (not x6527) (not x6489))
+(or (not x6527) (not x6404))
+(or (not x6527) (not x6460))
+(or (not x6527) (not x6490))
+(or (not x6527) (not x6491))
+(or x6492 x6489 x6404 x6460 x6490 x6491 (not x6591) x6555)
+(or (not x6555) (not x6492))
+(or (not x6555) (not x6489))
+(or (not x6555) (not x6404))
+(or (not x6555) (not x6460))
+(or (not x6555) (not x6490))
+(or (not x6555) (not x6491))
+(or (not x6555) x6591)
+(or (not x6491) (not x6490) x6554)
+(or (not x6554) x6491)
+(or (not x6554) x6490)
+(or (not x6592) (not x6492) x6553)
+(or (not x6553) x6592)
+(or (not x6553) x6492)
+(or (not x6404) (not x6593) x6552)
+(or (not x6552) x6404)
+(or (not x6552) x6593)
+(or x6500 x6424)
+(or x6500 (not x6423))
+(or x6500 (not x6422))
+(or x6500 (not x6421))
+(or x6500 (not x6503))
+(or (not x6424) x6423 x6422 x6421 x6503 (not x6500))
+(or x6499 x6424)
+(or x6499 (not x6423))
+(or x6499 (not x6422))
+(or x6499 (not x6421))
+(or x6499 x6503)
+(or x6499 x6419)
+(or (not x6424) x6423 x6422 x6421 (not x6503) (not x6419) (not x6499))
+(or x6594 x6424)
+(or x6594 (not x6423))
+(or x6594 (not x6422))
+(or x6594 (not x6421))
+(or x6594 x6503)
+(or (not x6424) x6423 x6422 x6421 (not x6503) (not x6594))
+(or (not x6594) (not x6499) (not x6500) x6595)
+(or (not x6595) x6594)
+(or (not x6595) x6499)
+(or (not x6595) x6500)
+(or x6586 (not x6492))
+(or x6586 (not x6489))
+(or x6586 (not x6404))
+(or x6586 (not x6460))
+(or x6586 (not x6490))
+(or x6586 (not x6491))
+(or x6492 x6489 x6404 x6460 x6490 x6491 (not x6586))
+(or x6596 (not x6486))
+(or x6596 (not x6484))
+(or x6596 (not x6485))
+(or x6596 (not x6492))
+(or x6596 (not x6489))
+(or x6596 (not x6404))
+(or x6596 (not x6460))
+(or x6596 (not x6490))
+(or x6596 (not x6491))
+(or x6596 (not x6595))
+(or x6486 x6484 x6485 x6492 x6489 x6404 x6460 x6490 x6491 x6595 (not x6596))
+(or (not x6397) (not x6596) x6551)
+(or (not x6551) x6397)
+(or (not x6551) x6596)
+(or (not x6597) (not x6460) x6550)
+(or (not x6550) x6597)
+(or (not x6550) x6460)
+(or (not x6598) (not x6489) x6549)
+(or (not x6549) x6598)
+(or (not x6549) x6489)
+(or (not x6488) (not x6404) x6548)
+(or (not x6548) x6488)
+(or (not x6548) x6404)
+(or x6599 x6354)
+(or x6599 x6353)
+(or x6599 (not x6436))
+(or x6599 (not x6548))
+(or x6599 (not x6549))
+(or x6599 (not x6550))
+(or x6599 (not x6551))
+(or x6599 (not x6552))
+(or x6599 (not x6553))
+(or x6599 (not x6554))
+(or x6599 (not x6555))
+(or x6599 (not x6556))
+(or (not x6354) (not x6353) x6436 x6548 x6549 x6550 x6551 x6552 x6553 x6554 x6555 x6556 (not x6599))
+(or x6487 (not x6354) (not x6353) x6484 x6485 (not x6486) x6489 x6436 x6490 x6491 x6397 x6492 x6460 x6404 x6600)
+(or (not x6600) (not x6487))
+(or (not x6600) x6354)
+(or (not x6600) x6353)
+(or (not x6600) (not x6484))
+(or (not x6600) (not x6485))
+(or (not x6600) x6486)
+(or (not x6600) (not x6489))
+(or (not x6600) (not x6436))
+(or (not x6600) (not x6490))
+(or (not x6600) (not x6491))
+(or (not x6600) (not x6397))
+(or (not x6600) (not x6492))
+(or (not x6600) (not x6460))
+(or (not x6600) (not x6404))
+(or x6482 (not x6471))
+(or x6482 (not x6407))
+(or x6482 (not x6405))
+(or x6482 (not x6406))
+(or x6482 x6435)
+(or x6471 x6407 x6405 x6406 (not x6435) (not x6482))
+(or x6407 x6405 x6406 (not x6435) (not x6471) x6601)
+(or (not x6601) (not x6407))
+(or (not x6601) (not x6405))
+(or (not x6601) (not x6406))
+(or (not x6601) x6435)
+(or (not x6601) x6471)
+(or x6602 (not x6601))
+(or x6602 x6406)
+(or x6601 (not x6406) (not x6602))
+(or (not x6354) (not x6353) (not x6602) (not x6482) (not x6483) x6460 x6484 x6485 x6486 x6487 x6488 (not x6404) x6489 x6436 x6490 x6491 x6397 x6492 x6603)
+(or (not x6603) x6354)
+(or (not x6603) x6353)
+(or (not x6603) x6602)
+(or (not x6603) x6482)
+(or (not x6603) x6483)
+(or (not x6603) (not x6460))
+(or (not x6603) (not x6484))
+(or (not x6603) (not x6485))
+(or (not x6603) (not x6486))
+(or (not x6603) (not x6487))
+(or (not x6603) (not x6488))
+(or (not x6603) x6404)
+(or (not x6603) (not x6489))
+(or (not x6603) (not x6436))
+(or (not x6603) (not x6490))
+(or (not x6603) (not x6491))
+(or (not x6603) (not x6397))
+(or (not x6603) (not x6492))
+(or x6489 x6491 (not x6490) (not x6354) (not x6353) x6397 x6492 x6460 x6404 x6436 x6484 x6485 x6486 x6487 x6604)
+(or (not x6604) (not x6489))
+(or (not x6604) (not x6491))
+(or (not x6604) x6490)
+(or (not x6604) x6354)
+(or (not x6604) x6353)
+(or (not x6604) (not x6397))
+(or (not x6604) (not x6492))
+(or (not x6604) (not x6460))
+(or (not x6604) (not x6404))
+(or (not x6604) (not x6436))
+(or (not x6604) (not x6484))
+(or (not x6604) (not x6485))
+(or (not x6604) (not x6486))
+(or (not x6604) (not x6487))
+(or x6414 x6396 x6411)
+(or (not x6411) (not x6414))
+(or (not x6411) (not x6396))
+(or x6483 (not x6411))
+(or x6483 (not x6405))
+(or x6483 (not x6406))
+(or x6483 x6407)
+(or x6411 x6405 x6406 (not x6407) (not x6483))
+(or (not x6483) x6471 x6407 x6405 x6406 (not x6435) x6605)
+(or (not x6605) x6483)
+(or (not x6605) (not x6471))
+(or (not x6605) (not x6407))
+(or (not x6605) (not x6405))
+(or (not x6605) (not x6406))
+(or (not x6605) x6435)
+(or x6403 (not x6414))
+(or x6403 (not x6396))
+(or x6414 x6396 (not x6403))
+(or (not x6403) x6405 x6406 (not x6407) x6606)
+(or (not x6606) x6403)
+(or (not x6606) (not x6405))
+(or (not x6606) (not x6406))
+(or (not x6606) x6407)
+(or x6607 (not x6606))
+(or x6607 (not x6605))
+(or x6606 x6605 (not x6607))
+(or (not x6354) (not x6353) x6460 x6484 x6485 x6486 x6487 x6488 (not x6404) x6489 x6436 x6490 x6491 x6397 x6492 (not x6607) x6608)
+(or (not x6608) x6354)
+(or (not x6608) x6353)
+(or (not x6608) (not x6460))
+(or (not x6608) (not x6484))
+(or (not x6608) (not x6485))
+(or (not x6608) (not x6486))
+(or (not x6608) (not x6487))
+(or (not x6608) (not x6488))
+(or (not x6608) x6404)
+(or (not x6608) (not x6489))
+(or (not x6608) (not x6436))
+(or (not x6608) (not x6490))
+(or (not x6608) (not x6491))
+(or (not x6608) (not x6397))
+(or (not x6608) (not x6492))
+(or (not x6608) x6607)
+(or x6609 (not x6610))
+(or x6609 (not x6611))
+(or x6609 (not x6612))
+(or x6609 (not x6613))
+(or x6609 (not x6615))
+(or x6610 x6611 x6612 x6613 x6615 (not x6609))
+(or x6616 (not x6615))
+(or x6616 (not x6614))
+(or x6616 x123)
+(or x6616 (not x124))
+(or x6616 x6354)
+(or x6616 x6353)
+(or x6615 x6614 (not x123) x124 (not x6354) (not x6353) (not x6616))
+(or (not x6616) (not x6617) (not x6609) x6618)
+(or (not x6618) x6616)
+(or (not x6618) x6617)
+(or (not x6618) x6609)
+(or x6619 (not x6610))
+(or x6619 (not x6611))
+(or x6619 (not x6612))
+(or x6619 (not x6613))
+(or x6619 (not x6614))
+(or x6610 x6611 x6612 x6613 x6614 (not x6619))
+(or x6617 (not x6610))
+(or x6617 (not x6611))
+(or x6617 (not x6612))
+(or x6617 x6615)
+(or x6617 x6614)
+(or x6610 x6611 x6612 (not x6615) (not x6614) (not x6617))
+(or x6615 x6614 (not x123) x124 (not x6354) (not x6353) x6610)
+(or (not x6610) (not x6615))
+(or (not x6610) (not x6614))
+(or (not x6610) x123)
+(or (not x6610) (not x124))
+(or (not x6610) x6354)
+(or (not x6610) x6353)
+(or x6620 (not x6610))
+(or x6620 (not x6615))
+(or x6620 x6614)
+(or x6610 x6615 (not x6614) (not x6620))
+(or (not x6620) (not x6617) (not x6619) x6621)
+(or (not x6621) x6620)
+(or (not x6621) x6617)
+(or (not x6621) x6619)
+(or x6622 (not x6623))
+(or x6622 (not x6624))
+(or x6622 (not x6625))
+(or x6622 (not x6626))
+(or x6622 (not x6628))
+(or x6623 x6624 x6625 x6626 x6628 (not x6622))
+(or x6629 (not x6628))
+(or x6629 (not x6627))
+(or x6629 x123)
+(or x6629 (not x124))
+(or x6629 x6354)
+(or x6629 x6353)
+(or x6628 x6627 (not x123) x124 (not x6354) (not x6353) (not x6629))
+(or (not x6629) (not x6630) (not x6622) x6631)
+(or (not x6631) x6629)
+(or (not x6631) x6630)
+(or (not x6631) x6622)
+(or x6632 (not x6623))
+(or x6632 (not x6624))
+(or x6632 (not x6625))
+(or x6632 (not x6626))
+(or x6632 (not x6627))
+(or x6623 x6624 x6625 x6626 x6627 (not x6632))
+(or x6630 (not x6623))
+(or x6630 (not x6624))
+(or x6630 (not x6625))
+(or x6630 x6628)
+(or x6630 x6627)
+(or x6623 x6624 x6625 (not x6628) (not x6627) (not x6630))
+(or x6628 x6627 (not x123) x124 (not x6354) (not x6353) x6623)
+(or (not x6623) (not x6628))
+(or (not x6623) (not x6627))
+(or (not x6623) x123)
+(or (not x6623) (not x124))
+(or (not x6623) x6354)
+(or (not x6623) x6353)
+(or x6633 (not x6623))
+(or x6633 (not x6628))
+(or x6633 x6627)
+(or x6623 x6628 (not x6627) (not x6633))
+(or (not x6633) (not x6630) (not x6632) x6634)
+(or (not x6634) x6633)
+(or (not x6634) x6630)
+(or (not x6634) x6632)
+(or x6635 (not x6470))
+(or x6635 (not x6636))
+(or x6635 (not x6637))
+(or x6635 (not x6578))
+(or x6635 (not x6558))
+(or x6635 (not x6580))
+(or x6635 (not x6561))
+(or x6635 (not x6557))
+(or x6635 (not x6558))
+(or x6635 (not x6559))
+(or x6635 (not x6560))
+(or x6635 (not x6561))
+(or x6635 (not x6562))
+(or x6470 x6636 x6637 x6578 x6558 x6580 x6561 x6557 x6558 x6559 x6560 x6561 x6562 (not x6635))
+(or (not x6461) (not x6462) (not x6635) x6638)
+(or (not x6638) x6461)
+(or (not x6638) x6462)
+(or (not x6638) x6635)
+(or x6639 (not x6354))
+(or x6639 (not x6353))
+(or x6354 x6353 (not x6639))
+(or x6354 x6353 x6640)
+(or (not x6640) (not x6354))
+(or (not x6640) (not x6353))
+(or x6641 (not x6640))
+(or x6641 (not x6354))
+(or x6641 x6353)
+(or x6640 x6354 (not x6353) (not x6641))
+(or x6642 (not x6643))
+(or x6642 (not x6644))
+(or x6642 (not x6645))
+(or x6642 (not x6646))
+(or x6642 (not x6647))
+(or x6642 (not x6648))
+(or x6642 (not x6579))
+(or x6642 (not x6649))
+(or x6642 (not x6650))
+(or x6642 (not x6651))
+(or x6642 (not x6652))
+(or x6642 (not x6656))
+(or x6643 x6644 x6645 x6646 x6647 x6648 x6579 x6649 x6650 x6651 x6652 x6656 (not x6642))
+(or (not x6657) (not x6658) (not x6659) (not x6660) (not x6661) (not x6662) (not x6663) (not x6664) (not x6665) (not x6666) (not x6667) (not x6642) x6668)
+(or (not x6668) x6657)
+(or (not x6668) x6658)
+(or (not x6668) x6659)
+(or (not x6668) x6660)
+(or (not x6668) x6661)
+(or (not x6668) x6662)
+(or (not x6668) x6663)
+(or (not x6668) x6664)
+(or (not x6668) x6665)
+(or (not x6668) x6666)
+(or (not x6668) x6667)
+(or (not x6668) x6642)
+(or x6669 (not x6643))
+(or x6669 (not x6644))
+(or x6669 (not x6645))
+(or x6669 (not x6646))
+(or x6669 (not x6647))
+(or x6669 (not x6648))
+(or x6669 (not x6579))
+(or x6669 (not x6649))
+(or x6669 (not x6650))
+(or x6669 (not x6651))
+(or x6669 (not x6652))
+(or x6669 (not x6655))
+(or x6643 x6644 x6645 x6646 x6647 x6648 x6579 x6649 x6650 x6651 x6652 x6655 (not x6669))
+(or x6670 x6671)
+(or x6670 (not x6672))
+(or (not x6671) x6672 (not x6670))
+(or (not x6670) (not x6671) x6673)
+(or (not x6673) x6670)
+(or (not x6673) x6671)
+(or x6674 (not x6643))
+(or x6674 (not x6644))
+(or x6674 (not x6645))
+(or x6674 (not x6646))
+(or x6674 (not x6647))
+(or x6674 (not x6648))
+(or x6674 (not x6579))
+(or x6674 (not x6649))
+(or x6674 (not x6656))
+(or x6674 (not x6655))
+(or x6674 (not x6654))
+(or x6674 x6653)
+(or x6674 (not x125))
+(or x6674 (not x124))
+(or x6674 (not x6673))
+(or x6643 x6644 x6645 x6646 x6647 x6648 x6579 x6649 x6656 x6655 x6654 (not x6653) x125 x124 x6673 (not x6674))
+(or x6675 (not x6643))
+(or x6675 (not x6644))
+(or x6675 (not x6645))
+(or x6675 (not x6646))
+(or x6675 (not x6647))
+(or x6675 (not x6648))
+(or x6675 (not x6656))
+(or x6675 (not x6655))
+(or x6675 x6654)
+(or x6675 x6653)
+(or x6675 x6676)
+(or x6675 x6677)
+(or x6675 x6678)
+(or x6643 x6644 x6645 x6646 x6647 x6648 x6656 x6655 (not x6654) (not x6653) (not x6676) (not x6677) (not x6678) (not x6675))
+(or x6679 (not x6643))
+(or x6679 (not x6644))
+(or x6679 (not x6645))
+(or x6679 (not x6646))
+(or x6679 (not x6656))
+(or x6679 (not x6655))
+(or x6679 x6654)
+(or x6679 (not x6653))
+(or x6679 (not x6680))
+(or x6679 x6681)
+(or x6679 x6682)
+(or x6643 x6644 x6645 x6646 x6656 x6655 (not x6654) x6653 x6680 (not x6681) (not x6682) (not x6679))
+(or x6683 (not x6643))
+(or x6683 (not x6656))
+(or x6683 (not x6655))
+(or x6683 (not x6654))
+(or x6683 (not x6653))
+(or x6683 (not x124))
+(or x6683 x6354)
+(or x6683 x6353)
+(or x6683 (not x6680))
+(or x6683 (not x6684))
+(or x6683 (not x6685))
+(or x6683 x6686)
+(or x6643 x6656 x6655 x6654 x6653 x124 (not x6354) (not x6353) x6680 x6684 x6685 (not x6686) (not x6683))
+(or x6687 x6688)
+(or x6687 x6689)
+(or x6687 x6690)
+(or (not x6688) (not x6689) (not x6690) (not x6687))
+(or (not x6687) (not x6688) x6691)
+(or (not x6691) x6687)
+(or (not x6691) x6688)
+(or x6692 x6693)
+(or x6692 (not x6691))
+(or (not x6693) x6691 (not x6692))
+(or (not x6692) (not x6693) x6694)
+(or (not x6694) x6692)
+(or (not x6694) x6693)
+(or x6695 (not x6656))
+(or x6695 (not x6655))
+(or x6695 (not x6654))
+(or x6695 (not x6653))
+(or x6695 (not x124))
+(or x6695 x6354)
+(or x6695 x6353)
+(or x6695 (not x6680))
+(or x6695 (not x6696))
+(or x6695 (not x6694))
+(or x6656 x6655 x6654 x6653 x124 (not x6354) (not x6353) x6680 x6696 x6694 (not x6695))
+(or (not x6695) (not x6683) (not x6659) (not x6660) (not x6679) (not x6662) (not x6675) (not x6664) (not x6674) (not x6667) (not x6669) x6697)
+(or (not x6697) x6695)
+(or (not x6697) x6683)
+(or (not x6697) x6659)
+(or (not x6697) x6660)
+(or (not x6697) x6679)
+(or (not x6697) x6662)
+(or (not x6697) x6675)
+(or (not x6697) x6664)
+(or (not x6697) x6674)
+(or (not x6697) x6667)
+(or (not x6697) x6669)
+(or x6698 (not x6643))
+(or x6698 (not x6644))
+(or x6698 (not x6645))
+(or x6698 (not x6646))
+(or x6698 (not x6647))
+(or x6698 (not x6648))
+(or x6698 (not x6579))
+(or x6698 (not x6649))
+(or x6698 (not x6650))
+(or x6698 (not x6651))
+(or x6698 (not x6652))
+(or x6698 (not x6654))
+(or x6643 x6644 x6645 x6646 x6647 x6648 x6579 x6649 x6650 x6651 x6652 x6654 (not x6698))
+(or x6666 (not x6643))
+(or x6666 (not x6644))
+(or x6666 (not x6645))
+(or x6666 (not x6646))
+(or x6666 (not x6647))
+(or x6666 (not x6648))
+(or x6666 (not x6579))
+(or x6666 (not x6649))
+(or x6666 (not x6650))
+(or x6666 (not x6656))
+(or x6666 x6655)
+(or x6666 x6654)
+(or x6666 (not x6653))
+(or x6666 (not x125))
+(or x6666 (not x124))
+(or x6643 x6644 x6645 x6646 x6647 x6648 x6579 x6649 x6650 x6656 (not x6655) (not x6654) x6653 x125 x124 (not x6666))
+(or x6699 x6672)
+(or x6699 x6700)
+(or (not x6672) (not x6700) (not x6699))
+(or (not x6699) (not x6672) x6701)
+(or (not x6701) x6699)
+(or (not x6701) x6672)
+(or x6702 (not x6643))
+(or x6702 (not x6644))
+(or x6702 (not x6645))
+(or x6702 (not x6646))
+(or x6702 (not x6647))
+(or x6702 (not x6648))
+(or x6702 (not x6579))
+(or x6702 (not x6649))
+(or x6702 (not x6656))
+(or x6702 (not x6655))
+(or x6702 (not x6654))
+(or x6702 x6653)
+(or x6702 (not x125))
+(or x6702 (not x124))
+(or x6702 x6671)
+(or x6702 (not x6701))
+(or x6643 x6644 x6645 x6646 x6647 x6648 x6579 x6649 x6656 x6655 x6654 (not x6653) x125 x124 (not x6671) x6701 (not x6702))
+(or x6703 x6678)
+(or x6703 (not x6704))
+(or (not x6678) x6704 (not x6703))
+(or (not x6703) (not x6678) x6705)
+(or (not x6705) x6703)
+(or (not x6705) x6678)
+(or x6706 x6676)
+(or x6706 x6677)
+(or x6706 (not x6705))
+(or (not x6676) (not x6677) x6705 (not x6706))
+(or (not x6706) (not x6676) x6707)
+(or (not x6707) x6706)
+(or (not x6707) x6676)
+(or x6708 (not x6643))
+(or x6708 (not x6644))
+(or x6708 (not x6645))
+(or x6708 (not x6646))
+(or x6708 (not x6647))
+(or x6708 (not x6648))
+(or x6708 (not x6656))
+(or x6708 (not x6655))
+(or x6708 x6654)
+(or x6708 x6653)
+(or x6708 (not x6707))
+(or x6643 x6644 x6645 x6646 x6647 x6648 x6656 x6655 (not x6654) (not x6653) x6707 (not x6708))
+(or x6709 x6682)
+(or x6709 (not x6710))
+(or (not x6682) x6710 (not x6709))
+(or (not x6709) (not x6682) x6711)
+(or (not x6711) x6709)
+(or (not x6711) x6682)
+(or x6712 (not x6643))
+(or x6712 (not x6644))
+(or x6712 (not x6645))
+(or x6712 (not x6646))
+(or x6712 (not x6656))
+(or x6712 (not x6655))
+(or x6712 x6654)
+(or x6712 (not x6653))
+(or x6712 (not x6680))
+(or x6712 x6681)
+(or x6712 (not x6711))
+(or x6643 x6644 x6645 x6646 x6656 x6655 (not x6654) x6653 x6680 (not x6681) x6711 (not x6712))
+(or x6713 (not x6643))
+(or x6713 (not x6656))
+(or x6713 (not x6655))
+(or x6713 (not x6654))
+(or x6713 (not x6653))
+(or x6713 (not x124))
+(or x6713 x6354)
+(or x6713 x6353)
+(or x6713 (not x6680))
+(or x6713 (not x6684))
+(or x6713 (not x6685))
+(or x6713 (not x6686))
+(or x6643 x6656 x6655 x6654 x6653 x124 (not x6354) (not x6353) x6680 x6684 x6685 x6686 (not x6713))
+(or x6714 x6693)
+(or x6714 x6688)
+(or x6714 x6689)
+(or x6714 (not x6690))
+(or (not x6693) (not x6688) (not x6689) x6690 (not x6714))
+(or (not x6714) (not x6693) x6715)
+(or (not x6715) x6714)
+(or (not x6715) x6693)
+(or x6716 (not x6656))
+(or x6716 (not x6655))
+(or x6716 (not x6654))
+(or x6716 (not x6653))
+(or x6716 (not x124))
+(or x6716 x6354)
+(or x6716 x6353)
+(or x6716 (not x6680))
+(or x6716 (not x6696))
+(or x6716 (not x6715))
+(or x6656 x6655 x6654 x6653 x124 (not x6354) (not x6353) x6680 x6696 x6715 (not x6716))
+(or (not x6716) (not x6713) (not x6660) (not x6712) (not x6708) (not x6664) (not x6702) (not x6666) (not x6667) (not x6698) x6717)
+(or (not x6717) x6716)
+(or (not x6717) x6713)
+(or (not x6717) x6660)
+(or (not x6717) x6712)
+(or (not x6717) x6708)
+(or (not x6717) x6664)
+(or (not x6717) x6702)
+(or (not x6717) x6666)
+(or (not x6717) x6667)
+(or (not x6717) x6698)
+(or x6718 (not x6560))
+(or x6718 (not x6562))
+(or x6718 (not x6561))
+(or x6560 x6562 x6561 (not x6718))
+(or (not x6718) (not x124) x6652)
+(or (not x6652) x6718)
+(or (not x6652) x124)
+(or x6719 (not x6643))
+(or x6719 (not x6644))
+(or x6719 (not x6645))
+(or x6719 (not x6646))
+(or x6719 (not x6647))
+(or x6719 (not x6648))
+(or x6719 (not x6579))
+(or x6719 (not x6649))
+(or x6719 (not x6650))
+(or x6719 (not x6651))
+(or x6719 (not x6652))
+(or x6719 (not x6653))
+(or x6643 x6644 x6645 x6646 x6647 x6648 x6579 x6649 x6650 x6651 x6652 x6653 (not x6719))
+(or x6544 (not x6656))
+(or x6544 x6655)
+(or x6544 (not x6654))
+(or x6544 (not x6653))
+(or x6656 (not x6655) x6654 x6653 (not x6544))
+(or (not x6544) (not x6545) (not x6509) x6720)
+(or (not x6720) x6544)
+(or (not x6720) x6545)
+(or (not x6720) x6509)
+(or x6656 (not x6655) (not x6654) x6653 x125 x124 x6651)
+(or (not x6651) (not x6656))
+(or (not x6651) x6655)
+(or (not x6651) x6654)
+(or (not x6651) (not x6653))
+(or (not x6651) (not x125))
+(or (not x6651) (not x124))
+(or x6656 x6655 x6654 (not x6653) x125 x124 x6650)
+(or (not x6650) (not x6656))
+(or (not x6650) (not x6655))
+(or (not x6650) (not x6654))
+(or (not x6650) x6653)
+(or (not x6650) (not x125))
+(or (not x6650) (not x124))
+(or x6667 (not x6643))
+(or x6667 (not x6644))
+(or x6667 (not x6645))
+(or x6667 (not x6646))
+(or x6667 (not x6647))
+(or x6667 (not x6648))
+(or x6667 (not x6579))
+(or x6667 (not x6649))
+(or x6667 (not x6650))
+(or x6667 (not x6651))
+(or x6667 (not x6720))
+(or x6667 x124)
+(or x6643 x6644 x6645 x6646 x6647 x6648 x6579 x6649 x6650 x6651 x6720 (not x124) (not x6667))
+(or x6721 x6700)
+(or x6721 x6722)
+(or (not x6700) (not x6722) (not x6721))
+(or (not x6721) (not x6700) x6723)
+(or (not x6723) x6721)
+(or (not x6723) x6700)
+(or x6656 x6655 x6654 (not x6653) x125 (not x124) x6649)
+(or (not x6649) (not x6656))
+(or (not x6649) (not x6655))
+(or (not x6649) (not x6654))
+(or (not x6649) x6653)
+(or (not x6649) (not x125))
+(or (not x6649) x124)
+(or x6665 (not x6643))
+(or x6665 (not x6644))
+(or x6665 (not x6645))
+(or x6665 (not x6646))
+(or x6665 (not x6647))
+(or x6665 (not x6648))
+(or x6665 (not x6579))
+(or x6665 (not x6649))
+(or x6665 (not x6656))
+(or x6665 (not x6655))
+(or x6665 (not x6654))
+(or x6665 x6653)
+(or x6665 (not x125))
+(or x6665 (not x124))
+(or x6643 x6644 x6645 x6646 x6647 x6648 x6579 x6649 x6656 x6655 x6654 (not x6653) x125 x124 (not x6665))
+(or x6724 (not x6643))
+(or x6724 (not x6644))
+(or x6724 (not x6645))
+(or x6724 (not x6646))
+(or x6724 (not x6647))
+(or x6724 (not x6648))
+(or x6724 (not x6579))
+(or x6724 (not x6649))
+(or x6724 (not x6656))
+(or x6724 (not x6655))
+(or x6724 (not x6654))
+(or x6724 x6653)
+(or x6724 (not x125))
+(or x6724 (not x124))
+(or x6724 x6671)
+(or x6724 x6672)
+(or x6724 (not x6723))
+(or x6643 x6644 x6645 x6646 x6647 x6648 x6579 x6649 x6656 x6655 x6654 (not x6653) x125 x124 (not x6671) (not x6672) x6723 (not x6724))
+(or x6664 (not x6643))
+(or x6664 (not x6644))
+(or x6664 (not x6645))
+(or x6664 (not x6646))
+(or x6664 (not x6647))
+(or x6664 (not x6648))
+(or x6664 (not x6579))
+(or x6664 (not x6656))
+(or x6664 (not x6655))
+(or x6664 (not x6654))
+(or x6664 x6653)
+(or x6664 (not x125))
+(or x6664 x124)
+(or x6643 x6644 x6645 x6646 x6647 x6648 x6579 x6656 x6655 x6654 (not x6653) x125 (not x124) (not x6664))
+(or x6725 x6677)
+(or x6725 (not x6678))
+(or (not x6677) x6678 (not x6725))
+(or (not x6725) (not x6677) x6726)
+(or (not x6726) x6725)
+(or (not x6726) x6677)
+(or x6663 (not x6643))
+(or x6663 (not x6644))
+(or x6663 (not x6645))
+(or x6663 (not x6646))
+(or x6663 (not x6647))
+(or x6663 (not x6648))
+(or x6663 (not x6656))
+(or x6663 (not x6655))
+(or x6663 x6654)
+(or x6663 x6653)
+(or x6643 x6644 x6645 x6646 x6647 x6648 x6656 x6655 (not x6654) (not x6653) (not x6663))
+(or x6727 (not x6643))
+(or x6727 (not x6644))
+(or x6727 (not x6645))
+(or x6727 (not x6646))
+(or x6727 (not x6647))
+(or x6727 (not x6648))
+(or x6727 (not x6656))
+(or x6727 (not x6655))
+(or x6727 x6654)
+(or x6727 x6653)
+(or x6727 x6676)
+(or x6727 (not x6726))
+(or x6643 x6644 x6645 x6646 x6647 x6648 x6656 x6655 (not x6654) (not x6653) (not x6676) x6726 (not x6727))
+(or x6656 x6655 (not x6654) x6653 (not x6728) x6647)
+(or (not x6647) (not x6656))
+(or (not x6647) (not x6655))
+(or (not x6647) x6654)
+(or (not x6647) (not x6653))
+(or (not x6647) x6728)
+(or x6662 (not x6643))
+(or x6662 (not x6644))
+(or x6662 (not x6645))
+(or x6662 (not x6646))
+(or x6662 (not x6647))
+(or x6662 (not x6656))
+(or x6662 (not x6655))
+(or x6662 x6654)
+(or x6662 (not x6653))
+(or x6643 x6644 x6645 x6646 x6647 x6656 x6655 (not x6654) x6653 (not x6662))
+(or x6729 x6681)
+(or x6729 x6682)
+(or x6729 x6710)
+(or x6729 x6730)
+(or (not x6681) (not x6682) (not x6710) (not x6730) (not x6729))
+(or (not x6729) (not x6681) x6731)
+(or (not x6731) x6729)
+(or (not x6731) x6681)
+(or x6656 x6655 (not x6654) x6653 (not x124) (not x125) x6646)
+(or (not x6646) (not x6656))
+(or (not x6646) (not x6655))
+(or (not x6646) x6654)
+(or (not x6646) (not x6653))
+(or (not x6646) x124)
+(or (not x6646) x125)
+(or x6661 (not x6643))
+(or x6661 (not x6644))
+(or x6661 (not x6645))
+(or x6661 (not x6646))
+(or x6661 (not x6656))
+(or x6661 (not x6655))
+(or x6661 x6654)
+(or x6661 (not x6653))
+(or x6661 (not x6680))
+(or x6643 x6644 x6645 x6646 x6656 x6655 (not x6654) x6653 x6680 (not x6661))
+(or x6732 (not x6643))
+(or x6732 (not x6644))
+(or x6732 (not x6645))
+(or x6732 (not x6646))
+(or x6732 (not x6656))
+(or x6732 (not x6655))
+(or x6732 x6654)
+(or x6732 (not x6653))
+(or x6732 (not x6680))
+(or x6732 (not x6731))
+(or x6643 x6644 x6645 x6646 x6656 x6655 (not x6654) x6653 x6680 x6731 (not x6732))
+(or x6660 (not x6643))
+(or x6660 (not x6644))
+(or x6660 (not x6645))
+(or x6660 (not x6656))
+(or x6660 (not x6655))
+(or x6660 x6654)
+(or x6660 (not x6653))
+(or x6660 x124)
+(or x6660 x125)
+(or x6643 x6644 x6645 x6656 x6655 (not x6654) x6653 (not x124) (not x125) (not x6660))
+(or x6656 x6655 x6654 x6653 x124 (not x6354) (not x6353) (not x6728) (not x6733) (not x6734) x6644)
+(or (not x6644) (not x6656))
+(or (not x6644) (not x6655))
+(or (not x6644) (not x6654))
+(or (not x6644) (not x6653))
+(or (not x6644) (not x124))
+(or (not x6644) x6354)
+(or (not x6644) x6353)
+(or (not x6644) x6728)
+(or (not x6644) x6733)
+(or (not x6644) x6734)
+(or x6659 (not x6643))
+(or x6659 (not x6644))
+(or x6659 (not x6656))
+(or x6659 (not x6655))
+(or x6659 (not x6654))
+(or x6659 (not x6653))
+(or x6659 (not x124))
+(or x6659 x6354)
+(or x6659 x6353)
+(or x6643 x6644 x6656 x6655 x6654 x6653 x124 (not x6354) (not x6353) (not x6659))
+(or (not x6615) (not x6614) x6613)
+(or (not x6613) x6615)
+(or (not x6613) x6614)
+(or (not x6615) x6614 x6612)
+(or (not x6612) x6615)
+(or (not x6612) (not x6614))
+(or x6615 (not x6614) x6611)
+(or (not x6611) (not x6615))
+(or (not x6611) x6614)
+(or x6615 x6614 (not x123) x124 x6735)
+(or (not x6735) (not x6615))
+(or (not x6735) (not x6614))
+(or (not x6735) x123)
+(or (not x6735) (not x124))
+(or x6728 (not x6735))
+(or x6728 (not x6611))
+(or x6728 (not x6612))
+(or x6728 (not x6613))
+(or x6735 x6611 x6612 x6613 (not x6728))
+(or x6656 x6655 x6654 x6653 x124 (not x6354) (not x6353) x6645)
+(or (not x6645) (not x6656))
+(or (not x6645) (not x6655))
+(or (not x6645) (not x6654))
+(or (not x6645) (not x6653))
+(or (not x6645) (not x124))
+(or (not x6645) x6354)
+(or (not x6645) x6353)
+(or x6656 x6655 x6654 x6653 x124 (not x6354) (not x6353) (not x6728) (not x6736) x6643)
+(or (not x6643) (not x6656))
+(or (not x6643) (not x6655))
+(or (not x6643) (not x6654))
+(or (not x6643) (not x6653))
+(or (not x6643) (not x124))
+(or (not x6643) x6354)
+(or (not x6643) x6353)
+(or (not x6643) x6728)
+(or (not x6643) x6736)
+(or x6658 (not x6643))
+(or x6658 (not x6656))
+(or x6658 (not x6655))
+(or x6658 (not x6654))
+(or x6658 (not x6653))
+(or x6658 (not x124))
+(or x6658 x6354)
+(or x6658 x6353)
+(or x6658 (not x6680))
+(or x6658 (not x6684))
+(or x6658 (not x6685))
+(or x6643 x6656 x6655 x6654 x6653 x124 (not x6354) (not x6353) x6680 x6684 x6685 (not x6658))
+(or x6737 (not x6643))
+(or x6737 (not x6656))
+(or x6737 (not x6655))
+(or x6737 (not x6654))
+(or x6737 (not x6653))
+(or x6737 (not x124))
+(or x6737 x6354)
+(or x6737 x6353)
+(or x6737 (not x6680))
+(or x6737 (not x6684))
+(or x6737 (not x6685))
+(or x6737 x6686)
+(or x6737 x6738)
+(or x6643 x6656 x6655 x6654 x6653 x124 (not x6354) (not x6353) x6680 x6684 x6685 (not x6686) (not x6738) (not x6737))
+(or x6739 x6689)
+(or x6739 x6690)
+(or (not x6689) (not x6690) (not x6739))
+(or (not x6739) (not x6689) x6740)
+(or (not x6740) x6739)
+(or (not x6740) x6689)
+(or x6741 x6615)
+(or x6741 x6614)
+(or (not x6615) (not x6614) (not x6741))
+(or x6742 x6615)
+(or x6742 (not x6614))
+(or (not x6615) x6614 (not x6742))
+(or x6743 (not x6615))
+(or x6743 x6614)
+(or x6615 (not x6614) (not x6743))
+(or x6744 (not x6615))
+(or x6744 (not x6614))
+(or x6744 x123)
+(or x6744 (not x124))
+(or x6615 x6614 (not x123) x124 (not x6744))
+(or (not x6744) (not x6743) (not x6742) (not x6741) x6680)
+(or (not x6680) x6744)
+(or (not x6680) x6743)
+(or (not x6680) x6742)
+(or (not x6680) x6741)
+(or x6657 (not x6656))
+(or x6657 (not x6655))
+(or x6657 (not x6654))
+(or x6657 (not x6653))
+(or x6657 (not x124))
+(or x6657 x6354)
+(or x6657 x6353)
+(or x6657 (not x6680))
+(or x6657 (not x6696))
+(or x6656 x6655 x6654 x6653 x124 (not x6354) (not x6353) x6680 x6696 (not x6657))
+(or x6745 (not x6656))
+(or x6745 (not x6655))
+(or x6745 (not x6654))
+(or x6745 (not x6653))
+(or x6745 (not x124))
+(or x6745 x6354)
+(or x6745 x6353)
+(or x6745 (not x6680))
+(or x6745 (not x6696))
+(or x6745 x6693)
+(or x6745 x6688)
+(or x6745 (not x6740))
+(or x6656 x6655 x6654 x6653 x124 (not x6354) (not x6353) x6680 x6696 (not x6693) (not x6688) x6740 (not x6745))
+(or (not x6745) (not x6737) (not x6659) (not x6660) (not x6732) (not x6662) (not x6727) (not x6664) (not x6724) (not x6667) (not x6719) x6746)
+(or (not x6746) x6745)
+(or (not x6746) x6737)
+(or (not x6746) x6659)
+(or (not x6746) x6660)
+(or (not x6746) x6732)
+(or (not x6746) x6662)
+(or (not x6746) x6727)
+(or (not x6746) x6664)
+(or (not x6746) x6724)
+(or (not x6746) x6667)
+(or (not x6746) x6719)
+(or x6747 (not x6748))
+(or x6747 (not x6749))
+(or x6747 (not x6750))
+(or x6747 (not x6751))
+(or x6747 (not x6752))
+(or x6747 (not x6753))
+(or x6747 (not x6577))
+(or x6747 (not x6754))
+(or x6747 (not x6755))
+(or x6747 (not x6756))
+(or x6747 (not x6757))
+(or x6747 (not x6761))
+(or x6748 x6749 x6750 x6751 x6752 x6753 x6577 x6754 x6755 x6756 x6757 x6761 (not x6747))
+(or (not x6762) (not x6763) (not x6764) (not x6765) (not x6766) (not x6767) (not x6768) (not x6769) (not x6770) (not x6771) (not x6772) (not x6747) x6773)
+(or (not x6773) x6762)
+(or (not x6773) x6763)
+(or (not x6773) x6764)
+(or (not x6773) x6765)
+(or (not x6773) x6766)
+(or (not x6773) x6767)
+(or (not x6773) x6768)
+(or (not x6773) x6769)
+(or (not x6773) x6770)
+(or (not x6773) x6771)
+(or (not x6773) x6772)
+(or (not x6773) x6747)
+(or x6774 (not x6748))
+(or x6774 (not x6749))
+(or x6774 (not x6750))
+(or x6774 (not x6751))
+(or x6774 (not x6752))
+(or x6774 (not x6753))
+(or x6774 (not x6577))
+(or x6774 (not x6754))
+(or x6774 (not x6755))
+(or x6774 (not x6756))
+(or x6774 (not x6757))
+(or x6774 (not x6760))
+(or x6748 x6749 x6750 x6751 x6752 x6753 x6577 x6754 x6755 x6756 x6757 x6760 (not x6774))
+(or x6775 x6776)
+(or x6775 (not x6777))
+(or (not x6776) x6777 (not x6775))
+(or (not x6775) (not x6776) x6778)
+(or (not x6778) x6775)
+(or (not x6778) x6776)
+(or x6779 (not x6748))
+(or x6779 (not x6749))
+(or x6779 (not x6750))
+(or x6779 (not x6751))
+(or x6779 (not x6752))
+(or x6779 (not x6753))
+(or x6779 (not x6577))
+(or x6779 (not x6754))
+(or x6779 (not x6761))
+(or x6779 (not x6760))
+(or x6779 (not x6759))
+(or x6779 x6758)
+(or x6779 (not x125))
+(or x6779 (not x124))
+(or x6779 (not x6778))
+(or x6748 x6749 x6750 x6751 x6752 x6753 x6577 x6754 x6761 x6760 x6759 (not x6758) x125 x124 x6778 (not x6779))
+(or x6780 (not x6748))
+(or x6780 (not x6749))
+(or x6780 (not x6750))
+(or x6780 (not x6751))
+(or x6780 (not x6752))
+(or x6780 (not x6753))
+(or x6780 (not x6761))
+(or x6780 (not x6760))
+(or x6780 x6759)
+(or x6780 x6758)
+(or x6780 x6781)
+(or x6780 x6782)
+(or x6780 x6783)
+(or x6748 x6749 x6750 x6751 x6752 x6753 x6761 x6760 (not x6759) (not x6758) (not x6781) (not x6782) (not x6783) (not x6780))
+(or x6784 (not x6748))
+(or x6784 (not x6749))
+(or x6784 (not x6750))
+(or x6784 (not x6751))
+(or x6784 (not x6761))
+(or x6784 (not x6760))
+(or x6784 x6759)
+(or x6784 (not x6758))
+(or x6784 (not x6785))
+(or x6784 x6786)
+(or x6784 x6787)
+(or x6748 x6749 x6750 x6751 x6761 x6760 (not x6759) x6758 x6785 (not x6786) (not x6787) (not x6784))
+(or x6788 (not x6748))
+(or x6788 (not x6761))
+(or x6788 (not x6760))
+(or x6788 (not x6759))
+(or x6788 (not x6758))
+(or x6788 (not x124))
+(or x6788 x6354)
+(or x6788 x6353)
+(or x6788 (not x6785))
+(or x6788 (not x6684))
+(or x6788 (not x6685))
+(or x6788 x6789)
+(or x6748 x6761 x6760 x6759 x6758 x124 (not x6354) (not x6353) x6785 x6684 x6685 (not x6789) (not x6788))
+(or x6790 x6791)
+(or x6790 x6792)
+(or x6790 x6793)
+(or (not x6791) (not x6792) (not x6793) (not x6790))
+(or (not x6790) (not x6791) x6794)
+(or (not x6794) x6790)
+(or (not x6794) x6791)
+(or x6795 x6796)
+(or x6795 (not x6794))
+(or (not x6796) x6794 (not x6795))
+(or (not x6795) (not x6796) x6797)
+(or (not x6797) x6795)
+(or (not x6797) x6796)
+(or x6798 (not x6761))
+(or x6798 (not x6760))
+(or x6798 (not x6759))
+(or x6798 (not x6758))
+(or x6798 (not x124))
+(or x6798 x6354)
+(or x6798 x6353)
+(or x6798 (not x6785))
+(or x6798 (not x6696))
+(or x6798 (not x6797))
+(or x6761 x6760 x6759 x6758 x124 (not x6354) (not x6353) x6785 x6696 x6797 (not x6798))
+(or (not x6798) (not x6788) (not x6764) (not x6765) (not x6784) (not x6767) (not x6780) (not x6769) (not x6779) (not x6772) (not x6774) x6799)
+(or (not x6799) x6798)
+(or (not x6799) x6788)
+(or (not x6799) x6764)
+(or (not x6799) x6765)
+(or (not x6799) x6784)
+(or (not x6799) x6767)
+(or (not x6799) x6780)
+(or (not x6799) x6769)
+(or (not x6799) x6779)
+(or (not x6799) x6772)
+(or (not x6799) x6774)
+(or x6800 (not x6748))
+(or x6800 (not x6749))
+(or x6800 (not x6750))
+(or x6800 (not x6751))
+(or x6800 (not x6752))
+(or x6800 (not x6753))
+(or x6800 (not x6577))
+(or x6800 (not x6754))
+(or x6800 (not x6755))
+(or x6800 (not x6756))
+(or x6800 (not x6757))
+(or x6800 (not x6759))
+(or x6748 x6749 x6750 x6751 x6752 x6753 x6577 x6754 x6755 x6756 x6757 x6759 (not x6800))
+(or x6771 (not x6748))
+(or x6771 (not x6749))
+(or x6771 (not x6750))
+(or x6771 (not x6751))
+(or x6771 (not x6752))
+(or x6771 (not x6753))
+(or x6771 (not x6577))
+(or x6771 (not x6754))
+(or x6771 (not x6755))
+(or x6771 (not x6761))
+(or x6771 x6760)
+(or x6771 x6759)
+(or x6771 (not x6758))
+(or x6771 (not x125))
+(or x6771 (not x124))
+(or x6748 x6749 x6750 x6751 x6752 x6753 x6577 x6754 x6755 x6761 (not x6760) (not x6759) x6758 x125 x124 (not x6771))
+(or x6801 x6777)
+(or x6801 x6802)
+(or (not x6777) (not x6802) (not x6801))
+(or (not x6801) (not x6777) x6803)
+(or (not x6803) x6801)
+(or (not x6803) x6777)
+(or x6804 (not x6748))
+(or x6804 (not x6749))
+(or x6804 (not x6750))
+(or x6804 (not x6751))
+(or x6804 (not x6752))
+(or x6804 (not x6753))
+(or x6804 (not x6577))
+(or x6804 (not x6754))
+(or x6804 (not x6761))
+(or x6804 (not x6760))
+(or x6804 (not x6759))
+(or x6804 x6758)
+(or x6804 (not x125))
+(or x6804 (not x124))
+(or x6804 x6776)
+(or x6804 (not x6803))
+(or x6748 x6749 x6750 x6751 x6752 x6753 x6577 x6754 x6761 x6760 x6759 (not x6758) x125 x124 (not x6776) x6803 (not x6804))
+(or x6805 x6783)
+(or x6805 (not x6806))
+(or (not x6783) x6806 (not x6805))
+(or (not x6805) (not x6783) x6807)
+(or (not x6807) x6805)
+(or (not x6807) x6783)
+(or x6808 x6781)
+(or x6808 x6782)
+(or x6808 (not x6807))
+(or (not x6781) (not x6782) x6807 (not x6808))
+(or (not x6808) (not x6781) x6809)
+(or (not x6809) x6808)
+(or (not x6809) x6781)
+(or x6810 (not x6748))
+(or x6810 (not x6749))
+(or x6810 (not x6750))
+(or x6810 (not x6751))
+(or x6810 (not x6752))
+(or x6810 (not x6753))
+(or x6810 (not x6761))
+(or x6810 (not x6760))
+(or x6810 x6759)
+(or x6810 x6758)
+(or x6810 (not x6809))
+(or x6748 x6749 x6750 x6751 x6752 x6753 x6761 x6760 (not x6759) (not x6758) x6809 (not x6810))
+(or x6811 x6787)
+(or x6811 (not x6812))
+(or (not x6787) x6812 (not x6811))
+(or (not x6811) (not x6787) x6813)
+(or (not x6813) x6811)
+(or (not x6813) x6787)
+(or x6814 (not x6748))
+(or x6814 (not x6749))
+(or x6814 (not x6750))
+(or x6814 (not x6751))
+(or x6814 (not x6761))
+(or x6814 (not x6760))
+(or x6814 x6759)
+(or x6814 (not x6758))
+(or x6814 (not x6785))
+(or x6814 x6786)
+(or x6814 (not x6813))
+(or x6748 x6749 x6750 x6751 x6761 x6760 (not x6759) x6758 x6785 (not x6786) x6813 (not x6814))
+(or x6815 (not x6748))
+(or x6815 (not x6761))
+(or x6815 (not x6760))
+(or x6815 (not x6759))
+(or x6815 (not x6758))
+(or x6815 (not x124))
+(or x6815 x6354)
+(or x6815 x6353)
+(or x6815 (not x6785))
+(or x6815 (not x6684))
+(or x6815 (not x6685))
+(or x6815 (not x6789))
+(or x6748 x6761 x6760 x6759 x6758 x124 (not x6354) (not x6353) x6785 x6684 x6685 x6789 (not x6815))
+(or x6816 x6796)
+(or x6816 x6791)
+(or x6816 x6792)
+(or x6816 (not x6793))
+(or (not x6796) (not x6791) (not x6792) x6793 (not x6816))
+(or (not x6816) (not x6796) x6817)
+(or (not x6817) x6816)
+(or (not x6817) x6796)
+(or x6818 (not x6761))
+(or x6818 (not x6760))
+(or x6818 (not x6759))
+(or x6818 (not x6758))
+(or x6818 (not x124))
+(or x6818 x6354)
+(or x6818 x6353)
+(or x6818 (not x6785))
+(or x6818 (not x6696))
+(or x6818 (not x6817))
+(or x6761 x6760 x6759 x6758 x124 (not x6354) (not x6353) x6785 x6696 x6817 (not x6818))
+(or (not x6818) (not x6815) (not x6765) (not x6814) (not x6810) (not x6769) (not x6804) (not x6771) (not x6772) (not x6800) x6819)
+(or (not x6819) x6818)
+(or (not x6819) x6815)
+(or (not x6819) x6765)
+(or (not x6819) x6814)
+(or (not x6819) x6810)
+(or (not x6819) x6769)
+(or (not x6819) x6804)
+(or (not x6819) x6771)
+(or (not x6819) x6772)
+(or (not x6819) x6800)
+(or x6820 (not x6557))
+(or x6820 (not x6559))
+(or x6820 (not x6558))
+(or x6557 x6559 x6558 (not x6820))
+(or (not x6820) (not x124) x6757)
+(or (not x6757) x6820)
+(or (not x6757) x124)
+(or x6821 (not x6748))
+(or x6821 (not x6749))
+(or x6821 (not x6750))
+(or x6821 (not x6751))
+(or x6821 (not x6752))
+(or x6821 (not x6753))
+(or x6821 (not x6577))
+(or x6821 (not x6754))
+(or x6821 (not x6755))
+(or x6821 (not x6756))
+(or x6821 (not x6757))
+(or x6821 (not x6758))
+(or x6748 x6749 x6750 x6751 x6752 x6753 x6577 x6754 x6755 x6756 x6757 x6758 (not x6821))
+(or x6542 (not x6761))
+(or x6542 x6760)
+(or x6542 (not x6759))
+(or x6542 (not x6758))
+(or x6761 (not x6760) x6759 x6758 (not x6542))
+(or (not x6542) (not x6543) (not x6507) x6822)
+(or (not x6822) x6542)
+(or (not x6822) x6543)
+(or (not x6822) x6507)
+(or x6761 (not x6760) (not x6759) x6758 x125 x124 x6756)
+(or (not x6756) (not x6761))
+(or (not x6756) x6760)
+(or (not x6756) x6759)
+(or (not x6756) (not x6758))
+(or (not x6756) (not x125))
+(or (not x6756) (not x124))
+(or x6761 x6760 x6759 (not x6758) x125 x124 x6755)
+(or (not x6755) (not x6761))
+(or (not x6755) (not x6760))
+(or (not x6755) (not x6759))
+(or (not x6755) x6758)
+(or (not x6755) (not x125))
+(or (not x6755) (not x124))
+(or x6772 (not x6748))
+(or x6772 (not x6749))
+(or x6772 (not x6750))
+(or x6772 (not x6751))
+(or x6772 (not x6752))
+(or x6772 (not x6753))
+(or x6772 (not x6577))
+(or x6772 (not x6754))
+(or x6772 (not x6755))
+(or x6772 (not x6756))
+(or x6772 (not x6822))
+(or x6772 x124)
+(or x6748 x6749 x6750 x6751 x6752 x6753 x6577 x6754 x6755 x6756 x6822 (not x124) (not x6772))
+(or x6823 x6802)
+(or x6823 x6824)
+(or (not x6802) (not x6824) (not x6823))
+(or (not x6823) (not x6802) x6825)
+(or (not x6825) x6823)
+(or (not x6825) x6802)
+(or x6761 x6760 x6759 (not x6758) x125 (not x124) x6754)
+(or (not x6754) (not x6761))
+(or (not x6754) (not x6760))
+(or (not x6754) (not x6759))
+(or (not x6754) x6758)
+(or (not x6754) (not x125))
+(or (not x6754) x124)
+(or x6770 (not x6748))
+(or x6770 (not x6749))
+(or x6770 (not x6750))
+(or x6770 (not x6751))
+(or x6770 (not x6752))
+(or x6770 (not x6753))
+(or x6770 (not x6577))
+(or x6770 (not x6754))
+(or x6770 (not x6761))
+(or x6770 (not x6760))
+(or x6770 (not x6759))
+(or x6770 x6758)
+(or x6770 (not x125))
+(or x6770 (not x124))
+(or x6748 x6749 x6750 x6751 x6752 x6753 x6577 x6754 x6761 x6760 x6759 (not x6758) x125 x124 (not x6770))
+(or x6826 (not x6748))
+(or x6826 (not x6749))
+(or x6826 (not x6750))
+(or x6826 (not x6751))
+(or x6826 (not x6752))
+(or x6826 (not x6753))
+(or x6826 (not x6577))
+(or x6826 (not x6754))
+(or x6826 (not x6761))
+(or x6826 (not x6760))
+(or x6826 (not x6759))
+(or x6826 x6758)
+(or x6826 (not x125))
+(or x6826 (not x124))
+(or x6826 x6776)
+(or x6826 x6777)
+(or x6826 (not x6825))
+(or x6748 x6749 x6750 x6751 x6752 x6753 x6577 x6754 x6761 x6760 x6759 (not x6758) x125 x124 (not x6776) (not x6777) x6825 (not x6826))
+(or x6769 (not x6748))
+(or x6769 (not x6749))
+(or x6769 (not x6750))
+(or x6769 (not x6751))
+(or x6769 (not x6752))
+(or x6769 (not x6753))
+(or x6769 (not x6577))
+(or x6769 (not x6761))
+(or x6769 (not x6760))
+(or x6769 (not x6759))
+(or x6769 x6758)
+(or x6769 (not x125))
+(or x6769 x124)
+(or x6748 x6749 x6750 x6751 x6752 x6753 x6577 x6761 x6760 x6759 (not x6758) x125 (not x124) (not x6769))
+(or x6827 x6782)
+(or x6827 (not x6783))
+(or (not x6782) x6783 (not x6827))
+(or (not x6827) (not x6782) x6828)
+(or (not x6828) x6827)
+(or (not x6828) x6782)
+(or x6768 (not x6748))
+(or x6768 (not x6749))
+(or x6768 (not x6750))
+(or x6768 (not x6751))
+(or x6768 (not x6752))
+(or x6768 (not x6753))
+(or x6768 (not x6761))
+(or x6768 (not x6760))
+(or x6768 x6759)
+(or x6768 x6758)
+(or x6748 x6749 x6750 x6751 x6752 x6753 x6761 x6760 (not x6759) (not x6758) (not x6768))
+(or x6829 (not x6748))
+(or x6829 (not x6749))
+(or x6829 (not x6750))
+(or x6829 (not x6751))
+(or x6829 (not x6752))
+(or x6829 (not x6753))
+(or x6829 (not x6761))
+(or x6829 (not x6760))
+(or x6829 x6759)
+(or x6829 x6758)
+(or x6829 x6781)
+(or x6829 (not x6828))
+(or x6748 x6749 x6750 x6751 x6752 x6753 x6761 x6760 (not x6759) (not x6758) (not x6781) x6828 (not x6829))
+(or x6761 x6760 (not x6759) x6758 (not x6830) x6752)
+(or (not x6752) (not x6761))
+(or (not x6752) (not x6760))
+(or (not x6752) x6759)
+(or (not x6752) (not x6758))
+(or (not x6752) x6830)
+(or x6767 (not x6748))
+(or x6767 (not x6749))
+(or x6767 (not x6750))
+(or x6767 (not x6751))
+(or x6767 (not x6752))
+(or x6767 (not x6761))
+(or x6767 (not x6760))
+(or x6767 x6759)
+(or x6767 (not x6758))
+(or x6748 x6749 x6750 x6751 x6752 x6761 x6760 (not x6759) x6758 (not x6767))
+(or x6831 x6786)
+(or x6831 x6787)
+(or x6831 x6812)
+(or x6831 x6832)
+(or (not x6786) (not x6787) (not x6812) (not x6832) (not x6831))
+(or (not x6831) (not x6786) x6833)
+(or (not x6833) x6831)
+(or (not x6833) x6786)
+(or x6761 x6760 (not x6759) x6758 (not x124) (not x125) x6751)
+(or (not x6751) (not x6761))
+(or (not x6751) (not x6760))
+(or (not x6751) x6759)
+(or (not x6751) (not x6758))
+(or (not x6751) x124)
+(or (not x6751) x125)
+(or x6766 (not x6748))
+(or x6766 (not x6749))
+(or x6766 (not x6750))
+(or x6766 (not x6751))
+(or x6766 (not x6761))
+(or x6766 (not x6760))
+(or x6766 x6759)
+(or x6766 (not x6758))
+(or x6766 (not x6785))
+(or x6748 x6749 x6750 x6751 x6761 x6760 (not x6759) x6758 x6785 (not x6766))
+(or x6834 (not x6748))
+(or x6834 (not x6749))
+(or x6834 (not x6750))
+(or x6834 (not x6751))
+(or x6834 (not x6761))
+(or x6834 (not x6760))
+(or x6834 x6759)
+(or x6834 (not x6758))
+(or x6834 (not x6785))
+(or x6834 (not x6833))
+(or x6748 x6749 x6750 x6751 x6761 x6760 (not x6759) x6758 x6785 x6833 (not x6834))
+(or x6765 (not x6748))
+(or x6765 (not x6749))
+(or x6765 (not x6750))
+(or x6765 (not x6761))
+(or x6765 (not x6760))
+(or x6765 x6759)
+(or x6765 (not x6758))
+(or x6765 x124)
+(or x6765 x125)
+(or x6748 x6749 x6750 x6761 x6760 (not x6759) x6758 (not x124) (not x125) (not x6765))
+(or x6761 x6760 x6759 x6758 x124 (not x6354) (not x6353) (not x6830) (not x6733) (not x6734) x6749)
+(or (not x6749) (not x6761))
+(or (not x6749) (not x6760))
+(or (not x6749) (not x6759))
+(or (not x6749) (not x6758))
+(or (not x6749) (not x124))
+(or (not x6749) x6354)
+(or (not x6749) x6353)
+(or (not x6749) x6830)
+(or (not x6749) x6733)
+(or (not x6749) x6734)
+(or x6764 (not x6748))
+(or x6764 (not x6749))
+(or x6764 (not x6761))
+(or x6764 (not x6760))
+(or x6764 (not x6759))
+(or x6764 (not x6758))
+(or x6764 (not x124))
+(or x6764 x6354)
+(or x6764 x6353)
+(or x6748 x6749 x6761 x6760 x6759 x6758 x124 (not x6354) (not x6353) (not x6764))
+(or (not x6524) (not x6566) x6685)
+(or (not x6685) x6524)
+(or (not x6685) x6566)
+(or (not x6461) (not x6462) (not x6571) x6684)
+(or (not x6684) x6461)
+(or (not x6684) x6462)
+(or (not x6684) x6571)
+(or x6736 (not x6684))
+(or x6736 (not x6685))
+(or x6684 x6685 (not x6736))
+(or (not x6628) (not x6627) x6626)
+(or (not x6626) x6628)
+(or (not x6626) x6627)
+(or (not x6628) x6627 x6625)
+(or (not x6625) x6628)
+(or (not x6625) (not x6627))
+(or x6628 (not x6627) x6624)
+(or (not x6624) (not x6628))
+(or (not x6624) x6627)
+(or (not x123) x124 x6338)
+(or (not x6338) x123)
+(or (not x6338) (not x124))
+(or x6628 x6627 (not x123) x124 x6835)
+(or (not x6835) (not x6628))
+(or (not x6835) (not x6627))
+(or (not x6835) x123)
+(or (not x6835) (not x124))
+(or x6830 (not x6835))
+(or x6830 (not x6624))
+(or x6830 (not x6625))
+(or x6830 (not x6626))
+(or x6835 x6624 x6625 x6626 (not x6830))
+(or x6761 x6760 x6759 x6758 x124 (not x6354) (not x6353) x6750)
+(or (not x6750) (not x6761))
+(or (not x6750) (not x6760))
+(or (not x6750) (not x6759))
+(or (not x6750) (not x6758))
+(or (not x6750) (not x124))
+(or (not x6750) x6354)
+(or (not x6750) x6353)
+(or x6761 x6760 x6759 x6758 x124 (not x6354) (not x6353) (not x6830) (not x6736) x6748)
+(or (not x6748) (not x6761))
+(or (not x6748) (not x6760))
+(or (not x6748) (not x6759))
+(or (not x6748) (not x6758))
+(or (not x6748) (not x124))
+(or (not x6748) x6354)
+(or (not x6748) x6353)
+(or (not x6748) x6830)
+(or (not x6748) x6736)
+(or x6763 (not x6748))
+(or x6763 (not x6761))
+(or x6763 (not x6760))
+(or x6763 (not x6759))
+(or x6763 (not x6758))
+(or x6763 (not x124))
+(or x6763 x6354)
+(or x6763 x6353)
+(or x6763 (not x6785))
+(or x6763 (not x6684))
+(or x6763 (not x6685))
+(or x6748 x6761 x6760 x6759 x6758 x124 (not x6354) (not x6353) x6785 x6684 x6685 (not x6763))
+(or x6836 (not x6748))
+(or x6836 (not x6761))
+(or x6836 (not x6760))
+(or x6836 (not x6759))
+(or x6836 (not x6758))
+(or x6836 (not x124))
+(or x6836 x6354)
+(or x6836 x6353)
+(or x6836 (not x6785))
+(or x6836 (not x6684))
+(or x6836 (not x6685))
+(or x6836 x6789)
+(or x6836 x6837)
+(or x6748 x6761 x6760 x6759 x6758 x124 (not x6354) (not x6353) x6785 x6684 x6685 (not x6789) (not x6837) (not x6836))
+(or x6838 x6792)
+(or x6838 x6793)
+(or (not x6792) (not x6793) (not x6838))
+(or (not x6838) (not x6792) x6839)
+(or (not x6839) x6838)
+(or (not x6839) x6792)
+(or x6474 (not x6460))
+(or x6474 (not x6404))
+(or x6460 x6404 (not x6474))
+(or x6462 (not x6503))
+(or x6462 x6484)
+(or x6462 (not x6485))
+(or x6462 (not x6486))
+(or x6462 (not x6487))
+(or x6462 (not x6489))
+(or x6462 (not x6436))
+(or x6462 (not x6490))
+(or x6462 (not x6491))
+(or x6462 (not x6397))
+(or x6462 (not x6492))
+(or x6462 (not x6460))
+(or x6462 (not x6404))
+(or x6503 (not x6484) x6485 x6486 x6487 x6489 x6436 x6490 x6491 x6397 x6492 x6460 x6404 (not x6462))
+(or x6587 (not x6484))
+(or x6587 (not x6485))
+(or x6484 x6485 (not x6587))
+(or x6585 (not x6484))
+(or x6585 (not x6485))
+(or x6585 (not x6486))
+(or x6585 (not x6487))
+(or x6484 x6485 x6486 x6487 (not x6585))
+(or x6597 (not x6490))
+(or x6597 (not x6491))
+(or x6490 x6491 (not x6597))
+(or x6593 (not x6460))
+(or x6593 (not x6490))
+(or x6593 (not x6491))
+(or x6460 x6490 x6491 (not x6593))
+(or x6598 (not x6404))
+(or x6598 (not x6460))
+(or x6598 (not x6490))
+(or x6598 (not x6491))
+(or x6404 x6460 x6490 x6491 (not x6598))
+(or x6592 (not x6489))
+(or x6592 (not x6404))
+(or x6592 (not x6460))
+(or x6592 (not x6490))
+(or x6592 (not x6491))
+(or x6489 x6404 x6460 x6490 x6491 (not x6592))
+(or x6461 (not x6489))
+(or x6461 (not x6404))
+(or x6461 (not x6460))
+(or x6461 (not x6490))
+(or x6461 (not x6491))
+(or x6461 (not x6503))
+(or x6461 (not x6397))
+(or x6461 x6492)
+(or x6461 (not x6436))
+(or x6461 (not x6484))
+(or x6461 (not x6485))
+(or x6461 (not x6486))
+(or x6461 (not x6487))
+(or x6489 x6404 x6460 x6490 x6491 x6503 x6397 (not x6492) x6436 x6484 x6485 x6486 x6487 (not x6461))
+(or (not x6461) (not x6462) x6840)
+(or (not x6840) x6461)
+(or (not x6840) x6462)
+(or x6734 (not x6840))
+(or x6734 x6566)
+(or x6840 (not x6566) (not x6734))
+(or x6460 x6404 x6469)
+(or (not x6469) (not x6460))
+(or (not x6469) (not x6404))
+(or x6503 (not x6484) x6485 x6486 x6487 x6489 x6436 x6490 x6491 x6397 x6492 x6460 x6404 x6453)
+(or (not x6453) (not x6503))
+(or (not x6453) x6484)
+(or (not x6453) (not x6485))
+(or (not x6453) (not x6486))
+(or (not x6453) (not x6487))
+(or (not x6453) (not x6489))
+(or (not x6453) (not x6436))
+(or (not x6453) (not x6490))
+(or (not x6453) (not x6491))
+(or (not x6453) (not x6397))
+(or (not x6453) (not x6492))
+(or (not x6453) (not x6460))
+(or (not x6453) (not x6404))
+(or x6484 x6485 x6529)
+(or (not x6529) (not x6484))
+(or (not x6529) (not x6485))
+(or x6484 x6485 x6486 x6487 x6526)
+(or (not x6526) (not x6484))
+(or (not x6526) (not x6485))
+(or (not x6526) (not x6486))
+(or (not x6526) (not x6487))
+(or x6490 x6491 x6540)
+(or (not x6540) (not x6490))
+(or (not x6540) (not x6491))
+(or x6460 x6490 x6491 x6534)
+(or (not x6534) (not x6460))
+(or (not x6534) (not x6490))
+(or (not x6534) (not x6491))
+(or x6404 x6460 x6490 x6491 x6541)
+(or (not x6541) (not x6404))
+(or (not x6541) (not x6460))
+(or (not x6541) (not x6490))
+(or (not x6541) (not x6491))
+(or x6489 x6404 x6460 x6490 x6491 x6533)
+(or (not x6533) (not x6489))
+(or (not x6533) (not x6404))
+(or (not x6533) (not x6460))
+(or (not x6533) (not x6490))
+(or (not x6533) (not x6491))
+(or x6489 x6404 x6460 x6490 x6491 x6503 x6397 (not x6492) x6436 x6484 x6485 x6486 x6487 x6452)
+(or (not x6452) (not x6489))
+(or (not x6452) (not x6404))
+(or (not x6452) (not x6460))
+(or (not x6452) (not x6490))
+(or (not x6452) (not x6491))
+(or (not x6452) (not x6503))
+(or (not x6452) (not x6397))
+(or (not x6452) x6492)
+(or (not x6452) (not x6436))
+(or (not x6452) (not x6484))
+(or (not x6452) (not x6485))
+(or (not x6452) (not x6486))
+(or (not x6452) (not x6487))
+(or x6524 (not x6452))
+(or x6524 (not x6453))
+(or x6452 x6453 (not x6524))
+(or x6733 (not x6452))
+(or x6733 (not x6453))
+(or x6733 x6571)
+(or x6452 x6453 (not x6571) (not x6733))
+(or (not x6733) (not x6734) x6696)
+(or (not x6696) x6733)
+(or (not x6696) x6734)
+(or x6841 x6628)
+(or x6841 x6627)
+(or (not x6628) (not x6627) (not x6841))
+(or x6842 x6628)
+(or x6842 (not x6627))
+(or (not x6628) x6627 (not x6842))
+(or x6843 (not x6628))
+(or x6843 x6627)
+(or x6628 (not x6627) (not x6843))
+(or x6378 x123)
+(or x6378 (not x124))
+(or (not x123) x124 (not x6378))
+(or x6844 (not x6628))
+(or x6844 (not x6627))
+(or x6844 x123)
+(or x6844 (not x124))
+(or x6628 x6627 (not x123) x124 (not x6844))
+(or (not x6844) (not x6843) (not x6842) (not x6841) x6785)
+(or (not x6785) x6844)
+(or (not x6785) x6843)
+(or (not x6785) x6842)
+(or (not x6785) x6841)
+(or x6762 (not x6761))
+(or x6762 (not x6760))
+(or x6762 (not x6759))
+(or x6762 (not x6758))
+(or x6762 (not x124))
+(or x6762 x6354)
+(or x6762 x6353)
+(or x6762 (not x6785))
+(or x6762 (not x6696))
+(or x6761 x6760 x6759 x6758 x124 (not x6354) (not x6353) x6785 x6696 (not x6762))
+(or x6845 (not x6761))
+(or x6845 (not x6760))
+(or x6845 (not x6759))
+(or x6845 (not x6758))
+(or x6845 (not x124))
+(or x6845 x6354)
+(or x6845 x6353)
+(or x6845 (not x6785))
+(or x6845 (not x6696))
+(or x6845 x6796)
+(or x6845 x6791)
+(or x6845 (not x6839))
+(or x6761 x6760 x6759 x6758 x124 (not x6354) (not x6353) x6785 x6696 (not x6796) (not x6791) x6839 (not x6845))
+(or (not x6845) (not x6836) (not x6764) (not x6765) (not x6834) (not x6767) (not x6829) (not x6769) (not x6826) (not x6772) (not x6821) x6846)
+(or (not x6846) x6845)
+(or (not x6846) x6836)
+(or (not x6846) x6764)
+(or (not x6846) x6765)
+(or (not x6846) x6834)
+(or (not x6846) x6767)
+(or (not x6846) x6829)
+(or (not x6846) x6769)
+(or (not x6846) x6826)
+(or (not x6846) x6772)
+(or (not x6846) x6821)
+(or x6847 (not x6848))
+(or x6847 (not x6418))
+(or x6847 (not x6849))
+(or x6847 (not x6424))
+(or x6848 x6418 x6849 x6424 (not x6847))
+(or x6850 (not x6848))
+(or x6850 (not x6418))
+(or x6850 x6424)
+(or x6850 (not x6423))
+(or x6850 (not x6422))
+(or x6850 x6421)
+(or x6850 x6397)
+(or x6850 x6851)
+(or x6848 x6418 (not x6424) x6423 x6422 (not x6421) (not x6397) (not x6851) (not x6850))
+(or x6852 (not x6424))
+(or x6852 x6423)
+(or x6852 x6422)
+(or x6852 x6421)
+(or x6852 x6354)
+(or x6852 x6353)
+(or x6852 x6853)
+(or x6852 x6854)
+(or x6424 (not x6423) (not x6422) (not x6421) (not x6354) (not x6353) (not x6853) (not x6854) (not x6852))
+(or (not x6852) (not x6850) (not x6847) x6855)
+(or (not x6855) x6852)
+(or (not x6855) x6850)
+(or (not x6855) x6847)
+(or x6856 (not x6848))
+(or x6856 (not x6418))
+(or x6856 (not x6849))
+(or x6856 (not x6423))
+(or x6848 x6418 x6849 x6423 (not x6856))
+(or (not x6857) (not x6858) (not x6859) (not x6856) x6860)
+(or (not x6860) x6857)
+(or (not x6860) x6858)
+(or (not x6860) x6859)
+(or (not x6860) x6856)
+(or x6861 (not x6848))
+(or x6861 (not x6418))
+(or x6861 (not x6849))
+(or x6861 (not x6422))
+(or x6848 x6418 x6849 x6422 (not x6861))
+(or x6434 x6424)
+(or x6434 (not x6423))
+(or x6434 (not x6422))
+(or x6434 (not x6421))
+(or (not x6424) x6423 x6422 x6421 (not x6434))
+(or x6858 (not x6848))
+(or x6858 x6424)
+(or x6858 (not x6423))
+(or x6858 (not x6422))
+(or x6858 (not x6421))
+(or x6848 (not x6424) x6423 x6422 x6421 (not x6858))
+(or (not x6857) (not x6858) (not x6859) (not x6861) x6862)
+(or (not x6862) x6857)
+(or (not x6862) x6858)
+(or (not x6862) x6859)
+(or (not x6862) x6861)
+(or (not x6424) x6423 x6422 (not x6421) (not x6397) x6849)
+(or (not x6849) x6424)
+(or (not x6849) (not x6423))
+(or (not x6849) (not x6422))
+(or (not x6849) x6421)
+(or (not x6849) x6397)
+(or x6863 (not x6848))
+(or x6863 (not x6418))
+(or x6863 (not x6849))
+(or x6863 (not x6421))
+(or x6848 x6418 x6849 x6421 (not x6863))
+(or x6424 (not x6423) (not x6422) (not x6421) (not x6354) (not x6353) (not x6853) x6848)
+(or (not x6848) (not x6424))
+(or (not x6848) x6423)
+(or (not x6848) x6422)
+(or (not x6848) x6421)
+(or (not x6848) x6354)
+(or (not x6848) x6353)
+(or (not x6848) x6853)
+(or x6859 (not x6848))
+(or x6859 (not x6418))
+(or x6859 x6424)
+(or x6859 (not x6423))
+(or x6859 (not x6422))
+(or x6859 x6421)
+(or x6859 x6397)
+(or x6859 (not x6851))
+(or x6848 x6418 (not x6424) x6423 x6422 (not x6421) (not x6397) x6851 (not x6859))
+(or x6857 (not x6424))
+(or x6857 x6423)
+(or x6857 x6422)
+(or x6857 x6421)
+(or x6857 x6354)
+(or x6857 x6353)
+(or x6857 x6853)
+(or x6857 (not x6854))
+(or x6424 (not x6423) (not x6422) (not x6421) (not x6354) (not x6353) (not x6853) x6854 (not x6857))
+(or (not x6857) (not x6859) (not x6863) x6864)
+(or (not x6864) x6857)
+(or (not x6864) x6859)
+(or (not x6864) x6863)
+(or (not x6853) (not x6865) (not x6397) x6866)
+(or (not x6866) x6853)
+(or (not x6866) x6865)
+(or (not x6866) x6397)
+(or x6867 x6853)
+(or x6867 (not x6866))
+(or x6867 (not x6853))
+(or (not x6853) x6866 x6853 (not x6867))
+(or x6868 x6853)
+(or x6868 x6853)
+(or x6868 x6865)
+(or x6868 x6397)
+(or x6868 x6869)
+(or (not x6853) (not x6853) (not x6865) (not x6397) (not x6869) (not x6868))
+(or x6870 x6871)
+(or x6870 x6872)
+(or (not x6871) (not x6872) (not x6870))
+(or (not x6870) (not x6871) x6873)
+(or (not x6873) x6870)
+(or (not x6873) x6871)
+(or x6874 (not x6853))
+(or x6874 x6875)
+(or x6874 (not x6873))
+(or x6853 (not x6875) x6873 (not x6874))
+(or (not x6874) (not x6868) (not x6867) x6876)
+(or (not x6876) x6874)
+(or (not x6876) x6868)
+(or (not x6876) x6867)
+(or x6505 (not x6557))
+(or x6505 (not x6558))
+(or x6505 (not x6559))
+(or x6505 (not x6560))
+(or x6505 (not x6561))
+(or x6505 (not x6562))
+(or x6557 x6558 x6559 x6560 x6561 x6562 (not x6505))
+(or x6509 (not x6656))
+(or x6509 x6655)
+(or x6509 x6654)
+(or x6509 (not x6653))
+(or x6656 (not x6655) (not x6654) x6653 (not x6509))
+(or x6545 (not x6656))
+(or x6545 x6655)
+(or x6545 (not x6654))
+(or x6545 x6653)
+(or x6656 (not x6655) x6654 (not x6653) (not x6545))
+(or x6508 (not x6656))
+(or x6508 (not x6655))
+(or x6508 (not x6654))
+(or x6508 x6653)
+(or x6656 x6655 x6654 (not x6653) (not x6508))
+(or x6877 (not x6656))
+(or x6877 (not x6655))
+(or x6877 x6654)
+(or x6877 x6653)
+(or x6656 x6655 (not x6654) (not x6653) (not x6877))
+(or x6507 (not x6761))
+(or x6507 x6760)
+(or x6507 x6759)
+(or x6507 (not x6758))
+(or x6761 (not x6760) (not x6759) x6758 (not x6507))
+(or x6543 (not x6761))
+(or x6543 x6760)
+(or x6543 (not x6759))
+(or x6543 x6758)
+(or x6761 (not x6760) x6759 (not x6758) (not x6543))
+(or x6506 (not x6761))
+(or x6506 (not x6760))
+(or x6506 (not x6759))
+(or x6506 x6758)
+(or x6761 x6760 x6759 (not x6758) (not x6506))
+(or x6878 (not x6761))
+(or x6878 (not x6760))
+(or x6878 x6759)
+(or x6878 x6758)
+(or x6761 x6760 (not x6759) (not x6758) (not x6878))
+(or (not x6878) (not x6506) (not x6543) (not x6507) (not x6877) (not x6508) (not x6545) (not x6509) x6879)
+(or (not x6879) x6878)
+(or (not x6879) x6506)
+(or (not x6879) x6543)
+(or (not x6879) x6507)
+(or (not x6879) x6877)
+(or (not x6879) x6508)
+(or (not x6879) x6545)
+(or (not x6879) x6509)
+(or (not x6878) (not x6506) (not x6543) (not x6507) (not x6877) (not x6508) (not x6545) (not x6509) x6448 x6449 x6637)
+(or (not x6637) x6878)
+(or (not x6637) x6506)
+(or (not x6637) x6543)
+(or (not x6637) x6507)
+(or (not x6637) x6877)
+(or (not x6637) x6508)
+(or (not x6637) x6545)
+(or (not x6637) x6509)
+(or (not x6637) (not x6448))
+(or (not x6637) (not x6449))
+(or x6495 (not x6637))
+(or x6495 (not x6578))
+(or x6495 (not x6558))
+(or x6495 (not x6580))
+(or x6495 (not x6561))
+(or x6637 x6578 x6558 x6580 x6561 (not x6495))
+(or x6880 (not x6637))
+(or x6880 (not x6578))
+(or x6880 (not x6558))
+(or x6880 (not x6580))
+(or x6880 (not x6561))
+(or x6880 (not x6557))
+(or x6880 (not x6558))
+(or x6880 (not x6559))
+(or x6880 (not x6560))
+(or x6880 (not x6561))
+(or x6880 (not x6562))
+(or x6880 x6460)
+(or x6637 x6578 x6558 x6580 x6561 x6557 x6558 x6559 x6560 x6561 x6562 (not x6460) (not x6880))
+(or (not x6880) (not x6636) x6881)
+(or (not x6881) x6880)
+(or (not x6881) x6636)
+(or (not x6882) x6424)
+(or (not x6882) (not x6423))
+(or (not x6882) (not x6422))
+(or (not x6882) x6421)
+(or (not x6424) x6423 x6422 x6421 x6418)
+(or (not x6418) x6424)
+(or (not x6418) (not x6423))
+(or (not x6418) (not x6422))
+(or (not x6418) (not x6421))
+(or (not x6883) (not x6424))
+(or (not x6883) x6423)
+(or (not x6883) x6422)
+(or (not x6883) x6421)
+(or x6884 (not x6883))
+(or x6884 (not x6418))
+(or x6883 x6418 (not x6884))
+(or x6656 (not x6655) (not x6654) x6653 x6561)
+(or (not x6561) (not x6656))
+(or (not x6561) x6655)
+(or (not x6561) x6654)
+(or (not x6561) (not x6653))
+(or x6656 (not x6655) x6654 (not x6653) x6562)
+(or (not x6562) (not x6656))
+(or (not x6562) x6655)
+(or (not x6562) (not x6654))
+(or (not x6562) x6653)
+(or x6656 (not x6655) x6654 x6653 x6560)
+(or (not x6560) (not x6656))
+(or (not x6560) x6655)
+(or (not x6560) (not x6654))
+(or (not x6560) (not x6653))
+(or x6656 x6655 (not x6654) (not x6653) x6579)
+(or (not x6579) (not x6656))
+(or (not x6579) (not x6655))
+(or (not x6579) x6654)
+(or (not x6579) x6653)
+(or x6656 x6655 (not x6654) x6653 x6648)
+(or (not x6648) (not x6656))
+(or (not x6648) (not x6655))
+(or (not x6648) x6654)
+(or (not x6648) (not x6653))
+(or x6656 x6655 x6654 (not x6653) x6580)
+(or (not x6580) (not x6656))
+(or (not x6580) (not x6655))
+(or (not x6580) (not x6654))
+(or (not x6580) x6653)
+(or (not x6885) (not x6656))
+(or (not x6885) (not x6655))
+(or (not x6885) (not x6654))
+(or (not x6885) (not x6653))
+(or x6886 (not x6885))
+(or x6886 (not x6580))
+(or x6886 (not x6648))
+(or x6886 (not x6579))
+(or x6886 (not x6560))
+(or x6886 (not x6562))
+(or x6885 x6580 x6648 x6579 x6560 x6562 (not x6886))
+(or x6761 (not x6760) (not x6759) x6758 x6558)
+(or (not x6558) (not x6761))
+(or (not x6558) x6760)
+(or (not x6558) x6759)
+(or (not x6558) (not x6758))
+(or x6761 (not x6760) x6759 (not x6758) x6559)
+(or (not x6559) (not x6761))
+(or (not x6559) x6760)
+(or (not x6559) (not x6759))
+(or (not x6559) x6758)
+(or x6761 (not x6760) x6759 x6758 x6557)
+(or (not x6557) (not x6761))
+(or (not x6557) x6760)
+(or (not x6557) (not x6759))
+(or (not x6557) (not x6758))
+(or x6761 x6760 (not x6759) (not x6758) x6577)
+(or (not x6577) (not x6761))
+(or (not x6577) (not x6760))
+(or (not x6577) x6759)
+(or (not x6577) x6758)
+(or x6761 x6760 (not x6759) x6758 x6753)
+(or (not x6753) (not x6761))
+(or (not x6753) (not x6760))
+(or (not x6753) x6759)
+(or (not x6753) (not x6758))
+(or x6761 x6760 x6759 (not x6758) x6578)
+(or (not x6578) (not x6761))
+(or (not x6578) (not x6760))
+(or (not x6578) (not x6759))
+(or (not x6578) x6758)
+(or (not x6887) (not x6761))
+(or (not x6887) (not x6760))
+(or (not x6887) (not x6759))
+(or (not x6887) (not x6758))
+(or x6888 (not x6887))
+(or x6888 (not x6578))
+(or x6888 (not x6753))
+(or x6888 (not x6577))
+(or x6888 (not x6557))
+(or x6888 (not x6559))
+(or x6887 x6578 x6753 x6577 x6557 x6559 (not x6888))
+(or x6889 (not x6890))
+(or x6889 (not x6891))
+(or x6889 (not x6892))
+(or x6889 (not x6893))
+(or x6889 (not x6894))
+(or x6889 (not x6895))
+(or x6889 (not x131))
+(or x6889 x130)
+(or x6889 x129)
+(or x6889 x128)
+(or x6889 (not x6896))
+(or x6889 x6897)
+(or x6890 x6891 x6892 x6893 x6894 x6895 x131 (not x130) (not x129) (not x128) x6896 (not x6897) (not x6889))
+(or x6898 (not x6890))
+(or x6898 (not x6891))
+(or x6898 (not x6892))
+(or x6898 (not x6893))
+(or x6898 (not x6894))
+(or x6898 (not x131))
+(or x6898 x130)
+(or x6898 x129)
+(or x6898 (not x128))
+(or x6898 x132)
+(or x6898 (not x133))
+(or x6898 x6899)
+(or x6890 x6891 x6892 x6893 x6894 x131 (not x130) (not x129) x128 (not x132) x133 (not x6899) (not x6898))
+(or x6900 (not x131))
+(or x6900 (not x130))
+(or x6900 (not x129))
+(or x6900 x128)
+(or x6900 (not x6901))
+(or x131 x130 x129 (not x128) x6901 (not x6900))
+(or (not x6900) (not x6902) (not x6903) (not x6904) (not x6905) (not x6898) (not x6889) (not x6906) x6907)
+(or (not x6907) x6900)
+(or (not x6907) x6902)
+(or (not x6907) x6903)
+(or (not x6907) x6904)
+(or (not x6907) x6905)
+(or (not x6907) x6898)
+(or (not x6907) x6889)
+(or (not x6907) x6906)
+(or x6908 (not x6890))
+(or x6908 (not x6891))
+(or x6908 (not x131))
+(or x6908 (not x130))
+(or x6908 x129)
+(or x6908 x128)
+(or x6908 (not x6896))
+(or x6908 x6909)
+(or x6890 x6891 x131 x130 (not x129) (not x128) x6896 (not x6909) (not x6908))
+(or x6910 (not x6890))
+(or x6910 (not x131))
+(or x6910 (not x130))
+(or x6910 x129)
+(or x6910 (not x128))
+(or x6910 x6912)
+(or x6910 x6911)
+(or x6910 (not x6896))
+(or x6910 x6913)
+(or x6890 x131 x130 (not x129) x128 (not x6912) (not x6911) x6896 (not x6913) (not x6910))
+(or x6914 (not x6915) x6901)
+(or (not x6901) (not x6914))
+(or (not x6901) x6915)
+(or x6914 (not x6915) (not x6916) x6917)
+(or (not x6917) (not x6914))
+(or (not x6917) x6915)
+(or (not x6917) x6916)
+(or x6918 (not x131))
+(or x6918 (not x130))
+(or x6918 (not x129))
+(or x6918 x128)
+(or x6918 (not x6917))
+(or x131 x130 x129 (not x128) x6917 (not x6918))
+(or (not x6918) (not x6910) (not x6908) (not x6919) (not x6920) (not x6921) (not x6922) (not x6906) x6923)
+(or (not x6923) x6918)
+(or (not x6923) x6910)
+(or (not x6923) x6908)
+(or (not x6923) x6919)
+(or (not x6923) x6920)
+(or (not x6923) x6921)
+(or (not x6923) x6922)
+(or (not x6923) x6906)
+(or x6924 (not x6890))
+(or x6924 (not x6891))
+(or x6924 (not x6892))
+(or x6924 (not x6893))
+(or x6924 (not x131))
+(or x6924 x130)
+(or x6924 (not x129))
+(or x6924 x128)
+(or x6924 (not x6896))
+(or x6924 x6925)
+(or x6890 x6891 x6892 x6893 x131 (not x130) x129 (not x128) x6896 (not x6925) (not x6924))
+(or x6926 (not x6890))
+(or x6926 (not x6891))
+(or x6926 (not x6892))
+(or x6926 (not x131))
+(or x6926 x130)
+(or x6926 (not x129))
+(or x6926 (not x128))
+(or x6926 x132)
+(or x6926 (not x133))
+(or x6926 x6927)
+(or x6890 x6891 x6892 x131 (not x130) x129 x128 (not x132) x133 (not x6927) (not x6926))
+(or x6916 (not x6914))
+(or x6916 (not x6928))
+(or x6914 x6928 (not x6916))
+(or x6914 (not x6916) x6929)
+(or (not x6929) (not x6914))
+(or (not x6929) x6916)
+(or x6930 (not x131))
+(or x6930 (not x130))
+(or x6930 (not x129))
+(or x6930 x128)
+(or x6930 (not x6929))
+(or x131 x130 x129 (not x128) x6929 (not x6930))
+(or (not x6930) (not x6931) (not x6932) (not x6926) (not x6924) (not x6919) (not x6920) (not x6933) (not x6934) (not x6906) x6935)
+(or (not x6935) x6930)
+(or (not x6935) x6931)
+(or (not x6935) x6932)
+(or (not x6935) x6926)
+(or (not x6935) x6924)
+(or (not x6935) x6919)
+(or (not x6935) x6920)
+(or (not x6935) x6933)
+(or (not x6935) x6934)
+(or (not x6935) x6906)
+(or (not x131) (not x130) x129 x128 (not x6936) x6937)
+(or (not x6937) x131)
+(or (not x6937) x130)
+(or (not x6937) (not x129))
+(or (not x6937) (not x128))
+(or (not x6937) x6936)
+(or x6906 (not x6890))
+(or x6906 (not x6891))
+(or x6906 (not x6892))
+(or x6906 (not x6893))
+(or x6906 (not x6894))
+(or x6906 (not x6895))
+(or x6906 (not x6938))
+(or x6906 (not x6939))
+(or x6906 (not x6940))
+(or x6906 (not x6941))
+(or x6906 (not x6937))
+(or x6890 x6891 x6892 x6893 x6894 x6895 x6938 x6939 x6940 x6941 x6937 (not x6906))
+(or (not x131) x130 (not x129) (not x128) (not x132) x133 x6941)
+(or (not x6941) x131)
+(or (not x6941) (not x130))
+(or (not x6941) x129)
+(or (not x6941) x128)
+(or (not x6941) x132)
+(or (not x6941) (not x133))
+(or x6934 (not x6890))
+(or x6934 (not x6891))
+(or x6934 (not x6892))
+(or x6934 (not x6893))
+(or x6934 (not x6894))
+(or x6934 (not x6895))
+(or x6934 (not x6938))
+(or x6934 (not x6939))
+(or x6934 (not x6940))
+(or x6934 (not x6941))
+(or x6934 x131)
+(or x6934 x130)
+(or x6934 (not x129))
+(or x6934 (not x128))
+(or x6934 (not x6896))
+(or x6890 x6891 x6892 x6893 x6894 x6895 x6938 x6939 x6940 x6941 (not x131) (not x130) x129 x128 x6896 (not x6934))
+(or x6942 (not x6890))
+(or x6942 (not x6891))
+(or x6942 (not x6892))
+(or x6942 (not x6893))
+(or x6942 (not x6894))
+(or x6942 (not x6895))
+(or x6942 (not x6938))
+(or x6942 (not x6939))
+(or x6942 (not x6940))
+(or x6942 (not x6941))
+(or x6942 x131)
+(or x6942 x130)
+(or x6942 (not x129))
+(or x6942 (not x128))
+(or x6942 (not x6896))
+(or x6942 x6943)
+(or x6890 x6891 x6892 x6893 x6894 x6895 x6938 x6939 x6940 x6941 (not x131) (not x130) x129 x128 x6896 (not x6943) (not x6942))
+(or (not x131) x130 (not x129) x128 (not x6936) x6940)
+(or (not x6940) x131)
+(or (not x6940) (not x130))
+(or (not x6940) x129)
+(or (not x6940) (not x128))
+(or (not x6940) x6936)
+(or x6933 (not x6890))
+(or x6933 (not x6891))
+(or x6933 (not x6892))
+(or x6933 (not x6893))
+(or x6933 (not x6894))
+(or x6933 (not x6895))
+(or x6933 (not x6938))
+(or x6933 (not x6939))
+(or x6933 (not x6940))
+(or x6933 x131)
+(or x6933 (not x130))
+(or x6933 x129)
+(or x6933 x128)
+(or x6933 x132)
+(or x6933 (not x133))
+(or x6890 x6891 x6892 x6893 x6894 x6895 x6938 x6939 x6940 (not x131) x130 (not x129) (not x128) (not x132) x133 (not x6933))
+(or x6944 (not x6890))
+(or x6944 (not x6891))
+(or x6944 (not x6892))
+(or x6944 (not x6893))
+(or x6944 (not x6894))
+(or x6944 (not x6895))
+(or x6944 (not x6938))
+(or x6944 (not x6939))
+(or x6944 (not x6940))
+(or x6944 x131)
+(or x6944 (not x130))
+(or x6944 x129)
+(or x6944 x128)
+(or x6944 x132)
+(or x6944 (not x133))
+(or x6944 x6945)
+(or x6890 x6891 x6892 x6893 x6894 x6895 x6938 x6939 x6940 (not x131) x130 (not x129) (not x128) (not x132) x133 (not x6945) (not x6944))
+(or (not x131) x130 x129 (not x128) (not x6912) (not x6911) (not x132) x133 x6939)
+(or (not x6939) x131)
+(or (not x6939) (not x130))
+(or (not x6939) (not x129))
+(or (not x6939) x128)
+(or (not x6939) x6912)
+(or (not x6939) x6911)
+(or (not x6939) x132)
+(or (not x6939) (not x133))
+(or x6922 (not x6890))
+(or x6922 (not x6891))
+(or x6922 (not x6892))
+(or x6922 (not x6893))
+(or x6922 (not x6894))
+(or x6922 (not x6895))
+(or x6922 (not x6938))
+(or x6922 (not x6939))
+(or x6922 x131)
+(or x6922 (not x130))
+(or x6922 x129)
+(or x6922 (not x128))
+(or x6922 (not x6896))
+(or x6890 x6891 x6892 x6893 x6894 x6895 x6938 x6939 (not x131) x130 (not x129) x128 x6896 (not x6922))
+(or x6946 (not x6890))
+(or x6946 (not x6891))
+(or x6946 (not x6892))
+(or x6946 (not x6893))
+(or x6946 (not x6894))
+(or x6946 (not x6895))
+(or x6946 (not x6938))
+(or x6946 (not x6939))
+(or x6946 x131)
+(or x6946 (not x130))
+(or x6946 x129)
+(or x6946 (not x128))
+(or x6946 (not x6896))
+(or x6946 x6947)
+(or x6890 x6891 x6892 x6893 x6894 x6895 x6938 x6939 (not x131) x130 (not x129) x128 x6896 (not x6947) (not x6946))
+(or x131 (not x130) (not x129) (not x128) (not x6936) x6938)
+(or (not x6938) (not x131))
+(or (not x6938) x130)
+(or (not x6938) x129)
+(or (not x6938) x128)
+(or (not x6938) x6936)
+(or x6921 (not x6890))
+(or x6921 (not x6891))
+(or x6921 (not x6892))
+(or x6921 (not x6893))
+(or x6921 (not x6894))
+(or x6921 (not x6895))
+(or x6921 (not x6938))
+(or x6921 x131)
+(or x6921 (not x130))
+(or x6921 (not x129))
+(or x6921 x128)
+(or x6921 x6912)
+(or x6921 x6911)
+(or x6921 x132)
+(or x6921 (not x133))
+(or x6890 x6891 x6892 x6893 x6894 x6895 x6938 (not x131) x130 x129 (not x128) (not x6912) (not x6911) (not x132) x133 (not x6921))
+(or x6948 (not x6890))
+(or x6948 (not x6891))
+(or x6948 (not x6892))
+(or x6948 (not x6893))
+(or x6948 (not x6894))
+(or x6948 (not x6895))
+(or x6948 (not x6938))
+(or x6948 x131)
+(or x6948 (not x130))
+(or x6948 (not x129))
+(or x6948 x128)
+(or x6948 x6912)
+(or x6948 x6911)
+(or x6948 x132)
+(or x6948 (not x133))
+(or x6948 x6949)
+(or x6890 x6891 x6892 x6893 x6894 x6895 x6938 (not x131) x130 x129 (not x128) (not x6912) (not x6911) (not x132) x133 (not x6949) (not x6948))
+(or x131 (not x130) (not x129) x128 (not x132) x133 x6895)
+(or (not x6895) (not x131))
+(or (not x6895) x130)
+(or (not x6895) x129)
+(or (not x6895) (not x128))
+(or (not x6895) x132)
+(or (not x6895) (not x133))
+(or x6920 (not x6890))
+(or x6920 (not x6891))
+(or x6920 (not x6892))
+(or x6920 (not x6893))
+(or x6920 (not x6894))
+(or x6920 (not x6895))
+(or x6920 (not x131))
+(or x6920 x130)
+(or x6920 x129)
+(or x6920 x128)
+(or x6920 (not x6896))
+(or x6920 (not x6897))
+(or x6890 x6891 x6892 x6893 x6894 x6895 x131 (not x130) (not x129) (not x128) x6896 x6897 (not x6920))
+(or x131 (not x130) x129 (not x128) (not x6936) x6894)
+(or (not x6894) (not x131))
+(or (not x6894) x130)
+(or (not x6894) (not x129))
+(or (not x6894) x128)
+(or (not x6894) x6936)
+(or x6919 (not x6890))
+(or x6919 (not x6891))
+(or x6919 (not x6892))
+(or x6919 (not x6893))
+(or x6919 (not x6894))
+(or x6919 (not x131))
+(or x6919 x130)
+(or x6919 x129)
+(or x6919 (not x128))
+(or x6919 x132)
+(or x6919 (not x133))
+(or x6919 (not x6899))
+(or x6890 x6891 x6892 x6893 x6894 x131 (not x130) (not x129) x128 (not x132) x133 x6899 (not x6919))
+(or x131 (not x130) x129 x128 (not x132) x133 x6893)
+(or (not x6893) (not x131))
+(or (not x6893) x130)
+(or (not x6893) (not x129))
+(or (not x6893) (not x128))
+(or (not x6893) x132)
+(or (not x6893) (not x133))
+(or x6905 (not x6890))
+(or x6905 (not x6891))
+(or x6905 (not x6892))
+(or x6905 (not x6893))
+(or x6905 (not x131))
+(or x6905 x130)
+(or x6905 (not x129))
+(or x6905 x128)
+(or x6905 (not x6896))
+(or x6890 x6891 x6892 x6893 x131 (not x130) x129 (not x128) x6896 (not x6905))
+(or x6950 (not x6890))
+(or x6950 (not x6891))
+(or x6950 (not x6892))
+(or x6950 (not x6893))
+(or x6950 (not x131))
+(or x6950 x130)
+(or x6950 (not x129))
+(or x6950 x128)
+(or x6950 (not x6896))
+(or x6950 (not x6925))
+(or x6890 x6891 x6892 x6893 x131 (not x130) x129 (not x128) x6896 x6925 (not x6950))
+(or x131 x130 (not x129) (not x128) (not x6936) x6892)
+(or (not x6892) (not x131))
+(or (not x6892) (not x130))
+(or (not x6892) x129)
+(or (not x6892) x128)
+(or (not x6892) x6936)
+(or x6904 (not x6890))
+(or x6904 (not x6891))
+(or x6904 (not x6892))
+(or x6904 (not x131))
+(or x6904 x130)
+(or x6904 (not x129))
+(or x6904 (not x128))
+(or x6904 x132)
+(or x6904 (not x133))
+(or x6890 x6891 x6892 x131 (not x130) x129 x128 (not x132) x133 (not x6904))
+(or x6951 (not x6890))
+(or x6951 (not x6891))
+(or x6951 (not x6892))
+(or x6951 (not x131))
+(or x6951 x130)
+(or x6951 (not x129))
+(or x6951 (not x128))
+(or x6951 x132)
+(or x6951 (not x133))
+(or x6951 (not x6927))
+(or x6890 x6891 x6892 x131 (not x130) x129 x128 (not x132) x133 x6927 (not x6951))
+(or x131 x130 (not x129) x128 (not x6912) (not x6911) (not x6936) x6891)
+(or (not x6891) (not x131))
+(or (not x6891) (not x130))
+(or (not x6891) x129)
+(or (not x6891) (not x128))
+(or (not x6891) x6912)
+(or (not x6891) x6911)
+(or (not x6891) x6936)
+(or x6903 (not x6890))
+(or x6903 (not x6891))
+(or x6903 (not x131))
+(or x6903 (not x130))
+(or x6903 x129)
+(or x6903 x128)
+(or x6903 (not x6896))
+(or x6890 x6891 x131 x130 (not x129) (not x128) x6896 (not x6903))
+(or x6932 (not x6890))
+(or x6932 (not x6891))
+(or x6932 (not x131))
+(or x6932 (not x130))
+(or x6932 x129)
+(or x6932 x128)
+(or x6932 (not x6896))
+(or x6932 (not x6909))
+(or x6890 x6891 x131 x130 (not x129) (not x128) x6896 x6909 (not x6932))
+(or x131 x130 x129 (not x128) x6890)
+(or (not x6890) (not x131))
+(or (not x6890) (not x130))
+(or (not x6890) (not x129))
+(or (not x6890) x128)
+(or x6902 (not x6890))
+(or x6902 (not x131))
+(or x6902 (not x130))
+(or x6902 x129)
+(or x6902 (not x128))
+(or x6902 x6912)
+(or x6902 x6911)
+(or x6902 (not x6896))
+(or x6890 x131 x130 (not x129) x128 (not x6912) (not x6911) x6896 (not x6902))
+(or x6931 (not x6890))
+(or x6931 (not x131))
+(or x6931 (not x130))
+(or x6931 x129)
+(or x6931 (not x128))
+(or x6931 x6912)
+(or x6931 x6911)
+(or x6931 (not x6896))
+(or x6931 (not x6913))
+(or x6890 x131 x130 (not x129) x128 (not x6912) (not x6911) x6896 x6913 (not x6931))
+(or x6915 (not x6914))
+(or x6915 x6928)
+(or x6914 (not x6928) (not x6915))
+(or x6952 (not x131))
+(or x6952 (not x130))
+(or x6952 (not x129))
+(or x6952 x128)
+(or x6952 (not x6914))
+(or x6952 x6928)
+(or x131 x130 x129 (not x128) x6914 (not x6928) (not x6952))
+(or (not x6952) (not x6931) (not x6932) (not x6951) (not x6950) (not x6919) (not x6920) (not x6948) (not x6946) (not x6944) (not x6942) (not x6906) x6953)
+(or (not x6953) x6952)
+(or (not x6953) x6931)
+(or (not x6953) x6932)
+(or (not x6953) x6951)
+(or (not x6953) x6950)
+(or (not x6953) x6919)
+(or (not x6953) x6920)
+(or (not x6953) x6948)
+(or (not x6953) x6946)
+(or (not x6953) x6944)
+(or (not x6953) x6942)
+(or (not x6953) x6906)
+(or x6954 x6955 (not x6956) x6957)
+(or (not x6957) (not x6954))
+(or (not x6957) (not x6955))
+(or (not x6957) x6956)
+(or (not x6954) x6955 (not x6958) x6959)
+(or (not x6959) x6954)
+(or (not x6959) (not x6955))
+(or (not x6959) x6958)
+(or x6960 (not x6959))
+(or x6960 (not x6957))
+(or x6959 x6957 (not x6960))
+(or (not x6961) (not x6962) x6963 x6964 (not x6965) x6966)
+(or (not x6966) x6961)
+(or (not x6966) x6962)
+(or (not x6966) (not x6963))
+(or (not x6966) (not x6964))
+(or (not x6966) x6965)
+(or x6956 (not x6955))
+(or x6956 (not x6966))
+(or x6955 x6966 (not x6956))
+(or (not x6955) (not x6956) x6967)
+(or (not x6967) x6955)
+(or (not x6967) x6956)
+(or x6955 (not x6954) x6968)
+(or (not x6968) (not x6955))
+(or (not x6968) x6954)
+(or x6958 (not x6969))
+(or x6958 x6962)
+(or x6958 (not x6963))
+(or x6958 (not x6964))
+(or x6958 x6965)
+(or x6969 (not x6962) x6963 x6964 (not x6965) (not x6958))
+(or x6955 (not x6958) x6970)
+(or (not x6970) (not x6955))
+(or (not x6970) x6958)
+(or x6971 (not x6970))
+(or x6971 (not x6968))
+(or x6970 x6968 (not x6971))
+(or (not x6972) (not x6971) x6973)
+(or (not x6973) x6972)
+(or (not x6973) x6971)
+(or x6974 (not x6973))
+(or x6974 (not x6967))
+(or x6973 x6967 (not x6974))
+(or x6975 (not x6955))
+(or x6975 (not x6976))
+(or x6975 (not x6977))
+(or x6955 x6976 x6977 (not x6975))
+(or x6978 (not x6955))
+(or x6978 x6982)
+(or x6978 (not x6981))
+(or x6978 (not x6980))
+(or x6978 (not x6979))
+(or x6955 (not x6982) x6981 x6980 x6979 (not x6978))
+(or x6983 x6984)
+(or x6983 x6985)
+(or (not x6984) (not x6985) (not x6983))
+(or (not x6983) (not x6984) x6986)
+(or (not x6986) x6983)
+(or (not x6986) x6984)
+(or x6987 x6955)
+(or x6987 x6988)
+(or x6987 (not x6986))
+(or (not x6955) (not x6988) x6986 (not x6987))
+(or (not x6987) (not x6978) (not x6975) x6989)
+(or (not x6989) x6987)
+(or (not x6989) x6978)
+(or (not x6989) x6975)
+(or (not x6982) x6981 x6980 x6979 (not x6990) x6991)
+(or (not x6991) x6982)
+(or (not x6991) (not x6981))
+(or (not x6991) (not x6980))
+(or (not x6991) (not x6979))
+(or (not x6991) x6990)
+(or (not x6992) (not x6993) x6994 (not x6995) (not x6996) (not x6997) (not x6998) (not x6999) (not x7000) (not x7001) (not x7002) (not x7003) x7004)
+(or (not x7004) x6992)
+(or (not x7004) x6993)
+(or (not x7004) (not x6994))
+(or (not x7004) x6995)
+(or (not x7004) x6996)
+(or (not x7004) x6997)
+(or (not x7004) x6998)
+(or (not x7004) x6999)
+(or (not x7004) x7000)
+(or (not x7004) x7001)
+(or (not x7004) x7002)
+(or (not x7004) x7003)
+(or x7005 (not x7004))
+(or x7005 (not x6991))
+(or x7004 x6991 (not x7005))
+(or x7006 x7007 x7008)
+(or (not x7008) (not x7006))
+(or (not x7008) (not x7007))
+(or x7009 x6912)
+(or x7009 x6911)
+(or x7009 (not x7010))
+(or x7009 (not x7011))
+(or x7009 (not x7008))
+(or (not x6912) (not x6911) x7010 x7011 x7008 (not x7009))
+(or (not x7012) (not x7009) x7013)
+(or (not x7013) x7012)
+(or (not x7013) x7009)
+(or x7014 (not x7006))
+(or x7014 (not x7015))
+(or x7006 x7015 (not x7014))
+(or (not x7007) (not x7014) x7016)
+(or (not x7016) x7007)
+(or (not x7016) x7014)
+(or x7017 (not x7016))
+(or x7017 (not x7013))
+(or x7016 x7013 (not x7017))
+(or x7018 (not x6912) (not x6911) (not x7019) (not x7020) x7015)
+(or (not x7015) (not x7018))
+(or (not x7015) x6912)
+(or (not x7015) x6911)
+(or (not x7015) x7019)
+(or (not x7015) x7020)
+(or (not x7006) x7018 (not x6912) (not x6911) (not x7019) (not x7020) x7021)
+(or (not x7021) x7006)
+(or (not x7021) (not x7018))
+(or (not x7021) x6912)
+(or (not x7021) x6911)
+(or (not x7021) x7019)
+(or (not x7021) x7020)
+(or x7022 x6912)
+(or x7022 x6911)
+(or x7022 (not x7010))
+(or x7022 (not x7011))
+(or x7022 x7006)
+(or (not x6912) (not x6911) x7010 x7011 (not x7006) (not x7022))
+(or x7012 (not x7018))
+(or x7012 x6912)
+(or x7012 x6911)
+(or x7012 (not x7010))
+(or x7012 (not x7011))
+(or x7018 (not x6912) (not x6911) x7010 x7011 (not x7012))
+(or (not x7012) (not x7022) x7023)
+(or (not x7023) x7012)
+(or (not x7023) x7022)
+(or x7024 (not x7023))
+(or x7024 (not x7021))
+(or x7023 x7021 (not x7024))
+(or x6962 (not x6965) x7025)
+(or (not x7025) (not x6962))
+(or (not x7025) x6965)
+(or x7026 (not x7027))
+(or x7026 x6993)
+(or x7026 x7028)
+(or x7026 (not x7025))
+(or x7027 (not x6993) (not x7028) x7025 (not x7026))
+(or (not x7029) (not x6992) (not x7026) x7030)
+(or (not x7030) x7029)
+(or (not x7030) x6992)
+(or (not x7030) x7026)
+(or x7031 (not x6962))
+(or x7031 x6965)
+(or x6962 (not x6965) (not x7031))
+(or (not x7032) (not x6993) (not x7028) (not x7031) x7033)
+(or (not x7033) x7032)
+(or (not x7033) x6993)
+(or (not x7033) x7028)
+(or (not x7033) x7031)
+(or x7034 (not x6976))
+(or x7034 (not x7033))
+(or x6976 x7033 (not x7034))
+(or (not x7034) (not x6992) x7035)
+(or (not x7035) x7034)
+(or (not x7035) x6992)
+(or x7036 (not x7035))
+(or x7036 (not x7030))
+(or x7035 x7030 (not x7036))
+(or x7037 (not x7038))
+(or x7037 x7018)
+(or x7038 (not x7018) (not x7037))
+(or (not x6962) (not x6912) (not x6911) (not x7039) (not x6964) (not x7040) (not x7041) x7018 x7042 x7043 x7044 x7045 x7046 (not x6962) x7047 x6994 x7048 x7049 x6955 x7050 x7051)
+(or (not x7051) x6962)
+(or (not x7051) x6912)
+(or (not x7051) x6911)
+(or (not x7051) x7039)
+(or (not x7051) x6964)
+(or (not x7051) x7040)
+(or (not x7051) x7041)
+(or (not x7051) (not x7018))
+(or (not x7051) (not x7042))
+(or (not x7051) (not x7043))
+(or (not x7051) (not x7044))
+(or (not x7051) (not x7045))
+(or (not x7051) (not x7046))
+(or (not x7051) x6962)
+(or (not x7051) (not x7047))
+(or (not x7051) (not x6994))
+(or (not x7051) (not x7048))
+(or (not x7051) (not x7049))
+(or (not x7051) (not x6955))
+(or (not x7051) (not x7050))
+(or (not x7052) (not x7053) (not x6912) (not x6911) (not x7018) x6962 x7042 x7043 x7044 x7045 x7047 x6994 x7048 x7049 x6955 x7050 x7054)
+(or (not x7054) x7052)
+(or (not x7054) x7053)
+(or (not x7054) x6912)
+(or (not x7054) x6911)
+(or (not x7054) x7018)
+(or (not x7054) (not x6962))
+(or (not x7054) (not x7042))
+(or (not x7054) (not x7043))
+(or (not x7054) (not x7044))
+(or (not x7054) (not x7045))
+(or (not x7054) (not x7047))
+(or (not x7054) (not x6994))
+(or (not x7054) (not x7048))
+(or (not x7054) (not x7049))
+(or (not x7054) (not x6955))
+(or (not x7054) (not x7050))
+(or x7055 (not x7054))
+(or x7055 (not x7051))
+(or x7054 x7051 (not x7055))
+(or x7042 x7044 x7045 (not x7043) x7047 x6994 x7048 x7049 x6955 x7050 x7018 x6962 x7056)
+(or (not x7056) (not x7042))
+(or (not x7056) (not x7044))
+(or (not x7056) (not x7045))
+(or (not x7056) x7043)
+(or (not x7056) (not x7047))
+(or (not x7056) (not x6994))
+(or (not x7056) (not x7048))
+(or (not x7056) (not x7049))
+(or (not x7056) (not x6955))
+(or (not x7056) (not x7050))
+(or (not x7056) (not x7018))
+(or (not x7056) (not x6962))
+(or (not x6982) x6981 x6980 x6979 (not x6955) x7050 x7047 x6962 x7018 x7048 x7049 (not x7057) (not x7058) x6994 x7042 x7043 x7044 x7045 x7059)
+(or (not x7059) x6982)
+(or (not x7059) (not x6981))
+(or (not x7059) (not x6980))
+(or (not x7059) (not x6979))
+(or (not x7059) x6955)
+(or (not x7059) (not x7050))
+(or (not x7059) (not x7047))
+(or (not x7059) (not x6962))
+(or (not x7059) (not x7018))
+(or (not x7059) (not x7048))
+(or (not x7059) (not x7049))
+(or (not x7059) x7057)
+(or (not x7059) x7058)
+(or (not x7059) (not x6994))
+(or (not x7059) (not x7042))
+(or (not x7059) (not x7043))
+(or (not x7059) (not x7044))
+(or (not x7059) (not x7045))
+(or x7060 (not x7059))
+(or x7060 (not x7056))
+(or x7059 x7056 (not x7060))
+(or (not x6912) (not x6911) (not x7061) (not x7060) x7062)
+(or (not x7062) x6912)
+(or (not x7062) x6911)
+(or (not x7062) x7061)
+(or (not x7062) x7060)
+(or (not x6912) (not x6911) (not x7018) x6962 x7042 x7043 x7044 x7045 x7047 x6994 x7048 x7049 x6955 x7050 (not x7063) (not x7064) (not x7065) (not x7066) (not x7067) (not x7028) x7068)
+(or (not x7068) x6912)
+(or (not x7068) x6911)
+(or (not x7068) x7018)
+(or (not x7068) (not x6962))
+(or (not x7068) (not x7042))
+(or (not x7068) (not x7043))
+(or (not x7068) (not x7044))
+(or (not x7068) (not x7045))
+(or (not x7068) (not x7047))
+(or (not x7068) (not x6994))
+(or (not x7068) (not x7048))
+(or (not x7068) (not x7049))
+(or (not x7068) (not x6955))
+(or (not x7068) (not x7050))
+(or (not x7068) x7063)
+(or (not x7068) x7064)
+(or (not x7068) x7065)
+(or (not x7068) x7066)
+(or (not x7068) x7067)
+(or (not x7068) x7028)
+(or (not x7061) x7043 x7044 x7045 x7047 x6994 x7048 x7049 x6955 x7050 x7018 x6962 x7069)
+(or (not x7069) x7061)
+(or (not x7069) (not x7043))
+(or (not x7069) (not x7044))
+(or (not x7069) (not x7045))
+(or (not x7069) (not x7047))
+(or (not x7069) (not x6994))
+(or (not x7069) (not x7048))
+(or (not x7069) (not x7049))
+(or (not x7069) (not x6955))
+(or (not x7069) (not x7050))
+(or (not x7069) (not x7018))
+(or (not x7069) (not x6962))
+(or x7070 (not x7071))
+(or x7070 (not x7069))
+(or x7071 x7069 (not x7070))
+(or (not x6912) (not x6911) (not x7042) (not x7070) x7072)
+(or (not x7072) x6912)
+(or (not x7072) x6911)
+(or (not x7072) x7042)
+(or (not x7072) x7070)
+(or x7047 x7048 (not x7049) (not x6912) (not x6911) x6955 x7050 x7018 x6962 x6994 x7042 x7043 x7044 x7045 x7073)
+(or (not x7073) (not x7047))
+(or (not x7073) (not x7048))
+(or (not x7073) x7049)
+(or (not x7073) x6912)
+(or (not x7073) x6911)
+(or (not x7073) (not x6955))
+(or (not x7073) (not x7050))
+(or (not x7073) (not x7018))
+(or (not x7073) (not x6962))
+(or (not x7073) (not x6994))
+(or (not x7073) (not x7042))
+(or (not x7073) (not x7043))
+(or (not x7073) (not x7044))
+(or (not x7073) (not x7045))
+(or x7074 (not x7073))
+(or x7074 (not x7072))
+(or x7073 x7072 (not x7074))
+(or x7075 x7043)
+(or x7075 x7050)
+(or (not x7043) (not x7050) (not x7075))
+(or x7076 (not x7043))
+(or x7076 (not x7061))
+(or x7076 (not x6955))
+(or x7043 x7061 x6955 (not x7076))
+(or x7050 x7043 (not x7077) x7078)
+(or (not x7078) (not x7050))
+(or (not x7078) (not x7043))
+(or (not x7078) x7077)
+(or x7079 x6955)
+(or x7079 (not x7078))
+(or (not x6955) x7078 (not x7079))
+(or x7080 x7061)
+(or x7080 (not x6955))
+(or x7080 (not x7050))
+(or (not x7061) x6955 x7050 (not x7080))
+(or (not x6912) (not x6911) x6994 x7042 x7047 x6962 x7018 x7048 x7049 x7044 x7045 (not x7080) (not x7079) (not x7076) (not x7075) x7081)
+(or (not x7081) x6912)
+(or (not x7081) x6911)
+(or (not x7081) (not x6994))
+(or (not x7081) (not x7042))
+(or (not x7081) (not x7047))
+(or (not x7081) (not x6962))
+(or (not x7081) (not x7018))
+(or (not x7081) (not x7048))
+(or (not x7081) (not x7049))
+(or (not x7081) (not x7044))
+(or (not x7081) (not x7045))
+(or (not x7081) x7080)
+(or (not x7081) x7079)
+(or (not x7081) x7076)
+(or (not x7081) x7075)
+(or (not x6912) (not x6911) (not x7082) x7083)
+(or (not x7083) x6912)
+(or (not x7083) x6911)
+(or (not x7083) x7082)
+(or x7003 (not x7084))
+(or x7003 (not x7085))
+(or x7084 x7085 (not x7003))
+(or x7086 (not x7087))
+(or x7086 x7044)
+(or x7087 (not x7044) (not x7086))
+(or x7088 (not x6955))
+(or x7088 (not x7044))
+(or x7088 (not x7042))
+(or x7088 (not x7043))
+(or x6955 x7044 x7042 x7043 (not x7088))
+(or x7089 x7043)
+(or x7089 x7042)
+(or (not x7043) (not x7042) (not x7089))
+(or x7045 (not x7089) (not x7088) (not x7086) x7090)
+(or (not x7090) (not x7045))
+(or (not x7090) x7089)
+(or (not x7090) x7088)
+(or (not x7090) x7086)
+(or x7002 (not x7050))
+(or x7002 (not x7047))
+(or x7002 (not x6962))
+(or x7002 (not x7018))
+(or x7002 (not x7048))
+(or x7002 (not x7049))
+(or x7002 (not x7090))
+(or x7050 x7047 x6962 x7018 x7048 x7049 x7090 (not x7002))
+(or x7001 x7049)
+(or x7001 x7048)
+(or (not x7049) (not x7048) (not x7001))
+(or x7000 (not x7091))
+(or x7000 x7050)
+(or x7091 (not x7050) (not x7000))
+(or x6999 x6962)
+(or x6999 (not x7092))
+(or (not x6962) x7092 (not x6999))
+(or (not x6982) x6981 x6980 x6979 x7061 x7093)
+(or (not x7093) x6982)
+(or (not x7093) (not x6981))
+(or (not x7093) (not x6980))
+(or (not x7093) (not x6979))
+(or (not x7093) (not x7061))
+(or (not x6982) x6981 x6980 x6979 (not x7061) (not x6977) x7094)
+(or (not x7094) x6982)
+(or (not x7094) (not x6981))
+(or (not x7094) (not x6980))
+(or (not x7094) (not x6979))
+(or (not x7094) x7061)
+(or (not x7094) x6977)
+(or x7077 (not x7094))
+(or x7077 (not x7093))
+(or x7094 x7093 (not x7077))
+(or (not x6982) x6981 x6980 x6979 (not x7061) x7095)
+(or (not x7095) x6982)
+(or (not x7095) (not x6981))
+(or (not x7095) (not x6980))
+(or (not x7095) (not x6979))
+(or (not x7095) x7061)
+(or x7096 (not x7095))
+(or x7096 (not x7094))
+(or x7096 (not x7093))
+(or x7095 x7094 x7093 (not x7096))
+(or x7044 x7042 x7043 x7050 x7047 x6962 x7018 x7048 x7049 (not x7096) x7097)
+(or (not x7097) (not x7044))
+(or (not x7097) (not x7042))
+(or (not x7097) (not x7043))
+(or (not x7097) (not x7050))
+(or (not x7097) (not x7047))
+(or (not x7097) (not x6962))
+(or (not x7097) (not x7018))
+(or (not x7097) (not x7048))
+(or (not x7097) (not x7049))
+(or (not x7097) x7096)
+(or x6998 x6955)
+(or x6998 (not x7097))
+(or (not x6955) x7097 (not x6998))
+(or x6997 (not x7098))
+(or x6997 x7018)
+(or x7098 (not x7018) (not x6997))
+(or x6996 (not x7099))
+(or x6996 x7047)
+(or x7099 (not x7047) (not x6996))
+(or x6995 x7046)
+(or x6995 x6962)
+(or (not x7046) (not x6962) (not x6995))
+(or (not x7028) (not x6912) (not x6911) x6994 (not x6995) (not x6996) (not x6997) (not x6998) (not x6999) (not x7000) (not x7001) (not x7002) (not x7003) (not x7100) (not x7065) (not x7101) (not x7102) (not x7067) (not x7103) (not x6992) x7104)
+(or (not x7104) x7028)
+(or (not x7104) x6912)
+(or (not x7104) x6911)
+(or (not x7104) (not x6994))
+(or (not x7104) x6995)
+(or (not x7104) x6996)
+(or (not x7104) x6997)
+(or (not x7104) x6998)
+(or (not x7104) x6999)
+(or (not x7104) x7000)
+(or (not x7104) x7001)
+(or (not x7104) x7002)
+(or (not x7104) x7003)
+(or (not x7104) x7100)
+(or (not x7104) x7065)
+(or (not x7104) x7101)
+(or (not x7104) x7102)
+(or (not x7104) x7067)
+(or (not x7104) x7103)
+(or (not x7104) x6992)
+(or x7105 x6912)
+(or x7105 x6911)
+(or x7105 (not x6994))
+(or x7105 (not x7106))
+(or x7105 (not x7107))
+(or x7105 (not x7108))
+(or x7105 (not x7109))
+(or x7105 (not x7110))
+(or x7105 (not x7111))
+(or x7105 (not x7112))
+(or x7105 (not x7113))
+(or x7105 (not x7114))
+(or x7105 (not x7115))
+(or x7105 (not x7116))
+(or x7105 (not x7117))
+(or x7105 (not x7118))
+(or x7105 (not x7119))
+(or x7105 (not x7120))
+(or x7105 (not x6976))
+(or (not x6912) (not x6911) x6994 x7106 x7107 x7108 x7109 x7110 x7111 x7112 x7113 x7114 x7115 x7116 x7117 x7118 x7119 x7120 x6976 (not x7105))
+(or x7121 x6912)
+(or x7121 x6911)
+(or x7121 (not x6994))
+(or x7121 (not x7106))
+(or x7121 (not x7107))
+(or x7121 (not x7108))
+(or x7121 (not x7109))
+(or x7121 (not x7110))
+(or x7121 (not x7111))
+(or x7121 (not x7112))
+(or x7121 (not x7113))
+(or x7121 (not x7114))
+(or x7121 (not x7115))
+(or x7121 (not x7116))
+(or x7121 (not x7117))
+(or x7121 (not x7118))
+(or x7121 (not x7119))
+(or x7121 (not x7120))
+(or x7121 x6990)
+(or (not x6912) (not x6911) x6994 x7106 x7107 x7108 x7109 x7110 x7111 x7112 x7113 x7114 x7115 x7116 x7117 x7118 x7119 x7120 (not x6990) (not x7121))
+(or (not x7121) (not x7105) x7122)
+(or (not x7122) x7121)
+(or (not x7122) x7105)
+(or x7123 (not x7122))
+(or x7123 (not x7104))
+(or x7122 x7104 (not x7123))
+(or (not x6992) (not x7124) x7125)
+(or (not x7125) x6992)
+(or (not x7125) x7124)
+(or (not x6982) x6981 x6980 x6979 (not x7126) x7127)
+(or (not x7127) x6982)
+(or (not x7127) (not x6981))
+(or (not x7127) (not x6980))
+(or (not x7127) (not x6979))
+(or (not x7127) x7126)
+(or x7128 (not x7127))
+(or x7128 (not x7125))
+(or x7127 x7125 (not x7128))
+(or (not x6992) (not x7129) x7130)
+(or (not x7130) x6992)
+(or (not x7130) x7129)
+(or x7131 (not x6976))
+(or x7131 (not x7130))
+(or x6976 x7130 (not x7131))
+(or x7048 x7049 (not x7047) (not x6912) (not x6911) x6955 x7050 x7018 x6962 x6994 x7042 x7043 x7044 x7045 x7132)
+(or (not x7132) (not x7048))
+(or (not x7132) (not x7049))
+(or (not x7132) x7047)
+(or (not x7132) x6912)
+(or (not x7132) x6911)
+(or (not x7132) (not x6955))
+(or (not x7132) (not x7050))
+(or (not x7132) (not x7018))
+(or (not x7132) (not x6962))
+(or (not x7132) (not x6994))
+(or (not x7132) (not x7042))
+(or (not x7132) (not x7043))
+(or (not x7132) (not x7044))
+(or (not x7132) (not x7045))
+(or (not x7064) (not x7065) (not x7066) (not x7067) x7133)
+(or (not x7133) x7064)
+(or (not x7133) x7065)
+(or (not x7133) x7066)
+(or (not x7133) x7067)
+(or x7134 (not x7135))
+(or x7134 (not x7136))
+(or x7134 (not x7117))
+(or x7134 (not x7116))
+(or x7134 (not x7137))
+(or x7134 (not x7138))
+(or x7134 (not x7120))
+(or x7134 (not x7119))
+(or x7134 (not x7006))
+(or x7134 (not x7007))
+(or x7135 x7136 x7117 x7116 x7137 x7138 x7120 x7119 x7006 x7007 (not x7134))
+(or (not x7100) (not x7065) (not x7101) (not x7102) (not x7067) (not x7103) x7038)
+(or (not x7038) x7100)
+(or (not x7038) x7065)
+(or (not x7038) x7101)
+(or (not x7038) x7102)
+(or (not x7038) x7067)
+(or (not x7038) x7103)
+(or x7052 (not x7038))
+(or x7052 (not x7136))
+(or x7052 (not x7116))
+(or x7052 (not x7138))
+(or x7052 (not x7119))
+(or x7052 x7028)
+(or x7038 x7136 x7116 x7138 x7119 (not x7028) (not x7052))
+(or (not x7052) (not x7134) (not x7064) (not x7065) (not x7066) (not x7067) x6962 x7042 x7043 x7044 x7045 x7047 x6994 x7048 x7049 x6955 x7050 x7139)
+(or (not x7139) x7052)
+(or (not x7139) x7134)
+(or (not x7139) x7064)
+(or (not x7139) x7065)
+(or (not x7139) x7066)
+(or (not x7139) x7067)
+(or (not x7139) (not x6962))
+(or (not x7139) (not x7042))
+(or (not x7139) (not x7043))
+(or (not x7139) (not x7044))
+(or (not x7139) (not x7045))
+(or (not x7139) (not x7047))
+(or (not x7139) (not x6994))
+(or (not x7139) (not x7048))
+(or (not x7139) (not x7049))
+(or (not x7139) (not x6955))
+(or (not x7139) (not x7050))
+(or x7039 (not x6965))
+(or x7039 (not x6963))
+(or x7039 (not x6964))
+(or x7039 x6993)
+(or x7039 x7029)
+(or x6965 x6963 x6964 (not x6993) (not x7029) (not x7039))
+(or (not x7039) (not x6964) (not x7040) (not x7041) x7018 x7042 x7043 x7044 x7045 x7046 (not x6962) x7047 x6994 x7048 x7049 x6955 x7050 x7071)
+(or (not x7071) x7039)
+(or (not x7071) x6964)
+(or (not x7071) x7040)
+(or (not x7071) x7041)
+(or (not x7071) (not x7018))
+(or (not x7071) (not x7042))
+(or (not x7071) (not x7043))
+(or (not x7071) (not x7044))
+(or (not x7071) (not x7045))
+(or (not x7071) (not x7046))
+(or (not x7071) x6962)
+(or (not x7071) (not x7047))
+(or (not x7071) (not x6994))
+(or (not x7071) (not x7048))
+(or (not x7071) (not x7049))
+(or (not x7071) (not x6955))
+(or (not x7071) (not x7050))
+(or x7140 (not x7071))
+(or x7140 (not x7139))
+(or x7071 x7139 (not x7140))
+(or (not x6912) (not x6911) (not x7018) (not x7140) x7141)
+(or (not x7141) x6912)
+(or (not x7141) x6911)
+(or (not x7141) x7018)
+(or (not x7141) x7140)
+(or x7142 (not x7141))
+(or x7142 (not x7132))
+(or x7141 x7132 (not x7142))
+(or (not x7143) (not x7144) x7114)
+(or (not x7114) x7143)
+(or (not x7114) x7144)
+(or (not x7145) (not x7044) x7146)
+(or (not x7146) x7145)
+(or (not x7146) x7044)
+(or x6955 x7044 x7042 x7043 x7147)
+(or (not x7147) (not x6955))
+(or (not x7147) (not x7044))
+(or (not x7147) (not x7042))
+(or (not x7147) (not x7043))
+(or (not x7043) (not x7042) x7148)
+(or (not x7148) x7043)
+(or (not x7148) x7042)
+(or x7149 (not x7045))
+(or x7149 (not x7148))
+(or x7149 (not x7147))
+(or x7149 (not x7146))
+(or x7045 x7148 x7147 x7146 (not x7149))
+(or x7050 x7047 x6962 x7018 x7048 x7049 x7085)
+(or (not x7085) (not x7050))
+(or (not x7085) (not x7047))
+(or (not x7085) (not x6962))
+(or (not x7085) (not x7018))
+(or (not x7085) (not x7048))
+(or (not x7085) (not x7049))
+(or x7050 x7047 x6962 x7018 x7048 x7049 (not x7149) x7113)
+(or (not x7113) (not x7050))
+(or (not x7113) (not x7047))
+(or (not x7113) (not x6962))
+(or (not x7113) (not x7018))
+(or (not x7113) (not x7048))
+(or (not x7113) (not x7049))
+(or (not x7113) x7149)
+(or (not x7049) (not x7048) x7112)
+(or (not x7112) x7049)
+(or (not x7112) x7048)
+(or (not x7150) (not x7050) x7111)
+(or (not x7111) x7150)
+(or (not x7111) x7050)
+(or (not x6962) (not x7151) x7110)
+(or (not x7110) x6962)
+(or (not x7110) x7151)
+(or x7058 x6982)
+(or x7058 (not x6981))
+(or x7058 (not x6980))
+(or x7058 (not x6979))
+(or x7058 (not x7061))
+(or (not x6982) x6981 x6980 x6979 x7061 (not x7058))
+(or x7057 x6982)
+(or x7057 (not x6981))
+(or x7057 (not x6980))
+(or x7057 (not x6979))
+(or x7057 x7061)
+(or x7057 x6977)
+(or (not x6982) x6981 x6980 x6979 (not x7061) (not x6977) (not x7057))
+(or x7152 x6982)
+(or x7152 (not x6981))
+(or x7152 (not x6980))
+(or x7152 (not x6979))
+(or x7152 x7061)
+(or (not x6982) x6981 x6980 x6979 (not x7061) (not x7152))
+(or (not x7152) (not x7057) (not x7058) x7153)
+(or (not x7153) x7152)
+(or (not x7153) x7057)
+(or (not x7153) x7058)
+(or x7144 (not x7050))
+(or x7144 (not x7047))
+(or x7144 (not x6962))
+(or x7144 (not x7018))
+(or x7144 (not x7048))
+(or x7144 (not x7049))
+(or x7050 x7047 x6962 x7018 x7048 x7049 (not x7144))
+(or x7154 (not x7044))
+(or x7154 (not x7042))
+(or x7154 (not x7043))
+(or x7154 (not x7050))
+(or x7154 (not x7047))
+(or x7154 (not x6962))
+(or x7154 (not x7018))
+(or x7154 (not x7048))
+(or x7154 (not x7049))
+(or x7154 (not x7153))
+(or x7044 x7042 x7043 x7050 x7047 x6962 x7018 x7048 x7049 x7153 (not x7154))
+(or (not x6955) (not x7154) x7109)
+(or (not x7109) x6955)
+(or (not x7109) x7154)
+(or (not x7155) (not x7018) x7108)
+(or (not x7108) x7155)
+(or (not x7108) x7018)
+(or (not x7156) (not x7047) x7107)
+(or (not x7107) x7156)
+(or (not x7107) x7047)
+(or (not x7046) (not x6962) x7106)
+(or (not x7106) x7046)
+(or (not x7106) x6962)
+(or x7157 x6912)
+(or x7157 x6911)
+(or x7157 (not x6994))
+(or x7157 (not x7106))
+(or x7157 (not x7107))
+(or x7157 (not x7108))
+(or x7157 (not x7109))
+(or x7157 (not x7110))
+(or x7157 (not x7111))
+(or x7157 (not x7112))
+(or x7157 (not x7113))
+(or x7157 (not x7114))
+(or (not x6912) (not x6911) x6994 x7106 x7107 x7108 x7109 x7110 x7111 x7112 x7113 x7114 (not x7157))
+(or x7045 (not x6912) (not x6911) x7042 x7043 (not x7044) x7047 x6994 x7048 x7049 x6955 x7050 x7018 x6962 x7158)
+(or (not x7158) (not x7045))
+(or (not x7158) x6912)
+(or (not x7158) x6911)
+(or (not x7158) (not x7042))
+(or (not x7158) (not x7043))
+(or (not x7158) x7044)
+(or (not x7158) (not x7047))
+(or (not x7158) (not x6994))
+(or (not x7158) (not x7048))
+(or (not x7158) (not x7049))
+(or (not x7158) (not x6955))
+(or (not x7158) (not x7050))
+(or (not x7158) (not x7018))
+(or (not x7158) (not x6962))
+(or x7040 (not x7029))
+(or x7040 (not x6965))
+(or x7040 (not x6963))
+(or x7040 (not x6964))
+(or x7040 x6993)
+(or x7029 x6965 x6963 x6964 (not x6993) (not x7040))
+(or x6965 x6963 x6964 (not x6993) (not x7029) x7159)
+(or (not x7159) (not x6965))
+(or (not x7159) (not x6963))
+(or (not x7159) (not x6964))
+(or (not x7159) x6993)
+(or (not x7159) x7029)
+(or x7160 (not x7159))
+(or x7160 x6964)
+(or x7159 (not x6964) (not x7160))
+(or (not x6912) (not x6911) (not x7160) (not x7040) (not x7041) x7018 x7042 x7043 x7044 x7045 x7046 (not x6962) x7047 x6994 x7048 x7049 x6955 x7050 x7161)
+(or (not x7161) x6912)
+(or (not x7161) x6911)
+(or (not x7161) x7160)
+(or (not x7161) x7040)
+(or (not x7161) x7041)
+(or (not x7161) (not x7018))
+(or (not x7161) (not x7042))
+(or (not x7161) (not x7043))
+(or (not x7161) (not x7044))
+(or (not x7161) (not x7045))
+(or (not x7161) (not x7046))
+(or (not x7161) x6962)
+(or (not x7161) (not x7047))
+(or (not x7161) (not x6994))
+(or (not x7161) (not x7048))
+(or (not x7161) (not x7049))
+(or (not x7161) (not x6955))
+(or (not x7161) (not x7050))
+(or x7047 x7049 (not x7048) (not x6912) (not x6911) x6955 x7050 x7018 x6962 x6994 x7042 x7043 x7044 x7045 x7162)
+(or (not x7162) (not x7047))
+(or (not x7162) (not x7049))
+(or (not x7162) x7048)
+(or (not x7162) x6912)
+(or (not x7162) x6911)
+(or (not x7162) (not x6955))
+(or (not x7162) (not x7050))
+(or (not x7162) (not x7018))
+(or (not x7162) (not x6962))
+(or (not x7162) (not x6994))
+(or (not x7162) (not x7042))
+(or (not x7162) (not x7043))
+(or (not x7162) (not x7044))
+(or (not x7162) (not x7045))
+(or x6972 x6954 x6969)
+(or (not x6969) (not x6972))
+(or (not x6969) (not x6954))
+(or x7041 (not x6969))
+(or x7041 (not x6963))
+(or x7041 (not x6964))
+(or x7041 x6965)
+(or x6969 x6963 x6964 (not x6965) (not x7041))
+(or (not x7041) x7029 x6965 x6963 x6964 (not x6993) x7163)
+(or (not x7163) x7041)
+(or (not x7163) (not x7029))
+(or (not x7163) (not x6965))
+(or (not x7163) (not x6963))
+(or (not x7163) (not x6964))
+(or (not x7163) x6993)
+(or x6961 (not x6972))
+(or x6961 (not x6954))
+(or x6972 x6954 (not x6961))
+(or (not x6961) x6963 x6964 (not x6965) x7164)
+(or (not x7164) x6961)
+(or (not x7164) (not x6963))
+(or (not x7164) (not x6964))
+(or (not x7164) x6965)
+(or x7165 (not x7164))
+(or x7165 (not x7163))
+(or x7164 x7163 (not x7165))
+(or (not x6912) (not x6911) x7018 x7042 x7043 x7044 x7045 x7046 (not x6962) x7047 x6994 x7048 x7049 x6955 x7050 (not x7165) x7166)
+(or (not x7166) x6912)
+(or (not x7166) x6911)
+(or (not x7166) (not x7018))
+(or (not x7166) (not x7042))
+(or (not x7166) (not x7043))
+(or (not x7166) (not x7044))
+(or (not x7166) (not x7045))
+(or (not x7166) (not x7046))
+(or (not x7166) x6962)
+(or (not x7166) (not x7047))
+(or (not x7166) (not x6994))
+(or (not x7166) (not x7048))
+(or (not x7166) (not x7049))
+(or (not x7166) (not x6955))
+(or (not x7166) (not x7050))
+(or (not x7166) x7165)
+(or x7167 (not x7168))
+(or x7167 (not x7169))
+(or x7167 (not x7170))
+(or x7167 (not x7171))
+(or x7167 (not x7173))
+(or x7168 x7169 x7170 x7171 x7173 (not x7167))
+(or x7174 (not x7173))
+(or x7174 (not x7172))
+(or x7174 x132)
+(or x7174 (not x133))
+(or x7174 x6912)
+(or x7174 x6911)
+(or x7173 x7172 (not x132) x133 (not x6912) (not x6911) (not x7174))
+(or (not x7174) (not x7175) (not x7167) x7176)
+(or (not x7176) x7174)
+(or (not x7176) x7175)
+(or (not x7176) x7167)
+(or x7177 (not x7168))
+(or x7177 (not x7169))
+(or x7177 (not x7170))
+(or x7177 (not x7171))
+(or x7177 (not x7172))
+(or x7168 x7169 x7170 x7171 x7172 (not x7177))
+(or x7175 (not x7168))
+(or x7175 (not x7169))
+(or x7175 (not x7170))
+(or x7175 x7173)
+(or x7175 x7172)
+(or x7168 x7169 x7170 (not x7173) (not x7172) (not x7175))
+(or x7173 x7172 (not x132) x133 (not x6912) (not x6911) x7168)
+(or (not x7168) (not x7173))
+(or (not x7168) (not x7172))
+(or (not x7168) x132)
+(or (not x7168) (not x133))
+(or (not x7168) x6912)
+(or (not x7168) x6911)
+(or x7178 (not x7168))
+(or x7178 (not x7173))
+(or x7178 x7172)
+(or x7168 x7173 (not x7172) (not x7178))
+(or (not x7178) (not x7175) (not x7177) x7179)
+(or (not x7179) x7178)
+(or (not x7179) x7175)
+(or (not x7179) x7177)
+(or x7180 (not x7181))
+(or x7180 (not x7182))
+(or x7180 (not x7183))
+(or x7180 (not x7184))
+(or x7180 (not x7186))
+(or x7181 x7182 x7183 x7184 x7186 (not x7180))
+(or x7187 (not x7186))
+(or x7187 (not x7185))
+(or x7187 x132)
+(or x7187 (not x133))
+(or x7187 x6912)
+(or x7187 x6911)
+(or x7186 x7185 (not x132) x133 (not x6912) (not x6911) (not x7187))
+(or (not x7187) (not x7188) (not x7180) x7189)
+(or (not x7189) x7187)
+(or (not x7189) x7188)
+(or (not x7189) x7180)
+(or x7190 (not x7181))
+(or x7190 (not x7182))
+(or x7190 (not x7183))
+(or x7190 (not x7184))
+(or x7190 (not x7185))
+(or x7181 x7182 x7183 x7184 x7185 (not x7190))
+(or x7188 (not x7181))
+(or x7188 (not x7182))
+(or x7188 (not x7183))
+(or x7188 x7186)
+(or x7188 x7185)
+(or x7181 x7182 x7183 (not x7186) (not x7185) (not x7188))
+(or x7186 x7185 (not x132) x133 (not x6912) (not x6911) x7181)
+(or (not x7181) (not x7186))
+(or (not x7181) (not x7185))
+(or (not x7181) x132)
+(or (not x7181) (not x133))
+(or (not x7181) x6912)
+(or (not x7181) x6911)
+(or x7191 (not x7181))
+(or x7191 (not x7186))
+(or x7191 x7185)
+(or x7181 x7186 (not x7185) (not x7191))
+(or (not x7191) (not x7188) (not x7190) x7192)
+(or (not x7192) x7191)
+(or (not x7192) x7188)
+(or (not x7192) x7190)
+(or x7193 (not x7028))
+(or x7193 (not x7194))
+(or x7193 (not x7195))
+(or x7193 (not x7136))
+(or x7193 (not x7116))
+(or x7193 (not x7138))
+(or x7193 (not x7119))
+(or x7193 (not x7115))
+(or x7193 (not x7116))
+(or x7193 (not x7117))
+(or x7193 (not x7118))
+(or x7193 (not x7119))
+(or x7193 (not x7120))
+(or x7028 x7194 x7195 x7136 x7116 x7138 x7119 x7115 x7116 x7117 x7118 x7119 x7120 (not x7193))
+(or (not x7019) (not x7020) (not x7193) x7196)
+(or (not x7196) x7019)
+(or (not x7196) x7020)
+(or (not x7196) x7193)
+(or x7197 (not x6912))
+(or x7197 (not x6911))
+(or x6912 x6911 (not x7197))
+(or x6912 x6911 x7198)
+(or (not x7198) (not x6912))
+(or (not x7198) (not x6911))
+(or x7199 (not x7198))
+(or x7199 (not x6912))
+(or x7199 x6911)
+(or x7198 x6912 (not x6911) (not x7199))
+(or x7200 (not x7201))
+(or x7200 (not x7202))
+(or x7200 (not x7203))
+(or x7200 (not x7204))
+(or x7200 (not x7205))
+(or x7200 (not x7206))
+(or x7200 (not x7137))
+(or x7200 (not x7207))
+(or x7200 (not x7208))
+(or x7200 (not x7209))
+(or x7200 (not x7210))
+(or x7200 (not x7214))
+(or x7201 x7202 x7203 x7204 x7205 x7206 x7137 x7207 x7208 x7209 x7210 x7214 (not x7200))
+(or (not x7215) (not x7216) (not x7217) (not x7218) (not x7219) (not x7220) (not x7221) (not x7222) (not x7223) (not x7224) (not x7225) (not x7200) x7226)
+(or (not x7226) x7215)
+(or (not x7226) x7216)
+(or (not x7226) x7217)
+(or (not x7226) x7218)
+(or (not x7226) x7219)
+(or (not x7226) x7220)
+(or (not x7226) x7221)
+(or (not x7226) x7222)
+(or (not x7226) x7223)
+(or (not x7226) x7224)
+(or (not x7226) x7225)
+(or (not x7226) x7200)
+(or x7227 (not x7201))
+(or x7227 (not x7202))
+(or x7227 (not x7203))
+(or x7227 (not x7204))
+(or x7227 (not x7205))
+(or x7227 (not x7206))
+(or x7227 (not x7137))
+(or x7227 (not x7207))
+(or x7227 (not x7208))
+(or x7227 (not x7209))
+(or x7227 (not x7210))
+(or x7227 (not x7213))
+(or x7201 x7202 x7203 x7204 x7205 x7206 x7137 x7207 x7208 x7209 x7210 x7213 (not x7227))
+(or x7228 x7229)
+(or x7228 (not x7230))
+(or (not x7229) x7230 (not x7228))
+(or (not x7228) (not x7229) x7231)
+(or (not x7231) x7228)
+(or (not x7231) x7229)
+(or x7232 (not x7201))
+(or x7232 (not x7202))
+(or x7232 (not x7203))
+(or x7232 (not x7204))
+(or x7232 (not x7205))
+(or x7232 (not x7206))
+(or x7232 (not x7137))
+(or x7232 (not x7207))
+(or x7232 (not x7214))
+(or x7232 (not x7213))
+(or x7232 (not x7212))
+(or x7232 x7211)
+(or x7232 (not x134))
+(or x7232 (not x133))
+(or x7232 (not x7231))
+(or x7201 x7202 x7203 x7204 x7205 x7206 x7137 x7207 x7214 x7213 x7212 (not x7211) x134 x133 x7231 (not x7232))
+(or x7233 (not x7201))
+(or x7233 (not x7202))
+(or x7233 (not x7203))
+(or x7233 (not x7204))
+(or x7233 (not x7205))
+(or x7233 (not x7206))
+(or x7233 (not x7214))
+(or x7233 (not x7213))
+(or x7233 x7212)
+(or x7233 x7211)
+(or x7233 x7234)
+(or x7233 x7235)
+(or x7233 x7236)
+(or x7201 x7202 x7203 x7204 x7205 x7206 x7214 x7213 (not x7212) (not x7211) (not x7234) (not x7235) (not x7236) (not x7233))
+(or x7237 (not x7201))
+(or x7237 (not x7202))
+(or x7237 (not x7203))
+(or x7237 (not x7204))
+(or x7237 (not x7214))
+(or x7237 (not x7213))
+(or x7237 x7212)
+(or x7237 (not x7211))
+(or x7237 (not x7238))
+(or x7237 x7239)
+(or x7237 x7240)
+(or x7201 x7202 x7203 x7204 x7214 x7213 (not x7212) x7211 x7238 (not x7239) (not x7240) (not x7237))
+(or x7241 (not x7201))
+(or x7241 (not x7214))
+(or x7241 (not x7213))
+(or x7241 (not x7212))
+(or x7241 (not x7211))
+(or x7241 (not x133))
+(or x7241 x6912)
+(or x7241 x6911)
+(or x7241 (not x7238))
+(or x7241 (not x7242))
+(or x7241 (not x7243))
+(or x7241 x7244)
+(or x7201 x7214 x7213 x7212 x7211 x133 (not x6912) (not x6911) x7238 x7242 x7243 (not x7244) (not x7241))
+(or x7245 x7246)
+(or x7245 x7247)
+(or x7245 x7248)
+(or (not x7246) (not x7247) (not x7248) (not x7245))
+(or (not x7245) (not x7246) x7249)
+(or (not x7249) x7245)
+(or (not x7249) x7246)
+(or x7250 x7251)
+(or x7250 (not x7249))
+(or (not x7251) x7249 (not x7250))
+(or (not x7250) (not x7251) x7252)
+(or (not x7252) x7250)
+(or (not x7252) x7251)
+(or x7253 (not x7214))
+(or x7253 (not x7213))
+(or x7253 (not x7212))
+(or x7253 (not x7211))
+(or x7253 (not x133))
+(or x7253 x6912)
+(or x7253 x6911)
+(or x7253 (not x7238))
+(or x7253 (not x7254))
+(or x7253 (not x7252))
+(or x7214 x7213 x7212 x7211 x133 (not x6912) (not x6911) x7238 x7254 x7252 (not x7253))
+(or (not x7253) (not x7241) (not x7217) (not x7218) (not x7237) (not x7220) (not x7233) (not x7222) (not x7232) (not x7225) (not x7227) x7255)
+(or (not x7255) x7253)
+(or (not x7255) x7241)
+(or (not x7255) x7217)
+(or (not x7255) x7218)
+(or (not x7255) x7237)
+(or (not x7255) x7220)
+(or (not x7255) x7233)
+(or (not x7255) x7222)
+(or (not x7255) x7232)
+(or (not x7255) x7225)
+(or (not x7255) x7227)
+(or x7256 (not x7201))
+(or x7256 (not x7202))
+(or x7256 (not x7203))
+(or x7256 (not x7204))
+(or x7256 (not x7205))
+(or x7256 (not x7206))
+(or x7256 (not x7137))
+(or x7256 (not x7207))
+(or x7256 (not x7208))
+(or x7256 (not x7209))
+(or x7256 (not x7210))
+(or x7256 (not x7212))
+(or x7201 x7202 x7203 x7204 x7205 x7206 x7137 x7207 x7208 x7209 x7210 x7212 (not x7256))
+(or x7224 (not x7201))
+(or x7224 (not x7202))
+(or x7224 (not x7203))
+(or x7224 (not x7204))
+(or x7224 (not x7205))
+(or x7224 (not x7206))
+(or x7224 (not x7137))
+(or x7224 (not x7207))
+(or x7224 (not x7208))
+(or x7224 (not x7214))
+(or x7224 x7213)
+(or x7224 x7212)
+(or x7224 (not x7211))
+(or x7224 (not x134))
+(or x7224 (not x133))
+(or x7201 x7202 x7203 x7204 x7205 x7206 x7137 x7207 x7208 x7214 (not x7213) (not x7212) x7211 x134 x133 (not x7224))
+(or x7257 x7230)
+(or x7257 x7258)
+(or (not x7230) (not x7258) (not x7257))
+(or (not x7257) (not x7230) x7259)
+(or (not x7259) x7257)
+(or (not x7259) x7230)
+(or x7260 (not x7201))
+(or x7260 (not x7202))
+(or x7260 (not x7203))
+(or x7260 (not x7204))
+(or x7260 (not x7205))
+(or x7260 (not x7206))
+(or x7260 (not x7137))
+(or x7260 (not x7207))
+(or x7260 (not x7214))
+(or x7260 (not x7213))
+(or x7260 (not x7212))
+(or x7260 x7211)
+(or x7260 (not x134))
+(or x7260 (not x133))
+(or x7260 x7229)
+(or x7260 (not x7259))
+(or x7201 x7202 x7203 x7204 x7205 x7206 x7137 x7207 x7214 x7213 x7212 (not x7211) x134 x133 (not x7229) x7259 (not x7260))
+(or x7261 x7236)
+(or x7261 (not x7262))
+(or (not x7236) x7262 (not x7261))
+(or (not x7261) (not x7236) x7263)
+(or (not x7263) x7261)
+(or (not x7263) x7236)
+(or x7264 x7234)
+(or x7264 x7235)
+(or x7264 (not x7263))
+(or (not x7234) (not x7235) x7263 (not x7264))
+(or (not x7264) (not x7234) x7265)
+(or (not x7265) x7264)
+(or (not x7265) x7234)
+(or x7266 (not x7201))
+(or x7266 (not x7202))
+(or x7266 (not x7203))
+(or x7266 (not x7204))
+(or x7266 (not x7205))
+(or x7266 (not x7206))
+(or x7266 (not x7214))
+(or x7266 (not x7213))
+(or x7266 x7212)
+(or x7266 x7211)
+(or x7266 (not x7265))
+(or x7201 x7202 x7203 x7204 x7205 x7206 x7214 x7213 (not x7212) (not x7211) x7265 (not x7266))
+(or x7267 x7240)
+(or x7267 (not x7268))
+(or (not x7240) x7268 (not x7267))
+(or (not x7267) (not x7240) x7269)
+(or (not x7269) x7267)
+(or (not x7269) x7240)
+(or x7270 (not x7201))
+(or x7270 (not x7202))
+(or x7270 (not x7203))
+(or x7270 (not x7204))
+(or x7270 (not x7214))
+(or x7270 (not x7213))
+(or x7270 x7212)
+(or x7270 (not x7211))
+(or x7270 (not x7238))
+(or x7270 x7239)
+(or x7270 (not x7269))
+(or x7201 x7202 x7203 x7204 x7214 x7213 (not x7212) x7211 x7238 (not x7239) x7269 (not x7270))
+(or x7271 (not x7201))
+(or x7271 (not x7214))
+(or x7271 (not x7213))
+(or x7271 (not x7212))
+(or x7271 (not x7211))
+(or x7271 (not x133))
+(or x7271 x6912)
+(or x7271 x6911)
+(or x7271 (not x7238))
+(or x7271 (not x7242))
+(or x7271 (not x7243))
+(or x7271 (not x7244))
+(or x7201 x7214 x7213 x7212 x7211 x133 (not x6912) (not x6911) x7238 x7242 x7243 x7244 (not x7271))
+(or x7272 x7251)
+(or x7272 x7246)
+(or x7272 x7247)
+(or x7272 (not x7248))
+(or (not x7251) (not x7246) (not x7247) x7248 (not x7272))
+(or (not x7272) (not x7251) x7273)
+(or (not x7273) x7272)
+(or (not x7273) x7251)
+(or x7274 (not x7214))
+(or x7274 (not x7213))
+(or x7274 (not x7212))
+(or x7274 (not x7211))
+(or x7274 (not x133))
+(or x7274 x6912)
+(or x7274 x6911)
+(or x7274 (not x7238))
+(or x7274 (not x7254))
+(or x7274 (not x7273))
+(or x7214 x7213 x7212 x7211 x133 (not x6912) (not x6911) x7238 x7254 x7273 (not x7274))
+(or (not x7274) (not x7271) (not x7218) (not x7270) (not x7266) (not x7222) (not x7260) (not x7224) (not x7225) (not x7256) x7275)
+(or (not x7275) x7274)
+(or (not x7275) x7271)
+(or (not x7275) x7218)
+(or (not x7275) x7270)
+(or (not x7275) x7266)
+(or (not x7275) x7222)
+(or (not x7275) x7260)
+(or (not x7275) x7224)
+(or (not x7275) x7225)
+(or (not x7275) x7256)
+(or x7276 (not x7118))
+(or x7276 (not x7120))
+(or x7276 (not x7119))
+(or x7118 x7120 x7119 (not x7276))
+(or (not x7276) (not x133) x7210)
+(or (not x7210) x7276)
+(or (not x7210) x133)
+(or x7277 (not x7201))
+(or x7277 (not x7202))
+(or x7277 (not x7203))
+(or x7277 (not x7204))
+(or x7277 (not x7205))
+(or x7277 (not x7206))
+(or x7277 (not x7137))
+(or x7277 (not x7207))
+(or x7277 (not x7208))
+(or x7277 (not x7209))
+(or x7277 (not x7210))
+(or x7277 (not x7211))
+(or x7201 x7202 x7203 x7204 x7205 x7206 x7137 x7207 x7208 x7209 x7210 x7211 (not x7277))
+(or x7102 (not x7214))
+(or x7102 x7213)
+(or x7102 (not x7212))
+(or x7102 (not x7211))
+(or x7214 (not x7213) x7212 x7211 (not x7102))
+(or (not x7102) (not x7103) (not x7067) x7278)
+(or (not x7278) x7102)
+(or (not x7278) x7103)
+(or (not x7278) x7067)
+(or x7214 (not x7213) (not x7212) x7211 x134 x133 x7209)
+(or (not x7209) (not x7214))
+(or (not x7209) x7213)
+(or (not x7209) x7212)
+(or (not x7209) (not x7211))
+(or (not x7209) (not x134))
+(or (not x7209) (not x133))
+(or x7214 x7213 x7212 (not x7211) x134 x133 x7208)
+(or (not x7208) (not x7214))
+(or (not x7208) (not x7213))
+(or (not x7208) (not x7212))
+(or (not x7208) x7211)
+(or (not x7208) (not x134))
+(or (not x7208) (not x133))
+(or x7225 (not x7201))
+(or x7225 (not x7202))
+(or x7225 (not x7203))
+(or x7225 (not x7204))
+(or x7225 (not x7205))
+(or x7225 (not x7206))
+(or x7225 (not x7137))
+(or x7225 (not x7207))
+(or x7225 (not x7208))
+(or x7225 (not x7209))
+(or x7225 (not x7278))
+(or x7225 x133)
+(or x7201 x7202 x7203 x7204 x7205 x7206 x7137 x7207 x7208 x7209 x7278 (not x133) (not x7225))
+(or x7279 x7258)
+(or x7279 x7280)
+(or (not x7258) (not x7280) (not x7279))
+(or (not x7279) (not x7258) x7281)
+(or (not x7281) x7279)
+(or (not x7281) x7258)
+(or x7214 x7213 x7212 (not x7211) x134 (not x133) x7207)
+(or (not x7207) (not x7214))
+(or (not x7207) (not x7213))
+(or (not x7207) (not x7212))
+(or (not x7207) x7211)
+(or (not x7207) (not x134))
+(or (not x7207) x133)
+(or x7223 (not x7201))
+(or x7223 (not x7202))
+(or x7223 (not x7203))
+(or x7223 (not x7204))
+(or x7223 (not x7205))
+(or x7223 (not x7206))
+(or x7223 (not x7137))
+(or x7223 (not x7207))
+(or x7223 (not x7214))
+(or x7223 (not x7213))
+(or x7223 (not x7212))
+(or x7223 x7211)
+(or x7223 (not x134))
+(or x7223 (not x133))
+(or x7201 x7202 x7203 x7204 x7205 x7206 x7137 x7207 x7214 x7213 x7212 (not x7211) x134 x133 (not x7223))
+(or x7282 (not x7201))
+(or x7282 (not x7202))
+(or x7282 (not x7203))
+(or x7282 (not x7204))
+(or x7282 (not x7205))
+(or x7282 (not x7206))
+(or x7282 (not x7137))
+(or x7282 (not x7207))
+(or x7282 (not x7214))
+(or x7282 (not x7213))
+(or x7282 (not x7212))
+(or x7282 x7211)
+(or x7282 (not x134))
+(or x7282 (not x133))
+(or x7282 x7229)
+(or x7282 x7230)
+(or x7282 (not x7281))
+(or x7201 x7202 x7203 x7204 x7205 x7206 x7137 x7207 x7214 x7213 x7212 (not x7211) x134 x133 (not x7229) (not x7230) x7281 (not x7282))
+(or x7222 (not x7201))
+(or x7222 (not x7202))
+(or x7222 (not x7203))
+(or x7222 (not x7204))
+(or x7222 (not x7205))
+(or x7222 (not x7206))
+(or x7222 (not x7137))
+(or x7222 (not x7214))
+(or x7222 (not x7213))
+(or x7222 (not x7212))
+(or x7222 x7211)
+(or x7222 (not x134))
+(or x7222 x133)
+(or x7201 x7202 x7203 x7204 x7205 x7206 x7137 x7214 x7213 x7212 (not x7211) x134 (not x133) (not x7222))
+(or x7283 x7235)
+(or x7283 (not x7236))
+(or (not x7235) x7236 (not x7283))
+(or (not x7283) (not x7235) x7284)
+(or (not x7284) x7283)
+(or (not x7284) x7235)
+(or x7221 (not x7201))
+(or x7221 (not x7202))
+(or x7221 (not x7203))
+(or x7221 (not x7204))
+(or x7221 (not x7205))
+(or x7221 (not x7206))
+(or x7221 (not x7214))
+(or x7221 (not x7213))
+(or x7221 x7212)
+(or x7221 x7211)
+(or x7201 x7202 x7203 x7204 x7205 x7206 x7214 x7213 (not x7212) (not x7211) (not x7221))
+(or x7285 (not x7201))
+(or x7285 (not x7202))
+(or x7285 (not x7203))
+(or x7285 (not x7204))
+(or x7285 (not x7205))
+(or x7285 (not x7206))
+(or x7285 (not x7214))
+(or x7285 (not x7213))
+(or x7285 x7212)
+(or x7285 x7211)
+(or x7285 x7234)
+(or x7285 (not x7284))
+(or x7201 x7202 x7203 x7204 x7205 x7206 x7214 x7213 (not x7212) (not x7211) (not x7234) x7284 (not x7285))
+(or x7214 x7213 (not x7212) x7211 (not x7286) x7205)
+(or (not x7205) (not x7214))
+(or (not x7205) (not x7213))
+(or (not x7205) x7212)
+(or (not x7205) (not x7211))
+(or (not x7205) x7286)
+(or x7220 (not x7201))
+(or x7220 (not x7202))
+(or x7220 (not x7203))
+(or x7220 (not x7204))
+(or x7220 (not x7205))
+(or x7220 (not x7214))
+(or x7220 (not x7213))
+(or x7220 x7212)
+(or x7220 (not x7211))
+(or x7201 x7202 x7203 x7204 x7205 x7214 x7213 (not x7212) x7211 (not x7220))
+(or x7287 x7239)
+(or x7287 x7240)
+(or x7287 x7268)
+(or x7287 x7288)
+(or (not x7239) (not x7240) (not x7268) (not x7288) (not x7287))
+(or (not x7287) (not x7239) x7289)
+(or (not x7289) x7287)
+(or (not x7289) x7239)
+(or x7214 x7213 (not x7212) x7211 (not x133) (not x134) x7204)
+(or (not x7204) (not x7214))
+(or (not x7204) (not x7213))
+(or (not x7204) x7212)
+(or (not x7204) (not x7211))
+(or (not x7204) x133)
+(or (not x7204) x134)
+(or x7219 (not x7201))
+(or x7219 (not x7202))
+(or x7219 (not x7203))
+(or x7219 (not x7204))
+(or x7219 (not x7214))
+(or x7219 (not x7213))
+(or x7219 x7212)
+(or x7219 (not x7211))
+(or x7219 (not x7238))
+(or x7201 x7202 x7203 x7204 x7214 x7213 (not x7212) x7211 x7238 (not x7219))
+(or x7290 (not x7201))
+(or x7290 (not x7202))
+(or x7290 (not x7203))
+(or x7290 (not x7204))
+(or x7290 (not x7214))
+(or x7290 (not x7213))
+(or x7290 x7212)
+(or x7290 (not x7211))
+(or x7290 (not x7238))
+(or x7290 (not x7289))
+(or x7201 x7202 x7203 x7204 x7214 x7213 (not x7212) x7211 x7238 x7289 (not x7290))
+(or x7218 (not x7201))
+(or x7218 (not x7202))
+(or x7218 (not x7203))
+(or x7218 (not x7214))
+(or x7218 (not x7213))
+(or x7218 x7212)
+(or x7218 (not x7211))
+(or x7218 x133)
+(or x7218 x134)
+(or x7201 x7202 x7203 x7214 x7213 (not x7212) x7211 (not x133) (not x134) (not x7218))
+(or x7214 x7213 x7212 x7211 x133 (not x6912) (not x6911) (not x7286) (not x7291) (not x7292) x7202)
+(or (not x7202) (not x7214))
+(or (not x7202) (not x7213))
+(or (not x7202) (not x7212))
+(or (not x7202) (not x7211))
+(or (not x7202) (not x133))
+(or (not x7202) x6912)
+(or (not x7202) x6911)
+(or (not x7202) x7286)
+(or (not x7202) x7291)
+(or (not x7202) x7292)
+(or x7217 (not x7201))
+(or x7217 (not x7202))
+(or x7217 (not x7214))
+(or x7217 (not x7213))
+(or x7217 (not x7212))
+(or x7217 (not x7211))
+(or x7217 (not x133))
+(or x7217 x6912)
+(or x7217 x6911)
+(or x7201 x7202 x7214 x7213 x7212 x7211 x133 (not x6912) (not x6911) (not x7217))
+(or (not x7173) (not x7172) x7171)
+(or (not x7171) x7173)
+(or (not x7171) x7172)
+(or (not x7173) x7172 x7170)
+(or (not x7170) x7173)
+(or (not x7170) (not x7172))
+(or x7173 (not x7172) x7169)
+(or (not x7169) (not x7173))
+(or (not x7169) x7172)
+(or x7173 x7172 (not x132) x133 x7293)
+(or (not x7293) (not x7173))
+(or (not x7293) (not x7172))
+(or (not x7293) x132)
+(or (not x7293) (not x133))
+(or x7286 (not x7293))
+(or x7286 (not x7169))
+(or x7286 (not x7170))
+(or x7286 (not x7171))
+(or x7293 x7169 x7170 x7171 (not x7286))
+(or x7214 x7213 x7212 x7211 x133 (not x6912) (not x6911) x7203)
+(or (not x7203) (not x7214))
+(or (not x7203) (not x7213))
+(or (not x7203) (not x7212))
+(or (not x7203) (not x7211))
+(or (not x7203) (not x133))
+(or (not x7203) x6912)
+(or (not x7203) x6911)
+(or x7214 x7213 x7212 x7211 x133 (not x6912) (not x6911) (not x7286) (not x7294) x7201)
+(or (not x7201) (not x7214))
+(or (not x7201) (not x7213))
+(or (not x7201) (not x7212))
+(or (not x7201) (not x7211))
+(or (not x7201) (not x133))
+(or (not x7201) x6912)
+(or (not x7201) x6911)
+(or (not x7201) x7286)
+(or (not x7201) x7294)
+(or x7216 (not x7201))
+(or x7216 (not x7214))
+(or x7216 (not x7213))
+(or x7216 (not x7212))
+(or x7216 (not x7211))
+(or x7216 (not x133))
+(or x7216 x6912)
+(or x7216 x6911)
+(or x7216 (not x7238))
+(or x7216 (not x7242))
+(or x7216 (not x7243))
+(or x7201 x7214 x7213 x7212 x7211 x133 (not x6912) (not x6911) x7238 x7242 x7243 (not x7216))
+(or x7295 (not x7201))
+(or x7295 (not x7214))
+(or x7295 (not x7213))
+(or x7295 (not x7212))
+(or x7295 (not x7211))
+(or x7295 (not x133))
+(or x7295 x6912)
+(or x7295 x6911)
+(or x7295 (not x7238))
+(or x7295 (not x7242))
+(or x7295 (not x7243))
+(or x7295 x7244)
+(or x7295 x7296)
+(or x7201 x7214 x7213 x7212 x7211 x133 (not x6912) (not x6911) x7238 x7242 x7243 (not x7244) (not x7296) (not x7295))
+(or x7297 x7247)
+(or x7297 x7248)
+(or (not x7247) (not x7248) (not x7297))
+(or (not x7297) (not x7247) x7298)
+(or (not x7298) x7297)
+(or (not x7298) x7247)
+(or x7299 x7173)
+(or x7299 x7172)
+(or (not x7173) (not x7172) (not x7299))
+(or x7300 x7173)
+(or x7300 (not x7172))
+(or (not x7173) x7172 (not x7300))
+(or x7301 (not x7173))
+(or x7301 x7172)
+(or x7173 (not x7172) (not x7301))
+(or x7302 (not x7173))
+(or x7302 (not x7172))
+(or x7302 x132)
+(or x7302 (not x133))
+(or x7173 x7172 (not x132) x133 (not x7302))
+(or (not x7302) (not x7301) (not x7300) (not x7299) x7238)
+(or (not x7238) x7302)
+(or (not x7238) x7301)
+(or (not x7238) x7300)
+(or (not x7238) x7299)
+(or x7215 (not x7214))
+(or x7215 (not x7213))
+(or x7215 (not x7212))
+(or x7215 (not x7211))
+(or x7215 (not x133))
+(or x7215 x6912)
+(or x7215 x6911)
+(or x7215 (not x7238))
+(or x7215 (not x7254))
+(or x7214 x7213 x7212 x7211 x133 (not x6912) (not x6911) x7238 x7254 (not x7215))
+(or x7303 (not x7214))
+(or x7303 (not x7213))
+(or x7303 (not x7212))
+(or x7303 (not x7211))
+(or x7303 (not x133))
+(or x7303 x6912)
+(or x7303 x6911)
+(or x7303 (not x7238))
+(or x7303 (not x7254))
+(or x7303 x7251)
+(or x7303 x7246)
+(or x7303 (not x7298))
+(or x7214 x7213 x7212 x7211 x133 (not x6912) (not x6911) x7238 x7254 (not x7251) (not x7246) x7298 (not x7303))
+(or (not x7303) (not x7295) (not x7217) (not x7218) (not x7290) (not x7220) (not x7285) (not x7222) (not x7282) (not x7225) (not x7277) x7304)
+(or (not x7304) x7303)
+(or (not x7304) x7295)
+(or (not x7304) x7217)
+(or (not x7304) x7218)
+(or (not x7304) x7290)
+(or (not x7304) x7220)
+(or (not x7304) x7285)
+(or (not x7304) x7222)
+(or (not x7304) x7282)
+(or (not x7304) x7225)
+(or (not x7304) x7277)
+(or x7305 (not x7306))
+(or x7305 (not x7307))
+(or x7305 (not x7308))
+(or x7305 (not x7309))
+(or x7305 (not x7310))
+(or x7305 (not x7311))
+(or x7305 (not x7135))
+(or x7305 (not x7312))
+(or x7305 (not x7313))
+(or x7305 (not x7314))
+(or x7305 (not x7315))
+(or x7305 (not x7319))
+(or x7306 x7307 x7308 x7309 x7310 x7311 x7135 x7312 x7313 x7314 x7315 x7319 (not x7305))
+(or (not x7320) (not x7321) (not x7322) (not x7323) (not x7324) (not x7325) (not x7326) (not x7327) (not x7328) (not x7329) (not x7330) (not x7305) x7331)
+(or (not x7331) x7320)
+(or (not x7331) x7321)
+(or (not x7331) x7322)
+(or (not x7331) x7323)
+(or (not x7331) x7324)
+(or (not x7331) x7325)
+(or (not x7331) x7326)
+(or (not x7331) x7327)
+(or (not x7331) x7328)
+(or (not x7331) x7329)
+(or (not x7331) x7330)
+(or (not x7331) x7305)
+(or x7332 (not x7306))
+(or x7332 (not x7307))
+(or x7332 (not x7308))
+(or x7332 (not x7309))
+(or x7332 (not x7310))
+(or x7332 (not x7311))
+(or x7332 (not x7135))
+(or x7332 (not x7312))
+(or x7332 (not x7313))
+(or x7332 (not x7314))
+(or x7332 (not x7315))
+(or x7332 (not x7318))
+(or x7306 x7307 x7308 x7309 x7310 x7311 x7135 x7312 x7313 x7314 x7315 x7318 (not x7332))
+(or x7333 x7334)
+(or x7333 (not x7335))
+(or (not x7334) x7335 (not x7333))
+(or (not x7333) (not x7334) x7336)
+(or (not x7336) x7333)
+(or (not x7336) x7334)
+(or x7337 (not x7306))
+(or x7337 (not x7307))
+(or x7337 (not x7308))
+(or x7337 (not x7309))
+(or x7337 (not x7310))
+(or x7337 (not x7311))
+(or x7337 (not x7135))
+(or x7337 (not x7312))
+(or x7337 (not x7319))
+(or x7337 (not x7318))
+(or x7337 (not x7317))
+(or x7337 x7316)
+(or x7337 (not x134))
+(or x7337 (not x133))
+(or x7337 (not x7336))
+(or x7306 x7307 x7308 x7309 x7310 x7311 x7135 x7312 x7319 x7318 x7317 (not x7316) x134 x133 x7336 (not x7337))
+(or x7338 (not x7306))
+(or x7338 (not x7307))
+(or x7338 (not x7308))
+(or x7338 (not x7309))
+(or x7338 (not x7310))
+(or x7338 (not x7311))
+(or x7338 (not x7319))
+(or x7338 (not x7318))
+(or x7338 x7317)
+(or x7338 x7316)
+(or x7338 x7339)
+(or x7338 x7340)
+(or x7338 x7341)
+(or x7306 x7307 x7308 x7309 x7310 x7311 x7319 x7318 (not x7317) (not x7316) (not x7339) (not x7340) (not x7341) (not x7338))
+(or x7342 (not x7306))
+(or x7342 (not x7307))
+(or x7342 (not x7308))
+(or x7342 (not x7309))
+(or x7342 (not x7319))
+(or x7342 (not x7318))
+(or x7342 x7317)
+(or x7342 (not x7316))
+(or x7342 (not x7343))
+(or x7342 x7344)
+(or x7342 x7345)
+(or x7306 x7307 x7308 x7309 x7319 x7318 (not x7317) x7316 x7343 (not x7344) (not x7345) (not x7342))
+(or x7346 (not x7306))
+(or x7346 (not x7319))
+(or x7346 (not x7318))
+(or x7346 (not x7317))
+(or x7346 (not x7316))
+(or x7346 (not x133))
+(or x7346 x6912)
+(or x7346 x6911)
+(or x7346 (not x7343))
+(or x7346 (not x7242))
+(or x7346 (not x7243))
+(or x7346 x7347)
+(or x7306 x7319 x7318 x7317 x7316 x133 (not x6912) (not x6911) x7343 x7242 x7243 (not x7347) (not x7346))
+(or x7348 x7349)
+(or x7348 x7350)
+(or x7348 x7351)
+(or (not x7349) (not x7350) (not x7351) (not x7348))
+(or (not x7348) (not x7349) x7352)
+(or (not x7352) x7348)
+(or (not x7352) x7349)
+(or x7353 x7354)
+(or x7353 (not x7352))
+(or (not x7354) x7352 (not x7353))
+(or (not x7353) (not x7354) x7355)
+(or (not x7355) x7353)
+(or (not x7355) x7354)
+(or x7356 (not x7319))
+(or x7356 (not x7318))
+(or x7356 (not x7317))
+(or x7356 (not x7316))
+(or x7356 (not x133))
+(or x7356 x6912)
+(or x7356 x6911)
+(or x7356 (not x7343))
+(or x7356 (not x7254))
+(or x7356 (not x7355))
+(or x7319 x7318 x7317 x7316 x133 (not x6912) (not x6911) x7343 x7254 x7355 (not x7356))
+(or (not x7356) (not x7346) (not x7322) (not x7323) (not x7342) (not x7325) (not x7338) (not x7327) (not x7337) (not x7330) (not x7332) x7357)
+(or (not x7357) x7356)
+(or (not x7357) x7346)
+(or (not x7357) x7322)
+(or (not x7357) x7323)
+(or (not x7357) x7342)
+(or (not x7357) x7325)
+(or (not x7357) x7338)
+(or (not x7357) x7327)
+(or (not x7357) x7337)
+(or (not x7357) x7330)
+(or (not x7357) x7332)
+(or x7358 (not x7306))
+(or x7358 (not x7307))
+(or x7358 (not x7308))
+(or x7358 (not x7309))
+(or x7358 (not x7310))
+(or x7358 (not x7311))
+(or x7358 (not x7135))
+(or x7358 (not x7312))
+(or x7358 (not x7313))
+(or x7358 (not x7314))
+(or x7358 (not x7315))
+(or x7358 (not x7317))
+(or x7306 x7307 x7308 x7309 x7310 x7311 x7135 x7312 x7313 x7314 x7315 x7317 (not x7358))
+(or x7329 (not x7306))
+(or x7329 (not x7307))
+(or x7329 (not x7308))
+(or x7329 (not x7309))
+(or x7329 (not x7310))
+(or x7329 (not x7311))
+(or x7329 (not x7135))
+(or x7329 (not x7312))
+(or x7329 (not x7313))
+(or x7329 (not x7319))
+(or x7329 x7318)
+(or x7329 x7317)
+(or x7329 (not x7316))
+(or x7329 (not x134))
+(or x7329 (not x133))
+(or x7306 x7307 x7308 x7309 x7310 x7311 x7135 x7312 x7313 x7319 (not x7318) (not x7317) x7316 x134 x133 (not x7329))
+(or x7359 x7335)
+(or x7359 x7360)
+(or (not x7335) (not x7360) (not x7359))
+(or (not x7359) (not x7335) x7361)
+(or (not x7361) x7359)
+(or (not x7361) x7335)
+(or x7362 (not x7306))
+(or x7362 (not x7307))
+(or x7362 (not x7308))
+(or x7362 (not x7309))
+(or x7362 (not x7310))
+(or x7362 (not x7311))
+(or x7362 (not x7135))
+(or x7362 (not x7312))
+(or x7362 (not x7319))
+(or x7362 (not x7318))
+(or x7362 (not x7317))
+(or x7362 x7316)
+(or x7362 (not x134))
+(or x7362 (not x133))
+(or x7362 x7334)
+(or x7362 (not x7361))
+(or x7306 x7307 x7308 x7309 x7310 x7311 x7135 x7312 x7319 x7318 x7317 (not x7316) x134 x133 (not x7334) x7361 (not x7362))
+(or x7363 x7341)
+(or x7363 (not x7364))
+(or (not x7341) x7364 (not x7363))
+(or (not x7363) (not x7341) x7365)
+(or (not x7365) x7363)
+(or (not x7365) x7341)
+(or x7366 x7339)
+(or x7366 x7340)
+(or x7366 (not x7365))
+(or (not x7339) (not x7340) x7365 (not x7366))
+(or (not x7366) (not x7339) x7367)
+(or (not x7367) x7366)
+(or (not x7367) x7339)
+(or x7368 (not x7306))
+(or x7368 (not x7307))
+(or x7368 (not x7308))
+(or x7368 (not x7309))
+(or x7368 (not x7310))
+(or x7368 (not x7311))
+(or x7368 (not x7319))
+(or x7368 (not x7318))
+(or x7368 x7317)
+(or x7368 x7316)
+(or x7368 (not x7367))
+(or x7306 x7307 x7308 x7309 x7310 x7311 x7319 x7318 (not x7317) (not x7316) x7367 (not x7368))
+(or x7369 x7345)
+(or x7369 (not x7370))
+(or (not x7345) x7370 (not x7369))
+(or (not x7369) (not x7345) x7371)
+(or (not x7371) x7369)
+(or (not x7371) x7345)
+(or x7372 (not x7306))
+(or x7372 (not x7307))
+(or x7372 (not x7308))
+(or x7372 (not x7309))
+(or x7372 (not x7319))
+(or x7372 (not x7318))
+(or x7372 x7317)
+(or x7372 (not x7316))
+(or x7372 (not x7343))
+(or x7372 x7344)
+(or x7372 (not x7371))
+(or x7306 x7307 x7308 x7309 x7319 x7318 (not x7317) x7316 x7343 (not x7344) x7371 (not x7372))
+(or x7373 (not x7306))
+(or x7373 (not x7319))
+(or x7373 (not x7318))
+(or x7373 (not x7317))
+(or x7373 (not x7316))
+(or x7373 (not x133))
+(or x7373 x6912)
+(or x7373 x6911)
+(or x7373 (not x7343))
+(or x7373 (not x7242))
+(or x7373 (not x7243))
+(or x7373 (not x7347))
+(or x7306 x7319 x7318 x7317 x7316 x133 (not x6912) (not x6911) x7343 x7242 x7243 x7347 (not x7373))
+(or x7374 x7354)
+(or x7374 x7349)
+(or x7374 x7350)
+(or x7374 (not x7351))
+(or (not x7354) (not x7349) (not x7350) x7351 (not x7374))
+(or (not x7374) (not x7354) x7375)
+(or (not x7375) x7374)
+(or (not x7375) x7354)
+(or x7376 (not x7319))
+(or x7376 (not x7318))
+(or x7376 (not x7317))
+(or x7376 (not x7316))
+(or x7376 (not x133))
+(or x7376 x6912)
+(or x7376 x6911)
+(or x7376 (not x7343))
+(or x7376 (not x7254))
+(or x7376 (not x7375))
+(or x7319 x7318 x7317 x7316 x133 (not x6912) (not x6911) x7343 x7254 x7375 (not x7376))
+(or (not x7376) (not x7373) (not x7323) (not x7372) (not x7368) (not x7327) (not x7362) (not x7329) (not x7330) (not x7358) x7377)
+(or (not x7377) x7376)
+(or (not x7377) x7373)
+(or (not x7377) x7323)
+(or (not x7377) x7372)
+(or (not x7377) x7368)
+(or (not x7377) x7327)
+(or (not x7377) x7362)
+(or (not x7377) x7329)
+(or (not x7377) x7330)
+(or (not x7377) x7358)
+(or x7378 (not x7115))
+(or x7378 (not x7117))
+(or x7378 (not x7116))
+(or x7115 x7117 x7116 (not x7378))
+(or (not x7378) (not x133) x7315)
+(or (not x7315) x7378)
+(or (not x7315) x133)
+(or x7379 (not x7306))
+(or x7379 (not x7307))
+(or x7379 (not x7308))
+(or x7379 (not x7309))
+(or x7379 (not x7310))
+(or x7379 (not x7311))
+(or x7379 (not x7135))
+(or x7379 (not x7312))
+(or x7379 (not x7313))
+(or x7379 (not x7314))
+(or x7379 (not x7315))
+(or x7379 (not x7316))
+(or x7306 x7307 x7308 x7309 x7310 x7311 x7135 x7312 x7313 x7314 x7315 x7316 (not x7379))
+(or x7100 (not x7319))
+(or x7100 x7318)
+(or x7100 (not x7317))
+(or x7100 (not x7316))
+(or x7319 (not x7318) x7317 x7316 (not x7100))
+(or (not x7100) (not x7101) (not x7065) x7380)
+(or (not x7380) x7100)
+(or (not x7380) x7101)
+(or (not x7380) x7065)
+(or x7319 (not x7318) (not x7317) x7316 x134 x133 x7314)
+(or (not x7314) (not x7319))
+(or (not x7314) x7318)
+(or (not x7314) x7317)
+(or (not x7314) (not x7316))
+(or (not x7314) (not x134))
+(or (not x7314) (not x133))
+(or x7319 x7318 x7317 (not x7316) x134 x133 x7313)
+(or (not x7313) (not x7319))
+(or (not x7313) (not x7318))
+(or (not x7313) (not x7317))
+(or (not x7313) x7316)
+(or (not x7313) (not x134))
+(or (not x7313) (not x133))
+(or x7330 (not x7306))
+(or x7330 (not x7307))
+(or x7330 (not x7308))
+(or x7330 (not x7309))
+(or x7330 (not x7310))
+(or x7330 (not x7311))
+(or x7330 (not x7135))
+(or x7330 (not x7312))
+(or x7330 (not x7313))
+(or x7330 (not x7314))
+(or x7330 (not x7380))
+(or x7330 x133)
+(or x7306 x7307 x7308 x7309 x7310 x7311 x7135 x7312 x7313 x7314 x7380 (not x133) (not x7330))
+(or x7381 x7360)
+(or x7381 x7382)
+(or (not x7360) (not x7382) (not x7381))
+(or (not x7381) (not x7360) x7383)
+(or (not x7383) x7381)
+(or (not x7383) x7360)
+(or x7319 x7318 x7317 (not x7316) x134 (not x133) x7312)
+(or (not x7312) (not x7319))
+(or (not x7312) (not x7318))
+(or (not x7312) (not x7317))
+(or (not x7312) x7316)
+(or (not x7312) (not x134))
+(or (not x7312) x133)
+(or x7328 (not x7306))
+(or x7328 (not x7307))
+(or x7328 (not x7308))
+(or x7328 (not x7309))
+(or x7328 (not x7310))
+(or x7328 (not x7311))
+(or x7328 (not x7135))
+(or x7328 (not x7312))
+(or x7328 (not x7319))
+(or x7328 (not x7318))
+(or x7328 (not x7317))
+(or x7328 x7316)
+(or x7328 (not x134))
+(or x7328 (not x133))
+(or x7306 x7307 x7308 x7309 x7310 x7311 x7135 x7312 x7319 x7318 x7317 (not x7316) x134 x133 (not x7328))
+(or x7384 (not x7306))
+(or x7384 (not x7307))
+(or x7384 (not x7308))
+(or x7384 (not x7309))
+(or x7384 (not x7310))
+(or x7384 (not x7311))
+(or x7384 (not x7135))
+(or x7384 (not x7312))
+(or x7384 (not x7319))
+(or x7384 (not x7318))
+(or x7384 (not x7317))
+(or x7384 x7316)
+(or x7384 (not x134))
+(or x7384 (not x133))
+(or x7384 x7334)
+(or x7384 x7335)
+(or x7384 (not x7383))
+(or x7306 x7307 x7308 x7309 x7310 x7311 x7135 x7312 x7319 x7318 x7317 (not x7316) x134 x133 (not x7334) (not x7335) x7383 (not x7384))
+(or x7327 (not x7306))
+(or x7327 (not x7307))
+(or x7327 (not x7308))
+(or x7327 (not x7309))
+(or x7327 (not x7310))
+(or x7327 (not x7311))
+(or x7327 (not x7135))
+(or x7327 (not x7319))
+(or x7327 (not x7318))
+(or x7327 (not x7317))
+(or x7327 x7316)
+(or x7327 (not x134))
+(or x7327 x133)
+(or x7306 x7307 x7308 x7309 x7310 x7311 x7135 x7319 x7318 x7317 (not x7316) x134 (not x133) (not x7327))
+(or x7385 x7340)
+(or x7385 (not x7341))
+(or (not x7340) x7341 (not x7385))
+(or (not x7385) (not x7340) x7386)
+(or (not x7386) x7385)
+(or (not x7386) x7340)
+(or x7326 (not x7306))
+(or x7326 (not x7307))
+(or x7326 (not x7308))
+(or x7326 (not x7309))
+(or x7326 (not x7310))
+(or x7326 (not x7311))
+(or x7326 (not x7319))
+(or x7326 (not x7318))
+(or x7326 x7317)
+(or x7326 x7316)
+(or x7306 x7307 x7308 x7309 x7310 x7311 x7319 x7318 (not x7317) (not x7316) (not x7326))
+(or x7387 (not x7306))
+(or x7387 (not x7307))
+(or x7387 (not x7308))
+(or x7387 (not x7309))
+(or x7387 (not x7310))
+(or x7387 (not x7311))
+(or x7387 (not x7319))
+(or x7387 (not x7318))
+(or x7387 x7317)
+(or x7387 x7316)
+(or x7387 x7339)
+(or x7387 (not x7386))
+(or x7306 x7307 x7308 x7309 x7310 x7311 x7319 x7318 (not x7317) (not x7316) (not x7339) x7386 (not x7387))
+(or x7319 x7318 (not x7317) x7316 (not x7388) x7310)
+(or (not x7310) (not x7319))
+(or (not x7310) (not x7318))
+(or (not x7310) x7317)
+(or (not x7310) (not x7316))
+(or (not x7310) x7388)
+(or x7325 (not x7306))
+(or x7325 (not x7307))
+(or x7325 (not x7308))
+(or x7325 (not x7309))
+(or x7325 (not x7310))
+(or x7325 (not x7319))
+(or x7325 (not x7318))
+(or x7325 x7317)
+(or x7325 (not x7316))
+(or x7306 x7307 x7308 x7309 x7310 x7319 x7318 (not x7317) x7316 (not x7325))
+(or x7389 x7344)
+(or x7389 x7345)
+(or x7389 x7370)
+(or x7389 x7390)
+(or (not x7344) (not x7345) (not x7370) (not x7390) (not x7389))
+(or (not x7389) (not x7344) x7391)
+(or (not x7391) x7389)
+(or (not x7391) x7344)
+(or x7319 x7318 (not x7317) x7316 (not x133) (not x134) x7309)
+(or (not x7309) (not x7319))
+(or (not x7309) (not x7318))
+(or (not x7309) x7317)
+(or (not x7309) (not x7316))
+(or (not x7309) x133)
+(or (not x7309) x134)
+(or x7324 (not x7306))
+(or x7324 (not x7307))
+(or x7324 (not x7308))
+(or x7324 (not x7309))
+(or x7324 (not x7319))
+(or x7324 (not x7318))
+(or x7324 x7317)
+(or x7324 (not x7316))
+(or x7324 (not x7343))
+(or x7306 x7307 x7308 x7309 x7319 x7318 (not x7317) x7316 x7343 (not x7324))
+(or x7392 (not x7306))
+(or x7392 (not x7307))
+(or x7392 (not x7308))
+(or x7392 (not x7309))
+(or x7392 (not x7319))
+(or x7392 (not x7318))
+(or x7392 x7317)
+(or x7392 (not x7316))
+(or x7392 (not x7343))
+(or x7392 (not x7391))
+(or x7306 x7307 x7308 x7309 x7319 x7318 (not x7317) x7316 x7343 x7391 (not x7392))
+(or x7323 (not x7306))
+(or x7323 (not x7307))
+(or x7323 (not x7308))
+(or x7323 (not x7319))
+(or x7323 (not x7318))
+(or x7323 x7317)
+(or x7323 (not x7316))
+(or x7323 x133)
+(or x7323 x134)
+(or x7306 x7307 x7308 x7319 x7318 (not x7317) x7316 (not x133) (not x134) (not x7323))
+(or x7319 x7318 x7317 x7316 x133 (not x6912) (not x6911) (not x7388) (not x7291) (not x7292) x7307)
+(or (not x7307) (not x7319))
+(or (not x7307) (not x7318))
+(or (not x7307) (not x7317))
+(or (not x7307) (not x7316))
+(or (not x7307) (not x133))
+(or (not x7307) x6912)
+(or (not x7307) x6911)
+(or (not x7307) x7388)
+(or (not x7307) x7291)
+(or (not x7307) x7292)
+(or x7322 (not x7306))
+(or x7322 (not x7307))
+(or x7322 (not x7319))
+(or x7322 (not x7318))
+(or x7322 (not x7317))
+(or x7322 (not x7316))
+(or x7322 (not x133))
+(or x7322 x6912)
+(or x7322 x6911)
+(or x7306 x7307 x7319 x7318 x7317 x7316 x133 (not x6912) (not x6911) (not x7322))
+(or (not x7082) (not x7124) x7243)
+(or (not x7243) x7082)
+(or (not x7243) x7124)
+(or (not x7019) (not x7020) (not x7129) x7242)
+(or (not x7242) x7019)
+(or (not x7242) x7020)
+(or (not x7242) x7129)
+(or x7294 (not x7242))
+(or x7294 (not x7243))
+(or x7242 x7243 (not x7294))
+(or (not x7186) (not x7185) x7184)
+(or (not x7184) x7186)
+(or (not x7184) x7185)
+(or (not x7186) x7185 x7183)
+(or (not x7183) x7186)
+(or (not x7183) (not x7185))
+(or x7186 (not x7185) x7182)
+(or (not x7182) (not x7186))
+(or (not x7182) x7185)
+(or (not x132) x133 x6896)
+(or (not x6896) x132)
+(or (not x6896) (not x133))
+(or x7186 x7185 (not x132) x133 x7393)
+(or (not x7393) (not x7186))
+(or (not x7393) (not x7185))
+(or (not x7393) x132)
+(or (not x7393) (not x133))
+(or x7388 (not x7393))
+(or x7388 (not x7182))
+(or x7388 (not x7183))
+(or x7388 (not x7184))
+(or x7393 x7182 x7183 x7184 (not x7388))
+(or x7319 x7318 x7317 x7316 x133 (not x6912) (not x6911) x7308)
+(or (not x7308) (not x7319))
+(or (not x7308) (not x7318))
+(or (not x7308) (not x7317))
+(or (not x7308) (not x7316))
+(or (not x7308) (not x133))
+(or (not x7308) x6912)
+(or (not x7308) x6911)
+(or x7319 x7318 x7317 x7316 x133 (not x6912) (not x6911) (not x7388) (not x7294) x7306)
+(or (not x7306) (not x7319))
+(or (not x7306) (not x7318))
+(or (not x7306) (not x7317))
+(or (not x7306) (not x7316))
+(or (not x7306) (not x133))
+(or (not x7306) x6912)
+(or (not x7306) x6911)
+(or (not x7306) x7388)
+(or (not x7306) x7294)
+(or x7321 (not x7306))
+(or x7321 (not x7319))
+(or x7321 (not x7318))
+(or x7321 (not x7317))
+(or x7321 (not x7316))
+(or x7321 (not x133))
+(or x7321 x6912)
+(or x7321 x6911)
+(or x7321 (not x7343))
+(or x7321 (not x7242))
+(or x7321 (not x7243))
+(or x7306 x7319 x7318 x7317 x7316 x133 (not x6912) (not x6911) x7343 x7242 x7243 (not x7321))
+(or x7394 (not x7306))
+(or x7394 (not x7319))
+(or x7394 (not x7318))
+(or x7394 (not x7317))
+(or x7394 (not x7316))
+(or x7394 (not x133))
+(or x7394 x6912)
+(or x7394 x6911)
+(or x7394 (not x7343))
+(or x7394 (not x7242))
+(or x7394 (not x7243))
+(or x7394 x7347)
+(or x7394 x7395)
+(or x7306 x7319 x7318 x7317 x7316 x133 (not x6912) (not x6911) x7343 x7242 x7243 (not x7347) (not x7395) (not x7394))
+(or x7396 x7350)
+(or x7396 x7351)
+(or (not x7350) (not x7351) (not x7396))
+(or (not x7396) (not x7350) x7397)
+(or (not x7397) x7396)
+(or (not x7397) x7350)
+(or x7032 (not x7018))
+(or x7032 (not x6962))
+(or x7018 x6962 (not x7032))
+(or x7020 (not x7061))
+(or x7020 x7042)
+(or x7020 (not x7043))
+(or x7020 (not x7044))
+(or x7020 (not x7045))
+(or x7020 (not x7047))
+(or x7020 (not x6994))
+(or x7020 (not x7048))
+(or x7020 (not x7049))
+(or x7020 (not x6955))
+(or x7020 (not x7050))
+(or x7020 (not x7018))
+(or x7020 (not x6962))
+(or x7061 (not x7042) x7043 x7044 x7045 x7047 x6994 x7048 x7049 x6955 x7050 x7018 x6962 (not x7020))
+(or x7145 (not x7042))
+(or x7145 (not x7043))
+(or x7042 x7043 (not x7145))
+(or x7143 (not x7042))
+(or x7143 (not x7043))
+(or x7143 (not x7044))
+(or x7143 (not x7045))
+(or x7042 x7043 x7044 x7045 (not x7143))
+(or x7155 (not x7048))
+(or x7155 (not x7049))
+(or x7048 x7049 (not x7155))
+(or x7151 (not x7018))
+(or x7151 (not x7048))
+(or x7151 (not x7049))
+(or x7018 x7048 x7049 (not x7151))
+(or x7156 (not x6962))
+(or x7156 (not x7018))
+(or x7156 (not x7048))
+(or x7156 (not x7049))
+(or x6962 x7018 x7048 x7049 (not x7156))
+(or x7150 (not x7047))
+(or x7150 (not x6962))
+(or x7150 (not x7018))
+(or x7150 (not x7048))
+(or x7150 (not x7049))
+(or x7047 x6962 x7018 x7048 x7049 (not x7150))
+(or x7019 (not x7047))
+(or x7019 (not x6962))
+(or x7019 (not x7018))
+(or x7019 (not x7048))
+(or x7019 (not x7049))
+(or x7019 (not x7061))
+(or x7019 (not x6955))
+(or x7019 x7050)
+(or x7019 (not x6994))
+(or x7019 (not x7042))
+(or x7019 (not x7043))
+(or x7019 (not x7044))
+(or x7019 (not x7045))
+(or x7047 x6962 x7018 x7048 x7049 x7061 x6955 (not x7050) x6994 x7042 x7043 x7044 x7045 (not x7019))
+(or (not x7019) (not x7020) x7398)
+(or (not x7398) x7019)
+(or (not x7398) x7020)
+(or x7292 (not x7398))
+(or x7292 x7124)
+(or x7398 (not x7124) (not x7292))
+(or x7018 x6962 x7027)
+(or (not x7027) (not x7018))
+(or (not x7027) (not x6962))
+(or x7061 (not x7042) x7043 x7044 x7045 x7047 x6994 x7048 x7049 x6955 x7050 x7018 x6962 x7011)
+(or (not x7011) (not x7061))
+(or (not x7011) x7042)
+(or (not x7011) (not x7043))
+(or (not x7011) (not x7044))
+(or (not x7011) (not x7045))
+(or (not x7011) (not x7047))
+(or (not x7011) (not x6994))
+(or (not x7011) (not x7048))
+(or (not x7011) (not x7049))
+(or (not x7011) (not x6955))
+(or (not x7011) (not x7050))
+(or (not x7011) (not x7018))
+(or (not x7011) (not x6962))
+(or x7042 x7043 x7087)
+(or (not x7087) (not x7042))
+(or (not x7087) (not x7043))
+(or x7042 x7043 x7044 x7045 x7084)
+(or (not x7084) (not x7042))
+(or (not x7084) (not x7043))
+(or (not x7084) (not x7044))
+(or (not x7084) (not x7045))
+(or x7048 x7049 x7098)
+(or (not x7098) (not x7048))
+(or (not x7098) (not x7049))
+(or x7018 x7048 x7049 x7092)
+(or (not x7092) (not x7018))
+(or (not x7092) (not x7048))
+(or (not x7092) (not x7049))
+(or x6962 x7018 x7048 x7049 x7099)
+(or (not x7099) (not x6962))
+(or (not x7099) (not x7018))
+(or (not x7099) (not x7048))
+(or (not x7099) (not x7049))
+(or x7047 x6962 x7018 x7048 x7049 x7091)
+(or (not x7091) (not x7047))
+(or (not x7091) (not x6962))
+(or (not x7091) (not x7018))
+(or (not x7091) (not x7048))
+(or (not x7091) (not x7049))
+(or x7047 x6962 x7018 x7048 x7049 x7061 x6955 (not x7050) x6994 x7042 x7043 x7044 x7045 x7010)
+(or (not x7010) (not x7047))
+(or (not x7010) (not x6962))
+(or (not x7010) (not x7018))
+(or (not x7010) (not x7048))
+(or (not x7010) (not x7049))
+(or (not x7010) (not x7061))
+(or (not x7010) (not x6955))
+(or (not x7010) x7050)
+(or (not x7010) (not x6994))
+(or (not x7010) (not x7042))
+(or (not x7010) (not x7043))
+(or (not x7010) (not x7044))
+(or (not x7010) (not x7045))
+(or x7082 (not x7010))
+(or x7082 (not x7011))
+(or x7010 x7011 (not x7082))
+(or x7291 (not x7010))
+(or x7291 (not x7011))
+(or x7291 x7129)
+(or x7010 x7011 (not x7129) (not x7291))
+(or (not x7291) (not x7292) x7254)
+(or (not x7254) x7291)
+(or (not x7254) x7292)
+(or x7399 x7186)
+(or x7399 x7185)
+(or (not x7186) (not x7185) (not x7399))
+(or x7400 x7186)
+(or x7400 (not x7185))
+(or (not x7186) x7185 (not x7400))
+(or x7401 (not x7186))
+(or x7401 x7185)
+(or x7186 (not x7185) (not x7401))
+(or x6936 x132)
+(or x6936 (not x133))
+(or (not x132) x133 (not x6936))
+(or x7402 (not x7186))
+(or x7402 (not x7185))
+(or x7402 x132)
+(or x7402 (not x133))
+(or x7186 x7185 (not x132) x133 (not x7402))
+(or (not x7402) (not x7401) (not x7400) (not x7399) x7343)
+(or (not x7343) x7402)
+(or (not x7343) x7401)
+(or (not x7343) x7400)
+(or (not x7343) x7399)
+(or x7320 (not x7319))
+(or x7320 (not x7318))
+(or x7320 (not x7317))
+(or x7320 (not x7316))
+(or x7320 (not x133))
+(or x7320 x6912)
+(or x7320 x6911)
+(or x7320 (not x7343))
+(or x7320 (not x7254))
+(or x7319 x7318 x7317 x7316 x133 (not x6912) (not x6911) x7343 x7254 (not x7320))
+(or x7403 (not x7319))
+(or x7403 (not x7318))
+(or x7403 (not x7317))
+(or x7403 (not x7316))
+(or x7403 (not x133))
+(or x7403 x6912)
+(or x7403 x6911)
+(or x7403 (not x7343))
+(or x7403 (not x7254))
+(or x7403 x7354)
+(or x7403 x7349)
+(or x7403 (not x7397))
+(or x7319 x7318 x7317 x7316 x133 (not x6912) (not x6911) x7343 x7254 (not x7354) (not x7349) x7397 (not x7403))
+(or (not x7403) (not x7394) (not x7322) (not x7323) (not x7392) (not x7325) (not x7387) (not x7327) (not x7384) (not x7330) (not x7379) x7404)
+(or (not x7404) x7403)
+(or (not x7404) x7394)
+(or (not x7404) x7322)
+(or (not x7404) x7323)
+(or (not x7404) x7392)
+(or (not x7404) x7325)
+(or (not x7404) x7387)
+(or (not x7404) x7327)
+(or (not x7404) x7384)
+(or (not x7404) x7330)
+(or (not x7404) x7379)
+(or x7405 (not x7406))
+(or x7405 (not x6976))
+(or x7405 (not x7407))
+(or x7405 (not x6982))
+(or x7406 x6976 x7407 x6982 (not x7405))
+(or x7408 (not x7406))
+(or x7408 (not x6976))
+(or x7408 x6982)
+(or x7408 (not x6981))
+(or x7408 (not x6980))
+(or x7408 x6979)
+(or x7408 x6955)
+(or x7408 x7409)
+(or x7406 x6976 (not x6982) x6981 x6980 (not x6979) (not x6955) (not x7409) (not x7408))
+(or x7410 (not x6982))
+(or x7410 x6981)
+(or x7410 x6980)
+(or x7410 x6979)
+(or x7410 x6912)
+(or x7410 x6911)
+(or x7410 x7411)
+(or x7410 x7412)
+(or x6982 (not x6981) (not x6980) (not x6979) (not x6912) (not x6911) (not x7411) (not x7412) (not x7410))
+(or (not x7410) (not x7408) (not x7405) x7413)
+(or (not x7413) x7410)
+(or (not x7413) x7408)
+(or (not x7413) x7405)
+(or x7414 (not x7406))
+(or x7414 (not x6976))
+(or x7414 (not x7407))
+(or x7414 (not x6981))
+(or x7406 x6976 x7407 x6981 (not x7414))
+(or (not x7415) (not x7416) (not x7417) (not x7414) x7418)
+(or (not x7418) x7415)
+(or (not x7418) x7416)
+(or (not x7418) x7417)
+(or (not x7418) x7414)
+(or x7419 (not x7406))
+(or x7419 (not x6976))
+(or x7419 (not x7407))
+(or x7419 (not x6980))
+(or x7406 x6976 x7407 x6980 (not x7419))
+(or x6992 x6982)
+(or x6992 (not x6981))
+(or x6992 (not x6980))
+(or x6992 (not x6979))
+(or (not x6982) x6981 x6980 x6979 (not x6992))
+(or x7416 (not x7406))
+(or x7416 x6982)
+(or x7416 (not x6981))
+(or x7416 (not x6980))
+(or x7416 (not x6979))
+(or x7406 (not x6982) x6981 x6980 x6979 (not x7416))
+(or (not x7415) (not x7416) (not x7417) (not x7419) x7420)
+(or (not x7420) x7415)
+(or (not x7420) x7416)
+(or (not x7420) x7417)
+(or (not x7420) x7419)
+(or (not x6982) x6981 x6980 (not x6979) (not x6955) x7407)
+(or (not x7407) x6982)
+(or (not x7407) (not x6981))
+(or (not x7407) (not x6980))
+(or (not x7407) x6979)
+(or (not x7407) x6955)
+(or x7421 (not x7406))
+(or x7421 (not x6976))
+(or x7421 (not x7407))
+(or x7421 (not x6979))
+(or x7406 x6976 x7407 x6979 (not x7421))
+(or x6982 (not x6981) (not x6980) (not x6979) (not x6912) (not x6911) (not x7411) x7406)
+(or (not x7406) (not x6982))
+(or (not x7406) x6981)
+(or (not x7406) x6980)
+(or (not x7406) x6979)
+(or (not x7406) x6912)
+(or (not x7406) x6911)
+(or (not x7406) x7411)
+(or x7417 (not x7406))
+(or x7417 (not x6976))
+(or x7417 x6982)
+(or x7417 (not x6981))
+(or x7417 (not x6980))
+(or x7417 x6979)
+(or x7417 x6955)
+(or x7417 (not x7409))
+(or x7406 x6976 (not x6982) x6981 x6980 (not x6979) (not x6955) x7409 (not x7417))
+(or x7415 (not x6982))
+(or x7415 x6981)
+(or x7415 x6980)
+(or x7415 x6979)
+(or x7415 x6912)
+(or x7415 x6911)
+(or x7415 x7411)
+(or x7415 (not x7412))
+(or x6982 (not x6981) (not x6980) (not x6979) (not x6912) (not x6911) (not x7411) x7412 (not x7415))
+(or (not x7415) (not x7417) (not x7421) x7422)
+(or (not x7422) x7415)
+(or (not x7422) x7417)
+(or (not x7422) x7421)
+(or (not x7411) (not x7423) (not x6955) x7424)
+(or (not x7424) x7411)
+(or (not x7424) x7423)
+(or (not x7424) x6955)
+(or x7425 x7411)
+(or x7425 (not x7424))
+(or x7425 (not x7411))
+(or (not x7411) x7424 x7411 (not x7425))
+(or x7426 x7411)
+(or x7426 x7411)
+(or x7426 x7423)
+(or x7426 x6955)
+(or x7426 x7427)
+(or (not x7411) (not x7411) (not x7423) (not x6955) (not x7427) (not x7426))
+(or x7428 x7429)
+(or x7428 x7430)
+(or (not x7429) (not x7430) (not x7428))
+(or (not x7428) (not x7429) x7431)
+(or (not x7431) x7428)
+(or (not x7431) x7429)
+(or x7432 (not x7411))
+(or x7432 x7433)
+(or x7432 (not x7431))
+(or x7411 (not x7433) x7431 (not x7432))
+(or (not x7432) (not x7426) (not x7425) x7434)
+(or (not x7434) x7432)
+(or (not x7434) x7426)
+(or (not x7434) x7425)
+(or x7063 (not x7115))
+(or x7063 (not x7116))
+(or x7063 (not x7117))
+(or x7063 (not x7118))
+(or x7063 (not x7119))
+(or x7063 (not x7120))
+(or x7115 x7116 x7117 x7118 x7119 x7120 (not x7063))
+(or x7067 (not x7214))
+(or x7067 x7213)
+(or x7067 x7212)
+(or x7067 (not x7211))
+(or x7214 (not x7213) (not x7212) x7211 (not x7067))
+(or x7103 (not x7214))
+(or x7103 x7213)
+(or x7103 (not x7212))
+(or x7103 x7211)
+(or x7214 (not x7213) x7212 (not x7211) (not x7103))
+(or x7066 (not x7214))
+(or x7066 (not x7213))
+(or x7066 (not x7212))
+(or x7066 x7211)
+(or x7214 x7213 x7212 (not x7211) (not x7066))
+(or x7435 (not x7214))
+(or x7435 (not x7213))
+(or x7435 x7212)
+(or x7435 x7211)
+(or x7214 x7213 (not x7212) (not x7211) (not x7435))
+(or x7065 (not x7319))
+(or x7065 x7318)
+(or x7065 x7317)
+(or x7065 (not x7316))
+(or x7319 (not x7318) (not x7317) x7316 (not x7065))
+(or x7101 (not x7319))
+(or x7101 x7318)
+(or x7101 (not x7317))
+(or x7101 x7316)
+(or x7319 (not x7318) x7317 (not x7316) (not x7101))
+(or x7064 (not x7319))
+(or x7064 (not x7318))
+(or x7064 (not x7317))
+(or x7064 x7316)
+(or x7319 x7318 x7317 (not x7316) (not x7064))
+(or x7436 (not x7319))
+(or x7436 (not x7318))
+(or x7436 x7317)
+(or x7436 x7316)
+(or x7319 x7318 (not x7317) (not x7316) (not x7436))
+(or (not x7436) (not x7064) (not x7101) (not x7065) (not x7435) (not x7066) (not x7103) (not x7067) x7437)
+(or (not x7437) x7436)
+(or (not x7437) x7064)
+(or (not x7437) x7101)
+(or (not x7437) x7065)
+(or (not x7437) x7435)
+(or (not x7437) x7066)
+(or (not x7437) x7103)
+(or (not x7437) x7067)
+(or (not x7436) (not x7064) (not x7101) (not x7065) (not x7435) (not x7066) (not x7103) (not x7067) x7006 x7007 x7195)
+(or (not x7195) x7436)
+(or (not x7195) x7064)
+(or (not x7195) x7101)
+(or (not x7195) x7065)
+(or (not x7195) x7435)
+(or (not x7195) x7066)
+(or (not x7195) x7103)
+(or (not x7195) x7067)
+(or (not x7195) (not x7006))
+(or (not x7195) (not x7007))
+(or x7053 (not x7195))
+(or x7053 (not x7136))
+(or x7053 (not x7116))
+(or x7053 (not x7138))
+(or x7053 (not x7119))
+(or x7195 x7136 x7116 x7138 x7119 (not x7053))
+(or x7438 (not x7195))
+(or x7438 (not x7136))
+(or x7438 (not x7116))
+(or x7438 (not x7138))
+(or x7438 (not x7119))
+(or x7438 (not x7115))
+(or x7438 (not x7116))
+(or x7438 (not x7117))
+(or x7438 (not x7118))
+(or x7438 (not x7119))
+(or x7438 (not x7120))
+(or x7438 x7018)
+(or x7195 x7136 x7116 x7138 x7119 x7115 x7116 x7117 x7118 x7119 x7120 (not x7018) (not x7438))
+(or (not x7438) (not x7194) x7439)
+(or (not x7439) x7438)
+(or (not x7439) x7194)
+(or (not x7440) x6982)
+(or (not x7440) (not x6981))
+(or (not x7440) (not x6980))
+(or (not x7440) x6979)
+(or (not x6982) x6981 x6980 x6979 x6976)
+(or (not x6976) x6982)
+(or (not x6976) (not x6981))
+(or (not x6976) (not x6980))
+(or (not x6976) (not x6979))
+(or (not x7441) (not x6982))
+(or (not x7441) x6981)
+(or (not x7441) x6980)
+(or (not x7441) x6979)
+(or x7442 (not x7441))
+(or x7442 (not x6976))
+(or x7441 x6976 (not x7442))
+(or x7214 (not x7213) (not x7212) x7211 x7119)
+(or (not x7119) (not x7214))
+(or (not x7119) x7213)
+(or (not x7119) x7212)
+(or (not x7119) (not x7211))
+(or x7214 (not x7213) x7212 (not x7211) x7120)
+(or (not x7120) (not x7214))
+(or (not x7120) x7213)
+(or (not x7120) (not x7212))
+(or (not x7120) x7211)
+(or x7214 (not x7213) x7212 x7211 x7118)
+(or (not x7118) (not x7214))
+(or (not x7118) x7213)
+(or (not x7118) (not x7212))
+(or (not x7118) (not x7211))
+(or x7214 x7213 (not x7212) (not x7211) x7137)
+(or (not x7137) (not x7214))
+(or (not x7137) (not x7213))
+(or (not x7137) x7212)
+(or (not x7137) x7211)
+(or x7214 x7213 (not x7212) x7211 x7206)
+(or (not x7206) (not x7214))
+(or (not x7206) (not x7213))
+(or (not x7206) x7212)
+(or (not x7206) (not x7211))
+(or x7214 x7213 x7212 (not x7211) x7138)
+(or (not x7138) (not x7214))
+(or (not x7138) (not x7213))
+(or (not x7138) (not x7212))
+(or (not x7138) x7211)
+(or (not x7443) (not x7214))
+(or (not x7443) (not x7213))
+(or (not x7443) (not x7212))
+(or (not x7443) (not x7211))
+(or x7444 (not x7443))
+(or x7444 (not x7138))
+(or x7444 (not x7206))
+(or x7444 (not x7137))
+(or x7444 (not x7118))
+(or x7444 (not x7120))
+(or x7443 x7138 x7206 x7137 x7118 x7120 (not x7444))
+(or x7319 (not x7318) (not x7317) x7316 x7116)
+(or (not x7116) (not x7319))
+(or (not x7116) x7318)
+(or (not x7116) x7317)
+(or (not x7116) (not x7316))
+(or x7319 (not x7318) x7317 (not x7316) x7117)
+(or (not x7117) (not x7319))
+(or (not x7117) x7318)
+(or (not x7117) (not x7317))
+(or (not x7117) x7316)
+(or x7319 (not x7318) x7317 x7316 x7115)
+(or (not x7115) (not x7319))
+(or (not x7115) x7318)
+(or (not x7115) (not x7317))
+(or (not x7115) (not x7316))
+(or x7319 x7318 (not x7317) (not x7316) x7135)
+(or (not x7135) (not x7319))
+(or (not x7135) (not x7318))
+(or (not x7135) x7317)
+(or (not x7135) x7316)
+(or x7319 x7318 (not x7317) x7316 x7311)
+(or (not x7311) (not x7319))
+(or (not x7311) (not x7318))
+(or (not x7311) x7317)
+(or (not x7311) (not x7316))
+(or x7319 x7318 x7317 (not x7316) x7136)
+(or (not x7136) (not x7319))
+(or (not x7136) (not x7318))
+(or (not x7136) (not x7317))
+(or (not x7136) x7316)
+(or (not x7445) (not x7319))
+(or (not x7445) (not x7318))
+(or (not x7445) (not x7317))
+(or (not x7445) (not x7316))
+(or x7446 (not x7445))
+(or x7446 (not x7136))
+(or x7446 (not x7311))
+(or x7446 (not x7135))
+(or x7446 (not x7115))
+(or x7446 (not x7117))
+(or x7445 x7136 x7311 x7135 x7115 x7117 (not x7446))
+(or x7447 (not x7448))
+(or x7447 (not x7449))
+(or x7447 (not x7450))
+(or x7447 (not x7451))
+(or x7447 (not x7452))
+(or x7447 (not x7453))
+(or x7447 (not x140))
+(or x7447 x139)
+(or x7447 x138)
+(or x7447 x137)
+(or x7447 (not x7454))
+(or x7447 x7455)
+(or x7448 x7449 x7450 x7451 x7452 x7453 x140 (not x139) (not x138) (not x137) x7454 (not x7455) (not x7447))
+(or x7456 (not x7448))
+(or x7456 (not x7449))
+(or x7456 (not x7450))
+(or x7456 (not x7451))
+(or x7456 (not x7452))
+(or x7456 (not x140))
+(or x7456 x139)
+(or x7456 x138)
+(or x7456 (not x137))
+(or x7456 x141)
+(or x7456 (not x142))
+(or x7456 x7457)
+(or x7448 x7449 x7450 x7451 x7452 x140 (not x139) (not x138) x137 (not x141) x142 (not x7457) (not x7456))
+(or x7458 (not x140))
+(or x7458 (not x139))
+(or x7458 (not x138))
+(or x7458 x137)
+(or x7458 (not x7459))
+(or x140 x139 x138 (not x137) x7459 (not x7458))
+(or (not x7458) (not x7460) (not x7461) (not x7462) (not x7463) (not x7456) (not x7447) (not x7464) x7465)
+(or (not x7465) x7458)
+(or (not x7465) x7460)
+(or (not x7465) x7461)
+(or (not x7465) x7462)
+(or (not x7465) x7463)
+(or (not x7465) x7456)
+(or (not x7465) x7447)
+(or (not x7465) x7464)
+(or x7466 (not x7448))
+(or x7466 (not x7449))
+(or x7466 (not x140))
+(or x7466 (not x139))
+(or x7466 x138)
+(or x7466 x137)
+(or x7466 (not x7454))
+(or x7466 x7467)
+(or x7448 x7449 x140 x139 (not x138) (not x137) x7454 (not x7467) (not x7466))
+(or x7468 (not x7448))
+(or x7468 (not x140))
+(or x7468 (not x139))
+(or x7468 x138)
+(or x7468 (not x137))
+(or x7468 x7470)
+(or x7468 x7469)
+(or x7468 (not x7454))
+(or x7468 x7471)
+(or x7448 x140 x139 (not x138) x137 (not x7470) (not x7469) x7454 (not x7471) (not x7468))
+(or x7472 (not x7473) x7459)
+(or (not x7459) (not x7472))
+(or (not x7459) x7473)
+(or x7472 (not x7473) (not x7474) x7475)
+(or (not x7475) (not x7472))
+(or (not x7475) x7473)
+(or (not x7475) x7474)
+(or x7476 (not x140))
+(or x7476 (not x139))
+(or x7476 (not x138))
+(or x7476 x137)
+(or x7476 (not x7475))
+(or x140 x139 x138 (not x137) x7475 (not x7476))
+(or (not x7476) (not x7468) (not x7466) (not x7477) (not x7478) (not x7479) (not x7480) (not x7464) x7481)
+(or (not x7481) x7476)
+(or (not x7481) x7468)
+(or (not x7481) x7466)
+(or (not x7481) x7477)
+(or (not x7481) x7478)
+(or (not x7481) x7479)
+(or (not x7481) x7480)
+(or (not x7481) x7464)
+(or x7482 (not x7448))
+(or x7482 (not x7449))
+(or x7482 (not x7450))
+(or x7482 (not x7451))
+(or x7482 (not x140))
+(or x7482 x139)
+(or x7482 (not x138))
+(or x7482 x137)
+(or x7482 (not x7454))
+(or x7482 x7483)
+(or x7448 x7449 x7450 x7451 x140 (not x139) x138 (not x137) x7454 (not x7483) (not x7482))
+(or x7484 (not x7448))
+(or x7484 (not x7449))
+(or x7484 (not x7450))
+(or x7484 (not x140))
+(or x7484 x139)
+(or x7484 (not x138))
+(or x7484 (not x137))
+(or x7484 x141)
+(or x7484 (not x142))
+(or x7484 x7485)
+(or x7448 x7449 x7450 x140 (not x139) x138 x137 (not x141) x142 (not x7485) (not x7484))
+(or x7474 (not x7472))
+(or x7474 (not x7486))
+(or x7472 x7486 (not x7474))
+(or x7472 (not x7474) x7487)
+(or (not x7487) (not x7472))
+(or (not x7487) x7474)
+(or x7488 (not x140))
+(or x7488 (not x139))
+(or x7488 (not x138))
+(or x7488 x137)
+(or x7488 (not x7487))
+(or x140 x139 x138 (not x137) x7487 (not x7488))
+(or (not x7488) (not x7489) (not x7490) (not x7484) (not x7482) (not x7477) (not x7478) (not x7491) (not x7492) (not x7464) x7493)
+(or (not x7493) x7488)
+(or (not x7493) x7489)
+(or (not x7493) x7490)
+(or (not x7493) x7484)
+(or (not x7493) x7482)
+(or (not x7493) x7477)
+(or (not x7493) x7478)
+(or (not x7493) x7491)
+(or (not x7493) x7492)
+(or (not x7493) x7464)
+(or (not x140) (not x139) x138 x137 (not x7494) x7495)
+(or (not x7495) x140)
+(or (not x7495) x139)
+(or (not x7495) (not x138))
+(or (not x7495) (not x137))
+(or (not x7495) x7494)
+(or x7464 (not x7448))
+(or x7464 (not x7449))
+(or x7464 (not x7450))
+(or x7464 (not x7451))
+(or x7464 (not x7452))
+(or x7464 (not x7453))
+(or x7464 (not x7496))
+(or x7464 (not x7497))
+(or x7464 (not x7498))
+(or x7464 (not x7499))
+(or x7464 (not x7495))
+(or x7448 x7449 x7450 x7451 x7452 x7453 x7496 x7497 x7498 x7499 x7495 (not x7464))
+(or (not x140) x139 (not x138) (not x137) (not x141) x142 x7499)
+(or (not x7499) x140)
+(or (not x7499) (not x139))
+(or (not x7499) x138)
+(or (not x7499) x137)
+(or (not x7499) x141)
+(or (not x7499) (not x142))
+(or x7492 (not x7448))
+(or x7492 (not x7449))
+(or x7492 (not x7450))
+(or x7492 (not x7451))
+(or x7492 (not x7452))
+(or x7492 (not x7453))
+(or x7492 (not x7496))
+(or x7492 (not x7497))
+(or x7492 (not x7498))
+(or x7492 (not x7499))
+(or x7492 x140)
+(or x7492 x139)
+(or x7492 (not x138))
+(or x7492 (not x137))
+(or x7492 (not x7454))
+(or x7448 x7449 x7450 x7451 x7452 x7453 x7496 x7497 x7498 x7499 (not x140) (not x139) x138 x137 x7454 (not x7492))
+(or x7500 (not x7448))
+(or x7500 (not x7449))
+(or x7500 (not x7450))
+(or x7500 (not x7451))
+(or x7500 (not x7452))
+(or x7500 (not x7453))
+(or x7500 (not x7496))
+(or x7500 (not x7497))
+(or x7500 (not x7498))
+(or x7500 (not x7499))
+(or x7500 x140)
+(or x7500 x139)
+(or x7500 (not x138))
+(or x7500 (not x137))
+(or x7500 (not x7454))
+(or x7500 x7501)
+(or x7448 x7449 x7450 x7451 x7452 x7453 x7496 x7497 x7498 x7499 (not x140) (not x139) x138 x137 x7454 (not x7501) (not x7500))
+(or (not x140) x139 (not x138) x137 (not x7494) x7498)
+(or (not x7498) x140)
+(or (not x7498) (not x139))
+(or (not x7498) x138)
+(or (not x7498) (not x137))
+(or (not x7498) x7494)
+(or x7491 (not x7448))
+(or x7491 (not x7449))
+(or x7491 (not x7450))
+(or x7491 (not x7451))
+(or x7491 (not x7452))
+(or x7491 (not x7453))
+(or x7491 (not x7496))
+(or x7491 (not x7497))
+(or x7491 (not x7498))
+(or x7491 x140)
+(or x7491 (not x139))
+(or x7491 x138)
+(or x7491 x137)
+(or x7491 x141)
+(or x7491 (not x142))
+(or x7448 x7449 x7450 x7451 x7452 x7453 x7496 x7497 x7498 (not x140) x139 (not x138) (not x137) (not x141) x142 (not x7491))
+(or x7502 (not x7448))
+(or x7502 (not x7449))
+(or x7502 (not x7450))
+(or x7502 (not x7451))
+(or x7502 (not x7452))
+(or x7502 (not x7453))
+(or x7502 (not x7496))
+(or x7502 (not x7497))
+(or x7502 (not x7498))
+(or x7502 x140)
+(or x7502 (not x139))
+(or x7502 x138)
+(or x7502 x137)
+(or x7502 x141)
+(or x7502 (not x142))
+(or x7502 x7503)
+(or x7448 x7449 x7450 x7451 x7452 x7453 x7496 x7497 x7498 (not x140) x139 (not x138) (not x137) (not x141) x142 (not x7503) (not x7502))
+(or (not x140) x139 x138 (not x137) (not x7470) (not x7469) (not x141) x142 x7497)
+(or (not x7497) x140)
+(or (not x7497) (not x139))
+(or (not x7497) (not x138))
+(or (not x7497) x137)
+(or (not x7497) x7470)
+(or (not x7497) x7469)
+(or (not x7497) x141)
+(or (not x7497) (not x142))
+(or x7480 (not x7448))
+(or x7480 (not x7449))
+(or x7480 (not x7450))
+(or x7480 (not x7451))
+(or x7480 (not x7452))
+(or x7480 (not x7453))
+(or x7480 (not x7496))
+(or x7480 (not x7497))
+(or x7480 x140)
+(or x7480 (not x139))
+(or x7480 x138)
+(or x7480 (not x137))
+(or x7480 (not x7454))
+(or x7448 x7449 x7450 x7451 x7452 x7453 x7496 x7497 (not x140) x139 (not x138) x137 x7454 (not x7480))
+(or x7504 (not x7448))
+(or x7504 (not x7449))
+(or x7504 (not x7450))
+(or x7504 (not x7451))
+(or x7504 (not x7452))
+(or x7504 (not x7453))
+(or x7504 (not x7496))
+(or x7504 (not x7497))
+(or x7504 x140)
+(or x7504 (not x139))
+(or x7504 x138)
+(or x7504 (not x137))
+(or x7504 (not x7454))
+(or x7504 x7505)
+(or x7448 x7449 x7450 x7451 x7452 x7453 x7496 x7497 (not x140) x139 (not x138) x137 x7454 (not x7505) (not x7504))
+(or x140 (not x139) (not x138) (not x137) (not x7494) x7496)
+(or (not x7496) (not x140))
+(or (not x7496) x139)
+(or (not x7496) x138)
+(or (not x7496) x137)
+(or (not x7496) x7494)
+(or x7479 (not x7448))
+(or x7479 (not x7449))
+(or x7479 (not x7450))
+(or x7479 (not x7451))
+(or x7479 (not x7452))
+(or x7479 (not x7453))
+(or x7479 (not x7496))
+(or x7479 x140)
+(or x7479 (not x139))
+(or x7479 (not x138))
+(or x7479 x137)
+(or x7479 x7470)
+(or x7479 x7469)
+(or x7479 x141)
+(or x7479 (not x142))
+(or x7448 x7449 x7450 x7451 x7452 x7453 x7496 (not x140) x139 x138 (not x137) (not x7470) (not x7469) (not x141) x142 (not x7479))
+(or x7506 (not x7448))
+(or x7506 (not x7449))
+(or x7506 (not x7450))
+(or x7506 (not x7451))
+(or x7506 (not x7452))
+(or x7506 (not x7453))
+(or x7506 (not x7496))
+(or x7506 x140)
+(or x7506 (not x139))
+(or x7506 (not x138))
+(or x7506 x137)
+(or x7506 x7470)
+(or x7506 x7469)
+(or x7506 x141)
+(or x7506 (not x142))
+(or x7506 x7507)
+(or x7448 x7449 x7450 x7451 x7452 x7453 x7496 (not x140) x139 x138 (not x137) (not x7470) (not x7469) (not x141) x142 (not x7507) (not x7506))
+(or x140 (not x139) (not x138) x137 (not x141) x142 x7453)
+(or (not x7453) (not x140))
+(or (not x7453) x139)
+(or (not x7453) x138)
+(or (not x7453) (not x137))
+(or (not x7453) x141)
+(or (not x7453) (not x142))
+(or x7478 (not x7448))
+(or x7478 (not x7449))
+(or x7478 (not x7450))
+(or x7478 (not x7451))
+(or x7478 (not x7452))
+(or x7478 (not x7453))
+(or x7478 (not x140))
+(or x7478 x139)
+(or x7478 x138)
+(or x7478 x137)
+(or x7478 (not x7454))
+(or x7478 (not x7455))
+(or x7448 x7449 x7450 x7451 x7452 x7453 x140 (not x139) (not x138) (not x137) x7454 x7455 (not x7478))
+(or x140 (not x139) x138 (not x137) (not x7494) x7452)
+(or (not x7452) (not x140))
+(or (not x7452) x139)
+(or (not x7452) (not x138))
+(or (not x7452) x137)
+(or (not x7452) x7494)
+(or x7477 (not x7448))
+(or x7477 (not x7449))
+(or x7477 (not x7450))
+(or x7477 (not x7451))
+(or x7477 (not x7452))
+(or x7477 (not x140))
+(or x7477 x139)
+(or x7477 x138)
+(or x7477 (not x137))
+(or x7477 x141)
+(or x7477 (not x142))
+(or x7477 (not x7457))
+(or x7448 x7449 x7450 x7451 x7452 x140 (not x139) (not x138) x137 (not x141) x142 x7457 (not x7477))
+(or x140 (not x139) x138 x137 (not x141) x142 x7451)
+(or (not x7451) (not x140))
+(or (not x7451) x139)
+(or (not x7451) (not x138))
+(or (not x7451) (not x137))
+(or (not x7451) x141)
+(or (not x7451) (not x142))
+(or x7463 (not x7448))
+(or x7463 (not x7449))
+(or x7463 (not x7450))
+(or x7463 (not x7451))
+(or x7463 (not x140))
+(or x7463 x139)
+(or x7463 (not x138))
+(or x7463 x137)
+(or x7463 (not x7454))
+(or x7448 x7449 x7450 x7451 x140 (not x139) x138 (not x137) x7454 (not x7463))
+(or x7508 (not x7448))
+(or x7508 (not x7449))
+(or x7508 (not x7450))
+(or x7508 (not x7451))
+(or x7508 (not x140))
+(or x7508 x139)
+(or x7508 (not x138))
+(or x7508 x137)
+(or x7508 (not x7454))
+(or x7508 (not x7483))
+(or x7448 x7449 x7450 x7451 x140 (not x139) x138 (not x137) x7454 x7483 (not x7508))
+(or x140 x139 (not x138) (not x137) (not x7494) x7450)
+(or (not x7450) (not x140))
+(or (not x7450) (not x139))
+(or (not x7450) x138)
+(or (not x7450) x137)
+(or (not x7450) x7494)
+(or x7462 (not x7448))
+(or x7462 (not x7449))
+(or x7462 (not x7450))
+(or x7462 (not x140))
+(or x7462 x139)
+(or x7462 (not x138))
+(or x7462 (not x137))
+(or x7462 x141)
+(or x7462 (not x142))
+(or x7448 x7449 x7450 x140 (not x139) x138 x137 (not x141) x142 (not x7462))
+(or x7509 (not x7448))
+(or x7509 (not x7449))
+(or x7509 (not x7450))
+(or x7509 (not x140))
+(or x7509 x139)
+(or x7509 (not x138))
+(or x7509 (not x137))
+(or x7509 x141)
+(or x7509 (not x142))
+(or x7509 (not x7485))
+(or x7448 x7449 x7450 x140 (not x139) x138 x137 (not x141) x142 x7485 (not x7509))
+(or x140 x139 (not x138) x137 (not x7470) (not x7469) (not x7494) x7449)
+(or (not x7449) (not x140))
+(or (not x7449) (not x139))
+(or (not x7449) x138)
+(or (not x7449) (not x137))
+(or (not x7449) x7470)
+(or (not x7449) x7469)
+(or (not x7449) x7494)
+(or x7461 (not x7448))
+(or x7461 (not x7449))
+(or x7461 (not x140))
+(or x7461 (not x139))
+(or x7461 x138)
+(or x7461 x137)
+(or x7461 (not x7454))
+(or x7448 x7449 x140 x139 (not x138) (not x137) x7454 (not x7461))
+(or x7490 (not x7448))
+(or x7490 (not x7449))
+(or x7490 (not x140))
+(or x7490 (not x139))
+(or x7490 x138)
+(or x7490 x137)
+(or x7490 (not x7454))
+(or x7490 (not x7467))
+(or x7448 x7449 x140 x139 (not x138) (not x137) x7454 x7467 (not x7490))
+(or x140 x139 x138 (not x137) x7448)
+(or (not x7448) (not x140))
+(or (not x7448) (not x139))
+(or (not x7448) (not x138))
+(or (not x7448) x137)
+(or x7460 (not x7448))
+(or x7460 (not x140))
+(or x7460 (not x139))
+(or x7460 x138)
+(or x7460 (not x137))
+(or x7460 x7470)
+(or x7460 x7469)
+(or x7460 (not x7454))
+(or x7448 x140 x139 (not x138) x137 (not x7470) (not x7469) x7454 (not x7460))
+(or x7489 (not x7448))
+(or x7489 (not x140))
+(or x7489 (not x139))
+(or x7489 x138)
+(or x7489 (not x137))
+(or x7489 x7470)
+(or x7489 x7469)
+(or x7489 (not x7454))
+(or x7489 (not x7471))
+(or x7448 x140 x139 (not x138) x137 (not x7470) (not x7469) x7454 x7471 (not x7489))
+(or x7473 (not x7472))
+(or x7473 x7486)
+(or x7472 (not x7486) (not x7473))
+(or x7510 (not x140))
+(or x7510 (not x139))
+(or x7510 (not x138))
+(or x7510 x137)
+(or x7510 (not x7472))
+(or x7510 x7486)
+(or x140 x139 x138 (not x137) x7472 (not x7486) (not x7510))
+(or (not x7510) (not x7489) (not x7490) (not x7509) (not x7508) (not x7477) (not x7478) (not x7506) (not x7504) (not x7502) (not x7500) (not x7464) x7511)
+(or (not x7511) x7510)
+(or (not x7511) x7489)
+(or (not x7511) x7490)
+(or (not x7511) x7509)
+(or (not x7511) x7508)
+(or (not x7511) x7477)
+(or (not x7511) x7478)
+(or (not x7511) x7506)
+(or (not x7511) x7504)
+(or (not x7511) x7502)
+(or (not x7511) x7500)
+(or (not x7511) x7464)
+(or x7512 x7513 (not x7514) x7515)
+(or (not x7515) (not x7512))
+(or (not x7515) (not x7513))
+(or (not x7515) x7514)
+(or (not x7512) x7513 (not x7516) x7517)
+(or (not x7517) x7512)
+(or (not x7517) (not x7513))
+(or (not x7517) x7516)
+(or x7518 (not x7517))
+(or x7518 (not x7515))
+(or x7517 x7515 (not x7518))
+(or (not x7519) (not x7520) x7521 x7522 (not x7523) x7524)
+(or (not x7524) x7519)
+(or (not x7524) x7520)
+(or (not x7524) (not x7521))
+(or (not x7524) (not x7522))
+(or (not x7524) x7523)
+(or x7514 (not x7513))
+(or x7514 (not x7524))
+(or x7513 x7524 (not x7514))
+(or (not x7513) (not x7514) x7525)
+(or (not x7525) x7513)
+(or (not x7525) x7514)
+(or x7513 (not x7512) x7526)
+(or (not x7526) (not x7513))
+(or (not x7526) x7512)
+(or x7516 (not x7527))
+(or x7516 x7520)
+(or x7516 (not x7521))
+(or x7516 (not x7522))
+(or x7516 x7523)
+(or x7527 (not x7520) x7521 x7522 (not x7523) (not x7516))
+(or x7513 (not x7516) x7528)
+(or (not x7528) (not x7513))
+(or (not x7528) x7516)
+(or x7529 (not x7528))
+(or x7529 (not x7526))
+(or x7528 x7526 (not x7529))
+(or (not x7530) (not x7529) x7531)
+(or (not x7531) x7530)
+(or (not x7531) x7529)
+(or x7532 (not x7531))
+(or x7532 (not x7525))
+(or x7531 x7525 (not x7532))
+(or x7533 (not x7513))
+(or x7533 (not x7534))
+(or x7533 (not x7535))
+(or x7513 x7534 x7535 (not x7533))
+(or x7536 (not x7513))
+(or x7536 x7540)
+(or x7536 (not x7539))
+(or x7536 (not x7538))
+(or x7536 (not x7537))
+(or x7513 (not x7540) x7539 x7538 x7537 (not x7536))
+(or x7541 x7542)
+(or x7541 x7543)
+(or (not x7542) (not x7543) (not x7541))
+(or (not x7541) (not x7542) x7544)
+(or (not x7544) x7541)
+(or (not x7544) x7542)
+(or x7545 x7513)
+(or x7545 x7546)
+(or x7545 (not x7544))
+(or (not x7513) (not x7546) x7544 (not x7545))
+(or (not x7545) (not x7536) (not x7533) x7547)
+(or (not x7547) x7545)
+(or (not x7547) x7536)
+(or (not x7547) x7533)
+(or (not x7540) x7539 x7538 x7537 (not x7548) x7549)
+(or (not x7549) x7540)
+(or (not x7549) (not x7539))
+(or (not x7549) (not x7538))
+(or (not x7549) (not x7537))
+(or (not x7549) x7548)
+(or (not x7550) (not x7551) x7552 (not x7553) (not x7554) (not x7555) (not x7556) (not x7557) (not x7558) (not x7559) (not x7560) (not x7561) x7562)
+(or (not x7562) x7550)
+(or (not x7562) x7551)
+(or (not x7562) (not x7552))
+(or (not x7562) x7553)
+(or (not x7562) x7554)
+(or (not x7562) x7555)
+(or (not x7562) x7556)
+(or (not x7562) x7557)
+(or (not x7562) x7558)
+(or (not x7562) x7559)
+(or (not x7562) x7560)
+(or (not x7562) x7561)
+(or x7563 (not x7562))
+(or x7563 (not x7549))
+(or x7562 x7549 (not x7563))
+(or x7564 x7565 x7566)
+(or (not x7566) (not x7564))
+(or (not x7566) (not x7565))
+(or x7567 x7470)
+(or x7567 x7469)
+(or x7567 (not x7568))
+(or x7567 (not x7569))
+(or x7567 (not x7566))
+(or (not x7470) (not x7469) x7568 x7569 x7566 (not x7567))
+(or (not x7570) (not x7567) x7571)
+(or (not x7571) x7570)
+(or (not x7571) x7567)
+(or x7572 (not x7564))
+(or x7572 (not x7573))
+(or x7564 x7573 (not x7572))
+(or (not x7565) (not x7572) x7574)
+(or (not x7574) x7565)
+(or (not x7574) x7572)
+(or x7575 (not x7574))
+(or x7575 (not x7571))
+(or x7574 x7571 (not x7575))
+(or x7576 (not x7470) (not x7469) (not x7577) (not x7578) x7573)
+(or (not x7573) (not x7576))
+(or (not x7573) x7470)
+(or (not x7573) x7469)
+(or (not x7573) x7577)
+(or (not x7573) x7578)
+(or (not x7564) x7576 (not x7470) (not x7469) (not x7577) (not x7578) x7579)
+(or (not x7579) x7564)
+(or (not x7579) (not x7576))
+(or (not x7579) x7470)
+(or (not x7579) x7469)
+(or (not x7579) x7577)
+(or (not x7579) x7578)
+(or x7580 x7470)
+(or x7580 x7469)
+(or x7580 (not x7568))
+(or x7580 (not x7569))
+(or x7580 x7564)
+(or (not x7470) (not x7469) x7568 x7569 (not x7564) (not x7580))
+(or x7570 (not x7576))
+(or x7570 x7470)
+(or x7570 x7469)
+(or x7570 (not x7568))
+(or x7570 (not x7569))
+(or x7576 (not x7470) (not x7469) x7568 x7569 (not x7570))
+(or (not x7570) (not x7580) x7581)
+(or (not x7581) x7570)
+(or (not x7581) x7580)
+(or x7582 (not x7581))
+(or x7582 (not x7579))
+(or x7581 x7579 (not x7582))
+(or x7520 (not x7523) x7583)
+(or (not x7583) (not x7520))
+(or (not x7583) x7523)
+(or x7584 (not x7585))
+(or x7584 x7551)
+(or x7584 x7586)
+(or x7584 (not x7583))
+(or x7585 (not x7551) (not x7586) x7583 (not x7584))
+(or (not x7587) (not x7550) (not x7584) x7588)
+(or (not x7588) x7587)
+(or (not x7588) x7550)
+(or (not x7588) x7584)
+(or x7589 (not x7520))
+(or x7589 x7523)
+(or x7520 (not x7523) (not x7589))
+(or (not x7590) (not x7551) (not x7586) (not x7589) x7591)
+(or (not x7591) x7590)
+(or (not x7591) x7551)
+(or (not x7591) x7586)
+(or (not x7591) x7589)
+(or x7592 (not x7534))
+(or x7592 (not x7591))
+(or x7534 x7591 (not x7592))
+(or (not x7592) (not x7550) x7593)
+(or (not x7593) x7592)
+(or (not x7593) x7550)
+(or x7594 (not x7593))
+(or x7594 (not x7588))
+(or x7593 x7588 (not x7594))
+(or x7595 (not x7596))
+(or x7595 x7576)
+(or x7596 (not x7576) (not x7595))
+(or (not x7520) (not x7470) (not x7469) (not x7597) (not x7522) (not x7598) (not x7599) x7576 x7600 x7601 x7602 x7603 x7604 (not x7520) x7605 x7552 x7606 x7607 x7513 x7608 x7609)
+(or (not x7609) x7520)
+(or (not x7609) x7470)
+(or (not x7609) x7469)
+(or (not x7609) x7597)
+(or (not x7609) x7522)
+(or (not x7609) x7598)
+(or (not x7609) x7599)
+(or (not x7609) (not x7576))
+(or (not x7609) (not x7600))
+(or (not x7609) (not x7601))
+(or (not x7609) (not x7602))
+(or (not x7609) (not x7603))
+(or (not x7609) (not x7604))
+(or (not x7609) x7520)
+(or (not x7609) (not x7605))
+(or (not x7609) (not x7552))
+(or (not x7609) (not x7606))
+(or (not x7609) (not x7607))
+(or (not x7609) (not x7513))
+(or (not x7609) (not x7608))
+(or (not x7610) (not x7611) (not x7470) (not x7469) (not x7576) x7520 x7600 x7601 x7602 x7603 x7605 x7552 x7606 x7607 x7513 x7608 x7612)
+(or (not x7612) x7610)
+(or (not x7612) x7611)
+(or (not x7612) x7470)
+(or (not x7612) x7469)
+(or (not x7612) x7576)
+(or (not x7612) (not x7520))
+(or (not x7612) (not x7600))
+(or (not x7612) (not x7601))
+(or (not x7612) (not x7602))
+(or (not x7612) (not x7603))
+(or (not x7612) (not x7605))
+(or (not x7612) (not x7552))
+(or (not x7612) (not x7606))
+(or (not x7612) (not x7607))
+(or (not x7612) (not x7513))
+(or (not x7612) (not x7608))
+(or x7613 (not x7612))
+(or x7613 (not x7609))
+(or x7612 x7609 (not x7613))
+(or x7600 x7602 x7603 (not x7601) x7605 x7552 x7606 x7607 x7513 x7608 x7576 x7520 x7614)
+(or (not x7614) (not x7600))
+(or (not x7614) (not x7602))
+(or (not x7614) (not x7603))
+(or (not x7614) x7601)
+(or (not x7614) (not x7605))
+(or (not x7614) (not x7552))
+(or (not x7614) (not x7606))
+(or (not x7614) (not x7607))
+(or (not x7614) (not x7513))
+(or (not x7614) (not x7608))
+(or (not x7614) (not x7576))
+(or (not x7614) (not x7520))
+(or (not x7540) x7539 x7538 x7537 (not x7513) x7608 x7605 x7520 x7576 x7606 x7607 (not x7615) (not x7616) x7552 x7600 x7601 x7602 x7603 x7617)
+(or (not x7617) x7540)
+(or (not x7617) (not x7539))
+(or (not x7617) (not x7538))
+(or (not x7617) (not x7537))
+(or (not x7617) x7513)
+(or (not x7617) (not x7608))
+(or (not x7617) (not x7605))
+(or (not x7617) (not x7520))
+(or (not x7617) (not x7576))
+(or (not x7617) (not x7606))
+(or (not x7617) (not x7607))
+(or (not x7617) x7615)
+(or (not x7617) x7616)
+(or (not x7617) (not x7552))
+(or (not x7617) (not x7600))
+(or (not x7617) (not x7601))
+(or (not x7617) (not x7602))
+(or (not x7617) (not x7603))
+(or x7618 (not x7617))
+(or x7618 (not x7614))
+(or x7617 x7614 (not x7618))
+(or (not x7470) (not x7469) (not x7619) (not x7618) x7620)
+(or (not x7620) x7470)
+(or (not x7620) x7469)
+(or (not x7620) x7619)
+(or (not x7620) x7618)
+(or (not x7470) (not x7469) (not x7576) x7520 x7600 x7601 x7602 x7603 x7605 x7552 x7606 x7607 x7513 x7608 (not x7621) (not x7622) (not x7623) (not x7624) (not x7625) (not x7586) x7626)
+(or (not x7626) x7470)
+(or (not x7626) x7469)
+(or (not x7626) x7576)
+(or (not x7626) (not x7520))
+(or (not x7626) (not x7600))
+(or (not x7626) (not x7601))
+(or (not x7626) (not x7602))
+(or (not x7626) (not x7603))
+(or (not x7626) (not x7605))
+(or (not x7626) (not x7552))
+(or (not x7626) (not x7606))
+(or (not x7626) (not x7607))
+(or (not x7626) (not x7513))
+(or (not x7626) (not x7608))
+(or (not x7626) x7621)
+(or (not x7626) x7622)
+(or (not x7626) x7623)
+(or (not x7626) x7624)
+(or (not x7626) x7625)
+(or (not x7626) x7586)
+(or (not x7619) x7601 x7602 x7603 x7605 x7552 x7606 x7607 x7513 x7608 x7576 x7520 x7627)
+(or (not x7627) x7619)
+(or (not x7627) (not x7601))
+(or (not x7627) (not x7602))
+(or (not x7627) (not x7603))
+(or (not x7627) (not x7605))
+(or (not x7627) (not x7552))
+(or (not x7627) (not x7606))
+(or (not x7627) (not x7607))
+(or (not x7627) (not x7513))
+(or (not x7627) (not x7608))
+(or (not x7627) (not x7576))
+(or (not x7627) (not x7520))
+(or x7628 (not x7629))
+(or x7628 (not x7627))
+(or x7629 x7627 (not x7628))
+(or (not x7470) (not x7469) (not x7600) (not x7628) x7630)
+(or (not x7630) x7470)
+(or (not x7630) x7469)
+(or (not x7630) x7600)
+(or (not x7630) x7628)
+(or x7605 x7606 (not x7607) (not x7470) (not x7469) x7513 x7608 x7576 x7520 x7552 x7600 x7601 x7602 x7603 x7631)
+(or (not x7631) (not x7605))
+(or (not x7631) (not x7606))
+(or (not x7631) x7607)
+(or (not x7631) x7470)
+(or (not x7631) x7469)
+(or (not x7631) (not x7513))
+(or (not x7631) (not x7608))
+(or (not x7631) (not x7576))
+(or (not x7631) (not x7520))
+(or (not x7631) (not x7552))
+(or (not x7631) (not x7600))
+(or (not x7631) (not x7601))
+(or (not x7631) (not x7602))
+(or (not x7631) (not x7603))
+(or x7632 (not x7631))
+(or x7632 (not x7630))
+(or x7631 x7630 (not x7632))
+(or x7633 x7601)
+(or x7633 x7608)
+(or (not x7601) (not x7608) (not x7633))
+(or x7634 (not x7601))
+(or x7634 (not x7619))
+(or x7634 (not x7513))
+(or x7601 x7619 x7513 (not x7634))
+(or x7608 x7601 (not x7635) x7636)
+(or (not x7636) (not x7608))
+(or (not x7636) (not x7601))
+(or (not x7636) x7635)
+(or x7637 x7513)
+(or x7637 (not x7636))
+(or (not x7513) x7636 (not x7637))
+(or x7638 x7619)
+(or x7638 (not x7513))
+(or x7638 (not x7608))
+(or (not x7619) x7513 x7608 (not x7638))
+(or (not x7470) (not x7469) x7552 x7600 x7605 x7520 x7576 x7606 x7607 x7602 x7603 (not x7638) (not x7637) (not x7634) (not x7633) x7639)
+(or (not x7639) x7470)
+(or (not x7639) x7469)
+(or (not x7639) (not x7552))
+(or (not x7639) (not x7600))
+(or (not x7639) (not x7605))
+(or (not x7639) (not x7520))
+(or (not x7639) (not x7576))
+(or (not x7639) (not x7606))
+(or (not x7639) (not x7607))
+(or (not x7639) (not x7602))
+(or (not x7639) (not x7603))
+(or (not x7639) x7638)
+(or (not x7639) x7637)
+(or (not x7639) x7634)
+(or (not x7639) x7633)
+(or (not x7470) (not x7469) (not x7640) x7641)
+(or (not x7641) x7470)
+(or (not x7641) x7469)
+(or (not x7641) x7640)
+(or x7561 (not x7642))
+(or x7561 (not x7643))
+(or x7642 x7643 (not x7561))
+(or x7644 (not x7645))
+(or x7644 x7602)
+(or x7645 (not x7602) (not x7644))
+(or x7646 (not x7513))
+(or x7646 (not x7602))
+(or x7646 (not x7600))
+(or x7646 (not x7601))
+(or x7513 x7602 x7600 x7601 (not x7646))
+(or x7647 x7601)
+(or x7647 x7600)
+(or (not x7601) (not x7600) (not x7647))
+(or x7603 (not x7647) (not x7646) (not x7644) x7648)
+(or (not x7648) (not x7603))
+(or (not x7648) x7647)
+(or (not x7648) x7646)
+(or (not x7648) x7644)
+(or x7560 (not x7608))
+(or x7560 (not x7605))
+(or x7560 (not x7520))
+(or x7560 (not x7576))
+(or x7560 (not x7606))
+(or x7560 (not x7607))
+(or x7560 (not x7648))
+(or x7608 x7605 x7520 x7576 x7606 x7607 x7648 (not x7560))
+(or x7559 x7607)
+(or x7559 x7606)
+(or (not x7607) (not x7606) (not x7559))
+(or x7558 (not x7649))
+(or x7558 x7608)
+(or x7649 (not x7608) (not x7558))
+(or x7557 x7520)
+(or x7557 (not x7650))
+(or (not x7520) x7650 (not x7557))
+(or (not x7540) x7539 x7538 x7537 x7619 x7651)
+(or (not x7651) x7540)
+(or (not x7651) (not x7539))
+(or (not x7651) (not x7538))
+(or (not x7651) (not x7537))
+(or (not x7651) (not x7619))
+(or (not x7540) x7539 x7538 x7537 (not x7619) (not x7535) x7652)
+(or (not x7652) x7540)
+(or (not x7652) (not x7539))
+(or (not x7652) (not x7538))
+(or (not x7652) (not x7537))
+(or (not x7652) x7619)
+(or (not x7652) x7535)
+(or x7635 (not x7652))
+(or x7635 (not x7651))
+(or x7652 x7651 (not x7635))
+(or (not x7540) x7539 x7538 x7537 (not x7619) x7653)
+(or (not x7653) x7540)
+(or (not x7653) (not x7539))
+(or (not x7653) (not x7538))
+(or (not x7653) (not x7537))
+(or (not x7653) x7619)
+(or x7654 (not x7653))
+(or x7654 (not x7652))
+(or x7654 (not x7651))
+(or x7653 x7652 x7651 (not x7654))
+(or x7602 x7600 x7601 x7608 x7605 x7520 x7576 x7606 x7607 (not x7654) x7655)
+(or (not x7655) (not x7602))
+(or (not x7655) (not x7600))
+(or (not x7655) (not x7601))
+(or (not x7655) (not x7608))
+(or (not x7655) (not x7605))
+(or (not x7655) (not x7520))
+(or (not x7655) (not x7576))
+(or (not x7655) (not x7606))
+(or (not x7655) (not x7607))
+(or (not x7655) x7654)
+(or x7556 x7513)
+(or x7556 (not x7655))
+(or (not x7513) x7655 (not x7556))
+(or x7555 (not x7656))
+(or x7555 x7576)
+(or x7656 (not x7576) (not x7555))
+(or x7554 (not x7657))
+(or x7554 x7605)
+(or x7657 (not x7605) (not x7554))
+(or x7553 x7604)
+(or x7553 x7520)
+(or (not x7604) (not x7520) (not x7553))
+(or (not x7586) (not x7470) (not x7469) x7552 (not x7553) (not x7554) (not x7555) (not x7556) (not x7557) (not x7558) (not x7559) (not x7560) (not x7561) (not x7658) (not x7623) (not x7659) (not x7660) (not x7625) (not x7661) (not x7550) x7662)
+(or (not x7662) x7586)
+(or (not x7662) x7470)
+(or (not x7662) x7469)
+(or (not x7662) (not x7552))
+(or (not x7662) x7553)
+(or (not x7662) x7554)
+(or (not x7662) x7555)
+(or (not x7662) x7556)
+(or (not x7662) x7557)
+(or (not x7662) x7558)
+(or (not x7662) x7559)
+(or (not x7662) x7560)
+(or (not x7662) x7561)
+(or (not x7662) x7658)
+(or (not x7662) x7623)
+(or (not x7662) x7659)
+(or (not x7662) x7660)
+(or (not x7662) x7625)
+(or (not x7662) x7661)
+(or (not x7662) x7550)
+(or x7663 x7470)
+(or x7663 x7469)
+(or x7663 (not x7552))
+(or x7663 (not x7664))
+(or x7663 (not x7665))
+(or x7663 (not x7666))
+(or x7663 (not x7667))
+(or x7663 (not x7668))
+(or x7663 (not x7669))
+(or x7663 (not x7670))
+(or x7663 (not x7671))
+(or x7663 (not x7672))
+(or x7663 (not x7673))
+(or x7663 (not x7674))
+(or x7663 (not x7675))
+(or x7663 (not x7676))
+(or x7663 (not x7677))
+(or x7663 (not x7678))
+(or x7663 (not x7534))
+(or (not x7470) (not x7469) x7552 x7664 x7665 x7666 x7667 x7668 x7669 x7670 x7671 x7672 x7673 x7674 x7675 x7676 x7677 x7678 x7534 (not x7663))
+(or x7679 x7470)
+(or x7679 x7469)
+(or x7679 (not x7552))
+(or x7679 (not x7664))
+(or x7679 (not x7665))
+(or x7679 (not x7666))
+(or x7679 (not x7667))
+(or x7679 (not x7668))
+(or x7679 (not x7669))
+(or x7679 (not x7670))
+(or x7679 (not x7671))
+(or x7679 (not x7672))
+(or x7679 (not x7673))
+(or x7679 (not x7674))
+(or x7679 (not x7675))
+(or x7679 (not x7676))
+(or x7679 (not x7677))
+(or x7679 (not x7678))
+(or x7679 x7548)
+(or (not x7470) (not x7469) x7552 x7664 x7665 x7666 x7667 x7668 x7669 x7670 x7671 x7672 x7673 x7674 x7675 x7676 x7677 x7678 (not x7548) (not x7679))
+(or (not x7679) (not x7663) x7680)
+(or (not x7680) x7679)
+(or (not x7680) x7663)
+(or x7681 (not x7680))
+(or x7681 (not x7662))
+(or x7680 x7662 (not x7681))
+(or (not x7550) (not x7682) x7683)
+(or (not x7683) x7550)
+(or (not x7683) x7682)
+(or (not x7540) x7539 x7538 x7537 (not x7684) x7685)
+(or (not x7685) x7540)
+(or (not x7685) (not x7539))
+(or (not x7685) (not x7538))
+(or (not x7685) (not x7537))
+(or (not x7685) x7684)
+(or x7686 (not x7685))
+(or x7686 (not x7683))
+(or x7685 x7683 (not x7686))
+(or (not x7550) (not x7687) x7688)
+(or (not x7688) x7550)
+(or (not x7688) x7687)
+(or x7689 (not x7534))
+(or x7689 (not x7688))
+(or x7534 x7688 (not x7689))
+(or x7606 x7607 (not x7605) (not x7470) (not x7469) x7513 x7608 x7576 x7520 x7552 x7600 x7601 x7602 x7603 x7690)
+(or (not x7690) (not x7606))
+(or (not x7690) (not x7607))
+(or (not x7690) x7605)
+(or (not x7690) x7470)
+(or (not x7690) x7469)
+(or (not x7690) (not x7513))
+(or (not x7690) (not x7608))
+(or (not x7690) (not x7576))
+(or (not x7690) (not x7520))
+(or (not x7690) (not x7552))
+(or (not x7690) (not x7600))
+(or (not x7690) (not x7601))
+(or (not x7690) (not x7602))
+(or (not x7690) (not x7603))
+(or (not x7622) (not x7623) (not x7624) (not x7625) x7691)
+(or (not x7691) x7622)
+(or (not x7691) x7623)
+(or (not x7691) x7624)
+(or (not x7691) x7625)
+(or x7692 (not x7693))
+(or x7692 (not x7694))
+(or x7692 (not x7675))
+(or x7692 (not x7674))
+(or x7692 (not x7695))
+(or x7692 (not x7696))
+(or x7692 (not x7678))
+(or x7692 (not x7677))
+(or x7692 (not x7564))
+(or x7692 (not x7565))
+(or x7693 x7694 x7675 x7674 x7695 x7696 x7678 x7677 x7564 x7565 (not x7692))
+(or (not x7658) (not x7623) (not x7659) (not x7660) (not x7625) (not x7661) x7596)
+(or (not x7596) x7658)
+(or (not x7596) x7623)
+(or (not x7596) x7659)
+(or (not x7596) x7660)
+(or (not x7596) x7625)
+(or (not x7596) x7661)
+(or x7610 (not x7596))
+(or x7610 (not x7694))
+(or x7610 (not x7674))
+(or x7610 (not x7696))
+(or x7610 (not x7677))
+(or x7610 x7586)
+(or x7596 x7694 x7674 x7696 x7677 (not x7586) (not x7610))
+(or (not x7610) (not x7692) (not x7622) (not x7623) (not x7624) (not x7625) x7520 x7600 x7601 x7602 x7603 x7605 x7552 x7606 x7607 x7513 x7608 x7697)
+(or (not x7697) x7610)
+(or (not x7697) x7692)
+(or (not x7697) x7622)
+(or (not x7697) x7623)
+(or (not x7697) x7624)
+(or (not x7697) x7625)
+(or (not x7697) (not x7520))
+(or (not x7697) (not x7600))
+(or (not x7697) (not x7601))
+(or (not x7697) (not x7602))
+(or (not x7697) (not x7603))
+(or (not x7697) (not x7605))
+(or (not x7697) (not x7552))
+(or (not x7697) (not x7606))
+(or (not x7697) (not x7607))
+(or (not x7697) (not x7513))
+(or (not x7697) (not x7608))
+(or x7597 (not x7523))
+(or x7597 (not x7521))
+(or x7597 (not x7522))
+(or x7597 x7551)
+(or x7597 x7587)
+(or x7523 x7521 x7522 (not x7551) (not x7587) (not x7597))
+(or (not x7597) (not x7522) (not x7598) (not x7599) x7576 x7600 x7601 x7602 x7603 x7604 (not x7520) x7605 x7552 x7606 x7607 x7513 x7608 x7629)
+(or (not x7629) x7597)
+(or (not x7629) x7522)
+(or (not x7629) x7598)
+(or (not x7629) x7599)
+(or (not x7629) (not x7576))
+(or (not x7629) (not x7600))
+(or (not x7629) (not x7601))
+(or (not x7629) (not x7602))
+(or (not x7629) (not x7603))
+(or (not x7629) (not x7604))
+(or (not x7629) x7520)
+(or (not x7629) (not x7605))
+(or (not x7629) (not x7552))
+(or (not x7629) (not x7606))
+(or (not x7629) (not x7607))
+(or (not x7629) (not x7513))
+(or (not x7629) (not x7608))
+(or x7698 (not x7629))
+(or x7698 (not x7697))
+(or x7629 x7697 (not x7698))
+(or (not x7470) (not x7469) (not x7576) (not x7698) x7699)
+(or (not x7699) x7470)
+(or (not x7699) x7469)
+(or (not x7699) x7576)
+(or (not x7699) x7698)
+(or x7700 (not x7699))
+(or x7700 (not x7690))
+(or x7699 x7690 (not x7700))
+(or (not x7701) (not x7702) x7672)
+(or (not x7672) x7701)
+(or (not x7672) x7702)
+(or (not x7703) (not x7602) x7704)
+(or (not x7704) x7703)
+(or (not x7704) x7602)
+(or x7513 x7602 x7600 x7601 x7705)
+(or (not x7705) (not x7513))
+(or (not x7705) (not x7602))
+(or (not x7705) (not x7600))
+(or (not x7705) (not x7601))
+(or (not x7601) (not x7600) x7706)
+(or (not x7706) x7601)
+(or (not x7706) x7600)
+(or x7707 (not x7603))
+(or x7707 (not x7706))
+(or x7707 (not x7705))
+(or x7707 (not x7704))
+(or x7603 x7706 x7705 x7704 (not x7707))
+(or x7608 x7605 x7520 x7576 x7606 x7607 x7643)
+(or (not x7643) (not x7608))
+(or (not x7643) (not x7605))
+(or (not x7643) (not x7520))
+(or (not x7643) (not x7576))
+(or (not x7643) (not x7606))
+(or (not x7643) (not x7607))
+(or x7608 x7605 x7520 x7576 x7606 x7607 (not x7707) x7671)
+(or (not x7671) (not x7608))
+(or (not x7671) (not x7605))
+(or (not x7671) (not x7520))
+(or (not x7671) (not x7576))
+(or (not x7671) (not x7606))
+(or (not x7671) (not x7607))
+(or (not x7671) x7707)
+(or (not x7607) (not x7606) x7670)
+(or (not x7670) x7607)
+(or (not x7670) x7606)
+(or (not x7708) (not x7608) x7669)
+(or (not x7669) x7708)
+(or (not x7669) x7608)
+(or (not x7520) (not x7709) x7668)
+(or (not x7668) x7520)
+(or (not x7668) x7709)
+(or x7616 x7540)
+(or x7616 (not x7539))
+(or x7616 (not x7538))
+(or x7616 (not x7537))
+(or x7616 (not x7619))
+(or (not x7540) x7539 x7538 x7537 x7619 (not x7616))
+(or x7615 x7540)
+(or x7615 (not x7539))
+(or x7615 (not x7538))
+(or x7615 (not x7537))
+(or x7615 x7619)
+(or x7615 x7535)
+(or (not x7540) x7539 x7538 x7537 (not x7619) (not x7535) (not x7615))
+(or x7710 x7540)
+(or x7710 (not x7539))
+(or x7710 (not x7538))
+(or x7710 (not x7537))
+(or x7710 x7619)
+(or (not x7540) x7539 x7538 x7537 (not x7619) (not x7710))
+(or (not x7710) (not x7615) (not x7616) x7711)
+(or (not x7711) x7710)
+(or (not x7711) x7615)
+(or (not x7711) x7616)
+(or x7702 (not x7608))
+(or x7702 (not x7605))
+(or x7702 (not x7520))
+(or x7702 (not x7576))
+(or x7702 (not x7606))
+(or x7702 (not x7607))
+(or x7608 x7605 x7520 x7576 x7606 x7607 (not x7702))
+(or x7712 (not x7602))
+(or x7712 (not x7600))
+(or x7712 (not x7601))
+(or x7712 (not x7608))
+(or x7712 (not x7605))
+(or x7712 (not x7520))
+(or x7712 (not x7576))
+(or x7712 (not x7606))
+(or x7712 (not x7607))
+(or x7712 (not x7711))
+(or x7602 x7600 x7601 x7608 x7605 x7520 x7576 x7606 x7607 x7711 (not x7712))
+(or (not x7513) (not x7712) x7667)
+(or (not x7667) x7513)
+(or (not x7667) x7712)
+(or (not x7713) (not x7576) x7666)
+(or (not x7666) x7713)
+(or (not x7666) x7576)
+(or (not x7714) (not x7605) x7665)
+(or (not x7665) x7714)
+(or (not x7665) x7605)
+(or (not x7604) (not x7520) x7664)
+(or (not x7664) x7604)
+(or (not x7664) x7520)
+(or x7715 x7470)
+(or x7715 x7469)
+(or x7715 (not x7552))
+(or x7715 (not x7664))
+(or x7715 (not x7665))
+(or x7715 (not x7666))
+(or x7715 (not x7667))
+(or x7715 (not x7668))
+(or x7715 (not x7669))
+(or x7715 (not x7670))
+(or x7715 (not x7671))
+(or x7715 (not x7672))
+(or (not x7470) (not x7469) x7552 x7664 x7665 x7666 x7667 x7668 x7669 x7670 x7671 x7672 (not x7715))
+(or x7603 (not x7470) (not x7469) x7600 x7601 (not x7602) x7605 x7552 x7606 x7607 x7513 x7608 x7576 x7520 x7716)
+(or (not x7716) (not x7603))
+(or (not x7716) x7470)
+(or (not x7716) x7469)
+(or (not x7716) (not x7600))
+(or (not x7716) (not x7601))
+(or (not x7716) x7602)
+(or (not x7716) (not x7605))
+(or (not x7716) (not x7552))
+(or (not x7716) (not x7606))
+(or (not x7716) (not x7607))
+(or (not x7716) (not x7513))
+(or (not x7716) (not x7608))
+(or (not x7716) (not x7576))
+(or (not x7716) (not x7520))
+(or x7598 (not x7587))
+(or x7598 (not x7523))
+(or x7598 (not x7521))
+(or x7598 (not x7522))
+(or x7598 x7551)
+(or x7587 x7523 x7521 x7522 (not x7551) (not x7598))
+(or x7523 x7521 x7522 (not x7551) (not x7587) x7717)
+(or (not x7717) (not x7523))
+(or (not x7717) (not x7521))
+(or (not x7717) (not x7522))
+(or (not x7717) x7551)
+(or (not x7717) x7587)
+(or x7718 (not x7717))
+(or x7718 x7522)
+(or x7717 (not x7522) (not x7718))
+(or (not x7470) (not x7469) (not x7718) (not x7598) (not x7599) x7576 x7600 x7601 x7602 x7603 x7604 (not x7520) x7605 x7552 x7606 x7607 x7513 x7608 x7719)
+(or (not x7719) x7470)
+(or (not x7719) x7469)
+(or (not x7719) x7718)
+(or (not x7719) x7598)
+(or (not x7719) x7599)
+(or (not x7719) (not x7576))
+(or (not x7719) (not x7600))
+(or (not x7719) (not x7601))
+(or (not x7719) (not x7602))
+(or (not x7719) (not x7603))
+(or (not x7719) (not x7604))
+(or (not x7719) x7520)
+(or (not x7719) (not x7605))
+(or (not x7719) (not x7552))
+(or (not x7719) (not x7606))
+(or (not x7719) (not x7607))
+(or (not x7719) (not x7513))
+(or (not x7719) (not x7608))
+(or x7605 x7607 (not x7606) (not x7470) (not x7469) x7513 x7608 x7576 x7520 x7552 x7600 x7601 x7602 x7603 x7720)
+(or (not x7720) (not x7605))
+(or (not x7720) (not x7607))
+(or (not x7720) x7606)
+(or (not x7720) x7470)
+(or (not x7720) x7469)
+(or (not x7720) (not x7513))
+(or (not x7720) (not x7608))
+(or (not x7720) (not x7576))
+(or (not x7720) (not x7520))
+(or (not x7720) (not x7552))
+(or (not x7720) (not x7600))
+(or (not x7720) (not x7601))
+(or (not x7720) (not x7602))
+(or (not x7720) (not x7603))
+(or x7530 x7512 x7527)
+(or (not x7527) (not x7530))
+(or (not x7527) (not x7512))
+(or x7599 (not x7527))
+(or x7599 (not x7521))
+(or x7599 (not x7522))
+(or x7599 x7523)
+(or x7527 x7521 x7522 (not x7523) (not x7599))
+(or (not x7599) x7587 x7523 x7521 x7522 (not x7551) x7721)
+(or (not x7721) x7599)
+(or (not x7721) (not x7587))
+(or (not x7721) (not x7523))
+(or (not x7721) (not x7521))
+(or (not x7721) (not x7522))
+(or (not x7721) x7551)
+(or x7519 (not x7530))
+(or x7519 (not x7512))
+(or x7530 x7512 (not x7519))
+(or (not x7519) x7521 x7522 (not x7523) x7722)
+(or (not x7722) x7519)
+(or (not x7722) (not x7521))
+(or (not x7722) (not x7522))
+(or (not x7722) x7523)
+(or x7723 (not x7722))
+(or x7723 (not x7721))
+(or x7722 x7721 (not x7723))
+(or (not x7470) (not x7469) x7576 x7600 x7601 x7602 x7603 x7604 (not x7520) x7605 x7552 x7606 x7607 x7513 x7608 (not x7723) x7724)
+(or (not x7724) x7470)
+(or (not x7724) x7469)
+(or (not x7724) (not x7576))
+(or (not x7724) (not x7600))
+(or (not x7724) (not x7601))
+(or (not x7724) (not x7602))
+(or (not x7724) (not x7603))
+(or (not x7724) (not x7604))
+(or (not x7724) x7520)
+(or (not x7724) (not x7605))
+(or (not x7724) (not x7552))
+(or (not x7724) (not x7606))
+(or (not x7724) (not x7607))
+(or (not x7724) (not x7513))
+(or (not x7724) (not x7608))
+(or (not x7724) x7723)
+(or x7725 (not x7726))
+(or x7725 (not x7727))
+(or x7725 (not x7728))
+(or x7725 (not x7729))
+(or x7725 (not x7731))
+(or x7726 x7727 x7728 x7729 x7731 (not x7725))
+(or x7732 (not x7731))
+(or x7732 (not x7730))
+(or x7732 x141)
+(or x7732 (not x142))
+(or x7732 x7470)
+(or x7732 x7469)
+(or x7731 x7730 (not x141) x142 (not x7470) (not x7469) (not x7732))
+(or (not x7732) (not x7733) (not x7725) x7734)
+(or (not x7734) x7732)
+(or (not x7734) x7733)
+(or (not x7734) x7725)
+(or x7735 (not x7726))
+(or x7735 (not x7727))
+(or x7735 (not x7728))
+(or x7735 (not x7729))
+(or x7735 (not x7730))
+(or x7726 x7727 x7728 x7729 x7730 (not x7735))
+(or x7733 (not x7726))
+(or x7733 (not x7727))
+(or x7733 (not x7728))
+(or x7733 x7731)
+(or x7733 x7730)
+(or x7726 x7727 x7728 (not x7731) (not x7730) (not x7733))
+(or x7731 x7730 (not x141) x142 (not x7470) (not x7469) x7726)
+(or (not x7726) (not x7731))
+(or (not x7726) (not x7730))
+(or (not x7726) x141)
+(or (not x7726) (not x142))
+(or (not x7726) x7470)
+(or (not x7726) x7469)
+(or x7736 (not x7726))
+(or x7736 (not x7731))
+(or x7736 x7730)
+(or x7726 x7731 (not x7730) (not x7736))
+(or (not x7736) (not x7733) (not x7735) x7737)
+(or (not x7737) x7736)
+(or (not x7737) x7733)
+(or (not x7737) x7735)
+(or x7738 (not x7739))
+(or x7738 (not x7740))
+(or x7738 (not x7741))
+(or x7738 (not x7742))
+(or x7738 (not x7744))
+(or x7739 x7740 x7741 x7742 x7744 (not x7738))
+(or x7745 (not x7744))
+(or x7745 (not x7743))
+(or x7745 x141)
+(or x7745 (not x142))
+(or x7745 x7470)
+(or x7745 x7469)
+(or x7744 x7743 (not x141) x142 (not x7470) (not x7469) (not x7745))
+(or (not x7745) (not x7746) (not x7738) x7747)
+(or (not x7747) x7745)
+(or (not x7747) x7746)
+(or (not x7747) x7738)
+(or x7748 (not x7739))
+(or x7748 (not x7740))
+(or x7748 (not x7741))
+(or x7748 (not x7742))
+(or x7748 (not x7743))
+(or x7739 x7740 x7741 x7742 x7743 (not x7748))
+(or x7746 (not x7739))
+(or x7746 (not x7740))
+(or x7746 (not x7741))
+(or x7746 x7744)
+(or x7746 x7743)
+(or x7739 x7740 x7741 (not x7744) (not x7743) (not x7746))
+(or x7744 x7743 (not x141) x142 (not x7470) (not x7469) x7739)
+(or (not x7739) (not x7744))
+(or (not x7739) (not x7743))
+(or (not x7739) x141)
+(or (not x7739) (not x142))
+(or (not x7739) x7470)
+(or (not x7739) x7469)
+(or x7749 (not x7739))
+(or x7749 (not x7744))
+(or x7749 x7743)
+(or x7739 x7744 (not x7743) (not x7749))
+(or (not x7749) (not x7746) (not x7748) x7750)
+(or (not x7750) x7749)
+(or (not x7750) x7746)
+(or (not x7750) x7748)
+(or x7751 (not x7586))
+(or x7751 (not x7752))
+(or x7751 (not x7753))
+(or x7751 (not x7694))
+(or x7751 (not x7674))
+(or x7751 (not x7696))
+(or x7751 (not x7677))
+(or x7751 (not x7673))
+(or x7751 (not x7674))
+(or x7751 (not x7675))
+(or x7751 (not x7676))
+(or x7751 (not x7677))
+(or x7751 (not x7678))
+(or x7586 x7752 x7753 x7694 x7674 x7696 x7677 x7673 x7674 x7675 x7676 x7677 x7678 (not x7751))
+(or (not x7577) (not x7578) (not x7751) x7754)
+(or (not x7754) x7577)
+(or (not x7754) x7578)
+(or (not x7754) x7751)
+(or x7755 (not x7470))
+(or x7755 (not x7469))
+(or x7470 x7469 (not x7755))
+(or x7470 x7469 x7756)
+(or (not x7756) (not x7470))
+(or (not x7756) (not x7469))
+(or x7757 (not x7756))
+(or x7757 (not x7470))
+(or x7757 x7469)
+(or x7756 x7470 (not x7469) (not x7757))
+(or x7758 (not x7759))
+(or x7758 (not x7760))
+(or x7758 (not x7761))
+(or x7758 (not x7762))
+(or x7758 (not x7763))
+(or x7758 (not x7764))
+(or x7758 (not x7695))
+(or x7758 (not x7765))
+(or x7758 (not x7766))
+(or x7758 (not x7767))
+(or x7758 (not x7768))
+(or x7758 (not x7772))
+(or x7759 x7760 x7761 x7762 x7763 x7764 x7695 x7765 x7766 x7767 x7768 x7772 (not x7758))
+(or (not x7773) (not x7774) (not x7775) (not x7776) (not x7777) (not x7778) (not x7779) (not x7780) (not x7781) (not x7782) (not x7783) (not x7758) x7784)
+(or (not x7784) x7773)
+(or (not x7784) x7774)
+(or (not x7784) x7775)
+(or (not x7784) x7776)
+(or (not x7784) x7777)
+(or (not x7784) x7778)
+(or (not x7784) x7779)
+(or (not x7784) x7780)
+(or (not x7784) x7781)
+(or (not x7784) x7782)
+(or (not x7784) x7783)
+(or (not x7784) x7758)
+(or x7785 (not x7759))
+(or x7785 (not x7760))
+(or x7785 (not x7761))
+(or x7785 (not x7762))
+(or x7785 (not x7763))
+(or x7785 (not x7764))
+(or x7785 (not x7695))
+(or x7785 (not x7765))
+(or x7785 (not x7766))
+(or x7785 (not x7767))
+(or x7785 (not x7768))
+(or x7785 (not x7771))
+(or x7759 x7760 x7761 x7762 x7763 x7764 x7695 x7765 x7766 x7767 x7768 x7771 (not x7785))
+(or x7786 x7787)
+(or x7786 (not x7788))
+(or (not x7787) x7788 (not x7786))
+(or (not x7786) (not x7787) x7789)
+(or (not x7789) x7786)
+(or (not x7789) x7787)
+(or x7790 (not x7759))
+(or x7790 (not x7760))
+(or x7790 (not x7761))
+(or x7790 (not x7762))
+(or x7790 (not x7763))
+(or x7790 (not x7764))
+(or x7790 (not x7695))
+(or x7790 (not x7765))
+(or x7790 (not x7772))
+(or x7790 (not x7771))
+(or x7790 (not x7770))
+(or x7790 x7769)
+(or x7790 (not x143))
+(or x7790 (not x142))
+(or x7790 (not x7789))
+(or x7759 x7760 x7761 x7762 x7763 x7764 x7695 x7765 x7772 x7771 x7770 (not x7769) x143 x142 x7789 (not x7790))
+(or x7791 (not x7759))
+(or x7791 (not x7760))
+(or x7791 (not x7761))
+(or x7791 (not x7762))
+(or x7791 (not x7763))
+(or x7791 (not x7764))
+(or x7791 (not x7772))
+(or x7791 (not x7771))
+(or x7791 x7770)
+(or x7791 x7769)
+(or x7791 x7792)
+(or x7791 x7793)
+(or x7791 x7794)
+(or x7759 x7760 x7761 x7762 x7763 x7764 x7772 x7771 (not x7770) (not x7769) (not x7792) (not x7793) (not x7794) (not x7791))
+(or x7795 (not x7759))
+(or x7795 (not x7760))
+(or x7795 (not x7761))
+(or x7795 (not x7762))
+(or x7795 (not x7772))
+(or x7795 (not x7771))
+(or x7795 x7770)
+(or x7795 (not x7769))
+(or x7795 (not x7796))
+(or x7795 x7797)
+(or x7795 x7798)
+(or x7759 x7760 x7761 x7762 x7772 x7771 (not x7770) x7769 x7796 (not x7797) (not x7798) (not x7795))
+(or x7799 (not x7759))
+(or x7799 (not x7772))
+(or x7799 (not x7771))
+(or x7799 (not x7770))
+(or x7799 (not x7769))
+(or x7799 (not x142))
+(or x7799 x7470)
+(or x7799 x7469)
+(or x7799 (not x7796))
+(or x7799 (not x7800))
+(or x7799 (not x7801))
+(or x7799 x7802)
+(or x7759 x7772 x7771 x7770 x7769 x142 (not x7470) (not x7469) x7796 x7800 x7801 (not x7802) (not x7799))
+(or x7803 x7804)
+(or x7803 x7805)
+(or x7803 x7806)
+(or (not x7804) (not x7805) (not x7806) (not x7803))
+(or (not x7803) (not x7804) x7807)
+(or (not x7807) x7803)
+(or (not x7807) x7804)
+(or x7808 x7809)
+(or x7808 (not x7807))
+(or (not x7809) x7807 (not x7808))
+(or (not x7808) (not x7809) x7810)
+(or (not x7810) x7808)
+(or (not x7810) x7809)
+(or x7811 (not x7772))
+(or x7811 (not x7771))
+(or x7811 (not x7770))
+(or x7811 (not x7769))
+(or x7811 (not x142))
+(or x7811 x7470)
+(or x7811 x7469)
+(or x7811 (not x7796))
+(or x7811 (not x7812))
+(or x7811 (not x7810))
+(or x7772 x7771 x7770 x7769 x142 (not x7470) (not x7469) x7796 x7812 x7810 (not x7811))
+(or (not x7811) (not x7799) (not x7775) (not x7776) (not x7795) (not x7778) (not x7791) (not x7780) (not x7790) (not x7783) (not x7785) x7813)
+(or (not x7813) x7811)
+(or (not x7813) x7799)
+(or (not x7813) x7775)
+(or (not x7813) x7776)
+(or (not x7813) x7795)
+(or (not x7813) x7778)
+(or (not x7813) x7791)
+(or (not x7813) x7780)
+(or (not x7813) x7790)
+(or (not x7813) x7783)
+(or (not x7813) x7785)
+(or x7814 (not x7759))
+(or x7814 (not x7760))
+(or x7814 (not x7761))
+(or x7814 (not x7762))
+(or x7814 (not x7763))
+(or x7814 (not x7764))
+(or x7814 (not x7695))
+(or x7814 (not x7765))
+(or x7814 (not x7766))
+(or x7814 (not x7767))
+(or x7814 (not x7768))
+(or x7814 (not x7770))
+(or x7759 x7760 x7761 x7762 x7763 x7764 x7695 x7765 x7766 x7767 x7768 x7770 (not x7814))
+(or x7782 (not x7759))
+(or x7782 (not x7760))
+(or x7782 (not x7761))
+(or x7782 (not x7762))
+(or x7782 (not x7763))
+(or x7782 (not x7764))
+(or x7782 (not x7695))
+(or x7782 (not x7765))
+(or x7782 (not x7766))
+(or x7782 (not x7772))
+(or x7782 x7771)
+(or x7782 x7770)
+(or x7782 (not x7769))
+(or x7782 (not x143))
+(or x7782 (not x142))
+(or x7759 x7760 x7761 x7762 x7763 x7764 x7695 x7765 x7766 x7772 (not x7771) (not x7770) x7769 x143 x142 (not x7782))
+(or x7815 x7788)
+(or x7815 x7816)
+(or (not x7788) (not x7816) (not x7815))
+(or (not x7815) (not x7788) x7817)
+(or (not x7817) x7815)
+(or (not x7817) x7788)
+(or x7818 (not x7759))
+(or x7818 (not x7760))
+(or x7818 (not x7761))
+(or x7818 (not x7762))
+(or x7818 (not x7763))
+(or x7818 (not x7764))
+(or x7818 (not x7695))
+(or x7818 (not x7765))
+(or x7818 (not x7772))
+(or x7818 (not x7771))
+(or x7818 (not x7770))
+(or x7818 x7769)
+(or x7818 (not x143))
+(or x7818 (not x142))
+(or x7818 x7787)
+(or x7818 (not x7817))
+(or x7759 x7760 x7761 x7762 x7763 x7764 x7695 x7765 x7772 x7771 x7770 (not x7769) x143 x142 (not x7787) x7817 (not x7818))
+(or x7819 x7794)
+(or x7819 (not x7820))
+(or (not x7794) x7820 (not x7819))
+(or (not x7819) (not x7794) x7821)
+(or (not x7821) x7819)
+(or (not x7821) x7794)
+(or x7822 x7792)
+(or x7822 x7793)
+(or x7822 (not x7821))
+(or (not x7792) (not x7793) x7821 (not x7822))
+(or (not x7822) (not x7792) x7823)
+(or (not x7823) x7822)
+(or (not x7823) x7792)
+(or x7824 (not x7759))
+(or x7824 (not x7760))
+(or x7824 (not x7761))
+(or x7824 (not x7762))
+(or x7824 (not x7763))
+(or x7824 (not x7764))
+(or x7824 (not x7772))
+(or x7824 (not x7771))
+(or x7824 x7770)
+(or x7824 x7769)
+(or x7824 (not x7823))
+(or x7759 x7760 x7761 x7762 x7763 x7764 x7772 x7771 (not x7770) (not x7769) x7823 (not x7824))
+(or x7825 x7798)
+(or x7825 (not x7826))
+(or (not x7798) x7826 (not x7825))
+(or (not x7825) (not x7798) x7827)
+(or (not x7827) x7825)
+(or (not x7827) x7798)
+(or x7828 (not x7759))
+(or x7828 (not x7760))
+(or x7828 (not x7761))
+(or x7828 (not x7762))
+(or x7828 (not x7772))
+(or x7828 (not x7771))
+(or x7828 x7770)
+(or x7828 (not x7769))
+(or x7828 (not x7796))
+(or x7828 x7797)
+(or x7828 (not x7827))
+(or x7759 x7760 x7761 x7762 x7772 x7771 (not x7770) x7769 x7796 (not x7797) x7827 (not x7828))
+(or x7829 (not x7759))
+(or x7829 (not x7772))
+(or x7829 (not x7771))
+(or x7829 (not x7770))
+(or x7829 (not x7769))
+(or x7829 (not x142))
+(or x7829 x7470)
+(or x7829 x7469)
+(or x7829 (not x7796))
+(or x7829 (not x7800))
+(or x7829 (not x7801))
+(or x7829 (not x7802))
+(or x7759 x7772 x7771 x7770 x7769 x142 (not x7470) (not x7469) x7796 x7800 x7801 x7802 (not x7829))
+(or x7830 x7809)
+(or x7830 x7804)
+(or x7830 x7805)
+(or x7830 (not x7806))
+(or (not x7809) (not x7804) (not x7805) x7806 (not x7830))
+(or (not x7830) (not x7809) x7831)
+(or (not x7831) x7830)
+(or (not x7831) x7809)
+(or x7832 (not x7772))
+(or x7832 (not x7771))
+(or x7832 (not x7770))
+(or x7832 (not x7769))
+(or x7832 (not x142))
+(or x7832 x7470)
+(or x7832 x7469)
+(or x7832 (not x7796))
+(or x7832 (not x7812))
+(or x7832 (not x7831))
+(or x7772 x7771 x7770 x7769 x142 (not x7470) (not x7469) x7796 x7812 x7831 (not x7832))
+(or (not x7832) (not x7829) (not x7776) (not x7828) (not x7824) (not x7780) (not x7818) (not x7782) (not x7783) (not x7814) x7833)
+(or (not x7833) x7832)
+(or (not x7833) x7829)
+(or (not x7833) x7776)
+(or (not x7833) x7828)
+(or (not x7833) x7824)
+(or (not x7833) x7780)
+(or (not x7833) x7818)
+(or (not x7833) x7782)
+(or (not x7833) x7783)
+(or (not x7833) x7814)
+(or x7834 (not x7676))
+(or x7834 (not x7678))
+(or x7834 (not x7677))
+(or x7676 x7678 x7677 (not x7834))
+(or (not x7834) (not x142) x7768)
+(or (not x7768) x7834)
+(or (not x7768) x142)
+(or x7835 (not x7759))
+(or x7835 (not x7760))
+(or x7835 (not x7761))
+(or x7835 (not x7762))
+(or x7835 (not x7763))
+(or x7835 (not x7764))
+(or x7835 (not x7695))
+(or x7835 (not x7765))
+(or x7835 (not x7766))
+(or x7835 (not x7767))
+(or x7835 (not x7768))
+(or x7835 (not x7769))
+(or x7759 x7760 x7761 x7762 x7763 x7764 x7695 x7765 x7766 x7767 x7768 x7769 (not x7835))
+(or x7660 (not x7772))
+(or x7660 x7771)
+(or x7660 (not x7770))
+(or x7660 (not x7769))
+(or x7772 (not x7771) x7770 x7769 (not x7660))
+(or (not x7660) (not x7661) (not x7625) x7836)
+(or (not x7836) x7660)
+(or (not x7836) x7661)
+(or (not x7836) x7625)
+(or x7772 (not x7771) (not x7770) x7769 x143 x142 x7767)
+(or (not x7767) (not x7772))
+(or (not x7767) x7771)
+(or (not x7767) x7770)
+(or (not x7767) (not x7769))
+(or (not x7767) (not x143))
+(or (not x7767) (not x142))
+(or x7772 x7771 x7770 (not x7769) x143 x142 x7766)
+(or (not x7766) (not x7772))
+(or (not x7766) (not x7771))
+(or (not x7766) (not x7770))
+(or (not x7766) x7769)
+(or (not x7766) (not x143))
+(or (not x7766) (not x142))
+(or x7783 (not x7759))
+(or x7783 (not x7760))
+(or x7783 (not x7761))
+(or x7783 (not x7762))
+(or x7783 (not x7763))
+(or x7783 (not x7764))
+(or x7783 (not x7695))
+(or x7783 (not x7765))
+(or x7783 (not x7766))
+(or x7783 (not x7767))
+(or x7783 (not x7836))
+(or x7783 x142)
+(or x7759 x7760 x7761 x7762 x7763 x7764 x7695 x7765 x7766 x7767 x7836 (not x142) (not x7783))
+(or x7837 x7816)
+(or x7837 x7838)
+(or (not x7816) (not x7838) (not x7837))
+(or (not x7837) (not x7816) x7839)
+(or (not x7839) x7837)
+(or (not x7839) x7816)
+(or x7772 x7771 x7770 (not x7769) x143 (not x142) x7765)
+(or (not x7765) (not x7772))
+(or (not x7765) (not x7771))
+(or (not x7765) (not x7770))
+(or (not x7765) x7769)
+(or (not x7765) (not x143))
+(or (not x7765) x142)
+(or x7781 (not x7759))
+(or x7781 (not x7760))
+(or x7781 (not x7761))
+(or x7781 (not x7762))
+(or x7781 (not x7763))
+(or x7781 (not x7764))
+(or x7781 (not x7695))
+(or x7781 (not x7765))
+(or x7781 (not x7772))
+(or x7781 (not x7771))
+(or x7781 (not x7770))
+(or x7781 x7769)
+(or x7781 (not x143))
+(or x7781 (not x142))
+(or x7759 x7760 x7761 x7762 x7763 x7764 x7695 x7765 x7772 x7771 x7770 (not x7769) x143 x142 (not x7781))
+(or x7840 (not x7759))
+(or x7840 (not x7760))
+(or x7840 (not x7761))
+(or x7840 (not x7762))
+(or x7840 (not x7763))
+(or x7840 (not x7764))
+(or x7840 (not x7695))
+(or x7840 (not x7765))
+(or x7840 (not x7772))
+(or x7840 (not x7771))
+(or x7840 (not x7770))
+(or x7840 x7769)
+(or x7840 (not x143))
+(or x7840 (not x142))
+(or x7840 x7787)
+(or x7840 x7788)
+(or x7840 (not x7839))
+(or x7759 x7760 x7761 x7762 x7763 x7764 x7695 x7765 x7772 x7771 x7770 (not x7769) x143 x142 (not x7787) (not x7788) x7839 (not x7840))
+(or x7780 (not x7759))
+(or x7780 (not x7760))
+(or x7780 (not x7761))
+(or x7780 (not x7762))
+(or x7780 (not x7763))
+(or x7780 (not x7764))
+(or x7780 (not x7695))
+(or x7780 (not x7772))
+(or x7780 (not x7771))
+(or x7780 (not x7770))
+(or x7780 x7769)
+(or x7780 (not x143))
+(or x7780 x142)
+(or x7759 x7760 x7761 x7762 x7763 x7764 x7695 x7772 x7771 x7770 (not x7769) x143 (not x142) (not x7780))
+(or x7841 x7793)
+(or x7841 (not x7794))
+(or (not x7793) x7794 (not x7841))
+(or (not x7841) (not x7793) x7842)
+(or (not x7842) x7841)
+(or (not x7842) x7793)
+(or x7779 (not x7759))
+(or x7779 (not x7760))
+(or x7779 (not x7761))
+(or x7779 (not x7762))
+(or x7779 (not x7763))
+(or x7779 (not x7764))
+(or x7779 (not x7772))
+(or x7779 (not x7771))
+(or x7779 x7770)
+(or x7779 x7769)
+(or x7759 x7760 x7761 x7762 x7763 x7764 x7772 x7771 (not x7770) (not x7769) (not x7779))
+(or x7843 (not x7759))
+(or x7843 (not x7760))
+(or x7843 (not x7761))
+(or x7843 (not x7762))
+(or x7843 (not x7763))
+(or x7843 (not x7764))
+(or x7843 (not x7772))
+(or x7843 (not x7771))
+(or x7843 x7770)
+(or x7843 x7769)
+(or x7843 x7792)
+(or x7843 (not x7842))
+(or x7759 x7760 x7761 x7762 x7763 x7764 x7772 x7771 (not x7770) (not x7769) (not x7792) x7842 (not x7843))
+(or x7772 x7771 (not x7770) x7769 (not x7844) x7763)
+(or (not x7763) (not x7772))
+(or (not x7763) (not x7771))
+(or (not x7763) x7770)
+(or (not x7763) (not x7769))
+(or (not x7763) x7844)
+(or x7778 (not x7759))
+(or x7778 (not x7760))
+(or x7778 (not x7761))
+(or x7778 (not x7762))
+(or x7778 (not x7763))
+(or x7778 (not x7772))
+(or x7778 (not x7771))
+(or x7778 x7770)
+(or x7778 (not x7769))
+(or x7759 x7760 x7761 x7762 x7763 x7772 x7771 (not x7770) x7769 (not x7778))
+(or x7845 x7797)
+(or x7845 x7798)
+(or x7845 x7826)
+(or x7845 x7846)
+(or (not x7797) (not x7798) (not x7826) (not x7846) (not x7845))
+(or (not x7845) (not x7797) x7847)
+(or (not x7847) x7845)
+(or (not x7847) x7797)
+(or x7772 x7771 (not x7770) x7769 (not x142) (not x143) x7762)
+(or (not x7762) (not x7772))
+(or (not x7762) (not x7771))
+(or (not x7762) x7770)
+(or (not x7762) (not x7769))
+(or (not x7762) x142)
+(or (not x7762) x143)
+(or x7777 (not x7759))
+(or x7777 (not x7760))
+(or x7777 (not x7761))
+(or x7777 (not x7762))
+(or x7777 (not x7772))
+(or x7777 (not x7771))
+(or x7777 x7770)
+(or x7777 (not x7769))
+(or x7777 (not x7796))
+(or x7759 x7760 x7761 x7762 x7772 x7771 (not x7770) x7769 x7796 (not x7777))
+(or x7848 (not x7759))
+(or x7848 (not x7760))
+(or x7848 (not x7761))
+(or x7848 (not x7762))
+(or x7848 (not x7772))
+(or x7848 (not x7771))
+(or x7848 x7770)
+(or x7848 (not x7769))
+(or x7848 (not x7796))
+(or x7848 (not x7847))
+(or x7759 x7760 x7761 x7762 x7772 x7771 (not x7770) x7769 x7796 x7847 (not x7848))
+(or x7776 (not x7759))
+(or x7776 (not x7760))
+(or x7776 (not x7761))
+(or x7776 (not x7772))
+(or x7776 (not x7771))
+(or x7776 x7770)
+(or x7776 (not x7769))
+(or x7776 x142)
+(or x7776 x143)
+(or x7759 x7760 x7761 x7772 x7771 (not x7770) x7769 (not x142) (not x143) (not x7776))
+(or x7772 x7771 x7770 x7769 x142 (not x7470) (not x7469) (not x7844) (not x7849) (not x7850) x7760)
+(or (not x7760) (not x7772))
+(or (not x7760) (not x7771))
+(or (not x7760) (not x7770))
+(or (not x7760) (not x7769))
+(or (not x7760) (not x142))
+(or (not x7760) x7470)
+(or (not x7760) x7469)
+(or (not x7760) x7844)
+(or (not x7760) x7849)
+(or (not x7760) x7850)
+(or x7775 (not x7759))
+(or x7775 (not x7760))
+(or x7775 (not x7772))
+(or x7775 (not x7771))
+(or x7775 (not x7770))
+(or x7775 (not x7769))
+(or x7775 (not x142))
+(or x7775 x7470)
+(or x7775 x7469)
+(or x7759 x7760 x7772 x7771 x7770 x7769 x142 (not x7470) (not x7469) (not x7775))
+(or (not x7731) (not x7730) x7729)
+(or (not x7729) x7731)
+(or (not x7729) x7730)
+(or (not x7731) x7730 x7728)
+(or (not x7728) x7731)
+(or (not x7728) (not x7730))
+(or x7731 (not x7730) x7727)
+(or (not x7727) (not x7731))
+(or (not x7727) x7730)
+(or x7731 x7730 (not x141) x142 x7851)
+(or (not x7851) (not x7731))
+(or (not x7851) (not x7730))
+(or (not x7851) x141)
+(or (not x7851) (not x142))
+(or x7844 (not x7851))
+(or x7844 (not x7727))
+(or x7844 (not x7728))
+(or x7844 (not x7729))
+(or x7851 x7727 x7728 x7729 (not x7844))
+(or x7772 x7771 x7770 x7769 x142 (not x7470) (not x7469) x7761)
+(or (not x7761) (not x7772))
+(or (not x7761) (not x7771))
+(or (not x7761) (not x7770))
+(or (not x7761) (not x7769))
+(or (not x7761) (not x142))
+(or (not x7761) x7470)
+(or (not x7761) x7469)
+(or x7772 x7771 x7770 x7769 x142 (not x7470) (not x7469) (not x7844) (not x7852) x7759)
+(or (not x7759) (not x7772))
+(or (not x7759) (not x7771))
+(or (not x7759) (not x7770))
+(or (not x7759) (not x7769))
+(or (not x7759) (not x142))
+(or (not x7759) x7470)
+(or (not x7759) x7469)
+(or (not x7759) x7844)
+(or (not x7759) x7852)
+(or x7774 (not x7759))
+(or x7774 (not x7772))
+(or x7774 (not x7771))
+(or x7774 (not x7770))
+(or x7774 (not x7769))
+(or x7774 (not x142))
+(or x7774 x7470)
+(or x7774 x7469)
+(or x7774 (not x7796))
+(or x7774 (not x7800))
+(or x7774 (not x7801))
+(or x7759 x7772 x7771 x7770 x7769 x142 (not x7470) (not x7469) x7796 x7800 x7801 (not x7774))
+(or x7853 (not x7759))
+(or x7853 (not x7772))
+(or x7853 (not x7771))
+(or x7853 (not x7770))
+(or x7853 (not x7769))
+(or x7853 (not x142))
+(or x7853 x7470)
+(or x7853 x7469)
+(or x7853 (not x7796))
+(or x7853 (not x7800))
+(or x7853 (not x7801))
+(or x7853 x7802)
+(or x7853 x7854)
+(or x7759 x7772 x7771 x7770 x7769 x142 (not x7470) (not x7469) x7796 x7800 x7801 (not x7802) (not x7854) (not x7853))
+(or x7855 x7805)
+(or x7855 x7806)
+(or (not x7805) (not x7806) (not x7855))
+(or (not x7855) (not x7805) x7856)
+(or (not x7856) x7855)
+(or (not x7856) x7805)
+(or x7857 x7731)
+(or x7857 x7730)
+(or (not x7731) (not x7730) (not x7857))
+(or x7858 x7731)
+(or x7858 (not x7730))
+(or (not x7731) x7730 (not x7858))
+(or x7859 (not x7731))
+(or x7859 x7730)
+(or x7731 (not x7730) (not x7859))
+(or x7860 (not x7731))
+(or x7860 (not x7730))
+(or x7860 x141)
+(or x7860 (not x142))
+(or x7731 x7730 (not x141) x142 (not x7860))
+(or (not x7860) (not x7859) (not x7858) (not x7857) x7796)
+(or (not x7796) x7860)
+(or (not x7796) x7859)
+(or (not x7796) x7858)
+(or (not x7796) x7857)
+(or x7773 (not x7772))
+(or x7773 (not x7771))
+(or x7773 (not x7770))
+(or x7773 (not x7769))
+(or x7773 (not x142))
+(or x7773 x7470)
+(or x7773 x7469)
+(or x7773 (not x7796))
+(or x7773 (not x7812))
+(or x7772 x7771 x7770 x7769 x142 (not x7470) (not x7469) x7796 x7812 (not x7773))
+(or x7861 (not x7772))
+(or x7861 (not x7771))
+(or x7861 (not x7770))
+(or x7861 (not x7769))
+(or x7861 (not x142))
+(or x7861 x7470)
+(or x7861 x7469)
+(or x7861 (not x7796))
+(or x7861 (not x7812))
+(or x7861 x7809)
+(or x7861 x7804)
+(or x7861 (not x7856))
+(or x7772 x7771 x7770 x7769 x142 (not x7470) (not x7469) x7796 x7812 (not x7809) (not x7804) x7856 (not x7861))
+(or (not x7861) (not x7853) (not x7775) (not x7776) (not x7848) (not x7778) (not x7843) (not x7780) (not x7840) (not x7783) (not x7835) x7862)
+(or (not x7862) x7861)
+(or (not x7862) x7853)
+(or (not x7862) x7775)
+(or (not x7862) x7776)
+(or (not x7862) x7848)
+(or (not x7862) x7778)
+(or (not x7862) x7843)
+(or (not x7862) x7780)
+(or (not x7862) x7840)
+(or (not x7862) x7783)
+(or (not x7862) x7835)
+(or x7863 (not x7864))
+(or x7863 (not x7865))
+(or x7863 (not x7866))
+(or x7863 (not x7867))
+(or x7863 (not x7868))
+(or x7863 (not x7869))
+(or x7863 (not x7693))
+(or x7863 (not x7870))
+(or x7863 (not x7871))
+(or x7863 (not x7872))
+(or x7863 (not x7873))
+(or x7863 (not x7877))
+(or x7864 x7865 x7866 x7867 x7868 x7869 x7693 x7870 x7871 x7872 x7873 x7877 (not x7863))
+(or (not x7878) (not x7879) (not x7880) (not x7881) (not x7882) (not x7883) (not x7884) (not x7885) (not x7886) (not x7887) (not x7888) (not x7863) x7889)
+(or (not x7889) x7878)
+(or (not x7889) x7879)
+(or (not x7889) x7880)
+(or (not x7889) x7881)
+(or (not x7889) x7882)
+(or (not x7889) x7883)
+(or (not x7889) x7884)
+(or (not x7889) x7885)
+(or (not x7889) x7886)
+(or (not x7889) x7887)
+(or (not x7889) x7888)
+(or (not x7889) x7863)
+(or x7890 (not x7864))
+(or x7890 (not x7865))
+(or x7890 (not x7866))
+(or x7890 (not x7867))
+(or x7890 (not x7868))
+(or x7890 (not x7869))
+(or x7890 (not x7693))
+(or x7890 (not x7870))
+(or x7890 (not x7871))
+(or x7890 (not x7872))
+(or x7890 (not x7873))
+(or x7890 (not x7876))
+(or x7864 x7865 x7866 x7867 x7868 x7869 x7693 x7870 x7871 x7872 x7873 x7876 (not x7890))
+(or x7891 x7892)
+(or x7891 (not x7893))
+(or (not x7892) x7893 (not x7891))
+(or (not x7891) (not x7892) x7894)
+(or (not x7894) x7891)
+(or (not x7894) x7892)
+(or x7895 (not x7864))
+(or x7895 (not x7865))
+(or x7895 (not x7866))
+(or x7895 (not x7867))
+(or x7895 (not x7868))
+(or x7895 (not x7869))
+(or x7895 (not x7693))
+(or x7895 (not x7870))
+(or x7895 (not x7877))
+(or x7895 (not x7876))
+(or x7895 (not x7875))
+(or x7895 x7874)
+(or x7895 (not x143))
+(or x7895 (not x142))
+(or x7895 (not x7894))
+(or x7864 x7865 x7866 x7867 x7868 x7869 x7693 x7870 x7877 x7876 x7875 (not x7874) x143 x142 x7894 (not x7895))
+(or x7896 (not x7864))
+(or x7896 (not x7865))
+(or x7896 (not x7866))
+(or x7896 (not x7867))
+(or x7896 (not x7868))
+(or x7896 (not x7869))
+(or x7896 (not x7877))
+(or x7896 (not x7876))
+(or x7896 x7875)
+(or x7896 x7874)
+(or x7896 x7897)
+(or x7896 x7898)
+(or x7896 x7899)
+(or x7864 x7865 x7866 x7867 x7868 x7869 x7877 x7876 (not x7875) (not x7874) (not x7897) (not x7898) (not x7899) (not x7896))
+(or x7900 (not x7864))
+(or x7900 (not x7865))
+(or x7900 (not x7866))
+(or x7900 (not x7867))
+(or x7900 (not x7877))
+(or x7900 (not x7876))
+(or x7900 x7875)
+(or x7900 (not x7874))
+(or x7900 (not x7901))
+(or x7900 x7902)
+(or x7900 x7903)
+(or x7864 x7865 x7866 x7867 x7877 x7876 (not x7875) x7874 x7901 (not x7902) (not x7903) (not x7900))
+(or x7904 (not x7864))
+(or x7904 (not x7877))
+(or x7904 (not x7876))
+(or x7904 (not x7875))
+(or x7904 (not x7874))
+(or x7904 (not x142))
+(or x7904 x7470)
+(or x7904 x7469)
+(or x7904 (not x7901))
+(or x7904 (not x7800))
+(or x7904 (not x7801))
+(or x7904 x7905)
+(or x7864 x7877 x7876 x7875 x7874 x142 (not x7470) (not x7469) x7901 x7800 x7801 (not x7905) (not x7904))
+(or x7906 x7907)
+(or x7906 x7908)
+(or x7906 x7909)
+(or (not x7907) (not x7908) (not x7909) (not x7906))
+(or (not x7906) (not x7907) x7910)
+(or (not x7910) x7906)
+(or (not x7910) x7907)
+(or x7911 x7912)
+(or x7911 (not x7910))
+(or (not x7912) x7910 (not x7911))
+(or (not x7911) (not x7912) x7913)
+(or (not x7913) x7911)
+(or (not x7913) x7912)
+(or x7914 (not x7877))
+(or x7914 (not x7876))
+(or x7914 (not x7875))
+(or x7914 (not x7874))
+(or x7914 (not x142))
+(or x7914 x7470)
+(or x7914 x7469)
+(or x7914 (not x7901))
+(or x7914 (not x7812))
+(or x7914 (not x7913))
+(or x7877 x7876 x7875 x7874 x142 (not x7470) (not x7469) x7901 x7812 x7913 (not x7914))
+(or (not x7914) (not x7904) (not x7880) (not x7881) (not x7900) (not x7883) (not x7896) (not x7885) (not x7895) (not x7888) (not x7890) x7915)
+(or (not x7915) x7914)
+(or (not x7915) x7904)
+(or (not x7915) x7880)
+(or (not x7915) x7881)
+(or (not x7915) x7900)
+(or (not x7915) x7883)
+(or (not x7915) x7896)
+(or (not x7915) x7885)
+(or (not x7915) x7895)
+(or (not x7915) x7888)
+(or (not x7915) x7890)
+(or x7916 (not x7864))
+(or x7916 (not x7865))
+(or x7916 (not x7866))
+(or x7916 (not x7867))
+(or x7916 (not x7868))
+(or x7916 (not x7869))
+(or x7916 (not x7693))
+(or x7916 (not x7870))
+(or x7916 (not x7871))
+(or x7916 (not x7872))
+(or x7916 (not x7873))
+(or x7916 (not x7875))
+(or x7864 x7865 x7866 x7867 x7868 x7869 x7693 x7870 x7871 x7872 x7873 x7875 (not x7916))
+(or x7887 (not x7864))
+(or x7887 (not x7865))
+(or x7887 (not x7866))
+(or x7887 (not x7867))
+(or x7887 (not x7868))
+(or x7887 (not x7869))
+(or x7887 (not x7693))
+(or x7887 (not x7870))
+(or x7887 (not x7871))
+(or x7887 (not x7877))
+(or x7887 x7876)
+(or x7887 x7875)
+(or x7887 (not x7874))
+(or x7887 (not x143))
+(or x7887 (not x142))
+(or x7864 x7865 x7866 x7867 x7868 x7869 x7693 x7870 x7871 x7877 (not x7876) (not x7875) x7874 x143 x142 (not x7887))
+(or x7917 x7893)
+(or x7917 x7918)
+(or (not x7893) (not x7918) (not x7917))
+(or (not x7917) (not x7893) x7919)
+(or (not x7919) x7917)
+(or (not x7919) x7893)
+(or x7920 (not x7864))
+(or x7920 (not x7865))
+(or x7920 (not x7866))
+(or x7920 (not x7867))
+(or x7920 (not x7868))
+(or x7920 (not x7869))
+(or x7920 (not x7693))
+(or x7920 (not x7870))
+(or x7920 (not x7877))
+(or x7920 (not x7876))
+(or x7920 (not x7875))
+(or x7920 x7874)
+(or x7920 (not x143))
+(or x7920 (not x142))
+(or x7920 x7892)
+(or x7920 (not x7919))
+(or x7864 x7865 x7866 x7867 x7868 x7869 x7693 x7870 x7877 x7876 x7875 (not x7874) x143 x142 (not x7892) x7919 (not x7920))
+(or x7921 x7899)
+(or x7921 (not x7922))
+(or (not x7899) x7922 (not x7921))
+(or (not x7921) (not x7899) x7923)
+(or (not x7923) x7921)
+(or (not x7923) x7899)
+(or x7924 x7897)
+(or x7924 x7898)
+(or x7924 (not x7923))
+(or (not x7897) (not x7898) x7923 (not x7924))
+(or (not x7924) (not x7897) x7925)
+(or (not x7925) x7924)
+(or (not x7925) x7897)
+(or x7926 (not x7864))
+(or x7926 (not x7865))
+(or x7926 (not x7866))
+(or x7926 (not x7867))
+(or x7926 (not x7868))
+(or x7926 (not x7869))
+(or x7926 (not x7877))
+(or x7926 (not x7876))
+(or x7926 x7875)
+(or x7926 x7874)
+(or x7926 (not x7925))
+(or x7864 x7865 x7866 x7867 x7868 x7869 x7877 x7876 (not x7875) (not x7874) x7925 (not x7926))
+(or x7927 x7903)
+(or x7927 (not x7928))
+(or (not x7903) x7928 (not x7927))
+(or (not x7927) (not x7903) x7929)
+(or (not x7929) x7927)
+(or (not x7929) x7903)
+(or x7930 (not x7864))
+(or x7930 (not x7865))
+(or x7930 (not x7866))
+(or x7930 (not x7867))
+(or x7930 (not x7877))
+(or x7930 (not x7876))
+(or x7930 x7875)
+(or x7930 (not x7874))
+(or x7930 (not x7901))
+(or x7930 x7902)
+(or x7930 (not x7929))
+(or x7864 x7865 x7866 x7867 x7877 x7876 (not x7875) x7874 x7901 (not x7902) x7929 (not x7930))
+(or x7931 (not x7864))
+(or x7931 (not x7877))
+(or x7931 (not x7876))
+(or x7931 (not x7875))
+(or x7931 (not x7874))
+(or x7931 (not x142))
+(or x7931 x7470)
+(or x7931 x7469)
+(or x7931 (not x7901))
+(or x7931 (not x7800))
+(or x7931 (not x7801))
+(or x7931 (not x7905))
+(or x7864 x7877 x7876 x7875 x7874 x142 (not x7470) (not x7469) x7901 x7800 x7801 x7905 (not x7931))
+(or x7932 x7912)
+(or x7932 x7907)
+(or x7932 x7908)
+(or x7932 (not x7909))
+(or (not x7912) (not x7907) (not x7908) x7909 (not x7932))
+(or (not x7932) (not x7912) x7933)
+(or (not x7933) x7932)
+(or (not x7933) x7912)
+(or x7934 (not x7877))
+(or x7934 (not x7876))
+(or x7934 (not x7875))
+(or x7934 (not x7874))
+(or x7934 (not x142))
+(or x7934 x7470)
+(or x7934 x7469)
+(or x7934 (not x7901))
+(or x7934 (not x7812))
+(or x7934 (not x7933))
+(or x7877 x7876 x7875 x7874 x142 (not x7470) (not x7469) x7901 x7812 x7933 (not x7934))
+(or (not x7934) (not x7931) (not x7881) (not x7930) (not x7926) (not x7885) (not x7920) (not x7887) (not x7888) (not x7916) x7935)
+(or (not x7935) x7934)
+(or (not x7935) x7931)
+(or (not x7935) x7881)
+(or (not x7935) x7930)
+(or (not x7935) x7926)
+(or (not x7935) x7885)
+(or (not x7935) x7920)
+(or (not x7935) x7887)
+(or (not x7935) x7888)
+(or (not x7935) x7916)
+(or x7936 (not x7673))
+(or x7936 (not x7675))
+(or x7936 (not x7674))
+(or x7673 x7675 x7674 (not x7936))
+(or (not x7936) (not x142) x7873)
+(or (not x7873) x7936)
+(or (not x7873) x142)
+(or x7937 (not x7864))
+(or x7937 (not x7865))
+(or x7937 (not x7866))
+(or x7937 (not x7867))
+(or x7937 (not x7868))
+(or x7937 (not x7869))
+(or x7937 (not x7693))
+(or x7937 (not x7870))
+(or x7937 (not x7871))
+(or x7937 (not x7872))
+(or x7937 (not x7873))
+(or x7937 (not x7874))
+(or x7864 x7865 x7866 x7867 x7868 x7869 x7693 x7870 x7871 x7872 x7873 x7874 (not x7937))
+(or x7658 (not x7877))
+(or x7658 x7876)
+(or x7658 (not x7875))
+(or x7658 (not x7874))
+(or x7877 (not x7876) x7875 x7874 (not x7658))
+(or (not x7658) (not x7659) (not x7623) x7938)
+(or (not x7938) x7658)
+(or (not x7938) x7659)
+(or (not x7938) x7623)
+(or x7877 (not x7876) (not x7875) x7874 x143 x142 x7872)
+(or (not x7872) (not x7877))
+(or (not x7872) x7876)
+(or (not x7872) x7875)
+(or (not x7872) (not x7874))
+(or (not x7872) (not x143))
+(or (not x7872) (not x142))
+(or x7877 x7876 x7875 (not x7874) x143 x142 x7871)
+(or (not x7871) (not x7877))
+(or (not x7871) (not x7876))
+(or (not x7871) (not x7875))
+(or (not x7871) x7874)
+(or (not x7871) (not x143))
+(or (not x7871) (not x142))
+(or x7888 (not x7864))
+(or x7888 (not x7865))
+(or x7888 (not x7866))
+(or x7888 (not x7867))
+(or x7888 (not x7868))
+(or x7888 (not x7869))
+(or x7888 (not x7693))
+(or x7888 (not x7870))
+(or x7888 (not x7871))
+(or x7888 (not x7872))
+(or x7888 (not x7938))
+(or x7888 x142)
+(or x7864 x7865 x7866 x7867 x7868 x7869 x7693 x7870 x7871 x7872 x7938 (not x142) (not x7888))
+(or x7939 x7918)
+(or x7939 x7940)
+(or (not x7918) (not x7940) (not x7939))
+(or (not x7939) (not x7918) x7941)
+(or (not x7941) x7939)
+(or (not x7941) x7918)
+(or x7877 x7876 x7875 (not x7874) x143 (not x142) x7870)
+(or (not x7870) (not x7877))
+(or (not x7870) (not x7876))
+(or (not x7870) (not x7875))
+(or (not x7870) x7874)
+(or (not x7870) (not x143))
+(or (not x7870) x142)
+(or x7886 (not x7864))
+(or x7886 (not x7865))
+(or x7886 (not x7866))
+(or x7886 (not x7867))
+(or x7886 (not x7868))
+(or x7886 (not x7869))
+(or x7886 (not x7693))
+(or x7886 (not x7870))
+(or x7886 (not x7877))
+(or x7886 (not x7876))
+(or x7886 (not x7875))
+(or x7886 x7874)
+(or x7886 (not x143))
+(or x7886 (not x142))
+(or x7864 x7865 x7866 x7867 x7868 x7869 x7693 x7870 x7877 x7876 x7875 (not x7874) x143 x142 (not x7886))
+(or x7942 (not x7864))
+(or x7942 (not x7865))
+(or x7942 (not x7866))
+(or x7942 (not x7867))
+(or x7942 (not x7868))
+(or x7942 (not x7869))
+(or x7942 (not x7693))
+(or x7942 (not x7870))
+(or x7942 (not x7877))
+(or x7942 (not x7876))
+(or x7942 (not x7875))
+(or x7942 x7874)
+(or x7942 (not x143))
+(or x7942 (not x142))
+(or x7942 x7892)
+(or x7942 x7893)
+(or x7942 (not x7941))
+(or x7864 x7865 x7866 x7867 x7868 x7869 x7693 x7870 x7877 x7876 x7875 (not x7874) x143 x142 (not x7892) (not x7893) x7941 (not x7942))
+(or x7885 (not x7864))
+(or x7885 (not x7865))
+(or x7885 (not x7866))
+(or x7885 (not x7867))
+(or x7885 (not x7868))
+(or x7885 (not x7869))
+(or x7885 (not x7693))
+(or x7885 (not x7877))
+(or x7885 (not x7876))
+(or x7885 (not x7875))
+(or x7885 x7874)
+(or x7885 (not x143))
+(or x7885 x142)
+(or x7864 x7865 x7866 x7867 x7868 x7869 x7693 x7877 x7876 x7875 (not x7874) x143 (not x142) (not x7885))
+(or x7943 x7898)
+(or x7943 (not x7899))
+(or (not x7898) x7899 (not x7943))
+(or (not x7943) (not x7898) x7944)
+(or (not x7944) x7943)
+(or (not x7944) x7898)
+(or x7884 (not x7864))
+(or x7884 (not x7865))
+(or x7884 (not x7866))
+(or x7884 (not x7867))
+(or x7884 (not x7868))
+(or x7884 (not x7869))
+(or x7884 (not x7877))
+(or x7884 (not x7876))
+(or x7884 x7875)
+(or x7884 x7874)
+(or x7864 x7865 x7866 x7867 x7868 x7869 x7877 x7876 (not x7875) (not x7874) (not x7884))
+(or x7945 (not x7864))
+(or x7945 (not x7865))
+(or x7945 (not x7866))
+(or x7945 (not x7867))
+(or x7945 (not x7868))
+(or x7945 (not x7869))
+(or x7945 (not x7877))
+(or x7945 (not x7876))
+(or x7945 x7875)
+(or x7945 x7874)
+(or x7945 x7897)
+(or x7945 (not x7944))
+(or x7864 x7865 x7866 x7867 x7868 x7869 x7877 x7876 (not x7875) (not x7874) (not x7897) x7944 (not x7945))
+(or x7877 x7876 (not x7875) x7874 (not x7946) x7868)
+(or (not x7868) (not x7877))
+(or (not x7868) (not x7876))
+(or (not x7868) x7875)
+(or (not x7868) (not x7874))
+(or (not x7868) x7946)
+(or x7883 (not x7864))
+(or x7883 (not x7865))
+(or x7883 (not x7866))
+(or x7883 (not x7867))
+(or x7883 (not x7868))
+(or x7883 (not x7877))
+(or x7883 (not x7876))
+(or x7883 x7875)
+(or x7883 (not x7874))
+(or x7864 x7865 x7866 x7867 x7868 x7877 x7876 (not x7875) x7874 (not x7883))
+(or x7947 x7902)
+(or x7947 x7903)
+(or x7947 x7928)
+(or x7947 x7948)
+(or (not x7902) (not x7903) (not x7928) (not x7948) (not x7947))
+(or (not x7947) (not x7902) x7949)
+(or (not x7949) x7947)
+(or (not x7949) x7902)
+(or x7877 x7876 (not x7875) x7874 (not x142) (not x143) x7867)
+(or (not x7867) (not x7877))
+(or (not x7867) (not x7876))
+(or (not x7867) x7875)
+(or (not x7867) (not x7874))
+(or (not x7867) x142)
+(or (not x7867) x143)
+(or x7882 (not x7864))
+(or x7882 (not x7865))
+(or x7882 (not x7866))
+(or x7882 (not x7867))
+(or x7882 (not x7877))
+(or x7882 (not x7876))
+(or x7882 x7875)
+(or x7882 (not x7874))
+(or x7882 (not x7901))
+(or x7864 x7865 x7866 x7867 x7877 x7876 (not x7875) x7874 x7901 (not x7882))
+(or x7950 (not x7864))
+(or x7950 (not x7865))
+(or x7950 (not x7866))
+(or x7950 (not x7867))
+(or x7950 (not x7877))
+(or x7950 (not x7876))
+(or x7950 x7875)
+(or x7950 (not x7874))
+(or x7950 (not x7901))
+(or x7950 (not x7949))
+(or x7864 x7865 x7866 x7867 x7877 x7876 (not x7875) x7874 x7901 x7949 (not x7950))
+(or x7881 (not x7864))
+(or x7881 (not x7865))
+(or x7881 (not x7866))
+(or x7881 (not x7877))
+(or x7881 (not x7876))
+(or x7881 x7875)
+(or x7881 (not x7874))
+(or x7881 x142)
+(or x7881 x143)
+(or x7864 x7865 x7866 x7877 x7876 (not x7875) x7874 (not x142) (not x143) (not x7881))
+(or x7877 x7876 x7875 x7874 x142 (not x7470) (not x7469) (not x7946) (not x7849) (not x7850) x7865)
+(or (not x7865) (not x7877))
+(or (not x7865) (not x7876))
+(or (not x7865) (not x7875))
+(or (not x7865) (not x7874))
+(or (not x7865) (not x142))
+(or (not x7865) x7470)
+(or (not x7865) x7469)
+(or (not x7865) x7946)
+(or (not x7865) x7849)
+(or (not x7865) x7850)
+(or x7880 (not x7864))
+(or x7880 (not x7865))
+(or x7880 (not x7877))
+(or x7880 (not x7876))
+(or x7880 (not x7875))
+(or x7880 (not x7874))
+(or x7880 (not x142))
+(or x7880 x7470)
+(or x7880 x7469)
+(or x7864 x7865 x7877 x7876 x7875 x7874 x142 (not x7470) (not x7469) (not x7880))
+(or (not x7640) (not x7682) x7801)
+(or (not x7801) x7640)
+(or (not x7801) x7682)
+(or (not x7577) (not x7578) (not x7687) x7800)
+(or (not x7800) x7577)
+(or (not x7800) x7578)
+(or (not x7800) x7687)
+(or x7852 (not x7800))
+(or x7852 (not x7801))
+(or x7800 x7801 (not x7852))
+(or (not x7744) (not x7743) x7742)
+(or (not x7742) x7744)
+(or (not x7742) x7743)
+(or (not x7744) x7743 x7741)
+(or (not x7741) x7744)
+(or (not x7741) (not x7743))
+(or x7744 (not x7743) x7740)
+(or (not x7740) (not x7744))
+(or (not x7740) x7743)
+(or (not x141) x142 x7454)
+(or (not x7454) x141)
+(or (not x7454) (not x142))
+(or x7744 x7743 (not x141) x142 x7951)
+(or (not x7951) (not x7744))
+(or (not x7951) (not x7743))
+(or (not x7951) x141)
+(or (not x7951) (not x142))
+(or x7946 (not x7951))
+(or x7946 (not x7740))
+(or x7946 (not x7741))
+(or x7946 (not x7742))
+(or x7951 x7740 x7741 x7742 (not x7946))
+(or x7877 x7876 x7875 x7874 x142 (not x7470) (not x7469) x7866)
+(or (not x7866) (not x7877))
+(or (not x7866) (not x7876))
+(or (not x7866) (not x7875))
+(or (not x7866) (not x7874))
+(or (not x7866) (not x142))
+(or (not x7866) x7470)
+(or (not x7866) x7469)
+(or x7877 x7876 x7875 x7874 x142 (not x7470) (not x7469) (not x7946) (not x7852) x7864)
+(or (not x7864) (not x7877))
+(or (not x7864) (not x7876))
+(or (not x7864) (not x7875))
+(or (not x7864) (not x7874))
+(or (not x7864) (not x142))
+(or (not x7864) x7470)
+(or (not x7864) x7469)
+(or (not x7864) x7946)
+(or (not x7864) x7852)
+(or x7879 (not x7864))
+(or x7879 (not x7877))
+(or x7879 (not x7876))
+(or x7879 (not x7875))
+(or x7879 (not x7874))
+(or x7879 (not x142))
+(or x7879 x7470)
+(or x7879 x7469)
+(or x7879 (not x7901))
+(or x7879 (not x7800))
+(or x7879 (not x7801))
+(or x7864 x7877 x7876 x7875 x7874 x142 (not x7470) (not x7469) x7901 x7800 x7801 (not x7879))
+(or x7952 (not x7864))
+(or x7952 (not x7877))
+(or x7952 (not x7876))
+(or x7952 (not x7875))
+(or x7952 (not x7874))
+(or x7952 (not x142))
+(or x7952 x7470)
+(or x7952 x7469)
+(or x7952 (not x7901))
+(or x7952 (not x7800))
+(or x7952 (not x7801))
+(or x7952 x7905)
+(or x7952 x7953)
+(or x7864 x7877 x7876 x7875 x7874 x142 (not x7470) (not x7469) x7901 x7800 x7801 (not x7905) (not x7953) (not x7952))
+(or x7954 x7908)
+(or x7954 x7909)
+(or (not x7908) (not x7909) (not x7954))
+(or (not x7954) (not x7908) x7955)
+(or (not x7955) x7954)
+(or (not x7955) x7908)
+(or x7590 (not x7576))
+(or x7590 (not x7520))
+(or x7576 x7520 (not x7590))
+(or x7578 (not x7619))
+(or x7578 x7600)
+(or x7578 (not x7601))
+(or x7578 (not x7602))
+(or x7578 (not x7603))
+(or x7578 (not x7605))
+(or x7578 (not x7552))
+(or x7578 (not x7606))
+(or x7578 (not x7607))
+(or x7578 (not x7513))
+(or x7578 (not x7608))
+(or x7578 (not x7576))
+(or x7578 (not x7520))
+(or x7619 (not x7600) x7601 x7602 x7603 x7605 x7552 x7606 x7607 x7513 x7608 x7576 x7520 (not x7578))
+(or x7703 (not x7600))
+(or x7703 (not x7601))
+(or x7600 x7601 (not x7703))
+(or x7701 (not x7600))
+(or x7701 (not x7601))
+(or x7701 (not x7602))
+(or x7701 (not x7603))
+(or x7600 x7601 x7602 x7603 (not x7701))
+(or x7713 (not x7606))
+(or x7713 (not x7607))
+(or x7606 x7607 (not x7713))
+(or x7709 (not x7576))
+(or x7709 (not x7606))
+(or x7709 (not x7607))
+(or x7576 x7606 x7607 (not x7709))
+(or x7714 (not x7520))
+(or x7714 (not x7576))
+(or x7714 (not x7606))
+(or x7714 (not x7607))
+(or x7520 x7576 x7606 x7607 (not x7714))
+(or x7708 (not x7605))
+(or x7708 (not x7520))
+(or x7708 (not x7576))
+(or x7708 (not x7606))
+(or x7708 (not x7607))
+(or x7605 x7520 x7576 x7606 x7607 (not x7708))
+(or x7577 (not x7605))
+(or x7577 (not x7520))
+(or x7577 (not x7576))
+(or x7577 (not x7606))
+(or x7577 (not x7607))
+(or x7577 (not x7619))
+(or x7577 (not x7513))
+(or x7577 x7608)
+(or x7577 (not x7552))
+(or x7577 (not x7600))
+(or x7577 (not x7601))
+(or x7577 (not x7602))
+(or x7577 (not x7603))
+(or x7605 x7520 x7576 x7606 x7607 x7619 x7513 (not x7608) x7552 x7600 x7601 x7602 x7603 (not x7577))
+(or (not x7577) (not x7578) x7956)
+(or (not x7956) x7577)
+(or (not x7956) x7578)
+(or x7850 (not x7956))
+(or x7850 x7682)
+(or x7956 (not x7682) (not x7850))
+(or x7576 x7520 x7585)
+(or (not x7585) (not x7576))
+(or (not x7585) (not x7520))
+(or x7619 (not x7600) x7601 x7602 x7603 x7605 x7552 x7606 x7607 x7513 x7608 x7576 x7520 x7569)
+(or (not x7569) (not x7619))
+(or (not x7569) x7600)
+(or (not x7569) (not x7601))
+(or (not x7569) (not x7602))
+(or (not x7569) (not x7603))
+(or (not x7569) (not x7605))
+(or (not x7569) (not x7552))
+(or (not x7569) (not x7606))
+(or (not x7569) (not x7607))
+(or (not x7569) (not x7513))
+(or (not x7569) (not x7608))
+(or (not x7569) (not x7576))
+(or (not x7569) (not x7520))
+(or x7600 x7601 x7645)
+(or (not x7645) (not x7600))
+(or (not x7645) (not x7601))
+(or x7600 x7601 x7602 x7603 x7642)
+(or (not x7642) (not x7600))
+(or (not x7642) (not x7601))
+(or (not x7642) (not x7602))
+(or (not x7642) (not x7603))
+(or x7606 x7607 x7656)
+(or (not x7656) (not x7606))
+(or (not x7656) (not x7607))
+(or x7576 x7606 x7607 x7650)
+(or (not x7650) (not x7576))
+(or (not x7650) (not x7606))
+(or (not x7650) (not x7607))
+(or x7520 x7576 x7606 x7607 x7657)
+(or (not x7657) (not x7520))
+(or (not x7657) (not x7576))
+(or (not x7657) (not x7606))
+(or (not x7657) (not x7607))
+(or x7605 x7520 x7576 x7606 x7607 x7649)
+(or (not x7649) (not x7605))
+(or (not x7649) (not x7520))
+(or (not x7649) (not x7576))
+(or (not x7649) (not x7606))
+(or (not x7649) (not x7607))
+(or x7605 x7520 x7576 x7606 x7607 x7619 x7513 (not x7608) x7552 x7600 x7601 x7602 x7603 x7568)
+(or (not x7568) (not x7605))
+(or (not x7568) (not x7520))
+(or (not x7568) (not x7576))
+(or (not x7568) (not x7606))
+(or (not x7568) (not x7607))
+(or (not x7568) (not x7619))
+(or (not x7568) (not x7513))
+(or (not x7568) x7608)
+(or (not x7568) (not x7552))
+(or (not x7568) (not x7600))
+(or (not x7568) (not x7601))
+(or (not x7568) (not x7602))
+(or (not x7568) (not x7603))
+(or x7640 (not x7568))
+(or x7640 (not x7569))
+(or x7568 x7569 (not x7640))
+(or x7849 (not x7568))
+(or x7849 (not x7569))
+(or x7849 x7687)
+(or x7568 x7569 (not x7687) (not x7849))
+(or (not x7849) (not x7850) x7812)
+(or (not x7812) x7849)
+(or (not x7812) x7850)
+(or x7957 x7744)
+(or x7957 x7743)
+(or (not x7744) (not x7743) (not x7957))
+(or x7958 x7744)
+(or x7958 (not x7743))
+(or (not x7744) x7743 (not x7958))
+(or x7959 (not x7744))
+(or x7959 x7743)
+(or x7744 (not x7743) (not x7959))
+(or x7494 x141)
+(or x7494 (not x142))
+(or (not x141) x142 (not x7494))
+(or x7960 (not x7744))
+(or x7960 (not x7743))
+(or x7960 x141)
+(or x7960 (not x142))
+(or x7744 x7743 (not x141) x142 (not x7960))
+(or (not x7960) (not x7959) (not x7958) (not x7957) x7901)
+(or (not x7901) x7960)
+(or (not x7901) x7959)
+(or (not x7901) x7958)
+(or (not x7901) x7957)
+(or x7878 (not x7877))
+(or x7878 (not x7876))
+(or x7878 (not x7875))
+(or x7878 (not x7874))
+(or x7878 (not x142))
+(or x7878 x7470)
+(or x7878 x7469)
+(or x7878 (not x7901))
+(or x7878 (not x7812))
+(or x7877 x7876 x7875 x7874 x142 (not x7470) (not x7469) x7901 x7812 (not x7878))
+(or x7961 (not x7877))
+(or x7961 (not x7876))
+(or x7961 (not x7875))
+(or x7961 (not x7874))
+(or x7961 (not x142))
+(or x7961 x7470)
+(or x7961 x7469)
+(or x7961 (not x7901))
+(or x7961 (not x7812))
+(or x7961 x7912)
+(or x7961 x7907)
+(or x7961 (not x7955))
+(or x7877 x7876 x7875 x7874 x142 (not x7470) (not x7469) x7901 x7812 (not x7912) (not x7907) x7955 (not x7961))
+(or (not x7961) (not x7952) (not x7880) (not x7881) (not x7950) (not x7883) (not x7945) (not x7885) (not x7942) (not x7888) (not x7937) x7962)
+(or (not x7962) x7961)
+(or (not x7962) x7952)
+(or (not x7962) x7880)
+(or (not x7962) x7881)
+(or (not x7962) x7950)
+(or (not x7962) x7883)
+(or (not x7962) x7945)
+(or (not x7962) x7885)
+(or (not x7962) x7942)
+(or (not x7962) x7888)
+(or (not x7962) x7937)
+(or x7963 (not x7964))
+(or x7963 (not x7534))
+(or x7963 (not x7965))
+(or x7963 (not x7540))
+(or x7964 x7534 x7965 x7540 (not x7963))
+(or x7966 (not x7964))
+(or x7966 (not x7534))
+(or x7966 x7540)
+(or x7966 (not x7539))
+(or x7966 (not x7538))
+(or x7966 x7537)
+(or x7966 x7513)
+(or x7966 x7967)
+(or x7964 x7534 (not x7540) x7539 x7538 (not x7537) (not x7513) (not x7967) (not x7966))
+(or x7968 (not x7540))
+(or x7968 x7539)
+(or x7968 x7538)
+(or x7968 x7537)
+(or x7968 x7470)
+(or x7968 x7469)
+(or x7968 x7969)
+(or x7968 x7970)
+(or x7540 (not x7539) (not x7538) (not x7537) (not x7470) (not x7469) (not x7969) (not x7970) (not x7968))
+(or (not x7968) (not x7966) (not x7963) x7971)
+(or (not x7971) x7968)
+(or (not x7971) x7966)
+(or (not x7971) x7963)
+(or x7972 (not x7964))
+(or x7972 (not x7534))
+(or x7972 (not x7965))
+(or x7972 (not x7539))
+(or x7964 x7534 x7965 x7539 (not x7972))
+(or (not x7973) (not x7974) (not x7975) (not x7972) x7976)
+(or (not x7976) x7973)
+(or (not x7976) x7974)
+(or (not x7976) x7975)
+(or (not x7976) x7972)
+(or x7977 (not x7964))
+(or x7977 (not x7534))
+(or x7977 (not x7965))
+(or x7977 (not x7538))
+(or x7964 x7534 x7965 x7538 (not x7977))
+(or x7550 x7540)
+(or x7550 (not x7539))
+(or x7550 (not x7538))
+(or x7550 (not x7537))
+(or (not x7540) x7539 x7538 x7537 (not x7550))
+(or x7974 (not x7964))
+(or x7974 x7540)
+(or x7974 (not x7539))
+(or x7974 (not x7538))
+(or x7974 (not x7537))
+(or x7964 (not x7540) x7539 x7538 x7537 (not x7974))
+(or (not x7973) (not x7974) (not x7975) (not x7977) x7978)
+(or (not x7978) x7973)
+(or (not x7978) x7974)
+(or (not x7978) x7975)
+(or (not x7978) x7977)
+(or (not x7540) x7539 x7538 (not x7537) (not x7513) x7965)
+(or (not x7965) x7540)
+(or (not x7965) (not x7539))
+(or (not x7965) (not x7538))
+(or (not x7965) x7537)
+(or (not x7965) x7513)
+(or x7979 (not x7964))
+(or x7979 (not x7534))
+(or x7979 (not x7965))
+(or x7979 (not x7537))
+(or x7964 x7534 x7965 x7537 (not x7979))
+(or x7540 (not x7539) (not x7538) (not x7537) (not x7470) (not x7469) (not x7969) x7964)
+(or (not x7964) (not x7540))
+(or (not x7964) x7539)
+(or (not x7964) x7538)
+(or (not x7964) x7537)
+(or (not x7964) x7470)
+(or (not x7964) x7469)
+(or (not x7964) x7969)
+(or x7975 (not x7964))
+(or x7975 (not x7534))
+(or x7975 x7540)
+(or x7975 (not x7539))
+(or x7975 (not x7538))
+(or x7975 x7537)
+(or x7975 x7513)
+(or x7975 (not x7967))
+(or x7964 x7534 (not x7540) x7539 x7538 (not x7537) (not x7513) x7967 (not x7975))
+(or x7973 (not x7540))
+(or x7973 x7539)
+(or x7973 x7538)
+(or x7973 x7537)
+(or x7973 x7470)
+(or x7973 x7469)
+(or x7973 x7969)
+(or x7973 (not x7970))
+(or x7540 (not x7539) (not x7538) (not x7537) (not x7470) (not x7469) (not x7969) x7970 (not x7973))
+(or (not x7973) (not x7975) (not x7979) x7980)
+(or (not x7980) x7973)
+(or (not x7980) x7975)
+(or (not x7980) x7979)
+(or (not x7969) (not x7981) (not x7513) x7982)
+(or (not x7982) x7969)
+(or (not x7982) x7981)
+(or (not x7982) x7513)
+(or x7983 x7969)
+(or x7983 (not x7982))
+(or x7983 (not x7969))
+(or (not x7969) x7982 x7969 (not x7983))
+(or x7984 x7969)
+(or x7984 x7969)
+(or x7984 x7981)
+(or x7984 x7513)
+(or x7984 x7985)
+(or (not x7969) (not x7969) (not x7981) (not x7513) (not x7985) (not x7984))
+(or x7986 x7987)
+(or x7986 x7988)
+(or (not x7987) (not x7988) (not x7986))
+(or (not x7986) (not x7987) x7989)
+(or (not x7989) x7986)
+(or (not x7989) x7987)
+(or x7990 (not x7969))
+(or x7990 x7991)
+(or x7990 (not x7989))
+(or x7969 (not x7991) x7989 (not x7990))
+(or (not x7990) (not x7984) (not x7983) x7992)
+(or (not x7992) x7990)
+(or (not x7992) x7984)
+(or (not x7992) x7983)
+(or x7621 (not x7673))
+(or x7621 (not x7674))
+(or x7621 (not x7675))
+(or x7621 (not x7676))
+(or x7621 (not x7677))
+(or x7621 (not x7678))
+(or x7673 x7674 x7675 x7676 x7677 x7678 (not x7621))
+(or x7625 (not x7772))
+(or x7625 x7771)
+(or x7625 x7770)
+(or x7625 (not x7769))
+(or x7772 (not x7771) (not x7770) x7769 (not x7625))
+(or x7661 (not x7772))
+(or x7661 x7771)
+(or x7661 (not x7770))
+(or x7661 x7769)
+(or x7772 (not x7771) x7770 (not x7769) (not x7661))
+(or x7624 (not x7772))
+(or x7624 (not x7771))
+(or x7624 (not x7770))
+(or x7624 x7769)
+(or x7772 x7771 x7770 (not x7769) (not x7624))
+(or x7993 (not x7772))
+(or x7993 (not x7771))
+(or x7993 x7770)
+(or x7993 x7769)
+(or x7772 x7771 (not x7770) (not x7769) (not x7993))
+(or x7623 (not x7877))
+(or x7623 x7876)
+(or x7623 x7875)
+(or x7623 (not x7874))
+(or x7877 (not x7876) (not x7875) x7874 (not x7623))
+(or x7659 (not x7877))
+(or x7659 x7876)
+(or x7659 (not x7875))
+(or x7659 x7874)
+(or x7877 (not x7876) x7875 (not x7874) (not x7659))
+(or x7622 (not x7877))
+(or x7622 (not x7876))
+(or x7622 (not x7875))
+(or x7622 x7874)
+(or x7877 x7876 x7875 (not x7874) (not x7622))
+(or x7994 (not x7877))
+(or x7994 (not x7876))
+(or x7994 x7875)
+(or x7994 x7874)
+(or x7877 x7876 (not x7875) (not x7874) (not x7994))
+(or (not x7994) (not x7622) (not x7659) (not x7623) (not x7993) (not x7624) (not x7661) (not x7625) x7995)
+(or (not x7995) x7994)
+(or (not x7995) x7622)
+(or (not x7995) x7659)
+(or (not x7995) x7623)
+(or (not x7995) x7993)
+(or (not x7995) x7624)
+(or (not x7995) x7661)
+(or (not x7995) x7625)
+(or (not x7994) (not x7622) (not x7659) (not x7623) (not x7993) (not x7624) (not x7661) (not x7625) x7564 x7565 x7753)
+(or (not x7753) x7994)
+(or (not x7753) x7622)
+(or (not x7753) x7659)
+(or (not x7753) x7623)
+(or (not x7753) x7993)
+(or (not x7753) x7624)
+(or (not x7753) x7661)
+(or (not x7753) x7625)
+(or (not x7753) (not x7564))
+(or (not x7753) (not x7565))
+(or x7611 (not x7753))
+(or x7611 (not x7694))
+(or x7611 (not x7674))
+(or x7611 (not x7696))
+(or x7611 (not x7677))
+(or x7753 x7694 x7674 x7696 x7677 (not x7611))
+(or x7996 (not x7753))
+(or x7996 (not x7694))
+(or x7996 (not x7674))
+(or x7996 (not x7696))
+(or x7996 (not x7677))
+(or x7996 (not x7673))
+(or x7996 (not x7674))
+(or x7996 (not x7675))
+(or x7996 (not x7676))
+(or x7996 (not x7677))
+(or x7996 (not x7678))
+(or x7996 x7576)
+(or x7753 x7694 x7674 x7696 x7677 x7673 x7674 x7675 x7676 x7677 x7678 (not x7576) (not x7996))
+(or (not x7996) (not x7752) x7997)
+(or (not x7997) x7996)
+(or (not x7997) x7752)
+(or (not x7998) x7540)
+(or (not x7998) (not x7539))
+(or (not x7998) (not x7538))
+(or (not x7998) x7537)
+(or (not x7540) x7539 x7538 x7537 x7534)
+(or (not x7534) x7540)
+(or (not x7534) (not x7539))
+(or (not x7534) (not x7538))
+(or (not x7534) (not x7537))
+(or (not x7999) (not x7540))
+(or (not x7999) x7539)
+(or (not x7999) x7538)
+(or (not x7999) x7537)
+(or x8000 (not x7999))
+(or x8000 (not x7534))
+(or x7999 x7534 (not x8000))
+(or x7772 (not x7771) (not x7770) x7769 x7677)
+(or (not x7677) (not x7772))
+(or (not x7677) x7771)
+(or (not x7677) x7770)
+(or (not x7677) (not x7769))
+(or x7772 (not x7771) x7770 (not x7769) x7678)
+(or (not x7678) (not x7772))
+(or (not x7678) x7771)
+(or (not x7678) (not x7770))
+(or (not x7678) x7769)
+(or x7772 (not x7771) x7770 x7769 x7676)
+(or (not x7676) (not x7772))
+(or (not x7676) x7771)
+(or (not x7676) (not x7770))
+(or (not x7676) (not x7769))
+(or x7772 x7771 (not x7770) (not x7769) x7695)
+(or (not x7695) (not x7772))
+(or (not x7695) (not x7771))
+(or (not x7695) x7770)
+(or (not x7695) x7769)
+(or x7772 x7771 (not x7770) x7769 x7764)
+(or (not x7764) (not x7772))
+(or (not x7764) (not x7771))
+(or (not x7764) x7770)
+(or (not x7764) (not x7769))
+(or x7772 x7771 x7770 (not x7769) x7696)
+(or (not x7696) (not x7772))
+(or (not x7696) (not x7771))
+(or (not x7696) (not x7770))
+(or (not x7696) x7769)
+(or (not x8001) (not x7772))
+(or (not x8001) (not x7771))
+(or (not x8001) (not x7770))
+(or (not x8001) (not x7769))
+(or x8002 (not x8001))
+(or x8002 (not x7696))
+(or x8002 (not x7764))
+(or x8002 (not x7695))
+(or x8002 (not x7676))
+(or x8002 (not x7678))
+(or x8001 x7696 x7764 x7695 x7676 x7678 (not x8002))
+(or x7877 (not x7876) (not x7875) x7874 x7674)
+(or (not x7674) (not x7877))
+(or (not x7674) x7876)
+(or (not x7674) x7875)
+(or (not x7674) (not x7874))
+(or x7877 (not x7876) x7875 (not x7874) x7675)
+(or (not x7675) (not x7877))
+(or (not x7675) x7876)
+(or (not x7675) (not x7875))
+(or (not x7675) x7874)
+(or x7877 (not x7876) x7875 x7874 x7673)
+(or (not x7673) (not x7877))
+(or (not x7673) x7876)
+(or (not x7673) (not x7875))
+(or (not x7673) (not x7874))
+(or x7877 x7876 (not x7875) (not x7874) x7693)
+(or (not x7693) (not x7877))
+(or (not x7693) (not x7876))
+(or (not x7693) x7875)
+(or (not x7693) x7874)
+(or x7877 x7876 (not x7875) x7874 x7869)
+(or (not x7869) (not x7877))
+(or (not x7869) (not x7876))
+(or (not x7869) x7875)
+(or (not x7869) (not x7874))
+(or x7877 x7876 x7875 (not x7874) x7694)
+(or (not x7694) (not x7877))
+(or (not x7694) (not x7876))
+(or (not x7694) (not x7875))
+(or (not x7694) x7874)
+(or (not x8003) (not x7877))
+(or (not x8003) (not x7876))
+(or (not x8003) (not x7875))
+(or (not x8003) (not x7874))
+(or x8004 (not x8003))
+(or x8004 (not x7694))
+(or x8004 (not x7869))
+(or x8004 (not x7693))
+(or x8004 (not x7673))
+(or x8004 (not x7675))
+(or x8003 x7694 x7869 x7693 x7673 x7675 (not x8004))
+(or x8005 (not x8006))
+(or x8005 (not x8007))
+(or x8005 (not x8008))
+(or x8005 (not x8009))
+(or x8005 (not x8010))
+(or x8005 (not x8011))
+(or x8005 (not x149))
+(or x8005 x148)
+(or x8005 x147)
+(or x8005 x146)
+(or x8005 (not x8012))
+(or x8005 x8013)
+(or x8006 x8007 x8008 x8009 x8010 x8011 x149 (not x148) (not x147) (not x146) x8012 (not x8013) (not x8005))
+(or x8014 (not x8006))
+(or x8014 (not x8007))
+(or x8014 (not x8008))
+(or x8014 (not x8009))
+(or x8014 (not x8010))
+(or x8014 (not x149))
+(or x8014 x148)
+(or x8014 x147)
+(or x8014 (not x146))
+(or x8014 x150)
+(or x8014 (not x151))
+(or x8014 x8015)
+(or x8006 x8007 x8008 x8009 x8010 x149 (not x148) (not x147) x146 (not x150) x151 (not x8015) (not x8014))
+(or x8016 (not x149))
+(or x8016 (not x148))
+(or x8016 (not x147))
+(or x8016 x146)
+(or x8016 (not x8017))
+(or x149 x148 x147 (not x146) x8017 (not x8016))
+(or (not x8016) (not x8018) (not x8019) (not x8020) (not x8021) (not x8014) (not x8005) (not x8022) x8023)
+(or (not x8023) x8016)
+(or (not x8023) x8018)
+(or (not x8023) x8019)
+(or (not x8023) x8020)
+(or (not x8023) x8021)
+(or (not x8023) x8014)
+(or (not x8023) x8005)
+(or (not x8023) x8022)
+(or x8024 (not x8006))
+(or x8024 (not x8007))
+(or x8024 (not x149))
+(or x8024 (not x148))
+(or x8024 x147)
+(or x8024 x146)
+(or x8024 (not x8012))
+(or x8024 x8025)
+(or x8006 x8007 x149 x148 (not x147) (not x146) x8012 (not x8025) (not x8024))
+(or x8026 (not x8006))
+(or x8026 (not x149))
+(or x8026 (not x148))
+(or x8026 x147)
+(or x8026 (not x146))
+(or x8026 x8028)
+(or x8026 x8027)
+(or x8026 (not x8012))
+(or x8026 x8029)
+(or x8006 x149 x148 (not x147) x146 (not x8028) (not x8027) x8012 (not x8029) (not x8026))
+(or x8030 (not x8031) x8017)
+(or (not x8017) (not x8030))
+(or (not x8017) x8031)
+(or x8030 (not x8031) (not x8032) x8033)
+(or (not x8033) (not x8030))
+(or (not x8033) x8031)
+(or (not x8033) x8032)
+(or x8034 (not x149))
+(or x8034 (not x148))
+(or x8034 (not x147))
+(or x8034 x146)
+(or x8034 (not x8033))
+(or x149 x148 x147 (not x146) x8033 (not x8034))
+(or (not x8034) (not x8026) (not x8024) (not x8035) (not x8036) (not x8037) (not x8038) (not x8022) x8039)
+(or (not x8039) x8034)
+(or (not x8039) x8026)
+(or (not x8039) x8024)
+(or (not x8039) x8035)
+(or (not x8039) x8036)
+(or (not x8039) x8037)
+(or (not x8039) x8038)
+(or (not x8039) x8022)
+(or x8040 (not x8006))
+(or x8040 (not x8007))
+(or x8040 (not x8008))
+(or x8040 (not x8009))
+(or x8040 (not x149))
+(or x8040 x148)
+(or x8040 (not x147))
+(or x8040 x146)
+(or x8040 (not x8012))
+(or x8040 x8041)
+(or x8006 x8007 x8008 x8009 x149 (not x148) x147 (not x146) x8012 (not x8041) (not x8040))
+(or x8042 (not x8006))
+(or x8042 (not x8007))
+(or x8042 (not x8008))
+(or x8042 (not x149))
+(or x8042 x148)
+(or x8042 (not x147))
+(or x8042 (not x146))
+(or x8042 x150)
+(or x8042 (not x151))
+(or x8042 x8043)
+(or x8006 x8007 x8008 x149 (not x148) x147 x146 (not x150) x151 (not x8043) (not x8042))
+(or x8032 (not x8030))
+(or x8032 (not x8044))
+(or x8030 x8044 (not x8032))
+(or x8030 (not x8032) x8045)
+(or (not x8045) (not x8030))
+(or (not x8045) x8032)
+(or x8046 (not x149))
+(or x8046 (not x148))
+(or x8046 (not x147))
+(or x8046 x146)
+(or x8046 (not x8045))
+(or x149 x148 x147 (not x146) x8045 (not x8046))
+(or (not x8046) (not x8047) (not x8048) (not x8042) (not x8040) (not x8035) (not x8036) (not x8049) (not x8050) (not x8022) x8051)
+(or (not x8051) x8046)
+(or (not x8051) x8047)
+(or (not x8051) x8048)
+(or (not x8051) x8042)
+(or (not x8051) x8040)
+(or (not x8051) x8035)
+(or (not x8051) x8036)
+(or (not x8051) x8049)
+(or (not x8051) x8050)
+(or (not x8051) x8022)
+(or (not x149) (not x148) x147 x146 (not x8052) x8053)
+(or (not x8053) x149)
+(or (not x8053) x148)
+(or (not x8053) (not x147))
+(or (not x8053) (not x146))
+(or (not x8053) x8052)
+(or x8022 (not x8006))
+(or x8022 (not x8007))
+(or x8022 (not x8008))
+(or x8022 (not x8009))
+(or x8022 (not x8010))
+(or x8022 (not x8011))
+(or x8022 (not x8054))
+(or x8022 (not x8055))
+(or x8022 (not x8056))
+(or x8022 (not x8057))
+(or x8022 (not x8053))
+(or x8006 x8007 x8008 x8009 x8010 x8011 x8054 x8055 x8056 x8057 x8053 (not x8022))
+(or (not x149) x148 (not x147) (not x146) (not x150) x151 x8057)
+(or (not x8057) x149)
+(or (not x8057) (not x148))
+(or (not x8057) x147)
+(or (not x8057) x146)
+(or (not x8057) x150)
+(or (not x8057) (not x151))
+(or x8050 (not x8006))
+(or x8050 (not x8007))
+(or x8050 (not x8008))
+(or x8050 (not x8009))
+(or x8050 (not x8010))
+(or x8050 (not x8011))
+(or x8050 (not x8054))
+(or x8050 (not x8055))
+(or x8050 (not x8056))
+(or x8050 (not x8057))
+(or x8050 x149)
+(or x8050 x148)
+(or x8050 (not x147))
+(or x8050 (not x146))
+(or x8050 (not x8012))
+(or x8006 x8007 x8008 x8009 x8010 x8011 x8054 x8055 x8056 x8057 (not x149) (not x148) x147 x146 x8012 (not x8050))
+(or x8058 (not x8006))
+(or x8058 (not x8007))
+(or x8058 (not x8008))
+(or x8058 (not x8009))
+(or x8058 (not x8010))
+(or x8058 (not x8011))
+(or x8058 (not x8054))
+(or x8058 (not x8055))
+(or x8058 (not x8056))
+(or x8058 (not x8057))
+(or x8058 x149)
+(or x8058 x148)
+(or x8058 (not x147))
+(or x8058 (not x146))
+(or x8058 (not x8012))
+(or x8058 x8059)
+(or x8006 x8007 x8008 x8009 x8010 x8011 x8054 x8055 x8056 x8057 (not x149) (not x148) x147 x146 x8012 (not x8059) (not x8058))
+(or (not x149) x148 (not x147) x146 (not x8052) x8056)
+(or (not x8056) x149)
+(or (not x8056) (not x148))
+(or (not x8056) x147)
+(or (not x8056) (not x146))
+(or (not x8056) x8052)
+(or x8049 (not x8006))
+(or x8049 (not x8007))
+(or x8049 (not x8008))
+(or x8049 (not x8009))
+(or x8049 (not x8010))
+(or x8049 (not x8011))
+(or x8049 (not x8054))
+(or x8049 (not x8055))
+(or x8049 (not x8056))
+(or x8049 x149)
+(or x8049 (not x148))
+(or x8049 x147)
+(or x8049 x146)
+(or x8049 x150)
+(or x8049 (not x151))
+(or x8006 x8007 x8008 x8009 x8010 x8011 x8054 x8055 x8056 (not x149) x148 (not x147) (not x146) (not x150) x151 (not x8049))
+(or x8060 (not x8006))
+(or x8060 (not x8007))
+(or x8060 (not x8008))
+(or x8060 (not x8009))
+(or x8060 (not x8010))
+(or x8060 (not x8011))
+(or x8060 (not x8054))
+(or x8060 (not x8055))
+(or x8060 (not x8056))
+(or x8060 x149)
+(or x8060 (not x148))
+(or x8060 x147)
+(or x8060 x146)
+(or x8060 x150)
+(or x8060 (not x151))
+(or x8060 x8061)
+(or x8006 x8007 x8008 x8009 x8010 x8011 x8054 x8055 x8056 (not x149) x148 (not x147) (not x146) (not x150) x151 (not x8061) (not x8060))
+(or (not x149) x148 x147 (not x146) (not x8028) (not x8027) (not x150) x151 x8055)
+(or (not x8055) x149)
+(or (not x8055) (not x148))
+(or (not x8055) (not x147))
+(or (not x8055) x146)
+(or (not x8055) x8028)
+(or (not x8055) x8027)
+(or (not x8055) x150)
+(or (not x8055) (not x151))
+(or x8038 (not x8006))
+(or x8038 (not x8007))
+(or x8038 (not x8008))
+(or x8038 (not x8009))
+(or x8038 (not x8010))
+(or x8038 (not x8011))
+(or x8038 (not x8054))
+(or x8038 (not x8055))
+(or x8038 x149)
+(or x8038 (not x148))
+(or x8038 x147)
+(or x8038 (not x146))
+(or x8038 (not x8012))
+(or x8006 x8007 x8008 x8009 x8010 x8011 x8054 x8055 (not x149) x148 (not x147) x146 x8012 (not x8038))
+(or x8062 (not x8006))
+(or x8062 (not x8007))
+(or x8062 (not x8008))
+(or x8062 (not x8009))
+(or x8062 (not x8010))
+(or x8062 (not x8011))
+(or x8062 (not x8054))
+(or x8062 (not x8055))
+(or x8062 x149)
+(or x8062 (not x148))
+(or x8062 x147)
+(or x8062 (not x146))
+(or x8062 (not x8012))
+(or x8062 x8063)
+(or x8006 x8007 x8008 x8009 x8010 x8011 x8054 x8055 (not x149) x148 (not x147) x146 x8012 (not x8063) (not x8062))
+(or x149 (not x148) (not x147) (not x146) (not x8052) x8054)
+(or (not x8054) (not x149))
+(or (not x8054) x148)
+(or (not x8054) x147)
+(or (not x8054) x146)
+(or (not x8054) x8052)
+(or x8037 (not x8006))
+(or x8037 (not x8007))
+(or x8037 (not x8008))
+(or x8037 (not x8009))
+(or x8037 (not x8010))
+(or x8037 (not x8011))
+(or x8037 (not x8054))
+(or x8037 x149)
+(or x8037 (not x148))
+(or x8037 (not x147))
+(or x8037 x146)
+(or x8037 x8028)
+(or x8037 x8027)
+(or x8037 x150)
+(or x8037 (not x151))
+(or x8006 x8007 x8008 x8009 x8010 x8011 x8054 (not x149) x148 x147 (not x146) (not x8028) (not x8027) (not x150) x151 (not x8037))
+(or x8064 (not x8006))
+(or x8064 (not x8007))
+(or x8064 (not x8008))
+(or x8064 (not x8009))
+(or x8064 (not x8010))
+(or x8064 (not x8011))
+(or x8064 (not x8054))
+(or x8064 x149)
+(or x8064 (not x148))
+(or x8064 (not x147))
+(or x8064 x146)
+(or x8064 x8028)
+(or x8064 x8027)
+(or x8064 x150)
+(or x8064 (not x151))
+(or x8064 x8065)
+(or x8006 x8007 x8008 x8009 x8010 x8011 x8054 (not x149) x148 x147 (not x146) (not x8028) (not x8027) (not x150) x151 (not x8065) (not x8064))
+(or x149 (not x148) (not x147) x146 (not x150) x151 x8011)
+(or (not x8011) (not x149))
+(or (not x8011) x148)
+(or (not x8011) x147)
+(or (not x8011) (not x146))
+(or (not x8011) x150)
+(or (not x8011) (not x151))
+(or x8036 (not x8006))
+(or x8036 (not x8007))
+(or x8036 (not x8008))
+(or x8036 (not x8009))
+(or x8036 (not x8010))
+(or x8036 (not x8011))
+(or x8036 (not x149))
+(or x8036 x148)
+(or x8036 x147)
+(or x8036 x146)
+(or x8036 (not x8012))
+(or x8036 (not x8013))
+(or x8006 x8007 x8008 x8009 x8010 x8011 x149 (not x148) (not x147) (not x146) x8012 x8013 (not x8036))
+(or x149 (not x148) x147 (not x146) (not x8052) x8010)
+(or (not x8010) (not x149))
+(or (not x8010) x148)
+(or (not x8010) (not x147))
+(or (not x8010) x146)
+(or (not x8010) x8052)
+(or x8035 (not x8006))
+(or x8035 (not x8007))
+(or x8035 (not x8008))
+(or x8035 (not x8009))
+(or x8035 (not x8010))
+(or x8035 (not x149))
+(or x8035 x148)
+(or x8035 x147)
+(or x8035 (not x146))
+(or x8035 x150)
+(or x8035 (not x151))
+(or x8035 (not x8015))
+(or x8006 x8007 x8008 x8009 x8010 x149 (not x148) (not x147) x146 (not x150) x151 x8015 (not x8035))
+(or x149 (not x148) x147 x146 (not x150) x151 x8009)
+(or (not x8009) (not x149))
+(or (not x8009) x148)
+(or (not x8009) (not x147))
+(or (not x8009) (not x146))
+(or (not x8009) x150)
+(or (not x8009) (not x151))
+(or x8021 (not x8006))
+(or x8021 (not x8007))
+(or x8021 (not x8008))
+(or x8021 (not x8009))
+(or x8021 (not x149))
+(or x8021 x148)
+(or x8021 (not x147))
+(or x8021 x146)
+(or x8021 (not x8012))
+(or x8006 x8007 x8008 x8009 x149 (not x148) x147 (not x146) x8012 (not x8021))
+(or x8066 (not x8006))
+(or x8066 (not x8007))
+(or x8066 (not x8008))
+(or x8066 (not x8009))
+(or x8066 (not x149))
+(or x8066 x148)
+(or x8066 (not x147))
+(or x8066 x146)
+(or x8066 (not x8012))
+(or x8066 (not x8041))
+(or x8006 x8007 x8008 x8009 x149 (not x148) x147 (not x146) x8012 x8041 (not x8066))
+(or x149 x148 (not x147) (not x146) (not x8052) x8008)
+(or (not x8008) (not x149))
+(or (not x8008) (not x148))
+(or (not x8008) x147)
+(or (not x8008) x146)
+(or (not x8008) x8052)
+(or x8020 (not x8006))
+(or x8020 (not x8007))
+(or x8020 (not x8008))
+(or x8020 (not x149))
+(or x8020 x148)
+(or x8020 (not x147))
+(or x8020 (not x146))
+(or x8020 x150)
+(or x8020 (not x151))
+(or x8006 x8007 x8008 x149 (not x148) x147 x146 (not x150) x151 (not x8020))
+(or x8067 (not x8006))
+(or x8067 (not x8007))
+(or x8067 (not x8008))
+(or x8067 (not x149))
+(or x8067 x148)
+(or x8067 (not x147))
+(or x8067 (not x146))
+(or x8067 x150)
+(or x8067 (not x151))
+(or x8067 (not x8043))
+(or x8006 x8007 x8008 x149 (not x148) x147 x146 (not x150) x151 x8043 (not x8067))
+(or x149 x148 (not x147) x146 (not x8028) (not x8027) (not x8052) x8007)
+(or (not x8007) (not x149))
+(or (not x8007) (not x148))
+(or (not x8007) x147)
+(or (not x8007) (not x146))
+(or (not x8007) x8028)
+(or (not x8007) x8027)
+(or (not x8007) x8052)
+(or x8019 (not x8006))
+(or x8019 (not x8007))
+(or x8019 (not x149))
+(or x8019 (not x148))
+(or x8019 x147)
+(or x8019 x146)
+(or x8019 (not x8012))
+(or x8006 x8007 x149 x148 (not x147) (not x146) x8012 (not x8019))
+(or x8048 (not x8006))
+(or x8048 (not x8007))
+(or x8048 (not x149))
+(or x8048 (not x148))
+(or x8048 x147)
+(or x8048 x146)
+(or x8048 (not x8012))
+(or x8048 (not x8025))
+(or x8006 x8007 x149 x148 (not x147) (not x146) x8012 x8025 (not x8048))
+(or x149 x148 x147 (not x146) x8006)
+(or (not x8006) (not x149))
+(or (not x8006) (not x148))
+(or (not x8006) (not x147))
+(or (not x8006) x146)
+(or x8018 (not x8006))
+(or x8018 (not x149))
+(or x8018 (not x148))
+(or x8018 x147)
+(or x8018 (not x146))
+(or x8018 x8028)
+(or x8018 x8027)
+(or x8018 (not x8012))
+(or x8006 x149 x148 (not x147) x146 (not x8028) (not x8027) x8012 (not x8018))
+(or x8047 (not x8006))
+(or x8047 (not x149))
+(or x8047 (not x148))
+(or x8047 x147)
+(or x8047 (not x146))
+(or x8047 x8028)
+(or x8047 x8027)
+(or x8047 (not x8012))
+(or x8047 (not x8029))
+(or x8006 x149 x148 (not x147) x146 (not x8028) (not x8027) x8012 x8029 (not x8047))
+(or x8031 (not x8030))
+(or x8031 x8044)
+(or x8030 (not x8044) (not x8031))
+(or x8068 (not x149))
+(or x8068 (not x148))
+(or x8068 (not x147))
+(or x8068 x146)
+(or x8068 (not x8030))
+(or x8068 x8044)
+(or x149 x148 x147 (not x146) x8030 (not x8044) (not x8068))
+(or (not x8068) (not x8047) (not x8048) (not x8067) (not x8066) (not x8035) (not x8036) (not x8064) (not x8062) (not x8060) (not x8058) (not x8022) x8069)
+(or (not x8069) x8068)
+(or (not x8069) x8047)
+(or (not x8069) x8048)
+(or (not x8069) x8067)
+(or (not x8069) x8066)
+(or (not x8069) x8035)
+(or (not x8069) x8036)
+(or (not x8069) x8064)
+(or (not x8069) x8062)
+(or (not x8069) x8060)
+(or (not x8069) x8058)
+(or (not x8069) x8022)
+(or x8070 x8071 (not x8072) x8073)
+(or (not x8073) (not x8070))
+(or (not x8073) (not x8071))
+(or (not x8073) x8072)
+(or (not x8070) x8071 (not x8074) x8075)
+(or (not x8075) x8070)
+(or (not x8075) (not x8071))
+(or (not x8075) x8074)
+(or x8076 (not x8075))
+(or x8076 (not x8073))
+(or x8075 x8073 (not x8076))
+(or (not x8077) (not x8078) x8079 x8080 (not x8081) x8082)
+(or (not x8082) x8077)
+(or (not x8082) x8078)
+(or (not x8082) (not x8079))
+(or (not x8082) (not x8080))
+(or (not x8082) x8081)
+(or x8072 (not x8071))
+(or x8072 (not x8082))
+(or x8071 x8082 (not x8072))
+(or (not x8071) (not x8072) x8083)
+(or (not x8083) x8071)
+(or (not x8083) x8072)
+(or x8071 (not x8070) x8084)
+(or (not x8084) (not x8071))
+(or (not x8084) x8070)
+(or x8074 (not x8085))
+(or x8074 x8078)
+(or x8074 (not x8079))
+(or x8074 (not x8080))
+(or x8074 x8081)
+(or x8085 (not x8078) x8079 x8080 (not x8081) (not x8074))
+(or x8071 (not x8074) x8086)
+(or (not x8086) (not x8071))
+(or (not x8086) x8074)
+(or x8087 (not x8086))
+(or x8087 (not x8084))
+(or x8086 x8084 (not x8087))
+(or (not x8088) (not x8087) x8089)
+(or (not x8089) x8088)
+(or (not x8089) x8087)
+(or x8090 (not x8089))
+(or x8090 (not x8083))
+(or x8089 x8083 (not x8090))
+(or x8091 (not x8071))
+(or x8091 (not x8092))
+(or x8091 (not x8093))
+(or x8071 x8092 x8093 (not x8091))
+(or x8094 (not x8071))
+(or x8094 x8098)
+(or x8094 (not x8097))
+(or x8094 (not x8096))
+(or x8094 (not x8095))
+(or x8071 (not x8098) x8097 x8096 x8095 (not x8094))
+(or x8099 x8100)
+(or x8099 x8101)
+(or (not x8100) (not x8101) (not x8099))
+(or (not x8099) (not x8100) x8102)
+(or (not x8102) x8099)
+(or (not x8102) x8100)
+(or x8103 x8071)
+(or x8103 x8104)
+(or x8103 (not x8102))
+(or (not x8071) (not x8104) x8102 (not x8103))
+(or (not x8103) (not x8094) (not x8091) x8105)
+(or (not x8105) x8103)
+(or (not x8105) x8094)
+(or (not x8105) x8091)
+(or (not x8098) x8097 x8096 x8095 (not x8106) x8107)
+(or (not x8107) x8098)
+(or (not x8107) (not x8097))
+(or (not x8107) (not x8096))
+(or (not x8107) (not x8095))
+(or (not x8107) x8106)
+(or (not x8108) (not x8109) x8110 (not x8111) (not x8112) (not x8113) (not x8114) (not x8115) (not x8116) (not x8117) (not x8118) (not x8119) x8120)
+(or (not x8120) x8108)
+(or (not x8120) x8109)
+(or (not x8120) (not x8110))
+(or (not x8120) x8111)
+(or (not x8120) x8112)
+(or (not x8120) x8113)
+(or (not x8120) x8114)
+(or (not x8120) x8115)
+(or (not x8120) x8116)
+(or (not x8120) x8117)
+(or (not x8120) x8118)
+(or (not x8120) x8119)
+(or x8121 (not x8120))
+(or x8121 (not x8107))
+(or x8120 x8107 (not x8121))
+(or x8122 x8123 x8124)
+(or (not x8124) (not x8122))
+(or (not x8124) (not x8123))
+(or x8125 x8028)
+(or x8125 x8027)
+(or x8125 (not x8126))
+(or x8125 (not x8127))
+(or x8125 (not x8124))
+(or (not x8028) (not x8027) x8126 x8127 x8124 (not x8125))
+(or (not x8128) (not x8125) x8129)
+(or (not x8129) x8128)
+(or (not x8129) x8125)
+(or x8130 (not x8122))
+(or x8130 (not x8131))
+(or x8122 x8131 (not x8130))
+(or (not x8123) (not x8130) x8132)
+(or (not x8132) x8123)
+(or (not x8132) x8130)
+(or x8133 (not x8132))
+(or x8133 (not x8129))
+(or x8132 x8129 (not x8133))
+(or x8134 (not x8028) (not x8027) (not x8135) (not x8136) x8131)
+(or (not x8131) (not x8134))
+(or (not x8131) x8028)
+(or (not x8131) x8027)
+(or (not x8131) x8135)
+(or (not x8131) x8136)
+(or (not x8122) x8134 (not x8028) (not x8027) (not x8135) (not x8136) x8137)
+(or (not x8137) x8122)
+(or (not x8137) (not x8134))
+(or (not x8137) x8028)
+(or (not x8137) x8027)
+(or (not x8137) x8135)
+(or (not x8137) x8136)
+(or x8138 x8028)
+(or x8138 x8027)
+(or x8138 (not x8126))
+(or x8138 (not x8127))
+(or x8138 x8122)
+(or (not x8028) (not x8027) x8126 x8127 (not x8122) (not x8138))
+(or x8128 (not x8134))
+(or x8128 x8028)
+(or x8128 x8027)
+(or x8128 (not x8126))
+(or x8128 (not x8127))
+(or x8134 (not x8028) (not x8027) x8126 x8127 (not x8128))
+(or (not x8128) (not x8138) x8139)
+(or (not x8139) x8128)
+(or (not x8139) x8138)
+(or x8140 (not x8139))
+(or x8140 (not x8137))
+(or x8139 x8137 (not x8140))
+(or x8078 (not x8081) x8141)
+(or (not x8141) (not x8078))
+(or (not x8141) x8081)
+(or x8142 (not x8143))
+(or x8142 x8109)
+(or x8142 x8144)
+(or x8142 (not x8141))
+(or x8143 (not x8109) (not x8144) x8141 (not x8142))
+(or (not x8145) (not x8108) (not x8142) x8146)
+(or (not x8146) x8145)
+(or (not x8146) x8108)
+(or (not x8146) x8142)
+(or x8147 (not x8078))
+(or x8147 x8081)
+(or x8078 (not x8081) (not x8147))
+(or (not x8148) (not x8109) (not x8144) (not x8147) x8149)
+(or (not x8149) x8148)
+(or (not x8149) x8109)
+(or (not x8149) x8144)
+(or (not x8149) x8147)
+(or x8150 (not x8092))
+(or x8150 (not x8149))
+(or x8092 x8149 (not x8150))
+(or (not x8150) (not x8108) x8151)
+(or (not x8151) x8150)
+(or (not x8151) x8108)
+(or x8152 (not x8151))
+(or x8152 (not x8146))
+(or x8151 x8146 (not x8152))
+(or x8153 (not x8154))
+(or x8153 x8134)
+(or x8154 (not x8134) (not x8153))
+(or (not x8078) (not x8028) (not x8027) (not x8155) (not x8080) (not x8156) (not x8157) x8134 x8158 x8159 x8160 x8161 x8162 (not x8078) x8163 x8110 x8164 x8165 x8071 x8166 x8167)
+(or (not x8167) x8078)
+(or (not x8167) x8028)
+(or (not x8167) x8027)
+(or (not x8167) x8155)
+(or (not x8167) x8080)
+(or (not x8167) x8156)
+(or (not x8167) x8157)
+(or (not x8167) (not x8134))
+(or (not x8167) (not x8158))
+(or (not x8167) (not x8159))
+(or (not x8167) (not x8160))
+(or (not x8167) (not x8161))
+(or (not x8167) (not x8162))
+(or (not x8167) x8078)
+(or (not x8167) (not x8163))
+(or (not x8167) (not x8110))
+(or (not x8167) (not x8164))
+(or (not x8167) (not x8165))
+(or (not x8167) (not x8071))
+(or (not x8167) (not x8166))
+(or (not x8168) (not x8169) (not x8028) (not x8027) (not x8134) x8078 x8158 x8159 x8160 x8161 x8163 x8110 x8164 x8165 x8071 x8166 x8170)
+(or (not x8170) x8168)
+(or (not x8170) x8169)
+(or (not x8170) x8028)
+(or (not x8170) x8027)
+(or (not x8170) x8134)
+(or (not x8170) (not x8078))
+(or (not x8170) (not x8158))
+(or (not x8170) (not x8159))
+(or (not x8170) (not x8160))
+(or (not x8170) (not x8161))
+(or (not x8170) (not x8163))
+(or (not x8170) (not x8110))
+(or (not x8170) (not x8164))
+(or (not x8170) (not x8165))
+(or (not x8170) (not x8071))
+(or (not x8170) (not x8166))
+(or x8171 (not x8170))
+(or x8171 (not x8167))
+(or x8170 x8167 (not x8171))
+(or x8158 x8160 x8161 (not x8159) x8163 x8110 x8164 x8165 x8071 x8166 x8134 x8078 x8172)
+(or (not x8172) (not x8158))
+(or (not x8172) (not x8160))
+(or (not x8172) (not x8161))
+(or (not x8172) x8159)
+(or (not x8172) (not x8163))
+(or (not x8172) (not x8110))
+(or (not x8172) (not x8164))
+(or (not x8172) (not x8165))
+(or (not x8172) (not x8071))
+(or (not x8172) (not x8166))
+(or (not x8172) (not x8134))
+(or (not x8172) (not x8078))
+(or (not x8098) x8097 x8096 x8095 (not x8071) x8166 x8163 x8078 x8134 x8164 x8165 (not x8173) (not x8174) x8110 x8158 x8159 x8160 x8161 x8175)
+(or (not x8175) x8098)
+(or (not x8175) (not x8097))
+(or (not x8175) (not x8096))
+(or (not x8175) (not x8095))
+(or (not x8175) x8071)
+(or (not x8175) (not x8166))
+(or (not x8175) (not x8163))
+(or (not x8175) (not x8078))
+(or (not x8175) (not x8134))
+(or (not x8175) (not x8164))
+(or (not x8175) (not x8165))
+(or (not x8175) x8173)
+(or (not x8175) x8174)
+(or (not x8175) (not x8110))
+(or (not x8175) (not x8158))
+(or (not x8175) (not x8159))
+(or (not x8175) (not x8160))
+(or (not x8175) (not x8161))
+(or x8176 (not x8175))
+(or x8176 (not x8172))
+(or x8175 x8172 (not x8176))
+(or (not x8028) (not x8027) (not x8177) (not x8176) x8178)
+(or (not x8178) x8028)
+(or (not x8178) x8027)
+(or (not x8178) x8177)
+(or (not x8178) x8176)
+(or (not x8028) (not x8027) (not x8134) x8078 x8158 x8159 x8160 x8161 x8163 x8110 x8164 x8165 x8071 x8166 (not x8179) (not x8180) (not x8181) (not x8182) (not x8183) (not x8144) x8184)
+(or (not x8184) x8028)
+(or (not x8184) x8027)
+(or (not x8184) x8134)
+(or (not x8184) (not x8078))
+(or (not x8184) (not x8158))
+(or (not x8184) (not x8159))
+(or (not x8184) (not x8160))
+(or (not x8184) (not x8161))
+(or (not x8184) (not x8163))
+(or (not x8184) (not x8110))
+(or (not x8184) (not x8164))
+(or (not x8184) (not x8165))
+(or (not x8184) (not x8071))
+(or (not x8184) (not x8166))
+(or (not x8184) x8179)
+(or (not x8184) x8180)
+(or (not x8184) x8181)
+(or (not x8184) x8182)
+(or (not x8184) x8183)
+(or (not x8184) x8144)
+(or (not x8177) x8159 x8160 x8161 x8163 x8110 x8164 x8165 x8071 x8166 x8134 x8078 x8185)
+(or (not x8185) x8177)
+(or (not x8185) (not x8159))
+(or (not x8185) (not x8160))
+(or (not x8185) (not x8161))
+(or (not x8185) (not x8163))
+(or (not x8185) (not x8110))
+(or (not x8185) (not x8164))
+(or (not x8185) (not x8165))
+(or (not x8185) (not x8071))
+(or (not x8185) (not x8166))
+(or (not x8185) (not x8134))
+(or (not x8185) (not x8078))
+(or x8186 (not x8187))
+(or x8186 (not x8185))
+(or x8187 x8185 (not x8186))
+(or (not x8028) (not x8027) (not x8158) (not x8186) x8188)
+(or (not x8188) x8028)
+(or (not x8188) x8027)
+(or (not x8188) x8158)
+(or (not x8188) x8186)
+(or x8163 x8164 (not x8165) (not x8028) (not x8027) x8071 x8166 x8134 x8078 x8110 x8158 x8159 x8160 x8161 x8189)
+(or (not x8189) (not x8163))
+(or (not x8189) (not x8164))
+(or (not x8189) x8165)
+(or (not x8189) x8028)
+(or (not x8189) x8027)
+(or (not x8189) (not x8071))
+(or (not x8189) (not x8166))
+(or (not x8189) (not x8134))
+(or (not x8189) (not x8078))
+(or (not x8189) (not x8110))
+(or (not x8189) (not x8158))
+(or (not x8189) (not x8159))
+(or (not x8189) (not x8160))
+(or (not x8189) (not x8161))
+(or x8190 (not x8189))
+(or x8190 (not x8188))
+(or x8189 x8188 (not x8190))
+(or x8191 x8159)
+(or x8191 x8166)
+(or (not x8159) (not x8166) (not x8191))
+(or x8192 (not x8159))
+(or x8192 (not x8177))
+(or x8192 (not x8071))
+(or x8159 x8177 x8071 (not x8192))
+(or x8166 x8159 (not x8193) x8194)
+(or (not x8194) (not x8166))
+(or (not x8194) (not x8159))
+(or (not x8194) x8193)
+(or x8195 x8071)
+(or x8195 (not x8194))
+(or (not x8071) x8194 (not x8195))
+(or x8196 x8177)
+(or x8196 (not x8071))
+(or x8196 (not x8166))
+(or (not x8177) x8071 x8166 (not x8196))
+(or (not x8028) (not x8027) x8110 x8158 x8163 x8078 x8134 x8164 x8165 x8160 x8161 (not x8196) (not x8195) (not x8192) (not x8191) x8197)
+(or (not x8197) x8028)
+(or (not x8197) x8027)
+(or (not x8197) (not x8110))
+(or (not x8197) (not x8158))
+(or (not x8197) (not x8163))
+(or (not x8197) (not x8078))
+(or (not x8197) (not x8134))
+(or (not x8197) (not x8164))
+(or (not x8197) (not x8165))
+(or (not x8197) (not x8160))
+(or (not x8197) (not x8161))
+(or (not x8197) x8196)
+(or (not x8197) x8195)
+(or (not x8197) x8192)
+(or (not x8197) x8191)
+(or (not x8028) (not x8027) (not x8198) x8199)
+(or (not x8199) x8028)
+(or (not x8199) x8027)
+(or (not x8199) x8198)
+(or x8119 (not x8200))
+(or x8119 (not x8201))
+(or x8200 x8201 (not x8119))
+(or x8202 (not x8203))
+(or x8202 x8160)
+(or x8203 (not x8160) (not x8202))
+(or x8204 (not x8071))
+(or x8204 (not x8160))
+(or x8204 (not x8158))
+(or x8204 (not x8159))
+(or x8071 x8160 x8158 x8159 (not x8204))
+(or x8205 x8159)
+(or x8205 x8158)
+(or (not x8159) (not x8158) (not x8205))
+(or x8161 (not x8205) (not x8204) (not x8202) x8206)
+(or (not x8206) (not x8161))
+(or (not x8206) x8205)
+(or (not x8206) x8204)
+(or (not x8206) x8202)
+(or x8118 (not x8166))
+(or x8118 (not x8163))
+(or x8118 (not x8078))
+(or x8118 (not x8134))
+(or x8118 (not x8164))
+(or x8118 (not x8165))
+(or x8118 (not x8206))
+(or x8166 x8163 x8078 x8134 x8164 x8165 x8206 (not x8118))
+(or x8117 x8165)
+(or x8117 x8164)
+(or (not x8165) (not x8164) (not x8117))
+(or x8116 (not x8207))
+(or x8116 x8166)
+(or x8207 (not x8166) (not x8116))
+(or x8115 x8078)
+(or x8115 (not x8208))
+(or (not x8078) x8208 (not x8115))
+(or (not x8098) x8097 x8096 x8095 x8177 x8209)
+(or (not x8209) x8098)
+(or (not x8209) (not x8097))
+(or (not x8209) (not x8096))
+(or (not x8209) (not x8095))
+(or (not x8209) (not x8177))
+(or (not x8098) x8097 x8096 x8095 (not x8177) (not x8093) x8210)
+(or (not x8210) x8098)
+(or (not x8210) (not x8097))
+(or (not x8210) (not x8096))
+(or (not x8210) (not x8095))
+(or (not x8210) x8177)
+(or (not x8210) x8093)
+(or x8193 (not x8210))
+(or x8193 (not x8209))
+(or x8210 x8209 (not x8193))
+(or (not x8098) x8097 x8096 x8095 (not x8177) x8211)
+(or (not x8211) x8098)
+(or (not x8211) (not x8097))
+(or (not x8211) (not x8096))
+(or (not x8211) (not x8095))
+(or (not x8211) x8177)
+(or x8212 (not x8211))
+(or x8212 (not x8210))
+(or x8212 (not x8209))
+(or x8211 x8210 x8209 (not x8212))
+(or x8160 x8158 x8159 x8166 x8163 x8078 x8134 x8164 x8165 (not x8212) x8213)
+(or (not x8213) (not x8160))
+(or (not x8213) (not x8158))
+(or (not x8213) (not x8159))
+(or (not x8213) (not x8166))
+(or (not x8213) (not x8163))
+(or (not x8213) (not x8078))
+(or (not x8213) (not x8134))
+(or (not x8213) (not x8164))
+(or (not x8213) (not x8165))
+(or (not x8213) x8212)
+(or x8114 x8071)
+(or x8114 (not x8213))
+(or (not x8071) x8213 (not x8114))
+(or x8113 (not x8214))
+(or x8113 x8134)
+(or x8214 (not x8134) (not x8113))
+(or x8112 (not x8215))
+(or x8112 x8163)
+(or x8215 (not x8163) (not x8112))
+(or x8111 x8162)
+(or x8111 x8078)
+(or (not x8162) (not x8078) (not x8111))
+(or (not x8144) (not x8028) (not x8027) x8110 (not x8111) (not x8112) (not x8113) (not x8114) (not x8115) (not x8116) (not x8117) (not x8118) (not x8119) (not x8216) (not x8181) (not x8217) (not x8218) (not x8183) (not x8219) (not x8108) x8220)
+(or (not x8220) x8144)
+(or (not x8220) x8028)
+(or (not x8220) x8027)
+(or (not x8220) (not x8110))
+(or (not x8220) x8111)
+(or (not x8220) x8112)
+(or (not x8220) x8113)
+(or (not x8220) x8114)
+(or (not x8220) x8115)
+(or (not x8220) x8116)
+(or (not x8220) x8117)
+(or (not x8220) x8118)
+(or (not x8220) x8119)
+(or (not x8220) x8216)
+(or (not x8220) x8181)
+(or (not x8220) x8217)
+(or (not x8220) x8218)
+(or (not x8220) x8183)
+(or (not x8220) x8219)
+(or (not x8220) x8108)
+(or x8221 x8028)
+(or x8221 x8027)
+(or x8221 (not x8110))
+(or x8221 (not x8222))
+(or x8221 (not x8223))
+(or x8221 (not x8224))
+(or x8221 (not x8225))
+(or x8221 (not x8226))
+(or x8221 (not x8227))
+(or x8221 (not x8228))
+(or x8221 (not x8229))
+(or x8221 (not x8230))
+(or x8221 (not x8231))
+(or x8221 (not x8232))
+(or x8221 (not x8233))
+(or x8221 (not x8234))
+(or x8221 (not x8235))
+(or x8221 (not x8236))
+(or x8221 (not x8092))
+(or (not x8028) (not x8027) x8110 x8222 x8223 x8224 x8225 x8226 x8227 x8228 x8229 x8230 x8231 x8232 x8233 x8234 x8235 x8236 x8092 (not x8221))
+(or x8237 x8028)
+(or x8237 x8027)
+(or x8237 (not x8110))
+(or x8237 (not x8222))
+(or x8237 (not x8223))
+(or x8237 (not x8224))
+(or x8237 (not x8225))
+(or x8237 (not x8226))
+(or x8237 (not x8227))
+(or x8237 (not x8228))
+(or x8237 (not x8229))
+(or x8237 (not x8230))
+(or x8237 (not x8231))
+(or x8237 (not x8232))
+(or x8237 (not x8233))
+(or x8237 (not x8234))
+(or x8237 (not x8235))
+(or x8237 (not x8236))
+(or x8237 x8106)
+(or (not x8028) (not x8027) x8110 x8222 x8223 x8224 x8225 x8226 x8227 x8228 x8229 x8230 x8231 x8232 x8233 x8234 x8235 x8236 (not x8106) (not x8237))
+(or (not x8237) (not x8221) x8238)
+(or (not x8238) x8237)
+(or (not x8238) x8221)
+(or x8239 (not x8238))
+(or x8239 (not x8220))
+(or x8238 x8220 (not x8239))
+(or (not x8108) (not x8240) x8241)
+(or (not x8241) x8108)
+(or (not x8241) x8240)
+(or (not x8098) x8097 x8096 x8095 (not x8242) x8243)
+(or (not x8243) x8098)
+(or (not x8243) (not x8097))
+(or (not x8243) (not x8096))
+(or (not x8243) (not x8095))
+(or (not x8243) x8242)
+(or x8244 (not x8243))
+(or x8244 (not x8241))
+(or x8243 x8241 (not x8244))
+(or (not x8108) (not x8245) x8246)
+(or (not x8246) x8108)
+(or (not x8246) x8245)
+(or x8247 (not x8092))
+(or x8247 (not x8246))
+(or x8092 x8246 (not x8247))
+(or x8164 x8165 (not x8163) (not x8028) (not x8027) x8071 x8166 x8134 x8078 x8110 x8158 x8159 x8160 x8161 x8248)
+(or (not x8248) (not x8164))
+(or (not x8248) (not x8165))
+(or (not x8248) x8163)
+(or (not x8248) x8028)
+(or (not x8248) x8027)
+(or (not x8248) (not x8071))
+(or (not x8248) (not x8166))
+(or (not x8248) (not x8134))
+(or (not x8248) (not x8078))
+(or (not x8248) (not x8110))
+(or (not x8248) (not x8158))
+(or (not x8248) (not x8159))
+(or (not x8248) (not x8160))
+(or (not x8248) (not x8161))
+(or (not x8180) (not x8181) (not x8182) (not x8183) x8249)
+(or (not x8249) x8180)
+(or (not x8249) x8181)
+(or (not x8249) x8182)
+(or (not x8249) x8183)
+(or x8250 (not x8251))
+(or x8250 (not x8252))
+(or x8250 (not x8233))
+(or x8250 (not x8232))
+(or x8250 (not x8253))
+(or x8250 (not x8254))
+(or x8250 (not x8236))
+(or x8250 (not x8235))
+(or x8250 (not x8122))
+(or x8250 (not x8123))
+(or x8251 x8252 x8233 x8232 x8253 x8254 x8236 x8235 x8122 x8123 (not x8250))
+(or (not x8216) (not x8181) (not x8217) (not x8218) (not x8183) (not x8219) x8154)
+(or (not x8154) x8216)
+(or (not x8154) x8181)
+(or (not x8154) x8217)
+(or (not x8154) x8218)
+(or (not x8154) x8183)
+(or (not x8154) x8219)
+(or x8168 (not x8154))
+(or x8168 (not x8252))
+(or x8168 (not x8232))
+(or x8168 (not x8254))
+(or x8168 (not x8235))
+(or x8168 x8144)
+(or x8154 x8252 x8232 x8254 x8235 (not x8144) (not x8168))
+(or (not x8168) (not x8250) (not x8180) (not x8181) (not x8182) (not x8183) x8078 x8158 x8159 x8160 x8161 x8163 x8110 x8164 x8165 x8071 x8166 x8255)
+(or (not x8255) x8168)
+(or (not x8255) x8250)
+(or (not x8255) x8180)
+(or (not x8255) x8181)
+(or (not x8255) x8182)
+(or (not x8255) x8183)
+(or (not x8255) (not x8078))
+(or (not x8255) (not x8158))
+(or (not x8255) (not x8159))
+(or (not x8255) (not x8160))
+(or (not x8255) (not x8161))
+(or (not x8255) (not x8163))
+(or (not x8255) (not x8110))
+(or (not x8255) (not x8164))
+(or (not x8255) (not x8165))
+(or (not x8255) (not x8071))
+(or (not x8255) (not x8166))
+(or x8155 (not x8081))
+(or x8155 (not x8079))
+(or x8155 (not x8080))
+(or x8155 x8109)
+(or x8155 x8145)
+(or x8081 x8079 x8080 (not x8109) (not x8145) (not x8155))
+(or (not x8155) (not x8080) (not x8156) (not x8157) x8134 x8158 x8159 x8160 x8161 x8162 (not x8078) x8163 x8110 x8164 x8165 x8071 x8166 x8187)
+(or (not x8187) x8155)
+(or (not x8187) x8080)
+(or (not x8187) x8156)
+(or (not x8187) x8157)
+(or (not x8187) (not x8134))
+(or (not x8187) (not x8158))
+(or (not x8187) (not x8159))
+(or (not x8187) (not x8160))
+(or (not x8187) (not x8161))
+(or (not x8187) (not x8162))
+(or (not x8187) x8078)
+(or (not x8187) (not x8163))
+(or (not x8187) (not x8110))
+(or (not x8187) (not x8164))
+(or (not x8187) (not x8165))
+(or (not x8187) (not x8071))
+(or (not x8187) (not x8166))
+(or x8256 (not x8187))
+(or x8256 (not x8255))
+(or x8187 x8255 (not x8256))
+(or (not x8028) (not x8027) (not x8134) (not x8256) x8257)
+(or (not x8257) x8028)
+(or (not x8257) x8027)
+(or (not x8257) x8134)
+(or (not x8257) x8256)
+(or x8258 (not x8257))
+(or x8258 (not x8248))
+(or x8257 x8248 (not x8258))
+(or (not x8259) (not x8260) x8230)
+(or (not x8230) x8259)
+(or (not x8230) x8260)
+(or (not x8261) (not x8160) x8262)
+(or (not x8262) x8261)
+(or (not x8262) x8160)
+(or x8071 x8160 x8158 x8159 x8263)
+(or (not x8263) (not x8071))
+(or (not x8263) (not x8160))
+(or (not x8263) (not x8158))
+(or (not x8263) (not x8159))
+(or (not x8159) (not x8158) x8264)
+(or (not x8264) x8159)
+(or (not x8264) x8158)
+(or x8265 (not x8161))
+(or x8265 (not x8264))
+(or x8265 (not x8263))
+(or x8265 (not x8262))
+(or x8161 x8264 x8263 x8262 (not x8265))
+(or x8166 x8163 x8078 x8134 x8164 x8165 x8201)
+(or (not x8201) (not x8166))
+(or (not x8201) (not x8163))
+(or (not x8201) (not x8078))
+(or (not x8201) (not x8134))
+(or (not x8201) (not x8164))
+(or (not x8201) (not x8165))
+(or x8166 x8163 x8078 x8134 x8164 x8165 (not x8265) x8229)
+(or (not x8229) (not x8166))
+(or (not x8229) (not x8163))
+(or (not x8229) (not x8078))
+(or (not x8229) (not x8134))
+(or (not x8229) (not x8164))
+(or (not x8229) (not x8165))
+(or (not x8229) x8265)
+(or (not x8165) (not x8164) x8228)
+(or (not x8228) x8165)
+(or (not x8228) x8164)
+(or (not x8266) (not x8166) x8227)
+(or (not x8227) x8266)
+(or (not x8227) x8166)
+(or (not x8078) (not x8267) x8226)
+(or (not x8226) x8078)
+(or (not x8226) x8267)
+(or x8174 x8098)
+(or x8174 (not x8097))
+(or x8174 (not x8096))
+(or x8174 (not x8095))
+(or x8174 (not x8177))
+(or (not x8098) x8097 x8096 x8095 x8177 (not x8174))
+(or x8173 x8098)
+(or x8173 (not x8097))
+(or x8173 (not x8096))
+(or x8173 (not x8095))
+(or x8173 x8177)
+(or x8173 x8093)
+(or (not x8098) x8097 x8096 x8095 (not x8177) (not x8093) (not x8173))
+(or x8268 x8098)
+(or x8268 (not x8097))
+(or x8268 (not x8096))
+(or x8268 (not x8095))
+(or x8268 x8177)
+(or (not x8098) x8097 x8096 x8095 (not x8177) (not x8268))
+(or (not x8268) (not x8173) (not x8174) x8269)
+(or (not x8269) x8268)
+(or (not x8269) x8173)
+(or (not x8269) x8174)
+(or x8260 (not x8166))
+(or x8260 (not x8163))
+(or x8260 (not x8078))
+(or x8260 (not x8134))
+(or x8260 (not x8164))
+(or x8260 (not x8165))
+(or x8166 x8163 x8078 x8134 x8164 x8165 (not x8260))
+(or x8270 (not x8160))
+(or x8270 (not x8158))
+(or x8270 (not x8159))
+(or x8270 (not x8166))
+(or x8270 (not x8163))
+(or x8270 (not x8078))
+(or x8270 (not x8134))
+(or x8270 (not x8164))
+(or x8270 (not x8165))
+(or x8270 (not x8269))
+(or x8160 x8158 x8159 x8166 x8163 x8078 x8134 x8164 x8165 x8269 (not x8270))
+(or (not x8071) (not x8270) x8225)
+(or (not x8225) x8071)
+(or (not x8225) x8270)
+(or (not x8271) (not x8134) x8224)
+(or (not x8224) x8271)
+(or (not x8224) x8134)
+(or (not x8272) (not x8163) x8223)
+(or (not x8223) x8272)
+(or (not x8223) x8163)
+(or (not x8162) (not x8078) x8222)
+(or (not x8222) x8162)
+(or (not x8222) x8078)
+(or x8273 x8028)
+(or x8273 x8027)
+(or x8273 (not x8110))
+(or x8273 (not x8222))
+(or x8273 (not x8223))
+(or x8273 (not x8224))
+(or x8273 (not x8225))
+(or x8273 (not x8226))
+(or x8273 (not x8227))
+(or x8273 (not x8228))
+(or x8273 (not x8229))
+(or x8273 (not x8230))
+(or (not x8028) (not x8027) x8110 x8222 x8223 x8224 x8225 x8226 x8227 x8228 x8229 x8230 (not x8273))
+(or x8161 (not x8028) (not x8027) x8158 x8159 (not x8160) x8163 x8110 x8164 x8165 x8071 x8166 x8134 x8078 x8274)
+(or (not x8274) (not x8161))
+(or (not x8274) x8028)
+(or (not x8274) x8027)
+(or (not x8274) (not x8158))
+(or (not x8274) (not x8159))
+(or (not x8274) x8160)
+(or (not x8274) (not x8163))
+(or (not x8274) (not x8110))
+(or (not x8274) (not x8164))
+(or (not x8274) (not x8165))
+(or (not x8274) (not x8071))
+(or (not x8274) (not x8166))
+(or (not x8274) (not x8134))
+(or (not x8274) (not x8078))
+(or x8156 (not x8145))
+(or x8156 (not x8081))
+(or x8156 (not x8079))
+(or x8156 (not x8080))
+(or x8156 x8109)
+(or x8145 x8081 x8079 x8080 (not x8109) (not x8156))
+(or x8081 x8079 x8080 (not x8109) (not x8145) x8275)
+(or (not x8275) (not x8081))
+(or (not x8275) (not x8079))
+(or (not x8275) (not x8080))
+(or (not x8275) x8109)
+(or (not x8275) x8145)
+(or x8276 (not x8275))
+(or x8276 x8080)
+(or x8275 (not x8080) (not x8276))
+(or (not x8028) (not x8027) (not x8276) (not x8156) (not x8157) x8134 x8158 x8159 x8160 x8161 x8162 (not x8078) x8163 x8110 x8164 x8165 x8071 x8166 x8277)
+(or (not x8277) x8028)
+(or (not x8277) x8027)
+(or (not x8277) x8276)
+(or (not x8277) x8156)
+(or (not x8277) x8157)
+(or (not x8277) (not x8134))
+(or (not x8277) (not x8158))
+(or (not x8277) (not x8159))
+(or (not x8277) (not x8160))
+(or (not x8277) (not x8161))
+(or (not x8277) (not x8162))
+(or (not x8277) x8078)
+(or (not x8277) (not x8163))
+(or (not x8277) (not x8110))
+(or (not x8277) (not x8164))
+(or (not x8277) (not x8165))
+(or (not x8277) (not x8071))
+(or (not x8277) (not x8166))
+(or x8163 x8165 (not x8164) (not x8028) (not x8027) x8071 x8166 x8134 x8078 x8110 x8158 x8159 x8160 x8161 x8278)
+(or (not x8278) (not x8163))
+(or (not x8278) (not x8165))
+(or (not x8278) x8164)
+(or (not x8278) x8028)
+(or (not x8278) x8027)
+(or (not x8278) (not x8071))
+(or (not x8278) (not x8166))
+(or (not x8278) (not x8134))
+(or (not x8278) (not x8078))
+(or (not x8278) (not x8110))
+(or (not x8278) (not x8158))
+(or (not x8278) (not x8159))
+(or (not x8278) (not x8160))
+(or (not x8278) (not x8161))
+(or x8088 x8070 x8085)
+(or (not x8085) (not x8088))
+(or (not x8085) (not x8070))
+(or x8157 (not x8085))
+(or x8157 (not x8079))
+(or x8157 (not x8080))
+(or x8157 x8081)
+(or x8085 x8079 x8080 (not x8081) (not x8157))
+(or (not x8157) x8145 x8081 x8079 x8080 (not x8109) x8279)
+(or (not x8279) x8157)
+(or (not x8279) (not x8145))
+(or (not x8279) (not x8081))
+(or (not x8279) (not x8079))
+(or (not x8279) (not x8080))
+(or (not x8279) x8109)
+(or x8077 (not x8088))
+(or x8077 (not x8070))
+(or x8088 x8070 (not x8077))
+(or (not x8077) x8079 x8080 (not x8081) x8280)
+(or (not x8280) x8077)
+(or (not x8280) (not x8079))
+(or (not x8280) (not x8080))
+(or (not x8280) x8081)
+(or x8281 (not x8280))
+(or x8281 (not x8279))
+(or x8280 x8279 (not x8281))
+(or (not x8028) (not x8027) x8134 x8158 x8159 x8160 x8161 x8162 (not x8078) x8163 x8110 x8164 x8165 x8071 x8166 (not x8281) x8282)
+(or (not x8282) x8028)
+(or (not x8282) x8027)
+(or (not x8282) (not x8134))
+(or (not x8282) (not x8158))
+(or (not x8282) (not x8159))
+(or (not x8282) (not x8160))
+(or (not x8282) (not x8161))
+(or (not x8282) (not x8162))
+(or (not x8282) x8078)
+(or (not x8282) (not x8163))
+(or (not x8282) (not x8110))
+(or (not x8282) (not x8164))
+(or (not x8282) (not x8165))
+(or (not x8282) (not x8071))
+(or (not x8282) (not x8166))
+(or (not x8282) x8281)
+(or x8283 (not x8284))
+(or x8283 (not x8285))
+(or x8283 (not x8286))
+(or x8283 (not x8287))
+(or x8283 (not x8289))
+(or x8284 x8285 x8286 x8287 x8289 (not x8283))
+(or x8290 (not x8289))
+(or x8290 (not x8288))
+(or x8290 x150)
+(or x8290 (not x151))
+(or x8290 x8028)
+(or x8290 x8027)
+(or x8289 x8288 (not x150) x151 (not x8028) (not x8027) (not x8290))
+(or (not x8290) (not x8291) (not x8283) x8292)
+(or (not x8292) x8290)
+(or (not x8292) x8291)
+(or (not x8292) x8283)
+(or x8293 (not x8284))
+(or x8293 (not x8285))
+(or x8293 (not x8286))
+(or x8293 (not x8287))
+(or x8293 (not x8288))
+(or x8284 x8285 x8286 x8287 x8288 (not x8293))
+(or x8291 (not x8284))
+(or x8291 (not x8285))
+(or x8291 (not x8286))
+(or x8291 x8289)
+(or x8291 x8288)
+(or x8284 x8285 x8286 (not x8289) (not x8288) (not x8291))
+(or x8289 x8288 (not x150) x151 (not x8028) (not x8027) x8284)
+(or (not x8284) (not x8289))
+(or (not x8284) (not x8288))
+(or (not x8284) x150)
+(or (not x8284) (not x151))
+(or (not x8284) x8028)
+(or (not x8284) x8027)
+(or x8294 (not x8284))
+(or x8294 (not x8289))
+(or x8294 x8288)
+(or x8284 x8289 (not x8288) (not x8294))
+(or (not x8294) (not x8291) (not x8293) x8295)
+(or (not x8295) x8294)
+(or (not x8295) x8291)
+(or (not x8295) x8293)
+(or x8296 (not x8297))
+(or x8296 (not x8298))
+(or x8296 (not x8299))
+(or x8296 (not x8300))
+(or x8296 (not x8302))
+(or x8297 x8298 x8299 x8300 x8302 (not x8296))
+(or x8303 (not x8302))
+(or x8303 (not x8301))
+(or x8303 x150)
+(or x8303 (not x151))
+(or x8303 x8028)
+(or x8303 x8027)
+(or x8302 x8301 (not x150) x151 (not x8028) (not x8027) (not x8303))
+(or (not x8303) (not x8304) (not x8296) x8305)
+(or (not x8305) x8303)
+(or (not x8305) x8304)
+(or (not x8305) x8296)
+(or x8306 (not x8297))
+(or x8306 (not x8298))
+(or x8306 (not x8299))
+(or x8306 (not x8300))
+(or x8306 (not x8301))
+(or x8297 x8298 x8299 x8300 x8301 (not x8306))
+(or x8304 (not x8297))
+(or x8304 (not x8298))
+(or x8304 (not x8299))
+(or x8304 x8302)
+(or x8304 x8301)
+(or x8297 x8298 x8299 (not x8302) (not x8301) (not x8304))
+(or x8302 x8301 (not x150) x151 (not x8028) (not x8027) x8297)
+(or (not x8297) (not x8302))
+(or (not x8297) (not x8301))
+(or (not x8297) x150)
+(or (not x8297) (not x151))
+(or (not x8297) x8028)
+(or (not x8297) x8027)
+(or x8307 (not x8297))
+(or x8307 (not x8302))
+(or x8307 x8301)
+(or x8297 x8302 (not x8301) (not x8307))
+(or (not x8307) (not x8304) (not x8306) x8308)
+(or (not x8308) x8307)
+(or (not x8308) x8304)
+(or (not x8308) x8306)
+(or x8309 (not x8144))
+(or x8309 (not x8310))
+(or x8309 (not x8311))
+(or x8309 (not x8252))
+(or x8309 (not x8232))
+(or x8309 (not x8254))
+(or x8309 (not x8235))
+(or x8309 (not x8231))
+(or x8309 (not x8232))
+(or x8309 (not x8233))
+(or x8309 (not x8234))
+(or x8309 (not x8235))
+(or x8309 (not x8236))
+(or x8144 x8310 x8311 x8252 x8232 x8254 x8235 x8231 x8232 x8233 x8234 x8235 x8236 (not x8309))
+(or (not x8135) (not x8136) (not x8309) x8312)
+(or (not x8312) x8135)
+(or (not x8312) x8136)
+(or (not x8312) x8309)
+(or x8313 (not x8028))
+(or x8313 (not x8027))
+(or x8028 x8027 (not x8313))
+(or x8028 x8027 x8314)
+(or (not x8314) (not x8028))
+(or (not x8314) (not x8027))
+(or x8315 (not x8314))
+(or x8315 (not x8028))
+(or x8315 x8027)
+(or x8314 x8028 (not x8027) (not x8315))
+(or x8316 (not x8317))
+(or x8316 (not x8318))
+(or x8316 (not x8319))
+(or x8316 (not x8320))
+(or x8316 (not x8321))
+(or x8316 (not x8322))
+(or x8316 (not x8253))
+(or x8316 (not x8323))
+(or x8316 (not x8324))
+(or x8316 (not x8325))
+(or x8316 (not x8326))
+(or x8316 (not x8330))
+(or x8317 x8318 x8319 x8320 x8321 x8322 x8253 x8323 x8324 x8325 x8326 x8330 (not x8316))
+(or (not x8331) (not x8332) (not x8333) (not x8334) (not x8335) (not x8336) (not x8337) (not x8338) (not x8339) (not x8340) (not x8341) (not x8316) x8342)
+(or (not x8342) x8331)
+(or (not x8342) x8332)
+(or (not x8342) x8333)
+(or (not x8342) x8334)
+(or (not x8342) x8335)
+(or (not x8342) x8336)
+(or (not x8342) x8337)
+(or (not x8342) x8338)
+(or (not x8342) x8339)
+(or (not x8342) x8340)
+(or (not x8342) x8341)
+(or (not x8342) x8316)
+(or x8343 (not x8317))
+(or x8343 (not x8318))
+(or x8343 (not x8319))
+(or x8343 (not x8320))
+(or x8343 (not x8321))
+(or x8343 (not x8322))
+(or x8343 (not x8253))
+(or x8343 (not x8323))
+(or x8343 (not x8324))
+(or x8343 (not x8325))
+(or x8343 (not x8326))
+(or x8343 (not x8329))
+(or x8317 x8318 x8319 x8320 x8321 x8322 x8253 x8323 x8324 x8325 x8326 x8329 (not x8343))
+(or x8344 x8345)
+(or x8344 (not x8346))
+(or (not x8345) x8346 (not x8344))
+(or (not x8344) (not x8345) x8347)
+(or (not x8347) x8344)
+(or (not x8347) x8345)
+(or x8348 (not x8317))
+(or x8348 (not x8318))
+(or x8348 (not x8319))
+(or x8348 (not x8320))
+(or x8348 (not x8321))
+(or x8348 (not x8322))
+(or x8348 (not x8253))
+(or x8348 (not x8323))
+(or x8348 (not x8330))
+(or x8348 (not x8329))
+(or x8348 (not x8328))
+(or x8348 x8327)
+(or x8348 (not x152))
+(or x8348 (not x151))
+(or x8348 (not x8347))
+(or x8317 x8318 x8319 x8320 x8321 x8322 x8253 x8323 x8330 x8329 x8328 (not x8327) x152 x151 x8347 (not x8348))
+(or x8349 (not x8317))
+(or x8349 (not x8318))
+(or x8349 (not x8319))
+(or x8349 (not x8320))
+(or x8349 (not x8321))
+(or x8349 (not x8322))
+(or x8349 (not x8330))
+(or x8349 (not x8329))
+(or x8349 x8328)
+(or x8349 x8327)
+(or x8349 x8350)
+(or x8349 x8351)
+(or x8349 x8352)
+(or x8317 x8318 x8319 x8320 x8321 x8322 x8330 x8329 (not x8328) (not x8327) (not x8350) (not x8351) (not x8352) (not x8349))
+(or x8353 (not x8317))
+(or x8353 (not x8318))
+(or x8353 (not x8319))
+(or x8353 (not x8320))
+(or x8353 (not x8330))
+(or x8353 (not x8329))
+(or x8353 x8328)
+(or x8353 (not x8327))
+(or x8353 (not x8354))
+(or x8353 x8355)
+(or x8353 x8356)
+(or x8317 x8318 x8319 x8320 x8330 x8329 (not x8328) x8327 x8354 (not x8355) (not x8356) (not x8353))
+(or x8357 (not x8317))
+(or x8357 (not x8330))
+(or x8357 (not x8329))
+(or x8357 (not x8328))
+(or x8357 (not x8327))
+(or x8357 (not x151))
+(or x8357 x8028)
+(or x8357 x8027)
+(or x8357 (not x8354))
+(or x8357 (not x8358))
+(or x8357 (not x8359))
+(or x8357 x8360)
+(or x8317 x8330 x8329 x8328 x8327 x151 (not x8028) (not x8027) x8354 x8358 x8359 (not x8360) (not x8357))
+(or x8361 x8362)
+(or x8361 x8363)
+(or x8361 x8364)
+(or (not x8362) (not x8363) (not x8364) (not x8361))
+(or (not x8361) (not x8362) x8365)
+(or (not x8365) x8361)
+(or (not x8365) x8362)
+(or x8366 x8367)
+(or x8366 (not x8365))
+(or (not x8367) x8365 (not x8366))
+(or (not x8366) (not x8367) x8368)
+(or (not x8368) x8366)
+(or (not x8368) x8367)
+(or x8369 (not x8330))
+(or x8369 (not x8329))
+(or x8369 (not x8328))
+(or x8369 (not x8327))
+(or x8369 (not x151))
+(or x8369 x8028)
+(or x8369 x8027)
+(or x8369 (not x8354))
+(or x8369 (not x8370))
+(or x8369 (not x8368))
+(or x8330 x8329 x8328 x8327 x151 (not x8028) (not x8027) x8354 x8370 x8368 (not x8369))
+(or (not x8369) (not x8357) (not x8333) (not x8334) (not x8353) (not x8336) (not x8349) (not x8338) (not x8348) (not x8341) (not x8343) x8371)
+(or (not x8371) x8369)
+(or (not x8371) x8357)
+(or (not x8371) x8333)
+(or (not x8371) x8334)
+(or (not x8371) x8353)
+(or (not x8371) x8336)
+(or (not x8371) x8349)
+(or (not x8371) x8338)
+(or (not x8371) x8348)
+(or (not x8371) x8341)
+(or (not x8371) x8343)
+(or x8372 (not x8317))
+(or x8372 (not x8318))
+(or x8372 (not x8319))
+(or x8372 (not x8320))
+(or x8372 (not x8321))
+(or x8372 (not x8322))
+(or x8372 (not x8253))
+(or x8372 (not x8323))
+(or x8372 (not x8324))
+(or x8372 (not x8325))
+(or x8372 (not x8326))
+(or x8372 (not x8328))
+(or x8317 x8318 x8319 x8320 x8321 x8322 x8253 x8323 x8324 x8325 x8326 x8328 (not x8372))
+(or x8340 (not x8317))
+(or x8340 (not x8318))
+(or x8340 (not x8319))
+(or x8340 (not x8320))
+(or x8340 (not x8321))
+(or x8340 (not x8322))
+(or x8340 (not x8253))
+(or x8340 (not x8323))
+(or x8340 (not x8324))
+(or x8340 (not x8330))
+(or x8340 x8329)
+(or x8340 x8328)
+(or x8340 (not x8327))
+(or x8340 (not x152))
+(or x8340 (not x151))
+(or x8317 x8318 x8319 x8320 x8321 x8322 x8253 x8323 x8324 x8330 (not x8329) (not x8328) x8327 x152 x151 (not x8340))
+(or x8373 x8346)
+(or x8373 x8374)
+(or (not x8346) (not x8374) (not x8373))
+(or (not x8373) (not x8346) x8375)
+(or (not x8375) x8373)
+(or (not x8375) x8346)
+(or x8376 (not x8317))
+(or x8376 (not x8318))
+(or x8376 (not x8319))
+(or x8376 (not x8320))
+(or x8376 (not x8321))
+(or x8376 (not x8322))
+(or x8376 (not x8253))
+(or x8376 (not x8323))
+(or x8376 (not x8330))
+(or x8376 (not x8329))
+(or x8376 (not x8328))
+(or x8376 x8327)
+(or x8376 (not x152))
+(or x8376 (not x151))
+(or x8376 x8345)
+(or x8376 (not x8375))
+(or x8317 x8318 x8319 x8320 x8321 x8322 x8253 x8323 x8330 x8329 x8328 (not x8327) x152 x151 (not x8345) x8375 (not x8376))
+(or x8377 x8352)
+(or x8377 (not x8378))
+(or (not x8352) x8378 (not x8377))
+(or (not x8377) (not x8352) x8379)
+(or (not x8379) x8377)
+(or (not x8379) x8352)
+(or x8380 x8350)
+(or x8380 x8351)
+(or x8380 (not x8379))
+(or (not x8350) (not x8351) x8379 (not x8380))
+(or (not x8380) (not x8350) x8381)
+(or (not x8381) x8380)
+(or (not x8381) x8350)
+(or x8382 (not x8317))
+(or x8382 (not x8318))
+(or x8382 (not x8319))
+(or x8382 (not x8320))
+(or x8382 (not x8321))
+(or x8382 (not x8322))
+(or x8382 (not x8330))
+(or x8382 (not x8329))
+(or x8382 x8328)
+(or x8382 x8327)
+(or x8382 (not x8381))
+(or x8317 x8318 x8319 x8320 x8321 x8322 x8330 x8329 (not x8328) (not x8327) x8381 (not x8382))
+(or x8383 x8356)
+(or x8383 (not x8384))
+(or (not x8356) x8384 (not x8383))
+(or (not x8383) (not x8356) x8385)
+(or (not x8385) x8383)
+(or (not x8385) x8356)
+(or x8386 (not x8317))
+(or x8386 (not x8318))
+(or x8386 (not x8319))
+(or x8386 (not x8320))
+(or x8386 (not x8330))
+(or x8386 (not x8329))
+(or x8386 x8328)
+(or x8386 (not x8327))
+(or x8386 (not x8354))
+(or x8386 x8355)
+(or x8386 (not x8385))
+(or x8317 x8318 x8319 x8320 x8330 x8329 (not x8328) x8327 x8354 (not x8355) x8385 (not x8386))
+(or x8387 (not x8317))
+(or x8387 (not x8330))
+(or x8387 (not x8329))
+(or x8387 (not x8328))
+(or x8387 (not x8327))
+(or x8387 (not x151))
+(or x8387 x8028)
+(or x8387 x8027)
+(or x8387 (not x8354))
+(or x8387 (not x8358))
+(or x8387 (not x8359))
+(or x8387 (not x8360))
+(or x8317 x8330 x8329 x8328 x8327 x151 (not x8028) (not x8027) x8354 x8358 x8359 x8360 (not x8387))
+(or x8388 x8367)
+(or x8388 x8362)
+(or x8388 x8363)
+(or x8388 (not x8364))
+(or (not x8367) (not x8362) (not x8363) x8364 (not x8388))
+(or (not x8388) (not x8367) x8389)
+(or (not x8389) x8388)
+(or (not x8389) x8367)
+(or x8390 (not x8330))
+(or x8390 (not x8329))
+(or x8390 (not x8328))
+(or x8390 (not x8327))
+(or x8390 (not x151))
+(or x8390 x8028)
+(or x8390 x8027)
+(or x8390 (not x8354))
+(or x8390 (not x8370))
+(or x8390 (not x8389))
+(or x8330 x8329 x8328 x8327 x151 (not x8028) (not x8027) x8354 x8370 x8389 (not x8390))
+(or (not x8390) (not x8387) (not x8334) (not x8386) (not x8382) (not x8338) (not x8376) (not x8340) (not x8341) (not x8372) x8391)
+(or (not x8391) x8390)
+(or (not x8391) x8387)
+(or (not x8391) x8334)
+(or (not x8391) x8386)
+(or (not x8391) x8382)
+(or (not x8391) x8338)
+(or (not x8391) x8376)
+(or (not x8391) x8340)
+(or (not x8391) x8341)
+(or (not x8391) x8372)
+(or x8392 (not x8234))
+(or x8392 (not x8236))
+(or x8392 (not x8235))
+(or x8234 x8236 x8235 (not x8392))
+(or (not x8392) (not x151) x8326)
+(or (not x8326) x8392)
+(or (not x8326) x151)
+(or x8393 (not x8317))
+(or x8393 (not x8318))
+(or x8393 (not x8319))
+(or x8393 (not x8320))
+(or x8393 (not x8321))
+(or x8393 (not x8322))
+(or x8393 (not x8253))
+(or x8393 (not x8323))
+(or x8393 (not x8324))
+(or x8393 (not x8325))
+(or x8393 (not x8326))
+(or x8393 (not x8327))
+(or x8317 x8318 x8319 x8320 x8321 x8322 x8253 x8323 x8324 x8325 x8326 x8327 (not x8393))
+(or x8218 (not x8330))
+(or x8218 x8329)
+(or x8218 (not x8328))
+(or x8218 (not x8327))
+(or x8330 (not x8329) x8328 x8327 (not x8218))
+(or (not x8218) (not x8219) (not x8183) x8394)
+(or (not x8394) x8218)
+(or (not x8394) x8219)
+(or (not x8394) x8183)
+(or x8330 (not x8329) (not x8328) x8327 x152 x151 x8325)
+(or (not x8325) (not x8330))
+(or (not x8325) x8329)
+(or (not x8325) x8328)
+(or (not x8325) (not x8327))
+(or (not x8325) (not x152))
+(or (not x8325) (not x151))
+(or x8330 x8329 x8328 (not x8327) x152 x151 x8324)
+(or (not x8324) (not x8330))
+(or (not x8324) (not x8329))
+(or (not x8324) (not x8328))
+(or (not x8324) x8327)
+(or (not x8324) (not x152))
+(or (not x8324) (not x151))
+(or x8341 (not x8317))
+(or x8341 (not x8318))
+(or x8341 (not x8319))
+(or x8341 (not x8320))
+(or x8341 (not x8321))
+(or x8341 (not x8322))
+(or x8341 (not x8253))
+(or x8341 (not x8323))
+(or x8341 (not x8324))
+(or x8341 (not x8325))
+(or x8341 (not x8394))
+(or x8341 x151)
+(or x8317 x8318 x8319 x8320 x8321 x8322 x8253 x8323 x8324 x8325 x8394 (not x151) (not x8341))
+(or x8395 x8374)
+(or x8395 x8396)
+(or (not x8374) (not x8396) (not x8395))
+(or (not x8395) (not x8374) x8397)
+(or (not x8397) x8395)
+(or (not x8397) x8374)
+(or x8330 x8329 x8328 (not x8327) x152 (not x151) x8323)
+(or (not x8323) (not x8330))
+(or (not x8323) (not x8329))
+(or (not x8323) (not x8328))
+(or (not x8323) x8327)
+(or (not x8323) (not x152))
+(or (not x8323) x151)
+(or x8339 (not x8317))
+(or x8339 (not x8318))
+(or x8339 (not x8319))
+(or x8339 (not x8320))
+(or x8339 (not x8321))
+(or x8339 (not x8322))
+(or x8339 (not x8253))
+(or x8339 (not x8323))
+(or x8339 (not x8330))
+(or x8339 (not x8329))
+(or x8339 (not x8328))
+(or x8339 x8327)
+(or x8339 (not x152))
+(or x8339 (not x151))
+(or x8317 x8318 x8319 x8320 x8321 x8322 x8253 x8323 x8330 x8329 x8328 (not x8327) x152 x151 (not x8339))
+(or x8398 (not x8317))
+(or x8398 (not x8318))
+(or x8398 (not x8319))
+(or x8398 (not x8320))
+(or x8398 (not x8321))
+(or x8398 (not x8322))
+(or x8398 (not x8253))
+(or x8398 (not x8323))
+(or x8398 (not x8330))
+(or x8398 (not x8329))
+(or x8398 (not x8328))
+(or x8398 x8327)
+(or x8398 (not x152))
+(or x8398 (not x151))
+(or x8398 x8345)
+(or x8398 x8346)
+(or x8398 (not x8397))
+(or x8317 x8318 x8319 x8320 x8321 x8322 x8253 x8323 x8330 x8329 x8328 (not x8327) x152 x151 (not x8345) (not x8346) x8397 (not x8398))
+(or x8338 (not x8317))
+(or x8338 (not x8318))
+(or x8338 (not x8319))
+(or x8338 (not x8320))
+(or x8338 (not x8321))
+(or x8338 (not x8322))
+(or x8338 (not x8253))
+(or x8338 (not x8330))
+(or x8338 (not x8329))
+(or x8338 (not x8328))
+(or x8338 x8327)
+(or x8338 (not x152))
+(or x8338 x151)
+(or x8317 x8318 x8319 x8320 x8321 x8322 x8253 x8330 x8329 x8328 (not x8327) x152 (not x151) (not x8338))
+(or x8399 x8351)
+(or x8399 (not x8352))
+(or (not x8351) x8352 (not x8399))
+(or (not x8399) (not x8351) x8400)
+(or (not x8400) x8399)
+(or (not x8400) x8351)
+(or x8337 (not x8317))
+(or x8337 (not x8318))
+(or x8337 (not x8319))
+(or x8337 (not x8320))
+(or x8337 (not x8321))
+(or x8337 (not x8322))
+(or x8337 (not x8330))
+(or x8337 (not x8329))
+(or x8337 x8328)
+(or x8337 x8327)
+(or x8317 x8318 x8319 x8320 x8321 x8322 x8330 x8329 (not x8328) (not x8327) (not x8337))
+(or x8401 (not x8317))
+(or x8401 (not x8318))
+(or x8401 (not x8319))
+(or x8401 (not x8320))
+(or x8401 (not x8321))
+(or x8401 (not x8322))
+(or x8401 (not x8330))
+(or x8401 (not x8329))
+(or x8401 x8328)
+(or x8401 x8327)
+(or x8401 x8350)
+(or x8401 (not x8400))
+(or x8317 x8318 x8319 x8320 x8321 x8322 x8330 x8329 (not x8328) (not x8327) (not x8350) x8400 (not x8401))
+(or x8330 x8329 (not x8328) x8327 (not x8402) x8321)
+(or (not x8321) (not x8330))
+(or (not x8321) (not x8329))
+(or (not x8321) x8328)
+(or (not x8321) (not x8327))
+(or (not x8321) x8402)
+(or x8336 (not x8317))
+(or x8336 (not x8318))
+(or x8336 (not x8319))
+(or x8336 (not x8320))
+(or x8336 (not x8321))
+(or x8336 (not x8330))
+(or x8336 (not x8329))
+(or x8336 x8328)
+(or x8336 (not x8327))
+(or x8317 x8318 x8319 x8320 x8321 x8330 x8329 (not x8328) x8327 (not x8336))
+(or x8403 x8355)
+(or x8403 x8356)
+(or x8403 x8384)
+(or x8403 x8404)
+(or (not x8355) (not x8356) (not x8384) (not x8404) (not x8403))
+(or (not x8403) (not x8355) x8405)
+(or (not x8405) x8403)
+(or (not x8405) x8355)
+(or x8330 x8329 (not x8328) x8327 (not x151) (not x152) x8320)
+(or (not x8320) (not x8330))
+(or (not x8320) (not x8329))
+(or (not x8320) x8328)
+(or (not x8320) (not x8327))
+(or (not x8320) x151)
+(or (not x8320) x152)
+(or x8335 (not x8317))
+(or x8335 (not x8318))
+(or x8335 (not x8319))
+(or x8335 (not x8320))
+(or x8335 (not x8330))
+(or x8335 (not x8329))
+(or x8335 x8328)
+(or x8335 (not x8327))
+(or x8335 (not x8354))
+(or x8317 x8318 x8319 x8320 x8330 x8329 (not x8328) x8327 x8354 (not x8335))
+(or x8406 (not x8317))
+(or x8406 (not x8318))
+(or x8406 (not x8319))
+(or x8406 (not x8320))
+(or x8406 (not x8330))
+(or x8406 (not x8329))
+(or x8406 x8328)
+(or x8406 (not x8327))
+(or x8406 (not x8354))
+(or x8406 (not x8405))
+(or x8317 x8318 x8319 x8320 x8330 x8329 (not x8328) x8327 x8354 x8405 (not x8406))
+(or x8334 (not x8317))
+(or x8334 (not x8318))
+(or x8334 (not x8319))
+(or x8334 (not x8330))
+(or x8334 (not x8329))
+(or x8334 x8328)
+(or x8334 (not x8327))
+(or x8334 x151)
+(or x8334 x152)
+(or x8317 x8318 x8319 x8330 x8329 (not x8328) x8327 (not x151) (not x152) (not x8334))
+(or x8330 x8329 x8328 x8327 x151 (not x8028) (not x8027) (not x8402) (not x8407) (not x8408) x8318)
+(or (not x8318) (not x8330))
+(or (not x8318) (not x8329))
+(or (not x8318) (not x8328))
+(or (not x8318) (not x8327))
+(or (not x8318) (not x151))
+(or (not x8318) x8028)
+(or (not x8318) x8027)
+(or (not x8318) x8402)
+(or (not x8318) x8407)
+(or (not x8318) x8408)
+(or x8333 (not x8317))
+(or x8333 (not x8318))
+(or x8333 (not x8330))
+(or x8333 (not x8329))
+(or x8333 (not x8328))
+(or x8333 (not x8327))
+(or x8333 (not x151))
+(or x8333 x8028)
+(or x8333 x8027)
+(or x8317 x8318 x8330 x8329 x8328 x8327 x151 (not x8028) (not x8027) (not x8333))
+(or (not x8289) (not x8288) x8287)
+(or (not x8287) x8289)
+(or (not x8287) x8288)
+(or (not x8289) x8288 x8286)
+(or (not x8286) x8289)
+(or (not x8286) (not x8288))
+(or x8289 (not x8288) x8285)
+(or (not x8285) (not x8289))
+(or (not x8285) x8288)
+(or x8289 x8288 (not x150) x151 x8409)
+(or (not x8409) (not x8289))
+(or (not x8409) (not x8288))
+(or (not x8409) x150)
+(or (not x8409) (not x151))
+(or x8402 (not x8409))
+(or x8402 (not x8285))
+(or x8402 (not x8286))
+(or x8402 (not x8287))
+(or x8409 x8285 x8286 x8287 (not x8402))
+(or x8330 x8329 x8328 x8327 x151 (not x8028) (not x8027) x8319)
+(or (not x8319) (not x8330))
+(or (not x8319) (not x8329))
+(or (not x8319) (not x8328))
+(or (not x8319) (not x8327))
+(or (not x8319) (not x151))
+(or (not x8319) x8028)
+(or (not x8319) x8027)
+(or x8330 x8329 x8328 x8327 x151 (not x8028) (not x8027) (not x8402) (not x8410) x8317)
+(or (not x8317) (not x8330))
+(or (not x8317) (not x8329))
+(or (not x8317) (not x8328))
+(or (not x8317) (not x8327))
+(or (not x8317) (not x151))
+(or (not x8317) x8028)
+(or (not x8317) x8027)
+(or (not x8317) x8402)
+(or (not x8317) x8410)
+(or x8332 (not x8317))
+(or x8332 (not x8330))
+(or x8332 (not x8329))
+(or x8332 (not x8328))
+(or x8332 (not x8327))
+(or x8332 (not x151))
+(or x8332 x8028)
+(or x8332 x8027)
+(or x8332 (not x8354))
+(or x8332 (not x8358))
+(or x8332 (not x8359))
+(or x8317 x8330 x8329 x8328 x8327 x151 (not x8028) (not x8027) x8354 x8358 x8359 (not x8332))
+(or x8411 (not x8317))
+(or x8411 (not x8330))
+(or x8411 (not x8329))
+(or x8411 (not x8328))
+(or x8411 (not x8327))
+(or x8411 (not x151))
+(or x8411 x8028)
+(or x8411 x8027)
+(or x8411 (not x8354))
+(or x8411 (not x8358))
+(or x8411 (not x8359))
+(or x8411 x8360)
+(or x8411 x8412)
+(or x8317 x8330 x8329 x8328 x8327 x151 (not x8028) (not x8027) x8354 x8358 x8359 (not x8360) (not x8412) (not x8411))
+(or x8413 x8363)
+(or x8413 x8364)
+(or (not x8363) (not x8364) (not x8413))
+(or (not x8413) (not x8363) x8414)
+(or (not x8414) x8413)
+(or (not x8414) x8363)
+(or x8415 x8289)
+(or x8415 x8288)
+(or (not x8289) (not x8288) (not x8415))
+(or x8416 x8289)
+(or x8416 (not x8288))
+(or (not x8289) x8288 (not x8416))
+(or x8417 (not x8289))
+(or x8417 x8288)
+(or x8289 (not x8288) (not x8417))
+(or x8418 (not x8289))
+(or x8418 (not x8288))
+(or x8418 x150)
+(or x8418 (not x151))
+(or x8289 x8288 (not x150) x151 (not x8418))
+(or (not x8418) (not x8417) (not x8416) (not x8415) x8354)
+(or (not x8354) x8418)
+(or (not x8354) x8417)
+(or (not x8354) x8416)
+(or (not x8354) x8415)
+(or x8331 (not x8330))
+(or x8331 (not x8329))
+(or x8331 (not x8328))
+(or x8331 (not x8327))
+(or x8331 (not x151))
+(or x8331 x8028)
+(or x8331 x8027)
+(or x8331 (not x8354))
+(or x8331 (not x8370))
+(or x8330 x8329 x8328 x8327 x151 (not x8028) (not x8027) x8354 x8370 (not x8331))
+(or x8419 (not x8330))
+(or x8419 (not x8329))
+(or x8419 (not x8328))
+(or x8419 (not x8327))
+(or x8419 (not x151))
+(or x8419 x8028)
+(or x8419 x8027)
+(or x8419 (not x8354))
+(or x8419 (not x8370))
+(or x8419 x8367)
+(or x8419 x8362)
+(or x8419 (not x8414))
+(or x8330 x8329 x8328 x8327 x151 (not x8028) (not x8027) x8354 x8370 (not x8367) (not x8362) x8414 (not x8419))
+(or (not x8419) (not x8411) (not x8333) (not x8334) (not x8406) (not x8336) (not x8401) (not x8338) (not x8398) (not x8341) (not x8393) x8420)
+(or (not x8420) x8419)
+(or (not x8420) x8411)
+(or (not x8420) x8333)
+(or (not x8420) x8334)
+(or (not x8420) x8406)
+(or (not x8420) x8336)
+(or (not x8420) x8401)
+(or (not x8420) x8338)
+(or (not x8420) x8398)
+(or (not x8420) x8341)
+(or (not x8420) x8393)
+(or x8421 (not x8422))
+(or x8421 (not x8423))
+(or x8421 (not x8424))
+(or x8421 (not x8425))
+(or x8421 (not x8426))
+(or x8421 (not x8427))
+(or x8421 (not x8251))
+(or x8421 (not x8428))
+(or x8421 (not x8429))
+(or x8421 (not x8430))
+(or x8421 (not x8431))
+(or x8421 (not x8435))
+(or x8422 x8423 x8424 x8425 x8426 x8427 x8251 x8428 x8429 x8430 x8431 x8435 (not x8421))
+(or (not x8436) (not x8437) (not x8438) (not x8439) (not x8440) (not x8441) (not x8442) (not x8443) (not x8444) (not x8445) (not x8446) (not x8421) x8447)
+(or (not x8447) x8436)
+(or (not x8447) x8437)
+(or (not x8447) x8438)
+(or (not x8447) x8439)
+(or (not x8447) x8440)
+(or (not x8447) x8441)
+(or (not x8447) x8442)
+(or (not x8447) x8443)
+(or (not x8447) x8444)
+(or (not x8447) x8445)
+(or (not x8447) x8446)
+(or (not x8447) x8421)
+(or x8448 (not x8422))
+(or x8448 (not x8423))
+(or x8448 (not x8424))
+(or x8448 (not x8425))
+(or x8448 (not x8426))
+(or x8448 (not x8427))
+(or x8448 (not x8251))
+(or x8448 (not x8428))
+(or x8448 (not x8429))
+(or x8448 (not x8430))
+(or x8448 (not x8431))
+(or x8448 (not x8434))
+(or x8422 x8423 x8424 x8425 x8426 x8427 x8251 x8428 x8429 x8430 x8431 x8434 (not x8448))
+(or x8449 x8450)
+(or x8449 (not x8451))
+(or (not x8450) x8451 (not x8449))
+(or (not x8449) (not x8450) x8452)
+(or (not x8452) x8449)
+(or (not x8452) x8450)
+(or x8453 (not x8422))
+(or x8453 (not x8423))
+(or x8453 (not x8424))
+(or x8453 (not x8425))
+(or x8453 (not x8426))
+(or x8453 (not x8427))
+(or x8453 (not x8251))
+(or x8453 (not x8428))
+(or x8453 (not x8435))
+(or x8453 (not x8434))
+(or x8453 (not x8433))
+(or x8453 x8432)
+(or x8453 (not x152))
+(or x8453 (not x151))
+(or x8453 (not x8452))
+(or x8422 x8423 x8424 x8425 x8426 x8427 x8251 x8428 x8435 x8434 x8433 (not x8432) x152 x151 x8452 (not x8453))
+(or x8454 (not x8422))
+(or x8454 (not x8423))
+(or x8454 (not x8424))
+(or x8454 (not x8425))
+(or x8454 (not x8426))
+(or x8454 (not x8427))
+(or x8454 (not x8435))
+(or x8454 (not x8434))
+(or x8454 x8433)
+(or x8454 x8432)
+(or x8454 x8455)
+(or x8454 x8456)
+(or x8454 x8457)
+(or x8422 x8423 x8424 x8425 x8426 x8427 x8435 x8434 (not x8433) (not x8432) (not x8455) (not x8456) (not x8457) (not x8454))
+(or x8458 (not x8422))
+(or x8458 (not x8423))
+(or x8458 (not x8424))
+(or x8458 (not x8425))
+(or x8458 (not x8435))
+(or x8458 (not x8434))
+(or x8458 x8433)
+(or x8458 (not x8432))
+(or x8458 (not x8459))
+(or x8458 x8460)
+(or x8458 x8461)
+(or x8422 x8423 x8424 x8425 x8435 x8434 (not x8433) x8432 x8459 (not x8460) (not x8461) (not x8458))
+(or x8462 (not x8422))
+(or x8462 (not x8435))
+(or x8462 (not x8434))
+(or x8462 (not x8433))
+(or x8462 (not x8432))
+(or x8462 (not x151))
+(or x8462 x8028)
+(or x8462 x8027)
+(or x8462 (not x8459))
+(or x8462 (not x8358))
+(or x8462 (not x8359))
+(or x8462 x8463)
+(or x8422 x8435 x8434 x8433 x8432 x151 (not x8028) (not x8027) x8459 x8358 x8359 (not x8463) (not x8462))
+(or x8464 x8465)
+(or x8464 x8466)
+(or x8464 x8467)
+(or (not x8465) (not x8466) (not x8467) (not x8464))
+(or (not x8464) (not x8465) x8468)
+(or (not x8468) x8464)
+(or (not x8468) x8465)
+(or x8469 x8470)
+(or x8469 (not x8468))
+(or (not x8470) x8468 (not x8469))
+(or (not x8469) (not x8470) x8471)
+(or (not x8471) x8469)
+(or (not x8471) x8470)
+(or x8472 (not x8435))
+(or x8472 (not x8434))
+(or x8472 (not x8433))
+(or x8472 (not x8432))
+(or x8472 (not x151))
+(or x8472 x8028)
+(or x8472 x8027)
+(or x8472 (not x8459))
+(or x8472 (not x8370))
+(or x8472 (not x8471))
+(or x8435 x8434 x8433 x8432 x151 (not x8028) (not x8027) x8459 x8370 x8471 (not x8472))
+(or (not x8472) (not x8462) (not x8438) (not x8439) (not x8458) (not x8441) (not x8454) (not x8443) (not x8453) (not x8446) (not x8448) x8473)
+(or (not x8473) x8472)
+(or (not x8473) x8462)
+(or (not x8473) x8438)
+(or (not x8473) x8439)
+(or (not x8473) x8458)
+(or (not x8473) x8441)
+(or (not x8473) x8454)
+(or (not x8473) x8443)
+(or (not x8473) x8453)
+(or (not x8473) x8446)
+(or (not x8473) x8448)
+(or x8474 (not x8422))
+(or x8474 (not x8423))
+(or x8474 (not x8424))
+(or x8474 (not x8425))
+(or x8474 (not x8426))
+(or x8474 (not x8427))
+(or x8474 (not x8251))
+(or x8474 (not x8428))
+(or x8474 (not x8429))
+(or x8474 (not x8430))
+(or x8474 (not x8431))
+(or x8474 (not x8433))
+(or x8422 x8423 x8424 x8425 x8426 x8427 x8251 x8428 x8429 x8430 x8431 x8433 (not x8474))
+(or x8445 (not x8422))
+(or x8445 (not x8423))
+(or x8445 (not x8424))
+(or x8445 (not x8425))
+(or x8445 (not x8426))
+(or x8445 (not x8427))
+(or x8445 (not x8251))
+(or x8445 (not x8428))
+(or x8445 (not x8429))
+(or x8445 (not x8435))
+(or x8445 x8434)
+(or x8445 x8433)
+(or x8445 (not x8432))
+(or x8445 (not x152))
+(or x8445 (not x151))
+(or x8422 x8423 x8424 x8425 x8426 x8427 x8251 x8428 x8429 x8435 (not x8434) (not x8433) x8432 x152 x151 (not x8445))
+(or x8475 x8451)
+(or x8475 x8476)
+(or (not x8451) (not x8476) (not x8475))
+(or (not x8475) (not x8451) x8477)
+(or (not x8477) x8475)
+(or (not x8477) x8451)
+(or x8478 (not x8422))
+(or x8478 (not x8423))
+(or x8478 (not x8424))
+(or x8478 (not x8425))
+(or x8478 (not x8426))
+(or x8478 (not x8427))
+(or x8478 (not x8251))
+(or x8478 (not x8428))
+(or x8478 (not x8435))
+(or x8478 (not x8434))
+(or x8478 (not x8433))
+(or x8478 x8432)
+(or x8478 (not x152))
+(or x8478 (not x151))
+(or x8478 x8450)
+(or x8478 (not x8477))
+(or x8422 x8423 x8424 x8425 x8426 x8427 x8251 x8428 x8435 x8434 x8433 (not x8432) x152 x151 (not x8450) x8477 (not x8478))
+(or x8479 x8457)
+(or x8479 (not x8480))
+(or (not x8457) x8480 (not x8479))
+(or (not x8479) (not x8457) x8481)
+(or (not x8481) x8479)
+(or (not x8481) x8457)
+(or x8482 x8455)
+(or x8482 x8456)
+(or x8482 (not x8481))
+(or (not x8455) (not x8456) x8481 (not x8482))
+(or (not x8482) (not x8455) x8483)
+(or (not x8483) x8482)
+(or (not x8483) x8455)
+(or x8484 (not x8422))
+(or x8484 (not x8423))
+(or x8484 (not x8424))
+(or x8484 (not x8425))
+(or x8484 (not x8426))
+(or x8484 (not x8427))
+(or x8484 (not x8435))
+(or x8484 (not x8434))
+(or x8484 x8433)
+(or x8484 x8432)
+(or x8484 (not x8483))
+(or x8422 x8423 x8424 x8425 x8426 x8427 x8435 x8434 (not x8433) (not x8432) x8483 (not x8484))
+(or x8485 x8461)
+(or x8485 (not x8486))
+(or (not x8461) x8486 (not x8485))
+(or (not x8485) (not x8461) x8487)
+(or (not x8487) x8485)
+(or (not x8487) x8461)
+(or x8488 (not x8422))
+(or x8488 (not x8423))
+(or x8488 (not x8424))
+(or x8488 (not x8425))
+(or x8488 (not x8435))
+(or x8488 (not x8434))
+(or x8488 x8433)
+(or x8488 (not x8432))
+(or x8488 (not x8459))
+(or x8488 x8460)
+(or x8488 (not x8487))
+(or x8422 x8423 x8424 x8425 x8435 x8434 (not x8433) x8432 x8459 (not x8460) x8487 (not x8488))
+(or x8489 (not x8422))
+(or x8489 (not x8435))
+(or x8489 (not x8434))
+(or x8489 (not x8433))
+(or x8489 (not x8432))
+(or x8489 (not x151))
+(or x8489 x8028)
+(or x8489 x8027)
+(or x8489 (not x8459))
+(or x8489 (not x8358))
+(or x8489 (not x8359))
+(or x8489 (not x8463))
+(or x8422 x8435 x8434 x8433 x8432 x151 (not x8028) (not x8027) x8459 x8358 x8359 x8463 (not x8489))
+(or x8490 x8470)
+(or x8490 x8465)
+(or x8490 x8466)
+(or x8490 (not x8467))
+(or (not x8470) (not x8465) (not x8466) x8467 (not x8490))
+(or (not x8490) (not x8470) x8491)
+(or (not x8491) x8490)
+(or (not x8491) x8470)
+(or x8492 (not x8435))
+(or x8492 (not x8434))
+(or x8492 (not x8433))
+(or x8492 (not x8432))
+(or x8492 (not x151))
+(or x8492 x8028)
+(or x8492 x8027)
+(or x8492 (not x8459))
+(or x8492 (not x8370))
+(or x8492 (not x8491))
+(or x8435 x8434 x8433 x8432 x151 (not x8028) (not x8027) x8459 x8370 x8491 (not x8492))
+(or (not x8492) (not x8489) (not x8439) (not x8488) (not x8484) (not x8443) (not x8478) (not x8445) (not x8446) (not x8474) x8493)
+(or (not x8493) x8492)
+(or (not x8493) x8489)
+(or (not x8493) x8439)
+(or (not x8493) x8488)
+(or (not x8493) x8484)
+(or (not x8493) x8443)
+(or (not x8493) x8478)
+(or (not x8493) x8445)
+(or (not x8493) x8446)
+(or (not x8493) x8474)
+(or x8494 (not x8231))
+(or x8494 (not x8233))
+(or x8494 (not x8232))
+(or x8231 x8233 x8232 (not x8494))
+(or (not x8494) (not x151) x8431)
+(or (not x8431) x8494)
+(or (not x8431) x151)
+(or x8495 (not x8422))
+(or x8495 (not x8423))
+(or x8495 (not x8424))
+(or x8495 (not x8425))
+(or x8495 (not x8426))
+(or x8495 (not x8427))
+(or x8495 (not x8251))
+(or x8495 (not x8428))
+(or x8495 (not x8429))
+(or x8495 (not x8430))
+(or x8495 (not x8431))
+(or x8495 (not x8432))
+(or x8422 x8423 x8424 x8425 x8426 x8427 x8251 x8428 x8429 x8430 x8431 x8432 (not x8495))
+(or x8216 (not x8435))
+(or x8216 x8434)
+(or x8216 (not x8433))
+(or x8216 (not x8432))
+(or x8435 (not x8434) x8433 x8432 (not x8216))
+(or (not x8216) (not x8217) (not x8181) x8496)
+(or (not x8496) x8216)
+(or (not x8496) x8217)
+(or (not x8496) x8181)
+(or x8435 (not x8434) (not x8433) x8432 x152 x151 x8430)
+(or (not x8430) (not x8435))
+(or (not x8430) x8434)
+(or (not x8430) x8433)
+(or (not x8430) (not x8432))
+(or (not x8430) (not x152))
+(or (not x8430) (not x151))
+(or x8435 x8434 x8433 (not x8432) x152 x151 x8429)
+(or (not x8429) (not x8435))
+(or (not x8429) (not x8434))
+(or (not x8429) (not x8433))
+(or (not x8429) x8432)
+(or (not x8429) (not x152))
+(or (not x8429) (not x151))
+(or x8446 (not x8422))
+(or x8446 (not x8423))
+(or x8446 (not x8424))
+(or x8446 (not x8425))
+(or x8446 (not x8426))
+(or x8446 (not x8427))
+(or x8446 (not x8251))
+(or x8446 (not x8428))
+(or x8446 (not x8429))
+(or x8446 (not x8430))
+(or x8446 (not x8496))
+(or x8446 x151)
+(or x8422 x8423 x8424 x8425 x8426 x8427 x8251 x8428 x8429 x8430 x8496 (not x151) (not x8446))
+(or x8497 x8476)
+(or x8497 x8498)
+(or (not x8476) (not x8498) (not x8497))
+(or (not x8497) (not x8476) x8499)
+(or (not x8499) x8497)
+(or (not x8499) x8476)
+(or x8435 x8434 x8433 (not x8432) x152 (not x151) x8428)
+(or (not x8428) (not x8435))
+(or (not x8428) (not x8434))
+(or (not x8428) (not x8433))
+(or (not x8428) x8432)
+(or (not x8428) (not x152))
+(or (not x8428) x151)
+(or x8444 (not x8422))
+(or x8444 (not x8423))
+(or x8444 (not x8424))
+(or x8444 (not x8425))
+(or x8444 (not x8426))
+(or x8444 (not x8427))
+(or x8444 (not x8251))
+(or x8444 (not x8428))
+(or x8444 (not x8435))
+(or x8444 (not x8434))
+(or x8444 (not x8433))
+(or x8444 x8432)
+(or x8444 (not x152))
+(or x8444 (not x151))
+(or x8422 x8423 x8424 x8425 x8426 x8427 x8251 x8428 x8435 x8434 x8433 (not x8432) x152 x151 (not x8444))
+(or x8500 (not x8422))
+(or x8500 (not x8423))
+(or x8500 (not x8424))
+(or x8500 (not x8425))
+(or x8500 (not x8426))
+(or x8500 (not x8427))
+(or x8500 (not x8251))
+(or x8500 (not x8428))
+(or x8500 (not x8435))
+(or x8500 (not x8434))
+(or x8500 (not x8433))
+(or x8500 x8432)
+(or x8500 (not x152))
+(or x8500 (not x151))
+(or x8500 x8450)
+(or x8500 x8451)
+(or x8500 (not x8499))
+(or x8422 x8423 x8424 x8425 x8426 x8427 x8251 x8428 x8435 x8434 x8433 (not x8432) x152 x151 (not x8450) (not x8451) x8499 (not x8500))
+(or x8443 (not x8422))
+(or x8443 (not x8423))
+(or x8443 (not x8424))
+(or x8443 (not x8425))
+(or x8443 (not x8426))
+(or x8443 (not x8427))
+(or x8443 (not x8251))
+(or x8443 (not x8435))
+(or x8443 (not x8434))
+(or x8443 (not x8433))
+(or x8443 x8432)
+(or x8443 (not x152))
+(or x8443 x151)
+(or x8422 x8423 x8424 x8425 x8426 x8427 x8251 x8435 x8434 x8433 (not x8432) x152 (not x151) (not x8443))
+(or x8501 x8456)
+(or x8501 (not x8457))
+(or (not x8456) x8457 (not x8501))
+(or (not x8501) (not x8456) x8502)
+(or (not x8502) x8501)
+(or (not x8502) x8456)
+(or x8442 (not x8422))
+(or x8442 (not x8423))
+(or x8442 (not x8424))
+(or x8442 (not x8425))
+(or x8442 (not x8426))
+(or x8442 (not x8427))
+(or x8442 (not x8435))
+(or x8442 (not x8434))
+(or x8442 x8433)
+(or x8442 x8432)
+(or x8422 x8423 x8424 x8425 x8426 x8427 x8435 x8434 (not x8433) (not x8432) (not x8442))
+(or x8503 (not x8422))
+(or x8503 (not x8423))
+(or x8503 (not x8424))
+(or x8503 (not x8425))
+(or x8503 (not x8426))
+(or x8503 (not x8427))
+(or x8503 (not x8435))
+(or x8503 (not x8434))
+(or x8503 x8433)
+(or x8503 x8432)
+(or x8503 x8455)
+(or x8503 (not x8502))
+(or x8422 x8423 x8424 x8425 x8426 x8427 x8435 x8434 (not x8433) (not x8432) (not x8455) x8502 (not x8503))
+(or x8435 x8434 (not x8433) x8432 (not x8504) x8426)
+(or (not x8426) (not x8435))
+(or (not x8426) (not x8434))
+(or (not x8426) x8433)
+(or (not x8426) (not x8432))
+(or (not x8426) x8504)
+(or x8441 (not x8422))
+(or x8441 (not x8423))
+(or x8441 (not x8424))
+(or x8441 (not x8425))
+(or x8441 (not x8426))
+(or x8441 (not x8435))
+(or x8441 (not x8434))
+(or x8441 x8433)
+(or x8441 (not x8432))
+(or x8422 x8423 x8424 x8425 x8426 x8435 x8434 (not x8433) x8432 (not x8441))
+(or x8505 x8460)
+(or x8505 x8461)
+(or x8505 x8486)
+(or x8505 x8506)
+(or (not x8460) (not x8461) (not x8486) (not x8506) (not x8505))
+(or (not x8505) (not x8460) x8507)
+(or (not x8507) x8505)
+(or (not x8507) x8460)
+(or x8435 x8434 (not x8433) x8432 (not x151) (not x152) x8425)
+(or (not x8425) (not x8435))
+(or (not x8425) (not x8434))
+(or (not x8425) x8433)
+(or (not x8425) (not x8432))
+(or (not x8425) x151)
+(or (not x8425) x152)
+(or x8440 (not x8422))
+(or x8440 (not x8423))
+(or x8440 (not x8424))
+(or x8440 (not x8425))
+(or x8440 (not x8435))
+(or x8440 (not x8434))
+(or x8440 x8433)
+(or x8440 (not x8432))
+(or x8440 (not x8459))
+(or x8422 x8423 x8424 x8425 x8435 x8434 (not x8433) x8432 x8459 (not x8440))
+(or x8508 (not x8422))
+(or x8508 (not x8423))
+(or x8508 (not x8424))
+(or x8508 (not x8425))
+(or x8508 (not x8435))
+(or x8508 (not x8434))
+(or x8508 x8433)
+(or x8508 (not x8432))
+(or x8508 (not x8459))
+(or x8508 (not x8507))
+(or x8422 x8423 x8424 x8425 x8435 x8434 (not x8433) x8432 x8459 x8507 (not x8508))
+(or x8439 (not x8422))
+(or x8439 (not x8423))
+(or x8439 (not x8424))
+(or x8439 (not x8435))
+(or x8439 (not x8434))
+(or x8439 x8433)
+(or x8439 (not x8432))
+(or x8439 x151)
+(or x8439 x152)
+(or x8422 x8423 x8424 x8435 x8434 (not x8433) x8432 (not x151) (not x152) (not x8439))
+(or x8435 x8434 x8433 x8432 x151 (not x8028) (not x8027) (not x8504) (not x8407) (not x8408) x8423)
+(or (not x8423) (not x8435))
+(or (not x8423) (not x8434))
+(or (not x8423) (not x8433))
+(or (not x8423) (not x8432))
+(or (not x8423) (not x151))
+(or (not x8423) x8028)
+(or (not x8423) x8027)
+(or (not x8423) x8504)
+(or (not x8423) x8407)
+(or (not x8423) x8408)
+(or x8438 (not x8422))
+(or x8438 (not x8423))
+(or x8438 (not x8435))
+(or x8438 (not x8434))
+(or x8438 (not x8433))
+(or x8438 (not x8432))
+(or x8438 (not x151))
+(or x8438 x8028)
+(or x8438 x8027)
+(or x8422 x8423 x8435 x8434 x8433 x8432 x151 (not x8028) (not x8027) (not x8438))
+(or (not x8198) (not x8240) x8359)
+(or (not x8359) x8198)
+(or (not x8359) x8240)
+(or (not x8135) (not x8136) (not x8245) x8358)
+(or (not x8358) x8135)
+(or (not x8358) x8136)
+(or (not x8358) x8245)
+(or x8410 (not x8358))
+(or x8410 (not x8359))
+(or x8358 x8359 (not x8410))
+(or (not x8302) (not x8301) x8300)
+(or (not x8300) x8302)
+(or (not x8300) x8301)
+(or (not x8302) x8301 x8299)
+(or (not x8299) x8302)
+(or (not x8299) (not x8301))
+(or x8302 (not x8301) x8298)
+(or (not x8298) (not x8302))
+(or (not x8298) x8301)
+(or (not x150) x151 x8012)
+(or (not x8012) x150)
+(or (not x8012) (not x151))
+(or x8302 x8301 (not x150) x151 x8509)
+(or (not x8509) (not x8302))
+(or (not x8509) (not x8301))
+(or (not x8509) x150)
+(or (not x8509) (not x151))
+(or x8504 (not x8509))
+(or x8504 (not x8298))
+(or x8504 (not x8299))
+(or x8504 (not x8300))
+(or x8509 x8298 x8299 x8300 (not x8504))
+(or x8435 x8434 x8433 x8432 x151 (not x8028) (not x8027) x8424)
+(or (not x8424) (not x8435))
+(or (not x8424) (not x8434))
+(or (not x8424) (not x8433))
+(or (not x8424) (not x8432))
+(or (not x8424) (not x151))
+(or (not x8424) x8028)
+(or (not x8424) x8027)
+(or x8435 x8434 x8433 x8432 x151 (not x8028) (not x8027) (not x8504) (not x8410) x8422)
+(or (not x8422) (not x8435))
+(or (not x8422) (not x8434))
+(or (not x8422) (not x8433))
+(or (not x8422) (not x8432))
+(or (not x8422) (not x151))
+(or (not x8422) x8028)
+(or (not x8422) x8027)
+(or (not x8422) x8504)
+(or (not x8422) x8410)
+(or x8437 (not x8422))
+(or x8437 (not x8435))
+(or x8437 (not x8434))
+(or x8437 (not x8433))
+(or x8437 (not x8432))
+(or x8437 (not x151))
+(or x8437 x8028)
+(or x8437 x8027)
+(or x8437 (not x8459))
+(or x8437 (not x8358))
+(or x8437 (not x8359))
+(or x8422 x8435 x8434 x8433 x8432 x151 (not x8028) (not x8027) x8459 x8358 x8359 (not x8437))
+(or x8510 (not x8422))
+(or x8510 (not x8435))
+(or x8510 (not x8434))
+(or x8510 (not x8433))
+(or x8510 (not x8432))
+(or x8510 (not x151))
+(or x8510 x8028)
+(or x8510 x8027)
+(or x8510 (not x8459))
+(or x8510 (not x8358))
+(or x8510 (not x8359))
+(or x8510 x8463)
+(or x8510 x8511)
+(or x8422 x8435 x8434 x8433 x8432 x151 (not x8028) (not x8027) x8459 x8358 x8359 (not x8463) (not x8511) (not x8510))
+(or x8512 x8466)
+(or x8512 x8467)
+(or (not x8466) (not x8467) (not x8512))
+(or (not x8512) (not x8466) x8513)
+(or (not x8513) x8512)
+(or (not x8513) x8466)
+(or x8148 (not x8134))
+(or x8148 (not x8078))
+(or x8134 x8078 (not x8148))
+(or x8136 (not x8177))
+(or x8136 x8158)
+(or x8136 (not x8159))
+(or x8136 (not x8160))
+(or x8136 (not x8161))
+(or x8136 (not x8163))
+(or x8136 (not x8110))
+(or x8136 (not x8164))
+(or x8136 (not x8165))
+(or x8136 (not x8071))
+(or x8136 (not x8166))
+(or x8136 (not x8134))
+(or x8136 (not x8078))
+(or x8177 (not x8158) x8159 x8160 x8161 x8163 x8110 x8164 x8165 x8071 x8166 x8134 x8078 (not x8136))
+(or x8261 (not x8158))
+(or x8261 (not x8159))
+(or x8158 x8159 (not x8261))
+(or x8259 (not x8158))
+(or x8259 (not x8159))
+(or x8259 (not x8160))
+(or x8259 (not x8161))
+(or x8158 x8159 x8160 x8161 (not x8259))
+(or x8271 (not x8164))
+(or x8271 (not x8165))
+(or x8164 x8165 (not x8271))
+(or x8267 (not x8134))
+(or x8267 (not x8164))
+(or x8267 (not x8165))
+(or x8134 x8164 x8165 (not x8267))
+(or x8272 (not x8078))
+(or x8272 (not x8134))
+(or x8272 (not x8164))
+(or x8272 (not x8165))
+(or x8078 x8134 x8164 x8165 (not x8272))
+(or x8266 (not x8163))
+(or x8266 (not x8078))
+(or x8266 (not x8134))
+(or x8266 (not x8164))
+(or x8266 (not x8165))
+(or x8163 x8078 x8134 x8164 x8165 (not x8266))
+(or x8135 (not x8163))
+(or x8135 (not x8078))
+(or x8135 (not x8134))
+(or x8135 (not x8164))
+(or x8135 (not x8165))
+(or x8135 (not x8177))
+(or x8135 (not x8071))
+(or x8135 x8166)
+(or x8135 (not x8110))
+(or x8135 (not x8158))
+(or x8135 (not x8159))
+(or x8135 (not x8160))
+(or x8135 (not x8161))
+(or x8163 x8078 x8134 x8164 x8165 x8177 x8071 (not x8166) x8110 x8158 x8159 x8160 x8161 (not x8135))
+(or (not x8135) (not x8136) x8514)
+(or (not x8514) x8135)
+(or (not x8514) x8136)
+(or x8408 (not x8514))
+(or x8408 x8240)
+(or x8514 (not x8240) (not x8408))
+(or x8134 x8078 x8143)
+(or (not x8143) (not x8134))
+(or (not x8143) (not x8078))
+(or x8177 (not x8158) x8159 x8160 x8161 x8163 x8110 x8164 x8165 x8071 x8166 x8134 x8078 x8127)
+(or (not x8127) (not x8177))
+(or (not x8127) x8158)
+(or (not x8127) (not x8159))
+(or (not x8127) (not x8160))
+(or (not x8127) (not x8161))
+(or (not x8127) (not x8163))
+(or (not x8127) (not x8110))
+(or (not x8127) (not x8164))
+(or (not x8127) (not x8165))
+(or (not x8127) (not x8071))
+(or (not x8127) (not x8166))
+(or (not x8127) (not x8134))
+(or (not x8127) (not x8078))
+(or x8158 x8159 x8203)
+(or (not x8203) (not x8158))
+(or (not x8203) (not x8159))
+(or x8158 x8159 x8160 x8161 x8200)
+(or (not x8200) (not x8158))
+(or (not x8200) (not x8159))
+(or (not x8200) (not x8160))
+(or (not x8200) (not x8161))
+(or x8164 x8165 x8214)
+(or (not x8214) (not x8164))
+(or (not x8214) (not x8165))
+(or x8134 x8164 x8165 x8208)
+(or (not x8208) (not x8134))
+(or (not x8208) (not x8164))
+(or (not x8208) (not x8165))
+(or x8078 x8134 x8164 x8165 x8215)
+(or (not x8215) (not x8078))
+(or (not x8215) (not x8134))
+(or (not x8215) (not x8164))
+(or (not x8215) (not x8165))
+(or x8163 x8078 x8134 x8164 x8165 x8207)
+(or (not x8207) (not x8163))
+(or (not x8207) (not x8078))
+(or (not x8207) (not x8134))
+(or (not x8207) (not x8164))
+(or (not x8207) (not x8165))
+(or x8163 x8078 x8134 x8164 x8165 x8177 x8071 (not x8166) x8110 x8158 x8159 x8160 x8161 x8126)
+(or (not x8126) (not x8163))
+(or (not x8126) (not x8078))
+(or (not x8126) (not x8134))
+(or (not x8126) (not x8164))
+(or (not x8126) (not x8165))
+(or (not x8126) (not x8177))
+(or (not x8126) (not x8071))
+(or (not x8126) x8166)
+(or (not x8126) (not x8110))
+(or (not x8126) (not x8158))
+(or (not x8126) (not x8159))
+(or (not x8126) (not x8160))
+(or (not x8126) (not x8161))
+(or x8198 (not x8126))
+(or x8198 (not x8127))
+(or x8126 x8127 (not x8198))
+(or x8407 (not x8126))
+(or x8407 (not x8127))
+(or x8407 x8245)
+(or x8126 x8127 (not x8245) (not x8407))
+(or (not x8407) (not x8408) x8370)
+(or (not x8370) x8407)
+(or (not x8370) x8408)
+(or x8515 x8302)
+(or x8515 x8301)
+(or (not x8302) (not x8301) (not x8515))
+(or x8516 x8302)
+(or x8516 (not x8301))
+(or (not x8302) x8301 (not x8516))
+(or x8517 (not x8302))
+(or x8517 x8301)
+(or x8302 (not x8301) (not x8517))
+(or x8052 x150)
+(or x8052 (not x151))
+(or (not x150) x151 (not x8052))
+(or x8518 (not x8302))
+(or x8518 (not x8301))
+(or x8518 x150)
+(or x8518 (not x151))
+(or x8302 x8301 (not x150) x151 (not x8518))
+(or (not x8518) (not x8517) (not x8516) (not x8515) x8459)
+(or (not x8459) x8518)
+(or (not x8459) x8517)
+(or (not x8459) x8516)
+(or (not x8459) x8515)
+(or x8436 (not x8435))
+(or x8436 (not x8434))
+(or x8436 (not x8433))
+(or x8436 (not x8432))
+(or x8436 (not x151))
+(or x8436 x8028)
+(or x8436 x8027)
+(or x8436 (not x8459))
+(or x8436 (not x8370))
+(or x8435 x8434 x8433 x8432 x151 (not x8028) (not x8027) x8459 x8370 (not x8436))
+(or x8519 (not x8435))
+(or x8519 (not x8434))
+(or x8519 (not x8433))
+(or x8519 (not x8432))
+(or x8519 (not x151))
+(or x8519 x8028)
+(or x8519 x8027)
+(or x8519 (not x8459))
+(or x8519 (not x8370))
+(or x8519 x8470)
+(or x8519 x8465)
+(or x8519 (not x8513))
+(or x8435 x8434 x8433 x8432 x151 (not x8028) (not x8027) x8459 x8370 (not x8470) (not x8465) x8513 (not x8519))
+(or (not x8519) (not x8510) (not x8438) (not x8439) (not x8508) (not x8441) (not x8503) (not x8443) (not x8500) (not x8446) (not x8495) x8520)
+(or (not x8520) x8519)
+(or (not x8520) x8510)
+(or (not x8520) x8438)
+(or (not x8520) x8439)
+(or (not x8520) x8508)
+(or (not x8520) x8441)
+(or (not x8520) x8503)
+(or (not x8520) x8443)
+(or (not x8520) x8500)
+(or (not x8520) x8446)
+(or (not x8520) x8495)
+(or x8521 (not x8522))
+(or x8521 (not x8092))
+(or x8521 (not x8523))
+(or x8521 (not x8098))
+(or x8522 x8092 x8523 x8098 (not x8521))
+(or x8524 (not x8522))
+(or x8524 (not x8092))
+(or x8524 x8098)
+(or x8524 (not x8097))
+(or x8524 (not x8096))
+(or x8524 x8095)
+(or x8524 x8071)
+(or x8524 x8525)
+(or x8522 x8092 (not x8098) x8097 x8096 (not x8095) (not x8071) (not x8525) (not x8524))
+(or x8526 (not x8098))
+(or x8526 x8097)
+(or x8526 x8096)
+(or x8526 x8095)
+(or x8526 x8028)
+(or x8526 x8027)
+(or x8526 x8527)
+(or x8526 x8528)
+(or x8098 (not x8097) (not x8096) (not x8095) (not x8028) (not x8027) (not x8527) (not x8528) (not x8526))
+(or (not x8526) (not x8524) (not x8521) x8529)
+(or (not x8529) x8526)
+(or (not x8529) x8524)
+(or (not x8529) x8521)
+(or x8530 (not x8522))
+(or x8530 (not x8092))
+(or x8530 (not x8523))
+(or x8530 (not x8097))
+(or x8522 x8092 x8523 x8097 (not x8530))
+(or (not x8531) (not x8532) (not x8533) (not x8530) x8534)
+(or (not x8534) x8531)
+(or (not x8534) x8532)
+(or (not x8534) x8533)
+(or (not x8534) x8530)
+(or x8535 (not x8522))
+(or x8535 (not x8092))
+(or x8535 (not x8523))
+(or x8535 (not x8096))
+(or x8522 x8092 x8523 x8096 (not x8535))
+(or x8108 x8098)
+(or x8108 (not x8097))
+(or x8108 (not x8096))
+(or x8108 (not x8095))
+(or (not x8098) x8097 x8096 x8095 (not x8108))
+(or x8532 (not x8522))
+(or x8532 x8098)
+(or x8532 (not x8097))
+(or x8532 (not x8096))
+(or x8532 (not x8095))
+(or x8522 (not x8098) x8097 x8096 x8095 (not x8532))
+(or (not x8531) (not x8532) (not x8533) (not x8535) x8536)
+(or (not x8536) x8531)
+(or (not x8536) x8532)
+(or (not x8536) x8533)
+(or (not x8536) x8535)
+(or (not x8098) x8097 x8096 (not x8095) (not x8071) x8523)
+(or (not x8523) x8098)
+(or (not x8523) (not x8097))
+(or (not x8523) (not x8096))
+(or (not x8523) x8095)
+(or (not x8523) x8071)
+(or x8537 (not x8522))
+(or x8537 (not x8092))
+(or x8537 (not x8523))
+(or x8537 (not x8095))
+(or x8522 x8092 x8523 x8095 (not x8537))
+(or x8098 (not x8097) (not x8096) (not x8095) (not x8028) (not x8027) (not x8527) x8522)
+(or (not x8522) (not x8098))
+(or (not x8522) x8097)
+(or (not x8522) x8096)
+(or (not x8522) x8095)
+(or (not x8522) x8028)
+(or (not x8522) x8027)
+(or (not x8522) x8527)
+(or x8533 (not x8522))
+(or x8533 (not x8092))
+(or x8533 x8098)
+(or x8533 (not x8097))
+(or x8533 (not x8096))
+(or x8533 x8095)
+(or x8533 x8071)
+(or x8533 (not x8525))
+(or x8522 x8092 (not x8098) x8097 x8096 (not x8095) (not x8071) x8525 (not x8533))
+(or x8531 (not x8098))
+(or x8531 x8097)
+(or x8531 x8096)
+(or x8531 x8095)
+(or x8531 x8028)
+(or x8531 x8027)
+(or x8531 x8527)
+(or x8531 (not x8528))
+(or x8098 (not x8097) (not x8096) (not x8095) (not x8028) (not x8027) (not x8527) x8528 (not x8531))
+(or (not x8531) (not x8533) (not x8537) x8538)
+(or (not x8538) x8531)
+(or (not x8538) x8533)
+(or (not x8538) x8537)
+(or (not x8527) (not x8539) (not x8071) x8540)
+(or (not x8540) x8527)
+(or (not x8540) x8539)
+(or (not x8540) x8071)
+(or x8541 x8527)
+(or x8541 (not x8540))
+(or x8541 (not x8527))
+(or (not x8527) x8540 x8527 (not x8541))
+(or x8542 x8527)
+(or x8542 x8527)
+(or x8542 x8539)
+(or x8542 x8071)
+(or x8542 x8543)
+(or (not x8527) (not x8527) (not x8539) (not x8071) (not x8543) (not x8542))
+(or x8544 x8545)
+(or x8544 x8546)
+(or (not x8545) (not x8546) (not x8544))
+(or (not x8544) (not x8545) x8547)
+(or (not x8547) x8544)
+(or (not x8547) x8545)
+(or x8548 (not x8527))
+(or x8548 x8549)
+(or x8548 (not x8547))
+(or x8527 (not x8549) x8547 (not x8548))
+(or (not x8548) (not x8542) (not x8541) x8550)
+(or (not x8550) x8548)
+(or (not x8550) x8542)
+(or (not x8550) x8541)
+(or x8179 (not x8231))
+(or x8179 (not x8232))
+(or x8179 (not x8233))
+(or x8179 (not x8234))
+(or x8179 (not x8235))
+(or x8179 (not x8236))
+(or x8231 x8232 x8233 x8234 x8235 x8236 (not x8179))
+(or x8183 (not x8330))
+(or x8183 x8329)
+(or x8183 x8328)
+(or x8183 (not x8327))
+(or x8330 (not x8329) (not x8328) x8327 (not x8183))
+(or x8219 (not x8330))
+(or x8219 x8329)
+(or x8219 (not x8328))
+(or x8219 x8327)
+(or x8330 (not x8329) x8328 (not x8327) (not x8219))
+(or x8182 (not x8330))
+(or x8182 (not x8329))
+(or x8182 (not x8328))
+(or x8182 x8327)
+(or x8330 x8329 x8328 (not x8327) (not x8182))
+(or x8551 (not x8330))
+(or x8551 (not x8329))
+(or x8551 x8328)
+(or x8551 x8327)
+(or x8330 x8329 (not x8328) (not x8327) (not x8551))
+(or x8181 (not x8435))
+(or x8181 x8434)
+(or x8181 x8433)
+(or x8181 (not x8432))
+(or x8435 (not x8434) (not x8433) x8432 (not x8181))
+(or x8217 (not x8435))
+(or x8217 x8434)
+(or x8217 (not x8433))
+(or x8217 x8432)
+(or x8435 (not x8434) x8433 (not x8432) (not x8217))
+(or x8180 (not x8435))
+(or x8180 (not x8434))
+(or x8180 (not x8433))
+(or x8180 x8432)
+(or x8435 x8434 x8433 (not x8432) (not x8180))
+(or x8552 (not x8435))
+(or x8552 (not x8434))
+(or x8552 x8433)
+(or x8552 x8432)
+(or x8435 x8434 (not x8433) (not x8432) (not x8552))
+(or (not x8552) (not x8180) (not x8217) (not x8181) (not x8551) (not x8182) (not x8219) (not x8183) x8553)
+(or (not x8553) x8552)
+(or (not x8553) x8180)
+(or (not x8553) x8217)
+(or (not x8553) x8181)
+(or (not x8553) x8551)
+(or (not x8553) x8182)
+(or (not x8553) x8219)
+(or (not x8553) x8183)
+(or (not x8552) (not x8180) (not x8217) (not x8181) (not x8551) (not x8182) (not x8219) (not x8183) x8122 x8123 x8311)
+(or (not x8311) x8552)
+(or (not x8311) x8180)
+(or (not x8311) x8217)
+(or (not x8311) x8181)
+(or (not x8311) x8551)
+(or (not x8311) x8182)
+(or (not x8311) x8219)
+(or (not x8311) x8183)
+(or (not x8311) (not x8122))
+(or (not x8311) (not x8123))
+(or x8169 (not x8311))
+(or x8169 (not x8252))
+(or x8169 (not x8232))
+(or x8169 (not x8254))
+(or x8169 (not x8235))
+(or x8311 x8252 x8232 x8254 x8235 (not x8169))
+(or x8554 (not x8311))
+(or x8554 (not x8252))
+(or x8554 (not x8232))
+(or x8554 (not x8254))
+(or x8554 (not x8235))
+(or x8554 (not x8231))
+(or x8554 (not x8232))
+(or x8554 (not x8233))
+(or x8554 (not x8234))
+(or x8554 (not x8235))
+(or x8554 (not x8236))
+(or x8554 x8134)
+(or x8311 x8252 x8232 x8254 x8235 x8231 x8232 x8233 x8234 x8235 x8236 (not x8134) (not x8554))
+(or (not x8554) (not x8310) x8555)
+(or (not x8555) x8554)
+(or (not x8555) x8310)
+(or (not x8556) x8098)
+(or (not x8556) (not x8097))
+(or (not x8556) (not x8096))
+(or (not x8556) x8095)
+(or (not x8098) x8097 x8096 x8095 x8092)
+(or (not x8092) x8098)
+(or (not x8092) (not x8097))
+(or (not x8092) (not x8096))
+(or (not x8092) (not x8095))
+(or (not x8557) (not x8098))
+(or (not x8557) x8097)
+(or (not x8557) x8096)
+(or (not x8557) x8095)
+(or x8558 (not x8557))
+(or x8558 (not x8092))
+(or x8557 x8092 (not x8558))
+(or x8330 (not x8329) (not x8328) x8327 x8235)
+(or (not x8235) (not x8330))
+(or (not x8235) x8329)
+(or (not x8235) x8328)
+(or (not x8235) (not x8327))
+(or x8330 (not x8329) x8328 (not x8327) x8236)
+(or (not x8236) (not x8330))
+(or (not x8236) x8329)
+(or (not x8236) (not x8328))
+(or (not x8236) x8327)
+(or x8330 (not x8329) x8328 x8327 x8234)
+(or (not x8234) (not x8330))
+(or (not x8234) x8329)
+(or (not x8234) (not x8328))
+(or (not x8234) (not x8327))
+(or x8330 x8329 (not x8328) (not x8327) x8253)
+(or (not x8253) (not x8330))
+(or (not x8253) (not x8329))
+(or (not x8253) x8328)
+(or (not x8253) x8327)
+(or x8330 x8329 (not x8328) x8327 x8322)
+(or (not x8322) (not x8330))
+(or (not x8322) (not x8329))
+(or (not x8322) x8328)
+(or (not x8322) (not x8327))
+(or x8330 x8329 x8328 (not x8327) x8254)
+(or (not x8254) (not x8330))
+(or (not x8254) (not x8329))
+(or (not x8254) (not x8328))
+(or (not x8254) x8327)
+(or (not x8559) (not x8330))
+(or (not x8559) (not x8329))
+(or (not x8559) (not x8328))
+(or (not x8559) (not x8327))
+(or x8560 (not x8559))
+(or x8560 (not x8254))
+(or x8560 (not x8322))
+(or x8560 (not x8253))
+(or x8560 (not x8234))
+(or x8560 (not x8236))
+(or x8559 x8254 x8322 x8253 x8234 x8236 (not x8560))
+(or x8435 (not x8434) (not x8433) x8432 x8232)
+(or (not x8232) (not x8435))
+(or (not x8232) x8434)
+(or (not x8232) x8433)
+(or (not x8232) (not x8432))
+(or x8435 (not x8434) x8433 (not x8432) x8233)
+(or (not x8233) (not x8435))
+(or (not x8233) x8434)
+(or (not x8233) (not x8433))
+(or (not x8233) x8432)
+(or x8435 (not x8434) x8433 x8432 x8231)
+(or (not x8231) (not x8435))
+(or (not x8231) x8434)
+(or (not x8231) (not x8433))
+(or (not x8231) (not x8432))
+(or x8435 x8434 (not x8433) (not x8432) x8251)
+(or (not x8251) (not x8435))
+(or (not x8251) (not x8434))
+(or (not x8251) x8433)
+(or (not x8251) x8432)
+(or x8435 x8434 (not x8433) x8432 x8427)
+(or (not x8427) (not x8435))
+(or (not x8427) (not x8434))
+(or (not x8427) x8433)
+(or (not x8427) (not x8432))
+(or x8435 x8434 x8433 (not x8432) x8252)
+(or (not x8252) (not x8435))
+(or (not x8252) (not x8434))
+(or (not x8252) (not x8433))
+(or (not x8252) x8432)
+(or (not x8561) (not x8435))
+(or (not x8561) (not x8434))
+(or (not x8561) (not x8433))
+(or (not x8561) (not x8432))
+(or x8562 (not x8561))
+(or x8562 (not x8252))
+(or x8562 (not x8427))
+(or x8562 (not x8251))
+(or x8562 (not x8231))
+(or x8562 (not x8233))
+(or x8561 x8252 x8427 x8251 x8231 x8233 (not x8562))
+(or x8563 (not x8564))
+(or x8563 (not x8565))
+(or x8563 (not x8566))
+(or x8563 (not x8567))
+(or x8563 (not x8568))
+(or x8563 (not x8569))
+(or x8563 (not x158))
+(or x8563 x157)
+(or x8563 x156)
+(or x8563 x155)
+(or x8563 (not x8570))
+(or x8563 x8571)
+(or x8564 x8565 x8566 x8567 x8568 x8569 x158 (not x157) (not x156) (not x155) x8570 (not x8571) (not x8563))
+(or x8572 (not x8564))
+(or x8572 (not x8565))
+(or x8572 (not x8566))
+(or x8572 (not x8567))
+(or x8572 (not x8568))
+(or x8572 (not x158))
+(or x8572 x157)
+(or x8572 x156)
+(or x8572 (not x155))
+(or x8572 x159)
+(or x8572 (not x160))
+(or x8572 x8573)
+(or x8564 x8565 x8566 x8567 x8568 x158 (not x157) (not x156) x155 (not x159) x160 (not x8573) (not x8572))
+(or x8574 (not x158))
+(or x8574 (not x157))
+(or x8574 (not x156))
+(or x8574 x155)
+(or x8574 (not x8575))
+(or x158 x157 x156 (not x155) x8575 (not x8574))
+(or (not x8574) (not x8576) (not x8577) (not x8578) (not x8579) (not x8572) (not x8563) (not x8580) x8581)
+(or (not x8581) x8574)
+(or (not x8581) x8576)
+(or (not x8581) x8577)
+(or (not x8581) x8578)
+(or (not x8581) x8579)
+(or (not x8581) x8572)
+(or (not x8581) x8563)
+(or (not x8581) x8580)
+(or x8582 (not x8564))
+(or x8582 (not x8565))
+(or x8582 (not x158))
+(or x8582 (not x157))
+(or x8582 x156)
+(or x8582 x155)
+(or x8582 (not x8570))
+(or x8582 x8583)
+(or x8564 x8565 x158 x157 (not x156) (not x155) x8570 (not x8583) (not x8582))
+(or x8584 (not x8564))
+(or x8584 (not x158))
+(or x8584 (not x157))
+(or x8584 x156)
+(or x8584 (not x155))
+(or x8584 x8586)
+(or x8584 x8585)
+(or x8584 (not x8570))
+(or x8584 x8587)
+(or x8564 x158 x157 (not x156) x155 (not x8586) (not x8585) x8570 (not x8587) (not x8584))
+(or x8588 (not x8589) x8575)
+(or (not x8575) (not x8588))
+(or (not x8575) x8589)
+(or x8588 (not x8589) (not x8590) x8591)
+(or (not x8591) (not x8588))
+(or (not x8591) x8589)
+(or (not x8591) x8590)
+(or x8592 (not x158))
+(or x8592 (not x157))
+(or x8592 (not x156))
+(or x8592 x155)
+(or x8592 (not x8591))
+(or x158 x157 x156 (not x155) x8591 (not x8592))
+(or (not x8592) (not x8584) (not x8582) (not x8593) (not x8594) (not x8595) (not x8596) (not x8580) x8597)
+(or (not x8597) x8592)
+(or (not x8597) x8584)
+(or (not x8597) x8582)
+(or (not x8597) x8593)
+(or (not x8597) x8594)
+(or (not x8597) x8595)
+(or (not x8597) x8596)
+(or (not x8597) x8580)
+(or x8598 (not x8564))
+(or x8598 (not x8565))
+(or x8598 (not x8566))
+(or x8598 (not x8567))
+(or x8598 (not x158))
+(or x8598 x157)
+(or x8598 (not x156))
+(or x8598 x155)
+(or x8598 (not x8570))
+(or x8598 x8599)
+(or x8564 x8565 x8566 x8567 x158 (not x157) x156 (not x155) x8570 (not x8599) (not x8598))
+(or x8600 (not x8564))
+(or x8600 (not x8565))
+(or x8600 (not x8566))
+(or x8600 (not x158))
+(or x8600 x157)
+(or x8600 (not x156))
+(or x8600 (not x155))
+(or x8600 x159)
+(or x8600 (not x160))
+(or x8600 x8601)
+(or x8564 x8565 x8566 x158 (not x157) x156 x155 (not x159) x160 (not x8601) (not x8600))
+(or x8590 (not x8588))
+(or x8590 (not x8602))
+(or x8588 x8602 (not x8590))
+(or x8588 (not x8590) x8603)
+(or (not x8603) (not x8588))
+(or (not x8603) x8590)
+(or x8604 (not x158))
+(or x8604 (not x157))
+(or x8604 (not x156))
+(or x8604 x155)
+(or x8604 (not x8603))
+(or x158 x157 x156 (not x155) x8603 (not x8604))
+(or (not x8604) (not x8605) (not x8606) (not x8600) (not x8598) (not x8593) (not x8594) (not x8607) (not x8608) (not x8580) x8609)
+(or (not x8609) x8604)
+(or (not x8609) x8605)
+(or (not x8609) x8606)
+(or (not x8609) x8600)
+(or (not x8609) x8598)
+(or (not x8609) x8593)
+(or (not x8609) x8594)
+(or (not x8609) x8607)
+(or (not x8609) x8608)
+(or (not x8609) x8580)
+(or (not x158) (not x157) x156 x155 (not x8610) x8611)
+(or (not x8611) x158)
+(or (not x8611) x157)
+(or (not x8611) (not x156))
+(or (not x8611) (not x155))
+(or (not x8611) x8610)
+(or x8580 (not x8564))
+(or x8580 (not x8565))
+(or x8580 (not x8566))
+(or x8580 (not x8567))
+(or x8580 (not x8568))
+(or x8580 (not x8569))
+(or x8580 (not x8612))
+(or x8580 (not x8613))
+(or x8580 (not x8614))
+(or x8580 (not x8615))
+(or x8580 (not x8611))
+(or x8564 x8565 x8566 x8567 x8568 x8569 x8612 x8613 x8614 x8615 x8611 (not x8580))
+(or (not x158) x157 (not x156) (not x155) (not x159) x160 x8615)
+(or (not x8615) x158)
+(or (not x8615) (not x157))
+(or (not x8615) x156)
+(or (not x8615) x155)
+(or (not x8615) x159)
+(or (not x8615) (not x160))
+(or x8608 (not x8564))
+(or x8608 (not x8565))
+(or x8608 (not x8566))
+(or x8608 (not x8567))
+(or x8608 (not x8568))
+(or x8608 (not x8569))
+(or x8608 (not x8612))
+(or x8608 (not x8613))
+(or x8608 (not x8614))
+(or x8608 (not x8615))
+(or x8608 x158)
+(or x8608 x157)
+(or x8608 (not x156))
+(or x8608 (not x155))
+(or x8608 (not x8570))
+(or x8564 x8565 x8566 x8567 x8568 x8569 x8612 x8613 x8614 x8615 (not x158) (not x157) x156 x155 x8570 (not x8608))
+(or x8616 (not x8564))
+(or x8616 (not x8565))
+(or x8616 (not x8566))
+(or x8616 (not x8567))
+(or x8616 (not x8568))
+(or x8616 (not x8569))
+(or x8616 (not x8612))
+(or x8616 (not x8613))
+(or x8616 (not x8614))
+(or x8616 (not x8615))
+(or x8616 x158)
+(or x8616 x157)
+(or x8616 (not x156))
+(or x8616 (not x155))
+(or x8616 (not x8570))
+(or x8616 x8617)
+(or x8564 x8565 x8566 x8567 x8568 x8569 x8612 x8613 x8614 x8615 (not x158) (not x157) x156 x155 x8570 (not x8617) (not x8616))
+(or (not x158) x157 (not x156) x155 (not x8610) x8614)
+(or (not x8614) x158)
+(or (not x8614) (not x157))
+(or (not x8614) x156)
+(or (not x8614) (not x155))
+(or (not x8614) x8610)
+(or x8607 (not x8564))
+(or x8607 (not x8565))
+(or x8607 (not x8566))
+(or x8607 (not x8567))
+(or x8607 (not x8568))
+(or x8607 (not x8569))
+(or x8607 (not x8612))
+(or x8607 (not x8613))
+(or x8607 (not x8614))
+(or x8607 x158)
+(or x8607 (not x157))
+(or x8607 x156)
+(or x8607 x155)
+(or x8607 x159)
+(or x8607 (not x160))
+(or x8564 x8565 x8566 x8567 x8568 x8569 x8612 x8613 x8614 (not x158) x157 (not x156) (not x155) (not x159) x160 (not x8607))
+(or x8618 (not x8564))
+(or x8618 (not x8565))
+(or x8618 (not x8566))
+(or x8618 (not x8567))
+(or x8618 (not x8568))
+(or x8618 (not x8569))
+(or x8618 (not x8612))
+(or x8618 (not x8613))
+(or x8618 (not x8614))
+(or x8618 x158)
+(or x8618 (not x157))
+(or x8618 x156)
+(or x8618 x155)
+(or x8618 x159)
+(or x8618 (not x160))
+(or x8618 x8619)
+(or x8564 x8565 x8566 x8567 x8568 x8569 x8612 x8613 x8614 (not x158) x157 (not x156) (not x155) (not x159) x160 (not x8619) (not x8618))
+(or (not x158) x157 x156 (not x155) (not x8586) (not x8585) (not x159) x160 x8613)
+(or (not x8613) x158)
+(or (not x8613) (not x157))
+(or (not x8613) (not x156))
+(or (not x8613) x155)
+(or (not x8613) x8586)
+(or (not x8613) x8585)
+(or (not x8613) x159)
+(or (not x8613) (not x160))
+(or x8596 (not x8564))
+(or x8596 (not x8565))
+(or x8596 (not x8566))
+(or x8596 (not x8567))
+(or x8596 (not x8568))
+(or x8596 (not x8569))
+(or x8596 (not x8612))
+(or x8596 (not x8613))
+(or x8596 x158)
+(or x8596 (not x157))
+(or x8596 x156)
+(or x8596 (not x155))
+(or x8596 (not x8570))
+(or x8564 x8565 x8566 x8567 x8568 x8569 x8612 x8613 (not x158) x157 (not x156) x155 x8570 (not x8596))
+(or x8620 (not x8564))
+(or x8620 (not x8565))
+(or x8620 (not x8566))
+(or x8620 (not x8567))
+(or x8620 (not x8568))
+(or x8620 (not x8569))
+(or x8620 (not x8612))
+(or x8620 (not x8613))
+(or x8620 x158)
+(or x8620 (not x157))
+(or x8620 x156)
+(or x8620 (not x155))
+(or x8620 (not x8570))
+(or x8620 x8621)
+(or x8564 x8565 x8566 x8567 x8568 x8569 x8612 x8613 (not x158) x157 (not x156) x155 x8570 (not x8621) (not x8620))
+(or x158 (not x157) (not x156) (not x155) (not x8610) x8612)
+(or (not x8612) (not x158))
+(or (not x8612) x157)
+(or (not x8612) x156)
+(or (not x8612) x155)
+(or (not x8612) x8610)
+(or x8595 (not x8564))
+(or x8595 (not x8565))
+(or x8595 (not x8566))
+(or x8595 (not x8567))
+(or x8595 (not x8568))
+(or x8595 (not x8569))
+(or x8595 (not x8612))
+(or x8595 x158)
+(or x8595 (not x157))
+(or x8595 (not x156))
+(or x8595 x155)
+(or x8595 x8586)
+(or x8595 x8585)
+(or x8595 x159)
+(or x8595 (not x160))
+(or x8564 x8565 x8566 x8567 x8568 x8569 x8612 (not x158) x157 x156 (not x155) (not x8586) (not x8585) (not x159) x160 (not x8595))
+(or x8622 (not x8564))
+(or x8622 (not x8565))
+(or x8622 (not x8566))
+(or x8622 (not x8567))
+(or x8622 (not x8568))
+(or x8622 (not x8569))
+(or x8622 (not x8612))
+(or x8622 x158)
+(or x8622 (not x157))
+(or x8622 (not x156))
+(or x8622 x155)
+(or x8622 x8586)
+(or x8622 x8585)
+(or x8622 x159)
+(or x8622 (not x160))
+(or x8622 x8623)
+(or x8564 x8565 x8566 x8567 x8568 x8569 x8612 (not x158) x157 x156 (not x155) (not x8586) (not x8585) (not x159) x160 (not x8623) (not x8622))
+(or x158 (not x157) (not x156) x155 (not x159) x160 x8569)
+(or (not x8569) (not x158))
+(or (not x8569) x157)
+(or (not x8569) x156)
+(or (not x8569) (not x155))
+(or (not x8569) x159)
+(or (not x8569) (not x160))
+(or x8594 (not x8564))
+(or x8594 (not x8565))
+(or x8594 (not x8566))
+(or x8594 (not x8567))
+(or x8594 (not x8568))
+(or x8594 (not x8569))
+(or x8594 (not x158))
+(or x8594 x157)
+(or x8594 x156)
+(or x8594 x155)
+(or x8594 (not x8570))
+(or x8594 (not x8571))
+(or x8564 x8565 x8566 x8567 x8568 x8569 x158 (not x157) (not x156) (not x155) x8570 x8571 (not x8594))
+(or x158 (not x157) x156 (not x155) (not x8610) x8568)
+(or (not x8568) (not x158))
+(or (not x8568) x157)
+(or (not x8568) (not x156))
+(or (not x8568) x155)
+(or (not x8568) x8610)
+(or x8593 (not x8564))
+(or x8593 (not x8565))
+(or x8593 (not x8566))
+(or x8593 (not x8567))
+(or x8593 (not x8568))
+(or x8593 (not x158))
+(or x8593 x157)
+(or x8593 x156)
+(or x8593 (not x155))
+(or x8593 x159)
+(or x8593 (not x160))
+(or x8593 (not x8573))
+(or x8564 x8565 x8566 x8567 x8568 x158 (not x157) (not x156) x155 (not x159) x160 x8573 (not x8593))
+(or x158 (not x157) x156 x155 (not x159) x160 x8567)
+(or (not x8567) (not x158))
+(or (not x8567) x157)
+(or (not x8567) (not x156))
+(or (not x8567) (not x155))
+(or (not x8567) x159)
+(or (not x8567) (not x160))
+(or x8579 (not x8564))
+(or x8579 (not x8565))
+(or x8579 (not x8566))
+(or x8579 (not x8567))
+(or x8579 (not x158))
+(or x8579 x157)
+(or x8579 (not x156))
+(or x8579 x155)
+(or x8579 (not x8570))
+(or x8564 x8565 x8566 x8567 x158 (not x157) x156 (not x155) x8570 (not x8579))
+(or x8624 (not x8564))
+(or x8624 (not x8565))
+(or x8624 (not x8566))
+(or x8624 (not x8567))
+(or x8624 (not x158))
+(or x8624 x157)
+(or x8624 (not x156))
+(or x8624 x155)
+(or x8624 (not x8570))
+(or x8624 (not x8599))
+(or x8564 x8565 x8566 x8567 x158 (not x157) x156 (not x155) x8570 x8599 (not x8624))
+(or x158 x157 (not x156) (not x155) (not x8610) x8566)
+(or (not x8566) (not x158))
+(or (not x8566) (not x157))
+(or (not x8566) x156)
+(or (not x8566) x155)
+(or (not x8566) x8610)
+(or x8578 (not x8564))
+(or x8578 (not x8565))
+(or x8578 (not x8566))
+(or x8578 (not x158))
+(or x8578 x157)
+(or x8578 (not x156))
+(or x8578 (not x155))
+(or x8578 x159)
+(or x8578 (not x160))
+(or x8564 x8565 x8566 x158 (not x157) x156 x155 (not x159) x160 (not x8578))
+(or x8625 (not x8564))
+(or x8625 (not x8565))
+(or x8625 (not x8566))
+(or x8625 (not x158))
+(or x8625 x157)
+(or x8625 (not x156))
+(or x8625 (not x155))
+(or x8625 x159)
+(or x8625 (not x160))
+(or x8625 (not x8601))
+(or x8564 x8565 x8566 x158 (not x157) x156 x155 (not x159) x160 x8601 (not x8625))
+(or x158 x157 (not x156) x155 (not x8586) (not x8585) (not x8610) x8565)
+(or (not x8565) (not x158))
+(or (not x8565) (not x157))
+(or (not x8565) x156)
+(or (not x8565) (not x155))
+(or (not x8565) x8586)
+(or (not x8565) x8585)
+(or (not x8565) x8610)
+(or x8577 (not x8564))
+(or x8577 (not x8565))
+(or x8577 (not x158))
+(or x8577 (not x157))
+(or x8577 x156)
+(or x8577 x155)
+(or x8577 (not x8570))
+(or x8564 x8565 x158 x157 (not x156) (not x155) x8570 (not x8577))
+(or x8606 (not x8564))
+(or x8606 (not x8565))
+(or x8606 (not x158))
+(or x8606 (not x157))
+(or x8606 x156)
+(or x8606 x155)
+(or x8606 (not x8570))
+(or x8606 (not x8583))
+(or x8564 x8565 x158 x157 (not x156) (not x155) x8570 x8583 (not x8606))
+(or x158 x157 x156 (not x155) x8564)
+(or (not x8564) (not x158))
+(or (not x8564) (not x157))
+(or (not x8564) (not x156))
+(or (not x8564) x155)
+(or x8576 (not x8564))
+(or x8576 (not x158))
+(or x8576 (not x157))
+(or x8576 x156)
+(or x8576 (not x155))
+(or x8576 x8586)
+(or x8576 x8585)
+(or x8576 (not x8570))
+(or x8564 x158 x157 (not x156) x155 (not x8586) (not x8585) x8570 (not x8576))
+(or x8605 (not x8564))
+(or x8605 (not x158))
+(or x8605 (not x157))
+(or x8605 x156)
+(or x8605 (not x155))
+(or x8605 x8586)
+(or x8605 x8585)
+(or x8605 (not x8570))
+(or x8605 (not x8587))
+(or x8564 x158 x157 (not x156) x155 (not x8586) (not x8585) x8570 x8587 (not x8605))
+(or x8589 (not x8588))
+(or x8589 x8602)
+(or x8588 (not x8602) (not x8589))
+(or x8626 (not x158))
+(or x8626 (not x157))
+(or x8626 (not x156))
+(or x8626 x155)
+(or x8626 (not x8588))
+(or x8626 x8602)
+(or x158 x157 x156 (not x155) x8588 (not x8602) (not x8626))
+(or (not x8626) (not x8605) (not x8606) (not x8625) (not x8624) (not x8593) (not x8594) (not x8622) (not x8620) (not x8618) (not x8616) (not x8580) x8627)
+(or (not x8627) x8626)
+(or (not x8627) x8605)
+(or (not x8627) x8606)
+(or (not x8627) x8625)
+(or (not x8627) x8624)
+(or (not x8627) x8593)
+(or (not x8627) x8594)
+(or (not x8627) x8622)
+(or (not x8627) x8620)
+(or (not x8627) x8618)
+(or (not x8627) x8616)
+(or (not x8627) x8580)
+(or x8628 x8629 (not x8630) x8631)
+(or (not x8631) (not x8628))
+(or (not x8631) (not x8629))
+(or (not x8631) x8630)
+(or (not x8628) x8629 (not x8632) x8633)
+(or (not x8633) x8628)
+(or (not x8633) (not x8629))
+(or (not x8633) x8632)
+(or x8634 (not x8633))
+(or x8634 (not x8631))
+(or x8633 x8631 (not x8634))
+(or (not x8635) (not x8636) x8637 x8638 (not x8639) x8640)
+(or (not x8640) x8635)
+(or (not x8640) x8636)
+(or (not x8640) (not x8637))
+(or (not x8640) (not x8638))
+(or (not x8640) x8639)
+(or x8630 (not x8629))
+(or x8630 (not x8640))
+(or x8629 x8640 (not x8630))
+(or (not x8629) (not x8630) x8641)
+(or (not x8641) x8629)
+(or (not x8641) x8630)
+(or x8629 (not x8628) x8642)
+(or (not x8642) (not x8629))
+(or (not x8642) x8628)
+(or x8632 (not x8643))
+(or x8632 x8636)
+(or x8632 (not x8637))
+(or x8632 (not x8638))
+(or x8632 x8639)
+(or x8643 (not x8636) x8637 x8638 (not x8639) (not x8632))
+(or x8629 (not x8632) x8644)
+(or (not x8644) (not x8629))
+(or (not x8644) x8632)
+(or x8645 (not x8644))
+(or x8645 (not x8642))
+(or x8644 x8642 (not x8645))
+(or (not x8646) (not x8645) x8647)
+(or (not x8647) x8646)
+(or (not x8647) x8645)
+(or x8648 (not x8647))
+(or x8648 (not x8641))
+(or x8647 x8641 (not x8648))
+(or x8649 (not x8629))
+(or x8649 (not x8650))
+(or x8649 (not x8651))
+(or x8629 x8650 x8651 (not x8649))
+(or x8652 (not x8629))
+(or x8652 x8656)
+(or x8652 (not x8655))
+(or x8652 (not x8654))
+(or x8652 (not x8653))
+(or x8629 (not x8656) x8655 x8654 x8653 (not x8652))
+(or x8657 x8658)
+(or x8657 x8659)
+(or (not x8658) (not x8659) (not x8657))
+(or (not x8657) (not x8658) x8660)
+(or (not x8660) x8657)
+(or (not x8660) x8658)
+(or x8661 x8629)
+(or x8661 x8662)
+(or x8661 (not x8660))
+(or (not x8629) (not x8662) x8660 (not x8661))
+(or (not x8661) (not x8652) (not x8649) x8663)
+(or (not x8663) x8661)
+(or (not x8663) x8652)
+(or (not x8663) x8649)
+(or (not x8656) x8655 x8654 x8653 (not x8664) x8665)
+(or (not x8665) x8656)
+(or (not x8665) (not x8655))
+(or (not x8665) (not x8654))
+(or (not x8665) (not x8653))
+(or (not x8665) x8664)
+(or (not x8666) (not x8667) x8668 (not x8669) (not x8670) (not x8671) (not x8672) (not x8673) (not x8674) (not x8675) (not x8676) (not x8677) x8678)
+(or (not x8678) x8666)
+(or (not x8678) x8667)
+(or (not x8678) (not x8668))
+(or (not x8678) x8669)
+(or (not x8678) x8670)
+(or (not x8678) x8671)
+(or (not x8678) x8672)
+(or (not x8678) x8673)
+(or (not x8678) x8674)
+(or (not x8678) x8675)
+(or (not x8678) x8676)
+(or (not x8678) x8677)
+(or x8679 (not x8678))
+(or x8679 (not x8665))
+(or x8678 x8665 (not x8679))
+(or x8680 x8681 x8682)
+(or (not x8682) (not x8680))
+(or (not x8682) (not x8681))
+(or x8683 x8586)
+(or x8683 x8585)
+(or x8683 (not x8684))
+(or x8683 (not x8685))
+(or x8683 (not x8682))
+(or (not x8586) (not x8585) x8684 x8685 x8682 (not x8683))
+(or (not x8686) (not x8683) x8687)
+(or (not x8687) x8686)
+(or (not x8687) x8683)
+(or x8688 (not x8680))
+(or x8688 (not x8689))
+(or x8680 x8689 (not x8688))
+(or (not x8681) (not x8688) x8690)
+(or (not x8690) x8681)
+(or (not x8690) x8688)
+(or x8691 (not x8690))
+(or x8691 (not x8687))
+(or x8690 x8687 (not x8691))
+(or x8692 (not x8586) (not x8585) (not x8693) (not x8694) x8689)
+(or (not x8689) (not x8692))
+(or (not x8689) x8586)
+(or (not x8689) x8585)
+(or (not x8689) x8693)
+(or (not x8689) x8694)
+(or (not x8680) x8692 (not x8586) (not x8585) (not x8693) (not x8694) x8695)
+(or (not x8695) x8680)
+(or (not x8695) (not x8692))
+(or (not x8695) x8586)
+(or (not x8695) x8585)
+(or (not x8695) x8693)
+(or (not x8695) x8694)
+(or x8696 x8586)
+(or x8696 x8585)
+(or x8696 (not x8684))
+(or x8696 (not x8685))
+(or x8696 x8680)
+(or (not x8586) (not x8585) x8684 x8685 (not x8680) (not x8696))
+(or x8686 (not x8692))
+(or x8686 x8586)
+(or x8686 x8585)
+(or x8686 (not x8684))
+(or x8686 (not x8685))
+(or x8692 (not x8586) (not x8585) x8684 x8685 (not x8686))
+(or (not x8686) (not x8696) x8697)
+(or (not x8697) x8686)
+(or (not x8697) x8696)
+(or x8698 (not x8697))
+(or x8698 (not x8695))
+(or x8697 x8695 (not x8698))
+(or x8636 (not x8639) x8699)
+(or (not x8699) (not x8636))
+(or (not x8699) x8639)
+(or x8700 (not x8701))
+(or x8700 x8667)
+(or x8700 x8702)
+(or x8700 (not x8699))
+(or x8701 (not x8667) (not x8702) x8699 (not x8700))
+(or (not x8703) (not x8666) (not x8700) x8704)
+(or (not x8704) x8703)
+(or (not x8704) x8666)
+(or (not x8704) x8700)
+(or x8705 (not x8636))
+(or x8705 x8639)
+(or x8636 (not x8639) (not x8705))
+(or (not x8706) (not x8667) (not x8702) (not x8705) x8707)
+(or (not x8707) x8706)
+(or (not x8707) x8667)
+(or (not x8707) x8702)
+(or (not x8707) x8705)
+(or x8708 (not x8650))
+(or x8708 (not x8707))
+(or x8650 x8707 (not x8708))
+(or (not x8708) (not x8666) x8709)
+(or (not x8709) x8708)
+(or (not x8709) x8666)
+(or x8710 (not x8709))
+(or x8710 (not x8704))
+(or x8709 x8704 (not x8710))
+(or x8711 (not x8712))
+(or x8711 x8692)
+(or x8712 (not x8692) (not x8711))
+(or (not x8636) (not x8586) (not x8585) (not x8713) (not x8638) (not x8714) (not x8715) x8692 x8716 x8717 x8718 x8719 x8720 (not x8636) x8721 x8668 x8722 x8723 x8629 x8724 x8725)
+(or (not x8725) x8636)
+(or (not x8725) x8586)
+(or (not x8725) x8585)
+(or (not x8725) x8713)
+(or (not x8725) x8638)
+(or (not x8725) x8714)
+(or (not x8725) x8715)
+(or (not x8725) (not x8692))
+(or (not x8725) (not x8716))
+(or (not x8725) (not x8717))
+(or (not x8725) (not x8718))
+(or (not x8725) (not x8719))
+(or (not x8725) (not x8720))
+(or (not x8725) x8636)
+(or (not x8725) (not x8721))
+(or (not x8725) (not x8668))
+(or (not x8725) (not x8722))
+(or (not x8725) (not x8723))
+(or (not x8725) (not x8629))
+(or (not x8725) (not x8724))
+(or (not x8726) (not x8727) (not x8586) (not x8585) (not x8692) x8636 x8716 x8717 x8718 x8719 x8721 x8668 x8722 x8723 x8629 x8724 x8728)
+(or (not x8728) x8726)
+(or (not x8728) x8727)
+(or (not x8728) x8586)
+(or (not x8728) x8585)
+(or (not x8728) x8692)
+(or (not x8728) (not x8636))
+(or (not x8728) (not x8716))
+(or (not x8728) (not x8717))
+(or (not x8728) (not x8718))
+(or (not x8728) (not x8719))
+(or (not x8728) (not x8721))
+(or (not x8728) (not x8668))
+(or (not x8728) (not x8722))
+(or (not x8728) (not x8723))
+(or (not x8728) (not x8629))
+(or (not x8728) (not x8724))
+(or x8729 (not x8728))
+(or x8729 (not x8725))
+(or x8728 x8725 (not x8729))
+(or x8716 x8718 x8719 (not x8717) x8721 x8668 x8722 x8723 x8629 x8724 x8692 x8636 x8730)
+(or (not x8730) (not x8716))
+(or (not x8730) (not x8718))
+(or (not x8730) (not x8719))
+(or (not x8730) x8717)
+(or (not x8730) (not x8721))
+(or (not x8730) (not x8668))
+(or (not x8730) (not x8722))
+(or (not x8730) (not x8723))
+(or (not x8730) (not x8629))
+(or (not x8730) (not x8724))
+(or (not x8730) (not x8692))
+(or (not x8730) (not x8636))
+(or (not x8656) x8655 x8654 x8653 (not x8629) x8724 x8721 x8636 x8692 x8722 x8723 (not x8731) (not x8732) x8668 x8716 x8717 x8718 x8719 x8733)
+(or (not x8733) x8656)
+(or (not x8733) (not x8655))
+(or (not x8733) (not x8654))
+(or (not x8733) (not x8653))
+(or (not x8733) x8629)
+(or (not x8733) (not x8724))
+(or (not x8733) (not x8721))
+(or (not x8733) (not x8636))
+(or (not x8733) (not x8692))
+(or (not x8733) (not x8722))
+(or (not x8733) (not x8723))
+(or (not x8733) x8731)
+(or (not x8733) x8732)
+(or (not x8733) (not x8668))
+(or (not x8733) (not x8716))
+(or (not x8733) (not x8717))
+(or (not x8733) (not x8718))
+(or (not x8733) (not x8719))
+(or x8734 (not x8733))
+(or x8734 (not x8730))
+(or x8733 x8730 (not x8734))
+(or (not x8586) (not x8585) (not x8735) (not x8734) x8736)
+(or (not x8736) x8586)
+(or (not x8736) x8585)
+(or (not x8736) x8735)
+(or (not x8736) x8734)
+(or (not x8586) (not x8585) (not x8692) x8636 x8716 x8717 x8718 x8719 x8721 x8668 x8722 x8723 x8629 x8724 (not x8737) (not x8738) (not x8739) (not x8740) (not x8741) (not x8702) x8742)
+(or (not x8742) x8586)
+(or (not x8742) x8585)
+(or (not x8742) x8692)
+(or (not x8742) (not x8636))
+(or (not x8742) (not x8716))
+(or (not x8742) (not x8717))
+(or (not x8742) (not x8718))
+(or (not x8742) (not x8719))
+(or (not x8742) (not x8721))
+(or (not x8742) (not x8668))
+(or (not x8742) (not x8722))
+(or (not x8742) (not x8723))
+(or (not x8742) (not x8629))
+(or (not x8742) (not x8724))
+(or (not x8742) x8737)
+(or (not x8742) x8738)
+(or (not x8742) x8739)
+(or (not x8742) x8740)
+(or (not x8742) x8741)
+(or (not x8742) x8702)
+(or (not x8735) x8717 x8718 x8719 x8721 x8668 x8722 x8723 x8629 x8724 x8692 x8636 x8743)
+(or (not x8743) x8735)
+(or (not x8743) (not x8717))
+(or (not x8743) (not x8718))
+(or (not x8743) (not x8719))
+(or (not x8743) (not x8721))
+(or (not x8743) (not x8668))
+(or (not x8743) (not x8722))
+(or (not x8743) (not x8723))
+(or (not x8743) (not x8629))
+(or (not x8743) (not x8724))
+(or (not x8743) (not x8692))
+(or (not x8743) (not x8636))
+(or x8744 (not x8745))
+(or x8744 (not x8743))
+(or x8745 x8743 (not x8744))
+(or (not x8586) (not x8585) (not x8716) (not x8744) x8746)
+(or (not x8746) x8586)
+(or (not x8746) x8585)
+(or (not x8746) x8716)
+(or (not x8746) x8744)
+(or x8721 x8722 (not x8723) (not x8586) (not x8585) x8629 x8724 x8692 x8636 x8668 x8716 x8717 x8718 x8719 x8747)
+(or (not x8747) (not x8721))
+(or (not x8747) (not x8722))
+(or (not x8747) x8723)
+(or (not x8747) x8586)
+(or (not x8747) x8585)
+(or (not x8747) (not x8629))
+(or (not x8747) (not x8724))
+(or (not x8747) (not x8692))
+(or (not x8747) (not x8636))
+(or (not x8747) (not x8668))
+(or (not x8747) (not x8716))
+(or (not x8747) (not x8717))
+(or (not x8747) (not x8718))
+(or (not x8747) (not x8719))
+(or x8748 (not x8747))
+(or x8748 (not x8746))
+(or x8747 x8746 (not x8748))
+(or x8749 x8717)
+(or x8749 x8724)
+(or (not x8717) (not x8724) (not x8749))
+(or x8750 (not x8717))
+(or x8750 (not x8735))
+(or x8750 (not x8629))
+(or x8717 x8735 x8629 (not x8750))
+(or x8724 x8717 (not x8751) x8752)
+(or (not x8752) (not x8724))
+(or (not x8752) (not x8717))
+(or (not x8752) x8751)
+(or x8753 x8629)
+(or x8753 (not x8752))
+(or (not x8629) x8752 (not x8753))
+(or x8754 x8735)
+(or x8754 (not x8629))
+(or x8754 (not x8724))
+(or (not x8735) x8629 x8724 (not x8754))
+(or (not x8586) (not x8585) x8668 x8716 x8721 x8636 x8692 x8722 x8723 x8718 x8719 (not x8754) (not x8753) (not x8750) (not x8749) x8755)
+(or (not x8755) x8586)
+(or (not x8755) x8585)
+(or (not x8755) (not x8668))
+(or (not x8755) (not x8716))
+(or (not x8755) (not x8721))
+(or (not x8755) (not x8636))
+(or (not x8755) (not x8692))
+(or (not x8755) (not x8722))
+(or (not x8755) (not x8723))
+(or (not x8755) (not x8718))
+(or (not x8755) (not x8719))
+(or (not x8755) x8754)
+(or (not x8755) x8753)
+(or (not x8755) x8750)
+(or (not x8755) x8749)
+(or (not x8586) (not x8585) (not x8756) x8757)
+(or (not x8757) x8586)
+(or (not x8757) x8585)
+(or (not x8757) x8756)
+(or x8677 (not x8758))
+(or x8677 (not x8759))
+(or x8758 x8759 (not x8677))
+(or x8760 (not x8761))
+(or x8760 x8718)
+(or x8761 (not x8718) (not x8760))
+(or x8762 (not x8629))
+(or x8762 (not x8718))
+(or x8762 (not x8716))
+(or x8762 (not x8717))
+(or x8629 x8718 x8716 x8717 (not x8762))
+(or x8763 x8717)
+(or x8763 x8716)
+(or (not x8717) (not x8716) (not x8763))
+(or x8719 (not x8763) (not x8762) (not x8760) x8764)
+(or (not x8764) (not x8719))
+(or (not x8764) x8763)
+(or (not x8764) x8762)
+(or (not x8764) x8760)
+(or x8676 (not x8724))
+(or x8676 (not x8721))
+(or x8676 (not x8636))
+(or x8676 (not x8692))
+(or x8676 (not x8722))
+(or x8676 (not x8723))
+(or x8676 (not x8764))
+(or x8724 x8721 x8636 x8692 x8722 x8723 x8764 (not x8676))
+(or x8675 x8723)
+(or x8675 x8722)
+(or (not x8723) (not x8722) (not x8675))
+(or x8674 (not x8765))
+(or x8674 x8724)
+(or x8765 (not x8724) (not x8674))
+(or x8673 x8636)
+(or x8673 (not x8766))
+(or (not x8636) x8766 (not x8673))
+(or (not x8656) x8655 x8654 x8653 x8735 x8767)
+(or (not x8767) x8656)
+(or (not x8767) (not x8655))
+(or (not x8767) (not x8654))
+(or (not x8767) (not x8653))
+(or (not x8767) (not x8735))
+(or (not x8656) x8655 x8654 x8653 (not x8735) (not x8651) x8768)
+(or (not x8768) x8656)
+(or (not x8768) (not x8655))
+(or (not x8768) (not x8654))
+(or (not x8768) (not x8653))
+(or (not x8768) x8735)
+(or (not x8768) x8651)
+(or x8751 (not x8768))
+(or x8751 (not x8767))
+(or x8768 x8767 (not x8751))
+(or (not x8656) x8655 x8654 x8653 (not x8735) x8769)
+(or (not x8769) x8656)
+(or (not x8769) (not x8655))
+(or (not x8769) (not x8654))
+(or (not x8769) (not x8653))
+(or (not x8769) x8735)
+(or x8770 (not x8769))
+(or x8770 (not x8768))
+(or x8770 (not x8767))
+(or x8769 x8768 x8767 (not x8770))
+(or x8718 x8716 x8717 x8724 x8721 x8636 x8692 x8722 x8723 (not x8770) x8771)
+(or (not x8771) (not x8718))
+(or (not x8771) (not x8716))
+(or (not x8771) (not x8717))
+(or (not x8771) (not x8724))
+(or (not x8771) (not x8721))
+(or (not x8771) (not x8636))
+(or (not x8771) (not x8692))
+(or (not x8771) (not x8722))
+(or (not x8771) (not x8723))
+(or (not x8771) x8770)
+(or x8672 x8629)
+(or x8672 (not x8771))
+(or (not x8629) x8771 (not x8672))
+(or x8671 (not x8772))
+(or x8671 x8692)
+(or x8772 (not x8692) (not x8671))
+(or x8670 (not x8773))
+(or x8670 x8721)
+(or x8773 (not x8721) (not x8670))
+(or x8669 x8720)
+(or x8669 x8636)
+(or (not x8720) (not x8636) (not x8669))
+(or (not x8702) (not x8586) (not x8585) x8668 (not x8669) (not x8670) (not x8671) (not x8672) (not x8673) (not x8674) (not x8675) (not x8676) (not x8677) (not x8774) (not x8739) (not x8775) (not x8776) (not x8741) (not x8777) (not x8666) x8778)
+(or (not x8778) x8702)
+(or (not x8778) x8586)
+(or (not x8778) x8585)
+(or (not x8778) (not x8668))
+(or (not x8778) x8669)
+(or (not x8778) x8670)
+(or (not x8778) x8671)
+(or (not x8778) x8672)
+(or (not x8778) x8673)
+(or (not x8778) x8674)
+(or (not x8778) x8675)
+(or (not x8778) x8676)
+(or (not x8778) x8677)
+(or (not x8778) x8774)
+(or (not x8778) x8739)
+(or (not x8778) x8775)
+(or (not x8778) x8776)
+(or (not x8778) x8741)
+(or (not x8778) x8777)
+(or (not x8778) x8666)
+(or x8779 x8586)
+(or x8779 x8585)
+(or x8779 (not x8668))
+(or x8779 (not x8780))
+(or x8779 (not x8781))
+(or x8779 (not x8782))
+(or x8779 (not x8783))
+(or x8779 (not x8784))
+(or x8779 (not x8785))
+(or x8779 (not x8786))
+(or x8779 (not x8787))
+(or x8779 (not x8788))
+(or x8779 (not x8789))
+(or x8779 (not x8790))
+(or x8779 (not x8791))
+(or x8779 (not x8792))
+(or x8779 (not x8793))
+(or x8779 (not x8794))
+(or x8779 (not x8650))
+(or (not x8586) (not x8585) x8668 x8780 x8781 x8782 x8783 x8784 x8785 x8786 x8787 x8788 x8789 x8790 x8791 x8792 x8793 x8794 x8650 (not x8779))
+(or x8795 x8586)
+(or x8795 x8585)
+(or x8795 (not x8668))
+(or x8795 (not x8780))
+(or x8795 (not x8781))
+(or x8795 (not x8782))
+(or x8795 (not x8783))
+(or x8795 (not x8784))
+(or x8795 (not x8785))
+(or x8795 (not x8786))
+(or x8795 (not x8787))
+(or x8795 (not x8788))
+(or x8795 (not x8789))
+(or x8795 (not x8790))
+(or x8795 (not x8791))
+(or x8795 (not x8792))
+(or x8795 (not x8793))
+(or x8795 (not x8794))
+(or x8795 x8664)
+(or (not x8586) (not x8585) x8668 x8780 x8781 x8782 x8783 x8784 x8785 x8786 x8787 x8788 x8789 x8790 x8791 x8792 x8793 x8794 (not x8664) (not x8795))
+(or (not x8795) (not x8779) x8796)
+(or (not x8796) x8795)
+(or (not x8796) x8779)
+(or x8797 (not x8796))
+(or x8797 (not x8778))
+(or x8796 x8778 (not x8797))
+(or (not x8666) (not x8798) x8799)
+(or (not x8799) x8666)
+(or (not x8799) x8798)
+(or (not x8656) x8655 x8654 x8653 (not x8800) x8801)
+(or (not x8801) x8656)
+(or (not x8801) (not x8655))
+(or (not x8801) (not x8654))
+(or (not x8801) (not x8653))
+(or (not x8801) x8800)
+(or x8802 (not x8801))
+(or x8802 (not x8799))
+(or x8801 x8799 (not x8802))
+(or (not x8666) (not x8803) x8804)
+(or (not x8804) x8666)
+(or (not x8804) x8803)
+(or x8805 (not x8650))
+(or x8805 (not x8804))
+(or x8650 x8804 (not x8805))
+(or x8722 x8723 (not x8721) (not x8586) (not x8585) x8629 x8724 x8692 x8636 x8668 x8716 x8717 x8718 x8719 x8806)
+(or (not x8806) (not x8722))
+(or (not x8806) (not x8723))
+(or (not x8806) x8721)
+(or (not x8806) x8586)
+(or (not x8806) x8585)
+(or (not x8806) (not x8629))
+(or (not x8806) (not x8724))
+(or (not x8806) (not x8692))
+(or (not x8806) (not x8636))
+(or (not x8806) (not x8668))
+(or (not x8806) (not x8716))
+(or (not x8806) (not x8717))
+(or (not x8806) (not x8718))
+(or (not x8806) (not x8719))
+(or (not x8738) (not x8739) (not x8740) (not x8741) x8807)
+(or (not x8807) x8738)
+(or (not x8807) x8739)
+(or (not x8807) x8740)
+(or (not x8807) x8741)
+(or x8808 (not x8809))
+(or x8808 (not x8810))
+(or x8808 (not x8791))
+(or x8808 (not x8790))
+(or x8808 (not x8811))
+(or x8808 (not x8812))
+(or x8808 (not x8794))
+(or x8808 (not x8793))
+(or x8808 (not x8680))
+(or x8808 (not x8681))
+(or x8809 x8810 x8791 x8790 x8811 x8812 x8794 x8793 x8680 x8681 (not x8808))
+(or (not x8774) (not x8739) (not x8775) (not x8776) (not x8741) (not x8777) x8712)
+(or (not x8712) x8774)
+(or (not x8712) x8739)
+(or (not x8712) x8775)
+(or (not x8712) x8776)
+(or (not x8712) x8741)
+(or (not x8712) x8777)
+(or x8726 (not x8712))
+(or x8726 (not x8810))
+(or x8726 (not x8790))
+(or x8726 (not x8812))
+(or x8726 (not x8793))
+(or x8726 x8702)
+(or x8712 x8810 x8790 x8812 x8793 (not x8702) (not x8726))
+(or (not x8726) (not x8808) (not x8738) (not x8739) (not x8740) (not x8741) x8636 x8716 x8717 x8718 x8719 x8721 x8668 x8722 x8723 x8629 x8724 x8813)
+(or (not x8813) x8726)
+(or (not x8813) x8808)
+(or (not x8813) x8738)
+(or (not x8813) x8739)
+(or (not x8813) x8740)
+(or (not x8813) x8741)
+(or (not x8813) (not x8636))
+(or (not x8813) (not x8716))
+(or (not x8813) (not x8717))
+(or (not x8813) (not x8718))
+(or (not x8813) (not x8719))
+(or (not x8813) (not x8721))
+(or (not x8813) (not x8668))
+(or (not x8813) (not x8722))
+(or (not x8813) (not x8723))
+(or (not x8813) (not x8629))
+(or (not x8813) (not x8724))
+(or x8713 (not x8639))
+(or x8713 (not x8637))
+(or x8713 (not x8638))
+(or x8713 x8667)
+(or x8713 x8703)
+(or x8639 x8637 x8638 (not x8667) (not x8703) (not x8713))
+(or (not x8713) (not x8638) (not x8714) (not x8715) x8692 x8716 x8717 x8718 x8719 x8720 (not x8636) x8721 x8668 x8722 x8723 x8629 x8724 x8745)
+(or (not x8745) x8713)
+(or (not x8745) x8638)
+(or (not x8745) x8714)
+(or (not x8745) x8715)
+(or (not x8745) (not x8692))
+(or (not x8745) (not x8716))
+(or (not x8745) (not x8717))
+(or (not x8745) (not x8718))
+(or (not x8745) (not x8719))
+(or (not x8745) (not x8720))
+(or (not x8745) x8636)
+(or (not x8745) (not x8721))
+(or (not x8745) (not x8668))
+(or (not x8745) (not x8722))
+(or (not x8745) (not x8723))
+(or (not x8745) (not x8629))
+(or (not x8745) (not x8724))
+(or x8814 (not x8745))
+(or x8814 (not x8813))
+(or x8745 x8813 (not x8814))
+(or (not x8586) (not x8585) (not x8692) (not x8814) x8815)
+(or (not x8815) x8586)
+(or (not x8815) x8585)
+(or (not x8815) x8692)
+(or (not x8815) x8814)
+(or x8816 (not x8815))
+(or x8816 (not x8806))
+(or x8815 x8806 (not x8816))
+(or (not x8817) (not x8818) x8788)
+(or (not x8788) x8817)
+(or (not x8788) x8818)
+(or (not x8819) (not x8718) x8820)
+(or (not x8820) x8819)
+(or (not x8820) x8718)
+(or x8629 x8718 x8716 x8717 x8821)
+(or (not x8821) (not x8629))
+(or (not x8821) (not x8718))
+(or (not x8821) (not x8716))
+(or (not x8821) (not x8717))
+(or (not x8717) (not x8716) x8822)
+(or (not x8822) x8717)
+(or (not x8822) x8716)
+(or x8823 (not x8719))
+(or x8823 (not x8822))
+(or x8823 (not x8821))
+(or x8823 (not x8820))
+(or x8719 x8822 x8821 x8820 (not x8823))
+(or x8724 x8721 x8636 x8692 x8722 x8723 x8759)
+(or (not x8759) (not x8724))
+(or (not x8759) (not x8721))
+(or (not x8759) (not x8636))
+(or (not x8759) (not x8692))
+(or (not x8759) (not x8722))
+(or (not x8759) (not x8723))
+(or x8724 x8721 x8636 x8692 x8722 x8723 (not x8823) x8787)
+(or (not x8787) (not x8724))
+(or (not x8787) (not x8721))
+(or (not x8787) (not x8636))
+(or (not x8787) (not x8692))
+(or (not x8787) (not x8722))
+(or (not x8787) (not x8723))
+(or (not x8787) x8823)
+(or (not x8723) (not x8722) x8786)
+(or (not x8786) x8723)
+(or (not x8786) x8722)
+(or (not x8824) (not x8724) x8785)
+(or (not x8785) x8824)
+(or (not x8785) x8724)
+(or (not x8636) (not x8825) x8784)
+(or (not x8784) x8636)
+(or (not x8784) x8825)
+(or x8732 x8656)
+(or x8732 (not x8655))
+(or x8732 (not x8654))
+(or x8732 (not x8653))
+(or x8732 (not x8735))
+(or (not x8656) x8655 x8654 x8653 x8735 (not x8732))
+(or x8731 x8656)
+(or x8731 (not x8655))
+(or x8731 (not x8654))
+(or x8731 (not x8653))
+(or x8731 x8735)
+(or x8731 x8651)
+(or (not x8656) x8655 x8654 x8653 (not x8735) (not x8651) (not x8731))
+(or x8826 x8656)
+(or x8826 (not x8655))
+(or x8826 (not x8654))
+(or x8826 (not x8653))
+(or x8826 x8735)
+(or (not x8656) x8655 x8654 x8653 (not x8735) (not x8826))
+(or (not x8826) (not x8731) (not x8732) x8827)
+(or (not x8827) x8826)
+(or (not x8827) x8731)
+(or (not x8827) x8732)
+(or x8818 (not x8724))
+(or x8818 (not x8721))
+(or x8818 (not x8636))
+(or x8818 (not x8692))
+(or x8818 (not x8722))
+(or x8818 (not x8723))
+(or x8724 x8721 x8636 x8692 x8722 x8723 (not x8818))
+(or x8828 (not x8718))
+(or x8828 (not x8716))
+(or x8828 (not x8717))
+(or x8828 (not x8724))
+(or x8828 (not x8721))
+(or x8828 (not x8636))
+(or x8828 (not x8692))
+(or x8828 (not x8722))
+(or x8828 (not x8723))
+(or x8828 (not x8827))
+(or x8718 x8716 x8717 x8724 x8721 x8636 x8692 x8722 x8723 x8827 (not x8828))
+(or (not x8629) (not x8828) x8783)
+(or (not x8783) x8629)
+(or (not x8783) x8828)
+(or (not x8829) (not x8692) x8782)
+(or (not x8782) x8829)
+(or (not x8782) x8692)
+(or (not x8830) (not x8721) x8781)
+(or (not x8781) x8830)
+(or (not x8781) x8721)
+(or (not x8720) (not x8636) x8780)
+(or (not x8780) x8720)
+(or (not x8780) x8636)
+(or x8831 x8586)
+(or x8831 x8585)
+(or x8831 (not x8668))
+(or x8831 (not x8780))
+(or x8831 (not x8781))
+(or x8831 (not x8782))
+(or x8831 (not x8783))
+(or x8831 (not x8784))
+(or x8831 (not x8785))
+(or x8831 (not x8786))
+(or x8831 (not x8787))
+(or x8831 (not x8788))
+(or (not x8586) (not x8585) x8668 x8780 x8781 x8782 x8783 x8784 x8785 x8786 x8787 x8788 (not x8831))
+(or x8719 (not x8586) (not x8585) x8716 x8717 (not x8718) x8721 x8668 x8722 x8723 x8629 x8724 x8692 x8636 x8832)
+(or (not x8832) (not x8719))
+(or (not x8832) x8586)
+(or (not x8832) x8585)
+(or (not x8832) (not x8716))
+(or (not x8832) (not x8717))
+(or (not x8832) x8718)
+(or (not x8832) (not x8721))
+(or (not x8832) (not x8668))
+(or (not x8832) (not x8722))
+(or (not x8832) (not x8723))
+(or (not x8832) (not x8629))
+(or (not x8832) (not x8724))
+(or (not x8832) (not x8692))
+(or (not x8832) (not x8636))
+(or x8714 (not x8703))
+(or x8714 (not x8639))
+(or x8714 (not x8637))
+(or x8714 (not x8638))
+(or x8714 x8667)
+(or x8703 x8639 x8637 x8638 (not x8667) (not x8714))
+(or x8639 x8637 x8638 (not x8667) (not x8703) x8833)
+(or (not x8833) (not x8639))
+(or (not x8833) (not x8637))
+(or (not x8833) (not x8638))
+(or (not x8833) x8667)
+(or (not x8833) x8703)
+(or x8834 (not x8833))
+(or x8834 x8638)
+(or x8833 (not x8638) (not x8834))
+(or (not x8586) (not x8585) (not x8834) (not x8714) (not x8715) x8692 x8716 x8717 x8718 x8719 x8720 (not x8636) x8721 x8668 x8722 x8723 x8629 x8724 x8835)
+(or (not x8835) x8586)
+(or (not x8835) x8585)
+(or (not x8835) x8834)
+(or (not x8835) x8714)
+(or (not x8835) x8715)
+(or (not x8835) (not x8692))
+(or (not x8835) (not x8716))
+(or (not x8835) (not x8717))
+(or (not x8835) (not x8718))
+(or (not x8835) (not x8719))
+(or (not x8835) (not x8720))
+(or (not x8835) x8636)
+(or (not x8835) (not x8721))
+(or (not x8835) (not x8668))
+(or (not x8835) (not x8722))
+(or (not x8835) (not x8723))
+(or (not x8835) (not x8629))
+(or (not x8835) (not x8724))
+(or x8721 x8723 (not x8722) (not x8586) (not x8585) x8629 x8724 x8692 x8636 x8668 x8716 x8717 x8718 x8719 x8836)
+(or (not x8836) (not x8721))
+(or (not x8836) (not x8723))
+(or (not x8836) x8722)
+(or (not x8836) x8586)
+(or (not x8836) x8585)
+(or (not x8836) (not x8629))
+(or (not x8836) (not x8724))
+(or (not x8836) (not x8692))
+(or (not x8836) (not x8636))
+(or (not x8836) (not x8668))
+(or (not x8836) (not x8716))
+(or (not x8836) (not x8717))
+(or (not x8836) (not x8718))
+(or (not x8836) (not x8719))
+(or x8646 x8628 x8643)
+(or (not x8643) (not x8646))
+(or (not x8643) (not x8628))
+(or x8715 (not x8643))
+(or x8715 (not x8637))
+(or x8715 (not x8638))
+(or x8715 x8639)
+(or x8643 x8637 x8638 (not x8639) (not x8715))
+(or (not x8715) x8703 x8639 x8637 x8638 (not x8667) x8837)
+(or (not x8837) x8715)
+(or (not x8837) (not x8703))
+(or (not x8837) (not x8639))
+(or (not x8837) (not x8637))
+(or (not x8837) (not x8638))
+(or (not x8837) x8667)
+(or x8635 (not x8646))
+(or x8635 (not x8628))
+(or x8646 x8628 (not x8635))
+(or (not x8635) x8637 x8638 (not x8639) x8838)
+(or (not x8838) x8635)
+(or (not x8838) (not x8637))
+(or (not x8838) (not x8638))
+(or (not x8838) x8639)
+(or x8839 (not x8838))
+(or x8839 (not x8837))
+(or x8838 x8837 (not x8839))
+(or (not x8586) (not x8585) x8692 x8716 x8717 x8718 x8719 x8720 (not x8636) x8721 x8668 x8722 x8723 x8629 x8724 (not x8839) x8840)
+(or (not x8840) x8586)
+(or (not x8840) x8585)
+(or (not x8840) (not x8692))
+(or (not x8840) (not x8716))
+(or (not x8840) (not x8717))
+(or (not x8840) (not x8718))
+(or (not x8840) (not x8719))
+(or (not x8840) (not x8720))
+(or (not x8840) x8636)
+(or (not x8840) (not x8721))
+(or (not x8840) (not x8668))
+(or (not x8840) (not x8722))
+(or (not x8840) (not x8723))
+(or (not x8840) (not x8629))
+(or (not x8840) (not x8724))
+(or (not x8840) x8839)
+(or x8841 (not x8842))
+(or x8841 (not x8843))
+(or x8841 (not x8844))
+(or x8841 (not x8845))
+(or x8841 (not x8847))
+(or x8842 x8843 x8844 x8845 x8847 (not x8841))
+(or x8848 (not x8847))
+(or x8848 (not x8846))
+(or x8848 x159)
+(or x8848 (not x160))
+(or x8848 x8586)
+(or x8848 x8585)
+(or x8847 x8846 (not x159) x160 (not x8586) (not x8585) (not x8848))
+(or (not x8848) (not x8849) (not x8841) x8850)
+(or (not x8850) x8848)
+(or (not x8850) x8849)
+(or (not x8850) x8841)
+(or x8851 (not x8842))
+(or x8851 (not x8843))
+(or x8851 (not x8844))
+(or x8851 (not x8845))
+(or x8851 (not x8846))
+(or x8842 x8843 x8844 x8845 x8846 (not x8851))
+(or x8849 (not x8842))
+(or x8849 (not x8843))
+(or x8849 (not x8844))
+(or x8849 x8847)
+(or x8849 x8846)
+(or x8842 x8843 x8844 (not x8847) (not x8846) (not x8849))
+(or x8847 x8846 (not x159) x160 (not x8586) (not x8585) x8842)
+(or (not x8842) (not x8847))
+(or (not x8842) (not x8846))
+(or (not x8842) x159)
+(or (not x8842) (not x160))
+(or (not x8842) x8586)
+(or (not x8842) x8585)
+(or x8852 (not x8842))
+(or x8852 (not x8847))
+(or x8852 x8846)
+(or x8842 x8847 (not x8846) (not x8852))
+(or (not x8852) (not x8849) (not x8851) x8853)
+(or (not x8853) x8852)
+(or (not x8853) x8849)
+(or (not x8853) x8851)
+(or x8854 (not x8855))
+(or x8854 (not x8856))
+(or x8854 (not x8857))
+(or x8854 (not x8858))
+(or x8854 (not x8860))
+(or x8855 x8856 x8857 x8858 x8860 (not x8854))
+(or x8861 (not x8860))
+(or x8861 (not x8859))
+(or x8861 x159)
+(or x8861 (not x160))
+(or x8861 x8586)
+(or x8861 x8585)
+(or x8860 x8859 (not x159) x160 (not x8586) (not x8585) (not x8861))
+(or (not x8861) (not x8862) (not x8854) x8863)
+(or (not x8863) x8861)
+(or (not x8863) x8862)
+(or (not x8863) x8854)
+(or x8864 (not x8855))
+(or x8864 (not x8856))
+(or x8864 (not x8857))
+(or x8864 (not x8858))
+(or x8864 (not x8859))
+(or x8855 x8856 x8857 x8858 x8859 (not x8864))
+(or x8862 (not x8855))
+(or x8862 (not x8856))
+(or x8862 (not x8857))
+(or x8862 x8860)
+(or x8862 x8859)
+(or x8855 x8856 x8857 (not x8860) (not x8859) (not x8862))
+(or x8860 x8859 (not x159) x160 (not x8586) (not x8585) x8855)
+(or (not x8855) (not x8860))
+(or (not x8855) (not x8859))
+(or (not x8855) x159)
+(or (not x8855) (not x160))
+(or (not x8855) x8586)
+(or (not x8855) x8585)
+(or x8865 (not x8855))
+(or x8865 (not x8860))
+(or x8865 x8859)
+(or x8855 x8860 (not x8859) (not x8865))
+(or (not x8865) (not x8862) (not x8864) x8866)
+(or (not x8866) x8865)
+(or (not x8866) x8862)
+(or (not x8866) x8864)
+(or x8867 (not x8702))
+(or x8867 (not x8868))
+(or x8867 (not x8869))
+(or x8867 (not x8810))
+(or x8867 (not x8790))
+(or x8867 (not x8812))
+(or x8867 (not x8793))
+(or x8867 (not x8789))
+(or x8867 (not x8790))
+(or x8867 (not x8791))
+(or x8867 (not x8792))
+(or x8867 (not x8793))
+(or x8867 (not x8794))
+(or x8702 x8868 x8869 x8810 x8790 x8812 x8793 x8789 x8790 x8791 x8792 x8793 x8794 (not x8867))
+(or (not x8693) (not x8694) (not x8867) x8870)
+(or (not x8870) x8693)
+(or (not x8870) x8694)
+(or (not x8870) x8867)
+(or x8871 (not x8586))
+(or x8871 (not x8585))
+(or x8586 x8585 (not x8871))
+(or x8586 x8585 x8872)
+(or (not x8872) (not x8586))
+(or (not x8872) (not x8585))
+(or x8873 (not x8872))
+(or x8873 (not x8586))
+(or x8873 x8585)
+(or x8872 x8586 (not x8585) (not x8873))
+(or x8874 (not x8875))
+(or x8874 (not x8876))
+(or x8874 (not x8877))
+(or x8874 (not x8878))
+(or x8874 (not x8879))
+(or x8874 (not x8880))
+(or x8874 (not x8811))
+(or x8874 (not x8881))
+(or x8874 (not x8882))
+(or x8874 (not x8883))
+(or x8874 (not x8884))
+(or x8874 (not x8888))
+(or x8875 x8876 x8877 x8878 x8879 x8880 x8811 x8881 x8882 x8883 x8884 x8888 (not x8874))
+(or (not x8889) (not x8890) (not x8891) (not x8892) (not x8893) (not x8894) (not x8895) (not x8896) (not x8897) (not x8898) (not x8899) (not x8874) x8900)
+(or (not x8900) x8889)
+(or (not x8900) x8890)
+(or (not x8900) x8891)
+(or (not x8900) x8892)
+(or (not x8900) x8893)
+(or (not x8900) x8894)
+(or (not x8900) x8895)
+(or (not x8900) x8896)
+(or (not x8900) x8897)
+(or (not x8900) x8898)
+(or (not x8900) x8899)
+(or (not x8900) x8874)
+(or x8901 (not x8875))
+(or x8901 (not x8876))
+(or x8901 (not x8877))
+(or x8901 (not x8878))
+(or x8901 (not x8879))
+(or x8901 (not x8880))
+(or x8901 (not x8811))
+(or x8901 (not x8881))
+(or x8901 (not x8882))
+(or x8901 (not x8883))
+(or x8901 (not x8884))
+(or x8901 (not x8887))
+(or x8875 x8876 x8877 x8878 x8879 x8880 x8811 x8881 x8882 x8883 x8884 x8887 (not x8901))
+(or x8902 x8903)
+(or x8902 (not x8904))
+(or (not x8903) x8904 (not x8902))
+(or (not x8902) (not x8903) x8905)
+(or (not x8905) x8902)
+(or (not x8905) x8903)
+(or x8906 (not x8875))
+(or x8906 (not x8876))
+(or x8906 (not x8877))
+(or x8906 (not x8878))
+(or x8906 (not x8879))
+(or x8906 (not x8880))
+(or x8906 (not x8811))
+(or x8906 (not x8881))
+(or x8906 (not x8888))
+(or x8906 (not x8887))
+(or x8906 (not x8886))
+(or x8906 x8885)
+(or x8906 (not x161))
+(or x8906 (not x160))
+(or x8906 (not x8905))
+(or x8875 x8876 x8877 x8878 x8879 x8880 x8811 x8881 x8888 x8887 x8886 (not x8885) x161 x160 x8905 (not x8906))
+(or x8907 (not x8875))
+(or x8907 (not x8876))
+(or x8907 (not x8877))
+(or x8907 (not x8878))
+(or x8907 (not x8879))
+(or x8907 (not x8880))
+(or x8907 (not x8888))
+(or x8907 (not x8887))
+(or x8907 x8886)
+(or x8907 x8885)
+(or x8907 x8908)
+(or x8907 x8909)
+(or x8907 x8910)
+(or x8875 x8876 x8877 x8878 x8879 x8880 x8888 x8887 (not x8886) (not x8885) (not x8908) (not x8909) (not x8910) (not x8907))
+(or x8911 (not x8875))
+(or x8911 (not x8876))
+(or x8911 (not x8877))
+(or x8911 (not x8878))
+(or x8911 (not x8888))
+(or x8911 (not x8887))
+(or x8911 x8886)
+(or x8911 (not x8885))
+(or x8911 (not x8912))
+(or x8911 x8913)
+(or x8911 x8914)
+(or x8875 x8876 x8877 x8878 x8888 x8887 (not x8886) x8885 x8912 (not x8913) (not x8914) (not x8911))
+(or x8915 (not x8875))
+(or x8915 (not x8888))
+(or x8915 (not x8887))
+(or x8915 (not x8886))
+(or x8915 (not x8885))
+(or x8915 (not x160))
+(or x8915 x8586)
+(or x8915 x8585)
+(or x8915 (not x8912))
+(or x8915 (not x8916))
+(or x8915 (not x8917))
+(or x8915 x8918)
+(or x8875 x8888 x8887 x8886 x8885 x160 (not x8586) (not x8585) x8912 x8916 x8917 (not x8918) (not x8915))
+(or x8919 x8920)
+(or x8919 x8921)
+(or x8919 x8922)
+(or (not x8920) (not x8921) (not x8922) (not x8919))
+(or (not x8919) (not x8920) x8923)
+(or (not x8923) x8919)
+(or (not x8923) x8920)
+(or x8924 x8925)
+(or x8924 (not x8923))
+(or (not x8925) x8923 (not x8924))
+(or (not x8924) (not x8925) x8926)
+(or (not x8926) x8924)
+(or (not x8926) x8925)
+(or x8927 (not x8888))
+(or x8927 (not x8887))
+(or x8927 (not x8886))
+(or x8927 (not x8885))
+(or x8927 (not x160))
+(or x8927 x8586)
+(or x8927 x8585)
+(or x8927 (not x8912))
+(or x8927 (not x8928))
+(or x8927 (not x8926))
+(or x8888 x8887 x8886 x8885 x160 (not x8586) (not x8585) x8912 x8928 x8926 (not x8927))
+(or (not x8927) (not x8915) (not x8891) (not x8892) (not x8911) (not x8894) (not x8907) (not x8896) (not x8906) (not x8899) (not x8901) x8929)
+(or (not x8929) x8927)
+(or (not x8929) x8915)
+(or (not x8929) x8891)
+(or (not x8929) x8892)
+(or (not x8929) x8911)
+(or (not x8929) x8894)
+(or (not x8929) x8907)
+(or (not x8929) x8896)
+(or (not x8929) x8906)
+(or (not x8929) x8899)
+(or (not x8929) x8901)
+(or x8930 (not x8875))
+(or x8930 (not x8876))
+(or x8930 (not x8877))
+(or x8930 (not x8878))
+(or x8930 (not x8879))
+(or x8930 (not x8880))
+(or x8930 (not x8811))
+(or x8930 (not x8881))
+(or x8930 (not x8882))
+(or x8930 (not x8883))
+(or x8930 (not x8884))
+(or x8930 (not x8886))
+(or x8875 x8876 x8877 x8878 x8879 x8880 x8811 x8881 x8882 x8883 x8884 x8886 (not x8930))
+(or x8898 (not x8875))
+(or x8898 (not x8876))
+(or x8898 (not x8877))
+(or x8898 (not x8878))
+(or x8898 (not x8879))
+(or x8898 (not x8880))
+(or x8898 (not x8811))
+(or x8898 (not x8881))
+(or x8898 (not x8882))
+(or x8898 (not x8888))
+(or x8898 x8887)
+(or x8898 x8886)
+(or x8898 (not x8885))
+(or x8898 (not x161))
+(or x8898 (not x160))
+(or x8875 x8876 x8877 x8878 x8879 x8880 x8811 x8881 x8882 x8888 (not x8887) (not x8886) x8885 x161 x160 (not x8898))
+(or x8931 x8904)
+(or x8931 x8932)
+(or (not x8904) (not x8932) (not x8931))
+(or (not x8931) (not x8904) x8933)
+(or (not x8933) x8931)
+(or (not x8933) x8904)
+(or x8934 (not x8875))
+(or x8934 (not x8876))
+(or x8934 (not x8877))
+(or x8934 (not x8878))
+(or x8934 (not x8879))
+(or x8934 (not x8880))
+(or x8934 (not x8811))
+(or x8934 (not x8881))
+(or x8934 (not x8888))
+(or x8934 (not x8887))
+(or x8934 (not x8886))
+(or x8934 x8885)
+(or x8934 (not x161))
+(or x8934 (not x160))
+(or x8934 x8903)
+(or x8934 (not x8933))
+(or x8875 x8876 x8877 x8878 x8879 x8880 x8811 x8881 x8888 x8887 x8886 (not x8885) x161 x160 (not x8903) x8933 (not x8934))
+(or x8935 x8910)
+(or x8935 (not x8936))
+(or (not x8910) x8936 (not x8935))
+(or (not x8935) (not x8910) x8937)
+(or (not x8937) x8935)
+(or (not x8937) x8910)
+(or x8938 x8908)
+(or x8938 x8909)
+(or x8938 (not x8937))
+(or (not x8908) (not x8909) x8937 (not x8938))
+(or (not x8938) (not x8908) x8939)
+(or (not x8939) x8938)
+(or (not x8939) x8908)
+(or x8940 (not x8875))
+(or x8940 (not x8876))
+(or x8940 (not x8877))
+(or x8940 (not x8878))
+(or x8940 (not x8879))
+(or x8940 (not x8880))
+(or x8940 (not x8888))
+(or x8940 (not x8887))
+(or x8940 x8886)
+(or x8940 x8885)
+(or x8940 (not x8939))
+(or x8875 x8876 x8877 x8878 x8879 x8880 x8888 x8887 (not x8886) (not x8885) x8939 (not x8940))
+(or x8941 x8914)
+(or x8941 (not x8942))
+(or (not x8914) x8942 (not x8941))
+(or (not x8941) (not x8914) x8943)
+(or (not x8943) x8941)
+(or (not x8943) x8914)
+(or x8944 (not x8875))
+(or x8944 (not x8876))
+(or x8944 (not x8877))
+(or x8944 (not x8878))
+(or x8944 (not x8888))
+(or x8944 (not x8887))
+(or x8944 x8886)
+(or x8944 (not x8885))
+(or x8944 (not x8912))
+(or x8944 x8913)
+(or x8944 (not x8943))
+(or x8875 x8876 x8877 x8878 x8888 x8887 (not x8886) x8885 x8912 (not x8913) x8943 (not x8944))
+(or x8945 (not x8875))
+(or x8945 (not x8888))
+(or x8945 (not x8887))
+(or x8945 (not x8886))
+(or x8945 (not x8885))
+(or x8945 (not x160))
+(or x8945 x8586)
+(or x8945 x8585)
+(or x8945 (not x8912))
+(or x8945 (not x8916))
+(or x8945 (not x8917))
+(or x8945 (not x8918))
+(or x8875 x8888 x8887 x8886 x8885 x160 (not x8586) (not x8585) x8912 x8916 x8917 x8918 (not x8945))
+(or x8946 x8925)
+(or x8946 x8920)
+(or x8946 x8921)
+(or x8946 (not x8922))
+(or (not x8925) (not x8920) (not x8921) x8922 (not x8946))
+(or (not x8946) (not x8925) x8947)
+(or (not x8947) x8946)
+(or (not x8947) x8925)
+(or x8948 (not x8888))
+(or x8948 (not x8887))
+(or x8948 (not x8886))
+(or x8948 (not x8885))
+(or x8948 (not x160))
+(or x8948 x8586)
+(or x8948 x8585)
+(or x8948 (not x8912))
+(or x8948 (not x8928))
+(or x8948 (not x8947))
+(or x8888 x8887 x8886 x8885 x160 (not x8586) (not x8585) x8912 x8928 x8947 (not x8948))
+(or (not x8948) (not x8945) (not x8892) (not x8944) (not x8940) (not x8896) (not x8934) (not x8898) (not x8899) (not x8930) x8949)
+(or (not x8949) x8948)
+(or (not x8949) x8945)
+(or (not x8949) x8892)
+(or (not x8949) x8944)
+(or (not x8949) x8940)
+(or (not x8949) x8896)
+(or (not x8949) x8934)
+(or (not x8949) x8898)
+(or (not x8949) x8899)
+(or (not x8949) x8930)
+(or x8950 (not x8792))
+(or x8950 (not x8794))
+(or x8950 (not x8793))
+(or x8792 x8794 x8793 (not x8950))
+(or (not x8950) (not x160) x8884)
+(or (not x8884) x8950)
+(or (not x8884) x160)
+(or x8951 (not x8875))
+(or x8951 (not x8876))
+(or x8951 (not x8877))
+(or x8951 (not x8878))
+(or x8951 (not x8879))
+(or x8951 (not x8880))
+(or x8951 (not x8811))
+(or x8951 (not x8881))
+(or x8951 (not x8882))
+(or x8951 (not x8883))
+(or x8951 (not x8884))
+(or x8951 (not x8885))
+(or x8875 x8876 x8877 x8878 x8879 x8880 x8811 x8881 x8882 x8883 x8884 x8885 (not x8951))
+(or x8776 (not x8888))
+(or x8776 x8887)
+(or x8776 (not x8886))
+(or x8776 (not x8885))
+(or x8888 (not x8887) x8886 x8885 (not x8776))
+(or (not x8776) (not x8777) (not x8741) x8952)
+(or (not x8952) x8776)
+(or (not x8952) x8777)
+(or (not x8952) x8741)
+(or x8888 (not x8887) (not x8886) x8885 x161 x160 x8883)
+(or (not x8883) (not x8888))
+(or (not x8883) x8887)
+(or (not x8883) x8886)
+(or (not x8883) (not x8885))
+(or (not x8883) (not x161))
+(or (not x8883) (not x160))
+(or x8888 x8887 x8886 (not x8885) x161 x160 x8882)
+(or (not x8882) (not x8888))
+(or (not x8882) (not x8887))
+(or (not x8882) (not x8886))
+(or (not x8882) x8885)
+(or (not x8882) (not x161))
+(or (not x8882) (not x160))
+(or x8899 (not x8875))
+(or x8899 (not x8876))
+(or x8899 (not x8877))
+(or x8899 (not x8878))
+(or x8899 (not x8879))
+(or x8899 (not x8880))
+(or x8899 (not x8811))
+(or x8899 (not x8881))
+(or x8899 (not x8882))
+(or x8899 (not x8883))
+(or x8899 (not x8952))
+(or x8899 x160)
+(or x8875 x8876 x8877 x8878 x8879 x8880 x8811 x8881 x8882 x8883 x8952 (not x160) (not x8899))
+(or x8953 x8932)
+(or x8953 x8954)
+(or (not x8932) (not x8954) (not x8953))
+(or (not x8953) (not x8932) x8955)
+(or (not x8955) x8953)
+(or (not x8955) x8932)
+(or x8888 x8887 x8886 (not x8885) x161 (not x160) x8881)
+(or (not x8881) (not x8888))
+(or (not x8881) (not x8887))
+(or (not x8881) (not x8886))
+(or (not x8881) x8885)
+(or (not x8881) (not x161))
+(or (not x8881) x160)
+(or x8897 (not x8875))
+(or x8897 (not x8876))
+(or x8897 (not x8877))
+(or x8897 (not x8878))
+(or x8897 (not x8879))
+(or x8897 (not x8880))
+(or x8897 (not x8811))
+(or x8897 (not x8881))
+(or x8897 (not x8888))
+(or x8897 (not x8887))
+(or x8897 (not x8886))
+(or x8897 x8885)
+(or x8897 (not x161))
+(or x8897 (not x160))
+(or x8875 x8876 x8877 x8878 x8879 x8880 x8811 x8881 x8888 x8887 x8886 (not x8885) x161 x160 (not x8897))
+(or x8956 (not x8875))
+(or x8956 (not x8876))
+(or x8956 (not x8877))
+(or x8956 (not x8878))
+(or x8956 (not x8879))
+(or x8956 (not x8880))
+(or x8956 (not x8811))
+(or x8956 (not x8881))
+(or x8956 (not x8888))
+(or x8956 (not x8887))
+(or x8956 (not x8886))
+(or x8956 x8885)
+(or x8956 (not x161))
+(or x8956 (not x160))
+(or x8956 x8903)
+(or x8956 x8904)
+(or x8956 (not x8955))
+(or x8875 x8876 x8877 x8878 x8879 x8880 x8811 x8881 x8888 x8887 x8886 (not x8885) x161 x160 (not x8903) (not x8904) x8955 (not x8956))
+(or x8896 (not x8875))
+(or x8896 (not x8876))
+(or x8896 (not x8877))
+(or x8896 (not x8878))
+(or x8896 (not x8879))
+(or x8896 (not x8880))
+(or x8896 (not x8811))
+(or x8896 (not x8888))
+(or x8896 (not x8887))
+(or x8896 (not x8886))
+(or x8896 x8885)
+(or x8896 (not x161))
+(or x8896 x160)
+(or x8875 x8876 x8877 x8878 x8879 x8880 x8811 x8888 x8887 x8886 (not x8885) x161 (not x160) (not x8896))
+(or x8957 x8909)
+(or x8957 (not x8910))
+(or (not x8909) x8910 (not x8957))
+(or (not x8957) (not x8909) x8958)
+(or (not x8958) x8957)
+(or (not x8958) x8909)
+(or x8895 (not x8875))
+(or x8895 (not x8876))
+(or x8895 (not x8877))
+(or x8895 (not x8878))
+(or x8895 (not x8879))
+(or x8895 (not x8880))
+(or x8895 (not x8888))
+(or x8895 (not x8887))
+(or x8895 x8886)
+(or x8895 x8885)
+(or x8875 x8876 x8877 x8878 x8879 x8880 x8888 x8887 (not x8886) (not x8885) (not x8895))
+(or x8959 (not x8875))
+(or x8959 (not x8876))
+(or x8959 (not x8877))
+(or x8959 (not x8878))
+(or x8959 (not x8879))
+(or x8959 (not x8880))
+(or x8959 (not x8888))
+(or x8959 (not x8887))
+(or x8959 x8886)
+(or x8959 x8885)
+(or x8959 x8908)
+(or x8959 (not x8958))
+(or x8875 x8876 x8877 x8878 x8879 x8880 x8888 x8887 (not x8886) (not x8885) (not x8908) x8958 (not x8959))
+(or x8888 x8887 (not x8886) x8885 (not x8960) x8879)
+(or (not x8879) (not x8888))
+(or (not x8879) (not x8887))
+(or (not x8879) x8886)
+(or (not x8879) (not x8885))
+(or (not x8879) x8960)
+(or x8894 (not x8875))
+(or x8894 (not x8876))
+(or x8894 (not x8877))
+(or x8894 (not x8878))
+(or x8894 (not x8879))
+(or x8894 (not x8888))
+(or x8894 (not x8887))
+(or x8894 x8886)
+(or x8894 (not x8885))
+(or x8875 x8876 x8877 x8878 x8879 x8888 x8887 (not x8886) x8885 (not x8894))
+(or x8961 x8913)
+(or x8961 x8914)
+(or x8961 x8942)
+(or x8961 x8962)
+(or (not x8913) (not x8914) (not x8942) (not x8962) (not x8961))
+(or (not x8961) (not x8913) x8963)
+(or (not x8963) x8961)
+(or (not x8963) x8913)
+(or x8888 x8887 (not x8886) x8885 (not x160) (not x161) x8878)
+(or (not x8878) (not x8888))
+(or (not x8878) (not x8887))
+(or (not x8878) x8886)
+(or (not x8878) (not x8885))
+(or (not x8878) x160)
+(or (not x8878) x161)
+(or x8893 (not x8875))
+(or x8893 (not x8876))
+(or x8893 (not x8877))
+(or x8893 (not x8878))
+(or x8893 (not x8888))
+(or x8893 (not x8887))
+(or x8893 x8886)
+(or x8893 (not x8885))
+(or x8893 (not x8912))
+(or x8875 x8876 x8877 x8878 x8888 x8887 (not x8886) x8885 x8912 (not x8893))
+(or x8964 (not x8875))
+(or x8964 (not x8876))
+(or x8964 (not x8877))
+(or x8964 (not x8878))
+(or x8964 (not x8888))
+(or x8964 (not x8887))
+(or x8964 x8886)
+(or x8964 (not x8885))
+(or x8964 (not x8912))
+(or x8964 (not x8963))
+(or x8875 x8876 x8877 x8878 x8888 x8887 (not x8886) x8885 x8912 x8963 (not x8964))
+(or x8892 (not x8875))
+(or x8892 (not x8876))
+(or x8892 (not x8877))
+(or x8892 (not x8888))
+(or x8892 (not x8887))
+(or x8892 x8886)
+(or x8892 (not x8885))
+(or x8892 x160)
+(or x8892 x161)
+(or x8875 x8876 x8877 x8888 x8887 (not x8886) x8885 (not x160) (not x161) (not x8892))
+(or x8888 x8887 x8886 x8885 x160 (not x8586) (not x8585) (not x8960) (not x8965) (not x8966) x8876)
+(or (not x8876) (not x8888))
+(or (not x8876) (not x8887))
+(or (not x8876) (not x8886))
+(or (not x8876) (not x8885))
+(or (not x8876) (not x160))
+(or (not x8876) x8586)
+(or (not x8876) x8585)
+(or (not x8876) x8960)
+(or (not x8876) x8965)
+(or (not x8876) x8966)
+(or x8891 (not x8875))
+(or x8891 (not x8876))
+(or x8891 (not x8888))
+(or x8891 (not x8887))
+(or x8891 (not x8886))
+(or x8891 (not x8885))
+(or x8891 (not x160))
+(or x8891 x8586)
+(or x8891 x8585)
+(or x8875 x8876 x8888 x8887 x8886 x8885 x160 (not x8586) (not x8585) (not x8891))
+(or (not x8847) (not x8846) x8845)
+(or (not x8845) x8847)
+(or (not x8845) x8846)
+(or (not x8847) x8846 x8844)
+(or (not x8844) x8847)
+(or (not x8844) (not x8846))
+(or x8847 (not x8846) x8843)
+(or (not x8843) (not x8847))
+(or (not x8843) x8846)
+(or x8847 x8846 (not x159) x160 x8967)
+(or (not x8967) (not x8847))
+(or (not x8967) (not x8846))
+(or (not x8967) x159)
+(or (not x8967) (not x160))
+(or x8960 (not x8967))
+(or x8960 (not x8843))
+(or x8960 (not x8844))
+(or x8960 (not x8845))
+(or x8967 x8843 x8844 x8845 (not x8960))
+(or x8888 x8887 x8886 x8885 x160 (not x8586) (not x8585) x8877)
+(or (not x8877) (not x8888))
+(or (not x8877) (not x8887))
+(or (not x8877) (not x8886))
+(or (not x8877) (not x8885))
+(or (not x8877) (not x160))
+(or (not x8877) x8586)
+(or (not x8877) x8585)
+(or x8888 x8887 x8886 x8885 x160 (not x8586) (not x8585) (not x8960) (not x8968) x8875)
+(or (not x8875) (not x8888))
+(or (not x8875) (not x8887))
+(or (not x8875) (not x8886))
+(or (not x8875) (not x8885))
+(or (not x8875) (not x160))
+(or (not x8875) x8586)
+(or (not x8875) x8585)
+(or (not x8875) x8960)
+(or (not x8875) x8968)
+(or x8890 (not x8875))
+(or x8890 (not x8888))
+(or x8890 (not x8887))
+(or x8890 (not x8886))
+(or x8890 (not x8885))
+(or x8890 (not x160))
+(or x8890 x8586)
+(or x8890 x8585)
+(or x8890 (not x8912))
+(or x8890 (not x8916))
+(or x8890 (not x8917))
+(or x8875 x8888 x8887 x8886 x8885 x160 (not x8586) (not x8585) x8912 x8916 x8917 (not x8890))
+(or x8969 (not x8875))
+(or x8969 (not x8888))
+(or x8969 (not x8887))
+(or x8969 (not x8886))
+(or x8969 (not x8885))
+(or x8969 (not x160))
+(or x8969 x8586)
+(or x8969 x8585)
+(or x8969 (not x8912))
+(or x8969 (not x8916))
+(or x8969 (not x8917))
+(or x8969 x8918)
+(or x8969 x8970)
+(or x8875 x8888 x8887 x8886 x8885 x160 (not x8586) (not x8585) x8912 x8916 x8917 (not x8918) (not x8970) (not x8969))
+(or x8971 x8921)
+(or x8971 x8922)
+(or (not x8921) (not x8922) (not x8971))
+(or (not x8971) (not x8921) x8972)
+(or (not x8972) x8971)
+(or (not x8972) x8921)
+(or x8973 x8847)
+(or x8973 x8846)
+(or (not x8847) (not x8846) (not x8973))
+(or x8974 x8847)
+(or x8974 (not x8846))
+(or (not x8847) x8846 (not x8974))
+(or x8975 (not x8847))
+(or x8975 x8846)
+(or x8847 (not x8846) (not x8975))
+(or x8976 (not x8847))
+(or x8976 (not x8846))
+(or x8976 x159)
+(or x8976 (not x160))
+(or x8847 x8846 (not x159) x160 (not x8976))
+(or (not x8976) (not x8975) (not x8974) (not x8973) x8912)
+(or (not x8912) x8976)
+(or (not x8912) x8975)
+(or (not x8912) x8974)
+(or (not x8912) x8973)
+(or x8889 (not x8888))
+(or x8889 (not x8887))
+(or x8889 (not x8886))
+(or x8889 (not x8885))
+(or x8889 (not x160))
+(or x8889 x8586)
+(or x8889 x8585)
+(or x8889 (not x8912))
+(or x8889 (not x8928))
+(or x8888 x8887 x8886 x8885 x160 (not x8586) (not x8585) x8912 x8928 (not x8889))
+(or x8977 (not x8888))
+(or x8977 (not x8887))
+(or x8977 (not x8886))
+(or x8977 (not x8885))
+(or x8977 (not x160))
+(or x8977 x8586)
+(or x8977 x8585)
+(or x8977 (not x8912))
+(or x8977 (not x8928))
+(or x8977 x8925)
+(or x8977 x8920)
+(or x8977 (not x8972))
+(or x8888 x8887 x8886 x8885 x160 (not x8586) (not x8585) x8912 x8928 (not x8925) (not x8920) x8972 (not x8977))
+(or (not x8977) (not x8969) (not x8891) (not x8892) (not x8964) (not x8894) (not x8959) (not x8896) (not x8956) (not x8899) (not x8951) x8978)
+(or (not x8978) x8977)
+(or (not x8978) x8969)
+(or (not x8978) x8891)
+(or (not x8978) x8892)
+(or (not x8978) x8964)
+(or (not x8978) x8894)
+(or (not x8978) x8959)
+(or (not x8978) x8896)
+(or (not x8978) x8956)
+(or (not x8978) x8899)
+(or (not x8978) x8951)
+(or x8979 (not x8980))
+(or x8979 (not x8981))
+(or x8979 (not x8982))
+(or x8979 (not x8983))
+(or x8979 (not x8984))
+(or x8979 (not x8985))
+(or x8979 (not x8809))
+(or x8979 (not x8986))
+(or x8979 (not x8987))
+(or x8979 (not x8988))
+(or x8979 (not x8989))
+(or x8979 (not x8993))
+(or x8980 x8981 x8982 x8983 x8984 x8985 x8809 x8986 x8987 x8988 x8989 x8993 (not x8979))
+(or (not x8994) (not x8995) (not x8996) (not x8997) (not x8998) (not x8999) (not x9000) (not x9001) (not x9002) (not x9003) (not x9004) (not x8979) x9005)
+(or (not x9005) x8994)
+(or (not x9005) x8995)
+(or (not x9005) x8996)
+(or (not x9005) x8997)
+(or (not x9005) x8998)
+(or (not x9005) x8999)
+(or (not x9005) x9000)
+(or (not x9005) x9001)
+(or (not x9005) x9002)
+(or (not x9005) x9003)
+(or (not x9005) x9004)
+(or (not x9005) x8979)
+(or x9006 (not x8980))
+(or x9006 (not x8981))
+(or x9006 (not x8982))
+(or x9006 (not x8983))
+(or x9006 (not x8984))
+(or x9006 (not x8985))
+(or x9006 (not x8809))
+(or x9006 (not x8986))
+(or x9006 (not x8987))
+(or x9006 (not x8988))
+(or x9006 (not x8989))
+(or x9006 (not x8992))
+(or x8980 x8981 x8982 x8983 x8984 x8985 x8809 x8986 x8987 x8988 x8989 x8992 (not x9006))
+(or x9007 x9008)
+(or x9007 (not x9009))
+(or (not x9008) x9009 (not x9007))
+(or (not x9007) (not x9008) x9010)
+(or (not x9010) x9007)
+(or (not x9010) x9008)
+(or x9011 (not x8980))
+(or x9011 (not x8981))
+(or x9011 (not x8982))
+(or x9011 (not x8983))
+(or x9011 (not x8984))
+(or x9011 (not x8985))
+(or x9011 (not x8809))
+(or x9011 (not x8986))
+(or x9011 (not x8993))
+(or x9011 (not x8992))
+(or x9011 (not x8991))
+(or x9011 x8990)
+(or x9011 (not x161))
+(or x9011 (not x160))
+(or x9011 (not x9010))
+(or x8980 x8981 x8982 x8983 x8984 x8985 x8809 x8986 x8993 x8992 x8991 (not x8990) x161 x160 x9010 (not x9011))
+(or x9012 (not x8980))
+(or x9012 (not x8981))
+(or x9012 (not x8982))
+(or x9012 (not x8983))
+(or x9012 (not x8984))
+(or x9012 (not x8985))
+(or x9012 (not x8993))
+(or x9012 (not x8992))
+(or x9012 x8991)
+(or x9012 x8990)
+(or x9012 x9013)
+(or x9012 x9014)
+(or x9012 x9015)
+(or x8980 x8981 x8982 x8983 x8984 x8985 x8993 x8992 (not x8991) (not x8990) (not x9013) (not x9014) (not x9015) (not x9012))
+(or x9016 (not x8980))
+(or x9016 (not x8981))
+(or x9016 (not x8982))
+(or x9016 (not x8983))
+(or x9016 (not x8993))
+(or x9016 (not x8992))
+(or x9016 x8991)
+(or x9016 (not x8990))
+(or x9016 (not x9017))
+(or x9016 x9018)
+(or x9016 x9019)
+(or x8980 x8981 x8982 x8983 x8993 x8992 (not x8991) x8990 x9017 (not x9018) (not x9019) (not x9016))
+(or x9020 (not x8980))
+(or x9020 (not x8993))
+(or x9020 (not x8992))
+(or x9020 (not x8991))
+(or x9020 (not x8990))
+(or x9020 (not x160))
+(or x9020 x8586)
+(or x9020 x8585)
+(or x9020 (not x9017))
+(or x9020 (not x8916))
+(or x9020 (not x8917))
+(or x9020 x9021)
+(or x8980 x8993 x8992 x8991 x8990 x160 (not x8586) (not x8585) x9017 x8916 x8917 (not x9021) (not x9020))
+(or x9022 x9023)
+(or x9022 x9024)
+(or x9022 x9025)
+(or (not x9023) (not x9024) (not x9025) (not x9022))
+(or (not x9022) (not x9023) x9026)
+(or (not x9026) x9022)
+(or (not x9026) x9023)
+(or x9027 x9028)
+(or x9027 (not x9026))
+(or (not x9028) x9026 (not x9027))
+(or (not x9027) (not x9028) x9029)
+(or (not x9029) x9027)
+(or (not x9029) x9028)
+(or x9030 (not x8993))
+(or x9030 (not x8992))
+(or x9030 (not x8991))
+(or x9030 (not x8990))
+(or x9030 (not x160))
+(or x9030 x8586)
+(or x9030 x8585)
+(or x9030 (not x9017))
+(or x9030 (not x8928))
+(or x9030 (not x9029))
+(or x8993 x8992 x8991 x8990 x160 (not x8586) (not x8585) x9017 x8928 x9029 (not x9030))
+(or (not x9030) (not x9020) (not x8996) (not x8997) (not x9016) (not x8999) (not x9012) (not x9001) (not x9011) (not x9004) (not x9006) x9031)
+(or (not x9031) x9030)
+(or (not x9031) x9020)
+(or (not x9031) x8996)
+(or (not x9031) x8997)
+(or (not x9031) x9016)
+(or (not x9031) x8999)
+(or (not x9031) x9012)
+(or (not x9031) x9001)
+(or (not x9031) x9011)
+(or (not x9031) x9004)
+(or (not x9031) x9006)
+(or x9032 (not x8980))
+(or x9032 (not x8981))
+(or x9032 (not x8982))
+(or x9032 (not x8983))
+(or x9032 (not x8984))
+(or x9032 (not x8985))
+(or x9032 (not x8809))
+(or x9032 (not x8986))
+(or x9032 (not x8987))
+(or x9032 (not x8988))
+(or x9032 (not x8989))
+(or x9032 (not x8991))
+(or x8980 x8981 x8982 x8983 x8984 x8985 x8809 x8986 x8987 x8988 x8989 x8991 (not x9032))
+(or x9003 (not x8980))
+(or x9003 (not x8981))
+(or x9003 (not x8982))
+(or x9003 (not x8983))
+(or x9003 (not x8984))
+(or x9003 (not x8985))
+(or x9003 (not x8809))
+(or x9003 (not x8986))
+(or x9003 (not x8987))
+(or x9003 (not x8993))
+(or x9003 x8992)
+(or x9003 x8991)
+(or x9003 (not x8990))
+(or x9003 (not x161))
+(or x9003 (not x160))
+(or x8980 x8981 x8982 x8983 x8984 x8985 x8809 x8986 x8987 x8993 (not x8992) (not x8991) x8990 x161 x160 (not x9003))
+(or x9033 x9009)
+(or x9033 x9034)
+(or (not x9009) (not x9034) (not x9033))
+(or (not x9033) (not x9009) x9035)
+(or (not x9035) x9033)
+(or (not x9035) x9009)
+(or x9036 (not x8980))
+(or x9036 (not x8981))
+(or x9036 (not x8982))
+(or x9036 (not x8983))
+(or x9036 (not x8984))
+(or x9036 (not x8985))
+(or x9036 (not x8809))
+(or x9036 (not x8986))
+(or x9036 (not x8993))
+(or x9036 (not x8992))
+(or x9036 (not x8991))
+(or x9036 x8990)
+(or x9036 (not x161))
+(or x9036 (not x160))
+(or x9036 x9008)
+(or x9036 (not x9035))
+(or x8980 x8981 x8982 x8983 x8984 x8985 x8809 x8986 x8993 x8992 x8991 (not x8990) x161 x160 (not x9008) x9035 (not x9036))
+(or x9037 x9015)
+(or x9037 (not x9038))
+(or (not x9015) x9038 (not x9037))
+(or (not x9037) (not x9015) x9039)
+(or (not x9039) x9037)
+(or (not x9039) x9015)
+(or x9040 x9013)
+(or x9040 x9014)
+(or x9040 (not x9039))
+(or (not x9013) (not x9014) x9039 (not x9040))
+(or (not x9040) (not x9013) x9041)
+(or (not x9041) x9040)
+(or (not x9041) x9013)
+(or x9042 (not x8980))
+(or x9042 (not x8981))
+(or x9042 (not x8982))
+(or x9042 (not x8983))
+(or x9042 (not x8984))
+(or x9042 (not x8985))
+(or x9042 (not x8993))
+(or x9042 (not x8992))
+(or x9042 x8991)
+(or x9042 x8990)
+(or x9042 (not x9041))
+(or x8980 x8981 x8982 x8983 x8984 x8985 x8993 x8992 (not x8991) (not x8990) x9041 (not x9042))
+(or x9043 x9019)
+(or x9043 (not x9044))
+(or (not x9019) x9044 (not x9043))
+(or (not x9043) (not x9019) x9045)
+(or (not x9045) x9043)
+(or (not x9045) x9019)
+(or x9046 (not x8980))
+(or x9046 (not x8981))
+(or x9046 (not x8982))
+(or x9046 (not x8983))
+(or x9046 (not x8993))
+(or x9046 (not x8992))
+(or x9046 x8991)
+(or x9046 (not x8990))
+(or x9046 (not x9017))
+(or x9046 x9018)
+(or x9046 (not x9045))
+(or x8980 x8981 x8982 x8983 x8993 x8992 (not x8991) x8990 x9017 (not x9018) x9045 (not x9046))
+(or x9047 (not x8980))
+(or x9047 (not x8993))
+(or x9047 (not x8992))
+(or x9047 (not x8991))
+(or x9047 (not x8990))
+(or x9047 (not x160))
+(or x9047 x8586)
+(or x9047 x8585)
+(or x9047 (not x9017))
+(or x9047 (not x8916))
+(or x9047 (not x8917))
+(or x9047 (not x9021))
+(or x8980 x8993 x8992 x8991 x8990 x160 (not x8586) (not x8585) x9017 x8916 x8917 x9021 (not x9047))
+(or x9048 x9028)
+(or x9048 x9023)
+(or x9048 x9024)
+(or x9048 (not x9025))
+(or (not x9028) (not x9023) (not x9024) x9025 (not x9048))
+(or (not x9048) (not x9028) x9049)
+(or (not x9049) x9048)
+(or (not x9049) x9028)
+(or x9050 (not x8993))
+(or x9050 (not x8992))
+(or x9050 (not x8991))
+(or x9050 (not x8990))
+(or x9050 (not x160))
+(or x9050 x8586)
+(or x9050 x8585)
+(or x9050 (not x9017))
+(or x9050 (not x8928))
+(or x9050 (not x9049))
+(or x8993 x8992 x8991 x8990 x160 (not x8586) (not x8585) x9017 x8928 x9049 (not x9050))
+(or (not x9050) (not x9047) (not x8997) (not x9046) (not x9042) (not x9001) (not x9036) (not x9003) (not x9004) (not x9032) x9051)
+(or (not x9051) x9050)
+(or (not x9051) x9047)
+(or (not x9051) x8997)
+(or (not x9051) x9046)
+(or (not x9051) x9042)
+(or (not x9051) x9001)
+(or (not x9051) x9036)
+(or (not x9051) x9003)
+(or (not x9051) x9004)
+(or (not x9051) x9032)
+(or x9052 (not x8789))
+(or x9052 (not x8791))
+(or x9052 (not x8790))
+(or x8789 x8791 x8790 (not x9052))
+(or (not x9052) (not x160) x8989)
+(or (not x8989) x9052)
+(or (not x8989) x160)
+(or x9053 (not x8980))
+(or x9053 (not x8981))
+(or x9053 (not x8982))
+(or x9053 (not x8983))
+(or x9053 (not x8984))
+(or x9053 (not x8985))
+(or x9053 (not x8809))
+(or x9053 (not x8986))
+(or x9053 (not x8987))
+(or x9053 (not x8988))
+(or x9053 (not x8989))
+(or x9053 (not x8990))
+(or x8980 x8981 x8982 x8983 x8984 x8985 x8809 x8986 x8987 x8988 x8989 x8990 (not x9053))
+(or x8774 (not x8993))
+(or x8774 x8992)
+(or x8774 (not x8991))
+(or x8774 (not x8990))
+(or x8993 (not x8992) x8991 x8990 (not x8774))
+(or (not x8774) (not x8775) (not x8739) x9054)
+(or (not x9054) x8774)
+(or (not x9054) x8775)
+(or (not x9054) x8739)
+(or x8993 (not x8992) (not x8991) x8990 x161 x160 x8988)
+(or (not x8988) (not x8993))
+(or (not x8988) x8992)
+(or (not x8988) x8991)
+(or (not x8988) (not x8990))
+(or (not x8988) (not x161))
+(or (not x8988) (not x160))
+(or x8993 x8992 x8991 (not x8990) x161 x160 x8987)
+(or (not x8987) (not x8993))
+(or (not x8987) (not x8992))
+(or (not x8987) (not x8991))
+(or (not x8987) x8990)
+(or (not x8987) (not x161))
+(or (not x8987) (not x160))
+(or x9004 (not x8980))
+(or x9004 (not x8981))
+(or x9004 (not x8982))
+(or x9004 (not x8983))
+(or x9004 (not x8984))
+(or x9004 (not x8985))
+(or x9004 (not x8809))
+(or x9004 (not x8986))
+(or x9004 (not x8987))
+(or x9004 (not x8988))
+(or x9004 (not x9054))
+(or x9004 x160)
+(or x8980 x8981 x8982 x8983 x8984 x8985 x8809 x8986 x8987 x8988 x9054 (not x160) (not x9004))
+(or x9055 x9034)
+(or x9055 x9056)
+(or (not x9034) (not x9056) (not x9055))
+(or (not x9055) (not x9034) x9057)
+(or (not x9057) x9055)
+(or (not x9057) x9034)
+(or x8993 x8992 x8991 (not x8990) x161 (not x160) x8986)
+(or (not x8986) (not x8993))
+(or (not x8986) (not x8992))
+(or (not x8986) (not x8991))
+(or (not x8986) x8990)
+(or (not x8986) (not x161))
+(or (not x8986) x160)
+(or x9002 (not x8980))
+(or x9002 (not x8981))
+(or x9002 (not x8982))
+(or x9002 (not x8983))
+(or x9002 (not x8984))
+(or x9002 (not x8985))
+(or x9002 (not x8809))
+(or x9002 (not x8986))
+(or x9002 (not x8993))
+(or x9002 (not x8992))
+(or x9002 (not x8991))
+(or x9002 x8990)
+(or x9002 (not x161))
+(or x9002 (not x160))
+(or x8980 x8981 x8982 x8983 x8984 x8985 x8809 x8986 x8993 x8992 x8991 (not x8990) x161 x160 (not x9002))
+(or x9058 (not x8980))
+(or x9058 (not x8981))
+(or x9058 (not x8982))
+(or x9058 (not x8983))
+(or x9058 (not x8984))
+(or x9058 (not x8985))
+(or x9058 (not x8809))
+(or x9058 (not x8986))
+(or x9058 (not x8993))
+(or x9058 (not x8992))
+(or x9058 (not x8991))
+(or x9058 x8990)
+(or x9058 (not x161))
+(or x9058 (not x160))
+(or x9058 x9008)
+(or x9058 x9009)
+(or x9058 (not x9057))
+(or x8980 x8981 x8982 x8983 x8984 x8985 x8809 x8986 x8993 x8992 x8991 (not x8990) x161 x160 (not x9008) (not x9009) x9057 (not x9058))
+(or x9001 (not x8980))
+(or x9001 (not x8981))
+(or x9001 (not x8982))
+(or x9001 (not x8983))
+(or x9001 (not x8984))
+(or x9001 (not x8985))
+(or x9001 (not x8809))
+(or x9001 (not x8993))
+(or x9001 (not x8992))
+(or x9001 (not x8991))
+(or x9001 x8990)
+(or x9001 (not x161))
+(or x9001 x160)
+(or x8980 x8981 x8982 x8983 x8984 x8985 x8809 x8993 x8992 x8991 (not x8990) x161 (not x160) (not x9001))
+(or x9059 x9014)
+(or x9059 (not x9015))
+(or (not x9014) x9015 (not x9059))
+(or (not x9059) (not x9014) x9060)
+(or (not x9060) x9059)
+(or (not x9060) x9014)
+(or x9000 (not x8980))
+(or x9000 (not x8981))
+(or x9000 (not x8982))
+(or x9000 (not x8983))
+(or x9000 (not x8984))
+(or x9000 (not x8985))
+(or x9000 (not x8993))
+(or x9000 (not x8992))
+(or x9000 x8991)
+(or x9000 x8990)
+(or x8980 x8981 x8982 x8983 x8984 x8985 x8993 x8992 (not x8991) (not x8990) (not x9000))
+(or x9061 (not x8980))
+(or x9061 (not x8981))
+(or x9061 (not x8982))
+(or x9061 (not x8983))
+(or x9061 (not x8984))
+(or x9061 (not x8985))
+(or x9061 (not x8993))
+(or x9061 (not x8992))
+(or x9061 x8991)
+(or x9061 x8990)
+(or x9061 x9013)
+(or x9061 (not x9060))
+(or x8980 x8981 x8982 x8983 x8984 x8985 x8993 x8992 (not x8991) (not x8990) (not x9013) x9060 (not x9061))
+(or x8993 x8992 (not x8991) x8990 (not x9062) x8984)
+(or (not x8984) (not x8993))
+(or (not x8984) (not x8992))
+(or (not x8984) x8991)
+(or (not x8984) (not x8990))
+(or (not x8984) x9062)
+(or x8999 (not x8980))
+(or x8999 (not x8981))
+(or x8999 (not x8982))
+(or x8999 (not x8983))
+(or x8999 (not x8984))
+(or x8999 (not x8993))
+(or x8999 (not x8992))
+(or x8999 x8991)
+(or x8999 (not x8990))
+(or x8980 x8981 x8982 x8983 x8984 x8993 x8992 (not x8991) x8990 (not x8999))
+(or x9063 x9018)
+(or x9063 x9019)
+(or x9063 x9044)
+(or x9063 x9064)
+(or (not x9018) (not x9019) (not x9044) (not x9064) (not x9063))
+(or (not x9063) (not x9018) x9065)
+(or (not x9065) x9063)
+(or (not x9065) x9018)
+(or x8993 x8992 (not x8991) x8990 (not x160) (not x161) x8983)
+(or (not x8983) (not x8993))
+(or (not x8983) (not x8992))
+(or (not x8983) x8991)
+(or (not x8983) (not x8990))
+(or (not x8983) x160)
+(or (not x8983) x161)
+(or x8998 (not x8980))
+(or x8998 (not x8981))
+(or x8998 (not x8982))
+(or x8998 (not x8983))
+(or x8998 (not x8993))
+(or x8998 (not x8992))
+(or x8998 x8991)
+(or x8998 (not x8990))
+(or x8998 (not x9017))
+(or x8980 x8981 x8982 x8983 x8993 x8992 (not x8991) x8990 x9017 (not x8998))
+(or x9066 (not x8980))
+(or x9066 (not x8981))
+(or x9066 (not x8982))
+(or x9066 (not x8983))
+(or x9066 (not x8993))
+(or x9066 (not x8992))
+(or x9066 x8991)
+(or x9066 (not x8990))
+(or x9066 (not x9017))
+(or x9066 (not x9065))
+(or x8980 x8981 x8982 x8983 x8993 x8992 (not x8991) x8990 x9017 x9065 (not x9066))
+(or x8997 (not x8980))
+(or x8997 (not x8981))
+(or x8997 (not x8982))
+(or x8997 (not x8993))
+(or x8997 (not x8992))
+(or x8997 x8991)
+(or x8997 (not x8990))
+(or x8997 x160)
+(or x8997 x161)
+(or x8980 x8981 x8982 x8993 x8992 (not x8991) x8990 (not x160) (not x161) (not x8997))
+(or x8993 x8992 x8991 x8990 x160 (not x8586) (not x8585) (not x9062) (not x8965) (not x8966) x8981)
+(or (not x8981) (not x8993))
+(or (not x8981) (not x8992))
+(or (not x8981) (not x8991))
+(or (not x8981) (not x8990))
+(or (not x8981) (not x160))
+(or (not x8981) x8586)
+(or (not x8981) x8585)
+(or (not x8981) x9062)
+(or (not x8981) x8965)
+(or (not x8981) x8966)
+(or x8996 (not x8980))
+(or x8996 (not x8981))
+(or x8996 (not x8993))
+(or x8996 (not x8992))
+(or x8996 (not x8991))
+(or x8996 (not x8990))
+(or x8996 (not x160))
+(or x8996 x8586)
+(or x8996 x8585)
+(or x8980 x8981 x8993 x8992 x8991 x8990 x160 (not x8586) (not x8585) (not x8996))
+(or (not x8756) (not x8798) x8917)
+(or (not x8917) x8756)
+(or (not x8917) x8798)
+(or (not x8693) (not x8694) (not x8803) x8916)
+(or (not x8916) x8693)
+(or (not x8916) x8694)
+(or (not x8916) x8803)
+(or x8968 (not x8916))
+(or x8968 (not x8917))
+(or x8916 x8917 (not x8968))
+(or (not x8860) (not x8859) x8858)
+(or (not x8858) x8860)
+(or (not x8858) x8859)
+(or (not x8860) x8859 x8857)
+(or (not x8857) x8860)
+(or (not x8857) (not x8859))
+(or x8860 (not x8859) x8856)
+(or (not x8856) (not x8860))
+(or (not x8856) x8859)
+(or (not x159) x160 x8570)
+(or (not x8570) x159)
+(or (not x8570) (not x160))
+(or x8860 x8859 (not x159) x160 x9067)
+(or (not x9067) (not x8860))
+(or (not x9067) (not x8859))
+(or (not x9067) x159)
+(or (not x9067) (not x160))
+(or x9062 (not x9067))
+(or x9062 (not x8856))
+(or x9062 (not x8857))
+(or x9062 (not x8858))
+(or x9067 x8856 x8857 x8858 (not x9062))
+(or x8993 x8992 x8991 x8990 x160 (not x8586) (not x8585) x8982)
+(or (not x8982) (not x8993))
+(or (not x8982) (not x8992))
+(or (not x8982) (not x8991))
+(or (not x8982) (not x8990))
+(or (not x8982) (not x160))
+(or (not x8982) x8586)
+(or (not x8982) x8585)
+(or x8993 x8992 x8991 x8990 x160 (not x8586) (not x8585) (not x9062) (not x8968) x8980)
+(or (not x8980) (not x8993))
+(or (not x8980) (not x8992))
+(or (not x8980) (not x8991))
+(or (not x8980) (not x8990))
+(or (not x8980) (not x160))
+(or (not x8980) x8586)
+(or (not x8980) x8585)
+(or (not x8980) x9062)
+(or (not x8980) x8968)
+(or x8995 (not x8980))
+(or x8995 (not x8993))
+(or x8995 (not x8992))
+(or x8995 (not x8991))
+(or x8995 (not x8990))
+(or x8995 (not x160))
+(or x8995 x8586)
+(or x8995 x8585)
+(or x8995 (not x9017))
+(or x8995 (not x8916))
+(or x8995 (not x8917))
+(or x8980 x8993 x8992 x8991 x8990 x160 (not x8586) (not x8585) x9017 x8916 x8917 (not x8995))
+(or x9068 (not x8980))
+(or x9068 (not x8993))
+(or x9068 (not x8992))
+(or x9068 (not x8991))
+(or x9068 (not x8990))
+(or x9068 (not x160))
+(or x9068 x8586)
+(or x9068 x8585)
+(or x9068 (not x9017))
+(or x9068 (not x8916))
+(or x9068 (not x8917))
+(or x9068 x9021)
+(or x9068 x9069)
+(or x8980 x8993 x8992 x8991 x8990 x160 (not x8586) (not x8585) x9017 x8916 x8917 (not x9021) (not x9069) (not x9068))
+(or x9070 x9024)
+(or x9070 x9025)
+(or (not x9024) (not x9025) (not x9070))
+(or (not x9070) (not x9024) x9071)
+(or (not x9071) x9070)
+(or (not x9071) x9024)
+(or x8706 (not x8692))
+(or x8706 (not x8636))
+(or x8692 x8636 (not x8706))
+(or x8694 (not x8735))
+(or x8694 x8716)
+(or x8694 (not x8717))
+(or x8694 (not x8718))
+(or x8694 (not x8719))
+(or x8694 (not x8721))
+(or x8694 (not x8668))
+(or x8694 (not x8722))
+(or x8694 (not x8723))
+(or x8694 (not x8629))
+(or x8694 (not x8724))
+(or x8694 (not x8692))
+(or x8694 (not x8636))
+(or x8735 (not x8716) x8717 x8718 x8719 x8721 x8668 x8722 x8723 x8629 x8724 x8692 x8636 (not x8694))
+(or x8819 (not x8716))
+(or x8819 (not x8717))
+(or x8716 x8717 (not x8819))
+(or x8817 (not x8716))
+(or x8817 (not x8717))
+(or x8817 (not x8718))
+(or x8817 (not x8719))
+(or x8716 x8717 x8718 x8719 (not x8817))
+(or x8829 (not x8722))
+(or x8829 (not x8723))
+(or x8722 x8723 (not x8829))
+(or x8825 (not x8692))
+(or x8825 (not x8722))
+(or x8825 (not x8723))
+(or x8692 x8722 x8723 (not x8825))
+(or x8830 (not x8636))
+(or x8830 (not x8692))
+(or x8830 (not x8722))
+(or x8830 (not x8723))
+(or x8636 x8692 x8722 x8723 (not x8830))
+(or x8824 (not x8721))
+(or x8824 (not x8636))
+(or x8824 (not x8692))
+(or x8824 (not x8722))
+(or x8824 (not x8723))
+(or x8721 x8636 x8692 x8722 x8723 (not x8824))
+(or x8693 (not x8721))
+(or x8693 (not x8636))
+(or x8693 (not x8692))
+(or x8693 (not x8722))
+(or x8693 (not x8723))
+(or x8693 (not x8735))
+(or x8693 (not x8629))
+(or x8693 x8724)
+(or x8693 (not x8668))
+(or x8693 (not x8716))
+(or x8693 (not x8717))
+(or x8693 (not x8718))
+(or x8693 (not x8719))
+(or x8721 x8636 x8692 x8722 x8723 x8735 x8629 (not x8724) x8668 x8716 x8717 x8718 x8719 (not x8693))
+(or (not x8693) (not x8694) x9072)
+(or (not x9072) x8693)
+(or (not x9072) x8694)
+(or x8966 (not x9072))
+(or x8966 x8798)
+(or x9072 (not x8798) (not x8966))
+(or x8692 x8636 x8701)
+(or (not x8701) (not x8692))
+(or (not x8701) (not x8636))
+(or x8735 (not x8716) x8717 x8718 x8719 x8721 x8668 x8722 x8723 x8629 x8724 x8692 x8636 x8685)
+(or (not x8685) (not x8735))
+(or (not x8685) x8716)
+(or (not x8685) (not x8717))
+(or (not x8685) (not x8718))
+(or (not x8685) (not x8719))
+(or (not x8685) (not x8721))
+(or (not x8685) (not x8668))
+(or (not x8685) (not x8722))
+(or (not x8685) (not x8723))
+(or (not x8685) (not x8629))
+(or (not x8685) (not x8724))
+(or (not x8685) (not x8692))
+(or (not x8685) (not x8636))
+(or x8716 x8717 x8761)
+(or (not x8761) (not x8716))
+(or (not x8761) (not x8717))
+(or x8716 x8717 x8718 x8719 x8758)
+(or (not x8758) (not x8716))
+(or (not x8758) (not x8717))
+(or (not x8758) (not x8718))
+(or (not x8758) (not x8719))
+(or x8722 x8723 x8772)
+(or (not x8772) (not x8722))
+(or (not x8772) (not x8723))
+(or x8692 x8722 x8723 x8766)
+(or (not x8766) (not x8692))
+(or (not x8766) (not x8722))
+(or (not x8766) (not x8723))
+(or x8636 x8692 x8722 x8723 x8773)
+(or (not x8773) (not x8636))
+(or (not x8773) (not x8692))
+(or (not x8773) (not x8722))
+(or (not x8773) (not x8723))
+(or x8721 x8636 x8692 x8722 x8723 x8765)
+(or (not x8765) (not x8721))
+(or (not x8765) (not x8636))
+(or (not x8765) (not x8692))
+(or (not x8765) (not x8722))
+(or (not x8765) (not x8723))
+(or x8721 x8636 x8692 x8722 x8723 x8735 x8629 (not x8724) x8668 x8716 x8717 x8718 x8719 x8684)
+(or (not x8684) (not x8721))
+(or (not x8684) (not x8636))
+(or (not x8684) (not x8692))
+(or (not x8684) (not x8722))
+(or (not x8684) (not x8723))
+(or (not x8684) (not x8735))
+(or (not x8684) (not x8629))
+(or (not x8684) x8724)
+(or (not x8684) (not x8668))
+(or (not x8684) (not x8716))
+(or (not x8684) (not x8717))
+(or (not x8684) (not x8718))
+(or (not x8684) (not x8719))
+(or x8756 (not x8684))
+(or x8756 (not x8685))
+(or x8684 x8685 (not x8756))
+(or x8965 (not x8684))
+(or x8965 (not x8685))
+(or x8965 x8803)
+(or x8684 x8685 (not x8803) (not x8965))
+(or (not x8965) (not x8966) x8928)
+(or (not x8928) x8965)
+(or (not x8928) x8966)
+(or x9073 x8860)
+(or x9073 x8859)
+(or (not x8860) (not x8859) (not x9073))
+(or x9074 x8860)
+(or x9074 (not x8859))
+(or (not x8860) x8859 (not x9074))
+(or x9075 (not x8860))
+(or x9075 x8859)
+(or x8860 (not x8859) (not x9075))
+(or x8610 x159)
+(or x8610 (not x160))
+(or (not x159) x160 (not x8610))
+(or x9076 (not x8860))
+(or x9076 (not x8859))
+(or x9076 x159)
+(or x9076 (not x160))
+(or x8860 x8859 (not x159) x160 (not x9076))
+(or (not x9076) (not x9075) (not x9074) (not x9073) x9017)
+(or (not x9017) x9076)
+(or (not x9017) x9075)
+(or (not x9017) x9074)
+(or (not x9017) x9073)
+(or x8994 (not x8993))
+(or x8994 (not x8992))
+(or x8994 (not x8991))
+(or x8994 (not x8990))
+(or x8994 (not x160))
+(or x8994 x8586)
+(or x8994 x8585)
+(or x8994 (not x9017))
+(or x8994 (not x8928))
+(or x8993 x8992 x8991 x8990 x160 (not x8586) (not x8585) x9017 x8928 (not x8994))
+(or x9077 (not x8993))
+(or x9077 (not x8992))
+(or x9077 (not x8991))
+(or x9077 (not x8990))
+(or x9077 (not x160))
+(or x9077 x8586)
+(or x9077 x8585)
+(or x9077 (not x9017))
+(or x9077 (not x8928))
+(or x9077 x9028)
+(or x9077 x9023)
+(or x9077 (not x9071))
+(or x8993 x8992 x8991 x8990 x160 (not x8586) (not x8585) x9017 x8928 (not x9028) (not x9023) x9071 (not x9077))
+(or (not x9077) (not x9068) (not x8996) (not x8997) (not x9066) (not x8999) (not x9061) (not x9001) (not x9058) (not x9004) (not x9053) x9078)
+(or (not x9078) x9077)
+(or (not x9078) x9068)
+(or (not x9078) x8996)
+(or (not x9078) x8997)
+(or (not x9078) x9066)
+(or (not x9078) x8999)
+(or (not x9078) x9061)
+(or (not x9078) x9001)
+(or (not x9078) x9058)
+(or (not x9078) x9004)
+(or (not x9078) x9053)
+(or x9079 (not x9080))
+(or x9079 (not x8650))
+(or x9079 (not x9081))
+(or x9079 (not x8656))
+(or x9080 x8650 x9081 x8656 (not x9079))
+(or x9082 (not x9080))
+(or x9082 (not x8650))
+(or x9082 x8656)
+(or x9082 (not x8655))
+(or x9082 (not x8654))
+(or x9082 x8653)
+(or x9082 x8629)
+(or x9082 x9083)
+(or x9080 x8650 (not x8656) x8655 x8654 (not x8653) (not x8629) (not x9083) (not x9082))
+(or x9084 (not x8656))
+(or x9084 x8655)
+(or x9084 x8654)
+(or x9084 x8653)
+(or x9084 x8586)
+(or x9084 x8585)
+(or x9084 x9085)
+(or x9084 x9086)
+(or x8656 (not x8655) (not x8654) (not x8653) (not x8586) (not x8585) (not x9085) (not x9086) (not x9084))
+(or (not x9084) (not x9082) (not x9079) x9087)
+(or (not x9087) x9084)
+(or (not x9087) x9082)
+(or (not x9087) x9079)
+(or x9088 (not x9080))
+(or x9088 (not x8650))
+(or x9088 (not x9081))
+(or x9088 (not x8655))
+(or x9080 x8650 x9081 x8655 (not x9088))
+(or (not x9089) (not x9090) (not x9091) (not x9088) x9092)
+(or (not x9092) x9089)
+(or (not x9092) x9090)
+(or (not x9092) x9091)
+(or (not x9092) x9088)
+(or x9093 (not x9080))
+(or x9093 (not x8650))
+(or x9093 (not x9081))
+(or x9093 (not x8654))
+(or x9080 x8650 x9081 x8654 (not x9093))
+(or x8666 x8656)
+(or x8666 (not x8655))
+(or x8666 (not x8654))
+(or x8666 (not x8653))
+(or (not x8656) x8655 x8654 x8653 (not x8666))
+(or x9090 (not x9080))
+(or x9090 x8656)
+(or x9090 (not x8655))
+(or x9090 (not x8654))
+(or x9090 (not x8653))
+(or x9080 (not x8656) x8655 x8654 x8653 (not x9090))
+(or (not x9089) (not x9090) (not x9091) (not x9093) x9094)
+(or (not x9094) x9089)
+(or (not x9094) x9090)
+(or (not x9094) x9091)
+(or (not x9094) x9093)
+(or (not x8656) x8655 x8654 (not x8653) (not x8629) x9081)
+(or (not x9081) x8656)
+(or (not x9081) (not x8655))
+(or (not x9081) (not x8654))
+(or (not x9081) x8653)
+(or (not x9081) x8629)
+(or x9095 (not x9080))
+(or x9095 (not x8650))
+(or x9095 (not x9081))
+(or x9095 (not x8653))
+(or x9080 x8650 x9081 x8653 (not x9095))
+(or x8656 (not x8655) (not x8654) (not x8653) (not x8586) (not x8585) (not x9085) x9080)
+(or (not x9080) (not x8656))
+(or (not x9080) x8655)
+(or (not x9080) x8654)
+(or (not x9080) x8653)
+(or (not x9080) x8586)
+(or (not x9080) x8585)
+(or (not x9080) x9085)
+(or x9091 (not x9080))
+(or x9091 (not x8650))
+(or x9091 x8656)
+(or x9091 (not x8655))
+(or x9091 (not x8654))
+(or x9091 x8653)
+(or x9091 x8629)
+(or x9091 (not x9083))
+(or x9080 x8650 (not x8656) x8655 x8654 (not x8653) (not x8629) x9083 (not x9091))
+(or x9089 (not x8656))
+(or x9089 x8655)
+(or x9089 x8654)
+(or x9089 x8653)
+(or x9089 x8586)
+(or x9089 x8585)
+(or x9089 x9085)
+(or x9089 (not x9086))
+(or x8656 (not x8655) (not x8654) (not x8653) (not x8586) (not x8585) (not x9085) x9086 (not x9089))
+(or (not x9089) (not x9091) (not x9095) x9096)
+(or (not x9096) x9089)
+(or (not x9096) x9091)
+(or (not x9096) x9095)
+(or (not x9085) (not x9097) (not x8629) x9098)
+(or (not x9098) x9085)
+(or (not x9098) x9097)
+(or (not x9098) x8629)
+(or x9099 x9085)
+(or x9099 (not x9098))
+(or x9099 (not x9085))
+(or (not x9085) x9098 x9085 (not x9099))
+(or x9100 x9085)
+(or x9100 x9085)
+(or x9100 x9097)
+(or x9100 x8629)
+(or x9100 x9101)
+(or (not x9085) (not x9085) (not x9097) (not x8629) (not x9101) (not x9100))
+(or x9102 x9103)
+(or x9102 x9104)
+(or (not x9103) (not x9104) (not x9102))
+(or (not x9102) (not x9103) x9105)
+(or (not x9105) x9102)
+(or (not x9105) x9103)
+(or x9106 (not x9085))
+(or x9106 x9107)
+(or x9106 (not x9105))
+(or x9085 (not x9107) x9105 (not x9106))
+(or (not x9106) (not x9100) (not x9099) x9108)
+(or (not x9108) x9106)
+(or (not x9108) x9100)
+(or (not x9108) x9099)
+(or x8737 (not x8789))
+(or x8737 (not x8790))
+(or x8737 (not x8791))
+(or x8737 (not x8792))
+(or x8737 (not x8793))
+(or x8737 (not x8794))
+(or x8789 x8790 x8791 x8792 x8793 x8794 (not x8737))
+(or x8741 (not x8888))
+(or x8741 x8887)
+(or x8741 x8886)
+(or x8741 (not x8885))
+(or x8888 (not x8887) (not x8886) x8885 (not x8741))
+(or x8777 (not x8888))
+(or x8777 x8887)
+(or x8777 (not x8886))
+(or x8777 x8885)
+(or x8888 (not x8887) x8886 (not x8885) (not x8777))
+(or x8740 (not x8888))
+(or x8740 (not x8887))
+(or x8740 (not x8886))
+(or x8740 x8885)
+(or x8888 x8887 x8886 (not x8885) (not x8740))
+(or x9109 (not x8888))
+(or x9109 (not x8887))
+(or x9109 x8886)
+(or x9109 x8885)
+(or x8888 x8887 (not x8886) (not x8885) (not x9109))
+(or x8739 (not x8993))
+(or x8739 x8992)
+(or x8739 x8991)
+(or x8739 (not x8990))
+(or x8993 (not x8992) (not x8991) x8990 (not x8739))
+(or x8775 (not x8993))
+(or x8775 x8992)
+(or x8775 (not x8991))
+(or x8775 x8990)
+(or x8993 (not x8992) x8991 (not x8990) (not x8775))
+(or x8738 (not x8993))
+(or x8738 (not x8992))
+(or x8738 (not x8991))
+(or x8738 x8990)
+(or x8993 x8992 x8991 (not x8990) (not x8738))
+(or x9110 (not x8993))
+(or x9110 (not x8992))
+(or x9110 x8991)
+(or x9110 x8990)
+(or x8993 x8992 (not x8991) (not x8990) (not x9110))
+(or (not x9110) (not x8738) (not x8775) (not x8739) (not x9109) (not x8740) (not x8777) (not x8741) x9111)
+(or (not x9111) x9110)
+(or (not x9111) x8738)
+(or (not x9111) x8775)
+(or (not x9111) x8739)
+(or (not x9111) x9109)
+(or (not x9111) x8740)
+(or (not x9111) x8777)
+(or (not x9111) x8741)
+(or (not x9110) (not x8738) (not x8775) (not x8739) (not x9109) (not x8740) (not x8777) (not x8741) x8680 x8681 x8869)
+(or (not x8869) x9110)
+(or (not x8869) x8738)
+(or (not x8869) x8775)
+(or (not x8869) x8739)
+(or (not x8869) x9109)
+(or (not x8869) x8740)
+(or (not x8869) x8777)
+(or (not x8869) x8741)
+(or (not x8869) (not x8680))
+(or (not x8869) (not x8681))
+(or x8727 (not x8869))
+(or x8727 (not x8810))
+(or x8727 (not x8790))
+(or x8727 (not x8812))
+(or x8727 (not x8793))
+(or x8869 x8810 x8790 x8812 x8793 (not x8727))
+(or x9112 (not x8869))
+(or x9112 (not x8810))
+(or x9112 (not x8790))
+(or x9112 (not x8812))
+(or x9112 (not x8793))
+(or x9112 (not x8789))
+(or x9112 (not x8790))
+(or x9112 (not x8791))
+(or x9112 (not x8792))
+(or x9112 (not x8793))
+(or x9112 (not x8794))
+(or x9112 x8692)
+(or x8869 x8810 x8790 x8812 x8793 x8789 x8790 x8791 x8792 x8793 x8794 (not x8692) (not x9112))
+(or (not x9112) (not x8868) x9113)
+(or (not x9113) x9112)
+(or (not x9113) x8868)
+(or (not x9114) x8656)
+(or (not x9114) (not x8655))
+(or (not x9114) (not x8654))
+(or (not x9114) x8653)
+(or (not x8656) x8655 x8654 x8653 x8650)
+(or (not x8650) x8656)
+(or (not x8650) (not x8655))
+(or (not x8650) (not x8654))
+(or (not x8650) (not x8653))
+(or (not x9115) (not x8656))
+(or (not x9115) x8655)
+(or (not x9115) x8654)
+(or (not x9115) x8653)
+(or x9116 (not x9115))
+(or x9116 (not x8650))
+(or x9115 x8650 (not x9116))
+(or x8888 (not x8887) (not x8886) x8885 x8793)
+(or (not x8793) (not x8888))
+(or (not x8793) x8887)
+(or (not x8793) x8886)
+(or (not x8793) (not x8885))
+(or x8888 (not x8887) x8886 (not x8885) x8794)
+(or (not x8794) (not x8888))
+(or (not x8794) x8887)
+(or (not x8794) (not x8886))
+(or (not x8794) x8885)
+(or x8888 (not x8887) x8886 x8885 x8792)
+(or (not x8792) (not x8888))
+(or (not x8792) x8887)
+(or (not x8792) (not x8886))
+(or (not x8792) (not x8885))
+(or x8888 x8887 (not x8886) (not x8885) x8811)
+(or (not x8811) (not x8888))
+(or (not x8811) (not x8887))
+(or (not x8811) x8886)
+(or (not x8811) x8885)
+(or x8888 x8887 (not x8886) x8885 x8880)
+(or (not x8880) (not x8888))
+(or (not x8880) (not x8887))
+(or (not x8880) x8886)
+(or (not x8880) (not x8885))
+(or x8888 x8887 x8886 (not x8885) x8812)
+(or (not x8812) (not x8888))
+(or (not x8812) (not x8887))
+(or (not x8812) (not x8886))
+(or (not x8812) x8885)
+(or (not x9117) (not x8888))
+(or (not x9117) (not x8887))
+(or (not x9117) (not x8886))
+(or (not x9117) (not x8885))
+(or x9118 (not x9117))
+(or x9118 (not x8812))
+(or x9118 (not x8880))
+(or x9118 (not x8811))
+(or x9118 (not x8792))
+(or x9118 (not x8794))
+(or x9117 x8812 x8880 x8811 x8792 x8794 (not x9118))
+(or x8993 (not x8992) (not x8991) x8990 x8790)
+(or (not x8790) (not x8993))
+(or (not x8790) x8992)
+(or (not x8790) x8991)
+(or (not x8790) (not x8990))
+(or x8993 (not x8992) x8991 (not x8990) x8791)
+(or (not x8791) (not x8993))
+(or (not x8791) x8992)
+(or (not x8791) (not x8991))
+(or (not x8791) x8990)
+(or x8993 (not x8992) x8991 x8990 x8789)
+(or (not x8789) (not x8993))
+(or (not x8789) x8992)
+(or (not x8789) (not x8991))
+(or (not x8789) (not x8990))
+(or x8993 x8992 (not x8991) (not x8990) x8809)
+(or (not x8809) (not x8993))
+(or (not x8809) (not x8992))
+(or (not x8809) x8991)
+(or (not x8809) x8990)
+(or x8993 x8992 (not x8991) x8990 x8985)
+(or (not x8985) (not x8993))
+(or (not x8985) (not x8992))
+(or (not x8985) x8991)
+(or (not x8985) (not x8990))
+(or x8993 x8992 x8991 (not x8990) x8810)
+(or (not x8810) (not x8993))
+(or (not x8810) (not x8992))
+(or (not x8810) (not x8991))
+(or (not x8810) x8990)
+(or (not x9119) (not x8993))
+(or (not x9119) (not x8992))
+(or (not x9119) (not x8991))
+(or (not x9119) (not x8990))
+(or x9120 (not x9119))
+(or x9120 (not x8810))
+(or x9120 (not x8985))
+(or x9120 (not x8809))
+(or x9120 (not x8789))
+(or x9120 (not x8791))
+(or x9119 x8810 x8985 x8809 x8789 x8791 (not x9120))
+(or x9121 (not x9122))
+(or x9121 (not x9123))
+(or x9121 (not x9124))
+(or x9121 (not x9125))
+(or x9121 (not x9126))
+(or x9121 (not x9127))
+(or x9121 (not x167))
+(or x9121 x166)
+(or x9121 x165)
+(or x9121 x164)
+(or x9121 (not x9128))
+(or x9121 x9129)
+(or x9122 x9123 x9124 x9125 x9126 x9127 x167 (not x166) (not x165) (not x164) x9128 (not x9129) (not x9121))
+(or x9130 (not x9122))
+(or x9130 (not x9123))
+(or x9130 (not x9124))
+(or x9130 (not x9125))
+(or x9130 (not x9126))
+(or x9130 (not x167))
+(or x9130 x166)
+(or x9130 x165)
+(or x9130 (not x164))
+(or x9130 x168)
+(or x9130 (not x169))
+(or x9130 x9131)
+(or x9122 x9123 x9124 x9125 x9126 x167 (not x166) (not x165) x164 (not x168) x169 (not x9131) (not x9130))
+(or x9132 (not x167))
+(or x9132 (not x166))
+(or x9132 (not x165))
+(or x9132 x164)
+(or x9132 (not x9133))
+(or x167 x166 x165 (not x164) x9133 (not x9132))
+(or (not x9132) (not x9134) (not x9135) (not x9136) (not x9137) (not x9130) (not x9121) (not x9138) x9139)
+(or (not x9139) x9132)
+(or (not x9139) x9134)
+(or (not x9139) x9135)
+(or (not x9139) x9136)
+(or (not x9139) x9137)
+(or (not x9139) x9130)
+(or (not x9139) x9121)
+(or (not x9139) x9138)
+(or x9140 (not x9122))
+(or x9140 (not x9123))
+(or x9140 (not x167))
+(or x9140 (not x166))
+(or x9140 x165)
+(or x9140 x164)
+(or x9140 (not x9128))
+(or x9140 x9141)
+(or x9122 x9123 x167 x166 (not x165) (not x164) x9128 (not x9141) (not x9140))
+(or x9142 (not x9122))
+(or x9142 (not x167))
+(or x9142 (not x166))
+(or x9142 x165)
+(or x9142 (not x164))
+(or x9142 x9144)
+(or x9142 x9143)
+(or x9142 (not x9128))
+(or x9142 x9145)
+(or x9122 x167 x166 (not x165) x164 (not x9144) (not x9143) x9128 (not x9145) (not x9142))
+(or x9146 (not x9147) x9133)
+(or (not x9133) (not x9146))
+(or (not x9133) x9147)
+(or x9146 (not x9147) (not x9148) x9149)
+(or (not x9149) (not x9146))
+(or (not x9149) x9147)
+(or (not x9149) x9148)
+(or x9150 (not x167))
+(or x9150 (not x166))
+(or x9150 (not x165))
+(or x9150 x164)
+(or x9150 (not x9149))
+(or x167 x166 x165 (not x164) x9149 (not x9150))
+(or (not x9150) (not x9142) (not x9140) (not x9151) (not x9152) (not x9153) (not x9154) (not x9138) x9155)
+(or (not x9155) x9150)
+(or (not x9155) x9142)
+(or (not x9155) x9140)
+(or (not x9155) x9151)
+(or (not x9155) x9152)
+(or (not x9155) x9153)
+(or (not x9155) x9154)
+(or (not x9155) x9138)
+(or x9156 (not x9122))
+(or x9156 (not x9123))
+(or x9156 (not x9124))
+(or x9156 (not x9125))
+(or x9156 (not x167))
+(or x9156 x166)
+(or x9156 (not x165))
+(or x9156 x164)
+(or x9156 (not x9128))
+(or x9156 x9157)
+(or x9122 x9123 x9124 x9125 x167 (not x166) x165 (not x164) x9128 (not x9157) (not x9156))
+(or x9158 (not x9122))
+(or x9158 (not x9123))
+(or x9158 (not x9124))
+(or x9158 (not x167))
+(or x9158 x166)
+(or x9158 (not x165))
+(or x9158 (not x164))
+(or x9158 x168)
+(or x9158 (not x169))
+(or x9158 x9159)
+(or x9122 x9123 x9124 x167 (not x166) x165 x164 (not x168) x169 (not x9159) (not x9158))
+(or x9148 (not x9146))
+(or x9148 (not x9160))
+(or x9146 x9160 (not x9148))
+(or x9146 (not x9148) x9161)
+(or (not x9161) (not x9146))
+(or (not x9161) x9148)
+(or x9162 (not x167))
+(or x9162 (not x166))
+(or x9162 (not x165))
+(or x9162 x164)
+(or x9162 (not x9161))
+(or x167 x166 x165 (not x164) x9161 (not x9162))
+(or (not x9162) (not x9163) (not x9164) (not x9158) (not x9156) (not x9151) (not x9152) (not x9165) (not x9166) (not x9138) x9167)
+(or (not x9167) x9162)
+(or (not x9167) x9163)
+(or (not x9167) x9164)
+(or (not x9167) x9158)
+(or (not x9167) x9156)
+(or (not x9167) x9151)
+(or (not x9167) x9152)
+(or (not x9167) x9165)
+(or (not x9167) x9166)
+(or (not x9167) x9138)
+(or (not x167) (not x166) x165 x164 (not x9168) x9169)
+(or (not x9169) x167)
+(or (not x9169) x166)
+(or (not x9169) (not x165))
+(or (not x9169) (not x164))
+(or (not x9169) x9168)
+(or x9138 (not x9122))
+(or x9138 (not x9123))
+(or x9138 (not x9124))
+(or x9138 (not x9125))
+(or x9138 (not x9126))
+(or x9138 (not x9127))
+(or x9138 (not x9170))
+(or x9138 (not x9171))
+(or x9138 (not x9172))
+(or x9138 (not x9173))
+(or x9138 (not x9169))
+(or x9122 x9123 x9124 x9125 x9126 x9127 x9170 x9171 x9172 x9173 x9169 (not x9138))
+(or (not x167) x166 (not x165) (not x164) (not x168) x169 x9173)
+(or (not x9173) x167)
+(or (not x9173) (not x166))
+(or (not x9173) x165)
+(or (not x9173) x164)
+(or (not x9173) x168)
+(or (not x9173) (not x169))
+(or x9166 (not x9122))
+(or x9166 (not x9123))
+(or x9166 (not x9124))
+(or x9166 (not x9125))
+(or x9166 (not x9126))
+(or x9166 (not x9127))
+(or x9166 (not x9170))
+(or x9166 (not x9171))
+(or x9166 (not x9172))
+(or x9166 (not x9173))
+(or x9166 x167)
+(or x9166 x166)
+(or x9166 (not x165))
+(or x9166 (not x164))
+(or x9166 (not x9128))
+(or x9122 x9123 x9124 x9125 x9126 x9127 x9170 x9171 x9172 x9173 (not x167) (not x166) x165 x164 x9128 (not x9166))
+(or x9174 (not x9122))
+(or x9174 (not x9123))
+(or x9174 (not x9124))
+(or x9174 (not x9125))
+(or x9174 (not x9126))
+(or x9174 (not x9127))
+(or x9174 (not x9170))
+(or x9174 (not x9171))
+(or x9174 (not x9172))
+(or x9174 (not x9173))
+(or x9174 x167)
+(or x9174 x166)
+(or x9174 (not x165))
+(or x9174 (not x164))
+(or x9174 (not x9128))
+(or x9174 x9175)
+(or x9122 x9123 x9124 x9125 x9126 x9127 x9170 x9171 x9172 x9173 (not x167) (not x166) x165 x164 x9128 (not x9175) (not x9174))
+(or (not x167) x166 (not x165) x164 (not x9168) x9172)
+(or (not x9172) x167)
+(or (not x9172) (not x166))
+(or (not x9172) x165)
+(or (not x9172) (not x164))
+(or (not x9172) x9168)
+(or x9165 (not x9122))
+(or x9165 (not x9123))
+(or x9165 (not x9124))
+(or x9165 (not x9125))
+(or x9165 (not x9126))
+(or x9165 (not x9127))
+(or x9165 (not x9170))
+(or x9165 (not x9171))
+(or x9165 (not x9172))
+(or x9165 x167)
+(or x9165 (not x166))
+(or x9165 x165)
+(or x9165 x164)
+(or x9165 x168)
+(or x9165 (not x169))
+(or x9122 x9123 x9124 x9125 x9126 x9127 x9170 x9171 x9172 (not x167) x166 (not x165) (not x164) (not x168) x169 (not x9165))
+(or x9176 (not x9122))
+(or x9176 (not x9123))
+(or x9176 (not x9124))
+(or x9176 (not x9125))
+(or x9176 (not x9126))
+(or x9176 (not x9127))
+(or x9176 (not x9170))
+(or x9176 (not x9171))
+(or x9176 (not x9172))
+(or x9176 x167)
+(or x9176 (not x166))
+(or x9176 x165)
+(or x9176 x164)
+(or x9176 x168)
+(or x9176 (not x169))
+(or x9176 x9177)
+(or x9122 x9123 x9124 x9125 x9126 x9127 x9170 x9171 x9172 (not x167) x166 (not x165) (not x164) (not x168) x169 (not x9177) (not x9176))
+(or (not x167) x166 x165 (not x164) (not x9144) (not x9143) (not x168) x169 x9171)
+(or (not x9171) x167)
+(or (not x9171) (not x166))
+(or (not x9171) (not x165))
+(or (not x9171) x164)
+(or (not x9171) x9144)
+(or (not x9171) x9143)
+(or (not x9171) x168)
+(or (not x9171) (not x169))
+(or x9154 (not x9122))
+(or x9154 (not x9123))
+(or x9154 (not x9124))
+(or x9154 (not x9125))
+(or x9154 (not x9126))
+(or x9154 (not x9127))
+(or x9154 (not x9170))
+(or x9154 (not x9171))
+(or x9154 x167)
+(or x9154 (not x166))
+(or x9154 x165)
+(or x9154 (not x164))
+(or x9154 (not x9128))
+(or x9122 x9123 x9124 x9125 x9126 x9127 x9170 x9171 (not x167) x166 (not x165) x164 x9128 (not x9154))
+(or x9178 (not x9122))
+(or x9178 (not x9123))
+(or x9178 (not x9124))
+(or x9178 (not x9125))
+(or x9178 (not x9126))
+(or x9178 (not x9127))
+(or x9178 (not x9170))
+(or x9178 (not x9171))
+(or x9178 x167)
+(or x9178 (not x166))
+(or x9178 x165)
+(or x9178 (not x164))
+(or x9178 (not x9128))
+(or x9178 x9179)
+(or x9122 x9123 x9124 x9125 x9126 x9127 x9170 x9171 (not x167) x166 (not x165) x164 x9128 (not x9179) (not x9178))
+(or x167 (not x166) (not x165) (not x164) (not x9168) x9170)
+(or (not x9170) (not x167))
+(or (not x9170) x166)
+(or (not x9170) x165)
+(or (not x9170) x164)
+(or (not x9170) x9168)
+(or x9153 (not x9122))
+(or x9153 (not x9123))
+(or x9153 (not x9124))
+(or x9153 (not x9125))
+(or x9153 (not x9126))
+(or x9153 (not x9127))
+(or x9153 (not x9170))
+(or x9153 x167)
+(or x9153 (not x166))
+(or x9153 (not x165))
+(or x9153 x164)
+(or x9153 x9144)
+(or x9153 x9143)
+(or x9153 x168)
+(or x9153 (not x169))
+(or x9122 x9123 x9124 x9125 x9126 x9127 x9170 (not x167) x166 x165 (not x164) (not x9144) (not x9143) (not x168) x169 (not x9153))
+(or x9180 (not x9122))
+(or x9180 (not x9123))
+(or x9180 (not x9124))
+(or x9180 (not x9125))
+(or x9180 (not x9126))
+(or x9180 (not x9127))
+(or x9180 (not x9170))
+(or x9180 x167)
+(or x9180 (not x166))
+(or x9180 (not x165))
+(or x9180 x164)
+(or x9180 x9144)
+(or x9180 x9143)
+(or x9180 x168)
+(or x9180 (not x169))
+(or x9180 x9181)
+(or x9122 x9123 x9124 x9125 x9126 x9127 x9170 (not x167) x166 x165 (not x164) (not x9144) (not x9143) (not x168) x169 (not x9181) (not x9180))
+(or x167 (not x166) (not x165) x164 (not x168) x169 x9127)
+(or (not x9127) (not x167))
+(or (not x9127) x166)
+(or (not x9127) x165)
+(or (not x9127) (not x164))
+(or (not x9127) x168)
+(or (not x9127) (not x169))
+(or x9152 (not x9122))
+(or x9152 (not x9123))
+(or x9152 (not x9124))
+(or x9152 (not x9125))
+(or x9152 (not x9126))
+(or x9152 (not x9127))
+(or x9152 (not x167))
+(or x9152 x166)
+(or x9152 x165)
+(or x9152 x164)
+(or x9152 (not x9128))
+(or x9152 (not x9129))
+(or x9122 x9123 x9124 x9125 x9126 x9127 x167 (not x166) (not x165) (not x164) x9128 x9129 (not x9152))
+(or x167 (not x166) x165 (not x164) (not x9168) x9126)
+(or (not x9126) (not x167))
+(or (not x9126) x166)
+(or (not x9126) (not x165))
+(or (not x9126) x164)
+(or (not x9126) x9168)
+(or x9151 (not x9122))
+(or x9151 (not x9123))
+(or x9151 (not x9124))
+(or x9151 (not x9125))
+(or x9151 (not x9126))
+(or x9151 (not x167))
+(or x9151 x166)
+(or x9151 x165)
+(or x9151 (not x164))
+(or x9151 x168)
+(or x9151 (not x169))
+(or x9151 (not x9131))
+(or x9122 x9123 x9124 x9125 x9126 x167 (not x166) (not x165) x164 (not x168) x169 x9131 (not x9151))
+(or x167 (not x166) x165 x164 (not x168) x169 x9125)
+(or (not x9125) (not x167))
+(or (not x9125) x166)
+(or (not x9125) (not x165))
+(or (not x9125) (not x164))
+(or (not x9125) x168)
+(or (not x9125) (not x169))
+(or x9137 (not x9122))
+(or x9137 (not x9123))
+(or x9137 (not x9124))
+(or x9137 (not x9125))
+(or x9137 (not x167))
+(or x9137 x166)
+(or x9137 (not x165))
+(or x9137 x164)
+(or x9137 (not x9128))
+(or x9122 x9123 x9124 x9125 x167 (not x166) x165 (not x164) x9128 (not x9137))
+(or x9182 (not x9122))
+(or x9182 (not x9123))
+(or x9182 (not x9124))
+(or x9182 (not x9125))
+(or x9182 (not x167))
+(or x9182 x166)
+(or x9182 (not x165))
+(or x9182 x164)
+(or x9182 (not x9128))
+(or x9182 (not x9157))
+(or x9122 x9123 x9124 x9125 x167 (not x166) x165 (not x164) x9128 x9157 (not x9182))
+(or x167 x166 (not x165) (not x164) (not x9168) x9124)
+(or (not x9124) (not x167))
+(or (not x9124) (not x166))
+(or (not x9124) x165)
+(or (not x9124) x164)
+(or (not x9124) x9168)
+(or x9136 (not x9122))
+(or x9136 (not x9123))
+(or x9136 (not x9124))
+(or x9136 (not x167))
+(or x9136 x166)
+(or x9136 (not x165))
+(or x9136 (not x164))
+(or x9136 x168)
+(or x9136 (not x169))
+(or x9122 x9123 x9124 x167 (not x166) x165 x164 (not x168) x169 (not x9136))
+(or x9183 (not x9122))
+(or x9183 (not x9123))
+(or x9183 (not x9124))
+(or x9183 (not x167))
+(or x9183 x166)
+(or x9183 (not x165))
+(or x9183 (not x164))
+(or x9183 x168)
+(or x9183 (not x169))
+(or x9183 (not x9159))
+(or x9122 x9123 x9124 x167 (not x166) x165 x164 (not x168) x169 x9159 (not x9183))
+(or x167 x166 (not x165) x164 (not x9144) (not x9143) (not x9168) x9123)
+(or (not x9123) (not x167))
+(or (not x9123) (not x166))
+(or (not x9123) x165)
+(or (not x9123) (not x164))
+(or (not x9123) x9144)
+(or (not x9123) x9143)
+(or (not x9123) x9168)
+(or x9135 (not x9122))
+(or x9135 (not x9123))
+(or x9135 (not x167))
+(or x9135 (not x166))
+(or x9135 x165)
+(or x9135 x164)
+(or x9135 (not x9128))
+(or x9122 x9123 x167 x166 (not x165) (not x164) x9128 (not x9135))
+(or x9164 (not x9122))
+(or x9164 (not x9123))
+(or x9164 (not x167))
+(or x9164 (not x166))
+(or x9164 x165)
+(or x9164 x164)
+(or x9164 (not x9128))
+(or x9164 (not x9141))
+(or x9122 x9123 x167 x166 (not x165) (not x164) x9128 x9141 (not x9164))
+(or x167 x166 x165 (not x164) x9122)
+(or (not x9122) (not x167))
+(or (not x9122) (not x166))
+(or (not x9122) (not x165))
+(or (not x9122) x164)
+(or x9134 (not x9122))
+(or x9134 (not x167))
+(or x9134 (not x166))
+(or x9134 x165)
+(or x9134 (not x164))
+(or x9134 x9144)
+(or x9134 x9143)
+(or x9134 (not x9128))
+(or x9122 x167 x166 (not x165) x164 (not x9144) (not x9143) x9128 (not x9134))
+(or x9163 (not x9122))
+(or x9163 (not x167))
+(or x9163 (not x166))
+(or x9163 x165)
+(or x9163 (not x164))
+(or x9163 x9144)
+(or x9163 x9143)
+(or x9163 (not x9128))
+(or x9163 (not x9145))
+(or x9122 x167 x166 (not x165) x164 (not x9144) (not x9143) x9128 x9145 (not x9163))
+(or x9147 (not x9146))
+(or x9147 x9160)
+(or x9146 (not x9160) (not x9147))
+(or x9184 (not x167))
+(or x9184 (not x166))
+(or x9184 (not x165))
+(or x9184 x164)
+(or x9184 (not x9146))
+(or x9184 x9160)
+(or x167 x166 x165 (not x164) x9146 (not x9160) (not x9184))
+(or (not x9184) (not x9163) (not x9164) (not x9183) (not x9182) (not x9151) (not x9152) (not x9180) (not x9178) (not x9176) (not x9174) (not x9138) x9185)
+(or (not x9185) x9184)
+(or (not x9185) x9163)
+(or (not x9185) x9164)
+(or (not x9185) x9183)
+(or (not x9185) x9182)
+(or (not x9185) x9151)
+(or (not x9185) x9152)
+(or (not x9185) x9180)
+(or (not x9185) x9178)
+(or (not x9185) x9176)
+(or (not x9185) x9174)
+(or (not x9185) x9138)
+(or x9186 x9187 (not x9188) x9189)
+(or (not x9189) (not x9186))
+(or (not x9189) (not x9187))
+(or (not x9189) x9188)
+(or (not x9186) x9187 (not x9190) x9191)
+(or (not x9191) x9186)
+(or (not x9191) (not x9187))
+(or (not x9191) x9190)
+(or x9192 (not x9191))
+(or x9192 (not x9189))
+(or x9191 x9189 (not x9192))
+(or (not x9193) (not x9194) x9195 x9196 (not x9197) x9198)
+(or (not x9198) x9193)
+(or (not x9198) x9194)
+(or (not x9198) (not x9195))
+(or (not x9198) (not x9196))
+(or (not x9198) x9197)
+(or x9188 (not x9187))
+(or x9188 (not x9198))
+(or x9187 x9198 (not x9188))
+(or (not x9187) (not x9188) x9199)
+(or (not x9199) x9187)
+(or (not x9199) x9188)
+(or x9187 (not x9186) x9200)
+(or (not x9200) (not x9187))
+(or (not x9200) x9186)
+(or x9190 (not x9201))
+(or x9190 x9194)
+(or x9190 (not x9195))
+(or x9190 (not x9196))
+(or x9190 x9197)
+(or x9201 (not x9194) x9195 x9196 (not x9197) (not x9190))
+(or x9187 (not x9190) x9202)
+(or (not x9202) (not x9187))
+(or (not x9202) x9190)
+(or x9203 (not x9202))
+(or x9203 (not x9200))
+(or x9202 x9200 (not x9203))
+(or (not x9204) (not x9203) x9205)
+(or (not x9205) x9204)
+(or (not x9205) x9203)
+(or x9206 (not x9205))
+(or x9206 (not x9199))
+(or x9205 x9199 (not x9206))
+(or x9207 (not x9187))
+(or x9207 (not x9208))
+(or x9207 (not x9209))
+(or x9187 x9208 x9209 (not x9207))
+(or x9210 (not x9187))
+(or x9210 x9214)
+(or x9210 (not x9213))
+(or x9210 (not x9212))
+(or x9210 (not x9211))
+(or x9187 (not x9214) x9213 x9212 x9211 (not x9210))
+(or x9215 x9216)
+(or x9215 x9217)
+(or (not x9216) (not x9217) (not x9215))
+(or (not x9215) (not x9216) x9218)
+(or (not x9218) x9215)
+(or (not x9218) x9216)
+(or x9219 x9187)
+(or x9219 x9220)
+(or x9219 (not x9218))
+(or (not x9187) (not x9220) x9218 (not x9219))
+(or (not x9219) (not x9210) (not x9207) x9221)
+(or (not x9221) x9219)
+(or (not x9221) x9210)
+(or (not x9221) x9207)
+(or (not x9214) x9213 x9212 x9211 (not x9222) x9223)
+(or (not x9223) x9214)
+(or (not x9223) (not x9213))
+(or (not x9223) (not x9212))
+(or (not x9223) (not x9211))
+(or (not x9223) x9222)
+(or (not x9224) (not x9225) x9226 (not x9227) (not x9228) (not x9229) (not x9230) (not x9231) (not x9232) (not x9233) (not x9234) (not x9235) x9236)
+(or (not x9236) x9224)
+(or (not x9236) x9225)
+(or (not x9236) (not x9226))
+(or (not x9236) x9227)
+(or (not x9236) x9228)
+(or (not x9236) x9229)
+(or (not x9236) x9230)
+(or (not x9236) x9231)
+(or (not x9236) x9232)
+(or (not x9236) x9233)
+(or (not x9236) x9234)
+(or (not x9236) x9235)
+(or x9237 (not x9236))
+(or x9237 (not x9223))
+(or x9236 x9223 (not x9237))
+(or x9238 x9239 x9240)
+(or (not x9240) (not x9238))
+(or (not x9240) (not x9239))
+(or x9241 x9144)
+(or x9241 x9143)
+(or x9241 (not x9242))
+(or x9241 (not x9243))
+(or x9241 (not x9240))
+(or (not x9144) (not x9143) x9242 x9243 x9240 (not x9241))
+(or (not x9244) (not x9241) x9245)
+(or (not x9245) x9244)
+(or (not x9245) x9241)
+(or x9246 (not x9238))
+(or x9246 (not x9247))
+(or x9238 x9247 (not x9246))
+(or (not x9239) (not x9246) x9248)
+(or (not x9248) x9239)
+(or (not x9248) x9246)
+(or x9249 (not x9248))
+(or x9249 (not x9245))
+(or x9248 x9245 (not x9249))
+(or x9250 (not x9144) (not x9143) (not x9251) (not x9252) x9247)
+(or (not x9247) (not x9250))
+(or (not x9247) x9144)
+(or (not x9247) x9143)
+(or (not x9247) x9251)
+(or (not x9247) x9252)
+(or (not x9238) x9250 (not x9144) (not x9143) (not x9251) (not x9252) x9253)
+(or (not x9253) x9238)
+(or (not x9253) (not x9250))
+(or (not x9253) x9144)
+(or (not x9253) x9143)
+(or (not x9253) x9251)
+(or (not x9253) x9252)
+(or x9254 x9144)
+(or x9254 x9143)
+(or x9254 (not x9242))
+(or x9254 (not x9243))
+(or x9254 x9238)
+(or (not x9144) (not x9143) x9242 x9243 (not x9238) (not x9254))
+(or x9244 (not x9250))
+(or x9244 x9144)
+(or x9244 x9143)
+(or x9244 (not x9242))
+(or x9244 (not x9243))
+(or x9250 (not x9144) (not x9143) x9242 x9243 (not x9244))
+(or (not x9244) (not x9254) x9255)
+(or (not x9255) x9244)
+(or (not x9255) x9254)
+(or x9256 (not x9255))
+(or x9256 (not x9253))
+(or x9255 x9253 (not x9256))
+(or x9194 (not x9197) x9257)
+(or (not x9257) (not x9194))
+(or (not x9257) x9197)
+(or x9258 (not x9259))
+(or x9258 x9225)
+(or x9258 x9260)
+(or x9258 (not x9257))
+(or x9259 (not x9225) (not x9260) x9257 (not x9258))
+(or (not x9261) (not x9224) (not x9258) x9262)
+(or (not x9262) x9261)
+(or (not x9262) x9224)
+(or (not x9262) x9258)
+(or x9263 (not x9194))
+(or x9263 x9197)
+(or x9194 (not x9197) (not x9263))
+(or (not x9264) (not x9225) (not x9260) (not x9263) x9265)
+(or (not x9265) x9264)
+(or (not x9265) x9225)
+(or (not x9265) x9260)
+(or (not x9265) x9263)
+(or x9266 (not x9208))
+(or x9266 (not x9265))
+(or x9208 x9265 (not x9266))
+(or (not x9266) (not x9224) x9267)
+(or (not x9267) x9266)
+(or (not x9267) x9224)
+(or x9268 (not x9267))
+(or x9268 (not x9262))
+(or x9267 x9262 (not x9268))
+(or x9269 (not x9270))
+(or x9269 x9250)
+(or x9270 (not x9250) (not x9269))
+(or (not x9194) (not x9144) (not x9143) (not x9271) (not x9196) (not x9272) (not x9273) x9250 x9274 x9275 x9276 x9277 x9278 (not x9194) x9279 x9226 x9280 x9281 x9187 x9282 x9283)
+(or (not x9283) x9194)
+(or (not x9283) x9144)
+(or (not x9283) x9143)
+(or (not x9283) x9271)
+(or (not x9283) x9196)
+(or (not x9283) x9272)
+(or (not x9283) x9273)
+(or (not x9283) (not x9250))
+(or (not x9283) (not x9274))
+(or (not x9283) (not x9275))
+(or (not x9283) (not x9276))
+(or (not x9283) (not x9277))
+(or (not x9283) (not x9278))
+(or (not x9283) x9194)
+(or (not x9283) (not x9279))
+(or (not x9283) (not x9226))
+(or (not x9283) (not x9280))
+(or (not x9283) (not x9281))
+(or (not x9283) (not x9187))
+(or (not x9283) (not x9282))
+(or (not x9284) (not x9285) (not x9144) (not x9143) (not x9250) x9194 x9274 x9275 x9276 x9277 x9279 x9226 x9280 x9281 x9187 x9282 x9286)
+(or (not x9286) x9284)
+(or (not x9286) x9285)
+(or (not x9286) x9144)
+(or (not x9286) x9143)
+(or (not x9286) x9250)
+(or (not x9286) (not x9194))
+(or (not x9286) (not x9274))
+(or (not x9286) (not x9275))
+(or (not x9286) (not x9276))
+(or (not x9286) (not x9277))
+(or (not x9286) (not x9279))
+(or (not x9286) (not x9226))
+(or (not x9286) (not x9280))
+(or (not x9286) (not x9281))
+(or (not x9286) (not x9187))
+(or (not x9286) (not x9282))
+(or x9287 (not x9286))
+(or x9287 (not x9283))
+(or x9286 x9283 (not x9287))
+(or x9274 x9276 x9277 (not x9275) x9279 x9226 x9280 x9281 x9187 x9282 x9250 x9194 x9288)
+(or (not x9288) (not x9274))
+(or (not x9288) (not x9276))
+(or (not x9288) (not x9277))
+(or (not x9288) x9275)
+(or (not x9288) (not x9279))
+(or (not x9288) (not x9226))
+(or (not x9288) (not x9280))
+(or (not x9288) (not x9281))
+(or (not x9288) (not x9187))
+(or (not x9288) (not x9282))
+(or (not x9288) (not x9250))
+(or (not x9288) (not x9194))
+(or (not x9214) x9213 x9212 x9211 (not x9187) x9282 x9279 x9194 x9250 x9280 x9281 (not x9289) (not x9290) x9226 x9274 x9275 x9276 x9277 x9291)
+(or (not x9291) x9214)
+(or (not x9291) (not x9213))
+(or (not x9291) (not x9212))
+(or (not x9291) (not x9211))
+(or (not x9291) x9187)
+(or (not x9291) (not x9282))
+(or (not x9291) (not x9279))
+(or (not x9291) (not x9194))
+(or (not x9291) (not x9250))
+(or (not x9291) (not x9280))
+(or (not x9291) (not x9281))
+(or (not x9291) x9289)
+(or (not x9291) x9290)
+(or (not x9291) (not x9226))
+(or (not x9291) (not x9274))
+(or (not x9291) (not x9275))
+(or (not x9291) (not x9276))
+(or (not x9291) (not x9277))
+(or x9292 (not x9291))
+(or x9292 (not x9288))
+(or x9291 x9288 (not x9292))
+(or (not x9144) (not x9143) (not x9293) (not x9292) x9294)
+(or (not x9294) x9144)
+(or (not x9294) x9143)
+(or (not x9294) x9293)
+(or (not x9294) x9292)
+(or (not x9144) (not x9143) (not x9250) x9194 x9274 x9275 x9276 x9277 x9279 x9226 x9280 x9281 x9187 x9282 (not x9295) (not x9296) (not x9297) (not x9298) (not x9299) (not x9260) x9300)
+(or (not x9300) x9144)
+(or (not x9300) x9143)
+(or (not x9300) x9250)
+(or (not x9300) (not x9194))
+(or (not x9300) (not x9274))
+(or (not x9300) (not x9275))
+(or (not x9300) (not x9276))
+(or (not x9300) (not x9277))
+(or (not x9300) (not x9279))
+(or (not x9300) (not x9226))
+(or (not x9300) (not x9280))
+(or (not x9300) (not x9281))
+(or (not x9300) (not x9187))
+(or (not x9300) (not x9282))
+(or (not x9300) x9295)
+(or (not x9300) x9296)
+(or (not x9300) x9297)
+(or (not x9300) x9298)
+(or (not x9300) x9299)
+(or (not x9300) x9260)
+(or (not x9293) x9275 x9276 x9277 x9279 x9226 x9280 x9281 x9187 x9282 x9250 x9194 x9301)
+(or (not x9301) x9293)
+(or (not x9301) (not x9275))
+(or (not x9301) (not x9276))
+(or (not x9301) (not x9277))
+(or (not x9301) (not x9279))
+(or (not x9301) (not x9226))
+(or (not x9301) (not x9280))
+(or (not x9301) (not x9281))
+(or (not x9301) (not x9187))
+(or (not x9301) (not x9282))
+(or (not x9301) (not x9250))
+(or (not x9301) (not x9194))
+(or x9302 (not x9303))
+(or x9302 (not x9301))
+(or x9303 x9301 (not x9302))
+(or (not x9144) (not x9143) (not x9274) (not x9302) x9304)
+(or (not x9304) x9144)
+(or (not x9304) x9143)
+(or (not x9304) x9274)
+(or (not x9304) x9302)
+(or x9279 x9280 (not x9281) (not x9144) (not x9143) x9187 x9282 x9250 x9194 x9226 x9274 x9275 x9276 x9277 x9305)
+(or (not x9305) (not x9279))
+(or (not x9305) (not x9280))
+(or (not x9305) x9281)
+(or (not x9305) x9144)
+(or (not x9305) x9143)
+(or (not x9305) (not x9187))
+(or (not x9305) (not x9282))
+(or (not x9305) (not x9250))
+(or (not x9305) (not x9194))
+(or (not x9305) (not x9226))
+(or (not x9305) (not x9274))
+(or (not x9305) (not x9275))
+(or (not x9305) (not x9276))
+(or (not x9305) (not x9277))
+(or x9306 (not x9305))
+(or x9306 (not x9304))
+(or x9305 x9304 (not x9306))
+(or x9307 x9275)
+(or x9307 x9282)
+(or (not x9275) (not x9282) (not x9307))
+(or x9308 (not x9275))
+(or x9308 (not x9293))
+(or x9308 (not x9187))
+(or x9275 x9293 x9187 (not x9308))
+(or x9282 x9275 (not x9309) x9310)
+(or (not x9310) (not x9282))
+(or (not x9310) (not x9275))
+(or (not x9310) x9309)
+(or x9311 x9187)
+(or x9311 (not x9310))
+(or (not x9187) x9310 (not x9311))
+(or x9312 x9293)
+(or x9312 (not x9187))
+(or x9312 (not x9282))
+(or (not x9293) x9187 x9282 (not x9312))
+(or (not x9144) (not x9143) x9226 x9274 x9279 x9194 x9250 x9280 x9281 x9276 x9277 (not x9312) (not x9311) (not x9308) (not x9307) x9313)
+(or (not x9313) x9144)
+(or (not x9313) x9143)
+(or (not x9313) (not x9226))
+(or (not x9313) (not x9274))
+(or (not x9313) (not x9279))
+(or (not x9313) (not x9194))
+(or (not x9313) (not x9250))
+(or (not x9313) (not x9280))
+(or (not x9313) (not x9281))
+(or (not x9313) (not x9276))
+(or (not x9313) (not x9277))
+(or (not x9313) x9312)
+(or (not x9313) x9311)
+(or (not x9313) x9308)
+(or (not x9313) x9307)
+(or (not x9144) (not x9143) (not x9314) x9315)
+(or (not x9315) x9144)
+(or (not x9315) x9143)
+(or (not x9315) x9314)
+(or x9235 (not x9316))
+(or x9235 (not x9317))
+(or x9316 x9317 (not x9235))
+(or x9318 (not x9319))
+(or x9318 x9276)
+(or x9319 (not x9276) (not x9318))
+(or x9320 (not x9187))
+(or x9320 (not x9276))
+(or x9320 (not x9274))
+(or x9320 (not x9275))
+(or x9187 x9276 x9274 x9275 (not x9320))
+(or x9321 x9275)
+(or x9321 x9274)
+(or (not x9275) (not x9274) (not x9321))
+(or x9277 (not x9321) (not x9320) (not x9318) x9322)
+(or (not x9322) (not x9277))
+(or (not x9322) x9321)
+(or (not x9322) x9320)
+(or (not x9322) x9318)
+(or x9234 (not x9282))
+(or x9234 (not x9279))
+(or x9234 (not x9194))
+(or x9234 (not x9250))
+(or x9234 (not x9280))
+(or x9234 (not x9281))
+(or x9234 (not x9322))
+(or x9282 x9279 x9194 x9250 x9280 x9281 x9322 (not x9234))
+(or x9233 x9281)
+(or x9233 x9280)
+(or (not x9281) (not x9280) (not x9233))
+(or x9232 (not x9323))
+(or x9232 x9282)
+(or x9323 (not x9282) (not x9232))
+(or x9231 x9194)
+(or x9231 (not x9324))
+(or (not x9194) x9324 (not x9231))
+(or (not x9214) x9213 x9212 x9211 x9293 x9325)
+(or (not x9325) x9214)
+(or (not x9325) (not x9213))
+(or (not x9325) (not x9212))
+(or (not x9325) (not x9211))
+(or (not x9325) (not x9293))
+(or (not x9214) x9213 x9212 x9211 (not x9293) (not x9209) x9326)
+(or (not x9326) x9214)
+(or (not x9326) (not x9213))
+(or (not x9326) (not x9212))
+(or (not x9326) (not x9211))
+(or (not x9326) x9293)
+(or (not x9326) x9209)
+(or x9309 (not x9326))
+(or x9309 (not x9325))
+(or x9326 x9325 (not x9309))
+(or (not x9214) x9213 x9212 x9211 (not x9293) x9327)
+(or (not x9327) x9214)
+(or (not x9327) (not x9213))
+(or (not x9327) (not x9212))
+(or (not x9327) (not x9211))
+(or (not x9327) x9293)
+(or x9328 (not x9327))
+(or x9328 (not x9326))
+(or x9328 (not x9325))
+(or x9327 x9326 x9325 (not x9328))
+(or x9276 x9274 x9275 x9282 x9279 x9194 x9250 x9280 x9281 (not x9328) x9329)
+(or (not x9329) (not x9276))
+(or (not x9329) (not x9274))
+(or (not x9329) (not x9275))
+(or (not x9329) (not x9282))
+(or (not x9329) (not x9279))
+(or (not x9329) (not x9194))
+(or (not x9329) (not x9250))
+(or (not x9329) (not x9280))
+(or (not x9329) (not x9281))
+(or (not x9329) x9328)
+(or x9230 x9187)
+(or x9230 (not x9329))
+(or (not x9187) x9329 (not x9230))
+(or x9229 (not x9330))
+(or x9229 x9250)
+(or x9330 (not x9250) (not x9229))
+(or x9228 (not x9331))
+(or x9228 x9279)
+(or x9331 (not x9279) (not x9228))
+(or x9227 x9278)
+(or x9227 x9194)
+(or (not x9278) (not x9194) (not x9227))
+(or (not x9260) (not x9144) (not x9143) x9226 (not x9227) (not x9228) (not x9229) (not x9230) (not x9231) (not x9232) (not x9233) (not x9234) (not x9235) (not x9332) (not x9297) (not x9333) (not x9334) (not x9299) (not x9335) (not x9224) x9336)
+(or (not x9336) x9260)
+(or (not x9336) x9144)
+(or (not x9336) x9143)
+(or (not x9336) (not x9226))
+(or (not x9336) x9227)
+(or (not x9336) x9228)
+(or (not x9336) x9229)
+(or (not x9336) x9230)
+(or (not x9336) x9231)
+(or (not x9336) x9232)
+(or (not x9336) x9233)
+(or (not x9336) x9234)
+(or (not x9336) x9235)
+(or (not x9336) x9332)
+(or (not x9336) x9297)
+(or (not x9336) x9333)
+(or (not x9336) x9334)
+(or (not x9336) x9299)
+(or (not x9336) x9335)
+(or (not x9336) x9224)
+(or x9337 x9144)
+(or x9337 x9143)
+(or x9337 (not x9226))
+(or x9337 (not x9338))
+(or x9337 (not x9339))
+(or x9337 (not x9340))
+(or x9337 (not x9341))
+(or x9337 (not x9342))
+(or x9337 (not x9343))
+(or x9337 (not x9344))
+(or x9337 (not x9345))
+(or x9337 (not x9346))
+(or x9337 (not x9347))
+(or x9337 (not x9348))
+(or x9337 (not x9349))
+(or x9337 (not x9350))
+(or x9337 (not x9351))
+(or x9337 (not x9352))
+(or x9337 (not x9208))
+(or (not x9144) (not x9143) x9226 x9338 x9339 x9340 x9341 x9342 x9343 x9344 x9345 x9346 x9347 x9348 x9349 x9350 x9351 x9352 x9208 (not x9337))
+(or x9353 x9144)
+(or x9353 x9143)
+(or x9353 (not x9226))
+(or x9353 (not x9338))
+(or x9353 (not x9339))
+(or x9353 (not x9340))
+(or x9353 (not x9341))
+(or x9353 (not x9342))
+(or x9353 (not x9343))
+(or x9353 (not x9344))
+(or x9353 (not x9345))
+(or x9353 (not x9346))
+(or x9353 (not x9347))
+(or x9353 (not x9348))
+(or x9353 (not x9349))
+(or x9353 (not x9350))
+(or x9353 (not x9351))
+(or x9353 (not x9352))
+(or x9353 x9222)
+(or (not x9144) (not x9143) x9226 x9338 x9339 x9340 x9341 x9342 x9343 x9344 x9345 x9346 x9347 x9348 x9349 x9350 x9351 x9352 (not x9222) (not x9353))
+(or (not x9353) (not x9337) x9354)
+(or (not x9354) x9353)
+(or (not x9354) x9337)
+(or x9355 (not x9354))
+(or x9355 (not x9336))
+(or x9354 x9336 (not x9355))
+(or (not x9224) (not x9356) x9357)
+(or (not x9357) x9224)
+(or (not x9357) x9356)
+(or (not x9214) x9213 x9212 x9211 (not x9358) x9359)
+(or (not x9359) x9214)
+(or (not x9359) (not x9213))
+(or (not x9359) (not x9212))
+(or (not x9359) (not x9211))
+(or (not x9359) x9358)
+(or x9360 (not x9359))
+(or x9360 (not x9357))
+(or x9359 x9357 (not x9360))
+(or (not x9224) (not x9361) x9362)
+(or (not x9362) x9224)
+(or (not x9362) x9361)
+(or x9363 (not x9208))
+(or x9363 (not x9362))
+(or x9208 x9362 (not x9363))
+(or x9280 x9281 (not x9279) (not x9144) (not x9143) x9187 x9282 x9250 x9194 x9226 x9274 x9275 x9276 x9277 x9364)
+(or (not x9364) (not x9280))
+(or (not x9364) (not x9281))
+(or (not x9364) x9279)
+(or (not x9364) x9144)
+(or (not x9364) x9143)
+(or (not x9364) (not x9187))
+(or (not x9364) (not x9282))
+(or (not x9364) (not x9250))
+(or (not x9364) (not x9194))
+(or (not x9364) (not x9226))
+(or (not x9364) (not x9274))
+(or (not x9364) (not x9275))
+(or (not x9364) (not x9276))
+(or (not x9364) (not x9277))
+(or (not x9296) (not x9297) (not x9298) (not x9299) x9365)
+(or (not x9365) x9296)
+(or (not x9365) x9297)
+(or (not x9365) x9298)
+(or (not x9365) x9299)
+(or x9366 (not x9367))
+(or x9366 (not x9368))
+(or x9366 (not x9349))
+(or x9366 (not x9348))
+(or x9366 (not x9369))
+(or x9366 (not x9370))
+(or x9366 (not x9352))
+(or x9366 (not x9351))
+(or x9366 (not x9238))
+(or x9366 (not x9239))
+(or x9367 x9368 x9349 x9348 x9369 x9370 x9352 x9351 x9238 x9239 (not x9366))
+(or (not x9332) (not x9297) (not x9333) (not x9334) (not x9299) (not x9335) x9270)
+(or (not x9270) x9332)
+(or (not x9270) x9297)
+(or (not x9270) x9333)
+(or (not x9270) x9334)
+(or (not x9270) x9299)
+(or (not x9270) x9335)
+(or x9284 (not x9270))
+(or x9284 (not x9368))
+(or x9284 (not x9348))
+(or x9284 (not x9370))
+(or x9284 (not x9351))
+(or x9284 x9260)
+(or x9270 x9368 x9348 x9370 x9351 (not x9260) (not x9284))
+(or (not x9284) (not x9366) (not x9296) (not x9297) (not x9298) (not x9299) x9194 x9274 x9275 x9276 x9277 x9279 x9226 x9280 x9281 x9187 x9282 x9371)
+(or (not x9371) x9284)
+(or (not x9371) x9366)
+(or (not x9371) x9296)
+(or (not x9371) x9297)
+(or (not x9371) x9298)
+(or (not x9371) x9299)
+(or (not x9371) (not x9194))
+(or (not x9371) (not x9274))
+(or (not x9371) (not x9275))
+(or (not x9371) (not x9276))
+(or (not x9371) (not x9277))
+(or (not x9371) (not x9279))
+(or (not x9371) (not x9226))
+(or (not x9371) (not x9280))
+(or (not x9371) (not x9281))
+(or (not x9371) (not x9187))
+(or (not x9371) (not x9282))
+(or x9271 (not x9197))
+(or x9271 (not x9195))
+(or x9271 (not x9196))
+(or x9271 x9225)
+(or x9271 x9261)
+(or x9197 x9195 x9196 (not x9225) (not x9261) (not x9271))
+(or (not x9271) (not x9196) (not x9272) (not x9273) x9250 x9274 x9275 x9276 x9277 x9278 (not x9194) x9279 x9226 x9280 x9281 x9187 x9282 x9303)
+(or (not x9303) x9271)
+(or (not x9303) x9196)
+(or (not x9303) x9272)
+(or (not x9303) x9273)
+(or (not x9303) (not x9250))
+(or (not x9303) (not x9274))
+(or (not x9303) (not x9275))
+(or (not x9303) (not x9276))
+(or (not x9303) (not x9277))
+(or (not x9303) (not x9278))
+(or (not x9303) x9194)
+(or (not x9303) (not x9279))
+(or (not x9303) (not x9226))
+(or (not x9303) (not x9280))
+(or (not x9303) (not x9281))
+(or (not x9303) (not x9187))
+(or (not x9303) (not x9282))
+(or x9372 (not x9303))
+(or x9372 (not x9371))
+(or x9303 x9371 (not x9372))
+(or (not x9144) (not x9143) (not x9250) (not x9372) x9373)
+(or (not x9373) x9144)
+(or (not x9373) x9143)
+(or (not x9373) x9250)
+(or (not x9373) x9372)
+(or x9374 (not x9373))
+(or x9374 (not x9364))
+(or x9373 x9364 (not x9374))
+(or (not x9375) (not x9376) x9346)
+(or (not x9346) x9375)
+(or (not x9346) x9376)
+(or (not x9377) (not x9276) x9378)
+(or (not x9378) x9377)
+(or (not x9378) x9276)
+(or x9187 x9276 x9274 x9275 x9379)
+(or (not x9379) (not x9187))
+(or (not x9379) (not x9276))
+(or (not x9379) (not x9274))
+(or (not x9379) (not x9275))
+(or (not x9275) (not x9274) x9380)
+(or (not x9380) x9275)
+(or (not x9380) x9274)
+(or x9381 (not x9277))
+(or x9381 (not x9380))
+(or x9381 (not x9379))
+(or x9381 (not x9378))
+(or x9277 x9380 x9379 x9378 (not x9381))
+(or x9282 x9279 x9194 x9250 x9280 x9281 x9317)
+(or (not x9317) (not x9282))
+(or (not x9317) (not x9279))
+(or (not x9317) (not x9194))
+(or (not x9317) (not x9250))
+(or (not x9317) (not x9280))
+(or (not x9317) (not x9281))
+(or x9282 x9279 x9194 x9250 x9280 x9281 (not x9381) x9345)
+(or (not x9345) (not x9282))
+(or (not x9345) (not x9279))
+(or (not x9345) (not x9194))
+(or (not x9345) (not x9250))
+(or (not x9345) (not x9280))
+(or (not x9345) (not x9281))
+(or (not x9345) x9381)
+(or (not x9281) (not x9280) x9344)
+(or (not x9344) x9281)
+(or (not x9344) x9280)
+(or (not x9382) (not x9282) x9343)
+(or (not x9343) x9382)
+(or (not x9343) x9282)
+(or (not x9194) (not x9383) x9342)
+(or (not x9342) x9194)
+(or (not x9342) x9383)
+(or x9290 x9214)
+(or x9290 (not x9213))
+(or x9290 (not x9212))
+(or x9290 (not x9211))
+(or x9290 (not x9293))
+(or (not x9214) x9213 x9212 x9211 x9293 (not x9290))
+(or x9289 x9214)
+(or x9289 (not x9213))
+(or x9289 (not x9212))
+(or x9289 (not x9211))
+(or x9289 x9293)
+(or x9289 x9209)
+(or (not x9214) x9213 x9212 x9211 (not x9293) (not x9209) (not x9289))
+(or x9384 x9214)
+(or x9384 (not x9213))
+(or x9384 (not x9212))
+(or x9384 (not x9211))
+(or x9384 x9293)
+(or (not x9214) x9213 x9212 x9211 (not x9293) (not x9384))
+(or (not x9384) (not x9289) (not x9290) x9385)
+(or (not x9385) x9384)
+(or (not x9385) x9289)
+(or (not x9385) x9290)
+(or x9376 (not x9282))
+(or x9376 (not x9279))
+(or x9376 (not x9194))
+(or x9376 (not x9250))
+(or x9376 (not x9280))
+(or x9376 (not x9281))
+(or x9282 x9279 x9194 x9250 x9280 x9281 (not x9376))
+(or x9386 (not x9276))
+(or x9386 (not x9274))
+(or x9386 (not x9275))
+(or x9386 (not x9282))
+(or x9386 (not x9279))
+(or x9386 (not x9194))
+(or x9386 (not x9250))
+(or x9386 (not x9280))
+(or x9386 (not x9281))
+(or x9386 (not x9385))
+(or x9276 x9274 x9275 x9282 x9279 x9194 x9250 x9280 x9281 x9385 (not x9386))
+(or (not x9187) (not x9386) x9341)
+(or (not x9341) x9187)
+(or (not x9341) x9386)
+(or (not x9387) (not x9250) x9340)
+(or (not x9340) x9387)
+(or (not x9340) x9250)
+(or (not x9388) (not x9279) x9339)
+(or (not x9339) x9388)
+(or (not x9339) x9279)
+(or (not x9278) (not x9194) x9338)
+(or (not x9338) x9278)
+(or (not x9338) x9194)
+(or x9389 x9144)
+(or x9389 x9143)
+(or x9389 (not x9226))
+(or x9389 (not x9338))
+(or x9389 (not x9339))
+(or x9389 (not x9340))
+(or x9389 (not x9341))
+(or x9389 (not x9342))
+(or x9389 (not x9343))
+(or x9389 (not x9344))
+(or x9389 (not x9345))
+(or x9389 (not x9346))
+(or (not x9144) (not x9143) x9226 x9338 x9339 x9340 x9341 x9342 x9343 x9344 x9345 x9346 (not x9389))
+(or x9277 (not x9144) (not x9143) x9274 x9275 (not x9276) x9279 x9226 x9280 x9281 x9187 x9282 x9250 x9194 x9390)
+(or (not x9390) (not x9277))
+(or (not x9390) x9144)
+(or (not x9390) x9143)
+(or (not x9390) (not x9274))
+(or (not x9390) (not x9275))
+(or (not x9390) x9276)
+(or (not x9390) (not x9279))
+(or (not x9390) (not x9226))
+(or (not x9390) (not x9280))
+(or (not x9390) (not x9281))
+(or (not x9390) (not x9187))
+(or (not x9390) (not x9282))
+(or (not x9390) (not x9250))
+(or (not x9390) (not x9194))
+(or x9272 (not x9261))
+(or x9272 (not x9197))
+(or x9272 (not x9195))
+(or x9272 (not x9196))
+(or x9272 x9225)
+(or x9261 x9197 x9195 x9196 (not x9225) (not x9272))
+(or x9197 x9195 x9196 (not x9225) (not x9261) x9391)
+(or (not x9391) (not x9197))
+(or (not x9391) (not x9195))
+(or (not x9391) (not x9196))
+(or (not x9391) x9225)
+(or (not x9391) x9261)
+(or x9392 (not x9391))
+(or x9392 x9196)
+(or x9391 (not x9196) (not x9392))
+(or (not x9144) (not x9143) (not x9392) (not x9272) (not x9273) x9250 x9274 x9275 x9276 x9277 x9278 (not x9194) x9279 x9226 x9280 x9281 x9187 x9282 x9393)
+(or (not x9393) x9144)
+(or (not x9393) x9143)
+(or (not x9393) x9392)
+(or (not x9393) x9272)
+(or (not x9393) x9273)
+(or (not x9393) (not x9250))
+(or (not x9393) (not x9274))
+(or (not x9393) (not x9275))
+(or (not x9393) (not x9276))
+(or (not x9393) (not x9277))
+(or (not x9393) (not x9278))
+(or (not x9393) x9194)
+(or (not x9393) (not x9279))
+(or (not x9393) (not x9226))
+(or (not x9393) (not x9280))
+(or (not x9393) (not x9281))
+(or (not x9393) (not x9187))
+(or (not x9393) (not x9282))
+(or x9279 x9281 (not x9280) (not x9144) (not x9143) x9187 x9282 x9250 x9194 x9226 x9274 x9275 x9276 x9277 x9394)
+(or (not x9394) (not x9279))
+(or (not x9394) (not x9281))
+(or (not x9394) x9280)
+(or (not x9394) x9144)
+(or (not x9394) x9143)
+(or (not x9394) (not x9187))
+(or (not x9394) (not x9282))
+(or (not x9394) (not x9250))
+(or (not x9394) (not x9194))
+(or (not x9394) (not x9226))
+(or (not x9394) (not x9274))
+(or (not x9394) (not x9275))
+(or (not x9394) (not x9276))
+(or (not x9394) (not x9277))
+(or x9204 x9186 x9201)
+(or (not x9201) (not x9204))
+(or (not x9201) (not x9186))
+(or x9273 (not x9201))
+(or x9273 (not x9195))
+(or x9273 (not x9196))
+(or x9273 x9197)
+(or x9201 x9195 x9196 (not x9197) (not x9273))
+(or (not x9273) x9261 x9197 x9195 x9196 (not x9225) x9395)
+(or (not x9395) x9273)
+(or (not x9395) (not x9261))
+(or (not x9395) (not x9197))
+(or (not x9395) (not x9195))
+(or (not x9395) (not x9196))
+(or (not x9395) x9225)
+(or x9193 (not x9204))
+(or x9193 (not x9186))
+(or x9204 x9186 (not x9193))
+(or (not x9193) x9195 x9196 (not x9197) x9396)
+(or (not x9396) x9193)
+(or (not x9396) (not x9195))
+(or (not x9396) (not x9196))
+(or (not x9396) x9197)
+(or x9397 (not x9396))
+(or x9397 (not x9395))
+(or x9396 x9395 (not x9397))
+(or (not x9144) (not x9143) x9250 x9274 x9275 x9276 x9277 x9278 (not x9194) x9279 x9226 x9280 x9281 x9187 x9282 (not x9397) x9398)
+(or (not x9398) x9144)
+(or (not x9398) x9143)
+(or (not x9398) (not x9250))
+(or (not x9398) (not x9274))
+(or (not x9398) (not x9275))
+(or (not x9398) (not x9276))
+(or (not x9398) (not x9277))
+(or (not x9398) (not x9278))
+(or (not x9398) x9194)
+(or (not x9398) (not x9279))
+(or (not x9398) (not x9226))
+(or (not x9398) (not x9280))
+(or (not x9398) (not x9281))
+(or (not x9398) (not x9187))
+(or (not x9398) (not x9282))
+(or (not x9398) x9397)
+(or x9399 (not x9400))
+(or x9399 (not x9401))
+(or x9399 (not x9402))
+(or x9399 (not x9403))
+(or x9399 (not x9405))
+(or x9400 x9401 x9402 x9403 x9405 (not x9399))
+(or x9406 (not x9405))
+(or x9406 (not x9404))
+(or x9406 x168)
+(or x9406 (not x169))
+(or x9406 x9144)
+(or x9406 x9143)
+(or x9405 x9404 (not x168) x169 (not x9144) (not x9143) (not x9406))
+(or (not x9406) (not x9407) (not x9399) x9408)
+(or (not x9408) x9406)
+(or (not x9408) x9407)
+(or (not x9408) x9399)
+(or x9409 (not x9400))
+(or x9409 (not x9401))
+(or x9409 (not x9402))
+(or x9409 (not x9403))
+(or x9409 (not x9404))
+(or x9400 x9401 x9402 x9403 x9404 (not x9409))
+(or x9407 (not x9400))
+(or x9407 (not x9401))
+(or x9407 (not x9402))
+(or x9407 x9405)
+(or x9407 x9404)
+(or x9400 x9401 x9402 (not x9405) (not x9404) (not x9407))
+(or x9405 x9404 (not x168) x169 (not x9144) (not x9143) x9400)
+(or (not x9400) (not x9405))
+(or (not x9400) (not x9404))
+(or (not x9400) x168)
+(or (not x9400) (not x169))
+(or (not x9400) x9144)
+(or (not x9400) x9143)
+(or x9410 (not x9400))
+(or x9410 (not x9405))
+(or x9410 x9404)
+(or x9400 x9405 (not x9404) (not x9410))
+(or (not x9410) (not x9407) (not x9409) x9411)
+(or (not x9411) x9410)
+(or (not x9411) x9407)
+(or (not x9411) x9409)
+(or x9412 (not x9413))
+(or x9412 (not x9414))
+(or x9412 (not x9415))
+(or x9412 (not x9416))
+(or x9412 (not x9418))
+(or x9413 x9414 x9415 x9416 x9418 (not x9412))
+(or x9419 (not x9418))
+(or x9419 (not x9417))
+(or x9419 x168)
+(or x9419 (not x169))
+(or x9419 x9144)
+(or x9419 x9143)
+(or x9418 x9417 (not x168) x169 (not x9144) (not x9143) (not x9419))
+(or (not x9419) (not x9420) (not x9412) x9421)
+(or (not x9421) x9419)
+(or (not x9421) x9420)
+(or (not x9421) x9412)
+(or x9422 (not x9413))
+(or x9422 (not x9414))
+(or x9422 (not x9415))
+(or x9422 (not x9416))
+(or x9422 (not x9417))
+(or x9413 x9414 x9415 x9416 x9417 (not x9422))
+(or x9420 (not x9413))
+(or x9420 (not x9414))
+(or x9420 (not x9415))
+(or x9420 x9418)
+(or x9420 x9417)
+(or x9413 x9414 x9415 (not x9418) (not x9417) (not x9420))
+(or x9418 x9417 (not x168) x169 (not x9144) (not x9143) x9413)
+(or (not x9413) (not x9418))
+(or (not x9413) (not x9417))
+(or (not x9413) x168)
+(or (not x9413) (not x169))
+(or (not x9413) x9144)
+(or (not x9413) x9143)
+(or x9423 (not x9413))
+(or x9423 (not x9418))
+(or x9423 x9417)
+(or x9413 x9418 (not x9417) (not x9423))
+(or (not x9423) (not x9420) (not x9422) x9424)
+(or (not x9424) x9423)
+(or (not x9424) x9420)
+(or (not x9424) x9422)
+(or x9425 (not x9260))
+(or x9425 (not x9426))
+(or x9425 (not x9427))
+(or x9425 (not x9368))
+(or x9425 (not x9348))
+(or x9425 (not x9370))
+(or x9425 (not x9351))
+(or x9425 (not x9347))
+(or x9425 (not x9348))
+(or x9425 (not x9349))
+(or x9425 (not x9350))
+(or x9425 (not x9351))
+(or x9425 (not x9352))
+(or x9260 x9426 x9427 x9368 x9348 x9370 x9351 x9347 x9348 x9349 x9350 x9351 x9352 (not x9425))
+(or (not x9251) (not x9252) (not x9425) x9428)
+(or (not x9428) x9251)
+(or (not x9428) x9252)
+(or (not x9428) x9425)
+(or x9429 (not x9144))
+(or x9429 (not x9143))
+(or x9144 x9143 (not x9429))
+(or x9144 x9143 x9430)
+(or (not x9430) (not x9144))
+(or (not x9430) (not x9143))
+(or x9431 (not x9430))
+(or x9431 (not x9144))
+(or x9431 x9143)
+(or x9430 x9144 (not x9143) (not x9431))
+(or x9432 (not x9433))
+(or x9432 (not x9434))
+(or x9432 (not x9435))
+(or x9432 (not x9436))
+(or x9432 (not x9437))
+(or x9432 (not x9438))
+(or x9432 (not x9369))
+(or x9432 (not x9439))
+(or x9432 (not x9440))
+(or x9432 (not x9441))
+(or x9432 (not x9442))
+(or x9432 (not x9446))
+(or x9433 x9434 x9435 x9436 x9437 x9438 x9369 x9439 x9440 x9441 x9442 x9446 (not x9432))
+(or (not x9447) (not x9448) (not x9449) (not x9450) (not x9451) (not x9452) (not x9453) (not x9454) (not x9455) (not x9456) (not x9457) (not x9432) x9458)
+(or (not x9458) x9447)
+(or (not x9458) x9448)
+(or (not x9458) x9449)
+(or (not x9458) x9450)
+(or (not x9458) x9451)
+(or (not x9458) x9452)
+(or (not x9458) x9453)
+(or (not x9458) x9454)
+(or (not x9458) x9455)
+(or (not x9458) x9456)
+(or (not x9458) x9457)
+(or (not x9458) x9432)
+(or x9459 (not x9433))
+(or x9459 (not x9434))
+(or x9459 (not x9435))
+(or x9459 (not x9436))
+(or x9459 (not x9437))
+(or x9459 (not x9438))
+(or x9459 (not x9369))
+(or x9459 (not x9439))
+(or x9459 (not x9440))
+(or x9459 (not x9441))
+(or x9459 (not x9442))
+(or x9459 (not x9445))
+(or x9433 x9434 x9435 x9436 x9437 x9438 x9369 x9439 x9440 x9441 x9442 x9445 (not x9459))
+(or x9460 x9461)
+(or x9460 (not x9462))
+(or (not x9461) x9462 (not x9460))
+(or (not x9460) (not x9461) x9463)
+(or (not x9463) x9460)
+(or (not x9463) x9461)
+(or x9464 (not x9433))
+(or x9464 (not x9434))
+(or x9464 (not x9435))
+(or x9464 (not x9436))
+(or x9464 (not x9437))
+(or x9464 (not x9438))
+(or x9464 (not x9369))
+(or x9464 (not x9439))
+(or x9464 (not x9446))
+(or x9464 (not x9445))
+(or x9464 (not x9444))
+(or x9464 x9443)
+(or x9464 (not x170))
+(or x9464 (not x169))
+(or x9464 (not x9463))
+(or x9433 x9434 x9435 x9436 x9437 x9438 x9369 x9439 x9446 x9445 x9444 (not x9443) x170 x169 x9463 (not x9464))
+(or x9465 (not x9433))
+(or x9465 (not x9434))
+(or x9465 (not x9435))
+(or x9465 (not x9436))
+(or x9465 (not x9437))
+(or x9465 (not x9438))
+(or x9465 (not x9446))
+(or x9465 (not x9445))
+(or x9465 x9444)
+(or x9465 x9443)
+(or x9465 x9466)
+(or x9465 x9467)
+(or x9465 x9468)
+(or x9433 x9434 x9435 x9436 x9437 x9438 x9446 x9445 (not x9444) (not x9443) (not x9466) (not x9467) (not x9468) (not x9465))
+(or x9469 (not x9433))
+(or x9469 (not x9434))
+(or x9469 (not x9435))
+(or x9469 (not x9436))
+(or x9469 (not x9446))
+(or x9469 (not x9445))
+(or x9469 x9444)
+(or x9469 (not x9443))
+(or x9469 (not x9470))
+(or x9469 x9471)
+(or x9469 x9472)
+(or x9433 x9434 x9435 x9436 x9446 x9445 (not x9444) x9443 x9470 (not x9471) (not x9472) (not x9469))
+(or x9473 (not x9433))
+(or x9473 (not x9446))
+(or x9473 (not x9445))
+(or x9473 (not x9444))
+(or x9473 (not x9443))
+(or x9473 (not x169))
+(or x9473 x9144)
+(or x9473 x9143)
+(or x9473 (not x9470))
+(or x9473 (not x9474))
+(or x9473 (not x9475))
+(or x9473 x9476)
+(or x9433 x9446 x9445 x9444 x9443 x169 (not x9144) (not x9143) x9470 x9474 x9475 (not x9476) (not x9473))
+(or x9477 x9478)
+(or x9477 x9479)
+(or x9477 x9480)
+(or (not x9478) (not x9479) (not x9480) (not x9477))
+(or (not x9477) (not x9478) x9481)
+(or (not x9481) x9477)
+(or (not x9481) x9478)
+(or x9482 x9483)
+(or x9482 (not x9481))
+(or (not x9483) x9481 (not x9482))
+(or (not x9482) (not x9483) x9484)
+(or (not x9484) x9482)
+(or (not x9484) x9483)
+(or x9485 (not x9446))
+(or x9485 (not x9445))
+(or x9485 (not x9444))
+(or x9485 (not x9443))
+(or x9485 (not x169))
+(or x9485 x9144)
+(or x9485 x9143)
+(or x9485 (not x9470))
+(or x9485 (not x9486))
+(or x9485 (not x9484))
+(or x9446 x9445 x9444 x9443 x169 (not x9144) (not x9143) x9470 x9486 x9484 (not x9485))
+(or (not x9485) (not x9473) (not x9449) (not x9450) (not x9469) (not x9452) (not x9465) (not x9454) (not x9464) (not x9457) (not x9459) x9487)
+(or (not x9487) x9485)
+(or (not x9487) x9473)
+(or (not x9487) x9449)
+(or (not x9487) x9450)
+(or (not x9487) x9469)
+(or (not x9487) x9452)
+(or (not x9487) x9465)
+(or (not x9487) x9454)
+(or (not x9487) x9464)
+(or (not x9487) x9457)
+(or (not x9487) x9459)
+(or x9488 (not x9433))
+(or x9488 (not x9434))
+(or x9488 (not x9435))
+(or x9488 (not x9436))
+(or x9488 (not x9437))
+(or x9488 (not x9438))
+(or x9488 (not x9369))
+(or x9488 (not x9439))
+(or x9488 (not x9440))
+(or x9488 (not x9441))
+(or x9488 (not x9442))
+(or x9488 (not x9444))
+(or x9433 x9434 x9435 x9436 x9437 x9438 x9369 x9439 x9440 x9441 x9442 x9444 (not x9488))
+(or x9456 (not x9433))
+(or x9456 (not x9434))
+(or x9456 (not x9435))
+(or x9456 (not x9436))
+(or x9456 (not x9437))
+(or x9456 (not x9438))
+(or x9456 (not x9369))
+(or x9456 (not x9439))
+(or x9456 (not x9440))
+(or x9456 (not x9446))
+(or x9456 x9445)
+(or x9456 x9444)
+(or x9456 (not x9443))
+(or x9456 (not x170))
+(or x9456 (not x169))
+(or x9433 x9434 x9435 x9436 x9437 x9438 x9369 x9439 x9440 x9446 (not x9445) (not x9444) x9443 x170 x169 (not x9456))
+(or x9489 x9462)
+(or x9489 x9490)
+(or (not x9462) (not x9490) (not x9489))
+(or (not x9489) (not x9462) x9491)
+(or (not x9491) x9489)
+(or (not x9491) x9462)
+(or x9492 (not x9433))
+(or x9492 (not x9434))
+(or x9492 (not x9435))
+(or x9492 (not x9436))
+(or x9492 (not x9437))
+(or x9492 (not x9438))
+(or x9492 (not x9369))
+(or x9492 (not x9439))
+(or x9492 (not x9446))
+(or x9492 (not x9445))
+(or x9492 (not x9444))
+(or x9492 x9443)
+(or x9492 (not x170))
+(or x9492 (not x169))
+(or x9492 x9461)
+(or x9492 (not x9491))
+(or x9433 x9434 x9435 x9436 x9437 x9438 x9369 x9439 x9446 x9445 x9444 (not x9443) x170 x169 (not x9461) x9491 (not x9492))
+(or x9493 x9468)
+(or x9493 (not x9494))
+(or (not x9468) x9494 (not x9493))
+(or (not x9493) (not x9468) x9495)
+(or (not x9495) x9493)
+(or (not x9495) x9468)
+(or x9496 x9466)
+(or x9496 x9467)
+(or x9496 (not x9495))
+(or (not x9466) (not x9467) x9495 (not x9496))
+(or (not x9496) (not x9466) x9497)
+(or (not x9497) x9496)
+(or (not x9497) x9466)
+(or x9498 (not x9433))
+(or x9498 (not x9434))
+(or x9498 (not x9435))
+(or x9498 (not x9436))
+(or x9498 (not x9437))
+(or x9498 (not x9438))
+(or x9498 (not x9446))
+(or x9498 (not x9445))
+(or x9498 x9444)
+(or x9498 x9443)
+(or x9498 (not x9497))
+(or x9433 x9434 x9435 x9436 x9437 x9438 x9446 x9445 (not x9444) (not x9443) x9497 (not x9498))
+(or x9499 x9472)
+(or x9499 (not x9500))
+(or (not x9472) x9500 (not x9499))
+(or (not x9499) (not x9472) x9501)
+(or (not x9501) x9499)
+(or (not x9501) x9472)
+(or x9502 (not x9433))
+(or x9502 (not x9434))
+(or x9502 (not x9435))
+(or x9502 (not x9436))
+(or x9502 (not x9446))
+(or x9502 (not x9445))
+(or x9502 x9444)
+(or x9502 (not x9443))
+(or x9502 (not x9470))
+(or x9502 x9471)
+(or x9502 (not x9501))
+(or x9433 x9434 x9435 x9436 x9446 x9445 (not x9444) x9443 x9470 (not x9471) x9501 (not x9502))
+(or x9503 (not x9433))
+(or x9503 (not x9446))
+(or x9503 (not x9445))
+(or x9503 (not x9444))
+(or x9503 (not x9443))
+(or x9503 (not x169))
+(or x9503 x9144)
+(or x9503 x9143)
+(or x9503 (not x9470))
+(or x9503 (not x9474))
+(or x9503 (not x9475))
+(or x9503 (not x9476))
+(or x9433 x9446 x9445 x9444 x9443 x169 (not x9144) (not x9143) x9470 x9474 x9475 x9476 (not x9503))
+(or x9504 x9483)
+(or x9504 x9478)
+(or x9504 x9479)
+(or x9504 (not x9480))
+(or (not x9483) (not x9478) (not x9479) x9480 (not x9504))
+(or (not x9504) (not x9483) x9505)
+(or (not x9505) x9504)
+(or (not x9505) x9483)
+(or x9506 (not x9446))
+(or x9506 (not x9445))
+(or x9506 (not x9444))
+(or x9506 (not x9443))
+(or x9506 (not x169))
+(or x9506 x9144)
+(or x9506 x9143)
+(or x9506 (not x9470))
+(or x9506 (not x9486))
+(or x9506 (not x9505))
+(or x9446 x9445 x9444 x9443 x169 (not x9144) (not x9143) x9470 x9486 x9505 (not x9506))
+(or (not x9506) (not x9503) (not x9450) (not x9502) (not x9498) (not x9454) (not x9492) (not x9456) (not x9457) (not x9488) x9507)
+(or (not x9507) x9506)
+(or (not x9507) x9503)
+(or (not x9507) x9450)
+(or (not x9507) x9502)
+(or (not x9507) x9498)
+(or (not x9507) x9454)
+(or (not x9507) x9492)
+(or (not x9507) x9456)
+(or (not x9507) x9457)
+(or (not x9507) x9488)
+(or x9508 (not x9350))
+(or x9508 (not x9352))
+(or x9508 (not x9351))
+(or x9350 x9352 x9351 (not x9508))
+(or (not x9508) (not x169) x9442)
+(or (not x9442) x9508)
+(or (not x9442) x169)
+(or x9509 (not x9433))
+(or x9509 (not x9434))
+(or x9509 (not x9435))
+(or x9509 (not x9436))
+(or x9509 (not x9437))
+(or x9509 (not x9438))
+(or x9509 (not x9369))
+(or x9509 (not x9439))
+(or x9509 (not x9440))
+(or x9509 (not x9441))
+(or x9509 (not x9442))
+(or x9509 (not x9443))
+(or x9433 x9434 x9435 x9436 x9437 x9438 x9369 x9439 x9440 x9441 x9442 x9443 (not x9509))
+(or x9334 (not x9446))
+(or x9334 x9445)
+(or x9334 (not x9444))
+(or x9334 (not x9443))
+(or x9446 (not x9445) x9444 x9443 (not x9334))
+(or (not x9334) (not x9335) (not x9299) x9510)
+(or (not x9510) x9334)
+(or (not x9510) x9335)
+(or (not x9510) x9299)
+(or x9446 (not x9445) (not x9444) x9443 x170 x169 x9441)
+(or (not x9441) (not x9446))
+(or (not x9441) x9445)
+(or (not x9441) x9444)
+(or (not x9441) (not x9443))
+(or (not x9441) (not x170))
+(or (not x9441) (not x169))
+(or x9446 x9445 x9444 (not x9443) x170 x169 x9440)
+(or (not x9440) (not x9446))
+(or (not x9440) (not x9445))
+(or (not x9440) (not x9444))
+(or (not x9440) x9443)
+(or (not x9440) (not x170))
+(or (not x9440) (not x169))
+(or x9457 (not x9433))
+(or x9457 (not x9434))
+(or x9457 (not x9435))
+(or x9457 (not x9436))
+(or x9457 (not x9437))
+(or x9457 (not x9438))
+(or x9457 (not x9369))
+(or x9457 (not x9439))
+(or x9457 (not x9440))
+(or x9457 (not x9441))
+(or x9457 (not x9510))
+(or x9457 x169)
+(or x9433 x9434 x9435 x9436 x9437 x9438 x9369 x9439 x9440 x9441 x9510 (not x169) (not x9457))
+(or x9511 x9490)
+(or x9511 x9512)
+(or (not x9490) (not x9512) (not x9511))
+(or (not x9511) (not x9490) x9513)
+(or (not x9513) x9511)
+(or (not x9513) x9490)
+(or x9446 x9445 x9444 (not x9443) x170 (not x169) x9439)
+(or (not x9439) (not x9446))
+(or (not x9439) (not x9445))
+(or (not x9439) (not x9444))
+(or (not x9439) x9443)
+(or (not x9439) (not x170))
+(or (not x9439) x169)
+(or x9455 (not x9433))
+(or x9455 (not x9434))
+(or x9455 (not x9435))
+(or x9455 (not x9436))
+(or x9455 (not x9437))
+(or x9455 (not x9438))
+(or x9455 (not x9369))
+(or x9455 (not x9439))
+(or x9455 (not x9446))
+(or x9455 (not x9445))
+(or x9455 (not x9444))
+(or x9455 x9443)
+(or x9455 (not x170))
+(or x9455 (not x169))
+(or x9433 x9434 x9435 x9436 x9437 x9438 x9369 x9439 x9446 x9445 x9444 (not x9443) x170 x169 (not x9455))
+(or x9514 (not x9433))
+(or x9514 (not x9434))
+(or x9514 (not x9435))
+(or x9514 (not x9436))
+(or x9514 (not x9437))
+(or x9514 (not x9438))
+(or x9514 (not x9369))
+(or x9514 (not x9439))
+(or x9514 (not x9446))
+(or x9514 (not x9445))
+(or x9514 (not x9444))
+(or x9514 x9443)
+(or x9514 (not x170))
+(or x9514 (not x169))
+(or x9514 x9461)
+(or x9514 x9462)
+(or x9514 (not x9513))
+(or x9433 x9434 x9435 x9436 x9437 x9438 x9369 x9439 x9446 x9445 x9444 (not x9443) x170 x169 (not x9461) (not x9462) x9513 (not x9514))
+(or x9454 (not x9433))
+(or x9454 (not x9434))
+(or x9454 (not x9435))
+(or x9454 (not x9436))
+(or x9454 (not x9437))
+(or x9454 (not x9438))
+(or x9454 (not x9369))
+(or x9454 (not x9446))
+(or x9454 (not x9445))
+(or x9454 (not x9444))
+(or x9454 x9443)
+(or x9454 (not x170))
+(or x9454 x169)
+(or x9433 x9434 x9435 x9436 x9437 x9438 x9369 x9446 x9445 x9444 (not x9443) x170 (not x169) (not x9454))
+(or x9515 x9467)
+(or x9515 (not x9468))
+(or (not x9467) x9468 (not x9515))
+(or (not x9515) (not x9467) x9516)
+(or (not x9516) x9515)
+(or (not x9516) x9467)
+(or x9453 (not x9433))
+(or x9453 (not x9434))
+(or x9453 (not x9435))
+(or x9453 (not x9436))
+(or x9453 (not x9437))
+(or x9453 (not x9438))
+(or x9453 (not x9446))
+(or x9453 (not x9445))
+(or x9453 x9444)
+(or x9453 x9443)
+(or x9433 x9434 x9435 x9436 x9437 x9438 x9446 x9445 (not x9444) (not x9443) (not x9453))
+(or x9517 (not x9433))
+(or x9517 (not x9434))
+(or x9517 (not x9435))
+(or x9517 (not x9436))
+(or x9517 (not x9437))
+(or x9517 (not x9438))
+(or x9517 (not x9446))
+(or x9517 (not x9445))
+(or x9517 x9444)
+(or x9517 x9443)
+(or x9517 x9466)
+(or x9517 (not x9516))
+(or x9433 x9434 x9435 x9436 x9437 x9438 x9446 x9445 (not x9444) (not x9443) (not x9466) x9516 (not x9517))
+(or x9446 x9445 (not x9444) x9443 (not x9518) x9437)
+(or (not x9437) (not x9446))
+(or (not x9437) (not x9445))
+(or (not x9437) x9444)
+(or (not x9437) (not x9443))
+(or (not x9437) x9518)
+(or x9452 (not x9433))
+(or x9452 (not x9434))
+(or x9452 (not x9435))
+(or x9452 (not x9436))
+(or x9452 (not x9437))
+(or x9452 (not x9446))
+(or x9452 (not x9445))
+(or x9452 x9444)
+(or x9452 (not x9443))
+(or x9433 x9434 x9435 x9436 x9437 x9446 x9445 (not x9444) x9443 (not x9452))
+(or x9519 x9471)
+(or x9519 x9472)
+(or x9519 x9500)
+(or x9519 x9520)
+(or (not x9471) (not x9472) (not x9500) (not x9520) (not x9519))
+(or (not x9519) (not x9471) x9521)
+(or (not x9521) x9519)
+(or (not x9521) x9471)
+(or x9446 x9445 (not x9444) x9443 (not x169) (not x170) x9436)
+(or (not x9436) (not x9446))
+(or (not x9436) (not x9445))
+(or (not x9436) x9444)
+(or (not x9436) (not x9443))
+(or (not x9436) x169)
+(or (not x9436) x170)
+(or x9451 (not x9433))
+(or x9451 (not x9434))
+(or x9451 (not x9435))
+(or x9451 (not x9436))
+(or x9451 (not x9446))
+(or x9451 (not x9445))
+(or x9451 x9444)
+(or x9451 (not x9443))
+(or x9451 (not x9470))
+(or x9433 x9434 x9435 x9436 x9446 x9445 (not x9444) x9443 x9470 (not x9451))
+(or x9522 (not x9433))
+(or x9522 (not x9434))
+(or x9522 (not x9435))
+(or x9522 (not x9436))
+(or x9522 (not x9446))
+(or x9522 (not x9445))
+(or x9522 x9444)
+(or x9522 (not x9443))
+(or x9522 (not x9470))
+(or x9522 (not x9521))
+(or x9433 x9434 x9435 x9436 x9446 x9445 (not x9444) x9443 x9470 x9521 (not x9522))
+(or x9450 (not x9433))
+(or x9450 (not x9434))
+(or x9450 (not x9435))
+(or x9450 (not x9446))
+(or x9450 (not x9445))
+(or x9450 x9444)
+(or x9450 (not x9443))
+(or x9450 x169)
+(or x9450 x170)
+(or x9433 x9434 x9435 x9446 x9445 (not x9444) x9443 (not x169) (not x170) (not x9450))
+(or x9446 x9445 x9444 x9443 x169 (not x9144) (not x9143) (not x9518) (not x9523) (not x9524) x9434)
+(or (not x9434) (not x9446))
+(or (not x9434) (not x9445))
+(or (not x9434) (not x9444))
+(or (not x9434) (not x9443))
+(or (not x9434) (not x169))
+(or (not x9434) x9144)
+(or (not x9434) x9143)
+(or (not x9434) x9518)
+(or (not x9434) x9523)
+(or (not x9434) x9524)
+(or x9449 (not x9433))
+(or x9449 (not x9434))
+(or x9449 (not x9446))
+(or x9449 (not x9445))
+(or x9449 (not x9444))
+(or x9449 (not x9443))
+(or x9449 (not x169))
+(or x9449 x9144)
+(or x9449 x9143)
+(or x9433 x9434 x9446 x9445 x9444 x9443 x169 (not x9144) (not x9143) (not x9449))
+(or (not x9405) (not x9404) x9403)
+(or (not x9403) x9405)
+(or (not x9403) x9404)
+(or (not x9405) x9404 x9402)
+(or (not x9402) x9405)
+(or (not x9402) (not x9404))
+(or x9405 (not x9404) x9401)
+(or (not x9401) (not x9405))
+(or (not x9401) x9404)
+(or x9405 x9404 (not x168) x169 x9525)
+(or (not x9525) (not x9405))
+(or (not x9525) (not x9404))
+(or (not x9525) x168)
+(or (not x9525) (not x169))
+(or x9518 (not x9525))
+(or x9518 (not x9401))
+(or x9518 (not x9402))
+(or x9518 (not x9403))
+(or x9525 x9401 x9402 x9403 (not x9518))
+(or x9446 x9445 x9444 x9443 x169 (not x9144) (not x9143) x9435)
+(or (not x9435) (not x9446))
+(or (not x9435) (not x9445))
+(or (not x9435) (not x9444))
+(or (not x9435) (not x9443))
+(or (not x9435) (not x169))
+(or (not x9435) x9144)
+(or (not x9435) x9143)
+(or x9446 x9445 x9444 x9443 x169 (not x9144) (not x9143) (not x9518) (not x9526) x9433)
+(or (not x9433) (not x9446))
+(or (not x9433) (not x9445))
+(or (not x9433) (not x9444))
+(or (not x9433) (not x9443))
+(or (not x9433) (not x169))
+(or (not x9433) x9144)
+(or (not x9433) x9143)
+(or (not x9433) x9518)
+(or (not x9433) x9526)
+(or x9448 (not x9433))
+(or x9448 (not x9446))
+(or x9448 (not x9445))
+(or x9448 (not x9444))
+(or x9448 (not x9443))
+(or x9448 (not x169))
+(or x9448 x9144)
+(or x9448 x9143)
+(or x9448 (not x9470))
+(or x9448 (not x9474))
+(or x9448 (not x9475))
+(or x9433 x9446 x9445 x9444 x9443 x169 (not x9144) (not x9143) x9470 x9474 x9475 (not x9448))
+(or x9527 (not x9433))
+(or x9527 (not x9446))
+(or x9527 (not x9445))
+(or x9527 (not x9444))
+(or x9527 (not x9443))
+(or x9527 (not x169))
+(or x9527 x9144)
+(or x9527 x9143)
+(or x9527 (not x9470))
+(or x9527 (not x9474))
+(or x9527 (not x9475))
+(or x9527 x9476)
+(or x9527 x9528)
+(or x9433 x9446 x9445 x9444 x9443 x169 (not x9144) (not x9143) x9470 x9474 x9475 (not x9476) (not x9528) (not x9527))
+(or x9529 x9479)
+(or x9529 x9480)
+(or (not x9479) (not x9480) (not x9529))
+(or (not x9529) (not x9479) x9530)
+(or (not x9530) x9529)
+(or (not x9530) x9479)
+(or x9531 x9405)
+(or x9531 x9404)
+(or (not x9405) (not x9404) (not x9531))
+(or x9532 x9405)
+(or x9532 (not x9404))
+(or (not x9405) x9404 (not x9532))
+(or x9533 (not x9405))
+(or x9533 x9404)
+(or x9405 (not x9404) (not x9533))
+(or x9534 (not x9405))
+(or x9534 (not x9404))
+(or x9534 x168)
+(or x9534 (not x169))
+(or x9405 x9404 (not x168) x169 (not x9534))
+(or (not x9534) (not x9533) (not x9532) (not x9531) x9470)
+(or (not x9470) x9534)
+(or (not x9470) x9533)
+(or (not x9470) x9532)
+(or (not x9470) x9531)
+(or x9447 (not x9446))
+(or x9447 (not x9445))
+(or x9447 (not x9444))
+(or x9447 (not x9443))
+(or x9447 (not x169))
+(or x9447 x9144)
+(or x9447 x9143)
+(or x9447 (not x9470))
+(or x9447 (not x9486))
+(or x9446 x9445 x9444 x9443 x169 (not x9144) (not x9143) x9470 x9486 (not x9447))
+(or x9535 (not x9446))
+(or x9535 (not x9445))
+(or x9535 (not x9444))
+(or x9535 (not x9443))
+(or x9535 (not x169))
+(or x9535 x9144)
+(or x9535 x9143)
+(or x9535 (not x9470))
+(or x9535 (not x9486))
+(or x9535 x9483)
+(or x9535 x9478)
+(or x9535 (not x9530))
+(or x9446 x9445 x9444 x9443 x169 (not x9144) (not x9143) x9470 x9486 (not x9483) (not x9478) x9530 (not x9535))
+(or (not x9535) (not x9527) (not x9449) (not x9450) (not x9522) (not x9452) (not x9517) (not x9454) (not x9514) (not x9457) (not x9509) x9536)
+(or (not x9536) x9535)
+(or (not x9536) x9527)
+(or (not x9536) x9449)
+(or (not x9536) x9450)
+(or (not x9536) x9522)
+(or (not x9536) x9452)
+(or (not x9536) x9517)
+(or (not x9536) x9454)
+(or (not x9536) x9514)
+(or (not x9536) x9457)
+(or (not x9536) x9509)
+(or x9537 (not x9538))
+(or x9537 (not x9539))
+(or x9537 (not x9540))
+(or x9537 (not x9541))
+(or x9537 (not x9542))
+(or x9537 (not x9543))
+(or x9537 (not x9367))
+(or x9537 (not x9544))
+(or x9537 (not x9545))
+(or x9537 (not x9546))
+(or x9537 (not x9547))
+(or x9537 (not x9551))
+(or x9538 x9539 x9540 x9541 x9542 x9543 x9367 x9544 x9545 x9546 x9547 x9551 (not x9537))
+(or (not x9552) (not x9553) (not x9554) (not x9555) (not x9556) (not x9557) (not x9558) (not x9559) (not x9560) (not x9561) (not x9562) (not x9537) x9563)
+(or (not x9563) x9552)
+(or (not x9563) x9553)
+(or (not x9563) x9554)
+(or (not x9563) x9555)
+(or (not x9563) x9556)
+(or (not x9563) x9557)
+(or (not x9563) x9558)
+(or (not x9563) x9559)
+(or (not x9563) x9560)
+(or (not x9563) x9561)
+(or (not x9563) x9562)
+(or (not x9563) x9537)
+(or x9564 (not x9538))
+(or x9564 (not x9539))
+(or x9564 (not x9540))
+(or x9564 (not x9541))
+(or x9564 (not x9542))
+(or x9564 (not x9543))
+(or x9564 (not x9367))
+(or x9564 (not x9544))
+(or x9564 (not x9545))
+(or x9564 (not x9546))
+(or x9564 (not x9547))
+(or x9564 (not x9550))
+(or x9538 x9539 x9540 x9541 x9542 x9543 x9367 x9544 x9545 x9546 x9547 x9550 (not x9564))
+(or x9565 x9566)
+(or x9565 (not x9567))
+(or (not x9566) x9567 (not x9565))
+(or (not x9565) (not x9566) x9568)
+(or (not x9568) x9565)
+(or (not x9568) x9566)
+(or x9569 (not x9538))
+(or x9569 (not x9539))
+(or x9569 (not x9540))
+(or x9569 (not x9541))
+(or x9569 (not x9542))
+(or x9569 (not x9543))
+(or x9569 (not x9367))
+(or x9569 (not x9544))
+(or x9569 (not x9551))
+(or x9569 (not x9550))
+(or x9569 (not x9549))
+(or x9569 x9548)
+(or x9569 (not x170))
+(or x9569 (not x169))
+(or x9569 (not x9568))
+(or x9538 x9539 x9540 x9541 x9542 x9543 x9367 x9544 x9551 x9550 x9549 (not x9548) x170 x169 x9568 (not x9569))
+(or x9570 (not x9538))
+(or x9570 (not x9539))
+(or x9570 (not x9540))
+(or x9570 (not x9541))
+(or x9570 (not x9542))
+(or x9570 (not x9543))
+(or x9570 (not x9551))
+(or x9570 (not x9550))
+(or x9570 x9549)
+(or x9570 x9548)
+(or x9570 x9571)
+(or x9570 x9572)
+(or x9570 x9573)
+(or x9538 x9539 x9540 x9541 x9542 x9543 x9551 x9550 (not x9549) (not x9548) (not x9571) (not x9572) (not x9573) (not x9570))
+(or x9574 (not x9538))
+(or x9574 (not x9539))
+(or x9574 (not x9540))
+(or x9574 (not x9541))
+(or x9574 (not x9551))
+(or x9574 (not x9550))
+(or x9574 x9549)
+(or x9574 (not x9548))
+(or x9574 (not x9575))
+(or x9574 x9576)
+(or x9574 x9577)
+(or x9538 x9539 x9540 x9541 x9551 x9550 (not x9549) x9548 x9575 (not x9576) (not x9577) (not x9574))
+(or x9578 (not x9538))
+(or x9578 (not x9551))
+(or x9578 (not x9550))
+(or x9578 (not x9549))
+(or x9578 (not x9548))
+(or x9578 (not x169))
+(or x9578 x9144)
+(or x9578 x9143)
+(or x9578 (not x9575))
+(or x9578 (not x9474))
+(or x9578 (not x9475))
+(or x9578 x9579)
+(or x9538 x9551 x9550 x9549 x9548 x169 (not x9144) (not x9143) x9575 x9474 x9475 (not x9579) (not x9578))
+(or x9580 x9581)
+(or x9580 x9582)
+(or x9580 x9583)
+(or (not x9581) (not x9582) (not x9583) (not x9580))
+(or (not x9580) (not x9581) x9584)
+(or (not x9584) x9580)
+(or (not x9584) x9581)
+(or x9585 x9586)
+(or x9585 (not x9584))
+(or (not x9586) x9584 (not x9585))
+(or (not x9585) (not x9586) x9587)
+(or (not x9587) x9585)
+(or (not x9587) x9586)
+(or x9588 (not x9551))
+(or x9588 (not x9550))
+(or x9588 (not x9549))
+(or x9588 (not x9548))
+(or x9588 (not x169))
+(or x9588 x9144)
+(or x9588 x9143)
+(or x9588 (not x9575))
+(or x9588 (not x9486))
+(or x9588 (not x9587))
+(or x9551 x9550 x9549 x9548 x169 (not x9144) (not x9143) x9575 x9486 x9587 (not x9588))
+(or (not x9588) (not x9578) (not x9554) (not x9555) (not x9574) (not x9557) (not x9570) (not x9559) (not x9569) (not x9562) (not x9564) x9589)
+(or (not x9589) x9588)
+(or (not x9589) x9578)
+(or (not x9589) x9554)
+(or (not x9589) x9555)
+(or (not x9589) x9574)
+(or (not x9589) x9557)
+(or (not x9589) x9570)
+(or (not x9589) x9559)
+(or (not x9589) x9569)
+(or (not x9589) x9562)
+(or (not x9589) x9564)
+(or x9590 (not x9538))
+(or x9590 (not x9539))
+(or x9590 (not x9540))
+(or x9590 (not x9541))
+(or x9590 (not x9542))
+(or x9590 (not x9543))
+(or x9590 (not x9367))
+(or x9590 (not x9544))
+(or x9590 (not x9545))
+(or x9590 (not x9546))
+(or x9590 (not x9547))
+(or x9590 (not x9549))
+(or x9538 x9539 x9540 x9541 x9542 x9543 x9367 x9544 x9545 x9546 x9547 x9549 (not x9590))
+(or x9561 (not x9538))
+(or x9561 (not x9539))
+(or x9561 (not x9540))
+(or x9561 (not x9541))
+(or x9561 (not x9542))
+(or x9561 (not x9543))
+(or x9561 (not x9367))
+(or x9561 (not x9544))
+(or x9561 (not x9545))
+(or x9561 (not x9551))
+(or x9561 x9550)
+(or x9561 x9549)
+(or x9561 (not x9548))
+(or x9561 (not x170))
+(or x9561 (not x169))
+(or x9538 x9539 x9540 x9541 x9542 x9543 x9367 x9544 x9545 x9551 (not x9550) (not x9549) x9548 x170 x169 (not x9561))
+(or x9591 x9567)
+(or x9591 x9592)
+(or (not x9567) (not x9592) (not x9591))
+(or (not x9591) (not x9567) x9593)
+(or (not x9593) x9591)
+(or (not x9593) x9567)
+(or x9594 (not x9538))
+(or x9594 (not x9539))
+(or x9594 (not x9540))
+(or x9594 (not x9541))
+(or x9594 (not x9542))
+(or x9594 (not x9543))
+(or x9594 (not x9367))
+(or x9594 (not x9544))
+(or x9594 (not x9551))
+(or x9594 (not x9550))
+(or x9594 (not x9549))
+(or x9594 x9548)
+(or x9594 (not x170))
+(or x9594 (not x169))
+(or x9594 x9566)
+(or x9594 (not x9593))
+(or x9538 x9539 x9540 x9541 x9542 x9543 x9367 x9544 x9551 x9550 x9549 (not x9548) x170 x169 (not x9566) x9593 (not x9594))
+(or x9595 x9573)
+(or x9595 (not x9596))
+(or (not x9573) x9596 (not x9595))
+(or (not x9595) (not x9573) x9597)
+(or (not x9597) x9595)
+(or (not x9597) x9573)
+(or x9598 x9571)
+(or x9598 x9572)
+(or x9598 (not x9597))
+(or (not x9571) (not x9572) x9597 (not x9598))
+(or (not x9598) (not x9571) x9599)
+(or (not x9599) x9598)
+(or (not x9599) x9571)
+(or x9600 (not x9538))
+(or x9600 (not x9539))
+(or x9600 (not x9540))
+(or x9600 (not x9541))
+(or x9600 (not x9542))
+(or x9600 (not x9543))
+(or x9600 (not x9551))
+(or x9600 (not x9550))
+(or x9600 x9549)
+(or x9600 x9548)
+(or x9600 (not x9599))
+(or x9538 x9539 x9540 x9541 x9542 x9543 x9551 x9550 (not x9549) (not x9548) x9599 (not x9600))
+(or x9601 x9577)
+(or x9601 (not x9602))
+(or (not x9577) x9602 (not x9601))
+(or (not x9601) (not x9577) x9603)
+(or (not x9603) x9601)
+(or (not x9603) x9577)
+(or x9604 (not x9538))
+(or x9604 (not x9539))
+(or x9604 (not x9540))
+(or x9604 (not x9541))
+(or x9604 (not x9551))
+(or x9604 (not x9550))
+(or x9604 x9549)
+(or x9604 (not x9548))
+(or x9604 (not x9575))
+(or x9604 x9576)
+(or x9604 (not x9603))
+(or x9538 x9539 x9540 x9541 x9551 x9550 (not x9549) x9548 x9575 (not x9576) x9603 (not x9604))
+(or x9605 (not x9538))
+(or x9605 (not x9551))
+(or x9605 (not x9550))
+(or x9605 (not x9549))
+(or x9605 (not x9548))
+(or x9605 (not x169))
+(or x9605 x9144)
+(or x9605 x9143)
+(or x9605 (not x9575))
+(or x9605 (not x9474))
+(or x9605 (not x9475))
+(or x9605 (not x9579))
+(or x9538 x9551 x9550 x9549 x9548 x169 (not x9144) (not x9143) x9575 x9474 x9475 x9579 (not x9605))
+(or x9606 x9586)
+(or x9606 x9581)
+(or x9606 x9582)
+(or x9606 (not x9583))
+(or (not x9586) (not x9581) (not x9582) x9583 (not x9606))
+(or (not x9606) (not x9586) x9607)
+(or (not x9607) x9606)
+(or (not x9607) x9586)
+(or x9608 (not x9551))
+(or x9608 (not x9550))
+(or x9608 (not x9549))
+(or x9608 (not x9548))
+(or x9608 (not x169))
+(or x9608 x9144)
+(or x9608 x9143)
+(or x9608 (not x9575))
+(or x9608 (not x9486))
+(or x9608 (not x9607))
+(or x9551 x9550 x9549 x9548 x169 (not x9144) (not x9143) x9575 x9486 x9607 (not x9608))
+(or (not x9608) (not x9605) (not x9555) (not x9604) (not x9600) (not x9559) (not x9594) (not x9561) (not x9562) (not x9590) x9609)
+(or (not x9609) x9608)
+(or (not x9609) x9605)
+(or (not x9609) x9555)
+(or (not x9609) x9604)
+(or (not x9609) x9600)
+(or (not x9609) x9559)
+(or (not x9609) x9594)
+(or (not x9609) x9561)
+(or (not x9609) x9562)
+(or (not x9609) x9590)
+(or x9610 (not x9347))
+(or x9610 (not x9349))
+(or x9610 (not x9348))
+(or x9347 x9349 x9348 (not x9610))
+(or (not x9610) (not x169) x9547)
+(or (not x9547) x9610)
+(or (not x9547) x169)
+(or x9611 (not x9538))
+(or x9611 (not x9539))
+(or x9611 (not x9540))
+(or x9611 (not x9541))
+(or x9611 (not x9542))
+(or x9611 (not x9543))
+(or x9611 (not x9367))
+(or x9611 (not x9544))
+(or x9611 (not x9545))
+(or x9611 (not x9546))
+(or x9611 (not x9547))
+(or x9611 (not x9548))
+(or x9538 x9539 x9540 x9541 x9542 x9543 x9367 x9544 x9545 x9546 x9547 x9548 (not x9611))
+(or x9332 (not x9551))
+(or x9332 x9550)
+(or x9332 (not x9549))
+(or x9332 (not x9548))
+(or x9551 (not x9550) x9549 x9548 (not x9332))
+(or (not x9332) (not x9333) (not x9297) x9612)
+(or (not x9612) x9332)
+(or (not x9612) x9333)
+(or (not x9612) x9297)
+(or x9551 (not x9550) (not x9549) x9548 x170 x169 x9546)
+(or (not x9546) (not x9551))
+(or (not x9546) x9550)
+(or (not x9546) x9549)
+(or (not x9546) (not x9548))
+(or (not x9546) (not x170))
+(or (not x9546) (not x169))
+(or x9551 x9550 x9549 (not x9548) x170 x169 x9545)
+(or (not x9545) (not x9551))
+(or (not x9545) (not x9550))
+(or (not x9545) (not x9549))
+(or (not x9545) x9548)
+(or (not x9545) (not x170))
+(or (not x9545) (not x169))
+(or x9562 (not x9538))
+(or x9562 (not x9539))
+(or x9562 (not x9540))
+(or x9562 (not x9541))
+(or x9562 (not x9542))
+(or x9562 (not x9543))
+(or x9562 (not x9367))
+(or x9562 (not x9544))
+(or x9562 (not x9545))
+(or x9562 (not x9546))
+(or x9562 (not x9612))
+(or x9562 x169)
+(or x9538 x9539 x9540 x9541 x9542 x9543 x9367 x9544 x9545 x9546 x9612 (not x169) (not x9562))
+(or x9613 x9592)
+(or x9613 x9614)
+(or (not x9592) (not x9614) (not x9613))
+(or (not x9613) (not x9592) x9615)
+(or (not x9615) x9613)
+(or (not x9615) x9592)
+(or x9551 x9550 x9549 (not x9548) x170 (not x169) x9544)
+(or (not x9544) (not x9551))
+(or (not x9544) (not x9550))
+(or (not x9544) (not x9549))
+(or (not x9544) x9548)
+(or (not x9544) (not x170))
+(or (not x9544) x169)
+(or x9560 (not x9538))
+(or x9560 (not x9539))
+(or x9560 (not x9540))
+(or x9560 (not x9541))
+(or x9560 (not x9542))
+(or x9560 (not x9543))
+(or x9560 (not x9367))
+(or x9560 (not x9544))
+(or x9560 (not x9551))
+(or x9560 (not x9550))
+(or x9560 (not x9549))
+(or x9560 x9548)
+(or x9560 (not x170))
+(or x9560 (not x169))
+(or x9538 x9539 x9540 x9541 x9542 x9543 x9367 x9544 x9551 x9550 x9549 (not x9548) x170 x169 (not x9560))
+(or x9616 (not x9538))
+(or x9616 (not x9539))
+(or x9616 (not x9540))
+(or x9616 (not x9541))
+(or x9616 (not x9542))
+(or x9616 (not x9543))
+(or x9616 (not x9367))
+(or x9616 (not x9544))
+(or x9616 (not x9551))
+(or x9616 (not x9550))
+(or x9616 (not x9549))
+(or x9616 x9548)
+(or x9616 (not x170))
+(or x9616 (not x169))
+(or x9616 x9566)
+(or x9616 x9567)
+(or x9616 (not x9615))
+(or x9538 x9539 x9540 x9541 x9542 x9543 x9367 x9544 x9551 x9550 x9549 (not x9548) x170 x169 (not x9566) (not x9567) x9615 (not x9616))
+(or x9559 (not x9538))
+(or x9559 (not x9539))
+(or x9559 (not x9540))
+(or x9559 (not x9541))
+(or x9559 (not x9542))
+(or x9559 (not x9543))
+(or x9559 (not x9367))
+(or x9559 (not x9551))
+(or x9559 (not x9550))
+(or x9559 (not x9549))
+(or x9559 x9548)
+(or x9559 (not x170))
+(or x9559 x169)
+(or x9538 x9539 x9540 x9541 x9542 x9543 x9367 x9551 x9550 x9549 (not x9548) x170 (not x169) (not x9559))
+(or x9617 x9572)
+(or x9617 (not x9573))
+(or (not x9572) x9573 (not x9617))
+(or (not x9617) (not x9572) x9618)
+(or (not x9618) x9617)
+(or (not x9618) x9572)
+(or x9558 (not x9538))
+(or x9558 (not x9539))
+(or x9558 (not x9540))
+(or x9558 (not x9541))
+(or x9558 (not x9542))
+(or x9558 (not x9543))
+(or x9558 (not x9551))
+(or x9558 (not x9550))
+(or x9558 x9549)
+(or x9558 x9548)
+(or x9538 x9539 x9540 x9541 x9542 x9543 x9551 x9550 (not x9549) (not x9548) (not x9558))
+(or x9619 (not x9538))
+(or x9619 (not x9539))
+(or x9619 (not x9540))
+(or x9619 (not x9541))
+(or x9619 (not x9542))
+(or x9619 (not x9543))
+(or x9619 (not x9551))
+(or x9619 (not x9550))
+(or x9619 x9549)
+(or x9619 x9548)
+(or x9619 x9571)
+(or x9619 (not x9618))
+(or x9538 x9539 x9540 x9541 x9542 x9543 x9551 x9550 (not x9549) (not x9548) (not x9571) x9618 (not x9619))
+(or x9551 x9550 (not x9549) x9548 (not x9620) x9542)
+(or (not x9542) (not x9551))
+(or (not x9542) (not x9550))
+(or (not x9542) x9549)
+(or (not x9542) (not x9548))
+(or (not x9542) x9620)
+(or x9557 (not x9538))
+(or x9557 (not x9539))
+(or x9557 (not x9540))
+(or x9557 (not x9541))
+(or x9557 (not x9542))
+(or x9557 (not x9551))
+(or x9557 (not x9550))
+(or x9557 x9549)
+(or x9557 (not x9548))
+(or x9538 x9539 x9540 x9541 x9542 x9551 x9550 (not x9549) x9548 (not x9557))
+(or x9621 x9576)
+(or x9621 x9577)
+(or x9621 x9602)
+(or x9621 x9622)
+(or (not x9576) (not x9577) (not x9602) (not x9622) (not x9621))
+(or (not x9621) (not x9576) x9623)
+(or (not x9623) x9621)
+(or (not x9623) x9576)
+(or x9551 x9550 (not x9549) x9548 (not x169) (not x170) x9541)
+(or (not x9541) (not x9551))
+(or (not x9541) (not x9550))
+(or (not x9541) x9549)
+(or (not x9541) (not x9548))
+(or (not x9541) x169)
+(or (not x9541) x170)
+(or x9556 (not x9538))
+(or x9556 (not x9539))
+(or x9556 (not x9540))
+(or x9556 (not x9541))
+(or x9556 (not x9551))
+(or x9556 (not x9550))
+(or x9556 x9549)
+(or x9556 (not x9548))
+(or x9556 (not x9575))
+(or x9538 x9539 x9540 x9541 x9551 x9550 (not x9549) x9548 x9575 (not x9556))
+(or x9624 (not x9538))
+(or x9624 (not x9539))
+(or x9624 (not x9540))
+(or x9624 (not x9541))
+(or x9624 (not x9551))
+(or x9624 (not x9550))
+(or x9624 x9549)
+(or x9624 (not x9548))
+(or x9624 (not x9575))
+(or x9624 (not x9623))
+(or x9538 x9539 x9540 x9541 x9551 x9550 (not x9549) x9548 x9575 x9623 (not x9624))
+(or x9555 (not x9538))
+(or x9555 (not x9539))
+(or x9555 (not x9540))
+(or x9555 (not x9551))
+(or x9555 (not x9550))
+(or x9555 x9549)
+(or x9555 (not x9548))
+(or x9555 x169)
+(or x9555 x170)
+(or x9538 x9539 x9540 x9551 x9550 (not x9549) x9548 (not x169) (not x170) (not x9555))
+(or x9551 x9550 x9549 x9548 x169 (not x9144) (not x9143) (not x9620) (not x9523) (not x9524) x9539)
+(or (not x9539) (not x9551))
+(or (not x9539) (not x9550))
+(or (not x9539) (not x9549))
+(or (not x9539) (not x9548))
+(or (not x9539) (not x169))
+(or (not x9539) x9144)
+(or (not x9539) x9143)
+(or (not x9539) x9620)
+(or (not x9539) x9523)
+(or (not x9539) x9524)
+(or x9554 (not x9538))
+(or x9554 (not x9539))
+(or x9554 (not x9551))
+(or x9554 (not x9550))
+(or x9554 (not x9549))
+(or x9554 (not x9548))
+(or x9554 (not x169))
+(or x9554 x9144)
+(or x9554 x9143)
+(or x9538 x9539 x9551 x9550 x9549 x9548 x169 (not x9144) (not x9143) (not x9554))
+(or (not x9314) (not x9356) x9475)
+(or (not x9475) x9314)
+(or (not x9475) x9356)
+(or (not x9251) (not x9252) (not x9361) x9474)
+(or (not x9474) x9251)
+(or (not x9474) x9252)
+(or (not x9474) x9361)
+(or x9526 (not x9474))
+(or x9526 (not x9475))
+(or x9474 x9475 (not x9526))
+(or (not x9418) (not x9417) x9416)
+(or (not x9416) x9418)
+(or (not x9416) x9417)
+(or (not x9418) x9417 x9415)
+(or (not x9415) x9418)
+(or (not x9415) (not x9417))
+(or x9418 (not x9417) x9414)
+(or (not x9414) (not x9418))
+(or (not x9414) x9417)
+(or (not x168) x169 x9128)
+(or (not x9128) x168)
+(or (not x9128) (not x169))
+(or x9418 x9417 (not x168) x169 x9625)
+(or (not x9625) (not x9418))
+(or (not x9625) (not x9417))
+(or (not x9625) x168)
+(or (not x9625) (not x169))
+(or x9620 (not x9625))
+(or x9620 (not x9414))
+(or x9620 (not x9415))
+(or x9620 (not x9416))
+(or x9625 x9414 x9415 x9416 (not x9620))
+(or x9551 x9550 x9549 x9548 x169 (not x9144) (not x9143) x9540)
+(or (not x9540) (not x9551))
+(or (not x9540) (not x9550))
+(or (not x9540) (not x9549))
+(or (not x9540) (not x9548))
+(or (not x9540) (not x169))
+(or (not x9540) x9144)
+(or (not x9540) x9143)
+(or x9551 x9550 x9549 x9548 x169 (not x9144) (not x9143) (not x9620) (not x9526) x9538)
+(or (not x9538) (not x9551))
+(or (not x9538) (not x9550))
+(or (not x9538) (not x9549))
+(or (not x9538) (not x9548))
+(or (not x9538) (not x169))
+(or (not x9538) x9144)
+(or (not x9538) x9143)
+(or (not x9538) x9620)
+(or (not x9538) x9526)
+(or x9553 (not x9538))
+(or x9553 (not x9551))
+(or x9553 (not x9550))
+(or x9553 (not x9549))
+(or x9553 (not x9548))
+(or x9553 (not x169))
+(or x9553 x9144)
+(or x9553 x9143)
+(or x9553 (not x9575))
+(or x9553 (not x9474))
+(or x9553 (not x9475))
+(or x9538 x9551 x9550 x9549 x9548 x169 (not x9144) (not x9143) x9575 x9474 x9475 (not x9553))
+(or x9626 (not x9538))
+(or x9626 (not x9551))
+(or x9626 (not x9550))
+(or x9626 (not x9549))
+(or x9626 (not x9548))
+(or x9626 (not x169))
+(or x9626 x9144)
+(or x9626 x9143)
+(or x9626 (not x9575))
+(or x9626 (not x9474))
+(or x9626 (not x9475))
+(or x9626 x9579)
+(or x9626 x9627)
+(or x9538 x9551 x9550 x9549 x9548 x169 (not x9144) (not x9143) x9575 x9474 x9475 (not x9579) (not x9627) (not x9626))
+(or x9628 x9582)
+(or x9628 x9583)
+(or (not x9582) (not x9583) (not x9628))
+(or (not x9628) (not x9582) x9629)
+(or (not x9629) x9628)
+(or (not x9629) x9582)
+(or x9264 (not x9250))
+(or x9264 (not x9194))
+(or x9250 x9194 (not x9264))
+(or x9252 (not x9293))
+(or x9252 x9274)
+(or x9252 (not x9275))
+(or x9252 (not x9276))
+(or x9252 (not x9277))
+(or x9252 (not x9279))
+(or x9252 (not x9226))
+(or x9252 (not x9280))
+(or x9252 (not x9281))
+(or x9252 (not x9187))
+(or x9252 (not x9282))
+(or x9252 (not x9250))
+(or x9252 (not x9194))
+(or x9293 (not x9274) x9275 x9276 x9277 x9279 x9226 x9280 x9281 x9187 x9282 x9250 x9194 (not x9252))
+(or x9377 (not x9274))
+(or x9377 (not x9275))
+(or x9274 x9275 (not x9377))
+(or x9375 (not x9274))
+(or x9375 (not x9275))
+(or x9375 (not x9276))
+(or x9375 (not x9277))
+(or x9274 x9275 x9276 x9277 (not x9375))
+(or x9387 (not x9280))
+(or x9387 (not x9281))
+(or x9280 x9281 (not x9387))
+(or x9383 (not x9250))
+(or x9383 (not x9280))
+(or x9383 (not x9281))
+(or x9250 x9280 x9281 (not x9383))
+(or x9388 (not x9194))
+(or x9388 (not x9250))
+(or x9388 (not x9280))
+(or x9388 (not x9281))
+(or x9194 x9250 x9280 x9281 (not x9388))
+(or x9382 (not x9279))
+(or x9382 (not x9194))
+(or x9382 (not x9250))
+(or x9382 (not x9280))
+(or x9382 (not x9281))
+(or x9279 x9194 x9250 x9280 x9281 (not x9382))
+(or x9251 (not x9279))
+(or x9251 (not x9194))
+(or x9251 (not x9250))
+(or x9251 (not x9280))
+(or x9251 (not x9281))
+(or x9251 (not x9293))
+(or x9251 (not x9187))
+(or x9251 x9282)
+(or x9251 (not x9226))
+(or x9251 (not x9274))
+(or x9251 (not x9275))
+(or x9251 (not x9276))
+(or x9251 (not x9277))
+(or x9279 x9194 x9250 x9280 x9281 x9293 x9187 (not x9282) x9226 x9274 x9275 x9276 x9277 (not x9251))
+(or (not x9251) (not x9252) x9630)
+(or (not x9630) x9251)
+(or (not x9630) x9252)
+(or x9524 (not x9630))
+(or x9524 x9356)
+(or x9630 (not x9356) (not x9524))
+(or x9250 x9194 x9259)
+(or (not x9259) (not x9250))
+(or (not x9259) (not x9194))
+(or x9293 (not x9274) x9275 x9276 x9277 x9279 x9226 x9280 x9281 x9187 x9282 x9250 x9194 x9243)
+(or (not x9243) (not x9293))
+(or (not x9243) x9274)
+(or (not x9243) (not x9275))
+(or (not x9243) (not x9276))
+(or (not x9243) (not x9277))
+(or (not x9243) (not x9279))
+(or (not x9243) (not x9226))
+(or (not x9243) (not x9280))
+(or (not x9243) (not x9281))
+(or (not x9243) (not x9187))
+(or (not x9243) (not x9282))
+(or (not x9243) (not x9250))
+(or (not x9243) (not x9194))
+(or x9274 x9275 x9319)
+(or (not x9319) (not x9274))
+(or (not x9319) (not x9275))
+(or x9274 x9275 x9276 x9277 x9316)
+(or (not x9316) (not x9274))
+(or (not x9316) (not x9275))
+(or (not x9316) (not x9276))
+(or (not x9316) (not x9277))
+(or x9280 x9281 x9330)
+(or (not x9330) (not x9280))
+(or (not x9330) (not x9281))
+(or x9250 x9280 x9281 x9324)
+(or (not x9324) (not x9250))
+(or (not x9324) (not x9280))
+(or (not x9324) (not x9281))
+(or x9194 x9250 x9280 x9281 x9331)
+(or (not x9331) (not x9194))
+(or (not x9331) (not x9250))
+(or (not x9331) (not x9280))
+(or (not x9331) (not x9281))
+(or x9279 x9194 x9250 x9280 x9281 x9323)
+(or (not x9323) (not x9279))
+(or (not x9323) (not x9194))
+(or (not x9323) (not x9250))
+(or (not x9323) (not x9280))
+(or (not x9323) (not x9281))
+(or x9279 x9194 x9250 x9280 x9281 x9293 x9187 (not x9282) x9226 x9274 x9275 x9276 x9277 x9242)
+(or (not x9242) (not x9279))
+(or (not x9242) (not x9194))
+(or (not x9242) (not x9250))
+(or (not x9242) (not x9280))
+(or (not x9242) (not x9281))
+(or (not x9242) (not x9293))
+(or (not x9242) (not x9187))
+(or (not x9242) x9282)
+(or (not x9242) (not x9226))
+(or (not x9242) (not x9274))
+(or (not x9242) (not x9275))
+(or (not x9242) (not x9276))
+(or (not x9242) (not x9277))
+(or x9314 (not x9242))
+(or x9314 (not x9243))
+(or x9242 x9243 (not x9314))
+(or x9523 (not x9242))
+(or x9523 (not x9243))
+(or x9523 x9361)
+(or x9242 x9243 (not x9361) (not x9523))
+(or (not x9523) (not x9524) x9486)
+(or (not x9486) x9523)
+(or (not x9486) x9524)
+(or x9631 x9418)
+(or x9631 x9417)
+(or (not x9418) (not x9417) (not x9631))
+(or x9632 x9418)
+(or x9632 (not x9417))
+(or (not x9418) x9417 (not x9632))
+(or x9633 (not x9418))
+(or x9633 x9417)
+(or x9418 (not x9417) (not x9633))
+(or x9168 x168)
+(or x9168 (not x169))
+(or (not x168) x169 (not x9168))
+(or x9634 (not x9418))
+(or x9634 (not x9417))
+(or x9634 x168)
+(or x9634 (not x169))
+(or x9418 x9417 (not x168) x169 (not x9634))
+(or (not x9634) (not x9633) (not x9632) (not x9631) x9575)
+(or (not x9575) x9634)
+(or (not x9575) x9633)
+(or (not x9575) x9632)
+(or (not x9575) x9631)
+(or x9552 (not x9551))
+(or x9552 (not x9550))
+(or x9552 (not x9549))
+(or x9552 (not x9548))
+(or x9552 (not x169))
+(or x9552 x9144)
+(or x9552 x9143)
+(or x9552 (not x9575))
+(or x9552 (not x9486))
+(or x9551 x9550 x9549 x9548 x169 (not x9144) (not x9143) x9575 x9486 (not x9552))
+(or x9635 (not x9551))
+(or x9635 (not x9550))
+(or x9635 (not x9549))
+(or x9635 (not x9548))
+(or x9635 (not x169))
+(or x9635 x9144)
+(or x9635 x9143)
+(or x9635 (not x9575))
+(or x9635 (not x9486))
+(or x9635 x9586)
+(or x9635 x9581)
+(or x9635 (not x9629))
+(or x9551 x9550 x9549 x9548 x169 (not x9144) (not x9143) x9575 x9486 (not x9586) (not x9581) x9629 (not x9635))
+(or (not x9635) (not x9626) (not x9554) (not x9555) (not x9624) (not x9557) (not x9619) (not x9559) (not x9616) (not x9562) (not x9611) x9636)
+(or (not x9636) x9635)
+(or (not x9636) x9626)
+(or (not x9636) x9554)
+(or (not x9636) x9555)
+(or (not x9636) x9624)
+(or (not x9636) x9557)
+(or (not x9636) x9619)
+(or (not x9636) x9559)
+(or (not x9636) x9616)
+(or (not x9636) x9562)
+(or (not x9636) x9611)
+(or x9637 (not x9638))
+(or x9637 (not x9208))
+(or x9637 (not x9639))
+(or x9637 (not x9214))
+(or x9638 x9208 x9639 x9214 (not x9637))
+(or x9640 (not x9638))
+(or x9640 (not x9208))
+(or x9640 x9214)
+(or x9640 (not x9213))
+(or x9640 (not x9212))
+(or x9640 x9211)
+(or x9640 x9187)
+(or x9640 x9641)
+(or x9638 x9208 (not x9214) x9213 x9212 (not x9211) (not x9187) (not x9641) (not x9640))
+(or x9642 (not x9214))
+(or x9642 x9213)
+(or x9642 x9212)
+(or x9642 x9211)
+(or x9642 x9144)
+(or x9642 x9143)
+(or x9642 x9643)
+(or x9642 x9644)
+(or x9214 (not x9213) (not x9212) (not x9211) (not x9144) (not x9143) (not x9643) (not x9644) (not x9642))
+(or (not x9642) (not x9640) (not x9637) x9645)
+(or (not x9645) x9642)
+(or (not x9645) x9640)
+(or (not x9645) x9637)
+(or x9646 (not x9638))
+(or x9646 (not x9208))
+(or x9646 (not x9639))
+(or x9646 (not x9213))
+(or x9638 x9208 x9639 x9213 (not x9646))
+(or (not x9647) (not x9648) (not x9649) (not x9646) x9650)
+(or (not x9650) x9647)
+(or (not x9650) x9648)
+(or (not x9650) x9649)
+(or (not x9650) x9646)
+(or x9651 (not x9638))
+(or x9651 (not x9208))
+(or x9651 (not x9639))
+(or x9651 (not x9212))
+(or x9638 x9208 x9639 x9212 (not x9651))
+(or x9224 x9214)
+(or x9224 (not x9213))
+(or x9224 (not x9212))
+(or x9224 (not x9211))
+(or (not x9214) x9213 x9212 x9211 (not x9224))
+(or x9648 (not x9638))
+(or x9648 x9214)
+(or x9648 (not x9213))
+(or x9648 (not x9212))
+(or x9648 (not x9211))
+(or x9638 (not x9214) x9213 x9212 x9211 (not x9648))
+(or (not x9647) (not x9648) (not x9649) (not x9651) x9652)
+(or (not x9652) x9647)
+(or (not x9652) x9648)
+(or (not x9652) x9649)
+(or (not x9652) x9651)
+(or (not x9214) x9213 x9212 (not x9211) (not x9187) x9639)
+(or (not x9639) x9214)
+(or (not x9639) (not x9213))
+(or (not x9639) (not x9212))
+(or (not x9639) x9211)
+(or (not x9639) x9187)
+(or x9653 (not x9638))
+(or x9653 (not x9208))
+(or x9653 (not x9639))
+(or x9653 (not x9211))
+(or x9638 x9208 x9639 x9211 (not x9653))
+(or x9214 (not x9213) (not x9212) (not x9211) (not x9144) (not x9143) (not x9643) x9638)
+(or (not x9638) (not x9214))
+(or (not x9638) x9213)
+(or (not x9638) x9212)
+(or (not x9638) x9211)
+(or (not x9638) x9144)
+(or (not x9638) x9143)
+(or (not x9638) x9643)
+(or x9649 (not x9638))
+(or x9649 (not x9208))
+(or x9649 x9214)
+(or x9649 (not x9213))
+(or x9649 (not x9212))
+(or x9649 x9211)
+(or x9649 x9187)
+(or x9649 (not x9641))
+(or x9638 x9208 (not x9214) x9213 x9212 (not x9211) (not x9187) x9641 (not x9649))
+(or x9647 (not x9214))
+(or x9647 x9213)
+(or x9647 x9212)
+(or x9647 x9211)
+(or x9647 x9144)
+(or x9647 x9143)
+(or x9647 x9643)
+(or x9647 (not x9644))
+(or x9214 (not x9213) (not x9212) (not x9211) (not x9144) (not x9143) (not x9643) x9644 (not x9647))
+(or (not x9647) (not x9649) (not x9653) x9654)
+(or (not x9654) x9647)
+(or (not x9654) x9649)
+(or (not x9654) x9653)
+(or (not x9643) (not x9655) (not x9187) x9656)
+(or (not x9656) x9643)
+(or (not x9656) x9655)
+(or (not x9656) x9187)
+(or x9657 x9643)
+(or x9657 (not x9656))
+(or x9657 (not x9643))
+(or (not x9643) x9656 x9643 (not x9657))
+(or x9658 x9643)
+(or x9658 x9643)
+(or x9658 x9655)
+(or x9658 x9187)
+(or x9658 x9659)
+(or (not x9643) (not x9643) (not x9655) (not x9187) (not x9659) (not x9658))
+(or x9660 x9661)
+(or x9660 x9662)
+(or (not x9661) (not x9662) (not x9660))
+(or (not x9660) (not x9661) x9663)
+(or (not x9663) x9660)
+(or (not x9663) x9661)
+(or x9664 (not x9643))
+(or x9664 x9665)
+(or x9664 (not x9663))
+(or x9643 (not x9665) x9663 (not x9664))
+(or (not x9664) (not x9658) (not x9657) x9666)
+(or (not x9666) x9664)
+(or (not x9666) x9658)
+(or (not x9666) x9657)
+(or x9295 (not x9347))
+(or x9295 (not x9348))
+(or x9295 (not x9349))
+(or x9295 (not x9350))
+(or x9295 (not x9351))
+(or x9295 (not x9352))
+(or x9347 x9348 x9349 x9350 x9351 x9352 (not x9295))
+(or x9299 (not x9446))
+(or x9299 x9445)
+(or x9299 x9444)
+(or x9299 (not x9443))
+(or x9446 (not x9445) (not x9444) x9443 (not x9299))
+(or x9335 (not x9446))
+(or x9335 x9445)
+(or x9335 (not x9444))
+(or x9335 x9443)
+(or x9446 (not x9445) x9444 (not x9443) (not x9335))
+(or x9298 (not x9446))
+(or x9298 (not x9445))
+(or x9298 (not x9444))
+(or x9298 x9443)
+(or x9446 x9445 x9444 (not x9443) (not x9298))
+(or x9667 (not x9446))
+(or x9667 (not x9445))
+(or x9667 x9444)
+(or x9667 x9443)
+(or x9446 x9445 (not x9444) (not x9443) (not x9667))
+(or x9297 (not x9551))
+(or x9297 x9550)
+(or x9297 x9549)
+(or x9297 (not x9548))
+(or x9551 (not x9550) (not x9549) x9548 (not x9297))
+(or x9333 (not x9551))
+(or x9333 x9550)
+(or x9333 (not x9549))
+(or x9333 x9548)
+(or x9551 (not x9550) x9549 (not x9548) (not x9333))
+(or x9296 (not x9551))
+(or x9296 (not x9550))
+(or x9296 (not x9549))
+(or x9296 x9548)
+(or x9551 x9550 x9549 (not x9548) (not x9296))
+(or x9668 (not x9551))
+(or x9668 (not x9550))
+(or x9668 x9549)
+(or x9668 x9548)
+(or x9551 x9550 (not x9549) (not x9548) (not x9668))
+(or (not x9668) (not x9296) (not x9333) (not x9297) (not x9667) (not x9298) (not x9335) (not x9299) x9669)
+(or (not x9669) x9668)
+(or (not x9669) x9296)
+(or (not x9669) x9333)
+(or (not x9669) x9297)
+(or (not x9669) x9667)
+(or (not x9669) x9298)
+(or (not x9669) x9335)
+(or (not x9669) x9299)
+(or (not x9668) (not x9296) (not x9333) (not x9297) (not x9667) (not x9298) (not x9335) (not x9299) x9238 x9239 x9427)
+(or (not x9427) x9668)
+(or (not x9427) x9296)
+(or (not x9427) x9333)
+(or (not x9427) x9297)
+(or (not x9427) x9667)
+(or (not x9427) x9298)
+(or (not x9427) x9335)
+(or (not x9427) x9299)
+(or (not x9427) (not x9238))
+(or (not x9427) (not x9239))
+(or x9285 (not x9427))
+(or x9285 (not x9368))
+(or x9285 (not x9348))
+(or x9285 (not x9370))
+(or x9285 (not x9351))
+(or x9427 x9368 x9348 x9370 x9351 (not x9285))
+(or x9670 (not x9427))
+(or x9670 (not x9368))
+(or x9670 (not x9348))
+(or x9670 (not x9370))
+(or x9670 (not x9351))
+(or x9670 (not x9347))
+(or x9670 (not x9348))
+(or x9670 (not x9349))
+(or x9670 (not x9350))
+(or x9670 (not x9351))
+(or x9670 (not x9352))
+(or x9670 x9250)
+(or x9427 x9368 x9348 x9370 x9351 x9347 x9348 x9349 x9350 x9351 x9352 (not x9250) (not x9670))
+(or (not x9670) (not x9426) x9671)
+(or (not x9671) x9670)
+(or (not x9671) x9426)
+(or (not x9672) x9214)
+(or (not x9672) (not x9213))
+(or (not x9672) (not x9212))
+(or (not x9672) x9211)
+(or (not x9214) x9213 x9212 x9211 x9208)
+(or (not x9208) x9214)
+(or (not x9208) (not x9213))
+(or (not x9208) (not x9212))
+(or (not x9208) (not x9211))
+(or (not x9673) (not x9214))
+(or (not x9673) x9213)
+(or (not x9673) x9212)
+(or (not x9673) x9211)
+(or x9674 (not x9673))
+(or x9674 (not x9208))
+(or x9673 x9208 (not x9674))
+(or x9446 (not x9445) (not x9444) x9443 x9351)
+(or (not x9351) (not x9446))
+(or (not x9351) x9445)
+(or (not x9351) x9444)
+(or (not x9351) (not x9443))
+(or x9446 (not x9445) x9444 (not x9443) x9352)
+(or (not x9352) (not x9446))
+(or (not x9352) x9445)
+(or (not x9352) (not x9444))
+(or (not x9352) x9443)
+(or x9446 (not x9445) x9444 x9443 x9350)
+(or (not x9350) (not x9446))
+(or (not x9350) x9445)
+(or (not x9350) (not x9444))
+(or (not x9350) (not x9443))
+(or x9446 x9445 (not x9444) (not x9443) x9369)
+(or (not x9369) (not x9446))
+(or (not x9369) (not x9445))
+(or (not x9369) x9444)
+(or (not x9369) x9443)
+(or x9446 x9445 (not x9444) x9443 x9438)
+(or (not x9438) (not x9446))
+(or (not x9438) (not x9445))
+(or (not x9438) x9444)
+(or (not x9438) (not x9443))
+(or x9446 x9445 x9444 (not x9443) x9370)
+(or (not x9370) (not x9446))
+(or (not x9370) (not x9445))
+(or (not x9370) (not x9444))
+(or (not x9370) x9443)
+(or (not x9675) (not x9446))
+(or (not x9675) (not x9445))
+(or (not x9675) (not x9444))
+(or (not x9675) (not x9443))
+(or x9676 (not x9675))
+(or x9676 (not x9370))
+(or x9676 (not x9438))
+(or x9676 (not x9369))
+(or x9676 (not x9350))
+(or x9676 (not x9352))
+(or x9675 x9370 x9438 x9369 x9350 x9352 (not x9676))
+(or x9551 (not x9550) (not x9549) x9548 x9348)
+(or (not x9348) (not x9551))
+(or (not x9348) x9550)
+(or (not x9348) x9549)
+(or (not x9348) (not x9548))
+(or x9551 (not x9550) x9549 (not x9548) x9349)
+(or (not x9349) (not x9551))
+(or (not x9349) x9550)
+(or (not x9349) (not x9549))
+(or (not x9349) x9548)
+(or x9551 (not x9550) x9549 x9548 x9347)
+(or (not x9347) (not x9551))
+(or (not x9347) x9550)
+(or (not x9347) (not x9549))
+(or (not x9347) (not x9548))
+(or x9551 x9550 (not x9549) (not x9548) x9367)
+(or (not x9367) (not x9551))
+(or (not x9367) (not x9550))
+(or (not x9367) x9549)
+(or (not x9367) x9548)
+(or x9551 x9550 (not x9549) x9548 x9543)
+(or (not x9543) (not x9551))
+(or (not x9543) (not x9550))
+(or (not x9543) x9549)
+(or (not x9543) (not x9548))
+(or x9551 x9550 x9549 (not x9548) x9368)
+(or (not x9368) (not x9551))
+(or (not x9368) (not x9550))
+(or (not x9368) (not x9549))
+(or (not x9368) x9548)
+(or (not x9677) (not x9551))
+(or (not x9677) (not x9550))
+(or (not x9677) (not x9549))
+(or (not x9677) (not x9548))
+(or x9678 (not x9677))
+(or x9678 (not x9368))
+(or x9678 (not x9543))
+(or x9678 (not x9367))
+(or x9678 (not x9347))
+(or x9678 (not x9349))
+(or x9677 x9368 x9543 x9367 x9347 x9349 (not x9678))
+(or x9679 (not x9680) x9681)
+(or (not x9681) (not x9679))
+(or (not x9681) x9680)
+(or x9679 (not x9680) (not x9682) x9683)
+(or (not x9683) (not x9679))
+(or (not x9683) x9680)
+(or (not x9683) x9682)
+(or x9682 (not x9679))
+(or x9682 (not x9684))
+(or x9679 x9684 (not x9682))
+(or x9679 (not x9682) x9685)
+(or (not x9685) (not x9679))
+(or (not x9685) x9682)
+(or x9680 (not x9679))
+(or x9680 x9684)
+(or x9679 (not x9684) (not x9680))
+(or (not x9643))
+(or x9211)
+(or x9212)
+(or x9213)
+(or (not x9214))
+(or (not x9548))
+(or (not x9549))
+(or (not x9550))
+(or (not x9551))
+(or (not x9443))
+(or (not x9444))
+(or (not x9445))
+(or (not x9446))
+(or (not x9143))
+(or (not x9144))
+(or (not x168))
+(or (not x9655))
+(or (not x9417))
+(or (not x9418))
+(or (not x9404))
+(or (not x9405))
+(or (not x9280))
+(or (not x9281))
+(or (not x9276))
+(or (not x9277))
+(or (not x9187))
+(or (not x9426))
+(or (not x9250))
+(or (not x9361))
+(or (not x9356))
+(or (not x9260))
+(or (not x9279))
+(or (not x9282))
+(or (not x9274))
+(or (not x9226))
+(or (not x9275))
+(or (not x9278))
+(or (not x9196))
+(or (not x9194))
+(or (not x9197))
+(or (not x9261))
+(or (not x9238))
+(or (not x9239))
+(or (not x9195))
+(or (not x9225))
+(or (not x9209))
+(or (not x9204))
+(or (not x9186))
+(or (not x164) x9680)
+(or x164 (not x9680))
+(or (not x165) x9685)
+(or x165 (not x9685))
+(or (not x166) x9683)
+(or x166 (not x9683))
+(or (not x167) x9681)
+(or x167 (not x9681))
+(or x9678 x9348)
+(or x9676 x9351)
+(or x9674 x9672)
+(or (not x167) (not x166) (not x165) (not x164))
+(or (not x167) (not x166) (not x165) x164)
+(or (not x161) x9671)
+(or x161 (not x9671))
+(or (not x9085) x9666)
+(or x9085 (not x9666))
+(or (not x8653) x9654)
+(or x8653 (not x9654))
+(or (not x8654) x9652)
+(or x8654 (not x9652))
+(or (not x8655) x9650)
+(or x8655 (not x9650))
+(or (not x8656) x9645)
+(or x8656 (not x9645))
+(or (not x8990) x9636)
+(or x8990 (not x9636))
+(or (not x8991) x9609)
+(or x8991 (not x9609))
+(or (not x8992) x9589)
+(or x8992 (not x9589))
+(or (not x8993) x9563)
+(or x8993 (not x9563))
+(or (not x8885) x9536)
+(or x8885 (not x9536))
+(or (not x8886) x9507)
+(or x8886 (not x9507))
+(or (not x8887) x9487)
+(or x8887 (not x9487))
+(or (not x8888) x9458)
+(or x8888 (not x9458))
+(or (not x8585) x9431)
+(or x8585 (not x9431))
+(or (not x8586) x9429)
+(or x8586 (not x9429))
+(or (not x159) x169)
+(or x159 (not x169))
+(or (not x160) x9428)
+(or x160 (not x9428))
+(or (not x9097) (not x9187))
+(or x9097 x9187)
+(or (not x8859) x9424)
+(or x8859 (not x9424))
+(or (not x8860) x9421)
+(or x8860 (not x9421))
+(or (not x8846) x9411)
+(or x8846 (not x9411))
+(or (not x8847) x9408)
+(or x8847 (not x9408))
+(or (not x8722) x9398)
+(or x8722 (not x9398))
+(or (not x8723) x9394)
+(or x8723 (not x9394))
+(or (not x8718) x9393)
+(or x8718 (not x9393))
+(or (not x8719) x9390)
+(or x8719 (not x9390))
+(or (not x8629) x9389)
+(or x8629 (not x9389))
+(or (not x8868) x9428)
+(or x8868 (not x9428))
+(or (not x8692) x9374)
+(or x8692 (not x9374))
+(or (not x8803) x9363)
+(or x8803 (not x9363))
+(or (not x8798) x9360)
+(or x8798 (not x9360))
+(or (not x8702) x9355)
+(or x8702 (not x9355))
+(or (not x8721) x9315)
+(or x8721 (not x9315))
+(or (not x8724) x9313)
+(or x8724 (not x9313))
+(or (not x8716) x9306)
+(or x8716 (not x9306))
+(or (not x8668) x9300)
+(or x8668 (not x9300))
+(or (not x8717) x9294)
+(or x8717 (not x9294))
+(or (not x8720) x9427)
+(or x8720 (not x9427))
+(or (not x8638) x9365)
+(or x8638 (not x9365))
+(or (not x8636) x9287)
+(or x8636 (not x9287))
+(or (not x8639) x9269)
+(or x8639 (not x9269))
+(or (not x8703) x9268)
+(or x8703 (not x9268))
+(or (not x8680) x9256)
+(or x8680 (not x9256))
+(or (not x8681) x9249)
+(or x8681 (not x9249))
+(or (not x8637) x9669)
+(or x8637 (not x9669))
+(or (not x8667) x9237)
+(or x8667 (not x9237))
+(or (not x8651) x9221)
+(or x8651 (not x9221))
+(or (not x8646) x9206)
+(or x8646 (not x9206))
+(or (not x8628) x9192)
+(or x8628 (not x9192))
+(or (not x155) x9185)
+(or x155 (not x9185))
+(or (not x156) x9167)
+(or x156 (not x9167))
+(or (not x157) x9155)
+(or x157 (not x9155))
+(or (not x158) x9139)
+(or x158 (not x9139))
+(or x9678 x9348)
+(or x9676 x9351)
+(or x9674 x9672)
+(or (not x167) (not x166) (not x165) (not x164))
+(or (not x167) (not x166) (not x165) x164)
+(or x9120 x8790)
+(or x9118 x8793)
+(or x9116 x9114)
+(or (not x158) (not x157) (not x156) (not x155))
+(or (not x158) (not x157) (not x156) x155)
+(or (not x152) x9113)
+(or x152 (not x9113))
+(or (not x8527) x9108)
+(or x8527 (not x9108))
+(or (not x8095) x9096)
+(or x8095 (not x9096))
+(or (not x8096) x9094)
+(or x8096 (not x9094))
+(or (not x8097) x9092)
+(or x8097 (not x9092))
+(or (not x8098) x9087)
+(or x8098 (not x9087))
+(or (not x8432) x9078)
+(or x8432 (not x9078))
+(or (not x8433) x9051)
+(or x8433 (not x9051))
+(or (not x8434) x9031)
+(or x8434 (not x9031))
+(or (not x8435) x9005)
+(or x8435 (not x9005))
+(or (not x8327) x8978)
+(or x8327 (not x8978))
+(or (not x8328) x8949)
+(or x8328 (not x8949))
+(or (not x8329) x8929)
+(or x8329 (not x8929))
+(or (not x8330) x8900)
+(or x8330 (not x8900))
+(or (not x8027) x8873)
+(or x8027 (not x8873))
+(or (not x8028) x8871)
+(or x8028 (not x8871))
+(or (not x150) x160)
+(or x150 (not x160))
+(or (not x151) x8870)
+(or x151 (not x8870))
+(or (not x8539) (not x8629))
+(or x8539 x8629)
+(or (not x8301) x8866)
+(or x8301 (not x8866))
+(or (not x8302) x8863)
+(or x8302 (not x8863))
+(or (not x8288) x8853)
+(or x8288 (not x8853))
+(or (not x8289) x8850)
+(or x8289 (not x8850))
+(or (not x8164) x8840)
+(or x8164 (not x8840))
+(or (not x8165) x8836)
+(or x8165 (not x8836))
+(or (not x8160) x8835)
+(or x8160 (not x8835))
+(or (not x8161) x8832)
+(or x8161 (not x8832))
+(or (not x8071) x8831)
+(or x8071 (not x8831))
+(or (not x8310) x8870)
+(or x8310 (not x8870))
+(or (not x8134) x8816)
+(or x8134 (not x8816))
+(or (not x8245) x8805)
+(or x8245 (not x8805))
+(or (not x8240) x8802)
+(or x8240 (not x8802))
+(or (not x8144) x8797)
+(or x8144 (not x8797))
+(or (not x8163) x8757)
+(or x8163 (not x8757))
+(or (not x8166) x8755)
+(or x8166 (not x8755))
+(or (not x8158) x8748)
+(or x8158 (not x8748))
+(or (not x8110) x8742)
+(or x8110 (not x8742))
+(or (not x8159) x8736)
+(or x8159 (not x8736))
+(or (not x8162) x8869)
+(or x8162 (not x8869))
+(or (not x8080) x8807)
+(or x8080 (not x8807))
+(or (not x8078) x8729)
+(or x8078 (not x8729))
+(or (not x8081) x8711)
+(or x8081 (not x8711))
+(or (not x8145) x8710)
+(or x8145 (not x8710))
+(or (not x8122) x8698)
+(or x8122 (not x8698))
+(or (not x8123) x8691)
+(or x8123 (not x8691))
+(or (not x8079) x9111)
+(or x8079 (not x9111))
+(or (not x8109) x8679)
+(or x8109 (not x8679))
+(or (not x8093) x8663)
+(or x8093 (not x8663))
+(or (not x8088) x8648)
+(or x8088 (not x8648))
+(or (not x8070) x8634)
+(or x8070 (not x8634))
+(or (not x146) x8627)
+(or x146 (not x8627))
+(or (not x147) x8609)
+(or x147 (not x8609))
+(or (not x148) x8597)
+(or x148 (not x8597))
+(or (not x149) x8581)
+(or x149 (not x8581))
+(or x9120 x8790)
+(or x9118 x8793)
+(or x9116 x9114)
+(or (not x158) (not x157) (not x156) (not x155))
+(or (not x158) (not x157) (not x156) x155)
+(or x8562 x8232)
+(or x8560 x8235)
+(or x8558 x8556)
+(or (not x149) (not x148) (not x147) (not x146))
+(or (not x149) (not x148) (not x147) x146)
+(or (not x143) x8555)
+(or x143 (not x8555))
+(or (not x7969) x8550)
+(or x7969 (not x8550))
+(or (not x7537) x8538)
+(or x7537 (not x8538))
+(or (not x7538) x8536)
+(or x7538 (not x8536))
+(or (not x7539) x8534)
+(or x7539 (not x8534))
+(or (not x7540) x8529)
+(or x7540 (not x8529))
+(or (not x7874) x8520)
+(or x7874 (not x8520))
+(or (not x7875) x8493)
+(or x7875 (not x8493))
+(or (not x7876) x8473)
+(or x7876 (not x8473))
+(or (not x7877) x8447)
+(or x7877 (not x8447))
+(or (not x7769) x8420)
+(or x7769 (not x8420))
+(or (not x7770) x8391)
+(or x7770 (not x8391))
+(or (not x7771) x8371)
+(or x7771 (not x8371))
+(or (not x7772) x8342)
+(or x7772 (not x8342))
+(or (not x7469) x8315)
+(or x7469 (not x8315))
+(or (not x7470) x8313)
+(or x7470 (not x8313))
+(or (not x141) x151)
+(or x141 (not x151))
+(or (not x142) x8312)
+(or x142 (not x8312))
+(or (not x7981) (not x8071))
+(or x7981 x8071)
+(or (not x7743) x8308)
+(or x7743 (not x8308))
+(or (not x7744) x8305)
+(or x7744 (not x8305))
+(or (not x7730) x8295)
+(or x7730 (not x8295))
+(or (not x7731) x8292)
+(or x7731 (not x8292))
+(or (not x7606) x8282)
+(or x7606 (not x8282))
+(or (not x7607) x8278)
+(or x7607 (not x8278))
+(or (not x7602) x8277)
+(or x7602 (not x8277))
+(or (not x7603) x8274)
+(or x7603 (not x8274))
+(or (not x7513) x8273)
+(or x7513 (not x8273))
+(or (not x7752) x8312)
+(or x7752 (not x8312))
+(or (not x7576) x8258)
+(or x7576 (not x8258))
+(or (not x7687) x8247)
+(or x7687 (not x8247))
+(or (not x7682) x8244)
+(or x7682 (not x8244))
+(or (not x7586) x8239)
+(or x7586 (not x8239))
+(or (not x7605) x8199)
+(or x7605 (not x8199))
+(or (not x7608) x8197)
+(or x7608 (not x8197))
+(or (not x7600) x8190)
+(or x7600 (not x8190))
+(or (not x7552) x8184)
+(or x7552 (not x8184))
+(or (not x7601) x8178)
+(or x7601 (not x8178))
+(or (not x7604) x8311)
+(or x7604 (not x8311))
+(or (not x7522) x8249)
+(or x7522 (not x8249))
+(or (not x7520) x8171)
+(or x7520 (not x8171))
+(or (not x7523) x8153)
+(or x7523 (not x8153))
+(or (not x7587) x8152)
+(or x7587 (not x8152))
+(or (not x7564) x8140)
+(or x7564 (not x8140))
+(or (not x7565) x8133)
+(or x7565 (not x8133))
+(or (not x7521) x8553)
+(or x7521 (not x8553))
+(or (not x7551) x8121)
+(or x7551 (not x8121))
+(or (not x7535) x8105)
+(or x7535 (not x8105))
+(or (not x7530) x8090)
+(or x7530 (not x8090))
+(or (not x7512) x8076)
+(or x7512 (not x8076))
+(or (not x137) x8069)
+(or x137 (not x8069))
+(or (not x138) x8051)
+(or x138 (not x8051))
+(or (not x139) x8039)
+(or x139 (not x8039))
+(or (not x140) x8023)
+(or x140 (not x8023))
+(or x8562 x8232)
+(or x8560 x8235)
+(or x8558 x8556)
+(or (not x149) (not x148) (not x147) (not x146))
+(or (not x149) (not x148) (not x147) x146)
+(or x8004 x7674)
+(or x8002 x7677)
+(or x8000 x7998)
+(or (not x140) (not x139) (not x138) (not x137))
+(or (not x140) (not x139) (not x138) x137)
+(or (not x134) x7997)
+(or x134 (not x7997))
+(or (not x7411) x7992)
+(or x7411 (not x7992))
+(or (not x6979) x7980)
+(or x6979 (not x7980))
+(or (not x6980) x7978)
+(or x6980 (not x7978))
+(or (not x6981) x7976)
+(or x6981 (not x7976))
+(or (not x6982) x7971)
+(or x6982 (not x7971))
+(or (not x7316) x7962)
+(or x7316 (not x7962))
+(or (not x7317) x7935)
+(or x7317 (not x7935))
+(or (not x7318) x7915)
+(or x7318 (not x7915))
+(or (not x7319) x7889)
+(or x7319 (not x7889))
+(or (not x7211) x7862)
+(or x7211 (not x7862))
+(or (not x7212) x7833)
+(or x7212 (not x7833))
+(or (not x7213) x7813)
+(or x7213 (not x7813))
+(or (not x7214) x7784)
+(or x7214 (not x7784))
+(or (not x6911) x7757)
+(or x6911 (not x7757))
+(or (not x6912) x7755)
+(or x6912 (not x7755))
+(or (not x132) x142)
+(or x132 (not x142))
+(or (not x133) x7754)
+(or x133 (not x7754))
+(or (not x7423) (not x7513))
+(or x7423 x7513)
+(or (not x7185) x7750)
+(or x7185 (not x7750))
+(or (not x7186) x7747)
+(or x7186 (not x7747))
+(or (not x7172) x7737)
+(or x7172 (not x7737))
+(or (not x7173) x7734)
+(or x7173 (not x7734))
+(or (not x7048) x7724)
+(or x7048 (not x7724))
+(or (not x7049) x7720)
+(or x7049 (not x7720))
+(or (not x7044) x7719)
+(or x7044 (not x7719))
+(or (not x7045) x7716)
+(or x7045 (not x7716))
+(or (not x6955) x7715)
+(or x6955 (not x7715))
+(or (not x7194) x7754)
+(or x7194 (not x7754))
+(or (not x7018) x7700)
+(or x7018 (not x7700))
+(or (not x7129) x7689)
+(or x7129 (not x7689))
+(or (not x7124) x7686)
+(or x7124 (not x7686))
+(or (not x7028) x7681)
+(or x7028 (not x7681))
+(or (not x7047) x7641)
+(or x7047 (not x7641))
+(or (not x7050) x7639)
+(or x7050 (not x7639))
+(or (not x7042) x7632)
+(or x7042 (not x7632))
+(or (not x6994) x7626)
+(or x6994 (not x7626))
+(or (not x7043) x7620)
+(or x7043 (not x7620))
+(or (not x7046) x7753)
+(or x7046 (not x7753))
+(or (not x6964) x7691)
+(or x6964 (not x7691))
+(or (not x6962) x7613)
+(or x6962 (not x7613))
+(or (not x6965) x7595)
+(or x6965 (not x7595))
+(or (not x7029) x7594)
+(or x7029 (not x7594))
+(or (not x7006) x7582)
+(or x7006 (not x7582))
+(or (not x7007) x7575)
+(or x7007 (not x7575))
+(or (not x6963) x7995)
+(or x6963 (not x7995))
+(or (not x6993) x7563)
+(or x6993 (not x7563))
+(or (not x6977) x7547)
+(or x6977 (not x7547))
+(or (not x6972) x7532)
+(or x6972 (not x7532))
+(or (not x6954) x7518)
+(or x6954 (not x7518))
+(or (not x128) x7511)
+(or x128 (not x7511))
+(or (not x129) x7493)
+(or x129 (not x7493))
+(or (not x130) x7481)
+(or x130 (not x7481))
+(or (not x131) x7465)
+(or x131 (not x7465))
+(or x8004 x7674)
+(or x8002 x7677)
+(or x8000 x7998)
+(or (not x140) (not x139) (not x138) (not x137))
+(or (not x140) (not x139) (not x138) x137)
+(or x7446 x7116)
+(or x7444 x7119)
+(or x7442 x7440)
+(or (not x131) (not x130) (not x129) (not x128))
+(or (not x131) (not x130) (not x129) x128)
+(or (not x125) x7439)
+(or x125 (not x7439))
+(or (not x6853) x7434)
+(or x6853 (not x7434))
+(or (not x6421) x7422)
+(or x6421 (not x7422))
+(or (not x6422) x7420)
+(or x6422 (not x7420))
+(or (not x6423) x7418)
+(or x6423 (not x7418))
+(or (not x6424) x7413)
+(or x6424 (not x7413))
+(or (not x6758) x7404)
+(or x6758 (not x7404))
+(or (not x6759) x7377)
+(or x6759 (not x7377))
+(or (not x6760) x7357)
+(or x6760 (not x7357))
+(or (not x6761) x7331)
+(or x6761 (not x7331))
+(or (not x6653) x7304)
+(or x6653 (not x7304))
+(or (not x6654) x7275)
+(or x6654 (not x7275))
+(or (not x6655) x7255)
+(or x6655 (not x7255))
+(or (not x6656) x7226)
+(or x6656 (not x7226))
+(or (not x6353) x7199)
+(or x6353 (not x7199))
+(or (not x6354) x7197)
+(or x6354 (not x7197))
+(or (not x123) x133)
+(or x123 (not x133))
+(or (not x124) x7196)
+(or x124 (not x7196))
+(or (not x6865) (not x6955))
+(or x6865 x6955)
+(or (not x6627) x7192)
+(or x6627 (not x7192))
+(or (not x6628) x7189)
+(or x6628 (not x7189))
+(or (not x6614) x7179)
+(or x6614 (not x7179))
+(or (not x6615) x7176)
+(or x6615 (not x7176))
+(or (not x6490) x7166)
+(or x6490 (not x7166))
+(or (not x6491) x7162)
+(or x6491 (not x7162))
+(or (not x6486) x7161)
+(or x6486 (not x7161))
+(or (not x6487) x7158)
+(or x6487 (not x7158))
+(or (not x6397) x7157)
+(or x6397 (not x7157))
+(or (not x6636) x7196)
+(or x6636 (not x7196))
+(or (not x6460) x7142)
+(or x6460 (not x7142))
+(or (not x6571) x7131)
+(or x6571 (not x7131))
+(or (not x6566) x7128)
+(or x6566 (not x7128))
+(or (not x6470) x7123)
+(or x6470 (not x7123))
+(or (not x6489) x7083)
+(or x6489 (not x7083))
+(or (not x6492) x7081)
+(or x6492 (not x7081))
+(or (not x6484) x7074)
+(or x6484 (not x7074))
+(or (not x6436) x7068)
+(or x6436 (not x7068))
+(or (not x6485) x7062)
+(or x6485 (not x7062))
+(or (not x6488) x7195)
+(or x6488 (not x7195))
+(or (not x6406) x7133)
+(or x6406 (not x7133))
+(or (not x6404) x7055)
+(or x6404 (not x7055))
+(or (not x6407) x7037)
+(or x6407 (not x7037))
+(or (not x6471) x7036)
+(or x6471 (not x7036))
+(or (not x6448) x7024)
+(or x6448 (not x7024))
+(or (not x6449) x7017)
+(or x6449 (not x7017))
+(or (not x6405) x7437)
+(or x6405 (not x7437))
+(or (not x6435) x7005)
+(or x6435 (not x7005))
+(or (not x6419) x6989)
+(or x6419 (not x6989))
+(or (not x6414) x6974)
+(or x6414 (not x6974))
+(or (not x6396) x6960)
+(or x6396 (not x6960))
+(or (not x119) x6953)
+(or x119 (not x6953))
+(or (not x120) x6935)
+(or x120 (not x6935))
+(or (not x121) x6923)
+(or x121 (not x6923))
+(or (not x122) x6907)
+(or x122 (not x6907))
+(or x7446 x7116)
+(or x7444 x7119)
+(or x7442 x7440)
+(or (not x131) (not x130) (not x129) (not x128))
+(or (not x131) (not x130) (not x129) x128)
+(or x6888 x6558)
+(or x6886 x6561)
+(or x6884 x6882)
+(or (not x122) (not x121) (not x120) (not x119))
+(or (not x122) (not x121) (not x120) x119)
+(or (not x116) x6881)
+(or x116 (not x6881))
+(or (not x6295) x6876)
+(or x6295 (not x6876))
+(or (not x5863) x6864)
+(or x5863 (not x6864))
+(or (not x5864) x6862)
+(or x5864 (not x6862))
+(or (not x5865) x6860)
+(or x5865 (not x6860))
+(or (not x5866) x6855)
+(or x5866 (not x6855))
+(or (not x6200) x6846)
+(or x6200 (not x6846))
+(or (not x6201) x6819)
+(or x6201 (not x6819))
+(or (not x6202) x6799)
+(or x6202 (not x6799))
+(or (not x6203) x6773)
+(or x6203 (not x6773))
+(or (not x6095) x6746)
+(or x6095 (not x6746))
+(or (not x6096) x6717)
+(or x6096 (not x6717))
+(or (not x6097) x6697)
+(or x6097 (not x6697))
+(or (not x6098) x6668)
+(or x6098 (not x6668))
+(or (not x5795) x6641)
+(or x5795 (not x6641))
+(or (not x5796) x6639)
+(or x5796 (not x6639))
+(or (not x114) x124)
+(or x114 (not x124))
+(or (not x115) x6638)
+(or x115 (not x6638))
+(or (not x6307) (not x6397))
+(or x6307 x6397)
+(or (not x6069) x6634)
+(or x6069 (not x6634))
+(or (not x6070) x6631)
+(or x6070 (not x6631))
+(or (not x6056) x6621)
+(or x6056 (not x6621))
+(or (not x6057) x6618)
+(or x6057 (not x6618))
+(or (not x5932) x6608)
+(or x5932 (not x6608))
+(or (not x5933) x6604)
+(or x5933 (not x6604))
+(or (not x5928) x6603)
+(or x5928 (not x6603))
+(or (not x5929) x6600)
+(or x5929 (not x6600))
+(or (not x5839) x6599)
+(or x5839 (not x6599))
+(or (not x6078) x6638)
+(or x6078 (not x6638))
+(or (not x5902) x6584)
+(or x5902 (not x6584))
+(or (not x6013) x6573)
+(or x6013 (not x6573))
+(or (not x6008) x6570)
+(or x6008 (not x6570))
+(or (not x5912) x6565)
+(or x5912 (not x6565))
+(or (not x5931) x6525)
+(or x5931 (not x6525))
+(or (not x5934) x6523)
+(or x5934 (not x6523))
+(or (not x5926) x6516)
+(or x5926 (not x6516))
+(or (not x5878) x6510)
+(or x5878 (not x6510))
+(or (not x5927) x6504)
+(or x5927 (not x6504))
+(or (not x5930) x6637)
+(or x5930 (not x6637))
+(or (not x5848) x6575)
+(or x5848 (not x6575))
+(or (not x5846) x6497)
+(or x5846 (not x6497))
+(or (not x5849) x6479)
+(or x5849 (not x6479))
+(or (not x5913) x6478)
+(or x5913 (not x6478))
+(or (not x5890) x6466)
+(or x5890 (not x6466))
+(or (not x5891) x6459)
+(or x5891 (not x6459))
+(or (not x5847) x6879)
+(or x5847 (not x6879))
+(or (not x5877) x6447)
+(or x5877 (not x6447))
+(or (not x5861) x6431)
+(or x5861 (not x6431))
+(or (not x5856) x6416)
+(or x5856 (not x6416))
+(or (not x5838) x6402)
+(or x5838 (not x6402))
+(or (not x110) x6395)
+(or x110 (not x6395))
+(or (not x111) x6377)
+(or x111 (not x6377))
+(or (not x112) x6365)
+(or x112 (not x6365))
+(or (not x113) x6349)
+(or x113 (not x6349))
+(or x6888 x6558)
+(or x6886 x6561)
+(or x6884 x6882)
+(or (not x122) (not x121) (not x120) (not x119))
+(or (not x122) (not x121) (not x120) x119)
+(or x6330 x6000)
+(or x6328 x6003)
+(or x6326 x6324)
+(or (not x113) (not x112) (not x111) (not x110))
+(or (not x113) (not x112) (not x111) x110)
+(or (not x107) x6323)
+(or x107 (not x6323))
+(or (not x5737) x6318)
+(or x5737 (not x6318))
+(or (not x5305) x6306)
+(or x5305 (not x6306))
+(or (not x5306) x6304)
+(or x5306 (not x6304))
+(or (not x5307) x6302)
+(or x5307 (not x6302))
+(or (not x5308) x6297)
+(or x5308 (not x6297))
+(or (not x5642) x6288)
+(or x5642 (not x6288))
+(or (not x5643) x6261)
+(or x5643 (not x6261))
+(or (not x5644) x6241)
+(or x5644 (not x6241))
+(or (not x5645) x6215)
+(or x5645 (not x6215))
+(or (not x5537) x6188)
+(or x5537 (not x6188))
+(or (not x5538) x6159)
+(or x5538 (not x6159))
+(or (not x5539) x6139)
+(or x5539 (not x6139))
+(or (not x5540) x6110)
+(or x5540 (not x6110))
+(or (not x5237) x6083)
+(or x5237 (not x6083))
+(or (not x5238) x6081)
+(or x5238 (not x6081))
+(or (not x105) x115)
+(or x105 (not x115))
+(or (not x106) x6080)
+(or x106 (not x6080))
+(or (not x5749) (not x5839))
+(or x5749 x5839)
+(or (not x5511) x6076)
+(or x5511 (not x6076))
+(or (not x5512) x6073)
+(or x5512 (not x6073))
+(or (not x5498) x6063)
+(or x5498 (not x6063))
+(or (not x5499) x6060)
+(or x5499 (not x6060))
+(or (not x5374) x6050)
+(or x5374 (not x6050))
+(or (not x5375) x6046)
+(or x5375 (not x6046))
+(or (not x5370) x6045)
+(or x5370 (not x6045))
+(or (not x5371) x6042)
+(or x5371 (not x6042))
+(or (not x5281) x6041)
+(or x5281 (not x6041))
+(or (not x5520) x6080)
+(or x5520 (not x6080))
+(or (not x5344) x6026)
+(or x5344 (not x6026))
+(or (not x5455) x6015)
+(or x5455 (not x6015))
+(or (not x5450) x6012)
+(or x5450 (not x6012))
+(or (not x5354) x6007)
+(or x5354 (not x6007))
+(or (not x5373) x5967)
+(or x5373 (not x5967))
+(or (not x5376) x5965)
+(or x5376 (not x5965))
+(or (not x5368) x5958)
+(or x5368 (not x5958))
+(or (not x5320) x5952)
+(or x5320 (not x5952))
+(or (not x5369) x5946)
+(or x5369 (not x5946))
+(or (not x5372) x6079)
+(or x5372 (not x6079))
+(or (not x5290) x6017)
+(or x5290 (not x6017))
+(or (not x5288) x5939)
+(or x5288 (not x5939))
+(or (not x5291) x5921)
+(or x5291 (not x5921))
+(or (not x5355) x5920)
+(or x5355 (not x5920))
+(or (not x5332) x5908)
+(or x5332 (not x5908))
+(or (not x5333) x5901)
+(or x5333 (not x5901))
+(or (not x5289) x6321)
+(or x5289 (not x6321))
+(or (not x5319) x5889)
+(or x5319 (not x5889))
+(or (not x5303) x5873)
+(or x5303 (not x5873))
+(or (not x5298) x5858)
+(or x5298 (not x5858))
+(or (not x5280) x5844)
+(or x5280 (not x5844))
+(or (not x101) x5837)
+(or x101 (not x5837))
+(or (not x102) x5819)
+(or x102 (not x5819))
+(or (not x103) x5807)
+(or x103 (not x5807))
+(or (not x104) x5791)
+(or x104 (not x5791))
+(or x6330 x6000)
+(or x6328 x6003)
+(or x6326 x6324)
+(or (not x113) (not x112) (not x111) (not x110))
+(or (not x113) (not x112) (not x111) x110)
+(or x5772 x5442)
+(or x5770 x5445)
+(or x5768 x5766)
+(or (not x104) (not x103) (not x102) (not x101))
+(or (not x104) (not x103) (not x102) x101)
+(or (not x98) x5765)
+(or x98 (not x5765))
+(or (not x5179) x5760)
+(or x5179 (not x5760))
+(or (not x4747) x5748)
+(or x4747 (not x5748))
+(or (not x4748) x5746)
+(or x4748 (not x5746))
+(or (not x4749) x5744)
+(or x4749 (not x5744))
+(or (not x4750) x5739)
+(or x4750 (not x5739))
+(or (not x5084) x5730)
+(or x5084 (not x5730))
+(or (not x5085) x5703)
+(or x5085 (not x5703))
+(or (not x5086) x5683)
+(or x5086 (not x5683))
+(or (not x5087) x5657)
+(or x5087 (not x5657))
+(or (not x4979) x5630)
+(or x4979 (not x5630))
+(or (not x4980) x5601)
+(or x4980 (not x5601))
+(or (not x4981) x5581)
+(or x4981 (not x5581))
+(or (not x4982) x5552)
+(or x4982 (not x5552))
+(or (not x4679) x5525)
+(or x4679 (not x5525))
+(or (not x4680) x5523)
+(or x4680 (not x5523))
+(or (not x96) x106)
+(or x96 (not x106))
+(or (not x97) x5522)
+(or x97 (not x5522))
+(or (not x5191) (not x5281))
+(or x5191 x5281)
+(or (not x4953) x5518)
+(or x4953 (not x5518))
+(or (not x4954) x5515)
+(or x4954 (not x5515))
+(or (not x4940) x5505)
+(or x4940 (not x5505))
+(or (not x4941) x5502)
+(or x4941 (not x5502))
+(or (not x4816) x5492)
+(or x4816 (not x5492))
+(or (not x4817) x5488)
+(or x4817 (not x5488))
+(or (not x4812) x5487)
+(or x4812 (not x5487))
+(or (not x4813) x5484)
+(or x4813 (not x5484))
+(or (not x4723) x5483)
+(or x4723 (not x5483))
+(or (not x4962) x5522)
+(or x4962 (not x5522))
+(or (not x4786) x5468)
+(or x4786 (not x5468))
+(or (not x4897) x5457)
+(or x4897 (not x5457))
+(or (not x4892) x5454)
+(or x4892 (not x5454))
+(or (not x4796) x5449)
+(or x4796 (not x5449))
+(or (not x4815) x5409)
+(or x4815 (not x5409))
+(or (not x4818) x5407)
+(or x4818 (not x5407))
+(or (not x4810) x5400)
+(or x4810 (not x5400))
+(or (not x4762) x5394)
+(or x4762 (not x5394))
+(or (not x4811) x5388)
+(or x4811 (not x5388))
+(or (not x4814) x5521)
+(or x4814 (not x5521))
+(or (not x4732) x5459)
+(or x4732 (not x5459))
+(or (not x4730) x5381)
+(or x4730 (not x5381))
+(or (not x4733) x5363)
+(or x4733 (not x5363))
+(or (not x4797) x5362)
+(or x4797 (not x5362))
+(or (not x4774) x5350)
+(or x4774 (not x5350))
+(or (not x4775) x5343)
+(or x4775 (not x5343))
+(or (not x4731) x5763)
+(or x4731 (not x5763))
+(or (not x4761) x5331)
+(or x4761 (not x5331))
+(or (not x4745) x5315)
+(or x4745 (not x5315))
+(or (not x4740) x5300)
+(or x4740 (not x5300))
+(or (not x4722) x5286)
+(or x4722 (not x5286))
+(or (not x92) x5279)
+(or x92 (not x5279))
+(or (not x93) x5261)
+(or x93 (not x5261))
+(or (not x94) x5249)
+(or x94 (not x5249))
+(or (not x95) x5233)
+(or x95 (not x5233))
+(or x5772 x5442)
+(or x5770 x5445)
+(or x5768 x5766)
+(or (not x104) (not x103) (not x102) (not x101))
+(or (not x104) (not x103) (not x102) x101)
+(or x5214 x4884)
+(or x5212 x4887)
+(or x5210 x5208)
+(or (not x95) (not x94) (not x93) (not x92))
+(or (not x95) (not x94) (not x93) x92)
+(or (not x89) x5207)
+(or x89 (not x5207))
+(or (not x4621) x5202)
+(or x4621 (not x5202))
+(or (not x4189) x5190)
+(or x4189 (not x5190))
+(or (not x4190) x5188)
+(or x4190 (not x5188))
+(or (not x4191) x5186)
+(or x4191 (not x5186))
+(or (not x4192) x5181)
+(or x4192 (not x5181))
+(or (not x4526) x5172)
+(or x4526 (not x5172))
+(or (not x4527) x5145)
+(or x4527 (not x5145))
+(or (not x4528) x5125)
+(or x4528 (not x5125))
+(or (not x4529) x5099)
+(or x4529 (not x5099))
+(or (not x4421) x5072)
+(or x4421 (not x5072))
+(or (not x4422) x5043)
+(or x4422 (not x5043))
+(or (not x4423) x5023)
+(or x4423 (not x5023))
+(or (not x4424) x4994)
+(or x4424 (not x4994))
+(or (not x4121) x4967)
+(or x4121 (not x4967))
+(or (not x4122) x4965)
+(or x4122 (not x4965))
+(or (not x87) x97)
+(or x87 (not x97))
+(or (not x88) x4964)
+(or x88 (not x4964))
+(or (not x4633) (not x4723))
+(or x4633 x4723)
+(or (not x4395) x4960)
+(or x4395 (not x4960))
+(or (not x4396) x4957)
+(or x4396 (not x4957))
+(or (not x4382) x4947)
+(or x4382 (not x4947))
+(or (not x4383) x4944)
+(or x4383 (not x4944))
+(or (not x4258) x4934)
+(or x4258 (not x4934))
+(or (not x4259) x4930)
+(or x4259 (not x4930))
+(or (not x4254) x4929)
+(or x4254 (not x4929))
+(or (not x4255) x4926)
+(or x4255 (not x4926))
+(or (not x4165) x4925)
+(or x4165 (not x4925))
+(or (not x4404) x4964)
+(or x4404 (not x4964))
+(or (not x4228) x4910)
+(or x4228 (not x4910))
+(or (not x4339) x4899)
+(or x4339 (not x4899))
+(or (not x4334) x4896)
+(or x4334 (not x4896))
+(or (not x4238) x4891)
+(or x4238 (not x4891))
+(or (not x4257) x4851)
+(or x4257 (not x4851))
+(or (not x4260) x4849)
+(or x4260 (not x4849))
+(or (not x4252) x4842)
+(or x4252 (not x4842))
+(or (not x4204) x4836)
+(or x4204 (not x4836))
+(or (not x4253) x4830)
+(or x4253 (not x4830))
+(or (not x4256) x4963)
+(or x4256 (not x4963))
+(or (not x4174) x4901)
+(or x4174 (not x4901))
+(or (not x4172) x4823)
+(or x4172 (not x4823))
+(or (not x4175) x4805)
+(or x4175 (not x4805))
+(or (not x4239) x4804)
+(or x4239 (not x4804))
+(or (not x4216) x4792)
+(or x4216 (not x4792))
+(or (not x4217) x4785)
+(or x4217 (not x4785))
+(or (not x4173) x5205)
+(or x4173 (not x5205))
+(or (not x4203) x4773)
+(or x4203 (not x4773))
+(or (not x4187) x4757)
+(or x4187 (not x4757))
+(or (not x4182) x4742)
+(or x4182 (not x4742))
+(or (not x4164) x4728)
+(or x4164 (not x4728))
+(or (not x83) x4721)
+(or x83 (not x4721))
+(or (not x84) x4703)
+(or x84 (not x4703))
+(or (not x85) x4691)
+(or x85 (not x4691))
+(or (not x86) x4675)
+(or x86 (not x4675))
+(or x5214 x4884)
+(or x5212 x4887)
+(or x5210 x5208)
+(or (not x95) (not x94) (not x93) (not x92))
+(or (not x95) (not x94) (not x93) x92)
+(or x4656 x4326)
+(or x4654 x4329)
+(or x4652 x4650)
+(or (not x86) (not x85) (not x84) (not x83))
+(or (not x86) (not x85) (not x84) x83)
+(or (not x80) x4649)
+(or x80 (not x4649))
+(or (not x4063) x4644)
+(or x4063 (not x4644))
+(or (not x3631) x4632)
+(or x3631 (not x4632))
+(or (not x3632) x4630)
+(or x3632 (not x4630))
+(or (not x3633) x4628)
+(or x3633 (not x4628))
+(or (not x3634) x4623)
+(or x3634 (not x4623))
+(or (not x3968) x4614)
+(or x3968 (not x4614))
+(or (not x3969) x4587)
+(or x3969 (not x4587))
+(or (not x3970) x4567)
+(or x3970 (not x4567))
+(or (not x3971) x4541)
+(or x3971 (not x4541))
+(or (not x3863) x4514)
+(or x3863 (not x4514))
+(or (not x3864) x4485)
+(or x3864 (not x4485))
+(or (not x3865) x4465)
+(or x3865 (not x4465))
+(or (not x3866) x4436)
+(or x3866 (not x4436))
+(or (not x3563) x4409)
+(or x3563 (not x4409))
+(or (not x3564) x4407)
+(or x3564 (not x4407))
+(or (not x78) x88)
+(or x78 (not x88))
+(or (not x79) x4406)
+(or x79 (not x4406))
+(or (not x4075) (not x4165))
+(or x4075 x4165)
+(or (not x3837) x4402)
+(or x3837 (not x4402))
+(or (not x3838) x4399)
+(or x3838 (not x4399))
+(or (not x3824) x4389)
+(or x3824 (not x4389))
+(or (not x3825) x4386)
+(or x3825 (not x4386))
+(or (not x3700) x4376)
+(or x3700 (not x4376))
+(or (not x3701) x4372)
+(or x3701 (not x4372))
+(or (not x3696) x4371)
+(or x3696 (not x4371))
+(or (not x3697) x4368)
+(or x3697 (not x4368))
+(or (not x3607) x4367)
+(or x3607 (not x4367))
+(or (not x3846) x4406)
+(or x3846 (not x4406))
+(or (not x3670) x4352)
+(or x3670 (not x4352))
+(or (not x3781) x4341)
+(or x3781 (not x4341))
+(or (not x3776) x4338)
+(or x3776 (not x4338))
+(or (not x3680) x4333)
+(or x3680 (not x4333))
+(or (not x3699) x4293)
+(or x3699 (not x4293))
+(or (not x3702) x4291)
+(or x3702 (not x4291))
+(or (not x3694) x4284)
+(or x3694 (not x4284))
+(or (not x3646) x4278)
+(or x3646 (not x4278))
+(or (not x3695) x4272)
+(or x3695 (not x4272))
+(or (not x3698) x4405)
+(or x3698 (not x4405))
+(or (not x3616) x4343)
+(or x3616 (not x4343))
+(or (not x3614) x4265)
+(or x3614 (not x4265))
+(or (not x3617) x4247)
+(or x3617 (not x4247))
+(or (not x3681) x4246)
+(or x3681 (not x4246))
+(or (not x3658) x4234)
+(or x3658 (not x4234))
+(or (not x3659) x4227)
+(or x3659 (not x4227))
+(or (not x3615) x4647)
+(or x3615 (not x4647))
+(or (not x3645) x4215)
+(or x3645 (not x4215))
+(or (not x3629) x4199)
+(or x3629 (not x4199))
+(or (not x3624) x4184)
+(or x3624 (not x4184))
+(or (not x3606) x4170)
+(or x3606 (not x4170))
+(or (not x74) x4163)
+(or x74 (not x4163))
+(or (not x75) x4145)
+(or x75 (not x4145))
+(or (not x76) x4133)
+(or x76 (not x4133))
+(or (not x77) x4117)
+(or x77 (not x4117))
+(or x4656 x4326)
+(or x4654 x4329)
+(or x4652 x4650)
+(or (not x86) (not x85) (not x84) (not x83))
+(or (not x86) (not x85) (not x84) x83)
+(or x4098 x3768)
+(or x4096 x3771)
+(or x4094 x4092)
+(or (not x77) (not x76) (not x75) (not x74))
+(or (not x77) (not x76) (not x75) x74)
+(or (not x71) x4091)
+(or x71 (not x4091))
+(or (not x3505) x4086)
+(or x3505 (not x4086))
+(or (not x3073) x4074)
+(or x3073 (not x4074))
+(or (not x3074) x4072)
+(or x3074 (not x4072))
+(or (not x3075) x4070)
+(or x3075 (not x4070))
+(or (not x3076) x4065)
+(or x3076 (not x4065))
+(or (not x3410) x4056)
+(or x3410 (not x4056))
+(or (not x3411) x4029)
+(or x3411 (not x4029))
+(or (not x3412) x4009)
+(or x3412 (not x4009))
+(or (not x3413) x3983)
+(or x3413 (not x3983))
+(or (not x3305) x3956)
+(or x3305 (not x3956))
+(or (not x3306) x3927)
+(or x3306 (not x3927))
+(or (not x3307) x3907)
+(or x3307 (not x3907))
+(or (not x3308) x3878)
+(or x3308 (not x3878))
+(or (not x3005) x3851)
+(or x3005 (not x3851))
+(or (not x3006) x3849)
+(or x3006 (not x3849))
+(or (not x69) x79)
+(or x69 (not x79))
+(or (not x70) x3848)
+(or x70 (not x3848))
+(or (not x3517) (not x3607))
+(or x3517 x3607)
+(or (not x3279) x3844)
+(or x3279 (not x3844))
+(or (not x3280) x3841)
+(or x3280 (not x3841))
+(or (not x3266) x3831)
+(or x3266 (not x3831))
+(or (not x3267) x3828)
+(or x3267 (not x3828))
+(or (not x3142) x3818)
+(or x3142 (not x3818))
+(or (not x3143) x3814)
+(or x3143 (not x3814))
+(or (not x3138) x3813)
+(or x3138 (not x3813))
+(or (not x3139) x3810)
+(or x3139 (not x3810))
+(or (not x3049) x3809)
+(or x3049 (not x3809))
+(or (not x3288) x3848)
+(or x3288 (not x3848))
+(or (not x3112) x3794)
+(or x3112 (not x3794))
+(or (not x3223) x3783)
+(or x3223 (not x3783))
+(or (not x3218) x3780)
+(or x3218 (not x3780))
+(or (not x3122) x3775)
+(or x3122 (not x3775))
+(or (not x3141) x3735)
+(or x3141 (not x3735))
+(or (not x3144) x3733)
+(or x3144 (not x3733))
+(or (not x3136) x3726)
+(or x3136 (not x3726))
+(or (not x3088) x3720)
+(or x3088 (not x3720))
+(or (not x3137) x3714)
+(or x3137 (not x3714))
+(or (not x3140) x3847)
+(or x3140 (not x3847))
+(or (not x3058) x3785)
+(or x3058 (not x3785))
+(or (not x3056) x3707)
+(or x3056 (not x3707))
+(or (not x3059) x3689)
+(or x3059 (not x3689))
+(or (not x3123) x3688)
+(or x3123 (not x3688))
+(or (not x3100) x3676)
+(or x3100 (not x3676))
+(or (not x3101) x3669)
+(or x3101 (not x3669))
+(or (not x3057) x4089)
+(or x3057 (not x4089))
+(or (not x3087) x3657)
+(or x3087 (not x3657))
+(or (not x3071) x3641)
+(or x3071 (not x3641))
+(or (not x3066) x3626)
+(or x3066 (not x3626))
+(or (not x3048) x3612)
+(or x3048 (not x3612))
+(or (not x65) x3605)
+(or x65 (not x3605))
+(or (not x66) x3587)
+(or x66 (not x3587))
+(or (not x67) x3575)
+(or x67 (not x3575))
+(or (not x68) x3559)
+(or x68 (not x3559))
+(or x4098 x3768)
+(or x4096 x3771)
+(or x4094 x4092)
+(or (not x77) (not x76) (not x75) (not x74))
+(or (not x77) (not x76) (not x75) x74)
+(or x3540 x3210)
+(or x3538 x3213)
+(or x3536 x3534)
+(or (not x68) (not x67) (not x66) (not x65))
+(or (not x68) (not x67) (not x66) x65)
+(or (not x62) x3533)
+(or x62 (not x3533))
+(or (not x2947) x3528)
+(or x2947 (not x3528))
+(or (not x2515) x3516)
+(or x2515 (not x3516))
+(or (not x2516) x3514)
+(or x2516 (not x3514))
+(or (not x2517) x3512)
+(or x2517 (not x3512))
+(or (not x2518) x3507)
+(or x2518 (not x3507))
+(or (not x2852) x3498)
+(or x2852 (not x3498))
+(or (not x2853) x3471)
+(or x2853 (not x3471))
+(or (not x2854) x3451)
+(or x2854 (not x3451))
+(or (not x2855) x3425)
+(or x2855 (not x3425))
+(or (not x2747) x3398)
+(or x2747 (not x3398))
+(or (not x2748) x3369)
+(or x2748 (not x3369))
+(or (not x2749) x3349)
+(or x2749 (not x3349))
+(or (not x2750) x3320)
+(or x2750 (not x3320))
+(or (not x2447) x3293)
+(or x2447 (not x3293))
+(or (not x2448) x3291)
+(or x2448 (not x3291))
+(or (not x60) x70)
+(or x60 (not x70))
+(or (not x61) x3290)
+(or x61 (not x3290))
+(or (not x2959) (not x3049))
+(or x2959 x3049)
+(or (not x2721) x3286)
+(or x2721 (not x3286))
+(or (not x2722) x3283)
+(or x2722 (not x3283))
+(or (not x2708) x3273)
+(or x2708 (not x3273))
+(or (not x2709) x3270)
+(or x2709 (not x3270))
+(or (not x2584) x3260)
+(or x2584 (not x3260))
+(or (not x2585) x3256)
+(or x2585 (not x3256))
+(or (not x2580) x3255)
+(or x2580 (not x3255))
+(or (not x2581) x3252)
+(or x2581 (not x3252))
+(or (not x2491) x3251)
+(or x2491 (not x3251))
+(or (not x2730) x3290)
+(or x2730 (not x3290))
+(or (not x2554) x3236)
+(or x2554 (not x3236))
+(or (not x2665) x3225)
+(or x2665 (not x3225))
+(or (not x2660) x3222)
+(or x2660 (not x3222))
+(or (not x2564) x3217)
+(or x2564 (not x3217))
+(or (not x2583) x3177)
+(or x2583 (not x3177))
+(or (not x2586) x3175)
+(or x2586 (not x3175))
+(or (not x2578) x3168)
+(or x2578 (not x3168))
+(or (not x2530) x3162)
+(or x2530 (not x3162))
+(or (not x2579) x3156)
+(or x2579 (not x3156))
+(or (not x2582) x3289)
+(or x2582 (not x3289))
+(or (not x2500) x3227)
+(or x2500 (not x3227))
+(or (not x2498) x3149)
+(or x2498 (not x3149))
+(or (not x2501) x3131)
+(or x2501 (not x3131))
+(or (not x2565) x3130)
+(or x2565 (not x3130))
+(or (not x2542) x3118)
+(or x2542 (not x3118))
+(or (not x2543) x3111)
+(or x2543 (not x3111))
+(or (not x2499) x3531)
+(or x2499 (not x3531))
+(or (not x2529) x3099)
+(or x2529 (not x3099))
+(or (not x2513) x3083)
+(or x2513 (not x3083))
+(or (not x2508) x3068)
+(or x2508 (not x3068))
+(or (not x2490) x3054)
+(or x2490 (not x3054))
+(or (not x56) x3047)
+(or x56 (not x3047))
+(or (not x57) x3029)
+(or x57 (not x3029))
+(or (not x58) x3017)
+(or x58 (not x3017))
+(or (not x59) x3001)
+(or x59 (not x3001))
+(or x3540 x3210)
+(or x3538 x3213)
+(or x3536 x3534)
+(or (not x68) (not x67) (not x66) (not x65))
+(or (not x68) (not x67) (not x66) x65)
+(or x2982 x2652)
+(or x2980 x2655)
+(or x2978 x2976)
+(or (not x59) (not x58) (not x57) (not x56))
+(or (not x59) (not x58) (not x57) x56)
+(or (not x53) x2975)
+(or x53 (not x2975))
+(or (not x2389) x2970)
+(or x2389 (not x2970))
+(or (not x1957) x2958)
+(or x1957 (not x2958))
+(or (not x1958) x2956)
+(or x1958 (not x2956))
+(or (not x1959) x2954)
+(or x1959 (not x2954))
+(or (not x1960) x2949)
+(or x1960 (not x2949))
+(or (not x2294) x2940)
+(or x2294 (not x2940))
+(or (not x2295) x2913)
+(or x2295 (not x2913))
+(or (not x2296) x2893)
+(or x2296 (not x2893))
+(or (not x2297) x2867)
+(or x2297 (not x2867))
+(or (not x2189) x2840)
+(or x2189 (not x2840))
+(or (not x2190) x2811)
+(or x2190 (not x2811))
+(or (not x2191) x2791)
+(or x2191 (not x2791))
+(or (not x2192) x2762)
+(or x2192 (not x2762))
+(or (not x1889) x2735)
+(or x1889 (not x2735))
+(or (not x1890) x2733)
+(or x1890 (not x2733))
+(or (not x51) x61)
+(or x51 (not x61))
+(or (not x52) x2732)
+(or x52 (not x2732))
+(or (not x2401) (not x2491))
+(or x2401 x2491)
+(or (not x2163) x2728)
+(or x2163 (not x2728))
+(or (not x2164) x2725)
+(or x2164 (not x2725))
+(or (not x2150) x2715)
+(or x2150 (not x2715))
+(or (not x2151) x2712)
+(or x2151 (not x2712))
+(or (not x2026) x2702)
+(or x2026 (not x2702))
+(or (not x2027) x2698)
+(or x2027 (not x2698))
+(or (not x2022) x2697)
+(or x2022 (not x2697))
+(or (not x2023) x2694)
+(or x2023 (not x2694))
+(or (not x1933) x2693)
+(or x1933 (not x2693))
+(or (not x2172) x2732)
+(or x2172 (not x2732))
+(or (not x1996) x2678)
+(or x1996 (not x2678))
+(or (not x2107) x2667)
+(or x2107 (not x2667))
+(or (not x2102) x2664)
+(or x2102 (not x2664))
+(or (not x2006) x2659)
+(or x2006 (not x2659))
+(or (not x2025) x2619)
+(or x2025 (not x2619))
+(or (not x2028) x2617)
+(or x2028 (not x2617))
+(or (not x2020) x2610)
+(or x2020 (not x2610))
+(or (not x1972) x2604)
+(or x1972 (not x2604))
+(or (not x2021) x2598)
+(or x2021 (not x2598))
+(or (not x2024) x2731)
+(or x2024 (not x2731))
+(or (not x1942) x2669)
+(or x1942 (not x2669))
+(or (not x1940) x2591)
+(or x1940 (not x2591))
+(or (not x1943) x2573)
+(or x1943 (not x2573))
+(or (not x2007) x2572)
+(or x2007 (not x2572))
+(or (not x1984) x2560)
+(or x1984 (not x2560))
+(or (not x1985) x2553)
+(or x1985 (not x2553))
+(or (not x1941) x2973)
+(or x1941 (not x2973))
+(or (not x1971) x2541)
+(or x1971 (not x2541))
+(or (not x1955) x2525)
+(or x1955 (not x2525))
+(or (not x1950) x2510)
+(or x1950 (not x2510))
+(or (not x1932) x2496)
+(or x1932 (not x2496))
+(or (not x47) x2489)
+(or x47 (not x2489))
+(or (not x48) x2471)
+(or x48 (not x2471))
+(or (not x49) x2459)
+(or x49 (not x2459))
+(or (not x50) x2443)
+(or x50 (not x2443))
+(or x2982 x2652)
+(or x2980 x2655)
+(or x2978 x2976)
+(or (not x59) (not x58) (not x57) (not x56))
+(or (not x59) (not x58) (not x57) x56)
+(or x2424 x2094)
+(or x2422 x2097)
+(or x2420 x2418)
+(or (not x50) (not x49) (not x48) (not x47))
+(or (not x50) (not x49) (not x48) x47)
+(or (not x44) x2417)
+(or x44 (not x2417))
+(or (not x1831) x2412)
+(or x1831 (not x2412))
+(or (not x1399) x2400)
+(or x1399 (not x2400))
+(or (not x1400) x2398)
+(or x1400 (not x2398))
+(or (not x1401) x2396)
+(or x1401 (not x2396))
+(or (not x1402) x2391)
+(or x1402 (not x2391))
+(or (not x1736) x2382)
+(or x1736 (not x2382))
+(or (not x1737) x2355)
+(or x1737 (not x2355))
+(or (not x1738) x2335)
+(or x1738 (not x2335))
+(or (not x1739) x2309)
+(or x1739 (not x2309))
+(or (not x1631) x2282)
+(or x1631 (not x2282))
+(or (not x1632) x2253)
+(or x1632 (not x2253))
+(or (not x1633) x2233)
+(or x1633 (not x2233))
+(or (not x1634) x2204)
+(or x1634 (not x2204))
+(or (not x1331) x2177)
+(or x1331 (not x2177))
+(or (not x1332) x2175)
+(or x1332 (not x2175))
+(or (not x42) x52)
+(or x42 (not x52))
+(or (not x43) x2174)
+(or x43 (not x2174))
+(or (not x1843) (not x1933))
+(or x1843 x1933)
+(or (not x1605) x2170)
+(or x1605 (not x2170))
+(or (not x1606) x2167)
+(or x1606 (not x2167))
+(or (not x1592) x2157)
+(or x1592 (not x2157))
+(or (not x1593) x2154)
+(or x1593 (not x2154))
+(or (not x1468) x2144)
+(or x1468 (not x2144))
+(or (not x1469) x2140)
+(or x1469 (not x2140))
+(or (not x1464) x2139)
+(or x1464 (not x2139))
+(or (not x1465) x2136)
+(or x1465 (not x2136))
+(or (not x1375) x2135)
+(or x1375 (not x2135))
+(or (not x1614) x2174)
+(or x1614 (not x2174))
+(or (not x1438) x2120)
+(or x1438 (not x2120))
+(or (not x1549) x2109)
+(or x1549 (not x2109))
+(or (not x1544) x2106)
+(or x1544 (not x2106))
+(or (not x1448) x2101)
+(or x1448 (not x2101))
+(or (not x1467) x2061)
+(or x1467 (not x2061))
+(or (not x1470) x2059)
+(or x1470 (not x2059))
+(or (not x1462) x2052)
+(or x1462 (not x2052))
+(or (not x1414) x2046)
+(or x1414 (not x2046))
+(or (not x1463) x2040)
+(or x1463 (not x2040))
+(or (not x1466) x2173)
+(or x1466 (not x2173))
+(or (not x1384) x2111)
+(or x1384 (not x2111))
+(or (not x1382) x2033)
+(or x1382 (not x2033))
+(or (not x1385) x2015)
+(or x1385 (not x2015))
+(or (not x1449) x2014)
+(or x1449 (not x2014))
+(or (not x1426) x2002)
+(or x1426 (not x2002))
+(or (not x1427) x1995)
+(or x1427 (not x1995))
+(or (not x1383) x2415)
+(or x1383 (not x2415))
+(or (not x1413) x1983)
+(or x1413 (not x1983))
+(or (not x1397) x1967)
+(or x1397 (not x1967))
+(or (not x1392) x1952)
+(or x1392 (not x1952))
+(or (not x1374) x1938)
+(or x1374 (not x1938))
+(or (not x38) x1931)
+(or x38 (not x1931))
+(or (not x39) x1913)
+(or x39 (not x1913))
+(or (not x40) x1901)
+(or x40 (not x1901))
+(or (not x41) x1885)
+(or x41 (not x1885))
+(or x2424 x2094)
+(or x2422 x2097)
+(or x2420 x2418)
+(or (not x50) (not x49) (not x48) (not x47))
+(or (not x50) (not x49) (not x48) x47)
+(or x1866 x1536)
+(or x1864 x1539)
+(or x1862 x1860)
+(or (not x41) (not x40) (not x39) (not x38))
+(or (not x41) (not x40) (not x39) x38)
+(or (not x35) x1859)
+(or x35 (not x1859))
+(or (not x1285) x1854)
+(or x1285 (not x1854))
+(or (not x853) x1842)
+(or x853 (not x1842))
+(or (not x854) x1840)
+(or x854 (not x1840))
+(or (not x855) x1838)
+(or x855 (not x1838))
+(or (not x856) x1833)
+(or x856 (not x1833))
+(or (not x1190) x1824)
+(or x1190 (not x1824))
+(or (not x1191) x1797)
+(or x1191 (not x1797))
+(or (not x1192) x1777)
+(or x1192 (not x1777))
+(or (not x1193) x1751)
+(or x1193 (not x1751))
+(or (not x1085) x1724)
+(or x1085 (not x1724))
+(or (not x1086) x1695)
+(or x1086 (not x1695))
+(or (not x1087) x1675)
+(or x1087 (not x1675))
+(or (not x1088) x1646)
+(or x1088 (not x1646))
+(or (not x785) x1619)
+(or x785 (not x1619))
+(or (not x786) x1617)
+(or x786 (not x1617))
+(or (not x33) x43)
+(or x33 (not x43))
+(or (not x34) x1616)
+(or x34 (not x1616))
+(or (not x1059) x1612)
+(or x1059 (not x1612))
+(or (not x1060) x1609)
+(or x1060 (not x1609))
+(or (not x1046) x1599)
+(or x1046 (not x1599))
+(or (not x1047) x1596)
+(or x1047 (not x1596))
+(or (not x922) x1586)
+(or x922 (not x1586))
+(or (not x923) x1582)
+(or x923 (not x1582))
+(or (not x918) x1581)
+(or x918 (not x1581))
+(or (not x919) x1578)
+(or x919 (not x1578))
+(or (not x829) x1577)
+(or x829 (not x1577))
+(or (not x1068) x1616)
+(or x1068 (not x1616))
+(or (not x892) x1562)
+(or x892 (not x1562))
+(or (not x1003) x1551)
+(or x1003 (not x1551))
+(or (not x998) x1548)
+(or x998 (not x1548))
+(or (not x902) x1543)
+(or x902 (not x1543))
+(or (not x921) x1503)
+(or x921 (not x1503))
+(or (not x924) x1501)
+(or x924 (not x1501))
+(or (not x916) x1494)
+(or x916 (not x1494))
+(or (not x868) x1488)
+(or x868 (not x1488))
+(or (not x917) x1482)
+(or x917 (not x1482))
+(or (not x920) x1615)
+(or x920 (not x1615))
+(or (not x838) x1553)
+(or x838 (not x1553))
+(or (not x836) x1475)
+(or x836 (not x1475))
+(or (not x839) x1457)
+(or x839 (not x1457))
+(or (not x903) x1456)
+(or x903 (not x1456))
+(or (not x880) x1444)
+(or x880 (not x1444))
+(or (not x881) x1437)
+(or x881 (not x1437))
+(or (not x837) x1857)
+(or x837 (not x1857))
+(or (not x867) x1425)
+(or x867 (not x1425))
+(or (not x851) x1409)
+(or x851 (not x1409))
+(or (not x846) x1394)
+(or x846 (not x1394))
+(or (not x828) x1380)
+(or x828 (not x1380))
+(or (not x29) x1373)
+(or x29 (not x1373))
+(or (not x30) x1355)
+(or x30 (not x1355))
+(or (not x31) x1343)
+(or x31 (not x1343))
+(or (not x32) x1327)
+(or x32 (not x1327))
+(or x1866 x1536)
+(or x1864 x1539)
+(or x1862 x1860)
+(or (not x41) (not x40) (not x39) (not x38))
+(or (not x41) (not x40) (not x39) x38)
+(or x1308 x990)
+(or x1306 x993)
+(or x1304 x1302)
+(or (not x32) (not x31) (not x30) (not x29))
+(or (not x32) (not x31) (not x30) x29)
+(or (not x26) x1301)
+(or x26 (not x1301))
+(or (not x400) x1296)
+(or x400 (not x1296))
+(or (not x401) x1294)
+(or x401 (not x1294))
+(or (not x402) x1292)
+(or x402 (not x1292))
+(or (not x403) x1287)
+(or x403 (not x1287))
+(or (not x656) x1278)
+(or x656 (not x1278))
+(or (not x657) x1251)
+(or x657 (not x1251))
+(or (not x658) x1231)
+(or x658 (not x1231))
+(or (not x659) x1205)
+(or x659 (not x1205))
+(or (not x546) x1178)
+(or x546 (not x1178))
+(or (not x547) x1149)
+(or x547 (not x1149))
+(or (not x548) x1129)
+(or x548 (not x1129))
+(or (not x549) x1100)
+(or x549 (not x1100))
+(or (not x316) x1073)
+(or x316 (not x1073))
+(or (not x317) x1071)
+(or x317 (not x1071))
+(or (not x24) x34)
+(or x24 (not x34))
+(or (not x25) x1070)
+(or x25 (not x1070))
+(or (not x735) x1066)
+(or x735 (not x1066))
+(or (not x736) x1063)
+(or x736 (not x1063))
+(or (not x628) x1053)
+(or x628 (not x1053))
+(or (not x629) x1050)
+(or x629 (not x1050))
+(or (not x390) x1040)
+(or x390 (not x1040))
+(or (not x391) x1036)
+(or x391 (not x1036))
+(or (not x385) x1035)
+(or x385 (not x1035))
+(or (not x386) x1032)
+(or x386 (not x1032))
+(or (not x392) x1031)
+(or x392 (not x1031))
+(or (not x529) x1070)
+(or x529 (not x1070))
+(or (not x371) x1016)
+(or x371 (not x1016))
+(or (not x734) x1005)
+(or x734 (not x1005))
+(or (not x733) x1002)
+(or x733 (not x1002))
+(or (not x415) x997)
+(or x415 (not x997))
+(or (not x388) x957)
+(or x388 (not x957))
+(or (not x393) x955)
+(or x393 (not x955))
+(or (not x383) x948)
+(or x383 (not x948))
+(or (not x389) x942)
+(or x389 (not x942))
+(or (not x384) x936)
+(or x384 (not x936))
+(or (not x387) x1069)
+(or x387 (not x1069))
+(or (not x380) x1007)
+(or x380 (not x1007))
+(or (not x378) x929)
+(or x378 (not x929))
+(or (not x493) x911)
+(or x493 (not x911))
+(or (not x496) x910)
+(or x496 (not x910))
+(or (not x359) x898)
+(or x359 (not x898))
+(or (not x360) x891)
+(or x360 (not x891))
+(or (not x494) x1299)
+(or x494 (not x1299))
+(or (not x495) x879)
+(or x495 (not x879))
+(or (not x447) x863)
+(or x447 (not x863))
+(or (not x520) x848)
+(or x520 (not x848))
+(or (not x521) x834)
+(or x521 (not x834))
+(or (not x20) x827)
+(or x20 (not x827))
+(or (not x21) x809)
+(or x21 (not x809))
+(or (not x22) x797)
+(or x22 (not x797))
+(or (not x23) x781)
+(or x23 (not x781))
+(or x1308 x990)
+(or x1306 x993)
+(or x1304 x1302)
+(or (not x32) (not x31) (not x30) (not x29))
+(or (not x32) (not x31) (not x30) x29)
+(or x762 x475)
+(or x760 x478)
+(or x758 x756)
+(or (not x23) (not x22) (not x21) (not x20))
+(or (not x23) (not x22) (not x21) x20)
+(or (not x17) x755)
+(or x17 (not x755))
+(or (not x275) x751)
+(or x275 (not x751))
+(or (not x276) x717)
+(or x276 (not x717))
+(or (not x277) x697)
+(or x277 (not x697))
+(or (not x278) x671)
+(or x278 (not x671))
+(or (not x267) x644)
+(or x267 (not x644))
+(or (not x268) x610)
+(or x268 (not x610))
+(or (not x269) x590)
+(or x269 (not x590))
+(or (not x270) x561)
+(or x270 (not x561))
+(or (not x195) x534)
+(or x195 (not x534))
+(or (not x196) x532)
+(or x196 (not x532))
+(or (not x15) x25)
+(or x15 (not x25))
+(or (not x16) x531)
+(or x16 (not x531))
+(or (not x258) x527)
+(or x258 (not x527))
+(or (not x259) x519)
+(or x259 (not x519))
+(or (not x254) x518)
+(or x254 (not x518))
+(or (not x255) x515)
+(or x255 (not x515))
+(or (not x260) x514)
+(or x260 (not x514))
+(or (not x240) x531)
+(or x240 (not x531))
+(or (not x262) x499)
+(or x262 (not x499))
+(or (not x239) x484)
+(or x239 (not x484))
+(or (not x256) x431)
+(or x256 (not x431))
+(or (not x261) x429)
+(or x261 (not x429))
+(or (not x252) x422)
+(or x252 (not x422))
+(or (not x257) x416)
+(or x257 (not x416))
+(or (not x253) x409)
+(or x253 (not x409))
+(or (not x263) x398)
+(or x263 (not x398))
+(or (not x282) x377)
+(or x282 (not x377))
+(or (not x283) x370)
+(or x283 (not x370))
+(or (not x11) x358)
+(or x11 (not x358))
+(or (not x12) x340)
+(or x12 (not x340))
+(or (not x13) x328)
+(or x13 (not x328))
+(or (not x14) x312)
+(or x14 (not x312))
+(or x762 x475)
+(or x760 x478)
+(or x758 x756)
+(or (not x23) (not x22) (not x21) (not x20))
+(or (not x23) (not x22) (not x21) x20)
+(or x293 x243)
+(or x289 x245)
+(or (not x14) (not x13) (not x12) (not x11))
+(or (not x14) (not x13) (not x12) x11)
+(or (not x8) x285)
+(or x8 (not x285))
+(or (not x6) x16)
+(or x6 (not x16))
+(or (not x7) x265)
+(or x7 (not x265))
+(or (not x2) x237)
+(or x2 (not x237))
+(or (not x3) x219)
+(or x3 (not x219))
+(or (not x4) x207)
+(or x4 (not x207))
+(or (not x5) x191)
+(or x5 (not x191))
+(or x293 x243)
+(or x289 x245)
+(or (not x14) (not x13) (not x12) (not x11))
+(or (not x14) (not x13) (not x12) x11)
+(or (not x5) (not x4) (not x3) (not x2))
+(or (not x5) (not x4) (not x3) x2)
+(or x172)
+))
diff --git a/test/regress/regress3/bmc-ibm-2.smt b/test/regress/regress3/bmc-ibm-2.smt
new file mode 100644
index 0000000..5f90bc6
--- /dev/null
+++ b/test/regress/regress3/bmc-ibm-2.smt
@@ -0,0 +1,14505 @@
+
+;;; Taken from SATLIB: SAT-encoded bounded model checking intances
+;;;source: http://people.cs.ubc.ca/~hoos/SATLIB/Benchmarks/SAT/BMC/bmc.tar.gz
+;;;described here: http://people.cs.ubc.ca/~hoos/SATLIB/Benchmarks/SAT/BMC/description.html
+;;;retrieved: Fri Jan 22 19:05:36 EST 2010
+;;;smt file generated using dimacs_to_smt.pl
+
+(benchmark b
+:status sat
+:logic QF_UF
+:extrapreds ((x1))
+: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))
+:extrapreds ((x770))
+:extrapreds ((x771))
+:extrapreds ((x772))
+:extrapreds ((x773))
+:extrapreds ((x774))
+:extrapreds ((x775))
+:extrapreds ((x776))
+:extrapreds ((x777))
+:extrapreds ((x778))
+:extrapreds ((x779))
+:extrapreds ((x780))
+:extrapreds ((x781))
+:extrapreds ((x782))
+:extrapreds ((x783))
+:extrapreds ((x784))
+:extrapreds ((x785))
+:extrapreds ((x786))
+:extrapreds ((x787))
+:extrapreds ((x788))
+:extrapreds ((x789))
+:extrapreds ((x790))
+:extrapreds ((x791))
+:extrapreds ((x792))
+:extrapreds ((x793))
+:extrapreds ((x794))
+:extrapreds ((x795))
+:extrapreds ((x796))
+:extrapreds ((x797))
+:extrapreds ((x798))
+:extrapreds ((x799))
+:extrapreds ((x800))
+:extrapreds ((x801))
+:extrapreds ((x802))
+:extrapreds ((x803))
+:extrapreds ((x804))
+:extrapreds ((x805))
+:extrapreds ((x806))
+:extrapreds ((x807))
+:extrapreds ((x808))
+:extrapreds ((x809))
+:extrapreds ((x810))
+:extrapreds ((x811))
+:extrapreds ((x812))
+:extrapreds ((x813))
+:extrapreds ((x814))
+:extrapreds ((x815))
+:extrapreds ((x816))
+:extrapreds ((x817))
+:extrapreds ((x818))
+:extrapreds ((x819))
+:extrapreds ((x820))
+:extrapreds ((x821))
+:extrapreds ((x822))
+:extrapreds ((x823))
+:extrapreds ((x824))
+:extrapreds ((x825))
+:extrapreds ((x826))
+:extrapreds ((x827))
+:extrapreds ((x828))
+:extrapreds ((x829))
+:extrapreds ((x830))
+:extrapreds ((x831))
+:extrapreds ((x832))
+:extrapreds ((x833))
+:extrapreds ((x834))
+:extrapreds ((x835))
+:extrapreds ((x836))
+:extrapreds ((x837))
+:extrapreds ((x838))
+:extrapreds ((x839))
+:extrapreds ((x840))
+:extrapreds ((x841))
+:extrapreds ((x842))
+:extrapreds ((x843))
+:extrapreds ((x844))
+:extrapreds ((x845))
+:extrapreds ((x846))
+:extrapreds ((x847))
+:extrapreds ((x848))
+:extrapreds ((x849))
+:extrapreds ((x850))
+:extrapreds ((x851))
+:extrapreds ((x852))
+:extrapreds ((x853))
+:extrapreds ((x854))
+:extrapreds ((x855))
+:extrapreds ((x856))
+:extrapreds ((x857))
+:extrapreds ((x858))
+:extrapreds ((x859))
+:extrapreds ((x860))
+:extrapreds ((x861))
+:extrapreds ((x862))
+:extrapreds ((x863))
+:extrapreds ((x864))
+:extrapreds ((x865))
+:extrapreds ((x866))
+:extrapreds ((x867))
+:extrapreds ((x868))
+:extrapreds ((x869))
+:extrapreds ((x870))
+:extrapreds ((x871))
+:extrapreds ((x872))
+:extrapreds ((x873))
+:extrapreds ((x874))
+:extrapreds ((x875))
+:extrapreds ((x876))
+:extrapreds ((x877))
+:extrapreds ((x878))
+:extrapreds ((x879))
+:extrapreds ((x880))
+:extrapreds ((x881))
+:extrapreds ((x882))
+:extrapreds ((x883))
+:extrapreds ((x884))
+:extrapreds ((x885))
+:extrapreds ((x886))
+:extrapreds ((x887))
+:extrapreds ((x888))
+:extrapreds ((x889))
+:extrapreds ((x890))
+:extrapreds ((x891))
+:extrapreds ((x892))
+:extrapreds ((x893))
+:extrapreds ((x894))
+:extrapreds ((x895))
+:extrapreds ((x896))
+:extrapreds ((x897))
+:extrapreds ((x898))
+:extrapreds ((x899))
+:extrapreds ((x900))
+:extrapreds ((x901))
+:extrapreds ((x902))
+:extrapreds ((x903))
+:extrapreds ((x904))
+:extrapreds ((x905))
+:extrapreds ((x906))
+:extrapreds ((x907))
+:extrapreds ((x908))
+:extrapreds ((x909))
+:extrapreds ((x910))
+:extrapreds ((x911))
+:extrapreds ((x912))
+:extrapreds ((x913))
+:extrapreds ((x914))
+:extrapreds ((x915))
+:extrapreds ((x916))
+:extrapreds ((x917))
+:extrapreds ((x918))
+:extrapreds ((x919))
+:extrapreds ((x920))
+:extrapreds ((x921))
+:extrapreds ((x922))
+:extrapreds ((x923))
+:extrapreds ((x924))
+:extrapreds ((x925))
+:extrapreds ((x926))
+:extrapreds ((x927))
+:extrapreds ((x928))
+:extrapreds ((x929))
+:extrapreds ((x930))
+:extrapreds ((x931))
+:extrapreds ((x932))
+:extrapreds ((x933))
+:extrapreds ((x934))
+:extrapreds ((x935))
+:extrapreds ((x936))
+:extrapreds ((x937))
+:extrapreds ((x938))
+:extrapreds ((x939))
+:extrapreds ((x940))
+:extrapreds ((x941))
+:extrapreds ((x942))
+:extrapreds ((x943))
+:extrapreds ((x944))
+:extrapreds ((x945))
+:extrapreds ((x946))
+:extrapreds ((x947))
+:extrapreds ((x948))
+:extrapreds ((x949))
+:extrapreds ((x950))
+:extrapreds ((x951))
+:extrapreds ((x952))
+:extrapreds ((x953))
+:extrapreds ((x954))
+:extrapreds ((x955))
+:extrapreds ((x956))
+:extrapreds ((x957))
+:extrapreds ((x958))
+:extrapreds ((x959))
+:extrapreds ((x960))
+:extrapreds ((x961))
+:extrapreds ((x962))
+:extrapreds ((x963))
+:extrapreds ((x964))
+:extrapreds ((x965))
+:extrapreds ((x966))
+:extrapreds ((x967))
+:extrapreds ((x968))
+:extrapreds ((x969))
+:extrapreds ((x970))
+:extrapreds ((x971))
+:extrapreds ((x972))
+:extrapreds ((x973))
+:extrapreds ((x974))
+:extrapreds ((x975))
+:extrapreds ((x976))
+:extrapreds ((x977))
+:extrapreds ((x978))
+:extrapreds ((x979))
+:extrapreds ((x980))
+:extrapreds ((x981))
+:extrapreds ((x982))
+:extrapreds ((x983))
+:extrapreds ((x984))
+:extrapreds ((x985))
+:extrapreds ((x986))
+:extrapreds ((x987))
+:extrapreds ((x988))
+:extrapreds ((x989))
+:extrapreds ((x990))
+:extrapreds ((x991))
+:extrapreds ((x992))
+:extrapreds ((x993))
+:extrapreds ((x994))
+:extrapreds ((x995))
+:extrapreds ((x996))
+:extrapreds ((x997))
+:extrapreds ((x998))
+:extrapreds ((x999))
+:extrapreds ((x1000))
+:extrapreds ((x1001))
+:extrapreds ((x1002))
+:extrapreds ((x1003))
+:extrapreds ((x1004))
+:extrapreds ((x1005))
+:extrapreds ((x1006))
+:extrapreds ((x1007))
+:extrapreds ((x1008))
+:extrapreds ((x1009))
+:extrapreds ((x1010))
+:extrapreds ((x1011))
+:extrapreds ((x1012))
+:extrapreds ((x1013))
+:extrapreds ((x1014))
+:extrapreds ((x1015))
+:extrapreds ((x1016))
+:extrapreds ((x1017))
+:extrapreds ((x1018))
+:extrapreds ((x1019))
+:extrapreds ((x1020))
+:extrapreds ((x1021))
+:extrapreds ((x1022))
+:extrapreds ((x1023))
+:extrapreds ((x1024))
+:extrapreds ((x1025))
+:extrapreds ((x1026))
+:extrapreds ((x1027))
+:extrapreds ((x1028))
+:extrapreds ((x1029))
+:extrapreds ((x1030))
+:extrapreds ((x1031))
+:extrapreds ((x1032))
+:extrapreds ((x1033))
+:extrapreds ((x1034))
+:extrapreds ((x1035))
+:extrapreds ((x1036))
+:extrapreds ((x1037))
+:extrapreds ((x1038))
+:extrapreds ((x1039))
+:extrapreds ((x1040))
+:extrapreds ((x1041))
+:extrapreds ((x1042))
+:extrapreds ((x1043))
+:extrapreds ((x1044))
+:extrapreds ((x1045))
+:extrapreds ((x1046))
+:extrapreds ((x1047))
+:extrapreds ((x1048))
+:extrapreds ((x1049))
+:extrapreds ((x1050))
+:extrapreds ((x1051))
+:extrapreds ((x1052))
+:extrapreds ((x1053))
+:extrapreds ((x1054))
+:extrapreds ((x1055))
+:extrapreds ((x1056))
+:extrapreds ((x1057))
+:extrapreds ((x1058))
+:extrapreds ((x1059))
+:extrapreds ((x1060))
+:extrapreds ((x1061))
+:extrapreds ((x1062))
+:extrapreds ((x1063))
+:extrapreds ((x1064))
+:extrapreds ((x1065))
+:extrapreds ((x1066))
+:extrapreds ((x1067))
+:extrapreds ((x1068))
+:extrapreds ((x1069))
+:extrapreds ((x1070))
+:extrapreds ((x1071))
+:extrapreds ((x1072))
+:extrapreds ((x1073))
+:extrapreds ((x1074))
+:extrapreds ((x1075))
+:extrapreds ((x1076))
+:extrapreds ((x1077))
+:extrapreds ((x1078))
+:extrapreds ((x1079))
+:extrapreds ((x1080))
+:extrapreds ((x1081))
+:extrapreds ((x1082))
+:extrapreds ((x1083))
+:extrapreds ((x1084))
+:extrapreds ((x1085))
+:extrapreds ((x1086))
+:extrapreds ((x1087))
+:extrapreds ((x1088))
+:extrapreds ((x1089))
+:extrapreds ((x1090))
+:extrapreds ((x1091))
+:extrapreds ((x1092))
+:extrapreds ((x1093))
+:extrapreds ((x1094))
+:extrapreds ((x1095))
+:extrapreds ((x1096))
+:extrapreds ((x1097))
+:extrapreds ((x1098))
+:extrapreds ((x1099))
+:extrapreds ((x1100))
+:extrapreds ((x1101))
+:extrapreds ((x1102))
+:extrapreds ((x1103))
+:extrapreds ((x1104))
+:extrapreds ((x1105))
+:extrapreds ((x1106))
+:extrapreds ((x1107))
+:extrapreds ((x1108))
+:extrapreds ((x1109))
+:extrapreds ((x1110))
+:extrapreds ((x1111))
+:extrapreds ((x1112))
+:extrapreds ((x1113))
+:extrapreds ((x1114))
+:extrapreds ((x1115))
+:extrapreds ((x1116))
+:extrapreds ((x1117))
+:extrapreds ((x1118))
+:extrapreds ((x1119))
+:extrapreds ((x1120))
+:extrapreds ((x1121))
+:extrapreds ((x1122))
+:extrapreds ((x1123))
+:extrapreds ((x1124))
+:extrapreds ((x1125))
+:extrapreds ((x1126))
+:extrapreds ((x1127))
+:extrapreds ((x1128))
+:extrapreds ((x1129))
+:extrapreds ((x1130))
+:extrapreds ((x1131))
+:extrapreds ((x1132))
+:extrapreds ((x1133))
+:extrapreds ((x1134))
+:extrapreds ((x1135))
+:extrapreds ((x1136))
+:extrapreds ((x1137))
+:extrapreds ((x1138))
+:extrapreds ((x1139))
+:extrapreds ((x1140))
+:extrapreds ((x1141))
+:extrapreds ((x1142))
+:extrapreds ((x1143))
+:extrapreds ((x1144))
+:extrapreds ((x1145))
+:extrapreds ((x1146))
+:extrapreds ((x1147))
+:extrapreds ((x1148))
+:extrapreds ((x1149))
+:extrapreds ((x1150))
+:extrapreds ((x1151))
+:extrapreds ((x1152))
+:extrapreds ((x1153))
+:extrapreds ((x1154))
+:extrapreds ((x1155))
+:extrapreds ((x1156))
+:extrapreds ((x1157))
+:extrapreds ((x1158))
+:extrapreds ((x1159))
+:extrapreds ((x1160))
+:extrapreds ((x1161))
+:extrapreds ((x1162))
+:extrapreds ((x1163))
+:extrapreds ((x1164))
+:extrapreds ((x1165))
+:extrapreds ((x1166))
+:extrapreds ((x1167))
+:extrapreds ((x1168))
+:extrapreds ((x1169))
+:extrapreds ((x1170))
+:extrapreds ((x1171))
+:extrapreds ((x1172))
+:extrapreds ((x1173))
+:extrapreds ((x1174))
+:extrapreds ((x1175))
+:extrapreds ((x1176))
+:extrapreds ((x1177))
+:extrapreds ((x1178))
+:extrapreds ((x1179))
+:extrapreds ((x1180))
+:extrapreds ((x1181))
+:extrapreds ((x1182))
+:extrapreds ((x1183))
+:extrapreds ((x1184))
+:extrapreds ((x1185))
+:extrapreds ((x1186))
+:extrapreds ((x1187))
+:extrapreds ((x1188))
+:extrapreds ((x1189))
+:extrapreds ((x1190))
+:extrapreds ((x1191))
+:extrapreds ((x1192))
+:extrapreds ((x1193))
+:extrapreds ((x1194))
+:extrapreds ((x1195))
+:extrapreds ((x1196))
+:extrapreds ((x1197))
+:extrapreds ((x1198))
+:extrapreds ((x1199))
+:extrapreds ((x1200))
+:extrapreds ((x1201))
+:extrapreds ((x1202))
+:extrapreds ((x1203))
+:extrapreds ((x1204))
+:extrapreds ((x1205))
+:extrapreds ((x1206))
+:extrapreds ((x1207))
+:extrapreds ((x1208))
+:extrapreds ((x1209))
+:extrapreds ((x1210))
+:extrapreds ((x1211))
+:extrapreds ((x1212))
+:extrapreds ((x1213))
+:extrapreds ((x1214))
+:extrapreds ((x1215))
+:extrapreds ((x1216))
+:extrapreds ((x1217))
+:extrapreds ((x1218))
+:extrapreds ((x1219))
+:extrapreds ((x1220))
+:extrapreds ((x1221))
+:extrapreds ((x1222))
+:extrapreds ((x1223))
+:extrapreds ((x1224))
+:extrapreds ((x1225))
+:extrapreds ((x1226))
+:extrapreds ((x1227))
+:extrapreds ((x1228))
+:extrapreds ((x1229))
+:extrapreds ((x1230))
+:extrapreds ((x1231))
+:extrapreds ((x1232))
+:extrapreds ((x1233))
+:extrapreds ((x1234))
+:extrapreds ((x1235))
+:extrapreds ((x1236))
+:extrapreds ((x1237))
+:extrapreds ((x1238))
+:extrapreds ((x1239))
+:extrapreds ((x1240))
+:extrapreds ((x1241))
+:extrapreds ((x1242))
+:extrapreds ((x1243))
+:extrapreds ((x1244))
+:extrapreds ((x1245))
+:extrapreds ((x1246))
+:extrapreds ((x1247))
+:extrapreds ((x1248))
+:extrapreds ((x1249))
+:extrapreds ((x1250))
+:extrapreds ((x1251))
+:extrapreds ((x1252))
+:extrapreds ((x1253))
+:extrapreds ((x1254))
+:extrapreds ((x1255))
+:extrapreds ((x1256))
+:extrapreds ((x1257))
+:extrapreds ((x1258))
+:extrapreds ((x1259))
+:extrapreds ((x1260))
+:extrapreds ((x1261))
+:extrapreds ((x1262))
+:extrapreds ((x1263))
+:extrapreds ((x1264))
+:extrapreds ((x1265))
+:extrapreds ((x1266))
+:extrapreds ((x1267))
+:extrapreds ((x1268))
+:extrapreds ((x1269))
+:extrapreds ((x1270))
+:extrapreds ((x1271))
+:extrapreds ((x1272))
+:extrapreds ((x1273))
+:extrapreds ((x1274))
+:extrapreds ((x1275))
+:extrapreds ((x1276))
+:extrapreds ((x1277))
+:extrapreds ((x1278))
+:extrapreds ((x1279))
+:extrapreds ((x1280))
+:extrapreds ((x1281))
+:extrapreds ((x1282))
+:extrapreds ((x1283))
+:extrapreds ((x1284))
+:extrapreds ((x1285))
+:extrapreds ((x1286))
+:extrapreds ((x1287))
+:extrapreds ((x1288))
+:extrapreds ((x1289))
+:extrapreds ((x1290))
+:extrapreds ((x1291))
+:extrapreds ((x1292))
+:extrapreds ((x1293))
+:extrapreds ((x1294))
+:extrapreds ((x1295))
+:extrapreds ((x1296))
+:extrapreds ((x1297))
+:extrapreds ((x1298))
+:extrapreds ((x1299))
+:extrapreds ((x1300))
+:extrapreds ((x1301))
+:extrapreds ((x1302))
+:extrapreds ((x1303))
+:extrapreds ((x1304))
+:extrapreds ((x1305))
+:extrapreds ((x1306))
+:extrapreds ((x1307))
+:extrapreds ((x1308))
+:extrapreds ((x1309))
+:extrapreds ((x1310))
+:extrapreds ((x1311))
+:extrapreds ((x1312))
+:extrapreds ((x1313))
+:extrapreds ((x1314))
+:extrapreds ((x1315))
+:extrapreds ((x1316))
+:extrapreds ((x1317))
+:extrapreds ((x1318))
+:extrapreds ((x1319))
+:extrapreds ((x1320))
+:extrapreds ((x1321))
+:extrapreds ((x1322))
+:extrapreds ((x1323))
+:extrapreds ((x1324))
+:extrapreds ((x1325))
+:extrapreds ((x1326))
+:extrapreds ((x1327))
+:extrapreds ((x1328))
+:extrapreds ((x1329))
+:extrapreds ((x1330))
+:extrapreds ((x1331))
+:extrapreds ((x1332))
+:extrapreds ((x1333))
+:extrapreds ((x1334))
+:extrapreds ((x1335))
+:extrapreds ((x1336))
+:extrapreds ((x1337))
+:extrapreds ((x1338))
+:extrapreds ((x1339))
+:extrapreds ((x1340))
+:extrapreds ((x1341))
+:extrapreds ((x1342))
+:extrapreds ((x1343))
+:extrapreds ((x1344))
+:extrapreds ((x1345))
+:extrapreds ((x1346))
+:extrapreds ((x1347))
+:extrapreds ((x1348))
+:extrapreds ((x1349))
+:extrapreds ((x1350))
+:extrapreds ((x1351))
+:extrapreds ((x1352))
+:extrapreds ((x1353))
+:extrapreds ((x1354))
+:extrapreds ((x1355))
+:extrapreds ((x1356))
+:extrapreds ((x1357))
+:extrapreds ((x1358))
+:extrapreds ((x1359))
+:extrapreds ((x1360))
+:extrapreds ((x1361))
+:extrapreds ((x1362))
+:extrapreds ((x1363))
+:extrapreds ((x1364))
+:extrapreds ((x1365))
+:extrapreds ((x1366))
+:extrapreds ((x1367))
+:extrapreds ((x1368))
+:extrapreds ((x1369))
+:extrapreds ((x1370))
+:extrapreds ((x1371))
+:extrapreds ((x1372))
+:extrapreds ((x1373))
+:extrapreds ((x1374))
+:extrapreds ((x1375))
+:extrapreds ((x1376))
+:extrapreds ((x1377))
+:extrapreds ((x1378))
+:extrapreds ((x1379))
+:extrapreds ((x1380))
+:extrapreds ((x1381))
+:extrapreds ((x1382))
+:extrapreds ((x1383))
+:extrapreds ((x1384))
+:extrapreds ((x1385))
+:extrapreds ((x1386))
+:extrapreds ((x1387))
+:extrapreds ((x1388))
+:extrapreds ((x1389))
+:extrapreds ((x1390))
+:extrapreds ((x1391))
+:extrapreds ((x1392))
+:extrapreds ((x1393))
+:extrapreds ((x1394))
+:extrapreds ((x1395))
+:extrapreds ((x1396))
+:extrapreds ((x1397))
+:extrapreds ((x1398))
+:extrapreds ((x1399))
+:extrapreds ((x1400))
+:extrapreds ((x1401))
+:extrapreds ((x1402))
+:extrapreds ((x1403))
+:extrapreds ((x1404))
+:extrapreds ((x1405))
+:extrapreds ((x1406))
+:extrapreds ((x1407))
+:extrapreds ((x1408))
+:extrapreds ((x1409))
+:extrapreds ((x1410))
+:extrapreds ((x1411))
+:extrapreds ((x1412))
+:extrapreds ((x1413))
+:extrapreds ((x1414))
+:extrapreds ((x1415))
+:extrapreds ((x1416))
+:extrapreds ((x1417))
+:extrapreds ((x1418))
+:extrapreds ((x1419))
+:extrapreds ((x1420))
+:extrapreds ((x1421))
+:extrapreds ((x1422))
+:extrapreds ((x1423))
+:extrapreds ((x1424))
+:extrapreds ((x1425))
+:extrapreds ((x1426))
+:extrapreds ((x1427))
+:extrapreds ((x1428))
+:extrapreds ((x1429))
+:extrapreds ((x1430))
+:extrapreds ((x1431))
+:extrapreds ((x1432))
+:extrapreds ((x1433))
+:extrapreds ((x1434))
+:extrapreds ((x1435))
+:extrapreds ((x1436))
+:extrapreds ((x1437))
+:extrapreds ((x1438))
+:extrapreds ((x1439))
+:extrapreds ((x1440))
+:extrapreds ((x1441))
+:extrapreds ((x1442))
+:extrapreds ((x1443))
+:extrapreds ((x1444))
+:extrapreds ((x1445))
+:extrapreds ((x1446))
+:extrapreds ((x1447))
+:extrapreds ((x1448))
+:extrapreds ((x1449))
+:extrapreds ((x1450))
+:extrapreds ((x1451))
+:extrapreds ((x1452))
+:extrapreds ((x1453))
+:extrapreds ((x1454))
+:extrapreds ((x1455))
+:extrapreds ((x1456))
+:extrapreds ((x1457))
+:extrapreds ((x1458))
+:extrapreds ((x1459))
+:extrapreds ((x1460))
+:extrapreds ((x1461))
+:extrapreds ((x1462))
+:extrapreds ((x1463))
+:extrapreds ((x1464))
+:extrapreds ((x1465))
+:extrapreds ((x1466))
+:extrapreds ((x1467))
+:extrapreds ((x1468))
+:extrapreds ((x1469))
+:extrapreds ((x1470))
+:extrapreds ((x1471))
+:extrapreds ((x1472))
+:extrapreds ((x1473))
+:extrapreds ((x1474))
+:extrapreds ((x1475))
+:extrapreds ((x1476))
+:extrapreds ((x1477))
+:extrapreds ((x1478))
+:extrapreds ((x1479))
+:extrapreds ((x1480))
+:extrapreds ((x1481))
+:extrapreds ((x1482))
+:extrapreds ((x1483))
+:extrapreds ((x1484))
+:extrapreds ((x1485))
+:extrapreds ((x1486))
+:extrapreds ((x1487))
+:extrapreds ((x1488))
+:extrapreds ((x1489))
+:extrapreds ((x1490))
+:extrapreds ((x1491))
+:extrapreds ((x1492))
+:extrapreds ((x1493))
+:extrapreds ((x1494))
+:extrapreds ((x1495))
+:extrapreds ((x1496))
+:extrapreds ((x1497))
+:extrapreds ((x1498))
+:extrapreds ((x1499))
+:extrapreds ((x1500))
+:extrapreds ((x1501))
+:extrapreds ((x1502))
+:extrapreds ((x1503))
+:extrapreds ((x1504))
+:extrapreds ((x1505))
+:extrapreds ((x1506))
+:extrapreds ((x1507))
+:extrapreds ((x1508))
+:extrapreds ((x1509))
+:extrapreds ((x1510))
+:extrapreds ((x1511))
+:extrapreds ((x1512))
+:extrapreds ((x1513))
+:extrapreds ((x1514))
+:extrapreds ((x1515))
+:extrapreds ((x1516))
+:extrapreds ((x1517))
+:extrapreds ((x1518))
+:extrapreds ((x1519))
+:extrapreds ((x1520))
+:extrapreds ((x1521))
+:extrapreds ((x1522))
+:extrapreds ((x1523))
+:extrapreds ((x1524))
+:extrapreds ((x1525))
+:extrapreds ((x1526))
+:extrapreds ((x1527))
+:extrapreds ((x1528))
+:extrapreds ((x1529))
+:extrapreds ((x1530))
+:extrapreds ((x1531))
+:extrapreds ((x1532))
+:extrapreds ((x1533))
+:extrapreds ((x1534))
+:extrapreds ((x1535))
+:extrapreds ((x1536))
+:extrapreds ((x1537))
+:extrapreds ((x1538))
+:extrapreds ((x1539))
+:extrapreds ((x1540))
+:extrapreds ((x1541))
+:extrapreds ((x1542))
+:extrapreds ((x1543))
+:extrapreds ((x1544))
+:extrapreds ((x1545))
+:extrapreds ((x1546))
+:extrapreds ((x1547))
+:extrapreds ((x1548))
+:extrapreds ((x1549))
+:extrapreds ((x1550))
+:extrapreds ((x1551))
+:extrapreds ((x1552))
+:extrapreds ((x1553))
+:extrapreds ((x1554))
+:extrapreds ((x1555))
+:extrapreds ((x1556))
+:extrapreds ((x1557))
+:extrapreds ((x1558))
+:extrapreds ((x1559))
+:extrapreds ((x1560))
+:extrapreds ((x1561))
+:extrapreds ((x1562))
+:extrapreds ((x1563))
+:extrapreds ((x1564))
+:extrapreds ((x1565))
+:extrapreds ((x1566))
+:extrapreds ((x1567))
+:extrapreds ((x1568))
+:extrapreds ((x1569))
+:extrapreds ((x1570))
+:extrapreds ((x1571))
+:extrapreds ((x1572))
+:extrapreds ((x1573))
+:extrapreds ((x1574))
+:extrapreds ((x1575))
+:extrapreds ((x1576))
+:extrapreds ((x1577))
+:extrapreds ((x1578))
+:extrapreds ((x1579))
+:extrapreds ((x1580))
+:extrapreds ((x1581))
+:extrapreds ((x1582))
+:extrapreds ((x1583))
+:extrapreds ((x1584))
+:extrapreds ((x1585))
+:extrapreds ((x1586))
+:extrapreds ((x1587))
+:extrapreds ((x1588))
+:extrapreds ((x1589))
+:extrapreds ((x1590))
+:extrapreds ((x1591))
+:extrapreds ((x1592))
+:extrapreds ((x1593))
+:extrapreds ((x1594))
+:extrapreds ((x1595))
+:extrapreds ((x1596))
+:extrapreds ((x1597))
+:extrapreds ((x1598))
+:extrapreds ((x1599))
+:extrapreds ((x1600))
+:extrapreds ((x1601))
+:extrapreds ((x1602))
+:extrapreds ((x1603))
+:extrapreds ((x1604))
+:extrapreds ((x1605))
+:extrapreds ((x1606))
+:extrapreds ((x1607))
+:extrapreds ((x1608))
+:extrapreds ((x1609))
+:extrapreds ((x1610))
+:extrapreds ((x1611))
+:extrapreds ((x1612))
+:extrapreds ((x1613))
+:extrapreds ((x1614))
+:extrapreds ((x1615))
+:extrapreds ((x1616))
+:extrapreds ((x1617))
+:extrapreds ((x1618))
+:extrapreds ((x1619))
+:extrapreds ((x1620))
+:extrapreds ((x1621))
+:extrapreds ((x1622))
+:extrapreds ((x1623))
+:extrapreds ((x1624))
+:extrapreds ((x1625))
+:extrapreds ((x1626))
+:extrapreds ((x1627))
+:extrapreds ((x1628))
+:extrapreds ((x1629))
+:extrapreds ((x1630))
+:extrapreds ((x1631))
+:extrapreds ((x1632))
+:extrapreds ((x1633))
+:extrapreds ((x1634))
+:extrapreds ((x1635))
+:extrapreds ((x1636))
+:extrapreds ((x1637))
+:extrapreds ((x1638))
+:extrapreds ((x1639))
+:extrapreds ((x1640))
+:extrapreds ((x1641))
+:extrapreds ((x1642))
+:extrapreds ((x1643))
+:extrapreds ((x1644))
+:extrapreds ((x1645))
+:extrapreds ((x1646))
+:extrapreds ((x1647))
+:extrapreds ((x1648))
+:extrapreds ((x1649))
+:extrapreds ((x1650))
+:extrapreds ((x1651))
+:extrapreds ((x1652))
+:extrapreds ((x1653))
+:extrapreds ((x1654))
+:extrapreds ((x1655))
+:extrapreds ((x1656))
+:extrapreds ((x1657))
+:extrapreds ((x1658))
+:extrapreds ((x1659))
+:extrapreds ((x1660))
+:extrapreds ((x1661))
+:extrapreds ((x1662))
+:extrapreds ((x1663))
+:extrapreds ((x1664))
+:extrapreds ((x1665))
+:extrapreds ((x1666))
+:extrapreds ((x1667))
+:extrapreds ((x1668))
+:extrapreds ((x1669))
+:extrapreds ((x1670))
+:extrapreds ((x1671))
+:extrapreds ((x1672))
+:extrapreds ((x1673))
+:extrapreds ((x1674))
+:extrapreds ((x1675))
+:extrapreds ((x1676))
+:extrapreds ((x1677))
+:extrapreds ((x1678))
+:extrapreds ((x1679))
+:extrapreds ((x1680))
+:extrapreds ((x1681))
+:extrapreds ((x1682))
+:extrapreds ((x1683))
+:extrapreds ((x1684))
+:extrapreds ((x1685))
+:extrapreds ((x1686))
+:extrapreds ((x1687))
+:extrapreds ((x1688))
+:extrapreds ((x1689))
+:extrapreds ((x1690))
+:extrapreds ((x1691))
+:extrapreds ((x1692))
+:extrapreds ((x1693))
+:extrapreds ((x1694))
+:extrapreds ((x1695))
+:extrapreds ((x1696))
+:extrapreds ((x1697))
+:extrapreds ((x1698))
+:extrapreds ((x1699))
+:extrapreds ((x1700))
+:extrapreds ((x1701))
+:extrapreds ((x1702))
+:extrapreds ((x1703))
+:extrapreds ((x1704))
+:extrapreds ((x1705))
+:extrapreds ((x1706))
+:extrapreds ((x1707))
+:extrapreds ((x1708))
+:extrapreds ((x1709))
+:extrapreds ((x1710))
+:extrapreds ((x1711))
+:extrapreds ((x1712))
+:extrapreds ((x1713))
+:extrapreds ((x1714))
+:extrapreds ((x1715))
+:extrapreds ((x1716))
+:extrapreds ((x1717))
+:extrapreds ((x1718))
+:extrapreds ((x1719))
+:extrapreds ((x1720))
+:extrapreds ((x1721))
+:extrapreds ((x1722))
+:extrapreds ((x1723))
+:extrapreds ((x1724))
+:extrapreds ((x1725))
+:extrapreds ((x1726))
+:extrapreds ((x1727))
+:extrapreds ((x1728))
+:extrapreds ((x1729))
+:extrapreds ((x1730))
+:extrapreds ((x1731))
+:extrapreds ((x1732))
+:extrapreds ((x1733))
+:extrapreds ((x1734))
+:extrapreds ((x1735))
+:extrapreds ((x1736))
+:extrapreds ((x1737))
+:extrapreds ((x1738))
+:extrapreds ((x1739))
+:extrapreds ((x1740))
+:extrapreds ((x1741))
+:extrapreds ((x1742))
+:extrapreds ((x1743))
+:extrapreds ((x1744))
+:extrapreds ((x1745))
+:extrapreds ((x1746))
+:extrapreds ((x1747))
+:extrapreds ((x1748))
+:extrapreds ((x1749))
+:extrapreds ((x1750))
+:extrapreds ((x1751))
+:extrapreds ((x1752))
+:extrapreds ((x1753))
+:extrapreds ((x1754))
+:extrapreds ((x1755))
+:extrapreds ((x1756))
+:extrapreds ((x1757))
+:extrapreds ((x1758))
+:extrapreds ((x1759))
+:extrapreds ((x1760))
+:extrapreds ((x1761))
+:extrapreds ((x1762))
+:extrapreds ((x1763))
+:extrapreds ((x1764))
+:extrapreds ((x1765))
+:extrapreds ((x1766))
+:extrapreds ((x1767))
+:extrapreds ((x1768))
+:extrapreds ((x1769))
+:extrapreds ((x1770))
+:extrapreds ((x1771))
+:extrapreds ((x1772))
+:extrapreds ((x1773))
+:extrapreds ((x1774))
+:extrapreds ((x1775))
+:extrapreds ((x1776))
+:extrapreds ((x1777))
+:extrapreds ((x1778))
+:extrapreds ((x1779))
+:extrapreds ((x1780))
+:extrapreds ((x1781))
+:extrapreds ((x1782))
+:extrapreds ((x1783))
+:extrapreds ((x1784))
+:extrapreds ((x1785))
+:extrapreds ((x1786))
+:extrapreds ((x1787))
+:extrapreds ((x1788))
+:extrapreds ((x1789))
+:extrapreds ((x1790))
+:extrapreds ((x1791))
+:extrapreds ((x1792))
+:extrapreds ((x1793))
+:extrapreds ((x1794))
+:extrapreds ((x1795))
+:extrapreds ((x1796))
+:extrapreds ((x1797))
+:extrapreds ((x1798))
+:extrapreds ((x1799))
+:extrapreds ((x1800))
+:extrapreds ((x1801))
+:extrapreds ((x1802))
+:extrapreds ((x1803))
+:extrapreds ((x1804))
+:extrapreds ((x1805))
+:extrapreds ((x1806))
+:extrapreds ((x1807))
+:extrapreds ((x1808))
+:extrapreds ((x1809))
+:extrapreds ((x1810))
+:extrapreds ((x1811))
+:extrapreds ((x1812))
+:extrapreds ((x1813))
+:extrapreds ((x1814))
+:extrapreds ((x1815))
+:extrapreds ((x1816))
+:extrapreds ((x1817))
+:extrapreds ((x1818))
+:extrapreds ((x1819))
+:extrapreds ((x1820))
+:extrapreds ((x1821))
+:extrapreds ((x1822))
+:extrapreds ((x1823))
+:extrapreds ((x1824))
+:extrapreds ((x1825))
+:extrapreds ((x1826))
+:extrapreds ((x1827))
+:extrapreds ((x1828))
+:extrapreds ((x1829))
+:extrapreds ((x1830))
+:extrapreds ((x1831))
+:extrapreds ((x1832))
+:extrapreds ((x1833))
+:extrapreds ((x1834))
+:extrapreds ((x1835))
+:extrapreds ((x1836))
+:extrapreds ((x1837))
+:extrapreds ((x1838))
+:extrapreds ((x1839))
+:extrapreds ((x1840))
+:extrapreds ((x1841))
+:extrapreds ((x1842))
+:extrapreds ((x1843))
+:extrapreds ((x1844))
+:extrapreds ((x1845))
+:extrapreds ((x1846))
+:extrapreds ((x1847))
+:extrapreds ((x1848))
+:extrapreds ((x1849))
+:extrapreds ((x1850))
+:extrapreds ((x1851))
+:extrapreds ((x1852))
+:extrapreds ((x1853))
+:extrapreds ((x1854))
+:extrapreds ((x1855))
+:extrapreds ((x1856))
+:extrapreds ((x1857))
+:extrapreds ((x1858))
+:extrapreds ((x1859))
+:extrapreds ((x1860))
+:extrapreds ((x1861))
+:extrapreds ((x1862))
+:extrapreds ((x1863))
+:extrapreds ((x1864))
+:extrapreds ((x1865))
+:extrapreds ((x1866))
+:extrapreds ((x1867))
+:extrapreds ((x1868))
+:extrapreds ((x1869))
+:extrapreds ((x1870))
+:extrapreds ((x1871))
+:extrapreds ((x1872))
+:extrapreds ((x1873))
+:extrapreds ((x1874))
+:extrapreds ((x1875))
+:extrapreds ((x1876))
+:extrapreds ((x1877))
+:extrapreds ((x1878))
+:extrapreds ((x1879))
+:extrapreds ((x1880))
+:extrapreds ((x1881))
+:extrapreds ((x1882))
+:extrapreds ((x1883))
+:extrapreds ((x1884))
+:extrapreds ((x1885))
+:extrapreds ((x1886))
+:extrapreds ((x1887))
+:extrapreds ((x1888))
+:extrapreds ((x1889))
+:extrapreds ((x1890))
+:extrapreds ((x1891))
+:extrapreds ((x1892))
+:extrapreds ((x1893))
+:extrapreds ((x1894))
+:extrapreds ((x1895))
+:extrapreds ((x1896))
+:extrapreds ((x1897))
+:extrapreds ((x1898))
+:extrapreds ((x1899))
+:extrapreds ((x1900))
+:extrapreds ((x1901))
+:extrapreds ((x1902))
+:extrapreds ((x1903))
+:extrapreds ((x1904))
+:extrapreds ((x1905))
+:extrapreds ((x1906))
+:extrapreds ((x1907))
+:extrapreds ((x1908))
+:extrapreds ((x1909))
+:extrapreds ((x1910))
+:extrapreds ((x1911))
+:extrapreds ((x1912))
+:extrapreds ((x1913))
+:extrapreds ((x1914))
+:extrapreds ((x1915))
+:extrapreds ((x1916))
+:extrapreds ((x1917))
+:extrapreds ((x1918))
+:extrapreds ((x1919))
+:extrapreds ((x1920))
+:extrapreds ((x1921))
+:extrapreds ((x1922))
+:extrapreds ((x1923))
+:extrapreds ((x1924))
+:extrapreds ((x1925))
+:extrapreds ((x1926))
+:extrapreds ((x1927))
+:extrapreds ((x1928))
+:extrapreds ((x1929))
+:extrapreds ((x1930))
+:extrapreds ((x1931))
+:extrapreds ((x1932))
+:extrapreds ((x1933))
+:extrapreds ((x1934))
+:extrapreds ((x1935))
+:extrapreds ((x1936))
+:extrapreds ((x1937))
+:extrapreds ((x1938))
+:extrapreds ((x1939))
+:extrapreds ((x1940))
+:extrapreds ((x1941))
+:extrapreds ((x1942))
+:extrapreds ((x1943))
+:extrapreds ((x1944))
+:extrapreds ((x1945))
+:extrapreds ((x1946))
+:extrapreds ((x1947))
+:extrapreds ((x1948))
+:extrapreds ((x1949))
+:extrapreds ((x1950))
+:extrapreds ((x1951))
+:extrapreds ((x1952))
+:extrapreds ((x1953))
+:extrapreds ((x1954))
+:extrapreds ((x1955))
+:extrapreds ((x1956))
+:extrapreds ((x1957))
+:extrapreds ((x1958))
+:extrapreds ((x1959))
+:extrapreds ((x1960))
+:extrapreds ((x1961))
+:extrapreds ((x1962))
+:extrapreds ((x1963))
+:extrapreds ((x1964))
+:extrapreds ((x1965))
+:extrapreds ((x1966))
+:extrapreds ((x1967))
+:extrapreds ((x1968))
+:extrapreds ((x1969))
+:extrapreds ((x1970))
+:extrapreds ((x1971))
+:extrapreds ((x1972))
+:extrapreds ((x1973))
+:extrapreds ((x1974))
+:extrapreds ((x1975))
+:extrapreds ((x1976))
+:extrapreds ((x1977))
+:extrapreds ((x1978))
+:extrapreds ((x1979))
+:extrapreds ((x1980))
+:extrapreds ((x1981))
+:extrapreds ((x1982))
+:extrapreds ((x1983))
+:extrapreds ((x1984))
+:extrapreds ((x1985))
+:extrapreds ((x1986))
+:extrapreds ((x1987))
+:extrapreds ((x1988))
+:extrapreds ((x1989))
+:extrapreds ((x1990))
+:extrapreds ((x1991))
+:extrapreds ((x1992))
+:extrapreds ((x1993))
+:extrapreds ((x1994))
+:extrapreds ((x1995))
+:extrapreds ((x1996))
+:extrapreds ((x1997))
+:extrapreds ((x1998))
+:extrapreds ((x1999))
+:extrapreds ((x2000))
+:extrapreds ((x2001))
+:extrapreds ((x2002))
+:extrapreds ((x2003))
+:extrapreds ((x2004))
+:extrapreds ((x2005))
+:extrapreds ((x2006))
+:extrapreds ((x2007))
+:extrapreds ((x2008))
+:extrapreds ((x2009))
+:extrapreds ((x2010))
+:extrapreds ((x2011))
+:extrapreds ((x2012))
+:extrapreds ((x2013))
+:extrapreds ((x2014))
+:extrapreds ((x2015))
+:extrapreds ((x2016))
+:extrapreds ((x2017))
+:extrapreds ((x2018))
+:extrapreds ((x2019))
+:extrapreds ((x2020))
+:extrapreds ((x2021))
+:extrapreds ((x2022))
+:extrapreds ((x2023))
+:extrapreds ((x2024))
+:extrapreds ((x2025))
+:extrapreds ((x2026))
+:extrapreds ((x2027))
+:extrapreds ((x2028))
+:extrapreds ((x2029))
+:extrapreds ((x2030))
+:extrapreds ((x2031))
+:extrapreds ((x2032))
+:extrapreds ((x2033))
+:extrapreds ((x2034))
+:extrapreds ((x2035))
+:extrapreds ((x2036))
+:extrapreds ((x2037))
+:extrapreds ((x2038))
+:extrapreds ((x2039))
+:extrapreds ((x2040))
+:extrapreds ((x2041))
+:extrapreds ((x2042))
+:extrapreds ((x2043))
+:extrapreds ((x2044))
+:extrapreds ((x2045))
+:extrapreds ((x2046))
+:extrapreds ((x2047))
+:extrapreds ((x2048))
+:extrapreds ((x2049))
+:extrapreds ((x2050))
+:extrapreds ((x2051))
+:extrapreds ((x2052))
+:extrapreds ((x2053))
+:extrapreds ((x2054))
+:extrapreds ((x2055))
+:extrapreds ((x2056))
+:extrapreds ((x2057))
+:extrapreds ((x2058))
+:extrapreds ((x2059))
+:extrapreds ((x2060))
+:extrapreds ((x2061))
+:extrapreds ((x2062))
+:extrapreds ((x2063))
+:extrapreds ((x2064))
+:extrapreds ((x2065))
+:extrapreds ((x2066))
+:extrapreds ((x2067))
+:extrapreds ((x2068))
+:extrapreds ((x2069))
+:extrapreds ((x2070))
+:extrapreds ((x2071))
+:extrapreds ((x2072))
+:extrapreds ((x2073))
+:extrapreds ((x2074))
+:extrapreds ((x2075))
+:extrapreds ((x2076))
+:extrapreds ((x2077))
+:extrapreds ((x2078))
+:extrapreds ((x2079))
+:extrapreds ((x2080))
+:extrapreds ((x2081))
+:extrapreds ((x2082))
+:extrapreds ((x2083))
+:extrapreds ((x2084))
+:extrapreds ((x2085))
+:extrapreds ((x2086))
+:extrapreds ((x2087))
+:extrapreds ((x2088))
+:extrapreds ((x2089))
+:extrapreds ((x2090))
+:extrapreds ((x2091))
+:extrapreds ((x2092))
+:extrapreds ((x2093))
+:extrapreds ((x2094))
+:extrapreds ((x2095))
+:extrapreds ((x2096))
+:extrapreds ((x2097))
+:extrapreds ((x2098))
+:extrapreds ((x2099))
+:extrapreds ((x2100))
+:extrapreds ((x2101))
+:extrapreds ((x2102))
+:extrapreds ((x2103))
+:extrapreds ((x2104))
+:extrapreds ((x2105))
+:extrapreds ((x2106))
+:extrapreds ((x2107))
+:extrapreds ((x2108))
+:extrapreds ((x2109))
+:extrapreds ((x2110))
+:extrapreds ((x2111))
+:extrapreds ((x2112))
+:extrapreds ((x2113))
+:extrapreds ((x2114))
+:extrapreds ((x2115))
+:extrapreds ((x2116))
+:extrapreds ((x2117))
+:extrapreds ((x2118))
+:extrapreds ((x2119))
+:extrapreds ((x2120))
+:extrapreds ((x2121))
+:extrapreds ((x2122))
+:extrapreds ((x2123))
+:extrapreds ((x2124))
+:extrapreds ((x2125))
+:extrapreds ((x2126))
+:extrapreds ((x2127))
+:extrapreds ((x2128))
+:extrapreds ((x2129))
+:extrapreds ((x2130))
+:extrapreds ((x2131))
+:extrapreds ((x2132))
+:extrapreds ((x2133))
+:extrapreds ((x2134))
+:extrapreds ((x2135))
+:extrapreds ((x2136))
+:extrapreds ((x2137))
+:extrapreds ((x2138))
+:extrapreds ((x2139))
+:extrapreds ((x2140))
+:extrapreds ((x2141))
+:extrapreds ((x2142))
+:extrapreds ((x2143))
+:extrapreds ((x2144))
+:extrapreds ((x2145))
+:extrapreds ((x2146))
+:extrapreds ((x2147))
+:extrapreds ((x2148))
+:extrapreds ((x2149))
+:extrapreds ((x2150))
+:extrapreds ((x2151))
+:extrapreds ((x2152))
+:extrapreds ((x2153))
+:extrapreds ((x2154))
+:extrapreds ((x2155))
+:extrapreds ((x2156))
+:extrapreds ((x2157))
+:extrapreds ((x2158))
+:extrapreds ((x2159))
+:extrapreds ((x2160))
+:extrapreds ((x2161))
+:extrapreds ((x2162))
+:extrapreds ((x2163))
+:extrapreds ((x2164))
+:extrapreds ((x2165))
+:extrapreds ((x2166))
+:extrapreds ((x2167))
+:extrapreds ((x2168))
+:extrapreds ((x2169))
+:extrapreds ((x2170))
+:extrapreds ((x2171))
+:extrapreds ((x2172))
+:extrapreds ((x2173))
+:extrapreds ((x2174))
+:extrapreds ((x2175))
+:extrapreds ((x2176))
+:extrapreds ((x2177))
+:extrapreds ((x2178))
+:extrapreds ((x2179))
+:extrapreds ((x2180))
+:extrapreds ((x2181))
+:extrapreds ((x2182))
+:extrapreds ((x2183))
+:extrapreds ((x2184))
+:extrapreds ((x2185))
+:extrapreds ((x2186))
+:extrapreds ((x2187))
+:extrapreds ((x2188))
+:extrapreds ((x2189))
+:extrapreds ((x2190))
+:extrapreds ((x2191))
+:extrapreds ((x2192))
+:extrapreds ((x2193))
+:extrapreds ((x2194))
+:extrapreds ((x2195))
+:extrapreds ((x2196))
+:extrapreds ((x2197))
+:extrapreds ((x2198))
+:extrapreds ((x2199))
+:extrapreds ((x2200))
+:extrapreds ((x2201))
+:extrapreds ((x2202))
+:extrapreds ((x2203))
+:extrapreds ((x2204))
+:extrapreds ((x2205))
+:extrapreds ((x2206))
+:extrapreds ((x2207))
+:extrapreds ((x2208))
+:extrapreds ((x2209))
+:extrapreds ((x2210))
+:extrapreds ((x2211))
+:extrapreds ((x2212))
+:extrapreds ((x2213))
+:extrapreds ((x2214))
+:extrapreds ((x2215))
+:extrapreds ((x2216))
+:extrapreds ((x2217))
+:extrapreds ((x2218))
+:extrapreds ((x2219))
+:extrapreds ((x2220))
+:extrapreds ((x2221))
+:extrapreds ((x2222))
+:extrapreds ((x2223))
+:extrapreds ((x2224))
+:extrapreds ((x2225))
+:extrapreds ((x2226))
+:extrapreds ((x2227))
+:extrapreds ((x2228))
+:extrapreds ((x2229))
+:extrapreds ((x2230))
+:extrapreds ((x2231))
+:extrapreds ((x2232))
+:extrapreds ((x2233))
+:extrapreds ((x2234))
+:extrapreds ((x2235))
+:extrapreds ((x2236))
+:extrapreds ((x2237))
+:extrapreds ((x2238))
+:extrapreds ((x2239))
+:extrapreds ((x2240))
+:extrapreds ((x2241))
+:extrapreds ((x2242))
+:extrapreds ((x2243))
+:extrapreds ((x2244))
+:extrapreds ((x2245))
+:extrapreds ((x2246))
+:extrapreds ((x2247))
+:extrapreds ((x2248))
+:extrapreds ((x2249))
+:extrapreds ((x2250))
+:extrapreds ((x2251))
+:extrapreds ((x2252))
+:extrapreds ((x2253))
+:extrapreds ((x2254))
+:extrapreds ((x2255))
+:extrapreds ((x2256))
+:extrapreds ((x2257))
+:extrapreds ((x2258))
+:extrapreds ((x2259))
+:extrapreds ((x2260))
+:extrapreds ((x2261))
+:extrapreds ((x2262))
+:extrapreds ((x2263))
+:extrapreds ((x2264))
+:extrapreds ((x2265))
+:extrapreds ((x2266))
+:extrapreds ((x2267))
+:extrapreds ((x2268))
+:extrapreds ((x2269))
+:extrapreds ((x2270))
+:extrapreds ((x2271))
+:extrapreds ((x2272))
+:extrapreds ((x2273))
+:extrapreds ((x2274))
+:extrapreds ((x2275))
+:extrapreds ((x2276))
+:extrapreds ((x2277))
+:extrapreds ((x2278))
+:extrapreds ((x2279))
+:extrapreds ((x2280))
+:extrapreds ((x2281))
+:extrapreds ((x2282))
+:extrapreds ((x2283))
+:extrapreds ((x2284))
+:extrapreds ((x2285))
+:extrapreds ((x2286))
+:extrapreds ((x2287))
+:extrapreds ((x2288))
+:extrapreds ((x2289))
+:extrapreds ((x2290))
+:extrapreds ((x2291))
+:extrapreds ((x2292))
+:extrapreds ((x2293))
+:extrapreds ((x2294))
+:extrapreds ((x2295))
+:extrapreds ((x2296))
+:extrapreds ((x2297))
+:extrapreds ((x2298))
+:extrapreds ((x2299))
+:extrapreds ((x2300))
+:extrapreds ((x2301))
+:extrapreds ((x2302))
+:extrapreds ((x2303))
+:extrapreds ((x2304))
+:extrapreds ((x2305))
+:extrapreds ((x2306))
+:extrapreds ((x2307))
+:extrapreds ((x2308))
+:extrapreds ((x2309))
+:extrapreds ((x2310))
+:extrapreds ((x2311))
+:extrapreds ((x2312))
+:extrapreds ((x2313))
+:extrapreds ((x2314))
+:extrapreds ((x2315))
+:extrapreds ((x2316))
+:extrapreds ((x2317))
+:extrapreds ((x2318))
+:extrapreds ((x2319))
+:extrapreds ((x2320))
+:extrapreds ((x2321))
+:extrapreds ((x2322))
+:extrapreds ((x2323))
+:extrapreds ((x2324))
+:extrapreds ((x2325))
+:extrapreds ((x2326))
+:extrapreds ((x2327))
+:extrapreds ((x2328))
+:extrapreds ((x2329))
+:extrapreds ((x2330))
+:extrapreds ((x2331))
+:extrapreds ((x2332))
+:extrapreds ((x2333))
+:extrapreds ((x2334))
+:extrapreds ((x2335))
+:extrapreds ((x2336))
+:extrapreds ((x2337))
+:extrapreds ((x2338))
+:extrapreds ((x2339))
+:extrapreds ((x2340))
+:extrapreds ((x2341))
+:extrapreds ((x2342))
+:extrapreds ((x2343))
+:extrapreds ((x2344))
+:extrapreds ((x2345))
+:extrapreds ((x2346))
+:extrapreds ((x2347))
+:extrapreds ((x2348))
+:extrapreds ((x2349))
+:extrapreds ((x2350))
+:extrapreds ((x2351))
+:extrapreds ((x2352))
+:extrapreds ((x2353))
+:extrapreds ((x2354))
+:extrapreds ((x2355))
+:extrapreds ((x2356))
+:extrapreds ((x2357))
+:extrapreds ((x2358))
+:extrapreds ((x2359))
+:extrapreds ((x2360))
+:extrapreds ((x2361))
+:extrapreds ((x2362))
+:extrapreds ((x2363))
+:extrapreds ((x2364))
+:extrapreds ((x2365))
+:extrapreds ((x2366))
+:extrapreds ((x2367))
+:extrapreds ((x2368))
+:extrapreds ((x2369))
+:extrapreds ((x2370))
+:extrapreds ((x2371))
+:extrapreds ((x2372))
+:extrapreds ((x2373))
+:extrapreds ((x2374))
+:extrapreds ((x2375))
+:extrapreds ((x2376))
+:extrapreds ((x2377))
+:extrapreds ((x2378))
+:extrapreds ((x2379))
+:extrapreds ((x2380))
+:extrapreds ((x2381))
+:extrapreds ((x2382))
+:extrapreds ((x2383))
+:extrapreds ((x2384))
+:extrapreds ((x2385))
+:extrapreds ((x2386))
+:extrapreds ((x2387))
+:extrapreds ((x2388))
+:extrapreds ((x2389))
+:extrapreds ((x2390))
+:extrapreds ((x2391))
+:extrapreds ((x2392))
+:extrapreds ((x2393))
+:extrapreds ((x2394))
+:extrapreds ((x2395))
+:extrapreds ((x2396))
+:extrapreds ((x2397))
+:extrapreds ((x2398))
+:extrapreds ((x2399))
+:extrapreds ((x2400))
+:extrapreds ((x2401))
+:extrapreds ((x2402))
+:extrapreds ((x2403))
+:extrapreds ((x2404))
+:extrapreds ((x2405))
+:extrapreds ((x2406))
+:extrapreds ((x2407))
+:extrapreds ((x2408))
+:extrapreds ((x2409))
+:extrapreds ((x2410))
+:extrapreds ((x2411))
+:extrapreds ((x2412))
+:extrapreds ((x2413))
+:extrapreds ((x2414))
+:extrapreds ((x2415))
+:extrapreds ((x2416))
+:extrapreds ((x2417))
+:extrapreds ((x2418))
+:extrapreds ((x2419))
+:extrapreds ((x2420))
+:extrapreds ((x2421))
+:extrapreds ((x2422))
+:extrapreds ((x2423))
+:extrapreds ((x2424))
+:extrapreds ((x2425))
+:extrapreds ((x2426))
+:extrapreds ((x2427))
+:extrapreds ((x2428))
+:extrapreds ((x2429))
+:extrapreds ((x2430))
+:extrapreds ((x2431))
+:extrapreds ((x2432))
+:extrapreds ((x2433))
+:extrapreds ((x2434))
+:extrapreds ((x2435))
+:extrapreds ((x2436))
+:extrapreds ((x2437))
+:extrapreds ((x2438))
+:extrapreds ((x2439))
+:extrapreds ((x2440))
+:extrapreds ((x2441))
+:extrapreds ((x2442))
+:extrapreds ((x2443))
+:extrapreds ((x2444))
+:extrapreds ((x2445))
+:extrapreds ((x2446))
+:extrapreds ((x2447))
+:extrapreds ((x2448))
+:extrapreds ((x2449))
+:extrapreds ((x2450))
+:extrapreds ((x2451))
+:extrapreds ((x2452))
+:extrapreds ((x2453))
+:extrapreds ((x2454))
+:extrapreds ((x2455))
+:extrapreds ((x2456))
+:extrapreds ((x2457))
+:extrapreds ((x2458))
+:extrapreds ((x2459))
+:extrapreds ((x2460))
+:extrapreds ((x2461))
+:extrapreds ((x2462))
+:extrapreds ((x2463))
+:extrapreds ((x2464))
+:extrapreds ((x2465))
+:extrapreds ((x2466))
+:extrapreds ((x2467))
+:extrapreds ((x2468))
+:extrapreds ((x2469))
+:extrapreds ((x2470))
+:extrapreds ((x2471))
+:extrapreds ((x2472))
+:extrapreds ((x2473))
+:extrapreds ((x2474))
+:extrapreds ((x2475))
+:extrapreds ((x2476))
+:extrapreds ((x2477))
+:extrapreds ((x2478))
+:extrapreds ((x2479))
+:extrapreds ((x2480))
+:extrapreds ((x2481))
+:extrapreds ((x2482))
+:extrapreds ((x2483))
+:extrapreds ((x2484))
+:extrapreds ((x2485))
+:extrapreds ((x2486))
+:extrapreds ((x2487))
+:extrapreds ((x2488))
+:extrapreds ((x2489))
+:extrapreds ((x2490))
+:extrapreds ((x2491))
+:extrapreds ((x2492))
+:extrapreds ((x2493))
+:extrapreds ((x2494))
+:extrapreds ((x2495))
+:extrapreds ((x2496))
+:extrapreds ((x2497))
+:extrapreds ((x2498))
+:extrapreds ((x2499))
+:extrapreds ((x2500))
+:extrapreds ((x2501))
+:extrapreds ((x2502))
+:extrapreds ((x2503))
+:extrapreds ((x2504))
+:extrapreds ((x2505))
+:extrapreds ((x2506))
+:extrapreds ((x2507))
+:extrapreds ((x2508))
+:extrapreds ((x2509))
+:extrapreds ((x2510))
+:extrapreds ((x2511))
+:extrapreds ((x2512))
+:extrapreds ((x2513))
+:extrapreds ((x2514))
+:extrapreds ((x2515))
+:extrapreds ((x2516))
+:extrapreds ((x2517))
+:extrapreds ((x2518))
+:extrapreds ((x2519))
+:extrapreds ((x2520))
+:extrapreds ((x2521))
+:extrapreds ((x2522))
+:extrapreds ((x2523))
+:extrapreds ((x2524))
+:extrapreds ((x2525))
+:extrapreds ((x2526))
+:extrapreds ((x2527))
+:extrapreds ((x2528))
+:extrapreds ((x2529))
+:extrapreds ((x2530))
+:extrapreds ((x2531))
+:extrapreds ((x2532))
+:extrapreds ((x2533))
+:extrapreds ((x2534))
+:extrapreds ((x2535))
+:extrapreds ((x2536))
+:extrapreds ((x2537))
+:extrapreds ((x2538))
+:extrapreds ((x2539))
+:extrapreds ((x2540))
+:extrapreds ((x2541))
+:extrapreds ((x2542))
+:extrapreds ((x2543))
+:extrapreds ((x2544))
+:extrapreds ((x2545))
+:extrapreds ((x2546))
+:extrapreds ((x2547))
+:extrapreds ((x2548))
+:extrapreds ((x2549))
+:extrapreds ((x2550))
+:extrapreds ((x2551))
+:extrapreds ((x2552))
+:extrapreds ((x2553))
+:extrapreds ((x2554))
+:extrapreds ((x2555))
+:extrapreds ((x2556))
+:extrapreds ((x2557))
+:extrapreds ((x2558))
+:extrapreds ((x2559))
+:extrapreds ((x2560))
+:extrapreds ((x2561))
+:extrapreds ((x2562))
+:extrapreds ((x2563))
+:extrapreds ((x2564))
+:extrapreds ((x2565))
+:extrapreds ((x2566))
+:extrapreds ((x2567))
+:extrapreds ((x2568))
+:extrapreds ((x2569))
+:extrapreds ((x2570))
+:extrapreds ((x2571))
+:extrapreds ((x2572))
+:extrapreds ((x2573))
+:extrapreds ((x2574))
+:extrapreds ((x2575))
+:extrapreds ((x2576))
+:extrapreds ((x2577))
+:extrapreds ((x2578))
+:extrapreds ((x2579))
+:extrapreds ((x2580))
+:extrapreds ((x2581))
+:extrapreds ((x2582))
+:extrapreds ((x2583))
+:extrapreds ((x2584))
+:extrapreds ((x2585))
+:extrapreds ((x2586))
+:extrapreds ((x2587))
+:extrapreds ((x2588))
+:extrapreds ((x2589))
+:extrapreds ((x2590))
+:extrapreds ((x2591))
+:extrapreds ((x2592))
+:extrapreds ((x2593))
+:extrapreds ((x2594))
+:extrapreds ((x2595))
+:extrapreds ((x2596))
+:extrapreds ((x2597))
+:extrapreds ((x2598))
+:extrapreds ((x2599))
+:extrapreds ((x2600))
+:extrapreds ((x2601))
+:extrapreds ((x2602))
+:extrapreds ((x2603))
+:extrapreds ((x2604))
+:extrapreds ((x2605))
+:extrapreds ((x2606))
+:extrapreds ((x2607))
+:extrapreds ((x2608))
+:extrapreds ((x2609))
+:extrapreds ((x2610))
+:extrapreds ((x2611))
+:extrapreds ((x2612))
+:extrapreds ((x2613))
+:extrapreds ((x2614))
+:extrapreds ((x2615))
+:extrapreds ((x2616))
+:extrapreds ((x2617))
+:extrapreds ((x2618))
+:extrapreds ((x2619))
+:extrapreds ((x2620))
+:extrapreds ((x2621))
+:extrapreds ((x2622))
+:extrapreds ((x2623))
+:extrapreds ((x2624))
+:extrapreds ((x2625))
+:extrapreds ((x2626))
+:extrapreds ((x2627))
+:extrapreds ((x2628))
+:extrapreds ((x2629))
+:extrapreds ((x2630))
+:extrapreds ((x2631))
+:extrapreds ((x2632))
+:extrapreds ((x2633))
+:extrapreds ((x2634))
+:extrapreds ((x2635))
+:extrapreds ((x2636))
+:extrapreds ((x2637))
+:extrapreds ((x2638))
+:extrapreds ((x2639))
+:extrapreds ((x2640))
+:extrapreds ((x2641))
+:extrapreds ((x2642))
+:extrapreds ((x2643))
+:extrapreds ((x2644))
+:extrapreds ((x2645))
+:extrapreds ((x2646))
+:extrapreds ((x2647))
+:extrapreds ((x2648))
+:extrapreds ((x2649))
+:extrapreds ((x2650))
+:extrapreds ((x2651))
+:extrapreds ((x2652))
+:extrapreds ((x2653))
+:extrapreds ((x2654))
+:extrapreds ((x2655))
+:extrapreds ((x2656))
+:extrapreds ((x2657))
+:extrapreds ((x2658))
+:extrapreds ((x2659))
+:extrapreds ((x2660))
+:extrapreds ((x2661))
+:extrapreds ((x2662))
+:extrapreds ((x2663))
+:extrapreds ((x2664))
+:extrapreds ((x2665))
+:extrapreds ((x2666))
+:extrapreds ((x2667))
+:extrapreds ((x2668))
+:extrapreds ((x2669))
+:extrapreds ((x2670))
+:extrapreds ((x2671))
+:extrapreds ((x2672))
+:extrapreds ((x2673))
+:extrapreds ((x2674))
+:extrapreds ((x2675))
+:extrapreds ((x2676))
+:extrapreds ((x2677))
+:extrapreds ((x2678))
+:extrapreds ((x2679))
+:extrapreds ((x2680))
+:extrapreds ((x2681))
+:extrapreds ((x2682))
+:extrapreds ((x2683))
+:extrapreds ((x2684))
+:extrapreds ((x2685))
+:extrapreds ((x2686))
+:extrapreds ((x2687))
+:extrapreds ((x2688))
+:extrapreds ((x2689))
+:extrapreds ((x2690))
+:extrapreds ((x2691))
+:extrapreds ((x2692))
+:extrapreds ((x2693))
+:extrapreds ((x2694))
+:extrapreds ((x2695))
+:extrapreds ((x2696))
+:extrapreds ((x2697))
+:extrapreds ((x2698))
+:extrapreds ((x2699))
+:extrapreds ((x2700))
+:extrapreds ((x2701))
+:extrapreds ((x2702))
+:extrapreds ((x2703))
+:extrapreds ((x2704))
+:extrapreds ((x2705))
+:extrapreds ((x2706))
+:extrapreds ((x2707))
+:extrapreds ((x2708))
+:extrapreds ((x2709))
+:extrapreds ((x2710))
+:extrapreds ((x2711))
+:extrapreds ((x2712))
+:extrapreds ((x2713))
+:extrapreds ((x2714))
+:extrapreds ((x2715))
+:extrapreds ((x2716))
+:extrapreds ((x2717))
+:extrapreds ((x2718))
+:extrapreds ((x2719))
+:extrapreds ((x2720))
+:extrapreds ((x2721))
+:extrapreds ((x2722))
+:extrapreds ((x2723))
+:extrapreds ((x2724))
+:extrapreds ((x2725))
+:extrapreds ((x2726))
+:extrapreds ((x2727))
+:extrapreds ((x2728))
+:extrapreds ((x2729))
+:extrapreds ((x2730))
+:extrapreds ((x2731))
+:extrapreds ((x2732))
+:extrapreds ((x2733))
+:extrapreds ((x2734))
+:extrapreds ((x2735))
+:extrapreds ((x2736))
+:extrapreds ((x2737))
+:extrapreds ((x2738))
+:extrapreds ((x2739))
+:extrapreds ((x2740))
+:extrapreds ((x2741))
+:extrapreds ((x2742))
+:extrapreds ((x2743))
+:extrapreds ((x2744))
+:extrapreds ((x2745))
+:extrapreds ((x2746))
+:extrapreds ((x2747))
+:extrapreds ((x2748))
+:extrapreds ((x2749))
+:extrapreds ((x2750))
+:extrapreds ((x2751))
+:extrapreds ((x2752))
+:extrapreds ((x2753))
+:extrapreds ((x2754))
+:extrapreds ((x2755))
+:extrapreds ((x2756))
+:extrapreds ((x2757))
+:extrapreds ((x2758))
+:extrapreds ((x2759))
+:extrapreds ((x2760))
+:extrapreds ((x2761))
+:extrapreds ((x2762))
+:extrapreds ((x2763))
+:extrapreds ((x2764))
+:extrapreds ((x2765))
+:extrapreds ((x2766))
+:extrapreds ((x2767))
+:extrapreds ((x2768))
+:extrapreds ((x2769))
+:extrapreds ((x2770))
+:extrapreds ((x2771))
+:extrapreds ((x2772))
+:extrapreds ((x2773))
+:extrapreds ((x2774))
+:extrapreds ((x2775))
+:extrapreds ((x2776))
+:extrapreds ((x2777))
+:extrapreds ((x2778))
+:extrapreds ((x2779))
+:extrapreds ((x2780))
+:extrapreds ((x2781))
+:extrapreds ((x2782))
+:extrapreds ((x2783))
+:extrapreds ((x2784))
+:extrapreds ((x2785))
+:extrapreds ((x2786))
+:extrapreds ((x2787))
+:extrapreds ((x2788))
+:extrapreds ((x2789))
+:extrapreds ((x2790))
+:extrapreds ((x2791))
+:extrapreds ((x2792))
+:extrapreds ((x2793))
+:extrapreds ((x2794))
+:extrapreds ((x2795))
+:extrapreds ((x2796))
+:extrapreds ((x2797))
+:extrapreds ((x2798))
+:extrapreds ((x2799))
+:extrapreds ((x2800))
+:extrapreds ((x2801))
+:extrapreds ((x2802))
+:extrapreds ((x2803))
+:extrapreds ((x2804))
+:extrapreds ((x2805))
+:extrapreds ((x2806))
+:extrapreds ((x2807))
+:extrapreds ((x2808))
+:extrapreds ((x2809))
+:extrapreds ((x2810))
+:formula (and
+(or (not x1) x3)
+(or (not x1) x2)
+(or (not x1) (not x4))
+(or (not x1) (not x5))
+(or (not x1) (not x6))
+(or (not x1) (not x7))
+(or (not x1) (not x8))
+(or (not x1) (not x9))
+(or (not x1) (not x10))
+(or (not x1) (not x11))
+(or (not x1) (not x12))
+(or (not x1) (not x13))
+(or (not x1) (not x14))
+(or (not x1) (not x15))
+(or (not x1) (not x16))
+(or (not x1) (not x17))
+(or (not x1) (not x18))
+(or (not x1) (not x19))
+(or (not x20) x22)
+(or (not x20) x21)
+(or (not x20) (not x23))
+(or (not x20) (not x24))
+(or (not x20) (not x25))
+(or (not x20) (not x26))
+(or (not x20) (not x27))
+(or (not x20) (not x28))
+(or (not x20) (not x29))
+(or (not x20) (not x30))
+(or (not x20) (not x31))
+(or (not x20) (not x32))
+(or (not x20) (not x33))
+(or (not x20) (not x34))
+(or (not x20) (not x35))
+(or (not x20) (not x36))
+(or (not x20) (not x37))
+(or (not x20) (not x38))
+(or (not x39) x41)
+(or (not x39) x40)
+(or (not x39) (not x42))
+(or (not x39) (not x43))
+(or (not x39) (not x44))
+(or (not x39) (not x45))
+(or (not x39) (not x46))
+(or (not x39) (not x47))
+(or (not x39) (not x48))
+(or (not x39) (not x49))
+(or (not x39) (not x50))
+(or (not x39) (not x51))
+(or (not x39) (not x52))
+(or (not x39) (not x53))
+(or (not x39) (not x54))
+(or (not x39) (not x55))
+(or (not x39) (not x56))
+(or (not x39) (not x57))
+(or (not x58) x60)
+(or (not x58) x59)
+(or (not x58) (not x61))
+(or (not x58) (not x62))
+(or (not x58) (not x63))
+(or (not x58) (not x64))
+(or (not x58) (not x65))
+(or (not x58) (not x66))
+(or (not x58) (not x67))
+(or (not x58) (not x68))
+(or (not x58) (not x69))
+(or (not x58) (not x70))
+(or (not x58) (not x71))
+(or (not x58) (not x72))
+(or (not x58) (not x73))
+(or (not x58) (not x74))
+(or (not x58) (not x75))
+(or (not x58) (not x76))
+(or (not x77) x79)
+(or (not x77) x78)
+(or (not x77) (not x80))
+(or (not x77) (not x81))
+(or (not x77) (not x82))
+(or (not x77) (not x83))
+(or (not x77) (not x84))
+(or (not x77) (not x85))
+(or (not x77) (not x86))
+(or (not x77) (not x87))
+(or (not x77) (not x88))
+(or (not x77) (not x89))
+(or (not x77) (not x90))
+(or (not x77) (not x91))
+(or (not x77) (not x92))
+(or (not x77) (not x93))
+(or (not x77) (not x94))
+(or (not x77) (not x95))
+(or (not x96) x98)
+(or (not x96) x97)
+(or (not x96) (not x99))
+(or (not x96) (not x100))
+(or (not x96) (not x101))
+(or (not x96) (not x102))
+(or (not x96) (not x103))
+(or (not x96) (not x104))
+(or (not x96) (not x105))
+(or (not x96) (not x106))
+(or (not x96) (not x107))
+(or (not x96) (not x108))
+(or (not x96) (not x109))
+(or (not x96) (not x110))
+(or (not x96) (not x111))
+(or (not x96) (not x112))
+(or (not x96) (not x113))
+(or (not x96) (not x114))
+(or x115 (not x96))
+(or x115 (not x77))
+(or x115 (not x58))
+(or x115 (not x39))
+(or x115 (not x20))
+(or x115 (not x1))
+(or x96 x77 x58 x39 x20 x1 (not x115))
+(or x116 (not x22))
+(or x116 x21)
+(or x116 x117)
+(or x22 (not x21) (not x117) (not x116))
+(or (not x116) (not x118) x119)
+(or (not x119) x116)
+(or (not x119) x118)
+(or x120 (not x23))
+(or x120 (not x24))
+(or x120 (not x25))
+(or x120 (not x26))
+(or x120 (not x27))
+(or x120 (not x28))
+(or x120 (not x29))
+(or x120 (not x30))
+(or x120 (not x31))
+(or x120 (not x32))
+(or x120 (not x33))
+(or x120 (not x34))
+(or x120 (not x35))
+(or x120 (not x36))
+(or x120 (not x37))
+(or x120 (not x38))
+(or x23 x24 x25 x26 x27 x28 x29 x30 x31 x32 x33 x34 x35 x36 x37 x38 (not x120))
+(or (not x22) x21 (not x120) x121)
+(or (not x121) x22)
+(or (not x121) (not x21))
+(or (not x121) x120)
+(or x22 (not x21) x122)
+(or (not x122) (not x22))
+(or (not x122) x21)
+(or x118 (not x122))
+(or x118 (not x121))
+(or x122 x121 (not x118))
+(or x123 (not x22))
+(or x123 x21)
+(or x123 (not x117))
+(or x22 (not x21) x117 (not x123))
+(or (not x123) (not x118) x124)
+(or (not x124) x123)
+(or (not x124) x118)
+(or (not x38) (not x125) (not x126) (not x127) (not x128) x129)
+(or (not x129) x38)
+(or (not x129) x125)
+(or (not x129) x126)
+(or (not x129) x127)
+(or (not x129) x128)
+(or (not x26) (not x126) (not x125) (not x130) (not x131) x132)
+(or (not x132) x26)
+(or (not x132) x126)
+(or (not x132) x125)
+(or (not x132) x130)
+(or (not x132) x131)
+(or (not x23) (not x126) (not x125) (not x133) (not x134) (not x135) (not x136) (not x130) x137)
+(or (not x137) x23)
+(or (not x137) x126)
+(or (not x137) x125)
+(or (not x137) x133)
+(or (not x137) x134)
+(or (not x137) x135)
+(or (not x137) x136)
+(or (not x137) x130)
+(or (not x138) (not x139) (not x125) (not x130) (not x140) (not x141) (not x140) x142)
+(or (not x142) x138)
+(or (not x142) x139)
+(or (not x142) x125)
+(or (not x142) x130)
+(or (not x142) x140)
+(or (not x142) x141)
+(or (not x142) x140)
+(or x143 (not x142))
+(or x143 (not x137))
+(or x143 (not x132))
+(or x143 (not x129))
+(or x143 (not x144))
+(or x142 x137 x132 x129 x144 (not x143))
+(or (not x37) (not x125) (not x126) (not x127) (not x128) x145)
+(or (not x145) x37)
+(or (not x145) x125)
+(or (not x145) x126)
+(or (not x145) x127)
+(or (not x145) x128)
+(or (not x25) (not x126) (not x125) (not x130) (not x131) x146)
+(or (not x146) x25)
+(or (not x146) x126)
+(or (not x146) x125)
+(or (not x146) x130)
+(or (not x146) x131)
+(or (not x38) (not x126) (not x125) (not x133) (not x134) (not x135) (not x136) (not x130) x147)
+(or (not x147) x38)
+(or (not x147) x126)
+(or (not x147) x125)
+(or (not x147) x133)
+(or (not x147) x134)
+(or (not x147) x135)
+(or (not x147) x136)
+(or (not x147) x130)
+(or (not x38) (not x148) (not x125) (not x130) (not x140) (not x141) (not x140) x149)
+(or (not x149) x38)
+(or (not x149) x148)
+(or (not x149) x125)
+(or (not x149) x130)
+(or (not x149) x140)
+(or (not x149) x141)
+(or (not x149) x140)
+(or x150 (not x149))
+(or x150 (not x147))
+(or x150 (not x146))
+(or x150 (not x145))
+(or x149 x147 x146 x145 (not x150))
+(or (not x36) (not x125) (not x126) (not x127) (not x128) x151)
+(or (not x151) x36)
+(or (not x151) x125)
+(or (not x151) x126)
+(or (not x151) x127)
+(or (not x151) x128)
+(or (not x24) (not x126) (not x125) (not x130) (not x131) x152)
+(or (not x152) x24)
+(or (not x152) x126)
+(or (not x152) x125)
+(or (not x152) x130)
+(or (not x152) x131)
+(or (not x37) (not x126) (not x125) (not x133) (not x134) (not x135) (not x136) (not x130) x153)
+(or (not x153) x37)
+(or (not x153) x126)
+(or (not x153) x125)
+(or (not x153) x133)
+(or (not x153) x134)
+(or (not x153) x135)
+(or (not x153) x136)
+(or (not x153) x130)
+(or (not x154) (not x155) (not x125) (not x130) (not x140) (not x141) (not x140) x156)
+(or (not x156) x154)
+(or (not x156) x155)
+(or (not x156) x125)
+(or (not x156) x130)
+(or (not x156) x140)
+(or (not x156) x141)
+(or (not x156) x140)
+(or x157 (not x156))
+(or x157 (not x153))
+(or x157 (not x152))
+(or x157 (not x151))
+(or x156 x153 x152 x151 (not x157))
+(or (not x35) (not x125) (not x126) (not x127) (not x128) x158)
+(or (not x158) x35)
+(or (not x158) x125)
+(or (not x158) x126)
+(or (not x158) x127)
+(or (not x158) x128)
+(or (not x23) (not x126) (not x125) (not x130) (not x131) x159)
+(or (not x159) x23)
+(or (not x159) x126)
+(or (not x159) x125)
+(or (not x159) x130)
+(or (not x159) x131)
+(or (not x36) (not x126) (not x125) (not x133) (not x134) (not x135) (not x136) (not x130) x160)
+(or (not x160) x36)
+(or (not x160) x126)
+(or (not x160) x125)
+(or (not x160) x133)
+(or (not x160) x134)
+(or (not x160) x135)
+(or (not x160) x136)
+(or (not x160) x130)
+(or (not x161) (not x162) (not x125) (not x130) (not x140) (not x141) (not x140) x163)
+(or (not x163) x161)
+(or (not x163) x162)
+(or (not x163) x125)
+(or (not x163) x130)
+(or (not x163) x140)
+(or (not x163) x141)
+(or (not x163) x140)
+(or x164 (not x163))
+(or x164 (not x160))
+(or x164 (not x159))
+(or x164 (not x158))
+(or x163 x160 x159 x158 (not x164))
+(or (not x34) (not x125) (not x126) (not x127) (not x128) x165)
+(or (not x165) x34)
+(or (not x165) x125)
+(or (not x165) x126)
+(or (not x165) x127)
+(or (not x165) x128)
+(or (not x38) (not x126) (not x125) (not x130) (not x131) x166)
+(or (not x166) x38)
+(or (not x166) x126)
+(or (not x166) x125)
+(or (not x166) x130)
+(or (not x166) x131)
+(or (not x35) (not x126) (not x125) (not x133) (not x134) (not x135) (not x136) (not x130) x167)
+(or (not x167) x35)
+(or (not x167) x126)
+(or (not x167) x125)
+(or (not x167) x133)
+(or (not x167) x134)
+(or (not x167) x135)
+(or (not x167) x136)
+(or (not x167) x130)
+(or (not x168) (not x169) (not x125) (not x130) (not x140) (not x141) (not x140) x170)
+(or (not x170) x168)
+(or (not x170) x169)
+(or (not x170) x125)
+(or (not x170) x130)
+(or (not x170) x140)
+(or (not x170) x141)
+(or (not x170) x140)
+(or x171 (not x170))
+(or x171 (not x167))
+(or x171 (not x166))
+(or x171 (not x165))
+(or x170 x167 x166 x165 (not x171))
+(or (not x33) (not x125) (not x126) (not x127) (not x128) x172)
+(or (not x172) x33)
+(or (not x172) x125)
+(or (not x172) x126)
+(or (not x172) x127)
+(or (not x172) x128)
+(or (not x37) (not x126) (not x125) (not x130) (not x131) x173)
+(or (not x173) x37)
+(or (not x173) x126)
+(or (not x173) x125)
+(or (not x173) x130)
+(or (not x173) x131)
+(or (not x34) (not x126) (not x125) (not x133) (not x134) (not x135) (not x136) (not x130) x174)
+(or (not x174) x34)
+(or (not x174) x126)
+(or (not x174) x125)
+(or (not x174) x133)
+(or (not x174) x134)
+(or (not x174) x135)
+(or (not x174) x136)
+(or (not x174) x130)
+(or (not x34) (not x175) (not x125) (not x130) (not x140) (not x141) (not x140) x176)
+(or (not x176) x34)
+(or (not x176) x175)
+(or (not x176) x125)
+(or (not x176) x130)
+(or (not x176) x140)
+(or (not x176) x141)
+(or (not x176) x140)
+(or x177 (not x176))
+(or x177 (not x174))
+(or x177 (not x173))
+(or x177 (not x172))
+(or x176 x174 x173 x172 (not x177))
+(or (not x32) (not x125) (not x126) (not x127) (not x128) x178)
+(or (not x178) x32)
+(or (not x178) x125)
+(or (not x178) x126)
+(or (not x178) x127)
+(or (not x178) x128)
+(or (not x36) (not x126) (not x125) (not x130) (not x131) x179)
+(or (not x179) x36)
+(or (not x179) x126)
+(or (not x179) x125)
+(or (not x179) x130)
+(or (not x179) x131)
+(or (not x33) (not x126) (not x125) (not x133) (not x134) (not x135) (not x136) (not x130) x180)
+(or (not x180) x33)
+(or (not x180) x126)
+(or (not x180) x125)
+(or (not x180) x133)
+(or (not x180) x134)
+(or (not x180) x135)
+(or (not x180) x136)
+(or (not x180) x130)
+(or (not x181) (not x182) (not x125) (not x130) (not x140) (not x141) (not x140) x183)
+(or (not x183) x181)
+(or (not x183) x182)
+(or (not x183) x125)
+(or (not x183) x130)
+(or (not x183) x140)
+(or (not x183) x141)
+(or (not x183) x140)
+(or x184 (not x183))
+(or x184 (not x180))
+(or x184 (not x179))
+(or x184 (not x178))
+(or x183 x180 x179 x178 (not x184))
+(or (not x31) (not x125) (not x126) (not x127) (not x128) x185)
+(or (not x185) x31)
+(or (not x185) x125)
+(or (not x185) x126)
+(or (not x185) x127)
+(or (not x185) x128)
+(or (not x35) (not x126) (not x125) (not x130) (not x131) x186)
+(or (not x186) x35)
+(or (not x186) x126)
+(or (not x186) x125)
+(or (not x186) x130)
+(or (not x186) x131)
+(or (not x32) (not x126) (not x125) (not x133) (not x134) (not x135) (not x136) (not x130) x187)
+(or (not x187) x32)
+(or (not x187) x126)
+(or (not x187) x125)
+(or (not x187) x133)
+(or (not x187) x134)
+(or (not x187) x135)
+(or (not x187) x136)
+(or (not x187) x130)
+(or (not x188) (not x189) (not x125) (not x130) (not x140) (not x141) (not x140) x190)
+(or (not x190) x188)
+(or (not x190) x189)
+(or (not x190) x125)
+(or (not x190) x130)
+(or (not x190) x140)
+(or (not x190) x141)
+(or (not x190) x140)
+(or x191 (not x190))
+(or x191 (not x187))
+(or x191 (not x186))
+(or x191 (not x185))
+(or x190 x187 x186 x185 (not x191))
+(or (not x30) (not x125) (not x126) (not x127) (not x128) x192)
+(or (not x192) x30)
+(or (not x192) x125)
+(or (not x192) x126)
+(or (not x192) x127)
+(or (not x192) x128)
+(or (not x34) (not x126) (not x125) (not x130) (not x131) x193)
+(or (not x193) x34)
+(or (not x193) x126)
+(or (not x193) x125)
+(or (not x193) x130)
+(or (not x193) x131)
+(or (not x31) (not x126) (not x125) (not x133) (not x134) (not x135) (not x136) (not x130) x194)
+(or (not x194) x31)
+(or (not x194) x126)
+(or (not x194) x125)
+(or (not x194) x133)
+(or (not x194) x134)
+(or (not x194) x135)
+(or (not x194) x136)
+(or (not x194) x130)
+(or (not x195) (not x196) (not x125) (not x130) (not x140) (not x141) (not x140) x197)
+(or (not x197) x195)
+(or (not x197) x196)
+(or (not x197) x125)
+(or (not x197) x130)
+(or (not x197) x140)
+(or (not x197) x141)
+(or (not x197) x140)
+(or x198 (not x197))
+(or x198 (not x194))
+(or x198 (not x193))
+(or x198 (not x192))
+(or x197 x194 x193 x192 (not x198))
+(or (not x29) (not x125) (not x126) (not x127) (not x128) x199)
+(or (not x199) x29)
+(or (not x199) x125)
+(or (not x199) x126)
+(or (not x199) x127)
+(or (not x199) x128)
+(or (not x33) (not x126) (not x125) (not x130) (not x131) x200)
+(or (not x200) x33)
+(or (not x200) x126)
+(or (not x200) x125)
+(or (not x200) x130)
+(or (not x200) x131)
+(or (not x30) (not x126) (not x125) (not x133) (not x134) (not x135) (not x136) (not x130) x201)
+(or (not x201) x30)
+(or (not x201) x126)
+(or (not x201) x125)
+(or (not x201) x133)
+(or (not x201) x134)
+(or (not x201) x135)
+(or (not x201) x136)
+(or (not x201) x130)
+(or (not x30) (not x202) (not x125) (not x130) (not x140) (not x141) (not x140) x203)
+(or (not x203) x30)
+(or (not x203) x202)
+(or (not x203) x125)
+(or (not x203) x130)
+(or (not x203) x140)
+(or (not x203) x141)
+(or (not x203) x140)
+(or x204 (not x203))
+(or x204 (not x201))
+(or x204 (not x200))
+(or x204 (not x199))
+(or x203 x201 x200 x199 (not x204))
+(or (not x28) (not x125) (not x126) (not x127) (not x128) x205)
+(or (not x205) x28)
+(or (not x205) x125)
+(or (not x205) x126)
+(or (not x205) x127)
+(or (not x205) x128)
+(or (not x32) (not x126) (not x125) (not x130) (not x131) x206)
+(or (not x206) x32)
+(or (not x206) x126)
+(or (not x206) x125)
+(or (not x206) x130)
+(or (not x206) x131)
+(or (not x29) (not x126) (not x125) (not x133) (not x134) (not x135) (not x136) (not x130) x207)
+(or (not x207) x29)
+(or (not x207) x126)
+(or (not x207) x125)
+(or (not x207) x133)
+(or (not x207) x134)
+(or (not x207) x135)
+(or (not x207) x136)
+(or (not x207) x130)
+(or (not x208) (not x209) (not x125) (not x130) (not x140) (not x141) (not x140) x210)
+(or (not x210) x208)
+(or (not x210) x209)
+(or (not x210) x125)
+(or (not x210) x130)
+(or (not x210) x140)
+(or (not x210) x141)
+(or (not x210) x140)
+(or x211 (not x210))
+(or x211 (not x207))
+(or x211 (not x206))
+(or x211 (not x205))
+(or x210 x207 x206 x205 (not x211))
+(or (not x27) (not x125) (not x126) (not x127) (not x128) x212)
+(or (not x212) x27)
+(or (not x212) x125)
+(or (not x212) x126)
+(or (not x212) x127)
+(or (not x212) x128)
+(or (not x31) (not x126) (not x125) (not x130) (not x131) x213)
+(or (not x213) x31)
+(or (not x213) x126)
+(or (not x213) x125)
+(or (not x213) x130)
+(or (not x213) x131)
+(or (not x28) (not x126) (not x125) (not x133) (not x134) (not x135) (not x136) (not x130) x214)
+(or (not x214) x28)
+(or (not x214) x126)
+(or (not x214) x125)
+(or (not x214) x133)
+(or (not x214) x134)
+(or (not x214) x135)
+(or (not x214) x136)
+(or (not x214) x130)
+(or (not x215) (not x216) (not x125) (not x130) (not x140) (not x141) (not x140) x217)
+(or (not x217) x215)
+(or (not x217) x216)
+(or (not x217) x125)
+(or (not x217) x130)
+(or (not x217) x140)
+(or (not x217) x141)
+(or (not x217) x140)
+(or x218 (not x217))
+(or x218 (not x214))
+(or x218 (not x213))
+(or x218 (not x212))
+(or x217 x214 x213 x212 (not x218))
+(or (not x26) (not x125) (not x126) (not x127) (not x128) x219)
+(or (not x219) x26)
+(or (not x219) x125)
+(or (not x219) x126)
+(or (not x219) x127)
+(or (not x219) x128)
+(or (not x30) (not x126) (not x125) (not x130) (not x131) x220)
+(or (not x220) x30)
+(or (not x220) x126)
+(or (not x220) x125)
+(or (not x220) x130)
+(or (not x220) x131)
+(or (not x27) (not x126) (not x125) (not x133) (not x134) (not x135) (not x136) (not x130) x221)
+(or (not x221) x27)
+(or (not x221) x126)
+(or (not x221) x125)
+(or (not x221) x133)
+(or (not x221) x134)
+(or (not x221) x135)
+(or (not x221) x136)
+(or (not x221) x130)
+(or (not x222) (not x223) (not x125) (not x130) (not x140) (not x141) (not x140) x224)
+(or (not x224) x222)
+(or (not x224) x223)
+(or (not x224) x125)
+(or (not x224) x130)
+(or (not x224) x140)
+(or (not x224) x141)
+(or (not x224) x140)
+(or x225 (not x224))
+(or x225 (not x221))
+(or x225 (not x220))
+(or x225 (not x219))
+(or x224 x221 x220 x219 (not x225))
+(or (not x25) (not x125) (not x126) (not x127) (not x128) x226)
+(or (not x226) x25)
+(or (not x226) x125)
+(or (not x226) x126)
+(or (not x226) x127)
+(or (not x226) x128)
+(or (not x29) (not x126) (not x125) (not x130) (not x131) x227)
+(or (not x227) x29)
+(or (not x227) x126)
+(or (not x227) x125)
+(or (not x227) x130)
+(or (not x227) x131)
+(or (not x26) (not x126) (not x125) (not x133) (not x134) (not x135) (not x136) (not x130) x228)
+(or (not x228) x26)
+(or (not x228) x126)
+(or (not x228) x125)
+(or (not x228) x133)
+(or (not x228) x134)
+(or (not x228) x135)
+(or (not x228) x136)
+(or (not x228) x130)
+(or (not x26) (not x229) (not x125) (not x130) (not x140) (not x141) (not x140) x230)
+(or (not x230) x26)
+(or (not x230) x229)
+(or (not x230) x125)
+(or (not x230) x130)
+(or (not x230) x140)
+(or (not x230) x141)
+(or (not x230) x140)
+(or x231 (not x230))
+(or x231 (not x228))
+(or x231 (not x227))
+(or x231 (not x226))
+(or x230 x228 x227 x226 (not x231))
+(or (not x24) (not x125) (not x126) (not x127) (not x128) x232)
+(or (not x232) x24)
+(or (not x232) x125)
+(or (not x232) x126)
+(or (not x232) x127)
+(or (not x232) x128)
+(or (not x28) (not x126) (not x125) (not x130) (not x131) x233)
+(or (not x233) x28)
+(or (not x233) x126)
+(or (not x233) x125)
+(or (not x233) x130)
+(or (not x233) x131)
+(or (not x25) (not x126) (not x125) (not x133) (not x134) (not x135) (not x136) (not x130) x234)
+(or (not x234) x25)
+(or (not x234) x126)
+(or (not x234) x125)
+(or (not x234) x133)
+(or (not x234) x134)
+(or (not x234) x135)
+(or (not x234) x136)
+(or (not x234) x130)
+(or (not x235) (not x236) (not x125) (not x130) (not x140) (not x141) (not x140) x237)
+(or (not x237) x235)
+(or (not x237) x236)
+(or (not x237) x125)
+(or (not x237) x130)
+(or (not x237) x140)
+(or (not x237) x141)
+(or (not x237) x140)
+(or x238 (not x237))
+(or x238 (not x234))
+(or x238 (not x233))
+(or x238 (not x232))
+(or x237 x234 x233 x232 (not x238))
+(or x128 (not x239))
+(or x128 (not x144))
+(or x128 (not x240))
+(or x128 (not x241))
+(or x128 (not x242))
+(or x128 (not x243))
+(or x128 x130)
+(or x239 x144 x240 x241 x242 x243 (not x130) (not x128))
+(or x38 x37 x36 x35 x34 x33 x32 x31 x30 x29 x28 x27 x26 x25 x24 x23 x144)
+(or (not x144) (not x38))
+(or (not x144) (not x37))
+(or (not x144) (not x36))
+(or (not x144) (not x35))
+(or (not x144) (not x34))
+(or (not x144) (not x33))
+(or (not x144) (not x32))
+(or (not x144) (not x31))
+(or (not x144) (not x30))
+(or (not x144) (not x29))
+(or (not x144) (not x28))
+(or (not x144) (not x27))
+(or (not x144) (not x26))
+(or (not x144) (not x25))
+(or (not x144) (not x24))
+(or (not x144) (not x23))
+(or x127 (not x239))
+(or x127 (not x144))
+(or x127 x130)
+(or x127 (not x244))
+(or x239 x144 (not x130) x244 (not x127))
+(or (not x23) (not x125) (not x126) (not x127) (not x128) x245)
+(or (not x245) x23)
+(or (not x245) x125)
+(or (not x245) x126)
+(or (not x245) x127)
+(or (not x245) x128)
+(or x246 (not x24) x247)
+(or (not x247) (not x246))
+(or (not x247) x24)
+(or x236 x246 (not x25) x248)
+(or (not x248) (not x236))
+(or (not x248) (not x246))
+(or (not x248) x25)
+(or x229 x236 x246 (not x26) x249)
+(or (not x249) (not x229))
+(or (not x249) (not x236))
+(or (not x249) (not x246))
+(or (not x249) x26)
+(or x138 (not x23))
+(or x138 (not x249))
+(or x138 (not x248))
+(or x138 (not x247))
+(or x23 x249 x248 x247 (not x138))
+(or (not x138) (not x139) (not x130) (not x140) (not x141) (not x140) x250)
+(or (not x250) x138)
+(or (not x250) x139)
+(or (not x250) x130)
+(or (not x250) x140)
+(or (not x250) x141)
+(or (not x250) x140)
+(or x251 (not x250))
+(or x251 x139)
+(or x250 (not x139) (not x251))
+(or (not x252) (not x246) (not x130) (not x140) (not x141) (not x140) x253)
+(or (not x253) x252)
+(or (not x253) x246)
+(or (not x253) x130)
+(or (not x253) x140)
+(or (not x253) x141)
+(or (not x253) x140)
+(or x254 (not x253))
+(or x254 x246)
+(or x253 (not x246) (not x254))
+(or x229 (not x26) x255)
+(or (not x255) (not x229))
+(or (not x255) x26)
+(or x235 (not x25))
+(or x235 (not x255))
+(or x25 x255 (not x235))
+(or (not x235) (not x236) (not x130) (not x140) (not x141) (not x140) x256)
+(or (not x256) x235)
+(or (not x256) x236)
+(or (not x256) x130)
+(or (not x256) x140)
+(or (not x256) x141)
+(or (not x256) x140)
+(or x257 (not x256))
+(or x257 x236)
+(or x256 (not x236) (not x257))
+(or (not x26) (not x229) (not x130) (not x140) (not x141) (not x140) x258)
+(or (not x258) x26)
+(or (not x258) x229)
+(or (not x258) x130)
+(or (not x258) x140)
+(or (not x258) x141)
+(or (not x258) x140)
+(or x259 (not x258))
+(or x259 x229)
+(or x258 (not x229) (not x259))
+(or (not x259) (not x257) (not x254) (not x251) (not x26) x243)
+(or (not x243) x259)
+(or (not x243) x257)
+(or (not x243) x254)
+(or (not x243) x251)
+(or (not x243) x26)
+(or x216 (not x28) x260)
+(or (not x260) (not x216))
+(or (not x260) x28)
+(or x209 x216 (not x29) x261)
+(or (not x261) (not x209))
+(or (not x261) (not x216))
+(or (not x261) x29)
+(or x202 x209 x216 (not x30) x262)
+(or (not x262) (not x202))
+(or (not x262) (not x209))
+(or (not x262) (not x216))
+(or (not x262) x30)
+(or x222 (not x27))
+(or x222 (not x262))
+(or x222 (not x261))
+(or x222 (not x260))
+(or x27 x262 x261 x260 (not x222))
+(or (not x222) (not x223) (not x130) (not x140) (not x141) (not x140) x263)
+(or (not x263) x222)
+(or (not x263) x223)
+(or (not x263) x130)
+(or (not x263) x140)
+(or (not x263) x141)
+(or (not x263) x140)
+(or x264 (not x263))
+(or x264 x223)
+(or x263 (not x223) (not x264))
+(or x209 (not x29) x265)
+(or (not x265) (not x209))
+(or (not x265) x29)
+(or x202 x209 (not x30) x266)
+(or (not x266) (not x202))
+(or (not x266) (not x209))
+(or (not x266) x30)
+(or x215 (not x28))
+(or x215 (not x266))
+(or x215 (not x265))
+(or x28 x266 x265 (not x215))
+(or (not x215) (not x216) (not x130) (not x140) (not x141) (not x140) x267)
+(or (not x267) x215)
+(or (not x267) x216)
+(or (not x267) x130)
+(or (not x267) x140)
+(or (not x267) x141)
+(or (not x267) x140)
+(or x268 (not x267))
+(or x268 x216)
+(or x267 (not x216) (not x268))
+(or x202 (not x30) x269)
+(or (not x269) (not x202))
+(or (not x269) x30)
+(or x208 (not x29))
+(or x208 (not x269))
+(or x29 x269 (not x208))
+(or (not x208) (not x209) (not x130) (not x140) (not x141) (not x140) x270)
+(or (not x270) x208)
+(or (not x270) x209)
+(or (not x270) x130)
+(or (not x270) x140)
+(or (not x270) x141)
+(or (not x270) x140)
+(or x271 (not x270))
+(or x271 x209)
+(or x270 (not x209) (not x271))
+(or (not x30) (not x202) (not x130) (not x140) (not x141) (not x140) x272)
+(or (not x272) x30)
+(or (not x272) x202)
+(or (not x272) x130)
+(or (not x272) x140)
+(or (not x272) x141)
+(or (not x272) x140)
+(or x273 (not x272))
+(or x273 x202)
+(or x272 (not x202) (not x273))
+(or (not x273) (not x271) (not x268) (not x264) (not x30) x242)
+(or (not x242) x273)
+(or (not x242) x271)
+(or (not x242) x268)
+(or (not x242) x264)
+(or (not x242) x30)
+(or x189 (not x32) x274)
+(or (not x274) (not x189))
+(or (not x274) x32)
+(or x182 x189 (not x33) x275)
+(or (not x275) (not x182))
+(or (not x275) (not x189))
+(or (not x275) x33)
+(or x175 x182 x189 (not x34) x276)
+(or (not x276) (not x175))
+(or (not x276) (not x182))
+(or (not x276) (not x189))
+(or (not x276) x34)
+(or x195 (not x31))
+(or x195 (not x276))
+(or x195 (not x275))
+(or x195 (not x274))
+(or x31 x276 x275 x274 (not x195))
+(or (not x195) (not x196) (not x130) (not x140) (not x141) (not x140) x277)
+(or (not x277) x195)
+(or (not x277) x196)
+(or (not x277) x130)
+(or (not x277) x140)
+(or (not x277) x141)
+(or (not x277) x140)
+(or x278 (not x277))
+(or x278 x196)
+(or x277 (not x196) (not x278))
+(or x182 (not x33) x279)
+(or (not x279) (not x182))
+(or (not x279) x33)
+(or x175 x182 (not x34) x280)
+(or (not x280) (not x175))
+(or (not x280) (not x182))
+(or (not x280) x34)
+(or x188 (not x32))
+(or x188 (not x280))
+(or x188 (not x279))
+(or x32 x280 x279 (not x188))
+(or (not x188) (not x189) (not x130) (not x140) (not x141) (not x140) x281)
+(or (not x281) x188)
+(or (not x281) x189)
+(or (not x281) x130)
+(or (not x281) x140)
+(or (not x281) x141)
+(or (not x281) x140)
+(or x282 (not x281))
+(or x282 x189)
+(or x281 (not x189) (not x282))
+(or x175 (not x34) x283)
+(or (not x283) (not x175))
+(or (not x283) x34)
+(or x181 (not x33))
+(or x181 (not x283))
+(or x33 x283 (not x181))
+(or (not x181) (not x182) (not x130) (not x140) (not x141) (not x140) x284)
+(or (not x284) x181)
+(or (not x284) x182)
+(or (not x284) x130)
+(or (not x284) x140)
+(or (not x284) x141)
+(or (not x284) x140)
+(or x285 (not x284))
+(or x285 x182)
+(or x284 (not x182) (not x285))
+(or (not x34) (not x175) (not x130) (not x140) (not x141) (not x140) x286)
+(or (not x286) x34)
+(or (not x286) x175)
+(or (not x286) x130)
+(or (not x286) x140)
+(or (not x286) x141)
+(or (not x286) x140)
+(or x287 (not x286))
+(or x287 x175)
+(or x286 (not x175) (not x287))
+(or (not x287) (not x285) (not x282) (not x278) (not x34) x241)
+(or (not x241) x287)
+(or (not x241) x285)
+(or (not x241) x282)
+(or (not x241) x278)
+(or (not x241) x34)
+(or x162 (not x36) x288)
+(or (not x288) (not x162))
+(or (not x288) x36)
+(or x155 x162 (not x37) x289)
+(or (not x289) (not x155))
+(or (not x289) (not x162))
+(or (not x289) x37)
+(or x148 x155 x162 (not x38) x290)
+(or (not x290) (not x148))
+(or (not x290) (not x155))
+(or (not x290) (not x162))
+(or (not x290) x38)
+(or x168 (not x35))
+(or x168 (not x290))
+(or x168 (not x289))
+(or x168 (not x288))
+(or x35 x290 x289 x288 (not x168))
+(or (not x168) (not x169) (not x130) (not x140) (not x141) (not x140) x291)
+(or (not x291) x168)
+(or (not x291) x169)
+(or (not x291) x130)
+(or (not x291) x140)
+(or (not x291) x141)
+(or (not x291) x140)
+(or x292 (not x291))
+(or x292 x169)
+(or x291 (not x169) (not x292))
+(or x155 (not x37) x293)
+(or (not x293) (not x155))
+(or (not x293) x37)
+(or x148 x155 (not x38) x294)
+(or (not x294) (not x148))
+(or (not x294) (not x155))
+(or (not x294) x38)
+(or x161 (not x36))
+(or x161 (not x294))
+(or x161 (not x293))
+(or x36 x294 x293 (not x161))
+(or (not x161) (not x162) (not x130) (not x140) (not x141) (not x140) x295)
+(or (not x295) x161)
+(or (not x295) x162)
+(or (not x295) x130)
+(or (not x295) x140)
+(or (not x295) x141)
+(or (not x295) x140)
+(or x296 (not x295))
+(or x296 x162)
+(or x295 (not x162) (not x296))
+(or x148 (not x38) x297)
+(or (not x297) (not x148))
+(or (not x297) x38)
+(or x154 (not x37))
+(or x154 (not x297))
+(or x37 x297 (not x154))
+(or (not x154) (not x155) (not x130) (not x140) (not x141) (not x140) x298)
+(or (not x298) x154)
+(or (not x298) x155)
+(or (not x298) x130)
+(or (not x298) x140)
+(or (not x298) x141)
+(or (not x298) x140)
+(or x299 (not x298))
+(or x299 x155)
+(or x298 (not x155) (not x299))
+(or (not x38) (not x148) (not x130) (not x140) (not x141) (not x140) x300)
+(or (not x300) x38)
+(or (not x300) x148)
+(or (not x300) x130)
+(or (not x300) x140)
+(or (not x300) x141)
+(or (not x300) x140)
+(or x301 (not x300))
+(or x301 x148)
+(or x300 (not x148) (not x301))
+(or (not x301) (not x299) (not x296) (not x292) (not x38) x240)
+(or (not x240) x301)
+(or (not x240) x299)
+(or (not x240) x296)
+(or (not x240) x292)
+(or (not x240) x38)
+(or x131 (not x240))
+(or x131 (not x241))
+(or x131 (not x242))
+(or x131 (not x243))
+(or x240 x241 x242 x243 (not x131))
+(or (not x27) (not x126) (not x125) (not x130) (not x131) x302)
+(or (not x302) x27)
+(or (not x302) x126)
+(or (not x302) x125)
+(or (not x302) x130)
+(or (not x302) x131)
+(or x303 (not x246))
+(or x303 x24)
+(or x246 (not x24) (not x303))
+(or x304 (not x236))
+(or x304 (not x246))
+(or x304 x25)
+(or x236 x246 (not x25) (not x304))
+(or x305 (not x229))
+(or x305 (not x236))
+(or x305 (not x246))
+(or x305 x26)
+(or x229 x236 x246 (not x26) (not x305))
+(or x23 (not x305) (not x304) (not x303) x306)
+(or (not x306) (not x23))
+(or (not x306) x305)
+(or (not x306) x304)
+(or (not x306) x303)
+(or x307 (not x306))
+(or x307 x139)
+(or x307 x130)
+(or x307 (not x308))
+(or x307 (not x309))
+(or x307 (not x308))
+(or x306 (not x139) (not x130) x308 x309 x308 (not x307))
+(or (not x307) (not x139) x310)
+(or (not x310) x307)
+(or (not x310) x139)
+(or x311 (not x236))
+(or x311 x25)
+(or x236 (not x25) (not x311))
+(or x312 (not x229))
+(or x312 (not x236))
+(or x312 x26)
+(or x229 x236 (not x26) (not x312))
+(or x24 (not x312) (not x311) x313)
+(or (not x313) (not x24))
+(or (not x313) x312)
+(or (not x313) x311)
+(or x314 (not x313))
+(or x314 x246)
+(or x314 x130)
+(or x314 (not x308))
+(or x314 (not x309))
+(or x314 (not x308))
+(or x313 (not x246) (not x130) x308 x309 x308 (not x314))
+(or (not x314) (not x246) x315)
+(or (not x315) x314)
+(or (not x315) x246)
+(or x316 (not x229))
+(or x316 x26)
+(or x229 (not x26) (not x316))
+(or x25 (not x316) x317)
+(or (not x317) (not x25))
+(or (not x317) x316)
+(or x318 (not x317))
+(or x318 x236)
+(or x318 x130)
+(or x318 (not x308))
+(or x318 (not x309))
+(or x318 (not x308))
+(or x317 (not x236) (not x130) x308 x309 x308 (not x318))
+(or (not x318) (not x236) x319)
+(or (not x319) x318)
+(or (not x319) x236)
+(or x320 x26)
+(or x320 x229)
+(or x320 x130)
+(or x320 (not x308))
+(or x320 (not x309))
+(or x320 (not x308))
+(or (not x26) (not x229) (not x130) x308 x309 x308 (not x320))
+(or (not x320) (not x229) x321)
+(or (not x321) x320)
+(or (not x321) x229)
+(or x136 (not x321))
+(or x136 (not x319))
+(or x136 (not x315))
+(or x136 (not x310))
+(or x136 x26)
+(or x321 x319 x315 x310 (not x26) (not x136))
+(or x322 (not x216))
+(or x322 x28)
+(or x216 (not x28) (not x322))
+(or x323 (not x209))
+(or x323 (not x216))
+(or x323 x29)
+(or x209 x216 (not x29) (not x323))
+(or x324 (not x202))
+(or x324 (not x209))
+(or x324 (not x216))
+(or x324 x30)
+(or x202 x209 x216 (not x30) (not x324))
+(or x27 (not x324) (not x323) (not x322) x325)
+(or (not x325) (not x27))
+(or (not x325) x324)
+(or (not x325) x323)
+(or (not x325) x322)
+(or x326 (not x325))
+(or x326 x223)
+(or x326 x130)
+(or x326 (not x308))
+(or x326 (not x309))
+(or x326 (not x308))
+(or x325 (not x223) (not x130) x308 x309 x308 (not x326))
+(or (not x326) (not x223) x327)
+(or (not x327) x326)
+(or (not x327) x223)
+(or x328 (not x209))
+(or x328 x29)
+(or x209 (not x29) (not x328))
+(or x329 (not x202))
+(or x329 (not x209))
+(or x329 x30)
+(or x202 x209 (not x30) (not x329))
+(or x28 (not x329) (not x328) x330)
+(or (not x330) (not x28))
+(or (not x330) x329)
+(or (not x330) x328)
+(or x331 (not x330))
+(or x331 x216)
+(or x331 x130)
+(or x331 (not x308))
+(or x331 (not x309))
+(or x331 (not x308))
+(or x330 (not x216) (not x130) x308 x309 x308 (not x331))
+(or (not x331) (not x216) x332)
+(or (not x332) x331)
+(or (not x332) x216)
+(or x333 (not x202))
+(or x333 x30)
+(or x202 (not x30) (not x333))
+(or x29 (not x333) x334)
+(or (not x334) (not x29))
+(or (not x334) x333)
+(or x335 (not x334))
+(or x335 x209)
+(or x335 x130)
+(or x335 (not x308))
+(or x335 (not x309))
+(or x335 (not x308))
+(or x334 (not x209) (not x130) x308 x309 x308 (not x335))
+(or (not x335) (not x209) x336)
+(or (not x336) x335)
+(or (not x336) x209)
+(or x337 x30)
+(or x337 x202)
+(or x337 x130)
+(or x337 (not x308))
+(or x337 (not x309))
+(or x337 (not x308))
+(or (not x30) (not x202) (not x130) x308 x309 x308 (not x337))
+(or (not x337) (not x202) x338)
+(or (not x338) x337)
+(or (not x338) x202)
+(or x135 (not x338))
+(or x135 (not x336))
+(or x135 (not x332))
+(or x135 (not x327))
+(or x135 x30)
+(or x338 x336 x332 x327 (not x30) (not x135))
+(or x339 (not x189))
+(or x339 x32)
+(or x189 (not x32) (not x339))
+(or x340 (not x182))
+(or x340 (not x189))
+(or x340 x33)
+(or x182 x189 (not x33) (not x340))
+(or x341 (not x175))
+(or x341 (not x182))
+(or x341 (not x189))
+(or x341 x34)
+(or x175 x182 x189 (not x34) (not x341))
+(or x31 (not x341) (not x340) (not x339) x342)
+(or (not x342) (not x31))
+(or (not x342) x341)
+(or (not x342) x340)
+(or (not x342) x339)
+(or x343 (not x342))
+(or x343 x196)
+(or x343 x130)
+(or x343 (not x308))
+(or x343 (not x309))
+(or x343 (not x308))
+(or x342 (not x196) (not x130) x308 x309 x308 (not x343))
+(or (not x343) (not x196) x344)
+(or (not x344) x343)
+(or (not x344) x196)
+(or x345 (not x182))
+(or x345 x33)
+(or x182 (not x33) (not x345))
+(or x346 (not x175))
+(or x346 (not x182))
+(or x346 x34)
+(or x175 x182 (not x34) (not x346))
+(or x32 (not x346) (not x345) x347)
+(or (not x347) (not x32))
+(or (not x347) x346)
+(or (not x347) x345)
+(or x348 (not x347))
+(or x348 x189)
+(or x348 x130)
+(or x348 (not x308))
+(or x348 (not x309))
+(or x348 (not x308))
+(or x347 (not x189) (not x130) x308 x309 x308 (not x348))
+(or (not x348) (not x189) x349)
+(or (not x349) x348)
+(or (not x349) x189)
+(or x350 (not x175))
+(or x350 x34)
+(or x175 (not x34) (not x350))
+(or x33 (not x350) x351)
+(or (not x351) (not x33))
+(or (not x351) x350)
+(or x352 (not x351))
+(or x352 x182)
+(or x352 x130)
+(or x352 (not x308))
+(or x352 (not x309))
+(or x352 (not x308))
+(or x351 (not x182) (not x130) x308 x309 x308 (not x352))
+(or (not x352) (not x182) x353)
+(or (not x353) x352)
+(or (not x353) x182)
+(or x354 x34)
+(or x354 x175)
+(or x354 x130)
+(or x354 (not x308))
+(or x354 (not x309))
+(or x354 (not x308))
+(or (not x34) (not x175) (not x130) x308 x309 x308 (not x354))
+(or (not x354) (not x175) x355)
+(or (not x355) x354)
+(or (not x355) x175)
+(or x134 (not x355))
+(or x134 (not x353))
+(or x134 (not x349))
+(or x134 (not x344))
+(or x134 x34)
+(or x355 x353 x349 x344 (not x34) (not x134))
+(or x356 (not x162))
+(or x356 x36)
+(or x162 (not x36) (not x356))
+(or x357 (not x155))
+(or x357 (not x162))
+(or x357 x37)
+(or x155 x162 (not x37) (not x357))
+(or x358 (not x148))
+(or x358 (not x155))
+(or x358 (not x162))
+(or x358 x38)
+(or x148 x155 x162 (not x38) (not x358))
+(or x35 (not x358) (not x357) (not x356) x359)
+(or (not x359) (not x35))
+(or (not x359) x358)
+(or (not x359) x357)
+(or (not x359) x356)
+(or x360 (not x359))
+(or x360 x169)
+(or x360 x130)
+(or x360 (not x308))
+(or x360 (not x309))
+(or x360 (not x308))
+(or x359 (not x169) (not x130) x308 x309 x308 (not x360))
+(or (not x360) (not x169) x361)
+(or (not x361) x360)
+(or (not x361) x169)
+(or x362 (not x155))
+(or x362 x37)
+(or x155 (not x37) (not x362))
+(or x363 (not x148))
+(or x363 (not x155))
+(or x363 x38)
+(or x148 x155 (not x38) (not x363))
+(or x36 (not x363) (not x362) x364)
+(or (not x364) (not x36))
+(or (not x364) x363)
+(or (not x364) x362)
+(or x365 (not x364))
+(or x365 x162)
+(or x365 x130)
+(or x365 (not x308))
+(or x365 (not x309))
+(or x365 (not x308))
+(or x364 (not x162) (not x130) x308 x309 x308 (not x365))
+(or (not x365) (not x162) x366)
+(or (not x366) x365)
+(or (not x366) x162)
+(or x367 (not x148))
+(or x367 x38)
+(or x148 (not x38) (not x367))
+(or x37 (not x367) x368)
+(or (not x368) (not x37))
+(or (not x368) x367)
+(or x369 (not x368))
+(or x369 x155)
+(or x369 x130)
+(or x369 (not x308))
+(or x369 (not x309))
+(or x369 (not x308))
+(or x368 (not x155) (not x130) x308 x309 x308 (not x369))
+(or (not x369) (not x155) x370)
+(or (not x370) x369)
+(or (not x370) x155)
+(or x371 x38)
+(or x371 x148)
+(or x371 x130)
+(or x371 (not x308))
+(or x371 (not x309))
+(or x371 (not x308))
+(or (not x38) (not x148) (not x130) x308 x309 x308 (not x371))
+(or (not x371) (not x148) x372)
+(or (not x372) x371)
+(or (not x372) x148)
+(or x133 (not x372))
+(or x133 (not x370))
+(or x133 (not x366))
+(or x133 (not x361))
+(or x133 x38)
+(or x372 x370 x366 x361 (not x38) (not x133))
+(or (not x133) (not x134) (not x135) (not x136) x244)
+(or (not x244) x133)
+(or (not x244) x134)
+(or (not x244) x135)
+(or (not x244) x136)
+(or x373 x374)
+(or x373 x375)
+(or x373 x376)
+(or x373 x377)
+(or (not x374) (not x375) (not x376) (not x377) (not x373))
+(or x378 (not x379) x380)
+(or (not x380) (not x378))
+(or (not x380) x379)
+(or x381 (not x382) x383)
+(or (not x383) (not x381))
+(or (not x383) x382)
+(or x384 (not x385) x386)
+(or (not x386) (not x384))
+(or (not x386) x385)
+(or x387 (not x388) x389)
+(or (not x389) (not x387))
+(or (not x389) x388)
+(or x390 (not x389))
+(or x390 (not x386))
+(or x390 (not x383))
+(or x390 (not x380))
+(or x389 x386 x383 x380 (not x390))
+(or (not x390) (not x373) x309)
+(or (not x309) x390)
+(or (not x309) x373)
+(or x229 x236 x246 x139 x391)
+(or (not x391) (not x229))
+(or (not x391) (not x236))
+(or (not x391) (not x246))
+(or (not x391) (not x139))
+(or x26 x25 x24 x23 x392)
+(or (not x392) (not x26))
+(or (not x392) (not x25))
+(or (not x392) (not x24))
+(or (not x392) (not x23))
+(or x393 (not x392))
+(or x393 (not x391))
+(or x392 x391 (not x393))
+(or x202 x209 x216 x223 x394)
+(or (not x394) (not x202))
+(or (not x394) (not x209))
+(or (not x394) (not x216))
+(or (not x394) (not x223))
+(or x30 x29 x28 x27 x395)
+(or (not x395) (not x30))
+(or (not x395) (not x29))
+(or (not x395) (not x28))
+(or (not x395) (not x27))
+(or x396 (not x395))
+(or x396 (not x394))
+(or x395 x394 (not x396))
+(or x175 x182 x189 x196 x397)
+(or (not x397) (not x175))
+(or (not x397) (not x182))
+(or (not x397) (not x189))
+(or (not x397) (not x196))
+(or x34 x33 x32 x31 x398)
+(or (not x398) (not x34))
+(or (not x398) (not x33))
+(or (not x398) (not x32))
+(or (not x398) (not x31))
+(or x399 (not x398))
+(or x399 (not x397))
+(or x398 x397 (not x399))
+(or x148 x155 x162 x169 x400)
+(or (not x400) (not x148))
+(or (not x400) (not x155))
+(or (not x400) (not x162))
+(or (not x400) (not x169))
+(or x38 x37 x36 x35 x401)
+(or (not x401) (not x38))
+(or (not x401) (not x37))
+(or (not x401) (not x36))
+(or (not x401) (not x35))
+(or x402 (not x401))
+(or x402 (not x400))
+(or x401 x400 (not x402))
+(or (not x402) (not x399) (not x396) (not x393) x308)
+(or (not x308) x402)
+(or (not x308) x399)
+(or (not x308) x396)
+(or (not x308) x393)
+(or x126 x130)
+(or x126 (not x308))
+(or x126 (not x309))
+(or x126 (not x308))
+(or (not x130) x308 x309 x308 (not x126))
+(or (not x24) (not x126) (not x125) (not x133) (not x134) (not x135) (not x136) (not x130) x403)
+(or (not x403) x24)
+(or (not x403) x126)
+(or (not x403) x125)
+(or (not x403) x133)
+(or (not x403) x134)
+(or (not x403) x135)
+(or (not x403) x136)
+(or (not x403) x130)
+(or (not x374) (not x375) (not x376) (not x377) x404)
+(or (not x404) x374)
+(or (not x404) x375)
+(or (not x404) x376)
+(or (not x404) x377)
+(or x405 (not x378))
+(or x405 x379)
+(or x378 (not x379) (not x405))
+(or x406 (not x381))
+(or x406 x382)
+(or x381 (not x382) (not x406))
+(or x407 (not x384))
+(or x407 x385)
+(or x384 (not x385) (not x407))
+(or x408 (not x387))
+(or x408 x388)
+(or x387 (not x388) (not x408))
+(or (not x408) (not x407) (not x406) (not x405) x409)
+(or (not x409) x408)
+(or (not x409) x407)
+(or (not x409) x406)
+(or (not x409) x405)
+(or x141 (not x409))
+(or x141 (not x404))
+(or x409 x404 (not x141))
+(or x410 (not x229))
+(or x410 (not x236))
+(or x410 (not x246))
+(or x410 (not x139))
+(or x229 x236 x246 x139 (not x410))
+(or x411 (not x26))
+(or x411 (not x25))
+(or x411 (not x24))
+(or x411 (not x23))
+(or x26 x25 x24 x23 (not x411))
+(or (not x411) (not x410) x412)
+(or (not x412) x411)
+(or (not x412) x410)
+(or x413 (not x202))
+(or x413 (not x209))
+(or x413 (not x216))
+(or x413 (not x223))
+(or x202 x209 x216 x223 (not x413))
+(or x414 (not x30))
+(or x414 (not x29))
+(or x414 (not x28))
+(or x414 (not x27))
+(or x30 x29 x28 x27 (not x414))
+(or (not x414) (not x413) x415)
+(or (not x415) x414)
+(or (not x415) x413)
+(or x416 (not x175))
+(or x416 (not x182))
+(or x416 (not x189))
+(or x416 (not x196))
+(or x175 x182 x189 x196 (not x416))
+(or x417 (not x34))
+(or x417 (not x33))
+(or x417 (not x32))
+(or x417 (not x31))
+(or x34 x33 x32 x31 (not x417))
+(or (not x417) (not x416) x418)
+(or (not x418) x417)
+(or (not x418) x416)
+(or x419 (not x148))
+(or x419 (not x155))
+(or x419 (not x162))
+(or x419 (not x169))
+(or x148 x155 x162 x169 (not x419))
+(or (not x420) (not x419) x421)
+(or (not x421) x420)
+(or (not x421) x419)
+(or x140 (not x421))
+(or x140 (not x418))
+(or x140 (not x415))
+(or x140 (not x412))
+(or x421 x418 x415 x412 (not x140))
+(or (not x130) (not x140) (not x141) (not x140) x239)
+(or (not x239) x130)
+(or (not x239) x140)
+(or (not x239) x141)
+(or (not x239) x140)
+(or x420 (not x38))
+(or x420 (not x37))
+(or x420 (not x36))
+(or x420 (not x35))
+(or x38 x37 x36 x35 (not x420))
+(or x125 (not x38))
+(or x125 (not x37))
+(or x125 (not x36))
+(or x125 (not x35))
+(or x125 (not x34))
+(or x125 (not x33))
+(or x125 (not x32))
+(or x125 (not x31))
+(or x125 (not x30))
+(or x125 (not x29))
+(or x125 (not x28))
+(or x125 (not x27))
+(or x125 (not x26))
+(or x125 (not x25))
+(or x125 (not x24))
+(or x125 (not x23))
+(or x38 x37 x36 x35 x34 x33 x32 x31 x30 x29 x28 x27 x26 x25 x24 x23 (not x125))
+(or x236 (not x25) x422)
+(or (not x422) (not x236))
+(or (not x422) x25)
+(or x229 x236 (not x26) x423)
+(or (not x423) (not x229))
+(or (not x423) (not x236))
+(or (not x423) x26)
+(or x252 (not x24))
+(or x252 (not x423))
+(or x252 (not x422))
+(or x24 x423 x422 (not x252))
+(or (not x252) (not x246) (not x125) (not x130) (not x140) (not x141) (not x140) x424)
+(or (not x424) x252)
+(or (not x424) x246)
+(or (not x424) x125)
+(or (not x424) x130)
+(or (not x424) x140)
+(or (not x424) x141)
+(or (not x424) x140)
+(or x425 (not x424))
+(or x425 (not x403))
+(or x425 (not x302))
+(or x425 (not x245))
+(or x424 x403 x302 x245 (not x425))
+(or x426 (not x41))
+(or x426 x40)
+(or x426 x427)
+(or x41 (not x40) (not x427) (not x426))
+(or (not x426) (not x428) x429)
+(or (not x429) x426)
+(or (not x429) x428)
+(or x430 (not x42))
+(or x430 (not x43))
+(or x430 (not x44))
+(or x430 (not x45))
+(or x430 (not x46))
+(or x430 (not x47))
+(or x430 (not x48))
+(or x430 (not x49))
+(or x430 (not x50))
+(or x430 (not x51))
+(or x430 (not x52))
+(or x430 (not x53))
+(or x430 (not x54))
+(or x430 (not x55))
+(or x430 (not x56))
+(or x430 (not x57))
+(or x42 x43 x44 x45 x46 x47 x48 x49 x50 x51 x52 x53 x54 x55 x56 x57 (not x430))
+(or (not x41) x40 (not x430) x431)
+(or (not x431) x41)
+(or (not x431) (not x40))
+(or (not x431) x430)
+(or x41 (not x40) x432)
+(or (not x432) (not x41))
+(or (not x432) x40)
+(or x428 (not x432))
+(or x428 (not x431))
+(or x432 x431 (not x428))
+(or x433 (not x41))
+(or x433 x40)
+(or x433 (not x427))
+(or x41 (not x40) x427 (not x433))
+(or (not x433) (not x428) x434)
+(or (not x434) x433)
+(or (not x434) x428)
+(or (not x435) (not x436) x437)
+(or (not x437) x435)
+(or (not x437) x436)
+(or (not x438) (not x435) (not x439) x440)
+(or (not x440) x438)
+(or (not x440) x435)
+(or (not x440) x439)
+(or (not x441) (not x438) (not x435) (not x442) x443)
+(or (not x443) x441)
+(or (not x443) x438)
+(or (not x443) x435)
+(or (not x443) x442)
+(or x444 (not x445))
+(or x444 (not x443))
+(or x444 (not x440))
+(or x444 (not x437))
+(or x445 x443 x440 x437 (not x444))
+(or (not x444) x446 (not x447) (not x448) (not x449) x450)
+(or (not x450) x444)
+(or (not x450) (not x446))
+(or (not x450) x447)
+(or (not x450) x448)
+(or (not x450) x449)
+(or (not x438) (not x439) x451)
+(or (not x451) x438)
+(or (not x451) x439)
+(or (not x441) (not x438) (not x442) x452)
+(or (not x452) x441)
+(or (not x452) x438)
+(or (not x452) x442)
+(or (not x453) (not x441) (not x438) (not x445) x454)
+(or (not x454) x453)
+(or (not x454) x441)
+(or (not x454) x438)
+(or (not x454) x445)
+(or x455 (not x436))
+(or x455 (not x454))
+(or x455 (not x452))
+(or x455 (not x451))
+(or x436 x454 x452 x451 (not x455))
+(or (not x455) x456 (not x457) (not x448) (not x449) x458)
+(or (not x458) x455)
+(or (not x458) (not x456))
+(or (not x458) x457)
+(or (not x458) x448)
+(or (not x458) x449)
+(or (not x441) (not x442) x459)
+(or (not x459) x441)
+(or (not x459) x442)
+(or (not x453) (not x441) (not x445) x460)
+(or (not x460) x453)
+(or (not x460) x441)
+(or (not x460) x445)
+(or (not x435) (not x453) (not x441) (not x436) x461)
+(or (not x461) x435)
+(or (not x461) x453)
+(or (not x461) x441)
+(or (not x461) x436)
+(or x462 (not x439))
+(or x462 (not x461))
+(or x462 (not x460))
+(or x462 (not x459))
+(or x439 x461 x460 x459 (not x462))
+(or (not x462) x463 (not x464) (not x448) (not x449) x465)
+(or (not x465) x462)
+(or (not x465) (not x463))
+(or (not x465) x464)
+(or (not x465) x448)
+(or (not x465) x449)
+(or (not x453) (not x445) x466)
+(or (not x466) x453)
+(or (not x466) x445)
+(or (not x435) (not x453) (not x436) x467)
+(or (not x467) x435)
+(or (not x467) x453)
+(or (not x467) x436)
+(or (not x438) (not x435) (not x453) (not x439) x468)
+(or (not x468) x438)
+(or (not x468) x435)
+(or (not x468) x453)
+(or (not x468) x439)
+(or x469 (not x442))
+(or x469 (not x468))
+(or x469 (not x467))
+(or x469 (not x466))
+(or x442 x468 x467 x466 (not x469))
+(or (not x469) x470 (not x471) (not x448) (not x449) x472)
+(or (not x472) x469)
+(or (not x472) (not x470))
+(or (not x472) x471)
+(or (not x472) x448)
+(or (not x472) x449)
+(or x473 (not x474) x475)
+(or (not x475) (not x473))
+(or (not x475) x474)
+(or (not x448) (not x476) (not x477) x478)
+(or (not x478) x448)
+(or (not x478) x476)
+(or (not x478) x477)
+(or x479 (not x478))
+(or x479 (not x475))
+(or x478 x475 (not x479))
+(or x473 (not x476) x480)
+(or (not x480) (not x473))
+(or (not x480) x476)
+(or (not x448) (not x481) (not x477) x482)
+(or (not x482) x448)
+(or (not x482) x481)
+(or (not x482) x477)
+(or x483 (not x482))
+(or x483 (not x480))
+(or x482 x480 (not x483))
+(or x473 (not x481) x484)
+(or (not x484) (not x473))
+(or (not x484) x481)
+(or (not x448) (not x485) (not x477) x486)
+(or (not x486) x448)
+(or (not x486) x485)
+(or (not x486) x477)
+(or x487 (not x486))
+(or x487 (not x484))
+(or x486 x484 (not x487))
+(or x473 (not x485) x488)
+(or (not x488) (not x473))
+(or (not x488) x485)
+(or (not x448) (not x477) x489)
+(or (not x489) x448)
+(or (not x489) x477)
+(or x490 (not x489))
+(or x490 (not x488))
+(or x489 x488 (not x490))
+(or x491 (not x446))
+(or x491 x447)
+(or x491 (not x447))
+(or x446 (not x447) x447 (not x491))
+(or x492 (not x493))
+(or x492 x494)
+(or x493 (not x494) (not x492))
+(or (not x492) (not x491) x495)
+(or (not x495) x492)
+(or (not x495) x491)
+(or x496 (not x456))
+(or x496 x457)
+(or x496 (not x457))
+(or x456 (not x457) x457 (not x496))
+(or x497 (not x498))
+(or x497 x499)
+(or x498 (not x499) (not x497))
+(or (not x497) (not x496) x500)
+(or (not x500) x497)
+(or (not x500) x496)
+(or x501 (not x463))
+(or x501 x464)
+(or x501 (not x464))
+(or x463 (not x464) x464 (not x501))
+(or x502 (not x503))
+(or x502 x504)
+(or x503 (not x504) (not x502))
+(or (not x502) (not x501) x505)
+(or (not x505) x502)
+(or (not x505) x501)
+(or x506 (not x470))
+(or x506 x471)
+(or x506 (not x471))
+(or x470 (not x471) x471 (not x506))
+(or x507 (not x508))
+(or x507 x509)
+(or x508 (not x509) (not x507))
+(or (not x507) (not x506) x510)
+(or (not x510) x507)
+(or (not x510) x506)
+(or x511 (not x448))
+(or x511 (not x473))
+(or x448 x473 (not x511))
+(or x512 (not x513))
+(or x512 (not x515))
+(or x513 x515 (not x512))
+(or x516 (not x517))
+(or x516 (not x519))
+(or x517 x519 (not x516))
+(or x520 (not x521))
+(or x520 (not x523))
+(or x521 x523 (not x520))
+(or x524 (not x525))
+(or x524 (not x527))
+(or x525 x527 (not x524))
+(or x528 (not x529))
+(or x528 (not x531))
+(or x529 x531 (not x528))
+(or x532 (not x533))
+(or x532 (not x535))
+(or x533 x535 (not x532))
+(or x536 (not x537))
+(or x536 (not x539))
+(or x537 x539 (not x536))
+(or x540 (not x541))
+(or x540 (not x543))
+(or x541 x543 (not x540))
+(or x544 (not x545))
+(or x544 (not x547))
+(or x545 x547 (not x544))
+(or x548 (not x549))
+(or x548 (not x551))
+(or x549 x551 (not x548))
+(or x552 (not x553))
+(or x552 (not x555))
+(or x553 x555 (not x552))
+(or x556 (not x557))
+(or x556 (not x559))
+(or x557 x559 (not x556))
+(or x560 (not x561))
+(or x560 (not x563))
+(or x561 x563 (not x560))
+(or x564 (not x565))
+(or x564 (not x567))
+(or x565 x567 (not x564))
+(or x568 (not x569))
+(or x568 (not x571))
+(or x569 x571 (not x568))
+(or x572 (not x573))
+(or x572 (not x575))
+(or x573 x575 (not x572))
+(or (not x57) (not x576) (not x577) (not x578) (not x579) x580)
+(or (not x580) x57)
+(or (not x580) x576)
+(or (not x580) x577)
+(or (not x580) x578)
+(or (not x580) x579)
+(or (not x45) (not x577) (not x576) (not x581) (not x582) x583)
+(or (not x583) x45)
+(or (not x583) x577)
+(or (not x583) x576)
+(or (not x583) x581)
+(or (not x583) x582)
+(or (not x42) (not x577) (not x576) (not x584) (not x585) (not x586) (not x587) (not x581) x588)
+(or (not x588) x42)
+(or (not x588) x577)
+(or (not x588) x576)
+(or (not x588) x584)
+(or (not x588) x585)
+(or (not x588) x586)
+(or (not x588) x587)
+(or (not x588) x581)
+(or (not x589) (not x590) (not x576) (not x581) (not x477) (not x591) (not x477) x592)
+(or (not x592) x589)
+(or (not x592) x590)
+(or (not x592) x576)
+(or (not x592) x581)
+(or (not x592) x477)
+(or (not x592) x591)
+(or (not x592) x477)
+(or x593 (not x592))
+(or x593 (not x588))
+(or x593 (not x583))
+(or x593 (not x580))
+(or x593 (not x594))
+(or x592 x588 x583 x580 x594 (not x593))
+(or (not x56) (not x576) (not x577) (not x578) (not x579) x595)
+(or (not x595) x56)
+(or (not x595) x576)
+(or (not x595) x577)
+(or (not x595) x578)
+(or (not x595) x579)
+(or (not x44) (not x577) (not x576) (not x581) (not x582) x596)
+(or (not x596) x44)
+(or (not x596) x577)
+(or (not x596) x576)
+(or (not x596) x581)
+(or (not x596) x582)
+(or (not x57) (not x577) (not x576) (not x584) (not x585) (not x586) (not x587) (not x581) x597)
+(or (not x597) x57)
+(or (not x597) x577)
+(or (not x597) x576)
+(or (not x597) x584)
+(or (not x597) x585)
+(or (not x597) x586)
+(or (not x597) x587)
+(or (not x597) x581)
+(or (not x57) (not x598) (not x576) (not x581) (not x477) (not x591) (not x477) x599)
+(or (not x599) x57)
+(or (not x599) x598)
+(or (not x599) x576)
+(or (not x599) x581)
+(or (not x599) x477)
+(or (not x599) x591)
+(or (not x599) x477)
+(or x600 (not x599))
+(or x600 (not x597))
+(or x600 (not x596))
+(or x600 (not x595))
+(or x599 x597 x596 x595 (not x600))
+(or (not x55) (not x576) (not x577) (not x578) (not x579) x601)
+(or (not x601) x55)
+(or (not x601) x576)
+(or (not x601) x577)
+(or (not x601) x578)
+(or (not x601) x579)
+(or (not x43) (not x577) (not x576) (not x581) (not x582) x602)
+(or (not x602) x43)
+(or (not x602) x577)
+(or (not x602) x576)
+(or (not x602) x581)
+(or (not x602) x582)
+(or (not x56) (not x577) (not x576) (not x584) (not x585) (not x586) (not x587) (not x581) x603)
+(or (not x603) x56)
+(or (not x603) x577)
+(or (not x603) x576)
+(or (not x603) x584)
+(or (not x603) x585)
+(or (not x603) x586)
+(or (not x603) x587)
+(or (not x603) x581)
+(or (not x604) (not x605) (not x576) (not x581) (not x477) (not x591) (not x477) x606)
+(or (not x606) x604)
+(or (not x606) x605)
+(or (not x606) x576)
+(or (not x606) x581)
+(or (not x606) x477)
+(or (not x606) x591)
+(or (not x606) x477)
+(or x607 (not x606))
+(or x607 (not x603))
+(or x607 (not x602))
+(or x607 (not x601))
+(or x606 x603 x602 x601 (not x607))
+(or (not x54) (not x576) (not x577) (not x578) (not x579) x608)
+(or (not x608) x54)
+(or (not x608) x576)
+(or (not x608) x577)
+(or (not x608) x578)
+(or (not x608) x579)
+(or (not x42) (not x577) (not x576) (not x581) (not x582) x609)
+(or (not x609) x42)
+(or (not x609) x577)
+(or (not x609) x576)
+(or (not x609) x581)
+(or (not x609) x582)
+(or (not x55) (not x577) (not x576) (not x584) (not x585) (not x586) (not x587) (not x581) x610)
+(or (not x610) x55)
+(or (not x610) x577)
+(or (not x610) x576)
+(or (not x610) x584)
+(or (not x610) x585)
+(or (not x610) x586)
+(or (not x610) x587)
+(or (not x610) x581)
+(or (not x611) (not x612) (not x576) (not x581) (not x477) (not x591) (not x477) x613)
+(or (not x613) x611)
+(or (not x613) x612)
+(or (not x613) x576)
+(or (not x613) x581)
+(or (not x613) x477)
+(or (not x613) x591)
+(or (not x613) x477)
+(or x614 (not x613))
+(or x614 (not x610))
+(or x614 (not x609))
+(or x614 (not x608))
+(or x613 x610 x609 x608 (not x614))
+(or (not x53) (not x576) (not x577) (not x578) (not x579) x615)
+(or (not x615) x53)
+(or (not x615) x576)
+(or (not x615) x577)
+(or (not x615) x578)
+(or (not x615) x579)
+(or (not x57) (not x577) (not x576) (not x581) (not x582) x616)
+(or (not x616) x57)
+(or (not x616) x577)
+(or (not x616) x576)
+(or (not x616) x581)
+(or (not x616) x582)
+(or (not x54) (not x577) (not x576) (not x584) (not x585) (not x586) (not x587) (not x581) x617)
+(or (not x617) x54)
+(or (not x617) x577)
+(or (not x617) x576)
+(or (not x617) x584)
+(or (not x617) x585)
+(or (not x617) x586)
+(or (not x617) x587)
+(or (not x617) x581)
+(or (not x618) (not x619) (not x576) (not x581) (not x477) (not x591) (not x477) x620)
+(or (not x620) x618)
+(or (not x620) x619)
+(or (not x620) x576)
+(or (not x620) x581)
+(or (not x620) x477)
+(or (not x620) x591)
+(or (not x620) x477)
+(or x621 (not x620))
+(or x621 (not x617))
+(or x621 (not x616))
+(or x621 (not x615))
+(or x620 x617 x616 x615 (not x621))
+(or (not x52) (not x576) (not x577) (not x578) (not x579) x622)
+(or (not x622) x52)
+(or (not x622) x576)
+(or (not x622) x577)
+(or (not x622) x578)
+(or (not x622) x579)
+(or (not x56) (not x577) (not x576) (not x581) (not x582) x623)
+(or (not x623) x56)
+(or (not x623) x577)
+(or (not x623) x576)
+(or (not x623) x581)
+(or (not x623) x582)
+(or (not x53) (not x577) (not x576) (not x584) (not x585) (not x586) (not x587) (not x581) x624)
+(or (not x624) x53)
+(or (not x624) x577)
+(or (not x624) x576)
+(or (not x624) x584)
+(or (not x624) x585)
+(or (not x624) x586)
+(or (not x624) x587)
+(or (not x624) x581)
+(or (not x53) (not x625) (not x576) (not x581) (not x477) (not x591) (not x477) x626)
+(or (not x626) x53)
+(or (not x626) x625)
+(or (not x626) x576)
+(or (not x626) x581)
+(or (not x626) x477)
+(or (not x626) x591)
+(or (not x626) x477)
+(or x627 (not x626))
+(or x627 (not x624))
+(or x627 (not x623))
+(or x627 (not x622))
+(or x626 x624 x623 x622 (not x627))
+(or (not x51) (not x576) (not x577) (not x578) (not x579) x628)
+(or (not x628) x51)
+(or (not x628) x576)
+(or (not x628) x577)
+(or (not x628) x578)
+(or (not x628) x579)
+(or (not x55) (not x577) (not x576) (not x581) (not x582) x629)
+(or (not x629) x55)
+(or (not x629) x577)
+(or (not x629) x576)
+(or (not x629) x581)
+(or (not x629) x582)
+(or (not x52) (not x577) (not x576) (not x584) (not x585) (not x586) (not x587) (not x581) x630)
+(or (not x630) x52)
+(or (not x630) x577)
+(or (not x630) x576)
+(or (not x630) x584)
+(or (not x630) x585)
+(or (not x630) x586)
+(or (not x630) x587)
+(or (not x630) x581)
+(or (not x631) (not x632) (not x576) (not x581) (not x477) (not x591) (not x477) x633)
+(or (not x633) x631)
+(or (not x633) x632)
+(or (not x633) x576)
+(or (not x633) x581)
+(or (not x633) x477)
+(or (not x633) x591)
+(or (not x633) x477)
+(or x634 (not x633))
+(or x634 (not x630))
+(or x634 (not x629))
+(or x634 (not x628))
+(or x633 x630 x629 x628 (not x634))
+(or (not x50) (not x576) (not x577) (not x578) (not x579) x635)
+(or (not x635) x50)
+(or (not x635) x576)
+(or (not x635) x577)
+(or (not x635) x578)
+(or (not x635) x579)
+(or (not x54) (not x577) (not x576) (not x581) (not x582) x636)
+(or (not x636) x54)
+(or (not x636) x577)
+(or (not x636) x576)
+(or (not x636) x581)
+(or (not x636) x582)
+(or (not x51) (not x577) (not x576) (not x584) (not x585) (not x586) (not x587) (not x581) x637)
+(or (not x637) x51)
+(or (not x637) x577)
+(or (not x637) x576)
+(or (not x637) x584)
+(or (not x637) x585)
+(or (not x637) x586)
+(or (not x637) x587)
+(or (not x637) x581)
+(or (not x638) (not x639) (not x576) (not x581) (not x477) (not x591) (not x477) x640)
+(or (not x640) x638)
+(or (not x640) x639)
+(or (not x640) x576)
+(or (not x640) x581)
+(or (not x640) x477)
+(or (not x640) x591)
+(or (not x640) x477)
+(or x641 (not x640))
+(or x641 (not x637))
+(or x641 (not x636))
+(or x641 (not x635))
+(or x640 x637 x636 x635 (not x641))
+(or (not x49) (not x576) (not x577) (not x578) (not x579) x642)
+(or (not x642) x49)
+(or (not x642) x576)
+(or (not x642) x577)
+(or (not x642) x578)
+(or (not x642) x579)
+(or (not x53) (not x577) (not x576) (not x581) (not x582) x643)
+(or (not x643) x53)
+(or (not x643) x577)
+(or (not x643) x576)
+(or (not x643) x581)
+(or (not x643) x582)
+(or (not x50) (not x577) (not x576) (not x584) (not x585) (not x586) (not x587) (not x581) x644)
+(or (not x644) x50)
+(or (not x644) x577)
+(or (not x644) x576)
+(or (not x644) x584)
+(or (not x644) x585)
+(or (not x644) x586)
+(or (not x644) x587)
+(or (not x644) x581)
+(or (not x645) (not x646) (not x576) (not x581) (not x477) (not x591) (not x477) x647)
+(or (not x647) x645)
+(or (not x647) x646)
+(or (not x647) x576)
+(or (not x647) x581)
+(or (not x647) x477)
+(or (not x647) x591)
+(or (not x647) x477)
+(or x648 (not x647))
+(or x648 (not x644))
+(or x648 (not x643))
+(or x648 (not x642))
+(or x647 x644 x643 x642 (not x648))
+(or (not x48) (not x576) (not x577) (not x578) (not x579) x649)
+(or (not x649) x48)
+(or (not x649) x576)
+(or (not x649) x577)
+(or (not x649) x578)
+(or (not x649) x579)
+(or (not x52) (not x577) (not x576) (not x581) (not x582) x650)
+(or (not x650) x52)
+(or (not x650) x577)
+(or (not x650) x576)
+(or (not x650) x581)
+(or (not x650) x582)
+(or (not x49) (not x577) (not x576) (not x584) (not x585) (not x586) (not x587) (not x581) x651)
+(or (not x651) x49)
+(or (not x651) x577)
+(or (not x651) x576)
+(or (not x651) x584)
+(or (not x651) x585)
+(or (not x651) x586)
+(or (not x651) x587)
+(or (not x651) x581)
+(or (not x49) (not x652) (not x576) (not x581) (not x477) (not x591) (not x477) x653)
+(or (not x653) x49)
+(or (not x653) x652)
+(or (not x653) x576)
+(or (not x653) x581)
+(or (not x653) x477)
+(or (not x653) x591)
+(or (not x653) x477)
+(or x654 (not x653))
+(or x654 (not x651))
+(or x654 (not x650))
+(or x654 (not x649))
+(or x653 x651 x650 x649 (not x654))
+(or (not x47) (not x576) (not x577) (not x578) (not x579) x655)
+(or (not x655) x47)
+(or (not x655) x576)
+(or (not x655) x577)
+(or (not x655) x578)
+(or (not x655) x579)
+(or (not x51) (not x577) (not x576) (not x581) (not x582) x656)
+(or (not x656) x51)
+(or (not x656) x577)
+(or (not x656) x576)
+(or (not x656) x581)
+(or (not x656) x582)
+(or (not x48) (not x577) (not x576) (not x584) (not x585) (not x586) (not x587) (not x581) x657)
+(or (not x657) x48)
+(or (not x657) x577)
+(or (not x657) x576)
+(or (not x657) x584)
+(or (not x657) x585)
+(or (not x657) x586)
+(or (not x657) x587)
+(or (not x657) x581)
+(or (not x658) (not x659) (not x576) (not x581) (not x477) (not x591) (not x477) x660)
+(or (not x660) x658)
+(or (not x660) x659)
+(or (not x660) x576)
+(or (not x660) x581)
+(or (not x660) x477)
+(or (not x660) x591)
+(or (not x660) x477)
+(or x661 (not x660))
+(or x661 (not x657))
+(or x661 (not x656))
+(or x661 (not x655))
+(or x660 x657 x656 x655 (not x661))
+(or (not x46) (not x576) (not x577) (not x578) (not x579) x662)
+(or (not x662) x46)
+(or (not x662) x576)
+(or (not x662) x577)
+(or (not x662) x578)
+(or (not x662) x579)
+(or (not x50) (not x577) (not x576) (not x581) (not x582) x663)
+(or (not x663) x50)
+(or (not x663) x577)
+(or (not x663) x576)
+(or (not x663) x581)
+(or (not x663) x582)
+(or (not x47) (not x577) (not x576) (not x584) (not x585) (not x586) (not x587) (not x581) x664)
+(or (not x664) x47)
+(or (not x664) x577)
+(or (not x664) x576)
+(or (not x664) x584)
+(or (not x664) x585)
+(or (not x664) x586)
+(or (not x664) x587)
+(or (not x664) x581)
+(or (not x665) (not x666) (not x576) (not x581) (not x477) (not x591) (not x477) x667)
+(or (not x667) x665)
+(or (not x667) x666)
+(or (not x667) x576)
+(or (not x667) x581)
+(or (not x667) x477)
+(or (not x667) x591)
+(or (not x667) x477)
+(or x668 (not x667))
+(or x668 (not x664))
+(or x668 (not x663))
+(or x668 (not x662))
+(or x667 x664 x663 x662 (not x668))
+(or (not x45) (not x576) (not x577) (not x578) (not x579) x669)
+(or (not x669) x45)
+(or (not x669) x576)
+(or (not x669) x577)
+(or (not x669) x578)
+(or (not x669) x579)
+(or (not x49) (not x577) (not x576) (not x581) (not x582) x670)
+(or (not x670) x49)
+(or (not x670) x577)
+(or (not x670) x576)
+(or (not x670) x581)
+(or (not x670) x582)
+(or (not x46) (not x577) (not x576) (not x584) (not x585) (not x586) (not x587) (not x581) x671)
+(or (not x671) x46)
+(or (not x671) x577)
+(or (not x671) x576)
+(or (not x671) x584)
+(or (not x671) x585)
+(or (not x671) x586)
+(or (not x671) x587)
+(or (not x671) x581)
+(or (not x672) (not x673) (not x576) (not x581) (not x477) (not x591) (not x477) x674)
+(or (not x674) x672)
+(or (not x674) x673)
+(or (not x674) x576)
+(or (not x674) x581)
+(or (not x674) x477)
+(or (not x674) x591)
+(or (not x674) x477)
+(or x675 (not x674))
+(or x675 (not x671))
+(or x675 (not x670))
+(or x675 (not x669))
+(or x674 x671 x670 x669 (not x675))
+(or (not x44) (not x576) (not x577) (not x578) (not x579) x676)
+(or (not x676) x44)
+(or (not x676) x576)
+(or (not x676) x577)
+(or (not x676) x578)
+(or (not x676) x579)
+(or (not x48) (not x577) (not x576) (not x581) (not x582) x677)
+(or (not x677) x48)
+(or (not x677) x577)
+(or (not x677) x576)
+(or (not x677) x581)
+(or (not x677) x582)
+(or (not x45) (not x577) (not x576) (not x584) (not x585) (not x586) (not x587) (not x581) x678)
+(or (not x678) x45)
+(or (not x678) x577)
+(or (not x678) x576)
+(or (not x678) x584)
+(or (not x678) x585)
+(or (not x678) x586)
+(or (not x678) x587)
+(or (not x678) x581)
+(or (not x45) (not x679) (not x576) (not x581) (not x477) (not x591) (not x477) x680)
+(or (not x680) x45)
+(or (not x680) x679)
+(or (not x680) x576)
+(or (not x680) x581)
+(or (not x680) x477)
+(or (not x680) x591)
+(or (not x680) x477)
+(or x681 (not x680))
+(or x681 (not x678))
+(or x681 (not x677))
+(or x681 (not x676))
+(or x680 x678 x677 x676 (not x681))
+(or (not x43) (not x576) (not x577) (not x578) (not x579) x682)
+(or (not x682) x43)
+(or (not x682) x576)
+(or (not x682) x577)
+(or (not x682) x578)
+(or (not x682) x579)
+(or (not x47) (not x577) (not x576) (not x581) (not x582) x683)
+(or (not x683) x47)
+(or (not x683) x577)
+(or (not x683) x576)
+(or (not x683) x581)
+(or (not x683) x582)
+(or (not x44) (not x577) (not x576) (not x584) (not x585) (not x586) (not x587) (not x581) x684)
+(or (not x684) x44)
+(or (not x684) x577)
+(or (not x684) x576)
+(or (not x684) x584)
+(or (not x684) x585)
+(or (not x684) x586)
+(or (not x684) x587)
+(or (not x684) x581)
+(or (not x685) (not x686) (not x576) (not x581) (not x477) (not x591) (not x477) x687)
+(or (not x687) x685)
+(or (not x687) x686)
+(or (not x687) x576)
+(or (not x687) x581)
+(or (not x687) x477)
+(or (not x687) x591)
+(or (not x687) x477)
+(or x688 (not x687))
+(or x688 (not x684))
+(or x688 (not x683))
+(or x688 (not x682))
+(or x687 x684 x683 x682 (not x688))
+(or x579 (not x689))
+(or x579 (not x594))
+(or x579 (not x690))
+(or x579 (not x691))
+(or x579 (not x692))
+(or x579 (not x693))
+(or x579 x581)
+(or x689 x594 x690 x691 x692 x693 (not x581) (not x579))
+(or x57 x56 x55 x54 x53 x52 x51 x50 x49 x48 x47 x46 x45 x44 x43 x42 x594)
+(or (not x594) (not x57))
+(or (not x594) (not x56))
+(or (not x594) (not x55))
+(or (not x594) (not x54))
+(or (not x594) (not x53))
+(or (not x594) (not x52))
+(or (not x594) (not x51))
+(or (not x594) (not x50))
+(or (not x594) (not x49))
+(or (not x594) (not x48))
+(or (not x594) (not x47))
+(or (not x594) (not x46))
+(or (not x594) (not x45))
+(or (not x594) (not x44))
+(or (not x594) (not x43))
+(or (not x594) (not x42))
+(or x578 (not x689))
+(or x578 (not x594))
+(or x578 x581)
+(or x578 (not x694))
+(or x689 x594 (not x581) x694 (not x578))
+(or (not x42) (not x576) (not x577) (not x578) (not x579) x695)
+(or (not x695) x42)
+(or (not x695) x576)
+(or (not x695) x577)
+(or (not x695) x578)
+(or (not x695) x579)
+(or x696 (not x43) x697)
+(or (not x697) (not x696))
+(or (not x697) x43)
+(or x686 x696 (not x44) x698)
+(or (not x698) (not x686))
+(or (not x698) (not x696))
+(or (not x698) x44)
+(or x679 x686 x696 (not x45) x699)
+(or (not x699) (not x679))
+(or (not x699) (not x686))
+(or (not x699) (not x696))
+(or (not x699) x45)
+(or x589 (not x42))
+(or x589 (not x699))
+(or x589 (not x698))
+(or x589 (not x697))
+(or x42 x699 x698 x697 (not x589))
+(or (not x589) (not x590) (not x581) (not x477) (not x591) (not x477) x700)
+(or (not x700) x589)
+(or (not x700) x590)
+(or (not x700) x581)
+(or (not x700) x477)
+(or (not x700) x591)
+(or (not x700) x477)
+(or x701 (not x700))
+(or x701 x590)
+(or x700 (not x590) (not x701))
+(or (not x702) (not x696) (not x581) (not x477) (not x591) (not x477) x703)
+(or (not x703) x702)
+(or (not x703) x696)
+(or (not x703) x581)
+(or (not x703) x477)
+(or (not x703) x591)
+(or (not x703) x477)
+(or x704 (not x703))
+(or x704 x696)
+(or x703 (not x696) (not x704))
+(or x679 (not x45) x705)
+(or (not x705) (not x679))
+(or (not x705) x45)
+(or x685 (not x44))
+(or x685 (not x705))
+(or x44 x705 (not x685))
+(or (not x685) (not x686) (not x581) (not x477) (not x591) (not x477) x706)
+(or (not x706) x685)
+(or (not x706) x686)
+(or (not x706) x581)
+(or (not x706) x477)
+(or (not x706) x591)
+(or (not x706) x477)
+(or x707 (not x706))
+(or x707 x686)
+(or x706 (not x686) (not x707))
+(or (not x45) (not x679) (not x581) (not x477) (not x591) (not x477) x708)
+(or (not x708) x45)
+(or (not x708) x679)
+(or (not x708) x581)
+(or (not x708) x477)
+(or (not x708) x591)
+(or (not x708) x477)
+(or x709 (not x708))
+(or x709 x679)
+(or x708 (not x679) (not x709))
+(or (not x709) (not x707) (not x704) (not x701) (not x45) x693)
+(or (not x693) x709)
+(or (not x693) x707)
+(or (not x693) x704)
+(or (not x693) x701)
+(or (not x693) x45)
+(or x666 (not x47) x710)
+(or (not x710) (not x666))
+(or (not x710) x47)
+(or x659 x666 (not x48) x711)
+(or (not x711) (not x659))
+(or (not x711) (not x666))
+(or (not x711) x48)
+(or x652 x659 x666 (not x49) x712)
+(or (not x712) (not x652))
+(or (not x712) (not x659))
+(or (not x712) (not x666))
+(or (not x712) x49)
+(or x672 (not x46))
+(or x672 (not x712))
+(or x672 (not x711))
+(or x672 (not x710))
+(or x46 x712 x711 x710 (not x672))
+(or (not x672) (not x673) (not x581) (not x477) (not x591) (not x477) x713)
+(or (not x713) x672)
+(or (not x713) x673)
+(or (not x713) x581)
+(or (not x713) x477)
+(or (not x713) x591)
+(or (not x713) x477)
+(or x714 (not x713))
+(or x714 x673)
+(or x713 (not x673) (not x714))
+(or x659 (not x48) x715)
+(or (not x715) (not x659))
+(or (not x715) x48)
+(or x652 x659 (not x49) x716)
+(or (not x716) (not x652))
+(or (not x716) (not x659))
+(or (not x716) x49)
+(or x665 (not x47))
+(or x665 (not x716))
+(or x665 (not x715))
+(or x47 x716 x715 (not x665))
+(or (not x665) (not x666) (not x581) (not x477) (not x591) (not x477) x717)
+(or (not x717) x665)
+(or (not x717) x666)
+(or (not x717) x581)
+(or (not x717) x477)
+(or (not x717) x591)
+(or (not x717) x477)
+(or x718 (not x717))
+(or x718 x666)
+(or x717 (not x666) (not x718))
+(or x652 (not x49) x719)
+(or (not x719) (not x652))
+(or (not x719) x49)
+(or x658 (not x48))
+(or x658 (not x719))
+(or x48 x719 (not x658))
+(or (not x658) (not x659) (not x581) (not x477) (not x591) (not x477) x720)
+(or (not x720) x658)
+(or (not x720) x659)
+(or (not x720) x581)
+(or (not x720) x477)
+(or (not x720) x591)
+(or (not x720) x477)
+(or x721 (not x720))
+(or x721 x659)
+(or x720 (not x659) (not x721))
+(or (not x49) (not x652) (not x581) (not x477) (not x591) (not x477) x722)
+(or (not x722) x49)
+(or (not x722) x652)
+(or (not x722) x581)
+(or (not x722) x477)
+(or (not x722) x591)
+(or (not x722) x477)
+(or x723 (not x722))
+(or x723 x652)
+(or x722 (not x652) (not x723))
+(or (not x723) (not x721) (not x718) (not x714) (not x49) x692)
+(or (not x692) x723)
+(or (not x692) x721)
+(or (not x692) x718)
+(or (not x692) x714)
+(or (not x692) x49)
+(or x639 (not x51) x724)
+(or (not x724) (not x639))
+(or (not x724) x51)
+(or x632 x639 (not x52) x725)
+(or (not x725) (not x632))
+(or (not x725) (not x639))
+(or (not x725) x52)
+(or x625 x632 x639 (not x53) x726)
+(or (not x726) (not x625))
+(or (not x726) (not x632))
+(or (not x726) (not x639))
+(or (not x726) x53)
+(or x645 (not x50))
+(or x645 (not x726))
+(or x645 (not x725))
+(or x645 (not x724))
+(or x50 x726 x725 x724 (not x645))
+(or (not x645) (not x646) (not x581) (not x477) (not x591) (not x477) x727)
+(or (not x727) x645)
+(or (not x727) x646)
+(or (not x727) x581)
+(or (not x727) x477)
+(or (not x727) x591)
+(or (not x727) x477)
+(or x728 (not x727))
+(or x728 x646)
+(or x727 (not x646) (not x728))
+(or x632 (not x52) x729)
+(or (not x729) (not x632))
+(or (not x729) x52)
+(or x625 x632 (not x53) x730)
+(or (not x730) (not x625))
+(or (not x730) (not x632))
+(or (not x730) x53)
+(or x638 (not x51))
+(or x638 (not x730))
+(or x638 (not x729))
+(or x51 x730 x729 (not x638))
+(or (not x638) (not x639) (not x581) (not x477) (not x591) (not x477) x731)
+(or (not x731) x638)
+(or (not x731) x639)
+(or (not x731) x581)
+(or (not x731) x477)
+(or (not x731) x591)
+(or (not x731) x477)
+(or x732 (not x731))
+(or x732 x639)
+(or x731 (not x639) (not x732))
+(or x625 (not x53) x733)
+(or (not x733) (not x625))
+(or (not x733) x53)
+(or x631 (not x52))
+(or x631 (not x733))
+(or x52 x733 (not x631))
+(or (not x631) (not x632) (not x581) (not x477) (not x591) (not x477) x734)
+(or (not x734) x631)
+(or (not x734) x632)
+(or (not x734) x581)
+(or (not x734) x477)
+(or (not x734) x591)
+(or (not x734) x477)
+(or x735 (not x734))
+(or x735 x632)
+(or x734 (not x632) (not x735))
+(or (not x53) (not x625) (not x581) (not x477) (not x591) (not x477) x736)
+(or (not x736) x53)
+(or (not x736) x625)
+(or (not x736) x581)
+(or (not x736) x477)
+(or (not x736) x591)
+(or (not x736) x477)
+(or x737 (not x736))
+(or x737 x625)
+(or x736 (not x625) (not x737))
+(or (not x737) (not x735) (not x732) (not x728) (not x53) x691)
+(or (not x691) x737)
+(or (not x691) x735)
+(or (not x691) x732)
+(or (not x691) x728)
+(or (not x691) x53)
+(or x612 (not x55) x738)
+(or (not x738) (not x612))
+(or (not x738) x55)
+(or x605 x612 (not x56) x739)
+(or (not x739) (not x605))
+(or (not x739) (not x612))
+(or (not x739) x56)
+(or x598 x605 x612 (not x57) x740)
+(or (not x740) (not x598))
+(or (not x740) (not x605))
+(or (not x740) (not x612))
+(or (not x740) x57)
+(or x618 (not x54))
+(or x618 (not x740))
+(or x618 (not x739))
+(or x618 (not x738))
+(or x54 x740 x739 x738 (not x618))
+(or (not x618) (not x619) (not x581) (not x477) (not x591) (not x477) x741)
+(or (not x741) x618)
+(or (not x741) x619)
+(or (not x741) x581)
+(or (not x741) x477)
+(or (not x741) x591)
+(or (not x741) x477)
+(or x742 (not x741))
+(or x742 x619)
+(or x741 (not x619) (not x742))
+(or x605 (not x56) x743)
+(or (not x743) (not x605))
+(or (not x743) x56)
+(or x598 x605 (not x57) x744)
+(or (not x744) (not x598))
+(or (not x744) (not x605))
+(or (not x744) x57)
+(or x611 (not x55))
+(or x611 (not x744))
+(or x611 (not x743))
+(or x55 x744 x743 (not x611))
+(or (not x611) (not x612) (not x581) (not x477) (not x591) (not x477) x745)
+(or (not x745) x611)
+(or (not x745) x612)
+(or (not x745) x581)
+(or (not x745) x477)
+(or (not x745) x591)
+(or (not x745) x477)
+(or x746 (not x745))
+(or x746 x612)
+(or x745 (not x612) (not x746))
+(or x598 (not x57) x747)
+(or (not x747) (not x598))
+(or (not x747) x57)
+(or x604 (not x56))
+(or x604 (not x747))
+(or x56 x747 (not x604))
+(or (not x604) (not x605) (not x581) (not x477) (not x591) (not x477) x748)
+(or (not x748) x604)
+(or (not x748) x605)
+(or (not x748) x581)
+(or (not x748) x477)
+(or (not x748) x591)
+(or (not x748) x477)
+(or x749 (not x748))
+(or x749 x605)
+(or x748 (not x605) (not x749))
+(or (not x57) (not x598) (not x581) (not x477) (not x591) (not x477) x750)
+(or (not x750) x57)
+(or (not x750) x598)
+(or (not x750) x581)
+(or (not x750) x477)
+(or (not x750) x591)
+(or (not x750) x477)
+(or x751 (not x750))
+(or x751 x598)
+(or x750 (not x598) (not x751))
+(or (not x751) (not x749) (not x746) (not x742) (not x57) x690)
+(or (not x690) x751)
+(or (not x690) x749)
+(or (not x690) x746)
+(or (not x690) x742)
+(or (not x690) x57)
+(or x582 (not x690))
+(or x582 (not x691))
+(or x582 (not x692))
+(or x582 (not x693))
+(or x690 x691 x692 x693 (not x582))
+(or (not x46) (not x577) (not x576) (not x581) (not x582) x752)
+(or (not x752) x46)
+(or (not x752) x577)
+(or (not x752) x576)
+(or (not x752) x581)
+(or (not x752) x582)
+(or x753 (not x696))
+(or x753 x43)
+(or x696 (not x43) (not x753))
+(or x754 (not x686))
+(or x754 (not x696))
+(or x754 x44)
+(or x686 x696 (not x44) (not x754))
+(or x755 (not x679))
+(or x755 (not x686))
+(or x755 (not x696))
+(or x755 x45)
+(or x679 x686 x696 (not x45) (not x755))
+(or x42 (not x755) (not x754) (not x753) x756)
+(or (not x756) (not x42))
+(or (not x756) x755)
+(or (not x756) x754)
+(or (not x756) x753)
+(or x757 (not x756))
+(or x757 x590)
+(or x757 x581)
+(or x757 (not x758))
+(or x757 (not x759))
+(or x757 (not x758))
+(or x756 (not x590) (not x581) x758 x759 x758 (not x757))
+(or (not x757) (not x590) x515)
+(or (not x515) x757)
+(or (not x515) x590)
+(or x760 (not x686))
+(or x760 x44)
+(or x686 (not x44) (not x760))
+(or x761 (not x679))
+(or x761 (not x686))
+(or x761 x45)
+(or x679 x686 (not x45) (not x761))
+(or x43 (not x761) (not x760) x762)
+(or (not x762) (not x43))
+(or (not x762) x761)
+(or (not x762) x760)
+(or x763 (not x762))
+(or x763 x696)
+(or x763 x581)
+(or x763 (not x758))
+(or x763 (not x759))
+(or x763 (not x758))
+(or x762 (not x696) (not x581) x758 x759 x758 (not x763))
+(or (not x763) (not x696) x575)
+(or (not x575) x763)
+(or (not x575) x696)
+(or x764 (not x679))
+(or x764 x45)
+(or x679 (not x45) (not x764))
+(or x44 (not x764) x765)
+(or (not x765) (not x44))
+(or (not x765) x764)
+(or x766 (not x765))
+(or x766 x686)
+(or x766 x581)
+(or x766 (not x758))
+(or x766 (not x759))
+(or x766 (not x758))
+(or x765 (not x686) (not x581) x758 x759 x758 (not x766))
+(or (not x766) (not x686) x571)
+(or (not x571) x766)
+(or (not x571) x686)
+(or x767 x45)
+(or x767 x679)
+(or x767 x581)
+(or x767 (not x758))
+(or x767 (not x759))
+(or x767 (not x758))
+(or (not x45) (not x679) (not x581) x758 x759 x758 (not x767))
+(or (not x767) (not x679) x567)
+(or (not x567) x767)
+(or (not x567) x679)
+(or x587 (not x567))
+(or x587 (not x571))
+(or x587 (not x575))
+(or x587 (not x515))
+(or x587 x45)
+(or x567 x571 x575 x515 (not x45) (not x587))
+(or x768 (not x666))
+(or x768 x47)
+(or x666 (not x47) (not x768))
+(or x769 (not x659))
+(or x769 (not x666))
+(or x769 x48)
+(or x659 x666 (not x48) (not x769))
+(or x770 (not x652))
+(or x770 (not x659))
+(or x770 (not x666))
+(or x770 x49)
+(or x652 x659 x666 (not x49) (not x770))
+(or x46 (not x770) (not x769) (not x768) x771)
+(or (not x771) (not x46))
+(or (not x771) x770)
+(or (not x771) x769)
+(or (not x771) x768)
+(or x772 (not x771))
+(or x772 x673)
+(or x772 x581)
+(or x772 (not x758))
+(or x772 (not x759))
+(or x772 (not x758))
+(or x771 (not x673) (not x581) x758 x759 x758 (not x772))
+(or (not x772) (not x673) x563)
+(or (not x563) x772)
+(or (not x563) x673)
+(or x773 (not x659))
+(or x773 x48)
+(or x659 (not x48) (not x773))
+(or x774 (not x652))
+(or x774 (not x659))
+(or x774 x49)
+(or x652 x659 (not x49) (not x774))
+(or x47 (not x774) (not x773) x775)
+(or (not x775) (not x47))
+(or (not x775) x774)
+(or (not x775) x773)
+(or x776 (not x775))
+(or x776 x666)
+(or x776 x581)
+(or x776 (not x758))
+(or x776 (not x759))
+(or x776 (not x758))
+(or x775 (not x666) (not x581) x758 x759 x758 (not x776))
+(or (not x776) (not x666) x559)
+(or (not x559) x776)
+(or (not x559) x666)
+(or x777 (not x652))
+(or x777 x49)
+(or x652 (not x49) (not x777))
+(or x48 (not x777) x778)
+(or (not x778) (not x48))
+(or (not x778) x777)
+(or x779 (not x778))
+(or x779 x659)
+(or x779 x581)
+(or x779 (not x758))
+(or x779 (not x759))
+(or x779 (not x758))
+(or x778 (not x659) (not x581) x758 x759 x758 (not x779))
+(or (not x779) (not x659) x555)
+(or (not x555) x779)
+(or (not x555) x659)
+(or x780 x49)
+(or x780 x652)
+(or x780 x581)
+(or x780 (not x758))
+(or x780 (not x759))
+(or x780 (not x758))
+(or (not x49) (not x652) (not x581) x758 x759 x758 (not x780))
+(or (not x780) (not x652) x551)
+(or (not x551) x780)
+(or (not x551) x652)
+(or x586 (not x551))
+(or x586 (not x555))
+(or x586 (not x559))
+(or x586 (not x563))
+(or x586 x49)
+(or x551 x555 x559 x563 (not x49) (not x586))
+(or x781 (not x639))
+(or x781 x51)
+(or x639 (not x51) (not x781))
+(or x782 (not x632))
+(or x782 (not x639))
+(or x782 x52)
+(or x632 x639 (not x52) (not x782))
+(or x783 (not x625))
+(or x783 (not x632))
+(or x783 (not x639))
+(or x783 x53)
+(or x625 x632 x639 (not x53) (not x783))
+(or x50 (not x783) (not x782) (not x781) x784)
+(or (not x784) (not x50))
+(or (not x784) x783)
+(or (not x784) x782)
+(or (not x784) x781)
+(or x785 (not x784))
+(or x785 x646)
+(or x785 x581)
+(or x785 (not x758))
+(or x785 (not x759))
+(or x785 (not x758))
+(or x784 (not x646) (not x581) x758 x759 x758 (not x785))
+(or (not x785) (not x646) x547)
+(or (not x547) x785)
+(or (not x547) x646)
+(or x786 (not x632))
+(or x786 x52)
+(or x632 (not x52) (not x786))
+(or x787 (not x625))
+(or x787 (not x632))
+(or x787 x53)
+(or x625 x632 (not x53) (not x787))
+(or x51 (not x787) (not x786) x788)
+(or (not x788) (not x51))
+(or (not x788) x787)
+(or (not x788) x786)
+(or x789 (not x788))
+(or x789 x639)
+(or x789 x581)
+(or x789 (not x758))
+(or x789 (not x759))
+(or x789 (not x758))
+(or x788 (not x639) (not x581) x758 x759 x758 (not x789))
+(or (not x789) (not x639) x543)
+(or (not x543) x789)
+(or (not x543) x639)
+(or x790 (not x625))
+(or x790 x53)
+(or x625 (not x53) (not x790))
+(or x52 (not x790) x791)
+(or (not x791) (not x52))
+(or (not x791) x790)
+(or x792 (not x791))
+(or x792 x632)
+(or x792 x581)
+(or x792 (not x758))
+(or x792 (not x759))
+(or x792 (not x758))
+(or x791 (not x632) (not x581) x758 x759 x758 (not x792))
+(or (not x792) (not x632) x539)
+(or (not x539) x792)
+(or (not x539) x632)
+(or x793 x53)
+(or x793 x625)
+(or x793 x581)
+(or x793 (not x758))
+(or x793 (not x759))
+(or x793 (not x758))
+(or (not x53) (not x625) (not x581) x758 x759 x758 (not x793))
+(or (not x793) (not x625) x535)
+(or (not x535) x793)
+(or (not x535) x625)
+(or x585 (not x535))
+(or x585 (not x539))
+(or x585 (not x543))
+(or x585 (not x547))
+(or x585 x53)
+(or x535 x539 x543 x547 (not x53) (not x585))
+(or x794 (not x612))
+(or x794 x55)
+(or x612 (not x55) (not x794))
+(or x795 (not x605))
+(or x795 (not x612))
+(or x795 x56)
+(or x605 x612 (not x56) (not x795))
+(or x796 (not x598))
+(or x796 (not x605))
+(or x796 (not x612))
+(or x796 x57)
+(or x598 x605 x612 (not x57) (not x796))
+(or x54 (not x796) (not x795) (not x794) x797)
+(or (not x797) (not x54))
+(or (not x797) x796)
+(or (not x797) x795)
+(or (not x797) x794)
+(or x798 (not x797))
+(or x798 x619)
+(or x798 x581)
+(or x798 (not x758))
+(or x798 (not x759))
+(or x798 (not x758))
+(or x797 (not x619) (not x581) x758 x759 x758 (not x798))
+(or (not x798) (not x619) x531)
+(or (not x531) x798)
+(or (not x531) x619)
+(or x799 (not x605))
+(or x799 x56)
+(or x605 (not x56) (not x799))
+(or x800 (not x598))
+(or x800 (not x605))
+(or x800 x57)
+(or x598 x605 (not x57) (not x800))
+(or x55 (not x800) (not x799) x801)
+(or (not x801) (not x55))
+(or (not x801) x800)
+(or (not x801) x799)
+(or x802 (not x801))
+(or x802 x612)
+(or x802 x581)
+(or x802 (not x758))
+(or x802 (not x759))
+(or x802 (not x758))
+(or x801 (not x612) (not x581) x758 x759 x758 (not x802))
+(or (not x802) (not x612) x527)
+(or (not x527) x802)
+(or (not x527) x612)
+(or x803 (not x598))
+(or x803 x57)
+(or x598 (not x57) (not x803))
+(or x56 (not x803) x804)
+(or (not x804) (not x56))
+(or (not x804) x803)
+(or x805 (not x804))
+(or x805 x605)
+(or x805 x581)
+(or x805 (not x758))
+(or x805 (not x759))
+(or x805 (not x758))
+(or x804 (not x605) (not x581) x758 x759 x758 (not x805))
+(or (not x805) (not x605) x523)
+(or (not x523) x805)
+(or (not x523) x605)
+(or x806 x57)
+(or x806 x598)
+(or x806 x581)
+(or x806 (not x758))
+(or x806 (not x759))
+(or x806 (not x758))
+(or (not x57) (not x598) (not x581) x758 x759 x758 (not x806))
+(or (not x806) (not x598) x519)
+(or (not x519) x806)
+(or (not x519) x598)
+(or x584 (not x519))
+(or x584 (not x523))
+(or x584 (not x527))
+(or x584 (not x531))
+(or x584 x57)
+(or x519 x523 x527 x531 (not x57) (not x584))
+(or (not x584) (not x585) (not x586) (not x587) x694)
+(or (not x694) x584)
+(or (not x694) x585)
+(or (not x694) x586)
+(or (not x694) x587)
+(or x807 x485)
+(or x807 x481)
+(or x807 x476)
+(or x807 x474)
+(or (not x485) (not x481) (not x476) (not x474) (not x807))
+(or x446 (not x447) x493)
+(or (not x493) (not x446))
+(or (not x493) x447)
+(or x456 (not x457) x498)
+(or (not x498) (not x456))
+(or (not x498) x457)
+(or x463 (not x464) x503)
+(or (not x503) (not x463))
+(or (not x503) x464)
+(or x470 (not x471) x508)
+(or (not x508) (not x470))
+(or (not x508) x471)
+(or x449 (not x508))
+(or x449 (not x503))
+(or x449 (not x498))
+(or x449 (not x493))
+(or x508 x503 x498 x493 (not x449))
+(or (not x449) (not x807) x759)
+(or (not x759) x449)
+(or (not x759) x807)
+(or x679 x686 x696 x590 x808)
+(or (not x808) (not x679))
+(or (not x808) (not x686))
+(or (not x808) (not x696))
+(or (not x808) (not x590))
+(or x45 x44 x43 x42 x809)
+(or (not x809) (not x45))
+(or (not x809) (not x44))
+(or (not x809) (not x43))
+(or (not x809) (not x42))
+(or x810 (not x809))
+(or x810 (not x808))
+(or x809 x808 (not x810))
+(or x652 x659 x666 x673 x811)
+(or (not x811) (not x652))
+(or (not x811) (not x659))
+(or (not x811) (not x666))
+(or (not x811) (not x673))
+(or x49 x48 x47 x46 x812)
+(or (not x812) (not x49))
+(or (not x812) (not x48))
+(or (not x812) (not x47))
+(or (not x812) (not x46))
+(or x813 (not x812))
+(or x813 (not x811))
+(or x812 x811 (not x813))
+(or x625 x632 x639 x646 x814)
+(or (not x814) (not x625))
+(or (not x814) (not x632))
+(or (not x814) (not x639))
+(or (not x814) (not x646))
+(or x53 x52 x51 x50 x815)
+(or (not x815) (not x53))
+(or (not x815) (not x52))
+(or (not x815) (not x51))
+(or (not x815) (not x50))
+(or x816 (not x815))
+(or x816 (not x814))
+(or x815 x814 (not x816))
+(or x598 x605 x612 x619 x817)
+(or (not x817) (not x598))
+(or (not x817) (not x605))
+(or (not x817) (not x612))
+(or (not x817) (not x619))
+(or x57 x56 x55 x54 x818)
+(or (not x818) (not x57))
+(or (not x818) (not x56))
+(or (not x818) (not x55))
+(or (not x818) (not x54))
+(or x819 (not x818))
+(or x819 (not x817))
+(or x818 x817 (not x819))
+(or (not x819) (not x816) (not x813) (not x810) x758)
+(or (not x758) x819)
+(or (not x758) x816)
+(or (not x758) x813)
+(or (not x758) x810)
+(or x577 x581)
+(or x577 (not x758))
+(or x577 (not x759))
+(or x577 (not x758))
+(or (not x581) x758 x759 x758 (not x577))
+(or (not x43) (not x577) (not x576) (not x584) (not x585) (not x586) (not x587) (not x581) x820)
+(or (not x820) x43)
+(or (not x820) x577)
+(or (not x820) x576)
+(or (not x820) x584)
+(or (not x820) x585)
+(or (not x820) x586)
+(or (not x820) x587)
+(or (not x820) x581)
+(or (not x485) (not x481) (not x476) (not x474) x821)
+(or (not x821) x485)
+(or (not x821) x481)
+(or (not x821) x476)
+(or (not x821) x474)
+(or x453 (not x446))
+(or x453 x447)
+(or x446 (not x447) (not x453))
+(or x435 (not x456))
+(or x435 x457)
+(or x456 (not x457) (not x435))
+(or x438 (not x463))
+(or x438 x464)
+(or x463 (not x464) (not x438))
+(or x441 (not x470))
+(or x441 x471)
+(or x470 (not x471) (not x441))
+(or (not x441) (not x438) (not x435) (not x453) x822)
+(or (not x822) x441)
+(or (not x822) x438)
+(or (not x822) x435)
+(or (not x822) x453)
+(or x591 (not x822))
+(or x591 (not x821))
+(or x822 x821 (not x591))
+(or x823 (not x679))
+(or x823 (not x686))
+(or x823 (not x696))
+(or x823 (not x590))
+(or x679 x686 x696 x590 (not x823))
+(or x824 (not x45))
+(or x824 (not x44))
+(or x824 (not x43))
+(or x824 (not x42))
+(or x45 x44 x43 x42 (not x824))
+(or (not x824) (not x823) x825)
+(or (not x825) x824)
+(or (not x825) x823)
+(or x826 (not x652))
+(or x826 (not x659))
+(or x826 (not x666))
+(or x826 (not x673))
+(or x652 x659 x666 x673 (not x826))
+(or x827 (not x49))
+(or x827 (not x48))
+(or x827 (not x47))
+(or x827 (not x46))
+(or x49 x48 x47 x46 (not x827))
+(or (not x827) (not x826) x828)
+(or (not x828) x827)
+(or (not x828) x826)
+(or x829 (not x625))
+(or x829 (not x632))
+(or x829 (not x639))
+(or x829 (not x646))
+(or x625 x632 x639 x646 (not x829))
+(or x830 (not x53))
+(or x830 (not x52))
+(or x830 (not x51))
+(or x830 (not x50))
+(or x53 x52 x51 x50 (not x830))
+(or (not x830) (not x829) x831)
+(or (not x831) x830)
+(or (not x831) x829)
+(or x832 (not x598))
+(or x832 (not x605))
+(or x832 (not x612))
+(or x832 (not x619))
+(or x598 x605 x612 x619 (not x832))
+(or (not x833) (not x832) x834)
+(or (not x834) x833)
+(or (not x834) x832)
+(or x477 (not x834))
+(or x477 (not x831))
+(or x477 (not x828))
+(or x477 (not x825))
+(or x834 x831 x828 x825 (not x477))
+(or (not x581) (not x477) (not x591) (not x477) x689)
+(or (not x689) x581)
+(or (not x689) x477)
+(or (not x689) x591)
+(or (not x689) x477)
+(or x833 (not x57))
+(or x833 (not x56))
+(or x833 (not x55))
+(or x833 (not x54))
+(or x57 x56 x55 x54 (not x833))
+(or x576 (not x57))
+(or x576 (not x56))
+(or x576 (not x55))
+(or x576 (not x54))
+(or x576 (not x53))
+(or x576 (not x52))
+(or x576 (not x51))
+(or x576 (not x50))
+(or x576 (not x49))
+(or x576 (not x48))
+(or x576 (not x47))
+(or x576 (not x46))
+(or x576 (not x45))
+(or x576 (not x44))
+(or x576 (not x43))
+(or x576 (not x42))
+(or x57 x56 x55 x54 x53 x52 x51 x50 x49 x48 x47 x46 x45 x44 x43 x42 (not x576))
+(or x686 (not x44) x835)
+(or (not x835) (not x686))
+(or (not x835) x44)
+(or x679 x686 (not x45) x836)
+(or (not x836) (not x679))
+(or (not x836) (not x686))
+(or (not x836) x45)
+(or x702 (not x43))
+(or x702 (not x836))
+(or x702 (not x835))
+(or x43 x836 x835 (not x702))
+(or (not x702) (not x696) (not x576) (not x581) (not x477) (not x591) (not x477) x837)
+(or (not x837) x702)
+(or (not x837) x696)
+(or (not x837) x576)
+(or (not x837) x581)
+(or (not x837) x477)
+(or (not x837) x591)
+(or (not x837) x477)
+(or x838 (not x837))
+(or x838 (not x820))
+(or x838 (not x752))
+(or x838 (not x695))
+(or x837 x820 x752 x695 (not x838))
+(or x839 (not x60))
+(or x839 x59)
+(or x839 x840)
+(or x60 (not x59) (not x840) (not x839))
+(or (not x839) (not x841) x842)
+(or (not x842) x839)
+(or (not x842) x841)
+(or x843 (not x61))
+(or x843 (not x62))
+(or x843 (not x63))
+(or x843 (not x64))
+(or x843 (not x65))
+(or x843 (not x66))
+(or x843 (not x67))
+(or x843 (not x68))
+(or x843 (not x69))
+(or x843 (not x70))
+(or x843 (not x71))
+(or x843 (not x72))
+(or x843 (not x73))
+(or x843 (not x74))
+(or x843 (not x75))
+(or x843 (not x76))
+(or x61 x62 x63 x64 x65 x66 x67 x68 x69 x70 x71 x72 x73 x74 x75 x76 (not x843))
+(or (not x60) x59 (not x843) x844)
+(or (not x844) x60)
+(or (not x844) (not x59))
+(or (not x844) x843)
+(or x60 (not x59) x845)
+(or (not x845) (not x60))
+(or (not x845) x59)
+(or x841 (not x845))
+(or x841 (not x844))
+(or x845 x844 (not x841))
+(or x846 (not x60))
+(or x846 x59)
+(or x846 (not x840))
+(or x60 (not x59) x840 (not x846))
+(or (not x846) (not x841) x847)
+(or (not x847) x846)
+(or (not x847) x841)
+(or (not x848) x849 (not x850) (not x851) (not x852) (not x853) x854)
+(or (not x854) x848)
+(or (not x854) (not x849))
+(or (not x854) x850)
+(or (not x854) x851)
+(or (not x854) x852)
+(or (not x854) x853)
+(or (not x855) (not x851) (not x856) x857)
+(or (not x857) x855)
+(or (not x857) x851)
+(or (not x857) x856)
+(or x858 (not x857))
+(or x858 (not x854))
+(or x857 x854 (not x858))
+(or (not x859) x860 (not x861) (not x851) (not x852) (not x853) x862)
+(or (not x862) x859)
+(or (not x862) (not x860))
+(or (not x862) x861)
+(or (not x862) x851)
+(or (not x862) x852)
+(or (not x862) x853)
+(or (not x863) (not x851) (not x856) x864)
+(or (not x864) x863)
+(or (not x864) x851)
+(or (not x864) x856)
+(or x865 (not x864))
+(or x865 (not x862))
+(or x864 x862 (not x865))
+(or (not x866) x867 (not x868) (not x851) (not x852) (not x853) x869)
+(or (not x869) x866)
+(or (not x869) (not x867))
+(or (not x869) x868)
+(or (not x869) x851)
+(or (not x869) x852)
+(or (not x869) x853)
+(or (not x870) (not x851) (not x856) x871)
+(or (not x871) x870)
+(or (not x871) x851)
+(or (not x871) x856)
+(or x872 (not x871))
+(or x872 (not x869))
+(or x871 x869 (not x872))
+(or (not x873) x874 (not x875) (not x851) (not x852) (not x853) x876)
+(or (not x876) x873)
+(or (not x876) (not x874))
+(or (not x876) x875)
+(or (not x876) x851)
+(or (not x876) x852)
+(or (not x876) x853)
+(or x856 x852)
+(or x856 (not x877))
+(or (not x852) x877 (not x856))
+(or x851 (not x878))
+(or x851 (not x870))
+(or x851 (not x863))
+(or x851 (not x855))
+(or x878 x870 x863 x855 (not x851))
+(or (not x878) (not x851) (not x856) x879)
+(or (not x879) x878)
+(or (not x879) x851)
+(or (not x879) x856)
+(or x878 x870 x863 x855 x880)
+(or (not x880) (not x878))
+(or (not x880) (not x870))
+(or (not x880) (not x863))
+(or (not x880) (not x855))
+(or x881 (not x880))
+(or x881 (not x879))
+(or x881 (not x876))
+(or x880 x879 x876 (not x881))
+(or (not x882) (not x882) (not x883) (not x884) x885)
+(or (not x885) x882)
+(or (not x885) x882)
+(or (not x885) x883)
+(or (not x885) x884)
+(or (not x886) (not x882) x887)
+(or (not x887) x886)
+(or (not x887) x882)
+(or x882 x888 x852 x889)
+(or (not x889) (not x882))
+(or (not x889) (not x888))
+(or (not x889) (not x852))
+(or x890 (not x889))
+(or x890 (not x887))
+(or x889 x887 (not x890))
+(or (not x892) x891 (not x893) x894)
+(or (not x894) x892)
+(or (not x894) (not x891))
+(or (not x894) x893)
+(or x895 (not x896))
+(or x895 (not x897))
+(or x895 (not x894))
+(or x895 (not x891))
+(or x896 x897 x894 x891 (not x895))
+(or x898 (not x896))
+(or x898 (not x897))
+(or x898 x892)
+(or x898 (not x891))
+(or x898 x893)
+(or x896 x897 (not x892) x891 (not x893) (not x898))
+(or x899 (not x896))
+(or x899 (not x892))
+(or x899 x891)
+(or x896 x892 (not x891) (not x899))
+(or x900 (not x892))
+(or x900 (not x891))
+(or x900 x901)
+(or x892 x891 (not x901) (not x900))
+(or (not x900) (not x899) (not x898) (not x895) x902)
+(or (not x902) x900)
+(or (not x902) x899)
+(or (not x902) x898)
+(or (not x902) x895)
+(or (not x904) x903 (not x905) x906)
+(or (not x906) x904)
+(or (not x906) (not x903))
+(or (not x906) x905)
+(or x907 (not x908))
+(or x907 (not x909))
+(or x907 (not x906))
+(or x907 (not x903))
+(or x908 x909 x906 x903 (not x907))
+(or x910 (not x908))
+(or x910 (not x909))
+(or x910 x904)
+(or x910 (not x903))
+(or x910 x905)
+(or x908 x909 (not x904) x903 (not x905) (not x910))
+(or x911 (not x908))
+(or x911 (not x904))
+(or x911 x903)
+(or x908 x904 (not x903) (not x911))
+(or x912 (not x904))
+(or x912 (not x903))
+(or x912 x913)
+(or x904 x903 (not x913) (not x912))
+(or (not x912) (not x911) (not x910) (not x907) x914)
+(or (not x914) x912)
+(or (not x914) x911)
+(or (not x914) x910)
+(or (not x914) x907)
+(or (not x916) x915 (not x917) x918)
+(or (not x918) x916)
+(or (not x918) (not x915))
+(or (not x918) x917)
+(or x919 (not x920))
+(or x919 (not x921))
+(or x919 (not x918))
+(or x919 (not x915))
+(or x920 x921 x918 x915 (not x919))
+(or x922 (not x920))
+(or x922 (not x921))
+(or x922 x916)
+(or x922 (not x915))
+(or x922 x917)
+(or x920 x921 (not x916) x915 (not x917) (not x922))
+(or x923 (not x920))
+(or x923 (not x916))
+(or x923 x915)
+(or x920 x916 (not x915) (not x923))
+(or x924 (not x916))
+(or x924 (not x915))
+(or x924 x925)
+(or x916 x915 (not x925) (not x924))
+(or (not x924) (not x923) (not x922) (not x919) x926)
+(or (not x926) x924)
+(or (not x926) x923)
+(or (not x926) x922)
+(or (not x926) x919)
+(or (not x928) x927 (not x929) x930)
+(or (not x930) x928)
+(or (not x930) (not x927))
+(or (not x930) x929)
+(or x931 (not x932))
+(or x931 (not x933))
+(or x931 (not x930))
+(or x931 (not x927))
+(or x932 x933 x930 x927 (not x931))
+(or x934 (not x932))
+(or x934 (not x933))
+(or x934 x928)
+(or x934 (not x927))
+(or x934 x929)
+(or x932 x933 (not x928) x927 (not x929) (not x934))
+(or x935 (not x932))
+(or x935 (not x928))
+(or x935 x927)
+(or x932 x928 (not x927) (not x935))
+(or x936 (not x928))
+(or x936 (not x927))
+(or x936 x937)
+(or x928 x927 (not x937) (not x936))
+(or (not x936) (not x935) (not x934) (not x931) x938)
+(or (not x938) x936)
+(or (not x938) x935)
+(or (not x938) x934)
+(or (not x938) x931)
+(or (not x940) x939 (not x941) x942)
+(or (not x942) x940)
+(or (not x942) (not x939))
+(or (not x942) x941)
+(or x943 (not x944))
+(or x943 (not x945))
+(or x943 (not x942))
+(or x943 (not x939))
+(or x944 x945 x942 x939 (not x943))
+(or x946 (not x944))
+(or x946 (not x945))
+(or x946 x940)
+(or x946 (not x939))
+(or x946 x941)
+(or x944 x945 (not x940) x939 (not x941) (not x946))
+(or x947 (not x944))
+(or x947 (not x940))
+(or x947 x939)
+(or x944 x940 (not x939) (not x947))
+(or x948 (not x940))
+(or x948 (not x939))
+(or x948 x949)
+(or x940 x939 (not x949) (not x948))
+(or (not x948) (not x947) (not x946) (not x943) x950)
+(or (not x950) x948)
+(or (not x950) x947)
+(or (not x950) x946)
+(or (not x950) x943)
+(or (not x952) x951 (not x953) x954)
+(or (not x954) x952)
+(or (not x954) (not x951))
+(or (not x954) x953)
+(or x955 (not x956))
+(or x955 (not x957))
+(or x955 (not x954))
+(or x955 (not x951))
+(or x956 x957 x954 x951 (not x955))
+(or x958 (not x956))
+(or x958 (not x957))
+(or x958 x952)
+(or x958 (not x951))
+(or x958 x953)
+(or x956 x957 (not x952) x951 (not x953) (not x958))
+(or x959 (not x956))
+(or x959 (not x952))
+(or x959 x951)
+(or x956 x952 (not x951) (not x959))
+(or x960 (not x952))
+(or x960 (not x951))
+(or x960 x961)
+(or x952 x951 (not x961) (not x960))
+(or (not x960) (not x959) (not x958) (not x955) x962)
+(or (not x962) x960)
+(or (not x962) x959)
+(or (not x962) x958)
+(or (not x962) x955)
+(or (not x964) x963 (not x965) x966)
+(or (not x966) x964)
+(or (not x966) (not x963))
+(or (not x966) x965)
+(or x967 (not x968))
+(or x967 (not x969))
+(or x967 (not x966))
+(or x967 (not x963))
+(or x968 x969 x966 x963 (not x967))
+(or x970 (not x968))
+(or x970 (not x969))
+(or x970 x964)
+(or x970 (not x963))
+(or x970 x965)
+(or x968 x969 (not x964) x963 (not x965) (not x970))
+(or x971 (not x968))
+(or x971 (not x964))
+(or x971 x963)
+(or x968 x964 (not x963) (not x971))
+(or x972 (not x964))
+(or x972 (not x963))
+(or x972 x973)
+(or x964 x963 (not x973) (not x972))
+(or (not x972) (not x971) (not x970) (not x967) x974)
+(or (not x974) x972)
+(or (not x974) x971)
+(or (not x974) x970)
+(or (not x974) x967)
+(or (not x976) x975 (not x977) x978)
+(or (not x978) x976)
+(or (not x978) (not x975))
+(or (not x978) x977)
+(or x979 (not x980))
+(or x979 (not x981))
+(or x979 (not x978))
+(or x979 (not x975))
+(or x980 x981 x978 x975 (not x979))
+(or x982 (not x980))
+(or x982 (not x981))
+(or x982 x976)
+(or x982 (not x975))
+(or x982 x977)
+(or x980 x981 (not x976) x975 (not x977) (not x982))
+(or x983 (not x980))
+(or x983 (not x976))
+(or x983 x975)
+(or x980 x976 (not x975) (not x983))
+(or x984 (not x976))
+(or x984 (not x975))
+(or x984 x985)
+(or x976 x975 (not x985) (not x984))
+(or (not x984) (not x983) (not x982) (not x979) x986)
+(or (not x986) x984)
+(or (not x986) x983)
+(or (not x986) x982)
+(or (not x986) x979)
+(or (not x988) x987 (not x989) x990)
+(or (not x990) x988)
+(or (not x990) (not x987))
+(or (not x990) x989)
+(or x991 (not x992))
+(or x991 (not x993))
+(or x991 (not x990))
+(or x991 (not x987))
+(or x992 x993 x990 x987 (not x991))
+(or x994 (not x992))
+(or x994 (not x993))
+(or x994 x988)
+(or x994 (not x987))
+(or x994 x989)
+(or x992 x993 (not x988) x987 (not x989) (not x994))
+(or x995 (not x992))
+(or x995 (not x988))
+(or x995 x987)
+(or x992 x988 (not x987) (not x995))
+(or x996 (not x988))
+(or x996 (not x987))
+(or x996 x997)
+(or x988 x987 (not x997) (not x996))
+(or (not x996) (not x995) (not x994) (not x991) x998)
+(or (not x998) x996)
+(or (not x998) x995)
+(or (not x998) x994)
+(or (not x998) x991)
+(or (not x1000) x999 (not x1001) x1002)
+(or (not x1002) x1000)
+(or (not x1002) (not x999))
+(or (not x1002) x1001)
+(or x1003 (not x1004))
+(or x1003 (not x1005))
+(or x1003 (not x1002))
+(or x1003 (not x999))
+(or x1004 x1005 x1002 x999 (not x1003))
+(or x1006 (not x1004))
+(or x1006 (not x1005))
+(or x1006 x1000)
+(or x1006 (not x999))
+(or x1006 x1001)
+(or x1004 x1005 (not x1000) x999 (not x1001) (not x1006))
+(or x1007 (not x1004))
+(or x1007 (not x1000))
+(or x1007 x999)
+(or x1004 x1000 (not x999) (not x1007))
+(or x1008 (not x1000))
+(or x1008 (not x999))
+(or x1008 x1009)
+(or x1000 x999 (not x1009) (not x1008))
+(or (not x1008) (not x1007) (not x1006) (not x1003) x1010)
+(or (not x1010) x1008)
+(or (not x1010) x1007)
+(or (not x1010) x1006)
+(or (not x1010) x1003)
+(or (not x1012) x1011 (not x1013) x1014)
+(or (not x1014) x1012)
+(or (not x1014) (not x1011))
+(or (not x1014) x1013)
+(or x1015 (not x1016))
+(or x1015 (not x1017))
+(or x1015 (not x1014))
+(or x1015 (not x1011))
+(or x1016 x1017 x1014 x1011 (not x1015))
+(or x1018 (not x1016))
+(or x1018 (not x1017))
+(or x1018 x1012)
+(or x1018 (not x1011))
+(or x1018 x1013)
+(or x1016 x1017 (not x1012) x1011 (not x1013) (not x1018))
+(or x1019 (not x1016))
+(or x1019 (not x1012))
+(or x1019 x1011)
+(or x1016 x1012 (not x1011) (not x1019))
+(or x1020 (not x1012))
+(or x1020 (not x1011))
+(or x1020 x1021)
+(or x1012 x1011 (not x1021) (not x1020))
+(or (not x1020) (not x1019) (not x1018) (not x1015) x1022)
+(or (not x1022) x1020)
+(or (not x1022) x1019)
+(or (not x1022) x1018)
+(or (not x1022) x1015)
+(or (not x1024) x1023 (not x1025) x1026)
+(or (not x1026) x1024)
+(or (not x1026) (not x1023))
+(or (not x1026) x1025)
+(or x1027 (not x1028))
+(or x1027 (not x1029))
+(or x1027 (not x1026))
+(or x1027 (not x1023))
+(or x1028 x1029 x1026 x1023 (not x1027))
+(or x1030 (not x1028))
+(or x1030 (not x1029))
+(or x1030 x1024)
+(or x1030 (not x1023))
+(or x1030 x1025)
+(or x1028 x1029 (not x1024) x1023 (not x1025) (not x1030))
+(or x1031 (not x1028))
+(or x1031 (not x1024))
+(or x1031 x1023)
+(or x1028 x1024 (not x1023) (not x1031))
+(or x1032 (not x1024))
+(or x1032 (not x1023))
+(or x1032 x1033)
+(or x1024 x1023 (not x1033) (not x1032))
+(or (not x1032) (not x1031) (not x1030) (not x1027) x1034)
+(or (not x1034) x1032)
+(or (not x1034) x1031)
+(or (not x1034) x1030)
+(or (not x1034) x1027)
+(or (not x1036) x1035 (not x1037) x1038)
+(or (not x1038) x1036)
+(or (not x1038) (not x1035))
+(or (not x1038) x1037)
+(or x1039 (not x1040))
+(or x1039 (not x1041))
+(or x1039 (not x1038))
+(or x1039 (not x1035))
+(or x1040 x1041 x1038 x1035 (not x1039))
+(or x1042 (not x1040))
+(or x1042 (not x1041))
+(or x1042 x1036)
+(or x1042 (not x1035))
+(or x1042 x1037)
+(or x1040 x1041 (not x1036) x1035 (not x1037) (not x1042))
+(or x1043 (not x1040))
+(or x1043 (not x1036))
+(or x1043 x1035)
+(or x1040 x1036 (not x1035) (not x1043))
+(or x1044 (not x1036))
+(or x1044 (not x1035))
+(or x1044 x1045)
+(or x1036 x1035 (not x1045) (not x1044))
+(or (not x1044) (not x1043) (not x1042) (not x1039) x1046)
+(or (not x1046) x1044)
+(or (not x1046) x1043)
+(or (not x1046) x1042)
+(or (not x1046) x1039)
+(or (not x1048) x1047 (not x1049) x1050)
+(or (not x1050) x1048)
+(or (not x1050) (not x1047))
+(or (not x1050) x1049)
+(or x1051 (not x1052))
+(or x1051 (not x1053))
+(or x1051 (not x1050))
+(or x1051 (not x1047))
+(or x1052 x1053 x1050 x1047 (not x1051))
+(or x1054 (not x1052))
+(or x1054 (not x1053))
+(or x1054 x1048)
+(or x1054 (not x1047))
+(or x1054 x1049)
+(or x1052 x1053 (not x1048) x1047 (not x1049) (not x1054))
+(or x1055 (not x1052))
+(or x1055 (not x1048))
+(or x1055 x1047)
+(or x1052 x1048 (not x1047) (not x1055))
+(or x1056 (not x1048))
+(or x1056 (not x1047))
+(or x1056 x1057)
+(or x1048 x1047 (not x1057) (not x1056))
+(or (not x1056) (not x1055) (not x1054) (not x1051) x1058)
+(or (not x1058) x1056)
+(or (not x1058) x1055)
+(or (not x1058) x1054)
+(or (not x1058) x1051)
+(or (not x1060) x1059 (not x1061) x1062)
+(or (not x1062) x1060)
+(or (not x1062) (not x1059))
+(or (not x1062) x1061)
+(or x1063 (not x1064))
+(or x1063 (not x1065))
+(or x1063 (not x1062))
+(or x1063 (not x1059))
+(or x1064 x1065 x1062 x1059 (not x1063))
+(or x1066 (not x1064))
+(or x1066 (not x1065))
+(or x1066 x1060)
+(or x1066 (not x1059))
+(or x1066 x1061)
+(or x1064 x1065 (not x1060) x1059 (not x1061) (not x1066))
+(or x1067 (not x1064))
+(or x1067 (not x1060))
+(or x1067 x1059)
+(or x1064 x1060 (not x1059) (not x1067))
+(or x1068 (not x1060))
+(or x1068 (not x1059))
+(or x1068 x1069)
+(or x1060 x1059 (not x1069) (not x1068))
+(or (not x1068) (not x1067) (not x1066) (not x1063) x1070)
+(or (not x1070) x1068)
+(or (not x1070) x1067)
+(or (not x1070) x1066)
+(or (not x1070) x1063)
+(or (not x1071) (not x863) x1072)
+(or (not x1072) x1071)
+(or (not x1072) x863)
+(or (not x1073) (not x1071) (not x870) x1074)
+(or (not x1074) x1073)
+(or (not x1074) x1071)
+(or (not x1074) x870)
+(or (not x1075) (not x1073) (not x1071) (not x878) x1076)
+(or (not x1076) x1075)
+(or (not x1076) x1073)
+(or (not x1076) x1071)
+(or (not x1076) x878)
+(or x873 (not x855))
+(or x873 (not x1076))
+(or x873 (not x1074))
+(or x873 (not x1072))
+(or x855 x1076 x1074 x1072 (not x873))
+(or (not x873) x874 (not x875) (not x852) (not x853) x1077)
+(or (not x1077) x873)
+(or (not x1077) (not x874))
+(or (not x1077) x875)
+(or (not x1077) x852)
+(or (not x1077) x853)
+(or (not x1073) (not x870) x1078)
+(or (not x1078) x1073)
+(or (not x1078) x870)
+(or (not x1075) (not x1073) (not x878) x1079)
+(or (not x1079) x1075)
+(or (not x1079) x1073)
+(or (not x1079) x878)
+(or (not x1080) (not x1075) (not x1073) (not x855) x1081)
+(or (not x1081) x1080)
+(or (not x1081) x1075)
+(or (not x1081) x1073)
+(or (not x1081) x855)
+(or x848 (not x863))
+(or x848 (not x1081))
+(or x848 (not x1079))
+(or x848 (not x1078))
+(or x863 x1081 x1079 x1078 (not x848))
+(or (not x848) x849 (not x850) (not x852) (not x853) x1082)
+(or (not x1082) x848)
+(or (not x1082) (not x849))
+(or (not x1082) x850)
+(or (not x1082) x852)
+(or (not x1082) x853)
+(or (not x1075) (not x878) x1083)
+(or (not x1083) x1075)
+(or (not x1083) x878)
+(or (not x1080) (not x1075) (not x855) x1084)
+(or (not x1084) x1080)
+(or (not x1084) x1075)
+(or (not x1084) x855)
+(or (not x1071) (not x1080) (not x1075) (not x863) x1085)
+(or (not x1085) x1071)
+(or (not x1085) x1080)
+(or (not x1085) x1075)
+(or (not x1085) x863)
+(or x859 (not x870))
+(or x859 (not x1085))
+(or x859 (not x1084))
+(or x859 (not x1083))
+(or x870 x1085 x1084 x1083 (not x859))
+(or (not x859) x860 (not x861) (not x852) (not x853) x1086)
+(or (not x1086) x859)
+(or (not x1086) (not x860))
+(or (not x1086) x861)
+(or (not x1086) x852)
+(or (not x1086) x853)
+(or (not x1080) (not x855) x1087)
+(or (not x1087) x1080)
+(or (not x1087) x855)
+(or (not x1071) (not x1080) (not x863) x1088)
+(or (not x1088) x1071)
+(or (not x1088) x1080)
+(or (not x1088) x863)
+(or (not x1073) (not x1071) (not x1080) (not x870) x1089)
+(or (not x1089) x1073)
+(or (not x1089) x1071)
+(or (not x1089) x1080)
+(or (not x1089) x870)
+(or x866 (not x878))
+(or x866 (not x1089))
+(or x866 (not x1088))
+(or x866 (not x1087))
+(or x878 x1089 x1088 x1087 (not x866))
+(or (not x866) x867 (not x868) (not x852) (not x853) x1090)
+(or (not x1090) x866)
+(or (not x1090) (not x867))
+(or (not x1090) x868)
+(or (not x1090) x852)
+(or (not x1090) x853)
+(or (not x1092) x1091 (not x1093) x1094)
+(or (not x1094) x1092)
+(or (not x1094) (not x1091))
+(or (not x1094) x1093)
+(or x1095 (not x1096))
+(or x1095 (not x1097))
+(or x1095 (not x1094))
+(or x1095 (not x1091))
+(or x1096 x1097 x1094 x1091 (not x1095))
+(or x1098 (not x1096))
+(or x1098 (not x1097))
+(or x1098 x1092)
+(or x1098 (not x1091))
+(or x1098 x1093)
+(or x1096 x1097 (not x1092) x1091 (not x1093) (not x1098))
+(or x1099 (not x1096))
+(or x1099 (not x1092))
+(or x1099 x1091)
+(or x1096 x1092 (not x1091) (not x1099))
+(or x1100 (not x1092))
+(or x1100 (not x1091))
+(or x1100 x1101)
+(or x1092 x1091 (not x1101) (not x1100))
+(or (not x1100) (not x1099) (not x1098) (not x1095) x1102)
+(or (not x1102) x1100)
+(or (not x1102) x1099)
+(or (not x1102) x1098)
+(or (not x1102) x1095)
+(or x888 (not x1103) x1104)
+(or (not x1104) (not x888))
+(or (not x1104) x1103)
+(or (not x852) (not x1105) (not x883) x1106)
+(or (not x1106) x852)
+(or (not x1106) x1105)
+(or (not x1106) x883)
+(or x1107 (not x1106))
+(or x1107 (not x1104))
+(or x1106 x1104 (not x1107))
+(or x888 (not x1105) x1108)
+(or (not x1108) (not x888))
+(or (not x1108) x1105)
+(or (not x852) (not x1109) (not x883) x1110)
+(or (not x1110) x852)
+(or (not x1110) x1109)
+(or (not x1110) x883)
+(or x1111 (not x1110))
+(or x1111 (not x1108))
+(or x1110 x1108 (not x1111))
+(or x888 (not x1109) x1112)
+(or (not x1112) (not x888))
+(or (not x1112) x1109)
+(or (not x852) (not x1113) (not x883) x1114)
+(or (not x1114) x852)
+(or (not x1114) x1113)
+(or (not x1114) x883)
+(or x1115 (not x1114))
+(or x1115 (not x1112))
+(or x1114 x1112 (not x1115))
+(or x888 (not x1113) x1116)
+(or (not x1116) (not x888))
+(or (not x1116) x1113)
+(or (not x852) (not x883) x1117)
+(or (not x1117) x852)
+(or (not x1117) x883)
+(or x1118 (not x1117))
+(or x1118 (not x1116))
+(or x1117 x1116 (not x1118))
+(or x1119 (not x874))
+(or x1119 x875)
+(or x1119 (not x875))
+(or x874 (not x875) x875 (not x1119))
+(or x1120 (not x1121))
+(or x1120 x1122)
+(or x1121 (not x1122) (not x1120))
+(or (not x1120) (not x1119) x1123)
+(or (not x1123) x1120)
+(or (not x1123) x1119)
+(or x1124 (not x849))
+(or x1124 x850)
+(or x1124 (not x850))
+(or x849 (not x850) x850 (not x1124))
+(or x1125 (not x1126))
+(or x1125 x1127)
+(or x1126 (not x1127) (not x1125))
+(or (not x1125) (not x1124) x1128)
+(or (not x1128) x1125)
+(or (not x1128) x1124)
+(or x1129 (not x860))
+(or x1129 x861)
+(or x1129 (not x861))
+(or x860 (not x861) x861 (not x1129))
+(or x1130 (not x1131))
+(or x1130 x1132)
+(or x1131 (not x1132) (not x1130))
+(or (not x1130) (not x1129) x1133)
+(or (not x1133) x1130)
+(or (not x1133) x1129)
+(or x1134 (not x867))
+(or x1134 x868)
+(or x1134 (not x868))
+(or x867 (not x868) x868 (not x1134))
+(or x1135 (not x1136))
+(or x1135 x1137)
+(or x1136 (not x1137) (not x1135))
+(or (not x1135) (not x1134) x1138)
+(or (not x1138) x1135)
+(or (not x1138) x1134)
+(or x1139 (not x852))
+(or x1139 (not x888))
+(or x852 x888 (not x1139))
+(or x1140 (not x891))
+(or x1140 (not x1141))
+(or x891 x1141 (not x1140))
+(or x1142 (not x903))
+(or x1142 (not x1143))
+(or x903 x1143 (not x1142))
+(or x1144 (not x915))
+(or x1144 (not x1145))
+(or x915 x1145 (not x1144))
+(or x1146 (not x927))
+(or x1146 (not x1147))
+(or x927 x1147 (not x1146))
+(or x1148 (not x939))
+(or x1148 (not x1149))
+(or x939 x1149 (not x1148))
+(or x1150 (not x951))
+(or x1150 (not x1151))
+(or x951 x1151 (not x1150))
+(or x1152 (not x963))
+(or x1152 (not x1153))
+(or x963 x1153 (not x1152))
+(or x1154 (not x975))
+(or x1154 (not x1155))
+(or x975 x1155 (not x1154))
+(or x1156 (not x987))
+(or x1156 (not x1157))
+(or x987 x1157 (not x1156))
+(or x1158 (not x999))
+(or x1158 (not x1159))
+(or x999 x1159 (not x1158))
+(or x1160 (not x1011))
+(or x1160 (not x1161))
+(or x1011 x1161 (not x1160))
+(or x1162 (not x1023))
+(or x1162 (not x1163))
+(or x1023 x1163 (not x1162))
+(or x1164 (not x1035))
+(or x1164 (not x1165))
+(or x1035 x1165 (not x1164))
+(or x1166 (not x1047))
+(or x1166 (not x1167))
+(or x1047 x1167 (not x1166))
+(or x1168 (not x1059))
+(or x1168 (not x1169))
+(or x1059 x1169 (not x1168))
+(or x1170 (not x1091))
+(or x1170 (not x1171))
+(or x1091 x1171 (not x1170))
+(or (not x76) (not x1172) (not x1173) (not x1174) (not x1175) x1176)
+(or (not x1176) x76)
+(or (not x1176) x1172)
+(or (not x1176) x1173)
+(or (not x1176) x1174)
+(or (not x1176) x1175)
+(or (not x64) (not x1173) (not x1172) (not x882) (not x1177) x1178)
+(or (not x1178) x64)
+(or (not x1178) x1173)
+(or (not x1178) x1172)
+(or (not x1178) x882)
+(or (not x1178) x1177)
+(or (not x61) (not x1173) (not x1172) (not x1179) (not x1180) (not x1181) (not x1182) (not x882) x1183)
+(or (not x1183) x61)
+(or (not x1183) x1173)
+(or (not x1183) x1172)
+(or (not x1183) x1179)
+(or (not x1183) x1180)
+(or (not x1183) x1181)
+(or (not x1183) x1182)
+(or (not x1183) x882)
+(or (not x1184) (not x1185) (not x1172) (not x882) (not x883) (not x884) (not x883) x1186)
+(or (not x1186) x1184)
+(or (not x1186) x1185)
+(or (not x1186) x1172)
+(or (not x1186) x882)
+(or (not x1186) x883)
+(or (not x1186) x884)
+(or (not x1186) x883)
+(or x1187 (not x1186))
+(or x1187 (not x1183))
+(or x1187 (not x1178))
+(or x1187 (not x1176))
+(or x1187 (not x1188))
+(or x1186 x1183 x1178 x1176 x1188 (not x1187))
+(or (not x75) (not x1172) (not x1173) (not x1174) (not x1175) x1189)
+(or (not x1189) x75)
+(or (not x1189) x1172)
+(or (not x1189) x1173)
+(or (not x1189) x1174)
+(or (not x1189) x1175)
+(or (not x63) (not x1173) (not x1172) (not x882) (not x1177) x1190)
+(or (not x1190) x63)
+(or (not x1190) x1173)
+(or (not x1190) x1172)
+(or (not x1190) x882)
+(or (not x1190) x1177)
+(or (not x76) (not x1173) (not x1172) (not x1179) (not x1180) (not x1181) (not x1182) (not x882) x1191)
+(or (not x1191) x76)
+(or (not x1191) x1173)
+(or (not x1191) x1172)
+(or (not x1191) x1179)
+(or (not x1191) x1180)
+(or (not x1191) x1181)
+(or (not x1191) x1182)
+(or (not x1191) x882)
+(or (not x76) (not x1192) (not x1172) (not x882) (not x883) (not x884) (not x883) x1193)
+(or (not x1193) x76)
+(or (not x1193) x1192)
+(or (not x1193) x1172)
+(or (not x1193) x882)
+(or (not x1193) x883)
+(or (not x1193) x884)
+(or (not x1193) x883)
+(or x1194 (not x1193))
+(or x1194 (not x1191))
+(or x1194 (not x1190))
+(or x1194 (not x1189))
+(or x1193 x1191 x1190 x1189 (not x1194))
+(or (not x74) (not x1172) (not x1173) (not x1174) (not x1175) x1195)
+(or (not x1195) x74)
+(or (not x1195) x1172)
+(or (not x1195) x1173)
+(or (not x1195) x1174)
+(or (not x1195) x1175)
+(or (not x62) (not x1173) (not x1172) (not x882) (not x1177) x1196)
+(or (not x1196) x62)
+(or (not x1196) x1173)
+(or (not x1196) x1172)
+(or (not x1196) x882)
+(or (not x1196) x1177)
+(or (not x75) (not x1173) (not x1172) (not x1179) (not x1180) (not x1181) (not x1182) (not x882) x1197)
+(or (not x1197) x75)
+(or (not x1197) x1173)
+(or (not x1197) x1172)
+(or (not x1197) x1179)
+(or (not x1197) x1180)
+(or (not x1197) x1181)
+(or (not x1197) x1182)
+(or (not x1197) x882)
+(or (not x1198) (not x1199) (not x1172) (not x882) (not x883) (not x884) (not x883) x1200)
+(or (not x1200) x1198)
+(or (not x1200) x1199)
+(or (not x1200) x1172)
+(or (not x1200) x882)
+(or (not x1200) x883)
+(or (not x1200) x884)
+(or (not x1200) x883)
+(or x1201 (not x1200))
+(or x1201 (not x1197))
+(or x1201 (not x1196))
+(or x1201 (not x1195))
+(or x1200 x1197 x1196 x1195 (not x1201))
+(or (not x73) (not x1172) (not x1173) (not x1174) (not x1175) x1202)
+(or (not x1202) x73)
+(or (not x1202) x1172)
+(or (not x1202) x1173)
+(or (not x1202) x1174)
+(or (not x1202) x1175)
+(or (not x61) (not x1173) (not x1172) (not x882) (not x1177) x1203)
+(or (not x1203) x61)
+(or (not x1203) x1173)
+(or (not x1203) x1172)
+(or (not x1203) x882)
+(or (not x1203) x1177)
+(or (not x74) (not x1173) (not x1172) (not x1179) (not x1180) (not x1181) (not x1182) (not x882) x1204)
+(or (not x1204) x74)
+(or (not x1204) x1173)
+(or (not x1204) x1172)
+(or (not x1204) x1179)
+(or (not x1204) x1180)
+(or (not x1204) x1181)
+(or (not x1204) x1182)
+(or (not x1204) x882)
+(or (not x1205) (not x1206) (not x1172) (not x882) (not x883) (not x884) (not x883) x1207)
+(or (not x1207) x1205)
+(or (not x1207) x1206)
+(or (not x1207) x1172)
+(or (not x1207) x882)
+(or (not x1207) x883)
+(or (not x1207) x884)
+(or (not x1207) x883)
+(or x1208 (not x1207))
+(or x1208 (not x1204))
+(or x1208 (not x1203))
+(or x1208 (not x1202))
+(or x1207 x1204 x1203 x1202 (not x1208))
+(or (not x72) (not x1172) (not x1173) (not x1174) (not x1175) x1209)
+(or (not x1209) x72)
+(or (not x1209) x1172)
+(or (not x1209) x1173)
+(or (not x1209) x1174)
+(or (not x1209) x1175)
+(or (not x76) (not x1173) (not x1172) (not x882) (not x1177) x1210)
+(or (not x1210) x76)
+(or (not x1210) x1173)
+(or (not x1210) x1172)
+(or (not x1210) x882)
+(or (not x1210) x1177)
+(or (not x73) (not x1173) (not x1172) (not x1179) (not x1180) (not x1181) (not x1182) (not x882) x1211)
+(or (not x1211) x73)
+(or (not x1211) x1173)
+(or (not x1211) x1172)
+(or (not x1211) x1179)
+(or (not x1211) x1180)
+(or (not x1211) x1181)
+(or (not x1211) x1182)
+(or (not x1211) x882)
+(or (not x1212) (not x1213) (not x1172) (not x882) (not x883) (not x884) (not x883) x1214)
+(or (not x1214) x1212)
+(or (not x1214) x1213)
+(or (not x1214) x1172)
+(or (not x1214) x882)
+(or (not x1214) x883)
+(or (not x1214) x884)
+(or (not x1214) x883)
+(or x1215 (not x1214))
+(or x1215 (not x1211))
+(or x1215 (not x1210))
+(or x1215 (not x1209))
+(or x1214 x1211 x1210 x1209 (not x1215))
+(or (not x71) (not x1172) (not x1173) (not x1174) (not x1175) x1216)
+(or (not x1216) x71)
+(or (not x1216) x1172)
+(or (not x1216) x1173)
+(or (not x1216) x1174)
+(or (not x1216) x1175)
+(or (not x75) (not x1173) (not x1172) (not x882) (not x1177) x1217)
+(or (not x1217) x75)
+(or (not x1217) x1173)
+(or (not x1217) x1172)
+(or (not x1217) x882)
+(or (not x1217) x1177)
+(or (not x72) (not x1173) (not x1172) (not x1179) (not x1180) (not x1181) (not x1182) (not x882) x1218)
+(or (not x1218) x72)
+(or (not x1218) x1173)
+(or (not x1218) x1172)
+(or (not x1218) x1179)
+(or (not x1218) x1180)
+(or (not x1218) x1181)
+(or (not x1218) x1182)
+(or (not x1218) x882)
+(or (not x72) (not x1219) (not x1172) (not x882) (not x883) (not x884) (not x883) x1220)
+(or (not x1220) x72)
+(or (not x1220) x1219)
+(or (not x1220) x1172)
+(or (not x1220) x882)
+(or (not x1220) x883)
+(or (not x1220) x884)
+(or (not x1220) x883)
+(or x1221 (not x1220))
+(or x1221 (not x1218))
+(or x1221 (not x1217))
+(or x1221 (not x1216))
+(or x1220 x1218 x1217 x1216 (not x1221))
+(or (not x70) (not x1172) (not x1173) (not x1174) (not x1175) x1222)
+(or (not x1222) x70)
+(or (not x1222) x1172)
+(or (not x1222) x1173)
+(or (not x1222) x1174)
+(or (not x1222) x1175)
+(or (not x74) (not x1173) (not x1172) (not x882) (not x1177) x1223)
+(or (not x1223) x74)
+(or (not x1223) x1173)
+(or (not x1223) x1172)
+(or (not x1223) x882)
+(or (not x1223) x1177)
+(or (not x71) (not x1173) (not x1172) (not x1179) (not x1180) (not x1181) (not x1182) (not x882) x1224)
+(or (not x1224) x71)
+(or (not x1224) x1173)
+(or (not x1224) x1172)
+(or (not x1224) x1179)
+(or (not x1224) x1180)
+(or (not x1224) x1181)
+(or (not x1224) x1182)
+(or (not x1224) x882)
+(or (not x1225) (not x1226) (not x1172) (not x882) (not x883) (not x884) (not x883) x1227)
+(or (not x1227) x1225)
+(or (not x1227) x1226)
+(or (not x1227) x1172)
+(or (not x1227) x882)
+(or (not x1227) x883)
+(or (not x1227) x884)
+(or (not x1227) x883)
+(or x1228 (not x1227))
+(or x1228 (not x1224))
+(or x1228 (not x1223))
+(or x1228 (not x1222))
+(or x1227 x1224 x1223 x1222 (not x1228))
+(or (not x69) (not x1172) (not x1173) (not x1174) (not x1175) x1229)
+(or (not x1229) x69)
+(or (not x1229) x1172)
+(or (not x1229) x1173)
+(or (not x1229) x1174)
+(or (not x1229) x1175)
+(or (not x73) (not x1173) (not x1172) (not x882) (not x1177) x1230)
+(or (not x1230) x73)
+(or (not x1230) x1173)
+(or (not x1230) x1172)
+(or (not x1230) x882)
+(or (not x1230) x1177)
+(or (not x70) (not x1173) (not x1172) (not x1179) (not x1180) (not x1181) (not x1182) (not x882) x1231)
+(or (not x1231) x70)
+(or (not x1231) x1173)
+(or (not x1231) x1172)
+(or (not x1231) x1179)
+(or (not x1231) x1180)
+(or (not x1231) x1181)
+(or (not x1231) x1182)
+(or (not x1231) x882)
+(or (not x1232) (not x1233) (not x1172) (not x882) (not x883) (not x884) (not x883) x1234)
+(or (not x1234) x1232)
+(or (not x1234) x1233)
+(or (not x1234) x1172)
+(or (not x1234) x882)
+(or (not x1234) x883)
+(or (not x1234) x884)
+(or (not x1234) x883)
+(or x1235 (not x1234))
+(or x1235 (not x1231))
+(or x1235 (not x1230))
+(or x1235 (not x1229))
+(or x1234 x1231 x1230 x1229 (not x1235))
+(or (not x68) (not x1172) (not x1173) (not x1174) (not x1175) x1236)
+(or (not x1236) x68)
+(or (not x1236) x1172)
+(or (not x1236) x1173)
+(or (not x1236) x1174)
+(or (not x1236) x1175)
+(or (not x72) (not x1173) (not x1172) (not x882) (not x1177) x1237)
+(or (not x1237) x72)
+(or (not x1237) x1173)
+(or (not x1237) x1172)
+(or (not x1237) x882)
+(or (not x1237) x1177)
+(or (not x69) (not x1173) (not x1172) (not x1179) (not x1180) (not x1181) (not x1182) (not x882) x1238)
+(or (not x1238) x69)
+(or (not x1238) x1173)
+(or (not x1238) x1172)
+(or (not x1238) x1179)
+(or (not x1238) x1180)
+(or (not x1238) x1181)
+(or (not x1238) x1182)
+(or (not x1238) x882)
+(or (not x1239) (not x1240) (not x1172) (not x882) (not x883) (not x884) (not x883) x1241)
+(or (not x1241) x1239)
+(or (not x1241) x1240)
+(or (not x1241) x1172)
+(or (not x1241) x882)
+(or (not x1241) x883)
+(or (not x1241) x884)
+(or (not x1241) x883)
+(or x1242 (not x1241))
+(or x1242 (not x1238))
+(or x1242 (not x1237))
+(or x1242 (not x1236))
+(or x1241 x1238 x1237 x1236 (not x1242))
+(or (not x67) (not x1172) (not x1173) (not x1174) (not x1175) x1243)
+(or (not x1243) x67)
+(or (not x1243) x1172)
+(or (not x1243) x1173)
+(or (not x1243) x1174)
+(or (not x1243) x1175)
+(or (not x71) (not x1173) (not x1172) (not x882) (not x1177) x1244)
+(or (not x1244) x71)
+(or (not x1244) x1173)
+(or (not x1244) x1172)
+(or (not x1244) x882)
+(or (not x1244) x1177)
+(or (not x68) (not x1173) (not x1172) (not x1179) (not x1180) (not x1181) (not x1182) (not x882) x1245)
+(or (not x1245) x68)
+(or (not x1245) x1173)
+(or (not x1245) x1172)
+(or (not x1245) x1179)
+(or (not x1245) x1180)
+(or (not x1245) x1181)
+(or (not x1245) x1182)
+(or (not x1245) x882)
+(or (not x68) (not x1246) (not x1172) (not x882) (not x883) (not x884) (not x883) x1247)
+(or (not x1247) x68)
+(or (not x1247) x1246)
+(or (not x1247) x1172)
+(or (not x1247) x882)
+(or (not x1247) x883)
+(or (not x1247) x884)
+(or (not x1247) x883)
+(or x1248 (not x1247))
+(or x1248 (not x1245))
+(or x1248 (not x1244))
+(or x1248 (not x1243))
+(or x1247 x1245 x1244 x1243 (not x1248))
+(or (not x66) (not x1172) (not x1173) (not x1174) (not x1175) x1249)
+(or (not x1249) x66)
+(or (not x1249) x1172)
+(or (not x1249) x1173)
+(or (not x1249) x1174)
+(or (not x1249) x1175)
+(or (not x70) (not x1173) (not x1172) (not x882) (not x1177) x1250)
+(or (not x1250) x70)
+(or (not x1250) x1173)
+(or (not x1250) x1172)
+(or (not x1250) x882)
+(or (not x1250) x1177)
+(or (not x67) (not x1173) (not x1172) (not x1179) (not x1180) (not x1181) (not x1182) (not x882) x1251)
+(or (not x1251) x67)
+(or (not x1251) x1173)
+(or (not x1251) x1172)
+(or (not x1251) x1179)
+(or (not x1251) x1180)
+(or (not x1251) x1181)
+(or (not x1251) x1182)
+(or (not x1251) x882)
+(or (not x1252) (not x1253) (not x1172) (not x882) (not x883) (not x884) (not x883) x1254)
+(or (not x1254) x1252)
+(or (not x1254) x1253)
+(or (not x1254) x1172)
+(or (not x1254) x882)
+(or (not x1254) x883)
+(or (not x1254) x884)
+(or (not x1254) x883)
+(or x1255 (not x1254))
+(or x1255 (not x1251))
+(or x1255 (not x1250))
+(or x1255 (not x1249))
+(or x1254 x1251 x1250 x1249 (not x1255))
+(or (not x65) (not x1172) (not x1173) (not x1174) (not x1175) x1256)
+(or (not x1256) x65)
+(or (not x1256) x1172)
+(or (not x1256) x1173)
+(or (not x1256) x1174)
+(or (not x1256) x1175)
+(or (not x69) (not x1173) (not x1172) (not x882) (not x1177) x1257)
+(or (not x1257) x69)
+(or (not x1257) x1173)
+(or (not x1257) x1172)
+(or (not x1257) x882)
+(or (not x1257) x1177)
+(or (not x66) (not x1173) (not x1172) (not x1179) (not x1180) (not x1181) (not x1182) (not x882) x1258)
+(or (not x1258) x66)
+(or (not x1258) x1173)
+(or (not x1258) x1172)
+(or (not x1258) x1179)
+(or (not x1258) x1180)
+(or (not x1258) x1181)
+(or (not x1258) x1182)
+(or (not x1258) x882)
+(or (not x1259) (not x1260) (not x1172) (not x882) (not x883) (not x884) (not x883) x1261)
+(or (not x1261) x1259)
+(or (not x1261) x1260)
+(or (not x1261) x1172)
+(or (not x1261) x882)
+(or (not x1261) x883)
+(or (not x1261) x884)
+(or (not x1261) x883)
+(or x1262 (not x1261))
+(or x1262 (not x1258))
+(or x1262 (not x1257))
+(or x1262 (not x1256))
+(or x1261 x1258 x1257 x1256 (not x1262))
+(or (not x64) (not x1172) (not x1173) (not x1174) (not x1175) x1263)
+(or (not x1263) x64)
+(or (not x1263) x1172)
+(or (not x1263) x1173)
+(or (not x1263) x1174)
+(or (not x1263) x1175)
+(or (not x68) (not x1173) (not x1172) (not x882) (not x1177) x1264)
+(or (not x1264) x68)
+(or (not x1264) x1173)
+(or (not x1264) x1172)
+(or (not x1264) x882)
+(or (not x1264) x1177)
+(or (not x65) (not x1173) (not x1172) (not x1179) (not x1180) (not x1181) (not x1182) (not x882) x1265)
+(or (not x1265) x65)
+(or (not x1265) x1173)
+(or (not x1265) x1172)
+(or (not x1265) x1179)
+(or (not x1265) x1180)
+(or (not x1265) x1181)
+(or (not x1265) x1182)
+(or (not x1265) x882)
+(or (not x1266) (not x1267) (not x1172) (not x882) (not x883) (not x884) (not x883) x1268)
+(or (not x1268) x1266)
+(or (not x1268) x1267)
+(or (not x1268) x1172)
+(or (not x1268) x882)
+(or (not x1268) x883)
+(or (not x1268) x884)
+(or (not x1268) x883)
+(or x1269 (not x1268))
+(or x1269 (not x1265))
+(or x1269 (not x1264))
+(or x1269 (not x1263))
+(or x1268 x1265 x1264 x1263 (not x1269))
+(or (not x63) (not x1172) (not x1173) (not x1174) (not x1175) x1270)
+(or (not x1270) x63)
+(or (not x1270) x1172)
+(or (not x1270) x1173)
+(or (not x1270) x1174)
+(or (not x1270) x1175)
+(or (not x67) (not x1173) (not x1172) (not x882) (not x1177) x1271)
+(or (not x1271) x67)
+(or (not x1271) x1173)
+(or (not x1271) x1172)
+(or (not x1271) x882)
+(or (not x1271) x1177)
+(or (not x64) (not x1173) (not x1172) (not x1179) (not x1180) (not x1181) (not x1182) (not x882) x1272)
+(or (not x1272) x64)
+(or (not x1272) x1173)
+(or (not x1272) x1172)
+(or (not x1272) x1179)
+(or (not x1272) x1180)
+(or (not x1272) x1181)
+(or (not x1272) x1182)
+(or (not x1272) x882)
+(or (not x64) (not x1273) (not x1172) (not x882) (not x883) (not x884) (not x883) x1274)
+(or (not x1274) x64)
+(or (not x1274) x1273)
+(or (not x1274) x1172)
+(or (not x1274) x882)
+(or (not x1274) x883)
+(or (not x1274) x884)
+(or (not x1274) x883)
+(or x1275 (not x1274))
+(or x1275 (not x1272))
+(or x1275 (not x1271))
+(or x1275 (not x1270))
+(or x1274 x1272 x1271 x1270 (not x1275))
+(or (not x62) (not x1172) (not x1173) (not x1174) (not x1175) x1276)
+(or (not x1276) x62)
+(or (not x1276) x1172)
+(or (not x1276) x1173)
+(or (not x1276) x1174)
+(or (not x1276) x1175)
+(or (not x66) (not x1173) (not x1172) (not x882) (not x1177) x1277)
+(or (not x1277) x66)
+(or (not x1277) x1173)
+(or (not x1277) x1172)
+(or (not x1277) x882)
+(or (not x1277) x1177)
+(or (not x63) (not x1173) (not x1172) (not x1179) (not x1180) (not x1181) (not x1182) (not x882) x1278)
+(or (not x1278) x63)
+(or (not x1278) x1173)
+(or (not x1278) x1172)
+(or (not x1278) x1179)
+(or (not x1278) x1180)
+(or (not x1278) x1181)
+(or (not x1278) x1182)
+(or (not x1278) x882)
+(or (not x1279) (not x1280) (not x1172) (not x882) (not x883) (not x884) (not x883) x1281)
+(or (not x1281) x1279)
+(or (not x1281) x1280)
+(or (not x1281) x1172)
+(or (not x1281) x882)
+(or (not x1281) x883)
+(or (not x1281) x884)
+(or (not x1281) x883)
+(or x1282 (not x1281))
+(or x1282 (not x1278))
+(or x1282 (not x1277))
+(or x1282 (not x1276))
+(or x1281 x1278 x1277 x1276 (not x1282))
+(or x1175 (not x1283))
+(or x1175 (not x1188))
+(or x1175 (not x1284))
+(or x1175 (not x1285))
+(or x1175 (not x1286))
+(or x1175 (not x1287))
+(or x1175 x882)
+(or x1283 x1188 x1284 x1285 x1286 x1287 (not x882) (not x1175))
+(or x76 x75 x74 x73 x72 x71 x70 x69 x68 x67 x66 x65 x64 x63 x62 x61 x1188)
+(or (not x1188) (not x76))
+(or (not x1188) (not x75))
+(or (not x1188) (not x74))
+(or (not x1188) (not x73))
+(or (not x1188) (not x72))
+(or (not x1188) (not x71))
+(or (not x1188) (not x70))
+(or (not x1188) (not x69))
+(or (not x1188) (not x68))
+(or (not x1188) (not x67))
+(or (not x1188) (not x66))
+(or (not x1188) (not x65))
+(or (not x1188) (not x64))
+(or (not x1188) (not x63))
+(or (not x1188) (not x62))
+(or (not x1188) (not x61))
+(or x1174 (not x1283))
+(or x1174 (not x1188))
+(or x1174 x882)
+(or x1174 (not x1288))
+(or x1283 x1188 (not x882) x1288 (not x1174))
+(or (not x61) (not x1172) (not x1173) (not x1174) (not x1175) x1289)
+(or (not x1289) x61)
+(or (not x1289) x1172)
+(or (not x1289) x1173)
+(or (not x1289) x1174)
+(or (not x1289) x1175)
+(or x1290 (not x62) x1291)
+(or (not x1291) (not x1290))
+(or (not x1291) x62)
+(or x1280 x1290 (not x63) x1292)
+(or (not x1292) (not x1280))
+(or (not x1292) (not x1290))
+(or (not x1292) x63)
+(or x1273 x1280 x1290 (not x64) x1293)
+(or (not x1293) (not x1273))
+(or (not x1293) (not x1280))
+(or (not x1293) (not x1290))
+(or (not x1293) x64)
+(or x1184 (not x61))
+(or x1184 (not x1293))
+(or x1184 (not x1292))
+(or x1184 (not x1291))
+(or x61 x1293 x1292 x1291 (not x1184))
+(or (not x1184) (not x1185) (not x882) (not x883) (not x884) (not x883) x1294)
+(or (not x1294) x1184)
+(or (not x1294) x1185)
+(or (not x1294) x882)
+(or (not x1294) x883)
+(or (not x1294) x884)
+(or (not x1294) x883)
+(or x1295 (not x1294))
+(or x1295 x1185)
+(or x1294 (not x1185) (not x1295))
+(or (not x1296) (not x1290) (not x882) (not x883) (not x884) (not x883) x1297)
+(or (not x1297) x1296)
+(or (not x1297) x1290)
+(or (not x1297) x882)
+(or (not x1297) x883)
+(or (not x1297) x884)
+(or (not x1297) x883)
+(or x1298 (not x1297))
+(or x1298 x1290)
+(or x1297 (not x1290) (not x1298))
+(or x1273 (not x64) x1299)
+(or (not x1299) (not x1273))
+(or (not x1299) x64)
+(or x1279 (not x63))
+(or x1279 (not x1299))
+(or x63 x1299 (not x1279))
+(or (not x1279) (not x1280) (not x882) (not x883) (not x884) (not x883) x1300)
+(or (not x1300) x1279)
+(or (not x1300) x1280)
+(or (not x1300) x882)
+(or (not x1300) x883)
+(or (not x1300) x884)
+(or (not x1300) x883)
+(or x1301 (not x1300))
+(or x1301 x1280)
+(or x1300 (not x1280) (not x1301))
+(or (not x64) (not x1273) (not x882) (not x883) (not x884) (not x883) x1302)
+(or (not x1302) x64)
+(or (not x1302) x1273)
+(or (not x1302) x882)
+(or (not x1302) x883)
+(or (not x1302) x884)
+(or (not x1302) x883)
+(or x1303 (not x1302))
+(or x1303 x1273)
+(or x1302 (not x1273) (not x1303))
+(or (not x1303) (not x1301) (not x1298) (not x1295) (not x64) x1287)
+(or (not x1287) x1303)
+(or (not x1287) x1301)
+(or (not x1287) x1298)
+(or (not x1287) x1295)
+(or (not x1287) x64)
+(or x1260 (not x66) x1304)
+(or (not x1304) (not x1260))
+(or (not x1304) x66)
+(or x1253 x1260 (not x67) x1305)
+(or (not x1305) (not x1253))
+(or (not x1305) (not x1260))
+(or (not x1305) x67)
+(or x1246 x1253 x1260 (not x68) x1306)
+(or (not x1306) (not x1246))
+(or (not x1306) (not x1253))
+(or (not x1306) (not x1260))
+(or (not x1306) x68)
+(or x1266 (not x65))
+(or x1266 (not x1306))
+(or x1266 (not x1305))
+(or x1266 (not x1304))
+(or x65 x1306 x1305 x1304 (not x1266))
+(or (not x1266) (not x1267) (not x882) (not x883) (not x884) (not x883) x1307)
+(or (not x1307) x1266)
+(or (not x1307) x1267)
+(or (not x1307) x882)
+(or (not x1307) x883)
+(or (not x1307) x884)
+(or (not x1307) x883)
+(or x1308 (not x1307))
+(or x1308 x1267)
+(or x1307 (not x1267) (not x1308))
+(or x1253 (not x67) x1309)
+(or (not x1309) (not x1253))
+(or (not x1309) x67)
+(or x1246 x1253 (not x68) x1310)
+(or (not x1310) (not x1246))
+(or (not x1310) (not x1253))
+(or (not x1310) x68)
+(or x1259 (not x66))
+(or x1259 (not x1310))
+(or x1259 (not x1309))
+(or x66 x1310 x1309 (not x1259))
+(or (not x1259) (not x1260) (not x882) (not x883) (not x884) (not x883) x1311)
+(or (not x1311) x1259)
+(or (not x1311) x1260)
+(or (not x1311) x882)
+(or (not x1311) x883)
+(or (not x1311) x884)
+(or (not x1311) x883)
+(or x1312 (not x1311))
+(or x1312 x1260)
+(or x1311 (not x1260) (not x1312))
+(or x1246 (not x68) x1313)
+(or (not x1313) (not x1246))
+(or (not x1313) x68)
+(or x1252 (not x67))
+(or x1252 (not x1313))
+(or x67 x1313 (not x1252))
+(or (not x1252) (not x1253) (not x882) (not x883) (not x884) (not x883) x1314)
+(or (not x1314) x1252)
+(or (not x1314) x1253)
+(or (not x1314) x882)
+(or (not x1314) x883)
+(or (not x1314) x884)
+(or (not x1314) x883)
+(or x1315 (not x1314))
+(or x1315 x1253)
+(or x1314 (not x1253) (not x1315))
+(or (not x68) (not x1246) (not x882) (not x883) (not x884) (not x883) x1316)
+(or (not x1316) x68)
+(or (not x1316) x1246)
+(or (not x1316) x882)
+(or (not x1316) x883)
+(or (not x1316) x884)
+(or (not x1316) x883)
+(or x1317 (not x1316))
+(or x1317 x1246)
+(or x1316 (not x1246) (not x1317))
+(or (not x1317) (not x1315) (not x1312) (not x1308) (not x68) x1286)
+(or (not x1286) x1317)
+(or (not x1286) x1315)
+(or (not x1286) x1312)
+(or (not x1286) x1308)
+(or (not x1286) x68)
+(or x1233 (not x70) x1318)
+(or (not x1318) (not x1233))
+(or (not x1318) x70)
+(or x1226 x1233 (not x71) x1319)
+(or (not x1319) (not x1226))
+(or (not x1319) (not x1233))
+(or (not x1319) x71)
+(or x1219 x1226 x1233 (not x72) x1320)
+(or (not x1320) (not x1219))
+(or (not x1320) (not x1226))
+(or (not x1320) (not x1233))
+(or (not x1320) x72)
+(or x1239 (not x69))
+(or x1239 (not x1320))
+(or x1239 (not x1319))
+(or x1239 (not x1318))
+(or x69 x1320 x1319 x1318 (not x1239))
+(or (not x1239) (not x1240) (not x882) (not x883) (not x884) (not x883) x1321)
+(or (not x1321) x1239)
+(or (not x1321) x1240)
+(or (not x1321) x882)
+(or (not x1321) x883)
+(or (not x1321) x884)
+(or (not x1321) x883)
+(or x1322 (not x1321))
+(or x1322 x1240)
+(or x1321 (not x1240) (not x1322))
+(or x1226 (not x71) x1323)
+(or (not x1323) (not x1226))
+(or (not x1323) x71)
+(or x1219 x1226 (not x72) x1324)
+(or (not x1324) (not x1219))
+(or (not x1324) (not x1226))
+(or (not x1324) x72)
+(or x1232 (not x70))
+(or x1232 (not x1324))
+(or x1232 (not x1323))
+(or x70 x1324 x1323 (not x1232))
+(or (not x1232) (not x1233) (not x882) (not x883) (not x884) (not x883) x1325)
+(or (not x1325) x1232)
+(or (not x1325) x1233)
+(or (not x1325) x882)
+(or (not x1325) x883)
+(or (not x1325) x884)
+(or (not x1325) x883)
+(or x1326 (not x1325))
+(or x1326 x1233)
+(or x1325 (not x1233) (not x1326))
+(or x1219 (not x72) x1327)
+(or (not x1327) (not x1219))
+(or (not x1327) x72)
+(or x1225 (not x71))
+(or x1225 (not x1327))
+(or x71 x1327 (not x1225))
+(or (not x1225) (not x1226) (not x882) (not x883) (not x884) (not x883) x1328)
+(or (not x1328) x1225)
+(or (not x1328) x1226)
+(or (not x1328) x882)
+(or (not x1328) x883)
+(or (not x1328) x884)
+(or (not x1328) x883)
+(or x1329 (not x1328))
+(or x1329 x1226)
+(or x1328 (not x1226) (not x1329))
+(or (not x72) (not x1219) (not x882) (not x883) (not x884) (not x883) x1330)
+(or (not x1330) x72)
+(or (not x1330) x1219)
+(or (not x1330) x882)
+(or (not x1330) x883)
+(or (not x1330) x884)
+(or (not x1330) x883)
+(or x1331 (not x1330))
+(or x1331 x1219)
+(or x1330 (not x1219) (not x1331))
+(or (not x1331) (not x1329) (not x1326) (not x1322) (not x72) x1285)
+(or (not x1285) x1331)
+(or (not x1285) x1329)
+(or (not x1285) x1326)
+(or (not x1285) x1322)
+(or (not x1285) x72)
+(or x1206 (not x74) x1332)
+(or (not x1332) (not x1206))
+(or (not x1332) x74)
+(or x1199 x1206 (not x75) x1333)
+(or (not x1333) (not x1199))
+(or (not x1333) (not x1206))
+(or (not x1333) x75)
+(or x1192 x1199 x1206 (not x76) x1334)
+(or (not x1334) (not x1192))
+(or (not x1334) (not x1199))
+(or (not x1334) (not x1206))
+(or (not x1334) x76)
+(or x1212 (not x73))
+(or x1212 (not x1334))
+(or x1212 (not x1333))
+(or x1212 (not x1332))
+(or x73 x1334 x1333 x1332 (not x1212))
+(or (not x1212) (not x1213) (not x882) (not x883) (not x884) (not x883) x1335)
+(or (not x1335) x1212)
+(or (not x1335) x1213)
+(or (not x1335) x882)
+(or (not x1335) x883)
+(or (not x1335) x884)
+(or (not x1335) x883)
+(or x1336 (not x1335))
+(or x1336 x1213)
+(or x1335 (not x1213) (not x1336))
+(or x1199 (not x75) x1337)
+(or (not x1337) (not x1199))
+(or (not x1337) x75)
+(or x1192 x1199 (not x76) x1338)
+(or (not x1338) (not x1192))
+(or (not x1338) (not x1199))
+(or (not x1338) x76)
+(or x1205 (not x74))
+(or x1205 (not x1338))
+(or x1205 (not x1337))
+(or x74 x1338 x1337 (not x1205))
+(or (not x1205) (not x1206) (not x882) (not x883) (not x884) (not x883) x1339)
+(or (not x1339) x1205)
+(or (not x1339) x1206)
+(or (not x1339) x882)
+(or (not x1339) x883)
+(or (not x1339) x884)
+(or (not x1339) x883)
+(or x1340 (not x1339))
+(or x1340 x1206)
+(or x1339 (not x1206) (not x1340))
+(or x1192 (not x76) x1341)
+(or (not x1341) (not x1192))
+(or (not x1341) x76)
+(or x1198 (not x75))
+(or x1198 (not x1341))
+(or x75 x1341 (not x1198))
+(or (not x1198) (not x1199) (not x882) (not x883) (not x884) (not x883) x1342)
+(or (not x1342) x1198)
+(or (not x1342) x1199)
+(or (not x1342) x882)
+(or (not x1342) x883)
+(or (not x1342) x884)
+(or (not x1342) x883)
+(or x1343 (not x1342))
+(or x1343 x1199)
+(or x1342 (not x1199) (not x1343))
+(or (not x76) (not x1192) (not x882) (not x883) (not x884) (not x883) x1344)
+(or (not x1344) x76)
+(or (not x1344) x1192)
+(or (not x1344) x882)
+(or (not x1344) x883)
+(or (not x1344) x884)
+(or (not x1344) x883)
+(or x1345 (not x1344))
+(or x1345 x1192)
+(or x1344 (not x1192) (not x1345))
+(or (not x1345) (not x1343) (not x1340) (not x1336) (not x76) x1284)
+(or (not x1284) x1345)
+(or (not x1284) x1343)
+(or (not x1284) x1340)
+(or (not x1284) x1336)
+(or (not x1284) x76)
+(or x1177 (not x1284))
+(or x1177 (not x1285))
+(or x1177 (not x1286))
+(or x1177 (not x1287))
+(or x1284 x1285 x1286 x1287 (not x1177))
+(or (not x65) (not x1173) (not x1172) (not x882) (not x1177) x1346)
+(or (not x1346) x65)
+(or (not x1346) x1173)
+(or (not x1346) x1172)
+(or (not x1346) x882)
+(or (not x1346) x1177)
+(or x1347 (not x1290))
+(or x1347 x62)
+(or x1290 (not x62) (not x1347))
+(or x1348 (not x1280))
+(or x1348 (not x1290))
+(or x1348 x63)
+(or x1280 x1290 (not x63) (not x1348))
+(or x1349 (not x1273))
+(or x1349 (not x1280))
+(or x1349 (not x1290))
+(or x1349 x64)
+(or x1273 x1280 x1290 (not x64) (not x1349))
+(or x61 (not x1349) (not x1348) (not x1347) x1350)
+(or (not x1350) (not x61))
+(or (not x1350) x1349)
+(or (not x1350) x1348)
+(or (not x1350) x1347)
+(or x1351 (not x1350))
+(or x1351 x1185)
+(or x1351 x882)
+(or x1351 (not x1352))
+(or x1351 (not x1353))
+(or x1351 (not x1352))
+(or x1350 (not x1185) (not x882) x1352 x1353 x1352 (not x1351))
+(or (not x1351) (not x1185) x1141)
+(or (not x1141) x1351)
+(or (not x1141) x1185)
+(or x1354 (not x1280))
+(or x1354 x63)
+(or x1280 (not x63) (not x1354))
+(or x1355 (not x1273))
+(or x1355 (not x1280))
+(or x1355 x64)
+(or x1273 x1280 (not x64) (not x1355))
+(or x62 (not x1355) (not x1354) x1356)
+(or (not x1356) (not x62))
+(or (not x1356) x1355)
+(or (not x1356) x1354)
+(or x1357 (not x1356))
+(or x1357 x1290)
+(or x1357 x882)
+(or x1357 (not x1352))
+(or x1357 (not x1353))
+(or x1357 (not x1352))
+(or x1356 (not x1290) (not x882) x1352 x1353 x1352 (not x1357))
+(or (not x1357) (not x1290) x1171)
+(or (not x1171) x1357)
+(or (not x1171) x1290)
+(or x1358 (not x1273))
+(or x1358 x64)
+(or x1273 (not x64) (not x1358))
+(or x63 (not x1358) x1359)
+(or (not x1359) (not x63))
+(or (not x1359) x1358)
+(or x1360 (not x1359))
+(or x1360 x1280)
+(or x1360 x882)
+(or x1360 (not x1352))
+(or x1360 (not x1353))
+(or x1360 (not x1352))
+(or x1359 (not x1280) (not x882) x1352 x1353 x1352 (not x1360))
+(or (not x1360) (not x1280) x1169)
+(or (not x1169) x1360)
+(or (not x1169) x1280)
+(or x1361 x64)
+(or x1361 x1273)
+(or x1361 x882)
+(or x1361 (not x1352))
+(or x1361 (not x1353))
+(or x1361 (not x1352))
+(or (not x64) (not x1273) (not x882) x1352 x1353 x1352 (not x1361))
+(or (not x1361) (not x1273) x1167)
+(or (not x1167) x1361)
+(or (not x1167) x1273)
+(or x1182 (not x1167))
+(or x1182 (not x1169))
+(or x1182 (not x1171))
+(or x1182 (not x1141))
+(or x1182 x64)
+(or x1167 x1169 x1171 x1141 (not x64) (not x1182))
+(or x1362 (not x1260))
+(or x1362 x66)
+(or x1260 (not x66) (not x1362))
+(or x1363 (not x1253))
+(or x1363 (not x1260))
+(or x1363 x67)
+(or x1253 x1260 (not x67) (not x1363))
+(or x1364 (not x1246))
+(or x1364 (not x1253))
+(or x1364 (not x1260))
+(or x1364 x68)
+(or x1246 x1253 x1260 (not x68) (not x1364))
+(or x65 (not x1364) (not x1363) (not x1362) x1365)
+(or (not x1365) (not x65))
+(or (not x1365) x1364)
+(or (not x1365) x1363)
+(or (not x1365) x1362)
+(or x1366 (not x1365))
+(or x1366 x1267)
+(or x1366 x882)
+(or x1366 (not x1352))
+(or x1366 (not x1353))
+(or x1366 (not x1352))
+(or x1365 (not x1267) (not x882) x1352 x1353 x1352 (not x1366))
+(or (not x1366) (not x1267) x1165)
+(or (not x1165) x1366)
+(or (not x1165) x1267)
+(or x1367 (not x1253))
+(or x1367 x67)
+(or x1253 (not x67) (not x1367))
+(or x1368 (not x1246))
+(or x1368 (not x1253))
+(or x1368 x68)
+(or x1246 x1253 (not x68) (not x1368))
+(or x66 (not x1368) (not x1367) x1369)
+(or (not x1369) (not x66))
+(or (not x1369) x1368)
+(or (not x1369) x1367)
+(or x1370 (not x1369))
+(or x1370 x1260)
+(or x1370 x882)
+(or x1370 (not x1352))
+(or x1370 (not x1353))
+(or x1370 (not x1352))
+(or x1369 (not x1260) (not x882) x1352 x1353 x1352 (not x1370))
+(or (not x1370) (not x1260) x1163)
+(or (not x1163) x1370)
+(or (not x1163) x1260)
+(or x1371 (not x1246))
+(or x1371 x68)
+(or x1246 (not x68) (not x1371))
+(or x67 (not x1371) x1372)
+(or (not x1372) (not x67))
+(or (not x1372) x1371)
+(or x1373 (not x1372))
+(or x1373 x1253)
+(or x1373 x882)
+(or x1373 (not x1352))
+(or x1373 (not x1353))
+(or x1373 (not x1352))
+(or x1372 (not x1253) (not x882) x1352 x1353 x1352 (not x1373))
+(or (not x1373) (not x1253) x1161)
+(or (not x1161) x1373)
+(or (not x1161) x1253)
+(or x1374 x68)
+(or x1374 x1246)
+(or x1374 x882)
+(or x1374 (not x1352))
+(or x1374 (not x1353))
+(or x1374 (not x1352))
+(or (not x68) (not x1246) (not x882) x1352 x1353 x1352 (not x1374))
+(or (not x1374) (not x1246) x1159)
+(or (not x1159) x1374)
+(or (not x1159) x1246)
+(or x1181 (not x1159))
+(or x1181 (not x1161))
+(or x1181 (not x1163))
+(or x1181 (not x1165))
+(or x1181 x68)
+(or x1159 x1161 x1163 x1165 (not x68) (not x1181))
+(or x1375 (not x1233))
+(or x1375 x70)
+(or x1233 (not x70) (not x1375))
+(or x1376 (not x1226))
+(or x1376 (not x1233))
+(or x1376 x71)
+(or x1226 x1233 (not x71) (not x1376))
+(or x1377 (not x1219))
+(or x1377 (not x1226))
+(or x1377 (not x1233))
+(or x1377 x72)
+(or x1219 x1226 x1233 (not x72) (not x1377))
+(or x69 (not x1377) (not x1376) (not x1375) x1378)
+(or (not x1378) (not x69))
+(or (not x1378) x1377)
+(or (not x1378) x1376)
+(or (not x1378) x1375)
+(or x1379 (not x1378))
+(or x1379 x1240)
+(or x1379 x882)
+(or x1379 (not x1352))
+(or x1379 (not x1353))
+(or x1379 (not x1352))
+(or x1378 (not x1240) (not x882) x1352 x1353 x1352 (not x1379))
+(or (not x1379) (not x1240) x1157)
+(or (not x1157) x1379)
+(or (not x1157) x1240)
+(or x1380 (not x1226))
+(or x1380 x71)
+(or x1226 (not x71) (not x1380))
+(or x1381 (not x1219))
+(or x1381 (not x1226))
+(or x1381 x72)
+(or x1219 x1226 (not x72) (not x1381))
+(or x70 (not x1381) (not x1380) x1382)
+(or (not x1382) (not x70))
+(or (not x1382) x1381)
+(or (not x1382) x1380)
+(or x1383 (not x1382))
+(or x1383 x1233)
+(or x1383 x882)
+(or x1383 (not x1352))
+(or x1383 (not x1353))
+(or x1383 (not x1352))
+(or x1382 (not x1233) (not x882) x1352 x1353 x1352 (not x1383))
+(or (not x1383) (not x1233) x1155)
+(or (not x1155) x1383)
+(or (not x1155) x1233)
+(or x1384 (not x1219))
+(or x1384 x72)
+(or x1219 (not x72) (not x1384))
+(or x71 (not x1384) x1385)
+(or (not x1385) (not x71))
+(or (not x1385) x1384)
+(or x1386 (not x1385))
+(or x1386 x1226)
+(or x1386 x882)
+(or x1386 (not x1352))
+(or x1386 (not x1353))
+(or x1386 (not x1352))
+(or x1385 (not x1226) (not x882) x1352 x1353 x1352 (not x1386))
+(or (not x1386) (not x1226) x1153)
+(or (not x1153) x1386)
+(or (not x1153) x1226)
+(or x1387 x72)
+(or x1387 x1219)
+(or x1387 x882)
+(or x1387 (not x1352))
+(or x1387 (not x1353))
+(or x1387 (not x1352))
+(or (not x72) (not x1219) (not x882) x1352 x1353 x1352 (not x1387))
+(or (not x1387) (not x1219) x1151)
+(or (not x1151) x1387)
+(or (not x1151) x1219)
+(or x1180 (not x1151))
+(or x1180 (not x1153))
+(or x1180 (not x1155))
+(or x1180 (not x1157))
+(or x1180 x72)
+(or x1151 x1153 x1155 x1157 (not x72) (not x1180))
+(or x1388 (not x1206))
+(or x1388 x74)
+(or x1206 (not x74) (not x1388))
+(or x1389 (not x1199))
+(or x1389 (not x1206))
+(or x1389 x75)
+(or x1199 x1206 (not x75) (not x1389))
+(or x1390 (not x1192))
+(or x1390 (not x1199))
+(or x1390 (not x1206))
+(or x1390 x76)
+(or x1192 x1199 x1206 (not x76) (not x1390))
+(or x73 (not x1390) (not x1389) (not x1388) x1391)
+(or (not x1391) (not x73))
+(or (not x1391) x1390)
+(or (not x1391) x1389)
+(or (not x1391) x1388)
+(or x1392 (not x1391))
+(or x1392 x1213)
+(or x1392 x882)
+(or x1392 (not x1352))
+(or x1392 (not x1353))
+(or x1392 (not x1352))
+(or x1391 (not x1213) (not x882) x1352 x1353 x1352 (not x1392))
+(or (not x1392) (not x1213) x1149)
+(or (not x1149) x1392)
+(or (not x1149) x1213)
+(or x1393 (not x1199))
+(or x1393 x75)
+(or x1199 (not x75) (not x1393))
+(or x1394 (not x1192))
+(or x1394 (not x1199))
+(or x1394 x76)
+(or x1192 x1199 (not x76) (not x1394))
+(or x74 (not x1394) (not x1393) x1395)
+(or (not x1395) (not x74))
+(or (not x1395) x1394)
+(or (not x1395) x1393)
+(or x1396 (not x1395))
+(or x1396 x1206)
+(or x1396 x882)
+(or x1396 (not x1352))
+(or x1396 (not x1353))
+(or x1396 (not x1352))
+(or x1395 (not x1206) (not x882) x1352 x1353 x1352 (not x1396))
+(or (not x1396) (not x1206) x1147)
+(or (not x1147) x1396)
+(or (not x1147) x1206)
+(or x1397 (not x1192))
+(or x1397 x76)
+(or x1192 (not x76) (not x1397))
+(or x75 (not x1397) x1398)
+(or (not x1398) (not x75))
+(or (not x1398) x1397)
+(or x1399 (not x1398))
+(or x1399 x1199)
+(or x1399 x882)
+(or x1399 (not x1352))
+(or x1399 (not x1353))
+(or x1399 (not x1352))
+(or x1398 (not x1199) (not x882) x1352 x1353 x1352 (not x1399))
+(or (not x1399) (not x1199) x1145)
+(or (not x1145) x1399)
+(or (not x1145) x1199)
+(or x1400 x76)
+(or x1400 x1192)
+(or x1400 x882)
+(or x1400 (not x1352))
+(or x1400 (not x1353))
+(or x1400 (not x1352))
+(or (not x76) (not x1192) (not x882) x1352 x1353 x1352 (not x1400))
+(or (not x1400) (not x1192) x1143)
+(or (not x1143) x1400)
+(or (not x1143) x1192)
+(or x1179 (not x1143))
+(or x1179 (not x1145))
+(or x1179 (not x1147))
+(or x1179 (not x1149))
+(or x1179 x76)
+(or x1143 x1145 x1147 x1149 (not x76) (not x1179))
+(or (not x1179) (not x1180) (not x1181) (not x1182) x1288)
+(or (not x1288) x1179)
+(or (not x1288) x1180)
+(or (not x1288) x1181)
+(or (not x1288) x1182)
+(or x1401 x1113)
+(or x1401 x1109)
+(or x1401 x1105)
+(or x1401 x1103)
+(or (not x1113) (not x1109) (not x1105) (not x1103) (not x1401))
+(or x874 (not x875) x1121)
+(or (not x1121) (not x874))
+(or (not x1121) x875)
+(or x849 (not x850) x1126)
+(or (not x1126) (not x849))
+(or (not x1126) x850)
+(or x860 (not x861) x1131)
+(or (not x1131) (not x860))
+(or (not x1131) x861)
+(or x867 (not x868) x1136)
+(or (not x1136) (not x867))
+(or (not x1136) x868)
+(or x853 (not x1136))
+(or x853 (not x1131))
+(or x853 (not x1126))
+(or x853 (not x1121))
+(or x1136 x1131 x1126 x1121 (not x853))
+(or (not x853) (not x1401) x1353)
+(or (not x1353) x853)
+(or (not x1353) x1401)
+(or x1273 x1280 x1290 x1185 x1402)
+(or (not x1402) (not x1273))
+(or (not x1402) (not x1280))
+(or (not x1402) (not x1290))
+(or (not x1402) (not x1185))
+(or x64 x63 x62 x61 x1403)
+(or (not x1403) (not x64))
+(or (not x1403) (not x63))
+(or (not x1403) (not x62))
+(or (not x1403) (not x61))
+(or x1404 (not x1403))
+(or x1404 (not x1402))
+(or x1403 x1402 (not x1404))
+(or x1246 x1253 x1260 x1267 x1405)
+(or (not x1405) (not x1246))
+(or (not x1405) (not x1253))
+(or (not x1405) (not x1260))
+(or (not x1405) (not x1267))
+(or x68 x67 x66 x65 x1406)
+(or (not x1406) (not x68))
+(or (not x1406) (not x67))
+(or (not x1406) (not x66))
+(or (not x1406) (not x65))
+(or x1407 (not x1406))
+(or x1407 (not x1405))
+(or x1406 x1405 (not x1407))
+(or x1219 x1226 x1233 x1240 x1408)
+(or (not x1408) (not x1219))
+(or (not x1408) (not x1226))
+(or (not x1408) (not x1233))
+(or (not x1408) (not x1240))
+(or x72 x71 x70 x69 x1409)
+(or (not x1409) (not x72))
+(or (not x1409) (not x71))
+(or (not x1409) (not x70))
+(or (not x1409) (not x69))
+(or x1410 (not x1409))
+(or x1410 (not x1408))
+(or x1409 x1408 (not x1410))
+(or x1192 x1199 x1206 x1213 x1411)
+(or (not x1411) (not x1192))
+(or (not x1411) (not x1199))
+(or (not x1411) (not x1206))
+(or (not x1411) (not x1213))
+(or x76 x75 x74 x73 x1412)
+(or (not x1412) (not x76))
+(or (not x1412) (not x75))
+(or (not x1412) (not x74))
+(or (not x1412) (not x73))
+(or x1413 (not x1412))
+(or x1413 (not x1411))
+(or x1412 x1411 (not x1413))
+(or (not x1413) (not x1410) (not x1407) (not x1404) x1352)
+(or (not x1352) x1413)
+(or (not x1352) x1410)
+(or (not x1352) x1407)
+(or (not x1352) x1404)
+(or x886 x882)
+(or x886 (not x1352))
+(or x886 (not x1353))
+(or (not x882) x1352 x1353 (not x886))
+(or x1173 x882)
+(or x1173 (not x1352))
+(or x1173 (not x1353))
+(or x1173 (not x1352))
+(or (not x882) x1352 x1353 x1352 (not x1173))
+(or (not x62) (not x1173) (not x1172) (not x1179) (not x1180) (not x1181) (not x1182) (not x882) x1414)
+(or (not x1414) x62)
+(or (not x1414) x1173)
+(or (not x1414) x1172)
+(or (not x1414) x1179)
+(or (not x1414) x1180)
+(or (not x1414) x1181)
+(or (not x1414) x1182)
+(or (not x1414) x882)
+(or (not x1113) (not x1109) (not x1105) (not x1103) x1415)
+(or (not x1415) x1113)
+(or (not x1415) x1109)
+(or (not x1415) x1105)
+(or (not x1415) x1103)
+(or x1080 (not x874))
+(or x1080 x875)
+(or x874 (not x875) (not x1080))
+(or x1071 (not x849))
+(or x1071 x850)
+(or x849 (not x850) (not x1071))
+(or x1073 (not x860))
+(or x1073 x861)
+(or x860 (not x861) (not x1073))
+(or x1075 (not x867))
+(or x1075 x868)
+(or x867 (not x868) (not x1075))
+(or (not x1075) (not x1073) (not x1071) (not x1080) x877)
+(or (not x877) x1075)
+(or (not x877) x1073)
+(or (not x877) x1071)
+(or (not x877) x1080)
+(or x884 (not x877))
+(or x884 (not x1415))
+(or x877 x1415 (not x884))
+(or x1416 (not x1273))
+(or x1416 (not x1280))
+(or x1416 (not x1290))
+(or x1416 (not x1185))
+(or x1273 x1280 x1290 x1185 (not x1416))
+(or x1417 (not x64))
+(or x1417 (not x63))
+(or x1417 (not x62))
+(or x1417 (not x61))
+(or x64 x63 x62 x61 (not x1417))
+(or (not x1417) (not x1416) x1418)
+(or (not x1418) x1417)
+(or (not x1418) x1416)
+(or x1419 (not x1246))
+(or x1419 (not x1253))
+(or x1419 (not x1260))
+(or x1419 (not x1267))
+(or x1246 x1253 x1260 x1267 (not x1419))
+(or x1420 (not x68))
+(or x1420 (not x67))
+(or x1420 (not x66))
+(or x1420 (not x65))
+(or x68 x67 x66 x65 (not x1420))
+(or (not x1420) (not x1419) x1421)
+(or (not x1421) x1420)
+(or (not x1421) x1419)
+(or x1422 (not x1219))
+(or x1422 (not x1226))
+(or x1422 (not x1233))
+(or x1422 (not x1240))
+(or x1219 x1226 x1233 x1240 (not x1422))
+(or x1423 (not x72))
+(or x1423 (not x71))
+(or x1423 (not x70))
+(or x1423 (not x69))
+(or x72 x71 x70 x69 (not x1423))
+(or (not x1423) (not x1422) x1424)
+(or (not x1424) x1423)
+(or (not x1424) x1422)
+(or x1425 (not x1192))
+(or x1425 (not x1199))
+(or x1425 (not x1206))
+(or x1425 (not x1213))
+(or x1192 x1199 x1206 x1213 (not x1425))
+(or (not x1426) (not x1425) x1427)
+(or (not x1427) x1426)
+(or (not x1427) x1425)
+(or x883 (not x1427))
+(or x883 (not x1424))
+(or x883 (not x1421))
+(or x883 (not x1418))
+(or x1427 x1424 x1421 x1418 (not x883))
+(or (not x882) (not x883) (not x884) (not x883) x1283)
+(or (not x1283) x882)
+(or (not x1283) x883)
+(or (not x1283) x884)
+(or (not x1283) x883)
+(or x1426 (not x76))
+(or x1426 (not x75))
+(or x1426 (not x74))
+(or x1426 (not x73))
+(or x76 x75 x74 x73 (not x1426))
+(or x1172 (not x76))
+(or x1172 (not x75))
+(or x1172 (not x74))
+(or x1172 (not x73))
+(or x1172 (not x72))
+(or x1172 (not x71))
+(or x1172 (not x70))
+(or x1172 (not x69))
+(or x1172 (not x68))
+(or x1172 (not x67))
+(or x1172 (not x66))
+(or x1172 (not x65))
+(or x1172 (not x64))
+(or x1172 (not x63))
+(or x1172 (not x62))
+(or x1172 (not x61))
+(or x76 x75 x74 x73 x72 x71 x70 x69 x68 x67 x66 x65 x64 x63 x62 x61 (not x1172))
+(or x1280 (not x63) x1428)
+(or (not x1428) (not x1280))
+(or (not x1428) x63)
+(or x1273 x1280 (not x64) x1429)
+(or (not x1429) (not x1273))
+(or (not x1429) (not x1280))
+(or (not x1429) x64)
+(or x1296 (not x62))
+(or x1296 (not x1429))
+(or x1296 (not x1428))
+(or x62 x1429 x1428 (not x1296))
+(or (not x1296) (not x1290) (not x1172) (not x882) (not x883) (not x884) (not x883) x1430)
+(or (not x1430) x1296)
+(or (not x1430) x1290)
+(or (not x1430) x1172)
+(or (not x1430) x882)
+(or (not x1430) x883)
+(or (not x1430) x884)
+(or (not x1430) x883)
+(or x1431 (not x1430))
+(or x1431 (not x1414))
+(or x1431 (not x1346))
+(or x1431 (not x1289))
+(or x1430 x1414 x1346 x1289 (not x1431))
+(or (not x1432) x892)
+(or (not x1432) (not x891))
+(or x892 (not x891) x897)
+(or (not x897) (not x892))
+(or (not x897) x891)
+(or x892 x891 x896)
+(or (not x896) (not x892))
+(or (not x896) (not x891))
+(or x1433 (not x896))
+(or x1433 (not x897))
+(or x896 x897 (not x1433))
+(or (not x1434) x904)
+(or (not x1434) (not x903))
+(or x904 (not x903) x909)
+(or (not x909) (not x904))
+(or (not x909) x903)
+(or x904 x903 x908)
+(or (not x908) (not x904))
+(or (not x908) (not x903))
+(or x1435 (not x908))
+(or x1435 (not x909))
+(or x908 x909 (not x1435))
+(or (not x1436) x916)
+(or (not x1436) (not x915))
+(or x916 (not x915) x921)
+(or (not x921) (not x916))
+(or (not x921) x915)
+(or x916 x915 x920)
+(or (not x920) (not x916))
+(or (not x920) (not x915))
+(or x1437 (not x920))
+(or x1437 (not x921))
+(or x920 x921 (not x1437))
+(or (not x1438) x928)
+(or (not x1438) (not x927))
+(or x928 (not x927) x933)
+(or (not x933) (not x928))
+(or (not x933) x927)
+(or x928 x927 x932)
+(or (not x932) (not x928))
+(or (not x932) (not x927))
+(or x1439 (not x932))
+(or x1439 (not x933))
+(or x932 x933 (not x1439))
+(or (not x1440) x940)
+(or (not x1440) (not x939))
+(or x940 (not x939) x945)
+(or (not x945) (not x940))
+(or (not x945) x939)
+(or x940 x939 x944)
+(or (not x944) (not x940))
+(or (not x944) (not x939))
+(or x1441 (not x944))
+(or x1441 (not x945))
+(or x944 x945 (not x1441))
+(or (not x1442) x952)
+(or (not x1442) (not x951))
+(or x952 (not x951) x957)
+(or (not x957) (not x952))
+(or (not x957) x951)
+(or x952 x951 x956)
+(or (not x956) (not x952))
+(or (not x956) (not x951))
+(or x1443 (not x956))
+(or x1443 (not x957))
+(or x956 x957 (not x1443))
+(or (not x1444) x964)
+(or (not x1444) (not x963))
+(or x964 (not x963) x969)
+(or (not x969) (not x964))
+(or (not x969) x963)
+(or x964 x963 x968)
+(or (not x968) (not x964))
+(or (not x968) (not x963))
+(or x1445 (not x968))
+(or x1445 (not x969))
+(or x968 x969 (not x1445))
+(or (not x1446) x976)
+(or (not x1446) (not x975))
+(or x976 (not x975) x981)
+(or (not x981) (not x976))
+(or (not x981) x975)
+(or x976 x975 x980)
+(or (not x980) (not x976))
+(or (not x980) (not x975))
+(or x1447 (not x980))
+(or x1447 (not x981))
+(or x980 x981 (not x1447))
+(or (not x1448) x988)
+(or (not x1448) (not x987))
+(or x988 (not x987) x993)
+(or (not x993) (not x988))
+(or (not x993) x987)
+(or x988 x987 x992)
+(or (not x992) (not x988))
+(or (not x992) (not x987))
+(or x1449 (not x992))
+(or x1449 (not x993))
+(or x992 x993 (not x1449))
+(or (not x1450) x1000)
+(or (not x1450) (not x999))
+(or x1000 (not x999) x1005)
+(or (not x1005) (not x1000))
+(or (not x1005) x999)
+(or x1000 x999 x1004)
+(or (not x1004) (not x1000))
+(or (not x1004) (not x999))
+(or x1451 (not x1004))
+(or x1451 (not x1005))
+(or x1004 x1005 (not x1451))
+(or (not x1452) x1012)
+(or (not x1452) (not x1011))
+(or x1012 (not x1011) x1017)
+(or (not x1017) (not x1012))
+(or (not x1017) x1011)
+(or x1012 x1011 x1016)
+(or (not x1016) (not x1012))
+(or (not x1016) (not x1011))
+(or x1453 (not x1016))
+(or x1453 (not x1017))
+(or x1016 x1017 (not x1453))
+(or (not x1454) x1024)
+(or (not x1454) (not x1023))
+(or x1024 (not x1023) x1029)
+(or (not x1029) (not x1024))
+(or (not x1029) x1023)
+(or x1024 x1023 x1028)
+(or (not x1028) (not x1024))
+(or (not x1028) (not x1023))
+(or x1455 (not x1028))
+(or x1455 (not x1029))
+(or x1028 x1029 (not x1455))
+(or (not x1456) x1036)
+(or (not x1456) (not x1035))
+(or x1036 (not x1035) x1041)
+(or (not x1041) (not x1036))
+(or (not x1041) x1035)
+(or x1036 x1035 x1040)
+(or (not x1040) (not x1036))
+(or (not x1040) (not x1035))
+(or x1457 (not x1040))
+(or x1457 (not x1041))
+(or x1040 x1041 (not x1457))
+(or (not x1458) x1048)
+(or (not x1458) (not x1047))
+(or x1048 (not x1047) x1053)
+(or (not x1053) (not x1048))
+(or (not x1053) x1047)
+(or x1048 x1047 x1052)
+(or (not x1052) (not x1048))
+(or (not x1052) (not x1047))
+(or x1459 (not x1052))
+(or x1459 (not x1053))
+(or x1052 x1053 (not x1459))
+(or (not x1460) x1060)
+(or (not x1460) (not x1059))
+(or x1060 (not x1059) x1065)
+(or (not x1065) (not x1060))
+(or (not x1065) x1059)
+(or x1060 x1059 x1064)
+(or (not x1064) (not x1060))
+(or (not x1064) (not x1059))
+(or x1461 (not x1064))
+(or x1461 (not x1065))
+(or x1064 x1065 (not x1461))
+(or (not x1462) x1092)
+(or (not x1462) (not x1091))
+(or x1092 (not x1091) x1097)
+(or (not x1097) (not x1092))
+(or (not x1097) x1091)
+(or x1092 x1091 x1096)
+(or (not x1096) (not x1092))
+(or (not x1096) (not x1091))
+(or x1463 (not x1096))
+(or x1463 (not x1097))
+(or x1096 x1097 (not x1463))
+(or x1464 (not x79))
+(or x1464 x78)
+(or x1464 x1465)
+(or x79 (not x78) (not x1465) (not x1464))
+(or (not x1464) (not x1466) x1467)
+(or (not x1467) x1464)
+(or (not x1467) x1466)
+(or x1468 (not x80))
+(or x1468 (not x81))
+(or x1468 (not x82))
+(or x1468 (not x83))
+(or x1468 (not x84))
+(or x1468 (not x85))
+(or x1468 (not x86))
+(or x1468 (not x87))
+(or x1468 (not x88))
+(or x1468 (not x89))
+(or x1468 (not x90))
+(or x1468 (not x91))
+(or x1468 (not x92))
+(or x1468 (not x93))
+(or x1468 (not x94))
+(or x1468 (not x95))
+(or x80 x81 x82 x83 x84 x85 x86 x87 x88 x89 x90 x91 x92 x93 x94 x95 (not x1468))
+(or (not x79) x78 (not x1468) x1469)
+(or (not x1469) x79)
+(or (not x1469) (not x78))
+(or (not x1469) x1468)
+(or x79 (not x78) x1470)
+(or (not x1470) (not x79))
+(or (not x1470) x78)
+(or x1466 (not x1470))
+(or x1466 (not x1469))
+(or x1470 x1469 (not x1466))
+(or x1471 (not x79))
+(or x1471 x78)
+(or x1471 (not x1465))
+(or x79 (not x78) x1465 (not x1471))
+(or (not x1471) (not x1466) x1472)
+(or (not x1472) x1471)
+(or (not x1472) x1466)
+(or (not x1473) x1474 (not x1475) (not x1476) (not x1477) (not x1478) x1479)
+(or (not x1479) x1473)
+(or (not x1479) (not x1474))
+(or (not x1479) x1475)
+(or (not x1479) x1476)
+(or (not x1479) x1477)
+(or (not x1479) x1478)
+(or (not x1480) (not x1476) (not x1481) x1482)
+(or (not x1482) x1480)
+(or (not x1482) x1476)
+(or (not x1482) x1481)
+(or x1483 (not x1482))
+(or x1483 (not x1479))
+(or x1482 x1479 (not x1483))
+(or (not x1484) x1485 (not x1486) (not x1476) (not x1477) (not x1478) x1487)
+(or (not x1487) x1484)
+(or (not x1487) (not x1485))
+(or (not x1487) x1486)
+(or (not x1487) x1476)
+(or (not x1487) x1477)
+(or (not x1487) x1478)
+(or (not x1488) (not x1476) (not x1481) x1489)
+(or (not x1489) x1488)
+(or (not x1489) x1476)
+(or (not x1489) x1481)
+(or x1490 (not x1489))
+(or x1490 (not x1487))
+(or x1489 x1487 (not x1490))
+(or (not x1491) x1492 (not x1493) (not x1476) (not x1477) (not x1478) x1494)
+(or (not x1494) x1491)
+(or (not x1494) (not x1492))
+(or (not x1494) x1493)
+(or (not x1494) x1476)
+(or (not x1494) x1477)
+(or (not x1494) x1478)
+(or (not x1495) (not x1476) (not x1481) x1496)
+(or (not x1496) x1495)
+(or (not x1496) x1476)
+(or (not x1496) x1481)
+(or x1497 (not x1496))
+(or x1497 (not x1494))
+(or x1496 x1494 (not x1497))
+(or (not x1498) x1499 (not x1500) (not x1476) (not x1477) (not x1478) x1501)
+(or (not x1501) x1498)
+(or (not x1501) (not x1499))
+(or (not x1501) x1500)
+(or (not x1501) x1476)
+(or (not x1501) x1477)
+(or (not x1501) x1478)
+(or x1481 x1477)
+(or x1481 (not x1502))
+(or (not x1477) x1502 (not x1481))
+(or x1476 (not x1503))
+(or x1476 (not x1495))
+(or x1476 (not x1488))
+(or x1476 (not x1480))
+(or x1503 x1495 x1488 x1480 (not x1476))
+(or (not x1503) (not x1476) (not x1481) x1504)
+(or (not x1504) x1503)
+(or (not x1504) x1476)
+(or (not x1504) x1481)
+(or x1503 x1495 x1488 x1480 x1505)
+(or (not x1505) (not x1503))
+(or (not x1505) (not x1495))
+(or (not x1505) (not x1488))
+(or (not x1505) (not x1480))
+(or x1506 (not x1505))
+(or x1506 (not x1504))
+(or x1506 (not x1501))
+(or x1505 x1504 x1501 (not x1506))
+(or (not x1507) (not x1507) (not x1508) (not x1509) x1510)
+(or (not x1510) x1507)
+(or (not x1510) x1507)
+(or (not x1510) x1508)
+(or (not x1510) x1509)
+(or (not x1511) (not x1507) x1512)
+(or (not x1512) x1511)
+(or (not x1512) x1507)
+(or x1507 x1513 x1477 x1514)
+(or (not x1514) (not x1507))
+(or (not x1514) (not x1513))
+(or (not x1514) (not x1477))
+(or x1515 (not x1514))
+(or x1515 (not x1512))
+(or x1514 x1512 (not x1515))
+(or x1516 (not x1517))
+(or x1516 (not x1518))
+(or x1516 (not x1519))
+(or x1516 (not x1521))
+(or x1517 x1518 x1519 x1521 (not x1516))
+(or (not x1522) (not x1523) (not x1516) x1524)
+(or (not x1524) x1522)
+(or (not x1524) x1523)
+(or (not x1524) x1516)
+(or (not x1521) x1520 (not x1525) x1519)
+(or (not x1519) x1521)
+(or (not x1519) (not x1520))
+(or (not x1519) x1525)
+(or x1526 (not x1517))
+(or x1526 (not x1518))
+(or x1526 (not x1519))
+(or x1526 (not x1520))
+(or x1517 x1518 x1519 x1520 (not x1526))
+(or x1523 (not x1517))
+(or x1523 (not x1518))
+(or x1523 x1521)
+(or x1523 (not x1520))
+(or x1523 x1525)
+(or x1517 x1518 (not x1521) x1520 (not x1525) (not x1523))
+(or x1527 (not x1517))
+(or x1527 (not x1521))
+(or x1527 x1520)
+(or x1517 x1521 (not x1520) (not x1527))
+(or x1522 (not x1521))
+(or x1522 (not x1520))
+(or x1521 x1520 (not x1522))
+(or x1528 (not x1521))
+(or x1528 (not x1520))
+(or x1528 x1529)
+(or x1521 x1520 (not x1529) (not x1528))
+(or (not x1528) (not x1527) (not x1523) (not x1526) x1530)
+(or (not x1530) x1528)
+(or (not x1530) x1527)
+(or (not x1530) x1523)
+(or (not x1530) x1526)
+(or x1531 (not x1532))
+(or x1531 (not x1533))
+(or x1531 (not x1534))
+(or x1531 (not x1536))
+(or x1532 x1533 x1534 x1536 (not x1531))
+(or (not x1537) (not x1538) (not x1531) x1539)
+(or (not x1539) x1537)
+(or (not x1539) x1538)
+(or (not x1539) x1531)
+(or (not x1536) x1535 (not x1540) x1534)
+(or (not x1534) x1536)
+(or (not x1534) (not x1535))
+(or (not x1534) x1540)
+(or x1541 (not x1532))
+(or x1541 (not x1533))
+(or x1541 (not x1534))
+(or x1541 (not x1535))
+(or x1532 x1533 x1534 x1535 (not x1541))
+(or x1538 (not x1532))
+(or x1538 (not x1533))
+(or x1538 x1536)
+(or x1538 (not x1535))
+(or x1538 x1540)
+(or x1532 x1533 (not x1536) x1535 (not x1540) (not x1538))
+(or x1542 (not x1532))
+(or x1542 (not x1536))
+(or x1542 x1535)
+(or x1532 x1536 (not x1535) (not x1542))
+(or x1537 (not x1536))
+(or x1537 (not x1535))
+(or x1536 x1535 (not x1537))
+(or x1543 (not x1536))
+(or x1543 (not x1535))
+(or x1543 x1544)
+(or x1536 x1535 (not x1544) (not x1543))
+(or (not x1543) (not x1542) (not x1538) (not x1541) x1545)
+(or (not x1545) x1543)
+(or (not x1545) x1542)
+(or (not x1545) x1538)
+(or (not x1545) x1541)
+(or x1546 (not x1547))
+(or x1546 (not x1548))
+(or x1546 (not x1549))
+(or x1546 (not x1551))
+(or x1547 x1548 x1549 x1551 (not x1546))
+(or (not x1552) (not x1553) (not x1546) x1554)
+(or (not x1554) x1552)
+(or (not x1554) x1553)
+(or (not x1554) x1546)
+(or (not x1551) x1550 (not x1555) x1549)
+(or (not x1549) x1551)
+(or (not x1549) (not x1550))
+(or (not x1549) x1555)
+(or x1556 (not x1547))
+(or x1556 (not x1548))
+(or x1556 (not x1549))
+(or x1556 (not x1550))
+(or x1547 x1548 x1549 x1550 (not x1556))
+(or x1553 (not x1547))
+(or x1553 (not x1548))
+(or x1553 x1551)
+(or x1553 (not x1550))
+(or x1553 x1555)
+(or x1547 x1548 (not x1551) x1550 (not x1555) (not x1553))
+(or x1557 (not x1547))
+(or x1557 (not x1551))
+(or x1557 x1550)
+(or x1547 x1551 (not x1550) (not x1557))
+(or x1552 (not x1551))
+(or x1552 (not x1550))
+(or x1551 x1550 (not x1552))
+(or x1558 (not x1551))
+(or x1558 (not x1550))
+(or x1558 x1559)
+(or x1551 x1550 (not x1559) (not x1558))
+(or (not x1558) (not x1557) (not x1553) (not x1556) x1560)
+(or (not x1560) x1558)
+(or (not x1560) x1557)
+(or (not x1560) x1553)
+(or (not x1560) x1556)
+(or x1561 (not x1562))
+(or x1561 (not x1563))
+(or x1561 (not x1564))
+(or x1561 (not x1566))
+(or x1562 x1563 x1564 x1566 (not x1561))
+(or (not x1567) (not x1568) (not x1561) x1569)
+(or (not x1569) x1567)
+(or (not x1569) x1568)
+(or (not x1569) x1561)
+(or (not x1566) x1565 (not x1570) x1564)
+(or (not x1564) x1566)
+(or (not x1564) (not x1565))
+(or (not x1564) x1570)
+(or x1571 (not x1562))
+(or x1571 (not x1563))
+(or x1571 (not x1564))
+(or x1571 (not x1565))
+(or x1562 x1563 x1564 x1565 (not x1571))
+(or x1568 (not x1562))
+(or x1568 (not x1563))
+(or x1568 x1566)
+(or x1568 (not x1565))
+(or x1568 x1570)
+(or x1562 x1563 (not x1566) x1565 (not x1570) (not x1568))
+(or x1572 (not x1562))
+(or x1572 (not x1566))
+(or x1572 x1565)
+(or x1562 x1566 (not x1565) (not x1572))
+(or x1567 (not x1566))
+(or x1567 (not x1565))
+(or x1566 x1565 (not x1567))
+(or x1573 (not x1566))
+(or x1573 (not x1565))
+(or x1573 x1574)
+(or x1566 x1565 (not x1574) (not x1573))
+(or (not x1573) (not x1572) (not x1568) (not x1571) x1575)
+(or (not x1575) x1573)
+(or (not x1575) x1572)
+(or (not x1575) x1568)
+(or (not x1575) x1571)
+(or x1576 (not x1577))
+(or x1576 (not x1578))
+(or x1576 (not x1579))
+(or x1576 (not x1581))
+(or x1577 x1578 x1579 x1581 (not x1576))
+(or (not x1582) (not x1583) (not x1576) x1584)
+(or (not x1584) x1582)
+(or (not x1584) x1583)
+(or (not x1584) x1576)
+(or (not x1581) x1580 (not x1585) x1579)
+(or (not x1579) x1581)
+(or (not x1579) (not x1580))
+(or (not x1579) x1585)
+(or x1586 (not x1577))
+(or x1586 (not x1578))
+(or x1586 (not x1579))
+(or x1586 (not x1580))
+(or x1577 x1578 x1579 x1580 (not x1586))
+(or x1583 (not x1577))
+(or x1583 (not x1578))
+(or x1583 x1581)
+(or x1583 (not x1580))
+(or x1583 x1585)
+(or x1577 x1578 (not x1581) x1580 (not x1585) (not x1583))
+(or x1587 (not x1577))
+(or x1587 (not x1581))
+(or x1587 x1580)
+(or x1577 x1581 (not x1580) (not x1587))
+(or x1582 (not x1581))
+(or x1582 (not x1580))
+(or x1581 x1580 (not x1582))
+(or x1588 (not x1581))
+(or x1588 (not x1580))
+(or x1588 x1589)
+(or x1581 x1580 (not x1589) (not x1588))
+(or (not x1588) (not x1587) (not x1583) (not x1586) x1590)
+(or (not x1590) x1588)
+(or (not x1590) x1587)
+(or (not x1590) x1583)
+(or (not x1590) x1586)
+(or x1591 (not x1592))
+(or x1591 (not x1593))
+(or x1591 (not x1594))
+(or x1591 (not x1596))
+(or x1592 x1593 x1594 x1596 (not x1591))
+(or (not x1597) (not x1598) (not x1591) x1599)
+(or (not x1599) x1597)
+(or (not x1599) x1598)
+(or (not x1599) x1591)
+(or (not x1596) x1595 (not x1600) x1594)
+(or (not x1594) x1596)
+(or (not x1594) (not x1595))
+(or (not x1594) x1600)
+(or x1601 (not x1592))
+(or x1601 (not x1593))
+(or x1601 (not x1594))
+(or x1601 (not x1595))
+(or x1592 x1593 x1594 x1595 (not x1601))
+(or x1598 (not x1592))
+(or x1598 (not x1593))
+(or x1598 x1596)
+(or x1598 (not x1595))
+(or x1598 x1600)
+(or x1592 x1593 (not x1596) x1595 (not x1600) (not x1598))
+(or x1602 (not x1592))
+(or x1602 (not x1596))
+(or x1602 x1595)
+(or x1592 x1596 (not x1595) (not x1602))
+(or x1597 (not x1596))
+(or x1597 (not x1595))
+(or x1596 x1595 (not x1597))
+(or x1603 (not x1596))
+(or x1603 (not x1595))
+(or x1603 x1604)
+(or x1596 x1595 (not x1604) (not x1603))
+(or (not x1603) (not x1602) (not x1598) (not x1601) x1605)
+(or (not x1605) x1603)
+(or (not x1605) x1602)
+(or (not x1605) x1598)
+(or (not x1605) x1601)
+(or x1606 (not x1607))
+(or x1606 (not x1608))
+(or x1606 (not x1609))
+(or x1606 (not x1611))
+(or x1607 x1608 x1609 x1611 (not x1606))
+(or (not x1612) (not x1613) (not x1606) x1614)
+(or (not x1614) x1612)
+(or (not x1614) x1613)
+(or (not x1614) x1606)
+(or (not x1611) x1610 (not x1615) x1609)
+(or (not x1609) x1611)
+(or (not x1609) (not x1610))
+(or (not x1609) x1615)
+(or x1616 (not x1607))
+(or x1616 (not x1608))
+(or x1616 (not x1609))
+(or x1616 (not x1610))
+(or x1607 x1608 x1609 x1610 (not x1616))
+(or x1613 (not x1607))
+(or x1613 (not x1608))
+(or x1613 x1611)
+(or x1613 (not x1610))
+(or x1613 x1615)
+(or x1607 x1608 (not x1611) x1610 (not x1615) (not x1613))
+(or x1617 (not x1607))
+(or x1617 (not x1611))
+(or x1617 x1610)
+(or x1607 x1611 (not x1610) (not x1617))
+(or x1612 (not x1611))
+(or x1612 (not x1610))
+(or x1611 x1610 (not x1612))
+(or x1618 (not x1611))
+(or x1618 (not x1610))
+(or x1618 x1619)
+(or x1611 x1610 (not x1619) (not x1618))
+(or (not x1618) (not x1617) (not x1613) (not x1616) x1620)
+(or (not x1620) x1618)
+(or (not x1620) x1617)
+(or (not x1620) x1613)
+(or (not x1620) x1616)
+(or x1621 (not x1622))
+(or x1621 (not x1623))
+(or x1621 (not x1624))
+(or x1621 (not x1626))
+(or x1622 x1623 x1624 x1626 (not x1621))
+(or (not x1627) (not x1628) (not x1621) x1629)
+(or (not x1629) x1627)
+(or (not x1629) x1628)
+(or (not x1629) x1621)
+(or (not x1626) x1625 (not x1630) x1624)
+(or (not x1624) x1626)
+(or (not x1624) (not x1625))
+(or (not x1624) x1630)
+(or x1631 (not x1622))
+(or x1631 (not x1623))
+(or x1631 (not x1624))
+(or x1631 (not x1625))
+(or x1622 x1623 x1624 x1625 (not x1631))
+(or x1628 (not x1622))
+(or x1628 (not x1623))
+(or x1628 x1626)
+(or x1628 (not x1625))
+(or x1628 x1630)
+(or x1622 x1623 (not x1626) x1625 (not x1630) (not x1628))
+(or x1632 (not x1622))
+(or x1632 (not x1626))
+(or x1632 x1625)
+(or x1622 x1626 (not x1625) (not x1632))
+(or x1627 (not x1626))
+(or x1627 (not x1625))
+(or x1626 x1625 (not x1627))
+(or x1633 (not x1626))
+(or x1633 (not x1625))
+(or x1633 x1634)
+(or x1626 x1625 (not x1634) (not x1633))
+(or (not x1633) (not x1632) (not x1628) (not x1631) x1635)
+(or (not x1635) x1633)
+(or (not x1635) x1632)
+(or (not x1635) x1628)
+(or (not x1635) x1631)
+(or x1636 (not x1637))
+(or x1636 (not x1638))
+(or x1636 (not x1639))
+(or x1636 (not x1641))
+(or x1637 x1638 x1639 x1641 (not x1636))
+(or (not x1642) (not x1643) (not x1636) x1644)
+(or (not x1644) x1642)
+(or (not x1644) x1643)
+(or (not x1644) x1636)
+(or (not x1641) x1640 (not x1645) x1639)
+(or (not x1639) x1641)
+(or (not x1639) (not x1640))
+(or (not x1639) x1645)
+(or x1646 (not x1637))
+(or x1646 (not x1638))
+(or x1646 (not x1639))
+(or x1646 (not x1640))
+(or x1637 x1638 x1639 x1640 (not x1646))
+(or x1643 (not x1637))
+(or x1643 (not x1638))
+(or x1643 x1641)
+(or x1643 (not x1640))
+(or x1643 x1645)
+(or x1637 x1638 (not x1641) x1640 (not x1645) (not x1643))
+(or x1647 (not x1637))
+(or x1647 (not x1641))
+(or x1647 x1640)
+(or x1637 x1641 (not x1640) (not x1647))
+(or x1642 (not x1641))
+(or x1642 (not x1640))
+(or x1641 x1640 (not x1642))
+(or x1648 (not x1641))
+(or x1648 (not x1640))
+(or x1648 x1649)
+(or x1641 x1640 (not x1649) (not x1648))
+(or (not x1648) (not x1647) (not x1643) (not x1646) x1650)
+(or (not x1650) x1648)
+(or (not x1650) x1647)
+(or (not x1650) x1643)
+(or (not x1650) x1646)
+(or x1651 (not x1652))
+(or x1651 (not x1653))
+(or x1651 (not x1654))
+(or x1651 (not x1656))
+(or x1652 x1653 x1654 x1656 (not x1651))
+(or (not x1657) (not x1658) (not x1651) x1659)
+(or (not x1659) x1657)
+(or (not x1659) x1658)
+(or (not x1659) x1651)
+(or (not x1656) x1655 (not x1660) x1654)
+(or (not x1654) x1656)
+(or (not x1654) (not x1655))
+(or (not x1654) x1660)
+(or x1661 (not x1652))
+(or x1661 (not x1653))
+(or x1661 (not x1654))
+(or x1661 (not x1655))
+(or x1652 x1653 x1654 x1655 (not x1661))
+(or x1658 (not x1652))
+(or x1658 (not x1653))
+(or x1658 x1656)
+(or x1658 (not x1655))
+(or x1658 x1660)
+(or x1652 x1653 (not x1656) x1655 (not x1660) (not x1658))
+(or x1662 (not x1652))
+(or x1662 (not x1656))
+(or x1662 x1655)
+(or x1652 x1656 (not x1655) (not x1662))
+(or x1657 (not x1656))
+(or x1657 (not x1655))
+(or x1656 x1655 (not x1657))
+(or x1663 (not x1656))
+(or x1663 (not x1655))
+(or x1663 x1664)
+(or x1656 x1655 (not x1664) (not x1663))
+(or (not x1663) (not x1662) (not x1658) (not x1661) x1665)
+(or (not x1665) x1663)
+(or (not x1665) x1662)
+(or (not x1665) x1658)
+(or (not x1665) x1661)
+(or x1666 (not x1667))
+(or x1666 (not x1668))
+(or x1666 (not x1669))
+(or x1666 (not x1671))
+(or x1667 x1668 x1669 x1671 (not x1666))
+(or (not x1672) (not x1673) (not x1666) x1674)
+(or (not x1674) x1672)
+(or (not x1674) x1673)
+(or (not x1674) x1666)
+(or (not x1671) x1670 (not x1675) x1669)
+(or (not x1669) x1671)
+(or (not x1669) (not x1670))
+(or (not x1669) x1675)
+(or x1676 (not x1667))
+(or x1676 (not x1668))
+(or x1676 (not x1669))
+(or x1676 (not x1670))
+(or x1667 x1668 x1669 x1670 (not x1676))
+(or x1673 (not x1667))
+(or x1673 (not x1668))
+(or x1673 x1671)
+(or x1673 (not x1670))
+(or x1673 x1675)
+(or x1667 x1668 (not x1671) x1670 (not x1675) (not x1673))
+(or x1677 (not x1667))
+(or x1677 (not x1671))
+(or x1677 x1670)
+(or x1667 x1671 (not x1670) (not x1677))
+(or x1672 (not x1671))
+(or x1672 (not x1670))
+(or x1671 x1670 (not x1672))
+(or x1678 (not x1671))
+(or x1678 (not x1670))
+(or x1678 x1679)
+(or x1671 x1670 (not x1679) (not x1678))
+(or (not x1678) (not x1677) (not x1673) (not x1676) x1680)
+(or (not x1680) x1678)
+(or (not x1680) x1677)
+(or (not x1680) x1673)
+(or (not x1680) x1676)
+(or x1681 (not x1682))
+(or x1681 (not x1683))
+(or x1681 (not x1684))
+(or x1681 (not x1686))
+(or x1682 x1683 x1684 x1686 (not x1681))
+(or (not x1687) (not x1688) (not x1681) x1689)
+(or (not x1689) x1687)
+(or (not x1689) x1688)
+(or (not x1689) x1681)
+(or (not x1686) x1685 (not x1690) x1684)
+(or (not x1684) x1686)
+(or (not x1684) (not x1685))
+(or (not x1684) x1690)
+(or x1691 (not x1682))
+(or x1691 (not x1683))
+(or x1691 (not x1684))
+(or x1691 (not x1685))
+(or x1682 x1683 x1684 x1685 (not x1691))
+(or x1688 (not x1682))
+(or x1688 (not x1683))
+(or x1688 x1686)
+(or x1688 (not x1685))
+(or x1688 x1690)
+(or x1682 x1683 (not x1686) x1685 (not x1690) (not x1688))
+(or x1692 (not x1682))
+(or x1692 (not x1686))
+(or x1692 x1685)
+(or x1682 x1686 (not x1685) (not x1692))
+(or x1687 (not x1686))
+(or x1687 (not x1685))
+(or x1686 x1685 (not x1687))
+(or x1693 (not x1686))
+(or x1693 (not x1685))
+(or x1693 x1694)
+(or x1686 x1685 (not x1694) (not x1693))
+(or (not x1693) (not x1692) (not x1688) (not x1691) x1695)
+(or (not x1695) x1693)
+(or (not x1695) x1692)
+(or (not x1695) x1688)
+(or (not x1695) x1691)
+(or x1696 (not x1697))
+(or x1696 (not x1698))
+(or x1696 (not x1699))
+(or x1696 (not x1701))
+(or x1697 x1698 x1699 x1701 (not x1696))
+(or (not x1702) (not x1703) (not x1696) x1704)
+(or (not x1704) x1702)
+(or (not x1704) x1703)
+(or (not x1704) x1696)
+(or (not x1701) x1700 (not x1705) x1699)
+(or (not x1699) x1701)
+(or (not x1699) (not x1700))
+(or (not x1699) x1705)
+(or x1706 (not x1697))
+(or x1706 (not x1698))
+(or x1706 (not x1699))
+(or x1706 (not x1700))
+(or x1697 x1698 x1699 x1700 (not x1706))
+(or x1703 (not x1697))
+(or x1703 (not x1698))
+(or x1703 x1701)
+(or x1703 (not x1700))
+(or x1703 x1705)
+(or x1697 x1698 (not x1701) x1700 (not x1705) (not x1703))
+(or x1707 (not x1697))
+(or x1707 (not x1701))
+(or x1707 x1700)
+(or x1697 x1701 (not x1700) (not x1707))
+(or x1702 (not x1701))
+(or x1702 (not x1700))
+(or x1701 x1700 (not x1702))
+(or x1708 (not x1701))
+(or x1708 (not x1700))
+(or x1708 x1709)
+(or x1701 x1700 (not x1709) (not x1708))
+(or (not x1708) (not x1707) (not x1703) (not x1706) x1710)
+(or (not x1710) x1708)
+(or (not x1710) x1707)
+(or (not x1710) x1703)
+(or (not x1710) x1706)
+(or x1711 (not x1712))
+(or x1711 (not x1713))
+(or x1711 (not x1714))
+(or x1711 (not x1716))
+(or x1712 x1713 x1714 x1716 (not x1711))
+(or (not x1717) (not x1718) (not x1711) x1719)
+(or (not x1719) x1717)
+(or (not x1719) x1718)
+(or (not x1719) x1711)
+(or (not x1716) x1715 (not x1720) x1714)
+(or (not x1714) x1716)
+(or (not x1714) (not x1715))
+(or (not x1714) x1720)
+(or x1721 (not x1712))
+(or x1721 (not x1713))
+(or x1721 (not x1714))
+(or x1721 (not x1715))
+(or x1712 x1713 x1714 x1715 (not x1721))
+(or x1718 (not x1712))
+(or x1718 (not x1713))
+(or x1718 x1716)
+(or x1718 (not x1715))
+(or x1718 x1720)
+(or x1712 x1713 (not x1716) x1715 (not x1720) (not x1718))
+(or x1722 (not x1712))
+(or x1722 (not x1716))
+(or x1722 x1715)
+(or x1712 x1716 (not x1715) (not x1722))
+(or x1717 (not x1716))
+(or x1717 (not x1715))
+(or x1716 x1715 (not x1717))
+(or x1723 (not x1716))
+(or x1723 (not x1715))
+(or x1723 x1724)
+(or x1716 x1715 (not x1724) (not x1723))
+(or (not x1723) (not x1722) (not x1718) (not x1721) x1725)
+(or (not x1725) x1723)
+(or (not x1725) x1722)
+(or (not x1725) x1718)
+(or (not x1725) x1721)
+(or x1726 (not x1727))
+(or x1726 (not x1728))
+(or x1726 (not x1729))
+(or x1726 (not x1731))
+(or x1727 x1728 x1729 x1731 (not x1726))
+(or (not x1732) (not x1733) (not x1726) x1734)
+(or (not x1734) x1732)
+(or (not x1734) x1733)
+(or (not x1734) x1726)
+(or (not x1731) x1730 (not x1735) x1729)
+(or (not x1729) x1731)
+(or (not x1729) (not x1730))
+(or (not x1729) x1735)
+(or x1736 (not x1727))
+(or x1736 (not x1728))
+(or x1736 (not x1729))
+(or x1736 (not x1730))
+(or x1727 x1728 x1729 x1730 (not x1736))
+(or x1733 (not x1727))
+(or x1733 (not x1728))
+(or x1733 x1731)
+(or x1733 (not x1730))
+(or x1733 x1735)
+(or x1727 x1728 (not x1731) x1730 (not x1735) (not x1733))
+(or x1737 (not x1727))
+(or x1737 (not x1731))
+(or x1737 x1730)
+(or x1727 x1731 (not x1730) (not x1737))
+(or x1732 (not x1731))
+(or x1732 (not x1730))
+(or x1731 x1730 (not x1732))
+(or x1738 (not x1731))
+(or x1738 (not x1730))
+(or x1738 x1739)
+(or x1731 x1730 (not x1739) (not x1738))
+(or (not x1738) (not x1737) (not x1733) (not x1736) x1740)
+(or (not x1740) x1738)
+(or (not x1740) x1737)
+(or (not x1740) x1733)
+(or (not x1740) x1736)
+(or (not x1741) (not x1488) x1742)
+(or (not x1742) x1741)
+(or (not x1742) x1488)
+(or (not x1743) (not x1741) (not x1495) x1744)
+(or (not x1744) x1743)
+(or (not x1744) x1741)
+(or (not x1744) x1495)
+(or (not x1745) (not x1743) (not x1741) (not x1503) x1746)
+(or (not x1746) x1745)
+(or (not x1746) x1743)
+(or (not x1746) x1741)
+(or (not x1746) x1503)
+(or x1498 (not x1480))
+(or x1498 (not x1746))
+(or x1498 (not x1744))
+(or x1498 (not x1742))
+(or x1480 x1746 x1744 x1742 (not x1498))
+(or (not x1498) x1499 (not x1500) (not x1477) (not x1478) x1747)
+(or (not x1747) x1498)
+(or (not x1747) (not x1499))
+(or (not x1747) x1500)
+(or (not x1747) x1477)
+(or (not x1747) x1478)
+(or (not x1743) (not x1495) x1748)
+(or (not x1748) x1743)
+(or (not x1748) x1495)
+(or (not x1745) (not x1743) (not x1503) x1749)
+(or (not x1749) x1745)
+(or (not x1749) x1743)
+(or (not x1749) x1503)
+(or (not x1750) (not x1745) (not x1743) (not x1480) x1751)
+(or (not x1751) x1750)
+(or (not x1751) x1745)
+(or (not x1751) x1743)
+(or (not x1751) x1480)
+(or x1473 (not x1488))
+(or x1473 (not x1751))
+(or x1473 (not x1749))
+(or x1473 (not x1748))
+(or x1488 x1751 x1749 x1748 (not x1473))
+(or (not x1473) x1474 (not x1475) (not x1477) (not x1478) x1752)
+(or (not x1752) x1473)
+(or (not x1752) (not x1474))
+(or (not x1752) x1475)
+(or (not x1752) x1477)
+(or (not x1752) x1478)
+(or (not x1745) (not x1503) x1753)
+(or (not x1753) x1745)
+(or (not x1753) x1503)
+(or (not x1750) (not x1745) (not x1480) x1754)
+(or (not x1754) x1750)
+(or (not x1754) x1745)
+(or (not x1754) x1480)
+(or (not x1741) (not x1750) (not x1745) (not x1488) x1755)
+(or (not x1755) x1741)
+(or (not x1755) x1750)
+(or (not x1755) x1745)
+(or (not x1755) x1488)
+(or x1484 (not x1495))
+(or x1484 (not x1755))
+(or x1484 (not x1754))
+(or x1484 (not x1753))
+(or x1495 x1755 x1754 x1753 (not x1484))
+(or (not x1484) x1485 (not x1486) (not x1477) (not x1478) x1756)
+(or (not x1756) x1484)
+(or (not x1756) (not x1485))
+(or (not x1756) x1486)
+(or (not x1756) x1477)
+(or (not x1756) x1478)
+(or (not x1750) (not x1480) x1757)
+(or (not x1757) x1750)
+(or (not x1757) x1480)
+(or (not x1741) (not x1750) (not x1488) x1758)
+(or (not x1758) x1741)
+(or (not x1758) x1750)
+(or (not x1758) x1488)
+(or (not x1743) (not x1741) (not x1750) (not x1495) x1759)
+(or (not x1759) x1743)
+(or (not x1759) x1741)
+(or (not x1759) x1750)
+(or (not x1759) x1495)
+(or x1491 (not x1503))
+(or x1491 (not x1759))
+(or x1491 (not x1758))
+(or x1491 (not x1757))
+(or x1503 x1759 x1758 x1757 (not x1491))
+(or (not x1491) x1492 (not x1493) (not x1477) (not x1478) x1760)
+(or (not x1760) x1491)
+(or (not x1760) (not x1492))
+(or (not x1760) x1493)
+(or (not x1760) x1477)
+(or (not x1760) x1478)
+(or x1761 (not x1762))
+(or x1761 (not x1763))
+(or x1761 (not x1764))
+(or x1761 (not x1766))
+(or x1762 x1763 x1764 x1766 (not x1761))
+(or (not x1767) (not x1768) (not x1761) x1769)
+(or (not x1769) x1767)
+(or (not x1769) x1768)
+(or (not x1769) x1761)
+(or (not x1766) x1765 (not x1770) x1764)
+(or (not x1764) x1766)
+(or (not x1764) (not x1765))
+(or (not x1764) x1770)
+(or x1771 (not x1762))
+(or x1771 (not x1763))
+(or x1771 (not x1764))
+(or x1771 (not x1765))
+(or x1762 x1763 x1764 x1765 (not x1771))
+(or x1768 (not x1762))
+(or x1768 (not x1763))
+(or x1768 x1766)
+(or x1768 (not x1765))
+(or x1768 x1770)
+(or x1762 x1763 (not x1766) x1765 (not x1770) (not x1768))
+(or x1772 (not x1762))
+(or x1772 (not x1766))
+(or x1772 x1765)
+(or x1762 x1766 (not x1765) (not x1772))
+(or x1767 (not x1766))
+(or x1767 (not x1765))
+(or x1766 x1765 (not x1767))
+(or x1773 (not x1766))
+(or x1773 (not x1765))
+(or x1773 x1774)
+(or x1766 x1765 (not x1774) (not x1773))
+(or (not x1773) (not x1772) (not x1768) (not x1771) x1775)
+(or (not x1775) x1773)
+(or (not x1775) x1772)
+(or (not x1775) x1768)
+(or (not x1775) x1771)
+(or x1513 (not x1776) x1777)
+(or (not x1777) (not x1513))
+(or (not x1777) x1776)
+(or (not x1477) (not x1778) (not x1508) x1779)
+(or (not x1779) x1477)
+(or (not x1779) x1778)
+(or (not x1779) x1508)
+(or x1780 (not x1779))
+(or x1780 (not x1777))
+(or x1779 x1777 (not x1780))
+(or x1513 (not x1778) x1781)
+(or (not x1781) (not x1513))
+(or (not x1781) x1778)
+(or (not x1477) (not x1782) (not x1508) x1783)
+(or (not x1783) x1477)
+(or (not x1783) x1782)
+(or (not x1783) x1508)
+(or x1784 (not x1783))
+(or x1784 (not x1781))
+(or x1783 x1781 (not x1784))
+(or x1513 (not x1782) x1785)
+(or (not x1785) (not x1513))
+(or (not x1785) x1782)
+(or (not x1477) (not x1786) (not x1508) x1787)
+(or (not x1787) x1477)
+(or (not x1787) x1786)
+(or (not x1787) x1508)
+(or x1788 (not x1787))
+(or x1788 (not x1785))
+(or x1787 x1785 (not x1788))
+(or x1513 (not x1786) x1789)
+(or (not x1789) (not x1513))
+(or (not x1789) x1786)
+(or (not x1477) (not x1508) x1790)
+(or (not x1790) x1477)
+(or (not x1790) x1508)
+(or x1791 (not x1790))
+(or x1791 (not x1789))
+(or x1790 x1789 (not x1791))
+(or x1792 (not x1499))
+(or x1792 x1500)
+(or x1792 (not x1500))
+(or x1499 (not x1500) x1500 (not x1792))
+(or x1793 (not x1794))
+(or x1793 x1795)
+(or x1794 (not x1795) (not x1793))
+(or (not x1793) (not x1792) x1796)
+(or (not x1796) x1793)
+(or (not x1796) x1792)
+(or x1797 (not x1474))
+(or x1797 x1475)
+(or x1797 (not x1475))
+(or x1474 (not x1475) x1475 (not x1797))
+(or x1798 (not x1799))
+(or x1798 x1800)
+(or x1799 (not x1800) (not x1798))
+(or (not x1798) (not x1797) x1801)
+(or (not x1801) x1798)
+(or (not x1801) x1797)
+(or x1802 (not x1485))
+(or x1802 x1486)
+(or x1802 (not x1486))
+(or x1485 (not x1486) x1486 (not x1802))
+(or x1803 (not x1804))
+(or x1803 x1805)
+(or x1804 (not x1805) (not x1803))
+(or (not x1803) (not x1802) x1806)
+(or (not x1806) x1803)
+(or (not x1806) x1802)
+(or x1807 (not x1492))
+(or x1807 x1493)
+(or x1807 (not x1493))
+(or x1492 (not x1493) x1493 (not x1807))
+(or x1808 (not x1809))
+(or x1808 x1810)
+(or x1809 (not x1810) (not x1808))
+(or (not x1808) (not x1807) x1811)
+(or (not x1811) x1808)
+(or (not x1811) x1807)
+(or x1812 (not x1477))
+(or x1812 (not x1513))
+(or x1477 x1513 (not x1812))
+(or x1813 (not x1520))
+(or x1813 (not x1814))
+(or x1520 x1814 (not x1813))
+(or x1815 (not x1535))
+(or x1815 (not x1816))
+(or x1535 x1816 (not x1815))
+(or x1817 (not x1550))
+(or x1817 (not x1818))
+(or x1550 x1818 (not x1817))
+(or x1819 (not x1565))
+(or x1819 (not x1820))
+(or x1565 x1820 (not x1819))
+(or x1821 (not x1580))
+(or x1821 (not x1822))
+(or x1580 x1822 (not x1821))
+(or x1823 (not x1595))
+(or x1823 (not x1824))
+(or x1595 x1824 (not x1823))
+(or x1825 (not x1610))
+(or x1825 (not x1826))
+(or x1610 x1826 (not x1825))
+(or x1827 (not x1625))
+(or x1827 (not x1828))
+(or x1625 x1828 (not x1827))
+(or x1829 (not x1640))
+(or x1829 (not x1830))
+(or x1640 x1830 (not x1829))
+(or x1831 (not x1655))
+(or x1831 (not x1832))
+(or x1655 x1832 (not x1831))
+(or x1833 (not x1670))
+(or x1833 (not x1834))
+(or x1670 x1834 (not x1833))
+(or x1835 (not x1685))
+(or x1835 (not x1836))
+(or x1685 x1836 (not x1835))
+(or x1837 (not x1700))
+(or x1837 (not x1838))
+(or x1700 x1838 (not x1837))
+(or x1839 (not x1715))
+(or x1839 (not x1840))
+(or x1715 x1840 (not x1839))
+(or x1841 (not x1730))
+(or x1841 (not x1842))
+(or x1730 x1842 (not x1841))
+(or x1843 (not x1765))
+(or x1843 (not x1844))
+(or x1765 x1844 (not x1843))
+(or (not x95) (not x1845) (not x1846) (not x1847) (not x1848) x1849)
+(or (not x1849) x95)
+(or (not x1849) x1845)
+(or (not x1849) x1846)
+(or (not x1849) x1847)
+(or (not x1849) x1848)
+(or (not x83) (not x1846) (not x1845) (not x1507) (not x1850) x1851)
+(or (not x1851) x83)
+(or (not x1851) x1846)
+(or (not x1851) x1845)
+(or (not x1851) x1507)
+(or (not x1851) x1850)
+(or (not x80) (not x1846) (not x1845) (not x1852) (not x1853) (not x1854) (not x1855) (not x1507) x1856)
+(or (not x1856) x80)
+(or (not x1856) x1846)
+(or (not x1856) x1845)
+(or (not x1856) x1852)
+(or (not x1856) x1853)
+(or (not x1856) x1854)
+(or (not x1856) x1855)
+(or (not x1856) x1507)
+(or (not x1857) (not x1858) (not x1845) (not x1507) (not x1508) (not x1509) (not x1508) x1859)
+(or (not x1859) x1857)
+(or (not x1859) x1858)
+(or (not x1859) x1845)
+(or (not x1859) x1507)
+(or (not x1859) x1508)
+(or (not x1859) x1509)
+(or (not x1859) x1508)
+(or x1860 (not x1859))
+(or x1860 (not x1856))
+(or x1860 (not x1851))
+(or x1860 (not x1849))
+(or x1860 (not x1861))
+(or x1859 x1856 x1851 x1849 x1861 (not x1860))
+(or (not x94) (not x1845) (not x1846) (not x1847) (not x1848) x1862)
+(or (not x1862) x94)
+(or (not x1862) x1845)
+(or (not x1862) x1846)
+(or (not x1862) x1847)
+(or (not x1862) x1848)
+(or (not x82) (not x1846) (not x1845) (not x1507) (not x1850) x1863)
+(or (not x1863) x82)
+(or (not x1863) x1846)
+(or (not x1863) x1845)
+(or (not x1863) x1507)
+(or (not x1863) x1850)
+(or (not x95) (not x1846) (not x1845) (not x1852) (not x1853) (not x1854) (not x1855) (not x1507) x1864)
+(or (not x1864) x95)
+(or (not x1864) x1846)
+(or (not x1864) x1845)
+(or (not x1864) x1852)
+(or (not x1864) x1853)
+(or (not x1864) x1854)
+(or (not x1864) x1855)
+(or (not x1864) x1507)
+(or (not x95) (not x1865) (not x1845) (not x1507) (not x1508) (not x1509) (not x1508) x1866)
+(or (not x1866) x95)
+(or (not x1866) x1865)
+(or (not x1866) x1845)
+(or (not x1866) x1507)
+(or (not x1866) x1508)
+(or (not x1866) x1509)
+(or (not x1866) x1508)
+(or x1867 (not x1866))
+(or x1867 (not x1864))
+(or x1867 (not x1863))
+(or x1867 (not x1862))
+(or x1866 x1864 x1863 x1862 (not x1867))
+(or (not x93) (not x1845) (not x1846) (not x1847) (not x1848) x1868)
+(or (not x1868) x93)
+(or (not x1868) x1845)
+(or (not x1868) x1846)
+(or (not x1868) x1847)
+(or (not x1868) x1848)
+(or (not x81) (not x1846) (not x1845) (not x1507) (not x1850) x1869)
+(or (not x1869) x81)
+(or (not x1869) x1846)
+(or (not x1869) x1845)
+(or (not x1869) x1507)
+(or (not x1869) x1850)
+(or (not x94) (not x1846) (not x1845) (not x1852) (not x1853) (not x1854) (not x1855) (not x1507) x1870)
+(or (not x1870) x94)
+(or (not x1870) x1846)
+(or (not x1870) x1845)
+(or (not x1870) x1852)
+(or (not x1870) x1853)
+(or (not x1870) x1854)
+(or (not x1870) x1855)
+(or (not x1870) x1507)
+(or (not x1871) (not x1872) (not x1845) (not x1507) (not x1508) (not x1509) (not x1508) x1873)
+(or (not x1873) x1871)
+(or (not x1873) x1872)
+(or (not x1873) x1845)
+(or (not x1873) x1507)
+(or (not x1873) x1508)
+(or (not x1873) x1509)
+(or (not x1873) x1508)
+(or x1874 (not x1873))
+(or x1874 (not x1870))
+(or x1874 (not x1869))
+(or x1874 (not x1868))
+(or x1873 x1870 x1869 x1868 (not x1874))
+(or (not x92) (not x1845) (not x1846) (not x1847) (not x1848) x1875)
+(or (not x1875) x92)
+(or (not x1875) x1845)
+(or (not x1875) x1846)
+(or (not x1875) x1847)
+(or (not x1875) x1848)
+(or (not x80) (not x1846) (not x1845) (not x1507) (not x1850) x1876)
+(or (not x1876) x80)
+(or (not x1876) x1846)
+(or (not x1876) x1845)
+(or (not x1876) x1507)
+(or (not x1876) x1850)
+(or (not x93) (not x1846) (not x1845) (not x1852) (not x1853) (not x1854) (not x1855) (not x1507) x1877)
+(or (not x1877) x93)
+(or (not x1877) x1846)
+(or (not x1877) x1845)
+(or (not x1877) x1852)
+(or (not x1877) x1853)
+(or (not x1877) x1854)
+(or (not x1877) x1855)
+(or (not x1877) x1507)
+(or (not x1878) (not x1879) (not x1845) (not x1507) (not x1508) (not x1509) (not x1508) x1880)
+(or (not x1880) x1878)
+(or (not x1880) x1879)
+(or (not x1880) x1845)
+(or (not x1880) x1507)
+(or (not x1880) x1508)
+(or (not x1880) x1509)
+(or (not x1880) x1508)
+(or x1881 (not x1880))
+(or x1881 (not x1877))
+(or x1881 (not x1876))
+(or x1881 (not x1875))
+(or x1880 x1877 x1876 x1875 (not x1881))
+(or (not x91) (not x1845) (not x1846) (not x1847) (not x1848) x1882)
+(or (not x1882) x91)
+(or (not x1882) x1845)
+(or (not x1882) x1846)
+(or (not x1882) x1847)
+(or (not x1882) x1848)
+(or (not x95) (not x1846) (not x1845) (not x1507) (not x1850) x1883)
+(or (not x1883) x95)
+(or (not x1883) x1846)
+(or (not x1883) x1845)
+(or (not x1883) x1507)
+(or (not x1883) x1850)
+(or (not x92) (not x1846) (not x1845) (not x1852) (not x1853) (not x1854) (not x1855) (not x1507) x1884)
+(or (not x1884) x92)
+(or (not x1884) x1846)
+(or (not x1884) x1845)
+(or (not x1884) x1852)
+(or (not x1884) x1853)
+(or (not x1884) x1854)
+(or (not x1884) x1855)
+(or (not x1884) x1507)
+(or (not x1885) (not x1886) (not x1845) (not x1507) (not x1508) (not x1509) (not x1508) x1887)
+(or (not x1887) x1885)
+(or (not x1887) x1886)
+(or (not x1887) x1845)
+(or (not x1887) x1507)
+(or (not x1887) x1508)
+(or (not x1887) x1509)
+(or (not x1887) x1508)
+(or x1888 (not x1887))
+(or x1888 (not x1884))
+(or x1888 (not x1883))
+(or x1888 (not x1882))
+(or x1887 x1884 x1883 x1882 (not x1888))
+(or (not x90) (not x1845) (not x1846) (not x1847) (not x1848) x1889)
+(or (not x1889) x90)
+(or (not x1889) x1845)
+(or (not x1889) x1846)
+(or (not x1889) x1847)
+(or (not x1889) x1848)
+(or (not x94) (not x1846) (not x1845) (not x1507) (not x1850) x1890)
+(or (not x1890) x94)
+(or (not x1890) x1846)
+(or (not x1890) x1845)
+(or (not x1890) x1507)
+(or (not x1890) x1850)
+(or (not x91) (not x1846) (not x1845) (not x1852) (not x1853) (not x1854) (not x1855) (not x1507) x1891)
+(or (not x1891) x91)
+(or (not x1891) x1846)
+(or (not x1891) x1845)
+(or (not x1891) x1852)
+(or (not x1891) x1853)
+(or (not x1891) x1854)
+(or (not x1891) x1855)
+(or (not x1891) x1507)
+(or (not x91) (not x1892) (not x1845) (not x1507) (not x1508) (not x1509) (not x1508) x1893)
+(or (not x1893) x91)
+(or (not x1893) x1892)
+(or (not x1893) x1845)
+(or (not x1893) x1507)
+(or (not x1893) x1508)
+(or (not x1893) x1509)
+(or (not x1893) x1508)
+(or x1894 (not x1893))
+(or x1894 (not x1891))
+(or x1894 (not x1890))
+(or x1894 (not x1889))
+(or x1893 x1891 x1890 x1889 (not x1894))
+(or (not x89) (not x1845) (not x1846) (not x1847) (not x1848) x1895)
+(or (not x1895) x89)
+(or (not x1895) x1845)
+(or (not x1895) x1846)
+(or (not x1895) x1847)
+(or (not x1895) x1848)
+(or (not x93) (not x1846) (not x1845) (not x1507) (not x1850) x1896)
+(or (not x1896) x93)
+(or (not x1896) x1846)
+(or (not x1896) x1845)
+(or (not x1896) x1507)
+(or (not x1896) x1850)
+(or (not x90) (not x1846) (not x1845) (not x1852) (not x1853) (not x1854) (not x1855) (not x1507) x1897)
+(or (not x1897) x90)
+(or (not x1897) x1846)
+(or (not x1897) x1845)
+(or (not x1897) x1852)
+(or (not x1897) x1853)
+(or (not x1897) x1854)
+(or (not x1897) x1855)
+(or (not x1897) x1507)
+(or (not x1898) (not x1899) (not x1845) (not x1507) (not x1508) (not x1509) (not x1508) x1900)
+(or (not x1900) x1898)
+(or (not x1900) x1899)
+(or (not x1900) x1845)
+(or (not x1900) x1507)
+(or (not x1900) x1508)
+(or (not x1900) x1509)
+(or (not x1900) x1508)
+(or x1901 (not x1900))
+(or x1901 (not x1897))
+(or x1901 (not x1896))
+(or x1901 (not x1895))
+(or x1900 x1897 x1896 x1895 (not x1901))
+(or (not x88) (not x1845) (not x1846) (not x1847) (not x1848) x1902)
+(or (not x1902) x88)
+(or (not x1902) x1845)
+(or (not x1902) x1846)
+(or (not x1902) x1847)
+(or (not x1902) x1848)
+(or (not x92) (not x1846) (not x1845) (not x1507) (not x1850) x1903)
+(or (not x1903) x92)
+(or (not x1903) x1846)
+(or (not x1903) x1845)
+(or (not x1903) x1507)
+(or (not x1903) x1850)
+(or (not x89) (not x1846) (not x1845) (not x1852) (not x1853) (not x1854) (not x1855) (not x1507) x1904)
+(or (not x1904) x89)
+(or (not x1904) x1846)
+(or (not x1904) x1845)
+(or (not x1904) x1852)
+(or (not x1904) x1853)
+(or (not x1904) x1854)
+(or (not x1904) x1855)
+(or (not x1904) x1507)
+(or (not x1905) (not x1906) (not x1845) (not x1507) (not x1508) (not x1509) (not x1508) x1907)
+(or (not x1907) x1905)
+(or (not x1907) x1906)
+(or (not x1907) x1845)
+(or (not x1907) x1507)
+(or (not x1907) x1508)
+(or (not x1907) x1509)
+(or (not x1907) x1508)
+(or x1908 (not x1907))
+(or x1908 (not x1904))
+(or x1908 (not x1903))
+(or x1908 (not x1902))
+(or x1907 x1904 x1903 x1902 (not x1908))
+(or (not x87) (not x1845) (not x1846) (not x1847) (not x1848) x1909)
+(or (not x1909) x87)
+(or (not x1909) x1845)
+(or (not x1909) x1846)
+(or (not x1909) x1847)
+(or (not x1909) x1848)
+(or (not x91) (not x1846) (not x1845) (not x1507) (not x1850) x1910)
+(or (not x1910) x91)
+(or (not x1910) x1846)
+(or (not x1910) x1845)
+(or (not x1910) x1507)
+(or (not x1910) x1850)
+(or (not x88) (not x1846) (not x1845) (not x1852) (not x1853) (not x1854) (not x1855) (not x1507) x1911)
+(or (not x1911) x88)
+(or (not x1911) x1846)
+(or (not x1911) x1845)
+(or (not x1911) x1852)
+(or (not x1911) x1853)
+(or (not x1911) x1854)
+(or (not x1911) x1855)
+(or (not x1911) x1507)
+(or (not x1912) (not x1913) (not x1845) (not x1507) (not x1508) (not x1509) (not x1508) x1914)
+(or (not x1914) x1912)
+(or (not x1914) x1913)
+(or (not x1914) x1845)
+(or (not x1914) x1507)
+(or (not x1914) x1508)
+(or (not x1914) x1509)
+(or (not x1914) x1508)
+(or x1915 (not x1914))
+(or x1915 (not x1911))
+(or x1915 (not x1910))
+(or x1915 (not x1909))
+(or x1914 x1911 x1910 x1909 (not x1915))
+(or (not x86) (not x1845) (not x1846) (not x1847) (not x1848) x1916)
+(or (not x1916) x86)
+(or (not x1916) x1845)
+(or (not x1916) x1846)
+(or (not x1916) x1847)
+(or (not x1916) x1848)
+(or (not x90) (not x1846) (not x1845) (not x1507) (not x1850) x1917)
+(or (not x1917) x90)
+(or (not x1917) x1846)
+(or (not x1917) x1845)
+(or (not x1917) x1507)
+(or (not x1917) x1850)
+(or (not x87) (not x1846) (not x1845) (not x1852) (not x1853) (not x1854) (not x1855) (not x1507) x1918)
+(or (not x1918) x87)
+(or (not x1918) x1846)
+(or (not x1918) x1845)
+(or (not x1918) x1852)
+(or (not x1918) x1853)
+(or (not x1918) x1854)
+(or (not x1918) x1855)
+(or (not x1918) x1507)
+(or (not x87) (not x1919) (not x1845) (not x1507) (not x1508) (not x1509) (not x1508) x1920)
+(or (not x1920) x87)
+(or (not x1920) x1919)
+(or (not x1920) x1845)
+(or (not x1920) x1507)
+(or (not x1920) x1508)
+(or (not x1920) x1509)
+(or (not x1920) x1508)
+(or x1921 (not x1920))
+(or x1921 (not x1918))
+(or x1921 (not x1917))
+(or x1921 (not x1916))
+(or x1920 x1918 x1917 x1916 (not x1921))
+(or (not x85) (not x1845) (not x1846) (not x1847) (not x1848) x1922)
+(or (not x1922) x85)
+(or (not x1922) x1845)
+(or (not x1922) x1846)
+(or (not x1922) x1847)
+(or (not x1922) x1848)
+(or (not x89) (not x1846) (not x1845) (not x1507) (not x1850) x1923)
+(or (not x1923) x89)
+(or (not x1923) x1846)
+(or (not x1923) x1845)
+(or (not x1923) x1507)
+(or (not x1923) x1850)
+(or (not x86) (not x1846) (not x1845) (not x1852) (not x1853) (not x1854) (not x1855) (not x1507) x1924)
+(or (not x1924) x86)
+(or (not x1924) x1846)
+(or (not x1924) x1845)
+(or (not x1924) x1852)
+(or (not x1924) x1853)
+(or (not x1924) x1854)
+(or (not x1924) x1855)
+(or (not x1924) x1507)
+(or (not x1925) (not x1926) (not x1845) (not x1507) (not x1508) (not x1509) (not x1508) x1927)
+(or (not x1927) x1925)
+(or (not x1927) x1926)
+(or (not x1927) x1845)
+(or (not x1927) x1507)
+(or (not x1927) x1508)
+(or (not x1927) x1509)
+(or (not x1927) x1508)
+(or x1928 (not x1927))
+(or x1928 (not x1924))
+(or x1928 (not x1923))
+(or x1928 (not x1922))
+(or x1927 x1924 x1923 x1922 (not x1928))
+(or (not x84) (not x1845) (not x1846) (not x1847) (not x1848) x1929)
+(or (not x1929) x84)
+(or (not x1929) x1845)
+(or (not x1929) x1846)
+(or (not x1929) x1847)
+(or (not x1929) x1848)
+(or (not x88) (not x1846) (not x1845) (not x1507) (not x1850) x1930)
+(or (not x1930) x88)
+(or (not x1930) x1846)
+(or (not x1930) x1845)
+(or (not x1930) x1507)
+(or (not x1930) x1850)
+(or (not x85) (not x1846) (not x1845) (not x1852) (not x1853) (not x1854) (not x1855) (not x1507) x1931)
+(or (not x1931) x85)
+(or (not x1931) x1846)
+(or (not x1931) x1845)
+(or (not x1931) x1852)
+(or (not x1931) x1853)
+(or (not x1931) x1854)
+(or (not x1931) x1855)
+(or (not x1931) x1507)
+(or (not x1932) (not x1933) (not x1845) (not x1507) (not x1508) (not x1509) (not x1508) x1934)
+(or (not x1934) x1932)
+(or (not x1934) x1933)
+(or (not x1934) x1845)
+(or (not x1934) x1507)
+(or (not x1934) x1508)
+(or (not x1934) x1509)
+(or (not x1934) x1508)
+(or x1935 (not x1934))
+(or x1935 (not x1931))
+(or x1935 (not x1930))
+(or x1935 (not x1929))
+(or x1934 x1931 x1930 x1929 (not x1935))
+(or (not x83) (not x1845) (not x1846) (not x1847) (not x1848) x1936)
+(or (not x1936) x83)
+(or (not x1936) x1845)
+(or (not x1936) x1846)
+(or (not x1936) x1847)
+(or (not x1936) x1848)
+(or (not x87) (not x1846) (not x1845) (not x1507) (not x1850) x1937)
+(or (not x1937) x87)
+(or (not x1937) x1846)
+(or (not x1937) x1845)
+(or (not x1937) x1507)
+(or (not x1937) x1850)
+(or (not x84) (not x1846) (not x1845) (not x1852) (not x1853) (not x1854) (not x1855) (not x1507) x1938)
+(or (not x1938) x84)
+(or (not x1938) x1846)
+(or (not x1938) x1845)
+(or (not x1938) x1852)
+(or (not x1938) x1853)
+(or (not x1938) x1854)
+(or (not x1938) x1855)
+(or (not x1938) x1507)
+(or (not x1939) (not x1940) (not x1845) (not x1507) (not x1508) (not x1509) (not x1508) x1941)
+(or (not x1941) x1939)
+(or (not x1941) x1940)
+(or (not x1941) x1845)
+(or (not x1941) x1507)
+(or (not x1941) x1508)
+(or (not x1941) x1509)
+(or (not x1941) x1508)
+(or x1942 (not x1941))
+(or x1942 (not x1938))
+(or x1942 (not x1937))
+(or x1942 (not x1936))
+(or x1941 x1938 x1937 x1936 (not x1942))
+(or (not x82) (not x1845) (not x1846) (not x1847) (not x1848) x1943)
+(or (not x1943) x82)
+(or (not x1943) x1845)
+(or (not x1943) x1846)
+(or (not x1943) x1847)
+(or (not x1943) x1848)
+(or (not x86) (not x1846) (not x1845) (not x1507) (not x1850) x1944)
+(or (not x1944) x86)
+(or (not x1944) x1846)
+(or (not x1944) x1845)
+(or (not x1944) x1507)
+(or (not x1944) x1850)
+(or (not x83) (not x1846) (not x1845) (not x1852) (not x1853) (not x1854) (not x1855) (not x1507) x1945)
+(or (not x1945) x83)
+(or (not x1945) x1846)
+(or (not x1945) x1845)
+(or (not x1945) x1852)
+(or (not x1945) x1853)
+(or (not x1945) x1854)
+(or (not x1945) x1855)
+(or (not x1945) x1507)
+(or (not x83) (not x1946) (not x1845) (not x1507) (not x1508) (not x1509) (not x1508) x1947)
+(or (not x1947) x83)
+(or (not x1947) x1946)
+(or (not x1947) x1845)
+(or (not x1947) x1507)
+(or (not x1947) x1508)
+(or (not x1947) x1509)
+(or (not x1947) x1508)
+(or x1948 (not x1947))
+(or x1948 (not x1945))
+(or x1948 (not x1944))
+(or x1948 (not x1943))
+(or x1947 x1945 x1944 x1943 (not x1948))
+(or (not x81) (not x1845) (not x1846) (not x1847) (not x1848) x1949)
+(or (not x1949) x81)
+(or (not x1949) x1845)
+(or (not x1949) x1846)
+(or (not x1949) x1847)
+(or (not x1949) x1848)
+(or (not x85) (not x1846) (not x1845) (not x1507) (not x1850) x1950)
+(or (not x1950) x85)
+(or (not x1950) x1846)
+(or (not x1950) x1845)
+(or (not x1950) x1507)
+(or (not x1950) x1850)
+(or (not x82) (not x1846) (not x1845) (not x1852) (not x1853) (not x1854) (not x1855) (not x1507) x1951)
+(or (not x1951) x82)
+(or (not x1951) x1846)
+(or (not x1951) x1845)
+(or (not x1951) x1852)
+(or (not x1951) x1853)
+(or (not x1951) x1854)
+(or (not x1951) x1855)
+(or (not x1951) x1507)
+(or (not x1952) (not x1953) (not x1845) (not x1507) (not x1508) (not x1509) (not x1508) x1954)
+(or (not x1954) x1952)
+(or (not x1954) x1953)
+(or (not x1954) x1845)
+(or (not x1954) x1507)
+(or (not x1954) x1508)
+(or (not x1954) x1509)
+(or (not x1954) x1508)
+(or x1955 (not x1954))
+(or x1955 (not x1951))
+(or x1955 (not x1950))
+(or x1955 (not x1949))
+(or x1954 x1951 x1950 x1949 (not x1955))
+(or x1848 (not x1956))
+(or x1848 (not x1861))
+(or x1848 (not x1957))
+(or x1848 (not x1958))
+(or x1848 (not x1959))
+(or x1848 (not x1960))
+(or x1848 x1507)
+(or x1956 x1861 x1957 x1958 x1959 x1960 (not x1507) (not x1848))
+(or x95 x94 x93 x92 x91 x90 x89 x88 x87 x86 x85 x84 x83 x82 x81 x80 x1861)
+(or (not x1861) (not x95))
+(or (not x1861) (not x94))
+(or (not x1861) (not x93))
+(or (not x1861) (not x92))
+(or (not x1861) (not x91))
+(or (not x1861) (not x90))
+(or (not x1861) (not x89))
+(or (not x1861) (not x88))
+(or (not x1861) (not x87))
+(or (not x1861) (not x86))
+(or (not x1861) (not x85))
+(or (not x1861) (not x84))
+(or (not x1861) (not x83))
+(or (not x1861) (not x82))
+(or (not x1861) (not x81))
+(or (not x1861) (not x80))
+(or x1847 (not x1956))
+(or x1847 (not x1861))
+(or x1847 x1507)
+(or x1847 (not x1961))
+(or x1956 x1861 (not x1507) x1961 (not x1847))
+(or (not x80) (not x1845) (not x1846) (not x1847) (not x1848) x1962)
+(or (not x1962) x80)
+(or (not x1962) x1845)
+(or (not x1962) x1846)
+(or (not x1962) x1847)
+(or (not x1962) x1848)
+(or x1963 (not x81) x1964)
+(or (not x1964) (not x1963))
+(or (not x1964) x81)
+(or x1953 x1963 (not x82) x1965)
+(or (not x1965) (not x1953))
+(or (not x1965) (not x1963))
+(or (not x1965) x82)
+(or x1946 x1953 x1963 (not x83) x1966)
+(or (not x1966) (not x1946))
+(or (not x1966) (not x1953))
+(or (not x1966) (not x1963))
+(or (not x1966) x83)
+(or x1857 (not x80))
+(or x1857 (not x1966))
+(or x1857 (not x1965))
+(or x1857 (not x1964))
+(or x80 x1966 x1965 x1964 (not x1857))
+(or (not x1857) (not x1858) (not x1507) (not x1508) (not x1509) (not x1508) x1967)
+(or (not x1967) x1857)
+(or (not x1967) x1858)
+(or (not x1967) x1507)
+(or (not x1967) x1508)
+(or (not x1967) x1509)
+(or (not x1967) x1508)
+(or x1968 (not x1967))
+(or x1968 x1858)
+(or x1967 (not x1858) (not x1968))
+(or (not x1969) (not x1963) (not x1507) (not x1508) (not x1509) (not x1508) x1970)
+(or (not x1970) x1969)
+(or (not x1970) x1963)
+(or (not x1970) x1507)
+(or (not x1970) x1508)
+(or (not x1970) x1509)
+(or (not x1970) x1508)
+(or x1971 (not x1970))
+(or x1971 x1963)
+(or x1970 (not x1963) (not x1971))
+(or x1946 (not x83) x1972)
+(or (not x1972) (not x1946))
+(or (not x1972) x83)
+(or x1952 (not x82))
+(or x1952 (not x1972))
+(or x82 x1972 (not x1952))
+(or (not x1952) (not x1953) (not x1507) (not x1508) (not x1509) (not x1508) x1973)
+(or (not x1973) x1952)
+(or (not x1973) x1953)
+(or (not x1973) x1507)
+(or (not x1973) x1508)
+(or (not x1973) x1509)
+(or (not x1973) x1508)
+(or x1974 (not x1973))
+(or x1974 x1953)
+(or x1973 (not x1953) (not x1974))
+(or (not x83) (not x1946) (not x1507) (not x1508) (not x1509) (not x1508) x1975)
+(or (not x1975) x83)
+(or (not x1975) x1946)
+(or (not x1975) x1507)
+(or (not x1975) x1508)
+(or (not x1975) x1509)
+(or (not x1975) x1508)
+(or x1976 (not x1975))
+(or x1976 x1946)
+(or x1975 (not x1946) (not x1976))
+(or (not x1976) (not x1974) (not x1971) (not x1968) (not x83) x1960)
+(or (not x1960) x1976)
+(or (not x1960) x1974)
+(or (not x1960) x1971)
+(or (not x1960) x1968)
+(or (not x1960) x83)
+(or x1933 (not x85) x1977)
+(or (not x1977) (not x1933))
+(or (not x1977) x85)
+(or x1926 x1933 (not x86) x1978)
+(or (not x1978) (not x1926))
+(or (not x1978) (not x1933))
+(or (not x1978) x86)
+(or x1919 x1926 x1933 (not x87) x1979)
+(or (not x1979) (not x1919))
+(or (not x1979) (not x1926))
+(or (not x1979) (not x1933))
+(or (not x1979) x87)
+(or x1939 (not x84))
+(or x1939 (not x1979))
+(or x1939 (not x1978))
+(or x1939 (not x1977))
+(or x84 x1979 x1978 x1977 (not x1939))
+(or (not x1939) (not x1940) (not x1507) (not x1508) (not x1509) (not x1508) x1980)
+(or (not x1980) x1939)
+(or (not x1980) x1940)
+(or (not x1980) x1507)
+(or (not x1980) x1508)
+(or (not x1980) x1509)
+(or (not x1980) x1508)
+(or x1981 (not x1980))
+(or x1981 x1940)
+(or x1980 (not x1940) (not x1981))
+(or x1926 (not x86) x1982)
+(or (not x1982) (not x1926))
+(or (not x1982) x86)
+(or x1919 x1926 (not x87) x1983)
+(or (not x1983) (not x1919))
+(or (not x1983) (not x1926))
+(or (not x1983) x87)
+(or x1932 (not x85))
+(or x1932 (not x1983))
+(or x1932 (not x1982))
+(or x85 x1983 x1982 (not x1932))
+(or (not x1932) (not x1933) (not x1507) (not x1508) (not x1509) (not x1508) x1984)
+(or (not x1984) x1932)
+(or (not x1984) x1933)
+(or (not x1984) x1507)
+(or (not x1984) x1508)
+(or (not x1984) x1509)
+(or (not x1984) x1508)
+(or x1985 (not x1984))
+(or x1985 x1933)
+(or x1984 (not x1933) (not x1985))
+(or x1919 (not x87) x1986)
+(or (not x1986) (not x1919))
+(or (not x1986) x87)
+(or x1925 (not x86))
+(or x1925 (not x1986))
+(or x86 x1986 (not x1925))
+(or (not x1925) (not x1926) (not x1507) (not x1508) (not x1509) (not x1508) x1987)
+(or (not x1987) x1925)
+(or (not x1987) x1926)
+(or (not x1987) x1507)
+(or (not x1987) x1508)
+(or (not x1987) x1509)
+(or (not x1987) x1508)
+(or x1988 (not x1987))
+(or x1988 x1926)
+(or x1987 (not x1926) (not x1988))
+(or (not x87) (not x1919) (not x1507) (not x1508) (not x1509) (not x1508) x1989)
+(or (not x1989) x87)
+(or (not x1989) x1919)
+(or (not x1989) x1507)
+(or (not x1989) x1508)
+(or (not x1989) x1509)
+(or (not x1989) x1508)
+(or x1990 (not x1989))
+(or x1990 x1919)
+(or x1989 (not x1919) (not x1990))
+(or (not x1990) (not x1988) (not x1985) (not x1981) (not x87) x1959)
+(or (not x1959) x1990)
+(or (not x1959) x1988)
+(or (not x1959) x1985)
+(or (not x1959) x1981)
+(or (not x1959) x87)
+(or x1906 (not x89) x1991)
+(or (not x1991) (not x1906))
+(or (not x1991) x89)
+(or x1899 x1906 (not x90) x1992)
+(or (not x1992) (not x1899))
+(or (not x1992) (not x1906))
+(or (not x1992) x90)
+(or x1892 x1899 x1906 (not x91) x1993)
+(or (not x1993) (not x1892))
+(or (not x1993) (not x1899))
+(or (not x1993) (not x1906))
+(or (not x1993) x91)
+(or x1912 (not x88))
+(or x1912 (not x1993))
+(or x1912 (not x1992))
+(or x1912 (not x1991))
+(or x88 x1993 x1992 x1991 (not x1912))
+(or (not x1912) (not x1913) (not x1507) (not x1508) (not x1509) (not x1508) x1994)
+(or (not x1994) x1912)
+(or (not x1994) x1913)
+(or (not x1994) x1507)
+(or (not x1994) x1508)
+(or (not x1994) x1509)
+(or (not x1994) x1508)
+(or x1995 (not x1994))
+(or x1995 x1913)
+(or x1994 (not x1913) (not x1995))
+(or x1899 (not x90) x1996)
+(or (not x1996) (not x1899))
+(or (not x1996) x90)
+(or x1892 x1899 (not x91) x1997)
+(or (not x1997) (not x1892))
+(or (not x1997) (not x1899))
+(or (not x1997) x91)
+(or x1905 (not x89))
+(or x1905 (not x1997))
+(or x1905 (not x1996))
+(or x89 x1997 x1996 (not x1905))
+(or (not x1905) (not x1906) (not x1507) (not x1508) (not x1509) (not x1508) x1998)
+(or (not x1998) x1905)
+(or (not x1998) x1906)
+(or (not x1998) x1507)
+(or (not x1998) x1508)
+(or (not x1998) x1509)
+(or (not x1998) x1508)
+(or x1999 (not x1998))
+(or x1999 x1906)
+(or x1998 (not x1906) (not x1999))
+(or x1892 (not x91) x2000)
+(or (not x2000) (not x1892))
+(or (not x2000) x91)
+(or x1898 (not x90))
+(or x1898 (not x2000))
+(or x90 x2000 (not x1898))
+(or (not x1898) (not x1899) (not x1507) (not x1508) (not x1509) (not x1508) x2001)
+(or (not x2001) x1898)
+(or (not x2001) x1899)
+(or (not x2001) x1507)
+(or (not x2001) x1508)
+(or (not x2001) x1509)
+(or (not x2001) x1508)
+(or x2002 (not x2001))
+(or x2002 x1899)
+(or x2001 (not x1899) (not x2002))
+(or (not x91) (not x1892) (not x1507) (not x1508) (not x1509) (not x1508) x2003)
+(or (not x2003) x91)
+(or (not x2003) x1892)
+(or (not x2003) x1507)
+(or (not x2003) x1508)
+(or (not x2003) x1509)
+(or (not x2003) x1508)
+(or x2004 (not x2003))
+(or x2004 x1892)
+(or x2003 (not x1892) (not x2004))
+(or (not x2004) (not x2002) (not x1999) (not x1995) (not x91) x1958)
+(or (not x1958) x2004)
+(or (not x1958) x2002)
+(or (not x1958) x1999)
+(or (not x1958) x1995)
+(or (not x1958) x91)
+(or x1879 (not x93) x2005)
+(or (not x2005) (not x1879))
+(or (not x2005) x93)
+(or x1872 x1879 (not x94) x2006)
+(or (not x2006) (not x1872))
+(or (not x2006) (not x1879))
+(or (not x2006) x94)
+(or x1865 x1872 x1879 (not x95) x2007)
+(or (not x2007) (not x1865))
+(or (not x2007) (not x1872))
+(or (not x2007) (not x1879))
+(or (not x2007) x95)
+(or x1885 (not x92))
+(or x1885 (not x2007))
+(or x1885 (not x2006))
+(or x1885 (not x2005))
+(or x92 x2007 x2006 x2005 (not x1885))
+(or (not x1885) (not x1886) (not x1507) (not x1508) (not x1509) (not x1508) x2008)
+(or (not x2008) x1885)
+(or (not x2008) x1886)
+(or (not x2008) x1507)
+(or (not x2008) x1508)
+(or (not x2008) x1509)
+(or (not x2008) x1508)
+(or x2009 (not x2008))
+(or x2009 x1886)
+(or x2008 (not x1886) (not x2009))
+(or x1872 (not x94) x2010)
+(or (not x2010) (not x1872))
+(or (not x2010) x94)
+(or x1865 x1872 (not x95) x2011)
+(or (not x2011) (not x1865))
+(or (not x2011) (not x1872))
+(or (not x2011) x95)
+(or x1878 (not x93))
+(or x1878 (not x2011))
+(or x1878 (not x2010))
+(or x93 x2011 x2010 (not x1878))
+(or (not x1878) (not x1879) (not x1507) (not x1508) (not x1509) (not x1508) x2012)
+(or (not x2012) x1878)
+(or (not x2012) x1879)
+(or (not x2012) x1507)
+(or (not x2012) x1508)
+(or (not x2012) x1509)
+(or (not x2012) x1508)
+(or x2013 (not x2012))
+(or x2013 x1879)
+(or x2012 (not x1879) (not x2013))
+(or x1865 (not x95) x2014)
+(or (not x2014) (not x1865))
+(or (not x2014) x95)
+(or x1871 (not x94))
+(or x1871 (not x2014))
+(or x94 x2014 (not x1871))
+(or (not x1871) (not x1872) (not x1507) (not x1508) (not x1509) (not x1508) x2015)
+(or (not x2015) x1871)
+(or (not x2015) x1872)
+(or (not x2015) x1507)
+(or (not x2015) x1508)
+(or (not x2015) x1509)
+(or (not x2015) x1508)
+(or x2016 (not x2015))
+(or x2016 x1872)
+(or x2015 (not x1872) (not x2016))
+(or (not x95) (not x1865) (not x1507) (not x1508) (not x1509) (not x1508) x2017)
+(or (not x2017) x95)
+(or (not x2017) x1865)
+(or (not x2017) x1507)
+(or (not x2017) x1508)
+(or (not x2017) x1509)
+(or (not x2017) x1508)
+(or x2018 (not x2017))
+(or x2018 x1865)
+(or x2017 (not x1865) (not x2018))
+(or (not x2018) (not x2016) (not x2013) (not x2009) (not x95) x1957)
+(or (not x1957) x2018)
+(or (not x1957) x2016)
+(or (not x1957) x2013)
+(or (not x1957) x2009)
+(or (not x1957) x95)
+(or x1850 (not x1957))
+(or x1850 (not x1958))
+(or x1850 (not x1959))
+(or x1850 (not x1960))
+(or x1957 x1958 x1959 x1960 (not x1850))
+(or (not x84) (not x1846) (not x1845) (not x1507) (not x1850) x2019)
+(or (not x2019) x84)
+(or (not x2019) x1846)
+(or (not x2019) x1845)
+(or (not x2019) x1507)
+(or (not x2019) x1850)
+(or x2020 (not x1963))
+(or x2020 x81)
+(or x1963 (not x81) (not x2020))
+(or x2021 (not x1953))
+(or x2021 (not x1963))
+(or x2021 x82)
+(or x1953 x1963 (not x82) (not x2021))
+(or x2022 (not x1946))
+(or x2022 (not x1953))
+(or x2022 (not x1963))
+(or x2022 x83)
+(or x1946 x1953 x1963 (not x83) (not x2022))
+(or x80 (not x2022) (not x2021) (not x2020) x2023)
+(or (not x2023) (not x80))
+(or (not x2023) x2022)
+(or (not x2023) x2021)
+(or (not x2023) x2020)
+(or x2024 (not x2023))
+(or x2024 x1858)
+(or x2024 x1507)
+(or x2024 (not x2025))
+(or x2024 (not x2026))
+(or x2024 (not x2025))
+(or x2023 (not x1858) (not x1507) x2025 x2026 x2025 (not x2024))
+(or (not x2024) (not x1858) x1814)
+(or (not x1814) x2024)
+(or (not x1814) x1858)
+(or x2027 (not x1953))
+(or x2027 x82)
+(or x1953 (not x82) (not x2027))
+(or x2028 (not x1946))
+(or x2028 (not x1953))
+(or x2028 x83)
+(or x1946 x1953 (not x83) (not x2028))
+(or x81 (not x2028) (not x2027) x2029)
+(or (not x2029) (not x81))
+(or (not x2029) x2028)
+(or (not x2029) x2027)
+(or x2030 (not x2029))
+(or x2030 x1963)
+(or x2030 x1507)
+(or x2030 (not x2025))
+(or x2030 (not x2026))
+(or x2030 (not x2025))
+(or x2029 (not x1963) (not x1507) x2025 x2026 x2025 (not x2030))
+(or (not x2030) (not x1963) x1844)
+(or (not x1844) x2030)
+(or (not x1844) x1963)
+(or x2031 (not x1946))
+(or x2031 x83)
+(or x1946 (not x83) (not x2031))
+(or x82 (not x2031) x2032)
+(or (not x2032) (not x82))
+(or (not x2032) x2031)
+(or x2033 (not x2032))
+(or x2033 x1953)
+(or x2033 x1507)
+(or x2033 (not x2025))
+(or x2033 (not x2026))
+(or x2033 (not x2025))
+(or x2032 (not x1953) (not x1507) x2025 x2026 x2025 (not x2033))
+(or (not x2033) (not x1953) x1842)
+(or (not x1842) x2033)
+(or (not x1842) x1953)
+(or x2034 x83)
+(or x2034 x1946)
+(or x2034 x1507)
+(or x2034 (not x2025))
+(or x2034 (not x2026))
+(or x2034 (not x2025))
+(or (not x83) (not x1946) (not x1507) x2025 x2026 x2025 (not x2034))
+(or (not x2034) (not x1946) x1840)
+(or (not x1840) x2034)
+(or (not x1840) x1946)
+(or x1855 (not x1840))
+(or x1855 (not x1842))
+(or x1855 (not x1844))
+(or x1855 (not x1814))
+(or x1855 x83)
+(or x1840 x1842 x1844 x1814 (not x83) (not x1855))
+(or x2035 (not x1933))
+(or x2035 x85)
+(or x1933 (not x85) (not x2035))
+(or x2036 (not x1926))
+(or x2036 (not x1933))
+(or x2036 x86)
+(or x1926 x1933 (not x86) (not x2036))
+(or x2037 (not x1919))
+(or x2037 (not x1926))
+(or x2037 (not x1933))
+(or x2037 x87)
+(or x1919 x1926 x1933 (not x87) (not x2037))
+(or x84 (not x2037) (not x2036) (not x2035) x2038)
+(or (not x2038) (not x84))
+(or (not x2038) x2037)
+(or (not x2038) x2036)
+(or (not x2038) x2035)
+(or x2039 (not x2038))
+(or x2039 x1940)
+(or x2039 x1507)
+(or x2039 (not x2025))
+(or x2039 (not x2026))
+(or x2039 (not x2025))
+(or x2038 (not x1940) (not x1507) x2025 x2026 x2025 (not x2039))
+(or (not x2039) (not x1940) x1838)
+(or (not x1838) x2039)
+(or (not x1838) x1940)
+(or x2040 (not x1926))
+(or x2040 x86)
+(or x1926 (not x86) (not x2040))
+(or x2041 (not x1919))
+(or x2041 (not x1926))
+(or x2041 x87)
+(or x1919 x1926 (not x87) (not x2041))
+(or x85 (not x2041) (not x2040) x2042)
+(or (not x2042) (not x85))
+(or (not x2042) x2041)
+(or (not x2042) x2040)
+(or x2043 (not x2042))
+(or x2043 x1933)
+(or x2043 x1507)
+(or x2043 (not x2025))
+(or x2043 (not x2026))
+(or x2043 (not x2025))
+(or x2042 (not x1933) (not x1507) x2025 x2026 x2025 (not x2043))
+(or (not x2043) (not x1933) x1836)
+(or (not x1836) x2043)
+(or (not x1836) x1933)
+(or x2044 (not x1919))
+(or x2044 x87)
+(or x1919 (not x87) (not x2044))
+(or x86 (not x2044) x2045)
+(or (not x2045) (not x86))
+(or (not x2045) x2044)
+(or x2046 (not x2045))
+(or x2046 x1926)
+(or x2046 x1507)
+(or x2046 (not x2025))
+(or x2046 (not x2026))
+(or x2046 (not x2025))
+(or x2045 (not x1926) (not x1507) x2025 x2026 x2025 (not x2046))
+(or (not x2046) (not x1926) x1834)
+(or (not x1834) x2046)
+(or (not x1834) x1926)
+(or x2047 x87)
+(or x2047 x1919)
+(or x2047 x1507)
+(or x2047 (not x2025))
+(or x2047 (not x2026))
+(or x2047 (not x2025))
+(or (not x87) (not x1919) (not x1507) x2025 x2026 x2025 (not x2047))
+(or (not x2047) (not x1919) x1832)
+(or (not x1832) x2047)
+(or (not x1832) x1919)
+(or x1854 (not x1832))
+(or x1854 (not x1834))
+(or x1854 (not x1836))
+(or x1854 (not x1838))
+(or x1854 x87)
+(or x1832 x1834 x1836 x1838 (not x87) (not x1854))
+(or x2048 (not x1906))
+(or x2048 x89)
+(or x1906 (not x89) (not x2048))
+(or x2049 (not x1899))
+(or x2049 (not x1906))
+(or x2049 x90)
+(or x1899 x1906 (not x90) (not x2049))
+(or x2050 (not x1892))
+(or x2050 (not x1899))
+(or x2050 (not x1906))
+(or x2050 x91)
+(or x1892 x1899 x1906 (not x91) (not x2050))
+(or x88 (not x2050) (not x2049) (not x2048) x2051)
+(or (not x2051) (not x88))
+(or (not x2051) x2050)
+(or (not x2051) x2049)
+(or (not x2051) x2048)
+(or x2052 (not x2051))
+(or x2052 x1913)
+(or x2052 x1507)
+(or x2052 (not x2025))
+(or x2052 (not x2026))
+(or x2052 (not x2025))
+(or x2051 (not x1913) (not x1507) x2025 x2026 x2025 (not x2052))
+(or (not x2052) (not x1913) x1830)
+(or (not x1830) x2052)
+(or (not x1830) x1913)
+(or x2053 (not x1899))
+(or x2053 x90)
+(or x1899 (not x90) (not x2053))
+(or x2054 (not x1892))
+(or x2054 (not x1899))
+(or x2054 x91)
+(or x1892 x1899 (not x91) (not x2054))
+(or x89 (not x2054) (not x2053) x2055)
+(or (not x2055) (not x89))
+(or (not x2055) x2054)
+(or (not x2055) x2053)
+(or x2056 (not x2055))
+(or x2056 x1906)
+(or x2056 x1507)
+(or x2056 (not x2025))
+(or x2056 (not x2026))
+(or x2056 (not x2025))
+(or x2055 (not x1906) (not x1507) x2025 x2026 x2025 (not x2056))
+(or (not x2056) (not x1906) x1828)
+(or (not x1828) x2056)
+(or (not x1828) x1906)
+(or x2057 (not x1892))
+(or x2057 x91)
+(or x1892 (not x91) (not x2057))
+(or x90 (not x2057) x2058)
+(or (not x2058) (not x90))
+(or (not x2058) x2057)
+(or x2059 (not x2058))
+(or x2059 x1899)
+(or x2059 x1507)
+(or x2059 (not x2025))
+(or x2059 (not x2026))
+(or x2059 (not x2025))
+(or x2058 (not x1899) (not x1507) x2025 x2026 x2025 (not x2059))
+(or (not x2059) (not x1899) x1826)
+(or (not x1826) x2059)
+(or (not x1826) x1899)
+(or x2060 x91)
+(or x2060 x1892)
+(or x2060 x1507)
+(or x2060 (not x2025))
+(or x2060 (not x2026))
+(or x2060 (not x2025))
+(or (not x91) (not x1892) (not x1507) x2025 x2026 x2025 (not x2060))
+(or (not x2060) (not x1892) x1824)
+(or (not x1824) x2060)
+(or (not x1824) x1892)
+(or x1853 (not x1824))
+(or x1853 (not x1826))
+(or x1853 (not x1828))
+(or x1853 (not x1830))
+(or x1853 x91)
+(or x1824 x1826 x1828 x1830 (not x91) (not x1853))
+(or x2061 (not x1879))
+(or x2061 x93)
+(or x1879 (not x93) (not x2061))
+(or x2062 (not x1872))
+(or x2062 (not x1879))
+(or x2062 x94)
+(or x1872 x1879 (not x94) (not x2062))
+(or x2063 (not x1865))
+(or x2063 (not x1872))
+(or x2063 (not x1879))
+(or x2063 x95)
+(or x1865 x1872 x1879 (not x95) (not x2063))
+(or x92 (not x2063) (not x2062) (not x2061) x2064)
+(or (not x2064) (not x92))
+(or (not x2064) x2063)
+(or (not x2064) x2062)
+(or (not x2064) x2061)
+(or x2065 (not x2064))
+(or x2065 x1886)
+(or x2065 x1507)
+(or x2065 (not x2025))
+(or x2065 (not x2026))
+(or x2065 (not x2025))
+(or x2064 (not x1886) (not x1507) x2025 x2026 x2025 (not x2065))
+(or (not x2065) (not x1886) x1822)
+(or (not x1822) x2065)
+(or (not x1822) x1886)
+(or x2066 (not x1872))
+(or x2066 x94)
+(or x1872 (not x94) (not x2066))
+(or x2067 (not x1865))
+(or x2067 (not x1872))
+(or x2067 x95)
+(or x1865 x1872 (not x95) (not x2067))
+(or x93 (not x2067) (not x2066) x2068)
+(or (not x2068) (not x93))
+(or (not x2068) x2067)
+(or (not x2068) x2066)
+(or x2069 (not x2068))
+(or x2069 x1879)
+(or x2069 x1507)
+(or x2069 (not x2025))
+(or x2069 (not x2026))
+(or x2069 (not x2025))
+(or x2068 (not x1879) (not x1507) x2025 x2026 x2025 (not x2069))
+(or (not x2069) (not x1879) x1820)
+(or (not x1820) x2069)
+(or (not x1820) x1879)
+(or x2070 (not x1865))
+(or x2070 x95)
+(or x1865 (not x95) (not x2070))
+(or x94 (not x2070) x2071)
+(or (not x2071) (not x94))
+(or (not x2071) x2070)
+(or x2072 (not x2071))
+(or x2072 x1872)
+(or x2072 x1507)
+(or x2072 (not x2025))
+(or x2072 (not x2026))
+(or x2072 (not x2025))
+(or x2071 (not x1872) (not x1507) x2025 x2026 x2025 (not x2072))
+(or (not x2072) (not x1872) x1818)
+(or (not x1818) x2072)
+(or (not x1818) x1872)
+(or x2073 x95)
+(or x2073 x1865)
+(or x2073 x1507)
+(or x2073 (not x2025))
+(or x2073 (not x2026))
+(or x2073 (not x2025))
+(or (not x95) (not x1865) (not x1507) x2025 x2026 x2025 (not x2073))
+(or (not x2073) (not x1865) x1816)
+(or (not x1816) x2073)
+(or (not x1816) x1865)
+(or x1852 (not x1816))
+(or x1852 (not x1818))
+(or x1852 (not x1820))
+(or x1852 (not x1822))
+(or x1852 x95)
+(or x1816 x1818 x1820 x1822 (not x95) (not x1852))
+(or (not x1852) (not x1853) (not x1854) (not x1855) x1961)
+(or (not x1961) x1852)
+(or (not x1961) x1853)
+(or (not x1961) x1854)
+(or (not x1961) x1855)
+(or x2074 x1786)
+(or x2074 x1782)
+(or x2074 x1778)
+(or x2074 x1776)
+(or (not x1786) (not x1782) (not x1778) (not x1776) (not x2074))
+(or x1499 (not x1500) x1794)
+(or (not x1794) (not x1499))
+(or (not x1794) x1500)
+(or x1474 (not x1475) x1799)
+(or (not x1799) (not x1474))
+(or (not x1799) x1475)
+(or x1485 (not x1486) x1804)
+(or (not x1804) (not x1485))
+(or (not x1804) x1486)
+(or x1492 (not x1493) x1809)
+(or (not x1809) (not x1492))
+(or (not x1809) x1493)
+(or x1478 (not x1809))
+(or x1478 (not x1804))
+(or x1478 (not x1799))
+(or x1478 (not x1794))
+(or x1809 x1804 x1799 x1794 (not x1478))
+(or (not x1478) (not x2074) x2026)
+(or (not x2026) x1478)
+(or (not x2026) x2074)
+(or x1946 x1953 x1963 x1858 x2075)
+(or (not x2075) (not x1946))
+(or (not x2075) (not x1953))
+(or (not x2075) (not x1963))
+(or (not x2075) (not x1858))
+(or x83 x82 x81 x80 x2076)
+(or (not x2076) (not x83))
+(or (not x2076) (not x82))
+(or (not x2076) (not x81))
+(or (not x2076) (not x80))
+(or x2077 (not x2076))
+(or x2077 (not x2075))
+(or x2076 x2075 (not x2077))
+(or x1919 x1926 x1933 x1940 x2078)
+(or (not x2078) (not x1919))
+(or (not x2078) (not x1926))
+(or (not x2078) (not x1933))
+(or (not x2078) (not x1940))
+(or x87 x86 x85 x84 x2079)
+(or (not x2079) (not x87))
+(or (not x2079) (not x86))
+(or (not x2079) (not x85))
+(or (not x2079) (not x84))
+(or x2080 (not x2079))
+(or x2080 (not x2078))
+(or x2079 x2078 (not x2080))
+(or x1892 x1899 x1906 x1913 x2081)
+(or (not x2081) (not x1892))
+(or (not x2081) (not x1899))
+(or (not x2081) (not x1906))
+(or (not x2081) (not x1913))
+(or x91 x90 x89 x88 x2082)
+(or (not x2082) (not x91))
+(or (not x2082) (not x90))
+(or (not x2082) (not x89))
+(or (not x2082) (not x88))
+(or x2083 (not x2082))
+(or x2083 (not x2081))
+(or x2082 x2081 (not x2083))
+(or x1865 x1872 x1879 x1886 x2084)
+(or (not x2084) (not x1865))
+(or (not x2084) (not x1872))
+(or (not x2084) (not x1879))
+(or (not x2084) (not x1886))
+(or x95 x94 x93 x92 x2085)
+(or (not x2085) (not x95))
+(or (not x2085) (not x94))
+(or (not x2085) (not x93))
+(or (not x2085) (not x92))
+(or x2086 (not x2085))
+(or x2086 (not x2084))
+(or x2085 x2084 (not x2086))
+(or (not x2086) (not x2083) (not x2080) (not x2077) x2025)
+(or (not x2025) x2086)
+(or (not x2025) x2083)
+(or (not x2025) x2080)
+(or (not x2025) x2077)
+(or x1511 x1507)
+(or x1511 (not x2025))
+(or x1511 (not x2026))
+(or (not x1507) x2025 x2026 (not x1511))
+(or x1846 x1507)
+(or x1846 (not x2025))
+(or x1846 (not x2026))
+(or x1846 (not x2025))
+(or (not x1507) x2025 x2026 x2025 (not x1846))
+(or (not x81) (not x1846) (not x1845) (not x1852) (not x1853) (not x1854) (not x1855) (not x1507) x2087)
+(or (not x2087) x81)
+(or (not x2087) x1846)
+(or (not x2087) x1845)
+(or (not x2087) x1852)
+(or (not x2087) x1853)
+(or (not x2087) x1854)
+(or (not x2087) x1855)
+(or (not x2087) x1507)
+(or (not x1786) (not x1782) (not x1778) (not x1776) x2088)
+(or (not x2088) x1786)
+(or (not x2088) x1782)
+(or (not x2088) x1778)
+(or (not x2088) x1776)
+(or x1750 (not x1499))
+(or x1750 x1500)
+(or x1499 (not x1500) (not x1750))
+(or x1741 (not x1474))
+(or x1741 x1475)
+(or x1474 (not x1475) (not x1741))
+(or x1743 (not x1485))
+(or x1743 x1486)
+(or x1485 (not x1486) (not x1743))
+(or x1745 (not x1492))
+(or x1745 x1493)
+(or x1492 (not x1493) (not x1745))
+(or (not x1745) (not x1743) (not x1741) (not x1750) x1502)
+(or (not x1502) x1745)
+(or (not x1502) x1743)
+(or (not x1502) x1741)
+(or (not x1502) x1750)
+(or x1509 (not x1502))
+(or x1509 (not x2088))
+(or x1502 x2088 (not x1509))
+(or x2089 (not x1946))
+(or x2089 (not x1953))
+(or x2089 (not x1963))
+(or x2089 (not x1858))
+(or x1946 x1953 x1963 x1858 (not x2089))
+(or x2090 (not x83))
+(or x2090 (not x82))
+(or x2090 (not x81))
+(or x2090 (not x80))
+(or x83 x82 x81 x80 (not x2090))
+(or (not x2090) (not x2089) x2091)
+(or (not x2091) x2090)
+(or (not x2091) x2089)
+(or x2092 (not x1919))
+(or x2092 (not x1926))
+(or x2092 (not x1933))
+(or x2092 (not x1940))
+(or x1919 x1926 x1933 x1940 (not x2092))
+(or x2093 (not x87))
+(or x2093 (not x86))
+(or x2093 (not x85))
+(or x2093 (not x84))
+(or x87 x86 x85 x84 (not x2093))
+(or (not x2093) (not x2092) x2094)
+(or (not x2094) x2093)
+(or (not x2094) x2092)
+(or x2095 (not x1892))
+(or x2095 (not x1899))
+(or x2095 (not x1906))
+(or x2095 (not x1913))
+(or x1892 x1899 x1906 x1913 (not x2095))
+(or x2096 (not x91))
+(or x2096 (not x90))
+(or x2096 (not x89))
+(or x2096 (not x88))
+(or x91 x90 x89 x88 (not x2096))
+(or (not x2096) (not x2095) x2097)
+(or (not x2097) x2096)
+(or (not x2097) x2095)
+(or x2098 (not x1865))
+(or x2098 (not x1872))
+(or x2098 (not x1879))
+(or x2098 (not x1886))
+(or x1865 x1872 x1879 x1886 (not x2098))
+(or (not x2099) (not x2098) x2100)
+(or (not x2100) x2099)
+(or (not x2100) x2098)
+(or x1508 (not x2100))
+(or x1508 (not x2097))
+(or x1508 (not x2094))
+(or x1508 (not x2091))
+(or x2100 x2097 x2094 x2091 (not x1508))
+(or (not x1507) (not x1508) (not x1509) (not x1508) x1956)
+(or (not x1956) x1507)
+(or (not x1956) x1508)
+(or (not x1956) x1509)
+(or (not x1956) x1508)
+(or x2099 (not x95))
+(or x2099 (not x94))
+(or x2099 (not x93))
+(or x2099 (not x92))
+(or x95 x94 x93 x92 (not x2099))
+(or x1845 (not x95))
+(or x1845 (not x94))
+(or x1845 (not x93))
+(or x1845 (not x92))
+(or x1845 (not x91))
+(or x1845 (not x90))
+(or x1845 (not x89))
+(or x1845 (not x88))
+(or x1845 (not x87))
+(or x1845 (not x86))
+(or x1845 (not x85))
+(or x1845 (not x84))
+(or x1845 (not x83))
+(or x1845 (not x82))
+(or x1845 (not x81))
+(or x1845 (not x80))
+(or x95 x94 x93 x92 x91 x90 x89 x88 x87 x86 x85 x84 x83 x82 x81 x80 (not x1845))
+(or x1953 (not x82) x2101)
+(or (not x2101) (not x1953))
+(or (not x2101) x82)
+(or x1946 x1953 (not x83) x2102)
+(or (not x2102) (not x1946))
+(or (not x2102) (not x1953))
+(or (not x2102) x83)
+(or x1969 (not x81))
+(or x1969 (not x2102))
+(or x1969 (not x2101))
+(or x81 x2102 x2101 (not x1969))
+(or (not x1969) (not x1963) (not x1845) (not x1507) (not x1508) (not x1509) (not x1508) x2103)
+(or (not x2103) x1969)
+(or (not x2103) x1963)
+(or (not x2103) x1845)
+(or (not x2103) x1507)
+(or (not x2103) x1508)
+(or (not x2103) x1509)
+(or (not x2103) x1508)
+(or x2104 (not x2103))
+(or x2104 (not x2087))
+(or x2104 (not x2019))
+(or x2104 (not x1962))
+(or x2103 x2087 x2019 x1962 (not x2104))
+(or (not x2105) x1521)
+(or (not x2105) (not x1520))
+(or x1521 (not x1520) x1518)
+(or (not x1518) (not x1521))
+(or (not x1518) x1520)
+(or x1521 x1520 x1517)
+(or (not x1517) (not x1521))
+(or (not x1517) (not x1520))
+(or x2106 (not x1517))
+(or x2106 (not x1518))
+(or x1517 x1518 (not x2106))
+(or (not x2107) x1536)
+(or (not x2107) (not x1535))
+(or x1536 (not x1535) x1533)
+(or (not x1533) (not x1536))
+(or (not x1533) x1535)
+(or x1536 x1535 x1532)
+(or (not x1532) (not x1536))
+(or (not x1532) (not x1535))
+(or x2108 (not x1532))
+(or x2108 (not x1533))
+(or x1532 x1533 (not x2108))
+(or (not x2109) x1551)
+(or (not x2109) (not x1550))
+(or x1551 (not x1550) x1548)
+(or (not x1548) (not x1551))
+(or (not x1548) x1550)
+(or x1551 x1550 x1547)
+(or (not x1547) (not x1551))
+(or (not x1547) (not x1550))
+(or x2110 (not x1547))
+(or x2110 (not x1548))
+(or x1547 x1548 (not x2110))
+(or (not x2111) x1566)
+(or (not x2111) (not x1565))
+(or x1566 (not x1565) x1563)
+(or (not x1563) (not x1566))
+(or (not x1563) x1565)
+(or x1566 x1565 x1562)
+(or (not x1562) (not x1566))
+(or (not x1562) (not x1565))
+(or x2112 (not x1562))
+(or x2112 (not x1563))
+(or x1562 x1563 (not x2112))
+(or (not x2113) x1581)
+(or (not x2113) (not x1580))
+(or x1581 (not x1580) x1578)
+(or (not x1578) (not x1581))
+(or (not x1578) x1580)
+(or x1581 x1580 x1577)
+(or (not x1577) (not x1581))
+(or (not x1577) (not x1580))
+(or x2114 (not x1577))
+(or x2114 (not x1578))
+(or x1577 x1578 (not x2114))
+(or (not x2115) x1596)
+(or (not x2115) (not x1595))
+(or x1596 (not x1595) x1593)
+(or (not x1593) (not x1596))
+(or (not x1593) x1595)
+(or x1596 x1595 x1592)
+(or (not x1592) (not x1596))
+(or (not x1592) (not x1595))
+(or x2116 (not x1592))
+(or x2116 (not x1593))
+(or x1592 x1593 (not x2116))
+(or (not x2117) x1611)
+(or (not x2117) (not x1610))
+(or x1611 (not x1610) x1608)
+(or (not x1608) (not x1611))
+(or (not x1608) x1610)
+(or x1611 x1610 x1607)
+(or (not x1607) (not x1611))
+(or (not x1607) (not x1610))
+(or x2118 (not x1607))
+(or x2118 (not x1608))
+(or x1607 x1608 (not x2118))
+(or (not x2119) x1626)
+(or (not x2119) (not x1625))
+(or x1626 (not x1625) x1623)
+(or (not x1623) (not x1626))
+(or (not x1623) x1625)
+(or x1626 x1625 x1622)
+(or (not x1622) (not x1626))
+(or (not x1622) (not x1625))
+(or x2120 (not x1622))
+(or x2120 (not x1623))
+(or x1622 x1623 (not x2120))
+(or (not x2121) x1641)
+(or (not x2121) (not x1640))
+(or x1641 (not x1640) x1638)
+(or (not x1638) (not x1641))
+(or (not x1638) x1640)
+(or x1641 x1640 x1637)
+(or (not x1637) (not x1641))
+(or (not x1637) (not x1640))
+(or x2122 (not x1637))
+(or x2122 (not x1638))
+(or x1637 x1638 (not x2122))
+(or (not x2123) x1656)
+(or (not x2123) (not x1655))
+(or x1656 (not x1655) x1653)
+(or (not x1653) (not x1656))
+(or (not x1653) x1655)
+(or x1656 x1655 x1652)
+(or (not x1652) (not x1656))
+(or (not x1652) (not x1655))
+(or x2124 (not x1652))
+(or x2124 (not x1653))
+(or x1652 x1653 (not x2124))
+(or (not x2125) x1671)
+(or (not x2125) (not x1670))
+(or x1671 (not x1670) x1668)
+(or (not x1668) (not x1671))
+(or (not x1668) x1670)
+(or x1671 x1670 x1667)
+(or (not x1667) (not x1671))
+(or (not x1667) (not x1670))
+(or x2126 (not x1667))
+(or x2126 (not x1668))
+(or x1667 x1668 (not x2126))
+(or (not x2127) x1686)
+(or (not x2127) (not x1685))
+(or x1686 (not x1685) x1683)
+(or (not x1683) (not x1686))
+(or (not x1683) x1685)
+(or x1686 x1685 x1682)
+(or (not x1682) (not x1686))
+(or (not x1682) (not x1685))
+(or x2128 (not x1682))
+(or x2128 (not x1683))
+(or x1682 x1683 (not x2128))
+(or (not x2129) x1701)
+(or (not x2129) (not x1700))
+(or x1701 (not x1700) x1698)
+(or (not x1698) (not x1701))
+(or (not x1698) x1700)
+(or x1701 x1700 x1697)
+(or (not x1697) (not x1701))
+(or (not x1697) (not x1700))
+(or x2130 (not x1697))
+(or x2130 (not x1698))
+(or x1697 x1698 (not x2130))
+(or (not x2131) x1716)
+(or (not x2131) (not x1715))
+(or x1716 (not x1715) x1713)
+(or (not x1713) (not x1716))
+(or (not x1713) x1715)
+(or x1716 x1715 x1712)
+(or (not x1712) (not x1716))
+(or (not x1712) (not x1715))
+(or x2132 (not x1712))
+(or x2132 (not x1713))
+(or x1712 x1713 (not x2132))
+(or (not x2133) x1731)
+(or (not x2133) (not x1730))
+(or x1731 (not x1730) x1728)
+(or (not x1728) (not x1731))
+(or (not x1728) x1730)
+(or x1731 x1730 x1727)
+(or (not x1727) (not x1731))
+(or (not x1727) (not x1730))
+(or x2134 (not x1727))
+(or x2134 (not x1728))
+(or x1727 x1728 (not x2134))
+(or (not x2135) x1766)
+(or (not x2135) (not x1765))
+(or x1766 (not x1765) x1763)
+(or (not x1763) (not x1766))
+(or (not x1763) x1765)
+(or x1766 x1765 x1762)
+(or (not x1762) (not x1766))
+(or (not x1762) (not x1765))
+(or x2136 (not x1762))
+(or x2136 (not x1763))
+(or x1762 x1763 (not x2136))
+(or x2137 (not x98))
+(or x2137 x97)
+(or x2137 x2138)
+(or x98 (not x97) (not x2138) (not x2137))
+(or (not x2137) (not x2139) x2140)
+(or (not x2140) x2137)
+(or (not x2140) x2139)
+(or x2141 (not x99))
+(or x2141 (not x100))
+(or x2141 (not x101))
+(or x2141 (not x102))
+(or x2141 (not x103))
+(or x2141 (not x104))
+(or x2141 (not x105))
+(or x2141 (not x106))
+(or x2141 (not x107))
+(or x2141 (not x108))
+(or x2141 (not x109))
+(or x2141 (not x110))
+(or x2141 (not x111))
+(or x2141 (not x112))
+(or x2141 (not x113))
+(or x2141 (not x114))
+(or x99 x100 x101 x102 x103 x104 x105 x106 x107 x108 x109 x110 x111 x112 x113 x114 (not x2141))
+(or (not x98) x97 (not x2141) x2142)
+(or (not x2142) x98)
+(or (not x2142) (not x97))
+(or (not x2142) x2141)
+(or x98 (not x97) x2143)
+(or (not x2143) (not x98))
+(or (not x2143) x97)
+(or x2139 (not x2143))
+(or x2139 (not x2142))
+(or x2143 x2142 (not x2139))
+(or x2144 (not x98))
+(or x2144 x97)
+(or x2144 (not x2138))
+(or x98 (not x97) x2138 (not x2144))
+(or (not x2144) (not x2139) x2145)
+(or (not x2145) x2144)
+(or (not x2145) x2139)
+(or (not x2146) x2147 (not x2148) (not x2149) (not x2150) (not x2151) x2152)
+(or (not x2152) x2146)
+(or (not x2152) (not x2147))
+(or (not x2152) x2148)
+(or (not x2152) x2149)
+(or (not x2152) x2150)
+(or (not x2152) x2151)
+(or (not x2153) (not x2149) (not x2154) x2155)
+(or (not x2155) x2153)
+(or (not x2155) x2149)
+(or (not x2155) x2154)
+(or x2156 (not x2155))
+(or x2156 (not x2152))
+(or x2155 x2152 (not x2156))
+(or (not x2157) x2158 (not x2159) (not x2149) (not x2150) (not x2151) x2160)
+(or (not x2160) x2157)
+(or (not x2160) (not x2158))
+(or (not x2160) x2159)
+(or (not x2160) x2149)
+(or (not x2160) x2150)
+(or (not x2160) x2151)
+(or (not x2161) (not x2149) (not x2154) x2162)
+(or (not x2162) x2161)
+(or (not x2162) x2149)
+(or (not x2162) x2154)
+(or x2163 (not x2162))
+(or x2163 (not x2160))
+(or x2162 x2160 (not x2163))
+(or (not x2164) x2165 (not x2166) (not x2149) (not x2150) (not x2151) x2167)
+(or (not x2167) x2164)
+(or (not x2167) (not x2165))
+(or (not x2167) x2166)
+(or (not x2167) x2149)
+(or (not x2167) x2150)
+(or (not x2167) x2151)
+(or (not x2168) (not x2149) (not x2154) x2169)
+(or (not x2169) x2168)
+(or (not x2169) x2149)
+(or (not x2169) x2154)
+(or x2170 (not x2169))
+(or x2170 (not x2167))
+(or x2169 x2167 (not x2170))
+(or (not x2171) x2172 (not x2173) (not x2149) (not x2150) (not x2151) x2174)
+(or (not x2174) x2171)
+(or (not x2174) (not x2172))
+(or (not x2174) x2173)
+(or (not x2174) x2149)
+(or (not x2174) x2150)
+(or (not x2174) x2151)
+(or x2154 x2150)
+(or x2154 (not x2175))
+(or (not x2150) x2175 (not x2154))
+(or x2149 (not x2176))
+(or x2149 (not x2168))
+(or x2149 (not x2161))
+(or x2149 (not x2153))
+(or x2176 x2168 x2161 x2153 (not x2149))
+(or (not x2176) (not x2149) (not x2154) x2177)
+(or (not x2177) x2176)
+(or (not x2177) x2149)
+(or (not x2177) x2154)
+(or x2176 x2168 x2161 x2153 x2178)
+(or (not x2178) (not x2176))
+(or (not x2178) (not x2168))
+(or (not x2178) (not x2161))
+(or (not x2178) (not x2153))
+(or x2179 (not x2178))
+(or x2179 (not x2177))
+(or x2179 (not x2174))
+(or x2178 x2177 x2174 (not x2179))
+(or (not x2180) (not x2180) (not x2181) (not x2182) x2183)
+(or (not x2183) x2180)
+(or (not x2183) x2180)
+(or (not x2183) x2181)
+(or (not x2183) x2182)
+(or (not x2184) (not x2180) x2185)
+(or (not x2185) x2184)
+(or (not x2185) x2180)
+(or x2180 x2186 x2150 x2187)
+(or (not x2187) (not x2180))
+(or (not x2187) (not x2186))
+(or (not x2187) (not x2150))
+(or x2188 (not x2187))
+(or x2188 (not x2185))
+(or x2187 x2185 (not x2188))
+(or x2189 (not x2190))
+(or x2189 (not x2191))
+(or x2189 (not x2192))
+(or x2189 (not x2194))
+(or x2190 x2191 x2192 x2194 (not x2189))
+(or (not x2195) (not x2196) (not x2189) x2197)
+(or (not x2197) x2195)
+(or (not x2197) x2196)
+(or (not x2197) x2189)
+(or (not x2194) x2193 (not x2198) x2192)
+(or (not x2192) x2194)
+(or (not x2192) (not x2193))
+(or (not x2192) x2198)
+(or x2199 (not x2190))
+(or x2199 (not x2191))
+(or x2199 (not x2192))
+(or x2199 (not x2193))
+(or x2190 x2191 x2192 x2193 (not x2199))
+(or x2196 (not x2190))
+(or x2196 (not x2191))
+(or x2196 x2194)
+(or x2196 (not x2193))
+(or x2196 x2198)
+(or x2190 x2191 (not x2194) x2193 (not x2198) (not x2196))
+(or x2200 (not x2190))
+(or x2200 (not x2194))
+(or x2200 x2193)
+(or x2190 x2194 (not x2193) (not x2200))
+(or x2195 (not x2194))
+(or x2195 (not x2193))
+(or x2194 x2193 (not x2195))
+(or x2201 (not x2194))
+(or x2201 (not x2193))
+(or x2201 x2202)
+(or x2194 x2193 (not x2202) (not x2201))
+(or (not x2201) (not x2200) (not x2196) (not x2199) x2203)
+(or (not x2203) x2201)
+(or (not x2203) x2200)
+(or (not x2203) x2196)
+(or (not x2203) x2199)
+(or x2204 (not x2205))
+(or x2204 (not x2206))
+(or x2204 (not x2207))
+(or x2204 (not x2209))
+(or x2205 x2206 x2207 x2209 (not x2204))
+(or (not x2210) (not x2211) (not x2204) x2212)
+(or (not x2212) x2210)
+(or (not x2212) x2211)
+(or (not x2212) x2204)
+(or (not x2209) x2208 (not x2213) x2207)
+(or (not x2207) x2209)
+(or (not x2207) (not x2208))
+(or (not x2207) x2213)
+(or x2214 (not x2205))
+(or x2214 (not x2206))
+(or x2214 (not x2207))
+(or x2214 (not x2208))
+(or x2205 x2206 x2207 x2208 (not x2214))
+(or x2211 (not x2205))
+(or x2211 (not x2206))
+(or x2211 x2209)
+(or x2211 (not x2208))
+(or x2211 x2213)
+(or x2205 x2206 (not x2209) x2208 (not x2213) (not x2211))
+(or x2215 (not x2205))
+(or x2215 (not x2209))
+(or x2215 x2208)
+(or x2205 x2209 (not x2208) (not x2215))
+(or x2210 (not x2209))
+(or x2210 (not x2208))
+(or x2209 x2208 (not x2210))
+(or x2216 (not x2209))
+(or x2216 (not x2208))
+(or x2216 x2217)
+(or x2209 x2208 (not x2217) (not x2216))
+(or (not x2216) (not x2215) (not x2211) (not x2214) x2218)
+(or (not x2218) x2216)
+(or (not x2218) x2215)
+(or (not x2218) x2211)
+(or (not x2218) x2214)
+(or x2219 (not x2220))
+(or x2219 (not x2221))
+(or x2219 (not x2222))
+(or x2219 (not x2224))
+(or x2220 x2221 x2222 x2224 (not x2219))
+(or (not x2225) (not x2226) (not x2219) x2227)
+(or (not x2227) x2225)
+(or (not x2227) x2226)
+(or (not x2227) x2219)
+(or (not x2224) x2223 (not x2228) x2222)
+(or (not x2222) x2224)
+(or (not x2222) (not x2223))
+(or (not x2222) x2228)
+(or x2229 (not x2220))
+(or x2229 (not x2221))
+(or x2229 (not x2222))
+(or x2229 (not x2223))
+(or x2220 x2221 x2222 x2223 (not x2229))
+(or x2226 (not x2220))
+(or x2226 (not x2221))
+(or x2226 x2224)
+(or x2226 (not x2223))
+(or x2226 x2228)
+(or x2220 x2221 (not x2224) x2223 (not x2228) (not x2226))
+(or x2230 (not x2220))
+(or x2230 (not x2224))
+(or x2230 x2223)
+(or x2220 x2224 (not x2223) (not x2230))
+(or x2225 (not x2224))
+(or x2225 (not x2223))
+(or x2224 x2223 (not x2225))
+(or x2231 (not x2224))
+(or x2231 (not x2223))
+(or x2231 x2232)
+(or x2224 x2223 (not x2232) (not x2231))
+(or (not x2231) (not x2230) (not x2226) (not x2229) x2233)
+(or (not x2233) x2231)
+(or (not x2233) x2230)
+(or (not x2233) x2226)
+(or (not x2233) x2229)
+(or x2234 (not x2235))
+(or x2234 (not x2236))
+(or x2234 (not x2237))
+(or x2234 (not x2239))
+(or x2235 x2236 x2237 x2239 (not x2234))
+(or (not x2240) (not x2241) (not x2234) x2242)
+(or (not x2242) x2240)
+(or (not x2242) x2241)
+(or (not x2242) x2234)
+(or (not x2239) x2238 (not x2243) x2237)
+(or (not x2237) x2239)
+(or (not x2237) (not x2238))
+(or (not x2237) x2243)
+(or x2244 (not x2235))
+(or x2244 (not x2236))
+(or x2244 (not x2237))
+(or x2244 (not x2238))
+(or x2235 x2236 x2237 x2238 (not x2244))
+(or x2241 (not x2235))
+(or x2241 (not x2236))
+(or x2241 x2239)
+(or x2241 (not x2238))
+(or x2241 x2243)
+(or x2235 x2236 (not x2239) x2238 (not x2243) (not x2241))
+(or x2245 (not x2235))
+(or x2245 (not x2239))
+(or x2245 x2238)
+(or x2235 x2239 (not x2238) (not x2245))
+(or x2240 (not x2239))
+(or x2240 (not x2238))
+(or x2239 x2238 (not x2240))
+(or x2246 (not x2239))
+(or x2246 (not x2238))
+(or x2246 x2247)
+(or x2239 x2238 (not x2247) (not x2246))
+(or (not x2246) (not x2245) (not x2241) (not x2244) x2248)
+(or (not x2248) x2246)
+(or (not x2248) x2245)
+(or (not x2248) x2241)
+(or (not x2248) x2244)
+(or x2249 (not x2250))
+(or x2249 (not x2251))
+(or x2249 (not x2252))
+(or x2249 (not x2254))
+(or x2250 x2251 x2252 x2254 (not x2249))
+(or (not x2255) (not x2256) (not x2249) x2257)
+(or (not x2257) x2255)
+(or (not x2257) x2256)
+(or (not x2257) x2249)
+(or (not x2254) x2253 (not x2258) x2252)
+(or (not x2252) x2254)
+(or (not x2252) (not x2253))
+(or (not x2252) x2258)
+(or x2259 (not x2250))
+(or x2259 (not x2251))
+(or x2259 (not x2252))
+(or x2259 (not x2253))
+(or x2250 x2251 x2252 x2253 (not x2259))
+(or x2256 (not x2250))
+(or x2256 (not x2251))
+(or x2256 x2254)
+(or x2256 (not x2253))
+(or x2256 x2258)
+(or x2250 x2251 (not x2254) x2253 (not x2258) (not x2256))
+(or x2260 (not x2250))
+(or x2260 (not x2254))
+(or x2260 x2253)
+(or x2250 x2254 (not x2253) (not x2260))
+(or x2255 (not x2254))
+(or x2255 (not x2253))
+(or x2254 x2253 (not x2255))
+(or x2261 (not x2254))
+(or x2261 (not x2253))
+(or x2261 x2262)
+(or x2254 x2253 (not x2262) (not x2261))
+(or (not x2261) (not x2260) (not x2256) (not x2259) x2263)
+(or (not x2263) x2261)
+(or (not x2263) x2260)
+(or (not x2263) x2256)
+(or (not x2263) x2259)
+(or x2264 (not x2265))
+(or x2264 (not x2266))
+(or x2264 (not x2267))
+(or x2264 (not x2269))
+(or x2265 x2266 x2267 x2269 (not x2264))
+(or (not x2270) (not x2271) (not x2264) x2272)
+(or (not x2272) x2270)
+(or (not x2272) x2271)
+(or (not x2272) x2264)
+(or (not x2269) x2268 (not x2273) x2267)
+(or (not x2267) x2269)
+(or (not x2267) (not x2268))
+(or (not x2267) x2273)
+(or x2274 (not x2265))
+(or x2274 (not x2266))
+(or x2274 (not x2267))
+(or x2274 (not x2268))
+(or x2265 x2266 x2267 x2268 (not x2274))
+(or x2271 (not x2265))
+(or x2271 (not x2266))
+(or x2271 x2269)
+(or x2271 (not x2268))
+(or x2271 x2273)
+(or x2265 x2266 (not x2269) x2268 (not x2273) (not x2271))
+(or x2275 (not x2265))
+(or x2275 (not x2269))
+(or x2275 x2268)
+(or x2265 x2269 (not x2268) (not x2275))
+(or x2270 (not x2269))
+(or x2270 (not x2268))
+(or x2269 x2268 (not x2270))
+(or x2276 (not x2269))
+(or x2276 (not x2268))
+(or x2276 x2277)
+(or x2269 x2268 (not x2277) (not x2276))
+(or (not x2276) (not x2275) (not x2271) (not x2274) x2278)
+(or (not x2278) x2276)
+(or (not x2278) x2275)
+(or (not x2278) x2271)
+(or (not x2278) x2274)
+(or x2279 (not x2280))
+(or x2279 (not x2281))
+(or x2279 (not x2282))
+(or x2279 (not x2284))
+(or x2280 x2281 x2282 x2284 (not x2279))
+(or (not x2285) (not x2286) (not x2279) x2287)
+(or (not x2287) x2285)
+(or (not x2287) x2286)
+(or (not x2287) x2279)
+(or (not x2284) x2283 (not x2288) x2282)
+(or (not x2282) x2284)
+(or (not x2282) (not x2283))
+(or (not x2282) x2288)
+(or x2289 (not x2280))
+(or x2289 (not x2281))
+(or x2289 (not x2282))
+(or x2289 (not x2283))
+(or x2280 x2281 x2282 x2283 (not x2289))
+(or x2286 (not x2280))
+(or x2286 (not x2281))
+(or x2286 x2284)
+(or x2286 (not x2283))
+(or x2286 x2288)
+(or x2280 x2281 (not x2284) x2283 (not x2288) (not x2286))
+(or x2290 (not x2280))
+(or x2290 (not x2284))
+(or x2290 x2283)
+(or x2280 x2284 (not x2283) (not x2290))
+(or x2285 (not x2284))
+(or x2285 (not x2283))
+(or x2284 x2283 (not x2285))
+(or x2291 (not x2284))
+(or x2291 (not x2283))
+(or x2291 x2292)
+(or x2284 x2283 (not x2292) (not x2291))
+(or (not x2291) (not x2290) (not x2286) (not x2289) x2293)
+(or (not x2293) x2291)
+(or (not x2293) x2290)
+(or (not x2293) x2286)
+(or (not x2293) x2289)
+(or x2294 (not x2295))
+(or x2294 (not x2296))
+(or x2294 (not x2297))
+(or x2294 (not x2299))
+(or x2295 x2296 x2297 x2299 (not x2294))
+(or (not x2300) (not x2301) (not x2294) x2302)
+(or (not x2302) x2300)
+(or (not x2302) x2301)
+(or (not x2302) x2294)
+(or (not x2299) x2298 (not x2303) x2297)
+(or (not x2297) x2299)
+(or (not x2297) (not x2298))
+(or (not x2297) x2303)
+(or x2304 (not x2295))
+(or x2304 (not x2296))
+(or x2304 (not x2297))
+(or x2304 (not x2298))
+(or x2295 x2296 x2297 x2298 (not x2304))
+(or x2301 (not x2295))
+(or x2301 (not x2296))
+(or x2301 x2299)
+(or x2301 (not x2298))
+(or x2301 x2303)
+(or x2295 x2296 (not x2299) x2298 (not x2303) (not x2301))
+(or x2305 (not x2295))
+(or x2305 (not x2299))
+(or x2305 x2298)
+(or x2295 x2299 (not x2298) (not x2305))
+(or x2300 (not x2299))
+(or x2300 (not x2298))
+(or x2299 x2298 (not x2300))
+(or x2306 (not x2299))
+(or x2306 (not x2298))
+(or x2306 x2307)
+(or x2299 x2298 (not x2307) (not x2306))
+(or (not x2306) (not x2305) (not x2301) (not x2304) x2308)
+(or (not x2308) x2306)
+(or (not x2308) x2305)
+(or (not x2308) x2301)
+(or (not x2308) x2304)
+(or x2309 (not x2310))
+(or x2309 (not x2311))
+(or x2309 (not x2312))
+(or x2309 (not x2314))
+(or x2310 x2311 x2312 x2314 (not x2309))
+(or (not x2315) (not x2316) (not x2309) x2317)
+(or (not x2317) x2315)
+(or (not x2317) x2316)
+(or (not x2317) x2309)
+(or (not x2314) x2313 (not x2318) x2312)
+(or (not x2312) x2314)
+(or (not x2312) (not x2313))
+(or (not x2312) x2318)
+(or x2319 (not x2310))
+(or x2319 (not x2311))
+(or x2319 (not x2312))
+(or x2319 (not x2313))
+(or x2310 x2311 x2312 x2313 (not x2319))
+(or x2316 (not x2310))
+(or x2316 (not x2311))
+(or x2316 x2314)
+(or x2316 (not x2313))
+(or x2316 x2318)
+(or x2310 x2311 (not x2314) x2313 (not x2318) (not x2316))
+(or x2320 (not x2310))
+(or x2320 (not x2314))
+(or x2320 x2313)
+(or x2310 x2314 (not x2313) (not x2320))
+(or x2315 (not x2314))
+(or x2315 (not x2313))
+(or x2314 x2313 (not x2315))
+(or x2321 (not x2314))
+(or x2321 (not x2313))
+(or x2321 x2322)
+(or x2314 x2313 (not x2322) (not x2321))
+(or (not x2321) (not x2320) (not x2316) (not x2319) x2323)
+(or (not x2323) x2321)
+(or (not x2323) x2320)
+(or (not x2323) x2316)
+(or (not x2323) x2319)
+(or x2324 (not x2325))
+(or x2324 (not x2326))
+(or x2324 (not x2327))
+(or x2324 (not x2329))
+(or x2325 x2326 x2327 x2329 (not x2324))
+(or (not x2330) (not x2331) (not x2324) x2332)
+(or (not x2332) x2330)
+(or (not x2332) x2331)
+(or (not x2332) x2324)
+(or (not x2329) x2328 (not x2333) x2327)
+(or (not x2327) x2329)
+(or (not x2327) (not x2328))
+(or (not x2327) x2333)
+(or x2334 (not x2325))
+(or x2334 (not x2326))
+(or x2334 (not x2327))
+(or x2334 (not x2328))
+(or x2325 x2326 x2327 x2328 (not x2334))
+(or x2331 (not x2325))
+(or x2331 (not x2326))
+(or x2331 x2329)
+(or x2331 (not x2328))
+(or x2331 x2333)
+(or x2325 x2326 (not x2329) x2328 (not x2333) (not x2331))
+(or x2335 (not x2325))
+(or x2335 (not x2329))
+(or x2335 x2328)
+(or x2325 x2329 (not x2328) (not x2335))
+(or x2330 (not x2329))
+(or x2330 (not x2328))
+(or x2329 x2328 (not x2330))
+(or x2336 (not x2329))
+(or x2336 (not x2328))
+(or x2336 x2337)
+(or x2329 x2328 (not x2337) (not x2336))
+(or (not x2336) (not x2335) (not x2331) (not x2334) x2338)
+(or (not x2338) x2336)
+(or (not x2338) x2335)
+(or (not x2338) x2331)
+(or (not x2338) x2334)
+(or x2339 (not x2340))
+(or x2339 (not x2341))
+(or x2339 (not x2342))
+(or x2339 (not x2344))
+(or x2340 x2341 x2342 x2344 (not x2339))
+(or (not x2345) (not x2346) (not x2339) x2347)
+(or (not x2347) x2345)
+(or (not x2347) x2346)
+(or (not x2347) x2339)
+(or (not x2344) x2343 (not x2348) x2342)
+(or (not x2342) x2344)
+(or (not x2342) (not x2343))
+(or (not x2342) x2348)
+(or x2349 (not x2340))
+(or x2349 (not x2341))
+(or x2349 (not x2342))
+(or x2349 (not x2343))
+(or x2340 x2341 x2342 x2343 (not x2349))
+(or x2346 (not x2340))
+(or x2346 (not x2341))
+(or x2346 x2344)
+(or x2346 (not x2343))
+(or x2346 x2348)
+(or x2340 x2341 (not x2344) x2343 (not x2348) (not x2346))
+(or x2350 (not x2340))
+(or x2350 (not x2344))
+(or x2350 x2343)
+(or x2340 x2344 (not x2343) (not x2350))
+(or x2345 (not x2344))
+(or x2345 (not x2343))
+(or x2344 x2343 (not x2345))
+(or x2351 (not x2344))
+(or x2351 (not x2343))
+(or x2351 x2352)
+(or x2344 x2343 (not x2352) (not x2351))
+(or (not x2351) (not x2350) (not x2346) (not x2349) x2353)
+(or (not x2353) x2351)
+(or (not x2353) x2350)
+(or (not x2353) x2346)
+(or (not x2353) x2349)
+(or x2354 (not x2355))
+(or x2354 (not x2356))
+(or x2354 (not x2357))
+(or x2354 (not x2359))
+(or x2355 x2356 x2357 x2359 (not x2354))
+(or (not x2360) (not x2361) (not x2354) x2362)
+(or (not x2362) x2360)
+(or (not x2362) x2361)
+(or (not x2362) x2354)
+(or (not x2359) x2358 (not x2363) x2357)
+(or (not x2357) x2359)
+(or (not x2357) (not x2358))
+(or (not x2357) x2363)
+(or x2364 (not x2355))
+(or x2364 (not x2356))
+(or x2364 (not x2357))
+(or x2364 (not x2358))
+(or x2355 x2356 x2357 x2358 (not x2364))
+(or x2361 (not x2355))
+(or x2361 (not x2356))
+(or x2361 x2359)
+(or x2361 (not x2358))
+(or x2361 x2363)
+(or x2355 x2356 (not x2359) x2358 (not x2363) (not x2361))
+(or x2365 (not x2355))
+(or x2365 (not x2359))
+(or x2365 x2358)
+(or x2355 x2359 (not x2358) (not x2365))
+(or x2360 (not x2359))
+(or x2360 (not x2358))
+(or x2359 x2358 (not x2360))
+(or x2366 (not x2359))
+(or x2366 (not x2358))
+(or x2366 x2367)
+(or x2359 x2358 (not x2367) (not x2366))
+(or (not x2366) (not x2365) (not x2361) (not x2364) x2368)
+(or (not x2368) x2366)
+(or (not x2368) x2365)
+(or (not x2368) x2361)
+(or (not x2368) x2364)
+(or x2369 (not x2370))
+(or x2369 (not x2371))
+(or x2369 (not x2372))
+(or x2369 (not x2374))
+(or x2370 x2371 x2372 x2374 (not x2369))
+(or (not x2375) (not x2376) (not x2369) x2377)
+(or (not x2377) x2375)
+(or (not x2377) x2376)
+(or (not x2377) x2369)
+(or (not x2374) x2373 (not x2378) x2372)
+(or (not x2372) x2374)
+(or (not x2372) (not x2373))
+(or (not x2372) x2378)
+(or x2379 (not x2370))
+(or x2379 (not x2371))
+(or x2379 (not x2372))
+(or x2379 (not x2373))
+(or x2370 x2371 x2372 x2373 (not x2379))
+(or x2376 (not x2370))
+(or x2376 (not x2371))
+(or x2376 x2374)
+(or x2376 (not x2373))
+(or x2376 x2378)
+(or x2370 x2371 (not x2374) x2373 (not x2378) (not x2376))
+(or x2380 (not x2370))
+(or x2380 (not x2374))
+(or x2380 x2373)
+(or x2370 x2374 (not x2373) (not x2380))
+(or x2375 (not x2374))
+(or x2375 (not x2373))
+(or x2374 x2373 (not x2375))
+(or x2381 (not x2374))
+(or x2381 (not x2373))
+(or x2381 x2382)
+(or x2374 x2373 (not x2382) (not x2381))
+(or (not x2381) (not x2380) (not x2376) (not x2379) x2383)
+(or (not x2383) x2381)
+(or (not x2383) x2380)
+(or (not x2383) x2376)
+(or (not x2383) x2379)
+(or x2384 (not x2385))
+(or x2384 (not x2386))
+(or x2384 (not x2387))
+(or x2384 (not x2389))
+(or x2385 x2386 x2387 x2389 (not x2384))
+(or (not x2390) (not x2391) (not x2384) x2392)
+(or (not x2392) x2390)
+(or (not x2392) x2391)
+(or (not x2392) x2384)
+(or (not x2389) x2388 (not x2393) x2387)
+(or (not x2387) x2389)
+(or (not x2387) (not x2388))
+(or (not x2387) x2393)
+(or x2394 (not x2385))
+(or x2394 (not x2386))
+(or x2394 (not x2387))
+(or x2394 (not x2388))
+(or x2385 x2386 x2387 x2388 (not x2394))
+(or x2391 (not x2385))
+(or x2391 (not x2386))
+(or x2391 x2389)
+(or x2391 (not x2388))
+(or x2391 x2393)
+(or x2385 x2386 (not x2389) x2388 (not x2393) (not x2391))
+(or x2395 (not x2385))
+(or x2395 (not x2389))
+(or x2395 x2388)
+(or x2385 x2389 (not x2388) (not x2395))
+(or x2390 (not x2389))
+(or x2390 (not x2388))
+(or x2389 x2388 (not x2390))
+(or x2396 (not x2389))
+(or x2396 (not x2388))
+(or x2396 x2397)
+(or x2389 x2388 (not x2397) (not x2396))
+(or (not x2396) (not x2395) (not x2391) (not x2394) x2398)
+(or (not x2398) x2396)
+(or (not x2398) x2395)
+(or (not x2398) x2391)
+(or (not x2398) x2394)
+(or x2399 (not x2400))
+(or x2399 (not x2401))
+(or x2399 (not x2402))
+(or x2399 (not x2404))
+(or x2400 x2401 x2402 x2404 (not x2399))
+(or (not x2405) (not x2406) (not x2399) x2407)
+(or (not x2407) x2405)
+(or (not x2407) x2406)
+(or (not x2407) x2399)
+(or (not x2404) x2403 (not x2408) x2402)
+(or (not x2402) x2404)
+(or (not x2402) (not x2403))
+(or (not x2402) x2408)
+(or x2409 (not x2400))
+(or x2409 (not x2401))
+(or x2409 (not x2402))
+(or x2409 (not x2403))
+(or x2400 x2401 x2402 x2403 (not x2409))
+(or x2406 (not x2400))
+(or x2406 (not x2401))
+(or x2406 x2404)
+(or x2406 (not x2403))
+(or x2406 x2408)
+(or x2400 x2401 (not x2404) x2403 (not x2408) (not x2406))
+(or x2410 (not x2400))
+(or x2410 (not x2404))
+(or x2410 x2403)
+(or x2400 x2404 (not x2403) (not x2410))
+(or x2405 (not x2404))
+(or x2405 (not x2403))
+(or x2404 x2403 (not x2405))
+(or x2411 (not x2404))
+(or x2411 (not x2403))
+(or x2411 x2412)
+(or x2404 x2403 (not x2412) (not x2411))
+(or (not x2411) (not x2410) (not x2406) (not x2409) x2413)
+(or (not x2413) x2411)
+(or (not x2413) x2410)
+(or (not x2413) x2406)
+(or (not x2413) x2409)
+(or (not x2414) (not x2161) x2415)
+(or (not x2415) x2414)
+(or (not x2415) x2161)
+(or (not x2416) (not x2414) (not x2168) x2417)
+(or (not x2417) x2416)
+(or (not x2417) x2414)
+(or (not x2417) x2168)
+(or (not x2418) (not x2416) (not x2414) (not x2176) x2419)
+(or (not x2419) x2418)
+(or (not x2419) x2416)
+(or (not x2419) x2414)
+(or (not x2419) x2176)
+(or x2171 (not x2153))
+(or x2171 (not x2419))
+(or x2171 (not x2417))
+(or x2171 (not x2415))
+(or x2153 x2419 x2417 x2415 (not x2171))
+(or (not x2171) x2172 (not x2173) (not x2150) (not x2151) x2420)
+(or (not x2420) x2171)
+(or (not x2420) (not x2172))
+(or (not x2420) x2173)
+(or (not x2420) x2150)
+(or (not x2420) x2151)
+(or (not x2416) (not x2168) x2421)
+(or (not x2421) x2416)
+(or (not x2421) x2168)
+(or (not x2418) (not x2416) (not x2176) x2422)
+(or (not x2422) x2418)
+(or (not x2422) x2416)
+(or (not x2422) x2176)
+(or (not x2423) (not x2418) (not x2416) (not x2153) x2424)
+(or (not x2424) x2423)
+(or (not x2424) x2418)
+(or (not x2424) x2416)
+(or (not x2424) x2153)
+(or x2146 (not x2161))
+(or x2146 (not x2424))
+(or x2146 (not x2422))
+(or x2146 (not x2421))
+(or x2161 x2424 x2422 x2421 (not x2146))
+(or (not x2146) x2147 (not x2148) (not x2150) (not x2151) x2425)
+(or (not x2425) x2146)
+(or (not x2425) (not x2147))
+(or (not x2425) x2148)
+(or (not x2425) x2150)
+(or (not x2425) x2151)
+(or (not x2418) (not x2176) x2426)
+(or (not x2426) x2418)
+(or (not x2426) x2176)
+(or (not x2423) (not x2418) (not x2153) x2427)
+(or (not x2427) x2423)
+(or (not x2427) x2418)
+(or (not x2427) x2153)
+(or (not x2414) (not x2423) (not x2418) (not x2161) x2428)
+(or (not x2428) x2414)
+(or (not x2428) x2423)
+(or (not x2428) x2418)
+(or (not x2428) x2161)
+(or x2157 (not x2168))
+(or x2157 (not x2428))
+(or x2157 (not x2427))
+(or x2157 (not x2426))
+(or x2168 x2428 x2427 x2426 (not x2157))
+(or (not x2157) x2158 (not x2159) (not x2150) (not x2151) x2429)
+(or (not x2429) x2157)
+(or (not x2429) (not x2158))
+(or (not x2429) x2159)
+(or (not x2429) x2150)
+(or (not x2429) x2151)
+(or (not x2423) (not x2153) x2430)
+(or (not x2430) x2423)
+(or (not x2430) x2153)
+(or (not x2414) (not x2423) (not x2161) x2431)
+(or (not x2431) x2414)
+(or (not x2431) x2423)
+(or (not x2431) x2161)
+(or (not x2416) (not x2414) (not x2423) (not x2168) x2432)
+(or (not x2432) x2416)
+(or (not x2432) x2414)
+(or (not x2432) x2423)
+(or (not x2432) x2168)
+(or x2164 (not x2176))
+(or x2164 (not x2432))
+(or x2164 (not x2431))
+(or x2164 (not x2430))
+(or x2176 x2432 x2431 x2430 (not x2164))
+(or (not x2164) x2165 (not x2166) (not x2150) (not x2151) x2433)
+(or (not x2433) x2164)
+(or (not x2433) (not x2165))
+(or (not x2433) x2166)
+(or (not x2433) x2150)
+(or (not x2433) x2151)
+(or x2434 (not x2435))
+(or x2434 (not x2436))
+(or x2434 (not x2437))
+(or x2434 (not x2439))
+(or x2435 x2436 x2437 x2439 (not x2434))
+(or (not x2440) (not x2441) (not x2434) x2442)
+(or (not x2442) x2440)
+(or (not x2442) x2441)
+(or (not x2442) x2434)
+(or (not x2439) x2438 (not x2443) x2437)
+(or (not x2437) x2439)
+(or (not x2437) (not x2438))
+(or (not x2437) x2443)
+(or x2444 (not x2435))
+(or x2444 (not x2436))
+(or x2444 (not x2437))
+(or x2444 (not x2438))
+(or x2435 x2436 x2437 x2438 (not x2444))
+(or x2441 (not x2435))
+(or x2441 (not x2436))
+(or x2441 x2439)
+(or x2441 (not x2438))
+(or x2441 x2443)
+(or x2435 x2436 (not x2439) x2438 (not x2443) (not x2441))
+(or x2445 (not x2435))
+(or x2445 (not x2439))
+(or x2445 x2438)
+(or x2435 x2439 (not x2438) (not x2445))
+(or x2440 (not x2439))
+(or x2440 (not x2438))
+(or x2439 x2438 (not x2440))
+(or x2446 (not x2439))
+(or x2446 (not x2438))
+(or x2446 x2447)
+(or x2439 x2438 (not x2447) (not x2446))
+(or (not x2446) (not x2445) (not x2441) (not x2444) x2448)
+(or (not x2448) x2446)
+(or (not x2448) x2445)
+(or (not x2448) x2441)
+(or (not x2448) x2444)
+(or x2186 (not x2449) x2450)
+(or (not x2450) (not x2186))
+(or (not x2450) x2449)
+(or (not x2150) (not x2451) (not x2181) x2452)
+(or (not x2452) x2150)
+(or (not x2452) x2451)
+(or (not x2452) x2181)
+(or x2453 (not x2452))
+(or x2453 (not x2450))
+(or x2452 x2450 (not x2453))
+(or x2186 (not x2451) x2454)
+(or (not x2454) (not x2186))
+(or (not x2454) x2451)
+(or (not x2150) (not x2455) (not x2181) x2456)
+(or (not x2456) x2150)
+(or (not x2456) x2455)
+(or (not x2456) x2181)
+(or x2457 (not x2456))
+(or x2457 (not x2454))
+(or x2456 x2454 (not x2457))
+(or x2186 (not x2455) x2458)
+(or (not x2458) (not x2186))
+(or (not x2458) x2455)
+(or (not x2150) (not x2459) (not x2181) x2460)
+(or (not x2460) x2150)
+(or (not x2460) x2459)
+(or (not x2460) x2181)
+(or x2461 (not x2460))
+(or x2461 (not x2458))
+(or x2460 x2458 (not x2461))
+(or x2186 (not x2459) x2462)
+(or (not x2462) (not x2186))
+(or (not x2462) x2459)
+(or (not x2150) (not x2181) x2463)
+(or (not x2463) x2150)
+(or (not x2463) x2181)
+(or x2464 (not x2463))
+(or x2464 (not x2462))
+(or x2463 x2462 (not x2464))
+(or x2465 (not x2172))
+(or x2465 x2173)
+(or x2465 (not x2173))
+(or x2172 (not x2173) x2173 (not x2465))
+(or x2466 (not x2467))
+(or x2466 x2468)
+(or x2467 (not x2468) (not x2466))
+(or (not x2466) (not x2465) x2469)
+(or (not x2469) x2466)
+(or (not x2469) x2465)
+(or x2470 (not x2147))
+(or x2470 x2148)
+(or x2470 (not x2148))
+(or x2147 (not x2148) x2148 (not x2470))
+(or x2471 (not x2472))
+(or x2471 x2473)
+(or x2472 (not x2473) (not x2471))
+(or (not x2471) (not x2470) x2474)
+(or (not x2474) x2471)
+(or (not x2474) x2470)
+(or x2475 (not x2158))
+(or x2475 x2159)
+(or x2475 (not x2159))
+(or x2158 (not x2159) x2159 (not x2475))
+(or x2476 (not x2477))
+(or x2476 x2478)
+(or x2477 (not x2478) (not x2476))
+(or (not x2476) (not x2475) x2479)
+(or (not x2479) x2476)
+(or (not x2479) x2475)
+(or x2480 (not x2165))
+(or x2480 x2166)
+(or x2480 (not x2166))
+(or x2165 (not x2166) x2166 (not x2480))
+(or x2481 (not x2482))
+(or x2481 x2483)
+(or x2482 (not x2483) (not x2481))
+(or (not x2481) (not x2480) x2484)
+(or (not x2484) x2481)
+(or (not x2484) x2480)
+(or x2485 (not x2150))
+(or x2485 (not x2186))
+(or x2150 x2186 (not x2485))
+(or x2486 (not x2193))
+(or x2486 (not x2487))
+(or x2193 x2487 (not x2486))
+(or x2488 (not x2208))
+(or x2488 (not x2489))
+(or x2208 x2489 (not x2488))
+(or x2490 (not x2223))
+(or x2490 (not x2491))
+(or x2223 x2491 (not x2490))
+(or x2492 (not x2238))
+(or x2492 (not x2493))
+(or x2238 x2493 (not x2492))
+(or x2494 (not x2253))
+(or x2494 (not x2495))
+(or x2253 x2495 (not x2494))
+(or x2496 (not x2268))
+(or x2496 (not x2497))
+(or x2268 x2497 (not x2496))
+(or x2498 (not x2283))
+(or x2498 (not x2499))
+(or x2283 x2499 (not x2498))
+(or x2500 (not x2298))
+(or x2500 (not x2501))
+(or x2298 x2501 (not x2500))
+(or x2502 (not x2313))
+(or x2502 (not x2503))
+(or x2313 x2503 (not x2502))
+(or x2504 (not x2328))
+(or x2504 (not x2505))
+(or x2328 x2505 (not x2504))
+(or x2506 (not x2343))
+(or x2506 (not x2507))
+(or x2343 x2507 (not x2506))
+(or x2508 (not x2358))
+(or x2508 (not x2509))
+(or x2358 x2509 (not x2508))
+(or x2510 (not x2373))
+(or x2510 (not x2511))
+(or x2373 x2511 (not x2510))
+(or x2512 (not x2388))
+(or x2512 (not x2513))
+(or x2388 x2513 (not x2512))
+(or x2514 (not x2403))
+(or x2514 (not x2515))
+(or x2403 x2515 (not x2514))
+(or x2516 (not x2438))
+(or x2516 (not x2517))
+(or x2438 x2517 (not x2516))
+(or (not x114) (not x2518) (not x2519) (not x2520) (not x2521) x2522)
+(or (not x2522) x114)
+(or (not x2522) x2518)
+(or (not x2522) x2519)
+(or (not x2522) x2520)
+(or (not x2522) x2521)
+(or (not x102) (not x2519) (not x2518) (not x2180) (not x2523) x2524)
+(or (not x2524) x102)
+(or (not x2524) x2519)
+(or (not x2524) x2518)
+(or (not x2524) x2180)
+(or (not x2524) x2523)
+(or (not x99) (not x2519) (not x2518) (not x2525) (not x2526) (not x2527) (not x2528) (not x2180) x2529)
+(or (not x2529) x99)
+(or (not x2529) x2519)
+(or (not x2529) x2518)
+(or (not x2529) x2525)
+(or (not x2529) x2526)
+(or (not x2529) x2527)
+(or (not x2529) x2528)
+(or (not x2529) x2180)
+(or (not x2530) (not x2531) (not x2518) (not x2180) (not x2181) (not x2182) (not x2181) x2532)
+(or (not x2532) x2530)
+(or (not x2532) x2531)
+(or (not x2532) x2518)
+(or (not x2532) x2180)
+(or (not x2532) x2181)
+(or (not x2532) x2182)
+(or (not x2532) x2181)
+(or x2533 (not x2532))
+(or x2533 (not x2529))
+(or x2533 (not x2524))
+(or x2533 (not x2522))
+(or x2533 (not x2534))
+(or x2532 x2529 x2524 x2522 x2534 (not x2533))
+(or (not x113) (not x2518) (not x2519) (not x2520) (not x2521) x2535)
+(or (not x2535) x113)
+(or (not x2535) x2518)
+(or (not x2535) x2519)
+(or (not x2535) x2520)
+(or (not x2535) x2521)
+(or (not x101) (not x2519) (not x2518) (not x2180) (not x2523) x2536)
+(or (not x2536) x101)
+(or (not x2536) x2519)
+(or (not x2536) x2518)
+(or (not x2536) x2180)
+(or (not x2536) x2523)
+(or (not x114) (not x2519) (not x2518) (not x2525) (not x2526) (not x2527) (not x2528) (not x2180) x2537)
+(or (not x2537) x114)
+(or (not x2537) x2519)
+(or (not x2537) x2518)
+(or (not x2537) x2525)
+(or (not x2537) x2526)
+(or (not x2537) x2527)
+(or (not x2537) x2528)
+(or (not x2537) x2180)
+(or (not x114) (not x2538) (not x2518) (not x2180) (not x2181) (not x2182) (not x2181) x2539)
+(or (not x2539) x114)
+(or (not x2539) x2538)
+(or (not x2539) x2518)
+(or (not x2539) x2180)
+(or (not x2539) x2181)
+(or (not x2539) x2182)
+(or (not x2539) x2181)
+(or x2540 (not x2539))
+(or x2540 (not x2537))
+(or x2540 (not x2536))
+(or x2540 (not x2535))
+(or x2539 x2537 x2536 x2535 (not x2540))
+(or (not x112) (not x2518) (not x2519) (not x2520) (not x2521) x2541)
+(or (not x2541) x112)
+(or (not x2541) x2518)
+(or (not x2541) x2519)
+(or (not x2541) x2520)
+(or (not x2541) x2521)
+(or (not x100) (not x2519) (not x2518) (not x2180) (not x2523) x2542)
+(or (not x2542) x100)
+(or (not x2542) x2519)
+(or (not x2542) x2518)
+(or (not x2542) x2180)
+(or (not x2542) x2523)
+(or (not x113) (not x2519) (not x2518) (not x2525) (not x2526) (not x2527) (not x2528) (not x2180) x2543)
+(or (not x2543) x113)
+(or (not x2543) x2519)
+(or (not x2543) x2518)
+(or (not x2543) x2525)
+(or (not x2543) x2526)
+(or (not x2543) x2527)
+(or (not x2543) x2528)
+(or (not x2543) x2180)
+(or (not x2544) (not x2545) (not x2518) (not x2180) (not x2181) (not x2182) (not x2181) x2546)
+(or (not x2546) x2544)
+(or (not x2546) x2545)
+(or (not x2546) x2518)
+(or (not x2546) x2180)
+(or (not x2546) x2181)
+(or (not x2546) x2182)
+(or (not x2546) x2181)
+(or x2547 (not x2546))
+(or x2547 (not x2543))
+(or x2547 (not x2542))
+(or x2547 (not x2541))
+(or x2546 x2543 x2542 x2541 (not x2547))
+(or (not x111) (not x2518) (not x2519) (not x2520) (not x2521) x2548)
+(or (not x2548) x111)
+(or (not x2548) x2518)
+(or (not x2548) x2519)
+(or (not x2548) x2520)
+(or (not x2548) x2521)
+(or (not x99) (not x2519) (not x2518) (not x2180) (not x2523) x2549)
+(or (not x2549) x99)
+(or (not x2549) x2519)
+(or (not x2549) x2518)
+(or (not x2549) x2180)
+(or (not x2549) x2523)
+(or (not x112) (not x2519) (not x2518) (not x2525) (not x2526) (not x2527) (not x2528) (not x2180) x2550)
+(or (not x2550) x112)
+(or (not x2550) x2519)
+(or (not x2550) x2518)
+(or (not x2550) x2525)
+(or (not x2550) x2526)
+(or (not x2550) x2527)
+(or (not x2550) x2528)
+(or (not x2550) x2180)
+(or (not x2551) (not x2552) (not x2518) (not x2180) (not x2181) (not x2182) (not x2181) x2553)
+(or (not x2553) x2551)
+(or (not x2553) x2552)
+(or (not x2553) x2518)
+(or (not x2553) x2180)
+(or (not x2553) x2181)
+(or (not x2553) x2182)
+(or (not x2553) x2181)
+(or x2554 (not x2553))
+(or x2554 (not x2550))
+(or x2554 (not x2549))
+(or x2554 (not x2548))
+(or x2553 x2550 x2549 x2548 (not x2554))
+(or (not x110) (not x2518) (not x2519) (not x2520) (not x2521) x2555)
+(or (not x2555) x110)
+(or (not x2555) x2518)
+(or (not x2555) x2519)
+(or (not x2555) x2520)
+(or (not x2555) x2521)
+(or (not x114) (not x2519) (not x2518) (not x2180) (not x2523) x2556)
+(or (not x2556) x114)
+(or (not x2556) x2519)
+(or (not x2556) x2518)
+(or (not x2556) x2180)
+(or (not x2556) x2523)
+(or (not x111) (not x2519) (not x2518) (not x2525) (not x2526) (not x2527) (not x2528) (not x2180) x2557)
+(or (not x2557) x111)
+(or (not x2557) x2519)
+(or (not x2557) x2518)
+(or (not x2557) x2525)
+(or (not x2557) x2526)
+(or (not x2557) x2527)
+(or (not x2557) x2528)
+(or (not x2557) x2180)
+(or (not x2558) (not x2559) (not x2518) (not x2180) (not x2181) (not x2182) (not x2181) x2560)
+(or (not x2560) x2558)
+(or (not x2560) x2559)
+(or (not x2560) x2518)
+(or (not x2560) x2180)
+(or (not x2560) x2181)
+(or (not x2560) x2182)
+(or (not x2560) x2181)
+(or x2561 (not x2560))
+(or x2561 (not x2557))
+(or x2561 (not x2556))
+(or x2561 (not x2555))
+(or x2560 x2557 x2556 x2555 (not x2561))
+(or (not x109) (not x2518) (not x2519) (not x2520) (not x2521) x2562)
+(or (not x2562) x109)
+(or (not x2562) x2518)
+(or (not x2562) x2519)
+(or (not x2562) x2520)
+(or (not x2562) x2521)
+(or (not x113) (not x2519) (not x2518) (not x2180) (not x2523) x2563)
+(or (not x2563) x113)
+(or (not x2563) x2519)
+(or (not x2563) x2518)
+(or (not x2563) x2180)
+(or (not x2563) x2523)
+(or (not x110) (not x2519) (not x2518) (not x2525) (not x2526) (not x2527) (not x2528) (not x2180) x2564)
+(or (not x2564) x110)
+(or (not x2564) x2519)
+(or (not x2564) x2518)
+(or (not x2564) x2525)
+(or (not x2564) x2526)
+(or (not x2564) x2527)
+(or (not x2564) x2528)
+(or (not x2564) x2180)
+(or (not x110) (not x2565) (not x2518) (not x2180) (not x2181) (not x2182) (not x2181) x2566)
+(or (not x2566) x110)
+(or (not x2566) x2565)
+(or (not x2566) x2518)
+(or (not x2566) x2180)
+(or (not x2566) x2181)
+(or (not x2566) x2182)
+(or (not x2566) x2181)
+(or x2567 (not x2566))
+(or x2567 (not x2564))
+(or x2567 (not x2563))
+(or x2567 (not x2562))
+(or x2566 x2564 x2563 x2562 (not x2567))
+(or (not x108) (not x2518) (not x2519) (not x2520) (not x2521) x2568)
+(or (not x2568) x108)
+(or (not x2568) x2518)
+(or (not x2568) x2519)
+(or (not x2568) x2520)
+(or (not x2568) x2521)
+(or (not x112) (not x2519) (not x2518) (not x2180) (not x2523) x2569)
+(or (not x2569) x112)
+(or (not x2569) x2519)
+(or (not x2569) x2518)
+(or (not x2569) x2180)
+(or (not x2569) x2523)
+(or (not x109) (not x2519) (not x2518) (not x2525) (not x2526) (not x2527) (not x2528) (not x2180) x2570)
+(or (not x2570) x109)
+(or (not x2570) x2519)
+(or (not x2570) x2518)
+(or (not x2570) x2525)
+(or (not x2570) x2526)
+(or (not x2570) x2527)
+(or (not x2570) x2528)
+(or (not x2570) x2180)
+(or (not x2571) (not x2572) (not x2518) (not x2180) (not x2181) (not x2182) (not x2181) x2573)
+(or (not x2573) x2571)
+(or (not x2573) x2572)
+(or (not x2573) x2518)
+(or (not x2573) x2180)
+(or (not x2573) x2181)
+(or (not x2573) x2182)
+(or (not x2573) x2181)
+(or x2574 (not x2573))
+(or x2574 (not x2570))
+(or x2574 (not x2569))
+(or x2574 (not x2568))
+(or x2573 x2570 x2569 x2568 (not x2574))
+(or (not x107) (not x2518) (not x2519) (not x2520) (not x2521) x2575)
+(or (not x2575) x107)
+(or (not x2575) x2518)
+(or (not x2575) x2519)
+(or (not x2575) x2520)
+(or (not x2575) x2521)
+(or (not x111) (not x2519) (not x2518) (not x2180) (not x2523) x2576)
+(or (not x2576) x111)
+(or (not x2576) x2519)
+(or (not x2576) x2518)
+(or (not x2576) x2180)
+(or (not x2576) x2523)
+(or (not x108) (not x2519) (not x2518) (not x2525) (not x2526) (not x2527) (not x2528) (not x2180) x2577)
+(or (not x2577) x108)
+(or (not x2577) x2519)
+(or (not x2577) x2518)
+(or (not x2577) x2525)
+(or (not x2577) x2526)
+(or (not x2577) x2527)
+(or (not x2577) x2528)
+(or (not x2577) x2180)
+(or (not x2578) (not x2579) (not x2518) (not x2180) (not x2181) (not x2182) (not x2181) x2580)
+(or (not x2580) x2578)
+(or (not x2580) x2579)
+(or (not x2580) x2518)
+(or (not x2580) x2180)
+(or (not x2580) x2181)
+(or (not x2580) x2182)
+(or (not x2580) x2181)
+(or x2581 (not x2580))
+(or x2581 (not x2577))
+(or x2581 (not x2576))
+(or x2581 (not x2575))
+(or x2580 x2577 x2576 x2575 (not x2581))
+(or (not x106) (not x2518) (not x2519) (not x2520) (not x2521) x2582)
+(or (not x2582) x106)
+(or (not x2582) x2518)
+(or (not x2582) x2519)
+(or (not x2582) x2520)
+(or (not x2582) x2521)
+(or (not x110) (not x2519) (not x2518) (not x2180) (not x2523) x2583)
+(or (not x2583) x110)
+(or (not x2583) x2519)
+(or (not x2583) x2518)
+(or (not x2583) x2180)
+(or (not x2583) x2523)
+(or (not x107) (not x2519) (not x2518) (not x2525) (not x2526) (not x2527) (not x2528) (not x2180) x2584)
+(or (not x2584) x107)
+(or (not x2584) x2519)
+(or (not x2584) x2518)
+(or (not x2584) x2525)
+(or (not x2584) x2526)
+(or (not x2584) x2527)
+(or (not x2584) x2528)
+(or (not x2584) x2180)
+(or (not x2585) (not x2586) (not x2518) (not x2180) (not x2181) (not x2182) (not x2181) x2587)
+(or (not x2587) x2585)
+(or (not x2587) x2586)
+(or (not x2587) x2518)
+(or (not x2587) x2180)
+(or (not x2587) x2181)
+(or (not x2587) x2182)
+(or (not x2587) x2181)
+(or x2588 (not x2587))
+(or x2588 (not x2584))
+(or x2588 (not x2583))
+(or x2588 (not x2582))
+(or x2587 x2584 x2583 x2582 (not x2588))
+(or (not x105) (not x2518) (not x2519) (not x2520) (not x2521) x2589)
+(or (not x2589) x105)
+(or (not x2589) x2518)
+(or (not x2589) x2519)
+(or (not x2589) x2520)
+(or (not x2589) x2521)
+(or (not x109) (not x2519) (not x2518) (not x2180) (not x2523) x2590)
+(or (not x2590) x109)
+(or (not x2590) x2519)
+(or (not x2590) x2518)
+(or (not x2590) x2180)
+(or (not x2590) x2523)
+(or (not x106) (not x2519) (not x2518) (not x2525) (not x2526) (not x2527) (not x2528) (not x2180) x2591)
+(or (not x2591) x106)
+(or (not x2591) x2519)
+(or (not x2591) x2518)
+(or (not x2591) x2525)
+(or (not x2591) x2526)
+(or (not x2591) x2527)
+(or (not x2591) x2528)
+(or (not x2591) x2180)
+(or (not x106) (not x2592) (not x2518) (not x2180) (not x2181) (not x2182) (not x2181) x2593)
+(or (not x2593) x106)
+(or (not x2593) x2592)
+(or (not x2593) x2518)
+(or (not x2593) x2180)
+(or (not x2593) x2181)
+(or (not x2593) x2182)
+(or (not x2593) x2181)
+(or x2594 (not x2593))
+(or x2594 (not x2591))
+(or x2594 (not x2590))
+(or x2594 (not x2589))
+(or x2593 x2591 x2590 x2589 (not x2594))
+(or (not x104) (not x2518) (not x2519) (not x2520) (not x2521) x2595)
+(or (not x2595) x104)
+(or (not x2595) x2518)
+(or (not x2595) x2519)
+(or (not x2595) x2520)
+(or (not x2595) x2521)
+(or (not x108) (not x2519) (not x2518) (not x2180) (not x2523) x2596)
+(or (not x2596) x108)
+(or (not x2596) x2519)
+(or (not x2596) x2518)
+(or (not x2596) x2180)
+(or (not x2596) x2523)
+(or (not x105) (not x2519) (not x2518) (not x2525) (not x2526) (not x2527) (not x2528) (not x2180) x2597)
+(or (not x2597) x105)
+(or (not x2597) x2519)
+(or (not x2597) x2518)
+(or (not x2597) x2525)
+(or (not x2597) x2526)
+(or (not x2597) x2527)
+(or (not x2597) x2528)
+(or (not x2597) x2180)
+(or (not x2598) (not x2599) (not x2518) (not x2180) (not x2181) (not x2182) (not x2181) x2600)
+(or (not x2600) x2598)
+(or (not x2600) x2599)
+(or (not x2600) x2518)
+(or (not x2600) x2180)
+(or (not x2600) x2181)
+(or (not x2600) x2182)
+(or (not x2600) x2181)
+(or x2601 (not x2600))
+(or x2601 (not x2597))
+(or x2601 (not x2596))
+(or x2601 (not x2595))
+(or x2600 x2597 x2596 x2595 (not x2601))
+(or (not x103) (not x2518) (not x2519) (not x2520) (not x2521) x2602)
+(or (not x2602) x103)
+(or (not x2602) x2518)
+(or (not x2602) x2519)
+(or (not x2602) x2520)
+(or (not x2602) x2521)
+(or (not x107) (not x2519) (not x2518) (not x2180) (not x2523) x2603)
+(or (not x2603) x107)
+(or (not x2603) x2519)
+(or (not x2603) x2518)
+(or (not x2603) x2180)
+(or (not x2603) x2523)
+(or (not x104) (not x2519) (not x2518) (not x2525) (not x2526) (not x2527) (not x2528) (not x2180) x2604)
+(or (not x2604) x104)
+(or (not x2604) x2519)
+(or (not x2604) x2518)
+(or (not x2604) x2525)
+(or (not x2604) x2526)
+(or (not x2604) x2527)
+(or (not x2604) x2528)
+(or (not x2604) x2180)
+(or (not x2605) (not x2606) (not x2518) (not x2180) (not x2181) (not x2182) (not x2181) x2607)
+(or (not x2607) x2605)
+(or (not x2607) x2606)
+(or (not x2607) x2518)
+(or (not x2607) x2180)
+(or (not x2607) x2181)
+(or (not x2607) x2182)
+(or (not x2607) x2181)
+(or x2608 (not x2607))
+(or x2608 (not x2604))
+(or x2608 (not x2603))
+(or x2608 (not x2602))
+(or x2607 x2604 x2603 x2602 (not x2608))
+(or (not x102) (not x2518) (not x2519) (not x2520) (not x2521) x2609)
+(or (not x2609) x102)
+(or (not x2609) x2518)
+(or (not x2609) x2519)
+(or (not x2609) x2520)
+(or (not x2609) x2521)
+(or (not x106) (not x2519) (not x2518) (not x2180) (not x2523) x2610)
+(or (not x2610) x106)
+(or (not x2610) x2519)
+(or (not x2610) x2518)
+(or (not x2610) x2180)
+(or (not x2610) x2523)
+(or (not x103) (not x2519) (not x2518) (not x2525) (not x2526) (not x2527) (not x2528) (not x2180) x2611)
+(or (not x2611) x103)
+(or (not x2611) x2519)
+(or (not x2611) x2518)
+(or (not x2611) x2525)
+(or (not x2611) x2526)
+(or (not x2611) x2527)
+(or (not x2611) x2528)
+(or (not x2611) x2180)
+(or (not x2612) (not x2613) (not x2518) (not x2180) (not x2181) (not x2182) (not x2181) x2614)
+(or (not x2614) x2612)
+(or (not x2614) x2613)
+(or (not x2614) x2518)
+(or (not x2614) x2180)
+(or (not x2614) x2181)
+(or (not x2614) x2182)
+(or (not x2614) x2181)
+(or x2615 (not x2614))
+(or x2615 (not x2611))
+(or x2615 (not x2610))
+(or x2615 (not x2609))
+(or x2614 x2611 x2610 x2609 (not x2615))
+(or (not x101) (not x2518) (not x2519) (not x2520) (not x2521) x2616)
+(or (not x2616) x101)
+(or (not x2616) x2518)
+(or (not x2616) x2519)
+(or (not x2616) x2520)
+(or (not x2616) x2521)
+(or (not x105) (not x2519) (not x2518) (not x2180) (not x2523) x2617)
+(or (not x2617) x105)
+(or (not x2617) x2519)
+(or (not x2617) x2518)
+(or (not x2617) x2180)
+(or (not x2617) x2523)
+(or (not x102) (not x2519) (not x2518) (not x2525) (not x2526) (not x2527) (not x2528) (not x2180) x2618)
+(or (not x2618) x102)
+(or (not x2618) x2519)
+(or (not x2618) x2518)
+(or (not x2618) x2525)
+(or (not x2618) x2526)
+(or (not x2618) x2527)
+(or (not x2618) x2528)
+(or (not x2618) x2180)
+(or (not x102) (not x2619) (not x2518) (not x2180) (not x2181) (not x2182) (not x2181) x2620)
+(or (not x2620) x102)
+(or (not x2620) x2619)
+(or (not x2620) x2518)
+(or (not x2620) x2180)
+(or (not x2620) x2181)
+(or (not x2620) x2182)
+(or (not x2620) x2181)
+(or x2621 (not x2620))
+(or x2621 (not x2618))
+(or x2621 (not x2617))
+(or x2621 (not x2616))
+(or x2620 x2618 x2617 x2616 (not x2621))
+(or (not x100) (not x2518) (not x2519) (not x2520) (not x2521) x2622)
+(or (not x2622) x100)
+(or (not x2622) x2518)
+(or (not x2622) x2519)
+(or (not x2622) x2520)
+(or (not x2622) x2521)
+(or (not x104) (not x2519) (not x2518) (not x2180) (not x2523) x2623)
+(or (not x2623) x104)
+(or (not x2623) x2519)
+(or (not x2623) x2518)
+(or (not x2623) x2180)
+(or (not x2623) x2523)
+(or (not x101) (not x2519) (not x2518) (not x2525) (not x2526) (not x2527) (not x2528) (not x2180) x2624)
+(or (not x2624) x101)
+(or (not x2624) x2519)
+(or (not x2624) x2518)
+(or (not x2624) x2525)
+(or (not x2624) x2526)
+(or (not x2624) x2527)
+(or (not x2624) x2528)
+(or (not x2624) x2180)
+(or (not x2625) (not x2626) (not x2518) (not x2180) (not x2181) (not x2182) (not x2181) x2627)
+(or (not x2627) x2625)
+(or (not x2627) x2626)
+(or (not x2627) x2518)
+(or (not x2627) x2180)
+(or (not x2627) x2181)
+(or (not x2627) x2182)
+(or (not x2627) x2181)
+(or x2628 (not x2627))
+(or x2628 (not x2624))
+(or x2628 (not x2623))
+(or x2628 (not x2622))
+(or x2627 x2624 x2623 x2622 (not x2628))
+(or x2521 (not x2629))
+(or x2521 (not x2534))
+(or x2521 (not x2630))
+(or x2521 (not x2631))
+(or x2521 (not x2632))
+(or x2521 (not x2633))
+(or x2521 x2180)
+(or x2629 x2534 x2630 x2631 x2632 x2633 (not x2180) (not x2521))
+(or x114 x113 x112 x111 x110 x109 x108 x107 x106 x105 x104 x103 x102 x101 x100 x99 x2534)
+(or (not x2534) (not x114))
+(or (not x2534) (not x113))
+(or (not x2534) (not x112))
+(or (not x2534) (not x111))
+(or (not x2534) (not x110))
+(or (not x2534) (not x109))
+(or (not x2534) (not x108))
+(or (not x2534) (not x107))
+(or (not x2534) (not x106))
+(or (not x2534) (not x105))
+(or (not x2534) (not x104))
+(or (not x2534) (not x103))
+(or (not x2534) (not x102))
+(or (not x2534) (not x101))
+(or (not x2534) (not x100))
+(or (not x2534) (not x99))
+(or x2520 (not x2629))
+(or x2520 (not x2534))
+(or x2520 x2180)
+(or x2520 (not x2634))
+(or x2629 x2534 (not x2180) x2634 (not x2520))
+(or (not x99) (not x2518) (not x2519) (not x2520) (not x2521) x2635)
+(or (not x2635) x99)
+(or (not x2635) x2518)
+(or (not x2635) x2519)
+(or (not x2635) x2520)
+(or (not x2635) x2521)
+(or x2636 (not x100) x2637)
+(or (not x2637) (not x2636))
+(or (not x2637) x100)
+(or x2626 x2636 (not x101) x2638)
+(or (not x2638) (not x2626))
+(or (not x2638) (not x2636))
+(or (not x2638) x101)
+(or x2619 x2626 x2636 (not x102) x2639)
+(or (not x2639) (not x2619))
+(or (not x2639) (not x2626))
+(or (not x2639) (not x2636))
+(or (not x2639) x102)
+(or x2530 (not x99))
+(or x2530 (not x2639))
+(or x2530 (not x2638))
+(or x2530 (not x2637))
+(or x99 x2639 x2638 x2637 (not x2530))
+(or (not x2530) (not x2531) (not x2180) (not x2181) (not x2182) (not x2181) x2640)
+(or (not x2640) x2530)
+(or (not x2640) x2531)
+(or (not x2640) x2180)
+(or (not x2640) x2181)
+(or (not x2640) x2182)
+(or (not x2640) x2181)
+(or x2641 (not x2640))
+(or x2641 x2531)
+(or x2640 (not x2531) (not x2641))
+(or (not x2642) (not x2636) (not x2180) (not x2181) (not x2182) (not x2181) x2643)
+(or (not x2643) x2642)
+(or (not x2643) x2636)
+(or (not x2643) x2180)
+(or (not x2643) x2181)
+(or (not x2643) x2182)
+(or (not x2643) x2181)
+(or x2644 (not x2643))
+(or x2644 x2636)
+(or x2643 (not x2636) (not x2644))
+(or x2619 (not x102) x2645)
+(or (not x2645) (not x2619))
+(or (not x2645) x102)
+(or x2625 (not x101))
+(or x2625 (not x2645))
+(or x101 x2645 (not x2625))
+(or (not x2625) (not x2626) (not x2180) (not x2181) (not x2182) (not x2181) x2646)
+(or (not x2646) x2625)
+(or (not x2646) x2626)
+(or (not x2646) x2180)
+(or (not x2646) x2181)
+(or (not x2646) x2182)
+(or (not x2646) x2181)
+(or x2647 (not x2646))
+(or x2647 x2626)
+(or x2646 (not x2626) (not x2647))
+(or (not x102) (not x2619) (not x2180) (not x2181) (not x2182) (not x2181) x2648)
+(or (not x2648) x102)
+(or (not x2648) x2619)
+(or (not x2648) x2180)
+(or (not x2648) x2181)
+(or (not x2648) x2182)
+(or (not x2648) x2181)
+(or x2649 (not x2648))
+(or x2649 x2619)
+(or x2648 (not x2619) (not x2649))
+(or (not x2649) (not x2647) (not x2644) (not x2641) (not x102) x2633)
+(or (not x2633) x2649)
+(or (not x2633) x2647)
+(or (not x2633) x2644)
+(or (not x2633) x2641)
+(or (not x2633) x102)
+(or x2606 (not x104) x2650)
+(or (not x2650) (not x2606))
+(or (not x2650) x104)
+(or x2599 x2606 (not x105) x2651)
+(or (not x2651) (not x2599))
+(or (not x2651) (not x2606))
+(or (not x2651) x105)
+(or x2592 x2599 x2606 (not x106) x2652)
+(or (not x2652) (not x2592))
+(or (not x2652) (not x2599))
+(or (not x2652) (not x2606))
+(or (not x2652) x106)
+(or x2612 (not x103))
+(or x2612 (not x2652))
+(or x2612 (not x2651))
+(or x2612 (not x2650))
+(or x103 x2652 x2651 x2650 (not x2612))
+(or (not x2612) (not x2613) (not x2180) (not x2181) (not x2182) (not x2181) x2653)
+(or (not x2653) x2612)
+(or (not x2653) x2613)
+(or (not x2653) x2180)
+(or (not x2653) x2181)
+(or (not x2653) x2182)
+(or (not x2653) x2181)
+(or x2654 (not x2653))
+(or x2654 x2613)
+(or x2653 (not x2613) (not x2654))
+(or x2599 (not x105) x2655)
+(or (not x2655) (not x2599))
+(or (not x2655) x105)
+(or x2592 x2599 (not x106) x2656)
+(or (not x2656) (not x2592))
+(or (not x2656) (not x2599))
+(or (not x2656) x106)
+(or x2605 (not x104))
+(or x2605 (not x2656))
+(or x2605 (not x2655))
+(or x104 x2656 x2655 (not x2605))
+(or (not x2605) (not x2606) (not x2180) (not x2181) (not x2182) (not x2181) x2657)
+(or (not x2657) x2605)
+(or (not x2657) x2606)
+(or (not x2657) x2180)
+(or (not x2657) x2181)
+(or (not x2657) x2182)
+(or (not x2657) x2181)
+(or x2658 (not x2657))
+(or x2658 x2606)
+(or x2657 (not x2606) (not x2658))
+(or x2592 (not x106) x2659)
+(or (not x2659) (not x2592))
+(or (not x2659) x106)
+(or x2598 (not x105))
+(or x2598 (not x2659))
+(or x105 x2659 (not x2598))
+(or (not x2598) (not x2599) (not x2180) (not x2181) (not x2182) (not x2181) x2660)
+(or (not x2660) x2598)
+(or (not x2660) x2599)
+(or (not x2660) x2180)
+(or (not x2660) x2181)
+(or (not x2660) x2182)
+(or (not x2660) x2181)
+(or x2661 (not x2660))
+(or x2661 x2599)
+(or x2660 (not x2599) (not x2661))
+(or (not x106) (not x2592) (not x2180) (not x2181) (not x2182) (not x2181) x2662)
+(or (not x2662) x106)
+(or (not x2662) x2592)
+(or (not x2662) x2180)
+(or (not x2662) x2181)
+(or (not x2662) x2182)
+(or (not x2662) x2181)
+(or x2663 (not x2662))
+(or x2663 x2592)
+(or x2662 (not x2592) (not x2663))
+(or (not x2663) (not x2661) (not x2658) (not x2654) (not x106) x2632)
+(or (not x2632) x2663)
+(or (not x2632) x2661)
+(or (not x2632) x2658)
+(or (not x2632) x2654)
+(or (not x2632) x106)
+(or x2579 (not x108) x2664)
+(or (not x2664) (not x2579))
+(or (not x2664) x108)
+(or x2572 x2579 (not x109) x2665)
+(or (not x2665) (not x2572))
+(or (not x2665) (not x2579))
+(or (not x2665) x109)
+(or x2565 x2572 x2579 (not x110) x2666)
+(or (not x2666) (not x2565))
+(or (not x2666) (not x2572))
+(or (not x2666) (not x2579))
+(or (not x2666) x110)
+(or x2585 (not x107))
+(or x2585 (not x2666))
+(or x2585 (not x2665))
+(or x2585 (not x2664))
+(or x107 x2666 x2665 x2664 (not x2585))
+(or (not x2585) (not x2586) (not x2180) (not x2181) (not x2182) (not x2181) x2667)
+(or (not x2667) x2585)
+(or (not x2667) x2586)
+(or (not x2667) x2180)
+(or (not x2667) x2181)
+(or (not x2667) x2182)
+(or (not x2667) x2181)
+(or x2668 (not x2667))
+(or x2668 x2586)
+(or x2667 (not x2586) (not x2668))
+(or x2572 (not x109) x2669)
+(or (not x2669) (not x2572))
+(or (not x2669) x109)
+(or x2565 x2572 (not x110) x2670)
+(or (not x2670) (not x2565))
+(or (not x2670) (not x2572))
+(or (not x2670) x110)
+(or x2578 (not x108))
+(or x2578 (not x2670))
+(or x2578 (not x2669))
+(or x108 x2670 x2669 (not x2578))
+(or (not x2578) (not x2579) (not x2180) (not x2181) (not x2182) (not x2181) x2671)
+(or (not x2671) x2578)
+(or (not x2671) x2579)
+(or (not x2671) x2180)
+(or (not x2671) x2181)
+(or (not x2671) x2182)
+(or (not x2671) x2181)
+(or x2672 (not x2671))
+(or x2672 x2579)
+(or x2671 (not x2579) (not x2672))
+(or x2565 (not x110) x2673)
+(or (not x2673) (not x2565))
+(or (not x2673) x110)
+(or x2571 (not x109))
+(or x2571 (not x2673))
+(or x109 x2673 (not x2571))
+(or (not x2571) (not x2572) (not x2180) (not x2181) (not x2182) (not x2181) x2674)
+(or (not x2674) x2571)
+(or (not x2674) x2572)
+(or (not x2674) x2180)
+(or (not x2674) x2181)
+(or (not x2674) x2182)
+(or (not x2674) x2181)
+(or x2675 (not x2674))
+(or x2675 x2572)
+(or x2674 (not x2572) (not x2675))
+(or (not x110) (not x2565) (not x2180) (not x2181) (not x2182) (not x2181) x2676)
+(or (not x2676) x110)
+(or (not x2676) x2565)
+(or (not x2676) x2180)
+(or (not x2676) x2181)
+(or (not x2676) x2182)
+(or (not x2676) x2181)
+(or x2677 (not x2676))
+(or x2677 x2565)
+(or x2676 (not x2565) (not x2677))
+(or (not x2677) (not x2675) (not x2672) (not x2668) (not x110) x2631)
+(or (not x2631) x2677)
+(or (not x2631) x2675)
+(or (not x2631) x2672)
+(or (not x2631) x2668)
+(or (not x2631) x110)
+(or x2552 (not x112) x2678)
+(or (not x2678) (not x2552))
+(or (not x2678) x112)
+(or x2545 x2552 (not x113) x2679)
+(or (not x2679) (not x2545))
+(or (not x2679) (not x2552))
+(or (not x2679) x113)
+(or x2538 x2545 x2552 (not x114) x2680)
+(or (not x2680) (not x2538))
+(or (not x2680) (not x2545))
+(or (not x2680) (not x2552))
+(or (not x2680) x114)
+(or x2558 (not x111))
+(or x2558 (not x2680))
+(or x2558 (not x2679))
+(or x2558 (not x2678))
+(or x111 x2680 x2679 x2678 (not x2558))
+(or (not x2558) (not x2559) (not x2180) (not x2181) (not x2182) (not x2181) x2681)
+(or (not x2681) x2558)
+(or (not x2681) x2559)
+(or (not x2681) x2180)
+(or (not x2681) x2181)
+(or (not x2681) x2182)
+(or (not x2681) x2181)
+(or x2682 (not x2681))
+(or x2682 x2559)
+(or x2681 (not x2559) (not x2682))
+(or x2545 (not x113) x2683)
+(or (not x2683) (not x2545))
+(or (not x2683) x113)
+(or x2538 x2545 (not x114) x2684)
+(or (not x2684) (not x2538))
+(or (not x2684) (not x2545))
+(or (not x2684) x114)
+(or x2551 (not x112))
+(or x2551 (not x2684))
+(or x2551 (not x2683))
+(or x112 x2684 x2683 (not x2551))
+(or (not x2551) (not x2552) (not x2180) (not x2181) (not x2182) (not x2181) x2685)
+(or (not x2685) x2551)
+(or (not x2685) x2552)
+(or (not x2685) x2180)
+(or (not x2685) x2181)
+(or (not x2685) x2182)
+(or (not x2685) x2181)
+(or x2686 (not x2685))
+(or x2686 x2552)
+(or x2685 (not x2552) (not x2686))
+(or x2538 (not x114) x2687)
+(or (not x2687) (not x2538))
+(or (not x2687) x114)
+(or x2544 (not x113))
+(or x2544 (not x2687))
+(or x113 x2687 (not x2544))
+(or (not x2544) (not x2545) (not x2180) (not x2181) (not x2182) (not x2181) x2688)
+(or (not x2688) x2544)
+(or (not x2688) x2545)
+(or (not x2688) x2180)
+(or (not x2688) x2181)
+(or (not x2688) x2182)
+(or (not x2688) x2181)
+(or x2689 (not x2688))
+(or x2689 x2545)
+(or x2688 (not x2545) (not x2689))
+(or (not x114) (not x2538) (not x2180) (not x2181) (not x2182) (not x2181) x2690)
+(or (not x2690) x114)
+(or (not x2690) x2538)
+(or (not x2690) x2180)
+(or (not x2690) x2181)
+(or (not x2690) x2182)
+(or (not x2690) x2181)
+(or x2691 (not x2690))
+(or x2691 x2538)
+(or x2690 (not x2538) (not x2691))
+(or (not x2691) (not x2689) (not x2686) (not x2682) (not x114) x2630)
+(or (not x2630) x2691)
+(or (not x2630) x2689)
+(or (not x2630) x2686)
+(or (not x2630) x2682)
+(or (not x2630) x114)
+(or x2523 (not x2630))
+(or x2523 (not x2631))
+(or x2523 (not x2632))
+(or x2523 (not x2633))
+(or x2630 x2631 x2632 x2633 (not x2523))
+(or (not x103) (not x2519) (not x2518) (not x2180) (not x2523) x2692)
+(or (not x2692) x103)
+(or (not x2692) x2519)
+(or (not x2692) x2518)
+(or (not x2692) x2180)
+(or (not x2692) x2523)
+(or x2693 (not x2636))
+(or x2693 x100)
+(or x2636 (not x100) (not x2693))
+(or x2694 (not x2626))
+(or x2694 (not x2636))
+(or x2694 x101)
+(or x2626 x2636 (not x101) (not x2694))
+(or x2695 (not x2619))
+(or x2695 (not x2626))
+(or x2695 (not x2636))
+(or x2695 x102)
+(or x2619 x2626 x2636 (not x102) (not x2695))
+(or x99 (not x2695) (not x2694) (not x2693) x2696)
+(or (not x2696) (not x99))
+(or (not x2696) x2695)
+(or (not x2696) x2694)
+(or (not x2696) x2693)
+(or x2697 (not x2696))
+(or x2697 x2531)
+(or x2697 x2180)
+(or x2697 (not x2698))
+(or x2697 (not x2699))
+(or x2697 (not x2698))
+(or x2696 (not x2531) (not x2180) x2698 x2699 x2698 (not x2697))
+(or (not x2697) (not x2531) x2487)
+(or (not x2487) x2697)
+(or (not x2487) x2531)
+(or x2700 (not x2626))
+(or x2700 x101)
+(or x2626 (not x101) (not x2700))
+(or x2701 (not x2619))
+(or x2701 (not x2626))
+(or x2701 x102)
+(or x2619 x2626 (not x102) (not x2701))
+(or x100 (not x2701) (not x2700) x2702)
+(or (not x2702) (not x100))
+(or (not x2702) x2701)
+(or (not x2702) x2700)
+(or x2703 (not x2702))
+(or x2703 x2636)
+(or x2703 x2180)
+(or x2703 (not x2698))
+(or x2703 (not x2699))
+(or x2703 (not x2698))
+(or x2702 (not x2636) (not x2180) x2698 x2699 x2698 (not x2703))
+(or (not x2703) (not x2636) x2517)
+(or (not x2517) x2703)
+(or (not x2517) x2636)
+(or x2704 (not x2619))
+(or x2704 x102)
+(or x2619 (not x102) (not x2704))
+(or x101 (not x2704) x2705)
+(or (not x2705) (not x101))
+(or (not x2705) x2704)
+(or x2706 (not x2705))
+(or x2706 x2626)
+(or x2706 x2180)
+(or x2706 (not x2698))
+(or x2706 (not x2699))
+(or x2706 (not x2698))
+(or x2705 (not x2626) (not x2180) x2698 x2699 x2698 (not x2706))
+(or (not x2706) (not x2626) x2515)
+(or (not x2515) x2706)
+(or (not x2515) x2626)
+(or x2707 x102)
+(or x2707 x2619)
+(or x2707 x2180)
+(or x2707 (not x2698))
+(or x2707 (not x2699))
+(or x2707 (not x2698))
+(or (not x102) (not x2619) (not x2180) x2698 x2699 x2698 (not x2707))
+(or (not x2707) (not x2619) x2513)
+(or (not x2513) x2707)
+(or (not x2513) x2619)
+(or x2528 (not x2513))
+(or x2528 (not x2515))
+(or x2528 (not x2517))
+(or x2528 (not x2487))
+(or x2528 x102)
+(or x2513 x2515 x2517 x2487 (not x102) (not x2528))
+(or x2708 (not x2606))
+(or x2708 x104)
+(or x2606 (not x104) (not x2708))
+(or x2709 (not x2599))
+(or x2709 (not x2606))
+(or x2709 x105)
+(or x2599 x2606 (not x105) (not x2709))
+(or x2710 (not x2592))
+(or x2710 (not x2599))
+(or x2710 (not x2606))
+(or x2710 x106)
+(or x2592 x2599 x2606 (not x106) (not x2710))
+(or x103 (not x2710) (not x2709) (not x2708) x2711)
+(or (not x2711) (not x103))
+(or (not x2711) x2710)
+(or (not x2711) x2709)
+(or (not x2711) x2708)
+(or x2712 (not x2711))
+(or x2712 x2613)
+(or x2712 x2180)
+(or x2712 (not x2698))
+(or x2712 (not x2699))
+(or x2712 (not x2698))
+(or x2711 (not x2613) (not x2180) x2698 x2699 x2698 (not x2712))
+(or (not x2712) (not x2613) x2511)
+(or (not x2511) x2712)
+(or (not x2511) x2613)
+(or x2713 (not x2599))
+(or x2713 x105)
+(or x2599 (not x105) (not x2713))
+(or x2714 (not x2592))
+(or x2714 (not x2599))
+(or x2714 x106)
+(or x2592 x2599 (not x106) (not x2714))
+(or x104 (not x2714) (not x2713) x2715)
+(or (not x2715) (not x104))
+(or (not x2715) x2714)
+(or (not x2715) x2713)
+(or x2716 (not x2715))
+(or x2716 x2606)
+(or x2716 x2180)
+(or x2716 (not x2698))
+(or x2716 (not x2699))
+(or x2716 (not x2698))
+(or x2715 (not x2606) (not x2180) x2698 x2699 x2698 (not x2716))
+(or (not x2716) (not x2606) x2509)
+(or (not x2509) x2716)
+(or (not x2509) x2606)
+(or x2717 (not x2592))
+(or x2717 x106)
+(or x2592 (not x106) (not x2717))
+(or x105 (not x2717) x2718)
+(or (not x2718) (not x105))
+(or (not x2718) x2717)
+(or x2719 (not x2718))
+(or x2719 x2599)
+(or x2719 x2180)
+(or x2719 (not x2698))
+(or x2719 (not x2699))
+(or x2719 (not x2698))
+(or x2718 (not x2599) (not x2180) x2698 x2699 x2698 (not x2719))
+(or (not x2719) (not x2599) x2507)
+(or (not x2507) x2719)
+(or (not x2507) x2599)
+(or x2720 x106)
+(or x2720 x2592)
+(or x2720 x2180)
+(or x2720 (not x2698))
+(or x2720 (not x2699))
+(or x2720 (not x2698))
+(or (not x106) (not x2592) (not x2180) x2698 x2699 x2698 (not x2720))
+(or (not x2720) (not x2592) x2505)
+(or (not x2505) x2720)
+(or (not x2505) x2592)
+(or x2527 (not x2505))
+(or x2527 (not x2507))
+(or x2527 (not x2509))
+(or x2527 (not x2511))
+(or x2527 x106)
+(or x2505 x2507 x2509 x2511 (not x106) (not x2527))
+(or x2721 (not x2579))
+(or x2721 x108)
+(or x2579 (not x108) (not x2721))
+(or x2722 (not x2572))
+(or x2722 (not x2579))
+(or x2722 x109)
+(or x2572 x2579 (not x109) (not x2722))
+(or x2723 (not x2565))
+(or x2723 (not x2572))
+(or x2723 (not x2579))
+(or x2723 x110)
+(or x2565 x2572 x2579 (not x110) (not x2723))
+(or x107 (not x2723) (not x2722) (not x2721) x2724)
+(or (not x2724) (not x107))
+(or (not x2724) x2723)
+(or (not x2724) x2722)
+(or (not x2724) x2721)
+(or x2725 (not x2724))
+(or x2725 x2586)
+(or x2725 x2180)
+(or x2725 (not x2698))
+(or x2725 (not x2699))
+(or x2725 (not x2698))
+(or x2724 (not x2586) (not x2180) x2698 x2699 x2698 (not x2725))
+(or (not x2725) (not x2586) x2503)
+(or (not x2503) x2725)
+(or (not x2503) x2586)
+(or x2726 (not x2572))
+(or x2726 x109)
+(or x2572 (not x109) (not x2726))
+(or x2727 (not x2565))
+(or x2727 (not x2572))
+(or x2727 x110)
+(or x2565 x2572 (not x110) (not x2727))
+(or x108 (not x2727) (not x2726) x2728)
+(or (not x2728) (not x108))
+(or (not x2728) x2727)
+(or (not x2728) x2726)
+(or x2729 (not x2728))
+(or x2729 x2579)
+(or x2729 x2180)
+(or x2729 (not x2698))
+(or x2729 (not x2699))
+(or x2729 (not x2698))
+(or x2728 (not x2579) (not x2180) x2698 x2699 x2698 (not x2729))
+(or (not x2729) (not x2579) x2501)
+(or (not x2501) x2729)
+(or (not x2501) x2579)
+(or x2730 (not x2565))
+(or x2730 x110)
+(or x2565 (not x110) (not x2730))
+(or x109 (not x2730) x2731)
+(or (not x2731) (not x109))
+(or (not x2731) x2730)
+(or x2732 (not x2731))
+(or x2732 x2572)
+(or x2732 x2180)
+(or x2732 (not x2698))
+(or x2732 (not x2699))
+(or x2732 (not x2698))
+(or x2731 (not x2572) (not x2180) x2698 x2699 x2698 (not x2732))
+(or (not x2732) (not x2572) x2499)
+(or (not x2499) x2732)
+(or (not x2499) x2572)
+(or x2733 x110)
+(or x2733 x2565)
+(or x2733 x2180)
+(or x2733 (not x2698))
+(or x2733 (not x2699))
+(or x2733 (not x2698))
+(or (not x110) (not x2565) (not x2180) x2698 x2699 x2698 (not x2733))
+(or (not x2733) (not x2565) x2497)
+(or (not x2497) x2733)
+(or (not x2497) x2565)
+(or x2526 (not x2497))
+(or x2526 (not x2499))
+(or x2526 (not x2501))
+(or x2526 (not x2503))
+(or x2526 x110)
+(or x2497 x2499 x2501 x2503 (not x110) (not x2526))
+(or x2734 (not x2552))
+(or x2734 x112)
+(or x2552 (not x112) (not x2734))
+(or x2735 (not x2545))
+(or x2735 (not x2552))
+(or x2735 x113)
+(or x2545 x2552 (not x113) (not x2735))
+(or x2736 (not x2538))
+(or x2736 (not x2545))
+(or x2736 (not x2552))
+(or x2736 x114)
+(or x2538 x2545 x2552 (not x114) (not x2736))
+(or x111 (not x2736) (not x2735) (not x2734) x2737)
+(or (not x2737) (not x111))
+(or (not x2737) x2736)
+(or (not x2737) x2735)
+(or (not x2737) x2734)
+(or x2738 (not x2737))
+(or x2738 x2559)
+(or x2738 x2180)
+(or x2738 (not x2698))
+(or x2738 (not x2699))
+(or x2738 (not x2698))
+(or x2737 (not x2559) (not x2180) x2698 x2699 x2698 (not x2738))
+(or (not x2738) (not x2559) x2495)
+(or (not x2495) x2738)
+(or (not x2495) x2559)
+(or x2739 (not x2545))
+(or x2739 x113)
+(or x2545 (not x113) (not x2739))
+(or x2740 (not x2538))
+(or x2740 (not x2545))
+(or x2740 x114)
+(or x2538 x2545 (not x114) (not x2740))
+(or x112 (not x2740) (not x2739) x2741)
+(or (not x2741) (not x112))
+(or (not x2741) x2740)
+(or (not x2741) x2739)
+(or x2742 (not x2741))
+(or x2742 x2552)
+(or x2742 x2180)
+(or x2742 (not x2698))
+(or x2742 (not x2699))
+(or x2742 (not x2698))
+(or x2741 (not x2552) (not x2180) x2698 x2699 x2698 (not x2742))
+(or (not x2742) (not x2552) x2493)
+(or (not x2493) x2742)
+(or (not x2493) x2552)
+(or x2743 (not x2538))
+(or x2743 x114)
+(or x2538 (not x114) (not x2743))
+(or x113 (not x2743) x2744)
+(or (not x2744) (not x113))
+(or (not x2744) x2743)
+(or x2745 (not x2744))
+(or x2745 x2545)
+(or x2745 x2180)
+(or x2745 (not x2698))
+(or x2745 (not x2699))
+(or x2745 (not x2698))
+(or x2744 (not x2545) (not x2180) x2698 x2699 x2698 (not x2745))
+(or (not x2745) (not x2545) x2491)
+(or (not x2491) x2745)
+(or (not x2491) x2545)
+(or x2746 x114)
+(or x2746 x2538)
+(or x2746 x2180)
+(or x2746 (not x2698))
+(or x2746 (not x2699))
+(or x2746 (not x2698))
+(or (not x114) (not x2538) (not x2180) x2698 x2699 x2698 (not x2746))
+(or (not x2746) (not x2538) x2489)
+(or (not x2489) x2746)
+(or (not x2489) x2538)
+(or x2525 (not x2489))
+(or x2525 (not x2491))
+(or x2525 (not x2493))
+(or x2525 (not x2495))
+(or x2525 x114)
+(or x2489 x2491 x2493 x2495 (not x114) (not x2525))
+(or (not x2525) (not x2526) (not x2527) (not x2528) x2634)
+(or (not x2634) x2525)
+(or (not x2634) x2526)
+(or (not x2634) x2527)
+(or (not x2634) x2528)
+(or x2747 x2459)
+(or x2747 x2455)
+(or x2747 x2451)
+(or x2747 x2449)
+(or (not x2459) (not x2455) (not x2451) (not x2449) (not x2747))
+(or x2172 (not x2173) x2467)
+(or (not x2467) (not x2172))
+(or (not x2467) x2173)
+(or x2147 (not x2148) x2472)
+(or (not x2472) (not x2147))
+(or (not x2472) x2148)
+(or x2158 (not x2159) x2477)
+(or (not x2477) (not x2158))
+(or (not x2477) x2159)
+(or x2165 (not x2166) x2482)
+(or (not x2482) (not x2165))
+(or (not x2482) x2166)
+(or x2151 (not x2482))
+(or x2151 (not x2477))
+(or x2151 (not x2472))
+(or x2151 (not x2467))
+(or x2482 x2477 x2472 x2467 (not x2151))
+(or (not x2151) (not x2747) x2699)
+(or (not x2699) x2151)
+(or (not x2699) x2747)
+(or x2619 x2626 x2636 x2531 x2748)
+(or (not x2748) (not x2619))
+(or (not x2748) (not x2626))
+(or (not x2748) (not x2636))
+(or (not x2748) (not x2531))
+(or x102 x101 x100 x99 x2749)
+(or (not x2749) (not x102))
+(or (not x2749) (not x101))
+(or (not x2749) (not x100))
+(or (not x2749) (not x99))
+(or x2750 (not x2749))
+(or x2750 (not x2748))
+(or x2749 x2748 (not x2750))
+(or x2592 x2599 x2606 x2613 x2751)
+(or (not x2751) (not x2592))
+(or (not x2751) (not x2599))
+(or (not x2751) (not x2606))
+(or (not x2751) (not x2613))
+(or x106 x105 x104 x103 x2752)
+(or (not x2752) (not x106))
+(or (not x2752) (not x105))
+(or (not x2752) (not x104))
+(or (not x2752) (not x103))
+(or x2753 (not x2752))
+(or x2753 (not x2751))
+(or x2752 x2751 (not x2753))
+(or x2565 x2572 x2579 x2586 x2754)
+(or (not x2754) (not x2565))
+(or (not x2754) (not x2572))
+(or (not x2754) (not x2579))
+(or (not x2754) (not x2586))
+(or x110 x109 x108 x107 x2755)
+(or (not x2755) (not x110))
+(or (not x2755) (not x109))
+(or (not x2755) (not x108))
+(or (not x2755) (not x107))
+(or x2756 (not x2755))
+(or x2756 (not x2754))
+(or x2755 x2754 (not x2756))
+(or x2538 x2545 x2552 x2559 x2757)
+(or (not x2757) (not x2538))
+(or (not x2757) (not x2545))
+(or (not x2757) (not x2552))
+(or (not x2757) (not x2559))
+(or x114 x113 x112 x111 x2758)
+(or (not x2758) (not x114))
+(or (not x2758) (not x113))
+(or (not x2758) (not x112))
+(or (not x2758) (not x111))
+(or x2759 (not x2758))
+(or x2759 (not x2757))
+(or x2758 x2757 (not x2759))
+(or (not x2759) (not x2756) (not x2753) (not x2750) x2698)
+(or (not x2698) x2759)
+(or (not x2698) x2756)
+(or (not x2698) x2753)
+(or (not x2698) x2750)
+(or x2184 x2180)
+(or x2184 (not x2698))
+(or x2184 (not x2699))
+(or (not x2180) x2698 x2699 (not x2184))
+(or x2519 x2180)
+(or x2519 (not x2698))
+(or x2519 (not x2699))
+(or x2519 (not x2698))
+(or (not x2180) x2698 x2699 x2698 (not x2519))
+(or (not x100) (not x2519) (not x2518) (not x2525) (not x2526) (not x2527) (not x2528) (not x2180) x2760)
+(or (not x2760) x100)
+(or (not x2760) x2519)
+(or (not x2760) x2518)
+(or (not x2760) x2525)
+(or (not x2760) x2526)
+(or (not x2760) x2527)
+(or (not x2760) x2528)
+(or (not x2760) x2180)
+(or (not x2459) (not x2455) (not x2451) (not x2449) x2761)
+(or (not x2761) x2459)
+(or (not x2761) x2455)
+(or (not x2761) x2451)
+(or (not x2761) x2449)
+(or x2423 (not x2172))
+(or x2423 x2173)
+(or x2172 (not x2173) (not x2423))
+(or x2414 (not x2147))
+(or x2414 x2148)
+(or x2147 (not x2148) (not x2414))
+(or x2416 (not x2158))
+(or x2416 x2159)
+(or x2158 (not x2159) (not x2416))
+(or x2418 (not x2165))
+(or x2418 x2166)
+(or x2165 (not x2166) (not x2418))
+(or (not x2418) (not x2416) (not x2414) (not x2423) x2175)
+(or (not x2175) x2418)
+(or (not x2175) x2416)
+(or (not x2175) x2414)
+(or (not x2175) x2423)
+(or x2182 (not x2175))
+(or x2182 (not x2761))
+(or x2175 x2761 (not x2182))
+(or x2762 (not x2619))
+(or x2762 (not x2626))
+(or x2762 (not x2636))
+(or x2762 (not x2531))
+(or x2619 x2626 x2636 x2531 (not x2762))
+(or x2763 (not x102))
+(or x2763 (not x101))
+(or x2763 (not x100))
+(or x2763 (not x99))
+(or x102 x101 x100 x99 (not x2763))
+(or (not x2763) (not x2762) x2764)
+(or (not x2764) x2763)
+(or (not x2764) x2762)
+(or x2765 (not x2592))
+(or x2765 (not x2599))
+(or x2765 (not x2606))
+(or x2765 (not x2613))
+(or x2592 x2599 x2606 x2613 (not x2765))
+(or x2766 (not x106))
+(or x2766 (not x105))
+(or x2766 (not x104))
+(or x2766 (not x103))
+(or x106 x105 x104 x103 (not x2766))
+(or (not x2766) (not x2765) x2767)
+(or (not x2767) x2766)
+(or (not x2767) x2765)
+(or x2768 (not x2565))
+(or x2768 (not x2572))
+(or x2768 (not x2579))
+(or x2768 (not x2586))
+(or x2565 x2572 x2579 x2586 (not x2768))
+(or x2769 (not x110))
+(or x2769 (not x109))
+(or x2769 (not x108))
+(or x2769 (not x107))
+(or x110 x109 x108 x107 (not x2769))
+(or (not x2769) (not x2768) x2770)
+(or (not x2770) x2769)
+(or (not x2770) x2768)
+(or x2771 (not x2538))
+(or x2771 (not x2545))
+(or x2771 (not x2552))
+(or x2771 (not x2559))
+(or x2538 x2545 x2552 x2559 (not x2771))
+(or (not x2772) (not x2771) x2773)
+(or (not x2773) x2772)
+(or (not x2773) x2771)
+(or x2181 (not x2773))
+(or x2181 (not x2770))
+(or x2181 (not x2767))
+(or x2181 (not x2764))
+(or x2773 x2770 x2767 x2764 (not x2181))
+(or (not x2180) (not x2181) (not x2182) (not x2181) x2629)
+(or (not x2629) x2180)
+(or (not x2629) x2181)
+(or (not x2629) x2182)
+(or (not x2629) x2181)
+(or x2772 (not x114))
+(or x2772 (not x113))
+(or x2772 (not x112))
+(or x2772 (not x111))
+(or x114 x113 x112 x111 (not x2772))
+(or x2518 (not x114))
+(or x2518 (not x113))
+(or x2518 (not x112))
+(or x2518 (not x111))
+(or x2518 (not x110))
+(or x2518 (not x109))
+(or x2518 (not x108))
+(or x2518 (not x107))
+(or x2518 (not x106))
+(or x2518 (not x105))
+(or x2518 (not x104))
+(or x2518 (not x103))
+(or x2518 (not x102))
+(or x2518 (not x101))
+(or x2518 (not x100))
+(or x2518 (not x99))
+(or x114 x113 x112 x111 x110 x109 x108 x107 x106 x105 x104 x103 x102 x101 x100 x99 (not x2518))
+(or x2626 (not x101) x2774)
+(or (not x2774) (not x2626))
+(or (not x2774) x101)
+(or x2619 x2626 (not x102) x2775)
+(or (not x2775) (not x2619))
+(or (not x2775) (not x2626))
+(or (not x2775) x102)
+(or x2642 (not x100))
+(or x2642 (not x2775))
+(or x2642 (not x2774))
+(or x100 x2775 x2774 (not x2642))
+(or (not x2642) (not x2636) (not x2518) (not x2180) (not x2181) (not x2182) (not x2181) x2776)
+(or (not x2776) x2642)
+(or (not x2776) x2636)
+(or (not x2776) x2518)
+(or (not x2776) x2180)
+(or (not x2776) x2181)
+(or (not x2776) x2182)
+(or (not x2776) x2181)
+(or x2777 (not x2776))
+(or x2777 (not x2760))
+(or x2777 (not x2692))
+(or x2777 (not x2635))
+(or x2776 x2760 x2692 x2635 (not x2777))
+(or (not x2778) x2194)
+(or (not x2778) (not x2193))
+(or x2194 (not x2193) x2191)
+(or (not x2191) (not x2194))
+(or (not x2191) x2193)
+(or x2194 x2193 x2190)
+(or (not x2190) (not x2194))
+(or (not x2190) (not x2193))
+(or x2779 (not x2190))
+(or x2779 (not x2191))
+(or x2190 x2191 (not x2779))
+(or (not x2780) x2209)
+(or (not x2780) (not x2208))
+(or x2209 (not x2208) x2206)
+(or (not x2206) (not x2209))
+(or (not x2206) x2208)
+(or x2209 x2208 x2205)
+(or (not x2205) (not x2209))
+(or (not x2205) (not x2208))
+(or x2781 (not x2205))
+(or x2781 (not x2206))
+(or x2205 x2206 (not x2781))
+(or (not x2782) x2224)
+(or (not x2782) (not x2223))
+(or x2224 (not x2223) x2221)
+(or (not x2221) (not x2224))
+(or (not x2221) x2223)
+(or x2224 x2223 x2220)
+(or (not x2220) (not x2224))
+(or (not x2220) (not x2223))
+(or x2783 (not x2220))
+(or x2783 (not x2221))
+(or x2220 x2221 (not x2783))
+(or (not x2784) x2239)
+(or (not x2784) (not x2238))
+(or x2239 (not x2238) x2236)
+(or (not x2236) (not x2239))
+(or (not x2236) x2238)
+(or x2239 x2238 x2235)
+(or (not x2235) (not x2239))
+(or (not x2235) (not x2238))
+(or x2785 (not x2235))
+(or x2785 (not x2236))
+(or x2235 x2236 (not x2785))
+(or (not x2786) x2254)
+(or (not x2786) (not x2253))
+(or x2254 (not x2253) x2251)
+(or (not x2251) (not x2254))
+(or (not x2251) x2253)
+(or x2254 x2253 x2250)
+(or (not x2250) (not x2254))
+(or (not x2250) (not x2253))
+(or x2787 (not x2250))
+(or x2787 (not x2251))
+(or x2250 x2251 (not x2787))
+(or (not x2788) x2269)
+(or (not x2788) (not x2268))
+(or x2269 (not x2268) x2266)
+(or (not x2266) (not x2269))
+(or (not x2266) x2268)
+(or x2269 x2268 x2265)
+(or (not x2265) (not x2269))
+(or (not x2265) (not x2268))
+(or x2789 (not x2265))
+(or x2789 (not x2266))
+(or x2265 x2266 (not x2789))
+(or (not x2790) x2284)
+(or (not x2790) (not x2283))
+(or x2284 (not x2283) x2281)
+(or (not x2281) (not x2284))
+(or (not x2281) x2283)
+(or x2284 x2283 x2280)
+(or (not x2280) (not x2284))
+(or (not x2280) (not x2283))
+(or x2791 (not x2280))
+(or x2791 (not x2281))
+(or x2280 x2281 (not x2791))
+(or (not x2792) x2299)
+(or (not x2792) (not x2298))
+(or x2299 (not x2298) x2296)
+(or (not x2296) (not x2299))
+(or (not x2296) x2298)
+(or x2299 x2298 x2295)
+(or (not x2295) (not x2299))
+(or (not x2295) (not x2298))
+(or x2793 (not x2295))
+(or x2793 (not x2296))
+(or x2295 x2296 (not x2793))
+(or (not x2794) x2314)
+(or (not x2794) (not x2313))
+(or x2314 (not x2313) x2311)
+(or (not x2311) (not x2314))
+(or (not x2311) x2313)
+(or x2314 x2313 x2310)
+(or (not x2310) (not x2314))
+(or (not x2310) (not x2313))
+(or x2795 (not x2310))
+(or x2795 (not x2311))
+(or x2310 x2311 (not x2795))
+(or (not x2796) x2329)
+(or (not x2796) (not x2328))
+(or x2329 (not x2328) x2326)
+(or (not x2326) (not x2329))
+(or (not x2326) x2328)
+(or x2329 x2328 x2325)
+(or (not x2325) (not x2329))
+(or (not x2325) (not x2328))
+(or x2797 (not x2325))
+(or x2797 (not x2326))
+(or x2325 x2326 (not x2797))
+(or (not x2798) x2344)
+(or (not x2798) (not x2343))
+(or x2344 (not x2343) x2341)
+(or (not x2341) (not x2344))
+(or (not x2341) x2343)
+(or x2344 x2343 x2340)
+(or (not x2340) (not x2344))
+(or (not x2340) (not x2343))
+(or x2799 (not x2340))
+(or x2799 (not x2341))
+(or x2340 x2341 (not x2799))
+(or (not x2800) x2359)
+(or (not x2800) (not x2358))
+(or x2359 (not x2358) x2356)
+(or (not x2356) (not x2359))
+(or (not x2356) x2358)
+(or x2359 x2358 x2355)
+(or (not x2355) (not x2359))
+(or (not x2355) (not x2358))
+(or x2801 (not x2355))
+(or x2801 (not x2356))
+(or x2355 x2356 (not x2801))
+(or (not x2802) x2374)
+(or (not x2802) (not x2373))
+(or x2374 (not x2373) x2371)
+(or (not x2371) (not x2374))
+(or (not x2371) x2373)
+(or x2374 x2373 x2370)
+(or (not x2370) (not x2374))
+(or (not x2370) (not x2373))
+(or x2803 (not x2370))
+(or x2803 (not x2371))
+(or x2370 x2371 (not x2803))
+(or (not x2804) x2389)
+(or (not x2804) (not x2388))
+(or x2389 (not x2388) x2386)
+(or (not x2386) (not x2389))
+(or (not x2386) x2388)
+(or x2389 x2388 x2385)
+(or (not x2385) (not x2389))
+(or (not x2385) (not x2388))
+(or x2805 (not x2385))
+(or x2805 (not x2386))
+(or x2385 x2386 (not x2805))
+(or (not x2806) x2404)
+(or (not x2806) (not x2403))
+(or x2404 (not x2403) x2401)
+(or (not x2401) (not x2404))
+(or (not x2401) x2403)
+(or x2404 x2403 x2400)
+(or (not x2400) (not x2404))
+(or (not x2400) (not x2403))
+(or x2807 (not x2400))
+(or x2807 (not x2401))
+(or x2400 x2401 (not x2807))
+(or (not x2808) x2439)
+(or (not x2808) (not x2438))
+(or x2439 (not x2438) x2436)
+(or (not x2436) (not x2439))
+(or (not x2436) x2438)
+(or x2439 x2438 x2435)
+(or (not x2435) (not x2439))
+(or (not x2435) (not x2438))
+(or x2809 (not x2435))
+(or x2809 (not x2436))
+(or x2435 x2436 (not x2809))
+(or (not x99))
+(or (not x100))
+(or (not x101))
+(or (not x102))
+(or (not x103))
+(or (not x104))
+(or (not x105))
+(or (not x106))
+(or (not x107))
+(or (not x108))
+(or (not x109))
+(or (not x110))
+(or (not x111))
+(or (not x112))
+(or (not x113))
+(or (not x114))
+(or (not x2636))
+(or (not x2626))
+(or (not x2619))
+(or (not x2613))
+(or (not x2606))
+(or (not x2599))
+(or (not x2592))
+(or (not x2586))
+(or (not x2579))
+(or (not x2572))
+(or (not x2565))
+(or (not x2559))
+(or (not x2552))
+(or (not x2545))
+(or (not x2538))
+(or (not x2531))
+(or (not x2180))
+(or (not x2166))
+(or (not x2159))
+(or (not x2148))
+(or (not x2173))
+(or (not x2459))
+(or (not x2455))
+(or (not x2451))
+(or (not x2449))
+(or (not x2438))
+(or (not x2439))
+(or (not x2165))
+(or (not x2158))
+(or (not x2147))
+(or (not x2172))
+(or (not x2403))
+(or (not x2404))
+(or (not x2388))
+(or (not x2389))
+(or (not x2373))
+(or (not x2374))
+(or (not x2358))
+(or (not x2359))
+(or (not x2343))
+(or (not x2344))
+(or (not x2328))
+(or (not x2329))
+(or (not x2313))
+(or (not x2314))
+(or (not x2298))
+(or (not x2299))
+(or (not x2283))
+(or (not x2284))
+(or (not x2268))
+(or (not x2269))
+(or (not x2253))
+(or (not x2254))
+(or (not x2238))
+(or (not x2239))
+(or (not x2223))
+(or (not x2224))
+(or (not x2208))
+(or (not x2209))
+(or (not x2193))
+(or (not x2194))
+(or (not x2443))
+(or (not x2150))
+(or (not x2186))
+(or (not x2408))
+(or (not x2393))
+(or (not x2378))
+(or (not x2363))
+(or (not x2348))
+(or (not x2333))
+(or (not x2318))
+(or (not x2303))
+(or (not x2288))
+(or (not x2273))
+(or (not x2258))
+(or (not x2243))
+(or (not x2228))
+(or (not x2213))
+(or (not x2198))
+(or (not x2176))
+(or (not x2168))
+(or (not x2161))
+(or (not x2153))
+(or (not x97) x2810)
+(or x97 (not x2810))
+(or (not x98) (not x2810))
+(or x98 x2810)
+(or x2809 x2808)
+(or x2807 x2806)
+(or x2805 x2804)
+(or x2803 x2802)
+(or x2801 x2800)
+(or x2799 x2798)
+(or x2797 x2796)
+(or x2795 x2794)
+(or x2793 x2792)
+(or x2791 x2790)
+(or x2789 x2788)
+(or x2787 x2786)
+(or x2785 x2784)
+(or x2783 x2782)
+(or x2781 x2780)
+(or x2779 x2778)
+(or (not x80) x2777)
+(or x80 (not x2777))
+(or (not x81) x2628)
+(or x81 (not x2628))
+(or (not x82) x2621)
+(or x82 (not x2621))
+(or (not x83) x2615)
+(or x83 (not x2615))
+(or (not x84) x2608)
+(or x84 (not x2608))
+(or (not x85) x2601)
+(or x85 (not x2601))
+(or (not x86) x2594)
+(or x86 (not x2594))
+(or (not x87) x2588)
+(or x87 (not x2588))
+(or (not x88) x2581)
+(or x88 (not x2581))
+(or (not x89) x2574)
+(or x89 (not x2574))
+(or (not x90) x2567)
+(or x90 (not x2567))
+(or (not x91) x2561)
+(or x91 (not x2561))
+(or (not x92) x2554)
+(or x92 (not x2554))
+(or (not x93) x2547)
+(or x93 (not x2547))
+(or (not x94) x2540)
+(or x94 (not x2540))
+(or (not x95) x2533)
+(or x95 (not x2533))
+(or (not x1963) x2516)
+(or x1963 (not x2516))
+(or (not x1953) x2514)
+(or x1953 (not x2514))
+(or (not x1946) x2512)
+(or x1946 (not x2512))
+(or (not x1940) x2510)
+(or x1940 (not x2510))
+(or (not x1933) x2508)
+(or x1933 (not x2508))
+(or (not x1926) x2506)
+(or x1926 (not x2506))
+(or (not x1919) x2504)
+(or x1919 (not x2504))
+(or (not x1913) x2502)
+(or x1913 (not x2502))
+(or (not x1906) x2500)
+(or x1906 (not x2500))
+(or (not x1899) x2498)
+(or x1899 (not x2498))
+(or (not x1892) x2496)
+(or x1892 (not x2496))
+(or (not x1886) x2494)
+(or x1886 (not x2494))
+(or (not x1879) x2492)
+(or x1879 (not x2492))
+(or (not x1872) x2490)
+(or x1872 (not x2490))
+(or (not x1865) x2488)
+(or x1865 (not x2488))
+(or (not x1858) x2486)
+(or x1858 (not x2486))
+(or (not x1507) x2485)
+(or x1507 (not x2485))
+(or (not x1493) x2484)
+(or x1493 (not x2484))
+(or (not x1486) x2479)
+(or x1486 (not x2479))
+(or (not x1475) x2474)
+(or x1475 (not x2474))
+(or (not x1500) x2469)
+(or x1500 (not x2469))
+(or (not x1786) x2464)
+(or x1786 (not x2464))
+(or (not x1782) x2461)
+(or x1782 (not x2461))
+(or (not x1778) x2457)
+(or x1778 (not x2457))
+(or (not x1776) x2453)
+(or x1776 (not x2453))
+(or (not x1765) x2448)
+(or x1765 (not x2448))
+(or (not x1766) x2442)
+(or x1766 (not x2442))
+(or (not x1492) x2433)
+(or x1492 (not x2433))
+(or (not x1485) x2429)
+(or x1485 (not x2429))
+(or (not x1474) x2425)
+(or x1474 (not x2425))
+(or (not x1499) x2420)
+(or x1499 (not x2420))
+(or (not x1730) x2413)
+(or x1730 (not x2413))
+(or (not x1731) x2407)
+(or x1731 (not x2407))
+(or (not x1715) x2398)
+(or x1715 (not x2398))
+(or (not x1716) x2392)
+(or x1716 (not x2392))
+(or (not x1700) x2383)
+(or x1700 (not x2383))
+(or (not x1701) x2377)
+(or x1701 (not x2377))
+(or (not x1685) x2368)
+(or x1685 (not x2368))
+(or (not x1686) x2362)
+(or x1686 (not x2362))
+(or (not x1670) x2353)
+(or x1670 (not x2353))
+(or (not x1671) x2347)
+(or x1671 (not x2347))
+(or (not x1655) x2338)
+(or x1655 (not x2338))
+(or (not x1656) x2332)
+(or x1656 (not x2332))
+(or (not x1640) x2323)
+(or x1640 (not x2323))
+(or (not x1641) x2317)
+(or x1641 (not x2317))
+(or (not x1625) x2308)
+(or x1625 (not x2308))
+(or (not x1626) x2302)
+(or x1626 (not x2302))
+(or (not x1610) x2293)
+(or x1610 (not x2293))
+(or (not x1611) x2287)
+(or x1611 (not x2287))
+(or (not x1595) x2278)
+(or x1595 (not x2278))
+(or (not x1596) x2272)
+(or x1596 (not x2272))
+(or (not x1580) x2263)
+(or x1580 (not x2263))
+(or (not x1581) x2257)
+(or x1581 (not x2257))
+(or (not x1565) x2248)
+(or x1565 (not x2248))
+(or (not x1566) x2242)
+(or x1566 (not x2242))
+(or (not x1550) x2233)
+(or x1550 (not x2233))
+(or (not x1551) x2227)
+(or x1551 (not x2227))
+(or (not x1535) x2218)
+(or x1535 (not x2218))
+(or (not x1536) x2212)
+(or x1536 (not x2212))
+(or (not x1520) x2203)
+(or x1520 (not x2203))
+(or (not x1521) x2197)
+(or x1521 (not x2197))
+(or (not x1770) x2643)
+(or x1770 (not x2643))
+(or (not x1477) x2188)
+(or x1477 (not x2188))
+(or (not x1513) x2183)
+(or x1513 (not x2183))
+(or (not x1735) x2646)
+(or x1735 (not x2646))
+(or (not x1720) x2648)
+(or x1720 (not x2648))
+(or (not x1705) x2653)
+(or x1705 (not x2653))
+(or (not x1690) x2657)
+(or x1690 (not x2657))
+(or (not x1675) x2660)
+(or x1675 (not x2660))
+(or (not x1660) x2662)
+(or x1660 (not x2662))
+(or (not x1645) x2667)
+(or x1645 (not x2667))
+(or (not x1630) x2671)
+(or x1630 (not x2671))
+(or (not x1615) x2674)
+(or x1615 (not x2674))
+(or (not x1600) x2676)
+(or x1600 (not x2676))
+(or (not x1585) x2681)
+(or x1585 (not x2681))
+(or (not x1570) x2685)
+(or x1570 (not x2685))
+(or (not x1555) x2688)
+(or x1555 (not x2688))
+(or (not x1540) x2690)
+(or x1540 (not x2690))
+(or (not x1525) x2640)
+(or x1525 (not x2640))
+(or (not x1503) x2179)
+(or x1503 (not x2179))
+(or (not x1495) x2170)
+(or x1495 (not x2170))
+(or (not x1488) x2163)
+(or x1488 (not x2163))
+(or (not x1480) x2156)
+(or x1480 (not x2156))
+(or (not x78) x2145)
+(or x78 (not x2145))
+(or (not x79) x2140)
+(or x79 (not x2140))
+(or x2809 x2808)
+(or x2807 x2806)
+(or x2805 x2804)
+(or x2803 x2802)
+(or x2801 x2800)
+(or x2799 x2798)
+(or x2797 x2796)
+(or x2795 x2794)
+(or x2793 x2792)
+(or x2791 x2790)
+(or x2789 x2788)
+(or x2787 x2786)
+(or x2785 x2784)
+(or x2783 x2782)
+(or x2781 x2780)
+(or x2779 x2778)
+(or x2136 x2135)
+(or x2134 x2133)
+(or x2132 x2131)
+(or x2130 x2129)
+(or x2128 x2127)
+(or x2126 x2125)
+(or x2124 x2123)
+(or x2122 x2121)
+(or x2120 x2119)
+(or x2118 x2117)
+(or x2116 x2115)
+(or x2114 x2113)
+(or x2112 x2111)
+(or x2110 x2109)
+(or x2108 x2107)
+(or x2106 x2105)
+(or (not x61) x2104)
+(or x61 (not x2104))
+(or (not x62) x1955)
+(or x62 (not x1955))
+(or (not x63) x1948)
+(or x63 (not x1948))
+(or (not x64) x1942)
+(or x64 (not x1942))
+(or (not x65) x1935)
+(or x65 (not x1935))
+(or (not x66) x1928)
+(or x66 (not x1928))
+(or (not x67) x1921)
+(or x67 (not x1921))
+(or (not x68) x1915)
+(or x68 (not x1915))
+(or (not x69) x1908)
+(or x69 (not x1908))
+(or (not x70) x1901)
+(or x70 (not x1901))
+(or (not x71) x1894)
+(or x71 (not x1894))
+(or (not x72) x1888)
+(or x72 (not x1888))
+(or (not x73) x1881)
+(or x73 (not x1881))
+(or (not x74) x1874)
+(or x74 (not x1874))
+(or (not x75) x1867)
+(or x75 (not x1867))
+(or (not x76) x1860)
+(or x76 (not x1860))
+(or (not x1290) x1843)
+(or x1290 (not x1843))
+(or (not x1280) x1841)
+(or x1280 (not x1841))
+(or (not x1273) x1839)
+(or x1273 (not x1839))
+(or (not x1267) x1837)
+(or x1267 (not x1837))
+(or (not x1260) x1835)
+(or x1260 (not x1835))
+(or (not x1253) x1833)
+(or x1253 (not x1833))
+(or (not x1246) x1831)
+(or x1246 (not x1831))
+(or (not x1240) x1829)
+(or x1240 (not x1829))
+(or (not x1233) x1827)
+(or x1233 (not x1827))
+(or (not x1226) x1825)
+(or x1226 (not x1825))
+(or (not x1219) x1823)
+(or x1219 (not x1823))
+(or (not x1213) x1821)
+(or x1213 (not x1821))
+(or (not x1206) x1819)
+(or x1206 (not x1819))
+(or (not x1199) x1817)
+(or x1199 (not x1817))
+(or (not x1192) x1815)
+(or x1192 (not x1815))
+(or (not x1185) x1813)
+(or x1185 (not x1813))
+(or (not x882) x1812)
+(or x882 (not x1812))
+(or (not x868) x1811)
+(or x868 (not x1811))
+(or (not x861) x1806)
+(or x861 (not x1806))
+(or (not x850) x1801)
+(or x850 (not x1801))
+(or (not x875) x1796)
+(or x875 (not x1796))
+(or (not x1113) x1791)
+(or x1113 (not x1791))
+(or (not x1109) x1788)
+(or x1109 (not x1788))
+(or (not x1105) x1784)
+(or x1105 (not x1784))
+(or (not x1103) x1780)
+(or x1103 (not x1780))
+(or (not x1091) x1775)
+(or x1091 (not x1775))
+(or (not x1092) x1769)
+(or x1092 (not x1769))
+(or (not x867) x1760)
+(or x867 (not x1760))
+(or (not x860) x1756)
+(or x860 (not x1756))
+(or (not x849) x1752)
+(or x849 (not x1752))
+(or (not x874) x1747)
+(or x874 (not x1747))
+(or (not x1059) x1740)
+(or x1059 (not x1740))
+(or (not x1060) x1734)
+(or x1060 (not x1734))
+(or (not x1047) x1725)
+(or x1047 (not x1725))
+(or (not x1048) x1719)
+(or x1048 (not x1719))
+(or (not x1035) x1710)
+(or x1035 (not x1710))
+(or (not x1036) x1704)
+(or x1036 (not x1704))
+(or (not x1023) x1695)
+(or x1023 (not x1695))
+(or (not x1024) x1689)
+(or x1024 (not x1689))
+(or (not x1011) x1680)
+(or x1011 (not x1680))
+(or (not x1012) x1674)
+(or x1012 (not x1674))
+(or (not x999) x1665)
+(or x999 (not x1665))
+(or (not x1000) x1659)
+(or x1000 (not x1659))
+(or (not x987) x1650)
+(or x987 (not x1650))
+(or (not x988) x1644)
+(or x988 (not x1644))
+(or (not x975) x1635)
+(or x975 (not x1635))
+(or (not x976) x1629)
+(or x976 (not x1629))
+(or (not x963) x1620)
+(or x963 (not x1620))
+(or (not x964) x1614)
+(or x964 (not x1614))
+(or (not x951) x1605)
+(or x951 (not x1605))
+(or (not x952) x1599)
+(or x952 (not x1599))
+(or (not x939) x1590)
+(or x939 (not x1590))
+(or (not x940) x1584)
+(or x940 (not x1584))
+(or (not x927) x1575)
+(or x927 (not x1575))
+(or (not x928) x1569)
+(or x928 (not x1569))
+(or (not x915) x1560)
+(or x915 (not x1560))
+(or (not x916) x1554)
+(or x916 (not x1554))
+(or (not x903) x1545)
+(or x903 (not x1545))
+(or (not x904) x1539)
+(or x904 (not x1539))
+(or (not x891) x1530)
+(or x891 (not x1530))
+(or (not x892) x1524)
+(or x892 (not x1524))
+(or (not x1093) x1970)
+(or x1093 (not x1970))
+(or (not x852) x1515)
+(or x852 (not x1515))
+(or (not x888) x1510)
+(or x888 (not x1510))
+(or (not x1061) x1973)
+(or x1061 (not x1973))
+(or (not x1049) x1975)
+(or x1049 (not x1975))
+(or (not x1037) x1980)
+(or x1037 (not x1980))
+(or (not x1025) x1984)
+(or x1025 (not x1984))
+(or (not x1013) x1987)
+(or x1013 (not x1987))
+(or (not x1001) x1989)
+(or x1001 (not x1989))
+(or (not x989) x1994)
+(or x989 (not x1994))
+(or (not x977) x1998)
+(or x977 (not x1998))
+(or (not x965) x2001)
+(or x965 (not x2001))
+(or (not x953) x2003)
+(or x953 (not x2003))
+(or (not x941) x2008)
+(or x941 (not x2008))
+(or (not x929) x2012)
+(or x929 (not x2012))
+(or (not x917) x2015)
+(or x917 (not x2015))
+(or (not x905) x2017)
+(or x905 (not x2017))
+(or (not x893) x1967)
+(or x893 (not x1967))
+(or (not x878) x1506)
+(or x878 (not x1506))
+(or (not x870) x1497)
+(or x870 (not x1497))
+(or (not x863) x1490)
+(or x863 (not x1490))
+(or (not x855) x1483)
+(or x855 (not x1483))
+(or (not x59) x1472)
+(or x59 (not x1472))
+(or (not x60) x1467)
+(or x60 (not x1467))
+(or x2136 x2135)
+(or x2134 x2133)
+(or x2132 x2131)
+(or x2130 x2129)
+(or x2128 x2127)
+(or x2126 x2125)
+(or x2124 x2123)
+(or x2122 x2121)
+(or x2120 x2119)
+(or x2118 x2117)
+(or x2116 x2115)
+(or x2114 x2113)
+(or x2112 x2111)
+(or x2110 x2109)
+(or x2108 x2107)
+(or x2106 x2105)
+(or x1463 x1462)
+(or x1461 x1460)
+(or x1459 x1458)
+(or x1457 x1456)
+(or x1455 x1454)
+(or x1453 x1452)
+(or x1451 x1450)
+(or x1449 x1448)
+(or x1447 x1446)
+(or x1445 x1444)
+(or x1443 x1442)
+(or x1441 x1440)
+(or x1439 x1438)
+(or x1437 x1436)
+(or x1435 x1434)
+(or x1433 x1432)
+(or (not x42) x1431)
+(or x42 (not x1431))
+(or (not x43) x1282)
+(or x43 (not x1282))
+(or (not x44) x1275)
+(or x44 (not x1275))
+(or (not x45) x1269)
+(or x45 (not x1269))
+(or (not x46) x1262)
+(or x46 (not x1262))
+(or (not x47) x1255)
+(or x47 (not x1255))
+(or (not x48) x1248)
+(or x48 (not x1248))
+(or (not x49) x1242)
+(or x49 (not x1242))
+(or (not x50) x1235)
+(or x50 (not x1235))
+(or (not x51) x1228)
+(or x51 (not x1228))
+(or (not x52) x1221)
+(or x52 (not x1221))
+(or (not x53) x1215)
+(or x53 (not x1215))
+(or (not x54) x1208)
+(or x54 (not x1208))
+(or (not x55) x1201)
+(or x55 (not x1201))
+(or (not x56) x1194)
+(or x56 (not x1194))
+(or (not x57) x1187)
+(or x57 (not x1187))
+(or (not x696) x1170)
+(or x696 (not x1170))
+(or (not x686) x1168)
+(or x686 (not x1168))
+(or (not x679) x1166)
+(or x679 (not x1166))
+(or (not x673) x1164)
+(or x673 (not x1164))
+(or (not x666) x1162)
+(or x666 (not x1162))
+(or (not x659) x1160)
+(or x659 (not x1160))
+(or (not x652) x1158)
+(or x652 (not x1158))
+(or (not x646) x1156)
+(or x646 (not x1156))
+(or (not x639) x1154)
+(or x639 (not x1154))
+(or (not x632) x1152)
+(or x632 (not x1152))
+(or (not x625) x1150)
+(or x625 (not x1150))
+(or (not x619) x1148)
+(or x619 (not x1148))
+(or (not x612) x1146)
+(or x612 (not x1146))
+(or (not x605) x1144)
+(or x605 (not x1144))
+(or (not x598) x1142)
+(or x598 (not x1142))
+(or (not x590) x1140)
+(or x590 (not x1140))
+(or (not x581) x1139)
+(or x581 (not x1139))
+(or (not x471) x1138)
+(or x471 (not x1138))
+(or (not x464) x1133)
+(or x464 (not x1133))
+(or (not x457) x1128)
+(or x457 (not x1128))
+(or (not x447) x1123)
+(or x447 (not x1123))
+(or (not x485) x1118)
+(or x485 (not x1118))
+(or (not x481) x1115)
+(or x481 (not x1115))
+(or (not x476) x1111)
+(or x476 (not x1111))
+(or (not x474) x1107)
+(or x474 (not x1107))
+(or (not x573) x1102)
+(or x573 (not x1102))
+(or (not x470) x1090)
+(or x470 (not x1090))
+(or (not x463) x1086)
+(or x463 (not x1086))
+(or (not x456) x1082)
+(or x456 (not x1082))
+(or (not x446) x1077)
+(or x446 (not x1077))
+(or (not x569) x1070)
+(or x569 (not x1070))
+(or (not x565) x1058)
+(or x565 (not x1058))
+(or (not x561) x1046)
+(or x561 (not x1046))
+(or (not x557) x1034)
+(or x557 (not x1034))
+(or (not x553) x1022)
+(or x553 (not x1022))
+(or (not x549) x1010)
+(or x549 (not x1010))
+(or (not x545) x998)
+(or x545 (not x998))
+(or (not x541) x986)
+(or x541 (not x986))
+(or (not x537) x974)
+(or x537 (not x974))
+(or (not x533) x962)
+(or x533 (not x962))
+(or (not x529) x950)
+(or x529 (not x950))
+(or (not x525) x938)
+(or x525 (not x938))
+(or (not x521) x926)
+(or x521 (not x926))
+(or (not x517) x914)
+(or x517 (not x914))
+(or (not x513) x902)
+(or x513 (not x902))
+(or (not x448) x890)
+(or x448 (not x890))
+(or (not x473) x885)
+(or x473 (not x885))
+(or (not x442) x881)
+(or x442 (not x881))
+(or (not x439) x872)
+(or x439 (not x872))
+(or (not x436) x865)
+(or x436 (not x865))
+(or (not x445) x858)
+(or x445 (not x858))
+(or (not x40) x847)
+(or x40 (not x847))
+(or (not x41) x842)
+(or x41 (not x842))
+(or x1463 x1462)
+(or x1461 x1460)
+(or x1459 x1458)
+(or x1457 x1456)
+(or x1455 x1454)
+(or x1453 x1452)
+(or x1451 x1450)
+(or x1449 x1448)
+(or x1447 x1446)
+(or x1445 x1444)
+(or x1443 x1442)
+(or x1441 x1440)
+(or x1439 x1438)
+(or x1437 x1436)
+(or x1435 x1434)
+(or x1433 x1432)
+(or (not x23) x838)
+(or x23 (not x838))
+(or (not x24) x688)
+(or x24 (not x688))
+(or (not x25) x681)
+(or x25 (not x681))
+(or (not x26) x675)
+(or x26 (not x675))
+(or (not x27) x668)
+(or x27 (not x668))
+(or (not x28) x661)
+(or x28 (not x661))
+(or (not x29) x654)
+(or x29 (not x654))
+(or (not x30) x648)
+(or x30 (not x648))
+(or (not x31) x641)
+(or x31 (not x641))
+(or (not x32) x634)
+(or x32 (not x634))
+(or (not x33) x627)
+(or x33 (not x627))
+(or (not x34) x621)
+(or x34 (not x621))
+(or (not x35) x614)
+(or x35 (not x614))
+(or (not x36) x607)
+(or x36 (not x607))
+(or (not x37) x600)
+(or x37 (not x600))
+(or (not x38) x593)
+(or x38 (not x593))
+(or (not x246) x572)
+(or x246 (not x572))
+(or (not x236) x568)
+(or x236 (not x568))
+(or (not x229) x564)
+(or x229 (not x564))
+(or (not x223) x560)
+(or x223 (not x560))
+(or (not x216) x556)
+(or x216 (not x556))
+(or (not x209) x552)
+(or x209 (not x552))
+(or (not x202) x548)
+(or x202 (not x548))
+(or (not x196) x544)
+(or x196 (not x544))
+(or (not x189) x540)
+(or x189 (not x540))
+(or (not x182) x536)
+(or x182 (not x536))
+(or (not x175) x532)
+(or x175 (not x532))
+(or (not x169) x528)
+(or x169 (not x528))
+(or (not x162) x524)
+(or x162 (not x524))
+(or (not x155) x520)
+(or x155 (not x520))
+(or (not x148) x516)
+(or x148 (not x516))
+(or (not x139) x512)
+(or x139 (not x512))
+(or (not x130) x511)
+(or x130 (not x511))
+(or (not x388) x510)
+(or x388 (not x510))
+(or (not x385) x505)
+(or x385 (not x505))
+(or (not x382) x500)
+(or x382 (not x500))
+(or (not x379) x495)
+(or x379 (not x495))
+(or (not x374) x490)
+(or x374 (not x490))
+(or (not x375) x487)
+(or x375 (not x487))
+(or (not x376) x483)
+(or x376 (not x483))
+(or (not x377) x479)
+(or x377 (not x479))
+(or (not x387) x472)
+(or x387 (not x472))
+(or (not x384) x465)
+(or x384 (not x465))
+(or (not x381) x458)
+(or x381 (not x458))
+(or (not x378) x450)
+(or x378 (not x450))
+(or (not x21) x434)
+(or x21 (not x434))
+(or (not x22) x429)
+(or x22 (not x429))
+(or (not x4) x425)
+(or x4 (not x425))
+(or (not x5) x238)
+(or x5 (not x238))
+(or (not x6) x231)
+(or x6 (not x231))
+(or (not x7) x225)
+(or x7 (not x225))
+(or (not x8) x218)
+(or x8 (not x218))
+(or (not x9) x211)
+(or x9 (not x211))
+(or (not x10) x204)
+(or x10 (not x204))
+(or (not x11) x198)
+(or x11 (not x198))
+(or (not x12) x191)
+(or x12 (not x191))
+(or (not x13) x184)
+(or x13 (not x184))
+(or (not x14) x177)
+(or x14 (not x177))
+(or (not x15) x171)
+(or x15 (not x171))
+(or (not x16) x164)
+(or x16 (not x164))
+(or (not x17) x157)
+(or x17 (not x157))
+(or (not x18) x150)
+(or x18 (not x150))
+(or (not x19) x143)
+(or x19 (not x143))
+(or (not x2) x124)
+(or x2 (not x124))
+(or (not x3) x119)
+(or x3 (not x119))
+(or x115)
+))
diff --git a/test/regress/regress3/bmc-ibm-5.smt b/test/regress/regress3/bmc-ibm-5.smt
new file mode 100644
index 0000000..ba90207
--- /dev/null
+++ b/test/regress/regress3/bmc-ibm-5.smt
@@ -0,0 +1,50615 @@
+
+;;; Taken from SATLIB: SAT-encoded bounded model checking intances
+;;;source: http://people.cs.ubc.ca/~hoos/SATLIB/Benchmarks/SAT/BMC/bmc.tar.gz
+;;;described here: http://people.cs.ubc.ca/~hoos/SATLIB/Benchmarks/SAT/BMC/description.html
+;;;retrieved: Fri Jan 22 19:05:36 EST 2010
+;;;smt file generated using dimacs_to_smt.pl
+
+(benchmark b
+:status sat
+:logic QF_UF
+:extrapreds ((x1))
+: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))
+:extrapreds ((x770))
+:extrapreds ((x771))
+:extrapreds ((x772))
+:extrapreds ((x773))
+:extrapreds ((x774))
+:extrapreds ((x775))
+:extrapreds ((x776))
+:extrapreds ((x777))
+:extrapreds ((x778))
+:extrapreds ((x779))
+:extrapreds ((x780))
+:extrapreds ((x781))
+:extrapreds ((x782))
+:extrapreds ((x783))
+:extrapreds ((x784))
+:extrapreds ((x785))
+:extrapreds ((x786))
+:extrapreds ((x787))
+:extrapreds ((x788))
+:extrapreds ((x789))
+:extrapreds ((x790))
+:extrapreds ((x791))
+:extrapreds ((x792))
+:extrapreds ((x793))
+:extrapreds ((x794))
+:extrapreds ((x795))
+:extrapreds ((x796))
+:extrapreds ((x797))
+:extrapreds ((x798))
+:extrapreds ((x799))
+:extrapreds ((x800))
+:extrapreds ((x801))
+:extrapreds ((x802))
+:extrapreds ((x803))
+:extrapreds ((x804))
+:extrapreds ((x805))
+:extrapreds ((x806))
+:extrapreds ((x807))
+:extrapreds ((x808))
+:extrapreds ((x809))
+:extrapreds ((x810))
+:extrapreds ((x811))
+:extrapreds ((x812))
+:extrapreds ((x813))
+:extrapreds ((x814))
+:extrapreds ((x815))
+:extrapreds ((x816))
+:extrapreds ((x817))
+:extrapreds ((x818))
+:extrapreds ((x819))
+:extrapreds ((x820))
+:extrapreds ((x821))
+:extrapreds ((x822))
+:extrapreds ((x823))
+:extrapreds ((x824))
+:extrapreds ((x825))
+:extrapreds ((x826))
+:extrapreds ((x827))
+:extrapreds ((x828))
+:extrapreds ((x829))
+:extrapreds ((x830))
+:extrapreds ((x831))
+:extrapreds ((x832))
+:extrapreds ((x833))
+:extrapreds ((x834))
+:extrapreds ((x835))
+:extrapreds ((x836))
+:extrapreds ((x837))
+:extrapreds ((x838))
+:extrapreds ((x839))
+:extrapreds ((x840))
+:extrapreds ((x841))
+:extrapreds ((x842))
+:extrapreds ((x843))
+:extrapreds ((x844))
+:extrapreds ((x845))
+:extrapreds ((x846))
+:extrapreds ((x847))
+:extrapreds ((x848))
+:extrapreds ((x849))
+:extrapreds ((x850))
+:extrapreds ((x851))
+:extrapreds ((x852))
+:extrapreds ((x853))
+:extrapreds ((x854))
+:extrapreds ((x855))
+:extrapreds ((x856))
+:extrapreds ((x857))
+:extrapreds ((x858))
+:extrapreds ((x859))
+:extrapreds ((x860))
+:extrapreds ((x861))
+:extrapreds ((x862))
+:extrapreds ((x863))
+:extrapreds ((x864))
+:extrapreds ((x865))
+:extrapreds ((x866))
+:extrapreds ((x867))
+:extrapreds ((x868))
+:extrapreds ((x869))
+:extrapreds ((x870))
+:extrapreds ((x871))
+:extrapreds ((x872))
+:extrapreds ((x873))
+:extrapreds ((x874))
+:extrapreds ((x875))
+:extrapreds ((x876))
+:extrapreds ((x877))
+:extrapreds ((x878))
+:extrapreds ((x879))
+:extrapreds ((x880))
+:extrapreds ((x881))
+:extrapreds ((x882))
+:extrapreds ((x883))
+:extrapreds ((x884))
+:extrapreds ((x885))
+:extrapreds ((x886))
+:extrapreds ((x887))
+:extrapreds ((x888))
+:extrapreds ((x889))
+:extrapreds ((x890))
+:extrapreds ((x891))
+:extrapreds ((x892))
+:extrapreds ((x893))
+:extrapreds ((x894))
+:extrapreds ((x895))
+:extrapreds ((x896))
+:extrapreds ((x897))
+:extrapreds ((x898))
+:extrapreds ((x899))
+:extrapreds ((x900))
+:extrapreds ((x901))
+:extrapreds ((x902))
+:extrapreds ((x903))
+:extrapreds ((x904))
+:extrapreds ((x905))
+:extrapreds ((x906))
+:extrapreds ((x907))
+:extrapreds ((x908))
+:extrapreds ((x909))
+:extrapreds ((x910))
+:extrapreds ((x911))
+:extrapreds ((x912))
+:extrapreds ((x913))
+:extrapreds ((x914))
+:extrapreds ((x915))
+:extrapreds ((x916))
+:extrapreds ((x917))
+:extrapreds ((x918))
+:extrapreds ((x919))
+:extrapreds ((x920))
+:extrapreds ((x921))
+:extrapreds ((x922))
+:extrapreds ((x923))
+:extrapreds ((x924))
+:extrapreds ((x925))
+:extrapreds ((x926))
+:extrapreds ((x927))
+:extrapreds ((x928))
+:extrapreds ((x929))
+:extrapreds ((x930))
+:extrapreds ((x931))
+:extrapreds ((x932))
+:extrapreds ((x933))
+:extrapreds ((x934))
+:extrapreds ((x935))
+:extrapreds ((x936))
+:extrapreds ((x937))
+:extrapreds ((x938))
+:extrapreds ((x939))
+:extrapreds ((x940))
+:extrapreds ((x941))
+:extrapreds ((x942))
+:extrapreds ((x943))
+:extrapreds ((x944))
+:extrapreds ((x945))
+:extrapreds ((x946))
+:extrapreds ((x947))
+:extrapreds ((x948))
+:extrapreds ((x949))
+:extrapreds ((x950))
+:extrapreds ((x951))
+:extrapreds ((x952))
+:extrapreds ((x953))
+:extrapreds ((x954))
+:extrapreds ((x955))
+:extrapreds ((x956))
+:extrapreds ((x957))
+:extrapreds ((x958))
+:extrapreds ((x959))
+:extrapreds ((x960))
+:extrapreds ((x961))
+:extrapreds ((x962))
+:extrapreds ((x963))
+:extrapreds ((x964))
+:extrapreds ((x965))
+:extrapreds ((x966))
+:extrapreds ((x967))
+:extrapreds ((x968))
+:extrapreds ((x969))
+:extrapreds ((x970))
+:extrapreds ((x971))
+:extrapreds ((x972))
+:extrapreds ((x973))
+:extrapreds ((x974))
+:extrapreds ((x975))
+:extrapreds ((x976))
+:extrapreds ((x977))
+:extrapreds ((x978))
+:extrapreds ((x979))
+:extrapreds ((x980))
+:extrapreds ((x981))
+:extrapreds ((x982))
+:extrapreds ((x983))
+:extrapreds ((x984))
+:extrapreds ((x985))
+:extrapreds ((x986))
+:extrapreds ((x987))
+:extrapreds ((x988))
+:extrapreds ((x989))
+:extrapreds ((x990))
+:extrapreds ((x991))
+:extrapreds ((x992))
+:extrapreds ((x993))
+:extrapreds ((x994))
+:extrapreds ((x995))
+:extrapreds ((x996))
+:extrapreds ((x997))
+:extrapreds ((x998))
+:extrapreds ((x999))
+:extrapreds ((x1000))
+:extrapreds ((x1001))
+:extrapreds ((x1002))
+:extrapreds ((x1003))
+:extrapreds ((x1004))
+:extrapreds ((x1005))
+:extrapreds ((x1006))
+:extrapreds ((x1007))
+:extrapreds ((x1008))
+:extrapreds ((x1009))
+:extrapreds ((x1010))
+:extrapreds ((x1011))
+:extrapreds ((x1012))
+:extrapreds ((x1013))
+:extrapreds ((x1014))
+:extrapreds ((x1015))
+:extrapreds ((x1016))
+:extrapreds ((x1017))
+:extrapreds ((x1018))
+:extrapreds ((x1019))
+:extrapreds ((x1020))
+:extrapreds ((x1021))
+:extrapreds ((x1022))
+:extrapreds ((x1023))
+:extrapreds ((x1024))
+:extrapreds ((x1025))
+:extrapreds ((x1026))
+:extrapreds ((x1027))
+:extrapreds ((x1028))
+:extrapreds ((x1029))
+:extrapreds ((x1030))
+:extrapreds ((x1031))
+:extrapreds ((x1032))
+:extrapreds ((x1033))
+:extrapreds ((x1034))
+:extrapreds ((x1035))
+:extrapreds ((x1036))
+:extrapreds ((x1037))
+:extrapreds ((x1038))
+:extrapreds ((x1039))
+:extrapreds ((x1040))
+:extrapreds ((x1041))
+:extrapreds ((x1042))
+:extrapreds ((x1043))
+:extrapreds ((x1044))
+:extrapreds ((x1045))
+:extrapreds ((x1046))
+:extrapreds ((x1047))
+:extrapreds ((x1048))
+:extrapreds ((x1049))
+:extrapreds ((x1050))
+:extrapreds ((x1051))
+:extrapreds ((x1052))
+:extrapreds ((x1053))
+:extrapreds ((x1054))
+:extrapreds ((x1055))
+:extrapreds ((x1056))
+:extrapreds ((x1057))
+:extrapreds ((x1058))
+:extrapreds ((x1059))
+:extrapreds ((x1060))
+:extrapreds ((x1061))
+:extrapreds ((x1062))
+:extrapreds ((x1063))
+:extrapreds ((x1064))
+:extrapreds ((x1065))
+:extrapreds ((x1066))
+:extrapreds ((x1067))
+:extrapreds ((x1068))
+:extrapreds ((x1069))
+:extrapreds ((x1070))
+:extrapreds ((x1071))
+:extrapreds ((x1072))
+:extrapreds ((x1073))
+:extrapreds ((x1074))
+:extrapreds ((x1075))
+:extrapreds ((x1076))
+:extrapreds ((x1077))
+:extrapreds ((x1078))
+:extrapreds ((x1079))
+:extrapreds ((x1080))
+:extrapreds ((x1081))
+:extrapreds ((x1082))
+:extrapreds ((x1083))
+:extrapreds ((x1084))
+:extrapreds ((x1085))
+:extrapreds ((x1086))
+:extrapreds ((x1087))
+:extrapreds ((x1088))
+:extrapreds ((x1089))
+:extrapreds ((x1090))
+:extrapreds ((x1091))
+:extrapreds ((x1092))
+:extrapreds ((x1093))
+:extrapreds ((x1094))
+:extrapreds ((x1095))
+:extrapreds ((x1096))
+:extrapreds ((x1097))
+:extrapreds ((x1098))
+:extrapreds ((x1099))
+:extrapreds ((x1100))
+:extrapreds ((x1101))
+:extrapreds ((x1102))
+:extrapreds ((x1103))
+:extrapreds ((x1104))
+:extrapreds ((x1105))
+:extrapreds ((x1106))
+:extrapreds ((x1107))
+:extrapreds ((x1108))
+:extrapreds ((x1109))
+:extrapreds ((x1110))
+:extrapreds ((x1111))
+:extrapreds ((x1112))
+:extrapreds ((x1113))
+:extrapreds ((x1114))
+:extrapreds ((x1115))
+:extrapreds ((x1116))
+:extrapreds ((x1117))
+:extrapreds ((x1118))
+:extrapreds ((x1119))
+:extrapreds ((x1120))
+:extrapreds ((x1121))
+:extrapreds ((x1122))
+:extrapreds ((x1123))
+:extrapreds ((x1124))
+:extrapreds ((x1125))
+:extrapreds ((x1126))
+:extrapreds ((x1127))
+:extrapreds ((x1128))
+:extrapreds ((x1129))
+:extrapreds ((x1130))
+:extrapreds ((x1131))
+:extrapreds ((x1132))
+:extrapreds ((x1133))
+:extrapreds ((x1134))
+:extrapreds ((x1135))
+:extrapreds ((x1136))
+:extrapreds ((x1137))
+:extrapreds ((x1138))
+:extrapreds ((x1139))
+:extrapreds ((x1140))
+:extrapreds ((x1141))
+:extrapreds ((x1142))
+:extrapreds ((x1143))
+:extrapreds ((x1144))
+:extrapreds ((x1145))
+:extrapreds ((x1146))
+:extrapreds ((x1147))
+:extrapreds ((x1148))
+:extrapreds ((x1149))
+:extrapreds ((x1150))
+:extrapreds ((x1151))
+:extrapreds ((x1152))
+:extrapreds ((x1153))
+:extrapreds ((x1154))
+:extrapreds ((x1155))
+:extrapreds ((x1156))
+:extrapreds ((x1157))
+:extrapreds ((x1158))
+:extrapreds ((x1159))
+:extrapreds ((x1160))
+:extrapreds ((x1161))
+:extrapreds ((x1162))
+:extrapreds ((x1163))
+:extrapreds ((x1164))
+:extrapreds ((x1165))
+:extrapreds ((x1166))
+:extrapreds ((x1167))
+:extrapreds ((x1168))
+:extrapreds ((x1169))
+:extrapreds ((x1170))
+:extrapreds ((x1171))
+:extrapreds ((x1172))
+:extrapreds ((x1173))
+:extrapreds ((x1174))
+:extrapreds ((x1175))
+:extrapreds ((x1176))
+:extrapreds ((x1177))
+:extrapreds ((x1178))
+:extrapreds ((x1179))
+:extrapreds ((x1180))
+:extrapreds ((x1181))
+:extrapreds ((x1182))
+:extrapreds ((x1183))
+:extrapreds ((x1184))
+:extrapreds ((x1185))
+:extrapreds ((x1186))
+:extrapreds ((x1187))
+:extrapreds ((x1188))
+:extrapreds ((x1189))
+:extrapreds ((x1190))
+:extrapreds ((x1191))
+:extrapreds ((x1192))
+:extrapreds ((x1193))
+:extrapreds ((x1194))
+:extrapreds ((x1195))
+:extrapreds ((x1196))
+:extrapreds ((x1197))
+:extrapreds ((x1198))
+:extrapreds ((x1199))
+:extrapreds ((x1200))
+:extrapreds ((x1201))
+:extrapreds ((x1202))
+:extrapreds ((x1203))
+:extrapreds ((x1204))
+:extrapreds ((x1205))
+:extrapreds ((x1206))
+:extrapreds ((x1207))
+:extrapreds ((x1208))
+:extrapreds ((x1209))
+:extrapreds ((x1210))
+:extrapreds ((x1211))
+:extrapreds ((x1212))
+:extrapreds ((x1213))
+:extrapreds ((x1214))
+:extrapreds ((x1215))
+:extrapreds ((x1216))
+:extrapreds ((x1217))
+:extrapreds ((x1218))
+:extrapreds ((x1219))
+:extrapreds ((x1220))
+:extrapreds ((x1221))
+:extrapreds ((x1222))
+:extrapreds ((x1223))
+:extrapreds ((x1224))
+:extrapreds ((x1225))
+:extrapreds ((x1226))
+:extrapreds ((x1227))
+:extrapreds ((x1228))
+:extrapreds ((x1229))
+:extrapreds ((x1230))
+:extrapreds ((x1231))
+:extrapreds ((x1232))
+:extrapreds ((x1233))
+:extrapreds ((x1234))
+:extrapreds ((x1235))
+:extrapreds ((x1236))
+:extrapreds ((x1237))
+:extrapreds ((x1238))
+:extrapreds ((x1239))
+:extrapreds ((x1240))
+:extrapreds ((x1241))
+:extrapreds ((x1242))
+:extrapreds ((x1243))
+:extrapreds ((x1244))
+:extrapreds ((x1245))
+:extrapreds ((x1246))
+:extrapreds ((x1247))
+:extrapreds ((x1248))
+:extrapreds ((x1249))
+:extrapreds ((x1250))
+:extrapreds ((x1251))
+:extrapreds ((x1252))
+:extrapreds ((x1253))
+:extrapreds ((x1254))
+:extrapreds ((x1255))
+:extrapreds ((x1256))
+:extrapreds ((x1257))
+:extrapreds ((x1258))
+:extrapreds ((x1259))
+:extrapreds ((x1260))
+:extrapreds ((x1261))
+:extrapreds ((x1262))
+:extrapreds ((x1263))
+:extrapreds ((x1264))
+:extrapreds ((x1265))
+:extrapreds ((x1266))
+:extrapreds ((x1267))
+:extrapreds ((x1268))
+:extrapreds ((x1269))
+:extrapreds ((x1270))
+:extrapreds ((x1271))
+:extrapreds ((x1272))
+:extrapreds ((x1273))
+:extrapreds ((x1274))
+:extrapreds ((x1275))
+:extrapreds ((x1276))
+:extrapreds ((x1277))
+:extrapreds ((x1278))
+:extrapreds ((x1279))
+:extrapreds ((x1280))
+:extrapreds ((x1281))
+:extrapreds ((x1282))
+:extrapreds ((x1283))
+:extrapreds ((x1284))
+:extrapreds ((x1285))
+:extrapreds ((x1286))
+:extrapreds ((x1287))
+:extrapreds ((x1288))
+:extrapreds ((x1289))
+:extrapreds ((x1290))
+:extrapreds ((x1291))
+:extrapreds ((x1292))
+:extrapreds ((x1293))
+:extrapreds ((x1294))
+:extrapreds ((x1295))
+:extrapreds ((x1296))
+:extrapreds ((x1297))
+:extrapreds ((x1298))
+:extrapreds ((x1299))
+:extrapreds ((x1300))
+:extrapreds ((x1301))
+:extrapreds ((x1302))
+:extrapreds ((x1303))
+:extrapreds ((x1304))
+:extrapreds ((x1305))
+:extrapreds ((x1306))
+:extrapreds ((x1307))
+:extrapreds ((x1308))
+:extrapreds ((x1309))
+:extrapreds ((x1310))
+:extrapreds ((x1311))
+:extrapreds ((x1312))
+:extrapreds ((x1313))
+:extrapreds ((x1314))
+:extrapreds ((x1315))
+:extrapreds ((x1316))
+:extrapreds ((x1317))
+:extrapreds ((x1318))
+:extrapreds ((x1319))
+:extrapreds ((x1320))
+:extrapreds ((x1321))
+:extrapreds ((x1322))
+:extrapreds ((x1323))
+:extrapreds ((x1324))
+:extrapreds ((x1325))
+:extrapreds ((x1326))
+:extrapreds ((x1327))
+:extrapreds ((x1328))
+:extrapreds ((x1329))
+:extrapreds ((x1330))
+:extrapreds ((x1331))
+:extrapreds ((x1332))
+:extrapreds ((x1333))
+:extrapreds ((x1334))
+:extrapreds ((x1335))
+:extrapreds ((x1336))
+:extrapreds ((x1337))
+:extrapreds ((x1338))
+:extrapreds ((x1339))
+:extrapreds ((x1340))
+:extrapreds ((x1341))
+:extrapreds ((x1342))
+:extrapreds ((x1343))
+:extrapreds ((x1344))
+:extrapreds ((x1345))
+:extrapreds ((x1346))
+:extrapreds ((x1347))
+:extrapreds ((x1348))
+:extrapreds ((x1349))
+:extrapreds ((x1350))
+:extrapreds ((x1351))
+:extrapreds ((x1352))
+:extrapreds ((x1353))
+:extrapreds ((x1354))
+:extrapreds ((x1355))
+:extrapreds ((x1356))
+:extrapreds ((x1357))
+:extrapreds ((x1358))
+:extrapreds ((x1359))
+:extrapreds ((x1360))
+:extrapreds ((x1361))
+:extrapreds ((x1362))
+:extrapreds ((x1363))
+:extrapreds ((x1364))
+:extrapreds ((x1365))
+:extrapreds ((x1366))
+:extrapreds ((x1367))
+:extrapreds ((x1368))
+:extrapreds ((x1369))
+:extrapreds ((x1370))
+:extrapreds ((x1371))
+:extrapreds ((x1372))
+:extrapreds ((x1373))
+:extrapreds ((x1374))
+:extrapreds ((x1375))
+:extrapreds ((x1376))
+:extrapreds ((x1377))
+:extrapreds ((x1378))
+:extrapreds ((x1379))
+:extrapreds ((x1380))
+:extrapreds ((x1381))
+:extrapreds ((x1382))
+:extrapreds ((x1383))
+:extrapreds ((x1384))
+:extrapreds ((x1385))
+:extrapreds ((x1386))
+:extrapreds ((x1387))
+:extrapreds ((x1388))
+:extrapreds ((x1389))
+:extrapreds ((x1390))
+:extrapreds ((x1391))
+:extrapreds ((x1392))
+:extrapreds ((x1393))
+:extrapreds ((x1394))
+:extrapreds ((x1395))
+:extrapreds ((x1396))
+:extrapreds ((x1397))
+:extrapreds ((x1398))
+:extrapreds ((x1399))
+:extrapreds ((x1400))
+:extrapreds ((x1401))
+:extrapreds ((x1402))
+:extrapreds ((x1403))
+:extrapreds ((x1404))
+:extrapreds ((x1405))
+:extrapreds ((x1406))
+:extrapreds ((x1407))
+:extrapreds ((x1408))
+:extrapreds ((x1409))
+:extrapreds ((x1410))
+:extrapreds ((x1411))
+:extrapreds ((x1412))
+:extrapreds ((x1413))
+:extrapreds ((x1414))
+:extrapreds ((x1415))
+:extrapreds ((x1416))
+:extrapreds ((x1417))
+:extrapreds ((x1418))
+:extrapreds ((x1419))
+:extrapreds ((x1420))
+:extrapreds ((x1421))
+:extrapreds ((x1422))
+:extrapreds ((x1423))
+:extrapreds ((x1424))
+:extrapreds ((x1425))
+:extrapreds ((x1426))
+:extrapreds ((x1427))
+:extrapreds ((x1428))
+:extrapreds ((x1429))
+:extrapreds ((x1430))
+:extrapreds ((x1431))
+:extrapreds ((x1432))
+:extrapreds ((x1433))
+:extrapreds ((x1434))
+:extrapreds ((x1435))
+:extrapreds ((x1436))
+:extrapreds ((x1437))
+:extrapreds ((x1438))
+:extrapreds ((x1439))
+:extrapreds ((x1440))
+:extrapreds ((x1441))
+:extrapreds ((x1442))
+:extrapreds ((x1443))
+:extrapreds ((x1444))
+:extrapreds ((x1445))
+:extrapreds ((x1446))
+:extrapreds ((x1447))
+:extrapreds ((x1448))
+:extrapreds ((x1449))
+:extrapreds ((x1450))
+:extrapreds ((x1451))
+:extrapreds ((x1452))
+:extrapreds ((x1453))
+:extrapreds ((x1454))
+:extrapreds ((x1455))
+:extrapreds ((x1456))
+:extrapreds ((x1457))
+:extrapreds ((x1458))
+:extrapreds ((x1459))
+:extrapreds ((x1460))
+:extrapreds ((x1461))
+:extrapreds ((x1462))
+:extrapreds ((x1463))
+:extrapreds ((x1464))
+:extrapreds ((x1465))
+:extrapreds ((x1466))
+:extrapreds ((x1467))
+:extrapreds ((x1468))
+:extrapreds ((x1469))
+:extrapreds ((x1470))
+:extrapreds ((x1471))
+:extrapreds ((x1472))
+:extrapreds ((x1473))
+:extrapreds ((x1474))
+:extrapreds ((x1475))
+:extrapreds ((x1476))
+:extrapreds ((x1477))
+:extrapreds ((x1478))
+:extrapreds ((x1479))
+:extrapreds ((x1480))
+:extrapreds ((x1481))
+:extrapreds ((x1482))
+:extrapreds ((x1483))
+:extrapreds ((x1484))
+:extrapreds ((x1485))
+:extrapreds ((x1486))
+:extrapreds ((x1487))
+:extrapreds ((x1488))
+:extrapreds ((x1489))
+:extrapreds ((x1490))
+:extrapreds ((x1491))
+:extrapreds ((x1492))
+:extrapreds ((x1493))
+:extrapreds ((x1494))
+:extrapreds ((x1495))
+:extrapreds ((x1496))
+:extrapreds ((x1497))
+:extrapreds ((x1498))
+:extrapreds ((x1499))
+:extrapreds ((x1500))
+:extrapreds ((x1501))
+:extrapreds ((x1502))
+:extrapreds ((x1503))
+:extrapreds ((x1504))
+:extrapreds ((x1505))
+:extrapreds ((x1506))
+:extrapreds ((x1507))
+:extrapreds ((x1508))
+:extrapreds ((x1509))
+:extrapreds ((x1510))
+:extrapreds ((x1511))
+:extrapreds ((x1512))
+:extrapreds ((x1513))
+:extrapreds ((x1514))
+:extrapreds ((x1515))
+:extrapreds ((x1516))
+:extrapreds ((x1517))
+:extrapreds ((x1518))
+:extrapreds ((x1519))
+:extrapreds ((x1520))
+:extrapreds ((x1521))
+:extrapreds ((x1522))
+:extrapreds ((x1523))
+:extrapreds ((x1524))
+:extrapreds ((x1525))
+:extrapreds ((x1526))
+:extrapreds ((x1527))
+:extrapreds ((x1528))
+:extrapreds ((x1529))
+:extrapreds ((x1530))
+:extrapreds ((x1531))
+:extrapreds ((x1532))
+:extrapreds ((x1533))
+:extrapreds ((x1534))
+:extrapreds ((x1535))
+:extrapreds ((x1536))
+:extrapreds ((x1537))
+:extrapreds ((x1538))
+:extrapreds ((x1539))
+:extrapreds ((x1540))
+:extrapreds ((x1541))
+:extrapreds ((x1542))
+:extrapreds ((x1543))
+:extrapreds ((x1544))
+:extrapreds ((x1545))
+:extrapreds ((x1546))
+:extrapreds ((x1547))
+:extrapreds ((x1548))
+:extrapreds ((x1549))
+:extrapreds ((x1550))
+:extrapreds ((x1551))
+:extrapreds ((x1552))
+:extrapreds ((x1553))
+:extrapreds ((x1554))
+:extrapreds ((x1555))
+:extrapreds ((x1556))
+:extrapreds ((x1557))
+:extrapreds ((x1558))
+:extrapreds ((x1559))
+:extrapreds ((x1560))
+:extrapreds ((x1561))
+:extrapreds ((x1562))
+:extrapreds ((x1563))
+:extrapreds ((x1564))
+:extrapreds ((x1565))
+:extrapreds ((x1566))
+:extrapreds ((x1567))
+:extrapreds ((x1568))
+:extrapreds ((x1569))
+:extrapreds ((x1570))
+:extrapreds ((x1571))
+:extrapreds ((x1572))
+:extrapreds ((x1573))
+:extrapreds ((x1574))
+:extrapreds ((x1575))
+:extrapreds ((x1576))
+:extrapreds ((x1577))
+:extrapreds ((x1578))
+:extrapreds ((x1579))
+:extrapreds ((x1580))
+:extrapreds ((x1581))
+:extrapreds ((x1582))
+:extrapreds ((x1583))
+:extrapreds ((x1584))
+:extrapreds ((x1585))
+:extrapreds ((x1586))
+:extrapreds ((x1587))
+:extrapreds ((x1588))
+:extrapreds ((x1589))
+:extrapreds ((x1590))
+:extrapreds ((x1591))
+:extrapreds ((x1592))
+:extrapreds ((x1593))
+:extrapreds ((x1594))
+:extrapreds ((x1595))
+:extrapreds ((x1596))
+:extrapreds ((x1597))
+:extrapreds ((x1598))
+:extrapreds ((x1599))
+:extrapreds ((x1600))
+:extrapreds ((x1601))
+:extrapreds ((x1602))
+:extrapreds ((x1603))
+:extrapreds ((x1604))
+:extrapreds ((x1605))
+:extrapreds ((x1606))
+:extrapreds ((x1607))
+:extrapreds ((x1608))
+:extrapreds ((x1609))
+:extrapreds ((x1610))
+:extrapreds ((x1611))
+:extrapreds ((x1612))
+:extrapreds ((x1613))
+:extrapreds ((x1614))
+:extrapreds ((x1615))
+:extrapreds ((x1616))
+:extrapreds ((x1617))
+:extrapreds ((x1618))
+:extrapreds ((x1619))
+:extrapreds ((x1620))
+:extrapreds ((x1621))
+:extrapreds ((x1622))
+:extrapreds ((x1623))
+:extrapreds ((x1624))
+:extrapreds ((x1625))
+:extrapreds ((x1626))
+:extrapreds ((x1627))
+:extrapreds ((x1628))
+:extrapreds ((x1629))
+:extrapreds ((x1630))
+:extrapreds ((x1631))
+:extrapreds ((x1632))
+:extrapreds ((x1633))
+:extrapreds ((x1634))
+:extrapreds ((x1635))
+:extrapreds ((x1636))
+:extrapreds ((x1637))
+:extrapreds ((x1638))
+:extrapreds ((x1639))
+:extrapreds ((x1640))
+:extrapreds ((x1641))
+:extrapreds ((x1642))
+:extrapreds ((x1643))
+:extrapreds ((x1644))
+:extrapreds ((x1645))
+:extrapreds ((x1646))
+:extrapreds ((x1647))
+:extrapreds ((x1648))
+:extrapreds ((x1649))
+:extrapreds ((x1650))
+:extrapreds ((x1651))
+:extrapreds ((x1652))
+:extrapreds ((x1653))
+:extrapreds ((x1654))
+:extrapreds ((x1655))
+:extrapreds ((x1656))
+:extrapreds ((x1657))
+:extrapreds ((x1658))
+:extrapreds ((x1659))
+:extrapreds ((x1660))
+:extrapreds ((x1661))
+:extrapreds ((x1662))
+:extrapreds ((x1663))
+:extrapreds ((x1664))
+:extrapreds ((x1665))
+:extrapreds ((x1666))
+:extrapreds ((x1667))
+:extrapreds ((x1668))
+:extrapreds ((x1669))
+:extrapreds ((x1670))
+:extrapreds ((x1671))
+:extrapreds ((x1672))
+:extrapreds ((x1673))
+:extrapreds ((x1674))
+:extrapreds ((x1675))
+:extrapreds ((x1676))
+:extrapreds ((x1677))
+:extrapreds ((x1678))
+:extrapreds ((x1679))
+:extrapreds ((x1680))
+:extrapreds ((x1681))
+:extrapreds ((x1682))
+:extrapreds ((x1683))
+:extrapreds ((x1684))
+:extrapreds ((x1685))
+:extrapreds ((x1686))
+:extrapreds ((x1687))
+:extrapreds ((x1688))
+:extrapreds ((x1689))
+:extrapreds ((x1690))
+:extrapreds ((x1691))
+:extrapreds ((x1692))
+:extrapreds ((x1693))
+:extrapreds ((x1694))
+:extrapreds ((x1695))
+:extrapreds ((x1696))
+:extrapreds ((x1697))
+:extrapreds ((x1698))
+:extrapreds ((x1699))
+:extrapreds ((x1700))
+:extrapreds ((x1701))
+:extrapreds ((x1702))
+:extrapreds ((x1703))
+:extrapreds ((x1704))
+:extrapreds ((x1705))
+:extrapreds ((x1706))
+:extrapreds ((x1707))
+:extrapreds ((x1708))
+:extrapreds ((x1709))
+:extrapreds ((x1710))
+:extrapreds ((x1711))
+:extrapreds ((x1712))
+:extrapreds ((x1713))
+:extrapreds ((x1714))
+:extrapreds ((x1715))
+:extrapreds ((x1716))
+:extrapreds ((x1717))
+:extrapreds ((x1718))
+:extrapreds ((x1719))
+:extrapreds ((x1720))
+:extrapreds ((x1721))
+:extrapreds ((x1722))
+:extrapreds ((x1723))
+:extrapreds ((x1724))
+:extrapreds ((x1725))
+:extrapreds ((x1726))
+:extrapreds ((x1727))
+:extrapreds ((x1728))
+:extrapreds ((x1729))
+:extrapreds ((x1730))
+:extrapreds ((x1731))
+:extrapreds ((x1732))
+:extrapreds ((x1733))
+:extrapreds ((x1734))
+:extrapreds ((x1735))
+:extrapreds ((x1736))
+:extrapreds ((x1737))
+:extrapreds ((x1738))
+:extrapreds ((x1739))
+:extrapreds ((x1740))
+:extrapreds ((x1741))
+:extrapreds ((x1742))
+:extrapreds ((x1743))
+:extrapreds ((x1744))
+:extrapreds ((x1745))
+:extrapreds ((x1746))
+:extrapreds ((x1747))
+:extrapreds ((x1748))
+:extrapreds ((x1749))
+:extrapreds ((x1750))
+:extrapreds ((x1751))
+:extrapreds ((x1752))
+:extrapreds ((x1753))
+:extrapreds ((x1754))
+:extrapreds ((x1755))
+:extrapreds ((x1756))
+:extrapreds ((x1757))
+:extrapreds ((x1758))
+:extrapreds ((x1759))
+:extrapreds ((x1760))
+:extrapreds ((x1761))
+:extrapreds ((x1762))
+:extrapreds ((x1763))
+:extrapreds ((x1764))
+:extrapreds ((x1765))
+:extrapreds ((x1766))
+:extrapreds ((x1767))
+:extrapreds ((x1768))
+:extrapreds ((x1769))
+:extrapreds ((x1770))
+:extrapreds ((x1771))
+:extrapreds ((x1772))
+:extrapreds ((x1773))
+:extrapreds ((x1774))
+:extrapreds ((x1775))
+:extrapreds ((x1776))
+:extrapreds ((x1777))
+:extrapreds ((x1778))
+:extrapreds ((x1779))
+:extrapreds ((x1780))
+:extrapreds ((x1781))
+:extrapreds ((x1782))
+:extrapreds ((x1783))
+:extrapreds ((x1784))
+:extrapreds ((x1785))
+:extrapreds ((x1786))
+:extrapreds ((x1787))
+:extrapreds ((x1788))
+:extrapreds ((x1789))
+:extrapreds ((x1790))
+:extrapreds ((x1791))
+:extrapreds ((x1792))
+:extrapreds ((x1793))
+:extrapreds ((x1794))
+:extrapreds ((x1795))
+:extrapreds ((x1796))
+:extrapreds ((x1797))
+:extrapreds ((x1798))
+:extrapreds ((x1799))
+:extrapreds ((x1800))
+:extrapreds ((x1801))
+:extrapreds ((x1802))
+:extrapreds ((x1803))
+:extrapreds ((x1804))
+:extrapreds ((x1805))
+:extrapreds ((x1806))
+:extrapreds ((x1807))
+:extrapreds ((x1808))
+:extrapreds ((x1809))
+:extrapreds ((x1810))
+:extrapreds ((x1811))
+:extrapreds ((x1812))
+:extrapreds ((x1813))
+:extrapreds ((x1814))
+:extrapreds ((x1815))
+:extrapreds ((x1816))
+:extrapreds ((x1817))
+:extrapreds ((x1818))
+:extrapreds ((x1819))
+:extrapreds ((x1820))
+:extrapreds ((x1821))
+:extrapreds ((x1822))
+:extrapreds ((x1823))
+:extrapreds ((x1824))
+:extrapreds ((x1825))
+:extrapreds ((x1826))
+:extrapreds ((x1827))
+:extrapreds ((x1828))
+:extrapreds ((x1829))
+:extrapreds ((x1830))
+:extrapreds ((x1831))
+:extrapreds ((x1832))
+:extrapreds ((x1833))
+:extrapreds ((x1834))
+:extrapreds ((x1835))
+:extrapreds ((x1836))
+:extrapreds ((x1837))
+:extrapreds ((x1838))
+:extrapreds ((x1839))
+:extrapreds ((x1840))
+:extrapreds ((x1841))
+:extrapreds ((x1842))
+:extrapreds ((x1843))
+:extrapreds ((x1844))
+:extrapreds ((x1845))
+:extrapreds ((x1846))
+:extrapreds ((x1847))
+:extrapreds ((x1848))
+:extrapreds ((x1849))
+:extrapreds ((x1850))
+:extrapreds ((x1851))
+:extrapreds ((x1852))
+:extrapreds ((x1853))
+:extrapreds ((x1854))
+:extrapreds ((x1855))
+:extrapreds ((x1856))
+:extrapreds ((x1857))
+:extrapreds ((x1858))
+:extrapreds ((x1859))
+:extrapreds ((x1860))
+:extrapreds ((x1861))
+:extrapreds ((x1862))
+:extrapreds ((x1863))
+:extrapreds ((x1864))
+:extrapreds ((x1865))
+:extrapreds ((x1866))
+:extrapreds ((x1867))
+:extrapreds ((x1868))
+:extrapreds ((x1869))
+:extrapreds ((x1870))
+:extrapreds ((x1871))
+:extrapreds ((x1872))
+:extrapreds ((x1873))
+:extrapreds ((x1874))
+:extrapreds ((x1875))
+:extrapreds ((x1876))
+:extrapreds ((x1877))
+:extrapreds ((x1878))
+:extrapreds ((x1879))
+:extrapreds ((x1880))
+:extrapreds ((x1881))
+:extrapreds ((x1882))
+:extrapreds ((x1883))
+:extrapreds ((x1884))
+:extrapreds ((x1885))
+:extrapreds ((x1886))
+:extrapreds ((x1887))
+:extrapreds ((x1888))
+:extrapreds ((x1889))
+:extrapreds ((x1890))
+:extrapreds ((x1891))
+:extrapreds ((x1892))
+:extrapreds ((x1893))
+:extrapreds ((x1894))
+:extrapreds ((x1895))
+:extrapreds ((x1896))
+:extrapreds ((x1897))
+:extrapreds ((x1898))
+:extrapreds ((x1899))
+:extrapreds ((x1900))
+:extrapreds ((x1901))
+:extrapreds ((x1902))
+:extrapreds ((x1903))
+:extrapreds ((x1904))
+:extrapreds ((x1905))
+:extrapreds ((x1906))
+:extrapreds ((x1907))
+:extrapreds ((x1908))
+:extrapreds ((x1909))
+:extrapreds ((x1910))
+:extrapreds ((x1911))
+:extrapreds ((x1912))
+:extrapreds ((x1913))
+:extrapreds ((x1914))
+:extrapreds ((x1915))
+:extrapreds ((x1916))
+:extrapreds ((x1917))
+:extrapreds ((x1918))
+:extrapreds ((x1919))
+:extrapreds ((x1920))
+:extrapreds ((x1921))
+:extrapreds ((x1922))
+:extrapreds ((x1923))
+:extrapreds ((x1924))
+:extrapreds ((x1925))
+:extrapreds ((x1926))
+:extrapreds ((x1927))
+:extrapreds ((x1928))
+:extrapreds ((x1929))
+:extrapreds ((x1930))
+:extrapreds ((x1931))
+:extrapreds ((x1932))
+:extrapreds ((x1933))
+:extrapreds ((x1934))
+:extrapreds ((x1935))
+:extrapreds ((x1936))
+:extrapreds ((x1937))
+:extrapreds ((x1938))
+:extrapreds ((x1939))
+:extrapreds ((x1940))
+:extrapreds ((x1941))
+:extrapreds ((x1942))
+:extrapreds ((x1943))
+:extrapreds ((x1944))
+:extrapreds ((x1945))
+:extrapreds ((x1946))
+:extrapreds ((x1947))
+:extrapreds ((x1948))
+:extrapreds ((x1949))
+:extrapreds ((x1950))
+:extrapreds ((x1951))
+:extrapreds ((x1952))
+:extrapreds ((x1953))
+:extrapreds ((x1954))
+:extrapreds ((x1955))
+:extrapreds ((x1956))
+:extrapreds ((x1957))
+:extrapreds ((x1958))
+:extrapreds ((x1959))
+:extrapreds ((x1960))
+:extrapreds ((x1961))
+:extrapreds ((x1962))
+:extrapreds ((x1963))
+:extrapreds ((x1964))
+:extrapreds ((x1965))
+:extrapreds ((x1966))
+:extrapreds ((x1967))
+:extrapreds ((x1968))
+:extrapreds ((x1969))
+:extrapreds ((x1970))
+:extrapreds ((x1971))
+:extrapreds ((x1972))
+:extrapreds ((x1973))
+:extrapreds ((x1974))
+:extrapreds ((x1975))
+:extrapreds ((x1976))
+:extrapreds ((x1977))
+:extrapreds ((x1978))
+:extrapreds ((x1979))
+:extrapreds ((x1980))
+:extrapreds ((x1981))
+:extrapreds ((x1982))
+:extrapreds ((x1983))
+:extrapreds ((x1984))
+:extrapreds ((x1985))
+:extrapreds ((x1986))
+:extrapreds ((x1987))
+:extrapreds ((x1988))
+:extrapreds ((x1989))
+:extrapreds ((x1990))
+:extrapreds ((x1991))
+:extrapreds ((x1992))
+:extrapreds ((x1993))
+:extrapreds ((x1994))
+:extrapreds ((x1995))
+:extrapreds ((x1996))
+:extrapreds ((x1997))
+:extrapreds ((x1998))
+:extrapreds ((x1999))
+:extrapreds ((x2000))
+:extrapreds ((x2001))
+:extrapreds ((x2002))
+:extrapreds ((x2003))
+:extrapreds ((x2004))
+:extrapreds ((x2005))
+:extrapreds ((x2006))
+:extrapreds ((x2007))
+:extrapreds ((x2008))
+:extrapreds ((x2009))
+:extrapreds ((x2010))
+:extrapreds ((x2011))
+:extrapreds ((x2012))
+:extrapreds ((x2013))
+:extrapreds ((x2014))
+:extrapreds ((x2015))
+:extrapreds ((x2016))
+:extrapreds ((x2017))
+:extrapreds ((x2018))
+:extrapreds ((x2019))
+:extrapreds ((x2020))
+:extrapreds ((x2021))
+:extrapreds ((x2022))
+:extrapreds ((x2023))
+:extrapreds ((x2024))
+:extrapreds ((x2025))
+:extrapreds ((x2026))
+:extrapreds ((x2027))
+:extrapreds ((x2028))
+:extrapreds ((x2029))
+:extrapreds ((x2030))
+:extrapreds ((x2031))
+:extrapreds ((x2032))
+:extrapreds ((x2033))
+:extrapreds ((x2034))
+:extrapreds ((x2035))
+:extrapreds ((x2036))
+:extrapreds ((x2037))
+:extrapreds ((x2038))
+:extrapreds ((x2039))
+:extrapreds ((x2040))
+:extrapreds ((x2041))
+:extrapreds ((x2042))
+:extrapreds ((x2043))
+:extrapreds ((x2044))
+:extrapreds ((x2045))
+:extrapreds ((x2046))
+:extrapreds ((x2047))
+:extrapreds ((x2048))
+:extrapreds ((x2049))
+:extrapreds ((x2050))
+:extrapreds ((x2051))
+:extrapreds ((x2052))
+:extrapreds ((x2053))
+:extrapreds ((x2054))
+:extrapreds ((x2055))
+:extrapreds ((x2056))
+:extrapreds ((x2057))
+:extrapreds ((x2058))
+:extrapreds ((x2059))
+:extrapreds ((x2060))
+:extrapreds ((x2061))
+:extrapreds ((x2062))
+:extrapreds ((x2063))
+:extrapreds ((x2064))
+:extrapreds ((x2065))
+:extrapreds ((x2066))
+:extrapreds ((x2067))
+:extrapreds ((x2068))
+:extrapreds ((x2069))
+:extrapreds ((x2070))
+:extrapreds ((x2071))
+:extrapreds ((x2072))
+:extrapreds ((x2073))
+:extrapreds ((x2074))
+:extrapreds ((x2075))
+:extrapreds ((x2076))
+:extrapreds ((x2077))
+:extrapreds ((x2078))
+:extrapreds ((x2079))
+:extrapreds ((x2080))
+:extrapreds ((x2081))
+:extrapreds ((x2082))
+:extrapreds ((x2083))
+:extrapreds ((x2084))
+:extrapreds ((x2085))
+:extrapreds ((x2086))
+:extrapreds ((x2087))
+:extrapreds ((x2088))
+:extrapreds ((x2089))
+:extrapreds ((x2090))
+:extrapreds ((x2091))
+:extrapreds ((x2092))
+:extrapreds ((x2093))
+:extrapreds ((x2094))
+:extrapreds ((x2095))
+:extrapreds ((x2096))
+:extrapreds ((x2097))
+:extrapreds ((x2098))
+:extrapreds ((x2099))
+:extrapreds ((x2100))
+:extrapreds ((x2101))
+:extrapreds ((x2102))
+:extrapreds ((x2103))
+:extrapreds ((x2104))
+:extrapreds ((x2105))
+:extrapreds ((x2106))
+:extrapreds ((x2107))
+:extrapreds ((x2108))
+:extrapreds ((x2109))
+:extrapreds ((x2110))
+:extrapreds ((x2111))
+:extrapreds ((x2112))
+:extrapreds ((x2113))
+:extrapreds ((x2114))
+:extrapreds ((x2115))
+:extrapreds ((x2116))
+:extrapreds ((x2117))
+:extrapreds ((x2118))
+:extrapreds ((x2119))
+:extrapreds ((x2120))
+:extrapreds ((x2121))
+:extrapreds ((x2122))
+:extrapreds ((x2123))
+:extrapreds ((x2124))
+:extrapreds ((x2125))
+:extrapreds ((x2126))
+:extrapreds ((x2127))
+:extrapreds ((x2128))
+:extrapreds ((x2129))
+:extrapreds ((x2130))
+:extrapreds ((x2131))
+:extrapreds ((x2132))
+:extrapreds ((x2133))
+:extrapreds ((x2134))
+:extrapreds ((x2135))
+:extrapreds ((x2136))
+:extrapreds ((x2137))
+:extrapreds ((x2138))
+:extrapreds ((x2139))
+:extrapreds ((x2140))
+:extrapreds ((x2141))
+:extrapreds ((x2142))
+:extrapreds ((x2143))
+:extrapreds ((x2144))
+:extrapreds ((x2145))
+:extrapreds ((x2146))
+:extrapreds ((x2147))
+:extrapreds ((x2148))
+:extrapreds ((x2149))
+:extrapreds ((x2150))
+:extrapreds ((x2151))
+:extrapreds ((x2152))
+:extrapreds ((x2153))
+:extrapreds ((x2154))
+:extrapreds ((x2155))
+:extrapreds ((x2156))
+:extrapreds ((x2157))
+:extrapreds ((x2158))
+:extrapreds ((x2159))
+:extrapreds ((x2160))
+:extrapreds ((x2161))
+:extrapreds ((x2162))
+:extrapreds ((x2163))
+:extrapreds ((x2164))
+:extrapreds ((x2165))
+:extrapreds ((x2166))
+:extrapreds ((x2167))
+:extrapreds ((x2168))
+:extrapreds ((x2169))
+:extrapreds ((x2170))
+:extrapreds ((x2171))
+:extrapreds ((x2172))
+:extrapreds ((x2173))
+:extrapreds ((x2174))
+:extrapreds ((x2175))
+:extrapreds ((x2176))
+:extrapreds ((x2177))
+:extrapreds ((x2178))
+:extrapreds ((x2179))
+:extrapreds ((x2180))
+:extrapreds ((x2181))
+:extrapreds ((x2182))
+:extrapreds ((x2183))
+:extrapreds ((x2184))
+:extrapreds ((x2185))
+:extrapreds ((x2186))
+:extrapreds ((x2187))
+:extrapreds ((x2188))
+:extrapreds ((x2189))
+:extrapreds ((x2190))
+:extrapreds ((x2191))
+:extrapreds ((x2192))
+:extrapreds ((x2193))
+:extrapreds ((x2194))
+:extrapreds ((x2195))
+:extrapreds ((x2196))
+:extrapreds ((x2197))
+:extrapreds ((x2198))
+:extrapreds ((x2199))
+:extrapreds ((x2200))
+:extrapreds ((x2201))
+:extrapreds ((x2202))
+:extrapreds ((x2203))
+:extrapreds ((x2204))
+:extrapreds ((x2205))
+:extrapreds ((x2206))
+:extrapreds ((x2207))
+:extrapreds ((x2208))
+:extrapreds ((x2209))
+:extrapreds ((x2210))
+:extrapreds ((x2211))
+:extrapreds ((x2212))
+:extrapreds ((x2213))
+:extrapreds ((x2214))
+:extrapreds ((x2215))
+:extrapreds ((x2216))
+:extrapreds ((x2217))
+:extrapreds ((x2218))
+:extrapreds ((x2219))
+:extrapreds ((x2220))
+:extrapreds ((x2221))
+:extrapreds ((x2222))
+:extrapreds ((x2223))
+:extrapreds ((x2224))
+:extrapreds ((x2225))
+:extrapreds ((x2226))
+:extrapreds ((x2227))
+:extrapreds ((x2228))
+:extrapreds ((x2229))
+:extrapreds ((x2230))
+:extrapreds ((x2231))
+:extrapreds ((x2232))
+:extrapreds ((x2233))
+:extrapreds ((x2234))
+:extrapreds ((x2235))
+:extrapreds ((x2236))
+:extrapreds ((x2237))
+:extrapreds ((x2238))
+:extrapreds ((x2239))
+:extrapreds ((x2240))
+:extrapreds ((x2241))
+:extrapreds ((x2242))
+:extrapreds ((x2243))
+:extrapreds ((x2244))
+:extrapreds ((x2245))
+:extrapreds ((x2246))
+:extrapreds ((x2247))
+:extrapreds ((x2248))
+:extrapreds ((x2249))
+:extrapreds ((x2250))
+:extrapreds ((x2251))
+:extrapreds ((x2252))
+:extrapreds ((x2253))
+:extrapreds ((x2254))
+:extrapreds ((x2255))
+:extrapreds ((x2256))
+:extrapreds ((x2257))
+:extrapreds ((x2258))
+:extrapreds ((x2259))
+:extrapreds ((x2260))
+:extrapreds ((x2261))
+:extrapreds ((x2262))
+:extrapreds ((x2263))
+:extrapreds ((x2264))
+:extrapreds ((x2265))
+:extrapreds ((x2266))
+:extrapreds ((x2267))
+:extrapreds ((x2268))
+:extrapreds ((x2269))
+:extrapreds ((x2270))
+:extrapreds ((x2271))
+:extrapreds ((x2272))
+:extrapreds ((x2273))
+:extrapreds ((x2274))
+:extrapreds ((x2275))
+:extrapreds ((x2276))
+:extrapreds ((x2277))
+:extrapreds ((x2278))
+:extrapreds ((x2279))
+:extrapreds ((x2280))
+:extrapreds ((x2281))
+:extrapreds ((x2282))
+:extrapreds ((x2283))
+:extrapreds ((x2284))
+:extrapreds ((x2285))
+:extrapreds ((x2286))
+:extrapreds ((x2287))
+:extrapreds ((x2288))
+:extrapreds ((x2289))
+:extrapreds ((x2290))
+:extrapreds ((x2291))
+:extrapreds ((x2292))
+:extrapreds ((x2293))
+:extrapreds ((x2294))
+:extrapreds ((x2295))
+:extrapreds ((x2296))
+:extrapreds ((x2297))
+:extrapreds ((x2298))
+:extrapreds ((x2299))
+:extrapreds ((x2300))
+:extrapreds ((x2301))
+:extrapreds ((x2302))
+:extrapreds ((x2303))
+:extrapreds ((x2304))
+:extrapreds ((x2305))
+:extrapreds ((x2306))
+:extrapreds ((x2307))
+:extrapreds ((x2308))
+:extrapreds ((x2309))
+:extrapreds ((x2310))
+:extrapreds ((x2311))
+:extrapreds ((x2312))
+:extrapreds ((x2313))
+:extrapreds ((x2314))
+:extrapreds ((x2315))
+:extrapreds ((x2316))
+:extrapreds ((x2317))
+:extrapreds ((x2318))
+:extrapreds ((x2319))
+:extrapreds ((x2320))
+:extrapreds ((x2321))
+:extrapreds ((x2322))
+:extrapreds ((x2323))
+:extrapreds ((x2324))
+:extrapreds ((x2325))
+:extrapreds ((x2326))
+:extrapreds ((x2327))
+:extrapreds ((x2328))
+:extrapreds ((x2329))
+:extrapreds ((x2330))
+:extrapreds ((x2331))
+:extrapreds ((x2332))
+:extrapreds ((x2333))
+:extrapreds ((x2334))
+:extrapreds ((x2335))
+:extrapreds ((x2336))
+:extrapreds ((x2337))
+:extrapreds ((x2338))
+:extrapreds ((x2339))
+:extrapreds ((x2340))
+:extrapreds ((x2341))
+:extrapreds ((x2342))
+:extrapreds ((x2343))
+:extrapreds ((x2344))
+:extrapreds ((x2345))
+:extrapreds ((x2346))
+:extrapreds ((x2347))
+:extrapreds ((x2348))
+:extrapreds ((x2349))
+:extrapreds ((x2350))
+:extrapreds ((x2351))
+:extrapreds ((x2352))
+:extrapreds ((x2353))
+:extrapreds ((x2354))
+:extrapreds ((x2355))
+:extrapreds ((x2356))
+:extrapreds ((x2357))
+:extrapreds ((x2358))
+:extrapreds ((x2359))
+:extrapreds ((x2360))
+:extrapreds ((x2361))
+:extrapreds ((x2362))
+:extrapreds ((x2363))
+:extrapreds ((x2364))
+:extrapreds ((x2365))
+:extrapreds ((x2366))
+:extrapreds ((x2367))
+:extrapreds ((x2368))
+:extrapreds ((x2369))
+:extrapreds ((x2370))
+:extrapreds ((x2371))
+:extrapreds ((x2372))
+:extrapreds ((x2373))
+:extrapreds ((x2374))
+:extrapreds ((x2375))
+:extrapreds ((x2376))
+:extrapreds ((x2377))
+:extrapreds ((x2378))
+:extrapreds ((x2379))
+:extrapreds ((x2380))
+:extrapreds ((x2381))
+:extrapreds ((x2382))
+:extrapreds ((x2383))
+:extrapreds ((x2384))
+:extrapreds ((x2385))
+:extrapreds ((x2386))
+:extrapreds ((x2387))
+:extrapreds ((x2388))
+:extrapreds ((x2389))
+:extrapreds ((x2390))
+:extrapreds ((x2391))
+:extrapreds ((x2392))
+:extrapreds ((x2393))
+:extrapreds ((x2394))
+:extrapreds ((x2395))
+:extrapreds ((x2396))
+:extrapreds ((x2397))
+:extrapreds ((x2398))
+:extrapreds ((x2399))
+:extrapreds ((x2400))
+:extrapreds ((x2401))
+:extrapreds ((x2402))
+:extrapreds ((x2403))
+:extrapreds ((x2404))
+:extrapreds ((x2405))
+:extrapreds ((x2406))
+:extrapreds ((x2407))
+:extrapreds ((x2408))
+:extrapreds ((x2409))
+:extrapreds ((x2410))
+:extrapreds ((x2411))
+:extrapreds ((x2412))
+:extrapreds ((x2413))
+:extrapreds ((x2414))
+:extrapreds ((x2415))
+:extrapreds ((x2416))
+:extrapreds ((x2417))
+:extrapreds ((x2418))
+:extrapreds ((x2419))
+:extrapreds ((x2420))
+:extrapreds ((x2421))
+:extrapreds ((x2422))
+:extrapreds ((x2423))
+:extrapreds ((x2424))
+:extrapreds ((x2425))
+:extrapreds ((x2426))
+:extrapreds ((x2427))
+:extrapreds ((x2428))
+:extrapreds ((x2429))
+:extrapreds ((x2430))
+:extrapreds ((x2431))
+:extrapreds ((x2432))
+:extrapreds ((x2433))
+:extrapreds ((x2434))
+:extrapreds ((x2435))
+:extrapreds ((x2436))
+:extrapreds ((x2437))
+:extrapreds ((x2438))
+:extrapreds ((x2439))
+:extrapreds ((x2440))
+:extrapreds ((x2441))
+:extrapreds ((x2442))
+:extrapreds ((x2443))
+:extrapreds ((x2444))
+:extrapreds ((x2445))
+:extrapreds ((x2446))
+:extrapreds ((x2447))
+:extrapreds ((x2448))
+:extrapreds ((x2449))
+:extrapreds ((x2450))
+:extrapreds ((x2451))
+:extrapreds ((x2452))
+:extrapreds ((x2453))
+:extrapreds ((x2454))
+:extrapreds ((x2455))
+:extrapreds ((x2456))
+:extrapreds ((x2457))
+:extrapreds ((x2458))
+:extrapreds ((x2459))
+:extrapreds ((x2460))
+:extrapreds ((x2461))
+:extrapreds ((x2462))
+:extrapreds ((x2463))
+:extrapreds ((x2464))
+:extrapreds ((x2465))
+:extrapreds ((x2466))
+:extrapreds ((x2467))
+:extrapreds ((x2468))
+:extrapreds ((x2469))
+:extrapreds ((x2470))
+:extrapreds ((x2471))
+:extrapreds ((x2472))
+:extrapreds ((x2473))
+:extrapreds ((x2474))
+:extrapreds ((x2475))
+:extrapreds ((x2476))
+:extrapreds ((x2477))
+:extrapreds ((x2478))
+:extrapreds ((x2479))
+:extrapreds ((x2480))
+:extrapreds ((x2481))
+:extrapreds ((x2482))
+:extrapreds ((x2483))
+:extrapreds ((x2484))
+:extrapreds ((x2485))
+:extrapreds ((x2486))
+:extrapreds ((x2487))
+:extrapreds ((x2488))
+:extrapreds ((x2489))
+:extrapreds ((x2490))
+:extrapreds ((x2491))
+:extrapreds ((x2492))
+:extrapreds ((x2493))
+:extrapreds ((x2494))
+:extrapreds ((x2495))
+:extrapreds ((x2496))
+:extrapreds ((x2497))
+:extrapreds ((x2498))
+:extrapreds ((x2499))
+:extrapreds ((x2500))
+:extrapreds ((x2501))
+:extrapreds ((x2502))
+:extrapreds ((x2503))
+:extrapreds ((x2504))
+:extrapreds ((x2505))
+:extrapreds ((x2506))
+:extrapreds ((x2507))
+:extrapreds ((x2508))
+:extrapreds ((x2509))
+:extrapreds ((x2510))
+:extrapreds ((x2511))
+:extrapreds ((x2512))
+:extrapreds ((x2513))
+:extrapreds ((x2514))
+:extrapreds ((x2515))
+:extrapreds ((x2516))
+:extrapreds ((x2517))
+:extrapreds ((x2518))
+:extrapreds ((x2519))
+:extrapreds ((x2520))
+:extrapreds ((x2521))
+:extrapreds ((x2522))
+:extrapreds ((x2523))
+:extrapreds ((x2524))
+:extrapreds ((x2525))
+:extrapreds ((x2526))
+:extrapreds ((x2527))
+:extrapreds ((x2528))
+:extrapreds ((x2529))
+:extrapreds ((x2530))
+:extrapreds ((x2531))
+:extrapreds ((x2532))
+:extrapreds ((x2533))
+:extrapreds ((x2534))
+:extrapreds ((x2535))
+:extrapreds ((x2536))
+:extrapreds ((x2537))
+:extrapreds ((x2538))
+:extrapreds ((x2539))
+:extrapreds ((x2540))
+:extrapreds ((x2541))
+:extrapreds ((x2542))
+:extrapreds ((x2543))
+:extrapreds ((x2544))
+:extrapreds ((x2545))
+:extrapreds ((x2546))
+:extrapreds ((x2547))
+:extrapreds ((x2548))
+:extrapreds ((x2549))
+:extrapreds ((x2550))
+:extrapreds ((x2551))
+:extrapreds ((x2552))
+:extrapreds ((x2553))
+:extrapreds ((x2554))
+:extrapreds ((x2555))
+:extrapreds ((x2556))
+:extrapreds ((x2557))
+:extrapreds ((x2558))
+:extrapreds ((x2559))
+:extrapreds ((x2560))
+:extrapreds ((x2561))
+:extrapreds ((x2562))
+:extrapreds ((x2563))
+:extrapreds ((x2564))
+:extrapreds ((x2565))
+:extrapreds ((x2566))
+:extrapreds ((x2567))
+:extrapreds ((x2568))
+:extrapreds ((x2569))
+:extrapreds ((x2570))
+:extrapreds ((x2571))
+:extrapreds ((x2572))
+:extrapreds ((x2573))
+:extrapreds ((x2574))
+:extrapreds ((x2575))
+:extrapreds ((x2576))
+:extrapreds ((x2577))
+:extrapreds ((x2578))
+:extrapreds ((x2579))
+:extrapreds ((x2580))
+:extrapreds ((x2581))
+:extrapreds ((x2582))
+:extrapreds ((x2583))
+:extrapreds ((x2584))
+:extrapreds ((x2585))
+:extrapreds ((x2586))
+:extrapreds ((x2587))
+:extrapreds ((x2588))
+:extrapreds ((x2589))
+:extrapreds ((x2590))
+:extrapreds ((x2591))
+:extrapreds ((x2592))
+:extrapreds ((x2593))
+:extrapreds ((x2594))
+:extrapreds ((x2595))
+:extrapreds ((x2596))
+:extrapreds ((x2597))
+:extrapreds ((x2598))
+:extrapreds ((x2599))
+:extrapreds ((x2600))
+:extrapreds ((x2601))
+:extrapreds ((x2602))
+:extrapreds ((x2603))
+:extrapreds ((x2604))
+:extrapreds ((x2605))
+:extrapreds ((x2606))
+:extrapreds ((x2607))
+:extrapreds ((x2608))
+:extrapreds ((x2609))
+:extrapreds ((x2610))
+:extrapreds ((x2611))
+:extrapreds ((x2612))
+:extrapreds ((x2613))
+:extrapreds ((x2614))
+:extrapreds ((x2615))
+:extrapreds ((x2616))
+:extrapreds ((x2617))
+:extrapreds ((x2618))
+:extrapreds ((x2619))
+:extrapreds ((x2620))
+:extrapreds ((x2621))
+:extrapreds ((x2622))
+:extrapreds ((x2623))
+:extrapreds ((x2624))
+:extrapreds ((x2625))
+:extrapreds ((x2626))
+:extrapreds ((x2627))
+:extrapreds ((x2628))
+:extrapreds ((x2629))
+:extrapreds ((x2630))
+:extrapreds ((x2631))
+:extrapreds ((x2632))
+:extrapreds ((x2633))
+:extrapreds ((x2634))
+:extrapreds ((x2635))
+:extrapreds ((x2636))
+:extrapreds ((x2637))
+:extrapreds ((x2638))
+:extrapreds ((x2639))
+:extrapreds ((x2640))
+:extrapreds ((x2641))
+:extrapreds ((x2642))
+:extrapreds ((x2643))
+:extrapreds ((x2644))
+:extrapreds ((x2645))
+:extrapreds ((x2646))
+:extrapreds ((x2647))
+:extrapreds ((x2648))
+:extrapreds ((x2649))
+:extrapreds ((x2650))
+:extrapreds ((x2651))
+:extrapreds ((x2652))
+:extrapreds ((x2653))
+:extrapreds ((x2654))
+:extrapreds ((x2655))
+:extrapreds ((x2656))
+:extrapreds ((x2657))
+:extrapreds ((x2658))
+:extrapreds ((x2659))
+:extrapreds ((x2660))
+:extrapreds ((x2661))
+:extrapreds ((x2662))
+:extrapreds ((x2663))
+:extrapreds ((x2664))
+:extrapreds ((x2665))
+:extrapreds ((x2666))
+:extrapreds ((x2667))
+:extrapreds ((x2668))
+:extrapreds ((x2669))
+:extrapreds ((x2670))
+:extrapreds ((x2671))
+:extrapreds ((x2672))
+:extrapreds ((x2673))
+:extrapreds ((x2674))
+:extrapreds ((x2675))
+:extrapreds ((x2676))
+:extrapreds ((x2677))
+:extrapreds ((x2678))
+:extrapreds ((x2679))
+:extrapreds ((x2680))
+:extrapreds ((x2681))
+:extrapreds ((x2682))
+:extrapreds ((x2683))
+:extrapreds ((x2684))
+:extrapreds ((x2685))
+:extrapreds ((x2686))
+:extrapreds ((x2687))
+:extrapreds ((x2688))
+:extrapreds ((x2689))
+:extrapreds ((x2690))
+:extrapreds ((x2691))
+:extrapreds ((x2692))
+:extrapreds ((x2693))
+:extrapreds ((x2694))
+:extrapreds ((x2695))
+:extrapreds ((x2696))
+:extrapreds ((x2697))
+:extrapreds ((x2698))
+:extrapreds ((x2699))
+:extrapreds ((x2700))
+:extrapreds ((x2701))
+:extrapreds ((x2702))
+:extrapreds ((x2703))
+:extrapreds ((x2704))
+:extrapreds ((x2705))
+:extrapreds ((x2706))
+:extrapreds ((x2707))
+:extrapreds ((x2708))
+:extrapreds ((x2709))
+:extrapreds ((x2710))
+:extrapreds ((x2711))
+:extrapreds ((x2712))
+:extrapreds ((x2713))
+:extrapreds ((x2714))
+:extrapreds ((x2715))
+:extrapreds ((x2716))
+:extrapreds ((x2717))
+:extrapreds ((x2718))
+:extrapreds ((x2719))
+:extrapreds ((x2720))
+:extrapreds ((x2721))
+:extrapreds ((x2722))
+:extrapreds ((x2723))
+:extrapreds ((x2724))
+:extrapreds ((x2725))
+:extrapreds ((x2726))
+:extrapreds ((x2727))
+:extrapreds ((x2728))
+:extrapreds ((x2729))
+:extrapreds ((x2730))
+:extrapreds ((x2731))
+:extrapreds ((x2732))
+:extrapreds ((x2733))
+:extrapreds ((x2734))
+:extrapreds ((x2735))
+:extrapreds ((x2736))
+:extrapreds ((x2737))
+:extrapreds ((x2738))
+:extrapreds ((x2739))
+:extrapreds ((x2740))
+:extrapreds ((x2741))
+:extrapreds ((x2742))
+:extrapreds ((x2743))
+:extrapreds ((x2744))
+:extrapreds ((x2745))
+:extrapreds ((x2746))
+:extrapreds ((x2747))
+:extrapreds ((x2748))
+:extrapreds ((x2749))
+:extrapreds ((x2750))
+:extrapreds ((x2751))
+:extrapreds ((x2752))
+:extrapreds ((x2753))
+:extrapreds ((x2754))
+:extrapreds ((x2755))
+:extrapreds ((x2756))
+:extrapreds ((x2757))
+:extrapreds ((x2758))
+:extrapreds ((x2759))
+:extrapreds ((x2760))
+:extrapreds ((x2761))
+:extrapreds ((x2762))
+:extrapreds ((x2763))
+:extrapreds ((x2764))
+:extrapreds ((x2765))
+:extrapreds ((x2766))
+:extrapreds ((x2767))
+:extrapreds ((x2768))
+:extrapreds ((x2769))
+:extrapreds ((x2770))
+:extrapreds ((x2771))
+:extrapreds ((x2772))
+:extrapreds ((x2773))
+:extrapreds ((x2774))
+:extrapreds ((x2775))
+:extrapreds ((x2776))
+:extrapreds ((x2777))
+:extrapreds ((x2778))
+:extrapreds ((x2779))
+:extrapreds ((x2780))
+:extrapreds ((x2781))
+:extrapreds ((x2782))
+:extrapreds ((x2783))
+:extrapreds ((x2784))
+:extrapreds ((x2785))
+:extrapreds ((x2786))
+:extrapreds ((x2787))
+:extrapreds ((x2788))
+:extrapreds ((x2789))
+:extrapreds ((x2790))
+:extrapreds ((x2791))
+:extrapreds ((x2792))
+:extrapreds ((x2793))
+:extrapreds ((x2794))
+:extrapreds ((x2795))
+:extrapreds ((x2796))
+:extrapreds ((x2797))
+:extrapreds ((x2798))
+:extrapreds ((x2799))
+:extrapreds ((x2800))
+:extrapreds ((x2801))
+:extrapreds ((x2802))
+:extrapreds ((x2803))
+:extrapreds ((x2804))
+:extrapreds ((x2805))
+:extrapreds ((x2806))
+:extrapreds ((x2807))
+:extrapreds ((x2808))
+:extrapreds ((x2809))
+:extrapreds ((x2810))
+:extrapreds ((x2811))
+:extrapreds ((x2812))
+:extrapreds ((x2813))
+:extrapreds ((x2814))
+:extrapreds ((x2815))
+:extrapreds ((x2816))
+:extrapreds ((x2817))
+:extrapreds ((x2818))
+:extrapreds ((x2819))
+:extrapreds ((x2820))
+:extrapreds ((x2821))
+:extrapreds ((x2822))
+:extrapreds ((x2823))
+:extrapreds ((x2824))
+:extrapreds ((x2825))
+:extrapreds ((x2826))
+:extrapreds ((x2827))
+:extrapreds ((x2828))
+:extrapreds ((x2829))
+:extrapreds ((x2830))
+:extrapreds ((x2831))
+:extrapreds ((x2832))
+:extrapreds ((x2833))
+:extrapreds ((x2834))
+:extrapreds ((x2835))
+:extrapreds ((x2836))
+:extrapreds ((x2837))
+:extrapreds ((x2838))
+:extrapreds ((x2839))
+:extrapreds ((x2840))
+:extrapreds ((x2841))
+:extrapreds ((x2842))
+:extrapreds ((x2843))
+:extrapreds ((x2844))
+:extrapreds ((x2845))
+:extrapreds ((x2846))
+:extrapreds ((x2847))
+:extrapreds ((x2848))
+:extrapreds ((x2849))
+:extrapreds ((x2850))
+:extrapreds ((x2851))
+:extrapreds ((x2852))
+:extrapreds ((x2853))
+:extrapreds ((x2854))
+:extrapreds ((x2855))
+:extrapreds ((x2856))
+:extrapreds ((x2857))
+:extrapreds ((x2858))
+:extrapreds ((x2859))
+:extrapreds ((x2860))
+:extrapreds ((x2861))
+:extrapreds ((x2862))
+:extrapreds ((x2863))
+:extrapreds ((x2864))
+:extrapreds ((x2865))
+:extrapreds ((x2866))
+:extrapreds ((x2867))
+:extrapreds ((x2868))
+:extrapreds ((x2869))
+:extrapreds ((x2870))
+:extrapreds ((x2871))
+:extrapreds ((x2872))
+:extrapreds ((x2873))
+:extrapreds ((x2874))
+:extrapreds ((x2875))
+:extrapreds ((x2876))
+:extrapreds ((x2877))
+:extrapreds ((x2878))
+:extrapreds ((x2879))
+:extrapreds ((x2880))
+:extrapreds ((x2881))
+:extrapreds ((x2882))
+:extrapreds ((x2883))
+:extrapreds ((x2884))
+:extrapreds ((x2885))
+:extrapreds ((x2886))
+:extrapreds ((x2887))
+:extrapreds ((x2888))
+:extrapreds ((x2889))
+:extrapreds ((x2890))
+:extrapreds ((x2891))
+:extrapreds ((x2892))
+:extrapreds ((x2893))
+:extrapreds ((x2894))
+:extrapreds ((x2895))
+:extrapreds ((x2896))
+:extrapreds ((x2897))
+:extrapreds ((x2898))
+:extrapreds ((x2899))
+:extrapreds ((x2900))
+:extrapreds ((x2901))
+:extrapreds ((x2902))
+:extrapreds ((x2903))
+:extrapreds ((x2904))
+:extrapreds ((x2905))
+:extrapreds ((x2906))
+:extrapreds ((x2907))
+:extrapreds ((x2908))
+:extrapreds ((x2909))
+:extrapreds ((x2910))
+:extrapreds ((x2911))
+:extrapreds ((x2912))
+:extrapreds ((x2913))
+:extrapreds ((x2914))
+:extrapreds ((x2915))
+:extrapreds ((x2916))
+:extrapreds ((x2917))
+:extrapreds ((x2918))
+:extrapreds ((x2919))
+:extrapreds ((x2920))
+:extrapreds ((x2921))
+:extrapreds ((x2922))
+:extrapreds ((x2923))
+:extrapreds ((x2924))
+:extrapreds ((x2925))
+:extrapreds ((x2926))
+:extrapreds ((x2927))
+:extrapreds ((x2928))
+:extrapreds ((x2929))
+:extrapreds ((x2930))
+:extrapreds ((x2931))
+:extrapreds ((x2932))
+:extrapreds ((x2933))
+:extrapreds ((x2934))
+:extrapreds ((x2935))
+:extrapreds ((x2936))
+:extrapreds ((x2937))
+:extrapreds ((x2938))
+:extrapreds ((x2939))
+:extrapreds ((x2940))
+:extrapreds ((x2941))
+:extrapreds ((x2942))
+:extrapreds ((x2943))
+:extrapreds ((x2944))
+:extrapreds ((x2945))
+:extrapreds ((x2946))
+:extrapreds ((x2947))
+:extrapreds ((x2948))
+:extrapreds ((x2949))
+:extrapreds ((x2950))
+:extrapreds ((x2951))
+:extrapreds ((x2952))
+:extrapreds ((x2953))
+:extrapreds ((x2954))
+:extrapreds ((x2955))
+:extrapreds ((x2956))
+:extrapreds ((x2957))
+:extrapreds ((x2958))
+:extrapreds ((x2959))
+:extrapreds ((x2960))
+:extrapreds ((x2961))
+:extrapreds ((x2962))
+:extrapreds ((x2963))
+:extrapreds ((x2964))
+:extrapreds ((x2965))
+:extrapreds ((x2966))
+:extrapreds ((x2967))
+:extrapreds ((x2968))
+:extrapreds ((x2969))
+:extrapreds ((x2970))
+:extrapreds ((x2971))
+:extrapreds ((x2972))
+:extrapreds ((x2973))
+:extrapreds ((x2974))
+:extrapreds ((x2975))
+:extrapreds ((x2976))
+:extrapreds ((x2977))
+:extrapreds ((x2978))
+:extrapreds ((x2979))
+:extrapreds ((x2980))
+:extrapreds ((x2981))
+:extrapreds ((x2982))
+:extrapreds ((x2983))
+:extrapreds ((x2984))
+:extrapreds ((x2985))
+:extrapreds ((x2986))
+:extrapreds ((x2987))
+:extrapreds ((x2988))
+:extrapreds ((x2989))
+:extrapreds ((x2990))
+:extrapreds ((x2991))
+:extrapreds ((x2992))
+:extrapreds ((x2993))
+:extrapreds ((x2994))
+:extrapreds ((x2995))
+:extrapreds ((x2996))
+:extrapreds ((x2997))
+:extrapreds ((x2998))
+:extrapreds ((x2999))
+:extrapreds ((x3000))
+:extrapreds ((x3001))
+:extrapreds ((x3002))
+:extrapreds ((x3003))
+:extrapreds ((x3004))
+:extrapreds ((x3005))
+:extrapreds ((x3006))
+:extrapreds ((x3007))
+:extrapreds ((x3008))
+:extrapreds ((x3009))
+:extrapreds ((x3010))
+:extrapreds ((x3011))
+:extrapreds ((x3012))
+:extrapreds ((x3013))
+:extrapreds ((x3014))
+:extrapreds ((x3015))
+:extrapreds ((x3016))
+:extrapreds ((x3017))
+:extrapreds ((x3018))
+:extrapreds ((x3019))
+:extrapreds ((x3020))
+:extrapreds ((x3021))
+:extrapreds ((x3022))
+:extrapreds ((x3023))
+:extrapreds ((x3024))
+:extrapreds ((x3025))
+:extrapreds ((x3026))
+:extrapreds ((x3027))
+:extrapreds ((x3028))
+:extrapreds ((x3029))
+:extrapreds ((x3030))
+:extrapreds ((x3031))
+:extrapreds ((x3032))
+:extrapreds ((x3033))
+:extrapreds ((x3034))
+:extrapreds ((x3035))
+:extrapreds ((x3036))
+:extrapreds ((x3037))
+:extrapreds ((x3038))
+:extrapreds ((x3039))
+:extrapreds ((x3040))
+:extrapreds ((x3041))
+:extrapreds ((x3042))
+:extrapreds ((x3043))
+:extrapreds ((x3044))
+:extrapreds ((x3045))
+:extrapreds ((x3046))
+:extrapreds ((x3047))
+:extrapreds ((x3048))
+:extrapreds ((x3049))
+:extrapreds ((x3050))
+:extrapreds ((x3051))
+:extrapreds ((x3052))
+:extrapreds ((x3053))
+:extrapreds ((x3054))
+:extrapreds ((x3055))
+:extrapreds ((x3056))
+:extrapreds ((x3057))
+:extrapreds ((x3058))
+:extrapreds ((x3059))
+:extrapreds ((x3060))
+:extrapreds ((x3061))
+:extrapreds ((x3062))
+:extrapreds ((x3063))
+:extrapreds ((x3064))
+:extrapreds ((x3065))
+:extrapreds ((x3066))
+:extrapreds ((x3067))
+:extrapreds ((x3068))
+:extrapreds ((x3069))
+:extrapreds ((x3070))
+:extrapreds ((x3071))
+:extrapreds ((x3072))
+:extrapreds ((x3073))
+:extrapreds ((x3074))
+:extrapreds ((x3075))
+:extrapreds ((x3076))
+:extrapreds ((x3077))
+:extrapreds ((x3078))
+:extrapreds ((x3079))
+:extrapreds ((x3080))
+:extrapreds ((x3081))
+:extrapreds ((x3082))
+:extrapreds ((x3083))
+:extrapreds ((x3084))
+:extrapreds ((x3085))
+:extrapreds ((x3086))
+:extrapreds ((x3087))
+:extrapreds ((x3088))
+:extrapreds ((x3089))
+:extrapreds ((x3090))
+:extrapreds ((x3091))
+:extrapreds ((x3092))
+:extrapreds ((x3093))
+:extrapreds ((x3094))
+:extrapreds ((x3095))
+:extrapreds ((x3096))
+:extrapreds ((x3097))
+:extrapreds ((x3098))
+:extrapreds ((x3099))
+:extrapreds ((x3100))
+:extrapreds ((x3101))
+:extrapreds ((x3102))
+:extrapreds ((x3103))
+:extrapreds ((x3104))
+:extrapreds ((x3105))
+:extrapreds ((x3106))
+:extrapreds ((x3107))
+:extrapreds ((x3108))
+:extrapreds ((x3109))
+:extrapreds ((x3110))
+:extrapreds ((x3111))
+:extrapreds ((x3112))
+:extrapreds ((x3113))
+:extrapreds ((x3114))
+:extrapreds ((x3115))
+:extrapreds ((x3116))
+:extrapreds ((x3117))
+:extrapreds ((x3118))
+:extrapreds ((x3119))
+:extrapreds ((x3120))
+:extrapreds ((x3121))
+:extrapreds ((x3122))
+:extrapreds ((x3123))
+:extrapreds ((x3124))
+:extrapreds ((x3125))
+:extrapreds ((x3126))
+:extrapreds ((x3127))
+:extrapreds ((x3128))
+:extrapreds ((x3129))
+:extrapreds ((x3130))
+:extrapreds ((x3131))
+:extrapreds ((x3132))
+:extrapreds ((x3133))
+:extrapreds ((x3134))
+:extrapreds ((x3135))
+:extrapreds ((x3136))
+:extrapreds ((x3137))
+:extrapreds ((x3138))
+:extrapreds ((x3139))
+:extrapreds ((x3140))
+:extrapreds ((x3141))
+:extrapreds ((x3142))
+:extrapreds ((x3143))
+:extrapreds ((x3144))
+:extrapreds ((x3145))
+:extrapreds ((x3146))
+:extrapreds ((x3147))
+:extrapreds ((x3148))
+:extrapreds ((x3149))
+:extrapreds ((x3150))
+:extrapreds ((x3151))
+:extrapreds ((x3152))
+:extrapreds ((x3153))
+:extrapreds ((x3154))
+:extrapreds ((x3155))
+:extrapreds ((x3156))
+:extrapreds ((x3157))
+:extrapreds ((x3158))
+:extrapreds ((x3159))
+:extrapreds ((x3160))
+:extrapreds ((x3161))
+:extrapreds ((x3162))
+:extrapreds ((x3163))
+:extrapreds ((x3164))
+:extrapreds ((x3165))
+:extrapreds ((x3166))
+:extrapreds ((x3167))
+:extrapreds ((x3168))
+:extrapreds ((x3169))
+:extrapreds ((x3170))
+:extrapreds ((x3171))
+:extrapreds ((x3172))
+:extrapreds ((x3173))
+:extrapreds ((x3174))
+:extrapreds ((x3175))
+:extrapreds ((x3176))
+:extrapreds ((x3177))
+:extrapreds ((x3178))
+:extrapreds ((x3179))
+:extrapreds ((x3180))
+:extrapreds ((x3181))
+:extrapreds ((x3182))
+:extrapreds ((x3183))
+:extrapreds ((x3184))
+:extrapreds ((x3185))
+:extrapreds ((x3186))
+:extrapreds ((x3187))
+:extrapreds ((x3188))
+:extrapreds ((x3189))
+:extrapreds ((x3190))
+:extrapreds ((x3191))
+:extrapreds ((x3192))
+:extrapreds ((x3193))
+:extrapreds ((x3194))
+:extrapreds ((x3195))
+:extrapreds ((x3196))
+:extrapreds ((x3197))
+:extrapreds ((x3198))
+:extrapreds ((x3199))
+:extrapreds ((x3200))
+:extrapreds ((x3201))
+:extrapreds ((x3202))
+:extrapreds ((x3203))
+:extrapreds ((x3204))
+:extrapreds ((x3205))
+:extrapreds ((x3206))
+:extrapreds ((x3207))
+:extrapreds ((x3208))
+:extrapreds ((x3209))
+:extrapreds ((x3210))
+:extrapreds ((x3211))
+:extrapreds ((x3212))
+:extrapreds ((x3213))
+:extrapreds ((x3214))
+:extrapreds ((x3215))
+:extrapreds ((x3216))
+:extrapreds ((x3217))
+:extrapreds ((x3218))
+:extrapreds ((x3219))
+:extrapreds ((x3220))
+:extrapreds ((x3221))
+:extrapreds ((x3222))
+:extrapreds ((x3223))
+:extrapreds ((x3224))
+:extrapreds ((x3225))
+:extrapreds ((x3226))
+:extrapreds ((x3227))
+:extrapreds ((x3228))
+:extrapreds ((x3229))
+:extrapreds ((x3230))
+:extrapreds ((x3231))
+:extrapreds ((x3232))
+:extrapreds ((x3233))
+:extrapreds ((x3234))
+:extrapreds ((x3235))
+:extrapreds ((x3236))
+:extrapreds ((x3237))
+:extrapreds ((x3238))
+:extrapreds ((x3239))
+:extrapreds ((x3240))
+:extrapreds ((x3241))
+:extrapreds ((x3242))
+:extrapreds ((x3243))
+:extrapreds ((x3244))
+:extrapreds ((x3245))
+:extrapreds ((x3246))
+:extrapreds ((x3247))
+:extrapreds ((x3248))
+:extrapreds ((x3249))
+:extrapreds ((x3250))
+:extrapreds ((x3251))
+:extrapreds ((x3252))
+:extrapreds ((x3253))
+:extrapreds ((x3254))
+:extrapreds ((x3255))
+:extrapreds ((x3256))
+:extrapreds ((x3257))
+:extrapreds ((x3258))
+:extrapreds ((x3259))
+:extrapreds ((x3260))
+:extrapreds ((x3261))
+:extrapreds ((x3262))
+:extrapreds ((x3263))
+:extrapreds ((x3264))
+:extrapreds ((x3265))
+:extrapreds ((x3266))
+:extrapreds ((x3267))
+:extrapreds ((x3268))
+:extrapreds ((x3269))
+:extrapreds ((x3270))
+:extrapreds ((x3271))
+:extrapreds ((x3272))
+:extrapreds ((x3273))
+:extrapreds ((x3274))
+:extrapreds ((x3275))
+:extrapreds ((x3276))
+:extrapreds ((x3277))
+:extrapreds ((x3278))
+:extrapreds ((x3279))
+:extrapreds ((x3280))
+:extrapreds ((x3281))
+:extrapreds ((x3282))
+:extrapreds ((x3283))
+:extrapreds ((x3284))
+:extrapreds ((x3285))
+:extrapreds ((x3286))
+:extrapreds ((x3287))
+:extrapreds ((x3288))
+:extrapreds ((x3289))
+:extrapreds ((x3290))
+:extrapreds ((x3291))
+:extrapreds ((x3292))
+:extrapreds ((x3293))
+:extrapreds ((x3294))
+:extrapreds ((x3295))
+:extrapreds ((x3296))
+:extrapreds ((x3297))
+:extrapreds ((x3298))
+:extrapreds ((x3299))
+:extrapreds ((x3300))
+:extrapreds ((x3301))
+:extrapreds ((x3302))
+:extrapreds ((x3303))
+:extrapreds ((x3304))
+:extrapreds ((x3305))
+:extrapreds ((x3306))
+:extrapreds ((x3307))
+:extrapreds ((x3308))
+:extrapreds ((x3309))
+:extrapreds ((x3310))
+:extrapreds ((x3311))
+:extrapreds ((x3312))
+:extrapreds ((x3313))
+:extrapreds ((x3314))
+:extrapreds ((x3315))
+:extrapreds ((x3316))
+:extrapreds ((x3317))
+:extrapreds ((x3318))
+:extrapreds ((x3319))
+:extrapreds ((x3320))
+:extrapreds ((x3321))
+:extrapreds ((x3322))
+:extrapreds ((x3323))
+:extrapreds ((x3324))
+:extrapreds ((x3325))
+:extrapreds ((x3326))
+:extrapreds ((x3327))
+:extrapreds ((x3328))
+:extrapreds ((x3329))
+:extrapreds ((x3330))
+:extrapreds ((x3331))
+:extrapreds ((x3332))
+:extrapreds ((x3333))
+:extrapreds ((x3334))
+:extrapreds ((x3335))
+:extrapreds ((x3336))
+:extrapreds ((x3337))
+:extrapreds ((x3338))
+:extrapreds ((x3339))
+:extrapreds ((x3340))
+:extrapreds ((x3341))
+:extrapreds ((x3342))
+:extrapreds ((x3343))
+:extrapreds ((x3344))
+:extrapreds ((x3345))
+:extrapreds ((x3346))
+:extrapreds ((x3347))
+:extrapreds ((x3348))
+:extrapreds ((x3349))
+:extrapreds ((x3350))
+:extrapreds ((x3351))
+:extrapreds ((x3352))
+:extrapreds ((x3353))
+:extrapreds ((x3354))
+:extrapreds ((x3355))
+:extrapreds ((x3356))
+:extrapreds ((x3357))
+:extrapreds ((x3358))
+:extrapreds ((x3359))
+:extrapreds ((x3360))
+:extrapreds ((x3361))
+:extrapreds ((x3362))
+:extrapreds ((x3363))
+:extrapreds ((x3364))
+:extrapreds ((x3365))
+:extrapreds ((x3366))
+:extrapreds ((x3367))
+:extrapreds ((x3368))
+:extrapreds ((x3369))
+:extrapreds ((x3370))
+:extrapreds ((x3371))
+:extrapreds ((x3372))
+:extrapreds ((x3373))
+:extrapreds ((x3374))
+:extrapreds ((x3375))
+:extrapreds ((x3376))
+:extrapreds ((x3377))
+:extrapreds ((x3378))
+:extrapreds ((x3379))
+:extrapreds ((x3380))
+:extrapreds ((x3381))
+:extrapreds ((x3382))
+:extrapreds ((x3383))
+:extrapreds ((x3384))
+:extrapreds ((x3385))
+:extrapreds ((x3386))
+:extrapreds ((x3387))
+:extrapreds ((x3388))
+:extrapreds ((x3389))
+:extrapreds ((x3390))
+:extrapreds ((x3391))
+:extrapreds ((x3392))
+:extrapreds ((x3393))
+:extrapreds ((x3394))
+:extrapreds ((x3395))
+:extrapreds ((x3396))
+:extrapreds ((x3397))
+:extrapreds ((x3398))
+:extrapreds ((x3399))
+:extrapreds ((x3400))
+:extrapreds ((x3401))
+:extrapreds ((x3402))
+:extrapreds ((x3403))
+:extrapreds ((x3404))
+:extrapreds ((x3405))
+:extrapreds ((x3406))
+:extrapreds ((x3407))
+:extrapreds ((x3408))
+:extrapreds ((x3409))
+:extrapreds ((x3410))
+:extrapreds ((x3411))
+:extrapreds ((x3412))
+:extrapreds ((x3413))
+:extrapreds ((x3414))
+:extrapreds ((x3415))
+:extrapreds ((x3416))
+:extrapreds ((x3417))
+:extrapreds ((x3418))
+:extrapreds ((x3419))
+:extrapreds ((x3420))
+:extrapreds ((x3421))
+:extrapreds ((x3422))
+:extrapreds ((x3423))
+:extrapreds ((x3424))
+:extrapreds ((x3425))
+:extrapreds ((x3426))
+:extrapreds ((x3427))
+:extrapreds ((x3428))
+:extrapreds ((x3429))
+:extrapreds ((x3430))
+:extrapreds ((x3431))
+:extrapreds ((x3432))
+:extrapreds ((x3433))
+:extrapreds ((x3434))
+:extrapreds ((x3435))
+:extrapreds ((x3436))
+:extrapreds ((x3437))
+:extrapreds ((x3438))
+:extrapreds ((x3439))
+:extrapreds ((x3440))
+:extrapreds ((x3441))
+:extrapreds ((x3442))
+:extrapreds ((x3443))
+:extrapreds ((x3444))
+:extrapreds ((x3445))
+:extrapreds ((x3446))
+:extrapreds ((x3447))
+:extrapreds ((x3448))
+:extrapreds ((x3449))
+:extrapreds ((x3450))
+:extrapreds ((x3451))
+:extrapreds ((x3452))
+:extrapreds ((x3453))
+:extrapreds ((x3454))
+:extrapreds ((x3455))
+:extrapreds ((x3456))
+:extrapreds ((x3457))
+:extrapreds ((x3458))
+:extrapreds ((x3459))
+:extrapreds ((x3460))
+:extrapreds ((x3461))
+:extrapreds ((x3462))
+:extrapreds ((x3463))
+:extrapreds ((x3464))
+:extrapreds ((x3465))
+:extrapreds ((x3466))
+:extrapreds ((x3467))
+:extrapreds ((x3468))
+:extrapreds ((x3469))
+:extrapreds ((x3470))
+:extrapreds ((x3471))
+:extrapreds ((x3472))
+:extrapreds ((x3473))
+:extrapreds ((x3474))
+:extrapreds ((x3475))
+:extrapreds ((x3476))
+:extrapreds ((x3477))
+:extrapreds ((x3478))
+:extrapreds ((x3479))
+:extrapreds ((x3480))
+:extrapreds ((x3481))
+:extrapreds ((x3482))
+:extrapreds ((x3483))
+:extrapreds ((x3484))
+:extrapreds ((x3485))
+:extrapreds ((x3486))
+:extrapreds ((x3487))
+:extrapreds ((x3488))
+:extrapreds ((x3489))
+:extrapreds ((x3490))
+:extrapreds ((x3491))
+:extrapreds ((x3492))
+:extrapreds ((x3493))
+:extrapreds ((x3494))
+:extrapreds ((x3495))
+:extrapreds ((x3496))
+:extrapreds ((x3497))
+:extrapreds ((x3498))
+:extrapreds ((x3499))
+:extrapreds ((x3500))
+:extrapreds ((x3501))
+:extrapreds ((x3502))
+:extrapreds ((x3503))
+:extrapreds ((x3504))
+:extrapreds ((x3505))
+:extrapreds ((x3506))
+:extrapreds ((x3507))
+:extrapreds ((x3508))
+:extrapreds ((x3509))
+:extrapreds ((x3510))
+:extrapreds ((x3511))
+:extrapreds ((x3512))
+:extrapreds ((x3513))
+:extrapreds ((x3514))
+:extrapreds ((x3515))
+:extrapreds ((x3516))
+:extrapreds ((x3517))
+:extrapreds ((x3518))
+:extrapreds ((x3519))
+:extrapreds ((x3520))
+:extrapreds ((x3521))
+:extrapreds ((x3522))
+:extrapreds ((x3523))
+:extrapreds ((x3524))
+:extrapreds ((x3525))
+:extrapreds ((x3526))
+:extrapreds ((x3527))
+:extrapreds ((x3528))
+:extrapreds ((x3529))
+:extrapreds ((x3530))
+:extrapreds ((x3531))
+:extrapreds ((x3532))
+:extrapreds ((x3533))
+:extrapreds ((x3534))
+:extrapreds ((x3535))
+:extrapreds ((x3536))
+:extrapreds ((x3537))
+:extrapreds ((x3538))
+:extrapreds ((x3539))
+:extrapreds ((x3540))
+:extrapreds ((x3541))
+:extrapreds ((x3542))
+:extrapreds ((x3543))
+:extrapreds ((x3544))
+:extrapreds ((x3545))
+:extrapreds ((x3546))
+:extrapreds ((x3547))
+:extrapreds ((x3548))
+:extrapreds ((x3549))
+:extrapreds ((x3550))
+:extrapreds ((x3551))
+:extrapreds ((x3552))
+:extrapreds ((x3553))
+:extrapreds ((x3554))
+:extrapreds ((x3555))
+:extrapreds ((x3556))
+:extrapreds ((x3557))
+:extrapreds ((x3558))
+:extrapreds ((x3559))
+:extrapreds ((x3560))
+:extrapreds ((x3561))
+:extrapreds ((x3562))
+:extrapreds ((x3563))
+:extrapreds ((x3564))
+:extrapreds ((x3565))
+:extrapreds ((x3566))
+:extrapreds ((x3567))
+:extrapreds ((x3568))
+:extrapreds ((x3569))
+:extrapreds ((x3570))
+:extrapreds ((x3571))
+:extrapreds ((x3572))
+:extrapreds ((x3573))
+:extrapreds ((x3574))
+:extrapreds ((x3575))
+:extrapreds ((x3576))
+:extrapreds ((x3577))
+:extrapreds ((x3578))
+:extrapreds ((x3579))
+:extrapreds ((x3580))
+:extrapreds ((x3581))
+:extrapreds ((x3582))
+:extrapreds ((x3583))
+:extrapreds ((x3584))
+:extrapreds ((x3585))
+:extrapreds ((x3586))
+:extrapreds ((x3587))
+:extrapreds ((x3588))
+:extrapreds ((x3589))
+:extrapreds ((x3590))
+:extrapreds ((x3591))
+:extrapreds ((x3592))
+:extrapreds ((x3593))
+:extrapreds ((x3594))
+:extrapreds ((x3595))
+:extrapreds ((x3596))
+:extrapreds ((x3597))
+:extrapreds ((x3598))
+:extrapreds ((x3599))
+:extrapreds ((x3600))
+:extrapreds ((x3601))
+:extrapreds ((x3602))
+:extrapreds ((x3603))
+:extrapreds ((x3604))
+:extrapreds ((x3605))
+:extrapreds ((x3606))
+:extrapreds ((x3607))
+:extrapreds ((x3608))
+:extrapreds ((x3609))
+:extrapreds ((x3610))
+:extrapreds ((x3611))
+:extrapreds ((x3612))
+:extrapreds ((x3613))
+:extrapreds ((x3614))
+:extrapreds ((x3615))
+:extrapreds ((x3616))
+:extrapreds ((x3617))
+:extrapreds ((x3618))
+:extrapreds ((x3619))
+:extrapreds ((x3620))
+:extrapreds ((x3621))
+:extrapreds ((x3622))
+:extrapreds ((x3623))
+:extrapreds ((x3624))
+:extrapreds ((x3625))
+:extrapreds ((x3626))
+:extrapreds ((x3627))
+:extrapreds ((x3628))
+:extrapreds ((x3629))
+:extrapreds ((x3630))
+:extrapreds ((x3631))
+:extrapreds ((x3632))
+:extrapreds ((x3633))
+:extrapreds ((x3634))
+:extrapreds ((x3635))
+:extrapreds ((x3636))
+:extrapreds ((x3637))
+:extrapreds ((x3638))
+:extrapreds ((x3639))
+:extrapreds ((x3640))
+:extrapreds ((x3641))
+:extrapreds ((x3642))
+:extrapreds ((x3643))
+:extrapreds ((x3644))
+:extrapreds ((x3645))
+:extrapreds ((x3646))
+:extrapreds ((x3647))
+:extrapreds ((x3648))
+:extrapreds ((x3649))
+:extrapreds ((x3650))
+:extrapreds ((x3651))
+:extrapreds ((x3652))
+:extrapreds ((x3653))
+:extrapreds ((x3654))
+:extrapreds ((x3655))
+:extrapreds ((x3656))
+:extrapreds ((x3657))
+:extrapreds ((x3658))
+:extrapreds ((x3659))
+:extrapreds ((x3660))
+:extrapreds ((x3661))
+:extrapreds ((x3662))
+:extrapreds ((x3663))
+:extrapreds ((x3664))
+:extrapreds ((x3665))
+:extrapreds ((x3666))
+:extrapreds ((x3667))
+:extrapreds ((x3668))
+:extrapreds ((x3669))
+:extrapreds ((x3670))
+:extrapreds ((x3671))
+:extrapreds ((x3672))
+:extrapreds ((x3673))
+:extrapreds ((x3674))
+:extrapreds ((x3675))
+:extrapreds ((x3676))
+:extrapreds ((x3677))
+:extrapreds ((x3678))
+:extrapreds ((x3679))
+:extrapreds ((x3680))
+:extrapreds ((x3681))
+:extrapreds ((x3682))
+:extrapreds ((x3683))
+:extrapreds ((x3684))
+:extrapreds ((x3685))
+:extrapreds ((x3686))
+:extrapreds ((x3687))
+:extrapreds ((x3688))
+:extrapreds ((x3689))
+:extrapreds ((x3690))
+:extrapreds ((x3691))
+:extrapreds ((x3692))
+:extrapreds ((x3693))
+:extrapreds ((x3694))
+:extrapreds ((x3695))
+:extrapreds ((x3696))
+:extrapreds ((x3697))
+:extrapreds ((x3698))
+:extrapreds ((x3699))
+:extrapreds ((x3700))
+:extrapreds ((x3701))
+:extrapreds ((x3702))
+:extrapreds ((x3703))
+:extrapreds ((x3704))
+:extrapreds ((x3705))
+:extrapreds ((x3706))
+:extrapreds ((x3707))
+:extrapreds ((x3708))
+:extrapreds ((x3709))
+:extrapreds ((x3710))
+:extrapreds ((x3711))
+:extrapreds ((x3712))
+:extrapreds ((x3713))
+:extrapreds ((x3714))
+:extrapreds ((x3715))
+:extrapreds ((x3716))
+:extrapreds ((x3717))
+:extrapreds ((x3718))
+:extrapreds ((x3719))
+:extrapreds ((x3720))
+:extrapreds ((x3721))
+:extrapreds ((x3722))
+:extrapreds ((x3723))
+:extrapreds ((x3724))
+:extrapreds ((x3725))
+:extrapreds ((x3726))
+:extrapreds ((x3727))
+:extrapreds ((x3728))
+:extrapreds ((x3729))
+:extrapreds ((x3730))
+:extrapreds ((x3731))
+:extrapreds ((x3732))
+:extrapreds ((x3733))
+:extrapreds ((x3734))
+:extrapreds ((x3735))
+:extrapreds ((x3736))
+:extrapreds ((x3737))
+:extrapreds ((x3738))
+:extrapreds ((x3739))
+:extrapreds ((x3740))
+:extrapreds ((x3741))
+:extrapreds ((x3742))
+:extrapreds ((x3743))
+:extrapreds ((x3744))
+:extrapreds ((x3745))
+:extrapreds ((x3746))
+:extrapreds ((x3747))
+:extrapreds ((x3748))
+:extrapreds ((x3749))
+:extrapreds ((x3750))
+:extrapreds ((x3751))
+:extrapreds ((x3752))
+:extrapreds ((x3753))
+:extrapreds ((x3754))
+:extrapreds ((x3755))
+:extrapreds ((x3756))
+:extrapreds ((x3757))
+:extrapreds ((x3758))
+:extrapreds ((x3759))
+:extrapreds ((x3760))
+:extrapreds ((x3761))
+:extrapreds ((x3762))
+:extrapreds ((x3763))
+:extrapreds ((x3764))
+:extrapreds ((x3765))
+:extrapreds ((x3766))
+:extrapreds ((x3767))
+:extrapreds ((x3768))
+:extrapreds ((x3769))
+:extrapreds ((x3770))
+:extrapreds ((x3771))
+:extrapreds ((x3772))
+:extrapreds ((x3773))
+:extrapreds ((x3774))
+:extrapreds ((x3775))
+:extrapreds ((x3776))
+:extrapreds ((x3777))
+:extrapreds ((x3778))
+:extrapreds ((x3779))
+:extrapreds ((x3780))
+:extrapreds ((x3781))
+:extrapreds ((x3782))
+:extrapreds ((x3783))
+:extrapreds ((x3784))
+:extrapreds ((x3785))
+:extrapreds ((x3786))
+:extrapreds ((x3787))
+:extrapreds ((x3788))
+:extrapreds ((x3789))
+:extrapreds ((x3790))
+:extrapreds ((x3791))
+:extrapreds ((x3792))
+:extrapreds ((x3793))
+:extrapreds ((x3794))
+:extrapreds ((x3795))
+:extrapreds ((x3796))
+:extrapreds ((x3797))
+:extrapreds ((x3798))
+:extrapreds ((x3799))
+:extrapreds ((x3800))
+:extrapreds ((x3801))
+:extrapreds ((x3802))
+:extrapreds ((x3803))
+:extrapreds ((x3804))
+:extrapreds ((x3805))
+:extrapreds ((x3806))
+:extrapreds ((x3807))
+:extrapreds ((x3808))
+:extrapreds ((x3809))
+:extrapreds ((x3810))
+:extrapreds ((x3811))
+:extrapreds ((x3812))
+:extrapreds ((x3813))
+:extrapreds ((x3814))
+:extrapreds ((x3815))
+:extrapreds ((x3816))
+:extrapreds ((x3817))
+:extrapreds ((x3818))
+:extrapreds ((x3819))
+:extrapreds ((x3820))
+:extrapreds ((x3821))
+:extrapreds ((x3822))
+:extrapreds ((x3823))
+:extrapreds ((x3824))
+:extrapreds ((x3825))
+:extrapreds ((x3826))
+:extrapreds ((x3827))
+:extrapreds ((x3828))
+:extrapreds ((x3829))
+:extrapreds ((x3830))
+:extrapreds ((x3831))
+:extrapreds ((x3832))
+:extrapreds ((x3833))
+:extrapreds ((x3834))
+:extrapreds ((x3835))
+:extrapreds ((x3836))
+:extrapreds ((x3837))
+:extrapreds ((x3838))
+:extrapreds ((x3839))
+:extrapreds ((x3840))
+:extrapreds ((x3841))
+:extrapreds ((x3842))
+:extrapreds ((x3843))
+:extrapreds ((x3844))
+:extrapreds ((x3845))
+:extrapreds ((x3846))
+:extrapreds ((x3847))
+:extrapreds ((x3848))
+:extrapreds ((x3849))
+:extrapreds ((x3850))
+:extrapreds ((x3851))
+:extrapreds ((x3852))
+:extrapreds ((x3853))
+:extrapreds ((x3854))
+:extrapreds ((x3855))
+:extrapreds ((x3856))
+:extrapreds ((x3857))
+:extrapreds ((x3858))
+:extrapreds ((x3859))
+:extrapreds ((x3860))
+:extrapreds ((x3861))
+:extrapreds ((x3862))
+:extrapreds ((x3863))
+:extrapreds ((x3864))
+:extrapreds ((x3865))
+:extrapreds ((x3866))
+:extrapreds ((x3867))
+:extrapreds ((x3868))
+:extrapreds ((x3869))
+:extrapreds ((x3870))
+:extrapreds ((x3871))
+:extrapreds ((x3872))
+:extrapreds ((x3873))
+:extrapreds ((x3874))
+:extrapreds ((x3875))
+:extrapreds ((x3876))
+:extrapreds ((x3877))
+:extrapreds ((x3878))
+:extrapreds ((x3879))
+:extrapreds ((x3880))
+:extrapreds ((x3881))
+:extrapreds ((x3882))
+:extrapreds ((x3883))
+:extrapreds ((x3884))
+:extrapreds ((x3885))
+:extrapreds ((x3886))
+:extrapreds ((x3887))
+:extrapreds ((x3888))
+:extrapreds ((x3889))
+:extrapreds ((x3890))
+:extrapreds ((x3891))
+:extrapreds ((x3892))
+:extrapreds ((x3893))
+:extrapreds ((x3894))
+:extrapreds ((x3895))
+:extrapreds ((x3896))
+:extrapreds ((x3897))
+:extrapreds ((x3898))
+:extrapreds ((x3899))
+:extrapreds ((x3900))
+:extrapreds ((x3901))
+:extrapreds ((x3902))
+:extrapreds ((x3903))
+:extrapreds ((x3904))
+:extrapreds ((x3905))
+:extrapreds ((x3906))
+:extrapreds ((x3907))
+:extrapreds ((x3908))
+:extrapreds ((x3909))
+:extrapreds ((x3910))
+:extrapreds ((x3911))
+:extrapreds ((x3912))
+:extrapreds ((x3913))
+:extrapreds ((x3914))
+:extrapreds ((x3915))
+:extrapreds ((x3916))
+:extrapreds ((x3917))
+:extrapreds ((x3918))
+:extrapreds ((x3919))
+:extrapreds ((x3920))
+:extrapreds ((x3921))
+:extrapreds ((x3922))
+:extrapreds ((x3923))
+:extrapreds ((x3924))
+:extrapreds ((x3925))
+:extrapreds ((x3926))
+:extrapreds ((x3927))
+:extrapreds ((x3928))
+:extrapreds ((x3929))
+:extrapreds ((x3930))
+:extrapreds ((x3931))
+:extrapreds ((x3932))
+:extrapreds ((x3933))
+:extrapreds ((x3934))
+:extrapreds ((x3935))
+:extrapreds ((x3936))
+:extrapreds ((x3937))
+:extrapreds ((x3938))
+:extrapreds ((x3939))
+:extrapreds ((x3940))
+:extrapreds ((x3941))
+:extrapreds ((x3942))
+:extrapreds ((x3943))
+:extrapreds ((x3944))
+:extrapreds ((x3945))
+:extrapreds ((x3946))
+:extrapreds ((x3947))
+:extrapreds ((x3948))
+:extrapreds ((x3949))
+:extrapreds ((x3950))
+:extrapreds ((x3951))
+:extrapreds ((x3952))
+:extrapreds ((x3953))
+:extrapreds ((x3954))
+:extrapreds ((x3955))
+:extrapreds ((x3956))
+:extrapreds ((x3957))
+:extrapreds ((x3958))
+:extrapreds ((x3959))
+:extrapreds ((x3960))
+:extrapreds ((x3961))
+:extrapreds ((x3962))
+:extrapreds ((x3963))
+:extrapreds ((x3964))
+:extrapreds ((x3965))
+:extrapreds ((x3966))
+:extrapreds ((x3967))
+:extrapreds ((x3968))
+:extrapreds ((x3969))
+:extrapreds ((x3970))
+:extrapreds ((x3971))
+:extrapreds ((x3972))
+:extrapreds ((x3973))
+:extrapreds ((x3974))
+:extrapreds ((x3975))
+:extrapreds ((x3976))
+:extrapreds ((x3977))
+:extrapreds ((x3978))
+:extrapreds ((x3979))
+:extrapreds ((x3980))
+:extrapreds ((x3981))
+:extrapreds ((x3982))
+:extrapreds ((x3983))
+:extrapreds ((x3984))
+:extrapreds ((x3985))
+:extrapreds ((x3986))
+:extrapreds ((x3987))
+:extrapreds ((x3988))
+:extrapreds ((x3989))
+:extrapreds ((x3990))
+:extrapreds ((x3991))
+:extrapreds ((x3992))
+:extrapreds ((x3993))
+:extrapreds ((x3994))
+:extrapreds ((x3995))
+:extrapreds ((x3996))
+:extrapreds ((x3997))
+:extrapreds ((x3998))
+:extrapreds ((x3999))
+:extrapreds ((x4000))
+:extrapreds ((x4001))
+:extrapreds ((x4002))
+:extrapreds ((x4003))
+:extrapreds ((x4004))
+:extrapreds ((x4005))
+:extrapreds ((x4006))
+:extrapreds ((x4007))
+:extrapreds ((x4008))
+:extrapreds ((x4009))
+:extrapreds ((x4010))
+:extrapreds ((x4011))
+:extrapreds ((x4012))
+:extrapreds ((x4013))
+:extrapreds ((x4014))
+:extrapreds ((x4015))
+:extrapreds ((x4016))
+:extrapreds ((x4017))
+:extrapreds ((x4018))
+:extrapreds ((x4019))
+:extrapreds ((x4020))
+:extrapreds ((x4021))
+:extrapreds ((x4022))
+:extrapreds ((x4023))
+:extrapreds ((x4024))
+:extrapreds ((x4025))
+:extrapreds ((x4026))
+:extrapreds ((x4027))
+:extrapreds ((x4028))
+:extrapreds ((x4029))
+:extrapreds ((x4030))
+:extrapreds ((x4031))
+:extrapreds ((x4032))
+:extrapreds ((x4033))
+:extrapreds ((x4034))
+:extrapreds ((x4035))
+:extrapreds ((x4036))
+:extrapreds ((x4037))
+:extrapreds ((x4038))
+:extrapreds ((x4039))
+:extrapreds ((x4040))
+:extrapreds ((x4041))
+:extrapreds ((x4042))
+:extrapreds ((x4043))
+:extrapreds ((x4044))
+:extrapreds ((x4045))
+:extrapreds ((x4046))
+:extrapreds ((x4047))
+:extrapreds ((x4048))
+:extrapreds ((x4049))
+:extrapreds ((x4050))
+:extrapreds ((x4051))
+:extrapreds ((x4052))
+:extrapreds ((x4053))
+:extrapreds ((x4054))
+:extrapreds ((x4055))
+:extrapreds ((x4056))
+:extrapreds ((x4057))
+:extrapreds ((x4058))
+:extrapreds ((x4059))
+:extrapreds ((x4060))
+:extrapreds ((x4061))
+:extrapreds ((x4062))
+:extrapreds ((x4063))
+:extrapreds ((x4064))
+:extrapreds ((x4065))
+:extrapreds ((x4066))
+:extrapreds ((x4067))
+:extrapreds ((x4068))
+:extrapreds ((x4069))
+:extrapreds ((x4070))
+:extrapreds ((x4071))
+:extrapreds ((x4072))
+:extrapreds ((x4073))
+:extrapreds ((x4074))
+:extrapreds ((x4075))
+:extrapreds ((x4076))
+:extrapreds ((x4077))
+:extrapreds ((x4078))
+:extrapreds ((x4079))
+:extrapreds ((x4080))
+:extrapreds ((x4081))
+:extrapreds ((x4082))
+:extrapreds ((x4083))
+:extrapreds ((x4084))
+:extrapreds ((x4085))
+:extrapreds ((x4086))
+:extrapreds ((x4087))
+:extrapreds ((x4088))
+:extrapreds ((x4089))
+:extrapreds ((x4090))
+:extrapreds ((x4091))
+:extrapreds ((x4092))
+:extrapreds ((x4093))
+:extrapreds ((x4094))
+:extrapreds ((x4095))
+:extrapreds ((x4096))
+:extrapreds ((x4097))
+:extrapreds ((x4098))
+:extrapreds ((x4099))
+:extrapreds ((x4100))
+:extrapreds ((x4101))
+:extrapreds ((x4102))
+:extrapreds ((x4103))
+:extrapreds ((x4104))
+:extrapreds ((x4105))
+:extrapreds ((x4106))
+:extrapreds ((x4107))
+:extrapreds ((x4108))
+:extrapreds ((x4109))
+:extrapreds ((x4110))
+:extrapreds ((x4111))
+:extrapreds ((x4112))
+:extrapreds ((x4113))
+:extrapreds ((x4114))
+:extrapreds ((x4115))
+:extrapreds ((x4116))
+:extrapreds ((x4117))
+:extrapreds ((x4118))
+:extrapreds ((x4119))
+:extrapreds ((x4120))
+:extrapreds ((x4121))
+:extrapreds ((x4122))
+:extrapreds ((x4123))
+:extrapreds ((x4124))
+:extrapreds ((x4125))
+:extrapreds ((x4126))
+:extrapreds ((x4127))
+:extrapreds ((x4128))
+:extrapreds ((x4129))
+:extrapreds ((x4130))
+:extrapreds ((x4131))
+:extrapreds ((x4132))
+:extrapreds ((x4133))
+:extrapreds ((x4134))
+:extrapreds ((x4135))
+:extrapreds ((x4136))
+:extrapreds ((x4137))
+:extrapreds ((x4138))
+:extrapreds ((x4139))
+:extrapreds ((x4140))
+:extrapreds ((x4141))
+:extrapreds ((x4142))
+:extrapreds ((x4143))
+:extrapreds ((x4144))
+:extrapreds ((x4145))
+:extrapreds ((x4146))
+:extrapreds ((x4147))
+:extrapreds ((x4148))
+:extrapreds ((x4149))
+:extrapreds ((x4150))
+:extrapreds ((x4151))
+:extrapreds ((x4152))
+:extrapreds ((x4153))
+:extrapreds ((x4154))
+:extrapreds ((x4155))
+:extrapreds ((x4156))
+:extrapreds ((x4157))
+:extrapreds ((x4158))
+:extrapreds ((x4159))
+:extrapreds ((x4160))
+:extrapreds ((x4161))
+:extrapreds ((x4162))
+:extrapreds ((x4163))
+:extrapreds ((x4164))
+:extrapreds ((x4165))
+:extrapreds ((x4166))
+:extrapreds ((x4167))
+:extrapreds ((x4168))
+:extrapreds ((x4169))
+:extrapreds ((x4170))
+:extrapreds ((x4171))
+:extrapreds ((x4172))
+:extrapreds ((x4173))
+:extrapreds ((x4174))
+:extrapreds ((x4175))
+:extrapreds ((x4176))
+:extrapreds ((x4177))
+:extrapreds ((x4178))
+:extrapreds ((x4179))
+:extrapreds ((x4180))
+:extrapreds ((x4181))
+:extrapreds ((x4182))
+:extrapreds ((x4183))
+:extrapreds ((x4184))
+:extrapreds ((x4185))
+:extrapreds ((x4186))
+:extrapreds ((x4187))
+:extrapreds ((x4188))
+:extrapreds ((x4189))
+:extrapreds ((x4190))
+:extrapreds ((x4191))
+:extrapreds ((x4192))
+:extrapreds ((x4193))
+:extrapreds ((x4194))
+:extrapreds ((x4195))
+:extrapreds ((x4196))
+:extrapreds ((x4197))
+:extrapreds ((x4198))
+:extrapreds ((x4199))
+:extrapreds ((x4200))
+:extrapreds ((x4201))
+:extrapreds ((x4202))
+:extrapreds ((x4203))
+:extrapreds ((x4204))
+:extrapreds ((x4205))
+:extrapreds ((x4206))
+:extrapreds ((x4207))
+:extrapreds ((x4208))
+:extrapreds ((x4209))
+:extrapreds ((x4210))
+:extrapreds ((x4211))
+:extrapreds ((x4212))
+:extrapreds ((x4213))
+:extrapreds ((x4214))
+:extrapreds ((x4215))
+:extrapreds ((x4216))
+:extrapreds ((x4217))
+:extrapreds ((x4218))
+:extrapreds ((x4219))
+:extrapreds ((x4220))
+:extrapreds ((x4221))
+:extrapreds ((x4222))
+:extrapreds ((x4223))
+:extrapreds ((x4224))
+:extrapreds ((x4225))
+:extrapreds ((x4226))
+:extrapreds ((x4227))
+:extrapreds ((x4228))
+:extrapreds ((x4229))
+:extrapreds ((x4230))
+:extrapreds ((x4231))
+:extrapreds ((x4232))
+:extrapreds ((x4233))
+:extrapreds ((x4234))
+:extrapreds ((x4235))
+:extrapreds ((x4236))
+:extrapreds ((x4237))
+:extrapreds ((x4238))
+:extrapreds ((x4239))
+:extrapreds ((x4240))
+:extrapreds ((x4241))
+:extrapreds ((x4242))
+:extrapreds ((x4243))
+:extrapreds ((x4244))
+:extrapreds ((x4245))
+:extrapreds ((x4246))
+:extrapreds ((x4247))
+:extrapreds ((x4248))
+:extrapreds ((x4249))
+:extrapreds ((x4250))
+:extrapreds ((x4251))
+:extrapreds ((x4252))
+:extrapreds ((x4253))
+:extrapreds ((x4254))
+:extrapreds ((x4255))
+:extrapreds ((x4256))
+:extrapreds ((x4257))
+:extrapreds ((x4258))
+:extrapreds ((x4259))
+:extrapreds ((x4260))
+:extrapreds ((x4261))
+:extrapreds ((x4262))
+:extrapreds ((x4263))
+:extrapreds ((x4264))
+:extrapreds ((x4265))
+:extrapreds ((x4266))
+:extrapreds ((x4267))
+:extrapreds ((x4268))
+:extrapreds ((x4269))
+:extrapreds ((x4270))
+:extrapreds ((x4271))
+:extrapreds ((x4272))
+:extrapreds ((x4273))
+:extrapreds ((x4274))
+:extrapreds ((x4275))
+:extrapreds ((x4276))
+:extrapreds ((x4277))
+:extrapreds ((x4278))
+:extrapreds ((x4279))
+:extrapreds ((x4280))
+:extrapreds ((x4281))
+:extrapreds ((x4282))
+:extrapreds ((x4283))
+:extrapreds ((x4284))
+:extrapreds ((x4285))
+:extrapreds ((x4286))
+:extrapreds ((x4287))
+:extrapreds ((x4288))
+:extrapreds ((x4289))
+:extrapreds ((x4290))
+:extrapreds ((x4291))
+:extrapreds ((x4292))
+:extrapreds ((x4293))
+:extrapreds ((x4294))
+:extrapreds ((x4295))
+:extrapreds ((x4296))
+:extrapreds ((x4297))
+:extrapreds ((x4298))
+:extrapreds ((x4299))
+:extrapreds ((x4300))
+:extrapreds ((x4301))
+:extrapreds ((x4302))
+:extrapreds ((x4303))
+:extrapreds ((x4304))
+:extrapreds ((x4305))
+:extrapreds ((x4306))
+:extrapreds ((x4307))
+:extrapreds ((x4308))
+:extrapreds ((x4309))
+:extrapreds ((x4310))
+:extrapreds ((x4311))
+:extrapreds ((x4312))
+:extrapreds ((x4313))
+:extrapreds ((x4314))
+:extrapreds ((x4315))
+:extrapreds ((x4316))
+:extrapreds ((x4317))
+:extrapreds ((x4318))
+:extrapreds ((x4319))
+:extrapreds ((x4320))
+:extrapreds ((x4321))
+:extrapreds ((x4322))
+:extrapreds ((x4323))
+:extrapreds ((x4324))
+:extrapreds ((x4325))
+:extrapreds ((x4326))
+:extrapreds ((x4327))
+:extrapreds ((x4328))
+:extrapreds ((x4329))
+:extrapreds ((x4330))
+:extrapreds ((x4331))
+:extrapreds ((x4332))
+:extrapreds ((x4333))
+:extrapreds ((x4334))
+:extrapreds ((x4335))
+:extrapreds ((x4336))
+:extrapreds ((x4337))
+:extrapreds ((x4338))
+:extrapreds ((x4339))
+:extrapreds ((x4340))
+:extrapreds ((x4341))
+:extrapreds ((x4342))
+:extrapreds ((x4343))
+:extrapreds ((x4344))
+:extrapreds ((x4345))
+:extrapreds ((x4346))
+:extrapreds ((x4347))
+:extrapreds ((x4348))
+:extrapreds ((x4349))
+:extrapreds ((x4350))
+:extrapreds ((x4351))
+:extrapreds ((x4352))
+:extrapreds ((x4353))
+:extrapreds ((x4354))
+:extrapreds ((x4355))
+:extrapreds ((x4356))
+:extrapreds ((x4357))
+:extrapreds ((x4358))
+:extrapreds ((x4359))
+:extrapreds ((x4360))
+:extrapreds ((x4361))
+:extrapreds ((x4362))
+:extrapreds ((x4363))
+:extrapreds ((x4364))
+:extrapreds ((x4365))
+:extrapreds ((x4366))
+:extrapreds ((x4367))
+:extrapreds ((x4368))
+:extrapreds ((x4369))
+:extrapreds ((x4370))
+:extrapreds ((x4371))
+:extrapreds ((x4372))
+:extrapreds ((x4373))
+:extrapreds ((x4374))
+:extrapreds ((x4375))
+:extrapreds ((x4376))
+:extrapreds ((x4377))
+:extrapreds ((x4378))
+:extrapreds ((x4379))
+:extrapreds ((x4380))
+:extrapreds ((x4381))
+:extrapreds ((x4382))
+:extrapreds ((x4383))
+:extrapreds ((x4384))
+:extrapreds ((x4385))
+:extrapreds ((x4386))
+:extrapreds ((x4387))
+:extrapreds ((x4388))
+:extrapreds ((x4389))
+:extrapreds ((x4390))
+:extrapreds ((x4391))
+:extrapreds ((x4392))
+:extrapreds ((x4393))
+:extrapreds ((x4394))
+:extrapreds ((x4395))
+:extrapreds ((x4396))
+:extrapreds ((x4397))
+:extrapreds ((x4398))
+:extrapreds ((x4399))
+:extrapreds ((x4400))
+:extrapreds ((x4401))
+:extrapreds ((x4402))
+:extrapreds ((x4403))
+:extrapreds ((x4404))
+:extrapreds ((x4405))
+:extrapreds ((x4406))
+:extrapreds ((x4407))
+:extrapreds ((x4408))
+:extrapreds ((x4409))
+:extrapreds ((x4410))
+:extrapreds ((x4411))
+:extrapreds ((x4412))
+:extrapreds ((x4413))
+:extrapreds ((x4414))
+:extrapreds ((x4415))
+:extrapreds ((x4416))
+:extrapreds ((x4417))
+:extrapreds ((x4418))
+:extrapreds ((x4419))
+:extrapreds ((x4420))
+:extrapreds ((x4421))
+:extrapreds ((x4422))
+:extrapreds ((x4423))
+:extrapreds ((x4424))
+:extrapreds ((x4425))
+:extrapreds ((x4426))
+:extrapreds ((x4427))
+:extrapreds ((x4428))
+:extrapreds ((x4429))
+:extrapreds ((x4430))
+:extrapreds ((x4431))
+:extrapreds ((x4432))
+:extrapreds ((x4433))
+:extrapreds ((x4434))
+:extrapreds ((x4435))
+:extrapreds ((x4436))
+:extrapreds ((x4437))
+:extrapreds ((x4438))
+:extrapreds ((x4439))
+:extrapreds ((x4440))
+:extrapreds ((x4441))
+:extrapreds ((x4442))
+:extrapreds ((x4443))
+:extrapreds ((x4444))
+:extrapreds ((x4445))
+:extrapreds ((x4446))
+:extrapreds ((x4447))
+:extrapreds ((x4448))
+:extrapreds ((x4449))
+:extrapreds ((x4450))
+:extrapreds ((x4451))
+:extrapreds ((x4452))
+:extrapreds ((x4453))
+:extrapreds ((x4454))
+:extrapreds ((x4455))
+:extrapreds ((x4456))
+:extrapreds ((x4457))
+:extrapreds ((x4458))
+:extrapreds ((x4459))
+:extrapreds ((x4460))
+:extrapreds ((x4461))
+:extrapreds ((x4462))
+:extrapreds ((x4463))
+:extrapreds ((x4464))
+:extrapreds ((x4465))
+:extrapreds ((x4466))
+:extrapreds ((x4467))
+:extrapreds ((x4468))
+:extrapreds ((x4469))
+:extrapreds ((x4470))
+:extrapreds ((x4471))
+:extrapreds ((x4472))
+:extrapreds ((x4473))
+:extrapreds ((x4474))
+:extrapreds ((x4475))
+:extrapreds ((x4476))
+:extrapreds ((x4477))
+:extrapreds ((x4478))
+:extrapreds ((x4479))
+:extrapreds ((x4480))
+:extrapreds ((x4481))
+:extrapreds ((x4482))
+:extrapreds ((x4483))
+:extrapreds ((x4484))
+:extrapreds ((x4485))
+:extrapreds ((x4486))
+:extrapreds ((x4487))
+:extrapreds ((x4488))
+:extrapreds ((x4489))
+:extrapreds ((x4490))
+:extrapreds ((x4491))
+:extrapreds ((x4492))
+:extrapreds ((x4493))
+:extrapreds ((x4494))
+:extrapreds ((x4495))
+:extrapreds ((x4496))
+:extrapreds ((x4497))
+:extrapreds ((x4498))
+:extrapreds ((x4499))
+:extrapreds ((x4500))
+:extrapreds ((x4501))
+:extrapreds ((x4502))
+:extrapreds ((x4503))
+:extrapreds ((x4504))
+:extrapreds ((x4505))
+:extrapreds ((x4506))
+:extrapreds ((x4507))
+:extrapreds ((x4508))
+:extrapreds ((x4509))
+:extrapreds ((x4510))
+:extrapreds ((x4511))
+:extrapreds ((x4512))
+:extrapreds ((x4513))
+:extrapreds ((x4514))
+:extrapreds ((x4515))
+:extrapreds ((x4516))
+:extrapreds ((x4517))
+:extrapreds ((x4518))
+:extrapreds ((x4519))
+:extrapreds ((x4520))
+:extrapreds ((x4521))
+:extrapreds ((x4522))
+:extrapreds ((x4523))
+:extrapreds ((x4524))
+:extrapreds ((x4525))
+:extrapreds ((x4526))
+:extrapreds ((x4527))
+:extrapreds ((x4528))
+:extrapreds ((x4529))
+:extrapreds ((x4530))
+:extrapreds ((x4531))
+:extrapreds ((x4532))
+:extrapreds ((x4533))
+:extrapreds ((x4534))
+:extrapreds ((x4535))
+:extrapreds ((x4536))
+:extrapreds ((x4537))
+:extrapreds ((x4538))
+:extrapreds ((x4539))
+:extrapreds ((x4540))
+:extrapreds ((x4541))
+:extrapreds ((x4542))
+:extrapreds ((x4543))
+:extrapreds ((x4544))
+:extrapreds ((x4545))
+:extrapreds ((x4546))
+:extrapreds ((x4547))
+:extrapreds ((x4548))
+:extrapreds ((x4549))
+:extrapreds ((x4550))
+:extrapreds ((x4551))
+:extrapreds ((x4552))
+:extrapreds ((x4553))
+:extrapreds ((x4554))
+:extrapreds ((x4555))
+:extrapreds ((x4556))
+:extrapreds ((x4557))
+:extrapreds ((x4558))
+:extrapreds ((x4559))
+:extrapreds ((x4560))
+:extrapreds ((x4561))
+:extrapreds ((x4562))
+:extrapreds ((x4563))
+:extrapreds ((x4564))
+:extrapreds ((x4565))
+:extrapreds ((x4566))
+:extrapreds ((x4567))
+:extrapreds ((x4568))
+:extrapreds ((x4569))
+:extrapreds ((x4570))
+:extrapreds ((x4571))
+:extrapreds ((x4572))
+:extrapreds ((x4573))
+:extrapreds ((x4574))
+:extrapreds ((x4575))
+:extrapreds ((x4576))
+:extrapreds ((x4577))
+:extrapreds ((x4578))
+:extrapreds ((x4579))
+:extrapreds ((x4580))
+:extrapreds ((x4581))
+:extrapreds ((x4582))
+:extrapreds ((x4583))
+:extrapreds ((x4584))
+:extrapreds ((x4585))
+:extrapreds ((x4586))
+:extrapreds ((x4587))
+:extrapreds ((x4588))
+:extrapreds ((x4589))
+:extrapreds ((x4590))
+:extrapreds ((x4591))
+:extrapreds ((x4592))
+:extrapreds ((x4593))
+:extrapreds ((x4594))
+:extrapreds ((x4595))
+:extrapreds ((x4596))
+:extrapreds ((x4597))
+:extrapreds ((x4598))
+:extrapreds ((x4599))
+:extrapreds ((x4600))
+:extrapreds ((x4601))
+:extrapreds ((x4602))
+:extrapreds ((x4603))
+:extrapreds ((x4604))
+:extrapreds ((x4605))
+:extrapreds ((x4606))
+:extrapreds ((x4607))
+:extrapreds ((x4608))
+:extrapreds ((x4609))
+:extrapreds ((x4610))
+:extrapreds ((x4611))
+:extrapreds ((x4612))
+:extrapreds ((x4613))
+:extrapreds ((x4614))
+:extrapreds ((x4615))
+:extrapreds ((x4616))
+:extrapreds ((x4617))
+:extrapreds ((x4618))
+:extrapreds ((x4619))
+:extrapreds ((x4620))
+:extrapreds ((x4621))
+:extrapreds ((x4622))
+:extrapreds ((x4623))
+:extrapreds ((x4624))
+:extrapreds ((x4625))
+:extrapreds ((x4626))
+:extrapreds ((x4627))
+:extrapreds ((x4628))
+:extrapreds ((x4629))
+:extrapreds ((x4630))
+:extrapreds ((x4631))
+:extrapreds ((x4632))
+:extrapreds ((x4633))
+:extrapreds ((x4634))
+:extrapreds ((x4635))
+:extrapreds ((x4636))
+:extrapreds ((x4637))
+:extrapreds ((x4638))
+:extrapreds ((x4639))
+:extrapreds ((x4640))
+:extrapreds ((x4641))
+:extrapreds ((x4642))
+:extrapreds ((x4643))
+:extrapreds ((x4644))
+:extrapreds ((x4645))
+:extrapreds ((x4646))
+:extrapreds ((x4647))
+:extrapreds ((x4648))
+:extrapreds ((x4649))
+:extrapreds ((x4650))
+:extrapreds ((x4651))
+:extrapreds ((x4652))
+:extrapreds ((x4653))
+:extrapreds ((x4654))
+:extrapreds ((x4655))
+:extrapreds ((x4656))
+:extrapreds ((x4657))
+:extrapreds ((x4658))
+:extrapreds ((x4659))
+:extrapreds ((x4660))
+:extrapreds ((x4661))
+:extrapreds ((x4662))
+:extrapreds ((x4663))
+:extrapreds ((x4664))
+:extrapreds ((x4665))
+:extrapreds ((x4666))
+:extrapreds ((x4667))
+:extrapreds ((x4668))
+:extrapreds ((x4669))
+:extrapreds ((x4670))
+:extrapreds ((x4671))
+:extrapreds ((x4672))
+:extrapreds ((x4673))
+:extrapreds ((x4674))
+:extrapreds ((x4675))
+:extrapreds ((x4676))
+:extrapreds ((x4677))
+:extrapreds ((x4678))
+:extrapreds ((x4679))
+:extrapreds ((x4680))
+:extrapreds ((x4681))
+:extrapreds ((x4682))
+:extrapreds ((x4683))
+:extrapreds ((x4684))
+:extrapreds ((x4685))
+:extrapreds ((x4686))
+:extrapreds ((x4687))
+:extrapreds ((x4688))
+:extrapreds ((x4689))
+:extrapreds ((x4690))
+:extrapreds ((x4691))
+:extrapreds ((x4692))
+:extrapreds ((x4693))
+:extrapreds ((x4694))
+:extrapreds ((x4695))
+:extrapreds ((x4696))
+:extrapreds ((x4697))
+:extrapreds ((x4698))
+:extrapreds ((x4699))
+:extrapreds ((x4700))
+:extrapreds ((x4701))
+:extrapreds ((x4702))
+:extrapreds ((x4703))
+:extrapreds ((x4704))
+:extrapreds ((x4705))
+:extrapreds ((x4706))
+:extrapreds ((x4707))
+:extrapreds ((x4708))
+:extrapreds ((x4709))
+:extrapreds ((x4710))
+:extrapreds ((x4711))
+:extrapreds ((x4712))
+:extrapreds ((x4713))
+:extrapreds ((x4714))
+:extrapreds ((x4715))
+:extrapreds ((x4716))
+:extrapreds ((x4717))
+:extrapreds ((x4718))
+:extrapreds ((x4719))
+:extrapreds ((x4720))
+:extrapreds ((x4721))
+:extrapreds ((x4722))
+:extrapreds ((x4723))
+:extrapreds ((x4724))
+:extrapreds ((x4725))
+:extrapreds ((x4726))
+:extrapreds ((x4727))
+:extrapreds ((x4728))
+:extrapreds ((x4729))
+:extrapreds ((x4730))
+:extrapreds ((x4731))
+:extrapreds ((x4732))
+:extrapreds ((x4733))
+:extrapreds ((x4734))
+:extrapreds ((x4735))
+:extrapreds ((x4736))
+:extrapreds ((x4737))
+:extrapreds ((x4738))
+:extrapreds ((x4739))
+:extrapreds ((x4740))
+:extrapreds ((x4741))
+:extrapreds ((x4742))
+:extrapreds ((x4743))
+:extrapreds ((x4744))
+:extrapreds ((x4745))
+:extrapreds ((x4746))
+:extrapreds ((x4747))
+:extrapreds ((x4748))
+:extrapreds ((x4749))
+:extrapreds ((x4750))
+:extrapreds ((x4751))
+:extrapreds ((x4752))
+:extrapreds ((x4753))
+:extrapreds ((x4754))
+:extrapreds ((x4755))
+:extrapreds ((x4756))
+:extrapreds ((x4757))
+:extrapreds ((x4758))
+:extrapreds ((x4759))
+:extrapreds ((x4760))
+:extrapreds ((x4761))
+:extrapreds ((x4762))
+:extrapreds ((x4763))
+:extrapreds ((x4764))
+:extrapreds ((x4765))
+:extrapreds ((x4766))
+:extrapreds ((x4767))
+:extrapreds ((x4768))
+:extrapreds ((x4769))
+:extrapreds ((x4770))
+:extrapreds ((x4771))
+:extrapreds ((x4772))
+:extrapreds ((x4773))
+:extrapreds ((x4774))
+:extrapreds ((x4775))
+:extrapreds ((x4776))
+:extrapreds ((x4777))
+:extrapreds ((x4778))
+:extrapreds ((x4779))
+:extrapreds ((x4780))
+:extrapreds ((x4781))
+:extrapreds ((x4782))
+:extrapreds ((x4783))
+:extrapreds ((x4784))
+:extrapreds ((x4785))
+:extrapreds ((x4786))
+:extrapreds ((x4787))
+:extrapreds ((x4788))
+:extrapreds ((x4789))
+:extrapreds ((x4790))
+:extrapreds ((x4791))
+:extrapreds ((x4792))
+:extrapreds ((x4793))
+:extrapreds ((x4794))
+:extrapreds ((x4795))
+:extrapreds ((x4796))
+:extrapreds ((x4797))
+:extrapreds ((x4798))
+:extrapreds ((x4799))
+:extrapreds ((x4800))
+:extrapreds ((x4801))
+:extrapreds ((x4802))
+:extrapreds ((x4803))
+:extrapreds ((x4804))
+:extrapreds ((x4805))
+:extrapreds ((x4806))
+:extrapreds ((x4807))
+:extrapreds ((x4808))
+:extrapreds ((x4809))
+:extrapreds ((x4810))
+:extrapreds ((x4811))
+:extrapreds ((x4812))
+:extrapreds ((x4813))
+:extrapreds ((x4814))
+:extrapreds ((x4815))
+:extrapreds ((x4816))
+:extrapreds ((x4817))
+:extrapreds ((x4818))
+:extrapreds ((x4819))
+:extrapreds ((x4820))
+:extrapreds ((x4821))
+:extrapreds ((x4822))
+:extrapreds ((x4823))
+:extrapreds ((x4824))
+:extrapreds ((x4825))
+:extrapreds ((x4826))
+:extrapreds ((x4827))
+:extrapreds ((x4828))
+:extrapreds ((x4829))
+:extrapreds ((x4830))
+:extrapreds ((x4831))
+:extrapreds ((x4832))
+:extrapreds ((x4833))
+:extrapreds ((x4834))
+:extrapreds ((x4835))
+:extrapreds ((x4836))
+:extrapreds ((x4837))
+:extrapreds ((x4838))
+:extrapreds ((x4839))
+:extrapreds ((x4840))
+:extrapreds ((x4841))
+:extrapreds ((x4842))
+:extrapreds ((x4843))
+:extrapreds ((x4844))
+:extrapreds ((x4845))
+:extrapreds ((x4846))
+:extrapreds ((x4847))
+:extrapreds ((x4848))
+:extrapreds ((x4849))
+:extrapreds ((x4850))
+:extrapreds ((x4851))
+:extrapreds ((x4852))
+:extrapreds ((x4853))
+:extrapreds ((x4854))
+:extrapreds ((x4855))
+:extrapreds ((x4856))
+:extrapreds ((x4857))
+:extrapreds ((x4858))
+:extrapreds ((x4859))
+:extrapreds ((x4860))
+:extrapreds ((x4861))
+:extrapreds ((x4862))
+:extrapreds ((x4863))
+:extrapreds ((x4864))
+:extrapreds ((x4865))
+:extrapreds ((x4866))
+:extrapreds ((x4867))
+:extrapreds ((x4868))
+:extrapreds ((x4869))
+:extrapreds ((x4870))
+:extrapreds ((x4871))
+:extrapreds ((x4872))
+:extrapreds ((x4873))
+:extrapreds ((x4874))
+:extrapreds ((x4875))
+:extrapreds ((x4876))
+:extrapreds ((x4877))
+:extrapreds ((x4878))
+:extrapreds ((x4879))
+:extrapreds ((x4880))
+:extrapreds ((x4881))
+:extrapreds ((x4882))
+:extrapreds ((x4883))
+:extrapreds ((x4884))
+:extrapreds ((x4885))
+:extrapreds ((x4886))
+:extrapreds ((x4887))
+:extrapreds ((x4888))
+:extrapreds ((x4889))
+:extrapreds ((x4890))
+:extrapreds ((x4891))
+:extrapreds ((x4892))
+:extrapreds ((x4893))
+:extrapreds ((x4894))
+:extrapreds ((x4895))
+:extrapreds ((x4896))
+:extrapreds ((x4897))
+:extrapreds ((x4898))
+:extrapreds ((x4899))
+:extrapreds ((x4900))
+:extrapreds ((x4901))
+:extrapreds ((x4902))
+:extrapreds ((x4903))
+:extrapreds ((x4904))
+:extrapreds ((x4905))
+:extrapreds ((x4906))
+:extrapreds ((x4907))
+:extrapreds ((x4908))
+:extrapreds ((x4909))
+:extrapreds ((x4910))
+:extrapreds ((x4911))
+:extrapreds ((x4912))
+:extrapreds ((x4913))
+:extrapreds ((x4914))
+:extrapreds ((x4915))
+:extrapreds ((x4916))
+:extrapreds ((x4917))
+:extrapreds ((x4918))
+:extrapreds ((x4919))
+:extrapreds ((x4920))
+:extrapreds ((x4921))
+:extrapreds ((x4922))
+:extrapreds ((x4923))
+:extrapreds ((x4924))
+:extrapreds ((x4925))
+:extrapreds ((x4926))
+:extrapreds ((x4927))
+:extrapreds ((x4928))
+:extrapreds ((x4929))
+:extrapreds ((x4930))
+:extrapreds ((x4931))
+:extrapreds ((x4932))
+:extrapreds ((x4933))
+:extrapreds ((x4934))
+:extrapreds ((x4935))
+:extrapreds ((x4936))
+:extrapreds ((x4937))
+:extrapreds ((x4938))
+:extrapreds ((x4939))
+:extrapreds ((x4940))
+:extrapreds ((x4941))
+:extrapreds ((x4942))
+:extrapreds ((x4943))
+:extrapreds ((x4944))
+:extrapreds ((x4945))
+:extrapreds ((x4946))
+:extrapreds ((x4947))
+:extrapreds ((x4948))
+:extrapreds ((x4949))
+:extrapreds ((x4950))
+:extrapreds ((x4951))
+:extrapreds ((x4952))
+:extrapreds ((x4953))
+:extrapreds ((x4954))
+:extrapreds ((x4955))
+:extrapreds ((x4956))
+:extrapreds ((x4957))
+:extrapreds ((x4958))
+:extrapreds ((x4959))
+:extrapreds ((x4960))
+:extrapreds ((x4961))
+:extrapreds ((x4962))
+:extrapreds ((x4963))
+:extrapreds ((x4964))
+:extrapreds ((x4965))
+:extrapreds ((x4966))
+:extrapreds ((x4967))
+:extrapreds ((x4968))
+:extrapreds ((x4969))
+:extrapreds ((x4970))
+:extrapreds ((x4971))
+:extrapreds ((x4972))
+:extrapreds ((x4973))
+:extrapreds ((x4974))
+:extrapreds ((x4975))
+:extrapreds ((x4976))
+:extrapreds ((x4977))
+:extrapreds ((x4978))
+:extrapreds ((x4979))
+:extrapreds ((x4980))
+:extrapreds ((x4981))
+:extrapreds ((x4982))
+:extrapreds ((x4983))
+:extrapreds ((x4984))
+:extrapreds ((x4985))
+:extrapreds ((x4986))
+:extrapreds ((x4987))
+:extrapreds ((x4988))
+:extrapreds ((x4989))
+:extrapreds ((x4990))
+:extrapreds ((x4991))
+:extrapreds ((x4992))
+:extrapreds ((x4993))
+:extrapreds ((x4994))
+:extrapreds ((x4995))
+:extrapreds ((x4996))
+:extrapreds ((x4997))
+:extrapreds ((x4998))
+:extrapreds ((x4999))
+:extrapreds ((x5000))
+:extrapreds ((x5001))
+:extrapreds ((x5002))
+:extrapreds ((x5003))
+:extrapreds ((x5004))
+:extrapreds ((x5005))
+:extrapreds ((x5006))
+:extrapreds ((x5007))
+:extrapreds ((x5008))
+:extrapreds ((x5009))
+:extrapreds ((x5010))
+:extrapreds ((x5011))
+:extrapreds ((x5012))
+:extrapreds ((x5013))
+:extrapreds ((x5014))
+:extrapreds ((x5015))
+:extrapreds ((x5016))
+:extrapreds ((x5017))
+:extrapreds ((x5018))
+:extrapreds ((x5019))
+:extrapreds ((x5020))
+:extrapreds ((x5021))
+:extrapreds ((x5022))
+:extrapreds ((x5023))
+:extrapreds ((x5024))
+:extrapreds ((x5025))
+:extrapreds ((x5026))
+:extrapreds ((x5027))
+:extrapreds ((x5028))
+:extrapreds ((x5029))
+:extrapreds ((x5030))
+:extrapreds ((x5031))
+:extrapreds ((x5032))
+:extrapreds ((x5033))
+:extrapreds ((x5034))
+:extrapreds ((x5035))
+:extrapreds ((x5036))
+:extrapreds ((x5037))
+:extrapreds ((x5038))
+:extrapreds ((x5039))
+:extrapreds ((x5040))
+:extrapreds ((x5041))
+:extrapreds ((x5042))
+:extrapreds ((x5043))
+:extrapreds ((x5044))
+:extrapreds ((x5045))
+:extrapreds ((x5046))
+:extrapreds ((x5047))
+:extrapreds ((x5048))
+:extrapreds ((x5049))
+:extrapreds ((x5050))
+:extrapreds ((x5051))
+:extrapreds ((x5052))
+:extrapreds ((x5053))
+:extrapreds ((x5054))
+:extrapreds ((x5055))
+:extrapreds ((x5056))
+:extrapreds ((x5057))
+:extrapreds ((x5058))
+:extrapreds ((x5059))
+:extrapreds ((x5060))
+:extrapreds ((x5061))
+:extrapreds ((x5062))
+:extrapreds ((x5063))
+:extrapreds ((x5064))
+:extrapreds ((x5065))
+:extrapreds ((x5066))
+:extrapreds ((x5067))
+:extrapreds ((x5068))
+:extrapreds ((x5069))
+:extrapreds ((x5070))
+:extrapreds ((x5071))
+:extrapreds ((x5072))
+:extrapreds ((x5073))
+:extrapreds ((x5074))
+:extrapreds ((x5075))
+:extrapreds ((x5076))
+:extrapreds ((x5077))
+:extrapreds ((x5078))
+:extrapreds ((x5079))
+:extrapreds ((x5080))
+:extrapreds ((x5081))
+:extrapreds ((x5082))
+:extrapreds ((x5083))
+:extrapreds ((x5084))
+:extrapreds ((x5085))
+:extrapreds ((x5086))
+:extrapreds ((x5087))
+:extrapreds ((x5088))
+:extrapreds ((x5089))
+:extrapreds ((x5090))
+:extrapreds ((x5091))
+:extrapreds ((x5092))
+:extrapreds ((x5093))
+:extrapreds ((x5094))
+:extrapreds ((x5095))
+:extrapreds ((x5096))
+:extrapreds ((x5097))
+:extrapreds ((x5098))
+:extrapreds ((x5099))
+:extrapreds ((x5100))
+:extrapreds ((x5101))
+:extrapreds ((x5102))
+:extrapreds ((x5103))
+:extrapreds ((x5104))
+:extrapreds ((x5105))
+:extrapreds ((x5106))
+:extrapreds ((x5107))
+:extrapreds ((x5108))
+:extrapreds ((x5109))
+:extrapreds ((x5110))
+:extrapreds ((x5111))
+:extrapreds ((x5112))
+:extrapreds ((x5113))
+:extrapreds ((x5114))
+:extrapreds ((x5115))
+:extrapreds ((x5116))
+:extrapreds ((x5117))
+:extrapreds ((x5118))
+:extrapreds ((x5119))
+:extrapreds ((x5120))
+:extrapreds ((x5121))
+:extrapreds ((x5122))
+:extrapreds ((x5123))
+:extrapreds ((x5124))
+:extrapreds ((x5125))
+:extrapreds ((x5126))
+:extrapreds ((x5127))
+:extrapreds ((x5128))
+:extrapreds ((x5129))
+:extrapreds ((x5130))
+:extrapreds ((x5131))
+:extrapreds ((x5132))
+:extrapreds ((x5133))
+:extrapreds ((x5134))
+:extrapreds ((x5135))
+:extrapreds ((x5136))
+:extrapreds ((x5137))
+:extrapreds ((x5138))
+:extrapreds ((x5139))
+:extrapreds ((x5140))
+:extrapreds ((x5141))
+:extrapreds ((x5142))
+:extrapreds ((x5143))
+:extrapreds ((x5144))
+:extrapreds ((x5145))
+:extrapreds ((x5146))
+:extrapreds ((x5147))
+:extrapreds ((x5148))
+:extrapreds ((x5149))
+:extrapreds ((x5150))
+:extrapreds ((x5151))
+:extrapreds ((x5152))
+:extrapreds ((x5153))
+:extrapreds ((x5154))
+:extrapreds ((x5155))
+:extrapreds ((x5156))
+:extrapreds ((x5157))
+:extrapreds ((x5158))
+:extrapreds ((x5159))
+:extrapreds ((x5160))
+:extrapreds ((x5161))
+:extrapreds ((x5162))
+:extrapreds ((x5163))
+:extrapreds ((x5164))
+:extrapreds ((x5165))
+:extrapreds ((x5166))
+:extrapreds ((x5167))
+:extrapreds ((x5168))
+:extrapreds ((x5169))
+:extrapreds ((x5170))
+:extrapreds ((x5171))
+:extrapreds ((x5172))
+:extrapreds ((x5173))
+:extrapreds ((x5174))
+:extrapreds ((x5175))
+:extrapreds ((x5176))
+:extrapreds ((x5177))
+:extrapreds ((x5178))
+:extrapreds ((x5179))
+:extrapreds ((x5180))
+:extrapreds ((x5181))
+:extrapreds ((x5182))
+:extrapreds ((x5183))
+:extrapreds ((x5184))
+:extrapreds ((x5185))
+:extrapreds ((x5186))
+:extrapreds ((x5187))
+:extrapreds ((x5188))
+:extrapreds ((x5189))
+:extrapreds ((x5190))
+:extrapreds ((x5191))
+:extrapreds ((x5192))
+:extrapreds ((x5193))
+:extrapreds ((x5194))
+:extrapreds ((x5195))
+:extrapreds ((x5196))
+:extrapreds ((x5197))
+:extrapreds ((x5198))
+:extrapreds ((x5199))
+:extrapreds ((x5200))
+:extrapreds ((x5201))
+:extrapreds ((x5202))
+:extrapreds ((x5203))
+:extrapreds ((x5204))
+:extrapreds ((x5205))
+:extrapreds ((x5206))
+:extrapreds ((x5207))
+:extrapreds ((x5208))
+:extrapreds ((x5209))
+:extrapreds ((x5210))
+:extrapreds ((x5211))
+:extrapreds ((x5212))
+:extrapreds ((x5213))
+:extrapreds ((x5214))
+:extrapreds ((x5215))
+:extrapreds ((x5216))
+:extrapreds ((x5217))
+:extrapreds ((x5218))
+:extrapreds ((x5219))
+:extrapreds ((x5220))
+:extrapreds ((x5221))
+:extrapreds ((x5222))
+:extrapreds ((x5223))
+:extrapreds ((x5224))
+:extrapreds ((x5225))
+:extrapreds ((x5226))
+:extrapreds ((x5227))
+:extrapreds ((x5228))
+:extrapreds ((x5229))
+:extrapreds ((x5230))
+:extrapreds ((x5231))
+:extrapreds ((x5232))
+:extrapreds ((x5233))
+:extrapreds ((x5234))
+:extrapreds ((x5235))
+:extrapreds ((x5236))
+:extrapreds ((x5237))
+:extrapreds ((x5238))
+:extrapreds ((x5239))
+:extrapreds ((x5240))
+:extrapreds ((x5241))
+:extrapreds ((x5242))
+:extrapreds ((x5243))
+:extrapreds ((x5244))
+:extrapreds ((x5245))
+:extrapreds ((x5246))
+:extrapreds ((x5247))
+:extrapreds ((x5248))
+:extrapreds ((x5249))
+:extrapreds ((x5250))
+:extrapreds ((x5251))
+:extrapreds ((x5252))
+:extrapreds ((x5253))
+:extrapreds ((x5254))
+:extrapreds ((x5255))
+:extrapreds ((x5256))
+:extrapreds ((x5257))
+:extrapreds ((x5258))
+:extrapreds ((x5259))
+:extrapreds ((x5260))
+:extrapreds ((x5261))
+:extrapreds ((x5262))
+:extrapreds ((x5263))
+:extrapreds ((x5264))
+:extrapreds ((x5265))
+:extrapreds ((x5266))
+:extrapreds ((x5267))
+:extrapreds ((x5268))
+:extrapreds ((x5269))
+:extrapreds ((x5270))
+:extrapreds ((x5271))
+:extrapreds ((x5272))
+:extrapreds ((x5273))
+:extrapreds ((x5274))
+:extrapreds ((x5275))
+:extrapreds ((x5276))
+:extrapreds ((x5277))
+:extrapreds ((x5278))
+:extrapreds ((x5279))
+:extrapreds ((x5280))
+:extrapreds ((x5281))
+:extrapreds ((x5282))
+:extrapreds ((x5283))
+:extrapreds ((x5284))
+:extrapreds ((x5285))
+:extrapreds ((x5286))
+:extrapreds ((x5287))
+:extrapreds ((x5288))
+:extrapreds ((x5289))
+:extrapreds ((x5290))
+:extrapreds ((x5291))
+:extrapreds ((x5292))
+:extrapreds ((x5293))
+:extrapreds ((x5294))
+:extrapreds ((x5295))
+:extrapreds ((x5296))
+:extrapreds ((x5297))
+:extrapreds ((x5298))
+:extrapreds ((x5299))
+:extrapreds ((x5300))
+:extrapreds ((x5301))
+:extrapreds ((x5302))
+:extrapreds ((x5303))
+:extrapreds ((x5304))
+:extrapreds ((x5305))
+:extrapreds ((x5306))
+:extrapreds ((x5307))
+:extrapreds ((x5308))
+:extrapreds ((x5309))
+:extrapreds ((x5310))
+:extrapreds ((x5311))
+:extrapreds ((x5312))
+:extrapreds ((x5313))
+:extrapreds ((x5314))
+:extrapreds ((x5315))
+:extrapreds ((x5316))
+:extrapreds ((x5317))
+:extrapreds ((x5318))
+:extrapreds ((x5319))
+:extrapreds ((x5320))
+:extrapreds ((x5321))
+:extrapreds ((x5322))
+:extrapreds ((x5323))
+:extrapreds ((x5324))
+:extrapreds ((x5325))
+:extrapreds ((x5326))
+:extrapreds ((x5327))
+:extrapreds ((x5328))
+:extrapreds ((x5329))
+:extrapreds ((x5330))
+:extrapreds ((x5331))
+:extrapreds ((x5332))
+:extrapreds ((x5333))
+:extrapreds ((x5334))
+:extrapreds ((x5335))
+:extrapreds ((x5336))
+:extrapreds ((x5337))
+:extrapreds ((x5338))
+:extrapreds ((x5339))
+:extrapreds ((x5340))
+:extrapreds ((x5341))
+:extrapreds ((x5342))
+:extrapreds ((x5343))
+:extrapreds ((x5344))
+:extrapreds ((x5345))
+:extrapreds ((x5346))
+:extrapreds ((x5347))
+:extrapreds ((x5348))
+:extrapreds ((x5349))
+:extrapreds ((x5350))
+:extrapreds ((x5351))
+:extrapreds ((x5352))
+:extrapreds ((x5353))
+:extrapreds ((x5354))
+:extrapreds ((x5355))
+:extrapreds ((x5356))
+:extrapreds ((x5357))
+:extrapreds ((x5358))
+:extrapreds ((x5359))
+:extrapreds ((x5360))
+:extrapreds ((x5361))
+:extrapreds ((x5362))
+:extrapreds ((x5363))
+:extrapreds ((x5364))
+:extrapreds ((x5365))
+:extrapreds ((x5366))
+:extrapreds ((x5367))
+:extrapreds ((x5368))
+:extrapreds ((x5369))
+:extrapreds ((x5370))
+:extrapreds ((x5371))
+:extrapreds ((x5372))
+:extrapreds ((x5373))
+:extrapreds ((x5374))
+:extrapreds ((x5375))
+:extrapreds ((x5376))
+:extrapreds ((x5377))
+:extrapreds ((x5378))
+:extrapreds ((x5379))
+:extrapreds ((x5380))
+:extrapreds ((x5381))
+:extrapreds ((x5382))
+:extrapreds ((x5383))
+:extrapreds ((x5384))
+:extrapreds ((x5385))
+:extrapreds ((x5386))
+:extrapreds ((x5387))
+:extrapreds ((x5388))
+:extrapreds ((x5389))
+:extrapreds ((x5390))
+:extrapreds ((x5391))
+:extrapreds ((x5392))
+:extrapreds ((x5393))
+:extrapreds ((x5394))
+:extrapreds ((x5395))
+:extrapreds ((x5396))
+:extrapreds ((x5397))
+:extrapreds ((x5398))
+:extrapreds ((x5399))
+:extrapreds ((x5400))
+:extrapreds ((x5401))
+:extrapreds ((x5402))
+:extrapreds ((x5403))
+:extrapreds ((x5404))
+:extrapreds ((x5405))
+:extrapreds ((x5406))
+:extrapreds ((x5407))
+:extrapreds ((x5408))
+:extrapreds ((x5409))
+:extrapreds ((x5410))
+:extrapreds ((x5411))
+:extrapreds ((x5412))
+:extrapreds ((x5413))
+:extrapreds ((x5414))
+:extrapreds ((x5415))
+:extrapreds ((x5416))
+:extrapreds ((x5417))
+:extrapreds ((x5418))
+:extrapreds ((x5419))
+:extrapreds ((x5420))
+:extrapreds ((x5421))
+:extrapreds ((x5422))
+:extrapreds ((x5423))
+:extrapreds ((x5424))
+:extrapreds ((x5425))
+:extrapreds ((x5426))
+:extrapreds ((x5427))
+:extrapreds ((x5428))
+:extrapreds ((x5429))
+:extrapreds ((x5430))
+:extrapreds ((x5431))
+:extrapreds ((x5432))
+:extrapreds ((x5433))
+:extrapreds ((x5434))
+:extrapreds ((x5435))
+:extrapreds ((x5436))
+:extrapreds ((x5437))
+:extrapreds ((x5438))
+:extrapreds ((x5439))
+:extrapreds ((x5440))
+:extrapreds ((x5441))
+:extrapreds ((x5442))
+:extrapreds ((x5443))
+:extrapreds ((x5444))
+:extrapreds ((x5445))
+:extrapreds ((x5446))
+:extrapreds ((x5447))
+:extrapreds ((x5448))
+:extrapreds ((x5449))
+:extrapreds ((x5450))
+:extrapreds ((x5451))
+:extrapreds ((x5452))
+:extrapreds ((x5453))
+:extrapreds ((x5454))
+:extrapreds ((x5455))
+:extrapreds ((x5456))
+:extrapreds ((x5457))
+:extrapreds ((x5458))
+:extrapreds ((x5459))
+:extrapreds ((x5460))
+:extrapreds ((x5461))
+:extrapreds ((x5462))
+:extrapreds ((x5463))
+:extrapreds ((x5464))
+:extrapreds ((x5465))
+:extrapreds ((x5466))
+:extrapreds ((x5467))
+:extrapreds ((x5468))
+:extrapreds ((x5469))
+:extrapreds ((x5470))
+:extrapreds ((x5471))
+:extrapreds ((x5472))
+:extrapreds ((x5473))
+:extrapreds ((x5474))
+:extrapreds ((x5475))
+:extrapreds ((x5476))
+:extrapreds ((x5477))
+:extrapreds ((x5478))
+:extrapreds ((x5479))
+:extrapreds ((x5480))
+:extrapreds ((x5481))
+:extrapreds ((x5482))
+:extrapreds ((x5483))
+:extrapreds ((x5484))
+:extrapreds ((x5485))
+:extrapreds ((x5486))
+:extrapreds ((x5487))
+:extrapreds ((x5488))
+:extrapreds ((x5489))
+:extrapreds ((x5490))
+:extrapreds ((x5491))
+:extrapreds ((x5492))
+:extrapreds ((x5493))
+:extrapreds ((x5494))
+:extrapreds ((x5495))
+:extrapreds ((x5496))
+:extrapreds ((x5497))
+:extrapreds ((x5498))
+:extrapreds ((x5499))
+:extrapreds ((x5500))
+:extrapreds ((x5501))
+:extrapreds ((x5502))
+:extrapreds ((x5503))
+:extrapreds ((x5504))
+:extrapreds ((x5505))
+:extrapreds ((x5506))
+:extrapreds ((x5507))
+:extrapreds ((x5508))
+:extrapreds ((x5509))
+:extrapreds ((x5510))
+:extrapreds ((x5511))
+:extrapreds ((x5512))
+:extrapreds ((x5513))
+:extrapreds ((x5514))
+:extrapreds ((x5515))
+:extrapreds ((x5516))
+:extrapreds ((x5517))
+:extrapreds ((x5518))
+:extrapreds ((x5519))
+:extrapreds ((x5520))
+:extrapreds ((x5521))
+:extrapreds ((x5522))
+:extrapreds ((x5523))
+:extrapreds ((x5524))
+:extrapreds ((x5525))
+:extrapreds ((x5526))
+:extrapreds ((x5527))
+:extrapreds ((x5528))
+:extrapreds ((x5529))
+:extrapreds ((x5530))
+:extrapreds ((x5531))
+:extrapreds ((x5532))
+:extrapreds ((x5533))
+:extrapreds ((x5534))
+:extrapreds ((x5535))
+:extrapreds ((x5536))
+:extrapreds ((x5537))
+:extrapreds ((x5538))
+:extrapreds ((x5539))
+:extrapreds ((x5540))
+:extrapreds ((x5541))
+:extrapreds ((x5542))
+:extrapreds ((x5543))
+:extrapreds ((x5544))
+:extrapreds ((x5545))
+:extrapreds ((x5546))
+:extrapreds ((x5547))
+:extrapreds ((x5548))
+:extrapreds ((x5549))
+:extrapreds ((x5550))
+:extrapreds ((x5551))
+:extrapreds ((x5552))
+:extrapreds ((x5553))
+:extrapreds ((x5554))
+:extrapreds ((x5555))
+:extrapreds ((x5556))
+:extrapreds ((x5557))
+:extrapreds ((x5558))
+:extrapreds ((x5559))
+:extrapreds ((x5560))
+:extrapreds ((x5561))
+:extrapreds ((x5562))
+:extrapreds ((x5563))
+:extrapreds ((x5564))
+:extrapreds ((x5565))
+:extrapreds ((x5566))
+:extrapreds ((x5567))
+:extrapreds ((x5568))
+:extrapreds ((x5569))
+:extrapreds ((x5570))
+:extrapreds ((x5571))
+:extrapreds ((x5572))
+:extrapreds ((x5573))
+:extrapreds ((x5574))
+:extrapreds ((x5575))
+:extrapreds ((x5576))
+:extrapreds ((x5577))
+:extrapreds ((x5578))
+:extrapreds ((x5579))
+:extrapreds ((x5580))
+:extrapreds ((x5581))
+:extrapreds ((x5582))
+:extrapreds ((x5583))
+:extrapreds ((x5584))
+:extrapreds ((x5585))
+:extrapreds ((x5586))
+:extrapreds ((x5587))
+:extrapreds ((x5588))
+:extrapreds ((x5589))
+:extrapreds ((x5590))
+:extrapreds ((x5591))
+:extrapreds ((x5592))
+:extrapreds ((x5593))
+:extrapreds ((x5594))
+:extrapreds ((x5595))
+:extrapreds ((x5596))
+:extrapreds ((x5597))
+:extrapreds ((x5598))
+:extrapreds ((x5599))
+:extrapreds ((x5600))
+:extrapreds ((x5601))
+:extrapreds ((x5602))
+:extrapreds ((x5603))
+:extrapreds ((x5604))
+:extrapreds ((x5605))
+:extrapreds ((x5606))
+:extrapreds ((x5607))
+:extrapreds ((x5608))
+:extrapreds ((x5609))
+:extrapreds ((x5610))
+:extrapreds ((x5611))
+:extrapreds ((x5612))
+:extrapreds ((x5613))
+:extrapreds ((x5614))
+:extrapreds ((x5615))
+:extrapreds ((x5616))
+:extrapreds ((x5617))
+:extrapreds ((x5618))
+:extrapreds ((x5619))
+:extrapreds ((x5620))
+:extrapreds ((x5621))
+:extrapreds ((x5622))
+:extrapreds ((x5623))
+:extrapreds ((x5624))
+:extrapreds ((x5625))
+:extrapreds ((x5626))
+:extrapreds ((x5627))
+:extrapreds ((x5628))
+:extrapreds ((x5629))
+:extrapreds ((x5630))
+:extrapreds ((x5631))
+:extrapreds ((x5632))
+:extrapreds ((x5633))
+:extrapreds ((x5634))
+:extrapreds ((x5635))
+:extrapreds ((x5636))
+:extrapreds ((x5637))
+:extrapreds ((x5638))
+:extrapreds ((x5639))
+:extrapreds ((x5640))
+:extrapreds ((x5641))
+:extrapreds ((x5642))
+:extrapreds ((x5643))
+:extrapreds ((x5644))
+:extrapreds ((x5645))
+:extrapreds ((x5646))
+:extrapreds ((x5647))
+:extrapreds ((x5648))
+:extrapreds ((x5649))
+:extrapreds ((x5650))
+:extrapreds ((x5651))
+:extrapreds ((x5652))
+:extrapreds ((x5653))
+:extrapreds ((x5654))
+:extrapreds ((x5655))
+:extrapreds ((x5656))
+:extrapreds ((x5657))
+:extrapreds ((x5658))
+:extrapreds ((x5659))
+:extrapreds ((x5660))
+:extrapreds ((x5661))
+:extrapreds ((x5662))
+:extrapreds ((x5663))
+:extrapreds ((x5664))
+:extrapreds ((x5665))
+:extrapreds ((x5666))
+:extrapreds ((x5667))
+:extrapreds ((x5668))
+:extrapreds ((x5669))
+:extrapreds ((x5670))
+:extrapreds ((x5671))
+:extrapreds ((x5672))
+:extrapreds ((x5673))
+:extrapreds ((x5674))
+:extrapreds ((x5675))
+:extrapreds ((x5676))
+:extrapreds ((x5677))
+:extrapreds ((x5678))
+:extrapreds ((x5679))
+:extrapreds ((x5680))
+:extrapreds ((x5681))
+:extrapreds ((x5682))
+:extrapreds ((x5683))
+:extrapreds ((x5684))
+:extrapreds ((x5685))
+:extrapreds ((x5686))
+:extrapreds ((x5687))
+:extrapreds ((x5688))
+:extrapreds ((x5689))
+:extrapreds ((x5690))
+:extrapreds ((x5691))
+:extrapreds ((x5692))
+:extrapreds ((x5693))
+:extrapreds ((x5694))
+:extrapreds ((x5695))
+:extrapreds ((x5696))
+:extrapreds ((x5697))
+:extrapreds ((x5698))
+:extrapreds ((x5699))
+:extrapreds ((x5700))
+:extrapreds ((x5701))
+:extrapreds ((x5702))
+:extrapreds ((x5703))
+:extrapreds ((x5704))
+:extrapreds ((x5705))
+:extrapreds ((x5706))
+:extrapreds ((x5707))
+:extrapreds ((x5708))
+:extrapreds ((x5709))
+:extrapreds ((x5710))
+:extrapreds ((x5711))
+:extrapreds ((x5712))
+:extrapreds ((x5713))
+:extrapreds ((x5714))
+:extrapreds ((x5715))
+:extrapreds ((x5716))
+:extrapreds ((x5717))
+:extrapreds ((x5718))
+:extrapreds ((x5719))
+:extrapreds ((x5720))
+:extrapreds ((x5721))
+:extrapreds ((x5722))
+:extrapreds ((x5723))
+:extrapreds ((x5724))
+:extrapreds ((x5725))
+:extrapreds ((x5726))
+:extrapreds ((x5727))
+:extrapreds ((x5728))
+:extrapreds ((x5729))
+:extrapreds ((x5730))
+:extrapreds ((x5731))
+:extrapreds ((x5732))
+:extrapreds ((x5733))
+:extrapreds ((x5734))
+:extrapreds ((x5735))
+:extrapreds ((x5736))
+:extrapreds ((x5737))
+:extrapreds ((x5738))
+:extrapreds ((x5739))
+:extrapreds ((x5740))
+:extrapreds ((x5741))
+:extrapreds ((x5742))
+:extrapreds ((x5743))
+:extrapreds ((x5744))
+:extrapreds ((x5745))
+:extrapreds ((x5746))
+:extrapreds ((x5747))
+:extrapreds ((x5748))
+:extrapreds ((x5749))
+:extrapreds ((x5750))
+:extrapreds ((x5751))
+:extrapreds ((x5752))
+:extrapreds ((x5753))
+:extrapreds ((x5754))
+:extrapreds ((x5755))
+:extrapreds ((x5756))
+:extrapreds ((x5757))
+:extrapreds ((x5758))
+:extrapreds ((x5759))
+:extrapreds ((x5760))
+:extrapreds ((x5761))
+:extrapreds ((x5762))
+:extrapreds ((x5763))
+:extrapreds ((x5764))
+:extrapreds ((x5765))
+:extrapreds ((x5766))
+:extrapreds ((x5767))
+:extrapreds ((x5768))
+:extrapreds ((x5769))
+:extrapreds ((x5770))
+:extrapreds ((x5771))
+:extrapreds ((x5772))
+:extrapreds ((x5773))
+:extrapreds ((x5774))
+:extrapreds ((x5775))
+:extrapreds ((x5776))
+:extrapreds ((x5777))
+:extrapreds ((x5778))
+:extrapreds ((x5779))
+:extrapreds ((x5780))
+:extrapreds ((x5781))
+:extrapreds ((x5782))
+:extrapreds ((x5783))
+:extrapreds ((x5784))
+:extrapreds ((x5785))
+:extrapreds ((x5786))
+:extrapreds ((x5787))
+:extrapreds ((x5788))
+:extrapreds ((x5789))
+:extrapreds ((x5790))
+:extrapreds ((x5791))
+:extrapreds ((x5792))
+:extrapreds ((x5793))
+:extrapreds ((x5794))
+:extrapreds ((x5795))
+:extrapreds ((x5796))
+:extrapreds ((x5797))
+:extrapreds ((x5798))
+:extrapreds ((x5799))
+:extrapreds ((x5800))
+:extrapreds ((x5801))
+:extrapreds ((x5802))
+:extrapreds ((x5803))
+:extrapreds ((x5804))
+:extrapreds ((x5805))
+:extrapreds ((x5806))
+:extrapreds ((x5807))
+:extrapreds ((x5808))
+:extrapreds ((x5809))
+:extrapreds ((x5810))
+:extrapreds ((x5811))
+:extrapreds ((x5812))
+:extrapreds ((x5813))
+:extrapreds ((x5814))
+:extrapreds ((x5815))
+:extrapreds ((x5816))
+:extrapreds ((x5817))
+:extrapreds ((x5818))
+:extrapreds ((x5819))
+:extrapreds ((x5820))
+:extrapreds ((x5821))
+:extrapreds ((x5822))
+:extrapreds ((x5823))
+:extrapreds ((x5824))
+:extrapreds ((x5825))
+:extrapreds ((x5826))
+:extrapreds ((x5827))
+:extrapreds ((x5828))
+:extrapreds ((x5829))
+:extrapreds ((x5830))
+:extrapreds ((x5831))
+:extrapreds ((x5832))
+:extrapreds ((x5833))
+:extrapreds ((x5834))
+:extrapreds ((x5835))
+:extrapreds ((x5836))
+:extrapreds ((x5837))
+:extrapreds ((x5838))
+:extrapreds ((x5839))
+:extrapreds ((x5840))
+:extrapreds ((x5841))
+:extrapreds ((x5842))
+:extrapreds ((x5843))
+:extrapreds ((x5844))
+:extrapreds ((x5845))
+:extrapreds ((x5846))
+:extrapreds ((x5847))
+:extrapreds ((x5848))
+:extrapreds ((x5849))
+:extrapreds ((x5850))
+:extrapreds ((x5851))
+:extrapreds ((x5852))
+:extrapreds ((x5853))
+:extrapreds ((x5854))
+:extrapreds ((x5855))
+:extrapreds ((x5856))
+:extrapreds ((x5857))
+:extrapreds ((x5858))
+:extrapreds ((x5859))
+:extrapreds ((x5860))
+:extrapreds ((x5861))
+:extrapreds ((x5862))
+:extrapreds ((x5863))
+:extrapreds ((x5864))
+:extrapreds ((x5865))
+:extrapreds ((x5866))
+:extrapreds ((x5867))
+:extrapreds ((x5868))
+:extrapreds ((x5869))
+:extrapreds ((x5870))
+:extrapreds ((x5871))
+:extrapreds ((x5872))
+:extrapreds ((x5873))
+:extrapreds ((x5874))
+:extrapreds ((x5875))
+:extrapreds ((x5876))
+:extrapreds ((x5877))
+:extrapreds ((x5878))
+:extrapreds ((x5879))
+:extrapreds ((x5880))
+:extrapreds ((x5881))
+:extrapreds ((x5882))
+:extrapreds ((x5883))
+:extrapreds ((x5884))
+:extrapreds ((x5885))
+:extrapreds ((x5886))
+:extrapreds ((x5887))
+:extrapreds ((x5888))
+:extrapreds ((x5889))
+:extrapreds ((x5890))
+:extrapreds ((x5891))
+:extrapreds ((x5892))
+:extrapreds ((x5893))
+:extrapreds ((x5894))
+:extrapreds ((x5895))
+:extrapreds ((x5896))
+:extrapreds ((x5897))
+:extrapreds ((x5898))
+:extrapreds ((x5899))
+:extrapreds ((x5900))
+:extrapreds ((x5901))
+:extrapreds ((x5902))
+:extrapreds ((x5903))
+:extrapreds ((x5904))
+:extrapreds ((x5905))
+:extrapreds ((x5906))
+:extrapreds ((x5907))
+:extrapreds ((x5908))
+:extrapreds ((x5909))
+:extrapreds ((x5910))
+:extrapreds ((x5911))
+:extrapreds ((x5912))
+:extrapreds ((x5913))
+:extrapreds ((x5914))
+:extrapreds ((x5915))
+:extrapreds ((x5916))
+:extrapreds ((x5917))
+:extrapreds ((x5918))
+:extrapreds ((x5919))
+:extrapreds ((x5920))
+:extrapreds ((x5921))
+:extrapreds ((x5922))
+:extrapreds ((x5923))
+:extrapreds ((x5924))
+:extrapreds ((x5925))
+:extrapreds ((x5926))
+:extrapreds ((x5927))
+:extrapreds ((x5928))
+:extrapreds ((x5929))
+:extrapreds ((x5930))
+:extrapreds ((x5931))
+:extrapreds ((x5932))
+:extrapreds ((x5933))
+:extrapreds ((x5934))
+:extrapreds ((x5935))
+:extrapreds ((x5936))
+:extrapreds ((x5937))
+:extrapreds ((x5938))
+:extrapreds ((x5939))
+:extrapreds ((x5940))
+:extrapreds ((x5941))
+:extrapreds ((x5942))
+:extrapreds ((x5943))
+:extrapreds ((x5944))
+:extrapreds ((x5945))
+:extrapreds ((x5946))
+:extrapreds ((x5947))
+:extrapreds ((x5948))
+:extrapreds ((x5949))
+:extrapreds ((x5950))
+:extrapreds ((x5951))
+:extrapreds ((x5952))
+:extrapreds ((x5953))
+:extrapreds ((x5954))
+:extrapreds ((x5955))
+:extrapreds ((x5956))
+:extrapreds ((x5957))
+:extrapreds ((x5958))
+:extrapreds ((x5959))
+:extrapreds ((x5960))
+:extrapreds ((x5961))
+:extrapreds ((x5962))
+:extrapreds ((x5963))
+:extrapreds ((x5964))
+:extrapreds ((x5965))
+:extrapreds ((x5966))
+:extrapreds ((x5967))
+:extrapreds ((x5968))
+:extrapreds ((x5969))
+:extrapreds ((x5970))
+:extrapreds ((x5971))
+:extrapreds ((x5972))
+:extrapreds ((x5973))
+:extrapreds ((x5974))
+:extrapreds ((x5975))
+:extrapreds ((x5976))
+:extrapreds ((x5977))
+:extrapreds ((x5978))
+:extrapreds ((x5979))
+:extrapreds ((x5980))
+:extrapreds ((x5981))
+:extrapreds ((x5982))
+:extrapreds ((x5983))
+:extrapreds ((x5984))
+:extrapreds ((x5985))
+:extrapreds ((x5986))
+:extrapreds ((x5987))
+:extrapreds ((x5988))
+:extrapreds ((x5989))
+:extrapreds ((x5990))
+:extrapreds ((x5991))
+:extrapreds ((x5992))
+:extrapreds ((x5993))
+:extrapreds ((x5994))
+:extrapreds ((x5995))
+:extrapreds ((x5996))
+:extrapreds ((x5997))
+:extrapreds ((x5998))
+:extrapreds ((x5999))
+:extrapreds ((x6000))
+:extrapreds ((x6001))
+:extrapreds ((x6002))
+:extrapreds ((x6003))
+:extrapreds ((x6004))
+:extrapreds ((x6005))
+:extrapreds ((x6006))
+:extrapreds ((x6007))
+:extrapreds ((x6008))
+:extrapreds ((x6009))
+:extrapreds ((x6010))
+:extrapreds ((x6011))
+:extrapreds ((x6012))
+:extrapreds ((x6013))
+:extrapreds ((x6014))
+:extrapreds ((x6015))
+:extrapreds ((x6016))
+:extrapreds ((x6017))
+:extrapreds ((x6018))
+:extrapreds ((x6019))
+:extrapreds ((x6020))
+:extrapreds ((x6021))
+:extrapreds ((x6022))
+:extrapreds ((x6023))
+:extrapreds ((x6024))
+:extrapreds ((x6025))
+:extrapreds ((x6026))
+:extrapreds ((x6027))
+:extrapreds ((x6028))
+:extrapreds ((x6029))
+:extrapreds ((x6030))
+:extrapreds ((x6031))
+:extrapreds ((x6032))
+:extrapreds ((x6033))
+:extrapreds ((x6034))
+:extrapreds ((x6035))
+:extrapreds ((x6036))
+:extrapreds ((x6037))
+:extrapreds ((x6038))
+:extrapreds ((x6039))
+:extrapreds ((x6040))
+:extrapreds ((x6041))
+:extrapreds ((x6042))
+:extrapreds ((x6043))
+:extrapreds ((x6044))
+:extrapreds ((x6045))
+:extrapreds ((x6046))
+:extrapreds ((x6047))
+:extrapreds ((x6048))
+:extrapreds ((x6049))
+:extrapreds ((x6050))
+:extrapreds ((x6051))
+:extrapreds ((x6052))
+:extrapreds ((x6053))
+:extrapreds ((x6054))
+:extrapreds ((x6055))
+:extrapreds ((x6056))
+:extrapreds ((x6057))
+:extrapreds ((x6058))
+:extrapreds ((x6059))
+:extrapreds ((x6060))
+:extrapreds ((x6061))
+:extrapreds ((x6062))
+:extrapreds ((x6063))
+:extrapreds ((x6064))
+:extrapreds ((x6065))
+:extrapreds ((x6066))
+:extrapreds ((x6067))
+:extrapreds ((x6068))
+:extrapreds ((x6069))
+:extrapreds ((x6070))
+:extrapreds ((x6071))
+:extrapreds ((x6072))
+:extrapreds ((x6073))
+:extrapreds ((x6074))
+:extrapreds ((x6075))
+:extrapreds ((x6076))
+:extrapreds ((x6077))
+:extrapreds ((x6078))
+:extrapreds ((x6079))
+:extrapreds ((x6080))
+:extrapreds ((x6081))
+:extrapreds ((x6082))
+:extrapreds ((x6083))
+:extrapreds ((x6084))
+:extrapreds ((x6085))
+:extrapreds ((x6086))
+:extrapreds ((x6087))
+:extrapreds ((x6088))
+:extrapreds ((x6089))
+:extrapreds ((x6090))
+:extrapreds ((x6091))
+:extrapreds ((x6092))
+:extrapreds ((x6093))
+:extrapreds ((x6094))
+:extrapreds ((x6095))
+:extrapreds ((x6096))
+:extrapreds ((x6097))
+:extrapreds ((x6098))
+:extrapreds ((x6099))
+:extrapreds ((x6100))
+:extrapreds ((x6101))
+:extrapreds ((x6102))
+:extrapreds ((x6103))
+:extrapreds ((x6104))
+:extrapreds ((x6105))
+:extrapreds ((x6106))
+:extrapreds ((x6107))
+:extrapreds ((x6108))
+:extrapreds ((x6109))
+:extrapreds ((x6110))
+:extrapreds ((x6111))
+:extrapreds ((x6112))
+:extrapreds ((x6113))
+:extrapreds ((x6114))
+:extrapreds ((x6115))
+:extrapreds ((x6116))
+:extrapreds ((x6117))
+:extrapreds ((x6118))
+:extrapreds ((x6119))
+:extrapreds ((x6120))
+:extrapreds ((x6121))
+:extrapreds ((x6122))
+:extrapreds ((x6123))
+:extrapreds ((x6124))
+:extrapreds ((x6125))
+:extrapreds ((x6126))
+:extrapreds ((x6127))
+:extrapreds ((x6128))
+:extrapreds ((x6129))
+:extrapreds ((x6130))
+:extrapreds ((x6131))
+:extrapreds ((x6132))
+:extrapreds ((x6133))
+:extrapreds ((x6134))
+:extrapreds ((x6135))
+:extrapreds ((x6136))
+:extrapreds ((x6137))
+:extrapreds ((x6138))
+:extrapreds ((x6139))
+:extrapreds ((x6140))
+:extrapreds ((x6141))
+:extrapreds ((x6142))
+:extrapreds ((x6143))
+:extrapreds ((x6144))
+:extrapreds ((x6145))
+:extrapreds ((x6146))
+:extrapreds ((x6147))
+:extrapreds ((x6148))
+:extrapreds ((x6149))
+:extrapreds ((x6150))
+:extrapreds ((x6151))
+:extrapreds ((x6152))
+:extrapreds ((x6153))
+:extrapreds ((x6154))
+:extrapreds ((x6155))
+:extrapreds ((x6156))
+:extrapreds ((x6157))
+:extrapreds ((x6158))
+:extrapreds ((x6159))
+:extrapreds ((x6160))
+:extrapreds ((x6161))
+:extrapreds ((x6162))
+:extrapreds ((x6163))
+:extrapreds ((x6164))
+:extrapreds ((x6165))
+:extrapreds ((x6166))
+:extrapreds ((x6167))
+:extrapreds ((x6168))
+:extrapreds ((x6169))
+:extrapreds ((x6170))
+:extrapreds ((x6171))
+:extrapreds ((x6172))
+:extrapreds ((x6173))
+:extrapreds ((x6174))
+:extrapreds ((x6175))
+:extrapreds ((x6176))
+:extrapreds ((x6177))
+:extrapreds ((x6178))
+:extrapreds ((x6179))
+:extrapreds ((x6180))
+:extrapreds ((x6181))
+:extrapreds ((x6182))
+:extrapreds ((x6183))
+:extrapreds ((x6184))
+:extrapreds ((x6185))
+:extrapreds ((x6186))
+:extrapreds ((x6187))
+:extrapreds ((x6188))
+:extrapreds ((x6189))
+:extrapreds ((x6190))
+:extrapreds ((x6191))
+:extrapreds ((x6192))
+:extrapreds ((x6193))
+:extrapreds ((x6194))
+:extrapreds ((x6195))
+:extrapreds ((x6196))
+:extrapreds ((x6197))
+:extrapreds ((x6198))
+:extrapreds ((x6199))
+:extrapreds ((x6200))
+:extrapreds ((x6201))
+:extrapreds ((x6202))
+:extrapreds ((x6203))
+:extrapreds ((x6204))
+:extrapreds ((x6205))
+:extrapreds ((x6206))
+:extrapreds ((x6207))
+:extrapreds ((x6208))
+:extrapreds ((x6209))
+:extrapreds ((x6210))
+:extrapreds ((x6211))
+:extrapreds ((x6212))
+:extrapreds ((x6213))
+:extrapreds ((x6214))
+:extrapreds ((x6215))
+:extrapreds ((x6216))
+:extrapreds ((x6217))
+:extrapreds ((x6218))
+:extrapreds ((x6219))
+:extrapreds ((x6220))
+:extrapreds ((x6221))
+:extrapreds ((x6222))
+:extrapreds ((x6223))
+:extrapreds ((x6224))
+:extrapreds ((x6225))
+:extrapreds ((x6226))
+:extrapreds ((x6227))
+:extrapreds ((x6228))
+:extrapreds ((x6229))
+:extrapreds ((x6230))
+:extrapreds ((x6231))
+:extrapreds ((x6232))
+:extrapreds ((x6233))
+:extrapreds ((x6234))
+:extrapreds ((x6235))
+:extrapreds ((x6236))
+:extrapreds ((x6237))
+:extrapreds ((x6238))
+:extrapreds ((x6239))
+:extrapreds ((x6240))
+:extrapreds ((x6241))
+:extrapreds ((x6242))
+:extrapreds ((x6243))
+:extrapreds ((x6244))
+:extrapreds ((x6245))
+:extrapreds ((x6246))
+:extrapreds ((x6247))
+:extrapreds ((x6248))
+:extrapreds ((x6249))
+:extrapreds ((x6250))
+:extrapreds ((x6251))
+:extrapreds ((x6252))
+:extrapreds ((x6253))
+:extrapreds ((x6254))
+:extrapreds ((x6255))
+:extrapreds ((x6256))
+:extrapreds ((x6257))
+:extrapreds ((x6258))
+:extrapreds ((x6259))
+:extrapreds ((x6260))
+:extrapreds ((x6261))
+:extrapreds ((x6262))
+:extrapreds ((x6263))
+:extrapreds ((x6264))
+:extrapreds ((x6265))
+:extrapreds ((x6266))
+:extrapreds ((x6267))
+:extrapreds ((x6268))
+:extrapreds ((x6269))
+:extrapreds ((x6270))
+:extrapreds ((x6271))
+:extrapreds ((x6272))
+:extrapreds ((x6273))
+:extrapreds ((x6274))
+:extrapreds ((x6275))
+:extrapreds ((x6276))
+:extrapreds ((x6277))
+:extrapreds ((x6278))
+:extrapreds ((x6279))
+:extrapreds ((x6280))
+:extrapreds ((x6281))
+:extrapreds ((x6282))
+:extrapreds ((x6283))
+:extrapreds ((x6284))
+:extrapreds ((x6285))
+:extrapreds ((x6286))
+:extrapreds ((x6287))
+:extrapreds ((x6288))
+:extrapreds ((x6289))
+:extrapreds ((x6290))
+:extrapreds ((x6291))
+:extrapreds ((x6292))
+:extrapreds ((x6293))
+:extrapreds ((x6294))
+:extrapreds ((x6295))
+:extrapreds ((x6296))
+:extrapreds ((x6297))
+:extrapreds ((x6298))
+:extrapreds ((x6299))
+:extrapreds ((x6300))
+:extrapreds ((x6301))
+:extrapreds ((x6302))
+:extrapreds ((x6303))
+:extrapreds ((x6304))
+:extrapreds ((x6305))
+:extrapreds ((x6306))
+:extrapreds ((x6307))
+:extrapreds ((x6308))
+:extrapreds ((x6309))
+:extrapreds ((x6310))
+:extrapreds ((x6311))
+:extrapreds ((x6312))
+:extrapreds ((x6313))
+:extrapreds ((x6314))
+:extrapreds ((x6315))
+:extrapreds ((x6316))
+:extrapreds ((x6317))
+:extrapreds ((x6318))
+:extrapreds ((x6319))
+:extrapreds ((x6320))
+:extrapreds ((x6321))
+:extrapreds ((x6322))
+:extrapreds ((x6323))
+:extrapreds ((x6324))
+:extrapreds ((x6325))
+:extrapreds ((x6326))
+:extrapreds ((x6327))
+:extrapreds ((x6328))
+:extrapreds ((x6329))
+:extrapreds ((x6330))
+:extrapreds ((x6331))
+:extrapreds ((x6332))
+:extrapreds ((x6333))
+:extrapreds ((x6334))
+:extrapreds ((x6335))
+:extrapreds ((x6336))
+:extrapreds ((x6337))
+:extrapreds ((x6338))
+:extrapreds ((x6339))
+:extrapreds ((x6340))
+:extrapreds ((x6341))
+:extrapreds ((x6342))
+:extrapreds ((x6343))
+:extrapreds ((x6344))
+:extrapreds ((x6345))
+:extrapreds ((x6346))
+:extrapreds ((x6347))
+:extrapreds ((x6348))
+:extrapreds ((x6349))
+:extrapreds ((x6350))
+:extrapreds ((x6351))
+:extrapreds ((x6352))
+:extrapreds ((x6353))
+:extrapreds ((x6354))
+:extrapreds ((x6355))
+:extrapreds ((x6356))
+:extrapreds ((x6357))
+:extrapreds ((x6358))
+:extrapreds ((x6359))
+:extrapreds ((x6360))
+:extrapreds ((x6361))
+:extrapreds ((x6362))
+:extrapreds ((x6363))
+:extrapreds ((x6364))
+:extrapreds ((x6365))
+:extrapreds ((x6366))
+:extrapreds ((x6367))
+:extrapreds ((x6368))
+:extrapreds ((x6369))
+:extrapreds ((x6370))
+:extrapreds ((x6371))
+:extrapreds ((x6372))
+:extrapreds ((x6373))
+:extrapreds ((x6374))
+:extrapreds ((x6375))
+:extrapreds ((x6376))
+:extrapreds ((x6377))
+:extrapreds ((x6378))
+:extrapreds ((x6379))
+:extrapreds ((x6380))
+:extrapreds ((x6381))
+:extrapreds ((x6382))
+:extrapreds ((x6383))
+:extrapreds ((x6384))
+:extrapreds ((x6385))
+:extrapreds ((x6386))
+:extrapreds ((x6387))
+:extrapreds ((x6388))
+:extrapreds ((x6389))
+:extrapreds ((x6390))
+:extrapreds ((x6391))
+:extrapreds ((x6392))
+:extrapreds ((x6393))
+:extrapreds ((x6394))
+:extrapreds ((x6395))
+:extrapreds ((x6396))
+:extrapreds ((x6397))
+:extrapreds ((x6398))
+:extrapreds ((x6399))
+:extrapreds ((x6400))
+:extrapreds ((x6401))
+:extrapreds ((x6402))
+:extrapreds ((x6403))
+:extrapreds ((x6404))
+:extrapreds ((x6405))
+:extrapreds ((x6406))
+:extrapreds ((x6407))
+:extrapreds ((x6408))
+:extrapreds ((x6409))
+:extrapreds ((x6410))
+:extrapreds ((x6411))
+:extrapreds ((x6412))
+:extrapreds ((x6413))
+:extrapreds ((x6414))
+:extrapreds ((x6415))
+:extrapreds ((x6416))
+:extrapreds ((x6417))
+:extrapreds ((x6418))
+:extrapreds ((x6419))
+:extrapreds ((x6420))
+:extrapreds ((x6421))
+:extrapreds ((x6422))
+:extrapreds ((x6423))
+:extrapreds ((x6424))
+:extrapreds ((x6425))
+:extrapreds ((x6426))
+:extrapreds ((x6427))
+:extrapreds ((x6428))
+:extrapreds ((x6429))
+:extrapreds ((x6430))
+:extrapreds ((x6431))
+:extrapreds ((x6432))
+:extrapreds ((x6433))
+:extrapreds ((x6434))
+:extrapreds ((x6435))
+:extrapreds ((x6436))
+:extrapreds ((x6437))
+:extrapreds ((x6438))
+:extrapreds ((x6439))
+:extrapreds ((x6440))
+:extrapreds ((x6441))
+:extrapreds ((x6442))
+:extrapreds ((x6443))
+:extrapreds ((x6444))
+:extrapreds ((x6445))
+:extrapreds ((x6446))
+:extrapreds ((x6447))
+:extrapreds ((x6448))
+:extrapreds ((x6449))
+:extrapreds ((x6450))
+:extrapreds ((x6451))
+:extrapreds ((x6452))
+:extrapreds ((x6453))
+:extrapreds ((x6454))
+:extrapreds ((x6455))
+:extrapreds ((x6456))
+:extrapreds ((x6457))
+:extrapreds ((x6458))
+:extrapreds ((x6459))
+:extrapreds ((x6460))
+:extrapreds ((x6461))
+:extrapreds ((x6462))
+:extrapreds ((x6463))
+:extrapreds ((x6464))
+:extrapreds ((x6465))
+:extrapreds ((x6466))
+:extrapreds ((x6467))
+:extrapreds ((x6468))
+:extrapreds ((x6469))
+:extrapreds ((x6470))
+:extrapreds ((x6471))
+:extrapreds ((x6472))
+:extrapreds ((x6473))
+:extrapreds ((x6474))
+:extrapreds ((x6475))
+:extrapreds ((x6476))
+:extrapreds ((x6477))
+:extrapreds ((x6478))
+:extrapreds ((x6479))
+:extrapreds ((x6480))
+:extrapreds ((x6481))
+:extrapreds ((x6482))
+:extrapreds ((x6483))
+:extrapreds ((x6484))
+:extrapreds ((x6485))
+:extrapreds ((x6486))
+:extrapreds ((x6487))
+:extrapreds ((x6488))
+:extrapreds ((x6489))
+:extrapreds ((x6490))
+:extrapreds ((x6491))
+:extrapreds ((x6492))
+:extrapreds ((x6493))
+:extrapreds ((x6494))
+:extrapreds ((x6495))
+:extrapreds ((x6496))
+:extrapreds ((x6497))
+:extrapreds ((x6498))
+:extrapreds ((x6499))
+:extrapreds ((x6500))
+:extrapreds ((x6501))
+:extrapreds ((x6502))
+:extrapreds ((x6503))
+:extrapreds ((x6504))
+:extrapreds ((x6505))
+:extrapreds ((x6506))
+:extrapreds ((x6507))
+:extrapreds ((x6508))
+:extrapreds ((x6509))
+:extrapreds ((x6510))
+:extrapreds ((x6511))
+:extrapreds ((x6512))
+:extrapreds ((x6513))
+:extrapreds ((x6514))
+:extrapreds ((x6515))
+:extrapreds ((x6516))
+:extrapreds ((x6517))
+:extrapreds ((x6518))
+:extrapreds ((x6519))
+:extrapreds ((x6520))
+:extrapreds ((x6521))
+:extrapreds ((x6522))
+:extrapreds ((x6523))
+:extrapreds ((x6524))
+:extrapreds ((x6525))
+:extrapreds ((x6526))
+:extrapreds ((x6527))
+:extrapreds ((x6528))
+:extrapreds ((x6529))
+:extrapreds ((x6530))
+:extrapreds ((x6531))
+:extrapreds ((x6532))
+:extrapreds ((x6533))
+:extrapreds ((x6534))
+:extrapreds ((x6535))
+:extrapreds ((x6536))
+:extrapreds ((x6537))
+:extrapreds ((x6538))
+:extrapreds ((x6539))
+:extrapreds ((x6540))
+:extrapreds ((x6541))
+:extrapreds ((x6542))
+:extrapreds ((x6543))
+:extrapreds ((x6544))
+:extrapreds ((x6545))
+:extrapreds ((x6546))
+:extrapreds ((x6547))
+:extrapreds ((x6548))
+:extrapreds ((x6549))
+:extrapreds ((x6550))
+:extrapreds ((x6551))
+:extrapreds ((x6552))
+:extrapreds ((x6553))
+:extrapreds ((x6554))
+:extrapreds ((x6555))
+:extrapreds ((x6556))
+:extrapreds ((x6557))
+:extrapreds ((x6558))
+:extrapreds ((x6559))
+:extrapreds ((x6560))
+:extrapreds ((x6561))
+:extrapreds ((x6562))
+:extrapreds ((x6563))
+:extrapreds ((x6564))
+:extrapreds ((x6565))
+:extrapreds ((x6566))
+:extrapreds ((x6567))
+:extrapreds ((x6568))
+:extrapreds ((x6569))
+:extrapreds ((x6570))
+:extrapreds ((x6571))
+:extrapreds ((x6572))
+:extrapreds ((x6573))
+:extrapreds ((x6574))
+:extrapreds ((x6575))
+:extrapreds ((x6576))
+:extrapreds ((x6577))
+:extrapreds ((x6578))
+:extrapreds ((x6579))
+:extrapreds ((x6580))
+:extrapreds ((x6581))
+:extrapreds ((x6582))
+:extrapreds ((x6583))
+:extrapreds ((x6584))
+:extrapreds ((x6585))
+:extrapreds ((x6586))
+:extrapreds ((x6587))
+:extrapreds ((x6588))
+:extrapreds ((x6589))
+:extrapreds ((x6590))
+:extrapreds ((x6591))
+:extrapreds ((x6592))
+:extrapreds ((x6593))
+:extrapreds ((x6594))
+:extrapreds ((x6595))
+:extrapreds ((x6596))
+:extrapreds ((x6597))
+:extrapreds ((x6598))
+:extrapreds ((x6599))
+:extrapreds ((x6600))
+:extrapreds ((x6601))
+:extrapreds ((x6602))
+:extrapreds ((x6603))
+:extrapreds ((x6604))
+:extrapreds ((x6605))
+:extrapreds ((x6606))
+:extrapreds ((x6607))
+:extrapreds ((x6608))
+:extrapreds ((x6609))
+:extrapreds ((x6610))
+:extrapreds ((x6611))
+:extrapreds ((x6612))
+:extrapreds ((x6613))
+:extrapreds ((x6614))
+:extrapreds ((x6615))
+:extrapreds ((x6616))
+:extrapreds ((x6617))
+:extrapreds ((x6618))
+:extrapreds ((x6619))
+:extrapreds ((x6620))
+:extrapreds ((x6621))
+:extrapreds ((x6622))
+:extrapreds ((x6623))
+:extrapreds ((x6624))
+:extrapreds ((x6625))
+:extrapreds ((x6626))
+:extrapreds ((x6627))
+:extrapreds ((x6628))
+:extrapreds ((x6629))
+:extrapreds ((x6630))
+:extrapreds ((x6631))
+:extrapreds ((x6632))
+:extrapreds ((x6633))
+:extrapreds ((x6634))
+:extrapreds ((x6635))
+:extrapreds ((x6636))
+:extrapreds ((x6637))
+:extrapreds ((x6638))
+:extrapreds ((x6639))
+:extrapreds ((x6640))
+:extrapreds ((x6641))
+:extrapreds ((x6642))
+:extrapreds ((x6643))
+:extrapreds ((x6644))
+:extrapreds ((x6645))
+:extrapreds ((x6646))
+:extrapreds ((x6647))
+:extrapreds ((x6648))
+:extrapreds ((x6649))
+:extrapreds ((x6650))
+:extrapreds ((x6651))
+:extrapreds ((x6652))
+:extrapreds ((x6653))
+:extrapreds ((x6654))
+:extrapreds ((x6655))
+:extrapreds ((x6656))
+:extrapreds ((x6657))
+:extrapreds ((x6658))
+:extrapreds ((x6659))
+:extrapreds ((x6660))
+:extrapreds ((x6661))
+:extrapreds ((x6662))
+:extrapreds ((x6663))
+:extrapreds ((x6664))
+:extrapreds ((x6665))
+:extrapreds ((x6666))
+:extrapreds ((x6667))
+:extrapreds ((x6668))
+:extrapreds ((x6669))
+:extrapreds ((x6670))
+:extrapreds ((x6671))
+:extrapreds ((x6672))
+:extrapreds ((x6673))
+:extrapreds ((x6674))
+:extrapreds ((x6675))
+:extrapreds ((x6676))
+:extrapreds ((x6677))
+:extrapreds ((x6678))
+:extrapreds ((x6679))
+:extrapreds ((x6680))
+:extrapreds ((x6681))
+:extrapreds ((x6682))
+:extrapreds ((x6683))
+:extrapreds ((x6684))
+:extrapreds ((x6685))
+:extrapreds ((x6686))
+:extrapreds ((x6687))
+:extrapreds ((x6688))
+:extrapreds ((x6689))
+:extrapreds ((x6690))
+:extrapreds ((x6691))
+:extrapreds ((x6692))
+:extrapreds ((x6693))
+:extrapreds ((x6694))
+:extrapreds ((x6695))
+:extrapreds ((x6696))
+:extrapreds ((x6697))
+:extrapreds ((x6698))
+:extrapreds ((x6699))
+:extrapreds ((x6700))
+:extrapreds ((x6701))
+:extrapreds ((x6702))
+:extrapreds ((x6703))
+:extrapreds ((x6704))
+:extrapreds ((x6705))
+:extrapreds ((x6706))
+:extrapreds ((x6707))
+:extrapreds ((x6708))
+:extrapreds ((x6709))
+:extrapreds ((x6710))
+:extrapreds ((x6711))
+:extrapreds ((x6712))
+:extrapreds ((x6713))
+:extrapreds ((x6714))
+:extrapreds ((x6715))
+:extrapreds ((x6716))
+:extrapreds ((x6717))
+:extrapreds ((x6718))
+:extrapreds ((x6719))
+:extrapreds ((x6720))
+:extrapreds ((x6721))
+:extrapreds ((x6722))
+:extrapreds ((x6723))
+:extrapreds ((x6724))
+:extrapreds ((x6725))
+:extrapreds ((x6726))
+:extrapreds ((x6727))
+:extrapreds ((x6728))
+:extrapreds ((x6729))
+:extrapreds ((x6730))
+:extrapreds ((x6731))
+:extrapreds ((x6732))
+:extrapreds ((x6733))
+:extrapreds ((x6734))
+:extrapreds ((x6735))
+:extrapreds ((x6736))
+:extrapreds ((x6737))
+:extrapreds ((x6738))
+:extrapreds ((x6739))
+:extrapreds ((x6740))
+:extrapreds ((x6741))
+:extrapreds ((x6742))
+:extrapreds ((x6743))
+:extrapreds ((x6744))
+:extrapreds ((x6745))
+:extrapreds ((x6746))
+:extrapreds ((x6747))
+:extrapreds ((x6748))
+:extrapreds ((x6749))
+:extrapreds ((x6750))
+:extrapreds ((x6751))
+:extrapreds ((x6752))
+:extrapreds ((x6753))
+:extrapreds ((x6754))
+:extrapreds ((x6755))
+:extrapreds ((x6756))
+:extrapreds ((x6757))
+:extrapreds ((x6758))
+:extrapreds ((x6759))
+:extrapreds ((x6760))
+:extrapreds ((x6761))
+:extrapreds ((x6762))
+:extrapreds ((x6763))
+:extrapreds ((x6764))
+:extrapreds ((x6765))
+:extrapreds ((x6766))
+:extrapreds ((x6767))
+:extrapreds ((x6768))
+:extrapreds ((x6769))
+:extrapreds ((x6770))
+:extrapreds ((x6771))
+:extrapreds ((x6772))
+:extrapreds ((x6773))
+:extrapreds ((x6774))
+:extrapreds ((x6775))
+:extrapreds ((x6776))
+:extrapreds ((x6777))
+:extrapreds ((x6778))
+:extrapreds ((x6779))
+:extrapreds ((x6780))
+:extrapreds ((x6781))
+:extrapreds ((x6782))
+:extrapreds ((x6783))
+:extrapreds ((x6784))
+:extrapreds ((x6785))
+:extrapreds ((x6786))
+:extrapreds ((x6787))
+:extrapreds ((x6788))
+:extrapreds ((x6789))
+:extrapreds ((x6790))
+:extrapreds ((x6791))
+:extrapreds ((x6792))
+:extrapreds ((x6793))
+:extrapreds ((x6794))
+:extrapreds ((x6795))
+:extrapreds ((x6796))
+:extrapreds ((x6797))
+:extrapreds ((x6798))
+:extrapreds ((x6799))
+:extrapreds ((x6800))
+:extrapreds ((x6801))
+:extrapreds ((x6802))
+:extrapreds ((x6803))
+:extrapreds ((x6804))
+:extrapreds ((x6805))
+:extrapreds ((x6806))
+:extrapreds ((x6807))
+:extrapreds ((x6808))
+:extrapreds ((x6809))
+:extrapreds ((x6810))
+:extrapreds ((x6811))
+:extrapreds ((x6812))
+:extrapreds ((x6813))
+:extrapreds ((x6814))
+:extrapreds ((x6815))
+:extrapreds ((x6816))
+:extrapreds ((x6817))
+:extrapreds ((x6818))
+:extrapreds ((x6819))
+:extrapreds ((x6820))
+:extrapreds ((x6821))
+:extrapreds ((x6822))
+:extrapreds ((x6823))
+:extrapreds ((x6824))
+:extrapreds ((x6825))
+:extrapreds ((x6826))
+:extrapreds ((x6827))
+:extrapreds ((x6828))
+:extrapreds ((x6829))
+:extrapreds ((x6830))
+:extrapreds ((x6831))
+:extrapreds ((x6832))
+:extrapreds ((x6833))
+:extrapreds ((x6834))
+:extrapreds ((x6835))
+:extrapreds ((x6836))
+:extrapreds ((x6837))
+:extrapreds ((x6838))
+:extrapreds ((x6839))
+:extrapreds ((x6840))
+:extrapreds ((x6841))
+:extrapreds ((x6842))
+:extrapreds ((x6843))
+:extrapreds ((x6844))
+:extrapreds ((x6845))
+:extrapreds ((x6846))
+:extrapreds ((x6847))
+:extrapreds ((x6848))
+:extrapreds ((x6849))
+:extrapreds ((x6850))
+:extrapreds ((x6851))
+:extrapreds ((x6852))
+:extrapreds ((x6853))
+:extrapreds ((x6854))
+:extrapreds ((x6855))
+:extrapreds ((x6856))
+:extrapreds ((x6857))
+:extrapreds ((x6858))
+:extrapreds ((x6859))
+:extrapreds ((x6860))
+:extrapreds ((x6861))
+:extrapreds ((x6862))
+:extrapreds ((x6863))
+:extrapreds ((x6864))
+:extrapreds ((x6865))
+:extrapreds ((x6866))
+:extrapreds ((x6867))
+:extrapreds ((x6868))
+:extrapreds ((x6869))
+:extrapreds ((x6870))
+:extrapreds ((x6871))
+:extrapreds ((x6872))
+:extrapreds ((x6873))
+:extrapreds ((x6874))
+:extrapreds ((x6875))
+:extrapreds ((x6876))
+:extrapreds ((x6877))
+:extrapreds ((x6878))
+:extrapreds ((x6879))
+:extrapreds ((x6880))
+:extrapreds ((x6881))
+:extrapreds ((x6882))
+:extrapreds ((x6883))
+:extrapreds ((x6884))
+:extrapreds ((x6885))
+:extrapreds ((x6886))
+:extrapreds ((x6887))
+:extrapreds ((x6888))
+:extrapreds ((x6889))
+:extrapreds ((x6890))
+:extrapreds ((x6891))
+:extrapreds ((x6892))
+:extrapreds ((x6893))
+:extrapreds ((x6894))
+:extrapreds ((x6895))
+:extrapreds ((x6896))
+:extrapreds ((x6897))
+:extrapreds ((x6898))
+:extrapreds ((x6899))
+:extrapreds ((x6900))
+:extrapreds ((x6901))
+:extrapreds ((x6902))
+:extrapreds ((x6903))
+:extrapreds ((x6904))
+:extrapreds ((x6905))
+:extrapreds ((x6906))
+:extrapreds ((x6907))
+:extrapreds ((x6908))
+:extrapreds ((x6909))
+:extrapreds ((x6910))
+:extrapreds ((x6911))
+:extrapreds ((x6912))
+:extrapreds ((x6913))
+:extrapreds ((x6914))
+:extrapreds ((x6915))
+:extrapreds ((x6916))
+:extrapreds ((x6917))
+:extrapreds ((x6918))
+:extrapreds ((x6919))
+:extrapreds ((x6920))
+:extrapreds ((x6921))
+:extrapreds ((x6922))
+:extrapreds ((x6923))
+:extrapreds ((x6924))
+:extrapreds ((x6925))
+:extrapreds ((x6926))
+:extrapreds ((x6927))
+:extrapreds ((x6928))
+:extrapreds ((x6929))
+:extrapreds ((x6930))
+:extrapreds ((x6931))
+:extrapreds ((x6932))
+:extrapreds ((x6933))
+:extrapreds ((x6934))
+:extrapreds ((x6935))
+:extrapreds ((x6936))
+:extrapreds ((x6937))
+:extrapreds ((x6938))
+:extrapreds ((x6939))
+:extrapreds ((x6940))
+:extrapreds ((x6941))
+:extrapreds ((x6942))
+:extrapreds ((x6943))
+:extrapreds ((x6944))
+:extrapreds ((x6945))
+:extrapreds ((x6946))
+:extrapreds ((x6947))
+:extrapreds ((x6948))
+:extrapreds ((x6949))
+:extrapreds ((x6950))
+:extrapreds ((x6951))
+:extrapreds ((x6952))
+:extrapreds ((x6953))
+:extrapreds ((x6954))
+:extrapreds ((x6955))
+:extrapreds ((x6956))
+:extrapreds ((x6957))
+:extrapreds ((x6958))
+:extrapreds ((x6959))
+:extrapreds ((x6960))
+:extrapreds ((x6961))
+:extrapreds ((x6962))
+:extrapreds ((x6963))
+:extrapreds ((x6964))
+:extrapreds ((x6965))
+:extrapreds ((x6966))
+:extrapreds ((x6967))
+:extrapreds ((x6968))
+:extrapreds ((x6969))
+:extrapreds ((x6970))
+:extrapreds ((x6971))
+:extrapreds ((x6972))
+:extrapreds ((x6973))
+:extrapreds ((x6974))
+:extrapreds ((x6975))
+:extrapreds ((x6976))
+:extrapreds ((x6977))
+:extrapreds ((x6978))
+:extrapreds ((x6979))
+:extrapreds ((x6980))
+:extrapreds ((x6981))
+:extrapreds ((x6982))
+:extrapreds ((x6983))
+:extrapreds ((x6984))
+:extrapreds ((x6985))
+:extrapreds ((x6986))
+:extrapreds ((x6987))
+:extrapreds ((x6988))
+:extrapreds ((x6989))
+:extrapreds ((x6990))
+:extrapreds ((x6991))
+:extrapreds ((x6992))
+:extrapreds ((x6993))
+:extrapreds ((x6994))
+:extrapreds ((x6995))
+:extrapreds ((x6996))
+:extrapreds ((x6997))
+:extrapreds ((x6998))
+:extrapreds ((x6999))
+:extrapreds ((x7000))
+:extrapreds ((x7001))
+:extrapreds ((x7002))
+:extrapreds ((x7003))
+:extrapreds ((x7004))
+:extrapreds ((x7005))
+:extrapreds ((x7006))
+:extrapreds ((x7007))
+:extrapreds ((x7008))
+:extrapreds ((x7009))
+:extrapreds ((x7010))
+:extrapreds ((x7011))
+:extrapreds ((x7012))
+:extrapreds ((x7013))
+:extrapreds ((x7014))
+:extrapreds ((x7015))
+:extrapreds ((x7016))
+:extrapreds ((x7017))
+:extrapreds ((x7018))
+:extrapreds ((x7019))
+:extrapreds ((x7020))
+:extrapreds ((x7021))
+:extrapreds ((x7022))
+:extrapreds ((x7023))
+:extrapreds ((x7024))
+:extrapreds ((x7025))
+:extrapreds ((x7026))
+:extrapreds ((x7027))
+:extrapreds ((x7028))
+:extrapreds ((x7029))
+:extrapreds ((x7030))
+:extrapreds ((x7031))
+:extrapreds ((x7032))
+:extrapreds ((x7033))
+:extrapreds ((x7034))
+:extrapreds ((x7035))
+:extrapreds ((x7036))
+:extrapreds ((x7037))
+:extrapreds ((x7038))
+:extrapreds ((x7039))
+:extrapreds ((x7040))
+:extrapreds ((x7041))
+:extrapreds ((x7042))
+:extrapreds ((x7043))
+:extrapreds ((x7044))
+:extrapreds ((x7045))
+:extrapreds ((x7046))
+:extrapreds ((x7047))
+:extrapreds ((x7048))
+:extrapreds ((x7049))
+:extrapreds ((x7050))
+:extrapreds ((x7051))
+:extrapreds ((x7052))
+:extrapreds ((x7053))
+:extrapreds ((x7054))
+:extrapreds ((x7055))
+:extrapreds ((x7056))
+:extrapreds ((x7057))
+:extrapreds ((x7058))
+:extrapreds ((x7059))
+:extrapreds ((x7060))
+:extrapreds ((x7061))
+:extrapreds ((x7062))
+:extrapreds ((x7063))
+:extrapreds ((x7064))
+:extrapreds ((x7065))
+:extrapreds ((x7066))
+:extrapreds ((x7067))
+:extrapreds ((x7068))
+:extrapreds ((x7069))
+:extrapreds ((x7070))
+:extrapreds ((x7071))
+:extrapreds ((x7072))
+:extrapreds ((x7073))
+:extrapreds ((x7074))
+:extrapreds ((x7075))
+:extrapreds ((x7076))
+:extrapreds ((x7077))
+:extrapreds ((x7078))
+:extrapreds ((x7079))
+:extrapreds ((x7080))
+:extrapreds ((x7081))
+:extrapreds ((x7082))
+:extrapreds ((x7083))
+:extrapreds ((x7084))
+:extrapreds ((x7085))
+:extrapreds ((x7086))
+:extrapreds ((x7087))
+:extrapreds ((x7088))
+:extrapreds ((x7089))
+:extrapreds ((x7090))
+:extrapreds ((x7091))
+:extrapreds ((x7092))
+:extrapreds ((x7093))
+:extrapreds ((x7094))
+:extrapreds ((x7095))
+:extrapreds ((x7096))
+:extrapreds ((x7097))
+:extrapreds ((x7098))
+:extrapreds ((x7099))
+:extrapreds ((x7100))
+:extrapreds ((x7101))
+:extrapreds ((x7102))
+:extrapreds ((x7103))
+:extrapreds ((x7104))
+:extrapreds ((x7105))
+:extrapreds ((x7106))
+:extrapreds ((x7107))
+:extrapreds ((x7108))
+:extrapreds ((x7109))
+:extrapreds ((x7110))
+:extrapreds ((x7111))
+:extrapreds ((x7112))
+:extrapreds ((x7113))
+:extrapreds ((x7114))
+:extrapreds ((x7115))
+:extrapreds ((x7116))
+:extrapreds ((x7117))
+:extrapreds ((x7118))
+:extrapreds ((x7119))
+:extrapreds ((x7120))
+:extrapreds ((x7121))
+:extrapreds ((x7122))
+:extrapreds ((x7123))
+:extrapreds ((x7124))
+:extrapreds ((x7125))
+:extrapreds ((x7126))
+:extrapreds ((x7127))
+:extrapreds ((x7128))
+:extrapreds ((x7129))
+:extrapreds ((x7130))
+:extrapreds ((x7131))
+:extrapreds ((x7132))
+:extrapreds ((x7133))
+:extrapreds ((x7134))
+:extrapreds ((x7135))
+:extrapreds ((x7136))
+:extrapreds ((x7137))
+:extrapreds ((x7138))
+:extrapreds ((x7139))
+:extrapreds ((x7140))
+:extrapreds ((x7141))
+:extrapreds ((x7142))
+:extrapreds ((x7143))
+:extrapreds ((x7144))
+:extrapreds ((x7145))
+:extrapreds ((x7146))
+:extrapreds ((x7147))
+:extrapreds ((x7148))
+:extrapreds ((x7149))
+:extrapreds ((x7150))
+:extrapreds ((x7151))
+:extrapreds ((x7152))
+:extrapreds ((x7153))
+:extrapreds ((x7154))
+:extrapreds ((x7155))
+:extrapreds ((x7156))
+:extrapreds ((x7157))
+:extrapreds ((x7158))
+:extrapreds ((x7159))
+:extrapreds ((x7160))
+:extrapreds ((x7161))
+:extrapreds ((x7162))
+:extrapreds ((x7163))
+:extrapreds ((x7164))
+:extrapreds ((x7165))
+:extrapreds ((x7166))
+:extrapreds ((x7167))
+:extrapreds ((x7168))
+:extrapreds ((x7169))
+:extrapreds ((x7170))
+:extrapreds ((x7171))
+:extrapreds ((x7172))
+:extrapreds ((x7173))
+:extrapreds ((x7174))
+:extrapreds ((x7175))
+:extrapreds ((x7176))
+:extrapreds ((x7177))
+:extrapreds ((x7178))
+:extrapreds ((x7179))
+:extrapreds ((x7180))
+:extrapreds ((x7181))
+:extrapreds ((x7182))
+:extrapreds ((x7183))
+:extrapreds ((x7184))
+:extrapreds ((x7185))
+:extrapreds ((x7186))
+:extrapreds ((x7187))
+:extrapreds ((x7188))
+:extrapreds ((x7189))
+:extrapreds ((x7190))
+:extrapreds ((x7191))
+:extrapreds ((x7192))
+:extrapreds ((x7193))
+:extrapreds ((x7194))
+:extrapreds ((x7195))
+:extrapreds ((x7196))
+:extrapreds ((x7197))
+:extrapreds ((x7198))
+:extrapreds ((x7199))
+:extrapreds ((x7200))
+:extrapreds ((x7201))
+:extrapreds ((x7202))
+:extrapreds ((x7203))
+:extrapreds ((x7204))
+:extrapreds ((x7205))
+:extrapreds ((x7206))
+:extrapreds ((x7207))
+:extrapreds ((x7208))
+:extrapreds ((x7209))
+:extrapreds ((x7210))
+:extrapreds ((x7211))
+:extrapreds ((x7212))
+:extrapreds ((x7213))
+:extrapreds ((x7214))
+:extrapreds ((x7215))
+:extrapreds ((x7216))
+:extrapreds ((x7217))
+:extrapreds ((x7218))
+:extrapreds ((x7219))
+:extrapreds ((x7220))
+:extrapreds ((x7221))
+:extrapreds ((x7222))
+:extrapreds ((x7223))
+:extrapreds ((x7224))
+:extrapreds ((x7225))
+:extrapreds ((x7226))
+:extrapreds ((x7227))
+:extrapreds ((x7228))
+:extrapreds ((x7229))
+:extrapreds ((x7230))
+:extrapreds ((x7231))
+:extrapreds ((x7232))
+:extrapreds ((x7233))
+:extrapreds ((x7234))
+:extrapreds ((x7235))
+:extrapreds ((x7236))
+:extrapreds ((x7237))
+:extrapreds ((x7238))
+:extrapreds ((x7239))
+:extrapreds ((x7240))
+:extrapreds ((x7241))
+:extrapreds ((x7242))
+:extrapreds ((x7243))
+:extrapreds ((x7244))
+:extrapreds ((x7245))
+:extrapreds ((x7246))
+:extrapreds ((x7247))
+:extrapreds ((x7248))
+:extrapreds ((x7249))
+:extrapreds ((x7250))
+:extrapreds ((x7251))
+:extrapreds ((x7252))
+:extrapreds ((x7253))
+:extrapreds ((x7254))
+:extrapreds ((x7255))
+:extrapreds ((x7256))
+:extrapreds ((x7257))
+:extrapreds ((x7258))
+:extrapreds ((x7259))
+:extrapreds ((x7260))
+:extrapreds ((x7261))
+:extrapreds ((x7262))
+:extrapreds ((x7263))
+:extrapreds ((x7264))
+:extrapreds ((x7265))
+:extrapreds ((x7266))
+:extrapreds ((x7267))
+:extrapreds ((x7268))
+:extrapreds ((x7269))
+:extrapreds ((x7270))
+:extrapreds ((x7271))
+:extrapreds ((x7272))
+:extrapreds ((x7273))
+:extrapreds ((x7274))
+:extrapreds ((x7275))
+:extrapreds ((x7276))
+:extrapreds ((x7277))
+:extrapreds ((x7278))
+:extrapreds ((x7279))
+:extrapreds ((x7280))
+:extrapreds ((x7281))
+:extrapreds ((x7282))
+:extrapreds ((x7283))
+:extrapreds ((x7284))
+:extrapreds ((x7285))
+:extrapreds ((x7286))
+:extrapreds ((x7287))
+:extrapreds ((x7288))
+:extrapreds ((x7289))
+:extrapreds ((x7290))
+:extrapreds ((x7291))
+:extrapreds ((x7292))
+:extrapreds ((x7293))
+:extrapreds ((x7294))
+:extrapreds ((x7295))
+:extrapreds ((x7296))
+:extrapreds ((x7297))
+:extrapreds ((x7298))
+:extrapreds ((x7299))
+:extrapreds ((x7300))
+:extrapreds ((x7301))
+:extrapreds ((x7302))
+:extrapreds ((x7303))
+:extrapreds ((x7304))
+:extrapreds ((x7305))
+:extrapreds ((x7306))
+:extrapreds ((x7307))
+:extrapreds ((x7308))
+:extrapreds ((x7309))
+:extrapreds ((x7310))
+:extrapreds ((x7311))
+:extrapreds ((x7312))
+:extrapreds ((x7313))
+:extrapreds ((x7314))
+:extrapreds ((x7315))
+:extrapreds ((x7316))
+:extrapreds ((x7317))
+:extrapreds ((x7318))
+:extrapreds ((x7319))
+:extrapreds ((x7320))
+:extrapreds ((x7321))
+:extrapreds ((x7322))
+:extrapreds ((x7323))
+:extrapreds ((x7324))
+:extrapreds ((x7325))
+:extrapreds ((x7326))
+:extrapreds ((x7327))
+:extrapreds ((x7328))
+:extrapreds ((x7329))
+:extrapreds ((x7330))
+:extrapreds ((x7331))
+:extrapreds ((x7332))
+:extrapreds ((x7333))
+:extrapreds ((x7334))
+:extrapreds ((x7335))
+:extrapreds ((x7336))
+:extrapreds ((x7337))
+:extrapreds ((x7338))
+:extrapreds ((x7339))
+:extrapreds ((x7340))
+:extrapreds ((x7341))
+:extrapreds ((x7342))
+:extrapreds ((x7343))
+:extrapreds ((x7344))
+:extrapreds ((x7345))
+:extrapreds ((x7346))
+:extrapreds ((x7347))
+:extrapreds ((x7348))
+:extrapreds ((x7349))
+:extrapreds ((x7350))
+:extrapreds ((x7351))
+:extrapreds ((x7352))
+:extrapreds ((x7353))
+:extrapreds ((x7354))
+:extrapreds ((x7355))
+:extrapreds ((x7356))
+:extrapreds ((x7357))
+:extrapreds ((x7358))
+:extrapreds ((x7359))
+:extrapreds ((x7360))
+:extrapreds ((x7361))
+:extrapreds ((x7362))
+:extrapreds ((x7363))
+:extrapreds ((x7364))
+:extrapreds ((x7365))
+:extrapreds ((x7366))
+:extrapreds ((x7367))
+:extrapreds ((x7368))
+:extrapreds ((x7369))
+:extrapreds ((x7370))
+:extrapreds ((x7371))
+:extrapreds ((x7372))
+:extrapreds ((x7373))
+:extrapreds ((x7374))
+:extrapreds ((x7375))
+:extrapreds ((x7376))
+:extrapreds ((x7377))
+:extrapreds ((x7378))
+:extrapreds ((x7379))
+:extrapreds ((x7380))
+:extrapreds ((x7381))
+:extrapreds ((x7382))
+:extrapreds ((x7383))
+:extrapreds ((x7384))
+:extrapreds ((x7385))
+:extrapreds ((x7386))
+:extrapreds ((x7387))
+:extrapreds ((x7388))
+:extrapreds ((x7389))
+:extrapreds ((x7390))
+:extrapreds ((x7391))
+:extrapreds ((x7392))
+:extrapreds ((x7393))
+:extrapreds ((x7394))
+:extrapreds ((x7395))
+:extrapreds ((x7396))
+:extrapreds ((x7397))
+:extrapreds ((x7398))
+:extrapreds ((x7399))
+:extrapreds ((x7400))
+:extrapreds ((x7401))
+:extrapreds ((x7402))
+:extrapreds ((x7403))
+:extrapreds ((x7404))
+:extrapreds ((x7405))
+:extrapreds ((x7406))
+:extrapreds ((x7407))
+:extrapreds ((x7408))
+:extrapreds ((x7409))
+:extrapreds ((x7410))
+:extrapreds ((x7411))
+:extrapreds ((x7412))
+:extrapreds ((x7413))
+:extrapreds ((x7414))
+:extrapreds ((x7415))
+:extrapreds ((x7416))
+:extrapreds ((x7417))
+:extrapreds ((x7418))
+:extrapreds ((x7419))
+:extrapreds ((x7420))
+:extrapreds ((x7421))
+:extrapreds ((x7422))
+:extrapreds ((x7423))
+:extrapreds ((x7424))
+:extrapreds ((x7425))
+:extrapreds ((x7426))
+:extrapreds ((x7427))
+:extrapreds ((x7428))
+:extrapreds ((x7429))
+:extrapreds ((x7430))
+:extrapreds ((x7431))
+:extrapreds ((x7432))
+:extrapreds ((x7433))
+:extrapreds ((x7434))
+:extrapreds ((x7435))
+:extrapreds ((x7436))
+:extrapreds ((x7437))
+:extrapreds ((x7438))
+:extrapreds ((x7439))
+:extrapreds ((x7440))
+:extrapreds ((x7441))
+:extrapreds ((x7442))
+:extrapreds ((x7443))
+:extrapreds ((x7444))
+:extrapreds ((x7445))
+:extrapreds ((x7446))
+:extrapreds ((x7447))
+:extrapreds ((x7448))
+:extrapreds ((x7449))
+:extrapreds ((x7450))
+:extrapreds ((x7451))
+:extrapreds ((x7452))
+:extrapreds ((x7453))
+:extrapreds ((x7454))
+:extrapreds ((x7455))
+:extrapreds ((x7456))
+:extrapreds ((x7457))
+:extrapreds ((x7458))
+:extrapreds ((x7459))
+:extrapreds ((x7460))
+:extrapreds ((x7461))
+:extrapreds ((x7462))
+:extrapreds ((x7463))
+:extrapreds ((x7464))
+:extrapreds ((x7465))
+:extrapreds ((x7466))
+:extrapreds ((x7467))
+:extrapreds ((x7468))
+:extrapreds ((x7469))
+:extrapreds ((x7470))
+:extrapreds ((x7471))
+:extrapreds ((x7472))
+:extrapreds ((x7473))
+:extrapreds ((x7474))
+:extrapreds ((x7475))
+:extrapreds ((x7476))
+:extrapreds ((x7477))
+:extrapreds ((x7478))
+:extrapreds ((x7479))
+:extrapreds ((x7480))
+:extrapreds ((x7481))
+:extrapreds ((x7482))
+:extrapreds ((x7483))
+:extrapreds ((x7484))
+:extrapreds ((x7485))
+:extrapreds ((x7486))
+:extrapreds ((x7487))
+:extrapreds ((x7488))
+:extrapreds ((x7489))
+:extrapreds ((x7490))
+:extrapreds ((x7491))
+:extrapreds ((x7492))
+:extrapreds ((x7493))
+:extrapreds ((x7494))
+:extrapreds ((x7495))
+:extrapreds ((x7496))
+:extrapreds ((x7497))
+:extrapreds ((x7498))
+:extrapreds ((x7499))
+:extrapreds ((x7500))
+:extrapreds ((x7501))
+:extrapreds ((x7502))
+:extrapreds ((x7503))
+:extrapreds ((x7504))
+:extrapreds ((x7505))
+:extrapreds ((x7506))
+:extrapreds ((x7507))
+:extrapreds ((x7508))
+:extrapreds ((x7509))
+:extrapreds ((x7510))
+:extrapreds ((x7511))
+:extrapreds ((x7512))
+:extrapreds ((x7513))
+:extrapreds ((x7514))
+:extrapreds ((x7515))
+:extrapreds ((x7516))
+:extrapreds ((x7517))
+:extrapreds ((x7518))
+:extrapreds ((x7519))
+:extrapreds ((x7520))
+:extrapreds ((x7521))
+:extrapreds ((x7522))
+:extrapreds ((x7523))
+:extrapreds ((x7524))
+:extrapreds ((x7525))
+:extrapreds ((x7526))
+:extrapreds ((x7527))
+:extrapreds ((x7528))
+:extrapreds ((x7529))
+:extrapreds ((x7530))
+:extrapreds ((x7531))
+:extrapreds ((x7532))
+:extrapreds ((x7533))
+:extrapreds ((x7534))
+:extrapreds ((x7535))
+:extrapreds ((x7536))
+:extrapreds ((x7537))
+:extrapreds ((x7538))
+:extrapreds ((x7539))
+:extrapreds ((x7540))
+:extrapreds ((x7541))
+:extrapreds ((x7542))
+:extrapreds ((x7543))
+:extrapreds ((x7544))
+:extrapreds ((x7545))
+:extrapreds ((x7546))
+:extrapreds ((x7547))
+:extrapreds ((x7548))
+:extrapreds ((x7549))
+:extrapreds ((x7550))
+:extrapreds ((x7551))
+:extrapreds ((x7552))
+:extrapreds ((x7553))
+:extrapreds ((x7554))
+:extrapreds ((x7555))
+:extrapreds ((x7556))
+:extrapreds ((x7557))
+:extrapreds ((x7558))
+:extrapreds ((x7559))
+:extrapreds ((x7560))
+:extrapreds ((x7561))
+:extrapreds ((x7562))
+:extrapreds ((x7563))
+:extrapreds ((x7564))
+:extrapreds ((x7565))
+:extrapreds ((x7566))
+:extrapreds ((x7567))
+:extrapreds ((x7568))
+:extrapreds ((x7569))
+:extrapreds ((x7570))
+:extrapreds ((x7571))
+:extrapreds ((x7572))
+:extrapreds ((x7573))
+:extrapreds ((x7574))
+:extrapreds ((x7575))
+:extrapreds ((x7576))
+:extrapreds ((x7577))
+:extrapreds ((x7578))
+:extrapreds ((x7579))
+:extrapreds ((x7580))
+:extrapreds ((x7581))
+:extrapreds ((x7582))
+:extrapreds ((x7583))
+:extrapreds ((x7584))
+:extrapreds ((x7585))
+:extrapreds ((x7586))
+:extrapreds ((x7587))
+:extrapreds ((x7588))
+:extrapreds ((x7589))
+:extrapreds ((x7590))
+:extrapreds ((x7591))
+:extrapreds ((x7592))
+:extrapreds ((x7593))
+:extrapreds ((x7594))
+:extrapreds ((x7595))
+:extrapreds ((x7596))
+:extrapreds ((x7597))
+:extrapreds ((x7598))
+:extrapreds ((x7599))
+:extrapreds ((x7600))
+:extrapreds ((x7601))
+:extrapreds ((x7602))
+:extrapreds ((x7603))
+:extrapreds ((x7604))
+:extrapreds ((x7605))
+:extrapreds ((x7606))
+:extrapreds ((x7607))
+:extrapreds ((x7608))
+:extrapreds ((x7609))
+:extrapreds ((x7610))
+:extrapreds ((x7611))
+:extrapreds ((x7612))
+:extrapreds ((x7613))
+:extrapreds ((x7614))
+:extrapreds ((x7615))
+:extrapreds ((x7616))
+:extrapreds ((x7617))
+:extrapreds ((x7618))
+:extrapreds ((x7619))
+:extrapreds ((x7620))
+:extrapreds ((x7621))
+:extrapreds ((x7622))
+:extrapreds ((x7623))
+:extrapreds ((x7624))
+:extrapreds ((x7625))
+:extrapreds ((x7626))
+:extrapreds ((x7627))
+:extrapreds ((x7628))
+:extrapreds ((x7629))
+:extrapreds ((x7630))
+:extrapreds ((x7631))
+:extrapreds ((x7632))
+:extrapreds ((x7633))
+:extrapreds ((x7634))
+:extrapreds ((x7635))
+:extrapreds ((x7636))
+:extrapreds ((x7637))
+:extrapreds ((x7638))
+:extrapreds ((x7639))
+:extrapreds ((x7640))
+:extrapreds ((x7641))
+:extrapreds ((x7642))
+:extrapreds ((x7643))
+:extrapreds ((x7644))
+:extrapreds ((x7645))
+:extrapreds ((x7646))
+:extrapreds ((x7647))
+:extrapreds ((x7648))
+:extrapreds ((x7649))
+:extrapreds ((x7650))
+:extrapreds ((x7651))
+:extrapreds ((x7652))
+:extrapreds ((x7653))
+:extrapreds ((x7654))
+:extrapreds ((x7655))
+:extrapreds ((x7656))
+:extrapreds ((x7657))
+:extrapreds ((x7658))
+:extrapreds ((x7659))
+:extrapreds ((x7660))
+:extrapreds ((x7661))
+:extrapreds ((x7662))
+:extrapreds ((x7663))
+:extrapreds ((x7664))
+:extrapreds ((x7665))
+:extrapreds ((x7666))
+:extrapreds ((x7667))
+:extrapreds ((x7668))
+:extrapreds ((x7669))
+:extrapreds ((x7670))
+:extrapreds ((x7671))
+:extrapreds ((x7672))
+:extrapreds ((x7673))
+:extrapreds ((x7674))
+:extrapreds ((x7675))
+:extrapreds ((x7676))
+:extrapreds ((x7677))
+:extrapreds ((x7678))
+:extrapreds ((x7679))
+:extrapreds ((x7680))
+:extrapreds ((x7681))
+:extrapreds ((x7682))
+:extrapreds ((x7683))
+:extrapreds ((x7684))
+:extrapreds ((x7685))
+:extrapreds ((x7686))
+:extrapreds ((x7687))
+:extrapreds ((x7688))
+:extrapreds ((x7689))
+:extrapreds ((x7690))
+:extrapreds ((x7691))
+:extrapreds ((x7692))
+:extrapreds ((x7693))
+:extrapreds ((x7694))
+:extrapreds ((x7695))
+:extrapreds ((x7696))
+:extrapreds ((x7697))
+:extrapreds ((x7698))
+:extrapreds ((x7699))
+:extrapreds ((x7700))
+:extrapreds ((x7701))
+:extrapreds ((x7702))
+:extrapreds ((x7703))
+:extrapreds ((x7704))
+:extrapreds ((x7705))
+:extrapreds ((x7706))
+:extrapreds ((x7707))
+:extrapreds ((x7708))
+:extrapreds ((x7709))
+:extrapreds ((x7710))
+:extrapreds ((x7711))
+:extrapreds ((x7712))
+:extrapreds ((x7713))
+:extrapreds ((x7714))
+:extrapreds ((x7715))
+:extrapreds ((x7716))
+:extrapreds ((x7717))
+:extrapreds ((x7718))
+:extrapreds ((x7719))
+:extrapreds ((x7720))
+:extrapreds ((x7721))
+:extrapreds ((x7722))
+:extrapreds ((x7723))
+:extrapreds ((x7724))
+:extrapreds ((x7725))
+:extrapreds ((x7726))
+:extrapreds ((x7727))
+:extrapreds ((x7728))
+:extrapreds ((x7729))
+:extrapreds ((x7730))
+:extrapreds ((x7731))
+:extrapreds ((x7732))
+:extrapreds ((x7733))
+:extrapreds ((x7734))
+:extrapreds ((x7735))
+:extrapreds ((x7736))
+:extrapreds ((x7737))
+:extrapreds ((x7738))
+:extrapreds ((x7739))
+:extrapreds ((x7740))
+:extrapreds ((x7741))
+:extrapreds ((x7742))
+:extrapreds ((x7743))
+:extrapreds ((x7744))
+:extrapreds ((x7745))
+:extrapreds ((x7746))
+:extrapreds ((x7747))
+:extrapreds ((x7748))
+:extrapreds ((x7749))
+:extrapreds ((x7750))
+:extrapreds ((x7751))
+:extrapreds ((x7752))
+:extrapreds ((x7753))
+:extrapreds ((x7754))
+:extrapreds ((x7755))
+:extrapreds ((x7756))
+:extrapreds ((x7757))
+:extrapreds ((x7758))
+:extrapreds ((x7759))
+:extrapreds ((x7760))
+:extrapreds ((x7761))
+:extrapreds ((x7762))
+:extrapreds ((x7763))
+:extrapreds ((x7764))
+:extrapreds ((x7765))
+:extrapreds ((x7766))
+:extrapreds ((x7767))
+:extrapreds ((x7768))
+:extrapreds ((x7769))
+:extrapreds ((x7770))
+:extrapreds ((x7771))
+:extrapreds ((x7772))
+:extrapreds ((x7773))
+:extrapreds ((x7774))
+:extrapreds ((x7775))
+:extrapreds ((x7776))
+:extrapreds ((x7777))
+:extrapreds ((x7778))
+:extrapreds ((x7779))
+:extrapreds ((x7780))
+:extrapreds ((x7781))
+:extrapreds ((x7782))
+:extrapreds ((x7783))
+:extrapreds ((x7784))
+:extrapreds ((x7785))
+:extrapreds ((x7786))
+:extrapreds ((x7787))
+:extrapreds ((x7788))
+:extrapreds ((x7789))
+:extrapreds ((x7790))
+:extrapreds ((x7791))
+:extrapreds ((x7792))
+:extrapreds ((x7793))
+:extrapreds ((x7794))
+:extrapreds ((x7795))
+:extrapreds ((x7796))
+:extrapreds ((x7797))
+:extrapreds ((x7798))
+:extrapreds ((x7799))
+:extrapreds ((x7800))
+:extrapreds ((x7801))
+:extrapreds ((x7802))
+:extrapreds ((x7803))
+:extrapreds ((x7804))
+:extrapreds ((x7805))
+:extrapreds ((x7806))
+:extrapreds ((x7807))
+:extrapreds ((x7808))
+:extrapreds ((x7809))
+:extrapreds ((x7810))
+:extrapreds ((x7811))
+:extrapreds ((x7812))
+:extrapreds ((x7813))
+:extrapreds ((x7814))
+:extrapreds ((x7815))
+:extrapreds ((x7816))
+:extrapreds ((x7817))
+:extrapreds ((x7818))
+:extrapreds ((x7819))
+:extrapreds ((x7820))
+:extrapreds ((x7821))
+:extrapreds ((x7822))
+:extrapreds ((x7823))
+:extrapreds ((x7824))
+:extrapreds ((x7825))
+:extrapreds ((x7826))
+:extrapreds ((x7827))
+:extrapreds ((x7828))
+:extrapreds ((x7829))
+:extrapreds ((x7830))
+:extrapreds ((x7831))
+:extrapreds ((x7832))
+:extrapreds ((x7833))
+:extrapreds ((x7834))
+:extrapreds ((x7835))
+:extrapreds ((x7836))
+:extrapreds ((x7837))
+:extrapreds ((x7838))
+:extrapreds ((x7839))
+:extrapreds ((x7840))
+:extrapreds ((x7841))
+:extrapreds ((x7842))
+:extrapreds ((x7843))
+:extrapreds ((x7844))
+:extrapreds ((x7845))
+:extrapreds ((x7846))
+:extrapreds ((x7847))
+:extrapreds ((x7848))
+:extrapreds ((x7849))
+:extrapreds ((x7850))
+:extrapreds ((x7851))
+:extrapreds ((x7852))
+:extrapreds ((x7853))
+:extrapreds ((x7854))
+:extrapreds ((x7855))
+:extrapreds ((x7856))
+:extrapreds ((x7857))
+:extrapreds ((x7858))
+:extrapreds ((x7859))
+:extrapreds ((x7860))
+:extrapreds ((x7861))
+:extrapreds ((x7862))
+:extrapreds ((x7863))
+:extrapreds ((x7864))
+:extrapreds ((x7865))
+:extrapreds ((x7866))
+:extrapreds ((x7867))
+:extrapreds ((x7868))
+:extrapreds ((x7869))
+:extrapreds ((x7870))
+:extrapreds ((x7871))
+:extrapreds ((x7872))
+:extrapreds ((x7873))
+:extrapreds ((x7874))
+:extrapreds ((x7875))
+:extrapreds ((x7876))
+:extrapreds ((x7877))
+:extrapreds ((x7878))
+:extrapreds ((x7879))
+:extrapreds ((x7880))
+:extrapreds ((x7881))
+:extrapreds ((x7882))
+:extrapreds ((x7883))
+:extrapreds ((x7884))
+:extrapreds ((x7885))
+:extrapreds ((x7886))
+:extrapreds ((x7887))
+:extrapreds ((x7888))
+:extrapreds ((x7889))
+:extrapreds ((x7890))
+:extrapreds ((x7891))
+:extrapreds ((x7892))
+:extrapreds ((x7893))
+:extrapreds ((x7894))
+:extrapreds ((x7895))
+:extrapreds ((x7896))
+:extrapreds ((x7897))
+:extrapreds ((x7898))
+:extrapreds ((x7899))
+:extrapreds ((x7900))
+:extrapreds ((x7901))
+:extrapreds ((x7902))
+:extrapreds ((x7903))
+:extrapreds ((x7904))
+:extrapreds ((x7905))
+:extrapreds ((x7906))
+:extrapreds ((x7907))
+:extrapreds ((x7908))
+:extrapreds ((x7909))
+:extrapreds ((x7910))
+:extrapreds ((x7911))
+:extrapreds ((x7912))
+:extrapreds ((x7913))
+:extrapreds ((x7914))
+:extrapreds ((x7915))
+:extrapreds ((x7916))
+:extrapreds ((x7917))
+:extrapreds ((x7918))
+:extrapreds ((x7919))
+:extrapreds ((x7920))
+:extrapreds ((x7921))
+:extrapreds ((x7922))
+:extrapreds ((x7923))
+:extrapreds ((x7924))
+:extrapreds ((x7925))
+:extrapreds ((x7926))
+:extrapreds ((x7927))
+:extrapreds ((x7928))
+:extrapreds ((x7929))
+:extrapreds ((x7930))
+:extrapreds ((x7931))
+:extrapreds ((x7932))
+:extrapreds ((x7933))
+:extrapreds ((x7934))
+:extrapreds ((x7935))
+:extrapreds ((x7936))
+:extrapreds ((x7937))
+:extrapreds ((x7938))
+:extrapreds ((x7939))
+:extrapreds ((x7940))
+:extrapreds ((x7941))
+:extrapreds ((x7942))
+:extrapreds ((x7943))
+:extrapreds ((x7944))
+:extrapreds ((x7945))
+:extrapreds ((x7946))
+:extrapreds ((x7947))
+:extrapreds ((x7948))
+:extrapreds ((x7949))
+:extrapreds ((x7950))
+:extrapreds ((x7951))
+:extrapreds ((x7952))
+:extrapreds ((x7953))
+:extrapreds ((x7954))
+:extrapreds ((x7955))
+:extrapreds ((x7956))
+:extrapreds ((x7957))
+:extrapreds ((x7958))
+:extrapreds ((x7959))
+:extrapreds ((x7960))
+:extrapreds ((x7961))
+:extrapreds ((x7962))
+:extrapreds ((x7963))
+:extrapreds ((x7964))
+:extrapreds ((x7965))
+:extrapreds ((x7966))
+:extrapreds ((x7967))
+:extrapreds ((x7968))
+:extrapreds ((x7969))
+:extrapreds ((x7970))
+:extrapreds ((x7971))
+:extrapreds ((x7972))
+:extrapreds ((x7973))
+:extrapreds ((x7974))
+:extrapreds ((x7975))
+:extrapreds ((x7976))
+:extrapreds ((x7977))
+:extrapreds ((x7978))
+:extrapreds ((x7979))
+:extrapreds ((x7980))
+:extrapreds ((x7981))
+:extrapreds ((x7982))
+:extrapreds ((x7983))
+:extrapreds ((x7984))
+:extrapreds ((x7985))
+:extrapreds ((x7986))
+:extrapreds ((x7987))
+:extrapreds ((x7988))
+:extrapreds ((x7989))
+:extrapreds ((x7990))
+:extrapreds ((x7991))
+:extrapreds ((x7992))
+:extrapreds ((x7993))
+:extrapreds ((x7994))
+:extrapreds ((x7995))
+:extrapreds ((x7996))
+:extrapreds ((x7997))
+:extrapreds ((x7998))
+:extrapreds ((x7999))
+:extrapreds ((x8000))
+:extrapreds ((x8001))
+:extrapreds ((x8002))
+:extrapreds ((x8003))
+:extrapreds ((x8004))
+:extrapreds ((x8005))
+:extrapreds ((x8006))
+:extrapreds ((x8007))
+:extrapreds ((x8008))
+:extrapreds ((x8009))
+:extrapreds ((x8010))
+:extrapreds ((x8011))
+:extrapreds ((x8012))
+:extrapreds ((x8013))
+:extrapreds ((x8014))
+:extrapreds ((x8015))
+:extrapreds ((x8016))
+:extrapreds ((x8017))
+:extrapreds ((x8018))
+:extrapreds ((x8019))
+:extrapreds ((x8020))
+:extrapreds ((x8021))
+:extrapreds ((x8022))
+:extrapreds ((x8023))
+:extrapreds ((x8024))
+:extrapreds ((x8025))
+:extrapreds ((x8026))
+:extrapreds ((x8027))
+:extrapreds ((x8028))
+:extrapreds ((x8029))
+:extrapreds ((x8030))
+:extrapreds ((x8031))
+:extrapreds ((x8032))
+:extrapreds ((x8033))
+:extrapreds ((x8034))
+:extrapreds ((x8035))
+:extrapreds ((x8036))
+:extrapreds ((x8037))
+:extrapreds ((x8038))
+:extrapreds ((x8039))
+:extrapreds ((x8040))
+:extrapreds ((x8041))
+:extrapreds ((x8042))
+:extrapreds ((x8043))
+:extrapreds ((x8044))
+:extrapreds ((x8045))
+:extrapreds ((x8046))
+:extrapreds ((x8047))
+:extrapreds ((x8048))
+:extrapreds ((x8049))
+:extrapreds ((x8050))
+:extrapreds ((x8051))
+:extrapreds ((x8052))
+:extrapreds ((x8053))
+:extrapreds ((x8054))
+:extrapreds ((x8055))
+:extrapreds ((x8056))
+:extrapreds ((x8057))
+:extrapreds ((x8058))
+:extrapreds ((x8059))
+:extrapreds ((x8060))
+:extrapreds ((x8061))
+:extrapreds ((x8062))
+:extrapreds ((x8063))
+:extrapreds ((x8064))
+:extrapreds ((x8065))
+:extrapreds ((x8066))
+:extrapreds ((x8067))
+:extrapreds ((x8068))
+:extrapreds ((x8069))
+:extrapreds ((x8070))
+:extrapreds ((x8071))
+:extrapreds ((x8072))
+:extrapreds ((x8073))
+:extrapreds ((x8074))
+:extrapreds ((x8075))
+:extrapreds ((x8076))
+:extrapreds ((x8077))
+:extrapreds ((x8078))
+:extrapreds ((x8079))
+:extrapreds ((x8080))
+:extrapreds ((x8081))
+:extrapreds ((x8082))
+:extrapreds ((x8083))
+:extrapreds ((x8084))
+:extrapreds ((x8085))
+:extrapreds ((x8086))
+:extrapreds ((x8087))
+:extrapreds ((x8088))
+:extrapreds ((x8089))
+:extrapreds ((x8090))
+:extrapreds ((x8091))
+:extrapreds ((x8092))
+:extrapreds ((x8093))
+:extrapreds ((x8094))
+:extrapreds ((x8095))
+:extrapreds ((x8096))
+:extrapreds ((x8097))
+:extrapreds ((x8098))
+:extrapreds ((x8099))
+:extrapreds ((x8100))
+:extrapreds ((x8101))
+:extrapreds ((x8102))
+:extrapreds ((x8103))
+:extrapreds ((x8104))
+:extrapreds ((x8105))
+:extrapreds ((x8106))
+:extrapreds ((x8107))
+:extrapreds ((x8108))
+:extrapreds ((x8109))
+:extrapreds ((x8110))
+:extrapreds ((x8111))
+:extrapreds ((x8112))
+:extrapreds ((x8113))
+:extrapreds ((x8114))
+:extrapreds ((x8115))
+:extrapreds ((x8116))
+:extrapreds ((x8117))
+:extrapreds ((x8118))
+:extrapreds ((x8119))
+:extrapreds ((x8120))
+:extrapreds ((x8121))
+:extrapreds ((x8122))
+:extrapreds ((x8123))
+:extrapreds ((x8124))
+:extrapreds ((x8125))
+:extrapreds ((x8126))
+:extrapreds ((x8127))
+:extrapreds ((x8128))
+:extrapreds ((x8129))
+:extrapreds ((x8130))
+:extrapreds ((x8131))
+:extrapreds ((x8132))
+:extrapreds ((x8133))
+:extrapreds ((x8134))
+:extrapreds ((x8135))
+:extrapreds ((x8136))
+:extrapreds ((x8137))
+:extrapreds ((x8138))
+:extrapreds ((x8139))
+:extrapreds ((x8140))
+:extrapreds ((x8141))
+:extrapreds ((x8142))
+:extrapreds ((x8143))
+:extrapreds ((x8144))
+:extrapreds ((x8145))
+:extrapreds ((x8146))
+:extrapreds ((x8147))
+:extrapreds ((x8148))
+:extrapreds ((x8149))
+:extrapreds ((x8150))
+:extrapreds ((x8151))
+:extrapreds ((x8152))
+:extrapreds ((x8153))
+:extrapreds ((x8154))
+:extrapreds ((x8155))
+:extrapreds ((x8156))
+:extrapreds ((x8157))
+:extrapreds ((x8158))
+:extrapreds ((x8159))
+:extrapreds ((x8160))
+:extrapreds ((x8161))
+:extrapreds ((x8162))
+:extrapreds ((x8163))
+:extrapreds ((x8164))
+:extrapreds ((x8165))
+:extrapreds ((x8166))
+:extrapreds ((x8167))
+:extrapreds ((x8168))
+:extrapreds ((x8169))
+:extrapreds ((x8170))
+:extrapreds ((x8171))
+:extrapreds ((x8172))
+:extrapreds ((x8173))
+:extrapreds ((x8174))
+:extrapreds ((x8175))
+:extrapreds ((x8176))
+:extrapreds ((x8177))
+:extrapreds ((x8178))
+:extrapreds ((x8179))
+:extrapreds ((x8180))
+:extrapreds ((x8181))
+:extrapreds ((x8182))
+:extrapreds ((x8183))
+:extrapreds ((x8184))
+:extrapreds ((x8185))
+:extrapreds ((x8186))
+:extrapreds ((x8187))
+:extrapreds ((x8188))
+:extrapreds ((x8189))
+:extrapreds ((x8190))
+:extrapreds ((x8191))
+:extrapreds ((x8192))
+:extrapreds ((x8193))
+:extrapreds ((x8194))
+:extrapreds ((x8195))
+:extrapreds ((x8196))
+:extrapreds ((x8197))
+:extrapreds ((x8198))
+:extrapreds ((x8199))
+:extrapreds ((x8200))
+:extrapreds ((x8201))
+:extrapreds ((x8202))
+:extrapreds ((x8203))
+:extrapreds ((x8204))
+:extrapreds ((x8205))
+:extrapreds ((x8206))
+:extrapreds ((x8207))
+:extrapreds ((x8208))
+:extrapreds ((x8209))
+:extrapreds ((x8210))
+:extrapreds ((x8211))
+:extrapreds ((x8212))
+:extrapreds ((x8213))
+:extrapreds ((x8214))
+:extrapreds ((x8215))
+:extrapreds ((x8216))
+:extrapreds ((x8217))
+:extrapreds ((x8218))
+:extrapreds ((x8219))
+:extrapreds ((x8220))
+:extrapreds ((x8221))
+:extrapreds ((x8222))
+:extrapreds ((x8223))
+:extrapreds ((x8224))
+:extrapreds ((x8225))
+:extrapreds ((x8226))
+:extrapreds ((x8227))
+:extrapreds ((x8228))
+:extrapreds ((x8229))
+:extrapreds ((x8230))
+:extrapreds ((x8231))
+:extrapreds ((x8232))
+:extrapreds ((x8233))
+:extrapreds ((x8234))
+:extrapreds ((x8235))
+:extrapreds ((x8236))
+:extrapreds ((x8237))
+:extrapreds ((x8238))
+:extrapreds ((x8239))
+:extrapreds ((x8240))
+:extrapreds ((x8241))
+:extrapreds ((x8242))
+:extrapreds ((x8243))
+:extrapreds ((x8244))
+:extrapreds ((x8245))
+:extrapreds ((x8246))
+:extrapreds ((x8247))
+:extrapreds ((x8248))
+:extrapreds ((x8249))
+:extrapreds ((x8250))
+:extrapreds ((x8251))
+:extrapreds ((x8252))
+:extrapreds ((x8253))
+:extrapreds ((x8254))
+:extrapreds ((x8255))
+:extrapreds ((x8256))
+:extrapreds ((x8257))
+:extrapreds ((x8258))
+:extrapreds ((x8259))
+:extrapreds ((x8260))
+:extrapreds ((x8261))
+:extrapreds ((x8262))
+:extrapreds ((x8263))
+:extrapreds ((x8264))
+:extrapreds ((x8265))
+:extrapreds ((x8266))
+:extrapreds ((x8267))
+:extrapreds ((x8268))
+:extrapreds ((x8269))
+:extrapreds ((x8270))
+:extrapreds ((x8271))
+:extrapreds ((x8272))
+:extrapreds ((x8273))
+:extrapreds ((x8274))
+:extrapreds ((x8275))
+:extrapreds ((x8276))
+:extrapreds ((x8277))
+:extrapreds ((x8278))
+:extrapreds ((x8279))
+:extrapreds ((x8280))
+:extrapreds ((x8281))
+:extrapreds ((x8282))
+:extrapreds ((x8283))
+:extrapreds ((x8284))
+:extrapreds ((x8285))
+:extrapreds ((x8286))
+:extrapreds ((x8287))
+:extrapreds ((x8288))
+:extrapreds ((x8289))
+:extrapreds ((x8290))
+:extrapreds ((x8291))
+:extrapreds ((x8292))
+:extrapreds ((x8293))
+:extrapreds ((x8294))
+:extrapreds ((x8295))
+:extrapreds ((x8296))
+:extrapreds ((x8297))
+:extrapreds ((x8298))
+:extrapreds ((x8299))
+:extrapreds ((x8300))
+:extrapreds ((x8301))
+:extrapreds ((x8302))
+:extrapreds ((x8303))
+:extrapreds ((x8304))
+:extrapreds ((x8305))
+:extrapreds ((x8306))
+:extrapreds ((x8307))
+:extrapreds ((x8308))
+:extrapreds ((x8309))
+:extrapreds ((x8310))
+:extrapreds ((x8311))
+:extrapreds ((x8312))
+:extrapreds ((x8313))
+:extrapreds ((x8314))
+:extrapreds ((x8315))
+:extrapreds ((x8316))
+:extrapreds ((x8317))
+:extrapreds ((x8318))
+:extrapreds ((x8319))
+:extrapreds ((x8320))
+:extrapreds ((x8321))
+:extrapreds ((x8322))
+:extrapreds ((x8323))
+:extrapreds ((x8324))
+:extrapreds ((x8325))
+:extrapreds ((x8326))
+:extrapreds ((x8327))
+:extrapreds ((x8328))
+:extrapreds ((x8329))
+:extrapreds ((x8330))
+:extrapreds ((x8331))
+:extrapreds ((x8332))
+:extrapreds ((x8333))
+:extrapreds ((x8334))
+:extrapreds ((x8335))
+:extrapreds ((x8336))
+:extrapreds ((x8337))
+:extrapreds ((x8338))
+:extrapreds ((x8339))
+:extrapreds ((x8340))
+:extrapreds ((x8341))
+:extrapreds ((x8342))
+:extrapreds ((x8343))
+:extrapreds ((x8344))
+:extrapreds ((x8345))
+:extrapreds ((x8346))
+:extrapreds ((x8347))
+:extrapreds ((x8348))
+:extrapreds ((x8349))
+:extrapreds ((x8350))
+:extrapreds ((x8351))
+:extrapreds ((x8352))
+:extrapreds ((x8353))
+:extrapreds ((x8354))
+:extrapreds ((x8355))
+:extrapreds ((x8356))
+:extrapreds ((x8357))
+:extrapreds ((x8358))
+:extrapreds ((x8359))
+:extrapreds ((x8360))
+:extrapreds ((x8361))
+:extrapreds ((x8362))
+:extrapreds ((x8363))
+:extrapreds ((x8364))
+:extrapreds ((x8365))
+:extrapreds ((x8366))
+:extrapreds ((x8367))
+:extrapreds ((x8368))
+:extrapreds ((x8369))
+:extrapreds ((x8370))
+:extrapreds ((x8371))
+:extrapreds ((x8372))
+:extrapreds ((x8373))
+:extrapreds ((x8374))
+:extrapreds ((x8375))
+:extrapreds ((x8376))
+:extrapreds ((x8377))
+:extrapreds ((x8378))
+:extrapreds ((x8379))
+:extrapreds ((x8380))
+:extrapreds ((x8381))
+:extrapreds ((x8382))
+:extrapreds ((x8383))
+:extrapreds ((x8384))
+:extrapreds ((x8385))
+:extrapreds ((x8386))
+:extrapreds ((x8387))
+:extrapreds ((x8388))
+:extrapreds ((x8389))
+:extrapreds ((x8390))
+:extrapreds ((x8391))
+:extrapreds ((x8392))
+:extrapreds ((x8393))
+:extrapreds ((x8394))
+:extrapreds ((x8395))
+:extrapreds ((x8396))
+:extrapreds ((x8397))
+:extrapreds ((x8398))
+:extrapreds ((x8399))
+:extrapreds ((x8400))
+:extrapreds ((x8401))
+:extrapreds ((x8402))
+:extrapreds ((x8403))
+:extrapreds ((x8404))
+:extrapreds ((x8405))
+:extrapreds ((x8406))
+:extrapreds ((x8407))
+:extrapreds ((x8408))
+:extrapreds ((x8409))
+:extrapreds ((x8410))
+:extrapreds ((x8411))
+:extrapreds ((x8412))
+:extrapreds ((x8413))
+:extrapreds ((x8414))
+:extrapreds ((x8415))
+:extrapreds ((x8416))
+:extrapreds ((x8417))
+:extrapreds ((x8418))
+:extrapreds ((x8419))
+:extrapreds ((x8420))
+:extrapreds ((x8421))
+:extrapreds ((x8422))
+:extrapreds ((x8423))
+:extrapreds ((x8424))
+:extrapreds ((x8425))
+:extrapreds ((x8426))
+:extrapreds ((x8427))
+:extrapreds ((x8428))
+:extrapreds ((x8429))
+:extrapreds ((x8430))
+:extrapreds ((x8431))
+:extrapreds ((x8432))
+:extrapreds ((x8433))
+:extrapreds ((x8434))
+:extrapreds ((x8435))
+:extrapreds ((x8436))
+:extrapreds ((x8437))
+:extrapreds ((x8438))
+:extrapreds ((x8439))
+:extrapreds ((x8440))
+:extrapreds ((x8441))
+:extrapreds ((x8442))
+:extrapreds ((x8443))
+:extrapreds ((x8444))
+:extrapreds ((x8445))
+:extrapreds ((x8446))
+:extrapreds ((x8447))
+:extrapreds ((x8448))
+:extrapreds ((x8449))
+:extrapreds ((x8450))
+:extrapreds ((x8451))
+:extrapreds ((x8452))
+:extrapreds ((x8453))
+:extrapreds ((x8454))
+:extrapreds ((x8455))
+:extrapreds ((x8456))
+:extrapreds ((x8457))
+:extrapreds ((x8458))
+:extrapreds ((x8459))
+:extrapreds ((x8460))
+:extrapreds ((x8461))
+:extrapreds ((x8462))
+:extrapreds ((x8463))
+:extrapreds ((x8464))
+:extrapreds ((x8465))
+:extrapreds ((x8466))
+:extrapreds ((x8467))
+:extrapreds ((x8468))
+:extrapreds ((x8469))
+:extrapreds ((x8470))
+:extrapreds ((x8471))
+:extrapreds ((x8472))
+:extrapreds ((x8473))
+:extrapreds ((x8474))
+:extrapreds ((x8475))
+:extrapreds ((x8476))
+:extrapreds ((x8477))
+:extrapreds ((x8478))
+:extrapreds ((x8479))
+:extrapreds ((x8480))
+:extrapreds ((x8481))
+:extrapreds ((x8482))
+:extrapreds ((x8483))
+:extrapreds ((x8484))
+:extrapreds ((x8485))
+:extrapreds ((x8486))
+:extrapreds ((x8487))
+:extrapreds ((x8488))
+:extrapreds ((x8489))
+:extrapreds ((x8490))
+:extrapreds ((x8491))
+:extrapreds ((x8492))
+:extrapreds ((x8493))
+:extrapreds ((x8494))
+:extrapreds ((x8495))
+:extrapreds ((x8496))
+:extrapreds ((x8497))
+:extrapreds ((x8498))
+:extrapreds ((x8499))
+:extrapreds ((x8500))
+:extrapreds ((x8501))
+:extrapreds ((x8502))
+:extrapreds ((x8503))
+:extrapreds ((x8504))
+:extrapreds ((x8505))
+:extrapreds ((x8506))
+:extrapreds ((x8507))
+:extrapreds ((x8508))
+:extrapreds ((x8509))
+:extrapreds ((x8510))
+:extrapreds ((x8511))
+:extrapreds ((x8512))
+:extrapreds ((x8513))
+:extrapreds ((x8514))
+:extrapreds ((x8515))
+:extrapreds ((x8516))
+:extrapreds ((x8517))
+:extrapreds ((x8518))
+:extrapreds ((x8519))
+:extrapreds ((x8520))
+:extrapreds ((x8521))
+:extrapreds ((x8522))
+:extrapreds ((x8523))
+:extrapreds ((x8524))
+:extrapreds ((x8525))
+:extrapreds ((x8526))
+:extrapreds ((x8527))
+:extrapreds ((x8528))
+:extrapreds ((x8529))
+:extrapreds ((x8530))
+:extrapreds ((x8531))
+:extrapreds ((x8532))
+:extrapreds ((x8533))
+:extrapreds ((x8534))
+:extrapreds ((x8535))
+:extrapreds ((x8536))
+:extrapreds ((x8537))
+:extrapreds ((x8538))
+:extrapreds ((x8539))
+:extrapreds ((x8540))
+:extrapreds ((x8541))
+:extrapreds ((x8542))
+:extrapreds ((x8543))
+:extrapreds ((x8544))
+:extrapreds ((x8545))
+:extrapreds ((x8546))
+:extrapreds ((x8547))
+:extrapreds ((x8548))
+:extrapreds ((x8549))
+:extrapreds ((x8550))
+:extrapreds ((x8551))
+:extrapreds ((x8552))
+:extrapreds ((x8553))
+:extrapreds ((x8554))
+:extrapreds ((x8555))
+:extrapreds ((x8556))
+:extrapreds ((x8557))
+:extrapreds ((x8558))
+:extrapreds ((x8559))
+:extrapreds ((x8560))
+:extrapreds ((x8561))
+:extrapreds ((x8562))
+:extrapreds ((x8563))
+:extrapreds ((x8564))
+:extrapreds ((x8565))
+:extrapreds ((x8566))
+:extrapreds ((x8567))
+:extrapreds ((x8568))
+:extrapreds ((x8569))
+:extrapreds ((x8570))
+:extrapreds ((x8571))
+:extrapreds ((x8572))
+:extrapreds ((x8573))
+:extrapreds ((x8574))
+:extrapreds ((x8575))
+:extrapreds ((x8576))
+:extrapreds ((x8577))
+:extrapreds ((x8578))
+:extrapreds ((x8579))
+:extrapreds ((x8580))
+:extrapreds ((x8581))
+:extrapreds ((x8582))
+:extrapreds ((x8583))
+:extrapreds ((x8584))
+:extrapreds ((x8585))
+:extrapreds ((x8586))
+:extrapreds ((x8587))
+:extrapreds ((x8588))
+:extrapreds ((x8589))
+:extrapreds ((x8590))
+:extrapreds ((x8591))
+:extrapreds ((x8592))
+:extrapreds ((x8593))
+:extrapreds ((x8594))
+:extrapreds ((x8595))
+:extrapreds ((x8596))
+:extrapreds ((x8597))
+:extrapreds ((x8598))
+:extrapreds ((x8599))
+:extrapreds ((x8600))
+:extrapreds ((x8601))
+:extrapreds ((x8602))
+:extrapreds ((x8603))
+:extrapreds ((x8604))
+:extrapreds ((x8605))
+:extrapreds ((x8606))
+:extrapreds ((x8607))
+:extrapreds ((x8608))
+:extrapreds ((x8609))
+:extrapreds ((x8610))
+:extrapreds ((x8611))
+:extrapreds ((x8612))
+:extrapreds ((x8613))
+:extrapreds ((x8614))
+:extrapreds ((x8615))
+:extrapreds ((x8616))
+:extrapreds ((x8617))
+:extrapreds ((x8618))
+:extrapreds ((x8619))
+:extrapreds ((x8620))
+:extrapreds ((x8621))
+:extrapreds ((x8622))
+:extrapreds ((x8623))
+:extrapreds ((x8624))
+:extrapreds ((x8625))
+:extrapreds ((x8626))
+:extrapreds ((x8627))
+:extrapreds ((x8628))
+:extrapreds ((x8629))
+:extrapreds ((x8630))
+:extrapreds ((x8631))
+:extrapreds ((x8632))
+:extrapreds ((x8633))
+:extrapreds ((x8634))
+:extrapreds ((x8635))
+:extrapreds ((x8636))
+:extrapreds ((x8637))
+:extrapreds ((x8638))
+:extrapreds ((x8639))
+:extrapreds ((x8640))
+:extrapreds ((x8641))
+:extrapreds ((x8642))
+:extrapreds ((x8643))
+:extrapreds ((x8644))
+:extrapreds ((x8645))
+:extrapreds ((x8646))
+:extrapreds ((x8647))
+:extrapreds ((x8648))
+:extrapreds ((x8649))
+:extrapreds ((x8650))
+:extrapreds ((x8651))
+:extrapreds ((x8652))
+:extrapreds ((x8653))
+:extrapreds ((x8654))
+:extrapreds ((x8655))
+:extrapreds ((x8656))
+:extrapreds ((x8657))
+:extrapreds ((x8658))
+:extrapreds ((x8659))
+:extrapreds ((x8660))
+:extrapreds ((x8661))
+:extrapreds ((x8662))
+:extrapreds ((x8663))
+:extrapreds ((x8664))
+:extrapreds ((x8665))
+:extrapreds ((x8666))
+:extrapreds ((x8667))
+:extrapreds ((x8668))
+:extrapreds ((x8669))
+:extrapreds ((x8670))
+:extrapreds ((x8671))
+:extrapreds ((x8672))
+:extrapreds ((x8673))
+:extrapreds ((x8674))
+:extrapreds ((x8675))
+:extrapreds ((x8676))
+:extrapreds ((x8677))
+:extrapreds ((x8678))
+:extrapreds ((x8679))
+:extrapreds ((x8680))
+:extrapreds ((x8681))
+:extrapreds ((x8682))
+:extrapreds ((x8683))
+:extrapreds ((x8684))
+:extrapreds ((x8685))
+:extrapreds ((x8686))
+:extrapreds ((x8687))
+:extrapreds ((x8688))
+:extrapreds ((x8689))
+:extrapreds ((x8690))
+:extrapreds ((x8691))
+:extrapreds ((x8692))
+:extrapreds ((x8693))
+:extrapreds ((x8694))
+:extrapreds ((x8695))
+:extrapreds ((x8696))
+:extrapreds ((x8697))
+:extrapreds ((x8698))
+:extrapreds ((x8699))
+:extrapreds ((x8700))
+:extrapreds ((x8701))
+:extrapreds ((x8702))
+:extrapreds ((x8703))
+:extrapreds ((x8704))
+:extrapreds ((x8705))
+:extrapreds ((x8706))
+:extrapreds ((x8707))
+:extrapreds ((x8708))
+:extrapreds ((x8709))
+:extrapreds ((x8710))
+:extrapreds ((x8711))
+:extrapreds ((x8712))
+:extrapreds ((x8713))
+:extrapreds ((x8714))
+:extrapreds ((x8715))
+:extrapreds ((x8716))
+:extrapreds ((x8717))
+:extrapreds ((x8718))
+:extrapreds ((x8719))
+:extrapreds ((x8720))
+:extrapreds ((x8721))
+:extrapreds ((x8722))
+:extrapreds ((x8723))
+:extrapreds ((x8724))
+:extrapreds ((x8725))
+:extrapreds ((x8726))
+:extrapreds ((x8727))
+:extrapreds ((x8728))
+:extrapreds ((x8729))
+:extrapreds ((x8730))
+:extrapreds ((x8731))
+:extrapreds ((x8732))
+:extrapreds ((x8733))
+:extrapreds ((x8734))
+:extrapreds ((x8735))
+:extrapreds ((x8736))
+:extrapreds ((x8737))
+:extrapreds ((x8738))
+:extrapreds ((x8739))
+:extrapreds ((x8740))
+:extrapreds ((x8741))
+:extrapreds ((x8742))
+:extrapreds ((x8743))
+:extrapreds ((x8744))
+:extrapreds ((x8745))
+:extrapreds ((x8746))
+:extrapreds ((x8747))
+:extrapreds ((x8748))
+:extrapreds ((x8749))
+:extrapreds ((x8750))
+:extrapreds ((x8751))
+:extrapreds ((x8752))
+:extrapreds ((x8753))
+:extrapreds ((x8754))
+:extrapreds ((x8755))
+:extrapreds ((x8756))
+:extrapreds ((x8757))
+:extrapreds ((x8758))
+:extrapreds ((x8759))
+:extrapreds ((x8760))
+:extrapreds ((x8761))
+:extrapreds ((x8762))
+:extrapreds ((x8763))
+:extrapreds ((x8764))
+:extrapreds ((x8765))
+:extrapreds ((x8766))
+:extrapreds ((x8767))
+:extrapreds ((x8768))
+:extrapreds ((x8769))
+:extrapreds ((x8770))
+:extrapreds ((x8771))
+:extrapreds ((x8772))
+:extrapreds ((x8773))
+:extrapreds ((x8774))
+:extrapreds ((x8775))
+:extrapreds ((x8776))
+:extrapreds ((x8777))
+:extrapreds ((x8778))
+:extrapreds ((x8779))
+:extrapreds ((x8780))
+:extrapreds ((x8781))
+:extrapreds ((x8782))
+:extrapreds ((x8783))
+:extrapreds ((x8784))
+:extrapreds ((x8785))
+:extrapreds ((x8786))
+:extrapreds ((x8787))
+:extrapreds ((x8788))
+:extrapreds ((x8789))
+:extrapreds ((x8790))
+:extrapreds ((x8791))
+:extrapreds ((x8792))
+:extrapreds ((x8793))
+:extrapreds ((x8794))
+:extrapreds ((x8795))
+:extrapreds ((x8796))
+:extrapreds ((x8797))
+:extrapreds ((x8798))
+:extrapreds ((x8799))
+:extrapreds ((x8800))
+:extrapreds ((x8801))
+:extrapreds ((x8802))
+:extrapreds ((x8803))
+:extrapreds ((x8804))
+:extrapreds ((x8805))
+:extrapreds ((x8806))
+:extrapreds ((x8807))
+:extrapreds ((x8808))
+:extrapreds ((x8809))
+:extrapreds ((x8810))
+:extrapreds ((x8811))
+:extrapreds ((x8812))
+:extrapreds ((x8813))
+:extrapreds ((x8814))
+:extrapreds ((x8815))
+:extrapreds ((x8816))
+:extrapreds ((x8817))
+:extrapreds ((x8818))
+:extrapreds ((x8819))
+:extrapreds ((x8820))
+:extrapreds ((x8821))
+:extrapreds ((x8822))
+:extrapreds ((x8823))
+:extrapreds ((x8824))
+:extrapreds ((x8825))
+:extrapreds ((x8826))
+:extrapreds ((x8827))
+:extrapreds ((x8828))
+:extrapreds ((x8829))
+:extrapreds ((x8830))
+:extrapreds ((x8831))
+:extrapreds ((x8832))
+:extrapreds ((x8833))
+:extrapreds ((x8834))
+:extrapreds ((x8835))
+:extrapreds ((x8836))
+:extrapreds ((x8837))
+:extrapreds ((x8838))
+:extrapreds ((x8839))
+:extrapreds ((x8840))
+:extrapreds ((x8841))
+:extrapreds ((x8842))
+:extrapreds ((x8843))
+:extrapreds ((x8844))
+:extrapreds ((x8845))
+:extrapreds ((x8846))
+:extrapreds ((x8847))
+:extrapreds ((x8848))
+:extrapreds ((x8849))
+:extrapreds ((x8850))
+:extrapreds ((x8851))
+:extrapreds ((x8852))
+:extrapreds ((x8853))
+:extrapreds ((x8854))
+:extrapreds ((x8855))
+:extrapreds ((x8856))
+:extrapreds ((x8857))
+:extrapreds ((x8858))
+:extrapreds ((x8859))
+:extrapreds ((x8860))
+:extrapreds ((x8861))
+:extrapreds ((x8862))
+:extrapreds ((x8863))
+:extrapreds ((x8864))
+:extrapreds ((x8865))
+:extrapreds ((x8866))
+:extrapreds ((x8867))
+:extrapreds ((x8868))
+:extrapreds ((x8869))
+:extrapreds ((x8870))
+:extrapreds ((x8871))
+:extrapreds ((x8872))
+:extrapreds ((x8873))
+:extrapreds ((x8874))
+:extrapreds ((x8875))
+:extrapreds ((x8876))
+:extrapreds ((x8877))
+:extrapreds ((x8878))
+:extrapreds ((x8879))
+:extrapreds ((x8880))
+:extrapreds ((x8881))
+:extrapreds ((x8882))
+:extrapreds ((x8883))
+:extrapreds ((x8884))
+:extrapreds ((x8885))
+:extrapreds ((x8886))
+:extrapreds ((x8887))
+:extrapreds ((x8888))
+:extrapreds ((x8889))
+:extrapreds ((x8890))
+:extrapreds ((x8891))
+:extrapreds ((x8892))
+:extrapreds ((x8893))
+:extrapreds ((x8894))
+:extrapreds ((x8895))
+:extrapreds ((x8896))
+:extrapreds ((x8897))
+:extrapreds ((x8898))
+:extrapreds ((x8899))
+:extrapreds ((x8900))
+:extrapreds ((x8901))
+:extrapreds ((x8902))
+:extrapreds ((x8903))
+:extrapreds ((x8904))
+:extrapreds ((x8905))
+:extrapreds ((x8906))
+:extrapreds ((x8907))
+:extrapreds ((x8908))
+:extrapreds ((x8909))
+:extrapreds ((x8910))
+:extrapreds ((x8911))
+:extrapreds ((x8912))
+:extrapreds ((x8913))
+:extrapreds ((x8914))
+:extrapreds ((x8915))
+:extrapreds ((x8916))
+:extrapreds ((x8917))
+:extrapreds ((x8918))
+:extrapreds ((x8919))
+:extrapreds ((x8920))
+:extrapreds ((x8921))
+:extrapreds ((x8922))
+:extrapreds ((x8923))
+:extrapreds ((x8924))
+:extrapreds ((x8925))
+:extrapreds ((x8926))
+:extrapreds ((x8927))
+:extrapreds ((x8928))
+:extrapreds ((x8929))
+:extrapreds ((x8930))
+:extrapreds ((x8931))
+:extrapreds ((x8932))
+:extrapreds ((x8933))
+:extrapreds ((x8934))
+:extrapreds ((x8935))
+:extrapreds ((x8936))
+:extrapreds ((x8937))
+:extrapreds ((x8938))
+:extrapreds ((x8939))
+:extrapreds ((x8940))
+:extrapreds ((x8941))
+:extrapreds ((x8942))
+:extrapreds ((x8943))
+:extrapreds ((x8944))
+:extrapreds ((x8945))
+:extrapreds ((x8946))
+:extrapreds ((x8947))
+:extrapreds ((x8948))
+:extrapreds ((x8949))
+:extrapreds ((x8950))
+:extrapreds ((x8951))
+:extrapreds ((x8952))
+:extrapreds ((x8953))
+:extrapreds ((x8954))
+:extrapreds ((x8955))
+:extrapreds ((x8956))
+:extrapreds ((x8957))
+:extrapreds ((x8958))
+:extrapreds ((x8959))
+:extrapreds ((x8960))
+:extrapreds ((x8961))
+:extrapreds ((x8962))
+:extrapreds ((x8963))
+:extrapreds ((x8964))
+:extrapreds ((x8965))
+:extrapreds ((x8966))
+:extrapreds ((x8967))
+:extrapreds ((x8968))
+:extrapreds ((x8969))
+:extrapreds ((x8970))
+:extrapreds ((x8971))
+:extrapreds ((x8972))
+:extrapreds ((x8973))
+:extrapreds ((x8974))
+:extrapreds ((x8975))
+:extrapreds ((x8976))
+:extrapreds ((x8977))
+:extrapreds ((x8978))
+:extrapreds ((x8979))
+:extrapreds ((x8980))
+:extrapreds ((x8981))
+:extrapreds ((x8982))
+:extrapreds ((x8983))
+:extrapreds ((x8984))
+:extrapreds ((x8985))
+:extrapreds ((x8986))
+:extrapreds ((x8987))
+:extrapreds ((x8988))
+:extrapreds ((x8989))
+:extrapreds ((x8990))
+:extrapreds ((x8991))
+:extrapreds ((x8992))
+:extrapreds ((x8993))
+:extrapreds ((x8994))
+:extrapreds ((x8995))
+:extrapreds ((x8996))
+:extrapreds ((x8997))
+:extrapreds ((x8998))
+:extrapreds ((x8999))
+:extrapreds ((x9000))
+:extrapreds ((x9001))
+:extrapreds ((x9002))
+:extrapreds ((x9003))
+:extrapreds ((x9004))
+:extrapreds ((x9005))
+:extrapreds ((x9006))
+:extrapreds ((x9007))
+:extrapreds ((x9008))
+:extrapreds ((x9009))
+:extrapreds ((x9010))
+:extrapreds ((x9011))
+:extrapreds ((x9012))
+:extrapreds ((x9013))
+:extrapreds ((x9014))
+:extrapreds ((x9015))
+:extrapreds ((x9016))
+:extrapreds ((x9017))
+:extrapreds ((x9018))
+:extrapreds ((x9019))
+:extrapreds ((x9020))
+:extrapreds ((x9021))
+:extrapreds ((x9022))
+:extrapreds ((x9023))
+:extrapreds ((x9024))
+:extrapreds ((x9025))
+:extrapreds ((x9026))
+:extrapreds ((x9027))
+:extrapreds ((x9028))
+:extrapreds ((x9029))
+:extrapreds ((x9030))
+:extrapreds ((x9031))
+:extrapreds ((x9032))
+:extrapreds ((x9033))
+:extrapreds ((x9034))
+:extrapreds ((x9035))
+:extrapreds ((x9036))
+:extrapreds ((x9037))
+:extrapreds ((x9038))
+:extrapreds ((x9039))
+:extrapreds ((x9040))
+:extrapreds ((x9041))
+:extrapreds ((x9042))
+:extrapreds ((x9043))
+:extrapreds ((x9044))
+:extrapreds ((x9045))
+:extrapreds ((x9046))
+:extrapreds ((x9047))
+:extrapreds ((x9048))
+:extrapreds ((x9049))
+:extrapreds ((x9050))
+:extrapreds ((x9051))
+:extrapreds ((x9052))
+:extrapreds ((x9053))
+:extrapreds ((x9054))
+:extrapreds ((x9055))
+:extrapreds ((x9056))
+:extrapreds ((x9057))
+:extrapreds ((x9058))
+:extrapreds ((x9059))
+:extrapreds ((x9060))
+:extrapreds ((x9061))
+:extrapreds ((x9062))
+:extrapreds ((x9063))
+:extrapreds ((x9064))
+:extrapreds ((x9065))
+:extrapreds ((x9066))
+:extrapreds ((x9067))
+:extrapreds ((x9068))
+:extrapreds ((x9069))
+:extrapreds ((x9070))
+:extrapreds ((x9071))
+:extrapreds ((x9072))
+:extrapreds ((x9073))
+:extrapreds ((x9074))
+:extrapreds ((x9075))
+:extrapreds ((x9076))
+:extrapreds ((x9077))
+:extrapreds ((x9078))
+:extrapreds ((x9079))
+:extrapreds ((x9080))
+:extrapreds ((x9081))
+:extrapreds ((x9082))
+:extrapreds ((x9083))
+:extrapreds ((x9084))
+:extrapreds ((x9085))
+:extrapreds ((x9086))
+:extrapreds ((x9087))
+:extrapreds ((x9088))
+:extrapreds ((x9089))
+:extrapreds ((x9090))
+:extrapreds ((x9091))
+:extrapreds ((x9092))
+:extrapreds ((x9093))
+:extrapreds ((x9094))
+:extrapreds ((x9095))
+:extrapreds ((x9096))
+:extrapreds ((x9097))
+:extrapreds ((x9098))
+:extrapreds ((x9099))
+:extrapreds ((x9100))
+:extrapreds ((x9101))
+:extrapreds ((x9102))
+:extrapreds ((x9103))
+:extrapreds ((x9104))
+:extrapreds ((x9105))
+:extrapreds ((x9106))
+:extrapreds ((x9107))
+:extrapreds ((x9108))
+:extrapreds ((x9109))
+:extrapreds ((x9110))
+:extrapreds ((x9111))
+:extrapreds ((x9112))
+:extrapreds ((x9113))
+:extrapreds ((x9114))
+:extrapreds ((x9115))
+:extrapreds ((x9116))
+:extrapreds ((x9117))
+:extrapreds ((x9118))
+:extrapreds ((x9119))
+:extrapreds ((x9120))
+:extrapreds ((x9121))
+:extrapreds ((x9122))
+:extrapreds ((x9123))
+:extrapreds ((x9124))
+:extrapreds ((x9125))
+:extrapreds ((x9126))
+:extrapreds ((x9127))
+:extrapreds ((x9128))
+:extrapreds ((x9129))
+:extrapreds ((x9130))
+:extrapreds ((x9131))
+:extrapreds ((x9132))
+:extrapreds ((x9133))
+:extrapreds ((x9134))
+:extrapreds ((x9135))
+:extrapreds ((x9136))
+:extrapreds ((x9137))
+:extrapreds ((x9138))
+:extrapreds ((x9139))
+:extrapreds ((x9140))
+:extrapreds ((x9141))
+:extrapreds ((x9142))
+:extrapreds ((x9143))
+:extrapreds ((x9144))
+:extrapreds ((x9145))
+:extrapreds ((x9146))
+:extrapreds ((x9147))
+:extrapreds ((x9148))
+:extrapreds ((x9149))
+:extrapreds ((x9150))
+:extrapreds ((x9151))
+:extrapreds ((x9152))
+:extrapreds ((x9153))
+:extrapreds ((x9154))
+:extrapreds ((x9155))
+:extrapreds ((x9156))
+:extrapreds ((x9157))
+:extrapreds ((x9158))
+:extrapreds ((x9159))
+:extrapreds ((x9160))
+:extrapreds ((x9161))
+:extrapreds ((x9162))
+:extrapreds ((x9163))
+:extrapreds ((x9164))
+:extrapreds ((x9165))
+:extrapreds ((x9166))
+:extrapreds ((x9167))
+:extrapreds ((x9168))
+:extrapreds ((x9169))
+:extrapreds ((x9170))
+:extrapreds ((x9171))
+:extrapreds ((x9172))
+:extrapreds ((x9173))
+:extrapreds ((x9174))
+:extrapreds ((x9175))
+:extrapreds ((x9176))
+:extrapreds ((x9177))
+:extrapreds ((x9178))
+:extrapreds ((x9179))
+:extrapreds ((x9180))
+:extrapreds ((x9181))
+:extrapreds ((x9182))
+:extrapreds ((x9183))
+:extrapreds ((x9184))
+:extrapreds ((x9185))
+:extrapreds ((x9186))
+:extrapreds ((x9187))
+:extrapreds ((x9188))
+:extrapreds ((x9189))
+:extrapreds ((x9190))
+:extrapreds ((x9191))
+:extrapreds ((x9192))
+:extrapreds ((x9193))
+:extrapreds ((x9194))
+:extrapreds ((x9195))
+:extrapreds ((x9196))
+:extrapreds ((x9197))
+:extrapreds ((x9198))
+:extrapreds ((x9199))
+:extrapreds ((x9200))
+:extrapreds ((x9201))
+:extrapreds ((x9202))
+:extrapreds ((x9203))
+:extrapreds ((x9204))
+:extrapreds ((x9205))
+:extrapreds ((x9206))
+:extrapreds ((x9207))
+:extrapreds ((x9208))
+:extrapreds ((x9209))
+:extrapreds ((x9210))
+:extrapreds ((x9211))
+:extrapreds ((x9212))
+:extrapreds ((x9213))
+:extrapreds ((x9214))
+:extrapreds ((x9215))
+:extrapreds ((x9216))
+:extrapreds ((x9217))
+:extrapreds ((x9218))
+:extrapreds ((x9219))
+:extrapreds ((x9220))
+:extrapreds ((x9221))
+:extrapreds ((x9222))
+:extrapreds ((x9223))
+:extrapreds ((x9224))
+:extrapreds ((x9225))
+:extrapreds ((x9226))
+:extrapreds ((x9227))
+:extrapreds ((x9228))
+:extrapreds ((x9229))
+:extrapreds ((x9230))
+:extrapreds ((x9231))
+:extrapreds ((x9232))
+:extrapreds ((x9233))
+:extrapreds ((x9234))
+:extrapreds ((x9235))
+:extrapreds ((x9236))
+:extrapreds ((x9237))
+:extrapreds ((x9238))
+:extrapreds ((x9239))
+:extrapreds ((x9240))
+:extrapreds ((x9241))
+:extrapreds ((x9242))
+:extrapreds ((x9243))
+:extrapreds ((x9244))
+:extrapreds ((x9245))
+:extrapreds ((x9246))
+:extrapreds ((x9247))
+:extrapreds ((x9248))
+:extrapreds ((x9249))
+:extrapreds ((x9250))
+:extrapreds ((x9251))
+:extrapreds ((x9252))
+:extrapreds ((x9253))
+:extrapreds ((x9254))
+:extrapreds ((x9255))
+:extrapreds ((x9256))
+:extrapreds ((x9257))
+:extrapreds ((x9258))
+:extrapreds ((x9259))
+:extrapreds ((x9260))
+:extrapreds ((x9261))
+:extrapreds ((x9262))
+:extrapreds ((x9263))
+:extrapreds ((x9264))
+:extrapreds ((x9265))
+:extrapreds ((x9266))
+:extrapreds ((x9267))
+:extrapreds ((x9268))
+:extrapreds ((x9269))
+:extrapreds ((x9270))
+:extrapreds ((x9271))
+:extrapreds ((x9272))
+:extrapreds ((x9273))
+:extrapreds ((x9274))
+:extrapreds ((x9275))
+:extrapreds ((x9276))
+:extrapreds ((x9277))
+:extrapreds ((x9278))
+:extrapreds ((x9279))
+:extrapreds ((x9280))
+:extrapreds ((x9281))
+:extrapreds ((x9282))
+:extrapreds ((x9283))
+:extrapreds ((x9284))
+:extrapreds ((x9285))
+:extrapreds ((x9286))
+:extrapreds ((x9287))
+:extrapreds ((x9288))
+:extrapreds ((x9289))
+:extrapreds ((x9290))
+:extrapreds ((x9291))
+:extrapreds ((x9292))
+:extrapreds ((x9293))
+:extrapreds ((x9294))
+:extrapreds ((x9295))
+:extrapreds ((x9296))
+:extrapreds ((x9297))
+:extrapreds ((x9298))
+:extrapreds ((x9299))
+:extrapreds ((x9300))
+:extrapreds ((x9301))
+:extrapreds ((x9302))
+:extrapreds ((x9303))
+:extrapreds ((x9304))
+:extrapreds ((x9305))
+:extrapreds ((x9306))
+:extrapreds ((x9307))
+:extrapreds ((x9308))
+:extrapreds ((x9309))
+:extrapreds ((x9310))
+:extrapreds ((x9311))
+:extrapreds ((x9312))
+:extrapreds ((x9313))
+:extrapreds ((x9314))
+:extrapreds ((x9315))
+:extrapreds ((x9316))
+:extrapreds ((x9317))
+:extrapreds ((x9318))
+:extrapreds ((x9319))
+:extrapreds ((x9320))
+:extrapreds ((x9321))
+:extrapreds ((x9322))
+:extrapreds ((x9323))
+:extrapreds ((x9324))
+:extrapreds ((x9325))
+:extrapreds ((x9326))
+:extrapreds ((x9327))
+:extrapreds ((x9328))
+:extrapreds ((x9329))
+:extrapreds ((x9330))
+:extrapreds ((x9331))
+:extrapreds ((x9332))
+:extrapreds ((x9333))
+:extrapreds ((x9334))
+:extrapreds ((x9335))
+:extrapreds ((x9336))
+:extrapreds ((x9337))
+:extrapreds ((x9338))
+:extrapreds ((x9339))
+:extrapreds ((x9340))
+:extrapreds ((x9341))
+:extrapreds ((x9342))
+:extrapreds ((x9343))
+:extrapreds ((x9344))
+:extrapreds ((x9345))
+:extrapreds ((x9346))
+:extrapreds ((x9347))
+:extrapreds ((x9348))
+:extrapreds ((x9349))
+:extrapreds ((x9350))
+:extrapreds ((x9351))
+:extrapreds ((x9352))
+:extrapreds ((x9353))
+:extrapreds ((x9354))
+:extrapreds ((x9355))
+:extrapreds ((x9356))
+:extrapreds ((x9357))
+:extrapreds ((x9358))
+:extrapreds ((x9359))
+:extrapreds ((x9360))
+:extrapreds ((x9361))
+:extrapreds ((x9362))
+:extrapreds ((x9363))
+:extrapreds ((x9364))
+:extrapreds ((x9365))
+:extrapreds ((x9366))
+:extrapreds ((x9367))
+:extrapreds ((x9368))
+:extrapreds ((x9369))
+:extrapreds ((x9370))
+:extrapreds ((x9371))
+:extrapreds ((x9372))
+:extrapreds ((x9373))
+:extrapreds ((x9374))
+:extrapreds ((x9375))
+:extrapreds ((x9376))
+:extrapreds ((x9377))
+:extrapreds ((x9378))
+:extrapreds ((x9379))
+:extrapreds ((x9380))
+:extrapreds ((x9381))
+:extrapreds ((x9382))
+:extrapreds ((x9383))
+:extrapreds ((x9384))
+:extrapreds ((x9385))
+:extrapreds ((x9386))
+:extrapreds ((x9387))
+:extrapreds ((x9388))
+:extrapreds ((x9389))
+:extrapreds ((x9390))
+:extrapreds ((x9391))
+:extrapreds ((x9392))
+:extrapreds ((x9393))
+:extrapreds ((x9394))
+:extrapreds ((x9395))
+:extrapreds ((x9396))
+:formula (and
+(or x1 x2)
+(or x1 (not x4))
+(or x1 (not x5))
+(or (not x2) x4 x5 (not x1))
+(or (not x6) (not x11))
+(or (not x6) x10)
+(or (not x6) (not x9))
+(or (not x6) x8)
+(or (not x6) x7)
+(or (not x6) x1)
+(or (not x6) x12)
+(or (not x6) x13)
+(or (not x6) (not x14))
+(or (not x6) (not x15))
+(or (not x6) (not x16))
+(or (not x6) (not x17))
+(or (not x6) (not x18))
+(or (not x6) (not x19))
+(or (not x6) x20)
+(or (not x21) (not x11))
+(or (not x21) x10)
+(or (not x21) (not x9))
+(or (not x21) x8)
+(or (not x21) (not x7))
+(or (not x21) (not x14))
+(or (not x21) (not x15))
+(or (not x21) (not x16))
+(or (not x21) (not x17))
+(or (not x21) (not x18))
+(or (not x21) (not x19))
+(or (not x21) x20)
+(or x13 x22)
+(or x13 x2)
+(or (not x22) (not x2) (not x13))
+(or x12 x23)
+(or x12 x2)
+(or (not x23) (not x2) (not x12))
+(or (not x24) (not x11))
+(or (not x24) (not x10))
+(or (not x24) x9)
+(or (not x24) x8)
+(or (not x24) x7)
+(or (not x24) x12)
+(or (not x24) x13)
+(or (not x24) (not x14))
+(or (not x24) (not x15))
+(or (not x24) (not x16))
+(or (not x24) (not x17))
+(or (not x24) (not x18))
+(or (not x24) (not x19))
+(or (not x24) x20)
+(or (not x5) x22)
+(or (not x5) x2)
+(or (not x4) x23)
+(or (not x4) x2)
+(or x20 (not x4))
+(or x20 (not x5))
+(or x4 x5 (not x20))
+(or (not x25) (not x11))
+(or (not x25) (not x10))
+(or (not x25) x9)
+(or (not x25) x8)
+(or (not x25) (not x7))
+(or (not x25) (not x14))
+(or (not x25) (not x15))
+(or (not x25) (not x16))
+(or (not x25) (not x17))
+(or (not x25) (not x18))
+(or (not x25) (not x19))
+(or (not x25) x20)
+(or (not x26) (not x31))
+(or (not x26) x30)
+(or (not x26) (not x29))
+(or (not x26) x28)
+(or (not x26) x27)
+(or (not x26) x32)
+(or (not x26) x33)
+(or (not x26) x34)
+(or (not x26) (not x35))
+(or (not x26) (not x36))
+(or (not x26) (not x37))
+(or (not x26) (not x38))
+(or (not x26) (not x39))
+(or (not x26) (not x40))
+(or (not x26) x41)
+(or (not x42) (not x31))
+(or (not x42) x30)
+(or (not x42) (not x29))
+(or (not x42) x28)
+(or (not x42) (not x27))
+(or (not x42) (not x35))
+(or (not x42) (not x36))
+(or (not x42) (not x37))
+(or (not x42) (not x38))
+(or (not x42) (not x39))
+(or (not x42) (not x40))
+(or (not x42) x41)
+(or (not x43) (not x31))
+(or (not x43) (not x30))
+(or (not x43) x29)
+(or (not x43) x28)
+(or (not x43) x27)
+(or (not x43) x33)
+(or (not x43) x34)
+(or (not x43) (not x35))
+(or (not x43) (not x36))
+(or (not x43) (not x37))
+(or (not x43) (not x38))
+(or (not x43) (not x39))
+(or (not x43) (not x40))
+(or (not x43) x41)
+(or (not x44) (not x31))
+(or (not x44) (not x30))
+(or (not x44) x29)
+(or (not x44) x28)
+(or (not x44) (not x27))
+(or (not x44) (not x35))
+(or (not x44) (not x36))
+(or (not x44) (not x37))
+(or (not x44) (not x38))
+(or (not x44) (not x39))
+(or (not x44) (not x40))
+(or (not x44) x41)
+(or (not x45) (not x50))
+(or (not x45) x49)
+(or (not x45) (not x48))
+(or (not x45) x47)
+(or (not x45) x46)
+(or (not x45) x51)
+(or (not x45) x52)
+(or (not x45) x53)
+(or (not x45) (not x54))
+(or (not x45) (not x55))
+(or (not x45) (not x56))
+(or (not x45) (not x57))
+(or (not x45) (not x58))
+(or (not x45) (not x59))
+(or (not x45) x60)
+(or (not x61) (not x50))
+(or (not x61) x49)
+(or (not x61) (not x48))
+(or (not x61) x47)
+(or (not x61) (not x46))
+(or (not x61) (not x54))
+(or (not x61) (not x55))
+(or (not x61) (not x56))
+(or (not x61) (not x57))
+(or (not x61) (not x58))
+(or (not x61) (not x59))
+(or (not x61) x60)
+(or (not x62) (not x50))
+(or (not x62) (not x49))
+(or (not x62) x48)
+(or (not x62) x47)
+(or (not x62) x46)
+(or (not x62) x52)
+(or (not x62) x53)
+(or (not x62) (not x54))
+(or (not x62) (not x55))
+(or (not x62) (not x56))
+(or (not x62) (not x57))
+(or (not x62) (not x58))
+(or (not x62) (not x59))
+(or (not x62) x60)
+(or (not x63) (not x50))
+(or (not x63) (not x49))
+(or (not x63) x48)
+(or (not x63) x47)
+(or (not x63) (not x46))
+(or (not x63) (not x54))
+(or (not x63) (not x55))
+(or (not x63) (not x56))
+(or (not x63) (not x57))
+(or (not x63) (not x58))
+(or (not x63) (not x59))
+(or (not x63) x60)
+(or (not x64) (not x69))
+(or (not x64) x68)
+(or (not x64) (not x67))
+(or (not x64) x66)
+(or (not x64) x65)
+(or (not x64) x70)
+(or (not x64) x71)
+(or (not x64) x72)
+(or (not x64) (not x73))
+(or (not x64) (not x74))
+(or (not x64) (not x75))
+(or (not x64) (not x76))
+(or (not x64) (not x77))
+(or (not x64) (not x78))
+(or (not x64) x79)
+(or (not x80) (not x69))
+(or (not x80) x68)
+(or (not x80) (not x67))
+(or (not x80) x66)
+(or (not x80) (not x65))
+(or (not x80) (not x73))
+(or (not x80) (not x74))
+(or (not x80) (not x75))
+(or (not x80) (not x76))
+(or (not x80) (not x77))
+(or (not x80) (not x78))
+(or (not x80) x79)
+(or (not x81) (not x69))
+(or (not x81) (not x68))
+(or (not x81) x67)
+(or (not x81) x66)
+(or (not x81) x65)
+(or (not x81) x71)
+(or (not x81) x72)
+(or (not x81) (not x73))
+(or (not x81) (not x74))
+(or (not x81) (not x75))
+(or (not x81) (not x76))
+(or (not x81) (not x77))
+(or (not x81) (not x78))
+(or (not x81) x79)
+(or (not x82) (not x69))
+(or (not x82) (not x68))
+(or (not x82) x67)
+(or (not x82) x66)
+(or (not x82) (not x65))
+(or (not x82) (not x73))
+(or (not x82) (not x74))
+(or (not x82) (not x75))
+(or (not x82) (not x76))
+(or (not x82) (not x77))
+(or (not x82) (not x78))
+(or (not x82) x79)
+(or (not x83) (not x88))
+(or (not x83) x87)
+(or (not x83) (not x86))
+(or (not x83) x85)
+(or (not x83) x84)
+(or (not x83) x89)
+(or (not x83) x90)
+(or (not x83) x91)
+(or (not x83) (not x92))
+(or (not x83) (not x93))
+(or (not x83) (not x94))
+(or (not x83) (not x95))
+(or (not x83) (not x96))
+(or (not x83) (not x97))
+(or (not x83) x98)
+(or (not x99) (not x88))
+(or (not x99) x87)
+(or (not x99) (not x86))
+(or (not x99) x85)
+(or (not x99) (not x84))
+(or (not x99) (not x92))
+(or (not x99) (not x93))
+(or (not x99) (not x94))
+(or (not x99) (not x95))
+(or (not x99) (not x96))
+(or (not x99) (not x97))
+(or (not x99) x98)
+(or (not x100) (not x88))
+(or (not x100) (not x87))
+(or (not x100) x86)
+(or (not x100) x85)
+(or (not x100) x84)
+(or (not x100) x90)
+(or (not x100) x91)
+(or (not x100) (not x92))
+(or (not x100) (not x93))
+(or (not x100) (not x94))
+(or (not x100) (not x95))
+(or (not x100) (not x96))
+(or (not x100) (not x97))
+(or (not x100) x98)
+(or (not x101) (not x88))
+(or (not x101) (not x87))
+(or (not x101) x86)
+(or (not x101) x85)
+(or (not x101) (not x84))
+(or (not x101) (not x92))
+(or (not x101) (not x93))
+(or (not x101) (not x94))
+(or (not x101) (not x95))
+(or (not x101) (not x96))
+(or (not x101) (not x97))
+(or (not x101) x98)
+(or (not x102) (not x107))
+(or (not x102) x106)
+(or (not x102) (not x105))
+(or (not x102) x104)
+(or (not x102) x103)
+(or (not x102) x108)
+(or (not x102) x109)
+(or (not x102) x110)
+(or (not x102) (not x111))
+(or (not x102) (not x112))
+(or (not x102) (not x113))
+(or (not x102) (not x114))
+(or (not x102) (not x115))
+(or (not x102) (not x116))
+(or (not x102) x117)
+(or (not x118) (not x107))
+(or (not x118) x106)
+(or (not x118) (not x105))
+(or (not x118) x104)
+(or (not x118) (not x103))
+(or (not x118) (not x111))
+(or (not x118) (not x112))
+(or (not x118) (not x113))
+(or (not x118) (not x114))
+(or (not x118) (not x115))
+(or (not x118) (not x116))
+(or (not x118) x117)
+(or (not x119) (not x107))
+(or (not x119) (not x106))
+(or (not x119) x105)
+(or (not x119) x104)
+(or (not x119) x103)
+(or (not x119) x109)
+(or (not x119) x110)
+(or (not x119) (not x111))
+(or (not x119) (not x112))
+(or (not x119) (not x113))
+(or (not x119) (not x114))
+(or (not x119) (not x115))
+(or (not x119) (not x116))
+(or (not x119) x117)
+(or (not x120) (not x107))
+(or (not x120) (not x106))
+(or (not x120) x105)
+(or (not x120) x104)
+(or (not x120) (not x103))
+(or (not x120) (not x111))
+(or (not x120) (not x112))
+(or (not x120) (not x113))
+(or (not x120) (not x114))
+(or (not x120) (not x115))
+(or (not x120) (not x116))
+(or (not x120) x117)
+(or (not x121) (not x126))
+(or (not x121) x125)
+(or (not x121) (not x124))
+(or (not x121) x123)
+(or (not x121) x122)
+(or (not x121) x127)
+(or (not x121) x128)
+(or (not x121) x129)
+(or (not x121) (not x130))
+(or (not x121) (not x131))
+(or (not x121) (not x132))
+(or (not x121) (not x133))
+(or (not x121) (not x134))
+(or (not x121) (not x135))
+(or (not x121) x136)
+(or (not x137) (not x126))
+(or (not x137) x125)
+(or (not x137) (not x124))
+(or (not x137) x123)
+(or (not x137) (not x122))
+(or (not x137) (not x130))
+(or (not x137) (not x131))
+(or (not x137) (not x132))
+(or (not x137) (not x133))
+(or (not x137) (not x134))
+(or (not x137) (not x135))
+(or (not x137) x136)
+(or (not x138) (not x126))
+(or (not x138) (not x125))
+(or (not x138) x124)
+(or (not x138) x123)
+(or (not x138) x122)
+(or (not x138) x128)
+(or (not x138) x129)
+(or (not x138) (not x130))
+(or (not x138) (not x131))
+(or (not x138) (not x132))
+(or (not x138) (not x133))
+(or (not x138) (not x134))
+(or (not x138) (not x135))
+(or (not x138) x136)
+(or (not x139) (not x126))
+(or (not x139) (not x125))
+(or (not x139) x124)
+(or (not x139) x123)
+(or (not x139) (not x122))
+(or (not x139) (not x130))
+(or (not x139) (not x131))
+(or (not x139) (not x132))
+(or (not x139) (not x133))
+(or (not x139) (not x134))
+(or (not x139) (not x135))
+(or (not x139) x136)
+(or (not x140) (not x145))
+(or (not x140) x144)
+(or (not x140) (not x143))
+(or (not x140) x142)
+(or (not x140) x141)
+(or (not x140) x146)
+(or (not x140) x147)
+(or (not x140) x148)
+(or (not x140) (not x149))
+(or (not x140) (not x150))
+(or (not x140) (not x151))
+(or (not x140) (not x152))
+(or (not x140) (not x153))
+(or (not x140) (not x154))
+(or (not x140) x155)
+(or (not x156) (not x145))
+(or (not x156) x144)
+(or (not x156) (not x143))
+(or (not x156) x142)
+(or (not x156) (not x141))
+(or (not x156) (not x149))
+(or (not x156) (not x150))
+(or (not x156) (not x151))
+(or (not x156) (not x152))
+(or (not x156) (not x153))
+(or (not x156) (not x154))
+(or (not x156) x155)
+(or (not x157) (not x145))
+(or (not x157) (not x144))
+(or (not x157) x143)
+(or (not x157) x142)
+(or (not x157) x141)
+(or (not x157) x147)
+(or (not x157) x148)
+(or (not x157) (not x149))
+(or (not x157) (not x150))
+(or (not x157) (not x151))
+(or (not x157) (not x152))
+(or (not x157) (not x153))
+(or (not x157) (not x154))
+(or (not x157) x155)
+(or (not x158) (not x145))
+(or (not x158) (not x144))
+(or (not x158) x143)
+(or (not x158) x142)
+(or (not x158) (not x141))
+(or (not x158) (not x149))
+(or (not x158) (not x150))
+(or (not x158) (not x151))
+(or (not x158) (not x152))
+(or (not x158) (not x153))
+(or (not x158) (not x154))
+(or (not x158) x155)
+(or (not x159) (not x164))
+(or (not x159) x163)
+(or (not x159) (not x162))
+(or (not x159) x161)
+(or (not x159) x160)
+(or (not x159) x165)
+(or (not x159) x166)
+(or (not x159) x167)
+(or (not x159) (not x168))
+(or (not x159) (not x169))
+(or (not x159) (not x170))
+(or (not x159) (not x171))
+(or (not x159) (not x172))
+(or (not x159) (not x173))
+(or (not x159) x174)
+(or (not x175) (not x164))
+(or (not x175) x163)
+(or (not x175) (not x162))
+(or (not x175) x161)
+(or (not x175) (not x160))
+(or (not x175) (not x168))
+(or (not x175) (not x169))
+(or (not x175) (not x170))
+(or (not x175) (not x171))
+(or (not x175) (not x172))
+(or (not x175) (not x173))
+(or (not x175) x174)
+(or (not x176) (not x164))
+(or (not x176) (not x163))
+(or (not x176) x162)
+(or (not x176) x161)
+(or (not x176) x160)
+(or (not x176) x166)
+(or (not x176) x167)
+(or (not x176) (not x168))
+(or (not x176) (not x169))
+(or (not x176) (not x170))
+(or (not x176) (not x171))
+(or (not x176) (not x172))
+(or (not x176) (not x173))
+(or (not x176) x174)
+(or (not x177) (not x164))
+(or (not x177) (not x163))
+(or (not x177) x162)
+(or (not x177) x161)
+(or (not x177) (not x160))
+(or (not x177) (not x168))
+(or (not x177) (not x169))
+(or (not x177) (not x170))
+(or (not x177) (not x171))
+(or (not x177) (not x172))
+(or (not x177) (not x173))
+(or (not x177) x174)
+(or (not x178) (not x183))
+(or (not x178) x182)
+(or (not x178) (not x181))
+(or (not x178) x180)
+(or (not x178) x179)
+(or (not x178) x184)
+(or (not x178) x185)
+(or (not x178) x186)
+(or (not x178) (not x187))
+(or (not x178) (not x188))
+(or (not x178) (not x189))
+(or (not x178) (not x190))
+(or (not x178) (not x191))
+(or (not x178) (not x192))
+(or (not x178) x193)
+(or (not x194) (not x183))
+(or (not x194) x182)
+(or (not x194) (not x181))
+(or (not x194) x180)
+(or (not x194) (not x179))
+(or (not x194) (not x187))
+(or (not x194) (not x188))
+(or (not x194) (not x189))
+(or (not x194) (not x190))
+(or (not x194) (not x191))
+(or (not x194) (not x192))
+(or (not x194) x193)
+(or (not x195) (not x183))
+(or (not x195) (not x182))
+(or (not x195) x181)
+(or (not x195) x180)
+(or (not x195) x179)
+(or (not x195) x185)
+(or (not x195) x186)
+(or (not x195) (not x187))
+(or (not x195) (not x188))
+(or (not x195) (not x189))
+(or (not x195) (not x190))
+(or (not x195) (not x191))
+(or (not x195) (not x192))
+(or (not x195) x193)
+(or (not x196) (not x183))
+(or (not x196) (not x182))
+(or (not x196) x181)
+(or (not x196) x180)
+(or (not x196) (not x179))
+(or (not x196) (not x187))
+(or (not x196) (not x188))
+(or (not x196) (not x189))
+(or (not x196) (not x190))
+(or (not x196) (not x191))
+(or (not x196) (not x192))
+(or (not x196) x193)
+(or (not x197) (not x202))
+(or (not x197) x201)
+(or (not x197) (not x200))
+(or (not x197) x199)
+(or (not x197) x198)
+(or (not x197) x203)
+(or (not x197) x204)
+(or (not x197) x205)
+(or (not x197) (not x206))
+(or (not x197) (not x207))
+(or (not x197) (not x208))
+(or (not x197) (not x209))
+(or (not x197) (not x210))
+(or (not x197) (not x211))
+(or (not x197) x212)
+(or (not x213) (not x202))
+(or (not x213) x201)
+(or (not x213) (not x200))
+(or (not x213) x199)
+(or (not x213) (not x198))
+(or (not x213) (not x206))
+(or (not x213) (not x207))
+(or (not x213) (not x208))
+(or (not x213) (not x209))
+(or (not x213) (not x210))
+(or (not x213) (not x211))
+(or (not x213) x212)
+(or (not x214) (not x202))
+(or (not x214) (not x201))
+(or (not x214) x200)
+(or (not x214) x199)
+(or (not x214) x198)
+(or (not x214) x204)
+(or (not x214) x205)
+(or (not x214) (not x206))
+(or (not x214) (not x207))
+(or (not x214) (not x208))
+(or (not x214) (not x209))
+(or (not x214) (not x210))
+(or (not x214) (not x211))
+(or (not x214) x212)
+(or (not x215) (not x202))
+(or (not x215) (not x201))
+(or (not x215) x200)
+(or (not x215) x199)
+(or (not x215) (not x198))
+(or (not x215) (not x206))
+(or (not x215) (not x207))
+(or (not x215) (not x208))
+(or (not x215) (not x209))
+(or (not x215) (not x210))
+(or (not x215) (not x211))
+(or (not x215) x212)
+(or (not x216) (not x221))
+(or (not x216) x220)
+(or (not x216) (not x219))
+(or (not x216) x218)
+(or (not x216) x217)
+(or (not x216) x222)
+(or (not x216) x223)
+(or (not x216) x224)
+(or (not x216) (not x225))
+(or (not x216) (not x226))
+(or (not x216) (not x227))
+(or (not x216) (not x228))
+(or (not x216) (not x229))
+(or (not x216) (not x230))
+(or (not x216) x231)
+(or (not x232) (not x221))
+(or (not x232) x220)
+(or (not x232) (not x219))
+(or (not x232) x218)
+(or (not x232) (not x217))
+(or (not x232) (not x225))
+(or (not x232) (not x226))
+(or (not x232) (not x227))
+(or (not x232) (not x228))
+(or (not x232) (not x229))
+(or (not x232) (not x230))
+(or (not x232) x231)
+(or (not x233) (not x221))
+(or (not x233) (not x220))
+(or (not x233) x219)
+(or (not x233) x218)
+(or (not x233) x217)
+(or (not x233) x223)
+(or (not x233) x224)
+(or (not x233) (not x225))
+(or (not x233) (not x226))
+(or (not x233) (not x227))
+(or (not x233) (not x228))
+(or (not x233) (not x229))
+(or (not x233) (not x230))
+(or (not x233) x231)
+(or (not x234) (not x221))
+(or (not x234) (not x220))
+(or (not x234) x219)
+(or (not x234) x218)
+(or (not x234) (not x217))
+(or (not x234) (not x225))
+(or (not x234) (not x226))
+(or (not x234) (not x227))
+(or (not x234) (not x228))
+(or (not x234) (not x229))
+(or (not x234) (not x230))
+(or (not x234) x231)
+(or (not x235) (not x240))
+(or (not x235) x239)
+(or (not x235) (not x238))
+(or (not x235) x237)
+(or (not x235) x236)
+(or (not x235) x241)
+(or (not x235) x242)
+(or (not x235) x243)
+(or (not x235) (not x244))
+(or (not x235) (not x245))
+(or (not x235) (not x246))
+(or (not x235) (not x247))
+(or (not x235) (not x248))
+(or (not x235) (not x249))
+(or (not x235) x250)
+(or (not x251) (not x240))
+(or (not x251) x239)
+(or (not x251) (not x238))
+(or (not x251) x237)
+(or (not x251) (not x236))
+(or (not x251) (not x244))
+(or (not x251) (not x245))
+(or (not x251) (not x246))
+(or (not x251) (not x247))
+(or (not x251) (not x248))
+(or (not x251) (not x249))
+(or (not x251) x250)
+(or (not x252) (not x240))
+(or (not x252) (not x239))
+(or (not x252) x238)
+(or (not x252) x237)
+(or (not x252) x236)
+(or (not x252) x242)
+(or (not x252) x243)
+(or (not x252) (not x244))
+(or (not x252) (not x245))
+(or (not x252) (not x246))
+(or (not x252) (not x247))
+(or (not x252) (not x248))
+(or (not x252) (not x249))
+(or (not x252) x250)
+(or (not x253) (not x240))
+(or (not x253) (not x239))
+(or (not x253) x238)
+(or (not x253) x237)
+(or (not x253) (not x236))
+(or (not x253) (not x244))
+(or (not x253) (not x245))
+(or (not x253) (not x246))
+(or (not x253) (not x247))
+(or (not x253) (not x248))
+(or (not x253) (not x249))
+(or (not x253) x250)
+(or x254 (not x253))
+(or x254 (not x252))
+(or x254 (not x251))
+(or x254 (not x235))
+(or x254 (not x234))
+(or x254 (not x233))
+(or x254 (not x232))
+(or x254 (not x216))
+(or x254 (not x215))
+(or x254 (not x214))
+(or x254 (not x213))
+(or x254 (not x197))
+(or x254 (not x196))
+(or x254 (not x195))
+(or x254 (not x194))
+(or x254 (not x178))
+(or x254 (not x177))
+(or x254 (not x176))
+(or x254 (not x175))
+(or x254 (not x159))
+(or x254 (not x158))
+(or x254 (not x157))
+(or x254 (not x156))
+(or x254 (not x140))
+(or x254 (not x139))
+(or x254 (not x138))
+(or x254 (not x137))
+(or x254 (not x121))
+(or x254 (not x120))
+(or x254 (not x119))
+(or x254 (not x118))
+(or x254 (not x102))
+(or x254 (not x101))
+(or x254 (not x100))
+(or x254 (not x99))
+(or x254 (not x83))
+(or x254 (not x82))
+(or x254 (not x81))
+(or x254 (not x80))
+(or x254 (not x64))
+(or x254 (not x63))
+(or x254 (not x62))
+(or x254 (not x61))
+(or x254 (not x45))
+(or x254 (not x44))
+(or x254 (not x43))
+(or x254 (not x42))
+(or x254 (not x26))
+(or x254 (not x25))
+(or x254 (not x24))
+(or x254 (not x21))
+(or x254 (not x6))
+(or x253 x252 x251 x235 x234 x233 x232 x216 x215 x214 x213 x197 x196 x195 x194 x178 x177 x176 x175 x159 x158 x157 x156 x140 x139 x138 x137 x121 x120 x119 x118 x102 x101 x100 x99 x83 x82 x81 x80 x64 x63 x62 x61 x45 x44 x43 x42 x26 x25 x24 x21 x6 (not x254))
+(or (not x255) (not x11))
+(or (not x255) x10)
+(or (not x255) (not x9))
+(or (not x255) x8)
+(or (not x255) x7)
+(or (not x256) (not x11))
+(or (not x256) x10)
+(or (not x256) (not x9))
+(or (not x256) x8)
+(or (not x256) (not x7))
+(or (not x257) (not x11))
+(or (not x257) x10)
+(or (not x257) (not x9))
+(or (not x257) (not x8))
+(or (not x257) x7)
+(or (not x258) (not x11))
+(or (not x258) x10)
+(or (not x258) (not x9))
+(or (not x258) (not x8))
+(or (not x258) (not x7))
+(or (not x259) (not x11))
+(or (not x259) (not x10))
+(or (not x259) x9)
+(or (not x259) x8)
+(or (not x259) x7)
+(or (not x260) (not x11))
+(or (not x260) (not x10))
+(or (not x260) x9)
+(or (not x260) x8)
+(or (not x260) (not x7))
+(or (not x261) (not x11))
+(or (not x261) (not x10))
+(or (not x261) x9)
+(or (not x261) (not x8))
+(or (not x261) x7)
+(or (not x262) (not x11))
+(or (not x262) (not x10))
+(or (not x262) x9)
+(or (not x262) (not x8))
+(or (not x262) (not x7))
+(or (not x263) (not x11))
+(or (not x263) (not x10))
+(or (not x263) (not x9))
+(or (not x263) x8)
+(or (not x263) x7)
+(or (not x264) (not x11))
+(or (not x264) (not x10))
+(or (not x264) (not x9))
+(or (not x264) x8)
+(or (not x264) (not x7))
+(or (not x265) (not x11))
+(or (not x265) (not x10))
+(or (not x265) (not x9))
+(or (not x265) (not x8))
+(or (not x265) x7)
+(or (not x266) (not x11))
+(or (not x266) (not x10))
+(or (not x266) (not x9))
+(or (not x266) (not x8))
+(or (not x266) (not x7))
+(or x267 (not x266))
+(or x267 (not x265))
+(or x267 (not x264))
+(or x267 (not x263))
+(or x267 (not x262))
+(or x267 (not x261))
+(or x267 (not x260))
+(or x267 (not x259))
+(or x267 (not x258))
+(or x267 (not x257))
+(or x267 (not x256))
+(or x266 x265 x264 x263 x262 x261 x260 x259 x258 x257 x256 (not x267))
+(or (not x268) (not x269) (not x270) (not x271) (not x272) (not x273) (not x274) (not x275) x276)
+(or (not x276) x268)
+(or (not x276) x269)
+(or (not x276) x270)
+(or (not x276) x271)
+(or (not x276) x272)
+(or (not x276) x273)
+(or (not x276) x274)
+(or (not x276) x275)
+(or x277 (not x278))
+(or x277 x279)
+(or x278 (not x279) (not x277))
+(or x278 (not x277) (not x280) x281)
+(or (not x281) (not x278))
+(or (not x281) x277)
+(or (not x281) x280)
+(or x270 (not x282))
+(or x270 (not x283))
+(or x270 (not x31))
+(or x270 (not x30))
+(or x270 (not x29))
+(or x270 x28)
+(or x270 x27)
+(or x270 (not x284))
+(or x270 (not x281))
+(or x282 x283 x31 x30 x29 (not x28) (not x27) x284 x281 (not x270))
+(or x285 (not x286))
+(or x285 x287)
+(or x286 (not x287) (not x285))
+(or x286 (not x285) (not x288) x289)
+(or (not x289) (not x286))
+(or (not x289) x285)
+(or (not x289) x288)
+(or x269 (not x282))
+(or x269 (not x31))
+(or x269 (not x30))
+(or x269 (not x29))
+(or x269 x28)
+(or x269 (not x27))
+(or x269 (not x290))
+(or x269 (not x284))
+(or x269 (not x289))
+(or x282 x31 x30 x29 (not x28) x27 x290 x284 x289 (not x269))
+(or x291 (not x292) x293)
+(or (not x293) (not x291))
+(or (not x293) x292)
+(or x294 (not x31))
+(or x294 (not x30))
+(or x294 (not x29))
+(or x294 (not x28))
+(or x294 x27)
+(or x294 (not x293))
+(or x31 x30 x29 x28 (not x27) x293 (not x294))
+(or (not x294) (not x269) (not x270) (not x271) (not x272) (not x275) x295)
+(or (not x295) x294)
+(or (not x295) x269)
+(or (not x295) x270)
+(or (not x295) x271)
+(or (not x295) x272)
+(or (not x295) x275)
+(or x280 (not x278))
+(or x280 (not x279))
+(or x278 x279 (not x280))
+(or x296 (not x282))
+(or x296 (not x283))
+(or x296 (not x31))
+(or x296 (not x30))
+(or x296 (not x29))
+(or x296 x28)
+(or x296 x27)
+(or x296 (not x284))
+(or x296 (not x278))
+(or x296 (not x279))
+(or x282 x283 x31 x30 x29 (not x28) (not x27) x284 x278 x279 (not x296))
+(or x288 (not x286))
+(or x288 (not x287))
+(or x286 x287 (not x288))
+(or x297 (not x282))
+(or x297 (not x31))
+(or x297 (not x30))
+(or x297 (not x29))
+(or x297 x28)
+(or x297 (not x27))
+(or x297 (not x290))
+(or x297 (not x284))
+(or x297 (not x286))
+(or x297 (not x287))
+(or x282 x31 x30 x29 (not x28) x27 x290 x284 x286 x287 (not x297))
+(or x298 (not x291))
+(or x298 (not x299))
+(or x298 x300)
+(or x291 x299 (not x300) (not x298))
+(or x291 (not x301) (not x298) (not x292) x302)
+(or (not x302) (not x291))
+(or (not x302) x301)
+(or (not x302) x298)
+(or (not x302) x292)
+(or x268 (not x31))
+(or x268 (not x30))
+(or x268 (not x29))
+(or x268 (not x28))
+(or x268 x27)
+(or x268 (not x302))
+(or x31 x30 x29 x28 (not x27) x302 (not x268))
+(or (not x268) (not x297) (not x296) (not x273) (not x274) (not x275) x303)
+(or (not x303) x268)
+(or (not x303) x297)
+(or (not x303) x296)
+(or (not x303) x273)
+(or (not x303) x274)
+(or (not x303) x275)
+(or x304 (not x282))
+(or x304 (not x283))
+(or x304 (not x305))
+(or x304 (not x306))
+(or x304 (not x307))
+(or x304 (not x308))
+(or x304 (not x31))
+(or x304 x30)
+(or x304 (not x29))
+(or x304 (not x28))
+(or x304 x27)
+(or x304 (not x35))
+(or x304 (not x36))
+(or x304 (not x37))
+(or x304 (not x38))
+(or x304 (not x39))
+(or x304 (not x40))
+(or x304 (not x309))
+(or x304 (not x310))
+(or x304 (not x311))
+(or x282 x283 x305 x306 x307 x308 x31 (not x30) x29 x28 (not x27) x35 x36 x37 x38 x39 x40 x309 x310 x311 (not x304))
+(or x312 (not x282))
+(or x312 (not x283))
+(or x312 (not x305))
+(or x312 (not x306))
+(or x312 (not x307))
+(or x312 (not x31))
+(or x312 x30)
+(or x312 (not x29))
+(or x312 (not x28))
+(or x312 (not x27))
+(or x312 (not x290))
+(or x312 (not x309))
+(or x312 (not x310))
+(or x312 (not x35))
+(or x312 (not x36))
+(or x312 (not x37))
+(or x312 (not x38))
+(or x312 (not x39))
+(or x312 (not x40))
+(or x312 (not x309))
+(or x312 (not x310))
+(or x312 (not x313))
+(or x282 x283 x305 x306 x307 x31 (not x30) x29 x28 x27 x290 x309 x310 x35 x36 x37 x38 x39 x40 x309 x310 x313 (not x312))
+(or x314 (not x282))
+(or x314 (not x283))
+(or x314 (not x305))
+(or x314 (not x306))
+(or x314 (not x31))
+(or x314 (not x30))
+(or x314 x29)
+(or x314 (not x28))
+(or x314 x27)
+(or x314 (not x35))
+(or x314 (not x36))
+(or x314 (not x37))
+(or x314 (not x38))
+(or x314 (not x39))
+(or x314 (not x40))
+(or x314 (not x309))
+(or x314 (not x310))
+(or x314 (not x315))
+(or x282 x283 x305 x306 x31 x30 (not x29) x28 (not x27) x35 x36 x37 x38 x39 x40 x309 x310 x315 (not x314))
+(or x316 (not x282))
+(or x316 (not x283))
+(or x316 (not x305))
+(or x316 (not x31))
+(or x316 (not x30))
+(or x316 x29)
+(or x316 (not x28))
+(or x316 (not x27))
+(or x316 (not x309))
+(or x316 (not x310))
+(or x316 (not x35))
+(or x316 (not x36))
+(or x316 (not x37))
+(or x316 (not x38))
+(or x316 (not x39))
+(or x316 (not x40))
+(or x316 (not x309))
+(or x316 (not x310))
+(or x316 (not x317))
+(or x282 x283 x305 x31 x30 (not x29) x28 x27 x309 x310 x35 x36 x37 x38 x39 x40 x309 x310 x317 (not x316))
+(or x292 (not x291))
+(or x292 (not x299))
+(or x292 (not x300))
+(or x291 x299 x300 (not x292))
+(or (not x301) (not x292) x318)
+(or (not x318) x301)
+(or (not x318) x292)
+(or x319 (not x31))
+(or x319 (not x30))
+(or x319 (not x29))
+(or x319 (not x28))
+(or x319 x27)
+(or x319 (not x318))
+(or x31 x30 x29 x28 (not x27) x318 (not x319))
+(or (not x319) (not x320) (not x321) (not x316) (not x314) (not x312) (not x304) (not x275) x322)
+(or (not x322) x319)
+(or (not x322) x320)
+(or (not x322) x321)
+(or (not x322) x316)
+(or (not x322) x314)
+(or (not x322) x312)
+(or (not x322) x304)
+(or (not x322) x275)
+(or x31 (not x30) x29 x28 (not x27) x35 x36 x37 x38 x39 x40 (not x33) (not x34) x323)
+(or (not x323) (not x31))
+(or (not x323) x30)
+(or (not x323) (not x29))
+(or (not x323) (not x28))
+(or (not x323) x27)
+(or (not x323) (not x35))
+(or (not x323) (not x36))
+(or (not x323) (not x37))
+(or (not x323) (not x38))
+(or (not x323) (not x39))
+(or (not x323) (not x40))
+(or (not x323) x33)
+(or (not x323) x34)
+(or x275 (not x282))
+(or x275 (not x283))
+(or x275 (not x305))
+(or x275 (not x306))
+(or x275 (not x307))
+(or x275 (not x308))
+(or x275 (not x323))
+(or x282 x283 x305 x306 x307 x308 x323 (not x275))
+(or x31 (not x30) x29 x28 x27 (not x32) (not x33) (not x34) x35 x36 x37 x38 x39 x40 (not x33) (not x34) x308)
+(or (not x308) (not x31))
+(or (not x308) x30)
+(or (not x308) (not x29))
+(or (not x308) (not x28))
+(or (not x308) (not x27))
+(or (not x308) x32)
+(or (not x308) x33)
+(or (not x308) x34)
+(or (not x308) (not x35))
+(or (not x308) (not x36))
+(or (not x308) (not x37))
+(or (not x308) (not x38))
+(or (not x308) (not x39))
+(or (not x308) (not x40))
+(or (not x308) x33)
+(or (not x308) x34)
+(or x274 (not x282))
+(or x274 (not x283))
+(or x274 (not x305))
+(or x274 (not x306))
+(or x274 (not x307))
+(or x274 (not x308))
+(or x274 (not x31))
+(or x274 x30)
+(or x274 (not x29))
+(or x274 (not x28))
+(or x274 x27)
+(or x274 (not x35))
+(or x274 (not x36))
+(or x274 (not x37))
+(or x274 (not x38))
+(or x274 (not x39))
+(or x274 (not x40))
+(or x274 (not x309))
+(or x274 (not x310))
+(or x282 x283 x305 x306 x307 x308 x31 (not x30) x29 x28 (not x27) x35 x36 x37 x38 x39 x40 x309 x310 (not x274))
+(or x324 (not x282))
+(or x324 (not x283))
+(or x324 (not x305))
+(or x324 (not x306))
+(or x324 (not x307))
+(or x324 (not x308))
+(or x324 (not x31))
+(or x324 x30)
+(or x324 (not x29))
+(or x324 (not x28))
+(or x324 x27)
+(or x324 (not x35))
+(or x324 (not x36))
+(or x324 (not x37))
+(or x324 (not x38))
+(or x324 (not x39))
+(or x324 (not x40))
+(or x324 (not x309))
+(or x324 (not x310))
+(or x324 x311)
+(or x282 x283 x305 x306 x307 x308 x31 (not x30) x29 x28 (not x27) x35 x36 x37 x38 x39 x40 x309 x310 (not x311) (not x324))
+(or x31 x30 (not x29) x28 (not x27) x35 x36 x37 x38 x39 x40 (not x33) (not x34) x307)
+(or (not x307) (not x31))
+(or (not x307) (not x30))
+(or (not x307) x29)
+(or (not x307) (not x28))
+(or (not x307) x27)
+(or (not x307) (not x35))
+(or (not x307) (not x36))
+(or (not x307) (not x37))
+(or (not x307) (not x38))
+(or (not x307) (not x39))
+(or (not x307) (not x40))
+(or (not x307) x33)
+(or (not x307) x34)
+(or x273 (not x282))
+(or x273 (not x283))
+(or x273 (not x305))
+(or x273 (not x306))
+(or x273 (not x307))
+(or x273 (not x31))
+(or x273 x30)
+(or x273 (not x29))
+(or x273 (not x28))
+(or x273 (not x27))
+(or x273 (not x290))
+(or x273 (not x309))
+(or x273 (not x310))
+(or x273 (not x35))
+(or x273 (not x36))
+(or x273 (not x37))
+(or x273 (not x38))
+(or x273 (not x39))
+(or x273 (not x40))
+(or x273 (not x309))
+(or x273 (not x310))
+(or x282 x283 x305 x306 x307 x31 (not x30) x29 x28 x27 x290 x309 x310 x35 x36 x37 x38 x39 x40 x309 x310 (not x273))
+(or x325 (not x282))
+(or x325 (not x283))
+(or x325 (not x305))
+(or x325 (not x306))
+(or x325 (not x307))
+(or x325 (not x31))
+(or x325 x30)
+(or x325 (not x29))
+(or x325 (not x28))
+(or x325 (not x27))
+(or x325 (not x290))
+(or x325 (not x309))
+(or x325 (not x310))
+(or x325 (not x35))
+(or x325 (not x36))
+(or x325 (not x37))
+(or x325 (not x38))
+(or x325 (not x39))
+(or x325 (not x40))
+(or x325 (not x309))
+(or x325 (not x310))
+(or x325 x313)
+(or x282 x283 x305 x306 x307 x31 (not x30) x29 x28 x27 x290 x309 x310 x35 x36 x37 x38 x39 x40 x309 x310 (not x313) (not x325))
+(or x31 x30 (not x29) x28 x27 (not x33) (not x34) x35 x36 x37 x38 x39 x40 (not x33) (not x34) x306)
+(or (not x306) (not x31))
+(or (not x306) (not x30))
+(or (not x306) x29)
+(or (not x306) (not x28))
+(or (not x306) (not x27))
+(or (not x306) x33)
+(or (not x306) x34)
+(or (not x306) (not x35))
+(or (not x306) (not x36))
+(or (not x306) (not x37))
+(or (not x306) (not x38))
+(or (not x306) (not x39))
+(or (not x306) (not x40))
+(or (not x306) x33)
+(or (not x306) x34)
+(or x272 (not x282))
+(or x272 (not x283))
+(or x272 (not x305))
+(or x272 (not x306))
+(or x272 (not x31))
+(or x272 (not x30))
+(or x272 x29)
+(or x272 (not x28))
+(or x272 x27)
+(or x272 (not x35))
+(or x272 (not x36))
+(or x272 (not x37))
+(or x272 (not x38))
+(or x272 (not x39))
+(or x272 (not x40))
+(or x272 (not x309))
+(or x272 (not x310))
+(or x282 x283 x305 x306 x31 x30 (not x29) x28 (not x27) x35 x36 x37 x38 x39 x40 x309 x310 (not x272))
+(or x326 (not x282))
+(or x326 (not x283))
+(or x326 (not x305))
+(or x326 (not x306))
+(or x326 (not x31))
+(or x326 (not x30))
+(or x326 x29)
+(or x326 (not x28))
+(or x326 x27)
+(or x326 (not x35))
+(or x326 (not x36))
+(or x326 (not x37))
+(or x326 (not x38))
+(or x326 (not x39))
+(or x326 (not x40))
+(or x326 (not x309))
+(or x326 (not x310))
+(or x326 x315)
+(or x282 x283 x305 x306 x31 x30 (not x29) x28 (not x27) x35 x36 x37 x38 x39 x40 x309 x310 (not x315) (not x326))
+(or x31 x30 x29 (not x28) (not x27) (not x41) x305)
+(or (not x305) (not x31))
+(or (not x305) (not x30))
+(or (not x305) (not x29))
+(or (not x305) x28)
+(or (not x305) x27)
+(or (not x305) x41)
+(or x271 (not x282))
+(or x271 (not x283))
+(or x271 (not x305))
+(or x271 (not x31))
+(or x271 (not x30))
+(or x271 x29)
+(or x271 (not x28))
+(or x271 (not x27))
+(or x271 (not x309))
+(or x271 (not x310))
+(or x271 (not x35))
+(or x271 (not x36))
+(or x271 (not x37))
+(or x271 (not x38))
+(or x271 (not x39))
+(or x271 (not x40))
+(or x271 (not x309))
+(or x271 (not x310))
+(or x282 x283 x305 x31 x30 (not x29) x28 x27 x309 x310 x35 x36 x37 x38 x39 x40 x309 x310 (not x271))
+(or x327 (not x282))
+(or x327 (not x283))
+(or x327 (not x305))
+(or x327 (not x31))
+(or x327 (not x30))
+(or x327 x29)
+(or x327 (not x28))
+(or x327 (not x27))
+(or x327 (not x309))
+(or x327 (not x310))
+(or x327 (not x35))
+(or x327 (not x36))
+(or x327 (not x37))
+(or x327 (not x38))
+(or x327 (not x39))
+(or x327 (not x40))
+(or x327 (not x309))
+(or x327 (not x310))
+(or x327 x317)
+(or x282 x283 x305 x31 x30 (not x29) x28 x27 x309 x310 x35 x36 x37 x38 x39 x40 x309 x310 (not x317) (not x327))
+(or x32 x328)
+(or x32 (not x309))
+(or x32 (not x310))
+(or (not x328) x309 x310 (not x32))
+(or x31 x30 x29 (not x28) x27 (not x32) (not x41) x283)
+(or (not x283) (not x31))
+(or (not x283) (not x30))
+(or (not x283) (not x29))
+(or (not x283) x28)
+(or (not x283) (not x27))
+(or (not x283) x32)
+(or (not x283) x41)
+(or x321 (not x282))
+(or x321 (not x283))
+(or x321 (not x31))
+(or x321 (not x30))
+(or x321 (not x29))
+(or x321 x28)
+(or x321 x27)
+(or x321 (not x284))
+(or x321 x278)
+(or x282 x283 x31 x30 x29 (not x28) (not x27) x284 (not x278) (not x321))
+(or (not x328) (not x33) (not x34) x290)
+(or (not x290) x328)
+(or (not x290) x33)
+(or (not x290) x34)
+(or x320 (not x282))
+(or x320 (not x31))
+(or x320 (not x30))
+(or x320 (not x29))
+(or x320 x28)
+(or x320 (not x27))
+(or x320 (not x290))
+(or x320 (not x284))
+(or x320 x286)
+(or x282 x31 x30 x29 (not x28) x27 x290 x284 (not x286) (not x320))
+(or x301 (not x291))
+(or x301 x299)
+(or x291 (not x299) (not x301))
+(or x291 (not x301) x330)
+(or (not x330) (not x291))
+(or (not x330) x301)
+(or x331 (not x31))
+(or x331 (not x30))
+(or x331 (not x29))
+(or x331 (not x28))
+(or x331 x27)
+(or x331 (not x330))
+(or x31 x30 x29 x28 (not x27) x330 (not x331))
+(or (not x331) (not x320) (not x321) (not x327) (not x326) (not x325) (not x324) (not x275) x332)
+(or (not x332) x331)
+(or (not x332) x320)
+(or (not x332) x321)
+(or (not x332) x327)
+(or (not x332) x326)
+(or (not x332) x325)
+(or (not x332) x324)
+(or (not x332) x275)
+(or (not x333) (not x328) (not x34) (not x41) (not x334) (not x335) (not x336) (not x328) x337)
+(or (not x337) x333)
+(or (not x337) x328)
+(or (not x337) x34)
+(or (not x337) x41)
+(or (not x337) x334)
+(or (not x337) x335)
+(or (not x337) x336)
+(or (not x337) x328)
+(or (not x33) (not x336) (not x328) (not x41) (not x338) (not x336) (not x328) x339)
+(or (not x339) x33)
+(or (not x339) x336)
+(or (not x339) x328)
+(or (not x339) x41)
+(or (not x339) x338)
+(or (not x339) x336)
+(or (not x339) x328)
+(or (not x340) (not x341) (not x328) x342)
+(or (not x342) x340)
+(or (not x342) x341)
+(or (not x342) x328)
+(or x343 (not x344))
+(or x343 (not x342))
+(or x344 x342 (not x343))
+(or (not x345) (not x343) x346)
+(or (not x346) x345)
+(or (not x346) x343)
+(or x347 (not x348))
+(or x347 (not x346))
+(or x347 (not x310))
+(or x348 x346 x310 (not x347))
+(or (not x33) (not x34) (not x347) x349)
+(or (not x349) x33)
+(or (not x349) x34)
+(or (not x349) x347)
+(or x350 (not x349))
+(or x350 (not x339))
+(or x350 (not x337))
+(or x349 x339 x337 (not x350))
+(or (not x350) (not x328) x351)
+(or (not x351) x350)
+(or (not x351) x328)
+(or x352 x353)
+(or x352 x328)
+(or x352 (not x354))
+(or x352 (not x355))
+(or x352 (not x356))
+(or x352 (not x357))
+(or (not x353) (not x328) x354 x355 x356 x357 (not x352))
+(or (not x353) (not x328) (not x358) x359)
+(or (not x359) x353)
+(or (not x359) x328)
+(or (not x359) x358)
+(or x360 (not x355))
+(or x360 (not x356))
+(or x360 (not x359))
+(or x355 x356 x359 (not x360))
+(or (not x360) (not x361) (not x362) (not x352) x363)
+(or (not x363) x360)
+(or (not x363) x361)
+(or (not x363) x362)
+(or (not x363) x352)
+(or x335 (not x364))
+(or x335 (not x365))
+(or x335 (not x366))
+(or x335 (not x363))
+(or x364 x365 x366 x363 (not x335))
+(or x334 (not x309))
+(or x334 x336)
+(or x334 x328)
+(or x309 (not x336) (not x328) (not x334))
+(or (not x333) (not x328) (not x34) (not x41) (not x334) (not x335) (not x333) (not x328) x367)
+(or (not x367) x333)
+(or (not x367) x328)
+(or (not x367) x34)
+(or (not x367) x41)
+(or (not x367) x334)
+(or (not x367) x335)
+(or (not x367) x333)
+(or (not x367) x328)
+(or (not x368) (not x358) x355)
+(or (not x355) x368)
+(or (not x355) x358)
+(or x358 x369)
+(or x358 x328)
+(or (not x369) (not x328) (not x358))
+(or x362 (not x370))
+(or x362 x369)
+(or x362 x328)
+(or x362 (not x355))
+(or x370 (not x369) (not x328) x355 (not x362))
+(or x338 (not x370))
+(or x338 x369)
+(or x338 x328)
+(or x338 (not x355))
+(or x338 (not x371))
+(or x370 (not x369) (not x328) x355 x371 (not x338))
+(or (not x338) (not x333) (not x328) x372)
+(or (not x372) x338)
+(or (not x372) x333)
+(or (not x372) x328)
+(or (not x373) (not x328) x366)
+(or (not x366) x373)
+(or (not x366) x328)
+(or (not x374) (not x328) x365)
+(or (not x365) x374)
+(or (not x365) x328)
+(or (not x375) (not x328) x364)
+(or (not x364) x375)
+(or (not x364) x328)
+(or x376 (not x364))
+(or x376 (not x365))
+(or x376 (not x366))
+(or x364 x365 x366 (not x376))
+(or (not x353) (not x328) x370)
+(or (not x370) x353)
+(or (not x370) x328)
+(or x361 (not x370))
+(or x361 (not x354))
+(or x370 x354 (not x361))
+(or (not x369) (not x328) x354)
+(or (not x354) x369)
+(or (not x354) x328)
+(or x368 x353)
+(or x368 x328)
+(or (not x353) (not x328) (not x368))
+(or (not x368) (not x369) (not x328) x356)
+(or (not x356) x368)
+(or (not x356) x369)
+(or (not x356) x328)
+(or (not x368) (not x369) (not x328) (not x361) x371 (not x376) x377)
+(or (not x377) x368)
+(or (not x377) x369)
+(or (not x377) x328)
+(or (not x377) x361)
+(or (not x377) (not x371))
+(or (not x377) x376)
+(or x378 (not x377))
+(or x378 (not x372))
+(or x377 x372 (not x378))
+(or x41 (not x309))
+(or x41 (not x310))
+(or x309 x310 (not x41))
+(or (not x336) (not x328) x310)
+(or (not x310) x336)
+(or (not x310) x328)
+(or (not x33) (not x336) (not x328) (not x41) (not x378) x379)
+(or (not x379) x33)
+(or (not x379) x336)
+(or (not x379) x328)
+(or (not x379) x41)
+(or (not x379) x378)
+(or (not x333) (not x328) x309)
+(or (not x309) x333)
+(or (not x309) x328)
+(or (not x380) (not x328) x344)
+(or (not x344) x380)
+(or (not x344) x328)
+(or x381 (not x344))
+(or x381 x341)
+(or x381 x328)
+(or x344 (not x341) (not x328) (not x381))
+(or x340 x380)
+(or x340 x328)
+(or (not x380) (not x328) (not x340))
+(or (not x340) (not x381) x382)
+(or (not x382) x340)
+(or (not x382) x381)
+(or (not x383) (not x328) x348)
+(or (not x348) x383)
+(or (not x348) x328)
+(or x384 (not x348))
+(or x384 (not x382))
+(or x348 x382 (not x384))
+(or x345 x383)
+(or x345 x328)
+(or (not x383) (not x328) (not x345))
+(or x34 x336)
+(or x34 x328)
+(or (not x336) (not x328) (not x34))
+(or x33 x333)
+(or x33 x328)
+(or (not x333) (not x328) (not x33))
+(or (not x33) (not x34) x284)
+(or (not x284) x33)
+(or (not x284) x34)
+(or (not x33) (not x34) (not x345) (not x384) (not x333) (not x328) x385)
+(or (not x385) x33)
+(or (not x385) x34)
+(or (not x385) x345)
+(or (not x385) x384)
+(or (not x385) x333)
+(or (not x385) x328)
+(or x386 (not x385))
+(or x386 (not x379))
+(or x386 (not x367))
+(or x385 x379 x367 (not x386))
+(or (not x386) (not x328) x387)
+(or (not x387) x386)
+(or (not x387) x328)
+(or x329 x328 x388)
+(or (not x388) (not x329))
+(or (not x388) (not x328))
+(or x389 (not x388))
+(or x389 (not x329))
+(or x389 x328)
+(or x388 x329 (not x328) (not x389))
+(or (not x390) (not x31))
+(or (not x390) x30)
+(or (not x390) (not x29))
+(or (not x390) x28)
+(or (not x390) x27)
+(or (not x391) (not x31))
+(or (not x391) x30)
+(or (not x391) (not x29))
+(or (not x391) x28)
+(or (not x391) (not x27))
+(or (not x392) (not x31))
+(or (not x392) x30)
+(or (not x392) (not x29))
+(or (not x392) (not x28))
+(or (not x392) x27)
+(or (not x393) (not x31))
+(or (not x393) x30)
+(or (not x393) (not x29))
+(or (not x393) (not x28))
+(or (not x393) (not x27))
+(or (not x394) (not x31))
+(or (not x394) (not x30))
+(or (not x394) x29)
+(or (not x394) x28)
+(or (not x394) x27)
+(or (not x395) (not x31))
+(or (not x395) (not x30))
+(or (not x395) x29)
+(or (not x395) x28)
+(or (not x395) (not x27))
+(or (not x396) (not x31))
+(or (not x396) (not x30))
+(or (not x396) x29)
+(or (not x396) (not x28))
+(or (not x396) x27)
+(or (not x397) (not x31))
+(or (not x397) (not x30))
+(or (not x397) x29)
+(or (not x397) (not x28))
+(or (not x397) (not x27))
+(or (not x398) (not x31))
+(or (not x398) (not x30))
+(or (not x398) (not x29))
+(or (not x398) x28)
+(or (not x398) x27)
+(or (not x399) (not x31))
+(or (not x399) (not x30))
+(or (not x399) (not x29))
+(or (not x399) x28)
+(or (not x399) (not x27))
+(or x31 x30 x29 x28 (not x27) x282)
+(or (not x282) (not x31))
+(or (not x282) (not x30))
+(or (not x282) (not x29))
+(or (not x282) (not x28))
+(or (not x282) x27)
+(or (not x400) (not x31))
+(or (not x400) (not x30))
+(or (not x400) (not x29))
+(or (not x400) (not x28))
+(or (not x400) (not x27))
+(or x401 (not x400))
+(or x401 (not x282))
+(or x401 (not x399))
+(or x401 (not x398))
+(or x401 (not x397))
+(or x401 (not x396))
+(or x401 (not x395))
+(or x401 (not x394))
+(or x401 (not x393))
+(or x401 (not x392))
+(or x401 (not x391))
+(or x400 x282 x399 x398 x397 x396 x395 x394 x393 x392 x391 (not x401))
+(or (not x402) (not x403) (not x404) (not x405) (not x406) (not x407) (not x408) (not x409) x410)
+(or (not x410) x402)
+(or (not x410) x403)
+(or (not x410) x404)
+(or (not x410) x405)
+(or (not x410) x406)
+(or (not x410) x407)
+(or (not x410) x408)
+(or (not x410) x409)
+(or x411 (not x412))
+(or x411 x413)
+(or x412 (not x413) (not x411))
+(or x412 (not x411) (not x414) x415)
+(or (not x415) (not x412))
+(or (not x415) x411)
+(or (not x415) x414)
+(or x404 (not x416))
+(or x404 (not x417))
+(or x404 (not x50))
+(or x404 (not x49))
+(or x404 (not x48))
+(or x404 x47)
+(or x404 x46)
+(or x404 (not x418))
+(or x404 (not x415))
+(or x416 x417 x50 x49 x48 (not x47) (not x46) x418 x415 (not x404))
+(or x419 (not x420))
+(or x419 x421)
+(or x420 (not x421) (not x419))
+(or x420 (not x419) (not x422) x423)
+(or (not x423) (not x420))
+(or (not x423) x419)
+(or (not x423) x422)
+(or x403 (not x416))
+(or x403 (not x50))
+(or x403 (not x49))
+(or x403 (not x48))
+(or x403 x47)
+(or x403 (not x46))
+(or x403 (not x424))
+(or x403 (not x418))
+(or x403 (not x423))
+(or x416 x50 x49 x48 (not x47) x46 x424 x418 x423 (not x403))
+(or x425 (not x426) x427)
+(or (not x427) (not x425))
+(or (not x427) x426)
+(or x428 (not x50))
+(or x428 (not x49))
+(or x428 (not x48))
+(or x428 (not x47))
+(or x428 x46)
+(or x428 (not x427))
+(or x50 x49 x48 x47 (not x46) x427 (not x428))
+(or (not x428) (not x403) (not x404) (not x405) (not x406) (not x409) x429)
+(or (not x429) x428)
+(or (not x429) x403)
+(or (not x429) x404)
+(or (not x429) x405)
+(or (not x429) x406)
+(or (not x429) x409)
+(or x414 (not x412))
+(or x414 (not x413))
+(or x412 x413 (not x414))
+(or x430 (not x416))
+(or x430 (not x417))
+(or x430 (not x50))
+(or x430 (not x49))
+(or x430 (not x48))
+(or x430 x47)
+(or x430 x46)
+(or x430 (not x418))
+(or x430 (not x412))
+(or x430 (not x413))
+(or x416 x417 x50 x49 x48 (not x47) (not x46) x418 x412 x413 (not x430))
+(or x422 (not x420))
+(or x422 (not x421))
+(or x420 x421 (not x422))
+(or x431 (not x416))
+(or x431 (not x50))
+(or x431 (not x49))
+(or x431 (not x48))
+(or x431 x47)
+(or x431 (not x46))
+(or x431 (not x424))
+(or x431 (not x418))
+(or x431 (not x420))
+(or x431 (not x421))
+(or x416 x50 x49 x48 (not x47) x46 x424 x418 x420 x421 (not x431))
+(or x432 (not x425))
+(or x432 (not x433))
+(or x432 x434)
+(or x425 x433 (not x434) (not x432))
+(or x425 (not x435) (not x432) (not x426) x436)
+(or (not x436) (not x425))
+(or (not x436) x435)
+(or (not x436) x432)
+(or (not x436) x426)
+(or x402 (not x50))
+(or x402 (not x49))
+(or x402 (not x48))
+(or x402 (not x47))
+(or x402 x46)
+(or x402 (not x436))
+(or x50 x49 x48 x47 (not x46) x436 (not x402))
+(or (not x402) (not x431) (not x430) (not x407) (not x408) (not x409) x437)
+(or (not x437) x402)
+(or (not x437) x431)
+(or (not x437) x430)
+(or (not x437) x407)
+(or (not x437) x408)
+(or (not x437) x409)
+(or x438 (not x416))
+(or x438 (not x417))
+(or x438 (not x439))
+(or x438 (not x440))
+(or x438 (not x441))
+(or x438 (not x442))
+(or x438 (not x50))
+(or x438 x49)
+(or x438 (not x48))
+(or x438 (not x47))
+(or x438 x46)
+(or x438 (not x54))
+(or x438 (not x55))
+(or x438 (not x56))
+(or x438 (not x57))
+(or x438 (not x58))
+(or x438 (not x59))
+(or x438 (not x443))
+(or x438 (not x444))
+(or x438 (not x445))
+(or x416 x417 x439 x440 x441 x442 x50 (not x49) x48 x47 (not x46) x54 x55 x56 x57 x58 x59 x443 x444 x445 (not x438))
+(or x446 (not x416))
+(or x446 (not x417))
+(or x446 (not x439))
+(or x446 (not x440))
+(or x446 (not x441))
+(or x446 (not x50))
+(or x446 x49)
+(or x446 (not x48))
+(or x446 (not x47))
+(or x446 (not x46))
+(or x446 (not x424))
+(or x446 (not x443))
+(or x446 (not x444))
+(or x446 (not x54))
+(or x446 (not x55))
+(or x446 (not x56))
+(or x446 (not x57))
+(or x446 (not x58))
+(or x446 (not x59))
+(or x446 (not x443))
+(or x446 (not x444))
+(or x446 (not x447))
+(or x416 x417 x439 x440 x441 x50 (not x49) x48 x47 x46 x424 x443 x444 x54 x55 x56 x57 x58 x59 x443 x444 x447 (not x446))
+(or x448 (not x416))
+(or x448 (not x417))
+(or x448 (not x439))
+(or x448 (not x440))
+(or x448 (not x50))
+(or x448 (not x49))
+(or x448 x48)
+(or x448 (not x47))
+(or x448 x46)
+(or x448 (not x54))
+(or x448 (not x55))
+(or x448 (not x56))
+(or x448 (not x57))
+(or x448 (not x58))
+(or x448 (not x59))
+(or x448 (not x443))
+(or x448 (not x444))
+(or x448 (not x449))
+(or x416 x417 x439 x440 x50 x49 (not x48) x47 (not x46) x54 x55 x56 x57 x58 x59 x443 x444 x449 (not x448))
+(or x450 (not x416))
+(or x450 (not x417))
+(or x450 (not x439))
+(or x450 (not x50))
+(or x450 (not x49))
+(or x450 x48)
+(or x450 (not x47))
+(or x450 (not x46))
+(or x450 (not x443))
+(or x450 (not x444))
+(or x450 (not x54))
+(or x450 (not x55))
+(or x450 (not x56))
+(or x450 (not x57))
+(or x450 (not x58))
+(or x450 (not x59))
+(or x450 (not x443))
+(or x450 (not x444))
+(or x450 (not x451))
+(or x416 x417 x439 x50 x49 (not x48) x47 x46 x443 x444 x54 x55 x56 x57 x58 x59 x443 x444 x451 (not x450))
+(or x426 (not x425))
+(or x426 (not x433))
+(or x426 (not x434))
+(or x425 x433 x434 (not x426))
+(or (not x435) (not x426) x452)
+(or (not x452) x435)
+(or (not x452) x426)
+(or x453 (not x50))
+(or x453 (not x49))
+(or x453 (not x48))
+(or x453 (not x47))
+(or x453 x46)
+(or x453 (not x452))
+(or x50 x49 x48 x47 (not x46) x452 (not x453))
+(or (not x453) (not x454) (not x455) (not x450) (not x448) (not x446) (not x438) (not x409) x456)
+(or (not x456) x453)
+(or (not x456) x454)
+(or (not x456) x455)
+(or (not x456) x450)
+(or (not x456) x448)
+(or (not x456) x446)
+(or (not x456) x438)
+(or (not x456) x409)
+(or x50 (not x49) x48 x47 (not x46) x54 x55 x56 x57 x58 x59 (not x52) (not x53) x457)
+(or (not x457) (not x50))
+(or (not x457) x49)
+(or (not x457) (not x48))
+(or (not x457) (not x47))
+(or (not x457) x46)
+(or (not x457) (not x54))
+(or (not x457) (not x55))
+(or (not x457) (not x56))
+(or (not x457) (not x57))
+(or (not x457) (not x58))
+(or (not x457) (not x59))
+(or (not x457) x52)
+(or (not x457) x53)
+(or x409 (not x416))
+(or x409 (not x417))
+(or x409 (not x439))
+(or x409 (not x440))
+(or x409 (not x441))
+(or x409 (not x442))
+(or x409 (not x457))
+(or x416 x417 x439 x440 x441 x442 x457 (not x409))
+(or x50 (not x49) x48 x47 x46 (not x51) (not x52) (not x53) x54 x55 x56 x57 x58 x59 (not x52) (not x53) x442)
+(or (not x442) (not x50))
+(or (not x442) x49)
+(or (not x442) (not x48))
+(or (not x442) (not x47))
+(or (not x442) (not x46))
+(or (not x442) x51)
+(or (not x442) x52)
+(or (not x442) x53)
+(or (not x442) (not x54))
+(or (not x442) (not x55))
+(or (not x442) (not x56))
+(or (not x442) (not x57))
+(or (not x442) (not x58))
+(or (not x442) (not x59))
+(or (not x442) x52)
+(or (not x442) x53)
+(or x408 (not x416))
+(or x408 (not x417))
+(or x408 (not x439))
+(or x408 (not x440))
+(or x408 (not x441))
+(or x408 (not x442))
+(or x408 (not x50))
+(or x408 x49)
+(or x408 (not x48))
+(or x408 (not x47))
+(or x408 x46)
+(or x408 (not x54))
+(or x408 (not x55))
+(or x408 (not x56))
+(or x408 (not x57))
+(or x408 (not x58))
+(or x408 (not x59))
+(or x408 (not x443))
+(or x408 (not x444))
+(or x416 x417 x439 x440 x441 x442 x50 (not x49) x48 x47 (not x46) x54 x55 x56 x57 x58 x59 x443 x444 (not x408))
+(or x458 (not x416))
+(or x458 (not x417))
+(or x458 (not x439))
+(or x458 (not x440))
+(or x458 (not x441))
+(or x458 (not x442))
+(or x458 (not x50))
+(or x458 x49)
+(or x458 (not x48))
+(or x458 (not x47))
+(or x458 x46)
+(or x458 (not x54))
+(or x458 (not x55))
+(or x458 (not x56))
+(or x458 (not x57))
+(or x458 (not x58))
+(or x458 (not x59))
+(or x458 (not x443))
+(or x458 (not x444))
+(or x458 x445)
+(or x416 x417 x439 x440 x441 x442 x50 (not x49) x48 x47 (not x46) x54 x55 x56 x57 x58 x59 x443 x444 (not x445) (not x458))
+(or x50 x49 (not x48) x47 (not x46) x54 x55 x56 x57 x58 x59 (not x52) (not x53) x441)
+(or (not x441) (not x50))
+(or (not x441) (not x49))
+(or (not x441) x48)
+(or (not x441) (not x47))
+(or (not x441) x46)
+(or (not x441) (not x54))
+(or (not x441) (not x55))
+(or (not x441) (not x56))
+(or (not x441) (not x57))
+(or (not x441) (not x58))
+(or (not x441) (not x59))
+(or (not x441) x52)
+(or (not x441) x53)
+(or x407 (not x416))
+(or x407 (not x417))
+(or x407 (not x439))
+(or x407 (not x440))
+(or x407 (not x441))
+(or x407 (not x50))
+(or x407 x49)
+(or x407 (not x48))
+(or x407 (not x47))
+(or x407 (not x46))
+(or x407 (not x424))
+(or x407 (not x443))
+(or x407 (not x444))
+(or x407 (not x54))
+(or x407 (not x55))
+(or x407 (not x56))
+(or x407 (not x57))
+(or x407 (not x58))
+(or x407 (not x59))
+(or x407 (not x443))
+(or x407 (not x444))
+(or x416 x417 x439 x440 x441 x50 (not x49) x48 x47 x46 x424 x443 x444 x54 x55 x56 x57 x58 x59 x443 x444 (not x407))
+(or x459 (not x416))
+(or x459 (not x417))
+(or x459 (not x439))
+(or x459 (not x440))
+(or x459 (not x441))
+(or x459 (not x50))
+(or x459 x49)
+(or x459 (not x48))
+(or x459 (not x47))
+(or x459 (not x46))
+(or x459 (not x424))
+(or x459 (not x443))
+(or x459 (not x444))
+(or x459 (not x54))
+(or x459 (not x55))
+(or x459 (not x56))
+(or x459 (not x57))
+(or x459 (not x58))
+(or x459 (not x59))
+(or x459 (not x443))
+(or x459 (not x444))
+(or x459 x447)
+(or x416 x417 x439 x440 x441 x50 (not x49) x48 x47 x46 x424 x443 x444 x54 x55 x56 x57 x58 x59 x443 x444 (not x447) (not x459))
+(or x50 x49 (not x48) x47 x46 (not x52) (not x53) x54 x55 x56 x57 x58 x59 (not x52) (not x53) x440)
+(or (not x440) (not x50))
+(or (not x440) (not x49))
+(or (not x440) x48)
+(or (not x440) (not x47))
+(or (not x440) (not x46))
+(or (not x440) x52)
+(or (not x440) x53)
+(or (not x440) (not x54))
+(or (not x440) (not x55))
+(or (not x440) (not x56))
+(or (not x440) (not x57))
+(or (not x440) (not x58))
+(or (not x440) (not x59))
+(or (not x440) x52)
+(or (not x440) x53)
+(or x406 (not x416))
+(or x406 (not x417))
+(or x406 (not x439))
+(or x406 (not x440))
+(or x406 (not x50))
+(or x406 (not x49))
+(or x406 x48)
+(or x406 (not x47))
+(or x406 x46)
+(or x406 (not x54))
+(or x406 (not x55))
+(or x406 (not x56))
+(or x406 (not x57))
+(or x406 (not x58))
+(or x406 (not x59))
+(or x406 (not x443))
+(or x406 (not x444))
+(or x416 x417 x439 x440 x50 x49 (not x48) x47 (not x46) x54 x55 x56 x57 x58 x59 x443 x444 (not x406))
+(or x460 (not x416))
+(or x460 (not x417))
+(or x460 (not x439))
+(or x460 (not x440))
+(or x460 (not x50))
+(or x460 (not x49))
+(or x460 x48)
+(or x460 (not x47))
+(or x460 x46)
+(or x460 (not x54))
+(or x460 (not x55))
+(or x460 (not x56))
+(or x460 (not x57))
+(or x460 (not x58))
+(or x460 (not x59))
+(or x460 (not x443))
+(or x460 (not x444))
+(or x460 x449)
+(or x416 x417 x439 x440 x50 x49 (not x48) x47 (not x46) x54 x55 x56 x57 x58 x59 x443 x444 (not x449) (not x460))
+(or x50 x49 x48 (not x47) (not x46) (not x60) x439)
+(or (not x439) (not x50))
+(or (not x439) (not x49))
+(or (not x439) (not x48))
+(or (not x439) x47)
+(or (not x439) x46)
+(or (not x439) x60)
+(or x405 (not x416))
+(or x405 (not x417))
+(or x405 (not x439))
+(or x405 (not x50))
+(or x405 (not x49))
+(or x405 x48)
+(or x405 (not x47))
+(or x405 (not x46))
+(or x405 (not x443))
+(or x405 (not x444))
+(or x405 (not x54))
+(or x405 (not x55))
+(or x405 (not x56))
+(or x405 (not x57))
+(or x405 (not x58))
+(or x405 (not x59))
+(or x405 (not x443))
+(or x405 (not x444))
+(or x416 x417 x439 x50 x49 (not x48) x47 x46 x443 x444 x54 x55 x56 x57 x58 x59 x443 x444 (not x405))
+(or x461 (not x416))
+(or x461 (not x417))
+(or x461 (not x439))
+(or x461 (not x50))
+(or x461 (not x49))
+(or x461 x48)
+(or x461 (not x47))
+(or x461 (not x46))
+(or x461 (not x443))
+(or x461 (not x444))
+(or x461 (not x54))
+(or x461 (not x55))
+(or x461 (not x56))
+(or x461 (not x57))
+(or x461 (not x58))
+(or x461 (not x59))
+(or x461 (not x443))
+(or x461 (not x444))
+(or x461 x451)
+(or x416 x417 x439 x50 x49 (not x48) x47 x46 x443 x444 x54 x55 x56 x57 x58 x59 x443 x444 (not x451) (not x461))
+(or x51 x462)
+(or x51 (not x443))
+(or x51 (not x444))
+(or (not x462) x443 x444 (not x51))
+(or x50 x49 x48 (not x47) x46 (not x51) (not x60) x417)
+(or (not x417) (not x50))
+(or (not x417) (not x49))
+(or (not x417) (not x48))
+(or (not x417) x47)
+(or (not x417) (not x46))
+(or (not x417) x51)
+(or (not x417) x60)
+(or x455 (not x416))
+(or x455 (not x417))
+(or x455 (not x50))
+(or x455 (not x49))
+(or x455 (not x48))
+(or x455 x47)
+(or x455 x46)
+(or x455 (not x418))
+(or x455 x412)
+(or x416 x417 x50 x49 x48 (not x47) (not x46) x418 (not x412) (not x455))
+(or (not x462) (not x52) (not x53) x424)
+(or (not x424) x462)
+(or (not x424) x52)
+(or (not x424) x53)
+(or x454 (not x416))
+(or x454 (not x50))
+(or x454 (not x49))
+(or x454 (not x48))
+(or x454 x47)
+(or x454 (not x46))
+(or x454 (not x424))
+(or x454 (not x418))
+(or x454 x420)
+(or x416 x50 x49 x48 (not x47) x46 x424 x418 (not x420) (not x454))
+(or x435 (not x425))
+(or x435 x433)
+(or x425 (not x433) (not x435))
+(or x425 (not x435) x464)
+(or (not x464) (not x425))
+(or (not x464) x435)
+(or x465 (not x50))
+(or x465 (not x49))
+(or x465 (not x48))
+(or x465 (not x47))
+(or x465 x46)
+(or x465 (not x464))
+(or x50 x49 x48 x47 (not x46) x464 (not x465))
+(or (not x465) (not x454) (not x455) (not x461) (not x460) (not x459) (not x458) (not x409) x466)
+(or (not x466) x465)
+(or (not x466) x454)
+(or (not x466) x455)
+(or (not x466) x461)
+(or (not x466) x460)
+(or (not x466) x459)
+(or (not x466) x458)
+(or (not x466) x409)
+(or (not x467) (not x468) (not x469) (not x462) x470)
+(or (not x470) x467)
+(or (not x470) x468)
+(or (not x470) x469)
+(or (not x470) x462)
+(or (not x471) (not x472) x473)
+(or (not x473) x471)
+(or (not x473) x472)
+(or x474 (not x473))
+(or x474 (not x470))
+(or x473 x470 (not x474))
+(or (not x475) (not x474) x476)
+(or (not x476) x475)
+(or (not x476) x474)
+(or (not x471) (not x469) (not x462) x477)
+(or (not x477) x471)
+(or (not x477) x469)
+(or (not x477) x462)
+(or (not x467) (not x468) (not x472) x478)
+(or (not x478) x467)
+(or (not x478) x468)
+(or (not x478) x472)
+(or x479 (not x478))
+(or x479 (not x477))
+(or x478 x477 (not x479))
+(or (not x480) (not x462) (not x479) x481)
+(or (not x481) x480)
+(or (not x481) x462)
+(or (not x481) x479)
+(or x482 (not x481))
+(or x482 (not x476))
+(or x481 x476 (not x482))
+(or (not x482) (not x462) x483)
+(or (not x483) x482)
+(or (not x483) x462)
+(or (not x484) (not x462) (not x485) (not x486) (not x487) (not x488) (not x489) (not x462) x490)
+(or (not x490) x484)
+(or (not x490) x462)
+(or (not x490) x485)
+(or (not x490) x486)
+(or (not x490) x487)
+(or (not x490) x488)
+(or (not x490) x489)
+(or (not x490) x462)
+(or (not x491) (not x489) (not x462) (not x486) (not x492) (not x493) (not x489) (not x462) x494)
+(or (not x494) x491)
+(or (not x494) x489)
+(or (not x494) x462)
+(or (not x494) x486)
+(or (not x494) x492)
+(or (not x494) x493)
+(or (not x494) x489)
+(or (not x494) x462)
+(or (not x495) (not x462) (not x60) x496)
+(or (not x496) x495)
+(or (not x496) x462)
+(or (not x496) x60)
+(or x497 (not x496))
+(or x497 (not x498))
+(or x496 x498 (not x497))
+(or (not x491) (not x485) (not x497) x499)
+(or (not x499) x491)
+(or (not x499) x485)
+(or (not x499) x497)
+(or (not x486) (not x487) (not x500) (not x489) (not x462) x501)
+(or (not x501) x486)
+(or (not x501) x487)
+(or (not x501) x500)
+(or (not x501) x489)
+(or (not x501) x462)
+(or x502 (not x501))
+(or x502 (not x499))
+(or x502 (not x494))
+(or x502 (not x490))
+(or x501 x499 x494 x490 (not x502))
+(or (not x502) (not x462) x503)
+(or (not x503) x502)
+(or (not x503) x462)
+(or x488 (not x504))
+(or x488 x462)
+(or x488 (not x505))
+(or x504 (not x462) x505 (not x488))
+(or (not x484) (not x462) (not x485) (not x486) (not x487) (not x488) (not x484) (not x462) x506)
+(or (not x506) x484)
+(or (not x506) x462)
+(or (not x506) x485)
+(or (not x506) x486)
+(or (not x506) x487)
+(or (not x506) x488)
+(or (not x506) x484)
+(or (not x506) x462)
+(or x493 x492)
+(or x493 (not x507))
+(or (not x492) x507 (not x493))
+(or (not x492) (not x493) (not x484) (not x462) x508)
+(or (not x508) x492)
+(or (not x508) x493)
+(or (not x508) x484)
+(or (not x508) x462)
+(or (not x492) x507 x509)
+(or (not x509) x492)
+(or (not x509) (not x507))
+(or x510 x492)
+(or x510 (not x509))
+(or (not x492) x509 (not x510))
+(or (not x510) x492 x511)
+(or (not x511) x510)
+(or (not x511) (not x492))
+(or x512 (not x511))
+(or x512 (not x508))
+(or x511 x508 (not x512))
+(or (not x491) (not x489) (not x462) (not x486) (not x512) x513)
+(or (not x513) x491)
+(or (not x513) x489)
+(or (not x513) x462)
+(or (not x513) x486)
+(or (not x513) x512)
+(or x514 x495)
+(or x514 x462)
+(or x514 (not x418))
+(or (not x495) (not x462) x418 (not x514))
+(or (not x491) (not x485) (not x514) (not x484) (not x462) x515)
+(or (not x515) x491)
+(or (not x515) x485)
+(or (not x515) x514)
+(or (not x515) x484)
+(or (not x515) x462)
+(or (not x486) (not x487) (not x500) (not x484) (not x462) x516)
+(or (not x516) x486)
+(or (not x516) x487)
+(or (not x516) x500)
+(or (not x516) x484)
+(or (not x516) x462)
+(or x517 (not x516))
+(or x517 (not x515))
+(or x517 (not x513))
+(or x517 (not x506))
+(or x516 x515 x513 x506 (not x517))
+(or (not x517) (not x462) x518)
+(or (not x518) x517)
+(or (not x518) x462)
+(or (not x467) (not x468) (not x519) (not x462) x520)
+(or (not x520) x467)
+(or (not x520) x468)
+(or (not x520) x519)
+(or (not x520) x462)
+(or (not x471) (not x521) x522)
+(or (not x522) x471)
+(or (not x522) x521)
+(or x523 (not x522))
+(or x523 (not x520))
+(or x522 x520 (not x523))
+(or (not x475) (not x523) x524)
+(or (not x524) x475)
+(or (not x524) x523)
+(or (not x471) (not x519) (not x462) x525)
+(or (not x525) x471)
+(or (not x525) x519)
+(or (not x525) x462)
+(or x526 x527 x472)
+(or x526 (not x527) (not x472))
+(or (not x526) x527 (not x472))
+(or (not x526) (not x527) x472)
+(or (not x467) (not x468) (not x526) x528)
+(or (not x528) x467)
+(or (not x528) x468)
+(or (not x528) x526)
+(or x529 (not x528))
+(or x529 (not x525))
+(or x528 x525 (not x529))
+(or (not x480) (not x462) (not x529) x530)
+(or (not x530) x480)
+(or (not x530) x462)
+(or (not x530) x529)
+(or x531 (not x530))
+(or x531 (not x524))
+(or x530 x524 (not x531))
+(or (not x531) (not x462) x532)
+(or (not x532) x531)
+(or (not x532) x462)
+(or (not x467) (not x468) (not x533) (not x462) x534)
+(or (not x534) x467)
+(or (not x534) x468)
+(or (not x534) x533)
+(or (not x534) x462)
+(or (not x471) (not x535) x536)
+(or (not x536) x471)
+(or (not x536) x535)
+(or x537 (not x536))
+(or x537 (not x534))
+(or x536 x534 (not x537))
+(or x475 x480)
+(or x475 x462)
+(or (not x480) (not x462) (not x475))
+(or (not x475) (not x537) x538)
+(or (not x538) x475)
+(or (not x538) x537)
+(or (not x539) (not x462) (not x53) (not x60) (not x540) (not x541) x542)
+(or (not x542) x539)
+(or (not x542) x462)
+(or (not x542) x53)
+(or (not x542) x60)
+(or (not x542) x540)
+(or (not x542) x541)
+(or (not x52) (not x543) (not x462) (not x60) (not x491) (not x489) (not x462) (not x486) x492 x544)
+(or (not x544) x52)
+(or (not x544) x543)
+(or (not x544) x462)
+(or (not x544) x60)
+(or (not x544) x491)
+(or (not x544) x489)
+(or (not x544) x462)
+(or (not x544) x486)
+(or (not x544) (not x492))
+(or x471 (not x544))
+(or x471 (not x542))
+(or x544 x542 (not x471))
+(or (not x471) (not x533) (not x462) x545)
+(or (not x545) x471)
+(or (not x545) x533)
+(or (not x545) x462)
+(or x546 x547 x548)
+(or x546 (not x547) (not x548))
+(or (not x546) x547 (not x548))
+(or (not x546) (not x547) x548)
+(or x468 x539)
+(or x468 x462)
+(or x468 (not x444))
+(or x468 (not x418))
+(or x468 (not x549))
+(or x468 (not x550))
+(or (not x539) (not x462) x444 x418 x549 x550 (not x468))
+(or x467 (not x443))
+(or x467 x543)
+(or x467 x462)
+(or x467 (not x418))
+(or x467 (not x551))
+(or x467 x489)
+(or x467 x462)
+(or x467 (not x552))
+(or x467 (not x492))
+(or x443 (not x543) (not x462) x418 x551 (not x489) (not x462) x552 x492 (not x467))
+(or (not x467) (not x468) (not x546) x553)
+(or (not x553) x467)
+(or (not x553) x468)
+(or (not x553) x546)
+(or x554 (not x553))
+(or x554 (not x545))
+(or x553 x545 (not x554))
+(or (not x480) (not x462) (not x554) x555)
+(or (not x555) x480)
+(or (not x555) x462)
+(or (not x555) x554)
+(or x556 (not x555))
+(or x556 (not x538))
+(or x555 x538 (not x556))
+(or (not x556) (not x462) x557)
+(or (not x557) x556)
+(or (not x557) x462)
+(or (not x558) (not x559) (not x462) x560)
+(or (not x560) x558)
+(or (not x560) x559)
+(or (not x560) x462)
+(or (not x561) (not x541) (not x562) x563)
+(or (not x563) x561)
+(or (not x563) x541)
+(or (not x563) x562)
+(or x564 (not x563))
+(or x564 (not x560))
+(or x563 x560 (not x564))
+(or (not x539) (not x462) (not x53) (not x60) (not x540) (not x564) x565)
+(or (not x565) x539)
+(or (not x565) x462)
+(or (not x565) x53)
+(or (not x565) x60)
+(or (not x565) x540)
+(or (not x565) x564)
+(or (not x566) (not x491) (not x489) (not x462) (not x486) x492 (not x559) (not x462) x567)
+(or (not x567) x566)
+(or (not x567) x491)
+(or (not x567) x489)
+(or (not x567) x462)
+(or (not x567) x486)
+(or (not x567) (not x492))
+(or (not x567) x559)
+(or (not x567) x462)
+(or x568 (not x527))
+(or x568 (not x569))
+(or x568 (not x570))
+(or x527 x569 x570 (not x568))
+(or x535 x547 x568)
+(or x535 (not x547) (not x568))
+(or (not x535) x547 (not x568))
+(or (not x535) (not x547) x568)
+(or (not x571) (not x535) x572)
+(or (not x572) x571)
+(or (not x572) x535)
+(or x573 (not x574))
+(or x573 (not x572))
+(or x574 x572 (not x573))
+(or (not x575) (not x573) x576)
+(or (not x576) x575)
+(or (not x576) x573)
+(or (not x577) (not x462) (not x578) (not x462) x579)
+(or (not x579) x577)
+(or (not x579) x462)
+(or (not x579) x578)
+(or (not x579) x462)
+(or x580 (not x581))
+(or x580 (not x579))
+(or x580 (not x582))
+(or x581 x579 x582 (not x580))
+(or x562 x583 x580)
+(or x562 (not x583) (not x580))
+(or (not x562) x583 (not x580))
+(or (not x562) (not x583) x580)
+(or (not x491) (not x489) (not x462) (not x486) x492 (not x584) (not x562) x585)
+(or (not x585) x491)
+(or (not x585) x489)
+(or (not x585) x462)
+(or (not x585) x486)
+(or (not x585) (not x492))
+(or (not x585) x584)
+(or (not x585) x562)
+(or x586 (not x585))
+(or x586 (not x576))
+(or x585 x576 (not x586))
+(or (not x587) (not x586) x588)
+(or (not x588) x587)
+(or (not x588) x586)
+(or x589 (not x588))
+(or x589 (not x567))
+(or x588 x567 (not x589))
+(or (not x52) (not x543) (not x462) (not x60) (not x589) x590)
+(or (not x590) x52)
+(or (not x590) x543)
+(or (not x590) x462)
+(or (not x590) x60)
+(or (not x590) x589)
+(or (not x52) (not x53) (not x559) (not x462) x591)
+(or (not x591) x52)
+(or (not x591) x53)
+(or (not x591) x559)
+(or (not x591) x462)
+(or x592 (not x591))
+(or x592 (not x590))
+(or x592 (not x565))
+(or x591 x590 x565 (not x592))
+(or (not x592) (not x462) x593)
+(or (not x593) x592)
+(or (not x593) x462)
+(or (not x558) (not x577) (not x462) x594)
+(or (not x594) x558)
+(or (not x594) x577)
+(or (not x594) x462)
+(or (not x561) (not x541) (not x595) x596)
+(or (not x596) x561)
+(or (not x596) x541)
+(or (not x596) x595)
+(or x597 (not x596))
+(or x597 (not x594))
+(or x596 x594 (not x597))
+(or (not x539) (not x462) (not x53) (not x60) (not x540) (not x597) x598)
+(or (not x598) x539)
+(or (not x598) x462)
+(or (not x598) x53)
+(or (not x598) x60)
+(or (not x598) x540)
+(or (not x598) x597)
+(or (not x566) (not x491) (not x489) (not x462) (not x486) x492 (not x577) (not x462) x599)
+(or (not x599) x566)
+(or (not x599) x491)
+(or (not x599) x489)
+(or (not x599) x462)
+(or (not x599) x486)
+(or (not x599) (not x492))
+(or (not x599) x577)
+(or (not x599) x462)
+(or x521 x527 x570)
+(or x521 (not x527) (not x570))
+(or (not x521) x527 (not x570))
+(or (not x521) (not x527) x570)
+(or (not x571) (not x521) x600)
+(or (not x600) x571)
+(or (not x600) x521)
+(or x601 (not x574))
+(or x601 (not x600))
+(or x574 x600 (not x601))
+(or (not x575) (not x601) x602)
+(or (not x602) x575)
+(or (not x602) x601)
+(or x595 x581 x582)
+(or x595 (not x581) (not x582))
+(or (not x595) x581 (not x582))
+(or (not x595) (not x581) x582)
+(or (not x491) (not x489) (not x462) (not x486) x492 (not x584) (not x595) x603)
+(or (not x603) x491)
+(or (not x603) x489)
+(or (not x603) x462)
+(or (not x603) x486)
+(or (not x603) (not x492))
+(or (not x603) x584)
+(or (not x603) x595)
+(or x604 (not x603))
+(or x604 (not x602))
+(or x603 x602 (not x604))
+(or (not x587) (not x604) x605)
+(or (not x605) x587)
+(or (not x605) x604)
+(or x606 (not x605))
+(or x606 (not x599))
+(or x605 x599 (not x606))
+(or (not x52) (not x543) (not x462) (not x60) (not x606) x607)
+(or (not x607) x52)
+(or (not x607) x543)
+(or (not x607) x462)
+(or (not x607) x60)
+(or (not x607) x606)
+(or (not x52) (not x53) (not x577) (not x462) x608)
+(or (not x608) x52)
+(or (not x608) x53)
+(or (not x608) x577)
+(or (not x608) x462)
+(or x609 (not x608))
+(or x609 (not x607))
+(or x609 (not x598))
+(or x608 x607 x598 (not x609))
+(or (not x609) (not x462) x610)
+(or (not x610) x609)
+(or (not x610) x462)
+(or (not x611) (not x612) (not x613) (not x541) x614)
+(or (not x614) x611)
+(or (not x614) x612)
+(or (not x614) x613)
+(or (not x614) x541)
+(or x558 (not x614))
+(or x558 (not x550))
+(or x614 x550 (not x558))
+(or (not x558) (not x578) (not x462) x615)
+(or (not x615) x558)
+(or (not x615) x578)
+(or (not x615) x462)
+(or (not x484) (not x462) (not x485) (not x486) (not x487) x505 x616)
+(or (not x616) x484)
+(or (not x616) x462)
+(or (not x616) x485)
+(or (not x616) x486)
+(or (not x616) x487)
+(or (not x616) (not x505))
+(or (not x486) (not x487) (not x500) x617)
+(or (not x617) x486)
+(or (not x617) x487)
+(or (not x617) x500)
+(or x541 (not x617))
+(or x541 (not x552))
+(or x541 (not x618))
+(or x541 (not x616))
+(or x617 x552 x618 x616 (not x541))
+(or (not x561) (not x541) (not x611) x619)
+(or (not x619) x561)
+(or (not x619) x541)
+(or (not x619) x611)
+(or x620 (not x619))
+(or x620 (not x615))
+(or x619 x615 (not x620))
+(or (not x539) (not x462) (not x53) (not x60) (not x540) (not x620) x621)
+(or (not x621) x539)
+(or (not x621) x462)
+(or (not x621) x53)
+(or (not x621) x60)
+(or (not x621) x540)
+(or (not x621) x620)
+(or x613 x559)
+(or x613 x462)
+(or (not x559) (not x462) (not x613))
+(or x612 x577)
+(or x612 x462)
+(or (not x577) (not x462) (not x612))
+(or (not x611) (not x612) (not x613) x622)
+(or (not x622) x611)
+(or (not x622) x612)
+(or (not x622) x613)
+(or x566 (not x551))
+(or x566 x489)
+(or x566 x462)
+(or x566 (not x552))
+(or x566 (not x492))
+(or x566 (not x622))
+(or x551 (not x489) (not x462) x552 x492 x622 (not x566))
+(or (not x566) (not x491) (not x489) (not x462) (not x486) x492 (not x578) (not x462) x623)
+(or (not x623) x566)
+(or (not x623) x491)
+(or (not x623) x489)
+(or (not x623) x462)
+(or (not x623) x486)
+(or (not x623) (not x492))
+(or (not x623) x578)
+(or (not x623) x462)
+(or x548 x519)
+(or x548 x462)
+(or x548 x469)
+(or x548 x462)
+(or (not x519) (not x462) (not x469) (not x462) (not x548))
+(or x571 x533)
+(or x571 x462)
+(or x571 x519)
+(or x571 x462)
+(or x571 x469)
+(or x571 x462)
+(or (not x533) (not x462) (not x519) (not x462) (not x469) (not x462) (not x571))
+(or (not x571) (not x472) x624)
+(or (not x624) x571)
+(or (not x624) x472)
+(or (not x519) (not x462) (not x469) (not x462) x569)
+(or (not x569) x519)
+(or (not x569) x462)
+(or (not x569) x469)
+(or (not x569) x462)
+(or (not x533) (not x462) (not x519) (not x462) (not x469) (not x462) x574)
+(or (not x574) x533)
+(or (not x574) x462)
+(or (not x574) x519)
+(or (not x574) x462)
+(or (not x574) x469)
+(or (not x574) x462)
+(or x625 (not x574))
+(or x625 (not x624))
+(or x574 x624 (not x625))
+(or (not x575) (not x625) x626)
+(or (not x626) x575)
+(or (not x626) x625)
+(or x611 x578)
+(or x611 x462)
+(or (not x578) (not x462) (not x611))
+(or (not x491) (not x489) (not x462) (not x486) x492 (not x584) (not x611) x627)
+(or (not x627) x491)
+(or (not x627) x489)
+(or (not x627) x462)
+(or (not x627) x486)
+(or (not x627) (not x492))
+(or (not x627) x584)
+(or (not x627) x611)
+(or x628 (not x627))
+(or x628 (not x626))
+(or x627 x626 (not x628))
+(or x587 (not x629))
+(or x587 (not x551))
+(or x587 x489)
+(or x587 x462)
+(or x587 (not x552))
+(or x587 (not x492))
+(or x629 x551 (not x489) (not x462) x552 x492 (not x587))
+(or (not x587) (not x628) x630)
+(or (not x630) x587)
+(or (not x630) x628)
+(or x631 (not x630))
+(or x631 (not x623))
+(or x630 x623 (not x631))
+(or (not x52) (not x543) (not x462) (not x60) (not x631) x632)
+(or (not x632) x52)
+(or (not x632) x543)
+(or (not x632) x462)
+(or (not x632) x60)
+(or (not x632) x631)
+(or (not x52) (not x53) (not x578) (not x462) x633)
+(or (not x633) x52)
+(or (not x633) x53)
+(or (not x633) x578)
+(or (not x633) x462)
+(or x634 (not x633))
+(or x634 (not x632))
+(or x634 (not x621))
+(or x633 x632 x621 (not x634))
+(or (not x634) (not x462) x635)
+(or (not x635) x634)
+(or (not x635) x462)
+(or (not x539) (not x462) (not x53) (not x60) (not x540) (not x561) (not x543) (not x462) x636)
+(or (not x636) x539)
+(or (not x636) x462)
+(or (not x636) x53)
+(or (not x636) x60)
+(or (not x636) x540)
+(or (not x636) x561)
+(or (not x636) x543)
+(or (not x636) x462)
+(or (not x52) (not x543) (not x462) (not x60) (not x575) (not x543) (not x462) x637)
+(or (not x637) x52)
+(or (not x637) x543)
+(or (not x637) x462)
+(or (not x637) x60)
+(or (not x637) x575)
+(or (not x637) x543)
+(or (not x637) x462)
+(or (not x469) (not x462) x570)
+(or (not x570) x469)
+(or (not x570) x462)
+(or (not x638) (not x469) (not x462) x639)
+(or (not x639) x638)
+(or (not x639) x469)
+(or (not x639) x462)
+(or x640 (not x527))
+(or x640 (not x639))
+(or x527 x639 (not x640))
+(or (not x641) (not x640) x642)
+(or (not x642) x641)
+(or (not x642) x640)
+(or x643 (not x547))
+(or x643 (not x642))
+(or x643 (not x444))
+(or x547 x642 x444 (not x643))
+(or (not x52) (not x53) (not x643) x644)
+(or (not x644) x52)
+(or (not x644) x53)
+(or (not x644) x643)
+(or x645 (not x644))
+(or x645 (not x637))
+(or x645 (not x636))
+(or x644 x637 x636 (not x645))
+(or (not x645) (not x462) x646)
+(or (not x646) x645)
+(or (not x646) x462)
+(or x500 x484)
+(or x500 x462)
+(or x500 (not x498))
+(or (not x484) (not x462) x498 (not x500))
+(or x647 x484)
+(or x647 x462)
+(or x647 (not x498))
+(or x647 (not x552))
+(or x647 (not x648))
+(or x647 (not x505))
+(or (not x484) (not x462) x498 x552 x648 x505 (not x647))
+(or (not x484) (not x462) (not x485) x649)
+(or (not x649) x484)
+(or (not x649) x462)
+(or (not x649) x485)
+(or x650 (not x552))
+(or x650 (not x648))
+(or x650 (not x649))
+(or x552 x648 x649 (not x650))
+(or (not x650) (not x486) (not x651) (not x647) x550)
+(or (not x550) x650)
+(or (not x550) x486)
+(or (not x550) x651)
+(or (not x550) x647)
+(or x561 (not x582))
+(or x561 (not x581))
+(or x561 (not x583))
+(or x561 (not x550))
+(or x582 x581 x583 x550 (not x561))
+(or x540 (not x443))
+(or x540 x543)
+(or x540 x462)
+(or x443 (not x543) (not x462) (not x540))
+(or (not x539) (not x462) (not x53) (not x60) (not x540) (not x561) (not x539) (not x462) x652)
+(or (not x652) x539)
+(or (not x652) x462)
+(or (not x652) x53)
+(or (not x652) x60)
+(or (not x652) x540)
+(or (not x652) x561)
+(or (not x652) x539)
+(or (not x652) x462)
+(or (not x491) (not x485) x552)
+(or (not x552) x491)
+(or (not x552) x485)
+(or x485 x489)
+(or x485 x462)
+(or (not x489) (not x462) (not x485))
+(or x487 (not x551))
+(or x487 x489)
+(or x487 x462)
+(or x551 (not x489) (not x462) (not x487))
+(or x651 (not x551))
+(or x651 x489)
+(or x651 x462)
+(or x651 (not x552))
+(or x551 (not x489) (not x462) x552 (not x651))
+(or x575 (not x551))
+(or x575 x489)
+(or x575 x462)
+(or x575 (not x552))
+(or x575 (not x492))
+(or x551 (not x489) (not x462) x552 x492 (not x575))
+(or (not x575) (not x539) (not x462) x653)
+(or (not x653) x575)
+(or (not x653) x539)
+(or (not x653) x462)
+(or (not x559) (not x462) x583)
+(or (not x583) x559)
+(or (not x583) x462)
+(or (not x577) (not x462) x581)
+(or (not x581) x577)
+(or (not x581) x462)
+(or (not x578) (not x462) x582)
+(or (not x582) x578)
+(or (not x582) x462)
+(or x584 (not x582))
+(or x584 (not x581))
+(or x584 (not x583))
+(or x582 x581 x583 (not x584))
+(or (not x484) (not x462) x551)
+(or (not x551) x484)
+(or (not x551) x462)
+(or x486 (not x551))
+(or x486 (not x498))
+(or x551 x498 (not x486))
+(or (not x489) (not x462) x498)
+(or (not x498) x489)
+(or (not x498) x462)
+(or x491 x484)
+(or x491 x462)
+(or (not x484) (not x462) (not x491))
+(or (not x491) (not x489) (not x462) x648)
+(or (not x648) x491)
+(or (not x648) x489)
+(or (not x648) x462)
+(or (not x491) (not x489) (not x462) (not x486) x618)
+(or (not x618) x491)
+(or (not x618) x489)
+(or (not x618) x462)
+(or (not x618) x486)
+(or (not x491) (not x489) (not x462) (not x486) x492 (not x584) x629)
+(or (not x629) x491)
+(or (not x629) x489)
+(or (not x629) x462)
+(or (not x629) x486)
+(or (not x629) (not x492))
+(or (not x629) x584)
+(or x654 (not x629))
+(or x654 (not x653))
+(or x629 x653 (not x654))
+(or x60 (not x443))
+(or x60 (not x444))
+(or x443 x444 (not x60))
+(or (not x543) (not x462) x444)
+(or (not x444) x543)
+(or (not x444) x462)
+(or (not x52) (not x543) (not x462) x549)
+(or (not x549) x52)
+(or (not x549) x543)
+(or (not x549) x462)
+(or (not x52) (not x543) (not x462) (not x60) (not x654) x655)
+(or (not x655) x52)
+(or (not x655) x543)
+(or (not x655) x462)
+(or (not x655) x60)
+(or (not x655) x654)
+(or (not x539) (not x462) x443)
+(or (not x443) x539)
+(or (not x443) x462)
+(or x472 x469)
+(or x472 x462)
+(or (not x469) (not x462) (not x472))
+(or (not x519) (not x462) x527)
+(or (not x527) x519)
+(or (not x527) x462)
+(or x656 (not x527))
+(or x656 x469)
+(or x656 x462)
+(or x527 (not x469) (not x462) (not x656))
+(or x638 x519)
+(or x638 x462)
+(or (not x519) (not x462) (not x638))
+(or (not x638) (not x656) x657)
+(or (not x657) x638)
+(or (not x657) x656)
+(or (not x533) (not x462) x547)
+(or (not x547) x533)
+(or (not x547) x462)
+(or x658 (not x547))
+(or x658 (not x657))
+(or x547 x657 (not x658))
+(or x641 x533)
+(or x641 x462)
+(or (not x533) (not x462) (not x641))
+(or x53 x543)
+(or x53 x462)
+(or (not x543) (not x462) (not x53))
+(or x52 x539)
+(or x52 x462)
+(or (not x539) (not x462) (not x52))
+(or (not x52) (not x53) x418)
+(or (not x418) x52)
+(or (not x418) x53)
+(or (not x52) (not x53) (not x641) (not x658) (not x539) (not x462) x659)
+(or (not x659) x52)
+(or (not x659) x53)
+(or (not x659) x641)
+(or (not x659) x658)
+(or (not x659) x539)
+(or (not x659) x462)
+(or x660 (not x659))
+(or x660 (not x655))
+(or x660 (not x652))
+(or x659 x655 x652 (not x660))
+(or (not x660) (not x462) x661)
+(or (not x661) x660)
+(or (not x661) x462)
+(or x662 (not x463))
+(or x662 (not x462))
+(or x463 x462 (not x662))
+(or x463 x462 x663)
+(or (not x663) (not x463))
+(or (not x663) (not x462))
+(or x664 (not x663))
+(or x664 (not x463))
+(or x664 x462)
+(or x663 x463 (not x462) (not x664))
+(or (not x665) (not x50))
+(or (not x665) x49)
+(or (not x665) (not x48))
+(or (not x665) x47)
+(or (not x665) x46)
+(or (not x666) (not x50))
+(or (not x666) x49)
+(or (not x666) (not x48))
+(or (not x666) x47)
+(or (not x666) (not x46))
+(or (not x667) (not x50))
+(or (not x667) x49)
+(or (not x667) (not x48))
+(or (not x667) (not x47))
+(or (not x667) x46)
+(or (not x668) (not x50))
+(or (not x668) x49)
+(or (not x668) (not x48))
+(or (not x668) (not x47))
+(or (not x668) (not x46))
+(or (not x669) (not x50))
+(or (not x669) (not x49))
+(or (not x669) x48)
+(or (not x669) x47)
+(or (not x669) x46)
+(or (not x670) (not x50))
+(or (not x670) (not x49))
+(or (not x670) x48)
+(or (not x670) x47)
+(or (not x670) (not x46))
+(or (not x671) (not x50))
+(or (not x671) (not x49))
+(or (not x671) x48)
+(or (not x671) (not x47))
+(or (not x671) x46)
+(or (not x672) (not x50))
+(or (not x672) (not x49))
+(or (not x672) x48)
+(or (not x672) (not x47))
+(or (not x672) (not x46))
+(or (not x673) (not x50))
+(or (not x673) (not x49))
+(or (not x673) (not x48))
+(or (not x673) x47)
+(or (not x673) x46)
+(or (not x674) (not x50))
+(or (not x674) (not x49))
+(or (not x674) (not x48))
+(or (not x674) x47)
+(or (not x674) (not x46))
+(or x50 x49 x48 x47 (not x46) x416)
+(or (not x416) (not x50))
+(or (not x416) (not x49))
+(or (not x416) (not x48))
+(or (not x416) (not x47))
+(or (not x416) x46)
+(or (not x675) (not x50))
+(or (not x675) (not x49))
+(or (not x675) (not x48))
+(or (not x675) (not x47))
+(or (not x675) (not x46))
+(or x676 (not x675))
+(or x676 (not x416))
+(or x676 (not x674))
+(or x676 (not x673))
+(or x676 (not x672))
+(or x676 (not x671))
+(or x676 (not x670))
+(or x676 (not x669))
+(or x676 (not x668))
+(or x676 (not x667))
+(or x676 (not x666))
+(or x675 x416 x674 x673 x672 x671 x670 x669 x668 x667 x666 (not x676))
+(or (not x677) (not x678) (not x679) (not x680) (not x681) (not x682) (not x683) (not x684) x685)
+(or (not x685) x677)
+(or (not x685) x678)
+(or (not x685) x679)
+(or (not x685) x680)
+(or (not x685) x681)
+(or (not x685) x682)
+(or (not x685) x683)
+(or (not x685) x684)
+(or x686 (not x687))
+(or x686 x688)
+(or x687 (not x688) (not x686))
+(or x687 (not x686) (not x689) x690)
+(or (not x690) (not x687))
+(or (not x690) x686)
+(or (not x690) x689)
+(or x679 (not x691))
+(or x679 (not x692))
+(or x679 (not x69))
+(or x679 (not x68))
+(or x679 (not x67))
+(or x679 x66)
+(or x679 x65)
+(or x679 (not x693))
+(or x679 (not x690))
+(or x691 x692 x69 x68 x67 (not x66) (not x65) x693 x690 (not x679))
+(or x694 (not x695))
+(or x694 x696)
+(or x695 (not x696) (not x694))
+(or x695 (not x694) (not x697) x698)
+(or (not x698) (not x695))
+(or (not x698) x694)
+(or (not x698) x697)
+(or x678 (not x691))
+(or x678 (not x69))
+(or x678 (not x68))
+(or x678 (not x67))
+(or x678 x66)
+(or x678 (not x65))
+(or x678 (not x699))
+(or x678 (not x693))
+(or x678 (not x698))
+(or x691 x69 x68 x67 (not x66) x65 x699 x693 x698 (not x678))
+(or x700 (not x701) x702)
+(or (not x702) (not x700))
+(or (not x702) x701)
+(or x703 (not x69))
+(or x703 (not x68))
+(or x703 (not x67))
+(or x703 (not x66))
+(or x703 x65)
+(or x703 (not x702))
+(or x69 x68 x67 x66 (not x65) x702 (not x703))
+(or (not x703) (not x678) (not x679) (not x680) (not x681) (not x684) x704)
+(or (not x704) x703)
+(or (not x704) x678)
+(or (not x704) x679)
+(or (not x704) x680)
+(or (not x704) x681)
+(or (not x704) x684)
+(or x689 (not x687))
+(or x689 (not x688))
+(or x687 x688 (not x689))
+(or x705 (not x691))
+(or x705 (not x692))
+(or x705 (not x69))
+(or x705 (not x68))
+(or x705 (not x67))
+(or x705 x66)
+(or x705 x65)
+(or x705 (not x693))
+(or x705 (not x687))
+(or x705 (not x688))
+(or x691 x692 x69 x68 x67 (not x66) (not x65) x693 x687 x688 (not x705))
+(or x697 (not x695))
+(or x697 (not x696))
+(or x695 x696 (not x697))
+(or x706 (not x691))
+(or x706 (not x69))
+(or x706 (not x68))
+(or x706 (not x67))
+(or x706 x66)
+(or x706 (not x65))
+(or x706 (not x699))
+(or x706 (not x693))
+(or x706 (not x695))
+(or x706 (not x696))
+(or x691 x69 x68 x67 (not x66) x65 x699 x693 x695 x696 (not x706))
+(or x707 (not x700))
+(or x707 (not x708))
+(or x707 x709)
+(or x700 x708 (not x709) (not x707))
+(or x700 (not x710) (not x707) (not x701) x711)
+(or (not x711) (not x700))
+(or (not x711) x710)
+(or (not x711) x707)
+(or (not x711) x701)
+(or x677 (not x69))
+(or x677 (not x68))
+(or x677 (not x67))
+(or x677 (not x66))
+(or x677 x65)
+(or x677 (not x711))
+(or x69 x68 x67 x66 (not x65) x711 (not x677))
+(or (not x677) (not x706) (not x705) (not x682) (not x683) (not x684) x712)
+(or (not x712) x677)
+(or (not x712) x706)
+(or (not x712) x705)
+(or (not x712) x682)
+(or (not x712) x683)
+(or (not x712) x684)
+(or x713 (not x691))
+(or x713 (not x692))
+(or x713 (not x714))
+(or x713 (not x715))
+(or x713 (not x716))
+(or x713 (not x717))
+(or x713 (not x69))
+(or x713 x68)
+(or x713 (not x67))
+(or x713 (not x66))
+(or x713 x65)
+(or x713 (not x73))
+(or x713 (not x74))
+(or x713 (not x75))
+(or x713 (not x76))
+(or x713 (not x77))
+(or x713 (not x78))
+(or x713 (not x718))
+(or x713 (not x719))
+(or x713 (not x720))
+(or x691 x692 x714 x715 x716 x717 x69 (not x68) x67 x66 (not x65) x73 x74 x75 x76 x77 x78 x718 x719 x720 (not x713))
+(or x721 (not x691))
+(or x721 (not x692))
+(or x721 (not x714))
+(or x721 (not x715))
+(or x721 (not x716))
+(or x721 (not x69))
+(or x721 x68)
+(or x721 (not x67))
+(or x721 (not x66))
+(or x721 (not x65))
+(or x721 (not x699))
+(or x721 (not x718))
+(or x721 (not x719))
+(or x721 (not x73))
+(or x721 (not x74))
+(or x721 (not x75))
+(or x721 (not x76))
+(or x721 (not x77))
+(or x721 (not x78))
+(or x721 (not x718))
+(or x721 (not x719))
+(or x721 (not x722))
+(or x691 x692 x714 x715 x716 x69 (not x68) x67 x66 x65 x699 x718 x719 x73 x74 x75 x76 x77 x78 x718 x719 x722 (not x721))
+(or x723 (not x691))
+(or x723 (not x692))
+(or x723 (not x714))
+(or x723 (not x715))
+(or x723 (not x69))
+(or x723 (not x68))
+(or x723 x67)
+(or x723 (not x66))
+(or x723 x65)
+(or x723 (not x73))
+(or x723 (not x74))
+(or x723 (not x75))
+(or x723 (not x76))
+(or x723 (not x77))
+(or x723 (not x78))
+(or x723 (not x718))
+(or x723 (not x719))
+(or x723 (not x724))
+(or x691 x692 x714 x715 x69 x68 (not x67) x66 (not x65) x73 x74 x75 x76 x77 x78 x718 x719 x724 (not x723))
+(or x725 (not x691))
+(or x725 (not x692))
+(or x725 (not x714))
+(or x725 (not x69))
+(or x725 (not x68))
+(or x725 x67)
+(or x725 (not x66))
+(or x725 (not x65))
+(or x725 (not x718))
+(or x725 (not x719))
+(or x725 (not x73))
+(or x725 (not x74))
+(or x725 (not x75))
+(or x725 (not x76))
+(or x725 (not x77))
+(or x725 (not x78))
+(or x725 (not x718))
+(or x725 (not x719))
+(or x725 (not x726))
+(or x691 x692 x714 x69 x68 (not x67) x66 x65 x718 x719 x73 x74 x75 x76 x77 x78 x718 x719 x726 (not x725))
+(or x701 (not x700))
+(or x701 (not x708))
+(or x701 (not x709))
+(or x700 x708 x709 (not x701))
+(or (not x710) (not x701) x727)
+(or (not x727) x710)
+(or (not x727) x701)
+(or x728 (not x69))
+(or x728 (not x68))
+(or x728 (not x67))
+(or x728 (not x66))
+(or x728 x65)
+(or x728 (not x727))
+(or x69 x68 x67 x66 (not x65) x727 (not x728))
+(or (not x728) (not x729) (not x730) (not x725) (not x723) (not x721) (not x713) (not x684) x731)
+(or (not x731) x728)
+(or (not x731) x729)
+(or (not x731) x730)
+(or (not x731) x725)
+(or (not x731) x723)
+(or (not x731) x721)
+(or (not x731) x713)
+(or (not x731) x684)
+(or x69 (not x68) x67 x66 (not x65) x73 x74 x75 x76 x77 x78 (not x71) (not x72) x732)
+(or (not x732) (not x69))
+(or (not x732) x68)
+(or (not x732) (not x67))
+(or (not x732) (not x66))
+(or (not x732) x65)
+(or (not x732) (not x73))
+(or (not x732) (not x74))
+(or (not x732) (not x75))
+(or (not x732) (not x76))
+(or (not x732) (not x77))
+(or (not x732) (not x78))
+(or (not x732) x71)
+(or (not x732) x72)
+(or x684 (not x691))
+(or x684 (not x692))
+(or x684 (not x714))
+(or x684 (not x715))
+(or x684 (not x716))
+(or x684 (not x717))
+(or x684 (not x732))
+(or x691 x692 x714 x715 x716 x717 x732 (not x684))
+(or x69 (not x68) x67 x66 x65 (not x70) (not x71) (not x72) x73 x74 x75 x76 x77 x78 (not x71) (not x72) x717)
+(or (not x717) (not x69))
+(or (not x717) x68)
+(or (not x717) (not x67))
+(or (not x717) (not x66))
+(or (not x717) (not x65))
+(or (not x717) x70)
+(or (not x717) x71)
+(or (not x717) x72)
+(or (not x717) (not x73))
+(or (not x717) (not x74))
+(or (not x717) (not x75))
+(or (not x717) (not x76))
+(or (not x717) (not x77))
+(or (not x717) (not x78))
+(or (not x717) x71)
+(or (not x717) x72)
+(or x683 (not x691))
+(or x683 (not x692))
+(or x683 (not x714))
+(or x683 (not x715))
+(or x683 (not x716))
+(or x683 (not x717))
+(or x683 (not x69))
+(or x683 x68)
+(or x683 (not x67))
+(or x683 (not x66))
+(or x683 x65)
+(or x683 (not x73))
+(or x683 (not x74))
+(or x683 (not x75))
+(or x683 (not x76))
+(or x683 (not x77))
+(or x683 (not x78))
+(or x683 (not x718))
+(or x683 (not x719))
+(or x691 x692 x714 x715 x716 x717 x69 (not x68) x67 x66 (not x65) x73 x74 x75 x76 x77 x78 x718 x719 (not x683))
+(or x733 (not x691))
+(or x733 (not x692))
+(or x733 (not x714))
+(or x733 (not x715))
+(or x733 (not x716))
+(or x733 (not x717))
+(or x733 (not x69))
+(or x733 x68)
+(or x733 (not x67))
+(or x733 (not x66))
+(or x733 x65)
+(or x733 (not x73))
+(or x733 (not x74))
+(or x733 (not x75))
+(or x733 (not x76))
+(or x733 (not x77))
+(or x733 (not x78))
+(or x733 (not x718))
+(or x733 (not x719))
+(or x733 x720)
+(or x691 x692 x714 x715 x716 x717 x69 (not x68) x67 x66 (not x65) x73 x74 x75 x76 x77 x78 x718 x719 (not x720) (not x733))
+(or x69 x68 (not x67) x66 (not x65) x73 x74 x75 x76 x77 x78 (not x71) (not x72) x716)
+(or (not x716) (not x69))
+(or (not x716) (not x68))
+(or (not x716) x67)
+(or (not x716) (not x66))
+(or (not x716) x65)
+(or (not x716) (not x73))
+(or (not x716) (not x74))
+(or (not x716) (not x75))
+(or (not x716) (not x76))
+(or (not x716) (not x77))
+(or (not x716) (not x78))
+(or (not x716) x71)
+(or (not x716) x72)
+(or x682 (not x691))
+(or x682 (not x692))
+(or x682 (not x714))
+(or x682 (not x715))
+(or x682 (not x716))
+(or x682 (not x69))
+(or x682 x68)
+(or x682 (not x67))
+(or x682 (not x66))
+(or x682 (not x65))
+(or x682 (not x699))
+(or x682 (not x718))
+(or x682 (not x719))
+(or x682 (not x73))
+(or x682 (not x74))
+(or x682 (not x75))
+(or x682 (not x76))
+(or x682 (not x77))
+(or x682 (not x78))
+(or x682 (not x718))
+(or x682 (not x719))
+(or x691 x692 x714 x715 x716 x69 (not x68) x67 x66 x65 x699 x718 x719 x73 x74 x75 x76 x77 x78 x718 x719 (not x682))
+(or x734 (not x691))
+(or x734 (not x692))
+(or x734 (not x714))
+(or x734 (not x715))
+(or x734 (not x716))
+(or x734 (not x69))
+(or x734 x68)
+(or x734 (not x67))
+(or x734 (not x66))
+(or x734 (not x65))
+(or x734 (not x699))
+(or x734 (not x718))
+(or x734 (not x719))
+(or x734 (not x73))
+(or x734 (not x74))
+(or x734 (not x75))
+(or x734 (not x76))
+(or x734 (not x77))
+(or x734 (not x78))
+(or x734 (not x718))
+(or x734 (not x719))
+(or x734 x722)
+(or x691 x692 x714 x715 x716 x69 (not x68) x67 x66 x65 x699 x718 x719 x73 x74 x75 x76 x77 x78 x718 x719 (not x722) (not x734))
+(or x69 x68 (not x67) x66 x65 (not x71) (not x72) x73 x74 x75 x76 x77 x78 (not x71) (not x72) x715)
+(or (not x715) (not x69))
+(or (not x715) (not x68))
+(or (not x715) x67)
+(or (not x715) (not x66))
+(or (not x715) (not x65))
+(or (not x715) x71)
+(or (not x715) x72)
+(or (not x715) (not x73))
+(or (not x715) (not x74))
+(or (not x715) (not x75))
+(or (not x715) (not x76))
+(or (not x715) (not x77))
+(or (not x715) (not x78))
+(or (not x715) x71)
+(or (not x715) x72)
+(or x681 (not x691))
+(or x681 (not x692))
+(or x681 (not x714))
+(or x681 (not x715))
+(or x681 (not x69))
+(or x681 (not x68))
+(or x681 x67)
+(or x681 (not x66))
+(or x681 x65)
+(or x681 (not x73))
+(or x681 (not x74))
+(or x681 (not x75))
+(or x681 (not x76))
+(or x681 (not x77))
+(or x681 (not x78))
+(or x681 (not x718))
+(or x681 (not x719))
+(or x691 x692 x714 x715 x69 x68 (not x67) x66 (not x65) x73 x74 x75 x76 x77 x78 x718 x719 (not x681))
+(or x735 (not x691))
+(or x735 (not x692))
+(or x735 (not x714))
+(or x735 (not x715))
+(or x735 (not x69))
+(or x735 (not x68))
+(or x735 x67)
+(or x735 (not x66))
+(or x735 x65)
+(or x735 (not x73))
+(or x735 (not x74))
+(or x735 (not x75))
+(or x735 (not x76))
+(or x735 (not x77))
+(or x735 (not x78))
+(or x735 (not x718))
+(or x735 (not x719))
+(or x735 x724)
+(or x691 x692 x714 x715 x69 x68 (not x67) x66 (not x65) x73 x74 x75 x76 x77 x78 x718 x719 (not x724) (not x735))
+(or x69 x68 x67 (not x66) (not x65) (not x79) x714)
+(or (not x714) (not x69))
+(or (not x714) (not x68))
+(or (not x714) (not x67))
+(or (not x714) x66)
+(or (not x714) x65)
+(or (not x714) x79)
+(or x680 (not x691))
+(or x680 (not x692))
+(or x680 (not x714))
+(or x680 (not x69))
+(or x680 (not x68))
+(or x680 x67)
+(or x680 (not x66))
+(or x680 (not x65))
+(or x680 (not x718))
+(or x680 (not x719))
+(or x680 (not x73))
+(or x680 (not x74))
+(or x680 (not x75))
+(or x680 (not x76))
+(or x680 (not x77))
+(or x680 (not x78))
+(or x680 (not x718))
+(or x680 (not x719))
+(or x691 x692 x714 x69 x68 (not x67) x66 x65 x718 x719 x73 x74 x75 x76 x77 x78 x718 x719 (not x680))
+(or x736 (not x691))
+(or x736 (not x692))
+(or x736 (not x714))
+(or x736 (not x69))
+(or x736 (not x68))
+(or x736 x67)
+(or x736 (not x66))
+(or x736 (not x65))
+(or x736 (not x718))
+(or x736 (not x719))
+(or x736 (not x73))
+(or x736 (not x74))
+(or x736 (not x75))
+(or x736 (not x76))
+(or x736 (not x77))
+(or x736 (not x78))
+(or x736 (not x718))
+(or x736 (not x719))
+(or x736 x726)
+(or x691 x692 x714 x69 x68 (not x67) x66 x65 x718 x719 x73 x74 x75 x76 x77 x78 x718 x719 (not x726) (not x736))
+(or x70 x737)
+(or x70 (not x718))
+(or x70 (not x719))
+(or (not x737) x718 x719 (not x70))
+(or x69 x68 x67 (not x66) x65 (not x70) (not x79) x692)
+(or (not x692) (not x69))
+(or (not x692) (not x68))
+(or (not x692) (not x67))
+(or (not x692) x66)
+(or (not x692) (not x65))
+(or (not x692) x70)
+(or (not x692) x79)
+(or x730 (not x691))
+(or x730 (not x692))
+(or x730 (not x69))
+(or x730 (not x68))
+(or x730 (not x67))
+(or x730 x66)
+(or x730 x65)
+(or x730 (not x693))
+(or x730 x687)
+(or x691 x692 x69 x68 x67 (not x66) (not x65) x693 (not x687) (not x730))
+(or (not x737) (not x71) (not x72) x699)
+(or (not x699) x737)
+(or (not x699) x71)
+(or (not x699) x72)
+(or x729 (not x691))
+(or x729 (not x69))
+(or x729 (not x68))
+(or x729 (not x67))
+(or x729 x66)
+(or x729 (not x65))
+(or x729 (not x699))
+(or x729 (not x693))
+(or x729 x695)
+(or x691 x69 x68 x67 (not x66) x65 x699 x693 (not x695) (not x729))
+(or x710 (not x700))
+(or x710 x708)
+(or x700 (not x708) (not x710))
+(or x700 (not x710) x739)
+(or (not x739) (not x700))
+(or (not x739) x710)
+(or x740 (not x69))
+(or x740 (not x68))
+(or x740 (not x67))
+(or x740 (not x66))
+(or x740 x65)
+(or x740 (not x739))
+(or x69 x68 x67 x66 (not x65) x739 (not x740))
+(or (not x740) (not x729) (not x730) (not x736) (not x735) (not x734) (not x733) (not x684) x741)
+(or (not x741) x740)
+(or (not x741) x729)
+(or (not x741) x730)
+(or (not x741) x736)
+(or (not x741) x735)
+(or (not x741) x734)
+(or (not x741) x733)
+(or (not x741) x684)
+(or (not x742) (not x743) x744)
+(or (not x744) x742)
+(or (not x744) x743)
+(or x742 (not x745) (not x746) x747)
+(or (not x747) (not x742))
+(or (not x747) x745)
+(or (not x747) x746)
+(or x748 (not x747))
+(or x748 (not x744))
+(or x747 x744 (not x748))
+(or (not x749) (not x737) (not x750) (not x751) (not x752) (not x748) x753)
+(or (not x753) x749)
+(or (not x753) x737)
+(or (not x753) x750)
+(or (not x753) x751)
+(or (not x753) x752)
+(or (not x753) x748)
+(or x746 x754)
+(or x746 x737)
+(or x746 (not x719))
+(or x746 (not x693))
+(or x746 (not x755))
+(or x746 (not x756))
+(or x746 (not x757))
+(or x746 (not x758))
+(or x746 (not x759))
+(or (not x754) (not x737) x719 x693 x755 x756 x757 x758 x759 (not x746))
+(or x745 (not x718))
+(or x745 x760)
+(or x745 x737)
+(or x745 (not x693))
+(or x745 (not x761))
+(or x745 x762)
+(or x745 x737)
+(or x745 (not x763))
+(or x745 (not x764))
+(or x745 (not x756))
+(or x745 (not x757))
+(or x745 (not x758))
+(or x718 (not x760) (not x737) x693 x761 (not x762) (not x737) x763 x764 x756 x757 x758 (not x745))
+(or x764 (not x745) (not x746) x765)
+(or (not x765) (not x764))
+(or (not x765) x745)
+(or (not x765) x746)
+(or x766 (not x765))
+(or x766 (not x764))
+(or x765 x764 (not x766))
+(or (not x767) (not x762) (not x737) (not x751) (not x766) x768)
+(or (not x768) x767)
+(or (not x768) x762)
+(or (not x768) x737)
+(or (not x768) x751)
+(or (not x768) x766)
+(or x769 (not x770))
+(or x769 (not x763))
+(or x769 (not x768))
+(or x769 (not x753))
+(or x770 x763 x768 x753 (not x769))
+(or (not x771) (not x737) (not x769) x772)
+(or (not x772) x771)
+(or (not x772) x737)
+(or (not x772) x769)
+(or x773 (not x772))
+(or x773 x737)
+(or x772 (not x737) (not x773))
+(or x774 x749)
+(or x774 x737)
+(or x774 (not x775))
+(or x774 (not x763))
+(or x774 (not x776))
+(or x774 (not x777))
+(or x774 x737)
+(or x774 (not x742))
+(or (not x749) (not x737) x775 x763 x776 x777 (not x737) x742 (not x774))
+(or x778 (not x761))
+(or x778 (not x775))
+(or x778 (not x779))
+(or x761 x775 x779 (not x778))
+(or x780 (not x761))
+(or x780 x762)
+(or x780 x737)
+(or x780 (not x763))
+(or x780 x764)
+(or x780 (not x781))
+(or x761 (not x762) (not x737) x763 (not x764) x781 (not x780))
+(or (not x780) (not x778) (not x774) x782)
+(or (not x782) x780)
+(or (not x782) x778)
+(or (not x782) x774)
+(or x783 (not x781))
+(or x783 (not x782))
+(or x781 x782 (not x783))
+(or (not x771) (not x737) (not x783) (not x771) (not x737) x784)
+(or (not x784) x771)
+(or (not x784) x737)
+(or (not x784) x783)
+(or (not x784) x771)
+(or (not x784) x737)
+(or (not x785) (not x786) (not x787) x788 (not x789) x790 (not x791) (not x792) (not x793) x794 (not x795) (not x796) x797)
+(or (not x797) x785)
+(or (not x797) x786)
+(or (not x797) x787)
+(or (not x797) (not x788))
+(or (not x797) x789)
+(or (not x797) (not x790))
+(or (not x797) x791)
+(or (not x797) x792)
+(or (not x797) x793)
+(or (not x797) (not x794))
+(or (not x797) x795)
+(or (not x797) x796)
+(or x798 x799)
+(or x798 x737)
+(or x798 (not x800))
+(or x798 (not x801))
+(or x798 (not x802))
+(or (not x799) (not x737) x800 x801 x802 (not x798))
+(or x803 (not x804))
+(or x803 x737)
+(or x803 (not x805))
+(or x803 x737)
+(or x804 (not x737) x805 (not x737) (not x803))
+(or (not x803) x804 (not x737) x806)
+(or (not x806) x803)
+(or (not x806) (not x804))
+(or (not x806) x737)
+(or x807 (not x808))
+(or x807 x809)
+(or x807 x737)
+(or x807 (not x801))
+(or x807 (not x806))
+(or x808 (not x809) (not x737) x801 x806 (not x807))
+(or (not x807) (not x798) x810)
+(or (not x810) x807)
+(or (not x810) x798)
+(or x811 x812)
+(or x811 (not x813))
+(or x811 (not x796))
+(or x811 x795)
+(or (not x812) x813 x796 (not x795) (not x811))
+(or (not x814) (not x811) x815)
+(or (not x815) x814)
+(or (not x815) x811)
+(or x794 (not x816) x817)
+(or (not x817) (not x794))
+(or (not x817) x816)
+(or (not x794) (not x818) x819)
+(or (not x819) x794)
+(or (not x819) x818)
+(or x820 (not x819))
+(or x820 (not x817))
+(or x819 x817 (not x820))
+(or x814 x812)
+(or x814 (not x813))
+(or x814 (not x796))
+(or x814 (not x795))
+(or (not x812) x813 x796 x795 (not x814))
+(or (not x812) x813 x796 (not x795) (not x814) (not x820) x821)
+(or (not x821) x812)
+(or (not x821) (not x813))
+(or (not x821) (not x796))
+(or (not x821) x795)
+(or (not x821) x814)
+(or (not x821) x820)
+(or (not x812) x813 x796 x795 (not x822) x823)
+(or (not x823) x812)
+(or (not x823) (not x813))
+(or (not x823) (not x796))
+(or (not x823) (not x795))
+(or (not x823) x822)
+(or x824 (not x823))
+(or x824 (not x821))
+(or x824 (not x815))
+(or x823 x821 x815 (not x824))
+(or x825 x785)
+(or x825 x786)
+(or x825 x787)
+(or x825 (not x788))
+(or x825 x789)
+(or x825 (not x790))
+(or x825 x791)
+(or x825 x792)
+(or x825 x793)
+(or x825 (not x794))
+(or x825 x795)
+(or x825 x796)
+(or (not x785) (not x786) (not x787) x788 (not x789) x790 (not x791) (not x792) (not x793) x794 (not x795) (not x796) (not x825))
+(or x826 (not x827))
+(or x826 (not x804))
+(or x826 x737)
+(or x827 x804 (not x737) (not x826))
+(or (not x828) (not x809) (not x737) (not x829) (not x826) x830)
+(or (not x830) x828)
+(or (not x830) x809)
+(or (not x830) x737)
+(or (not x830) x829)
+(or (not x830) x826)
+(or x831 (not x830))
+(or x831 (not x832))
+(or x830 x832 (not x831))
+(or (not x831) (not x825) (not x824) x833)
+(or (not x833) x831)
+(or (not x833) x825)
+(or (not x833) x824)
+(or x834 (not x833))
+(or x834 (not x810))
+(or x834 (not x797))
+(or x833 x810 x797 (not x834))
+(or x835 (not x808))
+(or x835 x809)
+(or x835 x737)
+(or x808 (not x809) (not x737) (not x835))
+(or (not x799) (not x737) (not x836) (not x829) (not x835) x832)
+(or (not x832) x799)
+(or (not x832) x737)
+(or (not x832) x836)
+(or (not x832) x829)
+(or (not x832) x835)
+(or (not x799) (not x737) (not x836) (not x829) (not x835) (not x834) x837)
+(or (not x837) x799)
+(or (not x837) x737)
+(or (not x837) x836)
+(or (not x837) x829)
+(or (not x837) x835)
+(or (not x837) x834)
+(or x804 (not x737) x805 (not x737) x827)
+(or (not x827) (not x804))
+(or (not x827) x737)
+(or (not x827) (not x805))
+(or (not x827) x737)
+(or (not x799) (not x737) x808)
+(or (not x808) x799)
+(or (not x808) x737)
+(or x829 (not x808))
+(or x829 (not x800))
+(or x808 x800 (not x829))
+(or (not x809) (not x737) x800)
+(or (not x800) x809)
+(or (not x800) x737)
+(or (not x828) (not x809) (not x737) x802)
+(or (not x802) x828)
+(or (not x802) x809)
+(or (not x802) x737)
+(or (not x828) (not x809) (not x737) (not x829) x804 (not x737) x805 (not x737) x838)
+(or (not x838) x828)
+(or (not x838) x809)
+(or (not x838) x737)
+(or (not x838) x829)
+(or (not x838) (not x804))
+(or (not x838) x737)
+(or (not x838) (not x805))
+(or (not x838) x737)
+(or x839 (not x840))
+(or x839 (not x781))
+(or x840 x781 (not x839))
+(or x836 x809)
+(or x836 x737)
+(or (not x809) (not x737) (not x836))
+(or x828 x799)
+(or x828 x737)
+(or (not x799) (not x737) (not x828))
+(or (not x828) (not x836) x801)
+(or (not x801) x828)
+(or (not x801) x836)
+(or (not x828) (not x836) (not x839) x841)
+(or (not x841) x828)
+(or (not x841) x836)
+(or (not x841) x839)
+(or x842 (not x841))
+(or x842 (not x838))
+(or x842 (not x837))
+(or x841 x838 x837 (not x842))
+(or (not x79) (not x842) x843)
+(or (not x843) x79)
+(or (not x843) x842)
+(or x844 (not x843))
+(or x844 (not x840))
+(or x843 x840 (not x844))
+(or (not x845) (not x844) x846)
+(or (not x846) x845)
+(or (not x846) x844)
+(or x847 (not x846))
+(or x847 (not x784))
+(or x846 x784 (not x847))
+(or (not x847) (not x737) x848)
+(or (not x848) x847)
+(or (not x848) x737)
+(or (not x849) (not x850) (not x851) x852)
+(or (not x852) x849)
+(or (not x852) x850)
+(or (not x852) x851)
+(or (not x853) (not x737) (not x854) (not x855) (not x856) (not x857) (not x858) x859)
+(or (not x859) x853)
+(or (not x859) x737)
+(or (not x859) x854)
+(or (not x859) x855)
+(or (not x859) x856)
+(or (not x859) x857)
+(or (not x859) x858)
+(or x860 (not x859))
+(or x860 (not x852))
+(or x859 x852 (not x860))
+(or (not x860) (not x861) (not x737) x862)
+(or (not x862) x860)
+(or (not x862) x861)
+(or (not x862) x737)
+(or (not x849) (not x854) (not x855) (not x856) (not x857) x863)
+(or (not x863) x849)
+(or (not x863) x854)
+(or (not x863) x855)
+(or (not x863) x856)
+(or (not x863) x857)
+(or (not x853) (not x737) (not x854) (not x855) (not x856) (not x857) (not x864) (not x737) x865)
+(or (not x865) x853)
+(or (not x865) x737)
+(or (not x865) x854)
+(or (not x865) x855)
+(or (not x865) x856)
+(or (not x865) x857)
+(or (not x865) x864)
+(or (not x865) x737)
+(or x850 (not x865))
+(or x850 (not x863))
+(or x865 x863 (not x850))
+(or (not x850) (not x866) (not x737) (not x867) (not x737) x868)
+(or (not x868) x850)
+(or (not x868) x866)
+(or (not x868) x737)
+(or (not x868) x867)
+(or (not x868) x737)
+(or x869 (not x868))
+(or x869 (not x862))
+(or x868 x862 (not x869))
+(or x870 (not x871))
+(or x870 (not x872))
+(or x870 (not x871))
+(or x871 x872 x871 (not x870))
+(or (not x873) (not x864) (not x737) x871)
+(or (not x871) x873)
+(or (not x871) x864)
+(or (not x871) x737)
+(or (not x854) (not x855) (not x856) (not x857) (not x864) (not x737) (not x866) (not x737) x872)
+(or (not x872) x854)
+(or (not x872) x855)
+(or (not x872) x856)
+(or (not x872) x857)
+(or (not x872) x864)
+(or (not x872) x737)
+(or (not x872) x866)
+(or (not x872) x737)
+(or x874 (not x872))
+(or x874 (not x871))
+(or x872 x871 (not x874))
+(or (not x875) (not x874) (not x870) (not x876) (not x737) x877)
+(or (not x877) x875)
+(or (not x877) x874)
+(or (not x877) x870)
+(or (not x877) x876)
+(or (not x877) x737)
+(or x851 x866)
+(or x851 x737)
+(or (not x866) (not x737) (not x851))
+(or x873 (not x878))
+(or x873 (not x879))
+(or x873 (not x880))
+(or x873 (not x881))
+(or x873 x864)
+(or x873 x737)
+(or x878 x879 x880 x881 (not x864) (not x737) (not x873))
+(or x882 (not x878))
+(or x882 (not x879))
+(or x882 (not x880))
+(or x882 (not x881))
+(or x882 x864)
+(or x882 x737)
+(or x882 x866)
+(or x882 x737)
+(or x878 x879 x880 x881 (not x864) (not x737) (not x866) (not x737) (not x882))
+(or x858 x864)
+(or x858 x737)
+(or (not x864) (not x737) (not x858))
+(or (not x854) (not x855) (not x856) (not x857) (not x864) (not x737) x883)
+(or (not x883) x854)
+(or (not x883) x855)
+(or (not x883) x856)
+(or (not x883) x857)
+(or (not x883) x864)
+(or (not x883) x737)
+(or x875 (not x883))
+(or x875 x864)
+(or x875 x737)
+(or x883 (not x864) (not x737) (not x875))
+(or (not x875) (not x882) (not x875) (not x884) (not x737) x885)
+(or (not x885) x875)
+(or (not x885) x882)
+(or (not x885) x875)
+(or (not x885) x884)
+(or (not x885) x737)
+(or x886 (not x885))
+(or x886 (not x877))
+(or x885 x877 (not x886))
+(or (not x855) (not x857) (not x856) (not x855) (not x886) (not x869) x887)
+(or (not x887) x855)
+(or (not x887) x857)
+(or (not x887) x856)
+(or (not x887) x855)
+(or (not x887) x886)
+(or (not x887) x869)
+(or (not x849) (not x888) (not x889) x890)
+(or (not x890) x849)
+(or (not x890) x888)
+(or (not x890) x889)
+(or (not x853) (not x737) (not x854) (not x891) (not x737) x892 (not x737) (not x857) (not x893) (not x856) (not x857) (not x894) x895)
+(or (not x895) x853)
+(or (not x895) x737)
+(or (not x895) x854)
+(or (not x895) x891)
+(or (not x895) x737)
+(or (not x895) (not x892))
+(or (not x895) x737)
+(or (not x895) x857)
+(or (not x895) x893)
+(or (not x895) x856)
+(or (not x895) x857)
+(or (not x895) x894)
+(or x896 (not x895))
+(or x896 (not x890))
+(or x895 x890 (not x896))
+(or (not x896) (not x897) (not x737) x898)
+(or (not x898) x896)
+(or (not x898) x897)
+(or (not x898) x737)
+(or x849 x853)
+(or x849 x737)
+(or (not x853) (not x737) (not x849))
+(or (not x849) (not x854) (not x891) (not x737) x892 (not x737) (not x857) (not x893) (not x856) (not x857) x899)
+(or (not x899) x849)
+(or (not x899) x854)
+(or (not x899) x891)
+(or (not x899) x737)
+(or (not x899) (not x892))
+(or (not x899) x737)
+(or (not x899) x857)
+(or (not x899) x893)
+(or (not x899) x856)
+(or (not x899) x857)
+(or (not x853) (not x737) (not x854) (not x891) (not x737) x892 (not x737) (not x857) (not x893) (not x856) (not x857) (not x900) (not x737) x901)
+(or (not x901) x853)
+(or (not x901) x737)
+(or (not x901) x854)
+(or (not x901) x891)
+(or (not x901) x737)
+(or (not x901) (not x892))
+(or (not x901) x737)
+(or (not x901) x857)
+(or (not x901) x893)
+(or (not x901) x856)
+(or (not x901) x857)
+(or (not x901) x900)
+(or (not x901) x737)
+(or x888 (not x901))
+(or x888 (not x899))
+(or x901 x899 (not x888))
+(or (not x888) (not x902) (not x737) (not x903) (not x737) x904)
+(or (not x904) x888)
+(or (not x904) x902)
+(or (not x904) x737)
+(or (not x904) x903)
+(or (not x904) x737)
+(or x905 (not x904))
+(or x905 (not x898))
+(or x904 x898 (not x905))
+(or (not x906) (not x907) (not x908) (not x909) (not x737) x910)
+(or (not x910) x906)
+(or (not x910) x907)
+(or (not x910) x908)
+(or (not x910) x909)
+(or (not x910) x737)
+(or (not x906) (not x911) (not x906) (not x912) (not x737) x913)
+(or (not x913) x906)
+(or (not x913) x911)
+(or (not x913) x906)
+(or (not x913) x912)
+(or (not x913) x737)
+(or x914 (not x913))
+(or x914 (not x910))
+(or x913 x910 (not x914))
+(or (not x857) (not x856) (not x891) (not x737) x892 (not x737) (not x857) (not x893) (not x914) x915)
+(or (not x915) x857)
+(or (not x915) x856)
+(or (not x915) x891)
+(or (not x915) x737)
+(or (not x915) (not x892))
+(or (not x915) x737)
+(or (not x915) x857)
+(or (not x915) x893)
+(or (not x915) x914)
+(or (not x906) (not x907) (not x908) (not x916) (not x737) x917)
+(or (not x917) x906)
+(or (not x917) x907)
+(or (not x917) x908)
+(or (not x917) x916)
+(or (not x917) x737)
+(or (not x906) (not x911) (not x906) (not x918) (not x737) x919)
+(or (not x919) x906)
+(or (not x919) x911)
+(or (not x919) x906)
+(or (not x919) x918)
+(or (not x919) x737)
+(or x920 (not x919))
+(or x920 (not x917))
+(or x919 x917 (not x920))
+(or (not x857) (not x856) (not x891) (not x737) x892 (not x737) (not x857) (not x893) (not x920) x921)
+(or (not x921) x857)
+(or (not x921) x856)
+(or (not x921) x891)
+(or (not x921) x737)
+(or (not x921) (not x892))
+(or (not x921) x737)
+(or (not x921) x857)
+(or (not x921) x893)
+(or (not x921) x920)
+(or (not x906) (not x907) (not x908) (not x922) (not x737) x923)
+(or (not x923) x906)
+(or (not x923) x907)
+(or (not x923) x908)
+(or (not x923) x922)
+(or (not x923) x737)
+(or (not x906) (not x911) (not x906) (not x924) (not x737) x925)
+(or (not x925) x906)
+(or (not x925) x911)
+(or (not x925) x906)
+(or (not x925) x924)
+(or (not x925) x737)
+(or x926 (not x925))
+(or x926 (not x923))
+(or x925 x923 (not x926))
+(or (not x857) (not x856) (not x891) (not x737) x892 (not x737) (not x857) (not x893) (not x926) x927)
+(or (not x927) x857)
+(or (not x927) x856)
+(or (not x927) x891)
+(or (not x927) x737)
+(or (not x927) (not x892))
+(or (not x927) x737)
+(or (not x927) x857)
+(or (not x927) x893)
+(or (not x927) x926)
+(or (not x906) (not x907) (not x908) (not x928) (not x737) x929)
+(or (not x929) x906)
+(or (not x929) x907)
+(or (not x929) x908)
+(or (not x929) x928)
+(or (not x929) x737)
+(or (not x906) (not x911) (not x906) (not x930) (not x737) x931)
+(or (not x931) x906)
+(or (not x931) x911)
+(or (not x931) x906)
+(or (not x931) x930)
+(or (not x931) x737)
+(or x932 (not x931))
+(or x932 (not x929))
+(or x931 x929 (not x932))
+(or (not x857) (not x856) (not x891) (not x737) x892 (not x737) (not x857) (not x893) (not x932) x933)
+(or (not x933) x857)
+(or (not x933) x856)
+(or (not x933) x891)
+(or (not x933) x737)
+(or (not x933) (not x892))
+(or (not x933) x737)
+(or (not x933) x857)
+(or (not x933) x893)
+(or (not x933) x932)
+(or (not x906) (not x907) (not x908) (not x934) (not x737) x935)
+(or (not x935) x906)
+(or (not x935) x907)
+(or (not x935) x908)
+(or (not x935) x934)
+(or (not x935) x737)
+(or (not x906) (not x911) (not x906) (not x936) (not x737) x937)
+(or (not x937) x906)
+(or (not x937) x911)
+(or (not x937) x906)
+(or (not x937) x936)
+(or (not x937) x737)
+(or x938 (not x937))
+(or x938 (not x935))
+(or x937 x935 (not x938))
+(or (not x857) (not x856) (not x891) (not x737) x892 (not x737) (not x857) (not x893) (not x938) x939)
+(or (not x939) x857)
+(or (not x939) x856)
+(or (not x939) x891)
+(or (not x939) x737)
+(or (not x939) (not x892))
+(or (not x939) x737)
+(or (not x939) x857)
+(or (not x939) x893)
+(or (not x939) x938)
+(or x908 (not x940))
+(or x908 (not x941))
+(or x908 (not x940))
+(or x940 x941 x940 (not x908))
+(or (not x942) (not x900) (not x737) x940)
+(or (not x940) x942)
+(or (not x940) x900)
+(or (not x940) x737)
+(or (not x854) (not x891) (not x737) x892 (not x737) (not x857) (not x893) (not x856) (not x857) (not x900) (not x737) (not x902) (not x737) x941)
+(or (not x941) x854)
+(or (not x941) x891)
+(or (not x941) x737)
+(or (not x941) (not x892))
+(or (not x941) x737)
+(or (not x941) x857)
+(or (not x941) x893)
+(or (not x941) x856)
+(or (not x941) x857)
+(or (not x941) x900)
+(or (not x941) x737)
+(or (not x941) x902)
+(or (not x941) x737)
+(or x907 (not x941))
+(or x907 (not x940))
+(or x941 x940 (not x907))
+(or (not x906) (not x907) (not x908) (not x943) (not x737) x944)
+(or (not x944) x906)
+(or (not x944) x907)
+(or (not x944) x908)
+(or (not x944) x943)
+(or (not x944) x737)
+(or x889 x902)
+(or x889 x737)
+(or (not x902) (not x737) (not x889))
+(or x855 x891)
+(or x855 x737)
+(or x855 (not x892))
+(or x855 x737)
+(or x855 (not x881))
+(or x855 (not x945))
+(or (not x891) (not x737) x892 (not x737) x881 x945 (not x855))
+(or (not x946) (not x737) (not x947) (not x737) (not x948) (not x737) x878)
+(or (not x878) x946)
+(or (not x878) x737)
+(or (not x878) x947)
+(or (not x878) x737)
+(or (not x878) x948)
+(or (not x878) x737)
+(or x942 (not x878))
+(or x942 x891)
+(or x942 x737)
+(or x942 (not x892))
+(or x942 x737)
+(or x942 (not x881))
+(or x942 (not x945))
+(or x942 (not x880))
+(or x942 (not x881))
+(or x942 x900)
+(or x942 x737)
+(or x878 (not x891) (not x737) x892 (not x737) x881 x945 x880 x881 (not x900) (not x737) (not x942))
+(or x911 (not x878))
+(or x911 x891)
+(or x911 x737)
+(or x911 (not x892))
+(or x911 x737)
+(or x911 (not x881))
+(or x911 (not x945))
+(or x911 (not x880))
+(or x911 (not x881))
+(or x911 x900)
+(or x911 x737)
+(or x911 x902)
+(or x911 x737)
+(or x878 (not x891) (not x737) x892 (not x737) x881 x945 x880 x881 (not x900) (not x737) (not x902) (not x737) (not x911))
+(or x894 x900)
+(or x894 x737)
+(or (not x900) (not x737) (not x894))
+(or x854 x946)
+(or x854 x737)
+(or x854 x947)
+(or x854 x737)
+(or x854 x948)
+(or x854 x737)
+(or (not x946) (not x737) (not x947) (not x737) (not x948) (not x737) (not x854))
+(or (not x854) (not x891) (not x737) x892 (not x737) (not x857) (not x893) (not x856) (not x857) (not x900) (not x737) x949)
+(or (not x949) x854)
+(or (not x949) x891)
+(or (not x949) x737)
+(or (not x949) (not x892))
+(or (not x949) x737)
+(or (not x949) x857)
+(or (not x949) x893)
+(or (not x949) x856)
+(or (not x949) x857)
+(or (not x949) x900)
+(or (not x949) x737)
+(or x906 (not x949))
+(or x906 x900)
+(or x906 x737)
+(or x949 (not x900) (not x737) (not x906))
+(or (not x906) (not x911) (not x906) (not x950) (not x737) x951)
+(or (not x951) x906)
+(or (not x951) x911)
+(or (not x951) x906)
+(or (not x951) x950)
+(or (not x951) x737)
+(or x952 (not x951))
+(or x952 (not x944))
+(or x951 x944 (not x952))
+(or (not x857) (not x856) (not x891) (not x737) x892 (not x737) (not x857) (not x893) (not x952) x953)
+(or (not x953) x857)
+(or (not x953) x856)
+(or (not x953) x891)
+(or (not x953) x737)
+(or (not x953) (not x892))
+(or (not x953) x737)
+(or (not x953) x857)
+(or (not x953) x893)
+(or (not x953) x952)
+(or x954 (not x953))
+(or x954 (not x939))
+(or x954 (not x933))
+(or x954 (not x927))
+(or x954 (not x921))
+(or x954 (not x915))
+(or x953 x939 x933 x927 x921 x915 (not x954))
+(or (not x891) (not x737) x892 (not x737) (not x857) (not x893) x879)
+(or (not x879) x891)
+(or (not x879) x737)
+(or (not x879) (not x892))
+(or (not x879) x737)
+(or (not x879) x857)
+(or (not x879) x893)
+(or (not x891) (not x737) x892 (not x737) (not x857) (not x893) (not x954) (not x905) x955)
+(or (not x955) x891)
+(or (not x955) x737)
+(or (not x955) (not x892))
+(or (not x955) x737)
+(or (not x955) x857)
+(or (not x955) x893)
+(or (not x955) x954)
+(or (not x955) x905)
+(or x956 (not x955))
+(or x956 (not x887))
+(or x955 x887 (not x956))
+(or x893 (not x957))
+(or x893 (not x958))
+(or x957 x958 (not x893))
+(or x856 (not x957))
+(or x856 (not x958))
+(or x856 (not x881))
+(or x957 x958 x881 (not x856))
+(or (not x856) (not x956) x959)
+(or (not x959) x856)
+(or (not x959) x956)
+(or (not x960) (not x961) x945)
+(or (not x945) x960)
+(or (not x945) x961)
+(or (not x960) (not x961) (not x857) x880)
+(or (not x880) x960)
+(or (not x880) x961)
+(or (not x880) x857)
+(or (not x960) (not x961) (not x857) (not x962) (not x737) x963)
+(or (not x963) x960)
+(or (not x963) x961)
+(or (not x963) x857)
+(or (not x963) x962)
+(or (not x963) x737)
+(or x964 (not x963))
+(or x964 (not x959))
+(or x963 x959 (not x964))
+(or x961 (not x892))
+(or x961 x737)
+(or x892 (not x737) (not x961))
+(or (not x891) (not x737) x957)
+(or (not x957) x891)
+(or (not x957) x737)
+(or x857 (not x957))
+(or x857 (not x892))
+(or x857 x737)
+(or x957 x892 (not x737) (not x857))
+(or (not x857) (not x964) x965)
+(or (not x965) x857)
+(or (not x965) x964)
+(or x892 (not x737) x958)
+(or (not x958) (not x892))
+(or (not x958) x737)
+(or x960 x891)
+(or x960 x737)
+(or (not x891) (not x737) (not x960))
+(or (not x960) x892 (not x737) x881)
+(or (not x881) x960)
+(or (not x881) (not x892))
+(or (not x881) x737)
+(or (not x960) x892 (not x737) (not x966) (not x737) x967)
+(or (not x967) x960)
+(or (not x967) (not x892))
+(or (not x967) x737)
+(or (not x967) x966)
+(or (not x967) x737)
+(or x968 (not x967))
+(or x968 (not x965))
+(or x967 x965 (not x968))
+(or (not x968) (not x737) x969)
+(or (not x969) x968)
+(or (not x969) x737)
+(or (not x970) (not x971) (not x946) (not x737) x972)
+(or (not x972) x970)
+(or (not x972) x971)
+(or (not x972) x946)
+(or (not x972) x737)
+(or (not x973) (not x974) x975)
+(or (not x975) x973)
+(or (not x975) x974)
+(or x976 (not x975))
+(or x976 (not x972))
+(or x975 x972 (not x976))
+(or (not x977) (not x976) x978)
+(or (not x978) x977)
+(or (not x978) x976)
+(or (not x973) (not x946) (not x737) x979)
+(or (not x979) x973)
+(or (not x979) x946)
+(or (not x979) x737)
+(or (not x970) (not x971) (not x974) x980)
+(or (not x980) x970)
+(or (not x980) x971)
+(or (not x980) x974)
+(or x981 (not x980))
+(or x981 (not x979))
+(or x980 x979 (not x981))
+(or (not x982) (not x737) (not x981) x983)
+(or (not x983) x982)
+(or (not x983) x737)
+(or (not x983) x981)
+(or x984 (not x983))
+(or x984 (not x978))
+(or x983 x978 (not x984))
+(or (not x984) (not x737) x985)
+(or (not x985) x984)
+(or (not x985) x737)
+(or (not x749) (not x737) (not x750) (not x751) (not x752) (not x986) (not x762) (not x737) x987)
+(or (not x987) x749)
+(or (not x987) x737)
+(or (not x987) x750)
+(or (not x987) x751)
+(or (not x987) x752)
+(or (not x987) x986)
+(or (not x987) x762)
+(or (not x987) x737)
+(or (not x767) (not x762) (not x737) (not x751) (not x764) (not x988) (not x762) (not x737) x989)
+(or (not x989) x767)
+(or (not x989) x762)
+(or (not x989) x737)
+(or (not x989) x751)
+(or (not x989) x764)
+(or (not x989) x988)
+(or (not x989) x762)
+(or (not x989) x737)
+(or (not x771) (not x737) x840)
+(or (not x840) x771)
+(or (not x840) x737)
+(or (not x771) (not x737) (not x79) x779)
+(or (not x779) x771)
+(or (not x779) x737)
+(or (not x779) x79)
+(or x990 (not x779))
+(or x990 (not x775))
+(or x779 x775 (not x990))
+(or (not x767) (not x750) (not x990) x991)
+(or (not x991) x767)
+(or (not x991) x750)
+(or (not x991) x990)
+(or (not x751) (not x752) (not x992) (not x762) (not x737) x993)
+(or (not x993) x751)
+(or (not x993) x752)
+(or (not x993) x992)
+(or (not x993) x762)
+(or (not x993) x737)
+(or x994 (not x993))
+(or x994 (not x991))
+(or x994 (not x989))
+(or x994 (not x987))
+(or x993 x991 x989 x987 (not x994))
+(or (not x994) (not x737) x995)
+(or (not x995) x994)
+(or (not x995) x737)
+(or x743 (not x777))
+(or x743 x737)
+(or x777 (not x737) (not x743))
+(or x986 (not x777))
+(or x986 x737)
+(or x986 (not x742))
+(or x777 (not x737) x742 (not x986))
+(or (not x749) (not x737) (not x750) (not x751) (not x752) (not x986) (not x749) (not x737) x996)
+(or (not x996) x749)
+(or (not x996) x737)
+(or (not x996) x750)
+(or (not x996) x751)
+(or (not x996) x752)
+(or (not x996) x986)
+(or (not x996) x749)
+(or (not x996) x737)
+(or x988 x764)
+(or x988 (not x781))
+(or (not x764) x781 (not x988))
+(or (not x764) (not x988) (not x749) (not x737) x997)
+(or (not x997) x764)
+(or (not x997) x988)
+(or (not x997) x749)
+(or (not x997) x737)
+(or (not x764) x781 x998)
+(or (not x998) x764)
+(or (not x998) (not x781))
+(or x999 x764)
+(or x999 (not x998))
+(or (not x764) x998 (not x999))
+(or (not x999) x764 x1000)
+(or (not x1000) x999)
+(or (not x1000) (not x764))
+(or x1001 (not x1000))
+(or x1001 (not x997))
+(or x1000 x997 (not x1001))
+(or (not x767) (not x762) (not x737) (not x751) (not x1001) x1002)
+(or (not x1002) x767)
+(or (not x1002) x762)
+(or (not x1002) x737)
+(or (not x1002) x751)
+(or (not x1002) x1001)
+(or x845 x771)
+(or x845 x737)
+(or (not x771) (not x737) (not x845))
+(or x1003 x771)
+(or x1003 x737)
+(or x1003 (not x693))
+(or (not x771) (not x737) x693 (not x1003))
+(or (not x767) (not x750) (not x1003) (not x749) (not x737) x1004)
+(or (not x1004) x767)
+(or (not x1004) x750)
+(or (not x1004) x1003)
+(or (not x1004) x749)
+(or (not x1004) x737)
+(or (not x751) (not x752) (not x992) (not x749) (not x737) x1005)
+(or (not x1005) x751)
+(or (not x1005) x752)
+(or (not x1005) x992)
+(or (not x1005) x749)
+(or (not x1005) x737)
+(or x1006 (not x1005))
+(or x1006 (not x1004))
+(or x1006 (not x1002))
+(or x1006 (not x996))
+(or x1005 x1004 x1002 x996 (not x1006))
+(or (not x1006) (not x737) x1007)
+(or (not x1007) x1006)
+(or (not x1007) x737)
+(or (not x970) (not x971) (not x947) (not x737) x1008)
+(or (not x1008) x970)
+(or (not x1008) x971)
+(or (not x1008) x947)
+(or (not x1008) x737)
+(or (not x973) (not x1009) x1010)
+(or (not x1010) x973)
+(or (not x1010) x1009)
+(or x1011 (not x1010))
+(or x1011 (not x1008))
+(or x1010 x1008 (not x1011))
+(or (not x977) (not x1011) x1012)
+(or (not x1012) x977)
+(or (not x1012) x1011)
+(or (not x973) (not x947) (not x737) x1013)
+(or (not x1013) x973)
+(or (not x1013) x947)
+(or (not x1013) x737)
+(or x1014 x1015 x974)
+(or x1014 (not x1015) (not x974))
+(or (not x1014) x1015 (not x974))
+(or (not x1014) (not x1015) x974)
+(or (not x970) (not x971) (not x1014) x1016)
+(or (not x1016) x970)
+(or (not x1016) x971)
+(or (not x1016) x1014)
+(or x1017 (not x1016))
+(or x1017 (not x1013))
+(or x1016 x1013 (not x1017))
+(or (not x982) (not x737) (not x1017) x1018)
+(or (not x1018) x982)
+(or (not x1018) x737)
+(or (not x1018) x1017)
+(or x1019 (not x1018))
+(or x1019 (not x1012))
+(or x1018 x1012 (not x1019))
+(or (not x1019) (not x737) x1020)
+(or (not x1020) x1019)
+(or (not x1020) x737)
+(or (not x970) (not x971) (not x948) (not x737) x1021)
+(or (not x1021) x970)
+(or (not x1021) x971)
+(or (not x1021) x948)
+(or (not x1021) x737)
+(or (not x973) (not x1022) x1023)
+(or (not x1023) x973)
+(or (not x1023) x1022)
+(or x1024 (not x1023))
+(or x1024 (not x1021))
+(or x1023 x1021 (not x1024))
+(or x977 x982)
+(or x977 x737)
+(or (not x982) (not x737) (not x977))
+(or (not x977) (not x1024) x1025)
+(or (not x1025) x977)
+(or (not x1025) x1024)
+(or (not x754) (not x737) (not x72) (not x79) (not x1026) (not x1027) x1028)
+(or (not x1028) x754)
+(or (not x1028) x737)
+(or (not x1028) x72)
+(or (not x1028) x79)
+(or (not x1028) x1026)
+(or (not x1028) x1027)
+(or (not x71) (not x760) (not x737) (not x79) (not x767) (not x762) (not x737) (not x751) x764 x1029)
+(or (not x1029) x71)
+(or (not x1029) x760)
+(or (not x1029) x737)
+(or (not x1029) x79)
+(or (not x1029) x767)
+(or (not x1029) x762)
+(or (not x1029) x737)
+(or (not x1029) x751)
+(or (not x1029) (not x764))
+(or x973 (not x1029))
+(or x973 (not x1028))
+(or x1029 x1028 (not x973))
+(or (not x973) (not x948) (not x737) x1030)
+(or (not x1030) x973)
+(or (not x1030) x948)
+(or (not x1030) x737)
+(or x1031 x1032 x1033)
+(or x1031 (not x1032) (not x1033))
+(or (not x1031) x1032 (not x1033))
+(or (not x1031) (not x1032) x1033)
+(or x971 x754)
+(or x971 x737)
+(or x971 (not x719))
+(or x971 (not x693))
+(or x971 (not x755))
+(or x971 (not x759))
+(or (not x754) (not x737) x719 x693 x755 x759 (not x971))
+(or x970 (not x718))
+(or x970 x760)
+(or x970 x737)
+(or x970 (not x693))
+(or x970 (not x761))
+(or x970 x762)
+(or x970 x737)
+(or x970 (not x763))
+(or x970 (not x764))
+(or x718 (not x760) (not x737) x693 x761 (not x762) (not x737) x763 x764 (not x970))
+(or (not x970) (not x971) (not x1031) x1034)
+(or (not x1034) x970)
+(or (not x1034) x971)
+(or (not x1034) x1031)
+(or x1035 (not x1034))
+(or x1035 (not x1030))
+(or x1034 x1030 (not x1035))
+(or (not x982) (not x737) (not x1035) x1036)
+(or (not x1036) x982)
+(or (not x1036) x737)
+(or (not x1036) x1035)
+(or x1037 (not x1036))
+(or x1037 (not x1025))
+(or x1036 x1025 (not x1037))
+(or (not x1037) (not x737) x1038)
+(or (not x1038) x1037)
+(or (not x1038) x737)
+(or (not x1039) (not x1040) (not x737) x1041)
+(or (not x1041) x1039)
+(or (not x1041) x1040)
+(or (not x1041) x737)
+(or (not x1042) (not x1027) (not x1043) x1044)
+(or (not x1044) x1042)
+(or (not x1044) x1027)
+(or (not x1044) x1043)
+(or x1045 (not x1044))
+(or x1045 (not x1041))
+(or x1044 x1041 (not x1045))
+(or (not x754) (not x737) (not x72) (not x79) (not x1026) (not x1045) x1046)
+(or (not x1046) x754)
+(or (not x1046) x737)
+(or (not x1046) x72)
+(or (not x1046) x79)
+(or (not x1046) x1026)
+(or (not x1046) x1045)
+(or (not x1047) (not x767) (not x762) (not x737) (not x751) x764 (not x1040) (not x737) x1048)
+(or (not x1048) x1047)
+(or (not x1048) x767)
+(or (not x1048) x762)
+(or (not x1048) x737)
+(or (not x1048) x751)
+(or (not x1048) (not x764))
+(or (not x1048) x1040)
+(or (not x1048) x737)
+(or x1049 (not x1015))
+(or x1049 (not x1050))
+(or x1049 (not x1051))
+(or x1015 x1050 x1051 (not x1049))
+(or x1022 x1032 x1049)
+(or x1022 (not x1032) (not x1049))
+(or (not x1022) x1032 (not x1049))
+(or (not x1022) (not x1032) x1049)
+(or (not x1052) (not x1022) x1053)
+(or (not x1053) x1052)
+(or (not x1053) x1022)
+(or x1054 (not x1055))
+(or x1054 (not x1053))
+(or x1055 x1053 (not x1054))
+(or (not x1056) (not x1054) x1057)
+(or (not x1057) x1056)
+(or (not x1057) x1054)
+(or (not x1058) (not x737) (not x1059) (not x737) x1060)
+(or (not x1060) x1058)
+(or (not x1060) x737)
+(or (not x1060) x1059)
+(or (not x1060) x737)
+(or x1061 (not x757))
+(or x1061 (not x1060))
+(or x1061 (not x756))
+(or x757 x1060 x756 (not x1061))
+(or x1043 x758 x1061)
+(or x1043 (not x758) (not x1061))
+(or (not x1043) x758 (not x1061))
+(or (not x1043) (not x758) x1061)
+(or (not x767) (not x762) (not x737) (not x751) x764 (not x1062) (not x1043) x1063)
+(or (not x1063) x767)
+(or (not x1063) x762)
+(or (not x1063) x737)
+(or (not x1063) x751)
+(or (not x1063) (not x764))
+(or (not x1063) x1062)
+(or (not x1063) x1043)
+(or x1064 (not x1063))
+(or x1064 (not x1057))
+(or x1063 x1057 (not x1064))
+(or (not x1065) (not x1064) x1066)
+(or (not x1066) x1065)
+(or (not x1066) x1064)
+(or x1067 (not x1066))
+(or x1067 (not x1048))
+(or x1066 x1048 (not x1067))
+(or (not x71) (not x760) (not x737) (not x79) (not x1067) x1068)
+(or (not x1068) x71)
+(or (not x1068) x760)
+(or (not x1068) x737)
+(or (not x1068) x79)
+(or (not x1068) x1067)
+(or (not x71) (not x72) (not x1040) (not x737) x1069)
+(or (not x1069) x71)
+(or (not x1069) x72)
+(or (not x1069) x1040)
+(or (not x1069) x737)
+(or x1070 (not x1069))
+(or x1070 (not x1068))
+(or x1070 (not x1046))
+(or x1069 x1068 x1046 (not x1070))
+(or (not x1070) (not x737) x1071)
+(or (not x1071) x1070)
+(or (not x1071) x737)
+(or (not x1039) (not x1058) (not x737) x1072)
+(or (not x1072) x1039)
+(or (not x1072) x1058)
+(or (not x1072) x737)
+(or (not x1042) (not x1027) (not x1073) x1074)
+(or (not x1074) x1042)
+(or (not x1074) x1027)
+(or (not x1074) x1073)
+(or x1075 (not x1074))
+(or x1075 (not x1072))
+(or x1074 x1072 (not x1075))
+(or (not x754) (not x737) (not x72) (not x79) (not x1026) (not x1075) x1076)
+(or (not x1076) x754)
+(or (not x1076) x737)
+(or (not x1076) x72)
+(or (not x1076) x79)
+(or (not x1076) x1026)
+(or (not x1076) x1075)
+(or (not x1047) (not x767) (not x762) (not x737) (not x751) x764 (not x1058) (not x737) x1077)
+(or (not x1077) x1047)
+(or (not x1077) x767)
+(or (not x1077) x762)
+(or (not x1077) x737)
+(or (not x1077) x751)
+(or (not x1077) (not x764))
+(or (not x1077) x1058)
+(or (not x1077) x737)
+(or x1009 x1015 x1051)
+(or x1009 (not x1015) (not x1051))
+(or (not x1009) x1015 (not x1051))
+(or (not x1009) (not x1015) x1051)
+(or (not x1052) (not x1009) x1078)
+(or (not x1078) x1052)
+(or (not x1078) x1009)
+(or x1079 (not x1055))
+(or x1079 (not x1078))
+(or x1055 x1078 (not x1079))
+(or (not x1056) (not x1079) x1080)
+(or (not x1080) x1056)
+(or (not x1080) x1079)
+(or x1073 x757 x756)
+(or x1073 (not x757) (not x756))
+(or (not x1073) x757 (not x756))
+(or (not x1073) (not x757) x756)
+(or (not x767) (not x762) (not x737) (not x751) x764 (not x1062) (not x1073) x1081)
+(or (not x1081) x767)
+(or (not x1081) x762)
+(or (not x1081) x737)
+(or (not x1081) x751)
+(or (not x1081) (not x764))
+(or (not x1081) x1062)
+(or (not x1081) x1073)
+(or x1082 (not x1081))
+(or x1082 (not x1080))
+(or x1081 x1080 (not x1082))
+(or (not x1065) (not x1082) x1083)
+(or (not x1083) x1065)
+(or (not x1083) x1082)
+(or x1084 (not x1083))
+(or x1084 (not x1077))
+(or x1083 x1077 (not x1084))
+(or (not x71) (not x760) (not x737) (not x79) (not x1084) x1085)
+(or (not x1085) x71)
+(or (not x1085) x760)
+(or (not x1085) x737)
+(or (not x1085) x79)
+(or (not x1085) x1084)
+(or (not x71) (not x72) (not x1058) (not x737) x1086)
+(or (not x1086) x71)
+(or (not x1086) x72)
+(or (not x1086) x1058)
+(or (not x1086) x737)
+(or x1087 (not x1086))
+(or x1087 (not x1085))
+(or x1087 (not x1076))
+(or x1086 x1085 x1076 (not x1087))
+(or (not x1087) (not x737) x1088)
+(or (not x1088) x1087)
+(or (not x1088) x737)
+(or (not x1089) (not x1090) (not x1091) (not x1027) x1092)
+(or (not x1092) x1089)
+(or (not x1092) x1090)
+(or (not x1092) x1091)
+(or (not x1092) x1027)
+(or x1039 (not x1092))
+(or x1039 (not x759))
+(or x1092 x759 (not x1039))
+(or (not x1039) (not x1059) (not x737) x1093)
+(or (not x1093) x1039)
+(or (not x1093) x1059)
+(or (not x1093) x737)
+(or (not x749) (not x737) (not x750) (not x751) (not x752) x742 x1094)
+(or (not x1094) x749)
+(or (not x1094) x737)
+(or (not x1094) x750)
+(or (not x1094) x751)
+(or (not x1094) x752)
+(or (not x1094) (not x742))
+(or (not x751) (not x752) (not x992) x770)
+(or (not x770) x751)
+(or (not x770) x752)
+(or (not x770) x992)
+(or x1027 (not x770))
+(or x1027 (not x763))
+(or x1027 (not x1095))
+(or x1027 (not x1094))
+(or x770 x763 x1095 x1094 (not x1027))
+(or (not x1042) (not x1027) (not x1089) x1096)
+(or (not x1096) x1042)
+(or (not x1096) x1027)
+(or (not x1096) x1089)
+(or x1097 (not x1096))
+(or x1097 (not x1093))
+(or x1096 x1093 (not x1097))
+(or (not x754) (not x737) (not x72) (not x79) (not x1026) (not x1097) x1098)
+(or (not x1098) x754)
+(or (not x1098) x737)
+(or (not x1098) x72)
+(or (not x1098) x79)
+(or (not x1098) x1026)
+(or (not x1098) x1097)
+(or x1091 x1040)
+(or x1091 x737)
+(or (not x1040) (not x737) (not x1091))
+(or x1090 x1058)
+(or x1090 x737)
+(or (not x1058) (not x737) (not x1090))
+(or (not x1089) (not x1090) (not x1091) x1099)
+(or (not x1099) x1089)
+(or (not x1099) x1090)
+(or (not x1099) x1091)
+(or x1047 (not x761))
+(or x1047 x762)
+(or x1047 x737)
+(or x1047 (not x763))
+(or x1047 (not x764))
+(or x1047 (not x1099))
+(or x761 (not x762) (not x737) x763 x764 x1099 (not x1047))
+(or (not x1047) (not x767) (not x762) (not x737) (not x751) x764 (not x1059) (not x737) x1100)
+(or (not x1100) x1047)
+(or (not x1100) x767)
+(or (not x1100) x762)
+(or (not x1100) x737)
+(or (not x1100) x751)
+(or (not x1100) (not x764))
+(or (not x1100) x1059)
+(or (not x1100) x737)
+(or x1033 x947)
+(or x1033 x737)
+(or x1033 x946)
+(or x1033 x737)
+(or (not x947) (not x737) (not x946) (not x737) (not x1033))
+(or x1052 x948)
+(or x1052 x737)
+(or x1052 x947)
+(or x1052 x737)
+(or x1052 x946)
+(or x1052 x737)
+(or (not x948) (not x737) (not x947) (not x737) (not x946) (not x737) (not x1052))
+(or (not x1052) (not x974) x1101)
+(or (not x1101) x1052)
+(or (not x1101) x974)
+(or (not x947) (not x737) (not x946) (not x737) x1050)
+(or (not x1050) x947)
+(or (not x1050) x737)
+(or (not x1050) x946)
+(or (not x1050) x737)
+(or (not x948) (not x737) (not x947) (not x737) (not x946) (not x737) x1055)
+(or (not x1055) x948)
+(or (not x1055) x737)
+(or (not x1055) x947)
+(or (not x1055) x737)
+(or (not x1055) x946)
+(or (not x1055) x737)
+(or x1102 (not x1055))
+(or x1102 (not x1101))
+(or x1055 x1101 (not x1102))
+(or (not x1056) (not x1102) x1103)
+(or (not x1103) x1056)
+(or (not x1103) x1102)
+(or x1089 x1059)
+(or x1089 x737)
+(or (not x1059) (not x737) (not x1089))
+(or (not x767) (not x762) (not x737) (not x751) x764 (not x1062) (not x1089) x1104)
+(or (not x1104) x767)
+(or (not x1104) x762)
+(or (not x1104) x737)
+(or (not x1104) x751)
+(or (not x1104) (not x764))
+(or (not x1104) x1062)
+(or (not x1104) x1089)
+(or x1105 (not x1104))
+(or x1105 (not x1103))
+(or x1104 x1103 (not x1105))
+(or x1065 (not x1106))
+(or x1065 (not x761))
+(or x1065 x762)
+(or x1065 x737)
+(or x1065 (not x763))
+(or x1065 (not x764))
+(or x1106 x761 (not x762) (not x737) x763 x764 (not x1065))
+(or (not x1065) (not x1105) x1107)
+(or (not x1107) x1065)
+(or (not x1107) x1105)
+(or x1108 (not x1107))
+(or x1108 (not x1100))
+(or x1107 x1100 (not x1108))
+(or (not x71) (not x760) (not x737) (not x79) (not x1108) x1109)
+(or (not x1109) x71)
+(or (not x1109) x760)
+(or (not x1109) x737)
+(or (not x1109) x79)
+(or (not x1109) x1108)
+(or (not x71) (not x72) (not x1059) (not x737) x1110)
+(or (not x1110) x71)
+(or (not x1110) x72)
+(or (not x1110) x1059)
+(or (not x1110) x737)
+(or x1111 (not x1110))
+(or x1111 (not x1109))
+(or x1111 (not x1098))
+(or x1110 x1109 x1098 (not x1111))
+(or (not x1111) (not x737) x1112)
+(or (not x1112) x1111)
+(or (not x1112) x737)
+(or (not x754) (not x737) (not x72) (not x79) (not x1026) (not x1042) (not x760) (not x737) x1113)
+(or (not x1113) x754)
+(or (not x1113) x737)
+(or (not x1113) x72)
+(or (not x1113) x79)
+(or (not x1113) x1026)
+(or (not x1113) x1042)
+(or (not x1113) x760)
+(or (not x1113) x737)
+(or (not x71) (not x760) (not x737) (not x79) (not x1056) (not x760) (not x737) x1114)
+(or (not x1114) x71)
+(or (not x1114) x760)
+(or (not x1114) x737)
+(or (not x1114) x79)
+(or (not x1114) x1056)
+(or (not x1114) x760)
+(or (not x1114) x737)
+(or (not x946) (not x737) x1051)
+(or (not x1051) x946)
+(or (not x1051) x737)
+(or (not x1115) (not x946) (not x737) x1116)
+(or (not x1116) x1115)
+(or (not x1116) x946)
+(or (not x1116) x737)
+(or x1117 (not x1015))
+(or x1117 (not x1116))
+(or x1015 x1116 (not x1117))
+(or (not x1118) (not x1117) x1119)
+(or (not x1119) x1118)
+(or (not x1119) x1117)
+(or x1120 (not x1032))
+(or x1120 (not x1119))
+(or x1120 (not x719))
+(or x1032 x1119 x719 (not x1120))
+(or (not x71) (not x72) (not x1120) x1121)
+(or (not x1121) x71)
+(or (not x1121) x72)
+(or (not x1121) x1120)
+(or x1122 (not x1121))
+(or x1122 (not x1114))
+(or x1122 (not x1113))
+(or x1121 x1114 x1113 (not x1122))
+(or (not x1122) (not x737) x1123)
+(or (not x1123) x1122)
+(or (not x1123) x737)
+(or x992 x749)
+(or x992 x737)
+(or x992 (not x775))
+(or (not x749) (not x737) x775 (not x992))
+(or x1124 x749)
+(or x1124 x737)
+(or x1124 (not x775))
+(or x1124 (not x763))
+(or x1124 (not x776))
+(or x1124 (not x742))
+(or (not x749) (not x737) x775 x763 x776 x742 (not x1124))
+(or (not x749) (not x737) (not x750) x1125)
+(or (not x1125) x749)
+(or (not x1125) x737)
+(or (not x1125) x750)
+(or x1126 (not x763))
+(or x1126 (not x776))
+(or x1126 (not x1125))
+(or x763 x776 x1125 (not x1126))
+(or (not x1126) (not x751) (not x1127) (not x1124) x759)
+(or (not x759) x1126)
+(or (not x759) x751)
+(or (not x759) x1127)
+(or (not x759) x1124)
+(or x1042 (not x756))
+(or x1042 (not x757))
+(or x1042 (not x758))
+(or x1042 (not x759))
+(or x756 x757 x758 x759 (not x1042))
+(or x1026 (not x718))
+(or x1026 x760)
+(or x1026 x737)
+(or x718 (not x760) (not x737) (not x1026))
+(or (not x754) (not x737) (not x72) (not x79) (not x1026) (not x1042) (not x754) (not x737) x1128)
+(or (not x1128) x754)
+(or (not x1128) x737)
+(or (not x1128) x72)
+(or (not x1128) x79)
+(or (not x1128) x1026)
+(or (not x1128) x1042)
+(or (not x1128) x754)
+(or (not x1128) x737)
+(or (not x767) (not x750) x763)
+(or (not x763) x767)
+(or (not x763) x750)
+(or x750 x762)
+(or x750 x737)
+(or (not x762) (not x737) (not x750))
+(or x752 (not x761))
+(or x752 x762)
+(or x752 x737)
+(or x761 (not x762) (not x737) (not x752))
+(or x1127 (not x761))
+(or x1127 x762)
+(or x1127 x737)
+(or x1127 (not x763))
+(or x761 (not x762) (not x737) x763 (not x1127))
+(or x1056 (not x761))
+(or x1056 x762)
+(or x1056 x737)
+(or x1056 (not x763))
+(or x1056 (not x764))
+(or x761 (not x762) (not x737) x763 x764 (not x1056))
+(or (not x1056) (not x754) (not x737) x1129)
+(or (not x1129) x1056)
+(or (not x1129) x754)
+(or (not x1129) x737)
+(or (not x1040) (not x737) x758)
+(or (not x758) x1040)
+(or (not x758) x737)
+(or (not x1058) (not x737) x757)
+(or (not x757) x1058)
+(or (not x757) x737)
+(or (not x1059) (not x737) x756)
+(or (not x756) x1059)
+(or (not x756) x737)
+(or x1062 (not x756))
+(or x1062 (not x757))
+(or x1062 (not x758))
+(or x756 x757 x758 (not x1062))
+(or (not x749) (not x737) x761)
+(or (not x761) x749)
+(or (not x761) x737)
+(or x751 (not x761))
+(or x751 (not x775))
+(or x761 x775 (not x751))
+(or (not x762) (not x737) x775)
+(or (not x775) x762)
+(or (not x775) x737)
+(or x767 x749)
+(or x767 x737)
+(or (not x749) (not x737) (not x767))
+(or (not x767) (not x762) (not x737) x776)
+(or (not x776) x767)
+(or (not x776) x762)
+(or (not x776) x737)
+(or (not x767) (not x762) (not x737) (not x751) x1095)
+(or (not x1095) x767)
+(or (not x1095) x762)
+(or (not x1095) x737)
+(or (not x1095) x751)
+(or (not x767) (not x762) (not x737) (not x751) x764 (not x1062) x1106)
+(or (not x1106) x767)
+(or (not x1106) x762)
+(or (not x1106) x737)
+(or (not x1106) x751)
+(or (not x1106) (not x764))
+(or (not x1106) x1062)
+(or x1130 (not x1106))
+(or x1130 (not x1129))
+(or x1106 x1129 (not x1130))
+(or x79 (not x718))
+(or x79 (not x719))
+(or x718 x719 (not x79))
+(or (not x760) (not x737) x719)
+(or (not x719) x760)
+(or (not x719) x737)
+(or (not x71) (not x760) (not x737) x755)
+(or (not x755) x71)
+(or (not x755) x760)
+(or (not x755) x737)
+(or (not x71) (not x760) (not x737) (not x79) (not x1130) x1131)
+(or (not x1131) x71)
+(or (not x1131) x760)
+(or (not x1131) x737)
+(or (not x1131) x79)
+(or (not x1131) x1130)
+(or (not x754) (not x737) x718)
+(or (not x718) x754)
+(or (not x718) x737)
+(or x974 x946)
+(or x974 x737)
+(or (not x946) (not x737) (not x974))
+(or (not x947) (not x737) x1015)
+(or (not x1015) x947)
+(or (not x1015) x737)
+(or x1132 (not x1015))
+(or x1132 x946)
+(or x1132 x737)
+(or x1015 (not x946) (not x737) (not x1132))
+(or x1115 x947)
+(or x1115 x737)
+(or (not x947) (not x737) (not x1115))
+(or (not x1115) (not x1132) x1133)
+(or (not x1133) x1115)
+(or (not x1133) x1132)
+(or (not x948) (not x737) x1032)
+(or (not x1032) x948)
+(or (not x1032) x737)
+(or x1134 (not x1032))
+(or x1134 (not x1133))
+(or x1032 x1133 (not x1134))
+(or x1118 x948)
+(or x1118 x737)
+(or (not x948) (not x737) (not x1118))
+(or x72 x760)
+(or x72 x737)
+(or (not x760) (not x737) (not x72))
+(or x71 x754)
+(or x71 x737)
+(or (not x754) (not x737) (not x71))
+(or (not x71) (not x72) x693)
+(or (not x693) x71)
+(or (not x693) x72)
+(or (not x71) (not x72) (not x1118) (not x1134) (not x754) (not x737) x1135)
+(or (not x1135) x71)
+(or (not x1135) x72)
+(or (not x1135) x1118)
+(or (not x1135) x1134)
+(or (not x1135) x754)
+(or (not x1135) x737)
+(or x1136 (not x1135))
+(or x1136 (not x1131))
+(or x1136 (not x1128))
+(or x1135 x1131 x1128 (not x1136))
+(or (not x1136) (not x737) x1137)
+(or (not x1137) x1136)
+(or (not x1137) x737)
+(or x1138 (not x738))
+(or x1138 (not x737))
+(or x738 x737 (not x1138))
+(or x738 x737 x1139)
+(or (not x1139) (not x738))
+(or (not x1139) (not x737))
+(or x1140 (not x1139))
+(or x1140 (not x738))
+(or x1140 x737)
+(or x1139 x738 (not x737) (not x1140))
+(or (not x1141) (not x69))
+(or (not x1141) x68)
+(or (not x1141) (not x67))
+(or (not x1141) x66)
+(or (not x1141) x65)
+(or (not x1142) (not x69))
+(or (not x1142) x68)
+(or (not x1142) (not x67))
+(or (not x1142) x66)
+(or (not x1142) (not x65))
+(or (not x1143) (not x69))
+(or (not x1143) x68)
+(or (not x1143) (not x67))
+(or (not x1143) (not x66))
+(or (not x1143) x65)
+(or (not x1144) (not x69))
+(or (not x1144) x68)
+(or (not x1144) (not x67))
+(or (not x1144) (not x66))
+(or (not x1144) (not x65))
+(or (not x1145) (not x69))
+(or (not x1145) (not x68))
+(or (not x1145) x67)
+(or (not x1145) x66)
+(or (not x1145) x65)
+(or (not x1146) (not x69))
+(or (not x1146) (not x68))
+(or (not x1146) x67)
+(or (not x1146) x66)
+(or (not x1146) (not x65))
+(or (not x1147) (not x69))
+(or (not x1147) (not x68))
+(or (not x1147) x67)
+(or (not x1147) (not x66))
+(or (not x1147) x65)
+(or (not x1148) (not x69))
+(or (not x1148) (not x68))
+(or (not x1148) x67)
+(or (not x1148) (not x66))
+(or (not x1148) (not x65))
+(or (not x1149) (not x69))
+(or (not x1149) (not x68))
+(or (not x1149) (not x67))
+(or (not x1149) x66)
+(or (not x1149) x65)
+(or (not x1150) (not x69))
+(or (not x1150) (not x68))
+(or (not x1150) (not x67))
+(or (not x1150) x66)
+(or (not x1150) (not x65))
+(or x69 x68 x67 x66 (not x65) x691)
+(or (not x691) (not x69))
+(or (not x691) (not x68))
+(or (not x691) (not x67))
+(or (not x691) (not x66))
+(or (not x691) x65)
+(or (not x1151) (not x69))
+(or (not x1151) (not x68))
+(or (not x1151) (not x67))
+(or (not x1151) (not x66))
+(or (not x1151) (not x65))
+(or x1152 (not x1151))
+(or x1152 (not x691))
+(or x1152 (not x1150))
+(or x1152 (not x1149))
+(or x1152 (not x1148))
+(or x1152 (not x1147))
+(or x1152 (not x1146))
+(or x1152 (not x1145))
+(or x1152 (not x1144))
+(or x1152 (not x1143))
+(or x1152 (not x1142))
+(or x1151 x691 x1150 x1149 x1148 x1147 x1146 x1145 x1144 x1143 x1142 (not x1152))
+(or (not x1153) (not x1154) (not x1155) (not x1156) (not x1157) (not x1158) (not x1159) (not x1160) x1161)
+(or (not x1161) x1153)
+(or (not x1161) x1154)
+(or (not x1161) x1155)
+(or (not x1161) x1156)
+(or (not x1161) x1157)
+(or (not x1161) x1158)
+(or (not x1161) x1159)
+(or (not x1161) x1160)
+(or x1162 (not x1163))
+(or x1162 x1164)
+(or x1163 (not x1164) (not x1162))
+(or x1163 (not x1162) (not x1165) x1166)
+(or (not x1166) (not x1163))
+(or (not x1166) x1162)
+(or (not x1166) x1165)
+(or x1155 (not x1167))
+(or x1155 (not x1168))
+(or x1155 (not x88))
+(or x1155 (not x87))
+(or x1155 (not x86))
+(or x1155 x85)
+(or x1155 x84)
+(or x1155 (not x1169))
+(or x1155 (not x1166))
+(or x1167 x1168 x88 x87 x86 (not x85) (not x84) x1169 x1166 (not x1155))
+(or x1170 (not x1171))
+(or x1170 x1172)
+(or x1171 (not x1172) (not x1170))
+(or x1171 (not x1170) (not x1173) x1174)
+(or (not x1174) (not x1171))
+(or (not x1174) x1170)
+(or (not x1174) x1173)
+(or x1154 (not x1167))
+(or x1154 (not x88))
+(or x1154 (not x87))
+(or x1154 (not x86))
+(or x1154 x85)
+(or x1154 (not x84))
+(or x1154 (not x1175))
+(or x1154 (not x1169))
+(or x1154 (not x1174))
+(or x1167 x88 x87 x86 (not x85) x84 x1175 x1169 x1174 (not x1154))
+(or x1176 (not x1177) x1178)
+(or (not x1178) (not x1176))
+(or (not x1178) x1177)
+(or x1179 (not x88))
+(or x1179 (not x87))
+(or x1179 (not x86))
+(or x1179 (not x85))
+(or x1179 x84)
+(or x1179 (not x1178))
+(or x88 x87 x86 x85 (not x84) x1178 (not x1179))
+(or (not x1179) (not x1154) (not x1155) (not x1156) (not x1157) (not x1160) x1180)
+(or (not x1180) x1179)
+(or (not x1180) x1154)
+(or (not x1180) x1155)
+(or (not x1180) x1156)
+(or (not x1180) x1157)
+(or (not x1180) x1160)
+(or x1165 (not x1163))
+(or x1165 (not x1164))
+(or x1163 x1164 (not x1165))
+(or x1181 (not x1167))
+(or x1181 (not x1168))
+(or x1181 (not x88))
+(or x1181 (not x87))
+(or x1181 (not x86))
+(or x1181 x85)
+(or x1181 x84)
+(or x1181 (not x1169))
+(or x1181 (not x1163))
+(or x1181 (not x1164))
+(or x1167 x1168 x88 x87 x86 (not x85) (not x84) x1169 x1163 x1164 (not x1181))
+(or x1173 (not x1171))
+(or x1173 (not x1172))
+(or x1171 x1172 (not x1173))
+(or x1182 (not x1167))
+(or x1182 (not x88))
+(or x1182 (not x87))
+(or x1182 (not x86))
+(or x1182 x85)
+(or x1182 (not x84))
+(or x1182 (not x1175))
+(or x1182 (not x1169))
+(or x1182 (not x1171))
+(or x1182 (not x1172))
+(or x1167 x88 x87 x86 (not x85) x84 x1175 x1169 x1171 x1172 (not x1182))
+(or x1183 (not x1176))
+(or x1183 (not x1184))
+(or x1183 x1185)
+(or x1176 x1184 (not x1185) (not x1183))
+(or x1176 (not x1186) (not x1183) (not x1177) x1187)
+(or (not x1187) (not x1176))
+(or (not x1187) x1186)
+(or (not x1187) x1183)
+(or (not x1187) x1177)
+(or x1153 (not x88))
+(or x1153 (not x87))
+(or x1153 (not x86))
+(or x1153 (not x85))
+(or x1153 x84)
+(or x1153 (not x1187))
+(or x88 x87 x86 x85 (not x84) x1187 (not x1153))
+(or (not x1153) (not x1182) (not x1181) (not x1158) (not x1159) (not x1160) x1188)
+(or (not x1188) x1153)
+(or (not x1188) x1182)
+(or (not x1188) x1181)
+(or (not x1188) x1158)
+(or (not x1188) x1159)
+(or (not x1188) x1160)
+(or x1189 (not x1167))
+(or x1189 (not x1168))
+(or x1189 (not x1190))
+(or x1189 (not x1191))
+(or x1189 (not x1192))
+(or x1189 (not x1193))
+(or x1189 (not x88))
+(or x1189 x87)
+(or x1189 (not x86))
+(or x1189 (not x85))
+(or x1189 x84)
+(or x1189 (not x92))
+(or x1189 (not x93))
+(or x1189 (not x94))
+(or x1189 (not x95))
+(or x1189 (not x96))
+(or x1189 (not x97))
+(or x1189 (not x1194))
+(or x1189 (not x1195))
+(or x1189 (not x1196))
+(or x1167 x1168 x1190 x1191 x1192 x1193 x88 (not x87) x86 x85 (not x84) x92 x93 x94 x95 x96 x97 x1194 x1195 x1196 (not x1189))
+(or x1197 (not x1167))
+(or x1197 (not x1168))
+(or x1197 (not x1190))
+(or x1197 (not x1191))
+(or x1197 (not x1192))
+(or x1197 (not x88))
+(or x1197 x87)
+(or x1197 (not x86))
+(or x1197 (not x85))
+(or x1197 (not x84))
+(or x1197 (not x1175))
+(or x1197 (not x1194))
+(or x1197 (not x1195))
+(or x1197 (not x92))
+(or x1197 (not x93))
+(or x1197 (not x94))
+(or x1197 (not x95))
+(or x1197 (not x96))
+(or x1197 (not x97))
+(or x1197 (not x1194))
+(or x1197 (not x1195))
+(or x1197 (not x1198))
+(or x1167 x1168 x1190 x1191 x1192 x88 (not x87) x86 x85 x84 x1175 x1194 x1195 x92 x93 x94 x95 x96 x97 x1194 x1195 x1198 (not x1197))
+(or x1199 (not x1167))
+(or x1199 (not x1168))
+(or x1199 (not x1190))
+(or x1199 (not x1191))
+(or x1199 (not x88))
+(or x1199 (not x87))
+(or x1199 x86)
+(or x1199 (not x85))
+(or x1199 x84)
+(or x1199 (not x92))
+(or x1199 (not x93))
+(or x1199 (not x94))
+(or x1199 (not x95))
+(or x1199 (not x96))
+(or x1199 (not x97))
+(or x1199 (not x1194))
+(or x1199 (not x1195))
+(or x1199 (not x1200))
+(or x1167 x1168 x1190 x1191 x88 x87 (not x86) x85 (not x84) x92 x93 x94 x95 x96 x97 x1194 x1195 x1200 (not x1199))
+(or x1201 (not x1167))
+(or x1201 (not x1168))
+(or x1201 (not x1190))
+(or x1201 (not x88))
+(or x1201 (not x87))
+(or x1201 x86)
+(or x1201 (not x85))
+(or x1201 (not x84))
+(or x1201 (not x1194))
+(or x1201 (not x1195))
+(or x1201 (not x92))
+(or x1201 (not x93))
+(or x1201 (not x94))
+(or x1201 (not x95))
+(or x1201 (not x96))
+(or x1201 (not x97))
+(or x1201 (not x1194))
+(or x1201 (not x1195))
+(or x1201 (not x1202))
+(or x1167 x1168 x1190 x88 x87 (not x86) x85 x84 x1194 x1195 x92 x93 x94 x95 x96 x97 x1194 x1195 x1202 (not x1201))
+(or x1177 (not x1176))
+(or x1177 (not x1184))
+(or x1177 (not x1185))
+(or x1176 x1184 x1185 (not x1177))
+(or (not x1186) (not x1177) x1203)
+(or (not x1203) x1186)
+(or (not x1203) x1177)
+(or x1204 (not x88))
+(or x1204 (not x87))
+(or x1204 (not x86))
+(or x1204 (not x85))
+(or x1204 x84)
+(or x1204 (not x1203))
+(or x88 x87 x86 x85 (not x84) x1203 (not x1204))
+(or (not x1204) (not x1205) (not x1206) (not x1201) (not x1199) (not x1197) (not x1189) (not x1160) x1207)
+(or (not x1207) x1204)
+(or (not x1207) x1205)
+(or (not x1207) x1206)
+(or (not x1207) x1201)
+(or (not x1207) x1199)
+(or (not x1207) x1197)
+(or (not x1207) x1189)
+(or (not x1207) x1160)
+(or x88 (not x87) x86 x85 (not x84) x92 x93 x94 x95 x96 x97 (not x90) (not x91) x1208)
+(or (not x1208) (not x88))
+(or (not x1208) x87)
+(or (not x1208) (not x86))
+(or (not x1208) (not x85))
+(or (not x1208) x84)
+(or (not x1208) (not x92))
+(or (not x1208) (not x93))
+(or (not x1208) (not x94))
+(or (not x1208) (not x95))
+(or (not x1208) (not x96))
+(or (not x1208) (not x97))
+(or (not x1208) x90)
+(or (not x1208) x91)
+(or x1160 (not x1167))
+(or x1160 (not x1168))
+(or x1160 (not x1190))
+(or x1160 (not x1191))
+(or x1160 (not x1192))
+(or x1160 (not x1193))
+(or x1160 (not x1208))
+(or x1167 x1168 x1190 x1191 x1192 x1193 x1208 (not x1160))
+(or x88 (not x87) x86 x85 x84 (not x89) (not x90) (not x91) x92 x93 x94 x95 x96 x97 (not x90) (not x91) x1193)
+(or (not x1193) (not x88))
+(or (not x1193) x87)
+(or (not x1193) (not x86))
+(or (not x1193) (not x85))
+(or (not x1193) (not x84))
+(or (not x1193) x89)
+(or (not x1193) x90)
+(or (not x1193) x91)
+(or (not x1193) (not x92))
+(or (not x1193) (not x93))
+(or (not x1193) (not x94))
+(or (not x1193) (not x95))
+(or (not x1193) (not x96))
+(or (not x1193) (not x97))
+(or (not x1193) x90)
+(or (not x1193) x91)
+(or x1159 (not x1167))
+(or x1159 (not x1168))
+(or x1159 (not x1190))
+(or x1159 (not x1191))
+(or x1159 (not x1192))
+(or x1159 (not x1193))
+(or x1159 (not x88))
+(or x1159 x87)
+(or x1159 (not x86))
+(or x1159 (not x85))
+(or x1159 x84)
+(or x1159 (not x92))
+(or x1159 (not x93))
+(or x1159 (not x94))
+(or x1159 (not x95))
+(or x1159 (not x96))
+(or x1159 (not x97))
+(or x1159 (not x1194))
+(or x1159 (not x1195))
+(or x1167 x1168 x1190 x1191 x1192 x1193 x88 (not x87) x86 x85 (not x84) x92 x93 x94 x95 x96 x97 x1194 x1195 (not x1159))
+(or x1209 (not x1167))
+(or x1209 (not x1168))
+(or x1209 (not x1190))
+(or x1209 (not x1191))
+(or x1209 (not x1192))
+(or x1209 (not x1193))
+(or x1209 (not x88))
+(or x1209 x87)
+(or x1209 (not x86))
+(or x1209 (not x85))
+(or x1209 x84)
+(or x1209 (not x92))
+(or x1209 (not x93))
+(or x1209 (not x94))
+(or x1209 (not x95))
+(or x1209 (not x96))
+(or x1209 (not x97))
+(or x1209 (not x1194))
+(or x1209 (not x1195))
+(or x1209 x1196)
+(or x1167 x1168 x1190 x1191 x1192 x1193 x88 (not x87) x86 x85 (not x84) x92 x93 x94 x95 x96 x97 x1194 x1195 (not x1196) (not x1209))
+(or x88 x87 (not x86) x85 (not x84) x92 x93 x94 x95 x96 x97 (not x90) (not x91) x1192)
+(or (not x1192) (not x88))
+(or (not x1192) (not x87))
+(or (not x1192) x86)
+(or (not x1192) (not x85))
+(or (not x1192) x84)
+(or (not x1192) (not x92))
+(or (not x1192) (not x93))
+(or (not x1192) (not x94))
+(or (not x1192) (not x95))
+(or (not x1192) (not x96))
+(or (not x1192) (not x97))
+(or (not x1192) x90)
+(or (not x1192) x91)
+(or x1158 (not x1167))
+(or x1158 (not x1168))
+(or x1158 (not x1190))
+(or x1158 (not x1191))
+(or x1158 (not x1192))
+(or x1158 (not x88))
+(or x1158 x87)
+(or x1158 (not x86))
+(or x1158 (not x85))
+(or x1158 (not x84))
+(or x1158 (not x1175))
+(or x1158 (not x1194))
+(or x1158 (not x1195))
+(or x1158 (not x92))
+(or x1158 (not x93))
+(or x1158 (not x94))
+(or x1158 (not x95))
+(or x1158 (not x96))
+(or x1158 (not x97))
+(or x1158 (not x1194))
+(or x1158 (not x1195))
+(or x1167 x1168 x1190 x1191 x1192 x88 (not x87) x86 x85 x84 x1175 x1194 x1195 x92 x93 x94 x95 x96 x97 x1194 x1195 (not x1158))
+(or x1210 (not x1167))
+(or x1210 (not x1168))
+(or x1210 (not x1190))
+(or x1210 (not x1191))
+(or x1210 (not x1192))
+(or x1210 (not x88))
+(or x1210 x87)
+(or x1210 (not x86))
+(or x1210 (not x85))
+(or x1210 (not x84))
+(or x1210 (not x1175))
+(or x1210 (not x1194))
+(or x1210 (not x1195))
+(or x1210 (not x92))
+(or x1210 (not x93))
+(or x1210 (not x94))
+(or x1210 (not x95))
+(or x1210 (not x96))
+(or x1210 (not x97))
+(or x1210 (not x1194))
+(or x1210 (not x1195))
+(or x1210 x1198)
+(or x1167 x1168 x1190 x1191 x1192 x88 (not x87) x86 x85 x84 x1175 x1194 x1195 x92 x93 x94 x95 x96 x97 x1194 x1195 (not x1198) (not x1210))
+(or x88 x87 (not x86) x85 x84 (not x90) (not x91) x92 x93 x94 x95 x96 x97 (not x90) (not x91) x1191)
+(or (not x1191) (not x88))
+(or (not x1191) (not x87))
+(or (not x1191) x86)
+(or (not x1191) (not x85))
+(or (not x1191) (not x84))
+(or (not x1191) x90)
+(or (not x1191) x91)
+(or (not x1191) (not x92))
+(or (not x1191) (not x93))
+(or (not x1191) (not x94))
+(or (not x1191) (not x95))
+(or (not x1191) (not x96))
+(or (not x1191) (not x97))
+(or (not x1191) x90)
+(or (not x1191) x91)
+(or x1157 (not x1167))
+(or x1157 (not x1168))
+(or x1157 (not x1190))
+(or x1157 (not x1191))
+(or x1157 (not x88))
+(or x1157 (not x87))
+(or x1157 x86)
+(or x1157 (not x85))
+(or x1157 x84)
+(or x1157 (not x92))
+(or x1157 (not x93))
+(or x1157 (not x94))
+(or x1157 (not x95))
+(or x1157 (not x96))
+(or x1157 (not x97))
+(or x1157 (not x1194))
+(or x1157 (not x1195))
+(or x1167 x1168 x1190 x1191 x88 x87 (not x86) x85 (not x84) x92 x93 x94 x95 x96 x97 x1194 x1195 (not x1157))
+(or x1211 (not x1167))
+(or x1211 (not x1168))
+(or x1211 (not x1190))
+(or x1211 (not x1191))
+(or x1211 (not x88))
+(or x1211 (not x87))
+(or x1211 x86)
+(or x1211 (not x85))
+(or x1211 x84)
+(or x1211 (not x92))
+(or x1211 (not x93))
+(or x1211 (not x94))
+(or x1211 (not x95))
+(or x1211 (not x96))
+(or x1211 (not x97))
+(or x1211 (not x1194))
+(or x1211 (not x1195))
+(or x1211 x1200)
+(or x1167 x1168 x1190 x1191 x88 x87 (not x86) x85 (not x84) x92 x93 x94 x95 x96 x97 x1194 x1195 (not x1200) (not x1211))
+(or x88 x87 x86 (not x85) (not x84) (not x98) x1190)
+(or (not x1190) (not x88))
+(or (not x1190) (not x87))
+(or (not x1190) (not x86))
+(or (not x1190) x85)
+(or (not x1190) x84)
+(or (not x1190) x98)
+(or x1156 (not x1167))
+(or x1156 (not x1168))
+(or x1156 (not x1190))
+(or x1156 (not x88))
+(or x1156 (not x87))
+(or x1156 x86)
+(or x1156 (not x85))
+(or x1156 (not x84))
+(or x1156 (not x1194))
+(or x1156 (not x1195))
+(or x1156 (not x92))
+(or x1156 (not x93))
+(or x1156 (not x94))
+(or x1156 (not x95))
+(or x1156 (not x96))
+(or x1156 (not x97))
+(or x1156 (not x1194))
+(or x1156 (not x1195))
+(or x1167 x1168 x1190 x88 x87 (not x86) x85 x84 x1194 x1195 x92 x93 x94 x95 x96 x97 x1194 x1195 (not x1156))
+(or x1212 (not x1167))
+(or x1212 (not x1168))
+(or x1212 (not x1190))
+(or x1212 (not x88))
+(or x1212 (not x87))
+(or x1212 x86)
+(or x1212 (not x85))
+(or x1212 (not x84))
+(or x1212 (not x1194))
+(or x1212 (not x1195))
+(or x1212 (not x92))
+(or x1212 (not x93))
+(or x1212 (not x94))
+(or x1212 (not x95))
+(or x1212 (not x96))
+(or x1212 (not x97))
+(or x1212 (not x1194))
+(or x1212 (not x1195))
+(or x1212 x1202)
+(or x1167 x1168 x1190 x88 x87 (not x86) x85 x84 x1194 x1195 x92 x93 x94 x95 x96 x97 x1194 x1195 (not x1202) (not x1212))
+(or x89 x1213)
+(or x89 (not x1194))
+(or x89 (not x1195))
+(or (not x1213) x1194 x1195 (not x89))
+(or x88 x87 x86 (not x85) x84 (not x89) (not x98) x1168)
+(or (not x1168) (not x88))
+(or (not x1168) (not x87))
+(or (not x1168) (not x86))
+(or (not x1168) x85)
+(or (not x1168) (not x84))
+(or (not x1168) x89)
+(or (not x1168) x98)
+(or x1206 (not x1167))
+(or x1206 (not x1168))
+(or x1206 (not x88))
+(or x1206 (not x87))
+(or x1206 (not x86))
+(or x1206 x85)
+(or x1206 x84)
+(or x1206 (not x1169))
+(or x1206 x1163)
+(or x1167 x1168 x88 x87 x86 (not x85) (not x84) x1169 (not x1163) (not x1206))
+(or (not x1213) (not x90) (not x91) x1175)
+(or (not x1175) x1213)
+(or (not x1175) x90)
+(or (not x1175) x91)
+(or x1205 (not x1167))
+(or x1205 (not x88))
+(or x1205 (not x87))
+(or x1205 (not x86))
+(or x1205 x85)
+(or x1205 (not x84))
+(or x1205 (not x1175))
+(or x1205 (not x1169))
+(or x1205 x1171)
+(or x1167 x88 x87 x86 (not x85) x84 x1175 x1169 (not x1171) (not x1205))
+(or x1186 (not x1176))
+(or x1186 x1184)
+(or x1176 (not x1184) (not x1186))
+(or x1176 (not x1186) x1215)
+(or (not x1215) (not x1176))
+(or (not x1215) x1186)
+(or x1216 (not x88))
+(or x1216 (not x87))
+(or x1216 (not x86))
+(or x1216 (not x85))
+(or x1216 x84)
+(or x1216 (not x1215))
+(or x88 x87 x86 x85 (not x84) x1215 (not x1216))
+(or (not x1216) (not x1205) (not x1206) (not x1212) (not x1211) (not x1210) (not x1209) (not x1160) x1217)
+(or (not x1217) x1216)
+(or (not x1217) x1205)
+(or (not x1217) x1206)
+(or (not x1217) x1212)
+(or (not x1217) x1211)
+(or (not x1217) x1210)
+(or (not x1217) x1209)
+(or (not x1217) x1160)
+(or x1218 x1219)
+(or x1218 x1213)
+(or x1218 x1220)
+(or x1218 x1213)
+(or x1218 x1221)
+(or x1218 x1213)
+(or (not x1219) (not x1213) (not x1220) (not x1213) (not x1221) (not x1213) (not x1218))
+(or (not x1218) (not x1222) x1223)
+(or (not x1223) x1218)
+(or (not x1223) x1222)
+(or x1224 x1219)
+(or x1224 x1213)
+(or x1224 x1219)
+(or x1224 x1213)
+(or x1224 (not x1223))
+(or (not x1219) (not x1213) (not x1219) (not x1213) x1223 (not x1224))
+(or (not x1225) (not x1226) x1227)
+(or (not x1227) x1225)
+(or (not x1227) x1226)
+(or x1222 (not x1228))
+(or x1222 (not x1227))
+(or x1228 x1227 (not x1222))
+(or (not x1219) (not x1213) (not x1220) (not x1213) (not x1221) (not x1213) x1229)
+(or (not x1229) x1219)
+(or (not x1229) x1213)
+(or (not x1229) x1220)
+(or (not x1229) x1213)
+(or (not x1229) x1221)
+(or (not x1229) x1213)
+(or x1230 (not x1229))
+(or x1230 (not x1228))
+(or x1230 (not x1227))
+(or x1229 x1228 x1227 (not x1230))
+(or x1231 x1228 x1230)
+(or x1231 (not x1228) (not x1230))
+(or (not x1231) x1228 (not x1230))
+(or (not x1231) (not x1228) x1230)
+(or x1232 x1231 x1224)
+(or x1232 (not x1231) (not x1224))
+(or (not x1232) x1231 (not x1224))
+(or (not x1232) (not x1231) x1224)
+(or (not x1233) (not x1234) (not x1235) (not x1236) (not x1232) x1237)
+(or (not x1237) x1233)
+(or (not x1237) x1234)
+(or (not x1237) x1235)
+(or (not x1237) x1236)
+(or (not x1237) x1232)
+(or (not x1238) (not x1219) (not x1213) x1239)
+(or (not x1239) x1238)
+(or (not x1239) x1219)
+(or (not x1239) x1213)
+(or x1240 (not x1239))
+(or x1240 (not x1237))
+(or x1239 x1237 (not x1240))
+(or (not x1240) (not x1213) x1241)
+(or (not x1241) x1240)
+(or (not x1241) x1213)
+(or x1242 x1243)
+(or x1242 x1213)
+(or x1242 x1220)
+(or x1242 x1213)
+(or x1242 x1244)
+(or x1242 x1213)
+(or (not x1243) (not x1213) (not x1220) (not x1213) (not x1244) (not x1213) (not x1242))
+(or (not x1242) (not x1245) x1246)
+(or (not x1246) x1242)
+(or (not x1246) x1245)
+(or x1247 x1243)
+(or x1247 x1213)
+(or x1247 x1243)
+(or x1247 x1213)
+(or x1247 (not x1246))
+(or (not x1243) (not x1213) (not x1243) (not x1213) x1246 (not x1247))
+(or (not x1248) (not x1249) x1250)
+(or (not x1250) x1248)
+(or (not x1250) x1249)
+(or x1245 (not x1251))
+(or x1245 (not x1250))
+(or x1251 x1250 (not x1245))
+(or (not x1243) (not x1213) (not x1220) (not x1213) (not x1244) (not x1213) x1252)
+(or (not x1252) x1243)
+(or (not x1252) x1213)
+(or (not x1252) x1220)
+(or (not x1252) x1213)
+(or (not x1252) x1244)
+(or (not x1252) x1213)
+(or x1253 (not x1252))
+(or x1253 (not x1251))
+(or x1253 (not x1250))
+(or x1252 x1251 x1250 (not x1253))
+(or x1254 x1251 x1253)
+(or x1254 (not x1251) (not x1253))
+(or (not x1254) x1251 (not x1253))
+(or (not x1254) (not x1251) x1253)
+(or x1255 x1254 x1247)
+(or x1255 (not x1254) (not x1247))
+(or (not x1255) x1254 (not x1247))
+(or (not x1255) (not x1254) x1247)
+(or (not x1233) (not x1256) (not x1213) x1257 (not x1213) (not x1236) (not x1258) (not x1235) (not x1236) (not x1255) x1259)
+(or (not x1259) x1233)
+(or (not x1259) x1256)
+(or (not x1259) x1213)
+(or (not x1259) (not x1257))
+(or (not x1259) x1213)
+(or (not x1259) x1236)
+(or (not x1259) x1258)
+(or (not x1259) x1235)
+(or (not x1259) x1236)
+(or (not x1259) x1255)
+(or (not x1260) (not x1243) (not x1213) x1261)
+(or (not x1261) x1260)
+(or (not x1261) x1243)
+(or (not x1261) x1213)
+(or x1262 (not x1261))
+(or x1262 (not x1259))
+(or x1261 x1259 (not x1262))
+(or (not x1262) (not x1213) x1263)
+(or (not x1263) x1262)
+(or (not x1263) x1213)
+(or x1226 (not x1264))
+(or x1226 x1221)
+(or x1226 x1213)
+(or x1264 (not x1221) (not x1213) (not x1226))
+(or x1265 x1266)
+(or x1265 x1213)
+(or x1265 (not x1264))
+(or x1265 x1221)
+(or x1265 x1213)
+(or (not x1266) (not x1213) x1264 (not x1221) (not x1213) (not x1265))
+(or x1267 (not x1268))
+(or x1267 x1269)
+(or x1267 x1213)
+(or x1268 (not x1269) (not x1213) (not x1267))
+(or (not x1267) (not x1265) x1270)
+(or (not x1270) x1267)
+(or (not x1270) x1265)
+(or x1271 x1268 x1270)
+(or x1271 (not x1268) (not x1270))
+(or (not x1271) x1268 (not x1270))
+(or (not x1271) (not x1268) x1270)
+(or (not x1272) (not x1271) x1273)
+(or (not x1273) x1272)
+(or (not x1273) x1271)
+(or (not x1274) (not x1275) (not x1266) (not x1213) x1276)
+(or (not x1276) x1274)
+(or (not x1276) x1275)
+(or (not x1276) x1266)
+(or (not x1276) x1213)
+(or x1277 (not x1276))
+(or x1277 (not x1273))
+(or x1276 x1273 (not x1277))
+(or (not x1277) (not x1213) x1278)
+(or (not x1278) x1277)
+(or (not x1278) x1213)
+(or (not x1279) (not x1213) x1280)
+(or (not x1280) x1279)
+(or (not x1280) x1213)
+(or (not x1281) (not x1213) x1282)
+(or (not x1282) x1281)
+(or (not x1282) x1213)
+(or (not x1283) (not x1213) x1284)
+(or (not x1284) x1283)
+(or (not x1284) x1213)
+(or x1285 (not x1286))
+(or x1285 x1213)
+(or x1285 (not x1287))
+(or x1285 x1288)
+(or x1285 x1289)
+(or x1285 x1290)
+(or x1285 (not x1291))
+(or x1285 x1292)
+(or x1285 (not x1293))
+(or x1285 x1294)
+(or x1285 x1295)
+(or x1285 x1296)
+(or x1285 (not x1297))
+(or x1285 x1298)
+(or x1285 x1299)
+(or x1285 x1300)
+(or x1285 (not x1284))
+(or x1285 (not x1282))
+(or x1285 (not x1280))
+(or x1286 (not x1213) x1287 (not x1288) (not x1289) (not x1290) x1291 (not x1292) x1293 (not x1294) (not x1295) (not x1296) x1297 (not x1298) (not x1299) (not x1300) x1284 x1282 x1280 (not x1285))
+(or (not x1285) (not x1220) (not x1213) x1301)
+(or (not x1301) x1285)
+(or (not x1301) x1220)
+(or (not x1301) x1213)
+(or x1302 x1279)
+(or x1302 x1213)
+(or (not x1279) (not x1213) (not x1302))
+(or x1303 x1281)
+(or x1303 x1213)
+(or (not x1281) (not x1213) (not x1303))
+(or x1304 x1283)
+(or x1304 x1213)
+(or (not x1283) (not x1213) (not x1304))
+(or x1286 (not x1213) (not x1305) (not x1288) (not x1289) (not x1290) x1291 (not x1292) x1293 (not x1294) (not x1295) (not x1296) x1297 (not x1298) (not x1299) (not x1300) (not x1304) (not x1303) (not x1302) x1306 x1307)
+(or (not x1307) (not x1286))
+(or (not x1307) x1213)
+(or (not x1307) x1305)
+(or (not x1307) x1288)
+(or (not x1307) x1289)
+(or (not x1307) x1290)
+(or (not x1307) (not x1291))
+(or (not x1307) x1292)
+(or (not x1307) (not x1293))
+(or (not x1307) x1294)
+(or (not x1307) x1295)
+(or (not x1307) x1296)
+(or (not x1307) (not x1297))
+(or (not x1307) x1298)
+(or (not x1307) x1299)
+(or (not x1307) x1300)
+(or (not x1307) x1304)
+(or (not x1307) x1303)
+(or (not x1307) x1302)
+(or (not x1307) (not x1306))
+(or x1308 (not x1307))
+(or x1308 (not x1301))
+(or x1307 x1301 (not x1308))
+(or (not x1308) (not x1213) x1309)
+(or (not x1309) x1308)
+(or (not x1309) x1213)
+(or x1249 (not x1264))
+(or x1249 x1244)
+(or x1249 x1213)
+(or x1264 (not x1244) (not x1213) (not x1249))
+(or x1310 x1311)
+(or x1310 x1213)
+(or x1310 (not x1264))
+(or x1310 x1244)
+(or x1310 x1213)
+(or (not x1311) (not x1213) x1264 (not x1244) (not x1213) (not x1310))
+(or x1312 (not x1313))
+(or x1312 x1314)
+(or x1312 x1213)
+(or x1313 (not x1314) (not x1213) (not x1312))
+(or (not x1312) (not x1310) x1315)
+(or (not x1315) x1312)
+(or (not x1315) x1310)
+(or x1316 x1313 x1315)
+(or x1316 (not x1313) (not x1315))
+(or (not x1316) x1313 (not x1315))
+(or (not x1316) (not x1313) x1315)
+(or (not x1317) (not x1316) x1318)
+(or (not x1318) x1317)
+(or (not x1318) x1316)
+(or (not x1319) (not x1320) (not x1311) (not x1213) x1321)
+(or (not x1321) x1319)
+(or (not x1321) x1320)
+(or (not x1321) x1311)
+(or (not x1321) x1213)
+(or x1322 (not x1321))
+(or x1322 (not x1318))
+(or x1321 x1318 (not x1322))
+(or (not x1322) (not x1213) x1323)
+(or (not x1323) x1322)
+(or (not x1323) x1213)
+(or (not x1324) (not x1325) (not x1213) x1326)
+(or (not x1326) x1324)
+(or (not x1326) x1325)
+(or (not x1326) x1213)
+(or (not x1248) (not x1327) (not x1213) (not x1328) (not x1213) x1329)
+(or (not x1329) x1248)
+(or (not x1329) x1327)
+(or (not x1329) x1213)
+(or (not x1329) x1328)
+(or (not x1329) x1213)
+(or x1330 (not x1329))
+(or x1330 (not x1326))
+(or x1329 x1326 (not x1330))
+(or (not x1330) (not x1213) x1331)
+(or (not x1331) x1330)
+(or (not x1331) x1213)
+(or (not x1332) (not x1333) (not x1213) x1334)
+(or (not x1334) x1332)
+(or (not x1334) x1333)
+(or (not x1334) x1213)
+(or (not x1335) (not x1336) (not x1213) (not x1337) (not x1213) x1338)
+(or (not x1338) x1335)
+(or (not x1338) x1336)
+(or (not x1338) x1213)
+(or (not x1338) x1337)
+(or (not x1338) x1213)
+(or x1339 (not x1338))
+(or x1339 (not x1334))
+(or x1338 x1334 (not x1339))
+(or (not x1339) (not x1213) x1340)
+(or (not x1340) x1339)
+(or (not x1340) x1213)
+(or (not x1324) (not x1341) (not x1213) x1342)
+(or (not x1342) x1324)
+(or (not x1342) x1341)
+(or (not x1342) x1213)
+(or (not x1248) (not x1327) (not x1213) (not x1343) (not x1213) x1344)
+(or (not x1344) x1248)
+(or (not x1344) x1327)
+(or (not x1344) x1213)
+(or (not x1344) x1343)
+(or (not x1344) x1213)
+(or x1345 (not x1344))
+(or x1345 (not x1342))
+(or x1344 x1342 (not x1345))
+(or (not x1345) (not x1213) x1346)
+(or (not x1346) x1345)
+(or (not x1346) x1213)
+(or (not x1332) (not x1347) (not x1213) x1348)
+(or (not x1348) x1332)
+(or (not x1348) x1347)
+(or (not x1348) x1213)
+(or (not x1335) (not x1336) (not x1213) (not x1349) (not x1213) x1350)
+(or (not x1350) x1335)
+(or (not x1350) x1336)
+(or (not x1350) x1213)
+(or (not x1350) x1349)
+(or (not x1350) x1213)
+(or x1351 (not x1350))
+(or x1351 (not x1348))
+(or x1350 x1348 (not x1351))
+(or (not x1351) (not x1213) x1352)
+(or (not x1352) x1351)
+(or (not x1352) x1213)
+(or (not x1324) (not x1353) (not x1213) x1354)
+(or (not x1354) x1324)
+(or (not x1354) x1353)
+(or (not x1354) x1213)
+(or (not x1248) (not x1327) (not x1213) (not x1355) (not x1213) x1356)
+(or (not x1356) x1248)
+(or (not x1356) x1327)
+(or (not x1356) x1213)
+(or (not x1356) x1355)
+(or (not x1356) x1213)
+(or x1357 (not x1356))
+(or x1357 (not x1354))
+(or x1356 x1354 (not x1357))
+(or (not x1357) (not x1213) x1358)
+(or (not x1358) x1357)
+(or (not x1358) x1213)
+(or (not x1332) (not x1359) (not x1213) x1360)
+(or (not x1360) x1332)
+(or (not x1360) x1359)
+(or (not x1360) x1213)
+(or (not x1335) (not x1336) (not x1213) (not x1361) (not x1213) x1362)
+(or (not x1362) x1335)
+(or (not x1362) x1336)
+(or (not x1362) x1213)
+(or (not x1362) x1361)
+(or (not x1362) x1213)
+(or x1363 (not x1362))
+(or x1363 (not x1360))
+(or x1362 x1360 (not x1363))
+(or (not x1363) (not x1213) x1364)
+(or (not x1364) x1363)
+(or (not x1364) x1213)
+(or (not x1324) (not x1365) (not x1213) x1366)
+(or (not x1366) x1324)
+(or (not x1366) x1365)
+(or (not x1366) x1213)
+(or (not x1248) (not x1327) (not x1213) (not x1367) (not x1213) x1368)
+(or (not x1368) x1248)
+(or (not x1368) x1327)
+(or (not x1368) x1213)
+(or (not x1368) x1367)
+(or (not x1368) x1213)
+(or x1369 (not x1368))
+(or x1369 (not x1366))
+(or x1368 x1366 (not x1369))
+(or (not x1369) (not x1213) x1370)
+(or (not x1370) x1369)
+(or (not x1370) x1213)
+(or (not x1332) (not x1371) (not x1213) x1372)
+(or (not x1372) x1332)
+(or (not x1372) x1371)
+(or (not x1372) x1213)
+(or (not x1335) (not x1336) (not x1213) (not x1373) (not x1213) x1374)
+(or (not x1374) x1335)
+(or (not x1374) x1336)
+(or (not x1374) x1213)
+(or (not x1374) x1373)
+(or (not x1374) x1213)
+(or x1375 (not x1374))
+(or x1375 (not x1372))
+(or x1374 x1372 (not x1375))
+(or (not x1375) (not x1213) x1376)
+(or (not x1376) x1375)
+(or (not x1376) x1213)
+(or (not x1324) (not x1377) (not x1213) x1378)
+(or (not x1378) x1324)
+(or (not x1378) x1377)
+(or (not x1378) x1213)
+(or (not x1248) (not x1327) (not x1213) (not x1379) (not x1213) x1380)
+(or (not x1380) x1248)
+(or (not x1380) x1327)
+(or (not x1380) x1213)
+(or (not x1380) x1379)
+(or (not x1380) x1213)
+(or x1381 (not x1380))
+(or x1381 (not x1378))
+(or x1380 x1378 (not x1381))
+(or (not x1381) (not x1213) x1382)
+(or (not x1382) x1381)
+(or (not x1382) x1213)
+(or (not x1332) (not x1383) (not x1213) x1384)
+(or (not x1384) x1332)
+(or (not x1384) x1383)
+(or (not x1384) x1213)
+(or (not x1335) (not x1336) (not x1213) (not x1385) (not x1213) x1386)
+(or (not x1386) x1335)
+(or (not x1386) x1336)
+(or (not x1386) x1213)
+(or (not x1386) x1385)
+(or (not x1386) x1213)
+(or x1387 (not x1386))
+(or x1387 (not x1384))
+(or x1386 x1384 (not x1387))
+(or (not x1387) (not x1213) x1388)
+(or (not x1388) x1387)
+(or (not x1388) x1213)
+(or (not x1324) (not x1389) (not x1213) x1390)
+(or (not x1390) x1324)
+(or (not x1390) x1389)
+(or (not x1390) x1213)
+(or (not x1248) (not x1327) (not x1213) (not x1391) (not x1213) x1392)
+(or (not x1392) x1248)
+(or (not x1392) x1327)
+(or (not x1392) x1213)
+(or (not x1392) x1391)
+(or (not x1392) x1213)
+(or x1393 (not x1392))
+(or x1393 (not x1390))
+(or x1392 x1390 (not x1393))
+(or (not x1393) (not x1213) x1394)
+(or (not x1394) x1393)
+(or (not x1394) x1213)
+(or (not x1332) (not x1395) (not x1213) x1396)
+(or (not x1396) x1332)
+(or (not x1396) x1395)
+(or (not x1396) x1213)
+(or (not x1335) (not x1336) (not x1213) (not x1397) (not x1213) x1398)
+(or (not x1398) x1335)
+(or (not x1398) x1336)
+(or (not x1398) x1213)
+(or (not x1398) x1397)
+(or (not x1398) x1213)
+(or x1399 (not x1398))
+(or x1399 (not x1396))
+(or x1398 x1396 (not x1399))
+(or (not x1399) (not x1213) x1400)
+(or (not x1400) x1399)
+(or (not x1400) x1213)
+(or (not x1401) (not x1402) (not x1213) x1403)
+(or (not x1403) x1401)
+(or (not x1403) x1402)
+(or (not x1403) x1213)
+(or (not x1225) (not x1404) (not x1213) (not x1405) (not x1213) x1406)
+(or (not x1406) x1225)
+(or (not x1406) x1404)
+(or (not x1406) x1213)
+(or (not x1406) x1405)
+(or (not x1406) x1213)
+(or x1407 (not x1406))
+(or x1407 (not x1403))
+(or x1406 x1403 (not x1407))
+(or (not x1407) (not x1213) x1408)
+(or (not x1408) x1407)
+(or (not x1408) x1213)
+(or (not x1409) (not x1410) (not x1213) x1411)
+(or (not x1411) x1409)
+(or (not x1411) x1410)
+(or (not x1411) x1213)
+(or (not x1412) (not x1413) (not x1213) (not x1414) (not x1213) x1415)
+(or (not x1415) x1412)
+(or (not x1415) x1413)
+(or (not x1415) x1213)
+(or (not x1415) x1414)
+(or (not x1415) x1213)
+(or x1416 (not x1415))
+(or x1416 (not x1411))
+(or x1415 x1411 (not x1416))
+(or (not x1416) (not x1213) x1417)
+(or (not x1417) x1416)
+(or (not x1417) x1213)
+(or x1418 (not x1419))
+(or x1418 x1213)
+(or x1419 (not x1213) (not x1418))
+(or x1420 (not x1421))
+(or x1420 (not x1422))
+(or x1421 x1422 (not x1420))
+(or (not x1420) (not x1423) x1424)
+(or (not x1424) x1420)
+(or (not x1424) x1423)
+(or x1421 (not x1425) x1426 x1427)
+(or (not x1427) (not x1421))
+(or (not x1427) x1425)
+(or (not x1427) (not x1426))
+(or x1428 (not x1427))
+(or x1428 (not x1424))
+(or x1428 x1213)
+(or x1427 x1424 (not x1213) (not x1428))
+(or (not x1429) (not x1213) (not x1430) (not x1431) (not x1432) (not x1433) (not x1305) (not x1434) (not x1435) (not x1213) x1436)
+(or (not x1436) x1429)
+(or (not x1436) x1213)
+(or (not x1436) x1430)
+(or (not x1436) x1431)
+(or (not x1436) x1432)
+(or (not x1436) x1433)
+(or (not x1436) x1305)
+(or (not x1436) x1434)
+(or (not x1436) x1435)
+(or (not x1436) x1213)
+(or (not x1437) (not x1435) (not x1213) (not x1431) (not x1438) x1286 (not x1213) (not x1435) (not x1213) x1439)
+(or (not x1439) x1437)
+(or (not x1439) x1435)
+(or (not x1439) x1213)
+(or (not x1439) x1431)
+(or (not x1439) x1438)
+(or (not x1439) (not x1286))
+(or (not x1439) x1213)
+(or (not x1439) x1435)
+(or (not x1439) x1213)
+(or (not x1425) x1421 x1440)
+(or (not x1440) x1425)
+(or (not x1440) (not x1421))
+(or x1441 (not x1440))
+(or x1441 (not x1442))
+(or x1440 x1442 (not x1441))
+(or (not x1437) (not x1430) (not x1441) x1443)
+(or (not x1443) x1437)
+(or (not x1443) x1430)
+(or (not x1443) x1441)
+(or (not x1431) (not x1432) (not x1444) (not x1435) (not x1213) x1445)
+(or (not x1445) x1431)
+(or (not x1445) x1432)
+(or (not x1445) x1444)
+(or (not x1445) x1435)
+(or (not x1445) x1213)
+(or x1446 (not x1445))
+(or x1446 (not x1443))
+(or x1446 (not x1439))
+(or x1446 (not x1436))
+(or x1445 x1443 x1439 x1436 (not x1446))
+(or (not x1446) (not x1213) x1447)
+(or (not x1447) x1446)
+(or (not x1447) x1213)
+(or x1448 (not x1449))
+(or x1448 (not x1450))
+(or x1449 x1450 (not x1448))
+(or x1451 (not x1297))
+(or x1451 x1452)
+(or x1297 (not x1452) (not x1451))
+(or x1453 x1297)
+(or x1453 x1454)
+(or (not x1297) (not x1454) (not x1453))
+(or (not x1453) (not x1451) x1455)
+(or (not x1455) x1453)
+(or (not x1455) x1451)
+(or x1456 x1457)
+(or x1456 (not x1458))
+(or x1456 (not x1299))
+(or x1456 x1298)
+(or x1456 (not x1449))
+(or x1456 (not x1455))
+(or (not x1457) x1458 x1299 (not x1298) x1449 x1455 (not x1456))
+(or x1459 x1457)
+(or x1459 (not x1458))
+(or x1459 (not x1299))
+(or x1459 (not x1298))
+(or x1459 x1460)
+(or (not x1457) x1458 x1299 x1298 (not x1460) (not x1459))
+(or (not x1459) (not x1456) (not x1448) x1461)
+(or (not x1461) x1459)
+(or (not x1461) x1456)
+(or (not x1461) x1448)
+(or x1433 (not x1287))
+(or x1433 (not x1462))
+(or x1433 (not x1461))
+(or x1287 x1462 x1461 (not x1433))
+(or (not x1429) (not x1213) (not x1430) (not x1431) (not x1432) (not x1433) (not x1305) (not x1434) (not x1429) (not x1213) x1463)
+(or (not x1463) x1429)
+(or (not x1463) x1213)
+(or (not x1463) x1430)
+(or (not x1463) x1431)
+(or (not x1463) x1432)
+(or (not x1463) x1433)
+(or (not x1463) x1305)
+(or (not x1463) x1434)
+(or (not x1463) x1429)
+(or (not x1463) x1213)
+(or (not x1438) x1286 (not x1213) (not x1429) (not x1213) x1464)
+(or (not x1464) x1438)
+(or (not x1464) (not x1286))
+(or (not x1464) x1213)
+(or (not x1464) x1429)
+(or (not x1464) x1213)
+(or (not x1465) (not x1423) x1466)
+(or (not x1466) x1465)
+(or (not x1466) x1423)
+(or x1467 (not x1466))
+(or x1467 (not x1464))
+(or x1466 x1464 (not x1467))
+(or (not x1437) (not x1435) (not x1213) (not x1431) (not x1467) x1468)
+(or (not x1468) x1437)
+(or (not x1468) x1435)
+(or (not x1468) x1213)
+(or (not x1468) x1431)
+(or (not x1468) x1467)
+(or (not x1437) (not x1430) (not x1469) (not x1429) (not x1213) x1470)
+(or (not x1470) x1437)
+(or (not x1470) x1430)
+(or (not x1470) x1469)
+(or (not x1470) x1429)
+(or (not x1470) x1213)
+(or (not x1431) (not x1432) (not x1444) (not x1429) (not x1213) x1471)
+(or (not x1471) x1431)
+(or (not x1471) x1432)
+(or (not x1471) x1444)
+(or (not x1471) x1429)
+(or (not x1471) x1213)
+(or x1472 (not x1471))
+(or x1472 (not x1470))
+(or x1472 (not x1468))
+(or x1472 (not x1463))
+(or x1471 x1470 x1468 x1463 (not x1472))
+(or (not x1472) (not x1213) x1473)
+(or (not x1473) x1472)
+(or (not x1473) x1213)
+(or x1409 (not x1474))
+(or x1409 x1413)
+(or x1409 x1213)
+(or x1474 (not x1413) (not x1213) (not x1409))
+(or (not x1409) (not x1475) (not x1476) (not x1221) (not x1213) x1477)
+(or (not x1477) x1409)
+(or (not x1477) x1475)
+(or (not x1477) x1476)
+(or (not x1477) x1221)
+(or (not x1477) x1213)
+(or (not x1412) (not x1413) (not x1213) (not x1413) (not x1213) x1478)
+(or (not x1478) x1412)
+(or (not x1478) x1413)
+(or (not x1478) x1213)
+(or (not x1478) x1413)
+(or (not x1478) x1213)
+(or x1479 (not x1478))
+(or x1479 (not x1477))
+(or x1478 x1477 (not x1479))
+(or (not x1479) (not x1213) x1480)
+(or (not x1480) x1479)
+(or (not x1480) x1213)
+(or x1401 (not x1481))
+(or x1401 x1404)
+(or x1401 x1213)
+(or x1481 (not x1404) (not x1213) (not x1401))
+(or (not x1401) (not x1482) (not x1269) (not x1213) x1483)
+(or (not x1483) x1401)
+(or (not x1483) x1482)
+(or (not x1483) x1269)
+(or (not x1483) x1213)
+(or (not x1225) (not x1404) (not x1213) (not x1404) (not x1213) x1484)
+(or (not x1484) x1225)
+(or (not x1484) x1404)
+(or (not x1484) x1213)
+(or (not x1484) x1404)
+(or (not x1484) x1213)
+(or x1485 (not x1484))
+(or x1485 (not x1483))
+(or x1484 x1483 (not x1485))
+(or (not x1485) (not x1213) x1486)
+(or (not x1486) x1485)
+(or (not x1486) x1213)
+(or x1332 (not x1487))
+(or x1332 x1336)
+(or x1332 x1213)
+(or x1487 (not x1336) (not x1213) (not x1332))
+(or (not x1332) (not x1488) (not x1489) (not x1244) (not x1213) x1490)
+(or (not x1490) x1332)
+(or (not x1490) x1488)
+(or (not x1490) x1489)
+(or (not x1490) x1244)
+(or (not x1490) x1213)
+(or (not x1335) (not x1336) (not x1213) (not x1336) (not x1213) x1491)
+(or (not x1491) x1335)
+(or (not x1491) x1336)
+(or (not x1491) x1213)
+(or (not x1491) x1336)
+(or (not x1491) x1213)
+(or x1492 (not x1491))
+(or x1492 (not x1490))
+(or x1491 x1490 (not x1492))
+(or (not x1492) (not x1213) x1493)
+(or (not x1493) x1492)
+(or (not x1493) x1213)
+(or x1324 (not x1494))
+(or x1324 x1327)
+(or x1324 x1213)
+(or x1494 (not x1327) (not x1213) (not x1324))
+(or (not x1324) (not x1495) (not x1314) (not x1213) x1496)
+(or (not x1496) x1324)
+(or (not x1496) x1495)
+(or (not x1496) x1314)
+(or (not x1496) x1213)
+(or (not x1248) (not x1327) (not x1213) (not x1327) (not x1213) x1497)
+(or (not x1497) x1248)
+(or (not x1497) x1327)
+(or (not x1497) x1213)
+(or (not x1497) x1327)
+(or (not x1497) x1213)
+(or x1498 (not x1497))
+(or x1498 (not x1496))
+(or x1497 x1496 (not x1498))
+(or (not x1498) (not x1213) x1499)
+(or (not x1499) x1498)
+(or (not x1499) x1213)
+(or (not x1500) (not x1501) (not x1502) x1503)
+(or (not x1503) x1500)
+(or (not x1503) x1501)
+(or (not x1503) x1502)
+(or (not x1504) (not x1500) (not x1505) (not x1506) (not x1507) (not x1213) x1508)
+(or (not x1508) x1504)
+(or (not x1508) x1500)
+(or (not x1508) x1505)
+(or (not x1508) x1506)
+(or (not x1508) x1507)
+(or (not x1508) x1213)
+(or x1509 (not x1508))
+(or x1509 (not x1503))
+(or x1508 x1503 (not x1509))
+(or (not x1256) (not x1213) (not x1502) (not x1236) (not x1258) (not x1510) (not x1509) x1511)
+(or (not x1511) x1256)
+(or (not x1511) x1213)
+(or (not x1511) x1502)
+(or (not x1511) x1236)
+(or (not x1511) x1258)
+(or (not x1511) x1510)
+(or (not x1511) x1509)
+(or (not x1512) (not x1513) (not x1502) x1514)
+(or (not x1514) x1512)
+(or (not x1514) x1513)
+(or (not x1514) x1502)
+(or (not x1512) (not x1515) (not x1516) (not x1517) (not x1507) (not x1213) x1518)
+(or (not x1518) x1512)
+(or (not x1518) x1515)
+(or (not x1518) x1516)
+(or (not x1518) x1517)
+(or (not x1518) x1507)
+(or (not x1518) x1213)
+(or x1519 (not x1520))
+(or x1519 (not x1518))
+(or x1520 x1518 (not x1519))
+(or (not x1521) (not x1519) x1522)
+(or (not x1522) x1521)
+(or (not x1522) x1519)
+(or x1523 (not x1522))
+(or x1523 (not x1514))
+(or x1522 x1514 (not x1523))
+(or (not x1256) (not x1213) x1257 (not x1213) (not x1236) (not x1258) (not x1523) x1524)
+(or (not x1524) x1256)
+(or (not x1524) x1213)
+(or (not x1524) (not x1257))
+(or (not x1524) x1213)
+(or (not x1524) x1236)
+(or (not x1524) x1258)
+(or (not x1524) x1523)
+(or (not x1248) (not x1335) (not x1525) (not x1502) x1526)
+(or (not x1526) x1248)
+(or (not x1526) x1335)
+(or (not x1526) x1525)
+(or (not x1526) x1502)
+(or (not x1527) (not x1248) (not x1335) (not x1528) (not x1529) x1530)
+(or (not x1530) x1527)
+(or (not x1530) x1248)
+(or (not x1530) x1335)
+(or (not x1530) x1528)
+(or (not x1530) x1529)
+(or x1531 (not x1530))
+(or x1531 (not x1526))
+(or x1530 x1526 (not x1531))
+(or (not x1532) (not x1502) (not x1236) (not x1531) x1533)
+(or (not x1533) x1532)
+(or (not x1533) x1502)
+(or (not x1533) x1236)
+(or (not x1533) x1531)
+(or (not x1534) (not x1535) (not x1502) x1536)
+(or (not x1536) x1534)
+(or (not x1536) x1535)
+(or (not x1536) x1502)
+(or (not x1534) (not x1537) (not x1248) (not x1335) (not x1529) x1538)
+(or (not x1538) x1534)
+(or (not x1538) x1537)
+(or (not x1538) x1248)
+(or (not x1538) x1335)
+(or (not x1538) x1529)
+(or x1539 (not x1540))
+(or x1539 (not x1538))
+(or x1540 x1538 (not x1539))
+(or (not x1541) (not x1539) x1542)
+(or (not x1542) x1541)
+(or (not x1542) x1539)
+(or x1543 (not x1542))
+(or x1543 (not x1536))
+(or x1542 x1536 (not x1543))
+(or (not x1532) x1257 (not x1213) (not x1543) x1544)
+(or (not x1544) x1532)
+(or (not x1544) (not x1257))
+(or (not x1544) x1213)
+(or (not x1544) x1543)
+(or x1545 (not x1544))
+(or x1545 (not x1533))
+(or x1545 (not x1524))
+(or x1545 (not x1511))
+(or x1545 x1213)
+(or x1544 x1533 x1524 x1511 (not x1213) (not x1545))
+(or x1546 (not x1547))
+(or x1546 (not x1548))
+(or x1546 (not x1549))
+(or x1547 x1548 x1549 (not x1546))
+(or (not x1550) (not x1546) x1551)
+(or (not x1551) x1550)
+(or (not x1551) x1546)
+(or x1501 (not x1552))
+(or x1501 (not x1551))
+(or x1552 x1551 (not x1501))
+(or (not x1500) (not x1501) (not x1256) (not x1213) x1553)
+(or (not x1553) x1500)
+(or (not x1553) x1501)
+(or (not x1553) x1256)
+(or (not x1553) x1213)
+(or x1550 (not x1548))
+(or x1550 x1507)
+(or x1550 x1213)
+(or x1548 (not x1507) (not x1213) (not x1550))
+(or (not x1550) (not x1506) (not x1554) x1555)
+(or (not x1555) x1550)
+(or (not x1555) x1506)
+(or (not x1555) x1554)
+(or (not x1506) (not x1507) (not x1213) x1547)
+(or (not x1547) x1506)
+(or (not x1547) x1507)
+(or (not x1547) x1213)
+(or x1505 (not x1547))
+(or x1505 (not x1555))
+(or x1547 x1555 (not x1505))
+(or x1476 (not x1264))
+(or x1476 (not x1556))
+(or x1476 (not x1268))
+(or x1264 x1556 x1268 (not x1476))
+(or x1475 x1220)
+(or x1475 x1213)
+(or x1475 (not x1557))
+(or x1475 (not x1558))
+(or x1475 (not x1559))
+(or x1475 (not x1560))
+(or x1475 (not x1228))
+(or (not x1220) (not x1213) x1557 x1558 x1559 x1560 x1228 (not x1475))
+(or (not x1475) (not x1476) x1561)
+(or (not x1561) x1475)
+(or (not x1561) x1476)
+(or x1562 (not x1561))
+(or x1562 x1221)
+(or x1562 x1213)
+(or x1561 (not x1221) (not x1213) (not x1562))
+(or x1275 (not x1264))
+(or x1275 (not x1557))
+(or x1275 (not x1558))
+(or x1275 (not x1559))
+(or x1275 (not x1560))
+(or x1264 x1557 x1558 x1559 x1560 (not x1275))
+(or x1274 x1220)
+(or x1274 x1213)
+(or x1274 (not x1557))
+(or x1274 (not x1558))
+(or x1274 (not x1559))
+(or x1274 (not x1560))
+(or x1274 x1219)
+(or x1274 x1213)
+(or (not x1220) (not x1213) x1557 x1558 x1559 x1560 (not x1219) (not x1213) (not x1274))
+(or (not x1274) (not x1275) x1556)
+(or (not x1556) x1274)
+(or (not x1556) x1275)
+(or x1482 (not x1556))
+(or x1482 x1266)
+(or x1482 x1213)
+(or x1556 (not x1266) (not x1213) (not x1482))
+(or x1563 (not x1556))
+(or x1563 x1266)
+(or x1563 x1213)
+(or x1563 x1269)
+(or x1563 x1213)
+(or x1556 (not x1266) (not x1213) (not x1269) (not x1213) (not x1563))
+(or (not x1529) (not x1563) (not x1562) x1548)
+(or (not x1548) x1529)
+(or (not x1548) x1563)
+(or (not x1548) x1562)
+(or x1500 (not x1548))
+(or x1500 x1564)
+(or x1500 x1213)
+(or x1548 (not x1564) (not x1213) (not x1500))
+(or (not x1500) (not x1505) x1565)
+(or (not x1565) x1500)
+(or (not x1565) x1505)
+(or x1506 (not x1566))
+(or x1506 (not x1567))
+(or x1506 (not x1568))
+(or x1566 x1567 x1568 (not x1506))
+(or (not x1506) (not x1564) (not x1213) x1552)
+(or (not x1552) x1506)
+(or (not x1552) x1564)
+(or (not x1552) x1213)
+(or x1504 (not x1552))
+(or x1504 (not x1565))
+(or x1552 x1565 (not x1504))
+(or (not x1504) (not x1500) (not x1505) (not x1550) (not x1506) (not x1554) x1569)
+(or (not x1569) x1504)
+(or (not x1569) x1500)
+(or (not x1569) x1505)
+(or (not x1569) x1550)
+(or (not x1569) x1506)
+(or (not x1569) x1554)
+(or x1570 (not x1569))
+(or x1570 (not x1553))
+(or x1569 x1553 (not x1570))
+(or (not x1256) (not x1213) (not x1502) (not x1236) (not x1258) (not x1510) (not x1570) x1571)
+(or (not x1571) x1256)
+(or (not x1571) x1213)
+(or (not x1571) x1502)
+(or (not x1571) x1236)
+(or (not x1571) x1258)
+(or (not x1571) x1510)
+(or (not x1571) x1570)
+(or x1572 (not x1573))
+(or x1572 (not x1574))
+(or x1572 x1507)
+(or x1572 x1213)
+(or x1573 x1574 (not x1507) (not x1213) (not x1572))
+(or (not x1516) (not x1572) x1575)
+(or (not x1575) x1516)
+(or (not x1575) x1572)
+(or x1513 (not x1520))
+(or x1513 (not x1575))
+(or x1520 x1575 (not x1513))
+(or (not x1512) (not x1513) (not x1256) (not x1213) x1576)
+(or (not x1576) x1512)
+(or (not x1576) x1513)
+(or (not x1576) x1256)
+(or (not x1576) x1213)
+(or x1516 (not x1574))
+(or x1516 x1564)
+(or x1516 x1213)
+(or x1574 (not x1564) (not x1213) (not x1516))
+(or (not x1516) (not x1517) (not x1507) (not x1213) x1577)
+(or (not x1577) x1516)
+(or (not x1577) x1517)
+(or (not x1577) x1507)
+(or (not x1577) x1213)
+(or (not x1517) (not x1564) (not x1213) x1573)
+(or (not x1573) x1517)
+(or (not x1573) x1564)
+(or (not x1573) x1213)
+(or x1515 (not x1573))
+(or x1515 (not x1577))
+(or x1573 x1577 (not x1515))
+(or x1489 (not x1264))
+(or x1489 (not x1578))
+(or x1489 (not x1313))
+(or x1264 x1578 x1313 (not x1489))
+(or x1488 x1220)
+(or x1488 x1213)
+(or x1488 (not x1557))
+(or x1488 x1256)
+(or x1488 x1213)
+(or x1488 (not x1257))
+(or x1488 x1213)
+(or x1488 (not x1560))
+(or x1488 (not x1579))
+(or x1488 (not x1559))
+(or x1488 (not x1560))
+(or x1488 (not x1251))
+(or (not x1220) (not x1213) x1557 (not x1256) (not x1213) x1257 (not x1213) x1560 x1579 x1559 x1560 x1251 (not x1488))
+(or (not x1488) (not x1489) x1580)
+(or (not x1580) x1488)
+(or (not x1580) x1489)
+(or x1581 (not x1580))
+(or x1581 x1244)
+(or x1581 x1213)
+(or x1580 (not x1244) (not x1213) (not x1581))
+(or x1320 (not x1264))
+(or x1320 (not x1557))
+(or x1320 x1256)
+(or x1320 x1213)
+(or x1320 (not x1257))
+(or x1320 x1213)
+(or x1320 (not x1560))
+(or x1320 (not x1579))
+(or x1320 (not x1559))
+(or x1320 (not x1560))
+(or x1264 x1557 (not x1256) (not x1213) x1257 (not x1213) x1560 x1579 x1559 x1560 (not x1320))
+(or x1319 x1220)
+(or x1319 x1213)
+(or x1319 (not x1557))
+(or x1319 x1256)
+(or x1319 x1213)
+(or x1319 (not x1257))
+(or x1319 x1213)
+(or x1319 (not x1560))
+(or x1319 (not x1579))
+(or x1319 (not x1559))
+(or x1319 (not x1560))
+(or x1319 x1243)
+(or x1319 x1213)
+(or (not x1220) (not x1213) x1557 (not x1256) (not x1213) x1257 (not x1213) x1560 x1579 x1559 x1560 (not x1243) (not x1213) (not x1319))
+(or (not x1319) (not x1320) x1578)
+(or (not x1578) x1319)
+(or (not x1578) x1320)
+(or x1495 (not x1578))
+(or x1495 x1311)
+(or x1495 x1213)
+(or x1578 (not x1311) (not x1213) (not x1495))
+(or x1582 (not x1578))
+(or x1582 x1311)
+(or x1582 x1213)
+(or x1582 x1314)
+(or x1582 x1213)
+(or x1578 (not x1311) (not x1213) (not x1314) (not x1213) (not x1582))
+(or (not x1554) (not x1582) (not x1581) x1574)
+(or (not x1574) x1554)
+(or (not x1574) x1582)
+(or (not x1574) x1581)
+(or x1512 (not x1574))
+(or x1512 (not x1566))
+(or x1574 x1566 (not x1512))
+(or (not x1512) (not x1515) x1583)
+(or (not x1583) x1512)
+(or (not x1583) x1515)
+(or x1517 (not x1549))
+(or x1517 (not x1584))
+(or x1517 (not x1585))
+(or x1549 x1584 x1585 (not x1517))
+(or (not x1517) (not x1529) x1520)
+(or (not x1520) x1517)
+(or (not x1520) x1529)
+(or x1521 (not x1520))
+(or x1521 (not x1583))
+(or x1520 x1583 (not x1521))
+(or (not x1521) (not x1517) (not x1529) x1586)
+(or (not x1586) x1521)
+(or (not x1586) x1517)
+(or (not x1586) x1529)
+(or x1587 (not x1586))
+(or x1587 (not x1576))
+(or x1586 x1576 (not x1587))
+(or (not x1256) (not x1213) x1257 (not x1213) (not x1236) (not x1258) (not x1587) x1588)
+(or (not x1588) x1256)
+(or (not x1588) x1213)
+(or (not x1588) (not x1257))
+(or (not x1588) x1213)
+(or (not x1588) x1236)
+(or (not x1588) x1258)
+(or (not x1588) x1587)
+(or x1589 (not x1481))
+(or x1589 (not x1474))
+(or x1589 x1564)
+(or x1589 x1213)
+(or x1481 x1474 (not x1564) (not x1213) (not x1589))
+(or (not x1225) (not x1412) (not x1589) x1590)
+(or (not x1590) x1225)
+(or (not x1590) x1412)
+(or (not x1590) x1589)
+(or x1525 (not x1494))
+(or x1525 (not x1487))
+(or x1525 (not x1590))
+(or x1494 x1487 x1590 (not x1525))
+(or (not x1248) (not x1335) (not x1525) (not x1256) (not x1213) x1591)
+(or (not x1591) x1248)
+(or (not x1591) x1335)
+(or (not x1591) x1525)
+(or (not x1591) x1256)
+(or (not x1591) x1213)
+(or (not x1248) (not x1335) (not x1528) (not x1529) x1592)
+(or (not x1592) x1248)
+(or (not x1592) x1335)
+(or (not x1592) x1528)
+(or (not x1592) x1529)
+(or x1593 (not x1494))
+(or x1593 (not x1487))
+(or x1593 (not x1592))
+(or x1494 x1487 x1592 (not x1593))
+(or (not x1225) (not x1412) (not x1564) (not x1213) x1594)
+(or (not x1594) x1225)
+(or (not x1594) x1412)
+(or (not x1594) x1564)
+(or (not x1594) x1213)
+(or x1528 (not x1481))
+(or x1528 (not x1474))
+(or x1528 (not x1594))
+(or x1481 x1474 x1594 (not x1528))
+(or (not x1248) (not x1335) (not x1528) x1595)
+(or (not x1595) x1248)
+(or (not x1595) x1335)
+(or (not x1595) x1528)
+(or x1527 (not x1494))
+(or x1527 (not x1487))
+(or x1527 (not x1595))
+(or x1494 x1487 x1595 (not x1527))
+(or (not x1527) (not x1593) x1596)
+(or (not x1596) x1527)
+(or (not x1596) x1593)
+(or x1597 (not x1596))
+(or x1597 (not x1591))
+(or x1596 x1591 (not x1597))
+(or (not x1532) (not x1502) (not x1236) (not x1597) x1598)
+(or (not x1598) x1532)
+(or (not x1598) x1502)
+(or (not x1598) x1236)
+(or (not x1598) x1597)
+(or x1412 x1221)
+(or x1412 x1213)
+(or (not x1221) (not x1213) (not x1412))
+(or x1225 x1269)
+(or x1225 x1213)
+(or (not x1269) (not x1213) (not x1225))
+(or (not x1225) (not x1412) x1566)
+(or (not x1566) x1225)
+(or (not x1566) x1412)
+(or x1599 (not x1494))
+(or x1599 (not x1487))
+(or x1599 (not x1566))
+(or x1494 x1487 x1566 (not x1599))
+(or (not x1248) (not x1335) (not x1599) x1600)
+(or (not x1600) x1248)
+(or (not x1600) x1335)
+(or (not x1600) x1599)
+(or x1535 (not x1540))
+(or x1535 (not x1600))
+(or x1540 x1600 (not x1535))
+(or (not x1534) (not x1535) (not x1256) (not x1213) x1601)
+(or (not x1601) x1534)
+(or (not x1601) x1535)
+(or (not x1601) x1256)
+(or (not x1601) x1213)
+(or x1529 (not x1481))
+(or x1529 (not x1474))
+(or x1481 x1474 (not x1529))
+(or x1335 x1244)
+(or x1335 x1213)
+(or (not x1244) (not x1213) (not x1335))
+(or x1248 x1314)
+(or x1248 x1213)
+(or (not x1314) (not x1213) (not x1248))
+(or (not x1248) (not x1335) x1549)
+(or (not x1549) x1248)
+(or (not x1549) x1335)
+(or (not x1248) (not x1335) (not x1529) x1602)
+(or (not x1602) x1248)
+(or (not x1602) x1335)
+(or (not x1602) x1529)
+(or x1554 (not x1494))
+(or x1554 (not x1487))
+(or x1494 x1487 (not x1554))
+(or x1537 (not x1494))
+(or x1537 (not x1487))
+(or x1537 (not x1602))
+(or x1494 x1487 x1602 (not x1537))
+(or x1534 x1507)
+(or x1534 x1213)
+(or (not x1507) (not x1213) (not x1534))
+(or (not x1534) (not x1537) x1603)
+(or (not x1603) x1534)
+(or (not x1603) x1537)
+(or x1541 (not x1540))
+(or x1541 (not x1603))
+(or x1540 x1603 (not x1541))
+(or (not x1541) (not x1534) (not x1537) x1604)
+(or (not x1604) x1541)
+(or (not x1604) x1534)
+(or (not x1604) x1537)
+(or x1605 (not x1604))
+(or x1605 (not x1601))
+(or x1604 x1601 (not x1605))
+(or (not x1532) x1257 (not x1213) (not x1605) x1606)
+(or (not x1606) x1532)
+(or (not x1606) (not x1257))
+(or (not x1606) x1213)
+(or (not x1606) x1605)
+(or x1607 (not x1606))
+(or x1607 (not x1598))
+(or x1607 (not x1588))
+(or x1607 (not x1571))
+(or x1606 x1598 x1588 x1571 (not x1607))
+(or (not x1607) (not x1213) x1608)
+(or (not x1608) x1607)
+(or (not x1608) x1213)
+(or x1609 x1610)
+(or x1609 x1213)
+(or (not x1610) (not x1213) (not x1609))
+(or (not x1609) (not x1235) (not x1507) (not x1213) x1611)
+(or (not x1611) x1609)
+(or (not x1611) x1235)
+(or (not x1611) x1507)
+(or (not x1611) x1213)
+(or (not x1610) (not x1213) x1612)
+(or (not x1612) x1610)
+(or (not x1612) x1213)
+(or x1613 (not x1612))
+(or x1613 (not x1611))
+(or x1612 x1611 (not x1613))
+(or (not x1613) (not x1213) x1614)
+(or (not x1614) x1613)
+(or (not x1614) x1213)
+(or (not x1615) (not x1616) x1617)
+(or (not x1617) x1615)
+(or (not x1617) x1616)
+(or x1615 (not x1618) (not x1619) x1620)
+(or (not x1620) (not x1615))
+(or (not x1620) x1618)
+(or (not x1620) x1619)
+(or x1621 (not x1620))
+(or x1621 (not x1617))
+(or x1620 x1617 (not x1621))
+(or (not x1622) (not x1213) (not x1623) (not x1624) (not x1625) (not x1621) x1626)
+(or (not x1626) x1622)
+(or (not x1626) x1213)
+(or (not x1626) x1623)
+(or (not x1626) x1624)
+(or (not x1626) x1625)
+(or (not x1626) x1621)
+(or x1619 x1627)
+(or x1619 x1213)
+(or x1619 (not x1195))
+(or x1619 (not x1169))
+(or x1619 (not x1628))
+(or x1619 (not x1629))
+(or x1619 (not x1630))
+(or x1619 (not x1631))
+(or x1619 (not x1632))
+(or (not x1627) (not x1213) x1195 x1169 x1628 x1629 x1630 x1631 x1632 (not x1619))
+(or x1618 (not x1194))
+(or x1618 x1633)
+(or x1618 x1213)
+(or x1618 (not x1169))
+(or x1618 (not x1634))
+(or x1618 x1635)
+(or x1618 x1213)
+(or x1618 (not x1636))
+(or x1618 (not x1637))
+(or x1618 (not x1629))
+(or x1618 (not x1630))
+(or x1618 (not x1631))
+(or x1194 (not x1633) (not x1213) x1169 x1634 (not x1635) (not x1213) x1636 x1637 x1629 x1630 x1631 (not x1618))
+(or x1637 (not x1618) (not x1619) x1638)
+(or (not x1638) (not x1637))
+(or (not x1638) x1618)
+(or (not x1638) x1619)
+(or x1639 (not x1638))
+(or x1639 (not x1637))
+(or x1638 x1637 (not x1639))
+(or (not x1640) (not x1635) (not x1213) (not x1624) (not x1639) x1641)
+(or (not x1641) x1640)
+(or (not x1641) x1635)
+(or (not x1641) x1213)
+(or (not x1641) x1624)
+(or (not x1641) x1639)
+(or x1642 (not x1643))
+(or x1642 (not x1636))
+(or x1642 (not x1641))
+(or x1642 (not x1626))
+(or x1643 x1636 x1641 x1626 (not x1642))
+(or (not x1644) (not x1213) (not x1642) x1645)
+(or (not x1645) x1644)
+(or (not x1645) x1213)
+(or (not x1645) x1642)
+(or x1646 (not x1645))
+(or x1646 x1213)
+(or x1645 (not x1213) (not x1646))
+(or x1647 x1648)
+(or x1647 x1213)
+(or (not x1648) (not x1213) (not x1647))
+(or (not x1647) (not x1236) (not x1564) (not x1213) x1649)
+(or (not x1649) x1647)
+(or (not x1649) x1236)
+(or (not x1649) x1564)
+(or (not x1649) x1213)
+(or (not x1648) (not x1213) x1650)
+(or (not x1650) x1648)
+(or (not x1650) x1213)
+(or x1651 (not x1650))
+(or x1651 (not x1649))
+(or x1650 x1649 (not x1651))
+(or (not x1651) (not x1213) x1652)
+(or (not x1652) x1651)
+(or (not x1652) x1213)
+(or x1653 x1622)
+(or x1653 x1213)
+(or x1653 (not x1654))
+(or x1653 (not x1636))
+(or x1653 (not x1655))
+(or x1653 (not x1656))
+(or x1653 x1213)
+(or x1653 (not x1615))
+(or (not x1622) (not x1213) x1654 x1636 x1655 x1656 (not x1213) x1615 (not x1653))
+(or x1657 (not x1634))
+(or x1657 (not x1654))
+(or x1657 (not x1658))
+(or x1634 x1654 x1658 (not x1657))
+(or x1659 (not x1634))
+(or x1659 x1635)
+(or x1659 x1213)
+(or x1659 (not x1636))
+(or x1659 x1637)
+(or x1659 (not x1421))
+(or x1634 (not x1635) (not x1213) x1636 (not x1637) x1421 (not x1659))
+(or (not x1659) (not x1657) (not x1653) x1660)
+(or (not x1660) x1659)
+(or (not x1660) x1657)
+(or (not x1660) x1653)
+(or x1661 (not x1421))
+(or x1661 (not x1660))
+(or x1421 x1660 (not x1661))
+(or (not x1644) (not x1213) (not x1661) (not x1644) (not x1213) x1662)
+(or (not x1662) x1644)
+(or (not x1662) x1213)
+(or (not x1662) x1661)
+(or (not x1662) x1644)
+(or (not x1662) x1213)
+(or (not x1288) (not x1289) (not x1290) x1291 (not x1292) x1293 (not x1294) (not x1295) (not x1296) x1297 (not x1298) (not x1299) x1462)
+(or (not x1462) x1288)
+(or (not x1462) x1289)
+(or (not x1462) x1290)
+(or (not x1462) (not x1291))
+(or (not x1462) x1292)
+(or (not x1462) (not x1293))
+(or (not x1462) x1294)
+(or (not x1462) x1295)
+(or (not x1462) x1296)
+(or (not x1462) (not x1297))
+(or (not x1462) x1298)
+(or (not x1462) x1299)
+(or x1444 x1429)
+(or x1444 x1213)
+(or x1444 (not x1442))
+(or (not x1429) (not x1213) x1442 (not x1444))
+(or x1663 x1429)
+(or x1663 x1213)
+(or x1663 (not x1442))
+(or x1663 (not x1664))
+(or x1663 (not x1665))
+(or (not x1429) (not x1213) x1442 x1664 x1665 (not x1663))
+(or x1438 (not x1286))
+(or x1438 x1213)
+(or x1438 (not x1666))
+(or x1438 x1213)
+(or x1286 (not x1213) x1666 (not x1213) (not x1438))
+(or (not x1438) x1286 (not x1213) x1667)
+(or (not x1667) x1438)
+(or (not x1667) (not x1286))
+(or (not x1667) x1213)
+(or x1668 (not x1669))
+(or x1668 x1435)
+(or x1668 x1213)
+(or x1668 (not x1664))
+(or x1668 (not x1667))
+(or x1669 (not x1435) (not x1213) x1664 x1667 (not x1668))
+(or (not x1668) (not x1663) x1287)
+(or (not x1287) x1668)
+(or (not x1287) x1663)
+(or x1670 x1457)
+(or x1670 (not x1458))
+(or x1670 (not x1299))
+(or x1670 x1298)
+(or (not x1457) x1458 x1299 (not x1298) (not x1670))
+(or (not x1671) (not x1670) x1672)
+(or (not x1672) x1671)
+(or (not x1672) x1670)
+(or x1297 (not x1452) x1673)
+(or (not x1673) (not x1297))
+(or (not x1673) x1452)
+(or (not x1297) (not x1454) x1674)
+(or (not x1674) x1297)
+(or (not x1674) x1454)
+(or x1675 (not x1674))
+(or x1675 (not x1673))
+(or x1674 x1673 (not x1675))
+(or x1671 x1457)
+(or x1671 (not x1458))
+(or x1671 (not x1299))
+(or x1671 (not x1298))
+(or (not x1457) x1458 x1299 x1298 (not x1671))
+(or (not x1457) x1458 x1299 (not x1298) x1450)
+(or (not x1450) x1457)
+(or (not x1450) (not x1458))
+(or (not x1450) (not x1299))
+(or (not x1450) x1298)
+(or (not x1457) x1458 x1299 (not x1298) (not x1671) (not x1675) x1676)
+(or (not x1676) x1457)
+(or (not x1676) (not x1458))
+(or (not x1676) (not x1299))
+(or (not x1676) x1298)
+(or (not x1676) x1671)
+(or (not x1676) x1675)
+(or (not x1457) x1458 x1299 x1298 x1449)
+(or (not x1449) x1457)
+(or (not x1449) (not x1458))
+(or (not x1449) (not x1299))
+(or (not x1449) (not x1298))
+(or (not x1457) x1458 x1299 x1298 (not x1460) x1677)
+(or (not x1677) x1457)
+(or (not x1677) (not x1458))
+(or (not x1677) (not x1299))
+(or (not x1677) (not x1298))
+(or (not x1677) x1460)
+(or x1678 (not x1677))
+(or x1678 (not x1676))
+(or x1678 (not x1672))
+(or x1677 x1676 x1672 (not x1678))
+(or x1434 x1288)
+(or x1434 x1289)
+(or x1434 x1290)
+(or x1434 (not x1291))
+(or x1434 x1292)
+(or x1434 (not x1293))
+(or x1434 x1294)
+(or x1434 x1295)
+(or x1434 x1296)
+(or x1434 (not x1297))
+(or x1434 x1298)
+(or x1434 x1299)
+(or (not x1288) (not x1289) (not x1290) x1291 (not x1292) x1293 (not x1294) (not x1295) (not x1296) x1297 (not x1298) (not x1299) (not x1434))
+(or x1423 (not x1286))
+(or x1423 x1213)
+(or x1286 (not x1213) (not x1423))
+(or x1465 (not x1679))
+(or x1465 (not x1286))
+(or x1465 x1213)
+(or x1679 x1286 (not x1213) (not x1465))
+(or (not x1437) (not x1435) (not x1213) (not x1431) (not x1465) x1680)
+(or (not x1680) x1437)
+(or (not x1680) x1435)
+(or (not x1680) x1213)
+(or (not x1680) x1431)
+(or (not x1680) x1465)
+(or x1305 (not x1680))
+(or x1305 (not x1681))
+(or x1680 x1681 (not x1305))
+(or (not x1305) (not x1434) (not x1678) x1682)
+(or (not x1682) x1305)
+(or (not x1682) x1434)
+(or (not x1682) x1678)
+(or x1683 (not x1682))
+(or x1683 (not x1287))
+(or x1683 (not x1462))
+(or x1682 x1287 x1462 (not x1683))
+(or x1432 (not x1669))
+(or x1432 x1435)
+(or x1432 x1213)
+(or x1669 (not x1435) (not x1213) (not x1432))
+(or (not x1429) (not x1213) (not x1430) (not x1431) (not x1432) x1681)
+(or (not x1681) x1429)
+(or (not x1681) x1213)
+(or (not x1681) x1430)
+(or (not x1681) x1431)
+(or (not x1681) x1432)
+(or (not x1429) (not x1213) (not x1430) (not x1431) (not x1432) (not x1683) x1684)
+(or (not x1684) x1429)
+(or (not x1684) x1213)
+(or (not x1684) x1430)
+(or (not x1684) x1431)
+(or (not x1684) x1432)
+(or (not x1684) x1683)
+(or x1286 (not x1213) x1666 (not x1213) x1679)
+(or (not x1679) (not x1286))
+(or (not x1679) x1213)
+(or (not x1679) (not x1666))
+(or (not x1679) x1213)
+(or (not x1429) (not x1213) x1669)
+(or (not x1669) x1429)
+(or (not x1669) x1213)
+(or x1431 (not x1669))
+(or x1431 (not x1442))
+(or x1669 x1442 (not x1431))
+(or (not x1435) (not x1213) x1442)
+(or (not x1442) x1435)
+(or (not x1442) x1213)
+(or (not x1437) (not x1435) (not x1213) x1665)
+(or (not x1665) x1437)
+(or (not x1665) x1435)
+(or (not x1665) x1213)
+(or (not x1437) (not x1435) (not x1213) (not x1431) x1286 (not x1213) x1666 (not x1213) x1685)
+(or (not x1685) x1437)
+(or (not x1685) x1435)
+(or (not x1685) x1213)
+(or (not x1685) x1431)
+(or (not x1685) (not x1286))
+(or (not x1685) x1213)
+(or (not x1685) (not x1666))
+(or (not x1685) x1213)
+(or x1469 (not x1422))
+(or x1469 (not x1421))
+(or x1422 x1421 (not x1469))
+(or x1430 x1435)
+(or x1430 x1213)
+(or (not x1435) (not x1213) (not x1430))
+(or x1437 x1429)
+(or x1437 x1213)
+(or (not x1429) (not x1213) (not x1437))
+(or (not x1437) (not x1430) x1664)
+(or (not x1664) x1437)
+(or (not x1664) x1430)
+(or (not x1437) (not x1430) (not x1469) x1686)
+(or (not x1686) x1437)
+(or (not x1686) x1430)
+(or (not x1686) x1469)
+(or x1687 (not x1686))
+(or x1687 (not x1685))
+(or x1687 (not x1684))
+(or x1686 x1685 x1684 (not x1687))
+(or (not x98) (not x1687) x1688)
+(or (not x1688) x98)
+(or (not x1688) x1687)
+(or x1689 (not x1688))
+(or x1689 (not x1422))
+(or x1688 x1422 (not x1689))
+(or (not x1425) (not x1689) x1690)
+(or (not x1690) x1425)
+(or (not x1690) x1689)
+(or x1691 (not x1690))
+(or x1691 (not x1662))
+(or x1690 x1662 (not x1691))
+(or (not x1691) (not x1213) x1692)
+(or (not x1692) x1691)
+(or (not x1692) x1213)
+(or (not x1221) (not x1213) x1474)
+(or (not x1474) x1221)
+(or (not x1474) x1213)
+(or (not x1693) (not x1272) (not x1694) x1695)
+(or (not x1695) x1693)
+(or (not x1695) x1272)
+(or (not x1695) x1694)
+(or (not x1220) (not x1213) (not x1233) (not x1234) (not x1235) (not x1236) (not x1696) x1697)
+(or (not x1697) x1220)
+(or (not x1697) x1213)
+(or (not x1697) x1233)
+(or (not x1697) x1234)
+(or (not x1697) x1235)
+(or (not x1697) x1236)
+(or (not x1697) x1696)
+(or x1698 (not x1697))
+(or x1698 (not x1695))
+(or x1697 x1695 (not x1698))
+(or (not x1698) (not x1221) (not x1213) x1568)
+(or (not x1568) x1698)
+(or (not x1568) x1221)
+(or (not x1568) x1213)
+(or (not x1269) (not x1213) x1481)
+(or (not x1481) x1269)
+(or (not x1481) x1213)
+(or (not x1693) (not x1233) (not x1234) (not x1235) (not x1236) x1699)
+(or (not x1699) x1693)
+(or (not x1699) x1233)
+(or (not x1699) x1234)
+(or (not x1699) x1235)
+(or (not x1699) x1236)
+(or (not x1220) (not x1213) (not x1233) (not x1234) (not x1235) (not x1236) (not x1219) (not x1213) x1700)
+(or (not x1700) x1220)
+(or (not x1700) x1213)
+(or (not x1700) x1233)
+(or (not x1700) x1234)
+(or (not x1700) x1235)
+(or (not x1700) x1236)
+(or (not x1700) x1219)
+(or (not x1700) x1213)
+(or x1272 (not x1700))
+(or x1272 (not x1699))
+(or x1700 x1699 (not x1272))
+(or (not x1272) (not x1266) (not x1213) (not x1269) (not x1213) x1567)
+(or (not x1567) x1272)
+(or (not x1567) x1266)
+(or (not x1567) x1213)
+(or (not x1567) x1269)
+(or (not x1567) x1213)
+(or x1701 (not x1567))
+(or x1701 (not x1568))
+(or x1567 x1568 (not x1701))
+(or x1702 (not x1703))
+(or x1702 (not x1704))
+(or x1702 (not x1703))
+(or x1703 x1704 x1703 (not x1702))
+(or (not x1705) (not x1219) (not x1213) x1703)
+(or (not x1703) x1705)
+(or (not x1703) x1219)
+(or (not x1703) x1213)
+(or (not x1266) (not x1213) x1268)
+(or (not x1268) x1266)
+(or (not x1268) x1213)
+(or (not x1233) (not x1234) (not x1235) (not x1236) (not x1219) (not x1213) (not x1266) (not x1213) x1704)
+(or (not x1704) x1233)
+(or (not x1704) x1234)
+(or (not x1704) x1235)
+(or (not x1704) x1236)
+(or (not x1704) x1219)
+(or (not x1704) x1213)
+(or (not x1704) x1266)
+(or (not x1704) x1213)
+(or x1706 (not x1704))
+(or x1706 (not x1703))
+(or x1704 x1703 (not x1706))
+(or (not x1707) (not x1706) (not x1702) (not x1402) (not x1213) x1708)
+(or (not x1708) x1707)
+(or (not x1708) x1706)
+(or (not x1708) x1702)
+(or (not x1708) x1402)
+(or (not x1708) x1213)
+(or x1694 x1266)
+(or x1694 x1213)
+(or (not x1266) (not x1213) (not x1694))
+(or x1238 (not x1557))
+(or x1238 (not x1558))
+(or x1238 (not x1559))
+(or x1238 (not x1560))
+(or x1557 x1558 x1559 x1560 (not x1238))
+(or x1705 (not x1557))
+(or x1705 (not x1558))
+(or x1705 (not x1559))
+(or x1705 (not x1560))
+(or x1705 x1219)
+(or x1705 x1213)
+(or x1557 x1558 x1559 x1560 (not x1219) (not x1213) (not x1705))
+(or x1709 (not x1557))
+(or x1709 (not x1558))
+(or x1709 (not x1559))
+(or x1709 (not x1560))
+(or x1709 x1219)
+(or x1709 x1213)
+(or x1709 x1266)
+(or x1709 x1213)
+(or x1557 x1558 x1559 x1560 (not x1219) (not x1213) (not x1266) (not x1213) (not x1709))
+(or x1696 x1219)
+(or x1696 x1213)
+(or (not x1219) (not x1213) (not x1696))
+(or (not x1219) (not x1213) x1228)
+(or (not x1228) x1219)
+(or (not x1228) x1213)
+(or (not x1233) (not x1234) (not x1235) (not x1236) (not x1219) (not x1213) x1710)
+(or (not x1710) x1233)
+(or (not x1710) x1234)
+(or (not x1710) x1235)
+(or (not x1710) x1236)
+(or (not x1710) x1219)
+(or (not x1710) x1213)
+(or x1707 (not x1710))
+(or x1707 x1219)
+(or x1707 x1213)
+(or x1710 (not x1219) (not x1213) (not x1707))
+(or (not x1707) (not x1709) (not x1707) (not x1410) (not x1213) x1711)
+(or (not x1711) x1707)
+(or (not x1711) x1709)
+(or (not x1711) x1707)
+(or (not x1711) x1410)
+(or (not x1711) x1213)
+(or x1712 (not x1711))
+(or x1712 (not x1708))
+(or x1711 x1708 (not x1712))
+(or (not x1234) (not x1236) (not x1235) (not x1234) (not x1712) (not x1701) x1713)
+(or (not x1713) x1234)
+(or (not x1713) x1236)
+(or (not x1713) x1235)
+(or (not x1713) x1234)
+(or (not x1713) x1712)
+(or (not x1713) x1701)
+(or (not x1244) (not x1213) x1487)
+(or (not x1487) x1244)
+(or (not x1487) x1213)
+(or (not x1693) (not x1317) (not x1714) x1715)
+(or (not x1715) x1693)
+(or (not x1715) x1317)
+(or (not x1715) x1714)
+(or (not x1220) (not x1213) (not x1233) (not x1256) (not x1213) x1257 (not x1213) (not x1236) (not x1258) (not x1235) (not x1236) (not x1716) x1717)
+(or (not x1717) x1220)
+(or (not x1717) x1213)
+(or (not x1717) x1233)
+(or (not x1717) x1256)
+(or (not x1717) x1213)
+(or (not x1717) (not x1257))
+(or (not x1717) x1213)
+(or (not x1717) x1236)
+(or (not x1717) x1258)
+(or (not x1717) x1235)
+(or (not x1717) x1236)
+(or (not x1717) x1716)
+(or x1718 (not x1717))
+(or x1718 (not x1715))
+(or x1717 x1715 (not x1718))
+(or (not x1718) (not x1244) (not x1213) x1585)
+(or (not x1585) x1718)
+(or (not x1585) x1244)
+(or (not x1585) x1213)
+(or (not x1314) (not x1213) x1494)
+(or (not x1494) x1314)
+(or (not x1494) x1213)
+(or x1693 x1220)
+(or x1693 x1213)
+(or (not x1220) (not x1213) (not x1693))
+(or (not x1693) (not x1233) (not x1256) (not x1213) x1257 (not x1213) (not x1236) (not x1258) (not x1235) (not x1236) x1719)
+(or (not x1719) x1693)
+(or (not x1719) x1233)
+(or (not x1719) x1256)
+(or (not x1719) x1213)
+(or (not x1719) (not x1257))
+(or (not x1719) x1213)
+(or (not x1719) x1236)
+(or (not x1719) x1258)
+(or (not x1719) x1235)
+(or (not x1719) x1236)
+(or (not x1220) (not x1213) x1264)
+(or (not x1264) x1220)
+(or (not x1264) x1213)
+(or (not x1220) (not x1213) (not x1233) (not x1256) (not x1213) x1257 (not x1213) (not x1236) (not x1258) (not x1235) (not x1236) (not x1243) (not x1213) x1720)
+(or (not x1720) x1220)
+(or (not x1720) x1213)
+(or (not x1720) x1233)
+(or (not x1720) x1256)
+(or (not x1720) x1213)
+(or (not x1720) (not x1257))
+(or (not x1720) x1213)
+(or (not x1720) x1236)
+(or (not x1720) x1258)
+(or (not x1720) x1235)
+(or (not x1720) x1236)
+(or (not x1720) x1243)
+(or (not x1720) x1213)
+(or x1317 (not x1720))
+(or x1317 (not x1719))
+(or x1720 x1719 (not x1317))
+(or (not x1317) (not x1311) (not x1213) (not x1314) (not x1213) x1584)
+(or (not x1584) x1317)
+(or (not x1584) x1311)
+(or (not x1584) x1213)
+(or (not x1584) x1314)
+(or (not x1584) x1213)
+(or x1721 (not x1584))
+(or x1721 (not x1585))
+(or x1584 x1585 (not x1721))
+(or (not x1722) (not x1723) (not x1724) (not x1325) (not x1213) x1725)
+(or (not x1725) x1722)
+(or (not x1725) x1723)
+(or (not x1725) x1724)
+(or (not x1725) x1325)
+(or (not x1725) x1213)
+(or (not x1722) (not x1726) (not x1722) (not x1333) (not x1213) x1727)
+(or (not x1727) x1722)
+(or (not x1727) x1726)
+(or (not x1727) x1722)
+(or (not x1727) x1333)
+(or (not x1727) x1213)
+(or x1728 (not x1727))
+(or x1728 (not x1725))
+(or x1727 x1725 (not x1728))
+(or (not x1236) (not x1235) (not x1256) (not x1213) x1257 (not x1213) (not x1236) (not x1258) (not x1728) x1729)
+(or (not x1729) x1236)
+(or (not x1729) x1235)
+(or (not x1729) x1256)
+(or (not x1729) x1213)
+(or (not x1729) (not x1257))
+(or (not x1729) x1213)
+(or (not x1729) x1236)
+(or (not x1729) x1258)
+(or (not x1729) x1728)
+(or (not x1722) (not x1723) (not x1724) (not x1341) (not x1213) x1730)
+(or (not x1730) x1722)
+(or (not x1730) x1723)
+(or (not x1730) x1724)
+(or (not x1730) x1341)
+(or (not x1730) x1213)
+(or (not x1722) (not x1726) (not x1722) (not x1347) (not x1213) x1731)
+(or (not x1731) x1722)
+(or (not x1731) x1726)
+(or (not x1731) x1722)
+(or (not x1731) x1347)
+(or (not x1731) x1213)
+(or x1732 (not x1731))
+(or x1732 (not x1730))
+(or x1731 x1730 (not x1732))
+(or (not x1236) (not x1235) (not x1256) (not x1213) x1257 (not x1213) (not x1236) (not x1258) (not x1732) x1733)
+(or (not x1733) x1236)
+(or (not x1733) x1235)
+(or (not x1733) x1256)
+(or (not x1733) x1213)
+(or (not x1733) (not x1257))
+(or (not x1733) x1213)
+(or (not x1733) x1236)
+(or (not x1733) x1258)
+(or (not x1733) x1732)
+(or (not x1722) (not x1723) (not x1724) (not x1353) (not x1213) x1734)
+(or (not x1734) x1722)
+(or (not x1734) x1723)
+(or (not x1734) x1724)
+(or (not x1734) x1353)
+(or (not x1734) x1213)
+(or (not x1722) (not x1726) (not x1722) (not x1359) (not x1213) x1735)
+(or (not x1735) x1722)
+(or (not x1735) x1726)
+(or (not x1735) x1722)
+(or (not x1735) x1359)
+(or (not x1735) x1213)
+(or x1736 (not x1735))
+(or x1736 (not x1734))
+(or x1735 x1734 (not x1736))
+(or (not x1236) (not x1235) (not x1256) (not x1213) x1257 (not x1213) (not x1236) (not x1258) (not x1736) x1737)
+(or (not x1737) x1236)
+(or (not x1737) x1235)
+(or (not x1737) x1256)
+(or (not x1737) x1213)
+(or (not x1737) (not x1257))
+(or (not x1737) x1213)
+(or (not x1737) x1236)
+(or (not x1737) x1258)
+(or (not x1737) x1736)
+(or (not x1722) (not x1723) (not x1724) (not x1365) (not x1213) x1738)
+(or (not x1738) x1722)
+(or (not x1738) x1723)
+(or (not x1738) x1724)
+(or (not x1738) x1365)
+(or (not x1738) x1213)
+(or (not x1722) (not x1726) (not x1722) (not x1371) (not x1213) x1739)
+(or (not x1739) x1722)
+(or (not x1739) x1726)
+(or (not x1739) x1722)
+(or (not x1739) x1371)
+(or (not x1739) x1213)
+(or x1740 (not x1739))
+(or x1740 (not x1738))
+(or x1739 x1738 (not x1740))
+(or (not x1236) (not x1235) (not x1256) (not x1213) x1257 (not x1213) (not x1236) (not x1258) (not x1740) x1741)
+(or (not x1741) x1236)
+(or (not x1741) x1235)
+(or (not x1741) x1256)
+(or (not x1741) x1213)
+(or (not x1741) (not x1257))
+(or (not x1741) x1213)
+(or (not x1741) x1236)
+(or (not x1741) x1258)
+(or (not x1741) x1740)
+(or (not x1722) (not x1723) (not x1724) (not x1377) (not x1213) x1742)
+(or (not x1742) x1722)
+(or (not x1742) x1723)
+(or (not x1742) x1724)
+(or (not x1742) x1377)
+(or (not x1742) x1213)
+(or (not x1722) (not x1726) (not x1722) (not x1383) (not x1213) x1743)
+(or (not x1743) x1722)
+(or (not x1743) x1726)
+(or (not x1743) x1722)
+(or (not x1743) x1383)
+(or (not x1743) x1213)
+(or x1744 (not x1743))
+(or x1744 (not x1742))
+(or x1743 x1742 (not x1744))
+(or (not x1236) (not x1235) (not x1256) (not x1213) x1257 (not x1213) (not x1236) (not x1258) (not x1744) x1745)
+(or (not x1745) x1236)
+(or (not x1745) x1235)
+(or (not x1745) x1256)
+(or (not x1745) x1213)
+(or (not x1745) (not x1257))
+(or (not x1745) x1213)
+(or (not x1745) x1236)
+(or (not x1745) x1258)
+(or (not x1745) x1744)
+(or x1724 (not x1746))
+(or x1724 (not x1747))
+(or x1724 (not x1746))
+(or x1746 x1747 x1746 (not x1724))
+(or (not x1748) (not x1243) (not x1213) x1746)
+(or (not x1746) x1748)
+(or (not x1746) x1243)
+(or (not x1746) x1213)
+(or (not x1311) (not x1213) x1313)
+(or (not x1313) x1311)
+(or (not x1313) x1213)
+(or (not x1233) (not x1256) (not x1213) x1257 (not x1213) (not x1236) (not x1258) (not x1235) (not x1236) (not x1243) (not x1213) (not x1311) (not x1213) x1747)
+(or (not x1747) x1233)
+(or (not x1747) x1256)
+(or (not x1747) x1213)
+(or (not x1747) (not x1257))
+(or (not x1747) x1213)
+(or (not x1747) x1236)
+(or (not x1747) x1258)
+(or (not x1747) x1235)
+(or (not x1747) x1236)
+(or (not x1747) x1243)
+(or (not x1747) x1213)
+(or (not x1747) x1311)
+(or (not x1747) x1213)
+(or x1723 (not x1747))
+(or x1723 (not x1746))
+(or x1747 x1746 (not x1723))
+(or (not x1722) (not x1723) (not x1724) (not x1389) (not x1213) x1749)
+(or (not x1749) x1722)
+(or (not x1749) x1723)
+(or (not x1749) x1724)
+(or (not x1749) x1389)
+(or (not x1749) x1213)
+(or x1714 x1311)
+(or x1714 x1213)
+(or (not x1311) (not x1213) (not x1714))
+(or x1510 x1256)
+(or x1510 x1213)
+(or x1510 (not x1257))
+(or x1510 x1213)
+(or (not x1256) (not x1213) x1257 (not x1213) (not x1510))
+(or x1234 x1256)
+(or x1234 x1213)
+(or x1234 (not x1257))
+(or x1234 x1213)
+(or x1234 (not x1560))
+(or x1234 (not x1579))
+(or (not x1256) (not x1213) x1257 (not x1213) x1560 x1579 (not x1234))
+(or (not x1750) (not x1213) (not x1751) (not x1213) (not x1752) (not x1213) x1557)
+(or (not x1557) x1750)
+(or (not x1557) x1213)
+(or (not x1557) x1751)
+(or (not x1557) x1213)
+(or (not x1557) x1752)
+(or (not x1557) x1213)
+(or x1260 (not x1557))
+(or x1260 x1256)
+(or x1260 x1213)
+(or x1260 (not x1257))
+(or x1260 x1213)
+(or x1260 (not x1560))
+(or x1260 (not x1579))
+(or x1260 (not x1559))
+(or x1260 (not x1560))
+(or x1557 (not x1256) (not x1213) x1257 (not x1213) x1560 x1579 x1559 x1560 (not x1260))
+(or x1748 (not x1557))
+(or x1748 x1256)
+(or x1748 x1213)
+(or x1748 (not x1257))
+(or x1748 x1213)
+(or x1748 (not x1560))
+(or x1748 (not x1579))
+(or x1748 (not x1559))
+(or x1748 (not x1560))
+(or x1748 x1243)
+(or x1748 x1213)
+(or x1557 (not x1256) (not x1213) x1257 (not x1213) x1560 x1579 x1559 x1560 (not x1243) (not x1213) (not x1748))
+(or x1726 (not x1557))
+(or x1726 x1256)
+(or x1726 x1213)
+(or x1726 (not x1257))
+(or x1726 x1213)
+(or x1726 (not x1560))
+(or x1726 (not x1579))
+(or x1726 (not x1559))
+(or x1726 (not x1560))
+(or x1726 x1243)
+(or x1726 x1213)
+(or x1726 x1311)
+(or x1726 x1213)
+(or x1557 (not x1256) (not x1213) x1257 (not x1213) x1560 x1579 x1559 x1560 (not x1243) (not x1213) (not x1311) (not x1213) (not x1726))
+(or x1716 x1243)
+(or x1716 x1213)
+(or (not x1243) (not x1213) (not x1716))
+(or (not x1243) (not x1213) x1251)
+(or (not x1251) x1243)
+(or (not x1251) x1213)
+(or x1233 x1750)
+(or x1233 x1213)
+(or x1233 x1751)
+(or x1233 x1213)
+(or x1233 x1752)
+(or x1233 x1213)
+(or (not x1750) (not x1213) (not x1751) (not x1213) (not x1752) (not x1213) (not x1233))
+(or (not x1233) (not x1256) (not x1213) x1257 (not x1213) (not x1236) (not x1258) (not x1235) (not x1236) (not x1243) (not x1213) x1753)
+(or (not x1753) x1233)
+(or (not x1753) x1256)
+(or (not x1753) x1213)
+(or (not x1753) (not x1257))
+(or (not x1753) x1213)
+(or (not x1753) x1236)
+(or (not x1753) x1258)
+(or (not x1753) x1235)
+(or (not x1753) x1236)
+(or (not x1753) x1243)
+(or (not x1753) x1213)
+(or x1722 (not x1753))
+(or x1722 x1243)
+(or x1722 x1213)
+(or x1753 (not x1243) (not x1213) (not x1722))
+(or (not x1722) (not x1726) (not x1722) (not x1395) (not x1213) x1754)
+(or (not x1754) x1722)
+(or (not x1754) x1726)
+(or (not x1754) x1722)
+(or (not x1754) x1395)
+(or (not x1754) x1213)
+(or x1755 (not x1754))
+(or x1755 (not x1749))
+(or x1754 x1749 (not x1755))
+(or (not x1236) (not x1235) (not x1256) (not x1213) x1257 (not x1213) (not x1236) (not x1258) (not x1755) x1756)
+(or (not x1756) x1236)
+(or (not x1756) x1235)
+(or (not x1756) x1256)
+(or (not x1756) x1213)
+(or (not x1756) (not x1257))
+(or (not x1756) x1213)
+(or (not x1756) x1236)
+(or (not x1756) x1258)
+(or (not x1756) x1755)
+(or x1757 (not x1756))
+(or x1757 (not x1745))
+(or x1757 (not x1741))
+(or x1757 (not x1737))
+(or x1757 (not x1733))
+(or x1757 (not x1729))
+(or x1756 x1745 x1741 x1737 x1733 x1729 (not x1757))
+(or (not x1256) (not x1213) x1257 (not x1213) (not x1236) (not x1258) x1558)
+(or (not x1558) x1256)
+(or (not x1558) x1213)
+(or (not x1558) (not x1257))
+(or (not x1558) x1213)
+(or (not x1558) x1236)
+(or (not x1558) x1258)
+(or (not x1256) (not x1213) x1257 (not x1213) (not x1236) (not x1258) (not x1757) (not x1721) x1758)
+(or (not x1758) x1256)
+(or (not x1758) x1213)
+(or (not x1758) (not x1257))
+(or (not x1758) x1213)
+(or (not x1758) x1236)
+(or (not x1758) x1258)
+(or (not x1758) x1757)
+(or (not x1758) x1721)
+(or x1759 (not x1758))
+(or x1759 (not x1713))
+(or x1758 x1713 (not x1759))
+(or x1258 (not x1760))
+(or x1258 (not x1761))
+(or x1760 x1761 (not x1258))
+(or x1235 (not x1760))
+(or x1235 (not x1761))
+(or x1235 (not x1560))
+(or x1760 x1761 x1560 (not x1235))
+(or (not x1235) (not x1759) x1762)
+(or (not x1762) x1235)
+(or (not x1762) x1759)
+(or (not x1507) (not x1213) x1540)
+(or (not x1540) x1507)
+(or (not x1540) x1213)
+(or (not x1532) (not x1502) x1579)
+(or (not x1579) x1532)
+(or (not x1579) x1502)
+(or (not x1532) (not x1502) (not x1236) x1559)
+(or (not x1559) x1532)
+(or (not x1559) x1502)
+(or (not x1559) x1236)
+(or (not x1532) (not x1502) (not x1236) (not x1507) (not x1213) x1763)
+(or (not x1763) x1532)
+(or (not x1763) x1502)
+(or (not x1763) x1236)
+(or (not x1763) x1507)
+(or (not x1763) x1213)
+(or x1764 (not x1763))
+(or x1764 (not x1762))
+(or x1763 x1762 (not x1764))
+(or x1502 (not x1257))
+(or x1502 x1213)
+(or x1257 (not x1213) (not x1502))
+(or (not x1256) (not x1213) x1760)
+(or (not x1760) x1256)
+(or (not x1760) x1213)
+(or x1236 (not x1760))
+(or x1236 (not x1257))
+(or x1236 x1213)
+(or x1760 x1257 (not x1213) (not x1236))
+(or (not x1236) (not x1764) x1765)
+(or (not x1765) x1236)
+(or (not x1765) x1764)
+(or x1257 (not x1213) x1761)
+(or (not x1761) (not x1257))
+(or (not x1761) x1213)
+(or x1532 x1256)
+(or x1532 x1213)
+(or (not x1256) (not x1213) (not x1532))
+(or (not x1532) x1257 (not x1213) x1560)
+(or (not x1560) x1532)
+(or (not x1560) (not x1257))
+(or (not x1560) x1213)
+(or (not x1532) x1257 (not x1213) (not x1564) (not x1213) x1766)
+(or (not x1766) x1532)
+(or (not x1766) (not x1257))
+(or (not x1766) x1213)
+(or (not x1766) x1564)
+(or (not x1766) x1213)
+(or x1767 (not x1766))
+(or x1767 (not x1765))
+(or x1766 x1765 (not x1767))
+(or (not x1767) (not x1213) x1768)
+(or (not x1768) x1767)
+(or (not x1768) x1213)
+(or (not x1769) (not x1770) (not x1750) (not x1213) x1771)
+(or (not x1771) x1769)
+(or (not x1771) x1770)
+(or (not x1771) x1750)
+(or (not x1771) x1213)
+(or (not x1772) (not x1773) x1774)
+(or (not x1774) x1772)
+(or (not x1774) x1773)
+(or x1775 (not x1774))
+(or x1775 (not x1771))
+(or x1774 x1771 (not x1775))
+(or (not x1776) (not x1775) x1777)
+(or (not x1777) x1776)
+(or (not x1777) x1775)
+(or (not x1772) (not x1750) (not x1213) x1778)
+(or (not x1778) x1772)
+(or (not x1778) x1750)
+(or (not x1778) x1213)
+(or (not x1769) (not x1770) (not x1773) x1779)
+(or (not x1779) x1769)
+(or (not x1779) x1770)
+(or (not x1779) x1773)
+(or x1780 (not x1779))
+(or x1780 (not x1778))
+(or x1779 x1778 (not x1780))
+(or (not x1781) (not x1213) (not x1780) x1782)
+(or (not x1782) x1781)
+(or (not x1782) x1213)
+(or (not x1782) x1780)
+(or x1783 (not x1782))
+(or x1783 (not x1777))
+(or x1782 x1777 (not x1783))
+(or (not x1783) (not x1213) x1784)
+(or (not x1784) x1783)
+(or (not x1784) x1213)
+(or (not x1622) (not x1213) (not x1623) (not x1624) (not x1625) (not x1785) (not x1635) (not x1213) x1786)
+(or (not x1786) x1622)
+(or (not x1786) x1213)
+(or (not x1786) x1623)
+(or (not x1786) x1624)
+(or (not x1786) x1625)
+(or (not x1786) x1785)
+(or (not x1786) x1635)
+(or (not x1786) x1213)
+(or (not x1640) (not x1635) (not x1213) (not x1624) (not x1637) (not x1787) (not x1635) (not x1213) x1788)
+(or (not x1788) x1640)
+(or (not x1788) x1635)
+(or (not x1788) x1213)
+(or (not x1788) x1624)
+(or (not x1788) x1637)
+(or (not x1788) x1787)
+(or (not x1788) x1635)
+(or (not x1788) x1213)
+(or (not x1644) (not x1213) x1422)
+(or (not x1422) x1644)
+(or (not x1422) x1213)
+(or (not x1644) (not x1213) (not x98) x1658)
+(or (not x1658) x1644)
+(or (not x1658) x1213)
+(or (not x1658) x98)
+(or x1789 (not x1658))
+(or x1789 (not x1654))
+(or x1658 x1654 (not x1789))
+(or (not x1640) (not x1623) (not x1789) x1790)
+(or (not x1790) x1640)
+(or (not x1790) x1623)
+(or (not x1790) x1789)
+(or (not x1624) (not x1625) (not x1791) (not x1635) (not x1213) x1792)
+(or (not x1792) x1624)
+(or (not x1792) x1625)
+(or (not x1792) x1791)
+(or (not x1792) x1635)
+(or (not x1792) x1213)
+(or x1793 (not x1792))
+(or x1793 (not x1790))
+(or x1793 (not x1788))
+(or x1793 (not x1786))
+(or x1792 x1790 x1788 x1786 (not x1793))
+(or (not x1793) (not x1213) x1794)
+(or (not x1794) x1793)
+(or (not x1794) x1213)
+(or x1616 (not x1656))
+(or x1616 x1213)
+(or x1656 (not x1213) (not x1616))
+(or x1785 (not x1656))
+(or x1785 x1213)
+(or x1785 (not x1615))
+(or x1656 (not x1213) x1615 (not x1785))
+(or (not x1622) (not x1213) (not x1623) (not x1624) (not x1625) (not x1785) (not x1622) (not x1213) x1795)
+(or (not x1795) x1622)
+(or (not x1795) x1213)
+(or (not x1795) x1623)
+(or (not x1795) x1624)
+(or (not x1795) x1625)
+(or (not x1795) x1785)
+(or (not x1795) x1622)
+(or (not x1795) x1213)
+(or x1787 x1637)
+(or x1787 (not x1421))
+(or (not x1637) x1421 (not x1787))
+(or (not x1637) (not x1787) (not x1622) (not x1213) x1796)
+(or (not x1796) x1637)
+(or (not x1796) x1787)
+(or (not x1796) x1622)
+(or (not x1796) x1213)
+(or (not x1637) x1421 x1797)
+(or (not x1797) x1637)
+(or (not x1797) (not x1421))
+(or x1798 x1637)
+(or x1798 (not x1797))
+(or (not x1637) x1797 (not x1798))
+(or (not x1798) x1637 x1799)
+(or (not x1799) x1798)
+(or (not x1799) (not x1637))
+(or x1800 (not x1799))
+(or x1800 (not x1796))
+(or x1799 x1796 (not x1800))
+(or (not x1640) (not x1635) (not x1213) (not x1624) (not x1800) x1801)
+(or (not x1801) x1640)
+(or (not x1801) x1635)
+(or (not x1801) x1213)
+(or (not x1801) x1624)
+(or (not x1801) x1800)
+(or x1425 x1644)
+(or x1425 x1213)
+(or (not x1644) (not x1213) (not x1425))
+(or x1802 x1644)
+(or x1802 x1213)
+(or x1802 (not x1169))
+(or (not x1644) (not x1213) x1169 (not x1802))
+(or (not x1640) (not x1623) (not x1802) (not x1622) (not x1213) x1803)
+(or (not x1803) x1640)
+(or (not x1803) x1623)
+(or (not x1803) x1802)
+(or (not x1803) x1622)
+(or (not x1803) x1213)
+(or (not x1624) (not x1625) (not x1791) (not x1622) (not x1213) x1804)
+(or (not x1804) x1624)
+(or (not x1804) x1625)
+(or (not x1804) x1791)
+(or (not x1804) x1622)
+(or (not x1804) x1213)
+(or x1805 (not x1804))
+(or x1805 (not x1803))
+(or x1805 (not x1801))
+(or x1805 (not x1795))
+(or x1804 x1803 x1801 x1795 (not x1805))
+(or (not x1805) (not x1213) x1806)
+(or (not x1806) x1805)
+(or (not x1806) x1213)
+(or (not x1769) (not x1770) (not x1751) (not x1213) x1807)
+(or (not x1807) x1769)
+(or (not x1807) x1770)
+(or (not x1807) x1751)
+(or (not x1807) x1213)
+(or (not x1772) (not x1808) x1809)
+(or (not x1809) x1772)
+(or (not x1809) x1808)
+(or x1810 (not x1809))
+(or x1810 (not x1807))
+(or x1809 x1807 (not x1810))
+(or (not x1776) (not x1810) x1811)
+(or (not x1811) x1776)
+(or (not x1811) x1810)
+(or (not x1772) (not x1751) (not x1213) x1812)
+(or (not x1812) x1772)
+(or (not x1812) x1751)
+(or (not x1812) x1213)
+(or x1813 x1814 x1773)
+(or x1813 (not x1814) (not x1773))
+(or (not x1813) x1814 (not x1773))
+(or (not x1813) (not x1814) x1773)
+(or (not x1769) (not x1770) (not x1813) x1815)
+(or (not x1815) x1769)
+(or (not x1815) x1770)
+(or (not x1815) x1813)
+(or x1816 (not x1815))
+(or x1816 (not x1812))
+(or x1815 x1812 (not x1816))
+(or (not x1781) (not x1213) (not x1816) x1817)
+(or (not x1817) x1781)
+(or (not x1817) x1213)
+(or (not x1817) x1816)
+(or x1818 (not x1817))
+(or x1818 (not x1811))
+(or x1817 x1811 (not x1818))
+(or (not x1818) (not x1213) x1819)
+(or (not x1819) x1818)
+(or (not x1819) x1213)
+(or (not x1769) (not x1770) (not x1752) (not x1213) x1820)
+(or (not x1820) x1769)
+(or (not x1820) x1770)
+(or (not x1820) x1752)
+(or (not x1820) x1213)
+(or (not x1772) (not x1821) x1822)
+(or (not x1822) x1772)
+(or (not x1822) x1821)
+(or x1823 (not x1822))
+(or x1823 (not x1820))
+(or x1822 x1820 (not x1823))
+(or x1776 x1781)
+(or x1776 x1213)
+(or (not x1781) (not x1213) (not x1776))
+(or (not x1776) (not x1823) x1824)
+(or (not x1824) x1776)
+(or (not x1824) x1823)
+(or (not x1627) (not x1213) (not x91) (not x98) (not x1825) (not x1826) x1827)
+(or (not x1827) x1627)
+(or (not x1827) x1213)
+(or (not x1827) x91)
+(or (not x1827) x98)
+(or (not x1827) x1825)
+(or (not x1827) x1826)
+(or (not x90) (not x1633) (not x1213) (not x98) (not x1640) (not x1635) (not x1213) (not x1624) x1637 x1828)
+(or (not x1828) x90)
+(or (not x1828) x1633)
+(or (not x1828) x1213)
+(or (not x1828) x98)
+(or (not x1828) x1640)
+(or (not x1828) x1635)
+(or (not x1828) x1213)
+(or (not x1828) x1624)
+(or (not x1828) (not x1637))
+(or x1772 (not x1828))
+(or x1772 (not x1827))
+(or x1828 x1827 (not x1772))
+(or (not x1772) (not x1752) (not x1213) x1829)
+(or (not x1829) x1772)
+(or (not x1829) x1752)
+(or (not x1829) x1213)
+(or x1830 x1831 x1832)
+(or x1830 (not x1831) (not x1832))
+(or (not x1830) x1831 (not x1832))
+(or (not x1830) (not x1831) x1832)
+(or x1770 x1627)
+(or x1770 x1213)
+(or x1770 (not x1195))
+(or x1770 (not x1169))
+(or x1770 (not x1628))
+(or x1770 (not x1632))
+(or (not x1627) (not x1213) x1195 x1169 x1628 x1632 (not x1770))
+(or x1769 (not x1194))
+(or x1769 x1633)
+(or x1769 x1213)
+(or x1769 (not x1169))
+(or x1769 (not x1634))
+(or x1769 x1635)
+(or x1769 x1213)
+(or x1769 (not x1636))
+(or x1769 (not x1637))
+(or x1194 (not x1633) (not x1213) x1169 x1634 (not x1635) (not x1213) x1636 x1637 (not x1769))
+(or (not x1769) (not x1770) (not x1830) x1833)
+(or (not x1833) x1769)
+(or (not x1833) x1770)
+(or (not x1833) x1830)
+(or x1834 (not x1833))
+(or x1834 (not x1829))
+(or x1833 x1829 (not x1834))
+(or (not x1781) (not x1213) (not x1834) x1835)
+(or (not x1835) x1781)
+(or (not x1835) x1213)
+(or (not x1835) x1834)
+(or x1836 (not x1835))
+(or x1836 (not x1824))
+(or x1835 x1824 (not x1836))
+(or (not x1836) (not x1213) x1837)
+(or (not x1837) x1836)
+(or (not x1837) x1213)
+(or (not x1838) (not x1839) (not x1213) x1840)
+(or (not x1840) x1838)
+(or (not x1840) x1839)
+(or (not x1840) x1213)
+(or (not x1841) (not x1826) (not x1842) x1843)
+(or (not x1843) x1841)
+(or (not x1843) x1826)
+(or (not x1843) x1842)
+(or x1844 (not x1843))
+(or x1844 (not x1840))
+(or x1843 x1840 (not x1844))
+(or (not x1627) (not x1213) (not x91) (not x98) (not x1825) (not x1844) x1845)
+(or (not x1845) x1627)
+(or (not x1845) x1213)
+(or (not x1845) x91)
+(or (not x1845) x98)
+(or (not x1845) x1825)
+(or (not x1845) x1844)
+(or (not x1846) (not x1640) (not x1635) (not x1213) (not x1624) x1637 (not x1839) (not x1213) x1847)
+(or (not x1847) x1846)
+(or (not x1847) x1640)
+(or (not x1847) x1635)
+(or (not x1847) x1213)
+(or (not x1847) x1624)
+(or (not x1847) (not x1637))
+(or (not x1847) x1839)
+(or (not x1847) x1213)
+(or x1848 (not x1814))
+(or x1848 (not x1849))
+(or x1848 (not x1850))
+(or x1814 x1849 x1850 (not x1848))
+(or x1821 x1831 x1848)
+(or x1821 (not x1831) (not x1848))
+(or (not x1821) x1831 (not x1848))
+(or (not x1821) (not x1831) x1848)
+(or (not x1851) (not x1821) x1852)
+(or (not x1852) x1851)
+(or (not x1852) x1821)
+(or x1853 (not x1854))
+(or x1853 (not x1852))
+(or x1854 x1852 (not x1853))
+(or (not x1855) (not x1853) x1856)
+(or (not x1856) x1855)
+(or (not x1856) x1853)
+(or (not x1857) (not x1213) (not x1858) (not x1213) x1859)
+(or (not x1859) x1857)
+(or (not x1859) x1213)
+(or (not x1859) x1858)
+(or (not x1859) x1213)
+(or x1860 (not x1630))
+(or x1860 (not x1859))
+(or x1860 (not x1629))
+(or x1630 x1859 x1629 (not x1860))
+(or x1842 x1631 x1860)
+(or x1842 (not x1631) (not x1860))
+(or (not x1842) x1631 (not x1860))
+(or (not x1842) (not x1631) x1860)
+(or (not x1640) (not x1635) (not x1213) (not x1624) x1637 (not x1861) (not x1842) x1862)
+(or (not x1862) x1640)
+(or (not x1862) x1635)
+(or (not x1862) x1213)
+(or (not x1862) x1624)
+(or (not x1862) (not x1637))
+(or (not x1862) x1861)
+(or (not x1862) x1842)
+(or x1863 (not x1862))
+(or x1863 (not x1856))
+(or x1862 x1856 (not x1863))
+(or (not x1864) (not x1863) x1865)
+(or (not x1865) x1864)
+(or (not x1865) x1863)
+(or x1866 (not x1865))
+(or x1866 (not x1847))
+(or x1865 x1847 (not x1866))
+(or (not x90) (not x1633) (not x1213) (not x98) (not x1866) x1867)
+(or (not x1867) x90)
+(or (not x1867) x1633)
+(or (not x1867) x1213)
+(or (not x1867) x98)
+(or (not x1867) x1866)
+(or (not x90) (not x91) (not x1839) (not x1213) x1868)
+(or (not x1868) x90)
+(or (not x1868) x91)
+(or (not x1868) x1839)
+(or (not x1868) x1213)
+(or x1869 (not x1868))
+(or x1869 (not x1867))
+(or x1869 (not x1845))
+(or x1868 x1867 x1845 (not x1869))
+(or (not x1869) (not x1213) x1870)
+(or (not x1870) x1869)
+(or (not x1870) x1213)
+(or (not x1838) (not x1857) (not x1213) x1871)
+(or (not x1871) x1838)
+(or (not x1871) x1857)
+(or (not x1871) x1213)
+(or (not x1841) (not x1826) (not x1872) x1873)
+(or (not x1873) x1841)
+(or (not x1873) x1826)
+(or (not x1873) x1872)
+(or x1874 (not x1873))
+(or x1874 (not x1871))
+(or x1873 x1871 (not x1874))
+(or (not x1627) (not x1213) (not x91) (not x98) (not x1825) (not x1874) x1875)
+(or (not x1875) x1627)
+(or (not x1875) x1213)
+(or (not x1875) x91)
+(or (not x1875) x98)
+(or (not x1875) x1825)
+(or (not x1875) x1874)
+(or (not x1846) (not x1640) (not x1635) (not x1213) (not x1624) x1637 (not x1857) (not x1213) x1876)
+(or (not x1876) x1846)
+(or (not x1876) x1640)
+(or (not x1876) x1635)
+(or (not x1876) x1213)
+(or (not x1876) x1624)
+(or (not x1876) (not x1637))
+(or (not x1876) x1857)
+(or (not x1876) x1213)
+(or x1808 x1814 x1850)
+(or x1808 (not x1814) (not x1850))
+(or (not x1808) x1814 (not x1850))
+(or (not x1808) (not x1814) x1850)
+(or (not x1851) (not x1808) x1877)
+(or (not x1877) x1851)
+(or (not x1877) x1808)
+(or x1878 (not x1854))
+(or x1878 (not x1877))
+(or x1854 x1877 (not x1878))
+(or (not x1855) (not x1878) x1879)
+(or (not x1879) x1855)
+(or (not x1879) x1878)
+(or x1872 x1630 x1629)
+(or x1872 (not x1630) (not x1629))
+(or (not x1872) x1630 (not x1629))
+(or (not x1872) (not x1630) x1629)
+(or (not x1640) (not x1635) (not x1213) (not x1624) x1637 (not x1861) (not x1872) x1880)
+(or (not x1880) x1640)
+(or (not x1880) x1635)
+(or (not x1880) x1213)
+(or (not x1880) x1624)
+(or (not x1880) (not x1637))
+(or (not x1880) x1861)
+(or (not x1880) x1872)
+(or x1881 (not x1880))
+(or x1881 (not x1879))
+(or x1880 x1879 (not x1881))
+(or (not x1864) (not x1881) x1882)
+(or (not x1882) x1864)
+(or (not x1882) x1881)
+(or x1883 (not x1882))
+(or x1883 (not x1876))
+(or x1882 x1876 (not x1883))
+(or (not x90) (not x1633) (not x1213) (not x98) (not x1883) x1884)
+(or (not x1884) x90)
+(or (not x1884) x1633)
+(or (not x1884) x1213)
+(or (not x1884) x98)
+(or (not x1884) x1883)
+(or (not x90) (not x91) (not x1857) (not x1213) x1885)
+(or (not x1885) x90)
+(or (not x1885) x91)
+(or (not x1885) x1857)
+(or (not x1885) x1213)
+(or x1886 (not x1885))
+(or x1886 (not x1884))
+(or x1886 (not x1875))
+(or x1885 x1884 x1875 (not x1886))
+(or (not x1886) (not x1213) x1887)
+(or (not x1887) x1886)
+(or (not x1887) x1213)
+(or (not x1888) (not x1889) (not x1890) (not x1826) x1891)
+(or (not x1891) x1888)
+(or (not x1891) x1889)
+(or (not x1891) x1890)
+(or (not x1891) x1826)
+(or x1838 (not x1891))
+(or x1838 (not x1632))
+(or x1891 x1632 (not x1838))
+(or (not x1838) (not x1858) (not x1213) x1892)
+(or (not x1892) x1838)
+(or (not x1892) x1858)
+(or (not x1892) x1213)
+(or (not x1622) (not x1213) (not x1623) (not x1624) (not x1625) x1615 x1893)
+(or (not x1893) x1622)
+(or (not x1893) x1213)
+(or (not x1893) x1623)
+(or (not x1893) x1624)
+(or (not x1893) x1625)
+(or (not x1893) (not x1615))
+(or (not x1624) (not x1625) (not x1791) x1643)
+(or (not x1643) x1624)
+(or (not x1643) x1625)
+(or (not x1643) x1791)
+(or x1826 (not x1643))
+(or x1826 (not x1636))
+(or x1826 (not x1894))
+(or x1826 (not x1893))
+(or x1643 x1636 x1894 x1893 (not x1826))
+(or (not x1841) (not x1826) (not x1888) x1895)
+(or (not x1895) x1841)
+(or (not x1895) x1826)
+(or (not x1895) x1888)
+(or x1896 (not x1895))
+(or x1896 (not x1892))
+(or x1895 x1892 (not x1896))
+(or (not x1627) (not x1213) (not x91) (not x98) (not x1825) (not x1896) x1897)
+(or (not x1897) x1627)
+(or (not x1897) x1213)
+(or (not x1897) x91)
+(or (not x1897) x98)
+(or (not x1897) x1825)
+(or (not x1897) x1896)
+(or x1890 x1839)
+(or x1890 x1213)
+(or (not x1839) (not x1213) (not x1890))
+(or x1889 x1857)
+(or x1889 x1213)
+(or (not x1857) (not x1213) (not x1889))
+(or (not x1888) (not x1889) (not x1890) x1898)
+(or (not x1898) x1888)
+(or (not x1898) x1889)
+(or (not x1898) x1890)
+(or x1846 (not x1634))
+(or x1846 x1635)
+(or x1846 x1213)
+(or x1846 (not x1636))
+(or x1846 (not x1637))
+(or x1846 (not x1898))
+(or x1634 (not x1635) (not x1213) x1636 x1637 x1898 (not x1846))
+(or (not x1846) (not x1640) (not x1635) (not x1213) (not x1624) x1637 (not x1858) (not x1213) x1899)
+(or (not x1899) x1846)
+(or (not x1899) x1640)
+(or (not x1899) x1635)
+(or (not x1899) x1213)
+(or (not x1899) x1624)
+(or (not x1899) (not x1637))
+(or (not x1899) x1858)
+(or (not x1899) x1213)
+(or x1832 x1751)
+(or x1832 x1213)
+(or x1832 x1750)
+(or x1832 x1213)
+(or (not x1751) (not x1213) (not x1750) (not x1213) (not x1832))
+(or x1851 x1752)
+(or x1851 x1213)
+(or x1851 x1751)
+(or x1851 x1213)
+(or x1851 x1750)
+(or x1851 x1213)
+(or (not x1752) (not x1213) (not x1751) (not x1213) (not x1750) (not x1213) (not x1851))
+(or (not x1851) (not x1773) x1900)
+(or (not x1900) x1851)
+(or (not x1900) x1773)
+(or (not x1751) (not x1213) (not x1750) (not x1213) x1849)
+(or (not x1849) x1751)
+(or (not x1849) x1213)
+(or (not x1849) x1750)
+(or (not x1849) x1213)
+(or (not x1752) (not x1213) (not x1751) (not x1213) (not x1750) (not x1213) x1854)
+(or (not x1854) x1752)
+(or (not x1854) x1213)
+(or (not x1854) x1751)
+(or (not x1854) x1213)
+(or (not x1854) x1750)
+(or (not x1854) x1213)
+(or x1901 (not x1854))
+(or x1901 (not x1900))
+(or x1854 x1900 (not x1901))
+(or (not x1855) (not x1901) x1902)
+(or (not x1902) x1855)
+(or (not x1902) x1901)
+(or x1888 x1858)
+(or x1888 x1213)
+(or (not x1858) (not x1213) (not x1888))
+(or (not x1640) (not x1635) (not x1213) (not x1624) x1637 (not x1861) (not x1888) x1903)
+(or (not x1903) x1640)
+(or (not x1903) x1635)
+(or (not x1903) x1213)
+(or (not x1903) x1624)
+(or (not x1903) (not x1637))
+(or (not x1903) x1861)
+(or (not x1903) x1888)
+(or x1904 (not x1903))
+(or x1904 (not x1902))
+(or x1903 x1902 (not x1904))
+(or x1864 (not x1905))
+(or x1864 (not x1634))
+(or x1864 x1635)
+(or x1864 x1213)
+(or x1864 (not x1636))
+(or x1864 (not x1637))
+(or x1905 x1634 (not x1635) (not x1213) x1636 x1637 (not x1864))
+(or (not x1864) (not x1904) x1906)
+(or (not x1906) x1864)
+(or (not x1906) x1904)
+(or x1907 (not x1906))
+(or x1907 (not x1899))
+(or x1906 x1899 (not x1907))
+(or (not x90) (not x1633) (not x1213) (not x98) (not x1907) x1908)
+(or (not x1908) x90)
+(or (not x1908) x1633)
+(or (not x1908) x1213)
+(or (not x1908) x98)
+(or (not x1908) x1907)
+(or (not x90) (not x91) (not x1858) (not x1213) x1909)
+(or (not x1909) x90)
+(or (not x1909) x91)
+(or (not x1909) x1858)
+(or (not x1909) x1213)
+(or x1910 (not x1909))
+(or x1910 (not x1908))
+(or x1910 (not x1897))
+(or x1909 x1908 x1897 (not x1910))
+(or (not x1910) (not x1213) x1911)
+(or (not x1911) x1910)
+(or (not x1911) x1213)
+(or (not x1627) (not x1213) (not x91) (not x98) (not x1825) (not x1841) (not x1633) (not x1213) x1912)
+(or (not x1912) x1627)
+(or (not x1912) x1213)
+(or (not x1912) x91)
+(or (not x1912) x98)
+(or (not x1912) x1825)
+(or (not x1912) x1841)
+(or (not x1912) x1633)
+(or (not x1912) x1213)
+(or (not x90) (not x1633) (not x1213) (not x98) (not x1855) (not x1633) (not x1213) x1913)
+(or (not x1913) x90)
+(or (not x1913) x1633)
+(or (not x1913) x1213)
+(or (not x1913) x98)
+(or (not x1913) x1855)
+(or (not x1913) x1633)
+(or (not x1913) x1213)
+(or (not x1750) (not x1213) x1850)
+(or (not x1850) x1750)
+(or (not x1850) x1213)
+(or (not x1914) (not x1750) (not x1213) x1915)
+(or (not x1915) x1914)
+(or (not x1915) x1750)
+(or (not x1915) x1213)
+(or x1916 (not x1814))
+(or x1916 (not x1915))
+(or x1814 x1915 (not x1916))
+(or (not x1917) (not x1916) x1918)
+(or (not x1918) x1917)
+(or (not x1918) x1916)
+(or x1919 (not x1831))
+(or x1919 (not x1918))
+(or x1919 (not x1195))
+(or x1831 x1918 x1195 (not x1919))
+(or (not x90) (not x91) (not x1919) x1920)
+(or (not x1920) x90)
+(or (not x1920) x91)
+(or (not x1920) x1919)
+(or x1921 (not x1920))
+(or x1921 (not x1913))
+(or x1921 (not x1912))
+(or x1920 x1913 x1912 (not x1921))
+(or (not x1921) (not x1213) x1922)
+(or (not x1922) x1921)
+(or (not x1922) x1213)
+(or x1791 x1622)
+(or x1791 x1213)
+(or x1791 (not x1654))
+(or (not x1622) (not x1213) x1654 (not x1791))
+(or x1923 x1622)
+(or x1923 x1213)
+(or x1923 (not x1654))
+(or x1923 (not x1636))
+(or x1923 (not x1655))
+(or x1923 (not x1615))
+(or (not x1622) (not x1213) x1654 x1636 x1655 x1615 (not x1923))
+(or (not x1622) (not x1213) (not x1623) x1924)
+(or (not x1924) x1622)
+(or (not x1924) x1213)
+(or (not x1924) x1623)
+(or x1925 (not x1636))
+(or x1925 (not x1655))
+(or x1925 (not x1924))
+(or x1636 x1655 x1924 (not x1925))
+(or (not x1925) (not x1624) (not x1926) (not x1923) x1632)
+(or (not x1632) x1925)
+(or (not x1632) x1624)
+(or (not x1632) x1926)
+(or (not x1632) x1923)
+(or x1841 (not x1629))
+(or x1841 (not x1630))
+(or x1841 (not x1631))
+(or x1841 (not x1632))
+(or x1629 x1630 x1631 x1632 (not x1841))
+(or x1825 (not x1194))
+(or x1825 x1633)
+(or x1825 x1213)
+(or x1194 (not x1633) (not x1213) (not x1825))
+(or (not x1627) (not x1213) (not x91) (not x98) (not x1825) (not x1841) (not x1627) (not x1213) x1927)
+(or (not x1927) x1627)
+(or (not x1927) x1213)
+(or (not x1927) x91)
+(or (not x1927) x98)
+(or (not x1927) x1825)
+(or (not x1927) x1841)
+(or (not x1927) x1627)
+(or (not x1927) x1213)
+(or (not x1640) (not x1623) x1636)
+(or (not x1636) x1640)
+(or (not x1636) x1623)
+(or x1623 x1635)
+(or x1623 x1213)
+(or (not x1635) (not x1213) (not x1623))
+(or x1625 (not x1634))
+(or x1625 x1635)
+(or x1625 x1213)
+(or x1634 (not x1635) (not x1213) (not x1625))
+(or x1926 (not x1634))
+(or x1926 x1635)
+(or x1926 x1213)
+(or x1926 (not x1636))
+(or x1634 (not x1635) (not x1213) x1636 (not x1926))
+(or x1855 (not x1634))
+(or x1855 x1635)
+(or x1855 x1213)
+(or x1855 (not x1636))
+(or x1855 (not x1637))
+(or x1634 (not x1635) (not x1213) x1636 x1637 (not x1855))
+(or (not x1855) (not x1627) (not x1213) x1928)
+(or (not x1928) x1855)
+(or (not x1928) x1627)
+(or (not x1928) x1213)
+(or (not x1839) (not x1213) x1631)
+(or (not x1631) x1839)
+(or (not x1631) x1213)
+(or (not x1857) (not x1213) x1630)
+(or (not x1630) x1857)
+(or (not x1630) x1213)
+(or (not x1858) (not x1213) x1629)
+(or (not x1629) x1858)
+(or (not x1629) x1213)
+(or x1861 (not x1629))
+(or x1861 (not x1630))
+(or x1861 (not x1631))
+(or x1629 x1630 x1631 (not x1861))
+(or (not x1622) (not x1213) x1634)
+(or (not x1634) x1622)
+(or (not x1634) x1213)
+(or x1624 (not x1634))
+(or x1624 (not x1654))
+(or x1634 x1654 (not x1624))
+(or (not x1635) (not x1213) x1654)
+(or (not x1654) x1635)
+(or (not x1654) x1213)
+(or x1640 x1622)
+(or x1640 x1213)
+(or (not x1622) (not x1213) (not x1640))
+(or (not x1640) (not x1635) (not x1213) x1655)
+(or (not x1655) x1640)
+(or (not x1655) x1635)
+(or (not x1655) x1213)
+(or (not x1640) (not x1635) (not x1213) (not x1624) x1894)
+(or (not x1894) x1640)
+(or (not x1894) x1635)
+(or (not x1894) x1213)
+(or (not x1894) x1624)
+(or (not x1640) (not x1635) (not x1213) (not x1624) x1637 (not x1861) x1905)
+(or (not x1905) x1640)
+(or (not x1905) x1635)
+(or (not x1905) x1213)
+(or (not x1905) x1624)
+(or (not x1905) (not x1637))
+(or (not x1905) x1861)
+(or x1929 (not x1905))
+(or x1929 (not x1928))
+(or x1905 x1928 (not x1929))
+(or x98 (not x1194))
+(or x98 (not x1195))
+(or x1194 x1195 (not x98))
+(or (not x1633) (not x1213) x1195)
+(or (not x1195) x1633)
+(or (not x1195) x1213)
+(or (not x90) (not x1633) (not x1213) x1628)
+(or (not x1628) x90)
+(or (not x1628) x1633)
+(or (not x1628) x1213)
+(or (not x90) (not x1633) (not x1213) (not x98) (not x1929) x1930)
+(or (not x1930) x90)
+(or (not x1930) x1633)
+(or (not x1930) x1213)
+(or (not x1930) x98)
+(or (not x1930) x1929)
+(or (not x1627) (not x1213) x1194)
+(or (not x1194) x1627)
+(or (not x1194) x1213)
+(or x1773 x1750)
+(or x1773 x1213)
+(or (not x1750) (not x1213) (not x1773))
+(or (not x1751) (not x1213) x1814)
+(or (not x1814) x1751)
+(or (not x1814) x1213)
+(or x1931 (not x1814))
+(or x1931 x1750)
+(or x1931 x1213)
+(or x1814 (not x1750) (not x1213) (not x1931))
+(or x1914 x1751)
+(or x1914 x1213)
+(or (not x1751) (not x1213) (not x1914))
+(or (not x1914) (not x1931) x1932)
+(or (not x1932) x1914)
+(or (not x1932) x1931)
+(or (not x1752) (not x1213) x1831)
+(or (not x1831) x1752)
+(or (not x1831) x1213)
+(or x1933 (not x1831))
+(or x1933 (not x1932))
+(or x1831 x1932 (not x1933))
+(or x1917 x1752)
+(or x1917 x1213)
+(or (not x1752) (not x1213) (not x1917))
+(or x91 x1633)
+(or x91 x1213)
+(or (not x1633) (not x1213) (not x91))
+(or x90 x1627)
+(or x90 x1213)
+(or (not x1627) (not x1213) (not x90))
+(or (not x90) (not x91) x1169)
+(or (not x1169) x90)
+(or (not x1169) x91)
+(or (not x90) (not x91) (not x1917) (not x1933) (not x1627) (not x1213) x1934)
+(or (not x1934) x90)
+(or (not x1934) x91)
+(or (not x1934) x1917)
+(or (not x1934) x1933)
+(or (not x1934) x1627)
+(or (not x1934) x1213)
+(or x1935 (not x1934))
+(or x1935 (not x1930))
+(or x1935 (not x1927))
+(or x1934 x1930 x1927 (not x1935))
+(or (not x1935) (not x1213) x1936)
+(or (not x1936) x1935)
+(or (not x1936) x1213)
+(or x1937 (not x1214))
+(or x1937 (not x1213))
+(or x1214 x1213 (not x1937))
+(or x1214 x1213 x1938)
+(or (not x1938) (not x1214))
+(or (not x1938) (not x1213))
+(or x1939 (not x1938))
+(or x1939 (not x1214))
+(or x1939 x1213)
+(or x1938 x1214 (not x1213) (not x1939))
+(or (not x1940) (not x88))
+(or (not x1940) x87)
+(or (not x1940) (not x86))
+(or (not x1940) x85)
+(or (not x1940) x84)
+(or (not x1941) (not x88))
+(or (not x1941) x87)
+(or (not x1941) (not x86))
+(or (not x1941) x85)
+(or (not x1941) (not x84))
+(or (not x1942) (not x88))
+(or (not x1942) x87)
+(or (not x1942) (not x86))
+(or (not x1942) (not x85))
+(or (not x1942) x84)
+(or (not x1943) (not x88))
+(or (not x1943) x87)
+(or (not x1943) (not x86))
+(or (not x1943) (not x85))
+(or (not x1943) (not x84))
+(or (not x1944) (not x88))
+(or (not x1944) (not x87))
+(or (not x1944) x86)
+(or (not x1944) x85)
+(or (not x1944) x84)
+(or (not x1945) (not x88))
+(or (not x1945) (not x87))
+(or (not x1945) x86)
+(or (not x1945) x85)
+(or (not x1945) (not x84))
+(or (not x1946) (not x88))
+(or (not x1946) (not x87))
+(or (not x1946) x86)
+(or (not x1946) (not x85))
+(or (not x1946) x84)
+(or (not x1947) (not x88))
+(or (not x1947) (not x87))
+(or (not x1947) x86)
+(or (not x1947) (not x85))
+(or (not x1947) (not x84))
+(or (not x1948) (not x88))
+(or (not x1948) (not x87))
+(or (not x1948) (not x86))
+(or (not x1948) x85)
+(or (not x1948) x84)
+(or (not x1949) (not x88))
+(or (not x1949) (not x87))
+(or (not x1949) (not x86))
+(or (not x1949) x85)
+(or (not x1949) (not x84))
+(or x88 x87 x86 x85 (not x84) x1167)
+(or (not x1167) (not x88))
+(or (not x1167) (not x87))
+(or (not x1167) (not x86))
+(or (not x1167) (not x85))
+(or (not x1167) x84)
+(or (not x1950) (not x88))
+(or (not x1950) (not x87))
+(or (not x1950) (not x86))
+(or (not x1950) (not x85))
+(or (not x1950) (not x84))
+(or x1951 (not x1950))
+(or x1951 (not x1167))
+(or x1951 (not x1949))
+(or x1951 (not x1948))
+(or x1951 (not x1947))
+(or x1951 (not x1946))
+(or x1951 (not x1945))
+(or x1951 (not x1944))
+(or x1951 (not x1943))
+(or x1951 (not x1942))
+(or x1951 (not x1941))
+(or x1950 x1167 x1949 x1948 x1947 x1946 x1945 x1944 x1943 x1942 x1941 (not x1951))
+(or (not x1952) (not x1953) (not x1954) (not x1955) (not x1956) (not x1957) (not x1958) (not x1959) x1960)
+(or (not x1960) x1952)
+(or (not x1960) x1953)
+(or (not x1960) x1954)
+(or (not x1960) x1955)
+(or (not x1960) x1956)
+(or (not x1960) x1957)
+(or (not x1960) x1958)
+(or (not x1960) x1959)
+(or x1961 (not x1962))
+(or x1961 x1963)
+(or x1962 (not x1963) (not x1961))
+(or x1962 (not x1961) (not x1964) x1965)
+(or (not x1965) (not x1962))
+(or (not x1965) x1961)
+(or (not x1965) x1964)
+(or x1954 (not x1966))
+(or x1954 (not x1967))
+(or x1954 (not x107))
+(or x1954 (not x106))
+(or x1954 (not x105))
+(or x1954 x104)
+(or x1954 x103)
+(or x1954 (not x1968))
+(or x1954 (not x1965))
+(or x1966 x1967 x107 x106 x105 (not x104) (not x103) x1968 x1965 (not x1954))
+(or x1969 (not x1970))
+(or x1969 x1971)
+(or x1970 (not x1971) (not x1969))
+(or x1970 (not x1969) (not x1972) x1973)
+(or (not x1973) (not x1970))
+(or (not x1973) x1969)
+(or (not x1973) x1972)
+(or x1953 (not x1966))
+(or x1953 (not x107))
+(or x1953 (not x106))
+(or x1953 (not x105))
+(or x1953 x104)
+(or x1953 (not x103))
+(or x1953 (not x1974))
+(or x1953 (not x1968))
+(or x1953 (not x1973))
+(or x1966 x107 x106 x105 (not x104) x103 x1974 x1968 x1973 (not x1953))
+(or x1975 (not x1976) x1977)
+(or (not x1977) (not x1975))
+(or (not x1977) x1976)
+(or x1978 (not x107))
+(or x1978 (not x106))
+(or x1978 (not x105))
+(or x1978 (not x104))
+(or x1978 x103)
+(or x1978 (not x1977))
+(or x107 x106 x105 x104 (not x103) x1977 (not x1978))
+(or (not x1978) (not x1953) (not x1954) (not x1955) (not x1956) (not x1959) x1979)
+(or (not x1979) x1978)
+(or (not x1979) x1953)
+(or (not x1979) x1954)
+(or (not x1979) x1955)
+(or (not x1979) x1956)
+(or (not x1979) x1959)
+(or x1964 (not x1962))
+(or x1964 (not x1963))
+(or x1962 x1963 (not x1964))
+(or x1980 (not x1966))
+(or x1980 (not x1967))
+(or x1980 (not x107))
+(or x1980 (not x106))
+(or x1980 (not x105))
+(or x1980 x104)
+(or x1980 x103)
+(or x1980 (not x1968))
+(or x1980 (not x1962))
+(or x1980 (not x1963))
+(or x1966 x1967 x107 x106 x105 (not x104) (not x103) x1968 x1962 x1963 (not x1980))
+(or x1972 (not x1970))
+(or x1972 (not x1971))
+(or x1970 x1971 (not x1972))
+(or x1981 (not x1966))
+(or x1981 (not x107))
+(or x1981 (not x106))
+(or x1981 (not x105))
+(or x1981 x104)
+(or x1981 (not x103))
+(or x1981 (not x1974))
+(or x1981 (not x1968))
+(or x1981 (not x1970))
+(or x1981 (not x1971))
+(or x1966 x107 x106 x105 (not x104) x103 x1974 x1968 x1970 x1971 (not x1981))
+(or x1982 (not x1975))
+(or x1982 (not x1983))
+(or x1982 x1984)
+(or x1975 x1983 (not x1984) (not x1982))
+(or x1975 (not x1985) (not x1982) (not x1976) x1986)
+(or (not x1986) (not x1975))
+(or (not x1986) x1985)
+(or (not x1986) x1982)
+(or (not x1986) x1976)
+(or x1952 (not x107))
+(or x1952 (not x106))
+(or x1952 (not x105))
+(or x1952 (not x104))
+(or x1952 x103)
+(or x1952 (not x1986))
+(or x107 x106 x105 x104 (not x103) x1986 (not x1952))
+(or (not x1952) (not x1981) (not x1980) (not x1957) (not x1958) (not x1959) x1987)
+(or (not x1987) x1952)
+(or (not x1987) x1981)
+(or (not x1987) x1980)
+(or (not x1987) x1957)
+(or (not x1987) x1958)
+(or (not x1987) x1959)
+(or x1988 (not x1966))
+(or x1988 (not x1967))
+(or x1988 (not x1989))
+(or x1988 (not x1990))
+(or x1988 (not x1991))
+(or x1988 (not x1992))
+(or x1988 (not x107))
+(or x1988 x106)
+(or x1988 (not x105))
+(or x1988 (not x104))
+(or x1988 x103)
+(or x1988 (not x111))
+(or x1988 (not x112))
+(or x1988 (not x113))
+(or x1988 (not x114))
+(or x1988 (not x115))
+(or x1988 (not x116))
+(or x1988 (not x1993))
+(or x1988 (not x1994))
+(or x1988 (not x1995))
+(or x1966 x1967 x1989 x1990 x1991 x1992 x107 (not x106) x105 x104 (not x103) x111 x112 x113 x114 x115 x116 x1993 x1994 x1995 (not x1988))
+(or x1996 (not x1966))
+(or x1996 (not x1967))
+(or x1996 (not x1989))
+(or x1996 (not x1990))
+(or x1996 (not x1991))
+(or x1996 (not x107))
+(or x1996 x106)
+(or x1996 (not x105))
+(or x1996 (not x104))
+(or x1996 (not x103))
+(or x1996 (not x1974))
+(or x1996 (not x1993))
+(or x1996 (not x1994))
+(or x1996 (not x111))
+(or x1996 (not x112))
+(or x1996 (not x113))
+(or x1996 (not x114))
+(or x1996 (not x115))
+(or x1996 (not x116))
+(or x1996 (not x1993))
+(or x1996 (not x1994))
+(or x1996 (not x1997))
+(or x1966 x1967 x1989 x1990 x1991 x107 (not x106) x105 x104 x103 x1974 x1993 x1994 x111 x112 x113 x114 x115 x116 x1993 x1994 x1997 (not x1996))
+(or x1998 (not x1966))
+(or x1998 (not x1967))
+(or x1998 (not x1989))
+(or x1998 (not x1990))
+(or x1998 (not x107))
+(or x1998 (not x106))
+(or x1998 x105)
+(or x1998 (not x104))
+(or x1998 x103)
+(or x1998 (not x111))
+(or x1998 (not x112))
+(or x1998 (not x113))
+(or x1998 (not x114))
+(or x1998 (not x115))
+(or x1998 (not x116))
+(or x1998 (not x1993))
+(or x1998 (not x1994))
+(or x1998 (not x1999))
+(or x1966 x1967 x1989 x1990 x107 x106 (not x105) x104 (not x103) x111 x112 x113 x114 x115 x116 x1993 x1994 x1999 (not x1998))
+(or x2000 (not x1966))
+(or x2000 (not x1967))
+(or x2000 (not x1989))
+(or x2000 (not x107))
+(or x2000 (not x106))
+(or x2000 x105)
+(or x2000 (not x104))
+(or x2000 (not x103))
+(or x2000 (not x1993))
+(or x2000 (not x1994))
+(or x2000 (not x111))
+(or x2000 (not x112))
+(or x2000 (not x113))
+(or x2000 (not x114))
+(or x2000 (not x115))
+(or x2000 (not x116))
+(or x2000 (not x1993))
+(or x2000 (not x1994))
+(or x2000 (not x2001))
+(or x1966 x1967 x1989 x107 x106 (not x105) x104 x103 x1993 x1994 x111 x112 x113 x114 x115 x116 x1993 x1994 x2001 (not x2000))
+(or x1976 (not x1975))
+(or x1976 (not x1983))
+(or x1976 (not x1984))
+(or x1975 x1983 x1984 (not x1976))
+(or (not x1985) (not x1976) x2002)
+(or (not x2002) x1985)
+(or (not x2002) x1976)
+(or x2003 (not x107))
+(or x2003 (not x106))
+(or x2003 (not x105))
+(or x2003 (not x104))
+(or x2003 x103)
+(or x2003 (not x2002))
+(or x107 x106 x105 x104 (not x103) x2002 (not x2003))
+(or (not x2003) (not x2004) (not x2005) (not x2000) (not x1998) (not x1996) (not x1988) (not x1959) x2006)
+(or (not x2006) x2003)
+(or (not x2006) x2004)
+(or (not x2006) x2005)
+(or (not x2006) x2000)
+(or (not x2006) x1998)
+(or (not x2006) x1996)
+(or (not x2006) x1988)
+(or (not x2006) x1959)
+(or x107 (not x106) x105 x104 (not x103) x111 x112 x113 x114 x115 x116 (not x109) (not x110) x2007)
+(or (not x2007) (not x107))
+(or (not x2007) x106)
+(or (not x2007) (not x105))
+(or (not x2007) (not x104))
+(or (not x2007) x103)
+(or (not x2007) (not x111))
+(or (not x2007) (not x112))
+(or (not x2007) (not x113))
+(or (not x2007) (not x114))
+(or (not x2007) (not x115))
+(or (not x2007) (not x116))
+(or (not x2007) x109)
+(or (not x2007) x110)
+(or x1959 (not x1966))
+(or x1959 (not x1967))
+(or x1959 (not x1989))
+(or x1959 (not x1990))
+(or x1959 (not x1991))
+(or x1959 (not x1992))
+(or x1959 (not x2007))
+(or x1966 x1967 x1989 x1990 x1991 x1992 x2007 (not x1959))
+(or x107 (not x106) x105 x104 x103 (not x108) (not x109) (not x110) x111 x112 x113 x114 x115 x116 (not x109) (not x110) x1992)
+(or (not x1992) (not x107))
+(or (not x1992) x106)
+(or (not x1992) (not x105))
+(or (not x1992) (not x104))
+(or (not x1992) (not x103))
+(or (not x1992) x108)
+(or (not x1992) x109)
+(or (not x1992) x110)
+(or (not x1992) (not x111))
+(or (not x1992) (not x112))
+(or (not x1992) (not x113))
+(or (not x1992) (not x114))
+(or (not x1992) (not x115))
+(or (not x1992) (not x116))
+(or (not x1992) x109)
+(or (not x1992) x110)
+(or x1958 (not x1966))
+(or x1958 (not x1967))
+(or x1958 (not x1989))
+(or x1958 (not x1990))
+(or x1958 (not x1991))
+(or x1958 (not x1992))
+(or x1958 (not x107))
+(or x1958 x106)
+(or x1958 (not x105))
+(or x1958 (not x104))
+(or x1958 x103)
+(or x1958 (not x111))
+(or x1958 (not x112))
+(or x1958 (not x113))
+(or x1958 (not x114))
+(or x1958 (not x115))
+(or x1958 (not x116))
+(or x1958 (not x1993))
+(or x1958 (not x1994))
+(or x1966 x1967 x1989 x1990 x1991 x1992 x107 (not x106) x105 x104 (not x103) x111 x112 x113 x114 x115 x116 x1993 x1994 (not x1958))
+(or x2008 (not x1966))
+(or x2008 (not x1967))
+(or x2008 (not x1989))
+(or x2008 (not x1990))
+(or x2008 (not x1991))
+(or x2008 (not x1992))
+(or x2008 (not x107))
+(or x2008 x106)
+(or x2008 (not x105))
+(or x2008 (not x104))
+(or x2008 x103)
+(or x2008 (not x111))
+(or x2008 (not x112))
+(or x2008 (not x113))
+(or x2008 (not x114))
+(or x2008 (not x115))
+(or x2008 (not x116))
+(or x2008 (not x1993))
+(or x2008 (not x1994))
+(or x2008 x1995)
+(or x1966 x1967 x1989 x1990 x1991 x1992 x107 (not x106) x105 x104 (not x103) x111 x112 x113 x114 x115 x116 x1993 x1994 (not x1995) (not x2008))
+(or x107 x106 (not x105) x104 (not x103) x111 x112 x113 x114 x115 x116 (not x109) (not x110) x1991)
+(or (not x1991) (not x107))
+(or (not x1991) (not x106))
+(or (not x1991) x105)
+(or (not x1991) (not x104))
+(or (not x1991) x103)
+(or (not x1991) (not x111))
+(or (not x1991) (not x112))
+(or (not x1991) (not x113))
+(or (not x1991) (not x114))
+(or (not x1991) (not x115))
+(or (not x1991) (not x116))
+(or (not x1991) x109)
+(or (not x1991) x110)
+(or x1957 (not x1966))
+(or x1957 (not x1967))
+(or x1957 (not x1989))
+(or x1957 (not x1990))
+(or x1957 (not x1991))
+(or x1957 (not x107))
+(or x1957 x106)
+(or x1957 (not x105))
+(or x1957 (not x104))
+(or x1957 (not x103))
+(or x1957 (not x1974))
+(or x1957 (not x1993))
+(or x1957 (not x1994))
+(or x1957 (not x111))
+(or x1957 (not x112))
+(or x1957 (not x113))
+(or x1957 (not x114))
+(or x1957 (not x115))
+(or x1957 (not x116))
+(or x1957 (not x1993))
+(or x1957 (not x1994))
+(or x1966 x1967 x1989 x1990 x1991 x107 (not x106) x105 x104 x103 x1974 x1993 x1994 x111 x112 x113 x114 x115 x116 x1993 x1994 (not x1957))
+(or x2009 (not x1966))
+(or x2009 (not x1967))
+(or x2009 (not x1989))
+(or x2009 (not x1990))
+(or x2009 (not x1991))
+(or x2009 (not x107))
+(or x2009 x106)
+(or x2009 (not x105))
+(or x2009 (not x104))
+(or x2009 (not x103))
+(or x2009 (not x1974))
+(or x2009 (not x1993))
+(or x2009 (not x1994))
+(or x2009 (not x111))
+(or x2009 (not x112))
+(or x2009 (not x113))
+(or x2009 (not x114))
+(or x2009 (not x115))
+(or x2009 (not x116))
+(or x2009 (not x1993))
+(or x2009 (not x1994))
+(or x2009 x1997)
+(or x1966 x1967 x1989 x1990 x1991 x107 (not x106) x105 x104 x103 x1974 x1993 x1994 x111 x112 x113 x114 x115 x116 x1993 x1994 (not x1997) (not x2009))
+(or x107 x106 (not x105) x104 x103 (not x109) (not x110) x111 x112 x113 x114 x115 x116 (not x109) (not x110) x1990)
+(or (not x1990) (not x107))
+(or (not x1990) (not x106))
+(or (not x1990) x105)
+(or (not x1990) (not x104))
+(or (not x1990) (not x103))
+(or (not x1990) x109)
+(or (not x1990) x110)
+(or (not x1990) (not x111))
+(or (not x1990) (not x112))
+(or (not x1990) (not x113))
+(or (not x1990) (not x114))
+(or (not x1990) (not x115))
+(or (not x1990) (not x116))
+(or (not x1990) x109)
+(or (not x1990) x110)
+(or x1956 (not x1966))
+(or x1956 (not x1967))
+(or x1956 (not x1989))
+(or x1956 (not x1990))
+(or x1956 (not x107))
+(or x1956 (not x106))
+(or x1956 x105)
+(or x1956 (not x104))
+(or x1956 x103)
+(or x1956 (not x111))
+(or x1956 (not x112))
+(or x1956 (not x113))
+(or x1956 (not x114))
+(or x1956 (not x115))
+(or x1956 (not x116))
+(or x1956 (not x1993))
+(or x1956 (not x1994))
+(or x1966 x1967 x1989 x1990 x107 x106 (not x105) x104 (not x103) x111 x112 x113 x114 x115 x116 x1993 x1994 (not x1956))
+(or x2010 (not x1966))
+(or x2010 (not x1967))
+(or x2010 (not x1989))
+(or x2010 (not x1990))
+(or x2010 (not x107))
+(or x2010 (not x106))
+(or x2010 x105)
+(or x2010 (not x104))
+(or x2010 x103)
+(or x2010 (not x111))
+(or x2010 (not x112))
+(or x2010 (not x113))
+(or x2010 (not x114))
+(or x2010 (not x115))
+(or x2010 (not x116))
+(or x2010 (not x1993))
+(or x2010 (not x1994))
+(or x2010 x1999)
+(or x1966 x1967 x1989 x1990 x107 x106 (not x105) x104 (not x103) x111 x112 x113 x114 x115 x116 x1993 x1994 (not x1999) (not x2010))
+(or x107 x106 x105 (not x104) (not x103) (not x117) x1989)
+(or (not x1989) (not x107))
+(or (not x1989) (not x106))
+(or (not x1989) (not x105))
+(or (not x1989) x104)
+(or (not x1989) x103)
+(or (not x1989) x117)
+(or x1955 (not x1966))
+(or x1955 (not x1967))
+(or x1955 (not x1989))
+(or x1955 (not x107))
+(or x1955 (not x106))
+(or x1955 x105)
+(or x1955 (not x104))
+(or x1955 (not x103))
+(or x1955 (not x1993))
+(or x1955 (not x1994))
+(or x1955 (not x111))
+(or x1955 (not x112))
+(or x1955 (not x113))
+(or x1955 (not x114))
+(or x1955 (not x115))
+(or x1955 (not x116))
+(or x1955 (not x1993))
+(or x1955 (not x1994))
+(or x1966 x1967 x1989 x107 x106 (not x105) x104 x103 x1993 x1994 x111 x112 x113 x114 x115 x116 x1993 x1994 (not x1955))
+(or x2011 (not x1966))
+(or x2011 (not x1967))
+(or x2011 (not x1989))
+(or x2011 (not x107))
+(or x2011 (not x106))
+(or x2011 x105)
+(or x2011 (not x104))
+(or x2011 (not x103))
+(or x2011 (not x1993))
+(or x2011 (not x1994))
+(or x2011 (not x111))
+(or x2011 (not x112))
+(or x2011 (not x113))
+(or x2011 (not x114))
+(or x2011 (not x115))
+(or x2011 (not x116))
+(or x2011 (not x1993))
+(or x2011 (not x1994))
+(or x2011 x2001)
+(or x1966 x1967 x1989 x107 x106 (not x105) x104 x103 x1993 x1994 x111 x112 x113 x114 x115 x116 x1993 x1994 (not x2001) (not x2011))
+(or x108 x2012)
+(or x108 (not x1993))
+(or x108 (not x1994))
+(or (not x2012) x1993 x1994 (not x108))
+(or x107 x106 x105 (not x104) x103 (not x108) (not x117) x1967)
+(or (not x1967) (not x107))
+(or (not x1967) (not x106))
+(or (not x1967) (not x105))
+(or (not x1967) x104)
+(or (not x1967) (not x103))
+(or (not x1967) x108)
+(or (not x1967) x117)
+(or x2005 (not x1966))
+(or x2005 (not x1967))
+(or x2005 (not x107))
+(or x2005 (not x106))
+(or x2005 (not x105))
+(or x2005 x104)
+(or x2005 x103)
+(or x2005 (not x1968))
+(or x2005 x1962)
+(or x1966 x1967 x107 x106 x105 (not x104) (not x103) x1968 (not x1962) (not x2005))
+(or (not x2012) (not x109) (not x110) x1974)
+(or (not x1974) x2012)
+(or (not x1974) x109)
+(or (not x1974) x110)
+(or x2004 (not x1966))
+(or x2004 (not x107))
+(or x2004 (not x106))
+(or x2004 (not x105))
+(or x2004 x104)
+(or x2004 (not x103))
+(or x2004 (not x1974))
+(or x2004 (not x1968))
+(or x2004 x1970)
+(or x1966 x107 x106 x105 (not x104) x103 x1974 x1968 (not x1970) (not x2004))
+(or x1985 (not x1975))
+(or x1985 x1983)
+(or x1975 (not x1983) (not x1985))
+(or x1975 (not x1985) x2014)
+(or (not x2014) (not x1975))
+(or (not x2014) x1985)
+(or x2015 (not x107))
+(or x2015 (not x106))
+(or x2015 (not x105))
+(or x2015 (not x104))
+(or x2015 x103)
+(or x2015 (not x2014))
+(or x107 x106 x105 x104 (not x103) x2014 (not x2015))
+(or (not x2015) (not x2004) (not x2005) (not x2011) (not x2010) (not x2009) (not x2008) (not x1959) x2016)
+(or (not x2016) x2015)
+(or (not x2016) x2004)
+(or (not x2016) x2005)
+(or (not x2016) x2011)
+(or (not x2016) x2010)
+(or (not x2016) x2009)
+(or (not x2016) x2008)
+(or (not x2016) x1959)
+(or (not x2017) (not x2018) (not x2012) x2019)
+(or (not x2019) x2017)
+(or (not x2019) x2018)
+(or (not x2019) x2012)
+(or x2017 (not x2020) x2021)
+(or (not x2021) (not x2017))
+(or (not x2021) x2020)
+(or x2022 (not x2021))
+(or x2022 (not x2019))
+(or x2021 x2019 (not x2022))
+(or (not x2022) (not x2012) x2023)
+(or (not x2023) x2022)
+(or (not x2023) x2012)
+(or (not x2017) (not x2024) (not x2012) x2025)
+(or (not x2025) x2017)
+(or (not x2025) x2024)
+(or (not x2025) x2012)
+(or x2017 (not x2026) x2027)
+(or (not x2027) (not x2017))
+(or (not x2027) x2026)
+(or x2028 (not x2027))
+(or x2028 (not x2025))
+(or x2027 x2025 (not x2028))
+(or (not x2028) (not x2012) x2029)
+(or (not x2029) x2028)
+(or (not x2029) x2012)
+(or (not x2017) (not x2030) (not x2012) x2031)
+(or (not x2031) x2017)
+(or (not x2031) x2030)
+(or (not x2031) x2012)
+(or x2017 (not x2032) x2033)
+(or (not x2033) (not x2017))
+(or (not x2033) x2032)
+(or x2034 (not x2033))
+(or x2034 (not x2031))
+(or x2033 x2031 (not x2034))
+(or (not x2034) (not x2012) x2035)
+(or (not x2035) x2034)
+(or (not x2035) x2012)
+(or (not x2036) (not x2037) (not x2012) x2038)
+(or (not x2038) x2036)
+(or (not x2038) x2037)
+(or (not x2038) x2012)
+(or (not x2039) (not x112) x2040 x2041)
+(or (not x2041) x2039)
+(or (not x2041) x112)
+(or (not x2041) (not x2040))
+(or x2042 (not x2041))
+(or x2042 (not x2038))
+(or x2041 x2038 (not x2042))
+(or (not x2042) (not x2012) x2043)
+(or (not x2043) x2042)
+(or (not x2043) x2012)
+(or (not x2044) (not x2045) (not x2012) x2046)
+(or (not x2046) x2044)
+(or (not x2046) x2045)
+(or (not x2046) x2012)
+(or (not x2047) (not x111) x2048 x2049)
+(or (not x2049) x2047)
+(or (not x2049) x111)
+(or (not x2049) (not x2048))
+(or x2050 (not x2049))
+(or x2050 (not x2046))
+(or x2049 x2046 (not x2050))
+(or (not x2050) (not x2012) x2051)
+(or (not x2051) x2050)
+(or (not x2051) x2012)
+(or (not x2036) (not x2052) (not x2012) x2053)
+(or (not x2053) x2036)
+(or (not x2053) x2052)
+(or (not x2053) x2012)
+(or (not x2039) (not x112) x2054 x2055)
+(or (not x2055) x2039)
+(or (not x2055) x112)
+(or (not x2055) (not x2054))
+(or x2056 (not x2055))
+(or x2056 (not x2053))
+(or x2055 x2053 (not x2056))
+(or (not x2056) (not x2012) x2057)
+(or (not x2057) x2056)
+(or (not x2057) x2012)
+(or (not x2044) (not x2058) (not x2012) x2059)
+(or (not x2059) x2044)
+(or (not x2059) x2058)
+(or (not x2059) x2012)
+(or (not x2047) (not x111) x2060 x2061)
+(or (not x2061) x2047)
+(or (not x2061) x111)
+(or (not x2061) (not x2060))
+(or x2062 (not x2061))
+(or x2062 (not x2059))
+(or x2061 x2059 (not x2062))
+(or (not x2062) (not x2012) x2063)
+(or (not x2063) x2062)
+(or (not x2063) x2012)
+(or (not x2036) (not x2064) (not x2012) x2065)
+(or (not x2065) x2036)
+(or (not x2065) x2064)
+(or (not x2065) x2012)
+(or (not x2039) (not x112) x2066 x2067)
+(or (not x2067) x2039)
+(or (not x2067) x112)
+(or (not x2067) (not x2066))
+(or x2068 (not x2067))
+(or x2068 (not x2065))
+(or x2067 x2065 (not x2068))
+(or (not x2068) (not x2012) x2069)
+(or (not x2069) x2068)
+(or (not x2069) x2012)
+(or (not x2044) (not x2070) (not x2012) x2071)
+(or (not x2071) x2044)
+(or (not x2071) x2070)
+(or (not x2071) x2012)
+(or (not x2047) (not x111) x2072 x2073)
+(or (not x2073) x2047)
+(or (not x2073) x111)
+(or (not x2073) (not x2072))
+(or x2074 (not x2073))
+(or x2074 (not x2071))
+(or x2073 x2071 (not x2074))
+(or (not x2074) (not x2012) x2075)
+(or (not x2075) x2074)
+(or (not x2075) x2012)
+(or (not x2036) (not x2076) (not x2012) x2077)
+(or (not x2077) x2036)
+(or (not x2077) x2076)
+(or (not x2077) x2012)
+(or (not x2039) (not x112) (not x2078) x2079)
+(or (not x2079) x2039)
+(or (not x2079) x112)
+(or (not x2079) x2078)
+(or x2080 (not x2079))
+(or x2080 (not x2077))
+(or x2079 x2077 (not x2080))
+(or (not x2080) (not x2012) x2081)
+(or (not x2081) x2080)
+(or (not x2081) x2012)
+(or (not x2044) (not x2082) (not x2012) x2083)
+(or (not x2083) x2044)
+(or (not x2083) x2082)
+(or (not x2083) x2012)
+(or (not x2047) (not x111) (not x2084) x2085)
+(or (not x2085) x2047)
+(or (not x2085) x111)
+(or (not x2085) x2084)
+(or x2086 (not x2085))
+(or x2086 (not x2083))
+(or x2085 x2083 (not x2086))
+(or (not x2086) (not x2012) x2087)
+(or (not x2087) x2086)
+(or (not x2087) x2012)
+(or (not x2036) (not x2088) (not x2012) x2089)
+(or (not x2089) x2036)
+(or (not x2089) x2088)
+(or (not x2089) x2012)
+(or (not x2039) (not x112) x2090 x2091)
+(or (not x2091) x2039)
+(or (not x2091) x112)
+(or (not x2091) (not x2090))
+(or x2092 (not x2091))
+(or x2092 (not x2089))
+(or x2091 x2089 (not x2092))
+(or (not x2092) (not x2012) x2093)
+(or (not x2093) x2092)
+(or (not x2093) x2012)
+(or (not x2044) (not x2094) (not x2012) x2095)
+(or (not x2095) x2044)
+(or (not x2095) x2094)
+(or (not x2095) x2012)
+(or (not x2047) (not x111) x2096 x2097)
+(or (not x2097) x2047)
+(or (not x2097) x111)
+(or (not x2097) (not x2096))
+(or x2098 (not x2097))
+(or x2098 (not x2095))
+(or x2097 x2095 (not x2098))
+(or (not x2098) (not x2012) x2099)
+(or (not x2099) x2098)
+(or (not x2099) x2012)
+(or (not x2036) (not x2100) (not x2012) x2101)
+(or (not x2101) x2036)
+(or (not x2101) x2100)
+(or (not x2101) x2012)
+(or (not x2039) (not x112) x2102 x2103)
+(or (not x2103) x2039)
+(or (not x2103) x112)
+(or (not x2103) (not x2102))
+(or x2104 (not x2103))
+(or x2104 (not x2101))
+(or x2103 x2101 (not x2104))
+(or (not x2104) (not x2012) x2105)
+(or (not x2105) x2104)
+(or (not x2105) x2012)
+(or (not x2044) (not x2106) (not x2012) x2107)
+(or (not x2107) x2044)
+(or (not x2107) x2106)
+(or (not x2107) x2012)
+(or (not x2047) (not x111) x2108 x2109)
+(or (not x2109) x2047)
+(or (not x2109) x111)
+(or (not x2109) (not x2108))
+(or x2110 (not x2109))
+(or x2110 (not x2107))
+(or x2109 x2107 (not x2110))
+(or (not x2110) (not x2012) x2111)
+(or (not x2111) x2110)
+(or (not x2111) x2012)
+(or (not x2112) (not x2113) (not x2012) x2114)
+(or (not x2114) x2112)
+(or (not x2114) x2113)
+(or (not x2114) x2012)
+(or (not x2115) (not x114) (not x114) x2116)
+(or (not x2116) x2115)
+(or (not x2116) x114)
+(or x2117 (not x2116))
+(or x2117 (not x2114))
+(or x2116 x2114 (not x2117))
+(or (not x2117) (not x2012) x2118)
+(or (not x2118) x2117)
+(or (not x2118) x2012)
+(or (not x2119) (not x2120) (not x2012) x2121)
+(or (not x2121) x2119)
+(or (not x2121) x2120)
+(or (not x2121) x2012)
+(or (not x2122) (not x113) (not x113) x2123)
+(or (not x2123) x2122)
+(or (not x2123) x113)
+(or x2124 (not x2123))
+(or x2124 (not x2121))
+(or x2123 x2121 (not x2124))
+(or (not x2124) (not x2012) x2125)
+(or (not x2125) x2124)
+(or (not x2125) x2012)
+(or x2119 (not x2126))
+(or x2119 x113)
+(or x2126 (not x113) (not x2119))
+(or (not x2119) (not x2127) (not x2012) (not x2128) (not x2012) x2129)
+(or (not x2129) x2119)
+(or (not x2129) x2127)
+(or (not x2129) x2012)
+(or (not x2129) x2128)
+(or (not x2129) x2012)
+(or (not x2122) (not x113) x2130)
+(or (not x2130) x2122)
+(or (not x2130) x113)
+(or x2131 (not x2130))
+(or x2131 (not x2129))
+(or x2130 x2129 (not x2131))
+(or (not x2131) (not x2012) x2132)
+(or (not x2132) x2131)
+(or (not x2132) x2012)
+(or x2133 x2134)
+(or x2133 x2012)
+(or x2133 x2135)
+(or x2133 x2012)
+(or x2133 x2127)
+(or x2133 x2012)
+(or (not x2134) (not x2012) (not x2135) (not x2012) (not x2127) (not x2012) (not x2133))
+(or (not x2133) (not x2136) x2137)
+(or (not x2137) x2133)
+(or (not x2137) x2136)
+(or x2138 x2134)
+(or x2138 x2012)
+(or x2138 x2134)
+(or x2138 x2012)
+(or x2138 (not x2137))
+(or (not x2134) (not x2012) (not x2134) (not x2012) x2137 (not x2138))
+(or (not x2139) (not x2140) x2141)
+(or (not x2141) x2139)
+(or (not x2141) x2140)
+(or x2136 (not x2142))
+(or x2136 (not x2141))
+(or x2142 x2141 (not x2136))
+(or (not x2134) (not x2012) (not x2135) (not x2012) (not x2127) (not x2012) x2143)
+(or (not x2143) x2134)
+(or (not x2143) x2012)
+(or (not x2143) x2135)
+(or (not x2143) x2012)
+(or (not x2143) x2127)
+(or (not x2143) x2012)
+(or x2144 (not x2143))
+(or x2144 (not x2142))
+(or x2144 (not x2141))
+(or x2143 x2142 x2141 (not x2144))
+(or x2145 x2142 x2144)
+(or x2145 (not x2142) (not x2144))
+(or (not x2145) x2142 (not x2144))
+(or (not x2145) (not x2142) x2144)
+(or x2146 x2145 x2138)
+(or x2146 (not x2145) (not x2138))
+(or (not x2146) x2145 (not x2138))
+(or (not x2146) (not x2145) x2138)
+(or (not x2147) (not x2148) (not x2149) (not x2150) (not x2146) x2151)
+(or (not x2151) x2147)
+(or (not x2151) x2148)
+(or (not x2151) x2149)
+(or (not x2151) x2150)
+(or (not x2151) x2146)
+(or (not x2152) (not x2134) (not x2012) x2153)
+(or (not x2153) x2152)
+(or (not x2153) x2134)
+(or (not x2153) x2012)
+(or x2154 (not x2153))
+(or x2154 (not x2151))
+(or x2153 x2151 (not x2154))
+(or (not x2154) (not x2012) x2155)
+(or (not x2155) x2154)
+(or (not x2155) x2012)
+(or x2112 (not x2156))
+(or x2112 x114)
+(or x2156 (not x114) (not x2112))
+(or (not x2112) (not x2157) (not x2012) (not x2158) (not x2012) x2159)
+(or (not x2159) x2112)
+(or (not x2159) x2157)
+(or (not x2159) x2012)
+(or (not x2159) x2158)
+(or (not x2159) x2012)
+(or (not x2115) (not x114) x2160)
+(or (not x2160) x2115)
+(or (not x2160) x114)
+(or x2161 (not x2160))
+(or x2161 (not x2159))
+(or x2160 x2159 (not x2161))
+(or (not x2161) (not x2012) x2162)
+(or (not x2162) x2161)
+(or (not x2162) x2012)
+(or x2044 (not x2163))
+(or x2044 x111)
+(or x2163 (not x111) (not x2044))
+(or (not x2044) (not x2164) (not x2012) (not x2165) (not x2012) x2166)
+(or (not x2166) x2044)
+(or (not x2166) x2164)
+(or (not x2166) x2012)
+(or (not x2166) x2165)
+(or (not x2166) x2012)
+(or (not x2047) (not x111) x2167)
+(or (not x2167) x2047)
+(or (not x2167) x111)
+(or x2168 (not x2167))
+(or x2168 (not x2166))
+(or x2167 x2166 (not x2168))
+(or (not x2168) (not x2012) x2169)
+(or (not x2169) x2168)
+(or (not x2169) x2012)
+(or x2170 x2171)
+(or x2170 x2012)
+(or x2170 x2135)
+(or x2170 x2012)
+(or x2170 x2164)
+(or x2170 x2012)
+(or (not x2171) (not x2012) (not x2135) (not x2012) (not x2164) (not x2012) (not x2170))
+(or (not x2170) (not x2172) x2173)
+(or (not x2173) x2170)
+(or (not x2173) x2172)
+(or x2174 x2171)
+(or x2174 x2012)
+(or x2174 x2171)
+(or x2174 x2012)
+(or x2174 (not x2173))
+(or (not x2171) (not x2012) (not x2171) (not x2012) x2173 (not x2174))
+(or (not x2175) (not x2176) x2177)
+(or (not x2177) x2175)
+(or (not x2177) x2176)
+(or x2172 (not x2178))
+(or x2172 (not x2177))
+(or x2178 x2177 (not x2172))
+(or (not x2171) (not x2012) (not x2135) (not x2012) (not x2164) (not x2012) x2179)
+(or (not x2179) x2171)
+(or (not x2179) x2012)
+(or (not x2179) x2135)
+(or (not x2179) x2012)
+(or (not x2179) x2164)
+(or (not x2179) x2012)
+(or x2180 (not x2179))
+(or x2180 (not x2178))
+(or x2180 (not x2177))
+(or x2179 x2178 x2177 (not x2180))
+(or x2181 x2178 x2180)
+(or x2181 (not x2178) (not x2180))
+(or (not x2181) x2178 (not x2180))
+(or (not x2181) (not x2178) x2180)
+(or x2182 x2181 x2174)
+(or x2182 (not x2181) (not x2174))
+(or (not x2182) x2181 (not x2174))
+(or (not x2182) (not x2181) x2174)
+(or (not x2147) (not x2183) (not x2012) x2184 (not x2012) (not x2150) (not x2185) (not x2149) (not x2150) (not x2182) x2186)
+(or (not x2186) x2147)
+(or (not x2186) x2183)
+(or (not x2186) x2012)
+(or (not x2186) (not x2184))
+(or (not x2186) x2012)
+(or (not x2186) x2150)
+(or (not x2186) x2185)
+(or (not x2186) x2149)
+(or (not x2186) x2150)
+(or (not x2186) x2182)
+(or (not x2187) (not x2171) (not x2012) x2188)
+(or (not x2188) x2187)
+(or (not x2188) x2171)
+(or (not x2188) x2012)
+(or x2189 (not x2188))
+(or x2189 (not x2186))
+(or x2188 x2186 (not x2189))
+(or (not x2189) (not x2012) x2190)
+(or (not x2190) x2189)
+(or (not x2190) x2012)
+(or x2036 (not x2191))
+(or x2036 x112)
+(or x2191 (not x112) (not x2036))
+(or (not x2036) (not x2192) (not x2012) (not x2193) (not x2012) x2194)
+(or (not x2194) x2036)
+(or (not x2194) x2192)
+(or (not x2194) x2012)
+(or (not x2194) x2193)
+(or (not x2194) x2012)
+(or (not x2039) (not x112) x2195)
+(or (not x2195) x2039)
+(or (not x2195) x112)
+(or x2196 (not x2195))
+(or x2196 (not x2194))
+(or x2195 x2194 (not x2196))
+(or (not x2196) (not x2012) x2197)
+(or (not x2197) x2196)
+(or (not x2197) x2012)
+(or x2140 (not x2198))
+(or x2140 x2127)
+(or x2140 x2012)
+(or x2198 (not x2127) (not x2012) (not x2140))
+(or x2199 x2200)
+(or x2199 x2012)
+(or x2199 (not x2198))
+(or x2199 x2127)
+(or x2199 x2012)
+(or (not x2200) (not x2012) x2198 (not x2127) (not x2012) (not x2199))
+(or x2201 (not x2202))
+(or x2201 x2157)
+(or x2201 x2012)
+(or x2202 (not x2157) (not x2012) (not x2201))
+(or (not x2201) (not x2199) x2203)
+(or (not x2203) x2201)
+(or (not x2203) x2199)
+(or x2204 x2202 x2203)
+(or x2204 (not x2202) (not x2203))
+(or (not x2204) x2202 (not x2203))
+(or (not x2204) (not x2202) x2203)
+(or (not x2205) (not x2204) x2206)
+(or (not x2206) x2205)
+(or (not x2206) x2204)
+(or (not x2207) (not x2208) (not x2200) (not x2012) x2209)
+(or (not x2209) x2207)
+(or (not x2209) x2208)
+(or (not x2209) x2200)
+(or (not x2209) x2012)
+(or x2210 (not x2209))
+(or x2210 (not x2206))
+(or x2209 x2206 (not x2210))
+(or (not x2210) (not x2012) x2211)
+(or (not x2211) x2210)
+(or (not x2211) x2012)
+(or (not x2018) (not x2012) x2212)
+(or (not x2212) x2018)
+(or (not x2212) x2012)
+(or (not x2024) (not x2012) x2213)
+(or (not x2213) x2024)
+(or (not x2213) x2012)
+(or (not x2030) (not x2012) x2214)
+(or (not x2214) x2030)
+(or (not x2214) x2012)
+(or x2215 (not x2216))
+(or x2215 x2012)
+(or x2215 (not x2217))
+(or x2215 x2218)
+(or x2215 x2219)
+(or x2215 x2220)
+(or x2215 (not x2221))
+(or x2215 x2222)
+(or x2215 (not x2223))
+(or x2215 x2224)
+(or x2215 x2225)
+(or x2215 x2226)
+(or x2215 (not x2227))
+(or x2215 x2228)
+(or x2215 x2229)
+(or x2215 x2230)
+(or x2215 (not x2214))
+(or x2215 (not x2213))
+(or x2215 (not x2212))
+(or x2216 (not x2012) x2217 (not x2218) (not x2219) (not x2220) x2221 (not x2222) x2223 (not x2224) (not x2225) (not x2226) x2227 (not x2228) (not x2229) (not x2230) x2214 x2213 x2212 (not x2215))
+(or (not x2215) (not x2135) (not x2012) x2231)
+(or (not x2231) x2215)
+(or (not x2231) x2135)
+(or (not x2231) x2012)
+(or x2232 x2018)
+(or x2232 x2012)
+(or (not x2018) (not x2012) (not x2232))
+(or x2233 x2024)
+(or x2233 x2012)
+(or (not x2024) (not x2012) (not x2233))
+(or x2234 x2030)
+(or x2234 x2012)
+(or (not x2030) (not x2012) (not x2234))
+(or x2216 (not x2012) (not x2235) (not x2218) (not x2219) (not x2220) x2221 (not x2222) x2223 (not x2224) (not x2225) (not x2226) x2227 (not x2228) (not x2229) (not x2230) (not x2234) (not x2233) (not x2232) x2236 x2237)
+(or (not x2237) (not x2216))
+(or (not x2237) x2012)
+(or (not x2237) x2235)
+(or (not x2237) x2218)
+(or (not x2237) x2219)
+(or (not x2237) x2220)
+(or (not x2237) (not x2221))
+(or (not x2237) x2222)
+(or (not x2237) (not x2223))
+(or (not x2237) x2224)
+(or (not x2237) x2225)
+(or (not x2237) x2226)
+(or (not x2237) (not x2227))
+(or (not x2237) x2228)
+(or (not x2237) x2229)
+(or (not x2237) x2230)
+(or (not x2237) x2234)
+(or (not x2237) x2233)
+(or (not x2237) x2232)
+(or (not x2237) (not x2236))
+(or x2238 (not x2237))
+(or x2238 (not x2231))
+(or x2237 x2231 (not x2238))
+(or (not x2238) (not x2012) x2239)
+(or (not x2239) x2238)
+(or (not x2239) x2012)
+(or x2176 (not x2198))
+(or x2176 x2164)
+(or x2176 x2012)
+(or x2198 (not x2164) (not x2012) (not x2176))
+(or x2240 x2241)
+(or x2240 x2012)
+(or x2240 (not x2198))
+(or x2240 x2164)
+(or x2240 x2012)
+(or (not x2241) (not x2012) x2198 (not x2164) (not x2012) (not x2240))
+(or x2242 (not x2243))
+(or x2242 x2192)
+(or x2242 x2012)
+(or x2243 (not x2192) (not x2012) (not x2242))
+(or (not x2242) (not x2240) x2244)
+(or (not x2244) x2242)
+(or (not x2244) x2240)
+(or x2245 x2243 x2244)
+(or x2245 (not x2243) (not x2244))
+(or (not x2245) x2243 (not x2244))
+(or (not x2245) (not x2243) x2244)
+(or (not x2246) (not x2245) x2247)
+(or (not x2247) x2246)
+(or (not x2247) x2245)
+(or (not x2248) (not x2249) (not x2241) (not x2012) x2250)
+(or (not x2250) x2248)
+(or (not x2250) x2249)
+(or (not x2250) x2241)
+(or (not x2250) x2012)
+(or x2251 (not x2250))
+(or x2251 (not x2247))
+(or x2250 x2247 (not x2251))
+(or (not x2251) (not x2012) x2252)
+(or (not x2252) x2251)
+(or (not x2252) x2012)
+(or (not x2253) (not x2254) (not x2012) x2255)
+(or (not x2255) x2253)
+(or (not x2255) x2254)
+(or (not x2255) x2012)
+(or (not x2175) (not x2193) (not x2012) (not x2037) (not x2012) x2256)
+(or (not x2256) x2175)
+(or (not x2256) x2193)
+(or (not x2256) x2012)
+(or (not x2256) x2037)
+(or (not x2256) x2012)
+(or x2257 (not x2256))
+(or x2257 (not x2255))
+(or x2256 x2255 (not x2257))
+(or (not x2257) (not x2012) x2258)
+(or (not x2258) x2257)
+(or (not x2258) x2012)
+(or (not x2259) (not x2260) (not x2012) x2261)
+(or (not x2261) x2259)
+(or (not x2261) x2260)
+(or (not x2261) x2012)
+(or (not x2262) (not x2165) (not x2012) (not x2045) (not x2012) x2263)
+(or (not x2263) x2262)
+(or (not x2263) x2165)
+(or (not x2263) x2012)
+(or (not x2263) x2045)
+(or (not x2263) x2012)
+(or x2264 (not x2263))
+(or x2264 (not x2261))
+(or x2263 x2261 (not x2264))
+(or (not x2264) (not x2012) x2265)
+(or (not x2265) x2264)
+(or (not x2265) x2012)
+(or (not x2253) (not x2266) (not x2012) x2267)
+(or (not x2267) x2253)
+(or (not x2267) x2266)
+(or (not x2267) x2012)
+(or (not x2175) (not x2193) (not x2012) (not x2052) (not x2012) x2268)
+(or (not x2268) x2175)
+(or (not x2268) x2193)
+(or (not x2268) x2012)
+(or (not x2268) x2052)
+(or (not x2268) x2012)
+(or x2269 (not x2268))
+(or x2269 (not x2267))
+(or x2268 x2267 (not x2269))
+(or (not x2269) (not x2012) x2270)
+(or (not x2270) x2269)
+(or (not x2270) x2012)
+(or (not x2259) (not x2271) (not x2012) x2272)
+(or (not x2272) x2259)
+(or (not x2272) x2271)
+(or (not x2272) x2012)
+(or (not x2262) (not x2165) (not x2012) (not x2058) (not x2012) x2273)
+(or (not x2273) x2262)
+(or (not x2273) x2165)
+(or (not x2273) x2012)
+(or (not x2273) x2058)
+(or (not x2273) x2012)
+(or x2274 (not x2273))
+(or x2274 (not x2272))
+(or x2273 x2272 (not x2274))
+(or (not x2274) (not x2012) x2275)
+(or (not x2275) x2274)
+(or (not x2275) x2012)
+(or (not x2253) (not x2276) (not x2012) x2277)
+(or (not x2277) x2253)
+(or (not x2277) x2276)
+(or (not x2277) x2012)
+(or (not x2175) (not x2193) (not x2012) (not x2064) (not x2012) x2278)
+(or (not x2278) x2175)
+(or (not x2278) x2193)
+(or (not x2278) x2012)
+(or (not x2278) x2064)
+(or (not x2278) x2012)
+(or x2279 (not x2278))
+(or x2279 (not x2277))
+(or x2278 x2277 (not x2279))
+(or (not x2279) (not x2012) x2280)
+(or (not x2280) x2279)
+(or (not x2280) x2012)
+(or (not x2259) (not x2281) (not x2012) x2282)
+(or (not x2282) x2259)
+(or (not x2282) x2281)
+(or (not x2282) x2012)
+(or (not x2262) (not x2165) (not x2012) (not x2070) (not x2012) x2283)
+(or (not x2283) x2262)
+(or (not x2283) x2165)
+(or (not x2283) x2012)
+(or (not x2283) x2070)
+(or (not x2283) x2012)
+(or x2284 (not x2283))
+(or x2284 (not x2282))
+(or x2283 x2282 (not x2284))
+(or (not x2284) (not x2012) x2285)
+(or (not x2285) x2284)
+(or (not x2285) x2012)
+(or (not x2253) (not x2286) (not x2012) x2287)
+(or (not x2287) x2253)
+(or (not x2287) x2286)
+(or (not x2287) x2012)
+(or (not x2175) (not x2193) (not x2012) (not x2076) (not x2012) x2288)
+(or (not x2288) x2175)
+(or (not x2288) x2193)
+(or (not x2288) x2012)
+(or (not x2288) x2076)
+(or (not x2288) x2012)
+(or x2289 (not x2288))
+(or x2289 (not x2287))
+(or x2288 x2287 (not x2289))
+(or (not x2289) (not x2012) x2290)
+(or (not x2290) x2289)
+(or (not x2290) x2012)
+(or (not x2259) (not x2291) (not x2012) x2292)
+(or (not x2292) x2259)
+(or (not x2292) x2291)
+(or (not x2292) x2012)
+(or (not x2262) (not x2165) (not x2012) (not x2082) (not x2012) x2293)
+(or (not x2293) x2262)
+(or (not x2293) x2165)
+(or (not x2293) x2012)
+(or (not x2293) x2082)
+(or (not x2293) x2012)
+(or x2294 (not x2293))
+(or x2294 (not x2292))
+(or x2293 x2292 (not x2294))
+(or (not x2294) (not x2012) x2295)
+(or (not x2295) x2294)
+(or (not x2295) x2012)
+(or (not x2253) (not x2296) (not x2012) x2297)
+(or (not x2297) x2253)
+(or (not x2297) x2296)
+(or (not x2297) x2012)
+(or (not x2175) (not x2193) (not x2012) (not x2088) (not x2012) x2298)
+(or (not x2298) x2175)
+(or (not x2298) x2193)
+(or (not x2298) x2012)
+(or (not x2298) x2088)
+(or (not x2298) x2012)
+(or x2299 (not x2298))
+(or x2299 (not x2297))
+(or x2298 x2297 (not x2299))
+(or (not x2299) (not x2012) x2300)
+(or (not x2300) x2299)
+(or (not x2300) x2012)
+(or (not x2259) (not x2301) (not x2012) x2302)
+(or (not x2302) x2259)
+(or (not x2302) x2301)
+(or (not x2302) x2012)
+(or (not x2262) (not x2165) (not x2012) (not x2094) (not x2012) x2303)
+(or (not x2303) x2262)
+(or (not x2303) x2165)
+(or (not x2303) x2012)
+(or (not x2303) x2094)
+(or (not x2303) x2012)
+(or x2304 (not x2303))
+(or x2304 (not x2302))
+(or x2303 x2302 (not x2304))
+(or (not x2304) (not x2012) x2305)
+(or (not x2305) x2304)
+(or (not x2305) x2012)
+(or (not x2253) (not x2306) (not x2012) x2307)
+(or (not x2307) x2253)
+(or (not x2307) x2306)
+(or (not x2307) x2012)
+(or (not x2175) (not x2193) (not x2012) (not x2100) (not x2012) x2308)
+(or (not x2308) x2175)
+(or (not x2308) x2193)
+(or (not x2308) x2012)
+(or (not x2308) x2100)
+(or (not x2308) x2012)
+(or x2309 (not x2308))
+(or x2309 (not x2307))
+(or x2308 x2307 (not x2309))
+(or (not x2309) (not x2012) x2310)
+(or (not x2310) x2309)
+(or (not x2310) x2012)
+(or (not x2259) (not x2311) (not x2012) x2312)
+(or (not x2312) x2259)
+(or (not x2312) x2311)
+(or (not x2312) x2012)
+(or (not x2262) (not x2165) (not x2012) (not x2106) (not x2012) x2313)
+(or (not x2313) x2262)
+(or (not x2313) x2165)
+(or (not x2313) x2012)
+(or (not x2313) x2106)
+(or (not x2313) x2012)
+(or x2314 (not x2313))
+(or x2314 (not x2312))
+(or x2313 x2312 (not x2314))
+(or (not x2314) (not x2012) x2315)
+(or (not x2315) x2314)
+(or (not x2315) x2012)
+(or (not x2316) (not x2317) (not x2012) x2318)
+(or (not x2318) x2316)
+(or (not x2318) x2317)
+(or (not x2318) x2012)
+(or (not x2139) (not x2158) (not x2012) (not x2113) (not x2012) x2319)
+(or (not x2319) x2139)
+(or (not x2319) x2158)
+(or (not x2319) x2012)
+(or (not x2319) x2113)
+(or (not x2319) x2012)
+(or x2320 (not x2319))
+(or x2320 (not x2318))
+(or x2319 x2318 (not x2320))
+(or (not x2320) (not x2012) x2321)
+(or (not x2321) x2320)
+(or (not x2321) x2012)
+(or (not x2322) (not x2323) (not x2012) x2324)
+(or (not x2324) x2322)
+(or (not x2324) x2323)
+(or (not x2324) x2012)
+(or (not x2325) (not x2128) (not x2012) (not x2120) (not x2012) x2326)
+(or (not x2326) x2325)
+(or (not x2326) x2128)
+(or (not x2326) x2012)
+(or (not x2326) x2120)
+(or (not x2326) x2012)
+(or x2327 (not x2326))
+(or x2327 (not x2324))
+(or x2326 x2324 (not x2327))
+(or (not x2327) (not x2012) x2328)
+(or (not x2328) x2327)
+(or (not x2328) x2012)
+(or x2329 (not x2330))
+(or x2329 x2012)
+(or x2330 (not x2012) (not x2329))
+(or x2331 (not x2017))
+(or x2331 (not x2332))
+(or x2017 x2332 (not x2331))
+(or (not x2331) (not x2333) x2334)
+(or (not x2334) x2331)
+(or (not x2334) x2333)
+(or x2017 (not x2335) x2336 x2337)
+(or (not x2337) (not x2017))
+(or (not x2337) x2335)
+(or (not x2337) (not x2336))
+(or x2338 (not x2337))
+(or x2338 (not x2334))
+(or x2338 x2012)
+(or x2337 x2334 (not x2012) (not x2338))
+(or (not x2339) (not x2012) (not x2340) (not x2341) (not x2342) (not x2343) (not x2235) (not x2344) (not x2345) (not x2012) x2346)
+(or (not x2346) x2339)
+(or (not x2346) x2012)
+(or (not x2346) x2340)
+(or (not x2346) x2341)
+(or (not x2346) x2342)
+(or (not x2346) x2343)
+(or (not x2346) x2235)
+(or (not x2346) x2344)
+(or (not x2346) x2345)
+(or (not x2346) x2012)
+(or (not x2347) (not x2345) (not x2012) (not x2341) (not x2348) x2216 (not x2012) (not x2345) (not x2012) x2349)
+(or (not x2349) x2347)
+(or (not x2349) x2345)
+(or (not x2349) x2012)
+(or (not x2349) x2341)
+(or (not x2349) x2348)
+(or (not x2349) (not x2216))
+(or (not x2349) x2012)
+(or (not x2349) x2345)
+(or (not x2349) x2012)
+(or (not x2335) x2017 x2350)
+(or (not x2350) x2335)
+(or (not x2350) (not x2017))
+(or x2351 (not x2350))
+(or x2351 (not x2352))
+(or x2350 x2352 (not x2351))
+(or (not x2347) (not x2340) (not x2351) x2353)
+(or (not x2353) x2347)
+(or (not x2353) x2340)
+(or (not x2353) x2351)
+(or (not x2341) (not x2342) (not x2354) (not x2345) (not x2012) x2355)
+(or (not x2355) x2341)
+(or (not x2355) x2342)
+(or (not x2355) x2354)
+(or (not x2355) x2345)
+(or (not x2355) x2012)
+(or x2356 (not x2355))
+(or x2356 (not x2353))
+(or x2356 (not x2349))
+(or x2356 (not x2346))
+(or x2355 x2353 x2349 x2346 (not x2356))
+(or (not x2356) (not x2012) x2357)
+(or (not x2357) x2356)
+(or (not x2357) x2012)
+(or x2358 (not x2359))
+(or x2358 (not x2360))
+(or x2359 x2360 (not x2358))
+(or x2361 (not x2227))
+(or x2361 x2362)
+(or x2227 (not x2362) (not x2361))
+(or x2363 x2227)
+(or x2363 x2364)
+(or (not x2227) (not x2364) (not x2363))
+(or (not x2363) (not x2361) x2365)
+(or (not x2365) x2363)
+(or (not x2365) x2361)
+(or x2366 x2367)
+(or x2366 (not x2368))
+(or x2366 (not x2229))
+(or x2366 x2228)
+(or x2366 (not x2359))
+(or x2366 (not x2365))
+(or (not x2367) x2368 x2229 (not x2228) x2359 x2365 (not x2366))
+(or x2369 x2367)
+(or x2369 (not x2368))
+(or x2369 (not x2229))
+(or x2369 (not x2228))
+(or x2369 x2370)
+(or (not x2367) x2368 x2229 x2228 (not x2370) (not x2369))
+(or (not x2369) (not x2366) (not x2358) x2371)
+(or (not x2371) x2369)
+(or (not x2371) x2366)
+(or (not x2371) x2358)
+(or x2343 (not x2217))
+(or x2343 (not x2372))
+(or x2343 (not x2371))
+(or x2217 x2372 x2371 (not x2343))
+(or (not x2339) (not x2012) (not x2340) (not x2341) (not x2342) (not x2343) (not x2235) (not x2344) (not x2339) (not x2012) x2373)
+(or (not x2373) x2339)
+(or (not x2373) x2012)
+(or (not x2373) x2340)
+(or (not x2373) x2341)
+(or (not x2373) x2342)
+(or (not x2373) x2343)
+(or (not x2373) x2235)
+(or (not x2373) x2344)
+(or (not x2373) x2339)
+(or (not x2373) x2012)
+(or (not x2348) x2216 (not x2012) (not x2339) (not x2012) x2374)
+(or (not x2374) x2348)
+(or (not x2374) (not x2216))
+(or (not x2374) x2012)
+(or (not x2374) x2339)
+(or (not x2374) x2012)
+(or (not x2375) (not x2333) x2376)
+(or (not x2376) x2375)
+(or (not x2376) x2333)
+(or x2377 (not x2376))
+(or x2377 (not x2374))
+(or x2376 x2374 (not x2377))
+(or (not x2347) (not x2345) (not x2012) (not x2341) (not x2377) x2378)
+(or (not x2378) x2347)
+(or (not x2378) x2345)
+(or (not x2378) x2012)
+(or (not x2378) x2341)
+(or (not x2378) x2377)
+(or (not x2347) (not x2340) (not x2379) (not x2339) (not x2012) x2380)
+(or (not x2380) x2347)
+(or (not x2380) x2340)
+(or (not x2380) x2379)
+(or (not x2380) x2339)
+(or (not x2380) x2012)
+(or (not x2341) (not x2342) (not x2354) (not x2339) (not x2012) x2381)
+(or (not x2381) x2341)
+(or (not x2381) x2342)
+(or (not x2381) x2354)
+(or (not x2381) x2339)
+(or (not x2381) x2012)
+(or x2382 (not x2381))
+(or x2382 (not x2380))
+(or x2382 (not x2378))
+(or x2382 (not x2373))
+(or x2381 x2380 x2378 x2373 (not x2382))
+(or (not x2382) (not x2012) x2383)
+(or (not x2383) x2382)
+(or (not x2383) x2012)
+(or x2122 x2128)
+(or x2122 x2012)
+(or (not x2128) (not x2012) (not x2122))
+(or x2322 (not x2384))
+(or x2322 x2128)
+(or x2322 x2012)
+(or x2384 (not x2128) (not x2012) (not x2322))
+(or (not x2322) (not x2385) (not x2386) (not x2127) (not x2012) x2387)
+(or (not x2387) x2322)
+(or (not x2387) x2385)
+(or (not x2387) x2386)
+(or (not x2387) x2127)
+(or (not x2387) x2012)
+(or (not x2128) (not x2012) x2126)
+(or (not x2126) x2128)
+(or (not x2126) x2012)
+(or (not x2325) (not x2128) (not x2012) (not x2128) (not x2012) x2388)
+(or (not x2388) x2325)
+(or (not x2388) x2128)
+(or (not x2388) x2012)
+(or (not x2388) x2128)
+(or (not x2388) x2012)
+(or x2389 (not x2388))
+(or x2389 (not x2387))
+(or x2388 x2387 (not x2389))
+(or (not x2389) (not x2012) x2390)
+(or (not x2390) x2389)
+(or (not x2390) x2012)
+(or x2115 x2158)
+(or x2115 x2012)
+(or (not x2158) (not x2012) (not x2115))
+(or x2316 (not x2391))
+(or x2316 x2158)
+(or x2316 x2012)
+(or x2391 (not x2158) (not x2012) (not x2316))
+(or (not x2316) (not x2392) (not x2157) (not x2012) x2393)
+(or (not x2393) x2316)
+(or (not x2393) x2392)
+(or (not x2393) x2157)
+(or (not x2393) x2012)
+(or (not x2158) (not x2012) x2156)
+(or (not x2156) x2158)
+(or (not x2156) x2012)
+(or (not x2139) (not x2158) (not x2012) (not x2158) (not x2012) x2394)
+(or (not x2394) x2139)
+(or (not x2394) x2158)
+(or (not x2394) x2012)
+(or (not x2394) x2158)
+(or (not x2394) x2012)
+(or x2395 (not x2394))
+(or x2395 (not x2393))
+(or x2394 x2393 (not x2395))
+(or (not x2395) (not x2012) x2396)
+(or (not x2396) x2395)
+(or (not x2396) x2012)
+(or x2047 x2165)
+(or x2047 x2012)
+(or (not x2165) (not x2012) (not x2047))
+(or x2259 (not x2397))
+(or x2259 x2165)
+(or x2259 x2012)
+(or x2397 (not x2165) (not x2012) (not x2259))
+(or (not x2259) (not x2398) (not x2399) (not x2164) (not x2012) x2400)
+(or (not x2400) x2259)
+(or (not x2400) x2398)
+(or (not x2400) x2399)
+(or (not x2400) x2164)
+(or (not x2400) x2012)
+(or (not x2165) (not x2012) x2163)
+(or (not x2163) x2165)
+(or (not x2163) x2012)
+(or (not x2262) (not x2165) (not x2012) (not x2165) (not x2012) x2401)
+(or (not x2401) x2262)
+(or (not x2401) x2165)
+(or (not x2401) x2012)
+(or (not x2401) x2165)
+(or (not x2401) x2012)
+(or x2402 (not x2401))
+(or x2402 (not x2400))
+(or x2401 x2400 (not x2402))
+(or (not x2402) (not x2012) x2403)
+(or (not x2403) x2402)
+(or (not x2403) x2012)
+(or x2039 x2193)
+(or x2039 x2012)
+(or (not x2193) (not x2012) (not x2039))
+(or x2253 (not x2404))
+(or x2253 x2193)
+(or x2253 x2012)
+(or x2404 (not x2193) (not x2012) (not x2253))
+(or (not x2253) (not x2405) (not x2192) (not x2012) x2406)
+(or (not x2406) x2253)
+(or (not x2406) x2405)
+(or (not x2406) x2192)
+(or (not x2406) x2012)
+(or (not x2193) (not x2012) x2191)
+(or (not x2191) x2193)
+(or (not x2191) x2012)
+(or (not x2175) (not x2193) (not x2012) (not x2193) (not x2012) x2407)
+(or (not x2407) x2175)
+(or (not x2407) x2193)
+(or (not x2407) x2012)
+(or (not x2407) x2193)
+(or (not x2407) x2012)
+(or x2408 (not x2407))
+(or x2408 (not x2406))
+(or x2407 x2406 (not x2408))
+(or (not x2408) (not x2012) x2409)
+(or (not x2409) x2408)
+(or (not x2409) x2012)
+(or x116 (not x2410) (not x2012) (not x2411) (not x2012) x2412)
+(or (not x2412) (not x116))
+(or (not x2412) x2410)
+(or (not x2412) x2012)
+(or (not x2412) x2411)
+(or (not x2412) x2012)
+(or x2413 (not x2414))
+(or x2413 (not x2415))
+(or x2413 (not x2416))
+(or x2414 x2415 x2416 (not x2413))
+(or (not x116) (not x2413) x2417)
+(or (not x2417) x116)
+(or (not x2417) x2413)
+(or x2418 (not x2417))
+(or x2418 (not x2412))
+(or x2417 x2412 (not x2418))
+(or (not x2418) (not x2012) x2419)
+(or (not x2419) x2418)
+(or (not x2419) x2012)
+(or x115 (not x2420) (not x2012) (not x2421) (not x2012) x2422)
+(or (not x2422) (not x115))
+(or (not x2422) x2420)
+(or (not x2422) x2012)
+(or (not x2422) x2421)
+(or (not x2422) x2012)
+(or x2423 (not x2424))
+(or x2423 (not x2425))
+(or x2423 (not x2426))
+(or x2424 x2425 x2426 (not x2423))
+(or (not x115) (not x2423) x2427)
+(or (not x2427) x115)
+(or (not x2427) x2423)
+(or x2428 (not x2427))
+(or x2428 (not x2422))
+(or x2427 x2422 (not x2428))
+(or (not x2428) (not x2012) x2429)
+(or (not x2429) x2428)
+(or (not x2429) x2012)
+(or (not x2430) (not x2431) (not x2432) x2433)
+(or (not x2433) x2430)
+(or (not x2433) x2431)
+(or (not x2433) x2432)
+(or (not x2434) (not x2430) (not x2435) (not x2436) (not x2410) (not x2012) x2437)
+(or (not x2437) x2434)
+(or (not x2437) x2430)
+(or (not x2437) x2435)
+(or (not x2437) x2436)
+(or (not x2437) x2410)
+(or (not x2437) x2012)
+(or x2438 (not x2437))
+(or x2438 (not x2433))
+(or x2437 x2433 (not x2438))
+(or (not x2183) (not x2012) (not x2432) (not x2150) (not x2185) (not x2439) (not x2438) x2440)
+(or (not x2440) x2183)
+(or (not x2440) x2012)
+(or (not x2440) x2432)
+(or (not x2440) x2150)
+(or (not x2440) x2185)
+(or (not x2440) x2439)
+(or (not x2440) x2438)
+(or (not x2441) (not x2442) (not x2432) x2443)
+(or (not x2443) x2441)
+(or (not x2443) x2442)
+(or (not x2443) x2432)
+(or (not x2441) (not x2444) (not x2445) (not x2446) (not x2410) (not x2012) x2447)
+(or (not x2447) x2441)
+(or (not x2447) x2444)
+(or (not x2447) x2445)
+(or (not x2447) x2446)
+(or (not x2447) x2410)
+(or (not x2447) x2012)
+(or x2448 (not x2449))
+(or x2448 (not x2447))
+(or x2449 x2447 (not x2448))
+(or (not x2450) (not x2448) x2451)
+(or (not x2451) x2450)
+(or (not x2451) x2448)
+(or x2452 (not x2451))
+(or x2452 (not x2443))
+(or x2451 x2443 (not x2452))
+(or (not x2183) (not x2012) x2184 (not x2012) (not x2150) (not x2185) (not x2452) x2453)
+(or (not x2453) x2183)
+(or (not x2453) x2012)
+(or (not x2453) (not x2184))
+(or (not x2453) x2012)
+(or (not x2453) x2150)
+(or (not x2453) x2185)
+(or (not x2453) x2452)
+(or (not x2175) (not x2262) (not x2454) (not x2432) x2455)
+(or (not x2455) x2175)
+(or (not x2455) x2262)
+(or (not x2455) x2454)
+(or (not x2455) x2432)
+(or (not x2456) (not x2175) (not x2262) (not x2457) (not x2458) x2459)
+(or (not x2459) x2456)
+(or (not x2459) x2175)
+(or (not x2459) x2262)
+(or (not x2459) x2457)
+(or (not x2459) x2458)
+(or x2460 (not x2459))
+(or x2460 (not x2455))
+(or x2459 x2455 (not x2460))
+(or (not x2461) (not x2432) (not x2150) (not x2460) x2462)
+(or (not x2462) x2461)
+(or (not x2462) x2432)
+(or (not x2462) x2150)
+(or (not x2462) x2460)
+(or (not x2463) (not x2464) (not x2432) x2465)
+(or (not x2465) x2463)
+(or (not x2465) x2464)
+(or (not x2465) x2432)
+(or (not x2463) (not x2466) (not x2175) (not x2262) (not x2458) x2467)
+(or (not x2467) x2463)
+(or (not x2467) x2466)
+(or (not x2467) x2175)
+(or (not x2467) x2262)
+(or (not x2467) x2458)
+(or x2468 (not x2469))
+(or x2468 (not x2467))
+(or x2469 x2467 (not x2468))
+(or (not x2470) (not x2468) x2471)
+(or (not x2471) x2470)
+(or (not x2471) x2468)
+(or x2472 (not x2471))
+(or x2472 (not x2465))
+(or x2471 x2465 (not x2472))
+(or (not x2461) x2184 (not x2012) (not x2472) x2473)
+(or (not x2473) x2461)
+(or (not x2473) (not x2184))
+(or (not x2473) x2012)
+(or (not x2473) x2472)
+(or x2474 (not x2473))
+(or x2474 (not x2462))
+(or x2474 (not x2453))
+(or x2474 (not x2440))
+(or x2474 x2012)
+(or x2473 x2462 x2453 x2440 (not x2012) (not x2474))
+(or x2475 (not x2476))
+(or x2475 (not x2477))
+(or x2475 (not x2478))
+(or x2476 x2477 x2478 (not x2475))
+(or (not x2479) (not x2475) x2480)
+(or (not x2480) x2479)
+(or (not x2480) x2475)
+(or x2431 (not x2481))
+(or x2431 (not x2480))
+(or x2481 x2480 (not x2431))
+(or (not x2430) (not x2431) (not x2183) (not x2012) x2482)
+(or (not x2482) x2430)
+(or (not x2482) x2431)
+(or (not x2482) x2183)
+(or (not x2482) x2012)
+(or x2479 (not x2477))
+(or x2479 x2410)
+(or x2479 x2012)
+(or x2477 (not x2410) (not x2012) (not x2479))
+(or (not x2479) (not x2436) (not x2483) x2484)
+(or (not x2484) x2479)
+(or (not x2484) x2436)
+(or (not x2484) x2483)
+(or (not x2436) (not x2410) (not x2012) x2476)
+(or (not x2476) x2436)
+(or (not x2476) x2410)
+(or (not x2476) x2012)
+(or x2435 (not x2476))
+(or x2435 (not x2484))
+(or x2476 x2484 (not x2435))
+(or x2386 (not x2198))
+(or x2386 (not x2485))
+(or x2386 (not x2202))
+(or x2198 x2485 x2202 (not x2386))
+(or x2385 x2135)
+(or x2385 x2012)
+(or x2385 (not x2486))
+(or x2385 (not x2487))
+(or x2385 (not x2488))
+(or x2385 (not x2489))
+(or x2385 (not x2142))
+(or (not x2135) (not x2012) x2486 x2487 x2488 x2489 x2142 (not x2385))
+(or (not x2385) (not x2386) x2490)
+(or (not x2490) x2385)
+(or (not x2490) x2386)
+(or x2491 (not x2490))
+(or x2491 x2127)
+(or x2491 x2012)
+(or x2490 (not x2127) (not x2012) (not x2491))
+(or x2208 (not x2198))
+(or x2208 (not x2486))
+(or x2208 (not x2487))
+(or x2208 (not x2488))
+(or x2208 (not x2489))
+(or x2198 x2486 x2487 x2488 x2489 (not x2208))
+(or x2207 x2135)
+(or x2207 x2012)
+(or x2207 (not x2486))
+(or x2207 (not x2487))
+(or x2207 (not x2488))
+(or x2207 (not x2489))
+(or x2207 x2134)
+(or x2207 x2012)
+(or (not x2135) (not x2012) x2486 x2487 x2488 x2489 (not x2134) (not x2012) (not x2207))
+(or (not x2207) (not x2208) x2485)
+(or (not x2485) x2207)
+(or (not x2485) x2208)
+(or x2392 (not x2485))
+(or x2392 x2200)
+(or x2392 x2012)
+(or x2485 (not x2200) (not x2012) (not x2392))
+(or x2492 (not x2485))
+(or x2492 x2200)
+(or x2492 x2012)
+(or x2492 x2157)
+(or x2492 x2012)
+(or x2485 (not x2200) (not x2012) (not x2157) (not x2012) (not x2492))
+(or (not x2458) (not x2492) (not x2491) x2477)
+(or (not x2477) x2458)
+(or (not x2477) x2492)
+(or (not x2477) x2491)
+(or x2430 (not x2477))
+(or x2430 x2420)
+(or x2430 x2012)
+(or x2477 (not x2420) (not x2012) (not x2430))
+(or (not x2430) (not x2435) x2493)
+(or (not x2493) x2430)
+(or (not x2493) x2435)
+(or x2436 (not x2494))
+(or x2436 (not x2495))
+(or x2436 (not x2496))
+(or x2494 x2495 x2496 (not x2436))
+(or (not x2436) (not x2420) (not x2012) x2481)
+(or (not x2481) x2436)
+(or (not x2481) x2420)
+(or (not x2481) x2012)
+(or x2434 (not x2481))
+(or x2434 (not x2493))
+(or x2481 x2493 (not x2434))
+(or (not x2434) (not x2430) (not x2435) (not x2479) (not x2436) (not x2483) x2497)
+(or (not x2497) x2434)
+(or (not x2497) x2430)
+(or (not x2497) x2435)
+(or (not x2497) x2479)
+(or (not x2497) x2436)
+(or (not x2497) x2483)
+(or x2498 (not x2497))
+(or x2498 (not x2482))
+(or x2497 x2482 (not x2498))
+(or (not x2183) (not x2012) (not x2432) (not x2150) (not x2185) (not x2439) (not x2498) x2499)
+(or (not x2499) x2183)
+(or (not x2499) x2012)
+(or (not x2499) x2432)
+(or (not x2499) x2150)
+(or (not x2499) x2185)
+(or (not x2499) x2439)
+(or (not x2499) x2498)
+(or x2500 (not x2501))
+(or x2500 (not x2502))
+(or x2500 x2410)
+(or x2500 x2012)
+(or x2501 x2502 (not x2410) (not x2012) (not x2500))
+(or (not x2445) (not x2500) x2503)
+(or (not x2503) x2445)
+(or (not x2503) x2500)
+(or x2442 (not x2449))
+(or x2442 (not x2503))
+(or x2449 x2503 (not x2442))
+(or (not x2441) (not x2442) (not x2183) (not x2012) x2504)
+(or (not x2504) x2441)
+(or (not x2504) x2442)
+(or (not x2504) x2183)
+(or (not x2504) x2012)
+(or x2445 (not x2502))
+(or x2445 x2420)
+(or x2445 x2012)
+(or x2502 (not x2420) (not x2012) (not x2445))
+(or (not x2445) (not x2446) (not x2410) (not x2012) x2505)
+(or (not x2505) x2445)
+(or (not x2505) x2446)
+(or (not x2505) x2410)
+(or (not x2505) x2012)
+(or (not x2446) (not x2420) (not x2012) x2501)
+(or (not x2501) x2446)
+(or (not x2501) x2420)
+(or (not x2501) x2012)
+(or x2444 (not x2501))
+(or x2444 (not x2505))
+(or x2501 x2505 (not x2444))
+(or x2399 (not x2198))
+(or x2399 (not x2506))
+(or x2399 (not x2243))
+(or x2198 x2506 x2243 (not x2399))
+(or x2398 x2135)
+(or x2398 x2012)
+(or x2398 (not x2486))
+(or x2398 x2183)
+(or x2398 x2012)
+(or x2398 (not x2184))
+(or x2398 x2012)
+(or x2398 (not x2489))
+(or x2398 (not x2507))
+(or x2398 (not x2488))
+(or x2398 (not x2489))
+(or x2398 (not x2178))
+(or (not x2135) (not x2012) x2486 (not x2183) (not x2012) x2184 (not x2012) x2489 x2507 x2488 x2489 x2178 (not x2398))
+(or (not x2398) (not x2399) x2508)
+(or (not x2508) x2398)
+(or (not x2508) x2399)
+(or x2509 (not x2508))
+(or x2509 x2164)
+(or x2509 x2012)
+(or x2508 (not x2164) (not x2012) (not x2509))
+(or x2249 (not x2198))
+(or x2249 (not x2486))
+(or x2249 x2183)
+(or x2249 x2012)
+(or x2249 (not x2184))
+(or x2249 x2012)
+(or x2249 (not x2489))
+(or x2249 (not x2507))
+(or x2249 (not x2488))
+(or x2249 (not x2489))
+(or x2198 x2486 (not x2183) (not x2012) x2184 (not x2012) x2489 x2507 x2488 x2489 (not x2249))
+(or x2248 x2135)
+(or x2248 x2012)
+(or x2248 (not x2486))
+(or x2248 x2183)
+(or x2248 x2012)
+(or x2248 (not x2184))
+(or x2248 x2012)
+(or x2248 (not x2489))
+(or x2248 (not x2507))
+(or x2248 (not x2488))
+(or x2248 (not x2489))
+(or x2248 x2171)
+(or x2248 x2012)
+(or (not x2135) (not x2012) x2486 (not x2183) (not x2012) x2184 (not x2012) x2489 x2507 x2488 x2489 (not x2171) (not x2012) (not x2248))
+(or (not x2248) (not x2249) x2506)
+(or (not x2506) x2248)
+(or (not x2506) x2249)
+(or x2405 (not x2506))
+(or x2405 x2241)
+(or x2405 x2012)
+(or x2506 (not x2241) (not x2012) (not x2405))
+(or x2510 (not x2506))
+(or x2510 x2241)
+(or x2510 x2012)
+(or x2510 x2192)
+(or x2510 x2012)
+(or x2506 (not x2241) (not x2012) (not x2192) (not x2012) (not x2510))
+(or (not x2483) (not x2510) (not x2509) x2502)
+(or (not x2502) x2483)
+(or (not x2502) x2510)
+(or (not x2502) x2509)
+(or x2441 (not x2502))
+(or x2441 (not x2494))
+(or x2502 x2494 (not x2441))
+(or (not x2441) (not x2444) x2511)
+(or (not x2511) x2441)
+(or (not x2511) x2444)
+(or x2446 (not x2478))
+(or x2446 (not x2512))
+(or x2446 (not x2513))
+(or x2478 x2512 x2513 (not x2446))
+(or (not x2446) (not x2458) x2449)
+(or (not x2449) x2446)
+(or (not x2449) x2458)
+(or x2450 (not x2449))
+(or x2450 (not x2511))
+(or x2449 x2511 (not x2450))
+(or (not x2450) (not x2446) (not x2458) x2514)
+(or (not x2514) x2450)
+(or (not x2514) x2446)
+(or (not x2514) x2458)
+(or x2515 (not x2514))
+(or x2515 (not x2504))
+(or x2514 x2504 (not x2515))
+(or (not x2183) (not x2012) x2184 (not x2012) (not x2150) (not x2185) (not x2515) x2516)
+(or (not x2516) x2183)
+(or (not x2516) x2012)
+(or (not x2516) (not x2184))
+(or (not x2516) x2012)
+(or (not x2516) x2150)
+(or (not x2516) x2185)
+(or (not x2516) x2515)
+(or x2517 (not x2391))
+(or x2517 (not x2384))
+(or x2517 x2420)
+(or x2517 x2012)
+(or x2391 x2384 (not x2420) (not x2012) (not x2517))
+(or (not x2139) (not x2325) (not x2517) x2518)
+(or (not x2518) x2139)
+(or (not x2518) x2325)
+(or (not x2518) x2517)
+(or x2454 (not x2404))
+(or x2454 (not x2397))
+(or x2454 (not x2518))
+(or x2404 x2397 x2518 (not x2454))
+(or (not x2175) (not x2262) (not x2454) (not x2183) (not x2012) x2519)
+(or (not x2519) x2175)
+(or (not x2519) x2262)
+(or (not x2519) x2454)
+(or (not x2519) x2183)
+(or (not x2519) x2012)
+(or (not x2175) (not x2262) (not x2457) (not x2458) x2520)
+(or (not x2520) x2175)
+(or (not x2520) x2262)
+(or (not x2520) x2457)
+(or (not x2520) x2458)
+(or x2521 (not x2404))
+(or x2521 (not x2397))
+(or x2521 (not x2520))
+(or x2404 x2397 x2520 (not x2521))
+(or (not x2139) (not x2325) (not x2420) (not x2012) x2522)
+(or (not x2522) x2139)
+(or (not x2522) x2325)
+(or (not x2522) x2420)
+(or (not x2522) x2012)
+(or x2457 (not x2391))
+(or x2457 (not x2384))
+(or x2457 (not x2522))
+(or x2391 x2384 x2522 (not x2457))
+(or (not x2175) (not x2262) (not x2457) x2523)
+(or (not x2523) x2175)
+(or (not x2523) x2262)
+(or (not x2523) x2457)
+(or x2456 (not x2404))
+(or x2456 (not x2397))
+(or x2456 (not x2523))
+(or x2404 x2397 x2523 (not x2456))
+(or (not x2456) (not x2521) x2524)
+(or (not x2524) x2456)
+(or (not x2524) x2521)
+(or x2525 (not x2524))
+(or x2525 (not x2519))
+(or x2524 x2519 (not x2525))
+(or (not x2461) (not x2432) (not x2150) (not x2525) x2526)
+(or (not x2526) x2461)
+(or (not x2526) x2432)
+(or (not x2526) x2150)
+(or (not x2526) x2525)
+(or x2325 x2127)
+(or x2325 x2012)
+(or (not x2127) (not x2012) (not x2325))
+(or x2139 x2157)
+(or x2139 x2012)
+(or (not x2157) (not x2012) (not x2139))
+(or (not x2139) (not x2325) x2494)
+(or (not x2494) x2139)
+(or (not x2494) x2325)
+(or x2527 (not x2404))
+(or x2527 (not x2397))
+(or x2527 (not x2494))
+(or x2404 x2397 x2494 (not x2527))
+(or (not x2175) (not x2262) (not x2527) x2528)
+(or (not x2528) x2175)
+(or (not x2528) x2262)
+(or (not x2528) x2527)
+(or x2464 (not x2469))
+(or x2464 (not x2528))
+(or x2469 x2528 (not x2464))
+(or (not x2463) (not x2464) (not x2183) (not x2012) x2529)
+(or (not x2529) x2463)
+(or (not x2529) x2464)
+(or (not x2529) x2183)
+(or (not x2529) x2012)
+(or x2458 (not x2391))
+(or x2458 (not x2384))
+(or x2391 x2384 (not x2458))
+(or x2262 x2164)
+(or x2262 x2012)
+(or (not x2164) (not x2012) (not x2262))
+(or x2175 x2192)
+(or x2175 x2012)
+(or (not x2192) (not x2012) (not x2175))
+(or (not x2175) (not x2262) x2478)
+(or (not x2478) x2175)
+(or (not x2478) x2262)
+(or (not x2175) (not x2262) (not x2458) x2530)
+(or (not x2530) x2175)
+(or (not x2530) x2262)
+(or (not x2530) x2458)
+(or x2483 (not x2404))
+(or x2483 (not x2397))
+(or x2404 x2397 (not x2483))
+(or x2466 (not x2404))
+(or x2466 (not x2397))
+(or x2466 (not x2530))
+(or x2404 x2397 x2530 (not x2466))
+(or x2463 x2410)
+(or x2463 x2012)
+(or (not x2410) (not x2012) (not x2463))
+(or (not x2463) (not x2466) x2531)
+(or (not x2531) x2463)
+(or (not x2531) x2466)
+(or x2470 (not x2469))
+(or x2470 (not x2531))
+(or x2469 x2531 (not x2470))
+(or (not x2470) (not x2463) (not x2466) x2532)
+(or (not x2532) x2470)
+(or (not x2532) x2463)
+(or (not x2532) x2466)
+(or x2533 (not x2532))
+(or x2533 (not x2529))
+(or x2532 x2529 (not x2533))
+(or (not x2461) x2184 (not x2012) (not x2533) x2534)
+(or (not x2534) x2461)
+(or (not x2534) (not x2184))
+(or (not x2534) x2012)
+(or (not x2534) x2533)
+(or x2535 (not x2534))
+(or x2535 (not x2526))
+(or x2535 (not x2516))
+(or x2535 (not x2499))
+(or x2534 x2526 x2516 x2499 (not x2535))
+(or (not x2535) (not x2012) x2536)
+(or (not x2536) x2535)
+(or (not x2536) x2012)
+(or x2537 x2411)
+(or x2537 x2012)
+(or (not x2411) (not x2012) (not x2537))
+(or (not x2537) (not x2149) (not x2410) (not x2012) x2538)
+(or (not x2538) x2537)
+(or (not x2538) x2149)
+(or (not x2538) x2410)
+(or (not x2538) x2012)
+(or (not x2411) (not x2012) x2539)
+(or (not x2539) x2411)
+(or (not x2539) x2012)
+(or x2540 (not x2539))
+(or x2540 (not x2538))
+(or x2539 x2538 (not x2540))
+(or (not x2540) (not x2012) x2541)
+(or (not x2541) x2540)
+(or (not x2541) x2012)
+(or (not x2542) (not x2543) x2544)
+(or (not x2544) x2542)
+(or (not x2544) x2543)
+(or x2542 (not x2545) (not x2546) x2547)
+(or (not x2547) (not x2542))
+(or (not x2547) x2545)
+(or (not x2547) x2546)
+(or x2548 (not x2547))
+(or x2548 (not x2544))
+(or x2547 x2544 (not x2548))
+(or (not x2549) (not x2012) (not x2550) (not x2551) (not x2552) (not x2548) x2553)
+(or (not x2553) x2549)
+(or (not x2553) x2012)
+(or (not x2553) x2550)
+(or (not x2553) x2551)
+(or (not x2553) x2552)
+(or (not x2553) x2548)
+(or x2546 x2554)
+(or x2546 x2012)
+(or x2546 (not x1994))
+(or x2546 (not x1968))
+(or x2546 (not x2555))
+(or x2546 (not x2556))
+(or x2546 (not x2557))
+(or x2546 (not x2558))
+(or x2546 (not x2559))
+(or (not x2554) (not x2012) x1994 x1968 x2555 x2556 x2557 x2558 x2559 (not x2546))
+(or x2545 (not x1993))
+(or x2545 x2560)
+(or x2545 x2012)
+(or x2545 (not x1968))
+(or x2545 (not x2561))
+(or x2545 x2562)
+(or x2545 x2012)
+(or x2545 (not x2563))
+(or x2545 (not x2564))
+(or x2545 (not x2556))
+(or x2545 (not x2557))
+(or x2545 (not x2558))
+(or x1993 (not x2560) (not x2012) x1968 x2561 (not x2562) (not x2012) x2563 x2564 x2556 x2557 x2558 (not x2545))
+(or x2564 (not x2545) (not x2546) x2565)
+(or (not x2565) (not x2564))
+(or (not x2565) x2545)
+(or (not x2565) x2546)
+(or x2566 (not x2565))
+(or x2566 (not x2564))
+(or x2565 x2564 (not x2566))
+(or (not x2567) (not x2562) (not x2012) (not x2551) (not x2566) x2568)
+(or (not x2568) x2567)
+(or (not x2568) x2562)
+(or (not x2568) x2012)
+(or (not x2568) x2551)
+(or (not x2568) x2566)
+(or x2569 (not x2570))
+(or x2569 (not x2563))
+(or x2569 (not x2568))
+(or x2569 (not x2553))
+(or x2570 x2563 x2568 x2553 (not x2569))
+(or (not x2571) (not x2012) (not x2569) x2572)
+(or (not x2572) x2571)
+(or (not x2572) x2012)
+(or (not x2572) x2569)
+(or x2573 (not x2572))
+(or x2573 x2012)
+(or x2572 (not x2012) (not x2573))
+(or x2574 x2421)
+(or x2574 x2012)
+(or (not x2421) (not x2012) (not x2574))
+(or (not x2574) (not x2150) (not x2420) (not x2012) x2575)
+(or (not x2575) x2574)
+(or (not x2575) x2150)
+(or (not x2575) x2420)
+(or (not x2575) x2012)
+(or (not x2421) (not x2012) x2576)
+(or (not x2576) x2421)
+(or (not x2576) x2012)
+(or x2577 (not x2576))
+(or x2577 (not x2575))
+(or x2576 x2575 (not x2577))
+(or (not x2577) (not x2012) x2578)
+(or (not x2578) x2577)
+(or (not x2578) x2012)
+(or x2579 x2549)
+(or x2579 x2012)
+(or x2579 (not x2580))
+(or x2579 (not x2563))
+(or x2579 (not x2581))
+(or x2579 (not x2582))
+(or x2579 x2012)
+(or x2579 (not x2542))
+(or (not x2549) (not x2012) x2580 x2563 x2581 x2582 (not x2012) x2542 (not x2579))
+(or x2583 (not x2561))
+(or x2583 (not x2580))
+(or x2583 (not x2584))
+(or x2561 x2580 x2584 (not x2583))
+(or x2585 (not x2561))
+(or x2585 x2562)
+(or x2585 x2012)
+(or x2585 (not x2563))
+(or x2585 x2564)
+(or x2585 (not x2017))
+(or x2561 (not x2562) (not x2012) x2563 (not x2564) x2017 (not x2585))
+(or (not x2585) (not x2583) (not x2579) x2586)
+(or (not x2586) x2585)
+(or (not x2586) x2583)
+(or (not x2586) x2579)
+(or x2587 (not x2017))
+(or x2587 (not x2586))
+(or x2017 x2586 (not x2587))
+(or (not x2571) (not x2012) (not x2587) (not x2571) (not x2012) x2588)
+(or (not x2588) x2571)
+(or (not x2588) x2012)
+(or (not x2588) x2587)
+(or (not x2588) x2571)
+(or (not x2588) x2012)
+(or (not x2218) (not x2219) (not x2220) x2221 (not x2222) x2223 (not x2224) (not x2225) (not x2226) x2227 (not x2228) (not x2229) x2372)
+(or (not x2372) x2218)
+(or (not x2372) x2219)
+(or (not x2372) x2220)
+(or (not x2372) (not x2221))
+(or (not x2372) x2222)
+(or (not x2372) (not x2223))
+(or (not x2372) x2224)
+(or (not x2372) x2225)
+(or (not x2372) x2226)
+(or (not x2372) (not x2227))
+(or (not x2372) x2228)
+(or (not x2372) x2229)
+(or x2354 x2339)
+(or x2354 x2012)
+(or x2354 (not x2352))
+(or (not x2339) (not x2012) x2352 (not x2354))
+(or x2589 x2339)
+(or x2589 x2012)
+(or x2589 (not x2352))
+(or x2589 (not x2590))
+(or x2589 (not x2591))
+(or (not x2339) (not x2012) x2352 x2590 x2591 (not x2589))
+(or x2348 (not x2216))
+(or x2348 x2012)
+(or x2348 (not x2592))
+(or x2348 x2012)
+(or x2216 (not x2012) x2592 (not x2012) (not x2348))
+(or (not x2348) x2216 (not x2012) x2593)
+(or (not x2593) x2348)
+(or (not x2593) (not x2216))
+(or (not x2593) x2012)
+(or x2594 (not x2595))
+(or x2594 x2345)
+(or x2594 x2012)
+(or x2594 (not x2590))
+(or x2594 (not x2593))
+(or x2595 (not x2345) (not x2012) x2590 x2593 (not x2594))
+(or (not x2594) (not x2589) x2217)
+(or (not x2217) x2594)
+(or (not x2217) x2589)
+(or x2596 x2367)
+(or x2596 (not x2368))
+(or x2596 (not x2229))
+(or x2596 x2228)
+(or (not x2367) x2368 x2229 (not x2228) (not x2596))
+(or (not x2597) (not x2596) x2598)
+(or (not x2598) x2597)
+(or (not x2598) x2596)
+(or x2227 (not x2362) x2599)
+(or (not x2599) (not x2227))
+(or (not x2599) x2362)
+(or (not x2227) (not x2364) x2600)
+(or (not x2600) x2227)
+(or (not x2600) x2364)
+(or x2601 (not x2600))
+(or x2601 (not x2599))
+(or x2600 x2599 (not x2601))
+(or x2597 x2367)
+(or x2597 (not x2368))
+(or x2597 (not x2229))
+(or x2597 (not x2228))
+(or (not x2367) x2368 x2229 x2228 (not x2597))
+(or (not x2367) x2368 x2229 (not x2228) x2360)
+(or (not x2360) x2367)
+(or (not x2360) (not x2368))
+(or (not x2360) (not x2229))
+(or (not x2360) x2228)
+(or (not x2367) x2368 x2229 (not x2228) (not x2597) (not x2601) x2602)
+(or (not x2602) x2367)
+(or (not x2602) (not x2368))
+(or (not x2602) (not x2229))
+(or (not x2602) x2228)
+(or (not x2602) x2597)
+(or (not x2602) x2601)
+(or (not x2367) x2368 x2229 x2228 x2359)
+(or (not x2359) x2367)
+(or (not x2359) (not x2368))
+(or (not x2359) (not x2229))
+(or (not x2359) (not x2228))
+(or (not x2367) x2368 x2229 x2228 (not x2370) x2603)
+(or (not x2603) x2367)
+(or (not x2603) (not x2368))
+(or (not x2603) (not x2229))
+(or (not x2603) (not x2228))
+(or (not x2603) x2370)
+(or x2604 (not x2603))
+(or x2604 (not x2602))
+(or x2604 (not x2598))
+(or x2603 x2602 x2598 (not x2604))
+(or x2344 x2218)
+(or x2344 x2219)
+(or x2344 x2220)
+(or x2344 (not x2221))
+(or x2344 x2222)
+(or x2344 (not x2223))
+(or x2344 x2224)
+(or x2344 x2225)
+(or x2344 x2226)
+(or x2344 (not x2227))
+(or x2344 x2228)
+(or x2344 x2229)
+(or (not x2218) (not x2219) (not x2220) x2221 (not x2222) x2223 (not x2224) (not x2225) (not x2226) x2227 (not x2228) (not x2229) (not x2344))
+(or x2333 (not x2216))
+(or x2333 x2012)
+(or x2216 (not x2012) (not x2333))
+(or x2375 (not x2605))
+(or x2375 (not x2216))
+(or x2375 x2012)
+(or x2605 x2216 (not x2012) (not x2375))
+(or (not x2347) (not x2345) (not x2012) (not x2341) (not x2375) x2606)
+(or (not x2606) x2347)
+(or (not x2606) x2345)
+(or (not x2606) x2012)
+(or (not x2606) x2341)
+(or (not x2606) x2375)
+(or x2235 (not x2606))
+(or x2235 (not x2607))
+(or x2606 x2607 (not x2235))
+(or (not x2235) (not x2344) (not x2604) x2608)
+(or (not x2608) x2235)
+(or (not x2608) x2344)
+(or (not x2608) x2604)
+(or x2609 (not x2608))
+(or x2609 (not x2217))
+(or x2609 (not x2372))
+(or x2608 x2217 x2372 (not x2609))
+(or x2342 (not x2595))
+(or x2342 x2345)
+(or x2342 x2012)
+(or x2595 (not x2345) (not x2012) (not x2342))
+(or (not x2339) (not x2012) (not x2340) (not x2341) (not x2342) x2607)
+(or (not x2607) x2339)
+(or (not x2607) x2012)
+(or (not x2607) x2340)
+(or (not x2607) x2341)
+(or (not x2607) x2342)
+(or (not x2339) (not x2012) (not x2340) (not x2341) (not x2342) (not x2609) x2610)
+(or (not x2610) x2339)
+(or (not x2610) x2012)
+(or (not x2610) x2340)
+(or (not x2610) x2341)
+(or (not x2610) x2342)
+(or (not x2610) x2609)
+(or x2216 (not x2012) x2592 (not x2012) x2605)
+(or (not x2605) (not x2216))
+(or (not x2605) x2012)
+(or (not x2605) (not x2592))
+(or (not x2605) x2012)
+(or (not x2339) (not x2012) x2595)
+(or (not x2595) x2339)
+(or (not x2595) x2012)
+(or x2341 (not x2595))
+(or x2341 (not x2352))
+(or x2595 x2352 (not x2341))
+(or (not x2345) (not x2012) x2352)
+(or (not x2352) x2345)
+(or (not x2352) x2012)
+(or (not x2347) (not x2345) (not x2012) x2591)
+(or (not x2591) x2347)
+(or (not x2591) x2345)
+(or (not x2591) x2012)
+(or (not x2347) (not x2345) (not x2012) (not x2341) x2216 (not x2012) x2592 (not x2012) x2611)
+(or (not x2611) x2347)
+(or (not x2611) x2345)
+(or (not x2611) x2012)
+(or (not x2611) x2341)
+(or (not x2611) (not x2216))
+(or (not x2611) x2012)
+(or (not x2611) (not x2592))
+(or (not x2611) x2012)
+(or x2379 (not x2332))
+(or x2379 (not x2017))
+(or x2332 x2017 (not x2379))
+(or x2340 x2345)
+(or x2340 x2012)
+(or (not x2345) (not x2012) (not x2340))
+(or x2347 x2339)
+(or x2347 x2012)
+(or (not x2339) (not x2012) (not x2347))
+(or (not x2347) (not x2340) x2590)
+(or (not x2590) x2347)
+(or (not x2590) x2340)
+(or (not x2347) (not x2340) (not x2379) x2612)
+(or (not x2612) x2347)
+(or (not x2612) x2340)
+(or (not x2612) x2379)
+(or x2613 (not x2612))
+(or x2613 (not x2611))
+(or x2613 (not x2610))
+(or x2612 x2611 x2610 (not x2613))
+(or (not x117) (not x2613) x2614)
+(or (not x2614) x117)
+(or (not x2614) x2613)
+(or x2615 (not x2614))
+(or x2615 (not x2332))
+(or x2614 x2332 (not x2615))
+(or (not x2335) (not x2615) x2616)
+(or (not x2616) x2335)
+(or (not x2616) x2615)
+(or x2617 (not x2616))
+(or x2617 (not x2588))
+(or x2616 x2588 (not x2617))
+(or (not x2617) (not x2012) x2618)
+(or (not x2618) x2617)
+(or (not x2618) x2012)
+(or (not x2127) (not x2012) x2384)
+(or (not x2384) x2127)
+(or (not x2384) x2012)
+(or (not x2619) (not x2205) (not x2620) x2621)
+(or (not x2621) x2619)
+(or (not x2621) x2205)
+(or (not x2621) x2620)
+(or (not x2135) (not x2012) (not x2147) (not x2148) (not x2149) (not x2150) (not x2622) x2623)
+(or (not x2623) x2135)
+(or (not x2623) x2012)
+(or (not x2623) x2147)
+(or (not x2623) x2148)
+(or (not x2623) x2149)
+(or (not x2623) x2150)
+(or (not x2623) x2622)
+(or x2624 (not x2623))
+(or x2624 (not x2621))
+(or x2623 x2621 (not x2624))
+(or (not x2624) (not x2127) (not x2012) x2496)
+(or (not x2496) x2624)
+(or (not x2496) x2127)
+(or (not x2496) x2012)
+(or (not x2157) (not x2012) x2391)
+(or (not x2391) x2157)
+(or (not x2391) x2012)
+(or (not x2619) (not x2147) (not x2148) (not x2149) (not x2150) x2625)
+(or (not x2625) x2619)
+(or (not x2625) x2147)
+(or (not x2625) x2148)
+(or (not x2625) x2149)
+(or (not x2625) x2150)
+(or (not x2135) (not x2012) (not x2147) (not x2148) (not x2149) (not x2150) (not x2134) (not x2012) x2626)
+(or (not x2626) x2135)
+(or (not x2626) x2012)
+(or (not x2626) x2147)
+(or (not x2626) x2148)
+(or (not x2626) x2149)
+(or (not x2626) x2150)
+(or (not x2626) x2134)
+(or (not x2626) x2012)
+(or x2205 (not x2626))
+(or x2205 (not x2625))
+(or x2626 x2625 (not x2205))
+(or (not x2205) (not x2200) (not x2012) (not x2157) (not x2012) x2495)
+(or (not x2495) x2205)
+(or (not x2495) x2200)
+(or (not x2495) x2012)
+(or (not x2495) x2157)
+(or (not x2495) x2012)
+(or x2627 (not x2495))
+(or x2627 (not x2496))
+(or x2495 x2496 (not x2627))
+(or x2628 (not x2629))
+(or x2628 (not x2630))
+(or x2628 (not x2629))
+(or x2629 x2630 x2629 (not x2628))
+(or (not x2631) (not x2134) (not x2012) x2629)
+(or (not x2629) x2631)
+(or (not x2629) x2134)
+(or (not x2629) x2012)
+(or (not x2200) (not x2012) x2202)
+(or (not x2202) x2200)
+(or (not x2202) x2012)
+(or (not x2147) (not x2148) (not x2149) (not x2150) (not x2134) (not x2012) (not x2200) (not x2012) x2630)
+(or (not x2630) x2147)
+(or (not x2630) x2148)
+(or (not x2630) x2149)
+(or (not x2630) x2150)
+(or (not x2630) x2134)
+(or (not x2630) x2012)
+(or (not x2630) x2200)
+(or (not x2630) x2012)
+(or x2632 (not x2630))
+(or x2632 (not x2629))
+(or x2630 x2629 (not x2632))
+(or (not x2633) (not x2632) (not x2628) (not x2317) (not x2012) x2634)
+(or (not x2634) x2633)
+(or (not x2634) x2632)
+(or (not x2634) x2628)
+(or (not x2634) x2317)
+(or (not x2634) x2012)
+(or x2620 x2200)
+(or x2620 x2012)
+(or (not x2200) (not x2012) (not x2620))
+(or x2152 (not x2486))
+(or x2152 (not x2487))
+(or x2152 (not x2488))
+(or x2152 (not x2489))
+(or x2486 x2487 x2488 x2489 (not x2152))
+(or x2631 (not x2486))
+(or x2631 (not x2487))
+(or x2631 (not x2488))
+(or x2631 (not x2489))
+(or x2631 x2134)
+(or x2631 x2012)
+(or x2486 x2487 x2488 x2489 (not x2134) (not x2012) (not x2631))
+(or x2635 (not x2486))
+(or x2635 (not x2487))
+(or x2635 (not x2488))
+(or x2635 (not x2489))
+(or x2635 x2134)
+(or x2635 x2012)
+(or x2635 x2200)
+(or x2635 x2012)
+(or x2486 x2487 x2488 x2489 (not x2134) (not x2012) (not x2200) (not x2012) (not x2635))
+(or x2622 x2134)
+(or x2622 x2012)
+(or (not x2134) (not x2012) (not x2622))
+(or (not x2134) (not x2012) x2142)
+(or (not x2142) x2134)
+(or (not x2142) x2012)
+(or (not x2147) (not x2148) (not x2149) (not x2150) (not x2134) (not x2012) x2636)
+(or (not x2636) x2147)
+(or (not x2636) x2148)
+(or (not x2636) x2149)
+(or (not x2636) x2150)
+(or (not x2636) x2134)
+(or (not x2636) x2012)
+(or x2633 (not x2636))
+(or x2633 x2134)
+(or x2633 x2012)
+(or x2636 (not x2134) (not x2012) (not x2633))
+(or (not x2633) (not x2635) (not x2633) (not x2323) (not x2012) x2637)
+(or (not x2637) x2633)
+(or (not x2637) x2635)
+(or (not x2637) x2633)
+(or (not x2637) x2323)
+(or (not x2637) x2012)
+(or x2638 (not x2637))
+(or x2638 (not x2634))
+(or x2637 x2634 (not x2638))
+(or (not x2148) (not x2150) (not x2149) (not x2148) (not x2638) (not x2627) x2639)
+(or (not x2639) x2148)
+(or (not x2639) x2150)
+(or (not x2639) x2149)
+(or (not x2639) x2148)
+(or (not x2639) x2638)
+(or (not x2639) x2627)
+(or (not x2164) (not x2012) x2397)
+(or (not x2397) x2164)
+(or (not x2397) x2012)
+(or (not x2619) (not x2246) (not x2640) x2641)
+(or (not x2641) x2619)
+(or (not x2641) x2246)
+(or (not x2641) x2640)
+(or (not x2135) (not x2012) (not x2147) (not x2183) (not x2012) x2184 (not x2012) (not x2150) (not x2185) (not x2149) (not x2150) (not x2642) x2643)
+(or (not x2643) x2135)
+(or (not x2643) x2012)
+(or (not x2643) x2147)
+(or (not x2643) x2183)
+(or (not x2643) x2012)
+(or (not x2643) (not x2184))
+(or (not x2643) x2012)
+(or (not x2643) x2150)
+(or (not x2643) x2185)
+(or (not x2643) x2149)
+(or (not x2643) x2150)
+(or (not x2643) x2642)
+(or x2644 (not x2643))
+(or x2644 (not x2641))
+(or x2643 x2641 (not x2644))
+(or (not x2644) (not x2164) (not x2012) x2513)
+(or (not x2513) x2644)
+(or (not x2513) x2164)
+(or (not x2513) x2012)
+(or (not x2192) (not x2012) x2404)
+(or (not x2404) x2192)
+(or (not x2404) x2012)
+(or x2619 x2135)
+(or x2619 x2012)
+(or (not x2135) (not x2012) (not x2619))
+(or (not x2619) (not x2147) (not x2183) (not x2012) x2184 (not x2012) (not x2150) (not x2185) (not x2149) (not x2150) x2645)
+(or (not x2645) x2619)
+(or (not x2645) x2147)
+(or (not x2645) x2183)
+(or (not x2645) x2012)
+(or (not x2645) (not x2184))
+(or (not x2645) x2012)
+(or (not x2645) x2150)
+(or (not x2645) x2185)
+(or (not x2645) x2149)
+(or (not x2645) x2150)
+(or (not x2135) (not x2012) x2198)
+(or (not x2198) x2135)
+(or (not x2198) x2012)
+(or (not x2135) (not x2012) (not x2147) (not x2183) (not x2012) x2184 (not x2012) (not x2150) (not x2185) (not x2149) (not x2150) (not x2171) (not x2012) x2646)
+(or (not x2646) x2135)
+(or (not x2646) x2012)
+(or (not x2646) x2147)
+(or (not x2646) x2183)
+(or (not x2646) x2012)
+(or (not x2646) (not x2184))
+(or (not x2646) x2012)
+(or (not x2646) x2150)
+(or (not x2646) x2185)
+(or (not x2646) x2149)
+(or (not x2646) x2150)
+(or (not x2646) x2171)
+(or (not x2646) x2012)
+(or x2246 (not x2646))
+(or x2246 (not x2645))
+(or x2646 x2645 (not x2246))
+(or (not x2246) (not x2241) (not x2012) (not x2192) (not x2012) x2512)
+(or (not x2512) x2246)
+(or (not x2512) x2241)
+(or (not x2512) x2012)
+(or (not x2512) x2192)
+(or (not x2512) x2012)
+(or x2647 (not x2512))
+(or x2647 (not x2513))
+(or x2512 x2513 (not x2647))
+(or (not x2648) (not x2649) (not x2650) (not x2254) (not x2012) x2651)
+(or (not x2651) x2648)
+(or (not x2651) x2649)
+(or (not x2651) x2650)
+(or (not x2651) x2254)
+(or (not x2651) x2012)
+(or (not x2648) (not x2652) (not x2648) (not x2260) (not x2012) x2653)
+(or (not x2653) x2648)
+(or (not x2653) x2652)
+(or (not x2653) x2648)
+(or (not x2653) x2260)
+(or (not x2653) x2012)
+(or x2654 (not x2653))
+(or x2654 (not x2651))
+(or x2653 x2651 (not x2654))
+(or (not x2150) (not x2149) (not x2183) (not x2012) x2184 (not x2012) (not x2150) (not x2185) (not x2654) x2655)
+(or (not x2655) x2150)
+(or (not x2655) x2149)
+(or (not x2655) x2183)
+(or (not x2655) x2012)
+(or (not x2655) (not x2184))
+(or (not x2655) x2012)
+(or (not x2655) x2150)
+(or (not x2655) x2185)
+(or (not x2655) x2654)
+(or (not x2648) (not x2649) (not x2650) (not x2266) (not x2012) x2656)
+(or (not x2656) x2648)
+(or (not x2656) x2649)
+(or (not x2656) x2650)
+(or (not x2656) x2266)
+(or (not x2656) x2012)
+(or (not x2648) (not x2652) (not x2648) (not x2271) (not x2012) x2657)
+(or (not x2657) x2648)
+(or (not x2657) x2652)
+(or (not x2657) x2648)
+(or (not x2657) x2271)
+(or (not x2657) x2012)
+(or x2658 (not x2657))
+(or x2658 (not x2656))
+(or x2657 x2656 (not x2658))
+(or (not x2150) (not x2149) (not x2183) (not x2012) x2184 (not x2012) (not x2150) (not x2185) (not x2658) x2659)
+(or (not x2659) x2150)
+(or (not x2659) x2149)
+(or (not x2659) x2183)
+(or (not x2659) x2012)
+(or (not x2659) (not x2184))
+(or (not x2659) x2012)
+(or (not x2659) x2150)
+(or (not x2659) x2185)
+(or (not x2659) x2658)
+(or (not x2648) (not x2649) (not x2650) (not x2276) (not x2012) x2660)
+(or (not x2660) x2648)
+(or (not x2660) x2649)
+(or (not x2660) x2650)
+(or (not x2660) x2276)
+(or (not x2660) x2012)
+(or (not x2648) (not x2652) (not x2648) (not x2281) (not x2012) x2661)
+(or (not x2661) x2648)
+(or (not x2661) x2652)
+(or (not x2661) x2648)
+(or (not x2661) x2281)
+(or (not x2661) x2012)
+(or x2662 (not x2661))
+(or x2662 (not x2660))
+(or x2661 x2660 (not x2662))
+(or (not x2150) (not x2149) (not x2183) (not x2012) x2184 (not x2012) (not x2150) (not x2185) (not x2662) x2663)
+(or (not x2663) x2150)
+(or (not x2663) x2149)
+(or (not x2663) x2183)
+(or (not x2663) x2012)
+(or (not x2663) (not x2184))
+(or (not x2663) x2012)
+(or (not x2663) x2150)
+(or (not x2663) x2185)
+(or (not x2663) x2662)
+(or (not x2648) (not x2649) (not x2650) (not x2286) (not x2012) x2664)
+(or (not x2664) x2648)
+(or (not x2664) x2649)
+(or (not x2664) x2650)
+(or (not x2664) x2286)
+(or (not x2664) x2012)
+(or (not x2648) (not x2652) (not x2648) (not x2291) (not x2012) x2665)
+(or (not x2665) x2648)
+(or (not x2665) x2652)
+(or (not x2665) x2648)
+(or (not x2665) x2291)
+(or (not x2665) x2012)
+(or x2666 (not x2665))
+(or x2666 (not x2664))
+(or x2665 x2664 (not x2666))
+(or (not x2150) (not x2149) (not x2183) (not x2012) x2184 (not x2012) (not x2150) (not x2185) (not x2666) x2667)
+(or (not x2667) x2150)
+(or (not x2667) x2149)
+(or (not x2667) x2183)
+(or (not x2667) x2012)
+(or (not x2667) (not x2184))
+(or (not x2667) x2012)
+(or (not x2667) x2150)
+(or (not x2667) x2185)
+(or (not x2667) x2666)
+(or (not x2648) (not x2649) (not x2650) (not x2296) (not x2012) x2668)
+(or (not x2668) x2648)
+(or (not x2668) x2649)
+(or (not x2668) x2650)
+(or (not x2668) x2296)
+(or (not x2668) x2012)
+(or (not x2648) (not x2652) (not x2648) (not x2301) (not x2012) x2669)
+(or (not x2669) x2648)
+(or (not x2669) x2652)
+(or (not x2669) x2648)
+(or (not x2669) x2301)
+(or (not x2669) x2012)
+(or x2670 (not x2669))
+(or x2670 (not x2668))
+(or x2669 x2668 (not x2670))
+(or (not x2150) (not x2149) (not x2183) (not x2012) x2184 (not x2012) (not x2150) (not x2185) (not x2670) x2671)
+(or (not x2671) x2150)
+(or (not x2671) x2149)
+(or (not x2671) x2183)
+(or (not x2671) x2012)
+(or (not x2671) (not x2184))
+(or (not x2671) x2012)
+(or (not x2671) x2150)
+(or (not x2671) x2185)
+(or (not x2671) x2670)
+(or x2650 (not x2672))
+(or x2650 (not x2673))
+(or x2650 (not x2672))
+(or x2672 x2673 x2672 (not x2650))
+(or (not x2674) (not x2171) (not x2012) x2672)
+(or (not x2672) x2674)
+(or (not x2672) x2171)
+(or (not x2672) x2012)
+(or (not x2241) (not x2012) x2243)
+(or (not x2243) x2241)
+(or (not x2243) x2012)
+(or (not x2147) (not x2183) (not x2012) x2184 (not x2012) (not x2150) (not x2185) (not x2149) (not x2150) (not x2171) (not x2012) (not x2241) (not x2012) x2673)
+(or (not x2673) x2147)
+(or (not x2673) x2183)
+(or (not x2673) x2012)
+(or (not x2673) (not x2184))
+(or (not x2673) x2012)
+(or (not x2673) x2150)
+(or (not x2673) x2185)
+(or (not x2673) x2149)
+(or (not x2673) x2150)
+(or (not x2673) x2171)
+(or (not x2673) x2012)
+(or (not x2673) x2241)
+(or (not x2673) x2012)
+(or x2649 (not x2673))
+(or x2649 (not x2672))
+(or x2673 x2672 (not x2649))
+(or (not x2648) (not x2649) (not x2650) (not x2306) (not x2012) x2675)
+(or (not x2675) x2648)
+(or (not x2675) x2649)
+(or (not x2675) x2650)
+(or (not x2675) x2306)
+(or (not x2675) x2012)
+(or x2640 x2241)
+(or x2640 x2012)
+(or (not x2241) (not x2012) (not x2640))
+(or x2439 x2183)
+(or x2439 x2012)
+(or x2439 (not x2184))
+(or x2439 x2012)
+(or (not x2183) (not x2012) x2184 (not x2012) (not x2439))
+(or x2148 x2183)
+(or x2148 x2012)
+(or x2148 (not x2184))
+(or x2148 x2012)
+(or x2148 (not x2489))
+(or x2148 (not x2507))
+(or (not x2183) (not x2012) x2184 (not x2012) x2489 x2507 (not x2148))
+(or (not x2676) (not x2012) (not x2677) (not x2012) (not x2678) (not x2012) x2486)
+(or (not x2486) x2676)
+(or (not x2486) x2012)
+(or (not x2486) x2677)
+(or (not x2486) x2012)
+(or (not x2486) x2678)
+(or (not x2486) x2012)
+(or x2187 (not x2486))
+(or x2187 x2183)
+(or x2187 x2012)
+(or x2187 (not x2184))
+(or x2187 x2012)
+(or x2187 (not x2489))
+(or x2187 (not x2507))
+(or x2187 (not x2488))
+(or x2187 (not x2489))
+(or x2486 (not x2183) (not x2012) x2184 (not x2012) x2489 x2507 x2488 x2489 (not x2187))
+(or x2674 (not x2486))
+(or x2674 x2183)
+(or x2674 x2012)
+(or x2674 (not x2184))
+(or x2674 x2012)
+(or x2674 (not x2489))
+(or x2674 (not x2507))
+(or x2674 (not x2488))
+(or x2674 (not x2489))
+(or x2674 x2171)
+(or x2674 x2012)
+(or x2486 (not x2183) (not x2012) x2184 (not x2012) x2489 x2507 x2488 x2489 (not x2171) (not x2012) (not x2674))
+(or x2652 (not x2486))
+(or x2652 x2183)
+(or x2652 x2012)
+(or x2652 (not x2184))
+(or x2652 x2012)
+(or x2652 (not x2489))
+(or x2652 (not x2507))
+(or x2652 (not x2488))
+(or x2652 (not x2489))
+(or x2652 x2171)
+(or x2652 x2012)
+(or x2652 x2241)
+(or x2652 x2012)
+(or x2486 (not x2183) (not x2012) x2184 (not x2012) x2489 x2507 x2488 x2489 (not x2171) (not x2012) (not x2241) (not x2012) (not x2652))
+(or x2642 x2171)
+(or x2642 x2012)
+(or (not x2171) (not x2012) (not x2642))
+(or (not x2171) (not x2012) x2178)
+(or (not x2178) x2171)
+(or (not x2178) x2012)
+(or x2147 x2676)
+(or x2147 x2012)
+(or x2147 x2677)
+(or x2147 x2012)
+(or x2147 x2678)
+(or x2147 x2012)
+(or (not x2676) (not x2012) (not x2677) (not x2012) (not x2678) (not x2012) (not x2147))
+(or (not x2147) (not x2183) (not x2012) x2184 (not x2012) (not x2150) (not x2185) (not x2149) (not x2150) (not x2171) (not x2012) x2679)
+(or (not x2679) x2147)
+(or (not x2679) x2183)
+(or (not x2679) x2012)
+(or (not x2679) (not x2184))
+(or (not x2679) x2012)
+(or (not x2679) x2150)
+(or (not x2679) x2185)
+(or (not x2679) x2149)
+(or (not x2679) x2150)
+(or (not x2679) x2171)
+(or (not x2679) x2012)
+(or x2648 (not x2679))
+(or x2648 x2171)
+(or x2648 x2012)
+(or x2679 (not x2171) (not x2012) (not x2648))
+(or (not x2648) (not x2652) (not x2648) (not x2311) (not x2012) x2680)
+(or (not x2680) x2648)
+(or (not x2680) x2652)
+(or (not x2680) x2648)
+(or (not x2680) x2311)
+(or (not x2680) x2012)
+(or x2681 (not x2680))
+(or x2681 (not x2675))
+(or x2680 x2675 (not x2681))
+(or (not x2150) (not x2149) (not x2183) (not x2012) x2184 (not x2012) (not x2150) (not x2185) (not x2681) x2682)
+(or (not x2682) x2150)
+(or (not x2682) x2149)
+(or (not x2682) x2183)
+(or (not x2682) x2012)
+(or (not x2682) (not x2184))
+(or (not x2682) x2012)
+(or (not x2682) x2150)
+(or (not x2682) x2185)
+(or (not x2682) x2681)
+(or x2683 (not x2682))
+(or x2683 (not x2671))
+(or x2683 (not x2667))
+(or x2683 (not x2663))
+(or x2683 (not x2659))
+(or x2683 (not x2655))
+(or x2682 x2671 x2667 x2663 x2659 x2655 (not x2683))
+(or (not x2183) (not x2012) x2184 (not x2012) (not x2150) (not x2185) x2487)
+(or (not x2487) x2183)
+(or (not x2487) x2012)
+(or (not x2487) (not x2184))
+(or (not x2487) x2012)
+(or (not x2487) x2150)
+(or (not x2487) x2185)
+(or (not x2183) (not x2012) x2184 (not x2012) (not x2150) (not x2185) (not x2683) (not x2647) x2684)
+(or (not x2684) x2183)
+(or (not x2684) x2012)
+(or (not x2684) (not x2184))
+(or (not x2684) x2012)
+(or (not x2684) x2150)
+(or (not x2684) x2185)
+(or (not x2684) x2683)
+(or (not x2684) x2647)
+(or x2685 (not x2684))
+(or x2685 (not x2639))
+(or x2684 x2639 (not x2685))
+(or x2185 (not x2686))
+(or x2185 (not x2687))
+(or x2686 x2687 (not x2185))
+(or x2149 (not x2686))
+(or x2149 (not x2687))
+(or x2149 (not x2489))
+(or x2686 x2687 x2489 (not x2149))
+(or (not x2149) (not x2685) x2688)
+(or (not x2688) x2149)
+(or (not x2688) x2685)
+(or (not x2410) (not x2012) x2469)
+(or (not x2469) x2410)
+(or (not x2469) x2012)
+(or (not x2461) (not x2432) x2507)
+(or (not x2507) x2461)
+(or (not x2507) x2432)
+(or (not x2461) (not x2432) (not x2150) x2488)
+(or (not x2488) x2461)
+(or (not x2488) x2432)
+(or (not x2488) x2150)
+(or (not x2461) (not x2432) (not x2150) (not x2410) (not x2012) x2689)
+(or (not x2689) x2461)
+(or (not x2689) x2432)
+(or (not x2689) x2150)
+(or (not x2689) x2410)
+(or (not x2689) x2012)
+(or x2690 (not x2689))
+(or x2690 (not x2688))
+(or x2689 x2688 (not x2690))
+(or x2432 (not x2184))
+(or x2432 x2012)
+(or x2184 (not x2012) (not x2432))
+(or (not x2183) (not x2012) x2686)
+(or (not x2686) x2183)
+(or (not x2686) x2012)
+(or x2150 (not x2686))
+(or x2150 (not x2184))
+(or x2150 x2012)
+(or x2686 x2184 (not x2012) (not x2150))
+(or (not x2150) (not x2690) x2691)
+(or (not x2691) x2150)
+(or (not x2691) x2690)
+(or x2184 (not x2012) x2687)
+(or (not x2687) (not x2184))
+(or (not x2687) x2012)
+(or x2461 x2183)
+(or x2461 x2012)
+(or (not x2183) (not x2012) (not x2461))
+(or (not x2461) x2184 (not x2012) x2489)
+(or (not x2489) x2461)
+(or (not x2489) (not x2184))
+(or (not x2489) x2012)
+(or (not x2461) x2184 (not x2012) (not x2420) (not x2012) x2692)
+(or (not x2692) x2461)
+(or (not x2692) (not x2184))
+(or (not x2692) x2012)
+(or (not x2692) x2420)
+(or (not x2692) x2012)
+(or x2693 (not x2692))
+(or x2693 (not x2691))
+(or x2692 x2691 (not x2693))
+(or (not x2693) (not x2012) x2694)
+(or (not x2694) x2693)
+(or (not x2694) x2012)
+(or (not x2695) (not x2696) (not x2676) (not x2012) x2697)
+(or (not x2697) x2695)
+(or (not x2697) x2696)
+(or (not x2697) x2676)
+(or (not x2697) x2012)
+(or (not x2698) (not x2699) x2700)
+(or (not x2700) x2698)
+(or (not x2700) x2699)
+(or x2701 (not x2700))
+(or x2701 (not x2697))
+(or x2700 x2697 (not x2701))
+(or (not x2702) (not x2701) x2703)
+(or (not x2703) x2702)
+(or (not x2703) x2701)
+(or (not x2698) (not x2676) (not x2012) x2704)
+(or (not x2704) x2698)
+(or (not x2704) x2676)
+(or (not x2704) x2012)
+(or (not x2695) (not x2696) (not x2699) x2705)
+(or (not x2705) x2695)
+(or (not x2705) x2696)
+(or (not x2705) x2699)
+(or x2706 (not x2705))
+(or x2706 (not x2704))
+(or x2705 x2704 (not x2706))
+(or (not x2707) (not x2012) (not x2706) x2708)
+(or (not x2708) x2707)
+(or (not x2708) x2012)
+(or (not x2708) x2706)
+(or x2709 (not x2708))
+(or x2709 (not x2703))
+(or x2708 x2703 (not x2709))
+(or (not x2709) (not x2012) x2710)
+(or (not x2710) x2709)
+(or (not x2710) x2012)
+(or (not x2549) (not x2012) (not x2550) (not x2551) (not x2552) (not x2711) (not x2562) (not x2012) x2712)
+(or (not x2712) x2549)
+(or (not x2712) x2012)
+(or (not x2712) x2550)
+(or (not x2712) x2551)
+(or (not x2712) x2552)
+(or (not x2712) x2711)
+(or (not x2712) x2562)
+(or (not x2712) x2012)
+(or (not x2567) (not x2562) (not x2012) (not x2551) (not x2564) (not x2713) (not x2562) (not x2012) x2714)
+(or (not x2714) x2567)
+(or (not x2714) x2562)
+(or (not x2714) x2012)
+(or (not x2714) x2551)
+(or (not x2714) x2564)
+(or (not x2714) x2713)
+(or (not x2714) x2562)
+(or (not x2714) x2012)
+(or (not x2571) (not x2012) x2332)
+(or (not x2332) x2571)
+(or (not x2332) x2012)
+(or (not x2571) (not x2012) (not x117) x2584)
+(or (not x2584) x2571)
+(or (not x2584) x2012)
+(or (not x2584) x117)
+(or x2715 (not x2584))
+(or x2715 (not x2580))
+(or x2584 x2580 (not x2715))
+(or (not x2567) (not x2550) (not x2715) x2716)
+(or (not x2716) x2567)
+(or (not x2716) x2550)
+(or (not x2716) x2715)
+(or (not x2551) (not x2552) (not x2717) (not x2562) (not x2012) x2718)
+(or (not x2718) x2551)
+(or (not x2718) x2552)
+(or (not x2718) x2717)
+(or (not x2718) x2562)
+(or (not x2718) x2012)
+(or x2719 (not x2718))
+(or x2719 (not x2716))
+(or x2719 (not x2714))
+(or x2719 (not x2712))
+(or x2718 x2716 x2714 x2712 (not x2719))
+(or (not x2719) (not x2012) x2720)
+(or (not x2720) x2719)
+(or (not x2720) x2012)
+(or x2543 (not x2582))
+(or x2543 x2012)
+(or x2582 (not x2012) (not x2543))
+(or x2711 (not x2582))
+(or x2711 x2012)
+(or x2711 (not x2542))
+(or x2582 (not x2012) x2542 (not x2711))
+(or (not x2549) (not x2012) (not x2550) (not x2551) (not x2552) (not x2711) (not x2549) (not x2012) x2721)
+(or (not x2721) x2549)
+(or (not x2721) x2012)
+(or (not x2721) x2550)
+(or (not x2721) x2551)
+(or (not x2721) x2552)
+(or (not x2721) x2711)
+(or (not x2721) x2549)
+(or (not x2721) x2012)
+(or x2713 x2564)
+(or x2713 (not x2017))
+(or (not x2564) x2017 (not x2713))
+(or (not x2564) (not x2713) (not x2549) (not x2012) x2722)
+(or (not x2722) x2564)
+(or (not x2722) x2713)
+(or (not x2722) x2549)
+(or (not x2722) x2012)
+(or (not x2564) x2017 x2723)
+(or (not x2723) x2564)
+(or (not x2723) (not x2017))
+(or x2724 x2564)
+(or x2724 (not x2723))
+(or (not x2564) x2723 (not x2724))
+(or (not x2724) x2564 x2725)
+(or (not x2725) x2724)
+(or (not x2725) (not x2564))
+(or x2726 (not x2725))
+(or x2726 (not x2722))
+(or x2725 x2722 (not x2726))
+(or (not x2567) (not x2562) (not x2012) (not x2551) (not x2726) x2727)
+(or (not x2727) x2567)
+(or (not x2727) x2562)
+(or (not x2727) x2012)
+(or (not x2727) x2551)
+(or (not x2727) x2726)
+(or x2335 x2571)
+(or x2335 x2012)
+(or (not x2571) (not x2012) (not x2335))
+(or x2728 x2571)
+(or x2728 x2012)
+(or x2728 (not x1968))
+(or (not x2571) (not x2012) x1968 (not x2728))
+(or (not x2567) (not x2550) (not x2728) (not x2549) (not x2012) x2729)
+(or (not x2729) x2567)
+(or (not x2729) x2550)
+(or (not x2729) x2728)
+(or (not x2729) x2549)
+(or (not x2729) x2012)
+(or (not x2551) (not x2552) (not x2717) (not x2549) (not x2012) x2730)
+(or (not x2730) x2551)
+(or (not x2730) x2552)
+(or (not x2730) x2717)
+(or (not x2730) x2549)
+(or (not x2730) x2012)
+(or x2731 (not x2730))
+(or x2731 (not x2729))
+(or x2731 (not x2727))
+(or x2731 (not x2721))
+(or x2730 x2729 x2727 x2721 (not x2731))
+(or (not x2731) (not x2012) x2732)
+(or (not x2732) x2731)
+(or (not x2732) x2012)
+(or (not x2695) (not x2696) (not x2677) (not x2012) x2733)
+(or (not x2733) x2695)
+(or (not x2733) x2696)
+(or (not x2733) x2677)
+(or (not x2733) x2012)
+(or (not x2698) (not x2734) x2735)
+(or (not x2735) x2698)
+(or (not x2735) x2734)
+(or x2736 (not x2735))
+(or x2736 (not x2733))
+(or x2735 x2733 (not x2736))
+(or (not x2702) (not x2736) x2737)
+(or (not x2737) x2702)
+(or (not x2737) x2736)
+(or (not x2698) (not x2677) (not x2012) x2738)
+(or (not x2738) x2698)
+(or (not x2738) x2677)
+(or (not x2738) x2012)
+(or x2739 x2740 x2699)
+(or x2739 (not x2740) (not x2699))
+(or (not x2739) x2740 (not x2699))
+(or (not x2739) (not x2740) x2699)
+(or (not x2695) (not x2696) (not x2739) x2741)
+(or (not x2741) x2695)
+(or (not x2741) x2696)
+(or (not x2741) x2739)
+(or x2742 (not x2741))
+(or x2742 (not x2738))
+(or x2741 x2738 (not x2742))
+(or (not x2707) (not x2012) (not x2742) x2743)
+(or (not x2743) x2707)
+(or (not x2743) x2012)
+(or (not x2743) x2742)
+(or x2744 (not x2743))
+(or x2744 (not x2737))
+(or x2743 x2737 (not x2744))
+(or (not x2744) (not x2012) x2745)
+(or (not x2745) x2744)
+(or (not x2745) x2012)
+(or (not x2695) (not x2696) (not x2678) (not x2012) x2746)
+(or (not x2746) x2695)
+(or (not x2746) x2696)
+(or (not x2746) x2678)
+(or (not x2746) x2012)
+(or (not x2698) (not x2747) x2748)
+(or (not x2748) x2698)
+(or (not x2748) x2747)
+(or x2749 (not x2748))
+(or x2749 (not x2746))
+(or x2748 x2746 (not x2749))
+(or x2702 x2707)
+(or x2702 x2012)
+(or (not x2707) (not x2012) (not x2702))
+(or (not x2702) (not x2749) x2750)
+(or (not x2750) x2702)
+(or (not x2750) x2749)
+(or (not x2554) (not x2012) (not x110) (not x117) (not x2751) (not x2752) x2753)
+(or (not x2753) x2554)
+(or (not x2753) x2012)
+(or (not x2753) x110)
+(or (not x2753) x117)
+(or (not x2753) x2751)
+(or (not x2753) x2752)
+(or (not x109) (not x2560) (not x2012) (not x117) (not x2567) (not x2562) (not x2012) (not x2551) x2564 x2754)
+(or (not x2754) x109)
+(or (not x2754) x2560)
+(or (not x2754) x2012)
+(or (not x2754) x117)
+(or (not x2754) x2567)
+(or (not x2754) x2562)
+(or (not x2754) x2012)
+(or (not x2754) x2551)
+(or (not x2754) (not x2564))
+(or x2698 (not x2754))
+(or x2698 (not x2753))
+(or x2754 x2753 (not x2698))
+(or (not x2698) (not x2678) (not x2012) x2755)
+(or (not x2755) x2698)
+(or (not x2755) x2678)
+(or (not x2755) x2012)
+(or x2756 x2757 x2758)
+(or x2756 (not x2757) (not x2758))
+(or (not x2756) x2757 (not x2758))
+(or (not x2756) (not x2757) x2758)
+(or x2696 x2554)
+(or x2696 x2012)
+(or x2696 (not x1994))
+(or x2696 (not x1968))
+(or x2696 (not x2555))
+(or x2696 (not x2559))
+(or (not x2554) (not x2012) x1994 x1968 x2555 x2559 (not x2696))
+(or x2695 (not x1993))
+(or x2695 x2560)
+(or x2695 x2012)
+(or x2695 (not x1968))
+(or x2695 (not x2561))
+(or x2695 x2562)
+(or x2695 x2012)
+(or x2695 (not x2563))
+(or x2695 (not x2564))
+(or x1993 (not x2560) (not x2012) x1968 x2561 (not x2562) (not x2012) x2563 x2564 (not x2695))
+(or (not x2695) (not x2696) (not x2756) x2759)
+(or (not x2759) x2695)
+(or (not x2759) x2696)
+(or (not x2759) x2756)
+(or x2760 (not x2759))
+(or x2760 (not x2755))
+(or x2759 x2755 (not x2760))
+(or (not x2707) (not x2012) (not x2760) x2761)
+(or (not x2761) x2707)
+(or (not x2761) x2012)
+(or (not x2761) x2760)
+(or x2762 (not x2761))
+(or x2762 (not x2750))
+(or x2761 x2750 (not x2762))
+(or (not x2762) (not x2012) x2763)
+(or (not x2763) x2762)
+(or (not x2763) x2012)
+(or (not x2764) (not x2765) (not x2012) x2766)
+(or (not x2766) x2764)
+(or (not x2766) x2765)
+(or (not x2766) x2012)
+(or (not x2767) (not x2752) (not x2768) x2769)
+(or (not x2769) x2767)
+(or (not x2769) x2752)
+(or (not x2769) x2768)
+(or x2770 (not x2769))
+(or x2770 (not x2766))
+(or x2769 x2766 (not x2770))
+(or (not x2554) (not x2012) (not x110) (not x117) (not x2751) (not x2770) x2771)
+(or (not x2771) x2554)
+(or (not x2771) x2012)
+(or (not x2771) x110)
+(or (not x2771) x117)
+(or (not x2771) x2751)
+(or (not x2771) x2770)
+(or (not x2772) (not x2567) (not x2562) (not x2012) (not x2551) x2564 (not x2765) (not x2012) x2773)
+(or (not x2773) x2772)
+(or (not x2773) x2567)
+(or (not x2773) x2562)
+(or (not x2773) x2012)
+(or (not x2773) x2551)
+(or (not x2773) (not x2564))
+(or (not x2773) x2765)
+(or (not x2773) x2012)
+(or x2774 (not x2740))
+(or x2774 (not x2775))
+(or x2774 (not x2776))
+(or x2740 x2775 x2776 (not x2774))
+(or x2747 x2757 x2774)
+(or x2747 (not x2757) (not x2774))
+(or (not x2747) x2757 (not x2774))
+(or (not x2747) (not x2757) x2774)
+(or (not x2777) (not x2747) x2778)
+(or (not x2778) x2777)
+(or (not x2778) x2747)
+(or x2779 (not x2780))
+(or x2779 (not x2778))
+(or x2780 x2778 (not x2779))
+(or (not x2781) (not x2779) x2782)
+(or (not x2782) x2781)
+(or (not x2782) x2779)
+(or (not x2783) (not x2012) (not x2784) (not x2012) x2785)
+(or (not x2785) x2783)
+(or (not x2785) x2012)
+(or (not x2785) x2784)
+(or (not x2785) x2012)
+(or x2786 (not x2557))
+(or x2786 (not x2785))
+(or x2786 (not x2556))
+(or x2557 x2785 x2556 (not x2786))
+(or x2768 x2558 x2786)
+(or x2768 (not x2558) (not x2786))
+(or (not x2768) x2558 (not x2786))
+(or (not x2768) (not x2558) x2786)
+(or (not x2567) (not x2562) (not x2012) (not x2551) x2564 (not x2787) (not x2768) x2788)
+(or (not x2788) x2567)
+(or (not x2788) x2562)
+(or (not x2788) x2012)
+(or (not x2788) x2551)
+(or (not x2788) (not x2564))
+(or (not x2788) x2787)
+(or (not x2788) x2768)
+(or x2789 (not x2788))
+(or x2789 (not x2782))
+(or x2788 x2782 (not x2789))
+(or (not x2790) (not x2789) x2791)
+(or (not x2791) x2790)
+(or (not x2791) x2789)
+(or x2792 (not x2791))
+(or x2792 (not x2773))
+(or x2791 x2773 (not x2792))
+(or (not x109) (not x2560) (not x2012) (not x117) (not x2792) x2793)
+(or (not x2793) x109)
+(or (not x2793) x2560)
+(or (not x2793) x2012)
+(or (not x2793) x117)
+(or (not x2793) x2792)
+(or (not x109) (not x110) (not x2765) (not x2012) x2794)
+(or (not x2794) x109)
+(or (not x2794) x110)
+(or (not x2794) x2765)
+(or (not x2794) x2012)
+(or x2795 (not x2794))
+(or x2795 (not x2793))
+(or x2795 (not x2771))
+(or x2794 x2793 x2771 (not x2795))
+(or (not x2795) (not x2012) x2796)
+(or (not x2796) x2795)
+(or (not x2796) x2012)
+(or (not x2764) (not x2783) (not x2012) x2797)
+(or (not x2797) x2764)
+(or (not x2797) x2783)
+(or (not x2797) x2012)
+(or (not x2767) (not x2752) (not x2798) x2799)
+(or (not x2799) x2767)
+(or (not x2799) x2752)
+(or (not x2799) x2798)
+(or x2800 (not x2799))
+(or x2800 (not x2797))
+(or x2799 x2797 (not x2800))
+(or (not x2554) (not x2012) (not x110) (not x117) (not x2751) (not x2800) x2801)
+(or (not x2801) x2554)
+(or (not x2801) x2012)
+(or (not x2801) x110)
+(or (not x2801) x117)
+(or (not x2801) x2751)
+(or (not x2801) x2800)
+(or (not x2772) (not x2567) (not x2562) (not x2012) (not x2551) x2564 (not x2783) (not x2012) x2802)
+(or (not x2802) x2772)
+(or (not x2802) x2567)
+(or (not x2802) x2562)
+(or (not x2802) x2012)
+(or (not x2802) x2551)
+(or (not x2802) (not x2564))
+(or (not x2802) x2783)
+(or (not x2802) x2012)
+(or x2734 x2740 x2776)
+(or x2734 (not x2740) (not x2776))
+(or (not x2734) x2740 (not x2776))
+(or (not x2734) (not x2740) x2776)
+(or (not x2777) (not x2734) x2803)
+(or (not x2803) x2777)
+(or (not x2803) x2734)
+(or x2804 (not x2780))
+(or x2804 (not x2803))
+(or x2780 x2803 (not x2804))
+(or (not x2781) (not x2804) x2805)
+(or (not x2805) x2781)
+(or (not x2805) x2804)
+(or x2798 x2557 x2556)
+(or x2798 (not x2557) (not x2556))
+(or (not x2798) x2557 (not x2556))
+(or (not x2798) (not x2557) x2556)
+(or (not x2567) (not x2562) (not x2012) (not x2551) x2564 (not x2787) (not x2798) x2806)
+(or (not x2806) x2567)
+(or (not x2806) x2562)
+(or (not x2806) x2012)
+(or (not x2806) x2551)
+(or (not x2806) (not x2564))
+(or (not x2806) x2787)
+(or (not x2806) x2798)
+(or x2807 (not x2806))
+(or x2807 (not x2805))
+(or x2806 x2805 (not x2807))
+(or (not x2790) (not x2807) x2808)
+(or (not x2808) x2790)
+(or (not x2808) x2807)
+(or x2809 (not x2808))
+(or x2809 (not x2802))
+(or x2808 x2802 (not x2809))
+(or (not x109) (not x2560) (not x2012) (not x117) (not x2809) x2810)
+(or (not x2810) x109)
+(or (not x2810) x2560)
+(or (not x2810) x2012)
+(or (not x2810) x117)
+(or (not x2810) x2809)
+(or (not x109) (not x110) (not x2783) (not x2012) x2811)
+(or (not x2811) x109)
+(or (not x2811) x110)
+(or (not x2811) x2783)
+(or (not x2811) x2012)
+(or x2812 (not x2811))
+(or x2812 (not x2810))
+(or x2812 (not x2801))
+(or x2811 x2810 x2801 (not x2812))
+(or (not x2812) (not x2012) x2813)
+(or (not x2813) x2812)
+(or (not x2813) x2012)
+(or (not x2814) (not x2815) (not x2816) (not x2752) x2817)
+(or (not x2817) x2814)
+(or (not x2817) x2815)
+(or (not x2817) x2816)
+(or (not x2817) x2752)
+(or x2764 (not x2817))
+(or x2764 (not x2559))
+(or x2817 x2559 (not x2764))
+(or (not x2764) (not x2784) (not x2012) x2818)
+(or (not x2818) x2764)
+(or (not x2818) x2784)
+(or (not x2818) x2012)
+(or (not x2549) (not x2012) (not x2550) (not x2551) (not x2552) x2542 x2819)
+(or (not x2819) x2549)
+(or (not x2819) x2012)
+(or (not x2819) x2550)
+(or (not x2819) x2551)
+(or (not x2819) x2552)
+(or (not x2819) (not x2542))
+(or (not x2551) (not x2552) (not x2717) x2570)
+(or (not x2570) x2551)
+(or (not x2570) x2552)
+(or (not x2570) x2717)
+(or x2752 (not x2570))
+(or x2752 (not x2563))
+(or x2752 (not x2820))
+(or x2752 (not x2819))
+(or x2570 x2563 x2820 x2819 (not x2752))
+(or (not x2767) (not x2752) (not x2814) x2821)
+(or (not x2821) x2767)
+(or (not x2821) x2752)
+(or (not x2821) x2814)
+(or x2822 (not x2821))
+(or x2822 (not x2818))
+(or x2821 x2818 (not x2822))
+(or (not x2554) (not x2012) (not x110) (not x117) (not x2751) (not x2822) x2823)
+(or (not x2823) x2554)
+(or (not x2823) x2012)
+(or (not x2823) x110)
+(or (not x2823) x117)
+(or (not x2823) x2751)
+(or (not x2823) x2822)
+(or x2816 x2765)
+(or x2816 x2012)
+(or (not x2765) (not x2012) (not x2816))
+(or x2815 x2783)
+(or x2815 x2012)
+(or (not x2783) (not x2012) (not x2815))
+(or (not x2814) (not x2815) (not x2816) x2824)
+(or (not x2824) x2814)
+(or (not x2824) x2815)
+(or (not x2824) x2816)
+(or x2772 (not x2561))
+(or x2772 x2562)
+(or x2772 x2012)
+(or x2772 (not x2563))
+(or x2772 (not x2564))
+(or x2772 (not x2824))
+(or x2561 (not x2562) (not x2012) x2563 x2564 x2824 (not x2772))
+(or (not x2772) (not x2567) (not x2562) (not x2012) (not x2551) x2564 (not x2784) (not x2012) x2825)
+(or (not x2825) x2772)
+(or (not x2825) x2567)
+(or (not x2825) x2562)
+(or (not x2825) x2012)
+(or (not x2825) x2551)
+(or (not x2825) (not x2564))
+(or (not x2825) x2784)
+(or (not x2825) x2012)
+(or x2758 x2677)
+(or x2758 x2012)
+(or x2758 x2676)
+(or x2758 x2012)
+(or (not x2677) (not x2012) (not x2676) (not x2012) (not x2758))
+(or x2777 x2678)
+(or x2777 x2012)
+(or x2777 x2677)
+(or x2777 x2012)
+(or x2777 x2676)
+(or x2777 x2012)
+(or (not x2678) (not x2012) (not x2677) (not x2012) (not x2676) (not x2012) (not x2777))
+(or (not x2777) (not x2699) x2826)
+(or (not x2826) x2777)
+(or (not x2826) x2699)
+(or (not x2677) (not x2012) (not x2676) (not x2012) x2775)
+(or (not x2775) x2677)
+(or (not x2775) x2012)
+(or (not x2775) x2676)
+(or (not x2775) x2012)
+(or (not x2678) (not x2012) (not x2677) (not x2012) (not x2676) (not x2012) x2780)
+(or (not x2780) x2678)
+(or (not x2780) x2012)
+(or (not x2780) x2677)
+(or (not x2780) x2012)
+(or (not x2780) x2676)
+(or (not x2780) x2012)
+(or x2827 (not x2780))
+(or x2827 (not x2826))
+(or x2780 x2826 (not x2827))
+(or (not x2781) (not x2827) x2828)
+(or (not x2828) x2781)
+(or (not x2828) x2827)
+(or x2814 x2784)
+(or x2814 x2012)
+(or (not x2784) (not x2012) (not x2814))
+(or (not x2567) (not x2562) (not x2012) (not x2551) x2564 (not x2787) (not x2814) x2829)
+(or (not x2829) x2567)
+(or (not x2829) x2562)
+(or (not x2829) x2012)
+(or (not x2829) x2551)
+(or (not x2829) (not x2564))
+(or (not x2829) x2787)
+(or (not x2829) x2814)
+(or x2830 (not x2829))
+(or x2830 (not x2828))
+(or x2829 x2828 (not x2830))
+(or x2790 (not x2831))
+(or x2790 (not x2561))
+(or x2790 x2562)
+(or x2790 x2012)
+(or x2790 (not x2563))
+(or x2790 (not x2564))
+(or x2831 x2561 (not x2562) (not x2012) x2563 x2564 (not x2790))
+(or (not x2790) (not x2830) x2832)
+(or (not x2832) x2790)
+(or (not x2832) x2830)
+(or x2833 (not x2832))
+(or x2833 (not x2825))
+(or x2832 x2825 (not x2833))
+(or (not x109) (not x2560) (not x2012) (not x117) (not x2833) x2834)
+(or (not x2834) x109)
+(or (not x2834) x2560)
+(or (not x2834) x2012)
+(or (not x2834) x117)
+(or (not x2834) x2833)
+(or (not x109) (not x110) (not x2784) (not x2012) x2835)
+(or (not x2835) x109)
+(or (not x2835) x110)
+(or (not x2835) x2784)
+(or (not x2835) x2012)
+(or x2836 (not x2835))
+(or x2836 (not x2834))
+(or x2836 (not x2823))
+(or x2835 x2834 x2823 (not x2836))
+(or (not x2836) (not x2012) x2837)
+(or (not x2837) x2836)
+(or (not x2837) x2012)
+(or (not x2554) (not x2012) (not x110) (not x117) (not x2751) (not x2767) (not x2560) (not x2012) x2838)
+(or (not x2838) x2554)
+(or (not x2838) x2012)
+(or (not x2838) x110)
+(or (not x2838) x117)
+(or (not x2838) x2751)
+(or (not x2838) x2767)
+(or (not x2838) x2560)
+(or (not x2838) x2012)
+(or (not x109) (not x2560) (not x2012) (not x117) (not x2781) (not x2560) (not x2012) x2839)
+(or (not x2839) x109)
+(or (not x2839) x2560)
+(or (not x2839) x2012)
+(or (not x2839) x117)
+(or (not x2839) x2781)
+(or (not x2839) x2560)
+(or (not x2839) x2012)
+(or (not x2676) (not x2012) x2776)
+(or (not x2776) x2676)
+(or (not x2776) x2012)
+(or (not x2840) (not x2676) (not x2012) x2841)
+(or (not x2841) x2840)
+(or (not x2841) x2676)
+(or (not x2841) x2012)
+(or x2842 (not x2740))
+(or x2842 (not x2841))
+(or x2740 x2841 (not x2842))
+(or (not x2843) (not x2842) x2844)
+(or (not x2844) x2843)
+(or (not x2844) x2842)
+(or x2845 (not x2757))
+(or x2845 (not x2844))
+(or x2845 (not x1994))
+(or x2757 x2844 x1994 (not x2845))
+(or (not x109) (not x110) (not x2845) x2846)
+(or (not x2846) x109)
+(or (not x2846) x110)
+(or (not x2846) x2845)
+(or x2847 (not x2846))
+(or x2847 (not x2839))
+(or x2847 (not x2838))
+(or x2846 x2839 x2838 (not x2847))
+(or (not x2847) (not x2012) x2848)
+(or (not x2848) x2847)
+(or (not x2848) x2012)
+(or x2717 x2549)
+(or x2717 x2012)
+(or x2717 (not x2580))
+(or (not x2549) (not x2012) x2580 (not x2717))
+(or x2849 x2549)
+(or x2849 x2012)
+(or x2849 (not x2580))
+(or x2849 (not x2563))
+(or x2849 (not x2581))
+(or x2849 (not x2542))
+(or (not x2549) (not x2012) x2580 x2563 x2581 x2542 (not x2849))
+(or (not x2549) (not x2012) (not x2550) x2850)
+(or (not x2850) x2549)
+(or (not x2850) x2012)
+(or (not x2850) x2550)
+(or x2851 (not x2563))
+(or x2851 (not x2581))
+(or x2851 (not x2850))
+(or x2563 x2581 x2850 (not x2851))
+(or (not x2851) (not x2551) (not x2852) (not x2849) x2559)
+(or (not x2559) x2851)
+(or (not x2559) x2551)
+(or (not x2559) x2852)
+(or (not x2559) x2849)
+(or x2767 (not x2556))
+(or x2767 (not x2557))
+(or x2767 (not x2558))
+(or x2767 (not x2559))
+(or x2556 x2557 x2558 x2559 (not x2767))
+(or x2751 (not x1993))
+(or x2751 x2560)
+(or x2751 x2012)
+(or x1993 (not x2560) (not x2012) (not x2751))
+(or (not x2554) (not x2012) (not x110) (not x117) (not x2751) (not x2767) (not x2554) (not x2012) x2853)
+(or (not x2853) x2554)
+(or (not x2853) x2012)
+(or (not x2853) x110)
+(or (not x2853) x117)
+(or (not x2853) x2751)
+(or (not x2853) x2767)
+(or (not x2853) x2554)
+(or (not x2853) x2012)
+(or (not x2567) (not x2550) x2563)
+(or (not x2563) x2567)
+(or (not x2563) x2550)
+(or x2550 x2562)
+(or x2550 x2012)
+(or (not x2562) (not x2012) (not x2550))
+(or x2552 (not x2561))
+(or x2552 x2562)
+(or x2552 x2012)
+(or x2561 (not x2562) (not x2012) (not x2552))
+(or x2852 (not x2561))
+(or x2852 x2562)
+(or x2852 x2012)
+(or x2852 (not x2563))
+(or x2561 (not x2562) (not x2012) x2563 (not x2852))
+(or x2781 (not x2561))
+(or x2781 x2562)
+(or x2781 x2012)
+(or x2781 (not x2563))
+(or x2781 (not x2564))
+(or x2561 (not x2562) (not x2012) x2563 x2564 (not x2781))
+(or (not x2781) (not x2554) (not x2012) x2854)
+(or (not x2854) x2781)
+(or (not x2854) x2554)
+(or (not x2854) x2012)
+(or (not x2765) (not x2012) x2558)
+(or (not x2558) x2765)
+(or (not x2558) x2012)
+(or (not x2783) (not x2012) x2557)
+(or (not x2557) x2783)
+(or (not x2557) x2012)
+(or (not x2784) (not x2012) x2556)
+(or (not x2556) x2784)
+(or (not x2556) x2012)
+(or x2787 (not x2556))
+(or x2787 (not x2557))
+(or x2787 (not x2558))
+(or x2556 x2557 x2558 (not x2787))
+(or (not x2549) (not x2012) x2561)
+(or (not x2561) x2549)
+(or (not x2561) x2012)
+(or x2551 (not x2561))
+(or x2551 (not x2580))
+(or x2561 x2580 (not x2551))
+(or (not x2562) (not x2012) x2580)
+(or (not x2580) x2562)
+(or (not x2580) x2012)
+(or x2567 x2549)
+(or x2567 x2012)
+(or (not x2549) (not x2012) (not x2567))
+(or (not x2567) (not x2562) (not x2012) x2581)
+(or (not x2581) x2567)
+(or (not x2581) x2562)
+(or (not x2581) x2012)
+(or (not x2567) (not x2562) (not x2012) (not x2551) x2820)
+(or (not x2820) x2567)
+(or (not x2820) x2562)
+(or (not x2820) x2012)
+(or (not x2820) x2551)
+(or (not x2567) (not x2562) (not x2012) (not x2551) x2564 (not x2787) x2831)
+(or (not x2831) x2567)
+(or (not x2831) x2562)
+(or (not x2831) x2012)
+(or (not x2831) x2551)
+(or (not x2831) (not x2564))
+(or (not x2831) x2787)
+(or x2855 (not x2831))
+(or x2855 (not x2854))
+(or x2831 x2854 (not x2855))
+(or x117 (not x1993))
+(or x117 (not x1994))
+(or x1993 x1994 (not x117))
+(or (not x2560) (not x2012) x1994)
+(or (not x1994) x2560)
+(or (not x1994) x2012)
+(or (not x109) (not x2560) (not x2012) x2555)
+(or (not x2555) x109)
+(or (not x2555) x2560)
+(or (not x2555) x2012)
+(or (not x109) (not x2560) (not x2012) (not x117) (not x2855) x2856)
+(or (not x2856) x109)
+(or (not x2856) x2560)
+(or (not x2856) x2012)
+(or (not x2856) x117)
+(or (not x2856) x2855)
+(or (not x2554) (not x2012) x1993)
+(or (not x1993) x2554)
+(or (not x1993) x2012)
+(or x2699 x2676)
+(or x2699 x2012)
+(or (not x2676) (not x2012) (not x2699))
+(or (not x2677) (not x2012) x2740)
+(or (not x2740) x2677)
+(or (not x2740) x2012)
+(or x2857 (not x2740))
+(or x2857 x2676)
+(or x2857 x2012)
+(or x2740 (not x2676) (not x2012) (not x2857))
+(or x2840 x2677)
+(or x2840 x2012)
+(or (not x2677) (not x2012) (not x2840))
+(or (not x2840) (not x2857) x2858)
+(or (not x2858) x2840)
+(or (not x2858) x2857)
+(or (not x2678) (not x2012) x2757)
+(or (not x2757) x2678)
+(or (not x2757) x2012)
+(or x2859 (not x2757))
+(or x2859 (not x2858))
+(or x2757 x2858 (not x2859))
+(or x2843 x2678)
+(or x2843 x2012)
+(or (not x2678) (not x2012) (not x2843))
+(or x110 x2560)
+(or x110 x2012)
+(or (not x2560) (not x2012) (not x110))
+(or x109 x2554)
+(or x109 x2012)
+(or (not x2554) (not x2012) (not x109))
+(or (not x109) (not x110) x1968)
+(or (not x1968) x109)
+(or (not x1968) x110)
+(or (not x109) (not x110) (not x2843) (not x2859) (not x2554) (not x2012) x2860)
+(or (not x2860) x109)
+(or (not x2860) x110)
+(or (not x2860) x2843)
+(or (not x2860) x2859)
+(or (not x2860) x2554)
+(or (not x2860) x2012)
+(or x2861 (not x2860))
+(or x2861 (not x2856))
+(or x2861 (not x2853))
+(or x2860 x2856 x2853 (not x2861))
+(or (not x2861) (not x2012) x2862)
+(or (not x2862) x2861)
+(or (not x2862) x2012)
+(or x2863 (not x2013))
+(or x2863 (not x2012))
+(or x2013 x2012 (not x2863))
+(or x2013 x2012 x2864)
+(or (not x2864) (not x2013))
+(or (not x2864) (not x2012))
+(or x2865 (not x2864))
+(or x2865 (not x2013))
+(or x2865 x2012)
+(or x2864 x2013 (not x2012) (not x2865))
+(or (not x2866) (not x107))
+(or (not x2866) x106)
+(or (not x2866) (not x105))
+(or (not x2866) x104)
+(or (not x2866) x103)
+(or (not x2867) (not x107))
+(or (not x2867) x106)
+(or (not x2867) (not x105))
+(or (not x2867) x104)
+(or (not x2867) (not x103))
+(or (not x2868) (not x107))
+(or (not x2868) x106)
+(or (not x2868) (not x105))
+(or (not x2868) (not x104))
+(or (not x2868) x103)
+(or (not x2869) (not x107))
+(or (not x2869) x106)
+(or (not x2869) (not x105))
+(or (not x2869) (not x104))
+(or (not x2869) (not x103))
+(or (not x2870) (not x107))
+(or (not x2870) (not x106))
+(or (not x2870) x105)
+(or (not x2870) x104)
+(or (not x2870) x103)
+(or (not x2871) (not x107))
+(or (not x2871) (not x106))
+(or (not x2871) x105)
+(or (not x2871) x104)
+(or (not x2871) (not x103))
+(or (not x2872) (not x107))
+(or (not x2872) (not x106))
+(or (not x2872) x105)
+(or (not x2872) (not x104))
+(or (not x2872) x103)
+(or (not x2873) (not x107))
+(or (not x2873) (not x106))
+(or (not x2873) x105)
+(or (not x2873) (not x104))
+(or (not x2873) (not x103))
+(or (not x2874) (not x107))
+(or (not x2874) (not x106))
+(or (not x2874) (not x105))
+(or (not x2874) x104)
+(or (not x2874) x103)
+(or (not x2875) (not x107))
+(or (not x2875) (not x106))
+(or (not x2875) (not x105))
+(or (not x2875) x104)
+(or (not x2875) (not x103))
+(or x107 x106 x105 x104 (not x103) x1966)
+(or (not x1966) (not x107))
+(or (not x1966) (not x106))
+(or (not x1966) (not x105))
+(or (not x1966) (not x104))
+(or (not x1966) x103)
+(or (not x2876) (not x107))
+(or (not x2876) (not x106))
+(or (not x2876) (not x105))
+(or (not x2876) (not x104))
+(or (not x2876) (not x103))
+(or x2877 (not x2876))
+(or x2877 (not x1966))
+(or x2877 (not x2875))
+(or x2877 (not x2874))
+(or x2877 (not x2873))
+(or x2877 (not x2872))
+(or x2877 (not x2871))
+(or x2877 (not x2870))
+(or x2877 (not x2869))
+(or x2877 (not x2868))
+(or x2877 (not x2867))
+(or x2876 x1966 x2875 x2874 x2873 x2872 x2871 x2870 x2869 x2868 x2867 (not x2877))
+(or (not x2878) (not x2879) (not x2880) (not x2881) (not x2882) (not x2883) (not x2884) (not x2885) x2886)
+(or (not x2886) x2878)
+(or (not x2886) x2879)
+(or (not x2886) x2880)
+(or (not x2886) x2881)
+(or (not x2886) x2882)
+(or (not x2886) x2883)
+(or (not x2886) x2884)
+(or (not x2886) x2885)
+(or x2887 (not x2888))
+(or x2887 x2889)
+(or x2888 (not x2889) (not x2887))
+(or x2888 (not x2887) (not x2890) x2891)
+(or (not x2891) (not x2888))
+(or (not x2891) x2887)
+(or (not x2891) x2890)
+(or x2880 (not x2892))
+(or x2880 (not x2893))
+(or x2880 (not x126))
+(or x2880 (not x125))
+(or x2880 (not x124))
+(or x2880 x123)
+(or x2880 x122)
+(or x2880 (not x2894))
+(or x2880 (not x2891))
+(or x2892 x2893 x126 x125 x124 (not x123) (not x122) x2894 x2891 (not x2880))
+(or x2895 (not x2896))
+(or x2895 x2897)
+(or x2896 (not x2897) (not x2895))
+(or x2896 (not x2895) (not x2898) x2899)
+(or (not x2899) (not x2896))
+(or (not x2899) x2895)
+(or (not x2899) x2898)
+(or x2879 (not x2892))
+(or x2879 (not x126))
+(or x2879 (not x125))
+(or x2879 (not x124))
+(or x2879 x123)
+(or x2879 (not x122))
+(or x2879 (not x2900))
+(or x2879 (not x2894))
+(or x2879 (not x2899))
+(or x2892 x126 x125 x124 (not x123) x122 x2900 x2894 x2899 (not x2879))
+(or x2901 (not x2902) x2903)
+(or (not x2903) (not x2901))
+(or (not x2903) x2902)
+(or x2904 (not x126))
+(or x2904 (not x125))
+(or x2904 (not x124))
+(or x2904 (not x123))
+(or x2904 x122)
+(or x2904 (not x2903))
+(or x126 x125 x124 x123 (not x122) x2903 (not x2904))
+(or (not x2904) (not x2879) (not x2880) (not x2881) (not x2882) (not x2885) x2905)
+(or (not x2905) x2904)
+(or (not x2905) x2879)
+(or (not x2905) x2880)
+(or (not x2905) x2881)
+(or (not x2905) x2882)
+(or (not x2905) x2885)
+(or x2890 (not x2888))
+(or x2890 (not x2889))
+(or x2888 x2889 (not x2890))
+(or x2906 (not x2892))
+(or x2906 (not x2893))
+(or x2906 (not x126))
+(or x2906 (not x125))
+(or x2906 (not x124))
+(or x2906 x123)
+(or x2906 x122)
+(or x2906 (not x2894))
+(or x2906 (not x2888))
+(or x2906 (not x2889))
+(or x2892 x2893 x126 x125 x124 (not x123) (not x122) x2894 x2888 x2889 (not x2906))
+(or x2898 (not x2896))
+(or x2898 (not x2897))
+(or x2896 x2897 (not x2898))
+(or x2907 (not x2892))
+(or x2907 (not x126))
+(or x2907 (not x125))
+(or x2907 (not x124))
+(or x2907 x123)
+(or x2907 (not x122))
+(or x2907 (not x2900))
+(or x2907 (not x2894))
+(or x2907 (not x2896))
+(or x2907 (not x2897))
+(or x2892 x126 x125 x124 (not x123) x122 x2900 x2894 x2896 x2897 (not x2907))
+(or x2908 (not x2901))
+(or x2908 (not x2909))
+(or x2908 x2910)
+(or x2901 x2909 (not x2910) (not x2908))
+(or x2901 (not x2911) (not x2908) (not x2902) x2912)
+(or (not x2912) (not x2901))
+(or (not x2912) x2911)
+(or (not x2912) x2908)
+(or (not x2912) x2902)
+(or x2878 (not x126))
+(or x2878 (not x125))
+(or x2878 (not x124))
+(or x2878 (not x123))
+(or x2878 x122)
+(or x2878 (not x2912))
+(or x126 x125 x124 x123 (not x122) x2912 (not x2878))
+(or (not x2878) (not x2907) (not x2906) (not x2883) (not x2884) (not x2885) x2913)
+(or (not x2913) x2878)
+(or (not x2913) x2907)
+(or (not x2913) x2906)
+(or (not x2913) x2883)
+(or (not x2913) x2884)
+(or (not x2913) x2885)
+(or x2914 (not x2892))
+(or x2914 (not x2893))
+(or x2914 (not x2915))
+(or x2914 (not x2916))
+(or x2914 (not x2917))
+(or x2914 (not x2918))
+(or x2914 (not x126))
+(or x2914 x125)
+(or x2914 (not x124))
+(or x2914 (not x123))
+(or x2914 x122)
+(or x2914 (not x130))
+(or x2914 (not x131))
+(or x2914 (not x132))
+(or x2914 (not x133))
+(or x2914 (not x134))
+(or x2914 (not x135))
+(or x2914 (not x2919))
+(or x2914 (not x2920))
+(or x2914 (not x2921))
+(or x2892 x2893 x2915 x2916 x2917 x2918 x126 (not x125) x124 x123 (not x122) x130 x131 x132 x133 x134 x135 x2919 x2920 x2921 (not x2914))
+(or x2922 (not x2892))
+(or x2922 (not x2893))
+(or x2922 (not x2915))
+(or x2922 (not x2916))
+(or x2922 (not x2917))
+(or x2922 (not x126))
+(or x2922 x125)
+(or x2922 (not x124))
+(or x2922 (not x123))
+(or x2922 (not x122))
+(or x2922 (not x2900))
+(or x2922 (not x2919))
+(or x2922 (not x2920))
+(or x2922 (not x130))
+(or x2922 (not x131))
+(or x2922 (not x132))
+(or x2922 (not x133))
+(or x2922 (not x134))
+(or x2922 (not x135))
+(or x2922 (not x2919))
+(or x2922 (not x2920))
+(or x2922 (not x2923))
+(or x2892 x2893 x2915 x2916 x2917 x126 (not x125) x124 x123 x122 x2900 x2919 x2920 x130 x131 x132 x133 x134 x135 x2919 x2920 x2923 (not x2922))
+(or x2924 (not x2892))
+(or x2924 (not x2893))
+(or x2924 (not x2915))
+(or x2924 (not x2916))
+(or x2924 (not x126))
+(or x2924 (not x125))
+(or x2924 x124)
+(or x2924 (not x123))
+(or x2924 x122)
+(or x2924 (not x130))
+(or x2924 (not x131))
+(or x2924 (not x132))
+(or x2924 (not x133))
+(or x2924 (not x134))
+(or x2924 (not x135))
+(or x2924 (not x2919))
+(or x2924 (not x2920))
+(or x2924 (not x2925))
+(or x2892 x2893 x2915 x2916 x126 x125 (not x124) x123 (not x122) x130 x131 x132 x133 x134 x135 x2919 x2920 x2925 (not x2924))
+(or x2926 (not x2892))
+(or x2926 (not x2893))
+(or x2926 (not x2915))
+(or x2926 (not x126))
+(or x2926 (not x125))
+(or x2926 x124)
+(or x2926 (not x123))
+(or x2926 (not x122))
+(or x2926 (not x2919))
+(or x2926 (not x2920))
+(or x2926 (not x130))
+(or x2926 (not x131))
+(or x2926 (not x132))
+(or x2926 (not x133))
+(or x2926 (not x134))
+(or x2926 (not x135))
+(or x2926 (not x2919))
+(or x2926 (not x2920))
+(or x2926 (not x2927))
+(or x2892 x2893 x2915 x126 x125 (not x124) x123 x122 x2919 x2920 x130 x131 x132 x133 x134 x135 x2919 x2920 x2927 (not x2926))
+(or x2902 (not x2901))
+(or x2902 (not x2909))
+(or x2902 (not x2910))
+(or x2901 x2909 x2910 (not x2902))
+(or (not x2911) (not x2902) x2928)
+(or (not x2928) x2911)
+(or (not x2928) x2902)
+(or x2929 (not x126))
+(or x2929 (not x125))
+(or x2929 (not x124))
+(or x2929 (not x123))
+(or x2929 x122)
+(or x2929 (not x2928))
+(or x126 x125 x124 x123 (not x122) x2928 (not x2929))
+(or (not x2929) (not x2930) (not x2931) (not x2926) (not x2924) (not x2922) (not x2914) (not x2885) x2932)
+(or (not x2932) x2929)
+(or (not x2932) x2930)
+(or (not x2932) x2931)
+(or (not x2932) x2926)
+(or (not x2932) x2924)
+(or (not x2932) x2922)
+(or (not x2932) x2914)
+(or (not x2932) x2885)
+(or x126 (not x125) x124 x123 (not x122) x130 x131 x132 x133 x134 x135 (not x128) (not x129) x2933)
+(or (not x2933) (not x126))
+(or (not x2933) x125)
+(or (not x2933) (not x124))
+(or (not x2933) (not x123))
+(or (not x2933) x122)
+(or (not x2933) (not x130))
+(or (not x2933) (not x131))
+(or (not x2933) (not x132))
+(or (not x2933) (not x133))
+(or (not x2933) (not x134))
+(or (not x2933) (not x135))
+(or (not x2933) x128)
+(or (not x2933) x129)
+(or x2885 (not x2892))
+(or x2885 (not x2893))
+(or x2885 (not x2915))
+(or x2885 (not x2916))
+(or x2885 (not x2917))
+(or x2885 (not x2918))
+(or x2885 (not x2933))
+(or x2892 x2893 x2915 x2916 x2917 x2918 x2933 (not x2885))
+(or x126 (not x125) x124 x123 x122 (not x127) (not x128) (not x129) x130 x131 x132 x133 x134 x135 (not x128) (not x129) x2918)
+(or (not x2918) (not x126))
+(or (not x2918) x125)
+(or (not x2918) (not x124))
+(or (not x2918) (not x123))
+(or (not x2918) (not x122))
+(or (not x2918) x127)
+(or (not x2918) x128)
+(or (not x2918) x129)
+(or (not x2918) (not x130))
+(or (not x2918) (not x131))
+(or (not x2918) (not x132))
+(or (not x2918) (not x133))
+(or (not x2918) (not x134))
+(or (not x2918) (not x135))
+(or (not x2918) x128)
+(or (not x2918) x129)
+(or x2884 (not x2892))
+(or x2884 (not x2893))
+(or x2884 (not x2915))
+(or x2884 (not x2916))
+(or x2884 (not x2917))
+(or x2884 (not x2918))
+(or x2884 (not x126))
+(or x2884 x125)
+(or x2884 (not x124))
+(or x2884 (not x123))
+(or x2884 x122)
+(or x2884 (not x130))
+(or x2884 (not x131))
+(or x2884 (not x132))
+(or x2884 (not x133))
+(or x2884 (not x134))
+(or x2884 (not x135))
+(or x2884 (not x2919))
+(or x2884 (not x2920))
+(or x2892 x2893 x2915 x2916 x2917 x2918 x126 (not x125) x124 x123 (not x122) x130 x131 x132 x133 x134 x135 x2919 x2920 (not x2884))
+(or x2934 (not x2892))
+(or x2934 (not x2893))
+(or x2934 (not x2915))
+(or x2934 (not x2916))
+(or x2934 (not x2917))
+(or x2934 (not x2918))
+(or x2934 (not x126))
+(or x2934 x125)
+(or x2934 (not x124))
+(or x2934 (not x123))
+(or x2934 x122)
+(or x2934 (not x130))
+(or x2934 (not x131))
+(or x2934 (not x132))
+(or x2934 (not x133))
+(or x2934 (not x134))
+(or x2934 (not x135))
+(or x2934 (not x2919))
+(or x2934 (not x2920))
+(or x2934 x2921)
+(or x2892 x2893 x2915 x2916 x2917 x2918 x126 (not x125) x124 x123 (not x122) x130 x131 x132 x133 x134 x135 x2919 x2920 (not x2921) (not x2934))
+(or x126 x125 (not x124) x123 (not x122) x130 x131 x132 x133 x134 x135 (not x128) (not x129) x2917)
+(or (not x2917) (not x126))
+(or (not x2917) (not x125))
+(or (not x2917) x124)
+(or (not x2917) (not x123))
+(or (not x2917) x122)
+(or (not x2917) (not x130))
+(or (not x2917) (not x131))
+(or (not x2917) (not x132))
+(or (not x2917) (not x133))
+(or (not x2917) (not x134))
+(or (not x2917) (not x135))
+(or (not x2917) x128)
+(or (not x2917) x129)
+(or x2883 (not x2892))
+(or x2883 (not x2893))
+(or x2883 (not x2915))
+(or x2883 (not x2916))
+(or x2883 (not x2917))
+(or x2883 (not x126))
+(or x2883 x125)
+(or x2883 (not x124))
+(or x2883 (not x123))
+(or x2883 (not x122))
+(or x2883 (not x2900))
+(or x2883 (not x2919))
+(or x2883 (not x2920))
+(or x2883 (not x130))
+(or x2883 (not x131))
+(or x2883 (not x132))
+(or x2883 (not x133))
+(or x2883 (not x134))
+(or x2883 (not x135))
+(or x2883 (not x2919))
+(or x2883 (not x2920))
+(or x2892 x2893 x2915 x2916 x2917 x126 (not x125) x124 x123 x122 x2900 x2919 x2920 x130 x131 x132 x133 x134 x135 x2919 x2920 (not x2883))
+(or x2935 (not x2892))
+(or x2935 (not x2893))
+(or x2935 (not x2915))
+(or x2935 (not x2916))
+(or x2935 (not x2917))
+(or x2935 (not x126))
+(or x2935 x125)
+(or x2935 (not x124))
+(or x2935 (not x123))
+(or x2935 (not x122))
+(or x2935 (not x2900))
+(or x2935 (not x2919))
+(or x2935 (not x2920))
+(or x2935 (not x130))
+(or x2935 (not x131))
+(or x2935 (not x132))
+(or x2935 (not x133))
+(or x2935 (not x134))
+(or x2935 (not x135))
+(or x2935 (not x2919))
+(or x2935 (not x2920))
+(or x2935 x2923)
+(or x2892 x2893 x2915 x2916 x2917 x126 (not x125) x124 x123 x122 x2900 x2919 x2920 x130 x131 x132 x133 x134 x135 x2919 x2920 (not x2923) (not x2935))
+(or x126 x125 (not x124) x123 x122 (not x128) (not x129) x130 x131 x132 x133 x134 x135 (not x128) (not x129) x2916)
+(or (not x2916) (not x126))
+(or (not x2916) (not x125))
+(or (not x2916) x124)
+(or (not x2916) (not x123))
+(or (not x2916) (not x122))
+(or (not x2916) x128)
+(or (not x2916) x129)
+(or (not x2916) (not x130))
+(or (not x2916) (not x131))
+(or (not x2916) (not x132))
+(or (not x2916) (not x133))
+(or (not x2916) (not x134))
+(or (not x2916) (not x135))
+(or (not x2916) x128)
+(or (not x2916) x129)
+(or x2882 (not x2892))
+(or x2882 (not x2893))
+(or x2882 (not x2915))
+(or x2882 (not x2916))
+(or x2882 (not x126))
+(or x2882 (not x125))
+(or x2882 x124)
+(or x2882 (not x123))
+(or x2882 x122)
+(or x2882 (not x130))
+(or x2882 (not x131))
+(or x2882 (not x132))
+(or x2882 (not x133))
+(or x2882 (not x134))
+(or x2882 (not x135))
+(or x2882 (not x2919))
+(or x2882 (not x2920))
+(or x2892 x2893 x2915 x2916 x126 x125 (not x124) x123 (not x122) x130 x131 x132 x133 x134 x135 x2919 x2920 (not x2882))
+(or x2936 (not x2892))
+(or x2936 (not x2893))
+(or x2936 (not x2915))
+(or x2936 (not x2916))
+(or x2936 (not x126))
+(or x2936 (not x125))
+(or x2936 x124)
+(or x2936 (not x123))
+(or x2936 x122)
+(or x2936 (not x130))
+(or x2936 (not x131))
+(or x2936 (not x132))
+(or x2936 (not x133))
+(or x2936 (not x134))
+(or x2936 (not x135))
+(or x2936 (not x2919))
+(or x2936 (not x2920))
+(or x2936 x2925)
+(or x2892 x2893 x2915 x2916 x126 x125 (not x124) x123 (not x122) x130 x131 x132 x133 x134 x135 x2919 x2920 (not x2925) (not x2936))
+(or x126 x125 x124 (not x123) (not x122) (not x136) x2915)
+(or (not x2915) (not x126))
+(or (not x2915) (not x125))
+(or (not x2915) (not x124))
+(or (not x2915) x123)
+(or (not x2915) x122)
+(or (not x2915) x136)
+(or x2881 (not x2892))
+(or x2881 (not x2893))
+(or x2881 (not x2915))
+(or x2881 (not x126))
+(or x2881 (not x125))
+(or x2881 x124)
+(or x2881 (not x123))
+(or x2881 (not x122))
+(or x2881 (not x2919))
+(or x2881 (not x2920))
+(or x2881 (not x130))
+(or x2881 (not x131))
+(or x2881 (not x132))
+(or x2881 (not x133))
+(or x2881 (not x134))
+(or x2881 (not x135))
+(or x2881 (not x2919))
+(or x2881 (not x2920))
+(or x2892 x2893 x2915 x126 x125 (not x124) x123 x122 x2919 x2920 x130 x131 x132 x133 x134 x135 x2919 x2920 (not x2881))
+(or x2937 (not x2892))
+(or x2937 (not x2893))
+(or x2937 (not x2915))
+(or x2937 (not x126))
+(or x2937 (not x125))
+(or x2937 x124)
+(or x2937 (not x123))
+(or x2937 (not x122))
+(or x2937 (not x2919))
+(or x2937 (not x2920))
+(or x2937 (not x130))
+(or x2937 (not x131))
+(or x2937 (not x132))
+(or x2937 (not x133))
+(or x2937 (not x134))
+(or x2937 (not x135))
+(or x2937 (not x2919))
+(or x2937 (not x2920))
+(or x2937 x2927)
+(or x2892 x2893 x2915 x126 x125 (not x124) x123 x122 x2919 x2920 x130 x131 x132 x133 x134 x135 x2919 x2920 (not x2927) (not x2937))
+(or x127 x2938)
+(or x127 (not x2919))
+(or x127 (not x2920))
+(or (not x2938) x2919 x2920 (not x127))
+(or x126 x125 x124 (not x123) x122 (not x127) (not x136) x2893)
+(or (not x2893) (not x126))
+(or (not x2893) (not x125))
+(or (not x2893) (not x124))
+(or (not x2893) x123)
+(or (not x2893) (not x122))
+(or (not x2893) x127)
+(or (not x2893) x136)
+(or x2931 (not x2892))
+(or x2931 (not x2893))
+(or x2931 (not x126))
+(or x2931 (not x125))
+(or x2931 (not x124))
+(or x2931 x123)
+(or x2931 x122)
+(or x2931 (not x2894))
+(or x2931 x2888)
+(or x2892 x2893 x126 x125 x124 (not x123) (not x122) x2894 (not x2888) (not x2931))
+(or (not x2938) (not x128) (not x129) x2900)
+(or (not x2900) x2938)
+(or (not x2900) x128)
+(or (not x2900) x129)
+(or x2930 (not x2892))
+(or x2930 (not x126))
+(or x2930 (not x125))
+(or x2930 (not x124))
+(or x2930 x123)
+(or x2930 (not x122))
+(or x2930 (not x2900))
+(or x2930 (not x2894))
+(or x2930 x2896)
+(or x2892 x126 x125 x124 (not x123) x122 x2900 x2894 (not x2896) (not x2930))
+(or x2911 (not x2901))
+(or x2911 x2909)
+(or x2901 (not x2909) (not x2911))
+(or x2901 (not x2911) x2940)
+(or (not x2940) (not x2901))
+(or (not x2940) x2911)
+(or x2941 (not x126))
+(or x2941 (not x125))
+(or x2941 (not x124))
+(or x2941 (not x123))
+(or x2941 x122)
+(or x2941 (not x2940))
+(or x126 x125 x124 x123 (not x122) x2940 (not x2941))
+(or (not x2941) (not x2930) (not x2931) (not x2937) (not x2936) (not x2935) (not x2934) (not x2885) x2942)
+(or (not x2942) x2941)
+(or (not x2942) x2930)
+(or (not x2942) x2931)
+(or (not x2942) x2937)
+(or (not x2942) x2936)
+(or (not x2942) x2935)
+(or (not x2942) x2934)
+(or (not x2942) x2885)
+(or (not x2943) (not x2944) (not x2938) x2945)
+(or (not x2945) x2943)
+(or (not x2945) x2944)
+(or (not x2945) x2938)
+(or x2943 (not x2946) x2947)
+(or (not x2947) (not x2943))
+(or (not x2947) x2946)
+(or x2948 (not x2947))
+(or x2948 (not x2945))
+(or x2947 x2945 (not x2948))
+(or (not x2948) (not x2938) x2949)
+(or (not x2949) x2948)
+(or (not x2949) x2938)
+(or (not x2943) (not x2950) (not x2938) x2951)
+(or (not x2951) x2943)
+(or (not x2951) x2950)
+(or (not x2951) x2938)
+(or x2943 (not x2952) x2953)
+(or (not x2953) (not x2943))
+(or (not x2953) x2952)
+(or x2954 (not x2953))
+(or x2954 (not x2951))
+(or x2953 x2951 (not x2954))
+(or (not x2954) (not x2938) x2955)
+(or (not x2955) x2954)
+(or (not x2955) x2938)
+(or (not x2943) (not x2956) (not x2938) x2957)
+(or (not x2957) x2943)
+(or (not x2957) x2956)
+(or (not x2957) x2938)
+(or x2943 (not x2958) x2959)
+(or (not x2959) (not x2943))
+(or (not x2959) x2958)
+(or x2960 (not x2959))
+(or x2960 (not x2957))
+(or x2959 x2957 (not x2960))
+(or (not x2960) (not x2938) x2961)
+(or (not x2961) x2960)
+(or (not x2961) x2938)
+(or (not x2962) (not x2963) (not x2938) x2964)
+(or (not x2964) x2962)
+(or (not x2964) x2963)
+(or (not x2964) x2938)
+(or (not x2965) (not x131) x2966 x2967)
+(or (not x2967) x2965)
+(or (not x2967) x131)
+(or (not x2967) (not x2966))
+(or x2968 (not x2967))
+(or x2968 (not x2964))
+(or x2967 x2964 (not x2968))
+(or (not x2968) (not x2938) x2969)
+(or (not x2969) x2968)
+(or (not x2969) x2938)
+(or (not x2970) (not x2971) (not x2938) x2972)
+(or (not x2972) x2970)
+(or (not x2972) x2971)
+(or (not x2972) x2938)
+(or (not x2973) (not x130) x2974 x2975)
+(or (not x2975) x2973)
+(or (not x2975) x130)
+(or (not x2975) (not x2974))
+(or x2976 (not x2975))
+(or x2976 (not x2972))
+(or x2975 x2972 (not x2976))
+(or (not x2976) (not x2938) x2977)
+(or (not x2977) x2976)
+(or (not x2977) x2938)
+(or (not x2962) (not x2978) (not x2938) x2979)
+(or (not x2979) x2962)
+(or (not x2979) x2978)
+(or (not x2979) x2938)
+(or (not x2965) (not x131) x2980 x2981)
+(or (not x2981) x2965)
+(or (not x2981) x131)
+(or (not x2981) (not x2980))
+(or x2982 (not x2981))
+(or x2982 (not x2979))
+(or x2981 x2979 (not x2982))
+(or (not x2982) (not x2938) x2983)
+(or (not x2983) x2982)
+(or (not x2983) x2938)
+(or (not x2970) (not x2984) (not x2938) x2985)
+(or (not x2985) x2970)
+(or (not x2985) x2984)
+(or (not x2985) x2938)
+(or (not x2973) (not x130) x2986 x2987)
+(or (not x2987) x2973)
+(or (not x2987) x130)
+(or (not x2987) (not x2986))
+(or x2988 (not x2987))
+(or x2988 (not x2985))
+(or x2987 x2985 (not x2988))
+(or (not x2988) (not x2938) x2989)
+(or (not x2989) x2988)
+(or (not x2989) x2938)
+(or (not x2962) (not x2990) (not x2938) x2991)
+(or (not x2991) x2962)
+(or (not x2991) x2990)
+(or (not x2991) x2938)
+(or (not x2965) (not x131) x2992 x2993)
+(or (not x2993) x2965)
+(or (not x2993) x131)
+(or (not x2993) (not x2992))
+(or x2994 (not x2993))
+(or x2994 (not x2991))
+(or x2993 x2991 (not x2994))
+(or (not x2994) (not x2938) x2995)
+(or (not x2995) x2994)
+(or (not x2995) x2938)
+(or (not x2970) (not x2996) (not x2938) x2997)
+(or (not x2997) x2970)
+(or (not x2997) x2996)
+(or (not x2997) x2938)
+(or (not x2973) (not x130) x2998 x2999)
+(or (not x2999) x2973)
+(or (not x2999) x130)
+(or (not x2999) (not x2998))
+(or x3000 (not x2999))
+(or x3000 (not x2997))
+(or x2999 x2997 (not x3000))
+(or (not x3000) (not x2938) x3001)
+(or (not x3001) x3000)
+(or (not x3001) x2938)
+(or (not x2962) (not x3002) (not x2938) x3003)
+(or (not x3003) x2962)
+(or (not x3003) x3002)
+(or (not x3003) x2938)
+(or (not x2965) (not x131) (not x3004) x3005)
+(or (not x3005) x2965)
+(or (not x3005) x131)
+(or (not x3005) x3004)
+(or x3006 (not x3005))
+(or x3006 (not x3003))
+(or x3005 x3003 (not x3006))
+(or (not x3006) (not x2938) x3007)
+(or (not x3007) x3006)
+(or (not x3007) x2938)
+(or (not x2970) (not x3008) (not x2938) x3009)
+(or (not x3009) x2970)
+(or (not x3009) x3008)
+(or (not x3009) x2938)
+(or (not x2973) (not x130) (not x3010) x3011)
+(or (not x3011) x2973)
+(or (not x3011) x130)
+(or (not x3011) x3010)
+(or x3012 (not x3011))
+(or x3012 (not x3009))
+(or x3011 x3009 (not x3012))
+(or (not x3012) (not x2938) x3013)
+(or (not x3013) x3012)
+(or (not x3013) x2938)
+(or (not x2962) (not x3014) (not x2938) x3015)
+(or (not x3015) x2962)
+(or (not x3015) x3014)
+(or (not x3015) x2938)
+(or (not x2965) (not x131) x3016 x3017)
+(or (not x3017) x2965)
+(or (not x3017) x131)
+(or (not x3017) (not x3016))
+(or x3018 (not x3017))
+(or x3018 (not x3015))
+(or x3017 x3015 (not x3018))
+(or (not x3018) (not x2938) x3019)
+(or (not x3019) x3018)
+(or (not x3019) x2938)
+(or (not x2970) (not x3020) (not x2938) x3021)
+(or (not x3021) x2970)
+(or (not x3021) x3020)
+(or (not x3021) x2938)
+(or (not x2973) (not x130) x3022 x3023)
+(or (not x3023) x2973)
+(or (not x3023) x130)
+(or (not x3023) (not x3022))
+(or x3024 (not x3023))
+(or x3024 (not x3021))
+(or x3023 x3021 (not x3024))
+(or (not x3024) (not x2938) x3025)
+(or (not x3025) x3024)
+(or (not x3025) x2938)
+(or (not x2962) (not x3026) (not x2938) x3027)
+(or (not x3027) x2962)
+(or (not x3027) x3026)
+(or (not x3027) x2938)
+(or (not x2965) (not x131) x3028 x3029)
+(or (not x3029) x2965)
+(or (not x3029) x131)
+(or (not x3029) (not x3028))
+(or x3030 (not x3029))
+(or x3030 (not x3027))
+(or x3029 x3027 (not x3030))
+(or (not x3030) (not x2938) x3031)
+(or (not x3031) x3030)
+(or (not x3031) x2938)
+(or (not x2970) (not x3032) (not x2938) x3033)
+(or (not x3033) x2970)
+(or (not x3033) x3032)
+(or (not x3033) x2938)
+(or (not x2973) (not x130) x3034 x3035)
+(or (not x3035) x2973)
+(or (not x3035) x130)
+(or (not x3035) (not x3034))
+(or x3036 (not x3035))
+(or x3036 (not x3033))
+(or x3035 x3033 (not x3036))
+(or (not x3036) (not x2938) x3037)
+(or (not x3037) x3036)
+(or (not x3037) x2938)
+(or (not x3038) (not x3039) (not x2938) x3040)
+(or (not x3040) x3038)
+(or (not x3040) x3039)
+(or (not x3040) x2938)
+(or (not x3041) (not x133) (not x133) x3042)
+(or (not x3042) x3041)
+(or (not x3042) x133)
+(or x3043 (not x3042))
+(or x3043 (not x3040))
+(or x3042 x3040 (not x3043))
+(or (not x3043) (not x2938) x3044)
+(or (not x3044) x3043)
+(or (not x3044) x2938)
+(or (not x3045) (not x3046) (not x2938) x3047)
+(or (not x3047) x3045)
+(or (not x3047) x3046)
+(or (not x3047) x2938)
+(or (not x3048) (not x132) (not x132) x3049)
+(or (not x3049) x3048)
+(or (not x3049) x132)
+(or x3050 (not x3049))
+(or x3050 (not x3047))
+(or x3049 x3047 (not x3050))
+(or (not x3050) (not x2938) x3051)
+(or (not x3051) x3050)
+(or (not x3051) x2938)
+(or x3045 (not x3052))
+(or x3045 x132)
+(or x3052 (not x132) (not x3045))
+(or (not x3045) (not x3053) (not x2938) (not x3054) (not x2938) x3055)
+(or (not x3055) x3045)
+(or (not x3055) x3053)
+(or (not x3055) x2938)
+(or (not x3055) x3054)
+(or (not x3055) x2938)
+(or (not x3048) (not x132) x3056)
+(or (not x3056) x3048)
+(or (not x3056) x132)
+(or x3057 (not x3056))
+(or x3057 (not x3055))
+(or x3056 x3055 (not x3057))
+(or (not x3057) (not x2938) x3058)
+(or (not x3058) x3057)
+(or (not x3058) x2938)
+(or x3059 x3060)
+(or x3059 x2938)
+(or x3059 x3061)
+(or x3059 x2938)
+(or x3059 x3053)
+(or x3059 x2938)
+(or (not x3060) (not x2938) (not x3061) (not x2938) (not x3053) (not x2938) (not x3059))
+(or (not x3059) (not x3062) x3063)
+(or (not x3063) x3059)
+(or (not x3063) x3062)
+(or x3064 x3060)
+(or x3064 x2938)
+(or x3064 x3060)
+(or x3064 x2938)
+(or x3064 (not x3063))
+(or (not x3060) (not x2938) (not x3060) (not x2938) x3063 (not x3064))
+(or (not x3065) (not x3066) x3067)
+(or (not x3067) x3065)
+(or (not x3067) x3066)
+(or x3062 (not x3068))
+(or x3062 (not x3067))
+(or x3068 x3067 (not x3062))
+(or (not x3060) (not x2938) (not x3061) (not x2938) (not x3053) (not x2938) x3069)
+(or (not x3069) x3060)
+(or (not x3069) x2938)
+(or (not x3069) x3061)
+(or (not x3069) x2938)
+(or (not x3069) x3053)
+(or (not x3069) x2938)
+(or x3070 (not x3069))
+(or x3070 (not x3068))
+(or x3070 (not x3067))
+(or x3069 x3068 x3067 (not x3070))
+(or x3071 x3068 x3070)
+(or x3071 (not x3068) (not x3070))
+(or (not x3071) x3068 (not x3070))
+(or (not x3071) (not x3068) x3070)
+(or x3072 x3071 x3064)
+(or x3072 (not x3071) (not x3064))
+(or (not x3072) x3071 (not x3064))
+(or (not x3072) (not x3071) x3064)
+(or (not x3073) (not x3074) (not x3075) (not x3076) (not x3072) x3077)
+(or (not x3077) x3073)
+(or (not x3077) x3074)
+(or (not x3077) x3075)
+(or (not x3077) x3076)
+(or (not x3077) x3072)
+(or (not x3078) (not x3060) (not x2938) x3079)
+(or (not x3079) x3078)
+(or (not x3079) x3060)
+(or (not x3079) x2938)
+(or x3080 (not x3079))
+(or x3080 (not x3077))
+(or x3079 x3077 (not x3080))
+(or (not x3080) (not x2938) x3081)
+(or (not x3081) x3080)
+(or (not x3081) x2938)
+(or x3038 (not x3082))
+(or x3038 x133)
+(or x3082 (not x133) (not x3038))
+(or (not x3038) (not x3083) (not x2938) (not x3084) (not x2938) x3085)
+(or (not x3085) x3038)
+(or (not x3085) x3083)
+(or (not x3085) x2938)
+(or (not x3085) x3084)
+(or (not x3085) x2938)
+(or (not x3041) (not x133) x3086)
+(or (not x3086) x3041)
+(or (not x3086) x133)
+(or x3087 (not x3086))
+(or x3087 (not x3085))
+(or x3086 x3085 (not x3087))
+(or (not x3087) (not x2938) x3088)
+(or (not x3088) x3087)
+(or (not x3088) x2938)
+(or x2970 (not x3089))
+(or x2970 x130)
+(or x3089 (not x130) (not x2970))
+(or (not x2970) (not x3090) (not x2938) (not x3091) (not x2938) x3092)
+(or (not x3092) x2970)
+(or (not x3092) x3090)
+(or (not x3092) x2938)
+(or (not x3092) x3091)
+(or (not x3092) x2938)
+(or (not x2973) (not x130) x3093)
+(or (not x3093) x2973)
+(or (not x3093) x130)
+(or x3094 (not x3093))
+(or x3094 (not x3092))
+(or x3093 x3092 (not x3094))
+(or (not x3094) (not x2938) x3095)
+(or (not x3095) x3094)
+(or (not x3095) x2938)
+(or x3096 x3097)
+(or x3096 x2938)
+(or x3096 x3061)
+(or x3096 x2938)
+(or x3096 x3090)
+(or x3096 x2938)
+(or (not x3097) (not x2938) (not x3061) (not x2938) (not x3090) (not x2938) (not x3096))
+(or (not x3096) (not x3098) x3099)
+(or (not x3099) x3096)
+(or (not x3099) x3098)
+(or x3100 x3097)
+(or x3100 x2938)
+(or x3100 x3097)
+(or x3100 x2938)
+(or x3100 (not x3099))
+(or (not x3097) (not x2938) (not x3097) (not x2938) x3099 (not x3100))
+(or (not x3101) (not x3102) x3103)
+(or (not x3103) x3101)
+(or (not x3103) x3102)
+(or x3098 (not x3104))
+(or x3098 (not x3103))
+(or x3104 x3103 (not x3098))
+(or (not x3097) (not x2938) (not x3061) (not x2938) (not x3090) (not x2938) x3105)
+(or (not x3105) x3097)
+(or (not x3105) x2938)
+(or (not x3105) x3061)
+(or (not x3105) x2938)
+(or (not x3105) x3090)
+(or (not x3105) x2938)
+(or x3106 (not x3105))
+(or x3106 (not x3104))
+(or x3106 (not x3103))
+(or x3105 x3104 x3103 (not x3106))
+(or x3107 x3104 x3106)
+(or x3107 (not x3104) (not x3106))
+(or (not x3107) x3104 (not x3106))
+(or (not x3107) (not x3104) x3106)
+(or x3108 x3107 x3100)
+(or x3108 (not x3107) (not x3100))
+(or (not x3108) x3107 (not x3100))
+(or (not x3108) (not x3107) x3100)
+(or (not x3073) (not x3109) (not x2938) x3110 (not x2938) (not x3076) (not x3111) (not x3075) (not x3076) (not x3108) x3112)
+(or (not x3112) x3073)
+(or (not x3112) x3109)
+(or (not x3112) x2938)
+(or (not x3112) (not x3110))
+(or (not x3112) x2938)
+(or (not x3112) x3076)
+(or (not x3112) x3111)
+(or (not x3112) x3075)
+(or (not x3112) x3076)
+(or (not x3112) x3108)
+(or (not x3113) (not x3097) (not x2938) x3114)
+(or (not x3114) x3113)
+(or (not x3114) x3097)
+(or (not x3114) x2938)
+(or x3115 (not x3114))
+(or x3115 (not x3112))
+(or x3114 x3112 (not x3115))
+(or (not x3115) (not x2938) x3116)
+(or (not x3116) x3115)
+(or (not x3116) x2938)
+(or x2962 (not x3117))
+(or x2962 x131)
+(or x3117 (not x131) (not x2962))
+(or (not x2962) (not x3118) (not x2938) (not x3119) (not x2938) x3120)
+(or (not x3120) x2962)
+(or (not x3120) x3118)
+(or (not x3120) x2938)
+(or (not x3120) x3119)
+(or (not x3120) x2938)
+(or (not x2965) (not x131) x3121)
+(or (not x3121) x2965)
+(or (not x3121) x131)
+(or x3122 (not x3121))
+(or x3122 (not x3120))
+(or x3121 x3120 (not x3122))
+(or (not x3122) (not x2938) x3123)
+(or (not x3123) x3122)
+(or (not x3123) x2938)
+(or x3066 (not x3124))
+(or x3066 x3053)
+(or x3066 x2938)
+(or x3124 (not x3053) (not x2938) (not x3066))
+(or x3125 x3126)
+(or x3125 x2938)
+(or x3125 (not x3124))
+(or x3125 x3053)
+(or x3125 x2938)
+(or (not x3126) (not x2938) x3124 (not x3053) (not x2938) (not x3125))
+(or x3127 (not x3128))
+(or x3127 x3083)
+(or x3127 x2938)
+(or x3128 (not x3083) (not x2938) (not x3127))
+(or (not x3127) (not x3125) x3129)
+(or (not x3129) x3127)
+(or (not x3129) x3125)
+(or x3130 x3128 x3129)
+(or x3130 (not x3128) (not x3129))
+(or (not x3130) x3128 (not x3129))
+(or (not x3130) (not x3128) x3129)
+(or (not x3131) (not x3130) x3132)
+(or (not x3132) x3131)
+(or (not x3132) x3130)
+(or (not x3133) (not x3134) (not x3126) (not x2938) x3135)
+(or (not x3135) x3133)
+(or (not x3135) x3134)
+(or (not x3135) x3126)
+(or (not x3135) x2938)
+(or x3136 (not x3135))
+(or x3136 (not x3132))
+(or x3135 x3132 (not x3136))
+(or (not x3136) (not x2938) x3137)
+(or (not x3137) x3136)
+(or (not x3137) x2938)
+(or (not x2944) (not x2938) x3138)
+(or (not x3138) x2944)
+(or (not x3138) x2938)
+(or (not x2950) (not x2938) x3139)
+(or (not x3139) x2950)
+(or (not x3139) x2938)
+(or (not x2956) (not x2938) x3140)
+(or (not x3140) x2956)
+(or (not x3140) x2938)
+(or x3141 (not x3142))
+(or x3141 x2938)
+(or x3141 (not x3143))
+(or x3141 x3144)
+(or x3141 x3145)
+(or x3141 x3146)
+(or x3141 (not x3147))
+(or x3141 x3148)
+(or x3141 (not x3149))
+(or x3141 x3150)
+(or x3141 x3151)
+(or x3141 x3152)
+(or x3141 (not x3153))
+(or x3141 x3154)
+(or x3141 x3155)
+(or x3141 x3156)
+(or x3141 (not x3140))
+(or x3141 (not x3139))
+(or x3141 (not x3138))
+(or x3142 (not x2938) x3143 (not x3144) (not x3145) (not x3146) x3147 (not x3148) x3149 (not x3150) (not x3151) (not x3152) x3153 (not x3154) (not x3155) (not x3156) x3140 x3139 x3138 (not x3141))
+(or (not x3141) (not x3061) (not x2938) x3157)
+(or (not x3157) x3141)
+(or (not x3157) x3061)
+(or (not x3157) x2938)
+(or x3158 x2944)
+(or x3158 x2938)
+(or (not x2944) (not x2938) (not x3158))
+(or x3159 x2950)
+(or x3159 x2938)
+(or (not x2950) (not x2938) (not x3159))
+(or x3160 x2956)
+(or x3160 x2938)
+(or (not x2956) (not x2938) (not x3160))
+(or x3142 (not x2938) (not x3161) (not x3144) (not x3145) (not x3146) x3147 (not x3148) x3149 (not x3150) (not x3151) (not x3152) x3153 (not x3154) (not x3155) (not x3156) (not x3160) (not x3159) (not x3158) x3162 x3163)
+(or (not x3163) (not x3142))
+(or (not x3163) x2938)
+(or (not x3163) x3161)
+(or (not x3163) x3144)
+(or (not x3163) x3145)
+(or (not x3163) x3146)
+(or (not x3163) (not x3147))
+(or (not x3163) x3148)
+(or (not x3163) (not x3149))
+(or (not x3163) x3150)
+(or (not x3163) x3151)
+(or (not x3163) x3152)
+(or (not x3163) (not x3153))
+(or (not x3163) x3154)
+(or (not x3163) x3155)
+(or (not x3163) x3156)
+(or (not x3163) x3160)
+(or (not x3163) x3159)
+(or (not x3163) x3158)
+(or (not x3163) (not x3162))
+(or x3164 (not x3163))
+(or x3164 (not x3157))
+(or x3163 x3157 (not x3164))
+(or (not x3164) (not x2938) x3165)
+(or (not x3165) x3164)
+(or (not x3165) x2938)
+(or x3102 (not x3124))
+(or x3102 x3090)
+(or x3102 x2938)
+(or x3124 (not x3090) (not x2938) (not x3102))
+(or x3166 x3167)
+(or x3166 x2938)
+(or x3166 (not x3124))
+(or x3166 x3090)
+(or x3166 x2938)
+(or (not x3167) (not x2938) x3124 (not x3090) (not x2938) (not x3166))
+(or x3168 (not x3169))
+(or x3168 x3118)
+(or x3168 x2938)
+(or x3169 (not x3118) (not x2938) (not x3168))
+(or (not x3168) (not x3166) x3170)
+(or (not x3170) x3168)
+(or (not x3170) x3166)
+(or x3171 x3169 x3170)
+(or x3171 (not x3169) (not x3170))
+(or (not x3171) x3169 (not x3170))
+(or (not x3171) (not x3169) x3170)
+(or (not x3172) (not x3171) x3173)
+(or (not x3173) x3172)
+(or (not x3173) x3171)
+(or (not x3174) (not x3175) (not x3167) (not x2938) x3176)
+(or (not x3176) x3174)
+(or (not x3176) x3175)
+(or (not x3176) x3167)
+(or (not x3176) x2938)
+(or x3177 (not x3176))
+(or x3177 (not x3173))
+(or x3176 x3173 (not x3177))
+(or (not x3177) (not x2938) x3178)
+(or (not x3178) x3177)
+(or (not x3178) x2938)
+(or (not x3179) (not x3180) (not x2938) x3181)
+(or (not x3181) x3179)
+(or (not x3181) x3180)
+(or (not x3181) x2938)
+(or (not x3101) (not x3119) (not x2938) (not x2963) (not x2938) x3182)
+(or (not x3182) x3101)
+(or (not x3182) x3119)
+(or (not x3182) x2938)
+(or (not x3182) x2963)
+(or (not x3182) x2938)
+(or x3183 (not x3182))
+(or x3183 (not x3181))
+(or x3182 x3181 (not x3183))
+(or (not x3183) (not x2938) x3184)
+(or (not x3184) x3183)
+(or (not x3184) x2938)
+(or (not x3185) (not x3186) (not x2938) x3187)
+(or (not x3187) x3185)
+(or (not x3187) x3186)
+(or (not x3187) x2938)
+(or (not x3188) (not x3091) (not x2938) (not x2971) (not x2938) x3189)
+(or (not x3189) x3188)
+(or (not x3189) x3091)
+(or (not x3189) x2938)
+(or (not x3189) x2971)
+(or (not x3189) x2938)
+(or x3190 (not x3189))
+(or x3190 (not x3187))
+(or x3189 x3187 (not x3190))
+(or (not x3190) (not x2938) x3191)
+(or (not x3191) x3190)
+(or (not x3191) x2938)
+(or (not x3179) (not x3192) (not x2938) x3193)
+(or (not x3193) x3179)
+(or (not x3193) x3192)
+(or (not x3193) x2938)
+(or (not x3101) (not x3119) (not x2938) (not x2978) (not x2938) x3194)
+(or (not x3194) x3101)
+(or (not x3194) x3119)
+(or (not x3194) x2938)
+(or (not x3194) x2978)
+(or (not x3194) x2938)
+(or x3195 (not x3194))
+(or x3195 (not x3193))
+(or x3194 x3193 (not x3195))
+(or (not x3195) (not x2938) x3196)
+(or (not x3196) x3195)
+(or (not x3196) x2938)
+(or (not x3185) (not x3197) (not x2938) x3198)
+(or (not x3198) x3185)
+(or (not x3198) x3197)
+(or (not x3198) x2938)
+(or (not x3188) (not x3091) (not x2938) (not x2984) (not x2938) x3199)
+(or (not x3199) x3188)
+(or (not x3199) x3091)
+(or (not x3199) x2938)
+(or (not x3199) x2984)
+(or (not x3199) x2938)
+(or x3200 (not x3199))
+(or x3200 (not x3198))
+(or x3199 x3198 (not x3200))
+(or (not x3200) (not x2938) x3201)
+(or (not x3201) x3200)
+(or (not x3201) x2938)
+(or (not x3179) (not x3202) (not x2938) x3203)
+(or (not x3203) x3179)
+(or (not x3203) x3202)
+(or (not x3203) x2938)
+(or (not x3101) (not x3119) (not x2938) (not x2990) (not x2938) x3204)
+(or (not x3204) x3101)
+(or (not x3204) x3119)
+(or (not x3204) x2938)
+(or (not x3204) x2990)
+(or (not x3204) x2938)
+(or x3205 (not x3204))
+(or x3205 (not x3203))
+(or x3204 x3203 (not x3205))
+(or (not x3205) (not x2938) x3206)
+(or (not x3206) x3205)
+(or (not x3206) x2938)
+(or (not x3185) (not x3207) (not x2938) x3208)
+(or (not x3208) x3185)
+(or (not x3208) x3207)
+(or (not x3208) x2938)
+(or (not x3188) (not x3091) (not x2938) (not x2996) (not x2938) x3209)
+(or (not x3209) x3188)
+(or (not x3209) x3091)
+(or (not x3209) x2938)
+(or (not x3209) x2996)
+(or (not x3209) x2938)
+(or x3210 (not x3209))
+(or x3210 (not x3208))
+(or x3209 x3208 (not x3210))
+(or (not x3210) (not x2938) x3211)
+(or (not x3211) x3210)
+(or (not x3211) x2938)
+(or (not x3179) (not x3212) (not x2938) x3213)
+(or (not x3213) x3179)
+(or (not x3213) x3212)
+(or (not x3213) x2938)
+(or (not x3101) (not x3119) (not x2938) (not x3002) (not x2938) x3214)
+(or (not x3214) x3101)
+(or (not x3214) x3119)
+(or (not x3214) x2938)
+(or (not x3214) x3002)
+(or (not x3214) x2938)
+(or x3215 (not x3214))
+(or x3215 (not x3213))
+(or x3214 x3213 (not x3215))
+(or (not x3215) (not x2938) x3216)
+(or (not x3216) x3215)
+(or (not x3216) x2938)
+(or (not x3185) (not x3217) (not x2938) x3218)
+(or (not x3218) x3185)
+(or (not x3218) x3217)
+(or (not x3218) x2938)
+(or (not x3188) (not x3091) (not x2938) (not x3008) (not x2938) x3219)
+(or (not x3219) x3188)
+(or (not x3219) x3091)
+(or (not x3219) x2938)
+(or (not x3219) x3008)
+(or (not x3219) x2938)
+(or x3220 (not x3219))
+(or x3220 (not x3218))
+(or x3219 x3218 (not x3220))
+(or (not x3220) (not x2938) x3221)
+(or (not x3221) x3220)
+(or (not x3221) x2938)
+(or (not x3179) (not x3222) (not x2938) x3223)
+(or (not x3223) x3179)
+(or (not x3223) x3222)
+(or (not x3223) x2938)
+(or (not x3101) (not x3119) (not x2938) (not x3014) (not x2938) x3224)
+(or (not x3224) x3101)
+(or (not x3224) x3119)
+(or (not x3224) x2938)
+(or (not x3224) x3014)
+(or (not x3224) x2938)
+(or x3225 (not x3224))
+(or x3225 (not x3223))
+(or x3224 x3223 (not x3225))
+(or (not x3225) (not x2938) x3226)
+(or (not x3226) x3225)
+(or (not x3226) x2938)
+(or (not x3185) (not x3227) (not x2938) x3228)
+(or (not x3228) x3185)
+(or (not x3228) x3227)
+(or (not x3228) x2938)
+(or (not x3188) (not x3091) (not x2938) (not x3020) (not x2938) x3229)
+(or (not x3229) x3188)
+(or (not x3229) x3091)
+(or (not x3229) x2938)
+(or (not x3229) x3020)
+(or (not x3229) x2938)
+(or x3230 (not x3229))
+(or x3230 (not x3228))
+(or x3229 x3228 (not x3230))
+(or (not x3230) (not x2938) x3231)
+(or (not x3231) x3230)
+(or (not x3231) x2938)
+(or (not x3179) (not x3232) (not x2938) x3233)
+(or (not x3233) x3179)
+(or (not x3233) x3232)
+(or (not x3233) x2938)
+(or (not x3101) (not x3119) (not x2938) (not x3026) (not x2938) x3234)
+(or (not x3234) x3101)
+(or (not x3234) x3119)
+(or (not x3234) x2938)
+(or (not x3234) x3026)
+(or (not x3234) x2938)
+(or x3235 (not x3234))
+(or x3235 (not x3233))
+(or x3234 x3233 (not x3235))
+(or (not x3235) (not x2938) x3236)
+(or (not x3236) x3235)
+(or (not x3236) x2938)
+(or (not x3185) (not x3237) (not x2938) x3238)
+(or (not x3238) x3185)
+(or (not x3238) x3237)
+(or (not x3238) x2938)
+(or (not x3188) (not x3091) (not x2938) (not x3032) (not x2938) x3239)
+(or (not x3239) x3188)
+(or (not x3239) x3091)
+(or (not x3239) x2938)
+(or (not x3239) x3032)
+(or (not x3239) x2938)
+(or x3240 (not x3239))
+(or x3240 (not x3238))
+(or x3239 x3238 (not x3240))
+(or (not x3240) (not x2938) x3241)
+(or (not x3241) x3240)
+(or (not x3241) x2938)
+(or (not x3242) (not x3243) (not x2938) x3244)
+(or (not x3244) x3242)
+(or (not x3244) x3243)
+(or (not x3244) x2938)
+(or (not x3065) (not x3084) (not x2938) (not x3039) (not x2938) x3245)
+(or (not x3245) x3065)
+(or (not x3245) x3084)
+(or (not x3245) x2938)
+(or (not x3245) x3039)
+(or (not x3245) x2938)
+(or x3246 (not x3245))
+(or x3246 (not x3244))
+(or x3245 x3244 (not x3246))
+(or (not x3246) (not x2938) x3247)
+(or (not x3247) x3246)
+(or (not x3247) x2938)
+(or (not x3248) (not x3249) (not x2938) x3250)
+(or (not x3250) x3248)
+(or (not x3250) x3249)
+(or (not x3250) x2938)
+(or (not x3251) (not x3054) (not x2938) (not x3046) (not x2938) x3252)
+(or (not x3252) x3251)
+(or (not x3252) x3054)
+(or (not x3252) x2938)
+(or (not x3252) x3046)
+(or (not x3252) x2938)
+(or x3253 (not x3252))
+(or x3253 (not x3250))
+(or x3252 x3250 (not x3253))
+(or (not x3253) (not x2938) x3254)
+(or (not x3254) x3253)
+(or (not x3254) x2938)
+(or x3255 (not x3256))
+(or x3255 x2938)
+(or x3256 (not x2938) (not x3255))
+(or x3257 (not x2943))
+(or x3257 (not x3258))
+(or x2943 x3258 (not x3257))
+(or (not x3257) (not x3259) x3260)
+(or (not x3260) x3257)
+(or (not x3260) x3259)
+(or x2943 (not x3261) x3262 x3263)
+(or (not x3263) (not x2943))
+(or (not x3263) x3261)
+(or (not x3263) (not x3262))
+(or x3264 (not x3263))
+(or x3264 (not x3260))
+(or x3264 x2938)
+(or x3263 x3260 (not x2938) (not x3264))
+(or (not x3265) (not x2938) (not x3266) (not x3267) (not x3268) (not x3269) (not x3161) (not x3270) (not x3271) (not x2938) x3272)
+(or (not x3272) x3265)
+(or (not x3272) x2938)
+(or (not x3272) x3266)
+(or (not x3272) x3267)
+(or (not x3272) x3268)
+(or (not x3272) x3269)
+(or (not x3272) x3161)
+(or (not x3272) x3270)
+(or (not x3272) x3271)
+(or (not x3272) x2938)
+(or (not x3273) (not x3271) (not x2938) (not x3267) (not x3274) x3142 (not x2938) (not x3271) (not x2938) x3275)
+(or (not x3275) x3273)
+(or (not x3275) x3271)
+(or (not x3275) x2938)
+(or (not x3275) x3267)
+(or (not x3275) x3274)
+(or (not x3275) (not x3142))
+(or (not x3275) x2938)
+(or (not x3275) x3271)
+(or (not x3275) x2938)
+(or (not x3261) x2943 x3276)
+(or (not x3276) x3261)
+(or (not x3276) (not x2943))
+(or x3277 (not x3276))
+(or x3277 (not x3278))
+(or x3276 x3278 (not x3277))
+(or (not x3273) (not x3266) (not x3277) x3279)
+(or (not x3279) x3273)
+(or (not x3279) x3266)
+(or (not x3279) x3277)
+(or (not x3267) (not x3268) (not x3280) (not x3271) (not x2938) x3281)
+(or (not x3281) x3267)
+(or (not x3281) x3268)
+(or (not x3281) x3280)
+(or (not x3281) x3271)
+(or (not x3281) x2938)
+(or x3282 (not x3281))
+(or x3282 (not x3279))
+(or x3282 (not x3275))
+(or x3282 (not x3272))
+(or x3281 x3279 x3275 x3272 (not x3282))
+(or (not x3282) (not x2938) x3283)
+(or (not x3283) x3282)
+(or (not x3283) x2938)
+(or x3284 (not x3285))
+(or x3284 (not x3286))
+(or x3285 x3286 (not x3284))
+(or x3287 (not x3153))
+(or x3287 x3288)
+(or x3153 (not x3288) (not x3287))
+(or x3289 x3153)
+(or x3289 x3290)
+(or (not x3153) (not x3290) (not x3289))
+(or (not x3289) (not x3287) x3291)
+(or (not x3291) x3289)
+(or (not x3291) x3287)
+(or x3292 x3293)
+(or x3292 (not x3294))
+(or x3292 (not x3155))
+(or x3292 x3154)
+(or x3292 (not x3285))
+(or x3292 (not x3291))
+(or (not x3293) x3294 x3155 (not x3154) x3285 x3291 (not x3292))
+(or x3295 x3293)
+(or x3295 (not x3294))
+(or x3295 (not x3155))
+(or x3295 (not x3154))
+(or x3295 x3296)
+(or (not x3293) x3294 x3155 x3154 (not x3296) (not x3295))
+(or (not x3295) (not x3292) (not x3284) x3297)
+(or (not x3297) x3295)
+(or (not x3297) x3292)
+(or (not x3297) x3284)
+(or x3269 (not x3143))
+(or x3269 (not x3298))
+(or x3269 (not x3297))
+(or x3143 x3298 x3297 (not x3269))
+(or (not x3265) (not x2938) (not x3266) (not x3267) (not x3268) (not x3269) (not x3161) (not x3270) (not x3265) (not x2938) x3299)
+(or (not x3299) x3265)
+(or (not x3299) x2938)
+(or (not x3299) x3266)
+(or (not x3299) x3267)
+(or (not x3299) x3268)
+(or (not x3299) x3269)
+(or (not x3299) x3161)
+(or (not x3299) x3270)
+(or (not x3299) x3265)
+(or (not x3299) x2938)
+(or (not x3274) x3142 (not x2938) (not x3265) (not x2938) x3300)
+(or (not x3300) x3274)
+(or (not x3300) (not x3142))
+(or (not x3300) x2938)
+(or (not x3300) x3265)
+(or (not x3300) x2938)
+(or (not x3301) (not x3259) x3302)
+(or (not x3302) x3301)
+(or (not x3302) x3259)
+(or x3303 (not x3302))
+(or x3303 (not x3300))
+(or x3302 x3300 (not x3303))
+(or (not x3273) (not x3271) (not x2938) (not x3267) (not x3303) x3304)
+(or (not x3304) x3273)
+(or (not x3304) x3271)
+(or (not x3304) x2938)
+(or (not x3304) x3267)
+(or (not x3304) x3303)
+(or (not x3273) (not x3266) (not x3305) (not x3265) (not x2938) x3306)
+(or (not x3306) x3273)
+(or (not x3306) x3266)
+(or (not x3306) x3305)
+(or (not x3306) x3265)
+(or (not x3306) x2938)
+(or (not x3267) (not x3268) (not x3280) (not x3265) (not x2938) x3307)
+(or (not x3307) x3267)
+(or (not x3307) x3268)
+(or (not x3307) x3280)
+(or (not x3307) x3265)
+(or (not x3307) x2938)
+(or x3308 (not x3307))
+(or x3308 (not x3306))
+(or x3308 (not x3304))
+(or x3308 (not x3299))
+(or x3307 x3306 x3304 x3299 (not x3308))
+(or (not x3308) (not x2938) x3309)
+(or (not x3309) x3308)
+(or (not x3309) x2938)
+(or x3048 x3054)
+(or x3048 x2938)
+(or (not x3054) (not x2938) (not x3048))
+(or x3248 (not x3310))
+(or x3248 x3054)
+(or x3248 x2938)
+(or x3310 (not x3054) (not x2938) (not x3248))
+(or (not x3248) (not x3311) (not x3312) (not x3053) (not x2938) x3313)
+(or (not x3313) x3248)
+(or (not x3313) x3311)
+(or (not x3313) x3312)
+(or (not x3313) x3053)
+(or (not x3313) x2938)
+(or (not x3054) (not x2938) x3052)
+(or (not x3052) x3054)
+(or (not x3052) x2938)
+(or (not x3251) (not x3054) (not x2938) (not x3054) (not x2938) x3314)
+(or (not x3314) x3251)
+(or (not x3314) x3054)
+(or (not x3314) x2938)
+(or (not x3314) x3054)
+(or (not x3314) x2938)
+(or x3315 (not x3314))
+(or x3315 (not x3313))
+(or x3314 x3313 (not x3315))
+(or (not x3315) (not x2938) x3316)
+(or (not x3316) x3315)
+(or (not x3316) x2938)
+(or x3041 x3084)
+(or x3041 x2938)
+(or (not x3084) (not x2938) (not x3041))
+(or x3242 (not x3317))
+(or x3242 x3084)
+(or x3242 x2938)
+(or x3317 (not x3084) (not x2938) (not x3242))
+(or (not x3242) (not x3318) (not x3083) (not x2938) x3319)
+(or (not x3319) x3242)
+(or (not x3319) x3318)
+(or (not x3319) x3083)
+(or (not x3319) x2938)
+(or (not x3084) (not x2938) x3082)
+(or (not x3082) x3084)
+(or (not x3082) x2938)
+(or (not x3065) (not x3084) (not x2938) (not x3084) (not x2938) x3320)
+(or (not x3320) x3065)
+(or (not x3320) x3084)
+(or (not x3320) x2938)
+(or (not x3320) x3084)
+(or (not x3320) x2938)
+(or x3321 (not x3320))
+(or x3321 (not x3319))
+(or x3320 x3319 (not x3321))
+(or (not x3321) (not x2938) x3322)
+(or (not x3322) x3321)
+(or (not x3322) x2938)
+(or x2973 x3091)
+(or x2973 x2938)
+(or (not x3091) (not x2938) (not x2973))
+(or x3185 (not x3323))
+(or x3185 x3091)
+(or x3185 x2938)
+(or x3323 (not x3091) (not x2938) (not x3185))
+(or (not x3185) (not x3324) (not x3325) (not x3090) (not x2938) x3326)
+(or (not x3326) x3185)
+(or (not x3326) x3324)
+(or (not x3326) x3325)
+(or (not x3326) x3090)
+(or (not x3326) x2938)
+(or (not x3091) (not x2938) x3089)
+(or (not x3089) x3091)
+(or (not x3089) x2938)
+(or (not x3188) (not x3091) (not x2938) (not x3091) (not x2938) x3327)
+(or (not x3327) x3188)
+(or (not x3327) x3091)
+(or (not x3327) x2938)
+(or (not x3327) x3091)
+(or (not x3327) x2938)
+(or x3328 (not x3327))
+(or x3328 (not x3326))
+(or x3327 x3326 (not x3328))
+(or (not x3328) (not x2938) x3329)
+(or (not x3329) x3328)
+(or (not x3329) x2938)
+(or x2965 x3119)
+(or x2965 x2938)
+(or (not x3119) (not x2938) (not x2965))
+(or x3179 (not x3330))
+(or x3179 x3119)
+(or x3179 x2938)
+(or x3330 (not x3119) (not x2938) (not x3179))
+(or (not x3179) (not x3331) (not x3118) (not x2938) x3332)
+(or (not x3332) x3179)
+(or (not x3332) x3331)
+(or (not x3332) x3118)
+(or (not x3332) x2938)
+(or (not x3119) (not x2938) x3117)
+(or (not x3117) x3119)
+(or (not x3117) x2938)
+(or (not x3101) (not x3119) (not x2938) (not x3119) (not x2938) x3333)
+(or (not x3333) x3101)
+(or (not x3333) x3119)
+(or (not x3333) x2938)
+(or (not x3333) x3119)
+(or (not x3333) x2938)
+(or x3334 (not x3333))
+(or x3334 (not x3332))
+(or x3333 x3332 (not x3334))
+(or (not x3334) (not x2938) x3335)
+(or (not x3335) x3334)
+(or (not x3335) x2938)
+(or x135 (not x3336) (not x2938) (not x3337) (not x2938) x3338)
+(or (not x3338) (not x135))
+(or (not x3338) x3336)
+(or (not x3338) x2938)
+(or (not x3338) x3337)
+(or (not x3338) x2938)
+(or x3339 (not x3340))
+(or x3339 (not x3341))
+(or x3339 (not x3342))
+(or x3340 x3341 x3342 (not x3339))
+(or (not x135) (not x3339) x3343)
+(or (not x3343) x135)
+(or (not x3343) x3339)
+(or x3344 (not x3343))
+(or x3344 (not x3338))
+(or x3343 x3338 (not x3344))
+(or (not x3344) (not x2938) x3345)
+(or (not x3345) x3344)
+(or (not x3345) x2938)
+(or x134 (not x3346) (not x2938) (not x3347) (not x2938) x3348)
+(or (not x3348) (not x134))
+(or (not x3348) x3346)
+(or (not x3348) x2938)
+(or (not x3348) x3347)
+(or (not x3348) x2938)
+(or x3349 (not x3350))
+(or x3349 (not x3351))
+(or x3349 (not x3352))
+(or x3350 x3351 x3352 (not x3349))
+(or (not x134) (not x3349) x3353)
+(or (not x3353) x134)
+(or (not x3353) x3349)
+(or x3354 (not x3353))
+(or x3354 (not x3348))
+(or x3353 x3348 (not x3354))
+(or (not x3354) (not x2938) x3355)
+(or (not x3355) x3354)
+(or (not x3355) x2938)
+(or (not x3356) (not x3357) (not x3358) x3359)
+(or (not x3359) x3356)
+(or (not x3359) x3357)
+(or (not x3359) x3358)
+(or (not x3360) (not x3356) (not x3361) (not x3362) (not x3336) (not x2938) x3363)
+(or (not x3363) x3360)
+(or (not x3363) x3356)
+(or (not x3363) x3361)
+(or (not x3363) x3362)
+(or (not x3363) x3336)
+(or (not x3363) x2938)
+(or x3364 (not x3363))
+(or x3364 (not x3359))
+(or x3363 x3359 (not x3364))
+(or (not x3109) (not x2938) (not x3358) (not x3076) (not x3111) (not x3365) (not x3364) x3366)
+(or (not x3366) x3109)
+(or (not x3366) x2938)
+(or (not x3366) x3358)
+(or (not x3366) x3076)
+(or (not x3366) x3111)
+(or (not x3366) x3365)
+(or (not x3366) x3364)
+(or (not x3367) (not x3368) (not x3358) x3369)
+(or (not x3369) x3367)
+(or (not x3369) x3368)
+(or (not x3369) x3358)
+(or (not x3367) (not x3370) (not x3371) (not x3372) (not x3336) (not x2938) x3373)
+(or (not x3373) x3367)
+(or (not x3373) x3370)
+(or (not x3373) x3371)
+(or (not x3373) x3372)
+(or (not x3373) x3336)
+(or (not x3373) x2938)
+(or x3374 (not x3375))
+(or x3374 (not x3373))
+(or x3375 x3373 (not x3374))
+(or (not x3376) (not x3374) x3377)
+(or (not x3377) x3376)
+(or (not x3377) x3374)
+(or x3378 (not x3377))
+(or x3378 (not x3369))
+(or x3377 x3369 (not x3378))
+(or (not x3109) (not x2938) x3110 (not x2938) (not x3076) (not x3111) (not x3378) x3379)
+(or (not x3379) x3109)
+(or (not x3379) x2938)
+(or (not x3379) (not x3110))
+(or (not x3379) x2938)
+(or (not x3379) x3076)
+(or (not x3379) x3111)
+(or (not x3379) x3378)
+(or (not x3101) (not x3188) (not x3380) (not x3358) x3381)
+(or (not x3381) x3101)
+(or (not x3381) x3188)
+(or (not x3381) x3380)
+(or (not x3381) x3358)
+(or (not x3382) (not x3101) (not x3188) (not x3383) (not x3384) x3385)
+(or (not x3385) x3382)
+(or (not x3385) x3101)
+(or (not x3385) x3188)
+(or (not x3385) x3383)
+(or (not x3385) x3384)
+(or x3386 (not x3385))
+(or x3386 (not x3381))
+(or x3385 x3381 (not x3386))
+(or (not x3387) (not x3358) (not x3076) (not x3386) x3388)
+(or (not x3388) x3387)
+(or (not x3388) x3358)
+(or (not x3388) x3076)
+(or (not x3388) x3386)
+(or (not x3389) (not x3390) (not x3358) x3391)
+(or (not x3391) x3389)
+(or (not x3391) x3390)
+(or (not x3391) x3358)
+(or (not x3389) (not x3392) (not x3101) (not x3188) (not x3384) x3393)
+(or (not x3393) x3389)
+(or (not x3393) x3392)
+(or (not x3393) x3101)
+(or (not x3393) x3188)
+(or (not x3393) x3384)
+(or x3394 (not x3395))
+(or x3394 (not x3393))
+(or x3395 x3393 (not x3394))
+(or (not x3396) (not x3394) x3397)
+(or (not x3397) x3396)
+(or (not x3397) x3394)
+(or x3398 (not x3397))
+(or x3398 (not x3391))
+(or x3397 x3391 (not x3398))
+(or (not x3387) x3110 (not x2938) (not x3398) x3399)
+(or (not x3399) x3387)
+(or (not x3399) (not x3110))
+(or (not x3399) x2938)
+(or (not x3399) x3398)
+(or x3400 (not x3399))
+(or x3400 (not x3388))
+(or x3400 (not x3379))
+(or x3400 (not x3366))
+(or x3400 x2938)
+(or x3399 x3388 x3379 x3366 (not x2938) (not x3400))
+(or x3401 (not x3402))
+(or x3401 (not x3403))
+(or x3401 (not x3404))
+(or x3402 x3403 x3404 (not x3401))
+(or (not x3405) (not x3401) x3406)
+(or (not x3406) x3405)
+(or (not x3406) x3401)
+(or x3357 (not x3407))
+(or x3357 (not x3406))
+(or x3407 x3406 (not x3357))
+(or (not x3356) (not x3357) (not x3109) (not x2938) x3408)
+(or (not x3408) x3356)
+(or (not x3408) x3357)
+(or (not x3408) x3109)
+(or (not x3408) x2938)
+(or x3405 (not x3403))
+(or x3405 x3336)
+(or x3405 x2938)
+(or x3403 (not x3336) (not x2938) (not x3405))
+(or (not x3405) (not x3362) (not x3409) x3410)
+(or (not x3410) x3405)
+(or (not x3410) x3362)
+(or (not x3410) x3409)
+(or (not x3362) (not x3336) (not x2938) x3402)
+(or (not x3402) x3362)
+(or (not x3402) x3336)
+(or (not x3402) x2938)
+(or x3361 (not x3402))
+(or x3361 (not x3410))
+(or x3402 x3410 (not x3361))
+(or x3312 (not x3124))
+(or x3312 (not x3411))
+(or x3312 (not x3128))
+(or x3124 x3411 x3128 (not x3312))
+(or x3311 x3061)
+(or x3311 x2938)
+(or x3311 (not x3412))
+(or x3311 (not x3413))
+(or x3311 (not x3414))
+(or x3311 (not x3415))
+(or x3311 (not x3068))
+(or (not x3061) (not x2938) x3412 x3413 x3414 x3415 x3068 (not x3311))
+(or (not x3311) (not x3312) x3416)
+(or (not x3416) x3311)
+(or (not x3416) x3312)
+(or x3417 (not x3416))
+(or x3417 x3053)
+(or x3417 x2938)
+(or x3416 (not x3053) (not x2938) (not x3417))
+(or x3134 (not x3124))
+(or x3134 (not x3412))
+(or x3134 (not x3413))
+(or x3134 (not x3414))
+(or x3134 (not x3415))
+(or x3124 x3412 x3413 x3414 x3415 (not x3134))
+(or x3133 x3061)
+(or x3133 x2938)
+(or x3133 (not x3412))
+(or x3133 (not x3413))
+(or x3133 (not x3414))
+(or x3133 (not x3415))
+(or x3133 x3060)
+(or x3133 x2938)
+(or (not x3061) (not x2938) x3412 x3413 x3414 x3415 (not x3060) (not x2938) (not x3133))
+(or (not x3133) (not x3134) x3411)
+(or (not x3411) x3133)
+(or (not x3411) x3134)
+(or x3318 (not x3411))
+(or x3318 x3126)
+(or x3318 x2938)
+(or x3411 (not x3126) (not x2938) (not x3318))
+(or x3418 (not x3411))
+(or x3418 x3126)
+(or x3418 x2938)
+(or x3418 x3083)
+(or x3418 x2938)
+(or x3411 (not x3126) (not x2938) (not x3083) (not x2938) (not x3418))
+(or (not x3384) (not x3418) (not x3417) x3403)
+(or (not x3403) x3384)
+(or (not x3403) x3418)
+(or (not x3403) x3417)
+(or x3356 (not x3403))
+(or x3356 x3346)
+(or x3356 x2938)
+(or x3403 (not x3346) (not x2938) (not x3356))
+(or (not x3356) (not x3361) x3419)
+(or (not x3419) x3356)
+(or (not x3419) x3361)
+(or x3362 (not x3420))
+(or x3362 (not x3421))
+(or x3362 (not x3422))
+(or x3420 x3421 x3422 (not x3362))
+(or (not x3362) (not x3346) (not x2938) x3407)
+(or (not x3407) x3362)
+(or (not x3407) x3346)
+(or (not x3407) x2938)
+(or x3360 (not x3407))
+(or x3360 (not x3419))
+(or x3407 x3419 (not x3360))
+(or (not x3360) (not x3356) (not x3361) (not x3405) (not x3362) (not x3409) x3423)
+(or (not x3423) x3360)
+(or (not x3423) x3356)
+(or (not x3423) x3361)
+(or (not x3423) x3405)
+(or (not x3423) x3362)
+(or (not x3423) x3409)
+(or x3424 (not x3423))
+(or x3424 (not x3408))
+(or x3423 x3408 (not x3424))
+(or (not x3109) (not x2938) (not x3358) (not x3076) (not x3111) (not x3365) (not x3424) x3425)
+(or (not x3425) x3109)
+(or (not x3425) x2938)
+(or (not x3425) x3358)
+(or (not x3425) x3076)
+(or (not x3425) x3111)
+(or (not x3425) x3365)
+(or (not x3425) x3424)
+(or x3426 (not x3427))
+(or x3426 (not x3428))
+(or x3426 x3336)
+(or x3426 x2938)
+(or x3427 x3428 (not x3336) (not x2938) (not x3426))
+(or (not x3371) (not x3426) x3429)
+(or (not x3429) x3371)
+(or (not x3429) x3426)
+(or x3368 (not x3375))
+(or x3368 (not x3429))
+(or x3375 x3429 (not x3368))
+(or (not x3367) (not x3368) (not x3109) (not x2938) x3430)
+(or (not x3430) x3367)
+(or (not x3430) x3368)
+(or (not x3430) x3109)
+(or (not x3430) x2938)
+(or x3371 (not x3428))
+(or x3371 x3346)
+(or x3371 x2938)
+(or x3428 (not x3346) (not x2938) (not x3371))
+(or (not x3371) (not x3372) (not x3336) (not x2938) x3431)
+(or (not x3431) x3371)
+(or (not x3431) x3372)
+(or (not x3431) x3336)
+(or (not x3431) x2938)
+(or (not x3372) (not x3346) (not x2938) x3427)
+(or (not x3427) x3372)
+(or (not x3427) x3346)
+(or (not x3427) x2938)
+(or x3370 (not x3427))
+(or x3370 (not x3431))
+(or x3427 x3431 (not x3370))
+(or x3325 (not x3124))
+(or x3325 (not x3432))
+(or x3325 (not x3169))
+(or x3124 x3432 x3169 (not x3325))
+(or x3324 x3061)
+(or x3324 x2938)
+(or x3324 (not x3412))
+(or x3324 x3109)
+(or x3324 x2938)
+(or x3324 (not x3110))
+(or x3324 x2938)
+(or x3324 (not x3415))
+(or x3324 (not x3433))
+(or x3324 (not x3414))
+(or x3324 (not x3415))
+(or x3324 (not x3104))
+(or (not x3061) (not x2938) x3412 (not x3109) (not x2938) x3110 (not x2938) x3415 x3433 x3414 x3415 x3104 (not x3324))
+(or (not x3324) (not x3325) x3434)
+(or (not x3434) x3324)
+(or (not x3434) x3325)
+(or x3435 (not x3434))
+(or x3435 x3090)
+(or x3435 x2938)
+(or x3434 (not x3090) (not x2938) (not x3435))
+(or x3175 (not x3124))
+(or x3175 (not x3412))
+(or x3175 x3109)
+(or x3175 x2938)
+(or x3175 (not x3110))
+(or x3175 x2938)
+(or x3175 (not x3415))
+(or x3175 (not x3433))
+(or x3175 (not x3414))
+(or x3175 (not x3415))
+(or x3124 x3412 (not x3109) (not x2938) x3110 (not x2938) x3415 x3433 x3414 x3415 (not x3175))
+(or x3174 x3061)
+(or x3174 x2938)
+(or x3174 (not x3412))
+(or x3174 x3109)
+(or x3174 x2938)
+(or x3174 (not x3110))
+(or x3174 x2938)
+(or x3174 (not x3415))
+(or x3174 (not x3433))
+(or x3174 (not x3414))
+(or x3174 (not x3415))
+(or x3174 x3097)
+(or x3174 x2938)
+(or (not x3061) (not x2938) x3412 (not x3109) (not x2938) x3110 (not x2938) x3415 x3433 x3414 x3415 (not x3097) (not x2938) (not x3174))
+(or (not x3174) (not x3175) x3432)
+(or (not x3432) x3174)
+(or (not x3432) x3175)
+(or x3331 (not x3432))
+(or x3331 x3167)
+(or x3331 x2938)
+(or x3432 (not x3167) (not x2938) (not x3331))
+(or x3436 (not x3432))
+(or x3436 x3167)
+(or x3436 x2938)
+(or x3436 x3118)
+(or x3436 x2938)
+(or x3432 (not x3167) (not x2938) (not x3118) (not x2938) (not x3436))
+(or (not x3409) (not x3436) (not x3435) x3428)
+(or (not x3428) x3409)
+(or (not x3428) x3436)
+(or (not x3428) x3435)
+(or x3367 (not x3428))
+(or x3367 (not x3420))
+(or x3428 x3420 (not x3367))
+(or (not x3367) (not x3370) x3437)
+(or (not x3437) x3367)
+(or (not x3437) x3370)
+(or x3372 (not x3404))
+(or x3372 (not x3438))
+(or x3372 (not x3439))
+(or x3404 x3438 x3439 (not x3372))
+(or (not x3372) (not x3384) x3375)
+(or (not x3375) x3372)
+(or (not x3375) x3384)
+(or x3376 (not x3375))
+(or x3376 (not x3437))
+(or x3375 x3437 (not x3376))
+(or (not x3376) (not x3372) (not x3384) x3440)
+(or (not x3440) x3376)
+(or (not x3440) x3372)
+(or (not x3440) x3384)
+(or x3441 (not x3440))
+(or x3441 (not x3430))
+(or x3440 x3430 (not x3441))
+(or (not x3109) (not x2938) x3110 (not x2938) (not x3076) (not x3111) (not x3441) x3442)
+(or (not x3442) x3109)
+(or (not x3442) x2938)
+(or (not x3442) (not x3110))
+(or (not x3442) x2938)
+(or (not x3442) x3076)
+(or (not x3442) x3111)
+(or (not x3442) x3441)
+(or x3443 (not x3317))
+(or x3443 (not x3310))
+(or x3443 x3346)
+(or x3443 x2938)
+(or x3317 x3310 (not x3346) (not x2938) (not x3443))
+(or (not x3065) (not x3251) (not x3443) x3444)
+(or (not x3444) x3065)
+(or (not x3444) x3251)
+(or (not x3444) x3443)
+(or x3380 (not x3330))
+(or x3380 (not x3323))
+(or x3380 (not x3444))
+(or x3330 x3323 x3444 (not x3380))
+(or (not x3101) (not x3188) (not x3380) (not x3109) (not x2938) x3445)
+(or (not x3445) x3101)
+(or (not x3445) x3188)
+(or (not x3445) x3380)
+(or (not x3445) x3109)
+(or (not x3445) x2938)
+(or (not x3101) (not x3188) (not x3383) (not x3384) x3446)
+(or (not x3446) x3101)
+(or (not x3446) x3188)
+(or (not x3446) x3383)
+(or (not x3446) x3384)
+(or x3447 (not x3330))
+(or x3447 (not x3323))
+(or x3447 (not x3446))
+(or x3330 x3323 x3446 (not x3447))
+(or (not x3065) (not x3251) (not x3346) (not x2938) x3448)
+(or (not x3448) x3065)
+(or (not x3448) x3251)
+(or (not x3448) x3346)
+(or (not x3448) x2938)
+(or x3383 (not x3317))
+(or x3383 (not x3310))
+(or x3383 (not x3448))
+(or x3317 x3310 x3448 (not x3383))
+(or (not x3101) (not x3188) (not x3383) x3449)
+(or (not x3449) x3101)
+(or (not x3449) x3188)
+(or (not x3449) x3383)
+(or x3382 (not x3330))
+(or x3382 (not x3323))
+(or x3382 (not x3449))
+(or x3330 x3323 x3449 (not x3382))
+(or (not x3382) (not x3447) x3450)
+(or (not x3450) x3382)
+(or (not x3450) x3447)
+(or x3451 (not x3450))
+(or x3451 (not x3445))
+(or x3450 x3445 (not x3451))
+(or (not x3387) (not x3358) (not x3076) (not x3451) x3452)
+(or (not x3452) x3387)
+(or (not x3452) x3358)
+(or (not x3452) x3076)
+(or (not x3452) x3451)
+(or x3251 x3053)
+(or x3251 x2938)
+(or (not x3053) (not x2938) (not x3251))
+(or x3065 x3083)
+(or x3065 x2938)
+(or (not x3083) (not x2938) (not x3065))
+(or (not x3065) (not x3251) x3420)
+(or (not x3420) x3065)
+(or (not x3420) x3251)
+(or x3453 (not x3330))
+(or x3453 (not x3323))
+(or x3453 (not x3420))
+(or x3330 x3323 x3420 (not x3453))
+(or (not x3101) (not x3188) (not x3453) x3454)
+(or (not x3454) x3101)
+(or (not x3454) x3188)
+(or (not x3454) x3453)
+(or x3390 (not x3395))
+(or x3390 (not x3454))
+(or x3395 x3454 (not x3390))
+(or (not x3389) (not x3390) (not x3109) (not x2938) x3455)
+(or (not x3455) x3389)
+(or (not x3455) x3390)
+(or (not x3455) x3109)
+(or (not x3455) x2938)
+(or x3384 (not x3317))
+(or x3384 (not x3310))
+(or x3317 x3310 (not x3384))
+(or x3188 x3090)
+(or x3188 x2938)
+(or (not x3090) (not x2938) (not x3188))
+(or x3101 x3118)
+(or x3101 x2938)
+(or (not x3118) (not x2938) (not x3101))
+(or (not x3101) (not x3188) x3404)
+(or (not x3404) x3101)
+(or (not x3404) x3188)
+(or (not x3101) (not x3188) (not x3384) x3456)
+(or (not x3456) x3101)
+(or (not x3456) x3188)
+(or (not x3456) x3384)
+(or x3409 (not x3330))
+(or x3409 (not x3323))
+(or x3330 x3323 (not x3409))
+(or x3392 (not x3330))
+(or x3392 (not x3323))
+(or x3392 (not x3456))
+(or x3330 x3323 x3456 (not x3392))
+(or x3389 x3336)
+(or x3389 x2938)
+(or (not x3336) (not x2938) (not x3389))
+(or (not x3389) (not x3392) x3457)
+(or (not x3457) x3389)
+(or (not x3457) x3392)
+(or x3396 (not x3395))
+(or x3396 (not x3457))
+(or x3395 x3457 (not x3396))
+(or (not x3396) (not x3389) (not x3392) x3458)
+(or (not x3458) x3396)
+(or (not x3458) x3389)
+(or (not x3458) x3392)
+(or x3459 (not x3458))
+(or x3459 (not x3455))
+(or x3458 x3455 (not x3459))
+(or (not x3387) x3110 (not x2938) (not x3459) x3460)
+(or (not x3460) x3387)
+(or (not x3460) (not x3110))
+(or (not x3460) x2938)
+(or (not x3460) x3459)
+(or x3461 (not x3460))
+(or x3461 (not x3452))
+(or x3461 (not x3442))
+(or x3461 (not x3425))
+(or x3460 x3452 x3442 x3425 (not x3461))
+(or (not x3461) (not x2938) x3462)
+(or (not x3462) x3461)
+(or (not x3462) x2938)
+(or x3463 x3337)
+(or x3463 x2938)
+(or (not x3337) (not x2938) (not x3463))
+(or (not x3463) (not x3075) (not x3336) (not x2938) x3464)
+(or (not x3464) x3463)
+(or (not x3464) x3075)
+(or (not x3464) x3336)
+(or (not x3464) x2938)
+(or (not x3337) (not x2938) x3465)
+(or (not x3465) x3337)
+(or (not x3465) x2938)
+(or x3466 (not x3465))
+(or x3466 (not x3464))
+(or x3465 x3464 (not x3466))
+(or (not x3466) (not x2938) x3467)
+(or (not x3467) x3466)
+(or (not x3467) x2938)
+(or (not x3468) (not x3469) x3470)
+(or (not x3470) x3468)
+(or (not x3470) x3469)
+(or x3468 (not x3471) (not x3472) x3473)
+(or (not x3473) (not x3468))
+(or (not x3473) x3471)
+(or (not x3473) x3472)
+(or x3474 (not x3473))
+(or x3474 (not x3470))
+(or x3473 x3470 (not x3474))
+(or (not x3475) (not x2938) (not x3476) (not x3477) (not x3478) (not x3474) x3479)
+(or (not x3479) x3475)
+(or (not x3479) x2938)
+(or (not x3479) x3476)
+(or (not x3479) x3477)
+(or (not x3479) x3478)
+(or (not x3479) x3474)
+(or x3472 x3480)
+(or x3472 x2938)
+(or x3472 (not x2920))
+(or x3472 (not x2894))
+(or x3472 (not x3481))
+(or x3472 (not x3482))
+(or x3472 (not x3483))
+(or x3472 (not x3484))
+(or x3472 (not x3485))
+(or (not x3480) (not x2938) x2920 x2894 x3481 x3482 x3483 x3484 x3485 (not x3472))
+(or x3471 (not x2919))
+(or x3471 x3486)
+(or x3471 x2938)
+(or x3471 (not x2894))
+(or x3471 (not x3487))
+(or x3471 x3488)
+(or x3471 x2938)
+(or x3471 (not x3489))
+(or x3471 (not x3490))
+(or x3471 (not x3482))
+(or x3471 (not x3483))
+(or x3471 (not x3484))
+(or x2919 (not x3486) (not x2938) x2894 x3487 (not x3488) (not x2938) x3489 x3490 x3482 x3483 x3484 (not x3471))
+(or x3490 (not x3471) (not x3472) x3491)
+(or (not x3491) (not x3490))
+(or (not x3491) x3471)
+(or (not x3491) x3472)
+(or x3492 (not x3491))
+(or x3492 (not x3490))
+(or x3491 x3490 (not x3492))
+(or (not x3493) (not x3488) (not x2938) (not x3477) (not x3492) x3494)
+(or (not x3494) x3493)
+(or (not x3494) x3488)
+(or (not x3494) x2938)
+(or (not x3494) x3477)
+(or (not x3494) x3492)
+(or x3495 (not x3496))
+(or x3495 (not x3489))
+(or x3495 (not x3494))
+(or x3495 (not x3479))
+(or x3496 x3489 x3494 x3479 (not x3495))
+(or (not x3497) (not x2938) (not x3495) x3498)
+(or (not x3498) x3497)
+(or (not x3498) x2938)
+(or (not x3498) x3495)
+(or x3499 (not x3498))
+(or x3499 x2938)
+(or x3498 (not x2938) (not x3499))
+(or x3500 x3347)
+(or x3500 x2938)
+(or (not x3347) (not x2938) (not x3500))
+(or (not x3500) (not x3076) (not x3346) (not x2938) x3501)
+(or (not x3501) x3500)
+(or (not x3501) x3076)
+(or (not x3501) x3346)
+(or (not x3501) x2938)
+(or (not x3347) (not x2938) x3502)
+(or (not x3502) x3347)
+(or (not x3502) x2938)
+(or x3503 (not x3502))
+(or x3503 (not x3501))
+(or x3502 x3501 (not x3503))
+(or (not x3503) (not x2938) x3504)
+(or (not x3504) x3503)
+(or (not x3504) x2938)
+(or x3505 x3475)
+(or x3505 x2938)
+(or x3505 (not x3506))
+(or x3505 (not x3489))
+(or x3505 (not x3507))
+(or x3505 (not x3508))
+(or x3505 x2938)
+(or x3505 (not x3468))
+(or (not x3475) (not x2938) x3506 x3489 x3507 x3508 (not x2938) x3468 (not x3505))
+(or x3509 (not x3487))
+(or x3509 (not x3506))
+(or x3509 (not x3510))
+(or x3487 x3506 x3510 (not x3509))
+(or x3511 (not x3487))
+(or x3511 x3488)
+(or x3511 x2938)
+(or x3511 (not x3489))
+(or x3511 x3490)
+(or x3511 (not x2943))
+(or x3487 (not x3488) (not x2938) x3489 (not x3490) x2943 (not x3511))
+(or (not x3511) (not x3509) (not x3505) x3512)
+(or (not x3512) x3511)
+(or (not x3512) x3509)
+(or (not x3512) x3505)
+(or x3513 (not x2943))
+(or x3513 (not x3512))
+(or x2943 x3512 (not x3513))
+(or (not x3497) (not x2938) (not x3513) (not x3497) (not x2938) x3514)
+(or (not x3514) x3497)
+(or (not x3514) x2938)
+(or (not x3514) x3513)
+(or (not x3514) x3497)
+(or (not x3514) x2938)
+(or (not x3144) (not x3145) (not x3146) x3147 (not x3148) x3149 (not x3150) (not x3151) (not x3152) x3153 (not x3154) (not x3155) x3298)
+(or (not x3298) x3144)
+(or (not x3298) x3145)
+(or (not x3298) x3146)
+(or (not x3298) (not x3147))
+(or (not x3298) x3148)
+(or (not x3298) (not x3149))
+(or (not x3298) x3150)
+(or (not x3298) x3151)
+(or (not x3298) x3152)
+(or (not x3298) (not x3153))
+(or (not x3298) x3154)
+(or (not x3298) x3155)
+(or x3280 x3265)
+(or x3280 x2938)
+(or x3280 (not x3278))
+(or (not x3265) (not x2938) x3278 (not x3280))
+(or x3515 x3265)
+(or x3515 x2938)
+(or x3515 (not x3278))
+(or x3515 (not x3516))
+(or x3515 (not x3517))
+(or (not x3265) (not x2938) x3278 x3516 x3517 (not x3515))
+(or x3274 (not x3142))
+(or x3274 x2938)
+(or x3274 (not x3518))
+(or x3274 x2938)
+(or x3142 (not x2938) x3518 (not x2938) (not x3274))
+(or (not x3274) x3142 (not x2938) x3519)
+(or (not x3519) x3274)
+(or (not x3519) (not x3142))
+(or (not x3519) x2938)
+(or x3520 (not x3521))
+(or x3520 x3271)
+(or x3520 x2938)
+(or x3520 (not x3516))
+(or x3520 (not x3519))
+(or x3521 (not x3271) (not x2938) x3516 x3519 (not x3520))
+(or (not x3520) (not x3515) x3143)
+(or (not x3143) x3520)
+(or (not x3143) x3515)
+(or x3522 x3293)
+(or x3522 (not x3294))
+(or x3522 (not x3155))
+(or x3522 x3154)
+(or (not x3293) x3294 x3155 (not x3154) (not x3522))
+(or (not x3523) (not x3522) x3524)
+(or (not x3524) x3523)
+(or (not x3524) x3522)
+(or x3153 (not x3288) x3525)
+(or (not x3525) (not x3153))
+(or (not x3525) x3288)
+(or (not x3153) (not x3290) x3526)
+(or (not x3526) x3153)
+(or (not x3526) x3290)
+(or x3527 (not x3526))
+(or x3527 (not x3525))
+(or x3526 x3525 (not x3527))
+(or x3523 x3293)
+(or x3523 (not x3294))
+(or x3523 (not x3155))
+(or x3523 (not x3154))
+(or (not x3293) x3294 x3155 x3154 (not x3523))
+(or (not x3293) x3294 x3155 (not x3154) x3286)
+(or (not x3286) x3293)
+(or (not x3286) (not x3294))
+(or (not x3286) (not x3155))
+(or (not x3286) x3154)
+(or (not x3293) x3294 x3155 (not x3154) (not x3523) (not x3527) x3528)
+(or (not x3528) x3293)
+(or (not x3528) (not x3294))
+(or (not x3528) (not x3155))
+(or (not x3528) x3154)
+(or (not x3528) x3523)
+(or (not x3528) x3527)
+(or (not x3293) x3294 x3155 x3154 x3285)
+(or (not x3285) x3293)
+(or (not x3285) (not x3294))
+(or (not x3285) (not x3155))
+(or (not x3285) (not x3154))
+(or (not x3293) x3294 x3155 x3154 (not x3296) x3529)
+(or (not x3529) x3293)
+(or (not x3529) (not x3294))
+(or (not x3529) (not x3155))
+(or (not x3529) (not x3154))
+(or (not x3529) x3296)
+(or x3530 (not x3529))
+(or x3530 (not x3528))
+(or x3530 (not x3524))
+(or x3529 x3528 x3524 (not x3530))
+(or x3270 x3144)
+(or x3270 x3145)
+(or x3270 x3146)
+(or x3270 (not x3147))
+(or x3270 x3148)
+(or x3270 (not x3149))
+(or x3270 x3150)
+(or x3270 x3151)
+(or x3270 x3152)
+(or x3270 (not x3153))
+(or x3270 x3154)
+(or x3270 x3155)
+(or (not x3144) (not x3145) (not x3146) x3147 (not x3148) x3149 (not x3150) (not x3151) (not x3152) x3153 (not x3154) (not x3155) (not x3270))
+(or x3259 (not x3142))
+(or x3259 x2938)
+(or x3142 (not x2938) (not x3259))
+(or x3301 (not x3531))
+(or x3301 (not x3142))
+(or x3301 x2938)
+(or x3531 x3142 (not x2938) (not x3301))
+(or (not x3273) (not x3271) (not x2938) (not x3267) (not x3301) x3532)
+(or (not x3532) x3273)
+(or (not x3532) x3271)
+(or (not x3532) x2938)
+(or (not x3532) x3267)
+(or (not x3532) x3301)
+(or x3161 (not x3532))
+(or x3161 (not x3533))
+(or x3532 x3533 (not x3161))
+(or (not x3161) (not x3270) (not x3530) x3534)
+(or (not x3534) x3161)
+(or (not x3534) x3270)
+(or (not x3534) x3530)
+(or x3535 (not x3534))
+(or x3535 (not x3143))
+(or x3535 (not x3298))
+(or x3534 x3143 x3298 (not x3535))
+(or x3268 (not x3521))
+(or x3268 x3271)
+(or x3268 x2938)
+(or x3521 (not x3271) (not x2938) (not x3268))
+(or (not x3265) (not x2938) (not x3266) (not x3267) (not x3268) x3533)
+(or (not x3533) x3265)
+(or (not x3533) x2938)
+(or (not x3533) x3266)
+(or (not x3533) x3267)
+(or (not x3533) x3268)
+(or (not x3265) (not x2938) (not x3266) (not x3267) (not x3268) (not x3535) x3536)
+(or (not x3536) x3265)
+(or (not x3536) x2938)
+(or (not x3536) x3266)
+(or (not x3536) x3267)
+(or (not x3536) x3268)
+(or (not x3536) x3535)
+(or x3142 (not x2938) x3518 (not x2938) x3531)
+(or (not x3531) (not x3142))
+(or (not x3531) x2938)
+(or (not x3531) (not x3518))
+(or (not x3531) x2938)
+(or (not x3265) (not x2938) x3521)
+(or (not x3521) x3265)
+(or (not x3521) x2938)
+(or x3267 (not x3521))
+(or x3267 (not x3278))
+(or x3521 x3278 (not x3267))
+(or (not x3271) (not x2938) x3278)
+(or (not x3278) x3271)
+(or (not x3278) x2938)
+(or (not x3273) (not x3271) (not x2938) x3517)
+(or (not x3517) x3273)
+(or (not x3517) x3271)
+(or (not x3517) x2938)
+(or (not x3273) (not x3271) (not x2938) (not x3267) x3142 (not x2938) x3518 (not x2938) x3537)
+(or (not x3537) x3273)
+(or (not x3537) x3271)
+(or (not x3537) x2938)
+(or (not x3537) x3267)
+(or (not x3537) (not x3142))
+(or (not x3537) x2938)
+(or (not x3537) (not x3518))
+(or (not x3537) x2938)
+(or x3305 (not x3258))
+(or x3305 (not x2943))
+(or x3258 x2943 (not x3305))
+(or x3266 x3271)
+(or x3266 x2938)
+(or (not x3271) (not x2938) (not x3266))
+(or x3273 x3265)
+(or x3273 x2938)
+(or (not x3265) (not x2938) (not x3273))
+(or (not x3273) (not x3266) x3516)
+(or (not x3516) x3273)
+(or (not x3516) x3266)
+(or (not x3273) (not x3266) (not x3305) x3538)
+(or (not x3538) x3273)
+(or (not x3538) x3266)
+(or (not x3538) x3305)
+(or x3539 (not x3538))
+(or x3539 (not x3537))
+(or x3539 (not x3536))
+(or x3538 x3537 x3536 (not x3539))
+(or (not x136) (not x3539) x3540)
+(or (not x3540) x136)
+(or (not x3540) x3539)
+(or x3541 (not x3540))
+(or x3541 (not x3258))
+(or x3540 x3258 (not x3541))
+(or (not x3261) (not x3541) x3542)
+(or (not x3542) x3261)
+(or (not x3542) x3541)
+(or x3543 (not x3542))
+(or x3543 (not x3514))
+(or x3542 x3514 (not x3543))
+(or (not x3543) (not x2938) x3544)
+(or (not x3544) x3543)
+(or (not x3544) x2938)
+(or (not x3053) (not x2938) x3310)
+(or (not x3310) x3053)
+(or (not x3310) x2938)
+(or (not x3545) (not x3131) (not x3546) x3547)
+(or (not x3547) x3545)
+(or (not x3547) x3131)
+(or (not x3547) x3546)
+(or (not x3061) (not x2938) (not x3073) (not x3074) (not x3075) (not x3076) (not x3548) x3549)
+(or (not x3549) x3061)
+(or (not x3549) x2938)
+(or (not x3549) x3073)
+(or (not x3549) x3074)
+(or (not x3549) x3075)
+(or (not x3549) x3076)
+(or (not x3549) x3548)
+(or x3550 (not x3549))
+(or x3550 (not x3547))
+(or x3549 x3547 (not x3550))
+(or (not x3550) (not x3053) (not x2938) x3422)
+(or (not x3422) x3550)
+(or (not x3422) x3053)
+(or (not x3422) x2938)
+(or (not x3083) (not x2938) x3317)
+(or (not x3317) x3083)
+(or (not x3317) x2938)
+(or (not x3545) (not x3073) (not x3074) (not x3075) (not x3076) x3551)
+(or (not x3551) x3545)
+(or (not x3551) x3073)
+(or (not x3551) x3074)
+(or (not x3551) x3075)
+(or (not x3551) x3076)
+(or (not x3061) (not x2938) (not x3073) (not x3074) (not x3075) (not x3076) (not x3060) (not x2938) x3552)
+(or (not x3552) x3061)
+(or (not x3552) x2938)
+(or (not x3552) x3073)
+(or (not x3552) x3074)
+(or (not x3552) x3075)
+(or (not x3552) x3076)
+(or (not x3552) x3060)
+(or (not x3552) x2938)
+(or x3131 (not x3552))
+(or x3131 (not x3551))
+(or x3552 x3551 (not x3131))
+(or (not x3131) (not x3126) (not x2938) (not x3083) (not x2938) x3421)
+(or (not x3421) x3131)
+(or (not x3421) x3126)
+(or (not x3421) x2938)
+(or (not x3421) x3083)
+(or (not x3421) x2938)
+(or x3553 (not x3421))
+(or x3553 (not x3422))
+(or x3421 x3422 (not x3553))
+(or x3554 (not x3555))
+(or x3554 (not x3556))
+(or x3554 (not x3555))
+(or x3555 x3556 x3555 (not x3554))
+(or (not x3557) (not x3060) (not x2938) x3555)
+(or (not x3555) x3557)
+(or (not x3555) x3060)
+(or (not x3555) x2938)
+(or (not x3126) (not x2938) x3128)
+(or (not x3128) x3126)
+(or (not x3128) x2938)
+(or (not x3073) (not x3074) (not x3075) (not x3076) (not x3060) (not x2938) (not x3126) (not x2938) x3556)
+(or (not x3556) x3073)
+(or (not x3556) x3074)
+(or (not x3556) x3075)
+(or (not x3556) x3076)
+(or (not x3556) x3060)
+(or (not x3556) x2938)
+(or (not x3556) x3126)
+(or (not x3556) x2938)
+(or x3558 (not x3556))
+(or x3558 (not x3555))
+(or x3556 x3555 (not x3558))
+(or (not x3559) (not x3558) (not x3554) (not x3243) (not x2938) x3560)
+(or (not x3560) x3559)
+(or (not x3560) x3558)
+(or (not x3560) x3554)
+(or (not x3560) x3243)
+(or (not x3560) x2938)
+(or x3546 x3126)
+(or x3546 x2938)
+(or (not x3126) (not x2938) (not x3546))
+(or x3078 (not x3412))
+(or x3078 (not x3413))
+(or x3078 (not x3414))
+(or x3078 (not x3415))
+(or x3412 x3413 x3414 x3415 (not x3078))
+(or x3557 (not x3412))
+(or x3557 (not x3413))
+(or x3557 (not x3414))
+(or x3557 (not x3415))
+(or x3557 x3060)
+(or x3557 x2938)
+(or x3412 x3413 x3414 x3415 (not x3060) (not x2938) (not x3557))
+(or x3561 (not x3412))
+(or x3561 (not x3413))
+(or x3561 (not x3414))
+(or x3561 (not x3415))
+(or x3561 x3060)
+(or x3561 x2938)
+(or x3561 x3126)
+(or x3561 x2938)
+(or x3412 x3413 x3414 x3415 (not x3060) (not x2938) (not x3126) (not x2938) (not x3561))
+(or x3548 x3060)
+(or x3548 x2938)
+(or (not x3060) (not x2938) (not x3548))
+(or (not x3060) (not x2938) x3068)
+(or (not x3068) x3060)
+(or (not x3068) x2938)
+(or (not x3073) (not x3074) (not x3075) (not x3076) (not x3060) (not x2938) x3562)
+(or (not x3562) x3073)
+(or (not x3562) x3074)
+(or (not x3562) x3075)
+(or (not x3562) x3076)
+(or (not x3562) x3060)
+(or (not x3562) x2938)
+(or x3559 (not x3562))
+(or x3559 x3060)
+(or x3559 x2938)
+(or x3562 (not x3060) (not x2938) (not x3559))
+(or (not x3559) (not x3561) (not x3559) (not x3249) (not x2938) x3563)
+(or (not x3563) x3559)
+(or (not x3563) x3561)
+(or (not x3563) x3559)
+(or (not x3563) x3249)
+(or (not x3563) x2938)
+(or x3564 (not x3563))
+(or x3564 (not x3560))
+(or x3563 x3560 (not x3564))
+(or (not x3074) (not x3076) (not x3075) (not x3074) (not x3564) (not x3553) x3565)
+(or (not x3565) x3074)
+(or (not x3565) x3076)
+(or (not x3565) x3075)
+(or (not x3565) x3074)
+(or (not x3565) x3564)
+(or (not x3565) x3553)
+(or (not x3090) (not x2938) x3323)
+(or (not x3323) x3090)
+(or (not x3323) x2938)
+(or (not x3545) (not x3172) (not x3566) x3567)
+(or (not x3567) x3545)
+(or (not x3567) x3172)
+(or (not x3567) x3566)
+(or (not x3061) (not x2938) (not x3073) (not x3109) (not x2938) x3110 (not x2938) (not x3076) (not x3111) (not x3075) (not x3076) (not x3568) x3569)
+(or (not x3569) x3061)
+(or (not x3569) x2938)
+(or (not x3569) x3073)
+(or (not x3569) x3109)
+(or (not x3569) x2938)
+(or (not x3569) (not x3110))
+(or (not x3569) x2938)
+(or (not x3569) x3076)
+(or (not x3569) x3111)
+(or (not x3569) x3075)
+(or (not x3569) x3076)
+(or (not x3569) x3568)
+(or x3570 (not x3569))
+(or x3570 (not x3567))
+(or x3569 x3567 (not x3570))
+(or (not x3570) (not x3090) (not x2938) x3439)
+(or (not x3439) x3570)
+(or (not x3439) x3090)
+(or (not x3439) x2938)
+(or (not x3118) (not x2938) x3330)
+(or (not x3330) x3118)
+(or (not x3330) x2938)
+(or x3545 x3061)
+(or x3545 x2938)
+(or (not x3061) (not x2938) (not x3545))
+(or (not x3545) (not x3073) (not x3109) (not x2938) x3110 (not x2938) (not x3076) (not x3111) (not x3075) (not x3076) x3571)
+(or (not x3571) x3545)
+(or (not x3571) x3073)
+(or (not x3571) x3109)
+(or (not x3571) x2938)
+(or (not x3571) (not x3110))
+(or (not x3571) x2938)
+(or (not x3571) x3076)
+(or (not x3571) x3111)
+(or (not x3571) x3075)
+(or (not x3571) x3076)
+(or (not x3061) (not x2938) x3124)
+(or (not x3124) x3061)
+(or (not x3124) x2938)
+(or (not x3061) (not x2938) (not x3073) (not x3109) (not x2938) x3110 (not x2938) (not x3076) (not x3111) (not x3075) (not x3076) (not x3097) (not x2938) x3572)
+(or (not x3572) x3061)
+(or (not x3572) x2938)
+(or (not x3572) x3073)
+(or (not x3572) x3109)
+(or (not x3572) x2938)
+(or (not x3572) (not x3110))
+(or (not x3572) x2938)
+(or (not x3572) x3076)
+(or (not x3572) x3111)
+(or (not x3572) x3075)
+(or (not x3572) x3076)
+(or (not x3572) x3097)
+(or (not x3572) x2938)
+(or x3172 (not x3572))
+(or x3172 (not x3571))
+(or x3572 x3571 (not x3172))
+(or (not x3172) (not x3167) (not x2938) (not x3118) (not x2938) x3438)
+(or (not x3438) x3172)
+(or (not x3438) x3167)
+(or (not x3438) x2938)
+(or (not x3438) x3118)
+(or (not x3438) x2938)
+(or x3573 (not x3438))
+(or x3573 (not x3439))
+(or x3438 x3439 (not x3573))
+(or (not x3574) (not x3575) (not x3576) (not x3180) (not x2938) x3577)
+(or (not x3577) x3574)
+(or (not x3577) x3575)
+(or (not x3577) x3576)
+(or (not x3577) x3180)
+(or (not x3577) x2938)
+(or (not x3574) (not x3578) (not x3574) (not x3186) (not x2938) x3579)
+(or (not x3579) x3574)
+(or (not x3579) x3578)
+(or (not x3579) x3574)
+(or (not x3579) x3186)
+(or (not x3579) x2938)
+(or x3580 (not x3579))
+(or x3580 (not x3577))
+(or x3579 x3577 (not x3580))
+(or (not x3076) (not x3075) (not x3109) (not x2938) x3110 (not x2938) (not x3076) (not x3111) (not x3580) x3581)
+(or (not x3581) x3076)
+(or (not x3581) x3075)
+(or (not x3581) x3109)
+(or (not x3581) x2938)
+(or (not x3581) (not x3110))
+(or (not x3581) x2938)
+(or (not x3581) x3076)
+(or (not x3581) x3111)
+(or (not x3581) x3580)
+(or (not x3574) (not x3575) (not x3576) (not x3192) (not x2938) x3582)
+(or (not x3582) x3574)
+(or (not x3582) x3575)
+(or (not x3582) x3576)
+(or (not x3582) x3192)
+(or (not x3582) x2938)
+(or (not x3574) (not x3578) (not x3574) (not x3197) (not x2938) x3583)
+(or (not x3583) x3574)
+(or (not x3583) x3578)
+(or (not x3583) x3574)
+(or (not x3583) x3197)
+(or (not x3583) x2938)
+(or x3584 (not x3583))
+(or x3584 (not x3582))
+(or x3583 x3582 (not x3584))
+(or (not x3076) (not x3075) (not x3109) (not x2938) x3110 (not x2938) (not x3076) (not x3111) (not x3584) x3585)
+(or (not x3585) x3076)
+(or (not x3585) x3075)
+(or (not x3585) x3109)
+(or (not x3585) x2938)
+(or (not x3585) (not x3110))
+(or (not x3585) x2938)
+(or (not x3585) x3076)
+(or (not x3585) x3111)
+(or (not x3585) x3584)
+(or (not x3574) (not x3575) (not x3576) (not x3202) (not x2938) x3586)
+(or (not x3586) x3574)
+(or (not x3586) x3575)
+(or (not x3586) x3576)
+(or (not x3586) x3202)
+(or (not x3586) x2938)
+(or (not x3574) (not x3578) (not x3574) (not x3207) (not x2938) x3587)
+(or (not x3587) x3574)
+(or (not x3587) x3578)
+(or (not x3587) x3574)
+(or (not x3587) x3207)
+(or (not x3587) x2938)
+(or x3588 (not x3587))
+(or x3588 (not x3586))
+(or x3587 x3586 (not x3588))
+(or (not x3076) (not x3075) (not x3109) (not x2938) x3110 (not x2938) (not x3076) (not x3111) (not x3588) x3589)
+(or (not x3589) x3076)
+(or (not x3589) x3075)
+(or (not x3589) x3109)
+(or (not x3589) x2938)
+(or (not x3589) (not x3110))
+(or (not x3589) x2938)
+(or (not x3589) x3076)
+(or (not x3589) x3111)
+(or (not x3589) x3588)
+(or (not x3574) (not x3575) (not x3576) (not x3212) (not x2938) x3590)
+(or (not x3590) x3574)
+(or (not x3590) x3575)
+(or (not x3590) x3576)
+(or (not x3590) x3212)
+(or (not x3590) x2938)
+(or (not x3574) (not x3578) (not x3574) (not x3217) (not x2938) x3591)
+(or (not x3591) x3574)
+(or (not x3591) x3578)
+(or (not x3591) x3574)
+(or (not x3591) x3217)
+(or (not x3591) x2938)
+(or x3592 (not x3591))
+(or x3592 (not x3590))
+(or x3591 x3590 (not x3592))
+(or (not x3076) (not x3075) (not x3109) (not x2938) x3110 (not x2938) (not x3076) (not x3111) (not x3592) x3593)
+(or (not x3593) x3076)
+(or (not x3593) x3075)
+(or (not x3593) x3109)
+(or (not x3593) x2938)
+(or (not x3593) (not x3110))
+(or (not x3593) x2938)
+(or (not x3593) x3076)
+(or (not x3593) x3111)
+(or (not x3593) x3592)
+(or (not x3574) (not x3575) (not x3576) (not x3222) (not x2938) x3594)
+(or (not x3594) x3574)
+(or (not x3594) x3575)
+(or (not x3594) x3576)
+(or (not x3594) x3222)
+(or (not x3594) x2938)
+(or (not x3574) (not x3578) (not x3574) (not x3227) (not x2938) x3595)
+(or (not x3595) x3574)
+(or (not x3595) x3578)
+(or (not x3595) x3574)
+(or (not x3595) x3227)
+(or (not x3595) x2938)
+(or x3596 (not x3595))
+(or x3596 (not x3594))
+(or x3595 x3594 (not x3596))
+(or (not x3076) (not x3075) (not x3109) (not x2938) x3110 (not x2938) (not x3076) (not x3111) (not x3596) x3597)
+(or (not x3597) x3076)
+(or (not x3597) x3075)
+(or (not x3597) x3109)
+(or (not x3597) x2938)
+(or (not x3597) (not x3110))
+(or (not x3597) x2938)
+(or (not x3597) x3076)
+(or (not x3597) x3111)
+(or (not x3597) x3596)
+(or x3576 (not x3598))
+(or x3576 (not x3599))
+(or x3576 (not x3598))
+(or x3598 x3599 x3598 (not x3576))
+(or (not x3600) (not x3097) (not x2938) x3598)
+(or (not x3598) x3600)
+(or (not x3598) x3097)
+(or (not x3598) x2938)
+(or (not x3167) (not x2938) x3169)
+(or (not x3169) x3167)
+(or (not x3169) x2938)
+(or (not x3073) (not x3109) (not x2938) x3110 (not x2938) (not x3076) (not x3111) (not x3075) (not x3076) (not x3097) (not x2938) (not x3167) (not x2938) x3599)
+(or (not x3599) x3073)
+(or (not x3599) x3109)
+(or (not x3599) x2938)
+(or (not x3599) (not x3110))
+(or (not x3599) x2938)
+(or (not x3599) x3076)
+(or (not x3599) x3111)
+(or (not x3599) x3075)
+(or (not x3599) x3076)
+(or (not x3599) x3097)
+(or (not x3599) x2938)
+(or (not x3599) x3167)
+(or (not x3599) x2938)
+(or x3575 (not x3599))
+(or x3575 (not x3598))
+(or x3599 x3598 (not x3575))
+(or (not x3574) (not x3575) (not x3576) (not x3232) (not x2938) x3601)
+(or (not x3601) x3574)
+(or (not x3601) x3575)
+(or (not x3601) x3576)
+(or (not x3601) x3232)
+(or (not x3601) x2938)
+(or x3566 x3167)
+(or x3566 x2938)
+(or (not x3167) (not x2938) (not x3566))
+(or x3365 x3109)
+(or x3365 x2938)
+(or x3365 (not x3110))
+(or x3365 x2938)
+(or (not x3109) (not x2938) x3110 (not x2938) (not x3365))
+(or x3074 x3109)
+(or x3074 x2938)
+(or x3074 (not x3110))
+(or x3074 x2938)
+(or x3074 (not x3415))
+(or x3074 (not x3433))
+(or (not x3109) (not x2938) x3110 (not x2938) x3415 x3433 (not x3074))
+(or (not x3602) (not x2938) (not x3603) (not x2938) (not x3604) (not x2938) x3412)
+(or (not x3412) x3602)
+(or (not x3412) x2938)
+(or (not x3412) x3603)
+(or (not x3412) x2938)
+(or (not x3412) x3604)
+(or (not x3412) x2938)
+(or x3113 (not x3412))
+(or x3113 x3109)
+(or x3113 x2938)
+(or x3113 (not x3110))
+(or x3113 x2938)
+(or x3113 (not x3415))
+(or x3113 (not x3433))
+(or x3113 (not x3414))
+(or x3113 (not x3415))
+(or x3412 (not x3109) (not x2938) x3110 (not x2938) x3415 x3433 x3414 x3415 (not x3113))
+(or x3600 (not x3412))
+(or x3600 x3109)
+(or x3600 x2938)
+(or x3600 (not x3110))
+(or x3600 x2938)
+(or x3600 (not x3415))
+(or x3600 (not x3433))
+(or x3600 (not x3414))
+(or x3600 (not x3415))
+(or x3600 x3097)
+(or x3600 x2938)
+(or x3412 (not x3109) (not x2938) x3110 (not x2938) x3415 x3433 x3414 x3415 (not x3097) (not x2938) (not x3600))
+(or x3578 (not x3412))
+(or x3578 x3109)
+(or x3578 x2938)
+(or x3578 (not x3110))
+(or x3578 x2938)
+(or x3578 (not x3415))
+(or x3578 (not x3433))
+(or x3578 (not x3414))
+(or x3578 (not x3415))
+(or x3578 x3097)
+(or x3578 x2938)
+(or x3578 x3167)
+(or x3578 x2938)
+(or x3412 (not x3109) (not x2938) x3110 (not x2938) x3415 x3433 x3414 x3415 (not x3097) (not x2938) (not x3167) (not x2938) (not x3578))
+(or x3568 x3097)
+(or x3568 x2938)
+(or (not x3097) (not x2938) (not x3568))
+(or (not x3097) (not x2938) x3104)
+(or (not x3104) x3097)
+(or (not x3104) x2938)
+(or x3073 x3602)
+(or x3073 x2938)
+(or x3073 x3603)
+(or x3073 x2938)
+(or x3073 x3604)
+(or x3073 x2938)
+(or (not x3602) (not x2938) (not x3603) (not x2938) (not x3604) (not x2938) (not x3073))
+(or (not x3073) (not x3109) (not x2938) x3110 (not x2938) (not x3076) (not x3111) (not x3075) (not x3076) (not x3097) (not x2938) x3605)
+(or (not x3605) x3073)
+(or (not x3605) x3109)
+(or (not x3605) x2938)
+(or (not x3605) (not x3110))
+(or (not x3605) x2938)
+(or (not x3605) x3076)
+(or (not x3605) x3111)
+(or (not x3605) x3075)
+(or (not x3605) x3076)
+(or (not x3605) x3097)
+(or (not x3605) x2938)
+(or x3574 (not x3605))
+(or x3574 x3097)
+(or x3574 x2938)
+(or x3605 (not x3097) (not x2938) (not x3574))
+(or (not x3574) (not x3578) (not x3574) (not x3237) (not x2938) x3606)
+(or (not x3606) x3574)
+(or (not x3606) x3578)
+(or (not x3606) x3574)
+(or (not x3606) x3237)
+(or (not x3606) x2938)
+(or x3607 (not x3606))
+(or x3607 (not x3601))
+(or x3606 x3601 (not x3607))
+(or (not x3076) (not x3075) (not x3109) (not x2938) x3110 (not x2938) (not x3076) (not x3111) (not x3607) x3608)
+(or (not x3608) x3076)
+(or (not x3608) x3075)
+(or (not x3608) x3109)
+(or (not x3608) x2938)
+(or (not x3608) (not x3110))
+(or (not x3608) x2938)
+(or (not x3608) x3076)
+(or (not x3608) x3111)
+(or (not x3608) x3607)
+(or x3609 (not x3608))
+(or x3609 (not x3597))
+(or x3609 (not x3593))
+(or x3609 (not x3589))
+(or x3609 (not x3585))
+(or x3609 (not x3581))
+(or x3608 x3597 x3593 x3589 x3585 x3581 (not x3609))
+(or (not x3109) (not x2938) x3110 (not x2938) (not x3076) (not x3111) x3413)
+(or (not x3413) x3109)
+(or (not x3413) x2938)
+(or (not x3413) (not x3110))
+(or (not x3413) x2938)
+(or (not x3413) x3076)
+(or (not x3413) x3111)
+(or (not x3109) (not x2938) x3110 (not x2938) (not x3076) (not x3111) (not x3609) (not x3573) x3610)
+(or (not x3610) x3109)
+(or (not x3610) x2938)
+(or (not x3610) (not x3110))
+(or (not x3610) x2938)
+(or (not x3610) x3076)
+(or (not x3610) x3111)
+(or (not x3610) x3609)
+(or (not x3610) x3573)
+(or x3611 (not x3610))
+(or x3611 (not x3565))
+(or x3610 x3565 (not x3611))
+(or x3111 (not x3612))
+(or x3111 (not x3613))
+(or x3612 x3613 (not x3111))
+(or x3075 (not x3612))
+(or x3075 (not x3613))
+(or x3075 (not x3415))
+(or x3612 x3613 x3415 (not x3075))
+(or (not x3075) (not x3611) x3614)
+(or (not x3614) x3075)
+(or (not x3614) x3611)
+(or (not x3336) (not x2938) x3395)
+(or (not x3395) x3336)
+(or (not x3395) x2938)
+(or (not x3387) (not x3358) x3433)
+(or (not x3433) x3387)
+(or (not x3433) x3358)
+(or (not x3387) (not x3358) (not x3076) x3414)
+(or (not x3414) x3387)
+(or (not x3414) x3358)
+(or (not x3414) x3076)
+(or (not x3387) (not x3358) (not x3076) (not x3336) (not x2938) x3615)
+(or (not x3615) x3387)
+(or (not x3615) x3358)
+(or (not x3615) x3076)
+(or (not x3615) x3336)
+(or (not x3615) x2938)
+(or x3616 (not x3615))
+(or x3616 (not x3614))
+(or x3615 x3614 (not x3616))
+(or x3358 (not x3110))
+(or x3358 x2938)
+(or x3110 (not x2938) (not x3358))
+(or (not x3109) (not x2938) x3612)
+(or (not x3612) x3109)
+(or (not x3612) x2938)
+(or x3076 (not x3612))
+(or x3076 (not x3110))
+(or x3076 x2938)
+(or x3612 x3110 (not x2938) (not x3076))
+(or (not x3076) (not x3616) x3617)
+(or (not x3617) x3076)
+(or (not x3617) x3616)
+(or x3110 (not x2938) x3613)
+(or (not x3613) (not x3110))
+(or (not x3613) x2938)
+(or x3387 x3109)
+(or x3387 x2938)
+(or (not x3109) (not x2938) (not x3387))
+(or (not x3387) x3110 (not x2938) x3415)
+(or (not x3415) x3387)
+(or (not x3415) (not x3110))
+(or (not x3415) x2938)
+(or (not x3387) x3110 (not x2938) (not x3346) (not x2938) x3618)
+(or (not x3618) x3387)
+(or (not x3618) (not x3110))
+(or (not x3618) x2938)
+(or (not x3618) x3346)
+(or (not x3618) x2938)
+(or x3619 (not x3618))
+(or x3619 (not x3617))
+(or x3618 x3617 (not x3619))
+(or (not x3619) (not x2938) x3620)
+(or (not x3620) x3619)
+(or (not x3620) x2938)
+(or (not x3621) (not x3622) (not x3602) (not x2938) x3623)
+(or (not x3623) x3621)
+(or (not x3623) x3622)
+(or (not x3623) x3602)
+(or (not x3623) x2938)
+(or (not x3624) (not x3625) x3626)
+(or (not x3626) x3624)
+(or (not x3626) x3625)
+(or x3627 (not x3626))
+(or x3627 (not x3623))
+(or x3626 x3623 (not x3627))
+(or (not x3628) (not x3627) x3629)
+(or (not x3629) x3628)
+(or (not x3629) x3627)
+(or (not x3624) (not x3602) (not x2938) x3630)
+(or (not x3630) x3624)
+(or (not x3630) x3602)
+(or (not x3630) x2938)
+(or (not x3621) (not x3622) (not x3625) x3631)
+(or (not x3631) x3621)
+(or (not x3631) x3622)
+(or (not x3631) x3625)
+(or x3632 (not x3631))
+(or x3632 (not x3630))
+(or x3631 x3630 (not x3632))
+(or (not x3633) (not x2938) (not x3632) x3634)
+(or (not x3634) x3633)
+(or (not x3634) x2938)
+(or (not x3634) x3632)
+(or x3635 (not x3634))
+(or x3635 (not x3629))
+(or x3634 x3629 (not x3635))
+(or (not x3635) (not x2938) x3636)
+(or (not x3636) x3635)
+(or (not x3636) x2938)
+(or (not x3475) (not x2938) (not x3476) (not x3477) (not x3478) (not x3637) (not x3488) (not x2938) x3638)
+(or (not x3638) x3475)
+(or (not x3638) x2938)
+(or (not x3638) x3476)
+(or (not x3638) x3477)
+(or (not x3638) x3478)
+(or (not x3638) x3637)
+(or (not x3638) x3488)
+(or (not x3638) x2938)
+(or (not x3493) (not x3488) (not x2938) (not x3477) (not x3490) (not x3639) (not x3488) (not x2938) x3640)
+(or (not x3640) x3493)
+(or (not x3640) x3488)
+(or (not x3640) x2938)
+(or (not x3640) x3477)
+(or (not x3640) x3490)
+(or (not x3640) x3639)
+(or (not x3640) x3488)
+(or (not x3640) x2938)
+(or (not x3497) (not x2938) x3258)
+(or (not x3258) x3497)
+(or (not x3258) x2938)
+(or (not x3497) (not x2938) (not x136) x3510)
+(or (not x3510) x3497)
+(or (not x3510) x2938)
+(or (not x3510) x136)
+(or x3641 (not x3510))
+(or x3641 (not x3506))
+(or x3510 x3506 (not x3641))
+(or (not x3493) (not x3476) (not x3641) x3642)
+(or (not x3642) x3493)
+(or (not x3642) x3476)
+(or (not x3642) x3641)
+(or (not x3477) (not x3478) (not x3643) (not x3488) (not x2938) x3644)
+(or (not x3644) x3477)
+(or (not x3644) x3478)
+(or (not x3644) x3643)
+(or (not x3644) x3488)
+(or (not x3644) x2938)
+(or x3645 (not x3644))
+(or x3645 (not x3642))
+(or x3645 (not x3640))
+(or x3645 (not x3638))
+(or x3644 x3642 x3640 x3638 (not x3645))
+(or (not x3645) (not x2938) x3646)
+(or (not x3646) x3645)
+(or (not x3646) x2938)
+(or x3469 (not x3508))
+(or x3469 x2938)
+(or x3508 (not x2938) (not x3469))
+(or x3637 (not x3508))
+(or x3637 x2938)
+(or x3637 (not x3468))
+(or x3508 (not x2938) x3468 (not x3637))
+(or (not x3475) (not x2938) (not x3476) (not x3477) (not x3478) (not x3637) (not x3475) (not x2938) x3647)
+(or (not x3647) x3475)
+(or (not x3647) x2938)
+(or (not x3647) x3476)
+(or (not x3647) x3477)
+(or (not x3647) x3478)
+(or (not x3647) x3637)
+(or (not x3647) x3475)
+(or (not x3647) x2938)
+(or x3639 x3490)
+(or x3639 (not x2943))
+(or (not x3490) x2943 (not x3639))
+(or (not x3490) (not x3639) (not x3475) (not x2938) x3648)
+(or (not x3648) x3490)
+(or (not x3648) x3639)
+(or (not x3648) x3475)
+(or (not x3648) x2938)
+(or (not x3490) x2943 x3649)
+(or (not x3649) x3490)
+(or (not x3649) (not x2943))
+(or x3650 x3490)
+(or x3650 (not x3649))
+(or (not x3490) x3649 (not x3650))
+(or (not x3650) x3490 x3651)
+(or (not x3651) x3650)
+(or (not x3651) (not x3490))
+(or x3652 (not x3651))
+(or x3652 (not x3648))
+(or x3651 x3648 (not x3652))
+(or (not x3493) (not x3488) (not x2938) (not x3477) (not x3652) x3653)
+(or (not x3653) x3493)
+(or (not x3653) x3488)
+(or (not x3653) x2938)
+(or (not x3653) x3477)
+(or (not x3653) x3652)
+(or x3261 x3497)
+(or x3261 x2938)
+(or (not x3497) (not x2938) (not x3261))
+(or x3654 x3497)
+(or x3654 x2938)
+(or x3654 (not x2894))
+(or (not x3497) (not x2938) x2894 (not x3654))
+(or (not x3493) (not x3476) (not x3654) (not x3475) (not x2938) x3655)
+(or (not x3655) x3493)
+(or (not x3655) x3476)
+(or (not x3655) x3654)
+(or (not x3655) x3475)
+(or (not x3655) x2938)
+(or (not x3477) (not x3478) (not x3643) (not x3475) (not x2938) x3656)
+(or (not x3656) x3477)
+(or (not x3656) x3478)
+(or (not x3656) x3643)
+(or (not x3656) x3475)
+(or (not x3656) x2938)
+(or x3657 (not x3656))
+(or x3657 (not x3655))
+(or x3657 (not x3653))
+(or x3657 (not x3647))
+(or x3656 x3655 x3653 x3647 (not x3657))
+(or (not x3657) (not x2938) x3658)
+(or (not x3658) x3657)
+(or (not x3658) x2938)
+(or (not x3621) (not x3622) (not x3603) (not x2938) x3659)
+(or (not x3659) x3621)
+(or (not x3659) x3622)
+(or (not x3659) x3603)
+(or (not x3659) x2938)
+(or (not x3624) (not x3660) x3661)
+(or (not x3661) x3624)
+(or (not x3661) x3660)
+(or x3662 (not x3661))
+(or x3662 (not x3659))
+(or x3661 x3659 (not x3662))
+(or (not x3628) (not x3662) x3663)
+(or (not x3663) x3628)
+(or (not x3663) x3662)
+(or (not x3624) (not x3603) (not x2938) x3664)
+(or (not x3664) x3624)
+(or (not x3664) x3603)
+(or (not x3664) x2938)
+(or x3665 x3666 x3625)
+(or x3665 (not x3666) (not x3625))
+(or (not x3665) x3666 (not x3625))
+(or (not x3665) (not x3666) x3625)
+(or (not x3621) (not x3622) (not x3665) x3667)
+(or (not x3667) x3621)
+(or (not x3667) x3622)
+(or (not x3667) x3665)
+(or x3668 (not x3667))
+(or x3668 (not x3664))
+(or x3667 x3664 (not x3668))
+(or (not x3633) (not x2938) (not x3668) x3669)
+(or (not x3669) x3633)
+(or (not x3669) x2938)
+(or (not x3669) x3668)
+(or x3670 (not x3669))
+(or x3670 (not x3663))
+(or x3669 x3663 (not x3670))
+(or (not x3670) (not x2938) x3671)
+(or (not x3671) x3670)
+(or (not x3671) x2938)
+(or (not x3621) (not x3622) (not x3604) (not x2938) x3672)
+(or (not x3672) x3621)
+(or (not x3672) x3622)
+(or (not x3672) x3604)
+(or (not x3672) x2938)
+(or (not x3624) (not x3673) x3674)
+(or (not x3674) x3624)
+(or (not x3674) x3673)
+(or x3675 (not x3674))
+(or x3675 (not x3672))
+(or x3674 x3672 (not x3675))
+(or x3628 x3633)
+(or x3628 x2938)
+(or (not x3633) (not x2938) (not x3628))
+(or (not x3628) (not x3675) x3676)
+(or (not x3676) x3628)
+(or (not x3676) x3675)
+(or (not x3480) (not x2938) (not x129) (not x136) (not x3677) (not x3678) x3679)
+(or (not x3679) x3480)
+(or (not x3679) x2938)
+(or (not x3679) x129)
+(or (not x3679) x136)
+(or (not x3679) x3677)
+(or (not x3679) x3678)
+(or (not x128) (not x3486) (not x2938) (not x136) (not x3493) (not x3488) (not x2938) (not x3477) x3490 x3680)
+(or (not x3680) x128)
+(or (not x3680) x3486)
+(or (not x3680) x2938)
+(or (not x3680) x136)
+(or (not x3680) x3493)
+(or (not x3680) x3488)
+(or (not x3680) x2938)
+(or (not x3680) x3477)
+(or (not x3680) (not x3490))
+(or x3624 (not x3680))
+(or x3624 (not x3679))
+(or x3680 x3679 (not x3624))
+(or (not x3624) (not x3604) (not x2938) x3681)
+(or (not x3681) x3624)
+(or (not x3681) x3604)
+(or (not x3681) x2938)
+(or x3682 x3683 x3684)
+(or x3682 (not x3683) (not x3684))
+(or (not x3682) x3683 (not x3684))
+(or (not x3682) (not x3683) x3684)
+(or x3622 x3480)
+(or x3622 x2938)
+(or x3622 (not x2920))
+(or x3622 (not x2894))
+(or x3622 (not x3481))
+(or x3622 (not x3485))
+(or (not x3480) (not x2938) x2920 x2894 x3481 x3485 (not x3622))
+(or x3621 (not x2919))
+(or x3621 x3486)
+(or x3621 x2938)
+(or x3621 (not x2894))
+(or x3621 (not x3487))
+(or x3621 x3488)
+(or x3621 x2938)
+(or x3621 (not x3489))
+(or x3621 (not x3490))
+(or x2919 (not x3486) (not x2938) x2894 x3487 (not x3488) (not x2938) x3489 x3490 (not x3621))
+(or (not x3621) (not x3622) (not x3682) x3685)
+(or (not x3685) x3621)
+(or (not x3685) x3622)
+(or (not x3685) x3682)
+(or x3686 (not x3685))
+(or x3686 (not x3681))
+(or x3685 x3681 (not x3686))
+(or (not x3633) (not x2938) (not x3686) x3687)
+(or (not x3687) x3633)
+(or (not x3687) x2938)
+(or (not x3687) x3686)
+(or x3688 (not x3687))
+(or x3688 (not x3676))
+(or x3687 x3676 (not x3688))
+(or (not x3688) (not x2938) x3689)
+(or (not x3689) x3688)
+(or (not x3689) x2938)
+(or (not x3690) (not x3691) (not x2938) x3692)
+(or (not x3692) x3690)
+(or (not x3692) x3691)
+(or (not x3692) x2938)
+(or (not x3693) (not x3678) (not x3694) x3695)
+(or (not x3695) x3693)
+(or (not x3695) x3678)
+(or (not x3695) x3694)
+(or x3696 (not x3695))
+(or x3696 (not x3692))
+(or x3695 x3692 (not x3696))
+(or (not x3480) (not x2938) (not x129) (not x136) (not x3677) (not x3696) x3697)
+(or (not x3697) x3480)
+(or (not x3697) x2938)
+(or (not x3697) x129)
+(or (not x3697) x136)
+(or (not x3697) x3677)
+(or (not x3697) x3696)
+(or (not x3698) (not x3493) (not x3488) (not x2938) (not x3477) x3490 (not x3691) (not x2938) x3699)
+(or (not x3699) x3698)
+(or (not x3699) x3493)
+(or (not x3699) x3488)
+(or (not x3699) x2938)
+(or (not x3699) x3477)
+(or (not x3699) (not x3490))
+(or (not x3699) x3691)
+(or (not x3699) x2938)
+(or x3700 (not x3666))
+(or x3700 (not x3701))
+(or x3700 (not x3702))
+(or x3666 x3701 x3702 (not x3700))
+(or x3673 x3683 x3700)
+(or x3673 (not x3683) (not x3700))
+(or (not x3673) x3683 (not x3700))
+(or (not x3673) (not x3683) x3700)
+(or (not x3703) (not x3673) x3704)
+(or (not x3704) x3703)
+(or (not x3704) x3673)
+(or x3705 (not x3706))
+(or x3705 (not x3704))
+(or x3706 x3704 (not x3705))
+(or (not x3707) (not x3705) x3708)
+(or (not x3708) x3707)
+(or (not x3708) x3705)
+(or (not x3709) (not x2938) (not x3710) (not x2938) x3711)
+(or (not x3711) x3709)
+(or (not x3711) x2938)
+(or (not x3711) x3710)
+(or (not x3711) x2938)
+(or x3712 (not x3483))
+(or x3712 (not x3711))
+(or x3712 (not x3482))
+(or x3483 x3711 x3482 (not x3712))
+(or x3694 x3484 x3712)
+(or x3694 (not x3484) (not x3712))
+(or (not x3694) x3484 (not x3712))
+(or (not x3694) (not x3484) x3712)
+(or (not x3493) (not x3488) (not x2938) (not x3477) x3490 (not x3713) (not x3694) x3714)
+(or (not x3714) x3493)
+(or (not x3714) x3488)
+(or (not x3714) x2938)
+(or (not x3714) x3477)
+(or (not x3714) (not x3490))
+(or (not x3714) x3713)
+(or (not x3714) x3694)
+(or x3715 (not x3714))
+(or x3715 (not x3708))
+(or x3714 x3708 (not x3715))
+(or (not x3716) (not x3715) x3717)
+(or (not x3717) x3716)
+(or (not x3717) x3715)
+(or x3718 (not x3717))
+(or x3718 (not x3699))
+(or x3717 x3699 (not x3718))
+(or (not x128) (not x3486) (not x2938) (not x136) (not x3718) x3719)
+(or (not x3719) x128)
+(or (not x3719) x3486)
+(or (not x3719) x2938)
+(or (not x3719) x136)
+(or (not x3719) x3718)
+(or (not x128) (not x129) (not x3691) (not x2938) x3720)
+(or (not x3720) x128)
+(or (not x3720) x129)
+(or (not x3720) x3691)
+(or (not x3720) x2938)
+(or x3721 (not x3720))
+(or x3721 (not x3719))
+(or x3721 (not x3697))
+(or x3720 x3719 x3697 (not x3721))
+(or (not x3721) (not x2938) x3722)
+(or (not x3722) x3721)
+(or (not x3722) x2938)
+(or (not x3690) (not x3709) (not x2938) x3723)
+(or (not x3723) x3690)
+(or (not x3723) x3709)
+(or (not x3723) x2938)
+(or (not x3693) (not x3678) (not x3724) x3725)
+(or (not x3725) x3693)
+(or (not x3725) x3678)
+(or (not x3725) x3724)
+(or x3726 (not x3725))
+(or x3726 (not x3723))
+(or x3725 x3723 (not x3726))
+(or (not x3480) (not x2938) (not x129) (not x136) (not x3677) (not x3726) x3727)
+(or (not x3727) x3480)
+(or (not x3727) x2938)
+(or (not x3727) x129)
+(or (not x3727) x136)
+(or (not x3727) x3677)
+(or (not x3727) x3726)
+(or (not x3698) (not x3493) (not x3488) (not x2938) (not x3477) x3490 (not x3709) (not x2938) x3728)
+(or (not x3728) x3698)
+(or (not x3728) x3493)
+(or (not x3728) x3488)
+(or (not x3728) x2938)
+(or (not x3728) x3477)
+(or (not x3728) (not x3490))
+(or (not x3728) x3709)
+(or (not x3728) x2938)
+(or x3660 x3666 x3702)
+(or x3660 (not x3666) (not x3702))
+(or (not x3660) x3666 (not x3702))
+(or (not x3660) (not x3666) x3702)
+(or (not x3703) (not x3660) x3729)
+(or (not x3729) x3703)
+(or (not x3729) x3660)
+(or x3730 (not x3706))
+(or x3730 (not x3729))
+(or x3706 x3729 (not x3730))
+(or (not x3707) (not x3730) x3731)
+(or (not x3731) x3707)
+(or (not x3731) x3730)
+(or x3724 x3483 x3482)
+(or x3724 (not x3483) (not x3482))
+(or (not x3724) x3483 (not x3482))
+(or (not x3724) (not x3483) x3482)
+(or (not x3493) (not x3488) (not x2938) (not x3477) x3490 (not x3713) (not x3724) x3732)
+(or (not x3732) x3493)
+(or (not x3732) x3488)
+(or (not x3732) x2938)
+(or (not x3732) x3477)
+(or (not x3732) (not x3490))
+(or (not x3732) x3713)
+(or (not x3732) x3724)
+(or x3733 (not x3732))
+(or x3733 (not x3731))
+(or x3732 x3731 (not x3733))
+(or (not x3716) (not x3733) x3734)
+(or (not x3734) x3716)
+(or (not x3734) x3733)
+(or x3735 (not x3734))
+(or x3735 (not x3728))
+(or x3734 x3728 (not x3735))
+(or (not x128) (not x3486) (not x2938) (not x136) (not x3735) x3736)
+(or (not x3736) x128)
+(or (not x3736) x3486)
+(or (not x3736) x2938)
+(or (not x3736) x136)
+(or (not x3736) x3735)
+(or (not x128) (not x129) (not x3709) (not x2938) x3737)
+(or (not x3737) x128)
+(or (not x3737) x129)
+(or (not x3737) x3709)
+(or (not x3737) x2938)
+(or x3738 (not x3737))
+(or x3738 (not x3736))
+(or x3738 (not x3727))
+(or x3737 x3736 x3727 (not x3738))
+(or (not x3738) (not x2938) x3739)
+(or (not x3739) x3738)
+(or (not x3739) x2938)
+(or (not x3740) (not x3741) (not x3742) (not x3678) x3743)
+(or (not x3743) x3740)
+(or (not x3743) x3741)
+(or (not x3743) x3742)
+(or (not x3743) x3678)
+(or x3690 (not x3743))
+(or x3690 (not x3485))
+(or x3743 x3485 (not x3690))
+(or (not x3690) (not x3710) (not x2938) x3744)
+(or (not x3744) x3690)
+(or (not x3744) x3710)
+(or (not x3744) x2938)
+(or (not x3475) (not x2938) (not x3476) (not x3477) (not x3478) x3468 x3745)
+(or (not x3745) x3475)
+(or (not x3745) x2938)
+(or (not x3745) x3476)
+(or (not x3745) x3477)
+(or (not x3745) x3478)
+(or (not x3745) (not x3468))
+(or (not x3477) (not x3478) (not x3643) x3496)
+(or (not x3496) x3477)
+(or (not x3496) x3478)
+(or (not x3496) x3643)
+(or x3678 (not x3496))
+(or x3678 (not x3489))
+(or x3678 (not x3746))
+(or x3678 (not x3745))
+(or x3496 x3489 x3746 x3745 (not x3678))
+(or (not x3693) (not x3678) (not x3740) x3747)
+(or (not x3747) x3693)
+(or (not x3747) x3678)
+(or (not x3747) x3740)
+(or x3748 (not x3747))
+(or x3748 (not x3744))
+(or x3747 x3744 (not x3748))
+(or (not x3480) (not x2938) (not x129) (not x136) (not x3677) (not x3748) x3749)
+(or (not x3749) x3480)
+(or (not x3749) x2938)
+(or (not x3749) x129)
+(or (not x3749) x136)
+(or (not x3749) x3677)
+(or (not x3749) x3748)
+(or x3742 x3691)
+(or x3742 x2938)
+(or (not x3691) (not x2938) (not x3742))
+(or x3741 x3709)
+(or x3741 x2938)
+(or (not x3709) (not x2938) (not x3741))
+(or (not x3740) (not x3741) (not x3742) x3750)
+(or (not x3750) x3740)
+(or (not x3750) x3741)
+(or (not x3750) x3742)
+(or x3698 (not x3487))
+(or x3698 x3488)
+(or x3698 x2938)
+(or x3698 (not x3489))
+(or x3698 (not x3490))
+(or x3698 (not x3750))
+(or x3487 (not x3488) (not x2938) x3489 x3490 x3750 (not x3698))
+(or (not x3698) (not x3493) (not x3488) (not x2938) (not x3477) x3490 (not x3710) (not x2938) x3751)
+(or (not x3751) x3698)
+(or (not x3751) x3493)
+(or (not x3751) x3488)
+(or (not x3751) x2938)
+(or (not x3751) x3477)
+(or (not x3751) (not x3490))
+(or (not x3751) x3710)
+(or (not x3751) x2938)
+(or x3684 x3603)
+(or x3684 x2938)
+(or x3684 x3602)
+(or x3684 x2938)
+(or (not x3603) (not x2938) (not x3602) (not x2938) (not x3684))
+(or x3703 x3604)
+(or x3703 x2938)
+(or x3703 x3603)
+(or x3703 x2938)
+(or x3703 x3602)
+(or x3703 x2938)
+(or (not x3604) (not x2938) (not x3603) (not x2938) (not x3602) (not x2938) (not x3703))
+(or (not x3703) (not x3625) x3752)
+(or (not x3752) x3703)
+(or (not x3752) x3625)
+(or (not x3603) (not x2938) (not x3602) (not x2938) x3701)
+(or (not x3701) x3603)
+(or (not x3701) x2938)
+(or (not x3701) x3602)
+(or (not x3701) x2938)
+(or (not x3604) (not x2938) (not x3603) (not x2938) (not x3602) (not x2938) x3706)
+(or (not x3706) x3604)
+(or (not x3706) x2938)
+(or (not x3706) x3603)
+(or (not x3706) x2938)
+(or (not x3706) x3602)
+(or (not x3706) x2938)
+(or x3753 (not x3706))
+(or x3753 (not x3752))
+(or x3706 x3752 (not x3753))
+(or (not x3707) (not x3753) x3754)
+(or (not x3754) x3707)
+(or (not x3754) x3753)
+(or x3740 x3710)
+(or x3740 x2938)
+(or (not x3710) (not x2938) (not x3740))
+(or (not x3493) (not x3488) (not x2938) (not x3477) x3490 (not x3713) (not x3740) x3755)
+(or (not x3755) x3493)
+(or (not x3755) x3488)
+(or (not x3755) x2938)
+(or (not x3755) x3477)
+(or (not x3755) (not x3490))
+(or (not x3755) x3713)
+(or (not x3755) x3740)
+(or x3756 (not x3755))
+(or x3756 (not x3754))
+(or x3755 x3754 (not x3756))
+(or x3716 (not x3757))
+(or x3716 (not x3487))
+(or x3716 x3488)
+(or x3716 x2938)
+(or x3716 (not x3489))
+(or x3716 (not x3490))
+(or x3757 x3487 (not x3488) (not x2938) x3489 x3490 (not x3716))
+(or (not x3716) (not x3756) x3758)
+(or (not x3758) x3716)
+(or (not x3758) x3756)
+(or x3759 (not x3758))
+(or x3759 (not x3751))
+(or x3758 x3751 (not x3759))
+(or (not x128) (not x3486) (not x2938) (not x136) (not x3759) x3760)
+(or (not x3760) x128)
+(or (not x3760) x3486)
+(or (not x3760) x2938)
+(or (not x3760) x136)
+(or (not x3760) x3759)
+(or (not x128) (not x129) (not x3710) (not x2938) x3761)
+(or (not x3761) x128)
+(or (not x3761) x129)
+(or (not x3761) x3710)
+(or (not x3761) x2938)
+(or x3762 (not x3761))
+(or x3762 (not x3760))
+(or x3762 (not x3749))
+(or x3761 x3760 x3749 (not x3762))
+(or (not x3762) (not x2938) x3763)
+(or (not x3763) x3762)
+(or (not x3763) x2938)
+(or (not x3480) (not x2938) (not x129) (not x136) (not x3677) (not x3693) (not x3486) (not x2938) x3764)
+(or (not x3764) x3480)
+(or (not x3764) x2938)
+(or (not x3764) x129)
+(or (not x3764) x136)
+(or (not x3764) x3677)
+(or (not x3764) x3693)
+(or (not x3764) x3486)
+(or (not x3764) x2938)
+(or (not x128) (not x3486) (not x2938) (not x136) (not x3707) (not x3486) (not x2938) x3765)
+(or (not x3765) x128)
+(or (not x3765) x3486)
+(or (not x3765) x2938)
+(or (not x3765) x136)
+(or (not x3765) x3707)
+(or (not x3765) x3486)
+(or (not x3765) x2938)
+(or (not x3602) (not x2938) x3702)
+(or (not x3702) x3602)
+(or (not x3702) x2938)
+(or (not x3766) (not x3602) (not x2938) x3767)
+(or (not x3767) x3766)
+(or (not x3767) x3602)
+(or (not x3767) x2938)
+(or x3768 (not x3666))
+(or x3768 (not x3767))
+(or x3666 x3767 (not x3768))
+(or (not x3769) (not x3768) x3770)
+(or (not x3770) x3769)
+(or (not x3770) x3768)
+(or x3771 (not x3683))
+(or x3771 (not x3770))
+(or x3771 (not x2920))
+(or x3683 x3770 x2920 (not x3771))
+(or (not x128) (not x129) (not x3771) x3772)
+(or (not x3772) x128)
+(or (not x3772) x129)
+(or (not x3772) x3771)
+(or x3773 (not x3772))
+(or x3773 (not x3765))
+(or x3773 (not x3764))
+(or x3772 x3765 x3764 (not x3773))
+(or (not x3773) (not x2938) x3774)
+(or (not x3774) x3773)
+(or (not x3774) x2938)
+(or x3643 x3475)
+(or x3643 x2938)
+(or x3643 (not x3506))
+(or (not x3475) (not x2938) x3506 (not x3643))
+(or x3775 x3475)
+(or x3775 x2938)
+(or x3775 (not x3506))
+(or x3775 (not x3489))
+(or x3775 (not x3507))
+(or x3775 (not x3468))
+(or (not x3475) (not x2938) x3506 x3489 x3507 x3468 (not x3775))
+(or (not x3475) (not x2938) (not x3476) x3776)
+(or (not x3776) x3475)
+(or (not x3776) x2938)
+(or (not x3776) x3476)
+(or x3777 (not x3489))
+(or x3777 (not x3507))
+(or x3777 (not x3776))
+(or x3489 x3507 x3776 (not x3777))
+(or (not x3777) (not x3477) (not x3778) (not x3775) x3485)
+(or (not x3485) x3777)
+(or (not x3485) x3477)
+(or (not x3485) x3778)
+(or (not x3485) x3775)
+(or x3693 (not x3482))
+(or x3693 (not x3483))
+(or x3693 (not x3484))
+(or x3693 (not x3485))
+(or x3482 x3483 x3484 x3485 (not x3693))
+(or x3677 (not x2919))
+(or x3677 x3486)
+(or x3677 x2938)
+(or x2919 (not x3486) (not x2938) (not x3677))
+(or (not x3480) (not x2938) (not x129) (not x136) (not x3677) (not x3693) (not x3480) (not x2938) x3779)
+(or (not x3779) x3480)
+(or (not x3779) x2938)
+(or (not x3779) x129)
+(or (not x3779) x136)
+(or (not x3779) x3677)
+(or (not x3779) x3693)
+(or (not x3779) x3480)
+(or (not x3779) x2938)
+(or (not x3493) (not x3476) x3489)
+(or (not x3489) x3493)
+(or (not x3489) x3476)
+(or x3476 x3488)
+(or x3476 x2938)
+(or (not x3488) (not x2938) (not x3476))
+(or x3478 (not x3487))
+(or x3478 x3488)
+(or x3478 x2938)
+(or x3487 (not x3488) (not x2938) (not x3478))
+(or x3778 (not x3487))
+(or x3778 x3488)
+(or x3778 x2938)
+(or x3778 (not x3489))
+(or x3487 (not x3488) (not x2938) x3489 (not x3778))
+(or x3707 (not x3487))
+(or x3707 x3488)
+(or x3707 x2938)
+(or x3707 (not x3489))
+(or x3707 (not x3490))
+(or x3487 (not x3488) (not x2938) x3489 x3490 (not x3707))
+(or (not x3707) (not x3480) (not x2938) x3780)
+(or (not x3780) x3707)
+(or (not x3780) x3480)
+(or (not x3780) x2938)
+(or (not x3691) (not x2938) x3484)
+(or (not x3484) x3691)
+(or (not x3484) x2938)
+(or (not x3709) (not x2938) x3483)
+(or (not x3483) x3709)
+(or (not x3483) x2938)
+(or (not x3710) (not x2938) x3482)
+(or (not x3482) x3710)
+(or (not x3482) x2938)
+(or x3713 (not x3482))
+(or x3713 (not x3483))
+(or x3713 (not x3484))
+(or x3482 x3483 x3484 (not x3713))
+(or (not x3475) (not x2938) x3487)
+(or (not x3487) x3475)
+(or (not x3487) x2938)
+(or x3477 (not x3487))
+(or x3477 (not x3506))
+(or x3487 x3506 (not x3477))
+(or (not x3488) (not x2938) x3506)
+(or (not x3506) x3488)
+(or (not x3506) x2938)
+(or x3493 x3475)
+(or x3493 x2938)
+(or (not x3475) (not x2938) (not x3493))
+(or (not x3493) (not x3488) (not x2938) x3507)
+(or (not x3507) x3493)
+(or (not x3507) x3488)
+(or (not x3507) x2938)
+(or (not x3493) (not x3488) (not x2938) (not x3477) x3746)
+(or (not x3746) x3493)
+(or (not x3746) x3488)
+(or (not x3746) x2938)
+(or (not x3746) x3477)
+(or (not x3493) (not x3488) (not x2938) (not x3477) x3490 (not x3713) x3757)
+(or (not x3757) x3493)
+(or (not x3757) x3488)
+(or (not x3757) x2938)
+(or (not x3757) x3477)
+(or (not x3757) (not x3490))
+(or (not x3757) x3713)
+(or x3781 (not x3757))
+(or x3781 (not x3780))
+(or x3757 x3780 (not x3781))
+(or x136 (not x2919))
+(or x136 (not x2920))
+(or x2919 x2920 (not x136))
+(or (not x3486) (not x2938) x2920)
+(or (not x2920) x3486)
+(or (not x2920) x2938)
+(or (not x128) (not x3486) (not x2938) x3481)
+(or (not x3481) x128)
+(or (not x3481) x3486)
+(or (not x3481) x2938)
+(or (not x128) (not x3486) (not x2938) (not x136) (not x3781) x3782)
+(or (not x3782) x128)
+(or (not x3782) x3486)
+(or (not x3782) x2938)
+(or (not x3782) x136)
+(or (not x3782) x3781)
+(or (not x3480) (not x2938) x2919)
+(or (not x2919) x3480)
+(or (not x2919) x2938)
+(or x3625 x3602)
+(or x3625 x2938)
+(or (not x3602) (not x2938) (not x3625))
+(or (not x3603) (not x2938) x3666)
+(or (not x3666) x3603)
+(or (not x3666) x2938)
+(or x3783 (not x3666))
+(or x3783 x3602)
+(or x3783 x2938)
+(or x3666 (not x3602) (not x2938) (not x3783))
+(or x3766 x3603)
+(or x3766 x2938)
+(or (not x3603) (not x2938) (not x3766))
+(or (not x3766) (not x3783) x3784)
+(or (not x3784) x3766)
+(or (not x3784) x3783)
+(or (not x3604) (not x2938) x3683)
+(or (not x3683) x3604)
+(or (not x3683) x2938)
+(or x3785 (not x3683))
+(or x3785 (not x3784))
+(or x3683 x3784 (not x3785))
+(or x3769 x3604)
+(or x3769 x2938)
+(or (not x3604) (not x2938) (not x3769))
+(or x129 x3486)
+(or x129 x2938)
+(or (not x3486) (not x2938) (not x129))
+(or x128 x3480)
+(or x128 x2938)
+(or (not x3480) (not x2938) (not x128))
+(or (not x128) (not x129) x2894)
+(or (not x2894) x128)
+(or (not x2894) x129)
+(or (not x128) (not x129) (not x3769) (not x3785) (not x3480) (not x2938) x3786)
+(or (not x3786) x128)
+(or (not x3786) x129)
+(or (not x3786) x3769)
+(or (not x3786) x3785)
+(or (not x3786) x3480)
+(or (not x3786) x2938)
+(or x3787 (not x3786))
+(or x3787 (not x3782))
+(or x3787 (not x3779))
+(or x3786 x3782 x3779 (not x3787))
+(or (not x3787) (not x2938) x3788)
+(or (not x3788) x3787)
+(or (not x3788) x2938)
+(or x3789 (not x2939))
+(or x3789 (not x2938))
+(or x2939 x2938 (not x3789))
+(or x2939 x2938 x3790)
+(or (not x3790) (not x2939))
+(or (not x3790) (not x2938))
+(or x3791 (not x3790))
+(or x3791 (not x2939))
+(or x3791 x2938)
+(or x3790 x2939 (not x2938) (not x3791))
+(or (not x3792) (not x126))
+(or (not x3792) x125)
+(or (not x3792) (not x124))
+(or (not x3792) x123)
+(or (not x3792) x122)
+(or (not x3793) (not x126))
+(or (not x3793) x125)
+(or (not x3793) (not x124))
+(or (not x3793) x123)
+(or (not x3793) (not x122))
+(or (not x3794) (not x126))
+(or (not x3794) x125)
+(or (not x3794) (not x124))
+(or (not x3794) (not x123))
+(or (not x3794) x122)
+(or (not x3795) (not x126))
+(or (not x3795) x125)
+(or (not x3795) (not x124))
+(or (not x3795) (not x123))
+(or (not x3795) (not x122))
+(or (not x3796) (not x126))
+(or (not x3796) (not x125))
+(or (not x3796) x124)
+(or (not x3796) x123)
+(or (not x3796) x122)
+(or (not x3797) (not x126))
+(or (not x3797) (not x125))
+(or (not x3797) x124)
+(or (not x3797) x123)
+(or (not x3797) (not x122))
+(or (not x3798) (not x126))
+(or (not x3798) (not x125))
+(or (not x3798) x124)
+(or (not x3798) (not x123))
+(or (not x3798) x122)
+(or (not x3799) (not x126))
+(or (not x3799) (not x125))
+(or (not x3799) x124)
+(or (not x3799) (not x123))
+(or (not x3799) (not x122))
+(or (not x3800) (not x126))
+(or (not x3800) (not x125))
+(or (not x3800) (not x124))
+(or (not x3800) x123)
+(or (not x3800) x122)
+(or (not x3801) (not x126))
+(or (not x3801) (not x125))
+(or (not x3801) (not x124))
+(or (not x3801) x123)
+(or (not x3801) (not x122))
+(or x126 x125 x124 x123 (not x122) x2892)
+(or (not x2892) (not x126))
+(or (not x2892) (not x125))
+(or (not x2892) (not x124))
+(or (not x2892) (not x123))
+(or (not x2892) x122)
+(or (not x3802) (not x126))
+(or (not x3802) (not x125))
+(or (not x3802) (not x124))
+(or (not x3802) (not x123))
+(or (not x3802) (not x122))
+(or x3803 (not x3802))
+(or x3803 (not x2892))
+(or x3803 (not x3801))
+(or x3803 (not x3800))
+(or x3803 (not x3799))
+(or x3803 (not x3798))
+(or x3803 (not x3797))
+(or x3803 (not x3796))
+(or x3803 (not x3795))
+(or x3803 (not x3794))
+(or x3803 (not x3793))
+(or x3802 x2892 x3801 x3800 x3799 x3798 x3797 x3796 x3795 x3794 x3793 (not x3803))
+(or (not x3804) (not x3805) (not x3806) (not x3807) (not x3808) (not x3809) (not x3810) (not x3811) x3812)
+(or (not x3812) x3804)
+(or (not x3812) x3805)
+(or (not x3812) x3806)
+(or (not x3812) x3807)
+(or (not x3812) x3808)
+(or (not x3812) x3809)
+(or (not x3812) x3810)
+(or (not x3812) x3811)
+(or x3813 (not x3814))
+(or x3813 x3815)
+(or x3814 (not x3815) (not x3813))
+(or x3814 (not x3813) (not x3816) x3817)
+(or (not x3817) (not x3814))
+(or (not x3817) x3813)
+(or (not x3817) x3816)
+(or x3806 (not x3818))
+(or x3806 (not x3819))
+(or x3806 (not x145))
+(or x3806 (not x144))
+(or x3806 (not x143))
+(or x3806 x142)
+(or x3806 x141)
+(or x3806 (not x3820))
+(or x3806 (not x3817))
+(or x3818 x3819 x145 x144 x143 (not x142) (not x141) x3820 x3817 (not x3806))
+(or x3821 (not x3822))
+(or x3821 x3823)
+(or x3822 (not x3823) (not x3821))
+(or x3822 (not x3821) (not x3824) x3825)
+(or (not x3825) (not x3822))
+(or (not x3825) x3821)
+(or (not x3825) x3824)
+(or x3805 (not x3818))
+(or x3805 (not x145))
+(or x3805 (not x144))
+(or x3805 (not x143))
+(or x3805 x142)
+(or x3805 (not x141))
+(or x3805 (not x3826))
+(or x3805 (not x3820))
+(or x3805 (not x3825))
+(or x3818 x145 x144 x143 (not x142) x141 x3826 x3820 x3825 (not x3805))
+(or x3827 (not x3828) x3829)
+(or (not x3829) (not x3827))
+(or (not x3829) x3828)
+(or x3830 (not x145))
+(or x3830 (not x144))
+(or x3830 (not x143))
+(or x3830 (not x142))
+(or x3830 x141)
+(or x3830 (not x3829))
+(or x145 x144 x143 x142 (not x141) x3829 (not x3830))
+(or (not x3830) (not x3805) (not x3806) (not x3807) (not x3808) (not x3811) x3831)
+(or (not x3831) x3830)
+(or (not x3831) x3805)
+(or (not x3831) x3806)
+(or (not x3831) x3807)
+(or (not x3831) x3808)
+(or (not x3831) x3811)
+(or x3816 (not x3814))
+(or x3816 (not x3815))
+(or x3814 x3815 (not x3816))
+(or x3832 (not x3818))
+(or x3832 (not x3819))
+(or x3832 (not x145))
+(or x3832 (not x144))
+(or x3832 (not x143))
+(or x3832 x142)
+(or x3832 x141)
+(or x3832 (not x3820))
+(or x3832 (not x3814))
+(or x3832 (not x3815))
+(or x3818 x3819 x145 x144 x143 (not x142) (not x141) x3820 x3814 x3815 (not x3832))
+(or x3824 (not x3822))
+(or x3824 (not x3823))
+(or x3822 x3823 (not x3824))
+(or x3833 (not x3818))
+(or x3833 (not x145))
+(or x3833 (not x144))
+(or x3833 (not x143))
+(or x3833 x142)
+(or x3833 (not x141))
+(or x3833 (not x3826))
+(or x3833 (not x3820))
+(or x3833 (not x3822))
+(or x3833 (not x3823))
+(or x3818 x145 x144 x143 (not x142) x141 x3826 x3820 x3822 x3823 (not x3833))
+(or x3834 (not x3827))
+(or x3834 (not x3835))
+(or x3834 x3836)
+(or x3827 x3835 (not x3836) (not x3834))
+(or x3827 (not x3837) (not x3834) (not x3828) x3838)
+(or (not x3838) (not x3827))
+(or (not x3838) x3837)
+(or (not x3838) x3834)
+(or (not x3838) x3828)
+(or x3804 (not x145))
+(or x3804 (not x144))
+(or x3804 (not x143))
+(or x3804 (not x142))
+(or x3804 x141)
+(or x3804 (not x3838))
+(or x145 x144 x143 x142 (not x141) x3838 (not x3804))
+(or (not x3804) (not x3833) (not x3832) (not x3809) (not x3810) (not x3811) x3839)
+(or (not x3839) x3804)
+(or (not x3839) x3833)
+(or (not x3839) x3832)
+(or (not x3839) x3809)
+(or (not x3839) x3810)
+(or (not x3839) x3811)
+(or x3840 (not x3818))
+(or x3840 (not x3819))
+(or x3840 (not x3841))
+(or x3840 (not x3842))
+(or x3840 (not x3843))
+(or x3840 (not x3844))
+(or x3840 (not x145))
+(or x3840 x144)
+(or x3840 (not x143))
+(or x3840 (not x142))
+(or x3840 x141)
+(or x3840 (not x149))
+(or x3840 (not x150))
+(or x3840 (not x151))
+(or x3840 (not x152))
+(or x3840 (not x153))
+(or x3840 (not x154))
+(or x3840 (not x3845))
+(or x3840 (not x3846))
+(or x3840 (not x3847))
+(or x3818 x3819 x3841 x3842 x3843 x3844 x145 (not x144) x143 x142 (not x141) x149 x150 x151 x152 x153 x154 x3845 x3846 x3847 (not x3840))
+(or x3848 (not x3818))
+(or x3848 (not x3819))
+(or x3848 (not x3841))
+(or x3848 (not x3842))
+(or x3848 (not x3843))
+(or x3848 (not x145))
+(or x3848 x144)
+(or x3848 (not x143))
+(or x3848 (not x142))
+(or x3848 (not x141))
+(or x3848 (not x3826))
+(or x3848 (not x3845))
+(or x3848 (not x3846))
+(or x3848 (not x149))
+(or x3848 (not x150))
+(or x3848 (not x151))
+(or x3848 (not x152))
+(or x3848 (not x153))
+(or x3848 (not x154))
+(or x3848 (not x3845))
+(or x3848 (not x3846))
+(or x3848 (not x3849))
+(or x3818 x3819 x3841 x3842 x3843 x145 (not x144) x143 x142 x141 x3826 x3845 x3846 x149 x150 x151 x152 x153 x154 x3845 x3846 x3849 (not x3848))
+(or x3850 (not x3818))
+(or x3850 (not x3819))
+(or x3850 (not x3841))
+(or x3850 (not x3842))
+(or x3850 (not x145))
+(or x3850 (not x144))
+(or x3850 x143)
+(or x3850 (not x142))
+(or x3850 x141)
+(or x3850 (not x149))
+(or x3850 (not x150))
+(or x3850 (not x151))
+(or x3850 (not x152))
+(or x3850 (not x153))
+(or x3850 (not x154))
+(or x3850 (not x3845))
+(or x3850 (not x3846))
+(or x3850 (not x3851))
+(or x3818 x3819 x3841 x3842 x145 x144 (not x143) x142 (not x141) x149 x150 x151 x152 x153 x154 x3845 x3846 x3851 (not x3850))
+(or x3852 (not x3818))
+(or x3852 (not x3819))
+(or x3852 (not x3841))
+(or x3852 (not x145))
+(or x3852 (not x144))
+(or x3852 x143)
+(or x3852 (not x142))
+(or x3852 (not x141))
+(or x3852 (not x3845))
+(or x3852 (not x3846))
+(or x3852 (not x149))
+(or x3852 (not x150))
+(or x3852 (not x151))
+(or x3852 (not x152))
+(or x3852 (not x153))
+(or x3852 (not x154))
+(or x3852 (not x3845))
+(or x3852 (not x3846))
+(or x3852 (not x3853))
+(or x3818 x3819 x3841 x145 x144 (not x143) x142 x141 x3845 x3846 x149 x150 x151 x152 x153 x154 x3845 x3846 x3853 (not x3852))
+(or x3828 (not x3827))
+(or x3828 (not x3835))
+(or x3828 (not x3836))
+(or x3827 x3835 x3836 (not x3828))
+(or (not x3837) (not x3828) x3854)
+(or (not x3854) x3837)
+(or (not x3854) x3828)
+(or x3855 (not x145))
+(or x3855 (not x144))
+(or x3855 (not x143))
+(or x3855 (not x142))
+(or x3855 x141)
+(or x3855 (not x3854))
+(or x145 x144 x143 x142 (not x141) x3854 (not x3855))
+(or (not x3855) (not x3856) (not x3857) (not x3852) (not x3850) (not x3848) (not x3840) (not x3811) x3858)
+(or (not x3858) x3855)
+(or (not x3858) x3856)
+(or (not x3858) x3857)
+(or (not x3858) x3852)
+(or (not x3858) x3850)
+(or (not x3858) x3848)
+(or (not x3858) x3840)
+(or (not x3858) x3811)
+(or x145 (not x144) x143 x142 (not x141) x149 x150 x151 x152 x153 x154 (not x147) (not x148) x3859)
+(or (not x3859) (not x145))
+(or (not x3859) x144)
+(or (not x3859) (not x143))
+(or (not x3859) (not x142))
+(or (not x3859) x141)
+(or (not x3859) (not x149))
+(or (not x3859) (not x150))
+(or (not x3859) (not x151))
+(or (not x3859) (not x152))
+(or (not x3859) (not x153))
+(or (not x3859) (not x154))
+(or (not x3859) x147)
+(or (not x3859) x148)
+(or x3811 (not x3818))
+(or x3811 (not x3819))
+(or x3811 (not x3841))
+(or x3811 (not x3842))
+(or x3811 (not x3843))
+(or x3811 (not x3844))
+(or x3811 (not x3859))
+(or x3818 x3819 x3841 x3842 x3843 x3844 x3859 (not x3811))
+(or x145 (not x144) x143 x142 x141 (not x146) (not x147) (not x148) x149 x150 x151 x152 x153 x154 (not x147) (not x148) x3844)
+(or (not x3844) (not x145))
+(or (not x3844) x144)
+(or (not x3844) (not x143))
+(or (not x3844) (not x142))
+(or (not x3844) (not x141))
+(or (not x3844) x146)
+(or (not x3844) x147)
+(or (not x3844) x148)
+(or (not x3844) (not x149))
+(or (not x3844) (not x150))
+(or (not x3844) (not x151))
+(or (not x3844) (not x152))
+(or (not x3844) (not x153))
+(or (not x3844) (not x154))
+(or (not x3844) x147)
+(or (not x3844) x148)
+(or x3810 (not x3818))
+(or x3810 (not x3819))
+(or x3810 (not x3841))
+(or x3810 (not x3842))
+(or x3810 (not x3843))
+(or x3810 (not x3844))
+(or x3810 (not x145))
+(or x3810 x144)
+(or x3810 (not x143))
+(or x3810 (not x142))
+(or x3810 x141)
+(or x3810 (not x149))
+(or x3810 (not x150))
+(or x3810 (not x151))
+(or x3810 (not x152))
+(or x3810 (not x153))
+(or x3810 (not x154))
+(or x3810 (not x3845))
+(or x3810 (not x3846))
+(or x3818 x3819 x3841 x3842 x3843 x3844 x145 (not x144) x143 x142 (not x141) x149 x150 x151 x152 x153 x154 x3845 x3846 (not x3810))
+(or x3860 (not x3818))
+(or x3860 (not x3819))
+(or x3860 (not x3841))
+(or x3860 (not x3842))
+(or x3860 (not x3843))
+(or x3860 (not x3844))
+(or x3860 (not x145))
+(or x3860 x144)
+(or x3860 (not x143))
+(or x3860 (not x142))
+(or x3860 x141)
+(or x3860 (not x149))
+(or x3860 (not x150))
+(or x3860 (not x151))
+(or x3860 (not x152))
+(or x3860 (not x153))
+(or x3860 (not x154))
+(or x3860 (not x3845))
+(or x3860 (not x3846))
+(or x3860 x3847)
+(or x3818 x3819 x3841 x3842 x3843 x3844 x145 (not x144) x143 x142 (not x141) x149 x150 x151 x152 x153 x154 x3845 x3846 (not x3847) (not x3860))
+(or x145 x144 (not x143) x142 (not x141) x149 x150 x151 x152 x153 x154 (not x147) (not x148) x3843)
+(or (not x3843) (not x145))
+(or (not x3843) (not x144))
+(or (not x3843) x143)
+(or (not x3843) (not x142))
+(or (not x3843) x141)
+(or (not x3843) (not x149))
+(or (not x3843) (not x150))
+(or (not x3843) (not x151))
+(or (not x3843) (not x152))
+(or (not x3843) (not x153))
+(or (not x3843) (not x154))
+(or (not x3843) x147)
+(or (not x3843) x148)
+(or x3809 (not x3818))
+(or x3809 (not x3819))
+(or x3809 (not x3841))
+(or x3809 (not x3842))
+(or x3809 (not x3843))
+(or x3809 (not x145))
+(or x3809 x144)
+(or x3809 (not x143))
+(or x3809 (not x142))
+(or x3809 (not x141))
+(or x3809 (not x3826))
+(or x3809 (not x3845))
+(or x3809 (not x3846))
+(or x3809 (not x149))
+(or x3809 (not x150))
+(or x3809 (not x151))
+(or x3809 (not x152))
+(or x3809 (not x153))
+(or x3809 (not x154))
+(or x3809 (not x3845))
+(or x3809 (not x3846))
+(or x3818 x3819 x3841 x3842 x3843 x145 (not x144) x143 x142 x141 x3826 x3845 x3846 x149 x150 x151 x152 x153 x154 x3845 x3846 (not x3809))
+(or x3861 (not x3818))
+(or x3861 (not x3819))
+(or x3861 (not x3841))
+(or x3861 (not x3842))
+(or x3861 (not x3843))
+(or x3861 (not x145))
+(or x3861 x144)
+(or x3861 (not x143))
+(or x3861 (not x142))
+(or x3861 (not x141))
+(or x3861 (not x3826))
+(or x3861 (not x3845))
+(or x3861 (not x3846))
+(or x3861 (not x149))
+(or x3861 (not x150))
+(or x3861 (not x151))
+(or x3861 (not x152))
+(or x3861 (not x153))
+(or x3861 (not x154))
+(or x3861 (not x3845))
+(or x3861 (not x3846))
+(or x3861 x3849)
+(or x3818 x3819 x3841 x3842 x3843 x145 (not x144) x143 x142 x141 x3826 x3845 x3846 x149 x150 x151 x152 x153 x154 x3845 x3846 (not x3849) (not x3861))
+(or x145 x144 (not x143) x142 x141 (not x147) (not x148) x149 x150 x151 x152 x153 x154 (not x147) (not x148) x3842)
+(or (not x3842) (not x145))
+(or (not x3842) (not x144))
+(or (not x3842) x143)
+(or (not x3842) (not x142))
+(or (not x3842) (not x141))
+(or (not x3842) x147)
+(or (not x3842) x148)
+(or (not x3842) (not x149))
+(or (not x3842) (not x150))
+(or (not x3842) (not x151))
+(or (not x3842) (not x152))
+(or (not x3842) (not x153))
+(or (not x3842) (not x154))
+(or (not x3842) x147)
+(or (not x3842) x148)
+(or x3808 (not x3818))
+(or x3808 (not x3819))
+(or x3808 (not x3841))
+(or x3808 (not x3842))
+(or x3808 (not x145))
+(or x3808 (not x144))
+(or x3808 x143)
+(or x3808 (not x142))
+(or x3808 x141)
+(or x3808 (not x149))
+(or x3808 (not x150))
+(or x3808 (not x151))
+(or x3808 (not x152))
+(or x3808 (not x153))
+(or x3808 (not x154))
+(or x3808 (not x3845))
+(or x3808 (not x3846))
+(or x3818 x3819 x3841 x3842 x145 x144 (not x143) x142 (not x141) x149 x150 x151 x152 x153 x154 x3845 x3846 (not x3808))
+(or x3862 (not x3818))
+(or x3862 (not x3819))
+(or x3862 (not x3841))
+(or x3862 (not x3842))
+(or x3862 (not x145))
+(or x3862 (not x144))
+(or x3862 x143)
+(or x3862 (not x142))
+(or x3862 x141)
+(or x3862 (not x149))
+(or x3862 (not x150))
+(or x3862 (not x151))
+(or x3862 (not x152))
+(or x3862 (not x153))
+(or x3862 (not x154))
+(or x3862 (not x3845))
+(or x3862 (not x3846))
+(or x3862 x3851)
+(or x3818 x3819 x3841 x3842 x145 x144 (not x143) x142 (not x141) x149 x150 x151 x152 x153 x154 x3845 x3846 (not x3851) (not x3862))
+(or x145 x144 x143 (not x142) (not x141) (not x155) x3841)
+(or (not x3841) (not x145))
+(or (not x3841) (not x144))
+(or (not x3841) (not x143))
+(or (not x3841) x142)
+(or (not x3841) x141)
+(or (not x3841) x155)
+(or x3807 (not x3818))
+(or x3807 (not x3819))
+(or x3807 (not x3841))
+(or x3807 (not x145))
+(or x3807 (not x144))
+(or x3807 x143)
+(or x3807 (not x142))
+(or x3807 (not x141))
+(or x3807 (not x3845))
+(or x3807 (not x3846))
+(or x3807 (not x149))
+(or x3807 (not x150))
+(or x3807 (not x151))
+(or x3807 (not x152))
+(or x3807 (not x153))
+(or x3807 (not x154))
+(or x3807 (not x3845))
+(or x3807 (not x3846))
+(or x3818 x3819 x3841 x145 x144 (not x143) x142 x141 x3845 x3846 x149 x150 x151 x152 x153 x154 x3845 x3846 (not x3807))
+(or x3863 (not x3818))
+(or x3863 (not x3819))
+(or x3863 (not x3841))
+(or x3863 (not x145))
+(or x3863 (not x144))
+(or x3863 x143)
+(or x3863 (not x142))
+(or x3863 (not x141))
+(or x3863 (not x3845))
+(or x3863 (not x3846))
+(or x3863 (not x149))
+(or x3863 (not x150))
+(or x3863 (not x151))
+(or x3863 (not x152))
+(or x3863 (not x153))
+(or x3863 (not x154))
+(or x3863 (not x3845))
+(or x3863 (not x3846))
+(or x3863 x3853)
+(or x3818 x3819 x3841 x145 x144 (not x143) x142 x141 x3845 x3846 x149 x150 x151 x152 x153 x154 x3845 x3846 (not x3853) (not x3863))
+(or x146 x3864)
+(or x146 (not x3845))
+(or x146 (not x3846))
+(or (not x3864) x3845 x3846 (not x146))
+(or x145 x144 x143 (not x142) x141 (not x146) (not x155) x3819)
+(or (not x3819) (not x145))
+(or (not x3819) (not x144))
+(or (not x3819) (not x143))
+(or (not x3819) x142)
+(or (not x3819) (not x141))
+(or (not x3819) x146)
+(or (not x3819) x155)
+(or x3857 (not x3818))
+(or x3857 (not x3819))
+(or x3857 (not x145))
+(or x3857 (not x144))
+(or x3857 (not x143))
+(or x3857 x142)
+(or x3857 x141)
+(or x3857 (not x3820))
+(or x3857 x3814)
+(or x3818 x3819 x145 x144 x143 (not x142) (not x141) x3820 (not x3814) (not x3857))
+(or (not x3864) (not x147) (not x148) x3826)
+(or (not x3826) x3864)
+(or (not x3826) x147)
+(or (not x3826) x148)
+(or x3856 (not x3818))
+(or x3856 (not x145))
+(or x3856 (not x144))
+(or x3856 (not x143))
+(or x3856 x142)
+(or x3856 (not x141))
+(or x3856 (not x3826))
+(or x3856 (not x3820))
+(or x3856 x3822)
+(or x3818 x145 x144 x143 (not x142) x141 x3826 x3820 (not x3822) (not x3856))
+(or x3837 (not x3827))
+(or x3837 x3835)
+(or x3827 (not x3835) (not x3837))
+(or x3827 (not x3837) x3866)
+(or (not x3866) (not x3827))
+(or (not x3866) x3837)
+(or x3867 (not x145))
+(or x3867 (not x144))
+(or x3867 (not x143))
+(or x3867 (not x142))
+(or x3867 x141)
+(or x3867 (not x3866))
+(or x145 x144 x143 x142 (not x141) x3866 (not x3867))
+(or (not x3867) (not x3856) (not x3857) (not x3863) (not x3862) (not x3861) (not x3860) (not x3811) x3868)
+(or (not x3868) x3867)
+(or (not x3868) x3856)
+(or (not x3868) x3857)
+(or (not x3868) x3863)
+(or (not x3868) x3862)
+(or (not x3868) x3861)
+(or (not x3868) x3860)
+(or (not x3868) x3811)
+(or (not x3869) (not x3870) (not x3864) x3871)
+(or (not x3871) x3869)
+(or (not x3871) x3870)
+(or (not x3871) x3864)
+(or x3869 (not x3872) x3873)
+(or (not x3873) (not x3869))
+(or (not x3873) x3872)
+(or x3874 (not x3873))
+(or x3874 (not x3871))
+(or x3873 x3871 (not x3874))
+(or (not x3874) (not x3864) x3875)
+(or (not x3875) x3874)
+(or (not x3875) x3864)
+(or (not x3869) (not x3876) (not x3864) x3877)
+(or (not x3877) x3869)
+(or (not x3877) x3876)
+(or (not x3877) x3864)
+(or x3869 (not x3878) x3879)
+(or (not x3879) (not x3869))
+(or (not x3879) x3878)
+(or x3880 (not x3879))
+(or x3880 (not x3877))
+(or x3879 x3877 (not x3880))
+(or (not x3880) (not x3864) x3881)
+(or (not x3881) x3880)
+(or (not x3881) x3864)
+(or (not x3869) (not x3882) (not x3864) x3883)
+(or (not x3883) x3869)
+(or (not x3883) x3882)
+(or (not x3883) x3864)
+(or x3869 (not x3884) x3885)
+(or (not x3885) (not x3869))
+(or (not x3885) x3884)
+(or x3886 (not x3885))
+(or x3886 (not x3883))
+(or x3885 x3883 (not x3886))
+(or (not x3886) (not x3864) x3887)
+(or (not x3887) x3886)
+(or (not x3887) x3864)
+(or (not x3888) (not x3889) (not x3864) x3890)
+(or (not x3890) x3888)
+(or (not x3890) x3889)
+(or (not x3890) x3864)
+(or (not x3891) (not x150) x3892 x3893)
+(or (not x3893) x3891)
+(or (not x3893) x150)
+(or (not x3893) (not x3892))
+(or x3894 (not x3893))
+(or x3894 (not x3890))
+(or x3893 x3890 (not x3894))
+(or (not x3894) (not x3864) x3895)
+(or (not x3895) x3894)
+(or (not x3895) x3864)
+(or (not x3896) (not x3897) (not x3864) x3898)
+(or (not x3898) x3896)
+(or (not x3898) x3897)
+(or (not x3898) x3864)
+(or (not x3899) (not x149) x3900 x3901)
+(or (not x3901) x3899)
+(or (not x3901) x149)
+(or (not x3901) (not x3900))
+(or x3902 (not x3901))
+(or x3902 (not x3898))
+(or x3901 x3898 (not x3902))
+(or (not x3902) (not x3864) x3903)
+(or (not x3903) x3902)
+(or (not x3903) x3864)
+(or (not x3888) (not x3904) (not x3864) x3905)
+(or (not x3905) x3888)
+(or (not x3905) x3904)
+(or (not x3905) x3864)
+(or (not x3891) (not x150) x3906 x3907)
+(or (not x3907) x3891)
+(or (not x3907) x150)
+(or (not x3907) (not x3906))
+(or x3908 (not x3907))
+(or x3908 (not x3905))
+(or x3907 x3905 (not x3908))
+(or (not x3908) (not x3864) x3909)
+(or (not x3909) x3908)
+(or (not x3909) x3864)
+(or (not x3896) (not x3910) (not x3864) x3911)
+(or (not x3911) x3896)
+(or (not x3911) x3910)
+(or (not x3911) x3864)
+(or (not x3899) (not x149) x3912 x3913)
+(or (not x3913) x3899)
+(or (not x3913) x149)
+(or (not x3913) (not x3912))
+(or x3914 (not x3913))
+(or x3914 (not x3911))
+(or x3913 x3911 (not x3914))
+(or (not x3914) (not x3864) x3915)
+(or (not x3915) x3914)
+(or (not x3915) x3864)
+(or (not x3888) (not x3916) (not x3864) x3917)
+(or (not x3917) x3888)
+(or (not x3917) x3916)
+(or (not x3917) x3864)
+(or (not x3891) (not x150) x3918 x3919)
+(or (not x3919) x3891)
+(or (not x3919) x150)
+(or (not x3919) (not x3918))
+(or x3920 (not x3919))
+(or x3920 (not x3917))
+(or x3919 x3917 (not x3920))
+(or (not x3920) (not x3864) x3921)
+(or (not x3921) x3920)
+(or (not x3921) x3864)
+(or (not x3896) (not x3922) (not x3864) x3923)
+(or (not x3923) x3896)
+(or (not x3923) x3922)
+(or (not x3923) x3864)
+(or (not x3899) (not x149) x3924 x3925)
+(or (not x3925) x3899)
+(or (not x3925) x149)
+(or (not x3925) (not x3924))
+(or x3926 (not x3925))
+(or x3926 (not x3923))
+(or x3925 x3923 (not x3926))
+(or (not x3926) (not x3864) x3927)
+(or (not x3927) x3926)
+(or (not x3927) x3864)
+(or (not x3888) (not x3928) (not x3864) x3929)
+(or (not x3929) x3888)
+(or (not x3929) x3928)
+(or (not x3929) x3864)
+(or (not x3891) (not x150) (not x3930) x3931)
+(or (not x3931) x3891)
+(or (not x3931) x150)
+(or (not x3931) x3930)
+(or x3932 (not x3931))
+(or x3932 (not x3929))
+(or x3931 x3929 (not x3932))
+(or (not x3932) (not x3864) x3933)
+(or (not x3933) x3932)
+(or (not x3933) x3864)
+(or (not x3896) (not x3934) (not x3864) x3935)
+(or (not x3935) x3896)
+(or (not x3935) x3934)
+(or (not x3935) x3864)
+(or (not x3899) (not x149) (not x3936) x3937)
+(or (not x3937) x3899)
+(or (not x3937) x149)
+(or (not x3937) x3936)
+(or x3938 (not x3937))
+(or x3938 (not x3935))
+(or x3937 x3935 (not x3938))
+(or (not x3938) (not x3864) x3939)
+(or (not x3939) x3938)
+(or (not x3939) x3864)
+(or (not x3888) (not x3940) (not x3864) x3941)
+(or (not x3941) x3888)
+(or (not x3941) x3940)
+(or (not x3941) x3864)
+(or (not x3891) (not x150) x3942 x3943)
+(or (not x3943) x3891)
+(or (not x3943) x150)
+(or (not x3943) (not x3942))
+(or x3944 (not x3943))
+(or x3944 (not x3941))
+(or x3943 x3941 (not x3944))
+(or (not x3944) (not x3864) x3945)
+(or (not x3945) x3944)
+(or (not x3945) x3864)
+(or (not x3896) (not x3946) (not x3864) x3947)
+(or (not x3947) x3896)
+(or (not x3947) x3946)
+(or (not x3947) x3864)
+(or (not x3899) (not x149) x3948 x3949)
+(or (not x3949) x3899)
+(or (not x3949) x149)
+(or (not x3949) (not x3948))
+(or x3950 (not x3949))
+(or x3950 (not x3947))
+(or x3949 x3947 (not x3950))
+(or (not x3950) (not x3864) x3951)
+(or (not x3951) x3950)
+(or (not x3951) x3864)
+(or (not x3888) (not x3952) (not x3864) x3953)
+(or (not x3953) x3888)
+(or (not x3953) x3952)
+(or (not x3953) x3864)
+(or (not x3891) (not x150) x3954 x3955)
+(or (not x3955) x3891)
+(or (not x3955) x150)
+(or (not x3955) (not x3954))
+(or x3956 (not x3955))
+(or x3956 (not x3953))
+(or x3955 x3953 (not x3956))
+(or (not x3956) (not x3864) x3957)
+(or (not x3957) x3956)
+(or (not x3957) x3864)
+(or (not x3896) (not x3958) (not x3864) x3959)
+(or (not x3959) x3896)
+(or (not x3959) x3958)
+(or (not x3959) x3864)
+(or (not x3899) (not x149) x3960 x3961)
+(or (not x3961) x3899)
+(or (not x3961) x149)
+(or (not x3961) (not x3960))
+(or x3962 (not x3961))
+(or x3962 (not x3959))
+(or x3961 x3959 (not x3962))
+(or (not x3962) (not x3864) x3963)
+(or (not x3963) x3962)
+(or (not x3963) x3864)
+(or (not x3964) (not x3965) (not x3864) x3966)
+(or (not x3966) x3964)
+(or (not x3966) x3965)
+(or (not x3966) x3864)
+(or (not x3967) (not x152) (not x152) x3968)
+(or (not x3968) x3967)
+(or (not x3968) x152)
+(or x3969 (not x3968))
+(or x3969 (not x3966))
+(or x3968 x3966 (not x3969))
+(or (not x3969) (not x3864) x3970)
+(or (not x3970) x3969)
+(or (not x3970) x3864)
+(or (not x3971) (not x3972) (not x3864) x3973)
+(or (not x3973) x3971)
+(or (not x3973) x3972)
+(or (not x3973) x3864)
+(or (not x3974) (not x151) (not x151) x3975)
+(or (not x3975) x3974)
+(or (not x3975) x151)
+(or x3976 (not x3975))
+(or x3976 (not x3973))
+(or x3975 x3973 (not x3976))
+(or (not x3976) (not x3864) x3977)
+(or (not x3977) x3976)
+(or (not x3977) x3864)
+(or x3971 (not x3978))
+(or x3971 x151)
+(or x3978 (not x151) (not x3971))
+(or (not x3971) (not x3979) (not x3864) (not x3980) (not x3864) x3981)
+(or (not x3981) x3971)
+(or (not x3981) x3979)
+(or (not x3981) x3864)
+(or (not x3981) x3980)
+(or (not x3981) x3864)
+(or (not x3974) (not x151) x3982)
+(or (not x3982) x3974)
+(or (not x3982) x151)
+(or x3983 (not x3982))
+(or x3983 (not x3981))
+(or x3982 x3981 (not x3983))
+(or (not x3983) (not x3864) x3984)
+(or (not x3984) x3983)
+(or (not x3984) x3864)
+(or x3985 x3986)
+(or x3985 x3864)
+(or x3985 x3987)
+(or x3985 x3864)
+(or x3985 x3979)
+(or x3985 x3864)
+(or (not x3986) (not x3864) (not x3987) (not x3864) (not x3979) (not x3864) (not x3985))
+(or (not x3985) (not x3988) x3989)
+(or (not x3989) x3985)
+(or (not x3989) x3988)
+(or x3990 x3986)
+(or x3990 x3864)
+(or x3990 x3986)
+(or x3990 x3864)
+(or x3990 (not x3989))
+(or (not x3986) (not x3864) (not x3986) (not x3864) x3989 (not x3990))
+(or (not x3991) (not x3992) x3993)
+(or (not x3993) x3991)
+(or (not x3993) x3992)
+(or x3988 (not x3994))
+(or x3988 (not x3993))
+(or x3994 x3993 (not x3988))
+(or (not x3986) (not x3864) (not x3987) (not x3864) (not x3979) (not x3864) x3995)
+(or (not x3995) x3986)
+(or (not x3995) x3864)
+(or (not x3995) x3987)
+(or (not x3995) x3864)
+(or (not x3995) x3979)
+(or (not x3995) x3864)
+(or x3996 (not x3995))
+(or x3996 (not x3994))
+(or x3996 (not x3993))
+(or x3995 x3994 x3993 (not x3996))
+(or x3997 x3994 x3996)
+(or x3997 (not x3994) (not x3996))
+(or (not x3997) x3994 (not x3996))
+(or (not x3997) (not x3994) x3996)
+(or x3998 x3997 x3990)
+(or x3998 (not x3997) (not x3990))
+(or (not x3998) x3997 (not x3990))
+(or (not x3998) (not x3997) x3990)
+(or (not x3999) (not x4000) (not x4001) (not x4002) (not x3998) x4003)
+(or (not x4003) x3999)
+(or (not x4003) x4000)
+(or (not x4003) x4001)
+(or (not x4003) x4002)
+(or (not x4003) x3998)
+(or (not x4004) (not x3986) (not x3864) x4005)
+(or (not x4005) x4004)
+(or (not x4005) x3986)
+(or (not x4005) x3864)
+(or x4006 (not x4005))
+(or x4006 (not x4003))
+(or x4005 x4003 (not x4006))
+(or (not x4006) (not x3864) x4007)
+(or (not x4007) x4006)
+(or (not x4007) x3864)
+(or x3964 (not x4008))
+(or x3964 x152)
+(or x4008 (not x152) (not x3964))
+(or (not x3964) (not x4009) (not x3864) (not x4010) (not x3864) x4011)
+(or (not x4011) x3964)
+(or (not x4011) x4009)
+(or (not x4011) x3864)
+(or (not x4011) x4010)
+(or (not x4011) x3864)
+(or (not x3967) (not x152) x4012)
+(or (not x4012) x3967)
+(or (not x4012) x152)
+(or x4013 (not x4012))
+(or x4013 (not x4011))
+(or x4012 x4011 (not x4013))
+(or (not x4013) (not x3864) x4014)
+(or (not x4014) x4013)
+(or (not x4014) x3864)
+(or x3896 (not x4015))
+(or x3896 x149)
+(or x4015 (not x149) (not x3896))
+(or (not x3896) (not x4016) (not x3864) (not x4017) (not x3864) x4018)
+(or (not x4018) x3896)
+(or (not x4018) x4016)
+(or (not x4018) x3864)
+(or (not x4018) x4017)
+(or (not x4018) x3864)
+(or (not x3899) (not x149) x4019)
+(or (not x4019) x3899)
+(or (not x4019) x149)
+(or x4020 (not x4019))
+(or x4020 (not x4018))
+(or x4019 x4018 (not x4020))
+(or (not x4020) (not x3864) x4021)
+(or (not x4021) x4020)
+(or (not x4021) x3864)
+(or x4022 x4023)
+(or x4022 x3864)
+(or x4022 x3987)
+(or x4022 x3864)
+(or x4022 x4016)
+(or x4022 x3864)
+(or (not x4023) (not x3864) (not x3987) (not x3864) (not x4016) (not x3864) (not x4022))
+(or (not x4022) (not x4024) x4025)
+(or (not x4025) x4022)
+(or (not x4025) x4024)
+(or x4026 x4023)
+(or x4026 x3864)
+(or x4026 x4023)
+(or x4026 x3864)
+(or x4026 (not x4025))
+(or (not x4023) (not x3864) (not x4023) (not x3864) x4025 (not x4026))
+(or (not x4027) (not x4028) x4029)
+(or (not x4029) x4027)
+(or (not x4029) x4028)
+(or x4024 (not x4030))
+(or x4024 (not x4029))
+(or x4030 x4029 (not x4024))
+(or (not x4023) (not x3864) (not x3987) (not x3864) (not x4016) (not x3864) x4031)
+(or (not x4031) x4023)
+(or (not x4031) x3864)
+(or (not x4031) x3987)
+(or (not x4031) x3864)
+(or (not x4031) x4016)
+(or (not x4031) x3864)
+(or x4032 (not x4031))
+(or x4032 (not x4030))
+(or x4032 (not x4029))
+(or x4031 x4030 x4029 (not x4032))
+(or x4033 x4030 x4032)
+(or x4033 (not x4030) (not x4032))
+(or (not x4033) x4030 (not x4032))
+(or (not x4033) (not x4030) x4032)
+(or x4034 x4033 x4026)
+(or x4034 (not x4033) (not x4026))
+(or (not x4034) x4033 (not x4026))
+(or (not x4034) (not x4033) x4026)
+(or (not x3999) (not x4035) (not x3864) x4036 (not x3864) (not x4002) (not x4037) (not x4001) (not x4002) (not x4034) x4038)
+(or (not x4038) x3999)
+(or (not x4038) x4035)
+(or (not x4038) x3864)
+(or (not x4038) (not x4036))
+(or (not x4038) x3864)
+(or (not x4038) x4002)
+(or (not x4038) x4037)
+(or (not x4038) x4001)
+(or (not x4038) x4002)
+(or (not x4038) x4034)
+(or (not x4039) (not x4023) (not x3864) x4040)
+(or (not x4040) x4039)
+(or (not x4040) x4023)
+(or (not x4040) x3864)
+(or x4041 (not x4040))
+(or x4041 (not x4038))
+(or x4040 x4038 (not x4041))
+(or (not x4041) (not x3864) x4042)
+(or (not x4042) x4041)
+(or (not x4042) x3864)
+(or x3888 (not x4043))
+(or x3888 x150)
+(or x4043 (not x150) (not x3888))
+(or (not x3888) (not x4044) (not x3864) (not x4045) (not x3864) x4046)
+(or (not x4046) x3888)
+(or (not x4046) x4044)
+(or (not x4046) x3864)
+(or (not x4046) x4045)
+(or (not x4046) x3864)
+(or (not x3891) (not x150) x4047)
+(or (not x4047) x3891)
+(or (not x4047) x150)
+(or x4048 (not x4047))
+(or x4048 (not x4046))
+(or x4047 x4046 (not x4048))
+(or (not x4048) (not x3864) x4049)
+(or (not x4049) x4048)
+(or (not x4049) x3864)
+(or x3992 (not x4050))
+(or x3992 x3979)
+(or x3992 x3864)
+(or x4050 (not x3979) (not x3864) (not x3992))
+(or x4051 x4052)
+(or x4051 x3864)
+(or x4051 (not x4050))
+(or x4051 x3979)
+(or x4051 x3864)
+(or (not x4052) (not x3864) x4050 (not x3979) (not x3864) (not x4051))
+(or x4053 (not x4054))
+(or x4053 x4009)
+(or x4053 x3864)
+(or x4054 (not x4009) (not x3864) (not x4053))
+(or (not x4053) (not x4051) x4055)
+(or (not x4055) x4053)
+(or (not x4055) x4051)
+(or x4056 x4054 x4055)
+(or x4056 (not x4054) (not x4055))
+(or (not x4056) x4054 (not x4055))
+(or (not x4056) (not x4054) x4055)
+(or (not x4057) (not x4056) x4058)
+(or (not x4058) x4057)
+(or (not x4058) x4056)
+(or (not x4059) (not x4060) (not x4052) (not x3864) x4061)
+(or (not x4061) x4059)
+(or (not x4061) x4060)
+(or (not x4061) x4052)
+(or (not x4061) x3864)
+(or x4062 (not x4061))
+(or x4062 (not x4058))
+(or x4061 x4058 (not x4062))
+(or (not x4062) (not x3864) x4063)
+(or (not x4063) x4062)
+(or (not x4063) x3864)
+(or (not x3870) (not x3864) x4064)
+(or (not x4064) x3870)
+(or (not x4064) x3864)
+(or (not x3876) (not x3864) x4065)
+(or (not x4065) x3876)
+(or (not x4065) x3864)
+(or (not x3882) (not x3864) x4066)
+(or (not x4066) x3882)
+(or (not x4066) x3864)
+(or x4067 (not x4068))
+(or x4067 x3864)
+(or x4067 (not x4069))
+(or x4067 x4070)
+(or x4067 x4071)
+(or x4067 x4072)
+(or x4067 (not x4073))
+(or x4067 x4074)
+(or x4067 (not x4075))
+(or x4067 x4076)
+(or x4067 x4077)
+(or x4067 x4078)
+(or x4067 (not x4079))
+(or x4067 x4080)
+(or x4067 x4081)
+(or x4067 x4082)
+(or x4067 (not x4066))
+(or x4067 (not x4065))
+(or x4067 (not x4064))
+(or x4068 (not x3864) x4069 (not x4070) (not x4071) (not x4072) x4073 (not x4074) x4075 (not x4076) (not x4077) (not x4078) x4079 (not x4080) (not x4081) (not x4082) x4066 x4065 x4064 (not x4067))
+(or (not x4067) (not x3987) (not x3864) x4083)
+(or (not x4083) x4067)
+(or (not x4083) x3987)
+(or (not x4083) x3864)
+(or x4084 x3870)
+(or x4084 x3864)
+(or (not x3870) (not x3864) (not x4084))
+(or x4085 x3876)
+(or x4085 x3864)
+(or (not x3876) (not x3864) (not x4085))
+(or x4086 x3882)
+(or x4086 x3864)
+(or (not x3882) (not x3864) (not x4086))
+(or x4068 (not x3864) (not x4087) (not x4070) (not x4071) (not x4072) x4073 (not x4074) x4075 (not x4076) (not x4077) (not x4078) x4079 (not x4080) (not x4081) (not x4082) (not x4086) (not x4085) (not x4084) x4088 x4089)
+(or (not x4089) (not x4068))
+(or (not x4089) x3864)
+(or (not x4089) x4087)
+(or (not x4089) x4070)
+(or (not x4089) x4071)
+(or (not x4089) x4072)
+(or (not x4089) (not x4073))
+(or (not x4089) x4074)
+(or (not x4089) (not x4075))
+(or (not x4089) x4076)
+(or (not x4089) x4077)
+(or (not x4089) x4078)
+(or (not x4089) (not x4079))
+(or (not x4089) x4080)
+(or (not x4089) x4081)
+(or (not x4089) x4082)
+(or (not x4089) x4086)
+(or (not x4089) x4085)
+(or (not x4089) x4084)
+(or (not x4089) (not x4088))
+(or x4090 (not x4089))
+(or x4090 (not x4083))
+(or x4089 x4083 (not x4090))
+(or (not x4090) (not x3864) x4091)
+(or (not x4091) x4090)
+(or (not x4091) x3864)
+(or x4028 (not x4050))
+(or x4028 x4016)
+(or x4028 x3864)
+(or x4050 (not x4016) (not x3864) (not x4028))
+(or x4092 x4093)
+(or x4092 x3864)
+(or x4092 (not x4050))
+(or x4092 x4016)
+(or x4092 x3864)
+(or (not x4093) (not x3864) x4050 (not x4016) (not x3864) (not x4092))
+(or x4094 (not x4095))
+(or x4094 x4044)
+(or x4094 x3864)
+(or x4095 (not x4044) (not x3864) (not x4094))
+(or (not x4094) (not x4092) x4096)
+(or (not x4096) x4094)
+(or (not x4096) x4092)
+(or x4097 x4095 x4096)
+(or x4097 (not x4095) (not x4096))
+(or (not x4097) x4095 (not x4096))
+(or (not x4097) (not x4095) x4096)
+(or (not x4098) (not x4097) x4099)
+(or (not x4099) x4098)
+(or (not x4099) x4097)
+(or (not x4100) (not x4101) (not x4093) (not x3864) x4102)
+(or (not x4102) x4100)
+(or (not x4102) x4101)
+(or (not x4102) x4093)
+(or (not x4102) x3864)
+(or x4103 (not x4102))
+(or x4103 (not x4099))
+(or x4102 x4099 (not x4103))
+(or (not x4103) (not x3864) x4104)
+(or (not x4104) x4103)
+(or (not x4104) x3864)
+(or (not x4105) (not x4106) (not x3864) x4107)
+(or (not x4107) x4105)
+(or (not x4107) x4106)
+(or (not x4107) x3864)
+(or (not x4027) (not x4045) (not x3864) (not x3889) (not x3864) x4108)
+(or (not x4108) x4027)
+(or (not x4108) x4045)
+(or (not x4108) x3864)
+(or (not x4108) x3889)
+(or (not x4108) x3864)
+(or x4109 (not x4108))
+(or x4109 (not x4107))
+(or x4108 x4107 (not x4109))
+(or (not x4109) (not x3864) x4110)
+(or (not x4110) x4109)
+(or (not x4110) x3864)
+(or (not x4111) (not x4112) (not x3864) x4113)
+(or (not x4113) x4111)
+(or (not x4113) x4112)
+(or (not x4113) x3864)
+(or (not x4114) (not x4017) (not x3864) (not x3897) (not x3864) x4115)
+(or (not x4115) x4114)
+(or (not x4115) x4017)
+(or (not x4115) x3864)
+(or (not x4115) x3897)
+(or (not x4115) x3864)
+(or x4116 (not x4115))
+(or x4116 (not x4113))
+(or x4115 x4113 (not x4116))
+(or (not x4116) (not x3864) x4117)
+(or (not x4117) x4116)
+(or (not x4117) x3864)
+(or (not x4105) (not x4118) (not x3864) x4119)
+(or (not x4119) x4105)
+(or (not x4119) x4118)
+(or (not x4119) x3864)
+(or (not x4027) (not x4045) (not x3864) (not x3904) (not x3864) x4120)
+(or (not x4120) x4027)
+(or (not x4120) x4045)
+(or (not x4120) x3864)
+(or (not x4120) x3904)
+(or (not x4120) x3864)
+(or x4121 (not x4120))
+(or x4121 (not x4119))
+(or x4120 x4119 (not x4121))
+(or (not x4121) (not x3864) x4122)
+(or (not x4122) x4121)
+(or (not x4122) x3864)
+(or (not x4111) (not x4123) (not x3864) x4124)
+(or (not x4124) x4111)
+(or (not x4124) x4123)
+(or (not x4124) x3864)
+(or (not x4114) (not x4017) (not x3864) (not x3910) (not x3864) x4125)
+(or (not x4125) x4114)
+(or (not x4125) x4017)
+(or (not x4125) x3864)
+(or (not x4125) x3910)
+(or (not x4125) x3864)
+(or x4126 (not x4125))
+(or x4126 (not x4124))
+(or x4125 x4124 (not x4126))
+(or (not x4126) (not x3864) x4127)
+(or (not x4127) x4126)
+(or (not x4127) x3864)
+(or (not x4105) (not x4128) (not x3864) x4129)
+(or (not x4129) x4105)
+(or (not x4129) x4128)
+(or (not x4129) x3864)
+(or (not x4027) (not x4045) (not x3864) (not x3916) (not x3864) x4130)
+(or (not x4130) x4027)
+(or (not x4130) x4045)
+(or (not x4130) x3864)
+(or (not x4130) x3916)
+(or (not x4130) x3864)
+(or x4131 (not x4130))
+(or x4131 (not x4129))
+(or x4130 x4129 (not x4131))
+(or (not x4131) (not x3864) x4132)
+(or (not x4132) x4131)
+(or (not x4132) x3864)
+(or (not x4111) (not x4133) (not x3864) x4134)
+(or (not x4134) x4111)
+(or (not x4134) x4133)
+(or (not x4134) x3864)
+(or (not x4114) (not x4017) (not x3864) (not x3922) (not x3864) x4135)
+(or (not x4135) x4114)
+(or (not x4135) x4017)
+(or (not x4135) x3864)
+(or (not x4135) x3922)
+(or (not x4135) x3864)
+(or x4136 (not x4135))
+(or x4136 (not x4134))
+(or x4135 x4134 (not x4136))
+(or (not x4136) (not x3864) x4137)
+(or (not x4137) x4136)
+(or (not x4137) x3864)
+(or (not x4105) (not x4138) (not x3864) x4139)
+(or (not x4139) x4105)
+(or (not x4139) x4138)
+(or (not x4139) x3864)
+(or (not x4027) (not x4045) (not x3864) (not x3928) (not x3864) x4140)
+(or (not x4140) x4027)
+(or (not x4140) x4045)
+(or (not x4140) x3864)
+(or (not x4140) x3928)
+(or (not x4140) x3864)
+(or x4141 (not x4140))
+(or x4141 (not x4139))
+(or x4140 x4139 (not x4141))
+(or (not x4141) (not x3864) x4142)
+(or (not x4142) x4141)
+(or (not x4142) x3864)
+(or (not x4111) (not x4143) (not x3864) x4144)
+(or (not x4144) x4111)
+(or (not x4144) x4143)
+(or (not x4144) x3864)
+(or (not x4114) (not x4017) (not x3864) (not x3934) (not x3864) x4145)
+(or (not x4145) x4114)
+(or (not x4145) x4017)
+(or (not x4145) x3864)
+(or (not x4145) x3934)
+(or (not x4145) x3864)
+(or x4146 (not x4145))
+(or x4146 (not x4144))
+(or x4145 x4144 (not x4146))
+(or (not x4146) (not x3864) x4147)
+(or (not x4147) x4146)
+(or (not x4147) x3864)
+(or (not x4105) (not x4148) (not x3864) x4149)
+(or (not x4149) x4105)
+(or (not x4149) x4148)
+(or (not x4149) x3864)
+(or (not x4027) (not x4045) (not x3864) (not x3940) (not x3864) x4150)
+(or (not x4150) x4027)
+(or (not x4150) x4045)
+(or (not x4150) x3864)
+(or (not x4150) x3940)
+(or (not x4150) x3864)
+(or x4151 (not x4150))
+(or x4151 (not x4149))
+(or x4150 x4149 (not x4151))
+(or (not x4151) (not x3864) x4152)
+(or (not x4152) x4151)
+(or (not x4152) x3864)
+(or (not x4111) (not x4153) (not x3864) x4154)
+(or (not x4154) x4111)
+(or (not x4154) x4153)
+(or (not x4154) x3864)
+(or (not x4114) (not x4017) (not x3864) (not x3946) (not x3864) x4155)
+(or (not x4155) x4114)
+(or (not x4155) x4017)
+(or (not x4155) x3864)
+(or (not x4155) x3946)
+(or (not x4155) x3864)
+(or x4156 (not x4155))
+(or x4156 (not x4154))
+(or x4155 x4154 (not x4156))
+(or (not x4156) (not x3864) x4157)
+(or (not x4157) x4156)
+(or (not x4157) x3864)
+(or (not x4105) (not x4158) (not x3864) x4159)
+(or (not x4159) x4105)
+(or (not x4159) x4158)
+(or (not x4159) x3864)
+(or (not x4027) (not x4045) (not x3864) (not x3952) (not x3864) x4160)
+(or (not x4160) x4027)
+(or (not x4160) x4045)
+(or (not x4160) x3864)
+(or (not x4160) x3952)
+(or (not x4160) x3864)
+(or x4161 (not x4160))
+(or x4161 (not x4159))
+(or x4160 x4159 (not x4161))
+(or (not x4161) (not x3864) x4162)
+(or (not x4162) x4161)
+(or (not x4162) x3864)
+(or (not x4111) (not x4163) (not x3864) x4164)
+(or (not x4164) x4111)
+(or (not x4164) x4163)
+(or (not x4164) x3864)
+(or (not x4114) (not x4017) (not x3864) (not x3958) (not x3864) x4165)
+(or (not x4165) x4114)
+(or (not x4165) x4017)
+(or (not x4165) x3864)
+(or (not x4165) x3958)
+(or (not x4165) x3864)
+(or x4166 (not x4165))
+(or x4166 (not x4164))
+(or x4165 x4164 (not x4166))
+(or (not x4166) (not x3864) x4167)
+(or (not x4167) x4166)
+(or (not x4167) x3864)
+(or (not x4168) (not x4169) (not x3864) x4170)
+(or (not x4170) x4168)
+(or (not x4170) x4169)
+(or (not x4170) x3864)
+(or (not x3991) (not x4010) (not x3864) (not x3965) (not x3864) x4171)
+(or (not x4171) x3991)
+(or (not x4171) x4010)
+(or (not x4171) x3864)
+(or (not x4171) x3965)
+(or (not x4171) x3864)
+(or x4172 (not x4171))
+(or x4172 (not x4170))
+(or x4171 x4170 (not x4172))
+(or (not x4172) (not x3864) x4173)
+(or (not x4173) x4172)
+(or (not x4173) x3864)
+(or (not x4174) (not x4175) (not x3864) x4176)
+(or (not x4176) x4174)
+(or (not x4176) x4175)
+(or (not x4176) x3864)
+(or (not x4177) (not x3980) (not x3864) (not x3972) (not x3864) x4178)
+(or (not x4178) x4177)
+(or (not x4178) x3980)
+(or (not x4178) x3864)
+(or (not x4178) x3972)
+(or (not x4178) x3864)
+(or x4179 (not x4178))
+(or x4179 (not x4176))
+(or x4178 x4176 (not x4179))
+(or (not x4179) (not x3864) x4180)
+(or (not x4180) x4179)
+(or (not x4180) x3864)
+(or x4181 (not x4182))
+(or x4181 x3864)
+(or x4182 (not x3864) (not x4181))
+(or x4183 (not x3869))
+(or x4183 (not x4184))
+(or x3869 x4184 (not x4183))
+(or (not x4183) (not x4185) x4186)
+(or (not x4186) x4183)
+(or (not x4186) x4185)
+(or x3869 (not x4187) x4188 x4189)
+(or (not x4189) (not x3869))
+(or (not x4189) x4187)
+(or (not x4189) (not x4188))
+(or x4190 (not x4189))
+(or x4190 (not x4186))
+(or x4190 x3864)
+(or x4189 x4186 (not x3864) (not x4190))
+(or (not x4191) (not x3864) (not x4192) (not x4193) (not x4194) (not x4195) (not x4087) (not x4196) (not x4197) (not x3864) x4198)
+(or (not x4198) x4191)
+(or (not x4198) x3864)
+(or (not x4198) x4192)
+(or (not x4198) x4193)
+(or (not x4198) x4194)
+(or (not x4198) x4195)
+(or (not x4198) x4087)
+(or (not x4198) x4196)
+(or (not x4198) x4197)
+(or (not x4198) x3864)
+(or (not x4199) (not x4197) (not x3864) (not x4193) (not x4200) x4068 (not x3864) (not x4197) (not x3864) x4201)
+(or (not x4201) x4199)
+(or (not x4201) x4197)
+(or (not x4201) x3864)
+(or (not x4201) x4193)
+(or (not x4201) x4200)
+(or (not x4201) (not x4068))
+(or (not x4201) x3864)
+(or (not x4201) x4197)
+(or (not x4201) x3864)
+(or (not x4187) x3869 x4202)
+(or (not x4202) x4187)
+(or (not x4202) (not x3869))
+(or x4203 (not x4202))
+(or x4203 (not x4204))
+(or x4202 x4204 (not x4203))
+(or (not x4199) (not x4192) (not x4203) x4205)
+(or (not x4205) x4199)
+(or (not x4205) x4192)
+(or (not x4205) x4203)
+(or (not x4193) (not x4194) (not x4206) (not x4197) (not x3864) x4207)
+(or (not x4207) x4193)
+(or (not x4207) x4194)
+(or (not x4207) x4206)
+(or (not x4207) x4197)
+(or (not x4207) x3864)
+(or x4208 (not x4207))
+(or x4208 (not x4205))
+(or x4208 (not x4201))
+(or x4208 (not x4198))
+(or x4207 x4205 x4201 x4198 (not x4208))
+(or (not x4208) (not x3864) x4209)
+(or (not x4209) x4208)
+(or (not x4209) x3864)
+(or x4210 (not x4211))
+(or x4210 (not x4212))
+(or x4211 x4212 (not x4210))
+(or x4213 (not x4079))
+(or x4213 x4214)
+(or x4079 (not x4214) (not x4213))
+(or x4215 x4079)
+(or x4215 x4216)
+(or (not x4079) (not x4216) (not x4215))
+(or (not x4215) (not x4213) x4217)
+(or (not x4217) x4215)
+(or (not x4217) x4213)
+(or x4218 x4219)
+(or x4218 (not x4220))
+(or x4218 (not x4081))
+(or x4218 x4080)
+(or x4218 (not x4211))
+(or x4218 (not x4217))
+(or (not x4219) x4220 x4081 (not x4080) x4211 x4217 (not x4218))
+(or x4221 x4219)
+(or x4221 (not x4220))
+(or x4221 (not x4081))
+(or x4221 (not x4080))
+(or x4221 x4222)
+(or (not x4219) x4220 x4081 x4080 (not x4222) (not x4221))
+(or (not x4221) (not x4218) (not x4210) x4223)
+(or (not x4223) x4221)
+(or (not x4223) x4218)
+(or (not x4223) x4210)
+(or x4195 (not x4069))
+(or x4195 (not x4224))
+(or x4195 (not x4223))
+(or x4069 x4224 x4223 (not x4195))
+(or (not x4191) (not x3864) (not x4192) (not x4193) (not x4194) (not x4195) (not x4087) (not x4196) (not x4191) (not x3864) x4225)
+(or (not x4225) x4191)
+(or (not x4225) x3864)
+(or (not x4225) x4192)
+(or (not x4225) x4193)
+(or (not x4225) x4194)
+(or (not x4225) x4195)
+(or (not x4225) x4087)
+(or (not x4225) x4196)
+(or (not x4225) x4191)
+(or (not x4225) x3864)
+(or (not x4200) x4068 (not x3864) (not x4191) (not x3864) x4226)
+(or (not x4226) x4200)
+(or (not x4226) (not x4068))
+(or (not x4226) x3864)
+(or (not x4226) x4191)
+(or (not x4226) x3864)
+(or (not x4227) (not x4185) x4228)
+(or (not x4228) x4227)
+(or (not x4228) x4185)
+(or x4229 (not x4228))
+(or x4229 (not x4226))
+(or x4228 x4226 (not x4229))
+(or (not x4199) (not x4197) (not x3864) (not x4193) (not x4229) x4230)
+(or (not x4230) x4199)
+(or (not x4230) x4197)
+(or (not x4230) x3864)
+(or (not x4230) x4193)
+(or (not x4230) x4229)
+(or (not x4199) (not x4192) (not x4231) (not x4191) (not x3864) x4232)
+(or (not x4232) x4199)
+(or (not x4232) x4192)
+(or (not x4232) x4231)
+(or (not x4232) x4191)
+(or (not x4232) x3864)
+(or (not x4193) (not x4194) (not x4206) (not x4191) (not x3864) x4233)
+(or (not x4233) x4193)
+(or (not x4233) x4194)
+(or (not x4233) x4206)
+(or (not x4233) x4191)
+(or (not x4233) x3864)
+(or x4234 (not x4233))
+(or x4234 (not x4232))
+(or x4234 (not x4230))
+(or x4234 (not x4225))
+(or x4233 x4232 x4230 x4225 (not x4234))
+(or (not x4234) (not x3864) x4235)
+(or (not x4235) x4234)
+(or (not x4235) x3864)
+(or x3974 x3980)
+(or x3974 x3864)
+(or (not x3980) (not x3864) (not x3974))
+(or x4174 (not x4236))
+(or x4174 x3980)
+(or x4174 x3864)
+(or x4236 (not x3980) (not x3864) (not x4174))
+(or (not x4174) (not x4237) (not x4238) (not x3979) (not x3864) x4239)
+(or (not x4239) x4174)
+(or (not x4239) x4237)
+(or (not x4239) x4238)
+(or (not x4239) x3979)
+(or (not x4239) x3864)
+(or (not x3980) (not x3864) x3978)
+(or (not x3978) x3980)
+(or (not x3978) x3864)
+(or (not x4177) (not x3980) (not x3864) (not x3980) (not x3864) x4240)
+(or (not x4240) x4177)
+(or (not x4240) x3980)
+(or (not x4240) x3864)
+(or (not x4240) x3980)
+(or (not x4240) x3864)
+(or x4241 (not x4240))
+(or x4241 (not x4239))
+(or x4240 x4239 (not x4241))
+(or (not x4241) (not x3864) x4242)
+(or (not x4242) x4241)
+(or (not x4242) x3864)
+(or x3967 x4010)
+(or x3967 x3864)
+(or (not x4010) (not x3864) (not x3967))
+(or x4168 (not x4243))
+(or x4168 x4010)
+(or x4168 x3864)
+(or x4243 (not x4010) (not x3864) (not x4168))
+(or (not x4168) (not x4244) (not x4009) (not x3864) x4245)
+(or (not x4245) x4168)
+(or (not x4245) x4244)
+(or (not x4245) x4009)
+(or (not x4245) x3864)
+(or (not x4010) (not x3864) x4008)
+(or (not x4008) x4010)
+(or (not x4008) x3864)
+(or (not x3991) (not x4010) (not x3864) (not x4010) (not x3864) x4246)
+(or (not x4246) x3991)
+(or (not x4246) x4010)
+(or (not x4246) x3864)
+(or (not x4246) x4010)
+(or (not x4246) x3864)
+(or x4247 (not x4246))
+(or x4247 (not x4245))
+(or x4246 x4245 (not x4247))
+(or (not x4247) (not x3864) x4248)
+(or (not x4248) x4247)
+(or (not x4248) x3864)
+(or x3899 x4017)
+(or x3899 x3864)
+(or (not x4017) (not x3864) (not x3899))
+(or x4111 (not x4249))
+(or x4111 x4017)
+(or x4111 x3864)
+(or x4249 (not x4017) (not x3864) (not x4111))
+(or (not x4111) (not x4250) (not x4251) (not x4016) (not x3864) x4252)
+(or (not x4252) x4111)
+(or (not x4252) x4250)
+(or (not x4252) x4251)
+(or (not x4252) x4016)
+(or (not x4252) x3864)
+(or (not x4017) (not x3864) x4015)
+(or (not x4015) x4017)
+(or (not x4015) x3864)
+(or (not x4114) (not x4017) (not x3864) (not x4017) (not x3864) x4253)
+(or (not x4253) x4114)
+(or (not x4253) x4017)
+(or (not x4253) x3864)
+(or (not x4253) x4017)
+(or (not x4253) x3864)
+(or x4254 (not x4253))
+(or x4254 (not x4252))
+(or x4253 x4252 (not x4254))
+(or (not x4254) (not x3864) x4255)
+(or (not x4255) x4254)
+(or (not x4255) x3864)
+(or x3891 x4045)
+(or x3891 x3864)
+(or (not x4045) (not x3864) (not x3891))
+(or x4105 (not x4256))
+(or x4105 x4045)
+(or x4105 x3864)
+(or x4256 (not x4045) (not x3864) (not x4105))
+(or (not x4105) (not x4257) (not x4044) (not x3864) x4258)
+(or (not x4258) x4105)
+(or (not x4258) x4257)
+(or (not x4258) x4044)
+(or (not x4258) x3864)
+(or (not x4045) (not x3864) x4043)
+(or (not x4043) x4045)
+(or (not x4043) x3864)
+(or (not x4027) (not x4045) (not x3864) (not x4045) (not x3864) x4259)
+(or (not x4259) x4027)
+(or (not x4259) x4045)
+(or (not x4259) x3864)
+(or (not x4259) x4045)
+(or (not x4259) x3864)
+(or x4260 (not x4259))
+(or x4260 (not x4258))
+(or x4259 x4258 (not x4260))
+(or (not x4260) (not x3864) x4261)
+(or (not x4261) x4260)
+(or (not x4261) x3864)
+(or x154 (not x4262) (not x3864) (not x4263) (not x3864) x4264)
+(or (not x4264) (not x154))
+(or (not x4264) x4262)
+(or (not x4264) x3864)
+(or (not x4264) x4263)
+(or (not x4264) x3864)
+(or x4265 (not x4266))
+(or x4265 (not x4267))
+(or x4265 (not x4268))
+(or x4266 x4267 x4268 (not x4265))
+(or (not x154) (not x4265) x4269)
+(or (not x4269) x154)
+(or (not x4269) x4265)
+(or x4270 (not x4269))
+(or x4270 (not x4264))
+(or x4269 x4264 (not x4270))
+(or (not x4270) (not x3864) x4271)
+(or (not x4271) x4270)
+(or (not x4271) x3864)
+(or x153 (not x4272) (not x3864) (not x4273) (not x3864) x4274)
+(or (not x4274) (not x153))
+(or (not x4274) x4272)
+(or (not x4274) x3864)
+(or (not x4274) x4273)
+(or (not x4274) x3864)
+(or x4275 (not x4276))
+(or x4275 (not x4277))
+(or x4275 (not x4278))
+(or x4276 x4277 x4278 (not x4275))
+(or (not x153) (not x4275) x4279)
+(or (not x4279) x153)
+(or (not x4279) x4275)
+(or x4280 (not x4279))
+(or x4280 (not x4274))
+(or x4279 x4274 (not x4280))
+(or (not x4280) (not x3864) x4281)
+(or (not x4281) x4280)
+(or (not x4281) x3864)
+(or (not x4282) (not x4283) (not x4284) x4285)
+(or (not x4285) x4282)
+(or (not x4285) x4283)
+(or (not x4285) x4284)
+(or (not x4286) (not x4282) (not x4287) (not x4288) (not x4262) (not x3864) x4289)
+(or (not x4289) x4286)
+(or (not x4289) x4282)
+(or (not x4289) x4287)
+(or (not x4289) x4288)
+(or (not x4289) x4262)
+(or (not x4289) x3864)
+(or x4290 (not x4289))
+(or x4290 (not x4285))
+(or x4289 x4285 (not x4290))
+(or (not x4035) (not x3864) (not x4284) (not x4002) (not x4037) (not x4291) (not x4290) x4292)
+(or (not x4292) x4035)
+(or (not x4292) x3864)
+(or (not x4292) x4284)
+(or (not x4292) x4002)
+(or (not x4292) x4037)
+(or (not x4292) x4291)
+(or (not x4292) x4290)
+(or (not x4293) (not x4294) (not x4284) x4295)
+(or (not x4295) x4293)
+(or (not x4295) x4294)
+(or (not x4295) x4284)
+(or (not x4293) (not x4296) (not x4297) (not x4298) (not x4262) (not x3864) x4299)
+(or (not x4299) x4293)
+(or (not x4299) x4296)
+(or (not x4299) x4297)
+(or (not x4299) x4298)
+(or (not x4299) x4262)
+(or (not x4299) x3864)
+(or x4300 (not x4301))
+(or x4300 (not x4299))
+(or x4301 x4299 (not x4300))
+(or (not x4302) (not x4300) x4303)
+(or (not x4303) x4302)
+(or (not x4303) x4300)
+(or x4304 (not x4303))
+(or x4304 (not x4295))
+(or x4303 x4295 (not x4304))
+(or (not x4035) (not x3864) x4036 (not x3864) (not x4002) (not x4037) (not x4304) x4305)
+(or (not x4305) x4035)
+(or (not x4305) x3864)
+(or (not x4305) (not x4036))
+(or (not x4305) x3864)
+(or (not x4305) x4002)
+(or (not x4305) x4037)
+(or (not x4305) x4304)
+(or (not x4027) (not x4114) (not x4306) (not x4284) x4307)
+(or (not x4307) x4027)
+(or (not x4307) x4114)
+(or (not x4307) x4306)
+(or (not x4307) x4284)
+(or (not x4308) (not x4027) (not x4114) (not x4309) (not x4310) x4311)
+(or (not x4311) x4308)
+(or (not x4311) x4027)
+(or (not x4311) x4114)
+(or (not x4311) x4309)
+(or (not x4311) x4310)
+(or x4312 (not x4311))
+(or x4312 (not x4307))
+(or x4311 x4307 (not x4312))
+(or (not x4313) (not x4284) (not x4002) (not x4312) x4314)
+(or (not x4314) x4313)
+(or (not x4314) x4284)
+(or (not x4314) x4002)
+(or (not x4314) x4312)
+(or (not x4315) (not x4316) (not x4284) x4317)
+(or (not x4317) x4315)
+(or (not x4317) x4316)
+(or (not x4317) x4284)
+(or (not x4315) (not x4318) (not x4027) (not x4114) (not x4310) x4319)
+(or (not x4319) x4315)
+(or (not x4319) x4318)
+(or (not x4319) x4027)
+(or (not x4319) x4114)
+(or (not x4319) x4310)
+(or x4320 (not x4321))
+(or x4320 (not x4319))
+(or x4321 x4319 (not x4320))
+(or (not x4322) (not x4320) x4323)
+(or (not x4323) x4322)
+(or (not x4323) x4320)
+(or x4324 (not x4323))
+(or x4324 (not x4317))
+(or x4323 x4317 (not x4324))
+(or (not x4313) x4036 (not x3864) (not x4324) x4325)
+(or (not x4325) x4313)
+(or (not x4325) (not x4036))
+(or (not x4325) x3864)
+(or (not x4325) x4324)
+(or x4326 (not x4325))
+(or x4326 (not x4314))
+(or x4326 (not x4305))
+(or x4326 (not x4292))
+(or x4326 x3864)
+(or x4325 x4314 x4305 x4292 (not x3864) (not x4326))
+(or x4327 (not x4328))
+(or x4327 (not x4329))
+(or x4327 (not x4330))
+(or x4328 x4329 x4330 (not x4327))
+(or (not x4331) (not x4327) x4332)
+(or (not x4332) x4331)
+(or (not x4332) x4327)
+(or x4283 (not x4333))
+(or x4283 (not x4332))
+(or x4333 x4332 (not x4283))
+(or (not x4282) (not x4283) (not x4035) (not x3864) x4334)
+(or (not x4334) x4282)
+(or (not x4334) x4283)
+(or (not x4334) x4035)
+(or (not x4334) x3864)
+(or x4331 (not x4329))
+(or x4331 x4262)
+(or x4331 x3864)
+(or x4329 (not x4262) (not x3864) (not x4331))
+(or (not x4331) (not x4288) (not x4335) x4336)
+(or (not x4336) x4331)
+(or (not x4336) x4288)
+(or (not x4336) x4335)
+(or (not x4288) (not x4262) (not x3864) x4328)
+(or (not x4328) x4288)
+(or (not x4328) x4262)
+(or (not x4328) x3864)
+(or x4287 (not x4328))
+(or x4287 (not x4336))
+(or x4328 x4336 (not x4287))
+(or x4238 (not x4050))
+(or x4238 (not x4337))
+(or x4238 (not x4054))
+(or x4050 x4337 x4054 (not x4238))
+(or x4237 x3987)
+(or x4237 x3864)
+(or x4237 (not x4338))
+(or x4237 (not x4339))
+(or x4237 (not x4340))
+(or x4237 (not x4341))
+(or x4237 (not x3994))
+(or (not x3987) (not x3864) x4338 x4339 x4340 x4341 x3994 (not x4237))
+(or (not x4237) (not x4238) x4342)
+(or (not x4342) x4237)
+(or (not x4342) x4238)
+(or x4343 (not x4342))
+(or x4343 x3979)
+(or x4343 x3864)
+(or x4342 (not x3979) (not x3864) (not x4343))
+(or x4060 (not x4050))
+(or x4060 (not x4338))
+(or x4060 (not x4339))
+(or x4060 (not x4340))
+(or x4060 (not x4341))
+(or x4050 x4338 x4339 x4340 x4341 (not x4060))
+(or x4059 x3987)
+(or x4059 x3864)
+(or x4059 (not x4338))
+(or x4059 (not x4339))
+(or x4059 (not x4340))
+(or x4059 (not x4341))
+(or x4059 x3986)
+(or x4059 x3864)
+(or (not x3987) (not x3864) x4338 x4339 x4340 x4341 (not x3986) (not x3864) (not x4059))
+(or (not x4059) (not x4060) x4337)
+(or (not x4337) x4059)
+(or (not x4337) x4060)
+(or x4244 (not x4337))
+(or x4244 x4052)
+(or x4244 x3864)
+(or x4337 (not x4052) (not x3864) (not x4244))
+(or x4344 (not x4337))
+(or x4344 x4052)
+(or x4344 x3864)
+(or x4344 x4009)
+(or x4344 x3864)
+(or x4337 (not x4052) (not x3864) (not x4009) (not x3864) (not x4344))
+(or (not x4310) (not x4344) (not x4343) x4329)
+(or (not x4329) x4310)
+(or (not x4329) x4344)
+(or (not x4329) x4343)
+(or x4282 (not x4329))
+(or x4282 x4272)
+(or x4282 x3864)
+(or x4329 (not x4272) (not x3864) (not x4282))
+(or (not x4282) (not x4287) x4345)
+(or (not x4345) x4282)
+(or (not x4345) x4287)
+(or x4288 (not x4346))
+(or x4288 (not x4347))
+(or x4288 (not x4348))
+(or x4346 x4347 x4348 (not x4288))
+(or (not x4288) (not x4272) (not x3864) x4333)
+(or (not x4333) x4288)
+(or (not x4333) x4272)
+(or (not x4333) x3864)
+(or x4286 (not x4333))
+(or x4286 (not x4345))
+(or x4333 x4345 (not x4286))
+(or (not x4286) (not x4282) (not x4287) (not x4331) (not x4288) (not x4335) x4349)
+(or (not x4349) x4286)
+(or (not x4349) x4282)
+(or (not x4349) x4287)
+(or (not x4349) x4331)
+(or (not x4349) x4288)
+(or (not x4349) x4335)
+(or x4350 (not x4349))
+(or x4350 (not x4334))
+(or x4349 x4334 (not x4350))
+(or (not x4035) (not x3864) (not x4284) (not x4002) (not x4037) (not x4291) (not x4350) x4351)
+(or (not x4351) x4035)
+(or (not x4351) x3864)
+(or (not x4351) x4284)
+(or (not x4351) x4002)
+(or (not x4351) x4037)
+(or (not x4351) x4291)
+(or (not x4351) x4350)
+(or x4352 (not x4353))
+(or x4352 (not x4354))
+(or x4352 x4262)
+(or x4352 x3864)
+(or x4353 x4354 (not x4262) (not x3864) (not x4352))
+(or (not x4297) (not x4352) x4355)
+(or (not x4355) x4297)
+(or (not x4355) x4352)
+(or x4294 (not x4301))
+(or x4294 (not x4355))
+(or x4301 x4355 (not x4294))
+(or (not x4293) (not x4294) (not x4035) (not x3864) x4356)
+(or (not x4356) x4293)
+(or (not x4356) x4294)
+(or (not x4356) x4035)
+(or (not x4356) x3864)
+(or x4297 (not x4354))
+(or x4297 x4272)
+(or x4297 x3864)
+(or x4354 (not x4272) (not x3864) (not x4297))
+(or (not x4297) (not x4298) (not x4262) (not x3864) x4357)
+(or (not x4357) x4297)
+(or (not x4357) x4298)
+(or (not x4357) x4262)
+(or (not x4357) x3864)
+(or (not x4298) (not x4272) (not x3864) x4353)
+(or (not x4353) x4298)
+(or (not x4353) x4272)
+(or (not x4353) x3864)
+(or x4296 (not x4353))
+(or x4296 (not x4357))
+(or x4353 x4357 (not x4296))
+(or x4251 (not x4050))
+(or x4251 (not x4358))
+(or x4251 (not x4095))
+(or x4050 x4358 x4095 (not x4251))
+(or x4250 x3987)
+(or x4250 x3864)
+(or x4250 (not x4338))
+(or x4250 x4035)
+(or x4250 x3864)
+(or x4250 (not x4036))
+(or x4250 x3864)
+(or x4250 (not x4341))
+(or x4250 (not x4359))
+(or x4250 (not x4340))
+(or x4250 (not x4341))
+(or x4250 (not x4030))
+(or (not x3987) (not x3864) x4338 (not x4035) (not x3864) x4036 (not x3864) x4341 x4359 x4340 x4341 x4030 (not x4250))
+(or (not x4250) (not x4251) x4360)
+(or (not x4360) x4250)
+(or (not x4360) x4251)
+(or x4361 (not x4360))
+(or x4361 x4016)
+(or x4361 x3864)
+(or x4360 (not x4016) (not x3864) (not x4361))
+(or x4101 (not x4050))
+(or x4101 (not x4338))
+(or x4101 x4035)
+(or x4101 x3864)
+(or x4101 (not x4036))
+(or x4101 x3864)
+(or x4101 (not x4341))
+(or x4101 (not x4359))
+(or x4101 (not x4340))
+(or x4101 (not x4341))
+(or x4050 x4338 (not x4035) (not x3864) x4036 (not x3864) x4341 x4359 x4340 x4341 (not x4101))
+(or x4100 x3987)
+(or x4100 x3864)
+(or x4100 (not x4338))
+(or x4100 x4035)
+(or x4100 x3864)
+(or x4100 (not x4036))
+(or x4100 x3864)
+(or x4100 (not x4341))
+(or x4100 (not x4359))
+(or x4100 (not x4340))
+(or x4100 (not x4341))
+(or x4100 x4023)
+(or x4100 x3864)
+(or (not x3987) (not x3864) x4338 (not x4035) (not x3864) x4036 (not x3864) x4341 x4359 x4340 x4341 (not x4023) (not x3864) (not x4100))
+(or (not x4100) (not x4101) x4358)
+(or (not x4358) x4100)
+(or (not x4358) x4101)
+(or x4257 (not x4358))
+(or x4257 x4093)
+(or x4257 x3864)
+(or x4358 (not x4093) (not x3864) (not x4257))
+(or x4362 (not x4358))
+(or x4362 x4093)
+(or x4362 x3864)
+(or x4362 x4044)
+(or x4362 x3864)
+(or x4358 (not x4093) (not x3864) (not x4044) (not x3864) (not x4362))
+(or (not x4335) (not x4362) (not x4361) x4354)
+(or (not x4354) x4335)
+(or (not x4354) x4362)
+(or (not x4354) x4361)
+(or x4293 (not x4354))
+(or x4293 (not x4346))
+(or x4354 x4346 (not x4293))
+(or (not x4293) (not x4296) x4363)
+(or (not x4363) x4293)
+(or (not x4363) x4296)
+(or x4298 (not x4330))
+(or x4298 (not x4364))
+(or x4298 (not x4365))
+(or x4330 x4364 x4365 (not x4298))
+(or (not x4298) (not x4310) x4301)
+(or (not x4301) x4298)
+(or (not x4301) x4310)
+(or x4302 (not x4301))
+(or x4302 (not x4363))
+(or x4301 x4363 (not x4302))
+(or (not x4302) (not x4298) (not x4310) x4366)
+(or (not x4366) x4302)
+(or (not x4366) x4298)
+(or (not x4366) x4310)
+(or x4367 (not x4366))
+(or x4367 (not x4356))
+(or x4366 x4356 (not x4367))
+(or (not x4035) (not x3864) x4036 (not x3864) (not x4002) (not x4037) (not x4367) x4368)
+(or (not x4368) x4035)
+(or (not x4368) x3864)
+(or (not x4368) (not x4036))
+(or (not x4368) x3864)
+(or (not x4368) x4002)
+(or (not x4368) x4037)
+(or (not x4368) x4367)
+(or x4369 (not x4243))
+(or x4369 (not x4236))
+(or x4369 x4272)
+(or x4369 x3864)
+(or x4243 x4236 (not x4272) (not x3864) (not x4369))
+(or (not x3991) (not x4177) (not x4369) x4370)
+(or (not x4370) x3991)
+(or (not x4370) x4177)
+(or (not x4370) x4369)
+(or x4306 (not x4256))
+(or x4306 (not x4249))
+(or x4306 (not x4370))
+(or x4256 x4249 x4370 (not x4306))
+(or (not x4027) (not x4114) (not x4306) (not x4035) (not x3864) x4371)
+(or (not x4371) x4027)
+(or (not x4371) x4114)
+(or (not x4371) x4306)
+(or (not x4371) x4035)
+(or (not x4371) x3864)
+(or (not x4027) (not x4114) (not x4309) (not x4310) x4372)
+(or (not x4372) x4027)
+(or (not x4372) x4114)
+(or (not x4372) x4309)
+(or (not x4372) x4310)
+(or x4373 (not x4256))
+(or x4373 (not x4249))
+(or x4373 (not x4372))
+(or x4256 x4249 x4372 (not x4373))
+(or (not x3991) (not x4177) (not x4272) (not x3864) x4374)
+(or (not x4374) x3991)
+(or (not x4374) x4177)
+(or (not x4374) x4272)
+(or (not x4374) x3864)
+(or x4309 (not x4243))
+(or x4309 (not x4236))
+(or x4309 (not x4374))
+(or x4243 x4236 x4374 (not x4309))
+(or (not x4027) (not x4114) (not x4309) x4375)
+(or (not x4375) x4027)
+(or (not x4375) x4114)
+(or (not x4375) x4309)
+(or x4308 (not x4256))
+(or x4308 (not x4249))
+(or x4308 (not x4375))
+(or x4256 x4249 x4375 (not x4308))
+(or (not x4308) (not x4373) x4376)
+(or (not x4376) x4308)
+(or (not x4376) x4373)
+(or x4377 (not x4376))
+(or x4377 (not x4371))
+(or x4376 x4371 (not x4377))
+(or (not x4313) (not x4284) (not x4002) (not x4377) x4378)
+(or (not x4378) x4313)
+(or (not x4378) x4284)
+(or (not x4378) x4002)
+(or (not x4378) x4377)
+(or x4177 x3979)
+(or x4177 x3864)
+(or (not x3979) (not x3864) (not x4177))
+(or x3991 x4009)
+(or x3991 x3864)
+(or (not x4009) (not x3864) (not x3991))
+(or (not x3991) (not x4177) x4346)
+(or (not x4346) x3991)
+(or (not x4346) x4177)
+(or x4379 (not x4256))
+(or x4379 (not x4249))
+(or x4379 (not x4346))
+(or x4256 x4249 x4346 (not x4379))
+(or (not x4027) (not x4114) (not x4379) x4380)
+(or (not x4380) x4027)
+(or (not x4380) x4114)
+(or (not x4380) x4379)
+(or x4316 (not x4321))
+(or x4316 (not x4380))
+(or x4321 x4380 (not x4316))
+(or (not x4315) (not x4316) (not x4035) (not x3864) x4381)
+(or (not x4381) x4315)
+(or (not x4381) x4316)
+(or (not x4381) x4035)
+(or (not x4381) x3864)
+(or x4310 (not x4243))
+(or x4310 (not x4236))
+(or x4243 x4236 (not x4310))
+(or x4114 x4016)
+(or x4114 x3864)
+(or (not x4016) (not x3864) (not x4114))
+(or x4027 x4044)
+(or x4027 x3864)
+(or (not x4044) (not x3864) (not x4027))
+(or (not x4027) (not x4114) x4330)
+(or (not x4330) x4027)
+(or (not x4330) x4114)
+(or (not x4027) (not x4114) (not x4310) x4382)
+(or (not x4382) x4027)
+(or (not x4382) x4114)
+(or (not x4382) x4310)
+(or x4335 (not x4256))
+(or x4335 (not x4249))
+(or x4256 x4249 (not x4335))
+(or x4318 (not x4256))
+(or x4318 (not x4249))
+(or x4318 (not x4382))
+(or x4256 x4249 x4382 (not x4318))
+(or x4315 x4262)
+(or x4315 x3864)
+(or (not x4262) (not x3864) (not x4315))
+(or (not x4315) (not x4318) x4383)
+(or (not x4383) x4315)
+(or (not x4383) x4318)
+(or x4322 (not x4321))
+(or x4322 (not x4383))
+(or x4321 x4383 (not x4322))
+(or (not x4322) (not x4315) (not x4318) x4384)
+(or (not x4384) x4322)
+(or (not x4384) x4315)
+(or (not x4384) x4318)
+(or x4385 (not x4384))
+(or x4385 (not x4381))
+(or x4384 x4381 (not x4385))
+(or (not x4313) x4036 (not x3864) (not x4385) x4386)
+(or (not x4386) x4313)
+(or (not x4386) (not x4036))
+(or (not x4386) x3864)
+(or (not x4386) x4385)
+(or x4387 (not x4386))
+(or x4387 (not x4378))
+(or x4387 (not x4368))
+(or x4387 (not x4351))
+(or x4386 x4378 x4368 x4351 (not x4387))
+(or (not x4387) (not x3864) x4388)
+(or (not x4388) x4387)
+(or (not x4388) x3864)
+(or x4389 x4263)
+(or x4389 x3864)
+(or (not x4263) (not x3864) (not x4389))
+(or (not x4389) (not x4001) (not x4262) (not x3864) x4390)
+(or (not x4390) x4389)
+(or (not x4390) x4001)
+(or (not x4390) x4262)
+(or (not x4390) x3864)
+(or (not x4263) (not x3864) x4391)
+(or (not x4391) x4263)
+(or (not x4391) x3864)
+(or x4392 (not x4391))
+(or x4392 (not x4390))
+(or x4391 x4390 (not x4392))
+(or (not x4392) (not x3864) x4393)
+(or (not x4393) x4392)
+(or (not x4393) x3864)
+(or (not x4394) (not x4395) x4396)
+(or (not x4396) x4394)
+(or (not x4396) x4395)
+(or x4394 (not x4397) (not x4398) x4399)
+(or (not x4399) (not x4394))
+(or (not x4399) x4397)
+(or (not x4399) x4398)
+(or x4400 (not x4399))
+(or x4400 (not x4396))
+(or x4399 x4396 (not x4400))
+(or (not x4401) (not x3864) (not x4402) (not x4403) (not x4404) (not x4400) x4405)
+(or (not x4405) x4401)
+(or (not x4405) x3864)
+(or (not x4405) x4402)
+(or (not x4405) x4403)
+(or (not x4405) x4404)
+(or (not x4405) x4400)
+(or x4398 x4406)
+(or x4398 x3864)
+(or x4398 (not x3846))
+(or x4398 (not x3820))
+(or x4398 (not x4407))
+(or x4398 (not x4408))
+(or x4398 (not x4409))
+(or x4398 (not x4410))
+(or x4398 (not x4411))
+(or (not x4406) (not x3864) x3846 x3820 x4407 x4408 x4409 x4410 x4411 (not x4398))
+(or x4397 (not x3845))
+(or x4397 x4412)
+(or x4397 x3864)
+(or x4397 (not x3820))
+(or x4397 (not x4413))
+(or x4397 x4414)
+(or x4397 x3864)
+(or x4397 (not x4415))
+(or x4397 (not x4416))
+(or x4397 (not x4408))
+(or x4397 (not x4409))
+(or x4397 (not x4410))
+(or x3845 (not x4412) (not x3864) x3820 x4413 (not x4414) (not x3864) x4415 x4416 x4408 x4409 x4410 (not x4397))
+(or x4416 (not x4397) (not x4398) x4417)
+(or (not x4417) (not x4416))
+(or (not x4417) x4397)
+(or (not x4417) x4398)
+(or x4418 (not x4417))
+(or x4418 (not x4416))
+(or x4417 x4416 (not x4418))
+(or (not x4419) (not x4414) (not x3864) (not x4403) (not x4418) x4420)
+(or (not x4420) x4419)
+(or (not x4420) x4414)
+(or (not x4420) x3864)
+(or (not x4420) x4403)
+(or (not x4420) x4418)
+(or x4421 (not x4422))
+(or x4421 (not x4415))
+(or x4421 (not x4420))
+(or x4421 (not x4405))
+(or x4422 x4415 x4420 x4405 (not x4421))
+(or (not x4423) (not x3864) (not x4421) x4424)
+(or (not x4424) x4423)
+(or (not x4424) x3864)
+(or (not x4424) x4421)
+(or x4425 (not x4424))
+(or x4425 x3864)
+(or x4424 (not x3864) (not x4425))
+(or x4426 x4273)
+(or x4426 x3864)
+(or (not x4273) (not x3864) (not x4426))
+(or (not x4426) (not x4002) (not x4272) (not x3864) x4427)
+(or (not x4427) x4426)
+(or (not x4427) x4002)
+(or (not x4427) x4272)
+(or (not x4427) x3864)
+(or (not x4273) (not x3864) x4428)
+(or (not x4428) x4273)
+(or (not x4428) x3864)
+(or x4429 (not x4428))
+(or x4429 (not x4427))
+(or x4428 x4427 (not x4429))
+(or (not x4429) (not x3864) x4430)
+(or (not x4430) x4429)
+(or (not x4430) x3864)
+(or x4431 x4401)
+(or x4431 x3864)
+(or x4431 (not x4432))
+(or x4431 (not x4415))
+(or x4431 (not x4433))
+(or x4431 (not x4434))
+(or x4431 x3864)
+(or x4431 (not x4394))
+(or (not x4401) (not x3864) x4432 x4415 x4433 x4434 (not x3864) x4394 (not x4431))
+(or x4435 (not x4413))
+(or x4435 (not x4432))
+(or x4435 (not x4436))
+(or x4413 x4432 x4436 (not x4435))
+(or x4437 (not x4413))
+(or x4437 x4414)
+(or x4437 x3864)
+(or x4437 (not x4415))
+(or x4437 x4416)
+(or x4437 (not x3869))
+(or x4413 (not x4414) (not x3864) x4415 (not x4416) x3869 (not x4437))
+(or (not x4437) (not x4435) (not x4431) x4438)
+(or (not x4438) x4437)
+(or (not x4438) x4435)
+(or (not x4438) x4431)
+(or x4439 (not x3869))
+(or x4439 (not x4438))
+(or x3869 x4438 (not x4439))
+(or (not x4423) (not x3864) (not x4439) (not x4423) (not x3864) x4440)
+(or (not x4440) x4423)
+(or (not x4440) x3864)
+(or (not x4440) x4439)
+(or (not x4440) x4423)
+(or (not x4440) x3864)
+(or (not x4070) (not x4071) (not x4072) x4073 (not x4074) x4075 (not x4076) (not x4077) (not x4078) x4079 (not x4080) (not x4081) x4224)
+(or (not x4224) x4070)
+(or (not x4224) x4071)
+(or (not x4224) x4072)
+(or (not x4224) (not x4073))
+(or (not x4224) x4074)
+(or (not x4224) (not x4075))
+(or (not x4224) x4076)
+(or (not x4224) x4077)
+(or (not x4224) x4078)
+(or (not x4224) (not x4079))
+(or (not x4224) x4080)
+(or (not x4224) x4081)
+(or x4206 x4191)
+(or x4206 x3864)
+(or x4206 (not x4204))
+(or (not x4191) (not x3864) x4204 (not x4206))
+(or x4441 x4191)
+(or x4441 x3864)
+(or x4441 (not x4204))
+(or x4441 (not x4442))
+(or x4441 (not x4443))
+(or (not x4191) (not x3864) x4204 x4442 x4443 (not x4441))
+(or x4200 (not x4068))
+(or x4200 x3864)
+(or x4200 (not x4444))
+(or x4200 x3864)
+(or x4068 (not x3864) x4444 (not x3864) (not x4200))
+(or (not x4200) x4068 (not x3864) x4445)
+(or (not x4445) x4200)
+(or (not x4445) (not x4068))
+(or (not x4445) x3864)
+(or x4446 (not x4447))
+(or x4446 x4197)
+(or x4446 x3864)
+(or x4446 (not x4442))
+(or x4446 (not x4445))
+(or x4447 (not x4197) (not x3864) x4442 x4445 (not x4446))
+(or (not x4446) (not x4441) x4069)
+(or (not x4069) x4446)
+(or (not x4069) x4441)
+(or x4448 x4219)
+(or x4448 (not x4220))
+(or x4448 (not x4081))
+(or x4448 x4080)
+(or (not x4219) x4220 x4081 (not x4080) (not x4448))
+(or (not x4449) (not x4448) x4450)
+(or (not x4450) x4449)
+(or (not x4450) x4448)
+(or x4079 (not x4214) x4451)
+(or (not x4451) (not x4079))
+(or (not x4451) x4214)
+(or (not x4079) (not x4216) x4452)
+(or (not x4452) x4079)
+(or (not x4452) x4216)
+(or x4453 (not x4452))
+(or x4453 (not x4451))
+(or x4452 x4451 (not x4453))
+(or x4449 x4219)
+(or x4449 (not x4220))
+(or x4449 (not x4081))
+(or x4449 (not x4080))
+(or (not x4219) x4220 x4081 x4080 (not x4449))
+(or (not x4219) x4220 x4081 (not x4080) x4212)
+(or (not x4212) x4219)
+(or (not x4212) (not x4220))
+(or (not x4212) (not x4081))
+(or (not x4212) x4080)
+(or (not x4219) x4220 x4081 (not x4080) (not x4449) (not x4453) x4454)
+(or (not x4454) x4219)
+(or (not x4454) (not x4220))
+(or (not x4454) (not x4081))
+(or (not x4454) x4080)
+(or (not x4454) x4449)
+(or (not x4454) x4453)
+(or (not x4219) x4220 x4081 x4080 x4211)
+(or (not x4211) x4219)
+(or (not x4211) (not x4220))
+(or (not x4211) (not x4081))
+(or (not x4211) (not x4080))
+(or (not x4219) x4220 x4081 x4080 (not x4222) x4455)
+(or (not x4455) x4219)
+(or (not x4455) (not x4220))
+(or (not x4455) (not x4081))
+(or (not x4455) (not x4080))
+(or (not x4455) x4222)
+(or x4456 (not x4455))
+(or x4456 (not x4454))
+(or x4456 (not x4450))
+(or x4455 x4454 x4450 (not x4456))
+(or x4196 x4070)
+(or x4196 x4071)
+(or x4196 x4072)
+(or x4196 (not x4073))
+(or x4196 x4074)
+(or x4196 (not x4075))
+(or x4196 x4076)
+(or x4196 x4077)
+(or x4196 x4078)
+(or x4196 (not x4079))
+(or x4196 x4080)
+(or x4196 x4081)
+(or (not x4070) (not x4071) (not x4072) x4073 (not x4074) x4075 (not x4076) (not x4077) (not x4078) x4079 (not x4080) (not x4081) (not x4196))
+(or x4185 (not x4068))
+(or x4185 x3864)
+(or x4068 (not x3864) (not x4185))
+(or x4227 (not x4457))
+(or x4227 (not x4068))
+(or x4227 x3864)
+(or x4457 x4068 (not x3864) (not x4227))
+(or (not x4199) (not x4197) (not x3864) (not x4193) (not x4227) x4458)
+(or (not x4458) x4199)
+(or (not x4458) x4197)
+(or (not x4458) x3864)
+(or (not x4458) x4193)
+(or (not x4458) x4227)
+(or x4087 (not x4458))
+(or x4087 (not x4459))
+(or x4458 x4459 (not x4087))
+(or (not x4087) (not x4196) (not x4456) x4460)
+(or (not x4460) x4087)
+(or (not x4460) x4196)
+(or (not x4460) x4456)
+(or x4461 (not x4460))
+(or x4461 (not x4069))
+(or x4461 (not x4224))
+(or x4460 x4069 x4224 (not x4461))
+(or x4194 (not x4447))
+(or x4194 x4197)
+(or x4194 x3864)
+(or x4447 (not x4197) (not x3864) (not x4194))
+(or (not x4191) (not x3864) (not x4192) (not x4193) (not x4194) x4459)
+(or (not x4459) x4191)
+(or (not x4459) x3864)
+(or (not x4459) x4192)
+(or (not x4459) x4193)
+(or (not x4459) x4194)
+(or (not x4191) (not x3864) (not x4192) (not x4193) (not x4194) (not x4461) x4462)
+(or (not x4462) x4191)
+(or (not x4462) x3864)
+(or (not x4462) x4192)
+(or (not x4462) x4193)
+(or (not x4462) x4194)
+(or (not x4462) x4461)
+(or x4068 (not x3864) x4444 (not x3864) x4457)
+(or (not x4457) (not x4068))
+(or (not x4457) x3864)
+(or (not x4457) (not x4444))
+(or (not x4457) x3864)
+(or (not x4191) (not x3864) x4447)
+(or (not x4447) x4191)
+(or (not x4447) x3864)
+(or x4193 (not x4447))
+(or x4193 (not x4204))
+(or x4447 x4204 (not x4193))
+(or (not x4197) (not x3864) x4204)
+(or (not x4204) x4197)
+(or (not x4204) x3864)
+(or (not x4199) (not x4197) (not x3864) x4443)
+(or (not x4443) x4199)
+(or (not x4443) x4197)
+(or (not x4443) x3864)
+(or (not x4199) (not x4197) (not x3864) (not x4193) x4068 (not x3864) x4444 (not x3864) x4463)
+(or (not x4463) x4199)
+(or (not x4463) x4197)
+(or (not x4463) x3864)
+(or (not x4463) x4193)
+(or (not x4463) (not x4068))
+(or (not x4463) x3864)
+(or (not x4463) (not x4444))
+(or (not x4463) x3864)
+(or x4231 (not x4184))
+(or x4231 (not x3869))
+(or x4184 x3869 (not x4231))
+(or x4192 x4197)
+(or x4192 x3864)
+(or (not x4197) (not x3864) (not x4192))
+(or x4199 x4191)
+(or x4199 x3864)
+(or (not x4191) (not x3864) (not x4199))
+(or (not x4199) (not x4192) x4442)
+(or (not x4442) x4199)
+(or (not x4442) x4192)
+(or (not x4199) (not x4192) (not x4231) x4464)
+(or (not x4464) x4199)
+(or (not x4464) x4192)
+(or (not x4464) x4231)
+(or x4465 (not x4464))
+(or x4465 (not x4463))
+(or x4465 (not x4462))
+(or x4464 x4463 x4462 (not x4465))
+(or (not x155) (not x4465) x4466)
+(or (not x4466) x155)
+(or (not x4466) x4465)
+(or x4467 (not x4466))
+(or x4467 (not x4184))
+(or x4466 x4184 (not x4467))
+(or (not x4187) (not x4467) x4468)
+(or (not x4468) x4187)
+(or (not x4468) x4467)
+(or x4469 (not x4468))
+(or x4469 (not x4440))
+(or x4468 x4440 (not x4469))
+(or (not x4469) (not x3864) x4470)
+(or (not x4470) x4469)
+(or (not x4470) x3864)
+(or (not x3979) (not x3864) x4236)
+(or (not x4236) x3979)
+(or (not x4236) x3864)
+(or (not x4471) (not x4057) (not x4472) x4473)
+(or (not x4473) x4471)
+(or (not x4473) x4057)
+(or (not x4473) x4472)
+(or (not x3987) (not x3864) (not x3999) (not x4000) (not x4001) (not x4002) (not x4474) x4475)
+(or (not x4475) x3987)
+(or (not x4475) x3864)
+(or (not x4475) x3999)
+(or (not x4475) x4000)
+(or (not x4475) x4001)
+(or (not x4475) x4002)
+(or (not x4475) x4474)
+(or x4476 (not x4475))
+(or x4476 (not x4473))
+(or x4475 x4473 (not x4476))
+(or (not x4476) (not x3979) (not x3864) x4348)
+(or (not x4348) x4476)
+(or (not x4348) x3979)
+(or (not x4348) x3864)
+(or (not x4009) (not x3864) x4243)
+(or (not x4243) x4009)
+(or (not x4243) x3864)
+(or (not x4471) (not x3999) (not x4000) (not x4001) (not x4002) x4477)
+(or (not x4477) x4471)
+(or (not x4477) x3999)
+(or (not x4477) x4000)
+(or (not x4477) x4001)
+(or (not x4477) x4002)
+(or (not x3987) (not x3864) (not x3999) (not x4000) (not x4001) (not x4002) (not x3986) (not x3864) x4478)
+(or (not x4478) x3987)
+(or (not x4478) x3864)
+(or (not x4478) x3999)
+(or (not x4478) x4000)
+(or (not x4478) x4001)
+(or (not x4478) x4002)
+(or (not x4478) x3986)
+(or (not x4478) x3864)
+(or x4057 (not x4478))
+(or x4057 (not x4477))
+(or x4478 x4477 (not x4057))
+(or (not x4057) (not x4052) (not x3864) (not x4009) (not x3864) x4347)
+(or (not x4347) x4057)
+(or (not x4347) x4052)
+(or (not x4347) x3864)
+(or (not x4347) x4009)
+(or (not x4347) x3864)
+(or x4479 (not x4347))
+(or x4479 (not x4348))
+(or x4347 x4348 (not x4479))
+(or x4480 (not x4481))
+(or x4480 (not x4482))
+(or x4480 (not x4481))
+(or x4481 x4482 x4481 (not x4480))
+(or (not x4483) (not x3986) (not x3864) x4481)
+(or (not x4481) x4483)
+(or (not x4481) x3986)
+(or (not x4481) x3864)
+(or (not x4052) (not x3864) x4054)
+(or (not x4054) x4052)
+(or (not x4054) x3864)
+(or (not x3999) (not x4000) (not x4001) (not x4002) (not x3986) (not x3864) (not x4052) (not x3864) x4482)
+(or (not x4482) x3999)
+(or (not x4482) x4000)
+(or (not x4482) x4001)
+(or (not x4482) x4002)
+(or (not x4482) x3986)
+(or (not x4482) x3864)
+(or (not x4482) x4052)
+(or (not x4482) x3864)
+(or x4484 (not x4482))
+(or x4484 (not x4481))
+(or x4482 x4481 (not x4484))
+(or (not x4485) (not x4484) (not x4480) (not x4169) (not x3864) x4486)
+(or (not x4486) x4485)
+(or (not x4486) x4484)
+(or (not x4486) x4480)
+(or (not x4486) x4169)
+(or (not x4486) x3864)
+(or x4472 x4052)
+(or x4472 x3864)
+(or (not x4052) (not x3864) (not x4472))
+(or x4004 (not x4338))
+(or x4004 (not x4339))
+(or x4004 (not x4340))
+(or x4004 (not x4341))
+(or x4338 x4339 x4340 x4341 (not x4004))
+(or x4483 (not x4338))
+(or x4483 (not x4339))
+(or x4483 (not x4340))
+(or x4483 (not x4341))
+(or x4483 x3986)
+(or x4483 x3864)
+(or x4338 x4339 x4340 x4341 (not x3986) (not x3864) (not x4483))
+(or x4487 (not x4338))
+(or x4487 (not x4339))
+(or x4487 (not x4340))
+(or x4487 (not x4341))
+(or x4487 x3986)
+(or x4487 x3864)
+(or x4487 x4052)
+(or x4487 x3864)
+(or x4338 x4339 x4340 x4341 (not x3986) (not x3864) (not x4052) (not x3864) (not x4487))
+(or x4474 x3986)
+(or x4474 x3864)
+(or (not x3986) (not x3864) (not x4474))
+(or (not x3986) (not x3864) x3994)
+(or (not x3994) x3986)
+(or (not x3994) x3864)
+(or (not x3999) (not x4000) (not x4001) (not x4002) (not x3986) (not x3864) x4488)
+(or (not x4488) x3999)
+(or (not x4488) x4000)
+(or (not x4488) x4001)
+(or (not x4488) x4002)
+(or (not x4488) x3986)
+(or (not x4488) x3864)
+(or x4485 (not x4488))
+(or x4485 x3986)
+(or x4485 x3864)
+(or x4488 (not x3986) (not x3864) (not x4485))
+(or (not x4485) (not x4487) (not x4485) (not x4175) (not x3864) x4489)
+(or (not x4489) x4485)
+(or (not x4489) x4487)
+(or (not x4489) x4485)
+(or (not x4489) x4175)
+(or (not x4489) x3864)
+(or x4490 (not x4489))
+(or x4490 (not x4486))
+(or x4489 x4486 (not x4490))
+(or (not x4000) (not x4002) (not x4001) (not x4000) (not x4490) (not x4479) x4491)
+(or (not x4491) x4000)
+(or (not x4491) x4002)
+(or (not x4491) x4001)
+(or (not x4491) x4000)
+(or (not x4491) x4490)
+(or (not x4491) x4479)
+(or (not x4016) (not x3864) x4249)
+(or (not x4249) x4016)
+(or (not x4249) x3864)
+(or (not x4471) (not x4098) (not x4492) x4493)
+(or (not x4493) x4471)
+(or (not x4493) x4098)
+(or (not x4493) x4492)
+(or (not x3987) (not x3864) (not x3999) (not x4035) (not x3864) x4036 (not x3864) (not x4002) (not x4037) (not x4001) (not x4002) (not x4494) x4495)
+(or (not x4495) x3987)
+(or (not x4495) x3864)
+(or (not x4495) x3999)
+(or (not x4495) x4035)
+(or (not x4495) x3864)
+(or (not x4495) (not x4036))
+(or (not x4495) x3864)
+(or (not x4495) x4002)
+(or (not x4495) x4037)
+(or (not x4495) x4001)
+(or (not x4495) x4002)
+(or (not x4495) x4494)
+(or x4496 (not x4495))
+(or x4496 (not x4493))
+(or x4495 x4493 (not x4496))
+(or (not x4496) (not x4016) (not x3864) x4365)
+(or (not x4365) x4496)
+(or (not x4365) x4016)
+(or (not x4365) x3864)
+(or (not x4044) (not x3864) x4256)
+(or (not x4256) x4044)
+(or (not x4256) x3864)
+(or x4471 x3987)
+(or x4471 x3864)
+(or (not x3987) (not x3864) (not x4471))
+(or (not x4471) (not x3999) (not x4035) (not x3864) x4036 (not x3864) (not x4002) (not x4037) (not x4001) (not x4002) x4497)
+(or (not x4497) x4471)
+(or (not x4497) x3999)
+(or (not x4497) x4035)
+(or (not x4497) x3864)
+(or (not x4497) (not x4036))
+(or (not x4497) x3864)
+(or (not x4497) x4002)
+(or (not x4497) x4037)
+(or (not x4497) x4001)
+(or (not x4497) x4002)
+(or (not x3987) (not x3864) x4050)
+(or (not x4050) x3987)
+(or (not x4050) x3864)
+(or (not x3987) (not x3864) (not x3999) (not x4035) (not x3864) x4036 (not x3864) (not x4002) (not x4037) (not x4001) (not x4002) (not x4023) (not x3864) x4498)
+(or (not x4498) x3987)
+(or (not x4498) x3864)
+(or (not x4498) x3999)
+(or (not x4498) x4035)
+(or (not x4498) x3864)
+(or (not x4498) (not x4036))
+(or (not x4498) x3864)
+(or (not x4498) x4002)
+(or (not x4498) x4037)
+(or (not x4498) x4001)
+(or (not x4498) x4002)
+(or (not x4498) x4023)
+(or (not x4498) x3864)
+(or x4098 (not x4498))
+(or x4098 (not x4497))
+(or x4498 x4497 (not x4098))
+(or (not x4098) (not x4093) (not x3864) (not x4044) (not x3864) x4364)
+(or (not x4364) x4098)
+(or (not x4364) x4093)
+(or (not x4364) x3864)
+(or (not x4364) x4044)
+(or (not x4364) x3864)
+(or x4499 (not x4364))
+(or x4499 (not x4365))
+(or x4364 x4365 (not x4499))
+(or (not x4500) (not x4501) (not x4502) (not x4106) (not x3864) x4503)
+(or (not x4503) x4500)
+(or (not x4503) x4501)
+(or (not x4503) x4502)
+(or (not x4503) x4106)
+(or (not x4503) x3864)
+(or (not x4500) (not x4504) (not x4500) (not x4112) (not x3864) x4505)
+(or (not x4505) x4500)
+(or (not x4505) x4504)
+(or (not x4505) x4500)
+(or (not x4505) x4112)
+(or (not x4505) x3864)
+(or x4506 (not x4505))
+(or x4506 (not x4503))
+(or x4505 x4503 (not x4506))
+(or (not x4002) (not x4001) (not x4035) (not x3864) x4036 (not x3864) (not x4002) (not x4037) (not x4506) x4507)
+(or (not x4507) x4002)
+(or (not x4507) x4001)
+(or (not x4507) x4035)
+(or (not x4507) x3864)
+(or (not x4507) (not x4036))
+(or (not x4507) x3864)
+(or (not x4507) x4002)
+(or (not x4507) x4037)
+(or (not x4507) x4506)
+(or (not x4500) (not x4501) (not x4502) (not x4118) (not x3864) x4508)
+(or (not x4508) x4500)
+(or (not x4508) x4501)
+(or (not x4508) x4502)
+(or (not x4508) x4118)
+(or (not x4508) x3864)
+(or (not x4500) (not x4504) (not x4500) (not x4123) (not x3864) x4509)
+(or (not x4509) x4500)
+(or (not x4509) x4504)
+(or (not x4509) x4500)
+(or (not x4509) x4123)
+(or (not x4509) x3864)
+(or x4510 (not x4509))
+(or x4510 (not x4508))
+(or x4509 x4508 (not x4510))
+(or (not x4002) (not x4001) (not x4035) (not x3864) x4036 (not x3864) (not x4002) (not x4037) (not x4510) x4511)
+(or (not x4511) x4002)
+(or (not x4511) x4001)
+(or (not x4511) x4035)
+(or (not x4511) x3864)
+(or (not x4511) (not x4036))
+(or (not x4511) x3864)
+(or (not x4511) x4002)
+(or (not x4511) x4037)
+(or (not x4511) x4510)
+(or (not x4500) (not x4501) (not x4502) (not x4128) (not x3864) x4512)
+(or (not x4512) x4500)
+(or (not x4512) x4501)
+(or (not x4512) x4502)
+(or (not x4512) x4128)
+(or (not x4512) x3864)
+(or (not x4500) (not x4504) (not x4500) (not x4133) (not x3864) x4513)
+(or (not x4513) x4500)
+(or (not x4513) x4504)
+(or (not x4513) x4500)
+(or (not x4513) x4133)
+(or (not x4513) x3864)
+(or x4514 (not x4513))
+(or x4514 (not x4512))
+(or x4513 x4512 (not x4514))
+(or (not x4002) (not x4001) (not x4035) (not x3864) x4036 (not x3864) (not x4002) (not x4037) (not x4514) x4515)
+(or (not x4515) x4002)
+(or (not x4515) x4001)
+(or (not x4515) x4035)
+(or (not x4515) x3864)
+(or (not x4515) (not x4036))
+(or (not x4515) x3864)
+(or (not x4515) x4002)
+(or (not x4515) x4037)
+(or (not x4515) x4514)
+(or (not x4500) (not x4501) (not x4502) (not x4138) (not x3864) x4516)
+(or (not x4516) x4500)
+(or (not x4516) x4501)
+(or (not x4516) x4502)
+(or (not x4516) x4138)
+(or (not x4516) x3864)
+(or (not x4500) (not x4504) (not x4500) (not x4143) (not x3864) x4517)
+(or (not x4517) x4500)
+(or (not x4517) x4504)
+(or (not x4517) x4500)
+(or (not x4517) x4143)
+(or (not x4517) x3864)
+(or x4518 (not x4517))
+(or x4518 (not x4516))
+(or x4517 x4516 (not x4518))
+(or (not x4002) (not x4001) (not x4035) (not x3864) x4036 (not x3864) (not x4002) (not x4037) (not x4518) x4519)
+(or (not x4519) x4002)
+(or (not x4519) x4001)
+(or (not x4519) x4035)
+(or (not x4519) x3864)
+(or (not x4519) (not x4036))
+(or (not x4519) x3864)
+(or (not x4519) x4002)
+(or (not x4519) x4037)
+(or (not x4519) x4518)
+(or (not x4500) (not x4501) (not x4502) (not x4148) (not x3864) x4520)
+(or (not x4520) x4500)
+(or (not x4520) x4501)
+(or (not x4520) x4502)
+(or (not x4520) x4148)
+(or (not x4520) x3864)
+(or (not x4500) (not x4504) (not x4500) (not x4153) (not x3864) x4521)
+(or (not x4521) x4500)
+(or (not x4521) x4504)
+(or (not x4521) x4500)
+(or (not x4521) x4153)
+(or (not x4521) x3864)
+(or x4522 (not x4521))
+(or x4522 (not x4520))
+(or x4521 x4520 (not x4522))
+(or (not x4002) (not x4001) (not x4035) (not x3864) x4036 (not x3864) (not x4002) (not x4037) (not x4522) x4523)
+(or (not x4523) x4002)
+(or (not x4523) x4001)
+(or (not x4523) x4035)
+(or (not x4523) x3864)
+(or (not x4523) (not x4036))
+(or (not x4523) x3864)
+(or (not x4523) x4002)
+(or (not x4523) x4037)
+(or (not x4523) x4522)
+(or x4502 (not x4524))
+(or x4502 (not x4525))
+(or x4502 (not x4524))
+(or x4524 x4525 x4524 (not x4502))
+(or (not x4526) (not x4023) (not x3864) x4524)
+(or (not x4524) x4526)
+(or (not x4524) x4023)
+(or (not x4524) x3864)
+(or (not x4093) (not x3864) x4095)
+(or (not x4095) x4093)
+(or (not x4095) x3864)
+(or (not x3999) (not x4035) (not x3864) x4036 (not x3864) (not x4002) (not x4037) (not x4001) (not x4002) (not x4023) (not x3864) (not x4093) (not x3864) x4525)
+(or (not x4525) x3999)
+(or (not x4525) x4035)
+(or (not x4525) x3864)
+(or (not x4525) (not x4036))
+(or (not x4525) x3864)
+(or (not x4525) x4002)
+(or (not x4525) x4037)
+(or (not x4525) x4001)
+(or (not x4525) x4002)
+(or (not x4525) x4023)
+(or (not x4525) x3864)
+(or (not x4525) x4093)
+(or (not x4525) x3864)
+(or x4501 (not x4525))
+(or x4501 (not x4524))
+(or x4525 x4524 (not x4501))
+(or (not x4500) (not x4501) (not x4502) (not x4158) (not x3864) x4527)
+(or (not x4527) x4500)
+(or (not x4527) x4501)
+(or (not x4527) x4502)
+(or (not x4527) x4158)
+(or (not x4527) x3864)
+(or x4492 x4093)
+(or x4492 x3864)
+(or (not x4093) (not x3864) (not x4492))
+(or x4291 x4035)
+(or x4291 x3864)
+(or x4291 (not x4036))
+(or x4291 x3864)
+(or (not x4035) (not x3864) x4036 (not x3864) (not x4291))
+(or x4000 x4035)
+(or x4000 x3864)
+(or x4000 (not x4036))
+(or x4000 x3864)
+(or x4000 (not x4341))
+(or x4000 (not x4359))
+(or (not x4035) (not x3864) x4036 (not x3864) x4341 x4359 (not x4000))
+(or (not x4528) (not x3864) (not x4529) (not x3864) (not x4530) (not x3864) x4338)
+(or (not x4338) x4528)
+(or (not x4338) x3864)
+(or (not x4338) x4529)
+(or (not x4338) x3864)
+(or (not x4338) x4530)
+(or (not x4338) x3864)
+(or x4039 (not x4338))
+(or x4039 x4035)
+(or x4039 x3864)
+(or x4039 (not x4036))
+(or x4039 x3864)
+(or x4039 (not x4341))
+(or x4039 (not x4359))
+(or x4039 (not x4340))
+(or x4039 (not x4341))
+(or x4338 (not x4035) (not x3864) x4036 (not x3864) x4341 x4359 x4340 x4341 (not x4039))
+(or x4526 (not x4338))
+(or x4526 x4035)
+(or x4526 x3864)
+(or x4526 (not x4036))
+(or x4526 x3864)
+(or x4526 (not x4341))
+(or x4526 (not x4359))
+(or x4526 (not x4340))
+(or x4526 (not x4341))
+(or x4526 x4023)
+(or x4526 x3864)
+(or x4338 (not x4035) (not x3864) x4036 (not x3864) x4341 x4359 x4340 x4341 (not x4023) (not x3864) (not x4526))
+(or x4504 (not x4338))
+(or x4504 x4035)
+(or x4504 x3864)
+(or x4504 (not x4036))
+(or x4504 x3864)
+(or x4504 (not x4341))
+(or x4504 (not x4359))
+(or x4504 (not x4340))
+(or x4504 (not x4341))
+(or x4504 x4023)
+(or x4504 x3864)
+(or x4504 x4093)
+(or x4504 x3864)
+(or x4338 (not x4035) (not x3864) x4036 (not x3864) x4341 x4359 x4340 x4341 (not x4023) (not x3864) (not x4093) (not x3864) (not x4504))
+(or x4494 x4023)
+(or x4494 x3864)
+(or (not x4023) (not x3864) (not x4494))
+(or (not x4023) (not x3864) x4030)
+(or (not x4030) x4023)
+(or (not x4030) x3864)
+(or x3999 x4528)
+(or x3999 x3864)
+(or x3999 x4529)
+(or x3999 x3864)
+(or x3999 x4530)
+(or x3999 x3864)
+(or (not x4528) (not x3864) (not x4529) (not x3864) (not x4530) (not x3864) (not x3999))
+(or (not x3999) (not x4035) (not x3864) x4036 (not x3864) (not x4002) (not x4037) (not x4001) (not x4002) (not x4023) (not x3864) x4531)
+(or (not x4531) x3999)
+(or (not x4531) x4035)
+(or (not x4531) x3864)
+(or (not x4531) (not x4036))
+(or (not x4531) x3864)
+(or (not x4531) x4002)
+(or (not x4531) x4037)
+(or (not x4531) x4001)
+(or (not x4531) x4002)
+(or (not x4531) x4023)
+(or (not x4531) x3864)
+(or x4500 (not x4531))
+(or x4500 x4023)
+(or x4500 x3864)
+(or x4531 (not x4023) (not x3864) (not x4500))
+(or (not x4500) (not x4504) (not x4500) (not x4163) (not x3864) x4532)
+(or (not x4532) x4500)
+(or (not x4532) x4504)
+(or (not x4532) x4500)
+(or (not x4532) x4163)
+(or (not x4532) x3864)
+(or x4533 (not x4532))
+(or x4533 (not x4527))
+(or x4532 x4527 (not x4533))
+(or (not x4002) (not x4001) (not x4035) (not x3864) x4036 (not x3864) (not x4002) (not x4037) (not x4533) x4534)
+(or (not x4534) x4002)
+(or (not x4534) x4001)
+(or (not x4534) x4035)
+(or (not x4534) x3864)
+(or (not x4534) (not x4036))
+(or (not x4534) x3864)
+(or (not x4534) x4002)
+(or (not x4534) x4037)
+(or (not x4534) x4533)
+(or x4535 (not x4534))
+(or x4535 (not x4523))
+(or x4535 (not x4519))
+(or x4535 (not x4515))
+(or x4535 (not x4511))
+(or x4535 (not x4507))
+(or x4534 x4523 x4519 x4515 x4511 x4507 (not x4535))
+(or (not x4035) (not x3864) x4036 (not x3864) (not x4002) (not x4037) x4339)
+(or (not x4339) x4035)
+(or (not x4339) x3864)
+(or (not x4339) (not x4036))
+(or (not x4339) x3864)
+(or (not x4339) x4002)
+(or (not x4339) x4037)
+(or (not x4035) (not x3864) x4036 (not x3864) (not x4002) (not x4037) (not x4535) (not x4499) x4536)
+(or (not x4536) x4035)
+(or (not x4536) x3864)
+(or (not x4536) (not x4036))
+(or (not x4536) x3864)
+(or (not x4536) x4002)
+(or (not x4536) x4037)
+(or (not x4536) x4535)
+(or (not x4536) x4499)
+(or x4537 (not x4536))
+(or x4537 (not x4491))
+(or x4536 x4491 (not x4537))
+(or x4037 (not x4538))
+(or x4037 (not x4539))
+(or x4538 x4539 (not x4037))
+(or x4001 (not x4538))
+(or x4001 (not x4539))
+(or x4001 (not x4341))
+(or x4538 x4539 x4341 (not x4001))
+(or (not x4001) (not x4537) x4540)
+(or (not x4540) x4001)
+(or (not x4540) x4537)
+(or (not x4262) (not x3864) x4321)
+(or (not x4321) x4262)
+(or (not x4321) x3864)
+(or (not x4313) (not x4284) x4359)
+(or (not x4359) x4313)
+(or (not x4359) x4284)
+(or (not x4313) (not x4284) (not x4002) x4340)
+(or (not x4340) x4313)
+(or (not x4340) x4284)
+(or (not x4340) x4002)
+(or (not x4313) (not x4284) (not x4002) (not x4262) (not x3864) x4541)
+(or (not x4541) x4313)
+(or (not x4541) x4284)
+(or (not x4541) x4002)
+(or (not x4541) x4262)
+(or (not x4541) x3864)
+(or x4542 (not x4541))
+(or x4542 (not x4540))
+(or x4541 x4540 (not x4542))
+(or x4284 (not x4036))
+(or x4284 x3864)
+(or x4036 (not x3864) (not x4284))
+(or (not x4035) (not x3864) x4538)
+(or (not x4538) x4035)
+(or (not x4538) x3864)
+(or x4002 (not x4538))
+(or x4002 (not x4036))
+(or x4002 x3864)
+(or x4538 x4036 (not x3864) (not x4002))
+(or (not x4002) (not x4542) x4543)
+(or (not x4543) x4002)
+(or (not x4543) x4542)
+(or x4036 (not x3864) x4539)
+(or (not x4539) (not x4036))
+(or (not x4539) x3864)
+(or x4313 x4035)
+(or x4313 x3864)
+(or (not x4035) (not x3864) (not x4313))
+(or (not x4313) x4036 (not x3864) x4341)
+(or (not x4341) x4313)
+(or (not x4341) (not x4036))
+(or (not x4341) x3864)
+(or (not x4313) x4036 (not x3864) (not x4272) (not x3864) x4544)
+(or (not x4544) x4313)
+(or (not x4544) (not x4036))
+(or (not x4544) x3864)
+(or (not x4544) x4272)
+(or (not x4544) x3864)
+(or x4545 (not x4544))
+(or x4545 (not x4543))
+(or x4544 x4543 (not x4545))
+(or (not x4545) (not x3864) x4546)
+(or (not x4546) x4545)
+(or (not x4546) x3864)
+(or (not x4547) (not x4548) (not x4528) (not x3864) x4549)
+(or (not x4549) x4547)
+(or (not x4549) x4548)
+(or (not x4549) x4528)
+(or (not x4549) x3864)
+(or (not x4550) (not x4551) x4552)
+(or (not x4552) x4550)
+(or (not x4552) x4551)
+(or x4553 (not x4552))
+(or x4553 (not x4549))
+(or x4552 x4549 (not x4553))
+(or (not x4554) (not x4553) x4555)
+(or (not x4555) x4554)
+(or (not x4555) x4553)
+(or (not x4550) (not x4528) (not x3864) x4556)
+(or (not x4556) x4550)
+(or (not x4556) x4528)
+(or (not x4556) x3864)
+(or (not x4547) (not x4548) (not x4551) x4557)
+(or (not x4557) x4547)
+(or (not x4557) x4548)
+(or (not x4557) x4551)
+(or x4558 (not x4557))
+(or x4558 (not x4556))
+(or x4557 x4556 (not x4558))
+(or (not x4559) (not x3864) (not x4558) x4560)
+(or (not x4560) x4559)
+(or (not x4560) x3864)
+(or (not x4560) x4558)
+(or x4561 (not x4560))
+(or x4561 (not x4555))
+(or x4560 x4555 (not x4561))
+(or (not x4561) (not x3864) x4562)
+(or (not x4562) x4561)
+(or (not x4562) x3864)
+(or (not x4401) (not x3864) (not x4402) (not x4403) (not x4404) (not x4563) (not x4414) (not x3864) x4564)
+(or (not x4564) x4401)
+(or (not x4564) x3864)
+(or (not x4564) x4402)
+(or (not x4564) x4403)
+(or (not x4564) x4404)
+(or (not x4564) x4563)
+(or (not x4564) x4414)
+(or (not x4564) x3864)
+(or (not x4419) (not x4414) (not x3864) (not x4403) (not x4416) (not x4565) (not x4414) (not x3864) x4566)
+(or (not x4566) x4419)
+(or (not x4566) x4414)
+(or (not x4566) x3864)
+(or (not x4566) x4403)
+(or (not x4566) x4416)
+(or (not x4566) x4565)
+(or (not x4566) x4414)
+(or (not x4566) x3864)
+(or (not x4423) (not x3864) x4184)
+(or (not x4184) x4423)
+(or (not x4184) x3864)
+(or (not x4423) (not x3864) (not x155) x4436)
+(or (not x4436) x4423)
+(or (not x4436) x3864)
+(or (not x4436) x155)
+(or x4567 (not x4436))
+(or x4567 (not x4432))
+(or x4436 x4432 (not x4567))
+(or (not x4419) (not x4402) (not x4567) x4568)
+(or (not x4568) x4419)
+(or (not x4568) x4402)
+(or (not x4568) x4567)
+(or (not x4403) (not x4404) (not x4569) (not x4414) (not x3864) x4570)
+(or (not x4570) x4403)
+(or (not x4570) x4404)
+(or (not x4570) x4569)
+(or (not x4570) x4414)
+(or (not x4570) x3864)
+(or x4571 (not x4570))
+(or x4571 (not x4568))
+(or x4571 (not x4566))
+(or x4571 (not x4564))
+(or x4570 x4568 x4566 x4564 (not x4571))
+(or (not x4571) (not x3864) x4572)
+(or (not x4572) x4571)
+(or (not x4572) x3864)
+(or x4395 (not x4434))
+(or x4395 x3864)
+(or x4434 (not x3864) (not x4395))
+(or x4563 (not x4434))
+(or x4563 x3864)
+(or x4563 (not x4394))
+(or x4434 (not x3864) x4394 (not x4563))
+(or (not x4401) (not x3864) (not x4402) (not x4403) (not x4404) (not x4563) (not x4401) (not x3864) x4573)
+(or (not x4573) x4401)
+(or (not x4573) x3864)
+(or (not x4573) x4402)
+(or (not x4573) x4403)
+(or (not x4573) x4404)
+(or (not x4573) x4563)
+(or (not x4573) x4401)
+(or (not x4573) x3864)
+(or x4565 x4416)
+(or x4565 (not x3869))
+(or (not x4416) x3869 (not x4565))
+(or (not x4416) (not x4565) (not x4401) (not x3864) x4574)
+(or (not x4574) x4416)
+(or (not x4574) x4565)
+(or (not x4574) x4401)
+(or (not x4574) x3864)
+(or (not x4416) x3869 x4575)
+(or (not x4575) x4416)
+(or (not x4575) (not x3869))
+(or x4576 x4416)
+(or x4576 (not x4575))
+(or (not x4416) x4575 (not x4576))
+(or (not x4576) x4416 x4577)
+(or (not x4577) x4576)
+(or (not x4577) (not x4416))
+(or x4578 (not x4577))
+(or x4578 (not x4574))
+(or x4577 x4574 (not x4578))
+(or (not x4419) (not x4414) (not x3864) (not x4403) (not x4578) x4579)
+(or (not x4579) x4419)
+(or (not x4579) x4414)
+(or (not x4579) x3864)
+(or (not x4579) x4403)
+(or (not x4579) x4578)
+(or x4187 x4423)
+(or x4187 x3864)
+(or (not x4423) (not x3864) (not x4187))
+(or x4580 x4423)
+(or x4580 x3864)
+(or x4580 (not x3820))
+(or (not x4423) (not x3864) x3820 (not x4580))
+(or (not x4419) (not x4402) (not x4580) (not x4401) (not x3864) x4581)
+(or (not x4581) x4419)
+(or (not x4581) x4402)
+(or (not x4581) x4580)
+(or (not x4581) x4401)
+(or (not x4581) x3864)
+(or (not x4403) (not x4404) (not x4569) (not x4401) (not x3864) x4582)
+(or (not x4582) x4403)
+(or (not x4582) x4404)
+(or (not x4582) x4569)
+(or (not x4582) x4401)
+(or (not x4582) x3864)
+(or x4583 (not x4582))
+(or x4583 (not x4581))
+(or x4583 (not x4579))
+(or x4583 (not x4573))
+(or x4582 x4581 x4579 x4573 (not x4583))
+(or (not x4583) (not x3864) x4584)
+(or (not x4584) x4583)
+(or (not x4584) x3864)
+(or (not x4547) (not x4548) (not x4529) (not x3864) x4585)
+(or (not x4585) x4547)
+(or (not x4585) x4548)
+(or (not x4585) x4529)
+(or (not x4585) x3864)
+(or (not x4550) (not x4586) x4587)
+(or (not x4587) x4550)
+(or (not x4587) x4586)
+(or x4588 (not x4587))
+(or x4588 (not x4585))
+(or x4587 x4585 (not x4588))
+(or (not x4554) (not x4588) x4589)
+(or (not x4589) x4554)
+(or (not x4589) x4588)
+(or (not x4550) (not x4529) (not x3864) x4590)
+(or (not x4590) x4550)
+(or (not x4590) x4529)
+(or (not x4590) x3864)
+(or x4591 x4592 x4551)
+(or x4591 (not x4592) (not x4551))
+(or (not x4591) x4592 (not x4551))
+(or (not x4591) (not x4592) x4551)
+(or (not x4547) (not x4548) (not x4591) x4593)
+(or (not x4593) x4547)
+(or (not x4593) x4548)
+(or (not x4593) x4591)
+(or x4594 (not x4593))
+(or x4594 (not x4590))
+(or x4593 x4590 (not x4594))
+(or (not x4559) (not x3864) (not x4594) x4595)
+(or (not x4595) x4559)
+(or (not x4595) x3864)
+(or (not x4595) x4594)
+(or x4596 (not x4595))
+(or x4596 (not x4589))
+(or x4595 x4589 (not x4596))
+(or (not x4596) (not x3864) x4597)
+(or (not x4597) x4596)
+(or (not x4597) x3864)
+(or (not x4547) (not x4548) (not x4530) (not x3864) x4598)
+(or (not x4598) x4547)
+(or (not x4598) x4548)
+(or (not x4598) x4530)
+(or (not x4598) x3864)
+(or (not x4550) (not x4599) x4600)
+(or (not x4600) x4550)
+(or (not x4600) x4599)
+(or x4601 (not x4600))
+(or x4601 (not x4598))
+(or x4600 x4598 (not x4601))
+(or x4554 x4559)
+(or x4554 x3864)
+(or (not x4559) (not x3864) (not x4554))
+(or (not x4554) (not x4601) x4602)
+(or (not x4602) x4554)
+(or (not x4602) x4601)
+(or (not x4406) (not x3864) (not x148) (not x155) (not x4603) (not x4604) x4605)
+(or (not x4605) x4406)
+(or (not x4605) x3864)
+(or (not x4605) x148)
+(or (not x4605) x155)
+(or (not x4605) x4603)
+(or (not x4605) x4604)
+(or (not x147) (not x4412) (not x3864) (not x155) (not x4419) (not x4414) (not x3864) (not x4403) x4416 x4606)
+(or (not x4606) x147)
+(or (not x4606) x4412)
+(or (not x4606) x3864)
+(or (not x4606) x155)
+(or (not x4606) x4419)
+(or (not x4606) x4414)
+(or (not x4606) x3864)
+(or (not x4606) x4403)
+(or (not x4606) (not x4416))
+(or x4550 (not x4606))
+(or x4550 (not x4605))
+(or x4606 x4605 (not x4550))
+(or (not x4550) (not x4530) (not x3864) x4607)
+(or (not x4607) x4550)
+(or (not x4607) x4530)
+(or (not x4607) x3864)
+(or x4608 x4609 x4610)
+(or x4608 (not x4609) (not x4610))
+(or (not x4608) x4609 (not x4610))
+(or (not x4608) (not x4609) x4610)
+(or x4548 x4406)
+(or x4548 x3864)
+(or x4548 (not x3846))
+(or x4548 (not x3820))
+(or x4548 (not x4407))
+(or x4548 (not x4411))
+(or (not x4406) (not x3864) x3846 x3820 x4407 x4411 (not x4548))
+(or x4547 (not x3845))
+(or x4547 x4412)
+(or x4547 x3864)
+(or x4547 (not x3820))
+(or x4547 (not x4413))
+(or x4547 x4414)
+(or x4547 x3864)
+(or x4547 (not x4415))
+(or x4547 (not x4416))
+(or x3845 (not x4412) (not x3864) x3820 x4413 (not x4414) (not x3864) x4415 x4416 (not x4547))
+(or (not x4547) (not x4548) (not x4608) x4611)
+(or (not x4611) x4547)
+(or (not x4611) x4548)
+(or (not x4611) x4608)
+(or x4612 (not x4611))
+(or x4612 (not x4607))
+(or x4611 x4607 (not x4612))
+(or (not x4559) (not x3864) (not x4612) x4613)
+(or (not x4613) x4559)
+(or (not x4613) x3864)
+(or (not x4613) x4612)
+(or x4614 (not x4613))
+(or x4614 (not x4602))
+(or x4613 x4602 (not x4614))
+(or (not x4614) (not x3864) x4615)
+(or (not x4615) x4614)
+(or (not x4615) x3864)
+(or (not x4616) (not x4617) (not x3864) x4618)
+(or (not x4618) x4616)
+(or (not x4618) x4617)
+(or (not x4618) x3864)
+(or (not x4619) (not x4604) (not x4620) x4621)
+(or (not x4621) x4619)
+(or (not x4621) x4604)
+(or (not x4621) x4620)
+(or x4622 (not x4621))
+(or x4622 (not x4618))
+(or x4621 x4618 (not x4622))
+(or (not x4406) (not x3864) (not x148) (not x155) (not x4603) (not x4622) x4623)
+(or (not x4623) x4406)
+(or (not x4623) x3864)
+(or (not x4623) x148)
+(or (not x4623) x155)
+(or (not x4623) x4603)
+(or (not x4623) x4622)
+(or (not x4624) (not x4419) (not x4414) (not x3864) (not x4403) x4416 (not x4617) (not x3864) x4625)
+(or (not x4625) x4624)
+(or (not x4625) x4419)
+(or (not x4625) x4414)
+(or (not x4625) x3864)
+(or (not x4625) x4403)
+(or (not x4625) (not x4416))
+(or (not x4625) x4617)
+(or (not x4625) x3864)
+(or x4626 (not x4592))
+(or x4626 (not x4627))
+(or x4626 (not x4628))
+(or x4592 x4627 x4628 (not x4626))
+(or x4599 x4609 x4626)
+(or x4599 (not x4609) (not x4626))
+(or (not x4599) x4609 (not x4626))
+(or (not x4599) (not x4609) x4626)
+(or (not x4629) (not x4599) x4630)
+(or (not x4630) x4629)
+(or (not x4630) x4599)
+(or x4631 (not x4632))
+(or x4631 (not x4630))
+(or x4632 x4630 (not x4631))
+(or (not x4633) (not x4631) x4634)
+(or (not x4634) x4633)
+(or (not x4634) x4631)
+(or (not x4635) (not x3864) (not x4636) (not x3864) x4637)
+(or (not x4637) x4635)
+(or (not x4637) x3864)
+(or (not x4637) x4636)
+(or (not x4637) x3864)
+(or x4638 (not x4409))
+(or x4638 (not x4637))
+(or x4638 (not x4408))
+(or x4409 x4637 x4408 (not x4638))
+(or x4620 x4410 x4638)
+(or x4620 (not x4410) (not x4638))
+(or (not x4620) x4410 (not x4638))
+(or (not x4620) (not x4410) x4638)
+(or (not x4419) (not x4414) (not x3864) (not x4403) x4416 (not x4639) (not x4620) x4640)
+(or (not x4640) x4419)
+(or (not x4640) x4414)
+(or (not x4640) x3864)
+(or (not x4640) x4403)
+(or (not x4640) (not x4416))
+(or (not x4640) x4639)
+(or (not x4640) x4620)
+(or x4641 (not x4640))
+(or x4641 (not x4634))
+(or x4640 x4634 (not x4641))
+(or (not x4642) (not x4641) x4643)
+(or (not x4643) x4642)
+(or (not x4643) x4641)
+(or x4644 (not x4643))
+(or x4644 (not x4625))
+(or x4643 x4625 (not x4644))
+(or (not x147) (not x4412) (not x3864) (not x155) (not x4644) x4645)
+(or (not x4645) x147)
+(or (not x4645) x4412)
+(or (not x4645) x3864)
+(or (not x4645) x155)
+(or (not x4645) x4644)
+(or (not x147) (not x148) (not x4617) (not x3864) x4646)
+(or (not x4646) x147)
+(or (not x4646) x148)
+(or (not x4646) x4617)
+(or (not x4646) x3864)
+(or x4647 (not x4646))
+(or x4647 (not x4645))
+(or x4647 (not x4623))
+(or x4646 x4645 x4623 (not x4647))
+(or (not x4647) (not x3864) x4648)
+(or (not x4648) x4647)
+(or (not x4648) x3864)
+(or (not x4616) (not x4635) (not x3864) x4649)
+(or (not x4649) x4616)
+(or (not x4649) x4635)
+(or (not x4649) x3864)
+(or (not x4619) (not x4604) (not x4650) x4651)
+(or (not x4651) x4619)
+(or (not x4651) x4604)
+(or (not x4651) x4650)
+(or x4652 (not x4651))
+(or x4652 (not x4649))
+(or x4651 x4649 (not x4652))
+(or (not x4406) (not x3864) (not x148) (not x155) (not x4603) (not x4652) x4653)
+(or (not x4653) x4406)
+(or (not x4653) x3864)
+(or (not x4653) x148)
+(or (not x4653) x155)
+(or (not x4653) x4603)
+(or (not x4653) x4652)
+(or (not x4624) (not x4419) (not x4414) (not x3864) (not x4403) x4416 (not x4635) (not x3864) x4654)
+(or (not x4654) x4624)
+(or (not x4654) x4419)
+(or (not x4654) x4414)
+(or (not x4654) x3864)
+(or (not x4654) x4403)
+(or (not x4654) (not x4416))
+(or (not x4654) x4635)
+(or (not x4654) x3864)
+(or x4586 x4592 x4628)
+(or x4586 (not x4592) (not x4628))
+(or (not x4586) x4592 (not x4628))
+(or (not x4586) (not x4592) x4628)
+(or (not x4629) (not x4586) x4655)
+(or (not x4655) x4629)
+(or (not x4655) x4586)
+(or x4656 (not x4632))
+(or x4656 (not x4655))
+(or x4632 x4655 (not x4656))
+(or (not x4633) (not x4656) x4657)
+(or (not x4657) x4633)
+(or (not x4657) x4656)
+(or x4650 x4409 x4408)
+(or x4650 (not x4409) (not x4408))
+(or (not x4650) x4409 (not x4408))
+(or (not x4650) (not x4409) x4408)
+(or (not x4419) (not x4414) (not x3864) (not x4403) x4416 (not x4639) (not x4650) x4658)
+(or (not x4658) x4419)
+(or (not x4658) x4414)
+(or (not x4658) x3864)
+(or (not x4658) x4403)
+(or (not x4658) (not x4416))
+(or (not x4658) x4639)
+(or (not x4658) x4650)
+(or x4659 (not x4658))
+(or x4659 (not x4657))
+(or x4658 x4657 (not x4659))
+(or (not x4642) (not x4659) x4660)
+(or (not x4660) x4642)
+(or (not x4660) x4659)
+(or x4661 (not x4660))
+(or x4661 (not x4654))
+(or x4660 x4654 (not x4661))
+(or (not x147) (not x4412) (not x3864) (not x155) (not x4661) x4662)
+(or (not x4662) x147)
+(or (not x4662) x4412)
+(or (not x4662) x3864)
+(or (not x4662) x155)
+(or (not x4662) x4661)
+(or (not x147) (not x148) (not x4635) (not x3864) x4663)
+(or (not x4663) x147)
+(or (not x4663) x148)
+(or (not x4663) x4635)
+(or (not x4663) x3864)
+(or x4664 (not x4663))
+(or x4664 (not x4662))
+(or x4664 (not x4653))
+(or x4663 x4662 x4653 (not x4664))
+(or (not x4664) (not x3864) x4665)
+(or (not x4665) x4664)
+(or (not x4665) x3864)
+(or (not x4666) (not x4667) (not x4668) (not x4604) x4669)
+(or (not x4669) x4666)
+(or (not x4669) x4667)
+(or (not x4669) x4668)
+(or (not x4669) x4604)
+(or x4616 (not x4669))
+(or x4616 (not x4411))
+(or x4669 x4411 (not x4616))
+(or (not x4616) (not x4636) (not x3864) x4670)
+(or (not x4670) x4616)
+(or (not x4670) x4636)
+(or (not x4670) x3864)
+(or (not x4401) (not x3864) (not x4402) (not x4403) (not x4404) x4394 x4671)
+(or (not x4671) x4401)
+(or (not x4671) x3864)
+(or (not x4671) x4402)
+(or (not x4671) x4403)
+(or (not x4671) x4404)
+(or (not x4671) (not x4394))
+(or (not x4403) (not x4404) (not x4569) x4422)
+(or (not x4422) x4403)
+(or (not x4422) x4404)
+(or (not x4422) x4569)
+(or x4604 (not x4422))
+(or x4604 (not x4415))
+(or x4604 (not x4672))
+(or x4604 (not x4671))
+(or x4422 x4415 x4672 x4671 (not x4604))
+(or (not x4619) (not x4604) (not x4666) x4673)
+(or (not x4673) x4619)
+(or (not x4673) x4604)
+(or (not x4673) x4666)
+(or x4674 (not x4673))
+(or x4674 (not x4670))
+(or x4673 x4670 (not x4674))
+(or (not x4406) (not x3864) (not x148) (not x155) (not x4603) (not x4674) x4675)
+(or (not x4675) x4406)
+(or (not x4675) x3864)
+(or (not x4675) x148)
+(or (not x4675) x155)
+(or (not x4675) x4603)
+(or (not x4675) x4674)
+(or x4668 x4617)
+(or x4668 x3864)
+(or (not x4617) (not x3864) (not x4668))
+(or x4667 x4635)
+(or x4667 x3864)
+(or (not x4635) (not x3864) (not x4667))
+(or (not x4666) (not x4667) (not x4668) x4676)
+(or (not x4676) x4666)
+(or (not x4676) x4667)
+(or (not x4676) x4668)
+(or x4624 (not x4413))
+(or x4624 x4414)
+(or x4624 x3864)
+(or x4624 (not x4415))
+(or x4624 (not x4416))
+(or x4624 (not x4676))
+(or x4413 (not x4414) (not x3864) x4415 x4416 x4676 (not x4624))
+(or (not x4624) (not x4419) (not x4414) (not x3864) (not x4403) x4416 (not x4636) (not x3864) x4677)
+(or (not x4677) x4624)
+(or (not x4677) x4419)
+(or (not x4677) x4414)
+(or (not x4677) x3864)
+(or (not x4677) x4403)
+(or (not x4677) (not x4416))
+(or (not x4677) x4636)
+(or (not x4677) x3864)
+(or x4610 x4529)
+(or x4610 x3864)
+(or x4610 x4528)
+(or x4610 x3864)
+(or (not x4529) (not x3864) (not x4528) (not x3864) (not x4610))
+(or x4629 x4530)
+(or x4629 x3864)
+(or x4629 x4529)
+(or x4629 x3864)
+(or x4629 x4528)
+(or x4629 x3864)
+(or (not x4530) (not x3864) (not x4529) (not x3864) (not x4528) (not x3864) (not x4629))
+(or (not x4629) (not x4551) x4678)
+(or (not x4678) x4629)
+(or (not x4678) x4551)
+(or (not x4529) (not x3864) (not x4528) (not x3864) x4627)
+(or (not x4627) x4529)
+(or (not x4627) x3864)
+(or (not x4627) x4528)
+(or (not x4627) x3864)
+(or (not x4530) (not x3864) (not x4529) (not x3864) (not x4528) (not x3864) x4632)
+(or (not x4632) x4530)
+(or (not x4632) x3864)
+(or (not x4632) x4529)
+(or (not x4632) x3864)
+(or (not x4632) x4528)
+(or (not x4632) x3864)
+(or x4679 (not x4632))
+(or x4679 (not x4678))
+(or x4632 x4678 (not x4679))
+(or (not x4633) (not x4679) x4680)
+(or (not x4680) x4633)
+(or (not x4680) x4679)
+(or x4666 x4636)
+(or x4666 x3864)
+(or (not x4636) (not x3864) (not x4666))
+(or (not x4419) (not x4414) (not x3864) (not x4403) x4416 (not x4639) (not x4666) x4681)
+(or (not x4681) x4419)
+(or (not x4681) x4414)
+(or (not x4681) x3864)
+(or (not x4681) x4403)
+(or (not x4681) (not x4416))
+(or (not x4681) x4639)
+(or (not x4681) x4666)
+(or x4682 (not x4681))
+(or x4682 (not x4680))
+(or x4681 x4680 (not x4682))
+(or x4642 (not x4683))
+(or x4642 (not x4413))
+(or x4642 x4414)
+(or x4642 x3864)
+(or x4642 (not x4415))
+(or x4642 (not x4416))
+(or x4683 x4413 (not x4414) (not x3864) x4415 x4416 (not x4642))
+(or (not x4642) (not x4682) x4684)
+(or (not x4684) x4642)
+(or (not x4684) x4682)
+(or x4685 (not x4684))
+(or x4685 (not x4677))
+(or x4684 x4677 (not x4685))
+(or (not x147) (not x4412) (not x3864) (not x155) (not x4685) x4686)
+(or (not x4686) x147)
+(or (not x4686) x4412)
+(or (not x4686) x3864)
+(or (not x4686) x155)
+(or (not x4686) x4685)
+(or (not x147) (not x148) (not x4636) (not x3864) x4687)
+(or (not x4687) x147)
+(or (not x4687) x148)
+(or (not x4687) x4636)
+(or (not x4687) x3864)
+(or x4688 (not x4687))
+(or x4688 (not x4686))
+(or x4688 (not x4675))
+(or x4687 x4686 x4675 (not x4688))
+(or (not x4688) (not x3864) x4689)
+(or (not x4689) x4688)
+(or (not x4689) x3864)
+(or (not x4406) (not x3864) (not x148) (not x155) (not x4603) (not x4619) (not x4412) (not x3864) x4690)
+(or (not x4690) x4406)
+(or (not x4690) x3864)
+(or (not x4690) x148)
+(or (not x4690) x155)
+(or (not x4690) x4603)
+(or (not x4690) x4619)
+(or (not x4690) x4412)
+(or (not x4690) x3864)
+(or (not x147) (not x4412) (not x3864) (not x155) (not x4633) (not x4412) (not x3864) x4691)
+(or (not x4691) x147)
+(or (not x4691) x4412)
+(or (not x4691) x3864)
+(or (not x4691) x155)
+(or (not x4691) x4633)
+(or (not x4691) x4412)
+(or (not x4691) x3864)
+(or (not x4528) (not x3864) x4628)
+(or (not x4628) x4528)
+(or (not x4628) x3864)
+(or (not x4692) (not x4528) (not x3864) x4693)
+(or (not x4693) x4692)
+(or (not x4693) x4528)
+(or (not x4693) x3864)
+(or x4694 (not x4592))
+(or x4694 (not x4693))
+(or x4592 x4693 (not x4694))
+(or (not x4695) (not x4694) x4696)
+(or (not x4696) x4695)
+(or (not x4696) x4694)
+(or x4697 (not x4609))
+(or x4697 (not x4696))
+(or x4697 (not x3846))
+(or x4609 x4696 x3846 (not x4697))
+(or (not x147) (not x148) (not x4697) x4698)
+(or (not x4698) x147)
+(or (not x4698) x148)
+(or (not x4698) x4697)
+(or x4699 (not x4698))
+(or x4699 (not x4691))
+(or x4699 (not x4690))
+(or x4698 x4691 x4690 (not x4699))
+(or (not x4699) (not x3864) x4700)
+(or (not x4700) x4699)
+(or (not x4700) x3864)
+(or x4569 x4401)
+(or x4569 x3864)
+(or x4569 (not x4432))
+(or (not x4401) (not x3864) x4432 (not x4569))
+(or x4701 x4401)
+(or x4701 x3864)
+(or x4701 (not x4432))
+(or x4701 (not x4415))
+(or x4701 (not x4433))
+(or x4701 (not x4394))
+(or (not x4401) (not x3864) x4432 x4415 x4433 x4394 (not x4701))
+(or (not x4401) (not x3864) (not x4402) x4702)
+(or (not x4702) x4401)
+(or (not x4702) x3864)
+(or (not x4702) x4402)
+(or x4703 (not x4415))
+(or x4703 (not x4433))
+(or x4703 (not x4702))
+(or x4415 x4433 x4702 (not x4703))
+(or (not x4703) (not x4403) (not x4704) (not x4701) x4411)
+(or (not x4411) x4703)
+(or (not x4411) x4403)
+(or (not x4411) x4704)
+(or (not x4411) x4701)
+(or x4619 (not x4408))
+(or x4619 (not x4409))
+(or x4619 (not x4410))
+(or x4619 (not x4411))
+(or x4408 x4409 x4410 x4411 (not x4619))
+(or x4603 (not x3845))
+(or x4603 x4412)
+(or x4603 x3864)
+(or x3845 (not x4412) (not x3864) (not x4603))
+(or (not x4406) (not x3864) (not x148) (not x155) (not x4603) (not x4619) (not x4406) (not x3864) x4705)
+(or (not x4705) x4406)
+(or (not x4705) x3864)
+(or (not x4705) x148)
+(or (not x4705) x155)
+(or (not x4705) x4603)
+(or (not x4705) x4619)
+(or (not x4705) x4406)
+(or (not x4705) x3864)
+(or (not x4419) (not x4402) x4415)
+(or (not x4415) x4419)
+(or (not x4415) x4402)
+(or x4402 x4414)
+(or x4402 x3864)
+(or (not x4414) (not x3864) (not x4402))
+(or x4404 (not x4413))
+(or x4404 x4414)
+(or x4404 x3864)
+(or x4413 (not x4414) (not x3864) (not x4404))
+(or x4704 (not x4413))
+(or x4704 x4414)
+(or x4704 x3864)
+(or x4704 (not x4415))
+(or x4413 (not x4414) (not x3864) x4415 (not x4704))
+(or x4633 (not x4413))
+(or x4633 x4414)
+(or x4633 x3864)
+(or x4633 (not x4415))
+(or x4633 (not x4416))
+(or x4413 (not x4414) (not x3864) x4415 x4416 (not x4633))
+(or (not x4633) (not x4406) (not x3864) x4706)
+(or (not x4706) x4633)
+(or (not x4706) x4406)
+(or (not x4706) x3864)
+(or (not x4617) (not x3864) x4410)
+(or (not x4410) x4617)
+(or (not x4410) x3864)
+(or (not x4635) (not x3864) x4409)
+(or (not x4409) x4635)
+(or (not x4409) x3864)
+(or (not x4636) (not x3864) x4408)
+(or (not x4408) x4636)
+(or (not x4408) x3864)
+(or x4639 (not x4408))
+(or x4639 (not x4409))
+(or x4639 (not x4410))
+(or x4408 x4409 x4410 (not x4639))
+(or (not x4401) (not x3864) x4413)
+(or (not x4413) x4401)
+(or (not x4413) x3864)
+(or x4403 (not x4413))
+(or x4403 (not x4432))
+(or x4413 x4432 (not x4403))
+(or (not x4414) (not x3864) x4432)
+(or (not x4432) x4414)
+(or (not x4432) x3864)
+(or x4419 x4401)
+(or x4419 x3864)
+(or (not x4401) (not x3864) (not x4419))
+(or (not x4419) (not x4414) (not x3864) x4433)
+(or (not x4433) x4419)
+(or (not x4433) x4414)
+(or (not x4433) x3864)
+(or (not x4419) (not x4414) (not x3864) (not x4403) x4672)
+(or (not x4672) x4419)
+(or (not x4672) x4414)
+(or (not x4672) x3864)
+(or (not x4672) x4403)
+(or (not x4419) (not x4414) (not x3864) (not x4403) x4416 (not x4639) x4683)
+(or (not x4683) x4419)
+(or (not x4683) x4414)
+(or (not x4683) x3864)
+(or (not x4683) x4403)
+(or (not x4683) (not x4416))
+(or (not x4683) x4639)
+(or x4707 (not x4683))
+(or x4707 (not x4706))
+(or x4683 x4706 (not x4707))
+(or x155 (not x3845))
+(or x155 (not x3846))
+(or x3845 x3846 (not x155))
+(or (not x4412) (not x3864) x3846)
+(or (not x3846) x4412)
+(or (not x3846) x3864)
+(or (not x147) (not x4412) (not x3864) x4407)
+(or (not x4407) x147)
+(or (not x4407) x4412)
+(or (not x4407) x3864)
+(or (not x147) (not x4412) (not x3864) (not x155) (not x4707) x4708)
+(or (not x4708) x147)
+(or (not x4708) x4412)
+(or (not x4708) x3864)
+(or (not x4708) x155)
+(or (not x4708) x4707)
+(or (not x4406) (not x3864) x3845)
+(or (not x3845) x4406)
+(or (not x3845) x3864)
+(or x4551 x4528)
+(or x4551 x3864)
+(or (not x4528) (not x3864) (not x4551))
+(or (not x4529) (not x3864) x4592)
+(or (not x4592) x4529)
+(or (not x4592) x3864)
+(or x4709 (not x4592))
+(or x4709 x4528)
+(or x4709 x3864)
+(or x4592 (not x4528) (not x3864) (not x4709))
+(or x4692 x4529)
+(or x4692 x3864)
+(or (not x4529) (not x3864) (not x4692))
+(or (not x4692) (not x4709) x4710)
+(or (not x4710) x4692)
+(or (not x4710) x4709)
+(or (not x4530) (not x3864) x4609)
+(or (not x4609) x4530)
+(or (not x4609) x3864)
+(or x4711 (not x4609))
+(or x4711 (not x4710))
+(or x4609 x4710 (not x4711))
+(or x4695 x4530)
+(or x4695 x3864)
+(or (not x4530) (not x3864) (not x4695))
+(or x148 x4412)
+(or x148 x3864)
+(or (not x4412) (not x3864) (not x148))
+(or x147 x4406)
+(or x147 x3864)
+(or (not x4406) (not x3864) (not x147))
+(or (not x147) (not x148) x3820)
+(or (not x3820) x147)
+(or (not x3820) x148)
+(or (not x147) (not x148) (not x4695) (not x4711) (not x4406) (not x3864) x4712)
+(or (not x4712) x147)
+(or (not x4712) x148)
+(or (not x4712) x4695)
+(or (not x4712) x4711)
+(or (not x4712) x4406)
+(or (not x4712) x3864)
+(or x4713 (not x4712))
+(or x4713 (not x4708))
+(or x4713 (not x4705))
+(or x4712 x4708 x4705 (not x4713))
+(or (not x4713) (not x3864) x4714)
+(or (not x4714) x4713)
+(or (not x4714) x3864)
+(or x4715 (not x3865))
+(or x4715 (not x3864))
+(or x3865 x3864 (not x4715))
+(or x3865 x3864 x4716)
+(or (not x4716) (not x3865))
+(or (not x4716) (not x3864))
+(or x4717 (not x4716))
+(or x4717 (not x3865))
+(or x4717 x3864)
+(or x4716 x3865 (not x3864) (not x4717))
+(or (not x4718) (not x145))
+(or (not x4718) x144)
+(or (not x4718) (not x143))
+(or (not x4718) x142)
+(or (not x4718) x141)
+(or (not x4719) (not x145))
+(or (not x4719) x144)
+(or (not x4719) (not x143))
+(or (not x4719) x142)
+(or (not x4719) (not x141))
+(or (not x4720) (not x145))
+(or (not x4720) x144)
+(or (not x4720) (not x143))
+(or (not x4720) (not x142))
+(or (not x4720) x141)
+(or (not x4721) (not x145))
+(or (not x4721) x144)
+(or (not x4721) (not x143))
+(or (not x4721) (not x142))
+(or (not x4721) (not x141))
+(or (not x4722) (not x145))
+(or (not x4722) (not x144))
+(or (not x4722) x143)
+(or (not x4722) x142)
+(or (not x4722) x141)
+(or (not x4723) (not x145))
+(or (not x4723) (not x144))
+(or (not x4723) x143)
+(or (not x4723) x142)
+(or (not x4723) (not x141))
+(or (not x4724) (not x145))
+(or (not x4724) (not x144))
+(or (not x4724) x143)
+(or (not x4724) (not x142))
+(or (not x4724) x141)
+(or (not x4725) (not x145))
+(or (not x4725) (not x144))
+(or (not x4725) x143)
+(or (not x4725) (not x142))
+(or (not x4725) (not x141))
+(or (not x4726) (not x145))
+(or (not x4726) (not x144))
+(or (not x4726) (not x143))
+(or (not x4726) x142)
+(or (not x4726) x141)
+(or (not x4727) (not x145))
+(or (not x4727) (not x144))
+(or (not x4727) (not x143))
+(or (not x4727) x142)
+(or (not x4727) (not x141))
+(or x145 x144 x143 x142 (not x141) x3818)
+(or (not x3818) (not x145))
+(or (not x3818) (not x144))
+(or (not x3818) (not x143))
+(or (not x3818) (not x142))
+(or (not x3818) x141)
+(or (not x4728) (not x145))
+(or (not x4728) (not x144))
+(or (not x4728) (not x143))
+(or (not x4728) (not x142))
+(or (not x4728) (not x141))
+(or x4729 (not x4728))
+(or x4729 (not x3818))
+(or x4729 (not x4727))
+(or x4729 (not x4726))
+(or x4729 (not x4725))
+(or x4729 (not x4724))
+(or x4729 (not x4723))
+(or x4729 (not x4722))
+(or x4729 (not x4721))
+(or x4729 (not x4720))
+(or x4729 (not x4719))
+(or x4728 x3818 x4727 x4726 x4725 x4724 x4723 x4722 x4721 x4720 x4719 (not x4729))
+(or (not x4730) (not x4731) (not x4732) (not x4733) (not x4734) (not x4735) (not x4736) (not x4737) x4738)
+(or (not x4738) x4730)
+(or (not x4738) x4731)
+(or (not x4738) x4732)
+(or (not x4738) x4733)
+(or (not x4738) x4734)
+(or (not x4738) x4735)
+(or (not x4738) x4736)
+(or (not x4738) x4737)
+(or x4739 (not x4740))
+(or x4739 x4741)
+(or x4740 (not x4741) (not x4739))
+(or x4740 (not x4739) (not x4742) x4743)
+(or (not x4743) (not x4740))
+(or (not x4743) x4739)
+(or (not x4743) x4742)
+(or x4732 (not x4744))
+(or x4732 (not x4745))
+(or x4732 (not x164))
+(or x4732 (not x163))
+(or x4732 (not x162))
+(or x4732 x161)
+(or x4732 x160)
+(or x4732 (not x4746))
+(or x4732 (not x4743))
+(or x4744 x4745 x164 x163 x162 (not x161) (not x160) x4746 x4743 (not x4732))
+(or x4747 (not x4748))
+(or x4747 x4749)
+(or x4748 (not x4749) (not x4747))
+(or x4748 (not x4747) (not x4750) x4751)
+(or (not x4751) (not x4748))
+(or (not x4751) x4747)
+(or (not x4751) x4750)
+(or x4731 (not x4744))
+(or x4731 (not x164))
+(or x4731 (not x163))
+(or x4731 (not x162))
+(or x4731 x161)
+(or x4731 (not x160))
+(or x4731 (not x4752))
+(or x4731 (not x4746))
+(or x4731 (not x4751))
+(or x4744 x164 x163 x162 (not x161) x160 x4752 x4746 x4751 (not x4731))
+(or x4753 (not x4754) x4755)
+(or (not x4755) (not x4753))
+(or (not x4755) x4754)
+(or x4756 (not x164))
+(or x4756 (not x163))
+(or x4756 (not x162))
+(or x4756 (not x161))
+(or x4756 x160)
+(or x4756 (not x4755))
+(or x164 x163 x162 x161 (not x160) x4755 (not x4756))
+(or (not x4756) (not x4731) (not x4732) (not x4733) (not x4734) (not x4737) x4757)
+(or (not x4757) x4756)
+(or (not x4757) x4731)
+(or (not x4757) x4732)
+(or (not x4757) x4733)
+(or (not x4757) x4734)
+(or (not x4757) x4737)
+(or x4742 (not x4740))
+(or x4742 (not x4741))
+(or x4740 x4741 (not x4742))
+(or x4758 (not x4744))
+(or x4758 (not x4745))
+(or x4758 (not x164))
+(or x4758 (not x163))
+(or x4758 (not x162))
+(or x4758 x161)
+(or x4758 x160)
+(or x4758 (not x4746))
+(or x4758 (not x4740))
+(or x4758 (not x4741))
+(or x4744 x4745 x164 x163 x162 (not x161) (not x160) x4746 x4740 x4741 (not x4758))
+(or x4750 (not x4748))
+(or x4750 (not x4749))
+(or x4748 x4749 (not x4750))
+(or x4759 (not x4744))
+(or x4759 (not x164))
+(or x4759 (not x163))
+(or x4759 (not x162))
+(or x4759 x161)
+(or x4759 (not x160))
+(or x4759 (not x4752))
+(or x4759 (not x4746))
+(or x4759 (not x4748))
+(or x4759 (not x4749))
+(or x4744 x164 x163 x162 (not x161) x160 x4752 x4746 x4748 x4749 (not x4759))
+(or x4760 (not x4753))
+(or x4760 (not x4761))
+(or x4760 x4762)
+(or x4753 x4761 (not x4762) (not x4760))
+(or x4753 (not x4763) (not x4760) (not x4754) x4764)
+(or (not x4764) (not x4753))
+(or (not x4764) x4763)
+(or (not x4764) x4760)
+(or (not x4764) x4754)
+(or x4730 (not x164))
+(or x4730 (not x163))
+(or x4730 (not x162))
+(or x4730 (not x161))
+(or x4730 x160)
+(or x4730 (not x4764))
+(or x164 x163 x162 x161 (not x160) x4764 (not x4730))
+(or (not x4730) (not x4759) (not x4758) (not x4735) (not x4736) (not x4737) x4765)
+(or (not x4765) x4730)
+(or (not x4765) x4759)
+(or (not x4765) x4758)
+(or (not x4765) x4735)
+(or (not x4765) x4736)
+(or (not x4765) x4737)
+(or x4766 (not x4744))
+(or x4766 (not x4745))
+(or x4766 (not x4767))
+(or x4766 (not x4768))
+(or x4766 (not x4769))
+(or x4766 (not x4770))
+(or x4766 (not x164))
+(or x4766 x163)
+(or x4766 (not x162))
+(or x4766 (not x161))
+(or x4766 x160)
+(or x4766 (not x168))
+(or x4766 (not x169))
+(or x4766 (not x170))
+(or x4766 (not x171))
+(or x4766 (not x172))
+(or x4766 (not x173))
+(or x4766 (not x4771))
+(or x4766 (not x4772))
+(or x4766 (not x4773))
+(or x4744 x4745 x4767 x4768 x4769 x4770 x164 (not x163) x162 x161 (not x160) x168 x169 x170 x171 x172 x173 x4771 x4772 x4773 (not x4766))
+(or x4774 (not x4744))
+(or x4774 (not x4745))
+(or x4774 (not x4767))
+(or x4774 (not x4768))
+(or x4774 (not x4769))
+(or x4774 (not x164))
+(or x4774 x163)
+(or x4774 (not x162))
+(or x4774 (not x161))
+(or x4774 (not x160))
+(or x4774 (not x4752))
+(or x4774 (not x4771))
+(or x4774 (not x4772))
+(or x4774 (not x168))
+(or x4774 (not x169))
+(or x4774 (not x170))
+(or x4774 (not x171))
+(or x4774 (not x172))
+(or x4774 (not x173))
+(or x4774 (not x4771))
+(or x4774 (not x4772))
+(or x4774 (not x4775))
+(or x4744 x4745 x4767 x4768 x4769 x164 (not x163) x162 x161 x160 x4752 x4771 x4772 x168 x169 x170 x171 x172 x173 x4771 x4772 x4775 (not x4774))
+(or x4776 (not x4744))
+(or x4776 (not x4745))
+(or x4776 (not x4767))
+(or x4776 (not x4768))
+(or x4776 (not x164))
+(or x4776 (not x163))
+(or x4776 x162)
+(or x4776 (not x161))
+(or x4776 x160)
+(or x4776 (not x168))
+(or x4776 (not x169))
+(or x4776 (not x170))
+(or x4776 (not x171))
+(or x4776 (not x172))
+(or x4776 (not x173))
+(or x4776 (not x4771))
+(or x4776 (not x4772))
+(or x4776 (not x4777))
+(or x4744 x4745 x4767 x4768 x164 x163 (not x162) x161 (not x160) x168 x169 x170 x171 x172 x173 x4771 x4772 x4777 (not x4776))
+(or x4778 (not x4744))
+(or x4778 (not x4745))
+(or x4778 (not x4767))
+(or x4778 (not x164))
+(or x4778 (not x163))
+(or x4778 x162)
+(or x4778 (not x161))
+(or x4778 (not x160))
+(or x4778 (not x4771))
+(or x4778 (not x4772))
+(or x4778 (not x168))
+(or x4778 (not x169))
+(or x4778 (not x170))
+(or x4778 (not x171))
+(or x4778 (not x172))
+(or x4778 (not x173))
+(or x4778 (not x4771))
+(or x4778 (not x4772))
+(or x4778 (not x4779))
+(or x4744 x4745 x4767 x164 x163 (not x162) x161 x160 x4771 x4772 x168 x169 x170 x171 x172 x173 x4771 x4772 x4779 (not x4778))
+(or x4754 (not x4753))
+(or x4754 (not x4761))
+(or x4754 (not x4762))
+(or x4753 x4761 x4762 (not x4754))
+(or (not x4763) (not x4754) x4780)
+(or (not x4780) x4763)
+(or (not x4780) x4754)
+(or x4781 (not x164))
+(or x4781 (not x163))
+(or x4781 (not x162))
+(or x4781 (not x161))
+(or x4781 x160)
+(or x4781 (not x4780))
+(or x164 x163 x162 x161 (not x160) x4780 (not x4781))
+(or (not x4781) (not x4782) (not x4783) (not x4778) (not x4776) (not x4774) (not x4766) (not x4737) x4784)
+(or (not x4784) x4781)
+(or (not x4784) x4782)
+(or (not x4784) x4783)
+(or (not x4784) x4778)
+(or (not x4784) x4776)
+(or (not x4784) x4774)
+(or (not x4784) x4766)
+(or (not x4784) x4737)
+(or x164 (not x163) x162 x161 (not x160) x168 x169 x170 x171 x172 x173 (not x166) (not x167) x4785)
+(or (not x4785) (not x164))
+(or (not x4785) x163)
+(or (not x4785) (not x162))
+(or (not x4785) (not x161))
+(or (not x4785) x160)
+(or (not x4785) (not x168))
+(or (not x4785) (not x169))
+(or (not x4785) (not x170))
+(or (not x4785) (not x171))
+(or (not x4785) (not x172))
+(or (not x4785) (not x173))
+(or (not x4785) x166)
+(or (not x4785) x167)
+(or x4737 (not x4744))
+(or x4737 (not x4745))
+(or x4737 (not x4767))
+(or x4737 (not x4768))
+(or x4737 (not x4769))
+(or x4737 (not x4770))
+(or x4737 (not x4785))
+(or x4744 x4745 x4767 x4768 x4769 x4770 x4785 (not x4737))
+(or x164 (not x163) x162 x161 x160 (not x165) (not x166) (not x167) x168 x169 x170 x171 x172 x173 (not x166) (not x167) x4770)
+(or (not x4770) (not x164))
+(or (not x4770) x163)
+(or (not x4770) (not x162))
+(or (not x4770) (not x161))
+(or (not x4770) (not x160))
+(or (not x4770) x165)
+(or (not x4770) x166)
+(or (not x4770) x167)
+(or (not x4770) (not x168))
+(or (not x4770) (not x169))
+(or (not x4770) (not x170))
+(or (not x4770) (not x171))
+(or (not x4770) (not x172))
+(or (not x4770) (not x173))
+(or (not x4770) x166)
+(or (not x4770) x167)
+(or x4736 (not x4744))
+(or x4736 (not x4745))
+(or x4736 (not x4767))
+(or x4736 (not x4768))
+(or x4736 (not x4769))
+(or x4736 (not x4770))
+(or x4736 (not x164))
+(or x4736 x163)
+(or x4736 (not x162))
+(or x4736 (not x161))
+(or x4736 x160)
+(or x4736 (not x168))
+(or x4736 (not x169))
+(or x4736 (not x170))
+(or x4736 (not x171))
+(or x4736 (not x172))
+(or x4736 (not x173))
+(or x4736 (not x4771))
+(or x4736 (not x4772))
+(or x4744 x4745 x4767 x4768 x4769 x4770 x164 (not x163) x162 x161 (not x160) x168 x169 x170 x171 x172 x173 x4771 x4772 (not x4736))
+(or x4786 (not x4744))
+(or x4786 (not x4745))
+(or x4786 (not x4767))
+(or x4786 (not x4768))
+(or x4786 (not x4769))
+(or x4786 (not x4770))
+(or x4786 (not x164))
+(or x4786 x163)
+(or x4786 (not x162))
+(or x4786 (not x161))
+(or x4786 x160)
+(or x4786 (not x168))
+(or x4786 (not x169))
+(or x4786 (not x170))
+(or x4786 (not x171))
+(or x4786 (not x172))
+(or x4786 (not x173))
+(or x4786 (not x4771))
+(or x4786 (not x4772))
+(or x4786 x4773)
+(or x4744 x4745 x4767 x4768 x4769 x4770 x164 (not x163) x162 x161 (not x160) x168 x169 x170 x171 x172 x173 x4771 x4772 (not x4773) (not x4786))
+(or x164 x163 (not x162) x161 (not x160) x168 x169 x170 x171 x172 x173 (not x166) (not x167) x4769)
+(or (not x4769) (not x164))
+(or (not x4769) (not x163))
+(or (not x4769) x162)
+(or (not x4769) (not x161))
+(or (not x4769) x160)
+(or (not x4769) (not x168))
+(or (not x4769) (not x169))
+(or (not x4769) (not x170))
+(or (not x4769) (not x171))
+(or (not x4769) (not x172))
+(or (not x4769) (not x173))
+(or (not x4769) x166)
+(or (not x4769) x167)
+(or x4735 (not x4744))
+(or x4735 (not x4745))
+(or x4735 (not x4767))
+(or x4735 (not x4768))
+(or x4735 (not x4769))
+(or x4735 (not x164))
+(or x4735 x163)
+(or x4735 (not x162))
+(or x4735 (not x161))
+(or x4735 (not x160))
+(or x4735 (not x4752))
+(or x4735 (not x4771))
+(or x4735 (not x4772))
+(or x4735 (not x168))
+(or x4735 (not x169))
+(or x4735 (not x170))
+(or x4735 (not x171))
+(or x4735 (not x172))
+(or x4735 (not x173))
+(or x4735 (not x4771))
+(or x4735 (not x4772))
+(or x4744 x4745 x4767 x4768 x4769 x164 (not x163) x162 x161 x160 x4752 x4771 x4772 x168 x169 x170 x171 x172 x173 x4771 x4772 (not x4735))
+(or x4787 (not x4744))
+(or x4787 (not x4745))
+(or x4787 (not x4767))
+(or x4787 (not x4768))
+(or x4787 (not x4769))
+(or x4787 (not x164))
+(or x4787 x163)
+(or x4787 (not x162))
+(or x4787 (not x161))
+(or x4787 (not x160))
+(or x4787 (not x4752))
+(or x4787 (not x4771))
+(or x4787 (not x4772))
+(or x4787 (not x168))
+(or x4787 (not x169))
+(or x4787 (not x170))
+(or x4787 (not x171))
+(or x4787 (not x172))
+(or x4787 (not x173))
+(or x4787 (not x4771))
+(or x4787 (not x4772))
+(or x4787 x4775)
+(or x4744 x4745 x4767 x4768 x4769 x164 (not x163) x162 x161 x160 x4752 x4771 x4772 x168 x169 x170 x171 x172 x173 x4771 x4772 (not x4775) (not x4787))
+(or x164 x163 (not x162) x161 x160 (not x166) (not x167) x168 x169 x170 x171 x172 x173 (not x166) (not x167) x4768)
+(or (not x4768) (not x164))
+(or (not x4768) (not x163))
+(or (not x4768) x162)
+(or (not x4768) (not x161))
+(or (not x4768) (not x160))
+(or (not x4768) x166)
+(or (not x4768) x167)
+(or (not x4768) (not x168))
+(or (not x4768) (not x169))
+(or (not x4768) (not x170))
+(or (not x4768) (not x171))
+(or (not x4768) (not x172))
+(or (not x4768) (not x173))
+(or (not x4768) x166)
+(or (not x4768) x167)
+(or x4734 (not x4744))
+(or x4734 (not x4745))
+(or x4734 (not x4767))
+(or x4734 (not x4768))
+(or x4734 (not x164))
+(or x4734 (not x163))
+(or x4734 x162)
+(or x4734 (not x161))
+(or x4734 x160)
+(or x4734 (not x168))
+(or x4734 (not x169))
+(or x4734 (not x170))
+(or x4734 (not x171))
+(or x4734 (not x172))
+(or x4734 (not x173))
+(or x4734 (not x4771))
+(or x4734 (not x4772))
+(or x4744 x4745 x4767 x4768 x164 x163 (not x162) x161 (not x160) x168 x169 x170 x171 x172 x173 x4771 x4772 (not x4734))
+(or x4788 (not x4744))
+(or x4788 (not x4745))
+(or x4788 (not x4767))
+(or x4788 (not x4768))
+(or x4788 (not x164))
+(or x4788 (not x163))
+(or x4788 x162)
+(or x4788 (not x161))
+(or x4788 x160)
+(or x4788 (not x168))
+(or x4788 (not x169))
+(or x4788 (not x170))
+(or x4788 (not x171))
+(or x4788 (not x172))
+(or x4788 (not x173))
+(or x4788 (not x4771))
+(or x4788 (not x4772))
+(or x4788 x4777)
+(or x4744 x4745 x4767 x4768 x164 x163 (not x162) x161 (not x160) x168 x169 x170 x171 x172 x173 x4771 x4772 (not x4777) (not x4788))
+(or x164 x163 x162 (not x161) (not x160) (not x174) x4767)
+(or (not x4767) (not x164))
+(or (not x4767) (not x163))
+(or (not x4767) (not x162))
+(or (not x4767) x161)
+(or (not x4767) x160)
+(or (not x4767) x174)
+(or x4733 (not x4744))
+(or x4733 (not x4745))
+(or x4733 (not x4767))
+(or x4733 (not x164))
+(or x4733 (not x163))
+(or x4733 x162)
+(or x4733 (not x161))
+(or x4733 (not x160))
+(or x4733 (not x4771))
+(or x4733 (not x4772))
+(or x4733 (not x168))
+(or x4733 (not x169))
+(or x4733 (not x170))
+(or x4733 (not x171))
+(or x4733 (not x172))
+(or x4733 (not x173))
+(or x4733 (not x4771))
+(or x4733 (not x4772))
+(or x4744 x4745 x4767 x164 x163 (not x162) x161 x160 x4771 x4772 x168 x169 x170 x171 x172 x173 x4771 x4772 (not x4733))
+(or x4789 (not x4744))
+(or x4789 (not x4745))
+(or x4789 (not x4767))
+(or x4789 (not x164))
+(or x4789 (not x163))
+(or x4789 x162)
+(or x4789 (not x161))
+(or x4789 (not x160))
+(or x4789 (not x4771))
+(or x4789 (not x4772))
+(or x4789 (not x168))
+(or x4789 (not x169))
+(or x4789 (not x170))
+(or x4789 (not x171))
+(or x4789 (not x172))
+(or x4789 (not x173))
+(or x4789 (not x4771))
+(or x4789 (not x4772))
+(or x4789 x4779)
+(or x4744 x4745 x4767 x164 x163 (not x162) x161 x160 x4771 x4772 x168 x169 x170 x171 x172 x173 x4771 x4772 (not x4779) (not x4789))
+(or x165 x4790)
+(or x165 (not x4771))
+(or x165 (not x4772))
+(or (not x4790) x4771 x4772 (not x165))
+(or x164 x163 x162 (not x161) x160 (not x165) (not x174) x4745)
+(or (not x4745) (not x164))
+(or (not x4745) (not x163))
+(or (not x4745) (not x162))
+(or (not x4745) x161)
+(or (not x4745) (not x160))
+(or (not x4745) x165)
+(or (not x4745) x174)
+(or x4783 (not x4744))
+(or x4783 (not x4745))
+(or x4783 (not x164))
+(or x4783 (not x163))
+(or x4783 (not x162))
+(or x4783 x161)
+(or x4783 x160)
+(or x4783 (not x4746))
+(or x4783 x4740)
+(or x4744 x4745 x164 x163 x162 (not x161) (not x160) x4746 (not x4740) (not x4783))
+(or (not x4790) (not x166) (not x167) x4752)
+(or (not x4752) x4790)
+(or (not x4752) x166)
+(or (not x4752) x167)
+(or x4782 (not x4744))
+(or x4782 (not x164))
+(or x4782 (not x163))
+(or x4782 (not x162))
+(or x4782 x161)
+(or x4782 (not x160))
+(or x4782 (not x4752))
+(or x4782 (not x4746))
+(or x4782 x4748)
+(or x4744 x164 x163 x162 (not x161) x160 x4752 x4746 (not x4748) (not x4782))
+(or x4763 (not x4753))
+(or x4763 x4761)
+(or x4753 (not x4761) (not x4763))
+(or x4753 (not x4763) x4792)
+(or (not x4792) (not x4753))
+(or (not x4792) x4763)
+(or x4793 (not x164))
+(or x4793 (not x163))
+(or x4793 (not x162))
+(or x4793 (not x161))
+(or x4793 x160)
+(or x4793 (not x4792))
+(or x164 x163 x162 x161 (not x160) x4792 (not x4793))
+(or (not x4793) (not x4782) (not x4783) (not x4789) (not x4788) (not x4787) (not x4786) (not x4737) x4794)
+(or (not x4794) x4793)
+(or (not x4794) x4782)
+(or (not x4794) x4783)
+(or (not x4794) x4789)
+(or (not x4794) x4788)
+(or (not x4794) x4787)
+(or (not x4794) x4786)
+(or (not x4794) x4737)
+(or (not x4795) (not x4796) (not x4790) x4797)
+(or (not x4797) x4795)
+(or (not x4797) x4796)
+(or (not x4797) x4790)
+(or x4795 (not x4798) x4799)
+(or (not x4799) (not x4795))
+(or (not x4799) x4798)
+(or x4800 (not x4799))
+(or x4800 (not x4797))
+(or x4799 x4797 (not x4800))
+(or (not x4800) (not x4790) x4801)
+(or (not x4801) x4800)
+(or (not x4801) x4790)
+(or (not x4795) (not x4802) (not x4790) x4803)
+(or (not x4803) x4795)
+(or (not x4803) x4802)
+(or (not x4803) x4790)
+(or x4795 (not x4804) x4805)
+(or (not x4805) (not x4795))
+(or (not x4805) x4804)
+(or x4806 (not x4805))
+(or x4806 (not x4803))
+(or x4805 x4803 (not x4806))
+(or (not x4806) (not x4790) x4807)
+(or (not x4807) x4806)
+(or (not x4807) x4790)
+(or (not x4795) (not x4808) (not x4790) x4809)
+(or (not x4809) x4795)
+(or (not x4809) x4808)
+(or (not x4809) x4790)
+(or x4795 (not x4810) x4811)
+(or (not x4811) (not x4795))
+(or (not x4811) x4810)
+(or x4812 (not x4811))
+(or x4812 (not x4809))
+(or x4811 x4809 (not x4812))
+(or (not x4812) (not x4790) x4813)
+(or (not x4813) x4812)
+(or (not x4813) x4790)
+(or (not x4814) (not x4815) (not x4790) x4816)
+(or (not x4816) x4814)
+(or (not x4816) x4815)
+(or (not x4816) x4790)
+(or (not x4817) (not x169) x4818 x4819)
+(or (not x4819) x4817)
+(or (not x4819) x169)
+(or (not x4819) (not x4818))
+(or x4820 (not x4819))
+(or x4820 (not x4816))
+(or x4819 x4816 (not x4820))
+(or (not x4820) (not x4790) x4821)
+(or (not x4821) x4820)
+(or (not x4821) x4790)
+(or (not x4822) (not x4823) (not x4790) x4824)
+(or (not x4824) x4822)
+(or (not x4824) x4823)
+(or (not x4824) x4790)
+(or (not x4825) (not x168) x4826 x4827)
+(or (not x4827) x4825)
+(or (not x4827) x168)
+(or (not x4827) (not x4826))
+(or x4828 (not x4827))
+(or x4828 (not x4824))
+(or x4827 x4824 (not x4828))
+(or (not x4828) (not x4790) x4829)
+(or (not x4829) x4828)
+(or (not x4829) x4790)
+(or (not x4814) (not x4830) (not x4790) x4831)
+(or (not x4831) x4814)
+(or (not x4831) x4830)
+(or (not x4831) x4790)
+(or (not x4817) (not x169) x4832 x4833)
+(or (not x4833) x4817)
+(or (not x4833) x169)
+(or (not x4833) (not x4832))
+(or x4834 (not x4833))
+(or x4834 (not x4831))
+(or x4833 x4831 (not x4834))
+(or (not x4834) (not x4790) x4835)
+(or (not x4835) x4834)
+(or (not x4835) x4790)
+(or (not x4822) (not x4836) (not x4790) x4837)
+(or (not x4837) x4822)
+(or (not x4837) x4836)
+(or (not x4837) x4790)
+(or (not x4825) (not x168) x4838 x4839)
+(or (not x4839) x4825)
+(or (not x4839) x168)
+(or (not x4839) (not x4838))
+(or x4840 (not x4839))
+(or x4840 (not x4837))
+(or x4839 x4837 (not x4840))
+(or (not x4840) (not x4790) x4841)
+(or (not x4841) x4840)
+(or (not x4841) x4790)
+(or (not x4814) (not x4842) (not x4790) x4843)
+(or (not x4843) x4814)
+(or (not x4843) x4842)
+(or (not x4843) x4790)
+(or (not x4817) (not x169) x4844 x4845)
+(or (not x4845) x4817)
+(or (not x4845) x169)
+(or (not x4845) (not x4844))
+(or x4846 (not x4845))
+(or x4846 (not x4843))
+(or x4845 x4843 (not x4846))
+(or (not x4846) (not x4790) x4847)
+(or (not x4847) x4846)
+(or (not x4847) x4790)
+(or (not x4822) (not x4848) (not x4790) x4849)
+(or (not x4849) x4822)
+(or (not x4849) x4848)
+(or (not x4849) x4790)
+(or (not x4825) (not x168) x4850 x4851)
+(or (not x4851) x4825)
+(or (not x4851) x168)
+(or (not x4851) (not x4850))
+(or x4852 (not x4851))
+(or x4852 (not x4849))
+(or x4851 x4849 (not x4852))
+(or (not x4852) (not x4790) x4853)
+(or (not x4853) x4852)
+(or (not x4853) x4790)
+(or (not x4814) (not x4854) (not x4790) x4855)
+(or (not x4855) x4814)
+(or (not x4855) x4854)
+(or (not x4855) x4790)
+(or (not x4817) (not x169) (not x4856) x4857)
+(or (not x4857) x4817)
+(or (not x4857) x169)
+(or (not x4857) x4856)
+(or x4858 (not x4857))
+(or x4858 (not x4855))
+(or x4857 x4855 (not x4858))
+(or (not x4858) (not x4790) x4859)
+(or (not x4859) x4858)
+(or (not x4859) x4790)
+(or (not x4822) (not x4860) (not x4790) x4861)
+(or (not x4861) x4822)
+(or (not x4861) x4860)
+(or (not x4861) x4790)
+(or (not x4825) (not x168) (not x4862) x4863)
+(or (not x4863) x4825)
+(or (not x4863) x168)
+(or (not x4863) x4862)
+(or x4864 (not x4863))
+(or x4864 (not x4861))
+(or x4863 x4861 (not x4864))
+(or (not x4864) (not x4790) x4865)
+(or (not x4865) x4864)
+(or (not x4865) x4790)
+(or (not x4814) (not x4866) (not x4790) x4867)
+(or (not x4867) x4814)
+(or (not x4867) x4866)
+(or (not x4867) x4790)
+(or (not x4817) (not x169) x4868 x4869)
+(or (not x4869) x4817)
+(or (not x4869) x169)
+(or (not x4869) (not x4868))
+(or x4870 (not x4869))
+(or x4870 (not x4867))
+(or x4869 x4867 (not x4870))
+(or (not x4870) (not x4790) x4871)
+(or (not x4871) x4870)
+(or (not x4871) x4790)
+(or (not x4822) (not x4872) (not x4790) x4873)
+(or (not x4873) x4822)
+(or (not x4873) x4872)
+(or (not x4873) x4790)
+(or (not x4825) (not x168) x4874 x4875)
+(or (not x4875) x4825)
+(or (not x4875) x168)
+(or (not x4875) (not x4874))
+(or x4876 (not x4875))
+(or x4876 (not x4873))
+(or x4875 x4873 (not x4876))
+(or (not x4876) (not x4790) x4877)
+(or (not x4877) x4876)
+(or (not x4877) x4790)
+(or (not x4814) (not x4878) (not x4790) x4879)
+(or (not x4879) x4814)
+(or (not x4879) x4878)
+(or (not x4879) x4790)
+(or (not x4817) (not x169) x4880 x4881)
+(or (not x4881) x4817)
+(or (not x4881) x169)
+(or (not x4881) (not x4880))
+(or x4882 (not x4881))
+(or x4882 (not x4879))
+(or x4881 x4879 (not x4882))
+(or (not x4882) (not x4790) x4883)
+(or (not x4883) x4882)
+(or (not x4883) x4790)
+(or (not x4822) (not x4884) (not x4790) x4885)
+(or (not x4885) x4822)
+(or (not x4885) x4884)
+(or (not x4885) x4790)
+(or (not x4825) (not x168) x4886 x4887)
+(or (not x4887) x4825)
+(or (not x4887) x168)
+(or (not x4887) (not x4886))
+(or x4888 (not x4887))
+(or x4888 (not x4885))
+(or x4887 x4885 (not x4888))
+(or (not x4888) (not x4790) x4889)
+(or (not x4889) x4888)
+(or (not x4889) x4790)
+(or (not x4890) (not x4891) (not x4790) x4892)
+(or (not x4892) x4890)
+(or (not x4892) x4891)
+(or (not x4892) x4790)
+(or (not x4893) (not x171) (not x171) x4894)
+(or (not x4894) x4893)
+(or (not x4894) x171)
+(or x4895 (not x4894))
+(or x4895 (not x4892))
+(or x4894 x4892 (not x4895))
+(or (not x4895) (not x4790) x4896)
+(or (not x4896) x4895)
+(or (not x4896) x4790)
+(or (not x4897) (not x4898) (not x4790) x4899)
+(or (not x4899) x4897)
+(or (not x4899) x4898)
+(or (not x4899) x4790)
+(or (not x4900) (not x170) (not x170) x4901)
+(or (not x4901) x4900)
+(or (not x4901) x170)
+(or x4902 (not x4901))
+(or x4902 (not x4899))
+(or x4901 x4899 (not x4902))
+(or (not x4902) (not x4790) x4903)
+(or (not x4903) x4902)
+(or (not x4903) x4790)
+(or x4897 (not x4904))
+(or x4897 x170)
+(or x4904 (not x170) (not x4897))
+(or (not x4897) (not x4905) (not x4790) (not x4906) (not x4790) x4907)
+(or (not x4907) x4897)
+(or (not x4907) x4905)
+(or (not x4907) x4790)
+(or (not x4907) x4906)
+(or (not x4907) x4790)
+(or (not x4900) (not x170) x4908)
+(or (not x4908) x4900)
+(or (not x4908) x170)
+(or x4909 (not x4908))
+(or x4909 (not x4907))
+(or x4908 x4907 (not x4909))
+(or (not x4909) (not x4790) x4910)
+(or (not x4910) x4909)
+(or (not x4910) x4790)
+(or x4911 x4912)
+(or x4911 x4790)
+(or x4911 x4913)
+(or x4911 x4790)
+(or x4911 x4905)
+(or x4911 x4790)
+(or (not x4912) (not x4790) (not x4913) (not x4790) (not x4905) (not x4790) (not x4911))
+(or (not x4911) (not x4914) x4915)
+(or (not x4915) x4911)
+(or (not x4915) x4914)
+(or x4916 x4912)
+(or x4916 x4790)
+(or x4916 x4912)
+(or x4916 x4790)
+(or x4916 (not x4915))
+(or (not x4912) (not x4790) (not x4912) (not x4790) x4915 (not x4916))
+(or (not x4917) (not x4918) x4919)
+(or (not x4919) x4917)
+(or (not x4919) x4918)
+(or x4914 (not x4920))
+(or x4914 (not x4919))
+(or x4920 x4919 (not x4914))
+(or (not x4912) (not x4790) (not x4913) (not x4790) (not x4905) (not x4790) x4921)
+(or (not x4921) x4912)
+(or (not x4921) x4790)
+(or (not x4921) x4913)
+(or (not x4921) x4790)
+(or (not x4921) x4905)
+(or (not x4921) x4790)
+(or x4922 (not x4921))
+(or x4922 (not x4920))
+(or x4922 (not x4919))
+(or x4921 x4920 x4919 (not x4922))
+(or x4923 x4920 x4922)
+(or x4923 (not x4920) (not x4922))
+(or (not x4923) x4920 (not x4922))
+(or (not x4923) (not x4920) x4922)
+(or x4924 x4923 x4916)
+(or x4924 (not x4923) (not x4916))
+(or (not x4924) x4923 (not x4916))
+(or (not x4924) (not x4923) x4916)
+(or (not x4925) (not x4926) (not x4927) (not x4928) (not x4924) x4929)
+(or (not x4929) x4925)
+(or (not x4929) x4926)
+(or (not x4929) x4927)
+(or (not x4929) x4928)
+(or (not x4929) x4924)
+(or (not x4930) (not x4912) (not x4790) x4931)
+(or (not x4931) x4930)
+(or (not x4931) x4912)
+(or (not x4931) x4790)
+(or x4932 (not x4931))
+(or x4932 (not x4929))
+(or x4931 x4929 (not x4932))
+(or (not x4932) (not x4790) x4933)
+(or (not x4933) x4932)
+(or (not x4933) x4790)
+(or x4890 (not x4934))
+(or x4890 x171)
+(or x4934 (not x171) (not x4890))
+(or (not x4890) (not x4935) (not x4790) (not x4936) (not x4790) x4937)
+(or (not x4937) x4890)
+(or (not x4937) x4935)
+(or (not x4937) x4790)
+(or (not x4937) x4936)
+(or (not x4937) x4790)
+(or (not x4893) (not x171) x4938)
+(or (not x4938) x4893)
+(or (not x4938) x171)
+(or x4939 (not x4938))
+(or x4939 (not x4937))
+(or x4938 x4937 (not x4939))
+(or (not x4939) (not x4790) x4940)
+(or (not x4940) x4939)
+(or (not x4940) x4790)
+(or x4822 (not x4941))
+(or x4822 x168)
+(or x4941 (not x168) (not x4822))
+(or (not x4822) (not x4942) (not x4790) (not x4943) (not x4790) x4944)
+(or (not x4944) x4822)
+(or (not x4944) x4942)
+(or (not x4944) x4790)
+(or (not x4944) x4943)
+(or (not x4944) x4790)
+(or (not x4825) (not x168) x4945)
+(or (not x4945) x4825)
+(or (not x4945) x168)
+(or x4946 (not x4945))
+(or x4946 (not x4944))
+(or x4945 x4944 (not x4946))
+(or (not x4946) (not x4790) x4947)
+(or (not x4947) x4946)
+(or (not x4947) x4790)
+(or x4948 x4949)
+(or x4948 x4790)
+(or x4948 x4913)
+(or x4948 x4790)
+(or x4948 x4942)
+(or x4948 x4790)
+(or (not x4949) (not x4790) (not x4913) (not x4790) (not x4942) (not x4790) (not x4948))
+(or (not x4948) (not x4950) x4951)
+(or (not x4951) x4948)
+(or (not x4951) x4950)
+(or x4952 x4949)
+(or x4952 x4790)
+(or x4952 x4949)
+(or x4952 x4790)
+(or x4952 (not x4951))
+(or (not x4949) (not x4790) (not x4949) (not x4790) x4951 (not x4952))
+(or (not x4953) (not x4954) x4955)
+(or (not x4955) x4953)
+(or (not x4955) x4954)
+(or x4950 (not x4956))
+(or x4950 (not x4955))
+(or x4956 x4955 (not x4950))
+(or (not x4949) (not x4790) (not x4913) (not x4790) (not x4942) (not x4790) x4957)
+(or (not x4957) x4949)
+(or (not x4957) x4790)
+(or (not x4957) x4913)
+(or (not x4957) x4790)
+(or (not x4957) x4942)
+(or (not x4957) x4790)
+(or x4958 (not x4957))
+(or x4958 (not x4956))
+(or x4958 (not x4955))
+(or x4957 x4956 x4955 (not x4958))
+(or x4959 x4956 x4958)
+(or x4959 (not x4956) (not x4958))
+(or (not x4959) x4956 (not x4958))
+(or (not x4959) (not x4956) x4958)
+(or x4960 x4959 x4952)
+(or x4960 (not x4959) (not x4952))
+(or (not x4960) x4959 (not x4952))
+(or (not x4960) (not x4959) x4952)
+(or (not x4925) (not x4961) (not x4790) x4962 (not x4790) (not x4928) (not x4963) (not x4927) (not x4928) (not x4960) x4964)
+(or (not x4964) x4925)
+(or (not x4964) x4961)
+(or (not x4964) x4790)
+(or (not x4964) (not x4962))
+(or (not x4964) x4790)
+(or (not x4964) x4928)
+(or (not x4964) x4963)
+(or (not x4964) x4927)
+(or (not x4964) x4928)
+(or (not x4964) x4960)
+(or (not x4965) (not x4949) (not x4790) x4966)
+(or (not x4966) x4965)
+(or (not x4966) x4949)
+(or (not x4966) x4790)
+(or x4967 (not x4966))
+(or x4967 (not x4964))
+(or x4966 x4964 (not x4967))
+(or (not x4967) (not x4790) x4968)
+(or (not x4968) x4967)
+(or (not x4968) x4790)
+(or x4814 (not x4969))
+(or x4814 x169)
+(or x4969 (not x169) (not x4814))
+(or (not x4814) (not x4970) (not x4790) (not x4971) (not x4790) x4972)
+(or (not x4972) x4814)
+(or (not x4972) x4970)
+(or (not x4972) x4790)
+(or (not x4972) x4971)
+(or (not x4972) x4790)
+(or (not x4817) (not x169) x4973)
+(or (not x4973) x4817)
+(or (not x4973) x169)
+(or x4974 (not x4973))
+(or x4974 (not x4972))
+(or x4973 x4972 (not x4974))
+(or (not x4974) (not x4790) x4975)
+(or (not x4975) x4974)
+(or (not x4975) x4790)
+(or x4918 (not x4976))
+(or x4918 x4905)
+(or x4918 x4790)
+(or x4976 (not x4905) (not x4790) (not x4918))
+(or x4977 x4978)
+(or x4977 x4790)
+(or x4977 (not x4976))
+(or x4977 x4905)
+(or x4977 x4790)
+(or (not x4978) (not x4790) x4976 (not x4905) (not x4790) (not x4977))
+(or x4979 (not x4980))
+(or x4979 x4935)
+(or x4979 x4790)
+(or x4980 (not x4935) (not x4790) (not x4979))
+(or (not x4979) (not x4977) x4981)
+(or (not x4981) x4979)
+(or (not x4981) x4977)
+(or x4982 x4980 x4981)
+(or x4982 (not x4980) (not x4981))
+(or (not x4982) x4980 (not x4981))
+(or (not x4982) (not x4980) x4981)
+(or (not x4983) (not x4982) x4984)
+(or (not x4984) x4983)
+(or (not x4984) x4982)
+(or (not x4985) (not x4986) (not x4978) (not x4790) x4987)
+(or (not x4987) x4985)
+(or (not x4987) x4986)
+(or (not x4987) x4978)
+(or (not x4987) x4790)
+(or x4988 (not x4987))
+(or x4988 (not x4984))
+(or x4987 x4984 (not x4988))
+(or (not x4988) (not x4790) x4989)
+(or (not x4989) x4988)
+(or (not x4989) x4790)
+(or (not x4796) (not x4790) x4990)
+(or (not x4990) x4796)
+(or (not x4990) x4790)
+(or (not x4802) (not x4790) x4991)
+(or (not x4991) x4802)
+(or (not x4991) x4790)
+(or (not x4808) (not x4790) x4992)
+(or (not x4992) x4808)
+(or (not x4992) x4790)
+(or x4993 (not x4994))
+(or x4993 x4790)
+(or x4993 (not x4995))
+(or x4993 x4996)
+(or x4993 x4997)
+(or x4993 x4998)
+(or x4993 (not x4999))
+(or x4993 x5000)
+(or x4993 (not x5001))
+(or x4993 x5002)
+(or x4993 x5003)
+(or x4993 x5004)
+(or x4993 (not x5005))
+(or x4993 x5006)
+(or x4993 x5007)
+(or x4993 x5008)
+(or x4993 (not x4992))
+(or x4993 (not x4991))
+(or x4993 (not x4990))
+(or x4994 (not x4790) x4995 (not x4996) (not x4997) (not x4998) x4999 (not x5000) x5001 (not x5002) (not x5003) (not x5004) x5005 (not x5006) (not x5007) (not x5008) x4992 x4991 x4990 (not x4993))
+(or (not x4993) (not x4913) (not x4790) x5009)
+(or (not x5009) x4993)
+(or (not x5009) x4913)
+(or (not x5009) x4790)
+(or x5010 x4796)
+(or x5010 x4790)
+(or (not x4796) (not x4790) (not x5010))
+(or x5011 x4802)
+(or x5011 x4790)
+(or (not x4802) (not x4790) (not x5011))
+(or x5012 x4808)
+(or x5012 x4790)
+(or (not x4808) (not x4790) (not x5012))
+(or x4994 (not x4790) (not x5013) (not x4996) (not x4997) (not x4998) x4999 (not x5000) x5001 (not x5002) (not x5003) (not x5004) x5005 (not x5006) (not x5007) (not x5008) (not x5012) (not x5011) (not x5010) x5014 x5015)
+(or (not x5015) (not x4994))
+(or (not x5015) x4790)
+(or (not x5015) x5013)
+(or (not x5015) x4996)
+(or (not x5015) x4997)
+(or (not x5015) x4998)
+(or (not x5015) (not x4999))
+(or (not x5015) x5000)
+(or (not x5015) (not x5001))
+(or (not x5015) x5002)
+(or (not x5015) x5003)
+(or (not x5015) x5004)
+(or (not x5015) (not x5005))
+(or (not x5015) x5006)
+(or (not x5015) x5007)
+(or (not x5015) x5008)
+(or (not x5015) x5012)
+(or (not x5015) x5011)
+(or (not x5015) x5010)
+(or (not x5015) (not x5014))
+(or x5016 (not x5015))
+(or x5016 (not x5009))
+(or x5015 x5009 (not x5016))
+(or (not x5016) (not x4790) x5017)
+(or (not x5017) x5016)
+(or (not x5017) x4790)
+(or x4954 (not x4976))
+(or x4954 x4942)
+(or x4954 x4790)
+(or x4976 (not x4942) (not x4790) (not x4954))
+(or x5018 x5019)
+(or x5018 x4790)
+(or x5018 (not x4976))
+(or x5018 x4942)
+(or x5018 x4790)
+(or (not x5019) (not x4790) x4976 (not x4942) (not x4790) (not x5018))
+(or x5020 (not x5021))
+(or x5020 x4970)
+(or x5020 x4790)
+(or x5021 (not x4970) (not x4790) (not x5020))
+(or (not x5020) (not x5018) x5022)
+(or (not x5022) x5020)
+(or (not x5022) x5018)
+(or x5023 x5021 x5022)
+(or x5023 (not x5021) (not x5022))
+(or (not x5023) x5021 (not x5022))
+(or (not x5023) (not x5021) x5022)
+(or (not x5024) (not x5023) x5025)
+(or (not x5025) x5024)
+(or (not x5025) x5023)
+(or (not x5026) (not x5027) (not x5019) (not x4790) x5028)
+(or (not x5028) x5026)
+(or (not x5028) x5027)
+(or (not x5028) x5019)
+(or (not x5028) x4790)
+(or x5029 (not x5028))
+(or x5029 (not x5025))
+(or x5028 x5025 (not x5029))
+(or (not x5029) (not x4790) x5030)
+(or (not x5030) x5029)
+(or (not x5030) x4790)
+(or (not x5031) (not x5032) (not x4790) x5033)
+(or (not x5033) x5031)
+(or (not x5033) x5032)
+(or (not x5033) x4790)
+(or (not x4953) (not x4971) (not x4790) (not x4815) (not x4790) x5034)
+(or (not x5034) x4953)
+(or (not x5034) x4971)
+(or (not x5034) x4790)
+(or (not x5034) x4815)
+(or (not x5034) x4790)
+(or x5035 (not x5034))
+(or x5035 (not x5033))
+(or x5034 x5033 (not x5035))
+(or (not x5035) (not x4790) x5036)
+(or (not x5036) x5035)
+(or (not x5036) x4790)
+(or (not x5037) (not x5038) (not x4790) x5039)
+(or (not x5039) x5037)
+(or (not x5039) x5038)
+(or (not x5039) x4790)
+(or (not x5040) (not x4943) (not x4790) (not x4823) (not x4790) x5041)
+(or (not x5041) x5040)
+(or (not x5041) x4943)
+(or (not x5041) x4790)
+(or (not x5041) x4823)
+(or (not x5041) x4790)
+(or x5042 (not x5041))
+(or x5042 (not x5039))
+(or x5041 x5039 (not x5042))
+(or (not x5042) (not x4790) x5043)
+(or (not x5043) x5042)
+(or (not x5043) x4790)
+(or (not x5031) (not x5044) (not x4790) x5045)
+(or (not x5045) x5031)
+(or (not x5045) x5044)
+(or (not x5045) x4790)
+(or (not x4953) (not x4971) (not x4790) (not x4830) (not x4790) x5046)
+(or (not x5046) x4953)
+(or (not x5046) x4971)
+(or (not x5046) x4790)
+(or (not x5046) x4830)
+(or (not x5046) x4790)
+(or x5047 (not x5046))
+(or x5047 (not x5045))
+(or x5046 x5045 (not x5047))
+(or (not x5047) (not x4790) x5048)
+(or (not x5048) x5047)
+(or (not x5048) x4790)
+(or (not x5037) (not x5049) (not x4790) x5050)
+(or (not x5050) x5037)
+(or (not x5050) x5049)
+(or (not x5050) x4790)
+(or (not x5040) (not x4943) (not x4790) (not x4836) (not x4790) x5051)
+(or (not x5051) x5040)
+(or (not x5051) x4943)
+(or (not x5051) x4790)
+(or (not x5051) x4836)
+(or (not x5051) x4790)
+(or x5052 (not x5051))
+(or x5052 (not x5050))
+(or x5051 x5050 (not x5052))
+(or (not x5052) (not x4790) x5053)
+(or (not x5053) x5052)
+(or (not x5053) x4790)
+(or (not x5031) (not x5054) (not x4790) x5055)
+(or (not x5055) x5031)
+(or (not x5055) x5054)
+(or (not x5055) x4790)
+(or (not x4953) (not x4971) (not x4790) (not x4842) (not x4790) x5056)
+(or (not x5056) x4953)
+(or (not x5056) x4971)
+(or (not x5056) x4790)
+(or (not x5056) x4842)
+(or (not x5056) x4790)
+(or x5057 (not x5056))
+(or x5057 (not x5055))
+(or x5056 x5055 (not x5057))
+(or (not x5057) (not x4790) x5058)
+(or (not x5058) x5057)
+(or (not x5058) x4790)
+(or (not x5037) (not x5059) (not x4790) x5060)
+(or (not x5060) x5037)
+(or (not x5060) x5059)
+(or (not x5060) x4790)
+(or (not x5040) (not x4943) (not x4790) (not x4848) (not x4790) x5061)
+(or (not x5061) x5040)
+(or (not x5061) x4943)
+(or (not x5061) x4790)
+(or (not x5061) x4848)
+(or (not x5061) x4790)
+(or x5062 (not x5061))
+(or x5062 (not x5060))
+(or x5061 x5060 (not x5062))
+(or (not x5062) (not x4790) x5063)
+(or (not x5063) x5062)
+(or (not x5063) x4790)
+(or (not x5031) (not x5064) (not x4790) x5065)
+(or (not x5065) x5031)
+(or (not x5065) x5064)
+(or (not x5065) x4790)
+(or (not x4953) (not x4971) (not x4790) (not x4854) (not x4790) x5066)
+(or (not x5066) x4953)
+(or (not x5066) x4971)
+(or (not x5066) x4790)
+(or (not x5066) x4854)
+(or (not x5066) x4790)
+(or x5067 (not x5066))
+(or x5067 (not x5065))
+(or x5066 x5065 (not x5067))
+(or (not x5067) (not x4790) x5068)
+(or (not x5068) x5067)
+(or (not x5068) x4790)
+(or (not x5037) (not x5069) (not x4790) x5070)
+(or (not x5070) x5037)
+(or (not x5070) x5069)
+(or (not x5070) x4790)
+(or (not x5040) (not x4943) (not x4790) (not x4860) (not x4790) x5071)
+(or (not x5071) x5040)
+(or (not x5071) x4943)
+(or (not x5071) x4790)
+(or (not x5071) x4860)
+(or (not x5071) x4790)
+(or x5072 (not x5071))
+(or x5072 (not x5070))
+(or x5071 x5070 (not x5072))
+(or (not x5072) (not x4790) x5073)
+(or (not x5073) x5072)
+(or (not x5073) x4790)
+(or (not x5031) (not x5074) (not x4790) x5075)
+(or (not x5075) x5031)
+(or (not x5075) x5074)
+(or (not x5075) x4790)
+(or (not x4953) (not x4971) (not x4790) (not x4866) (not x4790) x5076)
+(or (not x5076) x4953)
+(or (not x5076) x4971)
+(or (not x5076) x4790)
+(or (not x5076) x4866)
+(or (not x5076) x4790)
+(or x5077 (not x5076))
+(or x5077 (not x5075))
+(or x5076 x5075 (not x5077))
+(or (not x5077) (not x4790) x5078)
+(or (not x5078) x5077)
+(or (not x5078) x4790)
+(or (not x5037) (not x5079) (not x4790) x5080)
+(or (not x5080) x5037)
+(or (not x5080) x5079)
+(or (not x5080) x4790)
+(or (not x5040) (not x4943) (not x4790) (not x4872) (not x4790) x5081)
+(or (not x5081) x5040)
+(or (not x5081) x4943)
+(or (not x5081) x4790)
+(or (not x5081) x4872)
+(or (not x5081) x4790)
+(or x5082 (not x5081))
+(or x5082 (not x5080))
+(or x5081 x5080 (not x5082))
+(or (not x5082) (not x4790) x5083)
+(or (not x5083) x5082)
+(or (not x5083) x4790)
+(or (not x5031) (not x5084) (not x4790) x5085)
+(or (not x5085) x5031)
+(or (not x5085) x5084)
+(or (not x5085) x4790)
+(or (not x4953) (not x4971) (not x4790) (not x4878) (not x4790) x5086)
+(or (not x5086) x4953)
+(or (not x5086) x4971)
+(or (not x5086) x4790)
+(or (not x5086) x4878)
+(or (not x5086) x4790)
+(or x5087 (not x5086))
+(or x5087 (not x5085))
+(or x5086 x5085 (not x5087))
+(or (not x5087) (not x4790) x5088)
+(or (not x5088) x5087)
+(or (not x5088) x4790)
+(or (not x5037) (not x5089) (not x4790) x5090)
+(or (not x5090) x5037)
+(or (not x5090) x5089)
+(or (not x5090) x4790)
+(or (not x5040) (not x4943) (not x4790) (not x4884) (not x4790) x5091)
+(or (not x5091) x5040)
+(or (not x5091) x4943)
+(or (not x5091) x4790)
+(or (not x5091) x4884)
+(or (not x5091) x4790)
+(or x5092 (not x5091))
+(or x5092 (not x5090))
+(or x5091 x5090 (not x5092))
+(or (not x5092) (not x4790) x5093)
+(or (not x5093) x5092)
+(or (not x5093) x4790)
+(or (not x5094) (not x5095) (not x4790) x5096)
+(or (not x5096) x5094)
+(or (not x5096) x5095)
+(or (not x5096) x4790)
+(or (not x4917) (not x4936) (not x4790) (not x4891) (not x4790) x5097)
+(or (not x5097) x4917)
+(or (not x5097) x4936)
+(or (not x5097) x4790)
+(or (not x5097) x4891)
+(or (not x5097) x4790)
+(or x5098 (not x5097))
+(or x5098 (not x5096))
+(or x5097 x5096 (not x5098))
+(or (not x5098) (not x4790) x5099)
+(or (not x5099) x5098)
+(or (not x5099) x4790)
+(or (not x5100) (not x5101) (not x4790) x5102)
+(or (not x5102) x5100)
+(or (not x5102) x5101)
+(or (not x5102) x4790)
+(or (not x5103) (not x4906) (not x4790) (not x4898) (not x4790) x5104)
+(or (not x5104) x5103)
+(or (not x5104) x4906)
+(or (not x5104) x4790)
+(or (not x5104) x4898)
+(or (not x5104) x4790)
+(or x5105 (not x5104))
+(or x5105 (not x5102))
+(or x5104 x5102 (not x5105))
+(or (not x5105) (not x4790) x5106)
+(or (not x5106) x5105)
+(or (not x5106) x4790)
+(or x5107 (not x5108))
+(or x5107 x4790)
+(or x5108 (not x4790) (not x5107))
+(or x5109 (not x4795))
+(or x5109 (not x5110))
+(or x4795 x5110 (not x5109))
+(or (not x5109) (not x5111) x5112)
+(or (not x5112) x5109)
+(or (not x5112) x5111)
+(or x4795 (not x5113) x5114 x5115)
+(or (not x5115) (not x4795))
+(or (not x5115) x5113)
+(or (not x5115) (not x5114))
+(or x5116 (not x5115))
+(or x5116 (not x5112))
+(or x5116 x4790)
+(or x5115 x5112 (not x4790) (not x5116))
+(or (not x5117) (not x4790) (not x5118) (not x5119) (not x5120) (not x5121) (not x5013) (not x5122) (not x5123) (not x4790) x5124)
+(or (not x5124) x5117)
+(or (not x5124) x4790)
+(or (not x5124) x5118)
+(or (not x5124) x5119)
+(or (not x5124) x5120)
+(or (not x5124) x5121)
+(or (not x5124) x5013)
+(or (not x5124) x5122)
+(or (not x5124) x5123)
+(or (not x5124) x4790)
+(or (not x5125) (not x5123) (not x4790) (not x5119) (not x5126) x4994 (not x4790) (not x5123) (not x4790) x5127)
+(or (not x5127) x5125)
+(or (not x5127) x5123)
+(or (not x5127) x4790)
+(or (not x5127) x5119)
+(or (not x5127) x5126)
+(or (not x5127) (not x4994))
+(or (not x5127) x4790)
+(or (not x5127) x5123)
+(or (not x5127) x4790)
+(or (not x5113) x4795 x5128)
+(or (not x5128) x5113)
+(or (not x5128) (not x4795))
+(or x5129 (not x5128))
+(or x5129 (not x5130))
+(or x5128 x5130 (not x5129))
+(or (not x5125) (not x5118) (not x5129) x5131)
+(or (not x5131) x5125)
+(or (not x5131) x5118)
+(or (not x5131) x5129)
+(or (not x5119) (not x5120) (not x5132) (not x5123) (not x4790) x5133)
+(or (not x5133) x5119)
+(or (not x5133) x5120)
+(or (not x5133) x5132)
+(or (not x5133) x5123)
+(or (not x5133) x4790)
+(or x5134 (not x5133))
+(or x5134 (not x5131))
+(or x5134 (not x5127))
+(or x5134 (not x5124))
+(or x5133 x5131 x5127 x5124 (not x5134))
+(or (not x5134) (not x4790) x5135)
+(or (not x5135) x5134)
+(or (not x5135) x4790)
+(or x5136 (not x5137))
+(or x5136 (not x5138))
+(or x5137 x5138 (not x5136))
+(or x5139 (not x5005))
+(or x5139 x5140)
+(or x5005 (not x5140) (not x5139))
+(or x5141 x5005)
+(or x5141 x5142)
+(or (not x5005) (not x5142) (not x5141))
+(or (not x5141) (not x5139) x5143)
+(or (not x5143) x5141)
+(or (not x5143) x5139)
+(or x5144 x5145)
+(or x5144 (not x5146))
+(or x5144 (not x5007))
+(or x5144 x5006)
+(or x5144 (not x5137))
+(or x5144 (not x5143))
+(or (not x5145) x5146 x5007 (not x5006) x5137 x5143 (not x5144))
+(or x5147 x5145)
+(or x5147 (not x5146))
+(or x5147 (not x5007))
+(or x5147 (not x5006))
+(or x5147 x5148)
+(or (not x5145) x5146 x5007 x5006 (not x5148) (not x5147))
+(or (not x5147) (not x5144) (not x5136) x5149)
+(or (not x5149) x5147)
+(or (not x5149) x5144)
+(or (not x5149) x5136)
+(or x5121 (not x4995))
+(or x5121 (not x5150))
+(or x5121 (not x5149))
+(or x4995 x5150 x5149 (not x5121))
+(or (not x5117) (not x4790) (not x5118) (not x5119) (not x5120) (not x5121) (not x5013) (not x5122) (not x5117) (not x4790) x5151)
+(or (not x5151) x5117)
+(or (not x5151) x4790)
+(or (not x5151) x5118)
+(or (not x5151) x5119)
+(or (not x5151) x5120)
+(or (not x5151) x5121)
+(or (not x5151) x5013)
+(or (not x5151) x5122)
+(or (not x5151) x5117)
+(or (not x5151) x4790)
+(or (not x5126) x4994 (not x4790) (not x5117) (not x4790) x5152)
+(or (not x5152) x5126)
+(or (not x5152) (not x4994))
+(or (not x5152) x4790)
+(or (not x5152) x5117)
+(or (not x5152) x4790)
+(or (not x5153) (not x5111) x5154)
+(or (not x5154) x5153)
+(or (not x5154) x5111)
+(or x5155 (not x5154))
+(or x5155 (not x5152))
+(or x5154 x5152 (not x5155))
+(or (not x5125) (not x5123) (not x4790) (not x5119) (not x5155) x5156)
+(or (not x5156) x5125)
+(or (not x5156) x5123)
+(or (not x5156) x4790)
+(or (not x5156) x5119)
+(or (not x5156) x5155)
+(or (not x5125) (not x5118) (not x5157) (not x5117) (not x4790) x5158)
+(or (not x5158) x5125)
+(or (not x5158) x5118)
+(or (not x5158) x5157)
+(or (not x5158) x5117)
+(or (not x5158) x4790)
+(or (not x5119) (not x5120) (not x5132) (not x5117) (not x4790) x5159)
+(or (not x5159) x5119)
+(or (not x5159) x5120)
+(or (not x5159) x5132)
+(or (not x5159) x5117)
+(or (not x5159) x4790)
+(or x5160 (not x5159))
+(or x5160 (not x5158))
+(or x5160 (not x5156))
+(or x5160 (not x5151))
+(or x5159 x5158 x5156 x5151 (not x5160))
+(or (not x5160) (not x4790) x5161)
+(or (not x5161) x5160)
+(or (not x5161) x4790)
+(or x4900 x4906)
+(or x4900 x4790)
+(or (not x4906) (not x4790) (not x4900))
+(or x5100 (not x5162))
+(or x5100 x4906)
+(or x5100 x4790)
+(or x5162 (not x4906) (not x4790) (not x5100))
+(or (not x5100) (not x5163) (not x5164) (not x4905) (not x4790) x5165)
+(or (not x5165) x5100)
+(or (not x5165) x5163)
+(or (not x5165) x5164)
+(or (not x5165) x4905)
+(or (not x5165) x4790)
+(or (not x4906) (not x4790) x4904)
+(or (not x4904) x4906)
+(or (not x4904) x4790)
+(or (not x5103) (not x4906) (not x4790) (not x4906) (not x4790) x5166)
+(or (not x5166) x5103)
+(or (not x5166) x4906)
+(or (not x5166) x4790)
+(or (not x5166) x4906)
+(or (not x5166) x4790)
+(or x5167 (not x5166))
+(or x5167 (not x5165))
+(or x5166 x5165 (not x5167))
+(or (not x5167) (not x4790) x5168)
+(or (not x5168) x5167)
+(or (not x5168) x4790)
+(or x4893 x4936)
+(or x4893 x4790)
+(or (not x4936) (not x4790) (not x4893))
+(or x5094 (not x5169))
+(or x5094 x4936)
+(or x5094 x4790)
+(or x5169 (not x4936) (not x4790) (not x5094))
+(or (not x5094) (not x5170) (not x4935) (not x4790) x5171)
+(or (not x5171) x5094)
+(or (not x5171) x5170)
+(or (not x5171) x4935)
+(or (not x5171) x4790)
+(or (not x4936) (not x4790) x4934)
+(or (not x4934) x4936)
+(or (not x4934) x4790)
+(or (not x4917) (not x4936) (not x4790) (not x4936) (not x4790) x5172)
+(or (not x5172) x4917)
+(or (not x5172) x4936)
+(or (not x5172) x4790)
+(or (not x5172) x4936)
+(or (not x5172) x4790)
+(or x5173 (not x5172))
+(or x5173 (not x5171))
+(or x5172 x5171 (not x5173))
+(or (not x5173) (not x4790) x5174)
+(or (not x5174) x5173)
+(or (not x5174) x4790)
+(or x4825 x4943)
+(or x4825 x4790)
+(or (not x4943) (not x4790) (not x4825))
+(or x5037 (not x5175))
+(or x5037 x4943)
+(or x5037 x4790)
+(or x5175 (not x4943) (not x4790) (not x5037))
+(or (not x5037) (not x5176) (not x5177) (not x4942) (not x4790) x5178)
+(or (not x5178) x5037)
+(or (not x5178) x5176)
+(or (not x5178) x5177)
+(or (not x5178) x4942)
+(or (not x5178) x4790)
+(or (not x4943) (not x4790) x4941)
+(or (not x4941) x4943)
+(or (not x4941) x4790)
+(or (not x5040) (not x4943) (not x4790) (not x4943) (not x4790) x5179)
+(or (not x5179) x5040)
+(or (not x5179) x4943)
+(or (not x5179) x4790)
+(or (not x5179) x4943)
+(or (not x5179) x4790)
+(or x5180 (not x5179))
+(or x5180 (not x5178))
+(or x5179 x5178 (not x5180))
+(or (not x5180) (not x4790) x5181)
+(or (not x5181) x5180)
+(or (not x5181) x4790)
+(or x4817 x4971)
+(or x4817 x4790)
+(or (not x4971) (not x4790) (not x4817))
+(or x5031 (not x5182))
+(or x5031 x4971)
+(or x5031 x4790)
+(or x5182 (not x4971) (not x4790) (not x5031))
+(or (not x5031) (not x5183) (not x4970) (not x4790) x5184)
+(or (not x5184) x5031)
+(or (not x5184) x5183)
+(or (not x5184) x4970)
+(or (not x5184) x4790)
+(or (not x4971) (not x4790) x4969)
+(or (not x4969) x4971)
+(or (not x4969) x4790)
+(or (not x4953) (not x4971) (not x4790) (not x4971) (not x4790) x5185)
+(or (not x5185) x4953)
+(or (not x5185) x4971)
+(or (not x5185) x4790)
+(or (not x5185) x4971)
+(or (not x5185) x4790)
+(or x5186 (not x5185))
+(or x5186 (not x5184))
+(or x5185 x5184 (not x5186))
+(or (not x5186) (not x4790) x5187)
+(or (not x5187) x5186)
+(or (not x5187) x4790)
+(or x173 (not x5188) (not x4790) (not x5189) (not x4790) x5190)
+(or (not x5190) (not x173))
+(or (not x5190) x5188)
+(or (not x5190) x4790)
+(or (not x5190) x5189)
+(or (not x5190) x4790)
+(or x5191 (not x5192))
+(or x5191 (not x5193))
+(or x5191 (not x5194))
+(or x5192 x5193 x5194 (not x5191))
+(or (not x173) (not x5191) x5195)
+(or (not x5195) x173)
+(or (not x5195) x5191)
+(or x5196 (not x5195))
+(or x5196 (not x5190))
+(or x5195 x5190 (not x5196))
+(or (not x5196) (not x4790) x5197)
+(or (not x5197) x5196)
+(or (not x5197) x4790)
+(or x172 (not x5198) (not x4790) (not x5199) (not x4790) x5200)
+(or (not x5200) (not x172))
+(or (not x5200) x5198)
+(or (not x5200) x4790)
+(or (not x5200) x5199)
+(or (not x5200) x4790)
+(or x5201 (not x5202))
+(or x5201 (not x5203))
+(or x5201 (not x5204))
+(or x5202 x5203 x5204 (not x5201))
+(or (not x172) (not x5201) x5205)
+(or (not x5205) x172)
+(or (not x5205) x5201)
+(or x5206 (not x5205))
+(or x5206 (not x5200))
+(or x5205 x5200 (not x5206))
+(or (not x5206) (not x4790) x5207)
+(or (not x5207) x5206)
+(or (not x5207) x4790)
+(or (not x5208) (not x5209) (not x5210) x5211)
+(or (not x5211) x5208)
+(or (not x5211) x5209)
+(or (not x5211) x5210)
+(or (not x5212) (not x5208) (not x5213) (not x5214) (not x5188) (not x4790) x5215)
+(or (not x5215) x5212)
+(or (not x5215) x5208)
+(or (not x5215) x5213)
+(or (not x5215) x5214)
+(or (not x5215) x5188)
+(or (not x5215) x4790)
+(or x5216 (not x5215))
+(or x5216 (not x5211))
+(or x5215 x5211 (not x5216))
+(or (not x4961) (not x4790) (not x5210) (not x4928) (not x4963) (not x5217) (not x5216) x5218)
+(or (not x5218) x4961)
+(or (not x5218) x4790)
+(or (not x5218) x5210)
+(or (not x5218) x4928)
+(or (not x5218) x4963)
+(or (not x5218) x5217)
+(or (not x5218) x5216)
+(or (not x5219) (not x5220) (not x5210) x5221)
+(or (not x5221) x5219)
+(or (not x5221) x5220)
+(or (not x5221) x5210)
+(or (not x5219) (not x5222) (not x5223) (not x5224) (not x5188) (not x4790) x5225)
+(or (not x5225) x5219)
+(or (not x5225) x5222)
+(or (not x5225) x5223)
+(or (not x5225) x5224)
+(or (not x5225) x5188)
+(or (not x5225) x4790)
+(or x5226 (not x5227))
+(or x5226 (not x5225))
+(or x5227 x5225 (not x5226))
+(or (not x5228) (not x5226) x5229)
+(or (not x5229) x5228)
+(or (not x5229) x5226)
+(or x5230 (not x5229))
+(or x5230 (not x5221))
+(or x5229 x5221 (not x5230))
+(or (not x4961) (not x4790) x4962 (not x4790) (not x4928) (not x4963) (not x5230) x5231)
+(or (not x5231) x4961)
+(or (not x5231) x4790)
+(or (not x5231) (not x4962))
+(or (not x5231) x4790)
+(or (not x5231) x4928)
+(or (not x5231) x4963)
+(or (not x5231) x5230)
+(or (not x4953) (not x5040) (not x5232) (not x5210) x5233)
+(or (not x5233) x4953)
+(or (not x5233) x5040)
+(or (not x5233) x5232)
+(or (not x5233) x5210)
+(or (not x5234) (not x4953) (not x5040) (not x5235) (not x5236) x5237)
+(or (not x5237) x5234)
+(or (not x5237) x4953)
+(or (not x5237) x5040)
+(or (not x5237) x5235)
+(or (not x5237) x5236)
+(or x5238 (not x5237))
+(or x5238 (not x5233))
+(or x5237 x5233 (not x5238))
+(or (not x5239) (not x5210) (not x4928) (not x5238) x5240)
+(or (not x5240) x5239)
+(or (not x5240) x5210)
+(or (not x5240) x4928)
+(or (not x5240) x5238)
+(or (not x5241) (not x5242) (not x5210) x5243)
+(or (not x5243) x5241)
+(or (not x5243) x5242)
+(or (not x5243) x5210)
+(or (not x5241) (not x5244) (not x4953) (not x5040) (not x5236) x5245)
+(or (not x5245) x5241)
+(or (not x5245) x5244)
+(or (not x5245) x4953)
+(or (not x5245) x5040)
+(or (not x5245) x5236)
+(or x5246 (not x5247))
+(or x5246 (not x5245))
+(or x5247 x5245 (not x5246))
+(or (not x5248) (not x5246) x5249)
+(or (not x5249) x5248)
+(or (not x5249) x5246)
+(or x5250 (not x5249))
+(or x5250 (not x5243))
+(or x5249 x5243 (not x5250))
+(or (not x5239) x4962 (not x4790) (not x5250) x5251)
+(or (not x5251) x5239)
+(or (not x5251) (not x4962))
+(or (not x5251) x4790)
+(or (not x5251) x5250)
+(or x5252 (not x5251))
+(or x5252 (not x5240))
+(or x5252 (not x5231))
+(or x5252 (not x5218))
+(or x5252 x4790)
+(or x5251 x5240 x5231 x5218 (not x4790) (not x5252))
+(or x5253 (not x5254))
+(or x5253 (not x5255))
+(or x5253 (not x5256))
+(or x5254 x5255 x5256 (not x5253))
+(or (not x5257) (not x5253) x5258)
+(or (not x5258) x5257)
+(or (not x5258) x5253)
+(or x5209 (not x5259))
+(or x5209 (not x5258))
+(or x5259 x5258 (not x5209))
+(or (not x5208) (not x5209) (not x4961) (not x4790) x5260)
+(or (not x5260) x5208)
+(or (not x5260) x5209)
+(or (not x5260) x4961)
+(or (not x5260) x4790)
+(or x5257 (not x5255))
+(or x5257 x5188)
+(or x5257 x4790)
+(or x5255 (not x5188) (not x4790) (not x5257))
+(or (not x5257) (not x5214) (not x5261) x5262)
+(or (not x5262) x5257)
+(or (not x5262) x5214)
+(or (not x5262) x5261)
+(or (not x5214) (not x5188) (not x4790) x5254)
+(or (not x5254) x5214)
+(or (not x5254) x5188)
+(or (not x5254) x4790)
+(or x5213 (not x5254))
+(or x5213 (not x5262))
+(or x5254 x5262 (not x5213))
+(or x5164 (not x4976))
+(or x5164 (not x5263))
+(or x5164 (not x4980))
+(or x4976 x5263 x4980 (not x5164))
+(or x5163 x4913)
+(or x5163 x4790)
+(or x5163 (not x5264))
+(or x5163 (not x5265))
+(or x5163 (not x5266))
+(or x5163 (not x5267))
+(or x5163 (not x4920))
+(or (not x4913) (not x4790) x5264 x5265 x5266 x5267 x4920 (not x5163))
+(or (not x5163) (not x5164) x5268)
+(or (not x5268) x5163)
+(or (not x5268) x5164)
+(or x5269 (not x5268))
+(or x5269 x4905)
+(or x5269 x4790)
+(or x5268 (not x4905) (not x4790) (not x5269))
+(or x4986 (not x4976))
+(or x4986 (not x5264))
+(or x4986 (not x5265))
+(or x4986 (not x5266))
+(or x4986 (not x5267))
+(or x4976 x5264 x5265 x5266 x5267 (not x4986))
+(or x4985 x4913)
+(or x4985 x4790)
+(or x4985 (not x5264))
+(or x4985 (not x5265))
+(or x4985 (not x5266))
+(or x4985 (not x5267))
+(or x4985 x4912)
+(or x4985 x4790)
+(or (not x4913) (not x4790) x5264 x5265 x5266 x5267 (not x4912) (not x4790) (not x4985))
+(or (not x4985) (not x4986) x5263)
+(or (not x5263) x4985)
+(or (not x5263) x4986)
+(or x5170 (not x5263))
+(or x5170 x4978)
+(or x5170 x4790)
+(or x5263 (not x4978) (not x4790) (not x5170))
+(or x5270 (not x5263))
+(or x5270 x4978)
+(or x5270 x4790)
+(or x5270 x4935)
+(or x5270 x4790)
+(or x5263 (not x4978) (not x4790) (not x4935) (not x4790) (not x5270))
+(or (not x5236) (not x5270) (not x5269) x5255)
+(or (not x5255) x5236)
+(or (not x5255) x5270)
+(or (not x5255) x5269)
+(or x5208 (not x5255))
+(or x5208 x5198)
+(or x5208 x4790)
+(or x5255 (not x5198) (not x4790) (not x5208))
+(or (not x5208) (not x5213) x5271)
+(or (not x5271) x5208)
+(or (not x5271) x5213)
+(or x5214 (not x5272))
+(or x5214 (not x5273))
+(or x5214 (not x5274))
+(or x5272 x5273 x5274 (not x5214))
+(or (not x5214) (not x5198) (not x4790) x5259)
+(or (not x5259) x5214)
+(or (not x5259) x5198)
+(or (not x5259) x4790)
+(or x5212 (not x5259))
+(or x5212 (not x5271))
+(or x5259 x5271 (not x5212))
+(or (not x5212) (not x5208) (not x5213) (not x5257) (not x5214) (not x5261) x5275)
+(or (not x5275) x5212)
+(or (not x5275) x5208)
+(or (not x5275) x5213)
+(or (not x5275) x5257)
+(or (not x5275) x5214)
+(or (not x5275) x5261)
+(or x5276 (not x5275))
+(or x5276 (not x5260))
+(or x5275 x5260 (not x5276))
+(or (not x4961) (not x4790) (not x5210) (not x4928) (not x4963) (not x5217) (not x5276) x5277)
+(or (not x5277) x4961)
+(or (not x5277) x4790)
+(or (not x5277) x5210)
+(or (not x5277) x4928)
+(or (not x5277) x4963)
+(or (not x5277) x5217)
+(or (not x5277) x5276)
+(or x5278 (not x5279))
+(or x5278 (not x5280))
+(or x5278 x5188)
+(or x5278 x4790)
+(or x5279 x5280 (not x5188) (not x4790) (not x5278))
+(or (not x5223) (not x5278) x5281)
+(or (not x5281) x5223)
+(or (not x5281) x5278)
+(or x5220 (not x5227))
+(or x5220 (not x5281))
+(or x5227 x5281 (not x5220))
+(or (not x5219) (not x5220) (not x4961) (not x4790) x5282)
+(or (not x5282) x5219)
+(or (not x5282) x5220)
+(or (not x5282) x4961)
+(or (not x5282) x4790)
+(or x5223 (not x5280))
+(or x5223 x5198)
+(or x5223 x4790)
+(or x5280 (not x5198) (not x4790) (not x5223))
+(or (not x5223) (not x5224) (not x5188) (not x4790) x5283)
+(or (not x5283) x5223)
+(or (not x5283) x5224)
+(or (not x5283) x5188)
+(or (not x5283) x4790)
+(or (not x5224) (not x5198) (not x4790) x5279)
+(or (not x5279) x5224)
+(or (not x5279) x5198)
+(or (not x5279) x4790)
+(or x5222 (not x5279))
+(or x5222 (not x5283))
+(or x5279 x5283 (not x5222))
+(or x5177 (not x4976))
+(or x5177 (not x5284))
+(or x5177 (not x5021))
+(or x4976 x5284 x5021 (not x5177))
+(or x5176 x4913)
+(or x5176 x4790)
+(or x5176 (not x5264))
+(or x5176 x4961)
+(or x5176 x4790)
+(or x5176 (not x4962))
+(or x5176 x4790)
+(or x5176 (not x5267))
+(or x5176 (not x5285))
+(or x5176 (not x5266))
+(or x5176 (not x5267))
+(or x5176 (not x4956))
+(or (not x4913) (not x4790) x5264 (not x4961) (not x4790) x4962 (not x4790) x5267 x5285 x5266 x5267 x4956 (not x5176))
+(or (not x5176) (not x5177) x5286)
+(or (not x5286) x5176)
+(or (not x5286) x5177)
+(or x5287 (not x5286))
+(or x5287 x4942)
+(or x5287 x4790)
+(or x5286 (not x4942) (not x4790) (not x5287))
+(or x5027 (not x4976))
+(or x5027 (not x5264))
+(or x5027 x4961)
+(or x5027 x4790)
+(or x5027 (not x4962))
+(or x5027 x4790)
+(or x5027 (not x5267))
+(or x5027 (not x5285))
+(or x5027 (not x5266))
+(or x5027 (not x5267))
+(or x4976 x5264 (not x4961) (not x4790) x4962 (not x4790) x5267 x5285 x5266 x5267 (not x5027))
+(or x5026 x4913)
+(or x5026 x4790)
+(or x5026 (not x5264))
+(or x5026 x4961)
+(or x5026 x4790)
+(or x5026 (not x4962))
+(or x5026 x4790)
+(or x5026 (not x5267))
+(or x5026 (not x5285))
+(or x5026 (not x5266))
+(or x5026 (not x5267))
+(or x5026 x4949)
+(or x5026 x4790)
+(or (not x4913) (not x4790) x5264 (not x4961) (not x4790) x4962 (not x4790) x5267 x5285 x5266 x5267 (not x4949) (not x4790) (not x5026))
+(or (not x5026) (not x5027) x5284)
+(or (not x5284) x5026)
+(or (not x5284) x5027)
+(or x5183 (not x5284))
+(or x5183 x5019)
+(or x5183 x4790)
+(or x5284 (not x5019) (not x4790) (not x5183))
+(or x5288 (not x5284))
+(or x5288 x5019)
+(or x5288 x4790)
+(or x5288 x4970)
+(or x5288 x4790)
+(or x5284 (not x5019) (not x4790) (not x4970) (not x4790) (not x5288))
+(or (not x5261) (not x5288) (not x5287) x5280)
+(or (not x5280) x5261)
+(or (not x5280) x5288)
+(or (not x5280) x5287)
+(or x5219 (not x5280))
+(or x5219 (not x5272))
+(or x5280 x5272 (not x5219))
+(or (not x5219) (not x5222) x5289)
+(or (not x5289) x5219)
+(or (not x5289) x5222)
+(or x5224 (not x5256))
+(or x5224 (not x5290))
+(or x5224 (not x5291))
+(or x5256 x5290 x5291 (not x5224))
+(or (not x5224) (not x5236) x5227)
+(or (not x5227) x5224)
+(or (not x5227) x5236)
+(or x5228 (not x5227))
+(or x5228 (not x5289))
+(or x5227 x5289 (not x5228))
+(or (not x5228) (not x5224) (not x5236) x5292)
+(or (not x5292) x5228)
+(or (not x5292) x5224)
+(or (not x5292) x5236)
+(or x5293 (not x5292))
+(or x5293 (not x5282))
+(or x5292 x5282 (not x5293))
+(or (not x4961) (not x4790) x4962 (not x4790) (not x4928) (not x4963) (not x5293) x5294)
+(or (not x5294) x4961)
+(or (not x5294) x4790)
+(or (not x5294) (not x4962))
+(or (not x5294) x4790)
+(or (not x5294) x4928)
+(or (not x5294) x4963)
+(or (not x5294) x5293)
+(or x5295 (not x5169))
+(or x5295 (not x5162))
+(or x5295 x5198)
+(or x5295 x4790)
+(or x5169 x5162 (not x5198) (not x4790) (not x5295))
+(or (not x4917) (not x5103) (not x5295) x5296)
+(or (not x5296) x4917)
+(or (not x5296) x5103)
+(or (not x5296) x5295)
+(or x5232 (not x5182))
+(or x5232 (not x5175))
+(or x5232 (not x5296))
+(or x5182 x5175 x5296 (not x5232))
+(or (not x4953) (not x5040) (not x5232) (not x4961) (not x4790) x5297)
+(or (not x5297) x4953)
+(or (not x5297) x5040)
+(or (not x5297) x5232)
+(or (not x5297) x4961)
+(or (not x5297) x4790)
+(or (not x4953) (not x5040) (not x5235) (not x5236) x5298)
+(or (not x5298) x4953)
+(or (not x5298) x5040)
+(or (not x5298) x5235)
+(or (not x5298) x5236)
+(or x5299 (not x5182))
+(or x5299 (not x5175))
+(or x5299 (not x5298))
+(or x5182 x5175 x5298 (not x5299))
+(or (not x4917) (not x5103) (not x5198) (not x4790) x5300)
+(or (not x5300) x4917)
+(or (not x5300) x5103)
+(or (not x5300) x5198)
+(or (not x5300) x4790)
+(or x5235 (not x5169))
+(or x5235 (not x5162))
+(or x5235 (not x5300))
+(or x5169 x5162 x5300 (not x5235))
+(or (not x4953) (not x5040) (not x5235) x5301)
+(or (not x5301) x4953)
+(or (not x5301) x5040)
+(or (not x5301) x5235)
+(or x5234 (not x5182))
+(or x5234 (not x5175))
+(or x5234 (not x5301))
+(or x5182 x5175 x5301 (not x5234))
+(or (not x5234) (not x5299) x5302)
+(or (not x5302) x5234)
+(or (not x5302) x5299)
+(or x5303 (not x5302))
+(or x5303 (not x5297))
+(or x5302 x5297 (not x5303))
+(or (not x5239) (not x5210) (not x4928) (not x5303) x5304)
+(or (not x5304) x5239)
+(or (not x5304) x5210)
+(or (not x5304) x4928)
+(or (not x5304) x5303)
+(or x5103 x4905)
+(or x5103 x4790)
+(or (not x4905) (not x4790) (not x5103))
+(or x4917 x4935)
+(or x4917 x4790)
+(or (not x4935) (not x4790) (not x4917))
+(or (not x4917) (not x5103) x5272)
+(or (not x5272) x4917)
+(or (not x5272) x5103)
+(or x5305 (not x5182))
+(or x5305 (not x5175))
+(or x5305 (not x5272))
+(or x5182 x5175 x5272 (not x5305))
+(or (not x4953) (not x5040) (not x5305) x5306)
+(or (not x5306) x4953)
+(or (not x5306) x5040)
+(or (not x5306) x5305)
+(or x5242 (not x5247))
+(or x5242 (not x5306))
+(or x5247 x5306 (not x5242))
+(or (not x5241) (not x5242) (not x4961) (not x4790) x5307)
+(or (not x5307) x5241)
+(or (not x5307) x5242)
+(or (not x5307) x4961)
+(or (not x5307) x4790)
+(or x5236 (not x5169))
+(or x5236 (not x5162))
+(or x5169 x5162 (not x5236))
+(or x5040 x4942)
+(or x5040 x4790)
+(or (not x4942) (not x4790) (not x5040))
+(or x4953 x4970)
+(or x4953 x4790)
+(or (not x4970) (not x4790) (not x4953))
+(or (not x4953) (not x5040) x5256)
+(or (not x5256) x4953)
+(or (not x5256) x5040)
+(or (not x4953) (not x5040) (not x5236) x5308)
+(or (not x5308) x4953)
+(or (not x5308) x5040)
+(or (not x5308) x5236)
+(or x5261 (not x5182))
+(or x5261 (not x5175))
+(or x5182 x5175 (not x5261))
+(or x5244 (not x5182))
+(or x5244 (not x5175))
+(or x5244 (not x5308))
+(or x5182 x5175 x5308 (not x5244))
+(or x5241 x5188)
+(or x5241 x4790)
+(or (not x5188) (not x4790) (not x5241))
+(or (not x5241) (not x5244) x5309)
+(or (not x5309) x5241)
+(or (not x5309) x5244)
+(or x5248 (not x5247))
+(or x5248 (not x5309))
+(or x5247 x5309 (not x5248))
+(or (not x5248) (not x5241) (not x5244) x5310)
+(or (not x5310) x5248)
+(or (not x5310) x5241)
+(or (not x5310) x5244)
+(or x5311 (not x5310))
+(or x5311 (not x5307))
+(or x5310 x5307 (not x5311))
+(or (not x5239) x4962 (not x4790) (not x5311) x5312)
+(or (not x5312) x5239)
+(or (not x5312) (not x4962))
+(or (not x5312) x4790)
+(or (not x5312) x5311)
+(or x5313 (not x5312))
+(or x5313 (not x5304))
+(or x5313 (not x5294))
+(or x5313 (not x5277))
+(or x5312 x5304 x5294 x5277 (not x5313))
+(or (not x5313) (not x4790) x5314)
+(or (not x5314) x5313)
+(or (not x5314) x4790)
+(or x5315 x5189)
+(or x5315 x4790)
+(or (not x5189) (not x4790) (not x5315))
+(or (not x5315) (not x4927) (not x5188) (not x4790) x5316)
+(or (not x5316) x5315)
+(or (not x5316) x4927)
+(or (not x5316) x5188)
+(or (not x5316) x4790)
+(or (not x5189) (not x4790) x5317)
+(or (not x5317) x5189)
+(or (not x5317) x4790)
+(or x5318 (not x5317))
+(or x5318 (not x5316))
+(or x5317 x5316 (not x5318))
+(or (not x5318) (not x4790) x5319)
+(or (not x5319) x5318)
+(or (not x5319) x4790)
+(or (not x5320) (not x5321) x5322)
+(or (not x5322) x5320)
+(or (not x5322) x5321)
+(or x5320 (not x5323) (not x5324) x5325)
+(or (not x5325) (not x5320))
+(or (not x5325) x5323)
+(or (not x5325) x5324)
+(or x5326 (not x5325))
+(or x5326 (not x5322))
+(or x5325 x5322 (not x5326))
+(or (not x5327) (not x4790) (not x5328) (not x5329) (not x5330) (not x5326) x5331)
+(or (not x5331) x5327)
+(or (not x5331) x4790)
+(or (not x5331) x5328)
+(or (not x5331) x5329)
+(or (not x5331) x5330)
+(or (not x5331) x5326)
+(or x5324 x5332)
+(or x5324 x4790)
+(or x5324 (not x4772))
+(or x5324 (not x4746))
+(or x5324 (not x5333))
+(or x5324 (not x5334))
+(or x5324 (not x5335))
+(or x5324 (not x5336))
+(or x5324 (not x5337))
+(or (not x5332) (not x4790) x4772 x4746 x5333 x5334 x5335 x5336 x5337 (not x5324))
+(or x5323 (not x4771))
+(or x5323 x5338)
+(or x5323 x4790)
+(or x5323 (not x4746))
+(or x5323 (not x5339))
+(or x5323 x5340)
+(or x5323 x4790)
+(or x5323 (not x5341))
+(or x5323 (not x5342))
+(or x5323 (not x5334))
+(or x5323 (not x5335))
+(or x5323 (not x5336))
+(or x4771 (not x5338) (not x4790) x4746 x5339 (not x5340) (not x4790) x5341 x5342 x5334 x5335 x5336 (not x5323))
+(or x5342 (not x5323) (not x5324) x5343)
+(or (not x5343) (not x5342))
+(or (not x5343) x5323)
+(or (not x5343) x5324)
+(or x5344 (not x5343))
+(or x5344 (not x5342))
+(or x5343 x5342 (not x5344))
+(or (not x5345) (not x5340) (not x4790) (not x5329) (not x5344) x5346)
+(or (not x5346) x5345)
+(or (not x5346) x5340)
+(or (not x5346) x4790)
+(or (not x5346) x5329)
+(or (not x5346) x5344)
+(or x5347 (not x5348))
+(or x5347 (not x5341))
+(or x5347 (not x5346))
+(or x5347 (not x5331))
+(or x5348 x5341 x5346 x5331 (not x5347))
+(or (not x5349) (not x4790) (not x5347) x5350)
+(or (not x5350) x5349)
+(or (not x5350) x4790)
+(or (not x5350) x5347)
+(or x5351 (not x5350))
+(or x5351 x4790)
+(or x5350 (not x4790) (not x5351))
+(or x5352 x5199)
+(or x5352 x4790)
+(or (not x5199) (not x4790) (not x5352))
+(or (not x5352) (not x4928) (not x5198) (not x4790) x5353)
+(or (not x5353) x5352)
+(or (not x5353) x4928)
+(or (not x5353) x5198)
+(or (not x5353) x4790)
+(or (not x5199) (not x4790) x5354)
+(or (not x5354) x5199)
+(or (not x5354) x4790)
+(or x5355 (not x5354))
+(or x5355 (not x5353))
+(or x5354 x5353 (not x5355))
+(or (not x5355) (not x4790) x5356)
+(or (not x5356) x5355)
+(or (not x5356) x4790)
+(or x5357 x5327)
+(or x5357 x4790)
+(or x5357 (not x5358))
+(or x5357 (not x5341))
+(or x5357 (not x5359))
+(or x5357 (not x5360))
+(or x5357 x4790)
+(or x5357 (not x5320))
+(or (not x5327) (not x4790) x5358 x5341 x5359 x5360 (not x4790) x5320 (not x5357))
+(or x5361 (not x5339))
+(or x5361 (not x5358))
+(or x5361 (not x5362))
+(or x5339 x5358 x5362 (not x5361))
+(or x5363 (not x5339))
+(or x5363 x5340)
+(or x5363 x4790)
+(or x5363 (not x5341))
+(or x5363 x5342)
+(or x5363 (not x4795))
+(or x5339 (not x5340) (not x4790) x5341 (not x5342) x4795 (not x5363))
+(or (not x5363) (not x5361) (not x5357) x5364)
+(or (not x5364) x5363)
+(or (not x5364) x5361)
+(or (not x5364) x5357)
+(or x5365 (not x4795))
+(or x5365 (not x5364))
+(or x4795 x5364 (not x5365))
+(or (not x5349) (not x4790) (not x5365) (not x5349) (not x4790) x5366)
+(or (not x5366) x5349)
+(or (not x5366) x4790)
+(or (not x5366) x5365)
+(or (not x5366) x5349)
+(or (not x5366) x4790)
+(or (not x4996) (not x4997) (not x4998) x4999 (not x5000) x5001 (not x5002) (not x5003) (not x5004) x5005 (not x5006) (not x5007) x5150)
+(or (not x5150) x4996)
+(or (not x5150) x4997)
+(or (not x5150) x4998)
+(or (not x5150) (not x4999))
+(or (not x5150) x5000)
+(or (not x5150) (not x5001))
+(or (not x5150) x5002)
+(or (not x5150) x5003)
+(or (not x5150) x5004)
+(or (not x5150) (not x5005))
+(or (not x5150) x5006)
+(or (not x5150) x5007)
+(or x5132 x5117)
+(or x5132 x4790)
+(or x5132 (not x5130))
+(or (not x5117) (not x4790) x5130 (not x5132))
+(or x5367 x5117)
+(or x5367 x4790)
+(or x5367 (not x5130))
+(or x5367 (not x5368))
+(or x5367 (not x5369))
+(or (not x5117) (not x4790) x5130 x5368 x5369 (not x5367))
+(or x5126 (not x4994))
+(or x5126 x4790)
+(or x5126 (not x5370))
+(or x5126 x4790)
+(or x4994 (not x4790) x5370 (not x4790) (not x5126))
+(or (not x5126) x4994 (not x4790) x5371)
+(or (not x5371) x5126)
+(or (not x5371) (not x4994))
+(or (not x5371) x4790)
+(or x5372 (not x5373))
+(or x5372 x5123)
+(or x5372 x4790)
+(or x5372 (not x5368))
+(or x5372 (not x5371))
+(or x5373 (not x5123) (not x4790) x5368 x5371 (not x5372))
+(or (not x5372) (not x5367) x4995)
+(or (not x4995) x5372)
+(or (not x4995) x5367)
+(or x5374 x5145)
+(or x5374 (not x5146))
+(or x5374 (not x5007))
+(or x5374 x5006)
+(or (not x5145) x5146 x5007 (not x5006) (not x5374))
+(or (not x5375) (not x5374) x5376)
+(or (not x5376) x5375)
+(or (not x5376) x5374)
+(or x5005 (not x5140) x5377)
+(or (not x5377) (not x5005))
+(or (not x5377) x5140)
+(or (not x5005) (not x5142) x5378)
+(or (not x5378) x5005)
+(or (not x5378) x5142)
+(or x5379 (not x5378))
+(or x5379 (not x5377))
+(or x5378 x5377 (not x5379))
+(or x5375 x5145)
+(or x5375 (not x5146))
+(or x5375 (not x5007))
+(or x5375 (not x5006))
+(or (not x5145) x5146 x5007 x5006 (not x5375))
+(or (not x5145) x5146 x5007 (not x5006) x5138)
+(or (not x5138) x5145)
+(or (not x5138) (not x5146))
+(or (not x5138) (not x5007))
+(or (not x5138) x5006)
+(or (not x5145) x5146 x5007 (not x5006) (not x5375) (not x5379) x5380)
+(or (not x5380) x5145)
+(or (not x5380) (not x5146))
+(or (not x5380) (not x5007))
+(or (not x5380) x5006)
+(or (not x5380) x5375)
+(or (not x5380) x5379)
+(or (not x5145) x5146 x5007 x5006 x5137)
+(or (not x5137) x5145)
+(or (not x5137) (not x5146))
+(or (not x5137) (not x5007))
+(or (not x5137) (not x5006))
+(or (not x5145) x5146 x5007 x5006 (not x5148) x5381)
+(or (not x5381) x5145)
+(or (not x5381) (not x5146))
+(or (not x5381) (not x5007))
+(or (not x5381) (not x5006))
+(or (not x5381) x5148)
+(or x5382 (not x5381))
+(or x5382 (not x5380))
+(or x5382 (not x5376))
+(or x5381 x5380 x5376 (not x5382))
+(or x5122 x4996)
+(or x5122 x4997)
+(or x5122 x4998)
+(or x5122 (not x4999))
+(or x5122 x5000)
+(or x5122 (not x5001))
+(or x5122 x5002)
+(or x5122 x5003)
+(or x5122 x5004)
+(or x5122 (not x5005))
+(or x5122 x5006)
+(or x5122 x5007)
+(or (not x4996) (not x4997) (not x4998) x4999 (not x5000) x5001 (not x5002) (not x5003) (not x5004) x5005 (not x5006) (not x5007) (not x5122))
+(or x5111 (not x4994))
+(or x5111 x4790)
+(or x4994 (not x4790) (not x5111))
+(or x5153 (not x5383))
+(or x5153 (not x4994))
+(or x5153 x4790)
+(or x5383 x4994 (not x4790) (not x5153))
+(or (not x5125) (not x5123) (not x4790) (not x5119) (not x5153) x5384)
+(or (not x5384) x5125)
+(or (not x5384) x5123)
+(or (not x5384) x4790)
+(or (not x5384) x5119)
+(or (not x5384) x5153)
+(or x5013 (not x5384))
+(or x5013 (not x5385))
+(or x5384 x5385 (not x5013))
+(or (not x5013) (not x5122) (not x5382) x5386)
+(or (not x5386) x5013)
+(or (not x5386) x5122)
+(or (not x5386) x5382)
+(or x5387 (not x5386))
+(or x5387 (not x4995))
+(or x5387 (not x5150))
+(or x5386 x4995 x5150 (not x5387))
+(or x5120 (not x5373))
+(or x5120 x5123)
+(or x5120 x4790)
+(or x5373 (not x5123) (not x4790) (not x5120))
+(or (not x5117) (not x4790) (not x5118) (not x5119) (not x5120) x5385)
+(or (not x5385) x5117)
+(or (not x5385) x4790)
+(or (not x5385) x5118)
+(or (not x5385) x5119)
+(or (not x5385) x5120)
+(or (not x5117) (not x4790) (not x5118) (not x5119) (not x5120) (not x5387) x5388)
+(or (not x5388) x5117)
+(or (not x5388) x4790)
+(or (not x5388) x5118)
+(or (not x5388) x5119)
+(or (not x5388) x5120)
+(or (not x5388) x5387)
+(or x4994 (not x4790) x5370 (not x4790) x5383)
+(or (not x5383) (not x4994))
+(or (not x5383) x4790)
+(or (not x5383) (not x5370))
+(or (not x5383) x4790)
+(or (not x5117) (not x4790) x5373)
+(or (not x5373) x5117)
+(or (not x5373) x4790)
+(or x5119 (not x5373))
+(or x5119 (not x5130))
+(or x5373 x5130 (not x5119))
+(or (not x5123) (not x4790) x5130)
+(or (not x5130) x5123)
+(or (not x5130) x4790)
+(or (not x5125) (not x5123) (not x4790) x5369)
+(or (not x5369) x5125)
+(or (not x5369) x5123)
+(or (not x5369) x4790)
+(or (not x5125) (not x5123) (not x4790) (not x5119) x4994 (not x4790) x5370 (not x4790) x5389)
+(or (not x5389) x5125)
+(or (not x5389) x5123)
+(or (not x5389) x4790)
+(or (not x5389) x5119)
+(or (not x5389) (not x4994))
+(or (not x5389) x4790)
+(or (not x5389) (not x5370))
+(or (not x5389) x4790)
+(or x5157 (not x5110))
+(or x5157 (not x4795))
+(or x5110 x4795 (not x5157))
+(or x5118 x5123)
+(or x5118 x4790)
+(or (not x5123) (not x4790) (not x5118))
+(or x5125 x5117)
+(or x5125 x4790)
+(or (not x5117) (not x4790) (not x5125))
+(or (not x5125) (not x5118) x5368)
+(or (not x5368) x5125)
+(or (not x5368) x5118)
+(or (not x5125) (not x5118) (not x5157) x5390)
+(or (not x5390) x5125)
+(or (not x5390) x5118)
+(or (not x5390) x5157)
+(or x5391 (not x5390))
+(or x5391 (not x5389))
+(or x5391 (not x5388))
+(or x5390 x5389 x5388 (not x5391))
+(or (not x174) (not x5391) x5392)
+(or (not x5392) x174)
+(or (not x5392) x5391)
+(or x5393 (not x5392))
+(or x5393 (not x5110))
+(or x5392 x5110 (not x5393))
+(or (not x5113) (not x5393) x5394)
+(or (not x5394) x5113)
+(or (not x5394) x5393)
+(or x5395 (not x5394))
+(or x5395 (not x5366))
+(or x5394 x5366 (not x5395))
+(or (not x5395) (not x4790) x5396)
+(or (not x5396) x5395)
+(or (not x5396) x4790)
+(or (not x4905) (not x4790) x5162)
+(or (not x5162) x4905)
+(or (not x5162) x4790)
+(or (not x5397) (not x4983) (not x5398) x5399)
+(or (not x5399) x5397)
+(or (not x5399) x4983)
+(or (not x5399) x5398)
+(or (not x4913) (not x4790) (not x4925) (not x4926) (not x4927) (not x4928) (not x5400) x5401)
+(or (not x5401) x4913)
+(or (not x5401) x4790)
+(or (not x5401) x4925)
+(or (not x5401) x4926)
+(or (not x5401) x4927)
+(or (not x5401) x4928)
+(or (not x5401) x5400)
+(or x5402 (not x5401))
+(or x5402 (not x5399))
+(or x5401 x5399 (not x5402))
+(or (not x5402) (not x4905) (not x4790) x5274)
+(or (not x5274) x5402)
+(or (not x5274) x4905)
+(or (not x5274) x4790)
+(or (not x4935) (not x4790) x5169)
+(or (not x5169) x4935)
+(or (not x5169) x4790)
+(or (not x5397) (not x4925) (not x4926) (not x4927) (not x4928) x5403)
+(or (not x5403) x5397)
+(or (not x5403) x4925)
+(or (not x5403) x4926)
+(or (not x5403) x4927)
+(or (not x5403) x4928)
+(or (not x4913) (not x4790) (not x4925) (not x4926) (not x4927) (not x4928) (not x4912) (not x4790) x5404)
+(or (not x5404) x4913)
+(or (not x5404) x4790)
+(or (not x5404) x4925)
+(or (not x5404) x4926)
+(or (not x5404) x4927)
+(or (not x5404) x4928)
+(or (not x5404) x4912)
+(or (not x5404) x4790)
+(or x4983 (not x5404))
+(or x4983 (not x5403))
+(or x5404 x5403 (not x4983))
+(or (not x4983) (not x4978) (not x4790) (not x4935) (not x4790) x5273)
+(or (not x5273) x4983)
+(or (not x5273) x4978)
+(or (not x5273) x4790)
+(or (not x5273) x4935)
+(or (not x5273) x4790)
+(or x5405 (not x5273))
+(or x5405 (not x5274))
+(or x5273 x5274 (not x5405))
+(or x5406 (not x5407))
+(or x5406 (not x5408))
+(or x5406 (not x5407))
+(or x5407 x5408 x5407 (not x5406))
+(or (not x5409) (not x4912) (not x4790) x5407)
+(or (not x5407) x5409)
+(or (not x5407) x4912)
+(or (not x5407) x4790)
+(or (not x4978) (not x4790) x4980)
+(or (not x4980) x4978)
+(or (not x4980) x4790)
+(or (not x4925) (not x4926) (not x4927) (not x4928) (not x4912) (not x4790) (not x4978) (not x4790) x5408)
+(or (not x5408) x4925)
+(or (not x5408) x4926)
+(or (not x5408) x4927)
+(or (not x5408) x4928)
+(or (not x5408) x4912)
+(or (not x5408) x4790)
+(or (not x5408) x4978)
+(or (not x5408) x4790)
+(or x5410 (not x5408))
+(or x5410 (not x5407))
+(or x5408 x5407 (not x5410))
+(or (not x5411) (not x5410) (not x5406) (not x5095) (not x4790) x5412)
+(or (not x5412) x5411)
+(or (not x5412) x5410)
+(or (not x5412) x5406)
+(or (not x5412) x5095)
+(or (not x5412) x4790)
+(or x5398 x4978)
+(or x5398 x4790)
+(or (not x4978) (not x4790) (not x5398))
+(or x4930 (not x5264))
+(or x4930 (not x5265))
+(or x4930 (not x5266))
+(or x4930 (not x5267))
+(or x5264 x5265 x5266 x5267 (not x4930))
+(or x5409 (not x5264))
+(or x5409 (not x5265))
+(or x5409 (not x5266))
+(or x5409 (not x5267))
+(or x5409 x4912)
+(or x5409 x4790)
+(or x5264 x5265 x5266 x5267 (not x4912) (not x4790) (not x5409))
+(or x5413 (not x5264))
+(or x5413 (not x5265))
+(or x5413 (not x5266))
+(or x5413 (not x5267))
+(or x5413 x4912)
+(or x5413 x4790)
+(or x5413 x4978)
+(or x5413 x4790)
+(or x5264 x5265 x5266 x5267 (not x4912) (not x4790) (not x4978) (not x4790) (not x5413))
+(or x5400 x4912)
+(or x5400 x4790)
+(or (not x4912) (not x4790) (not x5400))
+(or (not x4912) (not x4790) x4920)
+(or (not x4920) x4912)
+(or (not x4920) x4790)
+(or (not x4925) (not x4926) (not x4927) (not x4928) (not x4912) (not x4790) x5414)
+(or (not x5414) x4925)
+(or (not x5414) x4926)
+(or (not x5414) x4927)
+(or (not x5414) x4928)
+(or (not x5414) x4912)
+(or (not x5414) x4790)
+(or x5411 (not x5414))
+(or x5411 x4912)
+(or x5411 x4790)
+(or x5414 (not x4912) (not x4790) (not x5411))
+(or (not x5411) (not x5413) (not x5411) (not x5101) (not x4790) x5415)
+(or (not x5415) x5411)
+(or (not x5415) x5413)
+(or (not x5415) x5411)
+(or (not x5415) x5101)
+(or (not x5415) x4790)
+(or x5416 (not x5415))
+(or x5416 (not x5412))
+(or x5415 x5412 (not x5416))
+(or (not x4926) (not x4928) (not x4927) (not x4926) (not x5416) (not x5405) x5417)
+(or (not x5417) x4926)
+(or (not x5417) x4928)
+(or (not x5417) x4927)
+(or (not x5417) x4926)
+(or (not x5417) x5416)
+(or (not x5417) x5405)
+(or (not x4942) (not x4790) x5175)
+(or (not x5175) x4942)
+(or (not x5175) x4790)
+(or (not x5397) (not x5024) (not x5418) x5419)
+(or (not x5419) x5397)
+(or (not x5419) x5024)
+(or (not x5419) x5418)
+(or (not x4913) (not x4790) (not x4925) (not x4961) (not x4790) x4962 (not x4790) (not x4928) (not x4963) (not x4927) (not x4928) (not x5420) x5421)
+(or (not x5421) x4913)
+(or (not x5421) x4790)
+(or (not x5421) x4925)
+(or (not x5421) x4961)
+(or (not x5421) x4790)
+(or (not x5421) (not x4962))
+(or (not x5421) x4790)
+(or (not x5421) x4928)
+(or (not x5421) x4963)
+(or (not x5421) x4927)
+(or (not x5421) x4928)
+(or (not x5421) x5420)
+(or x5422 (not x5421))
+(or x5422 (not x5419))
+(or x5421 x5419 (not x5422))
+(or (not x5422) (not x4942) (not x4790) x5291)
+(or (not x5291) x5422)
+(or (not x5291) x4942)
+(or (not x5291) x4790)
+(or (not x4970) (not x4790) x5182)
+(or (not x5182) x4970)
+(or (not x5182) x4790)
+(or x5397 x4913)
+(or x5397 x4790)
+(or (not x4913) (not x4790) (not x5397))
+(or (not x5397) (not x4925) (not x4961) (not x4790) x4962 (not x4790) (not x4928) (not x4963) (not x4927) (not x4928) x5423)
+(or (not x5423) x5397)
+(or (not x5423) x4925)
+(or (not x5423) x4961)
+(or (not x5423) x4790)
+(or (not x5423) (not x4962))
+(or (not x5423) x4790)
+(or (not x5423) x4928)
+(or (not x5423) x4963)
+(or (not x5423) x4927)
+(or (not x5423) x4928)
+(or (not x4913) (not x4790) x4976)
+(or (not x4976) x4913)
+(or (not x4976) x4790)
+(or (not x4913) (not x4790) (not x4925) (not x4961) (not x4790) x4962 (not x4790) (not x4928) (not x4963) (not x4927) (not x4928) (not x4949) (not x4790) x5424)
+(or (not x5424) x4913)
+(or (not x5424) x4790)
+(or (not x5424) x4925)
+(or (not x5424) x4961)
+(or (not x5424) x4790)
+(or (not x5424) (not x4962))
+(or (not x5424) x4790)
+(or (not x5424) x4928)
+(or (not x5424) x4963)
+(or (not x5424) x4927)
+(or (not x5424) x4928)
+(or (not x5424) x4949)
+(or (not x5424) x4790)
+(or x5024 (not x5424))
+(or x5024 (not x5423))
+(or x5424 x5423 (not x5024))
+(or (not x5024) (not x5019) (not x4790) (not x4970) (not x4790) x5290)
+(or (not x5290) x5024)
+(or (not x5290) x5019)
+(or (not x5290) x4790)
+(or (not x5290) x4970)
+(or (not x5290) x4790)
+(or x5425 (not x5290))
+(or x5425 (not x5291))
+(or x5290 x5291 (not x5425))
+(or (not x5426) (not x5427) (not x5428) (not x5032) (not x4790) x5429)
+(or (not x5429) x5426)
+(or (not x5429) x5427)
+(or (not x5429) x5428)
+(or (not x5429) x5032)
+(or (not x5429) x4790)
+(or (not x5426) (not x5430) (not x5426) (not x5038) (not x4790) x5431)
+(or (not x5431) x5426)
+(or (not x5431) x5430)
+(or (not x5431) x5426)
+(or (not x5431) x5038)
+(or (not x5431) x4790)
+(or x5432 (not x5431))
+(or x5432 (not x5429))
+(or x5431 x5429 (not x5432))
+(or (not x4928) (not x4927) (not x4961) (not x4790) x4962 (not x4790) (not x4928) (not x4963) (not x5432) x5433)
+(or (not x5433) x4928)
+(or (not x5433) x4927)
+(or (not x5433) x4961)
+(or (not x5433) x4790)
+(or (not x5433) (not x4962))
+(or (not x5433) x4790)
+(or (not x5433) x4928)
+(or (not x5433) x4963)
+(or (not x5433) x5432)
+(or (not x5426) (not x5427) (not x5428) (not x5044) (not x4790) x5434)
+(or (not x5434) x5426)
+(or (not x5434) x5427)
+(or (not x5434) x5428)
+(or (not x5434) x5044)
+(or (not x5434) x4790)
+(or (not x5426) (not x5430) (not x5426) (not x5049) (not x4790) x5435)
+(or (not x5435) x5426)
+(or (not x5435) x5430)
+(or (not x5435) x5426)
+(or (not x5435) x5049)
+(or (not x5435) x4790)
+(or x5436 (not x5435))
+(or x5436 (not x5434))
+(or x5435 x5434 (not x5436))
+(or (not x4928) (not x4927) (not x4961) (not x4790) x4962 (not x4790) (not x4928) (not x4963) (not x5436) x5437)
+(or (not x5437) x4928)
+(or (not x5437) x4927)
+(or (not x5437) x4961)
+(or (not x5437) x4790)
+(or (not x5437) (not x4962))
+(or (not x5437) x4790)
+(or (not x5437) x4928)
+(or (not x5437) x4963)
+(or (not x5437) x5436)
+(or (not x5426) (not x5427) (not x5428) (not x5054) (not x4790) x5438)
+(or (not x5438) x5426)
+(or (not x5438) x5427)
+(or (not x5438) x5428)
+(or (not x5438) x5054)
+(or (not x5438) x4790)
+(or (not x5426) (not x5430) (not x5426) (not x5059) (not x4790) x5439)
+(or (not x5439) x5426)
+(or (not x5439) x5430)
+(or (not x5439) x5426)
+(or (not x5439) x5059)
+(or (not x5439) x4790)
+(or x5440 (not x5439))
+(or x5440 (not x5438))
+(or x5439 x5438 (not x5440))
+(or (not x4928) (not x4927) (not x4961) (not x4790) x4962 (not x4790) (not x4928) (not x4963) (not x5440) x5441)
+(or (not x5441) x4928)
+(or (not x5441) x4927)
+(or (not x5441) x4961)
+(or (not x5441) x4790)
+(or (not x5441) (not x4962))
+(or (not x5441) x4790)
+(or (not x5441) x4928)
+(or (not x5441) x4963)
+(or (not x5441) x5440)
+(or (not x5426) (not x5427) (not x5428) (not x5064) (not x4790) x5442)
+(or (not x5442) x5426)
+(or (not x5442) x5427)
+(or (not x5442) x5428)
+(or (not x5442) x5064)
+(or (not x5442) x4790)
+(or (not x5426) (not x5430) (not x5426) (not x5069) (not x4790) x5443)
+(or (not x5443) x5426)
+(or (not x5443) x5430)
+(or (not x5443) x5426)
+(or (not x5443) x5069)
+(or (not x5443) x4790)
+(or x5444 (not x5443))
+(or x5444 (not x5442))
+(or x5443 x5442 (not x5444))
+(or (not x4928) (not x4927) (not x4961) (not x4790) x4962 (not x4790) (not x4928) (not x4963) (not x5444) x5445)
+(or (not x5445) x4928)
+(or (not x5445) x4927)
+(or (not x5445) x4961)
+(or (not x5445) x4790)
+(or (not x5445) (not x4962))
+(or (not x5445) x4790)
+(or (not x5445) x4928)
+(or (not x5445) x4963)
+(or (not x5445) x5444)
+(or (not x5426) (not x5427) (not x5428) (not x5074) (not x4790) x5446)
+(or (not x5446) x5426)
+(or (not x5446) x5427)
+(or (not x5446) x5428)
+(or (not x5446) x5074)
+(or (not x5446) x4790)
+(or (not x5426) (not x5430) (not x5426) (not x5079) (not x4790) x5447)
+(or (not x5447) x5426)
+(or (not x5447) x5430)
+(or (not x5447) x5426)
+(or (not x5447) x5079)
+(or (not x5447) x4790)
+(or x5448 (not x5447))
+(or x5448 (not x5446))
+(or x5447 x5446 (not x5448))
+(or (not x4928) (not x4927) (not x4961) (not x4790) x4962 (not x4790) (not x4928) (not x4963) (not x5448) x5449)
+(or (not x5449) x4928)
+(or (not x5449) x4927)
+(or (not x5449) x4961)
+(or (not x5449) x4790)
+(or (not x5449) (not x4962))
+(or (not x5449) x4790)
+(or (not x5449) x4928)
+(or (not x5449) x4963)
+(or (not x5449) x5448)
+(or x5428 (not x5450))
+(or x5428 (not x5451))
+(or x5428 (not x5450))
+(or x5450 x5451 x5450 (not x5428))
+(or (not x5452) (not x4949) (not x4790) x5450)
+(or (not x5450) x5452)
+(or (not x5450) x4949)
+(or (not x5450) x4790)
+(or (not x5019) (not x4790) x5021)
+(or (not x5021) x5019)
+(or (not x5021) x4790)
+(or (not x4925) (not x4961) (not x4790) x4962 (not x4790) (not x4928) (not x4963) (not x4927) (not x4928) (not x4949) (not x4790) (not x5019) (not x4790) x5451)
+(or (not x5451) x4925)
+(or (not x5451) x4961)
+(or (not x5451) x4790)
+(or (not x5451) (not x4962))
+(or (not x5451) x4790)
+(or (not x5451) x4928)
+(or (not x5451) x4963)
+(or (not x5451) x4927)
+(or (not x5451) x4928)
+(or (not x5451) x4949)
+(or (not x5451) x4790)
+(or (not x5451) x5019)
+(or (not x5451) x4790)
+(or x5427 (not x5451))
+(or x5427 (not x5450))
+(or x5451 x5450 (not x5427))
+(or (not x5426) (not x5427) (not x5428) (not x5084) (not x4790) x5453)
+(or (not x5453) x5426)
+(or (not x5453) x5427)
+(or (not x5453) x5428)
+(or (not x5453) x5084)
+(or (not x5453) x4790)
+(or x5418 x5019)
+(or x5418 x4790)
+(or (not x5019) (not x4790) (not x5418))
+(or x5217 x4961)
+(or x5217 x4790)
+(or x5217 (not x4962))
+(or x5217 x4790)
+(or (not x4961) (not x4790) x4962 (not x4790) (not x5217))
+(or x4926 x4961)
+(or x4926 x4790)
+(or x4926 (not x4962))
+(or x4926 x4790)
+(or x4926 (not x5267))
+(or x4926 (not x5285))
+(or (not x4961) (not x4790) x4962 (not x4790) x5267 x5285 (not x4926))
+(or (not x5454) (not x4790) (not x5455) (not x4790) (not x5456) (not x4790) x5264)
+(or (not x5264) x5454)
+(or (not x5264) x4790)
+(or (not x5264) x5455)
+(or (not x5264) x4790)
+(or (not x5264) x5456)
+(or (not x5264) x4790)
+(or x4965 (not x5264))
+(or x4965 x4961)
+(or x4965 x4790)
+(or x4965 (not x4962))
+(or x4965 x4790)
+(or x4965 (not x5267))
+(or x4965 (not x5285))
+(or x4965 (not x5266))
+(or x4965 (not x5267))
+(or x5264 (not x4961) (not x4790) x4962 (not x4790) x5267 x5285 x5266 x5267 (not x4965))
+(or x5452 (not x5264))
+(or x5452 x4961)
+(or x5452 x4790)
+(or x5452 (not x4962))
+(or x5452 x4790)
+(or x5452 (not x5267))
+(or x5452 (not x5285))
+(or x5452 (not x5266))
+(or x5452 (not x5267))
+(or x5452 x4949)
+(or x5452 x4790)
+(or x5264 (not x4961) (not x4790) x4962 (not x4790) x5267 x5285 x5266 x5267 (not x4949) (not x4790) (not x5452))
+(or x5430 (not x5264))
+(or x5430 x4961)
+(or x5430 x4790)
+(or x5430 (not x4962))
+(or x5430 x4790)
+(or x5430 (not x5267))
+(or x5430 (not x5285))
+(or x5430 (not x5266))
+(or x5430 (not x5267))
+(or x5430 x4949)
+(or x5430 x4790)
+(or x5430 x5019)
+(or x5430 x4790)
+(or x5264 (not x4961) (not x4790) x4962 (not x4790) x5267 x5285 x5266 x5267 (not x4949) (not x4790) (not x5019) (not x4790) (not x5430))
+(or x5420 x4949)
+(or x5420 x4790)
+(or (not x4949) (not x4790) (not x5420))
+(or (not x4949) (not x4790) x4956)
+(or (not x4956) x4949)
+(or (not x4956) x4790)
+(or x4925 x5454)
+(or x4925 x4790)
+(or x4925 x5455)
+(or x4925 x4790)
+(or x4925 x5456)
+(or x4925 x4790)
+(or (not x5454) (not x4790) (not x5455) (not x4790) (not x5456) (not x4790) (not x4925))
+(or (not x4925) (not x4961) (not x4790) x4962 (not x4790) (not x4928) (not x4963) (not x4927) (not x4928) (not x4949) (not x4790) x5457)
+(or (not x5457) x4925)
+(or (not x5457) x4961)
+(or (not x5457) x4790)
+(or (not x5457) (not x4962))
+(or (not x5457) x4790)
+(or (not x5457) x4928)
+(or (not x5457) x4963)
+(or (not x5457) x4927)
+(or (not x5457) x4928)
+(or (not x5457) x4949)
+(or (not x5457) x4790)
+(or x5426 (not x5457))
+(or x5426 x4949)
+(or x5426 x4790)
+(or x5457 (not x4949) (not x4790) (not x5426))
+(or (not x5426) (not x5430) (not x5426) (not x5089) (not x4790) x5458)
+(or (not x5458) x5426)
+(or (not x5458) x5430)
+(or (not x5458) x5426)
+(or (not x5458) x5089)
+(or (not x5458) x4790)
+(or x5459 (not x5458))
+(or x5459 (not x5453))
+(or x5458 x5453 (not x5459))
+(or (not x4928) (not x4927) (not x4961) (not x4790) x4962 (not x4790) (not x4928) (not x4963) (not x5459) x5460)
+(or (not x5460) x4928)
+(or (not x5460) x4927)
+(or (not x5460) x4961)
+(or (not x5460) x4790)
+(or (not x5460) (not x4962))
+(or (not x5460) x4790)
+(or (not x5460) x4928)
+(or (not x5460) x4963)
+(or (not x5460) x5459)
+(or x5461 (not x5460))
+(or x5461 (not x5449))
+(or x5461 (not x5445))
+(or x5461 (not x5441))
+(or x5461 (not x5437))
+(or x5461 (not x5433))
+(or x5460 x5449 x5445 x5441 x5437 x5433 (not x5461))
+(or (not x4961) (not x4790) x4962 (not x4790) (not x4928) (not x4963) x5265)
+(or (not x5265) x4961)
+(or (not x5265) x4790)
+(or (not x5265) (not x4962))
+(or (not x5265) x4790)
+(or (not x5265) x4928)
+(or (not x5265) x4963)
+(or (not x4961) (not x4790) x4962 (not x4790) (not x4928) (not x4963) (not x5461) (not x5425) x5462)
+(or (not x5462) x4961)
+(or (not x5462) x4790)
+(or (not x5462) (not x4962))
+(or (not x5462) x4790)
+(or (not x5462) x4928)
+(or (not x5462) x4963)
+(or (not x5462) x5461)
+(or (not x5462) x5425)
+(or x5463 (not x5462))
+(or x5463 (not x5417))
+(or x5462 x5417 (not x5463))
+(or x4963 (not x5464))
+(or x4963 (not x5465))
+(or x5464 x5465 (not x4963))
+(or x4927 (not x5464))
+(or x4927 (not x5465))
+(or x4927 (not x5267))
+(or x5464 x5465 x5267 (not x4927))
+(or (not x4927) (not x5463) x5466)
+(or (not x5466) x4927)
+(or (not x5466) x5463)
+(or (not x5188) (not x4790) x5247)
+(or (not x5247) x5188)
+(or (not x5247) x4790)
+(or (not x5239) (not x5210) x5285)
+(or (not x5285) x5239)
+(or (not x5285) x5210)
+(or (not x5239) (not x5210) (not x4928) x5266)
+(or (not x5266) x5239)
+(or (not x5266) x5210)
+(or (not x5266) x4928)
+(or (not x5239) (not x5210) (not x4928) (not x5188) (not x4790) x5467)
+(or (not x5467) x5239)
+(or (not x5467) x5210)
+(or (not x5467) x4928)
+(or (not x5467) x5188)
+(or (not x5467) x4790)
+(or x5468 (not x5467))
+(or x5468 (not x5466))
+(or x5467 x5466 (not x5468))
+(or x5210 (not x4962))
+(or x5210 x4790)
+(or x4962 (not x4790) (not x5210))
+(or (not x4961) (not x4790) x5464)
+(or (not x5464) x4961)
+(or (not x5464) x4790)
+(or x4928 (not x5464))
+(or x4928 (not x4962))
+(or x4928 x4790)
+(or x5464 x4962 (not x4790) (not x4928))
+(or (not x4928) (not x5468) x5469)
+(or (not x5469) x4928)
+(or (not x5469) x5468)
+(or x4962 (not x4790) x5465)
+(or (not x5465) (not x4962))
+(or (not x5465) x4790)
+(or x5239 x4961)
+(or x5239 x4790)
+(or (not x4961) (not x4790) (not x5239))
+(or (not x5239) x4962 (not x4790) x5267)
+(or (not x5267) x5239)
+(or (not x5267) (not x4962))
+(or (not x5267) x4790)
+(or (not x5239) x4962 (not x4790) (not x5198) (not x4790) x5470)
+(or (not x5470) x5239)
+(or (not x5470) (not x4962))
+(or (not x5470) x4790)
+(or (not x5470) x5198)
+(or (not x5470) x4790)
+(or x5471 (not x5470))
+(or x5471 (not x5469))
+(or x5470 x5469 (not x5471))
+(or (not x5471) (not x4790) x5472)
+(or (not x5472) x5471)
+(or (not x5472) x4790)
+(or (not x5473) (not x5474) (not x5454) (not x4790) x5475)
+(or (not x5475) x5473)
+(or (not x5475) x5474)
+(or (not x5475) x5454)
+(or (not x5475) x4790)
+(or (not x5476) (not x5477) x5478)
+(or (not x5478) x5476)
+(or (not x5478) x5477)
+(or x5479 (not x5478))
+(or x5479 (not x5475))
+(or x5478 x5475 (not x5479))
+(or (not x5480) (not x5479) x5481)
+(or (not x5481) x5480)
+(or (not x5481) x5479)
+(or (not x5476) (not x5454) (not x4790) x5482)
+(or (not x5482) x5476)
+(or (not x5482) x5454)
+(or (not x5482) x4790)
+(or (not x5473) (not x5474) (not x5477) x5483)
+(or (not x5483) x5473)
+(or (not x5483) x5474)
+(or (not x5483) x5477)
+(or x5484 (not x5483))
+(or x5484 (not x5482))
+(or x5483 x5482 (not x5484))
+(or (not x5485) (not x4790) (not x5484) x5486)
+(or (not x5486) x5485)
+(or (not x5486) x4790)
+(or (not x5486) x5484)
+(or x5487 (not x5486))
+(or x5487 (not x5481))
+(or x5486 x5481 (not x5487))
+(or (not x5487) (not x4790) x5488)
+(or (not x5488) x5487)
+(or (not x5488) x4790)
+(or (not x5327) (not x4790) (not x5328) (not x5329) (not x5330) (not x5489) (not x5340) (not x4790) x5490)
+(or (not x5490) x5327)
+(or (not x5490) x4790)
+(or (not x5490) x5328)
+(or (not x5490) x5329)
+(or (not x5490) x5330)
+(or (not x5490) x5489)
+(or (not x5490) x5340)
+(or (not x5490) x4790)
+(or (not x5345) (not x5340) (not x4790) (not x5329) (not x5342) (not x5491) (not x5340) (not x4790) x5492)
+(or (not x5492) x5345)
+(or (not x5492) x5340)
+(or (not x5492) x4790)
+(or (not x5492) x5329)
+(or (not x5492) x5342)
+(or (not x5492) x5491)
+(or (not x5492) x5340)
+(or (not x5492) x4790)
+(or (not x5349) (not x4790) x5110)
+(or (not x5110) x5349)
+(or (not x5110) x4790)
+(or (not x5349) (not x4790) (not x174) x5362)
+(or (not x5362) x5349)
+(or (not x5362) x4790)
+(or (not x5362) x174)
+(or x5493 (not x5362))
+(or x5493 (not x5358))
+(or x5362 x5358 (not x5493))
+(or (not x5345) (not x5328) (not x5493) x5494)
+(or (not x5494) x5345)
+(or (not x5494) x5328)
+(or (not x5494) x5493)
+(or (not x5329) (not x5330) (not x5495) (not x5340) (not x4790) x5496)
+(or (not x5496) x5329)
+(or (not x5496) x5330)
+(or (not x5496) x5495)
+(or (not x5496) x5340)
+(or (not x5496) x4790)
+(or x5497 (not x5496))
+(or x5497 (not x5494))
+(or x5497 (not x5492))
+(or x5497 (not x5490))
+(or x5496 x5494 x5492 x5490 (not x5497))
+(or (not x5497) (not x4790) x5498)
+(or (not x5498) x5497)
+(or (not x5498) x4790)
+(or x5321 (not x5360))
+(or x5321 x4790)
+(or x5360 (not x4790) (not x5321))
+(or x5489 (not x5360))
+(or x5489 x4790)
+(or x5489 (not x5320))
+(or x5360 (not x4790) x5320 (not x5489))
+(or (not x5327) (not x4790) (not x5328) (not x5329) (not x5330) (not x5489) (not x5327) (not x4790) x5499)
+(or (not x5499) x5327)
+(or (not x5499) x4790)
+(or (not x5499) x5328)
+(or (not x5499) x5329)
+(or (not x5499) x5330)
+(or (not x5499) x5489)
+(or (not x5499) x5327)
+(or (not x5499) x4790)
+(or x5491 x5342)
+(or x5491 (not x4795))
+(or (not x5342) x4795 (not x5491))
+(or (not x5342) (not x5491) (not x5327) (not x4790) x5500)
+(or (not x5500) x5342)
+(or (not x5500) x5491)
+(or (not x5500) x5327)
+(or (not x5500) x4790)
+(or (not x5342) x4795 x5501)
+(or (not x5501) x5342)
+(or (not x5501) (not x4795))
+(or x5502 x5342)
+(or x5502 (not x5501))
+(or (not x5342) x5501 (not x5502))
+(or (not x5502) x5342 x5503)
+(or (not x5503) x5502)
+(or (not x5503) (not x5342))
+(or x5504 (not x5503))
+(or x5504 (not x5500))
+(or x5503 x5500 (not x5504))
+(or (not x5345) (not x5340) (not x4790) (not x5329) (not x5504) x5505)
+(or (not x5505) x5345)
+(or (not x5505) x5340)
+(or (not x5505) x4790)
+(or (not x5505) x5329)
+(or (not x5505) x5504)
+(or x5113 x5349)
+(or x5113 x4790)
+(or (not x5349) (not x4790) (not x5113))
+(or x5506 x5349)
+(or x5506 x4790)
+(or x5506 (not x4746))
+(or (not x5349) (not x4790) x4746 (not x5506))
+(or (not x5345) (not x5328) (not x5506) (not x5327) (not x4790) x5507)
+(or (not x5507) x5345)
+(or (not x5507) x5328)
+(or (not x5507) x5506)
+(or (not x5507) x5327)
+(or (not x5507) x4790)
+(or (not x5329) (not x5330) (not x5495) (not x5327) (not x4790) x5508)
+(or (not x5508) x5329)
+(or (not x5508) x5330)
+(or (not x5508) x5495)
+(or (not x5508) x5327)
+(or (not x5508) x4790)
+(or x5509 (not x5508))
+(or x5509 (not x5507))
+(or x5509 (not x5505))
+(or x5509 (not x5499))
+(or x5508 x5507 x5505 x5499 (not x5509))
+(or (not x5509) (not x4790) x5510)
+(or (not x5510) x5509)
+(or (not x5510) x4790)
+(or (not x5473) (not x5474) (not x5455) (not x4790) x5511)
+(or (not x5511) x5473)
+(or (not x5511) x5474)
+(or (not x5511) x5455)
+(or (not x5511) x4790)
+(or (not x5476) (not x5512) x5513)
+(or (not x5513) x5476)
+(or (not x5513) x5512)
+(or x5514 (not x5513))
+(or x5514 (not x5511))
+(or x5513 x5511 (not x5514))
+(or (not x5480) (not x5514) x5515)
+(or (not x5515) x5480)
+(or (not x5515) x5514)
+(or (not x5476) (not x5455) (not x4790) x5516)
+(or (not x5516) x5476)
+(or (not x5516) x5455)
+(or (not x5516) x4790)
+(or x5517 x5518 x5477)
+(or x5517 (not x5518) (not x5477))
+(or (not x5517) x5518 (not x5477))
+(or (not x5517) (not x5518) x5477)
+(or (not x5473) (not x5474) (not x5517) x5519)
+(or (not x5519) x5473)
+(or (not x5519) x5474)
+(or (not x5519) x5517)
+(or x5520 (not x5519))
+(or x5520 (not x5516))
+(or x5519 x5516 (not x5520))
+(or (not x5485) (not x4790) (not x5520) x5521)
+(or (not x5521) x5485)
+(or (not x5521) x4790)
+(or (not x5521) x5520)
+(or x5522 (not x5521))
+(or x5522 (not x5515))
+(or x5521 x5515 (not x5522))
+(or (not x5522) (not x4790) x5523)
+(or (not x5523) x5522)
+(or (not x5523) x4790)
+(or (not x5473) (not x5474) (not x5456) (not x4790) x5524)
+(or (not x5524) x5473)
+(or (not x5524) x5474)
+(or (not x5524) x5456)
+(or (not x5524) x4790)
+(or (not x5476) (not x5525) x5526)
+(or (not x5526) x5476)
+(or (not x5526) x5525)
+(or x5527 (not x5526))
+(or x5527 (not x5524))
+(or x5526 x5524 (not x5527))
+(or x5480 x5485)
+(or x5480 x4790)
+(or (not x5485) (not x4790) (not x5480))
+(or (not x5480) (not x5527) x5528)
+(or (not x5528) x5480)
+(or (not x5528) x5527)
+(or (not x5332) (not x4790) (not x167) (not x174) (not x5529) (not x5530) x5531)
+(or (not x5531) x5332)
+(or (not x5531) x4790)
+(or (not x5531) x167)
+(or (not x5531) x174)
+(or (not x5531) x5529)
+(or (not x5531) x5530)
+(or (not x166) (not x5338) (not x4790) (not x174) (not x5345) (not x5340) (not x4790) (not x5329) x5342 x5532)
+(or (not x5532) x166)
+(or (not x5532) x5338)
+(or (not x5532) x4790)
+(or (not x5532) x174)
+(or (not x5532) x5345)
+(or (not x5532) x5340)
+(or (not x5532) x4790)
+(or (not x5532) x5329)
+(or (not x5532) (not x5342))
+(or x5476 (not x5532))
+(or x5476 (not x5531))
+(or x5532 x5531 (not x5476))
+(or (not x5476) (not x5456) (not x4790) x5533)
+(or (not x5533) x5476)
+(or (not x5533) x5456)
+(or (not x5533) x4790)
+(or x5534 x5535 x5536)
+(or x5534 (not x5535) (not x5536))
+(or (not x5534) x5535 (not x5536))
+(or (not x5534) (not x5535) x5536)
+(or x5474 x5332)
+(or x5474 x4790)
+(or x5474 (not x4772))
+(or x5474 (not x4746))
+(or x5474 (not x5333))
+(or x5474 (not x5337))
+(or (not x5332) (not x4790) x4772 x4746 x5333 x5337 (not x5474))
+(or x5473 (not x4771))
+(or x5473 x5338)
+(or x5473 x4790)
+(or x5473 (not x4746))
+(or x5473 (not x5339))
+(or x5473 x5340)
+(or x5473 x4790)
+(or x5473 (not x5341))
+(or x5473 (not x5342))
+(or x4771 (not x5338) (not x4790) x4746 x5339 (not x5340) (not x4790) x5341 x5342 (not x5473))
+(or (not x5473) (not x5474) (not x5534) x5537)
+(or (not x5537) x5473)
+(or (not x5537) x5474)
+(or (not x5537) x5534)
+(or x5538 (not x5537))
+(or x5538 (not x5533))
+(or x5537 x5533 (not x5538))
+(or (not x5485) (not x4790) (not x5538) x5539)
+(or (not x5539) x5485)
+(or (not x5539) x4790)
+(or (not x5539) x5538)
+(or x5540 (not x5539))
+(or x5540 (not x5528))
+(or x5539 x5528 (not x5540))
+(or (not x5540) (not x4790) x5541)
+(or (not x5541) x5540)
+(or (not x5541) x4790)
+(or (not x5542) (not x5543) (not x4790) x5544)
+(or (not x5544) x5542)
+(or (not x5544) x5543)
+(or (not x5544) x4790)
+(or (not x5545) (not x5530) (not x5546) x5547)
+(or (not x5547) x5545)
+(or (not x5547) x5530)
+(or (not x5547) x5546)
+(or x5548 (not x5547))
+(or x5548 (not x5544))
+(or x5547 x5544 (not x5548))
+(or (not x5332) (not x4790) (not x167) (not x174) (not x5529) (not x5548) x5549)
+(or (not x5549) x5332)
+(or (not x5549) x4790)
+(or (not x5549) x167)
+(or (not x5549) x174)
+(or (not x5549) x5529)
+(or (not x5549) x5548)
+(or (not x5550) (not x5345) (not x5340) (not x4790) (not x5329) x5342 (not x5543) (not x4790) x5551)
+(or (not x5551) x5550)
+(or (not x5551) x5345)
+(or (not x5551) x5340)
+(or (not x5551) x4790)
+(or (not x5551) x5329)
+(or (not x5551) (not x5342))
+(or (not x5551) x5543)
+(or (not x5551) x4790)
+(or x5552 (not x5518))
+(or x5552 (not x5553))
+(or x5552 (not x5554))
+(or x5518 x5553 x5554 (not x5552))
+(or x5525 x5535 x5552)
+(or x5525 (not x5535) (not x5552))
+(or (not x5525) x5535 (not x5552))
+(or (not x5525) (not x5535) x5552)
+(or (not x5555) (not x5525) x5556)
+(or (not x5556) x5555)
+(or (not x5556) x5525)
+(or x5557 (not x5558))
+(or x5557 (not x5556))
+(or x5558 x5556 (not x5557))
+(or (not x5559) (not x5557) x5560)
+(or (not x5560) x5559)
+(or (not x5560) x5557)
+(or (not x5561) (not x4790) (not x5562) (not x4790) x5563)
+(or (not x5563) x5561)
+(or (not x5563) x4790)
+(or (not x5563) x5562)
+(or (not x5563) x4790)
+(or x5564 (not x5335))
+(or x5564 (not x5563))
+(or x5564 (not x5334))
+(or x5335 x5563 x5334 (not x5564))
+(or x5546 x5336 x5564)
+(or x5546 (not x5336) (not x5564))
+(or (not x5546) x5336 (not x5564))
+(or (not x5546) (not x5336) x5564)
+(or (not x5345) (not x5340) (not x4790) (not x5329) x5342 (not x5565) (not x5546) x5566)
+(or (not x5566) x5345)
+(or (not x5566) x5340)
+(or (not x5566) x4790)
+(or (not x5566) x5329)
+(or (not x5566) (not x5342))
+(or (not x5566) x5565)
+(or (not x5566) x5546)
+(or x5567 (not x5566))
+(or x5567 (not x5560))
+(or x5566 x5560 (not x5567))
+(or (not x5568) (not x5567) x5569)
+(or (not x5569) x5568)
+(or (not x5569) x5567)
+(or x5570 (not x5569))
+(or x5570 (not x5551))
+(or x5569 x5551 (not x5570))
+(or (not x166) (not x5338) (not x4790) (not x174) (not x5570) x5571)
+(or (not x5571) x166)
+(or (not x5571) x5338)
+(or (not x5571) x4790)
+(or (not x5571) x174)
+(or (not x5571) x5570)
+(or (not x166) (not x167) (not x5543) (not x4790) x5572)
+(or (not x5572) x166)
+(or (not x5572) x167)
+(or (not x5572) x5543)
+(or (not x5572) x4790)
+(or x5573 (not x5572))
+(or x5573 (not x5571))
+(or x5573 (not x5549))
+(or x5572 x5571 x5549 (not x5573))
+(or (not x5573) (not x4790) x5574)
+(or (not x5574) x5573)
+(or (not x5574) x4790)
+(or (not x5542) (not x5561) (not x4790) x5575)
+(or (not x5575) x5542)
+(or (not x5575) x5561)
+(or (not x5575) x4790)
+(or (not x5545) (not x5530) (not x5576) x5577)
+(or (not x5577) x5545)
+(or (not x5577) x5530)
+(or (not x5577) x5576)
+(or x5578 (not x5577))
+(or x5578 (not x5575))
+(or x5577 x5575 (not x5578))
+(or (not x5332) (not x4790) (not x167) (not x174) (not x5529) (not x5578) x5579)
+(or (not x5579) x5332)
+(or (not x5579) x4790)
+(or (not x5579) x167)
+(or (not x5579) x174)
+(or (not x5579) x5529)
+(or (not x5579) x5578)
+(or (not x5550) (not x5345) (not x5340) (not x4790) (not x5329) x5342 (not x5561) (not x4790) x5580)
+(or (not x5580) x5550)
+(or (not x5580) x5345)
+(or (not x5580) x5340)
+(or (not x5580) x4790)
+(or (not x5580) x5329)
+(or (not x5580) (not x5342))
+(or (not x5580) x5561)
+(or (not x5580) x4790)
+(or x5512 x5518 x5554)
+(or x5512 (not x5518) (not x5554))
+(or (not x5512) x5518 (not x5554))
+(or (not x5512) (not x5518) x5554)
+(or (not x5555) (not x5512) x5581)
+(or (not x5581) x5555)
+(or (not x5581) x5512)
+(or x5582 (not x5558))
+(or x5582 (not x5581))
+(or x5558 x5581 (not x5582))
+(or (not x5559) (not x5582) x5583)
+(or (not x5583) x5559)
+(or (not x5583) x5582)
+(or x5576 x5335 x5334)
+(or x5576 (not x5335) (not x5334))
+(or (not x5576) x5335 (not x5334))
+(or (not x5576) (not x5335) x5334)
+(or (not x5345) (not x5340) (not x4790) (not x5329) x5342 (not x5565) (not x5576) x5584)
+(or (not x5584) x5345)
+(or (not x5584) x5340)
+(or (not x5584) x4790)
+(or (not x5584) x5329)
+(or (not x5584) (not x5342))
+(or (not x5584) x5565)
+(or (not x5584) x5576)
+(or x5585 (not x5584))
+(or x5585 (not x5583))
+(or x5584 x5583 (not x5585))
+(or (not x5568) (not x5585) x5586)
+(or (not x5586) x5568)
+(or (not x5586) x5585)
+(or x5587 (not x5586))
+(or x5587 (not x5580))
+(or x5586 x5580 (not x5587))
+(or (not x166) (not x5338) (not x4790) (not x174) (not x5587) x5588)
+(or (not x5588) x166)
+(or (not x5588) x5338)
+(or (not x5588) x4790)
+(or (not x5588) x174)
+(or (not x5588) x5587)
+(or (not x166) (not x167) (not x5561) (not x4790) x5589)
+(or (not x5589) x166)
+(or (not x5589) x167)
+(or (not x5589) x5561)
+(or (not x5589) x4790)
+(or x5590 (not x5589))
+(or x5590 (not x5588))
+(or x5590 (not x5579))
+(or x5589 x5588 x5579 (not x5590))
+(or (not x5590) (not x4790) x5591)
+(or (not x5591) x5590)
+(or (not x5591) x4790)
+(or (not x5592) (not x5593) (not x5594) (not x5530) x5595)
+(or (not x5595) x5592)
+(or (not x5595) x5593)
+(or (not x5595) x5594)
+(or (not x5595) x5530)
+(or x5542 (not x5595))
+(or x5542 (not x5337))
+(or x5595 x5337 (not x5542))
+(or (not x5542) (not x5562) (not x4790) x5596)
+(or (not x5596) x5542)
+(or (not x5596) x5562)
+(or (not x5596) x4790)
+(or (not x5327) (not x4790) (not x5328) (not x5329) (not x5330) x5320 x5597)
+(or (not x5597) x5327)
+(or (not x5597) x4790)
+(or (not x5597) x5328)
+(or (not x5597) x5329)
+(or (not x5597) x5330)
+(or (not x5597) (not x5320))
+(or (not x5329) (not x5330) (not x5495) x5348)
+(or (not x5348) x5329)
+(or (not x5348) x5330)
+(or (not x5348) x5495)
+(or x5530 (not x5348))
+(or x5530 (not x5341))
+(or x5530 (not x5598))
+(or x5530 (not x5597))
+(or x5348 x5341 x5598 x5597 (not x5530))
+(or (not x5545) (not x5530) (not x5592) x5599)
+(or (not x5599) x5545)
+(or (not x5599) x5530)
+(or (not x5599) x5592)
+(or x5600 (not x5599))
+(or x5600 (not x5596))
+(or x5599 x5596 (not x5600))
+(or (not x5332) (not x4790) (not x167) (not x174) (not x5529) (not x5600) x5601)
+(or (not x5601) x5332)
+(or (not x5601) x4790)
+(or (not x5601) x167)
+(or (not x5601) x174)
+(or (not x5601) x5529)
+(or (not x5601) x5600)
+(or x5594 x5543)
+(or x5594 x4790)
+(or (not x5543) (not x4790) (not x5594))
+(or x5593 x5561)
+(or x5593 x4790)
+(or (not x5561) (not x4790) (not x5593))
+(or (not x5592) (not x5593) (not x5594) x5602)
+(or (not x5602) x5592)
+(or (not x5602) x5593)
+(or (not x5602) x5594)
+(or x5550 (not x5339))
+(or x5550 x5340)
+(or x5550 x4790)
+(or x5550 (not x5341))
+(or x5550 (not x5342))
+(or x5550 (not x5602))
+(or x5339 (not x5340) (not x4790) x5341 x5342 x5602 (not x5550))
+(or (not x5550) (not x5345) (not x5340) (not x4790) (not x5329) x5342 (not x5562) (not x4790) x5603)
+(or (not x5603) x5550)
+(or (not x5603) x5345)
+(or (not x5603) x5340)
+(or (not x5603) x4790)
+(or (not x5603) x5329)
+(or (not x5603) (not x5342))
+(or (not x5603) x5562)
+(or (not x5603) x4790)
+(or x5536 x5455)
+(or x5536 x4790)
+(or x5536 x5454)
+(or x5536 x4790)
+(or (not x5455) (not x4790) (not x5454) (not x4790) (not x5536))
+(or x5555 x5456)
+(or x5555 x4790)
+(or x5555 x5455)
+(or x5555 x4790)
+(or x5555 x5454)
+(or x5555 x4790)
+(or (not x5456) (not x4790) (not x5455) (not x4790) (not x5454) (not x4790) (not x5555))
+(or (not x5555) (not x5477) x5604)
+(or (not x5604) x5555)
+(or (not x5604) x5477)
+(or (not x5455) (not x4790) (not x5454) (not x4790) x5553)
+(or (not x5553) x5455)
+(or (not x5553) x4790)
+(or (not x5553) x5454)
+(or (not x5553) x4790)
+(or (not x5456) (not x4790) (not x5455) (not x4790) (not x5454) (not x4790) x5558)
+(or (not x5558) x5456)
+(or (not x5558) x4790)
+(or (not x5558) x5455)
+(or (not x5558) x4790)
+(or (not x5558) x5454)
+(or (not x5558) x4790)
+(or x5605 (not x5558))
+(or x5605 (not x5604))
+(or x5558 x5604 (not x5605))
+(or (not x5559) (not x5605) x5606)
+(or (not x5606) x5559)
+(or (not x5606) x5605)
+(or x5592 x5562)
+(or x5592 x4790)
+(or (not x5562) (not x4790) (not x5592))
+(or (not x5345) (not x5340) (not x4790) (not x5329) x5342 (not x5565) (not x5592) x5607)
+(or (not x5607) x5345)
+(or (not x5607) x5340)
+(or (not x5607) x4790)
+(or (not x5607) x5329)
+(or (not x5607) (not x5342))
+(or (not x5607) x5565)
+(or (not x5607) x5592)
+(or x5608 (not x5607))
+(or x5608 (not x5606))
+(or x5607 x5606 (not x5608))
+(or x5568 (not x5609))
+(or x5568 (not x5339))
+(or x5568 x5340)
+(or x5568 x4790)
+(or x5568 (not x5341))
+(or x5568 (not x5342))
+(or x5609 x5339 (not x5340) (not x4790) x5341 x5342 (not x5568))
+(or (not x5568) (not x5608) x5610)
+(or (not x5610) x5568)
+(or (not x5610) x5608)
+(or x5611 (not x5610))
+(or x5611 (not x5603))
+(or x5610 x5603 (not x5611))
+(or (not x166) (not x5338) (not x4790) (not x174) (not x5611) x5612)
+(or (not x5612) x166)
+(or (not x5612) x5338)
+(or (not x5612) x4790)
+(or (not x5612) x174)
+(or (not x5612) x5611)
+(or (not x166) (not x167) (not x5562) (not x4790) x5613)
+(or (not x5613) x166)
+(or (not x5613) x167)
+(or (not x5613) x5562)
+(or (not x5613) x4790)
+(or x5614 (not x5613))
+(or x5614 (not x5612))
+(or x5614 (not x5601))
+(or x5613 x5612 x5601 (not x5614))
+(or (not x5614) (not x4790) x5615)
+(or (not x5615) x5614)
+(or (not x5615) x4790)
+(or (not x5332) (not x4790) (not x167) (not x174) (not x5529) (not x5545) (not x5338) (not x4790) x5616)
+(or (not x5616) x5332)
+(or (not x5616) x4790)
+(or (not x5616) x167)
+(or (not x5616) x174)
+(or (not x5616) x5529)
+(or (not x5616) x5545)
+(or (not x5616) x5338)
+(or (not x5616) x4790)
+(or (not x166) (not x5338) (not x4790) (not x174) (not x5559) (not x5338) (not x4790) x5617)
+(or (not x5617) x166)
+(or (not x5617) x5338)
+(or (not x5617) x4790)
+(or (not x5617) x174)
+(or (not x5617) x5559)
+(or (not x5617) x5338)
+(or (not x5617) x4790)
+(or (not x5454) (not x4790) x5554)
+(or (not x5554) x5454)
+(or (not x5554) x4790)
+(or (not x5618) (not x5454) (not x4790) x5619)
+(or (not x5619) x5618)
+(or (not x5619) x5454)
+(or (not x5619) x4790)
+(or x5620 (not x5518))
+(or x5620 (not x5619))
+(or x5518 x5619 (not x5620))
+(or (not x5621) (not x5620) x5622)
+(or (not x5622) x5621)
+(or (not x5622) x5620)
+(or x5623 (not x5535))
+(or x5623 (not x5622))
+(or x5623 (not x4772))
+(or x5535 x5622 x4772 (not x5623))
+(or (not x166) (not x167) (not x5623) x5624)
+(or (not x5624) x166)
+(or (not x5624) x167)
+(or (not x5624) x5623)
+(or x5625 (not x5624))
+(or x5625 (not x5617))
+(or x5625 (not x5616))
+(or x5624 x5617 x5616 (not x5625))
+(or (not x5625) (not x4790) x5626)
+(or (not x5626) x5625)
+(or (not x5626) x4790)
+(or x5495 x5327)
+(or x5495 x4790)
+(or x5495 (not x5358))
+(or (not x5327) (not x4790) x5358 (not x5495))
+(or x5627 x5327)
+(or x5627 x4790)
+(or x5627 (not x5358))
+(or x5627 (not x5341))
+(or x5627 (not x5359))
+(or x5627 (not x5320))
+(or (not x5327) (not x4790) x5358 x5341 x5359 x5320 (not x5627))
+(or (not x5327) (not x4790) (not x5328) x5628)
+(or (not x5628) x5327)
+(or (not x5628) x4790)
+(or (not x5628) x5328)
+(or x5629 (not x5341))
+(or x5629 (not x5359))
+(or x5629 (not x5628))
+(or x5341 x5359 x5628 (not x5629))
+(or (not x5629) (not x5329) (not x5630) (not x5627) x5337)
+(or (not x5337) x5629)
+(or (not x5337) x5329)
+(or (not x5337) x5630)
+(or (not x5337) x5627)
+(or x5545 (not x5334))
+(or x5545 (not x5335))
+(or x5545 (not x5336))
+(or x5545 (not x5337))
+(or x5334 x5335 x5336 x5337 (not x5545))
+(or x5529 (not x4771))
+(or x5529 x5338)
+(or x5529 x4790)
+(or x4771 (not x5338) (not x4790) (not x5529))
+(or (not x5332) (not x4790) (not x167) (not x174) (not x5529) (not x5545) (not x5332) (not x4790) x5631)
+(or (not x5631) x5332)
+(or (not x5631) x4790)
+(or (not x5631) x167)
+(or (not x5631) x174)
+(or (not x5631) x5529)
+(or (not x5631) x5545)
+(or (not x5631) x5332)
+(or (not x5631) x4790)
+(or (not x5345) (not x5328) x5341)
+(or (not x5341) x5345)
+(or (not x5341) x5328)
+(or x5328 x5340)
+(or x5328 x4790)
+(or (not x5340) (not x4790) (not x5328))
+(or x5330 (not x5339))
+(or x5330 x5340)
+(or x5330 x4790)
+(or x5339 (not x5340) (not x4790) (not x5330))
+(or x5630 (not x5339))
+(or x5630 x5340)
+(or x5630 x4790)
+(or x5630 (not x5341))
+(or x5339 (not x5340) (not x4790) x5341 (not x5630))
+(or x5559 (not x5339))
+(or x5559 x5340)
+(or x5559 x4790)
+(or x5559 (not x5341))
+(or x5559 (not x5342))
+(or x5339 (not x5340) (not x4790) x5341 x5342 (not x5559))
+(or (not x5559) (not x5332) (not x4790) x5632)
+(or (not x5632) x5559)
+(or (not x5632) x5332)
+(or (not x5632) x4790)
+(or (not x5543) (not x4790) x5336)
+(or (not x5336) x5543)
+(or (not x5336) x4790)
+(or (not x5561) (not x4790) x5335)
+(or (not x5335) x5561)
+(or (not x5335) x4790)
+(or (not x5562) (not x4790) x5334)
+(or (not x5334) x5562)
+(or (not x5334) x4790)
+(or x5565 (not x5334))
+(or x5565 (not x5335))
+(or x5565 (not x5336))
+(or x5334 x5335 x5336 (not x5565))
+(or (not x5327) (not x4790) x5339)
+(or (not x5339) x5327)
+(or (not x5339) x4790)
+(or x5329 (not x5339))
+(or x5329 (not x5358))
+(or x5339 x5358 (not x5329))
+(or (not x5340) (not x4790) x5358)
+(or (not x5358) x5340)
+(or (not x5358) x4790)
+(or x5345 x5327)
+(or x5345 x4790)
+(or (not x5327) (not x4790) (not x5345))
+(or (not x5345) (not x5340) (not x4790) x5359)
+(or (not x5359) x5345)
+(or (not x5359) x5340)
+(or (not x5359) x4790)
+(or (not x5345) (not x5340) (not x4790) (not x5329) x5598)
+(or (not x5598) x5345)
+(or (not x5598) x5340)
+(or (not x5598) x4790)
+(or (not x5598) x5329)
+(or (not x5345) (not x5340) (not x4790) (not x5329) x5342 (not x5565) x5609)
+(or (not x5609) x5345)
+(or (not x5609) x5340)
+(or (not x5609) x4790)
+(or (not x5609) x5329)
+(or (not x5609) (not x5342))
+(or (not x5609) x5565)
+(or x5633 (not x5609))
+(or x5633 (not x5632))
+(or x5609 x5632 (not x5633))
+(or x174 (not x4771))
+(or x174 (not x4772))
+(or x4771 x4772 (not x174))
+(or (not x5338) (not x4790) x4772)
+(or (not x4772) x5338)
+(or (not x4772) x4790)
+(or (not x166) (not x5338) (not x4790) x5333)
+(or (not x5333) x166)
+(or (not x5333) x5338)
+(or (not x5333) x4790)
+(or (not x166) (not x5338) (not x4790) (not x174) (not x5633) x5634)
+(or (not x5634) x166)
+(or (not x5634) x5338)
+(or (not x5634) x4790)
+(or (not x5634) x174)
+(or (not x5634) x5633)
+(or (not x5332) (not x4790) x4771)
+(or (not x4771) x5332)
+(or (not x4771) x4790)
+(or x5477 x5454)
+(or x5477 x4790)
+(or (not x5454) (not x4790) (not x5477))
+(or (not x5455) (not x4790) x5518)
+(or (not x5518) x5455)
+(or (not x5518) x4790)
+(or x5635 (not x5518))
+(or x5635 x5454)
+(or x5635 x4790)
+(or x5518 (not x5454) (not x4790) (not x5635))
+(or x5618 x5455)
+(or x5618 x4790)
+(or (not x5455) (not x4790) (not x5618))
+(or (not x5618) (not x5635) x5636)
+(or (not x5636) x5618)
+(or (not x5636) x5635)
+(or (not x5456) (not x4790) x5535)
+(or (not x5535) x5456)
+(or (not x5535) x4790)
+(or x5637 (not x5535))
+(or x5637 (not x5636))
+(or x5535 x5636 (not x5637))
+(or x5621 x5456)
+(or x5621 x4790)
+(or (not x5456) (not x4790) (not x5621))
+(or x167 x5338)
+(or x167 x4790)
+(or (not x5338) (not x4790) (not x167))
+(or x166 x5332)
+(or x166 x4790)
+(or (not x5332) (not x4790) (not x166))
+(or (not x166) (not x167) x4746)
+(or (not x4746) x166)
+(or (not x4746) x167)
+(or (not x166) (not x167) (not x5621) (not x5637) (not x5332) (not x4790) x5638)
+(or (not x5638) x166)
+(or (not x5638) x167)
+(or (not x5638) x5621)
+(or (not x5638) x5637)
+(or (not x5638) x5332)
+(or (not x5638) x4790)
+(or x5639 (not x5638))
+(or x5639 (not x5634))
+(or x5639 (not x5631))
+(or x5638 x5634 x5631 (not x5639))
+(or (not x5639) (not x4790) x5640)
+(or (not x5640) x5639)
+(or (not x5640) x4790)
+(or x5641 (not x4791))
+(or x5641 (not x4790))
+(or x4791 x4790 (not x5641))
+(or x4791 x4790 x5642)
+(or (not x5642) (not x4791))
+(or (not x5642) (not x4790))
+(or x5643 (not x5642))
+(or x5643 (not x4791))
+(or x5643 x4790)
+(or x5642 x4791 (not x4790) (not x5643))
+(or (not x5644) (not x164))
+(or (not x5644) x163)
+(or (not x5644) (not x162))
+(or (not x5644) x161)
+(or (not x5644) x160)
+(or (not x5645) (not x164))
+(or (not x5645) x163)
+(or (not x5645) (not x162))
+(or (not x5645) x161)
+(or (not x5645) (not x160))
+(or (not x5646) (not x164))
+(or (not x5646) x163)
+(or (not x5646) (not x162))
+(or (not x5646) (not x161))
+(or (not x5646) x160)
+(or (not x5647) (not x164))
+(or (not x5647) x163)
+(or (not x5647) (not x162))
+(or (not x5647) (not x161))
+(or (not x5647) (not x160))
+(or (not x5648) (not x164))
+(or (not x5648) (not x163))
+(or (not x5648) x162)
+(or (not x5648) x161)
+(or (not x5648) x160)
+(or (not x5649) (not x164))
+(or (not x5649) (not x163))
+(or (not x5649) x162)
+(or (not x5649) x161)
+(or (not x5649) (not x160))
+(or (not x5650) (not x164))
+(or (not x5650) (not x163))
+(or (not x5650) x162)
+(or (not x5650) (not x161))
+(or (not x5650) x160)
+(or (not x5651) (not x164))
+(or (not x5651) (not x163))
+(or (not x5651) x162)
+(or (not x5651) (not x161))
+(or (not x5651) (not x160))
+(or (not x5652) (not x164))
+(or (not x5652) (not x163))
+(or (not x5652) (not x162))
+(or (not x5652) x161)
+(or (not x5652) x160)
+(or (not x5653) (not x164))
+(or (not x5653) (not x163))
+(or (not x5653) (not x162))
+(or (not x5653) x161)
+(or (not x5653) (not x160))
+(or x164 x163 x162 x161 (not x160) x4744)
+(or (not x4744) (not x164))
+(or (not x4744) (not x163))
+(or (not x4744) (not x162))
+(or (not x4744) (not x161))
+(or (not x4744) x160)
+(or (not x5654) (not x164))
+(or (not x5654) (not x163))
+(or (not x5654) (not x162))
+(or (not x5654) (not x161))
+(or (not x5654) (not x160))
+(or x5655 (not x5654))
+(or x5655 (not x4744))
+(or x5655 (not x5653))
+(or x5655 (not x5652))
+(or x5655 (not x5651))
+(or x5655 (not x5650))
+(or x5655 (not x5649))
+(or x5655 (not x5648))
+(or x5655 (not x5647))
+(or x5655 (not x5646))
+(or x5655 (not x5645))
+(or x5654 x4744 x5653 x5652 x5651 x5650 x5649 x5648 x5647 x5646 x5645 (not x5655))
+(or (not x5656) (not x5657) (not x5658) (not x5659) (not x5660) (not x5661) (not x5662) (not x5663) x5664)
+(or (not x5664) x5656)
+(or (not x5664) x5657)
+(or (not x5664) x5658)
+(or (not x5664) x5659)
+(or (not x5664) x5660)
+(or (not x5664) x5661)
+(or (not x5664) x5662)
+(or (not x5664) x5663)
+(or x5665 (not x5666))
+(or x5665 x5667)
+(or x5666 (not x5667) (not x5665))
+(or x5666 (not x5665) (not x5668) x5669)
+(or (not x5669) (not x5666))
+(or (not x5669) x5665)
+(or (not x5669) x5668)
+(or x5658 (not x5670))
+(or x5658 (not x5671))
+(or x5658 (not x183))
+(or x5658 (not x182))
+(or x5658 (not x181))
+(or x5658 x180)
+(or x5658 x179)
+(or x5658 (not x5672))
+(or x5658 (not x5669))
+(or x5670 x5671 x183 x182 x181 (not x180) (not x179) x5672 x5669 (not x5658))
+(or x5673 (not x5674))
+(or x5673 x5675)
+(or x5674 (not x5675) (not x5673))
+(or x5674 (not x5673) (not x5676) x5677)
+(or (not x5677) (not x5674))
+(or (not x5677) x5673)
+(or (not x5677) x5676)
+(or x5657 (not x5670))
+(or x5657 (not x183))
+(or x5657 (not x182))
+(or x5657 (not x181))
+(or x5657 x180)
+(or x5657 (not x179))
+(or x5657 (not x5678))
+(or x5657 (not x5672))
+(or x5657 (not x5677))
+(or x5670 x183 x182 x181 (not x180) x179 x5678 x5672 x5677 (not x5657))
+(or x5679 (not x5680) x5681)
+(or (not x5681) (not x5679))
+(or (not x5681) x5680)
+(or x5682 (not x183))
+(or x5682 (not x182))
+(or x5682 (not x181))
+(or x5682 (not x180))
+(or x5682 x179)
+(or x5682 (not x5681))
+(or x183 x182 x181 x180 (not x179) x5681 (not x5682))
+(or (not x5682) (not x5657) (not x5658) (not x5659) (not x5660) (not x5663) x5683)
+(or (not x5683) x5682)
+(or (not x5683) x5657)
+(or (not x5683) x5658)
+(or (not x5683) x5659)
+(or (not x5683) x5660)
+(or (not x5683) x5663)
+(or x5668 (not x5666))
+(or x5668 (not x5667))
+(or x5666 x5667 (not x5668))
+(or x5684 (not x5670))
+(or x5684 (not x5671))
+(or x5684 (not x183))
+(or x5684 (not x182))
+(or x5684 (not x181))
+(or x5684 x180)
+(or x5684 x179)
+(or x5684 (not x5672))
+(or x5684 (not x5666))
+(or x5684 (not x5667))
+(or x5670 x5671 x183 x182 x181 (not x180) (not x179) x5672 x5666 x5667 (not x5684))
+(or x5676 (not x5674))
+(or x5676 (not x5675))
+(or x5674 x5675 (not x5676))
+(or x5685 (not x5670))
+(or x5685 (not x183))
+(or x5685 (not x182))
+(or x5685 (not x181))
+(or x5685 x180)
+(or x5685 (not x179))
+(or x5685 (not x5678))
+(or x5685 (not x5672))
+(or x5685 (not x5674))
+(or x5685 (not x5675))
+(or x5670 x183 x182 x181 (not x180) x179 x5678 x5672 x5674 x5675 (not x5685))
+(or x5686 (not x5679))
+(or x5686 (not x5687))
+(or x5686 x5688)
+(or x5679 x5687 (not x5688) (not x5686))
+(or x5679 (not x5689) (not x5686) (not x5680) x5690)
+(or (not x5690) (not x5679))
+(or (not x5690) x5689)
+(or (not x5690) x5686)
+(or (not x5690) x5680)
+(or x5656 (not x183))
+(or x5656 (not x182))
+(or x5656 (not x181))
+(or x5656 (not x180))
+(or x5656 x179)
+(or x5656 (not x5690))
+(or x183 x182 x181 x180 (not x179) x5690 (not x5656))
+(or (not x5656) (not x5685) (not x5684) (not x5661) (not x5662) (not x5663) x5691)
+(or (not x5691) x5656)
+(or (not x5691) x5685)
+(or (not x5691) x5684)
+(or (not x5691) x5661)
+(or (not x5691) x5662)
+(or (not x5691) x5663)
+(or x5692 (not x5670))
+(or x5692 (not x5671))
+(or x5692 (not x5693))
+(or x5692 (not x5694))
+(or x5692 (not x5695))
+(or x5692 (not x5696))
+(or x5692 (not x183))
+(or x5692 x182)
+(or x5692 (not x181))
+(or x5692 (not x180))
+(or x5692 x179)
+(or x5692 (not x187))
+(or x5692 (not x188))
+(or x5692 (not x189))
+(or x5692 (not x190))
+(or x5692 (not x191))
+(or x5692 (not x192))
+(or x5692 (not x5697))
+(or x5692 (not x5698))
+(or x5692 (not x5699))
+(or x5670 x5671 x5693 x5694 x5695 x5696 x183 (not x182) x181 x180 (not x179) x187 x188 x189 x190 x191 x192 x5697 x5698 x5699 (not x5692))
+(or x5700 (not x5670))
+(or x5700 (not x5671))
+(or x5700 (not x5693))
+(or x5700 (not x5694))
+(or x5700 (not x5695))
+(or x5700 (not x183))
+(or x5700 x182)
+(or x5700 (not x181))
+(or x5700 (not x180))
+(or x5700 (not x179))
+(or x5700 (not x5678))
+(or x5700 (not x5697))
+(or x5700 (not x5698))
+(or x5700 (not x187))
+(or x5700 (not x188))
+(or x5700 (not x189))
+(or x5700 (not x190))
+(or x5700 (not x191))
+(or x5700 (not x192))
+(or x5700 (not x5697))
+(or x5700 (not x5698))
+(or x5700 (not x5701))
+(or x5670 x5671 x5693 x5694 x5695 x183 (not x182) x181 x180 x179 x5678 x5697 x5698 x187 x188 x189 x190 x191 x192 x5697 x5698 x5701 (not x5700))
+(or x5702 (not x5670))
+(or x5702 (not x5671))
+(or x5702 (not x5693))
+(or x5702 (not x5694))
+(or x5702 (not x183))
+(or x5702 (not x182))
+(or x5702 x181)
+(or x5702 (not x180))
+(or x5702 x179)
+(or x5702 (not x187))
+(or x5702 (not x188))
+(or x5702 (not x189))
+(or x5702 (not x190))
+(or x5702 (not x191))
+(or x5702 (not x192))
+(or x5702 (not x5697))
+(or x5702 (not x5698))
+(or x5702 (not x5703))
+(or x5670 x5671 x5693 x5694 x183 x182 (not x181) x180 (not x179) x187 x188 x189 x190 x191 x192 x5697 x5698 x5703 (not x5702))
+(or x5704 (not x5670))
+(or x5704 (not x5671))
+(or x5704 (not x5693))
+(or x5704 (not x183))
+(or x5704 (not x182))
+(or x5704 x181)
+(or x5704 (not x180))
+(or x5704 (not x179))
+(or x5704 (not x5697))
+(or x5704 (not x5698))
+(or x5704 (not x187))
+(or x5704 (not x188))
+(or x5704 (not x189))
+(or x5704 (not x190))
+(or x5704 (not x191))
+(or x5704 (not x192))
+(or x5704 (not x5697))
+(or x5704 (not x5698))
+(or x5704 (not x5705))
+(or x5670 x5671 x5693 x183 x182 (not x181) x180 x179 x5697 x5698 x187 x188 x189 x190 x191 x192 x5697 x5698 x5705 (not x5704))
+(or x5680 (not x5679))
+(or x5680 (not x5687))
+(or x5680 (not x5688))
+(or x5679 x5687 x5688 (not x5680))
+(or (not x5689) (not x5680) x5706)
+(or (not x5706) x5689)
+(or (not x5706) x5680)
+(or x5707 (not x183))
+(or x5707 (not x182))
+(or x5707 (not x181))
+(or x5707 (not x180))
+(or x5707 x179)
+(or x5707 (not x5706))
+(or x183 x182 x181 x180 (not x179) x5706 (not x5707))
+(or (not x5707) (not x5708) (not x5709) (not x5704) (not x5702) (not x5700) (not x5692) (not x5663) x5710)
+(or (not x5710) x5707)
+(or (not x5710) x5708)
+(or (not x5710) x5709)
+(or (not x5710) x5704)
+(or (not x5710) x5702)
+(or (not x5710) x5700)
+(or (not x5710) x5692)
+(or (not x5710) x5663)
+(or x183 (not x182) x181 x180 (not x179) x187 x188 x189 x190 x191 x192 (not x185) (not x186) x5711)
+(or (not x5711) (not x183))
+(or (not x5711) x182)
+(or (not x5711) (not x181))
+(or (not x5711) (not x180))
+(or (not x5711) x179)
+(or (not x5711) (not x187))
+(or (not x5711) (not x188))
+(or (not x5711) (not x189))
+(or (not x5711) (not x190))
+(or (not x5711) (not x191))
+(or (not x5711) (not x192))
+(or (not x5711) x185)
+(or (not x5711) x186)
+(or x5663 (not x5670))
+(or x5663 (not x5671))
+(or x5663 (not x5693))
+(or x5663 (not x5694))
+(or x5663 (not x5695))
+(or x5663 (not x5696))
+(or x5663 (not x5711))
+(or x5670 x5671 x5693 x5694 x5695 x5696 x5711 (not x5663))
+(or x183 (not x182) x181 x180 x179 (not x184) (not x185) (not x186) x187 x188 x189 x190 x191 x192 (not x185) (not x186) x5696)
+(or (not x5696) (not x183))
+(or (not x5696) x182)
+(or (not x5696) (not x181))
+(or (not x5696) (not x180))
+(or (not x5696) (not x179))
+(or (not x5696) x184)
+(or (not x5696) x185)
+(or (not x5696) x186)
+(or (not x5696) (not x187))
+(or (not x5696) (not x188))
+(or (not x5696) (not x189))
+(or (not x5696) (not x190))
+(or (not x5696) (not x191))
+(or (not x5696) (not x192))
+(or (not x5696) x185)
+(or (not x5696) x186)
+(or x5662 (not x5670))
+(or x5662 (not x5671))
+(or x5662 (not x5693))
+(or x5662 (not x5694))
+(or x5662 (not x5695))
+(or x5662 (not x5696))
+(or x5662 (not x183))
+(or x5662 x182)
+(or x5662 (not x181))
+(or x5662 (not x180))
+(or x5662 x179)
+(or x5662 (not x187))
+(or x5662 (not x188))
+(or x5662 (not x189))
+(or x5662 (not x190))
+(or x5662 (not x191))
+(or x5662 (not x192))
+(or x5662 (not x5697))
+(or x5662 (not x5698))
+(or x5670 x5671 x5693 x5694 x5695 x5696 x183 (not x182) x181 x180 (not x179) x187 x188 x189 x190 x191 x192 x5697 x5698 (not x5662))
+(or x5712 (not x5670))
+(or x5712 (not x5671))
+(or x5712 (not x5693))
+(or x5712 (not x5694))
+(or x5712 (not x5695))
+(or x5712 (not x5696))
+(or x5712 (not x183))
+(or x5712 x182)
+(or x5712 (not x181))
+(or x5712 (not x180))
+(or x5712 x179)
+(or x5712 (not x187))
+(or x5712 (not x188))
+(or x5712 (not x189))
+(or x5712 (not x190))
+(or x5712 (not x191))
+(or x5712 (not x192))
+(or x5712 (not x5697))
+(or x5712 (not x5698))
+(or x5712 x5699)
+(or x5670 x5671 x5693 x5694 x5695 x5696 x183 (not x182) x181 x180 (not x179) x187 x188 x189 x190 x191 x192 x5697 x5698 (not x5699) (not x5712))
+(or x183 x182 (not x181) x180 (not x179) x187 x188 x189 x190 x191 x192 (not x185) (not x186) x5695)
+(or (not x5695) (not x183))
+(or (not x5695) (not x182))
+(or (not x5695) x181)
+(or (not x5695) (not x180))
+(or (not x5695) x179)
+(or (not x5695) (not x187))
+(or (not x5695) (not x188))
+(or (not x5695) (not x189))
+(or (not x5695) (not x190))
+(or (not x5695) (not x191))
+(or (not x5695) (not x192))
+(or (not x5695) x185)
+(or (not x5695) x186)
+(or x5661 (not x5670))
+(or x5661 (not x5671))
+(or x5661 (not x5693))
+(or x5661 (not x5694))
+(or x5661 (not x5695))
+(or x5661 (not x183))
+(or x5661 x182)
+(or x5661 (not x181))
+(or x5661 (not x180))
+(or x5661 (not x179))
+(or x5661 (not x5678))
+(or x5661 (not x5697))
+(or x5661 (not x5698))
+(or x5661 (not x187))
+(or x5661 (not x188))
+(or x5661 (not x189))
+(or x5661 (not x190))
+(or x5661 (not x191))
+(or x5661 (not x192))
+(or x5661 (not x5697))
+(or x5661 (not x5698))
+(or x5670 x5671 x5693 x5694 x5695 x183 (not x182) x181 x180 x179 x5678 x5697 x5698 x187 x188 x189 x190 x191 x192 x5697 x5698 (not x5661))
+(or x5713 (not x5670))
+(or x5713 (not x5671))
+(or x5713 (not x5693))
+(or x5713 (not x5694))
+(or x5713 (not x5695))
+(or x5713 (not x183))
+(or x5713 x182)
+(or x5713 (not x181))
+(or x5713 (not x180))
+(or x5713 (not x179))
+(or x5713 (not x5678))
+(or x5713 (not x5697))
+(or x5713 (not x5698))
+(or x5713 (not x187))
+(or x5713 (not x188))
+(or x5713 (not x189))
+(or x5713 (not x190))
+(or x5713 (not x191))
+(or x5713 (not x192))
+(or x5713 (not x5697))
+(or x5713 (not x5698))
+(or x5713 x5701)
+(or x5670 x5671 x5693 x5694 x5695 x183 (not x182) x181 x180 x179 x5678 x5697 x5698 x187 x188 x189 x190 x191 x192 x5697 x5698 (not x5701) (not x5713))
+(or x183 x182 (not x181) x180 x179 (not x185) (not x186) x187 x188 x189 x190 x191 x192 (not x185) (not x186) x5694)
+(or (not x5694) (not x183))
+(or (not x5694) (not x182))
+(or (not x5694) x181)
+(or (not x5694) (not x180))
+(or (not x5694) (not x179))
+(or (not x5694) x185)
+(or (not x5694) x186)
+(or (not x5694) (not x187))
+(or (not x5694) (not x188))
+(or (not x5694) (not x189))
+(or (not x5694) (not x190))
+(or (not x5694) (not x191))
+(or (not x5694) (not x192))
+(or (not x5694) x185)
+(or (not x5694) x186)
+(or x5660 (not x5670))
+(or x5660 (not x5671))
+(or x5660 (not x5693))
+(or x5660 (not x5694))
+(or x5660 (not x183))
+(or x5660 (not x182))
+(or x5660 x181)
+(or x5660 (not x180))
+(or x5660 x179)
+(or x5660 (not x187))
+(or x5660 (not x188))
+(or x5660 (not x189))
+(or x5660 (not x190))
+(or x5660 (not x191))
+(or x5660 (not x192))
+(or x5660 (not x5697))
+(or x5660 (not x5698))
+(or x5670 x5671 x5693 x5694 x183 x182 (not x181) x180 (not x179) x187 x188 x189 x190 x191 x192 x5697 x5698 (not x5660))
+(or x5714 (not x5670))
+(or x5714 (not x5671))
+(or x5714 (not x5693))
+(or x5714 (not x5694))
+(or x5714 (not x183))
+(or x5714 (not x182))
+(or x5714 x181)
+(or x5714 (not x180))
+(or x5714 x179)
+(or x5714 (not x187))
+(or x5714 (not x188))
+(or x5714 (not x189))
+(or x5714 (not x190))
+(or x5714 (not x191))
+(or x5714 (not x192))
+(or x5714 (not x5697))
+(or x5714 (not x5698))
+(or x5714 x5703)
+(or x5670 x5671 x5693 x5694 x183 x182 (not x181) x180 (not x179) x187 x188 x189 x190 x191 x192 x5697 x5698 (not x5703) (not x5714))
+(or x183 x182 x181 (not x180) (not x179) (not x193) x5693)
+(or (not x5693) (not x183))
+(or (not x5693) (not x182))
+(or (not x5693) (not x181))
+(or (not x5693) x180)
+(or (not x5693) x179)
+(or (not x5693) x193)
+(or x5659 (not x5670))
+(or x5659 (not x5671))
+(or x5659 (not x5693))
+(or x5659 (not x183))
+(or x5659 (not x182))
+(or x5659 x181)
+(or x5659 (not x180))
+(or x5659 (not x179))
+(or x5659 (not x5697))
+(or x5659 (not x5698))
+(or x5659 (not x187))
+(or x5659 (not x188))
+(or x5659 (not x189))
+(or x5659 (not x190))
+(or x5659 (not x191))
+(or x5659 (not x192))
+(or x5659 (not x5697))
+(or x5659 (not x5698))
+(or x5670 x5671 x5693 x183 x182 (not x181) x180 x179 x5697 x5698 x187 x188 x189 x190 x191 x192 x5697 x5698 (not x5659))
+(or x5715 (not x5670))
+(or x5715 (not x5671))
+(or x5715 (not x5693))
+(or x5715 (not x183))
+(or x5715 (not x182))
+(or x5715 x181)
+(or x5715 (not x180))
+(or x5715 (not x179))
+(or x5715 (not x5697))
+(or x5715 (not x5698))
+(or x5715 (not x187))
+(or x5715 (not x188))
+(or x5715 (not x189))
+(or x5715 (not x190))
+(or x5715 (not x191))
+(or x5715 (not x192))
+(or x5715 (not x5697))
+(or x5715 (not x5698))
+(or x5715 x5705)
+(or x5670 x5671 x5693 x183 x182 (not x181) x180 x179 x5697 x5698 x187 x188 x189 x190 x191 x192 x5697 x5698 (not x5705) (not x5715))
+(or x184 x5716)
+(or x184 (not x5697))
+(or x184 (not x5698))
+(or (not x5716) x5697 x5698 (not x184))
+(or x183 x182 x181 (not x180) x179 (not x184) (not x193) x5671)
+(or (not x5671) (not x183))
+(or (not x5671) (not x182))
+(or (not x5671) (not x181))
+(or (not x5671) x180)
+(or (not x5671) (not x179))
+(or (not x5671) x184)
+(or (not x5671) x193)
+(or x5709 (not x5670))
+(or x5709 (not x5671))
+(or x5709 (not x183))
+(or x5709 (not x182))
+(or x5709 (not x181))
+(or x5709 x180)
+(or x5709 x179)
+(or x5709 (not x5672))
+(or x5709 x5666)
+(or x5670 x5671 x183 x182 x181 (not x180) (not x179) x5672 (not x5666) (not x5709))
+(or (not x5716) (not x185) (not x186) x5678)
+(or (not x5678) x5716)
+(or (not x5678) x185)
+(or (not x5678) x186)
+(or x5708 (not x5670))
+(or x5708 (not x183))
+(or x5708 (not x182))
+(or x5708 (not x181))
+(or x5708 x180)
+(or x5708 (not x179))
+(or x5708 (not x5678))
+(or x5708 (not x5672))
+(or x5708 x5674)
+(or x5670 x183 x182 x181 (not x180) x179 x5678 x5672 (not x5674) (not x5708))
+(or x5689 (not x5679))
+(or x5689 x5687)
+(or x5679 (not x5687) (not x5689))
+(or x5679 (not x5689) x5718)
+(or (not x5718) (not x5679))
+(or (not x5718) x5689)
+(or x5719 (not x183))
+(or x5719 (not x182))
+(or x5719 (not x181))
+(or x5719 (not x180))
+(or x5719 x179)
+(or x5719 (not x5718))
+(or x183 x182 x181 x180 (not x179) x5718 (not x5719))
+(or (not x5719) (not x5708) (not x5709) (not x5715) (not x5714) (not x5713) (not x5712) (not x5663) x5720)
+(or (not x5720) x5719)
+(or (not x5720) x5708)
+(or (not x5720) x5709)
+(or (not x5720) x5715)
+(or (not x5720) x5714)
+(or (not x5720) x5713)
+(or (not x5720) x5712)
+(or (not x5720) x5663)
+(or (not x5721) (not x5722) (not x5716) x5723)
+(or (not x5723) x5721)
+(or (not x5723) x5722)
+(or (not x5723) x5716)
+(or x5721 (not x5724) x5725)
+(or (not x5725) (not x5721))
+(or (not x5725) x5724)
+(or x5726 (not x5725))
+(or x5726 (not x5723))
+(or x5725 x5723 (not x5726))
+(or (not x5726) (not x5716) x5727)
+(or (not x5727) x5726)
+(or (not x5727) x5716)
+(or (not x5721) (not x5728) (not x5716) x5729)
+(or (not x5729) x5721)
+(or (not x5729) x5728)
+(or (not x5729) x5716)
+(or x5721 (not x5730) x5731)
+(or (not x5731) (not x5721))
+(or (not x5731) x5730)
+(or x5732 (not x5731))
+(or x5732 (not x5729))
+(or x5731 x5729 (not x5732))
+(or (not x5732) (not x5716) x5733)
+(or (not x5733) x5732)
+(or (not x5733) x5716)
+(or (not x5721) (not x5734) (not x5716) x5735)
+(or (not x5735) x5721)
+(or (not x5735) x5734)
+(or (not x5735) x5716)
+(or x5721 (not x5736) x5737)
+(or (not x5737) (not x5721))
+(or (not x5737) x5736)
+(or x5738 (not x5737))
+(or x5738 (not x5735))
+(or x5737 x5735 (not x5738))
+(or (not x5738) (not x5716) x5739)
+(or (not x5739) x5738)
+(or (not x5739) x5716)
+(or (not x5740) (not x5741) (not x5716) x5742)
+(or (not x5742) x5740)
+(or (not x5742) x5741)
+(or (not x5742) x5716)
+(or (not x5743) (not x188) x5744 x5745)
+(or (not x5745) x5743)
+(or (not x5745) x188)
+(or (not x5745) (not x5744))
+(or x5746 (not x5745))
+(or x5746 (not x5742))
+(or x5745 x5742 (not x5746))
+(or (not x5746) (not x5716) x5747)
+(or (not x5747) x5746)
+(or (not x5747) x5716)
+(or (not x5748) (not x5749) (not x5716) x5750)
+(or (not x5750) x5748)
+(or (not x5750) x5749)
+(or (not x5750) x5716)
+(or (not x5751) (not x187) x5752 x5753)
+(or (not x5753) x5751)
+(or (not x5753) x187)
+(or (not x5753) (not x5752))
+(or x5754 (not x5753))
+(or x5754 (not x5750))
+(or x5753 x5750 (not x5754))
+(or (not x5754) (not x5716) x5755)
+(or (not x5755) x5754)
+(or (not x5755) x5716)
+(or (not x5740) (not x5756) (not x5716) x5757)
+(or (not x5757) x5740)
+(or (not x5757) x5756)
+(or (not x5757) x5716)
+(or (not x5743) (not x188) x5758 x5759)
+(or (not x5759) x5743)
+(or (not x5759) x188)
+(or (not x5759) (not x5758))
+(or x5760 (not x5759))
+(or x5760 (not x5757))
+(or x5759 x5757 (not x5760))
+(or (not x5760) (not x5716) x5761)
+(or (not x5761) x5760)
+(or (not x5761) x5716)
+(or (not x5748) (not x5762) (not x5716) x5763)
+(or (not x5763) x5748)
+(or (not x5763) x5762)
+(or (not x5763) x5716)
+(or (not x5751) (not x187) x5764 x5765)
+(or (not x5765) x5751)
+(or (not x5765) x187)
+(or (not x5765) (not x5764))
+(or x5766 (not x5765))
+(or x5766 (not x5763))
+(or x5765 x5763 (not x5766))
+(or (not x5766) (not x5716) x5767)
+(or (not x5767) x5766)
+(or (not x5767) x5716)
+(or (not x5740) (not x5768) (not x5716) x5769)
+(or (not x5769) x5740)
+(or (not x5769) x5768)
+(or (not x5769) x5716)
+(or (not x5743) (not x188) x5770 x5771)
+(or (not x5771) x5743)
+(or (not x5771) x188)
+(or (not x5771) (not x5770))
+(or x5772 (not x5771))
+(or x5772 (not x5769))
+(or x5771 x5769 (not x5772))
+(or (not x5772) (not x5716) x5773)
+(or (not x5773) x5772)
+(or (not x5773) x5716)
+(or (not x5748) (not x5774) (not x5716) x5775)
+(or (not x5775) x5748)
+(or (not x5775) x5774)
+(or (not x5775) x5716)
+(or (not x5751) (not x187) x5776 x5777)
+(or (not x5777) x5751)
+(or (not x5777) x187)
+(or (not x5777) (not x5776))
+(or x5778 (not x5777))
+(or x5778 (not x5775))
+(or x5777 x5775 (not x5778))
+(or (not x5778) (not x5716) x5779)
+(or (not x5779) x5778)
+(or (not x5779) x5716)
+(or (not x5740) (not x5780) (not x5716) x5781)
+(or (not x5781) x5740)
+(or (not x5781) x5780)
+(or (not x5781) x5716)
+(or (not x5743) (not x188) (not x5782) x5783)
+(or (not x5783) x5743)
+(or (not x5783) x188)
+(or (not x5783) x5782)
+(or x5784 (not x5783))
+(or x5784 (not x5781))
+(or x5783 x5781 (not x5784))
+(or (not x5784) (not x5716) x5785)
+(or (not x5785) x5784)
+(or (not x5785) x5716)
+(or (not x5748) (not x5786) (not x5716) x5787)
+(or (not x5787) x5748)
+(or (not x5787) x5786)
+(or (not x5787) x5716)
+(or (not x5751) (not x187) (not x5788) x5789)
+(or (not x5789) x5751)
+(or (not x5789) x187)
+(or (not x5789) x5788)
+(or x5790 (not x5789))
+(or x5790 (not x5787))
+(or x5789 x5787 (not x5790))
+(or (not x5790) (not x5716) x5791)
+(or (not x5791) x5790)
+(or (not x5791) x5716)
+(or (not x5740) (not x5792) (not x5716) x5793)
+(or (not x5793) x5740)
+(or (not x5793) x5792)
+(or (not x5793) x5716)
+(or (not x5743) (not x188) x5794 x5795)
+(or (not x5795) x5743)
+(or (not x5795) x188)
+(or (not x5795) (not x5794))
+(or x5796 (not x5795))
+(or x5796 (not x5793))
+(or x5795 x5793 (not x5796))
+(or (not x5796) (not x5716) x5797)
+(or (not x5797) x5796)
+(or (not x5797) x5716)
+(or (not x5748) (not x5798) (not x5716) x5799)
+(or (not x5799) x5748)
+(or (not x5799) x5798)
+(or (not x5799) x5716)
+(or (not x5751) (not x187) x5800 x5801)
+(or (not x5801) x5751)
+(or (not x5801) x187)
+(or (not x5801) (not x5800))
+(or x5802 (not x5801))
+(or x5802 (not x5799))
+(or x5801 x5799 (not x5802))
+(or (not x5802) (not x5716) x5803)
+(or (not x5803) x5802)
+(or (not x5803) x5716)
+(or (not x5740) (not x5804) (not x5716) x5805)
+(or (not x5805) x5740)
+(or (not x5805) x5804)
+(or (not x5805) x5716)
+(or (not x5743) (not x188) x5806 x5807)
+(or (not x5807) x5743)
+(or (not x5807) x188)
+(or (not x5807) (not x5806))
+(or x5808 (not x5807))
+(or x5808 (not x5805))
+(or x5807 x5805 (not x5808))
+(or (not x5808) (not x5716) x5809)
+(or (not x5809) x5808)
+(or (not x5809) x5716)
+(or (not x5748) (not x5810) (not x5716) x5811)
+(or (not x5811) x5748)
+(or (not x5811) x5810)
+(or (not x5811) x5716)
+(or (not x5751) (not x187) x5812 x5813)
+(or (not x5813) x5751)
+(or (not x5813) x187)
+(or (not x5813) (not x5812))
+(or x5814 (not x5813))
+(or x5814 (not x5811))
+(or x5813 x5811 (not x5814))
+(or (not x5814) (not x5716) x5815)
+(or (not x5815) x5814)
+(or (not x5815) x5716)
+(or (not x5816) (not x5817) (not x5716) x5818)
+(or (not x5818) x5816)
+(or (not x5818) x5817)
+(or (not x5818) x5716)
+(or (not x5819) (not x190) (not x190) x5820)
+(or (not x5820) x5819)
+(or (not x5820) x190)
+(or x5821 (not x5820))
+(or x5821 (not x5818))
+(or x5820 x5818 (not x5821))
+(or (not x5821) (not x5716) x5822)
+(or (not x5822) x5821)
+(or (not x5822) x5716)
+(or (not x5823) (not x5824) (not x5716) x5825)
+(or (not x5825) x5823)
+(or (not x5825) x5824)
+(or (not x5825) x5716)
+(or (not x5826) (not x189) (not x189) x5827)
+(or (not x5827) x5826)
+(or (not x5827) x189)
+(or x5828 (not x5827))
+(or x5828 (not x5825))
+(or x5827 x5825 (not x5828))
+(or (not x5828) (not x5716) x5829)
+(or (not x5829) x5828)
+(or (not x5829) x5716)
+(or x5823 (not x5830))
+(or x5823 x189)
+(or x5830 (not x189) (not x5823))
+(or (not x5823) (not x5831) (not x5716) (not x5832) (not x5716) x5833)
+(or (not x5833) x5823)
+(or (not x5833) x5831)
+(or (not x5833) x5716)
+(or (not x5833) x5832)
+(or (not x5833) x5716)
+(or (not x5826) (not x189) x5834)
+(or (not x5834) x5826)
+(or (not x5834) x189)
+(or x5835 (not x5834))
+(or x5835 (not x5833))
+(or x5834 x5833 (not x5835))
+(or (not x5835) (not x5716) x5836)
+(or (not x5836) x5835)
+(or (not x5836) x5716)
+(or x5837 x5838)
+(or x5837 x5716)
+(or x5837 x5839)
+(or x5837 x5716)
+(or x5837 x5831)
+(or x5837 x5716)
+(or (not x5838) (not x5716) (not x5839) (not x5716) (not x5831) (not x5716) (not x5837))
+(or (not x5837) (not x5840) x5841)
+(or (not x5841) x5837)
+(or (not x5841) x5840)
+(or x5842 x5838)
+(or x5842 x5716)
+(or x5842 x5838)
+(or x5842 x5716)
+(or x5842 (not x5841))
+(or (not x5838) (not x5716) (not x5838) (not x5716) x5841 (not x5842))
+(or (not x5843) (not x5844) x5845)
+(or (not x5845) x5843)
+(or (not x5845) x5844)
+(or x5840 (not x5846))
+(or x5840 (not x5845))
+(or x5846 x5845 (not x5840))
+(or (not x5838) (not x5716) (not x5839) (not x5716) (not x5831) (not x5716) x5847)
+(or (not x5847) x5838)
+(or (not x5847) x5716)
+(or (not x5847) x5839)
+(or (not x5847) x5716)
+(or (not x5847) x5831)
+(or (not x5847) x5716)
+(or x5848 (not x5847))
+(or x5848 (not x5846))
+(or x5848 (not x5845))
+(or x5847 x5846 x5845 (not x5848))
+(or x5849 x5846 x5848)
+(or x5849 (not x5846) (not x5848))
+(or (not x5849) x5846 (not x5848))
+(or (not x5849) (not x5846) x5848)
+(or x5850 x5849 x5842)
+(or x5850 (not x5849) (not x5842))
+(or (not x5850) x5849 (not x5842))
+(or (not x5850) (not x5849) x5842)
+(or (not x5851) (not x5852) (not x5853) (not x5854) (not x5850) x5855)
+(or (not x5855) x5851)
+(or (not x5855) x5852)
+(or (not x5855) x5853)
+(or (not x5855) x5854)
+(or (not x5855) x5850)
+(or (not x5856) (not x5838) (not x5716) x5857)
+(or (not x5857) x5856)
+(or (not x5857) x5838)
+(or (not x5857) x5716)
+(or x5858 (not x5857))
+(or x5858 (not x5855))
+(or x5857 x5855 (not x5858))
+(or (not x5858) (not x5716) x5859)
+(or (not x5859) x5858)
+(or (not x5859) x5716)
+(or x5816 (not x5860))
+(or x5816 x190)
+(or x5860 (not x190) (not x5816))
+(or (not x5816) (not x5861) (not x5716) (not x5862) (not x5716) x5863)
+(or (not x5863) x5816)
+(or (not x5863) x5861)
+(or (not x5863) x5716)
+(or (not x5863) x5862)
+(or (not x5863) x5716)
+(or (not x5819) (not x190) x5864)
+(or (not x5864) x5819)
+(or (not x5864) x190)
+(or x5865 (not x5864))
+(or x5865 (not x5863))
+(or x5864 x5863 (not x5865))
+(or (not x5865) (not x5716) x5866)
+(or (not x5866) x5865)
+(or (not x5866) x5716)
+(or x5748 (not x5867))
+(or x5748 x187)
+(or x5867 (not x187) (not x5748))
+(or (not x5748) (not x5868) (not x5716) (not x5869) (not x5716) x5870)
+(or (not x5870) x5748)
+(or (not x5870) x5868)
+(or (not x5870) x5716)
+(or (not x5870) x5869)
+(or (not x5870) x5716)
+(or (not x5751) (not x187) x5871)
+(or (not x5871) x5751)
+(or (not x5871) x187)
+(or x5872 (not x5871))
+(or x5872 (not x5870))
+(or x5871 x5870 (not x5872))
+(or (not x5872) (not x5716) x5873)
+(or (not x5873) x5872)
+(or (not x5873) x5716)
+(or x5874 x5875)
+(or x5874 x5716)
+(or x5874 x5839)
+(or x5874 x5716)
+(or x5874 x5868)
+(or x5874 x5716)
+(or (not x5875) (not x5716) (not x5839) (not x5716) (not x5868) (not x5716) (not x5874))
+(or (not x5874) (not x5876) x5877)
+(or (not x5877) x5874)
+(or (not x5877) x5876)
+(or x5878 x5875)
+(or x5878 x5716)
+(or x5878 x5875)
+(or x5878 x5716)
+(or x5878 (not x5877))
+(or (not x5875) (not x5716) (not x5875) (not x5716) x5877 (not x5878))
+(or (not x5879) (not x5880) x5881)
+(or (not x5881) x5879)
+(or (not x5881) x5880)
+(or x5876 (not x5882))
+(or x5876 (not x5881))
+(or x5882 x5881 (not x5876))
+(or (not x5875) (not x5716) (not x5839) (not x5716) (not x5868) (not x5716) x5883)
+(or (not x5883) x5875)
+(or (not x5883) x5716)
+(or (not x5883) x5839)
+(or (not x5883) x5716)
+(or (not x5883) x5868)
+(or (not x5883) x5716)
+(or x5884 (not x5883))
+(or x5884 (not x5882))
+(or x5884 (not x5881))
+(or x5883 x5882 x5881 (not x5884))
+(or x5885 x5882 x5884)
+(or x5885 (not x5882) (not x5884))
+(or (not x5885) x5882 (not x5884))
+(or (not x5885) (not x5882) x5884)
+(or x5886 x5885 x5878)
+(or x5886 (not x5885) (not x5878))
+(or (not x5886) x5885 (not x5878))
+(or (not x5886) (not x5885) x5878)
+(or (not x5851) (not x5887) (not x5716) x5888 (not x5716) (not x5854) (not x5889) (not x5853) (not x5854) (not x5886) x5890)
+(or (not x5890) x5851)
+(or (not x5890) x5887)
+(or (not x5890) x5716)
+(or (not x5890) (not x5888))
+(or (not x5890) x5716)
+(or (not x5890) x5854)
+(or (not x5890) x5889)
+(or (not x5890) x5853)
+(or (not x5890) x5854)
+(or (not x5890) x5886)
+(or (not x5891) (not x5875) (not x5716) x5892)
+(or (not x5892) x5891)
+(or (not x5892) x5875)
+(or (not x5892) x5716)
+(or x5893 (not x5892))
+(or x5893 (not x5890))
+(or x5892 x5890 (not x5893))
+(or (not x5893) (not x5716) x5894)
+(or (not x5894) x5893)
+(or (not x5894) x5716)
+(or x5740 (not x5895))
+(or x5740 x188)
+(or x5895 (not x188) (not x5740))
+(or (not x5740) (not x5896) (not x5716) (not x5897) (not x5716) x5898)
+(or (not x5898) x5740)
+(or (not x5898) x5896)
+(or (not x5898) x5716)
+(or (not x5898) x5897)
+(or (not x5898) x5716)
+(or (not x5743) (not x188) x5899)
+(or (not x5899) x5743)
+(or (not x5899) x188)
+(or x5900 (not x5899))
+(or x5900 (not x5898))
+(or x5899 x5898 (not x5900))
+(or (not x5900) (not x5716) x5901)
+(or (not x5901) x5900)
+(or (not x5901) x5716)
+(or x5844 (not x5902))
+(or x5844 x5831)
+(or x5844 x5716)
+(or x5902 (not x5831) (not x5716) (not x5844))
+(or x5903 x5904)
+(or x5903 x5716)
+(or x5903 (not x5902))
+(or x5903 x5831)
+(or x5903 x5716)
+(or (not x5904) (not x5716) x5902 (not x5831) (not x5716) (not x5903))
+(or x5905 (not x5906))
+(or x5905 x5861)
+(or x5905 x5716)
+(or x5906 (not x5861) (not x5716) (not x5905))
+(or (not x5905) (not x5903) x5907)
+(or (not x5907) x5905)
+(or (not x5907) x5903)
+(or x5908 x5906 x5907)
+(or x5908 (not x5906) (not x5907))
+(or (not x5908) x5906 (not x5907))
+(or (not x5908) (not x5906) x5907)
+(or (not x5909) (not x5908) x5910)
+(or (not x5910) x5909)
+(or (not x5910) x5908)
+(or (not x5911) (not x5912) (not x5904) (not x5716) x5913)
+(or (not x5913) x5911)
+(or (not x5913) x5912)
+(or (not x5913) x5904)
+(or (not x5913) x5716)
+(or x5914 (not x5913))
+(or x5914 (not x5910))
+(or x5913 x5910 (not x5914))
+(or (not x5914) (not x5716) x5915)
+(or (not x5915) x5914)
+(or (not x5915) x5716)
+(or (not x5722) (not x5716) x5916)
+(or (not x5916) x5722)
+(or (not x5916) x5716)
+(or (not x5728) (not x5716) x5917)
+(or (not x5917) x5728)
+(or (not x5917) x5716)
+(or (not x5734) (not x5716) x5918)
+(or (not x5918) x5734)
+(or (not x5918) x5716)
+(or x5919 (not x5920))
+(or x5919 x5716)
+(or x5919 (not x5921))
+(or x5919 x5922)
+(or x5919 x5923)
+(or x5919 x5924)
+(or x5919 (not x5925))
+(or x5919 x5926)
+(or x5919 (not x5927))
+(or x5919 x5928)
+(or x5919 x5929)
+(or x5919 x5930)
+(or x5919 (not x5931))
+(or x5919 x5932)
+(or x5919 x5933)
+(or x5919 x5934)
+(or x5919 (not x5918))
+(or x5919 (not x5917))
+(or x5919 (not x5916))
+(or x5920 (not x5716) x5921 (not x5922) (not x5923) (not x5924) x5925 (not x5926) x5927 (not x5928) (not x5929) (not x5930) x5931 (not x5932) (not x5933) (not x5934) x5918 x5917 x5916 (not x5919))
+(or (not x5919) (not x5839) (not x5716) x5935)
+(or (not x5935) x5919)
+(or (not x5935) x5839)
+(or (not x5935) x5716)
+(or x5936 x5722)
+(or x5936 x5716)
+(or (not x5722) (not x5716) (not x5936))
+(or x5937 x5728)
+(or x5937 x5716)
+(or (not x5728) (not x5716) (not x5937))
+(or x5938 x5734)
+(or x5938 x5716)
+(or (not x5734) (not x5716) (not x5938))
+(or x5920 (not x5716) (not x5939) (not x5922) (not x5923) (not x5924) x5925 (not x5926) x5927 (not x5928) (not x5929) (not x5930) x5931 (not x5932) (not x5933) (not x5934) (not x5938) (not x5937) (not x5936) x5940 x5941)
+(or (not x5941) (not x5920))
+(or (not x5941) x5716)
+(or (not x5941) x5939)
+(or (not x5941) x5922)
+(or (not x5941) x5923)
+(or (not x5941) x5924)
+(or (not x5941) (not x5925))
+(or (not x5941) x5926)
+(or (not x5941) (not x5927))
+(or (not x5941) x5928)
+(or (not x5941) x5929)
+(or (not x5941) x5930)
+(or (not x5941) (not x5931))
+(or (not x5941) x5932)
+(or (not x5941) x5933)
+(or (not x5941) x5934)
+(or (not x5941) x5938)
+(or (not x5941) x5937)
+(or (not x5941) x5936)
+(or (not x5941) (not x5940))
+(or x5942 (not x5941))
+(or x5942 (not x5935))
+(or x5941 x5935 (not x5942))
+(or (not x5942) (not x5716) x5943)
+(or (not x5943) x5942)
+(or (not x5943) x5716)
+(or x5880 (not x5902))
+(or x5880 x5868)
+(or x5880 x5716)
+(or x5902 (not x5868) (not x5716) (not x5880))
+(or x5944 x5945)
+(or x5944 x5716)
+(or x5944 (not x5902))
+(or x5944 x5868)
+(or x5944 x5716)
+(or (not x5945) (not x5716) x5902 (not x5868) (not x5716) (not x5944))
+(or x5946 (not x5947))
+(or x5946 x5896)
+(or x5946 x5716)
+(or x5947 (not x5896) (not x5716) (not x5946))
+(or (not x5946) (not x5944) x5948)
+(or (not x5948) x5946)
+(or (not x5948) x5944)
+(or x5949 x5947 x5948)
+(or x5949 (not x5947) (not x5948))
+(or (not x5949) x5947 (not x5948))
+(or (not x5949) (not x5947) x5948)
+(or (not x5950) (not x5949) x5951)
+(or (not x5951) x5950)
+(or (not x5951) x5949)
+(or (not x5952) (not x5953) (not x5945) (not x5716) x5954)
+(or (not x5954) x5952)
+(or (not x5954) x5953)
+(or (not x5954) x5945)
+(or (not x5954) x5716)
+(or x5955 (not x5954))
+(or x5955 (not x5951))
+(or x5954 x5951 (not x5955))
+(or (not x5955) (not x5716) x5956)
+(or (not x5956) x5955)
+(or (not x5956) x5716)
+(or (not x5957) (not x5958) (not x5716) x5959)
+(or (not x5959) x5957)
+(or (not x5959) x5958)
+(or (not x5959) x5716)
+(or (not x5879) (not x5897) (not x5716) (not x5741) (not x5716) x5960)
+(or (not x5960) x5879)
+(or (not x5960) x5897)
+(or (not x5960) x5716)
+(or (not x5960) x5741)
+(or (not x5960) x5716)
+(or x5961 (not x5960))
+(or x5961 (not x5959))
+(or x5960 x5959 (not x5961))
+(or (not x5961) (not x5716) x5962)
+(or (not x5962) x5961)
+(or (not x5962) x5716)
+(or (not x5963) (not x5964) (not x5716) x5965)
+(or (not x5965) x5963)
+(or (not x5965) x5964)
+(or (not x5965) x5716)
+(or (not x5966) (not x5869) (not x5716) (not x5749) (not x5716) x5967)
+(or (not x5967) x5966)
+(or (not x5967) x5869)
+(or (not x5967) x5716)
+(or (not x5967) x5749)
+(or (not x5967) x5716)
+(or x5968 (not x5967))
+(or x5968 (not x5965))
+(or x5967 x5965 (not x5968))
+(or (not x5968) (not x5716) x5969)
+(or (not x5969) x5968)
+(or (not x5969) x5716)
+(or (not x5957) (not x5970) (not x5716) x5971)
+(or (not x5971) x5957)
+(or (not x5971) x5970)
+(or (not x5971) x5716)
+(or (not x5879) (not x5897) (not x5716) (not x5756) (not x5716) x5972)
+(or (not x5972) x5879)
+(or (not x5972) x5897)
+(or (not x5972) x5716)
+(or (not x5972) x5756)
+(or (not x5972) x5716)
+(or x5973 (not x5972))
+(or x5973 (not x5971))
+(or x5972 x5971 (not x5973))
+(or (not x5973) (not x5716) x5974)
+(or (not x5974) x5973)
+(or (not x5974) x5716)
+(or (not x5963) (not x5975) (not x5716) x5976)
+(or (not x5976) x5963)
+(or (not x5976) x5975)
+(or (not x5976) x5716)
+(or (not x5966) (not x5869) (not x5716) (not x5762) (not x5716) x5977)
+(or (not x5977) x5966)
+(or (not x5977) x5869)
+(or (not x5977) x5716)
+(or (not x5977) x5762)
+(or (not x5977) x5716)
+(or x5978 (not x5977))
+(or x5978 (not x5976))
+(or x5977 x5976 (not x5978))
+(or (not x5978) (not x5716) x5979)
+(or (not x5979) x5978)
+(or (not x5979) x5716)
+(or (not x5957) (not x5980) (not x5716) x5981)
+(or (not x5981) x5957)
+(or (not x5981) x5980)
+(or (not x5981) x5716)
+(or (not x5879) (not x5897) (not x5716) (not x5768) (not x5716) x5982)
+(or (not x5982) x5879)
+(or (not x5982) x5897)
+(or (not x5982) x5716)
+(or (not x5982) x5768)
+(or (not x5982) x5716)
+(or x5983 (not x5982))
+(or x5983 (not x5981))
+(or x5982 x5981 (not x5983))
+(or (not x5983) (not x5716) x5984)
+(or (not x5984) x5983)
+(or (not x5984) x5716)
+(or (not x5963) (not x5985) (not x5716) x5986)
+(or (not x5986) x5963)
+(or (not x5986) x5985)
+(or (not x5986) x5716)
+(or (not x5966) (not x5869) (not x5716) (not x5774) (not x5716) x5987)
+(or (not x5987) x5966)
+(or (not x5987) x5869)
+(or (not x5987) x5716)
+(or (not x5987) x5774)
+(or (not x5987) x5716)
+(or x5988 (not x5987))
+(or x5988 (not x5986))
+(or x5987 x5986 (not x5988))
+(or (not x5988) (not x5716) x5989)
+(or (not x5989) x5988)
+(or (not x5989) x5716)
+(or (not x5957) (not x5990) (not x5716) x5991)
+(or (not x5991) x5957)
+(or (not x5991) x5990)
+(or (not x5991) x5716)
+(or (not x5879) (not x5897) (not x5716) (not x5780) (not x5716) x5992)
+(or (not x5992) x5879)
+(or (not x5992) x5897)
+(or (not x5992) x5716)
+(or (not x5992) x5780)
+(or (not x5992) x5716)
+(or x5993 (not x5992))
+(or x5993 (not x5991))
+(or x5992 x5991 (not x5993))
+(or (not x5993) (not x5716) x5994)
+(or (not x5994) x5993)
+(or (not x5994) x5716)
+(or (not x5963) (not x5995) (not x5716) x5996)
+(or (not x5996) x5963)
+(or (not x5996) x5995)
+(or (not x5996) x5716)
+(or (not x5966) (not x5869) (not x5716) (not x5786) (not x5716) x5997)
+(or (not x5997) x5966)
+(or (not x5997) x5869)
+(or (not x5997) x5716)
+(or (not x5997) x5786)
+(or (not x5997) x5716)
+(or x5998 (not x5997))
+(or x5998 (not x5996))
+(or x5997 x5996 (not x5998))
+(or (not x5998) (not x5716) x5999)
+(or (not x5999) x5998)
+(or (not x5999) x5716)
+(or (not x5957) (not x6000) (not x5716) x6001)
+(or (not x6001) x5957)
+(or (not x6001) x6000)
+(or (not x6001) x5716)
+(or (not x5879) (not x5897) (not x5716) (not x5792) (not x5716) x6002)
+(or (not x6002) x5879)
+(or (not x6002) x5897)
+(or (not x6002) x5716)
+(or (not x6002) x5792)
+(or (not x6002) x5716)
+(or x6003 (not x6002))
+(or x6003 (not x6001))
+(or x6002 x6001 (not x6003))
+(or (not x6003) (not x5716) x6004)
+(or (not x6004) x6003)
+(or (not x6004) x5716)
+(or (not x5963) (not x6005) (not x5716) x6006)
+(or (not x6006) x5963)
+(or (not x6006) x6005)
+(or (not x6006) x5716)
+(or (not x5966) (not x5869) (not x5716) (not x5798) (not x5716) x6007)
+(or (not x6007) x5966)
+(or (not x6007) x5869)
+(or (not x6007) x5716)
+(or (not x6007) x5798)
+(or (not x6007) x5716)
+(or x6008 (not x6007))
+(or x6008 (not x6006))
+(or x6007 x6006 (not x6008))
+(or (not x6008) (not x5716) x6009)
+(or (not x6009) x6008)
+(or (not x6009) x5716)
+(or (not x5957) (not x6010) (not x5716) x6011)
+(or (not x6011) x5957)
+(or (not x6011) x6010)
+(or (not x6011) x5716)
+(or (not x5879) (not x5897) (not x5716) (not x5804) (not x5716) x6012)
+(or (not x6012) x5879)
+(or (not x6012) x5897)
+(or (not x6012) x5716)
+(or (not x6012) x5804)
+(or (not x6012) x5716)
+(or x6013 (not x6012))
+(or x6013 (not x6011))
+(or x6012 x6011 (not x6013))
+(or (not x6013) (not x5716) x6014)
+(or (not x6014) x6013)
+(or (not x6014) x5716)
+(or (not x5963) (not x6015) (not x5716) x6016)
+(or (not x6016) x5963)
+(or (not x6016) x6015)
+(or (not x6016) x5716)
+(or (not x5966) (not x5869) (not x5716) (not x5810) (not x5716) x6017)
+(or (not x6017) x5966)
+(or (not x6017) x5869)
+(or (not x6017) x5716)
+(or (not x6017) x5810)
+(or (not x6017) x5716)
+(or x6018 (not x6017))
+(or x6018 (not x6016))
+(or x6017 x6016 (not x6018))
+(or (not x6018) (not x5716) x6019)
+(or (not x6019) x6018)
+(or (not x6019) x5716)
+(or (not x6020) (not x6021) (not x5716) x6022)
+(or (not x6022) x6020)
+(or (not x6022) x6021)
+(or (not x6022) x5716)
+(or (not x5843) (not x5862) (not x5716) (not x5817) (not x5716) x6023)
+(or (not x6023) x5843)
+(or (not x6023) x5862)
+(or (not x6023) x5716)
+(or (not x6023) x5817)
+(or (not x6023) x5716)
+(or x6024 (not x6023))
+(or x6024 (not x6022))
+(or x6023 x6022 (not x6024))
+(or (not x6024) (not x5716) x6025)
+(or (not x6025) x6024)
+(or (not x6025) x5716)
+(or (not x6026) (not x6027) (not x5716) x6028)
+(or (not x6028) x6026)
+(or (not x6028) x6027)
+(or (not x6028) x5716)
+(or (not x6029) (not x5832) (not x5716) (not x5824) (not x5716) x6030)
+(or (not x6030) x6029)
+(or (not x6030) x5832)
+(or (not x6030) x5716)
+(or (not x6030) x5824)
+(or (not x6030) x5716)
+(or x6031 (not x6030))
+(or x6031 (not x6028))
+(or x6030 x6028 (not x6031))
+(or (not x6031) (not x5716) x6032)
+(or (not x6032) x6031)
+(or (not x6032) x5716)
+(or x6033 (not x6034))
+(or x6033 x5716)
+(or x6034 (not x5716) (not x6033))
+(or x6035 (not x5721))
+(or x6035 (not x6036))
+(or x5721 x6036 (not x6035))
+(or (not x6035) (not x6037) x6038)
+(or (not x6038) x6035)
+(or (not x6038) x6037)
+(or x5721 (not x6039) x6040 x6041)
+(or (not x6041) (not x5721))
+(or (not x6041) x6039)
+(or (not x6041) (not x6040))
+(or x6042 (not x6041))
+(or x6042 (not x6038))
+(or x6042 x5716)
+(or x6041 x6038 (not x5716) (not x6042))
+(or (not x6043) (not x5716) (not x6044) (not x6045) (not x6046) (not x6047) (not x5939) (not x6048) (not x6049) (not x5716) x6050)
+(or (not x6050) x6043)
+(or (not x6050) x5716)
+(or (not x6050) x6044)
+(or (not x6050) x6045)
+(or (not x6050) x6046)
+(or (not x6050) x6047)
+(or (not x6050) x5939)
+(or (not x6050) x6048)
+(or (not x6050) x6049)
+(or (not x6050) x5716)
+(or (not x6051) (not x6049) (not x5716) (not x6045) (not x6052) x5920 (not x5716) (not x6049) (not x5716) x6053)
+(or (not x6053) x6051)
+(or (not x6053) x6049)
+(or (not x6053) x5716)
+(or (not x6053) x6045)
+(or (not x6053) x6052)
+(or (not x6053) (not x5920))
+(or (not x6053) x5716)
+(or (not x6053) x6049)
+(or (not x6053) x5716)
+(or (not x6039) x5721 x6054)
+(or (not x6054) x6039)
+(or (not x6054) (not x5721))
+(or x6055 (not x6054))
+(or x6055 (not x6056))
+(or x6054 x6056 (not x6055))
+(or (not x6051) (not x6044) (not x6055) x6057)
+(or (not x6057) x6051)
+(or (not x6057) x6044)
+(or (not x6057) x6055)
+(or (not x6045) (not x6046) (not x6058) (not x6049) (not x5716) x6059)
+(or (not x6059) x6045)
+(or (not x6059) x6046)
+(or (not x6059) x6058)
+(or (not x6059) x6049)
+(or (not x6059) x5716)
+(or x6060 (not x6059))
+(or x6060 (not x6057))
+(or x6060 (not x6053))
+(or x6060 (not x6050))
+(or x6059 x6057 x6053 x6050 (not x6060))
+(or (not x6060) (not x5716) x6061)
+(or (not x6061) x6060)
+(or (not x6061) x5716)
+(or x6062 (not x6063))
+(or x6062 (not x6064))
+(or x6063 x6064 (not x6062))
+(or x6065 (not x5931))
+(or x6065 x6066)
+(or x5931 (not x6066) (not x6065))
+(or x6067 x5931)
+(or x6067 x6068)
+(or (not x5931) (not x6068) (not x6067))
+(or (not x6067) (not x6065) x6069)
+(or (not x6069) x6067)
+(or (not x6069) x6065)
+(or x6070 x6071)
+(or x6070 (not x6072))
+(or x6070 (not x5933))
+(or x6070 x5932)
+(or x6070 (not x6063))
+(or x6070 (not x6069))
+(or (not x6071) x6072 x5933 (not x5932) x6063 x6069 (not x6070))
+(or x6073 x6071)
+(or x6073 (not x6072))
+(or x6073 (not x5933))
+(or x6073 (not x5932))
+(or x6073 x6074)
+(or (not x6071) x6072 x5933 x5932 (not x6074) (not x6073))
+(or (not x6073) (not x6070) (not x6062) x6075)
+(or (not x6075) x6073)
+(or (not x6075) x6070)
+(or (not x6075) x6062)
+(or x6047 (not x5921))
+(or x6047 (not x6076))
+(or x6047 (not x6075))
+(or x5921 x6076 x6075 (not x6047))
+(or (not x6043) (not x5716) (not x6044) (not x6045) (not x6046) (not x6047) (not x5939) (not x6048) (not x6043) (not x5716) x6077)
+(or (not x6077) x6043)
+(or (not x6077) x5716)
+(or (not x6077) x6044)
+(or (not x6077) x6045)
+(or (not x6077) x6046)
+(or (not x6077) x6047)
+(or (not x6077) x5939)
+(or (not x6077) x6048)
+(or (not x6077) x6043)
+(or (not x6077) x5716)
+(or (not x6052) x5920 (not x5716) (not x6043) (not x5716) x6078)
+(or (not x6078) x6052)
+(or (not x6078) (not x5920))
+(or (not x6078) x5716)
+(or (not x6078) x6043)
+(or (not x6078) x5716)
+(or (not x6079) (not x6037) x6080)
+(or (not x6080) x6079)
+(or (not x6080) x6037)
+(or x6081 (not x6080))
+(or x6081 (not x6078))
+(or x6080 x6078 (not x6081))
+(or (not x6051) (not x6049) (not x5716) (not x6045) (not x6081) x6082)
+(or (not x6082) x6051)
+(or (not x6082) x6049)
+(or (not x6082) x5716)
+(or (not x6082) x6045)
+(or (not x6082) x6081)
+(or (not x6051) (not x6044) (not x6083) (not x6043) (not x5716) x6084)
+(or (not x6084) x6051)
+(or (not x6084) x6044)
+(or (not x6084) x6083)
+(or (not x6084) x6043)
+(or (not x6084) x5716)
+(or (not x6045) (not x6046) (not x6058) (not x6043) (not x5716) x6085)
+(or (not x6085) x6045)
+(or (not x6085) x6046)
+(or (not x6085) x6058)
+(or (not x6085) x6043)
+(or (not x6085) x5716)
+(or x6086 (not x6085))
+(or x6086 (not x6084))
+(or x6086 (not x6082))
+(or x6086 (not x6077))
+(or x6085 x6084 x6082 x6077 (not x6086))
+(or (not x6086) (not x5716) x6087)
+(or (not x6087) x6086)
+(or (not x6087) x5716)
+(or x5826 x5832)
+(or x5826 x5716)
+(or (not x5832) (not x5716) (not x5826))
+(or x6026 (not x6088))
+(or x6026 x5832)
+(or x6026 x5716)
+(or x6088 (not x5832) (not x5716) (not x6026))
+(or (not x6026) (not x6089) (not x6090) (not x5831) (not x5716) x6091)
+(or (not x6091) x6026)
+(or (not x6091) x6089)
+(or (not x6091) x6090)
+(or (not x6091) x5831)
+(or (not x6091) x5716)
+(or (not x5832) (not x5716) x5830)
+(or (not x5830) x5832)
+(or (not x5830) x5716)
+(or (not x6029) (not x5832) (not x5716) (not x5832) (not x5716) x6092)
+(or (not x6092) x6029)
+(or (not x6092) x5832)
+(or (not x6092) x5716)
+(or (not x6092) x5832)
+(or (not x6092) x5716)
+(or x6093 (not x6092))
+(or x6093 (not x6091))
+(or x6092 x6091 (not x6093))
+(or (not x6093) (not x5716) x6094)
+(or (not x6094) x6093)
+(or (not x6094) x5716)
+(or x5819 x5862)
+(or x5819 x5716)
+(or (not x5862) (not x5716) (not x5819))
+(or x6020 (not x6095))
+(or x6020 x5862)
+(or x6020 x5716)
+(or x6095 (not x5862) (not x5716) (not x6020))
+(or (not x6020) (not x6096) (not x5861) (not x5716) x6097)
+(or (not x6097) x6020)
+(or (not x6097) x6096)
+(or (not x6097) x5861)
+(or (not x6097) x5716)
+(or (not x5862) (not x5716) x5860)
+(or (not x5860) x5862)
+(or (not x5860) x5716)
+(or (not x5843) (not x5862) (not x5716) (not x5862) (not x5716) x6098)
+(or (not x6098) x5843)
+(or (not x6098) x5862)
+(or (not x6098) x5716)
+(or (not x6098) x5862)
+(or (not x6098) x5716)
+(or x6099 (not x6098))
+(or x6099 (not x6097))
+(or x6098 x6097 (not x6099))
+(or (not x6099) (not x5716) x6100)
+(or (not x6100) x6099)
+(or (not x6100) x5716)
+(or x5751 x5869)
+(or x5751 x5716)
+(or (not x5869) (not x5716) (not x5751))
+(or x5963 (not x6101))
+(or x5963 x5869)
+(or x5963 x5716)
+(or x6101 (not x5869) (not x5716) (not x5963))
+(or (not x5963) (not x6102) (not x6103) (not x5868) (not x5716) x6104)
+(or (not x6104) x5963)
+(or (not x6104) x6102)
+(or (not x6104) x6103)
+(or (not x6104) x5868)
+(or (not x6104) x5716)
+(or (not x5869) (not x5716) x5867)
+(or (not x5867) x5869)
+(or (not x5867) x5716)
+(or (not x5966) (not x5869) (not x5716) (not x5869) (not x5716) x6105)
+(or (not x6105) x5966)
+(or (not x6105) x5869)
+(or (not x6105) x5716)
+(or (not x6105) x5869)
+(or (not x6105) x5716)
+(or x6106 (not x6105))
+(or x6106 (not x6104))
+(or x6105 x6104 (not x6106))
+(or (not x6106) (not x5716) x6107)
+(or (not x6107) x6106)
+(or (not x6107) x5716)
+(or x5743 x5897)
+(or x5743 x5716)
+(or (not x5897) (not x5716) (not x5743))
+(or x5957 (not x6108))
+(or x5957 x5897)
+(or x5957 x5716)
+(or x6108 (not x5897) (not x5716) (not x5957))
+(or (not x5957) (not x6109) (not x5896) (not x5716) x6110)
+(or (not x6110) x5957)
+(or (not x6110) x6109)
+(or (not x6110) x5896)
+(or (not x6110) x5716)
+(or (not x5897) (not x5716) x5895)
+(or (not x5895) x5897)
+(or (not x5895) x5716)
+(or (not x5879) (not x5897) (not x5716) (not x5897) (not x5716) x6111)
+(or (not x6111) x5879)
+(or (not x6111) x5897)
+(or (not x6111) x5716)
+(or (not x6111) x5897)
+(or (not x6111) x5716)
+(or x6112 (not x6111))
+(or x6112 (not x6110))
+(or x6111 x6110 (not x6112))
+(or (not x6112) (not x5716) x6113)
+(or (not x6113) x6112)
+(or (not x6113) x5716)
+(or x192 (not x6114) (not x5716) (not x6115) (not x5716) x6116)
+(or (not x6116) (not x192))
+(or (not x6116) x6114)
+(or (not x6116) x5716)
+(or (not x6116) x6115)
+(or (not x6116) x5716)
+(or x6117 (not x6118))
+(or x6117 (not x6119))
+(or x6117 (not x6120))
+(or x6118 x6119 x6120 (not x6117))
+(or (not x192) (not x6117) x6121)
+(or (not x6121) x192)
+(or (not x6121) x6117)
+(or x6122 (not x6121))
+(or x6122 (not x6116))
+(or x6121 x6116 (not x6122))
+(or (not x6122) (not x5716) x6123)
+(or (not x6123) x6122)
+(or (not x6123) x5716)
+(or x191 (not x6124) (not x5716) (not x6125) (not x5716) x6126)
+(or (not x6126) (not x191))
+(or (not x6126) x6124)
+(or (not x6126) x5716)
+(or (not x6126) x6125)
+(or (not x6126) x5716)
+(or x6127 (not x6128))
+(or x6127 (not x6129))
+(or x6127 (not x6130))
+(or x6128 x6129 x6130 (not x6127))
+(or (not x191) (not x6127) x6131)
+(or (not x6131) x191)
+(or (not x6131) x6127)
+(or x6132 (not x6131))
+(or x6132 (not x6126))
+(or x6131 x6126 (not x6132))
+(or (not x6132) (not x5716) x6133)
+(or (not x6133) x6132)
+(or (not x6133) x5716)
+(or (not x6134) (not x6135) (not x6136) x6137)
+(or (not x6137) x6134)
+(or (not x6137) x6135)
+(or (not x6137) x6136)
+(or (not x6138) (not x6134) (not x6139) (not x6140) (not x6114) (not x5716) x6141)
+(or (not x6141) x6138)
+(or (not x6141) x6134)
+(or (not x6141) x6139)
+(or (not x6141) x6140)
+(or (not x6141) x6114)
+(or (not x6141) x5716)
+(or x6142 (not x6141))
+(or x6142 (not x6137))
+(or x6141 x6137 (not x6142))
+(or (not x5887) (not x5716) (not x6136) (not x5854) (not x5889) (not x6143) (not x6142) x6144)
+(or (not x6144) x5887)
+(or (not x6144) x5716)
+(or (not x6144) x6136)
+(or (not x6144) x5854)
+(or (not x6144) x5889)
+(or (not x6144) x6143)
+(or (not x6144) x6142)
+(or (not x6145) (not x6146) (not x6136) x6147)
+(or (not x6147) x6145)
+(or (not x6147) x6146)
+(or (not x6147) x6136)
+(or (not x6145) (not x6148) (not x6149) (not x6150) (not x6114) (not x5716) x6151)
+(or (not x6151) x6145)
+(or (not x6151) x6148)
+(or (not x6151) x6149)
+(or (not x6151) x6150)
+(or (not x6151) x6114)
+(or (not x6151) x5716)
+(or x6152 (not x6153))
+(or x6152 (not x6151))
+(or x6153 x6151 (not x6152))
+(or (not x6154) (not x6152) x6155)
+(or (not x6155) x6154)
+(or (not x6155) x6152)
+(or x6156 (not x6155))
+(or x6156 (not x6147))
+(or x6155 x6147 (not x6156))
+(or (not x5887) (not x5716) x5888 (not x5716) (not x5854) (not x5889) (not x6156) x6157)
+(or (not x6157) x5887)
+(or (not x6157) x5716)
+(or (not x6157) (not x5888))
+(or (not x6157) x5716)
+(or (not x6157) x5854)
+(or (not x6157) x5889)
+(or (not x6157) x6156)
+(or (not x5879) (not x5966) (not x6158) (not x6136) x6159)
+(or (not x6159) x5879)
+(or (not x6159) x5966)
+(or (not x6159) x6158)
+(or (not x6159) x6136)
+(or (not x6160) (not x5879) (not x5966) (not x6161) (not x6162) x6163)
+(or (not x6163) x6160)
+(or (not x6163) x5879)
+(or (not x6163) x5966)
+(or (not x6163) x6161)
+(or (not x6163) x6162)
+(or x6164 (not x6163))
+(or x6164 (not x6159))
+(or x6163 x6159 (not x6164))
+(or (not x6165) (not x6136) (not x5854) (not x6164) x6166)
+(or (not x6166) x6165)
+(or (not x6166) x6136)
+(or (not x6166) x5854)
+(or (not x6166) x6164)
+(or (not x6167) (not x6168) (not x6136) x6169)
+(or (not x6169) x6167)
+(or (not x6169) x6168)
+(or (not x6169) x6136)
+(or (not x6167) (not x6170) (not x5879) (not x5966) (not x6162) x6171)
+(or (not x6171) x6167)
+(or (not x6171) x6170)
+(or (not x6171) x5879)
+(or (not x6171) x5966)
+(or (not x6171) x6162)
+(or x6172 (not x6173))
+(or x6172 (not x6171))
+(or x6173 x6171 (not x6172))
+(or (not x6174) (not x6172) x6175)
+(or (not x6175) x6174)
+(or (not x6175) x6172)
+(or x6176 (not x6175))
+(or x6176 (not x6169))
+(or x6175 x6169 (not x6176))
+(or (not x6165) x5888 (not x5716) (not x6176) x6177)
+(or (not x6177) x6165)
+(or (not x6177) (not x5888))
+(or (not x6177) x5716)
+(or (not x6177) x6176)
+(or x6178 (not x6177))
+(or x6178 (not x6166))
+(or x6178 (not x6157))
+(or x6178 (not x6144))
+(or x6178 x5716)
+(or x6177 x6166 x6157 x6144 (not x5716) (not x6178))
+(or x6179 (not x6180))
+(or x6179 (not x6181))
+(or x6179 (not x6182))
+(or x6180 x6181 x6182 (not x6179))
+(or (not x6183) (not x6179) x6184)
+(or (not x6184) x6183)
+(or (not x6184) x6179)
+(or x6135 (not x6185))
+(or x6135 (not x6184))
+(or x6185 x6184 (not x6135))
+(or (not x6134) (not x6135) (not x5887) (not x5716) x6186)
+(or (not x6186) x6134)
+(or (not x6186) x6135)
+(or (not x6186) x5887)
+(or (not x6186) x5716)
+(or x6183 (not x6181))
+(or x6183 x6114)
+(or x6183 x5716)
+(or x6181 (not x6114) (not x5716) (not x6183))
+(or (not x6183) (not x6140) (not x6187) x6188)
+(or (not x6188) x6183)
+(or (not x6188) x6140)
+(or (not x6188) x6187)
+(or (not x6140) (not x6114) (not x5716) x6180)
+(or (not x6180) x6140)
+(or (not x6180) x6114)
+(or (not x6180) x5716)
+(or x6139 (not x6180))
+(or x6139 (not x6188))
+(or x6180 x6188 (not x6139))
+(or x6090 (not x5902))
+(or x6090 (not x6189))
+(or x6090 (not x5906))
+(or x5902 x6189 x5906 (not x6090))
+(or x6089 x5839)
+(or x6089 x5716)
+(or x6089 (not x6190))
+(or x6089 (not x6191))
+(or x6089 (not x6192))
+(or x6089 (not x6193))
+(or x6089 (not x5846))
+(or (not x5839) (not x5716) x6190 x6191 x6192 x6193 x5846 (not x6089))
+(or (not x6089) (not x6090) x6194)
+(or (not x6194) x6089)
+(or (not x6194) x6090)
+(or x6195 (not x6194))
+(or x6195 x5831)
+(or x6195 x5716)
+(or x6194 (not x5831) (not x5716) (not x6195))
+(or x5912 (not x5902))
+(or x5912 (not x6190))
+(or x5912 (not x6191))
+(or x5912 (not x6192))
+(or x5912 (not x6193))
+(or x5902 x6190 x6191 x6192 x6193 (not x5912))
+(or x5911 x5839)
+(or x5911 x5716)
+(or x5911 (not x6190))
+(or x5911 (not x6191))
+(or x5911 (not x6192))
+(or x5911 (not x6193))
+(or x5911 x5838)
+(or x5911 x5716)
+(or (not x5839) (not x5716) x6190 x6191 x6192 x6193 (not x5838) (not x5716) (not x5911))
+(or (not x5911) (not x5912) x6189)
+(or (not x6189) x5911)
+(or (not x6189) x5912)
+(or x6096 (not x6189))
+(or x6096 x5904)
+(or x6096 x5716)
+(or x6189 (not x5904) (not x5716) (not x6096))
+(or x6196 (not x6189))
+(or x6196 x5904)
+(or x6196 x5716)
+(or x6196 x5861)
+(or x6196 x5716)
+(or x6189 (not x5904) (not x5716) (not x5861) (not x5716) (not x6196))
+(or (not x6162) (not x6196) (not x6195) x6181)
+(or (not x6181) x6162)
+(or (not x6181) x6196)
+(or (not x6181) x6195)
+(or x6134 (not x6181))
+(or x6134 x6124)
+(or x6134 x5716)
+(or x6181 (not x6124) (not x5716) (not x6134))
+(or (not x6134) (not x6139) x6197)
+(or (not x6197) x6134)
+(or (not x6197) x6139)
+(or x6140 (not x6198))
+(or x6140 (not x6199))
+(or x6140 (not x6200))
+(or x6198 x6199 x6200 (not x6140))
+(or (not x6140) (not x6124) (not x5716) x6185)
+(or (not x6185) x6140)
+(or (not x6185) x6124)
+(or (not x6185) x5716)
+(or x6138 (not x6185))
+(or x6138 (not x6197))
+(or x6185 x6197 (not x6138))
+(or (not x6138) (not x6134) (not x6139) (not x6183) (not x6140) (not x6187) x6201)
+(or (not x6201) x6138)
+(or (not x6201) x6134)
+(or (not x6201) x6139)
+(or (not x6201) x6183)
+(or (not x6201) x6140)
+(or (not x6201) x6187)
+(or x6202 (not x6201))
+(or x6202 (not x6186))
+(or x6201 x6186 (not x6202))
+(or (not x5887) (not x5716) (not x6136) (not x5854) (not x5889) (not x6143) (not x6202) x6203)
+(or (not x6203) x5887)
+(or (not x6203) x5716)
+(or (not x6203) x6136)
+(or (not x6203) x5854)
+(or (not x6203) x5889)
+(or (not x6203) x6143)
+(or (not x6203) x6202)
+(or x6204 (not x6205))
+(or x6204 (not x6206))
+(or x6204 x6114)
+(or x6204 x5716)
+(or x6205 x6206 (not x6114) (not x5716) (not x6204))
+(or (not x6149) (not x6204) x6207)
+(or (not x6207) x6149)
+(or (not x6207) x6204)
+(or x6146 (not x6153))
+(or x6146 (not x6207))
+(or x6153 x6207 (not x6146))
+(or (not x6145) (not x6146) (not x5887) (not x5716) x6208)
+(or (not x6208) x6145)
+(or (not x6208) x6146)
+(or (not x6208) x5887)
+(or (not x6208) x5716)
+(or x6149 (not x6206))
+(or x6149 x6124)
+(or x6149 x5716)
+(or x6206 (not x6124) (not x5716) (not x6149))
+(or (not x6149) (not x6150) (not x6114) (not x5716) x6209)
+(or (not x6209) x6149)
+(or (not x6209) x6150)
+(or (not x6209) x6114)
+(or (not x6209) x5716)
+(or (not x6150) (not x6124) (not x5716) x6205)
+(or (not x6205) x6150)
+(or (not x6205) x6124)
+(or (not x6205) x5716)
+(or x6148 (not x6205))
+(or x6148 (not x6209))
+(or x6205 x6209 (not x6148))
+(or x6103 (not x5902))
+(or x6103 (not x6210))
+(or x6103 (not x5947))
+(or x5902 x6210 x5947 (not x6103))
+(or x6102 x5839)
+(or x6102 x5716)
+(or x6102 (not x6190))
+(or x6102 x5887)
+(or x6102 x5716)
+(or x6102 (not x5888))
+(or x6102 x5716)
+(or x6102 (not x6193))
+(or x6102 (not x6211))
+(or x6102 (not x6192))
+(or x6102 (not x6193))
+(or x6102 (not x5882))
+(or (not x5839) (not x5716) x6190 (not x5887) (not x5716) x5888 (not x5716) x6193 x6211 x6192 x6193 x5882 (not x6102))
+(or (not x6102) (not x6103) x6212)
+(or (not x6212) x6102)
+(or (not x6212) x6103)
+(or x6213 (not x6212))
+(or x6213 x5868)
+(or x6213 x5716)
+(or x6212 (not x5868) (not x5716) (not x6213))
+(or x5953 (not x5902))
+(or x5953 (not x6190))
+(or x5953 x5887)
+(or x5953 x5716)
+(or x5953 (not x5888))
+(or x5953 x5716)
+(or x5953 (not x6193))
+(or x5953 (not x6211))
+(or x5953 (not x6192))
+(or x5953 (not x6193))
+(or x5902 x6190 (not x5887) (not x5716) x5888 (not x5716) x6193 x6211 x6192 x6193 (not x5953))
+(or x5952 x5839)
+(or x5952 x5716)
+(or x5952 (not x6190))
+(or x5952 x5887)
+(or x5952 x5716)
+(or x5952 (not x5888))
+(or x5952 x5716)
+(or x5952 (not x6193))
+(or x5952 (not x6211))
+(or x5952 (not x6192))
+(or x5952 (not x6193))
+(or x5952 x5875)
+(or x5952 x5716)
+(or (not x5839) (not x5716) x6190 (not x5887) (not x5716) x5888 (not x5716) x6193 x6211 x6192 x6193 (not x5875) (not x5716) (not x5952))
+(or (not x5952) (not x5953) x6210)
+(or (not x6210) x5952)
+(or (not x6210) x5953)
+(or x6109 (not x6210))
+(or x6109 x5945)
+(or x6109 x5716)
+(or x6210 (not x5945) (not x5716) (not x6109))
+(or x6214 (not x6210))
+(or x6214 x5945)
+(or x6214 x5716)
+(or x6214 x5896)
+(or x6214 x5716)
+(or x6210 (not x5945) (not x5716) (not x5896) (not x5716) (not x6214))
+(or (not x6187) (not x6214) (not x6213) x6206)
+(or (not x6206) x6187)
+(or (not x6206) x6214)
+(or (not x6206) x6213)
+(or x6145 (not x6206))
+(or x6145 (not x6198))
+(or x6206 x6198 (not x6145))
+(or (not x6145) (not x6148) x6215)
+(or (not x6215) x6145)
+(or (not x6215) x6148)
+(or x6150 (not x6182))
+(or x6150 (not x6216))
+(or x6150 (not x6217))
+(or x6182 x6216 x6217 (not x6150))
+(or (not x6150) (not x6162) x6153)
+(or (not x6153) x6150)
+(or (not x6153) x6162)
+(or x6154 (not x6153))
+(or x6154 (not x6215))
+(or x6153 x6215 (not x6154))
+(or (not x6154) (not x6150) (not x6162) x6218)
+(or (not x6218) x6154)
+(or (not x6218) x6150)
+(or (not x6218) x6162)
+(or x6219 (not x6218))
+(or x6219 (not x6208))
+(or x6218 x6208 (not x6219))
+(or (not x5887) (not x5716) x5888 (not x5716) (not x5854) (not x5889) (not x6219) x6220)
+(or (not x6220) x5887)
+(or (not x6220) x5716)
+(or (not x6220) (not x5888))
+(or (not x6220) x5716)
+(or (not x6220) x5854)
+(or (not x6220) x5889)
+(or (not x6220) x6219)
+(or x6221 (not x6095))
+(or x6221 (not x6088))
+(or x6221 x6124)
+(or x6221 x5716)
+(or x6095 x6088 (not x6124) (not x5716) (not x6221))
+(or (not x5843) (not x6029) (not x6221) x6222)
+(or (not x6222) x5843)
+(or (not x6222) x6029)
+(or (not x6222) x6221)
+(or x6158 (not x6108))
+(or x6158 (not x6101))
+(or x6158 (not x6222))
+(or x6108 x6101 x6222 (not x6158))
+(or (not x5879) (not x5966) (not x6158) (not x5887) (not x5716) x6223)
+(or (not x6223) x5879)
+(or (not x6223) x5966)
+(or (not x6223) x6158)
+(or (not x6223) x5887)
+(or (not x6223) x5716)
+(or (not x5879) (not x5966) (not x6161) (not x6162) x6224)
+(or (not x6224) x5879)
+(or (not x6224) x5966)
+(or (not x6224) x6161)
+(or (not x6224) x6162)
+(or x6225 (not x6108))
+(or x6225 (not x6101))
+(or x6225 (not x6224))
+(or x6108 x6101 x6224 (not x6225))
+(or (not x5843) (not x6029) (not x6124) (not x5716) x6226)
+(or (not x6226) x5843)
+(or (not x6226) x6029)
+(or (not x6226) x6124)
+(or (not x6226) x5716)
+(or x6161 (not x6095))
+(or x6161 (not x6088))
+(or x6161 (not x6226))
+(or x6095 x6088 x6226 (not x6161))
+(or (not x5879) (not x5966) (not x6161) x6227)
+(or (not x6227) x5879)
+(or (not x6227) x5966)
+(or (not x6227) x6161)
+(or x6160 (not x6108))
+(or x6160 (not x6101))
+(or x6160 (not x6227))
+(or x6108 x6101 x6227 (not x6160))
+(or (not x6160) (not x6225) x6228)
+(or (not x6228) x6160)
+(or (not x6228) x6225)
+(or x6229 (not x6228))
+(or x6229 (not x6223))
+(or x6228 x6223 (not x6229))
+(or (not x6165) (not x6136) (not x5854) (not x6229) x6230)
+(or (not x6230) x6165)
+(or (not x6230) x6136)
+(or (not x6230) x5854)
+(or (not x6230) x6229)
+(or x6029 x5831)
+(or x6029 x5716)
+(or (not x5831) (not x5716) (not x6029))
+(or x5843 x5861)
+(or x5843 x5716)
+(or (not x5861) (not x5716) (not x5843))
+(or (not x5843) (not x6029) x6198)
+(or (not x6198) x5843)
+(or (not x6198) x6029)
+(or x6231 (not x6108))
+(or x6231 (not x6101))
+(or x6231 (not x6198))
+(or x6108 x6101 x6198 (not x6231))
+(or (not x5879) (not x5966) (not x6231) x6232)
+(or (not x6232) x5879)
+(or (not x6232) x5966)
+(or (not x6232) x6231)
+(or x6168 (not x6173))
+(or x6168 (not x6232))
+(or x6173 x6232 (not x6168))
+(or (not x6167) (not x6168) (not x5887) (not x5716) x6233)
+(or (not x6233) x6167)
+(or (not x6233) x6168)
+(or (not x6233) x5887)
+(or (not x6233) x5716)
+(or x6162 (not x6095))
+(or x6162 (not x6088))
+(or x6095 x6088 (not x6162))
+(or x5966 x5868)
+(or x5966 x5716)
+(or (not x5868) (not x5716) (not x5966))
+(or x5879 x5896)
+(or x5879 x5716)
+(or (not x5896) (not x5716) (not x5879))
+(or (not x5879) (not x5966) x6182)
+(or (not x6182) x5879)
+(or (not x6182) x5966)
+(or (not x5879) (not x5966) (not x6162) x6234)
+(or (not x6234) x5879)
+(or (not x6234) x5966)
+(or (not x6234) x6162)
+(or x6187 (not x6108))
+(or x6187 (not x6101))
+(or x6108 x6101 (not x6187))
+(or x6170 (not x6108))
+(or x6170 (not x6101))
+(or x6170 (not x6234))
+(or x6108 x6101 x6234 (not x6170))
+(or x6167 x6114)
+(or x6167 x5716)
+(or (not x6114) (not x5716) (not x6167))
+(or (not x6167) (not x6170) x6235)
+(or (not x6235) x6167)
+(or (not x6235) x6170)
+(or x6174 (not x6173))
+(or x6174 (not x6235))
+(or x6173 x6235 (not x6174))
+(or (not x6174) (not x6167) (not x6170) x6236)
+(or (not x6236) x6174)
+(or (not x6236) x6167)
+(or (not x6236) x6170)
+(or x6237 (not x6236))
+(or x6237 (not x6233))
+(or x6236 x6233 (not x6237))
+(or (not x6165) x5888 (not x5716) (not x6237) x6238)
+(or (not x6238) x6165)
+(or (not x6238) (not x5888))
+(or (not x6238) x5716)
+(or (not x6238) x6237)
+(or x6239 (not x6238))
+(or x6239 (not x6230))
+(or x6239 (not x6220))
+(or x6239 (not x6203))
+(or x6238 x6230 x6220 x6203 (not x6239))
+(or (not x6239) (not x5716) x6240)
+(or (not x6240) x6239)
+(or (not x6240) x5716)
+(or x6241 x6115)
+(or x6241 x5716)
+(or (not x6115) (not x5716) (not x6241))
+(or (not x6241) (not x5853) (not x6114) (not x5716) x6242)
+(or (not x6242) x6241)
+(or (not x6242) x5853)
+(or (not x6242) x6114)
+(or (not x6242) x5716)
+(or (not x6115) (not x5716) x6243)
+(or (not x6243) x6115)
+(or (not x6243) x5716)
+(or x6244 (not x6243))
+(or x6244 (not x6242))
+(or x6243 x6242 (not x6244))
+(or (not x6244) (not x5716) x6245)
+(or (not x6245) x6244)
+(or (not x6245) x5716)
+(or (not x6246) (not x6247) x6248)
+(or (not x6248) x6246)
+(or (not x6248) x6247)
+(or x6246 (not x6249) (not x6250) x6251)
+(or (not x6251) (not x6246))
+(or (not x6251) x6249)
+(or (not x6251) x6250)
+(or x6252 (not x6251))
+(or x6252 (not x6248))
+(or x6251 x6248 (not x6252))
+(or (not x6253) (not x5716) (not x6254) (not x6255) (not x6256) (not x6252) x6257)
+(or (not x6257) x6253)
+(or (not x6257) x5716)
+(or (not x6257) x6254)
+(or (not x6257) x6255)
+(or (not x6257) x6256)
+(or (not x6257) x6252)
+(or x6250 x6258)
+(or x6250 x5716)
+(or x6250 (not x5698))
+(or x6250 (not x5672))
+(or x6250 (not x6259))
+(or x6250 (not x6260))
+(or x6250 (not x6261))
+(or x6250 (not x6262))
+(or x6250 (not x6263))
+(or (not x6258) (not x5716) x5698 x5672 x6259 x6260 x6261 x6262 x6263 (not x6250))
+(or x6249 (not x5697))
+(or x6249 x6264)
+(or x6249 x5716)
+(or x6249 (not x5672))
+(or x6249 (not x6265))
+(or x6249 x6266)
+(or x6249 x5716)
+(or x6249 (not x6267))
+(or x6249 (not x6268))
+(or x6249 (not x6260))
+(or x6249 (not x6261))
+(or x6249 (not x6262))
+(or x5697 (not x6264) (not x5716) x5672 x6265 (not x6266) (not x5716) x6267 x6268 x6260 x6261 x6262 (not x6249))
+(or x6268 (not x6249) (not x6250) x6269)
+(or (not x6269) (not x6268))
+(or (not x6269) x6249)
+(or (not x6269) x6250)
+(or x6270 (not x6269))
+(or x6270 (not x6268))
+(or x6269 x6268 (not x6270))
+(or (not x6271) (not x6266) (not x5716) (not x6255) (not x6270) x6272)
+(or (not x6272) x6271)
+(or (not x6272) x6266)
+(or (not x6272) x5716)
+(or (not x6272) x6255)
+(or (not x6272) x6270)
+(or x6273 (not x6274))
+(or x6273 (not x6267))
+(or x6273 (not x6272))
+(or x6273 (not x6257))
+(or x6274 x6267 x6272 x6257 (not x6273))
+(or (not x6275) (not x5716) (not x6273) x6276)
+(or (not x6276) x6275)
+(or (not x6276) x5716)
+(or (not x6276) x6273)
+(or x6277 (not x6276))
+(or x6277 x5716)
+(or x6276 (not x5716) (not x6277))
+(or x6278 x6125)
+(or x6278 x5716)
+(or (not x6125) (not x5716) (not x6278))
+(or (not x6278) (not x5854) (not x6124) (not x5716) x6279)
+(or (not x6279) x6278)
+(or (not x6279) x5854)
+(or (not x6279) x6124)
+(or (not x6279) x5716)
+(or (not x6125) (not x5716) x6280)
+(or (not x6280) x6125)
+(or (not x6280) x5716)
+(or x6281 (not x6280))
+(or x6281 (not x6279))
+(or x6280 x6279 (not x6281))
+(or (not x6281) (not x5716) x6282)
+(or (not x6282) x6281)
+(or (not x6282) x5716)
+(or x6283 x6253)
+(or x6283 x5716)
+(or x6283 (not x6284))
+(or x6283 (not x6267))
+(or x6283 (not x6285))
+(or x6283 (not x6286))
+(or x6283 x5716)
+(or x6283 (not x6246))
+(or (not x6253) (not x5716) x6284 x6267 x6285 x6286 (not x5716) x6246 (not x6283))
+(or x6287 (not x6265))
+(or x6287 (not x6284))
+(or x6287 (not x6288))
+(or x6265 x6284 x6288 (not x6287))
+(or x6289 (not x6265))
+(or x6289 x6266)
+(or x6289 x5716)
+(or x6289 (not x6267))
+(or x6289 x6268)
+(or x6289 (not x5721))
+(or x6265 (not x6266) (not x5716) x6267 (not x6268) x5721 (not x6289))
+(or (not x6289) (not x6287) (not x6283) x6290)
+(or (not x6290) x6289)
+(or (not x6290) x6287)
+(or (not x6290) x6283)
+(or x6291 (not x5721))
+(or x6291 (not x6290))
+(or x5721 x6290 (not x6291))
+(or (not x6275) (not x5716) (not x6291) (not x6275) (not x5716) x6292)
+(or (not x6292) x6275)
+(or (not x6292) x5716)
+(or (not x6292) x6291)
+(or (not x6292) x6275)
+(or (not x6292) x5716)
+(or (not x5922) (not x5923) (not x5924) x5925 (not x5926) x5927 (not x5928) (not x5929) (not x5930) x5931 (not x5932) (not x5933) x6076)
+(or (not x6076) x5922)
+(or (not x6076) x5923)
+(or (not x6076) x5924)
+(or (not x6076) (not x5925))
+(or (not x6076) x5926)
+(or (not x6076) (not x5927))
+(or (not x6076) x5928)
+(or (not x6076) x5929)
+(or (not x6076) x5930)
+(or (not x6076) (not x5931))
+(or (not x6076) x5932)
+(or (not x6076) x5933)
+(or x6058 x6043)
+(or x6058 x5716)
+(or x6058 (not x6056))
+(or (not x6043) (not x5716) x6056 (not x6058))
+(or x6293 x6043)
+(or x6293 x5716)
+(or x6293 (not x6056))
+(or x6293 (not x6294))
+(or x6293 (not x6295))
+(or (not x6043) (not x5716) x6056 x6294 x6295 (not x6293))
+(or x6052 (not x5920))
+(or x6052 x5716)
+(or x6052 (not x6296))
+(or x6052 x5716)
+(or x5920 (not x5716) x6296 (not x5716) (not x6052))
+(or (not x6052) x5920 (not x5716) x6297)
+(or (not x6297) x6052)
+(or (not x6297) (not x5920))
+(or (not x6297) x5716)
+(or x6298 (not x6299))
+(or x6298 x6049)
+(or x6298 x5716)
+(or x6298 (not x6294))
+(or x6298 (not x6297))
+(or x6299 (not x6049) (not x5716) x6294 x6297 (not x6298))
+(or (not x6298) (not x6293) x5921)
+(or (not x5921) x6298)
+(or (not x5921) x6293)
+(or x6300 x6071)
+(or x6300 (not x6072))
+(or x6300 (not x5933))
+(or x6300 x5932)
+(or (not x6071) x6072 x5933 (not x5932) (not x6300))
+(or (not x6301) (not x6300) x6302)
+(or (not x6302) x6301)
+(or (not x6302) x6300)
+(or x5931 (not x6066) x6303)
+(or (not x6303) (not x5931))
+(or (not x6303) x6066)
+(or (not x5931) (not x6068) x6304)
+(or (not x6304) x5931)
+(or (not x6304) x6068)
+(or x6305 (not x6304))
+(or x6305 (not x6303))
+(or x6304 x6303 (not x6305))
+(or x6301 x6071)
+(or x6301 (not x6072))
+(or x6301 (not x5933))
+(or x6301 (not x5932))
+(or (not x6071) x6072 x5933 x5932 (not x6301))
+(or (not x6071) x6072 x5933 (not x5932) x6064)
+(or (not x6064) x6071)
+(or (not x6064) (not x6072))
+(or (not x6064) (not x5933))
+(or (not x6064) x5932)
+(or (not x6071) x6072 x5933 (not x5932) (not x6301) (not x6305) x6306)
+(or (not x6306) x6071)
+(or (not x6306) (not x6072))
+(or (not x6306) (not x5933))
+(or (not x6306) x5932)
+(or (not x6306) x6301)
+(or (not x6306) x6305)
+(or (not x6071) x6072 x5933 x5932 x6063)
+(or (not x6063) x6071)
+(or (not x6063) (not x6072))
+(or (not x6063) (not x5933))
+(or (not x6063) (not x5932))
+(or (not x6071) x6072 x5933 x5932 (not x6074) x6307)
+(or (not x6307) x6071)
+(or (not x6307) (not x6072))
+(or (not x6307) (not x5933))
+(or (not x6307) (not x5932))
+(or (not x6307) x6074)
+(or x6308 (not x6307))
+(or x6308 (not x6306))
+(or x6308 (not x6302))
+(or x6307 x6306 x6302 (not x6308))
+(or x6048 x5922)
+(or x6048 x5923)
+(or x6048 x5924)
+(or x6048 (not x5925))
+(or x6048 x5926)
+(or x6048 (not x5927))
+(or x6048 x5928)
+(or x6048 x5929)
+(or x6048 x5930)
+(or x6048 (not x5931))
+(or x6048 x5932)
+(or x6048 x5933)
+(or (not x5922) (not x5923) (not x5924) x5925 (not x5926) x5927 (not x5928) (not x5929) (not x5930) x5931 (not x5932) (not x5933) (not x6048))
+(or x6037 (not x5920))
+(or x6037 x5716)
+(or x5920 (not x5716) (not x6037))
+(or x6079 (not x6309))
+(or x6079 (not x5920))
+(or x6079 x5716)
+(or x6309 x5920 (not x5716) (not x6079))
+(or (not x6051) (not x6049) (not x5716) (not x6045) (not x6079) x6310)
+(or (not x6310) x6051)
+(or (not x6310) x6049)
+(or (not x6310) x5716)
+(or (not x6310) x6045)
+(or (not x6310) x6079)
+(or x5939 (not x6310))
+(or x5939 (not x6311))
+(or x6310 x6311 (not x5939))
+(or (not x5939) (not x6048) (not x6308) x6312)
+(or (not x6312) x5939)
+(or (not x6312) x6048)
+(or (not x6312) x6308)
+(or x6313 (not x6312))
+(or x6313 (not x5921))
+(or x6313 (not x6076))
+(or x6312 x5921 x6076 (not x6313))
+(or x6046 (not x6299))
+(or x6046 x6049)
+(or x6046 x5716)
+(or x6299 (not x6049) (not x5716) (not x6046))
+(or (not x6043) (not x5716) (not x6044) (not x6045) (not x6046) x6311)
+(or (not x6311) x6043)
+(or (not x6311) x5716)
+(or (not x6311) x6044)
+(or (not x6311) x6045)
+(or (not x6311) x6046)
+(or (not x6043) (not x5716) (not x6044) (not x6045) (not x6046) (not x6313) x6314)
+(or (not x6314) x6043)
+(or (not x6314) x5716)
+(or (not x6314) x6044)
+(or (not x6314) x6045)
+(or (not x6314) x6046)
+(or (not x6314) x6313)
+(or x5920 (not x5716) x6296 (not x5716) x6309)
+(or (not x6309) (not x5920))
+(or (not x6309) x5716)
+(or (not x6309) (not x6296))
+(or (not x6309) x5716)
+(or (not x6043) (not x5716) x6299)
+(or (not x6299) x6043)
+(or (not x6299) x5716)
+(or x6045 (not x6299))
+(or x6045 (not x6056))
+(or x6299 x6056 (not x6045))
+(or (not x6049) (not x5716) x6056)
+(or (not x6056) x6049)
+(or (not x6056) x5716)
+(or (not x6051) (not x6049) (not x5716) x6295)
+(or (not x6295) x6051)
+(or (not x6295) x6049)
+(or (not x6295) x5716)
+(or (not x6051) (not x6049) (not x5716) (not x6045) x5920 (not x5716) x6296 (not x5716) x6315)
+(or (not x6315) x6051)
+(or (not x6315) x6049)
+(or (not x6315) x5716)
+(or (not x6315) x6045)
+(or (not x6315) (not x5920))
+(or (not x6315) x5716)
+(or (not x6315) (not x6296))
+(or (not x6315) x5716)
+(or x6083 (not x6036))
+(or x6083 (not x5721))
+(or x6036 x5721 (not x6083))
+(or x6044 x6049)
+(or x6044 x5716)
+(or (not x6049) (not x5716) (not x6044))
+(or x6051 x6043)
+(or x6051 x5716)
+(or (not x6043) (not x5716) (not x6051))
+(or (not x6051) (not x6044) x6294)
+(or (not x6294) x6051)
+(or (not x6294) x6044)
+(or (not x6051) (not x6044) (not x6083) x6316)
+(or (not x6316) x6051)
+(or (not x6316) x6044)
+(or (not x6316) x6083)
+(or x6317 (not x6316))
+(or x6317 (not x6315))
+(or x6317 (not x6314))
+(or x6316 x6315 x6314 (not x6317))
+(or (not x193) (not x6317) x6318)
+(or (not x6318) x193)
+(or (not x6318) x6317)
+(or x6319 (not x6318))
+(or x6319 (not x6036))
+(or x6318 x6036 (not x6319))
+(or (not x6039) (not x6319) x6320)
+(or (not x6320) x6039)
+(or (not x6320) x6319)
+(or x6321 (not x6320))
+(or x6321 (not x6292))
+(or x6320 x6292 (not x6321))
+(or (not x6321) (not x5716) x6322)
+(or (not x6322) x6321)
+(or (not x6322) x5716)
+(or (not x5831) (not x5716) x6088)
+(or (not x6088) x5831)
+(or (not x6088) x5716)
+(or (not x6323) (not x5909) (not x6324) x6325)
+(or (not x6325) x6323)
+(or (not x6325) x5909)
+(or (not x6325) x6324)
+(or (not x5839) (not x5716) (not x5851) (not x5852) (not x5853) (not x5854) (not x6326) x6327)
+(or (not x6327) x5839)
+(or (not x6327) x5716)
+(or (not x6327) x5851)
+(or (not x6327) x5852)
+(or (not x6327) x5853)
+(or (not x6327) x5854)
+(or (not x6327) x6326)
+(or x6328 (not x6327))
+(or x6328 (not x6325))
+(or x6327 x6325 (not x6328))
+(or (not x6328) (not x5831) (not x5716) x6200)
+(or (not x6200) x6328)
+(or (not x6200) x5831)
+(or (not x6200) x5716)
+(or (not x5861) (not x5716) x6095)
+(or (not x6095) x5861)
+(or (not x6095) x5716)
+(or (not x6323) (not x5851) (not x5852) (not x5853) (not x5854) x6329)
+(or (not x6329) x6323)
+(or (not x6329) x5851)
+(or (not x6329) x5852)
+(or (not x6329) x5853)
+(or (not x6329) x5854)
+(or (not x5839) (not x5716) (not x5851) (not x5852) (not x5853) (not x5854) (not x5838) (not x5716) x6330)
+(or (not x6330) x5839)
+(or (not x6330) x5716)
+(or (not x6330) x5851)
+(or (not x6330) x5852)
+(or (not x6330) x5853)
+(or (not x6330) x5854)
+(or (not x6330) x5838)
+(or (not x6330) x5716)
+(or x5909 (not x6330))
+(or x5909 (not x6329))
+(or x6330 x6329 (not x5909))
+(or (not x5909) (not x5904) (not x5716) (not x5861) (not x5716) x6199)
+(or (not x6199) x5909)
+(or (not x6199) x5904)
+(or (not x6199) x5716)
+(or (not x6199) x5861)
+(or (not x6199) x5716)
+(or x6331 (not x6199))
+(or x6331 (not x6200))
+(or x6199 x6200 (not x6331))
+(or x6332 (not x6333))
+(or x6332 (not x6334))
+(or x6332 (not x6333))
+(or x6333 x6334 x6333 (not x6332))
+(or (not x6335) (not x5838) (not x5716) x6333)
+(or (not x6333) x6335)
+(or (not x6333) x5838)
+(or (not x6333) x5716)
+(or (not x5904) (not x5716) x5906)
+(or (not x5906) x5904)
+(or (not x5906) x5716)
+(or (not x5851) (not x5852) (not x5853) (not x5854) (not x5838) (not x5716) (not x5904) (not x5716) x6334)
+(or (not x6334) x5851)
+(or (not x6334) x5852)
+(or (not x6334) x5853)
+(or (not x6334) x5854)
+(or (not x6334) x5838)
+(or (not x6334) x5716)
+(or (not x6334) x5904)
+(or (not x6334) x5716)
+(or x6336 (not x6334))
+(or x6336 (not x6333))
+(or x6334 x6333 (not x6336))
+(or (not x6337) (not x6336) (not x6332) (not x6021) (not x5716) x6338)
+(or (not x6338) x6337)
+(or (not x6338) x6336)
+(or (not x6338) x6332)
+(or (not x6338) x6021)
+(or (not x6338) x5716)
+(or x6324 x5904)
+(or x6324 x5716)
+(or (not x5904) (not x5716) (not x6324))
+(or x5856 (not x6190))
+(or x5856 (not x6191))
+(or x5856 (not x6192))
+(or x5856 (not x6193))
+(or x6190 x6191 x6192 x6193 (not x5856))
+(or x6335 (not x6190))
+(or x6335 (not x6191))
+(or x6335 (not x6192))
+(or x6335 (not x6193))
+(or x6335 x5838)
+(or x6335 x5716)
+(or x6190 x6191 x6192 x6193 (not x5838) (not x5716) (not x6335))
+(or x6339 (not x6190))
+(or x6339 (not x6191))
+(or x6339 (not x6192))
+(or x6339 (not x6193))
+(or x6339 x5838)
+(or x6339 x5716)
+(or x6339 x5904)
+(or x6339 x5716)
+(or x6190 x6191 x6192 x6193 (not x5838) (not x5716) (not x5904) (not x5716) (not x6339))
+(or x6326 x5838)
+(or x6326 x5716)
+(or (not x5838) (not x5716) (not x6326))
+(or (not x5838) (not x5716) x5846)
+(or (not x5846) x5838)
+(or (not x5846) x5716)
+(or (not x5851) (not x5852) (not x5853) (not x5854) (not x5838) (not x5716) x6340)
+(or (not x6340) x5851)
+(or (not x6340) x5852)
+(or (not x6340) x5853)
+(or (not x6340) x5854)
+(or (not x6340) x5838)
+(or (not x6340) x5716)
+(or x6337 (not x6340))
+(or x6337 x5838)
+(or x6337 x5716)
+(or x6340 (not x5838) (not x5716) (not x6337))
+(or (not x6337) (not x6339) (not x6337) (not x6027) (not x5716) x6341)
+(or (not x6341) x6337)
+(or (not x6341) x6339)
+(or (not x6341) x6337)
+(or (not x6341) x6027)
+(or (not x6341) x5716)
+(or x6342 (not x6341))
+(or x6342 (not x6338))
+(or x6341 x6338 (not x6342))
+(or (not x5852) (not x5854) (not x5853) (not x5852) (not x6342) (not x6331) x6343)
+(or (not x6343) x5852)
+(or (not x6343) x5854)
+(or (not x6343) x5853)
+(or (not x6343) x5852)
+(or (not x6343) x6342)
+(or (not x6343) x6331)
+(or (not x5868) (not x5716) x6101)
+(or (not x6101) x5868)
+(or (not x6101) x5716)
+(or (not x6323) (not x5950) (not x6344) x6345)
+(or (not x6345) x6323)
+(or (not x6345) x5950)
+(or (not x6345) x6344)
+(or (not x5839) (not x5716) (not x5851) (not x5887) (not x5716) x5888 (not x5716) (not x5854) (not x5889) (not x5853) (not x5854) (not x6346) x6347)
+(or (not x6347) x5839)
+(or (not x6347) x5716)
+(or (not x6347) x5851)
+(or (not x6347) x5887)
+(or (not x6347) x5716)
+(or (not x6347) (not x5888))
+(or (not x6347) x5716)
+(or (not x6347) x5854)
+(or (not x6347) x5889)
+(or (not x6347) x5853)
+(or (not x6347) x5854)
+(or (not x6347) x6346)
+(or x6348 (not x6347))
+(or x6348 (not x6345))
+(or x6347 x6345 (not x6348))
+(or (not x6348) (not x5868) (not x5716) x6217)
+(or (not x6217) x6348)
+(or (not x6217) x5868)
+(or (not x6217) x5716)
+(or (not x5896) (not x5716) x6108)
+(or (not x6108) x5896)
+(or (not x6108) x5716)
+(or x6323 x5839)
+(or x6323 x5716)
+(or (not x5839) (not x5716) (not x6323))
+(or (not x6323) (not x5851) (not x5887) (not x5716) x5888 (not x5716) (not x5854) (not x5889) (not x5853) (not x5854) x6349)
+(or (not x6349) x6323)
+(or (not x6349) x5851)
+(or (not x6349) x5887)
+(or (not x6349) x5716)
+(or (not x6349) (not x5888))
+(or (not x6349) x5716)
+(or (not x6349) x5854)
+(or (not x6349) x5889)
+(or (not x6349) x5853)
+(or (not x6349) x5854)
+(or (not x5839) (not x5716) x5902)
+(or (not x5902) x5839)
+(or (not x5902) x5716)
+(or (not x5839) (not x5716) (not x5851) (not x5887) (not x5716) x5888 (not x5716) (not x5854) (not x5889) (not x5853) (not x5854) (not x5875) (not x5716) x6350)
+(or (not x6350) x5839)
+(or (not x6350) x5716)
+(or (not x6350) x5851)
+(or (not x6350) x5887)
+(or (not x6350) x5716)
+(or (not x6350) (not x5888))
+(or (not x6350) x5716)
+(or (not x6350) x5854)
+(or (not x6350) x5889)
+(or (not x6350) x5853)
+(or (not x6350) x5854)
+(or (not x6350) x5875)
+(or (not x6350) x5716)
+(or x5950 (not x6350))
+(or x5950 (not x6349))
+(or x6350 x6349 (not x5950))
+(or (not x5950) (not x5945) (not x5716) (not x5896) (not x5716) x6216)
+(or (not x6216) x5950)
+(or (not x6216) x5945)
+(or (not x6216) x5716)
+(or (not x6216) x5896)
+(or (not x6216) x5716)
+(or x6351 (not x6216))
+(or x6351 (not x6217))
+(or x6216 x6217 (not x6351))
+(or (not x6352) (not x6353) (not x6354) (not x5958) (not x5716) x6355)
+(or (not x6355) x6352)
+(or (not x6355) x6353)
+(or (not x6355) x6354)
+(or (not x6355) x5958)
+(or (not x6355) x5716)
+(or (not x6352) (not x6356) (not x6352) (not x5964) (not x5716) x6357)
+(or (not x6357) x6352)
+(or (not x6357) x6356)
+(or (not x6357) x6352)
+(or (not x6357) x5964)
+(or (not x6357) x5716)
+(or x6358 (not x6357))
+(or x6358 (not x6355))
+(or x6357 x6355 (not x6358))
+(or (not x5854) (not x5853) (not x5887) (not x5716) x5888 (not x5716) (not x5854) (not x5889) (not x6358) x6359)
+(or (not x6359) x5854)
+(or (not x6359) x5853)
+(or (not x6359) x5887)
+(or (not x6359) x5716)
+(or (not x6359) (not x5888))
+(or (not x6359) x5716)
+(or (not x6359) x5854)
+(or (not x6359) x5889)
+(or (not x6359) x6358)
+(or (not x6352) (not x6353) (not x6354) (not x5970) (not x5716) x6360)
+(or (not x6360) x6352)
+(or (not x6360) x6353)
+(or (not x6360) x6354)
+(or (not x6360) x5970)
+(or (not x6360) x5716)
+(or (not x6352) (not x6356) (not x6352) (not x5975) (not x5716) x6361)
+(or (not x6361) x6352)
+(or (not x6361) x6356)
+(or (not x6361) x6352)
+(or (not x6361) x5975)
+(or (not x6361) x5716)
+(or x6362 (not x6361))
+(or x6362 (not x6360))
+(or x6361 x6360 (not x6362))
+(or (not x5854) (not x5853) (not x5887) (not x5716) x5888 (not x5716) (not x5854) (not x5889) (not x6362) x6363)
+(or (not x6363) x5854)
+(or (not x6363) x5853)
+(or (not x6363) x5887)
+(or (not x6363) x5716)
+(or (not x6363) (not x5888))
+(or (not x6363) x5716)
+(or (not x6363) x5854)
+(or (not x6363) x5889)
+(or (not x6363) x6362)
+(or (not x6352) (not x6353) (not x6354) (not x5980) (not x5716) x6364)
+(or (not x6364) x6352)
+(or (not x6364) x6353)
+(or (not x6364) x6354)
+(or (not x6364) x5980)
+(or (not x6364) x5716)
+(or (not x6352) (not x6356) (not x6352) (not x5985) (not x5716) x6365)
+(or (not x6365) x6352)
+(or (not x6365) x6356)
+(or (not x6365) x6352)
+(or (not x6365) x5985)
+(or (not x6365) x5716)
+(or x6366 (not x6365))
+(or x6366 (not x6364))
+(or x6365 x6364 (not x6366))
+(or (not x5854) (not x5853) (not x5887) (not x5716) x5888 (not x5716) (not x5854) (not x5889) (not x6366) x6367)
+(or (not x6367) x5854)
+(or (not x6367) x5853)
+(or (not x6367) x5887)
+(or (not x6367) x5716)
+(or (not x6367) (not x5888))
+(or (not x6367) x5716)
+(or (not x6367) x5854)
+(or (not x6367) x5889)
+(or (not x6367) x6366)
+(or (not x6352) (not x6353) (not x6354) (not x5990) (not x5716) x6368)
+(or (not x6368) x6352)
+(or (not x6368) x6353)
+(or (not x6368) x6354)
+(or (not x6368) x5990)
+(or (not x6368) x5716)
+(or (not x6352) (not x6356) (not x6352) (not x5995) (not x5716) x6369)
+(or (not x6369) x6352)
+(or (not x6369) x6356)
+(or (not x6369) x6352)
+(or (not x6369) x5995)
+(or (not x6369) x5716)
+(or x6370 (not x6369))
+(or x6370 (not x6368))
+(or x6369 x6368 (not x6370))
+(or (not x5854) (not x5853) (not x5887) (not x5716) x5888 (not x5716) (not x5854) (not x5889) (not x6370) x6371)
+(or (not x6371) x5854)
+(or (not x6371) x5853)
+(or (not x6371) x5887)
+(or (not x6371) x5716)
+(or (not x6371) (not x5888))
+(or (not x6371) x5716)
+(or (not x6371) x5854)
+(or (not x6371) x5889)
+(or (not x6371) x6370)
+(or (not x6352) (not x6353) (not x6354) (not x6000) (not x5716) x6372)
+(or (not x6372) x6352)
+(or (not x6372) x6353)
+(or (not x6372) x6354)
+(or (not x6372) x6000)
+(or (not x6372) x5716)
+(or (not x6352) (not x6356) (not x6352) (not x6005) (not x5716) x6373)
+(or (not x6373) x6352)
+(or (not x6373) x6356)
+(or (not x6373) x6352)
+(or (not x6373) x6005)
+(or (not x6373) x5716)
+(or x6374 (not x6373))
+(or x6374 (not x6372))
+(or x6373 x6372 (not x6374))
+(or (not x5854) (not x5853) (not x5887) (not x5716) x5888 (not x5716) (not x5854) (not x5889) (not x6374) x6375)
+(or (not x6375) x5854)
+(or (not x6375) x5853)
+(or (not x6375) x5887)
+(or (not x6375) x5716)
+(or (not x6375) (not x5888))
+(or (not x6375) x5716)
+(or (not x6375) x5854)
+(or (not x6375) x5889)
+(or (not x6375) x6374)
+(or x6354 (not x6376))
+(or x6354 (not x6377))
+(or x6354 (not x6376))
+(or x6376 x6377 x6376 (not x6354))
+(or (not x6378) (not x5875) (not x5716) x6376)
+(or (not x6376) x6378)
+(or (not x6376) x5875)
+(or (not x6376) x5716)
+(or (not x5945) (not x5716) x5947)
+(or (not x5947) x5945)
+(or (not x5947) x5716)
+(or (not x5851) (not x5887) (not x5716) x5888 (not x5716) (not x5854) (not x5889) (not x5853) (not x5854) (not x5875) (not x5716) (not x5945) (not x5716) x6377)
+(or (not x6377) x5851)
+(or (not x6377) x5887)
+(or (not x6377) x5716)
+(or (not x6377) (not x5888))
+(or (not x6377) x5716)
+(or (not x6377) x5854)
+(or (not x6377) x5889)
+(or (not x6377) x5853)
+(or (not x6377) x5854)
+(or (not x6377) x5875)
+(or (not x6377) x5716)
+(or (not x6377) x5945)
+(or (not x6377) x5716)
+(or x6353 (not x6377))
+(or x6353 (not x6376))
+(or x6377 x6376 (not x6353))
+(or (not x6352) (not x6353) (not x6354) (not x6010) (not x5716) x6379)
+(or (not x6379) x6352)
+(or (not x6379) x6353)
+(or (not x6379) x6354)
+(or (not x6379) x6010)
+(or (not x6379) x5716)
+(or x6344 x5945)
+(or x6344 x5716)
+(or (not x5945) (not x5716) (not x6344))
+(or x6143 x5887)
+(or x6143 x5716)
+(or x6143 (not x5888))
+(or x6143 x5716)
+(or (not x5887) (not x5716) x5888 (not x5716) (not x6143))
+(or x5852 x5887)
+(or x5852 x5716)
+(or x5852 (not x5888))
+(or x5852 x5716)
+(or x5852 (not x6193))
+(or x5852 (not x6211))
+(or (not x5887) (not x5716) x5888 (not x5716) x6193 x6211 (not x5852))
+(or (not x6380) (not x5716) (not x6381) (not x5716) (not x6382) (not x5716) x6190)
+(or (not x6190) x6380)
+(or (not x6190) x5716)
+(or (not x6190) x6381)
+(or (not x6190) x5716)
+(or (not x6190) x6382)
+(or (not x6190) x5716)
+(or x5891 (not x6190))
+(or x5891 x5887)
+(or x5891 x5716)
+(or x5891 (not x5888))
+(or x5891 x5716)
+(or x5891 (not x6193))
+(or x5891 (not x6211))
+(or x5891 (not x6192))
+(or x5891 (not x6193))
+(or x6190 (not x5887) (not x5716) x5888 (not x5716) x6193 x6211 x6192 x6193 (not x5891))
+(or x6378 (not x6190))
+(or x6378 x5887)
+(or x6378 x5716)
+(or x6378 (not x5888))
+(or x6378 x5716)
+(or x6378 (not x6193))
+(or x6378 (not x6211))
+(or x6378 (not x6192))
+(or x6378 (not x6193))
+(or x6378 x5875)
+(or x6378 x5716)
+(or x6190 (not x5887) (not x5716) x5888 (not x5716) x6193 x6211 x6192 x6193 (not x5875) (not x5716) (not x6378))
+(or x6356 (not x6190))
+(or x6356 x5887)
+(or x6356 x5716)
+(or x6356 (not x5888))
+(or x6356 x5716)
+(or x6356 (not x6193))
+(or x6356 (not x6211))
+(or x6356 (not x6192))
+(or x6356 (not x6193))
+(or x6356 x5875)
+(or x6356 x5716)
+(or x6356 x5945)
+(or x6356 x5716)
+(or x6190 (not x5887) (not x5716) x5888 (not x5716) x6193 x6211 x6192 x6193 (not x5875) (not x5716) (not x5945) (not x5716) (not x6356))
+(or x6346 x5875)
+(or x6346 x5716)
+(or (not x5875) (not x5716) (not x6346))
+(or (not x5875) (not x5716) x5882)
+(or (not x5882) x5875)
+(or (not x5882) x5716)
+(or x5851 x6380)
+(or x5851 x5716)
+(or x5851 x6381)
+(or x5851 x5716)
+(or x5851 x6382)
+(or x5851 x5716)
+(or (not x6380) (not x5716) (not x6381) (not x5716) (not x6382) (not x5716) (not x5851))
+(or (not x5851) (not x5887) (not x5716) x5888 (not x5716) (not x5854) (not x5889) (not x5853) (not x5854) (not x5875) (not x5716) x6383)
+(or (not x6383) x5851)
+(or (not x6383) x5887)
+(or (not x6383) x5716)
+(or (not x6383) (not x5888))
+(or (not x6383) x5716)
+(or (not x6383) x5854)
+(or (not x6383) x5889)
+(or (not x6383) x5853)
+(or (not x6383) x5854)
+(or (not x6383) x5875)
+(or (not x6383) x5716)
+(or x6352 (not x6383))
+(or x6352 x5875)
+(or x6352 x5716)
+(or x6383 (not x5875) (not x5716) (not x6352))
+(or (not x6352) (not x6356) (not x6352) (not x6015) (not x5716) x6384)
+(or (not x6384) x6352)
+(or (not x6384) x6356)
+(or (not x6384) x6352)
+(or (not x6384) x6015)
+(or (not x6384) x5716)
+(or x6385 (not x6384))
+(or x6385 (not x6379))
+(or x6384 x6379 (not x6385))
+(or (not x5854) (not x5853) (not x5887) (not x5716) x5888 (not x5716) (not x5854) (not x5889) (not x6385) x6386)
+(or (not x6386) x5854)
+(or (not x6386) x5853)
+(or (not x6386) x5887)
+(or (not x6386) x5716)
+(or (not x6386) (not x5888))
+(or (not x6386) x5716)
+(or (not x6386) x5854)
+(or (not x6386) x5889)
+(or (not x6386) x6385)
+(or x6387 (not x6386))
+(or x6387 (not x6375))
+(or x6387 (not x6371))
+(or x6387 (not x6367))
+(or x6387 (not x6363))
+(or x6387 (not x6359))
+(or x6386 x6375 x6371 x6367 x6363 x6359 (not x6387))
+(or (not x5887) (not x5716) x5888 (not x5716) (not x5854) (not x5889) x6191)
+(or (not x6191) x5887)
+(or (not x6191) x5716)
+(or (not x6191) (not x5888))
+(or (not x6191) x5716)
+(or (not x6191) x5854)
+(or (not x6191) x5889)
+(or (not x5887) (not x5716) x5888 (not x5716) (not x5854) (not x5889) (not x6387) (not x6351) x6388)
+(or (not x6388) x5887)
+(or (not x6388) x5716)
+(or (not x6388) (not x5888))
+(or (not x6388) x5716)
+(or (not x6388) x5854)
+(or (not x6388) x5889)
+(or (not x6388) x6387)
+(or (not x6388) x6351)
+(or x6389 (not x6388))
+(or x6389 (not x6343))
+(or x6388 x6343 (not x6389))
+(or x5889 (not x6390))
+(or x5889 (not x6391))
+(or x6390 x6391 (not x5889))
+(or x5853 (not x6390))
+(or x5853 (not x6391))
+(or x5853 (not x6193))
+(or x6390 x6391 x6193 (not x5853))
+(or (not x5853) (not x6389) x6392)
+(or (not x6392) x5853)
+(or (not x6392) x6389)
+(or (not x6114) (not x5716) x6173)
+(or (not x6173) x6114)
+(or (not x6173) x5716)
+(or (not x6165) (not x6136) x6211)
+(or (not x6211) x6165)
+(or (not x6211) x6136)
+(or (not x6165) (not x6136) (not x5854) x6192)
+(or (not x6192) x6165)
+(or (not x6192) x6136)
+(or (not x6192) x5854)
+(or (not x6165) (not x6136) (not x5854) (not x6114) (not x5716) x6393)
+(or (not x6393) x6165)
+(or (not x6393) x6136)
+(or (not x6393) x5854)
+(or (not x6393) x6114)
+(or (not x6393) x5716)
+(or x6394 (not x6393))
+(or x6394 (not x6392))
+(or x6393 x6392 (not x6394))
+(or x6136 (not x5888))
+(or x6136 x5716)
+(or x5888 (not x5716) (not x6136))
+(or (not x5887) (not x5716) x6390)
+(or (not x6390) x5887)
+(or (not x6390) x5716)
+(or x5854 (not x6390))
+(or x5854 (not x5888))
+(or x5854 x5716)
+(or x6390 x5888 (not x5716) (not x5854))
+(or (not x5854) (not x6394) x6395)
+(or (not x6395) x5854)
+(or (not x6395) x6394)
+(or x5888 (not x5716) x6391)
+(or (not x6391) (not x5888))
+(or (not x6391) x5716)
+(or x6165 x5887)
+(or x6165 x5716)
+(or (not x5887) (not x5716) (not x6165))
+(or (not x6165) x5888 (not x5716) x6193)
+(or (not x6193) x6165)
+(or (not x6193) (not x5888))
+(or (not x6193) x5716)
+(or (not x6165) x5888 (not x5716) (not x6124) (not x5716) x6396)
+(or (not x6396) x6165)
+(or (not x6396) (not x5888))
+(or (not x6396) x5716)
+(or (not x6396) x6124)
+(or (not x6396) x5716)
+(or x6397 (not x6396))
+(or x6397 (not x6395))
+(or x6396 x6395 (not x6397))
+(or (not x6397) (not x5716) x6398)
+(or (not x6398) x6397)
+(or (not x6398) x5716)
+(or (not x6399) (not x6400) (not x6380) (not x5716) x6401)
+(or (not x6401) x6399)
+(or (not x6401) x6400)
+(or (not x6401) x6380)
+(or (not x6401) x5716)
+(or (not x6402) (not x6403) x6404)
+(or (not x6404) x6402)
+(or (not x6404) x6403)
+(or x6405 (not x6404))
+(or x6405 (not x6401))
+(or x6404 x6401 (not x6405))
+(or (not x6406) (not x6405) x6407)
+(or (not x6407) x6406)
+(or (not x6407) x6405)
+(or (not x6402) (not x6380) (not x5716) x6408)
+(or (not x6408) x6402)
+(or (not x6408) x6380)
+(or (not x6408) x5716)
+(or (not x6399) (not x6400) (not x6403) x6409)
+(or (not x6409) x6399)
+(or (not x6409) x6400)
+(or (not x6409) x6403)
+(or x6410 (not x6409))
+(or x6410 (not x6408))
+(or x6409 x6408 (not x6410))
+(or (not x6411) (not x5716) (not x6410) x6412)
+(or (not x6412) x6411)
+(or (not x6412) x5716)
+(or (not x6412) x6410)
+(or x6413 (not x6412))
+(or x6413 (not x6407))
+(or x6412 x6407 (not x6413))
+(or (not x6413) (not x5716) x6414)
+(or (not x6414) x6413)
+(or (not x6414) x5716)
+(or (not x6253) (not x5716) (not x6254) (not x6255) (not x6256) (not x6415) (not x6266) (not x5716) x6416)
+(or (not x6416) x6253)
+(or (not x6416) x5716)
+(or (not x6416) x6254)
+(or (not x6416) x6255)
+(or (not x6416) x6256)
+(or (not x6416) x6415)
+(or (not x6416) x6266)
+(or (not x6416) x5716)
+(or (not x6271) (not x6266) (not x5716) (not x6255) (not x6268) (not x6417) (not x6266) (not x5716) x6418)
+(or (not x6418) x6271)
+(or (not x6418) x6266)
+(or (not x6418) x5716)
+(or (not x6418) x6255)
+(or (not x6418) x6268)
+(or (not x6418) x6417)
+(or (not x6418) x6266)
+(or (not x6418) x5716)
+(or (not x6275) (not x5716) x6036)
+(or (not x6036) x6275)
+(or (not x6036) x5716)
+(or (not x6275) (not x5716) (not x193) x6288)
+(or (not x6288) x6275)
+(or (not x6288) x5716)
+(or (not x6288) x193)
+(or x6419 (not x6288))
+(or x6419 (not x6284))
+(or x6288 x6284 (not x6419))
+(or (not x6271) (not x6254) (not x6419) x6420)
+(or (not x6420) x6271)
+(or (not x6420) x6254)
+(or (not x6420) x6419)
+(or (not x6255) (not x6256) (not x6421) (not x6266) (not x5716) x6422)
+(or (not x6422) x6255)
+(or (not x6422) x6256)
+(or (not x6422) x6421)
+(or (not x6422) x6266)
+(or (not x6422) x5716)
+(or x6423 (not x6422))
+(or x6423 (not x6420))
+(or x6423 (not x6418))
+(or x6423 (not x6416))
+(or x6422 x6420 x6418 x6416 (not x6423))
+(or (not x6423) (not x5716) x6424)
+(or (not x6424) x6423)
+(or (not x6424) x5716)
+(or x6247 (not x6286))
+(or x6247 x5716)
+(or x6286 (not x5716) (not x6247))
+(or x6415 (not x6286))
+(or x6415 x5716)
+(or x6415 (not x6246))
+(or x6286 (not x5716) x6246 (not x6415))
+(or (not x6253) (not x5716) (not x6254) (not x6255) (not x6256) (not x6415) (not x6253) (not x5716) x6425)
+(or (not x6425) x6253)
+(or (not x6425) x5716)
+(or (not x6425) x6254)
+(or (not x6425) x6255)
+(or (not x6425) x6256)
+(or (not x6425) x6415)
+(or (not x6425) x6253)
+(or (not x6425) x5716)
+(or x6417 x6268)
+(or x6417 (not x5721))
+(or (not x6268) x5721 (not x6417))
+(or (not x6268) (not x6417) (not x6253) (not x5716) x6426)
+(or (not x6426) x6268)
+(or (not x6426) x6417)
+(or (not x6426) x6253)
+(or (not x6426) x5716)
+(or (not x6268) x5721 x6427)
+(or (not x6427) x6268)
+(or (not x6427) (not x5721))
+(or x6428 x6268)
+(or x6428 (not x6427))
+(or (not x6268) x6427 (not x6428))
+(or (not x6428) x6268 x6429)
+(or (not x6429) x6428)
+(or (not x6429) (not x6268))
+(or x6430 (not x6429))
+(or x6430 (not x6426))
+(or x6429 x6426 (not x6430))
+(or (not x6271) (not x6266) (not x5716) (not x6255) (not x6430) x6431)
+(or (not x6431) x6271)
+(or (not x6431) x6266)
+(or (not x6431) x5716)
+(or (not x6431) x6255)
+(or (not x6431) x6430)
+(or x6039 x6275)
+(or x6039 x5716)
+(or (not x6275) (not x5716) (not x6039))
+(or x6432 x6275)
+(or x6432 x5716)
+(or x6432 (not x5672))
+(or (not x6275) (not x5716) x5672 (not x6432))
+(or (not x6271) (not x6254) (not x6432) (not x6253) (not x5716) x6433)
+(or (not x6433) x6271)
+(or (not x6433) x6254)
+(or (not x6433) x6432)
+(or (not x6433) x6253)
+(or (not x6433) x5716)
+(or (not x6255) (not x6256) (not x6421) (not x6253) (not x5716) x6434)
+(or (not x6434) x6255)
+(or (not x6434) x6256)
+(or (not x6434) x6421)
+(or (not x6434) x6253)
+(or (not x6434) x5716)
+(or x6435 (not x6434))
+(or x6435 (not x6433))
+(or x6435 (not x6431))
+(or x6435 (not x6425))
+(or x6434 x6433 x6431 x6425 (not x6435))
+(or (not x6435) (not x5716) x6436)
+(or (not x6436) x6435)
+(or (not x6436) x5716)
+(or (not x6399) (not x6400) (not x6381) (not x5716) x6437)
+(or (not x6437) x6399)
+(or (not x6437) x6400)
+(or (not x6437) x6381)
+(or (not x6437) x5716)
+(or (not x6402) (not x6438) x6439)
+(or (not x6439) x6402)
+(or (not x6439) x6438)
+(or x6440 (not x6439))
+(or x6440 (not x6437))
+(or x6439 x6437 (not x6440))
+(or (not x6406) (not x6440) x6441)
+(or (not x6441) x6406)
+(or (not x6441) x6440)
+(or (not x6402) (not x6381) (not x5716) x6442)
+(or (not x6442) x6402)
+(or (not x6442) x6381)
+(or (not x6442) x5716)
+(or x6443 x6444 x6403)
+(or x6443 (not x6444) (not x6403))
+(or (not x6443) x6444 (not x6403))
+(or (not x6443) (not x6444) x6403)
+(or (not x6399) (not x6400) (not x6443) x6445)
+(or (not x6445) x6399)
+(or (not x6445) x6400)
+(or (not x6445) x6443)
+(or x6446 (not x6445))
+(or x6446 (not x6442))
+(or x6445 x6442 (not x6446))
+(or (not x6411) (not x5716) (not x6446) x6447)
+(or (not x6447) x6411)
+(or (not x6447) x5716)
+(or (not x6447) x6446)
+(or x6448 (not x6447))
+(or x6448 (not x6441))
+(or x6447 x6441 (not x6448))
+(or (not x6448) (not x5716) x6449)
+(or (not x6449) x6448)
+(or (not x6449) x5716)
+(or (not x6399) (not x6400) (not x6382) (not x5716) x6450)
+(or (not x6450) x6399)
+(or (not x6450) x6400)
+(or (not x6450) x6382)
+(or (not x6450) x5716)
+(or (not x6402) (not x6451) x6452)
+(or (not x6452) x6402)
+(or (not x6452) x6451)
+(or x6453 (not x6452))
+(or x6453 (not x6450))
+(or x6452 x6450 (not x6453))
+(or x6406 x6411)
+(or x6406 x5716)
+(or (not x6411) (not x5716) (not x6406))
+(or (not x6406) (not x6453) x6454)
+(or (not x6454) x6406)
+(or (not x6454) x6453)
+(or (not x6258) (not x5716) (not x186) (not x193) (not x6455) (not x6456) x6457)
+(or (not x6457) x6258)
+(or (not x6457) x5716)
+(or (not x6457) x186)
+(or (not x6457) x193)
+(or (not x6457) x6455)
+(or (not x6457) x6456)
+(or (not x185) (not x6264) (not x5716) (not x193) (not x6271) (not x6266) (not x5716) (not x6255) x6268 x6458)
+(or (not x6458) x185)
+(or (not x6458) x6264)
+(or (not x6458) x5716)
+(or (not x6458) x193)
+(or (not x6458) x6271)
+(or (not x6458) x6266)
+(or (not x6458) x5716)
+(or (not x6458) x6255)
+(or (not x6458) (not x6268))
+(or x6402 (not x6458))
+(or x6402 (not x6457))
+(or x6458 x6457 (not x6402))
+(or (not x6402) (not x6382) (not x5716) x6459)
+(or (not x6459) x6402)
+(or (not x6459) x6382)
+(or (not x6459) x5716)
+(or x6460 x6461 x6462)
+(or x6460 (not x6461) (not x6462))
+(or (not x6460) x6461 (not x6462))
+(or (not x6460) (not x6461) x6462)
+(or x6400 x6258)
+(or x6400 x5716)
+(or x6400 (not x5698))
+(or x6400 (not x5672))
+(or x6400 (not x6259))
+(or x6400 (not x6263))
+(or (not x6258) (not x5716) x5698 x5672 x6259 x6263 (not x6400))
+(or x6399 (not x5697))
+(or x6399 x6264)
+(or x6399 x5716)
+(or x6399 (not x5672))
+(or x6399 (not x6265))
+(or x6399 x6266)
+(or x6399 x5716)
+(or x6399 (not x6267))
+(or x6399 (not x6268))
+(or x5697 (not x6264) (not x5716) x5672 x6265 (not x6266) (not x5716) x6267 x6268 (not x6399))
+(or (not x6399) (not x6400) (not x6460) x6463)
+(or (not x6463) x6399)
+(or (not x6463) x6400)
+(or (not x6463) x6460)
+(or x6464 (not x6463))
+(or x6464 (not x6459))
+(or x6463 x6459 (not x6464))
+(or (not x6411) (not x5716) (not x6464) x6465)
+(or (not x6465) x6411)
+(or (not x6465) x5716)
+(or (not x6465) x6464)
+(or x6466 (not x6465))
+(or x6466 (not x6454))
+(or x6465 x6454 (not x6466))
+(or (not x6466) (not x5716) x6467)
+(or (not x6467) x6466)
+(or (not x6467) x5716)
+(or (not x6468) (not x6469) (not x5716) x6470)
+(or (not x6470) x6468)
+(or (not x6470) x6469)
+(or (not x6470) x5716)
+(or (not x6471) (not x6456) (not x6472) x6473)
+(or (not x6473) x6471)
+(or (not x6473) x6456)
+(or (not x6473) x6472)
+(or x6474 (not x6473))
+(or x6474 (not x6470))
+(or x6473 x6470 (not x6474))
+(or (not x6258) (not x5716) (not x186) (not x193) (not x6455) (not x6474) x6475)
+(or (not x6475) x6258)
+(or (not x6475) x5716)
+(or (not x6475) x186)
+(or (not x6475) x193)
+(or (not x6475) x6455)
+(or (not x6475) x6474)
+(or (not x6476) (not x6271) (not x6266) (not x5716) (not x6255) x6268 (not x6469) (not x5716) x6477)
+(or (not x6477) x6476)
+(or (not x6477) x6271)
+(or (not x6477) x6266)
+(or (not x6477) x5716)
+(or (not x6477) x6255)
+(or (not x6477) (not x6268))
+(or (not x6477) x6469)
+(or (not x6477) x5716)
+(or x6478 (not x6444))
+(or x6478 (not x6479))
+(or x6478 (not x6480))
+(or x6444 x6479 x6480 (not x6478))
+(or x6451 x6461 x6478)
+(or x6451 (not x6461) (not x6478))
+(or (not x6451) x6461 (not x6478))
+(or (not x6451) (not x6461) x6478)
+(or (not x6481) (not x6451) x6482)
+(or (not x6482) x6481)
+(or (not x6482) x6451)
+(or x6483 (not x6484))
+(or x6483 (not x6482))
+(or x6484 x6482 (not x6483))
+(or (not x6485) (not x6483) x6486)
+(or (not x6486) x6485)
+(or (not x6486) x6483)
+(or (not x6487) (not x5716) (not x6488) (not x5716) x6489)
+(or (not x6489) x6487)
+(or (not x6489) x5716)
+(or (not x6489) x6488)
+(or (not x6489) x5716)
+(or x6490 (not x6261))
+(or x6490 (not x6489))
+(or x6490 (not x6260))
+(or x6261 x6489 x6260 (not x6490))
+(or x6472 x6262 x6490)
+(or x6472 (not x6262) (not x6490))
+(or (not x6472) x6262 (not x6490))
+(or (not x6472) (not x6262) x6490)
+(or (not x6271) (not x6266) (not x5716) (not x6255) x6268 (not x6491) (not x6472) x6492)
+(or (not x6492) x6271)
+(or (not x6492) x6266)
+(or (not x6492) x5716)
+(or (not x6492) x6255)
+(or (not x6492) (not x6268))
+(or (not x6492) x6491)
+(or (not x6492) x6472)
+(or x6493 (not x6492))
+(or x6493 (not x6486))
+(or x6492 x6486 (not x6493))
+(or (not x6494) (not x6493) x6495)
+(or (not x6495) x6494)
+(or (not x6495) x6493)
+(or x6496 (not x6495))
+(or x6496 (not x6477))
+(or x6495 x6477 (not x6496))
+(or (not x185) (not x6264) (not x5716) (not x193) (not x6496) x6497)
+(or (not x6497) x185)
+(or (not x6497) x6264)
+(or (not x6497) x5716)
+(or (not x6497) x193)
+(or (not x6497) x6496)
+(or (not x185) (not x186) (not x6469) (not x5716) x6498)
+(or (not x6498) x185)
+(or (not x6498) x186)
+(or (not x6498) x6469)
+(or (not x6498) x5716)
+(or x6499 (not x6498))
+(or x6499 (not x6497))
+(or x6499 (not x6475))
+(or x6498 x6497 x6475 (not x6499))
+(or (not x6499) (not x5716) x6500)
+(or (not x6500) x6499)
+(or (not x6500) x5716)
+(or (not x6468) (not x6487) (not x5716) x6501)
+(or (not x6501) x6468)
+(or (not x6501) x6487)
+(or (not x6501) x5716)
+(or (not x6471) (not x6456) (not x6502) x6503)
+(or (not x6503) x6471)
+(or (not x6503) x6456)
+(or (not x6503) x6502)
+(or x6504 (not x6503))
+(or x6504 (not x6501))
+(or x6503 x6501 (not x6504))
+(or (not x6258) (not x5716) (not x186) (not x193) (not x6455) (not x6504) x6505)
+(or (not x6505) x6258)
+(or (not x6505) x5716)
+(or (not x6505) x186)
+(or (not x6505) x193)
+(or (not x6505) x6455)
+(or (not x6505) x6504)
+(or (not x6476) (not x6271) (not x6266) (not x5716) (not x6255) x6268 (not x6487) (not x5716) x6506)
+(or (not x6506) x6476)
+(or (not x6506) x6271)
+(or (not x6506) x6266)
+(or (not x6506) x5716)
+(or (not x6506) x6255)
+(or (not x6506) (not x6268))
+(or (not x6506) x6487)
+(or (not x6506) x5716)
+(or x6438 x6444 x6480)
+(or x6438 (not x6444) (not x6480))
+(or (not x6438) x6444 (not x6480))
+(or (not x6438) (not x6444) x6480)
+(or (not x6481) (not x6438) x6507)
+(or (not x6507) x6481)
+(or (not x6507) x6438)
+(or x6508 (not x6484))
+(or x6508 (not x6507))
+(or x6484 x6507 (not x6508))
+(or (not x6485) (not x6508) x6509)
+(or (not x6509) x6485)
+(or (not x6509) x6508)
+(or x6502 x6261 x6260)
+(or x6502 (not x6261) (not x6260))
+(or (not x6502) x6261 (not x6260))
+(or (not x6502) (not x6261) x6260)
+(or (not x6271) (not x6266) (not x5716) (not x6255) x6268 (not x6491) (not x6502) x6510)
+(or (not x6510) x6271)
+(or (not x6510) x6266)
+(or (not x6510) x5716)
+(or (not x6510) x6255)
+(or (not x6510) (not x6268))
+(or (not x6510) x6491)
+(or (not x6510) x6502)
+(or x6511 (not x6510))
+(or x6511 (not x6509))
+(or x6510 x6509 (not x6511))
+(or (not x6494) (not x6511) x6512)
+(or (not x6512) x6494)
+(or (not x6512) x6511)
+(or x6513 (not x6512))
+(or x6513 (not x6506))
+(or x6512 x6506 (not x6513))
+(or (not x185) (not x6264) (not x5716) (not x193) (not x6513) x6514)
+(or (not x6514) x185)
+(or (not x6514) x6264)
+(or (not x6514) x5716)
+(or (not x6514) x193)
+(or (not x6514) x6513)
+(or (not x185) (not x186) (not x6487) (not x5716) x6515)
+(or (not x6515) x185)
+(or (not x6515) x186)
+(or (not x6515) x6487)
+(or (not x6515) x5716)
+(or x6516 (not x6515))
+(or x6516 (not x6514))
+(or x6516 (not x6505))
+(or x6515 x6514 x6505 (not x6516))
+(or (not x6516) (not x5716) x6517)
+(or (not x6517) x6516)
+(or (not x6517) x5716)
+(or (not x6518) (not x6519) (not x6520) (not x6456) x6521)
+(or (not x6521) x6518)
+(or (not x6521) x6519)
+(or (not x6521) x6520)
+(or (not x6521) x6456)
+(or x6468 (not x6521))
+(or x6468 (not x6263))
+(or x6521 x6263 (not x6468))
+(or (not x6468) (not x6488) (not x5716) x6522)
+(or (not x6522) x6468)
+(or (not x6522) x6488)
+(or (not x6522) x5716)
+(or (not x6253) (not x5716) (not x6254) (not x6255) (not x6256) x6246 x6523)
+(or (not x6523) x6253)
+(or (not x6523) x5716)
+(or (not x6523) x6254)
+(or (not x6523) x6255)
+(or (not x6523) x6256)
+(or (not x6523) (not x6246))
+(or (not x6255) (not x6256) (not x6421) x6274)
+(or (not x6274) x6255)
+(or (not x6274) x6256)
+(or (not x6274) x6421)
+(or x6456 (not x6274))
+(or x6456 (not x6267))
+(or x6456 (not x6524))
+(or x6456 (not x6523))
+(or x6274 x6267 x6524 x6523 (not x6456))
+(or (not x6471) (not x6456) (not x6518) x6525)
+(or (not x6525) x6471)
+(or (not x6525) x6456)
+(or (not x6525) x6518)
+(or x6526 (not x6525))
+(or x6526 (not x6522))
+(or x6525 x6522 (not x6526))
+(or (not x6258) (not x5716) (not x186) (not x193) (not x6455) (not x6526) x6527)
+(or (not x6527) x6258)
+(or (not x6527) x5716)
+(or (not x6527) x186)
+(or (not x6527) x193)
+(or (not x6527) x6455)
+(or (not x6527) x6526)
+(or x6520 x6469)
+(or x6520 x5716)
+(or (not x6469) (not x5716) (not x6520))
+(or x6519 x6487)
+(or x6519 x5716)
+(or (not x6487) (not x5716) (not x6519))
+(or (not x6518) (not x6519) (not x6520) x6528)
+(or (not x6528) x6518)
+(or (not x6528) x6519)
+(or (not x6528) x6520)
+(or x6476 (not x6265))
+(or x6476 x6266)
+(or x6476 x5716)
+(or x6476 (not x6267))
+(or x6476 (not x6268))
+(or x6476 (not x6528))
+(or x6265 (not x6266) (not x5716) x6267 x6268 x6528 (not x6476))
+(or (not x6476) (not x6271) (not x6266) (not x5716) (not x6255) x6268 (not x6488) (not x5716) x6529)
+(or (not x6529) x6476)
+(or (not x6529) x6271)
+(or (not x6529) x6266)
+(or (not x6529) x5716)
+(or (not x6529) x6255)
+(or (not x6529) (not x6268))
+(or (not x6529) x6488)
+(or (not x6529) x5716)
+(or x6462 x6381)
+(or x6462 x5716)
+(or x6462 x6380)
+(or x6462 x5716)
+(or (not x6381) (not x5716) (not x6380) (not x5716) (not x6462))
+(or x6481 x6382)
+(or x6481 x5716)
+(or x6481 x6381)
+(or x6481 x5716)
+(or x6481 x6380)
+(or x6481 x5716)
+(or (not x6382) (not x5716) (not x6381) (not x5716) (not x6380) (not x5716) (not x6481))
+(or (not x6481) (not x6403) x6530)
+(or (not x6530) x6481)
+(or (not x6530) x6403)
+(or (not x6381) (not x5716) (not x6380) (not x5716) x6479)
+(or (not x6479) x6381)
+(or (not x6479) x5716)
+(or (not x6479) x6380)
+(or (not x6479) x5716)
+(or (not x6382) (not x5716) (not x6381) (not x5716) (not x6380) (not x5716) x6484)
+(or (not x6484) x6382)
+(or (not x6484) x5716)
+(or (not x6484) x6381)
+(or (not x6484) x5716)
+(or (not x6484) x6380)
+(or (not x6484) x5716)
+(or x6531 (not x6484))
+(or x6531 (not x6530))
+(or x6484 x6530 (not x6531))
+(or (not x6485) (not x6531) x6532)
+(or (not x6532) x6485)
+(or (not x6532) x6531)
+(or x6518 x6488)
+(or x6518 x5716)
+(or (not x6488) (not x5716) (not x6518))
+(or (not x6271) (not x6266) (not x5716) (not x6255) x6268 (not x6491) (not x6518) x6533)
+(or (not x6533) x6271)
+(or (not x6533) x6266)
+(or (not x6533) x5716)
+(or (not x6533) x6255)
+(or (not x6533) (not x6268))
+(or (not x6533) x6491)
+(or (not x6533) x6518)
+(or x6534 (not x6533))
+(or x6534 (not x6532))
+(or x6533 x6532 (not x6534))
+(or x6494 (not x6535))
+(or x6494 (not x6265))
+(or x6494 x6266)
+(or x6494 x5716)
+(or x6494 (not x6267))
+(or x6494 (not x6268))
+(or x6535 x6265 (not x6266) (not x5716) x6267 x6268 (not x6494))
+(or (not x6494) (not x6534) x6536)
+(or (not x6536) x6494)
+(or (not x6536) x6534)
+(or x6537 (not x6536))
+(or x6537 (not x6529))
+(or x6536 x6529 (not x6537))
+(or (not x185) (not x6264) (not x5716) (not x193) (not x6537) x6538)
+(or (not x6538) x185)
+(or (not x6538) x6264)
+(or (not x6538) x5716)
+(or (not x6538) x193)
+(or (not x6538) x6537)
+(or (not x185) (not x186) (not x6488) (not x5716) x6539)
+(or (not x6539) x185)
+(or (not x6539) x186)
+(or (not x6539) x6488)
+(or (not x6539) x5716)
+(or x6540 (not x6539))
+(or x6540 (not x6538))
+(or x6540 (not x6527))
+(or x6539 x6538 x6527 (not x6540))
+(or (not x6540) (not x5716) x6541)
+(or (not x6541) x6540)
+(or (not x6541) x5716)
+(or (not x6258) (not x5716) (not x186) (not x193) (not x6455) (not x6471) (not x6264) (not x5716) x6542)
+(or (not x6542) x6258)
+(or (not x6542) x5716)
+(or (not x6542) x186)
+(or (not x6542) x193)
+(or (not x6542) x6455)
+(or (not x6542) x6471)
+(or (not x6542) x6264)
+(or (not x6542) x5716)
+(or (not x185) (not x6264) (not x5716) (not x193) (not x6485) (not x6264) (not x5716) x6543)
+(or (not x6543) x185)
+(or (not x6543) x6264)
+(or (not x6543) x5716)
+(or (not x6543) x193)
+(or (not x6543) x6485)
+(or (not x6543) x6264)
+(or (not x6543) x5716)
+(or (not x6380) (not x5716) x6480)
+(or (not x6480) x6380)
+(or (not x6480) x5716)
+(or (not x6544) (not x6380) (not x5716) x6545)
+(or (not x6545) x6544)
+(or (not x6545) x6380)
+(or (not x6545) x5716)
+(or x6546 (not x6444))
+(or x6546 (not x6545))
+(or x6444 x6545 (not x6546))
+(or (not x6547) (not x6546) x6548)
+(or (not x6548) x6547)
+(or (not x6548) x6546)
+(or x6549 (not x6461))
+(or x6549 (not x6548))
+(or x6549 (not x5698))
+(or x6461 x6548 x5698 (not x6549))
+(or (not x185) (not x186) (not x6549) x6550)
+(or (not x6550) x185)
+(or (not x6550) x186)
+(or (not x6550) x6549)
+(or x6551 (not x6550))
+(or x6551 (not x6543))
+(or x6551 (not x6542))
+(or x6550 x6543 x6542 (not x6551))
+(or (not x6551) (not x5716) x6552)
+(or (not x6552) x6551)
+(or (not x6552) x5716)
+(or x6421 x6253)
+(or x6421 x5716)
+(or x6421 (not x6284))
+(or (not x6253) (not x5716) x6284 (not x6421))
+(or x6553 x6253)
+(or x6553 x5716)
+(or x6553 (not x6284))
+(or x6553 (not x6267))
+(or x6553 (not x6285))
+(or x6553 (not x6246))
+(or (not x6253) (not x5716) x6284 x6267 x6285 x6246 (not x6553))
+(or (not x6253) (not x5716) (not x6254) x6554)
+(or (not x6554) x6253)
+(or (not x6554) x5716)
+(or (not x6554) x6254)
+(or x6555 (not x6267))
+(or x6555 (not x6285))
+(or x6555 (not x6554))
+(or x6267 x6285 x6554 (not x6555))
+(or (not x6555) (not x6255) (not x6556) (not x6553) x6263)
+(or (not x6263) x6555)
+(or (not x6263) x6255)
+(or (not x6263) x6556)
+(or (not x6263) x6553)
+(or x6471 (not x6260))
+(or x6471 (not x6261))
+(or x6471 (not x6262))
+(or x6471 (not x6263))
+(or x6260 x6261 x6262 x6263 (not x6471))
+(or x6455 (not x5697))
+(or x6455 x6264)
+(or x6455 x5716)
+(or x5697 (not x6264) (not x5716) (not x6455))
+(or (not x6258) (not x5716) (not x186) (not x193) (not x6455) (not x6471) (not x6258) (not x5716) x6557)
+(or (not x6557) x6258)
+(or (not x6557) x5716)
+(or (not x6557) x186)
+(or (not x6557) x193)
+(or (not x6557) x6455)
+(or (not x6557) x6471)
+(or (not x6557) x6258)
+(or (not x6557) x5716)
+(or (not x6271) (not x6254) x6267)
+(or (not x6267) x6271)
+(or (not x6267) x6254)
+(or x6254 x6266)
+(or x6254 x5716)
+(or (not x6266) (not x5716) (not x6254))
+(or x6256 (not x6265))
+(or x6256 x6266)
+(or x6256 x5716)
+(or x6265 (not x6266) (not x5716) (not x6256))
+(or x6556 (not x6265))
+(or x6556 x6266)
+(or x6556 x5716)
+(or x6556 (not x6267))
+(or x6265 (not x6266) (not x5716) x6267 (not x6556))
+(or x6485 (not x6265))
+(or x6485 x6266)
+(or x6485 x5716)
+(or x6485 (not x6267))
+(or x6485 (not x6268))
+(or x6265 (not x6266) (not x5716) x6267 x6268 (not x6485))
+(or (not x6485) (not x6258) (not x5716) x6558)
+(or (not x6558) x6485)
+(or (not x6558) x6258)
+(or (not x6558) x5716)
+(or (not x6469) (not x5716) x6262)
+(or (not x6262) x6469)
+(or (not x6262) x5716)
+(or (not x6487) (not x5716) x6261)
+(or (not x6261) x6487)
+(or (not x6261) x5716)
+(or (not x6488) (not x5716) x6260)
+(or (not x6260) x6488)
+(or (not x6260) x5716)
+(or x6491 (not x6260))
+(or x6491 (not x6261))
+(or x6491 (not x6262))
+(or x6260 x6261 x6262 (not x6491))
+(or (not x6253) (not x5716) x6265)
+(or (not x6265) x6253)
+(or (not x6265) x5716)
+(or x6255 (not x6265))
+(or x6255 (not x6284))
+(or x6265 x6284 (not x6255))
+(or (not x6266) (not x5716) x6284)
+(or (not x6284) x6266)
+(or (not x6284) x5716)
+(or x6271 x6253)
+(or x6271 x5716)
+(or (not x6253) (not x5716) (not x6271))
+(or (not x6271) (not x6266) (not x5716) x6285)
+(or (not x6285) x6271)
+(or (not x6285) x6266)
+(or (not x6285) x5716)
+(or (not x6271) (not x6266) (not x5716) (not x6255) x6524)
+(or (not x6524) x6271)
+(or (not x6524) x6266)
+(or (not x6524) x5716)
+(or (not x6524) x6255)
+(or (not x6271) (not x6266) (not x5716) (not x6255) x6268 (not x6491) x6535)
+(or (not x6535) x6271)
+(or (not x6535) x6266)
+(or (not x6535) x5716)
+(or (not x6535) x6255)
+(or (not x6535) (not x6268))
+(or (not x6535) x6491)
+(or x6559 (not x6535))
+(or x6559 (not x6558))
+(or x6535 x6558 (not x6559))
+(or x193 (not x5697))
+(or x193 (not x5698))
+(or x5697 x5698 (not x193))
+(or (not x6264) (not x5716) x5698)
+(or (not x5698) x6264)
+(or (not x5698) x5716)
+(or (not x185) (not x6264) (not x5716) x6259)
+(or (not x6259) x185)
+(or (not x6259) x6264)
+(or (not x6259) x5716)
+(or (not x185) (not x6264) (not x5716) (not x193) (not x6559) x6560)
+(or (not x6560) x185)
+(or (not x6560) x6264)
+(or (not x6560) x5716)
+(or (not x6560) x193)
+(or (not x6560) x6559)
+(or (not x6258) (not x5716) x5697)
+(or (not x5697) x6258)
+(or (not x5697) x5716)
+(or x6403 x6380)
+(or x6403 x5716)
+(or (not x6380) (not x5716) (not x6403))
+(or (not x6381) (not x5716) x6444)
+(or (not x6444) x6381)
+(or (not x6444) x5716)
+(or x6561 (not x6444))
+(or x6561 x6380)
+(or x6561 x5716)
+(or x6444 (not x6380) (not x5716) (not x6561))
+(or x6544 x6381)
+(or x6544 x5716)
+(or (not x6381) (not x5716) (not x6544))
+(or (not x6544) (not x6561) x6562)
+(or (not x6562) x6544)
+(or (not x6562) x6561)
+(or (not x6382) (not x5716) x6461)
+(or (not x6461) x6382)
+(or (not x6461) x5716)
+(or x6563 (not x6461))
+(or x6563 (not x6562))
+(or x6461 x6562 (not x6563))
+(or x6547 x6382)
+(or x6547 x5716)
+(or (not x6382) (not x5716) (not x6547))
+(or x186 x6264)
+(or x186 x5716)
+(or (not x6264) (not x5716) (not x186))
+(or x185 x6258)
+(or x185 x5716)
+(or (not x6258) (not x5716) (not x185))
+(or (not x185) (not x186) x5672)
+(or (not x5672) x185)
+(or (not x5672) x186)
+(or (not x185) (not x186) (not x6547) (not x6563) (not x6258) (not x5716) x6564)
+(or (not x6564) x185)
+(or (not x6564) x186)
+(or (not x6564) x6547)
+(or (not x6564) x6563)
+(or (not x6564) x6258)
+(or (not x6564) x5716)
+(or x6565 (not x6564))
+(or x6565 (not x6560))
+(or x6565 (not x6557))
+(or x6564 x6560 x6557 (not x6565))
+(or (not x6565) (not x5716) x6566)
+(or (not x6566) x6565)
+(or (not x6566) x5716)
+(or x6567 (not x5717))
+(or x6567 (not x5716))
+(or x5717 x5716 (not x6567))
+(or x5717 x5716 x6568)
+(or (not x6568) (not x5717))
+(or (not x6568) (not x5716))
+(or x6569 (not x6568))
+(or x6569 (not x5717))
+(or x6569 x5716)
+(or x6568 x5717 (not x5716) (not x6569))
+(or (not x6570) (not x183))
+(or (not x6570) x182)
+(or (not x6570) (not x181))
+(or (not x6570) x180)
+(or (not x6570) x179)
+(or (not x6571) (not x183))
+(or (not x6571) x182)
+(or (not x6571) (not x181))
+(or (not x6571) x180)
+(or (not x6571) (not x179))
+(or (not x6572) (not x183))
+(or (not x6572) x182)
+(or (not x6572) (not x181))
+(or (not x6572) (not x180))
+(or (not x6572) x179)
+(or (not x6573) (not x183))
+(or (not x6573) x182)
+(or (not x6573) (not x181))
+(or (not x6573) (not x180))
+(or (not x6573) (not x179))
+(or (not x6574) (not x183))
+(or (not x6574) (not x182))
+(or (not x6574) x181)
+(or (not x6574) x180)
+(or (not x6574) x179)
+(or (not x6575) (not x183))
+(or (not x6575) (not x182))
+(or (not x6575) x181)
+(or (not x6575) x180)
+(or (not x6575) (not x179))
+(or (not x6576) (not x183))
+(or (not x6576) (not x182))
+(or (not x6576) x181)
+(or (not x6576) (not x180))
+(or (not x6576) x179)
+(or (not x6577) (not x183))
+(or (not x6577) (not x182))
+(or (not x6577) x181)
+(or (not x6577) (not x180))
+(or (not x6577) (not x179))
+(or (not x6578) (not x183))
+(or (not x6578) (not x182))
+(or (not x6578) (not x181))
+(or (not x6578) x180)
+(or (not x6578) x179)
+(or (not x6579) (not x183))
+(or (not x6579) (not x182))
+(or (not x6579) (not x181))
+(or (not x6579) x180)
+(or (not x6579) (not x179))
+(or x183 x182 x181 x180 (not x179) x5670)
+(or (not x5670) (not x183))
+(or (not x5670) (not x182))
+(or (not x5670) (not x181))
+(or (not x5670) (not x180))
+(or (not x5670) x179)
+(or (not x6580) (not x183))
+(or (not x6580) (not x182))
+(or (not x6580) (not x181))
+(or (not x6580) (not x180))
+(or (not x6580) (not x179))
+(or x6581 (not x6580))
+(or x6581 (not x5670))
+(or x6581 (not x6579))
+(or x6581 (not x6578))
+(or x6581 (not x6577))
+(or x6581 (not x6576))
+(or x6581 (not x6575))
+(or x6581 (not x6574))
+(or x6581 (not x6573))
+(or x6581 (not x6572))
+(or x6581 (not x6571))
+(or x6580 x5670 x6579 x6578 x6577 x6576 x6575 x6574 x6573 x6572 x6571 (not x6581))
+(or (not x6582) (not x6583) (not x6584) (not x6585) (not x6586) (not x6587) (not x6588) (not x6589) x6590)
+(or (not x6590) x6582)
+(or (not x6590) x6583)
+(or (not x6590) x6584)
+(or (not x6590) x6585)
+(or (not x6590) x6586)
+(or (not x6590) x6587)
+(or (not x6590) x6588)
+(or (not x6590) x6589)
+(or x6591 (not x6592))
+(or x6591 x6593)
+(or x6592 (not x6593) (not x6591))
+(or x6592 (not x6591) (not x6594) x6595)
+(or (not x6595) (not x6592))
+(or (not x6595) x6591)
+(or (not x6595) x6594)
+(or x6584 (not x6596))
+(or x6584 (not x6597))
+(or x6584 (not x202))
+(or x6584 (not x201))
+(or x6584 (not x200))
+(or x6584 x199)
+(or x6584 x198)
+(or x6584 (not x6598))
+(or x6584 (not x6595))
+(or x6596 x6597 x202 x201 x200 (not x199) (not x198) x6598 x6595 (not x6584))
+(or x6599 (not x6600))
+(or x6599 x6601)
+(or x6600 (not x6601) (not x6599))
+(or x6600 (not x6599) (not x6602) x6603)
+(or (not x6603) (not x6600))
+(or (not x6603) x6599)
+(or (not x6603) x6602)
+(or x6583 (not x6596))
+(or x6583 (not x202))
+(or x6583 (not x201))
+(or x6583 (not x200))
+(or x6583 x199)
+(or x6583 (not x198))
+(or x6583 (not x6604))
+(or x6583 (not x6598))
+(or x6583 (not x6603))
+(or x6596 x202 x201 x200 (not x199) x198 x6604 x6598 x6603 (not x6583))
+(or x6605 (not x6606) x6607)
+(or (not x6607) (not x6605))
+(or (not x6607) x6606)
+(or x6608 (not x202))
+(or x6608 (not x201))
+(or x6608 (not x200))
+(or x6608 (not x199))
+(or x6608 x198)
+(or x6608 (not x6607))
+(or x202 x201 x200 x199 (not x198) x6607 (not x6608))
+(or (not x6608) (not x6583) (not x6584) (not x6585) (not x6586) (not x6589) x6609)
+(or (not x6609) x6608)
+(or (not x6609) x6583)
+(or (not x6609) x6584)
+(or (not x6609) x6585)
+(or (not x6609) x6586)
+(or (not x6609) x6589)
+(or x6594 (not x6592))
+(or x6594 (not x6593))
+(or x6592 x6593 (not x6594))
+(or x6610 (not x6596))
+(or x6610 (not x6597))
+(or x6610 (not x202))
+(or x6610 (not x201))
+(or x6610 (not x200))
+(or x6610 x199)
+(or x6610 x198)
+(or x6610 (not x6598))
+(or x6610 (not x6592))
+(or x6610 (not x6593))
+(or x6596 x6597 x202 x201 x200 (not x199) (not x198) x6598 x6592 x6593 (not x6610))
+(or x6602 (not x6600))
+(or x6602 (not x6601))
+(or x6600 x6601 (not x6602))
+(or x6611 (not x6596))
+(or x6611 (not x202))
+(or x6611 (not x201))
+(or x6611 (not x200))
+(or x6611 x199)
+(or x6611 (not x198))
+(or x6611 (not x6604))
+(or x6611 (not x6598))
+(or x6611 (not x6600))
+(or x6611 (not x6601))
+(or x6596 x202 x201 x200 (not x199) x198 x6604 x6598 x6600 x6601 (not x6611))
+(or x6612 (not x6605))
+(or x6612 (not x6613))
+(or x6612 x6614)
+(or x6605 x6613 (not x6614) (not x6612))
+(or x6605 (not x6615) (not x6612) (not x6606) x6616)
+(or (not x6616) (not x6605))
+(or (not x6616) x6615)
+(or (not x6616) x6612)
+(or (not x6616) x6606)
+(or x6582 (not x202))
+(or x6582 (not x201))
+(or x6582 (not x200))
+(or x6582 (not x199))
+(or x6582 x198)
+(or x6582 (not x6616))
+(or x202 x201 x200 x199 (not x198) x6616 (not x6582))
+(or (not x6582) (not x6611) (not x6610) (not x6587) (not x6588) (not x6589) x6617)
+(or (not x6617) x6582)
+(or (not x6617) x6611)
+(or (not x6617) x6610)
+(or (not x6617) x6587)
+(or (not x6617) x6588)
+(or (not x6617) x6589)
+(or x6618 (not x6596))
+(or x6618 (not x6597))
+(or x6618 (not x6619))
+(or x6618 (not x6620))
+(or x6618 (not x6621))
+(or x6618 (not x6622))
+(or x6618 (not x202))
+(or x6618 x201)
+(or x6618 (not x200))
+(or x6618 (not x199))
+(or x6618 x198)
+(or x6618 (not x206))
+(or x6618 (not x207))
+(or x6618 (not x208))
+(or x6618 (not x209))
+(or x6618 (not x210))
+(or x6618 (not x211))
+(or x6618 (not x6623))
+(or x6618 (not x6624))
+(or x6618 (not x6625))
+(or x6596 x6597 x6619 x6620 x6621 x6622 x202 (not x201) x200 x199 (not x198) x206 x207 x208 x209 x210 x211 x6623 x6624 x6625 (not x6618))
+(or x6626 (not x6596))
+(or x6626 (not x6597))
+(or x6626 (not x6619))
+(or x6626 (not x6620))
+(or x6626 (not x6621))
+(or x6626 (not x202))
+(or x6626 x201)
+(or x6626 (not x200))
+(or x6626 (not x199))
+(or x6626 (not x198))
+(or x6626 (not x6604))
+(or x6626 (not x6623))
+(or x6626 (not x6624))
+(or x6626 (not x206))
+(or x6626 (not x207))
+(or x6626 (not x208))
+(or x6626 (not x209))
+(or x6626 (not x210))
+(or x6626 (not x211))
+(or x6626 (not x6623))
+(or x6626 (not x6624))
+(or x6626 (not x6627))
+(or x6596 x6597 x6619 x6620 x6621 x202 (not x201) x200 x199 x198 x6604 x6623 x6624 x206 x207 x208 x209 x210 x211 x6623 x6624 x6627 (not x6626))
+(or x6628 (not x6596))
+(or x6628 (not x6597))
+(or x6628 (not x6619))
+(or x6628 (not x6620))
+(or x6628 (not x202))
+(or x6628 (not x201))
+(or x6628 x200)
+(or x6628 (not x199))
+(or x6628 x198)
+(or x6628 (not x206))
+(or x6628 (not x207))
+(or x6628 (not x208))
+(or x6628 (not x209))
+(or x6628 (not x210))
+(or x6628 (not x211))
+(or x6628 (not x6623))
+(or x6628 (not x6624))
+(or x6628 (not x6629))
+(or x6596 x6597 x6619 x6620 x202 x201 (not x200) x199 (not x198) x206 x207 x208 x209 x210 x211 x6623 x6624 x6629 (not x6628))
+(or x6630 (not x6596))
+(or x6630 (not x6597))
+(or x6630 (not x6619))
+(or x6630 (not x202))
+(or x6630 (not x201))
+(or x6630 x200)
+(or x6630 (not x199))
+(or x6630 (not x198))
+(or x6630 (not x6623))
+(or x6630 (not x6624))
+(or x6630 (not x206))
+(or x6630 (not x207))
+(or x6630 (not x208))
+(or x6630 (not x209))
+(or x6630 (not x210))
+(or x6630 (not x211))
+(or x6630 (not x6623))
+(or x6630 (not x6624))
+(or x6630 (not x6631))
+(or x6596 x6597 x6619 x202 x201 (not x200) x199 x198 x6623 x6624 x206 x207 x208 x209 x210 x211 x6623 x6624 x6631 (not x6630))
+(or x6606 (not x6605))
+(or x6606 (not x6613))
+(or x6606 (not x6614))
+(or x6605 x6613 x6614 (not x6606))
+(or (not x6615) (not x6606) x6632)
+(or (not x6632) x6615)
+(or (not x6632) x6606)
+(or x6633 (not x202))
+(or x6633 (not x201))
+(or x6633 (not x200))
+(or x6633 (not x199))
+(or x6633 x198)
+(or x6633 (not x6632))
+(or x202 x201 x200 x199 (not x198) x6632 (not x6633))
+(or (not x6633) (not x6634) (not x6635) (not x6630) (not x6628) (not x6626) (not x6618) (not x6589) x6636)
+(or (not x6636) x6633)
+(or (not x6636) x6634)
+(or (not x6636) x6635)
+(or (not x6636) x6630)
+(or (not x6636) x6628)
+(or (not x6636) x6626)
+(or (not x6636) x6618)
+(or (not x6636) x6589)
+(or x202 (not x201) x200 x199 (not x198) x206 x207 x208 x209 x210 x211 (not x204) (not x205) x6637)
+(or (not x6637) (not x202))
+(or (not x6637) x201)
+(or (not x6637) (not x200))
+(or (not x6637) (not x199))
+(or (not x6637) x198)
+(or (not x6637) (not x206))
+(or (not x6637) (not x207))
+(or (not x6637) (not x208))
+(or (not x6637) (not x209))
+(or (not x6637) (not x210))
+(or (not x6637) (not x211))
+(or (not x6637) x204)
+(or (not x6637) x205)
+(or x6589 (not x6596))
+(or x6589 (not x6597))
+(or x6589 (not x6619))
+(or x6589 (not x6620))
+(or x6589 (not x6621))
+(or x6589 (not x6622))
+(or x6589 (not x6637))
+(or x6596 x6597 x6619 x6620 x6621 x6622 x6637 (not x6589))
+(or x202 (not x201) x200 x199 x198 (not x203) (not x204) (not x205) x206 x207 x208 x209 x210 x211 (not x204) (not x205) x6622)
+(or (not x6622) (not x202))
+(or (not x6622) x201)
+(or (not x6622) (not x200))
+(or (not x6622) (not x199))
+(or (not x6622) (not x198))
+(or (not x6622) x203)
+(or (not x6622) x204)
+(or (not x6622) x205)
+(or (not x6622) (not x206))
+(or (not x6622) (not x207))
+(or (not x6622) (not x208))
+(or (not x6622) (not x209))
+(or (not x6622) (not x210))
+(or (not x6622) (not x211))
+(or (not x6622) x204)
+(or (not x6622) x205)
+(or x6588 (not x6596))
+(or x6588 (not x6597))
+(or x6588 (not x6619))
+(or x6588 (not x6620))
+(or x6588 (not x6621))
+(or x6588 (not x6622))
+(or x6588 (not x202))
+(or x6588 x201)
+(or x6588 (not x200))
+(or x6588 (not x199))
+(or x6588 x198)
+(or x6588 (not x206))
+(or x6588 (not x207))
+(or x6588 (not x208))
+(or x6588 (not x209))
+(or x6588 (not x210))
+(or x6588 (not x211))
+(or x6588 (not x6623))
+(or x6588 (not x6624))
+(or x6596 x6597 x6619 x6620 x6621 x6622 x202 (not x201) x200 x199 (not x198) x206 x207 x208 x209 x210 x211 x6623 x6624 (not x6588))
+(or x6638 (not x6596))
+(or x6638 (not x6597))
+(or x6638 (not x6619))
+(or x6638 (not x6620))
+(or x6638 (not x6621))
+(or x6638 (not x6622))
+(or x6638 (not x202))
+(or x6638 x201)
+(or x6638 (not x200))
+(or x6638 (not x199))
+(or x6638 x198)
+(or x6638 (not x206))
+(or x6638 (not x207))
+(or x6638 (not x208))
+(or x6638 (not x209))
+(or x6638 (not x210))
+(or x6638 (not x211))
+(or x6638 (not x6623))
+(or x6638 (not x6624))
+(or x6638 x6625)
+(or x6596 x6597 x6619 x6620 x6621 x6622 x202 (not x201) x200 x199 (not x198) x206 x207 x208 x209 x210 x211 x6623 x6624 (not x6625) (not x6638))
+(or x202 x201 (not x200) x199 (not x198) x206 x207 x208 x209 x210 x211 (not x204) (not x205) x6621)
+(or (not x6621) (not x202))
+(or (not x6621) (not x201))
+(or (not x6621) x200)
+(or (not x6621) (not x199))
+(or (not x6621) x198)
+(or (not x6621) (not x206))
+(or (not x6621) (not x207))
+(or (not x6621) (not x208))
+(or (not x6621) (not x209))
+(or (not x6621) (not x210))
+(or (not x6621) (not x211))
+(or (not x6621) x204)
+(or (not x6621) x205)
+(or x6587 (not x6596))
+(or x6587 (not x6597))
+(or x6587 (not x6619))
+(or x6587 (not x6620))
+(or x6587 (not x6621))
+(or x6587 (not x202))
+(or x6587 x201)
+(or x6587 (not x200))
+(or x6587 (not x199))
+(or x6587 (not x198))
+(or x6587 (not x6604))
+(or x6587 (not x6623))
+(or x6587 (not x6624))
+(or x6587 (not x206))
+(or x6587 (not x207))
+(or x6587 (not x208))
+(or x6587 (not x209))
+(or x6587 (not x210))
+(or x6587 (not x211))
+(or x6587 (not x6623))
+(or x6587 (not x6624))
+(or x6596 x6597 x6619 x6620 x6621 x202 (not x201) x200 x199 x198 x6604 x6623 x6624 x206 x207 x208 x209 x210 x211 x6623 x6624 (not x6587))
+(or x6639 (not x6596))
+(or x6639 (not x6597))
+(or x6639 (not x6619))
+(or x6639 (not x6620))
+(or x6639 (not x6621))
+(or x6639 (not x202))
+(or x6639 x201)
+(or x6639 (not x200))
+(or x6639 (not x199))
+(or x6639 (not x198))
+(or x6639 (not x6604))
+(or x6639 (not x6623))
+(or x6639 (not x6624))
+(or x6639 (not x206))
+(or x6639 (not x207))
+(or x6639 (not x208))
+(or x6639 (not x209))
+(or x6639 (not x210))
+(or x6639 (not x211))
+(or x6639 (not x6623))
+(or x6639 (not x6624))
+(or x6639 x6627)
+(or x6596 x6597 x6619 x6620 x6621 x202 (not x201) x200 x199 x198 x6604 x6623 x6624 x206 x207 x208 x209 x210 x211 x6623 x6624 (not x6627) (not x6639))
+(or x202 x201 (not x200) x199 x198 (not x204) (not x205) x206 x207 x208 x209 x210 x211 (not x204) (not x205) x6620)
+(or (not x6620) (not x202))
+(or (not x6620) (not x201))
+(or (not x6620) x200)
+(or (not x6620) (not x199))
+(or (not x6620) (not x198))
+(or (not x6620) x204)
+(or (not x6620) x205)
+(or (not x6620) (not x206))
+(or (not x6620) (not x207))
+(or (not x6620) (not x208))
+(or (not x6620) (not x209))
+(or (not x6620) (not x210))
+(or (not x6620) (not x211))
+(or (not x6620) x204)
+(or (not x6620) x205)
+(or x6586 (not x6596))
+(or x6586 (not x6597))
+(or x6586 (not x6619))
+(or x6586 (not x6620))
+(or x6586 (not x202))
+(or x6586 (not x201))
+(or x6586 x200)
+(or x6586 (not x199))
+(or x6586 x198)
+(or x6586 (not x206))
+(or x6586 (not x207))
+(or x6586 (not x208))
+(or x6586 (not x209))
+(or x6586 (not x210))
+(or x6586 (not x211))
+(or x6586 (not x6623))
+(or x6586 (not x6624))
+(or x6596 x6597 x6619 x6620 x202 x201 (not x200) x199 (not x198) x206 x207 x208 x209 x210 x211 x6623 x6624 (not x6586))
+(or x6640 (not x6596))
+(or x6640 (not x6597))
+(or x6640 (not x6619))
+(or x6640 (not x6620))
+(or x6640 (not x202))
+(or x6640 (not x201))
+(or x6640 x200)
+(or x6640 (not x199))
+(or x6640 x198)
+(or x6640 (not x206))
+(or x6640 (not x207))
+(or x6640 (not x208))
+(or x6640 (not x209))
+(or x6640 (not x210))
+(or x6640 (not x211))
+(or x6640 (not x6623))
+(or x6640 (not x6624))
+(or x6640 x6629)
+(or x6596 x6597 x6619 x6620 x202 x201 (not x200) x199 (not x198) x206 x207 x208 x209 x210 x211 x6623 x6624 (not x6629) (not x6640))
+(or x202 x201 x200 (not x199) (not x198) (not x212) x6619)
+(or (not x6619) (not x202))
+(or (not x6619) (not x201))
+(or (not x6619) (not x200))
+(or (not x6619) x199)
+(or (not x6619) x198)
+(or (not x6619) x212)
+(or x6585 (not x6596))
+(or x6585 (not x6597))
+(or x6585 (not x6619))
+(or x6585 (not x202))
+(or x6585 (not x201))
+(or x6585 x200)
+(or x6585 (not x199))
+(or x6585 (not x198))
+(or x6585 (not x6623))
+(or x6585 (not x6624))
+(or x6585 (not x206))
+(or x6585 (not x207))
+(or x6585 (not x208))
+(or x6585 (not x209))
+(or x6585 (not x210))
+(or x6585 (not x211))
+(or x6585 (not x6623))
+(or x6585 (not x6624))
+(or x6596 x6597 x6619 x202 x201 (not x200) x199 x198 x6623 x6624 x206 x207 x208 x209 x210 x211 x6623 x6624 (not x6585))
+(or x6641 (not x6596))
+(or x6641 (not x6597))
+(or x6641 (not x6619))
+(or x6641 (not x202))
+(or x6641 (not x201))
+(or x6641 x200)
+(or x6641 (not x199))
+(or x6641 (not x198))
+(or x6641 (not x6623))
+(or x6641 (not x6624))
+(or x6641 (not x206))
+(or x6641 (not x207))
+(or x6641 (not x208))
+(or x6641 (not x209))
+(or x6641 (not x210))
+(or x6641 (not x211))
+(or x6641 (not x6623))
+(or x6641 (not x6624))
+(or x6641 x6631)
+(or x6596 x6597 x6619 x202 x201 (not x200) x199 x198 x6623 x6624 x206 x207 x208 x209 x210 x211 x6623 x6624 (not x6631) (not x6641))
+(or x203 x6642)
+(or x203 (not x6623))
+(or x203 (not x6624))
+(or (not x6642) x6623 x6624 (not x203))
+(or x202 x201 x200 (not x199) x198 (not x203) (not x212) x6597)
+(or (not x6597) (not x202))
+(or (not x6597) (not x201))
+(or (not x6597) (not x200))
+(or (not x6597) x199)
+(or (not x6597) (not x198))
+(or (not x6597) x203)
+(or (not x6597) x212)
+(or x6635 (not x6596))
+(or x6635 (not x6597))
+(or x6635 (not x202))
+(or x6635 (not x201))
+(or x6635 (not x200))
+(or x6635 x199)
+(or x6635 x198)
+(or x6635 (not x6598))
+(or x6635 x6592)
+(or x6596 x6597 x202 x201 x200 (not x199) (not x198) x6598 (not x6592) (not x6635))
+(or (not x6642) (not x204) (not x205) x6604)
+(or (not x6604) x6642)
+(or (not x6604) x204)
+(or (not x6604) x205)
+(or x6634 (not x6596))
+(or x6634 (not x202))
+(or x6634 (not x201))
+(or x6634 (not x200))
+(or x6634 x199)
+(or x6634 (not x198))
+(or x6634 (not x6604))
+(or x6634 (not x6598))
+(or x6634 x6600)
+(or x6596 x202 x201 x200 (not x199) x198 x6604 x6598 (not x6600) (not x6634))
+(or x6615 (not x6605))
+(or x6615 x6613)
+(or x6605 (not x6613) (not x6615))
+(or x6605 (not x6615) x6644)
+(or (not x6644) (not x6605))
+(or (not x6644) x6615)
+(or x6645 (not x202))
+(or x6645 (not x201))
+(or x6645 (not x200))
+(or x6645 (not x199))
+(or x6645 x198)
+(or x6645 (not x6644))
+(or x202 x201 x200 x199 (not x198) x6644 (not x6645))
+(or (not x6645) (not x6634) (not x6635) (not x6641) (not x6640) (not x6639) (not x6638) (not x6589) x6646)
+(or (not x6646) x6645)
+(or (not x6646) x6634)
+(or (not x6646) x6635)
+(or (not x6646) x6641)
+(or (not x6646) x6640)
+(or (not x6646) x6639)
+(or (not x6646) x6638)
+(or (not x6646) x6589)
+(or (not x6647) (not x6648) (not x6642) x6649)
+(or (not x6649) x6647)
+(or (not x6649) x6648)
+(or (not x6649) x6642)
+(or x6647 (not x6650) x6651)
+(or (not x6651) (not x6647))
+(or (not x6651) x6650)
+(or x6652 (not x6651))
+(or x6652 (not x6649))
+(or x6651 x6649 (not x6652))
+(or (not x6652) (not x6642) x6653)
+(or (not x6653) x6652)
+(or (not x6653) x6642)
+(or (not x6647) (not x6654) (not x6642) x6655)
+(or (not x6655) x6647)
+(or (not x6655) x6654)
+(or (not x6655) x6642)
+(or x6647 (not x6656) x6657)
+(or (not x6657) (not x6647))
+(or (not x6657) x6656)
+(or x6658 (not x6657))
+(or x6658 (not x6655))
+(or x6657 x6655 (not x6658))
+(or (not x6658) (not x6642) x6659)
+(or (not x6659) x6658)
+(or (not x6659) x6642)
+(or (not x6647) (not x6660) (not x6642) x6661)
+(or (not x6661) x6647)
+(or (not x6661) x6660)
+(or (not x6661) x6642)
+(or x6647 (not x6662) x6663)
+(or (not x6663) (not x6647))
+(or (not x6663) x6662)
+(or x6664 (not x6663))
+(or x6664 (not x6661))
+(or x6663 x6661 (not x6664))
+(or (not x6664) (not x6642) x6665)
+(or (not x6665) x6664)
+(or (not x6665) x6642)
+(or (not x6666) (not x6667) (not x6642) x6668)
+(or (not x6668) x6666)
+(or (not x6668) x6667)
+(or (not x6668) x6642)
+(or (not x6669) (not x207) x6670 x6671)
+(or (not x6671) x6669)
+(or (not x6671) x207)
+(or (not x6671) (not x6670))
+(or x6672 (not x6671))
+(or x6672 (not x6668))
+(or x6671 x6668 (not x6672))
+(or (not x6672) (not x6642) x6673)
+(or (not x6673) x6672)
+(or (not x6673) x6642)
+(or (not x6674) (not x6675) (not x6642) x6676)
+(or (not x6676) x6674)
+(or (not x6676) x6675)
+(or (not x6676) x6642)
+(or (not x6677) (not x206) x6678 x6679)
+(or (not x6679) x6677)
+(or (not x6679) x206)
+(or (not x6679) (not x6678))
+(or x6680 (not x6679))
+(or x6680 (not x6676))
+(or x6679 x6676 (not x6680))
+(or (not x6680) (not x6642) x6681)
+(or (not x6681) x6680)
+(or (not x6681) x6642)
+(or (not x6666) (not x6682) (not x6642) x6683)
+(or (not x6683) x6666)
+(or (not x6683) x6682)
+(or (not x6683) x6642)
+(or (not x6669) (not x207) x6684 x6685)
+(or (not x6685) x6669)
+(or (not x6685) x207)
+(or (not x6685) (not x6684))
+(or x6686 (not x6685))
+(or x6686 (not x6683))
+(or x6685 x6683 (not x6686))
+(or (not x6686) (not x6642) x6687)
+(or (not x6687) x6686)
+(or (not x6687) x6642)
+(or (not x6674) (not x6688) (not x6642) x6689)
+(or (not x6689) x6674)
+(or (not x6689) x6688)
+(or (not x6689) x6642)
+(or (not x6677) (not x206) x6690 x6691)
+(or (not x6691) x6677)
+(or (not x6691) x206)
+(or (not x6691) (not x6690))
+(or x6692 (not x6691))
+(or x6692 (not x6689))
+(or x6691 x6689 (not x6692))
+(or (not x6692) (not x6642) x6693)
+(or (not x6693) x6692)
+(or (not x6693) x6642)
+(or (not x6666) (not x6694) (not x6642) x6695)
+(or (not x6695) x6666)
+(or (not x6695) x6694)
+(or (not x6695) x6642)
+(or (not x6669) (not x207) x6696 x6697)
+(or (not x6697) x6669)
+(or (not x6697) x207)
+(or (not x6697) (not x6696))
+(or x6698 (not x6697))
+(or x6698 (not x6695))
+(or x6697 x6695 (not x6698))
+(or (not x6698) (not x6642) x6699)
+(or (not x6699) x6698)
+(or (not x6699) x6642)
+(or (not x6674) (not x6700) (not x6642) x6701)
+(or (not x6701) x6674)
+(or (not x6701) x6700)
+(or (not x6701) x6642)
+(or (not x6677) (not x206) x6702 x6703)
+(or (not x6703) x6677)
+(or (not x6703) x206)
+(or (not x6703) (not x6702))
+(or x6704 (not x6703))
+(or x6704 (not x6701))
+(or x6703 x6701 (not x6704))
+(or (not x6704) (not x6642) x6705)
+(or (not x6705) x6704)
+(or (not x6705) x6642)
+(or (not x6666) (not x6706) (not x6642) x6707)
+(or (not x6707) x6666)
+(or (not x6707) x6706)
+(or (not x6707) x6642)
+(or (not x6669) (not x207) (not x6708) x6709)
+(or (not x6709) x6669)
+(or (not x6709) x207)
+(or (not x6709) x6708)
+(or x6710 (not x6709))
+(or x6710 (not x6707))
+(or x6709 x6707 (not x6710))
+(or (not x6710) (not x6642) x6711)
+(or (not x6711) x6710)
+(or (not x6711) x6642)
+(or (not x6674) (not x6712) (not x6642) x6713)
+(or (not x6713) x6674)
+(or (not x6713) x6712)
+(or (not x6713) x6642)
+(or (not x6677) (not x206) (not x6714) x6715)
+(or (not x6715) x6677)
+(or (not x6715) x206)
+(or (not x6715) x6714)
+(or x6716 (not x6715))
+(or x6716 (not x6713))
+(or x6715 x6713 (not x6716))
+(or (not x6716) (not x6642) x6717)
+(or (not x6717) x6716)
+(or (not x6717) x6642)
+(or (not x6666) (not x6718) (not x6642) x6719)
+(or (not x6719) x6666)
+(or (not x6719) x6718)
+(or (not x6719) x6642)
+(or (not x6669) (not x207) x6720 x6721)
+(or (not x6721) x6669)
+(or (not x6721) x207)
+(or (not x6721) (not x6720))
+(or x6722 (not x6721))
+(or x6722 (not x6719))
+(or x6721 x6719 (not x6722))
+(or (not x6722) (not x6642) x6723)
+(or (not x6723) x6722)
+(or (not x6723) x6642)
+(or (not x6674) (not x6724) (not x6642) x6725)
+(or (not x6725) x6674)
+(or (not x6725) x6724)
+(or (not x6725) x6642)
+(or (not x6677) (not x206) x6726 x6727)
+(or (not x6727) x6677)
+(or (not x6727) x206)
+(or (not x6727) (not x6726))
+(or x6728 (not x6727))
+(or x6728 (not x6725))
+(or x6727 x6725 (not x6728))
+(or (not x6728) (not x6642) x6729)
+(or (not x6729) x6728)
+(or (not x6729) x6642)
+(or (not x6666) (not x6730) (not x6642) x6731)
+(or (not x6731) x6666)
+(or (not x6731) x6730)
+(or (not x6731) x6642)
+(or (not x6669) (not x207) x6732 x6733)
+(or (not x6733) x6669)
+(or (not x6733) x207)
+(or (not x6733) (not x6732))
+(or x6734 (not x6733))
+(or x6734 (not x6731))
+(or x6733 x6731 (not x6734))
+(or (not x6734) (not x6642) x6735)
+(or (not x6735) x6734)
+(or (not x6735) x6642)
+(or (not x6674) (not x6736) (not x6642) x6737)
+(or (not x6737) x6674)
+(or (not x6737) x6736)
+(or (not x6737) x6642)
+(or (not x6677) (not x206) x6738 x6739)
+(or (not x6739) x6677)
+(or (not x6739) x206)
+(or (not x6739) (not x6738))
+(or x6740 (not x6739))
+(or x6740 (not x6737))
+(or x6739 x6737 (not x6740))
+(or (not x6740) (not x6642) x6741)
+(or (not x6741) x6740)
+(or (not x6741) x6642)
+(or (not x6742) (not x6743) (not x6642) x6744)
+(or (not x6744) x6742)
+(or (not x6744) x6743)
+(or (not x6744) x6642)
+(or (not x6745) (not x209) (not x209) x6746)
+(or (not x6746) x6745)
+(or (not x6746) x209)
+(or x6747 (not x6746))
+(or x6747 (not x6744))
+(or x6746 x6744 (not x6747))
+(or (not x6747) (not x6642) x6748)
+(or (not x6748) x6747)
+(or (not x6748) x6642)
+(or (not x6749) (not x6750) (not x6642) x6751)
+(or (not x6751) x6749)
+(or (not x6751) x6750)
+(or (not x6751) x6642)
+(or (not x6752) (not x208) (not x208) x6753)
+(or (not x6753) x6752)
+(or (not x6753) x208)
+(or x6754 (not x6753))
+(or x6754 (not x6751))
+(or x6753 x6751 (not x6754))
+(or (not x6754) (not x6642) x6755)
+(or (not x6755) x6754)
+(or (not x6755) x6642)
+(or x6749 (not x6756))
+(or x6749 x208)
+(or x6756 (not x208) (not x6749))
+(or (not x6749) (not x6757) (not x6642) (not x6758) (not x6642) x6759)
+(or (not x6759) x6749)
+(or (not x6759) x6757)
+(or (not x6759) x6642)
+(or (not x6759) x6758)
+(or (not x6759) x6642)
+(or (not x6752) (not x208) x6760)
+(or (not x6760) x6752)
+(or (not x6760) x208)
+(or x6761 (not x6760))
+(or x6761 (not x6759))
+(or x6760 x6759 (not x6761))
+(or (not x6761) (not x6642) x6762)
+(or (not x6762) x6761)
+(or (not x6762) x6642)
+(or x6763 x6764)
+(or x6763 x6642)
+(or x6763 x6765)
+(or x6763 x6642)
+(or x6763 x6757)
+(or x6763 x6642)
+(or (not x6764) (not x6642) (not x6765) (not x6642) (not x6757) (not x6642) (not x6763))
+(or (not x6763) (not x6766) x6767)
+(or (not x6767) x6763)
+(or (not x6767) x6766)
+(or x6768 x6764)
+(or x6768 x6642)
+(or x6768 x6764)
+(or x6768 x6642)
+(or x6768 (not x6767))
+(or (not x6764) (not x6642) (not x6764) (not x6642) x6767 (not x6768))
+(or (not x6769) (not x6770) x6771)
+(or (not x6771) x6769)
+(or (not x6771) x6770)
+(or x6766 (not x6772))
+(or x6766 (not x6771))
+(or x6772 x6771 (not x6766))
+(or (not x6764) (not x6642) (not x6765) (not x6642) (not x6757) (not x6642) x6773)
+(or (not x6773) x6764)
+(or (not x6773) x6642)
+(or (not x6773) x6765)
+(or (not x6773) x6642)
+(or (not x6773) x6757)
+(or (not x6773) x6642)
+(or x6774 (not x6773))
+(or x6774 (not x6772))
+(or x6774 (not x6771))
+(or x6773 x6772 x6771 (not x6774))
+(or x6775 x6772 x6774)
+(or x6775 (not x6772) (not x6774))
+(or (not x6775) x6772 (not x6774))
+(or (not x6775) (not x6772) x6774)
+(or x6776 x6775 x6768)
+(or x6776 (not x6775) (not x6768))
+(or (not x6776) x6775 (not x6768))
+(or (not x6776) (not x6775) x6768)
+(or (not x6777) (not x6778) (not x6779) (not x6780) (not x6776) x6781)
+(or (not x6781) x6777)
+(or (not x6781) x6778)
+(or (not x6781) x6779)
+(or (not x6781) x6780)
+(or (not x6781) x6776)
+(or (not x6782) (not x6764) (not x6642) x6783)
+(or (not x6783) x6782)
+(or (not x6783) x6764)
+(or (not x6783) x6642)
+(or x6784 (not x6783))
+(or x6784 (not x6781))
+(or x6783 x6781 (not x6784))
+(or (not x6784) (not x6642) x6785)
+(or (not x6785) x6784)
+(or (not x6785) x6642)
+(or x6742 (not x6786))
+(or x6742 x209)
+(or x6786 (not x209) (not x6742))
+(or (not x6742) (not x6787) (not x6642) (not x6788) (not x6642) x6789)
+(or (not x6789) x6742)
+(or (not x6789) x6787)
+(or (not x6789) x6642)
+(or (not x6789) x6788)
+(or (not x6789) x6642)
+(or (not x6745) (not x209) x6790)
+(or (not x6790) x6745)
+(or (not x6790) x209)
+(or x6791 (not x6790))
+(or x6791 (not x6789))
+(or x6790 x6789 (not x6791))
+(or (not x6791) (not x6642) x6792)
+(or (not x6792) x6791)
+(or (not x6792) x6642)
+(or x6674 (not x6793))
+(or x6674 x206)
+(or x6793 (not x206) (not x6674))
+(or (not x6674) (not x6794) (not x6642) (not x6795) (not x6642) x6796)
+(or (not x6796) x6674)
+(or (not x6796) x6794)
+(or (not x6796) x6642)
+(or (not x6796) x6795)
+(or (not x6796) x6642)
+(or (not x6677) (not x206) x6797)
+(or (not x6797) x6677)
+(or (not x6797) x206)
+(or x6798 (not x6797))
+(or x6798 (not x6796))
+(or x6797 x6796 (not x6798))
+(or (not x6798) (not x6642) x6799)
+(or (not x6799) x6798)
+(or (not x6799) x6642)
+(or x6800 x6801)
+(or x6800 x6642)
+(or x6800 x6765)
+(or x6800 x6642)
+(or x6800 x6794)
+(or x6800 x6642)
+(or (not x6801) (not x6642) (not x6765) (not x6642) (not x6794) (not x6642) (not x6800))
+(or (not x6800) (not x6802) x6803)
+(or (not x6803) x6800)
+(or (not x6803) x6802)
+(or x6804 x6801)
+(or x6804 x6642)
+(or x6804 x6801)
+(or x6804 x6642)
+(or x6804 (not x6803))
+(or (not x6801) (not x6642) (not x6801) (not x6642) x6803 (not x6804))
+(or (not x6805) (not x6806) x6807)
+(or (not x6807) x6805)
+(or (not x6807) x6806)
+(or x6802 (not x6808))
+(or x6802 (not x6807))
+(or x6808 x6807 (not x6802))
+(or (not x6801) (not x6642) (not x6765) (not x6642) (not x6794) (not x6642) x6809)
+(or (not x6809) x6801)
+(or (not x6809) x6642)
+(or (not x6809) x6765)
+(or (not x6809) x6642)
+(or (not x6809) x6794)
+(or (not x6809) x6642)
+(or x6810 (not x6809))
+(or x6810 (not x6808))
+(or x6810 (not x6807))
+(or x6809 x6808 x6807 (not x6810))
+(or x6811 x6808 x6810)
+(or x6811 (not x6808) (not x6810))
+(or (not x6811) x6808 (not x6810))
+(or (not x6811) (not x6808) x6810)
+(or x6812 x6811 x6804)
+(or x6812 (not x6811) (not x6804))
+(or (not x6812) x6811 (not x6804))
+(or (not x6812) (not x6811) x6804)
+(or (not x6777) (not x6813) (not x6642) x6814 (not x6642) (not x6780) (not x6815) (not x6779) (not x6780) (not x6812) x6816)
+(or (not x6816) x6777)
+(or (not x6816) x6813)
+(or (not x6816) x6642)
+(or (not x6816) (not x6814))
+(or (not x6816) x6642)
+(or (not x6816) x6780)
+(or (not x6816) x6815)
+(or (not x6816) x6779)
+(or (not x6816) x6780)
+(or (not x6816) x6812)
+(or (not x6817) (not x6801) (not x6642) x6818)
+(or (not x6818) x6817)
+(or (not x6818) x6801)
+(or (not x6818) x6642)
+(or x6819 (not x6818))
+(or x6819 (not x6816))
+(or x6818 x6816 (not x6819))
+(or (not x6819) (not x6642) x6820)
+(or (not x6820) x6819)
+(or (not x6820) x6642)
+(or x6666 (not x6821))
+(or x6666 x207)
+(or x6821 (not x207) (not x6666))
+(or (not x6666) (not x6822) (not x6642) (not x6823) (not x6642) x6824)
+(or (not x6824) x6666)
+(or (not x6824) x6822)
+(or (not x6824) x6642)
+(or (not x6824) x6823)
+(or (not x6824) x6642)
+(or (not x6669) (not x207) x6825)
+(or (not x6825) x6669)
+(or (not x6825) x207)
+(or x6826 (not x6825))
+(or x6826 (not x6824))
+(or x6825 x6824 (not x6826))
+(or (not x6826) (not x6642) x6827)
+(or (not x6827) x6826)
+(or (not x6827) x6642)
+(or x6770 (not x6828))
+(or x6770 x6757)
+(or x6770 x6642)
+(or x6828 (not x6757) (not x6642) (not x6770))
+(or x6829 x6830)
+(or x6829 x6642)
+(or x6829 (not x6828))
+(or x6829 x6757)
+(or x6829 x6642)
+(or (not x6830) (not x6642) x6828 (not x6757) (not x6642) (not x6829))
+(or x6831 (not x6832))
+(or x6831 x6787)
+(or x6831 x6642)
+(or x6832 (not x6787) (not x6642) (not x6831))
+(or (not x6831) (not x6829) x6833)
+(or (not x6833) x6831)
+(or (not x6833) x6829)
+(or x6834 x6832 x6833)
+(or x6834 (not x6832) (not x6833))
+(or (not x6834) x6832 (not x6833))
+(or (not x6834) (not x6832) x6833)
+(or (not x6835) (not x6834) x6836)
+(or (not x6836) x6835)
+(or (not x6836) x6834)
+(or (not x6837) (not x6838) (not x6830) (not x6642) x6839)
+(or (not x6839) x6837)
+(or (not x6839) x6838)
+(or (not x6839) x6830)
+(or (not x6839) x6642)
+(or x6840 (not x6839))
+(or x6840 (not x6836))
+(or x6839 x6836 (not x6840))
+(or (not x6840) (not x6642) x6841)
+(or (not x6841) x6840)
+(or (not x6841) x6642)
+(or (not x6648) (not x6642) x6842)
+(or (not x6842) x6648)
+(or (not x6842) x6642)
+(or (not x6654) (not x6642) x6843)
+(or (not x6843) x6654)
+(or (not x6843) x6642)
+(or (not x6660) (not x6642) x6844)
+(or (not x6844) x6660)
+(or (not x6844) x6642)
+(or x6845 (not x6846))
+(or x6845 x6642)
+(or x6845 (not x6847))
+(or x6845 x6848)
+(or x6845 x6849)
+(or x6845 x6850)
+(or x6845 (not x6851))
+(or x6845 x6852)
+(or x6845 (not x6853))
+(or x6845 x6854)
+(or x6845 x6855)
+(or x6845 x6856)
+(or x6845 (not x6857))
+(or x6845 x6858)
+(or x6845 x6859)
+(or x6845 x6860)
+(or x6845 (not x6844))
+(or x6845 (not x6843))
+(or x6845 (not x6842))
+(or x6846 (not x6642) x6847 (not x6848) (not x6849) (not x6850) x6851 (not x6852) x6853 (not x6854) (not x6855) (not x6856) x6857 (not x6858) (not x6859) (not x6860) x6844 x6843 x6842 (not x6845))
+(or (not x6845) (not x6765) (not x6642) x6861)
+(or (not x6861) x6845)
+(or (not x6861) x6765)
+(or (not x6861) x6642)
+(or x6862 x6648)
+(or x6862 x6642)
+(or (not x6648) (not x6642) (not x6862))
+(or x6863 x6654)
+(or x6863 x6642)
+(or (not x6654) (not x6642) (not x6863))
+(or x6864 x6660)
+(or x6864 x6642)
+(or (not x6660) (not x6642) (not x6864))
+(or x6846 (not x6642) (not x6865) (not x6848) (not x6849) (not x6850) x6851 (not x6852) x6853 (not x6854) (not x6855) (not x6856) x6857 (not x6858) (not x6859) (not x6860) (not x6864) (not x6863) (not x6862) x6866 x6867)
+(or (not x6867) (not x6846))
+(or (not x6867) x6642)
+(or (not x6867) x6865)
+(or (not x6867) x6848)
+(or (not x6867) x6849)
+(or (not x6867) x6850)
+(or (not x6867) (not x6851))
+(or (not x6867) x6852)
+(or (not x6867) (not x6853))
+(or (not x6867) x6854)
+(or (not x6867) x6855)
+(or (not x6867) x6856)
+(or (not x6867) (not x6857))
+(or (not x6867) x6858)
+(or (not x6867) x6859)
+(or (not x6867) x6860)
+(or (not x6867) x6864)
+(or (not x6867) x6863)
+(or (not x6867) x6862)
+(or (not x6867) (not x6866))
+(or x6868 (not x6867))
+(or x6868 (not x6861))
+(or x6867 x6861 (not x6868))
+(or (not x6868) (not x6642) x6869)
+(or (not x6869) x6868)
+(or (not x6869) x6642)
+(or x6806 (not x6828))
+(or x6806 x6794)
+(or x6806 x6642)
+(or x6828 (not x6794) (not x6642) (not x6806))
+(or x6870 x6871)
+(or x6870 x6642)
+(or x6870 (not x6828))
+(or x6870 x6794)
+(or x6870 x6642)
+(or (not x6871) (not x6642) x6828 (not x6794) (not x6642) (not x6870))
+(or x6872 (not x6873))
+(or x6872 x6822)
+(or x6872 x6642)
+(or x6873 (not x6822) (not x6642) (not x6872))
+(or (not x6872) (not x6870) x6874)
+(or (not x6874) x6872)
+(or (not x6874) x6870)
+(or x6875 x6873 x6874)
+(or x6875 (not x6873) (not x6874))
+(or (not x6875) x6873 (not x6874))
+(or (not x6875) (not x6873) x6874)
+(or (not x6876) (not x6875) x6877)
+(or (not x6877) x6876)
+(or (not x6877) x6875)
+(or (not x6878) (not x6879) (not x6871) (not x6642) x6880)
+(or (not x6880) x6878)
+(or (not x6880) x6879)
+(or (not x6880) x6871)
+(or (not x6880) x6642)
+(or x6881 (not x6880))
+(or x6881 (not x6877))
+(or x6880 x6877 (not x6881))
+(or (not x6881) (not x6642) x6882)
+(or (not x6882) x6881)
+(or (not x6882) x6642)
+(or (not x6883) (not x6884) (not x6642) x6885)
+(or (not x6885) x6883)
+(or (not x6885) x6884)
+(or (not x6885) x6642)
+(or (not x6805) (not x6823) (not x6642) (not x6667) (not x6642) x6886)
+(or (not x6886) x6805)
+(or (not x6886) x6823)
+(or (not x6886) x6642)
+(or (not x6886) x6667)
+(or (not x6886) x6642)
+(or x6887 (not x6886))
+(or x6887 (not x6885))
+(or x6886 x6885 (not x6887))
+(or (not x6887) (not x6642) x6888)
+(or (not x6888) x6887)
+(or (not x6888) x6642)
+(or (not x6889) (not x6890) (not x6642) x6891)
+(or (not x6891) x6889)
+(or (not x6891) x6890)
+(or (not x6891) x6642)
+(or (not x6892) (not x6795) (not x6642) (not x6675) (not x6642) x6893)
+(or (not x6893) x6892)
+(or (not x6893) x6795)
+(or (not x6893) x6642)
+(or (not x6893) x6675)
+(or (not x6893) x6642)
+(or x6894 (not x6893))
+(or x6894 (not x6891))
+(or x6893 x6891 (not x6894))
+(or (not x6894) (not x6642) x6895)
+(or (not x6895) x6894)
+(or (not x6895) x6642)
+(or (not x6883) (not x6896) (not x6642) x6897)
+(or (not x6897) x6883)
+(or (not x6897) x6896)
+(or (not x6897) x6642)
+(or (not x6805) (not x6823) (not x6642) (not x6682) (not x6642) x6898)
+(or (not x6898) x6805)
+(or (not x6898) x6823)
+(or (not x6898) x6642)
+(or (not x6898) x6682)
+(or (not x6898) x6642)
+(or x6899 (not x6898))
+(or x6899 (not x6897))
+(or x6898 x6897 (not x6899))
+(or (not x6899) (not x6642) x6900)
+(or (not x6900) x6899)
+(or (not x6900) x6642)
+(or (not x6889) (not x6901) (not x6642) x6902)
+(or (not x6902) x6889)
+(or (not x6902) x6901)
+(or (not x6902) x6642)
+(or (not x6892) (not x6795) (not x6642) (not x6688) (not x6642) x6903)
+(or (not x6903) x6892)
+(or (not x6903) x6795)
+(or (not x6903) x6642)
+(or (not x6903) x6688)
+(or (not x6903) x6642)
+(or x6904 (not x6903))
+(or x6904 (not x6902))
+(or x6903 x6902 (not x6904))
+(or (not x6904) (not x6642) x6905)
+(or (not x6905) x6904)
+(or (not x6905) x6642)
+(or (not x6883) (not x6906) (not x6642) x6907)
+(or (not x6907) x6883)
+(or (not x6907) x6906)
+(or (not x6907) x6642)
+(or (not x6805) (not x6823) (not x6642) (not x6694) (not x6642) x6908)
+(or (not x6908) x6805)
+(or (not x6908) x6823)
+(or (not x6908) x6642)
+(or (not x6908) x6694)
+(or (not x6908) x6642)
+(or x6909 (not x6908))
+(or x6909 (not x6907))
+(or x6908 x6907 (not x6909))
+(or (not x6909) (not x6642) x6910)
+(or (not x6910) x6909)
+(or (not x6910) x6642)
+(or (not x6889) (not x6911) (not x6642) x6912)
+(or (not x6912) x6889)
+(or (not x6912) x6911)
+(or (not x6912) x6642)
+(or (not x6892) (not x6795) (not x6642) (not x6700) (not x6642) x6913)
+(or (not x6913) x6892)
+(or (not x6913) x6795)
+(or (not x6913) x6642)
+(or (not x6913) x6700)
+(or (not x6913) x6642)
+(or x6914 (not x6913))
+(or x6914 (not x6912))
+(or x6913 x6912 (not x6914))
+(or (not x6914) (not x6642) x6915)
+(or (not x6915) x6914)
+(or (not x6915) x6642)
+(or (not x6883) (not x6916) (not x6642) x6917)
+(or (not x6917) x6883)
+(or (not x6917) x6916)
+(or (not x6917) x6642)
+(or (not x6805) (not x6823) (not x6642) (not x6706) (not x6642) x6918)
+(or (not x6918) x6805)
+(or (not x6918) x6823)
+(or (not x6918) x6642)
+(or (not x6918) x6706)
+(or (not x6918) x6642)
+(or x6919 (not x6918))
+(or x6919 (not x6917))
+(or x6918 x6917 (not x6919))
+(or (not x6919) (not x6642) x6920)
+(or (not x6920) x6919)
+(or (not x6920) x6642)
+(or (not x6889) (not x6921) (not x6642) x6922)
+(or (not x6922) x6889)
+(or (not x6922) x6921)
+(or (not x6922) x6642)
+(or (not x6892) (not x6795) (not x6642) (not x6712) (not x6642) x6923)
+(or (not x6923) x6892)
+(or (not x6923) x6795)
+(or (not x6923) x6642)
+(or (not x6923) x6712)
+(or (not x6923) x6642)
+(or x6924 (not x6923))
+(or x6924 (not x6922))
+(or x6923 x6922 (not x6924))
+(or (not x6924) (not x6642) x6925)
+(or (not x6925) x6924)
+(or (not x6925) x6642)
+(or (not x6883) (not x6926) (not x6642) x6927)
+(or (not x6927) x6883)
+(or (not x6927) x6926)
+(or (not x6927) x6642)
+(or (not x6805) (not x6823) (not x6642) (not x6718) (not x6642) x6928)
+(or (not x6928) x6805)
+(or (not x6928) x6823)
+(or (not x6928) x6642)
+(or (not x6928) x6718)
+(or (not x6928) x6642)
+(or x6929 (not x6928))
+(or x6929 (not x6927))
+(or x6928 x6927 (not x6929))
+(or (not x6929) (not x6642) x6930)
+(or (not x6930) x6929)
+(or (not x6930) x6642)
+(or (not x6889) (not x6931) (not x6642) x6932)
+(or (not x6932) x6889)
+(or (not x6932) x6931)
+(or (not x6932) x6642)
+(or (not x6892) (not x6795) (not x6642) (not x6724) (not x6642) x6933)
+(or (not x6933) x6892)
+(or (not x6933) x6795)
+(or (not x6933) x6642)
+(or (not x6933) x6724)
+(or (not x6933) x6642)
+(or x6934 (not x6933))
+(or x6934 (not x6932))
+(or x6933 x6932 (not x6934))
+(or (not x6934) (not x6642) x6935)
+(or (not x6935) x6934)
+(or (not x6935) x6642)
+(or (not x6883) (not x6936) (not x6642) x6937)
+(or (not x6937) x6883)
+(or (not x6937) x6936)
+(or (not x6937) x6642)
+(or (not x6805) (not x6823) (not x6642) (not x6730) (not x6642) x6938)
+(or (not x6938) x6805)
+(or (not x6938) x6823)
+(or (not x6938) x6642)
+(or (not x6938) x6730)
+(or (not x6938) x6642)
+(or x6939 (not x6938))
+(or x6939 (not x6937))
+(or x6938 x6937 (not x6939))
+(or (not x6939) (not x6642) x6940)
+(or (not x6940) x6939)
+(or (not x6940) x6642)
+(or (not x6889) (not x6941) (not x6642) x6942)
+(or (not x6942) x6889)
+(or (not x6942) x6941)
+(or (not x6942) x6642)
+(or (not x6892) (not x6795) (not x6642) (not x6736) (not x6642) x6943)
+(or (not x6943) x6892)
+(or (not x6943) x6795)
+(or (not x6943) x6642)
+(or (not x6943) x6736)
+(or (not x6943) x6642)
+(or x6944 (not x6943))
+(or x6944 (not x6942))
+(or x6943 x6942 (not x6944))
+(or (not x6944) (not x6642) x6945)
+(or (not x6945) x6944)
+(or (not x6945) x6642)
+(or (not x6946) (not x6947) (not x6642) x6948)
+(or (not x6948) x6946)
+(or (not x6948) x6947)
+(or (not x6948) x6642)
+(or (not x6769) (not x6788) (not x6642) (not x6743) (not x6642) x6949)
+(or (not x6949) x6769)
+(or (not x6949) x6788)
+(or (not x6949) x6642)
+(or (not x6949) x6743)
+(or (not x6949) x6642)
+(or x6950 (not x6949))
+(or x6950 (not x6948))
+(or x6949 x6948 (not x6950))
+(or (not x6950) (not x6642) x6951)
+(or (not x6951) x6950)
+(or (not x6951) x6642)
+(or (not x6952) (not x6953) (not x6642) x6954)
+(or (not x6954) x6952)
+(or (not x6954) x6953)
+(or (not x6954) x6642)
+(or (not x6955) (not x6758) (not x6642) (not x6750) (not x6642) x6956)
+(or (not x6956) x6955)
+(or (not x6956) x6758)
+(or (not x6956) x6642)
+(or (not x6956) x6750)
+(or (not x6956) x6642)
+(or x6957 (not x6956))
+(or x6957 (not x6954))
+(or x6956 x6954 (not x6957))
+(or (not x6957) (not x6642) x6958)
+(or (not x6958) x6957)
+(or (not x6958) x6642)
+(or x6959 (not x6960))
+(or x6959 x6642)
+(or x6960 (not x6642) (not x6959))
+(or x6961 (not x6647))
+(or x6961 (not x6962))
+(or x6647 x6962 (not x6961))
+(or (not x6961) (not x6963) x6964)
+(or (not x6964) x6961)
+(or (not x6964) x6963)
+(or x6647 (not x6965) x6966 x6967)
+(or (not x6967) (not x6647))
+(or (not x6967) x6965)
+(or (not x6967) (not x6966))
+(or x6968 (not x6967))
+(or x6968 (not x6964))
+(or x6968 x6642)
+(or x6967 x6964 (not x6642) (not x6968))
+(or (not x6969) (not x6642) (not x6970) (not x6971) (not x6972) (not x6973) (not x6865) (not x6974) (not x6975) (not x6642) x6976)
+(or (not x6976) x6969)
+(or (not x6976) x6642)
+(or (not x6976) x6970)
+(or (not x6976) x6971)
+(or (not x6976) x6972)
+(or (not x6976) x6973)
+(or (not x6976) x6865)
+(or (not x6976) x6974)
+(or (not x6976) x6975)
+(or (not x6976) x6642)
+(or (not x6977) (not x6975) (not x6642) (not x6971) (not x6978) x6846 (not x6642) (not x6975) (not x6642) x6979)
+(or (not x6979) x6977)
+(or (not x6979) x6975)
+(or (not x6979) x6642)
+(or (not x6979) x6971)
+(or (not x6979) x6978)
+(or (not x6979) (not x6846))
+(or (not x6979) x6642)
+(or (not x6979) x6975)
+(or (not x6979) x6642)
+(or (not x6965) x6647 x6980)
+(or (not x6980) x6965)
+(or (not x6980) (not x6647))
+(or x6981 (not x6980))
+(or x6981 (not x6982))
+(or x6980 x6982 (not x6981))
+(or (not x6977) (not x6970) (not x6981) x6983)
+(or (not x6983) x6977)
+(or (not x6983) x6970)
+(or (not x6983) x6981)
+(or (not x6971) (not x6972) (not x6984) (not x6975) (not x6642) x6985)
+(or (not x6985) x6971)
+(or (not x6985) x6972)
+(or (not x6985) x6984)
+(or (not x6985) x6975)
+(or (not x6985) x6642)
+(or x6986 (not x6985))
+(or x6986 (not x6983))
+(or x6986 (not x6979))
+(or x6986 (not x6976))
+(or x6985 x6983 x6979 x6976 (not x6986))
+(or (not x6986) (not x6642) x6987)
+(or (not x6987) x6986)
+(or (not x6987) x6642)
+(or x6988 (not x6989))
+(or x6988 (not x6990))
+(or x6989 x6990 (not x6988))
+(or x6991 (not x6857))
+(or x6991 x6992)
+(or x6857 (not x6992) (not x6991))
+(or x6993 x6857)
+(or x6993 x6994)
+(or (not x6857) (not x6994) (not x6993))
+(or (not x6993) (not x6991) x6995)
+(or (not x6995) x6993)
+(or (not x6995) x6991)
+(or x6996 x6997)
+(or x6996 (not x6998))
+(or x6996 (not x6859))
+(or x6996 x6858)
+(or x6996 (not x6989))
+(or x6996 (not x6995))
+(or (not x6997) x6998 x6859 (not x6858) x6989 x6995 (not x6996))
+(or x6999 x6997)
+(or x6999 (not x6998))
+(or x6999 (not x6859))
+(or x6999 (not x6858))
+(or x6999 x7000)
+(or (not x6997) x6998 x6859 x6858 (not x7000) (not x6999))
+(or (not x6999) (not x6996) (not x6988) x7001)
+(or (not x7001) x6999)
+(or (not x7001) x6996)
+(or (not x7001) x6988)
+(or x6973 (not x6847))
+(or x6973 (not x7002))
+(or x6973 (not x7001))
+(or x6847 x7002 x7001 (not x6973))
+(or (not x6969) (not x6642) (not x6970) (not x6971) (not x6972) (not x6973) (not x6865) (not x6974) (not x6969) (not x6642) x7003)
+(or (not x7003) x6969)
+(or (not x7003) x6642)
+(or (not x7003) x6970)
+(or (not x7003) x6971)
+(or (not x7003) x6972)
+(or (not x7003) x6973)
+(or (not x7003) x6865)
+(or (not x7003) x6974)
+(or (not x7003) x6969)
+(or (not x7003) x6642)
+(or (not x6978) x6846 (not x6642) (not x6969) (not x6642) x7004)
+(or (not x7004) x6978)
+(or (not x7004) (not x6846))
+(or (not x7004) x6642)
+(or (not x7004) x6969)
+(or (not x7004) x6642)
+(or (not x7005) (not x6963) x7006)
+(or (not x7006) x7005)
+(or (not x7006) x6963)
+(or x7007 (not x7006))
+(or x7007 (not x7004))
+(or x7006 x7004 (not x7007))
+(or (not x6977) (not x6975) (not x6642) (not x6971) (not x7007) x7008)
+(or (not x7008) x6977)
+(or (not x7008) x6975)
+(or (not x7008) x6642)
+(or (not x7008) x6971)
+(or (not x7008) x7007)
+(or (not x6977) (not x6970) (not x7009) (not x6969) (not x6642) x7010)
+(or (not x7010) x6977)
+(or (not x7010) x6970)
+(or (not x7010) x7009)
+(or (not x7010) x6969)
+(or (not x7010) x6642)
+(or (not x6971) (not x6972) (not x6984) (not x6969) (not x6642) x7011)
+(or (not x7011) x6971)
+(or (not x7011) x6972)
+(or (not x7011) x6984)
+(or (not x7011) x6969)
+(or (not x7011) x6642)
+(or x7012 (not x7011))
+(or x7012 (not x7010))
+(or x7012 (not x7008))
+(or x7012 (not x7003))
+(or x7011 x7010 x7008 x7003 (not x7012))
+(or (not x7012) (not x6642) x7013)
+(or (not x7013) x7012)
+(or (not x7013) x6642)
+(or x6752 x6758)
+(or x6752 x6642)
+(or (not x6758) (not x6642) (not x6752))
+(or x6952 (not x7014))
+(or x6952 x6758)
+(or x6952 x6642)
+(or x7014 (not x6758) (not x6642) (not x6952))
+(or (not x6952) (not x7015) (not x7016) (not x6757) (not x6642) x7017)
+(or (not x7017) x6952)
+(or (not x7017) x7015)
+(or (not x7017) x7016)
+(or (not x7017) x6757)
+(or (not x7017) x6642)
+(or (not x6758) (not x6642) x6756)
+(or (not x6756) x6758)
+(or (not x6756) x6642)
+(or (not x6955) (not x6758) (not x6642) (not x6758) (not x6642) x7018)
+(or (not x7018) x6955)
+(or (not x7018) x6758)
+(or (not x7018) x6642)
+(or (not x7018) x6758)
+(or (not x7018) x6642)
+(or x7019 (not x7018))
+(or x7019 (not x7017))
+(or x7018 x7017 (not x7019))
+(or (not x7019) (not x6642) x7020)
+(or (not x7020) x7019)
+(or (not x7020) x6642)
+(or x6745 x6788)
+(or x6745 x6642)
+(or (not x6788) (not x6642) (not x6745))
+(or x6946 (not x7021))
+(or x6946 x6788)
+(or x6946 x6642)
+(or x7021 (not x6788) (not x6642) (not x6946))
+(or (not x6946) (not x7022) (not x6787) (not x6642) x7023)
+(or (not x7023) x6946)
+(or (not x7023) x7022)
+(or (not x7023) x6787)
+(or (not x7023) x6642)
+(or (not x6788) (not x6642) x6786)
+(or (not x6786) x6788)
+(or (not x6786) x6642)
+(or (not x6769) (not x6788) (not x6642) (not x6788) (not x6642) x7024)
+(or (not x7024) x6769)
+(or (not x7024) x6788)
+(or (not x7024) x6642)
+(or (not x7024) x6788)
+(or (not x7024) x6642)
+(or x7025 (not x7024))
+(or x7025 (not x7023))
+(or x7024 x7023 (not x7025))
+(or (not x7025) (not x6642) x7026)
+(or (not x7026) x7025)
+(or (not x7026) x6642)
+(or x6677 x6795)
+(or x6677 x6642)
+(or (not x6795) (not x6642) (not x6677))
+(or x6889 (not x7027))
+(or x6889 x6795)
+(or x6889 x6642)
+(or x7027 (not x6795) (not x6642) (not x6889))
+(or (not x6889) (not x7028) (not x7029) (not x6794) (not x6642) x7030)
+(or (not x7030) x6889)
+(or (not x7030) x7028)
+(or (not x7030) x7029)
+(or (not x7030) x6794)
+(or (not x7030) x6642)
+(or (not x6795) (not x6642) x6793)
+(or (not x6793) x6795)
+(or (not x6793) x6642)
+(or (not x6892) (not x6795) (not x6642) (not x6795) (not x6642) x7031)
+(or (not x7031) x6892)
+(or (not x7031) x6795)
+(or (not x7031) x6642)
+(or (not x7031) x6795)
+(or (not x7031) x6642)
+(or x7032 (not x7031))
+(or x7032 (not x7030))
+(or x7031 x7030 (not x7032))
+(or (not x7032) (not x6642) x7033)
+(or (not x7033) x7032)
+(or (not x7033) x6642)
+(or x6669 x6823)
+(or x6669 x6642)
+(or (not x6823) (not x6642) (not x6669))
+(or x6883 (not x7034))
+(or x6883 x6823)
+(or x6883 x6642)
+(or x7034 (not x6823) (not x6642) (not x6883))
+(or (not x6883) (not x7035) (not x6822) (not x6642) x7036)
+(or (not x7036) x6883)
+(or (not x7036) x7035)
+(or (not x7036) x6822)
+(or (not x7036) x6642)
+(or (not x6823) (not x6642) x6821)
+(or (not x6821) x6823)
+(or (not x6821) x6642)
+(or (not x6805) (not x6823) (not x6642) (not x6823) (not x6642) x7037)
+(or (not x7037) x6805)
+(or (not x7037) x6823)
+(or (not x7037) x6642)
+(or (not x7037) x6823)
+(or (not x7037) x6642)
+(or x7038 (not x7037))
+(or x7038 (not x7036))
+(or x7037 x7036 (not x7038))
+(or (not x7038) (not x6642) x7039)
+(or (not x7039) x7038)
+(or (not x7039) x6642)
+(or x211 (not x7040) (not x6642) (not x7041) (not x6642) x7042)
+(or (not x7042) (not x211))
+(or (not x7042) x7040)
+(or (not x7042) x6642)
+(or (not x7042) x7041)
+(or (not x7042) x6642)
+(or x7043 (not x7044))
+(or x7043 (not x7045))
+(or x7043 (not x7046))
+(or x7044 x7045 x7046 (not x7043))
+(or (not x211) (not x7043) x7047)
+(or (not x7047) x211)
+(or (not x7047) x7043)
+(or x7048 (not x7047))
+(or x7048 (not x7042))
+(or x7047 x7042 (not x7048))
+(or (not x7048) (not x6642) x7049)
+(or (not x7049) x7048)
+(or (not x7049) x6642)
+(or x210 (not x7050) (not x6642) (not x7051) (not x6642) x7052)
+(or (not x7052) (not x210))
+(or (not x7052) x7050)
+(or (not x7052) x6642)
+(or (not x7052) x7051)
+(or (not x7052) x6642)
+(or x7053 (not x7054))
+(or x7053 (not x7055))
+(or x7053 (not x7056))
+(or x7054 x7055 x7056 (not x7053))
+(or (not x210) (not x7053) x7057)
+(or (not x7057) x210)
+(or (not x7057) x7053)
+(or x7058 (not x7057))
+(or x7058 (not x7052))
+(or x7057 x7052 (not x7058))
+(or (not x7058) (not x6642) x7059)
+(or (not x7059) x7058)
+(or (not x7059) x6642)
+(or (not x7060) (not x7061) (not x7062) x7063)
+(or (not x7063) x7060)
+(or (not x7063) x7061)
+(or (not x7063) x7062)
+(or (not x7064) (not x7060) (not x7065) (not x7066) (not x7040) (not x6642) x7067)
+(or (not x7067) x7064)
+(or (not x7067) x7060)
+(or (not x7067) x7065)
+(or (not x7067) x7066)
+(or (not x7067) x7040)
+(or (not x7067) x6642)
+(or x7068 (not x7067))
+(or x7068 (not x7063))
+(or x7067 x7063 (not x7068))
+(or (not x6813) (not x6642) (not x7062) (not x6780) (not x6815) (not x7069) (not x7068) x7070)
+(or (not x7070) x6813)
+(or (not x7070) x6642)
+(or (not x7070) x7062)
+(or (not x7070) x6780)
+(or (not x7070) x6815)
+(or (not x7070) x7069)
+(or (not x7070) x7068)
+(or (not x7071) (not x7072) (not x7062) x7073)
+(or (not x7073) x7071)
+(or (not x7073) x7072)
+(or (not x7073) x7062)
+(or (not x7071) (not x7074) (not x7075) (not x7076) (not x7040) (not x6642) x7077)
+(or (not x7077) x7071)
+(or (not x7077) x7074)
+(or (not x7077) x7075)
+(or (not x7077) x7076)
+(or (not x7077) x7040)
+(or (not x7077) x6642)
+(or x7078 (not x7079))
+(or x7078 (not x7077))
+(or x7079 x7077 (not x7078))
+(or (not x7080) (not x7078) x7081)
+(or (not x7081) x7080)
+(or (not x7081) x7078)
+(or x7082 (not x7081))
+(or x7082 (not x7073))
+(or x7081 x7073 (not x7082))
+(or (not x6813) (not x6642) x6814 (not x6642) (not x6780) (not x6815) (not x7082) x7083)
+(or (not x7083) x6813)
+(or (not x7083) x6642)
+(or (not x7083) (not x6814))
+(or (not x7083) x6642)
+(or (not x7083) x6780)
+(or (not x7083) x6815)
+(or (not x7083) x7082)
+(or (not x6805) (not x6892) (not x7084) (not x7062) x7085)
+(or (not x7085) x6805)
+(or (not x7085) x6892)
+(or (not x7085) x7084)
+(or (not x7085) x7062)
+(or (not x7086) (not x6805) (not x6892) (not x7087) (not x7088) x7089)
+(or (not x7089) x7086)
+(or (not x7089) x6805)
+(or (not x7089) x6892)
+(or (not x7089) x7087)
+(or (not x7089) x7088)
+(or x7090 (not x7089))
+(or x7090 (not x7085))
+(or x7089 x7085 (not x7090))
+(or (not x7091) (not x7062) (not x6780) (not x7090) x7092)
+(or (not x7092) x7091)
+(or (not x7092) x7062)
+(or (not x7092) x6780)
+(or (not x7092) x7090)
+(or (not x7093) (not x7094) (not x7062) x7095)
+(or (not x7095) x7093)
+(or (not x7095) x7094)
+(or (not x7095) x7062)
+(or (not x7093) (not x7096) (not x6805) (not x6892) (not x7088) x7097)
+(or (not x7097) x7093)
+(or (not x7097) x7096)
+(or (not x7097) x6805)
+(or (not x7097) x6892)
+(or (not x7097) x7088)
+(or x7098 (not x7099))
+(or x7098 (not x7097))
+(or x7099 x7097 (not x7098))
+(or (not x7100) (not x7098) x7101)
+(or (not x7101) x7100)
+(or (not x7101) x7098)
+(or x7102 (not x7101))
+(or x7102 (not x7095))
+(or x7101 x7095 (not x7102))
+(or (not x7091) x6814 (not x6642) (not x7102) x7103)
+(or (not x7103) x7091)
+(or (not x7103) (not x6814))
+(or (not x7103) x6642)
+(or (not x7103) x7102)
+(or x7104 (not x7103))
+(or x7104 (not x7092))
+(or x7104 (not x7083))
+(or x7104 (not x7070))
+(or x7104 x6642)
+(or x7103 x7092 x7083 x7070 (not x6642) (not x7104))
+(or x7105 (not x7106))
+(or x7105 (not x7107))
+(or x7105 (not x7108))
+(or x7106 x7107 x7108 (not x7105))
+(or (not x7109) (not x7105) x7110)
+(or (not x7110) x7109)
+(or (not x7110) x7105)
+(or x7061 (not x7111))
+(or x7061 (not x7110))
+(or x7111 x7110 (not x7061))
+(or (not x7060) (not x7061) (not x6813) (not x6642) x7112)
+(or (not x7112) x7060)
+(or (not x7112) x7061)
+(or (not x7112) x6813)
+(or (not x7112) x6642)
+(or x7109 (not x7107))
+(or x7109 x7040)
+(or x7109 x6642)
+(or x7107 (not x7040) (not x6642) (not x7109))
+(or (not x7109) (not x7066) (not x7113) x7114)
+(or (not x7114) x7109)
+(or (not x7114) x7066)
+(or (not x7114) x7113)
+(or (not x7066) (not x7040) (not x6642) x7106)
+(or (not x7106) x7066)
+(or (not x7106) x7040)
+(or (not x7106) x6642)
+(or x7065 (not x7106))
+(or x7065 (not x7114))
+(or x7106 x7114 (not x7065))
+(or x7016 (not x6828))
+(or x7016 (not x7115))
+(or x7016 (not x6832))
+(or x6828 x7115 x6832 (not x7016))
+(or x7015 x6765)
+(or x7015 x6642)
+(or x7015 (not x7116))
+(or x7015 (not x7117))
+(or x7015 (not x7118))
+(or x7015 (not x7119))
+(or x7015 (not x6772))
+(or (not x6765) (not x6642) x7116 x7117 x7118 x7119 x6772 (not x7015))
+(or (not x7015) (not x7016) x7120)
+(or (not x7120) x7015)
+(or (not x7120) x7016)
+(or x7121 (not x7120))
+(or x7121 x6757)
+(or x7121 x6642)
+(or x7120 (not x6757) (not x6642) (not x7121))
+(or x6838 (not x6828))
+(or x6838 (not x7116))
+(or x6838 (not x7117))
+(or x6838 (not x7118))
+(or x6838 (not x7119))
+(or x6828 x7116 x7117 x7118 x7119 (not x6838))
+(or x6837 x6765)
+(or x6837 x6642)
+(or x6837 (not x7116))
+(or x6837 (not x7117))
+(or x6837 (not x7118))
+(or x6837 (not x7119))
+(or x6837 x6764)
+(or x6837 x6642)
+(or (not x6765) (not x6642) x7116 x7117 x7118 x7119 (not x6764) (not x6642) (not x6837))
+(or (not x6837) (not x6838) x7115)
+(or (not x7115) x6837)
+(or (not x7115) x6838)
+(or x7022 (not x7115))
+(or x7022 x6830)
+(or x7022 x6642)
+(or x7115 (not x6830) (not x6642) (not x7022))
+(or x7122 (not x7115))
+(or x7122 x6830)
+(or x7122 x6642)
+(or x7122 x6787)
+(or x7122 x6642)
+(or x7115 (not x6830) (not x6642) (not x6787) (not x6642) (not x7122))
+(or (not x7088) (not x7122) (not x7121) x7107)
+(or (not x7107) x7088)
+(or (not x7107) x7122)
+(or (not x7107) x7121)
+(or x7060 (not x7107))
+(or x7060 x7050)
+(or x7060 x6642)
+(or x7107 (not x7050) (not x6642) (not x7060))
+(or (not x7060) (not x7065) x7123)
+(or (not x7123) x7060)
+(or (not x7123) x7065)
+(or x7066 (not x7124))
+(or x7066 (not x7125))
+(or x7066 (not x7126))
+(or x7124 x7125 x7126 (not x7066))
+(or (not x7066) (not x7050) (not x6642) x7111)
+(or (not x7111) x7066)
+(or (not x7111) x7050)
+(or (not x7111) x6642)
+(or x7064 (not x7111))
+(or x7064 (not x7123))
+(or x7111 x7123 (not x7064))
+(or (not x7064) (not x7060) (not x7065) (not x7109) (not x7066) (not x7113) x7127)
+(or (not x7127) x7064)
+(or (not x7127) x7060)
+(or (not x7127) x7065)
+(or (not x7127) x7109)
+(or (not x7127) x7066)
+(or (not x7127) x7113)
+(or x7128 (not x7127))
+(or x7128 (not x7112))
+(or x7127 x7112 (not x7128))
+(or (not x6813) (not x6642) (not x7062) (not x6780) (not x6815) (not x7069) (not x7128) x7129)
+(or (not x7129) x6813)
+(or (not x7129) x6642)
+(or (not x7129) x7062)
+(or (not x7129) x6780)
+(or (not x7129) x6815)
+(or (not x7129) x7069)
+(or (not x7129) x7128)
+(or x7130 (not x7131))
+(or x7130 (not x7132))
+(or x7130 x7040)
+(or x7130 x6642)
+(or x7131 x7132 (not x7040) (not x6642) (not x7130))
+(or (not x7075) (not x7130) x7133)
+(or (not x7133) x7075)
+(or (not x7133) x7130)
+(or x7072 (not x7079))
+(or x7072 (not x7133))
+(or x7079 x7133 (not x7072))
+(or (not x7071) (not x7072) (not x6813) (not x6642) x7134)
+(or (not x7134) x7071)
+(or (not x7134) x7072)
+(or (not x7134) x6813)
+(or (not x7134) x6642)
+(or x7075 (not x7132))
+(or x7075 x7050)
+(or x7075 x6642)
+(or x7132 (not x7050) (not x6642) (not x7075))
+(or (not x7075) (not x7076) (not x7040) (not x6642) x7135)
+(or (not x7135) x7075)
+(or (not x7135) x7076)
+(or (not x7135) x7040)
+(or (not x7135) x6642)
+(or (not x7076) (not x7050) (not x6642) x7131)
+(or (not x7131) x7076)
+(or (not x7131) x7050)
+(or (not x7131) x6642)
+(or x7074 (not x7131))
+(or x7074 (not x7135))
+(or x7131 x7135 (not x7074))
+(or x7029 (not x6828))
+(or x7029 (not x7136))
+(or x7029 (not x6873))
+(or x6828 x7136 x6873 (not x7029))
+(or x7028 x6765)
+(or x7028 x6642)
+(or x7028 (not x7116))
+(or x7028 x6813)
+(or x7028 x6642)
+(or x7028 (not x6814))
+(or x7028 x6642)
+(or x7028 (not x7119))
+(or x7028 (not x7137))
+(or x7028 (not x7118))
+(or x7028 (not x7119))
+(or x7028 (not x6808))
+(or (not x6765) (not x6642) x7116 (not x6813) (not x6642) x6814 (not x6642) x7119 x7137 x7118 x7119 x6808 (not x7028))
+(or (not x7028) (not x7029) x7138)
+(or (not x7138) x7028)
+(or (not x7138) x7029)
+(or x7139 (not x7138))
+(or x7139 x6794)
+(or x7139 x6642)
+(or x7138 (not x6794) (not x6642) (not x7139))
+(or x6879 (not x6828))
+(or x6879 (not x7116))
+(or x6879 x6813)
+(or x6879 x6642)
+(or x6879 (not x6814))
+(or x6879 x6642)
+(or x6879 (not x7119))
+(or x6879 (not x7137))
+(or x6879 (not x7118))
+(or x6879 (not x7119))
+(or x6828 x7116 (not x6813) (not x6642) x6814 (not x6642) x7119 x7137 x7118 x7119 (not x6879))
+(or x6878 x6765)
+(or x6878 x6642)
+(or x6878 (not x7116))
+(or x6878 x6813)
+(or x6878 x6642)
+(or x6878 (not x6814))
+(or x6878 x6642)
+(or x6878 (not x7119))
+(or x6878 (not x7137))
+(or x6878 (not x7118))
+(or x6878 (not x7119))
+(or x6878 x6801)
+(or x6878 x6642)
+(or (not x6765) (not x6642) x7116 (not x6813) (not x6642) x6814 (not x6642) x7119 x7137 x7118 x7119 (not x6801) (not x6642) (not x6878))
+(or (not x6878) (not x6879) x7136)
+(or (not x7136) x6878)
+(or (not x7136) x6879)
+(or x7035 (not x7136))
+(or x7035 x6871)
+(or x7035 x6642)
+(or x7136 (not x6871) (not x6642) (not x7035))
+(or x7140 (not x7136))
+(or x7140 x6871)
+(or x7140 x6642)
+(or x7140 x6822)
+(or x7140 x6642)
+(or x7136 (not x6871) (not x6642) (not x6822) (not x6642) (not x7140))
+(or (not x7113) (not x7140) (not x7139) x7132)
+(or (not x7132) x7113)
+(or (not x7132) x7140)
+(or (not x7132) x7139)
+(or x7071 (not x7132))
+(or x7071 (not x7124))
+(or x7132 x7124 (not x7071))
+(or (not x7071) (not x7074) x7141)
+(or (not x7141) x7071)
+(or (not x7141) x7074)
+(or x7076 (not x7108))
+(or x7076 (not x7142))
+(or x7076 (not x7143))
+(or x7108 x7142 x7143 (not x7076))
+(or (not x7076) (not x7088) x7079)
+(or (not x7079) x7076)
+(or (not x7079) x7088)
+(or x7080 (not x7079))
+(or x7080 (not x7141))
+(or x7079 x7141 (not x7080))
+(or (not x7080) (not x7076) (not x7088) x7144)
+(or (not x7144) x7080)
+(or (not x7144) x7076)
+(or (not x7144) x7088)
+(or x7145 (not x7144))
+(or x7145 (not x7134))
+(or x7144 x7134 (not x7145))
+(or (not x6813) (not x6642) x6814 (not x6642) (not x6780) (not x6815) (not x7145) x7146)
+(or (not x7146) x6813)
+(or (not x7146) x6642)
+(or (not x7146) (not x6814))
+(or (not x7146) x6642)
+(or (not x7146) x6780)
+(or (not x7146) x6815)
+(or (not x7146) x7145)
+(or x7147 (not x7021))
+(or x7147 (not x7014))
+(or x7147 x7050)
+(or x7147 x6642)
+(or x7021 x7014 (not x7050) (not x6642) (not x7147))
+(or (not x6769) (not x6955) (not x7147) x7148)
+(or (not x7148) x6769)
+(or (not x7148) x6955)
+(or (not x7148) x7147)
+(or x7084 (not x7034))
+(or x7084 (not x7027))
+(or x7084 (not x7148))
+(or x7034 x7027 x7148 (not x7084))
+(or (not x6805) (not x6892) (not x7084) (not x6813) (not x6642) x7149)
+(or (not x7149) x6805)
+(or (not x7149) x6892)
+(or (not x7149) x7084)
+(or (not x7149) x6813)
+(or (not x7149) x6642)
+(or (not x6805) (not x6892) (not x7087) (not x7088) x7150)
+(or (not x7150) x6805)
+(or (not x7150) x6892)
+(or (not x7150) x7087)
+(or (not x7150) x7088)
+(or x7151 (not x7034))
+(or x7151 (not x7027))
+(or x7151 (not x7150))
+(or x7034 x7027 x7150 (not x7151))
+(or (not x6769) (not x6955) (not x7050) (not x6642) x7152)
+(or (not x7152) x6769)
+(or (not x7152) x6955)
+(or (not x7152) x7050)
+(or (not x7152) x6642)
+(or x7087 (not x7021))
+(or x7087 (not x7014))
+(or x7087 (not x7152))
+(or x7021 x7014 x7152 (not x7087))
+(or (not x6805) (not x6892) (not x7087) x7153)
+(or (not x7153) x6805)
+(or (not x7153) x6892)
+(or (not x7153) x7087)
+(or x7086 (not x7034))
+(or x7086 (not x7027))
+(or x7086 (not x7153))
+(or x7034 x7027 x7153 (not x7086))
+(or (not x7086) (not x7151) x7154)
+(or (not x7154) x7086)
+(or (not x7154) x7151)
+(or x7155 (not x7154))
+(or x7155 (not x7149))
+(or x7154 x7149 (not x7155))
+(or (not x7091) (not x7062) (not x6780) (not x7155) x7156)
+(or (not x7156) x7091)
+(or (not x7156) x7062)
+(or (not x7156) x6780)
+(or (not x7156) x7155)
+(or x6955 x6757)
+(or x6955 x6642)
+(or (not x6757) (not x6642) (not x6955))
+(or x6769 x6787)
+(or x6769 x6642)
+(or (not x6787) (not x6642) (not x6769))
+(or (not x6769) (not x6955) x7124)
+(or (not x7124) x6769)
+(or (not x7124) x6955)
+(or x7157 (not x7034))
+(or x7157 (not x7027))
+(or x7157 (not x7124))
+(or x7034 x7027 x7124 (not x7157))
+(or (not x6805) (not x6892) (not x7157) x7158)
+(or (not x7158) x6805)
+(or (not x7158) x6892)
+(or (not x7158) x7157)
+(or x7094 (not x7099))
+(or x7094 (not x7158))
+(or x7099 x7158 (not x7094))
+(or (not x7093) (not x7094) (not x6813) (not x6642) x7159)
+(or (not x7159) x7093)
+(or (not x7159) x7094)
+(or (not x7159) x6813)
+(or (not x7159) x6642)
+(or x7088 (not x7021))
+(or x7088 (not x7014))
+(or x7021 x7014 (not x7088))
+(or x6892 x6794)
+(or x6892 x6642)
+(or (not x6794) (not x6642) (not x6892))
+(or x6805 x6822)
+(or x6805 x6642)
+(or (not x6822) (not x6642) (not x6805))
+(or (not x6805) (not x6892) x7108)
+(or (not x7108) x6805)
+(or (not x7108) x6892)
+(or (not x6805) (not x6892) (not x7088) x7160)
+(or (not x7160) x6805)
+(or (not x7160) x6892)
+(or (not x7160) x7088)
+(or x7113 (not x7034))
+(or x7113 (not x7027))
+(or x7034 x7027 (not x7113))
+(or x7096 (not x7034))
+(or x7096 (not x7027))
+(or x7096 (not x7160))
+(or x7034 x7027 x7160 (not x7096))
+(or x7093 x7040)
+(or x7093 x6642)
+(or (not x7040) (not x6642) (not x7093))
+(or (not x7093) (not x7096) x7161)
+(or (not x7161) x7093)
+(or (not x7161) x7096)
+(or x7100 (not x7099))
+(or x7100 (not x7161))
+(or x7099 x7161 (not x7100))
+(or (not x7100) (not x7093) (not x7096) x7162)
+(or (not x7162) x7100)
+(or (not x7162) x7093)
+(or (not x7162) x7096)
+(or x7163 (not x7162))
+(or x7163 (not x7159))
+(or x7162 x7159 (not x7163))
+(or (not x7091) x6814 (not x6642) (not x7163) x7164)
+(or (not x7164) x7091)
+(or (not x7164) (not x6814))
+(or (not x7164) x6642)
+(or (not x7164) x7163)
+(or x7165 (not x7164))
+(or x7165 (not x7156))
+(or x7165 (not x7146))
+(or x7165 (not x7129))
+(or x7164 x7156 x7146 x7129 (not x7165))
+(or (not x7165) (not x6642) x7166)
+(or (not x7166) x7165)
+(or (not x7166) x6642)
+(or x7167 x7041)
+(or x7167 x6642)
+(or (not x7041) (not x6642) (not x7167))
+(or (not x7167) (not x6779) (not x7040) (not x6642) x7168)
+(or (not x7168) x7167)
+(or (not x7168) x6779)
+(or (not x7168) x7040)
+(or (not x7168) x6642)
+(or (not x7041) (not x6642) x7169)
+(or (not x7169) x7041)
+(or (not x7169) x6642)
+(or x7170 (not x7169))
+(or x7170 (not x7168))
+(or x7169 x7168 (not x7170))
+(or (not x7170) (not x6642) x7171)
+(or (not x7171) x7170)
+(or (not x7171) x6642)
+(or (not x7172) (not x7173) x7174)
+(or (not x7174) x7172)
+(or (not x7174) x7173)
+(or x7172 (not x7175) (not x7176) x7177)
+(or (not x7177) (not x7172))
+(or (not x7177) x7175)
+(or (not x7177) x7176)
+(or x7178 (not x7177))
+(or x7178 (not x7174))
+(or x7177 x7174 (not x7178))
+(or (not x7179) (not x6642) (not x7180) (not x7181) (not x7182) (not x7178) x7183)
+(or (not x7183) x7179)
+(or (not x7183) x6642)
+(or (not x7183) x7180)
+(or (not x7183) x7181)
+(or (not x7183) x7182)
+(or (not x7183) x7178)
+(or x7176 x7184)
+(or x7176 x6642)
+(or x7176 (not x6624))
+(or x7176 (not x6598))
+(or x7176 (not x7185))
+(or x7176 (not x7186))
+(or x7176 (not x7187))
+(or x7176 (not x7188))
+(or x7176 (not x7189))
+(or (not x7184) (not x6642) x6624 x6598 x7185 x7186 x7187 x7188 x7189 (not x7176))
+(or x7175 (not x6623))
+(or x7175 x7190)
+(or x7175 x6642)
+(or x7175 (not x6598))
+(or x7175 (not x7191))
+(or x7175 x7192)
+(or x7175 x6642)
+(or x7175 (not x7193))
+(or x7175 (not x7194))
+(or x7175 (not x7186))
+(or x7175 (not x7187))
+(or x7175 (not x7188))
+(or x6623 (not x7190) (not x6642) x6598 x7191 (not x7192) (not x6642) x7193 x7194 x7186 x7187 x7188 (not x7175))
+(or x7194 (not x7175) (not x7176) x7195)
+(or (not x7195) (not x7194))
+(or (not x7195) x7175)
+(or (not x7195) x7176)
+(or x7196 (not x7195))
+(or x7196 (not x7194))
+(or x7195 x7194 (not x7196))
+(or (not x7197) (not x7192) (not x6642) (not x7181) (not x7196) x7198)
+(or (not x7198) x7197)
+(or (not x7198) x7192)
+(or (not x7198) x6642)
+(or (not x7198) x7181)
+(or (not x7198) x7196)
+(or x7199 (not x7200))
+(or x7199 (not x7193))
+(or x7199 (not x7198))
+(or x7199 (not x7183))
+(or x7200 x7193 x7198 x7183 (not x7199))
+(or (not x7201) (not x6642) (not x7199) x7202)
+(or (not x7202) x7201)
+(or (not x7202) x6642)
+(or (not x7202) x7199)
+(or x7203 (not x7202))
+(or x7203 x6642)
+(or x7202 (not x6642) (not x7203))
+(or x7204 x7051)
+(or x7204 x6642)
+(or (not x7051) (not x6642) (not x7204))
+(or (not x7204) (not x6780) (not x7050) (not x6642) x7205)
+(or (not x7205) x7204)
+(or (not x7205) x6780)
+(or (not x7205) x7050)
+(or (not x7205) x6642)
+(or (not x7051) (not x6642) x7206)
+(or (not x7206) x7051)
+(or (not x7206) x6642)
+(or x7207 (not x7206))
+(or x7207 (not x7205))
+(or x7206 x7205 (not x7207))
+(or (not x7207) (not x6642) x7208)
+(or (not x7208) x7207)
+(or (not x7208) x6642)
+(or x7209 x7179)
+(or x7209 x6642)
+(or x7209 (not x7210))
+(or x7209 (not x7193))
+(or x7209 (not x7211))
+(or x7209 (not x7212))
+(or x7209 x6642)
+(or x7209 (not x7172))
+(or (not x7179) (not x6642) x7210 x7193 x7211 x7212 (not x6642) x7172 (not x7209))
+(or x7213 (not x7191))
+(or x7213 (not x7210))
+(or x7213 (not x7214))
+(or x7191 x7210 x7214 (not x7213))
+(or x7215 (not x7191))
+(or x7215 x7192)
+(or x7215 x6642)
+(or x7215 (not x7193))
+(or x7215 x7194)
+(or x7215 (not x6647))
+(or x7191 (not x7192) (not x6642) x7193 (not x7194) x6647 (not x7215))
+(or (not x7215) (not x7213) (not x7209) x7216)
+(or (not x7216) x7215)
+(or (not x7216) x7213)
+(or (not x7216) x7209)
+(or x7217 (not x6647))
+(or x7217 (not x7216))
+(or x6647 x7216 (not x7217))
+(or (not x7201) (not x6642) (not x7217) (not x7201) (not x6642) x7218)
+(or (not x7218) x7201)
+(or (not x7218) x6642)
+(or (not x7218) x7217)
+(or (not x7218) x7201)
+(or (not x7218) x6642)
+(or (not x6848) (not x6849) (not x6850) x6851 (not x6852) x6853 (not x6854) (not x6855) (not x6856) x6857 (not x6858) (not x6859) x7002)
+(or (not x7002) x6848)
+(or (not x7002) x6849)
+(or (not x7002) x6850)
+(or (not x7002) (not x6851))
+(or (not x7002) x6852)
+(or (not x7002) (not x6853))
+(or (not x7002) x6854)
+(or (not x7002) x6855)
+(or (not x7002) x6856)
+(or (not x7002) (not x6857))
+(or (not x7002) x6858)
+(or (not x7002) x6859)
+(or x6984 x6969)
+(or x6984 x6642)
+(or x6984 (not x6982))
+(or (not x6969) (not x6642) x6982 (not x6984))
+(or x7219 x6969)
+(or x7219 x6642)
+(or x7219 (not x6982))
+(or x7219 (not x7220))
+(or x7219 (not x7221))
+(or (not x6969) (not x6642) x6982 x7220 x7221 (not x7219))
+(or x6978 (not x6846))
+(or x6978 x6642)
+(or x6978 (not x7222))
+(or x6978 x6642)
+(or x6846 (not x6642) x7222 (not x6642) (not x6978))
+(or (not x6978) x6846 (not x6642) x7223)
+(or (not x7223) x6978)
+(or (not x7223) (not x6846))
+(or (not x7223) x6642)
+(or x7224 (not x7225))
+(or x7224 x6975)
+(or x7224 x6642)
+(or x7224 (not x7220))
+(or x7224 (not x7223))
+(or x7225 (not x6975) (not x6642) x7220 x7223 (not x7224))
+(or (not x7224) (not x7219) x6847)
+(or (not x6847) x7224)
+(or (not x6847) x7219)
+(or x7226 x6997)
+(or x7226 (not x6998))
+(or x7226 (not x6859))
+(or x7226 x6858)
+(or (not x6997) x6998 x6859 (not x6858) (not x7226))
+(or (not x7227) (not x7226) x7228)
+(or (not x7228) x7227)
+(or (not x7228) x7226)
+(or x6857 (not x6992) x7229)
+(or (not x7229) (not x6857))
+(or (not x7229) x6992)
+(or (not x6857) (not x6994) x7230)
+(or (not x7230) x6857)
+(or (not x7230) x6994)
+(or x7231 (not x7230))
+(or x7231 (not x7229))
+(or x7230 x7229 (not x7231))
+(or x7227 x6997)
+(or x7227 (not x6998))
+(or x7227 (not x6859))
+(or x7227 (not x6858))
+(or (not x6997) x6998 x6859 x6858 (not x7227))
+(or (not x6997) x6998 x6859 (not x6858) x6990)
+(or (not x6990) x6997)
+(or (not x6990) (not x6998))
+(or (not x6990) (not x6859))
+(or (not x6990) x6858)
+(or (not x6997) x6998 x6859 (not x6858) (not x7227) (not x7231) x7232)
+(or (not x7232) x6997)
+(or (not x7232) (not x6998))
+(or (not x7232) (not x6859))
+(or (not x7232) x6858)
+(or (not x7232) x7227)
+(or (not x7232) x7231)
+(or (not x6997) x6998 x6859 x6858 x6989)
+(or (not x6989) x6997)
+(or (not x6989) (not x6998))
+(or (not x6989) (not x6859))
+(or (not x6989) (not x6858))
+(or (not x6997) x6998 x6859 x6858 (not x7000) x7233)
+(or (not x7233) x6997)
+(or (not x7233) (not x6998))
+(or (not x7233) (not x6859))
+(or (not x7233) (not x6858))
+(or (not x7233) x7000)
+(or x7234 (not x7233))
+(or x7234 (not x7232))
+(or x7234 (not x7228))
+(or x7233 x7232 x7228 (not x7234))
+(or x6974 x6848)
+(or x6974 x6849)
+(or x6974 x6850)
+(or x6974 (not x6851))
+(or x6974 x6852)
+(or x6974 (not x6853))
+(or x6974 x6854)
+(or x6974 x6855)
+(or x6974 x6856)
+(or x6974 (not x6857))
+(or x6974 x6858)
+(or x6974 x6859)
+(or (not x6848) (not x6849) (not x6850) x6851 (not x6852) x6853 (not x6854) (not x6855) (not x6856) x6857 (not x6858) (not x6859) (not x6974))
+(or x6963 (not x6846))
+(or x6963 x6642)
+(or x6846 (not x6642) (not x6963))
+(or x7005 (not x7235))
+(or x7005 (not x6846))
+(or x7005 x6642)
+(or x7235 x6846 (not x6642) (not x7005))
+(or (not x6977) (not x6975) (not x6642) (not x6971) (not x7005) x7236)
+(or (not x7236) x6977)
+(or (not x7236) x6975)
+(or (not x7236) x6642)
+(or (not x7236) x6971)
+(or (not x7236) x7005)
+(or x6865 (not x7236))
+(or x6865 (not x7237))
+(or x7236 x7237 (not x6865))
+(or (not x6865) (not x6974) (not x7234) x7238)
+(or (not x7238) x6865)
+(or (not x7238) x6974)
+(or (not x7238) x7234)
+(or x7239 (not x7238))
+(or x7239 (not x6847))
+(or x7239 (not x7002))
+(or x7238 x6847 x7002 (not x7239))
+(or x6972 (not x7225))
+(or x6972 x6975)
+(or x6972 x6642)
+(or x7225 (not x6975) (not x6642) (not x6972))
+(or (not x6969) (not x6642) (not x6970) (not x6971) (not x6972) x7237)
+(or (not x7237) x6969)
+(or (not x7237) x6642)
+(or (not x7237) x6970)
+(or (not x7237) x6971)
+(or (not x7237) x6972)
+(or (not x6969) (not x6642) (not x6970) (not x6971) (not x6972) (not x7239) x7240)
+(or (not x7240) x6969)
+(or (not x7240) x6642)
+(or (not x7240) x6970)
+(or (not x7240) x6971)
+(or (not x7240) x6972)
+(or (not x7240) x7239)
+(or x6846 (not x6642) x7222 (not x6642) x7235)
+(or (not x7235) (not x6846))
+(or (not x7235) x6642)
+(or (not x7235) (not x7222))
+(or (not x7235) x6642)
+(or (not x6969) (not x6642) x7225)
+(or (not x7225) x6969)
+(or (not x7225) x6642)
+(or x6971 (not x7225))
+(or x6971 (not x6982))
+(or x7225 x6982 (not x6971))
+(or (not x6975) (not x6642) x6982)
+(or (not x6982) x6975)
+(or (not x6982) x6642)
+(or (not x6977) (not x6975) (not x6642) x7221)
+(or (not x7221) x6977)
+(or (not x7221) x6975)
+(or (not x7221) x6642)
+(or (not x6977) (not x6975) (not x6642) (not x6971) x6846 (not x6642) x7222 (not x6642) x7241)
+(or (not x7241) x6977)
+(or (not x7241) x6975)
+(or (not x7241) x6642)
+(or (not x7241) x6971)
+(or (not x7241) (not x6846))
+(or (not x7241) x6642)
+(or (not x7241) (not x7222))
+(or (not x7241) x6642)
+(or x7009 (not x6962))
+(or x7009 (not x6647))
+(or x6962 x6647 (not x7009))
+(or x6970 x6975)
+(or x6970 x6642)
+(or (not x6975) (not x6642) (not x6970))
+(or x6977 x6969)
+(or x6977 x6642)
+(or (not x6969) (not x6642) (not x6977))
+(or (not x6977) (not x6970) x7220)
+(or (not x7220) x6977)
+(or (not x7220) x6970)
+(or (not x6977) (not x6970) (not x7009) x7242)
+(or (not x7242) x6977)
+(or (not x7242) x6970)
+(or (not x7242) x7009)
+(or x7243 (not x7242))
+(or x7243 (not x7241))
+(or x7243 (not x7240))
+(or x7242 x7241 x7240 (not x7243))
+(or (not x212) (not x7243) x7244)
+(or (not x7244) x212)
+(or (not x7244) x7243)
+(or x7245 (not x7244))
+(or x7245 (not x6962))
+(or x7244 x6962 (not x7245))
+(or (not x6965) (not x7245) x7246)
+(or (not x7246) x6965)
+(or (not x7246) x7245)
+(or x7247 (not x7246))
+(or x7247 (not x7218))
+(or x7246 x7218 (not x7247))
+(or (not x7247) (not x6642) x7248)
+(or (not x7248) x7247)
+(or (not x7248) x6642)
+(or (not x6757) (not x6642) x7014)
+(or (not x7014) x6757)
+(or (not x7014) x6642)
+(or (not x7249) (not x6835) (not x7250) x7251)
+(or (not x7251) x7249)
+(or (not x7251) x6835)
+(or (not x7251) x7250)
+(or (not x6765) (not x6642) (not x6777) (not x6778) (not x6779) (not x6780) (not x7252) x7253)
+(or (not x7253) x6765)
+(or (not x7253) x6642)
+(or (not x7253) x6777)
+(or (not x7253) x6778)
+(or (not x7253) x6779)
+(or (not x7253) x6780)
+(or (not x7253) x7252)
+(or x7254 (not x7253))
+(or x7254 (not x7251))
+(or x7253 x7251 (not x7254))
+(or (not x7254) (not x6757) (not x6642) x7126)
+(or (not x7126) x7254)
+(or (not x7126) x6757)
+(or (not x7126) x6642)
+(or (not x6787) (not x6642) x7021)
+(or (not x7021) x6787)
+(or (not x7021) x6642)
+(or (not x7249) (not x6777) (not x6778) (not x6779) (not x6780) x7255)
+(or (not x7255) x7249)
+(or (not x7255) x6777)
+(or (not x7255) x6778)
+(or (not x7255) x6779)
+(or (not x7255) x6780)
+(or (not x6765) (not x6642) (not x6777) (not x6778) (not x6779) (not x6780) (not x6764) (not x6642) x7256)
+(or (not x7256) x6765)
+(or (not x7256) x6642)
+(or (not x7256) x6777)
+(or (not x7256) x6778)
+(or (not x7256) x6779)
+(or (not x7256) x6780)
+(or (not x7256) x6764)
+(or (not x7256) x6642)
+(or x6835 (not x7256))
+(or x6835 (not x7255))
+(or x7256 x7255 (not x6835))
+(or (not x6835) (not x6830) (not x6642) (not x6787) (not x6642) x7125)
+(or (not x7125) x6835)
+(or (not x7125) x6830)
+(or (not x7125) x6642)
+(or (not x7125) x6787)
+(or (not x7125) x6642)
+(or x7257 (not x7125))
+(or x7257 (not x7126))
+(or x7125 x7126 (not x7257))
+(or x7258 (not x7259))
+(or x7258 (not x7260))
+(or x7258 (not x7259))
+(or x7259 x7260 x7259 (not x7258))
+(or (not x7261) (not x6764) (not x6642) x7259)
+(or (not x7259) x7261)
+(or (not x7259) x6764)
+(or (not x7259) x6642)
+(or (not x6830) (not x6642) x6832)
+(or (not x6832) x6830)
+(or (not x6832) x6642)
+(or (not x6777) (not x6778) (not x6779) (not x6780) (not x6764) (not x6642) (not x6830) (not x6642) x7260)
+(or (not x7260) x6777)
+(or (not x7260) x6778)
+(or (not x7260) x6779)
+(or (not x7260) x6780)
+(or (not x7260) x6764)
+(or (not x7260) x6642)
+(or (not x7260) x6830)
+(or (not x7260) x6642)
+(or x7262 (not x7260))
+(or x7262 (not x7259))
+(or x7260 x7259 (not x7262))
+(or (not x7263) (not x7262) (not x7258) (not x6947) (not x6642) x7264)
+(or (not x7264) x7263)
+(or (not x7264) x7262)
+(or (not x7264) x7258)
+(or (not x7264) x6947)
+(or (not x7264) x6642)
+(or x7250 x6830)
+(or x7250 x6642)
+(or (not x6830) (not x6642) (not x7250))
+(or x6782 (not x7116))
+(or x6782 (not x7117))
+(or x6782 (not x7118))
+(or x6782 (not x7119))
+(or x7116 x7117 x7118 x7119 (not x6782))
+(or x7261 (not x7116))
+(or x7261 (not x7117))
+(or x7261 (not x7118))
+(or x7261 (not x7119))
+(or x7261 x6764)
+(or x7261 x6642)
+(or x7116 x7117 x7118 x7119 (not x6764) (not x6642) (not x7261))
+(or x7265 (not x7116))
+(or x7265 (not x7117))
+(or x7265 (not x7118))
+(or x7265 (not x7119))
+(or x7265 x6764)
+(or x7265 x6642)
+(or x7265 x6830)
+(or x7265 x6642)
+(or x7116 x7117 x7118 x7119 (not x6764) (not x6642) (not x6830) (not x6642) (not x7265))
+(or x7252 x6764)
+(or x7252 x6642)
+(or (not x6764) (not x6642) (not x7252))
+(or (not x6764) (not x6642) x6772)
+(or (not x6772) x6764)
+(or (not x6772) x6642)
+(or (not x6777) (not x6778) (not x6779) (not x6780) (not x6764) (not x6642) x7266)
+(or (not x7266) x6777)
+(or (not x7266) x6778)
+(or (not x7266) x6779)
+(or (not x7266) x6780)
+(or (not x7266) x6764)
+(or (not x7266) x6642)
+(or x7263 (not x7266))
+(or x7263 x6764)
+(or x7263 x6642)
+(or x7266 (not x6764) (not x6642) (not x7263))
+(or (not x7263) (not x7265) (not x7263) (not x6953) (not x6642) x7267)
+(or (not x7267) x7263)
+(or (not x7267) x7265)
+(or (not x7267) x7263)
+(or (not x7267) x6953)
+(or (not x7267) x6642)
+(or x7268 (not x7267))
+(or x7268 (not x7264))
+(or x7267 x7264 (not x7268))
+(or (not x6778) (not x6780) (not x6779) (not x6778) (not x7268) (not x7257) x7269)
+(or (not x7269) x6778)
+(or (not x7269) x6780)
+(or (not x7269) x6779)
+(or (not x7269) x6778)
+(or (not x7269) x7268)
+(or (not x7269) x7257)
+(or (not x6794) (not x6642) x7027)
+(or (not x7027) x6794)
+(or (not x7027) x6642)
+(or (not x7249) (not x6876) (not x7270) x7271)
+(or (not x7271) x7249)
+(or (not x7271) x6876)
+(or (not x7271) x7270)
+(or (not x6765) (not x6642) (not x6777) (not x6813) (not x6642) x6814 (not x6642) (not x6780) (not x6815) (not x6779) (not x6780) (not x7272) x7273)
+(or (not x7273) x6765)
+(or (not x7273) x6642)
+(or (not x7273) x6777)
+(or (not x7273) x6813)
+(or (not x7273) x6642)
+(or (not x7273) (not x6814))
+(or (not x7273) x6642)
+(or (not x7273) x6780)
+(or (not x7273) x6815)
+(or (not x7273) x6779)
+(or (not x7273) x6780)
+(or (not x7273) x7272)
+(or x7274 (not x7273))
+(or x7274 (not x7271))
+(or x7273 x7271 (not x7274))
+(or (not x7274) (not x6794) (not x6642) x7143)
+(or (not x7143) x7274)
+(or (not x7143) x6794)
+(or (not x7143) x6642)
+(or (not x6822) (not x6642) x7034)
+(or (not x7034) x6822)
+(or (not x7034) x6642)
+(or x7249 x6765)
+(or x7249 x6642)
+(or (not x6765) (not x6642) (not x7249))
+(or (not x7249) (not x6777) (not x6813) (not x6642) x6814 (not x6642) (not x6780) (not x6815) (not x6779) (not x6780) x7275)
+(or (not x7275) x7249)
+(or (not x7275) x6777)
+(or (not x7275) x6813)
+(or (not x7275) x6642)
+(or (not x7275) (not x6814))
+(or (not x7275) x6642)
+(or (not x7275) x6780)
+(or (not x7275) x6815)
+(or (not x7275) x6779)
+(or (not x7275) x6780)
+(or (not x6765) (not x6642) x6828)
+(or (not x6828) x6765)
+(or (not x6828) x6642)
+(or (not x6765) (not x6642) (not x6777) (not x6813) (not x6642) x6814 (not x6642) (not x6780) (not x6815) (not x6779) (not x6780) (not x6801) (not x6642) x7276)
+(or (not x7276) x6765)
+(or (not x7276) x6642)
+(or (not x7276) x6777)
+(or (not x7276) x6813)
+(or (not x7276) x6642)
+(or (not x7276) (not x6814))
+(or (not x7276) x6642)
+(or (not x7276) x6780)
+(or (not x7276) x6815)
+(or (not x7276) x6779)
+(or (not x7276) x6780)
+(or (not x7276) x6801)
+(or (not x7276) x6642)
+(or x6876 (not x7276))
+(or x6876 (not x7275))
+(or x7276 x7275 (not x6876))
+(or (not x6876) (not x6871) (not x6642) (not x6822) (not x6642) x7142)
+(or (not x7142) x6876)
+(or (not x7142) x6871)
+(or (not x7142) x6642)
+(or (not x7142) x6822)
+(or (not x7142) x6642)
+(or x7277 (not x7142))
+(or x7277 (not x7143))
+(or x7142 x7143 (not x7277))
+(or (not x7278) (not x7279) (not x7280) (not x6884) (not x6642) x7281)
+(or (not x7281) x7278)
+(or (not x7281) x7279)
+(or (not x7281) x7280)
+(or (not x7281) x6884)
+(or (not x7281) x6642)
+(or (not x7278) (not x7282) (not x7278) (not x6890) (not x6642) x7283)
+(or (not x7283) x7278)
+(or (not x7283) x7282)
+(or (not x7283) x7278)
+(or (not x7283) x6890)
+(or (not x7283) x6642)
+(or x7284 (not x7283))
+(or x7284 (not x7281))
+(or x7283 x7281 (not x7284))
+(or (not x6780) (not x6779) (not x6813) (not x6642) x6814 (not x6642) (not x6780) (not x6815) (not x7284) x7285)
+(or (not x7285) x6780)
+(or (not x7285) x6779)
+(or (not x7285) x6813)
+(or (not x7285) x6642)
+(or (not x7285) (not x6814))
+(or (not x7285) x6642)
+(or (not x7285) x6780)
+(or (not x7285) x6815)
+(or (not x7285) x7284)
+(or (not x7278) (not x7279) (not x7280) (not x6896) (not x6642) x7286)
+(or (not x7286) x7278)
+(or (not x7286) x7279)
+(or (not x7286) x7280)
+(or (not x7286) x6896)
+(or (not x7286) x6642)
+(or (not x7278) (not x7282) (not x7278) (not x6901) (not x6642) x7287)
+(or (not x7287) x7278)
+(or (not x7287) x7282)
+(or (not x7287) x7278)
+(or (not x7287) x6901)
+(or (not x7287) x6642)
+(or x7288 (not x7287))
+(or x7288 (not x7286))
+(or x7287 x7286 (not x7288))
+(or (not x6780) (not x6779) (not x6813) (not x6642) x6814 (not x6642) (not x6780) (not x6815) (not x7288) x7289)
+(or (not x7289) x6780)
+(or (not x7289) x6779)
+(or (not x7289) x6813)
+(or (not x7289) x6642)
+(or (not x7289) (not x6814))
+(or (not x7289) x6642)
+(or (not x7289) x6780)
+(or (not x7289) x6815)
+(or (not x7289) x7288)
+(or (not x7278) (not x7279) (not x7280) (not x6906) (not x6642) x7290)
+(or (not x7290) x7278)
+(or (not x7290) x7279)
+(or (not x7290) x7280)
+(or (not x7290) x6906)
+(or (not x7290) x6642)
+(or (not x7278) (not x7282) (not x7278) (not x6911) (not x6642) x7291)
+(or (not x7291) x7278)
+(or (not x7291) x7282)
+(or (not x7291) x7278)
+(or (not x7291) x6911)
+(or (not x7291) x6642)
+(or x7292 (not x7291))
+(or x7292 (not x7290))
+(or x7291 x7290 (not x7292))
+(or (not x6780) (not x6779) (not x6813) (not x6642) x6814 (not x6642) (not x6780) (not x6815) (not x7292) x7293)
+(or (not x7293) x6780)
+(or (not x7293) x6779)
+(or (not x7293) x6813)
+(or (not x7293) x6642)
+(or (not x7293) (not x6814))
+(or (not x7293) x6642)
+(or (not x7293) x6780)
+(or (not x7293) x6815)
+(or (not x7293) x7292)
+(or (not x7278) (not x7279) (not x7280) (not x6916) (not x6642) x7294)
+(or (not x7294) x7278)
+(or (not x7294) x7279)
+(or (not x7294) x7280)
+(or (not x7294) x6916)
+(or (not x7294) x6642)
+(or (not x7278) (not x7282) (not x7278) (not x6921) (not x6642) x7295)
+(or (not x7295) x7278)
+(or (not x7295) x7282)
+(or (not x7295) x7278)
+(or (not x7295) x6921)
+(or (not x7295) x6642)
+(or x7296 (not x7295))
+(or x7296 (not x7294))
+(or x7295 x7294 (not x7296))
+(or (not x6780) (not x6779) (not x6813) (not x6642) x6814 (not x6642) (not x6780) (not x6815) (not x7296) x7297)
+(or (not x7297) x6780)
+(or (not x7297) x6779)
+(or (not x7297) x6813)
+(or (not x7297) x6642)
+(or (not x7297) (not x6814))
+(or (not x7297) x6642)
+(or (not x7297) x6780)
+(or (not x7297) x6815)
+(or (not x7297) x7296)
+(or (not x7278) (not x7279) (not x7280) (not x6926) (not x6642) x7298)
+(or (not x7298) x7278)
+(or (not x7298) x7279)
+(or (not x7298) x7280)
+(or (not x7298) x6926)
+(or (not x7298) x6642)
+(or (not x7278) (not x7282) (not x7278) (not x6931) (not x6642) x7299)
+(or (not x7299) x7278)
+(or (not x7299) x7282)
+(or (not x7299) x7278)
+(or (not x7299) x6931)
+(or (not x7299) x6642)
+(or x7300 (not x7299))
+(or x7300 (not x7298))
+(or x7299 x7298 (not x7300))
+(or (not x6780) (not x6779) (not x6813) (not x6642) x6814 (not x6642) (not x6780) (not x6815) (not x7300) x7301)
+(or (not x7301) x6780)
+(or (not x7301) x6779)
+(or (not x7301) x6813)
+(or (not x7301) x6642)
+(or (not x7301) (not x6814))
+(or (not x7301) x6642)
+(or (not x7301) x6780)
+(or (not x7301) x6815)
+(or (not x7301) x7300)
+(or x7280 (not x7302))
+(or x7280 (not x7303))
+(or x7280 (not x7302))
+(or x7302 x7303 x7302 (not x7280))
+(or (not x7304) (not x6801) (not x6642) x7302)
+(or (not x7302) x7304)
+(or (not x7302) x6801)
+(or (not x7302) x6642)
+(or (not x6871) (not x6642) x6873)
+(or (not x6873) x6871)
+(or (not x6873) x6642)
+(or (not x6777) (not x6813) (not x6642) x6814 (not x6642) (not x6780) (not x6815) (not x6779) (not x6780) (not x6801) (not x6642) (not x6871) (not x6642) x7303)
+(or (not x7303) x6777)
+(or (not x7303) x6813)
+(or (not x7303) x6642)
+(or (not x7303) (not x6814))
+(or (not x7303) x6642)
+(or (not x7303) x6780)
+(or (not x7303) x6815)
+(or (not x7303) x6779)
+(or (not x7303) x6780)
+(or (not x7303) x6801)
+(or (not x7303) x6642)
+(or (not x7303) x6871)
+(or (not x7303) x6642)
+(or x7279 (not x7303))
+(or x7279 (not x7302))
+(or x7303 x7302 (not x7279))
+(or (not x7278) (not x7279) (not x7280) (not x6936) (not x6642) x7305)
+(or (not x7305) x7278)
+(or (not x7305) x7279)
+(or (not x7305) x7280)
+(or (not x7305) x6936)
+(or (not x7305) x6642)
+(or x7270 x6871)
+(or x7270 x6642)
+(or (not x6871) (not x6642) (not x7270))
+(or x7069 x6813)
+(or x7069 x6642)
+(or x7069 (not x6814))
+(or x7069 x6642)
+(or (not x6813) (not x6642) x6814 (not x6642) (not x7069))
+(or x6778 x6813)
+(or x6778 x6642)
+(or x6778 (not x6814))
+(or x6778 x6642)
+(or x6778 (not x7119))
+(or x6778 (not x7137))
+(or (not x6813) (not x6642) x6814 (not x6642) x7119 x7137 (not x6778))
+(or (not x7306) (not x6642) (not x7307) (not x6642) (not x7308) (not x6642) x7116)
+(or (not x7116) x7306)
+(or (not x7116) x6642)
+(or (not x7116) x7307)
+(or (not x7116) x6642)
+(or (not x7116) x7308)
+(or (not x7116) x6642)
+(or x6817 (not x7116))
+(or x6817 x6813)
+(or x6817 x6642)
+(or x6817 (not x6814))
+(or x6817 x6642)
+(or x6817 (not x7119))
+(or x6817 (not x7137))
+(or x6817 (not x7118))
+(or x6817 (not x7119))
+(or x7116 (not x6813) (not x6642) x6814 (not x6642) x7119 x7137 x7118 x7119 (not x6817))
+(or x7304 (not x7116))
+(or x7304 x6813)
+(or x7304 x6642)
+(or x7304 (not x6814))
+(or x7304 x6642)
+(or x7304 (not x7119))
+(or x7304 (not x7137))
+(or x7304 (not x7118))
+(or x7304 (not x7119))
+(or x7304 x6801)
+(or x7304 x6642)
+(or x7116 (not x6813) (not x6642) x6814 (not x6642) x7119 x7137 x7118 x7119 (not x6801) (not x6642) (not x7304))
+(or x7282 (not x7116))
+(or x7282 x6813)
+(or x7282 x6642)
+(or x7282 (not x6814))
+(or x7282 x6642)
+(or x7282 (not x7119))
+(or x7282 (not x7137))
+(or x7282 (not x7118))
+(or x7282 (not x7119))
+(or x7282 x6801)
+(or x7282 x6642)
+(or x7282 x6871)
+(or x7282 x6642)
+(or x7116 (not x6813) (not x6642) x6814 (not x6642) x7119 x7137 x7118 x7119 (not x6801) (not x6642) (not x6871) (not x6642) (not x7282))
+(or x7272 x6801)
+(or x7272 x6642)
+(or (not x6801) (not x6642) (not x7272))
+(or (not x6801) (not x6642) x6808)
+(or (not x6808) x6801)
+(or (not x6808) x6642)
+(or x6777 x7306)
+(or x6777 x6642)
+(or x6777 x7307)
+(or x6777 x6642)
+(or x6777 x7308)
+(or x6777 x6642)
+(or (not x7306) (not x6642) (not x7307) (not x6642) (not x7308) (not x6642) (not x6777))
+(or (not x6777) (not x6813) (not x6642) x6814 (not x6642) (not x6780) (not x6815) (not x6779) (not x6780) (not x6801) (not x6642) x7309)
+(or (not x7309) x6777)
+(or (not x7309) x6813)
+(or (not x7309) x6642)
+(or (not x7309) (not x6814))
+(or (not x7309) x6642)
+(or (not x7309) x6780)
+(or (not x7309) x6815)
+(or (not x7309) x6779)
+(or (not x7309) x6780)
+(or (not x7309) x6801)
+(or (not x7309) x6642)
+(or x7278 (not x7309))
+(or x7278 x6801)
+(or x7278 x6642)
+(or x7309 (not x6801) (not x6642) (not x7278))
+(or (not x7278) (not x7282) (not x7278) (not x6941) (not x6642) x7310)
+(or (not x7310) x7278)
+(or (not x7310) x7282)
+(or (not x7310) x7278)
+(or (not x7310) x6941)
+(or (not x7310) x6642)
+(or x7311 (not x7310))
+(or x7311 (not x7305))
+(or x7310 x7305 (not x7311))
+(or (not x6780) (not x6779) (not x6813) (not x6642) x6814 (not x6642) (not x6780) (not x6815) (not x7311) x7312)
+(or (not x7312) x6780)
+(or (not x7312) x6779)
+(or (not x7312) x6813)
+(or (not x7312) x6642)
+(or (not x7312) (not x6814))
+(or (not x7312) x6642)
+(or (not x7312) x6780)
+(or (not x7312) x6815)
+(or (not x7312) x7311)
+(or x7313 (not x7312))
+(or x7313 (not x7301))
+(or x7313 (not x7297))
+(or x7313 (not x7293))
+(or x7313 (not x7289))
+(or x7313 (not x7285))
+(or x7312 x7301 x7297 x7293 x7289 x7285 (not x7313))
+(or (not x6813) (not x6642) x6814 (not x6642) (not x6780) (not x6815) x7117)
+(or (not x7117) x6813)
+(or (not x7117) x6642)
+(or (not x7117) (not x6814))
+(or (not x7117) x6642)
+(or (not x7117) x6780)
+(or (not x7117) x6815)
+(or (not x6813) (not x6642) x6814 (not x6642) (not x6780) (not x6815) (not x7313) (not x7277) x7314)
+(or (not x7314) x6813)
+(or (not x7314) x6642)
+(or (not x7314) (not x6814))
+(or (not x7314) x6642)
+(or (not x7314) x6780)
+(or (not x7314) x6815)
+(or (not x7314) x7313)
+(or (not x7314) x7277)
+(or x7315 (not x7314))
+(or x7315 (not x7269))
+(or x7314 x7269 (not x7315))
+(or x6815 (not x7316))
+(or x6815 (not x7317))
+(or x7316 x7317 (not x6815))
+(or x6779 (not x7316))
+(or x6779 (not x7317))
+(or x6779 (not x7119))
+(or x7316 x7317 x7119 (not x6779))
+(or (not x6779) (not x7315) x7318)
+(or (not x7318) x6779)
+(or (not x7318) x7315)
+(or (not x7040) (not x6642) x7099)
+(or (not x7099) x7040)
+(or (not x7099) x6642)
+(or (not x7091) (not x7062) x7137)
+(or (not x7137) x7091)
+(or (not x7137) x7062)
+(or (not x7091) (not x7062) (not x6780) x7118)
+(or (not x7118) x7091)
+(or (not x7118) x7062)
+(or (not x7118) x6780)
+(or (not x7091) (not x7062) (not x6780) (not x7040) (not x6642) x7319)
+(or (not x7319) x7091)
+(or (not x7319) x7062)
+(or (not x7319) x6780)
+(or (not x7319) x7040)
+(or (not x7319) x6642)
+(or x7320 (not x7319))
+(or x7320 (not x7318))
+(or x7319 x7318 (not x7320))
+(or x7062 (not x6814))
+(or x7062 x6642)
+(or x6814 (not x6642) (not x7062))
+(or (not x6813) (not x6642) x7316)
+(or (not x7316) x6813)
+(or (not x7316) x6642)
+(or x6780 (not x7316))
+(or x6780 (not x6814))
+(or x6780 x6642)
+(or x7316 x6814 (not x6642) (not x6780))
+(or (not x6780) (not x7320) x7321)
+(or (not x7321) x6780)
+(or (not x7321) x7320)
+(or x6814 (not x6642) x7317)
+(or (not x7317) (not x6814))
+(or (not x7317) x6642)
+(or x7091 x6813)
+(or x7091 x6642)
+(or (not x6813) (not x6642) (not x7091))
+(or (not x7091) x6814 (not x6642) x7119)
+(or (not x7119) x7091)
+(or (not x7119) (not x6814))
+(or (not x7119) x6642)
+(or (not x7091) x6814 (not x6642) (not x7050) (not x6642) x7322)
+(or (not x7322) x7091)
+(or (not x7322) (not x6814))
+(or (not x7322) x6642)
+(or (not x7322) x7050)
+(or (not x7322) x6642)
+(or x7323 (not x7322))
+(or x7323 (not x7321))
+(or x7322 x7321 (not x7323))
+(or (not x7323) (not x6642) x7324)
+(or (not x7324) x7323)
+(or (not x7324) x6642)
+(or (not x7325) (not x7326) (not x7306) (not x6642) x7327)
+(or (not x7327) x7325)
+(or (not x7327) x7326)
+(or (not x7327) x7306)
+(or (not x7327) x6642)
+(or (not x7328) (not x7329) x7330)
+(or (not x7330) x7328)
+(or (not x7330) x7329)
+(or x7331 (not x7330))
+(or x7331 (not x7327))
+(or x7330 x7327 (not x7331))
+(or (not x7332) (not x7331) x7333)
+(or (not x7333) x7332)
+(or (not x7333) x7331)
+(or (not x7328) (not x7306) (not x6642) x7334)
+(or (not x7334) x7328)
+(or (not x7334) x7306)
+(or (not x7334) x6642)
+(or (not x7325) (not x7326) (not x7329) x7335)
+(or (not x7335) x7325)
+(or (not x7335) x7326)
+(or (not x7335) x7329)
+(or x7336 (not x7335))
+(or x7336 (not x7334))
+(or x7335 x7334 (not x7336))
+(or (not x7337) (not x6642) (not x7336) x7338)
+(or (not x7338) x7337)
+(or (not x7338) x6642)
+(or (not x7338) x7336)
+(or x7339 (not x7338))
+(or x7339 (not x7333))
+(or x7338 x7333 (not x7339))
+(or (not x7339) (not x6642) x7340)
+(or (not x7340) x7339)
+(or (not x7340) x6642)
+(or (not x7179) (not x6642) (not x7180) (not x7181) (not x7182) (not x7341) (not x7192) (not x6642) x7342)
+(or (not x7342) x7179)
+(or (not x7342) x6642)
+(or (not x7342) x7180)
+(or (not x7342) x7181)
+(or (not x7342) x7182)
+(or (not x7342) x7341)
+(or (not x7342) x7192)
+(or (not x7342) x6642)
+(or (not x7197) (not x7192) (not x6642) (not x7181) (not x7194) (not x7343) (not x7192) (not x6642) x7344)
+(or (not x7344) x7197)
+(or (not x7344) x7192)
+(or (not x7344) x6642)
+(or (not x7344) x7181)
+(or (not x7344) x7194)
+(or (not x7344) x7343)
+(or (not x7344) x7192)
+(or (not x7344) x6642)
+(or (not x7201) (not x6642) x6962)
+(or (not x6962) x7201)
+(or (not x6962) x6642)
+(or (not x7201) (not x6642) (not x212) x7214)
+(or (not x7214) x7201)
+(or (not x7214) x6642)
+(or (not x7214) x212)
+(or x7345 (not x7214))
+(or x7345 (not x7210))
+(or x7214 x7210 (not x7345))
+(or (not x7197) (not x7180) (not x7345) x7346)
+(or (not x7346) x7197)
+(or (not x7346) x7180)
+(or (not x7346) x7345)
+(or (not x7181) (not x7182) (not x7347) (not x7192) (not x6642) x7348)
+(or (not x7348) x7181)
+(or (not x7348) x7182)
+(or (not x7348) x7347)
+(or (not x7348) x7192)
+(or (not x7348) x6642)
+(or x7349 (not x7348))
+(or x7349 (not x7346))
+(or x7349 (not x7344))
+(or x7349 (not x7342))
+(or x7348 x7346 x7344 x7342 (not x7349))
+(or (not x7349) (not x6642) x7350)
+(or (not x7350) x7349)
+(or (not x7350) x6642)
+(or x7173 (not x7212))
+(or x7173 x6642)
+(or x7212 (not x6642) (not x7173))
+(or x7341 (not x7212))
+(or x7341 x6642)
+(or x7341 (not x7172))
+(or x7212 (not x6642) x7172 (not x7341))
+(or (not x7179) (not x6642) (not x7180) (not x7181) (not x7182) (not x7341) (not x7179) (not x6642) x7351)
+(or (not x7351) x7179)
+(or (not x7351) x6642)
+(or (not x7351) x7180)
+(or (not x7351) x7181)
+(or (not x7351) x7182)
+(or (not x7351) x7341)
+(or (not x7351) x7179)
+(or (not x7351) x6642)
+(or x7343 x7194)
+(or x7343 (not x6647))
+(or (not x7194) x6647 (not x7343))
+(or (not x7194) (not x7343) (not x7179) (not x6642) x7352)
+(or (not x7352) x7194)
+(or (not x7352) x7343)
+(or (not x7352) x7179)
+(or (not x7352) x6642)
+(or (not x7194) x6647 x7353)
+(or (not x7353) x7194)
+(or (not x7353) (not x6647))
+(or x7354 x7194)
+(or x7354 (not x7353))
+(or (not x7194) x7353 (not x7354))
+(or (not x7354) x7194 x7355)
+(or (not x7355) x7354)
+(or (not x7355) (not x7194))
+(or x7356 (not x7355))
+(or x7356 (not x7352))
+(or x7355 x7352 (not x7356))
+(or (not x7197) (not x7192) (not x6642) (not x7181) (not x7356) x7357)
+(or (not x7357) x7197)
+(or (not x7357) x7192)
+(or (not x7357) x6642)
+(or (not x7357) x7181)
+(or (not x7357) x7356)
+(or x6965 x7201)
+(or x6965 x6642)
+(or (not x7201) (not x6642) (not x6965))
+(or x7358 x7201)
+(or x7358 x6642)
+(or x7358 (not x6598))
+(or (not x7201) (not x6642) x6598 (not x7358))
+(or (not x7197) (not x7180) (not x7358) (not x7179) (not x6642) x7359)
+(or (not x7359) x7197)
+(or (not x7359) x7180)
+(or (not x7359) x7358)
+(or (not x7359) x7179)
+(or (not x7359) x6642)
+(or (not x7181) (not x7182) (not x7347) (not x7179) (not x6642) x7360)
+(or (not x7360) x7181)
+(or (not x7360) x7182)
+(or (not x7360) x7347)
+(or (not x7360) x7179)
+(or (not x7360) x6642)
+(or x7361 (not x7360))
+(or x7361 (not x7359))
+(or x7361 (not x7357))
+(or x7361 (not x7351))
+(or x7360 x7359 x7357 x7351 (not x7361))
+(or (not x7361) (not x6642) x7362)
+(or (not x7362) x7361)
+(or (not x7362) x6642)
+(or (not x7325) (not x7326) (not x7307) (not x6642) x7363)
+(or (not x7363) x7325)
+(or (not x7363) x7326)
+(or (not x7363) x7307)
+(or (not x7363) x6642)
+(or (not x7328) (not x7364) x7365)
+(or (not x7365) x7328)
+(or (not x7365) x7364)
+(or x7366 (not x7365))
+(or x7366 (not x7363))
+(or x7365 x7363 (not x7366))
+(or (not x7332) (not x7366) x7367)
+(or (not x7367) x7332)
+(or (not x7367) x7366)
+(or (not x7328) (not x7307) (not x6642) x7368)
+(or (not x7368) x7328)
+(or (not x7368) x7307)
+(or (not x7368) x6642)
+(or x7369 x7370 x7329)
+(or x7369 (not x7370) (not x7329))
+(or (not x7369) x7370 (not x7329))
+(or (not x7369) (not x7370) x7329)
+(or (not x7325) (not x7326) (not x7369) x7371)
+(or (not x7371) x7325)
+(or (not x7371) x7326)
+(or (not x7371) x7369)
+(or x7372 (not x7371))
+(or x7372 (not x7368))
+(or x7371 x7368 (not x7372))
+(or (not x7337) (not x6642) (not x7372) x7373)
+(or (not x7373) x7337)
+(or (not x7373) x6642)
+(or (not x7373) x7372)
+(or x7374 (not x7373))
+(or x7374 (not x7367))
+(or x7373 x7367 (not x7374))
+(or (not x7374) (not x6642) x7375)
+(or (not x7375) x7374)
+(or (not x7375) x6642)
+(or (not x7325) (not x7326) (not x7308) (not x6642) x7376)
+(or (not x7376) x7325)
+(or (not x7376) x7326)
+(or (not x7376) x7308)
+(or (not x7376) x6642)
+(or (not x7328) (not x7377) x7378)
+(or (not x7378) x7328)
+(or (not x7378) x7377)
+(or x7379 (not x7378))
+(or x7379 (not x7376))
+(or x7378 x7376 (not x7379))
+(or x7332 x7337)
+(or x7332 x6642)
+(or (not x7337) (not x6642) (not x7332))
+(or (not x7332) (not x7379) x7380)
+(or (not x7380) x7332)
+(or (not x7380) x7379)
+(or (not x7184) (not x6642) (not x205) (not x212) (not x7381) (not x7382) x7383)
+(or (not x7383) x7184)
+(or (not x7383) x6642)
+(or (not x7383) x205)
+(or (not x7383) x212)
+(or (not x7383) x7381)
+(or (not x7383) x7382)
+(or (not x204) (not x7190) (not x6642) (not x212) (not x7197) (not x7192) (not x6642) (not x7181) x7194 x7384)
+(or (not x7384) x204)
+(or (not x7384) x7190)
+(or (not x7384) x6642)
+(or (not x7384) x212)
+(or (not x7384) x7197)
+(or (not x7384) x7192)
+(or (not x7384) x6642)
+(or (not x7384) x7181)
+(or (not x7384) (not x7194))
+(or x7328 (not x7384))
+(or x7328 (not x7383))
+(or x7384 x7383 (not x7328))
+(or (not x7328) (not x7308) (not x6642) x7385)
+(or (not x7385) x7328)
+(or (not x7385) x7308)
+(or (not x7385) x6642)
+(or x7386 x7387 x7388)
+(or x7386 (not x7387) (not x7388))
+(or (not x7386) x7387 (not x7388))
+(or (not x7386) (not x7387) x7388)
+(or x7326 x7184)
+(or x7326 x6642)
+(or x7326 (not x6624))
+(or x7326 (not x6598))
+(or x7326 (not x7185))
+(or x7326 (not x7189))
+(or (not x7184) (not x6642) x6624 x6598 x7185 x7189 (not x7326))
+(or x7325 (not x6623))
+(or x7325 x7190)
+(or x7325 x6642)
+(or x7325 (not x6598))
+(or x7325 (not x7191))
+(or x7325 x7192)
+(or x7325 x6642)
+(or x7325 (not x7193))
+(or x7325 (not x7194))
+(or x6623 (not x7190) (not x6642) x6598 x7191 (not x7192) (not x6642) x7193 x7194 (not x7325))
+(or (not x7325) (not x7326) (not x7386) x7389)
+(or (not x7389) x7325)
+(or (not x7389) x7326)
+(or (not x7389) x7386)
+(or x7390 (not x7389))
+(or x7390 (not x7385))
+(or x7389 x7385 (not x7390))
+(or (not x7337) (not x6642) (not x7390) x7391)
+(or (not x7391) x7337)
+(or (not x7391) x6642)
+(or (not x7391) x7390)
+(or x7392 (not x7391))
+(or x7392 (not x7380))
+(or x7391 x7380 (not x7392))
+(or (not x7392) (not x6642) x7393)
+(or (not x7393) x7392)
+(or (not x7393) x6642)
+(or (not x7394) (not x7395) (not x6642) x7396)
+(or (not x7396) x7394)
+(or (not x7396) x7395)
+(or (not x7396) x6642)
+(or (not x7397) (not x7382) (not x7398) x7399)
+(or (not x7399) x7397)
+(or (not x7399) x7382)
+(or (not x7399) x7398)
+(or x7400 (not x7399))
+(or x7400 (not x7396))
+(or x7399 x7396 (not x7400))
+(or (not x7184) (not x6642) (not x205) (not x212) (not x7381) (not x7400) x7401)
+(or (not x7401) x7184)
+(or (not x7401) x6642)
+(or (not x7401) x205)
+(or (not x7401) x212)
+(or (not x7401) x7381)
+(or (not x7401) x7400)
+(or (not x7402) (not x7197) (not x7192) (not x6642) (not x7181) x7194 (not x7395) (not x6642) x7403)
+(or (not x7403) x7402)
+(or (not x7403) x7197)
+(or (not x7403) x7192)
+(or (not x7403) x6642)
+(or (not x7403) x7181)
+(or (not x7403) (not x7194))
+(or (not x7403) x7395)
+(or (not x7403) x6642)
+(or x7404 (not x7370))
+(or x7404 (not x7405))
+(or x7404 (not x7406))
+(or x7370 x7405 x7406 (not x7404))
+(or x7377 x7387 x7404)
+(or x7377 (not x7387) (not x7404))
+(or (not x7377) x7387 (not x7404))
+(or (not x7377) (not x7387) x7404)
+(or (not x7407) (not x7377) x7408)
+(or (not x7408) x7407)
+(or (not x7408) x7377)
+(or x7409 (not x7410))
+(or x7409 (not x7408))
+(or x7410 x7408 (not x7409))
+(or (not x7411) (not x7409) x7412)
+(or (not x7412) x7411)
+(or (not x7412) x7409)
+(or (not x7413) (not x6642) (not x7414) (not x6642) x7415)
+(or (not x7415) x7413)
+(or (not x7415) x6642)
+(or (not x7415) x7414)
+(or (not x7415) x6642)
+(or x7416 (not x7187))
+(or x7416 (not x7415))
+(or x7416 (not x7186))
+(or x7187 x7415 x7186 (not x7416))
+(or x7398 x7188 x7416)
+(or x7398 (not x7188) (not x7416))
+(or (not x7398) x7188 (not x7416))
+(or (not x7398) (not x7188) x7416)
+(or (not x7197) (not x7192) (not x6642) (not x7181) x7194 (not x7417) (not x7398) x7418)
+(or (not x7418) x7197)
+(or (not x7418) x7192)
+(or (not x7418) x6642)
+(or (not x7418) x7181)
+(or (not x7418) (not x7194))
+(or (not x7418) x7417)
+(or (not x7418) x7398)
+(or x7419 (not x7418))
+(or x7419 (not x7412))
+(or x7418 x7412 (not x7419))
+(or (not x7420) (not x7419) x7421)
+(or (not x7421) x7420)
+(or (not x7421) x7419)
+(or x7422 (not x7421))
+(or x7422 (not x7403))
+(or x7421 x7403 (not x7422))
+(or (not x204) (not x7190) (not x6642) (not x212) (not x7422) x7423)
+(or (not x7423) x204)
+(or (not x7423) x7190)
+(or (not x7423) x6642)
+(or (not x7423) x212)
+(or (not x7423) x7422)
+(or (not x204) (not x205) (not x7395) (not x6642) x7424)
+(or (not x7424) x204)
+(or (not x7424) x205)
+(or (not x7424) x7395)
+(or (not x7424) x6642)
+(or x7425 (not x7424))
+(or x7425 (not x7423))
+(or x7425 (not x7401))
+(or x7424 x7423 x7401 (not x7425))
+(or (not x7425) (not x6642) x7426)
+(or (not x7426) x7425)
+(or (not x7426) x6642)
+(or (not x7394) (not x7413) (not x6642) x7427)
+(or (not x7427) x7394)
+(or (not x7427) x7413)
+(or (not x7427) x6642)
+(or (not x7397) (not x7382) (not x7428) x7429)
+(or (not x7429) x7397)
+(or (not x7429) x7382)
+(or (not x7429) x7428)
+(or x7430 (not x7429))
+(or x7430 (not x7427))
+(or x7429 x7427 (not x7430))
+(or (not x7184) (not x6642) (not x205) (not x212) (not x7381) (not x7430) x7431)
+(or (not x7431) x7184)
+(or (not x7431) x6642)
+(or (not x7431) x205)
+(or (not x7431) x212)
+(or (not x7431) x7381)
+(or (not x7431) x7430)
+(or (not x7402) (not x7197) (not x7192) (not x6642) (not x7181) x7194 (not x7413) (not x6642) x7432)
+(or (not x7432) x7402)
+(or (not x7432) x7197)
+(or (not x7432) x7192)
+(or (not x7432) x6642)
+(or (not x7432) x7181)
+(or (not x7432) (not x7194))
+(or (not x7432) x7413)
+(or (not x7432) x6642)
+(or x7364 x7370 x7406)
+(or x7364 (not x7370) (not x7406))
+(or (not x7364) x7370 (not x7406))
+(or (not x7364) (not x7370) x7406)
+(or (not x7407) (not x7364) x7433)
+(or (not x7433) x7407)
+(or (not x7433) x7364)
+(or x7434 (not x7410))
+(or x7434 (not x7433))
+(or x7410 x7433 (not x7434))
+(or (not x7411) (not x7434) x7435)
+(or (not x7435) x7411)
+(or (not x7435) x7434)
+(or x7428 x7187 x7186)
+(or x7428 (not x7187) (not x7186))
+(or (not x7428) x7187 (not x7186))
+(or (not x7428) (not x7187) x7186)
+(or (not x7197) (not x7192) (not x6642) (not x7181) x7194 (not x7417) (not x7428) x7436)
+(or (not x7436) x7197)
+(or (not x7436) x7192)
+(or (not x7436) x6642)
+(or (not x7436) x7181)
+(or (not x7436) (not x7194))
+(or (not x7436) x7417)
+(or (not x7436) x7428)
+(or x7437 (not x7436))
+(or x7437 (not x7435))
+(or x7436 x7435 (not x7437))
+(or (not x7420) (not x7437) x7438)
+(or (not x7438) x7420)
+(or (not x7438) x7437)
+(or x7439 (not x7438))
+(or x7439 (not x7432))
+(or x7438 x7432 (not x7439))
+(or (not x204) (not x7190) (not x6642) (not x212) (not x7439) x7440)
+(or (not x7440) x204)
+(or (not x7440) x7190)
+(or (not x7440) x6642)
+(or (not x7440) x212)
+(or (not x7440) x7439)
+(or (not x204) (not x205) (not x7413) (not x6642) x7441)
+(or (not x7441) x204)
+(or (not x7441) x205)
+(or (not x7441) x7413)
+(or (not x7441) x6642)
+(or x7442 (not x7441))
+(or x7442 (not x7440))
+(or x7442 (not x7431))
+(or x7441 x7440 x7431 (not x7442))
+(or (not x7442) (not x6642) x7443)
+(or (not x7443) x7442)
+(or (not x7443) x6642)
+(or (not x7444) (not x7445) (not x7446) (not x7382) x7447)
+(or (not x7447) x7444)
+(or (not x7447) x7445)
+(or (not x7447) x7446)
+(or (not x7447) x7382)
+(or x7394 (not x7447))
+(or x7394 (not x7189))
+(or x7447 x7189 (not x7394))
+(or (not x7394) (not x7414) (not x6642) x7448)
+(or (not x7448) x7394)
+(or (not x7448) x7414)
+(or (not x7448) x6642)
+(or (not x7179) (not x6642) (not x7180) (not x7181) (not x7182) x7172 x7449)
+(or (not x7449) x7179)
+(or (not x7449) x6642)
+(or (not x7449) x7180)
+(or (not x7449) x7181)
+(or (not x7449) x7182)
+(or (not x7449) (not x7172))
+(or (not x7181) (not x7182) (not x7347) x7200)
+(or (not x7200) x7181)
+(or (not x7200) x7182)
+(or (not x7200) x7347)
+(or x7382 (not x7200))
+(or x7382 (not x7193))
+(or x7382 (not x7450))
+(or x7382 (not x7449))
+(or x7200 x7193 x7450 x7449 (not x7382))
+(or (not x7397) (not x7382) (not x7444) x7451)
+(or (not x7451) x7397)
+(or (not x7451) x7382)
+(or (not x7451) x7444)
+(or x7452 (not x7451))
+(or x7452 (not x7448))
+(or x7451 x7448 (not x7452))
+(or (not x7184) (not x6642) (not x205) (not x212) (not x7381) (not x7452) x7453)
+(or (not x7453) x7184)
+(or (not x7453) x6642)
+(or (not x7453) x205)
+(or (not x7453) x212)
+(or (not x7453) x7381)
+(or (not x7453) x7452)
+(or x7446 x7395)
+(or x7446 x6642)
+(or (not x7395) (not x6642) (not x7446))
+(or x7445 x7413)
+(or x7445 x6642)
+(or (not x7413) (not x6642) (not x7445))
+(or (not x7444) (not x7445) (not x7446) x7454)
+(or (not x7454) x7444)
+(or (not x7454) x7445)
+(or (not x7454) x7446)
+(or x7402 (not x7191))
+(or x7402 x7192)
+(or x7402 x6642)
+(or x7402 (not x7193))
+(or x7402 (not x7194))
+(or x7402 (not x7454))
+(or x7191 (not x7192) (not x6642) x7193 x7194 x7454 (not x7402))
+(or (not x7402) (not x7197) (not x7192) (not x6642) (not x7181) x7194 (not x7414) (not x6642) x7455)
+(or (not x7455) x7402)
+(or (not x7455) x7197)
+(or (not x7455) x7192)
+(or (not x7455) x6642)
+(or (not x7455) x7181)
+(or (not x7455) (not x7194))
+(or (not x7455) x7414)
+(or (not x7455) x6642)
+(or x7388 x7307)
+(or x7388 x6642)
+(or x7388 x7306)
+(or x7388 x6642)
+(or (not x7307) (not x6642) (not x7306) (not x6642) (not x7388))
+(or x7407 x7308)
+(or x7407 x6642)
+(or x7407 x7307)
+(or x7407 x6642)
+(or x7407 x7306)
+(or x7407 x6642)
+(or (not x7308) (not x6642) (not x7307) (not x6642) (not x7306) (not x6642) (not x7407))
+(or (not x7407) (not x7329) x7456)
+(or (not x7456) x7407)
+(or (not x7456) x7329)
+(or (not x7307) (not x6642) (not x7306) (not x6642) x7405)
+(or (not x7405) x7307)
+(or (not x7405) x6642)
+(or (not x7405) x7306)
+(or (not x7405) x6642)
+(or (not x7308) (not x6642) (not x7307) (not x6642) (not x7306) (not x6642) x7410)
+(or (not x7410) x7308)
+(or (not x7410) x6642)
+(or (not x7410) x7307)
+(or (not x7410) x6642)
+(or (not x7410) x7306)
+(or (not x7410) x6642)
+(or x7457 (not x7410))
+(or x7457 (not x7456))
+(or x7410 x7456 (not x7457))
+(or (not x7411) (not x7457) x7458)
+(or (not x7458) x7411)
+(or (not x7458) x7457)
+(or x7444 x7414)
+(or x7444 x6642)
+(or (not x7414) (not x6642) (not x7444))
+(or (not x7197) (not x7192) (not x6642) (not x7181) x7194 (not x7417) (not x7444) x7459)
+(or (not x7459) x7197)
+(or (not x7459) x7192)
+(or (not x7459) x6642)
+(or (not x7459) x7181)
+(or (not x7459) (not x7194))
+(or (not x7459) x7417)
+(or (not x7459) x7444)
+(or x7460 (not x7459))
+(or x7460 (not x7458))
+(or x7459 x7458 (not x7460))
+(or x7420 (not x7461))
+(or x7420 (not x7191))
+(or x7420 x7192)
+(or x7420 x6642)
+(or x7420 (not x7193))
+(or x7420 (not x7194))
+(or x7461 x7191 (not x7192) (not x6642) x7193 x7194 (not x7420))
+(or (not x7420) (not x7460) x7462)
+(or (not x7462) x7420)
+(or (not x7462) x7460)
+(or x7463 (not x7462))
+(or x7463 (not x7455))
+(or x7462 x7455 (not x7463))
+(or (not x204) (not x7190) (not x6642) (not x212) (not x7463) x7464)
+(or (not x7464) x204)
+(or (not x7464) x7190)
+(or (not x7464) x6642)
+(or (not x7464) x212)
+(or (not x7464) x7463)
+(or (not x204) (not x205) (not x7414) (not x6642) x7465)
+(or (not x7465) x204)
+(or (not x7465) x205)
+(or (not x7465) x7414)
+(or (not x7465) x6642)
+(or x7466 (not x7465))
+(or x7466 (not x7464))
+(or x7466 (not x7453))
+(or x7465 x7464 x7453 (not x7466))
+(or (not x7466) (not x6642) x7467)
+(or (not x7467) x7466)
+(or (not x7467) x6642)
+(or (not x7184) (not x6642) (not x205) (not x212) (not x7381) (not x7397) (not x7190) (not x6642) x7468)
+(or (not x7468) x7184)
+(or (not x7468) x6642)
+(or (not x7468) x205)
+(or (not x7468) x212)
+(or (not x7468) x7381)
+(or (not x7468) x7397)
+(or (not x7468) x7190)
+(or (not x7468) x6642)
+(or (not x204) (not x7190) (not x6642) (not x212) (not x7411) (not x7190) (not x6642) x7469)
+(or (not x7469) x204)
+(or (not x7469) x7190)
+(or (not x7469) x6642)
+(or (not x7469) x212)
+(or (not x7469) x7411)
+(or (not x7469) x7190)
+(or (not x7469) x6642)
+(or (not x7306) (not x6642) x7406)
+(or (not x7406) x7306)
+(or (not x7406) x6642)
+(or (not x7470) (not x7306) (not x6642) x7471)
+(or (not x7471) x7470)
+(or (not x7471) x7306)
+(or (not x7471) x6642)
+(or x7472 (not x7370))
+(or x7472 (not x7471))
+(or x7370 x7471 (not x7472))
+(or (not x7473) (not x7472) x7474)
+(or (not x7474) x7473)
+(or (not x7474) x7472)
+(or x7475 (not x7387))
+(or x7475 (not x7474))
+(or x7475 (not x6624))
+(or x7387 x7474 x6624 (not x7475))
+(or (not x204) (not x205) (not x7475) x7476)
+(or (not x7476) x204)
+(or (not x7476) x205)
+(or (not x7476) x7475)
+(or x7477 (not x7476))
+(or x7477 (not x7469))
+(or x7477 (not x7468))
+(or x7476 x7469 x7468 (not x7477))
+(or (not x7477) (not x6642) x7478)
+(or (not x7478) x7477)
+(or (not x7478) x6642)
+(or x7347 x7179)
+(or x7347 x6642)
+(or x7347 (not x7210))
+(or (not x7179) (not x6642) x7210 (not x7347))
+(or x7479 x7179)
+(or x7479 x6642)
+(or x7479 (not x7210))
+(or x7479 (not x7193))
+(or x7479 (not x7211))
+(or x7479 (not x7172))
+(or (not x7179) (not x6642) x7210 x7193 x7211 x7172 (not x7479))
+(or (not x7179) (not x6642) (not x7180) x7480)
+(or (not x7480) x7179)
+(or (not x7480) x6642)
+(or (not x7480) x7180)
+(or x7481 (not x7193))
+(or x7481 (not x7211))
+(or x7481 (not x7480))
+(or x7193 x7211 x7480 (not x7481))
+(or (not x7481) (not x7181) (not x7482) (not x7479) x7189)
+(or (not x7189) x7481)
+(or (not x7189) x7181)
+(or (not x7189) x7482)
+(or (not x7189) x7479)
+(or x7397 (not x7186))
+(or x7397 (not x7187))
+(or x7397 (not x7188))
+(or x7397 (not x7189))
+(or x7186 x7187 x7188 x7189 (not x7397))
+(or x7381 (not x6623))
+(or x7381 x7190)
+(or x7381 x6642)
+(or x6623 (not x7190) (not x6642) (not x7381))
+(or (not x7184) (not x6642) (not x205) (not x212) (not x7381) (not x7397) (not x7184) (not x6642) x7483)
+(or (not x7483) x7184)
+(or (not x7483) x6642)
+(or (not x7483) x205)
+(or (not x7483) x212)
+(or (not x7483) x7381)
+(or (not x7483) x7397)
+(or (not x7483) x7184)
+(or (not x7483) x6642)
+(or (not x7197) (not x7180) x7193)
+(or (not x7193) x7197)
+(or (not x7193) x7180)
+(or x7180 x7192)
+(or x7180 x6642)
+(or (not x7192) (not x6642) (not x7180))
+(or x7182 (not x7191))
+(or x7182 x7192)
+(or x7182 x6642)
+(or x7191 (not x7192) (not x6642) (not x7182))
+(or x7482 (not x7191))
+(or x7482 x7192)
+(or x7482 x6642)
+(or x7482 (not x7193))
+(or x7191 (not x7192) (not x6642) x7193 (not x7482))
+(or x7411 (not x7191))
+(or x7411 x7192)
+(or x7411 x6642)
+(or x7411 (not x7193))
+(or x7411 (not x7194))
+(or x7191 (not x7192) (not x6642) x7193 x7194 (not x7411))
+(or (not x7411) (not x7184) (not x6642) x7484)
+(or (not x7484) x7411)
+(or (not x7484) x7184)
+(or (not x7484) x6642)
+(or (not x7395) (not x6642) x7188)
+(or (not x7188) x7395)
+(or (not x7188) x6642)
+(or (not x7413) (not x6642) x7187)
+(or (not x7187) x7413)
+(or (not x7187) x6642)
+(or (not x7414) (not x6642) x7186)
+(or (not x7186) x7414)
+(or (not x7186) x6642)
+(or x7417 (not x7186))
+(or x7417 (not x7187))
+(or x7417 (not x7188))
+(or x7186 x7187 x7188 (not x7417))
+(or (not x7179) (not x6642) x7191)
+(or (not x7191) x7179)
+(or (not x7191) x6642)
+(or x7181 (not x7191))
+(or x7181 (not x7210))
+(or x7191 x7210 (not x7181))
+(or (not x7192) (not x6642) x7210)
+(or (not x7210) x7192)
+(or (not x7210) x6642)
+(or x7197 x7179)
+(or x7197 x6642)
+(or (not x7179) (not x6642) (not x7197))
+(or (not x7197) (not x7192) (not x6642) x7211)
+(or (not x7211) x7197)
+(or (not x7211) x7192)
+(or (not x7211) x6642)
+(or (not x7197) (not x7192) (not x6642) (not x7181) x7450)
+(or (not x7450) x7197)
+(or (not x7450) x7192)
+(or (not x7450) x6642)
+(or (not x7450) x7181)
+(or (not x7197) (not x7192) (not x6642) (not x7181) x7194 (not x7417) x7461)
+(or (not x7461) x7197)
+(or (not x7461) x7192)
+(or (not x7461) x6642)
+(or (not x7461) x7181)
+(or (not x7461) (not x7194))
+(or (not x7461) x7417)
+(or x7485 (not x7461))
+(or x7485 (not x7484))
+(or x7461 x7484 (not x7485))
+(or x212 (not x6623))
+(or x212 (not x6624))
+(or x6623 x6624 (not x212))
+(or (not x7190) (not x6642) x6624)
+(or (not x6624) x7190)
+(or (not x6624) x6642)
+(or (not x204) (not x7190) (not x6642) x7185)
+(or (not x7185) x204)
+(or (not x7185) x7190)
+(or (not x7185) x6642)
+(or (not x204) (not x7190) (not x6642) (not x212) (not x7485) x7486)
+(or (not x7486) x204)
+(or (not x7486) x7190)
+(or (not x7486) x6642)
+(or (not x7486) x212)
+(or (not x7486) x7485)
+(or (not x7184) (not x6642) x6623)
+(or (not x6623) x7184)
+(or (not x6623) x6642)
+(or x7329 x7306)
+(or x7329 x6642)
+(or (not x7306) (not x6642) (not x7329))
+(or (not x7307) (not x6642) x7370)
+(or (not x7370) x7307)
+(or (not x7370) x6642)
+(or x7487 (not x7370))
+(or x7487 x7306)
+(or x7487 x6642)
+(or x7370 (not x7306) (not x6642) (not x7487))
+(or x7470 x7307)
+(or x7470 x6642)
+(or (not x7307) (not x6642) (not x7470))
+(or (not x7470) (not x7487) x7488)
+(or (not x7488) x7470)
+(or (not x7488) x7487)
+(or (not x7308) (not x6642) x7387)
+(or (not x7387) x7308)
+(or (not x7387) x6642)
+(or x7489 (not x7387))
+(or x7489 (not x7488))
+(or x7387 x7488 (not x7489))
+(or x7473 x7308)
+(or x7473 x6642)
+(or (not x7308) (not x6642) (not x7473))
+(or x205 x7190)
+(or x205 x6642)
+(or (not x7190) (not x6642) (not x205))
+(or x204 x7184)
+(or x204 x6642)
+(or (not x7184) (not x6642) (not x204))
+(or (not x204) (not x205) x6598)
+(or (not x6598) x204)
+(or (not x6598) x205)
+(or (not x204) (not x205) (not x7473) (not x7489) (not x7184) (not x6642) x7490)
+(or (not x7490) x204)
+(or (not x7490) x205)
+(or (not x7490) x7473)
+(or (not x7490) x7489)
+(or (not x7490) x7184)
+(or (not x7490) x6642)
+(or x7491 (not x7490))
+(or x7491 (not x7486))
+(or x7491 (not x7483))
+(or x7490 x7486 x7483 (not x7491))
+(or (not x7491) (not x6642) x7492)
+(or (not x7492) x7491)
+(or (not x7492) x6642)
+(or x7493 (not x6643))
+(or x7493 (not x6642))
+(or x6643 x6642 (not x7493))
+(or x6643 x6642 x7494)
+(or (not x7494) (not x6643))
+(or (not x7494) (not x6642))
+(or x7495 (not x7494))
+(or x7495 (not x6643))
+(or x7495 x6642)
+(or x7494 x6643 (not x6642) (not x7495))
+(or (not x7496) (not x202))
+(or (not x7496) x201)
+(or (not x7496) (not x200))
+(or (not x7496) x199)
+(or (not x7496) x198)
+(or (not x7497) (not x202))
+(or (not x7497) x201)
+(or (not x7497) (not x200))
+(or (not x7497) x199)
+(or (not x7497) (not x198))
+(or (not x7498) (not x202))
+(or (not x7498) x201)
+(or (not x7498) (not x200))
+(or (not x7498) (not x199))
+(or (not x7498) x198)
+(or (not x7499) (not x202))
+(or (not x7499) x201)
+(or (not x7499) (not x200))
+(or (not x7499) (not x199))
+(or (not x7499) (not x198))
+(or (not x7500) (not x202))
+(or (not x7500) (not x201))
+(or (not x7500) x200)
+(or (not x7500) x199)
+(or (not x7500) x198)
+(or (not x7501) (not x202))
+(or (not x7501) (not x201))
+(or (not x7501) x200)
+(or (not x7501) x199)
+(or (not x7501) (not x198))
+(or (not x7502) (not x202))
+(or (not x7502) (not x201))
+(or (not x7502) x200)
+(or (not x7502) (not x199))
+(or (not x7502) x198)
+(or (not x7503) (not x202))
+(or (not x7503) (not x201))
+(or (not x7503) x200)
+(or (not x7503) (not x199))
+(or (not x7503) (not x198))
+(or (not x7504) (not x202))
+(or (not x7504) (not x201))
+(or (not x7504) (not x200))
+(or (not x7504) x199)
+(or (not x7504) x198)
+(or (not x7505) (not x202))
+(or (not x7505) (not x201))
+(or (not x7505) (not x200))
+(or (not x7505) x199)
+(or (not x7505) (not x198))
+(or x202 x201 x200 x199 (not x198) x6596)
+(or (not x6596) (not x202))
+(or (not x6596) (not x201))
+(or (not x6596) (not x200))
+(or (not x6596) (not x199))
+(or (not x6596) x198)
+(or (not x7506) (not x202))
+(or (not x7506) (not x201))
+(or (not x7506) (not x200))
+(or (not x7506) (not x199))
+(or (not x7506) (not x198))
+(or x7507 (not x7506))
+(or x7507 (not x6596))
+(or x7507 (not x7505))
+(or x7507 (not x7504))
+(or x7507 (not x7503))
+(or x7507 (not x7502))
+(or x7507 (not x7501))
+(or x7507 (not x7500))
+(or x7507 (not x7499))
+(or x7507 (not x7498))
+(or x7507 (not x7497))
+(or x7506 x6596 x7505 x7504 x7503 x7502 x7501 x7500 x7499 x7498 x7497 (not x7507))
+(or (not x7508) (not x7509) (not x7510) (not x7511) (not x7512) (not x7513) (not x7514) (not x7515) x7516)
+(or (not x7516) x7508)
+(or (not x7516) x7509)
+(or (not x7516) x7510)
+(or (not x7516) x7511)
+(or (not x7516) x7512)
+(or (not x7516) x7513)
+(or (not x7516) x7514)
+(or (not x7516) x7515)
+(or x7517 (not x7518))
+(or x7517 x7519)
+(or x7518 (not x7519) (not x7517))
+(or x7518 (not x7517) (not x7520) x7521)
+(or (not x7521) (not x7518))
+(or (not x7521) x7517)
+(or (not x7521) x7520)
+(or x7510 (not x7522))
+(or x7510 (not x7523))
+(or x7510 (not x221))
+(or x7510 (not x220))
+(or x7510 (not x219))
+(or x7510 x218)
+(or x7510 x217)
+(or x7510 (not x7524))
+(or x7510 (not x7521))
+(or x7522 x7523 x221 x220 x219 (not x218) (not x217) x7524 x7521 (not x7510))
+(or x7525 (not x7526))
+(or x7525 x7527)
+(or x7526 (not x7527) (not x7525))
+(or x7526 (not x7525) (not x7528) x7529)
+(or (not x7529) (not x7526))
+(or (not x7529) x7525)
+(or (not x7529) x7528)
+(or x7509 (not x7522))
+(or x7509 (not x221))
+(or x7509 (not x220))
+(or x7509 (not x219))
+(or x7509 x218)
+(or x7509 (not x217))
+(or x7509 (not x7530))
+(or x7509 (not x7524))
+(or x7509 (not x7529))
+(or x7522 x221 x220 x219 (not x218) x217 x7530 x7524 x7529 (not x7509))
+(or x7531 (not x7532) x7533)
+(or (not x7533) (not x7531))
+(or (not x7533) x7532)
+(or x7534 (not x221))
+(or x7534 (not x220))
+(or x7534 (not x219))
+(or x7534 (not x218))
+(or x7534 x217)
+(or x7534 (not x7533))
+(or x221 x220 x219 x218 (not x217) x7533 (not x7534))
+(or (not x7534) (not x7509) (not x7510) (not x7511) (not x7512) (not x7515) x7535)
+(or (not x7535) x7534)
+(or (not x7535) x7509)
+(or (not x7535) x7510)
+(or (not x7535) x7511)
+(or (not x7535) x7512)
+(or (not x7535) x7515)
+(or x7520 (not x7518))
+(or x7520 (not x7519))
+(or x7518 x7519 (not x7520))
+(or x7536 (not x7522))
+(or x7536 (not x7523))
+(or x7536 (not x221))
+(or x7536 (not x220))
+(or x7536 (not x219))
+(or x7536 x218)
+(or x7536 x217)
+(or x7536 (not x7524))
+(or x7536 (not x7518))
+(or x7536 (not x7519))
+(or x7522 x7523 x221 x220 x219 (not x218) (not x217) x7524 x7518 x7519 (not x7536))
+(or x7528 (not x7526))
+(or x7528 (not x7527))
+(or x7526 x7527 (not x7528))
+(or x7537 (not x7522))
+(or x7537 (not x221))
+(or x7537 (not x220))
+(or x7537 (not x219))
+(or x7537 x218)
+(or x7537 (not x217))
+(or x7537 (not x7530))
+(or x7537 (not x7524))
+(or x7537 (not x7526))
+(or x7537 (not x7527))
+(or x7522 x221 x220 x219 (not x218) x217 x7530 x7524 x7526 x7527 (not x7537))
+(or x7538 (not x7531))
+(or x7538 (not x7539))
+(or x7538 x7540)
+(or x7531 x7539 (not x7540) (not x7538))
+(or x7531 (not x7541) (not x7538) (not x7532) x7542)
+(or (not x7542) (not x7531))
+(or (not x7542) x7541)
+(or (not x7542) x7538)
+(or (not x7542) x7532)
+(or x7508 (not x221))
+(or x7508 (not x220))
+(or x7508 (not x219))
+(or x7508 (not x218))
+(or x7508 x217)
+(or x7508 (not x7542))
+(or x221 x220 x219 x218 (not x217) x7542 (not x7508))
+(or (not x7508) (not x7537) (not x7536) (not x7513) (not x7514) (not x7515) x7543)
+(or (not x7543) x7508)
+(or (not x7543) x7537)
+(or (not x7543) x7536)
+(or (not x7543) x7513)
+(or (not x7543) x7514)
+(or (not x7543) x7515)
+(or x7544 (not x7522))
+(or x7544 (not x7523))
+(or x7544 (not x7545))
+(or x7544 (not x7546))
+(or x7544 (not x7547))
+(or x7544 (not x7548))
+(or x7544 (not x221))
+(or x7544 x220)
+(or x7544 (not x219))
+(or x7544 (not x218))
+(or x7544 x217)
+(or x7544 (not x225))
+(or x7544 (not x226))
+(or x7544 (not x227))
+(or x7544 (not x228))
+(or x7544 (not x229))
+(or x7544 (not x230))
+(or x7544 (not x7549))
+(or x7544 (not x7550))
+(or x7544 (not x7551))
+(or x7522 x7523 x7545 x7546 x7547 x7548 x221 (not x220) x219 x218 (not x217) x225 x226 x227 x228 x229 x230 x7549 x7550 x7551 (not x7544))
+(or x7552 (not x7522))
+(or x7552 (not x7523))
+(or x7552 (not x7545))
+(or x7552 (not x7546))
+(or x7552 (not x7547))
+(or x7552 (not x221))
+(or x7552 x220)
+(or x7552 (not x219))
+(or x7552 (not x218))
+(or x7552 (not x217))
+(or x7552 (not x7530))
+(or x7552 (not x7549))
+(or x7552 (not x7550))
+(or x7552 (not x225))
+(or x7552 (not x226))
+(or x7552 (not x227))
+(or x7552 (not x228))
+(or x7552 (not x229))
+(or x7552 (not x230))
+(or x7552 (not x7549))
+(or x7552 (not x7550))
+(or x7552 (not x7553))
+(or x7522 x7523 x7545 x7546 x7547 x221 (not x220) x219 x218 x217 x7530 x7549 x7550 x225 x226 x227 x228 x229 x230 x7549 x7550 x7553 (not x7552))
+(or x7554 (not x7522))
+(or x7554 (not x7523))
+(or x7554 (not x7545))
+(or x7554 (not x7546))
+(or x7554 (not x221))
+(or x7554 (not x220))
+(or x7554 x219)
+(or x7554 (not x218))
+(or x7554 x217)
+(or x7554 (not x225))
+(or x7554 (not x226))
+(or x7554 (not x227))
+(or x7554 (not x228))
+(or x7554 (not x229))
+(or x7554 (not x230))
+(or x7554 (not x7549))
+(or x7554 (not x7550))
+(or x7554 (not x7555))
+(or x7522 x7523 x7545 x7546 x221 x220 (not x219) x218 (not x217) x225 x226 x227 x228 x229 x230 x7549 x7550 x7555 (not x7554))
+(or x7556 (not x7522))
+(or x7556 (not x7523))
+(or x7556 (not x7545))
+(or x7556 (not x221))
+(or x7556 (not x220))
+(or x7556 x219)
+(or x7556 (not x218))
+(or x7556 (not x217))
+(or x7556 (not x7549))
+(or x7556 (not x7550))
+(or x7556 (not x225))
+(or x7556 (not x226))
+(or x7556 (not x227))
+(or x7556 (not x228))
+(or x7556 (not x229))
+(or x7556 (not x230))
+(or x7556 (not x7549))
+(or x7556 (not x7550))
+(or x7556 (not x7557))
+(or x7522 x7523 x7545 x221 x220 (not x219) x218 x217 x7549 x7550 x225 x226 x227 x228 x229 x230 x7549 x7550 x7557 (not x7556))
+(or x7532 (not x7531))
+(or x7532 (not x7539))
+(or x7532 (not x7540))
+(or x7531 x7539 x7540 (not x7532))
+(or (not x7541) (not x7532) x7558)
+(or (not x7558) x7541)
+(or (not x7558) x7532)
+(or x7559 (not x221))
+(or x7559 (not x220))
+(or x7559 (not x219))
+(or x7559 (not x218))
+(or x7559 x217)
+(or x7559 (not x7558))
+(or x221 x220 x219 x218 (not x217) x7558 (not x7559))
+(or (not x7559) (not x7560) (not x7561) (not x7556) (not x7554) (not x7552) (not x7544) (not x7515) x7562)
+(or (not x7562) x7559)
+(or (not x7562) x7560)
+(or (not x7562) x7561)
+(or (not x7562) x7556)
+(or (not x7562) x7554)
+(or (not x7562) x7552)
+(or (not x7562) x7544)
+(or (not x7562) x7515)
+(or x221 (not x220) x219 x218 (not x217) x225 x226 x227 x228 x229 x230 (not x223) (not x224) x7563)
+(or (not x7563) (not x221))
+(or (not x7563) x220)
+(or (not x7563) (not x219))
+(or (not x7563) (not x218))
+(or (not x7563) x217)
+(or (not x7563) (not x225))
+(or (not x7563) (not x226))
+(or (not x7563) (not x227))
+(or (not x7563) (not x228))
+(or (not x7563) (not x229))
+(or (not x7563) (not x230))
+(or (not x7563) x223)
+(or (not x7563) x224)
+(or x7515 (not x7522))
+(or x7515 (not x7523))
+(or x7515 (not x7545))
+(or x7515 (not x7546))
+(or x7515 (not x7547))
+(or x7515 (not x7548))
+(or x7515 (not x7563))
+(or x7522 x7523 x7545 x7546 x7547 x7548 x7563 (not x7515))
+(or x221 (not x220) x219 x218 x217 (not x222) (not x223) (not x224) x225 x226 x227 x228 x229 x230 (not x223) (not x224) x7548)
+(or (not x7548) (not x221))
+(or (not x7548) x220)
+(or (not x7548) (not x219))
+(or (not x7548) (not x218))
+(or (not x7548) (not x217))
+(or (not x7548) x222)
+(or (not x7548) x223)
+(or (not x7548) x224)
+(or (not x7548) (not x225))
+(or (not x7548) (not x226))
+(or (not x7548) (not x227))
+(or (not x7548) (not x228))
+(or (not x7548) (not x229))
+(or (not x7548) (not x230))
+(or (not x7548) x223)
+(or (not x7548) x224)
+(or x7514 (not x7522))
+(or x7514 (not x7523))
+(or x7514 (not x7545))
+(or x7514 (not x7546))
+(or x7514 (not x7547))
+(or x7514 (not x7548))
+(or x7514 (not x221))
+(or x7514 x220)
+(or x7514 (not x219))
+(or x7514 (not x218))
+(or x7514 x217)
+(or x7514 (not x225))
+(or x7514 (not x226))
+(or x7514 (not x227))
+(or x7514 (not x228))
+(or x7514 (not x229))
+(or x7514 (not x230))
+(or x7514 (not x7549))
+(or x7514 (not x7550))
+(or x7522 x7523 x7545 x7546 x7547 x7548 x221 (not x220) x219 x218 (not x217) x225 x226 x227 x228 x229 x230 x7549 x7550 (not x7514))
+(or x7564 (not x7522))
+(or x7564 (not x7523))
+(or x7564 (not x7545))
+(or x7564 (not x7546))
+(or x7564 (not x7547))
+(or x7564 (not x7548))
+(or x7564 (not x221))
+(or x7564 x220)
+(or x7564 (not x219))
+(or x7564 (not x218))
+(or x7564 x217)
+(or x7564 (not x225))
+(or x7564 (not x226))
+(or x7564 (not x227))
+(or x7564 (not x228))
+(or x7564 (not x229))
+(or x7564 (not x230))
+(or x7564 (not x7549))
+(or x7564 (not x7550))
+(or x7564 x7551)
+(or x7522 x7523 x7545 x7546 x7547 x7548 x221 (not x220) x219 x218 (not x217) x225 x226 x227 x228 x229 x230 x7549 x7550 (not x7551) (not x7564))
+(or x221 x220 (not x219) x218 (not x217) x225 x226 x227 x228 x229 x230 (not x223) (not x224) x7547)
+(or (not x7547) (not x221))
+(or (not x7547) (not x220))
+(or (not x7547) x219)
+(or (not x7547) (not x218))
+(or (not x7547) x217)
+(or (not x7547) (not x225))
+(or (not x7547) (not x226))
+(or (not x7547) (not x227))
+(or (not x7547) (not x228))
+(or (not x7547) (not x229))
+(or (not x7547) (not x230))
+(or (not x7547) x223)
+(or (not x7547) x224)
+(or x7513 (not x7522))
+(or x7513 (not x7523))
+(or x7513 (not x7545))
+(or x7513 (not x7546))
+(or x7513 (not x7547))
+(or x7513 (not x221))
+(or x7513 x220)
+(or x7513 (not x219))
+(or x7513 (not x218))
+(or x7513 (not x217))
+(or x7513 (not x7530))
+(or x7513 (not x7549))
+(or x7513 (not x7550))
+(or x7513 (not x225))
+(or x7513 (not x226))
+(or x7513 (not x227))
+(or x7513 (not x228))
+(or x7513 (not x229))
+(or x7513 (not x230))
+(or x7513 (not x7549))
+(or x7513 (not x7550))
+(or x7522 x7523 x7545 x7546 x7547 x221 (not x220) x219 x218 x217 x7530 x7549 x7550 x225 x226 x227 x228 x229 x230 x7549 x7550 (not x7513))
+(or x7565 (not x7522))
+(or x7565 (not x7523))
+(or x7565 (not x7545))
+(or x7565 (not x7546))
+(or x7565 (not x7547))
+(or x7565 (not x221))
+(or x7565 x220)
+(or x7565 (not x219))
+(or x7565 (not x218))
+(or x7565 (not x217))
+(or x7565 (not x7530))
+(or x7565 (not x7549))
+(or x7565 (not x7550))
+(or x7565 (not x225))
+(or x7565 (not x226))
+(or x7565 (not x227))
+(or x7565 (not x228))
+(or x7565 (not x229))
+(or x7565 (not x230))
+(or x7565 (not x7549))
+(or x7565 (not x7550))
+(or x7565 x7553)
+(or x7522 x7523 x7545 x7546 x7547 x221 (not x220) x219 x218 x217 x7530 x7549 x7550 x225 x226 x227 x228 x229 x230 x7549 x7550 (not x7553) (not x7565))
+(or x221 x220 (not x219) x218 x217 (not x223) (not x224) x225 x226 x227 x228 x229 x230 (not x223) (not x224) x7546)
+(or (not x7546) (not x221))
+(or (not x7546) (not x220))
+(or (not x7546) x219)
+(or (not x7546) (not x218))
+(or (not x7546) (not x217))
+(or (not x7546) x223)
+(or (not x7546) x224)
+(or (not x7546) (not x225))
+(or (not x7546) (not x226))
+(or (not x7546) (not x227))
+(or (not x7546) (not x228))
+(or (not x7546) (not x229))
+(or (not x7546) (not x230))
+(or (not x7546) x223)
+(or (not x7546) x224)
+(or x7512 (not x7522))
+(or x7512 (not x7523))
+(or x7512 (not x7545))
+(or x7512 (not x7546))
+(or x7512 (not x221))
+(or x7512 (not x220))
+(or x7512 x219)
+(or x7512 (not x218))
+(or x7512 x217)
+(or x7512 (not x225))
+(or x7512 (not x226))
+(or x7512 (not x227))
+(or x7512 (not x228))
+(or x7512 (not x229))
+(or x7512 (not x230))
+(or x7512 (not x7549))
+(or x7512 (not x7550))
+(or x7522 x7523 x7545 x7546 x221 x220 (not x219) x218 (not x217) x225 x226 x227 x228 x229 x230 x7549 x7550 (not x7512))
+(or x7566 (not x7522))
+(or x7566 (not x7523))
+(or x7566 (not x7545))
+(or x7566 (not x7546))
+(or x7566 (not x221))
+(or x7566 (not x220))
+(or x7566 x219)
+(or x7566 (not x218))
+(or x7566 x217)
+(or x7566 (not x225))
+(or x7566 (not x226))
+(or x7566 (not x227))
+(or x7566 (not x228))
+(or x7566 (not x229))
+(or x7566 (not x230))
+(or x7566 (not x7549))
+(or x7566 (not x7550))
+(or x7566 x7555)
+(or x7522 x7523 x7545 x7546 x221 x220 (not x219) x218 (not x217) x225 x226 x227 x228 x229 x230 x7549 x7550 (not x7555) (not x7566))
+(or x221 x220 x219 (not x218) (not x217) (not x231) x7545)
+(or (not x7545) (not x221))
+(or (not x7545) (not x220))
+(or (not x7545) (not x219))
+(or (not x7545) x218)
+(or (not x7545) x217)
+(or (not x7545) x231)
+(or x7511 (not x7522))
+(or x7511 (not x7523))
+(or x7511 (not x7545))
+(or x7511 (not x221))
+(or x7511 (not x220))
+(or x7511 x219)
+(or x7511 (not x218))
+(or x7511 (not x217))
+(or x7511 (not x7549))
+(or x7511 (not x7550))
+(or x7511 (not x225))
+(or x7511 (not x226))
+(or x7511 (not x227))
+(or x7511 (not x228))
+(or x7511 (not x229))
+(or x7511 (not x230))
+(or x7511 (not x7549))
+(or x7511 (not x7550))
+(or x7522 x7523 x7545 x221 x220 (not x219) x218 x217 x7549 x7550 x225 x226 x227 x228 x229 x230 x7549 x7550 (not x7511))
+(or x7567 (not x7522))
+(or x7567 (not x7523))
+(or x7567 (not x7545))
+(or x7567 (not x221))
+(or x7567 (not x220))
+(or x7567 x219)
+(or x7567 (not x218))
+(or x7567 (not x217))
+(or x7567 (not x7549))
+(or x7567 (not x7550))
+(or x7567 (not x225))
+(or x7567 (not x226))
+(or x7567 (not x227))
+(or x7567 (not x228))
+(or x7567 (not x229))
+(or x7567 (not x230))
+(or x7567 (not x7549))
+(or x7567 (not x7550))
+(or x7567 x7557)
+(or x7522 x7523 x7545 x221 x220 (not x219) x218 x217 x7549 x7550 x225 x226 x227 x228 x229 x230 x7549 x7550 (not x7557) (not x7567))
+(or x222 x7568)
+(or x222 (not x7549))
+(or x222 (not x7550))
+(or (not x7568) x7549 x7550 (not x222))
+(or x221 x220 x219 (not x218) x217 (not x222) (not x231) x7523)
+(or (not x7523) (not x221))
+(or (not x7523) (not x220))
+(or (not x7523) (not x219))
+(or (not x7523) x218)
+(or (not x7523) (not x217))
+(or (not x7523) x222)
+(or (not x7523) x231)
+(or x7561 (not x7522))
+(or x7561 (not x7523))
+(or x7561 (not x221))
+(or x7561 (not x220))
+(or x7561 (not x219))
+(or x7561 x218)
+(or x7561 x217)
+(or x7561 (not x7524))
+(or x7561 x7518)
+(or x7522 x7523 x221 x220 x219 (not x218) (not x217) x7524 (not x7518) (not x7561))
+(or (not x7568) (not x223) (not x224) x7530)
+(or (not x7530) x7568)
+(or (not x7530) x223)
+(or (not x7530) x224)
+(or x7560 (not x7522))
+(or x7560 (not x221))
+(or x7560 (not x220))
+(or x7560 (not x219))
+(or x7560 x218)
+(or x7560 (not x217))
+(or x7560 (not x7530))
+(or x7560 (not x7524))
+(or x7560 x7526)
+(or x7522 x221 x220 x219 (not x218) x217 x7530 x7524 (not x7526) (not x7560))
+(or x7541 (not x7531))
+(or x7541 x7539)
+(or x7531 (not x7539) (not x7541))
+(or x7531 (not x7541) x7570)
+(or (not x7570) (not x7531))
+(or (not x7570) x7541)
+(or x7571 (not x221))
+(or x7571 (not x220))
+(or x7571 (not x219))
+(or x7571 (not x218))
+(or x7571 x217)
+(or x7571 (not x7570))
+(or x221 x220 x219 x218 (not x217) x7570 (not x7571))
+(or (not x7571) (not x7560) (not x7561) (not x7567) (not x7566) (not x7565) (not x7564) (not x7515) x7572)
+(or (not x7572) x7571)
+(or (not x7572) x7560)
+(or (not x7572) x7561)
+(or (not x7572) x7567)
+(or (not x7572) x7566)
+(or (not x7572) x7565)
+(or (not x7572) x7564)
+(or (not x7572) x7515)
+(or (not x7573) (not x7574) (not x7568) x7575)
+(or (not x7575) x7573)
+(or (not x7575) x7574)
+(or (not x7575) x7568)
+(or x7573 (not x7576) x7577)
+(or (not x7577) (not x7573))
+(or (not x7577) x7576)
+(or x7578 (not x7577))
+(or x7578 (not x7575))
+(or x7577 x7575 (not x7578))
+(or (not x7578) (not x7568) x7579)
+(or (not x7579) x7578)
+(or (not x7579) x7568)
+(or (not x7573) (not x7580) (not x7568) x7581)
+(or (not x7581) x7573)
+(or (not x7581) x7580)
+(or (not x7581) x7568)
+(or x7573 (not x7582) x7583)
+(or (not x7583) (not x7573))
+(or (not x7583) x7582)
+(or x7584 (not x7583))
+(or x7584 (not x7581))
+(or x7583 x7581 (not x7584))
+(or (not x7584) (not x7568) x7585)
+(or (not x7585) x7584)
+(or (not x7585) x7568)
+(or (not x7573) (not x7586) (not x7568) x7587)
+(or (not x7587) x7573)
+(or (not x7587) x7586)
+(or (not x7587) x7568)
+(or x7573 (not x7588) x7589)
+(or (not x7589) (not x7573))
+(or (not x7589) x7588)
+(or x7590 (not x7589))
+(or x7590 (not x7587))
+(or x7589 x7587 (not x7590))
+(or (not x7590) (not x7568) x7591)
+(or (not x7591) x7590)
+(or (not x7591) x7568)
+(or (not x7592) (not x7593) (not x7568) x7594)
+(or (not x7594) x7592)
+(or (not x7594) x7593)
+(or (not x7594) x7568)
+(or (not x7595) (not x226) x7596 x7597)
+(or (not x7597) x7595)
+(or (not x7597) x226)
+(or (not x7597) (not x7596))
+(or x7598 (not x7597))
+(or x7598 (not x7594))
+(or x7597 x7594 (not x7598))
+(or (not x7598) (not x7568) x7599)
+(or (not x7599) x7598)
+(or (not x7599) x7568)
+(or (not x7600) (not x7601) (not x7568) x7602)
+(or (not x7602) x7600)
+(or (not x7602) x7601)
+(or (not x7602) x7568)
+(or (not x7603) (not x225) x7604 x7605)
+(or (not x7605) x7603)
+(or (not x7605) x225)
+(or (not x7605) (not x7604))
+(or x7606 (not x7605))
+(or x7606 (not x7602))
+(or x7605 x7602 (not x7606))
+(or (not x7606) (not x7568) x7607)
+(or (not x7607) x7606)
+(or (not x7607) x7568)
+(or (not x7592) (not x7608) (not x7568) x7609)
+(or (not x7609) x7592)
+(or (not x7609) x7608)
+(or (not x7609) x7568)
+(or (not x7595) (not x226) x7610 x7611)
+(or (not x7611) x7595)
+(or (not x7611) x226)
+(or (not x7611) (not x7610))
+(or x7612 (not x7611))
+(or x7612 (not x7609))
+(or x7611 x7609 (not x7612))
+(or (not x7612) (not x7568) x7613)
+(or (not x7613) x7612)
+(or (not x7613) x7568)
+(or (not x7600) (not x7614) (not x7568) x7615)
+(or (not x7615) x7600)
+(or (not x7615) x7614)
+(or (not x7615) x7568)
+(or (not x7603) (not x225) x7616 x7617)
+(or (not x7617) x7603)
+(or (not x7617) x225)
+(or (not x7617) (not x7616))
+(or x7618 (not x7617))
+(or x7618 (not x7615))
+(or x7617 x7615 (not x7618))
+(or (not x7618) (not x7568) x7619)
+(or (not x7619) x7618)
+(or (not x7619) x7568)
+(or (not x7592) (not x7620) (not x7568) x7621)
+(or (not x7621) x7592)
+(or (not x7621) x7620)
+(or (not x7621) x7568)
+(or (not x7595) (not x226) x7622 x7623)
+(or (not x7623) x7595)
+(or (not x7623) x226)
+(or (not x7623) (not x7622))
+(or x7624 (not x7623))
+(or x7624 (not x7621))
+(or x7623 x7621 (not x7624))
+(or (not x7624) (not x7568) x7625)
+(or (not x7625) x7624)
+(or (not x7625) x7568)
+(or (not x7600) (not x7626) (not x7568) x7627)
+(or (not x7627) x7600)
+(or (not x7627) x7626)
+(or (not x7627) x7568)
+(or (not x7603) (not x225) x7628 x7629)
+(or (not x7629) x7603)
+(or (not x7629) x225)
+(or (not x7629) (not x7628))
+(or x7630 (not x7629))
+(or x7630 (not x7627))
+(or x7629 x7627 (not x7630))
+(or (not x7630) (not x7568) x7631)
+(or (not x7631) x7630)
+(or (not x7631) x7568)
+(or (not x7592) (not x7632) (not x7568) x7633)
+(or (not x7633) x7592)
+(or (not x7633) x7632)
+(or (not x7633) x7568)
+(or (not x7595) (not x226) (not x7634) x7635)
+(or (not x7635) x7595)
+(or (not x7635) x226)
+(or (not x7635) x7634)
+(or x7636 (not x7635))
+(or x7636 (not x7633))
+(or x7635 x7633 (not x7636))
+(or (not x7636) (not x7568) x7637)
+(or (not x7637) x7636)
+(or (not x7637) x7568)
+(or (not x7600) (not x7638) (not x7568) x7639)
+(or (not x7639) x7600)
+(or (not x7639) x7638)
+(or (not x7639) x7568)
+(or (not x7603) (not x225) (not x7640) x7641)
+(or (not x7641) x7603)
+(or (not x7641) x225)
+(or (not x7641) x7640)
+(or x7642 (not x7641))
+(or x7642 (not x7639))
+(or x7641 x7639 (not x7642))
+(or (not x7642) (not x7568) x7643)
+(or (not x7643) x7642)
+(or (not x7643) x7568)
+(or (not x7592) (not x7644) (not x7568) x7645)
+(or (not x7645) x7592)
+(or (not x7645) x7644)
+(or (not x7645) x7568)
+(or (not x7595) (not x226) x7646 x7647)
+(or (not x7647) x7595)
+(or (not x7647) x226)
+(or (not x7647) (not x7646))
+(or x7648 (not x7647))
+(or x7648 (not x7645))
+(or x7647 x7645 (not x7648))
+(or (not x7648) (not x7568) x7649)
+(or (not x7649) x7648)
+(or (not x7649) x7568)
+(or (not x7600) (not x7650) (not x7568) x7651)
+(or (not x7651) x7600)
+(or (not x7651) x7650)
+(or (not x7651) x7568)
+(or (not x7603) (not x225) x7652 x7653)
+(or (not x7653) x7603)
+(or (not x7653) x225)
+(or (not x7653) (not x7652))
+(or x7654 (not x7653))
+(or x7654 (not x7651))
+(or x7653 x7651 (not x7654))
+(or (not x7654) (not x7568) x7655)
+(or (not x7655) x7654)
+(or (not x7655) x7568)
+(or (not x7592) (not x7656) (not x7568) x7657)
+(or (not x7657) x7592)
+(or (not x7657) x7656)
+(or (not x7657) x7568)
+(or (not x7595) (not x226) x7658 x7659)
+(or (not x7659) x7595)
+(or (not x7659) x226)
+(or (not x7659) (not x7658))
+(or x7660 (not x7659))
+(or x7660 (not x7657))
+(or x7659 x7657 (not x7660))
+(or (not x7660) (not x7568) x7661)
+(or (not x7661) x7660)
+(or (not x7661) x7568)
+(or (not x7600) (not x7662) (not x7568) x7663)
+(or (not x7663) x7600)
+(or (not x7663) x7662)
+(or (not x7663) x7568)
+(or (not x7603) (not x225) x7664 x7665)
+(or (not x7665) x7603)
+(or (not x7665) x225)
+(or (not x7665) (not x7664))
+(or x7666 (not x7665))
+(or x7666 (not x7663))
+(or x7665 x7663 (not x7666))
+(or (not x7666) (not x7568) x7667)
+(or (not x7667) x7666)
+(or (not x7667) x7568)
+(or (not x7668) (not x7669) (not x7568) x7670)
+(or (not x7670) x7668)
+(or (not x7670) x7669)
+(or (not x7670) x7568)
+(or (not x7671) (not x228) (not x228) x7672)
+(or (not x7672) x7671)
+(or (not x7672) x228)
+(or x7673 (not x7672))
+(or x7673 (not x7670))
+(or x7672 x7670 (not x7673))
+(or (not x7673) (not x7568) x7674)
+(or (not x7674) x7673)
+(or (not x7674) x7568)
+(or (not x7675) (not x7676) (not x7568) x7677)
+(or (not x7677) x7675)
+(or (not x7677) x7676)
+(or (not x7677) x7568)
+(or (not x7678) (not x227) (not x227) x7679)
+(or (not x7679) x7678)
+(or (not x7679) x227)
+(or x7680 (not x7679))
+(or x7680 (not x7677))
+(or x7679 x7677 (not x7680))
+(or (not x7680) (not x7568) x7681)
+(or (not x7681) x7680)
+(or (not x7681) x7568)
+(or x7675 (not x7682))
+(or x7675 x227)
+(or x7682 (not x227) (not x7675))
+(or (not x7675) (not x7683) (not x7568) (not x7684) (not x7568) x7685)
+(or (not x7685) x7675)
+(or (not x7685) x7683)
+(or (not x7685) x7568)
+(or (not x7685) x7684)
+(or (not x7685) x7568)
+(or (not x7678) (not x227) x7686)
+(or (not x7686) x7678)
+(or (not x7686) x227)
+(or x7687 (not x7686))
+(or x7687 (not x7685))
+(or x7686 x7685 (not x7687))
+(or (not x7687) (not x7568) x7688)
+(or (not x7688) x7687)
+(or (not x7688) x7568)
+(or x7689 x7690)
+(or x7689 x7568)
+(or x7689 x7691)
+(or x7689 x7568)
+(or x7689 x7683)
+(or x7689 x7568)
+(or (not x7690) (not x7568) (not x7691) (not x7568) (not x7683) (not x7568) (not x7689))
+(or (not x7689) (not x7692) x7693)
+(or (not x7693) x7689)
+(or (not x7693) x7692)
+(or x7694 x7690)
+(or x7694 x7568)
+(or x7694 x7690)
+(or x7694 x7568)
+(or x7694 (not x7693))
+(or (not x7690) (not x7568) (not x7690) (not x7568) x7693 (not x7694))
+(or (not x7695) (not x7696) x7697)
+(or (not x7697) x7695)
+(or (not x7697) x7696)
+(or x7692 (not x7698))
+(or x7692 (not x7697))
+(or x7698 x7697 (not x7692))
+(or (not x7690) (not x7568) (not x7691) (not x7568) (not x7683) (not x7568) x7699)
+(or (not x7699) x7690)
+(or (not x7699) x7568)
+(or (not x7699) x7691)
+(or (not x7699) x7568)
+(or (not x7699) x7683)
+(or (not x7699) x7568)
+(or x7700 (not x7699))
+(or x7700 (not x7698))
+(or x7700 (not x7697))
+(or x7699 x7698 x7697 (not x7700))
+(or x7701 x7698 x7700)
+(or x7701 (not x7698) (not x7700))
+(or (not x7701) x7698 (not x7700))
+(or (not x7701) (not x7698) x7700)
+(or x7702 x7701 x7694)
+(or x7702 (not x7701) (not x7694))
+(or (not x7702) x7701 (not x7694))
+(or (not x7702) (not x7701) x7694)
+(or (not x7703) (not x7704) (not x7705) (not x7706) (not x7702) x7707)
+(or (not x7707) x7703)
+(or (not x7707) x7704)
+(or (not x7707) x7705)
+(or (not x7707) x7706)
+(or (not x7707) x7702)
+(or (not x7708) (not x7690) (not x7568) x7709)
+(or (not x7709) x7708)
+(or (not x7709) x7690)
+(or (not x7709) x7568)
+(or x7710 (not x7709))
+(or x7710 (not x7707))
+(or x7709 x7707 (not x7710))
+(or (not x7710) (not x7568) x7711)
+(or (not x7711) x7710)
+(or (not x7711) x7568)
+(or x7668 (not x7712))
+(or x7668 x228)
+(or x7712 (not x228) (not x7668))
+(or (not x7668) (not x7713) (not x7568) (not x7714) (not x7568) x7715)
+(or (not x7715) x7668)
+(or (not x7715) x7713)
+(or (not x7715) x7568)
+(or (not x7715) x7714)
+(or (not x7715) x7568)
+(or (not x7671) (not x228) x7716)
+(or (not x7716) x7671)
+(or (not x7716) x228)
+(or x7717 (not x7716))
+(or x7717 (not x7715))
+(or x7716 x7715 (not x7717))
+(or (not x7717) (not x7568) x7718)
+(or (not x7718) x7717)
+(or (not x7718) x7568)
+(or x7600 (not x7719))
+(or x7600 x225)
+(or x7719 (not x225) (not x7600))
+(or (not x7600) (not x7720) (not x7568) (not x7721) (not x7568) x7722)
+(or (not x7722) x7600)
+(or (not x7722) x7720)
+(or (not x7722) x7568)
+(or (not x7722) x7721)
+(or (not x7722) x7568)
+(or (not x7603) (not x225) x7723)
+(or (not x7723) x7603)
+(or (not x7723) x225)
+(or x7724 (not x7723))
+(or x7724 (not x7722))
+(or x7723 x7722 (not x7724))
+(or (not x7724) (not x7568) x7725)
+(or (not x7725) x7724)
+(or (not x7725) x7568)
+(or x7726 x7727)
+(or x7726 x7568)
+(or x7726 x7691)
+(or x7726 x7568)
+(or x7726 x7720)
+(or x7726 x7568)
+(or (not x7727) (not x7568) (not x7691) (not x7568) (not x7720) (not x7568) (not x7726))
+(or (not x7726) (not x7728) x7729)
+(or (not x7729) x7726)
+(or (not x7729) x7728)
+(or x7730 x7727)
+(or x7730 x7568)
+(or x7730 x7727)
+(or x7730 x7568)
+(or x7730 (not x7729))
+(or (not x7727) (not x7568) (not x7727) (not x7568) x7729 (not x7730))
+(or (not x7731) (not x7732) x7733)
+(or (not x7733) x7731)
+(or (not x7733) x7732)
+(or x7728 (not x7734))
+(or x7728 (not x7733))
+(or x7734 x7733 (not x7728))
+(or (not x7727) (not x7568) (not x7691) (not x7568) (not x7720) (not x7568) x7735)
+(or (not x7735) x7727)
+(or (not x7735) x7568)
+(or (not x7735) x7691)
+(or (not x7735) x7568)
+(or (not x7735) x7720)
+(or (not x7735) x7568)
+(or x7736 (not x7735))
+(or x7736 (not x7734))
+(or x7736 (not x7733))
+(or x7735 x7734 x7733 (not x7736))
+(or x7737 x7734 x7736)
+(or x7737 (not x7734) (not x7736))
+(or (not x7737) x7734 (not x7736))
+(or (not x7737) (not x7734) x7736)
+(or x7738 x7737 x7730)
+(or x7738 (not x7737) (not x7730))
+(or (not x7738) x7737 (not x7730))
+(or (not x7738) (not x7737) x7730)
+(or (not x7703) (not x7739) (not x7568) x7740 (not x7568) (not x7706) (not x7741) (not x7705) (not x7706) (not x7738) x7742)
+(or (not x7742) x7703)
+(or (not x7742) x7739)
+(or (not x7742) x7568)
+(or (not x7742) (not x7740))
+(or (not x7742) x7568)
+(or (not x7742) x7706)
+(or (not x7742) x7741)
+(or (not x7742) x7705)
+(or (not x7742) x7706)
+(or (not x7742) x7738)
+(or (not x7743) (not x7727) (not x7568) x7744)
+(or (not x7744) x7743)
+(or (not x7744) x7727)
+(or (not x7744) x7568)
+(or x7745 (not x7744))
+(or x7745 (not x7742))
+(or x7744 x7742 (not x7745))
+(or (not x7745) (not x7568) x7746)
+(or (not x7746) x7745)
+(or (not x7746) x7568)
+(or x7592 (not x7747))
+(or x7592 x226)
+(or x7747 (not x226) (not x7592))
+(or (not x7592) (not x7748) (not x7568) (not x7749) (not x7568) x7750)
+(or (not x7750) x7592)
+(or (not x7750) x7748)
+(or (not x7750) x7568)
+(or (not x7750) x7749)
+(or (not x7750) x7568)
+(or (not x7595) (not x226) x7751)
+(or (not x7751) x7595)
+(or (not x7751) x226)
+(or x7752 (not x7751))
+(or x7752 (not x7750))
+(or x7751 x7750 (not x7752))
+(or (not x7752) (not x7568) x7753)
+(or (not x7753) x7752)
+(or (not x7753) x7568)
+(or x7696 (not x7754))
+(or x7696 x7683)
+(or x7696 x7568)
+(or x7754 (not x7683) (not x7568) (not x7696))
+(or x7755 x7756)
+(or x7755 x7568)
+(or x7755 (not x7754))
+(or x7755 x7683)
+(or x7755 x7568)
+(or (not x7756) (not x7568) x7754 (not x7683) (not x7568) (not x7755))
+(or x7757 (not x7758))
+(or x7757 x7713)
+(or x7757 x7568)
+(or x7758 (not x7713) (not x7568) (not x7757))
+(or (not x7757) (not x7755) x7759)
+(or (not x7759) x7757)
+(or (not x7759) x7755)
+(or x7760 x7758 x7759)
+(or x7760 (not x7758) (not x7759))
+(or (not x7760) x7758 (not x7759))
+(or (not x7760) (not x7758) x7759)
+(or (not x7761) (not x7760) x7762)
+(or (not x7762) x7761)
+(or (not x7762) x7760)
+(or (not x7763) (not x7764) (not x7756) (not x7568) x7765)
+(or (not x7765) x7763)
+(or (not x7765) x7764)
+(or (not x7765) x7756)
+(or (not x7765) x7568)
+(or x7766 (not x7765))
+(or x7766 (not x7762))
+(or x7765 x7762 (not x7766))
+(or (not x7766) (not x7568) x7767)
+(or (not x7767) x7766)
+(or (not x7767) x7568)
+(or (not x7574) (not x7568) x7768)
+(or (not x7768) x7574)
+(or (not x7768) x7568)
+(or (not x7580) (not x7568) x7769)
+(or (not x7769) x7580)
+(or (not x7769) x7568)
+(or (not x7586) (not x7568) x7770)
+(or (not x7770) x7586)
+(or (not x7770) x7568)
+(or x7771 (not x7772))
+(or x7771 x7568)
+(or x7771 (not x7773))
+(or x7771 x7774)
+(or x7771 x7775)
+(or x7771 x7776)
+(or x7771 (not x7777))
+(or x7771 x7778)
+(or x7771 (not x7779))
+(or x7771 x7780)
+(or x7771 x7781)
+(or x7771 x7782)
+(or x7771 (not x7783))
+(or x7771 x7784)
+(or x7771 x7785)
+(or x7771 x7786)
+(or x7771 (not x7770))
+(or x7771 (not x7769))
+(or x7771 (not x7768))
+(or x7772 (not x7568) x7773 (not x7774) (not x7775) (not x7776) x7777 (not x7778) x7779 (not x7780) (not x7781) (not x7782) x7783 (not x7784) (not x7785) (not x7786) x7770 x7769 x7768 (not x7771))
+(or (not x7771) (not x7691) (not x7568) x7787)
+(or (not x7787) x7771)
+(or (not x7787) x7691)
+(or (not x7787) x7568)
+(or x7788 x7574)
+(or x7788 x7568)
+(or (not x7574) (not x7568) (not x7788))
+(or x7789 x7580)
+(or x7789 x7568)
+(or (not x7580) (not x7568) (not x7789))
+(or x7790 x7586)
+(or x7790 x7568)
+(or (not x7586) (not x7568) (not x7790))
+(or x7772 (not x7568) (not x7791) (not x7774) (not x7775) (not x7776) x7777 (not x7778) x7779 (not x7780) (not x7781) (not x7782) x7783 (not x7784) (not x7785) (not x7786) (not x7790) (not x7789) (not x7788) x7792 x7793)
+(or (not x7793) (not x7772))
+(or (not x7793) x7568)
+(or (not x7793) x7791)
+(or (not x7793) x7774)
+(or (not x7793) x7775)
+(or (not x7793) x7776)
+(or (not x7793) (not x7777))
+(or (not x7793) x7778)
+(or (not x7793) (not x7779))
+(or (not x7793) x7780)
+(or (not x7793) x7781)
+(or (not x7793) x7782)
+(or (not x7793) (not x7783))
+(or (not x7793) x7784)
+(or (not x7793) x7785)
+(or (not x7793) x7786)
+(or (not x7793) x7790)
+(or (not x7793) x7789)
+(or (not x7793) x7788)
+(or (not x7793) (not x7792))
+(or x7794 (not x7793))
+(or x7794 (not x7787))
+(or x7793 x7787 (not x7794))
+(or (not x7794) (not x7568) x7795)
+(or (not x7795) x7794)
+(or (not x7795) x7568)
+(or x7732 (not x7754))
+(or x7732 x7720)
+(or x7732 x7568)
+(or x7754 (not x7720) (not x7568) (not x7732))
+(or x7796 x7797)
+(or x7796 x7568)
+(or x7796 (not x7754))
+(or x7796 x7720)
+(or x7796 x7568)
+(or (not x7797) (not x7568) x7754 (not x7720) (not x7568) (not x7796))
+(or x7798 (not x7799))
+(or x7798 x7748)
+(or x7798 x7568)
+(or x7799 (not x7748) (not x7568) (not x7798))
+(or (not x7798) (not x7796) x7800)
+(or (not x7800) x7798)
+(or (not x7800) x7796)
+(or x7801 x7799 x7800)
+(or x7801 (not x7799) (not x7800))
+(or (not x7801) x7799 (not x7800))
+(or (not x7801) (not x7799) x7800)
+(or (not x7802) (not x7801) x7803)
+(or (not x7803) x7802)
+(or (not x7803) x7801)
+(or (not x7804) (not x7805) (not x7797) (not x7568) x7806)
+(or (not x7806) x7804)
+(or (not x7806) x7805)
+(or (not x7806) x7797)
+(or (not x7806) x7568)
+(or x7807 (not x7806))
+(or x7807 (not x7803))
+(or x7806 x7803 (not x7807))
+(or (not x7807) (not x7568) x7808)
+(or (not x7808) x7807)
+(or (not x7808) x7568)
+(or (not x7809) (not x7810) (not x7568) x7811)
+(or (not x7811) x7809)
+(or (not x7811) x7810)
+(or (not x7811) x7568)
+(or (not x7731) (not x7749) (not x7568) (not x7593) (not x7568) x7812)
+(or (not x7812) x7731)
+(or (not x7812) x7749)
+(or (not x7812) x7568)
+(or (not x7812) x7593)
+(or (not x7812) x7568)
+(or x7813 (not x7812))
+(or x7813 (not x7811))
+(or x7812 x7811 (not x7813))
+(or (not x7813) (not x7568) x7814)
+(or (not x7814) x7813)
+(or (not x7814) x7568)
+(or (not x7815) (not x7816) (not x7568) x7817)
+(or (not x7817) x7815)
+(or (not x7817) x7816)
+(or (not x7817) x7568)
+(or (not x7818) (not x7721) (not x7568) (not x7601) (not x7568) x7819)
+(or (not x7819) x7818)
+(or (not x7819) x7721)
+(or (not x7819) x7568)
+(or (not x7819) x7601)
+(or (not x7819) x7568)
+(or x7820 (not x7819))
+(or x7820 (not x7817))
+(or x7819 x7817 (not x7820))
+(or (not x7820) (not x7568) x7821)
+(or (not x7821) x7820)
+(or (not x7821) x7568)
+(or (not x7809) (not x7822) (not x7568) x7823)
+(or (not x7823) x7809)
+(or (not x7823) x7822)
+(or (not x7823) x7568)
+(or (not x7731) (not x7749) (not x7568) (not x7608) (not x7568) x7824)
+(or (not x7824) x7731)
+(or (not x7824) x7749)
+(or (not x7824) x7568)
+(or (not x7824) x7608)
+(or (not x7824) x7568)
+(or x7825 (not x7824))
+(or x7825 (not x7823))
+(or x7824 x7823 (not x7825))
+(or (not x7825) (not x7568) x7826)
+(or (not x7826) x7825)
+(or (not x7826) x7568)
+(or (not x7815) (not x7827) (not x7568) x7828)
+(or (not x7828) x7815)
+(or (not x7828) x7827)
+(or (not x7828) x7568)
+(or (not x7818) (not x7721) (not x7568) (not x7614) (not x7568) x7829)
+(or (not x7829) x7818)
+(or (not x7829) x7721)
+(or (not x7829) x7568)
+(or (not x7829) x7614)
+(or (not x7829) x7568)
+(or x7830 (not x7829))
+(or x7830 (not x7828))
+(or x7829 x7828 (not x7830))
+(or (not x7830) (not x7568) x7831)
+(or (not x7831) x7830)
+(or (not x7831) x7568)
+(or (not x7809) (not x7832) (not x7568) x7833)
+(or (not x7833) x7809)
+(or (not x7833) x7832)
+(or (not x7833) x7568)
+(or (not x7731) (not x7749) (not x7568) (not x7620) (not x7568) x7834)
+(or (not x7834) x7731)
+(or (not x7834) x7749)
+(or (not x7834) x7568)
+(or (not x7834) x7620)
+(or (not x7834) x7568)
+(or x7835 (not x7834))
+(or x7835 (not x7833))
+(or x7834 x7833 (not x7835))
+(or (not x7835) (not x7568) x7836)
+(or (not x7836) x7835)
+(or (not x7836) x7568)
+(or (not x7815) (not x7837) (not x7568) x7838)
+(or (not x7838) x7815)
+(or (not x7838) x7837)
+(or (not x7838) x7568)
+(or (not x7818) (not x7721) (not x7568) (not x7626) (not x7568) x7839)
+(or (not x7839) x7818)
+(or (not x7839) x7721)
+(or (not x7839) x7568)
+(or (not x7839) x7626)
+(or (not x7839) x7568)
+(or x7840 (not x7839))
+(or x7840 (not x7838))
+(or x7839 x7838 (not x7840))
+(or (not x7840) (not x7568) x7841)
+(or (not x7841) x7840)
+(or (not x7841) x7568)
+(or (not x7809) (not x7842) (not x7568) x7843)
+(or (not x7843) x7809)
+(or (not x7843) x7842)
+(or (not x7843) x7568)
+(or (not x7731) (not x7749) (not x7568) (not x7632) (not x7568) x7844)
+(or (not x7844) x7731)
+(or (not x7844) x7749)
+(or (not x7844) x7568)
+(or (not x7844) x7632)
+(or (not x7844) x7568)
+(or x7845 (not x7844))
+(or x7845 (not x7843))
+(or x7844 x7843 (not x7845))
+(or (not x7845) (not x7568) x7846)
+(or (not x7846) x7845)
+(or (not x7846) x7568)
+(or (not x7815) (not x7847) (not x7568) x7848)
+(or (not x7848) x7815)
+(or (not x7848) x7847)
+(or (not x7848) x7568)
+(or (not x7818) (not x7721) (not x7568) (not x7638) (not x7568) x7849)
+(or (not x7849) x7818)
+(or (not x7849) x7721)
+(or (not x7849) x7568)
+(or (not x7849) x7638)
+(or (not x7849) x7568)
+(or x7850 (not x7849))
+(or x7850 (not x7848))
+(or x7849 x7848 (not x7850))
+(or (not x7850) (not x7568) x7851)
+(or (not x7851) x7850)
+(or (not x7851) x7568)
+(or (not x7809) (not x7852) (not x7568) x7853)
+(or (not x7853) x7809)
+(or (not x7853) x7852)
+(or (not x7853) x7568)
+(or (not x7731) (not x7749) (not x7568) (not x7644) (not x7568) x7854)
+(or (not x7854) x7731)
+(or (not x7854) x7749)
+(or (not x7854) x7568)
+(or (not x7854) x7644)
+(or (not x7854) x7568)
+(or x7855 (not x7854))
+(or x7855 (not x7853))
+(or x7854 x7853 (not x7855))
+(or (not x7855) (not x7568) x7856)
+(or (not x7856) x7855)
+(or (not x7856) x7568)
+(or (not x7815) (not x7857) (not x7568) x7858)
+(or (not x7858) x7815)
+(or (not x7858) x7857)
+(or (not x7858) x7568)
+(or (not x7818) (not x7721) (not x7568) (not x7650) (not x7568) x7859)
+(or (not x7859) x7818)
+(or (not x7859) x7721)
+(or (not x7859) x7568)
+(or (not x7859) x7650)
+(or (not x7859) x7568)
+(or x7860 (not x7859))
+(or x7860 (not x7858))
+(or x7859 x7858 (not x7860))
+(or (not x7860) (not x7568) x7861)
+(or (not x7861) x7860)
+(or (not x7861) x7568)
+(or (not x7809) (not x7862) (not x7568) x7863)
+(or (not x7863) x7809)
+(or (not x7863) x7862)
+(or (not x7863) x7568)
+(or (not x7731) (not x7749) (not x7568) (not x7656) (not x7568) x7864)
+(or (not x7864) x7731)
+(or (not x7864) x7749)
+(or (not x7864) x7568)
+(or (not x7864) x7656)
+(or (not x7864) x7568)
+(or x7865 (not x7864))
+(or x7865 (not x7863))
+(or x7864 x7863 (not x7865))
+(or (not x7865) (not x7568) x7866)
+(or (not x7866) x7865)
+(or (not x7866) x7568)
+(or (not x7815) (not x7867) (not x7568) x7868)
+(or (not x7868) x7815)
+(or (not x7868) x7867)
+(or (not x7868) x7568)
+(or (not x7818) (not x7721) (not x7568) (not x7662) (not x7568) x7869)
+(or (not x7869) x7818)
+(or (not x7869) x7721)
+(or (not x7869) x7568)
+(or (not x7869) x7662)
+(or (not x7869) x7568)
+(or x7870 (not x7869))
+(or x7870 (not x7868))
+(or x7869 x7868 (not x7870))
+(or (not x7870) (not x7568) x7871)
+(or (not x7871) x7870)
+(or (not x7871) x7568)
+(or (not x7872) (not x7873) (not x7568) x7874)
+(or (not x7874) x7872)
+(or (not x7874) x7873)
+(or (not x7874) x7568)
+(or (not x7695) (not x7714) (not x7568) (not x7669) (not x7568) x7875)
+(or (not x7875) x7695)
+(or (not x7875) x7714)
+(or (not x7875) x7568)
+(or (not x7875) x7669)
+(or (not x7875) x7568)
+(or x7876 (not x7875))
+(or x7876 (not x7874))
+(or x7875 x7874 (not x7876))
+(or (not x7876) (not x7568) x7877)
+(or (not x7877) x7876)
+(or (not x7877) x7568)
+(or (not x7878) (not x7879) (not x7568) x7880)
+(or (not x7880) x7878)
+(or (not x7880) x7879)
+(or (not x7880) x7568)
+(or (not x7881) (not x7684) (not x7568) (not x7676) (not x7568) x7882)
+(or (not x7882) x7881)
+(or (not x7882) x7684)
+(or (not x7882) x7568)
+(or (not x7882) x7676)
+(or (not x7882) x7568)
+(or x7883 (not x7882))
+(or x7883 (not x7880))
+(or x7882 x7880 (not x7883))
+(or (not x7883) (not x7568) x7884)
+(or (not x7884) x7883)
+(or (not x7884) x7568)
+(or x7885 (not x7886))
+(or x7885 x7568)
+(or x7886 (not x7568) (not x7885))
+(or x7887 (not x7573))
+(or x7887 (not x7888))
+(or x7573 x7888 (not x7887))
+(or (not x7887) (not x7889) x7890)
+(or (not x7890) x7887)
+(or (not x7890) x7889)
+(or x7573 (not x7891) x7892 x7893)
+(or (not x7893) (not x7573))
+(or (not x7893) x7891)
+(or (not x7893) (not x7892))
+(or x7894 (not x7893))
+(or x7894 (not x7890))
+(or x7894 x7568)
+(or x7893 x7890 (not x7568) (not x7894))
+(or (not x7895) (not x7568) (not x7896) (not x7897) (not x7898) (not x7899) (not x7791) (not x7900) (not x7901) (not x7568) x7902)
+(or (not x7902) x7895)
+(or (not x7902) x7568)
+(or (not x7902) x7896)
+(or (not x7902) x7897)
+(or (not x7902) x7898)
+(or (not x7902) x7899)
+(or (not x7902) x7791)
+(or (not x7902) x7900)
+(or (not x7902) x7901)
+(or (not x7902) x7568)
+(or (not x7903) (not x7901) (not x7568) (not x7897) (not x7904) x7772 (not x7568) (not x7901) (not x7568) x7905)
+(or (not x7905) x7903)
+(or (not x7905) x7901)
+(or (not x7905) x7568)
+(or (not x7905) x7897)
+(or (not x7905) x7904)
+(or (not x7905) (not x7772))
+(or (not x7905) x7568)
+(or (not x7905) x7901)
+(or (not x7905) x7568)
+(or (not x7891) x7573 x7906)
+(or (not x7906) x7891)
+(or (not x7906) (not x7573))
+(or x7907 (not x7906))
+(or x7907 (not x7908))
+(or x7906 x7908 (not x7907))
+(or (not x7903) (not x7896) (not x7907) x7909)
+(or (not x7909) x7903)
+(or (not x7909) x7896)
+(or (not x7909) x7907)
+(or (not x7897) (not x7898) (not x7910) (not x7901) (not x7568) x7911)
+(or (not x7911) x7897)
+(or (not x7911) x7898)
+(or (not x7911) x7910)
+(or (not x7911) x7901)
+(or (not x7911) x7568)
+(or x7912 (not x7911))
+(or x7912 (not x7909))
+(or x7912 (not x7905))
+(or x7912 (not x7902))
+(or x7911 x7909 x7905 x7902 (not x7912))
+(or (not x7912) (not x7568) x7913)
+(or (not x7913) x7912)
+(or (not x7913) x7568)
+(or x7914 (not x7915))
+(or x7914 (not x7916))
+(or x7915 x7916 (not x7914))
+(or x7917 (not x7783))
+(or x7917 x7918)
+(or x7783 (not x7918) (not x7917))
+(or x7919 x7783)
+(or x7919 x7920)
+(or (not x7783) (not x7920) (not x7919))
+(or (not x7919) (not x7917) x7921)
+(or (not x7921) x7919)
+(or (not x7921) x7917)
+(or x7922 x7923)
+(or x7922 (not x7924))
+(or x7922 (not x7785))
+(or x7922 x7784)
+(or x7922 (not x7915))
+(or x7922 (not x7921))
+(or (not x7923) x7924 x7785 (not x7784) x7915 x7921 (not x7922))
+(or x7925 x7923)
+(or x7925 (not x7924))
+(or x7925 (not x7785))
+(or x7925 (not x7784))
+(or x7925 x7926)
+(or (not x7923) x7924 x7785 x7784 (not x7926) (not x7925))
+(or (not x7925) (not x7922) (not x7914) x7927)
+(or (not x7927) x7925)
+(or (not x7927) x7922)
+(or (not x7927) x7914)
+(or x7899 (not x7773))
+(or x7899 (not x7928))
+(or x7899 (not x7927))
+(or x7773 x7928 x7927 (not x7899))
+(or (not x7895) (not x7568) (not x7896) (not x7897) (not x7898) (not x7899) (not x7791) (not x7900) (not x7895) (not x7568) x7929)
+(or (not x7929) x7895)
+(or (not x7929) x7568)
+(or (not x7929) x7896)
+(or (not x7929) x7897)
+(or (not x7929) x7898)
+(or (not x7929) x7899)
+(or (not x7929) x7791)
+(or (not x7929) x7900)
+(or (not x7929) x7895)
+(or (not x7929) x7568)
+(or (not x7904) x7772 (not x7568) (not x7895) (not x7568) x7930)
+(or (not x7930) x7904)
+(or (not x7930) (not x7772))
+(or (not x7930) x7568)
+(or (not x7930) x7895)
+(or (not x7930) x7568)
+(or (not x7931) (not x7889) x7932)
+(or (not x7932) x7931)
+(or (not x7932) x7889)
+(or x7933 (not x7932))
+(or x7933 (not x7930))
+(or x7932 x7930 (not x7933))
+(or (not x7903) (not x7901) (not x7568) (not x7897) (not x7933) x7934)
+(or (not x7934) x7903)
+(or (not x7934) x7901)
+(or (not x7934) x7568)
+(or (not x7934) x7897)
+(or (not x7934) x7933)
+(or (not x7903) (not x7896) (not x7935) (not x7895) (not x7568) x7936)
+(or (not x7936) x7903)
+(or (not x7936) x7896)
+(or (not x7936) x7935)
+(or (not x7936) x7895)
+(or (not x7936) x7568)
+(or (not x7897) (not x7898) (not x7910) (not x7895) (not x7568) x7937)
+(or (not x7937) x7897)
+(or (not x7937) x7898)
+(or (not x7937) x7910)
+(or (not x7937) x7895)
+(or (not x7937) x7568)
+(or x7938 (not x7937))
+(or x7938 (not x7936))
+(or x7938 (not x7934))
+(or x7938 (not x7929))
+(or x7937 x7936 x7934 x7929 (not x7938))
+(or (not x7938) (not x7568) x7939)
+(or (not x7939) x7938)
+(or (not x7939) x7568)
+(or x7678 x7684)
+(or x7678 x7568)
+(or (not x7684) (not x7568) (not x7678))
+(or x7878 (not x7940))
+(or x7878 x7684)
+(or x7878 x7568)
+(or x7940 (not x7684) (not x7568) (not x7878))
+(or (not x7878) (not x7941) (not x7942) (not x7683) (not x7568) x7943)
+(or (not x7943) x7878)
+(or (not x7943) x7941)
+(or (not x7943) x7942)
+(or (not x7943) x7683)
+(or (not x7943) x7568)
+(or (not x7684) (not x7568) x7682)
+(or (not x7682) x7684)
+(or (not x7682) x7568)
+(or (not x7881) (not x7684) (not x7568) (not x7684) (not x7568) x7944)
+(or (not x7944) x7881)
+(or (not x7944) x7684)
+(or (not x7944) x7568)
+(or (not x7944) x7684)
+(or (not x7944) x7568)
+(or x7945 (not x7944))
+(or x7945 (not x7943))
+(or x7944 x7943 (not x7945))
+(or (not x7945) (not x7568) x7946)
+(or (not x7946) x7945)
+(or (not x7946) x7568)
+(or x7671 x7714)
+(or x7671 x7568)
+(or (not x7714) (not x7568) (not x7671))
+(or x7872 (not x7947))
+(or x7872 x7714)
+(or x7872 x7568)
+(or x7947 (not x7714) (not x7568) (not x7872))
+(or (not x7872) (not x7948) (not x7713) (not x7568) x7949)
+(or (not x7949) x7872)
+(or (not x7949) x7948)
+(or (not x7949) x7713)
+(or (not x7949) x7568)
+(or (not x7714) (not x7568) x7712)
+(or (not x7712) x7714)
+(or (not x7712) x7568)
+(or (not x7695) (not x7714) (not x7568) (not x7714) (not x7568) x7950)
+(or (not x7950) x7695)
+(or (not x7950) x7714)
+(or (not x7950) x7568)
+(or (not x7950) x7714)
+(or (not x7950) x7568)
+(or x7951 (not x7950))
+(or x7951 (not x7949))
+(or x7950 x7949 (not x7951))
+(or (not x7951) (not x7568) x7952)
+(or (not x7952) x7951)
+(or (not x7952) x7568)
+(or x7603 x7721)
+(or x7603 x7568)
+(or (not x7721) (not x7568) (not x7603))
+(or x7815 (not x7953))
+(or x7815 x7721)
+(or x7815 x7568)
+(or x7953 (not x7721) (not x7568) (not x7815))
+(or (not x7815) (not x7954) (not x7955) (not x7720) (not x7568) x7956)
+(or (not x7956) x7815)
+(or (not x7956) x7954)
+(or (not x7956) x7955)
+(or (not x7956) x7720)
+(or (not x7956) x7568)
+(or (not x7721) (not x7568) x7719)
+(or (not x7719) x7721)
+(or (not x7719) x7568)
+(or (not x7818) (not x7721) (not x7568) (not x7721) (not x7568) x7957)
+(or (not x7957) x7818)
+(or (not x7957) x7721)
+(or (not x7957) x7568)
+(or (not x7957) x7721)
+(or (not x7957) x7568)
+(or x7958 (not x7957))
+(or x7958 (not x7956))
+(or x7957 x7956 (not x7958))
+(or (not x7958) (not x7568) x7959)
+(or (not x7959) x7958)
+(or (not x7959) x7568)
+(or x7595 x7749)
+(or x7595 x7568)
+(or (not x7749) (not x7568) (not x7595))
+(or x7809 (not x7960))
+(or x7809 x7749)
+(or x7809 x7568)
+(or x7960 (not x7749) (not x7568) (not x7809))
+(or (not x7809) (not x7961) (not x7748) (not x7568) x7962)
+(or (not x7962) x7809)
+(or (not x7962) x7961)
+(or (not x7962) x7748)
+(or (not x7962) x7568)
+(or (not x7749) (not x7568) x7747)
+(or (not x7747) x7749)
+(or (not x7747) x7568)
+(or (not x7731) (not x7749) (not x7568) (not x7749) (not x7568) x7963)
+(or (not x7963) x7731)
+(or (not x7963) x7749)
+(or (not x7963) x7568)
+(or (not x7963) x7749)
+(or (not x7963) x7568)
+(or x7964 (not x7963))
+(or x7964 (not x7962))
+(or x7963 x7962 (not x7964))
+(or (not x7964) (not x7568) x7965)
+(or (not x7965) x7964)
+(or (not x7965) x7568)
+(or x230 (not x7966) (not x7568) (not x7967) (not x7568) x7968)
+(or (not x7968) (not x230))
+(or (not x7968) x7966)
+(or (not x7968) x7568)
+(or (not x7968) x7967)
+(or (not x7968) x7568)
+(or x7969 (not x7970))
+(or x7969 (not x7971))
+(or x7969 (not x7972))
+(or x7970 x7971 x7972 (not x7969))
+(or (not x230) (not x7969) x7973)
+(or (not x7973) x230)
+(or (not x7973) x7969)
+(or x7974 (not x7973))
+(or x7974 (not x7968))
+(or x7973 x7968 (not x7974))
+(or (not x7974) (not x7568) x7975)
+(or (not x7975) x7974)
+(or (not x7975) x7568)
+(or x229 (not x7976) (not x7568) (not x7977) (not x7568) x7978)
+(or (not x7978) (not x229))
+(or (not x7978) x7976)
+(or (not x7978) x7568)
+(or (not x7978) x7977)
+(or (not x7978) x7568)
+(or x7979 (not x7980))
+(or x7979 (not x7981))
+(or x7979 (not x7982))
+(or x7980 x7981 x7982 (not x7979))
+(or (not x229) (not x7979) x7983)
+(or (not x7983) x229)
+(or (not x7983) x7979)
+(or x7984 (not x7983))
+(or x7984 (not x7978))
+(or x7983 x7978 (not x7984))
+(or (not x7984) (not x7568) x7985)
+(or (not x7985) x7984)
+(or (not x7985) x7568)
+(or (not x7986) (not x7987) (not x7988) x7989)
+(or (not x7989) x7986)
+(or (not x7989) x7987)
+(or (not x7989) x7988)
+(or (not x7990) (not x7986) (not x7991) (not x7992) (not x7966) (not x7568) x7993)
+(or (not x7993) x7990)
+(or (not x7993) x7986)
+(or (not x7993) x7991)
+(or (not x7993) x7992)
+(or (not x7993) x7966)
+(or (not x7993) x7568)
+(or x7994 (not x7993))
+(or x7994 (not x7989))
+(or x7993 x7989 (not x7994))
+(or (not x7739) (not x7568) (not x7988) (not x7706) (not x7741) (not x7995) (not x7994) x7996)
+(or (not x7996) x7739)
+(or (not x7996) x7568)
+(or (not x7996) x7988)
+(or (not x7996) x7706)
+(or (not x7996) x7741)
+(or (not x7996) x7995)
+(or (not x7996) x7994)
+(or (not x7997) (not x7998) (not x7988) x7999)
+(or (not x7999) x7997)
+(or (not x7999) x7998)
+(or (not x7999) x7988)
+(or (not x7997) (not x8000) (not x8001) (not x8002) (not x7966) (not x7568) x8003)
+(or (not x8003) x7997)
+(or (not x8003) x8000)
+(or (not x8003) x8001)
+(or (not x8003) x8002)
+(or (not x8003) x7966)
+(or (not x8003) x7568)
+(or x8004 (not x8005))
+(or x8004 (not x8003))
+(or x8005 x8003 (not x8004))
+(or (not x8006) (not x8004) x8007)
+(or (not x8007) x8006)
+(or (not x8007) x8004)
+(or x8008 (not x8007))
+(or x8008 (not x7999))
+(or x8007 x7999 (not x8008))
+(or (not x7739) (not x7568) x7740 (not x7568) (not x7706) (not x7741) (not x8008) x8009)
+(or (not x8009) x7739)
+(or (not x8009) x7568)
+(or (not x8009) (not x7740))
+(or (not x8009) x7568)
+(or (not x8009) x7706)
+(or (not x8009) x7741)
+(or (not x8009) x8008)
+(or (not x7731) (not x7818) (not x8010) (not x7988) x8011)
+(or (not x8011) x7731)
+(or (not x8011) x7818)
+(or (not x8011) x8010)
+(or (not x8011) x7988)
+(or (not x8012) (not x7731) (not x7818) (not x8013) (not x8014) x8015)
+(or (not x8015) x8012)
+(or (not x8015) x7731)
+(or (not x8015) x7818)
+(or (not x8015) x8013)
+(or (not x8015) x8014)
+(or x8016 (not x8015))
+(or x8016 (not x8011))
+(or x8015 x8011 (not x8016))
+(or (not x8017) (not x7988) (not x7706) (not x8016) x8018)
+(or (not x8018) x8017)
+(or (not x8018) x7988)
+(or (not x8018) x7706)
+(or (not x8018) x8016)
+(or (not x8019) (not x8020) (not x7988) x8021)
+(or (not x8021) x8019)
+(or (not x8021) x8020)
+(or (not x8021) x7988)
+(or (not x8019) (not x8022) (not x7731) (not x7818) (not x8014) x8023)
+(or (not x8023) x8019)
+(or (not x8023) x8022)
+(or (not x8023) x7731)
+(or (not x8023) x7818)
+(or (not x8023) x8014)
+(or x8024 (not x8025))
+(or x8024 (not x8023))
+(or x8025 x8023 (not x8024))
+(or (not x8026) (not x8024) x8027)
+(or (not x8027) x8026)
+(or (not x8027) x8024)
+(or x8028 (not x8027))
+(or x8028 (not x8021))
+(or x8027 x8021 (not x8028))
+(or (not x8017) x7740 (not x7568) (not x8028) x8029)
+(or (not x8029) x8017)
+(or (not x8029) (not x7740))
+(or (not x8029) x7568)
+(or (not x8029) x8028)
+(or x8030 (not x8029))
+(or x8030 (not x8018))
+(or x8030 (not x8009))
+(or x8030 (not x7996))
+(or x8030 x7568)
+(or x8029 x8018 x8009 x7996 (not x7568) (not x8030))
+(or x8031 (not x8032))
+(or x8031 (not x8033))
+(or x8031 (not x8034))
+(or x8032 x8033 x8034 (not x8031))
+(or (not x8035) (not x8031) x8036)
+(or (not x8036) x8035)
+(or (not x8036) x8031)
+(or x7987 (not x8037))
+(or x7987 (not x8036))
+(or x8037 x8036 (not x7987))
+(or (not x7986) (not x7987) (not x7739) (not x7568) x8038)
+(or (not x8038) x7986)
+(or (not x8038) x7987)
+(or (not x8038) x7739)
+(or (not x8038) x7568)
+(or x8035 (not x8033))
+(or x8035 x7966)
+(or x8035 x7568)
+(or x8033 (not x7966) (not x7568) (not x8035))
+(or (not x8035) (not x7992) (not x8039) x8040)
+(or (not x8040) x8035)
+(or (not x8040) x7992)
+(or (not x8040) x8039)
+(or (not x7992) (not x7966) (not x7568) x8032)
+(or (not x8032) x7992)
+(or (not x8032) x7966)
+(or (not x8032) x7568)
+(or x7991 (not x8032))
+(or x7991 (not x8040))
+(or x8032 x8040 (not x7991))
+(or x7942 (not x7754))
+(or x7942 (not x8041))
+(or x7942 (not x7758))
+(or x7754 x8041 x7758 (not x7942))
+(or x7941 x7691)
+(or x7941 x7568)
+(or x7941 (not x8042))
+(or x7941 (not x8043))
+(or x7941 (not x8044))
+(or x7941 (not x8045))
+(or x7941 (not x7698))
+(or (not x7691) (not x7568) x8042 x8043 x8044 x8045 x7698 (not x7941))
+(or (not x7941) (not x7942) x8046)
+(or (not x8046) x7941)
+(or (not x8046) x7942)
+(or x8047 (not x8046))
+(or x8047 x7683)
+(or x8047 x7568)
+(or x8046 (not x7683) (not x7568) (not x8047))
+(or x7764 (not x7754))
+(or x7764 (not x8042))
+(or x7764 (not x8043))
+(or x7764 (not x8044))
+(or x7764 (not x8045))
+(or x7754 x8042 x8043 x8044 x8045 (not x7764))
+(or x7763 x7691)
+(or x7763 x7568)
+(or x7763 (not x8042))
+(or x7763 (not x8043))
+(or x7763 (not x8044))
+(or x7763 (not x8045))
+(or x7763 x7690)
+(or x7763 x7568)
+(or (not x7691) (not x7568) x8042 x8043 x8044 x8045 (not x7690) (not x7568) (not x7763))
+(or (not x7763) (not x7764) x8041)
+(or (not x8041) x7763)
+(or (not x8041) x7764)
+(or x7948 (not x8041))
+(or x7948 x7756)
+(or x7948 x7568)
+(or x8041 (not x7756) (not x7568) (not x7948))
+(or x8048 (not x8041))
+(or x8048 x7756)
+(or x8048 x7568)
+(or x8048 x7713)
+(or x8048 x7568)
+(or x8041 (not x7756) (not x7568) (not x7713) (not x7568) (not x8048))
+(or (not x8014) (not x8048) (not x8047) x8033)
+(or (not x8033) x8014)
+(or (not x8033) x8048)
+(or (not x8033) x8047)
+(or x7986 (not x8033))
+(or x7986 x7976)
+(or x7986 x7568)
+(or x8033 (not x7976) (not x7568) (not x7986))
+(or (not x7986) (not x7991) x8049)
+(or (not x8049) x7986)
+(or (not x8049) x7991)
+(or x7992 (not x8050))
+(or x7992 (not x8051))
+(or x7992 (not x8052))
+(or x8050 x8051 x8052 (not x7992))
+(or (not x7992) (not x7976) (not x7568) x8037)
+(or (not x8037) x7992)
+(or (not x8037) x7976)
+(or (not x8037) x7568)
+(or x7990 (not x8037))
+(or x7990 (not x8049))
+(or x8037 x8049 (not x7990))
+(or (not x7990) (not x7986) (not x7991) (not x8035) (not x7992) (not x8039) x8053)
+(or (not x8053) x7990)
+(or (not x8053) x7986)
+(or (not x8053) x7991)
+(or (not x8053) x8035)
+(or (not x8053) x7992)
+(or (not x8053) x8039)
+(or x8054 (not x8053))
+(or x8054 (not x8038))
+(or x8053 x8038 (not x8054))
+(or (not x7739) (not x7568) (not x7988) (not x7706) (not x7741) (not x7995) (not x8054) x8055)
+(or (not x8055) x7739)
+(or (not x8055) x7568)
+(or (not x8055) x7988)
+(or (not x8055) x7706)
+(or (not x8055) x7741)
+(or (not x8055) x7995)
+(or (not x8055) x8054)
+(or x8056 (not x8057))
+(or x8056 (not x8058))
+(or x8056 x7966)
+(or x8056 x7568)
+(or x8057 x8058 (not x7966) (not x7568) (not x8056))
+(or (not x8001) (not x8056) x8059)
+(or (not x8059) x8001)
+(or (not x8059) x8056)
+(or x7998 (not x8005))
+(or x7998 (not x8059))
+(or x8005 x8059 (not x7998))
+(or (not x7997) (not x7998) (not x7739) (not x7568) x8060)
+(or (not x8060) x7997)
+(or (not x8060) x7998)
+(or (not x8060) x7739)
+(or (not x8060) x7568)
+(or x8001 (not x8058))
+(or x8001 x7976)
+(or x8001 x7568)
+(or x8058 (not x7976) (not x7568) (not x8001))
+(or (not x8001) (not x8002) (not x7966) (not x7568) x8061)
+(or (not x8061) x8001)
+(or (not x8061) x8002)
+(or (not x8061) x7966)
+(or (not x8061) x7568)
+(or (not x8002) (not x7976) (not x7568) x8057)
+(or (not x8057) x8002)
+(or (not x8057) x7976)
+(or (not x8057) x7568)
+(or x8000 (not x8057))
+(or x8000 (not x8061))
+(or x8057 x8061 (not x8000))
+(or x7955 (not x7754))
+(or x7955 (not x8062))
+(or x7955 (not x7799))
+(or x7754 x8062 x7799 (not x7955))
+(or x7954 x7691)
+(or x7954 x7568)
+(or x7954 (not x8042))
+(or x7954 x7739)
+(or x7954 x7568)
+(or x7954 (not x7740))
+(or x7954 x7568)
+(or x7954 (not x8045))
+(or x7954 (not x8063))
+(or x7954 (not x8044))
+(or x7954 (not x8045))
+(or x7954 (not x7734))
+(or (not x7691) (not x7568) x8042 (not x7739) (not x7568) x7740 (not x7568) x8045 x8063 x8044 x8045 x7734 (not x7954))
+(or (not x7954) (not x7955) x8064)
+(or (not x8064) x7954)
+(or (not x8064) x7955)
+(or x8065 (not x8064))
+(or x8065 x7720)
+(or x8065 x7568)
+(or x8064 (not x7720) (not x7568) (not x8065))
+(or x7805 (not x7754))
+(or x7805 (not x8042))
+(or x7805 x7739)
+(or x7805 x7568)
+(or x7805 (not x7740))
+(or x7805 x7568)
+(or x7805 (not x8045))
+(or x7805 (not x8063))
+(or x7805 (not x8044))
+(or x7805 (not x8045))
+(or x7754 x8042 (not x7739) (not x7568) x7740 (not x7568) x8045 x8063 x8044 x8045 (not x7805))
+(or x7804 x7691)
+(or x7804 x7568)
+(or x7804 (not x8042))
+(or x7804 x7739)
+(or x7804 x7568)
+(or x7804 (not x7740))
+(or x7804 x7568)
+(or x7804 (not x8045))
+(or x7804 (not x8063))
+(or x7804 (not x8044))
+(or x7804 (not x8045))
+(or x7804 x7727)
+(or x7804 x7568)
+(or (not x7691) (not x7568) x8042 (not x7739) (not x7568) x7740 (not x7568) x8045 x8063 x8044 x8045 (not x7727) (not x7568) (not x7804))
+(or (not x7804) (not x7805) x8062)
+(or (not x8062) x7804)
+(or (not x8062) x7805)
+(or x7961 (not x8062))
+(or x7961 x7797)
+(or x7961 x7568)
+(or x8062 (not x7797) (not x7568) (not x7961))
+(or x8066 (not x8062))
+(or x8066 x7797)
+(or x8066 x7568)
+(or x8066 x7748)
+(or x8066 x7568)
+(or x8062 (not x7797) (not x7568) (not x7748) (not x7568) (not x8066))
+(or (not x8039) (not x8066) (not x8065) x8058)
+(or (not x8058) x8039)
+(or (not x8058) x8066)
+(or (not x8058) x8065)
+(or x7997 (not x8058))
+(or x7997 (not x8050))
+(or x8058 x8050 (not x7997))
+(or (not x7997) (not x8000) x8067)
+(or (not x8067) x7997)
+(or (not x8067) x8000)
+(or x8002 (not x8034))
+(or x8002 (not x8068))
+(or x8002 (not x8069))
+(or x8034 x8068 x8069 (not x8002))
+(or (not x8002) (not x8014) x8005)
+(or (not x8005) x8002)
+(or (not x8005) x8014)
+(or x8006 (not x8005))
+(or x8006 (not x8067))
+(or x8005 x8067 (not x8006))
+(or (not x8006) (not x8002) (not x8014) x8070)
+(or (not x8070) x8006)
+(or (not x8070) x8002)
+(or (not x8070) x8014)
+(or x8071 (not x8070))
+(or x8071 (not x8060))
+(or x8070 x8060 (not x8071))
+(or (not x7739) (not x7568) x7740 (not x7568) (not x7706) (not x7741) (not x8071) x8072)
+(or (not x8072) x7739)
+(or (not x8072) x7568)
+(or (not x8072) (not x7740))
+(or (not x8072) x7568)
+(or (not x8072) x7706)
+(or (not x8072) x7741)
+(or (not x8072) x8071)
+(or x8073 (not x7947))
+(or x8073 (not x7940))
+(or x8073 x7976)
+(or x8073 x7568)
+(or x7947 x7940 (not x7976) (not x7568) (not x8073))
+(or (not x7695) (not x7881) (not x8073) x8074)
+(or (not x8074) x7695)
+(or (not x8074) x7881)
+(or (not x8074) x8073)
+(or x8010 (not x7960))
+(or x8010 (not x7953))
+(or x8010 (not x8074))
+(or x7960 x7953 x8074 (not x8010))
+(or (not x7731) (not x7818) (not x8010) (not x7739) (not x7568) x8075)
+(or (not x8075) x7731)
+(or (not x8075) x7818)
+(or (not x8075) x8010)
+(or (not x8075) x7739)
+(or (not x8075) x7568)
+(or (not x7731) (not x7818) (not x8013) (not x8014) x8076)
+(or (not x8076) x7731)
+(or (not x8076) x7818)
+(or (not x8076) x8013)
+(or (not x8076) x8014)
+(or x8077 (not x7960))
+(or x8077 (not x7953))
+(or x8077 (not x8076))
+(or x7960 x7953 x8076 (not x8077))
+(or (not x7695) (not x7881) (not x7976) (not x7568) x8078)
+(or (not x8078) x7695)
+(or (not x8078) x7881)
+(or (not x8078) x7976)
+(or (not x8078) x7568)
+(or x8013 (not x7947))
+(or x8013 (not x7940))
+(or x8013 (not x8078))
+(or x7947 x7940 x8078 (not x8013))
+(or (not x7731) (not x7818) (not x8013) x8079)
+(or (not x8079) x7731)
+(or (not x8079) x7818)
+(or (not x8079) x8013)
+(or x8012 (not x7960))
+(or x8012 (not x7953))
+(or x8012 (not x8079))
+(or x7960 x7953 x8079 (not x8012))
+(or (not x8012) (not x8077) x8080)
+(or (not x8080) x8012)
+(or (not x8080) x8077)
+(or x8081 (not x8080))
+(or x8081 (not x8075))
+(or x8080 x8075 (not x8081))
+(or (not x8017) (not x7988) (not x7706) (not x8081) x8082)
+(or (not x8082) x8017)
+(or (not x8082) x7988)
+(or (not x8082) x7706)
+(or (not x8082) x8081)
+(or x7881 x7683)
+(or x7881 x7568)
+(or (not x7683) (not x7568) (not x7881))
+(or x7695 x7713)
+(or x7695 x7568)
+(or (not x7713) (not x7568) (not x7695))
+(or (not x7695) (not x7881) x8050)
+(or (not x8050) x7695)
+(or (not x8050) x7881)
+(or x8083 (not x7960))
+(or x8083 (not x7953))
+(or x8083 (not x8050))
+(or x7960 x7953 x8050 (not x8083))
+(or (not x7731) (not x7818) (not x8083) x8084)
+(or (not x8084) x7731)
+(or (not x8084) x7818)
+(or (not x8084) x8083)
+(or x8020 (not x8025))
+(or x8020 (not x8084))
+(or x8025 x8084 (not x8020))
+(or (not x8019) (not x8020) (not x7739) (not x7568) x8085)
+(or (not x8085) x8019)
+(or (not x8085) x8020)
+(or (not x8085) x7739)
+(or (not x8085) x7568)
+(or x8014 (not x7947))
+(or x8014 (not x7940))
+(or x7947 x7940 (not x8014))
+(or x7818 x7720)
+(or x7818 x7568)
+(or (not x7720) (not x7568) (not x7818))
+(or x7731 x7748)
+(or x7731 x7568)
+(or (not x7748) (not x7568) (not x7731))
+(or (not x7731) (not x7818) x8034)
+(or (not x8034) x7731)
+(or (not x8034) x7818)
+(or (not x7731) (not x7818) (not x8014) x8086)
+(or (not x8086) x7731)
+(or (not x8086) x7818)
+(or (not x8086) x8014)
+(or x8039 (not x7960))
+(or x8039 (not x7953))
+(or x7960 x7953 (not x8039))
+(or x8022 (not x7960))
+(or x8022 (not x7953))
+(or x8022 (not x8086))
+(or x7960 x7953 x8086 (not x8022))
+(or x8019 x7966)
+(or x8019 x7568)
+(or (not x7966) (not x7568) (not x8019))
+(or (not x8019) (not x8022) x8087)
+(or (not x8087) x8019)
+(or (not x8087) x8022)
+(or x8026 (not x8025))
+(or x8026 (not x8087))
+(or x8025 x8087 (not x8026))
+(or (not x8026) (not x8019) (not x8022) x8088)
+(or (not x8088) x8026)
+(or (not x8088) x8019)
+(or (not x8088) x8022)
+(or x8089 (not x8088))
+(or x8089 (not x8085))
+(or x8088 x8085 (not x8089))
+(or (not x8017) x7740 (not x7568) (not x8089) x8090)
+(or (not x8090) x8017)
+(or (not x8090) (not x7740))
+(or (not x8090) x7568)
+(or (not x8090) x8089)
+(or x8091 (not x8090))
+(or x8091 (not x8082))
+(or x8091 (not x8072))
+(or x8091 (not x8055))
+(or x8090 x8082 x8072 x8055 (not x8091))
+(or (not x8091) (not x7568) x8092)
+(or (not x8092) x8091)
+(or (not x8092) x7568)
+(or x8093 x7967)
+(or x8093 x7568)
+(or (not x7967) (not x7568) (not x8093))
+(or (not x8093) (not x7705) (not x7966) (not x7568) x8094)
+(or (not x8094) x8093)
+(or (not x8094) x7705)
+(or (not x8094) x7966)
+(or (not x8094) x7568)
+(or (not x7967) (not x7568) x8095)
+(or (not x8095) x7967)
+(or (not x8095) x7568)
+(or x8096 (not x8095))
+(or x8096 (not x8094))
+(or x8095 x8094 (not x8096))
+(or (not x8096) (not x7568) x8097)
+(or (not x8097) x8096)
+(or (not x8097) x7568)
+(or (not x8098) (not x8099) x8100)
+(or (not x8100) x8098)
+(or (not x8100) x8099)
+(or x8098 (not x8101) (not x8102) x8103)
+(or (not x8103) (not x8098))
+(or (not x8103) x8101)
+(or (not x8103) x8102)
+(or x8104 (not x8103))
+(or x8104 (not x8100))
+(or x8103 x8100 (not x8104))
+(or (not x8105) (not x7568) (not x8106) (not x8107) (not x8108) (not x8104) x8109)
+(or (not x8109) x8105)
+(or (not x8109) x7568)
+(or (not x8109) x8106)
+(or (not x8109) x8107)
+(or (not x8109) x8108)
+(or (not x8109) x8104)
+(or x8102 x8110)
+(or x8102 x7568)
+(or x8102 (not x7550))
+(or x8102 (not x7524))
+(or x8102 (not x8111))
+(or x8102 (not x8112))
+(or x8102 (not x8113))
+(or x8102 (not x8114))
+(or x8102 (not x8115))
+(or (not x8110) (not x7568) x7550 x7524 x8111 x8112 x8113 x8114 x8115 (not x8102))
+(or x8101 (not x7549))
+(or x8101 x8116)
+(or x8101 x7568)
+(or x8101 (not x7524))
+(or x8101 (not x8117))
+(or x8101 x8118)
+(or x8101 x7568)
+(or x8101 (not x8119))
+(or x8101 (not x8120))
+(or x8101 (not x8112))
+(or x8101 (not x8113))
+(or x8101 (not x8114))
+(or x7549 (not x8116) (not x7568) x7524 x8117 (not x8118) (not x7568) x8119 x8120 x8112 x8113 x8114 (not x8101))
+(or x8120 (not x8101) (not x8102) x8121)
+(or (not x8121) (not x8120))
+(or (not x8121) x8101)
+(or (not x8121) x8102)
+(or x8122 (not x8121))
+(or x8122 (not x8120))
+(or x8121 x8120 (not x8122))
+(or (not x8123) (not x8118) (not x7568) (not x8107) (not x8122) x8124)
+(or (not x8124) x8123)
+(or (not x8124) x8118)
+(or (not x8124) x7568)
+(or (not x8124) x8107)
+(or (not x8124) x8122)
+(or x8125 (not x8126))
+(or x8125 (not x8119))
+(or x8125 (not x8124))
+(or x8125 (not x8109))
+(or x8126 x8119 x8124 x8109 (not x8125))
+(or (not x8127) (not x7568) (not x8125) x8128)
+(or (not x8128) x8127)
+(or (not x8128) x7568)
+(or (not x8128) x8125)
+(or x8129 (not x8128))
+(or x8129 x7568)
+(or x8128 (not x7568) (not x8129))
+(or x8130 x7977)
+(or x8130 x7568)
+(or (not x7977) (not x7568) (not x8130))
+(or (not x8130) (not x7706) (not x7976) (not x7568) x8131)
+(or (not x8131) x8130)
+(or (not x8131) x7706)
+(or (not x8131) x7976)
+(or (not x8131) x7568)
+(or (not x7977) (not x7568) x8132)
+(or (not x8132) x7977)
+(or (not x8132) x7568)
+(or x8133 (not x8132))
+(or x8133 (not x8131))
+(or x8132 x8131 (not x8133))
+(or (not x8133) (not x7568) x8134)
+(or (not x8134) x8133)
+(or (not x8134) x7568)
+(or x8135 x8105)
+(or x8135 x7568)
+(or x8135 (not x8136))
+(or x8135 (not x8119))
+(or x8135 (not x8137))
+(or x8135 (not x8138))
+(or x8135 x7568)
+(or x8135 (not x8098))
+(or (not x8105) (not x7568) x8136 x8119 x8137 x8138 (not x7568) x8098 (not x8135))
+(or x8139 (not x8117))
+(or x8139 (not x8136))
+(or x8139 (not x8140))
+(or x8117 x8136 x8140 (not x8139))
+(or x8141 (not x8117))
+(or x8141 x8118)
+(or x8141 x7568)
+(or x8141 (not x8119))
+(or x8141 x8120)
+(or x8141 (not x7573))
+(or x8117 (not x8118) (not x7568) x8119 (not x8120) x7573 (not x8141))
+(or (not x8141) (not x8139) (not x8135) x8142)
+(or (not x8142) x8141)
+(or (not x8142) x8139)
+(or (not x8142) x8135)
+(or x8143 (not x7573))
+(or x8143 (not x8142))
+(or x7573 x8142 (not x8143))
+(or (not x8127) (not x7568) (not x8143) (not x8127) (not x7568) x8144)
+(or (not x8144) x8127)
+(or (not x8144) x7568)
+(or (not x8144) x8143)
+(or (not x8144) x8127)
+(or (not x8144) x7568)
+(or (not x7774) (not x7775) (not x7776) x7777 (not x7778) x7779 (not x7780) (not x7781) (not x7782) x7783 (not x7784) (not x7785) x7928)
+(or (not x7928) x7774)
+(or (not x7928) x7775)
+(or (not x7928) x7776)
+(or (not x7928) (not x7777))
+(or (not x7928) x7778)
+(or (not x7928) (not x7779))
+(or (not x7928) x7780)
+(or (not x7928) x7781)
+(or (not x7928) x7782)
+(or (not x7928) (not x7783))
+(or (not x7928) x7784)
+(or (not x7928) x7785)
+(or x7910 x7895)
+(or x7910 x7568)
+(or x7910 (not x7908))
+(or (not x7895) (not x7568) x7908 (not x7910))
+(or x8145 x7895)
+(or x8145 x7568)
+(or x8145 (not x7908))
+(or x8145 (not x8146))
+(or x8145 (not x8147))
+(or (not x7895) (not x7568) x7908 x8146 x8147 (not x8145))
+(or x7904 (not x7772))
+(or x7904 x7568)
+(or x7904 (not x8148))
+(or x7904 x7568)
+(or x7772 (not x7568) x8148 (not x7568) (not x7904))
+(or (not x7904) x7772 (not x7568) x8149)
+(or (not x8149) x7904)
+(or (not x8149) (not x7772))
+(or (not x8149) x7568)
+(or x8150 (not x8151))
+(or x8150 x7901)
+(or x8150 x7568)
+(or x8150 (not x8146))
+(or x8150 (not x8149))
+(or x8151 (not x7901) (not x7568) x8146 x8149 (not x8150))
+(or (not x8150) (not x8145) x7773)
+(or (not x7773) x8150)
+(or (not x7773) x8145)
+(or x8152 x7923)
+(or x8152 (not x7924))
+(or x8152 (not x7785))
+(or x8152 x7784)
+(or (not x7923) x7924 x7785 (not x7784) (not x8152))
+(or (not x8153) (not x8152) x8154)
+(or (not x8154) x8153)
+(or (not x8154) x8152)
+(or x7783 (not x7918) x8155)
+(or (not x8155) (not x7783))
+(or (not x8155) x7918)
+(or (not x7783) (not x7920) x8156)
+(or (not x8156) x7783)
+(or (not x8156) x7920)
+(or x8157 (not x8156))
+(or x8157 (not x8155))
+(or x8156 x8155 (not x8157))
+(or x8153 x7923)
+(or x8153 (not x7924))
+(or x8153 (not x7785))
+(or x8153 (not x7784))
+(or (not x7923) x7924 x7785 x7784 (not x8153))
+(or (not x7923) x7924 x7785 (not x7784) x7916)
+(or (not x7916) x7923)
+(or (not x7916) (not x7924))
+(or (not x7916) (not x7785))
+(or (not x7916) x7784)
+(or (not x7923) x7924 x7785 (not x7784) (not x8153) (not x8157) x8158)
+(or (not x8158) x7923)
+(or (not x8158) (not x7924))
+(or (not x8158) (not x7785))
+(or (not x8158) x7784)
+(or (not x8158) x8153)
+(or (not x8158) x8157)
+(or (not x7923) x7924 x7785 x7784 x7915)
+(or (not x7915) x7923)
+(or (not x7915) (not x7924))
+(or (not x7915) (not x7785))
+(or (not x7915) (not x7784))
+(or (not x7923) x7924 x7785 x7784 (not x7926) x8159)
+(or (not x8159) x7923)
+(or (not x8159) (not x7924))
+(or (not x8159) (not x7785))
+(or (not x8159) (not x7784))
+(or (not x8159) x7926)
+(or x8160 (not x8159))
+(or x8160 (not x8158))
+(or x8160 (not x8154))
+(or x8159 x8158 x8154 (not x8160))
+(or x7900 x7774)
+(or x7900 x7775)
+(or x7900 x7776)
+(or x7900 (not x7777))
+(or x7900 x7778)
+(or x7900 (not x7779))
+(or x7900 x7780)
+(or x7900 x7781)
+(or x7900 x7782)
+(or x7900 (not x7783))
+(or x7900 x7784)
+(or x7900 x7785)
+(or (not x7774) (not x7775) (not x7776) x7777 (not x7778) x7779 (not x7780) (not x7781) (not x7782) x7783 (not x7784) (not x7785) (not x7900))
+(or x7889 (not x7772))
+(or x7889 x7568)
+(or x7772 (not x7568) (not x7889))
+(or x7931 (not x8161))
+(or x7931 (not x7772))
+(or x7931 x7568)
+(or x8161 x7772 (not x7568) (not x7931))
+(or (not x7903) (not x7901) (not x7568) (not x7897) (not x7931) x8162)
+(or (not x8162) x7903)
+(or (not x8162) x7901)
+(or (not x8162) x7568)
+(or (not x8162) x7897)
+(or (not x8162) x7931)
+(or x7791 (not x8162))
+(or x7791 (not x8163))
+(or x8162 x8163 (not x7791))
+(or (not x7791) (not x7900) (not x8160) x8164)
+(or (not x8164) x7791)
+(or (not x8164) x7900)
+(or (not x8164) x8160)
+(or x8165 (not x8164))
+(or x8165 (not x7773))
+(or x8165 (not x7928))
+(or x8164 x7773 x7928 (not x8165))
+(or x7898 (not x8151))
+(or x7898 x7901)
+(or x7898 x7568)
+(or x8151 (not x7901) (not x7568) (not x7898))
+(or (not x7895) (not x7568) (not x7896) (not x7897) (not x7898) x8163)
+(or (not x8163) x7895)
+(or (not x8163) x7568)
+(or (not x8163) x7896)
+(or (not x8163) x7897)
+(or (not x8163) x7898)
+(or (not x7895) (not x7568) (not x7896) (not x7897) (not x7898) (not x8165) x8166)
+(or (not x8166) x7895)
+(or (not x8166) x7568)
+(or (not x8166) x7896)
+(or (not x8166) x7897)
+(or (not x8166) x7898)
+(or (not x8166) x8165)
+(or x7772 (not x7568) x8148 (not x7568) x8161)
+(or (not x8161) (not x7772))
+(or (not x8161) x7568)
+(or (not x8161) (not x8148))
+(or (not x8161) x7568)
+(or (not x7895) (not x7568) x8151)
+(or (not x8151) x7895)
+(or (not x8151) x7568)
+(or x7897 (not x8151))
+(or x7897 (not x7908))
+(or x8151 x7908 (not x7897))
+(or (not x7901) (not x7568) x7908)
+(or (not x7908) x7901)
+(or (not x7908) x7568)
+(or (not x7903) (not x7901) (not x7568) x8147)
+(or (not x8147) x7903)
+(or (not x8147) x7901)
+(or (not x8147) x7568)
+(or (not x7903) (not x7901) (not x7568) (not x7897) x7772 (not x7568) x8148 (not x7568) x8167)
+(or (not x8167) x7903)
+(or (not x8167) x7901)
+(or (not x8167) x7568)
+(or (not x8167) x7897)
+(or (not x8167) (not x7772))
+(or (not x8167) x7568)
+(or (not x8167) (not x8148))
+(or (not x8167) x7568)
+(or x7935 (not x7888))
+(or x7935 (not x7573))
+(or x7888 x7573 (not x7935))
+(or x7896 x7901)
+(or x7896 x7568)
+(or (not x7901) (not x7568) (not x7896))
+(or x7903 x7895)
+(or x7903 x7568)
+(or (not x7895) (not x7568) (not x7903))
+(or (not x7903) (not x7896) x8146)
+(or (not x8146) x7903)
+(or (not x8146) x7896)
+(or (not x7903) (not x7896) (not x7935) x8168)
+(or (not x8168) x7903)
+(or (not x8168) x7896)
+(or (not x8168) x7935)
+(or x8169 (not x8168))
+(or x8169 (not x8167))
+(or x8169 (not x8166))
+(or x8168 x8167 x8166 (not x8169))
+(or (not x231) (not x8169) x8170)
+(or (not x8170) x231)
+(or (not x8170) x8169)
+(or x8171 (not x8170))
+(or x8171 (not x7888))
+(or x8170 x7888 (not x8171))
+(or (not x7891) (not x8171) x8172)
+(or (not x8172) x7891)
+(or (not x8172) x8171)
+(or x8173 (not x8172))
+(or x8173 (not x8144))
+(or x8172 x8144 (not x8173))
+(or (not x8173) (not x7568) x8174)
+(or (not x8174) x8173)
+(or (not x8174) x7568)
+(or (not x7683) (not x7568) x7940)
+(or (not x7940) x7683)
+(or (not x7940) x7568)
+(or (not x8175) (not x7761) (not x8176) x8177)
+(or (not x8177) x8175)
+(or (not x8177) x7761)
+(or (not x8177) x8176)
+(or (not x7691) (not x7568) (not x7703) (not x7704) (not x7705) (not x7706) (not x8178) x8179)
+(or (not x8179) x7691)
+(or (not x8179) x7568)
+(or (not x8179) x7703)
+(or (not x8179) x7704)
+(or (not x8179) x7705)
+(or (not x8179) x7706)
+(or (not x8179) x8178)
+(or x8180 (not x8179))
+(or x8180 (not x8177))
+(or x8179 x8177 (not x8180))
+(or (not x8180) (not x7683) (not x7568) x8052)
+(or (not x8052) x8180)
+(or (not x8052) x7683)
+(or (not x8052) x7568)
+(or (not x7713) (not x7568) x7947)
+(or (not x7947) x7713)
+(or (not x7947) x7568)
+(or (not x8175) (not x7703) (not x7704) (not x7705) (not x7706) x8181)
+(or (not x8181) x8175)
+(or (not x8181) x7703)
+(or (not x8181) x7704)
+(or (not x8181) x7705)
+(or (not x8181) x7706)
+(or (not x7691) (not x7568) (not x7703) (not x7704) (not x7705) (not x7706) (not x7690) (not x7568) x8182)
+(or (not x8182) x7691)
+(or (not x8182) x7568)
+(or (not x8182) x7703)
+(or (not x8182) x7704)
+(or (not x8182) x7705)
+(or (not x8182) x7706)
+(or (not x8182) x7690)
+(or (not x8182) x7568)
+(or x7761 (not x8182))
+(or x7761 (not x8181))
+(or x8182 x8181 (not x7761))
+(or (not x7761) (not x7756) (not x7568) (not x7713) (not x7568) x8051)
+(or (not x8051) x7761)
+(or (not x8051) x7756)
+(or (not x8051) x7568)
+(or (not x8051) x7713)
+(or (not x8051) x7568)
+(or x8183 (not x8051))
+(or x8183 (not x8052))
+(or x8051 x8052 (not x8183))
+(or x8184 (not x8185))
+(or x8184 (not x8186))
+(or x8184 (not x8185))
+(or x8185 x8186 x8185 (not x8184))
+(or (not x8187) (not x7690) (not x7568) x8185)
+(or (not x8185) x8187)
+(or (not x8185) x7690)
+(or (not x8185) x7568)
+(or (not x7756) (not x7568) x7758)
+(or (not x7758) x7756)
+(or (not x7758) x7568)
+(or (not x7703) (not x7704) (not x7705) (not x7706) (not x7690) (not x7568) (not x7756) (not x7568) x8186)
+(or (not x8186) x7703)
+(or (not x8186) x7704)
+(or (not x8186) x7705)
+(or (not x8186) x7706)
+(or (not x8186) x7690)
+(or (not x8186) x7568)
+(or (not x8186) x7756)
+(or (not x8186) x7568)
+(or x8188 (not x8186))
+(or x8188 (not x8185))
+(or x8186 x8185 (not x8188))
+(or (not x8189) (not x8188) (not x8184) (not x7873) (not x7568) x8190)
+(or (not x8190) x8189)
+(or (not x8190) x8188)
+(or (not x8190) x8184)
+(or (not x8190) x7873)
+(or (not x8190) x7568)
+(or x8176 x7756)
+(or x8176 x7568)
+(or (not x7756) (not x7568) (not x8176))
+(or x7708 (not x8042))
+(or x7708 (not x8043))
+(or x7708 (not x8044))
+(or x7708 (not x8045))
+(or x8042 x8043 x8044 x8045 (not x7708))
+(or x8187 (not x8042))
+(or x8187 (not x8043))
+(or x8187 (not x8044))
+(or x8187 (not x8045))
+(or x8187 x7690)
+(or x8187 x7568)
+(or x8042 x8043 x8044 x8045 (not x7690) (not x7568) (not x8187))
+(or x8191 (not x8042))
+(or x8191 (not x8043))
+(or x8191 (not x8044))
+(or x8191 (not x8045))
+(or x8191 x7690)
+(or x8191 x7568)
+(or x8191 x7756)
+(or x8191 x7568)
+(or x8042 x8043 x8044 x8045 (not x7690) (not x7568) (not x7756) (not x7568) (not x8191))
+(or x8178 x7690)
+(or x8178 x7568)
+(or (not x7690) (not x7568) (not x8178))
+(or (not x7690) (not x7568) x7698)
+(or (not x7698) x7690)
+(or (not x7698) x7568)
+(or (not x7703) (not x7704) (not x7705) (not x7706) (not x7690) (not x7568) x8192)
+(or (not x8192) x7703)
+(or (not x8192) x7704)
+(or (not x8192) x7705)
+(or (not x8192) x7706)
+(or (not x8192) x7690)
+(or (not x8192) x7568)
+(or x8189 (not x8192))
+(or x8189 x7690)
+(or x8189 x7568)
+(or x8192 (not x7690) (not x7568) (not x8189))
+(or (not x8189) (not x8191) (not x8189) (not x7879) (not x7568) x8193)
+(or (not x8193) x8189)
+(or (not x8193) x8191)
+(or (not x8193) x8189)
+(or (not x8193) x7879)
+(or (not x8193) x7568)
+(or x8194 (not x8193))
+(or x8194 (not x8190))
+(or x8193 x8190 (not x8194))
+(or (not x7704) (not x7706) (not x7705) (not x7704) (not x8194) (not x8183) x8195)
+(or (not x8195) x7704)
+(or (not x8195) x7706)
+(or (not x8195) x7705)
+(or (not x8195) x7704)
+(or (not x8195) x8194)
+(or (not x8195) x8183)
+(or (not x7720) (not x7568) x7953)
+(or (not x7953) x7720)
+(or (not x7953) x7568)
+(or (not x8175) (not x7802) (not x8196) x8197)
+(or (not x8197) x8175)
+(or (not x8197) x7802)
+(or (not x8197) x8196)
+(or (not x7691) (not x7568) (not x7703) (not x7739) (not x7568) x7740 (not x7568) (not x7706) (not x7741) (not x7705) (not x7706) (not x8198) x8199)
+(or (not x8199) x7691)
+(or (not x8199) x7568)
+(or (not x8199) x7703)
+(or (not x8199) x7739)
+(or (not x8199) x7568)
+(or (not x8199) (not x7740))
+(or (not x8199) x7568)
+(or (not x8199) x7706)
+(or (not x8199) x7741)
+(or (not x8199) x7705)
+(or (not x8199) x7706)
+(or (not x8199) x8198)
+(or x8200 (not x8199))
+(or x8200 (not x8197))
+(or x8199 x8197 (not x8200))
+(or (not x8200) (not x7720) (not x7568) x8069)
+(or (not x8069) x8200)
+(or (not x8069) x7720)
+(or (not x8069) x7568)
+(or (not x7748) (not x7568) x7960)
+(or (not x7960) x7748)
+(or (not x7960) x7568)
+(or x8175 x7691)
+(or x8175 x7568)
+(or (not x7691) (not x7568) (not x8175))
+(or (not x8175) (not x7703) (not x7739) (not x7568) x7740 (not x7568) (not x7706) (not x7741) (not x7705) (not x7706) x8201)
+(or (not x8201) x8175)
+(or (not x8201) x7703)
+(or (not x8201) x7739)
+(or (not x8201) x7568)
+(or (not x8201) (not x7740))
+(or (not x8201) x7568)
+(or (not x8201) x7706)
+(or (not x8201) x7741)
+(or (not x8201) x7705)
+(or (not x8201) x7706)
+(or (not x7691) (not x7568) x7754)
+(or (not x7754) x7691)
+(or (not x7754) x7568)
+(or (not x7691) (not x7568) (not x7703) (not x7739) (not x7568) x7740 (not x7568) (not x7706) (not x7741) (not x7705) (not x7706) (not x7727) (not x7568) x8202)
+(or (not x8202) x7691)
+(or (not x8202) x7568)
+(or (not x8202) x7703)
+(or (not x8202) x7739)
+(or (not x8202) x7568)
+(or (not x8202) (not x7740))
+(or (not x8202) x7568)
+(or (not x8202) x7706)
+(or (not x8202) x7741)
+(or (not x8202) x7705)
+(or (not x8202) x7706)
+(or (not x8202) x7727)
+(or (not x8202) x7568)
+(or x7802 (not x8202))
+(or x7802 (not x8201))
+(or x8202 x8201 (not x7802))
+(or (not x7802) (not x7797) (not x7568) (not x7748) (not x7568) x8068)
+(or (not x8068) x7802)
+(or (not x8068) x7797)
+(or (not x8068) x7568)
+(or (not x8068) x7748)
+(or (not x8068) x7568)
+(or x8203 (not x8068))
+(or x8203 (not x8069))
+(or x8068 x8069 (not x8203))
+(or (not x8204) (not x8205) (not x8206) (not x7810) (not x7568) x8207)
+(or (not x8207) x8204)
+(or (not x8207) x8205)
+(or (not x8207) x8206)
+(or (not x8207) x7810)
+(or (not x8207) x7568)
+(or (not x8204) (not x8208) (not x8204) (not x7816) (not x7568) x8209)
+(or (not x8209) x8204)
+(or (not x8209) x8208)
+(or (not x8209) x8204)
+(or (not x8209) x7816)
+(or (not x8209) x7568)
+(or x8210 (not x8209))
+(or x8210 (not x8207))
+(or x8209 x8207 (not x8210))
+(or (not x7706) (not x7705) (not x7739) (not x7568) x7740 (not x7568) (not x7706) (not x7741) (not x8210) x8211)
+(or (not x8211) x7706)
+(or (not x8211) x7705)
+(or (not x8211) x7739)
+(or (not x8211) x7568)
+(or (not x8211) (not x7740))
+(or (not x8211) x7568)
+(or (not x8211) x7706)
+(or (not x8211) x7741)
+(or (not x8211) x8210)
+(or (not x8204) (not x8205) (not x8206) (not x7822) (not x7568) x8212)
+(or (not x8212) x8204)
+(or (not x8212) x8205)
+(or (not x8212) x8206)
+(or (not x8212) x7822)
+(or (not x8212) x7568)
+(or (not x8204) (not x8208) (not x8204) (not x7827) (not x7568) x8213)
+(or (not x8213) x8204)
+(or (not x8213) x8208)
+(or (not x8213) x8204)
+(or (not x8213) x7827)
+(or (not x8213) x7568)
+(or x8214 (not x8213))
+(or x8214 (not x8212))
+(or x8213 x8212 (not x8214))
+(or (not x7706) (not x7705) (not x7739) (not x7568) x7740 (not x7568) (not x7706) (not x7741) (not x8214) x8215)
+(or (not x8215) x7706)
+(or (not x8215) x7705)
+(or (not x8215) x7739)
+(or (not x8215) x7568)
+(or (not x8215) (not x7740))
+(or (not x8215) x7568)
+(or (not x8215) x7706)
+(or (not x8215) x7741)
+(or (not x8215) x8214)
+(or (not x8204) (not x8205) (not x8206) (not x7832) (not x7568) x8216)
+(or (not x8216) x8204)
+(or (not x8216) x8205)
+(or (not x8216) x8206)
+(or (not x8216) x7832)
+(or (not x8216) x7568)
+(or (not x8204) (not x8208) (not x8204) (not x7837) (not x7568) x8217)
+(or (not x8217) x8204)
+(or (not x8217) x8208)
+(or (not x8217) x8204)
+(or (not x8217) x7837)
+(or (not x8217) x7568)
+(or x8218 (not x8217))
+(or x8218 (not x8216))
+(or x8217 x8216 (not x8218))
+(or (not x7706) (not x7705) (not x7739) (not x7568) x7740 (not x7568) (not x7706) (not x7741) (not x8218) x8219)
+(or (not x8219) x7706)
+(or (not x8219) x7705)
+(or (not x8219) x7739)
+(or (not x8219) x7568)
+(or (not x8219) (not x7740))
+(or (not x8219) x7568)
+(or (not x8219) x7706)
+(or (not x8219) x7741)
+(or (not x8219) x8218)
+(or (not x8204) (not x8205) (not x8206) (not x7842) (not x7568) x8220)
+(or (not x8220) x8204)
+(or (not x8220) x8205)
+(or (not x8220) x8206)
+(or (not x8220) x7842)
+(or (not x8220) x7568)
+(or (not x8204) (not x8208) (not x8204) (not x7847) (not x7568) x8221)
+(or (not x8221) x8204)
+(or (not x8221) x8208)
+(or (not x8221) x8204)
+(or (not x8221) x7847)
+(or (not x8221) x7568)
+(or x8222 (not x8221))
+(or x8222 (not x8220))
+(or x8221 x8220 (not x8222))
+(or (not x7706) (not x7705) (not x7739) (not x7568) x7740 (not x7568) (not x7706) (not x7741) (not x8222) x8223)
+(or (not x8223) x7706)
+(or (not x8223) x7705)
+(or (not x8223) x7739)
+(or (not x8223) x7568)
+(or (not x8223) (not x7740))
+(or (not x8223) x7568)
+(or (not x8223) x7706)
+(or (not x8223) x7741)
+(or (not x8223) x8222)
+(or (not x8204) (not x8205) (not x8206) (not x7852) (not x7568) x8224)
+(or (not x8224) x8204)
+(or (not x8224) x8205)
+(or (not x8224) x8206)
+(or (not x8224) x7852)
+(or (not x8224) x7568)
+(or (not x8204) (not x8208) (not x8204) (not x7857) (not x7568) x8225)
+(or (not x8225) x8204)
+(or (not x8225) x8208)
+(or (not x8225) x8204)
+(or (not x8225) x7857)
+(or (not x8225) x7568)
+(or x8226 (not x8225))
+(or x8226 (not x8224))
+(or x8225 x8224 (not x8226))
+(or (not x7706) (not x7705) (not x7739) (not x7568) x7740 (not x7568) (not x7706) (not x7741) (not x8226) x8227)
+(or (not x8227) x7706)
+(or (not x8227) x7705)
+(or (not x8227) x7739)
+(or (not x8227) x7568)
+(or (not x8227) (not x7740))
+(or (not x8227) x7568)
+(or (not x8227) x7706)
+(or (not x8227) x7741)
+(or (not x8227) x8226)
+(or x8206 (not x8228))
+(or x8206 (not x8229))
+(or x8206 (not x8228))
+(or x8228 x8229 x8228 (not x8206))
+(or (not x8230) (not x7727) (not x7568) x8228)
+(or (not x8228) x8230)
+(or (not x8228) x7727)
+(or (not x8228) x7568)
+(or (not x7797) (not x7568) x7799)
+(or (not x7799) x7797)
+(or (not x7799) x7568)
+(or (not x7703) (not x7739) (not x7568) x7740 (not x7568) (not x7706) (not x7741) (not x7705) (not x7706) (not x7727) (not x7568) (not x7797) (not x7568) x8229)
+(or (not x8229) x7703)
+(or (not x8229) x7739)
+(or (not x8229) x7568)
+(or (not x8229) (not x7740))
+(or (not x8229) x7568)
+(or (not x8229) x7706)
+(or (not x8229) x7741)
+(or (not x8229) x7705)
+(or (not x8229) x7706)
+(or (not x8229) x7727)
+(or (not x8229) x7568)
+(or (not x8229) x7797)
+(or (not x8229) x7568)
+(or x8205 (not x8229))
+(or x8205 (not x8228))
+(or x8229 x8228 (not x8205))
+(or (not x8204) (not x8205) (not x8206) (not x7862) (not x7568) x8231)
+(or (not x8231) x8204)
+(or (not x8231) x8205)
+(or (not x8231) x8206)
+(or (not x8231) x7862)
+(or (not x8231) x7568)
+(or x8196 x7797)
+(or x8196 x7568)
+(or (not x7797) (not x7568) (not x8196))
+(or x7995 x7739)
+(or x7995 x7568)
+(or x7995 (not x7740))
+(or x7995 x7568)
+(or (not x7739) (not x7568) x7740 (not x7568) (not x7995))
+(or x7704 x7739)
+(or x7704 x7568)
+(or x7704 (not x7740))
+(or x7704 x7568)
+(or x7704 (not x8045))
+(or x7704 (not x8063))
+(or (not x7739) (not x7568) x7740 (not x7568) x8045 x8063 (not x7704))
+(or (not x8232) (not x7568) (not x8233) (not x7568) (not x8234) (not x7568) x8042)
+(or (not x8042) x8232)
+(or (not x8042) x7568)
+(or (not x8042) x8233)
+(or (not x8042) x7568)
+(or (not x8042) x8234)
+(or (not x8042) x7568)
+(or x7743 (not x8042))
+(or x7743 x7739)
+(or x7743 x7568)
+(or x7743 (not x7740))
+(or x7743 x7568)
+(or x7743 (not x8045))
+(or x7743 (not x8063))
+(or x7743 (not x8044))
+(or x7743 (not x8045))
+(or x8042 (not x7739) (not x7568) x7740 (not x7568) x8045 x8063 x8044 x8045 (not x7743))
+(or x8230 (not x8042))
+(or x8230 x7739)
+(or x8230 x7568)
+(or x8230 (not x7740))
+(or x8230 x7568)
+(or x8230 (not x8045))
+(or x8230 (not x8063))
+(or x8230 (not x8044))
+(or x8230 (not x8045))
+(or x8230 x7727)
+(or x8230 x7568)
+(or x8042 (not x7739) (not x7568) x7740 (not x7568) x8045 x8063 x8044 x8045 (not x7727) (not x7568) (not x8230))
+(or x8208 (not x8042))
+(or x8208 x7739)
+(or x8208 x7568)
+(or x8208 (not x7740))
+(or x8208 x7568)
+(or x8208 (not x8045))
+(or x8208 (not x8063))
+(or x8208 (not x8044))
+(or x8208 (not x8045))
+(or x8208 x7727)
+(or x8208 x7568)
+(or x8208 x7797)
+(or x8208 x7568)
+(or x8042 (not x7739) (not x7568) x7740 (not x7568) x8045 x8063 x8044 x8045 (not x7727) (not x7568) (not x7797) (not x7568) (not x8208))
+(or x8198 x7727)
+(or x8198 x7568)
+(or (not x7727) (not x7568) (not x8198))
+(or (not x7727) (not x7568) x7734)
+(or (not x7734) x7727)
+(or (not x7734) x7568)
+(or x7703 x8232)
+(or x7703 x7568)
+(or x7703 x8233)
+(or x7703 x7568)
+(or x7703 x8234)
+(or x7703 x7568)
+(or (not x8232) (not x7568) (not x8233) (not x7568) (not x8234) (not x7568) (not x7703))
+(or (not x7703) (not x7739) (not x7568) x7740 (not x7568) (not x7706) (not x7741) (not x7705) (not x7706) (not x7727) (not x7568) x8235)
+(or (not x8235) x7703)
+(or (not x8235) x7739)
+(or (not x8235) x7568)
+(or (not x8235) (not x7740))
+(or (not x8235) x7568)
+(or (not x8235) x7706)
+(or (not x8235) x7741)
+(or (not x8235) x7705)
+(or (not x8235) x7706)
+(or (not x8235) x7727)
+(or (not x8235) x7568)
+(or x8204 (not x8235))
+(or x8204 x7727)
+(or x8204 x7568)
+(or x8235 (not x7727) (not x7568) (not x8204))
+(or (not x8204) (not x8208) (not x8204) (not x7867) (not x7568) x8236)
+(or (not x8236) x8204)
+(or (not x8236) x8208)
+(or (not x8236) x8204)
+(or (not x8236) x7867)
+(or (not x8236) x7568)
+(or x8237 (not x8236))
+(or x8237 (not x8231))
+(or x8236 x8231 (not x8237))
+(or (not x7706) (not x7705) (not x7739) (not x7568) x7740 (not x7568) (not x7706) (not x7741) (not x8237) x8238)
+(or (not x8238) x7706)
+(or (not x8238) x7705)
+(or (not x8238) x7739)
+(or (not x8238) x7568)
+(or (not x8238) (not x7740))
+(or (not x8238) x7568)
+(or (not x8238) x7706)
+(or (not x8238) x7741)
+(or (not x8238) x8237)
+(or x8239 (not x8238))
+(or x8239 (not x8227))
+(or x8239 (not x8223))
+(or x8239 (not x8219))
+(or x8239 (not x8215))
+(or x8239 (not x8211))
+(or x8238 x8227 x8223 x8219 x8215 x8211 (not x8239))
+(or (not x7739) (not x7568) x7740 (not x7568) (not x7706) (not x7741) x8043)
+(or (not x8043) x7739)
+(or (not x8043) x7568)
+(or (not x8043) (not x7740))
+(or (not x8043) x7568)
+(or (not x8043) x7706)
+(or (not x8043) x7741)
+(or (not x7739) (not x7568) x7740 (not x7568) (not x7706) (not x7741) (not x8239) (not x8203) x8240)
+(or (not x8240) x7739)
+(or (not x8240) x7568)
+(or (not x8240) (not x7740))
+(or (not x8240) x7568)
+(or (not x8240) x7706)
+(or (not x8240) x7741)
+(or (not x8240) x8239)
+(or (not x8240) x8203)
+(or x8241 (not x8240))
+(or x8241 (not x8195))
+(or x8240 x8195 (not x8241))
+(or x7741 (not x8242))
+(or x7741 (not x8243))
+(or x8242 x8243 (not x7741))
+(or x7705 (not x8242))
+(or x7705 (not x8243))
+(or x7705 (not x8045))
+(or x8242 x8243 x8045 (not x7705))
+(or (not x7705) (not x8241) x8244)
+(or (not x8244) x7705)
+(or (not x8244) x8241)
+(or (not x7966) (not x7568) x8025)
+(or (not x8025) x7966)
+(or (not x8025) x7568)
+(or (not x8017) (not x7988) x8063)
+(or (not x8063) x8017)
+(or (not x8063) x7988)
+(or (not x8017) (not x7988) (not x7706) x8044)
+(or (not x8044) x8017)
+(or (not x8044) x7988)
+(or (not x8044) x7706)
+(or (not x8017) (not x7988) (not x7706) (not x7966) (not x7568) x8245)
+(or (not x8245) x8017)
+(or (not x8245) x7988)
+(or (not x8245) x7706)
+(or (not x8245) x7966)
+(or (not x8245) x7568)
+(or x8246 (not x8245))
+(or x8246 (not x8244))
+(or x8245 x8244 (not x8246))
+(or x7988 (not x7740))
+(or x7988 x7568)
+(or x7740 (not x7568) (not x7988))
+(or (not x7739) (not x7568) x8242)
+(or (not x8242) x7739)
+(or (not x8242) x7568)
+(or x7706 (not x8242))
+(or x7706 (not x7740))
+(or x7706 x7568)
+(or x8242 x7740 (not x7568) (not x7706))
+(or (not x7706) (not x8246) x8247)
+(or (not x8247) x7706)
+(or (not x8247) x8246)
+(or x7740 (not x7568) x8243)
+(or (not x8243) (not x7740))
+(or (not x8243) x7568)
+(or x8017 x7739)
+(or x8017 x7568)
+(or (not x7739) (not x7568) (not x8017))
+(or (not x8017) x7740 (not x7568) x8045)
+(or (not x8045) x8017)
+(or (not x8045) (not x7740))
+(or (not x8045) x7568)
+(or (not x8017) x7740 (not x7568) (not x7976) (not x7568) x8248)
+(or (not x8248) x8017)
+(or (not x8248) (not x7740))
+(or (not x8248) x7568)
+(or (not x8248) x7976)
+(or (not x8248) x7568)
+(or x8249 (not x8248))
+(or x8249 (not x8247))
+(or x8248 x8247 (not x8249))
+(or (not x8249) (not x7568) x8250)
+(or (not x8250) x8249)
+(or (not x8250) x7568)
+(or (not x8251) (not x8252) (not x8232) (not x7568) x8253)
+(or (not x8253) x8251)
+(or (not x8253) x8252)
+(or (not x8253) x8232)
+(or (not x8253) x7568)
+(or (not x8254) (not x8255) x8256)
+(or (not x8256) x8254)
+(or (not x8256) x8255)
+(or x8257 (not x8256))
+(or x8257 (not x8253))
+(or x8256 x8253 (not x8257))
+(or (not x8258) (not x8257) x8259)
+(or (not x8259) x8258)
+(or (not x8259) x8257)
+(or (not x8254) (not x8232) (not x7568) x8260)
+(or (not x8260) x8254)
+(or (not x8260) x8232)
+(or (not x8260) x7568)
+(or (not x8251) (not x8252) (not x8255) x8261)
+(or (not x8261) x8251)
+(or (not x8261) x8252)
+(or (not x8261) x8255)
+(or x8262 (not x8261))
+(or x8262 (not x8260))
+(or x8261 x8260 (not x8262))
+(or (not x8263) (not x7568) (not x8262) x8264)
+(or (not x8264) x8263)
+(or (not x8264) x7568)
+(or (not x8264) x8262)
+(or x8265 (not x8264))
+(or x8265 (not x8259))
+(or x8264 x8259 (not x8265))
+(or (not x8265) (not x7568) x8266)
+(or (not x8266) x8265)
+(or (not x8266) x7568)
+(or (not x8105) (not x7568) (not x8106) (not x8107) (not x8108) (not x8267) (not x8118) (not x7568) x8268)
+(or (not x8268) x8105)
+(or (not x8268) x7568)
+(or (not x8268) x8106)
+(or (not x8268) x8107)
+(or (not x8268) x8108)
+(or (not x8268) x8267)
+(or (not x8268) x8118)
+(or (not x8268) x7568)
+(or (not x8123) (not x8118) (not x7568) (not x8107) (not x8120) (not x8269) (not x8118) (not x7568) x8270)
+(or (not x8270) x8123)
+(or (not x8270) x8118)
+(or (not x8270) x7568)
+(or (not x8270) x8107)
+(or (not x8270) x8120)
+(or (not x8270) x8269)
+(or (not x8270) x8118)
+(or (not x8270) x7568)
+(or (not x8127) (not x7568) x7888)
+(or (not x7888) x8127)
+(or (not x7888) x7568)
+(or (not x8127) (not x7568) (not x231) x8140)
+(or (not x8140) x8127)
+(or (not x8140) x7568)
+(or (not x8140) x231)
+(or x8271 (not x8140))
+(or x8271 (not x8136))
+(or x8140 x8136 (not x8271))
+(or (not x8123) (not x8106) (not x8271) x8272)
+(or (not x8272) x8123)
+(or (not x8272) x8106)
+(or (not x8272) x8271)
+(or (not x8107) (not x8108) (not x8273) (not x8118) (not x7568) x8274)
+(or (not x8274) x8107)
+(or (not x8274) x8108)
+(or (not x8274) x8273)
+(or (not x8274) x8118)
+(or (not x8274) x7568)
+(or x8275 (not x8274))
+(or x8275 (not x8272))
+(or x8275 (not x8270))
+(or x8275 (not x8268))
+(or x8274 x8272 x8270 x8268 (not x8275))
+(or (not x8275) (not x7568) x8276)
+(or (not x8276) x8275)
+(or (not x8276) x7568)
+(or x8099 (not x8138))
+(or x8099 x7568)
+(or x8138 (not x7568) (not x8099))
+(or x8267 (not x8138))
+(or x8267 x7568)
+(or x8267 (not x8098))
+(or x8138 (not x7568) x8098 (not x8267))
+(or (not x8105) (not x7568) (not x8106) (not x8107) (not x8108) (not x8267) (not x8105) (not x7568) x8277)
+(or (not x8277) x8105)
+(or (not x8277) x7568)
+(or (not x8277) x8106)
+(or (not x8277) x8107)
+(or (not x8277) x8108)
+(or (not x8277) x8267)
+(or (not x8277) x8105)
+(or (not x8277) x7568)
+(or x8269 x8120)
+(or x8269 (not x7573))
+(or (not x8120) x7573 (not x8269))
+(or (not x8120) (not x8269) (not x8105) (not x7568) x8278)
+(or (not x8278) x8120)
+(or (not x8278) x8269)
+(or (not x8278) x8105)
+(or (not x8278) x7568)
+(or (not x8120) x7573 x8279)
+(or (not x8279) x8120)
+(or (not x8279) (not x7573))
+(or x8280 x8120)
+(or x8280 (not x8279))
+(or (not x8120) x8279 (not x8280))
+(or (not x8280) x8120 x8281)
+(or (not x8281) x8280)
+(or (not x8281) (not x8120))
+(or x8282 (not x8281))
+(or x8282 (not x8278))
+(or x8281 x8278 (not x8282))
+(or (not x8123) (not x8118) (not x7568) (not x8107) (not x8282) x8283)
+(or (not x8283) x8123)
+(or (not x8283) x8118)
+(or (not x8283) x7568)
+(or (not x8283) x8107)
+(or (not x8283) x8282)
+(or x7891 x8127)
+(or x7891 x7568)
+(or (not x8127) (not x7568) (not x7891))
+(or x8284 x8127)
+(or x8284 x7568)
+(or x8284 (not x7524))
+(or (not x8127) (not x7568) x7524 (not x8284))
+(or (not x8123) (not x8106) (not x8284) (not x8105) (not x7568) x8285)
+(or (not x8285) x8123)
+(or (not x8285) x8106)
+(or (not x8285) x8284)
+(or (not x8285) x8105)
+(or (not x8285) x7568)
+(or (not x8107) (not x8108) (not x8273) (not x8105) (not x7568) x8286)
+(or (not x8286) x8107)
+(or (not x8286) x8108)
+(or (not x8286) x8273)
+(or (not x8286) x8105)
+(or (not x8286) x7568)
+(or x8287 (not x8286))
+(or x8287 (not x8285))
+(or x8287 (not x8283))
+(or x8287 (not x8277))
+(or x8286 x8285 x8283 x8277 (not x8287))
+(or (not x8287) (not x7568) x8288)
+(or (not x8288) x8287)
+(or (not x8288) x7568)
+(or (not x8251) (not x8252) (not x8233) (not x7568) x8289)
+(or (not x8289) x8251)
+(or (not x8289) x8252)
+(or (not x8289) x8233)
+(or (not x8289) x7568)
+(or (not x8254) (not x8290) x8291)
+(or (not x8291) x8254)
+(or (not x8291) x8290)
+(or x8292 (not x8291))
+(or x8292 (not x8289))
+(or x8291 x8289 (not x8292))
+(or (not x8258) (not x8292) x8293)
+(or (not x8293) x8258)
+(or (not x8293) x8292)
+(or (not x8254) (not x8233) (not x7568) x8294)
+(or (not x8294) x8254)
+(or (not x8294) x8233)
+(or (not x8294) x7568)
+(or x8295 x8296 x8255)
+(or x8295 (not x8296) (not x8255))
+(or (not x8295) x8296 (not x8255))
+(or (not x8295) (not x8296) x8255)
+(or (not x8251) (not x8252) (not x8295) x8297)
+(or (not x8297) x8251)
+(or (not x8297) x8252)
+(or (not x8297) x8295)
+(or x8298 (not x8297))
+(or x8298 (not x8294))
+(or x8297 x8294 (not x8298))
+(or (not x8263) (not x7568) (not x8298) x8299)
+(or (not x8299) x8263)
+(or (not x8299) x7568)
+(or (not x8299) x8298)
+(or x8300 (not x8299))
+(or x8300 (not x8293))
+(or x8299 x8293 (not x8300))
+(or (not x8300) (not x7568) x8301)
+(or (not x8301) x8300)
+(or (not x8301) x7568)
+(or (not x8251) (not x8252) (not x8234) (not x7568) x8302)
+(or (not x8302) x8251)
+(or (not x8302) x8252)
+(or (not x8302) x8234)
+(or (not x8302) x7568)
+(or (not x8254) (not x8303) x8304)
+(or (not x8304) x8254)
+(or (not x8304) x8303)
+(or x8305 (not x8304))
+(or x8305 (not x8302))
+(or x8304 x8302 (not x8305))
+(or x8258 x8263)
+(or x8258 x7568)
+(or (not x8263) (not x7568) (not x8258))
+(or (not x8258) (not x8305) x8306)
+(or (not x8306) x8258)
+(or (not x8306) x8305)
+(or (not x8110) (not x7568) (not x224) (not x231) (not x8307) (not x8308) x8309)
+(or (not x8309) x8110)
+(or (not x8309) x7568)
+(or (not x8309) x224)
+(or (not x8309) x231)
+(or (not x8309) x8307)
+(or (not x8309) x8308)
+(or (not x223) (not x8116) (not x7568) (not x231) (not x8123) (not x8118) (not x7568) (not x8107) x8120 x8310)
+(or (not x8310) x223)
+(or (not x8310) x8116)
+(or (not x8310) x7568)
+(or (not x8310) x231)
+(or (not x8310) x8123)
+(or (not x8310) x8118)
+(or (not x8310) x7568)
+(or (not x8310) x8107)
+(or (not x8310) (not x8120))
+(or x8254 (not x8310))
+(or x8254 (not x8309))
+(or x8310 x8309 (not x8254))
+(or (not x8254) (not x8234) (not x7568) x8311)
+(or (not x8311) x8254)
+(or (not x8311) x8234)
+(or (not x8311) x7568)
+(or x8312 x8313 x8314)
+(or x8312 (not x8313) (not x8314))
+(or (not x8312) x8313 (not x8314))
+(or (not x8312) (not x8313) x8314)
+(or x8252 x8110)
+(or x8252 x7568)
+(or x8252 (not x7550))
+(or x8252 (not x7524))
+(or x8252 (not x8111))
+(or x8252 (not x8115))
+(or (not x8110) (not x7568) x7550 x7524 x8111 x8115 (not x8252))
+(or x8251 (not x7549))
+(or x8251 x8116)
+(or x8251 x7568)
+(or x8251 (not x7524))
+(or x8251 (not x8117))
+(or x8251 x8118)
+(or x8251 x7568)
+(or x8251 (not x8119))
+(or x8251 (not x8120))
+(or x7549 (not x8116) (not x7568) x7524 x8117 (not x8118) (not x7568) x8119 x8120 (not x8251))
+(or (not x8251) (not x8252) (not x8312) x8315)
+(or (not x8315) x8251)
+(or (not x8315) x8252)
+(or (not x8315) x8312)
+(or x8316 (not x8315))
+(or x8316 (not x8311))
+(or x8315 x8311 (not x8316))
+(or (not x8263) (not x7568) (not x8316) x8317)
+(or (not x8317) x8263)
+(or (not x8317) x7568)
+(or (not x8317) x8316)
+(or x8318 (not x8317))
+(or x8318 (not x8306))
+(or x8317 x8306 (not x8318))
+(or (not x8318) (not x7568) x8319)
+(or (not x8319) x8318)
+(or (not x8319) x7568)
+(or (not x8320) (not x8321) (not x7568) x8322)
+(or (not x8322) x8320)
+(or (not x8322) x8321)
+(or (not x8322) x7568)
+(or (not x8323) (not x8308) (not x8324) x8325)
+(or (not x8325) x8323)
+(or (not x8325) x8308)
+(or (not x8325) x8324)
+(or x8326 (not x8325))
+(or x8326 (not x8322))
+(or x8325 x8322 (not x8326))
+(or (not x8110) (not x7568) (not x224) (not x231) (not x8307) (not x8326) x8327)
+(or (not x8327) x8110)
+(or (not x8327) x7568)
+(or (not x8327) x224)
+(or (not x8327) x231)
+(or (not x8327) x8307)
+(or (not x8327) x8326)
+(or (not x8328) (not x8123) (not x8118) (not x7568) (not x8107) x8120 (not x8321) (not x7568) x8329)
+(or (not x8329) x8328)
+(or (not x8329) x8123)
+(or (not x8329) x8118)
+(or (not x8329) x7568)
+(or (not x8329) x8107)
+(or (not x8329) (not x8120))
+(or (not x8329) x8321)
+(or (not x8329) x7568)
+(or x8330 (not x8296))
+(or x8330 (not x8331))
+(or x8330 (not x8332))
+(or x8296 x8331 x8332 (not x8330))
+(or x8303 x8313 x8330)
+(or x8303 (not x8313) (not x8330))
+(or (not x8303) x8313 (not x8330))
+(or (not x8303) (not x8313) x8330)
+(or (not x8333) (not x8303) x8334)
+(or (not x8334) x8333)
+(or (not x8334) x8303)
+(or x8335 (not x8336))
+(or x8335 (not x8334))
+(or x8336 x8334 (not x8335))
+(or (not x8337) (not x8335) x8338)
+(or (not x8338) x8337)
+(or (not x8338) x8335)
+(or (not x8339) (not x7568) (not x8340) (not x7568) x8341)
+(or (not x8341) x8339)
+(or (not x8341) x7568)
+(or (not x8341) x8340)
+(or (not x8341) x7568)
+(or x8342 (not x8113))
+(or x8342 (not x8341))
+(or x8342 (not x8112))
+(or x8113 x8341 x8112 (not x8342))
+(or x8324 x8114 x8342)
+(or x8324 (not x8114) (not x8342))
+(or (not x8324) x8114 (not x8342))
+(or (not x8324) (not x8114) x8342)
+(or (not x8123) (not x8118) (not x7568) (not x8107) x8120 (not x8343) (not x8324) x8344)
+(or (not x8344) x8123)
+(or (not x8344) x8118)
+(or (not x8344) x7568)
+(or (not x8344) x8107)
+(or (not x8344) (not x8120))
+(or (not x8344) x8343)
+(or (not x8344) x8324)
+(or x8345 (not x8344))
+(or x8345 (not x8338))
+(or x8344 x8338 (not x8345))
+(or (not x8346) (not x8345) x8347)
+(or (not x8347) x8346)
+(or (not x8347) x8345)
+(or x8348 (not x8347))
+(or x8348 (not x8329))
+(or x8347 x8329 (not x8348))
+(or (not x223) (not x8116) (not x7568) (not x231) (not x8348) x8349)
+(or (not x8349) x223)
+(or (not x8349) x8116)
+(or (not x8349) x7568)
+(or (not x8349) x231)
+(or (not x8349) x8348)
+(or (not x223) (not x224) (not x8321) (not x7568) x8350)
+(or (not x8350) x223)
+(or (not x8350) x224)
+(or (not x8350) x8321)
+(or (not x8350) x7568)
+(or x8351 (not x8350))
+(or x8351 (not x8349))
+(or x8351 (not x8327))
+(or x8350 x8349 x8327 (not x8351))
+(or (not x8351) (not x7568) x8352)
+(or (not x8352) x8351)
+(or (not x8352) x7568)
+(or (not x8320) (not x8339) (not x7568) x8353)
+(or (not x8353) x8320)
+(or (not x8353) x8339)
+(or (not x8353) x7568)
+(or (not x8323) (not x8308) (not x8354) x8355)
+(or (not x8355) x8323)
+(or (not x8355) x8308)
+(or (not x8355) x8354)
+(or x8356 (not x8355))
+(or x8356 (not x8353))
+(or x8355 x8353 (not x8356))
+(or (not x8110) (not x7568) (not x224) (not x231) (not x8307) (not x8356) x8357)
+(or (not x8357) x8110)
+(or (not x8357) x7568)
+(or (not x8357) x224)
+(or (not x8357) x231)
+(or (not x8357) x8307)
+(or (not x8357) x8356)
+(or (not x8328) (not x8123) (not x8118) (not x7568) (not x8107) x8120 (not x8339) (not x7568) x8358)
+(or (not x8358) x8328)
+(or (not x8358) x8123)
+(or (not x8358) x8118)
+(or (not x8358) x7568)
+(or (not x8358) x8107)
+(or (not x8358) (not x8120))
+(or (not x8358) x8339)
+(or (not x8358) x7568)
+(or x8290 x8296 x8332)
+(or x8290 (not x8296) (not x8332))
+(or (not x8290) x8296 (not x8332))
+(or (not x8290) (not x8296) x8332)
+(or (not x8333) (not x8290) x8359)
+(or (not x8359) x8333)
+(or (not x8359) x8290)
+(or x8360 (not x8336))
+(or x8360 (not x8359))
+(or x8336 x8359 (not x8360))
+(or (not x8337) (not x8360) x8361)
+(or (not x8361) x8337)
+(or (not x8361) x8360)
+(or x8354 x8113 x8112)
+(or x8354 (not x8113) (not x8112))
+(or (not x8354) x8113 (not x8112))
+(or (not x8354) (not x8113) x8112)
+(or (not x8123) (not x8118) (not x7568) (not x8107) x8120 (not x8343) (not x8354) x8362)
+(or (not x8362) x8123)
+(or (not x8362) x8118)
+(or (not x8362) x7568)
+(or (not x8362) x8107)
+(or (not x8362) (not x8120))
+(or (not x8362) x8343)
+(or (not x8362) x8354)
+(or x8363 (not x8362))
+(or x8363 (not x8361))
+(or x8362 x8361 (not x8363))
+(or (not x8346) (not x8363) x8364)
+(or (not x8364) x8346)
+(or (not x8364) x8363)
+(or x8365 (not x8364))
+(or x8365 (not x8358))
+(or x8364 x8358 (not x8365))
+(or (not x223) (not x8116) (not x7568) (not x231) (not x8365) x8366)
+(or (not x8366) x223)
+(or (not x8366) x8116)
+(or (not x8366) x7568)
+(or (not x8366) x231)
+(or (not x8366) x8365)
+(or (not x223) (not x224) (not x8339) (not x7568) x8367)
+(or (not x8367) x223)
+(or (not x8367) x224)
+(or (not x8367) x8339)
+(or (not x8367) x7568)
+(or x8368 (not x8367))
+(or x8368 (not x8366))
+(or x8368 (not x8357))
+(or x8367 x8366 x8357 (not x8368))
+(or (not x8368) (not x7568) x8369)
+(or (not x8369) x8368)
+(or (not x8369) x7568)
+(or (not x8370) (not x8371) (not x8372) (not x8308) x8373)
+(or (not x8373) x8370)
+(or (not x8373) x8371)
+(or (not x8373) x8372)
+(or (not x8373) x8308)
+(or x8320 (not x8373))
+(or x8320 (not x8115))
+(or x8373 x8115 (not x8320))
+(or (not x8320) (not x8340) (not x7568) x8374)
+(or (not x8374) x8320)
+(or (not x8374) x8340)
+(or (not x8374) x7568)
+(or (not x8105) (not x7568) (not x8106) (not x8107) (not x8108) x8098 x8375)
+(or (not x8375) x8105)
+(or (not x8375) x7568)
+(or (not x8375) x8106)
+(or (not x8375) x8107)
+(or (not x8375) x8108)
+(or (not x8375) (not x8098))
+(or (not x8107) (not x8108) (not x8273) x8126)
+(or (not x8126) x8107)
+(or (not x8126) x8108)
+(or (not x8126) x8273)
+(or x8308 (not x8126))
+(or x8308 (not x8119))
+(or x8308 (not x8376))
+(or x8308 (not x8375))
+(or x8126 x8119 x8376 x8375 (not x8308))
+(or (not x8323) (not x8308) (not x8370) x8377)
+(or (not x8377) x8323)
+(or (not x8377) x8308)
+(or (not x8377) x8370)
+(or x8378 (not x8377))
+(or x8378 (not x8374))
+(or x8377 x8374 (not x8378))
+(or (not x8110) (not x7568) (not x224) (not x231) (not x8307) (not x8378) x8379)
+(or (not x8379) x8110)
+(or (not x8379) x7568)
+(or (not x8379) x224)
+(or (not x8379) x231)
+(or (not x8379) x8307)
+(or (not x8379) x8378)
+(or x8372 x8321)
+(or x8372 x7568)
+(or (not x8321) (not x7568) (not x8372))
+(or x8371 x8339)
+(or x8371 x7568)
+(or (not x8339) (not x7568) (not x8371))
+(or (not x8370) (not x8371) (not x8372) x8380)
+(or (not x8380) x8370)
+(or (not x8380) x8371)
+(or (not x8380) x8372)
+(or x8328 (not x8117))
+(or x8328 x8118)
+(or x8328 x7568)
+(or x8328 (not x8119))
+(or x8328 (not x8120))
+(or x8328 (not x8380))
+(or x8117 (not x8118) (not x7568) x8119 x8120 x8380 (not x8328))
+(or (not x8328) (not x8123) (not x8118) (not x7568) (not x8107) x8120 (not x8340) (not x7568) x8381)
+(or (not x8381) x8328)
+(or (not x8381) x8123)
+(or (not x8381) x8118)
+(or (not x8381) x7568)
+(or (not x8381) x8107)
+(or (not x8381) (not x8120))
+(or (not x8381) x8340)
+(or (not x8381) x7568)
+(or x8314 x8233)
+(or x8314 x7568)
+(or x8314 x8232)
+(or x8314 x7568)
+(or (not x8233) (not x7568) (not x8232) (not x7568) (not x8314))
+(or x8333 x8234)
+(or x8333 x7568)
+(or x8333 x8233)
+(or x8333 x7568)
+(or x8333 x8232)
+(or x8333 x7568)
+(or (not x8234) (not x7568) (not x8233) (not x7568) (not x8232) (not x7568) (not x8333))
+(or (not x8333) (not x8255) x8382)
+(or (not x8382) x8333)
+(or (not x8382) x8255)
+(or (not x8233) (not x7568) (not x8232) (not x7568) x8331)
+(or (not x8331) x8233)
+(or (not x8331) x7568)
+(or (not x8331) x8232)
+(or (not x8331) x7568)
+(or (not x8234) (not x7568) (not x8233) (not x7568) (not x8232) (not x7568) x8336)
+(or (not x8336) x8234)
+(or (not x8336) x7568)
+(or (not x8336) x8233)
+(or (not x8336) x7568)
+(or (not x8336) x8232)
+(or (not x8336) x7568)
+(or x8383 (not x8336))
+(or x8383 (not x8382))
+(or x8336 x8382 (not x8383))
+(or (not x8337) (not x8383) x8384)
+(or (not x8384) x8337)
+(or (not x8384) x8383)
+(or x8370 x8340)
+(or x8370 x7568)
+(or (not x8340) (not x7568) (not x8370))
+(or (not x8123) (not x8118) (not x7568) (not x8107) x8120 (not x8343) (not x8370) x8385)
+(or (not x8385) x8123)
+(or (not x8385) x8118)
+(or (not x8385) x7568)
+(or (not x8385) x8107)
+(or (not x8385) (not x8120))
+(or (not x8385) x8343)
+(or (not x8385) x8370)
+(or x8386 (not x8385))
+(or x8386 (not x8384))
+(or x8385 x8384 (not x8386))
+(or x8346 (not x8387))
+(or x8346 (not x8117))
+(or x8346 x8118)
+(or x8346 x7568)
+(or x8346 (not x8119))
+(or x8346 (not x8120))
+(or x8387 x8117 (not x8118) (not x7568) x8119 x8120 (not x8346))
+(or (not x8346) (not x8386) x8388)
+(or (not x8388) x8346)
+(or (not x8388) x8386)
+(or x8389 (not x8388))
+(or x8389 (not x8381))
+(or x8388 x8381 (not x8389))
+(or (not x223) (not x8116) (not x7568) (not x231) (not x8389) x8390)
+(or (not x8390) x223)
+(or (not x8390) x8116)
+(or (not x8390) x7568)
+(or (not x8390) x231)
+(or (not x8390) x8389)
+(or (not x223) (not x224) (not x8340) (not x7568) x8391)
+(or (not x8391) x223)
+(or (not x8391) x224)
+(or (not x8391) x8340)
+(or (not x8391) x7568)
+(or x8392 (not x8391))
+(or x8392 (not x8390))
+(or x8392 (not x8379))
+(or x8391 x8390 x8379 (not x8392))
+(or (not x8392) (not x7568) x8393)
+(or (not x8393) x8392)
+(or (not x8393) x7568)
+(or (not x8110) (not x7568) (not x224) (not x231) (not x8307) (not x8323) (not x8116) (not x7568) x8394)
+(or (not x8394) x8110)
+(or (not x8394) x7568)
+(or (not x8394) x224)
+(or (not x8394) x231)
+(or (not x8394) x8307)
+(or (not x8394) x8323)
+(or (not x8394) x8116)
+(or (not x8394) x7568)
+(or (not x223) (not x8116) (not x7568) (not x231) (not x8337) (not x8116) (not x7568) x8395)
+(or (not x8395) x223)
+(or (not x8395) x8116)
+(or (not x8395) x7568)
+(or (not x8395) x231)
+(or (not x8395) x8337)
+(or (not x8395) x8116)
+(or (not x8395) x7568)
+(or (not x8232) (not x7568) x8332)
+(or (not x8332) x8232)
+(or (not x8332) x7568)
+(or (not x8396) (not x8232) (not x7568) x8397)
+(or (not x8397) x8396)
+(or (not x8397) x8232)
+(or (not x8397) x7568)
+(or x8398 (not x8296))
+(or x8398 (not x8397))
+(or x8296 x8397 (not x8398))
+(or (not x8399) (not x8398) x8400)
+(or (not x8400) x8399)
+(or (not x8400) x8398)
+(or x8401 (not x8313))
+(or x8401 (not x8400))
+(or x8401 (not x7550))
+(or x8313 x8400 x7550 (not x8401))
+(or (not x223) (not x224) (not x8401) x8402)
+(or (not x8402) x223)
+(or (not x8402) x224)
+(or (not x8402) x8401)
+(or x8403 (not x8402))
+(or x8403 (not x8395))
+(or x8403 (not x8394))
+(or x8402 x8395 x8394 (not x8403))
+(or (not x8403) (not x7568) x8404)
+(or (not x8404) x8403)
+(or (not x8404) x7568)
+(or x8273 x8105)
+(or x8273 x7568)
+(or x8273 (not x8136))
+(or (not x8105) (not x7568) x8136 (not x8273))
+(or x8405 x8105)
+(or x8405 x7568)
+(or x8405 (not x8136))
+(or x8405 (not x8119))
+(or x8405 (not x8137))
+(or x8405 (not x8098))
+(or (not x8105) (not x7568) x8136 x8119 x8137 x8098 (not x8405))
+(or (not x8105) (not x7568) (not x8106) x8406)
+(or (not x8406) x8105)
+(or (not x8406) x7568)
+(or (not x8406) x8106)
+(or x8407 (not x8119))
+(or x8407 (not x8137))
+(or x8407 (not x8406))
+(or x8119 x8137 x8406 (not x8407))
+(or (not x8407) (not x8107) (not x8408) (not x8405) x8115)
+(or (not x8115) x8407)
+(or (not x8115) x8107)
+(or (not x8115) x8408)
+(or (not x8115) x8405)
+(or x8323 (not x8112))
+(or x8323 (not x8113))
+(or x8323 (not x8114))
+(or x8323 (not x8115))
+(or x8112 x8113 x8114 x8115 (not x8323))
+(or x8307 (not x7549))
+(or x8307 x8116)
+(or x8307 x7568)
+(or x7549 (not x8116) (not x7568) (not x8307))
+(or (not x8110) (not x7568) (not x224) (not x231) (not x8307) (not x8323) (not x8110) (not x7568) x8409)
+(or (not x8409) x8110)
+(or (not x8409) x7568)
+(or (not x8409) x224)
+(or (not x8409) x231)
+(or (not x8409) x8307)
+(or (not x8409) x8323)
+(or (not x8409) x8110)
+(or (not x8409) x7568)
+(or (not x8123) (not x8106) x8119)
+(or (not x8119) x8123)
+(or (not x8119) x8106)
+(or x8106 x8118)
+(or x8106 x7568)
+(or (not x8118) (not x7568) (not x8106))
+(or x8108 (not x8117))
+(or x8108 x8118)
+(or x8108 x7568)
+(or x8117 (not x8118) (not x7568) (not x8108))
+(or x8408 (not x8117))
+(or x8408 x8118)
+(or x8408 x7568)
+(or x8408 (not x8119))
+(or x8117 (not x8118) (not x7568) x8119 (not x8408))
+(or x8337 (not x8117))
+(or x8337 x8118)
+(or x8337 x7568)
+(or x8337 (not x8119))
+(or x8337 (not x8120))
+(or x8117 (not x8118) (not x7568) x8119 x8120 (not x8337))
+(or (not x8337) (not x8110) (not x7568) x8410)
+(or (not x8410) x8337)
+(or (not x8410) x8110)
+(or (not x8410) x7568)
+(or (not x8321) (not x7568) x8114)
+(or (not x8114) x8321)
+(or (not x8114) x7568)
+(or (not x8339) (not x7568) x8113)
+(or (not x8113) x8339)
+(or (not x8113) x7568)
+(or (not x8340) (not x7568) x8112)
+(or (not x8112) x8340)
+(or (not x8112) x7568)
+(or x8343 (not x8112))
+(or x8343 (not x8113))
+(or x8343 (not x8114))
+(or x8112 x8113 x8114 (not x8343))
+(or (not x8105) (not x7568) x8117)
+(or (not x8117) x8105)
+(or (not x8117) x7568)
+(or x8107 (not x8117))
+(or x8107 (not x8136))
+(or x8117 x8136 (not x8107))
+(or (not x8118) (not x7568) x8136)
+(or (not x8136) x8118)
+(or (not x8136) x7568)
+(or x8123 x8105)
+(or x8123 x7568)
+(or (not x8105) (not x7568) (not x8123))
+(or (not x8123) (not x8118) (not x7568) x8137)
+(or (not x8137) x8123)
+(or (not x8137) x8118)
+(or (not x8137) x7568)
+(or (not x8123) (not x8118) (not x7568) (not x8107) x8376)
+(or (not x8376) x8123)
+(or (not x8376) x8118)
+(or (not x8376) x7568)
+(or (not x8376) x8107)
+(or (not x8123) (not x8118) (not x7568) (not x8107) x8120 (not x8343) x8387)
+(or (not x8387) x8123)
+(or (not x8387) x8118)
+(or (not x8387) x7568)
+(or (not x8387) x8107)
+(or (not x8387) (not x8120))
+(or (not x8387) x8343)
+(or x8411 (not x8387))
+(or x8411 (not x8410))
+(or x8387 x8410 (not x8411))
+(or x231 (not x7549))
+(or x231 (not x7550))
+(or x7549 x7550 (not x231))
+(or (not x8116) (not x7568) x7550)
+(or (not x7550) x8116)
+(or (not x7550) x7568)
+(or (not x223) (not x8116) (not x7568) x8111)
+(or (not x8111) x223)
+(or (not x8111) x8116)
+(or (not x8111) x7568)
+(or (not x223) (not x8116) (not x7568) (not x231) (not x8411) x8412)
+(or (not x8412) x223)
+(or (not x8412) x8116)
+(or (not x8412) x7568)
+(or (not x8412) x231)
+(or (not x8412) x8411)
+(or (not x8110) (not x7568) x7549)
+(or (not x7549) x8110)
+(or (not x7549) x7568)
+(or x8255 x8232)
+(or x8255 x7568)
+(or (not x8232) (not x7568) (not x8255))
+(or (not x8233) (not x7568) x8296)
+(or (not x8296) x8233)
+(or (not x8296) x7568)
+(or x8413 (not x8296))
+(or x8413 x8232)
+(or x8413 x7568)
+(or x8296 (not x8232) (not x7568) (not x8413))
+(or x8396 x8233)
+(or x8396 x7568)
+(or (not x8233) (not x7568) (not x8396))
+(or (not x8396) (not x8413) x8414)
+(or (not x8414) x8396)
+(or (not x8414) x8413)
+(or (not x8234) (not x7568) x8313)
+(or (not x8313) x8234)
+(or (not x8313) x7568)
+(or x8415 (not x8313))
+(or x8415 (not x8414))
+(or x8313 x8414 (not x8415))
+(or x8399 x8234)
+(or x8399 x7568)
+(or (not x8234) (not x7568) (not x8399))
+(or x224 x8116)
+(or x224 x7568)
+(or (not x8116) (not x7568) (not x224))
+(or x223 x8110)
+(or x223 x7568)
+(or (not x8110) (not x7568) (not x223))
+(or (not x223) (not x224) x7524)
+(or (not x7524) x223)
+(or (not x7524) x224)
+(or (not x223) (not x224) (not x8399) (not x8415) (not x8110) (not x7568) x8416)
+(or (not x8416) x223)
+(or (not x8416) x224)
+(or (not x8416) x8399)
+(or (not x8416) x8415)
+(or (not x8416) x8110)
+(or (not x8416) x7568)
+(or x8417 (not x8416))
+(or x8417 (not x8412))
+(or x8417 (not x8409))
+(or x8416 x8412 x8409 (not x8417))
+(or (not x8417) (not x7568) x8418)
+(or (not x8418) x8417)
+(or (not x8418) x7568)
+(or x8419 (not x7569))
+(or x8419 (not x7568))
+(or x7569 x7568 (not x8419))
+(or x7569 x7568 x8420)
+(or (not x8420) (not x7569))
+(or (not x8420) (not x7568))
+(or x8421 (not x8420))
+(or x8421 (not x7569))
+(or x8421 x7568)
+(or x8420 x7569 (not x7568) (not x8421))
+(or (not x8422) (not x221))
+(or (not x8422) x220)
+(or (not x8422) (not x219))
+(or (not x8422) x218)
+(or (not x8422) x217)
+(or (not x8423) (not x221))
+(or (not x8423) x220)
+(or (not x8423) (not x219))
+(or (not x8423) x218)
+(or (not x8423) (not x217))
+(or (not x8424) (not x221))
+(or (not x8424) x220)
+(or (not x8424) (not x219))
+(or (not x8424) (not x218))
+(or (not x8424) x217)
+(or (not x8425) (not x221))
+(or (not x8425) x220)
+(or (not x8425) (not x219))
+(or (not x8425) (not x218))
+(or (not x8425) (not x217))
+(or (not x8426) (not x221))
+(or (not x8426) (not x220))
+(or (not x8426) x219)
+(or (not x8426) x218)
+(or (not x8426) x217)
+(or (not x8427) (not x221))
+(or (not x8427) (not x220))
+(or (not x8427) x219)
+(or (not x8427) x218)
+(or (not x8427) (not x217))
+(or (not x8428) (not x221))
+(or (not x8428) (not x220))
+(or (not x8428) x219)
+(or (not x8428) (not x218))
+(or (not x8428) x217)
+(or (not x8429) (not x221))
+(or (not x8429) (not x220))
+(or (not x8429) x219)
+(or (not x8429) (not x218))
+(or (not x8429) (not x217))
+(or (not x8430) (not x221))
+(or (not x8430) (not x220))
+(or (not x8430) (not x219))
+(or (not x8430) x218)
+(or (not x8430) x217)
+(or (not x8431) (not x221))
+(or (not x8431) (not x220))
+(or (not x8431) (not x219))
+(or (not x8431) x218)
+(or (not x8431) (not x217))
+(or x221 x220 x219 x218 (not x217) x7522)
+(or (not x7522) (not x221))
+(or (not x7522) (not x220))
+(or (not x7522) (not x219))
+(or (not x7522) (not x218))
+(or (not x7522) x217)
+(or (not x8432) (not x221))
+(or (not x8432) (not x220))
+(or (not x8432) (not x219))
+(or (not x8432) (not x218))
+(or (not x8432) (not x217))
+(or x8433 (not x8432))
+(or x8433 (not x7522))
+(or x8433 (not x8431))
+(or x8433 (not x8430))
+(or x8433 (not x8429))
+(or x8433 (not x8428))
+(or x8433 (not x8427))
+(or x8433 (not x8426))
+(or x8433 (not x8425))
+(or x8433 (not x8424))
+(or x8433 (not x8423))
+(or x8432 x7522 x8431 x8430 x8429 x8428 x8427 x8426 x8425 x8424 x8423 (not x8433))
+(or (not x8434) (not x8435) (not x8436) (not x8437) (not x8438) (not x8439) (not x8440) (not x8441) x8442)
+(or (not x8442) x8434)
+(or (not x8442) x8435)
+(or (not x8442) x8436)
+(or (not x8442) x8437)
+(or (not x8442) x8438)
+(or (not x8442) x8439)
+(or (not x8442) x8440)
+(or (not x8442) x8441)
+(or x8443 (not x8444))
+(or x8443 x8445)
+(or x8444 (not x8445) (not x8443))
+(or x8444 (not x8443) (not x8446) x8447)
+(or (not x8447) (not x8444))
+(or (not x8447) x8443)
+(or (not x8447) x8446)
+(or x8436 (not x8448))
+(or x8436 (not x8449))
+(or x8436 (not x240))
+(or x8436 (not x239))
+(or x8436 (not x238))
+(or x8436 x237)
+(or x8436 x236)
+(or x8436 (not x8450))
+(or x8436 (not x8447))
+(or x8448 x8449 x240 x239 x238 (not x237) (not x236) x8450 x8447 (not x8436))
+(or x8451 (not x8452))
+(or x8451 x8453)
+(or x8452 (not x8453) (not x8451))
+(or x8452 (not x8451) (not x8454) x8455)
+(or (not x8455) (not x8452))
+(or (not x8455) x8451)
+(or (not x8455) x8454)
+(or x8435 (not x8448))
+(or x8435 (not x240))
+(or x8435 (not x239))
+(or x8435 (not x238))
+(or x8435 x237)
+(or x8435 (not x236))
+(or x8435 (not x8456))
+(or x8435 (not x8450))
+(or x8435 (not x8455))
+(or x8448 x240 x239 x238 (not x237) x236 x8456 x8450 x8455 (not x8435))
+(or x8457 (not x8458) x8459)
+(or (not x8459) (not x8457))
+(or (not x8459) x8458)
+(or x8460 (not x240))
+(or x8460 (not x239))
+(or x8460 (not x238))
+(or x8460 (not x237))
+(or x8460 x236)
+(or x8460 (not x8459))
+(or x240 x239 x238 x237 (not x236) x8459 (not x8460))
+(or (not x8460) (not x8435) (not x8436) (not x8437) (not x8438) (not x8441) x8461)
+(or (not x8461) x8460)
+(or (not x8461) x8435)
+(or (not x8461) x8436)
+(or (not x8461) x8437)
+(or (not x8461) x8438)
+(or (not x8461) x8441)
+(or x8446 (not x8444))
+(or x8446 (not x8445))
+(or x8444 x8445 (not x8446))
+(or x8462 (not x8448))
+(or x8462 (not x8449))
+(or x8462 (not x240))
+(or x8462 (not x239))
+(or x8462 (not x238))
+(or x8462 x237)
+(or x8462 x236)
+(or x8462 (not x8450))
+(or x8462 (not x8444))
+(or x8462 (not x8445))
+(or x8448 x8449 x240 x239 x238 (not x237) (not x236) x8450 x8444 x8445 (not x8462))
+(or x8454 (not x8452))
+(or x8454 (not x8453))
+(or x8452 x8453 (not x8454))
+(or x8463 (not x8448))
+(or x8463 (not x240))
+(or x8463 (not x239))
+(or x8463 (not x238))
+(or x8463 x237)
+(or x8463 (not x236))
+(or x8463 (not x8456))
+(or x8463 (not x8450))
+(or x8463 (not x8452))
+(or x8463 (not x8453))
+(or x8448 x240 x239 x238 (not x237) x236 x8456 x8450 x8452 x8453 (not x8463))
+(or x8464 (not x8457))
+(or x8464 (not x8465))
+(or x8464 x8466)
+(or x8457 x8465 (not x8466) (not x8464))
+(or x8457 (not x8467) (not x8464) (not x8458) x8468)
+(or (not x8468) (not x8457))
+(or (not x8468) x8467)
+(or (not x8468) x8464)
+(or (not x8468) x8458)
+(or x8434 (not x240))
+(or x8434 (not x239))
+(or x8434 (not x238))
+(or x8434 (not x237))
+(or x8434 x236)
+(or x8434 (not x8468))
+(or x240 x239 x238 x237 (not x236) x8468 (not x8434))
+(or (not x8434) (not x8463) (not x8462) (not x8439) (not x8440) (not x8441) x8469)
+(or (not x8469) x8434)
+(or (not x8469) x8463)
+(or (not x8469) x8462)
+(or (not x8469) x8439)
+(or (not x8469) x8440)
+(or (not x8469) x8441)
+(or x8470 (not x8448))
+(or x8470 (not x8449))
+(or x8470 (not x8471))
+(or x8470 (not x8472))
+(or x8470 (not x8473))
+(or x8470 (not x8474))
+(or x8470 (not x240))
+(or x8470 x239)
+(or x8470 (not x238))
+(or x8470 (not x237))
+(or x8470 x236)
+(or x8470 (not x244))
+(or x8470 (not x245))
+(or x8470 (not x246))
+(or x8470 (not x247))
+(or x8470 (not x248))
+(or x8470 (not x249))
+(or x8470 (not x8475))
+(or x8470 (not x8476))
+(or x8470 (not x8477))
+(or x8448 x8449 x8471 x8472 x8473 x8474 x240 (not x239) x238 x237 (not x236) x244 x245 x246 x247 x248 x249 x8475 x8476 x8477 (not x8470))
+(or x8478 (not x8448))
+(or x8478 (not x8449))
+(or x8478 (not x8471))
+(or x8478 (not x8472))
+(or x8478 (not x8473))
+(or x8478 (not x240))
+(or x8478 x239)
+(or x8478 (not x238))
+(or x8478 (not x237))
+(or x8478 (not x236))
+(or x8478 (not x8456))
+(or x8478 (not x8475))
+(or x8478 (not x8476))
+(or x8478 (not x244))
+(or x8478 (not x245))
+(or x8478 (not x246))
+(or x8478 (not x247))
+(or x8478 (not x248))
+(or x8478 (not x249))
+(or x8478 (not x8475))
+(or x8478 (not x8476))
+(or x8478 (not x8479))
+(or x8448 x8449 x8471 x8472 x8473 x240 (not x239) x238 x237 x236 x8456 x8475 x8476 x244 x245 x246 x247 x248 x249 x8475 x8476 x8479 (not x8478))
+(or x8480 (not x8448))
+(or x8480 (not x8449))
+(or x8480 (not x8471))
+(or x8480 (not x8472))
+(or x8480 (not x240))
+(or x8480 (not x239))
+(or x8480 x238)
+(or x8480 (not x237))
+(or x8480 x236)
+(or x8480 (not x244))
+(or x8480 (not x245))
+(or x8480 (not x246))
+(or x8480 (not x247))
+(or x8480 (not x248))
+(or x8480 (not x249))
+(or x8480 (not x8475))
+(or x8480 (not x8476))
+(or x8480 (not x8481))
+(or x8448 x8449 x8471 x8472 x240 x239 (not x238) x237 (not x236) x244 x245 x246 x247 x248 x249 x8475 x8476 x8481 (not x8480))
+(or x8482 (not x8448))
+(or x8482 (not x8449))
+(or x8482 (not x8471))
+(or x8482 (not x240))
+(or x8482 (not x239))
+(or x8482 x238)
+(or x8482 (not x237))
+(or x8482 (not x236))
+(or x8482 (not x8475))
+(or x8482 (not x8476))
+(or x8482 (not x244))
+(or x8482 (not x245))
+(or x8482 (not x246))
+(or x8482 (not x247))
+(or x8482 (not x248))
+(or x8482 (not x249))
+(or x8482 (not x8475))
+(or x8482 (not x8476))
+(or x8482 (not x8483))
+(or x8448 x8449 x8471 x240 x239 (not x238) x237 x236 x8475 x8476 x244 x245 x246 x247 x248 x249 x8475 x8476 x8483 (not x8482))
+(or x8458 (not x8457))
+(or x8458 (not x8465))
+(or x8458 (not x8466))
+(or x8457 x8465 x8466 (not x8458))
+(or (not x8467) (not x8458) x8484)
+(or (not x8484) x8467)
+(or (not x8484) x8458)
+(or x8485 (not x240))
+(or x8485 (not x239))
+(or x8485 (not x238))
+(or x8485 (not x237))
+(or x8485 x236)
+(or x8485 (not x8484))
+(or x240 x239 x238 x237 (not x236) x8484 (not x8485))
+(or (not x8485) (not x8486) (not x8487) (not x8482) (not x8480) (not x8478) (not x8470) (not x8441) x8488)
+(or (not x8488) x8485)
+(or (not x8488) x8486)
+(or (not x8488) x8487)
+(or (not x8488) x8482)
+(or (not x8488) x8480)
+(or (not x8488) x8478)
+(or (not x8488) x8470)
+(or (not x8488) x8441)
+(or x240 (not x239) x238 x237 (not x236) x244 x245 x246 x247 x248 x249 (not x242) (not x243) x8489)
+(or (not x8489) (not x240))
+(or (not x8489) x239)
+(or (not x8489) (not x238))
+(or (not x8489) (not x237))
+(or (not x8489) x236)
+(or (not x8489) (not x244))
+(or (not x8489) (not x245))
+(or (not x8489) (not x246))
+(or (not x8489) (not x247))
+(or (not x8489) (not x248))
+(or (not x8489) (not x249))
+(or (not x8489) x242)
+(or (not x8489) x243)
+(or x8441 (not x8448))
+(or x8441 (not x8449))
+(or x8441 (not x8471))
+(or x8441 (not x8472))
+(or x8441 (not x8473))
+(or x8441 (not x8474))
+(or x8441 (not x8489))
+(or x8448 x8449 x8471 x8472 x8473 x8474 x8489 (not x8441))
+(or x240 (not x239) x238 x237 x236 (not x241) (not x242) (not x243) x244 x245 x246 x247 x248 x249 (not x242) (not x243) x8474)
+(or (not x8474) (not x240))
+(or (not x8474) x239)
+(or (not x8474) (not x238))
+(or (not x8474) (not x237))
+(or (not x8474) (not x236))
+(or (not x8474) x241)
+(or (not x8474) x242)
+(or (not x8474) x243)
+(or (not x8474) (not x244))
+(or (not x8474) (not x245))
+(or (not x8474) (not x246))
+(or (not x8474) (not x247))
+(or (not x8474) (not x248))
+(or (not x8474) (not x249))
+(or (not x8474) x242)
+(or (not x8474) x243)
+(or x8440 (not x8448))
+(or x8440 (not x8449))
+(or x8440 (not x8471))
+(or x8440 (not x8472))
+(or x8440 (not x8473))
+(or x8440 (not x8474))
+(or x8440 (not x240))
+(or x8440 x239)
+(or x8440 (not x238))
+(or x8440 (not x237))
+(or x8440 x236)
+(or x8440 (not x244))
+(or x8440 (not x245))
+(or x8440 (not x246))
+(or x8440 (not x247))
+(or x8440 (not x248))
+(or x8440 (not x249))
+(or x8440 (not x8475))
+(or x8440 (not x8476))
+(or x8448 x8449 x8471 x8472 x8473 x8474 x240 (not x239) x238 x237 (not x236) x244 x245 x246 x247 x248 x249 x8475 x8476 (not x8440))
+(or x8490 (not x8448))
+(or x8490 (not x8449))
+(or x8490 (not x8471))
+(or x8490 (not x8472))
+(or x8490 (not x8473))
+(or x8490 (not x8474))
+(or x8490 (not x240))
+(or x8490 x239)
+(or x8490 (not x238))
+(or x8490 (not x237))
+(or x8490 x236)
+(or x8490 (not x244))
+(or x8490 (not x245))
+(or x8490 (not x246))
+(or x8490 (not x247))
+(or x8490 (not x248))
+(or x8490 (not x249))
+(or x8490 (not x8475))
+(or x8490 (not x8476))
+(or x8490 x8477)
+(or x8448 x8449 x8471 x8472 x8473 x8474 x240 (not x239) x238 x237 (not x236) x244 x245 x246 x247 x248 x249 x8475 x8476 (not x8477) (not x8490))
+(or x240 x239 (not x238) x237 (not x236) x244 x245 x246 x247 x248 x249 (not x242) (not x243) x8473)
+(or (not x8473) (not x240))
+(or (not x8473) (not x239))
+(or (not x8473) x238)
+(or (not x8473) (not x237))
+(or (not x8473) x236)
+(or (not x8473) (not x244))
+(or (not x8473) (not x245))
+(or (not x8473) (not x246))
+(or (not x8473) (not x247))
+(or (not x8473) (not x248))
+(or (not x8473) (not x249))
+(or (not x8473) x242)
+(or (not x8473) x243)
+(or x8439 (not x8448))
+(or x8439 (not x8449))
+(or x8439 (not x8471))
+(or x8439 (not x8472))
+(or x8439 (not x8473))
+(or x8439 (not x240))
+(or x8439 x239)
+(or x8439 (not x238))
+(or x8439 (not x237))
+(or x8439 (not x236))
+(or x8439 (not x8456))
+(or x8439 (not x8475))
+(or x8439 (not x8476))
+(or x8439 (not x244))
+(or x8439 (not x245))
+(or x8439 (not x246))
+(or x8439 (not x247))
+(or x8439 (not x248))
+(or x8439 (not x249))
+(or x8439 (not x8475))
+(or x8439 (not x8476))
+(or x8448 x8449 x8471 x8472 x8473 x240 (not x239) x238 x237 x236 x8456 x8475 x8476 x244 x245 x246 x247 x248 x249 x8475 x8476 (not x8439))
+(or x8491 (not x8448))
+(or x8491 (not x8449))
+(or x8491 (not x8471))
+(or x8491 (not x8472))
+(or x8491 (not x8473))
+(or x8491 (not x240))
+(or x8491 x239)
+(or x8491 (not x238))
+(or x8491 (not x237))
+(or x8491 (not x236))
+(or x8491 (not x8456))
+(or x8491 (not x8475))
+(or x8491 (not x8476))
+(or x8491 (not x244))
+(or x8491 (not x245))
+(or x8491 (not x246))
+(or x8491 (not x247))
+(or x8491 (not x248))
+(or x8491 (not x249))
+(or x8491 (not x8475))
+(or x8491 (not x8476))
+(or x8491 x8479)
+(or x8448 x8449 x8471 x8472 x8473 x240 (not x239) x238 x237 x236 x8456 x8475 x8476 x244 x245 x246 x247 x248 x249 x8475 x8476 (not x8479) (not x8491))
+(or x240 x239 (not x238) x237 x236 (not x242) (not x243) x244 x245 x246 x247 x248 x249 (not x242) (not x243) x8472)
+(or (not x8472) (not x240))
+(or (not x8472) (not x239))
+(or (not x8472) x238)
+(or (not x8472) (not x237))
+(or (not x8472) (not x236))
+(or (not x8472) x242)
+(or (not x8472) x243)
+(or (not x8472) (not x244))
+(or (not x8472) (not x245))
+(or (not x8472) (not x246))
+(or (not x8472) (not x247))
+(or (not x8472) (not x248))
+(or (not x8472) (not x249))
+(or (not x8472) x242)
+(or (not x8472) x243)
+(or x8438 (not x8448))
+(or x8438 (not x8449))
+(or x8438 (not x8471))
+(or x8438 (not x8472))
+(or x8438 (not x240))
+(or x8438 (not x239))
+(or x8438 x238)
+(or x8438 (not x237))
+(or x8438 x236)
+(or x8438 (not x244))
+(or x8438 (not x245))
+(or x8438 (not x246))
+(or x8438 (not x247))
+(or x8438 (not x248))
+(or x8438 (not x249))
+(or x8438 (not x8475))
+(or x8438 (not x8476))
+(or x8448 x8449 x8471 x8472 x240 x239 (not x238) x237 (not x236) x244 x245 x246 x247 x248 x249 x8475 x8476 (not x8438))
+(or x8492 (not x8448))
+(or x8492 (not x8449))
+(or x8492 (not x8471))
+(or x8492 (not x8472))
+(or x8492 (not x240))
+(or x8492 (not x239))
+(or x8492 x238)
+(or x8492 (not x237))
+(or x8492 x236)
+(or x8492 (not x244))
+(or x8492 (not x245))
+(or x8492 (not x246))
+(or x8492 (not x247))
+(or x8492 (not x248))
+(or x8492 (not x249))
+(or x8492 (not x8475))
+(or x8492 (not x8476))
+(or x8492 x8481)
+(or x8448 x8449 x8471 x8472 x240 x239 (not x238) x237 (not x236) x244 x245 x246 x247 x248 x249 x8475 x8476 (not x8481) (not x8492))
+(or x240 x239 x238 (not x237) (not x236) (not x250) x8471)
+(or (not x8471) (not x240))
+(or (not x8471) (not x239))
+(or (not x8471) (not x238))
+(or (not x8471) x237)
+(or (not x8471) x236)
+(or (not x8471) x250)
+(or x8437 (not x8448))
+(or x8437 (not x8449))
+(or x8437 (not x8471))
+(or x8437 (not x240))
+(or x8437 (not x239))
+(or x8437 x238)
+(or x8437 (not x237))
+(or x8437 (not x236))
+(or x8437 (not x8475))
+(or x8437 (not x8476))
+(or x8437 (not x244))
+(or x8437 (not x245))
+(or x8437 (not x246))
+(or x8437 (not x247))
+(or x8437 (not x248))
+(or x8437 (not x249))
+(or x8437 (not x8475))
+(or x8437 (not x8476))
+(or x8448 x8449 x8471 x240 x239 (not x238) x237 x236 x8475 x8476 x244 x245 x246 x247 x248 x249 x8475 x8476 (not x8437))
+(or x8493 (not x8448))
+(or x8493 (not x8449))
+(or x8493 (not x8471))
+(or x8493 (not x240))
+(or x8493 (not x239))
+(or x8493 x238)
+(or x8493 (not x237))
+(or x8493 (not x236))
+(or x8493 (not x8475))
+(or x8493 (not x8476))
+(or x8493 (not x244))
+(or x8493 (not x245))
+(or x8493 (not x246))
+(or x8493 (not x247))
+(or x8493 (not x248))
+(or x8493 (not x249))
+(or x8493 (not x8475))
+(or x8493 (not x8476))
+(or x8493 x8483)
+(or x8448 x8449 x8471 x240 x239 (not x238) x237 x236 x8475 x8476 x244 x245 x246 x247 x248 x249 x8475 x8476 (not x8483) (not x8493))
+(or x241 x8494)
+(or x241 (not x8475))
+(or x241 (not x8476))
+(or (not x8494) x8475 x8476 (not x241))
+(or x240 x239 x238 (not x237) x236 (not x241) (not x250) x8449)
+(or (not x8449) (not x240))
+(or (not x8449) (not x239))
+(or (not x8449) (not x238))
+(or (not x8449) x237)
+(or (not x8449) (not x236))
+(or (not x8449) x241)
+(or (not x8449) x250)
+(or x8487 (not x8448))
+(or x8487 (not x8449))
+(or x8487 (not x240))
+(or x8487 (not x239))
+(or x8487 (not x238))
+(or x8487 x237)
+(or x8487 x236)
+(or x8487 (not x8450))
+(or x8487 x8444)
+(or x8448 x8449 x240 x239 x238 (not x237) (not x236) x8450 (not x8444) (not x8487))
+(or (not x8494) (not x242) (not x243) x8456)
+(or (not x8456) x8494)
+(or (not x8456) x242)
+(or (not x8456) x243)
+(or x8486 (not x8448))
+(or x8486 (not x240))
+(or x8486 (not x239))
+(or x8486 (not x238))
+(or x8486 x237)
+(or x8486 (not x236))
+(or x8486 (not x8456))
+(or x8486 (not x8450))
+(or x8486 x8452)
+(or x8448 x240 x239 x238 (not x237) x236 x8456 x8450 (not x8452) (not x8486))
+(or x8467 (not x8457))
+(or x8467 x8465)
+(or x8457 (not x8465) (not x8467))
+(or x8457 (not x8467) x8496)
+(or (not x8496) (not x8457))
+(or (not x8496) x8467)
+(or x8497 (not x240))
+(or x8497 (not x239))
+(or x8497 (not x238))
+(or x8497 (not x237))
+(or x8497 x236)
+(or x8497 (not x8496))
+(or x240 x239 x238 x237 (not x236) x8496 (not x8497))
+(or (not x8497) (not x8486) (not x8487) (not x8493) (not x8492) (not x8491) (not x8490) (not x8441) x8498)
+(or (not x8498) x8497)
+(or (not x8498) x8486)
+(or (not x8498) x8487)
+(or (not x8498) x8493)
+(or (not x8498) x8492)
+(or (not x8498) x8491)
+(or (not x8498) x8490)
+(or (not x8498) x8441)
+(or (not x8499) (not x8500) (not x8494) x8501)
+(or (not x8501) x8499)
+(or (not x8501) x8500)
+(or (not x8501) x8494)
+(or x8499 (not x8502) x8503)
+(or (not x8503) (not x8499))
+(or (not x8503) x8502)
+(or x8504 (not x8503))
+(or x8504 (not x8501))
+(or x8503 x8501 (not x8504))
+(or (not x8504) (not x8494) x8505)
+(or (not x8505) x8504)
+(or (not x8505) x8494)
+(or (not x8499) (not x8506) (not x8494) x8507)
+(or (not x8507) x8499)
+(or (not x8507) x8506)
+(or (not x8507) x8494)
+(or x8499 (not x8508) x8509)
+(or (not x8509) (not x8499))
+(or (not x8509) x8508)
+(or x8510 (not x8509))
+(or x8510 (not x8507))
+(or x8509 x8507 (not x8510))
+(or (not x8510) (not x8494) x8511)
+(or (not x8511) x8510)
+(or (not x8511) x8494)
+(or (not x8499) (not x8512) (not x8494) x8513)
+(or (not x8513) x8499)
+(or (not x8513) x8512)
+(or (not x8513) x8494)
+(or x8499 (not x8514) x8515)
+(or (not x8515) (not x8499))
+(or (not x8515) x8514)
+(or x8516 (not x8515))
+(or x8516 (not x8513))
+(or x8515 x8513 (not x8516))
+(or (not x8516) (not x8494) x8517)
+(or (not x8517) x8516)
+(or (not x8517) x8494)
+(or (not x8518) (not x8519) (not x8494) x8520)
+(or (not x8520) x8518)
+(or (not x8520) x8519)
+(or (not x8520) x8494)
+(or (not x8521) (not x245) x8522 x8523)
+(or (not x8523) x8521)
+(or (not x8523) x245)
+(or (not x8523) (not x8522))
+(or x8524 (not x8523))
+(or x8524 (not x8520))
+(or x8523 x8520 (not x8524))
+(or (not x8524) (not x8494) x8525)
+(or (not x8525) x8524)
+(or (not x8525) x8494)
+(or (not x8526) (not x8527) (not x8494) x8528)
+(or (not x8528) x8526)
+(or (not x8528) x8527)
+(or (not x8528) x8494)
+(or (not x8529) (not x244) x8530 x8531)
+(or (not x8531) x8529)
+(or (not x8531) x244)
+(or (not x8531) (not x8530))
+(or x8532 (not x8531))
+(or x8532 (not x8528))
+(or x8531 x8528 (not x8532))
+(or (not x8532) (not x8494) x8533)
+(or (not x8533) x8532)
+(or (not x8533) x8494)
+(or (not x8518) (not x8534) (not x8494) x8535)
+(or (not x8535) x8518)
+(or (not x8535) x8534)
+(or (not x8535) x8494)
+(or (not x8521) (not x245) x8536 x8537)
+(or (not x8537) x8521)
+(or (not x8537) x245)
+(or (not x8537) (not x8536))
+(or x8538 (not x8537))
+(or x8538 (not x8535))
+(or x8537 x8535 (not x8538))
+(or (not x8538) (not x8494) x8539)
+(or (not x8539) x8538)
+(or (not x8539) x8494)
+(or (not x8526) (not x8540) (not x8494) x8541)
+(or (not x8541) x8526)
+(or (not x8541) x8540)
+(or (not x8541) x8494)
+(or (not x8529) (not x244) x8542 x8543)
+(or (not x8543) x8529)
+(or (not x8543) x244)
+(or (not x8543) (not x8542))
+(or x8544 (not x8543))
+(or x8544 (not x8541))
+(or x8543 x8541 (not x8544))
+(or (not x8544) (not x8494) x8545)
+(or (not x8545) x8544)
+(or (not x8545) x8494)
+(or (not x8518) (not x8546) (not x8494) x8547)
+(or (not x8547) x8518)
+(or (not x8547) x8546)
+(or (not x8547) x8494)
+(or (not x8521) (not x245) x8548 x8549)
+(or (not x8549) x8521)
+(or (not x8549) x245)
+(or (not x8549) (not x8548))
+(or x8550 (not x8549))
+(or x8550 (not x8547))
+(or x8549 x8547 (not x8550))
+(or (not x8550) (not x8494) x8551)
+(or (not x8551) x8550)
+(or (not x8551) x8494)
+(or (not x8526) (not x8552) (not x8494) x8553)
+(or (not x8553) x8526)
+(or (not x8553) x8552)
+(or (not x8553) x8494)
+(or (not x8529) (not x244) x8554 x8555)
+(or (not x8555) x8529)
+(or (not x8555) x244)
+(or (not x8555) (not x8554))
+(or x8556 (not x8555))
+(or x8556 (not x8553))
+(or x8555 x8553 (not x8556))
+(or (not x8556) (not x8494) x8557)
+(or (not x8557) x8556)
+(or (not x8557) x8494)
+(or (not x8518) (not x8558) (not x8494) x8559)
+(or (not x8559) x8518)
+(or (not x8559) x8558)
+(or (not x8559) x8494)
+(or (not x8521) (not x245) (not x8560) x8561)
+(or (not x8561) x8521)
+(or (not x8561) x245)
+(or (not x8561) x8560)
+(or x8562 (not x8561))
+(or x8562 (not x8559))
+(or x8561 x8559 (not x8562))
+(or (not x8562) (not x8494) x8563)
+(or (not x8563) x8562)
+(or (not x8563) x8494)
+(or (not x8526) (not x8564) (not x8494) x8565)
+(or (not x8565) x8526)
+(or (not x8565) x8564)
+(or (not x8565) x8494)
+(or (not x8529) (not x244) (not x8566) x8567)
+(or (not x8567) x8529)
+(or (not x8567) x244)
+(or (not x8567) x8566)
+(or x8568 (not x8567))
+(or x8568 (not x8565))
+(or x8567 x8565 (not x8568))
+(or (not x8568) (not x8494) x8569)
+(or (not x8569) x8568)
+(or (not x8569) x8494)
+(or (not x8518) (not x8570) (not x8494) x8571)
+(or (not x8571) x8518)
+(or (not x8571) x8570)
+(or (not x8571) x8494)
+(or (not x8521) (not x245) x8572 x8573)
+(or (not x8573) x8521)
+(or (not x8573) x245)
+(or (not x8573) (not x8572))
+(or x8574 (not x8573))
+(or x8574 (not x8571))
+(or x8573 x8571 (not x8574))
+(or (not x8574) (not x8494) x8575)
+(or (not x8575) x8574)
+(or (not x8575) x8494)
+(or (not x8526) (not x8576) (not x8494) x8577)
+(or (not x8577) x8526)
+(or (not x8577) x8576)
+(or (not x8577) x8494)
+(or (not x8529) (not x244) x8578 x8579)
+(or (not x8579) x8529)
+(or (not x8579) x244)
+(or (not x8579) (not x8578))
+(or x8580 (not x8579))
+(or x8580 (not x8577))
+(or x8579 x8577 (not x8580))
+(or (not x8580) (not x8494) x8581)
+(or (not x8581) x8580)
+(or (not x8581) x8494)
+(or (not x8518) (not x8582) (not x8494) x8583)
+(or (not x8583) x8518)
+(or (not x8583) x8582)
+(or (not x8583) x8494)
+(or (not x8521) (not x245) x8584 x8585)
+(or (not x8585) x8521)
+(or (not x8585) x245)
+(or (not x8585) (not x8584))
+(or x8586 (not x8585))
+(or x8586 (not x8583))
+(or x8585 x8583 (not x8586))
+(or (not x8586) (not x8494) x8587)
+(or (not x8587) x8586)
+(or (not x8587) x8494)
+(or (not x8526) (not x8588) (not x8494) x8589)
+(or (not x8589) x8526)
+(or (not x8589) x8588)
+(or (not x8589) x8494)
+(or (not x8529) (not x244) x8590 x8591)
+(or (not x8591) x8529)
+(or (not x8591) x244)
+(or (not x8591) (not x8590))
+(or x8592 (not x8591))
+(or x8592 (not x8589))
+(or x8591 x8589 (not x8592))
+(or (not x8592) (not x8494) x8593)
+(or (not x8593) x8592)
+(or (not x8593) x8494)
+(or (not x8594) (not x8595) (not x8494) x8596)
+(or (not x8596) x8594)
+(or (not x8596) x8595)
+(or (not x8596) x8494)
+(or (not x8597) (not x247) (not x247) x8598)
+(or (not x8598) x8597)
+(or (not x8598) x247)
+(or x8599 (not x8598))
+(or x8599 (not x8596))
+(or x8598 x8596 (not x8599))
+(or (not x8599) (not x8494) x8600)
+(or (not x8600) x8599)
+(or (not x8600) x8494)
+(or (not x8601) (not x8602) (not x8494) x8603)
+(or (not x8603) x8601)
+(or (not x8603) x8602)
+(or (not x8603) x8494)
+(or (not x8604) (not x246) (not x246) x8605)
+(or (not x8605) x8604)
+(or (not x8605) x246)
+(or x8606 (not x8605))
+(or x8606 (not x8603))
+(or x8605 x8603 (not x8606))
+(or (not x8606) (not x8494) x8607)
+(or (not x8607) x8606)
+(or (not x8607) x8494)
+(or x8601 (not x8608))
+(or x8601 x246)
+(or x8608 (not x246) (not x8601))
+(or (not x8601) (not x8609) (not x8494) (not x8610) (not x8494) x8611)
+(or (not x8611) x8601)
+(or (not x8611) x8609)
+(or (not x8611) x8494)
+(or (not x8611) x8610)
+(or (not x8611) x8494)
+(or (not x8604) (not x246) x8612)
+(or (not x8612) x8604)
+(or (not x8612) x246)
+(or x8613 (not x8612))
+(or x8613 (not x8611))
+(or x8612 x8611 (not x8613))
+(or (not x8613) (not x8494) x8614)
+(or (not x8614) x8613)
+(or (not x8614) x8494)
+(or x8615 x8616)
+(or x8615 x8494)
+(or x8615 x8617)
+(or x8615 x8494)
+(or x8615 x8609)
+(or x8615 x8494)
+(or (not x8616) (not x8494) (not x8617) (not x8494) (not x8609) (not x8494) (not x8615))
+(or (not x8615) (not x8618) x8619)
+(or (not x8619) x8615)
+(or (not x8619) x8618)
+(or x8620 x8616)
+(or x8620 x8494)
+(or x8620 x8616)
+(or x8620 x8494)
+(or x8620 (not x8619))
+(or (not x8616) (not x8494) (not x8616) (not x8494) x8619 (not x8620))
+(or (not x8621) (not x8622) x8623)
+(or (not x8623) x8621)
+(or (not x8623) x8622)
+(or x8618 (not x8624))
+(or x8618 (not x8623))
+(or x8624 x8623 (not x8618))
+(or (not x8616) (not x8494) (not x8617) (not x8494) (not x8609) (not x8494) x8625)
+(or (not x8625) x8616)
+(or (not x8625) x8494)
+(or (not x8625) x8617)
+(or (not x8625) x8494)
+(or (not x8625) x8609)
+(or (not x8625) x8494)
+(or x8626 (not x8625))
+(or x8626 (not x8624))
+(or x8626 (not x8623))
+(or x8625 x8624 x8623 (not x8626))
+(or x8627 x8624 x8626)
+(or x8627 (not x8624) (not x8626))
+(or (not x8627) x8624 (not x8626))
+(or (not x8627) (not x8624) x8626)
+(or x8628 x8627 x8620)
+(or x8628 (not x8627) (not x8620))
+(or (not x8628) x8627 (not x8620))
+(or (not x8628) (not x8627) x8620)
+(or (not x8629) (not x8630) (not x8631) (not x8632) (not x8628) x8633)
+(or (not x8633) x8629)
+(or (not x8633) x8630)
+(or (not x8633) x8631)
+(or (not x8633) x8632)
+(or (not x8633) x8628)
+(or (not x8634) (not x8616) (not x8494) x8635)
+(or (not x8635) x8634)
+(or (not x8635) x8616)
+(or (not x8635) x8494)
+(or x8636 (not x8635))
+(or x8636 (not x8633))
+(or x8635 x8633 (not x8636))
+(or (not x8636) (not x8494) x8637)
+(or (not x8637) x8636)
+(or (not x8637) x8494)
+(or x8594 (not x8638))
+(or x8594 x247)
+(or x8638 (not x247) (not x8594))
+(or (not x8594) (not x8639) (not x8494) (not x8640) (not x8494) x8641)
+(or (not x8641) x8594)
+(or (not x8641) x8639)
+(or (not x8641) x8494)
+(or (not x8641) x8640)
+(or (not x8641) x8494)
+(or (not x8597) (not x247) x8642)
+(or (not x8642) x8597)
+(or (not x8642) x247)
+(or x8643 (not x8642))
+(or x8643 (not x8641))
+(or x8642 x8641 (not x8643))
+(or (not x8643) (not x8494) x8644)
+(or (not x8644) x8643)
+(or (not x8644) x8494)
+(or x8526 (not x8645))
+(or x8526 x244)
+(or x8645 (not x244) (not x8526))
+(or (not x8526) (not x8646) (not x8494) (not x8647) (not x8494) x8648)
+(or (not x8648) x8526)
+(or (not x8648) x8646)
+(or (not x8648) x8494)
+(or (not x8648) x8647)
+(or (not x8648) x8494)
+(or (not x8529) (not x244) x8649)
+(or (not x8649) x8529)
+(or (not x8649) x244)
+(or x8650 (not x8649))
+(or x8650 (not x8648))
+(or x8649 x8648 (not x8650))
+(or (not x8650) (not x8494) x8651)
+(or (not x8651) x8650)
+(or (not x8651) x8494)
+(or x8652 x8653)
+(or x8652 x8494)
+(or x8652 x8617)
+(or x8652 x8494)
+(or x8652 x8646)
+(or x8652 x8494)
+(or (not x8653) (not x8494) (not x8617) (not x8494) (not x8646) (not x8494) (not x8652))
+(or (not x8652) (not x8654) x8655)
+(or (not x8655) x8652)
+(or (not x8655) x8654)
+(or x8656 x8653)
+(or x8656 x8494)
+(or x8656 x8653)
+(or x8656 x8494)
+(or x8656 (not x8655))
+(or (not x8653) (not x8494) (not x8653) (not x8494) x8655 (not x8656))
+(or (not x8657) (not x8658) x8659)
+(or (not x8659) x8657)
+(or (not x8659) x8658)
+(or x8654 (not x8660))
+(or x8654 (not x8659))
+(or x8660 x8659 (not x8654))
+(or (not x8653) (not x8494) (not x8617) (not x8494) (not x8646) (not x8494) x8661)
+(or (not x8661) x8653)
+(or (not x8661) x8494)
+(or (not x8661) x8617)
+(or (not x8661) x8494)
+(or (not x8661) x8646)
+(or (not x8661) x8494)
+(or x8662 (not x8661))
+(or x8662 (not x8660))
+(or x8662 (not x8659))
+(or x8661 x8660 x8659 (not x8662))
+(or x8663 x8660 x8662)
+(or x8663 (not x8660) (not x8662))
+(or (not x8663) x8660 (not x8662))
+(or (not x8663) (not x8660) x8662)
+(or x8664 x8663 x8656)
+(or x8664 (not x8663) (not x8656))
+(or (not x8664) x8663 (not x8656))
+(or (not x8664) (not x8663) x8656)
+(or (not x8629) (not x8665) (not x8494) x8666 (not x8494) (not x8632) (not x8667) (not x8631) (not x8632) (not x8664) x8668)
+(or (not x8668) x8629)
+(or (not x8668) x8665)
+(or (not x8668) x8494)
+(or (not x8668) (not x8666))
+(or (not x8668) x8494)
+(or (not x8668) x8632)
+(or (not x8668) x8667)
+(or (not x8668) x8631)
+(or (not x8668) x8632)
+(or (not x8668) x8664)
+(or (not x8669) (not x8653) (not x8494) x8670)
+(or (not x8670) x8669)
+(or (not x8670) x8653)
+(or (not x8670) x8494)
+(or x8671 (not x8670))
+(or x8671 (not x8668))
+(or x8670 x8668 (not x8671))
+(or (not x8671) (not x8494) x8672)
+(or (not x8672) x8671)
+(or (not x8672) x8494)
+(or x8518 (not x8673))
+(or x8518 x245)
+(or x8673 (not x245) (not x8518))
+(or (not x8518) (not x8674) (not x8494) (not x8675) (not x8494) x8676)
+(or (not x8676) x8518)
+(or (not x8676) x8674)
+(or (not x8676) x8494)
+(or (not x8676) x8675)
+(or (not x8676) x8494)
+(or (not x8521) (not x245) x8677)
+(or (not x8677) x8521)
+(or (not x8677) x245)
+(or x8678 (not x8677))
+(or x8678 (not x8676))
+(or x8677 x8676 (not x8678))
+(or (not x8678) (not x8494) x8679)
+(or (not x8679) x8678)
+(or (not x8679) x8494)
+(or x8622 (not x8680))
+(or x8622 x8609)
+(or x8622 x8494)
+(or x8680 (not x8609) (not x8494) (not x8622))
+(or x8681 x8682)
+(or x8681 x8494)
+(or x8681 (not x8680))
+(or x8681 x8609)
+(or x8681 x8494)
+(or (not x8682) (not x8494) x8680 (not x8609) (not x8494) (not x8681))
+(or x8683 (not x8684))
+(or x8683 x8639)
+(or x8683 x8494)
+(or x8684 (not x8639) (not x8494) (not x8683))
+(or (not x8683) (not x8681) x8685)
+(or (not x8685) x8683)
+(or (not x8685) x8681)
+(or x8686 x8684 x8685)
+(or x8686 (not x8684) (not x8685))
+(or (not x8686) x8684 (not x8685))
+(or (not x8686) (not x8684) x8685)
+(or (not x8687) (not x8686) x8688)
+(or (not x8688) x8687)
+(or (not x8688) x8686)
+(or (not x8689) (not x8690) (not x8682) (not x8494) x8691)
+(or (not x8691) x8689)
+(or (not x8691) x8690)
+(or (not x8691) x8682)
+(or (not x8691) x8494)
+(or x8692 (not x8691))
+(or x8692 (not x8688))
+(or x8691 x8688 (not x8692))
+(or (not x8692) (not x8494) x8693)
+(or (not x8693) x8692)
+(or (not x8693) x8494)
+(or (not x8500) (not x8494) x8694)
+(or (not x8694) x8500)
+(or (not x8694) x8494)
+(or (not x8506) (not x8494) x8695)
+(or (not x8695) x8506)
+(or (not x8695) x8494)
+(or (not x8512) (not x8494) x8696)
+(or (not x8696) x8512)
+(or (not x8696) x8494)
+(or x8697 (not x8698))
+(or x8697 x8494)
+(or x8697 (not x8699))
+(or x8697 x8700)
+(or x8697 x8701)
+(or x8697 x8702)
+(or x8697 (not x8703))
+(or x8697 x8704)
+(or x8697 (not x8705))
+(or x8697 x8706)
+(or x8697 x8707)
+(or x8697 x8708)
+(or x8697 (not x8709))
+(or x8697 x8710)
+(or x8697 x8711)
+(or x8697 x8712)
+(or x8697 (not x8696))
+(or x8697 (not x8695))
+(or x8697 (not x8694))
+(or x8698 (not x8494) x8699 (not x8700) (not x8701) (not x8702) x8703 (not x8704) x8705 (not x8706) (not x8707) (not x8708) x8709 (not x8710) (not x8711) (not x8712) x8696 x8695 x8694 (not x8697))
+(or (not x8697) (not x8617) (not x8494) x8713)
+(or (not x8713) x8697)
+(or (not x8713) x8617)
+(or (not x8713) x8494)
+(or x8714 x8500)
+(or x8714 x8494)
+(or (not x8500) (not x8494) (not x8714))
+(or x8715 x8506)
+(or x8715 x8494)
+(or (not x8506) (not x8494) (not x8715))
+(or x8716 x8512)
+(or x8716 x8494)
+(or (not x8512) (not x8494) (not x8716))
+(or x8698 (not x8494) (not x8717) (not x8700) (not x8701) (not x8702) x8703 (not x8704) x8705 (not x8706) (not x8707) (not x8708) x8709 (not x8710) (not x8711) (not x8712) (not x8716) (not x8715) (not x8714) x8718 x8719)
+(or (not x8719) (not x8698))
+(or (not x8719) x8494)
+(or (not x8719) x8717)
+(or (not x8719) x8700)
+(or (not x8719) x8701)
+(or (not x8719) x8702)
+(or (not x8719) (not x8703))
+(or (not x8719) x8704)
+(or (not x8719) (not x8705))
+(or (not x8719) x8706)
+(or (not x8719) x8707)
+(or (not x8719) x8708)
+(or (not x8719) (not x8709))
+(or (not x8719) x8710)
+(or (not x8719) x8711)
+(or (not x8719) x8712)
+(or (not x8719) x8716)
+(or (not x8719) x8715)
+(or (not x8719) x8714)
+(or (not x8719) (not x8718))
+(or x8720 (not x8719))
+(or x8720 (not x8713))
+(or x8719 x8713 (not x8720))
+(or (not x8720) (not x8494) x8721)
+(or (not x8721) x8720)
+(or (not x8721) x8494)
+(or x8658 (not x8680))
+(or x8658 x8646)
+(or x8658 x8494)
+(or x8680 (not x8646) (not x8494) (not x8658))
+(or x8722 x8723)
+(or x8722 x8494)
+(or x8722 (not x8680))
+(or x8722 x8646)
+(or x8722 x8494)
+(or (not x8723) (not x8494) x8680 (not x8646) (not x8494) (not x8722))
+(or x8724 (not x8725))
+(or x8724 x8674)
+(or x8724 x8494)
+(or x8725 (not x8674) (not x8494) (not x8724))
+(or (not x8724) (not x8722) x8726)
+(or (not x8726) x8724)
+(or (not x8726) x8722)
+(or x8727 x8725 x8726)
+(or x8727 (not x8725) (not x8726))
+(or (not x8727) x8725 (not x8726))
+(or (not x8727) (not x8725) x8726)
+(or (not x8728) (not x8727) x8729)
+(or (not x8729) x8728)
+(or (not x8729) x8727)
+(or (not x8730) (not x8731) (not x8723) (not x8494) x8732)
+(or (not x8732) x8730)
+(or (not x8732) x8731)
+(or (not x8732) x8723)
+(or (not x8732) x8494)
+(or x8733 (not x8732))
+(or x8733 (not x8729))
+(or x8732 x8729 (not x8733))
+(or (not x8733) (not x8494) x8734)
+(or (not x8734) x8733)
+(or (not x8734) x8494)
+(or (not x8735) (not x8736) (not x8494) x8737)
+(or (not x8737) x8735)
+(or (not x8737) x8736)
+(or (not x8737) x8494)
+(or (not x8657) (not x8675) (not x8494) (not x8519) (not x8494) x8738)
+(or (not x8738) x8657)
+(or (not x8738) x8675)
+(or (not x8738) x8494)
+(or (not x8738) x8519)
+(or (not x8738) x8494)
+(or x8739 (not x8738))
+(or x8739 (not x8737))
+(or x8738 x8737 (not x8739))
+(or (not x8739) (not x8494) x8740)
+(or (not x8740) x8739)
+(or (not x8740) x8494)
+(or (not x8741) (not x8742) (not x8494) x8743)
+(or (not x8743) x8741)
+(or (not x8743) x8742)
+(or (not x8743) x8494)
+(or (not x8744) (not x8647) (not x8494) (not x8527) (not x8494) x8745)
+(or (not x8745) x8744)
+(or (not x8745) x8647)
+(or (not x8745) x8494)
+(or (not x8745) x8527)
+(or (not x8745) x8494)
+(or x8746 (not x8745))
+(or x8746 (not x8743))
+(or x8745 x8743 (not x8746))
+(or (not x8746) (not x8494) x8747)
+(or (not x8747) x8746)
+(or (not x8747) x8494)
+(or (not x8735) (not x8748) (not x8494) x8749)
+(or (not x8749) x8735)
+(or (not x8749) x8748)
+(or (not x8749) x8494)
+(or (not x8657) (not x8675) (not x8494) (not x8534) (not x8494) x8750)
+(or (not x8750) x8657)
+(or (not x8750) x8675)
+(or (not x8750) x8494)
+(or (not x8750) x8534)
+(or (not x8750) x8494)
+(or x8751 (not x8750))
+(or x8751 (not x8749))
+(or x8750 x8749 (not x8751))
+(or (not x8751) (not x8494) x8752)
+(or (not x8752) x8751)
+(or (not x8752) x8494)
+(or (not x8741) (not x8753) (not x8494) x8754)
+(or (not x8754) x8741)
+(or (not x8754) x8753)
+(or (not x8754) x8494)
+(or (not x8744) (not x8647) (not x8494) (not x8540) (not x8494) x8755)
+(or (not x8755) x8744)
+(or (not x8755) x8647)
+(or (not x8755) x8494)
+(or (not x8755) x8540)
+(or (not x8755) x8494)
+(or x8756 (not x8755))
+(or x8756 (not x8754))
+(or x8755 x8754 (not x8756))
+(or (not x8756) (not x8494) x8757)
+(or (not x8757) x8756)
+(or (not x8757) x8494)
+(or (not x8735) (not x8758) (not x8494) x8759)
+(or (not x8759) x8735)
+(or (not x8759) x8758)
+(or (not x8759) x8494)
+(or (not x8657) (not x8675) (not x8494) (not x8546) (not x8494) x8760)
+(or (not x8760) x8657)
+(or (not x8760) x8675)
+(or (not x8760) x8494)
+(or (not x8760) x8546)
+(or (not x8760) x8494)
+(or x8761 (not x8760))
+(or x8761 (not x8759))
+(or x8760 x8759 (not x8761))
+(or (not x8761) (not x8494) x8762)
+(or (not x8762) x8761)
+(or (not x8762) x8494)
+(or (not x8741) (not x8763) (not x8494) x8764)
+(or (not x8764) x8741)
+(or (not x8764) x8763)
+(or (not x8764) x8494)
+(or (not x8744) (not x8647) (not x8494) (not x8552) (not x8494) x8765)
+(or (not x8765) x8744)
+(or (not x8765) x8647)
+(or (not x8765) x8494)
+(or (not x8765) x8552)
+(or (not x8765) x8494)
+(or x8766 (not x8765))
+(or x8766 (not x8764))
+(or x8765 x8764 (not x8766))
+(or (not x8766) (not x8494) x8767)
+(or (not x8767) x8766)
+(or (not x8767) x8494)
+(or (not x8735) (not x8768) (not x8494) x8769)
+(or (not x8769) x8735)
+(or (not x8769) x8768)
+(or (not x8769) x8494)
+(or (not x8657) (not x8675) (not x8494) (not x8558) (not x8494) x8770)
+(or (not x8770) x8657)
+(or (not x8770) x8675)
+(or (not x8770) x8494)
+(or (not x8770) x8558)
+(or (not x8770) x8494)
+(or x8771 (not x8770))
+(or x8771 (not x8769))
+(or x8770 x8769 (not x8771))
+(or (not x8771) (not x8494) x8772)
+(or (not x8772) x8771)
+(or (not x8772) x8494)
+(or (not x8741) (not x8773) (not x8494) x8774)
+(or (not x8774) x8741)
+(or (not x8774) x8773)
+(or (not x8774) x8494)
+(or (not x8744) (not x8647) (not x8494) (not x8564) (not x8494) x8775)
+(or (not x8775) x8744)
+(or (not x8775) x8647)
+(or (not x8775) x8494)
+(or (not x8775) x8564)
+(or (not x8775) x8494)
+(or x8776 (not x8775))
+(or x8776 (not x8774))
+(or x8775 x8774 (not x8776))
+(or (not x8776) (not x8494) x8777)
+(or (not x8777) x8776)
+(or (not x8777) x8494)
+(or (not x8735) (not x8778) (not x8494) x8779)
+(or (not x8779) x8735)
+(or (not x8779) x8778)
+(or (not x8779) x8494)
+(or (not x8657) (not x8675) (not x8494) (not x8570) (not x8494) x8780)
+(or (not x8780) x8657)
+(or (not x8780) x8675)
+(or (not x8780) x8494)
+(or (not x8780) x8570)
+(or (not x8780) x8494)
+(or x8781 (not x8780))
+(or x8781 (not x8779))
+(or x8780 x8779 (not x8781))
+(or (not x8781) (not x8494) x8782)
+(or (not x8782) x8781)
+(or (not x8782) x8494)
+(or (not x8741) (not x8783) (not x8494) x8784)
+(or (not x8784) x8741)
+(or (not x8784) x8783)
+(or (not x8784) x8494)
+(or (not x8744) (not x8647) (not x8494) (not x8576) (not x8494) x8785)
+(or (not x8785) x8744)
+(or (not x8785) x8647)
+(or (not x8785) x8494)
+(or (not x8785) x8576)
+(or (not x8785) x8494)
+(or x8786 (not x8785))
+(or x8786 (not x8784))
+(or x8785 x8784 (not x8786))
+(or (not x8786) (not x8494) x8787)
+(or (not x8787) x8786)
+(or (not x8787) x8494)
+(or (not x8735) (not x8788) (not x8494) x8789)
+(or (not x8789) x8735)
+(or (not x8789) x8788)
+(or (not x8789) x8494)
+(or (not x8657) (not x8675) (not x8494) (not x8582) (not x8494) x8790)
+(or (not x8790) x8657)
+(or (not x8790) x8675)
+(or (not x8790) x8494)
+(or (not x8790) x8582)
+(or (not x8790) x8494)
+(or x8791 (not x8790))
+(or x8791 (not x8789))
+(or x8790 x8789 (not x8791))
+(or (not x8791) (not x8494) x8792)
+(or (not x8792) x8791)
+(or (not x8792) x8494)
+(or (not x8741) (not x8793) (not x8494) x8794)
+(or (not x8794) x8741)
+(or (not x8794) x8793)
+(or (not x8794) x8494)
+(or (not x8744) (not x8647) (not x8494) (not x8588) (not x8494) x8795)
+(or (not x8795) x8744)
+(or (not x8795) x8647)
+(or (not x8795) x8494)
+(or (not x8795) x8588)
+(or (not x8795) x8494)
+(or x8796 (not x8795))
+(or x8796 (not x8794))
+(or x8795 x8794 (not x8796))
+(or (not x8796) (not x8494) x8797)
+(or (not x8797) x8796)
+(or (not x8797) x8494)
+(or (not x8798) (not x8799) (not x8494) x8800)
+(or (not x8800) x8798)
+(or (not x8800) x8799)
+(or (not x8800) x8494)
+(or (not x8621) (not x8640) (not x8494) (not x8595) (not x8494) x8801)
+(or (not x8801) x8621)
+(or (not x8801) x8640)
+(or (not x8801) x8494)
+(or (not x8801) x8595)
+(or (not x8801) x8494)
+(or x8802 (not x8801))
+(or x8802 (not x8800))
+(or x8801 x8800 (not x8802))
+(or (not x8802) (not x8494) x8803)
+(or (not x8803) x8802)
+(or (not x8803) x8494)
+(or (not x8804) (not x8805) (not x8494) x8806)
+(or (not x8806) x8804)
+(or (not x8806) x8805)
+(or (not x8806) x8494)
+(or (not x8807) (not x8610) (not x8494) (not x8602) (not x8494) x8808)
+(or (not x8808) x8807)
+(or (not x8808) x8610)
+(or (not x8808) x8494)
+(or (not x8808) x8602)
+(or (not x8808) x8494)
+(or x8809 (not x8808))
+(or x8809 (not x8806))
+(or x8808 x8806 (not x8809))
+(or (not x8809) (not x8494) x8810)
+(or (not x8810) x8809)
+(or (not x8810) x8494)
+(or x8811 (not x8812))
+(or x8811 x8494)
+(or x8812 (not x8494) (not x8811))
+(or x8813 (not x8499))
+(or x8813 (not x8814))
+(or x8499 x8814 (not x8813))
+(or (not x8813) (not x8815) x8816)
+(or (not x8816) x8813)
+(or (not x8816) x8815)
+(or x8499 (not x8817) x8818 x8819)
+(or (not x8819) (not x8499))
+(or (not x8819) x8817)
+(or (not x8819) (not x8818))
+(or x8820 (not x8819))
+(or x8820 (not x8816))
+(or x8820 x8494)
+(or x8819 x8816 (not x8494) (not x8820))
+(or (not x8821) (not x8494) (not x8822) (not x8823) (not x8824) (not x8825) (not x8717) (not x8826) (not x8827) (not x8494) x8828)
+(or (not x8828) x8821)
+(or (not x8828) x8494)
+(or (not x8828) x8822)
+(or (not x8828) x8823)
+(or (not x8828) x8824)
+(or (not x8828) x8825)
+(or (not x8828) x8717)
+(or (not x8828) x8826)
+(or (not x8828) x8827)
+(or (not x8828) x8494)
+(or (not x8829) (not x8827) (not x8494) (not x8823) (not x8830) x8698 (not x8494) (not x8827) (not x8494) x8831)
+(or (not x8831) x8829)
+(or (not x8831) x8827)
+(or (not x8831) x8494)
+(or (not x8831) x8823)
+(or (not x8831) x8830)
+(or (not x8831) (not x8698))
+(or (not x8831) x8494)
+(or (not x8831) x8827)
+(or (not x8831) x8494)
+(or (not x8817) x8499 x8832)
+(or (not x8832) x8817)
+(or (not x8832) (not x8499))
+(or x8833 (not x8832))
+(or x8833 (not x8834))
+(or x8832 x8834 (not x8833))
+(or (not x8829) (not x8822) (not x8833) x8835)
+(or (not x8835) x8829)
+(or (not x8835) x8822)
+(or (not x8835) x8833)
+(or (not x8823) (not x8824) (not x8836) (not x8827) (not x8494) x8837)
+(or (not x8837) x8823)
+(or (not x8837) x8824)
+(or (not x8837) x8836)
+(or (not x8837) x8827)
+(or (not x8837) x8494)
+(or x8838 (not x8837))
+(or x8838 (not x8835))
+(or x8838 (not x8831))
+(or x8838 (not x8828))
+(or x8837 x8835 x8831 x8828 (not x8838))
+(or (not x8838) (not x8494) x8839)
+(or (not x8839) x8838)
+(or (not x8839) x8494)
+(or x8840 (not x8841))
+(or x8840 (not x8842))
+(or x8841 x8842 (not x8840))
+(or x8843 (not x8709))
+(or x8843 x8844)
+(or x8709 (not x8844) (not x8843))
+(or x8845 x8709)
+(or x8845 x8846)
+(or (not x8709) (not x8846) (not x8845))
+(or (not x8845) (not x8843) x8847)
+(or (not x8847) x8845)
+(or (not x8847) x8843)
+(or x8848 x8849)
+(or x8848 (not x8850))
+(or x8848 (not x8711))
+(or x8848 x8710)
+(or x8848 (not x8841))
+(or x8848 (not x8847))
+(or (not x8849) x8850 x8711 (not x8710) x8841 x8847 (not x8848))
+(or x8851 x8849)
+(or x8851 (not x8850))
+(or x8851 (not x8711))
+(or x8851 (not x8710))
+(or x8851 x8852)
+(or (not x8849) x8850 x8711 x8710 (not x8852) (not x8851))
+(or (not x8851) (not x8848) (not x8840) x8853)
+(or (not x8853) x8851)
+(or (not x8853) x8848)
+(or (not x8853) x8840)
+(or x8825 (not x8699))
+(or x8825 (not x8854))
+(or x8825 (not x8853))
+(or x8699 x8854 x8853 (not x8825))
+(or (not x8821) (not x8494) (not x8822) (not x8823) (not x8824) (not x8825) (not x8717) (not x8826) (not x8821) (not x8494) x8855)
+(or (not x8855) x8821)
+(or (not x8855) x8494)
+(or (not x8855) x8822)
+(or (not x8855) x8823)
+(or (not x8855) x8824)
+(or (not x8855) x8825)
+(or (not x8855) x8717)
+(or (not x8855) x8826)
+(or (not x8855) x8821)
+(or (not x8855) x8494)
+(or (not x8830) x8698 (not x8494) (not x8821) (not x8494) x8856)
+(or (not x8856) x8830)
+(or (not x8856) (not x8698))
+(or (not x8856) x8494)
+(or (not x8856) x8821)
+(or (not x8856) x8494)
+(or (not x8857) (not x8815) x8858)
+(or (not x8858) x8857)
+(or (not x8858) x8815)
+(or x8859 (not x8858))
+(or x8859 (not x8856))
+(or x8858 x8856 (not x8859))
+(or (not x8829) (not x8827) (not x8494) (not x8823) (not x8859) x8860)
+(or (not x8860) x8829)
+(or (not x8860) x8827)
+(or (not x8860) x8494)
+(or (not x8860) x8823)
+(or (not x8860) x8859)
+(or (not x8829) (not x8822) (not x8861) (not x8821) (not x8494) x8862)
+(or (not x8862) x8829)
+(or (not x8862) x8822)
+(or (not x8862) x8861)
+(or (not x8862) x8821)
+(or (not x8862) x8494)
+(or (not x8823) (not x8824) (not x8836) (not x8821) (not x8494) x8863)
+(or (not x8863) x8823)
+(or (not x8863) x8824)
+(or (not x8863) x8836)
+(or (not x8863) x8821)
+(or (not x8863) x8494)
+(or x8864 (not x8863))
+(or x8864 (not x8862))
+(or x8864 (not x8860))
+(or x8864 (not x8855))
+(or x8863 x8862 x8860 x8855 (not x8864))
+(or (not x8864) (not x8494) x8865)
+(or (not x8865) x8864)
+(or (not x8865) x8494)
+(or x8604 x8610)
+(or x8604 x8494)
+(or (not x8610) (not x8494) (not x8604))
+(or x8804 (not x8866))
+(or x8804 x8610)
+(or x8804 x8494)
+(or x8866 (not x8610) (not x8494) (not x8804))
+(or (not x8804) (not x8867) (not x8868) (not x8609) (not x8494) x8869)
+(or (not x8869) x8804)
+(or (not x8869) x8867)
+(or (not x8869) x8868)
+(or (not x8869) x8609)
+(or (not x8869) x8494)
+(or (not x8610) (not x8494) x8608)
+(or (not x8608) x8610)
+(or (not x8608) x8494)
+(or (not x8807) (not x8610) (not x8494) (not x8610) (not x8494) x8870)
+(or (not x8870) x8807)
+(or (not x8870) x8610)
+(or (not x8870) x8494)
+(or (not x8870) x8610)
+(or (not x8870) x8494)
+(or x8871 (not x8870))
+(or x8871 (not x8869))
+(or x8870 x8869 (not x8871))
+(or (not x8871) (not x8494) x8872)
+(or (not x8872) x8871)
+(or (not x8872) x8494)
+(or x8597 x8640)
+(or x8597 x8494)
+(or (not x8640) (not x8494) (not x8597))
+(or x8798 (not x8873))
+(or x8798 x8640)
+(or x8798 x8494)
+(or x8873 (not x8640) (not x8494) (not x8798))
+(or (not x8798) (not x8874) (not x8639) (not x8494) x8875)
+(or (not x8875) x8798)
+(or (not x8875) x8874)
+(or (not x8875) x8639)
+(or (not x8875) x8494)
+(or (not x8640) (not x8494) x8638)
+(or (not x8638) x8640)
+(or (not x8638) x8494)
+(or (not x8621) (not x8640) (not x8494) (not x8640) (not x8494) x8876)
+(or (not x8876) x8621)
+(or (not x8876) x8640)
+(or (not x8876) x8494)
+(or (not x8876) x8640)
+(or (not x8876) x8494)
+(or x8877 (not x8876))
+(or x8877 (not x8875))
+(or x8876 x8875 (not x8877))
+(or (not x8877) (not x8494) x8878)
+(or (not x8878) x8877)
+(or (not x8878) x8494)
+(or x8529 x8647)
+(or x8529 x8494)
+(or (not x8647) (not x8494) (not x8529))
+(or x8741 (not x8879))
+(or x8741 x8647)
+(or x8741 x8494)
+(or x8879 (not x8647) (not x8494) (not x8741))
+(or (not x8741) (not x8880) (not x8881) (not x8646) (not x8494) x8882)
+(or (not x8882) x8741)
+(or (not x8882) x8880)
+(or (not x8882) x8881)
+(or (not x8882) x8646)
+(or (not x8882) x8494)
+(or (not x8647) (not x8494) x8645)
+(or (not x8645) x8647)
+(or (not x8645) x8494)
+(or (not x8744) (not x8647) (not x8494) (not x8647) (not x8494) x8883)
+(or (not x8883) x8744)
+(or (not x8883) x8647)
+(or (not x8883) x8494)
+(or (not x8883) x8647)
+(or (not x8883) x8494)
+(or x8884 (not x8883))
+(or x8884 (not x8882))
+(or x8883 x8882 (not x8884))
+(or (not x8884) (not x8494) x8885)
+(or (not x8885) x8884)
+(or (not x8885) x8494)
+(or x8521 x8675)
+(or x8521 x8494)
+(or (not x8675) (not x8494) (not x8521))
+(or x8735 (not x8886))
+(or x8735 x8675)
+(or x8735 x8494)
+(or x8886 (not x8675) (not x8494) (not x8735))
+(or (not x8735) (not x8887) (not x8674) (not x8494) x8888)
+(or (not x8888) x8735)
+(or (not x8888) x8887)
+(or (not x8888) x8674)
+(or (not x8888) x8494)
+(or (not x8675) (not x8494) x8673)
+(or (not x8673) x8675)
+(or (not x8673) x8494)
+(or (not x8657) (not x8675) (not x8494) (not x8675) (not x8494) x8889)
+(or (not x8889) x8657)
+(or (not x8889) x8675)
+(or (not x8889) x8494)
+(or (not x8889) x8675)
+(or (not x8889) x8494)
+(or x8890 (not x8889))
+(or x8890 (not x8888))
+(or x8889 x8888 (not x8890))
+(or (not x8890) (not x8494) x8891)
+(or (not x8891) x8890)
+(or (not x8891) x8494)
+(or x249 (not x8892) (not x8494) (not x8893) (not x8494) x8894)
+(or (not x8894) (not x249))
+(or (not x8894) x8892)
+(or (not x8894) x8494)
+(or (not x8894) x8893)
+(or (not x8894) x8494)
+(or x8895 (not x8896))
+(or x8895 (not x8897))
+(or x8895 (not x8898))
+(or x8896 x8897 x8898 (not x8895))
+(or (not x249) (not x8895) x8899)
+(or (not x8899) x249)
+(or (not x8899) x8895)
+(or x8900 (not x8899))
+(or x8900 (not x8894))
+(or x8899 x8894 (not x8900))
+(or (not x8900) (not x8494) x8901)
+(or (not x8901) x8900)
+(or (not x8901) x8494)
+(or x248 (not x8902) (not x8494) (not x8903) (not x8494) x8904)
+(or (not x8904) (not x248))
+(or (not x8904) x8902)
+(or (not x8904) x8494)
+(or (not x8904) x8903)
+(or (not x8904) x8494)
+(or x8905 (not x8906))
+(or x8905 (not x8907))
+(or x8905 (not x8908))
+(or x8906 x8907 x8908 (not x8905))
+(or (not x248) (not x8905) x8909)
+(or (not x8909) x248)
+(or (not x8909) x8905)
+(or x8910 (not x8909))
+(or x8910 (not x8904))
+(or x8909 x8904 (not x8910))
+(or (not x8910) (not x8494) x8911)
+(or (not x8911) x8910)
+(or (not x8911) x8494)
+(or (not x8912) (not x8913) (not x8914) x8915)
+(or (not x8915) x8912)
+(or (not x8915) x8913)
+(or (not x8915) x8914)
+(or (not x8916) (not x8912) (not x8917) (not x8918) (not x8892) (not x8494) x8919)
+(or (not x8919) x8916)
+(or (not x8919) x8912)
+(or (not x8919) x8917)
+(or (not x8919) x8918)
+(or (not x8919) x8892)
+(or (not x8919) x8494)
+(or x8920 (not x8919))
+(or x8920 (not x8915))
+(or x8919 x8915 (not x8920))
+(or (not x8665) (not x8494) (not x8914) (not x8632) (not x8667) (not x8921) (not x8920) x8922)
+(or (not x8922) x8665)
+(or (not x8922) x8494)
+(or (not x8922) x8914)
+(or (not x8922) x8632)
+(or (not x8922) x8667)
+(or (not x8922) x8921)
+(or (not x8922) x8920)
+(or (not x8923) (not x8924) (not x8914) x8925)
+(or (not x8925) x8923)
+(or (not x8925) x8924)
+(or (not x8925) x8914)
+(or (not x8923) (not x8926) (not x8927) (not x8928) (not x8892) (not x8494) x8929)
+(or (not x8929) x8923)
+(or (not x8929) x8926)
+(or (not x8929) x8927)
+(or (not x8929) x8928)
+(or (not x8929) x8892)
+(or (not x8929) x8494)
+(or x8930 (not x8931))
+(or x8930 (not x8929))
+(or x8931 x8929 (not x8930))
+(or (not x8932) (not x8930) x8933)
+(or (not x8933) x8932)
+(or (not x8933) x8930)
+(or x8934 (not x8933))
+(or x8934 (not x8925))
+(or x8933 x8925 (not x8934))
+(or (not x8665) (not x8494) x8666 (not x8494) (not x8632) (not x8667) (not x8934) x8935)
+(or (not x8935) x8665)
+(or (not x8935) x8494)
+(or (not x8935) (not x8666))
+(or (not x8935) x8494)
+(or (not x8935) x8632)
+(or (not x8935) x8667)
+(or (not x8935) x8934)
+(or (not x8657) (not x8744) (not x8936) (not x8914) x8937)
+(or (not x8937) x8657)
+(or (not x8937) x8744)
+(or (not x8937) x8936)
+(or (not x8937) x8914)
+(or (not x8938) (not x8657) (not x8744) (not x8939) (not x8940) x8941)
+(or (not x8941) x8938)
+(or (not x8941) x8657)
+(or (not x8941) x8744)
+(or (not x8941) x8939)
+(or (not x8941) x8940)
+(or x8942 (not x8941))
+(or x8942 (not x8937))
+(or x8941 x8937 (not x8942))
+(or (not x8943) (not x8914) (not x8632) (not x8942) x8944)
+(or (not x8944) x8943)
+(or (not x8944) x8914)
+(or (not x8944) x8632)
+(or (not x8944) x8942)
+(or (not x8945) (not x8946) (not x8914) x8947)
+(or (not x8947) x8945)
+(or (not x8947) x8946)
+(or (not x8947) x8914)
+(or (not x8945) (not x8948) (not x8657) (not x8744) (not x8940) x8949)
+(or (not x8949) x8945)
+(or (not x8949) x8948)
+(or (not x8949) x8657)
+(or (not x8949) x8744)
+(or (not x8949) x8940)
+(or x8950 (not x8951))
+(or x8950 (not x8949))
+(or x8951 x8949 (not x8950))
+(or (not x8952) (not x8950) x8953)
+(or (not x8953) x8952)
+(or (not x8953) x8950)
+(or x8954 (not x8953))
+(or x8954 (not x8947))
+(or x8953 x8947 (not x8954))
+(or (not x8943) x8666 (not x8494) (not x8954) x8955)
+(or (not x8955) x8943)
+(or (not x8955) (not x8666))
+(or (not x8955) x8494)
+(or (not x8955) x8954)
+(or x8956 (not x8955))
+(or x8956 (not x8944))
+(or x8956 (not x8935))
+(or x8956 (not x8922))
+(or x8956 x8494)
+(or x8955 x8944 x8935 x8922 (not x8494) (not x8956))
+(or x8957 (not x8958))
+(or x8957 (not x8959))
+(or x8957 (not x8960))
+(or x8958 x8959 x8960 (not x8957))
+(or (not x8961) (not x8957) x8962)
+(or (not x8962) x8961)
+(or (not x8962) x8957)
+(or x8913 (not x8963))
+(or x8913 (not x8962))
+(or x8963 x8962 (not x8913))
+(or (not x8912) (not x8913) (not x8665) (not x8494) x8964)
+(or (not x8964) x8912)
+(or (not x8964) x8913)
+(or (not x8964) x8665)
+(or (not x8964) x8494)
+(or x8961 (not x8959))
+(or x8961 x8892)
+(or x8961 x8494)
+(or x8959 (not x8892) (not x8494) (not x8961))
+(or (not x8961) (not x8918) (not x8965) x8966)
+(or (not x8966) x8961)
+(or (not x8966) x8918)
+(or (not x8966) x8965)
+(or (not x8918) (not x8892) (not x8494) x8958)
+(or (not x8958) x8918)
+(or (not x8958) x8892)
+(or (not x8958) x8494)
+(or x8917 (not x8958))
+(or x8917 (not x8966))
+(or x8958 x8966 (not x8917))
+(or x8868 (not x8680))
+(or x8868 (not x8967))
+(or x8868 (not x8684))
+(or x8680 x8967 x8684 (not x8868))
+(or x8867 x8617)
+(or x8867 x8494)
+(or x8867 (not x8968))
+(or x8867 (not x8969))
+(or x8867 (not x8970))
+(or x8867 (not x8971))
+(or x8867 (not x8624))
+(or (not x8617) (not x8494) x8968 x8969 x8970 x8971 x8624 (not x8867))
+(or (not x8867) (not x8868) x8972)
+(or (not x8972) x8867)
+(or (not x8972) x8868)
+(or x8973 (not x8972))
+(or x8973 x8609)
+(or x8973 x8494)
+(or x8972 (not x8609) (not x8494) (not x8973))
+(or x8690 (not x8680))
+(or x8690 (not x8968))
+(or x8690 (not x8969))
+(or x8690 (not x8970))
+(or x8690 (not x8971))
+(or x8680 x8968 x8969 x8970 x8971 (not x8690))
+(or x8689 x8617)
+(or x8689 x8494)
+(or x8689 (not x8968))
+(or x8689 (not x8969))
+(or x8689 (not x8970))
+(or x8689 (not x8971))
+(or x8689 x8616)
+(or x8689 x8494)
+(or (not x8617) (not x8494) x8968 x8969 x8970 x8971 (not x8616) (not x8494) (not x8689))
+(or (not x8689) (not x8690) x8967)
+(or (not x8967) x8689)
+(or (not x8967) x8690)
+(or x8874 (not x8967))
+(or x8874 x8682)
+(or x8874 x8494)
+(or x8967 (not x8682) (not x8494) (not x8874))
+(or x8974 (not x8967))
+(or x8974 x8682)
+(or x8974 x8494)
+(or x8974 x8639)
+(or x8974 x8494)
+(or x8967 (not x8682) (not x8494) (not x8639) (not x8494) (not x8974))
+(or (not x8940) (not x8974) (not x8973) x8959)
+(or (not x8959) x8940)
+(or (not x8959) x8974)
+(or (not x8959) x8973)
+(or x8912 (not x8959))
+(or x8912 x8902)
+(or x8912 x8494)
+(or x8959 (not x8902) (not x8494) (not x8912))
+(or (not x8912) (not x8917) x8975)
+(or (not x8975) x8912)
+(or (not x8975) x8917)
+(or x8918 (not x8976))
+(or x8918 (not x8977))
+(or x8918 (not x8978))
+(or x8976 x8977 x8978 (not x8918))
+(or (not x8918) (not x8902) (not x8494) x8963)
+(or (not x8963) x8918)
+(or (not x8963) x8902)
+(or (not x8963) x8494)
+(or x8916 (not x8963))
+(or x8916 (not x8975))
+(or x8963 x8975 (not x8916))
+(or (not x8916) (not x8912) (not x8917) (not x8961) (not x8918) (not x8965) x8979)
+(or (not x8979) x8916)
+(or (not x8979) x8912)
+(or (not x8979) x8917)
+(or (not x8979) x8961)
+(or (not x8979) x8918)
+(or (not x8979) x8965)
+(or x8980 (not x8979))
+(or x8980 (not x8964))
+(or x8979 x8964 (not x8980))
+(or (not x8665) (not x8494) (not x8914) (not x8632) (not x8667) (not x8921) (not x8980) x8981)
+(or (not x8981) x8665)
+(or (not x8981) x8494)
+(or (not x8981) x8914)
+(or (not x8981) x8632)
+(or (not x8981) x8667)
+(or (not x8981) x8921)
+(or (not x8981) x8980)
+(or x8982 (not x8983))
+(or x8982 (not x8984))
+(or x8982 x8892)
+(or x8982 x8494)
+(or x8983 x8984 (not x8892) (not x8494) (not x8982))
+(or (not x8927) (not x8982) x8985)
+(or (not x8985) x8927)
+(or (not x8985) x8982)
+(or x8924 (not x8931))
+(or x8924 (not x8985))
+(or x8931 x8985 (not x8924))
+(or (not x8923) (not x8924) (not x8665) (not x8494) x8986)
+(or (not x8986) x8923)
+(or (not x8986) x8924)
+(or (not x8986) x8665)
+(or (not x8986) x8494)
+(or x8927 (not x8984))
+(or x8927 x8902)
+(or x8927 x8494)
+(or x8984 (not x8902) (not x8494) (not x8927))
+(or (not x8927) (not x8928) (not x8892) (not x8494) x8987)
+(or (not x8987) x8927)
+(or (not x8987) x8928)
+(or (not x8987) x8892)
+(or (not x8987) x8494)
+(or (not x8928) (not x8902) (not x8494) x8983)
+(or (not x8983) x8928)
+(or (not x8983) x8902)
+(or (not x8983) x8494)
+(or x8926 (not x8983))
+(or x8926 (not x8987))
+(or x8983 x8987 (not x8926))
+(or x8881 (not x8680))
+(or x8881 (not x8988))
+(or x8881 (not x8725))
+(or x8680 x8988 x8725 (not x8881))
+(or x8880 x8617)
+(or x8880 x8494)
+(or x8880 (not x8968))
+(or x8880 x8665)
+(or x8880 x8494)
+(or x8880 (not x8666))
+(or x8880 x8494)
+(or x8880 (not x8971))
+(or x8880 (not x8989))
+(or x8880 (not x8970))
+(or x8880 (not x8971))
+(or x8880 (not x8660))
+(or (not x8617) (not x8494) x8968 (not x8665) (not x8494) x8666 (not x8494) x8971 x8989 x8970 x8971 x8660 (not x8880))
+(or (not x8880) (not x8881) x8990)
+(or (not x8990) x8880)
+(or (not x8990) x8881)
+(or x8991 (not x8990))
+(or x8991 x8646)
+(or x8991 x8494)
+(or x8990 (not x8646) (not x8494) (not x8991))
+(or x8731 (not x8680))
+(or x8731 (not x8968))
+(or x8731 x8665)
+(or x8731 x8494)
+(or x8731 (not x8666))
+(or x8731 x8494)
+(or x8731 (not x8971))
+(or x8731 (not x8989))
+(or x8731 (not x8970))
+(or x8731 (not x8971))
+(or x8680 x8968 (not x8665) (not x8494) x8666 (not x8494) x8971 x8989 x8970 x8971 (not x8731))
+(or x8730 x8617)
+(or x8730 x8494)
+(or x8730 (not x8968))
+(or x8730 x8665)
+(or x8730 x8494)
+(or x8730 (not x8666))
+(or x8730 x8494)
+(or x8730 (not x8971))
+(or x8730 (not x8989))
+(or x8730 (not x8970))
+(or x8730 (not x8971))
+(or x8730 x8653)
+(or x8730 x8494)
+(or (not x8617) (not x8494) x8968 (not x8665) (not x8494) x8666 (not x8494) x8971 x8989 x8970 x8971 (not x8653) (not x8494) (not x8730))
+(or (not x8730) (not x8731) x8988)
+(or (not x8988) x8730)
+(or (not x8988) x8731)
+(or x8887 (not x8988))
+(or x8887 x8723)
+(or x8887 x8494)
+(or x8988 (not x8723) (not x8494) (not x8887))
+(or x8992 (not x8988))
+(or x8992 x8723)
+(or x8992 x8494)
+(or x8992 x8674)
+(or x8992 x8494)
+(or x8988 (not x8723) (not x8494) (not x8674) (not x8494) (not x8992))
+(or (not x8965) (not x8992) (not x8991) x8984)
+(or (not x8984) x8965)
+(or (not x8984) x8992)
+(or (not x8984) x8991)
+(or x8923 (not x8984))
+(or x8923 (not x8976))
+(or x8984 x8976 (not x8923))
+(or (not x8923) (not x8926) x8993)
+(or (not x8993) x8923)
+(or (not x8993) x8926)
+(or x8928 (not x8960))
+(or x8928 (not x8994))
+(or x8928 (not x8995))
+(or x8960 x8994 x8995 (not x8928))
+(or (not x8928) (not x8940) x8931)
+(or (not x8931) x8928)
+(or (not x8931) x8940)
+(or x8932 (not x8931))
+(or x8932 (not x8993))
+(or x8931 x8993 (not x8932))
+(or (not x8932) (not x8928) (not x8940) x8996)
+(or (not x8996) x8932)
+(or (not x8996) x8928)
+(or (not x8996) x8940)
+(or x8997 (not x8996))
+(or x8997 (not x8986))
+(or x8996 x8986 (not x8997))
+(or (not x8665) (not x8494) x8666 (not x8494) (not x8632) (not x8667) (not x8997) x8998)
+(or (not x8998) x8665)
+(or (not x8998) x8494)
+(or (not x8998) (not x8666))
+(or (not x8998) x8494)
+(or (not x8998) x8632)
+(or (not x8998) x8667)
+(or (not x8998) x8997)
+(or x8999 (not x8873))
+(or x8999 (not x8866))
+(or x8999 x8902)
+(or x8999 x8494)
+(or x8873 x8866 (not x8902) (not x8494) (not x8999))
+(or (not x8621) (not x8807) (not x8999) x9000)
+(or (not x9000) x8621)
+(or (not x9000) x8807)
+(or (not x9000) x8999)
+(or x8936 (not x8886))
+(or x8936 (not x8879))
+(or x8936 (not x9000))
+(or x8886 x8879 x9000 (not x8936))
+(or (not x8657) (not x8744) (not x8936) (not x8665) (not x8494) x9001)
+(or (not x9001) x8657)
+(or (not x9001) x8744)
+(or (not x9001) x8936)
+(or (not x9001) x8665)
+(or (not x9001) x8494)
+(or (not x8657) (not x8744) (not x8939) (not x8940) x9002)
+(or (not x9002) x8657)
+(or (not x9002) x8744)
+(or (not x9002) x8939)
+(or (not x9002) x8940)
+(or x9003 (not x8886))
+(or x9003 (not x8879))
+(or x9003 (not x9002))
+(or x8886 x8879 x9002 (not x9003))
+(or (not x8621) (not x8807) (not x8902) (not x8494) x9004)
+(or (not x9004) x8621)
+(or (not x9004) x8807)
+(or (not x9004) x8902)
+(or (not x9004) x8494)
+(or x8939 (not x8873))
+(or x8939 (not x8866))
+(or x8939 (not x9004))
+(or x8873 x8866 x9004 (not x8939))
+(or (not x8657) (not x8744) (not x8939) x9005)
+(or (not x9005) x8657)
+(or (not x9005) x8744)
+(or (not x9005) x8939)
+(or x8938 (not x8886))
+(or x8938 (not x8879))
+(or x8938 (not x9005))
+(or x8886 x8879 x9005 (not x8938))
+(or (not x8938) (not x9003) x9006)
+(or (not x9006) x8938)
+(or (not x9006) x9003)
+(or x9007 (not x9006))
+(or x9007 (not x9001))
+(or x9006 x9001 (not x9007))
+(or (not x8943) (not x8914) (not x8632) (not x9007) x9008)
+(or (not x9008) x8943)
+(or (not x9008) x8914)
+(or (not x9008) x8632)
+(or (not x9008) x9007)
+(or x8807 x8609)
+(or x8807 x8494)
+(or (not x8609) (not x8494) (not x8807))
+(or x8621 x8639)
+(or x8621 x8494)
+(or (not x8639) (not x8494) (not x8621))
+(or (not x8621) (not x8807) x8976)
+(or (not x8976) x8621)
+(or (not x8976) x8807)
+(or x9009 (not x8886))
+(or x9009 (not x8879))
+(or x9009 (not x8976))
+(or x8886 x8879 x8976 (not x9009))
+(or (not x8657) (not x8744) (not x9009) x9010)
+(or (not x9010) x8657)
+(or (not x9010) x8744)
+(or (not x9010) x9009)
+(or x8946 (not x8951))
+(or x8946 (not x9010))
+(or x8951 x9010 (not x8946))
+(or (not x8945) (not x8946) (not x8665) (not x8494) x9011)
+(or (not x9011) x8945)
+(or (not x9011) x8946)
+(or (not x9011) x8665)
+(or (not x9011) x8494)
+(or x8940 (not x8873))
+(or x8940 (not x8866))
+(or x8873 x8866 (not x8940))
+(or x8744 x8646)
+(or x8744 x8494)
+(or (not x8646) (not x8494) (not x8744))
+(or x8657 x8674)
+(or x8657 x8494)
+(or (not x8674) (not x8494) (not x8657))
+(or (not x8657) (not x8744) x8960)
+(or (not x8960) x8657)
+(or (not x8960) x8744)
+(or (not x8657) (not x8744) (not x8940) x9012)
+(or (not x9012) x8657)
+(or (not x9012) x8744)
+(or (not x9012) x8940)
+(or x8965 (not x8886))
+(or x8965 (not x8879))
+(or x8886 x8879 (not x8965))
+(or x8948 (not x8886))
+(or x8948 (not x8879))
+(or x8948 (not x9012))
+(or x8886 x8879 x9012 (not x8948))
+(or x8945 x8892)
+(or x8945 x8494)
+(or (not x8892) (not x8494) (not x8945))
+(or (not x8945) (not x8948) x9013)
+(or (not x9013) x8945)
+(or (not x9013) x8948)
+(or x8952 (not x8951))
+(or x8952 (not x9013))
+(or x8951 x9013 (not x8952))
+(or (not x8952) (not x8945) (not x8948) x9014)
+(or (not x9014) x8952)
+(or (not x9014) x8945)
+(or (not x9014) x8948)
+(or x9015 (not x9014))
+(or x9015 (not x9011))
+(or x9014 x9011 (not x9015))
+(or (not x8943) x8666 (not x8494) (not x9015) x9016)
+(or (not x9016) x8943)
+(or (not x9016) (not x8666))
+(or (not x9016) x8494)
+(or (not x9016) x9015)
+(or x9017 (not x9016))
+(or x9017 (not x9008))
+(or x9017 (not x8998))
+(or x9017 (not x8981))
+(or x9016 x9008 x8998 x8981 (not x9017))
+(or (not x9017) (not x8494) x9018)
+(or (not x9018) x9017)
+(or (not x9018) x8494)
+(or x9019 x8893)
+(or x9019 x8494)
+(or (not x8893) (not x8494) (not x9019))
+(or (not x9019) (not x8631) (not x8892) (not x8494) x9020)
+(or (not x9020) x9019)
+(or (not x9020) x8631)
+(or (not x9020) x8892)
+(or (not x9020) x8494)
+(or (not x8893) (not x8494) x9021)
+(or (not x9021) x8893)
+(or (not x9021) x8494)
+(or x9022 (not x9021))
+(or x9022 (not x9020))
+(or x9021 x9020 (not x9022))
+(or (not x9022) (not x8494) x9023)
+(or (not x9023) x9022)
+(or (not x9023) x8494)
+(or (not x9024) (not x9025) x9026)
+(or (not x9026) x9024)
+(or (not x9026) x9025)
+(or x9024 (not x9027) (not x9028) x9029)
+(or (not x9029) (not x9024))
+(or (not x9029) x9027)
+(or (not x9029) x9028)
+(or x9030 (not x9029))
+(or x9030 (not x9026))
+(or x9029 x9026 (not x9030))
+(or (not x9031) (not x8494) (not x9032) (not x9033) (not x9034) (not x9030) x9035)
+(or (not x9035) x9031)
+(or (not x9035) x8494)
+(or (not x9035) x9032)
+(or (not x9035) x9033)
+(or (not x9035) x9034)
+(or (not x9035) x9030)
+(or x9028 x9036)
+(or x9028 x8494)
+(or x9028 (not x8476))
+(or x9028 (not x8450))
+(or x9028 (not x9037))
+(or x9028 (not x9038))
+(or x9028 (not x9039))
+(or x9028 (not x9040))
+(or x9028 (not x9041))
+(or (not x9036) (not x8494) x8476 x8450 x9037 x9038 x9039 x9040 x9041 (not x9028))
+(or x9027 (not x8475))
+(or x9027 x9042)
+(or x9027 x8494)
+(or x9027 (not x8450))
+(or x9027 (not x9043))
+(or x9027 x9044)
+(or x9027 x8494)
+(or x9027 (not x9045))
+(or x9027 (not x9046))
+(or x9027 (not x9038))
+(or x9027 (not x9039))
+(or x9027 (not x9040))
+(or x8475 (not x9042) (not x8494) x8450 x9043 (not x9044) (not x8494) x9045 x9046 x9038 x9039 x9040 (not x9027))
+(or x9046 (not x9027) (not x9028) x9047)
+(or (not x9047) (not x9046))
+(or (not x9047) x9027)
+(or (not x9047) x9028)
+(or x9048 (not x9047))
+(or x9048 (not x9046))
+(or x9047 x9046 (not x9048))
+(or (not x9049) (not x9044) (not x8494) (not x9033) (not x9048) x9050)
+(or (not x9050) x9049)
+(or (not x9050) x9044)
+(or (not x9050) x8494)
+(or (not x9050) x9033)
+(or (not x9050) x9048)
+(or x9051 (not x9052))
+(or x9051 (not x9045))
+(or x9051 (not x9050))
+(or x9051 (not x9035))
+(or x9052 x9045 x9050 x9035 (not x9051))
+(or (not x9053) (not x8494) (not x9051) x9054)
+(or (not x9054) x9053)
+(or (not x9054) x8494)
+(or (not x9054) x9051)
+(or x9055 (not x9054))
+(or x9055 x8494)
+(or x9054 (not x8494) (not x9055))
+(or x9056 x8903)
+(or x9056 x8494)
+(or (not x8903) (not x8494) (not x9056))
+(or (not x9056) (not x8632) (not x8902) (not x8494) x9057)
+(or (not x9057) x9056)
+(or (not x9057) x8632)
+(or (not x9057) x8902)
+(or (not x9057) x8494)
+(or (not x8903) (not x8494) x9058)
+(or (not x9058) x8903)
+(or (not x9058) x8494)
+(or x9059 (not x9058))
+(or x9059 (not x9057))
+(or x9058 x9057 (not x9059))
+(or (not x9059) (not x8494) x9060)
+(or (not x9060) x9059)
+(or (not x9060) x8494)
+(or x9061 x9031)
+(or x9061 x8494)
+(or x9061 (not x9062))
+(or x9061 (not x9045))
+(or x9061 (not x9063))
+(or x9061 (not x9064))
+(or x9061 x8494)
+(or x9061 (not x9024))
+(or (not x9031) (not x8494) x9062 x9045 x9063 x9064 (not x8494) x9024 (not x9061))
+(or x9065 (not x9043))
+(or x9065 (not x9062))
+(or x9065 (not x9066))
+(or x9043 x9062 x9066 (not x9065))
+(or x9067 (not x9043))
+(or x9067 x9044)
+(or x9067 x8494)
+(or x9067 (not x9045))
+(or x9067 x9046)
+(or x9067 (not x8499))
+(or x9043 (not x9044) (not x8494) x9045 (not x9046) x8499 (not x9067))
+(or (not x9067) (not x9065) (not x9061) x9068)
+(or (not x9068) x9067)
+(or (not x9068) x9065)
+(or (not x9068) x9061)
+(or x9069 (not x8499))
+(or x9069 (not x9068))
+(or x8499 x9068 (not x9069))
+(or (not x9053) (not x8494) (not x9069) (not x9053) (not x8494) x9070)
+(or (not x9070) x9053)
+(or (not x9070) x8494)
+(or (not x9070) x9069)
+(or (not x9070) x9053)
+(or (not x9070) x8494)
+(or (not x8700) (not x8701) (not x8702) x8703 (not x8704) x8705 (not x8706) (not x8707) (not x8708) x8709 (not x8710) (not x8711) x8854)
+(or (not x8854) x8700)
+(or (not x8854) x8701)
+(or (not x8854) x8702)
+(or (not x8854) (not x8703))
+(or (not x8854) x8704)
+(or (not x8854) (not x8705))
+(or (not x8854) x8706)
+(or (not x8854) x8707)
+(or (not x8854) x8708)
+(or (not x8854) (not x8709))
+(or (not x8854) x8710)
+(or (not x8854) x8711)
+(or x8836 x8821)
+(or x8836 x8494)
+(or x8836 (not x8834))
+(or (not x8821) (not x8494) x8834 (not x8836))
+(or x9071 x8821)
+(or x9071 x8494)
+(or x9071 (not x8834))
+(or x9071 (not x9072))
+(or x9071 (not x9073))
+(or (not x8821) (not x8494) x8834 x9072 x9073 (not x9071))
+(or x8830 (not x8698))
+(or x8830 x8494)
+(or x8830 (not x9074))
+(or x8830 x8494)
+(or x8698 (not x8494) x9074 (not x8494) (not x8830))
+(or (not x8830) x8698 (not x8494) x9075)
+(or (not x9075) x8830)
+(or (not x9075) (not x8698))
+(or (not x9075) x8494)
+(or x9076 (not x9077))
+(or x9076 x8827)
+(or x9076 x8494)
+(or x9076 (not x9072))
+(or x9076 (not x9075))
+(or x9077 (not x8827) (not x8494) x9072 x9075 (not x9076))
+(or (not x9076) (not x9071) x8699)
+(or (not x8699) x9076)
+(or (not x8699) x9071)
+(or x9078 x8849)
+(or x9078 (not x8850))
+(or x9078 (not x8711))
+(or x9078 x8710)
+(or (not x8849) x8850 x8711 (not x8710) (not x9078))
+(or (not x9079) (not x9078) x9080)
+(or (not x9080) x9079)
+(or (not x9080) x9078)
+(or x8709 (not x8844) x9081)
+(or (not x9081) (not x8709))
+(or (not x9081) x8844)
+(or (not x8709) (not x8846) x9082)
+(or (not x9082) x8709)
+(or (not x9082) x8846)
+(or x9083 (not x9082))
+(or x9083 (not x9081))
+(or x9082 x9081 (not x9083))
+(or x9079 x8849)
+(or x9079 (not x8850))
+(or x9079 (not x8711))
+(or x9079 (not x8710))
+(or (not x8849) x8850 x8711 x8710 (not x9079))
+(or (not x8849) x8850 x8711 (not x8710) x8842)
+(or (not x8842) x8849)
+(or (not x8842) (not x8850))
+(or (not x8842) (not x8711))
+(or (not x8842) x8710)
+(or (not x8849) x8850 x8711 (not x8710) (not x9079) (not x9083) x9084)
+(or (not x9084) x8849)
+(or (not x9084) (not x8850))
+(or (not x9084) (not x8711))
+(or (not x9084) x8710)
+(or (not x9084) x9079)
+(or (not x9084) x9083)
+(or (not x8849) x8850 x8711 x8710 x8841)
+(or (not x8841) x8849)
+(or (not x8841) (not x8850))
+(or (not x8841) (not x8711))
+(or (not x8841) (not x8710))
+(or (not x8849) x8850 x8711 x8710 (not x8852) x9085)
+(or (not x9085) x8849)
+(or (not x9085) (not x8850))
+(or (not x9085) (not x8711))
+(or (not x9085) (not x8710))
+(or (not x9085) x8852)
+(or x9086 (not x9085))
+(or x9086 (not x9084))
+(or x9086 (not x9080))
+(or x9085 x9084 x9080 (not x9086))
+(or x8826 x8700)
+(or x8826 x8701)
+(or x8826 x8702)
+(or x8826 (not x8703))
+(or x8826 x8704)
+(or x8826 (not x8705))
+(or x8826 x8706)
+(or x8826 x8707)
+(or x8826 x8708)
+(or x8826 (not x8709))
+(or x8826 x8710)
+(or x8826 x8711)
+(or (not x8700) (not x8701) (not x8702) x8703 (not x8704) x8705 (not x8706) (not x8707) (not x8708) x8709 (not x8710) (not x8711) (not x8826))
+(or x8815 (not x8698))
+(or x8815 x8494)
+(or x8698 (not x8494) (not x8815))
+(or x8857 (not x9087))
+(or x8857 (not x8698))
+(or x8857 x8494)
+(or x9087 x8698 (not x8494) (not x8857))
+(or (not x8829) (not x8827) (not x8494) (not x8823) (not x8857) x9088)
+(or (not x9088) x8829)
+(or (not x9088) x8827)
+(or (not x9088) x8494)
+(or (not x9088) x8823)
+(or (not x9088) x8857)
+(or x8717 (not x9088))
+(or x8717 (not x9089))
+(or x9088 x9089 (not x8717))
+(or (not x8717) (not x8826) (not x9086) x9090)
+(or (not x9090) x8717)
+(or (not x9090) x8826)
+(or (not x9090) x9086)
+(or x9091 (not x9090))
+(or x9091 (not x8699))
+(or x9091 (not x8854))
+(or x9090 x8699 x8854 (not x9091))
+(or x8824 (not x9077))
+(or x8824 x8827)
+(or x8824 x8494)
+(or x9077 (not x8827) (not x8494) (not x8824))
+(or (not x8821) (not x8494) (not x8822) (not x8823) (not x8824) x9089)
+(or (not x9089) x8821)
+(or (not x9089) x8494)
+(or (not x9089) x8822)
+(or (not x9089) x8823)
+(or (not x9089) x8824)
+(or (not x8821) (not x8494) (not x8822) (not x8823) (not x8824) (not x9091) x9092)
+(or (not x9092) x8821)
+(or (not x9092) x8494)
+(or (not x9092) x8822)
+(or (not x9092) x8823)
+(or (not x9092) x8824)
+(or (not x9092) x9091)
+(or x8698 (not x8494) x9074 (not x8494) x9087)
+(or (not x9087) (not x8698))
+(or (not x9087) x8494)
+(or (not x9087) (not x9074))
+(or (not x9087) x8494)
+(or (not x8821) (not x8494) x9077)
+(or (not x9077) x8821)
+(or (not x9077) x8494)
+(or x8823 (not x9077))
+(or x8823 (not x8834))
+(or x9077 x8834 (not x8823))
+(or (not x8827) (not x8494) x8834)
+(or (not x8834) x8827)
+(or (not x8834) x8494)
+(or (not x8829) (not x8827) (not x8494) x9073)
+(or (not x9073) x8829)
+(or (not x9073) x8827)
+(or (not x9073) x8494)
+(or (not x8829) (not x8827) (not x8494) (not x8823) x8698 (not x8494) x9074 (not x8494) x9093)
+(or (not x9093) x8829)
+(or (not x9093) x8827)
+(or (not x9093) x8494)
+(or (not x9093) x8823)
+(or (not x9093) (not x8698))
+(or (not x9093) x8494)
+(or (not x9093) (not x9074))
+(or (not x9093) x8494)
+(or x8861 (not x8814))
+(or x8861 (not x8499))
+(or x8814 x8499 (not x8861))
+(or x8822 x8827)
+(or x8822 x8494)
+(or (not x8827) (not x8494) (not x8822))
+(or x8829 x8821)
+(or x8829 x8494)
+(or (not x8821) (not x8494) (not x8829))
+(or (not x8829) (not x8822) x9072)
+(or (not x9072) x8829)
+(or (not x9072) x8822)
+(or (not x8829) (not x8822) (not x8861) x9094)
+(or (not x9094) x8829)
+(or (not x9094) x8822)
+(or (not x9094) x8861)
+(or x9095 (not x9094))
+(or x9095 (not x9093))
+(or x9095 (not x9092))
+(or x9094 x9093 x9092 (not x9095))
+(or (not x250) (not x9095) x9096)
+(or (not x9096) x250)
+(or (not x9096) x9095)
+(or x9097 (not x9096))
+(or x9097 (not x8814))
+(or x9096 x8814 (not x9097))
+(or (not x8817) (not x9097) x9098)
+(or (not x9098) x8817)
+(or (not x9098) x9097)
+(or x9099 (not x9098))
+(or x9099 (not x9070))
+(or x9098 x9070 (not x9099))
+(or (not x9099) (not x8494) x9100)
+(or (not x9100) x9099)
+(or (not x9100) x8494)
+(or (not x8609) (not x8494) x8866)
+(or (not x8866) x8609)
+(or (not x8866) x8494)
+(or (not x9101) (not x8687) (not x9102) x9103)
+(or (not x9103) x9101)
+(or (not x9103) x8687)
+(or (not x9103) x9102)
+(or (not x8617) (not x8494) (not x8629) (not x8630) (not x8631) (not x8632) (not x9104) x9105)
+(or (not x9105) x8617)
+(or (not x9105) x8494)
+(or (not x9105) x8629)
+(or (not x9105) x8630)
+(or (not x9105) x8631)
+(or (not x9105) x8632)
+(or (not x9105) x9104)
+(or x9106 (not x9105))
+(or x9106 (not x9103))
+(or x9105 x9103 (not x9106))
+(or (not x9106) (not x8609) (not x8494) x8978)
+(or (not x8978) x9106)
+(or (not x8978) x8609)
+(or (not x8978) x8494)
+(or (not x8639) (not x8494) x8873)
+(or (not x8873) x8639)
+(or (not x8873) x8494)
+(or (not x9101) (not x8629) (not x8630) (not x8631) (not x8632) x9107)
+(or (not x9107) x9101)
+(or (not x9107) x8629)
+(or (not x9107) x8630)
+(or (not x9107) x8631)
+(or (not x9107) x8632)
+(or (not x8617) (not x8494) (not x8629) (not x8630) (not x8631) (not x8632) (not x8616) (not x8494) x9108)
+(or (not x9108) x8617)
+(or (not x9108) x8494)
+(or (not x9108) x8629)
+(or (not x9108) x8630)
+(or (not x9108) x8631)
+(or (not x9108) x8632)
+(or (not x9108) x8616)
+(or (not x9108) x8494)
+(or x8687 (not x9108))
+(or x8687 (not x9107))
+(or x9108 x9107 (not x8687))
+(or (not x8687) (not x8682) (not x8494) (not x8639) (not x8494) x8977)
+(or (not x8977) x8687)
+(or (not x8977) x8682)
+(or (not x8977) x8494)
+(or (not x8977) x8639)
+(or (not x8977) x8494)
+(or x9109 (not x8977))
+(or x9109 (not x8978))
+(or x8977 x8978 (not x9109))
+(or x9110 (not x9111))
+(or x9110 (not x9112))
+(or x9110 (not x9111))
+(or x9111 x9112 x9111 (not x9110))
+(or (not x9113) (not x8616) (not x8494) x9111)
+(or (not x9111) x9113)
+(or (not x9111) x8616)
+(or (not x9111) x8494)
+(or (not x8682) (not x8494) x8684)
+(or (not x8684) x8682)
+(or (not x8684) x8494)
+(or (not x8629) (not x8630) (not x8631) (not x8632) (not x8616) (not x8494) (not x8682) (not x8494) x9112)
+(or (not x9112) x8629)
+(or (not x9112) x8630)
+(or (not x9112) x8631)
+(or (not x9112) x8632)
+(or (not x9112) x8616)
+(or (not x9112) x8494)
+(or (not x9112) x8682)
+(or (not x9112) x8494)
+(or x9114 (not x9112))
+(or x9114 (not x9111))
+(or x9112 x9111 (not x9114))
+(or (not x9115) (not x9114) (not x9110) (not x8799) (not x8494) x9116)
+(or (not x9116) x9115)
+(or (not x9116) x9114)
+(or (not x9116) x9110)
+(or (not x9116) x8799)
+(or (not x9116) x8494)
+(or x9102 x8682)
+(or x9102 x8494)
+(or (not x8682) (not x8494) (not x9102))
+(or x8634 (not x8968))
+(or x8634 (not x8969))
+(or x8634 (not x8970))
+(or x8634 (not x8971))
+(or x8968 x8969 x8970 x8971 (not x8634))
+(or x9113 (not x8968))
+(or x9113 (not x8969))
+(or x9113 (not x8970))
+(or x9113 (not x8971))
+(or x9113 x8616)
+(or x9113 x8494)
+(or x8968 x8969 x8970 x8971 (not x8616) (not x8494) (not x9113))
+(or x9117 (not x8968))
+(or x9117 (not x8969))
+(or x9117 (not x8970))
+(or x9117 (not x8971))
+(or x9117 x8616)
+(or x9117 x8494)
+(or x9117 x8682)
+(or x9117 x8494)
+(or x8968 x8969 x8970 x8971 (not x8616) (not x8494) (not x8682) (not x8494) (not x9117))
+(or x9104 x8616)
+(or x9104 x8494)
+(or (not x8616) (not x8494) (not x9104))
+(or (not x8616) (not x8494) x8624)
+(or (not x8624) x8616)
+(or (not x8624) x8494)
+(or (not x8629) (not x8630) (not x8631) (not x8632) (not x8616) (not x8494) x9118)
+(or (not x9118) x8629)
+(or (not x9118) x8630)
+(or (not x9118) x8631)
+(or (not x9118) x8632)
+(or (not x9118) x8616)
+(or (not x9118) x8494)
+(or x9115 (not x9118))
+(or x9115 x8616)
+(or x9115 x8494)
+(or x9118 (not x8616) (not x8494) (not x9115))
+(or (not x9115) (not x9117) (not x9115) (not x8805) (not x8494) x9119)
+(or (not x9119) x9115)
+(or (not x9119) x9117)
+(or (not x9119) x9115)
+(or (not x9119) x8805)
+(or (not x9119) x8494)
+(or x9120 (not x9119))
+(or x9120 (not x9116))
+(or x9119 x9116 (not x9120))
+(or (not x8630) (not x8632) (not x8631) (not x8630) (not x9120) (not x9109) x9121)
+(or (not x9121) x8630)
+(or (not x9121) x8632)
+(or (not x9121) x8631)
+(or (not x9121) x8630)
+(or (not x9121) x9120)
+(or (not x9121) x9109)
+(or (not x8646) (not x8494) x8879)
+(or (not x8879) x8646)
+(or (not x8879) x8494)
+(or (not x9101) (not x8728) (not x9122) x9123)
+(or (not x9123) x9101)
+(or (not x9123) x8728)
+(or (not x9123) x9122)
+(or (not x8617) (not x8494) (not x8629) (not x8665) (not x8494) x8666 (not x8494) (not x8632) (not x8667) (not x8631) (not x8632) (not x9124) x9125)
+(or (not x9125) x8617)
+(or (not x9125) x8494)
+(or (not x9125) x8629)
+(or (not x9125) x8665)
+(or (not x9125) x8494)
+(or (not x9125) (not x8666))
+(or (not x9125) x8494)
+(or (not x9125) x8632)
+(or (not x9125) x8667)
+(or (not x9125) x8631)
+(or (not x9125) x8632)
+(or (not x9125) x9124)
+(or x9126 (not x9125))
+(or x9126 (not x9123))
+(or x9125 x9123 (not x9126))
+(or (not x9126) (not x8646) (not x8494) x8995)
+(or (not x8995) x9126)
+(or (not x8995) x8646)
+(or (not x8995) x8494)
+(or (not x8674) (not x8494) x8886)
+(or (not x8886) x8674)
+(or (not x8886) x8494)
+(or x9101 x8617)
+(or x9101 x8494)
+(or (not x8617) (not x8494) (not x9101))
+(or (not x9101) (not x8629) (not x8665) (not x8494) x8666 (not x8494) (not x8632) (not x8667) (not x8631) (not x8632) x9127)
+(or (not x9127) x9101)
+(or (not x9127) x8629)
+(or (not x9127) x8665)
+(or (not x9127) x8494)
+(or (not x9127) (not x8666))
+(or (not x9127) x8494)
+(or (not x9127) x8632)
+(or (not x9127) x8667)
+(or (not x9127) x8631)
+(or (not x9127) x8632)
+(or (not x8617) (not x8494) x8680)
+(or (not x8680) x8617)
+(or (not x8680) x8494)
+(or (not x8617) (not x8494) (not x8629) (not x8665) (not x8494) x8666 (not x8494) (not x8632) (not x8667) (not x8631) (not x8632) (not x8653) (not x8494) x9128)
+(or (not x9128) x8617)
+(or (not x9128) x8494)
+(or (not x9128) x8629)
+(or (not x9128) x8665)
+(or (not x9128) x8494)
+(or (not x9128) (not x8666))
+(or (not x9128) x8494)
+(or (not x9128) x8632)
+(or (not x9128) x8667)
+(or (not x9128) x8631)
+(or (not x9128) x8632)
+(or (not x9128) x8653)
+(or (not x9128) x8494)
+(or x8728 (not x9128))
+(or x8728 (not x9127))
+(or x9128 x9127 (not x8728))
+(or (not x8728) (not x8723) (not x8494) (not x8674) (not x8494) x8994)
+(or (not x8994) x8728)
+(or (not x8994) x8723)
+(or (not x8994) x8494)
+(or (not x8994) x8674)
+(or (not x8994) x8494)
+(or x9129 (not x8994))
+(or x9129 (not x8995))
+(or x8994 x8995 (not x9129))
+(or (not x9130) (not x9131) (not x9132) (not x8736) (not x8494) x9133)
+(or (not x9133) x9130)
+(or (not x9133) x9131)
+(or (not x9133) x9132)
+(or (not x9133) x8736)
+(or (not x9133) x8494)
+(or (not x9130) (not x9134) (not x9130) (not x8742) (not x8494) x9135)
+(or (not x9135) x9130)
+(or (not x9135) x9134)
+(or (not x9135) x9130)
+(or (not x9135) x8742)
+(or (not x9135) x8494)
+(or x9136 (not x9135))
+(or x9136 (not x9133))
+(or x9135 x9133 (not x9136))
+(or (not x8632) (not x8631) (not x8665) (not x8494) x8666 (not x8494) (not x8632) (not x8667) (not x9136) x9137)
+(or (not x9137) x8632)
+(or (not x9137) x8631)
+(or (not x9137) x8665)
+(or (not x9137) x8494)
+(or (not x9137) (not x8666))
+(or (not x9137) x8494)
+(or (not x9137) x8632)
+(or (not x9137) x8667)
+(or (not x9137) x9136)
+(or (not x9130) (not x9131) (not x9132) (not x8748) (not x8494) x9138)
+(or (not x9138) x9130)
+(or (not x9138) x9131)
+(or (not x9138) x9132)
+(or (not x9138) x8748)
+(or (not x9138) x8494)
+(or (not x9130) (not x9134) (not x9130) (not x8753) (not x8494) x9139)
+(or (not x9139) x9130)
+(or (not x9139) x9134)
+(or (not x9139) x9130)
+(or (not x9139) x8753)
+(or (not x9139) x8494)
+(or x9140 (not x9139))
+(or x9140 (not x9138))
+(or x9139 x9138 (not x9140))
+(or (not x8632) (not x8631) (not x8665) (not x8494) x8666 (not x8494) (not x8632) (not x8667) (not x9140) x9141)
+(or (not x9141) x8632)
+(or (not x9141) x8631)
+(or (not x9141) x8665)
+(or (not x9141) x8494)
+(or (not x9141) (not x8666))
+(or (not x9141) x8494)
+(or (not x9141) x8632)
+(or (not x9141) x8667)
+(or (not x9141) x9140)
+(or (not x9130) (not x9131) (not x9132) (not x8758) (not x8494) x9142)
+(or (not x9142) x9130)
+(or (not x9142) x9131)
+(or (not x9142) x9132)
+(or (not x9142) x8758)
+(or (not x9142) x8494)
+(or (not x9130) (not x9134) (not x9130) (not x8763) (not x8494) x9143)
+(or (not x9143) x9130)
+(or (not x9143) x9134)
+(or (not x9143) x9130)
+(or (not x9143) x8763)
+(or (not x9143) x8494)
+(or x9144 (not x9143))
+(or x9144 (not x9142))
+(or x9143 x9142 (not x9144))
+(or (not x8632) (not x8631) (not x8665) (not x8494) x8666 (not x8494) (not x8632) (not x8667) (not x9144) x9145)
+(or (not x9145) x8632)
+(or (not x9145) x8631)
+(or (not x9145) x8665)
+(or (not x9145) x8494)
+(or (not x9145) (not x8666))
+(or (not x9145) x8494)
+(or (not x9145) x8632)
+(or (not x9145) x8667)
+(or (not x9145) x9144)
+(or (not x9130) (not x9131) (not x9132) (not x8768) (not x8494) x9146)
+(or (not x9146) x9130)
+(or (not x9146) x9131)
+(or (not x9146) x9132)
+(or (not x9146) x8768)
+(or (not x9146) x8494)
+(or (not x9130) (not x9134) (not x9130) (not x8773) (not x8494) x9147)
+(or (not x9147) x9130)
+(or (not x9147) x9134)
+(or (not x9147) x9130)
+(or (not x9147) x8773)
+(or (not x9147) x8494)
+(or x9148 (not x9147))
+(or x9148 (not x9146))
+(or x9147 x9146 (not x9148))
+(or (not x8632) (not x8631) (not x8665) (not x8494) x8666 (not x8494) (not x8632) (not x8667) (not x9148) x9149)
+(or (not x9149) x8632)
+(or (not x9149) x8631)
+(or (not x9149) x8665)
+(or (not x9149) x8494)
+(or (not x9149) (not x8666))
+(or (not x9149) x8494)
+(or (not x9149) x8632)
+(or (not x9149) x8667)
+(or (not x9149) x9148)
+(or (not x9130) (not x9131) (not x9132) (not x8778) (not x8494) x9150)
+(or (not x9150) x9130)
+(or (not x9150) x9131)
+(or (not x9150) x9132)
+(or (not x9150) x8778)
+(or (not x9150) x8494)
+(or (not x9130) (not x9134) (not x9130) (not x8783) (not x8494) x9151)
+(or (not x9151) x9130)
+(or (not x9151) x9134)
+(or (not x9151) x9130)
+(or (not x9151) x8783)
+(or (not x9151) x8494)
+(or x9152 (not x9151))
+(or x9152 (not x9150))
+(or x9151 x9150 (not x9152))
+(or (not x8632) (not x8631) (not x8665) (not x8494) x8666 (not x8494) (not x8632) (not x8667) (not x9152) x9153)
+(or (not x9153) x8632)
+(or (not x9153) x8631)
+(or (not x9153) x8665)
+(or (not x9153) x8494)
+(or (not x9153) (not x8666))
+(or (not x9153) x8494)
+(or (not x9153) x8632)
+(or (not x9153) x8667)
+(or (not x9153) x9152)
+(or x9132 (not x9154))
+(or x9132 (not x9155))
+(or x9132 (not x9154))
+(or x9154 x9155 x9154 (not x9132))
+(or (not x9156) (not x8653) (not x8494) x9154)
+(or (not x9154) x9156)
+(or (not x9154) x8653)
+(or (not x9154) x8494)
+(or (not x8723) (not x8494) x8725)
+(or (not x8725) x8723)
+(or (not x8725) x8494)
+(or (not x8629) (not x8665) (not x8494) x8666 (not x8494) (not x8632) (not x8667) (not x8631) (not x8632) (not x8653) (not x8494) (not x8723) (not x8494) x9155)
+(or (not x9155) x8629)
+(or (not x9155) x8665)
+(or (not x9155) x8494)
+(or (not x9155) (not x8666))
+(or (not x9155) x8494)
+(or (not x9155) x8632)
+(or (not x9155) x8667)
+(or (not x9155) x8631)
+(or (not x9155) x8632)
+(or (not x9155) x8653)
+(or (not x9155) x8494)
+(or (not x9155) x8723)
+(or (not x9155) x8494)
+(or x9131 (not x9155))
+(or x9131 (not x9154))
+(or x9155 x9154 (not x9131))
+(or (not x9130) (not x9131) (not x9132) (not x8788) (not x8494) x9157)
+(or (not x9157) x9130)
+(or (not x9157) x9131)
+(or (not x9157) x9132)
+(or (not x9157) x8788)
+(or (not x9157) x8494)
+(or x9122 x8723)
+(or x9122 x8494)
+(or (not x8723) (not x8494) (not x9122))
+(or x8921 x8665)
+(or x8921 x8494)
+(or x8921 (not x8666))
+(or x8921 x8494)
+(or (not x8665) (not x8494) x8666 (not x8494) (not x8921))
+(or x8630 x8665)
+(or x8630 x8494)
+(or x8630 (not x8666))
+(or x8630 x8494)
+(or x8630 (not x8971))
+(or x8630 (not x8989))
+(or (not x8665) (not x8494) x8666 (not x8494) x8971 x8989 (not x8630))
+(or (not x9158) (not x8494) (not x9159) (not x8494) (not x9160) (not x8494) x8968)
+(or (not x8968) x9158)
+(or (not x8968) x8494)
+(or (not x8968) x9159)
+(or (not x8968) x8494)
+(or (not x8968) x9160)
+(or (not x8968) x8494)
+(or x8669 (not x8968))
+(or x8669 x8665)
+(or x8669 x8494)
+(or x8669 (not x8666))
+(or x8669 x8494)
+(or x8669 (not x8971))
+(or x8669 (not x8989))
+(or x8669 (not x8970))
+(or x8669 (not x8971))
+(or x8968 (not x8665) (not x8494) x8666 (not x8494) x8971 x8989 x8970 x8971 (not x8669))
+(or x9156 (not x8968))
+(or x9156 x8665)
+(or x9156 x8494)
+(or x9156 (not x8666))
+(or x9156 x8494)
+(or x9156 (not x8971))
+(or x9156 (not x8989))
+(or x9156 (not x8970))
+(or x9156 (not x8971))
+(or x9156 x8653)
+(or x9156 x8494)
+(or x8968 (not x8665) (not x8494) x8666 (not x8494) x8971 x8989 x8970 x8971 (not x8653) (not x8494) (not x9156))
+(or x9134 (not x8968))
+(or x9134 x8665)
+(or x9134 x8494)
+(or x9134 (not x8666))
+(or x9134 x8494)
+(or x9134 (not x8971))
+(or x9134 (not x8989))
+(or x9134 (not x8970))
+(or x9134 (not x8971))
+(or x9134 x8653)
+(or x9134 x8494)
+(or x9134 x8723)
+(or x9134 x8494)
+(or x8968 (not x8665) (not x8494) x8666 (not x8494) x8971 x8989 x8970 x8971 (not x8653) (not x8494) (not x8723) (not x8494) (not x9134))
+(or x9124 x8653)
+(or x9124 x8494)
+(or (not x8653) (not x8494) (not x9124))
+(or (not x8653) (not x8494) x8660)
+(or (not x8660) x8653)
+(or (not x8660) x8494)
+(or x8629 x9158)
+(or x8629 x8494)
+(or x8629 x9159)
+(or x8629 x8494)
+(or x8629 x9160)
+(or x8629 x8494)
+(or (not x9158) (not x8494) (not x9159) (not x8494) (not x9160) (not x8494) (not x8629))
+(or (not x8629) (not x8665) (not x8494) x8666 (not x8494) (not x8632) (not x8667) (not x8631) (not x8632) (not x8653) (not x8494) x9161)
+(or (not x9161) x8629)
+(or (not x9161) x8665)
+(or (not x9161) x8494)
+(or (not x9161) (not x8666))
+(or (not x9161) x8494)
+(or (not x9161) x8632)
+(or (not x9161) x8667)
+(or (not x9161) x8631)
+(or (not x9161) x8632)
+(or (not x9161) x8653)
+(or (not x9161) x8494)
+(or x9130 (not x9161))
+(or x9130 x8653)
+(or x9130 x8494)
+(or x9161 (not x8653) (not x8494) (not x9130))
+(or (not x9130) (not x9134) (not x9130) (not x8793) (not x8494) x9162)
+(or (not x9162) x9130)
+(or (not x9162) x9134)
+(or (not x9162) x9130)
+(or (not x9162) x8793)
+(or (not x9162) x8494)
+(or x9163 (not x9162))
+(or x9163 (not x9157))
+(or x9162 x9157 (not x9163))
+(or (not x8632) (not x8631) (not x8665) (not x8494) x8666 (not x8494) (not x8632) (not x8667) (not x9163) x9164)
+(or (not x9164) x8632)
+(or (not x9164) x8631)
+(or (not x9164) x8665)
+(or (not x9164) x8494)
+(or (not x9164) (not x8666))
+(or (not x9164) x8494)
+(or (not x9164) x8632)
+(or (not x9164) x8667)
+(or (not x9164) x9163)
+(or x9165 (not x9164))
+(or x9165 (not x9153))
+(or x9165 (not x9149))
+(or x9165 (not x9145))
+(or x9165 (not x9141))
+(or x9165 (not x9137))
+(or x9164 x9153 x9149 x9145 x9141 x9137 (not x9165))
+(or (not x8665) (not x8494) x8666 (not x8494) (not x8632) (not x8667) x8969)
+(or (not x8969) x8665)
+(or (not x8969) x8494)
+(or (not x8969) (not x8666))
+(or (not x8969) x8494)
+(or (not x8969) x8632)
+(or (not x8969) x8667)
+(or (not x8665) (not x8494) x8666 (not x8494) (not x8632) (not x8667) (not x9165) (not x9129) x9166)
+(or (not x9166) x8665)
+(or (not x9166) x8494)
+(or (not x9166) (not x8666))
+(or (not x9166) x8494)
+(or (not x9166) x8632)
+(or (not x9166) x8667)
+(or (not x9166) x9165)
+(or (not x9166) x9129)
+(or x9167 (not x9166))
+(or x9167 (not x9121))
+(or x9166 x9121 (not x9167))
+(or x8667 (not x9168))
+(or x8667 (not x9169))
+(or x9168 x9169 (not x8667))
+(or x8631 (not x9168))
+(or x8631 (not x9169))
+(or x8631 (not x8971))
+(or x9168 x9169 x8971 (not x8631))
+(or (not x8631) (not x9167) x9170)
+(or (not x9170) x8631)
+(or (not x9170) x9167)
+(or (not x8892) (not x8494) x8951)
+(or (not x8951) x8892)
+(or (not x8951) x8494)
+(or (not x8943) (not x8914) x8989)
+(or (not x8989) x8943)
+(or (not x8989) x8914)
+(or (not x8943) (not x8914) (not x8632) x8970)
+(or (not x8970) x8943)
+(or (not x8970) x8914)
+(or (not x8970) x8632)
+(or (not x8943) (not x8914) (not x8632) (not x8892) (not x8494) x9171)
+(or (not x9171) x8943)
+(or (not x9171) x8914)
+(or (not x9171) x8632)
+(or (not x9171) x8892)
+(or (not x9171) x8494)
+(or x9172 (not x9171))
+(or x9172 (not x9170))
+(or x9171 x9170 (not x9172))
+(or x8914 (not x8666))
+(or x8914 x8494)
+(or x8666 (not x8494) (not x8914))
+(or (not x8665) (not x8494) x9168)
+(or (not x9168) x8665)
+(or (not x9168) x8494)
+(or x8632 (not x9168))
+(or x8632 (not x8666))
+(or x8632 x8494)
+(or x9168 x8666 (not x8494) (not x8632))
+(or (not x8632) (not x9172) x9173)
+(or (not x9173) x8632)
+(or (not x9173) x9172)
+(or x8666 (not x8494) x9169)
+(or (not x9169) (not x8666))
+(or (not x9169) x8494)
+(or x8943 x8665)
+(or x8943 x8494)
+(or (not x8665) (not x8494) (not x8943))
+(or (not x8943) x8666 (not x8494) x8971)
+(or (not x8971) x8943)
+(or (not x8971) (not x8666))
+(or (not x8971) x8494)
+(or (not x8943) x8666 (not x8494) (not x8902) (not x8494) x9174)
+(or (not x9174) x8943)
+(or (not x9174) (not x8666))
+(or (not x9174) x8494)
+(or (not x9174) x8902)
+(or (not x9174) x8494)
+(or x9175 (not x9174))
+(or x9175 (not x9173))
+(or x9174 x9173 (not x9175))
+(or (not x9175) (not x8494) x9176)
+(or (not x9176) x9175)
+(or (not x9176) x8494)
+(or (not x9177) (not x9178) (not x9158) (not x8494) x9179)
+(or (not x9179) x9177)
+(or (not x9179) x9178)
+(or (not x9179) x9158)
+(or (not x9179) x8494)
+(or (not x9180) (not x9181) x9182)
+(or (not x9182) x9180)
+(or (not x9182) x9181)
+(or x9183 (not x9182))
+(or x9183 (not x9179))
+(or x9182 x9179 (not x9183))
+(or (not x9184) (not x9183) x9185)
+(or (not x9185) x9184)
+(or (not x9185) x9183)
+(or (not x9180) (not x9158) (not x8494) x9186)
+(or (not x9186) x9180)
+(or (not x9186) x9158)
+(or (not x9186) x8494)
+(or (not x9177) (not x9178) (not x9181) x9187)
+(or (not x9187) x9177)
+(or (not x9187) x9178)
+(or (not x9187) x9181)
+(or x9188 (not x9187))
+(or x9188 (not x9186))
+(or x9187 x9186 (not x9188))
+(or (not x9189) (not x8494) (not x9188) x9190)
+(or (not x9190) x9189)
+(or (not x9190) x8494)
+(or (not x9190) x9188)
+(or x9191 (not x9190))
+(or x9191 (not x9185))
+(or x9190 x9185 (not x9191))
+(or (not x9191) (not x8494) x9192)
+(or (not x9192) x9191)
+(or (not x9192) x8494)
+(or (not x9031) (not x8494) (not x9032) (not x9033) (not x9034) (not x9193) (not x9044) (not x8494) x9194)
+(or (not x9194) x9031)
+(or (not x9194) x8494)
+(or (not x9194) x9032)
+(or (not x9194) x9033)
+(or (not x9194) x9034)
+(or (not x9194) x9193)
+(or (not x9194) x9044)
+(or (not x9194) x8494)
+(or (not x9049) (not x9044) (not x8494) (not x9033) (not x9046) (not x9195) (not x9044) (not x8494) x9196)
+(or (not x9196) x9049)
+(or (not x9196) x9044)
+(or (not x9196) x8494)
+(or (not x9196) x9033)
+(or (not x9196) x9046)
+(or (not x9196) x9195)
+(or (not x9196) x9044)
+(or (not x9196) x8494)
+(or (not x9053) (not x8494) x8814)
+(or (not x8814) x9053)
+(or (not x8814) x8494)
+(or (not x9053) (not x8494) (not x250) x9066)
+(or (not x9066) x9053)
+(or (not x9066) x8494)
+(or (not x9066) x250)
+(or x9197 (not x9066))
+(or x9197 (not x9062))
+(or x9066 x9062 (not x9197))
+(or (not x9049) (not x9032) (not x9197) x9198)
+(or (not x9198) x9049)
+(or (not x9198) x9032)
+(or (not x9198) x9197)
+(or (not x9033) (not x9034) (not x9199) (not x9044) (not x8494) x9200)
+(or (not x9200) x9033)
+(or (not x9200) x9034)
+(or (not x9200) x9199)
+(or (not x9200) x9044)
+(or (not x9200) x8494)
+(or x9201 (not x9200))
+(or x9201 (not x9198))
+(or x9201 (not x9196))
+(or x9201 (not x9194))
+(or x9200 x9198 x9196 x9194 (not x9201))
+(or (not x9201) (not x8494) x9202)
+(or (not x9202) x9201)
+(or (not x9202) x8494)
+(or x9025 (not x9064))
+(or x9025 x8494)
+(or x9064 (not x8494) (not x9025))
+(or x9193 (not x9064))
+(or x9193 x8494)
+(or x9193 (not x9024))
+(or x9064 (not x8494) x9024 (not x9193))
+(or (not x9031) (not x8494) (not x9032) (not x9033) (not x9034) (not x9193) (not x9031) (not x8494) x9203)
+(or (not x9203) x9031)
+(or (not x9203) x8494)
+(or (not x9203) x9032)
+(or (not x9203) x9033)
+(or (not x9203) x9034)
+(or (not x9203) x9193)
+(or (not x9203) x9031)
+(or (not x9203) x8494)
+(or x9195 x9046)
+(or x9195 (not x8499))
+(or (not x9046) x8499 (not x9195))
+(or (not x9046) (not x9195) (not x9031) (not x8494) x9204)
+(or (not x9204) x9046)
+(or (not x9204) x9195)
+(or (not x9204) x9031)
+(or (not x9204) x8494)
+(or (not x9046) x8499 x9205)
+(or (not x9205) x9046)
+(or (not x9205) (not x8499))
+(or x9206 x9046)
+(or x9206 (not x9205))
+(or (not x9046) x9205 (not x9206))
+(or (not x9206) x9046 x9207)
+(or (not x9207) x9206)
+(or (not x9207) (not x9046))
+(or x9208 (not x9207))
+(or x9208 (not x9204))
+(or x9207 x9204 (not x9208))
+(or (not x9049) (not x9044) (not x8494) (not x9033) (not x9208) x9209)
+(or (not x9209) x9049)
+(or (not x9209) x9044)
+(or (not x9209) x8494)
+(or (not x9209) x9033)
+(or (not x9209) x9208)
+(or x8817 x9053)
+(or x8817 x8494)
+(or (not x9053) (not x8494) (not x8817))
+(or x9210 x9053)
+(or x9210 x8494)
+(or x9210 (not x8450))
+(or (not x9053) (not x8494) x8450 (not x9210))
+(or (not x9049) (not x9032) (not x9210) (not x9031) (not x8494) x9211)
+(or (not x9211) x9049)
+(or (not x9211) x9032)
+(or (not x9211) x9210)
+(or (not x9211) x9031)
+(or (not x9211) x8494)
+(or (not x9033) (not x9034) (not x9199) (not x9031) (not x8494) x9212)
+(or (not x9212) x9033)
+(or (not x9212) x9034)
+(or (not x9212) x9199)
+(or (not x9212) x9031)
+(or (not x9212) x8494)
+(or x9213 (not x9212))
+(or x9213 (not x9211))
+(or x9213 (not x9209))
+(or x9213 (not x9203))
+(or x9212 x9211 x9209 x9203 (not x9213))
+(or (not x9213) (not x8494) x9214)
+(or (not x9214) x9213)
+(or (not x9214) x8494)
+(or (not x9177) (not x9178) (not x9159) (not x8494) x9215)
+(or (not x9215) x9177)
+(or (not x9215) x9178)
+(or (not x9215) x9159)
+(or (not x9215) x8494)
+(or (not x9180) (not x9216) x9217)
+(or (not x9217) x9180)
+(or (not x9217) x9216)
+(or x9218 (not x9217))
+(or x9218 (not x9215))
+(or x9217 x9215 (not x9218))
+(or (not x9184) (not x9218) x9219)
+(or (not x9219) x9184)
+(or (not x9219) x9218)
+(or (not x9180) (not x9159) (not x8494) x9220)
+(or (not x9220) x9180)
+(or (not x9220) x9159)
+(or (not x9220) x8494)
+(or x9221 x9222 x9181)
+(or x9221 (not x9222) (not x9181))
+(or (not x9221) x9222 (not x9181))
+(or (not x9221) (not x9222) x9181)
+(or (not x9177) (not x9178) (not x9221) x9223)
+(or (not x9223) x9177)
+(or (not x9223) x9178)
+(or (not x9223) x9221)
+(or x9224 (not x9223))
+(or x9224 (not x9220))
+(or x9223 x9220 (not x9224))
+(or (not x9189) (not x8494) (not x9224) x9225)
+(or (not x9225) x9189)
+(or (not x9225) x8494)
+(or (not x9225) x9224)
+(or x9226 (not x9225))
+(or x9226 (not x9219))
+(or x9225 x9219 (not x9226))
+(or (not x9226) (not x8494) x9227)
+(or (not x9227) x9226)
+(or (not x9227) x8494)
+(or (not x9177) (not x9178) (not x9160) (not x8494) x9228)
+(or (not x9228) x9177)
+(or (not x9228) x9178)
+(or (not x9228) x9160)
+(or (not x9228) x8494)
+(or (not x9180) (not x9229) x9230)
+(or (not x9230) x9180)
+(or (not x9230) x9229)
+(or x9231 (not x9230))
+(or x9231 (not x9228))
+(or x9230 x9228 (not x9231))
+(or x9184 x9189)
+(or x9184 x8494)
+(or (not x9189) (not x8494) (not x9184))
+(or (not x9184) (not x9231) x9232)
+(or (not x9232) x9184)
+(or (not x9232) x9231)
+(or (not x9036) (not x8494) (not x243) (not x250) (not x9233) (not x9234) x9235)
+(or (not x9235) x9036)
+(or (not x9235) x8494)
+(or (not x9235) x243)
+(or (not x9235) x250)
+(or (not x9235) x9233)
+(or (not x9235) x9234)
+(or (not x242) (not x9042) (not x8494) (not x250) (not x9049) (not x9044) (not x8494) (not x9033) x9046 x9236)
+(or (not x9236) x242)
+(or (not x9236) x9042)
+(or (not x9236) x8494)
+(or (not x9236) x250)
+(or (not x9236) x9049)
+(or (not x9236) x9044)
+(or (not x9236) x8494)
+(or (not x9236) x9033)
+(or (not x9236) (not x9046))
+(or x9180 (not x9236))
+(or x9180 (not x9235))
+(or x9236 x9235 (not x9180))
+(or (not x9180) (not x9160) (not x8494) x9237)
+(or (not x9237) x9180)
+(or (not x9237) x9160)
+(or (not x9237) x8494)
+(or x9238 x9239 x9240)
+(or x9238 (not x9239) (not x9240))
+(or (not x9238) x9239 (not x9240))
+(or (not x9238) (not x9239) x9240)
+(or x9178 x9036)
+(or x9178 x8494)
+(or x9178 (not x8476))
+(or x9178 (not x8450))
+(or x9178 (not x9037))
+(or x9178 (not x9041))
+(or (not x9036) (not x8494) x8476 x8450 x9037 x9041 (not x9178))
+(or x9177 (not x8475))
+(or x9177 x9042)
+(or x9177 x8494)
+(or x9177 (not x8450))
+(or x9177 (not x9043))
+(or x9177 x9044)
+(or x9177 x8494)
+(or x9177 (not x9045))
+(or x9177 (not x9046))
+(or x8475 (not x9042) (not x8494) x8450 x9043 (not x9044) (not x8494) x9045 x9046 (not x9177))
+(or (not x9177) (not x9178) (not x9238) x9241)
+(or (not x9241) x9177)
+(or (not x9241) x9178)
+(or (not x9241) x9238)
+(or x9242 (not x9241))
+(or x9242 (not x9237))
+(or x9241 x9237 (not x9242))
+(or (not x9189) (not x8494) (not x9242) x9243)
+(or (not x9243) x9189)
+(or (not x9243) x8494)
+(or (not x9243) x9242)
+(or x9244 (not x9243))
+(or x9244 (not x9232))
+(or x9243 x9232 (not x9244))
+(or (not x9244) (not x8494) x9245)
+(or (not x9245) x9244)
+(or (not x9245) x8494)
+(or (not x9246) (not x9247) (not x8494) x9248)
+(or (not x9248) x9246)
+(or (not x9248) x9247)
+(or (not x9248) x8494)
+(or (not x9249) (not x9234) (not x9250) x9251)
+(or (not x9251) x9249)
+(or (not x9251) x9234)
+(or (not x9251) x9250)
+(or x9252 (not x9251))
+(or x9252 (not x9248))
+(or x9251 x9248 (not x9252))
+(or (not x9036) (not x8494) (not x243) (not x250) (not x9233) (not x9252) x9253)
+(or (not x9253) x9036)
+(or (not x9253) x8494)
+(or (not x9253) x243)
+(or (not x9253) x250)
+(or (not x9253) x9233)
+(or (not x9253) x9252)
+(or (not x9254) (not x9049) (not x9044) (not x8494) (not x9033) x9046 (not x9247) (not x8494) x9255)
+(or (not x9255) x9254)
+(or (not x9255) x9049)
+(or (not x9255) x9044)
+(or (not x9255) x8494)
+(or (not x9255) x9033)
+(or (not x9255) (not x9046))
+(or (not x9255) x9247)
+(or (not x9255) x8494)
+(or x9256 (not x9222))
+(or x9256 (not x9257))
+(or x9256 (not x9258))
+(or x9222 x9257 x9258 (not x9256))
+(or x9229 x9239 x9256)
+(or x9229 (not x9239) (not x9256))
+(or (not x9229) x9239 (not x9256))
+(or (not x9229) (not x9239) x9256)
+(or (not x9259) (not x9229) x9260)
+(or (not x9260) x9259)
+(or (not x9260) x9229)
+(or x9261 (not x9262))
+(or x9261 (not x9260))
+(or x9262 x9260 (not x9261))
+(or (not x9263) (not x9261) x9264)
+(or (not x9264) x9263)
+(or (not x9264) x9261)
+(or (not x9265) (not x8494) (not x9266) (not x8494) x9267)
+(or (not x9267) x9265)
+(or (not x9267) x8494)
+(or (not x9267) x9266)
+(or (not x9267) x8494)
+(or x9268 (not x9039))
+(or x9268 (not x9267))
+(or x9268 (not x9038))
+(or x9039 x9267 x9038 (not x9268))
+(or x9250 x9040 x9268)
+(or x9250 (not x9040) (not x9268))
+(or (not x9250) x9040 (not x9268))
+(or (not x9250) (not x9040) x9268)
+(or (not x9049) (not x9044) (not x8494) (not x9033) x9046 (not x9269) (not x9250) x9270)
+(or (not x9270) x9049)
+(or (not x9270) x9044)
+(or (not x9270) x8494)
+(or (not x9270) x9033)
+(or (not x9270) (not x9046))
+(or (not x9270) x9269)
+(or (not x9270) x9250)
+(or x9271 (not x9270))
+(or x9271 (not x9264))
+(or x9270 x9264 (not x9271))
+(or (not x9272) (not x9271) x9273)
+(or (not x9273) x9272)
+(or (not x9273) x9271)
+(or x9274 (not x9273))
+(or x9274 (not x9255))
+(or x9273 x9255 (not x9274))
+(or (not x242) (not x9042) (not x8494) (not x250) (not x9274) x9275)
+(or (not x9275) x242)
+(or (not x9275) x9042)
+(or (not x9275) x8494)
+(or (not x9275) x250)
+(or (not x9275) x9274)
+(or (not x242) (not x243) (not x9247) (not x8494) x9276)
+(or (not x9276) x242)
+(or (not x9276) x243)
+(or (not x9276) x9247)
+(or (not x9276) x8494)
+(or x9277 (not x9276))
+(or x9277 (not x9275))
+(or x9277 (not x9253))
+(or x9276 x9275 x9253 (not x9277))
+(or (not x9277) (not x8494) x9278)
+(or (not x9278) x9277)
+(or (not x9278) x8494)
+(or (not x9246) (not x9265) (not x8494) x9279)
+(or (not x9279) x9246)
+(or (not x9279) x9265)
+(or (not x9279) x8494)
+(or (not x9249) (not x9234) (not x9280) x9281)
+(or (not x9281) x9249)
+(or (not x9281) x9234)
+(or (not x9281) x9280)
+(or x9282 (not x9281))
+(or x9282 (not x9279))
+(or x9281 x9279 (not x9282))
+(or (not x9036) (not x8494) (not x243) (not x250) (not x9233) (not x9282) x9283)
+(or (not x9283) x9036)
+(or (not x9283) x8494)
+(or (not x9283) x243)
+(or (not x9283) x250)
+(or (not x9283) x9233)
+(or (not x9283) x9282)
+(or (not x9254) (not x9049) (not x9044) (not x8494) (not x9033) x9046 (not x9265) (not x8494) x9284)
+(or (not x9284) x9254)
+(or (not x9284) x9049)
+(or (not x9284) x9044)
+(or (not x9284) x8494)
+(or (not x9284) x9033)
+(or (not x9284) (not x9046))
+(or (not x9284) x9265)
+(or (not x9284) x8494)
+(or x9216 x9222 x9258)
+(or x9216 (not x9222) (not x9258))
+(or (not x9216) x9222 (not x9258))
+(or (not x9216) (not x9222) x9258)
+(or (not x9259) (not x9216) x9285)
+(or (not x9285) x9259)
+(or (not x9285) x9216)
+(or x9286 (not x9262))
+(or x9286 (not x9285))
+(or x9262 x9285 (not x9286))
+(or (not x9263) (not x9286) x9287)
+(or (not x9287) x9263)
+(or (not x9287) x9286)
+(or x9280 x9039 x9038)
+(or x9280 (not x9039) (not x9038))
+(or (not x9280) x9039 (not x9038))
+(or (not x9280) (not x9039) x9038)
+(or (not x9049) (not x9044) (not x8494) (not x9033) x9046 (not x9269) (not x9280) x9288)
+(or (not x9288) x9049)
+(or (not x9288) x9044)
+(or (not x9288) x8494)
+(or (not x9288) x9033)
+(or (not x9288) (not x9046))
+(or (not x9288) x9269)
+(or (not x9288) x9280)
+(or x9289 (not x9288))
+(or x9289 (not x9287))
+(or x9288 x9287 (not x9289))
+(or (not x9272) (not x9289) x9290)
+(or (not x9290) x9272)
+(or (not x9290) x9289)
+(or x9291 (not x9290))
+(or x9291 (not x9284))
+(or x9290 x9284 (not x9291))
+(or (not x242) (not x9042) (not x8494) (not x250) (not x9291) x9292)
+(or (not x9292) x242)
+(or (not x9292) x9042)
+(or (not x9292) x8494)
+(or (not x9292) x250)
+(or (not x9292) x9291)
+(or (not x242) (not x243) (not x9265) (not x8494) x9293)
+(or (not x9293) x242)
+(or (not x9293) x243)
+(or (not x9293) x9265)
+(or (not x9293) x8494)
+(or x9294 (not x9293))
+(or x9294 (not x9292))
+(or x9294 (not x9283))
+(or x9293 x9292 x9283 (not x9294))
+(or (not x9294) (not x8494) x9295)
+(or (not x9295) x9294)
+(or (not x9295) x8494)
+(or (not x9296) (not x9297) (not x9298) (not x9234) x9299)
+(or (not x9299) x9296)
+(or (not x9299) x9297)
+(or (not x9299) x9298)
+(or (not x9299) x9234)
+(or x9246 (not x9299))
+(or x9246 (not x9041))
+(or x9299 x9041 (not x9246))
+(or (not x9246) (not x9266) (not x8494) x9300)
+(or (not x9300) x9246)
+(or (not x9300) x9266)
+(or (not x9300) x8494)
+(or (not x9031) (not x8494) (not x9032) (not x9033) (not x9034) x9024 x9301)
+(or (not x9301) x9031)
+(or (not x9301) x8494)
+(or (not x9301) x9032)
+(or (not x9301) x9033)
+(or (not x9301) x9034)
+(or (not x9301) (not x9024))
+(or (not x9033) (not x9034) (not x9199) x9052)
+(or (not x9052) x9033)
+(or (not x9052) x9034)
+(or (not x9052) x9199)
+(or x9234 (not x9052))
+(or x9234 (not x9045))
+(or x9234 (not x9302))
+(or x9234 (not x9301))
+(or x9052 x9045 x9302 x9301 (not x9234))
+(or (not x9249) (not x9234) (not x9296) x9303)
+(or (not x9303) x9249)
+(or (not x9303) x9234)
+(or (not x9303) x9296)
+(or x9304 (not x9303))
+(or x9304 (not x9300))
+(or x9303 x9300 (not x9304))
+(or (not x9036) (not x8494) (not x243) (not x250) (not x9233) (not x9304) x9305)
+(or (not x9305) x9036)
+(or (not x9305) x8494)
+(or (not x9305) x243)
+(or (not x9305) x250)
+(or (not x9305) x9233)
+(or (not x9305) x9304)
+(or x9298 x9247)
+(or x9298 x8494)
+(or (not x9247) (not x8494) (not x9298))
+(or x9297 x9265)
+(or x9297 x8494)
+(or (not x9265) (not x8494) (not x9297))
+(or (not x9296) (not x9297) (not x9298) x9306)
+(or (not x9306) x9296)
+(or (not x9306) x9297)
+(or (not x9306) x9298)
+(or x9254 (not x9043))
+(or x9254 x9044)
+(or x9254 x8494)
+(or x9254 (not x9045))
+(or x9254 (not x9046))
+(or x9254 (not x9306))
+(or x9043 (not x9044) (not x8494) x9045 x9046 x9306 (not x9254))
+(or (not x9254) (not x9049) (not x9044) (not x8494) (not x9033) x9046 (not x9266) (not x8494) x9307)
+(or (not x9307) x9254)
+(or (not x9307) x9049)
+(or (not x9307) x9044)
+(or (not x9307) x8494)
+(or (not x9307) x9033)
+(or (not x9307) (not x9046))
+(or (not x9307) x9266)
+(or (not x9307) x8494)
+(or x9240 x9159)
+(or x9240 x8494)
+(or x9240 x9158)
+(or x9240 x8494)
+(or (not x9159) (not x8494) (not x9158) (not x8494) (not x9240))
+(or x9259 x9160)
+(or x9259 x8494)
+(or x9259 x9159)
+(or x9259 x8494)
+(or x9259 x9158)
+(or x9259 x8494)
+(or (not x9160) (not x8494) (not x9159) (not x8494) (not x9158) (not x8494) (not x9259))
+(or (not x9259) (not x9181) x9308)
+(or (not x9308) x9259)
+(or (not x9308) x9181)
+(or (not x9159) (not x8494) (not x9158) (not x8494) x9257)
+(or (not x9257) x9159)
+(or (not x9257) x8494)
+(or (not x9257) x9158)
+(or (not x9257) x8494)
+(or (not x9160) (not x8494) (not x9159) (not x8494) (not x9158) (not x8494) x9262)
+(or (not x9262) x9160)
+(or (not x9262) x8494)
+(or (not x9262) x9159)
+(or (not x9262) x8494)
+(or (not x9262) x9158)
+(or (not x9262) x8494)
+(or x9309 (not x9262))
+(or x9309 (not x9308))
+(or x9262 x9308 (not x9309))
+(or (not x9263) (not x9309) x9310)
+(or (not x9310) x9263)
+(or (not x9310) x9309)
+(or x9296 x9266)
+(or x9296 x8494)
+(or (not x9266) (not x8494) (not x9296))
+(or (not x9049) (not x9044) (not x8494) (not x9033) x9046 (not x9269) (not x9296) x9311)
+(or (not x9311) x9049)
+(or (not x9311) x9044)
+(or (not x9311) x8494)
+(or (not x9311) x9033)
+(or (not x9311) (not x9046))
+(or (not x9311) x9269)
+(or (not x9311) x9296)
+(or x9312 (not x9311))
+(or x9312 (not x9310))
+(or x9311 x9310 (not x9312))
+(or x9272 (not x9313))
+(or x9272 (not x9043))
+(or x9272 x9044)
+(or x9272 x8494)
+(or x9272 (not x9045))
+(or x9272 (not x9046))
+(or x9313 x9043 (not x9044) (not x8494) x9045 x9046 (not x9272))
+(or (not x9272) (not x9312) x9314)
+(or (not x9314) x9272)
+(or (not x9314) x9312)
+(or x9315 (not x9314))
+(or x9315 (not x9307))
+(or x9314 x9307 (not x9315))
+(or (not x242) (not x9042) (not x8494) (not x250) (not x9315) x9316)
+(or (not x9316) x242)
+(or (not x9316) x9042)
+(or (not x9316) x8494)
+(or (not x9316) x250)
+(or (not x9316) x9315)
+(or (not x242) (not x243) (not x9266) (not x8494) x9317)
+(or (not x9317) x242)
+(or (not x9317) x243)
+(or (not x9317) x9266)
+(or (not x9317) x8494)
+(or x9318 (not x9317))
+(or x9318 (not x9316))
+(or x9318 (not x9305))
+(or x9317 x9316 x9305 (not x9318))
+(or (not x9318) (not x8494) x9319)
+(or (not x9319) x9318)
+(or (not x9319) x8494)
+(or (not x9036) (not x8494) (not x243) (not x250) (not x9233) (not x9249) (not x9042) (not x8494) x9320)
+(or (not x9320) x9036)
+(or (not x9320) x8494)
+(or (not x9320) x243)
+(or (not x9320) x250)
+(or (not x9320) x9233)
+(or (not x9320) x9249)
+(or (not x9320) x9042)
+(or (not x9320) x8494)
+(or (not x242) (not x9042) (not x8494) (not x250) (not x9263) (not x9042) (not x8494) x9321)
+(or (not x9321) x242)
+(or (not x9321) x9042)
+(or (not x9321) x8494)
+(or (not x9321) x250)
+(or (not x9321) x9263)
+(or (not x9321) x9042)
+(or (not x9321) x8494)
+(or (not x9158) (not x8494) x9258)
+(or (not x9258) x9158)
+(or (not x9258) x8494)
+(or (not x9322) (not x9158) (not x8494) x9323)
+(or (not x9323) x9322)
+(or (not x9323) x9158)
+(or (not x9323) x8494)
+(or x9324 (not x9222))
+(or x9324 (not x9323))
+(or x9222 x9323 (not x9324))
+(or (not x9325) (not x9324) x9326)
+(or (not x9326) x9325)
+(or (not x9326) x9324)
+(or x9327 (not x9239))
+(or x9327 (not x9326))
+(or x9327 (not x8476))
+(or x9239 x9326 x8476 (not x9327))
+(or (not x242) (not x243) (not x9327) x9328)
+(or (not x9328) x242)
+(or (not x9328) x243)
+(or (not x9328) x9327)
+(or x9329 (not x9328))
+(or x9329 (not x9321))
+(or x9329 (not x9320))
+(or x9328 x9321 x9320 (not x9329))
+(or (not x9329) (not x8494) x9330)
+(or (not x9330) x9329)
+(or (not x9330) x8494)
+(or x9199 x9031)
+(or x9199 x8494)
+(or x9199 (not x9062))
+(or (not x9031) (not x8494) x9062 (not x9199))
+(or x9331 x9031)
+(or x9331 x8494)
+(or x9331 (not x9062))
+(or x9331 (not x9045))
+(or x9331 (not x9063))
+(or x9331 (not x9024))
+(or (not x9031) (not x8494) x9062 x9045 x9063 x9024 (not x9331))
+(or (not x9031) (not x8494) (not x9032) x9332)
+(or (not x9332) x9031)
+(or (not x9332) x8494)
+(or (not x9332) x9032)
+(or x9333 (not x9045))
+(or x9333 (not x9063))
+(or x9333 (not x9332))
+(or x9045 x9063 x9332 (not x9333))
+(or (not x9333) (not x9033) (not x9334) (not x9331) x9041)
+(or (not x9041) x9333)
+(or (not x9041) x9033)
+(or (not x9041) x9334)
+(or (not x9041) x9331)
+(or x9249 (not x9038))
+(or x9249 (not x9039))
+(or x9249 (not x9040))
+(or x9249 (not x9041))
+(or x9038 x9039 x9040 x9041 (not x9249))
+(or x9233 (not x8475))
+(or x9233 x9042)
+(or x9233 x8494)
+(or x8475 (not x9042) (not x8494) (not x9233))
+(or (not x9036) (not x8494) (not x243) (not x250) (not x9233) (not x9249) (not x9036) (not x8494) x9335)
+(or (not x9335) x9036)
+(or (not x9335) x8494)
+(or (not x9335) x243)
+(or (not x9335) x250)
+(or (not x9335) x9233)
+(or (not x9335) x9249)
+(or (not x9335) x9036)
+(or (not x9335) x8494)
+(or (not x9049) (not x9032) x9045)
+(or (not x9045) x9049)
+(or (not x9045) x9032)
+(or x9032 x9044)
+(or x9032 x8494)
+(or (not x9044) (not x8494) (not x9032))
+(or x9034 (not x9043))
+(or x9034 x9044)
+(or x9034 x8494)
+(or x9043 (not x9044) (not x8494) (not x9034))
+(or x9334 (not x9043))
+(or x9334 x9044)
+(or x9334 x8494)
+(or x9334 (not x9045))
+(or x9043 (not x9044) (not x8494) x9045 (not x9334))
+(or x9263 (not x9043))
+(or x9263 x9044)
+(or x9263 x8494)
+(or x9263 (not x9045))
+(or x9263 (not x9046))
+(or x9043 (not x9044) (not x8494) x9045 x9046 (not x9263))
+(or (not x9263) (not x9036) (not x8494) x9336)
+(or (not x9336) x9263)
+(or (not x9336) x9036)
+(or (not x9336) x8494)
+(or (not x9247) (not x8494) x9040)
+(or (not x9040) x9247)
+(or (not x9040) x8494)
+(or (not x9265) (not x8494) x9039)
+(or (not x9039) x9265)
+(or (not x9039) x8494)
+(or (not x9266) (not x8494) x9038)
+(or (not x9038) x9266)
+(or (not x9038) x8494)
+(or x9269 (not x9038))
+(or x9269 (not x9039))
+(or x9269 (not x9040))
+(or x9038 x9039 x9040 (not x9269))
+(or (not x9031) (not x8494) x9043)
+(or (not x9043) x9031)
+(or (not x9043) x8494)
+(or x9033 (not x9043))
+(or x9033 (not x9062))
+(or x9043 x9062 (not x9033))
+(or (not x9044) (not x8494) x9062)
+(or (not x9062) x9044)
+(or (not x9062) x8494)
+(or x9049 x9031)
+(or x9049 x8494)
+(or (not x9031) (not x8494) (not x9049))
+(or (not x9049) (not x9044) (not x8494) x9063)
+(or (not x9063) x9049)
+(or (not x9063) x9044)
+(or (not x9063) x8494)
+(or (not x9049) (not x9044) (not x8494) (not x9033) x9302)
+(or (not x9302) x9049)
+(or (not x9302) x9044)
+(or (not x9302) x8494)
+(or (not x9302) x9033)
+(or (not x9049) (not x9044) (not x8494) (not x9033) x9046 (not x9269) x9313)
+(or (not x9313) x9049)
+(or (not x9313) x9044)
+(or (not x9313) x8494)
+(or (not x9313) x9033)
+(or (not x9313) (not x9046))
+(or (not x9313) x9269)
+(or x9337 (not x9313))
+(or x9337 (not x9336))
+(or x9313 x9336 (not x9337))
+(or x250 (not x8475))
+(or x250 (not x8476))
+(or x8475 x8476 (not x250))
+(or (not x9042) (not x8494) x8476)
+(or (not x8476) x9042)
+(or (not x8476) x8494)
+(or (not x242) (not x9042) (not x8494) x9037)
+(or (not x9037) x242)
+(or (not x9037) x9042)
+(or (not x9037) x8494)
+(or (not x242) (not x9042) (not x8494) (not x250) (not x9337) x9338)
+(or (not x9338) x242)
+(or (not x9338) x9042)
+(or (not x9338) x8494)
+(or (not x9338) x250)
+(or (not x9338) x9337)
+(or (not x9036) (not x8494) x8475)
+(or (not x8475) x9036)
+(or (not x8475) x8494)
+(or x9181 x9158)
+(or x9181 x8494)
+(or (not x9158) (not x8494) (not x9181))
+(or (not x9159) (not x8494) x9222)
+(or (not x9222) x9159)
+(or (not x9222) x8494)
+(or x9339 (not x9222))
+(or x9339 x9158)
+(or x9339 x8494)
+(or x9222 (not x9158) (not x8494) (not x9339))
+(or x9322 x9159)
+(or x9322 x8494)
+(or (not x9159) (not x8494) (not x9322))
+(or (not x9322) (not x9339) x9340)
+(or (not x9340) x9322)
+(or (not x9340) x9339)
+(or (not x9160) (not x8494) x9239)
+(or (not x9239) x9160)
+(or (not x9239) x8494)
+(or x9341 (not x9239))
+(or x9341 (not x9340))
+(or x9239 x9340 (not x9341))
+(or x9325 x9160)
+(or x9325 x8494)
+(or (not x9160) (not x8494) (not x9325))
+(or x243 x9042)
+(or x243 x8494)
+(or (not x9042) (not x8494) (not x243))
+(or x242 x9036)
+(or x242 x8494)
+(or (not x9036) (not x8494) (not x242))
+(or (not x242) (not x243) x8450)
+(or (not x8450) x242)
+(or (not x8450) x243)
+(or (not x242) (not x243) (not x9325) (not x9341) (not x9036) (not x8494) x9342)
+(or (not x9342) x242)
+(or (not x9342) x243)
+(or (not x9342) x9325)
+(or (not x9342) x9341)
+(or (not x9342) x9036)
+(or (not x9342) x8494)
+(or x9343 (not x9342))
+(or x9343 (not x9338))
+(or x9343 (not x9335))
+(or x9342 x9338 x9335 (not x9343))
+(or (not x9343) (not x8494) x9344)
+(or (not x9344) x9343)
+(or (not x9344) x8494)
+(or x9345 (not x8495))
+(or x9345 (not x8494))
+(or x8495 x8494 (not x9345))
+(or x8495 x8494 x9346)
+(or (not x9346) (not x8495))
+(or (not x9346) (not x8494))
+(or x9347 (not x9346))
+(or x9347 (not x8495))
+(or x9347 x8494)
+(or x9346 x8495 (not x8494) (not x9347))
+(or (not x9348) (not x240))
+(or (not x9348) x239)
+(or (not x9348) (not x238))
+(or (not x9348) x237)
+(or (not x9348) x236)
+(or (not x9349) (not x240))
+(or (not x9349) x239)
+(or (not x9349) (not x238))
+(or (not x9349) x237)
+(or (not x9349) (not x236))
+(or (not x9350) (not x240))
+(or (not x9350) x239)
+(or (not x9350) (not x238))
+(or (not x9350) (not x237))
+(or (not x9350) x236)
+(or (not x9351) (not x240))
+(or (not x9351) x239)
+(or (not x9351) (not x238))
+(or (not x9351) (not x237))
+(or (not x9351) (not x236))
+(or (not x9352) (not x240))
+(or (not x9352) (not x239))
+(or (not x9352) x238)
+(or (not x9352) x237)
+(or (not x9352) x236)
+(or (not x9353) (not x240))
+(or (not x9353) (not x239))
+(or (not x9353) x238)
+(or (not x9353) x237)
+(or (not x9353) (not x236))
+(or (not x9354) (not x240))
+(or (not x9354) (not x239))
+(or (not x9354) x238)
+(or (not x9354) (not x237))
+(or (not x9354) x236)
+(or (not x9355) (not x240))
+(or (not x9355) (not x239))
+(or (not x9355) x238)
+(or (not x9355) (not x237))
+(or (not x9355) (not x236))
+(or (not x9356) (not x240))
+(or (not x9356) (not x239))
+(or (not x9356) (not x238))
+(or (not x9356) x237)
+(or (not x9356) x236)
+(or (not x9357) (not x240))
+(or (not x9357) (not x239))
+(or (not x9357) (not x238))
+(or (not x9357) x237)
+(or (not x9357) (not x236))
+(or x240 x239 x238 x237 (not x236) x8448)
+(or (not x8448) (not x240))
+(or (not x8448) (not x239))
+(or (not x8448) (not x238))
+(or (not x8448) (not x237))
+(or (not x8448) x236)
+(or (not x9358) (not x240))
+(or (not x9358) (not x239))
+(or (not x9358) (not x238))
+(or (not x9358) (not x237))
+(or (not x9358) (not x236))
+(or x9359 (not x9358))
+(or x9359 (not x8448))
+(or x9359 (not x9357))
+(or x9359 (not x9356))
+(or x9359 (not x9355))
+(or x9359 (not x9354))
+(or x9359 (not x9353))
+(or x9359 (not x9352))
+(or x9359 (not x9351))
+(or x9359 (not x9350))
+(or x9359 (not x9349))
+(or x9358 x8448 x9357 x9356 x9355 x9354 x9353 x9352 x9351 x9350 x9349 (not x9359))
+(or x9360 (not x9361))
+(or x9360 (not x9362))
+(or x9360 (not x9363))
+(or x9361 x9362 x9363 (not x9360))
+(or x9361 (not x9364) x9365)
+(or (not x9365) (not x9361))
+(or (not x9365) x9364)
+(or x9361 (not x9364) (not x9366) (not x9360) x9367)
+(or (not x9367) (not x9361))
+(or (not x9367) x9364)
+(or (not x9367) x9366)
+(or (not x9367) x9360)
+(or x9361 (not x9366) x9368)
+(or (not x9368) (not x9361))
+(or (not x9368) x9366)
+(or x9366 (not x9361))
+(or x9366 (not x9362))
+(or x9366 x9363)
+(or x9361 x9362 (not x9363) (not x9366))
+(or x9364 (not x9361))
+(or x9364 x9362)
+(or x9361 (not x9362) (not x9364))
+(or (not x9364) (not x9366) x9369)
+(or (not x9369) x9364)
+(or (not x9369) x9366)
+(or (not x8494))
+(or (not x8495))
+(or (not x9036))
+(or (not x9042))
+(or (not x9266))
+(or (not x9265))
+(or (not x9247))
+(or (not x9160))
+(or (not x9159))
+(or (not x9031))
+(or (not x9044))
+(or (not x9158))
+(or (not x9189))
+(or (not x9053))
+(or (not x8902))
+(or (not x9064))
+(or (not x8892))
+(or (not x8665))
+(or (not x8666))
+(or (not x8903))
+(or (not x8893))
+(or (not x8674))
+(or (not x8646))
+(or (not x8639))
+(or (not x8609))
+(or (not x8821))
+(or (not x8827))
+(or (not x8698))
+(or (not x9074))
+(or (not x8852))
+(or (not x8805))
+(or (not x8799))
+(or (not x8846))
+(or (not x8844))
+(or (not x8793))
+(or (not x8788))
+(or (not x8783))
+(or (not x8778))
+(or (not x8773))
+(or (not x8768))
+(or (not x8763))
+(or (not x8758))
+(or (not x8753))
+(or (not x8748))
+(or (not x8742))
+(or (not x8736))
+(or (not x8723))
+(or (not x8617))
+(or (not x8682))
+(or (not x8675))
+(or (not x8653))
+(or (not x8647))
+(or (not x8640))
+(or (not x8616))
+(or (not x8610))
+(or (not x8602))
+(or (not x8595))
+(or (not x8588))
+(or (not x8582))
+(or (not x8576))
+(or (not x8570))
+(or (not x8564))
+(or (not x8558))
+(or (not x8552))
+(or (not x8546))
+(or (not x8540))
+(or (not x8534))
+(or (not x8527))
+(or (not x8519))
+(or (not x8512))
+(or (not x8506))
+(or (not x8500))
+(or (not x236) x9369)
+(or x236 (not x9369))
+(or (not x237) x9368)
+(or x237 (not x9368))
+(or (not x238) x9367)
+(or x238 (not x9367))
+(or (not x239) x9365)
+(or x239 (not x9365))
+(or (not x240) x9367)
+(or x240 (not x9367))
+(or x9359 x9348)
+(or (not x7568) x9347)
+(or x7568 (not x9347))
+(or (not x7569) x9345)
+(or x7569 (not x9345))
+(or (not x8110) x9344)
+(or x8110 (not x9344))
+(or (not x8116) x9330)
+(or x8116 (not x9330))
+(or (not x8340) x9319)
+(or x8340 (not x9319))
+(or (not x8339) x9295)
+(or x8339 (not x9295))
+(or (not x8321) x9278)
+(or x8321 (not x9278))
+(or (not x8234) x9245)
+(or x8234 (not x9245))
+(or (not x8233) x9227)
+(or x8233 (not x9227))
+(or (not x8105) x9214)
+(or x8105 (not x9214))
+(or (not x8118) x9202)
+(or x8118 (not x9202))
+(or (not x8232) x9192)
+(or x8232 (not x9192))
+(or (not x8263) x9176)
+(or x8263 (not x9176))
+(or (not x8127) x9100)
+(or x8127 (not x9100))
+(or (not x7976) x9060)
+(or x7976 (not x9060))
+(or (not x8138) x9055)
+(or x8138 (not x9055))
+(or (not x7966) x9023)
+(or x7966 (not x9023))
+(or (not x7739) x9018)
+(or x7739 (not x9018))
+(or (not x7740) x8956)
+(or x7740 (not x8956))
+(or (not x7977) x8911)
+(or x7977 (not x8911))
+(or (not x7967) x8901)
+(or x7967 (not x8901))
+(or (not x7748) x8891)
+(or x7748 (not x8891))
+(or (not x7720) x8885)
+(or x7720 (not x8885))
+(or (not x7713) x8878)
+(or x7713 (not x8878))
+(or (not x7683) x8872)
+(or x7683 (not x8872))
+(or (not x7895) x8865)
+(or x7895 (not x8865))
+(or (not x7901) x8839)
+(or x7901 (not x8839))
+(or (not x7772) x8820)
+(or x7772 (not x8820))
+(or (not x8148) x8811)
+(or x8148 (not x8811))
+(or (not x7926) x9370)
+(or x7926 (not x9370))
+(or (not x7879) x8810)
+(or x7879 (not x8810))
+(or (not x7873) x8803)
+(or x7873 (not x8803))
+(or (not x7920) x9371)
+(or x7920 (not x9371))
+(or (not x7918) x9372)
+(or x7918 (not x9372))
+(or (not x7867) x8797)
+(or x7867 (not x8797))
+(or (not x7862) x8792)
+(or x7862 (not x8792))
+(or (not x7857) x8787)
+(or x7857 (not x8787))
+(or (not x7852) x8782)
+(or x7852 (not x8782))
+(or (not x7847) x8777)
+(or x7847 (not x8777))
+(or (not x7842) x8772)
+(or x7842 (not x8772))
+(or (not x7837) x8767)
+(or x7837 (not x8767))
+(or (not x7832) x8762)
+(or x7832 (not x8762))
+(or (not x7827) x8757)
+(or x7827 (not x8757))
+(or (not x7822) x8752)
+(or x7822 (not x8752))
+(or (not x7816) x8747)
+(or x7816 (not x8747))
+(or (not x7810) x8740)
+(or x7810 (not x8740))
+(or (not x7797) x8734)
+(or x7797 (not x8734))
+(or (not x7691) x8721)
+(or x7691 (not x8721))
+(or (not x7756) x8693)
+(or x7756 (not x8693))
+(or (not x7749) x8679)
+(or x7749 (not x8679))
+(or (not x7727) x8672)
+(or x7727 (not x8672))
+(or (not x7721) x8651)
+(or x7721 (not x8651))
+(or (not x7714) x8644)
+(or x7714 (not x8644))
+(or (not x7690) x8637)
+(or x7690 (not x8637))
+(or (not x7684) x8614)
+(or x7684 (not x8614))
+(or (not x7676) x8607)
+(or x7676 (not x8607))
+(or (not x7669) x8600)
+(or x7669 (not x8600))
+(or (not x7662) x8593)
+(or x7662 (not x8593))
+(or (not x7656) x8587)
+(or x7656 (not x8587))
+(or (not x7650) x8581)
+(or x7650 (not x8581))
+(or (not x7644) x8575)
+(or x7644 (not x8575))
+(or (not x7638) x8569)
+(or x7638 (not x8569))
+(or (not x7632) x8563)
+(or x7632 (not x8563))
+(or (not x7626) x8557)
+(or x7626 (not x8557))
+(or (not x7620) x8551)
+(or x7620 (not x8551))
+(or (not x7614) x8545)
+(or x7614 (not x8545))
+(or (not x7608) x8539)
+(or x7608 (not x8539))
+(or (not x7601) x8533)
+(or x7601 (not x8533))
+(or (not x7593) x8525)
+(or x7593 (not x8525))
+(or (not x7586) x8517)
+(or x7586 (not x8517))
+(or (not x7580) x8511)
+(or x7580 (not x8511))
+(or (not x7574) x8505)
+(or x7574 (not x8505))
+(or (not x217) x8498)
+(or x217 (not x8498))
+(or (not x218) x8488)
+(or x218 (not x8488))
+(or (not x219) x8469)
+(or x219 (not x8469))
+(or (not x220) x8461)
+(or x220 (not x8461))
+(or (not x221) x8442)
+(or x221 (not x8442))
+(or x9359 x9348)
+(or x8433 x8422)
+(or (not x6642) x8421)
+(or x6642 (not x8421))
+(or (not x6643) x8419)
+(or x6643 (not x8419))
+(or (not x7184) x8418)
+(or x7184 (not x8418))
+(or (not x7190) x8404)
+(or x7190 (not x8404))
+(or (not x7414) x8393)
+(or x7414 (not x8393))
+(or (not x7413) x8369)
+(or x7413 (not x8369))
+(or (not x7395) x8352)
+(or x7395 (not x8352))
+(or (not x7308) x8319)
+(or x7308 (not x8319))
+(or (not x7307) x8301)
+(or x7307 (not x8301))
+(or (not x7179) x8288)
+(or x7179 (not x8288))
+(or (not x7192) x8276)
+(or x7192 (not x8276))
+(or (not x7306) x8266)
+(or x7306 (not x8266))
+(or (not x7337) x8250)
+(or x7337 (not x8250))
+(or (not x7201) x8174)
+(or x7201 (not x8174))
+(or (not x7050) x8134)
+(or x7050 (not x8134))
+(or (not x7212) x8129)
+(or x7212 (not x8129))
+(or (not x7040) x8097)
+(or x7040 (not x8097))
+(or (not x6813) x8092)
+(or x6813 (not x8092))
+(or (not x6814) x8030)
+(or x6814 (not x8030))
+(or (not x7051) x7985)
+(or x7051 (not x7985))
+(or (not x7041) x7975)
+(or x7041 (not x7975))
+(or (not x6822) x7965)
+(or x6822 (not x7965))
+(or (not x6794) x7959)
+(or x6794 (not x7959))
+(or (not x6787) x7952)
+(or x6787 (not x7952))
+(or (not x6757) x7946)
+(or x6757 (not x7946))
+(or (not x6969) x7939)
+(or x6969 (not x7939))
+(or (not x6975) x7913)
+(or x6975 (not x7913))
+(or (not x6846) x7894)
+(or x6846 (not x7894))
+(or (not x7222) x7885)
+(or x7222 (not x7885))
+(or (not x7000) x9373)
+(or x7000 (not x9373))
+(or (not x6953) x7884)
+(or x6953 (not x7884))
+(or (not x6947) x7877)
+(or x6947 (not x7877))
+(or (not x6994) x9374)
+(or x6994 (not x9374))
+(or (not x6992) x9375)
+(or x6992 (not x9375))
+(or (not x6941) x7871)
+(or x6941 (not x7871))
+(or (not x6936) x7866)
+(or x6936 (not x7866))
+(or (not x6931) x7861)
+(or x6931 (not x7861))
+(or (not x6926) x7856)
+(or x6926 (not x7856))
+(or (not x6921) x7851)
+(or x6921 (not x7851))
+(or (not x6916) x7846)
+(or x6916 (not x7846))
+(or (not x6911) x7841)
+(or x6911 (not x7841))
+(or (not x6906) x7836)
+(or x6906 (not x7836))
+(or (not x6901) x7831)
+(or x6901 (not x7831))
+(or (not x6896) x7826)
+(or x6896 (not x7826))
+(or (not x6890) x7821)
+(or x6890 (not x7821))
+(or (not x6884) x7814)
+(or x6884 (not x7814))
+(or (not x6871) x7808)
+(or x6871 (not x7808))
+(or (not x6765) x7795)
+(or x6765 (not x7795))
+(or (not x6830) x7767)
+(or x6830 (not x7767))
+(or (not x6823) x7753)
+(or x6823 (not x7753))
+(or (not x6801) x7746)
+(or x6801 (not x7746))
+(or (not x6795) x7725)
+(or x6795 (not x7725))
+(or (not x6788) x7718)
+(or x6788 (not x7718))
+(or (not x6764) x7711)
+(or x6764 (not x7711))
+(or (not x6758) x7688)
+(or x6758 (not x7688))
+(or (not x6750) x7681)
+(or x6750 (not x7681))
+(or (not x6743) x7674)
+(or x6743 (not x7674))
+(or (not x6736) x7667)
+(or x6736 (not x7667))
+(or (not x6730) x7661)
+(or x6730 (not x7661))
+(or (not x6724) x7655)
+(or x6724 (not x7655))
+(or (not x6718) x7649)
+(or x6718 (not x7649))
+(or (not x6712) x7643)
+(or x6712 (not x7643))
+(or (not x6706) x7637)
+(or x6706 (not x7637))
+(or (not x6700) x7631)
+(or x6700 (not x7631))
+(or (not x6694) x7625)
+(or x6694 (not x7625))
+(or (not x6688) x7619)
+(or x6688 (not x7619))
+(or (not x6682) x7613)
+(or x6682 (not x7613))
+(or (not x6675) x7607)
+(or x6675 (not x7607))
+(or (not x6667) x7599)
+(or x6667 (not x7599))
+(or (not x6660) x7591)
+(or x6660 (not x7591))
+(or (not x6654) x7585)
+(or x6654 (not x7585))
+(or (not x6648) x7579)
+(or x6648 (not x7579))
+(or (not x198) x7572)
+(or x198 (not x7572))
+(or (not x199) x7562)
+(or x199 (not x7562))
+(or (not x200) x7543)
+(or x200 (not x7543))
+(or (not x201) x7535)
+(or x201 (not x7535))
+(or (not x202) x7516)
+(or x202 (not x7516))
+(or x8433 x8422)
+(or x7507 x7496)
+(or (not x5716) x7495)
+(or x5716 (not x7495))
+(or (not x5717) x7493)
+(or x5717 (not x7493))
+(or (not x6258) x7492)
+(or x6258 (not x7492))
+(or (not x6264) x7478)
+(or x6264 (not x7478))
+(or (not x6488) x7467)
+(or x6488 (not x7467))
+(or (not x6487) x7443)
+(or x6487 (not x7443))
+(or (not x6469) x7426)
+(or x6469 (not x7426))
+(or (not x6382) x7393)
+(or x6382 (not x7393))
+(or (not x6381) x7375)
+(or x6381 (not x7375))
+(or (not x6253) x7362)
+(or x6253 (not x7362))
+(or (not x6266) x7350)
+(or x6266 (not x7350))
+(or (not x6380) x7340)
+(or x6380 (not x7340))
+(or (not x6411) x7324)
+(or x6411 (not x7324))
+(or (not x6275) x7248)
+(or x6275 (not x7248))
+(or (not x6124) x7208)
+(or x6124 (not x7208))
+(or (not x6286) x7203)
+(or x6286 (not x7203))
+(or (not x6114) x7171)
+(or x6114 (not x7171))
+(or (not x5887) x7166)
+(or x5887 (not x7166))
+(or (not x5888) x7104)
+(or x5888 (not x7104))
+(or (not x6125) x7059)
+(or x6125 (not x7059))
+(or (not x6115) x7049)
+(or x6115 (not x7049))
+(or (not x5896) x7039)
+(or x5896 (not x7039))
+(or (not x5868) x7033)
+(or x5868 (not x7033))
+(or (not x5861) x7026)
+(or x5861 (not x7026))
+(or (not x5831) x7020)
+(or x5831 (not x7020))
+(or (not x6043) x7013)
+(or x6043 (not x7013))
+(or (not x6049) x6987)
+(or x6049 (not x6987))
+(or (not x5920) x6968)
+(or x5920 (not x6968))
+(or (not x6296) x6959)
+(or x6296 (not x6959))
+(or (not x6074) x9376)
+(or x6074 (not x9376))
+(or (not x6027) x6958)
+(or x6027 (not x6958))
+(or (not x6021) x6951)
+(or x6021 (not x6951))
+(or (not x6068) x9377)
+(or x6068 (not x9377))
+(or (not x6066) x9378)
+(or x6066 (not x9378))
+(or (not x6015) x6945)
+(or x6015 (not x6945))
+(or (not x6010) x6940)
+(or x6010 (not x6940))
+(or (not x6005) x6935)
+(or x6005 (not x6935))
+(or (not x6000) x6930)
+(or x6000 (not x6930))
+(or (not x5995) x6925)
+(or x5995 (not x6925))
+(or (not x5990) x6920)
+(or x5990 (not x6920))
+(or (not x5985) x6915)
+(or x5985 (not x6915))
+(or (not x5980) x6910)
+(or x5980 (not x6910))
+(or (not x5975) x6905)
+(or x5975 (not x6905))
+(or (not x5970) x6900)
+(or x5970 (not x6900))
+(or (not x5964) x6895)
+(or x5964 (not x6895))
+(or (not x5958) x6888)
+(or x5958 (not x6888))
+(or (not x5945) x6882)
+(or x5945 (not x6882))
+(or (not x5839) x6869)
+(or x5839 (not x6869))
+(or (not x5904) x6841)
+(or x5904 (not x6841))
+(or (not x5897) x6827)
+(or x5897 (not x6827))
+(or (not x5875) x6820)
+(or x5875 (not x6820))
+(or (not x5869) x6799)
+(or x5869 (not x6799))
+(or (not x5862) x6792)
+(or x5862 (not x6792))
+(or (not x5838) x6785)
+(or x5838 (not x6785))
+(or (not x5832) x6762)
+(or x5832 (not x6762))
+(or (not x5824) x6755)
+(or x5824 (not x6755))
+(or (not x5817) x6748)
+(or x5817 (not x6748))
+(or (not x5810) x6741)
+(or x5810 (not x6741))
+(or (not x5804) x6735)
+(or x5804 (not x6735))
+(or (not x5798) x6729)
+(or x5798 (not x6729))
+(or (not x5792) x6723)
+(or x5792 (not x6723))
+(or (not x5786) x6717)
+(or x5786 (not x6717))
+(or (not x5780) x6711)
+(or x5780 (not x6711))
+(or (not x5774) x6705)
+(or x5774 (not x6705))
+(or (not x5768) x6699)
+(or x5768 (not x6699))
+(or (not x5762) x6693)
+(or x5762 (not x6693))
+(or (not x5756) x6687)
+(or x5756 (not x6687))
+(or (not x5749) x6681)
+(or x5749 (not x6681))
+(or (not x5741) x6673)
+(or x5741 (not x6673))
+(or (not x5734) x6665)
+(or x5734 (not x6665))
+(or (not x5728) x6659)
+(or x5728 (not x6659))
+(or (not x5722) x6653)
+(or x5722 (not x6653))
+(or (not x179) x6646)
+(or x179 (not x6646))
+(or (not x180) x6636)
+(or x180 (not x6636))
+(or (not x181) x6617)
+(or x181 (not x6617))
+(or (not x182) x6609)
+(or x182 (not x6609))
+(or (not x183) x6590)
+(or x183 (not x6590))
+(or x7507 x7496)
+(or x6581 x6570)
+(or (not x4790) x6569)
+(or x4790 (not x6569))
+(or (not x4791) x6567)
+(or x4791 (not x6567))
+(or (not x5332) x6566)
+(or x5332 (not x6566))
+(or (not x5338) x6552)
+(or x5338 (not x6552))
+(or (not x5562) x6541)
+(or x5562 (not x6541))
+(or (not x5561) x6517)
+(or x5561 (not x6517))
+(or (not x5543) x6500)
+(or x5543 (not x6500))
+(or (not x5456) x6467)
+(or x5456 (not x6467))
+(or (not x5455) x6449)
+(or x5455 (not x6449))
+(or (not x5327) x6436)
+(or x5327 (not x6436))
+(or (not x5340) x6424)
+(or x5340 (not x6424))
+(or (not x5454) x6414)
+(or x5454 (not x6414))
+(or (not x5485) x6398)
+(or x5485 (not x6398))
+(or (not x5349) x6322)
+(or x5349 (not x6322))
+(or (not x5198) x6282)
+(or x5198 (not x6282))
+(or (not x5360) x6277)
+(or x5360 (not x6277))
+(or (not x5188) x6245)
+(or x5188 (not x6245))
+(or (not x4961) x6240)
+(or x4961 (not x6240))
+(or (not x4962) x6178)
+(or x4962 (not x6178))
+(or (not x5199) x6133)
+(or x5199 (not x6133))
+(or (not x5189) x6123)
+(or x5189 (not x6123))
+(or (not x4970) x6113)
+(or x4970 (not x6113))
+(or (not x4942) x6107)
+(or x4942 (not x6107))
+(or (not x4935) x6100)
+(or x4935 (not x6100))
+(or (not x4905) x6094)
+(or x4905 (not x6094))
+(or (not x5117) x6087)
+(or x5117 (not x6087))
+(or (not x5123) x6061)
+(or x5123 (not x6061))
+(or (not x4994) x6042)
+(or x4994 (not x6042))
+(or (not x5370) x6033)
+(or x5370 (not x6033))
+(or (not x5148) x9379)
+(or x5148 (not x9379))
+(or (not x5101) x6032)
+(or x5101 (not x6032))
+(or (not x5095) x6025)
+(or x5095 (not x6025))
+(or (not x5142) x9380)
+(or x5142 (not x9380))
+(or (not x5140) x9381)
+(or x5140 (not x9381))
+(or (not x5089) x6019)
+(or x5089 (not x6019))
+(or (not x5084) x6014)
+(or x5084 (not x6014))
+(or (not x5079) x6009)
+(or x5079 (not x6009))
+(or (not x5074) x6004)
+(or x5074 (not x6004))
+(or (not x5069) x5999)
+(or x5069 (not x5999))
+(or (not x5064) x5994)
+(or x5064 (not x5994))
+(or (not x5059) x5989)
+(or x5059 (not x5989))
+(or (not x5054) x5984)
+(or x5054 (not x5984))
+(or (not x5049) x5979)
+(or x5049 (not x5979))
+(or (not x5044) x5974)
+(or x5044 (not x5974))
+(or (not x5038) x5969)
+(or x5038 (not x5969))
+(or (not x5032) x5962)
+(or x5032 (not x5962))
+(or (not x5019) x5956)
+(or x5019 (not x5956))
+(or (not x4913) x5943)
+(or x4913 (not x5943))
+(or (not x4978) x5915)
+(or x4978 (not x5915))
+(or (not x4971) x5901)
+(or x4971 (not x5901))
+(or (not x4949) x5894)
+(or x4949 (not x5894))
+(or (not x4943) x5873)
+(or x4943 (not x5873))
+(or (not x4936) x5866)
+(or x4936 (not x5866))
+(or (not x4912) x5859)
+(or x4912 (not x5859))
+(or (not x4906) x5836)
+(or x4906 (not x5836))
+(or (not x4898) x5829)
+(or x4898 (not x5829))
+(or (not x4891) x5822)
+(or x4891 (not x5822))
+(or (not x4884) x5815)
+(or x4884 (not x5815))
+(or (not x4878) x5809)
+(or x4878 (not x5809))
+(or (not x4872) x5803)
+(or x4872 (not x5803))
+(or (not x4866) x5797)
+(or x4866 (not x5797))
+(or (not x4860) x5791)
+(or x4860 (not x5791))
+(or (not x4854) x5785)
+(or x4854 (not x5785))
+(or (not x4848) x5779)
+(or x4848 (not x5779))
+(or (not x4842) x5773)
+(or x4842 (not x5773))
+(or (not x4836) x5767)
+(or x4836 (not x5767))
+(or (not x4830) x5761)
+(or x4830 (not x5761))
+(or (not x4823) x5755)
+(or x4823 (not x5755))
+(or (not x4815) x5747)
+(or x4815 (not x5747))
+(or (not x4808) x5739)
+(or x4808 (not x5739))
+(or (not x4802) x5733)
+(or x4802 (not x5733))
+(or (not x4796) x5727)
+(or x4796 (not x5727))
+(or (not x160) x5720)
+(or x160 (not x5720))
+(or (not x161) x5710)
+(or x161 (not x5710))
+(or (not x162) x5691)
+(or x162 (not x5691))
+(or (not x163) x5683)
+(or x163 (not x5683))
+(or (not x164) x5664)
+(or x164 (not x5664))
+(or x6581 x6570)
+(or x5655 x5644)
+(or (not x3864) x5643)
+(or x3864 (not x5643))
+(or (not x3865) x5641)
+(or x3865 (not x5641))
+(or (not x4406) x5640)
+(or x4406 (not x5640))
+(or (not x4412) x5626)
+(or x4412 (not x5626))
+(or (not x4636) x5615)
+(or x4636 (not x5615))
+(or (not x4635) x5591)
+(or x4635 (not x5591))
+(or (not x4617) x5574)
+(or x4617 (not x5574))
+(or (not x4530) x5541)
+(or x4530 (not x5541))
+(or (not x4529) x5523)
+(or x4529 (not x5523))
+(or (not x4401) x5510)
+(or x4401 (not x5510))
+(or (not x4414) x5498)
+(or x4414 (not x5498))
+(or (not x4528) x5488)
+(or x4528 (not x5488))
+(or (not x4559) x5472)
+(or x4559 (not x5472))
+(or (not x4423) x5396)
+(or x4423 (not x5396))
+(or (not x4272) x5356)
+(or x4272 (not x5356))
+(or (not x4434) x5351)
+(or x4434 (not x5351))
+(or (not x4262) x5319)
+(or x4262 (not x5319))
+(or (not x4035) x5314)
+(or x4035 (not x5314))
+(or (not x4036) x5252)
+(or x4036 (not x5252))
+(or (not x4273) x5207)
+(or x4273 (not x5207))
+(or (not x4263) x5197)
+(or x4263 (not x5197))
+(or (not x4044) x5187)
+(or x4044 (not x5187))
+(or (not x4016) x5181)
+(or x4016 (not x5181))
+(or (not x4009) x5174)
+(or x4009 (not x5174))
+(or (not x3979) x5168)
+(or x3979 (not x5168))
+(or (not x4191) x5161)
+(or x4191 (not x5161))
+(or (not x4197) x5135)
+(or x4197 (not x5135))
+(or (not x4068) x5116)
+(or x4068 (not x5116))
+(or (not x4444) x5107)
+(or x4444 (not x5107))
+(or (not x4222) x9382)
+(or x4222 (not x9382))
+(or (not x4175) x5106)
+(or x4175 (not x5106))
+(or (not x4169) x5099)
+(or x4169 (not x5099))
+(or (not x4216) x9383)
+(or x4216 (not x9383))
+(or (not x4214) x9384)
+(or x4214 (not x9384))
+(or (not x4163) x5093)
+(or x4163 (not x5093))
+(or (not x4158) x5088)
+(or x4158 (not x5088))
+(or (not x4153) x5083)
+(or x4153 (not x5083))
+(or (not x4148) x5078)
+(or x4148 (not x5078))
+(or (not x4143) x5073)
+(or x4143 (not x5073))
+(or (not x4138) x5068)
+(or x4138 (not x5068))
+(or (not x4133) x5063)
+(or x4133 (not x5063))
+(or (not x4128) x5058)
+(or x4128 (not x5058))
+(or (not x4123) x5053)
+(or x4123 (not x5053))
+(or (not x4118) x5048)
+(or x4118 (not x5048))
+(or (not x4112) x5043)
+(or x4112 (not x5043))
+(or (not x4106) x5036)
+(or x4106 (not x5036))
+(or (not x4093) x5030)
+(or x4093 (not x5030))
+(or (not x3987) x5017)
+(or x3987 (not x5017))
+(or (not x4052) x4989)
+(or x4052 (not x4989))
+(or (not x4045) x4975)
+(or x4045 (not x4975))
+(or (not x4023) x4968)
+(or x4023 (not x4968))
+(or (not x4017) x4947)
+(or x4017 (not x4947))
+(or (not x4010) x4940)
+(or x4010 (not x4940))
+(or (not x3986) x4933)
+(or x3986 (not x4933))
+(or (not x3980) x4910)
+(or x3980 (not x4910))
+(or (not x3972) x4903)
+(or x3972 (not x4903))
+(or (not x3965) x4896)
+(or x3965 (not x4896))
+(or (not x3958) x4889)
+(or x3958 (not x4889))
+(or (not x3952) x4883)
+(or x3952 (not x4883))
+(or (not x3946) x4877)
+(or x3946 (not x4877))
+(or (not x3940) x4871)
+(or x3940 (not x4871))
+(or (not x3934) x4865)
+(or x3934 (not x4865))
+(or (not x3928) x4859)
+(or x3928 (not x4859))
+(or (not x3922) x4853)
+(or x3922 (not x4853))
+(or (not x3916) x4847)
+(or x3916 (not x4847))
+(or (not x3910) x4841)
+(or x3910 (not x4841))
+(or (not x3904) x4835)
+(or x3904 (not x4835))
+(or (not x3897) x4829)
+(or x3897 (not x4829))
+(or (not x3889) x4821)
+(or x3889 (not x4821))
+(or (not x3882) x4813)
+(or x3882 (not x4813))
+(or (not x3876) x4807)
+(or x3876 (not x4807))
+(or (not x3870) x4801)
+(or x3870 (not x4801))
+(or (not x141) x4794)
+(or x141 (not x4794))
+(or (not x142) x4784)
+(or x142 (not x4784))
+(or (not x143) x4765)
+(or x143 (not x4765))
+(or (not x144) x4757)
+(or x144 (not x4757))
+(or (not x145) x4738)
+(or x145 (not x4738))
+(or x5655 x5644)
+(or x4729 x4718)
+(or (not x2938) x4717)
+(or x2938 (not x4717))
+(or (not x2939) x4715)
+(or x2939 (not x4715))
+(or (not x3480) x4714)
+(or x3480 (not x4714))
+(or (not x3486) x4700)
+(or x3486 (not x4700))
+(or (not x3710) x4689)
+(or x3710 (not x4689))
+(or (not x3709) x4665)
+(or x3709 (not x4665))
+(or (not x3691) x4648)
+(or x3691 (not x4648))
+(or (not x3604) x4615)
+(or x3604 (not x4615))
+(or (not x3603) x4597)
+(or x3603 (not x4597))
+(or (not x3475) x4584)
+(or x3475 (not x4584))
+(or (not x3488) x4572)
+(or x3488 (not x4572))
+(or (not x3602) x4562)
+(or x3602 (not x4562))
+(or (not x3633) x4546)
+(or x3633 (not x4546))
+(or (not x3497) x4470)
+(or x3497 (not x4470))
+(or (not x3346) x4430)
+(or x3346 (not x4430))
+(or (not x3508) x4425)
+(or x3508 (not x4425))
+(or (not x3336) x4393)
+(or x3336 (not x4393))
+(or (not x3109) x4388)
+(or x3109 (not x4388))
+(or (not x3110) x4326)
+(or x3110 (not x4326))
+(or (not x3347) x4281)
+(or x3347 (not x4281))
+(or (not x3337) x4271)
+(or x3337 (not x4271))
+(or (not x3118) x4261)
+(or x3118 (not x4261))
+(or (not x3090) x4255)
+(or x3090 (not x4255))
+(or (not x3083) x4248)
+(or x3083 (not x4248))
+(or (not x3053) x4242)
+(or x3053 (not x4242))
+(or (not x3265) x4235)
+(or x3265 (not x4235))
+(or (not x3271) x4209)
+(or x3271 (not x4209))
+(or (not x3142) x4190)
+(or x3142 (not x4190))
+(or (not x3518) x4181)
+(or x3518 (not x4181))
+(or (not x3296) x9385)
+(or x3296 (not x9385))
+(or (not x3249) x4180)
+(or x3249 (not x4180))
+(or (not x3243) x4173)
+(or x3243 (not x4173))
+(or (not x3290) x9386)
+(or x3290 (not x9386))
+(or (not x3288) x9387)
+(or x3288 (not x9387))
+(or (not x3237) x4167)
+(or x3237 (not x4167))
+(or (not x3232) x4162)
+(or x3232 (not x4162))
+(or (not x3227) x4157)
+(or x3227 (not x4157))
+(or (not x3222) x4152)
+(or x3222 (not x4152))
+(or (not x3217) x4147)
+(or x3217 (not x4147))
+(or (not x3212) x4142)
+(or x3212 (not x4142))
+(or (not x3207) x4137)
+(or x3207 (not x4137))
+(or (not x3202) x4132)
+(or x3202 (not x4132))
+(or (not x3197) x4127)
+(or x3197 (not x4127))
+(or (not x3192) x4122)
+(or x3192 (not x4122))
+(or (not x3186) x4117)
+(or x3186 (not x4117))
+(or (not x3180) x4110)
+(or x3180 (not x4110))
+(or (not x3167) x4104)
+(or x3167 (not x4104))
+(or (not x3061) x4091)
+(or x3061 (not x4091))
+(or (not x3126) x4063)
+(or x3126 (not x4063))
+(or (not x3119) x4049)
+(or x3119 (not x4049))
+(or (not x3097) x4042)
+(or x3097 (not x4042))
+(or (not x3091) x4021)
+(or x3091 (not x4021))
+(or (not x3084) x4014)
+(or x3084 (not x4014))
+(or (not x3060) x4007)
+(or x3060 (not x4007))
+(or (not x3054) x3984)
+(or x3054 (not x3984))
+(or (not x3046) x3977)
+(or x3046 (not x3977))
+(or (not x3039) x3970)
+(or x3039 (not x3970))
+(or (not x3032) x3963)
+(or x3032 (not x3963))
+(or (not x3026) x3957)
+(or x3026 (not x3957))
+(or (not x3020) x3951)
+(or x3020 (not x3951))
+(or (not x3014) x3945)
+(or x3014 (not x3945))
+(or (not x3008) x3939)
+(or x3008 (not x3939))
+(or (not x3002) x3933)
+(or x3002 (not x3933))
+(or (not x2996) x3927)
+(or x2996 (not x3927))
+(or (not x2990) x3921)
+(or x2990 (not x3921))
+(or (not x2984) x3915)
+(or x2984 (not x3915))
+(or (not x2978) x3909)
+(or x2978 (not x3909))
+(or (not x2971) x3903)
+(or x2971 (not x3903))
+(or (not x2963) x3895)
+(or x2963 (not x3895))
+(or (not x2956) x3887)
+(or x2956 (not x3887))
+(or (not x2950) x3881)
+(or x2950 (not x3881))
+(or (not x2944) x3875)
+(or x2944 (not x3875))
+(or (not x122) x3868)
+(or x122 (not x3868))
+(or (not x123) x3858)
+(or x123 (not x3858))
+(or (not x124) x3839)
+(or x124 (not x3839))
+(or (not x125) x3831)
+(or x125 (not x3831))
+(or (not x126) x3812)
+(or x126 (not x3812))
+(or x4729 x4718)
+(or x3803 x3792)
+(or (not x2012) x3791)
+(or x2012 (not x3791))
+(or (not x2013) x3789)
+(or x2013 (not x3789))
+(or (not x2554) x3788)
+(or x2554 (not x3788))
+(or (not x2560) x3774)
+(or x2560 (not x3774))
+(or (not x2784) x3763)
+(or x2784 (not x3763))
+(or (not x2783) x3739)
+(or x2783 (not x3739))
+(or (not x2765) x3722)
+(or x2765 (not x3722))
+(or (not x2678) x3689)
+(or x2678 (not x3689))
+(or (not x2677) x3671)
+(or x2677 (not x3671))
+(or (not x2549) x3658)
+(or x2549 (not x3658))
+(or (not x2562) x3646)
+(or x2562 (not x3646))
+(or (not x2676) x3636)
+(or x2676 (not x3636))
+(or (not x2707) x3620)
+(or x2707 (not x3620))
+(or (not x2571) x3544)
+(or x2571 (not x3544))
+(or (not x2420) x3504)
+(or x2420 (not x3504))
+(or (not x2582) x3499)
+(or x2582 (not x3499))
+(or (not x2410) x3467)
+(or x2410 (not x3467))
+(or (not x2183) x3462)
+(or x2183 (not x3462))
+(or (not x2184) x3400)
+(or x2184 (not x3400))
+(or (not x2421) x3355)
+(or x2421 (not x3355))
+(or (not x2411) x3345)
+(or x2411 (not x3345))
+(or (not x2192) x3335)
+(or x2192 (not x3335))
+(or (not x2164) x3329)
+(or x2164 (not x3329))
+(or (not x2157) x3322)
+(or x2157 (not x3322))
+(or (not x2127) x3316)
+(or x2127 (not x3316))
+(or (not x2339) x3309)
+(or x2339 (not x3309))
+(or (not x2345) x3283)
+(or x2345 (not x3283))
+(or (not x2216) x3264)
+(or x2216 (not x3264))
+(or (not x2592) x3255)
+(or x2592 (not x3255))
+(or (not x2370) x9388)
+(or x2370 (not x9388))
+(or (not x2323) x3254)
+(or x2323 (not x3254))
+(or (not x2317) x3247)
+(or x2317 (not x3247))
+(or (not x2364) x9389)
+(or x2364 (not x9389))
+(or (not x2362) x9390)
+(or x2362 (not x9390))
+(or (not x2311) x3241)
+(or x2311 (not x3241))
+(or (not x2306) x3236)
+(or x2306 (not x3236))
+(or (not x2301) x3231)
+(or x2301 (not x3231))
+(or (not x2296) x3226)
+(or x2296 (not x3226))
+(or (not x2291) x3221)
+(or x2291 (not x3221))
+(or (not x2286) x3216)
+(or x2286 (not x3216))
+(or (not x2281) x3211)
+(or x2281 (not x3211))
+(or (not x2276) x3206)
+(or x2276 (not x3206))
+(or (not x2271) x3201)
+(or x2271 (not x3201))
+(or (not x2266) x3196)
+(or x2266 (not x3196))
+(or (not x2260) x3191)
+(or x2260 (not x3191))
+(or (not x2254) x3184)
+(or x2254 (not x3184))
+(or (not x2241) x3178)
+(or x2241 (not x3178))
+(or (not x2135) x3165)
+(or x2135 (not x3165))
+(or (not x2200) x3137)
+(or x2200 (not x3137))
+(or (not x2193) x3123)
+(or x2193 (not x3123))
+(or (not x2171) x3116)
+(or x2171 (not x3116))
+(or (not x2165) x3095)
+(or x2165 (not x3095))
+(or (not x2158) x3088)
+(or x2158 (not x3088))
+(or (not x2134) x3081)
+(or x2134 (not x3081))
+(or (not x2128) x3058)
+(or x2128 (not x3058))
+(or (not x2120) x3051)
+(or x2120 (not x3051))
+(or (not x2113) x3044)
+(or x2113 (not x3044))
+(or (not x2106) x3037)
+(or x2106 (not x3037))
+(or (not x2100) x3031)
+(or x2100 (not x3031))
+(or (not x2094) x3025)
+(or x2094 (not x3025))
+(or (not x2088) x3019)
+(or x2088 (not x3019))
+(or (not x2082) x3013)
+(or x2082 (not x3013))
+(or (not x2076) x3007)
+(or x2076 (not x3007))
+(or (not x2070) x3001)
+(or x2070 (not x3001))
+(or (not x2064) x2995)
+(or x2064 (not x2995))
+(or (not x2058) x2989)
+(or x2058 (not x2989))
+(or (not x2052) x2983)
+(or x2052 (not x2983))
+(or (not x2045) x2977)
+(or x2045 (not x2977))
+(or (not x2037) x2969)
+(or x2037 (not x2969))
+(or (not x2030) x2961)
+(or x2030 (not x2961))
+(or (not x2024) x2955)
+(or x2024 (not x2955))
+(or (not x2018) x2949)
+(or x2018 (not x2949))
+(or (not x103) x2942)
+(or x103 (not x2942))
+(or (not x104) x2932)
+(or x104 (not x2932))
+(or (not x105) x2913)
+(or x105 (not x2913))
+(or (not x106) x2905)
+(or x106 (not x2905))
+(or (not x107) x2886)
+(or x107 (not x2886))
+(or x3803 x3792)
+(or x2877 x2866)
+(or (not x1213) x2865)
+(or x1213 (not x2865))
+(or (not x1214) x2863)
+(or x1214 (not x2863))
+(or (not x1627) x2862)
+(or x1627 (not x2862))
+(or (not x1633) x2848)
+(or x1633 (not x2848))
+(or (not x1858) x2837)
+(or x1858 (not x2837))
+(or (not x1857) x2813)
+(or x1857 (not x2813))
+(or (not x1839) x2796)
+(or x1839 (not x2796))
+(or (not x1752) x2763)
+(or x1752 (not x2763))
+(or (not x1751) x2745)
+(or x1751 (not x2745))
+(or (not x1622) x2732)
+(or x1622 (not x2732))
+(or (not x1635) x2720)
+(or x1635 (not x2720))
+(or (not x1750) x2710)
+(or x1750 (not x2710))
+(or (not x1781) x2694)
+(or x1781 (not x2694))
+(or (not x1644) x2618)
+(or x1644 (not x2618))
+(or (not x1564) x2578)
+(or x1564 (not x2578))
+(or (not x1656) x2573)
+(or x1656 (not x2573))
+(or (not x1507) x2541)
+(or x1507 (not x2541))
+(or (not x1256) x2536)
+(or x1256 (not x2536))
+(or (not x1257) x2474)
+(or x1257 (not x2474))
+(or (not x1648) x2429)
+(or x1648 (not x2429))
+(or (not x1610) x2419)
+(or x1610 (not x2419))
+(or (not x1314) x2409)
+(or x1314 (not x2409))
+(or (not x1244) x2403)
+(or x1244 (not x2403))
+(or (not x1269) x2396)
+(or x1269 (not x2396))
+(or (not x1221) x2390)
+(or x1221 (not x2390))
+(or (not x1429) x2383)
+(or x1429 (not x2383))
+(or (not x1435) x2357)
+(or x1435 (not x2357))
+(or (not x1286) x2338)
+(or x1286 (not x2338))
+(or (not x1666) x2329)
+(or x1666 (not x2329))
+(or (not x1460) x9391)
+(or x1460 (not x9391))
+(or (not x1410) x2328)
+(or x1410 (not x2328))
+(or (not x1402) x2321)
+(or x1402 (not x2321))
+(or (not x1454) x9392)
+(or x1454 (not x9392))
+(or (not x1452) x9393)
+(or x1452 (not x9393))
+(or (not x1395) x2315)
+(or x1395 (not x2315))
+(or (not x1389) x2310)
+(or x1389 (not x2310))
+(or (not x1383) x2305)
+(or x1383 (not x2305))
+(or (not x1377) x2300)
+(or x1377 (not x2300))
+(or (not x1371) x2295)
+(or x1371 (not x2295))
+(or (not x1365) x2290)
+(or x1365 (not x2290))
+(or (not x1359) x2285)
+(or x1359 (not x2285))
+(or (not x1353) x2280)
+(or x1353 (not x2280))
+(or (not x1347) x2275)
+(or x1347 (not x2275))
+(or (not x1341) x2270)
+(or x1341 (not x2270))
+(or (not x1333) x2265)
+(or x1333 (not x2265))
+(or (not x1325) x2258)
+(or x1325 (not x2258))
+(or (not x1311) x2252)
+(or x1311 (not x2252))
+(or (not x1220) x2239)
+(or x1220 (not x2239))
+(or (not x1266) x2211)
+(or x1266 (not x2211))
+(or (not x1327) x2197)
+(or x1327 (not x2197))
+(or (not x1243) x2190)
+(or x1243 (not x2190))
+(or (not x1336) x2169)
+(or x1336 (not x2169))
+(or (not x1404) x2162)
+(or x1404 (not x2162))
+(or (not x1219) x2155)
+(or x1219 (not x2155))
+(or (not x1413) x2132)
+(or x1413 (not x2132))
+(or (not x1414) x2125)
+(or x1414 (not x2125))
+(or (not x1405) x2118)
+(or x1405 (not x2118))
+(or (not x1397) x2111)
+(or x1397 (not x2111))
+(or (not x1391) x2105)
+(or x1391 (not x2105))
+(or (not x1385) x2099)
+(or x1385 (not x2099))
+(or (not x1379) x2093)
+(or x1379 (not x2093))
+(or (not x1373) x2087)
+(or x1373 (not x2087))
+(or (not x1367) x2081)
+(or x1367 (not x2081))
+(or (not x1361) x2075)
+(or x1361 (not x2075))
+(or (not x1355) x2069)
+(or x1355 (not x2069))
+(or (not x1349) x2063)
+(or x1349 (not x2063))
+(or (not x1343) x2057)
+(or x1343 (not x2057))
+(or (not x1337) x2051)
+(or x1337 (not x2051))
+(or (not x1328) x2043)
+(or x1328 (not x2043))
+(or (not x1283) x2035)
+(or x1283 (not x2035))
+(or (not x1281) x2029)
+(or x1281 (not x2029))
+(or (not x1279) x2023)
+(or x1279 (not x2023))
+(or (not x84) x2016)
+(or x84 (not x2016))
+(or (not x85) x2006)
+(or x85 (not x2006))
+(or (not x86) x1987)
+(or x86 (not x1987))
+(or (not x87) x1979)
+(or x87 (not x1979))
+(or (not x88) x1960)
+(or x88 (not x1960))
+(or x2877 x2866)
+(or x1951 x1940)
+(or (not x737) x1939)
+(or x737 (not x1939))
+(or (not x738) x1937)
+(or x738 (not x1937))
+(or (not x754) x1936)
+(or x754 (not x1936))
+(or (not x760) x1922)
+(or x760 (not x1922))
+(or (not x1059) x1911)
+(or x1059 (not x1911))
+(or (not x1058) x1887)
+(or x1058 (not x1887))
+(or (not x1040) x1870)
+(or x1040 (not x1870))
+(or (not x948) x1837)
+(or x948 (not x1837))
+(or (not x947) x1819)
+(or x947 (not x1819))
+(or (not x749) x1806)
+(or x749 (not x1806))
+(or (not x762) x1794)
+(or x762 (not x1794))
+(or (not x946) x1784)
+(or x946 (not x1784))
+(or (not x982) x1768)
+(or x982 (not x1768))
+(or (not x771) x1692)
+(or x771 (not x1692))
+(or (not x966) x1652)
+(or x966 (not x1652))
+(or (not x777) x1646)
+(or x777 (not x1646))
+(or (not x962) x1614)
+(or x962 (not x1614))
+(or (not x891) x1608)
+(or x891 (not x1608))
+(or (not x892) x1545)
+(or x892 (not x1545))
+(or (not x903) x1499)
+(or x903 (not x1499))
+(or (not x897) x1493)
+(or x897 (not x1493))
+(or (not x867) x1486)
+(or x867 (not x1486))
+(or (not x861) x1480)
+(or x861 (not x1480))
+(or (not x799) x1473)
+(or x799 (not x1473))
+(or (not x809) x1447)
+(or x809 (not x1447))
+(or (not x804) x1428)
+(or x804 (not x1428))
+(or (not x805) x1418)
+(or x805 (not x1418))
+(or (not x822) x9394)
+(or x822 (not x9394))
+(or (not x884) x1417)
+(or x884 (not x1417))
+(or (not x876) x1408)
+(or x876 (not x1408))
+(or (not x818) x9395)
+(or x818 (not x9395))
+(or (not x816) x9396)
+(or x816 (not x9396))
+(or (not x950) x1400)
+(or x950 (not x1400))
+(or (not x943) x1394)
+(or x943 (not x1394))
+(or (not x936) x1388)
+(or x936 (not x1388))
+(or (not x934) x1382)
+(or x934 (not x1382))
+(or (not x930) x1376)
+(or x930 (not x1376))
+(or (not x928) x1370)
+(or x928 (not x1370))
+(or (not x924) x1364)
+(or x924 (not x1364))
+(or (not x922) x1358)
+(or x922 (not x1358))
+(or (not x918) x1352)
+(or x918 (not x1352))
+(or (not x916) x1346)
+(or x916 (not x1346))
+(or (not x912) x1340)
+(or x912 (not x1340))
+(or (not x909) x1331)
+(or x909 (not x1331))
+(or (not x902) x1323)
+(or x902 (not x1323))
+(or (not x853) x1309)
+(or x853 (not x1309))
+(or (not x866) x1278)
+(or x866 (not x1278))
+(or (not x900) x1263)
+(or x900 (not x1263))
+(or (not x864) x1241)
+(or x864 (not x1241))
+(or (not x65) x1217)
+(or x65 (not x1217))
+(or (not x66) x1207)
+(or x66 (not x1207))
+(or (not x67) x1188)
+(or x67 (not x1188))
+(or (not x68) x1180)
+(or x68 (not x1180))
+(or (not x69) x1161)
+(or x69 (not x1161))
+(or x1951 x1940)
+(or x1152 x1141)
+(or (not x462) x1140)
+(or x462 (not x1140))
+(or (not x463) x1138)
+(or x463 (not x1138))
+(or (not x539) x1137)
+(or x539 (not x1137))
+(or (not x543) x1123)
+(or x543 (not x1123))
+(or (not x578) x1112)
+(or x578 (not x1112))
+(or (not x577) x1088)
+(or x577 (not x1088))
+(or (not x559) x1071)
+(or x559 (not x1071))
+(or (not x533) x1038)
+(or x533 (not x1038))
+(or (not x519) x1020)
+(or x519 (not x1020))
+(or (not x484) x1007)
+(or x484 (not x1007))
+(or (not x489) x995)
+(or x489 (not x995))
+(or (not x469) x985)
+(or x469 (not x985))
+(or (not x480) x969)
+(or x480 (not x969))
+(or (not x495) x848)
+(or x495 (not x848))
+(or (not x504) x773)
+(or x504 (not x773))
+(or (not x46) x741)
+(or x46 (not x741))
+(or (not x47) x731)
+(or x47 (not x731))
+(or (not x48) x712)
+(or x48 (not x712))
+(or (not x49) x704)
+(or x49 (not x704))
+(or (not x50) x685)
+(or x50 (not x685))
+(or x1152 x1141)
+(or x676 x665)
+(or (not x328) x664)
+(or x328 (not x664))
+(or (not x329) x662)
+(or x329 (not x662))
+(or (not x333) x661)
+(or x333 (not x661))
+(or (not x336) x646)
+(or x336 (not x646))
+(or (not x375) x635)
+(or x375 (not x635))
+(or (not x374) x610)
+(or x374 (not x610))
+(or (not x373) x593)
+(or x373 (not x593))
+(or (not x383) x557)
+(or x383 (not x557))
+(or (not x380) x532)
+(or x380 (not x532))
+(or (not x353) x518)
+(or x353 (not x518))
+(or (not x369) x503)
+(or x369 (not x503))
+(or (not x341) x483)
+(or x341 (not x483))
+(or (not x27) x466)
+(or x27 (not x466))
+(or (not x28) x456)
+(or x28 (not x456))
+(or (not x29) x437)
+(or x29 (not x437))
+(or (not x30) x429)
+(or x30 (not x429))
+(or (not x31) x410)
+(or x31 (not x410))
+(or x676 x665)
+(or x401 x390)
+(or (not x2) x389)
+(or x2 (not x389))
+(or (not x23) x387)
+(or x23 (not x387))
+(or (not x22) x351)
+(or x22 (not x351))
+(or (not x7) x332)
+(or x7 (not x332))
+(or (not x8) x322)
+(or x8 (not x322))
+(or (not x9) x303)
+(or x9 (not x303))
+(or (not x10) x295)
+(or x10 (not x295))
+(or (not x11) x276)
+(or x11 (not x276))
+(or x401 x390)
+(or x267 x255)
+(or x254)
+))
diff --git a/test/regress/regress3/bmc-ibm-7.smt b/test/regress/regress3/bmc-ibm-7.smt
new file mode 100644
index 0000000..3e8fd93
--- /dev/null
+++ b/test/regress/regress3/bmc-ibm-7.smt
@@ -0,0 +1,48496 @@
+
+;;; Taken from SATLIB: SAT-encoded bounded model checking intances
+;;;source: http://people.cs.ubc.ca/~hoos/SATLIB/Benchmarks/SAT/BMC/bmc.tar.gz
+;;;described here: http://people.cs.ubc.ca/~hoos/SATLIB/Benchmarks/SAT/BMC/description.html
+;;;retrieved: Fri Jan 22 19:05:36 EST 2010
+;;;smt file generated using dimacs_to_smt.pl
+
+(benchmark b
+:status sat
+:logic QF_UF
+:extrapreds ((x1))
+: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))
+:extrapreds ((x770))
+:extrapreds ((x771))
+:extrapreds ((x772))
+:extrapreds ((x773))
+:extrapreds ((x774))
+:extrapreds ((x775))
+:extrapreds ((x776))
+:extrapreds ((x777))
+:extrapreds ((x778))
+:extrapreds ((x779))
+:extrapreds ((x780))
+:extrapreds ((x781))
+:extrapreds ((x782))
+:extrapreds ((x783))
+:extrapreds ((x784))
+:extrapreds ((x785))
+:extrapreds ((x786))
+:extrapreds ((x787))
+:extrapreds ((x788))
+:extrapreds ((x789))
+:extrapreds ((x790))
+:extrapreds ((x791))
+:extrapreds ((x792))
+:extrapreds ((x793))
+:extrapreds ((x794))
+:extrapreds ((x795))
+:extrapreds ((x796))
+:extrapreds ((x797))
+:extrapreds ((x798))
+:extrapreds ((x799))
+:extrapreds ((x800))
+:extrapreds ((x801))
+:extrapreds ((x802))
+:extrapreds ((x803))
+:extrapreds ((x804))
+:extrapreds ((x805))
+:extrapreds ((x806))
+:extrapreds ((x807))
+:extrapreds ((x808))
+:extrapreds ((x809))
+:extrapreds ((x810))
+:extrapreds ((x811))
+:extrapreds ((x812))
+:extrapreds ((x813))
+:extrapreds ((x814))
+:extrapreds ((x815))
+:extrapreds ((x816))
+:extrapreds ((x817))
+:extrapreds ((x818))
+:extrapreds ((x819))
+:extrapreds ((x820))
+:extrapreds ((x821))
+:extrapreds ((x822))
+:extrapreds ((x823))
+:extrapreds ((x824))
+:extrapreds ((x825))
+:extrapreds ((x826))
+:extrapreds ((x827))
+:extrapreds ((x828))
+:extrapreds ((x829))
+:extrapreds ((x830))
+:extrapreds ((x831))
+:extrapreds ((x832))
+:extrapreds ((x833))
+:extrapreds ((x834))
+:extrapreds ((x835))
+:extrapreds ((x836))
+:extrapreds ((x837))
+:extrapreds ((x838))
+:extrapreds ((x839))
+:extrapreds ((x840))
+:extrapreds ((x841))
+:extrapreds ((x842))
+:extrapreds ((x843))
+:extrapreds ((x844))
+:extrapreds ((x845))
+:extrapreds ((x846))
+:extrapreds ((x847))
+:extrapreds ((x848))
+:extrapreds ((x849))
+:extrapreds ((x850))
+:extrapreds ((x851))
+:extrapreds ((x852))
+:extrapreds ((x853))
+:extrapreds ((x854))
+:extrapreds ((x855))
+:extrapreds ((x856))
+:extrapreds ((x857))
+:extrapreds ((x858))
+:extrapreds ((x859))
+:extrapreds ((x860))
+:extrapreds ((x861))
+:extrapreds ((x862))
+:extrapreds ((x863))
+:extrapreds ((x864))
+:extrapreds ((x865))
+:extrapreds ((x866))
+:extrapreds ((x867))
+:extrapreds ((x868))
+:extrapreds ((x869))
+:extrapreds ((x870))
+:extrapreds ((x871))
+:extrapreds ((x872))
+:extrapreds ((x873))
+:extrapreds ((x874))
+:extrapreds ((x875))
+:extrapreds ((x876))
+:extrapreds ((x877))
+:extrapreds ((x878))
+:extrapreds ((x879))
+:extrapreds ((x880))
+:extrapreds ((x881))
+:extrapreds ((x882))
+:extrapreds ((x883))
+:extrapreds ((x884))
+:extrapreds ((x885))
+:extrapreds ((x886))
+:extrapreds ((x887))
+:extrapreds ((x888))
+:extrapreds ((x889))
+:extrapreds ((x890))
+:extrapreds ((x891))
+:extrapreds ((x892))
+:extrapreds ((x893))
+:extrapreds ((x894))
+:extrapreds ((x895))
+:extrapreds ((x896))
+:extrapreds ((x897))
+:extrapreds ((x898))
+:extrapreds ((x899))
+:extrapreds ((x900))
+:extrapreds ((x901))
+:extrapreds ((x902))
+:extrapreds ((x903))
+:extrapreds ((x904))
+:extrapreds ((x905))
+:extrapreds ((x906))
+:extrapreds ((x907))
+:extrapreds ((x908))
+:extrapreds ((x909))
+:extrapreds ((x910))
+:extrapreds ((x911))
+:extrapreds ((x912))
+:extrapreds ((x913))
+:extrapreds ((x914))
+:extrapreds ((x915))
+:extrapreds ((x916))
+:extrapreds ((x917))
+:extrapreds ((x918))
+:extrapreds ((x919))
+:extrapreds ((x920))
+:extrapreds ((x921))
+:extrapreds ((x922))
+:extrapreds ((x923))
+:extrapreds ((x924))
+:extrapreds ((x925))
+:extrapreds ((x926))
+:extrapreds ((x927))
+:extrapreds ((x928))
+:extrapreds ((x929))
+:extrapreds ((x930))
+:extrapreds ((x931))
+:extrapreds ((x932))
+:extrapreds ((x933))
+:extrapreds ((x934))
+:extrapreds ((x935))
+:extrapreds ((x936))
+:extrapreds ((x937))
+:extrapreds ((x938))
+:extrapreds ((x939))
+:extrapreds ((x940))
+:extrapreds ((x941))
+:extrapreds ((x942))
+:extrapreds ((x943))
+:extrapreds ((x944))
+:extrapreds ((x945))
+:extrapreds ((x946))
+:extrapreds ((x947))
+:extrapreds ((x948))
+:extrapreds ((x949))
+:extrapreds ((x950))
+:extrapreds ((x951))
+:extrapreds ((x952))
+:extrapreds ((x953))
+:extrapreds ((x954))
+:extrapreds ((x955))
+:extrapreds ((x956))
+:extrapreds ((x957))
+:extrapreds ((x958))
+:extrapreds ((x959))
+:extrapreds ((x960))
+:extrapreds ((x961))
+:extrapreds ((x962))
+:extrapreds ((x963))
+:extrapreds ((x964))
+:extrapreds ((x965))
+:extrapreds ((x966))
+:extrapreds ((x967))
+:extrapreds ((x968))
+:extrapreds ((x969))
+:extrapreds ((x970))
+:extrapreds ((x971))
+:extrapreds ((x972))
+:extrapreds ((x973))
+:extrapreds ((x974))
+:extrapreds ((x975))
+:extrapreds ((x976))
+:extrapreds ((x977))
+:extrapreds ((x978))
+:extrapreds ((x979))
+:extrapreds ((x980))
+:extrapreds ((x981))
+:extrapreds ((x982))
+:extrapreds ((x983))
+:extrapreds ((x984))
+:extrapreds ((x985))
+:extrapreds ((x986))
+:extrapreds ((x987))
+:extrapreds ((x988))
+:extrapreds ((x989))
+:extrapreds ((x990))
+:extrapreds ((x991))
+:extrapreds ((x992))
+:extrapreds ((x993))
+:extrapreds ((x994))
+:extrapreds ((x995))
+:extrapreds ((x996))
+:extrapreds ((x997))
+:extrapreds ((x998))
+:extrapreds ((x999))
+:extrapreds ((x1000))
+:extrapreds ((x1001))
+:extrapreds ((x1002))
+:extrapreds ((x1003))
+:extrapreds ((x1004))
+:extrapreds ((x1005))
+:extrapreds ((x1006))
+:extrapreds ((x1007))
+:extrapreds ((x1008))
+:extrapreds ((x1009))
+:extrapreds ((x1010))
+:extrapreds ((x1011))
+:extrapreds ((x1012))
+:extrapreds ((x1013))
+:extrapreds ((x1014))
+:extrapreds ((x1015))
+:extrapreds ((x1016))
+:extrapreds ((x1017))
+:extrapreds ((x1018))
+:extrapreds ((x1019))
+:extrapreds ((x1020))
+:extrapreds ((x1021))
+:extrapreds ((x1022))
+:extrapreds ((x1023))
+:extrapreds ((x1024))
+:extrapreds ((x1025))
+:extrapreds ((x1026))
+:extrapreds ((x1027))
+:extrapreds ((x1028))
+:extrapreds ((x1029))
+:extrapreds ((x1030))
+:extrapreds ((x1031))
+:extrapreds ((x1032))
+:extrapreds ((x1033))
+:extrapreds ((x1034))
+:extrapreds ((x1035))
+:extrapreds ((x1036))
+:extrapreds ((x1037))
+:extrapreds ((x1038))
+:extrapreds ((x1039))
+:extrapreds ((x1040))
+:extrapreds ((x1041))
+:extrapreds ((x1042))
+:extrapreds ((x1043))
+:extrapreds ((x1044))
+:extrapreds ((x1045))
+:extrapreds ((x1046))
+:extrapreds ((x1047))
+:extrapreds ((x1048))
+:extrapreds ((x1049))
+:extrapreds ((x1050))
+:extrapreds ((x1051))
+:extrapreds ((x1052))
+:extrapreds ((x1053))
+:extrapreds ((x1054))
+:extrapreds ((x1055))
+:extrapreds ((x1056))
+:extrapreds ((x1057))
+:extrapreds ((x1058))
+:extrapreds ((x1059))
+:extrapreds ((x1060))
+:extrapreds ((x1061))
+:extrapreds ((x1062))
+:extrapreds ((x1063))
+:extrapreds ((x1064))
+:extrapreds ((x1065))
+:extrapreds ((x1066))
+:extrapreds ((x1067))
+:extrapreds ((x1068))
+:extrapreds ((x1069))
+:extrapreds ((x1070))
+:extrapreds ((x1071))
+:extrapreds ((x1072))
+:extrapreds ((x1073))
+:extrapreds ((x1074))
+:extrapreds ((x1075))
+:extrapreds ((x1076))
+:extrapreds ((x1077))
+:extrapreds ((x1078))
+:extrapreds ((x1079))
+:extrapreds ((x1080))
+:extrapreds ((x1081))
+:extrapreds ((x1082))
+:extrapreds ((x1083))
+:extrapreds ((x1084))
+:extrapreds ((x1085))
+:extrapreds ((x1086))
+:extrapreds ((x1087))
+:extrapreds ((x1088))
+:extrapreds ((x1089))
+:extrapreds ((x1090))
+:extrapreds ((x1091))
+:extrapreds ((x1092))
+:extrapreds ((x1093))
+:extrapreds ((x1094))
+:extrapreds ((x1095))
+:extrapreds ((x1096))
+:extrapreds ((x1097))
+:extrapreds ((x1098))
+:extrapreds ((x1099))
+:extrapreds ((x1100))
+:extrapreds ((x1101))
+:extrapreds ((x1102))
+:extrapreds ((x1103))
+:extrapreds ((x1104))
+:extrapreds ((x1105))
+:extrapreds ((x1106))
+:extrapreds ((x1107))
+:extrapreds ((x1108))
+:extrapreds ((x1109))
+:extrapreds ((x1110))
+:extrapreds ((x1111))
+:extrapreds ((x1112))
+:extrapreds ((x1113))
+:extrapreds ((x1114))
+:extrapreds ((x1115))
+:extrapreds ((x1116))
+:extrapreds ((x1117))
+:extrapreds ((x1118))
+:extrapreds ((x1119))
+:extrapreds ((x1120))
+:extrapreds ((x1121))
+:extrapreds ((x1122))
+:extrapreds ((x1123))
+:extrapreds ((x1124))
+:extrapreds ((x1125))
+:extrapreds ((x1126))
+:extrapreds ((x1127))
+:extrapreds ((x1128))
+:extrapreds ((x1129))
+:extrapreds ((x1130))
+:extrapreds ((x1131))
+:extrapreds ((x1132))
+:extrapreds ((x1133))
+:extrapreds ((x1134))
+:extrapreds ((x1135))
+:extrapreds ((x1136))
+:extrapreds ((x1137))
+:extrapreds ((x1138))
+:extrapreds ((x1139))
+:extrapreds ((x1140))
+:extrapreds ((x1141))
+:extrapreds ((x1142))
+:extrapreds ((x1143))
+:extrapreds ((x1144))
+:extrapreds ((x1145))
+:extrapreds ((x1146))
+:extrapreds ((x1147))
+:extrapreds ((x1148))
+:extrapreds ((x1149))
+:extrapreds ((x1150))
+:extrapreds ((x1151))
+:extrapreds ((x1152))
+:extrapreds ((x1153))
+:extrapreds ((x1154))
+:extrapreds ((x1155))
+:extrapreds ((x1156))
+:extrapreds ((x1157))
+:extrapreds ((x1158))
+:extrapreds ((x1159))
+:extrapreds ((x1160))
+:extrapreds ((x1161))
+:extrapreds ((x1162))
+:extrapreds ((x1163))
+:extrapreds ((x1164))
+:extrapreds ((x1165))
+:extrapreds ((x1166))
+:extrapreds ((x1167))
+:extrapreds ((x1168))
+:extrapreds ((x1169))
+:extrapreds ((x1170))
+:extrapreds ((x1171))
+:extrapreds ((x1172))
+:extrapreds ((x1173))
+:extrapreds ((x1174))
+:extrapreds ((x1175))
+:extrapreds ((x1176))
+:extrapreds ((x1177))
+:extrapreds ((x1178))
+:extrapreds ((x1179))
+:extrapreds ((x1180))
+:extrapreds ((x1181))
+:extrapreds ((x1182))
+:extrapreds ((x1183))
+:extrapreds ((x1184))
+:extrapreds ((x1185))
+:extrapreds ((x1186))
+:extrapreds ((x1187))
+:extrapreds ((x1188))
+:extrapreds ((x1189))
+:extrapreds ((x1190))
+:extrapreds ((x1191))
+:extrapreds ((x1192))
+:extrapreds ((x1193))
+:extrapreds ((x1194))
+:extrapreds ((x1195))
+:extrapreds ((x1196))
+:extrapreds ((x1197))
+:extrapreds ((x1198))
+:extrapreds ((x1199))
+:extrapreds ((x1200))
+:extrapreds ((x1201))
+:extrapreds ((x1202))
+:extrapreds ((x1203))
+:extrapreds ((x1204))
+:extrapreds ((x1205))
+:extrapreds ((x1206))
+:extrapreds ((x1207))
+:extrapreds ((x1208))
+:extrapreds ((x1209))
+:extrapreds ((x1210))
+:extrapreds ((x1211))
+:extrapreds ((x1212))
+:extrapreds ((x1213))
+:extrapreds ((x1214))
+:extrapreds ((x1215))
+:extrapreds ((x1216))
+:extrapreds ((x1217))
+:extrapreds ((x1218))
+:extrapreds ((x1219))
+:extrapreds ((x1220))
+:extrapreds ((x1221))
+:extrapreds ((x1222))
+:extrapreds ((x1223))
+:extrapreds ((x1224))
+:extrapreds ((x1225))
+:extrapreds ((x1226))
+:extrapreds ((x1227))
+:extrapreds ((x1228))
+:extrapreds ((x1229))
+:extrapreds ((x1230))
+:extrapreds ((x1231))
+:extrapreds ((x1232))
+:extrapreds ((x1233))
+:extrapreds ((x1234))
+:extrapreds ((x1235))
+:extrapreds ((x1236))
+:extrapreds ((x1237))
+:extrapreds ((x1238))
+:extrapreds ((x1239))
+:extrapreds ((x1240))
+:extrapreds ((x1241))
+:extrapreds ((x1242))
+:extrapreds ((x1243))
+:extrapreds ((x1244))
+:extrapreds ((x1245))
+:extrapreds ((x1246))
+:extrapreds ((x1247))
+:extrapreds ((x1248))
+:extrapreds ((x1249))
+:extrapreds ((x1250))
+:extrapreds ((x1251))
+:extrapreds ((x1252))
+:extrapreds ((x1253))
+:extrapreds ((x1254))
+:extrapreds ((x1255))
+:extrapreds ((x1256))
+:extrapreds ((x1257))
+:extrapreds ((x1258))
+:extrapreds ((x1259))
+:extrapreds ((x1260))
+:extrapreds ((x1261))
+:extrapreds ((x1262))
+:extrapreds ((x1263))
+:extrapreds ((x1264))
+:extrapreds ((x1265))
+:extrapreds ((x1266))
+:extrapreds ((x1267))
+:extrapreds ((x1268))
+:extrapreds ((x1269))
+:extrapreds ((x1270))
+:extrapreds ((x1271))
+:extrapreds ((x1272))
+:extrapreds ((x1273))
+:extrapreds ((x1274))
+:extrapreds ((x1275))
+:extrapreds ((x1276))
+:extrapreds ((x1277))
+:extrapreds ((x1278))
+:extrapreds ((x1279))
+:extrapreds ((x1280))
+:extrapreds ((x1281))
+:extrapreds ((x1282))
+:extrapreds ((x1283))
+:extrapreds ((x1284))
+:extrapreds ((x1285))
+:extrapreds ((x1286))
+:extrapreds ((x1287))
+:extrapreds ((x1288))
+:extrapreds ((x1289))
+:extrapreds ((x1290))
+:extrapreds ((x1291))
+:extrapreds ((x1292))
+:extrapreds ((x1293))
+:extrapreds ((x1294))
+:extrapreds ((x1295))
+:extrapreds ((x1296))
+:extrapreds ((x1297))
+:extrapreds ((x1298))
+:extrapreds ((x1299))
+:extrapreds ((x1300))
+:extrapreds ((x1301))
+:extrapreds ((x1302))
+:extrapreds ((x1303))
+:extrapreds ((x1304))
+:extrapreds ((x1305))
+:extrapreds ((x1306))
+:extrapreds ((x1307))
+:extrapreds ((x1308))
+:extrapreds ((x1309))
+:extrapreds ((x1310))
+:extrapreds ((x1311))
+:extrapreds ((x1312))
+:extrapreds ((x1313))
+:extrapreds ((x1314))
+:extrapreds ((x1315))
+:extrapreds ((x1316))
+:extrapreds ((x1317))
+:extrapreds ((x1318))
+:extrapreds ((x1319))
+:extrapreds ((x1320))
+:extrapreds ((x1321))
+:extrapreds ((x1322))
+:extrapreds ((x1323))
+:extrapreds ((x1324))
+:extrapreds ((x1325))
+:extrapreds ((x1326))
+:extrapreds ((x1327))
+:extrapreds ((x1328))
+:extrapreds ((x1329))
+:extrapreds ((x1330))
+:extrapreds ((x1331))
+:extrapreds ((x1332))
+:extrapreds ((x1333))
+:extrapreds ((x1334))
+:extrapreds ((x1335))
+:extrapreds ((x1336))
+:extrapreds ((x1337))
+:extrapreds ((x1338))
+:extrapreds ((x1339))
+:extrapreds ((x1340))
+:extrapreds ((x1341))
+:extrapreds ((x1342))
+:extrapreds ((x1343))
+:extrapreds ((x1344))
+:extrapreds ((x1345))
+:extrapreds ((x1346))
+:extrapreds ((x1347))
+:extrapreds ((x1348))
+:extrapreds ((x1349))
+:extrapreds ((x1350))
+:extrapreds ((x1351))
+:extrapreds ((x1352))
+:extrapreds ((x1353))
+:extrapreds ((x1354))
+:extrapreds ((x1355))
+:extrapreds ((x1356))
+:extrapreds ((x1357))
+:extrapreds ((x1358))
+:extrapreds ((x1359))
+:extrapreds ((x1360))
+:extrapreds ((x1361))
+:extrapreds ((x1362))
+:extrapreds ((x1363))
+:extrapreds ((x1364))
+:extrapreds ((x1365))
+:extrapreds ((x1366))
+:extrapreds ((x1367))
+:extrapreds ((x1368))
+:extrapreds ((x1369))
+:extrapreds ((x1370))
+:extrapreds ((x1371))
+:extrapreds ((x1372))
+:extrapreds ((x1373))
+:extrapreds ((x1374))
+:extrapreds ((x1375))
+:extrapreds ((x1376))
+:extrapreds ((x1377))
+:extrapreds ((x1378))
+:extrapreds ((x1379))
+:extrapreds ((x1380))
+:extrapreds ((x1381))
+:extrapreds ((x1382))
+:extrapreds ((x1383))
+:extrapreds ((x1384))
+:extrapreds ((x1385))
+:extrapreds ((x1386))
+:extrapreds ((x1387))
+:extrapreds ((x1388))
+:extrapreds ((x1389))
+:extrapreds ((x1390))
+:extrapreds ((x1391))
+:extrapreds ((x1392))
+:extrapreds ((x1393))
+:extrapreds ((x1394))
+:extrapreds ((x1395))
+:extrapreds ((x1396))
+:extrapreds ((x1397))
+:extrapreds ((x1398))
+:extrapreds ((x1399))
+:extrapreds ((x1400))
+:extrapreds ((x1401))
+:extrapreds ((x1402))
+:extrapreds ((x1403))
+:extrapreds ((x1404))
+:extrapreds ((x1405))
+:extrapreds ((x1406))
+:extrapreds ((x1407))
+:extrapreds ((x1408))
+:extrapreds ((x1409))
+:extrapreds ((x1410))
+:extrapreds ((x1411))
+:extrapreds ((x1412))
+:extrapreds ((x1413))
+:extrapreds ((x1414))
+:extrapreds ((x1415))
+:extrapreds ((x1416))
+:extrapreds ((x1417))
+:extrapreds ((x1418))
+:extrapreds ((x1419))
+:extrapreds ((x1420))
+:extrapreds ((x1421))
+:extrapreds ((x1422))
+:extrapreds ((x1423))
+:extrapreds ((x1424))
+:extrapreds ((x1425))
+:extrapreds ((x1426))
+:extrapreds ((x1427))
+:extrapreds ((x1428))
+:extrapreds ((x1429))
+:extrapreds ((x1430))
+:extrapreds ((x1431))
+:extrapreds ((x1432))
+:extrapreds ((x1433))
+:extrapreds ((x1434))
+:extrapreds ((x1435))
+:extrapreds ((x1436))
+:extrapreds ((x1437))
+:extrapreds ((x1438))
+:extrapreds ((x1439))
+:extrapreds ((x1440))
+:extrapreds ((x1441))
+:extrapreds ((x1442))
+:extrapreds ((x1443))
+:extrapreds ((x1444))
+:extrapreds ((x1445))
+:extrapreds ((x1446))
+:extrapreds ((x1447))
+:extrapreds ((x1448))
+:extrapreds ((x1449))
+:extrapreds ((x1450))
+:extrapreds ((x1451))
+:extrapreds ((x1452))
+:extrapreds ((x1453))
+:extrapreds ((x1454))
+:extrapreds ((x1455))
+:extrapreds ((x1456))
+:extrapreds ((x1457))
+:extrapreds ((x1458))
+:extrapreds ((x1459))
+:extrapreds ((x1460))
+:extrapreds ((x1461))
+:extrapreds ((x1462))
+:extrapreds ((x1463))
+:extrapreds ((x1464))
+:extrapreds ((x1465))
+:extrapreds ((x1466))
+:extrapreds ((x1467))
+:extrapreds ((x1468))
+:extrapreds ((x1469))
+:extrapreds ((x1470))
+:extrapreds ((x1471))
+:extrapreds ((x1472))
+:extrapreds ((x1473))
+:extrapreds ((x1474))
+:extrapreds ((x1475))
+:extrapreds ((x1476))
+:extrapreds ((x1477))
+:extrapreds ((x1478))
+:extrapreds ((x1479))
+:extrapreds ((x1480))
+:extrapreds ((x1481))
+:extrapreds ((x1482))
+:extrapreds ((x1483))
+:extrapreds ((x1484))
+:extrapreds ((x1485))
+:extrapreds ((x1486))
+:extrapreds ((x1487))
+:extrapreds ((x1488))
+:extrapreds ((x1489))
+:extrapreds ((x1490))
+:extrapreds ((x1491))
+:extrapreds ((x1492))
+:extrapreds ((x1493))
+:extrapreds ((x1494))
+:extrapreds ((x1495))
+:extrapreds ((x1496))
+:extrapreds ((x1497))
+:extrapreds ((x1498))
+:extrapreds ((x1499))
+:extrapreds ((x1500))
+:extrapreds ((x1501))
+:extrapreds ((x1502))
+:extrapreds ((x1503))
+:extrapreds ((x1504))
+:extrapreds ((x1505))
+:extrapreds ((x1506))
+:extrapreds ((x1507))
+:extrapreds ((x1508))
+:extrapreds ((x1509))
+:extrapreds ((x1510))
+:extrapreds ((x1511))
+:extrapreds ((x1512))
+:extrapreds ((x1513))
+:extrapreds ((x1514))
+:extrapreds ((x1515))
+:extrapreds ((x1516))
+:extrapreds ((x1517))
+:extrapreds ((x1518))
+:extrapreds ((x1519))
+:extrapreds ((x1520))
+:extrapreds ((x1521))
+:extrapreds ((x1522))
+:extrapreds ((x1523))
+:extrapreds ((x1524))
+:extrapreds ((x1525))
+:extrapreds ((x1526))
+:extrapreds ((x1527))
+:extrapreds ((x1528))
+:extrapreds ((x1529))
+:extrapreds ((x1530))
+:extrapreds ((x1531))
+:extrapreds ((x1532))
+:extrapreds ((x1533))
+:extrapreds ((x1534))
+:extrapreds ((x1535))
+:extrapreds ((x1536))
+:extrapreds ((x1537))
+:extrapreds ((x1538))
+:extrapreds ((x1539))
+:extrapreds ((x1540))
+:extrapreds ((x1541))
+:extrapreds ((x1542))
+:extrapreds ((x1543))
+:extrapreds ((x1544))
+:extrapreds ((x1545))
+:extrapreds ((x1546))
+:extrapreds ((x1547))
+:extrapreds ((x1548))
+:extrapreds ((x1549))
+:extrapreds ((x1550))
+:extrapreds ((x1551))
+:extrapreds ((x1552))
+:extrapreds ((x1553))
+:extrapreds ((x1554))
+:extrapreds ((x1555))
+:extrapreds ((x1556))
+:extrapreds ((x1557))
+:extrapreds ((x1558))
+:extrapreds ((x1559))
+:extrapreds ((x1560))
+:extrapreds ((x1561))
+:extrapreds ((x1562))
+:extrapreds ((x1563))
+:extrapreds ((x1564))
+:extrapreds ((x1565))
+:extrapreds ((x1566))
+:extrapreds ((x1567))
+:extrapreds ((x1568))
+:extrapreds ((x1569))
+:extrapreds ((x1570))
+:extrapreds ((x1571))
+:extrapreds ((x1572))
+:extrapreds ((x1573))
+:extrapreds ((x1574))
+:extrapreds ((x1575))
+:extrapreds ((x1576))
+:extrapreds ((x1577))
+:extrapreds ((x1578))
+:extrapreds ((x1579))
+:extrapreds ((x1580))
+:extrapreds ((x1581))
+:extrapreds ((x1582))
+:extrapreds ((x1583))
+:extrapreds ((x1584))
+:extrapreds ((x1585))
+:extrapreds ((x1586))
+:extrapreds ((x1587))
+:extrapreds ((x1588))
+:extrapreds ((x1589))
+:extrapreds ((x1590))
+:extrapreds ((x1591))
+:extrapreds ((x1592))
+:extrapreds ((x1593))
+:extrapreds ((x1594))
+:extrapreds ((x1595))
+:extrapreds ((x1596))
+:extrapreds ((x1597))
+:extrapreds ((x1598))
+:extrapreds ((x1599))
+:extrapreds ((x1600))
+:extrapreds ((x1601))
+:extrapreds ((x1602))
+:extrapreds ((x1603))
+:extrapreds ((x1604))
+:extrapreds ((x1605))
+:extrapreds ((x1606))
+:extrapreds ((x1607))
+:extrapreds ((x1608))
+:extrapreds ((x1609))
+:extrapreds ((x1610))
+:extrapreds ((x1611))
+:extrapreds ((x1612))
+:extrapreds ((x1613))
+:extrapreds ((x1614))
+:extrapreds ((x1615))
+:extrapreds ((x1616))
+:extrapreds ((x1617))
+:extrapreds ((x1618))
+:extrapreds ((x1619))
+:extrapreds ((x1620))
+:extrapreds ((x1621))
+:extrapreds ((x1622))
+:extrapreds ((x1623))
+:extrapreds ((x1624))
+:extrapreds ((x1625))
+:extrapreds ((x1626))
+:extrapreds ((x1627))
+:extrapreds ((x1628))
+:extrapreds ((x1629))
+:extrapreds ((x1630))
+:extrapreds ((x1631))
+:extrapreds ((x1632))
+:extrapreds ((x1633))
+:extrapreds ((x1634))
+:extrapreds ((x1635))
+:extrapreds ((x1636))
+:extrapreds ((x1637))
+:extrapreds ((x1638))
+:extrapreds ((x1639))
+:extrapreds ((x1640))
+:extrapreds ((x1641))
+:extrapreds ((x1642))
+:extrapreds ((x1643))
+:extrapreds ((x1644))
+:extrapreds ((x1645))
+:extrapreds ((x1646))
+:extrapreds ((x1647))
+:extrapreds ((x1648))
+:extrapreds ((x1649))
+:extrapreds ((x1650))
+:extrapreds ((x1651))
+:extrapreds ((x1652))
+:extrapreds ((x1653))
+:extrapreds ((x1654))
+:extrapreds ((x1655))
+:extrapreds ((x1656))
+:extrapreds ((x1657))
+:extrapreds ((x1658))
+:extrapreds ((x1659))
+:extrapreds ((x1660))
+:extrapreds ((x1661))
+:extrapreds ((x1662))
+:extrapreds ((x1663))
+:extrapreds ((x1664))
+:extrapreds ((x1665))
+:extrapreds ((x1666))
+:extrapreds ((x1667))
+:extrapreds ((x1668))
+:extrapreds ((x1669))
+:extrapreds ((x1670))
+:extrapreds ((x1671))
+:extrapreds ((x1672))
+:extrapreds ((x1673))
+:extrapreds ((x1674))
+:extrapreds ((x1675))
+:extrapreds ((x1676))
+:extrapreds ((x1677))
+:extrapreds ((x1678))
+:extrapreds ((x1679))
+:extrapreds ((x1680))
+:extrapreds ((x1681))
+:extrapreds ((x1682))
+:extrapreds ((x1683))
+:extrapreds ((x1684))
+:extrapreds ((x1685))
+:extrapreds ((x1686))
+:extrapreds ((x1687))
+:extrapreds ((x1688))
+:extrapreds ((x1689))
+:extrapreds ((x1690))
+:extrapreds ((x1691))
+:extrapreds ((x1692))
+:extrapreds ((x1693))
+:extrapreds ((x1694))
+:extrapreds ((x1695))
+:extrapreds ((x1696))
+:extrapreds ((x1697))
+:extrapreds ((x1698))
+:extrapreds ((x1699))
+:extrapreds ((x1700))
+:extrapreds ((x1701))
+:extrapreds ((x1702))
+:extrapreds ((x1703))
+:extrapreds ((x1704))
+:extrapreds ((x1705))
+:extrapreds ((x1706))
+:extrapreds ((x1707))
+:extrapreds ((x1708))
+:extrapreds ((x1709))
+:extrapreds ((x1710))
+:extrapreds ((x1711))
+:extrapreds ((x1712))
+:extrapreds ((x1713))
+:extrapreds ((x1714))
+:extrapreds ((x1715))
+:extrapreds ((x1716))
+:extrapreds ((x1717))
+:extrapreds ((x1718))
+:extrapreds ((x1719))
+:extrapreds ((x1720))
+:extrapreds ((x1721))
+:extrapreds ((x1722))
+:extrapreds ((x1723))
+:extrapreds ((x1724))
+:extrapreds ((x1725))
+:extrapreds ((x1726))
+:extrapreds ((x1727))
+:extrapreds ((x1728))
+:extrapreds ((x1729))
+:extrapreds ((x1730))
+:extrapreds ((x1731))
+:extrapreds ((x1732))
+:extrapreds ((x1733))
+:extrapreds ((x1734))
+:extrapreds ((x1735))
+:extrapreds ((x1736))
+:extrapreds ((x1737))
+:extrapreds ((x1738))
+:extrapreds ((x1739))
+:extrapreds ((x1740))
+:extrapreds ((x1741))
+:extrapreds ((x1742))
+:extrapreds ((x1743))
+:extrapreds ((x1744))
+:extrapreds ((x1745))
+:extrapreds ((x1746))
+:extrapreds ((x1747))
+:extrapreds ((x1748))
+:extrapreds ((x1749))
+:extrapreds ((x1750))
+:extrapreds ((x1751))
+:extrapreds ((x1752))
+:extrapreds ((x1753))
+:extrapreds ((x1754))
+:extrapreds ((x1755))
+:extrapreds ((x1756))
+:extrapreds ((x1757))
+:extrapreds ((x1758))
+:extrapreds ((x1759))
+:extrapreds ((x1760))
+:extrapreds ((x1761))
+:extrapreds ((x1762))
+:extrapreds ((x1763))
+:extrapreds ((x1764))
+:extrapreds ((x1765))
+:extrapreds ((x1766))
+:extrapreds ((x1767))
+:extrapreds ((x1768))
+:extrapreds ((x1769))
+:extrapreds ((x1770))
+:extrapreds ((x1771))
+:extrapreds ((x1772))
+:extrapreds ((x1773))
+:extrapreds ((x1774))
+:extrapreds ((x1775))
+:extrapreds ((x1776))
+:extrapreds ((x1777))
+:extrapreds ((x1778))
+:extrapreds ((x1779))
+:extrapreds ((x1780))
+:extrapreds ((x1781))
+:extrapreds ((x1782))
+:extrapreds ((x1783))
+:extrapreds ((x1784))
+:extrapreds ((x1785))
+:extrapreds ((x1786))
+:extrapreds ((x1787))
+:extrapreds ((x1788))
+:extrapreds ((x1789))
+:extrapreds ((x1790))
+:extrapreds ((x1791))
+:extrapreds ((x1792))
+:extrapreds ((x1793))
+:extrapreds ((x1794))
+:extrapreds ((x1795))
+:extrapreds ((x1796))
+:extrapreds ((x1797))
+:extrapreds ((x1798))
+:extrapreds ((x1799))
+:extrapreds ((x1800))
+:extrapreds ((x1801))
+:extrapreds ((x1802))
+:extrapreds ((x1803))
+:extrapreds ((x1804))
+:extrapreds ((x1805))
+:extrapreds ((x1806))
+:extrapreds ((x1807))
+:extrapreds ((x1808))
+:extrapreds ((x1809))
+:extrapreds ((x1810))
+:extrapreds ((x1811))
+:extrapreds ((x1812))
+:extrapreds ((x1813))
+:extrapreds ((x1814))
+:extrapreds ((x1815))
+:extrapreds ((x1816))
+:extrapreds ((x1817))
+:extrapreds ((x1818))
+:extrapreds ((x1819))
+:extrapreds ((x1820))
+:extrapreds ((x1821))
+:extrapreds ((x1822))
+:extrapreds ((x1823))
+:extrapreds ((x1824))
+:extrapreds ((x1825))
+:extrapreds ((x1826))
+:extrapreds ((x1827))
+:extrapreds ((x1828))
+:extrapreds ((x1829))
+:extrapreds ((x1830))
+:extrapreds ((x1831))
+:extrapreds ((x1832))
+:extrapreds ((x1833))
+:extrapreds ((x1834))
+:extrapreds ((x1835))
+:extrapreds ((x1836))
+:extrapreds ((x1837))
+:extrapreds ((x1838))
+:extrapreds ((x1839))
+:extrapreds ((x1840))
+:extrapreds ((x1841))
+:extrapreds ((x1842))
+:extrapreds ((x1843))
+:extrapreds ((x1844))
+:extrapreds ((x1845))
+:extrapreds ((x1846))
+:extrapreds ((x1847))
+:extrapreds ((x1848))
+:extrapreds ((x1849))
+:extrapreds ((x1850))
+:extrapreds ((x1851))
+:extrapreds ((x1852))
+:extrapreds ((x1853))
+:extrapreds ((x1854))
+:extrapreds ((x1855))
+:extrapreds ((x1856))
+:extrapreds ((x1857))
+:extrapreds ((x1858))
+:extrapreds ((x1859))
+:extrapreds ((x1860))
+:extrapreds ((x1861))
+:extrapreds ((x1862))
+:extrapreds ((x1863))
+:extrapreds ((x1864))
+:extrapreds ((x1865))
+:extrapreds ((x1866))
+:extrapreds ((x1867))
+:extrapreds ((x1868))
+:extrapreds ((x1869))
+:extrapreds ((x1870))
+:extrapreds ((x1871))
+:extrapreds ((x1872))
+:extrapreds ((x1873))
+:extrapreds ((x1874))
+:extrapreds ((x1875))
+:extrapreds ((x1876))
+:extrapreds ((x1877))
+:extrapreds ((x1878))
+:extrapreds ((x1879))
+:extrapreds ((x1880))
+:extrapreds ((x1881))
+:extrapreds ((x1882))
+:extrapreds ((x1883))
+:extrapreds ((x1884))
+:extrapreds ((x1885))
+:extrapreds ((x1886))
+:extrapreds ((x1887))
+:extrapreds ((x1888))
+:extrapreds ((x1889))
+:extrapreds ((x1890))
+:extrapreds ((x1891))
+:extrapreds ((x1892))
+:extrapreds ((x1893))
+:extrapreds ((x1894))
+:extrapreds ((x1895))
+:extrapreds ((x1896))
+:extrapreds ((x1897))
+:extrapreds ((x1898))
+:extrapreds ((x1899))
+:extrapreds ((x1900))
+:extrapreds ((x1901))
+:extrapreds ((x1902))
+:extrapreds ((x1903))
+:extrapreds ((x1904))
+:extrapreds ((x1905))
+:extrapreds ((x1906))
+:extrapreds ((x1907))
+:extrapreds ((x1908))
+:extrapreds ((x1909))
+:extrapreds ((x1910))
+:extrapreds ((x1911))
+:extrapreds ((x1912))
+:extrapreds ((x1913))
+:extrapreds ((x1914))
+:extrapreds ((x1915))
+:extrapreds ((x1916))
+:extrapreds ((x1917))
+:extrapreds ((x1918))
+:extrapreds ((x1919))
+:extrapreds ((x1920))
+:extrapreds ((x1921))
+:extrapreds ((x1922))
+:extrapreds ((x1923))
+:extrapreds ((x1924))
+:extrapreds ((x1925))
+:extrapreds ((x1926))
+:extrapreds ((x1927))
+:extrapreds ((x1928))
+:extrapreds ((x1929))
+:extrapreds ((x1930))
+:extrapreds ((x1931))
+:extrapreds ((x1932))
+:extrapreds ((x1933))
+:extrapreds ((x1934))
+:extrapreds ((x1935))
+:extrapreds ((x1936))
+:extrapreds ((x1937))
+:extrapreds ((x1938))
+:extrapreds ((x1939))
+:extrapreds ((x1940))
+:extrapreds ((x1941))
+:extrapreds ((x1942))
+:extrapreds ((x1943))
+:extrapreds ((x1944))
+:extrapreds ((x1945))
+:extrapreds ((x1946))
+:extrapreds ((x1947))
+:extrapreds ((x1948))
+:extrapreds ((x1949))
+:extrapreds ((x1950))
+:extrapreds ((x1951))
+:extrapreds ((x1952))
+:extrapreds ((x1953))
+:extrapreds ((x1954))
+:extrapreds ((x1955))
+:extrapreds ((x1956))
+:extrapreds ((x1957))
+:extrapreds ((x1958))
+:extrapreds ((x1959))
+:extrapreds ((x1960))
+:extrapreds ((x1961))
+:extrapreds ((x1962))
+:extrapreds ((x1963))
+:extrapreds ((x1964))
+:extrapreds ((x1965))
+:extrapreds ((x1966))
+:extrapreds ((x1967))
+:extrapreds ((x1968))
+:extrapreds ((x1969))
+:extrapreds ((x1970))
+:extrapreds ((x1971))
+:extrapreds ((x1972))
+:extrapreds ((x1973))
+:extrapreds ((x1974))
+:extrapreds ((x1975))
+:extrapreds ((x1976))
+:extrapreds ((x1977))
+:extrapreds ((x1978))
+:extrapreds ((x1979))
+:extrapreds ((x1980))
+:extrapreds ((x1981))
+:extrapreds ((x1982))
+:extrapreds ((x1983))
+:extrapreds ((x1984))
+:extrapreds ((x1985))
+:extrapreds ((x1986))
+:extrapreds ((x1987))
+:extrapreds ((x1988))
+:extrapreds ((x1989))
+:extrapreds ((x1990))
+:extrapreds ((x1991))
+:extrapreds ((x1992))
+:extrapreds ((x1993))
+:extrapreds ((x1994))
+:extrapreds ((x1995))
+:extrapreds ((x1996))
+:extrapreds ((x1997))
+:extrapreds ((x1998))
+:extrapreds ((x1999))
+:extrapreds ((x2000))
+:extrapreds ((x2001))
+:extrapreds ((x2002))
+:extrapreds ((x2003))
+:extrapreds ((x2004))
+:extrapreds ((x2005))
+:extrapreds ((x2006))
+:extrapreds ((x2007))
+:extrapreds ((x2008))
+:extrapreds ((x2009))
+:extrapreds ((x2010))
+:extrapreds ((x2011))
+:extrapreds ((x2012))
+:extrapreds ((x2013))
+:extrapreds ((x2014))
+:extrapreds ((x2015))
+:extrapreds ((x2016))
+:extrapreds ((x2017))
+:extrapreds ((x2018))
+:extrapreds ((x2019))
+:extrapreds ((x2020))
+:extrapreds ((x2021))
+:extrapreds ((x2022))
+:extrapreds ((x2023))
+:extrapreds ((x2024))
+:extrapreds ((x2025))
+:extrapreds ((x2026))
+:extrapreds ((x2027))
+:extrapreds ((x2028))
+:extrapreds ((x2029))
+:extrapreds ((x2030))
+:extrapreds ((x2031))
+:extrapreds ((x2032))
+:extrapreds ((x2033))
+:extrapreds ((x2034))
+:extrapreds ((x2035))
+:extrapreds ((x2036))
+:extrapreds ((x2037))
+:extrapreds ((x2038))
+:extrapreds ((x2039))
+:extrapreds ((x2040))
+:extrapreds ((x2041))
+:extrapreds ((x2042))
+:extrapreds ((x2043))
+:extrapreds ((x2044))
+:extrapreds ((x2045))
+:extrapreds ((x2046))
+:extrapreds ((x2047))
+:extrapreds ((x2048))
+:extrapreds ((x2049))
+:extrapreds ((x2050))
+:extrapreds ((x2051))
+:extrapreds ((x2052))
+:extrapreds ((x2053))
+:extrapreds ((x2054))
+:extrapreds ((x2055))
+:extrapreds ((x2056))
+:extrapreds ((x2057))
+:extrapreds ((x2058))
+:extrapreds ((x2059))
+:extrapreds ((x2060))
+:extrapreds ((x2061))
+:extrapreds ((x2062))
+:extrapreds ((x2063))
+:extrapreds ((x2064))
+:extrapreds ((x2065))
+:extrapreds ((x2066))
+:extrapreds ((x2067))
+:extrapreds ((x2068))
+:extrapreds ((x2069))
+:extrapreds ((x2070))
+:extrapreds ((x2071))
+:extrapreds ((x2072))
+:extrapreds ((x2073))
+:extrapreds ((x2074))
+:extrapreds ((x2075))
+:extrapreds ((x2076))
+:extrapreds ((x2077))
+:extrapreds ((x2078))
+:extrapreds ((x2079))
+:extrapreds ((x2080))
+:extrapreds ((x2081))
+:extrapreds ((x2082))
+:extrapreds ((x2083))
+:extrapreds ((x2084))
+:extrapreds ((x2085))
+:extrapreds ((x2086))
+:extrapreds ((x2087))
+:extrapreds ((x2088))
+:extrapreds ((x2089))
+:extrapreds ((x2090))
+:extrapreds ((x2091))
+:extrapreds ((x2092))
+:extrapreds ((x2093))
+:extrapreds ((x2094))
+:extrapreds ((x2095))
+:extrapreds ((x2096))
+:extrapreds ((x2097))
+:extrapreds ((x2098))
+:extrapreds ((x2099))
+:extrapreds ((x2100))
+:extrapreds ((x2101))
+:extrapreds ((x2102))
+:extrapreds ((x2103))
+:extrapreds ((x2104))
+:extrapreds ((x2105))
+:extrapreds ((x2106))
+:extrapreds ((x2107))
+:extrapreds ((x2108))
+:extrapreds ((x2109))
+:extrapreds ((x2110))
+:extrapreds ((x2111))
+:extrapreds ((x2112))
+:extrapreds ((x2113))
+:extrapreds ((x2114))
+:extrapreds ((x2115))
+:extrapreds ((x2116))
+:extrapreds ((x2117))
+:extrapreds ((x2118))
+:extrapreds ((x2119))
+:extrapreds ((x2120))
+:extrapreds ((x2121))
+:extrapreds ((x2122))
+:extrapreds ((x2123))
+:extrapreds ((x2124))
+:extrapreds ((x2125))
+:extrapreds ((x2126))
+:extrapreds ((x2127))
+:extrapreds ((x2128))
+:extrapreds ((x2129))
+:extrapreds ((x2130))
+:extrapreds ((x2131))
+:extrapreds ((x2132))
+:extrapreds ((x2133))
+:extrapreds ((x2134))
+:extrapreds ((x2135))
+:extrapreds ((x2136))
+:extrapreds ((x2137))
+:extrapreds ((x2138))
+:extrapreds ((x2139))
+:extrapreds ((x2140))
+:extrapreds ((x2141))
+:extrapreds ((x2142))
+:extrapreds ((x2143))
+:extrapreds ((x2144))
+:extrapreds ((x2145))
+:extrapreds ((x2146))
+:extrapreds ((x2147))
+:extrapreds ((x2148))
+:extrapreds ((x2149))
+:extrapreds ((x2150))
+:extrapreds ((x2151))
+:extrapreds ((x2152))
+:extrapreds ((x2153))
+:extrapreds ((x2154))
+:extrapreds ((x2155))
+:extrapreds ((x2156))
+:extrapreds ((x2157))
+:extrapreds ((x2158))
+:extrapreds ((x2159))
+:extrapreds ((x2160))
+:extrapreds ((x2161))
+:extrapreds ((x2162))
+:extrapreds ((x2163))
+:extrapreds ((x2164))
+:extrapreds ((x2165))
+:extrapreds ((x2166))
+:extrapreds ((x2167))
+:extrapreds ((x2168))
+:extrapreds ((x2169))
+:extrapreds ((x2170))
+:extrapreds ((x2171))
+:extrapreds ((x2172))
+:extrapreds ((x2173))
+:extrapreds ((x2174))
+:extrapreds ((x2175))
+:extrapreds ((x2176))
+:extrapreds ((x2177))
+:extrapreds ((x2178))
+:extrapreds ((x2179))
+:extrapreds ((x2180))
+:extrapreds ((x2181))
+:extrapreds ((x2182))
+:extrapreds ((x2183))
+:extrapreds ((x2184))
+:extrapreds ((x2185))
+:extrapreds ((x2186))
+:extrapreds ((x2187))
+:extrapreds ((x2188))
+:extrapreds ((x2189))
+:extrapreds ((x2190))
+:extrapreds ((x2191))
+:extrapreds ((x2192))
+:extrapreds ((x2193))
+:extrapreds ((x2194))
+:extrapreds ((x2195))
+:extrapreds ((x2196))
+:extrapreds ((x2197))
+:extrapreds ((x2198))
+:extrapreds ((x2199))
+:extrapreds ((x2200))
+:extrapreds ((x2201))
+:extrapreds ((x2202))
+:extrapreds ((x2203))
+:extrapreds ((x2204))
+:extrapreds ((x2205))
+:extrapreds ((x2206))
+:extrapreds ((x2207))
+:extrapreds ((x2208))
+:extrapreds ((x2209))
+:extrapreds ((x2210))
+:extrapreds ((x2211))
+:extrapreds ((x2212))
+:extrapreds ((x2213))
+:extrapreds ((x2214))
+:extrapreds ((x2215))
+:extrapreds ((x2216))
+:extrapreds ((x2217))
+:extrapreds ((x2218))
+:extrapreds ((x2219))
+:extrapreds ((x2220))
+:extrapreds ((x2221))
+:extrapreds ((x2222))
+:extrapreds ((x2223))
+:extrapreds ((x2224))
+:extrapreds ((x2225))
+:extrapreds ((x2226))
+:extrapreds ((x2227))
+:extrapreds ((x2228))
+:extrapreds ((x2229))
+:extrapreds ((x2230))
+:extrapreds ((x2231))
+:extrapreds ((x2232))
+:extrapreds ((x2233))
+:extrapreds ((x2234))
+:extrapreds ((x2235))
+:extrapreds ((x2236))
+:extrapreds ((x2237))
+:extrapreds ((x2238))
+:extrapreds ((x2239))
+:extrapreds ((x2240))
+:extrapreds ((x2241))
+:extrapreds ((x2242))
+:extrapreds ((x2243))
+:extrapreds ((x2244))
+:extrapreds ((x2245))
+:extrapreds ((x2246))
+:extrapreds ((x2247))
+:extrapreds ((x2248))
+:extrapreds ((x2249))
+:extrapreds ((x2250))
+:extrapreds ((x2251))
+:extrapreds ((x2252))
+:extrapreds ((x2253))
+:extrapreds ((x2254))
+:extrapreds ((x2255))
+:extrapreds ((x2256))
+:extrapreds ((x2257))
+:extrapreds ((x2258))
+:extrapreds ((x2259))
+:extrapreds ((x2260))
+:extrapreds ((x2261))
+:extrapreds ((x2262))
+:extrapreds ((x2263))
+:extrapreds ((x2264))
+:extrapreds ((x2265))
+:extrapreds ((x2266))
+:extrapreds ((x2267))
+:extrapreds ((x2268))
+:extrapreds ((x2269))
+:extrapreds ((x2270))
+:extrapreds ((x2271))
+:extrapreds ((x2272))
+:extrapreds ((x2273))
+:extrapreds ((x2274))
+:extrapreds ((x2275))
+:extrapreds ((x2276))
+:extrapreds ((x2277))
+:extrapreds ((x2278))
+:extrapreds ((x2279))
+:extrapreds ((x2280))
+:extrapreds ((x2281))
+:extrapreds ((x2282))
+:extrapreds ((x2283))
+:extrapreds ((x2284))
+:extrapreds ((x2285))
+:extrapreds ((x2286))
+:extrapreds ((x2287))
+:extrapreds ((x2288))
+:extrapreds ((x2289))
+:extrapreds ((x2290))
+:extrapreds ((x2291))
+:extrapreds ((x2292))
+:extrapreds ((x2293))
+:extrapreds ((x2294))
+:extrapreds ((x2295))
+:extrapreds ((x2296))
+:extrapreds ((x2297))
+:extrapreds ((x2298))
+:extrapreds ((x2299))
+:extrapreds ((x2300))
+:extrapreds ((x2301))
+:extrapreds ((x2302))
+:extrapreds ((x2303))
+:extrapreds ((x2304))
+:extrapreds ((x2305))
+:extrapreds ((x2306))
+:extrapreds ((x2307))
+:extrapreds ((x2308))
+:extrapreds ((x2309))
+:extrapreds ((x2310))
+:extrapreds ((x2311))
+:extrapreds ((x2312))
+:extrapreds ((x2313))
+:extrapreds ((x2314))
+:extrapreds ((x2315))
+:extrapreds ((x2316))
+:extrapreds ((x2317))
+:extrapreds ((x2318))
+:extrapreds ((x2319))
+:extrapreds ((x2320))
+:extrapreds ((x2321))
+:extrapreds ((x2322))
+:extrapreds ((x2323))
+:extrapreds ((x2324))
+:extrapreds ((x2325))
+:extrapreds ((x2326))
+:extrapreds ((x2327))
+:extrapreds ((x2328))
+:extrapreds ((x2329))
+:extrapreds ((x2330))
+:extrapreds ((x2331))
+:extrapreds ((x2332))
+:extrapreds ((x2333))
+:extrapreds ((x2334))
+:extrapreds ((x2335))
+:extrapreds ((x2336))
+:extrapreds ((x2337))
+:extrapreds ((x2338))
+:extrapreds ((x2339))
+:extrapreds ((x2340))
+:extrapreds ((x2341))
+:extrapreds ((x2342))
+:extrapreds ((x2343))
+:extrapreds ((x2344))
+:extrapreds ((x2345))
+:extrapreds ((x2346))
+:extrapreds ((x2347))
+:extrapreds ((x2348))
+:extrapreds ((x2349))
+:extrapreds ((x2350))
+:extrapreds ((x2351))
+:extrapreds ((x2352))
+:extrapreds ((x2353))
+:extrapreds ((x2354))
+:extrapreds ((x2355))
+:extrapreds ((x2356))
+:extrapreds ((x2357))
+:extrapreds ((x2358))
+:extrapreds ((x2359))
+:extrapreds ((x2360))
+:extrapreds ((x2361))
+:extrapreds ((x2362))
+:extrapreds ((x2363))
+:extrapreds ((x2364))
+:extrapreds ((x2365))
+:extrapreds ((x2366))
+:extrapreds ((x2367))
+:extrapreds ((x2368))
+:extrapreds ((x2369))
+:extrapreds ((x2370))
+:extrapreds ((x2371))
+:extrapreds ((x2372))
+:extrapreds ((x2373))
+:extrapreds ((x2374))
+:extrapreds ((x2375))
+:extrapreds ((x2376))
+:extrapreds ((x2377))
+:extrapreds ((x2378))
+:extrapreds ((x2379))
+:extrapreds ((x2380))
+:extrapreds ((x2381))
+:extrapreds ((x2382))
+:extrapreds ((x2383))
+:extrapreds ((x2384))
+:extrapreds ((x2385))
+:extrapreds ((x2386))
+:extrapreds ((x2387))
+:extrapreds ((x2388))
+:extrapreds ((x2389))
+:extrapreds ((x2390))
+:extrapreds ((x2391))
+:extrapreds ((x2392))
+:extrapreds ((x2393))
+:extrapreds ((x2394))
+:extrapreds ((x2395))
+:extrapreds ((x2396))
+:extrapreds ((x2397))
+:extrapreds ((x2398))
+:extrapreds ((x2399))
+:extrapreds ((x2400))
+:extrapreds ((x2401))
+:extrapreds ((x2402))
+:extrapreds ((x2403))
+:extrapreds ((x2404))
+:extrapreds ((x2405))
+:extrapreds ((x2406))
+:extrapreds ((x2407))
+:extrapreds ((x2408))
+:extrapreds ((x2409))
+:extrapreds ((x2410))
+:extrapreds ((x2411))
+:extrapreds ((x2412))
+:extrapreds ((x2413))
+:extrapreds ((x2414))
+:extrapreds ((x2415))
+:extrapreds ((x2416))
+:extrapreds ((x2417))
+:extrapreds ((x2418))
+:extrapreds ((x2419))
+:extrapreds ((x2420))
+:extrapreds ((x2421))
+:extrapreds ((x2422))
+:extrapreds ((x2423))
+:extrapreds ((x2424))
+:extrapreds ((x2425))
+:extrapreds ((x2426))
+:extrapreds ((x2427))
+:extrapreds ((x2428))
+:extrapreds ((x2429))
+:extrapreds ((x2430))
+:extrapreds ((x2431))
+:extrapreds ((x2432))
+:extrapreds ((x2433))
+:extrapreds ((x2434))
+:extrapreds ((x2435))
+:extrapreds ((x2436))
+:extrapreds ((x2437))
+:extrapreds ((x2438))
+:extrapreds ((x2439))
+:extrapreds ((x2440))
+:extrapreds ((x2441))
+:extrapreds ((x2442))
+:extrapreds ((x2443))
+:extrapreds ((x2444))
+:extrapreds ((x2445))
+:extrapreds ((x2446))
+:extrapreds ((x2447))
+:extrapreds ((x2448))
+:extrapreds ((x2449))
+:extrapreds ((x2450))
+:extrapreds ((x2451))
+:extrapreds ((x2452))
+:extrapreds ((x2453))
+:extrapreds ((x2454))
+:extrapreds ((x2455))
+:extrapreds ((x2456))
+:extrapreds ((x2457))
+:extrapreds ((x2458))
+:extrapreds ((x2459))
+:extrapreds ((x2460))
+:extrapreds ((x2461))
+:extrapreds ((x2462))
+:extrapreds ((x2463))
+:extrapreds ((x2464))
+:extrapreds ((x2465))
+:extrapreds ((x2466))
+:extrapreds ((x2467))
+:extrapreds ((x2468))
+:extrapreds ((x2469))
+:extrapreds ((x2470))
+:extrapreds ((x2471))
+:extrapreds ((x2472))
+:extrapreds ((x2473))
+:extrapreds ((x2474))
+:extrapreds ((x2475))
+:extrapreds ((x2476))
+:extrapreds ((x2477))
+:extrapreds ((x2478))
+:extrapreds ((x2479))
+:extrapreds ((x2480))
+:extrapreds ((x2481))
+:extrapreds ((x2482))
+:extrapreds ((x2483))
+:extrapreds ((x2484))
+:extrapreds ((x2485))
+:extrapreds ((x2486))
+:extrapreds ((x2487))
+:extrapreds ((x2488))
+:extrapreds ((x2489))
+:extrapreds ((x2490))
+:extrapreds ((x2491))
+:extrapreds ((x2492))
+:extrapreds ((x2493))
+:extrapreds ((x2494))
+:extrapreds ((x2495))
+:extrapreds ((x2496))
+:extrapreds ((x2497))
+:extrapreds ((x2498))
+:extrapreds ((x2499))
+:extrapreds ((x2500))
+:extrapreds ((x2501))
+:extrapreds ((x2502))
+:extrapreds ((x2503))
+:extrapreds ((x2504))
+:extrapreds ((x2505))
+:extrapreds ((x2506))
+:extrapreds ((x2507))
+:extrapreds ((x2508))
+:extrapreds ((x2509))
+:extrapreds ((x2510))
+:extrapreds ((x2511))
+:extrapreds ((x2512))
+:extrapreds ((x2513))
+:extrapreds ((x2514))
+:extrapreds ((x2515))
+:extrapreds ((x2516))
+:extrapreds ((x2517))
+:extrapreds ((x2518))
+:extrapreds ((x2519))
+:extrapreds ((x2520))
+:extrapreds ((x2521))
+:extrapreds ((x2522))
+:extrapreds ((x2523))
+:extrapreds ((x2524))
+:extrapreds ((x2525))
+:extrapreds ((x2526))
+:extrapreds ((x2527))
+:extrapreds ((x2528))
+:extrapreds ((x2529))
+:extrapreds ((x2530))
+:extrapreds ((x2531))
+:extrapreds ((x2532))
+:extrapreds ((x2533))
+:extrapreds ((x2534))
+:extrapreds ((x2535))
+:extrapreds ((x2536))
+:extrapreds ((x2537))
+:extrapreds ((x2538))
+:extrapreds ((x2539))
+:extrapreds ((x2540))
+:extrapreds ((x2541))
+:extrapreds ((x2542))
+:extrapreds ((x2543))
+:extrapreds ((x2544))
+:extrapreds ((x2545))
+:extrapreds ((x2546))
+:extrapreds ((x2547))
+:extrapreds ((x2548))
+:extrapreds ((x2549))
+:extrapreds ((x2550))
+:extrapreds ((x2551))
+:extrapreds ((x2552))
+:extrapreds ((x2553))
+:extrapreds ((x2554))
+:extrapreds ((x2555))
+:extrapreds ((x2556))
+:extrapreds ((x2557))
+:extrapreds ((x2558))
+:extrapreds ((x2559))
+:extrapreds ((x2560))
+:extrapreds ((x2561))
+:extrapreds ((x2562))
+:extrapreds ((x2563))
+:extrapreds ((x2564))
+:extrapreds ((x2565))
+:extrapreds ((x2566))
+:extrapreds ((x2567))
+:extrapreds ((x2568))
+:extrapreds ((x2569))
+:extrapreds ((x2570))
+:extrapreds ((x2571))
+:extrapreds ((x2572))
+:extrapreds ((x2573))
+:extrapreds ((x2574))
+:extrapreds ((x2575))
+:extrapreds ((x2576))
+:extrapreds ((x2577))
+:extrapreds ((x2578))
+:extrapreds ((x2579))
+:extrapreds ((x2580))
+:extrapreds ((x2581))
+:extrapreds ((x2582))
+:extrapreds ((x2583))
+:extrapreds ((x2584))
+:extrapreds ((x2585))
+:extrapreds ((x2586))
+:extrapreds ((x2587))
+:extrapreds ((x2588))
+:extrapreds ((x2589))
+:extrapreds ((x2590))
+:extrapreds ((x2591))
+:extrapreds ((x2592))
+:extrapreds ((x2593))
+:extrapreds ((x2594))
+:extrapreds ((x2595))
+:extrapreds ((x2596))
+:extrapreds ((x2597))
+:extrapreds ((x2598))
+:extrapreds ((x2599))
+:extrapreds ((x2600))
+:extrapreds ((x2601))
+:extrapreds ((x2602))
+:extrapreds ((x2603))
+:extrapreds ((x2604))
+:extrapreds ((x2605))
+:extrapreds ((x2606))
+:extrapreds ((x2607))
+:extrapreds ((x2608))
+:extrapreds ((x2609))
+:extrapreds ((x2610))
+:extrapreds ((x2611))
+:extrapreds ((x2612))
+:extrapreds ((x2613))
+:extrapreds ((x2614))
+:extrapreds ((x2615))
+:extrapreds ((x2616))
+:extrapreds ((x2617))
+:extrapreds ((x2618))
+:extrapreds ((x2619))
+:extrapreds ((x2620))
+:extrapreds ((x2621))
+:extrapreds ((x2622))
+:extrapreds ((x2623))
+:extrapreds ((x2624))
+:extrapreds ((x2625))
+:extrapreds ((x2626))
+:extrapreds ((x2627))
+:extrapreds ((x2628))
+:extrapreds ((x2629))
+:extrapreds ((x2630))
+:extrapreds ((x2631))
+:extrapreds ((x2632))
+:extrapreds ((x2633))
+:extrapreds ((x2634))
+:extrapreds ((x2635))
+:extrapreds ((x2636))
+:extrapreds ((x2637))
+:extrapreds ((x2638))
+:extrapreds ((x2639))
+:extrapreds ((x2640))
+:extrapreds ((x2641))
+:extrapreds ((x2642))
+:extrapreds ((x2643))
+:extrapreds ((x2644))
+:extrapreds ((x2645))
+:extrapreds ((x2646))
+:extrapreds ((x2647))
+:extrapreds ((x2648))
+:extrapreds ((x2649))
+:extrapreds ((x2650))
+:extrapreds ((x2651))
+:extrapreds ((x2652))
+:extrapreds ((x2653))
+:extrapreds ((x2654))
+:extrapreds ((x2655))
+:extrapreds ((x2656))
+:extrapreds ((x2657))
+:extrapreds ((x2658))
+:extrapreds ((x2659))
+:extrapreds ((x2660))
+:extrapreds ((x2661))
+:extrapreds ((x2662))
+:extrapreds ((x2663))
+:extrapreds ((x2664))
+:extrapreds ((x2665))
+:extrapreds ((x2666))
+:extrapreds ((x2667))
+:extrapreds ((x2668))
+:extrapreds ((x2669))
+:extrapreds ((x2670))
+:extrapreds ((x2671))
+:extrapreds ((x2672))
+:extrapreds ((x2673))
+:extrapreds ((x2674))
+:extrapreds ((x2675))
+:extrapreds ((x2676))
+:extrapreds ((x2677))
+:extrapreds ((x2678))
+:extrapreds ((x2679))
+:extrapreds ((x2680))
+:extrapreds ((x2681))
+:extrapreds ((x2682))
+:extrapreds ((x2683))
+:extrapreds ((x2684))
+:extrapreds ((x2685))
+:extrapreds ((x2686))
+:extrapreds ((x2687))
+:extrapreds ((x2688))
+:extrapreds ((x2689))
+:extrapreds ((x2690))
+:extrapreds ((x2691))
+:extrapreds ((x2692))
+:extrapreds ((x2693))
+:extrapreds ((x2694))
+:extrapreds ((x2695))
+:extrapreds ((x2696))
+:extrapreds ((x2697))
+:extrapreds ((x2698))
+:extrapreds ((x2699))
+:extrapreds ((x2700))
+:extrapreds ((x2701))
+:extrapreds ((x2702))
+:extrapreds ((x2703))
+:extrapreds ((x2704))
+:extrapreds ((x2705))
+:extrapreds ((x2706))
+:extrapreds ((x2707))
+:extrapreds ((x2708))
+:extrapreds ((x2709))
+:extrapreds ((x2710))
+:extrapreds ((x2711))
+:extrapreds ((x2712))
+:extrapreds ((x2713))
+:extrapreds ((x2714))
+:extrapreds ((x2715))
+:extrapreds ((x2716))
+:extrapreds ((x2717))
+:extrapreds ((x2718))
+:extrapreds ((x2719))
+:extrapreds ((x2720))
+:extrapreds ((x2721))
+:extrapreds ((x2722))
+:extrapreds ((x2723))
+:extrapreds ((x2724))
+:extrapreds ((x2725))
+:extrapreds ((x2726))
+:extrapreds ((x2727))
+:extrapreds ((x2728))
+:extrapreds ((x2729))
+:extrapreds ((x2730))
+:extrapreds ((x2731))
+:extrapreds ((x2732))
+:extrapreds ((x2733))
+:extrapreds ((x2734))
+:extrapreds ((x2735))
+:extrapreds ((x2736))
+:extrapreds ((x2737))
+:extrapreds ((x2738))
+:extrapreds ((x2739))
+:extrapreds ((x2740))
+:extrapreds ((x2741))
+:extrapreds ((x2742))
+:extrapreds ((x2743))
+:extrapreds ((x2744))
+:extrapreds ((x2745))
+:extrapreds ((x2746))
+:extrapreds ((x2747))
+:extrapreds ((x2748))
+:extrapreds ((x2749))
+:extrapreds ((x2750))
+:extrapreds ((x2751))
+:extrapreds ((x2752))
+:extrapreds ((x2753))
+:extrapreds ((x2754))
+:extrapreds ((x2755))
+:extrapreds ((x2756))
+:extrapreds ((x2757))
+:extrapreds ((x2758))
+:extrapreds ((x2759))
+:extrapreds ((x2760))
+:extrapreds ((x2761))
+:extrapreds ((x2762))
+:extrapreds ((x2763))
+:extrapreds ((x2764))
+:extrapreds ((x2765))
+:extrapreds ((x2766))
+:extrapreds ((x2767))
+:extrapreds ((x2768))
+:extrapreds ((x2769))
+:extrapreds ((x2770))
+:extrapreds ((x2771))
+:extrapreds ((x2772))
+:extrapreds ((x2773))
+:extrapreds ((x2774))
+:extrapreds ((x2775))
+:extrapreds ((x2776))
+:extrapreds ((x2777))
+:extrapreds ((x2778))
+:extrapreds ((x2779))
+:extrapreds ((x2780))
+:extrapreds ((x2781))
+:extrapreds ((x2782))
+:extrapreds ((x2783))
+:extrapreds ((x2784))
+:extrapreds ((x2785))
+:extrapreds ((x2786))
+:extrapreds ((x2787))
+:extrapreds ((x2788))
+:extrapreds ((x2789))
+:extrapreds ((x2790))
+:extrapreds ((x2791))
+:extrapreds ((x2792))
+:extrapreds ((x2793))
+:extrapreds ((x2794))
+:extrapreds ((x2795))
+:extrapreds ((x2796))
+:extrapreds ((x2797))
+:extrapreds ((x2798))
+:extrapreds ((x2799))
+:extrapreds ((x2800))
+:extrapreds ((x2801))
+:extrapreds ((x2802))
+:extrapreds ((x2803))
+:extrapreds ((x2804))
+:extrapreds ((x2805))
+:extrapreds ((x2806))
+:extrapreds ((x2807))
+:extrapreds ((x2808))
+:extrapreds ((x2809))
+:extrapreds ((x2810))
+:extrapreds ((x2811))
+:extrapreds ((x2812))
+:extrapreds ((x2813))
+:extrapreds ((x2814))
+:extrapreds ((x2815))
+:extrapreds ((x2816))
+:extrapreds ((x2817))
+:extrapreds ((x2818))
+:extrapreds ((x2819))
+:extrapreds ((x2820))
+:extrapreds ((x2821))
+:extrapreds ((x2822))
+:extrapreds ((x2823))
+:extrapreds ((x2824))
+:extrapreds ((x2825))
+:extrapreds ((x2826))
+:extrapreds ((x2827))
+:extrapreds ((x2828))
+:extrapreds ((x2829))
+:extrapreds ((x2830))
+:extrapreds ((x2831))
+:extrapreds ((x2832))
+:extrapreds ((x2833))
+:extrapreds ((x2834))
+:extrapreds ((x2835))
+:extrapreds ((x2836))
+:extrapreds ((x2837))
+:extrapreds ((x2838))
+:extrapreds ((x2839))
+:extrapreds ((x2840))
+:extrapreds ((x2841))
+:extrapreds ((x2842))
+:extrapreds ((x2843))
+:extrapreds ((x2844))
+:extrapreds ((x2845))
+:extrapreds ((x2846))
+:extrapreds ((x2847))
+:extrapreds ((x2848))
+:extrapreds ((x2849))
+:extrapreds ((x2850))
+:extrapreds ((x2851))
+:extrapreds ((x2852))
+:extrapreds ((x2853))
+:extrapreds ((x2854))
+:extrapreds ((x2855))
+:extrapreds ((x2856))
+:extrapreds ((x2857))
+:extrapreds ((x2858))
+:extrapreds ((x2859))
+:extrapreds ((x2860))
+:extrapreds ((x2861))
+:extrapreds ((x2862))
+:extrapreds ((x2863))
+:extrapreds ((x2864))
+:extrapreds ((x2865))
+:extrapreds ((x2866))
+:extrapreds ((x2867))
+:extrapreds ((x2868))
+:extrapreds ((x2869))
+:extrapreds ((x2870))
+:extrapreds ((x2871))
+:extrapreds ((x2872))
+:extrapreds ((x2873))
+:extrapreds ((x2874))
+:extrapreds ((x2875))
+:extrapreds ((x2876))
+:extrapreds ((x2877))
+:extrapreds ((x2878))
+:extrapreds ((x2879))
+:extrapreds ((x2880))
+:extrapreds ((x2881))
+:extrapreds ((x2882))
+:extrapreds ((x2883))
+:extrapreds ((x2884))
+:extrapreds ((x2885))
+:extrapreds ((x2886))
+:extrapreds ((x2887))
+:extrapreds ((x2888))
+:extrapreds ((x2889))
+:extrapreds ((x2890))
+:extrapreds ((x2891))
+:extrapreds ((x2892))
+:extrapreds ((x2893))
+:extrapreds ((x2894))
+:extrapreds ((x2895))
+:extrapreds ((x2896))
+:extrapreds ((x2897))
+:extrapreds ((x2898))
+:extrapreds ((x2899))
+:extrapreds ((x2900))
+:extrapreds ((x2901))
+:extrapreds ((x2902))
+:extrapreds ((x2903))
+:extrapreds ((x2904))
+:extrapreds ((x2905))
+:extrapreds ((x2906))
+:extrapreds ((x2907))
+:extrapreds ((x2908))
+:extrapreds ((x2909))
+:extrapreds ((x2910))
+:extrapreds ((x2911))
+:extrapreds ((x2912))
+:extrapreds ((x2913))
+:extrapreds ((x2914))
+:extrapreds ((x2915))
+:extrapreds ((x2916))
+:extrapreds ((x2917))
+:extrapreds ((x2918))
+:extrapreds ((x2919))
+:extrapreds ((x2920))
+:extrapreds ((x2921))
+:extrapreds ((x2922))
+:extrapreds ((x2923))
+:extrapreds ((x2924))
+:extrapreds ((x2925))
+:extrapreds ((x2926))
+:extrapreds ((x2927))
+:extrapreds ((x2928))
+:extrapreds ((x2929))
+:extrapreds ((x2930))
+:extrapreds ((x2931))
+:extrapreds ((x2932))
+:extrapreds ((x2933))
+:extrapreds ((x2934))
+:extrapreds ((x2935))
+:extrapreds ((x2936))
+:extrapreds ((x2937))
+:extrapreds ((x2938))
+:extrapreds ((x2939))
+:extrapreds ((x2940))
+:extrapreds ((x2941))
+:extrapreds ((x2942))
+:extrapreds ((x2943))
+:extrapreds ((x2944))
+:extrapreds ((x2945))
+:extrapreds ((x2946))
+:extrapreds ((x2947))
+:extrapreds ((x2948))
+:extrapreds ((x2949))
+:extrapreds ((x2950))
+:extrapreds ((x2951))
+:extrapreds ((x2952))
+:extrapreds ((x2953))
+:extrapreds ((x2954))
+:extrapreds ((x2955))
+:extrapreds ((x2956))
+:extrapreds ((x2957))
+:extrapreds ((x2958))
+:extrapreds ((x2959))
+:extrapreds ((x2960))
+:extrapreds ((x2961))
+:extrapreds ((x2962))
+:extrapreds ((x2963))
+:extrapreds ((x2964))
+:extrapreds ((x2965))
+:extrapreds ((x2966))
+:extrapreds ((x2967))
+:extrapreds ((x2968))
+:extrapreds ((x2969))
+:extrapreds ((x2970))
+:extrapreds ((x2971))
+:extrapreds ((x2972))
+:extrapreds ((x2973))
+:extrapreds ((x2974))
+:extrapreds ((x2975))
+:extrapreds ((x2976))
+:extrapreds ((x2977))
+:extrapreds ((x2978))
+:extrapreds ((x2979))
+:extrapreds ((x2980))
+:extrapreds ((x2981))
+:extrapreds ((x2982))
+:extrapreds ((x2983))
+:extrapreds ((x2984))
+:extrapreds ((x2985))
+:extrapreds ((x2986))
+:extrapreds ((x2987))
+:extrapreds ((x2988))
+:extrapreds ((x2989))
+:extrapreds ((x2990))
+:extrapreds ((x2991))
+:extrapreds ((x2992))
+:extrapreds ((x2993))
+:extrapreds ((x2994))
+:extrapreds ((x2995))
+:extrapreds ((x2996))
+:extrapreds ((x2997))
+:extrapreds ((x2998))
+:extrapreds ((x2999))
+:extrapreds ((x3000))
+:extrapreds ((x3001))
+:extrapreds ((x3002))
+:extrapreds ((x3003))
+:extrapreds ((x3004))
+:extrapreds ((x3005))
+:extrapreds ((x3006))
+:extrapreds ((x3007))
+:extrapreds ((x3008))
+:extrapreds ((x3009))
+:extrapreds ((x3010))
+:extrapreds ((x3011))
+:extrapreds ((x3012))
+:extrapreds ((x3013))
+:extrapreds ((x3014))
+:extrapreds ((x3015))
+:extrapreds ((x3016))
+:extrapreds ((x3017))
+:extrapreds ((x3018))
+:extrapreds ((x3019))
+:extrapreds ((x3020))
+:extrapreds ((x3021))
+:extrapreds ((x3022))
+:extrapreds ((x3023))
+:extrapreds ((x3024))
+:extrapreds ((x3025))
+:extrapreds ((x3026))
+:extrapreds ((x3027))
+:extrapreds ((x3028))
+:extrapreds ((x3029))
+:extrapreds ((x3030))
+:extrapreds ((x3031))
+:extrapreds ((x3032))
+:extrapreds ((x3033))
+:extrapreds ((x3034))
+:extrapreds ((x3035))
+:extrapreds ((x3036))
+:extrapreds ((x3037))
+:extrapreds ((x3038))
+:extrapreds ((x3039))
+:extrapreds ((x3040))
+:extrapreds ((x3041))
+:extrapreds ((x3042))
+:extrapreds ((x3043))
+:extrapreds ((x3044))
+:extrapreds ((x3045))
+:extrapreds ((x3046))
+:extrapreds ((x3047))
+:extrapreds ((x3048))
+:extrapreds ((x3049))
+:extrapreds ((x3050))
+:extrapreds ((x3051))
+:extrapreds ((x3052))
+:extrapreds ((x3053))
+:extrapreds ((x3054))
+:extrapreds ((x3055))
+:extrapreds ((x3056))
+:extrapreds ((x3057))
+:extrapreds ((x3058))
+:extrapreds ((x3059))
+:extrapreds ((x3060))
+:extrapreds ((x3061))
+:extrapreds ((x3062))
+:extrapreds ((x3063))
+:extrapreds ((x3064))
+:extrapreds ((x3065))
+:extrapreds ((x3066))
+:extrapreds ((x3067))
+:extrapreds ((x3068))
+:extrapreds ((x3069))
+:extrapreds ((x3070))
+:extrapreds ((x3071))
+:extrapreds ((x3072))
+:extrapreds ((x3073))
+:extrapreds ((x3074))
+:extrapreds ((x3075))
+:extrapreds ((x3076))
+:extrapreds ((x3077))
+:extrapreds ((x3078))
+:extrapreds ((x3079))
+:extrapreds ((x3080))
+:extrapreds ((x3081))
+:extrapreds ((x3082))
+:extrapreds ((x3083))
+:extrapreds ((x3084))
+:extrapreds ((x3085))
+:extrapreds ((x3086))
+:extrapreds ((x3087))
+:extrapreds ((x3088))
+:extrapreds ((x3089))
+:extrapreds ((x3090))
+:extrapreds ((x3091))
+:extrapreds ((x3092))
+:extrapreds ((x3093))
+:extrapreds ((x3094))
+:extrapreds ((x3095))
+:extrapreds ((x3096))
+:extrapreds ((x3097))
+:extrapreds ((x3098))
+:extrapreds ((x3099))
+:extrapreds ((x3100))
+:extrapreds ((x3101))
+:extrapreds ((x3102))
+:extrapreds ((x3103))
+:extrapreds ((x3104))
+:extrapreds ((x3105))
+:extrapreds ((x3106))
+:extrapreds ((x3107))
+:extrapreds ((x3108))
+:extrapreds ((x3109))
+:extrapreds ((x3110))
+:extrapreds ((x3111))
+:extrapreds ((x3112))
+:extrapreds ((x3113))
+:extrapreds ((x3114))
+:extrapreds ((x3115))
+:extrapreds ((x3116))
+:extrapreds ((x3117))
+:extrapreds ((x3118))
+:extrapreds ((x3119))
+:extrapreds ((x3120))
+:extrapreds ((x3121))
+:extrapreds ((x3122))
+:extrapreds ((x3123))
+:extrapreds ((x3124))
+:extrapreds ((x3125))
+:extrapreds ((x3126))
+:extrapreds ((x3127))
+:extrapreds ((x3128))
+:extrapreds ((x3129))
+:extrapreds ((x3130))
+:extrapreds ((x3131))
+:extrapreds ((x3132))
+:extrapreds ((x3133))
+:extrapreds ((x3134))
+:extrapreds ((x3135))
+:extrapreds ((x3136))
+:extrapreds ((x3137))
+:extrapreds ((x3138))
+:extrapreds ((x3139))
+:extrapreds ((x3140))
+:extrapreds ((x3141))
+:extrapreds ((x3142))
+:extrapreds ((x3143))
+:extrapreds ((x3144))
+:extrapreds ((x3145))
+:extrapreds ((x3146))
+:extrapreds ((x3147))
+:extrapreds ((x3148))
+:extrapreds ((x3149))
+:extrapreds ((x3150))
+:extrapreds ((x3151))
+:extrapreds ((x3152))
+:extrapreds ((x3153))
+:extrapreds ((x3154))
+:extrapreds ((x3155))
+:extrapreds ((x3156))
+:extrapreds ((x3157))
+:extrapreds ((x3158))
+:extrapreds ((x3159))
+:extrapreds ((x3160))
+:extrapreds ((x3161))
+:extrapreds ((x3162))
+:extrapreds ((x3163))
+:extrapreds ((x3164))
+:extrapreds ((x3165))
+:extrapreds ((x3166))
+:extrapreds ((x3167))
+:extrapreds ((x3168))
+:extrapreds ((x3169))
+:extrapreds ((x3170))
+:extrapreds ((x3171))
+:extrapreds ((x3172))
+:extrapreds ((x3173))
+:extrapreds ((x3174))
+:extrapreds ((x3175))
+:extrapreds ((x3176))
+:extrapreds ((x3177))
+:extrapreds ((x3178))
+:extrapreds ((x3179))
+:extrapreds ((x3180))
+:extrapreds ((x3181))
+:extrapreds ((x3182))
+:extrapreds ((x3183))
+:extrapreds ((x3184))
+:extrapreds ((x3185))
+:extrapreds ((x3186))
+:extrapreds ((x3187))
+:extrapreds ((x3188))
+:extrapreds ((x3189))
+:extrapreds ((x3190))
+:extrapreds ((x3191))
+:extrapreds ((x3192))
+:extrapreds ((x3193))
+:extrapreds ((x3194))
+:extrapreds ((x3195))
+:extrapreds ((x3196))
+:extrapreds ((x3197))
+:extrapreds ((x3198))
+:extrapreds ((x3199))
+:extrapreds ((x3200))
+:extrapreds ((x3201))
+:extrapreds ((x3202))
+:extrapreds ((x3203))
+:extrapreds ((x3204))
+:extrapreds ((x3205))
+:extrapreds ((x3206))
+:extrapreds ((x3207))
+:extrapreds ((x3208))
+:extrapreds ((x3209))
+:extrapreds ((x3210))
+:extrapreds ((x3211))
+:extrapreds ((x3212))
+:extrapreds ((x3213))
+:extrapreds ((x3214))
+:extrapreds ((x3215))
+:extrapreds ((x3216))
+:extrapreds ((x3217))
+:extrapreds ((x3218))
+:extrapreds ((x3219))
+:extrapreds ((x3220))
+:extrapreds ((x3221))
+:extrapreds ((x3222))
+:extrapreds ((x3223))
+:extrapreds ((x3224))
+:extrapreds ((x3225))
+:extrapreds ((x3226))
+:extrapreds ((x3227))
+:extrapreds ((x3228))
+:extrapreds ((x3229))
+:extrapreds ((x3230))
+:extrapreds ((x3231))
+:extrapreds ((x3232))
+:extrapreds ((x3233))
+:extrapreds ((x3234))
+:extrapreds ((x3235))
+:extrapreds ((x3236))
+:extrapreds ((x3237))
+:extrapreds ((x3238))
+:extrapreds ((x3239))
+:extrapreds ((x3240))
+:extrapreds ((x3241))
+:extrapreds ((x3242))
+:extrapreds ((x3243))
+:extrapreds ((x3244))
+:extrapreds ((x3245))
+:extrapreds ((x3246))
+:extrapreds ((x3247))
+:extrapreds ((x3248))
+:extrapreds ((x3249))
+:extrapreds ((x3250))
+:extrapreds ((x3251))
+:extrapreds ((x3252))
+:extrapreds ((x3253))
+:extrapreds ((x3254))
+:extrapreds ((x3255))
+:extrapreds ((x3256))
+:extrapreds ((x3257))
+:extrapreds ((x3258))
+:extrapreds ((x3259))
+:extrapreds ((x3260))
+:extrapreds ((x3261))
+:extrapreds ((x3262))
+:extrapreds ((x3263))
+:extrapreds ((x3264))
+:extrapreds ((x3265))
+:extrapreds ((x3266))
+:extrapreds ((x3267))
+:extrapreds ((x3268))
+:extrapreds ((x3269))
+:extrapreds ((x3270))
+:extrapreds ((x3271))
+:extrapreds ((x3272))
+:extrapreds ((x3273))
+:extrapreds ((x3274))
+:extrapreds ((x3275))
+:extrapreds ((x3276))
+:extrapreds ((x3277))
+:extrapreds ((x3278))
+:extrapreds ((x3279))
+:extrapreds ((x3280))
+:extrapreds ((x3281))
+:extrapreds ((x3282))
+:extrapreds ((x3283))
+:extrapreds ((x3284))
+:extrapreds ((x3285))
+:extrapreds ((x3286))
+:extrapreds ((x3287))
+:extrapreds ((x3288))
+:extrapreds ((x3289))
+:extrapreds ((x3290))
+:extrapreds ((x3291))
+:extrapreds ((x3292))
+:extrapreds ((x3293))
+:extrapreds ((x3294))
+:extrapreds ((x3295))
+:extrapreds ((x3296))
+:extrapreds ((x3297))
+:extrapreds ((x3298))
+:extrapreds ((x3299))
+:extrapreds ((x3300))
+:extrapreds ((x3301))
+:extrapreds ((x3302))
+:extrapreds ((x3303))
+:extrapreds ((x3304))
+:extrapreds ((x3305))
+:extrapreds ((x3306))
+:extrapreds ((x3307))
+:extrapreds ((x3308))
+:extrapreds ((x3309))
+:extrapreds ((x3310))
+:extrapreds ((x3311))
+:extrapreds ((x3312))
+:extrapreds ((x3313))
+:extrapreds ((x3314))
+:extrapreds ((x3315))
+:extrapreds ((x3316))
+:extrapreds ((x3317))
+:extrapreds ((x3318))
+:extrapreds ((x3319))
+:extrapreds ((x3320))
+:extrapreds ((x3321))
+:extrapreds ((x3322))
+:extrapreds ((x3323))
+:extrapreds ((x3324))
+:extrapreds ((x3325))
+:extrapreds ((x3326))
+:extrapreds ((x3327))
+:extrapreds ((x3328))
+:extrapreds ((x3329))
+:extrapreds ((x3330))
+:extrapreds ((x3331))
+:extrapreds ((x3332))
+:extrapreds ((x3333))
+:extrapreds ((x3334))
+:extrapreds ((x3335))
+:extrapreds ((x3336))
+:extrapreds ((x3337))
+:extrapreds ((x3338))
+:extrapreds ((x3339))
+:extrapreds ((x3340))
+:extrapreds ((x3341))
+:extrapreds ((x3342))
+:extrapreds ((x3343))
+:extrapreds ((x3344))
+:extrapreds ((x3345))
+:extrapreds ((x3346))
+:extrapreds ((x3347))
+:extrapreds ((x3348))
+:extrapreds ((x3349))
+:extrapreds ((x3350))
+:extrapreds ((x3351))
+:extrapreds ((x3352))
+:extrapreds ((x3353))
+:extrapreds ((x3354))
+:extrapreds ((x3355))
+:extrapreds ((x3356))
+:extrapreds ((x3357))
+:extrapreds ((x3358))
+:extrapreds ((x3359))
+:extrapreds ((x3360))
+:extrapreds ((x3361))
+:extrapreds ((x3362))
+:extrapreds ((x3363))
+:extrapreds ((x3364))
+:extrapreds ((x3365))
+:extrapreds ((x3366))
+:extrapreds ((x3367))
+:extrapreds ((x3368))
+:extrapreds ((x3369))
+:extrapreds ((x3370))
+:extrapreds ((x3371))
+:extrapreds ((x3372))
+:extrapreds ((x3373))
+:extrapreds ((x3374))
+:extrapreds ((x3375))
+:extrapreds ((x3376))
+:extrapreds ((x3377))
+:extrapreds ((x3378))
+:extrapreds ((x3379))
+:extrapreds ((x3380))
+:extrapreds ((x3381))
+:extrapreds ((x3382))
+:extrapreds ((x3383))
+:extrapreds ((x3384))
+:extrapreds ((x3385))
+:extrapreds ((x3386))
+:extrapreds ((x3387))
+:extrapreds ((x3388))
+:extrapreds ((x3389))
+:extrapreds ((x3390))
+:extrapreds ((x3391))
+:extrapreds ((x3392))
+:extrapreds ((x3393))
+:extrapreds ((x3394))
+:extrapreds ((x3395))
+:extrapreds ((x3396))
+:extrapreds ((x3397))
+:extrapreds ((x3398))
+:extrapreds ((x3399))
+:extrapreds ((x3400))
+:extrapreds ((x3401))
+:extrapreds ((x3402))
+:extrapreds ((x3403))
+:extrapreds ((x3404))
+:extrapreds ((x3405))
+:extrapreds ((x3406))
+:extrapreds ((x3407))
+:extrapreds ((x3408))
+:extrapreds ((x3409))
+:extrapreds ((x3410))
+:extrapreds ((x3411))
+:extrapreds ((x3412))
+:extrapreds ((x3413))
+:extrapreds ((x3414))
+:extrapreds ((x3415))
+:extrapreds ((x3416))
+:extrapreds ((x3417))
+:extrapreds ((x3418))
+:extrapreds ((x3419))
+:extrapreds ((x3420))
+:extrapreds ((x3421))
+:extrapreds ((x3422))
+:extrapreds ((x3423))
+:extrapreds ((x3424))
+:extrapreds ((x3425))
+:extrapreds ((x3426))
+:extrapreds ((x3427))
+:extrapreds ((x3428))
+:extrapreds ((x3429))
+:extrapreds ((x3430))
+:extrapreds ((x3431))
+:extrapreds ((x3432))
+:extrapreds ((x3433))
+:extrapreds ((x3434))
+:extrapreds ((x3435))
+:extrapreds ((x3436))
+:extrapreds ((x3437))
+:extrapreds ((x3438))
+:extrapreds ((x3439))
+:extrapreds ((x3440))
+:extrapreds ((x3441))
+:extrapreds ((x3442))
+:extrapreds ((x3443))
+:extrapreds ((x3444))
+:extrapreds ((x3445))
+:extrapreds ((x3446))
+:extrapreds ((x3447))
+:extrapreds ((x3448))
+:extrapreds ((x3449))
+:extrapreds ((x3450))
+:extrapreds ((x3451))
+:extrapreds ((x3452))
+:extrapreds ((x3453))
+:extrapreds ((x3454))
+:extrapreds ((x3455))
+:extrapreds ((x3456))
+:extrapreds ((x3457))
+:extrapreds ((x3458))
+:extrapreds ((x3459))
+:extrapreds ((x3460))
+:extrapreds ((x3461))
+:extrapreds ((x3462))
+:extrapreds ((x3463))
+:extrapreds ((x3464))
+:extrapreds ((x3465))
+:extrapreds ((x3466))
+:extrapreds ((x3467))
+:extrapreds ((x3468))
+:extrapreds ((x3469))
+:extrapreds ((x3470))
+:extrapreds ((x3471))
+:extrapreds ((x3472))
+:extrapreds ((x3473))
+:extrapreds ((x3474))
+:extrapreds ((x3475))
+:extrapreds ((x3476))
+:extrapreds ((x3477))
+:extrapreds ((x3478))
+:extrapreds ((x3479))
+:extrapreds ((x3480))
+:extrapreds ((x3481))
+:extrapreds ((x3482))
+:extrapreds ((x3483))
+:extrapreds ((x3484))
+:extrapreds ((x3485))
+:extrapreds ((x3486))
+:extrapreds ((x3487))
+:extrapreds ((x3488))
+:extrapreds ((x3489))
+:extrapreds ((x3490))
+:extrapreds ((x3491))
+:extrapreds ((x3492))
+:extrapreds ((x3493))
+:extrapreds ((x3494))
+:extrapreds ((x3495))
+:extrapreds ((x3496))
+:extrapreds ((x3497))
+:extrapreds ((x3498))
+:extrapreds ((x3499))
+:extrapreds ((x3500))
+:extrapreds ((x3501))
+:extrapreds ((x3502))
+:extrapreds ((x3503))
+:extrapreds ((x3504))
+:extrapreds ((x3505))
+:extrapreds ((x3506))
+:extrapreds ((x3507))
+:extrapreds ((x3508))
+:extrapreds ((x3509))
+:extrapreds ((x3510))
+:extrapreds ((x3511))
+:extrapreds ((x3512))
+:extrapreds ((x3513))
+:extrapreds ((x3514))
+:extrapreds ((x3515))
+:extrapreds ((x3516))
+:extrapreds ((x3517))
+:extrapreds ((x3518))
+:extrapreds ((x3519))
+:extrapreds ((x3520))
+:extrapreds ((x3521))
+:extrapreds ((x3522))
+:extrapreds ((x3523))
+:extrapreds ((x3524))
+:extrapreds ((x3525))
+:extrapreds ((x3526))
+:extrapreds ((x3527))
+:extrapreds ((x3528))
+:extrapreds ((x3529))
+:extrapreds ((x3530))
+:extrapreds ((x3531))
+:extrapreds ((x3532))
+:extrapreds ((x3533))
+:extrapreds ((x3534))
+:extrapreds ((x3535))
+:extrapreds ((x3536))
+:extrapreds ((x3537))
+:extrapreds ((x3538))
+:extrapreds ((x3539))
+:extrapreds ((x3540))
+:extrapreds ((x3541))
+:extrapreds ((x3542))
+:extrapreds ((x3543))
+:extrapreds ((x3544))
+:extrapreds ((x3545))
+:extrapreds ((x3546))
+:extrapreds ((x3547))
+:extrapreds ((x3548))
+:extrapreds ((x3549))
+:extrapreds ((x3550))
+:extrapreds ((x3551))
+:extrapreds ((x3552))
+:extrapreds ((x3553))
+:extrapreds ((x3554))
+:extrapreds ((x3555))
+:extrapreds ((x3556))
+:extrapreds ((x3557))
+:extrapreds ((x3558))
+:extrapreds ((x3559))
+:extrapreds ((x3560))
+:extrapreds ((x3561))
+:extrapreds ((x3562))
+:extrapreds ((x3563))
+:extrapreds ((x3564))
+:extrapreds ((x3565))
+:extrapreds ((x3566))
+:extrapreds ((x3567))
+:extrapreds ((x3568))
+:extrapreds ((x3569))
+:extrapreds ((x3570))
+:extrapreds ((x3571))
+:extrapreds ((x3572))
+:extrapreds ((x3573))
+:extrapreds ((x3574))
+:extrapreds ((x3575))
+:extrapreds ((x3576))
+:extrapreds ((x3577))
+:extrapreds ((x3578))
+:extrapreds ((x3579))
+:extrapreds ((x3580))
+:extrapreds ((x3581))
+:extrapreds ((x3582))
+:extrapreds ((x3583))
+:extrapreds ((x3584))
+:extrapreds ((x3585))
+:extrapreds ((x3586))
+:extrapreds ((x3587))
+:extrapreds ((x3588))
+:extrapreds ((x3589))
+:extrapreds ((x3590))
+:extrapreds ((x3591))
+:extrapreds ((x3592))
+:extrapreds ((x3593))
+:extrapreds ((x3594))
+:extrapreds ((x3595))
+:extrapreds ((x3596))
+:extrapreds ((x3597))
+:extrapreds ((x3598))
+:extrapreds ((x3599))
+:extrapreds ((x3600))
+:extrapreds ((x3601))
+:extrapreds ((x3602))
+:extrapreds ((x3603))
+:extrapreds ((x3604))
+:extrapreds ((x3605))
+:extrapreds ((x3606))
+:extrapreds ((x3607))
+:extrapreds ((x3608))
+:extrapreds ((x3609))
+:extrapreds ((x3610))
+:extrapreds ((x3611))
+:extrapreds ((x3612))
+:extrapreds ((x3613))
+:extrapreds ((x3614))
+:extrapreds ((x3615))
+:extrapreds ((x3616))
+:extrapreds ((x3617))
+:extrapreds ((x3618))
+:extrapreds ((x3619))
+:extrapreds ((x3620))
+:extrapreds ((x3621))
+:extrapreds ((x3622))
+:extrapreds ((x3623))
+:extrapreds ((x3624))
+:extrapreds ((x3625))
+:extrapreds ((x3626))
+:extrapreds ((x3627))
+:extrapreds ((x3628))
+:extrapreds ((x3629))
+:extrapreds ((x3630))
+:extrapreds ((x3631))
+:extrapreds ((x3632))
+:extrapreds ((x3633))
+:extrapreds ((x3634))
+:extrapreds ((x3635))
+:extrapreds ((x3636))
+:extrapreds ((x3637))
+:extrapreds ((x3638))
+:extrapreds ((x3639))
+:extrapreds ((x3640))
+:extrapreds ((x3641))
+:extrapreds ((x3642))
+:extrapreds ((x3643))
+:extrapreds ((x3644))
+:extrapreds ((x3645))
+:extrapreds ((x3646))
+:extrapreds ((x3647))
+:extrapreds ((x3648))
+:extrapreds ((x3649))
+:extrapreds ((x3650))
+:extrapreds ((x3651))
+:extrapreds ((x3652))
+:extrapreds ((x3653))
+:extrapreds ((x3654))
+:extrapreds ((x3655))
+:extrapreds ((x3656))
+:extrapreds ((x3657))
+:extrapreds ((x3658))
+:extrapreds ((x3659))
+:extrapreds ((x3660))
+:extrapreds ((x3661))
+:extrapreds ((x3662))
+:extrapreds ((x3663))
+:extrapreds ((x3664))
+:extrapreds ((x3665))
+:extrapreds ((x3666))
+:extrapreds ((x3667))
+:extrapreds ((x3668))
+:extrapreds ((x3669))
+:extrapreds ((x3670))
+:extrapreds ((x3671))
+:extrapreds ((x3672))
+:extrapreds ((x3673))
+:extrapreds ((x3674))
+:extrapreds ((x3675))
+:extrapreds ((x3676))
+:extrapreds ((x3677))
+:extrapreds ((x3678))
+:extrapreds ((x3679))
+:extrapreds ((x3680))
+:extrapreds ((x3681))
+:extrapreds ((x3682))
+:extrapreds ((x3683))
+:extrapreds ((x3684))
+:extrapreds ((x3685))
+:extrapreds ((x3686))
+:extrapreds ((x3687))
+:extrapreds ((x3688))
+:extrapreds ((x3689))
+:extrapreds ((x3690))
+:extrapreds ((x3691))
+:extrapreds ((x3692))
+:extrapreds ((x3693))
+:extrapreds ((x3694))
+:extrapreds ((x3695))
+:extrapreds ((x3696))
+:extrapreds ((x3697))
+:extrapreds ((x3698))
+:extrapreds ((x3699))
+:extrapreds ((x3700))
+:extrapreds ((x3701))
+:extrapreds ((x3702))
+:extrapreds ((x3703))
+:extrapreds ((x3704))
+:extrapreds ((x3705))
+:extrapreds ((x3706))
+:extrapreds ((x3707))
+:extrapreds ((x3708))
+:extrapreds ((x3709))
+:extrapreds ((x3710))
+:extrapreds ((x3711))
+:extrapreds ((x3712))
+:extrapreds ((x3713))
+:extrapreds ((x3714))
+:extrapreds ((x3715))
+:extrapreds ((x3716))
+:extrapreds ((x3717))
+:extrapreds ((x3718))
+:extrapreds ((x3719))
+:extrapreds ((x3720))
+:extrapreds ((x3721))
+:extrapreds ((x3722))
+:extrapreds ((x3723))
+:extrapreds ((x3724))
+:extrapreds ((x3725))
+:extrapreds ((x3726))
+:extrapreds ((x3727))
+:extrapreds ((x3728))
+:extrapreds ((x3729))
+:extrapreds ((x3730))
+:extrapreds ((x3731))
+:extrapreds ((x3732))
+:extrapreds ((x3733))
+:extrapreds ((x3734))
+:extrapreds ((x3735))
+:extrapreds ((x3736))
+:extrapreds ((x3737))
+:extrapreds ((x3738))
+:extrapreds ((x3739))
+:extrapreds ((x3740))
+:extrapreds ((x3741))
+:extrapreds ((x3742))
+:extrapreds ((x3743))
+:extrapreds ((x3744))
+:extrapreds ((x3745))
+:extrapreds ((x3746))
+:extrapreds ((x3747))
+:extrapreds ((x3748))
+:extrapreds ((x3749))
+:extrapreds ((x3750))
+:extrapreds ((x3751))
+:extrapreds ((x3752))
+:extrapreds ((x3753))
+:extrapreds ((x3754))
+:extrapreds ((x3755))
+:extrapreds ((x3756))
+:extrapreds ((x3757))
+:extrapreds ((x3758))
+:extrapreds ((x3759))
+:extrapreds ((x3760))
+:extrapreds ((x3761))
+:extrapreds ((x3762))
+:extrapreds ((x3763))
+:extrapreds ((x3764))
+:extrapreds ((x3765))
+:extrapreds ((x3766))
+:extrapreds ((x3767))
+:extrapreds ((x3768))
+:extrapreds ((x3769))
+:extrapreds ((x3770))
+:extrapreds ((x3771))
+:extrapreds ((x3772))
+:extrapreds ((x3773))
+:extrapreds ((x3774))
+:extrapreds ((x3775))
+:extrapreds ((x3776))
+:extrapreds ((x3777))
+:extrapreds ((x3778))
+:extrapreds ((x3779))
+:extrapreds ((x3780))
+:extrapreds ((x3781))
+:extrapreds ((x3782))
+:extrapreds ((x3783))
+:extrapreds ((x3784))
+:extrapreds ((x3785))
+:extrapreds ((x3786))
+:extrapreds ((x3787))
+:extrapreds ((x3788))
+:extrapreds ((x3789))
+:extrapreds ((x3790))
+:extrapreds ((x3791))
+:extrapreds ((x3792))
+:extrapreds ((x3793))
+:extrapreds ((x3794))
+:extrapreds ((x3795))
+:extrapreds ((x3796))
+:extrapreds ((x3797))
+:extrapreds ((x3798))
+:extrapreds ((x3799))
+:extrapreds ((x3800))
+:extrapreds ((x3801))
+:extrapreds ((x3802))
+:extrapreds ((x3803))
+:extrapreds ((x3804))
+:extrapreds ((x3805))
+:extrapreds ((x3806))
+:extrapreds ((x3807))
+:extrapreds ((x3808))
+:extrapreds ((x3809))
+:extrapreds ((x3810))
+:extrapreds ((x3811))
+:extrapreds ((x3812))
+:extrapreds ((x3813))
+:extrapreds ((x3814))
+:extrapreds ((x3815))
+:extrapreds ((x3816))
+:extrapreds ((x3817))
+:extrapreds ((x3818))
+:extrapreds ((x3819))
+:extrapreds ((x3820))
+:extrapreds ((x3821))
+:extrapreds ((x3822))
+:extrapreds ((x3823))
+:extrapreds ((x3824))
+:extrapreds ((x3825))
+:extrapreds ((x3826))
+:extrapreds ((x3827))
+:extrapreds ((x3828))
+:extrapreds ((x3829))
+:extrapreds ((x3830))
+:extrapreds ((x3831))
+:extrapreds ((x3832))
+:extrapreds ((x3833))
+:extrapreds ((x3834))
+:extrapreds ((x3835))
+:extrapreds ((x3836))
+:extrapreds ((x3837))
+:extrapreds ((x3838))
+:extrapreds ((x3839))
+:extrapreds ((x3840))
+:extrapreds ((x3841))
+:extrapreds ((x3842))
+:extrapreds ((x3843))
+:extrapreds ((x3844))
+:extrapreds ((x3845))
+:extrapreds ((x3846))
+:extrapreds ((x3847))
+:extrapreds ((x3848))
+:extrapreds ((x3849))
+:extrapreds ((x3850))
+:extrapreds ((x3851))
+:extrapreds ((x3852))
+:extrapreds ((x3853))
+:extrapreds ((x3854))
+:extrapreds ((x3855))
+:extrapreds ((x3856))
+:extrapreds ((x3857))
+:extrapreds ((x3858))
+:extrapreds ((x3859))
+:extrapreds ((x3860))
+:extrapreds ((x3861))
+:extrapreds ((x3862))
+:extrapreds ((x3863))
+:extrapreds ((x3864))
+:extrapreds ((x3865))
+:extrapreds ((x3866))
+:extrapreds ((x3867))
+:extrapreds ((x3868))
+:extrapreds ((x3869))
+:extrapreds ((x3870))
+:extrapreds ((x3871))
+:extrapreds ((x3872))
+:extrapreds ((x3873))
+:extrapreds ((x3874))
+:extrapreds ((x3875))
+:extrapreds ((x3876))
+:extrapreds ((x3877))
+:extrapreds ((x3878))
+:extrapreds ((x3879))
+:extrapreds ((x3880))
+:extrapreds ((x3881))
+:extrapreds ((x3882))
+:extrapreds ((x3883))
+:extrapreds ((x3884))
+:extrapreds ((x3885))
+:extrapreds ((x3886))
+:extrapreds ((x3887))
+:extrapreds ((x3888))
+:extrapreds ((x3889))
+:extrapreds ((x3890))
+:extrapreds ((x3891))
+:extrapreds ((x3892))
+:extrapreds ((x3893))
+:extrapreds ((x3894))
+:extrapreds ((x3895))
+:extrapreds ((x3896))
+:extrapreds ((x3897))
+:extrapreds ((x3898))
+:extrapreds ((x3899))
+:extrapreds ((x3900))
+:extrapreds ((x3901))
+:extrapreds ((x3902))
+:extrapreds ((x3903))
+:extrapreds ((x3904))
+:extrapreds ((x3905))
+:extrapreds ((x3906))
+:extrapreds ((x3907))
+:extrapreds ((x3908))
+:extrapreds ((x3909))
+:extrapreds ((x3910))
+:extrapreds ((x3911))
+:extrapreds ((x3912))
+:extrapreds ((x3913))
+:extrapreds ((x3914))
+:extrapreds ((x3915))
+:extrapreds ((x3916))
+:extrapreds ((x3917))
+:extrapreds ((x3918))
+:extrapreds ((x3919))
+:extrapreds ((x3920))
+:extrapreds ((x3921))
+:extrapreds ((x3922))
+:extrapreds ((x3923))
+:extrapreds ((x3924))
+:extrapreds ((x3925))
+:extrapreds ((x3926))
+:extrapreds ((x3927))
+:extrapreds ((x3928))
+:extrapreds ((x3929))
+:extrapreds ((x3930))
+:extrapreds ((x3931))
+:extrapreds ((x3932))
+:extrapreds ((x3933))
+:extrapreds ((x3934))
+:extrapreds ((x3935))
+:extrapreds ((x3936))
+:extrapreds ((x3937))
+:extrapreds ((x3938))
+:extrapreds ((x3939))
+:extrapreds ((x3940))
+:extrapreds ((x3941))
+:extrapreds ((x3942))
+:extrapreds ((x3943))
+:extrapreds ((x3944))
+:extrapreds ((x3945))
+:extrapreds ((x3946))
+:extrapreds ((x3947))
+:extrapreds ((x3948))
+:extrapreds ((x3949))
+:extrapreds ((x3950))
+:extrapreds ((x3951))
+:extrapreds ((x3952))
+:extrapreds ((x3953))
+:extrapreds ((x3954))
+:extrapreds ((x3955))
+:extrapreds ((x3956))
+:extrapreds ((x3957))
+:extrapreds ((x3958))
+:extrapreds ((x3959))
+:extrapreds ((x3960))
+:extrapreds ((x3961))
+:extrapreds ((x3962))
+:extrapreds ((x3963))
+:extrapreds ((x3964))
+:extrapreds ((x3965))
+:extrapreds ((x3966))
+:extrapreds ((x3967))
+:extrapreds ((x3968))
+:extrapreds ((x3969))
+:extrapreds ((x3970))
+:extrapreds ((x3971))
+:extrapreds ((x3972))
+:extrapreds ((x3973))
+:extrapreds ((x3974))
+:extrapreds ((x3975))
+:extrapreds ((x3976))
+:extrapreds ((x3977))
+:extrapreds ((x3978))
+:extrapreds ((x3979))
+:extrapreds ((x3980))
+:extrapreds ((x3981))
+:extrapreds ((x3982))
+:extrapreds ((x3983))
+:extrapreds ((x3984))
+:extrapreds ((x3985))
+:extrapreds ((x3986))
+:extrapreds ((x3987))
+:extrapreds ((x3988))
+:extrapreds ((x3989))
+:extrapreds ((x3990))
+:extrapreds ((x3991))
+:extrapreds ((x3992))
+:extrapreds ((x3993))
+:extrapreds ((x3994))
+:extrapreds ((x3995))
+:extrapreds ((x3996))
+:extrapreds ((x3997))
+:extrapreds ((x3998))
+:extrapreds ((x3999))
+:extrapreds ((x4000))
+:extrapreds ((x4001))
+:extrapreds ((x4002))
+:extrapreds ((x4003))
+:extrapreds ((x4004))
+:extrapreds ((x4005))
+:extrapreds ((x4006))
+:extrapreds ((x4007))
+:extrapreds ((x4008))
+:extrapreds ((x4009))
+:extrapreds ((x4010))
+:extrapreds ((x4011))
+:extrapreds ((x4012))
+:extrapreds ((x4013))
+:extrapreds ((x4014))
+:extrapreds ((x4015))
+:extrapreds ((x4016))
+:extrapreds ((x4017))
+:extrapreds ((x4018))
+:extrapreds ((x4019))
+:extrapreds ((x4020))
+:extrapreds ((x4021))
+:extrapreds ((x4022))
+:extrapreds ((x4023))
+:extrapreds ((x4024))
+:extrapreds ((x4025))
+:extrapreds ((x4026))
+:extrapreds ((x4027))
+:extrapreds ((x4028))
+:extrapreds ((x4029))
+:extrapreds ((x4030))
+:extrapreds ((x4031))
+:extrapreds ((x4032))
+:extrapreds ((x4033))
+:extrapreds ((x4034))
+:extrapreds ((x4035))
+:extrapreds ((x4036))
+:extrapreds ((x4037))
+:extrapreds ((x4038))
+:extrapreds ((x4039))
+:extrapreds ((x4040))
+:extrapreds ((x4041))
+:extrapreds ((x4042))
+:extrapreds ((x4043))
+:extrapreds ((x4044))
+:extrapreds ((x4045))
+:extrapreds ((x4046))
+:extrapreds ((x4047))
+:extrapreds ((x4048))
+:extrapreds ((x4049))
+:extrapreds ((x4050))
+:extrapreds ((x4051))
+:extrapreds ((x4052))
+:extrapreds ((x4053))
+:extrapreds ((x4054))
+:extrapreds ((x4055))
+:extrapreds ((x4056))
+:extrapreds ((x4057))
+:extrapreds ((x4058))
+:extrapreds ((x4059))
+:extrapreds ((x4060))
+:extrapreds ((x4061))
+:extrapreds ((x4062))
+:extrapreds ((x4063))
+:extrapreds ((x4064))
+:extrapreds ((x4065))
+:extrapreds ((x4066))
+:extrapreds ((x4067))
+:extrapreds ((x4068))
+:extrapreds ((x4069))
+:extrapreds ((x4070))
+:extrapreds ((x4071))
+:extrapreds ((x4072))
+:extrapreds ((x4073))
+:extrapreds ((x4074))
+:extrapreds ((x4075))
+:extrapreds ((x4076))
+:extrapreds ((x4077))
+:extrapreds ((x4078))
+:extrapreds ((x4079))
+:extrapreds ((x4080))
+:extrapreds ((x4081))
+:extrapreds ((x4082))
+:extrapreds ((x4083))
+:extrapreds ((x4084))
+:extrapreds ((x4085))
+:extrapreds ((x4086))
+:extrapreds ((x4087))
+:extrapreds ((x4088))
+:extrapreds ((x4089))
+:extrapreds ((x4090))
+:extrapreds ((x4091))
+:extrapreds ((x4092))
+:extrapreds ((x4093))
+:extrapreds ((x4094))
+:extrapreds ((x4095))
+:extrapreds ((x4096))
+:extrapreds ((x4097))
+:extrapreds ((x4098))
+:extrapreds ((x4099))
+:extrapreds ((x4100))
+:extrapreds ((x4101))
+:extrapreds ((x4102))
+:extrapreds ((x4103))
+:extrapreds ((x4104))
+:extrapreds ((x4105))
+:extrapreds ((x4106))
+:extrapreds ((x4107))
+:extrapreds ((x4108))
+:extrapreds ((x4109))
+:extrapreds ((x4110))
+:extrapreds ((x4111))
+:extrapreds ((x4112))
+:extrapreds ((x4113))
+:extrapreds ((x4114))
+:extrapreds ((x4115))
+:extrapreds ((x4116))
+:extrapreds ((x4117))
+:extrapreds ((x4118))
+:extrapreds ((x4119))
+:extrapreds ((x4120))
+:extrapreds ((x4121))
+:extrapreds ((x4122))
+:extrapreds ((x4123))
+:extrapreds ((x4124))
+:extrapreds ((x4125))
+:extrapreds ((x4126))
+:extrapreds ((x4127))
+:extrapreds ((x4128))
+:extrapreds ((x4129))
+:extrapreds ((x4130))
+:extrapreds ((x4131))
+:extrapreds ((x4132))
+:extrapreds ((x4133))
+:extrapreds ((x4134))
+:extrapreds ((x4135))
+:extrapreds ((x4136))
+:extrapreds ((x4137))
+:extrapreds ((x4138))
+:extrapreds ((x4139))
+:extrapreds ((x4140))
+:extrapreds ((x4141))
+:extrapreds ((x4142))
+:extrapreds ((x4143))
+:extrapreds ((x4144))
+:extrapreds ((x4145))
+:extrapreds ((x4146))
+:extrapreds ((x4147))
+:extrapreds ((x4148))
+:extrapreds ((x4149))
+:extrapreds ((x4150))
+:extrapreds ((x4151))
+:extrapreds ((x4152))
+:extrapreds ((x4153))
+:extrapreds ((x4154))
+:extrapreds ((x4155))
+:extrapreds ((x4156))
+:extrapreds ((x4157))
+:extrapreds ((x4158))
+:extrapreds ((x4159))
+:extrapreds ((x4160))
+:extrapreds ((x4161))
+:extrapreds ((x4162))
+:extrapreds ((x4163))
+:extrapreds ((x4164))
+:extrapreds ((x4165))
+:extrapreds ((x4166))
+:extrapreds ((x4167))
+:extrapreds ((x4168))
+:extrapreds ((x4169))
+:extrapreds ((x4170))
+:extrapreds ((x4171))
+:extrapreds ((x4172))
+:extrapreds ((x4173))
+:extrapreds ((x4174))
+:extrapreds ((x4175))
+:extrapreds ((x4176))
+:extrapreds ((x4177))
+:extrapreds ((x4178))
+:extrapreds ((x4179))
+:extrapreds ((x4180))
+:extrapreds ((x4181))
+:extrapreds ((x4182))
+:extrapreds ((x4183))
+:extrapreds ((x4184))
+:extrapreds ((x4185))
+:extrapreds ((x4186))
+:extrapreds ((x4187))
+:extrapreds ((x4188))
+:extrapreds ((x4189))
+:extrapreds ((x4190))
+:extrapreds ((x4191))
+:extrapreds ((x4192))
+:extrapreds ((x4193))
+:extrapreds ((x4194))
+:extrapreds ((x4195))
+:extrapreds ((x4196))
+:extrapreds ((x4197))
+:extrapreds ((x4198))
+:extrapreds ((x4199))
+:extrapreds ((x4200))
+:extrapreds ((x4201))
+:extrapreds ((x4202))
+:extrapreds ((x4203))
+:extrapreds ((x4204))
+:extrapreds ((x4205))
+:extrapreds ((x4206))
+:extrapreds ((x4207))
+:extrapreds ((x4208))
+:extrapreds ((x4209))
+:extrapreds ((x4210))
+:extrapreds ((x4211))
+:extrapreds ((x4212))
+:extrapreds ((x4213))
+:extrapreds ((x4214))
+:extrapreds ((x4215))
+:extrapreds ((x4216))
+:extrapreds ((x4217))
+:extrapreds ((x4218))
+:extrapreds ((x4219))
+:extrapreds ((x4220))
+:extrapreds ((x4221))
+:extrapreds ((x4222))
+:extrapreds ((x4223))
+:extrapreds ((x4224))
+:extrapreds ((x4225))
+:extrapreds ((x4226))
+:extrapreds ((x4227))
+:extrapreds ((x4228))
+:extrapreds ((x4229))
+:extrapreds ((x4230))
+:extrapreds ((x4231))
+:extrapreds ((x4232))
+:extrapreds ((x4233))
+:extrapreds ((x4234))
+:extrapreds ((x4235))
+:extrapreds ((x4236))
+:extrapreds ((x4237))
+:extrapreds ((x4238))
+:extrapreds ((x4239))
+:extrapreds ((x4240))
+:extrapreds ((x4241))
+:extrapreds ((x4242))
+:extrapreds ((x4243))
+:extrapreds ((x4244))
+:extrapreds ((x4245))
+:extrapreds ((x4246))
+:extrapreds ((x4247))
+:extrapreds ((x4248))
+:extrapreds ((x4249))
+:extrapreds ((x4250))
+:extrapreds ((x4251))
+:extrapreds ((x4252))
+:extrapreds ((x4253))
+:extrapreds ((x4254))
+:extrapreds ((x4255))
+:extrapreds ((x4256))
+:extrapreds ((x4257))
+:extrapreds ((x4258))
+:extrapreds ((x4259))
+:extrapreds ((x4260))
+:extrapreds ((x4261))
+:extrapreds ((x4262))
+:extrapreds ((x4263))
+:extrapreds ((x4264))
+:extrapreds ((x4265))
+:extrapreds ((x4266))
+:extrapreds ((x4267))
+:extrapreds ((x4268))
+:extrapreds ((x4269))
+:extrapreds ((x4270))
+:extrapreds ((x4271))
+:extrapreds ((x4272))
+:extrapreds ((x4273))
+:extrapreds ((x4274))
+:extrapreds ((x4275))
+:extrapreds ((x4276))
+:extrapreds ((x4277))
+:extrapreds ((x4278))
+:extrapreds ((x4279))
+:extrapreds ((x4280))
+:extrapreds ((x4281))
+:extrapreds ((x4282))
+:extrapreds ((x4283))
+:extrapreds ((x4284))
+:extrapreds ((x4285))
+:extrapreds ((x4286))
+:extrapreds ((x4287))
+:extrapreds ((x4288))
+:extrapreds ((x4289))
+:extrapreds ((x4290))
+:extrapreds ((x4291))
+:extrapreds ((x4292))
+:extrapreds ((x4293))
+:extrapreds ((x4294))
+:extrapreds ((x4295))
+:extrapreds ((x4296))
+:extrapreds ((x4297))
+:extrapreds ((x4298))
+:extrapreds ((x4299))
+:extrapreds ((x4300))
+:extrapreds ((x4301))
+:extrapreds ((x4302))
+:extrapreds ((x4303))
+:extrapreds ((x4304))
+:extrapreds ((x4305))
+:extrapreds ((x4306))
+:extrapreds ((x4307))
+:extrapreds ((x4308))
+:extrapreds ((x4309))
+:extrapreds ((x4310))
+:extrapreds ((x4311))
+:extrapreds ((x4312))
+:extrapreds ((x4313))
+:extrapreds ((x4314))
+:extrapreds ((x4315))
+:extrapreds ((x4316))
+:extrapreds ((x4317))
+:extrapreds ((x4318))
+:extrapreds ((x4319))
+:extrapreds ((x4320))
+:extrapreds ((x4321))
+:extrapreds ((x4322))
+:extrapreds ((x4323))
+:extrapreds ((x4324))
+:extrapreds ((x4325))
+:extrapreds ((x4326))
+:extrapreds ((x4327))
+:extrapreds ((x4328))
+:extrapreds ((x4329))
+:extrapreds ((x4330))
+:extrapreds ((x4331))
+:extrapreds ((x4332))
+:extrapreds ((x4333))
+:extrapreds ((x4334))
+:extrapreds ((x4335))
+:extrapreds ((x4336))
+:extrapreds ((x4337))
+:extrapreds ((x4338))
+:extrapreds ((x4339))
+:extrapreds ((x4340))
+:extrapreds ((x4341))
+:extrapreds ((x4342))
+:extrapreds ((x4343))
+:extrapreds ((x4344))
+:extrapreds ((x4345))
+:extrapreds ((x4346))
+:extrapreds ((x4347))
+:extrapreds ((x4348))
+:extrapreds ((x4349))
+:extrapreds ((x4350))
+:extrapreds ((x4351))
+:extrapreds ((x4352))
+:extrapreds ((x4353))
+:extrapreds ((x4354))
+:extrapreds ((x4355))
+:extrapreds ((x4356))
+:extrapreds ((x4357))
+:extrapreds ((x4358))
+:extrapreds ((x4359))
+:extrapreds ((x4360))
+:extrapreds ((x4361))
+:extrapreds ((x4362))
+:extrapreds ((x4363))
+:extrapreds ((x4364))
+:extrapreds ((x4365))
+:extrapreds ((x4366))
+:extrapreds ((x4367))
+:extrapreds ((x4368))
+:extrapreds ((x4369))
+:extrapreds ((x4370))
+:extrapreds ((x4371))
+:extrapreds ((x4372))
+:extrapreds ((x4373))
+:extrapreds ((x4374))
+:extrapreds ((x4375))
+:extrapreds ((x4376))
+:extrapreds ((x4377))
+:extrapreds ((x4378))
+:extrapreds ((x4379))
+:extrapreds ((x4380))
+:extrapreds ((x4381))
+:extrapreds ((x4382))
+:extrapreds ((x4383))
+:extrapreds ((x4384))
+:extrapreds ((x4385))
+:extrapreds ((x4386))
+:extrapreds ((x4387))
+:extrapreds ((x4388))
+:extrapreds ((x4389))
+:extrapreds ((x4390))
+:extrapreds ((x4391))
+:extrapreds ((x4392))
+:extrapreds ((x4393))
+:extrapreds ((x4394))
+:extrapreds ((x4395))
+:extrapreds ((x4396))
+:extrapreds ((x4397))
+:extrapreds ((x4398))
+:extrapreds ((x4399))
+:extrapreds ((x4400))
+:extrapreds ((x4401))
+:extrapreds ((x4402))
+:extrapreds ((x4403))
+:extrapreds ((x4404))
+:extrapreds ((x4405))
+:extrapreds ((x4406))
+:extrapreds ((x4407))
+:extrapreds ((x4408))
+:extrapreds ((x4409))
+:extrapreds ((x4410))
+:extrapreds ((x4411))
+:extrapreds ((x4412))
+:extrapreds ((x4413))
+:extrapreds ((x4414))
+:extrapreds ((x4415))
+:extrapreds ((x4416))
+:extrapreds ((x4417))
+:extrapreds ((x4418))
+:extrapreds ((x4419))
+:extrapreds ((x4420))
+:extrapreds ((x4421))
+:extrapreds ((x4422))
+:extrapreds ((x4423))
+:extrapreds ((x4424))
+:extrapreds ((x4425))
+:extrapreds ((x4426))
+:extrapreds ((x4427))
+:extrapreds ((x4428))
+:extrapreds ((x4429))
+:extrapreds ((x4430))
+:extrapreds ((x4431))
+:extrapreds ((x4432))
+:extrapreds ((x4433))
+:extrapreds ((x4434))
+:extrapreds ((x4435))
+:extrapreds ((x4436))
+:extrapreds ((x4437))
+:extrapreds ((x4438))
+:extrapreds ((x4439))
+:extrapreds ((x4440))
+:extrapreds ((x4441))
+:extrapreds ((x4442))
+:extrapreds ((x4443))
+:extrapreds ((x4444))
+:extrapreds ((x4445))
+:extrapreds ((x4446))
+:extrapreds ((x4447))
+:extrapreds ((x4448))
+:extrapreds ((x4449))
+:extrapreds ((x4450))
+:extrapreds ((x4451))
+:extrapreds ((x4452))
+:extrapreds ((x4453))
+:extrapreds ((x4454))
+:extrapreds ((x4455))
+:extrapreds ((x4456))
+:extrapreds ((x4457))
+:extrapreds ((x4458))
+:extrapreds ((x4459))
+:extrapreds ((x4460))
+:extrapreds ((x4461))
+:extrapreds ((x4462))
+:extrapreds ((x4463))
+:extrapreds ((x4464))
+:extrapreds ((x4465))
+:extrapreds ((x4466))
+:extrapreds ((x4467))
+:extrapreds ((x4468))
+:extrapreds ((x4469))
+:extrapreds ((x4470))
+:extrapreds ((x4471))
+:extrapreds ((x4472))
+:extrapreds ((x4473))
+:extrapreds ((x4474))
+:extrapreds ((x4475))
+:extrapreds ((x4476))
+:extrapreds ((x4477))
+:extrapreds ((x4478))
+:extrapreds ((x4479))
+:extrapreds ((x4480))
+:extrapreds ((x4481))
+:extrapreds ((x4482))
+:extrapreds ((x4483))
+:extrapreds ((x4484))
+:extrapreds ((x4485))
+:extrapreds ((x4486))
+:extrapreds ((x4487))
+:extrapreds ((x4488))
+:extrapreds ((x4489))
+:extrapreds ((x4490))
+:extrapreds ((x4491))
+:extrapreds ((x4492))
+:extrapreds ((x4493))
+:extrapreds ((x4494))
+:extrapreds ((x4495))
+:extrapreds ((x4496))
+:extrapreds ((x4497))
+:extrapreds ((x4498))
+:extrapreds ((x4499))
+:extrapreds ((x4500))
+:extrapreds ((x4501))
+:extrapreds ((x4502))
+:extrapreds ((x4503))
+:extrapreds ((x4504))
+:extrapreds ((x4505))
+:extrapreds ((x4506))
+:extrapreds ((x4507))
+:extrapreds ((x4508))
+:extrapreds ((x4509))
+:extrapreds ((x4510))
+:extrapreds ((x4511))
+:extrapreds ((x4512))
+:extrapreds ((x4513))
+:extrapreds ((x4514))
+:extrapreds ((x4515))
+:extrapreds ((x4516))
+:extrapreds ((x4517))
+:extrapreds ((x4518))
+:extrapreds ((x4519))
+:extrapreds ((x4520))
+:extrapreds ((x4521))
+:extrapreds ((x4522))
+:extrapreds ((x4523))
+:extrapreds ((x4524))
+:extrapreds ((x4525))
+:extrapreds ((x4526))
+:extrapreds ((x4527))
+:extrapreds ((x4528))
+:extrapreds ((x4529))
+:extrapreds ((x4530))
+:extrapreds ((x4531))
+:extrapreds ((x4532))
+:extrapreds ((x4533))
+:extrapreds ((x4534))
+:extrapreds ((x4535))
+:extrapreds ((x4536))
+:extrapreds ((x4537))
+:extrapreds ((x4538))
+:extrapreds ((x4539))
+:extrapreds ((x4540))
+:extrapreds ((x4541))
+:extrapreds ((x4542))
+:extrapreds ((x4543))
+:extrapreds ((x4544))
+:extrapreds ((x4545))
+:extrapreds ((x4546))
+:extrapreds ((x4547))
+:extrapreds ((x4548))
+:extrapreds ((x4549))
+:extrapreds ((x4550))
+:extrapreds ((x4551))
+:extrapreds ((x4552))
+:extrapreds ((x4553))
+:extrapreds ((x4554))
+:extrapreds ((x4555))
+:extrapreds ((x4556))
+:extrapreds ((x4557))
+:extrapreds ((x4558))
+:extrapreds ((x4559))
+:extrapreds ((x4560))
+:extrapreds ((x4561))
+:extrapreds ((x4562))
+:extrapreds ((x4563))
+:extrapreds ((x4564))
+:extrapreds ((x4565))
+:extrapreds ((x4566))
+:extrapreds ((x4567))
+:extrapreds ((x4568))
+:extrapreds ((x4569))
+:extrapreds ((x4570))
+:extrapreds ((x4571))
+:extrapreds ((x4572))
+:extrapreds ((x4573))
+:extrapreds ((x4574))
+:extrapreds ((x4575))
+:extrapreds ((x4576))
+:extrapreds ((x4577))
+:extrapreds ((x4578))
+:extrapreds ((x4579))
+:extrapreds ((x4580))
+:extrapreds ((x4581))
+:extrapreds ((x4582))
+:extrapreds ((x4583))
+:extrapreds ((x4584))
+:extrapreds ((x4585))
+:extrapreds ((x4586))
+:extrapreds ((x4587))
+:extrapreds ((x4588))
+:extrapreds ((x4589))
+:extrapreds ((x4590))
+:extrapreds ((x4591))
+:extrapreds ((x4592))
+:extrapreds ((x4593))
+:extrapreds ((x4594))
+:extrapreds ((x4595))
+:extrapreds ((x4596))
+:extrapreds ((x4597))
+:extrapreds ((x4598))
+:extrapreds ((x4599))
+:extrapreds ((x4600))
+:extrapreds ((x4601))
+:extrapreds ((x4602))
+:extrapreds ((x4603))
+:extrapreds ((x4604))
+:extrapreds ((x4605))
+:extrapreds ((x4606))
+:extrapreds ((x4607))
+:extrapreds ((x4608))
+:extrapreds ((x4609))
+:extrapreds ((x4610))
+:extrapreds ((x4611))
+:extrapreds ((x4612))
+:extrapreds ((x4613))
+:extrapreds ((x4614))
+:extrapreds ((x4615))
+:extrapreds ((x4616))
+:extrapreds ((x4617))
+:extrapreds ((x4618))
+:extrapreds ((x4619))
+:extrapreds ((x4620))
+:extrapreds ((x4621))
+:extrapreds ((x4622))
+:extrapreds ((x4623))
+:extrapreds ((x4624))
+:extrapreds ((x4625))
+:extrapreds ((x4626))
+:extrapreds ((x4627))
+:extrapreds ((x4628))
+:extrapreds ((x4629))
+:extrapreds ((x4630))
+:extrapreds ((x4631))
+:extrapreds ((x4632))
+:extrapreds ((x4633))
+:extrapreds ((x4634))
+:extrapreds ((x4635))
+:extrapreds ((x4636))
+:extrapreds ((x4637))
+:extrapreds ((x4638))
+:extrapreds ((x4639))
+:extrapreds ((x4640))
+:extrapreds ((x4641))
+:extrapreds ((x4642))
+:extrapreds ((x4643))
+:extrapreds ((x4644))
+:extrapreds ((x4645))
+:extrapreds ((x4646))
+:extrapreds ((x4647))
+:extrapreds ((x4648))
+:extrapreds ((x4649))
+:extrapreds ((x4650))
+:extrapreds ((x4651))
+:extrapreds ((x4652))
+:extrapreds ((x4653))
+:extrapreds ((x4654))
+:extrapreds ((x4655))
+:extrapreds ((x4656))
+:extrapreds ((x4657))
+:extrapreds ((x4658))
+:extrapreds ((x4659))
+:extrapreds ((x4660))
+:extrapreds ((x4661))
+:extrapreds ((x4662))
+:extrapreds ((x4663))
+:extrapreds ((x4664))
+:extrapreds ((x4665))
+:extrapreds ((x4666))
+:extrapreds ((x4667))
+:extrapreds ((x4668))
+:extrapreds ((x4669))
+:extrapreds ((x4670))
+:extrapreds ((x4671))
+:extrapreds ((x4672))
+:extrapreds ((x4673))
+:extrapreds ((x4674))
+:extrapreds ((x4675))
+:extrapreds ((x4676))
+:extrapreds ((x4677))
+:extrapreds ((x4678))
+:extrapreds ((x4679))
+:extrapreds ((x4680))
+:extrapreds ((x4681))
+:extrapreds ((x4682))
+:extrapreds ((x4683))
+:extrapreds ((x4684))
+:extrapreds ((x4685))
+:extrapreds ((x4686))
+:extrapreds ((x4687))
+:extrapreds ((x4688))
+:extrapreds ((x4689))
+:extrapreds ((x4690))
+:extrapreds ((x4691))
+:extrapreds ((x4692))
+:extrapreds ((x4693))
+:extrapreds ((x4694))
+:extrapreds ((x4695))
+:extrapreds ((x4696))
+:extrapreds ((x4697))
+:extrapreds ((x4698))
+:extrapreds ((x4699))
+:extrapreds ((x4700))
+:extrapreds ((x4701))
+:extrapreds ((x4702))
+:extrapreds ((x4703))
+:extrapreds ((x4704))
+:extrapreds ((x4705))
+:extrapreds ((x4706))
+:extrapreds ((x4707))
+:extrapreds ((x4708))
+:extrapreds ((x4709))
+:extrapreds ((x4710))
+:extrapreds ((x4711))
+:extrapreds ((x4712))
+:extrapreds ((x4713))
+:extrapreds ((x4714))
+:extrapreds ((x4715))
+:extrapreds ((x4716))
+:extrapreds ((x4717))
+:extrapreds ((x4718))
+:extrapreds ((x4719))
+:extrapreds ((x4720))
+:extrapreds ((x4721))
+:extrapreds ((x4722))
+:extrapreds ((x4723))
+:extrapreds ((x4724))
+:extrapreds ((x4725))
+:extrapreds ((x4726))
+:extrapreds ((x4727))
+:extrapreds ((x4728))
+:extrapreds ((x4729))
+:extrapreds ((x4730))
+:extrapreds ((x4731))
+:extrapreds ((x4732))
+:extrapreds ((x4733))
+:extrapreds ((x4734))
+:extrapreds ((x4735))
+:extrapreds ((x4736))
+:extrapreds ((x4737))
+:extrapreds ((x4738))
+:extrapreds ((x4739))
+:extrapreds ((x4740))
+:extrapreds ((x4741))
+:extrapreds ((x4742))
+:extrapreds ((x4743))
+:extrapreds ((x4744))
+:extrapreds ((x4745))
+:extrapreds ((x4746))
+:extrapreds ((x4747))
+:extrapreds ((x4748))
+:extrapreds ((x4749))
+:extrapreds ((x4750))
+:extrapreds ((x4751))
+:extrapreds ((x4752))
+:extrapreds ((x4753))
+:extrapreds ((x4754))
+:extrapreds ((x4755))
+:extrapreds ((x4756))
+:extrapreds ((x4757))
+:extrapreds ((x4758))
+:extrapreds ((x4759))
+:extrapreds ((x4760))
+:extrapreds ((x4761))
+:extrapreds ((x4762))
+:extrapreds ((x4763))
+:extrapreds ((x4764))
+:extrapreds ((x4765))
+:extrapreds ((x4766))
+:extrapreds ((x4767))
+:extrapreds ((x4768))
+:extrapreds ((x4769))
+:extrapreds ((x4770))
+:extrapreds ((x4771))
+:extrapreds ((x4772))
+:extrapreds ((x4773))
+:extrapreds ((x4774))
+:extrapreds ((x4775))
+:extrapreds ((x4776))
+:extrapreds ((x4777))
+:extrapreds ((x4778))
+:extrapreds ((x4779))
+:extrapreds ((x4780))
+:extrapreds ((x4781))
+:extrapreds ((x4782))
+:extrapreds ((x4783))
+:extrapreds ((x4784))
+:extrapreds ((x4785))
+:extrapreds ((x4786))
+:extrapreds ((x4787))
+:extrapreds ((x4788))
+:extrapreds ((x4789))
+:extrapreds ((x4790))
+:extrapreds ((x4791))
+:extrapreds ((x4792))
+:extrapreds ((x4793))
+:extrapreds ((x4794))
+:extrapreds ((x4795))
+:extrapreds ((x4796))
+:extrapreds ((x4797))
+:extrapreds ((x4798))
+:extrapreds ((x4799))
+:extrapreds ((x4800))
+:extrapreds ((x4801))
+:extrapreds ((x4802))
+:extrapreds ((x4803))
+:extrapreds ((x4804))
+:extrapreds ((x4805))
+:extrapreds ((x4806))
+:extrapreds ((x4807))
+:extrapreds ((x4808))
+:extrapreds ((x4809))
+:extrapreds ((x4810))
+:extrapreds ((x4811))
+:extrapreds ((x4812))
+:extrapreds ((x4813))
+:extrapreds ((x4814))
+:extrapreds ((x4815))
+:extrapreds ((x4816))
+:extrapreds ((x4817))
+:extrapreds ((x4818))
+:extrapreds ((x4819))
+:extrapreds ((x4820))
+:extrapreds ((x4821))
+:extrapreds ((x4822))
+:extrapreds ((x4823))
+:extrapreds ((x4824))
+:extrapreds ((x4825))
+:extrapreds ((x4826))
+:extrapreds ((x4827))
+:extrapreds ((x4828))
+:extrapreds ((x4829))
+:extrapreds ((x4830))
+:extrapreds ((x4831))
+:extrapreds ((x4832))
+:extrapreds ((x4833))
+:extrapreds ((x4834))
+:extrapreds ((x4835))
+:extrapreds ((x4836))
+:extrapreds ((x4837))
+:extrapreds ((x4838))
+:extrapreds ((x4839))
+:extrapreds ((x4840))
+:extrapreds ((x4841))
+:extrapreds ((x4842))
+:extrapreds ((x4843))
+:extrapreds ((x4844))
+:extrapreds ((x4845))
+:extrapreds ((x4846))
+:extrapreds ((x4847))
+:extrapreds ((x4848))
+:extrapreds ((x4849))
+:extrapreds ((x4850))
+:extrapreds ((x4851))
+:extrapreds ((x4852))
+:extrapreds ((x4853))
+:extrapreds ((x4854))
+:extrapreds ((x4855))
+:extrapreds ((x4856))
+:extrapreds ((x4857))
+:extrapreds ((x4858))
+:extrapreds ((x4859))
+:extrapreds ((x4860))
+:extrapreds ((x4861))
+:extrapreds ((x4862))
+:extrapreds ((x4863))
+:extrapreds ((x4864))
+:extrapreds ((x4865))
+:extrapreds ((x4866))
+:extrapreds ((x4867))
+:extrapreds ((x4868))
+:extrapreds ((x4869))
+:extrapreds ((x4870))
+:extrapreds ((x4871))
+:extrapreds ((x4872))
+:extrapreds ((x4873))
+:extrapreds ((x4874))
+:extrapreds ((x4875))
+:extrapreds ((x4876))
+:extrapreds ((x4877))
+:extrapreds ((x4878))
+:extrapreds ((x4879))
+:extrapreds ((x4880))
+:extrapreds ((x4881))
+:extrapreds ((x4882))
+:extrapreds ((x4883))
+:extrapreds ((x4884))
+:extrapreds ((x4885))
+:extrapreds ((x4886))
+:extrapreds ((x4887))
+:extrapreds ((x4888))
+:extrapreds ((x4889))
+:extrapreds ((x4890))
+:extrapreds ((x4891))
+:extrapreds ((x4892))
+:extrapreds ((x4893))
+:extrapreds ((x4894))
+:extrapreds ((x4895))
+:extrapreds ((x4896))
+:extrapreds ((x4897))
+:extrapreds ((x4898))
+:extrapreds ((x4899))
+:extrapreds ((x4900))
+:extrapreds ((x4901))
+:extrapreds ((x4902))
+:extrapreds ((x4903))
+:extrapreds ((x4904))
+:extrapreds ((x4905))
+:extrapreds ((x4906))
+:extrapreds ((x4907))
+:extrapreds ((x4908))
+:extrapreds ((x4909))
+:extrapreds ((x4910))
+:extrapreds ((x4911))
+:extrapreds ((x4912))
+:extrapreds ((x4913))
+:extrapreds ((x4914))
+:extrapreds ((x4915))
+:extrapreds ((x4916))
+:extrapreds ((x4917))
+:extrapreds ((x4918))
+:extrapreds ((x4919))
+:extrapreds ((x4920))
+:extrapreds ((x4921))
+:extrapreds ((x4922))
+:extrapreds ((x4923))
+:extrapreds ((x4924))
+:extrapreds ((x4925))
+:extrapreds ((x4926))
+:extrapreds ((x4927))
+:extrapreds ((x4928))
+:extrapreds ((x4929))
+:extrapreds ((x4930))
+:extrapreds ((x4931))
+:extrapreds ((x4932))
+:extrapreds ((x4933))
+:extrapreds ((x4934))
+:extrapreds ((x4935))
+:extrapreds ((x4936))
+:extrapreds ((x4937))
+:extrapreds ((x4938))
+:extrapreds ((x4939))
+:extrapreds ((x4940))
+:extrapreds ((x4941))
+:extrapreds ((x4942))
+:extrapreds ((x4943))
+:extrapreds ((x4944))
+:extrapreds ((x4945))
+:extrapreds ((x4946))
+:extrapreds ((x4947))
+:extrapreds ((x4948))
+:extrapreds ((x4949))
+:extrapreds ((x4950))
+:extrapreds ((x4951))
+:extrapreds ((x4952))
+:extrapreds ((x4953))
+:extrapreds ((x4954))
+:extrapreds ((x4955))
+:extrapreds ((x4956))
+:extrapreds ((x4957))
+:extrapreds ((x4958))
+:extrapreds ((x4959))
+:extrapreds ((x4960))
+:extrapreds ((x4961))
+:extrapreds ((x4962))
+:extrapreds ((x4963))
+:extrapreds ((x4964))
+:extrapreds ((x4965))
+:extrapreds ((x4966))
+:extrapreds ((x4967))
+:extrapreds ((x4968))
+:extrapreds ((x4969))
+:extrapreds ((x4970))
+:extrapreds ((x4971))
+:extrapreds ((x4972))
+:extrapreds ((x4973))
+:extrapreds ((x4974))
+:extrapreds ((x4975))
+:extrapreds ((x4976))
+:extrapreds ((x4977))
+:extrapreds ((x4978))
+:extrapreds ((x4979))
+:extrapreds ((x4980))
+:extrapreds ((x4981))
+:extrapreds ((x4982))
+:extrapreds ((x4983))
+:extrapreds ((x4984))
+:extrapreds ((x4985))
+:extrapreds ((x4986))
+:extrapreds ((x4987))
+:extrapreds ((x4988))
+:extrapreds ((x4989))
+:extrapreds ((x4990))
+:extrapreds ((x4991))
+:extrapreds ((x4992))
+:extrapreds ((x4993))
+:extrapreds ((x4994))
+:extrapreds ((x4995))
+:extrapreds ((x4996))
+:extrapreds ((x4997))
+:extrapreds ((x4998))
+:extrapreds ((x4999))
+:extrapreds ((x5000))
+:extrapreds ((x5001))
+:extrapreds ((x5002))
+:extrapreds ((x5003))
+:extrapreds ((x5004))
+:extrapreds ((x5005))
+:extrapreds ((x5006))
+:extrapreds ((x5007))
+:extrapreds ((x5008))
+:extrapreds ((x5009))
+:extrapreds ((x5010))
+:extrapreds ((x5011))
+:extrapreds ((x5012))
+:extrapreds ((x5013))
+:extrapreds ((x5014))
+:extrapreds ((x5015))
+:extrapreds ((x5016))
+:extrapreds ((x5017))
+:extrapreds ((x5018))
+:extrapreds ((x5019))
+:extrapreds ((x5020))
+:extrapreds ((x5021))
+:extrapreds ((x5022))
+:extrapreds ((x5023))
+:extrapreds ((x5024))
+:extrapreds ((x5025))
+:extrapreds ((x5026))
+:extrapreds ((x5027))
+:extrapreds ((x5028))
+:extrapreds ((x5029))
+:extrapreds ((x5030))
+:extrapreds ((x5031))
+:extrapreds ((x5032))
+:extrapreds ((x5033))
+:extrapreds ((x5034))
+:extrapreds ((x5035))
+:extrapreds ((x5036))
+:extrapreds ((x5037))
+:extrapreds ((x5038))
+:extrapreds ((x5039))
+:extrapreds ((x5040))
+:extrapreds ((x5041))
+:extrapreds ((x5042))
+:extrapreds ((x5043))
+:extrapreds ((x5044))
+:extrapreds ((x5045))
+:extrapreds ((x5046))
+:extrapreds ((x5047))
+:extrapreds ((x5048))
+:extrapreds ((x5049))
+:extrapreds ((x5050))
+:extrapreds ((x5051))
+:extrapreds ((x5052))
+:extrapreds ((x5053))
+:extrapreds ((x5054))
+:extrapreds ((x5055))
+:extrapreds ((x5056))
+:extrapreds ((x5057))
+:extrapreds ((x5058))
+:extrapreds ((x5059))
+:extrapreds ((x5060))
+:extrapreds ((x5061))
+:extrapreds ((x5062))
+:extrapreds ((x5063))
+:extrapreds ((x5064))
+:extrapreds ((x5065))
+:extrapreds ((x5066))
+:extrapreds ((x5067))
+:extrapreds ((x5068))
+:extrapreds ((x5069))
+:extrapreds ((x5070))
+:extrapreds ((x5071))
+:extrapreds ((x5072))
+:extrapreds ((x5073))
+:extrapreds ((x5074))
+:extrapreds ((x5075))
+:extrapreds ((x5076))
+:extrapreds ((x5077))
+:extrapreds ((x5078))
+:extrapreds ((x5079))
+:extrapreds ((x5080))
+:extrapreds ((x5081))
+:extrapreds ((x5082))
+:extrapreds ((x5083))
+:extrapreds ((x5084))
+:extrapreds ((x5085))
+:extrapreds ((x5086))
+:extrapreds ((x5087))
+:extrapreds ((x5088))
+:extrapreds ((x5089))
+:extrapreds ((x5090))
+:extrapreds ((x5091))
+:extrapreds ((x5092))
+:extrapreds ((x5093))
+:extrapreds ((x5094))
+:extrapreds ((x5095))
+:extrapreds ((x5096))
+:extrapreds ((x5097))
+:extrapreds ((x5098))
+:extrapreds ((x5099))
+:extrapreds ((x5100))
+:extrapreds ((x5101))
+:extrapreds ((x5102))
+:extrapreds ((x5103))
+:extrapreds ((x5104))
+:extrapreds ((x5105))
+:extrapreds ((x5106))
+:extrapreds ((x5107))
+:extrapreds ((x5108))
+:extrapreds ((x5109))
+:extrapreds ((x5110))
+:extrapreds ((x5111))
+:extrapreds ((x5112))
+:extrapreds ((x5113))
+:extrapreds ((x5114))
+:extrapreds ((x5115))
+:extrapreds ((x5116))
+:extrapreds ((x5117))
+:extrapreds ((x5118))
+:extrapreds ((x5119))
+:extrapreds ((x5120))
+:extrapreds ((x5121))
+:extrapreds ((x5122))
+:extrapreds ((x5123))
+:extrapreds ((x5124))
+:extrapreds ((x5125))
+:extrapreds ((x5126))
+:extrapreds ((x5127))
+:extrapreds ((x5128))
+:extrapreds ((x5129))
+:extrapreds ((x5130))
+:extrapreds ((x5131))
+:extrapreds ((x5132))
+:extrapreds ((x5133))
+:extrapreds ((x5134))
+:extrapreds ((x5135))
+:extrapreds ((x5136))
+:extrapreds ((x5137))
+:extrapreds ((x5138))
+:extrapreds ((x5139))
+:extrapreds ((x5140))
+:extrapreds ((x5141))
+:extrapreds ((x5142))
+:extrapreds ((x5143))
+:extrapreds ((x5144))
+:extrapreds ((x5145))
+:extrapreds ((x5146))
+:extrapreds ((x5147))
+:extrapreds ((x5148))
+:extrapreds ((x5149))
+:extrapreds ((x5150))
+:extrapreds ((x5151))
+:extrapreds ((x5152))
+:extrapreds ((x5153))
+:extrapreds ((x5154))
+:extrapreds ((x5155))
+:extrapreds ((x5156))
+:extrapreds ((x5157))
+:extrapreds ((x5158))
+:extrapreds ((x5159))
+:extrapreds ((x5160))
+:extrapreds ((x5161))
+:extrapreds ((x5162))
+:extrapreds ((x5163))
+:extrapreds ((x5164))
+:extrapreds ((x5165))
+:extrapreds ((x5166))
+:extrapreds ((x5167))
+:extrapreds ((x5168))
+:extrapreds ((x5169))
+:extrapreds ((x5170))
+:extrapreds ((x5171))
+:extrapreds ((x5172))
+:extrapreds ((x5173))
+:extrapreds ((x5174))
+:extrapreds ((x5175))
+:extrapreds ((x5176))
+:extrapreds ((x5177))
+:extrapreds ((x5178))
+:extrapreds ((x5179))
+:extrapreds ((x5180))
+:extrapreds ((x5181))
+:extrapreds ((x5182))
+:extrapreds ((x5183))
+:extrapreds ((x5184))
+:extrapreds ((x5185))
+:extrapreds ((x5186))
+:extrapreds ((x5187))
+:extrapreds ((x5188))
+:extrapreds ((x5189))
+:extrapreds ((x5190))
+:extrapreds ((x5191))
+:extrapreds ((x5192))
+:extrapreds ((x5193))
+:extrapreds ((x5194))
+:extrapreds ((x5195))
+:extrapreds ((x5196))
+:extrapreds ((x5197))
+:extrapreds ((x5198))
+:extrapreds ((x5199))
+:extrapreds ((x5200))
+:extrapreds ((x5201))
+:extrapreds ((x5202))
+:extrapreds ((x5203))
+:extrapreds ((x5204))
+:extrapreds ((x5205))
+:extrapreds ((x5206))
+:extrapreds ((x5207))
+:extrapreds ((x5208))
+:extrapreds ((x5209))
+:extrapreds ((x5210))
+:extrapreds ((x5211))
+:extrapreds ((x5212))
+:extrapreds ((x5213))
+:extrapreds ((x5214))
+:extrapreds ((x5215))
+:extrapreds ((x5216))
+:extrapreds ((x5217))
+:extrapreds ((x5218))
+:extrapreds ((x5219))
+:extrapreds ((x5220))
+:extrapreds ((x5221))
+:extrapreds ((x5222))
+:extrapreds ((x5223))
+:extrapreds ((x5224))
+:extrapreds ((x5225))
+:extrapreds ((x5226))
+:extrapreds ((x5227))
+:extrapreds ((x5228))
+:extrapreds ((x5229))
+:extrapreds ((x5230))
+:extrapreds ((x5231))
+:extrapreds ((x5232))
+:extrapreds ((x5233))
+:extrapreds ((x5234))
+:extrapreds ((x5235))
+:extrapreds ((x5236))
+:extrapreds ((x5237))
+:extrapreds ((x5238))
+:extrapreds ((x5239))
+:extrapreds ((x5240))
+:extrapreds ((x5241))
+:extrapreds ((x5242))
+:extrapreds ((x5243))
+:extrapreds ((x5244))
+:extrapreds ((x5245))
+:extrapreds ((x5246))
+:extrapreds ((x5247))
+:extrapreds ((x5248))
+:extrapreds ((x5249))
+:extrapreds ((x5250))
+:extrapreds ((x5251))
+:extrapreds ((x5252))
+:extrapreds ((x5253))
+:extrapreds ((x5254))
+:extrapreds ((x5255))
+:extrapreds ((x5256))
+:extrapreds ((x5257))
+:extrapreds ((x5258))
+:extrapreds ((x5259))
+:extrapreds ((x5260))
+:extrapreds ((x5261))
+:extrapreds ((x5262))
+:extrapreds ((x5263))
+:extrapreds ((x5264))
+:extrapreds ((x5265))
+:extrapreds ((x5266))
+:extrapreds ((x5267))
+:extrapreds ((x5268))
+:extrapreds ((x5269))
+:extrapreds ((x5270))
+:extrapreds ((x5271))
+:extrapreds ((x5272))
+:extrapreds ((x5273))
+:extrapreds ((x5274))
+:extrapreds ((x5275))
+:extrapreds ((x5276))
+:extrapreds ((x5277))
+:extrapreds ((x5278))
+:extrapreds ((x5279))
+:extrapreds ((x5280))
+:extrapreds ((x5281))
+:extrapreds ((x5282))
+:extrapreds ((x5283))
+:extrapreds ((x5284))
+:extrapreds ((x5285))
+:extrapreds ((x5286))
+:extrapreds ((x5287))
+:extrapreds ((x5288))
+:extrapreds ((x5289))
+:extrapreds ((x5290))
+:extrapreds ((x5291))
+:extrapreds ((x5292))
+:extrapreds ((x5293))
+:extrapreds ((x5294))
+:extrapreds ((x5295))
+:extrapreds ((x5296))
+:extrapreds ((x5297))
+:extrapreds ((x5298))
+:extrapreds ((x5299))
+:extrapreds ((x5300))
+:extrapreds ((x5301))
+:extrapreds ((x5302))
+:extrapreds ((x5303))
+:extrapreds ((x5304))
+:extrapreds ((x5305))
+:extrapreds ((x5306))
+:extrapreds ((x5307))
+:extrapreds ((x5308))
+:extrapreds ((x5309))
+:extrapreds ((x5310))
+:extrapreds ((x5311))
+:extrapreds ((x5312))
+:extrapreds ((x5313))
+:extrapreds ((x5314))
+:extrapreds ((x5315))
+:extrapreds ((x5316))
+:extrapreds ((x5317))
+:extrapreds ((x5318))
+:extrapreds ((x5319))
+:extrapreds ((x5320))
+:extrapreds ((x5321))
+:extrapreds ((x5322))
+:extrapreds ((x5323))
+:extrapreds ((x5324))
+:extrapreds ((x5325))
+:extrapreds ((x5326))
+:extrapreds ((x5327))
+:extrapreds ((x5328))
+:extrapreds ((x5329))
+:extrapreds ((x5330))
+:extrapreds ((x5331))
+:extrapreds ((x5332))
+:extrapreds ((x5333))
+:extrapreds ((x5334))
+:extrapreds ((x5335))
+:extrapreds ((x5336))
+:extrapreds ((x5337))
+:extrapreds ((x5338))
+:extrapreds ((x5339))
+:extrapreds ((x5340))
+:extrapreds ((x5341))
+:extrapreds ((x5342))
+:extrapreds ((x5343))
+:extrapreds ((x5344))
+:extrapreds ((x5345))
+:extrapreds ((x5346))
+:extrapreds ((x5347))
+:extrapreds ((x5348))
+:extrapreds ((x5349))
+:extrapreds ((x5350))
+:extrapreds ((x5351))
+:extrapreds ((x5352))
+:extrapreds ((x5353))
+:extrapreds ((x5354))
+:extrapreds ((x5355))
+:extrapreds ((x5356))
+:extrapreds ((x5357))
+:extrapreds ((x5358))
+:extrapreds ((x5359))
+:extrapreds ((x5360))
+:extrapreds ((x5361))
+:extrapreds ((x5362))
+:extrapreds ((x5363))
+:extrapreds ((x5364))
+:extrapreds ((x5365))
+:extrapreds ((x5366))
+:extrapreds ((x5367))
+:extrapreds ((x5368))
+:extrapreds ((x5369))
+:extrapreds ((x5370))
+:extrapreds ((x5371))
+:extrapreds ((x5372))
+:extrapreds ((x5373))
+:extrapreds ((x5374))
+:extrapreds ((x5375))
+:extrapreds ((x5376))
+:extrapreds ((x5377))
+:extrapreds ((x5378))
+:extrapreds ((x5379))
+:extrapreds ((x5380))
+:extrapreds ((x5381))
+:extrapreds ((x5382))
+:extrapreds ((x5383))
+:extrapreds ((x5384))
+:extrapreds ((x5385))
+:extrapreds ((x5386))
+:extrapreds ((x5387))
+:extrapreds ((x5388))
+:extrapreds ((x5389))
+:extrapreds ((x5390))
+:extrapreds ((x5391))
+:extrapreds ((x5392))
+:extrapreds ((x5393))
+:extrapreds ((x5394))
+:extrapreds ((x5395))
+:extrapreds ((x5396))
+:extrapreds ((x5397))
+:extrapreds ((x5398))
+:extrapreds ((x5399))
+:extrapreds ((x5400))
+:extrapreds ((x5401))
+:extrapreds ((x5402))
+:extrapreds ((x5403))
+:extrapreds ((x5404))
+:extrapreds ((x5405))
+:extrapreds ((x5406))
+:extrapreds ((x5407))
+:extrapreds ((x5408))
+:extrapreds ((x5409))
+:extrapreds ((x5410))
+:extrapreds ((x5411))
+:extrapreds ((x5412))
+:extrapreds ((x5413))
+:extrapreds ((x5414))
+:extrapreds ((x5415))
+:extrapreds ((x5416))
+:extrapreds ((x5417))
+:extrapreds ((x5418))
+:extrapreds ((x5419))
+:extrapreds ((x5420))
+:extrapreds ((x5421))
+:extrapreds ((x5422))
+:extrapreds ((x5423))
+:extrapreds ((x5424))
+:extrapreds ((x5425))
+:extrapreds ((x5426))
+:extrapreds ((x5427))
+:extrapreds ((x5428))
+:extrapreds ((x5429))
+:extrapreds ((x5430))
+:extrapreds ((x5431))
+:extrapreds ((x5432))
+:extrapreds ((x5433))
+:extrapreds ((x5434))
+:extrapreds ((x5435))
+:extrapreds ((x5436))
+:extrapreds ((x5437))
+:extrapreds ((x5438))
+:extrapreds ((x5439))
+:extrapreds ((x5440))
+:extrapreds ((x5441))
+:extrapreds ((x5442))
+:extrapreds ((x5443))
+:extrapreds ((x5444))
+:extrapreds ((x5445))
+:extrapreds ((x5446))
+:extrapreds ((x5447))
+:extrapreds ((x5448))
+:extrapreds ((x5449))
+:extrapreds ((x5450))
+:extrapreds ((x5451))
+:extrapreds ((x5452))
+:extrapreds ((x5453))
+:extrapreds ((x5454))
+:extrapreds ((x5455))
+:extrapreds ((x5456))
+:extrapreds ((x5457))
+:extrapreds ((x5458))
+:extrapreds ((x5459))
+:extrapreds ((x5460))
+:extrapreds ((x5461))
+:extrapreds ((x5462))
+:extrapreds ((x5463))
+:extrapreds ((x5464))
+:extrapreds ((x5465))
+:extrapreds ((x5466))
+:extrapreds ((x5467))
+:extrapreds ((x5468))
+:extrapreds ((x5469))
+:extrapreds ((x5470))
+:extrapreds ((x5471))
+:extrapreds ((x5472))
+:extrapreds ((x5473))
+:extrapreds ((x5474))
+:extrapreds ((x5475))
+:extrapreds ((x5476))
+:extrapreds ((x5477))
+:extrapreds ((x5478))
+:extrapreds ((x5479))
+:extrapreds ((x5480))
+:extrapreds ((x5481))
+:extrapreds ((x5482))
+:extrapreds ((x5483))
+:extrapreds ((x5484))
+:extrapreds ((x5485))
+:extrapreds ((x5486))
+:extrapreds ((x5487))
+:extrapreds ((x5488))
+:extrapreds ((x5489))
+:extrapreds ((x5490))
+:extrapreds ((x5491))
+:extrapreds ((x5492))
+:extrapreds ((x5493))
+:extrapreds ((x5494))
+:extrapreds ((x5495))
+:extrapreds ((x5496))
+:extrapreds ((x5497))
+:extrapreds ((x5498))
+:extrapreds ((x5499))
+:extrapreds ((x5500))
+:extrapreds ((x5501))
+:extrapreds ((x5502))
+:extrapreds ((x5503))
+:extrapreds ((x5504))
+:extrapreds ((x5505))
+:extrapreds ((x5506))
+:extrapreds ((x5507))
+:extrapreds ((x5508))
+:extrapreds ((x5509))
+:extrapreds ((x5510))
+:extrapreds ((x5511))
+:extrapreds ((x5512))
+:extrapreds ((x5513))
+:extrapreds ((x5514))
+:extrapreds ((x5515))
+:extrapreds ((x5516))
+:extrapreds ((x5517))
+:extrapreds ((x5518))
+:extrapreds ((x5519))
+:extrapreds ((x5520))
+:extrapreds ((x5521))
+:extrapreds ((x5522))
+:extrapreds ((x5523))
+:extrapreds ((x5524))
+:extrapreds ((x5525))
+:extrapreds ((x5526))
+:extrapreds ((x5527))
+:extrapreds ((x5528))
+:extrapreds ((x5529))
+:extrapreds ((x5530))
+:extrapreds ((x5531))
+:extrapreds ((x5532))
+:extrapreds ((x5533))
+:extrapreds ((x5534))
+:extrapreds ((x5535))
+:extrapreds ((x5536))
+:extrapreds ((x5537))
+:extrapreds ((x5538))
+:extrapreds ((x5539))
+:extrapreds ((x5540))
+:extrapreds ((x5541))
+:extrapreds ((x5542))
+:extrapreds ((x5543))
+:extrapreds ((x5544))
+:extrapreds ((x5545))
+:extrapreds ((x5546))
+:extrapreds ((x5547))
+:extrapreds ((x5548))
+:extrapreds ((x5549))
+:extrapreds ((x5550))
+:extrapreds ((x5551))
+:extrapreds ((x5552))
+:extrapreds ((x5553))
+:extrapreds ((x5554))
+:extrapreds ((x5555))
+:extrapreds ((x5556))
+:extrapreds ((x5557))
+:extrapreds ((x5558))
+:extrapreds ((x5559))
+:extrapreds ((x5560))
+:extrapreds ((x5561))
+:extrapreds ((x5562))
+:extrapreds ((x5563))
+:extrapreds ((x5564))
+:extrapreds ((x5565))
+:extrapreds ((x5566))
+:extrapreds ((x5567))
+:extrapreds ((x5568))
+:extrapreds ((x5569))
+:extrapreds ((x5570))
+:extrapreds ((x5571))
+:extrapreds ((x5572))
+:extrapreds ((x5573))
+:extrapreds ((x5574))
+:extrapreds ((x5575))
+:extrapreds ((x5576))
+:extrapreds ((x5577))
+:extrapreds ((x5578))
+:extrapreds ((x5579))
+:extrapreds ((x5580))
+:extrapreds ((x5581))
+:extrapreds ((x5582))
+:extrapreds ((x5583))
+:extrapreds ((x5584))
+:extrapreds ((x5585))
+:extrapreds ((x5586))
+:extrapreds ((x5587))
+:extrapreds ((x5588))
+:extrapreds ((x5589))
+:extrapreds ((x5590))
+:extrapreds ((x5591))
+:extrapreds ((x5592))
+:extrapreds ((x5593))
+:extrapreds ((x5594))
+:extrapreds ((x5595))
+:extrapreds ((x5596))
+:extrapreds ((x5597))
+:extrapreds ((x5598))
+:extrapreds ((x5599))
+:extrapreds ((x5600))
+:extrapreds ((x5601))
+:extrapreds ((x5602))
+:extrapreds ((x5603))
+:extrapreds ((x5604))
+:extrapreds ((x5605))
+:extrapreds ((x5606))
+:extrapreds ((x5607))
+:extrapreds ((x5608))
+:extrapreds ((x5609))
+:extrapreds ((x5610))
+:extrapreds ((x5611))
+:extrapreds ((x5612))
+:extrapreds ((x5613))
+:extrapreds ((x5614))
+:extrapreds ((x5615))
+:extrapreds ((x5616))
+:extrapreds ((x5617))
+:extrapreds ((x5618))
+:extrapreds ((x5619))
+:extrapreds ((x5620))
+:extrapreds ((x5621))
+:extrapreds ((x5622))
+:extrapreds ((x5623))
+:extrapreds ((x5624))
+:extrapreds ((x5625))
+:extrapreds ((x5626))
+:extrapreds ((x5627))
+:extrapreds ((x5628))
+:extrapreds ((x5629))
+:extrapreds ((x5630))
+:extrapreds ((x5631))
+:extrapreds ((x5632))
+:extrapreds ((x5633))
+:extrapreds ((x5634))
+:extrapreds ((x5635))
+:extrapreds ((x5636))
+:extrapreds ((x5637))
+:extrapreds ((x5638))
+:extrapreds ((x5639))
+:extrapreds ((x5640))
+:extrapreds ((x5641))
+:extrapreds ((x5642))
+:extrapreds ((x5643))
+:extrapreds ((x5644))
+:extrapreds ((x5645))
+:extrapreds ((x5646))
+:extrapreds ((x5647))
+:extrapreds ((x5648))
+:extrapreds ((x5649))
+:extrapreds ((x5650))
+:extrapreds ((x5651))
+:extrapreds ((x5652))
+:extrapreds ((x5653))
+:extrapreds ((x5654))
+:extrapreds ((x5655))
+:extrapreds ((x5656))
+:extrapreds ((x5657))
+:extrapreds ((x5658))
+:extrapreds ((x5659))
+:extrapreds ((x5660))
+:extrapreds ((x5661))
+:extrapreds ((x5662))
+:extrapreds ((x5663))
+:extrapreds ((x5664))
+:extrapreds ((x5665))
+:extrapreds ((x5666))
+:extrapreds ((x5667))
+:extrapreds ((x5668))
+:extrapreds ((x5669))
+:extrapreds ((x5670))
+:extrapreds ((x5671))
+:extrapreds ((x5672))
+:extrapreds ((x5673))
+:extrapreds ((x5674))
+:extrapreds ((x5675))
+:extrapreds ((x5676))
+:extrapreds ((x5677))
+:extrapreds ((x5678))
+:extrapreds ((x5679))
+:extrapreds ((x5680))
+:extrapreds ((x5681))
+:extrapreds ((x5682))
+:extrapreds ((x5683))
+:extrapreds ((x5684))
+:extrapreds ((x5685))
+:extrapreds ((x5686))
+:extrapreds ((x5687))
+:extrapreds ((x5688))
+:extrapreds ((x5689))
+:extrapreds ((x5690))
+:extrapreds ((x5691))
+:extrapreds ((x5692))
+:extrapreds ((x5693))
+:extrapreds ((x5694))
+:extrapreds ((x5695))
+:extrapreds ((x5696))
+:extrapreds ((x5697))
+:extrapreds ((x5698))
+:extrapreds ((x5699))
+:extrapreds ((x5700))
+:extrapreds ((x5701))
+:extrapreds ((x5702))
+:extrapreds ((x5703))
+:extrapreds ((x5704))
+:extrapreds ((x5705))
+:extrapreds ((x5706))
+:extrapreds ((x5707))
+:extrapreds ((x5708))
+:extrapreds ((x5709))
+:extrapreds ((x5710))
+:extrapreds ((x5711))
+:extrapreds ((x5712))
+:extrapreds ((x5713))
+:extrapreds ((x5714))
+:extrapreds ((x5715))
+:extrapreds ((x5716))
+:extrapreds ((x5717))
+:extrapreds ((x5718))
+:extrapreds ((x5719))
+:extrapreds ((x5720))
+:extrapreds ((x5721))
+:extrapreds ((x5722))
+:extrapreds ((x5723))
+:extrapreds ((x5724))
+:extrapreds ((x5725))
+:extrapreds ((x5726))
+:extrapreds ((x5727))
+:extrapreds ((x5728))
+:extrapreds ((x5729))
+:extrapreds ((x5730))
+:extrapreds ((x5731))
+:extrapreds ((x5732))
+:extrapreds ((x5733))
+:extrapreds ((x5734))
+:extrapreds ((x5735))
+:extrapreds ((x5736))
+:extrapreds ((x5737))
+:extrapreds ((x5738))
+:extrapreds ((x5739))
+:extrapreds ((x5740))
+:extrapreds ((x5741))
+:extrapreds ((x5742))
+:extrapreds ((x5743))
+:extrapreds ((x5744))
+:extrapreds ((x5745))
+:extrapreds ((x5746))
+:extrapreds ((x5747))
+:extrapreds ((x5748))
+:extrapreds ((x5749))
+:extrapreds ((x5750))
+:extrapreds ((x5751))
+:extrapreds ((x5752))
+:extrapreds ((x5753))
+:extrapreds ((x5754))
+:extrapreds ((x5755))
+:extrapreds ((x5756))
+:extrapreds ((x5757))
+:extrapreds ((x5758))
+:extrapreds ((x5759))
+:extrapreds ((x5760))
+:extrapreds ((x5761))
+:extrapreds ((x5762))
+:extrapreds ((x5763))
+:extrapreds ((x5764))
+:extrapreds ((x5765))
+:extrapreds ((x5766))
+:extrapreds ((x5767))
+:extrapreds ((x5768))
+:extrapreds ((x5769))
+:extrapreds ((x5770))
+:extrapreds ((x5771))
+:extrapreds ((x5772))
+:extrapreds ((x5773))
+:extrapreds ((x5774))
+:extrapreds ((x5775))
+:extrapreds ((x5776))
+:extrapreds ((x5777))
+:extrapreds ((x5778))
+:extrapreds ((x5779))
+:extrapreds ((x5780))
+:extrapreds ((x5781))
+:extrapreds ((x5782))
+:extrapreds ((x5783))
+:extrapreds ((x5784))
+:extrapreds ((x5785))
+:extrapreds ((x5786))
+:extrapreds ((x5787))
+:extrapreds ((x5788))
+:extrapreds ((x5789))
+:extrapreds ((x5790))
+:extrapreds ((x5791))
+:extrapreds ((x5792))
+:extrapreds ((x5793))
+:extrapreds ((x5794))
+:extrapreds ((x5795))
+:extrapreds ((x5796))
+:extrapreds ((x5797))
+:extrapreds ((x5798))
+:extrapreds ((x5799))
+:extrapreds ((x5800))
+:extrapreds ((x5801))
+:extrapreds ((x5802))
+:extrapreds ((x5803))
+:extrapreds ((x5804))
+:extrapreds ((x5805))
+:extrapreds ((x5806))
+:extrapreds ((x5807))
+:extrapreds ((x5808))
+:extrapreds ((x5809))
+:extrapreds ((x5810))
+:extrapreds ((x5811))
+:extrapreds ((x5812))
+:extrapreds ((x5813))
+:extrapreds ((x5814))
+:extrapreds ((x5815))
+:extrapreds ((x5816))
+:extrapreds ((x5817))
+:extrapreds ((x5818))
+:extrapreds ((x5819))
+:extrapreds ((x5820))
+:extrapreds ((x5821))
+:extrapreds ((x5822))
+:extrapreds ((x5823))
+:extrapreds ((x5824))
+:extrapreds ((x5825))
+:extrapreds ((x5826))
+:extrapreds ((x5827))
+:extrapreds ((x5828))
+:extrapreds ((x5829))
+:extrapreds ((x5830))
+:extrapreds ((x5831))
+:extrapreds ((x5832))
+:extrapreds ((x5833))
+:extrapreds ((x5834))
+:extrapreds ((x5835))
+:extrapreds ((x5836))
+:extrapreds ((x5837))
+:extrapreds ((x5838))
+:extrapreds ((x5839))
+:extrapreds ((x5840))
+:extrapreds ((x5841))
+:extrapreds ((x5842))
+:extrapreds ((x5843))
+:extrapreds ((x5844))
+:extrapreds ((x5845))
+:extrapreds ((x5846))
+:extrapreds ((x5847))
+:extrapreds ((x5848))
+:extrapreds ((x5849))
+:extrapreds ((x5850))
+:extrapreds ((x5851))
+:extrapreds ((x5852))
+:extrapreds ((x5853))
+:extrapreds ((x5854))
+:extrapreds ((x5855))
+:extrapreds ((x5856))
+:extrapreds ((x5857))
+:extrapreds ((x5858))
+:extrapreds ((x5859))
+:extrapreds ((x5860))
+:extrapreds ((x5861))
+:extrapreds ((x5862))
+:extrapreds ((x5863))
+:extrapreds ((x5864))
+:extrapreds ((x5865))
+:extrapreds ((x5866))
+:extrapreds ((x5867))
+:extrapreds ((x5868))
+:extrapreds ((x5869))
+:extrapreds ((x5870))
+:extrapreds ((x5871))
+:extrapreds ((x5872))
+:extrapreds ((x5873))
+:extrapreds ((x5874))
+:extrapreds ((x5875))
+:extrapreds ((x5876))
+:extrapreds ((x5877))
+:extrapreds ((x5878))
+:extrapreds ((x5879))
+:extrapreds ((x5880))
+:extrapreds ((x5881))
+:extrapreds ((x5882))
+:extrapreds ((x5883))
+:extrapreds ((x5884))
+:extrapreds ((x5885))
+:extrapreds ((x5886))
+:extrapreds ((x5887))
+:extrapreds ((x5888))
+:extrapreds ((x5889))
+:extrapreds ((x5890))
+:extrapreds ((x5891))
+:extrapreds ((x5892))
+:extrapreds ((x5893))
+:extrapreds ((x5894))
+:extrapreds ((x5895))
+:extrapreds ((x5896))
+:extrapreds ((x5897))
+:extrapreds ((x5898))
+:extrapreds ((x5899))
+:extrapreds ((x5900))
+:extrapreds ((x5901))
+:extrapreds ((x5902))
+:extrapreds ((x5903))
+:extrapreds ((x5904))
+:extrapreds ((x5905))
+:extrapreds ((x5906))
+:extrapreds ((x5907))
+:extrapreds ((x5908))
+:extrapreds ((x5909))
+:extrapreds ((x5910))
+:extrapreds ((x5911))
+:extrapreds ((x5912))
+:extrapreds ((x5913))
+:extrapreds ((x5914))
+:extrapreds ((x5915))
+:extrapreds ((x5916))
+:extrapreds ((x5917))
+:extrapreds ((x5918))
+:extrapreds ((x5919))
+:extrapreds ((x5920))
+:extrapreds ((x5921))
+:extrapreds ((x5922))
+:extrapreds ((x5923))
+:extrapreds ((x5924))
+:extrapreds ((x5925))
+:extrapreds ((x5926))
+:extrapreds ((x5927))
+:extrapreds ((x5928))
+:extrapreds ((x5929))
+:extrapreds ((x5930))
+:extrapreds ((x5931))
+:extrapreds ((x5932))
+:extrapreds ((x5933))
+:extrapreds ((x5934))
+:extrapreds ((x5935))
+:extrapreds ((x5936))
+:extrapreds ((x5937))
+:extrapreds ((x5938))
+:extrapreds ((x5939))
+:extrapreds ((x5940))
+:extrapreds ((x5941))
+:extrapreds ((x5942))
+:extrapreds ((x5943))
+:extrapreds ((x5944))
+:extrapreds ((x5945))
+:extrapreds ((x5946))
+:extrapreds ((x5947))
+:extrapreds ((x5948))
+:extrapreds ((x5949))
+:extrapreds ((x5950))
+:extrapreds ((x5951))
+:extrapreds ((x5952))
+:extrapreds ((x5953))
+:extrapreds ((x5954))
+:extrapreds ((x5955))
+:extrapreds ((x5956))
+:extrapreds ((x5957))
+:extrapreds ((x5958))
+:extrapreds ((x5959))
+:extrapreds ((x5960))
+:extrapreds ((x5961))
+:extrapreds ((x5962))
+:extrapreds ((x5963))
+:extrapreds ((x5964))
+:extrapreds ((x5965))
+:extrapreds ((x5966))
+:extrapreds ((x5967))
+:extrapreds ((x5968))
+:extrapreds ((x5969))
+:extrapreds ((x5970))
+:extrapreds ((x5971))
+:extrapreds ((x5972))
+:extrapreds ((x5973))
+:extrapreds ((x5974))
+:extrapreds ((x5975))
+:extrapreds ((x5976))
+:extrapreds ((x5977))
+:extrapreds ((x5978))
+:extrapreds ((x5979))
+:extrapreds ((x5980))
+:extrapreds ((x5981))
+:extrapreds ((x5982))
+:extrapreds ((x5983))
+:extrapreds ((x5984))
+:extrapreds ((x5985))
+:extrapreds ((x5986))
+:extrapreds ((x5987))
+:extrapreds ((x5988))
+:extrapreds ((x5989))
+:extrapreds ((x5990))
+:extrapreds ((x5991))
+:extrapreds ((x5992))
+:extrapreds ((x5993))
+:extrapreds ((x5994))
+:extrapreds ((x5995))
+:extrapreds ((x5996))
+:extrapreds ((x5997))
+:extrapreds ((x5998))
+:extrapreds ((x5999))
+:extrapreds ((x6000))
+:extrapreds ((x6001))
+:extrapreds ((x6002))
+:extrapreds ((x6003))
+:extrapreds ((x6004))
+:extrapreds ((x6005))
+:extrapreds ((x6006))
+:extrapreds ((x6007))
+:extrapreds ((x6008))
+:extrapreds ((x6009))
+:extrapreds ((x6010))
+:extrapreds ((x6011))
+:extrapreds ((x6012))
+:extrapreds ((x6013))
+:extrapreds ((x6014))
+:extrapreds ((x6015))
+:extrapreds ((x6016))
+:extrapreds ((x6017))
+:extrapreds ((x6018))
+:extrapreds ((x6019))
+:extrapreds ((x6020))
+:extrapreds ((x6021))
+:extrapreds ((x6022))
+:extrapreds ((x6023))
+:extrapreds ((x6024))
+:extrapreds ((x6025))
+:extrapreds ((x6026))
+:extrapreds ((x6027))
+:extrapreds ((x6028))
+:extrapreds ((x6029))
+:extrapreds ((x6030))
+:extrapreds ((x6031))
+:extrapreds ((x6032))
+:extrapreds ((x6033))
+:extrapreds ((x6034))
+:extrapreds ((x6035))
+:extrapreds ((x6036))
+:extrapreds ((x6037))
+:extrapreds ((x6038))
+:extrapreds ((x6039))
+:extrapreds ((x6040))
+:extrapreds ((x6041))
+:extrapreds ((x6042))
+:extrapreds ((x6043))
+:extrapreds ((x6044))
+:extrapreds ((x6045))
+:extrapreds ((x6046))
+:extrapreds ((x6047))
+:extrapreds ((x6048))
+:extrapreds ((x6049))
+:extrapreds ((x6050))
+:extrapreds ((x6051))
+:extrapreds ((x6052))
+:extrapreds ((x6053))
+:extrapreds ((x6054))
+:extrapreds ((x6055))
+:extrapreds ((x6056))
+:extrapreds ((x6057))
+:extrapreds ((x6058))
+:extrapreds ((x6059))
+:extrapreds ((x6060))
+:extrapreds ((x6061))
+:extrapreds ((x6062))
+:extrapreds ((x6063))
+:extrapreds ((x6064))
+:extrapreds ((x6065))
+:extrapreds ((x6066))
+:extrapreds ((x6067))
+:extrapreds ((x6068))
+:extrapreds ((x6069))
+:extrapreds ((x6070))
+:extrapreds ((x6071))
+:extrapreds ((x6072))
+:extrapreds ((x6073))
+:extrapreds ((x6074))
+:extrapreds ((x6075))
+:extrapreds ((x6076))
+:extrapreds ((x6077))
+:extrapreds ((x6078))
+:extrapreds ((x6079))
+:extrapreds ((x6080))
+:extrapreds ((x6081))
+:extrapreds ((x6082))
+:extrapreds ((x6083))
+:extrapreds ((x6084))
+:extrapreds ((x6085))
+:extrapreds ((x6086))
+:extrapreds ((x6087))
+:extrapreds ((x6088))
+:extrapreds ((x6089))
+:extrapreds ((x6090))
+:extrapreds ((x6091))
+:extrapreds ((x6092))
+:extrapreds ((x6093))
+:extrapreds ((x6094))
+:extrapreds ((x6095))
+:extrapreds ((x6096))
+:extrapreds ((x6097))
+:extrapreds ((x6098))
+:extrapreds ((x6099))
+:extrapreds ((x6100))
+:extrapreds ((x6101))
+:extrapreds ((x6102))
+:extrapreds ((x6103))
+:extrapreds ((x6104))
+:extrapreds ((x6105))
+:extrapreds ((x6106))
+:extrapreds ((x6107))
+:extrapreds ((x6108))
+:extrapreds ((x6109))
+:extrapreds ((x6110))
+:extrapreds ((x6111))
+:extrapreds ((x6112))
+:extrapreds ((x6113))
+:extrapreds ((x6114))
+:extrapreds ((x6115))
+:extrapreds ((x6116))
+:extrapreds ((x6117))
+:extrapreds ((x6118))
+:extrapreds ((x6119))
+:extrapreds ((x6120))
+:extrapreds ((x6121))
+:extrapreds ((x6122))
+:extrapreds ((x6123))
+:extrapreds ((x6124))
+:extrapreds ((x6125))
+:extrapreds ((x6126))
+:extrapreds ((x6127))
+:extrapreds ((x6128))
+:extrapreds ((x6129))
+:extrapreds ((x6130))
+:extrapreds ((x6131))
+:extrapreds ((x6132))
+:extrapreds ((x6133))
+:extrapreds ((x6134))
+:extrapreds ((x6135))
+:extrapreds ((x6136))
+:extrapreds ((x6137))
+:extrapreds ((x6138))
+:extrapreds ((x6139))
+:extrapreds ((x6140))
+:extrapreds ((x6141))
+:extrapreds ((x6142))
+:extrapreds ((x6143))
+:extrapreds ((x6144))
+:extrapreds ((x6145))
+:extrapreds ((x6146))
+:extrapreds ((x6147))
+:extrapreds ((x6148))
+:extrapreds ((x6149))
+:extrapreds ((x6150))
+:extrapreds ((x6151))
+:extrapreds ((x6152))
+:extrapreds ((x6153))
+:extrapreds ((x6154))
+:extrapreds ((x6155))
+:extrapreds ((x6156))
+:extrapreds ((x6157))
+:extrapreds ((x6158))
+:extrapreds ((x6159))
+:extrapreds ((x6160))
+:extrapreds ((x6161))
+:extrapreds ((x6162))
+:extrapreds ((x6163))
+:extrapreds ((x6164))
+:extrapreds ((x6165))
+:extrapreds ((x6166))
+:extrapreds ((x6167))
+:extrapreds ((x6168))
+:extrapreds ((x6169))
+:extrapreds ((x6170))
+:extrapreds ((x6171))
+:extrapreds ((x6172))
+:extrapreds ((x6173))
+:extrapreds ((x6174))
+:extrapreds ((x6175))
+:extrapreds ((x6176))
+:extrapreds ((x6177))
+:extrapreds ((x6178))
+:extrapreds ((x6179))
+:extrapreds ((x6180))
+:extrapreds ((x6181))
+:extrapreds ((x6182))
+:extrapreds ((x6183))
+:extrapreds ((x6184))
+:extrapreds ((x6185))
+:extrapreds ((x6186))
+:extrapreds ((x6187))
+:extrapreds ((x6188))
+:extrapreds ((x6189))
+:extrapreds ((x6190))
+:extrapreds ((x6191))
+:extrapreds ((x6192))
+:extrapreds ((x6193))
+:extrapreds ((x6194))
+:extrapreds ((x6195))
+:extrapreds ((x6196))
+:extrapreds ((x6197))
+:extrapreds ((x6198))
+:extrapreds ((x6199))
+:extrapreds ((x6200))
+:extrapreds ((x6201))
+:extrapreds ((x6202))
+:extrapreds ((x6203))
+:extrapreds ((x6204))
+:extrapreds ((x6205))
+:extrapreds ((x6206))
+:extrapreds ((x6207))
+:extrapreds ((x6208))
+:extrapreds ((x6209))
+:extrapreds ((x6210))
+:extrapreds ((x6211))
+:extrapreds ((x6212))
+:extrapreds ((x6213))
+:extrapreds ((x6214))
+:extrapreds ((x6215))
+:extrapreds ((x6216))
+:extrapreds ((x6217))
+:extrapreds ((x6218))
+:extrapreds ((x6219))
+:extrapreds ((x6220))
+:extrapreds ((x6221))
+:extrapreds ((x6222))
+:extrapreds ((x6223))
+:extrapreds ((x6224))
+:extrapreds ((x6225))
+:extrapreds ((x6226))
+:extrapreds ((x6227))
+:extrapreds ((x6228))
+:extrapreds ((x6229))
+:extrapreds ((x6230))
+:extrapreds ((x6231))
+:extrapreds ((x6232))
+:extrapreds ((x6233))
+:extrapreds ((x6234))
+:extrapreds ((x6235))
+:extrapreds ((x6236))
+:extrapreds ((x6237))
+:extrapreds ((x6238))
+:extrapreds ((x6239))
+:extrapreds ((x6240))
+:extrapreds ((x6241))
+:extrapreds ((x6242))
+:extrapreds ((x6243))
+:extrapreds ((x6244))
+:extrapreds ((x6245))
+:extrapreds ((x6246))
+:extrapreds ((x6247))
+:extrapreds ((x6248))
+:extrapreds ((x6249))
+:extrapreds ((x6250))
+:extrapreds ((x6251))
+:extrapreds ((x6252))
+:extrapreds ((x6253))
+:extrapreds ((x6254))
+:extrapreds ((x6255))
+:extrapreds ((x6256))
+:extrapreds ((x6257))
+:extrapreds ((x6258))
+:extrapreds ((x6259))
+:extrapreds ((x6260))
+:extrapreds ((x6261))
+:extrapreds ((x6262))
+:extrapreds ((x6263))
+:extrapreds ((x6264))
+:extrapreds ((x6265))
+:extrapreds ((x6266))
+:extrapreds ((x6267))
+:extrapreds ((x6268))
+:extrapreds ((x6269))
+:extrapreds ((x6270))
+:extrapreds ((x6271))
+:extrapreds ((x6272))
+:extrapreds ((x6273))
+:extrapreds ((x6274))
+:extrapreds ((x6275))
+:extrapreds ((x6276))
+:extrapreds ((x6277))
+:extrapreds ((x6278))
+:extrapreds ((x6279))
+:extrapreds ((x6280))
+:extrapreds ((x6281))
+:extrapreds ((x6282))
+:extrapreds ((x6283))
+:extrapreds ((x6284))
+:extrapreds ((x6285))
+:extrapreds ((x6286))
+:extrapreds ((x6287))
+:extrapreds ((x6288))
+:extrapreds ((x6289))
+:extrapreds ((x6290))
+:extrapreds ((x6291))
+:extrapreds ((x6292))
+:extrapreds ((x6293))
+:extrapreds ((x6294))
+:extrapreds ((x6295))
+:extrapreds ((x6296))
+:extrapreds ((x6297))
+:extrapreds ((x6298))
+:extrapreds ((x6299))
+:extrapreds ((x6300))
+:extrapreds ((x6301))
+:extrapreds ((x6302))
+:extrapreds ((x6303))
+:extrapreds ((x6304))
+:extrapreds ((x6305))
+:extrapreds ((x6306))
+:extrapreds ((x6307))
+:extrapreds ((x6308))
+:extrapreds ((x6309))
+:extrapreds ((x6310))
+:extrapreds ((x6311))
+:extrapreds ((x6312))
+:extrapreds ((x6313))
+:extrapreds ((x6314))
+:extrapreds ((x6315))
+:extrapreds ((x6316))
+:extrapreds ((x6317))
+:extrapreds ((x6318))
+:extrapreds ((x6319))
+:extrapreds ((x6320))
+:extrapreds ((x6321))
+:extrapreds ((x6322))
+:extrapreds ((x6323))
+:extrapreds ((x6324))
+:extrapreds ((x6325))
+:extrapreds ((x6326))
+:extrapreds ((x6327))
+:extrapreds ((x6328))
+:extrapreds ((x6329))
+:extrapreds ((x6330))
+:extrapreds ((x6331))
+:extrapreds ((x6332))
+:extrapreds ((x6333))
+:extrapreds ((x6334))
+:extrapreds ((x6335))
+:extrapreds ((x6336))
+:extrapreds ((x6337))
+:extrapreds ((x6338))
+:extrapreds ((x6339))
+:extrapreds ((x6340))
+:extrapreds ((x6341))
+:extrapreds ((x6342))
+:extrapreds ((x6343))
+:extrapreds ((x6344))
+:extrapreds ((x6345))
+:extrapreds ((x6346))
+:extrapreds ((x6347))
+:extrapreds ((x6348))
+:extrapreds ((x6349))
+:extrapreds ((x6350))
+:extrapreds ((x6351))
+:extrapreds ((x6352))
+:extrapreds ((x6353))
+:extrapreds ((x6354))
+:extrapreds ((x6355))
+:extrapreds ((x6356))
+:extrapreds ((x6357))
+:extrapreds ((x6358))
+:extrapreds ((x6359))
+:extrapreds ((x6360))
+:extrapreds ((x6361))
+:extrapreds ((x6362))
+:extrapreds ((x6363))
+:extrapreds ((x6364))
+:extrapreds ((x6365))
+:extrapreds ((x6366))
+:extrapreds ((x6367))
+:extrapreds ((x6368))
+:extrapreds ((x6369))
+:extrapreds ((x6370))
+:extrapreds ((x6371))
+:extrapreds ((x6372))
+:extrapreds ((x6373))
+:extrapreds ((x6374))
+:extrapreds ((x6375))
+:extrapreds ((x6376))
+:extrapreds ((x6377))
+:extrapreds ((x6378))
+:extrapreds ((x6379))
+:extrapreds ((x6380))
+:extrapreds ((x6381))
+:extrapreds ((x6382))
+:extrapreds ((x6383))
+:extrapreds ((x6384))
+:extrapreds ((x6385))
+:extrapreds ((x6386))
+:extrapreds ((x6387))
+:extrapreds ((x6388))
+:extrapreds ((x6389))
+:extrapreds ((x6390))
+:extrapreds ((x6391))
+:extrapreds ((x6392))
+:extrapreds ((x6393))
+:extrapreds ((x6394))
+:extrapreds ((x6395))
+:extrapreds ((x6396))
+:extrapreds ((x6397))
+:extrapreds ((x6398))
+:extrapreds ((x6399))
+:extrapreds ((x6400))
+:extrapreds ((x6401))
+:extrapreds ((x6402))
+:extrapreds ((x6403))
+:extrapreds ((x6404))
+:extrapreds ((x6405))
+:extrapreds ((x6406))
+:extrapreds ((x6407))
+:extrapreds ((x6408))
+:extrapreds ((x6409))
+:extrapreds ((x6410))
+:extrapreds ((x6411))
+:extrapreds ((x6412))
+:extrapreds ((x6413))
+:extrapreds ((x6414))
+:extrapreds ((x6415))
+:extrapreds ((x6416))
+:extrapreds ((x6417))
+:extrapreds ((x6418))
+:extrapreds ((x6419))
+:extrapreds ((x6420))
+:extrapreds ((x6421))
+:extrapreds ((x6422))
+:extrapreds ((x6423))
+:extrapreds ((x6424))
+:extrapreds ((x6425))
+:extrapreds ((x6426))
+:extrapreds ((x6427))
+:extrapreds ((x6428))
+:extrapreds ((x6429))
+:extrapreds ((x6430))
+:extrapreds ((x6431))
+:extrapreds ((x6432))
+:extrapreds ((x6433))
+:extrapreds ((x6434))
+:extrapreds ((x6435))
+:extrapreds ((x6436))
+:extrapreds ((x6437))
+:extrapreds ((x6438))
+:extrapreds ((x6439))
+:extrapreds ((x6440))
+:extrapreds ((x6441))
+:extrapreds ((x6442))
+:extrapreds ((x6443))
+:extrapreds ((x6444))
+:extrapreds ((x6445))
+:extrapreds ((x6446))
+:extrapreds ((x6447))
+:extrapreds ((x6448))
+:extrapreds ((x6449))
+:extrapreds ((x6450))
+:extrapreds ((x6451))
+:extrapreds ((x6452))
+:extrapreds ((x6453))
+:extrapreds ((x6454))
+:extrapreds ((x6455))
+:extrapreds ((x6456))
+:extrapreds ((x6457))
+:extrapreds ((x6458))
+:extrapreds ((x6459))
+:extrapreds ((x6460))
+:extrapreds ((x6461))
+:extrapreds ((x6462))
+:extrapreds ((x6463))
+:extrapreds ((x6464))
+:extrapreds ((x6465))
+:extrapreds ((x6466))
+:extrapreds ((x6467))
+:extrapreds ((x6468))
+:extrapreds ((x6469))
+:extrapreds ((x6470))
+:extrapreds ((x6471))
+:extrapreds ((x6472))
+:extrapreds ((x6473))
+:extrapreds ((x6474))
+:extrapreds ((x6475))
+:extrapreds ((x6476))
+:extrapreds ((x6477))
+:extrapreds ((x6478))
+:extrapreds ((x6479))
+:extrapreds ((x6480))
+:extrapreds ((x6481))
+:extrapreds ((x6482))
+:extrapreds ((x6483))
+:extrapreds ((x6484))
+:extrapreds ((x6485))
+:extrapreds ((x6486))
+:extrapreds ((x6487))
+:extrapreds ((x6488))
+:extrapreds ((x6489))
+:extrapreds ((x6490))
+:extrapreds ((x6491))
+:extrapreds ((x6492))
+:extrapreds ((x6493))
+:extrapreds ((x6494))
+:extrapreds ((x6495))
+:extrapreds ((x6496))
+:extrapreds ((x6497))
+:extrapreds ((x6498))
+:extrapreds ((x6499))
+:extrapreds ((x6500))
+:extrapreds ((x6501))
+:extrapreds ((x6502))
+:extrapreds ((x6503))
+:extrapreds ((x6504))
+:extrapreds ((x6505))
+:extrapreds ((x6506))
+:extrapreds ((x6507))
+:extrapreds ((x6508))
+:extrapreds ((x6509))
+:extrapreds ((x6510))
+:extrapreds ((x6511))
+:extrapreds ((x6512))
+:extrapreds ((x6513))
+:extrapreds ((x6514))
+:extrapreds ((x6515))
+:extrapreds ((x6516))
+:extrapreds ((x6517))
+:extrapreds ((x6518))
+:extrapreds ((x6519))
+:extrapreds ((x6520))
+:extrapreds ((x6521))
+:extrapreds ((x6522))
+:extrapreds ((x6523))
+:extrapreds ((x6524))
+:extrapreds ((x6525))
+:extrapreds ((x6526))
+:extrapreds ((x6527))
+:extrapreds ((x6528))
+:extrapreds ((x6529))
+:extrapreds ((x6530))
+:extrapreds ((x6531))
+:extrapreds ((x6532))
+:extrapreds ((x6533))
+:extrapreds ((x6534))
+:extrapreds ((x6535))
+:extrapreds ((x6536))
+:extrapreds ((x6537))
+:extrapreds ((x6538))
+:extrapreds ((x6539))
+:extrapreds ((x6540))
+:extrapreds ((x6541))
+:extrapreds ((x6542))
+:extrapreds ((x6543))
+:extrapreds ((x6544))
+:extrapreds ((x6545))
+:extrapreds ((x6546))
+:extrapreds ((x6547))
+:extrapreds ((x6548))
+:extrapreds ((x6549))
+:extrapreds ((x6550))
+:extrapreds ((x6551))
+:extrapreds ((x6552))
+:extrapreds ((x6553))
+:extrapreds ((x6554))
+:extrapreds ((x6555))
+:extrapreds ((x6556))
+:extrapreds ((x6557))
+:extrapreds ((x6558))
+:extrapreds ((x6559))
+:extrapreds ((x6560))
+:extrapreds ((x6561))
+:extrapreds ((x6562))
+:extrapreds ((x6563))
+:extrapreds ((x6564))
+:extrapreds ((x6565))
+:extrapreds ((x6566))
+:extrapreds ((x6567))
+:extrapreds ((x6568))
+:extrapreds ((x6569))
+:extrapreds ((x6570))
+:extrapreds ((x6571))
+:extrapreds ((x6572))
+:extrapreds ((x6573))
+:extrapreds ((x6574))
+:extrapreds ((x6575))
+:extrapreds ((x6576))
+:extrapreds ((x6577))
+:extrapreds ((x6578))
+:extrapreds ((x6579))
+:extrapreds ((x6580))
+:extrapreds ((x6581))
+:extrapreds ((x6582))
+:extrapreds ((x6583))
+:extrapreds ((x6584))
+:extrapreds ((x6585))
+:extrapreds ((x6586))
+:extrapreds ((x6587))
+:extrapreds ((x6588))
+:extrapreds ((x6589))
+:extrapreds ((x6590))
+:extrapreds ((x6591))
+:extrapreds ((x6592))
+:extrapreds ((x6593))
+:extrapreds ((x6594))
+:extrapreds ((x6595))
+:extrapreds ((x6596))
+:extrapreds ((x6597))
+:extrapreds ((x6598))
+:extrapreds ((x6599))
+:extrapreds ((x6600))
+:extrapreds ((x6601))
+:extrapreds ((x6602))
+:extrapreds ((x6603))
+:extrapreds ((x6604))
+:extrapreds ((x6605))
+:extrapreds ((x6606))
+:extrapreds ((x6607))
+:extrapreds ((x6608))
+:extrapreds ((x6609))
+:extrapreds ((x6610))
+:extrapreds ((x6611))
+:extrapreds ((x6612))
+:extrapreds ((x6613))
+:extrapreds ((x6614))
+:extrapreds ((x6615))
+:extrapreds ((x6616))
+:extrapreds ((x6617))
+:extrapreds ((x6618))
+:extrapreds ((x6619))
+:extrapreds ((x6620))
+:extrapreds ((x6621))
+:extrapreds ((x6622))
+:extrapreds ((x6623))
+:extrapreds ((x6624))
+:extrapreds ((x6625))
+:extrapreds ((x6626))
+:extrapreds ((x6627))
+:extrapreds ((x6628))
+:extrapreds ((x6629))
+:extrapreds ((x6630))
+:extrapreds ((x6631))
+:extrapreds ((x6632))
+:extrapreds ((x6633))
+:extrapreds ((x6634))
+:extrapreds ((x6635))
+:extrapreds ((x6636))
+:extrapreds ((x6637))
+:extrapreds ((x6638))
+:extrapreds ((x6639))
+:extrapreds ((x6640))
+:extrapreds ((x6641))
+:extrapreds ((x6642))
+:extrapreds ((x6643))
+:extrapreds ((x6644))
+:extrapreds ((x6645))
+:extrapreds ((x6646))
+:extrapreds ((x6647))
+:extrapreds ((x6648))
+:extrapreds ((x6649))
+:extrapreds ((x6650))
+:extrapreds ((x6651))
+:extrapreds ((x6652))
+:extrapreds ((x6653))
+:extrapreds ((x6654))
+:extrapreds ((x6655))
+:extrapreds ((x6656))
+:extrapreds ((x6657))
+:extrapreds ((x6658))
+:extrapreds ((x6659))
+:extrapreds ((x6660))
+:extrapreds ((x6661))
+:extrapreds ((x6662))
+:extrapreds ((x6663))
+:extrapreds ((x6664))
+:extrapreds ((x6665))
+:extrapreds ((x6666))
+:extrapreds ((x6667))
+:extrapreds ((x6668))
+:extrapreds ((x6669))
+:extrapreds ((x6670))
+:extrapreds ((x6671))
+:extrapreds ((x6672))
+:extrapreds ((x6673))
+:extrapreds ((x6674))
+:extrapreds ((x6675))
+:extrapreds ((x6676))
+:extrapreds ((x6677))
+:extrapreds ((x6678))
+:extrapreds ((x6679))
+:extrapreds ((x6680))
+:extrapreds ((x6681))
+:extrapreds ((x6682))
+:extrapreds ((x6683))
+:extrapreds ((x6684))
+:extrapreds ((x6685))
+:extrapreds ((x6686))
+:extrapreds ((x6687))
+:extrapreds ((x6688))
+:extrapreds ((x6689))
+:extrapreds ((x6690))
+:extrapreds ((x6691))
+:extrapreds ((x6692))
+:extrapreds ((x6693))
+:extrapreds ((x6694))
+:extrapreds ((x6695))
+:extrapreds ((x6696))
+:extrapreds ((x6697))
+:extrapreds ((x6698))
+:extrapreds ((x6699))
+:extrapreds ((x6700))
+:extrapreds ((x6701))
+:extrapreds ((x6702))
+:extrapreds ((x6703))
+:extrapreds ((x6704))
+:extrapreds ((x6705))
+:extrapreds ((x6706))
+:extrapreds ((x6707))
+:extrapreds ((x6708))
+:extrapreds ((x6709))
+:extrapreds ((x6710))
+:extrapreds ((x6711))
+:extrapreds ((x6712))
+:extrapreds ((x6713))
+:extrapreds ((x6714))
+:extrapreds ((x6715))
+:extrapreds ((x6716))
+:extrapreds ((x6717))
+:extrapreds ((x6718))
+:extrapreds ((x6719))
+:extrapreds ((x6720))
+:extrapreds ((x6721))
+:extrapreds ((x6722))
+:extrapreds ((x6723))
+:extrapreds ((x6724))
+:extrapreds ((x6725))
+:extrapreds ((x6726))
+:extrapreds ((x6727))
+:extrapreds ((x6728))
+:extrapreds ((x6729))
+:extrapreds ((x6730))
+:extrapreds ((x6731))
+:extrapreds ((x6732))
+:extrapreds ((x6733))
+:extrapreds ((x6734))
+:extrapreds ((x6735))
+:extrapreds ((x6736))
+:extrapreds ((x6737))
+:extrapreds ((x6738))
+:extrapreds ((x6739))
+:extrapreds ((x6740))
+:extrapreds ((x6741))
+:extrapreds ((x6742))
+:extrapreds ((x6743))
+:extrapreds ((x6744))
+:extrapreds ((x6745))
+:extrapreds ((x6746))
+:extrapreds ((x6747))
+:extrapreds ((x6748))
+:extrapreds ((x6749))
+:extrapreds ((x6750))
+:extrapreds ((x6751))
+:extrapreds ((x6752))
+:extrapreds ((x6753))
+:extrapreds ((x6754))
+:extrapreds ((x6755))
+:extrapreds ((x6756))
+:extrapreds ((x6757))
+:extrapreds ((x6758))
+:extrapreds ((x6759))
+:extrapreds ((x6760))
+:extrapreds ((x6761))
+:extrapreds ((x6762))
+:extrapreds ((x6763))
+:extrapreds ((x6764))
+:extrapreds ((x6765))
+:extrapreds ((x6766))
+:extrapreds ((x6767))
+:extrapreds ((x6768))
+:extrapreds ((x6769))
+:extrapreds ((x6770))
+:extrapreds ((x6771))
+:extrapreds ((x6772))
+:extrapreds ((x6773))
+:extrapreds ((x6774))
+:extrapreds ((x6775))
+:extrapreds ((x6776))
+:extrapreds ((x6777))
+:extrapreds ((x6778))
+:extrapreds ((x6779))
+:extrapreds ((x6780))
+:extrapreds ((x6781))
+:extrapreds ((x6782))
+:extrapreds ((x6783))
+:extrapreds ((x6784))
+:extrapreds ((x6785))
+:extrapreds ((x6786))
+:extrapreds ((x6787))
+:extrapreds ((x6788))
+:extrapreds ((x6789))
+:extrapreds ((x6790))
+:extrapreds ((x6791))
+:extrapreds ((x6792))
+:extrapreds ((x6793))
+:extrapreds ((x6794))
+:extrapreds ((x6795))
+:extrapreds ((x6796))
+:extrapreds ((x6797))
+:extrapreds ((x6798))
+:extrapreds ((x6799))
+:extrapreds ((x6800))
+:extrapreds ((x6801))
+:extrapreds ((x6802))
+:extrapreds ((x6803))
+:extrapreds ((x6804))
+:extrapreds ((x6805))
+:extrapreds ((x6806))
+:extrapreds ((x6807))
+:extrapreds ((x6808))
+:extrapreds ((x6809))
+:extrapreds ((x6810))
+:extrapreds ((x6811))
+:extrapreds ((x6812))
+:extrapreds ((x6813))
+:extrapreds ((x6814))
+:extrapreds ((x6815))
+:extrapreds ((x6816))
+:extrapreds ((x6817))
+:extrapreds ((x6818))
+:extrapreds ((x6819))
+:extrapreds ((x6820))
+:extrapreds ((x6821))
+:extrapreds ((x6822))
+:extrapreds ((x6823))
+:extrapreds ((x6824))
+:extrapreds ((x6825))
+:extrapreds ((x6826))
+:extrapreds ((x6827))
+:extrapreds ((x6828))
+:extrapreds ((x6829))
+:extrapreds ((x6830))
+:extrapreds ((x6831))
+:extrapreds ((x6832))
+:extrapreds ((x6833))
+:extrapreds ((x6834))
+:extrapreds ((x6835))
+:extrapreds ((x6836))
+:extrapreds ((x6837))
+:extrapreds ((x6838))
+:extrapreds ((x6839))
+:extrapreds ((x6840))
+:extrapreds ((x6841))
+:extrapreds ((x6842))
+:extrapreds ((x6843))
+:extrapreds ((x6844))
+:extrapreds ((x6845))
+:extrapreds ((x6846))
+:extrapreds ((x6847))
+:extrapreds ((x6848))
+:extrapreds ((x6849))
+:extrapreds ((x6850))
+:extrapreds ((x6851))
+:extrapreds ((x6852))
+:extrapreds ((x6853))
+:extrapreds ((x6854))
+:extrapreds ((x6855))
+:extrapreds ((x6856))
+:extrapreds ((x6857))
+:extrapreds ((x6858))
+:extrapreds ((x6859))
+:extrapreds ((x6860))
+:extrapreds ((x6861))
+:extrapreds ((x6862))
+:extrapreds ((x6863))
+:extrapreds ((x6864))
+:extrapreds ((x6865))
+:extrapreds ((x6866))
+:extrapreds ((x6867))
+:extrapreds ((x6868))
+:extrapreds ((x6869))
+:extrapreds ((x6870))
+:extrapreds ((x6871))
+:extrapreds ((x6872))
+:extrapreds ((x6873))
+:extrapreds ((x6874))
+:extrapreds ((x6875))
+:extrapreds ((x6876))
+:extrapreds ((x6877))
+:extrapreds ((x6878))
+:extrapreds ((x6879))
+:extrapreds ((x6880))
+:extrapreds ((x6881))
+:extrapreds ((x6882))
+:extrapreds ((x6883))
+:extrapreds ((x6884))
+:extrapreds ((x6885))
+:extrapreds ((x6886))
+:extrapreds ((x6887))
+:extrapreds ((x6888))
+:extrapreds ((x6889))
+:extrapreds ((x6890))
+:extrapreds ((x6891))
+:extrapreds ((x6892))
+:extrapreds ((x6893))
+:extrapreds ((x6894))
+:extrapreds ((x6895))
+:extrapreds ((x6896))
+:extrapreds ((x6897))
+:extrapreds ((x6898))
+:extrapreds ((x6899))
+:extrapreds ((x6900))
+:extrapreds ((x6901))
+:extrapreds ((x6902))
+:extrapreds ((x6903))
+:extrapreds ((x6904))
+:extrapreds ((x6905))
+:extrapreds ((x6906))
+:extrapreds ((x6907))
+:extrapreds ((x6908))
+:extrapreds ((x6909))
+:extrapreds ((x6910))
+:extrapreds ((x6911))
+:extrapreds ((x6912))
+:extrapreds ((x6913))
+:extrapreds ((x6914))
+:extrapreds ((x6915))
+:extrapreds ((x6916))
+:extrapreds ((x6917))
+:extrapreds ((x6918))
+:extrapreds ((x6919))
+:extrapreds ((x6920))
+:extrapreds ((x6921))
+:extrapreds ((x6922))
+:extrapreds ((x6923))
+:extrapreds ((x6924))
+:extrapreds ((x6925))
+:extrapreds ((x6926))
+:extrapreds ((x6927))
+:extrapreds ((x6928))
+:extrapreds ((x6929))
+:extrapreds ((x6930))
+:extrapreds ((x6931))
+:extrapreds ((x6932))
+:extrapreds ((x6933))
+:extrapreds ((x6934))
+:extrapreds ((x6935))
+:extrapreds ((x6936))
+:extrapreds ((x6937))
+:extrapreds ((x6938))
+:extrapreds ((x6939))
+:extrapreds ((x6940))
+:extrapreds ((x6941))
+:extrapreds ((x6942))
+:extrapreds ((x6943))
+:extrapreds ((x6944))
+:extrapreds ((x6945))
+:extrapreds ((x6946))
+:extrapreds ((x6947))
+:extrapreds ((x6948))
+:extrapreds ((x6949))
+:extrapreds ((x6950))
+:extrapreds ((x6951))
+:extrapreds ((x6952))
+:extrapreds ((x6953))
+:extrapreds ((x6954))
+:extrapreds ((x6955))
+:extrapreds ((x6956))
+:extrapreds ((x6957))
+:extrapreds ((x6958))
+:extrapreds ((x6959))
+:extrapreds ((x6960))
+:extrapreds ((x6961))
+:extrapreds ((x6962))
+:extrapreds ((x6963))
+:extrapreds ((x6964))
+:extrapreds ((x6965))
+:extrapreds ((x6966))
+:extrapreds ((x6967))
+:extrapreds ((x6968))
+:extrapreds ((x6969))
+:extrapreds ((x6970))
+:extrapreds ((x6971))
+:extrapreds ((x6972))
+:extrapreds ((x6973))
+:extrapreds ((x6974))
+:extrapreds ((x6975))
+:extrapreds ((x6976))
+:extrapreds ((x6977))
+:extrapreds ((x6978))
+:extrapreds ((x6979))
+:extrapreds ((x6980))
+:extrapreds ((x6981))
+:extrapreds ((x6982))
+:extrapreds ((x6983))
+:extrapreds ((x6984))
+:extrapreds ((x6985))
+:extrapreds ((x6986))
+:extrapreds ((x6987))
+:extrapreds ((x6988))
+:extrapreds ((x6989))
+:extrapreds ((x6990))
+:extrapreds ((x6991))
+:extrapreds ((x6992))
+:extrapreds ((x6993))
+:extrapreds ((x6994))
+:extrapreds ((x6995))
+:extrapreds ((x6996))
+:extrapreds ((x6997))
+:extrapreds ((x6998))
+:extrapreds ((x6999))
+:extrapreds ((x7000))
+:extrapreds ((x7001))
+:extrapreds ((x7002))
+:extrapreds ((x7003))
+:extrapreds ((x7004))
+:extrapreds ((x7005))
+:extrapreds ((x7006))
+:extrapreds ((x7007))
+:extrapreds ((x7008))
+:extrapreds ((x7009))
+:extrapreds ((x7010))
+:extrapreds ((x7011))
+:extrapreds ((x7012))
+:extrapreds ((x7013))
+:extrapreds ((x7014))
+:extrapreds ((x7015))
+:extrapreds ((x7016))
+:extrapreds ((x7017))
+:extrapreds ((x7018))
+:extrapreds ((x7019))
+:extrapreds ((x7020))
+:extrapreds ((x7021))
+:extrapreds ((x7022))
+:extrapreds ((x7023))
+:extrapreds ((x7024))
+:extrapreds ((x7025))
+:extrapreds ((x7026))
+:extrapreds ((x7027))
+:extrapreds ((x7028))
+:extrapreds ((x7029))
+:extrapreds ((x7030))
+:extrapreds ((x7031))
+:extrapreds ((x7032))
+:extrapreds ((x7033))
+:extrapreds ((x7034))
+:extrapreds ((x7035))
+:extrapreds ((x7036))
+:extrapreds ((x7037))
+:extrapreds ((x7038))
+:extrapreds ((x7039))
+:extrapreds ((x7040))
+:extrapreds ((x7041))
+:extrapreds ((x7042))
+:extrapreds ((x7043))
+:extrapreds ((x7044))
+:extrapreds ((x7045))
+:extrapreds ((x7046))
+:extrapreds ((x7047))
+:extrapreds ((x7048))
+:extrapreds ((x7049))
+:extrapreds ((x7050))
+:extrapreds ((x7051))
+:extrapreds ((x7052))
+:extrapreds ((x7053))
+:extrapreds ((x7054))
+:extrapreds ((x7055))
+:extrapreds ((x7056))
+:extrapreds ((x7057))
+:extrapreds ((x7058))
+:extrapreds ((x7059))
+:extrapreds ((x7060))
+:extrapreds ((x7061))
+:extrapreds ((x7062))
+:extrapreds ((x7063))
+:extrapreds ((x7064))
+:extrapreds ((x7065))
+:extrapreds ((x7066))
+:extrapreds ((x7067))
+:extrapreds ((x7068))
+:extrapreds ((x7069))
+:extrapreds ((x7070))
+:extrapreds ((x7071))
+:extrapreds ((x7072))
+:extrapreds ((x7073))
+:extrapreds ((x7074))
+:extrapreds ((x7075))
+:extrapreds ((x7076))
+:extrapreds ((x7077))
+:extrapreds ((x7078))
+:extrapreds ((x7079))
+:extrapreds ((x7080))
+:extrapreds ((x7081))
+:extrapreds ((x7082))
+:extrapreds ((x7083))
+:extrapreds ((x7084))
+:extrapreds ((x7085))
+:extrapreds ((x7086))
+:extrapreds ((x7087))
+:extrapreds ((x7088))
+:extrapreds ((x7089))
+:extrapreds ((x7090))
+:extrapreds ((x7091))
+:extrapreds ((x7092))
+:extrapreds ((x7093))
+:extrapreds ((x7094))
+:extrapreds ((x7095))
+:extrapreds ((x7096))
+:extrapreds ((x7097))
+:extrapreds ((x7098))
+:extrapreds ((x7099))
+:extrapreds ((x7100))
+:extrapreds ((x7101))
+:extrapreds ((x7102))
+:extrapreds ((x7103))
+:extrapreds ((x7104))
+:extrapreds ((x7105))
+:extrapreds ((x7106))
+:extrapreds ((x7107))
+:extrapreds ((x7108))
+:extrapreds ((x7109))
+:extrapreds ((x7110))
+:extrapreds ((x7111))
+:extrapreds ((x7112))
+:extrapreds ((x7113))
+:extrapreds ((x7114))
+:extrapreds ((x7115))
+:extrapreds ((x7116))
+:extrapreds ((x7117))
+:extrapreds ((x7118))
+:extrapreds ((x7119))
+:extrapreds ((x7120))
+:extrapreds ((x7121))
+:extrapreds ((x7122))
+:extrapreds ((x7123))
+:extrapreds ((x7124))
+:extrapreds ((x7125))
+:extrapreds ((x7126))
+:extrapreds ((x7127))
+:extrapreds ((x7128))
+:extrapreds ((x7129))
+:extrapreds ((x7130))
+:extrapreds ((x7131))
+:extrapreds ((x7132))
+:extrapreds ((x7133))
+:extrapreds ((x7134))
+:extrapreds ((x7135))
+:extrapreds ((x7136))
+:extrapreds ((x7137))
+:extrapreds ((x7138))
+:extrapreds ((x7139))
+:extrapreds ((x7140))
+:extrapreds ((x7141))
+:extrapreds ((x7142))
+:extrapreds ((x7143))
+:extrapreds ((x7144))
+:extrapreds ((x7145))
+:extrapreds ((x7146))
+:extrapreds ((x7147))
+:extrapreds ((x7148))
+:extrapreds ((x7149))
+:extrapreds ((x7150))
+:extrapreds ((x7151))
+:extrapreds ((x7152))
+:extrapreds ((x7153))
+:extrapreds ((x7154))
+:extrapreds ((x7155))
+:extrapreds ((x7156))
+:extrapreds ((x7157))
+:extrapreds ((x7158))
+:extrapreds ((x7159))
+:extrapreds ((x7160))
+:extrapreds ((x7161))
+:extrapreds ((x7162))
+:extrapreds ((x7163))
+:extrapreds ((x7164))
+:extrapreds ((x7165))
+:extrapreds ((x7166))
+:extrapreds ((x7167))
+:extrapreds ((x7168))
+:extrapreds ((x7169))
+:extrapreds ((x7170))
+:extrapreds ((x7171))
+:extrapreds ((x7172))
+:extrapreds ((x7173))
+:extrapreds ((x7174))
+:extrapreds ((x7175))
+:extrapreds ((x7176))
+:extrapreds ((x7177))
+:extrapreds ((x7178))
+:extrapreds ((x7179))
+:extrapreds ((x7180))
+:extrapreds ((x7181))
+:extrapreds ((x7182))
+:extrapreds ((x7183))
+:extrapreds ((x7184))
+:extrapreds ((x7185))
+:extrapreds ((x7186))
+:extrapreds ((x7187))
+:extrapreds ((x7188))
+:extrapreds ((x7189))
+:extrapreds ((x7190))
+:extrapreds ((x7191))
+:extrapreds ((x7192))
+:extrapreds ((x7193))
+:extrapreds ((x7194))
+:extrapreds ((x7195))
+:extrapreds ((x7196))
+:extrapreds ((x7197))
+:extrapreds ((x7198))
+:extrapreds ((x7199))
+:extrapreds ((x7200))
+:extrapreds ((x7201))
+:extrapreds ((x7202))
+:extrapreds ((x7203))
+:extrapreds ((x7204))
+:extrapreds ((x7205))
+:extrapreds ((x7206))
+:extrapreds ((x7207))
+:extrapreds ((x7208))
+:extrapreds ((x7209))
+:extrapreds ((x7210))
+:extrapreds ((x7211))
+:extrapreds ((x7212))
+:extrapreds ((x7213))
+:extrapreds ((x7214))
+:extrapreds ((x7215))
+:extrapreds ((x7216))
+:extrapreds ((x7217))
+:extrapreds ((x7218))
+:extrapreds ((x7219))
+:extrapreds ((x7220))
+:extrapreds ((x7221))
+:extrapreds ((x7222))
+:extrapreds ((x7223))
+:extrapreds ((x7224))
+:extrapreds ((x7225))
+:extrapreds ((x7226))
+:extrapreds ((x7227))
+:extrapreds ((x7228))
+:extrapreds ((x7229))
+:extrapreds ((x7230))
+:extrapreds ((x7231))
+:extrapreds ((x7232))
+:extrapreds ((x7233))
+:extrapreds ((x7234))
+:extrapreds ((x7235))
+:extrapreds ((x7236))
+:extrapreds ((x7237))
+:extrapreds ((x7238))
+:extrapreds ((x7239))
+:extrapreds ((x7240))
+:extrapreds ((x7241))
+:extrapreds ((x7242))
+:extrapreds ((x7243))
+:extrapreds ((x7244))
+:extrapreds ((x7245))
+:extrapreds ((x7246))
+:extrapreds ((x7247))
+:extrapreds ((x7248))
+:extrapreds ((x7249))
+:extrapreds ((x7250))
+:extrapreds ((x7251))
+:extrapreds ((x7252))
+:extrapreds ((x7253))
+:extrapreds ((x7254))
+:extrapreds ((x7255))
+:extrapreds ((x7256))
+:extrapreds ((x7257))
+:extrapreds ((x7258))
+:extrapreds ((x7259))
+:extrapreds ((x7260))
+:extrapreds ((x7261))
+:extrapreds ((x7262))
+:extrapreds ((x7263))
+:extrapreds ((x7264))
+:extrapreds ((x7265))
+:extrapreds ((x7266))
+:extrapreds ((x7267))
+:extrapreds ((x7268))
+:extrapreds ((x7269))
+:extrapreds ((x7270))
+:extrapreds ((x7271))
+:extrapreds ((x7272))
+:extrapreds ((x7273))
+:extrapreds ((x7274))
+:extrapreds ((x7275))
+:extrapreds ((x7276))
+:extrapreds ((x7277))
+:extrapreds ((x7278))
+:extrapreds ((x7279))
+:extrapreds ((x7280))
+:extrapreds ((x7281))
+:extrapreds ((x7282))
+:extrapreds ((x7283))
+:extrapreds ((x7284))
+:extrapreds ((x7285))
+:extrapreds ((x7286))
+:extrapreds ((x7287))
+:extrapreds ((x7288))
+:extrapreds ((x7289))
+:extrapreds ((x7290))
+:extrapreds ((x7291))
+:extrapreds ((x7292))
+:extrapreds ((x7293))
+:extrapreds ((x7294))
+:extrapreds ((x7295))
+:extrapreds ((x7296))
+:extrapreds ((x7297))
+:extrapreds ((x7298))
+:extrapreds ((x7299))
+:extrapreds ((x7300))
+:extrapreds ((x7301))
+:extrapreds ((x7302))
+:extrapreds ((x7303))
+:extrapreds ((x7304))
+:extrapreds ((x7305))
+:extrapreds ((x7306))
+:extrapreds ((x7307))
+:extrapreds ((x7308))
+:extrapreds ((x7309))
+:extrapreds ((x7310))
+:extrapreds ((x7311))
+:extrapreds ((x7312))
+:extrapreds ((x7313))
+:extrapreds ((x7314))
+:extrapreds ((x7315))
+:extrapreds ((x7316))
+:extrapreds ((x7317))
+:extrapreds ((x7318))
+:extrapreds ((x7319))
+:extrapreds ((x7320))
+:extrapreds ((x7321))
+:extrapreds ((x7322))
+:extrapreds ((x7323))
+:extrapreds ((x7324))
+:extrapreds ((x7325))
+:extrapreds ((x7326))
+:extrapreds ((x7327))
+:extrapreds ((x7328))
+:extrapreds ((x7329))
+:extrapreds ((x7330))
+:extrapreds ((x7331))
+:extrapreds ((x7332))
+:extrapreds ((x7333))
+:extrapreds ((x7334))
+:extrapreds ((x7335))
+:extrapreds ((x7336))
+:extrapreds ((x7337))
+:extrapreds ((x7338))
+:extrapreds ((x7339))
+:extrapreds ((x7340))
+:extrapreds ((x7341))
+:extrapreds ((x7342))
+:extrapreds ((x7343))
+:extrapreds ((x7344))
+:extrapreds ((x7345))
+:extrapreds ((x7346))
+:extrapreds ((x7347))
+:extrapreds ((x7348))
+:extrapreds ((x7349))
+:extrapreds ((x7350))
+:extrapreds ((x7351))
+:extrapreds ((x7352))
+:extrapreds ((x7353))
+:extrapreds ((x7354))
+:extrapreds ((x7355))
+:extrapreds ((x7356))
+:extrapreds ((x7357))
+:extrapreds ((x7358))
+:extrapreds ((x7359))
+:extrapreds ((x7360))
+:extrapreds ((x7361))
+:extrapreds ((x7362))
+:extrapreds ((x7363))
+:extrapreds ((x7364))
+:extrapreds ((x7365))
+:extrapreds ((x7366))
+:extrapreds ((x7367))
+:extrapreds ((x7368))
+:extrapreds ((x7369))
+:extrapreds ((x7370))
+:extrapreds ((x7371))
+:extrapreds ((x7372))
+:extrapreds ((x7373))
+:extrapreds ((x7374))
+:extrapreds ((x7375))
+:extrapreds ((x7376))
+:extrapreds ((x7377))
+:extrapreds ((x7378))
+:extrapreds ((x7379))
+:extrapreds ((x7380))
+:extrapreds ((x7381))
+:extrapreds ((x7382))
+:extrapreds ((x7383))
+:extrapreds ((x7384))
+:extrapreds ((x7385))
+:extrapreds ((x7386))
+:extrapreds ((x7387))
+:extrapreds ((x7388))
+:extrapreds ((x7389))
+:extrapreds ((x7390))
+:extrapreds ((x7391))
+:extrapreds ((x7392))
+:extrapreds ((x7393))
+:extrapreds ((x7394))
+:extrapreds ((x7395))
+:extrapreds ((x7396))
+:extrapreds ((x7397))
+:extrapreds ((x7398))
+:extrapreds ((x7399))
+:extrapreds ((x7400))
+:extrapreds ((x7401))
+:extrapreds ((x7402))
+:extrapreds ((x7403))
+:extrapreds ((x7404))
+:extrapreds ((x7405))
+:extrapreds ((x7406))
+:extrapreds ((x7407))
+:extrapreds ((x7408))
+:extrapreds ((x7409))
+:extrapreds ((x7410))
+:extrapreds ((x7411))
+:extrapreds ((x7412))
+:extrapreds ((x7413))
+:extrapreds ((x7414))
+:extrapreds ((x7415))
+:extrapreds ((x7416))
+:extrapreds ((x7417))
+:extrapreds ((x7418))
+:extrapreds ((x7419))
+:extrapreds ((x7420))
+:extrapreds ((x7421))
+:extrapreds ((x7422))
+:extrapreds ((x7423))
+:extrapreds ((x7424))
+:extrapreds ((x7425))
+:extrapreds ((x7426))
+:extrapreds ((x7427))
+:extrapreds ((x7428))
+:extrapreds ((x7429))
+:extrapreds ((x7430))
+:extrapreds ((x7431))
+:extrapreds ((x7432))
+:extrapreds ((x7433))
+:extrapreds ((x7434))
+:extrapreds ((x7435))
+:extrapreds ((x7436))
+:extrapreds ((x7437))
+:extrapreds ((x7438))
+:extrapreds ((x7439))
+:extrapreds ((x7440))
+:extrapreds ((x7441))
+:extrapreds ((x7442))
+:extrapreds ((x7443))
+:extrapreds ((x7444))
+:extrapreds ((x7445))
+:extrapreds ((x7446))
+:extrapreds ((x7447))
+:extrapreds ((x7448))
+:extrapreds ((x7449))
+:extrapreds ((x7450))
+:extrapreds ((x7451))
+:extrapreds ((x7452))
+:extrapreds ((x7453))
+:extrapreds ((x7454))
+:extrapreds ((x7455))
+:extrapreds ((x7456))
+:extrapreds ((x7457))
+:extrapreds ((x7458))
+:extrapreds ((x7459))
+:extrapreds ((x7460))
+:extrapreds ((x7461))
+:extrapreds ((x7462))
+:extrapreds ((x7463))
+:extrapreds ((x7464))
+:extrapreds ((x7465))
+:extrapreds ((x7466))
+:extrapreds ((x7467))
+:extrapreds ((x7468))
+:extrapreds ((x7469))
+:extrapreds ((x7470))
+:extrapreds ((x7471))
+:extrapreds ((x7472))
+:extrapreds ((x7473))
+:extrapreds ((x7474))
+:extrapreds ((x7475))
+:extrapreds ((x7476))
+:extrapreds ((x7477))
+:extrapreds ((x7478))
+:extrapreds ((x7479))
+:extrapreds ((x7480))
+:extrapreds ((x7481))
+:extrapreds ((x7482))
+:extrapreds ((x7483))
+:extrapreds ((x7484))
+:extrapreds ((x7485))
+:extrapreds ((x7486))
+:extrapreds ((x7487))
+:extrapreds ((x7488))
+:extrapreds ((x7489))
+:extrapreds ((x7490))
+:extrapreds ((x7491))
+:extrapreds ((x7492))
+:extrapreds ((x7493))
+:extrapreds ((x7494))
+:extrapreds ((x7495))
+:extrapreds ((x7496))
+:extrapreds ((x7497))
+:extrapreds ((x7498))
+:extrapreds ((x7499))
+:extrapreds ((x7500))
+:extrapreds ((x7501))
+:extrapreds ((x7502))
+:extrapreds ((x7503))
+:extrapreds ((x7504))
+:extrapreds ((x7505))
+:extrapreds ((x7506))
+:extrapreds ((x7507))
+:extrapreds ((x7508))
+:extrapreds ((x7509))
+:extrapreds ((x7510))
+:extrapreds ((x7511))
+:extrapreds ((x7512))
+:extrapreds ((x7513))
+:extrapreds ((x7514))
+:extrapreds ((x7515))
+:extrapreds ((x7516))
+:extrapreds ((x7517))
+:extrapreds ((x7518))
+:extrapreds ((x7519))
+:extrapreds ((x7520))
+:extrapreds ((x7521))
+:extrapreds ((x7522))
+:extrapreds ((x7523))
+:extrapreds ((x7524))
+:extrapreds ((x7525))
+:extrapreds ((x7526))
+:extrapreds ((x7527))
+:extrapreds ((x7528))
+:extrapreds ((x7529))
+:extrapreds ((x7530))
+:extrapreds ((x7531))
+:extrapreds ((x7532))
+:extrapreds ((x7533))
+:extrapreds ((x7534))
+:extrapreds ((x7535))
+:extrapreds ((x7536))
+:extrapreds ((x7537))
+:extrapreds ((x7538))
+:extrapreds ((x7539))
+:extrapreds ((x7540))
+:extrapreds ((x7541))
+:extrapreds ((x7542))
+:extrapreds ((x7543))
+:extrapreds ((x7544))
+:extrapreds ((x7545))
+:extrapreds ((x7546))
+:extrapreds ((x7547))
+:extrapreds ((x7548))
+:extrapreds ((x7549))
+:extrapreds ((x7550))
+:extrapreds ((x7551))
+:extrapreds ((x7552))
+:extrapreds ((x7553))
+:extrapreds ((x7554))
+:extrapreds ((x7555))
+:extrapreds ((x7556))
+:extrapreds ((x7557))
+:extrapreds ((x7558))
+:extrapreds ((x7559))
+:extrapreds ((x7560))
+:extrapreds ((x7561))
+:extrapreds ((x7562))
+:extrapreds ((x7563))
+:extrapreds ((x7564))
+:extrapreds ((x7565))
+:extrapreds ((x7566))
+:extrapreds ((x7567))
+:extrapreds ((x7568))
+:extrapreds ((x7569))
+:extrapreds ((x7570))
+:extrapreds ((x7571))
+:extrapreds ((x7572))
+:extrapreds ((x7573))
+:extrapreds ((x7574))
+:extrapreds ((x7575))
+:extrapreds ((x7576))
+:extrapreds ((x7577))
+:extrapreds ((x7578))
+:extrapreds ((x7579))
+:extrapreds ((x7580))
+:extrapreds ((x7581))
+:extrapreds ((x7582))
+:extrapreds ((x7583))
+:extrapreds ((x7584))
+:extrapreds ((x7585))
+:extrapreds ((x7586))
+:extrapreds ((x7587))
+:extrapreds ((x7588))
+:extrapreds ((x7589))
+:extrapreds ((x7590))
+:extrapreds ((x7591))
+:extrapreds ((x7592))
+:extrapreds ((x7593))
+:extrapreds ((x7594))
+:extrapreds ((x7595))
+:extrapreds ((x7596))
+:extrapreds ((x7597))
+:extrapreds ((x7598))
+:extrapreds ((x7599))
+:extrapreds ((x7600))
+:extrapreds ((x7601))
+:extrapreds ((x7602))
+:extrapreds ((x7603))
+:extrapreds ((x7604))
+:extrapreds ((x7605))
+:extrapreds ((x7606))
+:extrapreds ((x7607))
+:extrapreds ((x7608))
+:extrapreds ((x7609))
+:extrapreds ((x7610))
+:extrapreds ((x7611))
+:extrapreds ((x7612))
+:extrapreds ((x7613))
+:extrapreds ((x7614))
+:extrapreds ((x7615))
+:extrapreds ((x7616))
+:extrapreds ((x7617))
+:extrapreds ((x7618))
+:extrapreds ((x7619))
+:extrapreds ((x7620))
+:extrapreds ((x7621))
+:extrapreds ((x7622))
+:extrapreds ((x7623))
+:extrapreds ((x7624))
+:extrapreds ((x7625))
+:extrapreds ((x7626))
+:extrapreds ((x7627))
+:extrapreds ((x7628))
+:extrapreds ((x7629))
+:extrapreds ((x7630))
+:extrapreds ((x7631))
+:extrapreds ((x7632))
+:extrapreds ((x7633))
+:extrapreds ((x7634))
+:extrapreds ((x7635))
+:extrapreds ((x7636))
+:extrapreds ((x7637))
+:extrapreds ((x7638))
+:extrapreds ((x7639))
+:extrapreds ((x7640))
+:extrapreds ((x7641))
+:extrapreds ((x7642))
+:extrapreds ((x7643))
+:extrapreds ((x7644))
+:extrapreds ((x7645))
+:extrapreds ((x7646))
+:extrapreds ((x7647))
+:extrapreds ((x7648))
+:extrapreds ((x7649))
+:extrapreds ((x7650))
+:extrapreds ((x7651))
+:extrapreds ((x7652))
+:extrapreds ((x7653))
+:extrapreds ((x7654))
+:extrapreds ((x7655))
+:extrapreds ((x7656))
+:extrapreds ((x7657))
+:extrapreds ((x7658))
+:extrapreds ((x7659))
+:extrapreds ((x7660))
+:extrapreds ((x7661))
+:extrapreds ((x7662))
+:extrapreds ((x7663))
+:extrapreds ((x7664))
+:extrapreds ((x7665))
+:extrapreds ((x7666))
+:extrapreds ((x7667))
+:extrapreds ((x7668))
+:extrapreds ((x7669))
+:extrapreds ((x7670))
+:extrapreds ((x7671))
+:extrapreds ((x7672))
+:extrapreds ((x7673))
+:extrapreds ((x7674))
+:extrapreds ((x7675))
+:extrapreds ((x7676))
+:extrapreds ((x7677))
+:extrapreds ((x7678))
+:extrapreds ((x7679))
+:extrapreds ((x7680))
+:extrapreds ((x7681))
+:extrapreds ((x7682))
+:extrapreds ((x7683))
+:extrapreds ((x7684))
+:extrapreds ((x7685))
+:extrapreds ((x7686))
+:extrapreds ((x7687))
+:extrapreds ((x7688))
+:extrapreds ((x7689))
+:extrapreds ((x7690))
+:extrapreds ((x7691))
+:extrapreds ((x7692))
+:extrapreds ((x7693))
+:extrapreds ((x7694))
+:extrapreds ((x7695))
+:extrapreds ((x7696))
+:extrapreds ((x7697))
+:extrapreds ((x7698))
+:extrapreds ((x7699))
+:extrapreds ((x7700))
+:extrapreds ((x7701))
+:extrapreds ((x7702))
+:extrapreds ((x7703))
+:extrapreds ((x7704))
+:extrapreds ((x7705))
+:extrapreds ((x7706))
+:extrapreds ((x7707))
+:extrapreds ((x7708))
+:extrapreds ((x7709))
+:extrapreds ((x7710))
+:extrapreds ((x7711))
+:extrapreds ((x7712))
+:extrapreds ((x7713))
+:extrapreds ((x7714))
+:extrapreds ((x7715))
+:extrapreds ((x7716))
+:extrapreds ((x7717))
+:extrapreds ((x7718))
+:extrapreds ((x7719))
+:extrapreds ((x7720))
+:extrapreds ((x7721))
+:extrapreds ((x7722))
+:extrapreds ((x7723))
+:extrapreds ((x7724))
+:extrapreds ((x7725))
+:extrapreds ((x7726))
+:extrapreds ((x7727))
+:extrapreds ((x7728))
+:extrapreds ((x7729))
+:extrapreds ((x7730))
+:extrapreds ((x7731))
+:extrapreds ((x7732))
+:extrapreds ((x7733))
+:extrapreds ((x7734))
+:extrapreds ((x7735))
+:extrapreds ((x7736))
+:extrapreds ((x7737))
+:extrapreds ((x7738))
+:extrapreds ((x7739))
+:extrapreds ((x7740))
+:extrapreds ((x7741))
+:extrapreds ((x7742))
+:extrapreds ((x7743))
+:extrapreds ((x7744))
+:extrapreds ((x7745))
+:extrapreds ((x7746))
+:extrapreds ((x7747))
+:extrapreds ((x7748))
+:extrapreds ((x7749))
+:extrapreds ((x7750))
+:extrapreds ((x7751))
+:extrapreds ((x7752))
+:extrapreds ((x7753))
+:extrapreds ((x7754))
+:extrapreds ((x7755))
+:extrapreds ((x7756))
+:extrapreds ((x7757))
+:extrapreds ((x7758))
+:extrapreds ((x7759))
+:extrapreds ((x7760))
+:extrapreds ((x7761))
+:extrapreds ((x7762))
+:extrapreds ((x7763))
+:extrapreds ((x7764))
+:extrapreds ((x7765))
+:extrapreds ((x7766))
+:extrapreds ((x7767))
+:extrapreds ((x7768))
+:extrapreds ((x7769))
+:extrapreds ((x7770))
+:extrapreds ((x7771))
+:extrapreds ((x7772))
+:extrapreds ((x7773))
+:extrapreds ((x7774))
+:extrapreds ((x7775))
+:extrapreds ((x7776))
+:extrapreds ((x7777))
+:extrapreds ((x7778))
+:extrapreds ((x7779))
+:extrapreds ((x7780))
+:extrapreds ((x7781))
+:extrapreds ((x7782))
+:extrapreds ((x7783))
+:extrapreds ((x7784))
+:extrapreds ((x7785))
+:extrapreds ((x7786))
+:extrapreds ((x7787))
+:extrapreds ((x7788))
+:extrapreds ((x7789))
+:extrapreds ((x7790))
+:extrapreds ((x7791))
+:extrapreds ((x7792))
+:extrapreds ((x7793))
+:extrapreds ((x7794))
+:extrapreds ((x7795))
+:extrapreds ((x7796))
+:extrapreds ((x7797))
+:extrapreds ((x7798))
+:extrapreds ((x7799))
+:extrapreds ((x7800))
+:extrapreds ((x7801))
+:extrapreds ((x7802))
+:extrapreds ((x7803))
+:extrapreds ((x7804))
+:extrapreds ((x7805))
+:extrapreds ((x7806))
+:extrapreds ((x7807))
+:extrapreds ((x7808))
+:extrapreds ((x7809))
+:extrapreds ((x7810))
+:extrapreds ((x7811))
+:extrapreds ((x7812))
+:extrapreds ((x7813))
+:extrapreds ((x7814))
+:extrapreds ((x7815))
+:extrapreds ((x7816))
+:extrapreds ((x7817))
+:extrapreds ((x7818))
+:extrapreds ((x7819))
+:extrapreds ((x7820))
+:extrapreds ((x7821))
+:extrapreds ((x7822))
+:extrapreds ((x7823))
+:extrapreds ((x7824))
+:extrapreds ((x7825))
+:extrapreds ((x7826))
+:extrapreds ((x7827))
+:extrapreds ((x7828))
+:extrapreds ((x7829))
+:extrapreds ((x7830))
+:extrapreds ((x7831))
+:extrapreds ((x7832))
+:extrapreds ((x7833))
+:extrapreds ((x7834))
+:extrapreds ((x7835))
+:extrapreds ((x7836))
+:extrapreds ((x7837))
+:extrapreds ((x7838))
+:extrapreds ((x7839))
+:extrapreds ((x7840))
+:extrapreds ((x7841))
+:extrapreds ((x7842))
+:extrapreds ((x7843))
+:extrapreds ((x7844))
+:extrapreds ((x7845))
+:extrapreds ((x7846))
+:extrapreds ((x7847))
+:extrapreds ((x7848))
+:extrapreds ((x7849))
+:extrapreds ((x7850))
+:extrapreds ((x7851))
+:extrapreds ((x7852))
+:extrapreds ((x7853))
+:extrapreds ((x7854))
+:extrapreds ((x7855))
+:extrapreds ((x7856))
+:extrapreds ((x7857))
+:extrapreds ((x7858))
+:extrapreds ((x7859))
+:extrapreds ((x7860))
+:extrapreds ((x7861))
+:extrapreds ((x7862))
+:extrapreds ((x7863))
+:extrapreds ((x7864))
+:extrapreds ((x7865))
+:extrapreds ((x7866))
+:extrapreds ((x7867))
+:extrapreds ((x7868))
+:extrapreds ((x7869))
+:extrapreds ((x7870))
+:extrapreds ((x7871))
+:extrapreds ((x7872))
+:extrapreds ((x7873))
+:extrapreds ((x7874))
+:extrapreds ((x7875))
+:extrapreds ((x7876))
+:extrapreds ((x7877))
+:extrapreds ((x7878))
+:extrapreds ((x7879))
+:extrapreds ((x7880))
+:extrapreds ((x7881))
+:extrapreds ((x7882))
+:extrapreds ((x7883))
+:extrapreds ((x7884))
+:extrapreds ((x7885))
+:extrapreds ((x7886))
+:extrapreds ((x7887))
+:extrapreds ((x7888))
+:extrapreds ((x7889))
+:extrapreds ((x7890))
+:extrapreds ((x7891))
+:extrapreds ((x7892))
+:extrapreds ((x7893))
+:extrapreds ((x7894))
+:extrapreds ((x7895))
+:extrapreds ((x7896))
+:extrapreds ((x7897))
+:extrapreds ((x7898))
+:extrapreds ((x7899))
+:extrapreds ((x7900))
+:extrapreds ((x7901))
+:extrapreds ((x7902))
+:extrapreds ((x7903))
+:extrapreds ((x7904))
+:extrapreds ((x7905))
+:extrapreds ((x7906))
+:extrapreds ((x7907))
+:extrapreds ((x7908))
+:extrapreds ((x7909))
+:extrapreds ((x7910))
+:extrapreds ((x7911))
+:extrapreds ((x7912))
+:extrapreds ((x7913))
+:extrapreds ((x7914))
+:extrapreds ((x7915))
+:extrapreds ((x7916))
+:extrapreds ((x7917))
+:extrapreds ((x7918))
+:extrapreds ((x7919))
+:extrapreds ((x7920))
+:extrapreds ((x7921))
+:extrapreds ((x7922))
+:extrapreds ((x7923))
+:extrapreds ((x7924))
+:extrapreds ((x7925))
+:extrapreds ((x7926))
+:extrapreds ((x7927))
+:extrapreds ((x7928))
+:extrapreds ((x7929))
+:extrapreds ((x7930))
+:extrapreds ((x7931))
+:extrapreds ((x7932))
+:extrapreds ((x7933))
+:extrapreds ((x7934))
+:extrapreds ((x7935))
+:extrapreds ((x7936))
+:extrapreds ((x7937))
+:extrapreds ((x7938))
+:extrapreds ((x7939))
+:extrapreds ((x7940))
+:extrapreds ((x7941))
+:extrapreds ((x7942))
+:extrapreds ((x7943))
+:extrapreds ((x7944))
+:extrapreds ((x7945))
+:extrapreds ((x7946))
+:extrapreds ((x7947))
+:extrapreds ((x7948))
+:extrapreds ((x7949))
+:extrapreds ((x7950))
+:extrapreds ((x7951))
+:extrapreds ((x7952))
+:extrapreds ((x7953))
+:extrapreds ((x7954))
+:extrapreds ((x7955))
+:extrapreds ((x7956))
+:extrapreds ((x7957))
+:extrapreds ((x7958))
+:extrapreds ((x7959))
+:extrapreds ((x7960))
+:extrapreds ((x7961))
+:extrapreds ((x7962))
+:extrapreds ((x7963))
+:extrapreds ((x7964))
+:extrapreds ((x7965))
+:extrapreds ((x7966))
+:extrapreds ((x7967))
+:extrapreds ((x7968))
+:extrapreds ((x7969))
+:extrapreds ((x7970))
+:extrapreds ((x7971))
+:extrapreds ((x7972))
+:extrapreds ((x7973))
+:extrapreds ((x7974))
+:extrapreds ((x7975))
+:extrapreds ((x7976))
+:extrapreds ((x7977))
+:extrapreds ((x7978))
+:extrapreds ((x7979))
+:extrapreds ((x7980))
+:extrapreds ((x7981))
+:extrapreds ((x7982))
+:extrapreds ((x7983))
+:extrapreds ((x7984))
+:extrapreds ((x7985))
+:extrapreds ((x7986))
+:extrapreds ((x7987))
+:extrapreds ((x7988))
+:extrapreds ((x7989))
+:extrapreds ((x7990))
+:extrapreds ((x7991))
+:extrapreds ((x7992))
+:extrapreds ((x7993))
+:extrapreds ((x7994))
+:extrapreds ((x7995))
+:extrapreds ((x7996))
+:extrapreds ((x7997))
+:extrapreds ((x7998))
+:extrapreds ((x7999))
+:extrapreds ((x8000))
+:extrapreds ((x8001))
+:extrapreds ((x8002))
+:extrapreds ((x8003))
+:extrapreds ((x8004))
+:extrapreds ((x8005))
+:extrapreds ((x8006))
+:extrapreds ((x8007))
+:extrapreds ((x8008))
+:extrapreds ((x8009))
+:extrapreds ((x8010))
+:extrapreds ((x8011))
+:extrapreds ((x8012))
+:extrapreds ((x8013))
+:extrapreds ((x8014))
+:extrapreds ((x8015))
+:extrapreds ((x8016))
+:extrapreds ((x8017))
+:extrapreds ((x8018))
+:extrapreds ((x8019))
+:extrapreds ((x8020))
+:extrapreds ((x8021))
+:extrapreds ((x8022))
+:extrapreds ((x8023))
+:extrapreds ((x8024))
+:extrapreds ((x8025))
+:extrapreds ((x8026))
+:extrapreds ((x8027))
+:extrapreds ((x8028))
+:extrapreds ((x8029))
+:extrapreds ((x8030))
+:extrapreds ((x8031))
+:extrapreds ((x8032))
+:extrapreds ((x8033))
+:extrapreds ((x8034))
+:extrapreds ((x8035))
+:extrapreds ((x8036))
+:extrapreds ((x8037))
+:extrapreds ((x8038))
+:extrapreds ((x8039))
+:extrapreds ((x8040))
+:extrapreds ((x8041))
+:extrapreds ((x8042))
+:extrapreds ((x8043))
+:extrapreds ((x8044))
+:extrapreds ((x8045))
+:extrapreds ((x8046))
+:extrapreds ((x8047))
+:extrapreds ((x8048))
+:extrapreds ((x8049))
+:extrapreds ((x8050))
+:extrapreds ((x8051))
+:extrapreds ((x8052))
+:extrapreds ((x8053))
+:extrapreds ((x8054))
+:extrapreds ((x8055))
+:extrapreds ((x8056))
+:extrapreds ((x8057))
+:extrapreds ((x8058))
+:extrapreds ((x8059))
+:extrapreds ((x8060))
+:extrapreds ((x8061))
+:extrapreds ((x8062))
+:extrapreds ((x8063))
+:extrapreds ((x8064))
+:extrapreds ((x8065))
+:extrapreds ((x8066))
+:extrapreds ((x8067))
+:extrapreds ((x8068))
+:extrapreds ((x8069))
+:extrapreds ((x8070))
+:extrapreds ((x8071))
+:extrapreds ((x8072))
+:extrapreds ((x8073))
+:extrapreds ((x8074))
+:extrapreds ((x8075))
+:extrapreds ((x8076))
+:extrapreds ((x8077))
+:extrapreds ((x8078))
+:extrapreds ((x8079))
+:extrapreds ((x8080))
+:extrapreds ((x8081))
+:extrapreds ((x8082))
+:extrapreds ((x8083))
+:extrapreds ((x8084))
+:extrapreds ((x8085))
+:extrapreds ((x8086))
+:extrapreds ((x8087))
+:extrapreds ((x8088))
+:extrapreds ((x8089))
+:extrapreds ((x8090))
+:extrapreds ((x8091))
+:extrapreds ((x8092))
+:extrapreds ((x8093))
+:extrapreds ((x8094))
+:extrapreds ((x8095))
+:extrapreds ((x8096))
+:extrapreds ((x8097))
+:extrapreds ((x8098))
+:extrapreds ((x8099))
+:extrapreds ((x8100))
+:extrapreds ((x8101))
+:extrapreds ((x8102))
+:extrapreds ((x8103))
+:extrapreds ((x8104))
+:extrapreds ((x8105))
+:extrapreds ((x8106))
+:extrapreds ((x8107))
+:extrapreds ((x8108))
+:extrapreds ((x8109))
+:extrapreds ((x8110))
+:extrapreds ((x8111))
+:extrapreds ((x8112))
+:extrapreds ((x8113))
+:extrapreds ((x8114))
+:extrapreds ((x8115))
+:extrapreds ((x8116))
+:extrapreds ((x8117))
+:extrapreds ((x8118))
+:extrapreds ((x8119))
+:extrapreds ((x8120))
+:extrapreds ((x8121))
+:extrapreds ((x8122))
+:extrapreds ((x8123))
+:extrapreds ((x8124))
+:extrapreds ((x8125))
+:extrapreds ((x8126))
+:extrapreds ((x8127))
+:extrapreds ((x8128))
+:extrapreds ((x8129))
+:extrapreds ((x8130))
+:extrapreds ((x8131))
+:extrapreds ((x8132))
+:extrapreds ((x8133))
+:extrapreds ((x8134))
+:extrapreds ((x8135))
+:extrapreds ((x8136))
+:extrapreds ((x8137))
+:extrapreds ((x8138))
+:extrapreds ((x8139))
+:extrapreds ((x8140))
+:extrapreds ((x8141))
+:extrapreds ((x8142))
+:extrapreds ((x8143))
+:extrapreds ((x8144))
+:extrapreds ((x8145))
+:extrapreds ((x8146))
+:extrapreds ((x8147))
+:extrapreds ((x8148))
+:extrapreds ((x8149))
+:extrapreds ((x8150))
+:extrapreds ((x8151))
+:extrapreds ((x8152))
+:extrapreds ((x8153))
+:extrapreds ((x8154))
+:extrapreds ((x8155))
+:extrapreds ((x8156))
+:extrapreds ((x8157))
+:extrapreds ((x8158))
+:extrapreds ((x8159))
+:extrapreds ((x8160))
+:extrapreds ((x8161))
+:extrapreds ((x8162))
+:extrapreds ((x8163))
+:extrapreds ((x8164))
+:extrapreds ((x8165))
+:extrapreds ((x8166))
+:extrapreds ((x8167))
+:extrapreds ((x8168))
+:extrapreds ((x8169))
+:extrapreds ((x8170))
+:extrapreds ((x8171))
+:extrapreds ((x8172))
+:extrapreds ((x8173))
+:extrapreds ((x8174))
+:extrapreds ((x8175))
+:extrapreds ((x8176))
+:extrapreds ((x8177))
+:extrapreds ((x8178))
+:extrapreds ((x8179))
+:extrapreds ((x8180))
+:extrapreds ((x8181))
+:extrapreds ((x8182))
+:extrapreds ((x8183))
+:extrapreds ((x8184))
+:extrapreds ((x8185))
+:extrapreds ((x8186))
+:extrapreds ((x8187))
+:extrapreds ((x8188))
+:extrapreds ((x8189))
+:extrapreds ((x8190))
+:extrapreds ((x8191))
+:extrapreds ((x8192))
+:extrapreds ((x8193))
+:extrapreds ((x8194))
+:extrapreds ((x8195))
+:extrapreds ((x8196))
+:extrapreds ((x8197))
+:extrapreds ((x8198))
+:extrapreds ((x8199))
+:extrapreds ((x8200))
+:extrapreds ((x8201))
+:extrapreds ((x8202))
+:extrapreds ((x8203))
+:extrapreds ((x8204))
+:extrapreds ((x8205))
+:extrapreds ((x8206))
+:extrapreds ((x8207))
+:extrapreds ((x8208))
+:extrapreds ((x8209))
+:extrapreds ((x8210))
+:extrapreds ((x8211))
+:extrapreds ((x8212))
+:extrapreds ((x8213))
+:extrapreds ((x8214))
+:extrapreds ((x8215))
+:extrapreds ((x8216))
+:extrapreds ((x8217))
+:extrapreds ((x8218))
+:extrapreds ((x8219))
+:extrapreds ((x8220))
+:extrapreds ((x8221))
+:extrapreds ((x8222))
+:extrapreds ((x8223))
+:extrapreds ((x8224))
+:extrapreds ((x8225))
+:extrapreds ((x8226))
+:extrapreds ((x8227))
+:extrapreds ((x8228))
+:extrapreds ((x8229))
+:extrapreds ((x8230))
+:extrapreds ((x8231))
+:extrapreds ((x8232))
+:extrapreds ((x8233))
+:extrapreds ((x8234))
+:extrapreds ((x8235))
+:extrapreds ((x8236))
+:extrapreds ((x8237))
+:extrapreds ((x8238))
+:extrapreds ((x8239))
+:extrapreds ((x8240))
+:extrapreds ((x8241))
+:extrapreds ((x8242))
+:extrapreds ((x8243))
+:extrapreds ((x8244))
+:extrapreds ((x8245))
+:extrapreds ((x8246))
+:extrapreds ((x8247))
+:extrapreds ((x8248))
+:extrapreds ((x8249))
+:extrapreds ((x8250))
+:extrapreds ((x8251))
+:extrapreds ((x8252))
+:extrapreds ((x8253))
+:extrapreds ((x8254))
+:extrapreds ((x8255))
+:extrapreds ((x8256))
+:extrapreds ((x8257))
+:extrapreds ((x8258))
+:extrapreds ((x8259))
+:extrapreds ((x8260))
+:extrapreds ((x8261))
+:extrapreds ((x8262))
+:extrapreds ((x8263))
+:extrapreds ((x8264))
+:extrapreds ((x8265))
+:extrapreds ((x8266))
+:extrapreds ((x8267))
+:extrapreds ((x8268))
+:extrapreds ((x8269))
+:extrapreds ((x8270))
+:extrapreds ((x8271))
+:extrapreds ((x8272))
+:extrapreds ((x8273))
+:extrapreds ((x8274))
+:extrapreds ((x8275))
+:extrapreds ((x8276))
+:extrapreds ((x8277))
+:extrapreds ((x8278))
+:extrapreds ((x8279))
+:extrapreds ((x8280))
+:extrapreds ((x8281))
+:extrapreds ((x8282))
+:extrapreds ((x8283))
+:extrapreds ((x8284))
+:extrapreds ((x8285))
+:extrapreds ((x8286))
+:extrapreds ((x8287))
+:extrapreds ((x8288))
+:extrapreds ((x8289))
+:extrapreds ((x8290))
+:extrapreds ((x8291))
+:extrapreds ((x8292))
+:extrapreds ((x8293))
+:extrapreds ((x8294))
+:extrapreds ((x8295))
+:extrapreds ((x8296))
+:extrapreds ((x8297))
+:extrapreds ((x8298))
+:extrapreds ((x8299))
+:extrapreds ((x8300))
+:extrapreds ((x8301))
+:extrapreds ((x8302))
+:extrapreds ((x8303))
+:extrapreds ((x8304))
+:extrapreds ((x8305))
+:extrapreds ((x8306))
+:extrapreds ((x8307))
+:extrapreds ((x8308))
+:extrapreds ((x8309))
+:extrapreds ((x8310))
+:extrapreds ((x8311))
+:extrapreds ((x8312))
+:extrapreds ((x8313))
+:extrapreds ((x8314))
+:extrapreds ((x8315))
+:extrapreds ((x8316))
+:extrapreds ((x8317))
+:extrapreds ((x8318))
+:extrapreds ((x8319))
+:extrapreds ((x8320))
+:extrapreds ((x8321))
+:extrapreds ((x8322))
+:extrapreds ((x8323))
+:extrapreds ((x8324))
+:extrapreds ((x8325))
+:extrapreds ((x8326))
+:extrapreds ((x8327))
+:extrapreds ((x8328))
+:extrapreds ((x8329))
+:extrapreds ((x8330))
+:extrapreds ((x8331))
+:extrapreds ((x8332))
+:extrapreds ((x8333))
+:extrapreds ((x8334))
+:extrapreds ((x8335))
+:extrapreds ((x8336))
+:extrapreds ((x8337))
+:extrapreds ((x8338))
+:extrapreds ((x8339))
+:extrapreds ((x8340))
+:extrapreds ((x8341))
+:extrapreds ((x8342))
+:extrapreds ((x8343))
+:extrapreds ((x8344))
+:extrapreds ((x8345))
+:extrapreds ((x8346))
+:extrapreds ((x8347))
+:extrapreds ((x8348))
+:extrapreds ((x8349))
+:extrapreds ((x8350))
+:extrapreds ((x8351))
+:extrapreds ((x8352))
+:extrapreds ((x8353))
+:extrapreds ((x8354))
+:extrapreds ((x8355))
+:extrapreds ((x8356))
+:extrapreds ((x8357))
+:extrapreds ((x8358))
+:extrapreds ((x8359))
+:extrapreds ((x8360))
+:extrapreds ((x8361))
+:extrapreds ((x8362))
+:extrapreds ((x8363))
+:extrapreds ((x8364))
+:extrapreds ((x8365))
+:extrapreds ((x8366))
+:extrapreds ((x8367))
+:extrapreds ((x8368))
+:extrapreds ((x8369))
+:extrapreds ((x8370))
+:extrapreds ((x8371))
+:extrapreds ((x8372))
+:extrapreds ((x8373))
+:extrapreds ((x8374))
+:extrapreds ((x8375))
+:extrapreds ((x8376))
+:extrapreds ((x8377))
+:extrapreds ((x8378))
+:extrapreds ((x8379))
+:extrapreds ((x8380))
+:extrapreds ((x8381))
+:extrapreds ((x8382))
+:extrapreds ((x8383))
+:extrapreds ((x8384))
+:extrapreds ((x8385))
+:extrapreds ((x8386))
+:extrapreds ((x8387))
+:extrapreds ((x8388))
+:extrapreds ((x8389))
+:extrapreds ((x8390))
+:extrapreds ((x8391))
+:extrapreds ((x8392))
+:extrapreds ((x8393))
+:extrapreds ((x8394))
+:extrapreds ((x8395))
+:extrapreds ((x8396))
+:extrapreds ((x8397))
+:extrapreds ((x8398))
+:extrapreds ((x8399))
+:extrapreds ((x8400))
+:extrapreds ((x8401))
+:extrapreds ((x8402))
+:extrapreds ((x8403))
+:extrapreds ((x8404))
+:extrapreds ((x8405))
+:extrapreds ((x8406))
+:extrapreds ((x8407))
+:extrapreds ((x8408))
+:extrapreds ((x8409))
+:extrapreds ((x8410))
+:extrapreds ((x8411))
+:extrapreds ((x8412))
+:extrapreds ((x8413))
+:extrapreds ((x8414))
+:extrapreds ((x8415))
+:extrapreds ((x8416))
+:extrapreds ((x8417))
+:extrapreds ((x8418))
+:extrapreds ((x8419))
+:extrapreds ((x8420))
+:extrapreds ((x8421))
+:extrapreds ((x8422))
+:extrapreds ((x8423))
+:extrapreds ((x8424))
+:extrapreds ((x8425))
+:extrapreds ((x8426))
+:extrapreds ((x8427))
+:extrapreds ((x8428))
+:extrapreds ((x8429))
+:extrapreds ((x8430))
+:extrapreds ((x8431))
+:extrapreds ((x8432))
+:extrapreds ((x8433))
+:extrapreds ((x8434))
+:extrapreds ((x8435))
+:extrapreds ((x8436))
+:extrapreds ((x8437))
+:extrapreds ((x8438))
+:extrapreds ((x8439))
+:extrapreds ((x8440))
+:extrapreds ((x8441))
+:extrapreds ((x8442))
+:extrapreds ((x8443))
+:extrapreds ((x8444))
+:extrapreds ((x8445))
+:extrapreds ((x8446))
+:extrapreds ((x8447))
+:extrapreds ((x8448))
+:extrapreds ((x8449))
+:extrapreds ((x8450))
+:extrapreds ((x8451))
+:extrapreds ((x8452))
+:extrapreds ((x8453))
+:extrapreds ((x8454))
+:extrapreds ((x8455))
+:extrapreds ((x8456))
+:extrapreds ((x8457))
+:extrapreds ((x8458))
+:extrapreds ((x8459))
+:extrapreds ((x8460))
+:extrapreds ((x8461))
+:extrapreds ((x8462))
+:extrapreds ((x8463))
+:extrapreds ((x8464))
+:extrapreds ((x8465))
+:extrapreds ((x8466))
+:extrapreds ((x8467))
+:extrapreds ((x8468))
+:extrapreds ((x8469))
+:extrapreds ((x8470))
+:extrapreds ((x8471))
+:extrapreds ((x8472))
+:extrapreds ((x8473))
+:extrapreds ((x8474))
+:extrapreds ((x8475))
+:extrapreds ((x8476))
+:extrapreds ((x8477))
+:extrapreds ((x8478))
+:extrapreds ((x8479))
+:extrapreds ((x8480))
+:extrapreds ((x8481))
+:extrapreds ((x8482))
+:extrapreds ((x8483))
+:extrapreds ((x8484))
+:extrapreds ((x8485))
+:extrapreds ((x8486))
+:extrapreds ((x8487))
+:extrapreds ((x8488))
+:extrapreds ((x8489))
+:extrapreds ((x8490))
+:extrapreds ((x8491))
+:extrapreds ((x8492))
+:extrapreds ((x8493))
+:extrapreds ((x8494))
+:extrapreds ((x8495))
+:extrapreds ((x8496))
+:extrapreds ((x8497))
+:extrapreds ((x8498))
+:extrapreds ((x8499))
+:extrapreds ((x8500))
+:extrapreds ((x8501))
+:extrapreds ((x8502))
+:extrapreds ((x8503))
+:extrapreds ((x8504))
+:extrapreds ((x8505))
+:extrapreds ((x8506))
+:extrapreds ((x8507))
+:extrapreds ((x8508))
+:extrapreds ((x8509))
+:extrapreds ((x8510))
+:extrapreds ((x8511))
+:extrapreds ((x8512))
+:extrapreds ((x8513))
+:extrapreds ((x8514))
+:extrapreds ((x8515))
+:extrapreds ((x8516))
+:extrapreds ((x8517))
+:extrapreds ((x8518))
+:extrapreds ((x8519))
+:extrapreds ((x8520))
+:extrapreds ((x8521))
+:extrapreds ((x8522))
+:extrapreds ((x8523))
+:extrapreds ((x8524))
+:extrapreds ((x8525))
+:extrapreds ((x8526))
+:extrapreds ((x8527))
+:extrapreds ((x8528))
+:extrapreds ((x8529))
+:extrapreds ((x8530))
+:extrapreds ((x8531))
+:extrapreds ((x8532))
+:extrapreds ((x8533))
+:extrapreds ((x8534))
+:extrapreds ((x8535))
+:extrapreds ((x8536))
+:extrapreds ((x8537))
+:extrapreds ((x8538))
+:extrapreds ((x8539))
+:extrapreds ((x8540))
+:extrapreds ((x8541))
+:extrapreds ((x8542))
+:extrapreds ((x8543))
+:extrapreds ((x8544))
+:extrapreds ((x8545))
+:extrapreds ((x8546))
+:extrapreds ((x8547))
+:extrapreds ((x8548))
+:extrapreds ((x8549))
+:extrapreds ((x8550))
+:extrapreds ((x8551))
+:extrapreds ((x8552))
+:extrapreds ((x8553))
+:extrapreds ((x8554))
+:extrapreds ((x8555))
+:extrapreds ((x8556))
+:extrapreds ((x8557))
+:extrapreds ((x8558))
+:extrapreds ((x8559))
+:extrapreds ((x8560))
+:extrapreds ((x8561))
+:extrapreds ((x8562))
+:extrapreds ((x8563))
+:extrapreds ((x8564))
+:extrapreds ((x8565))
+:extrapreds ((x8566))
+:extrapreds ((x8567))
+:extrapreds ((x8568))
+:extrapreds ((x8569))
+:extrapreds ((x8570))
+:extrapreds ((x8571))
+:extrapreds ((x8572))
+:extrapreds ((x8573))
+:extrapreds ((x8574))
+:extrapreds ((x8575))
+:extrapreds ((x8576))
+:extrapreds ((x8577))
+:extrapreds ((x8578))
+:extrapreds ((x8579))
+:extrapreds ((x8580))
+:extrapreds ((x8581))
+:extrapreds ((x8582))
+:extrapreds ((x8583))
+:extrapreds ((x8584))
+:extrapreds ((x8585))
+:extrapreds ((x8586))
+:extrapreds ((x8587))
+:extrapreds ((x8588))
+:extrapreds ((x8589))
+:extrapreds ((x8590))
+:extrapreds ((x8591))
+:extrapreds ((x8592))
+:extrapreds ((x8593))
+:extrapreds ((x8594))
+:extrapreds ((x8595))
+:extrapreds ((x8596))
+:extrapreds ((x8597))
+:extrapreds ((x8598))
+:extrapreds ((x8599))
+:extrapreds ((x8600))
+:extrapreds ((x8601))
+:extrapreds ((x8602))
+:extrapreds ((x8603))
+:extrapreds ((x8604))
+:extrapreds ((x8605))
+:extrapreds ((x8606))
+:extrapreds ((x8607))
+:extrapreds ((x8608))
+:extrapreds ((x8609))
+:extrapreds ((x8610))
+:extrapreds ((x8611))
+:extrapreds ((x8612))
+:extrapreds ((x8613))
+:extrapreds ((x8614))
+:extrapreds ((x8615))
+:extrapreds ((x8616))
+:extrapreds ((x8617))
+:extrapreds ((x8618))
+:extrapreds ((x8619))
+:extrapreds ((x8620))
+:extrapreds ((x8621))
+:extrapreds ((x8622))
+:extrapreds ((x8623))
+:extrapreds ((x8624))
+:extrapreds ((x8625))
+:extrapreds ((x8626))
+:extrapreds ((x8627))
+:extrapreds ((x8628))
+:extrapreds ((x8629))
+:extrapreds ((x8630))
+:extrapreds ((x8631))
+:extrapreds ((x8632))
+:extrapreds ((x8633))
+:extrapreds ((x8634))
+:extrapreds ((x8635))
+:extrapreds ((x8636))
+:extrapreds ((x8637))
+:extrapreds ((x8638))
+:extrapreds ((x8639))
+:extrapreds ((x8640))
+:extrapreds ((x8641))
+:extrapreds ((x8642))
+:extrapreds ((x8643))
+:extrapreds ((x8644))
+:extrapreds ((x8645))
+:extrapreds ((x8646))
+:extrapreds ((x8647))
+:extrapreds ((x8648))
+:extrapreds ((x8649))
+:extrapreds ((x8650))
+:extrapreds ((x8651))
+:extrapreds ((x8652))
+:extrapreds ((x8653))
+:extrapreds ((x8654))
+:extrapreds ((x8655))
+:extrapreds ((x8656))
+:extrapreds ((x8657))
+:extrapreds ((x8658))
+:extrapreds ((x8659))
+:extrapreds ((x8660))
+:extrapreds ((x8661))
+:extrapreds ((x8662))
+:extrapreds ((x8663))
+:extrapreds ((x8664))
+:extrapreds ((x8665))
+:extrapreds ((x8666))
+:extrapreds ((x8667))
+:extrapreds ((x8668))
+:extrapreds ((x8669))
+:extrapreds ((x8670))
+:extrapreds ((x8671))
+:extrapreds ((x8672))
+:extrapreds ((x8673))
+:extrapreds ((x8674))
+:extrapreds ((x8675))
+:extrapreds ((x8676))
+:extrapreds ((x8677))
+:extrapreds ((x8678))
+:extrapreds ((x8679))
+:extrapreds ((x8680))
+:extrapreds ((x8681))
+:extrapreds ((x8682))
+:extrapreds ((x8683))
+:extrapreds ((x8684))
+:extrapreds ((x8685))
+:extrapreds ((x8686))
+:extrapreds ((x8687))
+:extrapreds ((x8688))
+:extrapreds ((x8689))
+:extrapreds ((x8690))
+:extrapreds ((x8691))
+:extrapreds ((x8692))
+:extrapreds ((x8693))
+:extrapreds ((x8694))
+:extrapreds ((x8695))
+:extrapreds ((x8696))
+:extrapreds ((x8697))
+:extrapreds ((x8698))
+:extrapreds ((x8699))
+:extrapreds ((x8700))
+:extrapreds ((x8701))
+:extrapreds ((x8702))
+:extrapreds ((x8703))
+:extrapreds ((x8704))
+:extrapreds ((x8705))
+:extrapreds ((x8706))
+:extrapreds ((x8707))
+:extrapreds ((x8708))
+:extrapreds ((x8709))
+:extrapreds ((x8710))
+:formula (and
+(or x1 (not x2))
+(or x1 (not x3))
+(or x1 (not x4))
+(or x1 (not x5))
+(or x1 (not x6))
+(or x1 (not x7))
+(or x1 (not x8))
+(or x1 (not x9))
+(or x1 (not x10))
+(or x1 (not x11))
+(or x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 (not x1))
+(or (not x11) (not x16))
+(or (not x11) x15)
+(or (not x11) (not x14))
+(or (not x11) x13)
+(or (not x11) (not x12))
+(or (not x17) (not x16))
+(or (not x17) x15)
+(or (not x17) (not x14))
+(or (not x17) (not x13))
+(or (not x17) x12)
+(or (not x18) (not x16))
+(or (not x18) x15)
+(or (not x18) (not x14))
+(or (not x18) (not x13))
+(or (not x18) (not x12))
+(or (not x19) (not x16))
+(or (not x19) (not x15))
+(or (not x19) x14)
+(or (not x19) x13)
+(or (not x19) x12)
+(or (not x20) (not x16))
+(or (not x20) (not x15))
+(or (not x20) x14)
+(or (not x20) x13)
+(or (not x20) (not x12))
+(or (not x21) (not x16))
+(or (not x21) (not x15))
+(or (not x21) x14)
+(or (not x21) (not x13))
+(or (not x21) x12)
+(or (not x22) (not x16))
+(or (not x22) (not x15))
+(or (not x22) x14)
+(or (not x22) (not x13))
+(or (not x22) (not x12))
+(or (not x23) (not x16))
+(or (not x23) (not x15))
+(or (not x23) (not x14))
+(or (not x23) x13)
+(or (not x23) x12)
+(or (not x24) (not x16))
+(or (not x24) (not x15))
+(or (not x24) (not x14))
+(or (not x24) x13)
+(or (not x24) (not x12))
+(or (not x25) (not x16))
+(or (not x25) (not x15))
+(or (not x25) (not x14))
+(or (not x25) (not x13))
+(or (not x25) x12)
+(or (not x26) (not x16))
+(or (not x26) (not x15))
+(or (not x26) (not x14))
+(or (not x26) (not x13))
+(or (not x26) (not x12))
+(or x27 (not x26))
+(or x27 (not x25))
+(or x27 (not x24))
+(or x27 (not x23))
+(or x27 (not x22))
+(or x27 (not x21))
+(or x27 (not x20))
+(or x27 (not x19))
+(or x27 (not x18))
+(or x27 (not x17))
+(or x26 x25 x24 x23 x22 x21 x20 x19 x18 x17 (not x27))
+(or (not x28) (not x29) (not x30) (not x31) (not x32) (not x33) (not x34) (not x35) (not x36) (not x37) x38)
+(or (not x38) x28)
+(or (not x38) x29)
+(or (not x38) x30)
+(or (not x38) x31)
+(or (not x38) x32)
+(or (not x38) x33)
+(or (not x38) x34)
+(or (not x38) x35)
+(or (not x38) x36)
+(or (not x38) x37)
+(or x33 (not x39))
+(or x33 (not x40))
+(or x33 (not x41))
+(or x33 (not x42))
+(or x33 (not x43))
+(or x33 (not x48))
+(or x33 (not x47))
+(or x33 x46)
+(or x33 x45)
+(or x33 (not x44))
+(or x39 x40 x41 x42 x43 x48 x47 (not x46) (not x45) x44 (not x33))
+(or (not x28) (not x29) (not x30) (not x31) (not x32) (not x33) (not x37) x49)
+(or (not x49) x28)
+(or (not x49) x29)
+(or (not x49) x30)
+(or (not x49) x31)
+(or (not x49) x32)
+(or (not x49) x33)
+(or (not x49) x37)
+(or x29 (not x39))
+(or x29 (not x48))
+(or x29 (not x47))
+(or x29 (not x46))
+(or x29 x45)
+(or x29 (not x44))
+(or x39 x48 x47 x46 (not x45) x44 (not x29))
+(or (not x28) (not x29) (not x34) (not x35) (not x36) (not x37) x50)
+(or (not x50) x28)
+(or (not x50) x29)
+(or (not x50) x34)
+(or (not x50) x35)
+(or (not x50) x36)
+(or (not x50) x37)
+(or x35 (not x39))
+(or x35 (not x40))
+(or x35 (not x41))
+(or x35 (not x42))
+(or x35 (not x43))
+(or x35 (not x51))
+(or x35 (not x52))
+(or x35 (not x48))
+(or x35 x47)
+(or x35 (not x46))
+(or x35 (not x45))
+(or x35 (not x44))
+(or x39 x40 x41 x42 x43 x51 x52 x48 (not x47) x46 x45 x44 (not x35))
+(or x31 (not x39))
+(or x31 (not x40))
+(or x31 (not x41))
+(or x31 (not x48))
+(or x31 (not x47))
+(or x31 x46)
+(or x31 (not x45))
+(or x31 (not x44))
+(or x39 x40 x41 x48 x47 (not x46) x45 x44 (not x31))
+(or (not x30) (not x31) (not x34) (not x35) (not x37) x53)
+(or (not x53) x30)
+(or (not x53) x31)
+(or (not x53) x34)
+(or (not x53) x35)
+(or (not x53) x37)
+(or x54 x55)
+(or x54 (not x56))
+(or (not x55) x56 (not x54))
+(or x48 (not x47) x46 x45 (not x44) (not x57) (not x54) x58)
+(or (not x58) (not x48))
+(or (not x58) x47)
+(or (not x58) (not x46))
+(or (not x58) (not x45))
+(or (not x58) x44)
+(or (not x58) x57)
+(or (not x58) x54)
+(or x37 (not x39))
+(or x37 (not x40))
+(or x37 (not x41))
+(or x37 (not x42))
+(or x37 (not x43))
+(or x37 (not x51))
+(or x37 (not x52))
+(or x37 (not x59))
+(or x37 (not x58))
+(or x39 x40 x41 x42 x43 x51 x52 x59 x58 (not x37))
+(or (not x55) x56 x60)
+(or (not x60) x55)
+(or (not x60) (not x56))
+(or x36 (not x39))
+(or x36 (not x40))
+(or x36 (not x41))
+(or x36 (not x42))
+(or x36 (not x43))
+(or x36 (not x51))
+(or x36 (not x52))
+(or x36 (not x59))
+(or x36 (not x48))
+(or x36 x47)
+(or x36 (not x46))
+(or x36 (not x45))
+(or x36 x44)
+(or x36 x57)
+(or x36 (not x60))
+(or x39 x40 x41 x42 x43 x51 x52 x59 x48 (not x47) x46 x45 (not x44) (not x57) x60 (not x36))
+(or x34 (not x39))
+(or x34 (not x40))
+(or x34 (not x41))
+(or x34 (not x42))
+(or x34 (not x43))
+(or x34 (not x51))
+(or x34 (not x48))
+(or x34 (not x47))
+(or x34 x46)
+(or x34 x45)
+(or x34 x44)
+(or x39 x40 x41 x42 x43 x51 x48 x47 (not x46) (not x45) (not x44) (not x34))
+(or x32 (not x39))
+(or x32 (not x40))
+(or x32 (not x41))
+(or x32 (not x42))
+(or x32 (not x48))
+(or x32 (not x47))
+(or x32 x46)
+(or x32 (not x45))
+(or x32 x44)
+(or x39 x40 x41 x42 x48 x47 (not x46) x45 (not x44) (not x32))
+(or x30 (not x39))
+(or x30 (not x40))
+(or x30 (not x48))
+(or x30 (not x47))
+(or x30 (not x46))
+(or x30 x45)
+(or x30 x44)
+(or x39 x40 x48 x47 x46 (not x45) (not x44) (not x30))
+(or x28 (not x48))
+(or x28 (not x47))
+(or x28 (not x46))
+(or x28 (not x45))
+(or x28 x44)
+(or x48 x47 x46 x45 (not x44) (not x28))
+(or (not x28) (not x30) (not x32) (not x34) (not x36) (not x37) x61)
+(or (not x61) x28)
+(or (not x61) x30)
+(or (not x61) x32)
+(or (not x61) x34)
+(or (not x61) x36)
+(or (not x61) x37)
+(or (not x10) (not x48))
+(or (not x10) x47)
+(or (not x10) (not x46))
+(or (not x10) x45)
+(or (not x10) (not x44))
+(or (not x62) (not x48))
+(or (not x62) x47)
+(or (not x62) (not x46))
+(or (not x62) (not x45))
+(or (not x62) x44)
+(or x48 (not x47) x46 x45 x44 x59)
+(or (not x59) (not x48))
+(or (not x59) x47)
+(or (not x59) (not x46))
+(or (not x59) (not x45))
+(or (not x59) (not x44))
+(or x48 x47 (not x46) (not x45) (not x44) x52)
+(or (not x52) (not x48))
+(or (not x52) (not x47))
+(or (not x52) x46)
+(or (not x52) x45)
+(or (not x52) x44)
+(or x48 x47 (not x46) (not x45) x44 x51)
+(or (not x51) (not x48))
+(or (not x51) (not x47))
+(or (not x51) x46)
+(or (not x51) x45)
+(or (not x51) (not x44))
+(or x48 x47 (not x46) x45 (not x44) x43)
+(or (not x43) (not x48))
+(or (not x43) (not x47))
+(or (not x43) x46)
+(or (not x43) (not x45))
+(or (not x43) x44)
+(or x48 x47 (not x46) x45 x44 x42)
+(or (not x42) (not x48))
+(or (not x42) (not x47))
+(or (not x42) x46)
+(or (not x42) (not x45))
+(or (not x42) (not x44))
+(or x48 x47 x46 (not x45) (not x44) x41)
+(or (not x41) (not x48))
+(or (not x41) (not x47))
+(or (not x41) (not x46))
+(or (not x41) x45)
+(or (not x41) x44)
+(or x48 x47 x46 (not x45) x44 x40)
+(or (not x40) (not x48))
+(or (not x40) (not x47))
+(or (not x40) (not x46))
+(or (not x40) x45)
+(or (not x40) (not x44))
+(or x48 x47 x46 x45 (not x44) x39)
+(or (not x39) (not x48))
+(or (not x39) (not x47))
+(or (not x39) (not x46))
+(or (not x39) (not x45))
+(or (not x39) x44)
+(or (not x63) (not x48))
+(or (not x63) (not x47))
+(or (not x63) (not x46))
+(or (not x63) (not x45))
+(or (not x63) (not x44))
+(or x64 (not x63))
+(or x64 (not x39))
+(or x64 (not x40))
+(or x64 (not x41))
+(or x64 (not x42))
+(or x64 (not x43))
+(or x64 (not x51))
+(or x64 (not x52))
+(or x64 (not x59))
+(or x64 (not x62))
+(or x63 x39 x40 x41 x42 x43 x51 x52 x59 x62 (not x64))
+(or (not x65) (not x66) (not x67) (not x68) (not x69) (not x70) (not x71) (not x72) (not x73) (not x74) x75)
+(or (not x75) x65)
+(or (not x75) x66)
+(or (not x75) x67)
+(or (not x75) x68)
+(or (not x75) x69)
+(or (not x75) x70)
+(or (not x75) x71)
+(or (not x75) x72)
+(or (not x75) x73)
+(or (not x75) x74)
+(or x70 (not x76))
+(or x70 (not x77))
+(or x70 (not x78))
+(or x70 (not x79))
+(or x70 (not x80))
+(or x70 (not x85))
+(or x70 (not x84))
+(or x70 x83)
+(or x70 x82)
+(or x70 (not x81))
+(or x76 x77 x78 x79 x80 x85 x84 (not x83) (not x82) x81 (not x70))
+(or (not x65) (not x66) (not x67) (not x68) (not x69) (not x70) (not x74) x86)
+(or (not x86) x65)
+(or (not x86) x66)
+(or (not x86) x67)
+(or (not x86) x68)
+(or (not x86) x69)
+(or (not x86) x70)
+(or (not x86) x74)
+(or x66 (not x76))
+(or x66 (not x85))
+(or x66 (not x84))
+(or x66 (not x83))
+(or x66 x82)
+(or x66 (not x81))
+(or x76 x85 x84 x83 (not x82) x81 (not x66))
+(or (not x65) (not x66) (not x71) (not x72) (not x73) (not x74) x87)
+(or (not x87) x65)
+(or (not x87) x66)
+(or (not x87) x71)
+(or (not x87) x72)
+(or (not x87) x73)
+(or (not x87) x74)
+(or x72 (not x76))
+(or x72 (not x77))
+(or x72 (not x78))
+(or x72 (not x79))
+(or x72 (not x80))
+(or x72 (not x88))
+(or x72 (not x89))
+(or x72 (not x85))
+(or x72 x84)
+(or x72 (not x83))
+(or x72 (not x82))
+(or x72 (not x81))
+(or x76 x77 x78 x79 x80 x88 x89 x85 (not x84) x83 x82 x81 (not x72))
+(or x68 (not x76))
+(or x68 (not x77))
+(or x68 (not x78))
+(or x68 (not x85))
+(or x68 (not x84))
+(or x68 x83)
+(or x68 (not x82))
+(or x68 (not x81))
+(or x76 x77 x78 x85 x84 (not x83) x82 x81 (not x68))
+(or (not x67) (not x68) (not x71) (not x72) (not x74) x90)
+(or (not x90) x67)
+(or (not x90) x68)
+(or (not x90) x71)
+(or (not x90) x72)
+(or (not x90) x74)
+(or x91 x92)
+(or x91 (not x93))
+(or (not x92) x93 (not x91))
+(or x85 (not x84) x83 x82 (not x81) (not x94) (not x91) x95)
+(or (not x95) (not x85))
+(or (not x95) x84)
+(or (not x95) (not x83))
+(or (not x95) (not x82))
+(or (not x95) x81)
+(or (not x95) x94)
+(or (not x95) x91)
+(or x74 (not x76))
+(or x74 (not x77))
+(or x74 (not x78))
+(or x74 (not x79))
+(or x74 (not x80))
+(or x74 (not x88))
+(or x74 (not x89))
+(or x74 (not x96))
+(or x74 (not x95))
+(or x76 x77 x78 x79 x80 x88 x89 x96 x95 (not x74))
+(or (not x92) x93 x97)
+(or (not x97) x92)
+(or (not x97) (not x93))
+(or x73 (not x76))
+(or x73 (not x77))
+(or x73 (not x78))
+(or x73 (not x79))
+(or x73 (not x80))
+(or x73 (not x88))
+(or x73 (not x89))
+(or x73 (not x96))
+(or x73 (not x85))
+(or x73 x84)
+(or x73 (not x83))
+(or x73 (not x82))
+(or x73 x81)
+(or x73 x94)
+(or x73 (not x97))
+(or x76 x77 x78 x79 x80 x88 x89 x96 x85 (not x84) x83 x82 (not x81) (not x94) x97 (not x73))
+(or x71 (not x76))
+(or x71 (not x77))
+(or x71 (not x78))
+(or x71 (not x79))
+(or x71 (not x80))
+(or x71 (not x88))
+(or x71 (not x85))
+(or x71 (not x84))
+(or x71 x83)
+(or x71 x82)
+(or x71 x81)
+(or x76 x77 x78 x79 x80 x88 x85 x84 (not x83) (not x82) (not x81) (not x71))
+(or x69 (not x76))
+(or x69 (not x77))
+(or x69 (not x78))
+(or x69 (not x79))
+(or x69 (not x85))
+(or x69 (not x84))
+(or x69 x83)
+(or x69 (not x82))
+(or x69 x81)
+(or x76 x77 x78 x79 x85 x84 (not x83) x82 (not x81) (not x69))
+(or x67 (not x76))
+(or x67 (not x77))
+(or x67 (not x85))
+(or x67 (not x84))
+(or x67 (not x83))
+(or x67 x82)
+(or x67 x81)
+(or x76 x77 x85 x84 x83 (not x82) (not x81) (not x67))
+(or x65 (not x85))
+(or x65 (not x84))
+(or x65 (not x83))
+(or x65 (not x82))
+(or x65 x81)
+(or x85 x84 x83 x82 (not x81) (not x65))
+(or (not x65) (not x67) (not x69) (not x71) (not x73) (not x74) x98)
+(or (not x98) x65)
+(or (not x98) x67)
+(or (not x98) x69)
+(or (not x98) x71)
+(or (not x98) x73)
+(or (not x98) x74)
+(or x99 (not x100))
+(or x99 (not x101))
+(or x100 x101 (not x99))
+(or x102 (not x103) x104)
+(or (not x104) (not x102))
+(or (not x104) x103)
+(or x105 (not x106) x107)
+(or (not x107) (not x105))
+(or (not x107) x106)
+(or x108 (not x109) x110)
+(or (not x110) (not x108))
+(or (not x110) x109)
+(or x111 (not x112) x113)
+(or (not x113) (not x111))
+(or (not x113) x112)
+(or x114 (not x113))
+(or x114 (not x110))
+(or x114 (not x107))
+(or x114 (not x104))
+(or x113 x110 x107 x104 (not x114))
+(or (not x100) (not x114) x115)
+(or (not x115) x100)
+(or (not x115) x114)
+(or x116 (not x117))
+(or x116 (not x115))
+(or x117 x115 (not x116))
+(or (not x9) (not x85))
+(or (not x9) x84)
+(or (not x9) (not x83))
+(or (not x9) x82)
+(or (not x9) (not x81))
+(or (not x118) (not x85))
+(or (not x118) x84)
+(or (not x118) (not x83))
+(or (not x118) (not x82))
+(or (not x118) x81)
+(or x85 (not x84) x83 x82 x81 x96)
+(or (not x96) (not x85))
+(or (not x96) x84)
+(or (not x96) (not x83))
+(or (not x96) (not x82))
+(or (not x96) (not x81))
+(or x85 x84 (not x83) (not x82) (not x81) x89)
+(or (not x89) (not x85))
+(or (not x89) (not x84))
+(or (not x89) x83)
+(or (not x89) x82)
+(or (not x89) x81)
+(or x85 x84 (not x83) (not x82) x81 x88)
+(or (not x88) (not x85))
+(or (not x88) (not x84))
+(or (not x88) x83)
+(or (not x88) x82)
+(or (not x88) (not x81))
+(or x85 x84 (not x83) x82 (not x81) x80)
+(or (not x80) (not x85))
+(or (not x80) (not x84))
+(or (not x80) x83)
+(or (not x80) (not x82))
+(or (not x80) x81)
+(or x85 x84 (not x83) x82 x81 x79)
+(or (not x79) (not x85))
+(or (not x79) (not x84))
+(or (not x79) x83)
+(or (not x79) (not x82))
+(or (not x79) (not x81))
+(or x85 x84 x83 (not x82) (not x81) x78)
+(or (not x78) (not x85))
+(or (not x78) (not x84))
+(or (not x78) (not x83))
+(or (not x78) x82)
+(or (not x78) x81)
+(or x85 x84 x83 (not x82) x81 x77)
+(or (not x77) (not x85))
+(or (not x77) (not x84))
+(or (not x77) (not x83))
+(or (not x77) x82)
+(or (not x77) (not x81))
+(or x85 x84 x83 x82 (not x81) x76)
+(or (not x76) (not x85))
+(or (not x76) (not x84))
+(or (not x76) (not x83))
+(or (not x76) (not x82))
+(or (not x76) x81)
+(or (not x119) (not x85))
+(or (not x119) (not x84))
+(or (not x119) (not x83))
+(or (not x119) (not x82))
+(or (not x119) (not x81))
+(or x120 (not x119))
+(or x120 (not x76))
+(or x120 (not x77))
+(or x120 (not x78))
+(or x120 (not x79))
+(or x120 (not x80))
+(or x120 (not x88))
+(or x120 (not x89))
+(or x120 (not x96))
+(or x120 (not x118))
+(or x119 x76 x77 x78 x79 x80 x88 x89 x96 x118 (not x120))
+(or (not x121) (not x122) (not x123) (not x124) (not x125) (not x126) (not x127) (not x128) (not x129) (not x130) x131)
+(or (not x131) x121)
+(or (not x131) x122)
+(or (not x131) x123)
+(or (not x131) x124)
+(or (not x131) x125)
+(or (not x131) x126)
+(or (not x131) x127)
+(or (not x131) x128)
+(or (not x131) x129)
+(or (not x131) x130)
+(or x126 (not x132))
+(or x126 (not x133))
+(or x126 (not x134))
+(or x126 (not x135))
+(or x126 (not x136))
+(or x126 (not x141))
+(or x126 (not x140))
+(or x126 x139)
+(or x126 x138)
+(or x126 (not x137))
+(or x132 x133 x134 x135 x136 x141 x140 (not x139) (not x138) x137 (not x126))
+(or (not x121) (not x122) (not x123) (not x124) (not x125) (not x126) (not x130) x142)
+(or (not x142) x121)
+(or (not x142) x122)
+(or (not x142) x123)
+(or (not x142) x124)
+(or (not x142) x125)
+(or (not x142) x126)
+(or (not x142) x130)
+(or x122 (not x132))
+(or x122 (not x141))
+(or x122 (not x140))
+(or x122 (not x139))
+(or x122 x138)
+(or x122 (not x137))
+(or x132 x141 x140 x139 (not x138) x137 (not x122))
+(or (not x121) (not x122) (not x127) (not x128) (not x129) (not x130) x143)
+(or (not x143) x121)
+(or (not x143) x122)
+(or (not x143) x127)
+(or (not x143) x128)
+(or (not x143) x129)
+(or (not x143) x130)
+(or x128 (not x132))
+(or x128 (not x133))
+(or x128 (not x134))
+(or x128 (not x135))
+(or x128 (not x136))
+(or x128 (not x144))
+(or x128 (not x145))
+(or x128 (not x141))
+(or x128 x140)
+(or x128 (not x139))
+(or x128 (not x138))
+(or x128 (not x137))
+(or x132 x133 x134 x135 x136 x144 x145 x141 (not x140) x139 x138 x137 (not x128))
+(or x124 (not x132))
+(or x124 (not x133))
+(or x124 (not x134))
+(or x124 (not x141))
+(or x124 (not x140))
+(or x124 x139)
+(or x124 (not x138))
+(or x124 (not x137))
+(or x132 x133 x134 x141 x140 (not x139) x138 x137 (not x124))
+(or (not x123) (not x124) (not x127) (not x128) (not x130) x146)
+(or (not x146) x123)
+(or (not x146) x124)
+(or (not x146) x127)
+(or (not x146) x128)
+(or (not x146) x130)
+(or x147 x148)
+(or x147 (not x149))
+(or (not x148) x149 (not x147))
+(or x141 (not x140) x139 x138 (not x137) (not x150) (not x147) x151)
+(or (not x151) (not x141))
+(or (not x151) x140)
+(or (not x151) (not x139))
+(or (not x151) (not x138))
+(or (not x151) x137)
+(or (not x151) x150)
+(or (not x151) x147)
+(or x130 (not x132))
+(or x130 (not x133))
+(or x130 (not x134))
+(or x130 (not x135))
+(or x130 (not x136))
+(or x130 (not x144))
+(or x130 (not x145))
+(or x130 (not x152))
+(or x130 (not x151))
+(or x132 x133 x134 x135 x136 x144 x145 x152 x151 (not x130))
+(or (not x148) x149 x153)
+(or (not x153) x148)
+(or (not x153) (not x149))
+(or x129 (not x132))
+(or x129 (not x133))
+(or x129 (not x134))
+(or x129 (not x135))
+(or x129 (not x136))
+(or x129 (not x144))
+(or x129 (not x145))
+(or x129 (not x152))
+(or x129 (not x141))
+(or x129 x140)
+(or x129 (not x139))
+(or x129 (not x138))
+(or x129 x137)
+(or x129 x150)
+(or x129 (not x153))
+(or x132 x133 x134 x135 x136 x144 x145 x152 x141 (not x140) x139 x138 (not x137) (not x150) x153 (not x129))
+(or x127 (not x132))
+(or x127 (not x133))
+(or x127 (not x134))
+(or x127 (not x135))
+(or x127 (not x136))
+(or x127 (not x144))
+(or x127 (not x141))
+(or x127 (not x140))
+(or x127 x139)
+(or x127 x138)
+(or x127 x137)
+(or x132 x133 x134 x135 x136 x144 x141 x140 (not x139) (not x138) (not x137) (not x127))
+(or x125 (not x132))
+(or x125 (not x133))
+(or x125 (not x134))
+(or x125 (not x135))
+(or x125 (not x141))
+(or x125 (not x140))
+(or x125 x139)
+(or x125 (not x138))
+(or x125 x137)
+(or x132 x133 x134 x135 x141 x140 (not x139) x138 (not x137) (not x125))
+(or x123 (not x132))
+(or x123 (not x133))
+(or x123 (not x141))
+(or x123 (not x140))
+(or x123 (not x139))
+(or x123 x138)
+(or x123 x137)
+(or x132 x133 x141 x140 x139 (not x138) (not x137) (not x123))
+(or x121 (not x141))
+(or x121 (not x140))
+(or x121 (not x139))
+(or x121 (not x138))
+(or x121 x137)
+(or x141 x140 x139 x138 (not x137) (not x121))
+(or (not x121) (not x123) (not x125) (not x127) (not x129) (not x130) x154)
+(or (not x154) x121)
+(or (not x154) x123)
+(or (not x154) x125)
+(or (not x154) x127)
+(or (not x154) x129)
+(or (not x154) x130)
+(or (not x155) (not x156) x157)
+(or (not x157) x155)
+(or (not x157) x156)
+(or (not x158) (not x155) (not x159) x160)
+(or (not x160) x158)
+(or (not x160) x155)
+(or (not x160) x159)
+(or (not x161) (not x158) (not x155) (not x162) x163)
+(or (not x163) x161)
+(or (not x163) x158)
+(or (not x163) x155)
+(or (not x163) x162)
+(or x164 (not x165))
+(or x164 (not x163))
+(or x164 (not x160))
+(or x164 (not x157))
+(or x165 x163 x160 x157 (not x164))
+(or (not x164) x166 (not x167) (not x168) (not x169) x170)
+(or (not x170) x164)
+(or (not x170) (not x166))
+(or (not x170) x167)
+(or (not x170) x168)
+(or (not x170) x169)
+(or (not x158) (not x159) x171)
+(or (not x171) x158)
+(or (not x171) x159)
+(or (not x161) (not x158) (not x162) x172)
+(or (not x172) x161)
+(or (not x172) x158)
+(or (not x172) x162)
+(or (not x173) (not x161) (not x158) (not x165) x174)
+(or (not x174) x173)
+(or (not x174) x161)
+(or (not x174) x158)
+(or (not x174) x165)
+(or x175 (not x156))
+(or x175 (not x174))
+(or x175 (not x172))
+(or x175 (not x171))
+(or x156 x174 x172 x171 (not x175))
+(or (not x175) x176 (not x177) (not x168) (not x169) x178)
+(or (not x178) x175)
+(or (not x178) (not x176))
+(or (not x178) x177)
+(or (not x178) x168)
+(or (not x178) x169)
+(or (not x161) (not x162) x179)
+(or (not x179) x161)
+(or (not x179) x162)
+(or (not x173) (not x161) (not x165) x180)
+(or (not x180) x173)
+(or (not x180) x161)
+(or (not x180) x165)
+(or (not x155) (not x173) (not x161) (not x156) x181)
+(or (not x181) x155)
+(or (not x181) x173)
+(or (not x181) x161)
+(or (not x181) x156)
+(or x182 (not x159))
+(or x182 (not x181))
+(or x182 (not x180))
+(or x182 (not x179))
+(or x159 x181 x180 x179 (not x182))
+(or (not x182) x183 (not x184) (not x168) (not x169) x185)
+(or (not x185) x182)
+(or (not x185) (not x183))
+(or (not x185) x184)
+(or (not x185) x168)
+(or (not x185) x169)
+(or (not x173) (not x165) x186)
+(or (not x186) x173)
+(or (not x186) x165)
+(or (not x155) (not x173) (not x156) x187)
+(or (not x187) x155)
+(or (not x187) x173)
+(or (not x187) x156)
+(or (not x158) (not x155) (not x173) (not x159) x188)
+(or (not x188) x158)
+(or (not x188) x155)
+(or (not x188) x173)
+(or (not x188) x159)
+(or x189 (not x162))
+(or x189 (not x188))
+(or x189 (not x187))
+(or x189 (not x186))
+(or x162 x188 x187 x186 (not x189))
+(or (not x189) x190 (not x191) (not x168) (not x169) x192)
+(or (not x192) x189)
+(or (not x192) (not x190))
+(or (not x192) x191)
+(or (not x192) x168)
+(or (not x192) x169)
+(or x193 x194)
+(or x193 x195)
+(or x193 x196)
+(or x193 x197)
+(or (not x194) (not x195) (not x196) (not x197) (not x193))
+(or (not x169) (not x193) x198)
+(or (not x198) x169)
+(or (not x198) x193)
+(or x199 x200)
+(or x199 x201)
+(or (not x200) (not x201) (not x199))
+(or x202 x201 x203)
+(or (not x203) (not x202))
+(or (not x203) (not x201))
+(or x204 x205)
+(or x204 (not x203))
+(or (not x205) x203 (not x204))
+(or x206 x202 x201 x207)
+(or (not x207) (not x206))
+(or (not x207) (not x202))
+(or (not x207) (not x201))
+(or x208 x209)
+(or x208 (not x207))
+(or (not x209) x207 (not x208))
+(or x210 x206 x202 x201 x211)
+(or (not x211) (not x210))
+(or (not x211) (not x206))
+(or (not x211) (not x202))
+(or (not x211) (not x201))
+(or x212 x213)
+(or x212 (not x211))
+(or (not x213) x211 (not x212))
+(or x214 x215)
+(or x214 x216)
+(or (not x215) (not x216) (not x214))
+(or x217 x216 x218)
+(or (not x218) (not x217))
+(or (not x218) (not x216))
+(or x219 x220)
+(or x219 (not x218))
+(or (not x220) x218 (not x219))
+(or x221 x217 x216 x222)
+(or (not x222) (not x221))
+(or (not x222) (not x217))
+(or (not x222) (not x216))
+(or x223 x224)
+(or x223 (not x222))
+(or (not x224) x222 (not x223))
+(or x225 x221 x217 x216 x226)
+(or (not x226) (not x225))
+(or (not x226) (not x221))
+(or (not x226) (not x217))
+(or (not x226) (not x216))
+(or x227 x228)
+(or x227 (not x226))
+(or (not x228) x226 (not x227))
+(or x229 x230)
+(or x229 x231)
+(or (not x230) (not x231) (not x229))
+(or x232 x231 x233)
+(or (not x233) (not x232))
+(or (not x233) (not x231))
+(or x234 x235)
+(or x234 (not x233))
+(or (not x235) x233 (not x234))
+(or x236 x232 x231 x237)
+(or (not x237) (not x236))
+(or (not x237) (not x232))
+(or (not x237) (not x231))
+(or x238 x239)
+(or x238 (not x237))
+(or (not x239) x237 (not x238))
+(or x240 x236 x232 x231 x241)
+(or (not x241) (not x240))
+(or (not x241) (not x236))
+(or (not x241) (not x232))
+(or (not x241) (not x231))
+(or x242 x243)
+(or x242 (not x241))
+(or (not x243) x241 (not x242))
+(or x244 x245)
+(or x244 x246)
+(or (not x245) (not x246) (not x244))
+(or x247 x246 x248)
+(or (not x248) (not x247))
+(or (not x248) (not x246))
+(or x249 x250)
+(or x249 (not x248))
+(or (not x250) x248 (not x249))
+(or x251 x247 x246 x252)
+(or (not x252) (not x251))
+(or (not x252) (not x247))
+(or (not x252) (not x246))
+(or x253 x254)
+(or x253 (not x252))
+(or (not x254) x252 (not x253))
+(or x255 x251 x247 x246 x256)
+(or (not x256) (not x255))
+(or (not x256) (not x251))
+(or (not x256) (not x247))
+(or (not x256) (not x246))
+(or x257 x258)
+(or x257 (not x256))
+(or (not x258) x256 (not x257))
+(or (not x257) (not x253) (not x249) (not x244) (not x242) (not x238) (not x234) (not x229) (not x227) (not x223) (not x219) (not x214) (not x212) (not x208) (not x204) (not x199) (not x259) (not x260) (not x261) (not x262) (not x263) (not x264) (not x265) (not x266) (not x267) (not x268) (not x269) (not x270) (not x271) (not x272) (not x273) (not x274) x275)
+(or (not x275) x257)
+(or (not x275) x253)
+(or (not x275) x249)
+(or (not x275) x244)
+(or (not x275) x242)
+(or (not x275) x238)
+(or (not x275) x234)
+(or (not x275) x229)
+(or (not x275) x227)
+(or (not x275) x223)
+(or (not x275) x219)
+(or (not x275) x214)
+(or (not x275) x212)
+(or (not x275) x208)
+(or (not x275) x204)
+(or (not x275) x199)
+(or (not x275) x259)
+(or (not x275) x260)
+(or (not x275) x261)
+(or (not x275) x262)
+(or (not x275) x263)
+(or (not x275) x264)
+(or (not x275) x265)
+(or (not x275) x266)
+(or (not x275) x267)
+(or (not x275) x268)
+(or (not x275) x269)
+(or (not x275) x270)
+(or (not x275) x271)
+(or (not x275) x272)
+(or (not x275) x273)
+(or (not x275) x274)
+(or x276 x277)
+(or x276 (not x275))
+(or x276 (not x198))
+(or (not x277) x275 x198 (not x276))
+(or (not x276) (not x277) x278)
+(or (not x278) x276)
+(or (not x278) x277)
+(or x277 x279 x168 x280)
+(or (not x280) (not x277))
+(or (not x280) (not x279))
+(or (not x280) (not x168))
+(or x281 (not x280))
+(or x281 (not x278))
+(or x280 x278 (not x281))
+(or x274 x282)
+(or x274 x283)
+(or (not x282) (not x283) (not x274))
+(or x284 x283 x285)
+(or (not x285) (not x284))
+(or (not x285) (not x283))
+(or x273 x286)
+(or x273 (not x285))
+(or (not x286) x285 (not x273))
+(or x287 x284 x283 x288)
+(or (not x288) (not x287))
+(or (not x288) (not x284))
+(or (not x288) (not x283))
+(or x272 x289)
+(or x272 (not x288))
+(or (not x289) x288 (not x272))
+(or x290 x287 x284 x283 x291)
+(or (not x291) (not x290))
+(or (not x291) (not x287))
+(or (not x291) (not x284))
+(or (not x291) (not x283))
+(or x271 x292)
+(or x271 (not x291))
+(or (not x292) x291 (not x271))
+(or x270 x293)
+(or x270 x294)
+(or (not x293) (not x294) (not x270))
+(or x295 x294 x296)
+(or (not x296) (not x295))
+(or (not x296) (not x294))
+(or x269 x297)
+(or x269 (not x296))
+(or (not x297) x296 (not x269))
+(or x298 x295 x294 x299)
+(or (not x299) (not x298))
+(or (not x299) (not x295))
+(or (not x299) (not x294))
+(or x268 x300)
+(or x268 (not x299))
+(or (not x300) x299 (not x268))
+(or x301 x298 x295 x294 x302)
+(or (not x302) (not x301))
+(or (not x302) (not x298))
+(or (not x302) (not x295))
+(or (not x302) (not x294))
+(or x267 x303)
+(or x267 (not x302))
+(or (not x303) x302 (not x267))
+(or x266 x304)
+(or x266 x305)
+(or (not x304) (not x305) (not x266))
+(or x306 x305 x307)
+(or (not x307) (not x306))
+(or (not x307) (not x305))
+(or x265 x308)
+(or x265 (not x307))
+(or (not x308) x307 (not x265))
+(or x309 x306 x305 x310)
+(or (not x310) (not x309))
+(or (not x310) (not x306))
+(or (not x310) (not x305))
+(or x264 x311)
+(or x264 (not x310))
+(or (not x311) x310 (not x264))
+(or x312 x309 x306 x305 x313)
+(or (not x313) (not x312))
+(or (not x313) (not x309))
+(or (not x313) (not x306))
+(or (not x313) (not x305))
+(or x263 x314)
+(or x263 (not x313))
+(or (not x314) x313 (not x263))
+(or x262 x315)
+(or x262 x316)
+(or (not x315) (not x316) (not x262))
+(or x317 x316 x318)
+(or (not x318) (not x317))
+(or (not x318) (not x316))
+(or x261 x319)
+(or x261 (not x318))
+(or (not x319) x318 (not x261))
+(or x320 x317 x316 x321)
+(or (not x321) (not x320))
+(or (not x321) (not x317))
+(or (not x321) (not x316))
+(or x260 x322)
+(or x260 (not x321))
+(or (not x322) x321 (not x260))
+(or x323 x320 x317 x316 x324)
+(or (not x324) (not x323))
+(or (not x324) (not x320))
+(or (not x324) (not x317))
+(or (not x324) (not x316))
+(or x259 x325)
+(or x259 (not x324))
+(or (not x325) x324 (not x259))
+(or (not x259) (not x260) (not x261) (not x262) (not x263) (not x264) (not x265) (not x266) (not x267) (not x268) (not x269) (not x270) (not x271) (not x272) (not x273) (not x274) x326)
+(or (not x326) x259)
+(or (not x326) x260)
+(or (not x326) x261)
+(or (not x326) x262)
+(or (not x326) x263)
+(or (not x326) x264)
+(or (not x326) x265)
+(or (not x326) x266)
+(or (not x326) x267)
+(or (not x326) x268)
+(or (not x326) x269)
+(or (not x326) x270)
+(or (not x326) x271)
+(or (not x326) x272)
+(or (not x326) x273)
+(or (not x326) x274)
+(or x327 (not x326))
+(or x327 (not x328))
+(or x326 x328 (not x327))
+(or (not x277) (not x329) (not x330) (not x331) (not x327) x332)
+(or (not x332) x277)
+(or (not x332) x329)
+(or (not x332) x330)
+(or (not x332) x331)
+(or (not x332) x327)
+(or x333 (not x166))
+(or x333 x167)
+(or x333 (not x167))
+(or x166 (not x167) x167 (not x333))
+(or x334 (not x335))
+(or x334 x336)
+(or x335 (not x336) (not x334))
+(or (not x334) (not x333) x337)
+(or (not x337) x334)
+(or (not x337) x333)
+(or x338 (not x176))
+(or x338 x177)
+(or x338 (not x177))
+(or x176 (not x177) x177 (not x338))
+(or x339 (not x340))
+(or x339 x341)
+(or x340 (not x341) (not x339))
+(or (not x339) (not x338) x342)
+(or (not x342) x339)
+(or (not x342) x338)
+(or x343 (not x183))
+(or x343 x184)
+(or x343 (not x184))
+(or x183 (not x184) x184 (not x343))
+(or x344 (not x345))
+(or x344 x346)
+(or x345 (not x346) (not x344))
+(or (not x344) (not x343) x347)
+(or (not x347) x344)
+(or (not x347) x343)
+(or x348 (not x190))
+(or x348 x191)
+(or x348 (not x191))
+(or x190 (not x191) x191 (not x348))
+(or x349 (not x350))
+(or x349 x351)
+(or x350 (not x351) (not x349))
+(or (not x349) (not x348) x352)
+(or (not x352) x349)
+(or (not x352) x348)
+(or (not x194) (not x195) (not x196) (not x197) x353)
+(or (not x353) x194)
+(or (not x353) x195)
+(or (not x353) x196)
+(or (not x353) x197)
+(or x173 (not x166))
+(or x173 x167)
+(or x166 (not x167) (not x173))
+(or x155 (not x176))
+(or x155 x177)
+(or x176 (not x177) (not x155))
+(or x158 (not x183))
+(or x158 x184)
+(or x183 (not x184) (not x158))
+(or x161 (not x190))
+(or x161 x191)
+(or x190 (not x191) (not x161))
+(or (not x161) (not x158) (not x155) (not x173) x354)
+(or (not x354) x161)
+(or (not x354) x158)
+(or (not x354) x155)
+(or (not x354) x173)
+(or x330 (not x354))
+(or x330 (not x353))
+(or x354 x353 (not x330))
+(or (not x282) (not x283) x355)
+(or (not x355) x282)
+(or (not x355) x283)
+(or x356 (not x284))
+(or x356 (not x283))
+(or x284 x283 (not x356))
+(or (not x286) (not x356) x357)
+(or (not x357) x286)
+(or (not x357) x356)
+(or x358 (not x287))
+(or x358 (not x284))
+(or x358 (not x283))
+(or x287 x284 x283 (not x358))
+(or (not x289) (not x358) x359)
+(or (not x359) x289)
+(or (not x359) x358)
+(or x360 (not x290))
+(or x360 (not x287))
+(or x360 (not x284))
+(or x360 (not x283))
+(or x290 x287 x284 x283 (not x360))
+(or (not x292) (not x360) x361)
+(or (not x361) x292)
+(or (not x361) x360)
+(or (not x293) (not x294) x362)
+(or (not x362) x293)
+(or (not x362) x294)
+(or x363 (not x295))
+(or x363 (not x294))
+(or x295 x294 (not x363))
+(or (not x297) (not x363) x364)
+(or (not x364) x297)
+(or (not x364) x363)
+(or x365 (not x298))
+(or x365 (not x295))
+(or x365 (not x294))
+(or x298 x295 x294 (not x365))
+(or (not x300) (not x365) x366)
+(or (not x366) x300)
+(or (not x366) x365)
+(or x367 (not x301))
+(or x367 (not x298))
+(or x367 (not x295))
+(or x367 (not x294))
+(or x301 x298 x295 x294 (not x367))
+(or (not x303) (not x367) x368)
+(or (not x368) x303)
+(or (not x368) x367)
+(or (not x304) (not x305) x369)
+(or (not x369) x304)
+(or (not x369) x305)
+(or x370 (not x306))
+(or x370 (not x305))
+(or x306 x305 (not x370))
+(or (not x308) (not x370) x371)
+(or (not x371) x308)
+(or (not x371) x370)
+(or x372 (not x309))
+(or x372 (not x306))
+(or x372 (not x305))
+(or x309 x306 x305 (not x372))
+(or (not x311) (not x372) x373)
+(or (not x373) x311)
+(or (not x373) x372)
+(or x374 (not x312))
+(or x374 (not x309))
+(or x374 (not x306))
+(or x374 (not x305))
+(or x312 x309 x306 x305 (not x374))
+(or (not x314) (not x374) x375)
+(or (not x375) x314)
+(or (not x375) x374)
+(or (not x315) (not x316) x376)
+(or (not x376) x315)
+(or (not x376) x316)
+(or x377 (not x317))
+(or x377 (not x316))
+(or x317 x316 (not x377))
+(or (not x319) (not x377) x378)
+(or (not x378) x319)
+(or (not x378) x377)
+(or x379 (not x320))
+(or x379 (not x317))
+(or x379 (not x316))
+(or x320 x317 x316 (not x379))
+(or (not x322) (not x379) x380)
+(or (not x380) x322)
+(or (not x380) x379)
+(or x381 (not x323))
+(or x381 (not x320))
+(or x381 (not x317))
+(or x381 (not x316))
+(or x323 x320 x317 x316 (not x381))
+(or (not x325) (not x381) x382)
+(or (not x382) x325)
+(or (not x382) x381)
+(or (not x200) (not x201) x383)
+(or (not x383) x200)
+(or (not x383) x201)
+(or x384 (not x202))
+(or x384 (not x201))
+(or x202 x201 (not x384))
+(or (not x205) (not x384) x385)
+(or (not x385) x205)
+(or (not x385) x384)
+(or x386 (not x206))
+(or x386 (not x202))
+(or x386 (not x201))
+(or x206 x202 x201 (not x386))
+(or (not x209) (not x386) x387)
+(or (not x387) x209)
+(or (not x387) x386)
+(or x388 (not x210))
+(or x388 (not x206))
+(or x388 (not x202))
+(or x388 (not x201))
+(or x210 x206 x202 x201 (not x388))
+(or (not x213) (not x388) x389)
+(or (not x389) x213)
+(or (not x389) x388)
+(or (not x215) (not x216) x390)
+(or (not x390) x215)
+(or (not x390) x216)
+(or x391 (not x217))
+(or x391 (not x216))
+(or x217 x216 (not x391))
+(or (not x220) (not x391) x392)
+(or (not x392) x220)
+(or (not x392) x391)
+(or x393 (not x221))
+(or x393 (not x217))
+(or x393 (not x216))
+(or x221 x217 x216 (not x393))
+(or (not x224) (not x393) x394)
+(or (not x394) x224)
+(or (not x394) x393)
+(or x395 (not x225))
+(or x395 (not x221))
+(or x395 (not x217))
+(or x395 (not x216))
+(or x225 x221 x217 x216 (not x395))
+(or (not x228) (not x395) x396)
+(or (not x396) x228)
+(or (not x396) x395)
+(or (not x230) (not x231) x397)
+(or (not x397) x230)
+(or (not x397) x231)
+(or x398 (not x232))
+(or x398 (not x231))
+(or x232 x231 (not x398))
+(or (not x235) (not x398) x399)
+(or (not x399) x235)
+(or (not x399) x398)
+(or x400 (not x236))
+(or x400 (not x232))
+(or x400 (not x231))
+(or x236 x232 x231 (not x400))
+(or (not x239) (not x400) x401)
+(or (not x401) x239)
+(or (not x401) x400)
+(or x402 (not x240))
+(or x402 (not x236))
+(or x402 (not x232))
+(or x402 (not x231))
+(or x240 x236 x232 x231 (not x402))
+(or (not x243) (not x402) x403)
+(or (not x403) x243)
+(or (not x403) x402)
+(or (not x245) (not x246) x404)
+(or (not x404) x245)
+(or (not x404) x246)
+(or x405 (not x247))
+(or x405 (not x246))
+(or x247 x246 (not x405))
+(or (not x250) (not x405) x406)
+(or (not x406) x250)
+(or (not x406) x405)
+(or x407 (not x251))
+(or x407 (not x247))
+(or x407 (not x246))
+(or x251 x247 x246 (not x407))
+(or (not x254) (not x407) x408)
+(or (not x408) x254)
+(or (not x408) x407)
+(or x409 (not x255))
+(or x409 (not x251))
+(or x409 (not x247))
+(or x409 (not x246))
+(or x255 x251 x247 x246 (not x409))
+(or (not x258) (not x409) x410)
+(or (not x410) x258)
+(or (not x410) x409)
+(or x331 (not x410))
+(or x331 (not x408))
+(or x331 (not x406))
+(or x331 (not x404))
+(or x331 (not x403))
+(or x331 (not x401))
+(or x331 (not x399))
+(or x331 (not x397))
+(or x331 (not x396))
+(or x331 (not x394))
+(or x331 (not x392))
+(or x331 (not x390))
+(or x331 (not x389))
+(or x331 (not x387))
+(or x331 (not x385))
+(or x331 (not x383))
+(or x410 x408 x406 x404 x403 x401 x399 x397 x396 x394 x392 x390 x389 x387 x385 x383 (not x331))
+(or x329 (not x410))
+(or x329 (not x408))
+(or x329 (not x406))
+(or x329 (not x404))
+(or x329 (not x403))
+(or x329 (not x401))
+(or x329 (not x399))
+(or x329 (not x397))
+(or x329 (not x396))
+(or x329 (not x394))
+(or x329 (not x392))
+(or x329 (not x390))
+(or x329 (not x389))
+(or x329 (not x387))
+(or x329 (not x385))
+(or x329 (not x383))
+(or x329 (not x382))
+(or x329 (not x380))
+(or x329 (not x378))
+(or x329 (not x376))
+(or x329 (not x375))
+(or x329 (not x373))
+(or x329 (not x371))
+(or x329 (not x369))
+(or x329 (not x368))
+(or x329 (not x366))
+(or x329 (not x364))
+(or x329 (not x362))
+(or x329 (not x361))
+(or x329 (not x359))
+(or x329 (not x357))
+(or x329 (not x355))
+(or x410 x408 x406 x404 x403 x401 x399 x397 x396 x394 x392 x390 x389 x387 x385 x383 x382 x380 x378 x376 x375 x373 x371 x369 x368 x366 x364 x362 x361 x359 x357 x355 (not x329))
+(or (not x277) (not x277) (not x329) (not x330) x411)
+(or (not x411) x277)
+(or (not x411) x277)
+(or (not x411) x329)
+(or (not x411) x330)
+(or x412 (not x168))
+(or x412 (not x413))
+(or x168 x413 (not x412))
+(or x166 (not x167) x335)
+(or (not x335) (not x166))
+(or (not x335) x167)
+(or x176 (not x177) x340)
+(or (not x340) (not x176))
+(or (not x340) x177)
+(or x183 (not x184) x345)
+(or (not x345) (not x183))
+(or (not x345) x184)
+(or x190 (not x191) x350)
+(or (not x350) (not x190))
+(or (not x350) x191)
+(or x169 (not x350))
+(or x169 (not x345))
+(or x169 (not x340))
+(or x169 (not x335))
+(or x350 x345 x340 x335 (not x169))
+(or (not x168) (not x169) x414)
+(or (not x414) x168)
+(or (not x414) x169)
+(or x415 (not x279))
+(or x415 (not x414))
+(or x279 x414 (not x415))
+(or (not x8) (not x141))
+(or (not x8) x140)
+(or (not x8) (not x139))
+(or (not x8) x138)
+(or (not x8) (not x137))
+(or (not x416) (not x141))
+(or (not x416) x140)
+(or (not x416) (not x139))
+(or (not x416) (not x138))
+(or (not x416) x137)
+(or x141 (not x140) x139 x138 x137 x152)
+(or (not x152) (not x141))
+(or (not x152) x140)
+(or (not x152) (not x139))
+(or (not x152) (not x138))
+(or (not x152) (not x137))
+(or x141 x140 (not x139) (not x138) (not x137) x145)
+(or (not x145) (not x141))
+(or (not x145) (not x140))
+(or (not x145) x139)
+(or (not x145) x138)
+(or (not x145) x137)
+(or x141 x140 (not x139) (not x138) x137 x144)
+(or (not x144) (not x141))
+(or (not x144) (not x140))
+(or (not x144) x139)
+(or (not x144) x138)
+(or (not x144) (not x137))
+(or x141 x140 (not x139) x138 (not x137) x136)
+(or (not x136) (not x141))
+(or (not x136) (not x140))
+(or (not x136) x139)
+(or (not x136) (not x138))
+(or (not x136) x137)
+(or x141 x140 (not x139) x138 x137 x135)
+(or (not x135) (not x141))
+(or (not x135) (not x140))
+(or (not x135) x139)
+(or (not x135) (not x138))
+(or (not x135) (not x137))
+(or x141 x140 x139 (not x138) (not x137) x134)
+(or (not x134) (not x141))
+(or (not x134) (not x140))
+(or (not x134) (not x139))
+(or (not x134) x138)
+(or (not x134) x137)
+(or x141 x140 x139 (not x138) x137 x133)
+(or (not x133) (not x141))
+(or (not x133) (not x140))
+(or (not x133) (not x139))
+(or (not x133) x138)
+(or (not x133) (not x137))
+(or x141 x140 x139 x138 (not x137) x132)
+(or (not x132) (not x141))
+(or (not x132) (not x140))
+(or (not x132) (not x139))
+(or (not x132) (not x138))
+(or (not x132) x137)
+(or (not x417) (not x141))
+(or (not x417) (not x140))
+(or (not x417) (not x139))
+(or (not x417) (not x138))
+(or (not x417) (not x137))
+(or x418 (not x417))
+(or x418 (not x132))
+(or x418 (not x133))
+(or x418 (not x134))
+(or x418 (not x135))
+(or x418 (not x136))
+(or x418 (not x144))
+(or x418 (not x145))
+(or x418 (not x152))
+(or x418 (not x416))
+(or x417 x132 x133 x134 x135 x136 x144 x145 x152 x416 (not x418))
+(or (not x419) (not x420) (not x421) (not x422) (not x423) (not x424) (not x425) (not x426) (not x427) (not x428) x429)
+(or (not x429) x419)
+(or (not x429) x420)
+(or (not x429) x421)
+(or (not x429) x422)
+(or (not x429) x423)
+(or (not x429) x424)
+(or (not x429) x425)
+(or (not x429) x426)
+(or (not x429) x427)
+(or (not x429) x428)
+(or x424 (not x430))
+(or x424 (not x431))
+(or x424 (not x432))
+(or x424 (not x433))
+(or x424 (not x434))
+(or x424 (not x439))
+(or x424 (not x438))
+(or x424 x437)
+(or x424 x436)
+(or x424 (not x435))
+(or x430 x431 x432 x433 x434 x439 x438 (not x437) (not x436) x435 (not x424))
+(or (not x419) (not x420) (not x421) (not x422) (not x423) (not x424) (not x428) x440)
+(or (not x440) x419)
+(or (not x440) x420)
+(or (not x440) x421)
+(or (not x440) x422)
+(or (not x440) x423)
+(or (not x440) x424)
+(or (not x440) x428)
+(or x420 (not x430))
+(or x420 (not x439))
+(or x420 (not x438))
+(or x420 (not x437))
+(or x420 x436)
+(or x420 (not x435))
+(or x430 x439 x438 x437 (not x436) x435 (not x420))
+(or (not x419) (not x420) (not x425) (not x426) (not x427) (not x428) x441)
+(or (not x441) x419)
+(or (not x441) x420)
+(or (not x441) x425)
+(or (not x441) x426)
+(or (not x441) x427)
+(or (not x441) x428)
+(or x426 (not x430))
+(or x426 (not x431))
+(or x426 (not x432))
+(or x426 (not x433))
+(or x426 (not x434))
+(or x426 (not x442))
+(or x426 (not x443))
+(or x426 (not x439))
+(or x426 x438)
+(or x426 (not x437))
+(or x426 (not x436))
+(or x426 (not x435))
+(or x430 x431 x432 x433 x434 x442 x443 x439 (not x438) x437 x436 x435 (not x426))
+(or x422 (not x430))
+(or x422 (not x431))
+(or x422 (not x432))
+(or x422 (not x439))
+(or x422 (not x438))
+(or x422 x437)
+(or x422 (not x436))
+(or x422 (not x435))
+(or x430 x431 x432 x439 x438 (not x437) x436 x435 (not x422))
+(or (not x421) (not x422) (not x425) (not x426) (not x428) x444)
+(or (not x444) x421)
+(or (not x444) x422)
+(or (not x444) x425)
+(or (not x444) x426)
+(or (not x444) x428)
+(or x445 x446)
+(or x445 (not x447))
+(or (not x446) x447 (not x445))
+(or x439 (not x438) x437 x436 (not x435) (not x448) (not x445) x449)
+(or (not x449) (not x439))
+(or (not x449) x438)
+(or (not x449) (not x437))
+(or (not x449) (not x436))
+(or (not x449) x435)
+(or (not x449) x448)
+(or (not x449) x445)
+(or x428 (not x430))
+(or x428 (not x431))
+(or x428 (not x432))
+(or x428 (not x433))
+(or x428 (not x434))
+(or x428 (not x442))
+(or x428 (not x443))
+(or x428 (not x450))
+(or x428 (not x449))
+(or x430 x431 x432 x433 x434 x442 x443 x450 x449 (not x428))
+(or (not x446) x447 x451)
+(or (not x451) x446)
+(or (not x451) (not x447))
+(or x427 (not x430))
+(or x427 (not x431))
+(or x427 (not x432))
+(or x427 (not x433))
+(or x427 (not x434))
+(or x427 (not x442))
+(or x427 (not x443))
+(or x427 (not x450))
+(or x427 (not x439))
+(or x427 x438)
+(or x427 (not x437))
+(or x427 (not x436))
+(or x427 x435)
+(or x427 x448)
+(or x427 (not x451))
+(or x430 x431 x432 x433 x434 x442 x443 x450 x439 (not x438) x437 x436 (not x435) (not x448) x451 (not x427))
+(or x425 (not x430))
+(or x425 (not x431))
+(or x425 (not x432))
+(or x425 (not x433))
+(or x425 (not x434))
+(or x425 (not x442))
+(or x425 (not x439))
+(or x425 (not x438))
+(or x425 x437)
+(or x425 x436)
+(or x425 x435)
+(or x430 x431 x432 x433 x434 x442 x439 x438 (not x437) (not x436) (not x435) (not x425))
+(or x423 (not x430))
+(or x423 (not x431))
+(or x423 (not x432))
+(or x423 (not x433))
+(or x423 (not x439))
+(or x423 (not x438))
+(or x423 x437)
+(or x423 (not x436))
+(or x423 x435)
+(or x430 x431 x432 x433 x439 x438 (not x437) x436 (not x435) (not x423))
+(or x421 (not x430))
+(or x421 (not x431))
+(or x421 (not x439))
+(or x421 (not x438))
+(or x421 (not x437))
+(or x421 x436)
+(or x421 x435)
+(or x430 x431 x439 x438 x437 (not x436) (not x435) (not x421))
+(or x419 (not x439))
+(or x419 (not x438))
+(or x419 (not x437))
+(or x419 (not x436))
+(or x419 x435)
+(or x439 x438 x437 x436 (not x435) (not x419))
+(or (not x419) (not x421) (not x423) (not x425) (not x427) (not x428) x452)
+(or (not x452) x419)
+(or (not x452) x421)
+(or (not x452) x423)
+(or (not x452) x425)
+(or (not x452) x427)
+(or (not x452) x428)
+(or x453 (not x454) x455)
+(or (not x455) (not x453))
+(or (not x455) x454)
+(or (not x456) (not x457) (not x458) x459)
+(or (not x459) x456)
+(or (not x459) x457)
+(or (not x459) x458)
+(or x460 (not x459))
+(or x460 (not x455))
+(or x459 x455 (not x460))
+(or x453 (not x457) x461)
+(or (not x461) (not x453))
+(or (not x461) x457)
+(or (not x456) (not x462) (not x458) x463)
+(or (not x463) x456)
+(or (not x463) x462)
+(or (not x463) x458)
+(or x464 (not x463))
+(or x464 (not x461))
+(or x463 x461 (not x464))
+(or x453 (not x462) x465)
+(or (not x465) (not x453))
+(or (not x465) x462)
+(or (not x456) (not x466) (not x458) x467)
+(or (not x467) x456)
+(or (not x467) x466)
+(or (not x467) x458)
+(or x468 (not x467))
+(or x468 (not x465))
+(or x467 x465 (not x468))
+(or x453 (not x466) x469)
+(or (not x469) (not x453))
+(or (not x469) x466)
+(or (not x456) (not x458) x470)
+(or (not x470) x456)
+(or (not x470) x458)
+(or x471 (not x470))
+(or x471 (not x469))
+(or x470 x469 (not x471))
+(or x472 (not x456))
+(or x472 (not x453))
+(or x456 x453 (not x472))
+(or (not x473) (not x474) (not x475) (not x476) (not x477) x478)
+(or (not x478) x473)
+(or (not x478) x474)
+(or (not x478) x475)
+(or (not x478) x476)
+(or (not x478) x477)
+(or (not x479) (not x475) (not x474) (not x480) (not x481) x482)
+(or (not x482) x479)
+(or (not x482) x475)
+(or (not x482) x474)
+(or (not x482) x480)
+(or (not x482) x481)
+(or (not x483) (not x475) (not x474) (not x480) (not x484) x485)
+(or (not x485) x483)
+(or (not x485) x475)
+(or (not x485) x474)
+(or (not x485) x480)
+(or (not x485) x484)
+(or (not x486) (not x487) (not x474) (not x488) (not x489) (not x480) (not x458) (not x490) x491)
+(or (not x491) x486)
+(or (not x491) x487)
+(or (not x491) x474)
+(or (not x491) x488)
+(or (not x491) x489)
+(or (not x491) x480)
+(or (not x491) x458)
+(or (not x491) x490)
+(or x492 (not x491))
+(or x492 (not x485))
+(or x492 (not x482))
+(or x492 (not x478))
+(or x491 x485 x482 x478 (not x492))
+(or (not x483) (not x474) (not x475) (not x476) (not x477) x493)
+(or (not x493) x483)
+(or (not x493) x474)
+(or (not x493) x475)
+(or (not x493) x476)
+(or (not x493) x477)
+(or (not x494) (not x475) (not x474) (not x480) (not x481) x495)
+(or (not x495) x494)
+(or (not x495) x475)
+(or (not x495) x474)
+(or (not x495) x480)
+(or (not x495) x481)
+(or (not x496) (not x475) (not x474) (not x480) (not x484) x497)
+(or (not x497) x496)
+(or (not x497) x475)
+(or (not x497) x474)
+(or (not x497) x480)
+(or (not x497) x484)
+(or (not x498) (not x499) (not x474) (not x488) (not x489) (not x480) (not x458) (not x490) x500)
+(or (not x500) x498)
+(or (not x500) x499)
+(or (not x500) x474)
+(or (not x500) x488)
+(or (not x500) x489)
+(or (not x500) x480)
+(or (not x500) x458)
+(or (not x500) x490)
+(or x501 (not x500))
+(or x501 (not x497))
+(or x501 (not x495))
+(or x501 (not x493))
+(or x500 x497 x495 x493 (not x501))
+(or (not x496) (not x474) (not x475) (not x476) (not x477) x502)
+(or (not x502) x496)
+(or (not x502) x474)
+(or (not x502) x475)
+(or (not x502) x476)
+(or (not x502) x477)
+(or (not x503) (not x475) (not x474) (not x480) (not x481) x504)
+(or (not x504) x503)
+(or (not x504) x475)
+(or (not x504) x474)
+(or (not x504) x480)
+(or (not x504) x481)
+(or (not x505) (not x475) (not x474) (not x480) (not x484) x506)
+(or (not x506) x505)
+(or (not x506) x475)
+(or (not x506) x474)
+(or (not x506) x480)
+(or (not x506) x484)
+(or (not x505) (not x507) (not x474) (not x488) (not x489) (not x480) (not x458) (not x490) x508)
+(or (not x508) x505)
+(or (not x508) x507)
+(or (not x508) x474)
+(or (not x508) x488)
+(or (not x508) x489)
+(or (not x508) x480)
+(or (not x508) x458)
+(or (not x508) x490)
+(or x509 (not x508))
+(or x509 (not x506))
+(or x509 (not x504))
+(or x509 (not x502))
+(or x508 x506 x504 x502 (not x509))
+(or (not x479) (not x474) (not x475) (not x476) (not x477) x510)
+(or (not x510) x479)
+(or (not x510) x474)
+(or (not x510) x475)
+(or (not x510) x476)
+(or (not x510) x477)
+(or (not x511) (not x475) (not x474) (not x480) (not x481) x512)
+(or (not x512) x511)
+(or (not x512) x475)
+(or (not x512) x474)
+(or (not x512) x480)
+(or (not x512) x481)
+(or (not x494) (not x475) (not x474) (not x480) (not x484) x513)
+(or (not x513) x494)
+(or (not x513) x475)
+(or (not x513) x474)
+(or (not x513) x480)
+(or (not x513) x484)
+(or (not x514) (not x515) (not x474) (not x488) (not x489) (not x480) (not x458) (not x490) x516)
+(or (not x516) x514)
+(or (not x516) x515)
+(or (not x516) x474)
+(or (not x516) x488)
+(or (not x516) x489)
+(or (not x516) x480)
+(or (not x516) x458)
+(or (not x516) x490)
+(or x517 (not x516))
+(or x517 (not x513))
+(or x517 (not x512))
+(or x517 (not x510))
+(or x516 x513 x512 x510 (not x517))
+(or (not x494) (not x474) (not x475) (not x476) (not x477) x518)
+(or (not x518) x494)
+(or (not x518) x474)
+(or (not x518) x475)
+(or (not x518) x476)
+(or (not x518) x477)
+(or (not x519) (not x475) (not x474) (not x480) (not x481) x520)
+(or (not x520) x519)
+(or (not x520) x475)
+(or (not x520) x474)
+(or (not x520) x480)
+(or (not x520) x481)
+(or (not x503) (not x475) (not x474) (not x480) (not x484) x521)
+(or (not x521) x503)
+(or (not x521) x475)
+(or (not x521) x474)
+(or (not x521) x480)
+(or (not x521) x484)
+(or (not x522) (not x523) (not x474) (not x488) (not x489) (not x480) (not x458) (not x490) x524)
+(or (not x524) x522)
+(or (not x524) x523)
+(or (not x524) x474)
+(or (not x524) x488)
+(or (not x524) x489)
+(or (not x524) x480)
+(or (not x524) x458)
+(or (not x524) x490)
+(or x525 (not x524))
+(or x525 (not x521))
+(or x525 (not x520))
+(or x525 (not x518))
+(or x524 x521 x520 x518 (not x525))
+(or (not x503) (not x474) (not x475) (not x476) (not x477) x526)
+(or (not x526) x503)
+(or (not x526) x474)
+(or (not x526) x475)
+(or (not x526) x476)
+(or (not x526) x477)
+(or (not x527) (not x475) (not x474) (not x480) (not x481) x528)
+(or (not x528) x527)
+(or (not x528) x475)
+(or (not x528) x474)
+(or (not x528) x480)
+(or (not x528) x481)
+(or (not x529) (not x475) (not x474) (not x480) (not x484) x530)
+(or (not x530) x529)
+(or (not x530) x475)
+(or (not x530) x474)
+(or (not x530) x480)
+(or (not x530) x484)
+(or (not x529) (not x531) (not x474) (not x488) (not x489) (not x480) (not x458) (not x490) x532)
+(or (not x532) x529)
+(or (not x532) x531)
+(or (not x532) x474)
+(or (not x532) x488)
+(or (not x532) x489)
+(or (not x532) x480)
+(or (not x532) x458)
+(or (not x532) x490)
+(or x533 (not x532))
+(or x533 (not x530))
+(or x533 (not x528))
+(or x533 (not x526))
+(or x532 x530 x528 x526 (not x533))
+(or (not x511) (not x474) (not x475) (not x476) (not x477) x534)
+(or (not x534) x511)
+(or (not x534) x474)
+(or (not x534) x475)
+(or (not x534) x476)
+(or (not x534) x477)
+(or (not x535) (not x475) (not x474) (not x480) (not x481) x536)
+(or (not x536) x535)
+(or (not x536) x475)
+(or (not x536) x474)
+(or (not x536) x480)
+(or (not x536) x481)
+(or (not x519) (not x475) (not x474) (not x480) (not x484) x537)
+(or (not x537) x519)
+(or (not x537) x475)
+(or (not x537) x474)
+(or (not x537) x480)
+(or (not x537) x484)
+(or (not x538) (not x539) (not x474) (not x488) (not x489) (not x480) (not x458) (not x490) x540)
+(or (not x540) x538)
+(or (not x540) x539)
+(or (not x540) x474)
+(or (not x540) x488)
+(or (not x540) x489)
+(or (not x540) x480)
+(or (not x540) x458)
+(or (not x540) x490)
+(or x541 (not x540))
+(or x541 (not x537))
+(or x541 (not x536))
+(or x541 (not x534))
+(or x540 x537 x536 x534 (not x541))
+(or (not x519) (not x474) (not x475) (not x476) (not x477) x542)
+(or (not x542) x519)
+(or (not x542) x474)
+(or (not x542) x475)
+(or (not x542) x476)
+(or (not x542) x477)
+(or (not x543) (not x475) (not x474) (not x480) (not x481) x544)
+(or (not x544) x543)
+(or (not x544) x475)
+(or (not x544) x474)
+(or (not x544) x480)
+(or (not x544) x481)
+(or (not x527) (not x475) (not x474) (not x480) (not x484) x545)
+(or (not x545) x527)
+(or (not x545) x475)
+(or (not x545) x474)
+(or (not x545) x480)
+(or (not x545) x484)
+(or (not x546) (not x547) (not x474) (not x488) (not x489) (not x480) (not x458) (not x490) x548)
+(or (not x548) x546)
+(or (not x548) x547)
+(or (not x548) x474)
+(or (not x548) x488)
+(or (not x548) x489)
+(or (not x548) x480)
+(or (not x548) x458)
+(or (not x548) x490)
+(or x549 (not x548))
+(or x549 (not x545))
+(or x549 (not x544))
+(or x549 (not x542))
+(or x548 x545 x544 x542 (not x549))
+(or (not x527) (not x474) (not x475) (not x476) (not x477) x550)
+(or (not x550) x527)
+(or (not x550) x474)
+(or (not x550) x475)
+(or (not x550) x476)
+(or (not x550) x477)
+(or (not x551) (not x475) (not x474) (not x480) (not x481) x552)
+(or (not x552) x551)
+(or (not x552) x475)
+(or (not x552) x474)
+(or (not x552) x480)
+(or (not x552) x481)
+(or (not x553) (not x475) (not x474) (not x480) (not x484) x554)
+(or (not x554) x553)
+(or (not x554) x475)
+(or (not x554) x474)
+(or (not x554) x480)
+(or (not x554) x484)
+(or (not x553) (not x555) (not x474) (not x488) (not x489) (not x480) (not x458) (not x490) x556)
+(or (not x556) x553)
+(or (not x556) x555)
+(or (not x556) x474)
+(or (not x556) x488)
+(or (not x556) x489)
+(or (not x556) x480)
+(or (not x556) x458)
+(or (not x556) x490)
+(or x557 (not x556))
+(or x557 (not x554))
+(or x557 (not x552))
+(or x557 (not x550))
+(or x556 x554 x552 x550 (not x557))
+(or (not x535) (not x474) (not x475) (not x476) (not x477) x558)
+(or (not x558) x535)
+(or (not x558) x474)
+(or (not x558) x475)
+(or (not x558) x476)
+(or (not x558) x477)
+(or (not x473) (not x475) (not x474) (not x480) (not x481) x559)
+(or (not x559) x473)
+(or (not x559) x475)
+(or (not x559) x474)
+(or (not x559) x480)
+(or (not x559) x481)
+(or (not x543) (not x475) (not x474) (not x480) (not x484) x560)
+(or (not x560) x543)
+(or (not x560) x475)
+(or (not x560) x474)
+(or (not x560) x480)
+(or (not x560) x484)
+(or (not x561) (not x562) (not x474) (not x488) (not x489) (not x480) (not x458) (not x490) x563)
+(or (not x563) x561)
+(or (not x563) x562)
+(or (not x563) x474)
+(or (not x563) x488)
+(or (not x563) x489)
+(or (not x563) x480)
+(or (not x563) x458)
+(or (not x563) x490)
+(or x564 (not x563))
+(or x564 (not x560))
+(or x564 (not x559))
+(or x564 (not x558))
+(or x563 x560 x559 x558 (not x564))
+(or (not x543) (not x474) (not x475) (not x476) (not x477) x565)
+(or (not x565) x543)
+(or (not x565) x474)
+(or (not x565) x475)
+(or (not x565) x476)
+(or (not x565) x477)
+(or (not x483) (not x475) (not x474) (not x480) (not x481) x566)
+(or (not x566) x483)
+(or (not x566) x475)
+(or (not x566) x474)
+(or (not x566) x480)
+(or (not x566) x481)
+(or (not x551) (not x475) (not x474) (not x480) (not x484) x567)
+(or (not x567) x551)
+(or (not x567) x475)
+(or (not x567) x474)
+(or (not x567) x480)
+(or (not x567) x484)
+(or (not x568) (not x569) (not x474) (not x488) (not x489) (not x480) (not x458) (not x490) x570)
+(or (not x570) x568)
+(or (not x570) x569)
+(or (not x570) x474)
+(or (not x570) x488)
+(or (not x570) x489)
+(or (not x570) x480)
+(or (not x570) x458)
+(or (not x570) x490)
+(or x571 (not x570))
+(or x571 (not x567))
+(or x571 (not x566))
+(or x571 (not x565))
+(or x570 x567 x566 x565 (not x571))
+(or (not x551) (not x474) (not x475) (not x476) (not x477) x572)
+(or (not x572) x551)
+(or (not x572) x474)
+(or (not x572) x475)
+(or (not x572) x476)
+(or (not x572) x477)
+(or (not x496) (not x475) (not x474) (not x480) (not x481) x573)
+(or (not x573) x496)
+(or (not x573) x475)
+(or (not x573) x474)
+(or (not x573) x480)
+(or (not x573) x481)
+(or (not x574) (not x475) (not x474) (not x480) (not x484) x575)
+(or (not x575) x574)
+(or (not x575) x475)
+(or (not x575) x474)
+(or (not x575) x480)
+(or (not x575) x484)
+(or (not x574) (not x576) (not x474) (not x488) (not x489) (not x480) (not x458) (not x490) x577)
+(or (not x577) x574)
+(or (not x577) x576)
+(or (not x577) x474)
+(or (not x577) x488)
+(or (not x577) x489)
+(or (not x577) x480)
+(or (not x577) x458)
+(or (not x577) x490)
+(or x578 (not x577))
+(or x578 (not x575))
+(or x578 (not x573))
+(or x578 (not x572))
+(or x577 x575 x573 x572 (not x578))
+(or x579 (not x580))
+(or x579 (not x585))
+(or x580 x585 (not x579))
+(or x586 (not x587))
+(or x586 (not x592))
+(or x587 x592 (not x586))
+(or x593 (not x594))
+(or x593 (not x599))
+(or x594 x599 (not x593))
+(or x600 (not x601))
+(or x600 (not x606))
+(or x601 x606 (not x600))
+(or (not x505) (not x474) (not x475) (not x476) (not x477) x607)
+(or (not x607) x505)
+(or (not x607) x474)
+(or (not x607) x475)
+(or (not x607) x476)
+(or (not x607) x477)
+(or (not x529) (not x475) (not x474) (not x480) (not x481) x608)
+(or (not x608) x529)
+(or (not x608) x475)
+(or (not x608) x474)
+(or (not x608) x480)
+(or (not x608) x481)
+(or (not x479) (not x475) (not x474) (not x480) (not x484) x609)
+(or (not x609) x479)
+(or (not x609) x475)
+(or (not x609) x474)
+(or (not x609) x480)
+(or (not x609) x484)
+(or (not x610) (not x611) (not x474) (not x488) (not x489) (not x480) (not x458) (not x490) x612)
+(or (not x612) x610)
+(or (not x612) x611)
+(or (not x612) x474)
+(or (not x612) x488)
+(or (not x612) x489)
+(or (not x612) x480)
+(or (not x612) x458)
+(or (not x612) x490)
+(or x613 (not x612))
+(or x613 (not x609))
+(or x613 (not x608))
+(or x613 (not x607))
+(or x612 x609 x608 x607 (not x613))
+(or x614 (not x615))
+(or x614 (not x620))
+(or x615 x620 (not x614))
+(or x621 (not x622))
+(or x621 (not x627))
+(or x622 x627 (not x621))
+(or x628 (not x629))
+(or x628 (not x634))
+(or x629 x634 (not x628))
+(or x635 (not x636))
+(or x635 (not x641))
+(or x636 x641 (not x635))
+(or (not x529) (not x474) (not x475) (not x476) (not x477) x642)
+(or (not x642) x529)
+(or (not x642) x474)
+(or (not x642) x475)
+(or (not x642) x476)
+(or (not x642) x477)
+(or (not x553) (not x475) (not x474) (not x480) (not x481) x643)
+(or (not x643) x553)
+(or (not x643) x475)
+(or (not x643) x474)
+(or (not x643) x480)
+(or (not x643) x481)
+(or (not x511) (not x475) (not x474) (not x480) (not x484) x644)
+(or (not x644) x511)
+(or (not x644) x475)
+(or (not x644) x474)
+(or (not x644) x480)
+(or (not x644) x484)
+(or (not x645) (not x646) (not x474) (not x488) (not x489) (not x480) (not x458) (not x490) x647)
+(or (not x647) x645)
+(or (not x647) x646)
+(or (not x647) x474)
+(or (not x647) x488)
+(or (not x647) x489)
+(or (not x647) x480)
+(or (not x647) x458)
+(or (not x647) x490)
+(or x648 (not x647))
+(or x648 (not x644))
+(or x648 (not x643))
+(or x648 (not x642))
+(or x647 x644 x643 x642 (not x648))
+(or x649 (not x650))
+(or x649 (not x655))
+(or x650 x655 (not x649))
+(or x656 (not x657))
+(or x656 (not x662))
+(or x657 x662 (not x656))
+(or x663 (not x664))
+(or x663 (not x669))
+(or x664 x669 (not x663))
+(or x670 (not x671))
+(or x670 (not x676))
+(or x671 x676 (not x670))
+(or (not x553) (not x474) (not x475) (not x476) (not x477) x677)
+(or (not x677) x553)
+(or (not x677) x474)
+(or (not x677) x475)
+(or (not x677) x476)
+(or (not x677) x477)
+(or (not x574) (not x475) (not x474) (not x480) (not x481) x678)
+(or (not x678) x574)
+(or (not x678) x475)
+(or (not x678) x474)
+(or (not x678) x480)
+(or (not x678) x481)
+(or (not x535) (not x475) (not x474) (not x480) (not x484) x679)
+(or (not x679) x535)
+(or (not x679) x475)
+(or (not x679) x474)
+(or (not x679) x480)
+(or (not x679) x484)
+(or (not x680) (not x681) (not x474) (not x488) (not x489) (not x480) (not x458) (not x490) x682)
+(or (not x682) x680)
+(or (not x682) x681)
+(or (not x682) x474)
+(or (not x682) x488)
+(or (not x682) x489)
+(or (not x682) x480)
+(or (not x682) x458)
+(or (not x682) x490)
+(or x683 (not x682))
+(or x683 (not x679))
+(or x683 (not x678))
+(or x683 (not x677))
+(or x682 x679 x678 x677 (not x683))
+(or x684 (not x685))
+(or x684 (not x690))
+(or x685 x690 (not x684))
+(or x691 (not x692))
+(or x691 (not x697))
+(or x692 x697 (not x691))
+(or x698 (not x699))
+(or x698 (not x704))
+(or x699 x704 (not x698))
+(or x705 (not x706))
+(or x705 (not x711))
+(or x706 x711 (not x705))
+(or x496 x483 x473 x712)
+(or (not x712) (not x496))
+(or (not x712) (not x483))
+(or (not x712) (not x473))
+(or x713 (not x714))
+(or x713 (not x715))
+(or x713 (not x716))
+(or x713 (not x717))
+(or x713 (not x712))
+(or x714 x715 x716 x717 x712 (not x713))
+(or x503 x494 x479 x718)
+(or (not x718) (not x503))
+(or (not x718) (not x494))
+(or (not x718) (not x479))
+(or x719 (not x720))
+(or x719 (not x721))
+(or x719 (not x722))
+(or x719 (not x723))
+(or x719 (not x718))
+(or x720 x721 x722 x723 x718 (not x719))
+(or x527 x519 x511 x724)
+(or (not x724) (not x527))
+(or (not x724) (not x519))
+(or (not x724) (not x511))
+(or x725 (not x726))
+(or x725 (not x727))
+(or x725 (not x728))
+(or x725 (not x729))
+(or x725 (not x724))
+(or x726 x727 x728 x729 x724 (not x725))
+(or x551 x543 x535 x730)
+(or (not x730) (not x551))
+(or (not x730) (not x543))
+(or (not x730) (not x535))
+(or x731 (not x732))
+(or x731 (not x733))
+(or x731 (not x734))
+(or x731 (not x735))
+(or x731 (not x730))
+(or x732 x733 x734 x735 x730 (not x731))
+(or (not x731) (not x725) (not x719) (not x713) x736)
+(or (not x736) x731)
+(or (not x736) x725)
+(or (not x736) x719)
+(or (not x736) x713)
+(or x477 (not x737))
+(or x477 (not x738))
+(or x477 x480)
+(or x477 (not x736))
+(or x737 x738 (not x480) x736 (not x477))
+(or (not x473) (not x739) (not x740) x717)
+(or (not x717) x473)
+(or (not x717) x739)
+(or (not x717) x740)
+(or x741 (not x592))
+(or x741 (not x585))
+(or x592 x585 (not x741))
+(or (not x483) (not x741) x716)
+(or (not x716) x483)
+(or (not x716) x741)
+(or x742 (not x599))
+(or x742 (not x592))
+(or x742 (not x585))
+(or x599 x592 x585 (not x742))
+(or (not x496) (not x742) x715)
+(or (not x715) x496)
+(or (not x715) x742)
+(or x743 (not x487))
+(or x743 x483)
+(or x487 (not x483) (not x743))
+(or x744 (not x499))
+(or x744 (not x487))
+(or x744 x496)
+(or x499 x487 (not x496) (not x744))
+(or x745 (not x507))
+(or x745 (not x499))
+(or x745 (not x487))
+(or x745 x505)
+(or x507 x499 x487 (not x505) (not x745))
+(or x473 (not x745) (not x744) (not x743) x746)
+(or (not x746) (not x473))
+(or (not x746) x745)
+(or (not x746) x744)
+(or (not x746) x743)
+(or x739 (not x746))
+(or x739 x740)
+(or x739 (not x747))
+(or x739 (not x748))
+(or x739 x480)
+(or x739 (not x749))
+(or x739 (not x750))
+(or x746 (not x740) x747 x748 (not x480) x749 x750 (not x739))
+(or (not x739) (not x740) x585)
+(or (not x585) x739)
+(or (not x585) x740)
+(or x751 (not x499))
+(or x751 x496)
+(or x499 (not x496) (not x751))
+(or x752 (not x507))
+(or x752 (not x499))
+(or x752 x505)
+(or x507 x499 (not x505) (not x752))
+(or x483 (not x752) (not x751) x753)
+(or (not x753) (not x483))
+(or (not x753) x752)
+(or (not x753) x751)
+(or x754 (not x753))
+(or x754 x487)
+(or x754 (not x747))
+(or x754 (not x748))
+(or x754 x480)
+(or x754 (not x749))
+(or x754 (not x750))
+(or x753 (not x487) x747 x748 (not x480) x749 x750 (not x754))
+(or (not x754) (not x487) x592)
+(or (not x592) x754)
+(or (not x592) x487)
+(or x755 (not x507))
+(or x755 x505)
+(or x507 (not x505) (not x755))
+(or x496 (not x755) x756)
+(or (not x756) (not x496))
+(or (not x756) x755)
+(or x757 (not x756))
+(or x757 x499)
+(or x757 (not x747))
+(or x757 (not x748))
+(or x757 x480)
+(or x757 (not x749))
+(or x757 (not x750))
+(or x756 (not x499) x747 x748 (not x480) x749 x750 (not x757))
+(or (not x757) (not x499) x599)
+(or (not x599) x757)
+(or (not x599) x499)
+(or x758 x505)
+(or x758 x507)
+(or x758 (not x747))
+(or x758 (not x748))
+(or x758 x480)
+(or x758 (not x749))
+(or x758 (not x750))
+(or (not x505) (not x507) x747 x748 (not x480) x749 x750 (not x758))
+(or (not x758) (not x507) x606)
+(or (not x606) x758)
+(or (not x606) x507)
+(or x759 (not x606))
+(or x759 (not x599))
+(or x759 (not x592))
+(or x759 (not x585))
+(or x606 x599 x592 x585 (not x759))
+(or (not x505) (not x759) x714)
+(or (not x714) x505)
+(or (not x714) x759)
+(or x760 (not x714))
+(or x760 (not x715))
+(or x760 (not x716))
+(or x760 (not x717))
+(or x760 x505)
+(or x714 x715 x716 x717 (not x505) (not x760))
+(or (not x479) (not x761) (not x611) x723)
+(or (not x723) x479)
+(or (not x723) x761)
+(or (not x723) x611)
+(or x762 (not x627))
+(or x762 (not x620))
+(or x627 x620 (not x762))
+(or (not x494) (not x762) x722)
+(or (not x722) x494)
+(or (not x722) x762)
+(or x763 (not x634))
+(or x763 (not x627))
+(or x763 (not x620))
+(or x634 x627 x620 (not x763))
+(or (not x503) (not x763) x721)
+(or (not x721) x503)
+(or (not x721) x763)
+(or x764 (not x515))
+(or x764 x494)
+(or x515 (not x494) (not x764))
+(or x765 (not x523))
+(or x765 (not x515))
+(or x765 x503)
+(or x523 x515 (not x503) (not x765))
+(or x766 (not x531))
+(or x766 (not x523))
+(or x766 (not x515))
+(or x766 x529)
+(or x531 x523 x515 (not x529) (not x766))
+(or x479 (not x766) (not x765) (not x764) x767)
+(or (not x767) (not x479))
+(or (not x767) x766)
+(or (not x767) x765)
+(or (not x767) x764)
+(or x761 (not x767))
+(or x761 x611)
+(or x761 (not x747))
+(or x761 (not x748))
+(or x761 x480)
+(or x761 (not x749))
+(or x761 (not x750))
+(or x767 (not x611) x747 x748 (not x480) x749 x750 (not x761))
+(or (not x761) (not x611) x620)
+(or (not x620) x761)
+(or (not x620) x611)
+(or x768 (not x523))
+(or x768 x503)
+(or x523 (not x503) (not x768))
+(or x769 (not x531))
+(or x769 (not x523))
+(or x769 x529)
+(or x531 x523 (not x529) (not x769))
+(or x494 (not x769) (not x768) x770)
+(or (not x770) (not x494))
+(or (not x770) x769)
+(or (not x770) x768)
+(or x771 (not x770))
+(or x771 x515)
+(or x771 (not x747))
+(or x771 (not x748))
+(or x771 x480)
+(or x771 (not x749))
+(or x771 (not x750))
+(or x770 (not x515) x747 x748 (not x480) x749 x750 (not x771))
+(or (not x771) (not x515) x627)
+(or (not x627) x771)
+(or (not x627) x515)
+(or x772 (not x531))
+(or x772 x529)
+(or x531 (not x529) (not x772))
+(or x503 (not x772) x773)
+(or (not x773) (not x503))
+(or (not x773) x772)
+(or x774 (not x773))
+(or x774 x523)
+(or x774 (not x747))
+(or x774 (not x748))
+(or x774 x480)
+(or x774 (not x749))
+(or x774 (not x750))
+(or x773 (not x523) x747 x748 (not x480) x749 x750 (not x774))
+(or (not x774) (not x523) x634)
+(or (not x634) x774)
+(or (not x634) x523)
+(or x775 x529)
+(or x775 x531)
+(or x775 (not x747))
+(or x775 (not x748))
+(or x775 x480)
+(or x775 (not x749))
+(or x775 (not x750))
+(or (not x529) (not x531) x747 x748 (not x480) x749 x750 (not x775))
+(or (not x775) (not x531) x641)
+(or (not x641) x775)
+(or (not x641) x531)
+(or x776 (not x641))
+(or x776 (not x634))
+(or x776 (not x627))
+(or x776 (not x620))
+(or x641 x634 x627 x620 (not x776))
+(or (not x529) (not x776) x720)
+(or (not x720) x529)
+(or (not x720) x776)
+(or x777 (not x720))
+(or x777 (not x721))
+(or x777 (not x722))
+(or x777 (not x723))
+(or x777 x529)
+(or x720 x721 x722 x723 (not x529) (not x777))
+(or (not x511) (not x778) (not x646) x729)
+(or (not x729) x511)
+(or (not x729) x778)
+(or (not x729) x646)
+(or x779 (not x662))
+(or x779 (not x655))
+(or x662 x655 (not x779))
+(or (not x519) (not x779) x728)
+(or (not x728) x519)
+(or (not x728) x779)
+(or x780 (not x669))
+(or x780 (not x662))
+(or x780 (not x655))
+(or x669 x662 x655 (not x780))
+(or (not x527) (not x780) x727)
+(or (not x727) x527)
+(or (not x727) x780)
+(or x781 (not x539))
+(or x781 x519)
+(or x539 (not x519) (not x781))
+(or x782 (not x547))
+(or x782 (not x539))
+(or x782 x527)
+(or x547 x539 (not x527) (not x782))
+(or x783 (not x555))
+(or x783 (not x547))
+(or x783 (not x539))
+(or x783 x553)
+(or x555 x547 x539 (not x553) (not x783))
+(or x511 (not x783) (not x782) (not x781) x784)
+(or (not x784) (not x511))
+(or (not x784) x783)
+(or (not x784) x782)
+(or (not x784) x781)
+(or x778 (not x784))
+(or x778 x646)
+(or x778 (not x747))
+(or x778 (not x748))
+(or x778 x480)
+(or x778 (not x749))
+(or x778 (not x750))
+(or x784 (not x646) x747 x748 (not x480) x749 x750 (not x778))
+(or (not x778) (not x646) x655)
+(or (not x655) x778)
+(or (not x655) x646)
+(or x785 (not x547))
+(or x785 x527)
+(or x547 (not x527) (not x785))
+(or x786 (not x555))
+(or x786 (not x547))
+(or x786 x553)
+(or x555 x547 (not x553) (not x786))
+(or x519 (not x786) (not x785) x787)
+(or (not x787) (not x519))
+(or (not x787) x786)
+(or (not x787) x785)
+(or x788 (not x787))
+(or x788 x539)
+(or x788 (not x747))
+(or x788 (not x748))
+(or x788 x480)
+(or x788 (not x749))
+(or x788 (not x750))
+(or x787 (not x539) x747 x748 (not x480) x749 x750 (not x788))
+(or (not x788) (not x539) x662)
+(or (not x662) x788)
+(or (not x662) x539)
+(or x789 (not x555))
+(or x789 x553)
+(or x555 (not x553) (not x789))
+(or x527 (not x789) x790)
+(or (not x790) (not x527))
+(or (not x790) x789)
+(or x791 (not x790))
+(or x791 x547)
+(or x791 (not x747))
+(or x791 (not x748))
+(or x791 x480)
+(or x791 (not x749))
+(or x791 (not x750))
+(or x790 (not x547) x747 x748 (not x480) x749 x750 (not x791))
+(or (not x791) (not x547) x669)
+(or (not x669) x791)
+(or (not x669) x547)
+(or x792 x553)
+(or x792 x555)
+(or x792 (not x747))
+(or x792 (not x748))
+(or x792 x480)
+(or x792 (not x749))
+(or x792 (not x750))
+(or (not x553) (not x555) x747 x748 (not x480) x749 x750 (not x792))
+(or (not x792) (not x555) x676)
+(or (not x676) x792)
+(or (not x676) x555)
+(or x793 (not x676))
+(or x793 (not x669))
+(or x793 (not x662))
+(or x793 (not x655))
+(or x676 x669 x662 x655 (not x793))
+(or (not x553) (not x793) x726)
+(or (not x726) x553)
+(or (not x726) x793)
+(or x794 (not x726))
+(or x794 (not x727))
+(or x794 (not x728))
+(or x794 (not x729))
+(or x794 x553)
+(or x726 x727 x728 x729 (not x553) (not x794))
+(or (not x535) (not x795) (not x681) x735)
+(or (not x735) x535)
+(or (not x735) x795)
+(or (not x735) x681)
+(or x796 (not x697))
+(or x796 (not x690))
+(or x697 x690 (not x796))
+(or (not x543) (not x796) x734)
+(or (not x734) x543)
+(or (not x734) x796)
+(or x797 (not x704))
+(or x797 (not x697))
+(or x797 (not x690))
+(or x704 x697 x690 (not x797))
+(or (not x551) (not x797) x733)
+(or (not x733) x551)
+(or (not x733) x797)
+(or x798 (not x562))
+(or x798 x543)
+(or x562 (not x543) (not x798))
+(or x799 (not x569))
+(or x799 (not x562))
+(or x799 x551)
+(or x569 x562 (not x551) (not x799))
+(or x800 (not x576))
+(or x800 (not x569))
+(or x800 (not x562))
+(or x800 x574)
+(or x576 x569 x562 (not x574) (not x800))
+(or x535 (not x800) (not x799) (not x798) x801)
+(or (not x801) (not x535))
+(or (not x801) x800)
+(or (not x801) x799)
+(or (not x801) x798)
+(or x795 (not x801))
+(or x795 x681)
+(or x795 (not x747))
+(or x795 (not x748))
+(or x795 x480)
+(or x795 (not x749))
+(or x795 (not x750))
+(or x801 (not x681) x747 x748 (not x480) x749 x750 (not x795))
+(or (not x795) (not x681) x690)
+(or (not x690) x795)
+(or (not x690) x681)
+(or x802 (not x569))
+(or x802 x551)
+(or x569 (not x551) (not x802))
+(or x803 (not x576))
+(or x803 (not x569))
+(or x803 x574)
+(or x576 x569 (not x574) (not x803))
+(or x543 (not x803) (not x802) x804)
+(or (not x804) (not x543))
+(or (not x804) x803)
+(or (not x804) x802)
+(or x805 (not x804))
+(or x805 x562)
+(or x805 (not x747))
+(or x805 (not x748))
+(or x805 x480)
+(or x805 (not x749))
+(or x805 (not x750))
+(or x804 (not x562) x747 x748 (not x480) x749 x750 (not x805))
+(or (not x805) (not x562) x697)
+(or (not x697) x805)
+(or (not x697) x562)
+(or x806 (not x576))
+(or x806 x574)
+(or x576 (not x574) (not x806))
+(or x551 (not x806) x807)
+(or (not x807) (not x551))
+(or (not x807) x806)
+(or x808 (not x807))
+(or x808 x569)
+(or x808 (not x747))
+(or x808 (not x748))
+(or x808 x480)
+(or x808 (not x749))
+(or x808 (not x750))
+(or x807 (not x569) x747 x748 (not x480) x749 x750 (not x808))
+(or (not x808) (not x569) x704)
+(or (not x704) x808)
+(or (not x704) x569)
+(or x809 x574)
+(or x809 x576)
+(or x809 (not x747))
+(or x809 (not x748))
+(or x809 x480)
+(or x809 (not x749))
+(or x809 (not x750))
+(or (not x574) (not x576) x747 x748 (not x480) x749 x750 (not x809))
+(or (not x809) (not x576) x711)
+(or (not x711) x809)
+(or (not x711) x576)
+(or x810 (not x711))
+(or x810 (not x704))
+(or x810 (not x697))
+(or x810 (not x690))
+(or x711 x704 x697 x690 (not x810))
+(or (not x574) (not x810) x732)
+(or (not x732) x574)
+(or (not x732) x810)
+(or x811 (not x732))
+(or x811 (not x733))
+(or x811 (not x734))
+(or x811 (not x735))
+(or x811 x574)
+(or x732 x733 x734 x735 (not x574) (not x811))
+(or (not x811) (not x794) (not x777) (not x760) x812)
+(or (not x812) x811)
+(or (not x812) x794)
+(or (not x812) x777)
+(or (not x812) x760)
+(or x574 x551 x543 x535 x553 x527 x519 x511 x529 x503 x494 x479 x505 x496 x483 x473 x738)
+(or (not x738) (not x574))
+(or (not x738) (not x551))
+(or (not x738) (not x543))
+(or (not x738) (not x535))
+(or (not x738) (not x553))
+(or (not x738) (not x527))
+(or (not x738) (not x519))
+(or (not x738) (not x511))
+(or (not x738) (not x529))
+(or (not x738) (not x503))
+(or (not x738) (not x494))
+(or (not x738) (not x479))
+(or (not x738) (not x505))
+(or (not x738) (not x496))
+(or (not x738) (not x483))
+(or (not x738) (not x473))
+(or x476 (not x737))
+(or x476 (not x738))
+(or x476 x480)
+(or x476 (not x812))
+(or x737 x738 (not x480) x812 (not x476))
+(or (not x574) (not x474) (not x475) (not x476) (not x477) x813)
+(or (not x813) x574)
+(or (not x813) x474)
+(or (not x813) x475)
+(or (not x813) x476)
+(or (not x813) x477)
+(or (not x814) (not x815) (not x816) (not x817) (not x505) x818)
+(or (not x818) x814)
+(or (not x818) x815)
+(or (not x818) x816)
+(or (not x818) x817)
+(or (not x818) x505)
+(or (not x819) (not x820) (not x821) (not x822) (not x529) x823)
+(or (not x823) x819)
+(or (not x823) x820)
+(or (not x823) x821)
+(or (not x823) x822)
+(or (not x823) x529)
+(or (not x824) (not x825) (not x826) (not x827) (not x553) x828)
+(or (not x828) x824)
+(or (not x828) x825)
+(or (not x828) x826)
+(or (not x828) x827)
+(or (not x828) x553)
+(or (not x829) (not x830) (not x831) (not x832) (not x574) x833)
+(or (not x833) x829)
+(or (not x833) x830)
+(or (not x833) x831)
+(or (not x833) x832)
+(or (not x833) x574)
+(or x481 (not x833))
+(or x481 (not x828))
+(or x481 (not x823))
+(or x481 (not x818))
+(or x833 x828 x823 x818 (not x481))
+(or (not x505) (not x475) (not x474) (not x480) (not x481) x834)
+(or (not x834) x505)
+(or (not x834) x475)
+(or (not x834) x474)
+(or (not x834) x480)
+(or (not x834) x481)
+(or x835 (not x496))
+(or x835 (not x483))
+(or x835 (not x473))
+(or x496 x483 x473 (not x835))
+(or x817 x473)
+(or x817 (not x836))
+(or x817 x740)
+(or (not x473) x836 (not x740) (not x817))
+(or (not x837) (not x838) x839)
+(or (not x839) x837)
+(or (not x839) x838)
+(or x816 x483)
+(or x816 (not x839))
+(or (not x483) x839 (not x816))
+(or (not x840) (not x837) (not x838) x841)
+(or (not x841) x840)
+(or (not x841) x837)
+(or (not x841) x838)
+(or x815 x496)
+(or x815 (not x841))
+(or (not x496) x841 (not x815))
+(or (not x842) (not x740) (not x488) (not x489) (not x480) (not x458) (not x490) x836)
+(or (not x836) x842)
+(or (not x836) x740)
+(or (not x836) x488)
+(or (not x836) x489)
+(or (not x836) x480)
+(or (not x836) x458)
+(or (not x836) x490)
+(or x838 (not x836))
+(or x838 x740)
+(or x836 (not x740) (not x838))
+(or x499 (not x496) x843)
+(or (not x843) (not x499))
+(or (not x843) x496)
+(or x507 x499 (not x505) x844)
+(or (not x844) (not x507))
+(or (not x844) (not x499))
+(or (not x844) x505)
+(or x486 (not x483))
+(or x486 (not x844))
+(or x486 (not x843))
+(or x483 x844 x843 (not x486))
+(or (not x486) (not x487) (not x488) (not x489) (not x480) (not x458) (not x490) x845)
+(or (not x845) x486)
+(or (not x845) x487)
+(or (not x845) x488)
+(or (not x845) x489)
+(or (not x845) x480)
+(or (not x845) x458)
+(or (not x845) x490)
+(or x837 (not x845))
+(or x837 x487)
+(or x845 (not x487) (not x837))
+(or x507 (not x505) x846)
+(or (not x846) (not x507))
+(or (not x846) x505)
+(or x498 (not x496))
+(or x498 (not x846))
+(or x496 x846 (not x498))
+(or (not x498) (not x499) (not x488) (not x489) (not x480) (not x458) (not x490) x847)
+(or (not x847) x498)
+(or (not x847) x499)
+(or (not x847) x488)
+(or (not x847) x489)
+(or (not x847) x480)
+(or (not x847) x458)
+(or (not x847) x490)
+(or x840 (not x847))
+(or x840 x499)
+(or x847 (not x499) (not x840))
+(or (not x505) (not x507) (not x488) (not x489) (not x480) (not x458) (not x490) x848)
+(or (not x848) x505)
+(or (not x848) x507)
+(or (not x848) x488)
+(or (not x848) x489)
+(or (not x848) x480)
+(or (not x848) x458)
+(or (not x848) x490)
+(or x849 (not x848))
+(or x849 x507)
+(or x848 (not x507) (not x849))
+(or (not x849) (not x840) (not x837) (not x838) x850)
+(or (not x850) x849)
+(or (not x850) x840)
+(or (not x850) x837)
+(or (not x850) x838)
+(or x814 x505)
+(or x814 (not x850))
+(or (not x505) x850 (not x814))
+(or (not x814) (not x815) (not x816) (not x817) (not x835) x851)
+(or (not x851) x814)
+(or (not x851) x815)
+(or (not x851) x816)
+(or (not x851) x817)
+(or (not x851) x835)
+(or x852 (not x503))
+(or x852 (not x494))
+(or x852 (not x479))
+(or x503 x494 x479 (not x852))
+(or x822 x479)
+(or x822 (not x853))
+(or x822 x611)
+(or (not x479) x853 (not x611) (not x822))
+(or (not x854) (not x855) x856)
+(or (not x856) x854)
+(or (not x856) x855)
+(or x821 x494)
+(or x821 (not x856))
+(or (not x494) x856 (not x821))
+(or (not x857) (not x854) (not x855) x858)
+(or (not x858) x857)
+(or (not x858) x854)
+(or (not x858) x855)
+(or x820 x503)
+(or x820 (not x858))
+(or (not x503) x858 (not x820))
+(or x515 (not x494) x859)
+(or (not x859) (not x515))
+(or (not x859) x494)
+(or x523 x515 (not x503) x860)
+(or (not x860) (not x523))
+(or (not x860) (not x515))
+(or (not x860) x503)
+(or x531 x523 x515 (not x529) x861)
+(or (not x861) (not x531))
+(or (not x861) (not x523))
+(or (not x861) (not x515))
+(or (not x861) x529)
+(or x610 (not x479))
+(or x610 (not x861))
+(or x610 (not x860))
+(or x610 (not x859))
+(or x479 x861 x860 x859 (not x610))
+(or (not x610) (not x611) (not x488) (not x489) (not x480) (not x458) (not x490) x853)
+(or (not x853) x610)
+(or (not x853) x611)
+(or (not x853) x488)
+(or (not x853) x489)
+(or (not x853) x480)
+(or (not x853) x458)
+(or (not x853) x490)
+(or x855 (not x853))
+(or x855 x611)
+(or x853 (not x611) (not x855))
+(or x523 (not x503) x862)
+(or (not x862) (not x523))
+(or (not x862) x503)
+(or x531 x523 (not x529) x863)
+(or (not x863) (not x531))
+(or (not x863) (not x523))
+(or (not x863) x529)
+(or x514 (not x494))
+(or x514 (not x863))
+(or x514 (not x862))
+(or x494 x863 x862 (not x514))
+(or (not x514) (not x515) (not x488) (not x489) (not x480) (not x458) (not x490) x864)
+(or (not x864) x514)
+(or (not x864) x515)
+(or (not x864) x488)
+(or (not x864) x489)
+(or (not x864) x480)
+(or (not x864) x458)
+(or (not x864) x490)
+(or x854 (not x864))
+(or x854 x515)
+(or x864 (not x515) (not x854))
+(or x531 (not x529) x865)
+(or (not x865) (not x531))
+(or (not x865) x529)
+(or x522 (not x503))
+(or x522 (not x865))
+(or x503 x865 (not x522))
+(or (not x522) (not x523) (not x488) (not x489) (not x480) (not x458) (not x490) x866)
+(or (not x866) x522)
+(or (not x866) x523)
+(or (not x866) x488)
+(or (not x866) x489)
+(or (not x866) x480)
+(or (not x866) x458)
+(or (not x866) x490)
+(or x857 (not x866))
+(or x857 x523)
+(or x866 (not x523) (not x857))
+(or (not x529) (not x531) (not x488) (not x489) (not x480) (not x458) (not x490) x867)
+(or (not x867) x529)
+(or (not x867) x531)
+(or (not x867) x488)
+(or (not x867) x489)
+(or (not x867) x480)
+(or (not x867) x458)
+(or (not x867) x490)
+(or x868 (not x867))
+(or x868 x531)
+(or x867 (not x531) (not x868))
+(or (not x868) (not x857) (not x854) (not x855) x869)
+(or (not x869) x868)
+(or (not x869) x857)
+(or (not x869) x854)
+(or (not x869) x855)
+(or x819 x529)
+(or x819 (not x869))
+(or (not x529) x869 (not x819))
+(or (not x819) (not x820) (not x821) (not x822) (not x852) x870)
+(or (not x870) x819)
+(or (not x870) x820)
+(or (not x870) x821)
+(or (not x870) x822)
+(or (not x870) x852)
+(or x871 (not x527))
+(or x871 (not x519))
+(or x871 (not x511))
+(or x527 x519 x511 (not x871))
+(or x827 x511)
+(or x827 (not x872))
+(or x827 x646)
+(or (not x511) x872 (not x646) (not x827))
+(or (not x873) (not x874) x875)
+(or (not x875) x873)
+(or (not x875) x874)
+(or x826 x519)
+(or x826 (not x875))
+(or (not x519) x875 (not x826))
+(or (not x876) (not x873) (not x874) x877)
+(or (not x877) x876)
+(or (not x877) x873)
+(or (not x877) x874)
+(or x825 x527)
+(or x825 (not x877))
+(or (not x527) x877 (not x825))
+(or x539 (not x519) x878)
+(or (not x878) (not x539))
+(or (not x878) x519)
+(or x547 x539 (not x527) x879)
+(or (not x879) (not x547))
+(or (not x879) (not x539))
+(or (not x879) x527)
+(or x555 x547 x539 (not x553) x880)
+(or (not x880) (not x555))
+(or (not x880) (not x547))
+(or (not x880) (not x539))
+(or (not x880) x553)
+(or x645 (not x511))
+(or x645 (not x880))
+(or x645 (not x879))
+(or x645 (not x878))
+(or x511 x880 x879 x878 (not x645))
+(or (not x645) (not x646) (not x488) (not x489) (not x480) (not x458) (not x490) x872)
+(or (not x872) x645)
+(or (not x872) x646)
+(or (not x872) x488)
+(or (not x872) x489)
+(or (not x872) x480)
+(or (not x872) x458)
+(or (not x872) x490)
+(or x874 (not x872))
+(or x874 x646)
+(or x872 (not x646) (not x874))
+(or x547 (not x527) x881)
+(or (not x881) (not x547))
+(or (not x881) x527)
+(or x555 x547 (not x553) x882)
+(or (not x882) (not x555))
+(or (not x882) (not x547))
+(or (not x882) x553)
+(or x538 (not x519))
+(or x538 (not x882))
+(or x538 (not x881))
+(or x519 x882 x881 (not x538))
+(or (not x538) (not x539) (not x488) (not x489) (not x480) (not x458) (not x490) x883)
+(or (not x883) x538)
+(or (not x883) x539)
+(or (not x883) x488)
+(or (not x883) x489)
+(or (not x883) x480)
+(or (not x883) x458)
+(or (not x883) x490)
+(or x873 (not x883))
+(or x873 x539)
+(or x883 (not x539) (not x873))
+(or x555 (not x553) x884)
+(or (not x884) (not x555))
+(or (not x884) x553)
+(or x546 (not x527))
+(or x546 (not x884))
+(or x527 x884 (not x546))
+(or (not x546) (not x547) (not x488) (not x489) (not x480) (not x458) (not x490) x885)
+(or (not x885) x546)
+(or (not x885) x547)
+(or (not x885) x488)
+(or (not x885) x489)
+(or (not x885) x480)
+(or (not x885) x458)
+(or (not x885) x490)
+(or x876 (not x885))
+(or x876 x547)
+(or x885 (not x547) (not x876))
+(or (not x553) (not x555) (not x488) (not x489) (not x480) (not x458) (not x490) x886)
+(or (not x886) x553)
+(or (not x886) x555)
+(or (not x886) x488)
+(or (not x886) x489)
+(or (not x886) x480)
+(or (not x886) x458)
+(or (not x886) x490)
+(or x887 (not x886))
+(or x887 x555)
+(or x886 (not x555) (not x887))
+(or (not x887) (not x876) (not x873) (not x874) x888)
+(or (not x888) x887)
+(or (not x888) x876)
+(or (not x888) x873)
+(or (not x888) x874)
+(or x824 x553)
+(or x824 (not x888))
+(or (not x553) x888 (not x824))
+(or (not x824) (not x825) (not x826) (not x827) (not x871) x889)
+(or (not x889) x824)
+(or (not x889) x825)
+(or (not x889) x826)
+(or (not x889) x827)
+(or (not x889) x871)
+(or x890 (not x551))
+(or x890 (not x543))
+(or x890 (not x535))
+(or x551 x543 x535 (not x890))
+(or x832 x535)
+(or x832 (not x891))
+(or x832 x681)
+(or (not x535) x891 (not x681) (not x832))
+(or (not x892) (not x893) x894)
+(or (not x894) x892)
+(or (not x894) x893)
+(or x831 x543)
+(or x831 (not x894))
+(or (not x543) x894 (not x831))
+(or (not x895) (not x892) (not x893) x896)
+(or (not x896) x895)
+(or (not x896) x892)
+(or (not x896) x893)
+(or x830 x551)
+(or x830 (not x896))
+(or (not x551) x896 (not x830))
+(or x562 (not x543) x897)
+(or (not x897) (not x562))
+(or (not x897) x543)
+(or x569 x562 (not x551) x898)
+(or (not x898) (not x569))
+(or (not x898) (not x562))
+(or (not x898) x551)
+(or x576 x569 x562 (not x574) x899)
+(or (not x899) (not x576))
+(or (not x899) (not x569))
+(or (not x899) (not x562))
+(or (not x899) x574)
+(or x680 (not x535))
+(or x680 (not x899))
+(or x680 (not x898))
+(or x680 (not x897))
+(or x535 x899 x898 x897 (not x680))
+(or (not x680) (not x681) (not x488) (not x489) (not x480) (not x458) (not x490) x891)
+(or (not x891) x680)
+(or (not x891) x681)
+(or (not x891) x488)
+(or (not x891) x489)
+(or (not x891) x480)
+(or (not x891) x458)
+(or (not x891) x490)
+(or x893 (not x891))
+(or x893 x681)
+(or x891 (not x681) (not x893))
+(or x569 (not x551) x900)
+(or (not x900) (not x569))
+(or (not x900) x551)
+(or x576 x569 (not x574) x901)
+(or (not x901) (not x576))
+(or (not x901) (not x569))
+(or (not x901) x574)
+(or x561 (not x543))
+(or x561 (not x901))
+(or x561 (not x900))
+(or x543 x901 x900 (not x561))
+(or (not x561) (not x562) (not x488) (not x489) (not x480) (not x458) (not x490) x902)
+(or (not x902) x561)
+(or (not x902) x562)
+(or (not x902) x488)
+(or (not x902) x489)
+(or (not x902) x480)
+(or (not x902) x458)
+(or (not x902) x490)
+(or x892 (not x902))
+(or x892 x562)
+(or x902 (not x562) (not x892))
+(or x576 (not x574) x903)
+(or (not x903) (not x576))
+(or (not x903) x574)
+(or x568 (not x551))
+(or x568 (not x903))
+(or x551 x903 (not x568))
+(or (not x568) (not x569) (not x488) (not x489) (not x480) (not x458) (not x490) x904)
+(or (not x904) x568)
+(or (not x904) x569)
+(or (not x904) x488)
+(or (not x904) x489)
+(or (not x904) x480)
+(or (not x904) x458)
+(or (not x904) x490)
+(or x895 (not x904))
+(or x895 x569)
+(or x904 (not x569) (not x895))
+(or (not x574) (not x576) (not x488) (not x489) (not x480) (not x458) (not x490) x905)
+(or (not x905) x574)
+(or (not x905) x576)
+(or (not x905) x488)
+(or (not x905) x489)
+(or (not x905) x480)
+(or (not x905) x458)
+(or (not x905) x490)
+(or x906 (not x905))
+(or x906 x576)
+(or x905 (not x576) (not x906))
+(or (not x906) (not x895) (not x892) (not x893) x907)
+(or (not x907) x906)
+(or (not x907) x895)
+(or (not x907) x892)
+(or (not x907) x893)
+(or x829 x574)
+(or x829 (not x907))
+(or (not x574) x907 (not x829))
+(or (not x829) (not x830) (not x831) (not x832) (not x890) x908)
+(or (not x908) x829)
+(or (not x908) x830)
+(or (not x908) x831)
+(or (not x908) x832)
+(or (not x908) x890)
+(or x484 (not x908))
+(or x484 (not x889))
+(or x484 (not x870))
+(or x484 (not x851))
+(or x908 x889 x870 x851 (not x484))
+(or (not x909) (not x910) x747)
+(or (not x747) x909)
+(or (not x747) x910)
+(or x475 (not x747))
+(or x475 (not x748))
+(or x475 x480)
+(or x475 (not x749))
+(or x475 (not x750))
+(or x747 x748 (not x480) x749 x750 (not x475))
+(or (not x473) (not x475) (not x474) (not x480) (not x484) x911)
+(or (not x911) x473)
+(or (not x911) x475)
+(or (not x911) x474)
+(or (not x911) x480)
+(or (not x911) x484)
+(or x474 (not x574))
+(or x474 (not x551))
+(or x474 (not x543))
+(or x474 (not x535))
+(or x474 (not x553))
+(or x474 (not x527))
+(or x474 (not x519))
+(or x474 (not x511))
+(or x474 (not x529))
+(or x474 (not x503))
+(or x474 (not x494))
+(or x474 (not x479))
+(or x474 (not x505))
+(or x474 (not x496))
+(or x474 (not x483))
+(or x474 (not x473))
+(or x574 x551 x543 x535 x553 x527 x519 x511 x529 x503 x494 x479 x505 x496 x483 x473 (not x474))
+(or x487 (not x483) x912)
+(or (not x912) (not x487))
+(or (not x912) x483)
+(or x499 x487 (not x496) x913)
+(or (not x913) (not x499))
+(or (not x913) (not x487))
+(or (not x913) x496)
+(or x507 x499 x487 (not x505) x914)
+(or (not x914) (not x507))
+(or (not x914) (not x499))
+(or (not x914) (not x487))
+(or (not x914) x505)
+(or x842 (not x473))
+(or x842 (not x914))
+(or x842 (not x913))
+(or x842 (not x912))
+(or x473 x914 x913 x912 (not x842))
+(or (not x842) (not x740) (not x474) (not x488) (not x489) (not x480) (not x458) (not x490) x915)
+(or (not x915) x842)
+(or (not x915) x740)
+(or (not x915) x474)
+(or (not x915) x488)
+(or (not x915) x489)
+(or (not x915) x480)
+(or (not x915) x458)
+(or (not x915) x490)
+(or x916 (not x915))
+(or x916 (not x911))
+(or x916 (not x834))
+(or x916 (not x813))
+(or x916 (not x738))
+(or x915 x911 x834 x813 x738 (not x916))
+(or (not x917) (not x918) (not x919) (not x920) (not x921) x922)
+(or (not x922) x917)
+(or (not x922) x918)
+(or (not x922) x919)
+(or (not x922) x920)
+(or (not x922) x921)
+(or (not x923) (not x919) (not x918) (not x480) (not x924) x925)
+(or (not x925) x923)
+(or (not x925) x919)
+(or (not x925) x918)
+(or (not x925) x480)
+(or (not x925) x924)
+(or (not x926) (not x919) (not x918) (not x480) (not x927) x928)
+(or (not x928) x926)
+(or (not x928) x919)
+(or (not x928) x918)
+(or (not x928) x480)
+(or (not x928) x927)
+(or (not x929) (not x930) (not x918) (not x480) (not x458) (not x490) (not x910) (not x931) x932)
+(or (not x932) x929)
+(or (not x932) x930)
+(or (not x932) x918)
+(or (not x932) x480)
+(or (not x932) x458)
+(or (not x932) x490)
+(or (not x932) x910)
+(or (not x932) x931)
+(or x933 (not x932))
+(or x933 (not x928))
+(or x933 (not x925))
+(or x933 (not x922))
+(or x932 x928 x925 x922 (not x933))
+(or (not x926) (not x918) (not x919) (not x920) (not x921) x934)
+(or (not x934) x926)
+(or (not x934) x918)
+(or (not x934) x919)
+(or (not x934) x920)
+(or (not x934) x921)
+(or (not x935) (not x919) (not x918) (not x480) (not x924) x936)
+(or (not x936) x935)
+(or (not x936) x919)
+(or (not x936) x918)
+(or (not x936) x480)
+(or (not x936) x924)
+(or (not x937) (not x919) (not x918) (not x480) (not x927) x938)
+(or (not x938) x937)
+(or (not x938) x919)
+(or (not x938) x918)
+(or (not x938) x480)
+(or (not x938) x927)
+(or (not x939) (not x940) (not x918) (not x480) (not x458) (not x490) (not x910) (not x931) x941)
+(or (not x941) x939)
+(or (not x941) x940)
+(or (not x941) x918)
+(or (not x941) x480)
+(or (not x941) x458)
+(or (not x941) x490)
+(or (not x941) x910)
+(or (not x941) x931)
+(or x942 (not x941))
+(or x942 (not x938))
+(or x942 (not x936))
+(or x942 (not x934))
+(or x941 x938 x936 x934 (not x942))
+(or (not x937) (not x918) (not x919) (not x920) (not x921) x943)
+(or (not x943) x937)
+(or (not x943) x918)
+(or (not x943) x919)
+(or (not x943) x920)
+(or (not x943) x921)
+(or (not x944) (not x919) (not x918) (not x480) (not x924) x945)
+(or (not x945) x944)
+(or (not x945) x919)
+(or (not x945) x918)
+(or (not x945) x480)
+(or (not x945) x924)
+(or (not x946) (not x919) (not x918) (not x480) (not x927) x947)
+(or (not x947) x946)
+(or (not x947) x919)
+(or (not x947) x918)
+(or (not x947) x480)
+(or (not x947) x927)
+(or (not x946) (not x948) (not x918) (not x480) (not x458) (not x490) (not x910) (not x931) x949)
+(or (not x949) x946)
+(or (not x949) x948)
+(or (not x949) x918)
+(or (not x949) x480)
+(or (not x949) x458)
+(or (not x949) x490)
+(or (not x949) x910)
+(or (not x949) x931)
+(or x950 (not x949))
+(or x950 (not x947))
+(or x950 (not x945))
+(or x950 (not x943))
+(or x949 x947 x945 x943 (not x950))
+(or (not x923) (not x918) (not x919) (not x920) (not x921) x951)
+(or (not x951) x923)
+(or (not x951) x918)
+(or (not x951) x919)
+(or (not x951) x920)
+(or (not x951) x921)
+(or (not x952) (not x919) (not x918) (not x480) (not x924) x953)
+(or (not x953) x952)
+(or (not x953) x919)
+(or (not x953) x918)
+(or (not x953) x480)
+(or (not x953) x924)
+(or (not x935) (not x919) (not x918) (not x480) (not x927) x954)
+(or (not x954) x935)
+(or (not x954) x919)
+(or (not x954) x918)
+(or (not x954) x480)
+(or (not x954) x927)
+(or (not x955) (not x956) (not x918) (not x480) (not x458) (not x490) (not x910) (not x931) x957)
+(or (not x957) x955)
+(or (not x957) x956)
+(or (not x957) x918)
+(or (not x957) x480)
+(or (not x957) x458)
+(or (not x957) x490)
+(or (not x957) x910)
+(or (not x957) x931)
+(or x958 (not x957))
+(or x958 (not x954))
+(or x958 (not x953))
+(or x958 (not x951))
+(or x957 x954 x953 x951 (not x958))
+(or (not x935) (not x918) (not x919) (not x920) (not x921) x959)
+(or (not x959) x935)
+(or (not x959) x918)
+(or (not x959) x919)
+(or (not x959) x920)
+(or (not x959) x921)
+(or (not x960) (not x919) (not x918) (not x480) (not x924) x961)
+(or (not x961) x960)
+(or (not x961) x919)
+(or (not x961) x918)
+(or (not x961) x480)
+(or (not x961) x924)
+(or (not x944) (not x919) (not x918) (not x480) (not x927) x962)
+(or (not x962) x944)
+(or (not x962) x919)
+(or (not x962) x918)
+(or (not x962) x480)
+(or (not x962) x927)
+(or (not x963) (not x964) (not x918) (not x480) (not x458) (not x490) (not x910) (not x931) x965)
+(or (not x965) x963)
+(or (not x965) x964)
+(or (not x965) x918)
+(or (not x965) x480)
+(or (not x965) x458)
+(or (not x965) x490)
+(or (not x965) x910)
+(or (not x965) x931)
+(or x966 (not x965))
+(or x966 (not x962))
+(or x966 (not x961))
+(or x966 (not x959))
+(or x965 x962 x961 x959 (not x966))
+(or (not x944) (not x918) (not x919) (not x920) (not x921) x967)
+(or (not x967) x944)
+(or (not x967) x918)
+(or (not x967) x919)
+(or (not x967) x920)
+(or (not x967) x921)
+(or (not x968) (not x919) (not x918) (not x480) (not x924) x969)
+(or (not x969) x968)
+(or (not x969) x919)
+(or (not x969) x918)
+(or (not x969) x480)
+(or (not x969) x924)
+(or (not x970) (not x919) (not x918) (not x480) (not x927) x971)
+(or (not x971) x970)
+(or (not x971) x919)
+(or (not x971) x918)
+(or (not x971) x480)
+(or (not x971) x927)
+(or (not x970) (not x972) (not x918) (not x480) (not x458) (not x490) (not x910) (not x931) x973)
+(or (not x973) x970)
+(or (not x973) x972)
+(or (not x973) x918)
+(or (not x973) x480)
+(or (not x973) x458)
+(or (not x973) x490)
+(or (not x973) x910)
+(or (not x973) x931)
+(or x974 (not x973))
+(or x974 (not x971))
+(or x974 (not x969))
+(or x974 (not x967))
+(or x973 x971 x969 x967 (not x974))
+(or (not x970) (not x918) (not x919) (not x920) (not x921) x975)
+(or (not x975) x970)
+(or (not x975) x918)
+(or (not x975) x919)
+(or (not x975) x920)
+(or (not x975) x921)
+(or (not x976) (not x919) (not x918) (not x480) (not x924) x977)
+(or (not x977) x976)
+(or (not x977) x919)
+(or (not x977) x918)
+(or (not x977) x480)
+(or (not x977) x924)
+(or (not x952) (not x919) (not x918) (not x480) (not x927) x978)
+(or (not x978) x952)
+(or (not x978) x919)
+(or (not x978) x918)
+(or (not x978) x480)
+(or (not x978) x927)
+(or (not x979) (not x980) (not x918) (not x480) (not x458) (not x490) (not x910) (not x931) x981)
+(or (not x981) x979)
+(or (not x981) x980)
+(or (not x981) x918)
+(or (not x981) x480)
+(or (not x981) x458)
+(or (not x981) x490)
+(or (not x981) x910)
+(or (not x981) x931)
+(or x982 (not x981))
+(or x982 (not x978))
+(or x982 (not x977))
+(or x982 (not x975))
+(or x981 x978 x977 x975 (not x982))
+(or (not x952) (not x918) (not x919) (not x920) (not x921) x983)
+(or (not x983) x952)
+(or (not x983) x918)
+(or (not x983) x919)
+(or (not x983) x920)
+(or (not x983) x921)
+(or (not x984) (not x919) (not x918) (not x480) (not x924) x985)
+(or (not x985) x984)
+(or (not x985) x919)
+(or (not x985) x918)
+(or (not x985) x480)
+(or (not x985) x924)
+(or (not x960) (not x919) (not x918) (not x480) (not x927) x986)
+(or (not x986) x960)
+(or (not x986) x919)
+(or (not x986) x918)
+(or (not x986) x480)
+(or (not x986) x927)
+(or (not x987) (not x988) (not x918) (not x480) (not x458) (not x490) (not x910) (not x931) x989)
+(or (not x989) x987)
+(or (not x989) x988)
+(or (not x989) x918)
+(or (not x989) x480)
+(or (not x989) x458)
+(or (not x989) x490)
+(or (not x989) x910)
+(or (not x989) x931)
+(or x990 (not x989))
+(or x990 (not x986))
+(or x990 (not x985))
+(or x990 (not x983))
+(or x989 x986 x985 x983 (not x990))
+(or (not x960) (not x918) (not x919) (not x920) (not x921) x991)
+(or (not x991) x960)
+(or (not x991) x918)
+(or (not x991) x919)
+(or (not x991) x920)
+(or (not x991) x921)
+(or (not x992) (not x919) (not x918) (not x480) (not x924) x993)
+(or (not x993) x992)
+(or (not x993) x919)
+(or (not x993) x918)
+(or (not x993) x480)
+(or (not x993) x924)
+(or (not x968) (not x919) (not x918) (not x480) (not x927) x994)
+(or (not x994) x968)
+(or (not x994) x919)
+(or (not x994) x918)
+(or (not x994) x480)
+(or (not x994) x927)
+(or (not x995) (not x996) (not x918) (not x480) (not x458) (not x490) (not x910) (not x931) x997)
+(or (not x997) x995)
+(or (not x997) x996)
+(or (not x997) x918)
+(or (not x997) x480)
+(or (not x997) x458)
+(or (not x997) x490)
+(or (not x997) x910)
+(or (not x997) x931)
+(or x998 (not x997))
+(or x998 (not x994))
+(or x998 (not x993))
+(or x998 (not x991))
+(or x997 x994 x993 x991 (not x998))
+(or (not x968) (not x918) (not x919) (not x920) (not x921) x999)
+(or (not x999) x968)
+(or (not x999) x918)
+(or (not x999) x919)
+(or (not x999) x920)
+(or (not x999) x921)
+(or (not x1000) (not x919) (not x918) (not x480) (not x924) x1001)
+(or (not x1001) x1000)
+(or (not x1001) x919)
+(or (not x1001) x918)
+(or (not x1001) x480)
+(or (not x1001) x924)
+(or (not x976) (not x919) (not x918) (not x480) (not x927) x1002)
+(or (not x1002) x976)
+(or (not x1002) x919)
+(or (not x1002) x918)
+(or (not x1002) x480)
+(or (not x1002) x927)
+(or (not x976) (not x1003) (not x918) (not x480) (not x458) (not x490) (not x910) (not x931) x1004)
+(or (not x1004) x976)
+(or (not x1004) x1003)
+(or (not x1004) x918)
+(or (not x1004) x480)
+(or (not x1004) x458)
+(or (not x1004) x490)
+(or (not x1004) x910)
+(or (not x1004) x931)
+(or x1005 (not x1004))
+(or x1005 (not x1002))
+(or x1005 (not x1001))
+(or x1005 (not x999))
+(or x1004 x1002 x1001 x999 (not x1005))
+(or (not x984) (not x918) (not x919) (not x920) (not x921) x1006)
+(or (not x1006) x984)
+(or (not x1006) x918)
+(or (not x1006) x919)
+(or (not x1006) x920)
+(or (not x1006) x921)
+(or (not x917) (not x919) (not x918) (not x480) (not x924) x1007)
+(or (not x1007) x917)
+(or (not x1007) x919)
+(or (not x1007) x918)
+(or (not x1007) x480)
+(or (not x1007) x924)
+(or (not x992) (not x919) (not x918) (not x480) (not x927) x1008)
+(or (not x1008) x992)
+(or (not x1008) x919)
+(or (not x1008) x918)
+(or (not x1008) x480)
+(or (not x1008) x927)
+(or (not x1009) (not x1010) (not x918) (not x480) (not x458) (not x490) (not x910) (not x931) x1011)
+(or (not x1011) x1009)
+(or (not x1011) x1010)
+(or (not x1011) x918)
+(or (not x1011) x480)
+(or (not x1011) x458)
+(or (not x1011) x490)
+(or (not x1011) x910)
+(or (not x1011) x931)
+(or x1012 (not x1011))
+(or x1012 (not x1008))
+(or x1012 (not x1007))
+(or x1012 (not x1006))
+(or x1011 x1008 x1007 x1006 (not x1012))
+(or (not x992) (not x918) (not x919) (not x920) (not x921) x1013)
+(or (not x1013) x992)
+(or (not x1013) x918)
+(or (not x1013) x919)
+(or (not x1013) x920)
+(or (not x1013) x921)
+(or (not x926) (not x919) (not x918) (not x480) (not x924) x1014)
+(or (not x1014) x926)
+(or (not x1014) x919)
+(or (not x1014) x918)
+(or (not x1014) x480)
+(or (not x1014) x924)
+(or (not x1000) (not x919) (not x918) (not x480) (not x927) x1015)
+(or (not x1015) x1000)
+(or (not x1015) x919)
+(or (not x1015) x918)
+(or (not x1015) x480)
+(or (not x1015) x927)
+(or (not x1016) (not x1017) (not x918) (not x480) (not x458) (not x490) (not x910) (not x931) x1018)
+(or (not x1018) x1016)
+(or (not x1018) x1017)
+(or (not x1018) x918)
+(or (not x1018) x480)
+(or (not x1018) x458)
+(or (not x1018) x490)
+(or (not x1018) x910)
+(or (not x1018) x931)
+(or x1019 (not x1018))
+(or x1019 (not x1015))
+(or x1019 (not x1014))
+(or x1019 (not x1013))
+(or x1018 x1015 x1014 x1013 (not x1019))
+(or (not x1000) (not x918) (not x919) (not x920) (not x921) x1020)
+(or (not x1020) x1000)
+(or (not x1020) x918)
+(or (not x1020) x919)
+(or (not x1020) x920)
+(or (not x1020) x921)
+(or (not x937) (not x919) (not x918) (not x480) (not x924) x1021)
+(or (not x1021) x937)
+(or (not x1021) x919)
+(or (not x1021) x918)
+(or (not x1021) x480)
+(or (not x1021) x924)
+(or (not x1022) (not x919) (not x918) (not x480) (not x927) x1023)
+(or (not x1023) x1022)
+(or (not x1023) x919)
+(or (not x1023) x918)
+(or (not x1023) x480)
+(or (not x1023) x927)
+(or (not x1022) (not x1024) (not x918) (not x480) (not x458) (not x490) (not x910) (not x931) x1025)
+(or (not x1025) x1022)
+(or (not x1025) x1024)
+(or (not x1025) x918)
+(or (not x1025) x480)
+(or (not x1025) x458)
+(or (not x1025) x490)
+(or (not x1025) x910)
+(or (not x1025) x931)
+(or x1026 (not x1025))
+(or x1026 (not x1023))
+(or x1026 (not x1021))
+(or x1026 (not x1020))
+(or x1025 x1023 x1021 x1020 (not x1026))
+(or (not x946) (not x918) (not x919) (not x920) (not x921) x1027)
+(or (not x1027) x946)
+(or (not x1027) x918)
+(or (not x1027) x919)
+(or (not x1027) x920)
+(or (not x1027) x921)
+(or (not x970) (not x919) (not x918) (not x480) (not x924) x1028)
+(or (not x1028) x970)
+(or (not x1028) x919)
+(or (not x1028) x918)
+(or (not x1028) x480)
+(or (not x1028) x924)
+(or (not x923) (not x919) (not x918) (not x480) (not x927) x1029)
+(or (not x1029) x923)
+(or (not x1029) x919)
+(or (not x1029) x918)
+(or (not x1029) x480)
+(or (not x1029) x927)
+(or (not x1030) (not x1031) (not x918) (not x480) (not x458) (not x490) (not x910) (not x931) x1032)
+(or (not x1032) x1030)
+(or (not x1032) x1031)
+(or (not x1032) x918)
+(or (not x1032) x480)
+(or (not x1032) x458)
+(or (not x1032) x490)
+(or (not x1032) x910)
+(or (not x1032) x931)
+(or x1033 (not x1032))
+(or x1033 (not x1029))
+(or x1033 (not x1028))
+(or x1033 (not x1027))
+(or x1032 x1029 x1028 x1027 (not x1033))
+(or (not x976) (not x918) (not x919) (not x920) (not x921) x1034)
+(or (not x1034) x976)
+(or (not x1034) x918)
+(or (not x1034) x919)
+(or (not x1034) x920)
+(or (not x1034) x921)
+(or (not x1022) (not x919) (not x918) (not x480) (not x924) x1035)
+(or (not x1035) x1022)
+(or (not x1035) x919)
+(or (not x1035) x918)
+(or (not x1035) x480)
+(or (not x1035) x924)
+(or (not x984) (not x919) (not x918) (not x480) (not x927) x1036)
+(or (not x1036) x984)
+(or (not x1036) x919)
+(or (not x1036) x918)
+(or (not x1036) x480)
+(or (not x1036) x927)
+(or (not x1037) (not x1038) (not x918) (not x480) (not x458) (not x490) (not x910) (not x931) x1039)
+(or (not x1039) x1037)
+(or (not x1039) x1038)
+(or (not x1039) x918)
+(or (not x1039) x480)
+(or (not x1039) x458)
+(or (not x1039) x490)
+(or (not x1039) x910)
+(or (not x1039) x931)
+(or x1040 (not x1039))
+(or x1040 (not x1036))
+(or x1040 (not x1035))
+(or x1040 (not x1034))
+(or x1039 x1036 x1035 x1034 (not x1040))
+(or x1041 (not x1042))
+(or x1041 (not x1047))
+(or x1042 x1047 (not x1041))
+(or x1048 (not x1049))
+(or x1048 (not x1054))
+(or x1049 x1054 (not x1048))
+(or x1055 (not x1056))
+(or x1055 (not x1061))
+(or x1056 x1061 (not x1055))
+(or x1062 (not x1063))
+(or x1062 (not x1068))
+(or x1063 x1068 (not x1062))
+(or x937 x926 x917 x1069)
+(or (not x1069) (not x937))
+(or (not x1069) (not x926))
+(or (not x1069) (not x917))
+(or x1070 (not x1071))
+(or x1070 (not x1072))
+(or x1070 (not x1073))
+(or x1070 (not x1074))
+(or x1070 (not x1069))
+(or x1071 x1072 x1073 x1074 x1069 (not x1070))
+(or x944 x935 x923 x1075)
+(or (not x1075) (not x944))
+(or (not x1075) (not x935))
+(or (not x1075) (not x923))
+(or x1076 (not x1077))
+(or x1076 (not x1078))
+(or x1076 (not x1079))
+(or x1076 (not x1080))
+(or x1076 (not x1075))
+(or x1077 x1078 x1079 x1080 x1075 (not x1076))
+(or x968 x960 x952 x1081)
+(or (not x1081) (not x968))
+(or (not x1081) (not x960))
+(or (not x1081) (not x952))
+(or x1082 (not x1083))
+(or x1082 (not x1084))
+(or x1082 (not x1085))
+(or x1082 (not x1086))
+(or x1082 (not x1081))
+(or x1083 x1084 x1085 x1086 x1081 (not x1082))
+(or x1000 x992 x984 x1087)
+(or (not x1087) (not x1000))
+(or (not x1087) (not x992))
+(or (not x1087) (not x984))
+(or x1088 (not x1089))
+(or x1088 (not x1090))
+(or x1088 (not x1091))
+(or x1088 (not x1092))
+(or x1088 (not x1087))
+(or x1089 x1090 x1091 x1092 x1087 (not x1088))
+(or (not x1088) (not x1082) (not x1076) (not x1070) x1093)
+(or (not x1093) x1088)
+(or (not x1093) x1082)
+(or (not x1093) x1076)
+(or (not x1093) x1070)
+(or x921 (not x1094))
+(or x921 (not x1095))
+(or x921 x480)
+(or x921 (not x1093))
+(or x1094 x1095 (not x480) x1093 (not x921))
+(or (not x917) (not x1096) (not x1097) x1074)
+(or (not x1074) x917)
+(or (not x1074) x1096)
+(or (not x1074) x1097)
+(or x1098 (not x1099))
+(or x1098 (not x1100))
+(or x1099 x1100 (not x1098))
+(or (not x926) (not x1098) x1073)
+(or (not x1073) x926)
+(or (not x1073) x1098)
+(or x1101 (not x1102))
+(or x1101 (not x1099))
+(or x1101 (not x1100))
+(or x1102 x1099 x1100 (not x1101))
+(or (not x937) (not x1101) x1072)
+(or (not x1072) x937)
+(or (not x1072) x1101)
+(or x1103 (not x930))
+(or x1103 x926)
+(or x930 (not x926) (not x1103))
+(or x1104 (not x940))
+(or x1104 (not x930))
+(or x1104 x937)
+(or x940 x930 (not x937) (not x1104))
+(or x1105 (not x948))
+(or x1105 (not x940))
+(or x1105 (not x930))
+(or x1105 x946)
+(or x948 x940 x930 (not x946) (not x1105))
+(or x917 (not x1105) (not x1104) (not x1103) x1106)
+(or (not x1106) (not x917))
+(or (not x1106) x1105)
+(or (not x1106) x1104)
+(or (not x1106) x1103)
+(or x1096 (not x1106))
+(or x1096 x1097)
+(or x1096 x480)
+(or x1096 (not x749))
+(or x1096 (not x750))
+(or x1096 (not x1107))
+(or x1096 (not x1108))
+(or x1106 (not x1097) (not x480) x749 x750 x1107 x1108 (not x1096))
+(or (not x1096) (not x1097) x1100)
+(or (not x1100) x1096)
+(or (not x1100) x1097)
+(or x1109 (not x940))
+(or x1109 x937)
+(or x940 (not x937) (not x1109))
+(or x1110 (not x948))
+(or x1110 (not x940))
+(or x1110 x946)
+(or x948 x940 (not x946) (not x1110))
+(or x926 (not x1110) (not x1109) x1111)
+(or (not x1111) (not x926))
+(or (not x1111) x1110)
+(or (not x1111) x1109)
+(or x1112 (not x1111))
+(or x1112 x930)
+(or x1112 x480)
+(or x1112 (not x749))
+(or x1112 (not x750))
+(or x1112 (not x1107))
+(or x1112 (not x1108))
+(or x1111 (not x930) (not x480) x749 x750 x1107 x1108 (not x1112))
+(or (not x1112) (not x930) x1099)
+(or (not x1099) x1112)
+(or (not x1099) x930)
+(or x1113 (not x948))
+(or x1113 x946)
+(or x948 (not x946) (not x1113))
+(or x937 (not x1113) x1114)
+(or (not x1114) (not x937))
+(or (not x1114) x1113)
+(or x1115 (not x1114))
+(or x1115 x940)
+(or x1115 x480)
+(or x1115 (not x749))
+(or x1115 (not x750))
+(or x1115 (not x1107))
+(or x1115 (not x1108))
+(or x1114 (not x940) (not x480) x749 x750 x1107 x1108 (not x1115))
+(or (not x1115) (not x940) x1102)
+(or (not x1102) x1115)
+(or (not x1102) x940)
+(or x1116 x946)
+(or x1116 x948)
+(or x1116 x480)
+(or x1116 (not x749))
+(or x1116 (not x750))
+(or x1116 (not x1107))
+(or x1116 (not x1108))
+(or (not x946) (not x948) (not x480) x749 x750 x1107 x1108 (not x1116))
+(or (not x1116) (not x948) x1117)
+(or (not x1117) x1116)
+(or (not x1117) x948)
+(or x1118 (not x1117))
+(or x1118 (not x1102))
+(or x1118 (not x1099))
+(or x1118 (not x1100))
+(or x1117 x1102 x1099 x1100 (not x1118))
+(or (not x946) (not x1118) x1071)
+(or (not x1071) x946)
+(or (not x1071) x1118)
+(or x1119 (not x1071))
+(or x1119 (not x1072))
+(or x1119 (not x1073))
+(or x1119 (not x1074))
+(or x1119 x946)
+(or x1071 x1072 x1073 x1074 (not x946) (not x1119))
+(or (not x923) (not x1120) (not x1031) x1080)
+(or (not x1080) x923)
+(or (not x1080) x1120)
+(or (not x1080) x1031)
+(or x1121 (not x1122))
+(or x1121 (not x1123))
+(or x1122 x1123 (not x1121))
+(or (not x935) (not x1121) x1079)
+(or (not x1079) x935)
+(or (not x1079) x1121)
+(or x1124 (not x1125))
+(or x1124 (not x1122))
+(or x1124 (not x1123))
+(or x1125 x1122 x1123 (not x1124))
+(or (not x944) (not x1124) x1078)
+(or (not x1078) x944)
+(or (not x1078) x1124)
+(or x1126 (not x956))
+(or x1126 x935)
+(or x956 (not x935) (not x1126))
+(or x1127 (not x964))
+(or x1127 (not x956))
+(or x1127 x944)
+(or x964 x956 (not x944) (not x1127))
+(or x1128 (not x972))
+(or x1128 (not x964))
+(or x1128 (not x956))
+(or x1128 x970)
+(or x972 x964 x956 (not x970) (not x1128))
+(or x923 (not x1128) (not x1127) (not x1126) x1129)
+(or (not x1129) (not x923))
+(or (not x1129) x1128)
+(or (not x1129) x1127)
+(or (not x1129) x1126)
+(or x1120 (not x1129))
+(or x1120 x1031)
+(or x1120 x480)
+(or x1120 (not x749))
+(or x1120 (not x750))
+(or x1120 (not x1107))
+(or x1120 (not x1108))
+(or x1129 (not x1031) (not x480) x749 x750 x1107 x1108 (not x1120))
+(or (not x1120) (not x1031) x1123)
+(or (not x1123) x1120)
+(or (not x1123) x1031)
+(or x1130 (not x964))
+(or x1130 x944)
+(or x964 (not x944) (not x1130))
+(or x1131 (not x972))
+(or x1131 (not x964))
+(or x1131 x970)
+(or x972 x964 (not x970) (not x1131))
+(or x935 (not x1131) (not x1130) x1132)
+(or (not x1132) (not x935))
+(or (not x1132) x1131)
+(or (not x1132) x1130)
+(or x1133 (not x1132))
+(or x1133 x956)
+(or x1133 x480)
+(or x1133 (not x749))
+(or x1133 (not x750))
+(or x1133 (not x1107))
+(or x1133 (not x1108))
+(or x1132 (not x956) (not x480) x749 x750 x1107 x1108 (not x1133))
+(or (not x1133) (not x956) x1122)
+(or (not x1122) x1133)
+(or (not x1122) x956)
+(or x1134 (not x972))
+(or x1134 x970)
+(or x972 (not x970) (not x1134))
+(or x944 (not x1134) x1135)
+(or (not x1135) (not x944))
+(or (not x1135) x1134)
+(or x1136 (not x1135))
+(or x1136 x964)
+(or x1136 x480)
+(or x1136 (not x749))
+(or x1136 (not x750))
+(or x1136 (not x1107))
+(or x1136 (not x1108))
+(or x1135 (not x964) (not x480) x749 x750 x1107 x1108 (not x1136))
+(or (not x1136) (not x964) x1125)
+(or (not x1125) x1136)
+(or (not x1125) x964)
+(or x1137 x970)
+(or x1137 x972)
+(or x1137 x480)
+(or x1137 (not x749))
+(or x1137 (not x750))
+(or x1137 (not x1107))
+(or x1137 (not x1108))
+(or (not x970) (not x972) (not x480) x749 x750 x1107 x1108 (not x1137))
+(or (not x1137) (not x972) x1138)
+(or (not x1138) x1137)
+(or (not x1138) x972)
+(or x1139 (not x1138))
+(or x1139 (not x1125))
+(or x1139 (not x1122))
+(or x1139 (not x1123))
+(or x1138 x1125 x1122 x1123 (not x1139))
+(or (not x970) (not x1139) x1077)
+(or (not x1077) x970)
+(or (not x1077) x1139)
+(or x1140 (not x1077))
+(or x1140 (not x1078))
+(or x1140 (not x1079))
+(or x1140 (not x1080))
+(or x1140 x970)
+(or x1077 x1078 x1079 x1080 (not x970) (not x1140))
+(or (not x952) (not x1141) (not x980) x1086)
+(or (not x1086) x952)
+(or (not x1086) x1141)
+(or (not x1086) x980)
+(or x1142 (not x1143))
+(or x1142 (not x1144))
+(or x1143 x1144 (not x1142))
+(or (not x960) (not x1142) x1085)
+(or (not x1085) x960)
+(or (not x1085) x1142)
+(or x1145 (not x1146))
+(or x1145 (not x1143))
+(or x1145 (not x1144))
+(or x1146 x1143 x1144 (not x1145))
+(or (not x968) (not x1145) x1084)
+(or (not x1084) x968)
+(or (not x1084) x1145)
+(or x1147 (not x988))
+(or x1147 x960)
+(or x988 (not x960) (not x1147))
+(or x1148 (not x996))
+(or x1148 (not x988))
+(or x1148 x968)
+(or x996 x988 (not x968) (not x1148))
+(or x1149 (not x1003))
+(or x1149 (not x996))
+(or x1149 (not x988))
+(or x1149 x976)
+(or x1003 x996 x988 (not x976) (not x1149))
+(or x952 (not x1149) (not x1148) (not x1147) x1150)
+(or (not x1150) (not x952))
+(or (not x1150) x1149)
+(or (not x1150) x1148)
+(or (not x1150) x1147)
+(or x1141 (not x1150))
+(or x1141 x980)
+(or x1141 x480)
+(or x1141 (not x749))
+(or x1141 (not x750))
+(or x1141 (not x1107))
+(or x1141 (not x1108))
+(or x1150 (not x980) (not x480) x749 x750 x1107 x1108 (not x1141))
+(or (not x1141) (not x980) x1144)
+(or (not x1144) x1141)
+(or (not x1144) x980)
+(or x1151 (not x996))
+(or x1151 x968)
+(or x996 (not x968) (not x1151))
+(or x1152 (not x1003))
+(or x1152 (not x996))
+(or x1152 x976)
+(or x1003 x996 (not x976) (not x1152))
+(or x960 (not x1152) (not x1151) x1153)
+(or (not x1153) (not x960))
+(or (not x1153) x1152)
+(or (not x1153) x1151)
+(or x1154 (not x1153))
+(or x1154 x988)
+(or x1154 x480)
+(or x1154 (not x749))
+(or x1154 (not x750))
+(or x1154 (not x1107))
+(or x1154 (not x1108))
+(or x1153 (not x988) (not x480) x749 x750 x1107 x1108 (not x1154))
+(or (not x1154) (not x988) x1143)
+(or (not x1143) x1154)
+(or (not x1143) x988)
+(or x1155 (not x1003))
+(or x1155 x976)
+(or x1003 (not x976) (not x1155))
+(or x968 (not x1155) x1156)
+(or (not x1156) (not x968))
+(or (not x1156) x1155)
+(or x1157 (not x1156))
+(or x1157 x996)
+(or x1157 x480)
+(or x1157 (not x749))
+(or x1157 (not x750))
+(or x1157 (not x1107))
+(or x1157 (not x1108))
+(or x1156 (not x996) (not x480) x749 x750 x1107 x1108 (not x1157))
+(or (not x1157) (not x996) x1146)
+(or (not x1146) x1157)
+(or (not x1146) x996)
+(or x1158 x976)
+(or x1158 x1003)
+(or x1158 x480)
+(or x1158 (not x749))
+(or x1158 (not x750))
+(or x1158 (not x1107))
+(or x1158 (not x1108))
+(or (not x976) (not x1003) (not x480) x749 x750 x1107 x1108 (not x1158))
+(or (not x1158) (not x1003) x1159)
+(or (not x1159) x1158)
+(or (not x1159) x1003)
+(or x1160 (not x1159))
+(or x1160 (not x1146))
+(or x1160 (not x1143))
+(or x1160 (not x1144))
+(or x1159 x1146 x1143 x1144 (not x1160))
+(or (not x976) (not x1160) x1083)
+(or (not x1083) x976)
+(or (not x1083) x1160)
+(or x1161 (not x1083))
+(or x1161 (not x1084))
+(or x1161 (not x1085))
+(or x1161 (not x1086))
+(or x1161 x976)
+(or x1083 x1084 x1085 x1086 (not x976) (not x1161))
+(or (not x984) (not x1162) (not x1038) x1092)
+(or (not x1092) x984)
+(or (not x1092) x1162)
+(or (not x1092) x1038)
+(or x1163 (not x1054))
+(or x1163 (not x1047))
+(or x1054 x1047 (not x1163))
+(or (not x992) (not x1163) x1091)
+(or (not x1091) x992)
+(or (not x1091) x1163)
+(or x1164 (not x1061))
+(or x1164 (not x1054))
+(or x1164 (not x1047))
+(or x1061 x1054 x1047 (not x1164))
+(or (not x1000) (not x1164) x1090)
+(or (not x1090) x1000)
+(or (not x1090) x1164)
+(or x1165 (not x1010))
+(or x1165 x992)
+(or x1010 (not x992) (not x1165))
+(or x1166 (not x1017))
+(or x1166 (not x1010))
+(or x1166 x1000)
+(or x1017 x1010 (not x1000) (not x1166))
+(or x1167 (not x1024))
+(or x1167 (not x1017))
+(or x1167 (not x1010))
+(or x1167 x1022)
+(or x1024 x1017 x1010 (not x1022) (not x1167))
+(or x984 (not x1167) (not x1166) (not x1165) x1168)
+(or (not x1168) (not x984))
+(or (not x1168) x1167)
+(or (not x1168) x1166)
+(or (not x1168) x1165)
+(or x1162 (not x1168))
+(or x1162 x1038)
+(or x1162 x480)
+(or x1162 (not x749))
+(or x1162 (not x750))
+(or x1162 (not x1107))
+(or x1162 (not x1108))
+(or x1168 (not x1038) (not x480) x749 x750 x1107 x1108 (not x1162))
+(or (not x1162) (not x1038) x1047)
+(or (not x1047) x1162)
+(or (not x1047) x1038)
+(or x1169 (not x1017))
+(or x1169 x1000)
+(or x1017 (not x1000) (not x1169))
+(or x1170 (not x1024))
+(or x1170 (not x1017))
+(or x1170 x1022)
+(or x1024 x1017 (not x1022) (not x1170))
+(or x992 (not x1170) (not x1169) x1171)
+(or (not x1171) (not x992))
+(or (not x1171) x1170)
+(or (not x1171) x1169)
+(or x1172 (not x1171))
+(or x1172 x1010)
+(or x1172 x480)
+(or x1172 (not x749))
+(or x1172 (not x750))
+(or x1172 (not x1107))
+(or x1172 (not x1108))
+(or x1171 (not x1010) (not x480) x749 x750 x1107 x1108 (not x1172))
+(or (not x1172) (not x1010) x1054)
+(or (not x1054) x1172)
+(or (not x1054) x1010)
+(or x1173 (not x1024))
+(or x1173 x1022)
+(or x1024 (not x1022) (not x1173))
+(or x1000 (not x1173) x1174)
+(or (not x1174) (not x1000))
+(or (not x1174) x1173)
+(or x1175 (not x1174))
+(or x1175 x1017)
+(or x1175 x480)
+(or x1175 (not x749))
+(or x1175 (not x750))
+(or x1175 (not x1107))
+(or x1175 (not x1108))
+(or x1174 (not x1017) (not x480) x749 x750 x1107 x1108 (not x1175))
+(or (not x1175) (not x1017) x1061)
+(or (not x1061) x1175)
+(or (not x1061) x1017)
+(or x1176 x1022)
+(or x1176 x1024)
+(or x1176 x480)
+(or x1176 (not x749))
+(or x1176 (not x750))
+(or x1176 (not x1107))
+(or x1176 (not x1108))
+(or (not x1022) (not x1024) (not x480) x749 x750 x1107 x1108 (not x1176))
+(or (not x1176) (not x1024) x1068)
+(or (not x1068) x1176)
+(or (not x1068) x1024)
+(or x1177 (not x1068))
+(or x1177 (not x1061))
+(or x1177 (not x1054))
+(or x1177 (not x1047))
+(or x1068 x1061 x1054 x1047 (not x1177))
+(or (not x1022) (not x1177) x1089)
+(or (not x1089) x1022)
+(or (not x1089) x1177)
+(or x1178 (not x1089))
+(or x1178 (not x1090))
+(or x1178 (not x1091))
+(or x1178 (not x1092))
+(or x1178 x1022)
+(or x1089 x1090 x1091 x1092 (not x1022) (not x1178))
+(or (not x1178) (not x1161) (not x1140) (not x1119) x1179)
+(or (not x1179) x1178)
+(or (not x1179) x1161)
+(or (not x1179) x1140)
+(or (not x1179) x1119)
+(or x1022 x1000 x992 x984 x976 x968 x960 x952 x970 x944 x935 x923 x946 x937 x926 x917 x1095)
+(or (not x1095) (not x1022))
+(or (not x1095) (not x1000))
+(or (not x1095) (not x992))
+(or (not x1095) (not x984))
+(or (not x1095) (not x976))
+(or (not x1095) (not x968))
+(or (not x1095) (not x960))
+(or (not x1095) (not x952))
+(or (not x1095) (not x970))
+(or (not x1095) (not x944))
+(or (not x1095) (not x935))
+(or (not x1095) (not x923))
+(or (not x1095) (not x946))
+(or (not x1095) (not x937))
+(or (not x1095) (not x926))
+(or (not x1095) (not x917))
+(or x920 (not x1094))
+(or x920 (not x1095))
+(or x920 x480)
+(or x920 (not x1179))
+(or x1094 x1095 (not x480) x1179 (not x920))
+(or (not x1022) (not x918) (not x919) (not x920) (not x921) x1180)
+(or (not x1180) x1022)
+(or (not x1180) x918)
+(or (not x1180) x919)
+(or (not x1180) x920)
+(or (not x1180) x921)
+(or (not x1181) (not x1182) (not x1183) (not x1184) (not x946) x1185)
+(or (not x1185) x1181)
+(or (not x1185) x1182)
+(or (not x1185) x1183)
+(or (not x1185) x1184)
+(or (not x1185) x946)
+(or (not x1186) (not x1187) (not x1188) (not x1189) (not x970) x1190)
+(or (not x1190) x1186)
+(or (not x1190) x1187)
+(or (not x1190) x1188)
+(or (not x1190) x1189)
+(or (not x1190) x970)
+(or (not x1191) (not x1192) (not x1193) (not x1194) (not x976) x1195)
+(or (not x1195) x1191)
+(or (not x1195) x1192)
+(or (not x1195) x1193)
+(or (not x1195) x1194)
+(or (not x1195) x976)
+(or (not x1196) (not x1197) (not x1198) (not x1199) (not x1022) x1200)
+(or (not x1200) x1196)
+(or (not x1200) x1197)
+(or (not x1200) x1198)
+(or (not x1200) x1199)
+(or (not x1200) x1022)
+(or x924 (not x1200))
+(or x924 (not x1195))
+(or x924 (not x1190))
+(or x924 (not x1185))
+(or x1200 x1195 x1190 x1185 (not x924))
+(or (not x946) (not x919) (not x918) (not x480) (not x924) x1201)
+(or (not x1201) x946)
+(or (not x1201) x919)
+(or (not x1201) x918)
+(or (not x1201) x480)
+(or (not x1201) x924)
+(or x1202 (not x937))
+(or x1202 (not x926))
+(or x1202 (not x917))
+(or x937 x926 x917 (not x1202))
+(or x1184 x917)
+(or x1184 (not x1203))
+(or x1184 x1097)
+(or (not x917) x1203 (not x1097) (not x1184))
+(or (not x1204) (not x1205) x1206)
+(or (not x1206) x1204)
+(or (not x1206) x1205)
+(or x1183 x926)
+(or x1183 (not x1206))
+(or (not x926) x1206 (not x1183))
+(or (not x1207) (not x1204) (not x1205) x1208)
+(or (not x1208) x1207)
+(or (not x1208) x1204)
+(or (not x1208) x1205)
+(or x1182 x937)
+(or x1182 (not x1208))
+(or (not x937) x1208 (not x1182))
+(or (not x1209) (not x1097) (not x480) (not x458) (not x490) (not x910) (not x931) x1203)
+(or (not x1203) x1209)
+(or (not x1203) x1097)
+(or (not x1203) x480)
+(or (not x1203) x458)
+(or (not x1203) x490)
+(or (not x1203) x910)
+(or (not x1203) x931)
+(or x1205 (not x1203))
+(or x1205 x1097)
+(or x1203 (not x1097) (not x1205))
+(or x940 (not x937) x1210)
+(or (not x1210) (not x940))
+(or (not x1210) x937)
+(or x948 x940 (not x946) x1211)
+(or (not x1211) (not x948))
+(or (not x1211) (not x940))
+(or (not x1211) x946)
+(or x929 (not x926))
+(or x929 (not x1211))
+(or x929 (not x1210))
+(or x926 x1211 x1210 (not x929))
+(or (not x929) (not x930) (not x480) (not x458) (not x490) (not x910) (not x931) x1212)
+(or (not x1212) x929)
+(or (not x1212) x930)
+(or (not x1212) x480)
+(or (not x1212) x458)
+(or (not x1212) x490)
+(or (not x1212) x910)
+(or (not x1212) x931)
+(or x1204 (not x1212))
+(or x1204 x930)
+(or x1212 (not x930) (not x1204))
+(or x948 (not x946) x1213)
+(or (not x1213) (not x948))
+(or (not x1213) x946)
+(or x939 (not x937))
+(or x939 (not x1213))
+(or x937 x1213 (not x939))
+(or (not x939) (not x940) (not x480) (not x458) (not x490) (not x910) (not x931) x1214)
+(or (not x1214) x939)
+(or (not x1214) x940)
+(or (not x1214) x480)
+(or (not x1214) x458)
+(or (not x1214) x490)
+(or (not x1214) x910)
+(or (not x1214) x931)
+(or x1207 (not x1214))
+(or x1207 x940)
+(or x1214 (not x940) (not x1207))
+(or (not x946) (not x948) (not x480) (not x458) (not x490) (not x910) (not x931) x1215)
+(or (not x1215) x946)
+(or (not x1215) x948)
+(or (not x1215) x480)
+(or (not x1215) x458)
+(or (not x1215) x490)
+(or (not x1215) x910)
+(or (not x1215) x931)
+(or x1216 (not x1215))
+(or x1216 x948)
+(or x1215 (not x948) (not x1216))
+(or (not x1216) (not x1207) (not x1204) (not x1205) x1217)
+(or (not x1217) x1216)
+(or (not x1217) x1207)
+(or (not x1217) x1204)
+(or (not x1217) x1205)
+(or x1181 x946)
+(or x1181 (not x1217))
+(or (not x946) x1217 (not x1181))
+(or (not x1181) (not x1182) (not x1183) (not x1184) (not x1202) x1218)
+(or (not x1218) x1181)
+(or (not x1218) x1182)
+(or (not x1218) x1183)
+(or (not x1218) x1184)
+(or (not x1218) x1202)
+(or x1219 (not x944))
+(or x1219 (not x935))
+(or x1219 (not x923))
+(or x944 x935 x923 (not x1219))
+(or x1189 x923)
+(or x1189 (not x1220))
+(or x1189 x1031)
+(or (not x923) x1220 (not x1031) (not x1189))
+(or (not x1221) (not x1222) x1223)
+(or (not x1223) x1221)
+(or (not x1223) x1222)
+(or x1188 x935)
+(or x1188 (not x1223))
+(or (not x935) x1223 (not x1188))
+(or (not x1224) (not x1221) (not x1222) x1225)
+(or (not x1225) x1224)
+(or (not x1225) x1221)
+(or (not x1225) x1222)
+(or x1187 x944)
+(or x1187 (not x1225))
+(or (not x944) x1225 (not x1187))
+(or x956 (not x935) x1226)
+(or (not x1226) (not x956))
+(or (not x1226) x935)
+(or x964 x956 (not x944) x1227)
+(or (not x1227) (not x964))
+(or (not x1227) (not x956))
+(or (not x1227) x944)
+(or x972 x964 x956 (not x970) x1228)
+(or (not x1228) (not x972))
+(or (not x1228) (not x964))
+(or (not x1228) (not x956))
+(or (not x1228) x970)
+(or x1030 (not x923))
+(or x1030 (not x1228))
+(or x1030 (not x1227))
+(or x1030 (not x1226))
+(or x923 x1228 x1227 x1226 (not x1030))
+(or (not x1030) (not x1031) (not x480) (not x458) (not x490) (not x910) (not x931) x1220)
+(or (not x1220) x1030)
+(or (not x1220) x1031)
+(or (not x1220) x480)
+(or (not x1220) x458)
+(or (not x1220) x490)
+(or (not x1220) x910)
+(or (not x1220) x931)
+(or x1222 (not x1220))
+(or x1222 x1031)
+(or x1220 (not x1031) (not x1222))
+(or x964 (not x944) x1229)
+(or (not x1229) (not x964))
+(or (not x1229) x944)
+(or x972 x964 (not x970) x1230)
+(or (not x1230) (not x972))
+(or (not x1230) (not x964))
+(or (not x1230) x970)
+(or x955 (not x935))
+(or x955 (not x1230))
+(or x955 (not x1229))
+(or x935 x1230 x1229 (not x955))
+(or (not x955) (not x956) (not x480) (not x458) (not x490) (not x910) (not x931) x1231)
+(or (not x1231) x955)
+(or (not x1231) x956)
+(or (not x1231) x480)
+(or (not x1231) x458)
+(or (not x1231) x490)
+(or (not x1231) x910)
+(or (not x1231) x931)
+(or x1221 (not x1231))
+(or x1221 x956)
+(or x1231 (not x956) (not x1221))
+(or x972 (not x970) x1232)
+(or (not x1232) (not x972))
+(or (not x1232) x970)
+(or x963 (not x944))
+(or x963 (not x1232))
+(or x944 x1232 (not x963))
+(or (not x963) (not x964) (not x480) (not x458) (not x490) (not x910) (not x931) x1233)
+(or (not x1233) x963)
+(or (not x1233) x964)
+(or (not x1233) x480)
+(or (not x1233) x458)
+(or (not x1233) x490)
+(or (not x1233) x910)
+(or (not x1233) x931)
+(or x1224 (not x1233))
+(or x1224 x964)
+(or x1233 (not x964) (not x1224))
+(or (not x970) (not x972) (not x480) (not x458) (not x490) (not x910) (not x931) x1234)
+(or (not x1234) x970)
+(or (not x1234) x972)
+(or (not x1234) x480)
+(or (not x1234) x458)
+(or (not x1234) x490)
+(or (not x1234) x910)
+(or (not x1234) x931)
+(or x1235 (not x1234))
+(or x1235 x972)
+(or x1234 (not x972) (not x1235))
+(or (not x1235) (not x1224) (not x1221) (not x1222) x1236)
+(or (not x1236) x1235)
+(or (not x1236) x1224)
+(or (not x1236) x1221)
+(or (not x1236) x1222)
+(or x1186 x970)
+(or x1186 (not x1236))
+(or (not x970) x1236 (not x1186))
+(or (not x1186) (not x1187) (not x1188) (not x1189) (not x1219) x1237)
+(or (not x1237) x1186)
+(or (not x1237) x1187)
+(or (not x1237) x1188)
+(or (not x1237) x1189)
+(or (not x1237) x1219)
+(or x1238 (not x968))
+(or x1238 (not x960))
+(or x1238 (not x952))
+(or x968 x960 x952 (not x1238))
+(or x1194 x952)
+(or x1194 (not x1239))
+(or x1194 x980)
+(or (not x952) x1239 (not x980) (not x1194))
+(or (not x1240) (not x1241) x1242)
+(or (not x1242) x1240)
+(or (not x1242) x1241)
+(or x1193 x960)
+(or x1193 (not x1242))
+(or (not x960) x1242 (not x1193))
+(or (not x1243) (not x1240) (not x1241) x1244)
+(or (not x1244) x1243)
+(or (not x1244) x1240)
+(or (not x1244) x1241)
+(or x1192 x968)
+(or x1192 (not x1244))
+(or (not x968) x1244 (not x1192))
+(or x988 (not x960) x1245)
+(or (not x1245) (not x988))
+(or (not x1245) x960)
+(or x996 x988 (not x968) x1246)
+(or (not x1246) (not x996))
+(or (not x1246) (not x988))
+(or (not x1246) x968)
+(or x1003 x996 x988 (not x976) x1247)
+(or (not x1247) (not x1003))
+(or (not x1247) (not x996))
+(or (not x1247) (not x988))
+(or (not x1247) x976)
+(or x979 (not x952))
+(or x979 (not x1247))
+(or x979 (not x1246))
+(or x979 (not x1245))
+(or x952 x1247 x1246 x1245 (not x979))
+(or (not x979) (not x980) (not x480) (not x458) (not x490) (not x910) (not x931) x1239)
+(or (not x1239) x979)
+(or (not x1239) x980)
+(or (not x1239) x480)
+(or (not x1239) x458)
+(or (not x1239) x490)
+(or (not x1239) x910)
+(or (not x1239) x931)
+(or x1241 (not x1239))
+(or x1241 x980)
+(or x1239 (not x980) (not x1241))
+(or x996 (not x968) x1248)
+(or (not x1248) (not x996))
+(or (not x1248) x968)
+(or x1003 x996 (not x976) x1249)
+(or (not x1249) (not x1003))
+(or (not x1249) (not x996))
+(or (not x1249) x976)
+(or x987 (not x960))
+(or x987 (not x1249))
+(or x987 (not x1248))
+(or x960 x1249 x1248 (not x987))
+(or (not x987) (not x988) (not x480) (not x458) (not x490) (not x910) (not x931) x1250)
+(or (not x1250) x987)
+(or (not x1250) x988)
+(or (not x1250) x480)
+(or (not x1250) x458)
+(or (not x1250) x490)
+(or (not x1250) x910)
+(or (not x1250) x931)
+(or x1240 (not x1250))
+(or x1240 x988)
+(or x1250 (not x988) (not x1240))
+(or x1003 (not x976) x1251)
+(or (not x1251) (not x1003))
+(or (not x1251) x976)
+(or x995 (not x968))
+(or x995 (not x1251))
+(or x968 x1251 (not x995))
+(or (not x995) (not x996) (not x480) (not x458) (not x490) (not x910) (not x931) x1252)
+(or (not x1252) x995)
+(or (not x1252) x996)
+(or (not x1252) x480)
+(or (not x1252) x458)
+(or (not x1252) x490)
+(or (not x1252) x910)
+(or (not x1252) x931)
+(or x1243 (not x1252))
+(or x1243 x996)
+(or x1252 (not x996) (not x1243))
+(or (not x976) (not x1003) (not x480) (not x458) (not x490) (not x910) (not x931) x1253)
+(or (not x1253) x976)
+(or (not x1253) x1003)
+(or (not x1253) x480)
+(or (not x1253) x458)
+(or (not x1253) x490)
+(or (not x1253) x910)
+(or (not x1253) x931)
+(or x1254 (not x1253))
+(or x1254 x1003)
+(or x1253 (not x1003) (not x1254))
+(or (not x1254) (not x1243) (not x1240) (not x1241) x1255)
+(or (not x1255) x1254)
+(or (not x1255) x1243)
+(or (not x1255) x1240)
+(or (not x1255) x1241)
+(or x1191 x976)
+(or x1191 (not x1255))
+(or (not x976) x1255 (not x1191))
+(or (not x1191) (not x1192) (not x1193) (not x1194) (not x1238) x1256)
+(or (not x1256) x1191)
+(or (not x1256) x1192)
+(or (not x1256) x1193)
+(or (not x1256) x1194)
+(or (not x1256) x1238)
+(or x1257 (not x1000))
+(or x1257 (not x992))
+(or x1257 (not x984))
+(or x1000 x992 x984 (not x1257))
+(or x1199 x984)
+(or x1199 (not x1258))
+(or x1199 x1038)
+(or (not x984) x1258 (not x1038) (not x1199))
+(or (not x1259) (not x1260) x1261)
+(or (not x1261) x1259)
+(or (not x1261) x1260)
+(or x1198 x992)
+(or x1198 (not x1261))
+(or (not x992) x1261 (not x1198))
+(or (not x1262) (not x1259) (not x1260) x1263)
+(or (not x1263) x1262)
+(or (not x1263) x1259)
+(or (not x1263) x1260)
+(or x1197 x1000)
+(or x1197 (not x1263))
+(or (not x1000) x1263 (not x1197))
+(or x1010 (not x992) x1264)
+(or (not x1264) (not x1010))
+(or (not x1264) x992)
+(or x1017 x1010 (not x1000) x1265)
+(or (not x1265) (not x1017))
+(or (not x1265) (not x1010))
+(or (not x1265) x1000)
+(or x1024 x1017 x1010 (not x1022) x1266)
+(or (not x1266) (not x1024))
+(or (not x1266) (not x1017))
+(or (not x1266) (not x1010))
+(or (not x1266) x1022)
+(or x1037 (not x984))
+(or x1037 (not x1266))
+(or x1037 (not x1265))
+(or x1037 (not x1264))
+(or x984 x1266 x1265 x1264 (not x1037))
+(or (not x1037) (not x1038) (not x480) (not x458) (not x490) (not x910) (not x931) x1258)
+(or (not x1258) x1037)
+(or (not x1258) x1038)
+(or (not x1258) x480)
+(or (not x1258) x458)
+(or (not x1258) x490)
+(or (not x1258) x910)
+(or (not x1258) x931)
+(or x1260 (not x1258))
+(or x1260 x1038)
+(or x1258 (not x1038) (not x1260))
+(or x1017 (not x1000) x1267)
+(or (not x1267) (not x1017))
+(or (not x1267) x1000)
+(or x1024 x1017 (not x1022) x1268)
+(or (not x1268) (not x1024))
+(or (not x1268) (not x1017))
+(or (not x1268) x1022)
+(or x1009 (not x992))
+(or x1009 (not x1268))
+(or x1009 (not x1267))
+(or x992 x1268 x1267 (not x1009))
+(or (not x1009) (not x1010) (not x480) (not x458) (not x490) (not x910) (not x931) x1269)
+(or (not x1269) x1009)
+(or (not x1269) x1010)
+(or (not x1269) x480)
+(or (not x1269) x458)
+(or (not x1269) x490)
+(or (not x1269) x910)
+(or (not x1269) x931)
+(or x1259 (not x1269))
+(or x1259 x1010)
+(or x1269 (not x1010) (not x1259))
+(or x1024 (not x1022) x1270)
+(or (not x1270) (not x1024))
+(or (not x1270) x1022)
+(or x1016 (not x1000))
+(or x1016 (not x1270))
+(or x1000 x1270 (not x1016))
+(or (not x1016) (not x1017) (not x480) (not x458) (not x490) (not x910) (not x931) x1271)
+(or (not x1271) x1016)
+(or (not x1271) x1017)
+(or (not x1271) x480)
+(or (not x1271) x458)
+(or (not x1271) x490)
+(or (not x1271) x910)
+(or (not x1271) x931)
+(or x1262 (not x1271))
+(or x1262 x1017)
+(or x1271 (not x1017) (not x1262))
+(or (not x1022) (not x1024) (not x480) (not x458) (not x490) (not x910) (not x931) x1272)
+(or (not x1272) x1022)
+(or (not x1272) x1024)
+(or (not x1272) x480)
+(or (not x1272) x458)
+(or (not x1272) x490)
+(or (not x1272) x910)
+(or (not x1272) x931)
+(or x1273 (not x1272))
+(or x1273 x1024)
+(or x1272 (not x1024) (not x1273))
+(or (not x1273) (not x1262) (not x1259) (not x1260) x1274)
+(or (not x1274) x1273)
+(or (not x1274) x1262)
+(or (not x1274) x1259)
+(or (not x1274) x1260)
+(or x1196 x1022)
+(or x1196 (not x1274))
+(or (not x1022) x1274 (not x1196))
+(or (not x1196) (not x1197) (not x1198) (not x1199) (not x1257) x1275)
+(or (not x1275) x1196)
+(or (not x1275) x1197)
+(or (not x1275) x1198)
+(or (not x1275) x1199)
+(or (not x1275) x1257)
+(or x927 (not x1275))
+(or x927 (not x1256))
+(or x927 (not x1237))
+(or x927 (not x1218))
+(or x1275 x1256 x1237 x1218 (not x927))
+(or (not x489) x909 x1108)
+(or (not x1108) x489)
+(or (not x1108) (not x909))
+(or x919 x480)
+(or x919 (not x749))
+(or x919 (not x750))
+(or x919 (not x1107))
+(or x919 (not x1108))
+(or (not x480) x749 x750 x1107 x1108 (not x919))
+(or (not x917) (not x919) (not x918) (not x480) (not x927) x1276)
+(or (not x1276) x917)
+(or (not x1276) x919)
+(or (not x1276) x918)
+(or (not x1276) x480)
+(or (not x1276) x927)
+(or x918 (not x1022))
+(or x918 (not x1000))
+(or x918 (not x992))
+(or x918 (not x984))
+(or x918 (not x976))
+(or x918 (not x968))
+(or x918 (not x960))
+(or x918 (not x952))
+(or x918 (not x970))
+(or x918 (not x944))
+(or x918 (not x935))
+(or x918 (not x923))
+(or x918 (not x946))
+(or x918 (not x937))
+(or x918 (not x926))
+(or x918 (not x917))
+(or x1022 x1000 x992 x984 x976 x968 x960 x952 x970 x944 x935 x923 x946 x937 x926 x917 (not x918))
+(or x930 (not x926) x1277)
+(or (not x1277) (not x930))
+(or (not x1277) x926)
+(or x940 x930 (not x937) x1278)
+(or (not x1278) (not x940))
+(or (not x1278) (not x930))
+(or (not x1278) x937)
+(or x948 x940 x930 (not x946) x1279)
+(or (not x1279) (not x948))
+(or (not x1279) (not x940))
+(or (not x1279) (not x930))
+(or (not x1279) x946)
+(or x1209 (not x917))
+(or x1209 (not x1279))
+(or x1209 (not x1278))
+(or x1209 (not x1277))
+(or x917 x1279 x1278 x1277 (not x1209))
+(or (not x1209) (not x1097) (not x918) (not x480) (not x458) (not x490) (not x910) (not x931) x1280)
+(or (not x1280) x1209)
+(or (not x1280) x1097)
+(or (not x1280) x918)
+(or (not x1280) x480)
+(or (not x1280) x458)
+(or (not x1280) x490)
+(or (not x1280) x910)
+(or (not x1280) x931)
+(or x1281 (not x1280))
+(or x1281 (not x1276))
+(or x1281 (not x1201))
+(or x1281 (not x1180))
+(or x1281 (not x1095))
+(or x1280 x1276 x1201 x1180 x1095 (not x1281))
+(or (not x1282) (not x909) x1283)
+(or (not x1283) x1282)
+(or (not x1283) x909)
+(or x488 x909)
+(or x488 (not x1107))
+(or (not x909) x1107 (not x488))
+(or (not x488) (not x489) (not x480) (not x458) (not x490) x737)
+(or (not x737) x488)
+(or (not x737) x489)
+(or (not x737) x480)
+(or (not x737) x458)
+(or (not x737) x490)
+(or (not x480) (not x458) (not x490) (not x488) (not x489) (not x480) (not x458) (not x490) x1284)
+(or (not x1284) x480)
+(or (not x1284) x458)
+(or (not x1284) x490)
+(or (not x1284) x488)
+(or (not x1284) x489)
+(or (not x1284) x480)
+(or (not x1284) x458)
+(or (not x1284) x490)
+(or x1285 (not x1284))
+(or x1285 (not x1283))
+(or x1284 x1283 (not x1285))
+(or (not x1286) x1287 (not x1288) (not x1289) (not x456) (not x1290) x1291)
+(or (not x1291) x1286)
+(or (not x1291) (not x1287))
+(or (not x1291) x1288)
+(or (not x1291) x1289)
+(or (not x1291) x456)
+(or (not x1291) x1290)
+(or (not x1292) (not x1289) (not x1293) x1294)
+(or (not x1294) x1292)
+(or (not x1294) x1289)
+(or (not x1294) x1293)
+(or x1295 (not x1294))
+(or x1295 (not x1291))
+(or x1294 x1291 (not x1295))
+(or (not x1296) x1297 (not x1298) (not x1289) (not x456) (not x1290) x1299)
+(or (not x1299) x1296)
+(or (not x1299) (not x1297))
+(or (not x1299) x1298)
+(or (not x1299) x1289)
+(or (not x1299) x456)
+(or (not x1299) x1290)
+(or (not x1300) (not x1289) (not x1293) x1301)
+(or (not x1301) x1300)
+(or (not x1301) x1289)
+(or (not x1301) x1293)
+(or x1302 (not x1301))
+(or x1302 (not x1299))
+(or x1301 x1299 (not x1302))
+(or (not x1303) x1304 (not x1305) (not x1289) (not x456) (not x1290) x1306)
+(or (not x1306) x1303)
+(or (not x1306) (not x1304))
+(or (not x1306) x1305)
+(or (not x1306) x1289)
+(or (not x1306) x456)
+(or (not x1306) x1290)
+(or (not x1307) (not x1289) (not x1293) x1308)
+(or (not x1308) x1307)
+(or (not x1308) x1289)
+(or (not x1308) x1293)
+(or x1309 (not x1308))
+(or x1309 (not x1306))
+(or x1308 x1306 (not x1309))
+(or (not x1310) x1311 (not x1312) (not x1289) (not x456) (not x1290) x1313)
+(or (not x1313) x1310)
+(or (not x1313) (not x1311))
+(or (not x1313) x1312)
+(or (not x1313) x1289)
+(or (not x1313) x456)
+(or (not x1313) x1290)
+(or x1293 x456)
+(or x1293 (not x1314))
+(or (not x456) x1314 (not x1293))
+(or x1289 (not x1315))
+(or x1289 (not x1307))
+(or x1289 (not x1300))
+(or x1289 (not x1292))
+(or x1315 x1307 x1300 x1292 (not x1289))
+(or (not x1315) (not x1289) (not x1293) x1316)
+(or (not x1316) x1315)
+(or (not x1316) x1289)
+(or (not x1316) x1293)
+(or x1315 x1307 x1300 x1292 x1317)
+(or (not x1317) (not x1315))
+(or (not x1317) (not x1307))
+(or (not x1317) (not x1300))
+(or (not x1317) (not x1292))
+(or x1318 (not x1317))
+(or x1318 (not x1316))
+(or x1318 (not x1313))
+(or x1317 x1316 x1313 (not x1318))
+(or (not x1319) (not x1300) x1320)
+(or (not x1320) x1319)
+(or (not x1320) x1300)
+(or (not x1321) (not x1319) (not x1307) x1322)
+(or (not x1322) x1321)
+(or (not x1322) x1319)
+(or (not x1322) x1307)
+(or (not x1323) (not x1321) (not x1319) (not x1315) x1324)
+(or (not x1324) x1323)
+(or (not x1324) x1321)
+(or (not x1324) x1319)
+(or (not x1324) x1315)
+(or x1310 (not x1292))
+(or x1310 (not x1324))
+(or x1310 (not x1322))
+(or x1310 (not x1320))
+(or x1292 x1324 x1322 x1320 (not x1310))
+(or (not x1310) x1311 (not x1312) (not x456) (not x1290) x1325)
+(or (not x1325) x1310)
+(or (not x1325) (not x1311))
+(or (not x1325) x1312)
+(or (not x1325) x456)
+(or (not x1325) x1290)
+(or (not x1321) (not x1307) x1326)
+(or (not x1326) x1321)
+(or (not x1326) x1307)
+(or (not x1323) (not x1321) (not x1315) x1327)
+(or (not x1327) x1323)
+(or (not x1327) x1321)
+(or (not x1327) x1315)
+(or (not x1328) (not x1323) (not x1321) (not x1292) x1329)
+(or (not x1329) x1328)
+(or (not x1329) x1323)
+(or (not x1329) x1321)
+(or (not x1329) x1292)
+(or x1286 (not x1300))
+(or x1286 (not x1329))
+(or x1286 (not x1327))
+(or x1286 (not x1326))
+(or x1300 x1329 x1327 x1326 (not x1286))
+(or (not x1286) x1287 (not x1288) (not x456) (not x1290) x1330)
+(or (not x1330) x1286)
+(or (not x1330) (not x1287))
+(or (not x1330) x1288)
+(or (not x1330) x456)
+(or (not x1330) x1290)
+(or (not x1323) (not x1315) x1331)
+(or (not x1331) x1323)
+(or (not x1331) x1315)
+(or (not x1328) (not x1323) (not x1292) x1332)
+(or (not x1332) x1328)
+(or (not x1332) x1323)
+(or (not x1332) x1292)
+(or (not x1319) (not x1328) (not x1323) (not x1300) x1333)
+(or (not x1333) x1319)
+(or (not x1333) x1328)
+(or (not x1333) x1323)
+(or (not x1333) x1300)
+(or x1296 (not x1307))
+(or x1296 (not x1333))
+(or x1296 (not x1332))
+(or x1296 (not x1331))
+(or x1307 x1333 x1332 x1331 (not x1296))
+(or (not x1296) x1297 (not x1298) (not x456) (not x1290) x1334)
+(or (not x1334) x1296)
+(or (not x1334) (not x1297))
+(or (not x1334) x1298)
+(or (not x1334) x456)
+(or (not x1334) x1290)
+(or (not x1328) (not x1292) x1335)
+(or (not x1335) x1328)
+(or (not x1335) x1292)
+(or (not x1319) (not x1328) (not x1300) x1336)
+(or (not x1336) x1319)
+(or (not x1336) x1328)
+(or (not x1336) x1300)
+(or (not x1321) (not x1319) (not x1328) (not x1307) x1337)
+(or (not x1337) x1321)
+(or (not x1337) x1319)
+(or (not x1337) x1328)
+(or (not x1337) x1307)
+(or x1303 (not x1315))
+(or x1303 (not x1337))
+(or x1303 (not x1336))
+(or x1303 (not x1335))
+(or x1315 x1337 x1336 x1335 (not x1303))
+(or (not x1303) x1304 (not x1305) (not x456) (not x1290) x1338)
+(or (not x1338) x1303)
+(or (not x1338) (not x1304))
+(or (not x1338) x1305)
+(or (not x1338) x456)
+(or (not x1338) x1290)
+(or x1339 x466)
+(or x1339 x462)
+(or x1339 x457)
+(or x1339 x454)
+(or (not x466) (not x462) (not x457) (not x454) (not x1339))
+(or (not x1290) (not x1339) x750)
+(or (not x750) x1290)
+(or (not x750) x1339)
+(or x1340 x917)
+(or x1340 x1097)
+(or (not x917) (not x1097) (not x1340))
+(or x930 x1097 x1341)
+(or (not x1341) (not x930))
+(or (not x1341) (not x1097))
+(or x1342 x926)
+(or x1342 (not x1341))
+(or (not x926) x1341 (not x1342))
+(or x940 x930 x1097 x1343)
+(or (not x1343) (not x940))
+(or (not x1343) (not x930))
+(or (not x1343) (not x1097))
+(or x1344 x937)
+(or x1344 (not x1343))
+(or (not x937) x1343 (not x1344))
+(or x948 x940 x930 x1097 x1345)
+(or (not x1345) (not x948))
+(or (not x1345) (not x940))
+(or (not x1345) (not x930))
+(or (not x1345) (not x1097))
+(or x1346 x946)
+(or x1346 (not x1345))
+(or (not x946) x1345 (not x1346))
+(or x1347 x923)
+(or x1347 x1031)
+(or (not x923) (not x1031) (not x1347))
+(or x956 x1031 x1348)
+(or (not x1348) (not x956))
+(or (not x1348) (not x1031))
+(or x1349 x935)
+(or x1349 (not x1348))
+(or (not x935) x1348 (not x1349))
+(or x964 x956 x1031 x1350)
+(or (not x1350) (not x964))
+(or (not x1350) (not x956))
+(or (not x1350) (not x1031))
+(or x1351 x944)
+(or x1351 (not x1350))
+(or (not x944) x1350 (not x1351))
+(or x972 x964 x956 x1031 x1352)
+(or (not x1352) (not x972))
+(or (not x1352) (not x964))
+(or (not x1352) (not x956))
+(or (not x1352) (not x1031))
+(or x1353 x970)
+(or x1353 (not x1352))
+(or (not x970) x1352 (not x1353))
+(or x1354 x952)
+(or x1354 x980)
+(or (not x952) (not x980) (not x1354))
+(or x988 x980 x1355)
+(or (not x1355) (not x988))
+(or (not x1355) (not x980))
+(or x1356 x960)
+(or x1356 (not x1355))
+(or (not x960) x1355 (not x1356))
+(or x996 x988 x980 x1357)
+(or (not x1357) (not x996))
+(or (not x1357) (not x988))
+(or (not x1357) (not x980))
+(or x1358 x968)
+(or x1358 (not x1357))
+(or (not x968) x1357 (not x1358))
+(or x1003 x996 x988 x980 x1359)
+(or (not x1359) (not x1003))
+(or (not x1359) (not x996))
+(or (not x1359) (not x988))
+(or (not x1359) (not x980))
+(or x1360 x976)
+(or x1360 (not x1359))
+(or (not x976) x1359 (not x1360))
+(or x1361 x984)
+(or x1361 x1038)
+(or (not x984) (not x1038) (not x1361))
+(or x1010 x1038 x1362)
+(or (not x1362) (not x1010))
+(or (not x1362) (not x1038))
+(or x1363 x992)
+(or x1363 (not x1362))
+(or (not x992) x1362 (not x1363))
+(or x1017 x1010 x1038 x1364)
+(or (not x1364) (not x1017))
+(or (not x1364) (not x1010))
+(or (not x1364) (not x1038))
+(or x1365 x1000)
+(or x1365 (not x1364))
+(or (not x1000) x1364 (not x1365))
+(or x1024 x1017 x1010 x1038 x1366)
+(or (not x1366) (not x1024))
+(or (not x1366) (not x1017))
+(or (not x1366) (not x1010))
+(or (not x1366) (not x1038))
+(or x1367 x1022)
+(or x1367 (not x1366))
+(or (not x1022) x1366 (not x1367))
+(or (not x1367) (not x1365) (not x1363) (not x1361) (not x1360) (not x1358) (not x1356) (not x1354) (not x1353) (not x1351) (not x1349) (not x1347) (not x1346) (not x1344) (not x1342) (not x1340) x1107)
+(or (not x1107) x1367)
+(or (not x1107) x1365)
+(or (not x1107) x1363)
+(or (not x1107) x1361)
+(or (not x1107) x1360)
+(or (not x1107) x1358)
+(or (not x1107) x1356)
+(or (not x1107) x1354)
+(or (not x1107) x1353)
+(or (not x1107) x1351)
+(or (not x1107) x1349)
+(or (not x1107) x1347)
+(or (not x1107) x1346)
+(or (not x1107) x1344)
+(or (not x1107) x1342)
+(or (not x1107) x1340)
+(or (not x1367) (not x1365) (not x1363) (not x1361) (not x1360) (not x1358) (not x1356) (not x1354) (not x1353) (not x1351) (not x1349) (not x1347) (not x1346) (not x1344) (not x1342) (not x1340) (not x1368) (not x1369) (not x1370) (not x1371) (not x1372) (not x1373) (not x1374) (not x1375) (not x1376) (not x1377) (not x1378) (not x1379) (not x1380) (not x1381) (not x1382) (not x1383) x749)
+(or (not x749) x1367)
+(or (not x749) x1365)
+(or (not x749) x1363)
+(or (not x749) x1361)
+(or (not x749) x1360)
+(or (not x749) x1358)
+(or (not x749) x1356)
+(or (not x749) x1354)
+(or (not x749) x1353)
+(or (not x749) x1351)
+(or (not x749) x1349)
+(or (not x749) x1347)
+(or (not x749) x1346)
+(or (not x749) x1344)
+(or (not x749) x1342)
+(or (not x749) x1340)
+(or (not x749) x1368)
+(or (not x749) x1369)
+(or (not x749) x1370)
+(or (not x749) x1371)
+(or (not x749) x1372)
+(or (not x749) x1373)
+(or (not x749) x1374)
+(or (not x749) x1375)
+(or (not x749) x1376)
+(or (not x749) x1377)
+(or (not x749) x1378)
+(or (not x749) x1379)
+(or (not x749) x1380)
+(or (not x749) x1381)
+(or (not x749) x1382)
+(or (not x749) x1383)
+(or x1282 x480)
+(or x1282 (not x749))
+(or x1282 (not x750))
+(or (not x480) x749 x750 (not x1282))
+(or (not x1282) (not x480) x1384)
+(or (not x1384) x1282)
+(or (not x1384) x480)
+(or x480 x453 x456 x1385)
+(or (not x1385) (not x480))
+(or (not x1385) (not x453))
+(or (not x1385) (not x456))
+(or x1386 (not x1385))
+(or x1386 (not x1384))
+(or x1385 x1384 (not x1386))
+(or x1383 x473)
+(or x1383 x740)
+(or (not x473) (not x740) (not x1383))
+(or x487 x740 x1387)
+(or (not x1387) (not x487))
+(or (not x1387) (not x740))
+(or x1382 x483)
+(or x1382 (not x1387))
+(or (not x483) x1387 (not x1382))
+(or x499 x487 x740 x1388)
+(or (not x1388) (not x499))
+(or (not x1388) (not x487))
+(or (not x1388) (not x740))
+(or x1381 x496)
+(or x1381 (not x1388))
+(or (not x496) x1388 (not x1381))
+(or x507 x499 x487 x740 x1389)
+(or (not x1389) (not x507))
+(or (not x1389) (not x499))
+(or (not x1389) (not x487))
+(or (not x1389) (not x740))
+(or x1380 x505)
+(or x1380 (not x1389))
+(or (not x505) x1389 (not x1380))
+(or x1379 x479)
+(or x1379 x611)
+(or (not x479) (not x611) (not x1379))
+(or x515 x611 x1390)
+(or (not x1390) (not x515))
+(or (not x1390) (not x611))
+(or x1378 x494)
+(or x1378 (not x1390))
+(or (not x494) x1390 (not x1378))
+(or x523 x515 x611 x1391)
+(or (not x1391) (not x523))
+(or (not x1391) (not x515))
+(or (not x1391) (not x611))
+(or x1377 x503)
+(or x1377 (not x1391))
+(or (not x503) x1391 (not x1377))
+(or x531 x523 x515 x611 x1392)
+(or (not x1392) (not x531))
+(or (not x1392) (not x523))
+(or (not x1392) (not x515))
+(or (not x1392) (not x611))
+(or x1376 x529)
+(or x1376 (not x1392))
+(or (not x529) x1392 (not x1376))
+(or x1375 x511)
+(or x1375 x646)
+(or (not x511) (not x646) (not x1375))
+(or x539 x646 x1393)
+(or (not x1393) (not x539))
+(or (not x1393) (not x646))
+(or x1374 x519)
+(or x1374 (not x1393))
+(or (not x519) x1393 (not x1374))
+(or x547 x539 x646 x1394)
+(or (not x1394) (not x547))
+(or (not x1394) (not x539))
+(or (not x1394) (not x646))
+(or x1373 x527)
+(or x1373 (not x1394))
+(or (not x527) x1394 (not x1373))
+(or x555 x547 x539 x646 x1395)
+(or (not x1395) (not x555))
+(or (not x1395) (not x547))
+(or (not x1395) (not x539))
+(or (not x1395) (not x646))
+(or x1372 x553)
+(or x1372 (not x1395))
+(or (not x553) x1395 (not x1372))
+(or x1371 x535)
+(or x1371 x681)
+(or (not x535) (not x681) (not x1371))
+(or x562 x681 x1396)
+(or (not x1396) (not x562))
+(or (not x1396) (not x681))
+(or x1370 x543)
+(or x1370 (not x1396))
+(or (not x543) x1396 (not x1370))
+(or x569 x562 x681 x1397)
+(or (not x1397) (not x569))
+(or (not x1397) (not x562))
+(or (not x1397) (not x681))
+(or x1369 x551)
+(or x1369 (not x1397))
+(or (not x551) x1397 (not x1369))
+(or x576 x569 x562 x681 x1398)
+(or (not x1398) (not x576))
+(or (not x1398) (not x569))
+(or (not x1398) (not x562))
+(or (not x1398) (not x681))
+(or x1368 x574)
+(or x1368 (not x1398))
+(or (not x574) x1398 (not x1368))
+(or (not x1368) (not x1369) (not x1370) (not x1371) (not x1372) (not x1373) (not x1374) (not x1375) (not x1376) (not x1377) (not x1378) (not x1379) (not x1380) (not x1381) (not x1382) (not x1383) x748)
+(or (not x748) x1368)
+(or (not x748) x1369)
+(or (not x748) x1370)
+(or (not x748) x1371)
+(or (not x748) x1372)
+(or (not x748) x1373)
+(or (not x748) x1374)
+(or (not x748) x1375)
+(or (not x748) x1376)
+(or (not x748) x1377)
+(or (not x748) x1378)
+(or (not x748) x1379)
+(or (not x748) x1380)
+(or (not x748) x1381)
+(or (not x748) x1382)
+(or (not x748) x1383)
+(or x931 (not x748))
+(or x931 (not x909))
+(or x748 x909 (not x931))
+(or (not x480) (not x458) (not x490) (not x910) (not x931) x1094)
+(or (not x1094) x480)
+(or (not x1094) x458)
+(or (not x1094) x490)
+(or (not x1094) x910)
+(or (not x1094) x931)
+(or x1399 (not x1311))
+(or x1399 x1312)
+(or x1399 (not x1312))
+(or x1311 (not x1312) x1312 (not x1399))
+(or x1400 (not x1401))
+(or x1400 x1402)
+(or x1401 (not x1402) (not x1400))
+(or (not x1400) (not x1399) x1403)
+(or (not x1403) x1400)
+(or (not x1403) x1399)
+(or x1404 (not x1287))
+(or x1404 x1288)
+(or x1404 (not x1288))
+(or x1287 (not x1288) x1288 (not x1404))
+(or x1405 (not x1406))
+(or x1405 x1407)
+(or x1406 (not x1407) (not x1405))
+(or (not x1405) (not x1404) x1408)
+(or (not x1408) x1405)
+(or (not x1408) x1404)
+(or x1409 (not x1297))
+(or x1409 x1298)
+(or x1409 (not x1298))
+(or x1297 (not x1298) x1298 (not x1409))
+(or x1410 (not x1411))
+(or x1410 x1412)
+(or x1411 (not x1412) (not x1410))
+(or (not x1410) (not x1409) x1413)
+(or (not x1413) x1410)
+(or (not x1413) x1409)
+(or x1414 (not x1304))
+(or x1414 x1305)
+(or x1414 (not x1305))
+(or x1304 (not x1305) x1305 (not x1414))
+(or x1415 (not x1416))
+(or x1415 x1417)
+(or x1416 (not x1417) (not x1415))
+(or (not x1415) (not x1414) x1418)
+(or (not x1418) x1415)
+(or (not x1418) x1414)
+(or (not x466) (not x462) (not x457) (not x454) x1419)
+(or (not x1419) x466)
+(or (not x1419) x462)
+(or (not x1419) x457)
+(or (not x1419) x454)
+(or x1328 (not x1311))
+(or x1328 x1312)
+(or x1311 (not x1312) (not x1328))
+(or x1319 (not x1287))
+(or x1319 x1288)
+(or x1287 (not x1288) (not x1319))
+(or x1321 (not x1297))
+(or x1321 x1298)
+(or x1297 (not x1298) (not x1321))
+(or x1323 (not x1304))
+(or x1323 x1305)
+(or x1304 (not x1305) (not x1323))
+(or (not x1323) (not x1321) (not x1319) (not x1328) x1314)
+(or (not x1314) x1323)
+(or (not x1314) x1321)
+(or (not x1314) x1319)
+(or (not x1314) x1328)
+(or x490 (not x1314))
+(or x490 (not x1419))
+(or x1314 x1419 (not x490))
+(or (not x473) (not x740) x1420)
+(or (not x1420) x473)
+(or (not x1420) x740)
+(or x1421 (not x487))
+(or x1421 (not x740))
+(or x487 x740 (not x1421))
+(or (not x483) (not x1421) x1422)
+(or (not x1422) x483)
+(or (not x1422) x1421)
+(or x1423 (not x499))
+(or x1423 (not x487))
+(or x1423 (not x740))
+(or x499 x487 x740 (not x1423))
+(or (not x496) (not x1423) x1424)
+(or (not x1424) x496)
+(or (not x1424) x1423)
+(or x1425 (not x507))
+(or x1425 (not x499))
+(or x1425 (not x487))
+(or x1425 (not x740))
+(or x507 x499 x487 x740 (not x1425))
+(or (not x505) (not x1425) x1426)
+(or (not x1426) x505)
+(or (not x1426) x1425)
+(or (not x479) (not x611) x1427)
+(or (not x1427) x479)
+(or (not x1427) x611)
+(or x1428 (not x515))
+(or x1428 (not x611))
+(or x515 x611 (not x1428))
+(or (not x494) (not x1428) x1429)
+(or (not x1429) x494)
+(or (not x1429) x1428)
+(or x1430 (not x523))
+(or x1430 (not x515))
+(or x1430 (not x611))
+(or x523 x515 x611 (not x1430))
+(or (not x503) (not x1430) x1431)
+(or (not x1431) x503)
+(or (not x1431) x1430)
+(or x1432 (not x531))
+(or x1432 (not x523))
+(or x1432 (not x515))
+(or x1432 (not x611))
+(or x531 x523 x515 x611 (not x1432))
+(or (not x529) (not x1432) x1433)
+(or (not x1433) x529)
+(or (not x1433) x1432)
+(or (not x511) (not x646) x1434)
+(or (not x1434) x511)
+(or (not x1434) x646)
+(or x1435 (not x539))
+(or x1435 (not x646))
+(or x539 x646 (not x1435))
+(or (not x519) (not x1435) x1436)
+(or (not x1436) x519)
+(or (not x1436) x1435)
+(or x1437 (not x547))
+(or x1437 (not x539))
+(or x1437 (not x646))
+(or x547 x539 x646 (not x1437))
+(or (not x527) (not x1437) x1438)
+(or (not x1438) x527)
+(or (not x1438) x1437)
+(or x1439 (not x555))
+(or x1439 (not x547))
+(or x1439 (not x539))
+(or x1439 (not x646))
+(or x555 x547 x539 x646 (not x1439))
+(or (not x553) (not x1439) x1440)
+(or (not x1440) x553)
+(or (not x1440) x1439)
+(or (not x535) (not x681) x1441)
+(or (not x1441) x535)
+(or (not x1441) x681)
+(or x1442 (not x562))
+(or x1442 (not x681))
+(or x562 x681 (not x1442))
+(or (not x543) (not x1442) x1443)
+(or (not x1443) x543)
+(or (not x1443) x1442)
+(or x1444 (not x569))
+(or x1444 (not x562))
+(or x1444 (not x681))
+(or x569 x562 x681 (not x1444))
+(or (not x551) (not x1444) x1445)
+(or (not x1445) x551)
+(or (not x1445) x1444)
+(or x1446 (not x576))
+(or x1446 (not x569))
+(or x1446 (not x562))
+(or x1446 (not x681))
+(or x576 x569 x562 x681 (not x1446))
+(or (not x574) (not x1446) x1447)
+(or (not x1447) x574)
+(or (not x1447) x1446)
+(or x489 (not x1447))
+(or x489 (not x1445))
+(or x489 (not x1443))
+(or x489 (not x1441))
+(or x489 (not x1440))
+(or x489 (not x1438))
+(or x489 (not x1436))
+(or x489 (not x1434))
+(or x489 (not x1433))
+(or x489 (not x1431))
+(or x489 (not x1429))
+(or x489 (not x1427))
+(or x489 (not x1426))
+(or x489 (not x1424))
+(or x489 (not x1422))
+(or x489 (not x1420))
+(or x1447 x1445 x1443 x1441 x1440 x1438 x1436 x1434 x1433 x1431 x1429 x1427 x1426 x1424 x1422 x1420 (not x489))
+(or (not x917) (not x1097) x1448)
+(or (not x1448) x917)
+(or (not x1448) x1097)
+(or x1449 (not x930))
+(or x1449 (not x1097))
+(or x930 x1097 (not x1449))
+(or (not x926) (not x1449) x1450)
+(or (not x1450) x926)
+(or (not x1450) x1449)
+(or x1451 (not x940))
+(or x1451 (not x930))
+(or x1451 (not x1097))
+(or x940 x930 x1097 (not x1451))
+(or (not x937) (not x1451) x1452)
+(or (not x1452) x937)
+(or (not x1452) x1451)
+(or x1453 (not x948))
+(or x1453 (not x940))
+(or x1453 (not x930))
+(or x1453 (not x1097))
+(or x948 x940 x930 x1097 (not x1453))
+(or (not x946) (not x1453) x1454)
+(or (not x1454) x946)
+(or (not x1454) x1453)
+(or (not x923) (not x1031) x1455)
+(or (not x1455) x923)
+(or (not x1455) x1031)
+(or x1456 (not x956))
+(or x1456 (not x1031))
+(or x956 x1031 (not x1456))
+(or (not x935) (not x1456) x1457)
+(or (not x1457) x935)
+(or (not x1457) x1456)
+(or x1458 (not x964))
+(or x1458 (not x956))
+(or x1458 (not x1031))
+(or x964 x956 x1031 (not x1458))
+(or (not x944) (not x1458) x1459)
+(or (not x1459) x944)
+(or (not x1459) x1458)
+(or x1460 (not x972))
+(or x1460 (not x964))
+(or x1460 (not x956))
+(or x1460 (not x1031))
+(or x972 x964 x956 x1031 (not x1460))
+(or (not x970) (not x1460) x1461)
+(or (not x1461) x970)
+(or (not x1461) x1460)
+(or (not x952) (not x980) x1462)
+(or (not x1462) x952)
+(or (not x1462) x980)
+(or x1463 (not x988))
+(or x1463 (not x980))
+(or x988 x980 (not x1463))
+(or (not x960) (not x1463) x1464)
+(or (not x1464) x960)
+(or (not x1464) x1463)
+(or x1465 (not x996))
+(or x1465 (not x988))
+(or x1465 (not x980))
+(or x996 x988 x980 (not x1465))
+(or (not x968) (not x1465) x1466)
+(or (not x1466) x968)
+(or (not x1466) x1465)
+(or x1467 (not x1003))
+(or x1467 (not x996))
+(or x1467 (not x988))
+(or x1467 (not x980))
+(or x1003 x996 x988 x980 (not x1467))
+(or (not x976) (not x1467) x1468)
+(or (not x1468) x976)
+(or (not x1468) x1467)
+(or (not x984) (not x1038) x1469)
+(or (not x1469) x984)
+(or (not x1469) x1038)
+(or x1470 (not x1010))
+(or x1470 (not x1038))
+(or x1010 x1038 (not x1470))
+(or (not x992) (not x1470) x1471)
+(or (not x1471) x992)
+(or (not x1471) x1470)
+(or x1472 (not x1017))
+(or x1472 (not x1010))
+(or x1472 (not x1038))
+(or x1017 x1010 x1038 (not x1472))
+(or (not x1000) (not x1472) x1473)
+(or (not x1473) x1000)
+(or (not x1473) x1472)
+(or x1474 (not x1024))
+(or x1474 (not x1017))
+(or x1474 (not x1010))
+(or x1474 (not x1038))
+(or x1024 x1017 x1010 x1038 (not x1474))
+(or (not x1022) (not x1474) x1475)
+(or (not x1475) x1022)
+(or (not x1475) x1474)
+(or x910 (not x1475))
+(or x910 (not x1473))
+(or x910 (not x1471))
+(or x910 (not x1469))
+(or x910 (not x1468))
+(or x910 (not x1466))
+(or x910 (not x1464))
+(or x910 (not x1462))
+(or x910 (not x1461))
+(or x910 (not x1459))
+(or x910 (not x1457))
+(or x910 (not x1455))
+(or x910 (not x1454))
+(or x910 (not x1452))
+(or x910 (not x1450))
+(or x910 (not x1448))
+(or x1475 x1473 x1471 x1469 x1468 x1466 x1464 x1462 x1461 x1459 x1457 x1455 x1454 x1452 x1450 x1448 (not x910))
+(or x458 (not x1475))
+(or x458 (not x1473))
+(or x458 (not x1471))
+(or x458 (not x1469))
+(or x458 (not x1468))
+(or x458 (not x1466))
+(or x458 (not x1464))
+(or x458 (not x1462))
+(or x458 (not x1461))
+(or x458 (not x1459))
+(or x458 (not x1457))
+(or x458 (not x1455))
+(or x458 (not x1454))
+(or x458 (not x1452))
+(or x458 (not x1450))
+(or x458 (not x1448))
+(or x458 (not x1447))
+(or x458 (not x1445))
+(or x458 (not x1443))
+(or x458 (not x1441))
+(or x458 (not x1440))
+(or x458 (not x1438))
+(or x458 (not x1436))
+(or x458 (not x1434))
+(or x458 (not x1433))
+(or x458 (not x1431))
+(or x458 (not x1429))
+(or x458 (not x1427))
+(or x458 (not x1426))
+(or x458 (not x1424))
+(or x458 (not x1422))
+(or x458 (not x1420))
+(or x1475 x1473 x1471 x1469 x1468 x1466 x1464 x1462 x1461 x1459 x1457 x1455 x1454 x1452 x1450 x1448 x1447 x1445 x1443 x1441 x1440 x1438 x1436 x1434 x1433 x1431 x1429 x1427 x1426 x1424 x1422 x1420 (not x458))
+(or (not x480) (not x480) (not x458) (not x490) x1476)
+(or (not x1476) x480)
+(or (not x1476) x480)
+(or (not x1476) x458)
+(or (not x1476) x490)
+(or x1477 (not x456))
+(or x1477 (not x1478))
+(or x456 x1478 (not x1477))
+(or x1311 (not x1312) x1401)
+(or (not x1401) (not x1311))
+(or (not x1401) x1312)
+(or x1287 (not x1288) x1406)
+(or (not x1406) (not x1287))
+(or (not x1406) x1288)
+(or x1297 (not x1298) x1411)
+(or (not x1411) (not x1297))
+(or (not x1411) x1298)
+(or x1304 (not x1305) x1416)
+(or (not x1416) (not x1304))
+(or (not x1416) x1305)
+(or x1290 (not x1416))
+(or x1290 (not x1411))
+(or x1290 (not x1406))
+(or x1290 (not x1401))
+(or x1416 x1411 x1406 x1401 (not x1290))
+(or (not x456) (not x1290) x1479)
+(or (not x1479) x456)
+(or (not x1479) x1290)
+(or x1480 (not x453))
+(or x1480 (not x1479))
+(or x453 x1479 (not x1480))
+(or (not x7) (not x439))
+(or (not x7) x438)
+(or (not x7) (not x437))
+(or (not x7) x436)
+(or (not x7) (not x435))
+(or (not x1481) (not x439))
+(or (not x1481) x438)
+(or (not x1481) (not x437))
+(or (not x1481) (not x436))
+(or (not x1481) x435)
+(or x439 (not x438) x437 x436 x435 x450)
+(or (not x450) (not x439))
+(or (not x450) x438)
+(or (not x450) (not x437))
+(or (not x450) (not x436))
+(or (not x450) (not x435))
+(or x439 x438 (not x437) (not x436) (not x435) x443)
+(or (not x443) (not x439))
+(or (not x443) (not x438))
+(or (not x443) x437)
+(or (not x443) x436)
+(or (not x443) x435)
+(or x439 x438 (not x437) (not x436) x435 x442)
+(or (not x442) (not x439))
+(or (not x442) (not x438))
+(or (not x442) x437)
+(or (not x442) x436)
+(or (not x442) (not x435))
+(or x439 x438 (not x437) x436 (not x435) x434)
+(or (not x434) (not x439))
+(or (not x434) (not x438))
+(or (not x434) x437)
+(or (not x434) (not x436))
+(or (not x434) x435)
+(or x439 x438 (not x437) x436 x435 x433)
+(or (not x433) (not x439))
+(or (not x433) (not x438))
+(or (not x433) x437)
+(or (not x433) (not x436))
+(or (not x433) (not x435))
+(or x439 x438 x437 (not x436) (not x435) x432)
+(or (not x432) (not x439))
+(or (not x432) (not x438))
+(or (not x432) (not x437))
+(or (not x432) x436)
+(or (not x432) x435)
+(or x439 x438 x437 (not x436) x435 x431)
+(or (not x431) (not x439))
+(or (not x431) (not x438))
+(or (not x431) (not x437))
+(or (not x431) x436)
+(or (not x431) (not x435))
+(or x439 x438 x437 x436 (not x435) x430)
+(or (not x430) (not x439))
+(or (not x430) (not x438))
+(or (not x430) (not x437))
+(or (not x430) (not x436))
+(or (not x430) x435)
+(or (not x1482) (not x439))
+(or (not x1482) (not x438))
+(or (not x1482) (not x437))
+(or (not x1482) (not x436))
+(or (not x1482) (not x435))
+(or x1483 (not x1482))
+(or x1483 (not x430))
+(or x1483 (not x431))
+(or x1483 (not x432))
+(or x1483 (not x433))
+(or x1483 (not x434))
+(or x1483 (not x442))
+(or x1483 (not x443))
+(or x1483 (not x450))
+(or x1483 (not x1481))
+(or x1482 x430 x431 x432 x433 x434 x442 x443 x450 x1481 (not x1483))
+(or (not x1484) (not x1485) (not x1486) (not x1487) (not x1488) (not x1489) (not x1490) (not x1491) (not x1492) (not x1493) x1494)
+(or (not x1494) x1484)
+(or (not x1494) x1485)
+(or (not x1494) x1486)
+(or (not x1494) x1487)
+(or (not x1494) x1488)
+(or (not x1494) x1489)
+(or (not x1494) x1490)
+(or (not x1494) x1491)
+(or (not x1494) x1492)
+(or (not x1494) x1493)
+(or x1489 (not x1495))
+(or x1489 (not x1496))
+(or x1489 (not x1497))
+(or x1489 (not x1498))
+(or x1489 (not x1499))
+(or x1489 (not x1504))
+(or x1489 (not x1503))
+(or x1489 x1502)
+(or x1489 x1501)
+(or x1489 (not x1500))
+(or x1495 x1496 x1497 x1498 x1499 x1504 x1503 (not x1502) (not x1501) x1500 (not x1489))
+(or (not x1484) (not x1485) (not x1486) (not x1487) (not x1488) (not x1489) (not x1493) x1505)
+(or (not x1505) x1484)
+(or (not x1505) x1485)
+(or (not x1505) x1486)
+(or (not x1505) x1487)
+(or (not x1505) x1488)
+(or (not x1505) x1489)
+(or (not x1505) x1493)
+(or x1485 (not x1495))
+(or x1485 (not x1504))
+(or x1485 (not x1503))
+(or x1485 (not x1502))
+(or x1485 x1501)
+(or x1485 (not x1500))
+(or x1495 x1504 x1503 x1502 (not x1501) x1500 (not x1485))
+(or (not x1484) (not x1485) (not x1490) (not x1491) (not x1492) (not x1493) x1506)
+(or (not x1506) x1484)
+(or (not x1506) x1485)
+(or (not x1506) x1490)
+(or (not x1506) x1491)
+(or (not x1506) x1492)
+(or (not x1506) x1493)
+(or x1491 (not x1495))
+(or x1491 (not x1496))
+(or x1491 (not x1497))
+(or x1491 (not x1498))
+(or x1491 (not x1499))
+(or x1491 (not x1507))
+(or x1491 (not x1508))
+(or x1491 (not x1504))
+(or x1491 x1503)
+(or x1491 (not x1502))
+(or x1491 (not x1501))
+(or x1491 (not x1500))
+(or x1495 x1496 x1497 x1498 x1499 x1507 x1508 x1504 (not x1503) x1502 x1501 x1500 (not x1491))
+(or x1487 (not x1495))
+(or x1487 (not x1496))
+(or x1487 (not x1497))
+(or x1487 (not x1504))
+(or x1487 (not x1503))
+(or x1487 x1502)
+(or x1487 (not x1501))
+(or x1487 (not x1500))
+(or x1495 x1496 x1497 x1504 x1503 (not x1502) x1501 x1500 (not x1487))
+(or (not x1486) (not x1487) (not x1490) (not x1491) (not x1493) x1509)
+(or (not x1509) x1486)
+(or (not x1509) x1487)
+(or (not x1509) x1490)
+(or (not x1509) x1491)
+(or (not x1509) x1493)
+(or x1510 x1511)
+(or x1510 (not x1512))
+(or (not x1511) x1512 (not x1510))
+(or x1504 (not x1503) x1502 x1501 (not x1500) (not x1513) (not x1510) x1514)
+(or (not x1514) (not x1504))
+(or (not x1514) x1503)
+(or (not x1514) (not x1502))
+(or (not x1514) (not x1501))
+(or (not x1514) x1500)
+(or (not x1514) x1513)
+(or (not x1514) x1510)
+(or x1493 (not x1495))
+(or x1493 (not x1496))
+(or x1493 (not x1497))
+(or x1493 (not x1498))
+(or x1493 (not x1499))
+(or x1493 (not x1507))
+(or x1493 (not x1508))
+(or x1493 (not x1515))
+(or x1493 (not x1514))
+(or x1495 x1496 x1497 x1498 x1499 x1507 x1508 x1515 x1514 (not x1493))
+(or (not x1511) x1512 x1516)
+(or (not x1516) x1511)
+(or (not x1516) (not x1512))
+(or x1492 (not x1495))
+(or x1492 (not x1496))
+(or x1492 (not x1497))
+(or x1492 (not x1498))
+(or x1492 (not x1499))
+(or x1492 (not x1507))
+(or x1492 (not x1508))
+(or x1492 (not x1515))
+(or x1492 (not x1504))
+(or x1492 x1503)
+(or x1492 (not x1502))
+(or x1492 (not x1501))
+(or x1492 x1500)
+(or x1492 x1513)
+(or x1492 (not x1516))
+(or x1495 x1496 x1497 x1498 x1499 x1507 x1508 x1515 x1504 (not x1503) x1502 x1501 (not x1500) (not x1513) x1516 (not x1492))
+(or x1490 (not x1495))
+(or x1490 (not x1496))
+(or x1490 (not x1497))
+(or x1490 (not x1498))
+(or x1490 (not x1499))
+(or x1490 (not x1507))
+(or x1490 (not x1504))
+(or x1490 (not x1503))
+(or x1490 x1502)
+(or x1490 x1501)
+(or x1490 x1500)
+(or x1495 x1496 x1497 x1498 x1499 x1507 x1504 x1503 (not x1502) (not x1501) (not x1500) (not x1490))
+(or x1488 (not x1495))
+(or x1488 (not x1496))
+(or x1488 (not x1497))
+(or x1488 (not x1498))
+(or x1488 (not x1504))
+(or x1488 (not x1503))
+(or x1488 x1502)
+(or x1488 (not x1501))
+(or x1488 x1500)
+(or x1495 x1496 x1497 x1498 x1504 x1503 (not x1502) x1501 (not x1500) (not x1488))
+(or x1486 (not x1495))
+(or x1486 (not x1496))
+(or x1486 (not x1504))
+(or x1486 (not x1503))
+(or x1486 (not x1502))
+(or x1486 x1501)
+(or x1486 x1500)
+(or x1495 x1496 x1504 x1503 x1502 (not x1501) (not x1500) (not x1486))
+(or x1484 (not x1504))
+(or x1484 (not x1503))
+(or x1484 (not x1502))
+(or x1484 (not x1501))
+(or x1484 x1500)
+(or x1504 x1503 x1502 x1501 (not x1500) (not x1484))
+(or (not x1484) (not x1486) (not x1488) (not x1490) (not x1492) (not x1493) x1517)
+(or (not x1517) x1484)
+(or (not x1517) x1486)
+(or (not x1517) x1488)
+(or (not x1517) x1490)
+(or (not x1517) x1492)
+(or (not x1517) x1493)
+(or x1518 (not x1519) x1520)
+(or (not x1520) (not x1518))
+(or (not x1520) x1519)
+(or (not x1521) (not x1522) (not x1523) x1524)
+(or (not x1524) x1521)
+(or (not x1524) x1522)
+(or (not x1524) x1523)
+(or x1525 (not x1524))
+(or x1525 (not x1520))
+(or x1524 x1520 (not x1525))
+(or x1518 (not x1522) x1526)
+(or (not x1526) (not x1518))
+(or (not x1526) x1522)
+(or (not x1521) (not x1527) (not x1523) x1528)
+(or (not x1528) x1521)
+(or (not x1528) x1527)
+(or (not x1528) x1523)
+(or x1529 (not x1528))
+(or x1529 (not x1526))
+(or x1528 x1526 (not x1529))
+(or x1518 (not x1527) x1530)
+(or (not x1530) (not x1518))
+(or (not x1530) x1527)
+(or (not x1521) (not x1531) (not x1523) x1532)
+(or (not x1532) x1521)
+(or (not x1532) x1531)
+(or (not x1532) x1523)
+(or x1533 (not x1532))
+(or x1533 (not x1530))
+(or x1532 x1530 (not x1533))
+(or x1518 (not x1531) x1534)
+(or (not x1534) (not x1518))
+(or (not x1534) x1531)
+(or (not x1521) (not x1523) x1535)
+(or (not x1535) x1521)
+(or (not x1535) x1523)
+(or x1536 (not x1535))
+(or x1536 (not x1534))
+(or x1535 x1534 (not x1536))
+(or x1537 (not x1521))
+(or x1537 (not x1518))
+(or x1521 x1518 (not x1537))
+(or (not x1538) (not x1539) (not x1540) (not x1541) (not x1542) x1543)
+(or (not x1543) x1538)
+(or (not x1543) x1539)
+(or (not x1543) x1540)
+(or (not x1543) x1541)
+(or (not x1543) x1542)
+(or (not x1544) (not x1540) (not x1539) (not x1545) (not x1546) x1547)
+(or (not x1547) x1544)
+(or (not x1547) x1540)
+(or (not x1547) x1539)
+(or (not x1547) x1545)
+(or (not x1547) x1546)
+(or (not x1548) (not x1540) (not x1539) (not x1545) (not x1549) x1550)
+(or (not x1550) x1548)
+(or (not x1550) x1540)
+(or (not x1550) x1539)
+(or (not x1550) x1545)
+(or (not x1550) x1549)
+(or (not x1551) (not x1552) (not x1539) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1556)
+(or (not x1556) x1551)
+(or (not x1556) x1552)
+(or (not x1556) x1539)
+(or (not x1556) x1553)
+(or (not x1556) x1554)
+(or (not x1556) x1545)
+(or (not x1556) x1523)
+(or (not x1556) x1555)
+(or x1557 (not x1556))
+(or x1557 (not x1550))
+(or x1557 (not x1547))
+(or x1557 (not x1543))
+(or x1556 x1550 x1547 x1543 (not x1557))
+(or (not x1548) (not x1539) (not x1540) (not x1541) (not x1542) x1558)
+(or (not x1558) x1548)
+(or (not x1558) x1539)
+(or (not x1558) x1540)
+(or (not x1558) x1541)
+(or (not x1558) x1542)
+(or (not x1559) (not x1540) (not x1539) (not x1545) (not x1546) x1560)
+(or (not x1560) x1559)
+(or (not x1560) x1540)
+(or (not x1560) x1539)
+(or (not x1560) x1545)
+(or (not x1560) x1546)
+(or (not x1561) (not x1540) (not x1539) (not x1545) (not x1549) x1562)
+(or (not x1562) x1561)
+(or (not x1562) x1540)
+(or (not x1562) x1539)
+(or (not x1562) x1545)
+(or (not x1562) x1549)
+(or (not x1563) (not x1564) (not x1539) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1565)
+(or (not x1565) x1563)
+(or (not x1565) x1564)
+(or (not x1565) x1539)
+(or (not x1565) x1553)
+(or (not x1565) x1554)
+(or (not x1565) x1545)
+(or (not x1565) x1523)
+(or (not x1565) x1555)
+(or x1566 (not x1565))
+(or x1566 (not x1562))
+(or x1566 (not x1560))
+(or x1566 (not x1558))
+(or x1565 x1562 x1560 x1558 (not x1566))
+(or (not x1561) (not x1539) (not x1540) (not x1541) (not x1542) x1567)
+(or (not x1567) x1561)
+(or (not x1567) x1539)
+(or (not x1567) x1540)
+(or (not x1567) x1541)
+(or (not x1567) x1542)
+(or (not x1568) (not x1540) (not x1539) (not x1545) (not x1546) x1569)
+(or (not x1569) x1568)
+(or (not x1569) x1540)
+(or (not x1569) x1539)
+(or (not x1569) x1545)
+(or (not x1569) x1546)
+(or (not x1570) (not x1540) (not x1539) (not x1545) (not x1549) x1571)
+(or (not x1571) x1570)
+(or (not x1571) x1540)
+(or (not x1571) x1539)
+(or (not x1571) x1545)
+(or (not x1571) x1549)
+(or (not x1570) (not x1572) (not x1539) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1573)
+(or (not x1573) x1570)
+(or (not x1573) x1572)
+(or (not x1573) x1539)
+(or (not x1573) x1553)
+(or (not x1573) x1554)
+(or (not x1573) x1545)
+(or (not x1573) x1523)
+(or (not x1573) x1555)
+(or x1574 (not x1573))
+(or x1574 (not x1571))
+(or x1574 (not x1569))
+(or x1574 (not x1567))
+(or x1573 x1571 x1569 x1567 (not x1574))
+(or (not x1544) (not x1539) (not x1540) (not x1541) (not x1542) x1575)
+(or (not x1575) x1544)
+(or (not x1575) x1539)
+(or (not x1575) x1540)
+(or (not x1575) x1541)
+(or (not x1575) x1542)
+(or (not x1576) (not x1540) (not x1539) (not x1545) (not x1546) x1577)
+(or (not x1577) x1576)
+(or (not x1577) x1540)
+(or (not x1577) x1539)
+(or (not x1577) x1545)
+(or (not x1577) x1546)
+(or (not x1559) (not x1540) (not x1539) (not x1545) (not x1549) x1578)
+(or (not x1578) x1559)
+(or (not x1578) x1540)
+(or (not x1578) x1539)
+(or (not x1578) x1545)
+(or (not x1578) x1549)
+(or (not x1579) (not x1580) (not x1539) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1581)
+(or (not x1581) x1579)
+(or (not x1581) x1580)
+(or (not x1581) x1539)
+(or (not x1581) x1553)
+(or (not x1581) x1554)
+(or (not x1581) x1545)
+(or (not x1581) x1523)
+(or (not x1581) x1555)
+(or x1582 (not x1581))
+(or x1582 (not x1578))
+(or x1582 (not x1577))
+(or x1582 (not x1575))
+(or x1581 x1578 x1577 x1575 (not x1582))
+(or (not x1559) (not x1539) (not x1540) (not x1541) (not x1542) x1583)
+(or (not x1583) x1559)
+(or (not x1583) x1539)
+(or (not x1583) x1540)
+(or (not x1583) x1541)
+(or (not x1583) x1542)
+(or (not x1584) (not x1540) (not x1539) (not x1545) (not x1546) x1585)
+(or (not x1585) x1584)
+(or (not x1585) x1540)
+(or (not x1585) x1539)
+(or (not x1585) x1545)
+(or (not x1585) x1546)
+(or (not x1568) (not x1540) (not x1539) (not x1545) (not x1549) x1586)
+(or (not x1586) x1568)
+(or (not x1586) x1540)
+(or (not x1586) x1539)
+(or (not x1586) x1545)
+(or (not x1586) x1549)
+(or (not x1587) (not x1588) (not x1539) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1589)
+(or (not x1589) x1587)
+(or (not x1589) x1588)
+(or (not x1589) x1539)
+(or (not x1589) x1553)
+(or (not x1589) x1554)
+(or (not x1589) x1545)
+(or (not x1589) x1523)
+(or (not x1589) x1555)
+(or x1590 (not x1589))
+(or x1590 (not x1586))
+(or x1590 (not x1585))
+(or x1590 (not x1583))
+(or x1589 x1586 x1585 x1583 (not x1590))
+(or (not x1568) (not x1539) (not x1540) (not x1541) (not x1542) x1591)
+(or (not x1591) x1568)
+(or (not x1591) x1539)
+(or (not x1591) x1540)
+(or (not x1591) x1541)
+(or (not x1591) x1542)
+(or (not x1592) (not x1540) (not x1539) (not x1545) (not x1546) x1593)
+(or (not x1593) x1592)
+(or (not x1593) x1540)
+(or (not x1593) x1539)
+(or (not x1593) x1545)
+(or (not x1593) x1546)
+(or (not x1594) (not x1540) (not x1539) (not x1545) (not x1549) x1595)
+(or (not x1595) x1594)
+(or (not x1595) x1540)
+(or (not x1595) x1539)
+(or (not x1595) x1545)
+(or (not x1595) x1549)
+(or (not x1594) (not x1596) (not x1539) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1597)
+(or (not x1597) x1594)
+(or (not x1597) x1596)
+(or (not x1597) x1539)
+(or (not x1597) x1553)
+(or (not x1597) x1554)
+(or (not x1597) x1545)
+(or (not x1597) x1523)
+(or (not x1597) x1555)
+(or x1598 (not x1597))
+(or x1598 (not x1595))
+(or x1598 (not x1593))
+(or x1598 (not x1591))
+(or x1597 x1595 x1593 x1591 (not x1598))
+(or (not x1576) (not x1539) (not x1540) (not x1541) (not x1542) x1599)
+(or (not x1599) x1576)
+(or (not x1599) x1539)
+(or (not x1599) x1540)
+(or (not x1599) x1541)
+(or (not x1599) x1542)
+(or (not x1600) (not x1540) (not x1539) (not x1545) (not x1546) x1601)
+(or (not x1601) x1600)
+(or (not x1601) x1540)
+(or (not x1601) x1539)
+(or (not x1601) x1545)
+(or (not x1601) x1546)
+(or (not x1584) (not x1540) (not x1539) (not x1545) (not x1549) x1602)
+(or (not x1602) x1584)
+(or (not x1602) x1540)
+(or (not x1602) x1539)
+(or (not x1602) x1545)
+(or (not x1602) x1549)
+(or (not x1603) (not x1604) (not x1539) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1605)
+(or (not x1605) x1603)
+(or (not x1605) x1604)
+(or (not x1605) x1539)
+(or (not x1605) x1553)
+(or (not x1605) x1554)
+(or (not x1605) x1545)
+(or (not x1605) x1523)
+(or (not x1605) x1555)
+(or x1606 (not x1605))
+(or x1606 (not x1602))
+(or x1606 (not x1601))
+(or x1606 (not x1599))
+(or x1605 x1602 x1601 x1599 (not x1606))
+(or (not x1584) (not x1539) (not x1540) (not x1541) (not x1542) x1607)
+(or (not x1607) x1584)
+(or (not x1607) x1539)
+(or (not x1607) x1540)
+(or (not x1607) x1541)
+(or (not x1607) x1542)
+(or (not x1608) (not x1540) (not x1539) (not x1545) (not x1546) x1609)
+(or (not x1609) x1608)
+(or (not x1609) x1540)
+(or (not x1609) x1539)
+(or (not x1609) x1545)
+(or (not x1609) x1546)
+(or (not x1592) (not x1540) (not x1539) (not x1545) (not x1549) x1610)
+(or (not x1610) x1592)
+(or (not x1610) x1540)
+(or (not x1610) x1539)
+(or (not x1610) x1545)
+(or (not x1610) x1549)
+(or (not x1611) (not x1612) (not x1539) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1613)
+(or (not x1613) x1611)
+(or (not x1613) x1612)
+(or (not x1613) x1539)
+(or (not x1613) x1553)
+(or (not x1613) x1554)
+(or (not x1613) x1545)
+(or (not x1613) x1523)
+(or (not x1613) x1555)
+(or x1614 (not x1613))
+(or x1614 (not x1610))
+(or x1614 (not x1609))
+(or x1614 (not x1607))
+(or x1613 x1610 x1609 x1607 (not x1614))
+(or (not x1592) (not x1539) (not x1540) (not x1541) (not x1542) x1615)
+(or (not x1615) x1592)
+(or (not x1615) x1539)
+(or (not x1615) x1540)
+(or (not x1615) x1541)
+(or (not x1615) x1542)
+(or (not x1616) (not x1540) (not x1539) (not x1545) (not x1546) x1617)
+(or (not x1617) x1616)
+(or (not x1617) x1540)
+(or (not x1617) x1539)
+(or (not x1617) x1545)
+(or (not x1617) x1546)
+(or (not x1618) (not x1540) (not x1539) (not x1545) (not x1549) x1619)
+(or (not x1619) x1618)
+(or (not x1619) x1540)
+(or (not x1619) x1539)
+(or (not x1619) x1545)
+(or (not x1619) x1549)
+(or (not x1618) (not x1620) (not x1539) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1621)
+(or (not x1621) x1618)
+(or (not x1621) x1620)
+(or (not x1621) x1539)
+(or (not x1621) x1553)
+(or (not x1621) x1554)
+(or (not x1621) x1545)
+(or (not x1621) x1523)
+(or (not x1621) x1555)
+(or x1622 (not x1621))
+(or x1622 (not x1619))
+(or x1622 (not x1617))
+(or x1622 (not x1615))
+(or x1621 x1619 x1617 x1615 (not x1622))
+(or (not x1600) (not x1539) (not x1540) (not x1541) (not x1542) x1623)
+(or (not x1623) x1600)
+(or (not x1623) x1539)
+(or (not x1623) x1540)
+(or (not x1623) x1541)
+(or (not x1623) x1542)
+(or (not x1538) (not x1540) (not x1539) (not x1545) (not x1546) x1624)
+(or (not x1624) x1538)
+(or (not x1624) x1540)
+(or (not x1624) x1539)
+(or (not x1624) x1545)
+(or (not x1624) x1546)
+(or (not x1608) (not x1540) (not x1539) (not x1545) (not x1549) x1625)
+(or (not x1625) x1608)
+(or (not x1625) x1540)
+(or (not x1625) x1539)
+(or (not x1625) x1545)
+(or (not x1625) x1549)
+(or (not x1626) (not x1627) (not x1539) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1628)
+(or (not x1628) x1626)
+(or (not x1628) x1627)
+(or (not x1628) x1539)
+(or (not x1628) x1553)
+(or (not x1628) x1554)
+(or (not x1628) x1545)
+(or (not x1628) x1523)
+(or (not x1628) x1555)
+(or x1629 (not x1628))
+(or x1629 (not x1625))
+(or x1629 (not x1624))
+(or x1629 (not x1623))
+(or x1628 x1625 x1624 x1623 (not x1629))
+(or (not x1608) (not x1539) (not x1540) (not x1541) (not x1542) x1630)
+(or (not x1630) x1608)
+(or (not x1630) x1539)
+(or (not x1630) x1540)
+(or (not x1630) x1541)
+(or (not x1630) x1542)
+(or (not x1548) (not x1540) (not x1539) (not x1545) (not x1546) x1631)
+(or (not x1631) x1548)
+(or (not x1631) x1540)
+(or (not x1631) x1539)
+(or (not x1631) x1545)
+(or (not x1631) x1546)
+(or (not x1616) (not x1540) (not x1539) (not x1545) (not x1549) x1632)
+(or (not x1632) x1616)
+(or (not x1632) x1540)
+(or (not x1632) x1539)
+(or (not x1632) x1545)
+(or (not x1632) x1549)
+(or (not x1633) (not x1634) (not x1539) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1635)
+(or (not x1635) x1633)
+(or (not x1635) x1634)
+(or (not x1635) x1539)
+(or (not x1635) x1553)
+(or (not x1635) x1554)
+(or (not x1635) x1545)
+(or (not x1635) x1523)
+(or (not x1635) x1555)
+(or x1636 (not x1635))
+(or x1636 (not x1632))
+(or x1636 (not x1631))
+(or x1636 (not x1630))
+(or x1635 x1632 x1631 x1630 (not x1636))
+(or (not x1616) (not x1539) (not x1540) (not x1541) (not x1542) x1637)
+(or (not x1637) x1616)
+(or (not x1637) x1539)
+(or (not x1637) x1540)
+(or (not x1637) x1541)
+(or (not x1637) x1542)
+(or (not x1561) (not x1540) (not x1539) (not x1545) (not x1546) x1638)
+(or (not x1638) x1561)
+(or (not x1638) x1540)
+(or (not x1638) x1539)
+(or (not x1638) x1545)
+(or (not x1638) x1546)
+(or (not x1639) (not x1540) (not x1539) (not x1545) (not x1549) x1640)
+(or (not x1640) x1639)
+(or (not x1640) x1540)
+(or (not x1640) x1539)
+(or (not x1640) x1545)
+(or (not x1640) x1549)
+(or (not x1639) (not x1641) (not x1539) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1642)
+(or (not x1642) x1639)
+(or (not x1642) x1641)
+(or (not x1642) x1539)
+(or (not x1642) x1553)
+(or (not x1642) x1554)
+(or (not x1642) x1545)
+(or (not x1642) x1523)
+(or (not x1642) x1555)
+(or x1643 (not x1642))
+(or x1643 (not x1640))
+(or x1643 (not x1638))
+(or x1643 (not x1637))
+(or x1642 x1640 x1638 x1637 (not x1643))
+(or x1644 (not x1645))
+(or x1644 (not x1650))
+(or x1645 x1650 (not x1644))
+(or x1651 (not x1652))
+(or x1651 (not x1657))
+(or x1652 x1657 (not x1651))
+(or x1658 (not x1659))
+(or x1658 (not x1664))
+(or x1659 x1664 (not x1658))
+(or x1665 (not x1666))
+(or x1665 (not x1671))
+(or x1666 x1671 (not x1665))
+(or (not x1570) (not x1539) (not x1540) (not x1541) (not x1542) x1672)
+(or (not x1672) x1570)
+(or (not x1672) x1539)
+(or (not x1672) x1540)
+(or (not x1672) x1541)
+(or (not x1672) x1542)
+(or (not x1594) (not x1540) (not x1539) (not x1545) (not x1546) x1673)
+(or (not x1673) x1594)
+(or (not x1673) x1540)
+(or (not x1673) x1539)
+(or (not x1673) x1545)
+(or (not x1673) x1546)
+(or (not x1544) (not x1540) (not x1539) (not x1545) (not x1549) x1674)
+(or (not x1674) x1544)
+(or (not x1674) x1540)
+(or (not x1674) x1539)
+(or (not x1674) x1545)
+(or (not x1674) x1549)
+(or (not x1675) (not x1676) (not x1539) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1677)
+(or (not x1677) x1675)
+(or (not x1677) x1676)
+(or (not x1677) x1539)
+(or (not x1677) x1553)
+(or (not x1677) x1554)
+(or (not x1677) x1545)
+(or (not x1677) x1523)
+(or (not x1677) x1555)
+(or x1678 (not x1677))
+(or x1678 (not x1674))
+(or x1678 (not x1673))
+(or x1678 (not x1672))
+(or x1677 x1674 x1673 x1672 (not x1678))
+(or x1679 (not x1680))
+(or x1679 (not x1685))
+(or x1680 x1685 (not x1679))
+(or x1686 (not x1687))
+(or x1686 (not x1692))
+(or x1687 x1692 (not x1686))
+(or x1693 (not x1694))
+(or x1693 (not x1699))
+(or x1694 x1699 (not x1693))
+(or x1700 (not x1701))
+(or x1700 (not x1706))
+(or x1701 x1706 (not x1700))
+(or (not x1594) (not x1539) (not x1540) (not x1541) (not x1542) x1707)
+(or (not x1707) x1594)
+(or (not x1707) x1539)
+(or (not x1707) x1540)
+(or (not x1707) x1541)
+(or (not x1707) x1542)
+(or (not x1618) (not x1540) (not x1539) (not x1545) (not x1546) x1708)
+(or (not x1708) x1618)
+(or (not x1708) x1540)
+(or (not x1708) x1539)
+(or (not x1708) x1545)
+(or (not x1708) x1546)
+(or (not x1576) (not x1540) (not x1539) (not x1545) (not x1549) x1709)
+(or (not x1709) x1576)
+(or (not x1709) x1540)
+(or (not x1709) x1539)
+(or (not x1709) x1545)
+(or (not x1709) x1549)
+(or (not x1710) (not x1711) (not x1539) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1712)
+(or (not x1712) x1710)
+(or (not x1712) x1711)
+(or (not x1712) x1539)
+(or (not x1712) x1553)
+(or (not x1712) x1554)
+(or (not x1712) x1545)
+(or (not x1712) x1523)
+(or (not x1712) x1555)
+(or x1713 (not x1712))
+(or x1713 (not x1709))
+(or x1713 (not x1708))
+(or x1713 (not x1707))
+(or x1712 x1709 x1708 x1707 (not x1713))
+(or x1714 (not x1715))
+(or x1714 (not x1720))
+(or x1715 x1720 (not x1714))
+(or x1721 (not x1722))
+(or x1721 (not x1727))
+(or x1722 x1727 (not x1721))
+(or x1728 (not x1729))
+(or x1728 (not x1734))
+(or x1729 x1734 (not x1728))
+(or x1735 (not x1736))
+(or x1735 (not x1741))
+(or x1736 x1741 (not x1735))
+(or (not x1618) (not x1539) (not x1540) (not x1541) (not x1542) x1742)
+(or (not x1742) x1618)
+(or (not x1742) x1539)
+(or (not x1742) x1540)
+(or (not x1742) x1541)
+(or (not x1742) x1542)
+(or (not x1639) (not x1540) (not x1539) (not x1545) (not x1546) x1743)
+(or (not x1743) x1639)
+(or (not x1743) x1540)
+(or (not x1743) x1539)
+(or (not x1743) x1545)
+(or (not x1743) x1546)
+(or (not x1600) (not x1540) (not x1539) (not x1545) (not x1549) x1744)
+(or (not x1744) x1600)
+(or (not x1744) x1540)
+(or (not x1744) x1539)
+(or (not x1744) x1545)
+(or (not x1744) x1549)
+(or (not x1745) (not x1746) (not x1539) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1747)
+(or (not x1747) x1745)
+(or (not x1747) x1746)
+(or (not x1747) x1539)
+(or (not x1747) x1553)
+(or (not x1747) x1554)
+(or (not x1747) x1545)
+(or (not x1747) x1523)
+(or (not x1747) x1555)
+(or x1748 (not x1747))
+(or x1748 (not x1744))
+(or x1748 (not x1743))
+(or x1748 (not x1742))
+(or x1747 x1744 x1743 x1742 (not x1748))
+(or x1749 (not x1750))
+(or x1749 (not x1755))
+(or x1750 x1755 (not x1749))
+(or x1756 (not x1757))
+(or x1756 (not x1762))
+(or x1757 x1762 (not x1756))
+(or x1763 (not x1764))
+(or x1763 (not x1769))
+(or x1764 x1769 (not x1763))
+(or x1770 (not x1771))
+(or x1770 (not x1776))
+(or x1771 x1776 (not x1770))
+(or x1561 x1548 x1538 x1777)
+(or (not x1777) (not x1561))
+(or (not x1777) (not x1548))
+(or (not x1777) (not x1538))
+(or x1778 (not x1779))
+(or x1778 (not x1780))
+(or x1778 (not x1781))
+(or x1778 (not x1782))
+(or x1778 (not x1777))
+(or x1779 x1780 x1781 x1782 x1777 (not x1778))
+(or x1568 x1559 x1544 x1783)
+(or (not x1783) (not x1568))
+(or (not x1783) (not x1559))
+(or (not x1783) (not x1544))
+(or x1784 (not x1785))
+(or x1784 (not x1786))
+(or x1784 (not x1787))
+(or x1784 (not x1788))
+(or x1784 (not x1783))
+(or x1785 x1786 x1787 x1788 x1783 (not x1784))
+(or x1592 x1584 x1576 x1789)
+(or (not x1789) (not x1592))
+(or (not x1789) (not x1584))
+(or (not x1789) (not x1576))
+(or x1790 (not x1791))
+(or x1790 (not x1792))
+(or x1790 (not x1793))
+(or x1790 (not x1794))
+(or x1790 (not x1789))
+(or x1791 x1792 x1793 x1794 x1789 (not x1790))
+(or x1616 x1608 x1600 x1795)
+(or (not x1795) (not x1616))
+(or (not x1795) (not x1608))
+(or (not x1795) (not x1600))
+(or x1796 (not x1797))
+(or x1796 (not x1798))
+(or x1796 (not x1799))
+(or x1796 (not x1800))
+(or x1796 (not x1795))
+(or x1797 x1798 x1799 x1800 x1795 (not x1796))
+(or (not x1796) (not x1790) (not x1784) (not x1778) x1801)
+(or (not x1801) x1796)
+(or (not x1801) x1790)
+(or (not x1801) x1784)
+(or (not x1801) x1778)
+(or x1542 (not x1802))
+(or x1542 (not x1803))
+(or x1542 x1545)
+(or x1542 (not x1801))
+(or x1802 x1803 (not x1545) x1801 (not x1542))
+(or (not x1538) (not x1804) (not x1805) x1782)
+(or (not x1782) x1538)
+(or (not x1782) x1804)
+(or (not x1782) x1805)
+(or x1806 (not x1657))
+(or x1806 (not x1650))
+(or x1657 x1650 (not x1806))
+(or (not x1548) (not x1806) x1781)
+(or (not x1781) x1548)
+(or (not x1781) x1806)
+(or x1807 (not x1664))
+(or x1807 (not x1657))
+(or x1807 (not x1650))
+(or x1664 x1657 x1650 (not x1807))
+(or (not x1561) (not x1807) x1780)
+(or (not x1780) x1561)
+(or (not x1780) x1807)
+(or x1808 (not x1552))
+(or x1808 x1548)
+(or x1552 (not x1548) (not x1808))
+(or x1809 (not x1564))
+(or x1809 (not x1552))
+(or x1809 x1561)
+(or x1564 x1552 (not x1561) (not x1809))
+(or x1810 (not x1572))
+(or x1810 (not x1564))
+(or x1810 (not x1552))
+(or x1810 x1570)
+(or x1572 x1564 x1552 (not x1570) (not x1810))
+(or x1538 (not x1810) (not x1809) (not x1808) x1811)
+(or (not x1811) (not x1538))
+(or (not x1811) x1810)
+(or (not x1811) x1809)
+(or (not x1811) x1808)
+(or x1804 (not x1811))
+(or x1804 x1805)
+(or x1804 (not x1812))
+(or x1804 (not x1813))
+(or x1804 x1545)
+(or x1804 (not x1814))
+(or x1804 (not x1815))
+(or x1811 (not x1805) x1812 x1813 (not x1545) x1814 x1815 (not x1804))
+(or (not x1804) (not x1805) x1650)
+(or (not x1650) x1804)
+(or (not x1650) x1805)
+(or x1816 (not x1564))
+(or x1816 x1561)
+(or x1564 (not x1561) (not x1816))
+(or x1817 (not x1572))
+(or x1817 (not x1564))
+(or x1817 x1570)
+(or x1572 x1564 (not x1570) (not x1817))
+(or x1548 (not x1817) (not x1816) x1818)
+(or (not x1818) (not x1548))
+(or (not x1818) x1817)
+(or (not x1818) x1816)
+(or x1819 (not x1818))
+(or x1819 x1552)
+(or x1819 (not x1812))
+(or x1819 (not x1813))
+(or x1819 x1545)
+(or x1819 (not x1814))
+(or x1819 (not x1815))
+(or x1818 (not x1552) x1812 x1813 (not x1545) x1814 x1815 (not x1819))
+(or (not x1819) (not x1552) x1657)
+(or (not x1657) x1819)
+(or (not x1657) x1552)
+(or x1820 (not x1572))
+(or x1820 x1570)
+(or x1572 (not x1570) (not x1820))
+(or x1561 (not x1820) x1821)
+(or (not x1821) (not x1561))
+(or (not x1821) x1820)
+(or x1822 (not x1821))
+(or x1822 x1564)
+(or x1822 (not x1812))
+(or x1822 (not x1813))
+(or x1822 x1545)
+(or x1822 (not x1814))
+(or x1822 (not x1815))
+(or x1821 (not x1564) x1812 x1813 (not x1545) x1814 x1815 (not x1822))
+(or (not x1822) (not x1564) x1664)
+(or (not x1664) x1822)
+(or (not x1664) x1564)
+(or x1823 x1570)
+(or x1823 x1572)
+(or x1823 (not x1812))
+(or x1823 (not x1813))
+(or x1823 x1545)
+(or x1823 (not x1814))
+(or x1823 (not x1815))
+(or (not x1570) (not x1572) x1812 x1813 (not x1545) x1814 x1815 (not x1823))
+(or (not x1823) (not x1572) x1671)
+(or (not x1671) x1823)
+(or (not x1671) x1572)
+(or x1824 (not x1671))
+(or x1824 (not x1664))
+(or x1824 (not x1657))
+(or x1824 (not x1650))
+(or x1671 x1664 x1657 x1650 (not x1824))
+(or (not x1570) (not x1824) x1779)
+(or (not x1779) x1570)
+(or (not x1779) x1824)
+(or x1825 (not x1779))
+(or x1825 (not x1780))
+(or x1825 (not x1781))
+(or x1825 (not x1782))
+(or x1825 x1570)
+(or x1779 x1780 x1781 x1782 (not x1570) (not x1825))
+(or (not x1544) (not x1826) (not x1676) x1788)
+(or (not x1788) x1544)
+(or (not x1788) x1826)
+(or (not x1788) x1676)
+(or x1827 (not x1692))
+(or x1827 (not x1685))
+(or x1692 x1685 (not x1827))
+(or (not x1559) (not x1827) x1787)
+(or (not x1787) x1559)
+(or (not x1787) x1827)
+(or x1828 (not x1699))
+(or x1828 (not x1692))
+(or x1828 (not x1685))
+(or x1699 x1692 x1685 (not x1828))
+(or (not x1568) (not x1828) x1786)
+(or (not x1786) x1568)
+(or (not x1786) x1828)
+(or x1829 (not x1580))
+(or x1829 x1559)
+(or x1580 (not x1559) (not x1829))
+(or x1830 (not x1588))
+(or x1830 (not x1580))
+(or x1830 x1568)
+(or x1588 x1580 (not x1568) (not x1830))
+(or x1831 (not x1596))
+(or x1831 (not x1588))
+(or x1831 (not x1580))
+(or x1831 x1594)
+(or x1596 x1588 x1580 (not x1594) (not x1831))
+(or x1544 (not x1831) (not x1830) (not x1829) x1832)
+(or (not x1832) (not x1544))
+(or (not x1832) x1831)
+(or (not x1832) x1830)
+(or (not x1832) x1829)
+(or x1826 (not x1832))
+(or x1826 x1676)
+(or x1826 (not x1812))
+(or x1826 (not x1813))
+(or x1826 x1545)
+(or x1826 (not x1814))
+(or x1826 (not x1815))
+(or x1832 (not x1676) x1812 x1813 (not x1545) x1814 x1815 (not x1826))
+(or (not x1826) (not x1676) x1685)
+(or (not x1685) x1826)
+(or (not x1685) x1676)
+(or x1833 (not x1588))
+(or x1833 x1568)
+(or x1588 (not x1568) (not x1833))
+(or x1834 (not x1596))
+(or x1834 (not x1588))
+(or x1834 x1594)
+(or x1596 x1588 (not x1594) (not x1834))
+(or x1559 (not x1834) (not x1833) x1835)
+(or (not x1835) (not x1559))
+(or (not x1835) x1834)
+(or (not x1835) x1833)
+(or x1836 (not x1835))
+(or x1836 x1580)
+(or x1836 (not x1812))
+(or x1836 (not x1813))
+(or x1836 x1545)
+(or x1836 (not x1814))
+(or x1836 (not x1815))
+(or x1835 (not x1580) x1812 x1813 (not x1545) x1814 x1815 (not x1836))
+(or (not x1836) (not x1580) x1692)
+(or (not x1692) x1836)
+(or (not x1692) x1580)
+(or x1837 (not x1596))
+(or x1837 x1594)
+(or x1596 (not x1594) (not x1837))
+(or x1568 (not x1837) x1838)
+(or (not x1838) (not x1568))
+(or (not x1838) x1837)
+(or x1839 (not x1838))
+(or x1839 x1588)
+(or x1839 (not x1812))
+(or x1839 (not x1813))
+(or x1839 x1545)
+(or x1839 (not x1814))
+(or x1839 (not x1815))
+(or x1838 (not x1588) x1812 x1813 (not x1545) x1814 x1815 (not x1839))
+(or (not x1839) (not x1588) x1699)
+(or (not x1699) x1839)
+(or (not x1699) x1588)
+(or x1840 x1594)
+(or x1840 x1596)
+(or x1840 (not x1812))
+(or x1840 (not x1813))
+(or x1840 x1545)
+(or x1840 (not x1814))
+(or x1840 (not x1815))
+(or (not x1594) (not x1596) x1812 x1813 (not x1545) x1814 x1815 (not x1840))
+(or (not x1840) (not x1596) x1706)
+(or (not x1706) x1840)
+(or (not x1706) x1596)
+(or x1841 (not x1706))
+(or x1841 (not x1699))
+(or x1841 (not x1692))
+(or x1841 (not x1685))
+(or x1706 x1699 x1692 x1685 (not x1841))
+(or (not x1594) (not x1841) x1785)
+(or (not x1785) x1594)
+(or (not x1785) x1841)
+(or x1842 (not x1785))
+(or x1842 (not x1786))
+(or x1842 (not x1787))
+(or x1842 (not x1788))
+(or x1842 x1594)
+(or x1785 x1786 x1787 x1788 (not x1594) (not x1842))
+(or (not x1576) (not x1843) (not x1711) x1794)
+(or (not x1794) x1576)
+(or (not x1794) x1843)
+(or (not x1794) x1711)
+(or x1844 (not x1727))
+(or x1844 (not x1720))
+(or x1727 x1720 (not x1844))
+(or (not x1584) (not x1844) x1793)
+(or (not x1793) x1584)
+(or (not x1793) x1844)
+(or x1845 (not x1734))
+(or x1845 (not x1727))
+(or x1845 (not x1720))
+(or x1734 x1727 x1720 (not x1845))
+(or (not x1592) (not x1845) x1792)
+(or (not x1792) x1592)
+(or (not x1792) x1845)
+(or x1846 (not x1604))
+(or x1846 x1584)
+(or x1604 (not x1584) (not x1846))
+(or x1847 (not x1612))
+(or x1847 (not x1604))
+(or x1847 x1592)
+(or x1612 x1604 (not x1592) (not x1847))
+(or x1848 (not x1620))
+(or x1848 (not x1612))
+(or x1848 (not x1604))
+(or x1848 x1618)
+(or x1620 x1612 x1604 (not x1618) (not x1848))
+(or x1576 (not x1848) (not x1847) (not x1846) x1849)
+(or (not x1849) (not x1576))
+(or (not x1849) x1848)
+(or (not x1849) x1847)
+(or (not x1849) x1846)
+(or x1843 (not x1849))
+(or x1843 x1711)
+(or x1843 (not x1812))
+(or x1843 (not x1813))
+(or x1843 x1545)
+(or x1843 (not x1814))
+(or x1843 (not x1815))
+(or x1849 (not x1711) x1812 x1813 (not x1545) x1814 x1815 (not x1843))
+(or (not x1843) (not x1711) x1720)
+(or (not x1720) x1843)
+(or (not x1720) x1711)
+(or x1850 (not x1612))
+(or x1850 x1592)
+(or x1612 (not x1592) (not x1850))
+(or x1851 (not x1620))
+(or x1851 (not x1612))
+(or x1851 x1618)
+(or x1620 x1612 (not x1618) (not x1851))
+(or x1584 (not x1851) (not x1850) x1852)
+(or (not x1852) (not x1584))
+(or (not x1852) x1851)
+(or (not x1852) x1850)
+(or x1853 (not x1852))
+(or x1853 x1604)
+(or x1853 (not x1812))
+(or x1853 (not x1813))
+(or x1853 x1545)
+(or x1853 (not x1814))
+(or x1853 (not x1815))
+(or x1852 (not x1604) x1812 x1813 (not x1545) x1814 x1815 (not x1853))
+(or (not x1853) (not x1604) x1727)
+(or (not x1727) x1853)
+(or (not x1727) x1604)
+(or x1854 (not x1620))
+(or x1854 x1618)
+(or x1620 (not x1618) (not x1854))
+(or x1592 (not x1854) x1855)
+(or (not x1855) (not x1592))
+(or (not x1855) x1854)
+(or x1856 (not x1855))
+(or x1856 x1612)
+(or x1856 (not x1812))
+(or x1856 (not x1813))
+(or x1856 x1545)
+(or x1856 (not x1814))
+(or x1856 (not x1815))
+(or x1855 (not x1612) x1812 x1813 (not x1545) x1814 x1815 (not x1856))
+(or (not x1856) (not x1612) x1734)
+(or (not x1734) x1856)
+(or (not x1734) x1612)
+(or x1857 x1618)
+(or x1857 x1620)
+(or x1857 (not x1812))
+(or x1857 (not x1813))
+(or x1857 x1545)
+(or x1857 (not x1814))
+(or x1857 (not x1815))
+(or (not x1618) (not x1620) x1812 x1813 (not x1545) x1814 x1815 (not x1857))
+(or (not x1857) (not x1620) x1741)
+(or (not x1741) x1857)
+(or (not x1741) x1620)
+(or x1858 (not x1741))
+(or x1858 (not x1734))
+(or x1858 (not x1727))
+(or x1858 (not x1720))
+(or x1741 x1734 x1727 x1720 (not x1858))
+(or (not x1618) (not x1858) x1791)
+(or (not x1791) x1618)
+(or (not x1791) x1858)
+(or x1859 (not x1791))
+(or x1859 (not x1792))
+(or x1859 (not x1793))
+(or x1859 (not x1794))
+(or x1859 x1618)
+(or x1791 x1792 x1793 x1794 (not x1618) (not x1859))
+(or (not x1600) (not x1860) (not x1746) x1800)
+(or (not x1800) x1600)
+(or (not x1800) x1860)
+(or (not x1800) x1746)
+(or x1861 (not x1762))
+(or x1861 (not x1755))
+(or x1762 x1755 (not x1861))
+(or (not x1608) (not x1861) x1799)
+(or (not x1799) x1608)
+(or (not x1799) x1861)
+(or x1862 (not x1769))
+(or x1862 (not x1762))
+(or x1862 (not x1755))
+(or x1769 x1762 x1755 (not x1862))
+(or (not x1616) (not x1862) x1798)
+(or (not x1798) x1616)
+(or (not x1798) x1862)
+(or x1863 (not x1627))
+(or x1863 x1608)
+(or x1627 (not x1608) (not x1863))
+(or x1864 (not x1634))
+(or x1864 (not x1627))
+(or x1864 x1616)
+(or x1634 x1627 (not x1616) (not x1864))
+(or x1865 (not x1641))
+(or x1865 (not x1634))
+(or x1865 (not x1627))
+(or x1865 x1639)
+(or x1641 x1634 x1627 (not x1639) (not x1865))
+(or x1600 (not x1865) (not x1864) (not x1863) x1866)
+(or (not x1866) (not x1600))
+(or (not x1866) x1865)
+(or (not x1866) x1864)
+(or (not x1866) x1863)
+(or x1860 (not x1866))
+(or x1860 x1746)
+(or x1860 (not x1812))
+(or x1860 (not x1813))
+(or x1860 x1545)
+(or x1860 (not x1814))
+(or x1860 (not x1815))
+(or x1866 (not x1746) x1812 x1813 (not x1545) x1814 x1815 (not x1860))
+(or (not x1860) (not x1746) x1755)
+(or (not x1755) x1860)
+(or (not x1755) x1746)
+(or x1867 (not x1634))
+(or x1867 x1616)
+(or x1634 (not x1616) (not x1867))
+(or x1868 (not x1641))
+(or x1868 (not x1634))
+(or x1868 x1639)
+(or x1641 x1634 (not x1639) (not x1868))
+(or x1608 (not x1868) (not x1867) x1869)
+(or (not x1869) (not x1608))
+(or (not x1869) x1868)
+(or (not x1869) x1867)
+(or x1870 (not x1869))
+(or x1870 x1627)
+(or x1870 (not x1812))
+(or x1870 (not x1813))
+(or x1870 x1545)
+(or x1870 (not x1814))
+(or x1870 (not x1815))
+(or x1869 (not x1627) x1812 x1813 (not x1545) x1814 x1815 (not x1870))
+(or (not x1870) (not x1627) x1762)
+(or (not x1762) x1870)
+(or (not x1762) x1627)
+(or x1871 (not x1641))
+(or x1871 x1639)
+(or x1641 (not x1639) (not x1871))
+(or x1616 (not x1871) x1872)
+(or (not x1872) (not x1616))
+(or (not x1872) x1871)
+(or x1873 (not x1872))
+(or x1873 x1634)
+(or x1873 (not x1812))
+(or x1873 (not x1813))
+(or x1873 x1545)
+(or x1873 (not x1814))
+(or x1873 (not x1815))
+(or x1872 (not x1634) x1812 x1813 (not x1545) x1814 x1815 (not x1873))
+(or (not x1873) (not x1634) x1769)
+(or (not x1769) x1873)
+(or (not x1769) x1634)
+(or x1874 x1639)
+(or x1874 x1641)
+(or x1874 (not x1812))
+(or x1874 (not x1813))
+(or x1874 x1545)
+(or x1874 (not x1814))
+(or x1874 (not x1815))
+(or (not x1639) (not x1641) x1812 x1813 (not x1545) x1814 x1815 (not x1874))
+(or (not x1874) (not x1641) x1776)
+(or (not x1776) x1874)
+(or (not x1776) x1641)
+(or x1875 (not x1776))
+(or x1875 (not x1769))
+(or x1875 (not x1762))
+(or x1875 (not x1755))
+(or x1776 x1769 x1762 x1755 (not x1875))
+(or (not x1639) (not x1875) x1797)
+(or (not x1797) x1639)
+(or (not x1797) x1875)
+(or x1876 (not x1797))
+(or x1876 (not x1798))
+(or x1876 (not x1799))
+(or x1876 (not x1800))
+(or x1876 x1639)
+(or x1797 x1798 x1799 x1800 (not x1639) (not x1876))
+(or (not x1876) (not x1859) (not x1842) (not x1825) x1877)
+(or (not x1877) x1876)
+(or (not x1877) x1859)
+(or (not x1877) x1842)
+(or (not x1877) x1825)
+(or x1639 x1616 x1608 x1600 x1618 x1592 x1584 x1576 x1594 x1568 x1559 x1544 x1570 x1561 x1548 x1538 x1803)
+(or (not x1803) (not x1639))
+(or (not x1803) (not x1616))
+(or (not x1803) (not x1608))
+(or (not x1803) (not x1600))
+(or (not x1803) (not x1618))
+(or (not x1803) (not x1592))
+(or (not x1803) (not x1584))
+(or (not x1803) (not x1576))
+(or (not x1803) (not x1594))
+(or (not x1803) (not x1568))
+(or (not x1803) (not x1559))
+(or (not x1803) (not x1544))
+(or (not x1803) (not x1570))
+(or (not x1803) (not x1561))
+(or (not x1803) (not x1548))
+(or (not x1803) (not x1538))
+(or x1541 (not x1802))
+(or x1541 (not x1803))
+(or x1541 x1545)
+(or x1541 (not x1877))
+(or x1802 x1803 (not x1545) x1877 (not x1541))
+(or (not x1639) (not x1539) (not x1540) (not x1541) (not x1542) x1878)
+(or (not x1878) x1639)
+(or (not x1878) x1539)
+(or (not x1878) x1540)
+(or (not x1878) x1541)
+(or (not x1878) x1542)
+(or (not x1879) (not x1880) (not x1881) (not x1882) (not x1570) x1883)
+(or (not x1883) x1879)
+(or (not x1883) x1880)
+(or (not x1883) x1881)
+(or (not x1883) x1882)
+(or (not x1883) x1570)
+(or (not x1884) (not x1885) (not x1886) (not x1887) (not x1594) x1888)
+(or (not x1888) x1884)
+(or (not x1888) x1885)
+(or (not x1888) x1886)
+(or (not x1888) x1887)
+(or (not x1888) x1594)
+(or (not x1889) (not x1890) (not x1891) (not x1892) (not x1618) x1893)
+(or (not x1893) x1889)
+(or (not x1893) x1890)
+(or (not x1893) x1891)
+(or (not x1893) x1892)
+(or (not x1893) x1618)
+(or (not x1894) (not x1895) (not x1896) (not x1897) (not x1639) x1898)
+(or (not x1898) x1894)
+(or (not x1898) x1895)
+(or (not x1898) x1896)
+(or (not x1898) x1897)
+(or (not x1898) x1639)
+(or x1546 (not x1898))
+(or x1546 (not x1893))
+(or x1546 (not x1888))
+(or x1546 (not x1883))
+(or x1898 x1893 x1888 x1883 (not x1546))
+(or (not x1570) (not x1540) (not x1539) (not x1545) (not x1546) x1899)
+(or (not x1899) x1570)
+(or (not x1899) x1540)
+(or (not x1899) x1539)
+(or (not x1899) x1545)
+(or (not x1899) x1546)
+(or x1900 (not x1561))
+(or x1900 (not x1548))
+(or x1900 (not x1538))
+(or x1561 x1548 x1538 (not x1900))
+(or x1882 x1538)
+(or x1882 (not x1901))
+(or x1882 x1805)
+(or (not x1538) x1901 (not x1805) (not x1882))
+(or (not x1902) (not x1903) x1904)
+(or (not x1904) x1902)
+(or (not x1904) x1903)
+(or x1881 x1548)
+(or x1881 (not x1904))
+(or (not x1548) x1904 (not x1881))
+(or (not x1905) (not x1902) (not x1903) x1906)
+(or (not x1906) x1905)
+(or (not x1906) x1902)
+(or (not x1906) x1903)
+(or x1880 x1561)
+(or x1880 (not x1906))
+(or (not x1561) x1906 (not x1880))
+(or (not x1907) (not x1805) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1901)
+(or (not x1901) x1907)
+(or (not x1901) x1805)
+(or (not x1901) x1553)
+(or (not x1901) x1554)
+(or (not x1901) x1545)
+(or (not x1901) x1523)
+(or (not x1901) x1555)
+(or x1903 (not x1901))
+(or x1903 x1805)
+(or x1901 (not x1805) (not x1903))
+(or x1564 (not x1561) x1908)
+(or (not x1908) (not x1564))
+(or (not x1908) x1561)
+(or x1572 x1564 (not x1570) x1909)
+(or (not x1909) (not x1572))
+(or (not x1909) (not x1564))
+(or (not x1909) x1570)
+(or x1551 (not x1548))
+(or x1551 (not x1909))
+(or x1551 (not x1908))
+(or x1548 x1909 x1908 (not x1551))
+(or (not x1551) (not x1552) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1910)
+(or (not x1910) x1551)
+(or (not x1910) x1552)
+(or (not x1910) x1553)
+(or (not x1910) x1554)
+(or (not x1910) x1545)
+(or (not x1910) x1523)
+(or (not x1910) x1555)
+(or x1902 (not x1910))
+(or x1902 x1552)
+(or x1910 (not x1552) (not x1902))
+(or x1572 (not x1570) x1911)
+(or (not x1911) (not x1572))
+(or (not x1911) x1570)
+(or x1563 (not x1561))
+(or x1563 (not x1911))
+(or x1561 x1911 (not x1563))
+(or (not x1563) (not x1564) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1912)
+(or (not x1912) x1563)
+(or (not x1912) x1564)
+(or (not x1912) x1553)
+(or (not x1912) x1554)
+(or (not x1912) x1545)
+(or (not x1912) x1523)
+(or (not x1912) x1555)
+(or x1905 (not x1912))
+(or x1905 x1564)
+(or x1912 (not x1564) (not x1905))
+(or (not x1570) (not x1572) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1913)
+(or (not x1913) x1570)
+(or (not x1913) x1572)
+(or (not x1913) x1553)
+(or (not x1913) x1554)
+(or (not x1913) x1545)
+(or (not x1913) x1523)
+(or (not x1913) x1555)
+(or x1914 (not x1913))
+(or x1914 x1572)
+(or x1913 (not x1572) (not x1914))
+(or (not x1914) (not x1905) (not x1902) (not x1903) x1915)
+(or (not x1915) x1914)
+(or (not x1915) x1905)
+(or (not x1915) x1902)
+(or (not x1915) x1903)
+(or x1879 x1570)
+(or x1879 (not x1915))
+(or (not x1570) x1915 (not x1879))
+(or (not x1879) (not x1880) (not x1881) (not x1882) (not x1900) x1916)
+(or (not x1916) x1879)
+(or (not x1916) x1880)
+(or (not x1916) x1881)
+(or (not x1916) x1882)
+(or (not x1916) x1900)
+(or x1917 (not x1568))
+(or x1917 (not x1559))
+(or x1917 (not x1544))
+(or x1568 x1559 x1544 (not x1917))
+(or x1887 x1544)
+(or x1887 (not x1918))
+(or x1887 x1676)
+(or (not x1544) x1918 (not x1676) (not x1887))
+(or (not x1919) (not x1920) x1921)
+(or (not x1921) x1919)
+(or (not x1921) x1920)
+(or x1886 x1559)
+(or x1886 (not x1921))
+(or (not x1559) x1921 (not x1886))
+(or (not x1922) (not x1919) (not x1920) x1923)
+(or (not x1923) x1922)
+(or (not x1923) x1919)
+(or (not x1923) x1920)
+(or x1885 x1568)
+(or x1885 (not x1923))
+(or (not x1568) x1923 (not x1885))
+(or x1580 (not x1559) x1924)
+(or (not x1924) (not x1580))
+(or (not x1924) x1559)
+(or x1588 x1580 (not x1568) x1925)
+(or (not x1925) (not x1588))
+(or (not x1925) (not x1580))
+(or (not x1925) x1568)
+(or x1596 x1588 x1580 (not x1594) x1926)
+(or (not x1926) (not x1596))
+(or (not x1926) (not x1588))
+(or (not x1926) (not x1580))
+(or (not x1926) x1594)
+(or x1675 (not x1544))
+(or x1675 (not x1926))
+(or x1675 (not x1925))
+(or x1675 (not x1924))
+(or x1544 x1926 x1925 x1924 (not x1675))
+(or (not x1675) (not x1676) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1918)
+(or (not x1918) x1675)
+(or (not x1918) x1676)
+(or (not x1918) x1553)
+(or (not x1918) x1554)
+(or (not x1918) x1545)
+(or (not x1918) x1523)
+(or (not x1918) x1555)
+(or x1920 (not x1918))
+(or x1920 x1676)
+(or x1918 (not x1676) (not x1920))
+(or x1588 (not x1568) x1927)
+(or (not x1927) (not x1588))
+(or (not x1927) x1568)
+(or x1596 x1588 (not x1594) x1928)
+(or (not x1928) (not x1596))
+(or (not x1928) (not x1588))
+(or (not x1928) x1594)
+(or x1579 (not x1559))
+(or x1579 (not x1928))
+(or x1579 (not x1927))
+(or x1559 x1928 x1927 (not x1579))
+(or (not x1579) (not x1580) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1929)
+(or (not x1929) x1579)
+(or (not x1929) x1580)
+(or (not x1929) x1553)
+(or (not x1929) x1554)
+(or (not x1929) x1545)
+(or (not x1929) x1523)
+(or (not x1929) x1555)
+(or x1919 (not x1929))
+(or x1919 x1580)
+(or x1929 (not x1580) (not x1919))
+(or x1596 (not x1594) x1930)
+(or (not x1930) (not x1596))
+(or (not x1930) x1594)
+(or x1587 (not x1568))
+(or x1587 (not x1930))
+(or x1568 x1930 (not x1587))
+(or (not x1587) (not x1588) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1931)
+(or (not x1931) x1587)
+(or (not x1931) x1588)
+(or (not x1931) x1553)
+(or (not x1931) x1554)
+(or (not x1931) x1545)
+(or (not x1931) x1523)
+(or (not x1931) x1555)
+(or x1922 (not x1931))
+(or x1922 x1588)
+(or x1931 (not x1588) (not x1922))
+(or (not x1594) (not x1596) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1932)
+(or (not x1932) x1594)
+(or (not x1932) x1596)
+(or (not x1932) x1553)
+(or (not x1932) x1554)
+(or (not x1932) x1545)
+(or (not x1932) x1523)
+(or (not x1932) x1555)
+(or x1933 (not x1932))
+(or x1933 x1596)
+(or x1932 (not x1596) (not x1933))
+(or (not x1933) (not x1922) (not x1919) (not x1920) x1934)
+(or (not x1934) x1933)
+(or (not x1934) x1922)
+(or (not x1934) x1919)
+(or (not x1934) x1920)
+(or x1884 x1594)
+(or x1884 (not x1934))
+(or (not x1594) x1934 (not x1884))
+(or (not x1884) (not x1885) (not x1886) (not x1887) (not x1917) x1935)
+(or (not x1935) x1884)
+(or (not x1935) x1885)
+(or (not x1935) x1886)
+(or (not x1935) x1887)
+(or (not x1935) x1917)
+(or x1936 (not x1592))
+(or x1936 (not x1584))
+(or x1936 (not x1576))
+(or x1592 x1584 x1576 (not x1936))
+(or x1892 x1576)
+(or x1892 (not x1937))
+(or x1892 x1711)
+(or (not x1576) x1937 (not x1711) (not x1892))
+(or (not x1938) (not x1939) x1940)
+(or (not x1940) x1938)
+(or (not x1940) x1939)
+(or x1891 x1584)
+(or x1891 (not x1940))
+(or (not x1584) x1940 (not x1891))
+(or (not x1941) (not x1938) (not x1939) x1942)
+(or (not x1942) x1941)
+(or (not x1942) x1938)
+(or (not x1942) x1939)
+(or x1890 x1592)
+(or x1890 (not x1942))
+(or (not x1592) x1942 (not x1890))
+(or x1604 (not x1584) x1943)
+(or (not x1943) (not x1604))
+(or (not x1943) x1584)
+(or x1612 x1604 (not x1592) x1944)
+(or (not x1944) (not x1612))
+(or (not x1944) (not x1604))
+(or (not x1944) x1592)
+(or x1620 x1612 x1604 (not x1618) x1945)
+(or (not x1945) (not x1620))
+(or (not x1945) (not x1612))
+(or (not x1945) (not x1604))
+(or (not x1945) x1618)
+(or x1710 (not x1576))
+(or x1710 (not x1945))
+(or x1710 (not x1944))
+(or x1710 (not x1943))
+(or x1576 x1945 x1944 x1943 (not x1710))
+(or (not x1710) (not x1711) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1937)
+(or (not x1937) x1710)
+(or (not x1937) x1711)
+(or (not x1937) x1553)
+(or (not x1937) x1554)
+(or (not x1937) x1545)
+(or (not x1937) x1523)
+(or (not x1937) x1555)
+(or x1939 (not x1937))
+(or x1939 x1711)
+(or x1937 (not x1711) (not x1939))
+(or x1612 (not x1592) x1946)
+(or (not x1946) (not x1612))
+(or (not x1946) x1592)
+(or x1620 x1612 (not x1618) x1947)
+(or (not x1947) (not x1620))
+(or (not x1947) (not x1612))
+(or (not x1947) x1618)
+(or x1603 (not x1584))
+(or x1603 (not x1947))
+(or x1603 (not x1946))
+(or x1584 x1947 x1946 (not x1603))
+(or (not x1603) (not x1604) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1948)
+(or (not x1948) x1603)
+(or (not x1948) x1604)
+(or (not x1948) x1553)
+(or (not x1948) x1554)
+(or (not x1948) x1545)
+(or (not x1948) x1523)
+(or (not x1948) x1555)
+(or x1938 (not x1948))
+(or x1938 x1604)
+(or x1948 (not x1604) (not x1938))
+(or x1620 (not x1618) x1949)
+(or (not x1949) (not x1620))
+(or (not x1949) x1618)
+(or x1611 (not x1592))
+(or x1611 (not x1949))
+(or x1592 x1949 (not x1611))
+(or (not x1611) (not x1612) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1950)
+(or (not x1950) x1611)
+(or (not x1950) x1612)
+(or (not x1950) x1553)
+(or (not x1950) x1554)
+(or (not x1950) x1545)
+(or (not x1950) x1523)
+(or (not x1950) x1555)
+(or x1941 (not x1950))
+(or x1941 x1612)
+(or x1950 (not x1612) (not x1941))
+(or (not x1618) (not x1620) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1951)
+(or (not x1951) x1618)
+(or (not x1951) x1620)
+(or (not x1951) x1553)
+(or (not x1951) x1554)
+(or (not x1951) x1545)
+(or (not x1951) x1523)
+(or (not x1951) x1555)
+(or x1952 (not x1951))
+(or x1952 x1620)
+(or x1951 (not x1620) (not x1952))
+(or (not x1952) (not x1941) (not x1938) (not x1939) x1953)
+(or (not x1953) x1952)
+(or (not x1953) x1941)
+(or (not x1953) x1938)
+(or (not x1953) x1939)
+(or x1889 x1618)
+(or x1889 (not x1953))
+(or (not x1618) x1953 (not x1889))
+(or (not x1889) (not x1890) (not x1891) (not x1892) (not x1936) x1954)
+(or (not x1954) x1889)
+(or (not x1954) x1890)
+(or (not x1954) x1891)
+(or (not x1954) x1892)
+(or (not x1954) x1936)
+(or x1955 (not x1616))
+(or x1955 (not x1608))
+(or x1955 (not x1600))
+(or x1616 x1608 x1600 (not x1955))
+(or x1897 x1600)
+(or x1897 (not x1956))
+(or x1897 x1746)
+(or (not x1600) x1956 (not x1746) (not x1897))
+(or (not x1957) (not x1958) x1959)
+(or (not x1959) x1957)
+(or (not x1959) x1958)
+(or x1896 x1608)
+(or x1896 (not x1959))
+(or (not x1608) x1959 (not x1896))
+(or (not x1960) (not x1957) (not x1958) x1961)
+(or (not x1961) x1960)
+(or (not x1961) x1957)
+(or (not x1961) x1958)
+(or x1895 x1616)
+(or x1895 (not x1961))
+(or (not x1616) x1961 (not x1895))
+(or x1627 (not x1608) x1962)
+(or (not x1962) (not x1627))
+(or (not x1962) x1608)
+(or x1634 x1627 (not x1616) x1963)
+(or (not x1963) (not x1634))
+(or (not x1963) (not x1627))
+(or (not x1963) x1616)
+(or x1641 x1634 x1627 (not x1639) x1964)
+(or (not x1964) (not x1641))
+(or (not x1964) (not x1634))
+(or (not x1964) (not x1627))
+(or (not x1964) x1639)
+(or x1745 (not x1600))
+(or x1745 (not x1964))
+(or x1745 (not x1963))
+(or x1745 (not x1962))
+(or x1600 x1964 x1963 x1962 (not x1745))
+(or (not x1745) (not x1746) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1956)
+(or (not x1956) x1745)
+(or (not x1956) x1746)
+(or (not x1956) x1553)
+(or (not x1956) x1554)
+(or (not x1956) x1545)
+(or (not x1956) x1523)
+(or (not x1956) x1555)
+(or x1958 (not x1956))
+(or x1958 x1746)
+(or x1956 (not x1746) (not x1958))
+(or x1634 (not x1616) x1965)
+(or (not x1965) (not x1634))
+(or (not x1965) x1616)
+(or x1641 x1634 (not x1639) x1966)
+(or (not x1966) (not x1641))
+(or (not x1966) (not x1634))
+(or (not x1966) x1639)
+(or x1626 (not x1608))
+(or x1626 (not x1966))
+(or x1626 (not x1965))
+(or x1608 x1966 x1965 (not x1626))
+(or (not x1626) (not x1627) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1967)
+(or (not x1967) x1626)
+(or (not x1967) x1627)
+(or (not x1967) x1553)
+(or (not x1967) x1554)
+(or (not x1967) x1545)
+(or (not x1967) x1523)
+(or (not x1967) x1555)
+(or x1957 (not x1967))
+(or x1957 x1627)
+(or x1967 (not x1627) (not x1957))
+(or x1641 (not x1639) x1968)
+(or (not x1968) (not x1641))
+(or (not x1968) x1639)
+(or x1633 (not x1616))
+(or x1633 (not x1968))
+(or x1616 x1968 (not x1633))
+(or (not x1633) (not x1634) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1969)
+(or (not x1969) x1633)
+(or (not x1969) x1634)
+(or (not x1969) x1553)
+(or (not x1969) x1554)
+(or (not x1969) x1545)
+(or (not x1969) x1523)
+(or (not x1969) x1555)
+(or x1960 (not x1969))
+(or x1960 x1634)
+(or x1969 (not x1634) (not x1960))
+(or (not x1639) (not x1641) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1970)
+(or (not x1970) x1639)
+(or (not x1970) x1641)
+(or (not x1970) x1553)
+(or (not x1970) x1554)
+(or (not x1970) x1545)
+(or (not x1970) x1523)
+(or (not x1970) x1555)
+(or x1971 (not x1970))
+(or x1971 x1641)
+(or x1970 (not x1641) (not x1971))
+(or (not x1971) (not x1960) (not x1957) (not x1958) x1972)
+(or (not x1972) x1971)
+(or (not x1972) x1960)
+(or (not x1972) x1957)
+(or (not x1972) x1958)
+(or x1894 x1639)
+(or x1894 (not x1972))
+(or (not x1639) x1972 (not x1894))
+(or (not x1894) (not x1895) (not x1896) (not x1897) (not x1955) x1973)
+(or (not x1973) x1894)
+(or (not x1973) x1895)
+(or (not x1973) x1896)
+(or (not x1973) x1897)
+(or (not x1973) x1955)
+(or x1549 (not x1973))
+(or x1549 (not x1954))
+(or x1549 (not x1935))
+(or x1549 (not x1916))
+(or x1973 x1954 x1935 x1916 (not x1549))
+(or (not x1974) (not x1975) x1812)
+(or (not x1812) x1974)
+(or (not x1812) x1975)
+(or x1540 (not x1812))
+(or x1540 (not x1813))
+(or x1540 x1545)
+(or x1540 (not x1814))
+(or x1540 (not x1815))
+(or x1812 x1813 (not x1545) x1814 x1815 (not x1540))
+(or (not x1538) (not x1540) (not x1539) (not x1545) (not x1549) x1976)
+(or (not x1976) x1538)
+(or (not x1976) x1540)
+(or (not x1976) x1539)
+(or (not x1976) x1545)
+(or (not x1976) x1549)
+(or x1539 (not x1639))
+(or x1539 (not x1616))
+(or x1539 (not x1608))
+(or x1539 (not x1600))
+(or x1539 (not x1618))
+(or x1539 (not x1592))
+(or x1539 (not x1584))
+(or x1539 (not x1576))
+(or x1539 (not x1594))
+(or x1539 (not x1568))
+(or x1539 (not x1559))
+(or x1539 (not x1544))
+(or x1539 (not x1570))
+(or x1539 (not x1561))
+(or x1539 (not x1548))
+(or x1539 (not x1538))
+(or x1639 x1616 x1608 x1600 x1618 x1592 x1584 x1576 x1594 x1568 x1559 x1544 x1570 x1561 x1548 x1538 (not x1539))
+(or x1552 (not x1548) x1977)
+(or (not x1977) (not x1552))
+(or (not x1977) x1548)
+(or x1564 x1552 (not x1561) x1978)
+(or (not x1978) (not x1564))
+(or (not x1978) (not x1552))
+(or (not x1978) x1561)
+(or x1572 x1564 x1552 (not x1570) x1979)
+(or (not x1979) (not x1572))
+(or (not x1979) (not x1564))
+(or (not x1979) (not x1552))
+(or (not x1979) x1570)
+(or x1907 (not x1538))
+(or x1907 (not x1979))
+(or x1907 (not x1978))
+(or x1907 (not x1977))
+(or x1538 x1979 x1978 x1977 (not x1907))
+(or (not x1907) (not x1805) (not x1539) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1980)
+(or (not x1980) x1907)
+(or (not x1980) x1805)
+(or (not x1980) x1539)
+(or (not x1980) x1553)
+(or (not x1980) x1554)
+(or (not x1980) x1545)
+(or (not x1980) x1523)
+(or (not x1980) x1555)
+(or x1981 (not x1980))
+(or x1981 (not x1976))
+(or x1981 (not x1899))
+(or x1981 (not x1878))
+(or x1981 (not x1803))
+(or x1980 x1976 x1899 x1878 x1803 (not x1981))
+(or (not x1982) (not x1983) (not x1984) (not x1985) (not x1986) x1987)
+(or (not x1987) x1982)
+(or (not x1987) x1983)
+(or (not x1987) x1984)
+(or (not x1987) x1985)
+(or (not x1987) x1986)
+(or (not x1988) (not x1984) (not x1983) (not x1545) (not x1989) x1990)
+(or (not x1990) x1988)
+(or (not x1990) x1984)
+(or (not x1990) x1983)
+(or (not x1990) x1545)
+(or (not x1990) x1989)
+(or (not x1991) (not x1984) (not x1983) (not x1545) (not x1992) x1993)
+(or (not x1993) x1991)
+(or (not x1993) x1984)
+(or (not x1993) x1983)
+(or (not x1993) x1545)
+(or (not x1993) x1992)
+(or (not x1994) (not x1995) (not x1983) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x1997)
+(or (not x1997) x1994)
+(or (not x1997) x1995)
+(or (not x1997) x1983)
+(or (not x1997) x1545)
+(or (not x1997) x1523)
+(or (not x1997) x1555)
+(or (not x1997) x1975)
+(or (not x1997) x1996)
+(or x1998 (not x1997))
+(or x1998 (not x1993))
+(or x1998 (not x1990))
+(or x1998 (not x1987))
+(or x1997 x1993 x1990 x1987 (not x1998))
+(or (not x1991) (not x1983) (not x1984) (not x1985) (not x1986) x1999)
+(or (not x1999) x1991)
+(or (not x1999) x1983)
+(or (not x1999) x1984)
+(or (not x1999) x1985)
+(or (not x1999) x1986)
+(or (not x2000) (not x1984) (not x1983) (not x1545) (not x1989) x2001)
+(or (not x2001) x2000)
+(or (not x2001) x1984)
+(or (not x2001) x1983)
+(or (not x2001) x1545)
+(or (not x2001) x1989)
+(or (not x2002) (not x1984) (not x1983) (not x1545) (not x1992) x2003)
+(or (not x2003) x2002)
+(or (not x2003) x1984)
+(or (not x2003) x1983)
+(or (not x2003) x1545)
+(or (not x2003) x1992)
+(or (not x2004) (not x2005) (not x1983) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2006)
+(or (not x2006) x2004)
+(or (not x2006) x2005)
+(or (not x2006) x1983)
+(or (not x2006) x1545)
+(or (not x2006) x1523)
+(or (not x2006) x1555)
+(or (not x2006) x1975)
+(or (not x2006) x1996)
+(or x2007 (not x2006))
+(or x2007 (not x2003))
+(or x2007 (not x2001))
+(or x2007 (not x1999))
+(or x2006 x2003 x2001 x1999 (not x2007))
+(or (not x2002) (not x1983) (not x1984) (not x1985) (not x1986) x2008)
+(or (not x2008) x2002)
+(or (not x2008) x1983)
+(or (not x2008) x1984)
+(or (not x2008) x1985)
+(or (not x2008) x1986)
+(or (not x2009) (not x1984) (not x1983) (not x1545) (not x1989) x2010)
+(or (not x2010) x2009)
+(or (not x2010) x1984)
+(or (not x2010) x1983)
+(or (not x2010) x1545)
+(or (not x2010) x1989)
+(or (not x2011) (not x1984) (not x1983) (not x1545) (not x1992) x2012)
+(or (not x2012) x2011)
+(or (not x2012) x1984)
+(or (not x2012) x1983)
+(or (not x2012) x1545)
+(or (not x2012) x1992)
+(or (not x2011) (not x2013) (not x1983) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2014)
+(or (not x2014) x2011)
+(or (not x2014) x2013)
+(or (not x2014) x1983)
+(or (not x2014) x1545)
+(or (not x2014) x1523)
+(or (not x2014) x1555)
+(or (not x2014) x1975)
+(or (not x2014) x1996)
+(or x2015 (not x2014))
+(or x2015 (not x2012))
+(or x2015 (not x2010))
+(or x2015 (not x2008))
+(or x2014 x2012 x2010 x2008 (not x2015))
+(or (not x1988) (not x1983) (not x1984) (not x1985) (not x1986) x2016)
+(or (not x2016) x1988)
+(or (not x2016) x1983)
+(or (not x2016) x1984)
+(or (not x2016) x1985)
+(or (not x2016) x1986)
+(or (not x2017) (not x1984) (not x1983) (not x1545) (not x1989) x2018)
+(or (not x2018) x2017)
+(or (not x2018) x1984)
+(or (not x2018) x1983)
+(or (not x2018) x1545)
+(or (not x2018) x1989)
+(or (not x2000) (not x1984) (not x1983) (not x1545) (not x1992) x2019)
+(or (not x2019) x2000)
+(or (not x2019) x1984)
+(or (not x2019) x1983)
+(or (not x2019) x1545)
+(or (not x2019) x1992)
+(or (not x2020) (not x2021) (not x1983) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2022)
+(or (not x2022) x2020)
+(or (not x2022) x2021)
+(or (not x2022) x1983)
+(or (not x2022) x1545)
+(or (not x2022) x1523)
+(or (not x2022) x1555)
+(or (not x2022) x1975)
+(or (not x2022) x1996)
+(or x2023 (not x2022))
+(or x2023 (not x2019))
+(or x2023 (not x2018))
+(or x2023 (not x2016))
+(or x2022 x2019 x2018 x2016 (not x2023))
+(or (not x2000) (not x1983) (not x1984) (not x1985) (not x1986) x2024)
+(or (not x2024) x2000)
+(or (not x2024) x1983)
+(or (not x2024) x1984)
+(or (not x2024) x1985)
+(or (not x2024) x1986)
+(or (not x2025) (not x1984) (not x1983) (not x1545) (not x1989) x2026)
+(or (not x2026) x2025)
+(or (not x2026) x1984)
+(or (not x2026) x1983)
+(or (not x2026) x1545)
+(or (not x2026) x1989)
+(or (not x2009) (not x1984) (not x1983) (not x1545) (not x1992) x2027)
+(or (not x2027) x2009)
+(or (not x2027) x1984)
+(or (not x2027) x1983)
+(or (not x2027) x1545)
+(or (not x2027) x1992)
+(or (not x2028) (not x2029) (not x1983) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2030)
+(or (not x2030) x2028)
+(or (not x2030) x2029)
+(or (not x2030) x1983)
+(or (not x2030) x1545)
+(or (not x2030) x1523)
+(or (not x2030) x1555)
+(or (not x2030) x1975)
+(or (not x2030) x1996)
+(or x2031 (not x2030))
+(or x2031 (not x2027))
+(or x2031 (not x2026))
+(or x2031 (not x2024))
+(or x2030 x2027 x2026 x2024 (not x2031))
+(or (not x2009) (not x1983) (not x1984) (not x1985) (not x1986) x2032)
+(or (not x2032) x2009)
+(or (not x2032) x1983)
+(or (not x2032) x1984)
+(or (not x2032) x1985)
+(or (not x2032) x1986)
+(or (not x2033) (not x1984) (not x1983) (not x1545) (not x1989) x2034)
+(or (not x2034) x2033)
+(or (not x2034) x1984)
+(or (not x2034) x1983)
+(or (not x2034) x1545)
+(or (not x2034) x1989)
+(or (not x2035) (not x1984) (not x1983) (not x1545) (not x1992) x2036)
+(or (not x2036) x2035)
+(or (not x2036) x1984)
+(or (not x2036) x1983)
+(or (not x2036) x1545)
+(or (not x2036) x1992)
+(or (not x2035) (not x2037) (not x1983) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2038)
+(or (not x2038) x2035)
+(or (not x2038) x2037)
+(or (not x2038) x1983)
+(or (not x2038) x1545)
+(or (not x2038) x1523)
+(or (not x2038) x1555)
+(or (not x2038) x1975)
+(or (not x2038) x1996)
+(or x2039 (not x2038))
+(or x2039 (not x2036))
+(or x2039 (not x2034))
+(or x2039 (not x2032))
+(or x2038 x2036 x2034 x2032 (not x2039))
+(or (not x2035) (not x1983) (not x1984) (not x1985) (not x1986) x2040)
+(or (not x2040) x2035)
+(or (not x2040) x1983)
+(or (not x2040) x1984)
+(or (not x2040) x1985)
+(or (not x2040) x1986)
+(or (not x2041) (not x1984) (not x1983) (not x1545) (not x1989) x2042)
+(or (not x2042) x2041)
+(or (not x2042) x1984)
+(or (not x2042) x1983)
+(or (not x2042) x1545)
+(or (not x2042) x1989)
+(or (not x2017) (not x1984) (not x1983) (not x1545) (not x1992) x2043)
+(or (not x2043) x2017)
+(or (not x2043) x1984)
+(or (not x2043) x1983)
+(or (not x2043) x1545)
+(or (not x2043) x1992)
+(or (not x2044) (not x2045) (not x1983) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2046)
+(or (not x2046) x2044)
+(or (not x2046) x2045)
+(or (not x2046) x1983)
+(or (not x2046) x1545)
+(or (not x2046) x1523)
+(or (not x2046) x1555)
+(or (not x2046) x1975)
+(or (not x2046) x1996)
+(or x2047 (not x2046))
+(or x2047 (not x2043))
+(or x2047 (not x2042))
+(or x2047 (not x2040))
+(or x2046 x2043 x2042 x2040 (not x2047))
+(or (not x2017) (not x1983) (not x1984) (not x1985) (not x1986) x2048)
+(or (not x2048) x2017)
+(or (not x2048) x1983)
+(or (not x2048) x1984)
+(or (not x2048) x1985)
+(or (not x2048) x1986)
+(or (not x2049) (not x1984) (not x1983) (not x1545) (not x1989) x2050)
+(or (not x2050) x2049)
+(or (not x2050) x1984)
+(or (not x2050) x1983)
+(or (not x2050) x1545)
+(or (not x2050) x1989)
+(or (not x2025) (not x1984) (not x1983) (not x1545) (not x1992) x2051)
+(or (not x2051) x2025)
+(or (not x2051) x1984)
+(or (not x2051) x1983)
+(or (not x2051) x1545)
+(or (not x2051) x1992)
+(or (not x2052) (not x2053) (not x1983) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2054)
+(or (not x2054) x2052)
+(or (not x2054) x2053)
+(or (not x2054) x1983)
+(or (not x2054) x1545)
+(or (not x2054) x1523)
+(or (not x2054) x1555)
+(or (not x2054) x1975)
+(or (not x2054) x1996)
+(or x2055 (not x2054))
+(or x2055 (not x2051))
+(or x2055 (not x2050))
+(or x2055 (not x2048))
+(or x2054 x2051 x2050 x2048 (not x2055))
+(or (not x2025) (not x1983) (not x1984) (not x1985) (not x1986) x2056)
+(or (not x2056) x2025)
+(or (not x2056) x1983)
+(or (not x2056) x1984)
+(or (not x2056) x1985)
+(or (not x2056) x1986)
+(or (not x2057) (not x1984) (not x1983) (not x1545) (not x1989) x2058)
+(or (not x2058) x2057)
+(or (not x2058) x1984)
+(or (not x2058) x1983)
+(or (not x2058) x1545)
+(or (not x2058) x1989)
+(or (not x2033) (not x1984) (not x1983) (not x1545) (not x1992) x2059)
+(or (not x2059) x2033)
+(or (not x2059) x1984)
+(or (not x2059) x1983)
+(or (not x2059) x1545)
+(or (not x2059) x1992)
+(or (not x2060) (not x2061) (not x1983) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2062)
+(or (not x2062) x2060)
+(or (not x2062) x2061)
+(or (not x2062) x1983)
+(or (not x2062) x1545)
+(or (not x2062) x1523)
+(or (not x2062) x1555)
+(or (not x2062) x1975)
+(or (not x2062) x1996)
+(or x2063 (not x2062))
+(or x2063 (not x2059))
+(or x2063 (not x2058))
+(or x2063 (not x2056))
+(or x2062 x2059 x2058 x2056 (not x2063))
+(or (not x2033) (not x1983) (not x1984) (not x1985) (not x1986) x2064)
+(or (not x2064) x2033)
+(or (not x2064) x1983)
+(or (not x2064) x1984)
+(or (not x2064) x1985)
+(or (not x2064) x1986)
+(or (not x2065) (not x1984) (not x1983) (not x1545) (not x1989) x2066)
+(or (not x2066) x2065)
+(or (not x2066) x1984)
+(or (not x2066) x1983)
+(or (not x2066) x1545)
+(or (not x2066) x1989)
+(or (not x2041) (not x1984) (not x1983) (not x1545) (not x1992) x2067)
+(or (not x2067) x2041)
+(or (not x2067) x1984)
+(or (not x2067) x1983)
+(or (not x2067) x1545)
+(or (not x2067) x1992)
+(or (not x2041) (not x2068) (not x1983) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2069)
+(or (not x2069) x2041)
+(or (not x2069) x2068)
+(or (not x2069) x1983)
+(or (not x2069) x1545)
+(or (not x2069) x1523)
+(or (not x2069) x1555)
+(or (not x2069) x1975)
+(or (not x2069) x1996)
+(or x2070 (not x2069))
+(or x2070 (not x2067))
+(or x2070 (not x2066))
+(or x2070 (not x2064))
+(or x2069 x2067 x2066 x2064 (not x2070))
+(or (not x2049) (not x1983) (not x1984) (not x1985) (not x1986) x2071)
+(or (not x2071) x2049)
+(or (not x2071) x1983)
+(or (not x2071) x1984)
+(or (not x2071) x1985)
+(or (not x2071) x1986)
+(or (not x1982) (not x1984) (not x1983) (not x1545) (not x1989) x2072)
+(or (not x2072) x1982)
+(or (not x2072) x1984)
+(or (not x2072) x1983)
+(or (not x2072) x1545)
+(or (not x2072) x1989)
+(or (not x2057) (not x1984) (not x1983) (not x1545) (not x1992) x2073)
+(or (not x2073) x2057)
+(or (not x2073) x1984)
+(or (not x2073) x1983)
+(or (not x2073) x1545)
+(or (not x2073) x1992)
+(or (not x2074) (not x2075) (not x1983) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2076)
+(or (not x2076) x2074)
+(or (not x2076) x2075)
+(or (not x2076) x1983)
+(or (not x2076) x1545)
+(or (not x2076) x1523)
+(or (not x2076) x1555)
+(or (not x2076) x1975)
+(or (not x2076) x1996)
+(or x2077 (not x2076))
+(or x2077 (not x2073))
+(or x2077 (not x2072))
+(or x2077 (not x2071))
+(or x2076 x2073 x2072 x2071 (not x2077))
+(or (not x2057) (not x1983) (not x1984) (not x1985) (not x1986) x2078)
+(or (not x2078) x2057)
+(or (not x2078) x1983)
+(or (not x2078) x1984)
+(or (not x2078) x1985)
+(or (not x2078) x1986)
+(or (not x1991) (not x1984) (not x1983) (not x1545) (not x1989) x2079)
+(or (not x2079) x1991)
+(or (not x2079) x1984)
+(or (not x2079) x1983)
+(or (not x2079) x1545)
+(or (not x2079) x1989)
+(or (not x2065) (not x1984) (not x1983) (not x1545) (not x1992) x2080)
+(or (not x2080) x2065)
+(or (not x2080) x1984)
+(or (not x2080) x1983)
+(or (not x2080) x1545)
+(or (not x2080) x1992)
+(or (not x2081) (not x2082) (not x1983) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2083)
+(or (not x2083) x2081)
+(or (not x2083) x2082)
+(or (not x2083) x1983)
+(or (not x2083) x1545)
+(or (not x2083) x1523)
+(or (not x2083) x1555)
+(or (not x2083) x1975)
+(or (not x2083) x1996)
+(or x2084 (not x2083))
+(or x2084 (not x2080))
+(or x2084 (not x2079))
+(or x2084 (not x2078))
+(or x2083 x2080 x2079 x2078 (not x2084))
+(or (not x2065) (not x1983) (not x1984) (not x1985) (not x1986) x2085)
+(or (not x2085) x2065)
+(or (not x2085) x1983)
+(or (not x2085) x1984)
+(or (not x2085) x1985)
+(or (not x2085) x1986)
+(or (not x2002) (not x1984) (not x1983) (not x1545) (not x1989) x2086)
+(or (not x2086) x2002)
+(or (not x2086) x1984)
+(or (not x2086) x1983)
+(or (not x2086) x1545)
+(or (not x2086) x1989)
+(or (not x2087) (not x1984) (not x1983) (not x1545) (not x1992) x2088)
+(or (not x2088) x2087)
+(or (not x2088) x1984)
+(or (not x2088) x1983)
+(or (not x2088) x1545)
+(or (not x2088) x1992)
+(or (not x2087) (not x2089) (not x1983) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2090)
+(or (not x2090) x2087)
+(or (not x2090) x2089)
+(or (not x2090) x1983)
+(or (not x2090) x1545)
+(or (not x2090) x1523)
+(or (not x2090) x1555)
+(or (not x2090) x1975)
+(or (not x2090) x1996)
+(or x2091 (not x2090))
+(or x2091 (not x2088))
+(or x2091 (not x2086))
+(or x2091 (not x2085))
+(or x2090 x2088 x2086 x2085 (not x2091))
+(or (not x2011) (not x1983) (not x1984) (not x1985) (not x1986) x2092)
+(or (not x2092) x2011)
+(or (not x2092) x1983)
+(or (not x2092) x1984)
+(or (not x2092) x1985)
+(or (not x2092) x1986)
+(or (not x2035) (not x1984) (not x1983) (not x1545) (not x1989) x2093)
+(or (not x2093) x2035)
+(or (not x2093) x1984)
+(or (not x2093) x1983)
+(or (not x2093) x1545)
+(or (not x2093) x1989)
+(or (not x1988) (not x1984) (not x1983) (not x1545) (not x1992) x2094)
+(or (not x2094) x1988)
+(or (not x2094) x1984)
+(or (not x2094) x1983)
+(or (not x2094) x1545)
+(or (not x2094) x1992)
+(or (not x2095) (not x2096) (not x1983) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2097)
+(or (not x2097) x2095)
+(or (not x2097) x2096)
+(or (not x2097) x1983)
+(or (not x2097) x1545)
+(or (not x2097) x1523)
+(or (not x2097) x1555)
+(or (not x2097) x1975)
+(or (not x2097) x1996)
+(or x2098 (not x2097))
+(or x2098 (not x2094))
+(or x2098 (not x2093))
+(or x2098 (not x2092))
+(or x2097 x2094 x2093 x2092 (not x2098))
+(or (not x2041) (not x1983) (not x1984) (not x1985) (not x1986) x2099)
+(or (not x2099) x2041)
+(or (not x2099) x1983)
+(or (not x2099) x1984)
+(or (not x2099) x1985)
+(or (not x2099) x1986)
+(or (not x2087) (not x1984) (not x1983) (not x1545) (not x1989) x2100)
+(or (not x2100) x2087)
+(or (not x2100) x1984)
+(or (not x2100) x1983)
+(or (not x2100) x1545)
+(or (not x2100) x1989)
+(or (not x2049) (not x1984) (not x1983) (not x1545) (not x1992) x2101)
+(or (not x2101) x2049)
+(or (not x2101) x1984)
+(or (not x2101) x1983)
+(or (not x2101) x1545)
+(or (not x2101) x1992)
+(or (not x2102) (not x2103) (not x1983) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2104)
+(or (not x2104) x2102)
+(or (not x2104) x2103)
+(or (not x2104) x1983)
+(or (not x2104) x1545)
+(or (not x2104) x1523)
+(or (not x2104) x1555)
+(or (not x2104) x1975)
+(or (not x2104) x1996)
+(or x2105 (not x2104))
+(or x2105 (not x2101))
+(or x2105 (not x2100))
+(or x2105 (not x2099))
+(or x2104 x2101 x2100 x2099 (not x2105))
+(or x2106 (not x2107))
+(or x2106 (not x2112))
+(or x2107 x2112 (not x2106))
+(or x2113 (not x2114))
+(or x2113 (not x2119))
+(or x2114 x2119 (not x2113))
+(or x2120 (not x2121))
+(or x2120 (not x2126))
+(or x2121 x2126 (not x2120))
+(or x2127 (not x2128))
+(or x2127 (not x2133))
+(or x2128 x2133 (not x2127))
+(or x2002 x1991 x1982 x2134)
+(or (not x2134) (not x2002))
+(or (not x2134) (not x1991))
+(or (not x2134) (not x1982))
+(or x2135 (not x2136))
+(or x2135 (not x2137))
+(or x2135 (not x2138))
+(or x2135 (not x2139))
+(or x2135 (not x2134))
+(or x2136 x2137 x2138 x2139 x2134 (not x2135))
+(or x2009 x2000 x1988 x2140)
+(or (not x2140) (not x2009))
+(or (not x2140) (not x2000))
+(or (not x2140) (not x1988))
+(or x2141 (not x2142))
+(or x2141 (not x2143))
+(or x2141 (not x2144))
+(or x2141 (not x2145))
+(or x2141 (not x2140))
+(or x2142 x2143 x2144 x2145 x2140 (not x2141))
+(or x2033 x2025 x2017 x2146)
+(or (not x2146) (not x2033))
+(or (not x2146) (not x2025))
+(or (not x2146) (not x2017))
+(or x2147 (not x2148))
+(or x2147 (not x2149))
+(or x2147 (not x2150))
+(or x2147 (not x2151))
+(or x2147 (not x2146))
+(or x2148 x2149 x2150 x2151 x2146 (not x2147))
+(or x2065 x2057 x2049 x2152)
+(or (not x2152) (not x2065))
+(or (not x2152) (not x2057))
+(or (not x2152) (not x2049))
+(or x2153 (not x2154))
+(or x2153 (not x2155))
+(or x2153 (not x2156))
+(or x2153 (not x2157))
+(or x2153 (not x2152))
+(or x2154 x2155 x2156 x2157 x2152 (not x2153))
+(or (not x2153) (not x2147) (not x2141) (not x2135) x2158)
+(or (not x2158) x2153)
+(or (not x2158) x2147)
+(or (not x2158) x2141)
+(or (not x2158) x2135)
+(or x1986 (not x2159))
+(or x1986 (not x2160))
+(or x1986 x1545)
+(or x1986 (not x2158))
+(or x2159 x2160 (not x1545) x2158 (not x1986))
+(or (not x1982) (not x2161) (not x2162) x2139)
+(or (not x2139) x1982)
+(or (not x2139) x2161)
+(or (not x2139) x2162)
+(or x2163 (not x2164))
+(or x2163 (not x2165))
+(or x2164 x2165 (not x2163))
+(or (not x1991) (not x2163) x2138)
+(or (not x2138) x1991)
+(or (not x2138) x2163)
+(or x2166 (not x2167))
+(or x2166 (not x2164))
+(or x2166 (not x2165))
+(or x2167 x2164 x2165 (not x2166))
+(or (not x2002) (not x2166) x2137)
+(or (not x2137) x2002)
+(or (not x2137) x2166)
+(or x2168 (not x1995))
+(or x2168 x1991)
+(or x1995 (not x1991) (not x2168))
+(or x2169 (not x2005))
+(or x2169 (not x1995))
+(or x2169 x2002)
+(or x2005 x1995 (not x2002) (not x2169))
+(or x2170 (not x2013))
+(or x2170 (not x2005))
+(or x2170 (not x1995))
+(or x2170 x2011)
+(or x2013 x2005 x1995 (not x2011) (not x2170))
+(or x1982 (not x2170) (not x2169) (not x2168) x2171)
+(or (not x2171) (not x1982))
+(or (not x2171) x2170)
+(or (not x2171) x2169)
+(or (not x2171) x2168)
+(or x2161 (not x2171))
+(or x2161 x2162)
+(or x2161 x1545)
+(or x2161 (not x1814))
+(or x2161 (not x1815))
+(or x2161 (not x2172))
+(or x2161 (not x2173))
+(or x2171 (not x2162) (not x1545) x1814 x1815 x2172 x2173 (not x2161))
+(or (not x2161) (not x2162) x2165)
+(or (not x2165) x2161)
+(or (not x2165) x2162)
+(or x2174 (not x2005))
+(or x2174 x2002)
+(or x2005 (not x2002) (not x2174))
+(or x2175 (not x2013))
+(or x2175 (not x2005))
+(or x2175 x2011)
+(or x2013 x2005 (not x2011) (not x2175))
+(or x1991 (not x2175) (not x2174) x2176)
+(or (not x2176) (not x1991))
+(or (not x2176) x2175)
+(or (not x2176) x2174)
+(or x2177 (not x2176))
+(or x2177 x1995)
+(or x2177 x1545)
+(or x2177 (not x1814))
+(or x2177 (not x1815))
+(or x2177 (not x2172))
+(or x2177 (not x2173))
+(or x2176 (not x1995) (not x1545) x1814 x1815 x2172 x2173 (not x2177))
+(or (not x2177) (not x1995) x2164)
+(or (not x2164) x2177)
+(or (not x2164) x1995)
+(or x2178 (not x2013))
+(or x2178 x2011)
+(or x2013 (not x2011) (not x2178))
+(or x2002 (not x2178) x2179)
+(or (not x2179) (not x2002))
+(or (not x2179) x2178)
+(or x2180 (not x2179))
+(or x2180 x2005)
+(or x2180 x1545)
+(or x2180 (not x1814))
+(or x2180 (not x1815))
+(or x2180 (not x2172))
+(or x2180 (not x2173))
+(or x2179 (not x2005) (not x1545) x1814 x1815 x2172 x2173 (not x2180))
+(or (not x2180) (not x2005) x2167)
+(or (not x2167) x2180)
+(or (not x2167) x2005)
+(or x2181 x2011)
+(or x2181 x2013)
+(or x2181 x1545)
+(or x2181 (not x1814))
+(or x2181 (not x1815))
+(or x2181 (not x2172))
+(or x2181 (not x2173))
+(or (not x2011) (not x2013) (not x1545) x1814 x1815 x2172 x2173 (not x2181))
+(or (not x2181) (not x2013) x2182)
+(or (not x2182) x2181)
+(or (not x2182) x2013)
+(or x2183 (not x2182))
+(or x2183 (not x2167))
+(or x2183 (not x2164))
+(or x2183 (not x2165))
+(or x2182 x2167 x2164 x2165 (not x2183))
+(or (not x2011) (not x2183) x2136)
+(or (not x2136) x2011)
+(or (not x2136) x2183)
+(or x2184 (not x2136))
+(or x2184 (not x2137))
+(or x2184 (not x2138))
+(or x2184 (not x2139))
+(or x2184 x2011)
+(or x2136 x2137 x2138 x2139 (not x2011) (not x2184))
+(or (not x1988) (not x2185) (not x2096) x2145)
+(or (not x2145) x1988)
+(or (not x2145) x2185)
+(or (not x2145) x2096)
+(or x2186 (not x2187))
+(or x2186 (not x2188))
+(or x2187 x2188 (not x2186))
+(or (not x2000) (not x2186) x2144)
+(or (not x2144) x2000)
+(or (not x2144) x2186)
+(or x2189 (not x2190))
+(or x2189 (not x2187))
+(or x2189 (not x2188))
+(or x2190 x2187 x2188 (not x2189))
+(or (not x2009) (not x2189) x2143)
+(or (not x2143) x2009)
+(or (not x2143) x2189)
+(or x2191 (not x2021))
+(or x2191 x2000)
+(or x2021 (not x2000) (not x2191))
+(or x2192 (not x2029))
+(or x2192 (not x2021))
+(or x2192 x2009)
+(or x2029 x2021 (not x2009) (not x2192))
+(or x2193 (not x2037))
+(or x2193 (not x2029))
+(or x2193 (not x2021))
+(or x2193 x2035)
+(or x2037 x2029 x2021 (not x2035) (not x2193))
+(or x1988 (not x2193) (not x2192) (not x2191) x2194)
+(or (not x2194) (not x1988))
+(or (not x2194) x2193)
+(or (not x2194) x2192)
+(or (not x2194) x2191)
+(or x2185 (not x2194))
+(or x2185 x2096)
+(or x2185 x1545)
+(or x2185 (not x1814))
+(or x2185 (not x1815))
+(or x2185 (not x2172))
+(or x2185 (not x2173))
+(or x2194 (not x2096) (not x1545) x1814 x1815 x2172 x2173 (not x2185))
+(or (not x2185) (not x2096) x2188)
+(or (not x2188) x2185)
+(or (not x2188) x2096)
+(or x2195 (not x2029))
+(or x2195 x2009)
+(or x2029 (not x2009) (not x2195))
+(or x2196 (not x2037))
+(or x2196 (not x2029))
+(or x2196 x2035)
+(or x2037 x2029 (not x2035) (not x2196))
+(or x2000 (not x2196) (not x2195) x2197)
+(or (not x2197) (not x2000))
+(or (not x2197) x2196)
+(or (not x2197) x2195)
+(or x2198 (not x2197))
+(or x2198 x2021)
+(or x2198 x1545)
+(or x2198 (not x1814))
+(or x2198 (not x1815))
+(or x2198 (not x2172))
+(or x2198 (not x2173))
+(or x2197 (not x2021) (not x1545) x1814 x1815 x2172 x2173 (not x2198))
+(or (not x2198) (not x2021) x2187)
+(or (not x2187) x2198)
+(or (not x2187) x2021)
+(or x2199 (not x2037))
+(or x2199 x2035)
+(or x2037 (not x2035) (not x2199))
+(or x2009 (not x2199) x2200)
+(or (not x2200) (not x2009))
+(or (not x2200) x2199)
+(or x2201 (not x2200))
+(or x2201 x2029)
+(or x2201 x1545)
+(or x2201 (not x1814))
+(or x2201 (not x1815))
+(or x2201 (not x2172))
+(or x2201 (not x2173))
+(or x2200 (not x2029) (not x1545) x1814 x1815 x2172 x2173 (not x2201))
+(or (not x2201) (not x2029) x2190)
+(or (not x2190) x2201)
+(or (not x2190) x2029)
+(or x2202 x2035)
+(or x2202 x2037)
+(or x2202 x1545)
+(or x2202 (not x1814))
+(or x2202 (not x1815))
+(or x2202 (not x2172))
+(or x2202 (not x2173))
+(or (not x2035) (not x2037) (not x1545) x1814 x1815 x2172 x2173 (not x2202))
+(or (not x2202) (not x2037) x2203)
+(or (not x2203) x2202)
+(or (not x2203) x2037)
+(or x2204 (not x2203))
+(or x2204 (not x2190))
+(or x2204 (not x2187))
+(or x2204 (not x2188))
+(or x2203 x2190 x2187 x2188 (not x2204))
+(or (not x2035) (not x2204) x2142)
+(or (not x2142) x2035)
+(or (not x2142) x2204)
+(or x2205 (not x2142))
+(or x2205 (not x2143))
+(or x2205 (not x2144))
+(or x2205 (not x2145))
+(or x2205 x2035)
+(or x2142 x2143 x2144 x2145 (not x2035) (not x2205))
+(or (not x2017) (not x2206) (not x2045) x2151)
+(or (not x2151) x2017)
+(or (not x2151) x2206)
+(or (not x2151) x2045)
+(or x2207 (not x2208))
+(or x2207 (not x2209))
+(or x2208 x2209 (not x2207))
+(or (not x2025) (not x2207) x2150)
+(or (not x2150) x2025)
+(or (not x2150) x2207)
+(or x2210 (not x2211))
+(or x2210 (not x2208))
+(or x2210 (not x2209))
+(or x2211 x2208 x2209 (not x2210))
+(or (not x2033) (not x2210) x2149)
+(or (not x2149) x2033)
+(or (not x2149) x2210)
+(or x2212 (not x2053))
+(or x2212 x2025)
+(or x2053 (not x2025) (not x2212))
+(or x2213 (not x2061))
+(or x2213 (not x2053))
+(or x2213 x2033)
+(or x2061 x2053 (not x2033) (not x2213))
+(or x2214 (not x2068))
+(or x2214 (not x2061))
+(or x2214 (not x2053))
+(or x2214 x2041)
+(or x2068 x2061 x2053 (not x2041) (not x2214))
+(or x2017 (not x2214) (not x2213) (not x2212) x2215)
+(or (not x2215) (not x2017))
+(or (not x2215) x2214)
+(or (not x2215) x2213)
+(or (not x2215) x2212)
+(or x2206 (not x2215))
+(or x2206 x2045)
+(or x2206 x1545)
+(or x2206 (not x1814))
+(or x2206 (not x1815))
+(or x2206 (not x2172))
+(or x2206 (not x2173))
+(or x2215 (not x2045) (not x1545) x1814 x1815 x2172 x2173 (not x2206))
+(or (not x2206) (not x2045) x2209)
+(or (not x2209) x2206)
+(or (not x2209) x2045)
+(or x2216 (not x2061))
+(or x2216 x2033)
+(or x2061 (not x2033) (not x2216))
+(or x2217 (not x2068))
+(or x2217 (not x2061))
+(or x2217 x2041)
+(or x2068 x2061 (not x2041) (not x2217))
+(or x2025 (not x2217) (not x2216) x2218)
+(or (not x2218) (not x2025))
+(or (not x2218) x2217)
+(or (not x2218) x2216)
+(or x2219 (not x2218))
+(or x2219 x2053)
+(or x2219 x1545)
+(or x2219 (not x1814))
+(or x2219 (not x1815))
+(or x2219 (not x2172))
+(or x2219 (not x2173))
+(or x2218 (not x2053) (not x1545) x1814 x1815 x2172 x2173 (not x2219))
+(or (not x2219) (not x2053) x2208)
+(or (not x2208) x2219)
+(or (not x2208) x2053)
+(or x2220 (not x2068))
+(or x2220 x2041)
+(or x2068 (not x2041) (not x2220))
+(or x2033 (not x2220) x2221)
+(or (not x2221) (not x2033))
+(or (not x2221) x2220)
+(or x2222 (not x2221))
+(or x2222 x2061)
+(or x2222 x1545)
+(or x2222 (not x1814))
+(or x2222 (not x1815))
+(or x2222 (not x2172))
+(or x2222 (not x2173))
+(or x2221 (not x2061) (not x1545) x1814 x1815 x2172 x2173 (not x2222))
+(or (not x2222) (not x2061) x2211)
+(or (not x2211) x2222)
+(or (not x2211) x2061)
+(or x2223 x2041)
+(or x2223 x2068)
+(or x2223 x1545)
+(or x2223 (not x1814))
+(or x2223 (not x1815))
+(or x2223 (not x2172))
+(or x2223 (not x2173))
+(or (not x2041) (not x2068) (not x1545) x1814 x1815 x2172 x2173 (not x2223))
+(or (not x2223) (not x2068) x2224)
+(or (not x2224) x2223)
+(or (not x2224) x2068)
+(or x2225 (not x2224))
+(or x2225 (not x2211))
+(or x2225 (not x2208))
+(or x2225 (not x2209))
+(or x2224 x2211 x2208 x2209 (not x2225))
+(or (not x2041) (not x2225) x2148)
+(or (not x2148) x2041)
+(or (not x2148) x2225)
+(or x2226 (not x2148))
+(or x2226 (not x2149))
+(or x2226 (not x2150))
+(or x2226 (not x2151))
+(or x2226 x2041)
+(or x2148 x2149 x2150 x2151 (not x2041) (not x2226))
+(or (not x2049) (not x2227) (not x2103) x2157)
+(or (not x2157) x2049)
+(or (not x2157) x2227)
+(or (not x2157) x2103)
+(or x2228 (not x2119))
+(or x2228 (not x2112))
+(or x2119 x2112 (not x2228))
+(or (not x2057) (not x2228) x2156)
+(or (not x2156) x2057)
+(or (not x2156) x2228)
+(or x2229 (not x2126))
+(or x2229 (not x2119))
+(or x2229 (not x2112))
+(or x2126 x2119 x2112 (not x2229))
+(or (not x2065) (not x2229) x2155)
+(or (not x2155) x2065)
+(or (not x2155) x2229)
+(or x2230 (not x2075))
+(or x2230 x2057)
+(or x2075 (not x2057) (not x2230))
+(or x2231 (not x2082))
+(or x2231 (not x2075))
+(or x2231 x2065)
+(or x2082 x2075 (not x2065) (not x2231))
+(or x2232 (not x2089))
+(or x2232 (not x2082))
+(or x2232 (not x2075))
+(or x2232 x2087)
+(or x2089 x2082 x2075 (not x2087) (not x2232))
+(or x2049 (not x2232) (not x2231) (not x2230) x2233)
+(or (not x2233) (not x2049))
+(or (not x2233) x2232)
+(or (not x2233) x2231)
+(or (not x2233) x2230)
+(or x2227 (not x2233))
+(or x2227 x2103)
+(or x2227 x1545)
+(or x2227 (not x1814))
+(or x2227 (not x1815))
+(or x2227 (not x2172))
+(or x2227 (not x2173))
+(or x2233 (not x2103) (not x1545) x1814 x1815 x2172 x2173 (not x2227))
+(or (not x2227) (not x2103) x2112)
+(or (not x2112) x2227)
+(or (not x2112) x2103)
+(or x2234 (not x2082))
+(or x2234 x2065)
+(or x2082 (not x2065) (not x2234))
+(or x2235 (not x2089))
+(or x2235 (not x2082))
+(or x2235 x2087)
+(or x2089 x2082 (not x2087) (not x2235))
+(or x2057 (not x2235) (not x2234) x2236)
+(or (not x2236) (not x2057))
+(or (not x2236) x2235)
+(or (not x2236) x2234)
+(or x2237 (not x2236))
+(or x2237 x2075)
+(or x2237 x1545)
+(or x2237 (not x1814))
+(or x2237 (not x1815))
+(or x2237 (not x2172))
+(or x2237 (not x2173))
+(or x2236 (not x2075) (not x1545) x1814 x1815 x2172 x2173 (not x2237))
+(or (not x2237) (not x2075) x2119)
+(or (not x2119) x2237)
+(or (not x2119) x2075)
+(or x2238 (not x2089))
+(or x2238 x2087)
+(or x2089 (not x2087) (not x2238))
+(or x2065 (not x2238) x2239)
+(or (not x2239) (not x2065))
+(or (not x2239) x2238)
+(or x2240 (not x2239))
+(or x2240 x2082)
+(or x2240 x1545)
+(or x2240 (not x1814))
+(or x2240 (not x1815))
+(or x2240 (not x2172))
+(or x2240 (not x2173))
+(or x2239 (not x2082) (not x1545) x1814 x1815 x2172 x2173 (not x2240))
+(or (not x2240) (not x2082) x2126)
+(or (not x2126) x2240)
+(or (not x2126) x2082)
+(or x2241 x2087)
+(or x2241 x2089)
+(or x2241 x1545)
+(or x2241 (not x1814))
+(or x2241 (not x1815))
+(or x2241 (not x2172))
+(or x2241 (not x2173))
+(or (not x2087) (not x2089) (not x1545) x1814 x1815 x2172 x2173 (not x2241))
+(or (not x2241) (not x2089) x2133)
+(or (not x2133) x2241)
+(or (not x2133) x2089)
+(or x2242 (not x2133))
+(or x2242 (not x2126))
+(or x2242 (not x2119))
+(or x2242 (not x2112))
+(or x2133 x2126 x2119 x2112 (not x2242))
+(or (not x2087) (not x2242) x2154)
+(or (not x2154) x2087)
+(or (not x2154) x2242)
+(or x2243 (not x2154))
+(or x2243 (not x2155))
+(or x2243 (not x2156))
+(or x2243 (not x2157))
+(or x2243 x2087)
+(or x2154 x2155 x2156 x2157 (not x2087) (not x2243))
+(or (not x2243) (not x2226) (not x2205) (not x2184) x2244)
+(or (not x2244) x2243)
+(or (not x2244) x2226)
+(or (not x2244) x2205)
+(or (not x2244) x2184)
+(or x2087 x2065 x2057 x2049 x2041 x2033 x2025 x2017 x2035 x2009 x2000 x1988 x2011 x2002 x1991 x1982 x2160)
+(or (not x2160) (not x2087))
+(or (not x2160) (not x2065))
+(or (not x2160) (not x2057))
+(or (not x2160) (not x2049))
+(or (not x2160) (not x2041))
+(or (not x2160) (not x2033))
+(or (not x2160) (not x2025))
+(or (not x2160) (not x2017))
+(or (not x2160) (not x2035))
+(or (not x2160) (not x2009))
+(or (not x2160) (not x2000))
+(or (not x2160) (not x1988))
+(or (not x2160) (not x2011))
+(or (not x2160) (not x2002))
+(or (not x2160) (not x1991))
+(or (not x2160) (not x1982))
+(or x1985 (not x2159))
+(or x1985 (not x2160))
+(or x1985 x1545)
+(or x1985 (not x2244))
+(or x2159 x2160 (not x1545) x2244 (not x1985))
+(or (not x2087) (not x1983) (not x1984) (not x1985) (not x1986) x2245)
+(or (not x2245) x2087)
+(or (not x2245) x1983)
+(or (not x2245) x1984)
+(or (not x2245) x1985)
+(or (not x2245) x1986)
+(or (not x2246) (not x2247) (not x2248) (not x2249) (not x2011) x2250)
+(or (not x2250) x2246)
+(or (not x2250) x2247)
+(or (not x2250) x2248)
+(or (not x2250) x2249)
+(or (not x2250) x2011)
+(or (not x2251) (not x2252) (not x2253) (not x2254) (not x2035) x2255)
+(or (not x2255) x2251)
+(or (not x2255) x2252)
+(or (not x2255) x2253)
+(or (not x2255) x2254)
+(or (not x2255) x2035)
+(or (not x2256) (not x2257) (not x2258) (not x2259) (not x2041) x2260)
+(or (not x2260) x2256)
+(or (not x2260) x2257)
+(or (not x2260) x2258)
+(or (not x2260) x2259)
+(or (not x2260) x2041)
+(or (not x2261) (not x2262) (not x2263) (not x2264) (not x2087) x2265)
+(or (not x2265) x2261)
+(or (not x2265) x2262)
+(or (not x2265) x2263)
+(or (not x2265) x2264)
+(or (not x2265) x2087)
+(or x1989 (not x2265))
+(or x1989 (not x2260))
+(or x1989 (not x2255))
+(or x1989 (not x2250))
+(or x2265 x2260 x2255 x2250 (not x1989))
+(or (not x2011) (not x1984) (not x1983) (not x1545) (not x1989) x2266)
+(or (not x2266) x2011)
+(or (not x2266) x1984)
+(or (not x2266) x1983)
+(or (not x2266) x1545)
+(or (not x2266) x1989)
+(or x2267 (not x2002))
+(or x2267 (not x1991))
+(or x2267 (not x1982))
+(or x2002 x1991 x1982 (not x2267))
+(or x2249 x1982)
+(or x2249 (not x2268))
+(or x2249 x2162)
+(or (not x1982) x2268 (not x2162) (not x2249))
+(or (not x2269) (not x2270) x2271)
+(or (not x2271) x2269)
+(or (not x2271) x2270)
+(or x2248 x1991)
+(or x2248 (not x2271))
+(or (not x1991) x2271 (not x2248))
+(or (not x2272) (not x2269) (not x2270) x2273)
+(or (not x2273) x2272)
+(or (not x2273) x2269)
+(or (not x2273) x2270)
+(or x2247 x2002)
+(or x2247 (not x2273))
+(or (not x2002) x2273 (not x2247))
+(or (not x2274) (not x2162) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2268)
+(or (not x2268) x2274)
+(or (not x2268) x2162)
+(or (not x2268) x1545)
+(or (not x2268) x1523)
+(or (not x2268) x1555)
+(or (not x2268) x1975)
+(or (not x2268) x1996)
+(or x2270 (not x2268))
+(or x2270 x2162)
+(or x2268 (not x2162) (not x2270))
+(or x2005 (not x2002) x2275)
+(or (not x2275) (not x2005))
+(or (not x2275) x2002)
+(or x2013 x2005 (not x2011) x2276)
+(or (not x2276) (not x2013))
+(or (not x2276) (not x2005))
+(or (not x2276) x2011)
+(or x1994 (not x1991))
+(or x1994 (not x2276))
+(or x1994 (not x2275))
+(or x1991 x2276 x2275 (not x1994))
+(or (not x1994) (not x1995) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2277)
+(or (not x2277) x1994)
+(or (not x2277) x1995)
+(or (not x2277) x1545)
+(or (not x2277) x1523)
+(or (not x2277) x1555)
+(or (not x2277) x1975)
+(or (not x2277) x1996)
+(or x2269 (not x2277))
+(or x2269 x1995)
+(or x2277 (not x1995) (not x2269))
+(or x2013 (not x2011) x2278)
+(or (not x2278) (not x2013))
+(or (not x2278) x2011)
+(or x2004 (not x2002))
+(or x2004 (not x2278))
+(or x2002 x2278 (not x2004))
+(or (not x2004) (not x2005) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2279)
+(or (not x2279) x2004)
+(or (not x2279) x2005)
+(or (not x2279) x1545)
+(or (not x2279) x1523)
+(or (not x2279) x1555)
+(or (not x2279) x1975)
+(or (not x2279) x1996)
+(or x2272 (not x2279))
+(or x2272 x2005)
+(or x2279 (not x2005) (not x2272))
+(or (not x2011) (not x2013) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2280)
+(or (not x2280) x2011)
+(or (not x2280) x2013)
+(or (not x2280) x1545)
+(or (not x2280) x1523)
+(or (not x2280) x1555)
+(or (not x2280) x1975)
+(or (not x2280) x1996)
+(or x2281 (not x2280))
+(or x2281 x2013)
+(or x2280 (not x2013) (not x2281))
+(or (not x2281) (not x2272) (not x2269) (not x2270) x2282)
+(or (not x2282) x2281)
+(or (not x2282) x2272)
+(or (not x2282) x2269)
+(or (not x2282) x2270)
+(or x2246 x2011)
+(or x2246 (not x2282))
+(or (not x2011) x2282 (not x2246))
+(or (not x2246) (not x2247) (not x2248) (not x2249) (not x2267) x2283)
+(or (not x2283) x2246)
+(or (not x2283) x2247)
+(or (not x2283) x2248)
+(or (not x2283) x2249)
+(or (not x2283) x2267)
+(or x2284 (not x2009))
+(or x2284 (not x2000))
+(or x2284 (not x1988))
+(or x2009 x2000 x1988 (not x2284))
+(or x2254 x1988)
+(or x2254 (not x2285))
+(or x2254 x2096)
+(or (not x1988) x2285 (not x2096) (not x2254))
+(or (not x2286) (not x2287) x2288)
+(or (not x2288) x2286)
+(or (not x2288) x2287)
+(or x2253 x2000)
+(or x2253 (not x2288))
+(or (not x2000) x2288 (not x2253))
+(or (not x2289) (not x2286) (not x2287) x2290)
+(or (not x2290) x2289)
+(or (not x2290) x2286)
+(or (not x2290) x2287)
+(or x2252 x2009)
+(or x2252 (not x2290))
+(or (not x2009) x2290 (not x2252))
+(or x2021 (not x2000) x2291)
+(or (not x2291) (not x2021))
+(or (not x2291) x2000)
+(or x2029 x2021 (not x2009) x2292)
+(or (not x2292) (not x2029))
+(or (not x2292) (not x2021))
+(or (not x2292) x2009)
+(or x2037 x2029 x2021 (not x2035) x2293)
+(or (not x2293) (not x2037))
+(or (not x2293) (not x2029))
+(or (not x2293) (not x2021))
+(or (not x2293) x2035)
+(or x2095 (not x1988))
+(or x2095 (not x2293))
+(or x2095 (not x2292))
+(or x2095 (not x2291))
+(or x1988 x2293 x2292 x2291 (not x2095))
+(or (not x2095) (not x2096) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2285)
+(or (not x2285) x2095)
+(or (not x2285) x2096)
+(or (not x2285) x1545)
+(or (not x2285) x1523)
+(or (not x2285) x1555)
+(or (not x2285) x1975)
+(or (not x2285) x1996)
+(or x2287 (not x2285))
+(or x2287 x2096)
+(or x2285 (not x2096) (not x2287))
+(or x2029 (not x2009) x2294)
+(or (not x2294) (not x2029))
+(or (not x2294) x2009)
+(or x2037 x2029 (not x2035) x2295)
+(or (not x2295) (not x2037))
+(or (not x2295) (not x2029))
+(or (not x2295) x2035)
+(or x2020 (not x2000))
+(or x2020 (not x2295))
+(or x2020 (not x2294))
+(or x2000 x2295 x2294 (not x2020))
+(or (not x2020) (not x2021) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2296)
+(or (not x2296) x2020)
+(or (not x2296) x2021)
+(or (not x2296) x1545)
+(or (not x2296) x1523)
+(or (not x2296) x1555)
+(or (not x2296) x1975)
+(or (not x2296) x1996)
+(or x2286 (not x2296))
+(or x2286 x2021)
+(or x2296 (not x2021) (not x2286))
+(or x2037 (not x2035) x2297)
+(or (not x2297) (not x2037))
+(or (not x2297) x2035)
+(or x2028 (not x2009))
+(or x2028 (not x2297))
+(or x2009 x2297 (not x2028))
+(or (not x2028) (not x2029) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2298)
+(or (not x2298) x2028)
+(or (not x2298) x2029)
+(or (not x2298) x1545)
+(or (not x2298) x1523)
+(or (not x2298) x1555)
+(or (not x2298) x1975)
+(or (not x2298) x1996)
+(or x2289 (not x2298))
+(or x2289 x2029)
+(or x2298 (not x2029) (not x2289))
+(or (not x2035) (not x2037) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2299)
+(or (not x2299) x2035)
+(or (not x2299) x2037)
+(or (not x2299) x1545)
+(or (not x2299) x1523)
+(or (not x2299) x1555)
+(or (not x2299) x1975)
+(or (not x2299) x1996)
+(or x2300 (not x2299))
+(or x2300 x2037)
+(or x2299 (not x2037) (not x2300))
+(or (not x2300) (not x2289) (not x2286) (not x2287) x2301)
+(or (not x2301) x2300)
+(or (not x2301) x2289)
+(or (not x2301) x2286)
+(or (not x2301) x2287)
+(or x2251 x2035)
+(or x2251 (not x2301))
+(or (not x2035) x2301 (not x2251))
+(or (not x2251) (not x2252) (not x2253) (not x2254) (not x2284) x2302)
+(or (not x2302) x2251)
+(or (not x2302) x2252)
+(or (not x2302) x2253)
+(or (not x2302) x2254)
+(or (not x2302) x2284)
+(or x2303 (not x2033))
+(or x2303 (not x2025))
+(or x2303 (not x2017))
+(or x2033 x2025 x2017 (not x2303))
+(or x2259 x2017)
+(or x2259 (not x2304))
+(or x2259 x2045)
+(or (not x2017) x2304 (not x2045) (not x2259))
+(or (not x2305) (not x2306) x2307)
+(or (not x2307) x2305)
+(or (not x2307) x2306)
+(or x2258 x2025)
+(or x2258 (not x2307))
+(or (not x2025) x2307 (not x2258))
+(or (not x2308) (not x2305) (not x2306) x2309)
+(or (not x2309) x2308)
+(or (not x2309) x2305)
+(or (not x2309) x2306)
+(or x2257 x2033)
+(or x2257 (not x2309))
+(or (not x2033) x2309 (not x2257))
+(or x2053 (not x2025) x2310)
+(or (not x2310) (not x2053))
+(or (not x2310) x2025)
+(or x2061 x2053 (not x2033) x2311)
+(or (not x2311) (not x2061))
+(or (not x2311) (not x2053))
+(or (not x2311) x2033)
+(or x2068 x2061 x2053 (not x2041) x2312)
+(or (not x2312) (not x2068))
+(or (not x2312) (not x2061))
+(or (not x2312) (not x2053))
+(or (not x2312) x2041)
+(or x2044 (not x2017))
+(or x2044 (not x2312))
+(or x2044 (not x2311))
+(or x2044 (not x2310))
+(or x2017 x2312 x2311 x2310 (not x2044))
+(or (not x2044) (not x2045) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2304)
+(or (not x2304) x2044)
+(or (not x2304) x2045)
+(or (not x2304) x1545)
+(or (not x2304) x1523)
+(or (not x2304) x1555)
+(or (not x2304) x1975)
+(or (not x2304) x1996)
+(or x2306 (not x2304))
+(or x2306 x2045)
+(or x2304 (not x2045) (not x2306))
+(or x2061 (not x2033) x2313)
+(or (not x2313) (not x2061))
+(or (not x2313) x2033)
+(or x2068 x2061 (not x2041) x2314)
+(or (not x2314) (not x2068))
+(or (not x2314) (not x2061))
+(or (not x2314) x2041)
+(or x2052 (not x2025))
+(or x2052 (not x2314))
+(or x2052 (not x2313))
+(or x2025 x2314 x2313 (not x2052))
+(or (not x2052) (not x2053) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2315)
+(or (not x2315) x2052)
+(or (not x2315) x2053)
+(or (not x2315) x1545)
+(or (not x2315) x1523)
+(or (not x2315) x1555)
+(or (not x2315) x1975)
+(or (not x2315) x1996)
+(or x2305 (not x2315))
+(or x2305 x2053)
+(or x2315 (not x2053) (not x2305))
+(or x2068 (not x2041) x2316)
+(or (not x2316) (not x2068))
+(or (not x2316) x2041)
+(or x2060 (not x2033))
+(or x2060 (not x2316))
+(or x2033 x2316 (not x2060))
+(or (not x2060) (not x2061) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2317)
+(or (not x2317) x2060)
+(or (not x2317) x2061)
+(or (not x2317) x1545)
+(or (not x2317) x1523)
+(or (not x2317) x1555)
+(or (not x2317) x1975)
+(or (not x2317) x1996)
+(or x2308 (not x2317))
+(or x2308 x2061)
+(or x2317 (not x2061) (not x2308))
+(or (not x2041) (not x2068) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2318)
+(or (not x2318) x2041)
+(or (not x2318) x2068)
+(or (not x2318) x1545)
+(or (not x2318) x1523)
+(or (not x2318) x1555)
+(or (not x2318) x1975)
+(or (not x2318) x1996)
+(or x2319 (not x2318))
+(or x2319 x2068)
+(or x2318 (not x2068) (not x2319))
+(or (not x2319) (not x2308) (not x2305) (not x2306) x2320)
+(or (not x2320) x2319)
+(or (not x2320) x2308)
+(or (not x2320) x2305)
+(or (not x2320) x2306)
+(or x2256 x2041)
+(or x2256 (not x2320))
+(or (not x2041) x2320 (not x2256))
+(or (not x2256) (not x2257) (not x2258) (not x2259) (not x2303) x2321)
+(or (not x2321) x2256)
+(or (not x2321) x2257)
+(or (not x2321) x2258)
+(or (not x2321) x2259)
+(or (not x2321) x2303)
+(or x2322 (not x2065))
+(or x2322 (not x2057))
+(or x2322 (not x2049))
+(or x2065 x2057 x2049 (not x2322))
+(or x2264 x2049)
+(or x2264 (not x2323))
+(or x2264 x2103)
+(or (not x2049) x2323 (not x2103) (not x2264))
+(or (not x2324) (not x2325) x2326)
+(or (not x2326) x2324)
+(or (not x2326) x2325)
+(or x2263 x2057)
+(or x2263 (not x2326))
+(or (not x2057) x2326 (not x2263))
+(or (not x2327) (not x2324) (not x2325) x2328)
+(or (not x2328) x2327)
+(or (not x2328) x2324)
+(or (not x2328) x2325)
+(or x2262 x2065)
+(or x2262 (not x2328))
+(or (not x2065) x2328 (not x2262))
+(or x2075 (not x2057) x2329)
+(or (not x2329) (not x2075))
+(or (not x2329) x2057)
+(or x2082 x2075 (not x2065) x2330)
+(or (not x2330) (not x2082))
+(or (not x2330) (not x2075))
+(or (not x2330) x2065)
+(or x2089 x2082 x2075 (not x2087) x2331)
+(or (not x2331) (not x2089))
+(or (not x2331) (not x2082))
+(or (not x2331) (not x2075))
+(or (not x2331) x2087)
+(or x2102 (not x2049))
+(or x2102 (not x2331))
+(or x2102 (not x2330))
+(or x2102 (not x2329))
+(or x2049 x2331 x2330 x2329 (not x2102))
+(or (not x2102) (not x2103) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2323)
+(or (not x2323) x2102)
+(or (not x2323) x2103)
+(or (not x2323) x1545)
+(or (not x2323) x1523)
+(or (not x2323) x1555)
+(or (not x2323) x1975)
+(or (not x2323) x1996)
+(or x2325 (not x2323))
+(or x2325 x2103)
+(or x2323 (not x2103) (not x2325))
+(or x2082 (not x2065) x2332)
+(or (not x2332) (not x2082))
+(or (not x2332) x2065)
+(or x2089 x2082 (not x2087) x2333)
+(or (not x2333) (not x2089))
+(or (not x2333) (not x2082))
+(or (not x2333) x2087)
+(or x2074 (not x2057))
+(or x2074 (not x2333))
+(or x2074 (not x2332))
+(or x2057 x2333 x2332 (not x2074))
+(or (not x2074) (not x2075) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2334)
+(or (not x2334) x2074)
+(or (not x2334) x2075)
+(or (not x2334) x1545)
+(or (not x2334) x1523)
+(or (not x2334) x1555)
+(or (not x2334) x1975)
+(or (not x2334) x1996)
+(or x2324 (not x2334))
+(or x2324 x2075)
+(or x2334 (not x2075) (not x2324))
+(or x2089 (not x2087) x2335)
+(or (not x2335) (not x2089))
+(or (not x2335) x2087)
+(or x2081 (not x2065))
+(or x2081 (not x2335))
+(or x2065 x2335 (not x2081))
+(or (not x2081) (not x2082) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2336)
+(or (not x2336) x2081)
+(or (not x2336) x2082)
+(or (not x2336) x1545)
+(or (not x2336) x1523)
+(or (not x2336) x1555)
+(or (not x2336) x1975)
+(or (not x2336) x1996)
+(or x2327 (not x2336))
+(or x2327 x2082)
+(or x2336 (not x2082) (not x2327))
+(or (not x2087) (not x2089) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2337)
+(or (not x2337) x2087)
+(or (not x2337) x2089)
+(or (not x2337) x1545)
+(or (not x2337) x1523)
+(or (not x2337) x1555)
+(or (not x2337) x1975)
+(or (not x2337) x1996)
+(or x2338 (not x2337))
+(or x2338 x2089)
+(or x2337 (not x2089) (not x2338))
+(or (not x2338) (not x2327) (not x2324) (not x2325) x2339)
+(or (not x2339) x2338)
+(or (not x2339) x2327)
+(or (not x2339) x2324)
+(or (not x2339) x2325)
+(or x2261 x2087)
+(or x2261 (not x2339))
+(or (not x2087) x2339 (not x2261))
+(or (not x2261) (not x2262) (not x2263) (not x2264) (not x2322) x2340)
+(or (not x2340) x2261)
+(or (not x2340) x2262)
+(or (not x2340) x2263)
+(or (not x2340) x2264)
+(or (not x2340) x2322)
+(or x1992 (not x2340))
+(or x1992 (not x2321))
+(or x1992 (not x2302))
+(or x1992 (not x2283))
+(or x2340 x2321 x2302 x2283 (not x1992))
+(or (not x1554) x1974 x2173)
+(or (not x2173) x1554)
+(or (not x2173) (not x1974))
+(or x1984 x1545)
+(or x1984 (not x1814))
+(or x1984 (not x1815))
+(or x1984 (not x2172))
+(or x1984 (not x2173))
+(or (not x1545) x1814 x1815 x2172 x2173 (not x1984))
+(or (not x1982) (not x1984) (not x1983) (not x1545) (not x1992) x2341)
+(or (not x2341) x1982)
+(or (not x2341) x1984)
+(or (not x2341) x1983)
+(or (not x2341) x1545)
+(or (not x2341) x1992)
+(or x1983 (not x2087))
+(or x1983 (not x2065))
+(or x1983 (not x2057))
+(or x1983 (not x2049))
+(or x1983 (not x2041))
+(or x1983 (not x2033))
+(or x1983 (not x2025))
+(or x1983 (not x2017))
+(or x1983 (not x2035))
+(or x1983 (not x2009))
+(or x1983 (not x2000))
+(or x1983 (not x1988))
+(or x1983 (not x2011))
+(or x1983 (not x2002))
+(or x1983 (not x1991))
+(or x1983 (not x1982))
+(or x2087 x2065 x2057 x2049 x2041 x2033 x2025 x2017 x2035 x2009 x2000 x1988 x2011 x2002 x1991 x1982 (not x1983))
+(or x1995 (not x1991) x2342)
+(or (not x2342) (not x1995))
+(or (not x2342) x1991)
+(or x2005 x1995 (not x2002) x2343)
+(or (not x2343) (not x2005))
+(or (not x2343) (not x1995))
+(or (not x2343) x2002)
+(or x2013 x2005 x1995 (not x2011) x2344)
+(or (not x2344) (not x2013))
+(or (not x2344) (not x2005))
+(or (not x2344) (not x1995))
+(or (not x2344) x2011)
+(or x2274 (not x1982))
+(or x2274 (not x2344))
+(or x2274 (not x2343))
+(or x2274 (not x2342))
+(or x1982 x2344 x2343 x2342 (not x2274))
+(or (not x2274) (not x2162) (not x1983) (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2345)
+(or (not x2345) x2274)
+(or (not x2345) x2162)
+(or (not x2345) x1983)
+(or (not x2345) x1545)
+(or (not x2345) x1523)
+(or (not x2345) x1555)
+(or (not x2345) x1975)
+(or (not x2345) x1996)
+(or x2346 (not x2345))
+(or x2346 (not x2341))
+(or x2346 (not x2266))
+(or x2346 (not x2245))
+(or x2346 (not x2160))
+(or x2345 x2341 x2266 x2245 x2160 (not x2346))
+(or (not x2347) (not x1974) x2348)
+(or (not x2348) x2347)
+(or (not x2348) x1974)
+(or x1553 x1974)
+(or x1553 (not x2172))
+(or (not x1974) x2172 (not x1553))
+(or (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x1802)
+(or (not x1802) x1553)
+(or (not x1802) x1554)
+(or (not x1802) x1545)
+(or (not x1802) x1523)
+(or (not x1802) x1555)
+(or (not x1545) (not x1523) (not x1555) (not x1553) (not x1554) (not x1545) (not x1523) (not x1555) x2349)
+(or (not x2349) x1545)
+(or (not x2349) x1523)
+(or (not x2349) x1555)
+(or (not x2349) x1553)
+(or (not x2349) x1554)
+(or (not x2349) x1545)
+(or (not x2349) x1523)
+(or (not x2349) x1555)
+(or x2350 (not x2349))
+(or x2350 (not x2348))
+(or x2349 x2348 (not x2350))
+(or (not x1649) x1648 x1647 (not x1646) x1645 (not x2351) x2352 x2353 (not x2354) (not x2355) x2356)
+(or (not x2356) x1649)
+(or (not x2356) (not x1648))
+(or (not x2356) (not x1647))
+(or (not x2356) x1646)
+(or (not x2356) (not x1645))
+(or (not x2356) x2351)
+(or (not x2356) (not x2352))
+(or (not x2356) (not x2353))
+(or (not x2356) x2354)
+(or (not x2356) x2355)
+(or x2357 (not x2358))
+(or x2357 (not x2359))
+(or x2357 (not x2356))
+(or x2357 (not x1645))
+(or x2358 x2359 x2356 x1645 (not x2357))
+(or x2360 (not x2358))
+(or x2360 (not x2359))
+(or x2360 x1649)
+(or x2360 (not x1648))
+(or x2360 (not x1647))
+(or x2360 x1646)
+(or x2360 (not x1645))
+(or x2360 x2351)
+(or x2360 (not x2352))
+(or x2360 (not x2353))
+(or x2360 x2354)
+(or x2360 x2355)
+(or x2358 x2359 (not x1649) x1648 x1647 (not x1646) x1645 (not x2351) x2352 x2353 (not x2354) (not x2355) (not x2360))
+(or x2361 (not x2358))
+(or x2361 x1649)
+(or x2361 (not x1648))
+(or x2361 (not x1647))
+(or x2361 (not x1646))
+(or x2361 x1645)
+(or x2358 (not x1649) x1648 x1647 x1646 (not x1645) (not x2361))
+(or x2362 x1649)
+(or x2362 (not x1648))
+(or x2362 (not x1647))
+(or x2362 (not x1646))
+(or x2362 (not x1645))
+(or x2362 x2363)
+(or (not x1649) x1648 x1647 x1646 x1645 (not x2363) (not x2362))
+(or (not x2362) (not x2361) (not x2360) (not x2357) x2364)
+(or (not x2364) x2362)
+(or (not x2364) x2361)
+(or (not x2364) x2360)
+(or (not x2364) x2357)
+(or (not x1656) x1655 x1654 (not x1653) x1652 (not x2365) x2352 x2353 (not x2354) (not x2355) x2366)
+(or (not x2366) x1656)
+(or (not x2366) (not x1655))
+(or (not x2366) (not x1654))
+(or (not x2366) x1653)
+(or (not x2366) (not x1652))
+(or (not x2366) x2365)
+(or (not x2366) (not x2352))
+(or (not x2366) (not x2353))
+(or (not x2366) x2354)
+(or (not x2366) x2355)
+(or x2367 (not x2368))
+(or x2367 (not x2369))
+(or x2367 (not x2366))
+(or x2367 (not x1652))
+(or x2368 x2369 x2366 x1652 (not x2367))
+(or x2370 (not x2368))
+(or x2370 (not x2369))
+(or x2370 x1656)
+(or x2370 (not x1655))
+(or x2370 (not x1654))
+(or x2370 x1653)
+(or x2370 (not x1652))
+(or x2370 x2365)
+(or x2370 (not x2352))
+(or x2370 (not x2353))
+(or x2370 x2354)
+(or x2370 x2355)
+(or x2368 x2369 (not x1656) x1655 x1654 (not x1653) x1652 (not x2365) x2352 x2353 (not x2354) (not x2355) (not x2370))
+(or x2371 (not x2368))
+(or x2371 x1656)
+(or x2371 (not x1655))
+(or x2371 (not x1654))
+(or x2371 (not x1653))
+(or x2371 x1652)
+(or x2368 (not x1656) x1655 x1654 x1653 (not x1652) (not x2371))
+(or x2372 x1656)
+(or x2372 (not x1655))
+(or x2372 (not x1654))
+(or x2372 (not x1653))
+(or x2372 (not x1652))
+(or x2372 x2373)
+(or (not x1656) x1655 x1654 x1653 x1652 (not x2373) (not x2372))
+(or (not x2372) (not x2371) (not x2370) (not x2367) x2374)
+(or (not x2374) x2372)
+(or (not x2374) x2371)
+(or (not x2374) x2370)
+(or (not x2374) x2367)
+(or (not x1663) x1662 x1661 (not x1660) x1659 (not x2375) x2352 x2353 (not x2354) (not x2355) x2376)
+(or (not x2376) x1663)
+(or (not x2376) (not x1662))
+(or (not x2376) (not x1661))
+(or (not x2376) x1660)
+(or (not x2376) (not x1659))
+(or (not x2376) x2375)
+(or (not x2376) (not x2352))
+(or (not x2376) (not x2353))
+(or (not x2376) x2354)
+(or (not x2376) x2355)
+(or x2377 (not x2378))
+(or x2377 (not x2379))
+(or x2377 (not x2376))
+(or x2377 (not x1659))
+(or x2378 x2379 x2376 x1659 (not x2377))
+(or x2380 (not x2378))
+(or x2380 (not x2379))
+(or x2380 x1663)
+(or x2380 (not x1662))
+(or x2380 (not x1661))
+(or x2380 x1660)
+(or x2380 (not x1659))
+(or x2380 x2375)
+(or x2380 (not x2352))
+(or x2380 (not x2353))
+(or x2380 x2354)
+(or x2380 x2355)
+(or x2378 x2379 (not x1663) x1662 x1661 (not x1660) x1659 (not x2375) x2352 x2353 (not x2354) (not x2355) (not x2380))
+(or x2381 (not x2378))
+(or x2381 x1663)
+(or x2381 (not x1662))
+(or x2381 (not x1661))
+(or x2381 (not x1660))
+(or x2381 x1659)
+(or x2378 (not x1663) x1662 x1661 x1660 (not x1659) (not x2381))
+(or x2382 x1663)
+(or x2382 (not x1662))
+(or x2382 (not x1661))
+(or x2382 (not x1660))
+(or x2382 (not x1659))
+(or x2382 x2383)
+(or (not x1663) x1662 x1661 x1660 x1659 (not x2383) (not x2382))
+(or (not x2382) (not x2381) (not x2380) (not x2377) x2384)
+(or (not x2384) x2382)
+(or (not x2384) x2381)
+(or (not x2384) x2380)
+(or (not x2384) x2377)
+(or (not x1670) x1669 x1668 (not x1667) x1666 (not x2385) x2352 x2353 (not x2354) (not x2355) x2386)
+(or (not x2386) x1670)
+(or (not x2386) (not x1669))
+(or (not x2386) (not x1668))
+(or (not x2386) x1667)
+(or (not x2386) (not x1666))
+(or (not x2386) x2385)
+(or (not x2386) (not x2352))
+(or (not x2386) (not x2353))
+(or (not x2386) x2354)
+(or (not x2386) x2355)
+(or x2387 (not x2388))
+(or x2387 (not x2389))
+(or x2387 (not x2386))
+(or x2387 (not x1666))
+(or x2388 x2389 x2386 x1666 (not x2387))
+(or x2390 (not x2388))
+(or x2390 (not x2389))
+(or x2390 x1670)
+(or x2390 (not x1669))
+(or x2390 (not x1668))
+(or x2390 x1667)
+(or x2390 (not x1666))
+(or x2390 x2385)
+(or x2390 (not x2352))
+(or x2390 (not x2353))
+(or x2390 x2354)
+(or x2390 x2355)
+(or x2388 x2389 (not x1670) x1669 x1668 (not x1667) x1666 (not x2385) x2352 x2353 (not x2354) (not x2355) (not x2390))
+(or x2391 (not x2388))
+(or x2391 x1670)
+(or x2391 (not x1669))
+(or x2391 (not x1668))
+(or x2391 (not x1667))
+(or x2391 x1666)
+(or x2388 (not x1670) x1669 x1668 x1667 (not x1666) (not x2391))
+(or x2392 x1670)
+(or x2392 (not x1669))
+(or x2392 (not x1668))
+(or x2392 (not x1667))
+(or x2392 (not x1666))
+(or x2392 x2393)
+(or (not x1670) x1669 x1668 x1667 x1666 (not x2393) (not x2392))
+(or (not x2392) (not x2391) (not x2390) (not x2387) x2394)
+(or (not x2394) x2392)
+(or (not x2394) x2391)
+(or (not x2394) x2390)
+(or (not x2394) x2387)
+(or (not x1684) x1683 x1682 (not x1681) x1680 (not x2351) x2352 x2353 x2354 (not x2355) x2395)
+(or (not x2395) x1684)
+(or (not x2395) (not x1683))
+(or (not x2395) (not x1682))
+(or (not x2395) x1681)
+(or (not x2395) (not x1680))
+(or (not x2395) x2351)
+(or (not x2395) (not x2352))
+(or (not x2395) (not x2353))
+(or (not x2395) (not x2354))
+(or (not x2395) x2355)
+(or x2396 (not x2397))
+(or x2396 (not x2398))
+(or x2396 (not x2395))
+(or x2396 (not x1680))
+(or x2397 x2398 x2395 x1680 (not x2396))
+(or x2399 (not x2397))
+(or x2399 (not x2398))
+(or x2399 x1684)
+(or x2399 (not x1683))
+(or x2399 (not x1682))
+(or x2399 x1681)
+(or x2399 (not x1680))
+(or x2399 x2351)
+(or x2399 (not x2352))
+(or x2399 (not x2353))
+(or x2399 (not x2354))
+(or x2399 x2355)
+(or x2397 x2398 (not x1684) x1683 x1682 (not x1681) x1680 (not x2351) x2352 x2353 x2354 (not x2355) (not x2399))
+(or x2400 (not x2397))
+(or x2400 x1684)
+(or x2400 (not x1683))
+(or x2400 (not x1682))
+(or x2400 (not x1681))
+(or x2400 x1680)
+(or x2397 (not x1684) x1683 x1682 x1681 (not x1680) (not x2400))
+(or x2401 x1684)
+(or x2401 (not x1683))
+(or x2401 (not x1682))
+(or x2401 (not x1681))
+(or x2401 (not x1680))
+(or x2401 x2402)
+(or (not x1684) x1683 x1682 x1681 x1680 (not x2402) (not x2401))
+(or (not x2401) (not x2400) (not x2399) (not x2396) x2403)
+(or (not x2403) x2401)
+(or (not x2403) x2400)
+(or (not x2403) x2399)
+(or (not x2403) x2396)
+(or (not x1691) x1690 x1689 (not x1688) x1687 (not x2365) x2352 x2353 x2354 (not x2355) x2404)
+(or (not x2404) x1691)
+(or (not x2404) (not x1690))
+(or (not x2404) (not x1689))
+(or (not x2404) x1688)
+(or (not x2404) (not x1687))
+(or (not x2404) x2365)
+(or (not x2404) (not x2352))
+(or (not x2404) (not x2353))
+(or (not x2404) (not x2354))
+(or (not x2404) x2355)
+(or x2405 (not x2406))
+(or x2405 (not x2407))
+(or x2405 (not x2404))
+(or x2405 (not x1687))
+(or x2406 x2407 x2404 x1687 (not x2405))
+(or x2408 (not x2406))
+(or x2408 (not x2407))
+(or x2408 x1691)
+(or x2408 (not x1690))
+(or x2408 (not x1689))
+(or x2408 x1688)
+(or x2408 (not x1687))
+(or x2408 x2365)
+(or x2408 (not x2352))
+(or x2408 (not x2353))
+(or x2408 (not x2354))
+(or x2408 x2355)
+(or x2406 x2407 (not x1691) x1690 x1689 (not x1688) x1687 (not x2365) x2352 x2353 x2354 (not x2355) (not x2408))
+(or x2409 (not x2406))
+(or x2409 x1691)
+(or x2409 (not x1690))
+(or x2409 (not x1689))
+(or x2409 (not x1688))
+(or x2409 x1687)
+(or x2406 (not x1691) x1690 x1689 x1688 (not x1687) (not x2409))
+(or x2410 x1691)
+(or x2410 (not x1690))
+(or x2410 (not x1689))
+(or x2410 (not x1688))
+(or x2410 (not x1687))
+(or x2410 x2411)
+(or (not x1691) x1690 x1689 x1688 x1687 (not x2411) (not x2410))
+(or (not x2410) (not x2409) (not x2408) (not x2405) x2412)
+(or (not x2412) x2410)
+(or (not x2412) x2409)
+(or (not x2412) x2408)
+(or (not x2412) x2405)
+(or (not x1698) x1697 x1696 (not x1695) x1694 (not x2375) x2352 x2353 x2354 (not x2355) x2413)
+(or (not x2413) x1698)
+(or (not x2413) (not x1697))
+(or (not x2413) (not x1696))
+(or (not x2413) x1695)
+(or (not x2413) (not x1694))
+(or (not x2413) x2375)
+(or (not x2413) (not x2352))
+(or (not x2413) (not x2353))
+(or (not x2413) (not x2354))
+(or (not x2413) x2355)
+(or x2414 (not x2415))
+(or x2414 (not x2416))
+(or x2414 (not x2413))
+(or x2414 (not x1694))
+(or x2415 x2416 x2413 x1694 (not x2414))
+(or x2417 (not x2415))
+(or x2417 (not x2416))
+(or x2417 x1698)
+(or x2417 (not x1697))
+(or x2417 (not x1696))
+(or x2417 x1695)
+(or x2417 (not x1694))
+(or x2417 x2375)
+(or x2417 (not x2352))
+(or x2417 (not x2353))
+(or x2417 (not x2354))
+(or x2417 x2355)
+(or x2415 x2416 (not x1698) x1697 x1696 (not x1695) x1694 (not x2375) x2352 x2353 x2354 (not x2355) (not x2417))
+(or x2418 (not x2415))
+(or x2418 x1698)
+(or x2418 (not x1697))
+(or x2418 (not x1696))
+(or x2418 (not x1695))
+(or x2418 x1694)
+(or x2415 (not x1698) x1697 x1696 x1695 (not x1694) (not x2418))
+(or x2419 x1698)
+(or x2419 (not x1697))
+(or x2419 (not x1696))
+(or x2419 (not x1695))
+(or x2419 (not x1694))
+(or x2419 x2420)
+(or (not x1698) x1697 x1696 x1695 x1694 (not x2420) (not x2419))
+(or (not x2419) (not x2418) (not x2417) (not x2414) x2421)
+(or (not x2421) x2419)
+(or (not x2421) x2418)
+(or (not x2421) x2417)
+(or (not x2421) x2414)
+(or (not x1705) x1704 x1703 (not x1702) x1701 (not x2385) x2352 x2353 x2354 (not x2355) x2422)
+(or (not x2422) x1705)
+(or (not x2422) (not x1704))
+(or (not x2422) (not x1703))
+(or (not x2422) x1702)
+(or (not x2422) (not x1701))
+(or (not x2422) x2385)
+(or (not x2422) (not x2352))
+(or (not x2422) (not x2353))
+(or (not x2422) (not x2354))
+(or (not x2422) x2355)
+(or x2423 (not x2424))
+(or x2423 (not x2425))
+(or x2423 (not x2422))
+(or x2423 (not x1701))
+(or x2424 x2425 x2422 x1701 (not x2423))
+(or x2426 (not x2424))
+(or x2426 (not x2425))
+(or x2426 x1705)
+(or x2426 (not x1704))
+(or x2426 (not x1703))
+(or x2426 x1702)
+(or x2426 (not x1701))
+(or x2426 x2385)
+(or x2426 (not x2352))
+(or x2426 (not x2353))
+(or x2426 (not x2354))
+(or x2426 x2355)
+(or x2424 x2425 (not x1705) x1704 x1703 (not x1702) x1701 (not x2385) x2352 x2353 x2354 (not x2355) (not x2426))
+(or x2427 (not x2424))
+(or x2427 x1705)
+(or x2427 (not x1704))
+(or x2427 (not x1703))
+(or x2427 (not x1702))
+(or x2427 x1701)
+(or x2424 (not x1705) x1704 x1703 x1702 (not x1701) (not x2427))
+(or x2428 x1705)
+(or x2428 (not x1704))
+(or x2428 (not x1703))
+(or x2428 (not x1702))
+(or x2428 (not x1701))
+(or x2428 x2429)
+(or (not x1705) x1704 x1703 x1702 x1701 (not x2429) (not x2428))
+(or (not x2428) (not x2427) (not x2426) (not x2423) x2430)
+(or (not x2430) x2428)
+(or (not x2430) x2427)
+(or (not x2430) x2426)
+(or (not x2430) x2423)
+(or (not x1719) x1718 x1717 (not x1716) x1715 (not x2351) x2352 x2353 (not x2354) x2355 x2431)
+(or (not x2431) x1719)
+(or (not x2431) (not x1718))
+(or (not x2431) (not x1717))
+(or (not x2431) x1716)
+(or (not x2431) (not x1715))
+(or (not x2431) x2351)
+(or (not x2431) (not x2352))
+(or (not x2431) (not x2353))
+(or (not x2431) x2354)
+(or (not x2431) (not x2355))
+(or x2432 (not x2433))
+(or x2432 (not x2434))
+(or x2432 (not x2431))
+(or x2432 (not x1715))
+(or x2433 x2434 x2431 x1715 (not x2432))
+(or x2435 (not x2433))
+(or x2435 (not x2434))
+(or x2435 x1719)
+(or x2435 (not x1718))
+(or x2435 (not x1717))
+(or x2435 x1716)
+(or x2435 (not x1715))
+(or x2435 x2351)
+(or x2435 (not x2352))
+(or x2435 (not x2353))
+(or x2435 x2354)
+(or x2435 (not x2355))
+(or x2433 x2434 (not x1719) x1718 x1717 (not x1716) x1715 (not x2351) x2352 x2353 (not x2354) x2355 (not x2435))
+(or x2436 (not x2433))
+(or x2436 x1719)
+(or x2436 (not x1718))
+(or x2436 (not x1717))
+(or x2436 (not x1716))
+(or x2436 x1715)
+(or x2433 (not x1719) x1718 x1717 x1716 (not x1715) (not x2436))
+(or x2437 x1719)
+(or x2437 (not x1718))
+(or x2437 (not x1717))
+(or x2437 (not x1716))
+(or x2437 (not x1715))
+(or x2437 x2438)
+(or (not x1719) x1718 x1717 x1716 x1715 (not x2438) (not x2437))
+(or (not x2437) (not x2436) (not x2435) (not x2432) x2439)
+(or (not x2439) x2437)
+(or (not x2439) x2436)
+(or (not x2439) x2435)
+(or (not x2439) x2432)
+(or (not x1726) x1725 x1724 (not x1723) x1722 (not x2365) x2352 x2353 (not x2354) x2355 x2440)
+(or (not x2440) x1726)
+(or (not x2440) (not x1725))
+(or (not x2440) (not x1724))
+(or (not x2440) x1723)
+(or (not x2440) (not x1722))
+(or (not x2440) x2365)
+(or (not x2440) (not x2352))
+(or (not x2440) (not x2353))
+(or (not x2440) x2354)
+(or (not x2440) (not x2355))
+(or x2441 (not x2442))
+(or x2441 (not x2443))
+(or x2441 (not x2440))
+(or x2441 (not x1722))
+(or x2442 x2443 x2440 x1722 (not x2441))
+(or x2444 (not x2442))
+(or x2444 (not x2443))
+(or x2444 x1726)
+(or x2444 (not x1725))
+(or x2444 (not x1724))
+(or x2444 x1723)
+(or x2444 (not x1722))
+(or x2444 x2365)
+(or x2444 (not x2352))
+(or x2444 (not x2353))
+(or x2444 x2354)
+(or x2444 (not x2355))
+(or x2442 x2443 (not x1726) x1725 x1724 (not x1723) x1722 (not x2365) x2352 x2353 (not x2354) x2355 (not x2444))
+(or x2445 (not x2442))
+(or x2445 x1726)
+(or x2445 (not x1725))
+(or x2445 (not x1724))
+(or x2445 (not x1723))
+(or x2445 x1722)
+(or x2442 (not x1726) x1725 x1724 x1723 (not x1722) (not x2445))
+(or x2446 x1726)
+(or x2446 (not x1725))
+(or x2446 (not x1724))
+(or x2446 (not x1723))
+(or x2446 (not x1722))
+(or x2446 x2447)
+(or (not x1726) x1725 x1724 x1723 x1722 (not x2447) (not x2446))
+(or (not x2446) (not x2445) (not x2444) (not x2441) x2448)
+(or (not x2448) x2446)
+(or (not x2448) x2445)
+(or (not x2448) x2444)
+(or (not x2448) x2441)
+(or (not x1733) x1732 x1731 (not x1730) x1729 (not x2375) x2352 x2353 (not x2354) x2355 x2449)
+(or (not x2449) x1733)
+(or (not x2449) (not x1732))
+(or (not x2449) (not x1731))
+(or (not x2449) x1730)
+(or (not x2449) (not x1729))
+(or (not x2449) x2375)
+(or (not x2449) (not x2352))
+(or (not x2449) (not x2353))
+(or (not x2449) x2354)
+(or (not x2449) (not x2355))
+(or x2450 (not x2451))
+(or x2450 (not x2452))
+(or x2450 (not x2449))
+(or x2450 (not x1729))
+(or x2451 x2452 x2449 x1729 (not x2450))
+(or x2453 (not x2451))
+(or x2453 (not x2452))
+(or x2453 x1733)
+(or x2453 (not x1732))
+(or x2453 (not x1731))
+(or x2453 x1730)
+(or x2453 (not x1729))
+(or x2453 x2375)
+(or x2453 (not x2352))
+(or x2453 (not x2353))
+(or x2453 x2354)
+(or x2453 (not x2355))
+(or x2451 x2452 (not x1733) x1732 x1731 (not x1730) x1729 (not x2375) x2352 x2353 (not x2354) x2355 (not x2453))
+(or x2454 (not x2451))
+(or x2454 x1733)
+(or x2454 (not x1732))
+(or x2454 (not x1731))
+(or x2454 (not x1730))
+(or x2454 x1729)
+(or x2451 (not x1733) x1732 x1731 x1730 (not x1729) (not x2454))
+(or x2455 x1733)
+(or x2455 (not x1732))
+(or x2455 (not x1731))
+(or x2455 (not x1730))
+(or x2455 (not x1729))
+(or x2455 x2456)
+(or (not x1733) x1732 x1731 x1730 x1729 (not x2456) (not x2455))
+(or (not x2455) (not x2454) (not x2453) (not x2450) x2457)
+(or (not x2457) x2455)
+(or (not x2457) x2454)
+(or (not x2457) x2453)
+(or (not x2457) x2450)
+(or (not x1740) x1739 x1738 (not x1737) x1736 (not x2385) x2352 x2353 (not x2354) x2355 x2458)
+(or (not x2458) x1740)
+(or (not x2458) (not x1739))
+(or (not x2458) (not x1738))
+(or (not x2458) x1737)
+(or (not x2458) (not x1736))
+(or (not x2458) x2385)
+(or (not x2458) (not x2352))
+(or (not x2458) (not x2353))
+(or (not x2458) x2354)
+(or (not x2458) (not x2355))
+(or x2459 (not x2460))
+(or x2459 (not x2461))
+(or x2459 (not x2458))
+(or x2459 (not x1736))
+(or x2460 x2461 x2458 x1736 (not x2459))
+(or x2462 (not x2460))
+(or x2462 (not x2461))
+(or x2462 x1740)
+(or x2462 (not x1739))
+(or x2462 (not x1738))
+(or x2462 x1737)
+(or x2462 (not x1736))
+(or x2462 x2385)
+(or x2462 (not x2352))
+(or x2462 (not x2353))
+(or x2462 x2354)
+(or x2462 (not x2355))
+(or x2460 x2461 (not x1740) x1739 x1738 (not x1737) x1736 (not x2385) x2352 x2353 (not x2354) x2355 (not x2462))
+(or x2463 (not x2460))
+(or x2463 x1740)
+(or x2463 (not x1739))
+(or x2463 (not x1738))
+(or x2463 (not x1737))
+(or x2463 x1736)
+(or x2460 (not x1740) x1739 x1738 x1737 (not x1736) (not x2463))
+(or x2464 x1740)
+(or x2464 (not x1739))
+(or x2464 (not x1738))
+(or x2464 (not x1737))
+(or x2464 (not x1736))
+(or x2464 x2465)
+(or (not x1740) x1739 x1738 x1737 x1736 (not x2465) (not x2464))
+(or (not x2464) (not x2463) (not x2462) (not x2459) x2466)
+(or (not x2466) x2464)
+(or (not x2466) x2463)
+(or (not x2466) x2462)
+(or (not x2466) x2459)
+(or (not x1754) x1753 x1752 (not x1751) x1750 (not x2351) x2352 x2353 x2354 x2355 x2467)
+(or (not x2467) x1754)
+(or (not x2467) (not x1753))
+(or (not x2467) (not x1752))
+(or (not x2467) x1751)
+(or (not x2467) (not x1750))
+(or (not x2467) x2351)
+(or (not x2467) (not x2352))
+(or (not x2467) (not x2353))
+(or (not x2467) (not x2354))
+(or (not x2467) (not x2355))
+(or x2468 (not x2469))
+(or x2468 (not x2470))
+(or x2468 (not x2467))
+(or x2468 (not x1750))
+(or x2469 x2470 x2467 x1750 (not x2468))
+(or x2471 (not x2469))
+(or x2471 (not x2470))
+(or x2471 x1754)
+(or x2471 (not x1753))
+(or x2471 (not x1752))
+(or x2471 x1751)
+(or x2471 (not x1750))
+(or x2471 x2351)
+(or x2471 (not x2352))
+(or x2471 (not x2353))
+(or x2471 (not x2354))
+(or x2471 (not x2355))
+(or x2469 x2470 (not x1754) x1753 x1752 (not x1751) x1750 (not x2351) x2352 x2353 x2354 x2355 (not x2471))
+(or x2472 (not x2469))
+(or x2472 x1754)
+(or x2472 (not x1753))
+(or x2472 (not x1752))
+(or x2472 (not x1751))
+(or x2472 x1750)
+(or x2469 (not x1754) x1753 x1752 x1751 (not x1750) (not x2472))
+(or x2473 x1754)
+(or x2473 (not x1753))
+(or x2473 (not x1752))
+(or x2473 (not x1751))
+(or x2473 (not x1750))
+(or x2473 x2474)
+(or (not x1754) x1753 x1752 x1751 x1750 (not x2474) (not x2473))
+(or (not x2473) (not x2472) (not x2471) (not x2468) x2475)
+(or (not x2475) x2473)
+(or (not x2475) x2472)
+(or (not x2475) x2471)
+(or (not x2475) x2468)
+(or (not x1761) x1760 x1759 (not x1758) x1757 (not x2365) x2352 x2353 x2354 x2355 x2476)
+(or (not x2476) x1761)
+(or (not x2476) (not x1760))
+(or (not x2476) (not x1759))
+(or (not x2476) x1758)
+(or (not x2476) (not x1757))
+(or (not x2476) x2365)
+(or (not x2476) (not x2352))
+(or (not x2476) (not x2353))
+(or (not x2476) (not x2354))
+(or (not x2476) (not x2355))
+(or x2477 (not x2478))
+(or x2477 (not x2479))
+(or x2477 (not x2476))
+(or x2477 (not x1757))
+(or x2478 x2479 x2476 x1757 (not x2477))
+(or x2480 (not x2478))
+(or x2480 (not x2479))
+(or x2480 x1761)
+(or x2480 (not x1760))
+(or x2480 (not x1759))
+(or x2480 x1758)
+(or x2480 (not x1757))
+(or x2480 x2365)
+(or x2480 (not x2352))
+(or x2480 (not x2353))
+(or x2480 (not x2354))
+(or x2480 (not x2355))
+(or x2478 x2479 (not x1761) x1760 x1759 (not x1758) x1757 (not x2365) x2352 x2353 x2354 x2355 (not x2480))
+(or x2481 (not x2478))
+(or x2481 x1761)
+(or x2481 (not x1760))
+(or x2481 (not x1759))
+(or x2481 (not x1758))
+(or x2481 x1757)
+(or x2478 (not x1761) x1760 x1759 x1758 (not x1757) (not x2481))
+(or x2482 x1761)
+(or x2482 (not x1760))
+(or x2482 (not x1759))
+(or x2482 (not x1758))
+(or x2482 (not x1757))
+(or x2482 x2483)
+(or (not x1761) x1760 x1759 x1758 x1757 (not x2483) (not x2482))
+(or (not x2482) (not x2481) (not x2480) (not x2477) x2484)
+(or (not x2484) x2482)
+(or (not x2484) x2481)
+(or (not x2484) x2480)
+(or (not x2484) x2477)
+(or (not x1768) x1767 x1766 (not x1765) x1764 (not x2375) x2352 x2353 x2354 x2355 x2485)
+(or (not x2485) x1768)
+(or (not x2485) (not x1767))
+(or (not x2485) (not x1766))
+(or (not x2485) x1765)
+(or (not x2485) (not x1764))
+(or (not x2485) x2375)
+(or (not x2485) (not x2352))
+(or (not x2485) (not x2353))
+(or (not x2485) (not x2354))
+(or (not x2485) (not x2355))
+(or x2486 (not x2487))
+(or x2486 (not x2488))
+(or x2486 (not x2485))
+(or x2486 (not x1764))
+(or x2487 x2488 x2485 x1764 (not x2486))
+(or x2489 (not x2487))
+(or x2489 (not x2488))
+(or x2489 x1768)
+(or x2489 (not x1767))
+(or x2489 (not x1766))
+(or x2489 x1765)
+(or x2489 (not x1764))
+(or x2489 x2375)
+(or x2489 (not x2352))
+(or x2489 (not x2353))
+(or x2489 (not x2354))
+(or x2489 (not x2355))
+(or x2487 x2488 (not x1768) x1767 x1766 (not x1765) x1764 (not x2375) x2352 x2353 x2354 x2355 (not x2489))
+(or x2490 (not x2487))
+(or x2490 x1768)
+(or x2490 (not x1767))
+(or x2490 (not x1766))
+(or x2490 (not x1765))
+(or x2490 x1764)
+(or x2487 (not x1768) x1767 x1766 x1765 (not x1764) (not x2490))
+(or x2491 x1768)
+(or x2491 (not x1767))
+(or x2491 (not x1766))
+(or x2491 (not x1765))
+(or x2491 (not x1764))
+(or x2491 x2492)
+(or (not x1768) x1767 x1766 x1765 x1764 (not x2492) (not x2491))
+(or (not x2491) (not x2490) (not x2489) (not x2486) x2493)
+(or (not x2493) x2491)
+(or (not x2493) x2490)
+(or (not x2493) x2489)
+(or (not x2493) x2486)
+(or (not x1775) x1774 x1773 (not x1772) x1771 (not x2385) x2352 x2353 x2354 x2355 x2494)
+(or (not x2494) x1775)
+(or (not x2494) (not x1774))
+(or (not x2494) (not x1773))
+(or (not x2494) x1772)
+(or (not x2494) (not x1771))
+(or (not x2494) x2385)
+(or (not x2494) (not x2352))
+(or (not x2494) (not x2353))
+(or (not x2494) (not x2354))
+(or (not x2494) (not x2355))
+(or x2495 (not x2496))
+(or x2495 (not x2497))
+(or x2495 (not x2494))
+(or x2495 (not x1771))
+(or x2496 x2497 x2494 x1771 (not x2495))
+(or x2498 (not x2496))
+(or x2498 (not x2497))
+(or x2498 x1775)
+(or x2498 (not x1774))
+(or x2498 (not x1773))
+(or x2498 x1772)
+(or x2498 (not x1771))
+(or x2498 x2385)
+(or x2498 (not x2352))
+(or x2498 (not x2353))
+(or x2498 (not x2354))
+(or x2498 (not x2355))
+(or x2496 x2497 (not x1775) x1774 x1773 (not x1772) x1771 (not x2385) x2352 x2353 x2354 x2355 (not x2498))
+(or x2499 (not x2496))
+(or x2499 x1775)
+(or x2499 (not x1774))
+(or x2499 (not x1773))
+(or x2499 (not x1772))
+(or x2499 x1771)
+(or x2496 (not x1775) x1774 x1773 x1772 (not x1771) (not x2499))
+(or x2500 x1775)
+(or x2500 (not x1774))
+(or x2500 (not x1773))
+(or x2500 (not x1772))
+(or x2500 (not x1771))
+(or x2500 x2501)
+(or (not x1775) x1774 x1773 x1772 x1771 (not x2501) (not x2500))
+(or (not x2500) (not x2499) (not x2498) (not x2495) x2502)
+(or (not x2502) x2500)
+(or (not x2502) x2499)
+(or (not x2502) x2498)
+(or (not x2502) x2495)
+(or (not x2111) x2110 x2109 (not x2108) x2107 (not x2351) (not x2352) (not x2353) x2354 x2355 x2503)
+(or (not x2503) x2111)
+(or (not x2503) (not x2110))
+(or (not x2503) (not x2109))
+(or (not x2503) x2108)
+(or (not x2503) (not x2107))
+(or (not x2503) x2351)
+(or (not x2503) x2352)
+(or (not x2503) x2353)
+(or (not x2503) (not x2354))
+(or (not x2503) (not x2355))
+(or x2504 (not x2505))
+(or x2504 (not x2506))
+(or x2504 (not x2503))
+(or x2504 (not x2107))
+(or x2505 x2506 x2503 x2107 (not x2504))
+(or x2507 (not x2505))
+(or x2507 (not x2506))
+(or x2507 x2111)
+(or x2507 (not x2110))
+(or x2507 (not x2109))
+(or x2507 x2108)
+(or x2507 (not x2107))
+(or x2507 x2351)
+(or x2507 x2352)
+(or x2507 x2353)
+(or x2507 (not x2354))
+(or x2507 (not x2355))
+(or x2505 x2506 (not x2111) x2110 x2109 (not x2108) x2107 (not x2351) (not x2352) (not x2353) x2354 x2355 (not x2507))
+(or x2508 (not x2505))
+(or x2508 x2111)
+(or x2508 (not x2110))
+(or x2508 (not x2109))
+(or x2508 (not x2108))
+(or x2508 x2107)
+(or x2505 (not x2111) x2110 x2109 x2108 (not x2107) (not x2508))
+(or x2509 x2111)
+(or x2509 (not x2110))
+(or x2509 (not x2109))
+(or x2509 (not x2108))
+(or x2509 (not x2107))
+(or x2509 x2510)
+(or (not x2111) x2110 x2109 x2108 x2107 (not x2510) (not x2509))
+(or (not x2509) (not x2508) (not x2507) (not x2504) x2511)
+(or (not x2511) x2509)
+(or (not x2511) x2508)
+(or (not x2511) x2507)
+(or (not x2511) x2504)
+(or (not x2118) x2117 x2116 (not x2115) x2114 (not x2365) (not x2352) (not x2353) x2354 x2355 x2512)
+(or (not x2512) x2118)
+(or (not x2512) (not x2117))
+(or (not x2512) (not x2116))
+(or (not x2512) x2115)
+(or (not x2512) (not x2114))
+(or (not x2512) x2365)
+(or (not x2512) x2352)
+(or (not x2512) x2353)
+(or (not x2512) (not x2354))
+(or (not x2512) (not x2355))
+(or x2513 (not x2514))
+(or x2513 (not x2515))
+(or x2513 (not x2512))
+(or x2513 (not x2114))
+(or x2514 x2515 x2512 x2114 (not x2513))
+(or x2516 (not x2514))
+(or x2516 (not x2515))
+(or x2516 x2118)
+(or x2516 (not x2117))
+(or x2516 (not x2116))
+(or x2516 x2115)
+(or x2516 (not x2114))
+(or x2516 x2365)
+(or x2516 x2352)
+(or x2516 x2353)
+(or x2516 (not x2354))
+(or x2516 (not x2355))
+(or x2514 x2515 (not x2118) x2117 x2116 (not x2115) x2114 (not x2365) (not x2352) (not x2353) x2354 x2355 (not x2516))
+(or x2517 (not x2514))
+(or x2517 x2118)
+(or x2517 (not x2117))
+(or x2517 (not x2116))
+(or x2517 (not x2115))
+(or x2517 x2114)
+(or x2514 (not x2118) x2117 x2116 x2115 (not x2114) (not x2517))
+(or x2518 x2118)
+(or x2518 (not x2117))
+(or x2518 (not x2116))
+(or x2518 (not x2115))
+(or x2518 (not x2114))
+(or x2518 x2519)
+(or (not x2118) x2117 x2116 x2115 x2114 (not x2519) (not x2518))
+(or (not x2518) (not x2517) (not x2516) (not x2513) x2520)
+(or (not x2520) x2518)
+(or (not x2520) x2517)
+(or (not x2520) x2516)
+(or (not x2520) x2513)
+(or (not x2125) x2124 x2123 (not x2122) x2121 (not x2375) (not x2352) (not x2353) x2354 x2355 x2521)
+(or (not x2521) x2125)
+(or (not x2521) (not x2124))
+(or (not x2521) (not x2123))
+(or (not x2521) x2122)
+(or (not x2521) (not x2121))
+(or (not x2521) x2375)
+(or (not x2521) x2352)
+(or (not x2521) x2353)
+(or (not x2521) (not x2354))
+(or (not x2521) (not x2355))
+(or x2522 (not x2523))
+(or x2522 (not x2524))
+(or x2522 (not x2521))
+(or x2522 (not x2121))
+(or x2523 x2524 x2521 x2121 (not x2522))
+(or x2525 (not x2523))
+(or x2525 (not x2524))
+(or x2525 x2125)
+(or x2525 (not x2124))
+(or x2525 (not x2123))
+(or x2525 x2122)
+(or x2525 (not x2121))
+(or x2525 x2375)
+(or x2525 x2352)
+(or x2525 x2353)
+(or x2525 (not x2354))
+(or x2525 (not x2355))
+(or x2523 x2524 (not x2125) x2124 x2123 (not x2122) x2121 (not x2375) (not x2352) (not x2353) x2354 x2355 (not x2525))
+(or x2526 (not x2523))
+(or x2526 x2125)
+(or x2526 (not x2124))
+(or x2526 (not x2123))
+(or x2526 (not x2122))
+(or x2526 x2121)
+(or x2523 (not x2125) x2124 x2123 x2122 (not x2121) (not x2526))
+(or x2527 x2125)
+(or x2527 (not x2124))
+(or x2527 (not x2123))
+(or x2527 (not x2122))
+(or x2527 (not x2121))
+(or x2527 x2528)
+(or (not x2125) x2124 x2123 x2122 x2121 (not x2528) (not x2527))
+(or (not x2527) (not x2526) (not x2525) (not x2522) x2529)
+(or (not x2529) x2527)
+(or (not x2529) x2526)
+(or (not x2529) x2525)
+(or (not x2529) x2522)
+(or (not x2132) x2131 x2130 (not x2129) x2128 (not x2385) (not x2352) (not x2353) x2354 x2355 x2530)
+(or (not x2530) x2132)
+(or (not x2530) (not x2131))
+(or (not x2530) (not x2130))
+(or (not x2530) x2129)
+(or (not x2530) (not x2128))
+(or (not x2530) x2385)
+(or (not x2530) x2352)
+(or (not x2530) x2353)
+(or (not x2530) (not x2354))
+(or (not x2530) (not x2355))
+(or x2531 (not x2532))
+(or x2531 (not x2533))
+(or x2531 (not x2530))
+(or x2531 (not x2128))
+(or x2532 x2533 x2530 x2128 (not x2531))
+(or x2534 (not x2532))
+(or x2534 (not x2533))
+(or x2534 x2132)
+(or x2534 (not x2131))
+(or x2534 (not x2130))
+(or x2534 x2129)
+(or x2534 (not x2128))
+(or x2534 x2385)
+(or x2534 x2352)
+(or x2534 x2353)
+(or x2534 (not x2354))
+(or x2534 (not x2355))
+(or x2532 x2533 (not x2132) x2131 x2130 (not x2129) x2128 (not x2385) (not x2352) (not x2353) x2354 x2355 (not x2534))
+(or x2535 (not x2532))
+(or x2535 x2132)
+(or x2535 (not x2131))
+(or x2535 (not x2130))
+(or x2535 (not x2129))
+(or x2535 x2128)
+(or x2532 (not x2132) x2131 x2130 x2129 (not x2128) (not x2535))
+(or x2536 x2132)
+(or x2536 (not x2131))
+(or x2536 (not x2130))
+(or x2536 (not x2129))
+(or x2536 (not x2128))
+(or x2536 x2537)
+(or (not x2132) x2131 x2130 x2129 x2128 (not x2537) (not x2536))
+(or (not x2536) (not x2535) (not x2534) (not x2531) x2538)
+(or (not x2538) x2536)
+(or (not x2538) x2535)
+(or (not x2538) x2534)
+(or (not x2538) x2531)
+(or (not x2539) x2540 (not x2541) (not x2542) (not x1521) (not x2543) x2544)
+(or (not x2544) x2539)
+(or (not x2544) (not x2540))
+(or (not x2544) x2541)
+(or (not x2544) x2542)
+(or (not x2544) x1521)
+(or (not x2544) x2543)
+(or (not x2545) (not x2542) (not x2546) x2547)
+(or (not x2547) x2545)
+(or (not x2547) x2542)
+(or (not x2547) x2546)
+(or x2548 (not x2547))
+(or x2548 (not x2544))
+(or x2547 x2544 (not x2548))
+(or (not x2549) x2550 (not x2551) (not x2542) (not x1521) (not x2543) x2552)
+(or (not x2552) x2549)
+(or (not x2552) (not x2550))
+(or (not x2552) x2551)
+(or (not x2552) x2542)
+(or (not x2552) x1521)
+(or (not x2552) x2543)
+(or (not x2553) (not x2542) (not x2546) x2554)
+(or (not x2554) x2553)
+(or (not x2554) x2542)
+(or (not x2554) x2546)
+(or x2555 (not x2554))
+(or x2555 (not x2552))
+(or x2554 x2552 (not x2555))
+(or (not x2556) x2557 (not x2558) (not x2542) (not x1521) (not x2543) x2559)
+(or (not x2559) x2556)
+(or (not x2559) (not x2557))
+(or (not x2559) x2558)
+(or (not x2559) x2542)
+(or (not x2559) x1521)
+(or (not x2559) x2543)
+(or (not x2560) (not x2542) (not x2546) x2561)
+(or (not x2561) x2560)
+(or (not x2561) x2542)
+(or (not x2561) x2546)
+(or x2562 (not x2561))
+(or x2562 (not x2559))
+(or x2561 x2559 (not x2562))
+(or (not x2563) x2564 (not x2565) (not x2542) (not x1521) (not x2543) x2566)
+(or (not x2566) x2563)
+(or (not x2566) (not x2564))
+(or (not x2566) x2565)
+(or (not x2566) x2542)
+(or (not x2566) x1521)
+(or (not x2566) x2543)
+(or x2546 x1521)
+(or x2546 (not x2567))
+(or (not x1521) x2567 (not x2546))
+(or x2542 (not x2568))
+(or x2542 (not x2560))
+(or x2542 (not x2553))
+(or x2542 (not x2545))
+(or x2568 x2560 x2553 x2545 (not x2542))
+(or (not x2568) (not x2542) (not x2546) x2569)
+(or (not x2569) x2568)
+(or (not x2569) x2542)
+(or (not x2569) x2546)
+(or x2568 x2560 x2553 x2545 x2570)
+(or (not x2570) (not x2568))
+(or (not x2570) (not x2560))
+(or (not x2570) (not x2553))
+(or (not x2570) (not x2545))
+(or x2571 (not x2570))
+(or x2571 (not x2569))
+(or x2571 (not x2566))
+(or x2570 x2569 x2566 (not x2571))
+(or (not x2572) (not x2553) x2573)
+(or (not x2573) x2572)
+(or (not x2573) x2553)
+(or (not x2574) (not x2572) (not x2560) x2575)
+(or (not x2575) x2574)
+(or (not x2575) x2572)
+(or (not x2575) x2560)
+(or (not x2576) (not x2574) (not x2572) (not x2568) x2577)
+(or (not x2577) x2576)
+(or (not x2577) x2574)
+(or (not x2577) x2572)
+(or (not x2577) x2568)
+(or x2563 (not x2545))
+(or x2563 (not x2577))
+(or x2563 (not x2575))
+(or x2563 (not x2573))
+(or x2545 x2577 x2575 x2573 (not x2563))
+(or (not x2563) x2564 (not x2565) (not x1521) (not x2543) x2578)
+(or (not x2578) x2563)
+(or (not x2578) (not x2564))
+(or (not x2578) x2565)
+(or (not x2578) x1521)
+(or (not x2578) x2543)
+(or (not x2574) (not x2560) x2579)
+(or (not x2579) x2574)
+(or (not x2579) x2560)
+(or (not x2576) (not x2574) (not x2568) x2580)
+(or (not x2580) x2576)
+(or (not x2580) x2574)
+(or (not x2580) x2568)
+(or (not x2581) (not x2576) (not x2574) (not x2545) x2582)
+(or (not x2582) x2581)
+(or (not x2582) x2576)
+(or (not x2582) x2574)
+(or (not x2582) x2545)
+(or x2539 (not x2553))
+(or x2539 (not x2582))
+(or x2539 (not x2580))
+(or x2539 (not x2579))
+(or x2553 x2582 x2580 x2579 (not x2539))
+(or (not x2539) x2540 (not x2541) (not x1521) (not x2543) x2583)
+(or (not x2583) x2539)
+(or (not x2583) (not x2540))
+(or (not x2583) x2541)
+(or (not x2583) x1521)
+(or (not x2583) x2543)
+(or (not x2576) (not x2568) x2584)
+(or (not x2584) x2576)
+(or (not x2584) x2568)
+(or (not x2581) (not x2576) (not x2545) x2585)
+(or (not x2585) x2581)
+(or (not x2585) x2576)
+(or (not x2585) x2545)
+(or (not x2572) (not x2581) (not x2576) (not x2553) x2586)
+(or (not x2586) x2572)
+(or (not x2586) x2581)
+(or (not x2586) x2576)
+(or (not x2586) x2553)
+(or x2549 (not x2560))
+(or x2549 (not x2586))
+(or x2549 (not x2585))
+(or x2549 (not x2584))
+(or x2560 x2586 x2585 x2584 (not x2549))
+(or (not x2549) x2550 (not x2551) (not x1521) (not x2543) x2587)
+(or (not x2587) x2549)
+(or (not x2587) (not x2550))
+(or (not x2587) x2551)
+(or (not x2587) x1521)
+(or (not x2587) x2543)
+(or (not x2581) (not x2545) x2588)
+(or (not x2588) x2581)
+(or (not x2588) x2545)
+(or (not x2572) (not x2581) (not x2553) x2589)
+(or (not x2589) x2572)
+(or (not x2589) x2581)
+(or (not x2589) x2553)
+(or (not x2574) (not x2572) (not x2581) (not x2560) x2590)
+(or (not x2590) x2574)
+(or (not x2590) x2572)
+(or (not x2590) x2581)
+(or (not x2590) x2560)
+(or x2556 (not x2568))
+(or x2556 (not x2590))
+(or x2556 (not x2589))
+(or x2556 (not x2588))
+(or x2568 x2590 x2589 x2588 (not x2556))
+(or (not x2556) x2557 (not x2558) (not x1521) (not x2543) x2591)
+(or (not x2591) x2556)
+(or (not x2591) (not x2557))
+(or (not x2591) x2558)
+(or (not x2591) x1521)
+(or (not x2591) x2543)
+(or x2592 x1531)
+(or x2592 x1527)
+(or x2592 x1522)
+(or x2592 x1519)
+(or (not x1531) (not x1527) (not x1522) (not x1519) (not x2592))
+(or (not x2543) (not x2592) x1815)
+(or (not x1815) x2543)
+(or (not x1815) x2592)
+(or x2593 x1982)
+(or x2593 x2162)
+(or (not x1982) (not x2162) (not x2593))
+(or x1995 x2162 x2594)
+(or (not x2594) (not x1995))
+(or (not x2594) (not x2162))
+(or x2595 x1991)
+(or x2595 (not x2594))
+(or (not x1991) x2594 (not x2595))
+(or x2005 x1995 x2162 x2596)
+(or (not x2596) (not x2005))
+(or (not x2596) (not x1995))
+(or (not x2596) (not x2162))
+(or x2597 x2002)
+(or x2597 (not x2596))
+(or (not x2002) x2596 (not x2597))
+(or x2013 x2005 x1995 x2162 x2598)
+(or (not x2598) (not x2013))
+(or (not x2598) (not x2005))
+(or (not x2598) (not x1995))
+(or (not x2598) (not x2162))
+(or x2599 x2011)
+(or x2599 (not x2598))
+(or (not x2011) x2598 (not x2599))
+(or x2600 x1988)
+(or x2600 x2096)
+(or (not x1988) (not x2096) (not x2600))
+(or x2021 x2096 x2601)
+(or (not x2601) (not x2021))
+(or (not x2601) (not x2096))
+(or x2602 x2000)
+(or x2602 (not x2601))
+(or (not x2000) x2601 (not x2602))
+(or x2029 x2021 x2096 x2603)
+(or (not x2603) (not x2029))
+(or (not x2603) (not x2021))
+(or (not x2603) (not x2096))
+(or x2604 x2009)
+(or x2604 (not x2603))
+(or (not x2009) x2603 (not x2604))
+(or x2037 x2029 x2021 x2096 x2605)
+(or (not x2605) (not x2037))
+(or (not x2605) (not x2029))
+(or (not x2605) (not x2021))
+(or (not x2605) (not x2096))
+(or x2606 x2035)
+(or x2606 (not x2605))
+(or (not x2035) x2605 (not x2606))
+(or x2607 x2017)
+(or x2607 x2045)
+(or (not x2017) (not x2045) (not x2607))
+(or x2053 x2045 x2608)
+(or (not x2608) (not x2053))
+(or (not x2608) (not x2045))
+(or x2609 x2025)
+(or x2609 (not x2608))
+(or (not x2025) x2608 (not x2609))
+(or x2061 x2053 x2045 x2610)
+(or (not x2610) (not x2061))
+(or (not x2610) (not x2053))
+(or (not x2610) (not x2045))
+(or x2611 x2033)
+(or x2611 (not x2610))
+(or (not x2033) x2610 (not x2611))
+(or x2068 x2061 x2053 x2045 x2612)
+(or (not x2612) (not x2068))
+(or (not x2612) (not x2061))
+(or (not x2612) (not x2053))
+(or (not x2612) (not x2045))
+(or x2613 x2041)
+(or x2613 (not x2612))
+(or (not x2041) x2612 (not x2613))
+(or x2614 x2049)
+(or x2614 x2103)
+(or (not x2049) (not x2103) (not x2614))
+(or x2075 x2103 x2615)
+(or (not x2615) (not x2075))
+(or (not x2615) (not x2103))
+(or x2616 x2057)
+(or x2616 (not x2615))
+(or (not x2057) x2615 (not x2616))
+(or x2082 x2075 x2103 x2617)
+(or (not x2617) (not x2082))
+(or (not x2617) (not x2075))
+(or (not x2617) (not x2103))
+(or x2618 x2065)
+(or x2618 (not x2617))
+(or (not x2065) x2617 (not x2618))
+(or x2089 x2082 x2075 x2103 x2619)
+(or (not x2619) (not x2089))
+(or (not x2619) (not x2082))
+(or (not x2619) (not x2075))
+(or (not x2619) (not x2103))
+(or x2620 x2087)
+(or x2620 (not x2619))
+(or (not x2087) x2619 (not x2620))
+(or (not x2620) (not x2618) (not x2616) (not x2614) (not x2613) (not x2611) (not x2609) (not x2607) (not x2606) (not x2604) (not x2602) (not x2600) (not x2599) (not x2597) (not x2595) (not x2593) x2172)
+(or (not x2172) x2620)
+(or (not x2172) x2618)
+(or (not x2172) x2616)
+(or (not x2172) x2614)
+(or (not x2172) x2613)
+(or (not x2172) x2611)
+(or (not x2172) x2609)
+(or (not x2172) x2607)
+(or (not x2172) x2606)
+(or (not x2172) x2604)
+(or (not x2172) x2602)
+(or (not x2172) x2600)
+(or (not x2172) x2599)
+(or (not x2172) x2597)
+(or (not x2172) x2595)
+(or (not x2172) x2593)
+(or (not x2620) (not x2618) (not x2616) (not x2614) (not x2613) (not x2611) (not x2609) (not x2607) (not x2606) (not x2604) (not x2602) (not x2600) (not x2599) (not x2597) (not x2595) (not x2593) (not x2621) (not x2622) (not x2623) (not x2624) (not x2625) (not x2626) (not x2627) (not x2628) (not x2629) (not x2630) (not x2631) (not x2632) (not x2633) (not x2634) (not x2635) (not x2636) x1814)
+(or (not x1814) x2620)
+(or (not x1814) x2618)
+(or (not x1814) x2616)
+(or (not x1814) x2614)
+(or (not x1814) x2613)
+(or (not x1814) x2611)
+(or (not x1814) x2609)
+(or (not x1814) x2607)
+(or (not x1814) x2606)
+(or (not x1814) x2604)
+(or (not x1814) x2602)
+(or (not x1814) x2600)
+(or (not x1814) x2599)
+(or (not x1814) x2597)
+(or (not x1814) x2595)
+(or (not x1814) x2593)
+(or (not x1814) x2621)
+(or (not x1814) x2622)
+(or (not x1814) x2623)
+(or (not x1814) x2624)
+(or (not x1814) x2625)
+(or (not x1814) x2626)
+(or (not x1814) x2627)
+(or (not x1814) x2628)
+(or (not x1814) x2629)
+(or (not x1814) x2630)
+(or (not x1814) x2631)
+(or (not x1814) x2632)
+(or (not x1814) x2633)
+(or (not x1814) x2634)
+(or (not x1814) x2635)
+(or (not x1814) x2636)
+(or x2347 x1545)
+(or x2347 (not x1814))
+(or x2347 (not x1815))
+(or (not x1545) x1814 x1815 (not x2347))
+(or (not x2347) (not x1545) x2637)
+(or (not x2637) x2347)
+(or (not x2637) x1545)
+(or x1545 x1518 x1521 x2638)
+(or (not x2638) (not x1545))
+(or (not x2638) (not x1518))
+(or (not x2638) (not x1521))
+(or x2639 (not x2638))
+(or x2639 (not x2637))
+(or x2638 x2637 (not x2639))
+(or x2636 x1538)
+(or x2636 x1805)
+(or (not x1538) (not x1805) (not x2636))
+(or x1552 x1805 x2640)
+(or (not x2640) (not x1552))
+(or (not x2640) (not x1805))
+(or x2635 x1548)
+(or x2635 (not x2640))
+(or (not x1548) x2640 (not x2635))
+(or x1564 x1552 x1805 x2641)
+(or (not x2641) (not x1564))
+(or (not x2641) (not x1552))
+(or (not x2641) (not x1805))
+(or x2634 x1561)
+(or x2634 (not x2641))
+(or (not x1561) x2641 (not x2634))
+(or x1572 x1564 x1552 x1805 x2642)
+(or (not x2642) (not x1572))
+(or (not x2642) (not x1564))
+(or (not x2642) (not x1552))
+(or (not x2642) (not x1805))
+(or x2633 x1570)
+(or x2633 (not x2642))
+(or (not x1570) x2642 (not x2633))
+(or x2632 x1544)
+(or x2632 x1676)
+(or (not x1544) (not x1676) (not x2632))
+(or x1580 x1676 x2643)
+(or (not x2643) (not x1580))
+(or (not x2643) (not x1676))
+(or x2631 x1559)
+(or x2631 (not x2643))
+(or (not x1559) x2643 (not x2631))
+(or x1588 x1580 x1676 x2644)
+(or (not x2644) (not x1588))
+(or (not x2644) (not x1580))
+(or (not x2644) (not x1676))
+(or x2630 x1568)
+(or x2630 (not x2644))
+(or (not x1568) x2644 (not x2630))
+(or x1596 x1588 x1580 x1676 x2645)
+(or (not x2645) (not x1596))
+(or (not x2645) (not x1588))
+(or (not x2645) (not x1580))
+(or (not x2645) (not x1676))
+(or x2629 x1594)
+(or x2629 (not x2645))
+(or (not x1594) x2645 (not x2629))
+(or x2628 x1576)
+(or x2628 x1711)
+(or (not x1576) (not x1711) (not x2628))
+(or x1604 x1711 x2646)
+(or (not x2646) (not x1604))
+(or (not x2646) (not x1711))
+(or x2627 x1584)
+(or x2627 (not x2646))
+(or (not x1584) x2646 (not x2627))
+(or x1612 x1604 x1711 x2647)
+(or (not x2647) (not x1612))
+(or (not x2647) (not x1604))
+(or (not x2647) (not x1711))
+(or x2626 x1592)
+(or x2626 (not x2647))
+(or (not x1592) x2647 (not x2626))
+(or x1620 x1612 x1604 x1711 x2648)
+(or (not x2648) (not x1620))
+(or (not x2648) (not x1612))
+(or (not x2648) (not x1604))
+(or (not x2648) (not x1711))
+(or x2625 x1618)
+(or x2625 (not x2648))
+(or (not x1618) x2648 (not x2625))
+(or x2624 x1600)
+(or x2624 x1746)
+(or (not x1600) (not x1746) (not x2624))
+(or x1627 x1746 x2649)
+(or (not x2649) (not x1627))
+(or (not x2649) (not x1746))
+(or x2623 x1608)
+(or x2623 (not x2649))
+(or (not x1608) x2649 (not x2623))
+(or x1634 x1627 x1746 x2650)
+(or (not x2650) (not x1634))
+(or (not x2650) (not x1627))
+(or (not x2650) (not x1746))
+(or x2622 x1616)
+(or x2622 (not x2650))
+(or (not x1616) x2650 (not x2622))
+(or x1641 x1634 x1627 x1746 x2651)
+(or (not x2651) (not x1641))
+(or (not x2651) (not x1634))
+(or (not x2651) (not x1627))
+(or (not x2651) (not x1746))
+(or x2621 x1639)
+(or x2621 (not x2651))
+(or (not x1639) x2651 (not x2621))
+(or (not x2621) (not x2622) (not x2623) (not x2624) (not x2625) (not x2626) (not x2627) (not x2628) (not x2629) (not x2630) (not x2631) (not x2632) (not x2633) (not x2634) (not x2635) (not x2636) x1813)
+(or (not x1813) x2621)
+(or (not x1813) x2622)
+(or (not x1813) x2623)
+(or (not x1813) x2624)
+(or (not x1813) x2625)
+(or (not x1813) x2626)
+(or (not x1813) x2627)
+(or (not x1813) x2628)
+(or (not x1813) x2629)
+(or (not x1813) x2630)
+(or (not x1813) x2631)
+(or (not x1813) x2632)
+(or (not x1813) x2633)
+(or (not x1813) x2634)
+(or (not x1813) x2635)
+(or (not x1813) x2636)
+(or x1996 (not x1813))
+(or x1996 (not x1974))
+(or x1813 x1974 (not x1996))
+(or (not x1545) (not x1523) (not x1555) (not x1975) (not x1996) x2159)
+(or (not x2159) x1545)
+(or (not x2159) x1523)
+(or (not x2159) x1555)
+(or (not x2159) x1975)
+(or (not x2159) x1996)
+(or x2652 (not x2564))
+(or x2652 x2565)
+(or x2652 (not x2565))
+(or x2564 (not x2565) x2565 (not x2652))
+(or x2653 (not x2654))
+(or x2653 x2655)
+(or x2654 (not x2655) (not x2653))
+(or (not x2653) (not x2652) x2656)
+(or (not x2656) x2653)
+(or (not x2656) x2652)
+(or x2657 (not x2540))
+(or x2657 x2541)
+(or x2657 (not x2541))
+(or x2540 (not x2541) x2541 (not x2657))
+(or x2658 (not x2659))
+(or x2658 x2660)
+(or x2659 (not x2660) (not x2658))
+(or (not x2658) (not x2657) x2661)
+(or (not x2661) x2658)
+(or (not x2661) x2657)
+(or x2662 (not x2550))
+(or x2662 x2551)
+(or x2662 (not x2551))
+(or x2550 (not x2551) x2551 (not x2662))
+(or x2663 (not x2664))
+(or x2663 x2665)
+(or x2664 (not x2665) (not x2663))
+(or (not x2663) (not x2662) x2666)
+(or (not x2666) x2663)
+(or (not x2666) x2662)
+(or x2667 (not x2557))
+(or x2667 x2558)
+(or x2667 (not x2558))
+(or x2557 (not x2558) x2558 (not x2667))
+(or x2668 (not x2669))
+(or x2668 x2670)
+(or x2669 (not x2670) (not x2668))
+(or (not x2668) (not x2667) x2671)
+(or (not x2671) x2668)
+(or (not x2671) x2667)
+(or (not x1531) (not x1527) (not x1522) (not x1519) x2672)
+(or (not x2672) x1531)
+(or (not x2672) x1527)
+(or (not x2672) x1522)
+(or (not x2672) x1519)
+(or x2581 (not x2564))
+(or x2581 x2565)
+(or x2564 (not x2565) (not x2581))
+(or x2572 (not x2540))
+(or x2572 x2541)
+(or x2540 (not x2541) (not x2572))
+(or x2574 (not x2550))
+(or x2574 x2551)
+(or x2550 (not x2551) (not x2574))
+(or x2576 (not x2557))
+(or x2576 x2558)
+(or x2557 (not x2558) (not x2576))
+(or (not x2576) (not x2574) (not x2572) (not x2581) x2567)
+(or (not x2567) x2576)
+(or (not x2567) x2574)
+(or (not x2567) x2572)
+(or (not x2567) x2581)
+(or x1555 (not x2567))
+(or x1555 (not x2672))
+(or x2567 x2672 (not x1555))
+(or (not x1538) (not x1805) x2673)
+(or (not x2673) x1538)
+(or (not x2673) x1805)
+(or x2674 (not x1552))
+(or x2674 (not x1805))
+(or x1552 x1805 (not x2674))
+(or (not x1548) (not x2674) x2675)
+(or (not x2675) x1548)
+(or (not x2675) x2674)
+(or x2676 (not x1564))
+(or x2676 (not x1552))
+(or x2676 (not x1805))
+(or x1564 x1552 x1805 (not x2676))
+(or (not x1561) (not x2676) x2677)
+(or (not x2677) x1561)
+(or (not x2677) x2676)
+(or x2678 (not x1572))
+(or x2678 (not x1564))
+(or x2678 (not x1552))
+(or x2678 (not x1805))
+(or x1572 x1564 x1552 x1805 (not x2678))
+(or (not x1570) (not x2678) x2679)
+(or (not x2679) x1570)
+(or (not x2679) x2678)
+(or (not x1544) (not x1676) x2680)
+(or (not x2680) x1544)
+(or (not x2680) x1676)
+(or x2681 (not x1580))
+(or x2681 (not x1676))
+(or x1580 x1676 (not x2681))
+(or (not x1559) (not x2681) x2682)
+(or (not x2682) x1559)
+(or (not x2682) x2681)
+(or x2683 (not x1588))
+(or x2683 (not x1580))
+(or x2683 (not x1676))
+(or x1588 x1580 x1676 (not x2683))
+(or (not x1568) (not x2683) x2684)
+(or (not x2684) x1568)
+(or (not x2684) x2683)
+(or x2685 (not x1596))
+(or x2685 (not x1588))
+(or x2685 (not x1580))
+(or x2685 (not x1676))
+(or x1596 x1588 x1580 x1676 (not x2685))
+(or (not x1594) (not x2685) x2686)
+(or (not x2686) x1594)
+(or (not x2686) x2685)
+(or (not x1576) (not x1711) x2687)
+(or (not x2687) x1576)
+(or (not x2687) x1711)
+(or x2688 (not x1604))
+(or x2688 (not x1711))
+(or x1604 x1711 (not x2688))
+(or (not x1584) (not x2688) x2689)
+(or (not x2689) x1584)
+(or (not x2689) x2688)
+(or x2690 (not x1612))
+(or x2690 (not x1604))
+(or x2690 (not x1711))
+(or x1612 x1604 x1711 (not x2690))
+(or (not x1592) (not x2690) x2691)
+(or (not x2691) x1592)
+(or (not x2691) x2690)
+(or x2692 (not x1620))
+(or x2692 (not x1612))
+(or x2692 (not x1604))
+(or x2692 (not x1711))
+(or x1620 x1612 x1604 x1711 (not x2692))
+(or (not x1618) (not x2692) x2693)
+(or (not x2693) x1618)
+(or (not x2693) x2692)
+(or (not x1600) (not x1746) x2694)
+(or (not x2694) x1600)
+(or (not x2694) x1746)
+(or x2695 (not x1627))
+(or x2695 (not x1746))
+(or x1627 x1746 (not x2695))
+(or (not x1608) (not x2695) x2696)
+(or (not x2696) x1608)
+(or (not x2696) x2695)
+(or x2697 (not x1634))
+(or x2697 (not x1627))
+(or x2697 (not x1746))
+(or x1634 x1627 x1746 (not x2697))
+(or (not x1616) (not x2697) x2698)
+(or (not x2698) x1616)
+(or (not x2698) x2697)
+(or x2699 (not x1641))
+(or x2699 (not x1634))
+(or x2699 (not x1627))
+(or x2699 (not x1746))
+(or x1641 x1634 x1627 x1746 (not x2699))
+(or (not x1639) (not x2699) x2700)
+(or (not x2700) x1639)
+(or (not x2700) x2699)
+(or x1554 (not x2700))
+(or x1554 (not x2698))
+(or x1554 (not x2696))
+(or x1554 (not x2694))
+(or x1554 (not x2693))
+(or x1554 (not x2691))
+(or x1554 (not x2689))
+(or x1554 (not x2687))
+(or x1554 (not x2686))
+(or x1554 (not x2684))
+(or x1554 (not x2682))
+(or x1554 (not x2680))
+(or x1554 (not x2679))
+(or x1554 (not x2677))
+(or x1554 (not x2675))
+(or x1554 (not x2673))
+(or x2700 x2698 x2696 x2694 x2693 x2691 x2689 x2687 x2686 x2684 x2682 x2680 x2679 x2677 x2675 x2673 (not x1554))
+(or (not x1982) (not x2162) x2701)
+(or (not x2701) x1982)
+(or (not x2701) x2162)
+(or x2702 (not x1995))
+(or x2702 (not x2162))
+(or x1995 x2162 (not x2702))
+(or (not x1991) (not x2702) x2703)
+(or (not x2703) x1991)
+(or (not x2703) x2702)
+(or x2704 (not x2005))
+(or x2704 (not x1995))
+(or x2704 (not x2162))
+(or x2005 x1995 x2162 (not x2704))
+(or (not x2002) (not x2704) x2705)
+(or (not x2705) x2002)
+(or (not x2705) x2704)
+(or x2706 (not x2013))
+(or x2706 (not x2005))
+(or x2706 (not x1995))
+(or x2706 (not x2162))
+(or x2013 x2005 x1995 x2162 (not x2706))
+(or (not x2011) (not x2706) x2707)
+(or (not x2707) x2011)
+(or (not x2707) x2706)
+(or (not x1988) (not x2096) x2708)
+(or (not x2708) x1988)
+(or (not x2708) x2096)
+(or x2709 (not x2021))
+(or x2709 (not x2096))
+(or x2021 x2096 (not x2709))
+(or (not x2000) (not x2709) x2710)
+(or (not x2710) x2000)
+(or (not x2710) x2709)
+(or x2711 (not x2029))
+(or x2711 (not x2021))
+(or x2711 (not x2096))
+(or x2029 x2021 x2096 (not x2711))
+(or (not x2009) (not x2711) x2712)
+(or (not x2712) x2009)
+(or (not x2712) x2711)
+(or x2713 (not x2037))
+(or x2713 (not x2029))
+(or x2713 (not x2021))
+(or x2713 (not x2096))
+(or x2037 x2029 x2021 x2096 (not x2713))
+(or (not x2035) (not x2713) x2714)
+(or (not x2714) x2035)
+(or (not x2714) x2713)
+(or (not x2017) (not x2045) x2715)
+(or (not x2715) x2017)
+(or (not x2715) x2045)
+(or x2716 (not x2053))
+(or x2716 (not x2045))
+(or x2053 x2045 (not x2716))
+(or (not x2025) (not x2716) x2717)
+(or (not x2717) x2025)
+(or (not x2717) x2716)
+(or x2718 (not x2061))
+(or x2718 (not x2053))
+(or x2718 (not x2045))
+(or x2061 x2053 x2045 (not x2718))
+(or (not x2033) (not x2718) x2719)
+(or (not x2719) x2033)
+(or (not x2719) x2718)
+(or x2720 (not x2068))
+(or x2720 (not x2061))
+(or x2720 (not x2053))
+(or x2720 (not x2045))
+(or x2068 x2061 x2053 x2045 (not x2720))
+(or (not x2041) (not x2720) x2721)
+(or (not x2721) x2041)
+(or (not x2721) x2720)
+(or (not x2049) (not x2103) x2722)
+(or (not x2722) x2049)
+(or (not x2722) x2103)
+(or x2723 (not x2075))
+(or x2723 (not x2103))
+(or x2075 x2103 (not x2723))
+(or (not x2057) (not x2723) x2724)
+(or (not x2724) x2057)
+(or (not x2724) x2723)
+(or x2725 (not x2082))
+(or x2725 (not x2075))
+(or x2725 (not x2103))
+(or x2082 x2075 x2103 (not x2725))
+(or (not x2065) (not x2725) x2726)
+(or (not x2726) x2065)
+(or (not x2726) x2725)
+(or x2727 (not x2089))
+(or x2727 (not x2082))
+(or x2727 (not x2075))
+(or x2727 (not x2103))
+(or x2089 x2082 x2075 x2103 (not x2727))
+(or (not x2087) (not x2727) x2728)
+(or (not x2728) x2087)
+(or (not x2728) x2727)
+(or x1975 (not x2728))
+(or x1975 (not x2726))
+(or x1975 (not x2724))
+(or x1975 (not x2722))
+(or x1975 (not x2721))
+(or x1975 (not x2719))
+(or x1975 (not x2717))
+(or x1975 (not x2715))
+(or x1975 (not x2714))
+(or x1975 (not x2712))
+(or x1975 (not x2710))
+(or x1975 (not x2708))
+(or x1975 (not x2707))
+(or x1975 (not x2705))
+(or x1975 (not x2703))
+(or x1975 (not x2701))
+(or x2728 x2726 x2724 x2722 x2721 x2719 x2717 x2715 x2714 x2712 x2710 x2708 x2707 x2705 x2703 x2701 (not x1975))
+(or x1523 (not x2728))
+(or x1523 (not x2726))
+(or x1523 (not x2724))
+(or x1523 (not x2722))
+(or x1523 (not x2721))
+(or x1523 (not x2719))
+(or x1523 (not x2717))
+(or x1523 (not x2715))
+(or x1523 (not x2714))
+(or x1523 (not x2712))
+(or x1523 (not x2710))
+(or x1523 (not x2708))
+(or x1523 (not x2707))
+(or x1523 (not x2705))
+(or x1523 (not x2703))
+(or x1523 (not x2701))
+(or x1523 (not x2700))
+(or x1523 (not x2698))
+(or x1523 (not x2696))
+(or x1523 (not x2694))
+(or x1523 (not x2693))
+(or x1523 (not x2691))
+(or x1523 (not x2689))
+(or x1523 (not x2687))
+(or x1523 (not x2686))
+(or x1523 (not x2684))
+(or x1523 (not x2682))
+(or x1523 (not x2680))
+(or x1523 (not x2679))
+(or x1523 (not x2677))
+(or x1523 (not x2675))
+(or x1523 (not x2673))
+(or x2728 x2726 x2724 x2722 x2721 x2719 x2717 x2715 x2714 x2712 x2710 x2708 x2707 x2705 x2703 x2701 x2700 x2698 x2696 x2694 x2693 x2691 x2689 x2687 x2686 x2684 x2682 x2680 x2679 x2677 x2675 x2673 (not x1523))
+(or (not x1545) (not x1545) (not x1523) (not x1555) x2729)
+(or (not x2729) x1545)
+(or (not x2729) x1545)
+(or (not x2729) x1523)
+(or (not x2729) x1555)
+(or x2730 (not x1521))
+(or x2730 (not x2731))
+(or x1521 x2731 (not x2730))
+(or x2564 (not x2565) x2654)
+(or (not x2654) (not x2564))
+(or (not x2654) x2565)
+(or x2540 (not x2541) x2659)
+(or (not x2659) (not x2540))
+(or (not x2659) x2541)
+(or x2550 (not x2551) x2664)
+(or (not x2664) (not x2550))
+(or (not x2664) x2551)
+(or x2557 (not x2558) x2669)
+(or (not x2669) (not x2557))
+(or (not x2669) x2558)
+(or x2543 (not x2669))
+(or x2543 (not x2664))
+(or x2543 (not x2659))
+(or x2543 (not x2654))
+(or x2669 x2664 x2659 x2654 (not x2543))
+(or (not x1521) (not x2543) x2732)
+(or (not x2732) x1521)
+(or (not x2732) x2543)
+(or x2733 (not x1518))
+(or x2733 (not x2732))
+(or x1518 x2732 (not x2733))
+(or (not x6) (not x1504))
+(or (not x6) x1503)
+(or (not x6) (not x1502))
+(or (not x6) x1501)
+(or (not x6) (not x1500))
+(or (not x2734) (not x1504))
+(or (not x2734) x1503)
+(or (not x2734) (not x1502))
+(or (not x2734) (not x1501))
+(or (not x2734) x1500)
+(or x1504 (not x1503) x1502 x1501 x1500 x1515)
+(or (not x1515) (not x1504))
+(or (not x1515) x1503)
+(or (not x1515) (not x1502))
+(or (not x1515) (not x1501))
+(or (not x1515) (not x1500))
+(or x1504 x1503 (not x1502) (not x1501) (not x1500) x1508)
+(or (not x1508) (not x1504))
+(or (not x1508) (not x1503))
+(or (not x1508) x1502)
+(or (not x1508) x1501)
+(or (not x1508) x1500)
+(or x1504 x1503 (not x1502) (not x1501) x1500 x1507)
+(or (not x1507) (not x1504))
+(or (not x1507) (not x1503))
+(or (not x1507) x1502)
+(or (not x1507) x1501)
+(or (not x1507) (not x1500))
+(or x1504 x1503 (not x1502) x1501 (not x1500) x1499)
+(or (not x1499) (not x1504))
+(or (not x1499) (not x1503))
+(or (not x1499) x1502)
+(or (not x1499) (not x1501))
+(or (not x1499) x1500)
+(or x1504 x1503 (not x1502) x1501 x1500 x1498)
+(or (not x1498) (not x1504))
+(or (not x1498) (not x1503))
+(or (not x1498) x1502)
+(or (not x1498) (not x1501))
+(or (not x1498) (not x1500))
+(or x1504 x1503 x1502 (not x1501) (not x1500) x1497)
+(or (not x1497) (not x1504))
+(or (not x1497) (not x1503))
+(or (not x1497) (not x1502))
+(or (not x1497) x1501)
+(or (not x1497) x1500)
+(or x1504 x1503 x1502 (not x1501) x1500 x1496)
+(or (not x1496) (not x1504))
+(or (not x1496) (not x1503))
+(or (not x1496) (not x1502))
+(or (not x1496) x1501)
+(or (not x1496) (not x1500))
+(or x1504 x1503 x1502 x1501 (not x1500) x1495)
+(or (not x1495) (not x1504))
+(or (not x1495) (not x1503))
+(or (not x1495) (not x1502))
+(or (not x1495) (not x1501))
+(or (not x1495) x1500)
+(or (not x2735) (not x1504))
+(or (not x2735) (not x1503))
+(or (not x2735) (not x1502))
+(or (not x2735) (not x1501))
+(or (not x2735) (not x1500))
+(or x2736 (not x2735))
+(or x2736 (not x1495))
+(or x2736 (not x1496))
+(or x2736 (not x1497))
+(or x2736 (not x1498))
+(or x2736 (not x1499))
+(or x2736 (not x1507))
+(or x2736 (not x1508))
+(or x2736 (not x1515))
+(or x2736 (not x2734))
+(or x2735 x1495 x1496 x1497 x1498 x1499 x1507 x1508 x1515 x2734 (not x2736))
+(or (not x2737) x1649)
+(or (not x2737) (not x1648))
+(or (not x2737) (not x1647))
+(or (not x2737) x1646)
+(or (not x2737) (not x1645))
+(or (not x1649) x1648 x1647 x1646 (not x1645) x2359)
+(or (not x2359) x1649)
+(or (not x2359) (not x1648))
+(or (not x2359) (not x1647))
+(or (not x2359) (not x1646))
+(or (not x2359) x1645)
+(or (not x1649) x1648 x1647 x1646 x1645 x2358)
+(or (not x2358) x1649)
+(or (not x2358) (not x1648))
+(or (not x2358) (not x1647))
+(or (not x2358) (not x1646))
+(or (not x2358) (not x1645))
+(or x2738 (not x2358))
+(or x2738 (not x2359))
+(or x2358 x2359 (not x2738))
+(or (not x2739) x1656)
+(or (not x2739) (not x1655))
+(or (not x2739) (not x1654))
+(or (not x2739) x1653)
+(or (not x2739) (not x1652))
+(or (not x1656) x1655 x1654 x1653 (not x1652) x2369)
+(or (not x2369) x1656)
+(or (not x2369) (not x1655))
+(or (not x2369) (not x1654))
+(or (not x2369) (not x1653))
+(or (not x2369) x1652)
+(or (not x1656) x1655 x1654 x1653 x1652 x2368)
+(or (not x2368) x1656)
+(or (not x2368) (not x1655))
+(or (not x2368) (not x1654))
+(or (not x2368) (not x1653))
+(or (not x2368) (not x1652))
+(or x2740 (not x2368))
+(or x2740 (not x2369))
+(or x2368 x2369 (not x2740))
+(or (not x2741) x1663)
+(or (not x2741) (not x1662))
+(or (not x2741) (not x1661))
+(or (not x2741) x1660)
+(or (not x2741) (not x1659))
+(or (not x1663) x1662 x1661 x1660 (not x1659) x2379)
+(or (not x2379) x1663)
+(or (not x2379) (not x1662))
+(or (not x2379) (not x1661))
+(or (not x2379) (not x1660))
+(or (not x2379) x1659)
+(or (not x1663) x1662 x1661 x1660 x1659 x2378)
+(or (not x2378) x1663)
+(or (not x2378) (not x1662))
+(or (not x2378) (not x1661))
+(or (not x2378) (not x1660))
+(or (not x2378) (not x1659))
+(or x2742 (not x2378))
+(or x2742 (not x2379))
+(or x2378 x2379 (not x2742))
+(or (not x2743) x1670)
+(or (not x2743) (not x1669))
+(or (not x2743) (not x1668))
+(or (not x2743) x1667)
+(or (not x2743) (not x1666))
+(or (not x1670) x1669 x1668 x1667 (not x1666) x2389)
+(or (not x2389) x1670)
+(or (not x2389) (not x1669))
+(or (not x2389) (not x1668))
+(or (not x2389) (not x1667))
+(or (not x2389) x1666)
+(or (not x1670) x1669 x1668 x1667 x1666 x2388)
+(or (not x2388) x1670)
+(or (not x2388) (not x1669))
+(or (not x2388) (not x1668))
+(or (not x2388) (not x1667))
+(or (not x2388) (not x1666))
+(or x2744 (not x2388))
+(or x2744 (not x2389))
+(or x2388 x2389 (not x2744))
+(or (not x2745) x1684)
+(or (not x2745) (not x1683))
+(or (not x2745) (not x1682))
+(or (not x2745) x1681)
+(or (not x2745) (not x1680))
+(or (not x1684) x1683 x1682 x1681 (not x1680) x2398)
+(or (not x2398) x1684)
+(or (not x2398) (not x1683))
+(or (not x2398) (not x1682))
+(or (not x2398) (not x1681))
+(or (not x2398) x1680)
+(or (not x1684) x1683 x1682 x1681 x1680 x2397)
+(or (not x2397) x1684)
+(or (not x2397) (not x1683))
+(or (not x2397) (not x1682))
+(or (not x2397) (not x1681))
+(or (not x2397) (not x1680))
+(or x2746 (not x2397))
+(or x2746 (not x2398))
+(or x2397 x2398 (not x2746))
+(or (not x2747) x1691)
+(or (not x2747) (not x1690))
+(or (not x2747) (not x1689))
+(or (not x2747) x1688)
+(or (not x2747) (not x1687))
+(or (not x1691) x1690 x1689 x1688 (not x1687) x2407)
+(or (not x2407) x1691)
+(or (not x2407) (not x1690))
+(or (not x2407) (not x1689))
+(or (not x2407) (not x1688))
+(or (not x2407) x1687)
+(or (not x1691) x1690 x1689 x1688 x1687 x2406)
+(or (not x2406) x1691)
+(or (not x2406) (not x1690))
+(or (not x2406) (not x1689))
+(or (not x2406) (not x1688))
+(or (not x2406) (not x1687))
+(or x2748 (not x2406))
+(or x2748 (not x2407))
+(or x2406 x2407 (not x2748))
+(or (not x2749) x1698)
+(or (not x2749) (not x1697))
+(or (not x2749) (not x1696))
+(or (not x2749) x1695)
+(or (not x2749) (not x1694))
+(or (not x1698) x1697 x1696 x1695 (not x1694) x2416)
+(or (not x2416) x1698)
+(or (not x2416) (not x1697))
+(or (not x2416) (not x1696))
+(or (not x2416) (not x1695))
+(or (not x2416) x1694)
+(or (not x1698) x1697 x1696 x1695 x1694 x2415)
+(or (not x2415) x1698)
+(or (not x2415) (not x1697))
+(or (not x2415) (not x1696))
+(or (not x2415) (not x1695))
+(or (not x2415) (not x1694))
+(or x2750 (not x2415))
+(or x2750 (not x2416))
+(or x2415 x2416 (not x2750))
+(or (not x2751) x1705)
+(or (not x2751) (not x1704))
+(or (not x2751) (not x1703))
+(or (not x2751) x1702)
+(or (not x2751) (not x1701))
+(or (not x1705) x1704 x1703 x1702 (not x1701) x2425)
+(or (not x2425) x1705)
+(or (not x2425) (not x1704))
+(or (not x2425) (not x1703))
+(or (not x2425) (not x1702))
+(or (not x2425) x1701)
+(or (not x1705) x1704 x1703 x1702 x1701 x2424)
+(or (not x2424) x1705)
+(or (not x2424) (not x1704))
+(or (not x2424) (not x1703))
+(or (not x2424) (not x1702))
+(or (not x2424) (not x1701))
+(or x2752 (not x2424))
+(or x2752 (not x2425))
+(or x2424 x2425 (not x2752))
+(or (not x2753) x1719)
+(or (not x2753) (not x1718))
+(or (not x2753) (not x1717))
+(or (not x2753) x1716)
+(or (not x2753) (not x1715))
+(or (not x1719) x1718 x1717 x1716 (not x1715) x2434)
+(or (not x2434) x1719)
+(or (not x2434) (not x1718))
+(or (not x2434) (not x1717))
+(or (not x2434) (not x1716))
+(or (not x2434) x1715)
+(or (not x1719) x1718 x1717 x1716 x1715 x2433)
+(or (not x2433) x1719)
+(or (not x2433) (not x1718))
+(or (not x2433) (not x1717))
+(or (not x2433) (not x1716))
+(or (not x2433) (not x1715))
+(or x2754 (not x2433))
+(or x2754 (not x2434))
+(or x2433 x2434 (not x2754))
+(or (not x2755) x1726)
+(or (not x2755) (not x1725))
+(or (not x2755) (not x1724))
+(or (not x2755) x1723)
+(or (not x2755) (not x1722))
+(or (not x1726) x1725 x1724 x1723 (not x1722) x2443)
+(or (not x2443) x1726)
+(or (not x2443) (not x1725))
+(or (not x2443) (not x1724))
+(or (not x2443) (not x1723))
+(or (not x2443) x1722)
+(or (not x1726) x1725 x1724 x1723 x1722 x2442)
+(or (not x2442) x1726)
+(or (not x2442) (not x1725))
+(or (not x2442) (not x1724))
+(or (not x2442) (not x1723))
+(or (not x2442) (not x1722))
+(or x2756 (not x2442))
+(or x2756 (not x2443))
+(or x2442 x2443 (not x2756))
+(or (not x2757) x1733)
+(or (not x2757) (not x1732))
+(or (not x2757) (not x1731))
+(or (not x2757) x1730)
+(or (not x2757) (not x1729))
+(or (not x1733) x1732 x1731 x1730 (not x1729) x2452)
+(or (not x2452) x1733)
+(or (not x2452) (not x1732))
+(or (not x2452) (not x1731))
+(or (not x2452) (not x1730))
+(or (not x2452) x1729)
+(or (not x1733) x1732 x1731 x1730 x1729 x2451)
+(or (not x2451) x1733)
+(or (not x2451) (not x1732))
+(or (not x2451) (not x1731))
+(or (not x2451) (not x1730))
+(or (not x2451) (not x1729))
+(or x2758 (not x2451))
+(or x2758 (not x2452))
+(or x2451 x2452 (not x2758))
+(or (not x2759) x1740)
+(or (not x2759) (not x1739))
+(or (not x2759) (not x1738))
+(or (not x2759) x1737)
+(or (not x2759) (not x1736))
+(or (not x1740) x1739 x1738 x1737 (not x1736) x2461)
+(or (not x2461) x1740)
+(or (not x2461) (not x1739))
+(or (not x2461) (not x1738))
+(or (not x2461) (not x1737))
+(or (not x2461) x1736)
+(or (not x1740) x1739 x1738 x1737 x1736 x2460)
+(or (not x2460) x1740)
+(or (not x2460) (not x1739))
+(or (not x2460) (not x1738))
+(or (not x2460) (not x1737))
+(or (not x2460) (not x1736))
+(or x2760 (not x2460))
+(or x2760 (not x2461))
+(or x2460 x2461 (not x2760))
+(or (not x2761) x1754)
+(or (not x2761) (not x1753))
+(or (not x2761) (not x1752))
+(or (not x2761) x1751)
+(or (not x2761) (not x1750))
+(or (not x1754) x1753 x1752 x1751 (not x1750) x2470)
+(or (not x2470) x1754)
+(or (not x2470) (not x1753))
+(or (not x2470) (not x1752))
+(or (not x2470) (not x1751))
+(or (not x2470) x1750)
+(or (not x1754) x1753 x1752 x1751 x1750 x2469)
+(or (not x2469) x1754)
+(or (not x2469) (not x1753))
+(or (not x2469) (not x1752))
+(or (not x2469) (not x1751))
+(or (not x2469) (not x1750))
+(or x2762 (not x2469))
+(or x2762 (not x2470))
+(or x2469 x2470 (not x2762))
+(or (not x2763) x1761)
+(or (not x2763) (not x1760))
+(or (not x2763) (not x1759))
+(or (not x2763) x1758)
+(or (not x2763) (not x1757))
+(or (not x1761) x1760 x1759 x1758 (not x1757) x2479)
+(or (not x2479) x1761)
+(or (not x2479) (not x1760))
+(or (not x2479) (not x1759))
+(or (not x2479) (not x1758))
+(or (not x2479) x1757)
+(or (not x1761) x1760 x1759 x1758 x1757 x2478)
+(or (not x2478) x1761)
+(or (not x2478) (not x1760))
+(or (not x2478) (not x1759))
+(or (not x2478) (not x1758))
+(or (not x2478) (not x1757))
+(or x2764 (not x2478))
+(or x2764 (not x2479))
+(or x2478 x2479 (not x2764))
+(or (not x2765) x1768)
+(or (not x2765) (not x1767))
+(or (not x2765) (not x1766))
+(or (not x2765) x1765)
+(or (not x2765) (not x1764))
+(or (not x1768) x1767 x1766 x1765 (not x1764) x2488)
+(or (not x2488) x1768)
+(or (not x2488) (not x1767))
+(or (not x2488) (not x1766))
+(or (not x2488) (not x1765))
+(or (not x2488) x1764)
+(or (not x1768) x1767 x1766 x1765 x1764 x2487)
+(or (not x2487) x1768)
+(or (not x2487) (not x1767))
+(or (not x2487) (not x1766))
+(or (not x2487) (not x1765))
+(or (not x2487) (not x1764))
+(or x2766 (not x2487))
+(or x2766 (not x2488))
+(or x2487 x2488 (not x2766))
+(or (not x2767) x1775)
+(or (not x2767) (not x1774))
+(or (not x2767) (not x1773))
+(or (not x2767) x1772)
+(or (not x2767) (not x1771))
+(or (not x1775) x1774 x1773 x1772 (not x1771) x2497)
+(or (not x2497) x1775)
+(or (not x2497) (not x1774))
+(or (not x2497) (not x1773))
+(or (not x2497) (not x1772))
+(or (not x2497) x1771)
+(or (not x1775) x1774 x1773 x1772 x1771 x2496)
+(or (not x2496) x1775)
+(or (not x2496) (not x1774))
+(or (not x2496) (not x1773))
+(or (not x2496) (not x1772))
+(or (not x2496) (not x1771))
+(or x2768 (not x2496))
+(or x2768 (not x2497))
+(or x2496 x2497 (not x2768))
+(or (not x2769) x2111)
+(or (not x2769) (not x2110))
+(or (not x2769) (not x2109))
+(or (not x2769) x2108)
+(or (not x2769) (not x2107))
+(or (not x2111) x2110 x2109 x2108 (not x2107) x2506)
+(or (not x2506) x2111)
+(or (not x2506) (not x2110))
+(or (not x2506) (not x2109))
+(or (not x2506) (not x2108))
+(or (not x2506) x2107)
+(or (not x2111) x2110 x2109 x2108 x2107 x2505)
+(or (not x2505) x2111)
+(or (not x2505) (not x2110))
+(or (not x2505) (not x2109))
+(or (not x2505) (not x2108))
+(or (not x2505) (not x2107))
+(or x2770 (not x2505))
+(or x2770 (not x2506))
+(or x2505 x2506 (not x2770))
+(or (not x2771) x2118)
+(or (not x2771) (not x2117))
+(or (not x2771) (not x2116))
+(or (not x2771) x2115)
+(or (not x2771) (not x2114))
+(or (not x2118) x2117 x2116 x2115 (not x2114) x2515)
+(or (not x2515) x2118)
+(or (not x2515) (not x2117))
+(or (not x2515) (not x2116))
+(or (not x2515) (not x2115))
+(or (not x2515) x2114)
+(or (not x2118) x2117 x2116 x2115 x2114 x2514)
+(or (not x2514) x2118)
+(or (not x2514) (not x2117))
+(or (not x2514) (not x2116))
+(or (not x2514) (not x2115))
+(or (not x2514) (not x2114))
+(or x2772 (not x2514))
+(or x2772 (not x2515))
+(or x2514 x2515 (not x2772))
+(or (not x2773) x2125)
+(or (not x2773) (not x2124))
+(or (not x2773) (not x2123))
+(or (not x2773) x2122)
+(or (not x2773) (not x2121))
+(or (not x2125) x2124 x2123 x2122 (not x2121) x2524)
+(or (not x2524) x2125)
+(or (not x2524) (not x2124))
+(or (not x2524) (not x2123))
+(or (not x2524) (not x2122))
+(or (not x2524) x2121)
+(or (not x2125) x2124 x2123 x2122 x2121 x2523)
+(or (not x2523) x2125)
+(or (not x2523) (not x2124))
+(or (not x2523) (not x2123))
+(or (not x2523) (not x2122))
+(or (not x2523) (not x2121))
+(or x2774 (not x2523))
+(or x2774 (not x2524))
+(or x2523 x2524 (not x2774))
+(or (not x2775) x2132)
+(or (not x2775) (not x2131))
+(or (not x2775) (not x2130))
+(or (not x2775) x2129)
+(or (not x2775) (not x2128))
+(or (not x2132) x2131 x2130 x2129 (not x2128) x2533)
+(or (not x2533) x2132)
+(or (not x2533) (not x2131))
+(or (not x2533) (not x2130))
+(or (not x2533) (not x2129))
+(or (not x2533) x2128)
+(or (not x2132) x2131 x2130 x2129 x2128 x2532)
+(or (not x2532) x2132)
+(or (not x2532) (not x2131))
+(or (not x2532) (not x2130))
+(or (not x2532) (not x2129))
+(or (not x2532) (not x2128))
+(or x2776 (not x2532))
+(or x2776 (not x2533))
+(or x2532 x2533 (not x2776))
+(or (not x2777) (not x2778) (not x2779) (not x2780) (not x2781) (not x2782) (not x2783) (not x2784) (not x2785) (not x2786) x2787)
+(or (not x2787) x2777)
+(or (not x2787) x2778)
+(or (not x2787) x2779)
+(or (not x2787) x2780)
+(or (not x2787) x2781)
+(or (not x2787) x2782)
+(or (not x2787) x2783)
+(or (not x2787) x2784)
+(or (not x2787) x2785)
+(or (not x2787) x2786)
+(or x2782 (not x2788))
+(or x2782 (not x2789))
+(or x2782 (not x2790))
+(or x2782 (not x2791))
+(or x2782 (not x2792))
+(or x2782 (not x2797))
+(or x2782 (not x2796))
+(or x2782 x2795)
+(or x2782 x2794)
+(or x2782 (not x2793))
+(or x2788 x2789 x2790 x2791 x2792 x2797 x2796 (not x2795) (not x2794) x2793 (not x2782))
+(or (not x2777) (not x2778) (not x2779) (not x2780) (not x2781) (not x2782) (not x2786) x2798)
+(or (not x2798) x2777)
+(or (not x2798) x2778)
+(or (not x2798) x2779)
+(or (not x2798) x2780)
+(or (not x2798) x2781)
+(or (not x2798) x2782)
+(or (not x2798) x2786)
+(or x2778 (not x2788))
+(or x2778 (not x2797))
+(or x2778 (not x2796))
+(or x2778 (not x2795))
+(or x2778 x2794)
+(or x2778 (not x2793))
+(or x2788 x2797 x2796 x2795 (not x2794) x2793 (not x2778))
+(or (not x2777) (not x2778) (not x2783) (not x2784) (not x2785) (not x2786) x2799)
+(or (not x2799) x2777)
+(or (not x2799) x2778)
+(or (not x2799) x2783)
+(or (not x2799) x2784)
+(or (not x2799) x2785)
+(or (not x2799) x2786)
+(or x2784 (not x2788))
+(or x2784 (not x2789))
+(or x2784 (not x2790))
+(or x2784 (not x2791))
+(or x2784 (not x2792))
+(or x2784 (not x2800))
+(or x2784 (not x2801))
+(or x2784 (not x2797))
+(or x2784 x2796)
+(or x2784 (not x2795))
+(or x2784 (not x2794))
+(or x2784 (not x2793))
+(or x2788 x2789 x2790 x2791 x2792 x2800 x2801 x2797 (not x2796) x2795 x2794 x2793 (not x2784))
+(or x2780 (not x2788))
+(or x2780 (not x2789))
+(or x2780 (not x2790))
+(or x2780 (not x2797))
+(or x2780 (not x2796))
+(or x2780 x2795)
+(or x2780 (not x2794))
+(or x2780 (not x2793))
+(or x2788 x2789 x2790 x2797 x2796 (not x2795) x2794 x2793 (not x2780))
+(or (not x2779) (not x2780) (not x2783) (not x2784) (not x2786) x2802)
+(or (not x2802) x2779)
+(or (not x2802) x2780)
+(or (not x2802) x2783)
+(or (not x2802) x2784)
+(or (not x2802) x2786)
+(or x2803 x2804)
+(or x2803 (not x2805))
+(or (not x2804) x2805 (not x2803))
+(or x2797 (not x2796) x2795 x2794 (not x2793) (not x2806) (not x2803) x2807)
+(or (not x2807) (not x2797))
+(or (not x2807) x2796)
+(or (not x2807) (not x2795))
+(or (not x2807) (not x2794))
+(or (not x2807) x2793)
+(or (not x2807) x2806)
+(or (not x2807) x2803)
+(or x2786 (not x2788))
+(or x2786 (not x2789))
+(or x2786 (not x2790))
+(or x2786 (not x2791))
+(or x2786 (not x2792))
+(or x2786 (not x2800))
+(or x2786 (not x2801))
+(or x2786 (not x2808))
+(or x2786 (not x2807))
+(or x2788 x2789 x2790 x2791 x2792 x2800 x2801 x2808 x2807 (not x2786))
+(or (not x2804) x2805 x2809)
+(or (not x2809) x2804)
+(or (not x2809) (not x2805))
+(or x2785 (not x2788))
+(or x2785 (not x2789))
+(or x2785 (not x2790))
+(or x2785 (not x2791))
+(or x2785 (not x2792))
+(or x2785 (not x2800))
+(or x2785 (not x2801))
+(or x2785 (not x2808))
+(or x2785 (not x2797))
+(or x2785 x2796)
+(or x2785 (not x2795))
+(or x2785 (not x2794))
+(or x2785 x2793)
+(or x2785 x2806)
+(or x2785 (not x2809))
+(or x2788 x2789 x2790 x2791 x2792 x2800 x2801 x2808 x2797 (not x2796) x2795 x2794 (not x2793) (not x2806) x2809 (not x2785))
+(or x2783 (not x2788))
+(or x2783 (not x2789))
+(or x2783 (not x2790))
+(or x2783 (not x2791))
+(or x2783 (not x2792))
+(or x2783 (not x2800))
+(or x2783 (not x2797))
+(or x2783 (not x2796))
+(or x2783 x2795)
+(or x2783 x2794)
+(or x2783 x2793)
+(or x2788 x2789 x2790 x2791 x2792 x2800 x2797 x2796 (not x2795) (not x2794) (not x2793) (not x2783))
+(or x2781 (not x2788))
+(or x2781 (not x2789))
+(or x2781 (not x2790))
+(or x2781 (not x2791))
+(or x2781 (not x2797))
+(or x2781 (not x2796))
+(or x2781 x2795)
+(or x2781 (not x2794))
+(or x2781 x2793)
+(or x2788 x2789 x2790 x2791 x2797 x2796 (not x2795) x2794 (not x2793) (not x2781))
+(or x2779 (not x2788))
+(or x2779 (not x2789))
+(or x2779 (not x2797))
+(or x2779 (not x2796))
+(or x2779 (not x2795))
+(or x2779 x2794)
+(or x2779 x2793)
+(or x2788 x2789 x2797 x2796 x2795 (not x2794) (not x2793) (not x2779))
+(or x2777 (not x2797))
+(or x2777 (not x2796))
+(or x2777 (not x2795))
+(or x2777 (not x2794))
+(or x2777 x2793)
+(or x2797 x2796 x2795 x2794 (not x2793) (not x2777))
+(or (not x2777) (not x2779) (not x2781) (not x2783) (not x2785) (not x2786) x2810)
+(or (not x2810) x2777)
+(or (not x2810) x2779)
+(or (not x2810) x2781)
+(or (not x2810) x2783)
+(or (not x2810) x2785)
+(or (not x2810) x2786)
+(or (not x2811) (not x2812) (not x2813) x2814)
+(or (not x2814) x2811)
+(or (not x2814) x2812)
+(or (not x2814) x2813)
+(or (not x2811) (not x2812) x2813 x2815)
+(or (not x2815) x2811)
+(or (not x2815) x2812)
+(or (not x2815) (not x2813))
+(or (not x2811) x2812 (not x2813) x2816)
+(or (not x2816) x2811)
+(or (not x2816) (not x2812))
+(or (not x2816) x2813)
+(or (not x2811) x2812 x2813 x2817)
+(or (not x2817) x2811)
+(or (not x2817) (not x2812))
+(or (not x2817) (not x2813))
+(or x2818 (not x2819) x2820)
+(or (not x2820) (not x2818))
+(or (not x2820) x2819)
+(or (not x2821) (not x2822) (not x2823) x2824)
+(or (not x2824) x2821)
+(or (not x2824) x2822)
+(or (not x2824) x2823)
+(or x2825 (not x2824))
+(or x2825 (not x2820))
+(or x2824 x2820 (not x2825))
+(or x2818 (not x2822) x2826)
+(or (not x2826) (not x2818))
+(or (not x2826) x2822)
+(or (not x2821) (not x2827) (not x2823) x2828)
+(or (not x2828) x2821)
+(or (not x2828) x2827)
+(or (not x2828) x2823)
+(or x2829 (not x2828))
+(or x2829 (not x2826))
+(or x2828 x2826 (not x2829))
+(or x2818 (not x2827) x2830)
+(or (not x2830) (not x2818))
+(or (not x2830) x2827)
+(or (not x2821) (not x2831) (not x2823) x2832)
+(or (not x2832) x2821)
+(or (not x2832) x2831)
+(or (not x2832) x2823)
+(or x2833 (not x2832))
+(or x2833 (not x2830))
+(or x2832 x2830 (not x2833))
+(or x2818 (not x2831) x2834)
+(or (not x2834) (not x2818))
+(or (not x2834) x2831)
+(or (not x2821) (not x2823) x2835)
+(or (not x2835) x2821)
+(or (not x2835) x2823)
+(or x2836 (not x2835))
+(or x2836 (not x2834))
+(or x2835 x2834 (not x2836))
+(or x2837 (not x2821))
+(or x2837 (not x2818))
+(or x2821 x2818 (not x2837))
+(or (not x2838) (not x2839) (not x2840) (not x2841) (not x2842) x2843)
+(or (not x2843) x2838)
+(or (not x2843) x2839)
+(or (not x2843) x2840)
+(or (not x2843) x2841)
+(or (not x2843) x2842)
+(or (not x2844) (not x2840) (not x2839) (not x2845) (not x2846) x2847)
+(or (not x2847) x2844)
+(or (not x2847) x2840)
+(or (not x2847) x2839)
+(or (not x2847) x2845)
+(or (not x2847) x2846)
+(or (not x2848) (not x2840) (not x2839) (not x2845) (not x2849) x2850)
+(or (not x2850) x2848)
+(or (not x2850) x2840)
+(or (not x2850) x2839)
+(or (not x2850) x2845)
+(or (not x2850) x2849)
+(or (not x2851) (not x2852) (not x2839) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x2856)
+(or (not x2856) x2851)
+(or (not x2856) x2852)
+(or (not x2856) x2839)
+(or (not x2856) x2853)
+(or (not x2856) x2854)
+(or (not x2856) x2845)
+(or (not x2856) x2823)
+(or (not x2856) x2855)
+(or x2857 (not x2856))
+(or x2857 (not x2850))
+(or x2857 (not x2847))
+(or x2857 (not x2843))
+(or x2856 x2850 x2847 x2843 (not x2857))
+(or (not x2848) (not x2839) (not x2840) (not x2841) (not x2842) x2858)
+(or (not x2858) x2848)
+(or (not x2858) x2839)
+(or (not x2858) x2840)
+(or (not x2858) x2841)
+(or (not x2858) x2842)
+(or (not x2859) (not x2840) (not x2839) (not x2845) (not x2846) x2860)
+(or (not x2860) x2859)
+(or (not x2860) x2840)
+(or (not x2860) x2839)
+(or (not x2860) x2845)
+(or (not x2860) x2846)
+(or (not x2861) (not x2840) (not x2839) (not x2845) (not x2849) x2862)
+(or (not x2862) x2861)
+(or (not x2862) x2840)
+(or (not x2862) x2839)
+(or (not x2862) x2845)
+(or (not x2862) x2849)
+(or (not x2863) (not x2864) (not x2839) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x2865)
+(or (not x2865) x2863)
+(or (not x2865) x2864)
+(or (not x2865) x2839)
+(or (not x2865) x2853)
+(or (not x2865) x2854)
+(or (not x2865) x2845)
+(or (not x2865) x2823)
+(or (not x2865) x2855)
+(or x2866 (not x2865))
+(or x2866 (not x2862))
+(or x2866 (not x2860))
+(or x2866 (not x2858))
+(or x2865 x2862 x2860 x2858 (not x2866))
+(or (not x2861) (not x2839) (not x2840) (not x2841) (not x2842) x2867)
+(or (not x2867) x2861)
+(or (not x2867) x2839)
+(or (not x2867) x2840)
+(or (not x2867) x2841)
+(or (not x2867) x2842)
+(or (not x2868) (not x2840) (not x2839) (not x2845) (not x2846) x2869)
+(or (not x2869) x2868)
+(or (not x2869) x2840)
+(or (not x2869) x2839)
+(or (not x2869) x2845)
+(or (not x2869) x2846)
+(or (not x2870) (not x2840) (not x2839) (not x2845) (not x2849) x2871)
+(or (not x2871) x2870)
+(or (not x2871) x2840)
+(or (not x2871) x2839)
+(or (not x2871) x2845)
+(or (not x2871) x2849)
+(or (not x2870) (not x2872) (not x2839) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x2873)
+(or (not x2873) x2870)
+(or (not x2873) x2872)
+(or (not x2873) x2839)
+(or (not x2873) x2853)
+(or (not x2873) x2854)
+(or (not x2873) x2845)
+(or (not x2873) x2823)
+(or (not x2873) x2855)
+(or x2874 (not x2873))
+(or x2874 (not x2871))
+(or x2874 (not x2869))
+(or x2874 (not x2867))
+(or x2873 x2871 x2869 x2867 (not x2874))
+(or (not x2844) (not x2839) (not x2840) (not x2841) (not x2842) x2875)
+(or (not x2875) x2844)
+(or (not x2875) x2839)
+(or (not x2875) x2840)
+(or (not x2875) x2841)
+(or (not x2875) x2842)
+(or (not x2876) (not x2840) (not x2839) (not x2845) (not x2846) x2877)
+(or (not x2877) x2876)
+(or (not x2877) x2840)
+(or (not x2877) x2839)
+(or (not x2877) x2845)
+(or (not x2877) x2846)
+(or (not x2859) (not x2840) (not x2839) (not x2845) (not x2849) x2878)
+(or (not x2878) x2859)
+(or (not x2878) x2840)
+(or (not x2878) x2839)
+(or (not x2878) x2845)
+(or (not x2878) x2849)
+(or (not x2879) (not x2880) (not x2839) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x2881)
+(or (not x2881) x2879)
+(or (not x2881) x2880)
+(or (not x2881) x2839)
+(or (not x2881) x2853)
+(or (not x2881) x2854)
+(or (not x2881) x2845)
+(or (not x2881) x2823)
+(or (not x2881) x2855)
+(or x2882 (not x2881))
+(or x2882 (not x2878))
+(or x2882 (not x2877))
+(or x2882 (not x2875))
+(or x2881 x2878 x2877 x2875 (not x2882))
+(or (not x2859) (not x2839) (not x2840) (not x2841) (not x2842) x2883)
+(or (not x2883) x2859)
+(or (not x2883) x2839)
+(or (not x2883) x2840)
+(or (not x2883) x2841)
+(or (not x2883) x2842)
+(or (not x2884) (not x2840) (not x2839) (not x2845) (not x2846) x2885)
+(or (not x2885) x2884)
+(or (not x2885) x2840)
+(or (not x2885) x2839)
+(or (not x2885) x2845)
+(or (not x2885) x2846)
+(or (not x2868) (not x2840) (not x2839) (not x2845) (not x2849) x2886)
+(or (not x2886) x2868)
+(or (not x2886) x2840)
+(or (not x2886) x2839)
+(or (not x2886) x2845)
+(or (not x2886) x2849)
+(or (not x2887) (not x2888) (not x2839) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x2889)
+(or (not x2889) x2887)
+(or (not x2889) x2888)
+(or (not x2889) x2839)
+(or (not x2889) x2853)
+(or (not x2889) x2854)
+(or (not x2889) x2845)
+(or (not x2889) x2823)
+(or (not x2889) x2855)
+(or x2890 (not x2889))
+(or x2890 (not x2886))
+(or x2890 (not x2885))
+(or x2890 (not x2883))
+(or x2889 x2886 x2885 x2883 (not x2890))
+(or (not x2868) (not x2839) (not x2840) (not x2841) (not x2842) x2891)
+(or (not x2891) x2868)
+(or (not x2891) x2839)
+(or (not x2891) x2840)
+(or (not x2891) x2841)
+(or (not x2891) x2842)
+(or (not x2892) (not x2840) (not x2839) (not x2845) (not x2846) x2893)
+(or (not x2893) x2892)
+(or (not x2893) x2840)
+(or (not x2893) x2839)
+(or (not x2893) x2845)
+(or (not x2893) x2846)
+(or (not x2894) (not x2840) (not x2839) (not x2845) (not x2849) x2895)
+(or (not x2895) x2894)
+(or (not x2895) x2840)
+(or (not x2895) x2839)
+(or (not x2895) x2845)
+(or (not x2895) x2849)
+(or (not x2894) (not x2896) (not x2839) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x2897)
+(or (not x2897) x2894)
+(or (not x2897) x2896)
+(or (not x2897) x2839)
+(or (not x2897) x2853)
+(or (not x2897) x2854)
+(or (not x2897) x2845)
+(or (not x2897) x2823)
+(or (not x2897) x2855)
+(or x2898 (not x2897))
+(or x2898 (not x2895))
+(or x2898 (not x2893))
+(or x2898 (not x2891))
+(or x2897 x2895 x2893 x2891 (not x2898))
+(or (not x2876) (not x2839) (not x2840) (not x2841) (not x2842) x2899)
+(or (not x2899) x2876)
+(or (not x2899) x2839)
+(or (not x2899) x2840)
+(or (not x2899) x2841)
+(or (not x2899) x2842)
+(or (not x2900) (not x2840) (not x2839) (not x2845) (not x2846) x2901)
+(or (not x2901) x2900)
+(or (not x2901) x2840)
+(or (not x2901) x2839)
+(or (not x2901) x2845)
+(or (not x2901) x2846)
+(or (not x2884) (not x2840) (not x2839) (not x2845) (not x2849) x2902)
+(or (not x2902) x2884)
+(or (not x2902) x2840)
+(or (not x2902) x2839)
+(or (not x2902) x2845)
+(or (not x2902) x2849)
+(or (not x2903) (not x2904) (not x2839) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x2905)
+(or (not x2905) x2903)
+(or (not x2905) x2904)
+(or (not x2905) x2839)
+(or (not x2905) x2853)
+(or (not x2905) x2854)
+(or (not x2905) x2845)
+(or (not x2905) x2823)
+(or (not x2905) x2855)
+(or x2906 (not x2905))
+(or x2906 (not x2902))
+(or x2906 (not x2901))
+(or x2906 (not x2899))
+(or x2905 x2902 x2901 x2899 (not x2906))
+(or (not x2884) (not x2839) (not x2840) (not x2841) (not x2842) x2907)
+(or (not x2907) x2884)
+(or (not x2907) x2839)
+(or (not x2907) x2840)
+(or (not x2907) x2841)
+(or (not x2907) x2842)
+(or (not x2908) (not x2840) (not x2839) (not x2845) (not x2846) x2909)
+(or (not x2909) x2908)
+(or (not x2909) x2840)
+(or (not x2909) x2839)
+(or (not x2909) x2845)
+(or (not x2909) x2846)
+(or (not x2892) (not x2840) (not x2839) (not x2845) (not x2849) x2910)
+(or (not x2910) x2892)
+(or (not x2910) x2840)
+(or (not x2910) x2839)
+(or (not x2910) x2845)
+(or (not x2910) x2849)
+(or (not x2911) (not x2912) (not x2839) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x2913)
+(or (not x2913) x2911)
+(or (not x2913) x2912)
+(or (not x2913) x2839)
+(or (not x2913) x2853)
+(or (not x2913) x2854)
+(or (not x2913) x2845)
+(or (not x2913) x2823)
+(or (not x2913) x2855)
+(or x2914 (not x2913))
+(or x2914 (not x2910))
+(or x2914 (not x2909))
+(or x2914 (not x2907))
+(or x2913 x2910 x2909 x2907 (not x2914))
+(or (not x2892) (not x2839) (not x2840) (not x2841) (not x2842) x2915)
+(or (not x2915) x2892)
+(or (not x2915) x2839)
+(or (not x2915) x2840)
+(or (not x2915) x2841)
+(or (not x2915) x2842)
+(or (not x2916) (not x2840) (not x2839) (not x2845) (not x2846) x2917)
+(or (not x2917) x2916)
+(or (not x2917) x2840)
+(or (not x2917) x2839)
+(or (not x2917) x2845)
+(or (not x2917) x2846)
+(or (not x2918) (not x2840) (not x2839) (not x2845) (not x2849) x2919)
+(or (not x2919) x2918)
+(or (not x2919) x2840)
+(or (not x2919) x2839)
+(or (not x2919) x2845)
+(or (not x2919) x2849)
+(or (not x2918) (not x2920) (not x2839) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x2921)
+(or (not x2921) x2918)
+(or (not x2921) x2920)
+(or (not x2921) x2839)
+(or (not x2921) x2853)
+(or (not x2921) x2854)
+(or (not x2921) x2845)
+(or (not x2921) x2823)
+(or (not x2921) x2855)
+(or x2922 (not x2921))
+(or x2922 (not x2919))
+(or x2922 (not x2917))
+(or x2922 (not x2915))
+(or x2921 x2919 x2917 x2915 (not x2922))
+(or (not x2900) (not x2839) (not x2840) (not x2841) (not x2842) x2923)
+(or (not x2923) x2900)
+(or (not x2923) x2839)
+(or (not x2923) x2840)
+(or (not x2923) x2841)
+(or (not x2923) x2842)
+(or (not x2838) (not x2840) (not x2839) (not x2845) (not x2846) x2924)
+(or (not x2924) x2838)
+(or (not x2924) x2840)
+(or (not x2924) x2839)
+(or (not x2924) x2845)
+(or (not x2924) x2846)
+(or (not x2908) (not x2840) (not x2839) (not x2845) (not x2849) x2925)
+(or (not x2925) x2908)
+(or (not x2925) x2840)
+(or (not x2925) x2839)
+(or (not x2925) x2845)
+(or (not x2925) x2849)
+(or (not x2926) (not x2927) (not x2839) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x2928)
+(or (not x2928) x2926)
+(or (not x2928) x2927)
+(or (not x2928) x2839)
+(or (not x2928) x2853)
+(or (not x2928) x2854)
+(or (not x2928) x2845)
+(or (not x2928) x2823)
+(or (not x2928) x2855)
+(or x2929 (not x2928))
+(or x2929 (not x2925))
+(or x2929 (not x2924))
+(or x2929 (not x2923))
+(or x2928 x2925 x2924 x2923 (not x2929))
+(or (not x2908) (not x2839) (not x2840) (not x2841) (not x2842) x2930)
+(or (not x2930) x2908)
+(or (not x2930) x2839)
+(or (not x2930) x2840)
+(or (not x2930) x2841)
+(or (not x2930) x2842)
+(or (not x2848) (not x2840) (not x2839) (not x2845) (not x2846) x2931)
+(or (not x2931) x2848)
+(or (not x2931) x2840)
+(or (not x2931) x2839)
+(or (not x2931) x2845)
+(or (not x2931) x2846)
+(or (not x2916) (not x2840) (not x2839) (not x2845) (not x2849) x2932)
+(or (not x2932) x2916)
+(or (not x2932) x2840)
+(or (not x2932) x2839)
+(or (not x2932) x2845)
+(or (not x2932) x2849)
+(or (not x2933) (not x2934) (not x2839) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x2935)
+(or (not x2935) x2933)
+(or (not x2935) x2934)
+(or (not x2935) x2839)
+(or (not x2935) x2853)
+(or (not x2935) x2854)
+(or (not x2935) x2845)
+(or (not x2935) x2823)
+(or (not x2935) x2855)
+(or x2936 (not x2935))
+(or x2936 (not x2932))
+(or x2936 (not x2931))
+(or x2936 (not x2930))
+(or x2935 x2932 x2931 x2930 (not x2936))
+(or (not x2916) (not x2839) (not x2840) (not x2841) (not x2842) x2937)
+(or (not x2937) x2916)
+(or (not x2937) x2839)
+(or (not x2937) x2840)
+(or (not x2937) x2841)
+(or (not x2937) x2842)
+(or (not x2861) (not x2840) (not x2839) (not x2845) (not x2846) x2938)
+(or (not x2938) x2861)
+(or (not x2938) x2840)
+(or (not x2938) x2839)
+(or (not x2938) x2845)
+(or (not x2938) x2846)
+(or (not x2939) (not x2840) (not x2839) (not x2845) (not x2849) x2940)
+(or (not x2940) x2939)
+(or (not x2940) x2840)
+(or (not x2940) x2839)
+(or (not x2940) x2845)
+(or (not x2940) x2849)
+(or (not x2939) (not x2941) (not x2839) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x2942)
+(or (not x2942) x2939)
+(or (not x2942) x2941)
+(or (not x2942) x2839)
+(or (not x2942) x2853)
+(or (not x2942) x2854)
+(or (not x2942) x2845)
+(or (not x2942) x2823)
+(or (not x2942) x2855)
+(or x2943 (not x2942))
+(or x2943 (not x2940))
+(or x2943 (not x2938))
+(or x2943 (not x2937))
+(or x2942 x2940 x2938 x2937 (not x2943))
+(or x2944 (not x2945))
+(or x2944 (not x2950))
+(or x2945 x2950 (not x2944))
+(or x2951 (not x2952))
+(or x2951 (not x2957))
+(or x2952 x2957 (not x2951))
+(or x2958 (not x2959))
+(or x2958 (not x2964))
+(or x2959 x2964 (not x2958))
+(or x2965 (not x2966))
+(or x2965 (not x2971))
+(or x2966 x2971 (not x2965))
+(or (not x2870) (not x2839) (not x2840) (not x2841) (not x2842) x2972)
+(or (not x2972) x2870)
+(or (not x2972) x2839)
+(or (not x2972) x2840)
+(or (not x2972) x2841)
+(or (not x2972) x2842)
+(or (not x2894) (not x2840) (not x2839) (not x2845) (not x2846) x2973)
+(or (not x2973) x2894)
+(or (not x2973) x2840)
+(or (not x2973) x2839)
+(or (not x2973) x2845)
+(or (not x2973) x2846)
+(or (not x2844) (not x2840) (not x2839) (not x2845) (not x2849) x2974)
+(or (not x2974) x2844)
+(or (not x2974) x2840)
+(or (not x2974) x2839)
+(or (not x2974) x2845)
+(or (not x2974) x2849)
+(or (not x2975) (not x2976) (not x2839) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x2977)
+(or (not x2977) x2975)
+(or (not x2977) x2976)
+(or (not x2977) x2839)
+(or (not x2977) x2853)
+(or (not x2977) x2854)
+(or (not x2977) x2845)
+(or (not x2977) x2823)
+(or (not x2977) x2855)
+(or x2978 (not x2977))
+(or x2978 (not x2974))
+(or x2978 (not x2973))
+(or x2978 (not x2972))
+(or x2977 x2974 x2973 x2972 (not x2978))
+(or x2979 (not x2980))
+(or x2979 (not x2985))
+(or x2980 x2985 (not x2979))
+(or x2986 (not x2987))
+(or x2986 (not x2992))
+(or x2987 x2992 (not x2986))
+(or x2993 (not x2994))
+(or x2993 (not x2999))
+(or x2994 x2999 (not x2993))
+(or x3000 (not x3001))
+(or x3000 (not x3006))
+(or x3001 x3006 (not x3000))
+(or (not x2894) (not x2839) (not x2840) (not x2841) (not x2842) x3007)
+(or (not x3007) x2894)
+(or (not x3007) x2839)
+(or (not x3007) x2840)
+(or (not x3007) x2841)
+(or (not x3007) x2842)
+(or (not x2918) (not x2840) (not x2839) (not x2845) (not x2846) x3008)
+(or (not x3008) x2918)
+(or (not x3008) x2840)
+(or (not x3008) x2839)
+(or (not x3008) x2845)
+(or (not x3008) x2846)
+(or (not x2876) (not x2840) (not x2839) (not x2845) (not x2849) x3009)
+(or (not x3009) x2876)
+(or (not x3009) x2840)
+(or (not x3009) x2839)
+(or (not x3009) x2845)
+(or (not x3009) x2849)
+(or (not x3010) (not x3011) (not x2839) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3012)
+(or (not x3012) x3010)
+(or (not x3012) x3011)
+(or (not x3012) x2839)
+(or (not x3012) x2853)
+(or (not x3012) x2854)
+(or (not x3012) x2845)
+(or (not x3012) x2823)
+(or (not x3012) x2855)
+(or x3013 (not x3012))
+(or x3013 (not x3009))
+(or x3013 (not x3008))
+(or x3013 (not x3007))
+(or x3012 x3009 x3008 x3007 (not x3013))
+(or x3014 (not x3015))
+(or x3014 (not x3020))
+(or x3015 x3020 (not x3014))
+(or x3021 (not x3022))
+(or x3021 (not x3027))
+(or x3022 x3027 (not x3021))
+(or x3028 (not x3029))
+(or x3028 (not x3034))
+(or x3029 x3034 (not x3028))
+(or x3035 (not x3036))
+(or x3035 (not x3041))
+(or x3036 x3041 (not x3035))
+(or (not x2918) (not x2839) (not x2840) (not x2841) (not x2842) x3042)
+(or (not x3042) x2918)
+(or (not x3042) x2839)
+(or (not x3042) x2840)
+(or (not x3042) x2841)
+(or (not x3042) x2842)
+(or (not x2939) (not x2840) (not x2839) (not x2845) (not x2846) x3043)
+(or (not x3043) x2939)
+(or (not x3043) x2840)
+(or (not x3043) x2839)
+(or (not x3043) x2845)
+(or (not x3043) x2846)
+(or (not x2900) (not x2840) (not x2839) (not x2845) (not x2849) x3044)
+(or (not x3044) x2900)
+(or (not x3044) x2840)
+(or (not x3044) x2839)
+(or (not x3044) x2845)
+(or (not x3044) x2849)
+(or (not x3045) (not x3046) (not x2839) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3047)
+(or (not x3047) x3045)
+(or (not x3047) x3046)
+(or (not x3047) x2839)
+(or (not x3047) x2853)
+(or (not x3047) x2854)
+(or (not x3047) x2845)
+(or (not x3047) x2823)
+(or (not x3047) x2855)
+(or x3048 (not x3047))
+(or x3048 (not x3044))
+(or x3048 (not x3043))
+(or x3048 (not x3042))
+(or x3047 x3044 x3043 x3042 (not x3048))
+(or x3049 (not x3050))
+(or x3049 (not x3055))
+(or x3050 x3055 (not x3049))
+(or x3056 (not x3057))
+(or x3056 (not x3062))
+(or x3057 x3062 (not x3056))
+(or x3063 (not x3064))
+(or x3063 (not x3069))
+(or x3064 x3069 (not x3063))
+(or x3070 (not x3071))
+(or x3070 (not x3076))
+(or x3071 x3076 (not x3070))
+(or x2861 x2848 x2838 x3077)
+(or (not x3077) (not x2861))
+(or (not x3077) (not x2848))
+(or (not x3077) (not x2838))
+(or x3078 (not x3079))
+(or x3078 (not x3080))
+(or x3078 (not x3081))
+(or x3078 (not x3082))
+(or x3078 (not x3077))
+(or x3079 x3080 x3081 x3082 x3077 (not x3078))
+(or x2868 x2859 x2844 x3083)
+(or (not x3083) (not x2868))
+(or (not x3083) (not x2859))
+(or (not x3083) (not x2844))
+(or x3084 (not x3085))
+(or x3084 (not x3086))
+(or x3084 (not x3087))
+(or x3084 (not x3088))
+(or x3084 (not x3083))
+(or x3085 x3086 x3087 x3088 x3083 (not x3084))
+(or x2892 x2884 x2876 x3089)
+(or (not x3089) (not x2892))
+(or (not x3089) (not x2884))
+(or (not x3089) (not x2876))
+(or x3090 (not x3091))
+(or x3090 (not x3092))
+(or x3090 (not x3093))
+(or x3090 (not x3094))
+(or x3090 (not x3089))
+(or x3091 x3092 x3093 x3094 x3089 (not x3090))
+(or x2916 x2908 x2900 x3095)
+(or (not x3095) (not x2916))
+(or (not x3095) (not x2908))
+(or (not x3095) (not x2900))
+(or x3096 (not x3097))
+(or x3096 (not x3098))
+(or x3096 (not x3099))
+(or x3096 (not x3100))
+(or x3096 (not x3095))
+(or x3097 x3098 x3099 x3100 x3095 (not x3096))
+(or (not x3096) (not x3090) (not x3084) (not x3078) x3101)
+(or (not x3101) x3096)
+(or (not x3101) x3090)
+(or (not x3101) x3084)
+(or (not x3101) x3078)
+(or x2842 (not x3102))
+(or x2842 (not x3103))
+(or x2842 x2845)
+(or x2842 (not x3101))
+(or x3102 x3103 (not x2845) x3101 (not x2842))
+(or (not x2838) (not x3104) (not x3105) x3082)
+(or (not x3082) x2838)
+(or (not x3082) x3104)
+(or (not x3082) x3105)
+(or x3106 (not x2957))
+(or x3106 (not x2950))
+(or x2957 x2950 (not x3106))
+(or (not x2848) (not x3106) x3081)
+(or (not x3081) x2848)
+(or (not x3081) x3106)
+(or x3107 (not x2964))
+(or x3107 (not x2957))
+(or x3107 (not x2950))
+(or x2964 x2957 x2950 (not x3107))
+(or (not x2861) (not x3107) x3080)
+(or (not x3080) x2861)
+(or (not x3080) x3107)
+(or x3108 (not x2852))
+(or x3108 x2848)
+(or x2852 (not x2848) (not x3108))
+(or x3109 (not x2864))
+(or x3109 (not x2852))
+(or x3109 x2861)
+(or x2864 x2852 (not x2861) (not x3109))
+(or x3110 (not x2872))
+(or x3110 (not x2864))
+(or x3110 (not x2852))
+(or x3110 x2870)
+(or x2872 x2864 x2852 (not x2870) (not x3110))
+(or x2838 (not x3110) (not x3109) (not x3108) x3111)
+(or (not x3111) (not x2838))
+(or (not x3111) x3110)
+(or (not x3111) x3109)
+(or (not x3111) x3108)
+(or x3104 (not x3111))
+(or x3104 x3105)
+(or x3104 (not x3112))
+(or x3104 (not x3113))
+(or x3104 x2845)
+(or x3104 (not x3114))
+(or x3104 (not x3115))
+(or x3111 (not x3105) x3112 x3113 (not x2845) x3114 x3115 (not x3104))
+(or (not x3104) (not x3105) x2950)
+(or (not x2950) x3104)
+(or (not x2950) x3105)
+(or x3116 (not x2864))
+(or x3116 x2861)
+(or x2864 (not x2861) (not x3116))
+(or x3117 (not x2872))
+(or x3117 (not x2864))
+(or x3117 x2870)
+(or x2872 x2864 (not x2870) (not x3117))
+(or x2848 (not x3117) (not x3116) x3118)
+(or (not x3118) (not x2848))
+(or (not x3118) x3117)
+(or (not x3118) x3116)
+(or x3119 (not x3118))
+(or x3119 x2852)
+(or x3119 (not x3112))
+(or x3119 (not x3113))
+(or x3119 x2845)
+(or x3119 (not x3114))
+(or x3119 (not x3115))
+(or x3118 (not x2852) x3112 x3113 (not x2845) x3114 x3115 (not x3119))
+(or (not x3119) (not x2852) x2957)
+(or (not x2957) x3119)
+(or (not x2957) x2852)
+(or x3120 (not x2872))
+(or x3120 x2870)
+(or x2872 (not x2870) (not x3120))
+(or x2861 (not x3120) x3121)
+(or (not x3121) (not x2861))
+(or (not x3121) x3120)
+(or x3122 (not x3121))
+(or x3122 x2864)
+(or x3122 (not x3112))
+(or x3122 (not x3113))
+(or x3122 x2845)
+(or x3122 (not x3114))
+(or x3122 (not x3115))
+(or x3121 (not x2864) x3112 x3113 (not x2845) x3114 x3115 (not x3122))
+(or (not x3122) (not x2864) x2964)
+(or (not x2964) x3122)
+(or (not x2964) x2864)
+(or x3123 x2870)
+(or x3123 x2872)
+(or x3123 (not x3112))
+(or x3123 (not x3113))
+(or x3123 x2845)
+(or x3123 (not x3114))
+(or x3123 (not x3115))
+(or (not x2870) (not x2872) x3112 x3113 (not x2845) x3114 x3115 (not x3123))
+(or (not x3123) (not x2872) x2971)
+(or (not x2971) x3123)
+(or (not x2971) x2872)
+(or x3124 (not x2971))
+(or x3124 (not x2964))
+(or x3124 (not x2957))
+(or x3124 (not x2950))
+(or x2971 x2964 x2957 x2950 (not x3124))
+(or (not x2870) (not x3124) x3079)
+(or (not x3079) x2870)
+(or (not x3079) x3124)
+(or x3125 (not x3079))
+(or x3125 (not x3080))
+(or x3125 (not x3081))
+(or x3125 (not x3082))
+(or x3125 x2870)
+(or x3079 x3080 x3081 x3082 (not x2870) (not x3125))
+(or (not x2844) (not x3126) (not x2976) x3088)
+(or (not x3088) x2844)
+(or (not x3088) x3126)
+(or (not x3088) x2976)
+(or x3127 (not x2992))
+(or x3127 (not x2985))
+(or x2992 x2985 (not x3127))
+(or (not x2859) (not x3127) x3087)
+(or (not x3087) x2859)
+(or (not x3087) x3127)
+(or x3128 (not x2999))
+(or x3128 (not x2992))
+(or x3128 (not x2985))
+(or x2999 x2992 x2985 (not x3128))
+(or (not x2868) (not x3128) x3086)
+(or (not x3086) x2868)
+(or (not x3086) x3128)
+(or x3129 (not x2880))
+(or x3129 x2859)
+(or x2880 (not x2859) (not x3129))
+(or x3130 (not x2888))
+(or x3130 (not x2880))
+(or x3130 x2868)
+(or x2888 x2880 (not x2868) (not x3130))
+(or x3131 (not x2896))
+(or x3131 (not x2888))
+(or x3131 (not x2880))
+(or x3131 x2894)
+(or x2896 x2888 x2880 (not x2894) (not x3131))
+(or x2844 (not x3131) (not x3130) (not x3129) x3132)
+(or (not x3132) (not x2844))
+(or (not x3132) x3131)
+(or (not x3132) x3130)
+(or (not x3132) x3129)
+(or x3126 (not x3132))
+(or x3126 x2976)
+(or x3126 (not x3112))
+(or x3126 (not x3113))
+(or x3126 x2845)
+(or x3126 (not x3114))
+(or x3126 (not x3115))
+(or x3132 (not x2976) x3112 x3113 (not x2845) x3114 x3115 (not x3126))
+(or (not x3126) (not x2976) x2985)
+(or (not x2985) x3126)
+(or (not x2985) x2976)
+(or x3133 (not x2888))
+(or x3133 x2868)
+(or x2888 (not x2868) (not x3133))
+(or x3134 (not x2896))
+(or x3134 (not x2888))
+(or x3134 x2894)
+(or x2896 x2888 (not x2894) (not x3134))
+(or x2859 (not x3134) (not x3133) x3135)
+(or (not x3135) (not x2859))
+(or (not x3135) x3134)
+(or (not x3135) x3133)
+(or x3136 (not x3135))
+(or x3136 x2880)
+(or x3136 (not x3112))
+(or x3136 (not x3113))
+(or x3136 x2845)
+(or x3136 (not x3114))
+(or x3136 (not x3115))
+(or x3135 (not x2880) x3112 x3113 (not x2845) x3114 x3115 (not x3136))
+(or (not x3136) (not x2880) x2992)
+(or (not x2992) x3136)
+(or (not x2992) x2880)
+(or x3137 (not x2896))
+(or x3137 x2894)
+(or x2896 (not x2894) (not x3137))
+(or x2868 (not x3137) x3138)
+(or (not x3138) (not x2868))
+(or (not x3138) x3137)
+(or x3139 (not x3138))
+(or x3139 x2888)
+(or x3139 (not x3112))
+(or x3139 (not x3113))
+(or x3139 x2845)
+(or x3139 (not x3114))
+(or x3139 (not x3115))
+(or x3138 (not x2888) x3112 x3113 (not x2845) x3114 x3115 (not x3139))
+(or (not x3139) (not x2888) x2999)
+(or (not x2999) x3139)
+(or (not x2999) x2888)
+(or x3140 x2894)
+(or x3140 x2896)
+(or x3140 (not x3112))
+(or x3140 (not x3113))
+(or x3140 x2845)
+(or x3140 (not x3114))
+(or x3140 (not x3115))
+(or (not x2894) (not x2896) x3112 x3113 (not x2845) x3114 x3115 (not x3140))
+(or (not x3140) (not x2896) x3006)
+(or (not x3006) x3140)
+(or (not x3006) x2896)
+(or x3141 (not x3006))
+(or x3141 (not x2999))
+(or x3141 (not x2992))
+(or x3141 (not x2985))
+(or x3006 x2999 x2992 x2985 (not x3141))
+(or (not x2894) (not x3141) x3085)
+(or (not x3085) x2894)
+(or (not x3085) x3141)
+(or x3142 (not x3085))
+(or x3142 (not x3086))
+(or x3142 (not x3087))
+(or x3142 (not x3088))
+(or x3142 x2894)
+(or x3085 x3086 x3087 x3088 (not x2894) (not x3142))
+(or (not x2876) (not x3143) (not x3011) x3094)
+(or (not x3094) x2876)
+(or (not x3094) x3143)
+(or (not x3094) x3011)
+(or x3144 (not x3027))
+(or x3144 (not x3020))
+(or x3027 x3020 (not x3144))
+(or (not x2884) (not x3144) x3093)
+(or (not x3093) x2884)
+(or (not x3093) x3144)
+(or x3145 (not x3034))
+(or x3145 (not x3027))
+(or x3145 (not x3020))
+(or x3034 x3027 x3020 (not x3145))
+(or (not x2892) (not x3145) x3092)
+(or (not x3092) x2892)
+(or (not x3092) x3145)
+(or x3146 (not x2904))
+(or x3146 x2884)
+(or x2904 (not x2884) (not x3146))
+(or x3147 (not x2912))
+(or x3147 (not x2904))
+(or x3147 x2892)
+(or x2912 x2904 (not x2892) (not x3147))
+(or x3148 (not x2920))
+(or x3148 (not x2912))
+(or x3148 (not x2904))
+(or x3148 x2918)
+(or x2920 x2912 x2904 (not x2918) (not x3148))
+(or x2876 (not x3148) (not x3147) (not x3146) x3149)
+(or (not x3149) (not x2876))
+(or (not x3149) x3148)
+(or (not x3149) x3147)
+(or (not x3149) x3146)
+(or x3143 (not x3149))
+(or x3143 x3011)
+(or x3143 (not x3112))
+(or x3143 (not x3113))
+(or x3143 x2845)
+(or x3143 (not x3114))
+(or x3143 (not x3115))
+(or x3149 (not x3011) x3112 x3113 (not x2845) x3114 x3115 (not x3143))
+(or (not x3143) (not x3011) x3020)
+(or (not x3020) x3143)
+(or (not x3020) x3011)
+(or x3150 (not x2912))
+(or x3150 x2892)
+(or x2912 (not x2892) (not x3150))
+(or x3151 (not x2920))
+(or x3151 (not x2912))
+(or x3151 x2918)
+(or x2920 x2912 (not x2918) (not x3151))
+(or x2884 (not x3151) (not x3150) x3152)
+(or (not x3152) (not x2884))
+(or (not x3152) x3151)
+(or (not x3152) x3150)
+(or x3153 (not x3152))
+(or x3153 x2904)
+(or x3153 (not x3112))
+(or x3153 (not x3113))
+(or x3153 x2845)
+(or x3153 (not x3114))
+(or x3153 (not x3115))
+(or x3152 (not x2904) x3112 x3113 (not x2845) x3114 x3115 (not x3153))
+(or (not x3153) (not x2904) x3027)
+(or (not x3027) x3153)
+(or (not x3027) x2904)
+(or x3154 (not x2920))
+(or x3154 x2918)
+(or x2920 (not x2918) (not x3154))
+(or x2892 (not x3154) x3155)
+(or (not x3155) (not x2892))
+(or (not x3155) x3154)
+(or x3156 (not x3155))
+(or x3156 x2912)
+(or x3156 (not x3112))
+(or x3156 (not x3113))
+(or x3156 x2845)
+(or x3156 (not x3114))
+(or x3156 (not x3115))
+(or x3155 (not x2912) x3112 x3113 (not x2845) x3114 x3115 (not x3156))
+(or (not x3156) (not x2912) x3034)
+(or (not x3034) x3156)
+(or (not x3034) x2912)
+(or x3157 x2918)
+(or x3157 x2920)
+(or x3157 (not x3112))
+(or x3157 (not x3113))
+(or x3157 x2845)
+(or x3157 (not x3114))
+(or x3157 (not x3115))
+(or (not x2918) (not x2920) x3112 x3113 (not x2845) x3114 x3115 (not x3157))
+(or (not x3157) (not x2920) x3041)
+(or (not x3041) x3157)
+(or (not x3041) x2920)
+(or x3158 (not x3041))
+(or x3158 (not x3034))
+(or x3158 (not x3027))
+(or x3158 (not x3020))
+(or x3041 x3034 x3027 x3020 (not x3158))
+(or (not x2918) (not x3158) x3091)
+(or (not x3091) x2918)
+(or (not x3091) x3158)
+(or x3159 (not x3091))
+(or x3159 (not x3092))
+(or x3159 (not x3093))
+(or x3159 (not x3094))
+(or x3159 x2918)
+(or x3091 x3092 x3093 x3094 (not x2918) (not x3159))
+(or (not x2900) (not x3160) (not x3046) x3100)
+(or (not x3100) x2900)
+(or (not x3100) x3160)
+(or (not x3100) x3046)
+(or x3161 (not x3062))
+(or x3161 (not x3055))
+(or x3062 x3055 (not x3161))
+(or (not x2908) (not x3161) x3099)
+(or (not x3099) x2908)
+(or (not x3099) x3161)
+(or x3162 (not x3069))
+(or x3162 (not x3062))
+(or x3162 (not x3055))
+(or x3069 x3062 x3055 (not x3162))
+(or (not x2916) (not x3162) x3098)
+(or (not x3098) x2916)
+(or (not x3098) x3162)
+(or x3163 (not x2927))
+(or x3163 x2908)
+(or x2927 (not x2908) (not x3163))
+(or x3164 (not x2934))
+(or x3164 (not x2927))
+(or x3164 x2916)
+(or x2934 x2927 (not x2916) (not x3164))
+(or x3165 (not x2941))
+(or x3165 (not x2934))
+(or x3165 (not x2927))
+(or x3165 x2939)
+(or x2941 x2934 x2927 (not x2939) (not x3165))
+(or x2900 (not x3165) (not x3164) (not x3163) x3166)
+(or (not x3166) (not x2900))
+(or (not x3166) x3165)
+(or (not x3166) x3164)
+(or (not x3166) x3163)
+(or x3160 (not x3166))
+(or x3160 x3046)
+(or x3160 (not x3112))
+(or x3160 (not x3113))
+(or x3160 x2845)
+(or x3160 (not x3114))
+(or x3160 (not x3115))
+(or x3166 (not x3046) x3112 x3113 (not x2845) x3114 x3115 (not x3160))
+(or (not x3160) (not x3046) x3055)
+(or (not x3055) x3160)
+(or (not x3055) x3046)
+(or x3167 (not x2934))
+(or x3167 x2916)
+(or x2934 (not x2916) (not x3167))
+(or x3168 (not x2941))
+(or x3168 (not x2934))
+(or x3168 x2939)
+(or x2941 x2934 (not x2939) (not x3168))
+(or x2908 (not x3168) (not x3167) x3169)
+(or (not x3169) (not x2908))
+(or (not x3169) x3168)
+(or (not x3169) x3167)
+(or x3170 (not x3169))
+(or x3170 x2927)
+(or x3170 (not x3112))
+(or x3170 (not x3113))
+(or x3170 x2845)
+(or x3170 (not x3114))
+(or x3170 (not x3115))
+(or x3169 (not x2927) x3112 x3113 (not x2845) x3114 x3115 (not x3170))
+(or (not x3170) (not x2927) x3062)
+(or (not x3062) x3170)
+(or (not x3062) x2927)
+(or x3171 (not x2941))
+(or x3171 x2939)
+(or x2941 (not x2939) (not x3171))
+(or x2916 (not x3171) x3172)
+(or (not x3172) (not x2916))
+(or (not x3172) x3171)
+(or x3173 (not x3172))
+(or x3173 x2934)
+(or x3173 (not x3112))
+(or x3173 (not x3113))
+(or x3173 x2845)
+(or x3173 (not x3114))
+(or x3173 (not x3115))
+(or x3172 (not x2934) x3112 x3113 (not x2845) x3114 x3115 (not x3173))
+(or (not x3173) (not x2934) x3069)
+(or (not x3069) x3173)
+(or (not x3069) x2934)
+(or x3174 x2939)
+(or x3174 x2941)
+(or x3174 (not x3112))
+(or x3174 (not x3113))
+(or x3174 x2845)
+(or x3174 (not x3114))
+(or x3174 (not x3115))
+(or (not x2939) (not x2941) x3112 x3113 (not x2845) x3114 x3115 (not x3174))
+(or (not x3174) (not x2941) x3076)
+(or (not x3076) x3174)
+(or (not x3076) x2941)
+(or x3175 (not x3076))
+(or x3175 (not x3069))
+(or x3175 (not x3062))
+(or x3175 (not x3055))
+(or x3076 x3069 x3062 x3055 (not x3175))
+(or (not x2939) (not x3175) x3097)
+(or (not x3097) x2939)
+(or (not x3097) x3175)
+(or x3176 (not x3097))
+(or x3176 (not x3098))
+(or x3176 (not x3099))
+(or x3176 (not x3100))
+(or x3176 x2939)
+(or x3097 x3098 x3099 x3100 (not x2939) (not x3176))
+(or (not x3176) (not x3159) (not x3142) (not x3125) x3177)
+(or (not x3177) x3176)
+(or (not x3177) x3159)
+(or (not x3177) x3142)
+(or (not x3177) x3125)
+(or x2939 x2916 x2908 x2900 x2918 x2892 x2884 x2876 x2894 x2868 x2859 x2844 x2870 x2861 x2848 x2838 x3103)
+(or (not x3103) (not x2939))
+(or (not x3103) (not x2916))
+(or (not x3103) (not x2908))
+(or (not x3103) (not x2900))
+(or (not x3103) (not x2918))
+(or (not x3103) (not x2892))
+(or (not x3103) (not x2884))
+(or (not x3103) (not x2876))
+(or (not x3103) (not x2894))
+(or (not x3103) (not x2868))
+(or (not x3103) (not x2859))
+(or (not x3103) (not x2844))
+(or (not x3103) (not x2870))
+(or (not x3103) (not x2861))
+(or (not x3103) (not x2848))
+(or (not x3103) (not x2838))
+(or x2841 (not x3102))
+(or x2841 (not x3103))
+(or x2841 x2845)
+(or x2841 (not x3177))
+(or x3102 x3103 (not x2845) x3177 (not x2841))
+(or (not x2939) (not x2839) (not x2840) (not x2841) (not x2842) x3178)
+(or (not x3178) x2939)
+(or (not x3178) x2839)
+(or (not x3178) x2840)
+(or (not x3178) x2841)
+(or (not x3178) x2842)
+(or (not x3179) (not x3180) (not x3181) (not x3182) (not x2870) x3183)
+(or (not x3183) x3179)
+(or (not x3183) x3180)
+(or (not x3183) x3181)
+(or (not x3183) x3182)
+(or (not x3183) x2870)
+(or (not x3184) (not x3185) (not x3186) (not x3187) (not x2894) x3188)
+(or (not x3188) x3184)
+(or (not x3188) x3185)
+(or (not x3188) x3186)
+(or (not x3188) x3187)
+(or (not x3188) x2894)
+(or (not x3189) (not x3190) (not x3191) (not x3192) (not x2918) x3193)
+(or (not x3193) x3189)
+(or (not x3193) x3190)
+(or (not x3193) x3191)
+(or (not x3193) x3192)
+(or (not x3193) x2918)
+(or (not x3194) (not x3195) (not x3196) (not x3197) (not x2939) x3198)
+(or (not x3198) x3194)
+(or (not x3198) x3195)
+(or (not x3198) x3196)
+(or (not x3198) x3197)
+(or (not x3198) x2939)
+(or x2846 (not x3198))
+(or x2846 (not x3193))
+(or x2846 (not x3188))
+(or x2846 (not x3183))
+(or x3198 x3193 x3188 x3183 (not x2846))
+(or (not x2870) (not x2840) (not x2839) (not x2845) (not x2846) x3199)
+(or (not x3199) x2870)
+(or (not x3199) x2840)
+(or (not x3199) x2839)
+(or (not x3199) x2845)
+(or (not x3199) x2846)
+(or x3200 (not x2861))
+(or x3200 (not x2848))
+(or x3200 (not x2838))
+(or x2861 x2848 x2838 (not x3200))
+(or x3182 x2838)
+(or x3182 (not x3201))
+(or x3182 x3105)
+(or (not x2838) x3201 (not x3105) (not x3182))
+(or (not x3202) (not x3203) x3204)
+(or (not x3204) x3202)
+(or (not x3204) x3203)
+(or x3181 x2848)
+(or x3181 (not x3204))
+(or (not x2848) x3204 (not x3181))
+(or (not x3205) (not x3202) (not x3203) x3206)
+(or (not x3206) x3205)
+(or (not x3206) x3202)
+(or (not x3206) x3203)
+(or x3180 x2861)
+(or x3180 (not x3206))
+(or (not x2861) x3206 (not x3180))
+(or (not x3207) (not x3105) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3201)
+(or (not x3201) x3207)
+(or (not x3201) x3105)
+(or (not x3201) x2853)
+(or (not x3201) x2854)
+(or (not x3201) x2845)
+(or (not x3201) x2823)
+(or (not x3201) x2855)
+(or x3203 (not x3201))
+(or x3203 x3105)
+(or x3201 (not x3105) (not x3203))
+(or x2864 (not x2861) x3208)
+(or (not x3208) (not x2864))
+(or (not x3208) x2861)
+(or x2872 x2864 (not x2870) x3209)
+(or (not x3209) (not x2872))
+(or (not x3209) (not x2864))
+(or (not x3209) x2870)
+(or x2851 (not x2848))
+(or x2851 (not x3209))
+(or x2851 (not x3208))
+(or x2848 x3209 x3208 (not x2851))
+(or (not x2851) (not x2852) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3210)
+(or (not x3210) x2851)
+(or (not x3210) x2852)
+(or (not x3210) x2853)
+(or (not x3210) x2854)
+(or (not x3210) x2845)
+(or (not x3210) x2823)
+(or (not x3210) x2855)
+(or x3202 (not x3210))
+(or x3202 x2852)
+(or x3210 (not x2852) (not x3202))
+(or x2872 (not x2870) x3211)
+(or (not x3211) (not x2872))
+(or (not x3211) x2870)
+(or x2863 (not x2861))
+(or x2863 (not x3211))
+(or x2861 x3211 (not x2863))
+(or (not x2863) (not x2864) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3212)
+(or (not x3212) x2863)
+(or (not x3212) x2864)
+(or (not x3212) x2853)
+(or (not x3212) x2854)
+(or (not x3212) x2845)
+(or (not x3212) x2823)
+(or (not x3212) x2855)
+(or x3205 (not x3212))
+(or x3205 x2864)
+(or x3212 (not x2864) (not x3205))
+(or (not x2870) (not x2872) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3213)
+(or (not x3213) x2870)
+(or (not x3213) x2872)
+(or (not x3213) x2853)
+(or (not x3213) x2854)
+(or (not x3213) x2845)
+(or (not x3213) x2823)
+(or (not x3213) x2855)
+(or x3214 (not x3213))
+(or x3214 x2872)
+(or x3213 (not x2872) (not x3214))
+(or (not x3214) (not x3205) (not x3202) (not x3203) x3215)
+(or (not x3215) x3214)
+(or (not x3215) x3205)
+(or (not x3215) x3202)
+(or (not x3215) x3203)
+(or x3179 x2870)
+(or x3179 (not x3215))
+(or (not x2870) x3215 (not x3179))
+(or (not x3179) (not x3180) (not x3181) (not x3182) (not x3200) x3216)
+(or (not x3216) x3179)
+(or (not x3216) x3180)
+(or (not x3216) x3181)
+(or (not x3216) x3182)
+(or (not x3216) x3200)
+(or x3217 (not x2868))
+(or x3217 (not x2859))
+(or x3217 (not x2844))
+(or x2868 x2859 x2844 (not x3217))
+(or x3187 x2844)
+(or x3187 (not x3218))
+(or x3187 x2976)
+(or (not x2844) x3218 (not x2976) (not x3187))
+(or (not x3219) (not x3220) x3221)
+(or (not x3221) x3219)
+(or (not x3221) x3220)
+(or x3186 x2859)
+(or x3186 (not x3221))
+(or (not x2859) x3221 (not x3186))
+(or (not x3222) (not x3219) (not x3220) x3223)
+(or (not x3223) x3222)
+(or (not x3223) x3219)
+(or (not x3223) x3220)
+(or x3185 x2868)
+(or x3185 (not x3223))
+(or (not x2868) x3223 (not x3185))
+(or x2880 (not x2859) x3224)
+(or (not x3224) (not x2880))
+(or (not x3224) x2859)
+(or x2888 x2880 (not x2868) x3225)
+(or (not x3225) (not x2888))
+(or (not x3225) (not x2880))
+(or (not x3225) x2868)
+(or x2896 x2888 x2880 (not x2894) x3226)
+(or (not x3226) (not x2896))
+(or (not x3226) (not x2888))
+(or (not x3226) (not x2880))
+(or (not x3226) x2894)
+(or x2975 (not x2844))
+(or x2975 (not x3226))
+(or x2975 (not x3225))
+(or x2975 (not x3224))
+(or x2844 x3226 x3225 x3224 (not x2975))
+(or (not x2975) (not x2976) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3218)
+(or (not x3218) x2975)
+(or (not x3218) x2976)
+(or (not x3218) x2853)
+(or (not x3218) x2854)
+(or (not x3218) x2845)
+(or (not x3218) x2823)
+(or (not x3218) x2855)
+(or x3220 (not x3218))
+(or x3220 x2976)
+(or x3218 (not x2976) (not x3220))
+(or x2888 (not x2868) x3227)
+(or (not x3227) (not x2888))
+(or (not x3227) x2868)
+(or x2896 x2888 (not x2894) x3228)
+(or (not x3228) (not x2896))
+(or (not x3228) (not x2888))
+(or (not x3228) x2894)
+(or x2879 (not x2859))
+(or x2879 (not x3228))
+(or x2879 (not x3227))
+(or x2859 x3228 x3227 (not x2879))
+(or (not x2879) (not x2880) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3229)
+(or (not x3229) x2879)
+(or (not x3229) x2880)
+(or (not x3229) x2853)
+(or (not x3229) x2854)
+(or (not x3229) x2845)
+(or (not x3229) x2823)
+(or (not x3229) x2855)
+(or x3219 (not x3229))
+(or x3219 x2880)
+(or x3229 (not x2880) (not x3219))
+(or x2896 (not x2894) x3230)
+(or (not x3230) (not x2896))
+(or (not x3230) x2894)
+(or x2887 (not x2868))
+(or x2887 (not x3230))
+(or x2868 x3230 (not x2887))
+(or (not x2887) (not x2888) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3231)
+(or (not x3231) x2887)
+(or (not x3231) x2888)
+(or (not x3231) x2853)
+(or (not x3231) x2854)
+(or (not x3231) x2845)
+(or (not x3231) x2823)
+(or (not x3231) x2855)
+(or x3222 (not x3231))
+(or x3222 x2888)
+(or x3231 (not x2888) (not x3222))
+(or (not x2894) (not x2896) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3232)
+(or (not x3232) x2894)
+(or (not x3232) x2896)
+(or (not x3232) x2853)
+(or (not x3232) x2854)
+(or (not x3232) x2845)
+(or (not x3232) x2823)
+(or (not x3232) x2855)
+(or x3233 (not x3232))
+(or x3233 x2896)
+(or x3232 (not x2896) (not x3233))
+(or (not x3233) (not x3222) (not x3219) (not x3220) x3234)
+(or (not x3234) x3233)
+(or (not x3234) x3222)
+(or (not x3234) x3219)
+(or (not x3234) x3220)
+(or x3184 x2894)
+(or x3184 (not x3234))
+(or (not x2894) x3234 (not x3184))
+(or (not x3184) (not x3185) (not x3186) (not x3187) (not x3217) x3235)
+(or (not x3235) x3184)
+(or (not x3235) x3185)
+(or (not x3235) x3186)
+(or (not x3235) x3187)
+(or (not x3235) x3217)
+(or x3236 (not x2892))
+(or x3236 (not x2884))
+(or x3236 (not x2876))
+(or x2892 x2884 x2876 (not x3236))
+(or x3192 x2876)
+(or x3192 (not x3237))
+(or x3192 x3011)
+(or (not x2876) x3237 (not x3011) (not x3192))
+(or (not x3238) (not x3239) x3240)
+(or (not x3240) x3238)
+(or (not x3240) x3239)
+(or x3191 x2884)
+(or x3191 (not x3240))
+(or (not x2884) x3240 (not x3191))
+(or (not x3241) (not x3238) (not x3239) x3242)
+(or (not x3242) x3241)
+(or (not x3242) x3238)
+(or (not x3242) x3239)
+(or x3190 x2892)
+(or x3190 (not x3242))
+(or (not x2892) x3242 (not x3190))
+(or x2904 (not x2884) x3243)
+(or (not x3243) (not x2904))
+(or (not x3243) x2884)
+(or x2912 x2904 (not x2892) x3244)
+(or (not x3244) (not x2912))
+(or (not x3244) (not x2904))
+(or (not x3244) x2892)
+(or x2920 x2912 x2904 (not x2918) x3245)
+(or (not x3245) (not x2920))
+(or (not x3245) (not x2912))
+(or (not x3245) (not x2904))
+(or (not x3245) x2918)
+(or x3010 (not x2876))
+(or x3010 (not x3245))
+(or x3010 (not x3244))
+(or x3010 (not x3243))
+(or x2876 x3245 x3244 x3243 (not x3010))
+(or (not x3010) (not x3011) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3237)
+(or (not x3237) x3010)
+(or (not x3237) x3011)
+(or (not x3237) x2853)
+(or (not x3237) x2854)
+(or (not x3237) x2845)
+(or (not x3237) x2823)
+(or (not x3237) x2855)
+(or x3239 (not x3237))
+(or x3239 x3011)
+(or x3237 (not x3011) (not x3239))
+(or x2912 (not x2892) x3246)
+(or (not x3246) (not x2912))
+(or (not x3246) x2892)
+(or x2920 x2912 (not x2918) x3247)
+(or (not x3247) (not x2920))
+(or (not x3247) (not x2912))
+(or (not x3247) x2918)
+(or x2903 (not x2884))
+(or x2903 (not x3247))
+(or x2903 (not x3246))
+(or x2884 x3247 x3246 (not x2903))
+(or (not x2903) (not x2904) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3248)
+(or (not x3248) x2903)
+(or (not x3248) x2904)
+(or (not x3248) x2853)
+(or (not x3248) x2854)
+(or (not x3248) x2845)
+(or (not x3248) x2823)
+(or (not x3248) x2855)
+(or x3238 (not x3248))
+(or x3238 x2904)
+(or x3248 (not x2904) (not x3238))
+(or x2920 (not x2918) x3249)
+(or (not x3249) (not x2920))
+(or (not x3249) x2918)
+(or x2911 (not x2892))
+(or x2911 (not x3249))
+(or x2892 x3249 (not x2911))
+(or (not x2911) (not x2912) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3250)
+(or (not x3250) x2911)
+(or (not x3250) x2912)
+(or (not x3250) x2853)
+(or (not x3250) x2854)
+(or (not x3250) x2845)
+(or (not x3250) x2823)
+(or (not x3250) x2855)
+(or x3241 (not x3250))
+(or x3241 x2912)
+(or x3250 (not x2912) (not x3241))
+(or (not x2918) (not x2920) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3251)
+(or (not x3251) x2918)
+(or (not x3251) x2920)
+(or (not x3251) x2853)
+(or (not x3251) x2854)
+(or (not x3251) x2845)
+(or (not x3251) x2823)
+(or (not x3251) x2855)
+(or x3252 (not x3251))
+(or x3252 x2920)
+(or x3251 (not x2920) (not x3252))
+(or (not x3252) (not x3241) (not x3238) (not x3239) x3253)
+(or (not x3253) x3252)
+(or (not x3253) x3241)
+(or (not x3253) x3238)
+(or (not x3253) x3239)
+(or x3189 x2918)
+(or x3189 (not x3253))
+(or (not x2918) x3253 (not x3189))
+(or (not x3189) (not x3190) (not x3191) (not x3192) (not x3236) x3254)
+(or (not x3254) x3189)
+(or (not x3254) x3190)
+(or (not x3254) x3191)
+(or (not x3254) x3192)
+(or (not x3254) x3236)
+(or x3255 (not x2916))
+(or x3255 (not x2908))
+(or x3255 (not x2900))
+(or x2916 x2908 x2900 (not x3255))
+(or x3197 x2900)
+(or x3197 (not x3256))
+(or x3197 x3046)
+(or (not x2900) x3256 (not x3046) (not x3197))
+(or (not x3257) (not x3258) x3259)
+(or (not x3259) x3257)
+(or (not x3259) x3258)
+(or x3196 x2908)
+(or x3196 (not x3259))
+(or (not x2908) x3259 (not x3196))
+(or (not x3260) (not x3257) (not x3258) x3261)
+(or (not x3261) x3260)
+(or (not x3261) x3257)
+(or (not x3261) x3258)
+(or x3195 x2916)
+(or x3195 (not x3261))
+(or (not x2916) x3261 (not x3195))
+(or x2927 (not x2908) x3262)
+(or (not x3262) (not x2927))
+(or (not x3262) x2908)
+(or x2934 x2927 (not x2916) x3263)
+(or (not x3263) (not x2934))
+(or (not x3263) (not x2927))
+(or (not x3263) x2916)
+(or x2941 x2934 x2927 (not x2939) x3264)
+(or (not x3264) (not x2941))
+(or (not x3264) (not x2934))
+(or (not x3264) (not x2927))
+(or (not x3264) x2939)
+(or x3045 (not x2900))
+(or x3045 (not x3264))
+(or x3045 (not x3263))
+(or x3045 (not x3262))
+(or x2900 x3264 x3263 x3262 (not x3045))
+(or (not x3045) (not x3046) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3256)
+(or (not x3256) x3045)
+(or (not x3256) x3046)
+(or (not x3256) x2853)
+(or (not x3256) x2854)
+(or (not x3256) x2845)
+(or (not x3256) x2823)
+(or (not x3256) x2855)
+(or x3258 (not x3256))
+(or x3258 x3046)
+(or x3256 (not x3046) (not x3258))
+(or x2934 (not x2916) x3265)
+(or (not x3265) (not x2934))
+(or (not x3265) x2916)
+(or x2941 x2934 (not x2939) x3266)
+(or (not x3266) (not x2941))
+(or (not x3266) (not x2934))
+(or (not x3266) x2939)
+(or x2926 (not x2908))
+(or x2926 (not x3266))
+(or x2926 (not x3265))
+(or x2908 x3266 x3265 (not x2926))
+(or (not x2926) (not x2927) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3267)
+(or (not x3267) x2926)
+(or (not x3267) x2927)
+(or (not x3267) x2853)
+(or (not x3267) x2854)
+(or (not x3267) x2845)
+(or (not x3267) x2823)
+(or (not x3267) x2855)
+(or x3257 (not x3267))
+(or x3257 x2927)
+(or x3267 (not x2927) (not x3257))
+(or x2941 (not x2939) x3268)
+(or (not x3268) (not x2941))
+(or (not x3268) x2939)
+(or x2933 (not x2916))
+(or x2933 (not x3268))
+(or x2916 x3268 (not x2933))
+(or (not x2933) (not x2934) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3269)
+(or (not x3269) x2933)
+(or (not x3269) x2934)
+(or (not x3269) x2853)
+(or (not x3269) x2854)
+(or (not x3269) x2845)
+(or (not x3269) x2823)
+(or (not x3269) x2855)
+(or x3260 (not x3269))
+(or x3260 x2934)
+(or x3269 (not x2934) (not x3260))
+(or (not x2939) (not x2941) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3270)
+(or (not x3270) x2939)
+(or (not x3270) x2941)
+(or (not x3270) x2853)
+(or (not x3270) x2854)
+(or (not x3270) x2845)
+(or (not x3270) x2823)
+(or (not x3270) x2855)
+(or x3271 (not x3270))
+(or x3271 x2941)
+(or x3270 (not x2941) (not x3271))
+(or (not x3271) (not x3260) (not x3257) (not x3258) x3272)
+(or (not x3272) x3271)
+(or (not x3272) x3260)
+(or (not x3272) x3257)
+(or (not x3272) x3258)
+(or x3194 x2939)
+(or x3194 (not x3272))
+(or (not x2939) x3272 (not x3194))
+(or (not x3194) (not x3195) (not x3196) (not x3197) (not x3255) x3273)
+(or (not x3273) x3194)
+(or (not x3273) x3195)
+(or (not x3273) x3196)
+(or (not x3273) x3197)
+(or (not x3273) x3255)
+(or x2849 (not x3273))
+(or x2849 (not x3254))
+(or x2849 (not x3235))
+(or x2849 (not x3216))
+(or x3273 x3254 x3235 x3216 (not x2849))
+(or (not x3274) (not x3275) x3112)
+(or (not x3112) x3274)
+(or (not x3112) x3275)
+(or x2840 (not x3112))
+(or x2840 (not x3113))
+(or x2840 x2845)
+(or x2840 (not x3114))
+(or x2840 (not x3115))
+(or x3112 x3113 (not x2845) x3114 x3115 (not x2840))
+(or (not x2838) (not x2840) (not x2839) (not x2845) (not x2849) x3276)
+(or (not x3276) x2838)
+(or (not x3276) x2840)
+(or (not x3276) x2839)
+(or (not x3276) x2845)
+(or (not x3276) x2849)
+(or x2839 (not x2939))
+(or x2839 (not x2916))
+(or x2839 (not x2908))
+(or x2839 (not x2900))
+(or x2839 (not x2918))
+(or x2839 (not x2892))
+(or x2839 (not x2884))
+(or x2839 (not x2876))
+(or x2839 (not x2894))
+(or x2839 (not x2868))
+(or x2839 (not x2859))
+(or x2839 (not x2844))
+(or x2839 (not x2870))
+(or x2839 (not x2861))
+(or x2839 (not x2848))
+(or x2839 (not x2838))
+(or x2939 x2916 x2908 x2900 x2918 x2892 x2884 x2876 x2894 x2868 x2859 x2844 x2870 x2861 x2848 x2838 (not x2839))
+(or x2852 (not x2848) x3277)
+(or (not x3277) (not x2852))
+(or (not x3277) x2848)
+(or x2864 x2852 (not x2861) x3278)
+(or (not x3278) (not x2864))
+(or (not x3278) (not x2852))
+(or (not x3278) x2861)
+(or x2872 x2864 x2852 (not x2870) x3279)
+(or (not x3279) (not x2872))
+(or (not x3279) (not x2864))
+(or (not x3279) (not x2852))
+(or (not x3279) x2870)
+(or x3207 (not x2838))
+(or x3207 (not x3279))
+(or x3207 (not x3278))
+(or x3207 (not x3277))
+(or x2838 x3279 x3278 x3277 (not x3207))
+(or (not x3207) (not x3105) (not x2839) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3280)
+(or (not x3280) x3207)
+(or (not x3280) x3105)
+(or (not x3280) x2839)
+(or (not x3280) x2853)
+(or (not x3280) x2854)
+(or (not x3280) x2845)
+(or (not x3280) x2823)
+(or (not x3280) x2855)
+(or x3281 (not x3280))
+(or x3281 (not x3276))
+(or x3281 (not x3199))
+(or x3281 (not x3178))
+(or x3281 (not x3103))
+(or x3280 x3276 x3199 x3178 x3103 (not x3281))
+(or (not x3282) (not x3283) (not x3284) (not x3285) (not x3286) x3287)
+(or (not x3287) x3282)
+(or (not x3287) x3283)
+(or (not x3287) x3284)
+(or (not x3287) x3285)
+(or (not x3287) x3286)
+(or (not x3288) (not x3284) (not x3283) (not x2845) (not x3289) x3290)
+(or (not x3290) x3288)
+(or (not x3290) x3284)
+(or (not x3290) x3283)
+(or (not x3290) x2845)
+(or (not x3290) x3289)
+(or (not x3291) (not x3284) (not x3283) (not x2845) (not x3292) x3293)
+(or (not x3293) x3291)
+(or (not x3293) x3284)
+(or (not x3293) x3283)
+(or (not x3293) x2845)
+(or (not x3293) x3292)
+(or (not x3294) (not x3295) (not x3283) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3297)
+(or (not x3297) x3294)
+(or (not x3297) x3295)
+(or (not x3297) x3283)
+(or (not x3297) x2845)
+(or (not x3297) x2823)
+(or (not x3297) x2855)
+(or (not x3297) x3275)
+(or (not x3297) x3296)
+(or x3298 (not x3297))
+(or x3298 (not x3293))
+(or x3298 (not x3290))
+(or x3298 (not x3287))
+(or x3297 x3293 x3290 x3287 (not x3298))
+(or (not x3291) (not x3283) (not x3284) (not x3285) (not x3286) x3299)
+(or (not x3299) x3291)
+(or (not x3299) x3283)
+(or (not x3299) x3284)
+(or (not x3299) x3285)
+(or (not x3299) x3286)
+(or (not x3300) (not x3284) (not x3283) (not x2845) (not x3289) x3301)
+(or (not x3301) x3300)
+(or (not x3301) x3284)
+(or (not x3301) x3283)
+(or (not x3301) x2845)
+(or (not x3301) x3289)
+(or (not x3302) (not x3284) (not x3283) (not x2845) (not x3292) x3303)
+(or (not x3303) x3302)
+(or (not x3303) x3284)
+(or (not x3303) x3283)
+(or (not x3303) x2845)
+(or (not x3303) x3292)
+(or (not x3304) (not x3305) (not x3283) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3306)
+(or (not x3306) x3304)
+(or (not x3306) x3305)
+(or (not x3306) x3283)
+(or (not x3306) x2845)
+(or (not x3306) x2823)
+(or (not x3306) x2855)
+(or (not x3306) x3275)
+(or (not x3306) x3296)
+(or x3307 (not x3306))
+(or x3307 (not x3303))
+(or x3307 (not x3301))
+(or x3307 (not x3299))
+(or x3306 x3303 x3301 x3299 (not x3307))
+(or (not x3302) (not x3283) (not x3284) (not x3285) (not x3286) x3308)
+(or (not x3308) x3302)
+(or (not x3308) x3283)
+(or (not x3308) x3284)
+(or (not x3308) x3285)
+(or (not x3308) x3286)
+(or (not x3309) (not x3284) (not x3283) (not x2845) (not x3289) x3310)
+(or (not x3310) x3309)
+(or (not x3310) x3284)
+(or (not x3310) x3283)
+(or (not x3310) x2845)
+(or (not x3310) x3289)
+(or (not x3311) (not x3284) (not x3283) (not x2845) (not x3292) x3312)
+(or (not x3312) x3311)
+(or (not x3312) x3284)
+(or (not x3312) x3283)
+(or (not x3312) x2845)
+(or (not x3312) x3292)
+(or (not x3311) (not x3313) (not x3283) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3314)
+(or (not x3314) x3311)
+(or (not x3314) x3313)
+(or (not x3314) x3283)
+(or (not x3314) x2845)
+(or (not x3314) x2823)
+(or (not x3314) x2855)
+(or (not x3314) x3275)
+(or (not x3314) x3296)
+(or x3315 (not x3314))
+(or x3315 (not x3312))
+(or x3315 (not x3310))
+(or x3315 (not x3308))
+(or x3314 x3312 x3310 x3308 (not x3315))
+(or (not x3288) (not x3283) (not x3284) (not x3285) (not x3286) x3316)
+(or (not x3316) x3288)
+(or (not x3316) x3283)
+(or (not x3316) x3284)
+(or (not x3316) x3285)
+(or (not x3316) x3286)
+(or (not x3317) (not x3284) (not x3283) (not x2845) (not x3289) x3318)
+(or (not x3318) x3317)
+(or (not x3318) x3284)
+(or (not x3318) x3283)
+(or (not x3318) x2845)
+(or (not x3318) x3289)
+(or (not x3300) (not x3284) (not x3283) (not x2845) (not x3292) x3319)
+(or (not x3319) x3300)
+(or (not x3319) x3284)
+(or (not x3319) x3283)
+(or (not x3319) x2845)
+(or (not x3319) x3292)
+(or (not x3320) (not x3321) (not x3283) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3322)
+(or (not x3322) x3320)
+(or (not x3322) x3321)
+(or (not x3322) x3283)
+(or (not x3322) x2845)
+(or (not x3322) x2823)
+(or (not x3322) x2855)
+(or (not x3322) x3275)
+(or (not x3322) x3296)
+(or x3323 (not x3322))
+(or x3323 (not x3319))
+(or x3323 (not x3318))
+(or x3323 (not x3316))
+(or x3322 x3319 x3318 x3316 (not x3323))
+(or (not x3300) (not x3283) (not x3284) (not x3285) (not x3286) x3324)
+(or (not x3324) x3300)
+(or (not x3324) x3283)
+(or (not x3324) x3284)
+(or (not x3324) x3285)
+(or (not x3324) x3286)
+(or (not x3325) (not x3284) (not x3283) (not x2845) (not x3289) x3326)
+(or (not x3326) x3325)
+(or (not x3326) x3284)
+(or (not x3326) x3283)
+(or (not x3326) x2845)
+(or (not x3326) x3289)
+(or (not x3309) (not x3284) (not x3283) (not x2845) (not x3292) x3327)
+(or (not x3327) x3309)
+(or (not x3327) x3284)
+(or (not x3327) x3283)
+(or (not x3327) x2845)
+(or (not x3327) x3292)
+(or (not x3328) (not x3329) (not x3283) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3330)
+(or (not x3330) x3328)
+(or (not x3330) x3329)
+(or (not x3330) x3283)
+(or (not x3330) x2845)
+(or (not x3330) x2823)
+(or (not x3330) x2855)
+(or (not x3330) x3275)
+(or (not x3330) x3296)
+(or x3331 (not x3330))
+(or x3331 (not x3327))
+(or x3331 (not x3326))
+(or x3331 (not x3324))
+(or x3330 x3327 x3326 x3324 (not x3331))
+(or (not x3309) (not x3283) (not x3284) (not x3285) (not x3286) x3332)
+(or (not x3332) x3309)
+(or (not x3332) x3283)
+(or (not x3332) x3284)
+(or (not x3332) x3285)
+(or (not x3332) x3286)
+(or (not x3333) (not x3284) (not x3283) (not x2845) (not x3289) x3334)
+(or (not x3334) x3333)
+(or (not x3334) x3284)
+(or (not x3334) x3283)
+(or (not x3334) x2845)
+(or (not x3334) x3289)
+(or (not x3335) (not x3284) (not x3283) (not x2845) (not x3292) x3336)
+(or (not x3336) x3335)
+(or (not x3336) x3284)
+(or (not x3336) x3283)
+(or (not x3336) x2845)
+(or (not x3336) x3292)
+(or (not x3335) (not x3337) (not x3283) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3338)
+(or (not x3338) x3335)
+(or (not x3338) x3337)
+(or (not x3338) x3283)
+(or (not x3338) x2845)
+(or (not x3338) x2823)
+(or (not x3338) x2855)
+(or (not x3338) x3275)
+(or (not x3338) x3296)
+(or x3339 (not x3338))
+(or x3339 (not x3336))
+(or x3339 (not x3334))
+(or x3339 (not x3332))
+(or x3338 x3336 x3334 x3332 (not x3339))
+(or (not x3335) (not x3283) (not x3284) (not x3285) (not x3286) x3340)
+(or (not x3340) x3335)
+(or (not x3340) x3283)
+(or (not x3340) x3284)
+(or (not x3340) x3285)
+(or (not x3340) x3286)
+(or (not x3341) (not x3284) (not x3283) (not x2845) (not x3289) x3342)
+(or (not x3342) x3341)
+(or (not x3342) x3284)
+(or (not x3342) x3283)
+(or (not x3342) x2845)
+(or (not x3342) x3289)
+(or (not x3317) (not x3284) (not x3283) (not x2845) (not x3292) x3343)
+(or (not x3343) x3317)
+(or (not x3343) x3284)
+(or (not x3343) x3283)
+(or (not x3343) x2845)
+(or (not x3343) x3292)
+(or (not x3344) (not x3345) (not x3283) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3346)
+(or (not x3346) x3344)
+(or (not x3346) x3345)
+(or (not x3346) x3283)
+(or (not x3346) x2845)
+(or (not x3346) x2823)
+(or (not x3346) x2855)
+(or (not x3346) x3275)
+(or (not x3346) x3296)
+(or x3347 (not x3346))
+(or x3347 (not x3343))
+(or x3347 (not x3342))
+(or x3347 (not x3340))
+(or x3346 x3343 x3342 x3340 (not x3347))
+(or (not x3317) (not x3283) (not x3284) (not x3285) (not x3286) x3348)
+(or (not x3348) x3317)
+(or (not x3348) x3283)
+(or (not x3348) x3284)
+(or (not x3348) x3285)
+(or (not x3348) x3286)
+(or (not x3349) (not x3284) (not x3283) (not x2845) (not x3289) x3350)
+(or (not x3350) x3349)
+(or (not x3350) x3284)
+(or (not x3350) x3283)
+(or (not x3350) x2845)
+(or (not x3350) x3289)
+(or (not x3325) (not x3284) (not x3283) (not x2845) (not x3292) x3351)
+(or (not x3351) x3325)
+(or (not x3351) x3284)
+(or (not x3351) x3283)
+(or (not x3351) x2845)
+(or (not x3351) x3292)
+(or (not x3352) (not x3353) (not x3283) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3354)
+(or (not x3354) x3352)
+(or (not x3354) x3353)
+(or (not x3354) x3283)
+(or (not x3354) x2845)
+(or (not x3354) x2823)
+(or (not x3354) x2855)
+(or (not x3354) x3275)
+(or (not x3354) x3296)
+(or x3355 (not x3354))
+(or x3355 (not x3351))
+(or x3355 (not x3350))
+(or x3355 (not x3348))
+(or x3354 x3351 x3350 x3348 (not x3355))
+(or (not x3325) (not x3283) (not x3284) (not x3285) (not x3286) x3356)
+(or (not x3356) x3325)
+(or (not x3356) x3283)
+(or (not x3356) x3284)
+(or (not x3356) x3285)
+(or (not x3356) x3286)
+(or (not x3357) (not x3284) (not x3283) (not x2845) (not x3289) x3358)
+(or (not x3358) x3357)
+(or (not x3358) x3284)
+(or (not x3358) x3283)
+(or (not x3358) x2845)
+(or (not x3358) x3289)
+(or (not x3333) (not x3284) (not x3283) (not x2845) (not x3292) x3359)
+(or (not x3359) x3333)
+(or (not x3359) x3284)
+(or (not x3359) x3283)
+(or (not x3359) x2845)
+(or (not x3359) x3292)
+(or (not x3360) (not x3361) (not x3283) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3362)
+(or (not x3362) x3360)
+(or (not x3362) x3361)
+(or (not x3362) x3283)
+(or (not x3362) x2845)
+(or (not x3362) x2823)
+(or (not x3362) x2855)
+(or (not x3362) x3275)
+(or (not x3362) x3296)
+(or x3363 (not x3362))
+(or x3363 (not x3359))
+(or x3363 (not x3358))
+(or x3363 (not x3356))
+(or x3362 x3359 x3358 x3356 (not x3363))
+(or (not x3333) (not x3283) (not x3284) (not x3285) (not x3286) x3364)
+(or (not x3364) x3333)
+(or (not x3364) x3283)
+(or (not x3364) x3284)
+(or (not x3364) x3285)
+(or (not x3364) x3286)
+(or (not x3365) (not x3284) (not x3283) (not x2845) (not x3289) x3366)
+(or (not x3366) x3365)
+(or (not x3366) x3284)
+(or (not x3366) x3283)
+(or (not x3366) x2845)
+(or (not x3366) x3289)
+(or (not x3341) (not x3284) (not x3283) (not x2845) (not x3292) x3367)
+(or (not x3367) x3341)
+(or (not x3367) x3284)
+(or (not x3367) x3283)
+(or (not x3367) x2845)
+(or (not x3367) x3292)
+(or (not x3341) (not x3368) (not x3283) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3369)
+(or (not x3369) x3341)
+(or (not x3369) x3368)
+(or (not x3369) x3283)
+(or (not x3369) x2845)
+(or (not x3369) x2823)
+(or (not x3369) x2855)
+(or (not x3369) x3275)
+(or (not x3369) x3296)
+(or x3370 (not x3369))
+(or x3370 (not x3367))
+(or x3370 (not x3366))
+(or x3370 (not x3364))
+(or x3369 x3367 x3366 x3364 (not x3370))
+(or (not x3349) (not x3283) (not x3284) (not x3285) (not x3286) x3371)
+(or (not x3371) x3349)
+(or (not x3371) x3283)
+(or (not x3371) x3284)
+(or (not x3371) x3285)
+(or (not x3371) x3286)
+(or (not x3282) (not x3284) (not x3283) (not x2845) (not x3289) x3372)
+(or (not x3372) x3282)
+(or (not x3372) x3284)
+(or (not x3372) x3283)
+(or (not x3372) x2845)
+(or (not x3372) x3289)
+(or (not x3357) (not x3284) (not x3283) (not x2845) (not x3292) x3373)
+(or (not x3373) x3357)
+(or (not x3373) x3284)
+(or (not x3373) x3283)
+(or (not x3373) x2845)
+(or (not x3373) x3292)
+(or (not x3374) (not x3375) (not x3283) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3376)
+(or (not x3376) x3374)
+(or (not x3376) x3375)
+(or (not x3376) x3283)
+(or (not x3376) x2845)
+(or (not x3376) x2823)
+(or (not x3376) x2855)
+(or (not x3376) x3275)
+(or (not x3376) x3296)
+(or x3377 (not x3376))
+(or x3377 (not x3373))
+(or x3377 (not x3372))
+(or x3377 (not x3371))
+(or x3376 x3373 x3372 x3371 (not x3377))
+(or (not x3357) (not x3283) (not x3284) (not x3285) (not x3286) x3378)
+(or (not x3378) x3357)
+(or (not x3378) x3283)
+(or (not x3378) x3284)
+(or (not x3378) x3285)
+(or (not x3378) x3286)
+(or (not x3291) (not x3284) (not x3283) (not x2845) (not x3289) x3379)
+(or (not x3379) x3291)
+(or (not x3379) x3284)
+(or (not x3379) x3283)
+(or (not x3379) x2845)
+(or (not x3379) x3289)
+(or (not x3365) (not x3284) (not x3283) (not x2845) (not x3292) x3380)
+(or (not x3380) x3365)
+(or (not x3380) x3284)
+(or (not x3380) x3283)
+(or (not x3380) x2845)
+(or (not x3380) x3292)
+(or (not x3381) (not x3382) (not x3283) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3383)
+(or (not x3383) x3381)
+(or (not x3383) x3382)
+(or (not x3383) x3283)
+(or (not x3383) x2845)
+(or (not x3383) x2823)
+(or (not x3383) x2855)
+(or (not x3383) x3275)
+(or (not x3383) x3296)
+(or x3384 (not x3383))
+(or x3384 (not x3380))
+(or x3384 (not x3379))
+(or x3384 (not x3378))
+(or x3383 x3380 x3379 x3378 (not x3384))
+(or (not x3365) (not x3283) (not x3284) (not x3285) (not x3286) x3385)
+(or (not x3385) x3365)
+(or (not x3385) x3283)
+(or (not x3385) x3284)
+(or (not x3385) x3285)
+(or (not x3385) x3286)
+(or (not x3302) (not x3284) (not x3283) (not x2845) (not x3289) x3386)
+(or (not x3386) x3302)
+(or (not x3386) x3284)
+(or (not x3386) x3283)
+(or (not x3386) x2845)
+(or (not x3386) x3289)
+(or (not x3387) (not x3284) (not x3283) (not x2845) (not x3292) x3388)
+(or (not x3388) x3387)
+(or (not x3388) x3284)
+(or (not x3388) x3283)
+(or (not x3388) x2845)
+(or (not x3388) x3292)
+(or (not x3387) (not x3389) (not x3283) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3390)
+(or (not x3390) x3387)
+(or (not x3390) x3389)
+(or (not x3390) x3283)
+(or (not x3390) x2845)
+(or (not x3390) x2823)
+(or (not x3390) x2855)
+(or (not x3390) x3275)
+(or (not x3390) x3296)
+(or x3391 (not x3390))
+(or x3391 (not x3388))
+(or x3391 (not x3386))
+(or x3391 (not x3385))
+(or x3390 x3388 x3386 x3385 (not x3391))
+(or (not x3311) (not x3283) (not x3284) (not x3285) (not x3286) x3392)
+(or (not x3392) x3311)
+(or (not x3392) x3283)
+(or (not x3392) x3284)
+(or (not x3392) x3285)
+(or (not x3392) x3286)
+(or (not x3335) (not x3284) (not x3283) (not x2845) (not x3289) x3393)
+(or (not x3393) x3335)
+(or (not x3393) x3284)
+(or (not x3393) x3283)
+(or (not x3393) x2845)
+(or (not x3393) x3289)
+(or (not x3288) (not x3284) (not x3283) (not x2845) (not x3292) x3394)
+(or (not x3394) x3288)
+(or (not x3394) x3284)
+(or (not x3394) x3283)
+(or (not x3394) x2845)
+(or (not x3394) x3292)
+(or (not x3395) (not x3396) (not x3283) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3397)
+(or (not x3397) x3395)
+(or (not x3397) x3396)
+(or (not x3397) x3283)
+(or (not x3397) x2845)
+(or (not x3397) x2823)
+(or (not x3397) x2855)
+(or (not x3397) x3275)
+(or (not x3397) x3296)
+(or x3398 (not x3397))
+(or x3398 (not x3394))
+(or x3398 (not x3393))
+(or x3398 (not x3392))
+(or x3397 x3394 x3393 x3392 (not x3398))
+(or (not x3341) (not x3283) (not x3284) (not x3285) (not x3286) x3399)
+(or (not x3399) x3341)
+(or (not x3399) x3283)
+(or (not x3399) x3284)
+(or (not x3399) x3285)
+(or (not x3399) x3286)
+(or (not x3387) (not x3284) (not x3283) (not x2845) (not x3289) x3400)
+(or (not x3400) x3387)
+(or (not x3400) x3284)
+(or (not x3400) x3283)
+(or (not x3400) x2845)
+(or (not x3400) x3289)
+(or (not x3349) (not x3284) (not x3283) (not x2845) (not x3292) x3401)
+(or (not x3401) x3349)
+(or (not x3401) x3284)
+(or (not x3401) x3283)
+(or (not x3401) x2845)
+(or (not x3401) x3292)
+(or (not x3402) (not x3403) (not x3283) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3404)
+(or (not x3404) x3402)
+(or (not x3404) x3403)
+(or (not x3404) x3283)
+(or (not x3404) x2845)
+(or (not x3404) x2823)
+(or (not x3404) x2855)
+(or (not x3404) x3275)
+(or (not x3404) x3296)
+(or x3405 (not x3404))
+(or x3405 (not x3401))
+(or x3405 (not x3400))
+(or x3405 (not x3399))
+(or x3404 x3401 x3400 x3399 (not x3405))
+(or x3406 (not x3407))
+(or x3406 (not x3412))
+(or x3407 x3412 (not x3406))
+(or x3413 (not x3414))
+(or x3413 (not x3419))
+(or x3414 x3419 (not x3413))
+(or x3420 (not x3421))
+(or x3420 (not x3426))
+(or x3421 x3426 (not x3420))
+(or x3427 (not x3428))
+(or x3427 (not x3433))
+(or x3428 x3433 (not x3427))
+(or x3302 x3291 x3282 x3434)
+(or (not x3434) (not x3302))
+(or (not x3434) (not x3291))
+(or (not x3434) (not x3282))
+(or x3435 (not x3436))
+(or x3435 (not x3437))
+(or x3435 (not x3438))
+(or x3435 (not x3439))
+(or x3435 (not x3434))
+(or x3436 x3437 x3438 x3439 x3434 (not x3435))
+(or x3309 x3300 x3288 x3440)
+(or (not x3440) (not x3309))
+(or (not x3440) (not x3300))
+(or (not x3440) (not x3288))
+(or x3441 (not x3442))
+(or x3441 (not x3443))
+(or x3441 (not x3444))
+(or x3441 (not x3445))
+(or x3441 (not x3440))
+(or x3442 x3443 x3444 x3445 x3440 (not x3441))
+(or x3333 x3325 x3317 x3446)
+(or (not x3446) (not x3333))
+(or (not x3446) (not x3325))
+(or (not x3446) (not x3317))
+(or x3447 (not x3448))
+(or x3447 (not x3449))
+(or x3447 (not x3450))
+(or x3447 (not x3451))
+(or x3447 (not x3446))
+(or x3448 x3449 x3450 x3451 x3446 (not x3447))
+(or x3365 x3357 x3349 x3452)
+(or (not x3452) (not x3365))
+(or (not x3452) (not x3357))
+(or (not x3452) (not x3349))
+(or x3453 (not x3454))
+(or x3453 (not x3455))
+(or x3453 (not x3456))
+(or x3453 (not x3457))
+(or x3453 (not x3452))
+(or x3454 x3455 x3456 x3457 x3452 (not x3453))
+(or (not x3453) (not x3447) (not x3441) (not x3435) x3458)
+(or (not x3458) x3453)
+(or (not x3458) x3447)
+(or (not x3458) x3441)
+(or (not x3458) x3435)
+(or x3286 (not x3459))
+(or x3286 (not x3460))
+(or x3286 x2845)
+(or x3286 (not x3458))
+(or x3459 x3460 (not x2845) x3458 (not x3286))
+(or (not x3282) (not x3461) (not x3462) x3439)
+(or (not x3439) x3282)
+(or (not x3439) x3461)
+(or (not x3439) x3462)
+(or x3463 (not x3464))
+(or x3463 (not x3465))
+(or x3464 x3465 (not x3463))
+(or (not x3291) (not x3463) x3438)
+(or (not x3438) x3291)
+(or (not x3438) x3463)
+(or x3466 (not x3467))
+(or x3466 (not x3464))
+(or x3466 (not x3465))
+(or x3467 x3464 x3465 (not x3466))
+(or (not x3302) (not x3466) x3437)
+(or (not x3437) x3302)
+(or (not x3437) x3466)
+(or x3468 (not x3295))
+(or x3468 x3291)
+(or x3295 (not x3291) (not x3468))
+(or x3469 (not x3305))
+(or x3469 (not x3295))
+(or x3469 x3302)
+(or x3305 x3295 (not x3302) (not x3469))
+(or x3470 (not x3313))
+(or x3470 (not x3305))
+(or x3470 (not x3295))
+(or x3470 x3311)
+(or x3313 x3305 x3295 (not x3311) (not x3470))
+(or x3282 (not x3470) (not x3469) (not x3468) x3471)
+(or (not x3471) (not x3282))
+(or (not x3471) x3470)
+(or (not x3471) x3469)
+(or (not x3471) x3468)
+(or x3461 (not x3471))
+(or x3461 x3462)
+(or x3461 x2845)
+(or x3461 (not x3114))
+(or x3461 (not x3115))
+(or x3461 (not x3472))
+(or x3461 (not x3473))
+(or x3471 (not x3462) (not x2845) x3114 x3115 x3472 x3473 (not x3461))
+(or (not x3461) (not x3462) x3465)
+(or (not x3465) x3461)
+(or (not x3465) x3462)
+(or x3474 (not x3305))
+(or x3474 x3302)
+(or x3305 (not x3302) (not x3474))
+(or x3475 (not x3313))
+(or x3475 (not x3305))
+(or x3475 x3311)
+(or x3313 x3305 (not x3311) (not x3475))
+(or x3291 (not x3475) (not x3474) x3476)
+(or (not x3476) (not x3291))
+(or (not x3476) x3475)
+(or (not x3476) x3474)
+(or x3477 (not x3476))
+(or x3477 x3295)
+(or x3477 x2845)
+(or x3477 (not x3114))
+(or x3477 (not x3115))
+(or x3477 (not x3472))
+(or x3477 (not x3473))
+(or x3476 (not x3295) (not x2845) x3114 x3115 x3472 x3473 (not x3477))
+(or (not x3477) (not x3295) x3464)
+(or (not x3464) x3477)
+(or (not x3464) x3295)
+(or x3478 (not x3313))
+(or x3478 x3311)
+(or x3313 (not x3311) (not x3478))
+(or x3302 (not x3478) x3479)
+(or (not x3479) (not x3302))
+(or (not x3479) x3478)
+(or x3480 (not x3479))
+(or x3480 x3305)
+(or x3480 x2845)
+(or x3480 (not x3114))
+(or x3480 (not x3115))
+(or x3480 (not x3472))
+(or x3480 (not x3473))
+(or x3479 (not x3305) (not x2845) x3114 x3115 x3472 x3473 (not x3480))
+(or (not x3480) (not x3305) x3467)
+(or (not x3467) x3480)
+(or (not x3467) x3305)
+(or x3481 x3311)
+(or x3481 x3313)
+(or x3481 x2845)
+(or x3481 (not x3114))
+(or x3481 (not x3115))
+(or x3481 (not x3472))
+(or x3481 (not x3473))
+(or (not x3311) (not x3313) (not x2845) x3114 x3115 x3472 x3473 (not x3481))
+(or (not x3481) (not x3313) x3482)
+(or (not x3482) x3481)
+(or (not x3482) x3313)
+(or x3483 (not x3482))
+(or x3483 (not x3467))
+(or x3483 (not x3464))
+(or x3483 (not x3465))
+(or x3482 x3467 x3464 x3465 (not x3483))
+(or (not x3311) (not x3483) x3436)
+(or (not x3436) x3311)
+(or (not x3436) x3483)
+(or x3484 (not x3436))
+(or x3484 (not x3437))
+(or x3484 (not x3438))
+(or x3484 (not x3439))
+(or x3484 x3311)
+(or x3436 x3437 x3438 x3439 (not x3311) (not x3484))
+(or (not x3288) (not x3485) (not x3396) x3445)
+(or (not x3445) x3288)
+(or (not x3445) x3485)
+(or (not x3445) x3396)
+(or x3486 (not x3487))
+(or x3486 (not x3488))
+(or x3487 x3488 (not x3486))
+(or (not x3300) (not x3486) x3444)
+(or (not x3444) x3300)
+(or (not x3444) x3486)
+(or x3489 (not x3490))
+(or x3489 (not x3487))
+(or x3489 (not x3488))
+(or x3490 x3487 x3488 (not x3489))
+(or (not x3309) (not x3489) x3443)
+(or (not x3443) x3309)
+(or (not x3443) x3489)
+(or x3491 (not x3321))
+(or x3491 x3300)
+(or x3321 (not x3300) (not x3491))
+(or x3492 (not x3329))
+(or x3492 (not x3321))
+(or x3492 x3309)
+(or x3329 x3321 (not x3309) (not x3492))
+(or x3493 (not x3337))
+(or x3493 (not x3329))
+(or x3493 (not x3321))
+(or x3493 x3335)
+(or x3337 x3329 x3321 (not x3335) (not x3493))
+(or x3288 (not x3493) (not x3492) (not x3491) x3494)
+(or (not x3494) (not x3288))
+(or (not x3494) x3493)
+(or (not x3494) x3492)
+(or (not x3494) x3491)
+(or x3485 (not x3494))
+(or x3485 x3396)
+(or x3485 x2845)
+(or x3485 (not x3114))
+(or x3485 (not x3115))
+(or x3485 (not x3472))
+(or x3485 (not x3473))
+(or x3494 (not x3396) (not x2845) x3114 x3115 x3472 x3473 (not x3485))
+(or (not x3485) (not x3396) x3488)
+(or (not x3488) x3485)
+(or (not x3488) x3396)
+(or x3495 (not x3329))
+(or x3495 x3309)
+(or x3329 (not x3309) (not x3495))
+(or x3496 (not x3337))
+(or x3496 (not x3329))
+(or x3496 x3335)
+(or x3337 x3329 (not x3335) (not x3496))
+(or x3300 (not x3496) (not x3495) x3497)
+(or (not x3497) (not x3300))
+(or (not x3497) x3496)
+(or (not x3497) x3495)
+(or x3498 (not x3497))
+(or x3498 x3321)
+(or x3498 x2845)
+(or x3498 (not x3114))
+(or x3498 (not x3115))
+(or x3498 (not x3472))
+(or x3498 (not x3473))
+(or x3497 (not x3321) (not x2845) x3114 x3115 x3472 x3473 (not x3498))
+(or (not x3498) (not x3321) x3487)
+(or (not x3487) x3498)
+(or (not x3487) x3321)
+(or x3499 (not x3337))
+(or x3499 x3335)
+(or x3337 (not x3335) (not x3499))
+(or x3309 (not x3499) x3500)
+(or (not x3500) (not x3309))
+(or (not x3500) x3499)
+(or x3501 (not x3500))
+(or x3501 x3329)
+(or x3501 x2845)
+(or x3501 (not x3114))
+(or x3501 (not x3115))
+(or x3501 (not x3472))
+(or x3501 (not x3473))
+(or x3500 (not x3329) (not x2845) x3114 x3115 x3472 x3473 (not x3501))
+(or (not x3501) (not x3329) x3490)
+(or (not x3490) x3501)
+(or (not x3490) x3329)
+(or x3502 x3335)
+(or x3502 x3337)
+(or x3502 x2845)
+(or x3502 (not x3114))
+(or x3502 (not x3115))
+(or x3502 (not x3472))
+(or x3502 (not x3473))
+(or (not x3335) (not x3337) (not x2845) x3114 x3115 x3472 x3473 (not x3502))
+(or (not x3502) (not x3337) x3503)
+(or (not x3503) x3502)
+(or (not x3503) x3337)
+(or x3504 (not x3503))
+(or x3504 (not x3490))
+(or x3504 (not x3487))
+(or x3504 (not x3488))
+(or x3503 x3490 x3487 x3488 (not x3504))
+(or (not x3335) (not x3504) x3442)
+(or (not x3442) x3335)
+(or (not x3442) x3504)
+(or x3505 (not x3442))
+(or x3505 (not x3443))
+(or x3505 (not x3444))
+(or x3505 (not x3445))
+(or x3505 x3335)
+(or x3442 x3443 x3444 x3445 (not x3335) (not x3505))
+(or (not x3317) (not x3506) (not x3345) x3451)
+(or (not x3451) x3317)
+(or (not x3451) x3506)
+(or (not x3451) x3345)
+(or x3507 (not x3508))
+(or x3507 (not x3509))
+(or x3508 x3509 (not x3507))
+(or (not x3325) (not x3507) x3450)
+(or (not x3450) x3325)
+(or (not x3450) x3507)
+(or x3510 (not x3511))
+(or x3510 (not x3508))
+(or x3510 (not x3509))
+(or x3511 x3508 x3509 (not x3510))
+(or (not x3333) (not x3510) x3449)
+(or (not x3449) x3333)
+(or (not x3449) x3510)
+(or x3512 (not x3353))
+(or x3512 x3325)
+(or x3353 (not x3325) (not x3512))
+(or x3513 (not x3361))
+(or x3513 (not x3353))
+(or x3513 x3333)
+(or x3361 x3353 (not x3333) (not x3513))
+(or x3514 (not x3368))
+(or x3514 (not x3361))
+(or x3514 (not x3353))
+(or x3514 x3341)
+(or x3368 x3361 x3353 (not x3341) (not x3514))
+(or x3317 (not x3514) (not x3513) (not x3512) x3515)
+(or (not x3515) (not x3317))
+(or (not x3515) x3514)
+(or (not x3515) x3513)
+(or (not x3515) x3512)
+(or x3506 (not x3515))
+(or x3506 x3345)
+(or x3506 x2845)
+(or x3506 (not x3114))
+(or x3506 (not x3115))
+(or x3506 (not x3472))
+(or x3506 (not x3473))
+(or x3515 (not x3345) (not x2845) x3114 x3115 x3472 x3473 (not x3506))
+(or (not x3506) (not x3345) x3509)
+(or (not x3509) x3506)
+(or (not x3509) x3345)
+(or x3516 (not x3361))
+(or x3516 x3333)
+(or x3361 (not x3333) (not x3516))
+(or x3517 (not x3368))
+(or x3517 (not x3361))
+(or x3517 x3341)
+(or x3368 x3361 (not x3341) (not x3517))
+(or x3325 (not x3517) (not x3516) x3518)
+(or (not x3518) (not x3325))
+(or (not x3518) x3517)
+(or (not x3518) x3516)
+(or x3519 (not x3518))
+(or x3519 x3353)
+(or x3519 x2845)
+(or x3519 (not x3114))
+(or x3519 (not x3115))
+(or x3519 (not x3472))
+(or x3519 (not x3473))
+(or x3518 (not x3353) (not x2845) x3114 x3115 x3472 x3473 (not x3519))
+(or (not x3519) (not x3353) x3508)
+(or (not x3508) x3519)
+(or (not x3508) x3353)
+(or x3520 (not x3368))
+(or x3520 x3341)
+(or x3368 (not x3341) (not x3520))
+(or x3333 (not x3520) x3521)
+(or (not x3521) (not x3333))
+(or (not x3521) x3520)
+(or x3522 (not x3521))
+(or x3522 x3361)
+(or x3522 x2845)
+(or x3522 (not x3114))
+(or x3522 (not x3115))
+(or x3522 (not x3472))
+(or x3522 (not x3473))
+(or x3521 (not x3361) (not x2845) x3114 x3115 x3472 x3473 (not x3522))
+(or (not x3522) (not x3361) x3511)
+(or (not x3511) x3522)
+(or (not x3511) x3361)
+(or x3523 x3341)
+(or x3523 x3368)
+(or x3523 x2845)
+(or x3523 (not x3114))
+(or x3523 (not x3115))
+(or x3523 (not x3472))
+(or x3523 (not x3473))
+(or (not x3341) (not x3368) (not x2845) x3114 x3115 x3472 x3473 (not x3523))
+(or (not x3523) (not x3368) x3524)
+(or (not x3524) x3523)
+(or (not x3524) x3368)
+(or x3525 (not x3524))
+(or x3525 (not x3511))
+(or x3525 (not x3508))
+(or x3525 (not x3509))
+(or x3524 x3511 x3508 x3509 (not x3525))
+(or (not x3341) (not x3525) x3448)
+(or (not x3448) x3341)
+(or (not x3448) x3525)
+(or x3526 (not x3448))
+(or x3526 (not x3449))
+(or x3526 (not x3450))
+(or x3526 (not x3451))
+(or x3526 x3341)
+(or x3448 x3449 x3450 x3451 (not x3341) (not x3526))
+(or (not x3349) (not x3527) (not x3403) x3457)
+(or (not x3457) x3349)
+(or (not x3457) x3527)
+(or (not x3457) x3403)
+(or x3528 (not x3419))
+(or x3528 (not x3412))
+(or x3419 x3412 (not x3528))
+(or (not x3357) (not x3528) x3456)
+(or (not x3456) x3357)
+(or (not x3456) x3528)
+(or x3529 (not x3426))
+(or x3529 (not x3419))
+(or x3529 (not x3412))
+(or x3426 x3419 x3412 (not x3529))
+(or (not x3365) (not x3529) x3455)
+(or (not x3455) x3365)
+(or (not x3455) x3529)
+(or x3530 (not x3375))
+(or x3530 x3357)
+(or x3375 (not x3357) (not x3530))
+(or x3531 (not x3382))
+(or x3531 (not x3375))
+(or x3531 x3365)
+(or x3382 x3375 (not x3365) (not x3531))
+(or x3532 (not x3389))
+(or x3532 (not x3382))
+(or x3532 (not x3375))
+(or x3532 x3387)
+(or x3389 x3382 x3375 (not x3387) (not x3532))
+(or x3349 (not x3532) (not x3531) (not x3530) x3533)
+(or (not x3533) (not x3349))
+(or (not x3533) x3532)
+(or (not x3533) x3531)
+(or (not x3533) x3530)
+(or x3527 (not x3533))
+(or x3527 x3403)
+(or x3527 x2845)
+(or x3527 (not x3114))
+(or x3527 (not x3115))
+(or x3527 (not x3472))
+(or x3527 (not x3473))
+(or x3533 (not x3403) (not x2845) x3114 x3115 x3472 x3473 (not x3527))
+(or (not x3527) (not x3403) x3412)
+(or (not x3412) x3527)
+(or (not x3412) x3403)
+(or x3534 (not x3382))
+(or x3534 x3365)
+(or x3382 (not x3365) (not x3534))
+(or x3535 (not x3389))
+(or x3535 (not x3382))
+(or x3535 x3387)
+(or x3389 x3382 (not x3387) (not x3535))
+(or x3357 (not x3535) (not x3534) x3536)
+(or (not x3536) (not x3357))
+(or (not x3536) x3535)
+(or (not x3536) x3534)
+(or x3537 (not x3536))
+(or x3537 x3375)
+(or x3537 x2845)
+(or x3537 (not x3114))
+(or x3537 (not x3115))
+(or x3537 (not x3472))
+(or x3537 (not x3473))
+(or x3536 (not x3375) (not x2845) x3114 x3115 x3472 x3473 (not x3537))
+(or (not x3537) (not x3375) x3419)
+(or (not x3419) x3537)
+(or (not x3419) x3375)
+(or x3538 (not x3389))
+(or x3538 x3387)
+(or x3389 (not x3387) (not x3538))
+(or x3365 (not x3538) x3539)
+(or (not x3539) (not x3365))
+(or (not x3539) x3538)
+(or x3540 (not x3539))
+(or x3540 x3382)
+(or x3540 x2845)
+(or x3540 (not x3114))
+(or x3540 (not x3115))
+(or x3540 (not x3472))
+(or x3540 (not x3473))
+(or x3539 (not x3382) (not x2845) x3114 x3115 x3472 x3473 (not x3540))
+(or (not x3540) (not x3382) x3426)
+(or (not x3426) x3540)
+(or (not x3426) x3382)
+(or x3541 x3387)
+(or x3541 x3389)
+(or x3541 x2845)
+(or x3541 (not x3114))
+(or x3541 (not x3115))
+(or x3541 (not x3472))
+(or x3541 (not x3473))
+(or (not x3387) (not x3389) (not x2845) x3114 x3115 x3472 x3473 (not x3541))
+(or (not x3541) (not x3389) x3433)
+(or (not x3433) x3541)
+(or (not x3433) x3389)
+(or x3542 (not x3433))
+(or x3542 (not x3426))
+(or x3542 (not x3419))
+(or x3542 (not x3412))
+(or x3433 x3426 x3419 x3412 (not x3542))
+(or (not x3387) (not x3542) x3454)
+(or (not x3454) x3387)
+(or (not x3454) x3542)
+(or x3543 (not x3454))
+(or x3543 (not x3455))
+(or x3543 (not x3456))
+(or x3543 (not x3457))
+(or x3543 x3387)
+(or x3454 x3455 x3456 x3457 (not x3387) (not x3543))
+(or (not x3543) (not x3526) (not x3505) (not x3484) x3544)
+(or (not x3544) x3543)
+(or (not x3544) x3526)
+(or (not x3544) x3505)
+(or (not x3544) x3484)
+(or x3387 x3365 x3357 x3349 x3341 x3333 x3325 x3317 x3335 x3309 x3300 x3288 x3311 x3302 x3291 x3282 x3460)
+(or (not x3460) (not x3387))
+(or (not x3460) (not x3365))
+(or (not x3460) (not x3357))
+(or (not x3460) (not x3349))
+(or (not x3460) (not x3341))
+(or (not x3460) (not x3333))
+(or (not x3460) (not x3325))
+(or (not x3460) (not x3317))
+(or (not x3460) (not x3335))
+(or (not x3460) (not x3309))
+(or (not x3460) (not x3300))
+(or (not x3460) (not x3288))
+(or (not x3460) (not x3311))
+(or (not x3460) (not x3302))
+(or (not x3460) (not x3291))
+(or (not x3460) (not x3282))
+(or x3285 (not x3459))
+(or x3285 (not x3460))
+(or x3285 x2845)
+(or x3285 (not x3544))
+(or x3459 x3460 (not x2845) x3544 (not x3285))
+(or (not x3387) (not x3283) (not x3284) (not x3285) (not x3286) x3545)
+(or (not x3545) x3387)
+(or (not x3545) x3283)
+(or (not x3545) x3284)
+(or (not x3545) x3285)
+(or (not x3545) x3286)
+(or (not x3546) (not x3547) (not x3548) (not x3549) (not x3311) x3550)
+(or (not x3550) x3546)
+(or (not x3550) x3547)
+(or (not x3550) x3548)
+(or (not x3550) x3549)
+(or (not x3550) x3311)
+(or (not x3551) (not x3552) (not x3553) (not x3554) (not x3335) x3555)
+(or (not x3555) x3551)
+(or (not x3555) x3552)
+(or (not x3555) x3553)
+(or (not x3555) x3554)
+(or (not x3555) x3335)
+(or (not x3556) (not x3557) (not x3558) (not x3559) (not x3341) x3560)
+(or (not x3560) x3556)
+(or (not x3560) x3557)
+(or (not x3560) x3558)
+(or (not x3560) x3559)
+(or (not x3560) x3341)
+(or (not x3561) (not x3562) (not x3563) (not x3564) (not x3387) x3565)
+(or (not x3565) x3561)
+(or (not x3565) x3562)
+(or (not x3565) x3563)
+(or (not x3565) x3564)
+(or (not x3565) x3387)
+(or x3289 (not x3565))
+(or x3289 (not x3560))
+(or x3289 (not x3555))
+(or x3289 (not x3550))
+(or x3565 x3560 x3555 x3550 (not x3289))
+(or (not x3311) (not x3284) (not x3283) (not x2845) (not x3289) x3566)
+(or (not x3566) x3311)
+(or (not x3566) x3284)
+(or (not x3566) x3283)
+(or (not x3566) x2845)
+(or (not x3566) x3289)
+(or x3567 (not x3302))
+(or x3567 (not x3291))
+(or x3567 (not x3282))
+(or x3302 x3291 x3282 (not x3567))
+(or x3549 x3282)
+(or x3549 (not x3568))
+(or x3549 x3462)
+(or (not x3282) x3568 (not x3462) (not x3549))
+(or (not x3569) (not x3570) x3571)
+(or (not x3571) x3569)
+(or (not x3571) x3570)
+(or x3548 x3291)
+(or x3548 (not x3571))
+(or (not x3291) x3571 (not x3548))
+(or (not x3572) (not x3569) (not x3570) x3573)
+(or (not x3573) x3572)
+(or (not x3573) x3569)
+(or (not x3573) x3570)
+(or x3547 x3302)
+(or x3547 (not x3573))
+(or (not x3302) x3573 (not x3547))
+(or (not x3574) (not x3462) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3568)
+(or (not x3568) x3574)
+(or (not x3568) x3462)
+(or (not x3568) x2845)
+(or (not x3568) x2823)
+(or (not x3568) x2855)
+(or (not x3568) x3275)
+(or (not x3568) x3296)
+(or x3570 (not x3568))
+(or x3570 x3462)
+(or x3568 (not x3462) (not x3570))
+(or x3305 (not x3302) x3575)
+(or (not x3575) (not x3305))
+(or (not x3575) x3302)
+(or x3313 x3305 (not x3311) x3576)
+(or (not x3576) (not x3313))
+(or (not x3576) (not x3305))
+(or (not x3576) x3311)
+(or x3294 (not x3291))
+(or x3294 (not x3576))
+(or x3294 (not x3575))
+(or x3291 x3576 x3575 (not x3294))
+(or (not x3294) (not x3295) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3577)
+(or (not x3577) x3294)
+(or (not x3577) x3295)
+(or (not x3577) x2845)
+(or (not x3577) x2823)
+(or (not x3577) x2855)
+(or (not x3577) x3275)
+(or (not x3577) x3296)
+(or x3569 (not x3577))
+(or x3569 x3295)
+(or x3577 (not x3295) (not x3569))
+(or x3313 (not x3311) x3578)
+(or (not x3578) (not x3313))
+(or (not x3578) x3311)
+(or x3304 (not x3302))
+(or x3304 (not x3578))
+(or x3302 x3578 (not x3304))
+(or (not x3304) (not x3305) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3579)
+(or (not x3579) x3304)
+(or (not x3579) x3305)
+(or (not x3579) x2845)
+(or (not x3579) x2823)
+(or (not x3579) x2855)
+(or (not x3579) x3275)
+(or (not x3579) x3296)
+(or x3572 (not x3579))
+(or x3572 x3305)
+(or x3579 (not x3305) (not x3572))
+(or (not x3311) (not x3313) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3580)
+(or (not x3580) x3311)
+(or (not x3580) x3313)
+(or (not x3580) x2845)
+(or (not x3580) x2823)
+(or (not x3580) x2855)
+(or (not x3580) x3275)
+(or (not x3580) x3296)
+(or x3581 (not x3580))
+(or x3581 x3313)
+(or x3580 (not x3313) (not x3581))
+(or (not x3581) (not x3572) (not x3569) (not x3570) x3582)
+(or (not x3582) x3581)
+(or (not x3582) x3572)
+(or (not x3582) x3569)
+(or (not x3582) x3570)
+(or x3546 x3311)
+(or x3546 (not x3582))
+(or (not x3311) x3582 (not x3546))
+(or (not x3546) (not x3547) (not x3548) (not x3549) (not x3567) x3583)
+(or (not x3583) x3546)
+(or (not x3583) x3547)
+(or (not x3583) x3548)
+(or (not x3583) x3549)
+(or (not x3583) x3567)
+(or x3584 (not x3309))
+(or x3584 (not x3300))
+(or x3584 (not x3288))
+(or x3309 x3300 x3288 (not x3584))
+(or x3554 x3288)
+(or x3554 (not x3585))
+(or x3554 x3396)
+(or (not x3288) x3585 (not x3396) (not x3554))
+(or (not x3586) (not x3587) x3588)
+(or (not x3588) x3586)
+(or (not x3588) x3587)
+(or x3553 x3300)
+(or x3553 (not x3588))
+(or (not x3300) x3588 (not x3553))
+(or (not x3589) (not x3586) (not x3587) x3590)
+(or (not x3590) x3589)
+(or (not x3590) x3586)
+(or (not x3590) x3587)
+(or x3552 x3309)
+(or x3552 (not x3590))
+(or (not x3309) x3590 (not x3552))
+(or x3321 (not x3300) x3591)
+(or (not x3591) (not x3321))
+(or (not x3591) x3300)
+(or x3329 x3321 (not x3309) x3592)
+(or (not x3592) (not x3329))
+(or (not x3592) (not x3321))
+(or (not x3592) x3309)
+(or x3337 x3329 x3321 (not x3335) x3593)
+(or (not x3593) (not x3337))
+(or (not x3593) (not x3329))
+(or (not x3593) (not x3321))
+(or (not x3593) x3335)
+(or x3395 (not x3288))
+(or x3395 (not x3593))
+(or x3395 (not x3592))
+(or x3395 (not x3591))
+(or x3288 x3593 x3592 x3591 (not x3395))
+(or (not x3395) (not x3396) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3585)
+(or (not x3585) x3395)
+(or (not x3585) x3396)
+(or (not x3585) x2845)
+(or (not x3585) x2823)
+(or (not x3585) x2855)
+(or (not x3585) x3275)
+(or (not x3585) x3296)
+(or x3587 (not x3585))
+(or x3587 x3396)
+(or x3585 (not x3396) (not x3587))
+(or x3329 (not x3309) x3594)
+(or (not x3594) (not x3329))
+(or (not x3594) x3309)
+(or x3337 x3329 (not x3335) x3595)
+(or (not x3595) (not x3337))
+(or (not x3595) (not x3329))
+(or (not x3595) x3335)
+(or x3320 (not x3300))
+(or x3320 (not x3595))
+(or x3320 (not x3594))
+(or x3300 x3595 x3594 (not x3320))
+(or (not x3320) (not x3321) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3596)
+(or (not x3596) x3320)
+(or (not x3596) x3321)
+(or (not x3596) x2845)
+(or (not x3596) x2823)
+(or (not x3596) x2855)
+(or (not x3596) x3275)
+(or (not x3596) x3296)
+(or x3586 (not x3596))
+(or x3586 x3321)
+(or x3596 (not x3321) (not x3586))
+(or x3337 (not x3335) x3597)
+(or (not x3597) (not x3337))
+(or (not x3597) x3335)
+(or x3328 (not x3309))
+(or x3328 (not x3597))
+(or x3309 x3597 (not x3328))
+(or (not x3328) (not x3329) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3598)
+(or (not x3598) x3328)
+(or (not x3598) x3329)
+(or (not x3598) x2845)
+(or (not x3598) x2823)
+(or (not x3598) x2855)
+(or (not x3598) x3275)
+(or (not x3598) x3296)
+(or x3589 (not x3598))
+(or x3589 x3329)
+(or x3598 (not x3329) (not x3589))
+(or (not x3335) (not x3337) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3599)
+(or (not x3599) x3335)
+(or (not x3599) x3337)
+(or (not x3599) x2845)
+(or (not x3599) x2823)
+(or (not x3599) x2855)
+(or (not x3599) x3275)
+(or (not x3599) x3296)
+(or x3600 (not x3599))
+(or x3600 x3337)
+(or x3599 (not x3337) (not x3600))
+(or (not x3600) (not x3589) (not x3586) (not x3587) x3601)
+(or (not x3601) x3600)
+(or (not x3601) x3589)
+(or (not x3601) x3586)
+(or (not x3601) x3587)
+(or x3551 x3335)
+(or x3551 (not x3601))
+(or (not x3335) x3601 (not x3551))
+(or (not x3551) (not x3552) (not x3553) (not x3554) (not x3584) x3602)
+(or (not x3602) x3551)
+(or (not x3602) x3552)
+(or (not x3602) x3553)
+(or (not x3602) x3554)
+(or (not x3602) x3584)
+(or x3603 (not x3333))
+(or x3603 (not x3325))
+(or x3603 (not x3317))
+(or x3333 x3325 x3317 (not x3603))
+(or x3559 x3317)
+(or x3559 (not x3604))
+(or x3559 x3345)
+(or (not x3317) x3604 (not x3345) (not x3559))
+(or (not x3605) (not x3606) x3607)
+(or (not x3607) x3605)
+(or (not x3607) x3606)
+(or x3558 x3325)
+(or x3558 (not x3607))
+(or (not x3325) x3607 (not x3558))
+(or (not x3608) (not x3605) (not x3606) x3609)
+(or (not x3609) x3608)
+(or (not x3609) x3605)
+(or (not x3609) x3606)
+(or x3557 x3333)
+(or x3557 (not x3609))
+(or (not x3333) x3609 (not x3557))
+(or x3353 (not x3325) x3610)
+(or (not x3610) (not x3353))
+(or (not x3610) x3325)
+(or x3361 x3353 (not x3333) x3611)
+(or (not x3611) (not x3361))
+(or (not x3611) (not x3353))
+(or (not x3611) x3333)
+(or x3368 x3361 x3353 (not x3341) x3612)
+(or (not x3612) (not x3368))
+(or (not x3612) (not x3361))
+(or (not x3612) (not x3353))
+(or (not x3612) x3341)
+(or x3344 (not x3317))
+(or x3344 (not x3612))
+(or x3344 (not x3611))
+(or x3344 (not x3610))
+(or x3317 x3612 x3611 x3610 (not x3344))
+(or (not x3344) (not x3345) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3604)
+(or (not x3604) x3344)
+(or (not x3604) x3345)
+(or (not x3604) x2845)
+(or (not x3604) x2823)
+(or (not x3604) x2855)
+(or (not x3604) x3275)
+(or (not x3604) x3296)
+(or x3606 (not x3604))
+(or x3606 x3345)
+(or x3604 (not x3345) (not x3606))
+(or x3361 (not x3333) x3613)
+(or (not x3613) (not x3361))
+(or (not x3613) x3333)
+(or x3368 x3361 (not x3341) x3614)
+(or (not x3614) (not x3368))
+(or (not x3614) (not x3361))
+(or (not x3614) x3341)
+(or x3352 (not x3325))
+(or x3352 (not x3614))
+(or x3352 (not x3613))
+(or x3325 x3614 x3613 (not x3352))
+(or (not x3352) (not x3353) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3615)
+(or (not x3615) x3352)
+(or (not x3615) x3353)
+(or (not x3615) x2845)
+(or (not x3615) x2823)
+(or (not x3615) x2855)
+(or (not x3615) x3275)
+(or (not x3615) x3296)
+(or x3605 (not x3615))
+(or x3605 x3353)
+(or x3615 (not x3353) (not x3605))
+(or x3368 (not x3341) x3616)
+(or (not x3616) (not x3368))
+(or (not x3616) x3341)
+(or x3360 (not x3333))
+(or x3360 (not x3616))
+(or x3333 x3616 (not x3360))
+(or (not x3360) (not x3361) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3617)
+(or (not x3617) x3360)
+(or (not x3617) x3361)
+(or (not x3617) x2845)
+(or (not x3617) x2823)
+(or (not x3617) x2855)
+(or (not x3617) x3275)
+(or (not x3617) x3296)
+(or x3608 (not x3617))
+(or x3608 x3361)
+(or x3617 (not x3361) (not x3608))
+(or (not x3341) (not x3368) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3618)
+(or (not x3618) x3341)
+(or (not x3618) x3368)
+(or (not x3618) x2845)
+(or (not x3618) x2823)
+(or (not x3618) x2855)
+(or (not x3618) x3275)
+(or (not x3618) x3296)
+(or x3619 (not x3618))
+(or x3619 x3368)
+(or x3618 (not x3368) (not x3619))
+(or (not x3619) (not x3608) (not x3605) (not x3606) x3620)
+(or (not x3620) x3619)
+(or (not x3620) x3608)
+(or (not x3620) x3605)
+(or (not x3620) x3606)
+(or x3556 x3341)
+(or x3556 (not x3620))
+(or (not x3341) x3620 (not x3556))
+(or (not x3556) (not x3557) (not x3558) (not x3559) (not x3603) x3621)
+(or (not x3621) x3556)
+(or (not x3621) x3557)
+(or (not x3621) x3558)
+(or (not x3621) x3559)
+(or (not x3621) x3603)
+(or x3622 (not x3365))
+(or x3622 (not x3357))
+(or x3622 (not x3349))
+(or x3365 x3357 x3349 (not x3622))
+(or x3564 x3349)
+(or x3564 (not x3623))
+(or x3564 x3403)
+(or (not x3349) x3623 (not x3403) (not x3564))
+(or (not x3624) (not x3625) x3626)
+(or (not x3626) x3624)
+(or (not x3626) x3625)
+(or x3563 x3357)
+(or x3563 (not x3626))
+(or (not x3357) x3626 (not x3563))
+(or (not x3627) (not x3624) (not x3625) x3628)
+(or (not x3628) x3627)
+(or (not x3628) x3624)
+(or (not x3628) x3625)
+(or x3562 x3365)
+(or x3562 (not x3628))
+(or (not x3365) x3628 (not x3562))
+(or x3375 (not x3357) x3629)
+(or (not x3629) (not x3375))
+(or (not x3629) x3357)
+(or x3382 x3375 (not x3365) x3630)
+(or (not x3630) (not x3382))
+(or (not x3630) (not x3375))
+(or (not x3630) x3365)
+(or x3389 x3382 x3375 (not x3387) x3631)
+(or (not x3631) (not x3389))
+(or (not x3631) (not x3382))
+(or (not x3631) (not x3375))
+(or (not x3631) x3387)
+(or x3402 (not x3349))
+(or x3402 (not x3631))
+(or x3402 (not x3630))
+(or x3402 (not x3629))
+(or x3349 x3631 x3630 x3629 (not x3402))
+(or (not x3402) (not x3403) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3623)
+(or (not x3623) x3402)
+(or (not x3623) x3403)
+(or (not x3623) x2845)
+(or (not x3623) x2823)
+(or (not x3623) x2855)
+(or (not x3623) x3275)
+(or (not x3623) x3296)
+(or x3625 (not x3623))
+(or x3625 x3403)
+(or x3623 (not x3403) (not x3625))
+(or x3382 (not x3365) x3632)
+(or (not x3632) (not x3382))
+(or (not x3632) x3365)
+(or x3389 x3382 (not x3387) x3633)
+(or (not x3633) (not x3389))
+(or (not x3633) (not x3382))
+(or (not x3633) x3387)
+(or x3374 (not x3357))
+(or x3374 (not x3633))
+(or x3374 (not x3632))
+(or x3357 x3633 x3632 (not x3374))
+(or (not x3374) (not x3375) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3634)
+(or (not x3634) x3374)
+(or (not x3634) x3375)
+(or (not x3634) x2845)
+(or (not x3634) x2823)
+(or (not x3634) x2855)
+(or (not x3634) x3275)
+(or (not x3634) x3296)
+(or x3624 (not x3634))
+(or x3624 x3375)
+(or x3634 (not x3375) (not x3624))
+(or x3389 (not x3387) x3635)
+(or (not x3635) (not x3389))
+(or (not x3635) x3387)
+(or x3381 (not x3365))
+(or x3381 (not x3635))
+(or x3365 x3635 (not x3381))
+(or (not x3381) (not x3382) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3636)
+(or (not x3636) x3381)
+(or (not x3636) x3382)
+(or (not x3636) x2845)
+(or (not x3636) x2823)
+(or (not x3636) x2855)
+(or (not x3636) x3275)
+(or (not x3636) x3296)
+(or x3627 (not x3636))
+(or x3627 x3382)
+(or x3636 (not x3382) (not x3627))
+(or (not x3387) (not x3389) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3637)
+(or (not x3637) x3387)
+(or (not x3637) x3389)
+(or (not x3637) x2845)
+(or (not x3637) x2823)
+(or (not x3637) x2855)
+(or (not x3637) x3275)
+(or (not x3637) x3296)
+(or x3638 (not x3637))
+(or x3638 x3389)
+(or x3637 (not x3389) (not x3638))
+(or (not x3638) (not x3627) (not x3624) (not x3625) x3639)
+(or (not x3639) x3638)
+(or (not x3639) x3627)
+(or (not x3639) x3624)
+(or (not x3639) x3625)
+(or x3561 x3387)
+(or x3561 (not x3639))
+(or (not x3387) x3639 (not x3561))
+(or (not x3561) (not x3562) (not x3563) (not x3564) (not x3622) x3640)
+(or (not x3640) x3561)
+(or (not x3640) x3562)
+(or (not x3640) x3563)
+(or (not x3640) x3564)
+(or (not x3640) x3622)
+(or x3292 (not x3640))
+(or x3292 (not x3621))
+(or x3292 (not x3602))
+(or x3292 (not x3583))
+(or x3640 x3621 x3602 x3583 (not x3292))
+(or (not x2854) x3274 x3473)
+(or (not x3473) x2854)
+(or (not x3473) (not x3274))
+(or x3284 x2845)
+(or x3284 (not x3114))
+(or x3284 (not x3115))
+(or x3284 (not x3472))
+(or x3284 (not x3473))
+(or (not x2845) x3114 x3115 x3472 x3473 (not x3284))
+(or (not x3282) (not x3284) (not x3283) (not x2845) (not x3292) x3641)
+(or (not x3641) x3282)
+(or (not x3641) x3284)
+(or (not x3641) x3283)
+(or (not x3641) x2845)
+(or (not x3641) x3292)
+(or x3283 (not x3387))
+(or x3283 (not x3365))
+(or x3283 (not x3357))
+(or x3283 (not x3349))
+(or x3283 (not x3341))
+(or x3283 (not x3333))
+(or x3283 (not x3325))
+(or x3283 (not x3317))
+(or x3283 (not x3335))
+(or x3283 (not x3309))
+(or x3283 (not x3300))
+(or x3283 (not x3288))
+(or x3283 (not x3311))
+(or x3283 (not x3302))
+(or x3283 (not x3291))
+(or x3283 (not x3282))
+(or x3387 x3365 x3357 x3349 x3341 x3333 x3325 x3317 x3335 x3309 x3300 x3288 x3311 x3302 x3291 x3282 (not x3283))
+(or x3295 (not x3291) x3642)
+(or (not x3642) (not x3295))
+(or (not x3642) x3291)
+(or x3305 x3295 (not x3302) x3643)
+(or (not x3643) (not x3305))
+(or (not x3643) (not x3295))
+(or (not x3643) x3302)
+(or x3313 x3305 x3295 (not x3311) x3644)
+(or (not x3644) (not x3313))
+(or (not x3644) (not x3305))
+(or (not x3644) (not x3295))
+(or (not x3644) x3311)
+(or x3574 (not x3282))
+(or x3574 (not x3644))
+(or x3574 (not x3643))
+(or x3574 (not x3642))
+(or x3282 x3644 x3643 x3642 (not x3574))
+(or (not x3574) (not x3462) (not x3283) (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3645)
+(or (not x3645) x3574)
+(or (not x3645) x3462)
+(or (not x3645) x3283)
+(or (not x3645) x2845)
+(or (not x3645) x2823)
+(or (not x3645) x2855)
+(or (not x3645) x3275)
+(or (not x3645) x3296)
+(or x3646 (not x3645))
+(or x3646 (not x3641))
+(or x3646 (not x3566))
+(or x3646 (not x3545))
+(or x3646 (not x3460))
+(or x3645 x3641 x3566 x3545 x3460 (not x3646))
+(or (not x3647) (not x3274) x3648)
+(or (not x3648) x3647)
+(or (not x3648) x3274)
+(or x2853 x3274)
+(or x2853 (not x3472))
+(or (not x3274) x3472 (not x2853))
+(or (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3102)
+(or (not x3102) x2853)
+(or (not x3102) x2854)
+(or (not x3102) x2845)
+(or (not x3102) x2823)
+(or (not x3102) x2855)
+(or (not x2845) (not x2823) (not x2855) (not x2853) (not x2854) (not x2845) (not x2823) (not x2855) x3649)
+(or (not x3649) x2845)
+(or (not x3649) x2823)
+(or (not x3649) x2855)
+(or (not x3649) x2853)
+(or (not x3649) x2854)
+(or (not x3649) x2845)
+(or (not x3649) x2823)
+(or (not x3649) x2855)
+(or x3650 (not x3649))
+(or x3650 (not x3648))
+(or x3649 x3648 (not x3650))
+(or x3651 (not x3652))
+(or x3651 (not x3653))
+(or x3651 (not x3654))
+(or x3651 (not x2949))
+(or x3652 x3653 x3654 x2949 (not x3651))
+(or x3655 (not x3652))
+(or x3655 (not x3653))
+(or x3655 (not x3654))
+(or x3655 (not x2948))
+(or x3652 x3653 x3654 x2948 (not x3655))
+(or (not x3656) (not x3657) (not x3658) (not x3655) x3659)
+(or (not x3659) x3656)
+(or (not x3659) x3657)
+(or (not x3659) x3658)
+(or (not x3659) x3655)
+(or x3660 (not x3652))
+(or x3660 (not x3653))
+(or x3660 (not x3654))
+(or x3660 (not x2947))
+(or x3652 x3653 x3654 x2947 (not x3660))
+(or (not x3656) (not x3657) (not x3658) (not x3660) x3661)
+(or (not x3661) x3656)
+(or (not x3661) x3657)
+(or (not x3661) x3658)
+(or (not x3661) x3660)
+(or x3662 (not x3652))
+(or x3662 (not x3653))
+(or x3662 (not x3654))
+(or x3662 (not x2946))
+(or x3652 x3653 x3654 x2946 (not x3662))
+(or (not x3656) (not x3658) (not x3662) x3663)
+(or (not x3663) x3656)
+(or (not x3663) x3658)
+(or (not x3663) x3662)
+(or (not x2949) x2948 x2947 (not x2946) x2945 (not x3664) x3665 x3666 (not x3667) (not x3668) x3654)
+(or (not x3654) x2949)
+(or (not x3654) (not x2948))
+(or (not x3654) (not x2947))
+(or (not x3654) x2946)
+(or (not x3654) (not x2945))
+(or (not x3654) x3664)
+(or (not x3654) (not x3665))
+(or (not x3654) (not x3666))
+(or (not x3654) x3667)
+(or (not x3654) x3668)
+(or x3669 (not x3652))
+(or x3669 (not x3653))
+(or x3669 (not x3654))
+(or x3669 (not x2945))
+(or x3652 x3653 x3654 x2945 (not x3669))
+(or x3658 (not x3652))
+(or x3658 (not x3653))
+(or x3658 x2949)
+(or x3658 (not x2948))
+(or x3658 (not x2947))
+(or x3658 x2946)
+(or x3658 (not x2945))
+(or x3658 x3664)
+(or x3658 (not x3665))
+(or x3658 (not x3666))
+(or x3658 x3667)
+(or x3658 x3668)
+(or x3652 x3653 (not x2949) x2948 x2947 (not x2946) x2945 (not x3664) x3665 x3666 (not x3667) (not x3668) (not x3658))
+(or x3657 (not x3652))
+(or x3657 x2949)
+(or x3657 (not x2948))
+(or x3657 (not x2947))
+(or x3657 (not x2946))
+(or x3657 x2945)
+(or x3652 (not x2949) x2948 x2947 x2946 (not x2945) (not x3657))
+(or x3656 x2949)
+(or x3656 (not x2948))
+(or x3656 (not x2947))
+(or x3656 (not x2946))
+(or x3656 (not x2945))
+(or (not x2949) x2948 x2947 x2946 x2945 (not x3656))
+(or x3670 x2949)
+(or x3670 (not x2948))
+(or x3670 (not x2947))
+(or x3670 (not x2946))
+(or x3670 (not x2945))
+(or x3670 x3671)
+(or (not x2949) x2948 x2947 x2946 x2945 (not x3671) (not x3670))
+(or (not x3670) (not x3657) (not x3658) (not x3669) x3672)
+(or (not x3672) x3670)
+(or (not x3672) x3657)
+(or (not x3672) x3658)
+(or (not x3672) x3669)
+(or x3673 (not x3674))
+(or x3673 (not x3675))
+(or x3673 (not x3676))
+(or x3673 (not x2956))
+(or x3674 x3675 x3676 x2956 (not x3673))
+(or x3677 (not x3674))
+(or x3677 (not x3675))
+(or x3677 (not x3676))
+(or x3677 (not x2955))
+(or x3674 x3675 x3676 x2955 (not x3677))
+(or (not x3678) (not x3679) (not x3680) (not x3677) x3681)
+(or (not x3681) x3678)
+(or (not x3681) x3679)
+(or (not x3681) x3680)
+(or (not x3681) x3677)
+(or x3682 (not x3674))
+(or x3682 (not x3675))
+(or x3682 (not x3676))
+(or x3682 (not x2954))
+(or x3674 x3675 x3676 x2954 (not x3682))
+(or (not x3678) (not x3679) (not x3680) (not x3682) x3683)
+(or (not x3683) x3678)
+(or (not x3683) x3679)
+(or (not x3683) x3680)
+(or (not x3683) x3682)
+(or x3684 (not x3674))
+(or x3684 (not x3675))
+(or x3684 (not x3676))
+(or x3684 (not x2953))
+(or x3674 x3675 x3676 x2953 (not x3684))
+(or (not x3678) (not x3680) (not x3684) x3685)
+(or (not x3685) x3678)
+(or (not x3685) x3680)
+(or (not x3685) x3684)
+(or (not x2956) x2955 x2954 (not x2953) x2952 (not x3686) x3665 x3666 (not x3667) (not x3668) x3676)
+(or (not x3676) x2956)
+(or (not x3676) (not x2955))
+(or (not x3676) (not x2954))
+(or (not x3676) x2953)
+(or (not x3676) (not x2952))
+(or (not x3676) x3686)
+(or (not x3676) (not x3665))
+(or (not x3676) (not x3666))
+(or (not x3676) x3667)
+(or (not x3676) x3668)
+(or x3687 (not x3674))
+(or x3687 (not x3675))
+(or x3687 (not x3676))
+(or x3687 (not x2952))
+(or x3674 x3675 x3676 x2952 (not x3687))
+(or x3680 (not x3674))
+(or x3680 (not x3675))
+(or x3680 x2956)
+(or x3680 (not x2955))
+(or x3680 (not x2954))
+(or x3680 x2953)
+(or x3680 (not x2952))
+(or x3680 x3686)
+(or x3680 (not x3665))
+(or x3680 (not x3666))
+(or x3680 x3667)
+(or x3680 x3668)
+(or x3674 x3675 (not x2956) x2955 x2954 (not x2953) x2952 (not x3686) x3665 x3666 (not x3667) (not x3668) (not x3680))
+(or x3679 (not x3674))
+(or x3679 x2956)
+(or x3679 (not x2955))
+(or x3679 (not x2954))
+(or x3679 (not x2953))
+(or x3679 x2952)
+(or x3674 (not x2956) x2955 x2954 x2953 (not x2952) (not x3679))
+(or x3678 x2956)
+(or x3678 (not x2955))
+(or x3678 (not x2954))
+(or x3678 (not x2953))
+(or x3678 (not x2952))
+(or (not x2956) x2955 x2954 x2953 x2952 (not x3678))
+(or x3688 x2956)
+(or x3688 (not x2955))
+(or x3688 (not x2954))
+(or x3688 (not x2953))
+(or x3688 (not x2952))
+(or x3688 x3689)
+(or (not x2956) x2955 x2954 x2953 x2952 (not x3689) (not x3688))
+(or (not x3688) (not x3679) (not x3680) (not x3687) x3690)
+(or (not x3690) x3688)
+(or (not x3690) x3679)
+(or (not x3690) x3680)
+(or (not x3690) x3687)
+(or x3691 (not x3692))
+(or x3691 (not x3693))
+(or x3691 (not x3694))
+(or x3691 (not x2963))
+(or x3692 x3693 x3694 x2963 (not x3691))
+(or x3695 (not x3692))
+(or x3695 (not x3693))
+(or x3695 (not x3694))
+(or x3695 (not x2962))
+(or x3692 x3693 x3694 x2962 (not x3695))
+(or (not x3696) (not x3697) (not x3698) (not x3695) x3699)
+(or (not x3699) x3696)
+(or (not x3699) x3697)
+(or (not x3699) x3698)
+(or (not x3699) x3695)
+(or x3700 (not x3692))
+(or x3700 (not x3693))
+(or x3700 (not x3694))
+(or x3700 (not x2961))
+(or x3692 x3693 x3694 x2961 (not x3700))
+(or (not x3696) (not x3697) (not x3698) (not x3700) x3701)
+(or (not x3701) x3696)
+(or (not x3701) x3697)
+(or (not x3701) x3698)
+(or (not x3701) x3700)
+(or x3702 (not x3692))
+(or x3702 (not x3693))
+(or x3702 (not x3694))
+(or x3702 (not x2960))
+(or x3692 x3693 x3694 x2960 (not x3702))
+(or (not x3696) (not x3698) (not x3702) x3703)
+(or (not x3703) x3696)
+(or (not x3703) x3698)
+(or (not x3703) x3702)
+(or (not x2963) x2962 x2961 (not x2960) x2959 (not x3704) x3665 x3666 (not x3667) (not x3668) x3694)
+(or (not x3694) x2963)
+(or (not x3694) (not x2962))
+(or (not x3694) (not x2961))
+(or (not x3694) x2960)
+(or (not x3694) (not x2959))
+(or (not x3694) x3704)
+(or (not x3694) (not x3665))
+(or (not x3694) (not x3666))
+(or (not x3694) x3667)
+(or (not x3694) x3668)
+(or x3705 (not x3692))
+(or x3705 (not x3693))
+(or x3705 (not x3694))
+(or x3705 (not x2959))
+(or x3692 x3693 x3694 x2959 (not x3705))
+(or x3698 (not x3692))
+(or x3698 (not x3693))
+(or x3698 x2963)
+(or x3698 (not x2962))
+(or x3698 (not x2961))
+(or x3698 x2960)
+(or x3698 (not x2959))
+(or x3698 x3704)
+(or x3698 (not x3665))
+(or x3698 (not x3666))
+(or x3698 x3667)
+(or x3698 x3668)
+(or x3692 x3693 (not x2963) x2962 x2961 (not x2960) x2959 (not x3704) x3665 x3666 (not x3667) (not x3668) (not x3698))
+(or x3697 (not x3692))
+(or x3697 x2963)
+(or x3697 (not x2962))
+(or x3697 (not x2961))
+(or x3697 (not x2960))
+(or x3697 x2959)
+(or x3692 (not x2963) x2962 x2961 x2960 (not x2959) (not x3697))
+(or x3696 x2963)
+(or x3696 (not x2962))
+(or x3696 (not x2961))
+(or x3696 (not x2960))
+(or x3696 (not x2959))
+(or (not x2963) x2962 x2961 x2960 x2959 (not x3696))
+(or x3706 x2963)
+(or x3706 (not x2962))
+(or x3706 (not x2961))
+(or x3706 (not x2960))
+(or x3706 (not x2959))
+(or x3706 x3707)
+(or (not x2963) x2962 x2961 x2960 x2959 (not x3707) (not x3706))
+(or (not x3706) (not x3697) (not x3698) (not x3705) x3708)
+(or (not x3708) x3706)
+(or (not x3708) x3697)
+(or (not x3708) x3698)
+(or (not x3708) x3705)
+(or x3709 (not x3710))
+(or x3709 (not x3711))
+(or x3709 (not x3712))
+(or x3709 (not x2970))
+(or x3710 x3711 x3712 x2970 (not x3709))
+(or x3713 (not x3710))
+(or x3713 (not x3711))
+(or x3713 (not x3712))
+(or x3713 (not x2969))
+(or x3710 x3711 x3712 x2969 (not x3713))
+(or (not x3714) (not x3715) (not x3716) (not x3713) x3717)
+(or (not x3717) x3714)
+(or (not x3717) x3715)
+(or (not x3717) x3716)
+(or (not x3717) x3713)
+(or x3718 (not x3710))
+(or x3718 (not x3711))
+(or x3718 (not x3712))
+(or x3718 (not x2968))
+(or x3710 x3711 x3712 x2968 (not x3718))
+(or (not x3714) (not x3715) (not x3716) (not x3718) x3719)
+(or (not x3719) x3714)
+(or (not x3719) x3715)
+(or (not x3719) x3716)
+(or (not x3719) x3718)
+(or x3720 (not x3710))
+(or x3720 (not x3711))
+(or x3720 (not x3712))
+(or x3720 (not x2967))
+(or x3710 x3711 x3712 x2967 (not x3720))
+(or (not x3714) (not x3716) (not x3720) x3721)
+(or (not x3721) x3714)
+(or (not x3721) x3716)
+(or (not x3721) x3720)
+(or (not x2970) x2969 x2968 (not x2967) x2966 (not x3722) x3665 x3666 (not x3667) (not x3668) x3712)
+(or (not x3712) x2970)
+(or (not x3712) (not x2969))
+(or (not x3712) (not x2968))
+(or (not x3712) x2967)
+(or (not x3712) (not x2966))
+(or (not x3712) x3722)
+(or (not x3712) (not x3665))
+(or (not x3712) (not x3666))
+(or (not x3712) x3667)
+(or (not x3712) x3668)
+(or x3723 (not x3710))
+(or x3723 (not x3711))
+(or x3723 (not x3712))
+(or x3723 (not x2966))
+(or x3710 x3711 x3712 x2966 (not x3723))
+(or x3716 (not x3710))
+(or x3716 (not x3711))
+(or x3716 x2970)
+(or x3716 (not x2969))
+(or x3716 (not x2968))
+(or x3716 x2967)
+(or x3716 (not x2966))
+(or x3716 x3722)
+(or x3716 (not x3665))
+(or x3716 (not x3666))
+(or x3716 x3667)
+(or x3716 x3668)
+(or x3710 x3711 (not x2970) x2969 x2968 (not x2967) x2966 (not x3722) x3665 x3666 (not x3667) (not x3668) (not x3716))
+(or x3715 (not x3710))
+(or x3715 x2970)
+(or x3715 (not x2969))
+(or x3715 (not x2968))
+(or x3715 (not x2967))
+(or x3715 x2966)
+(or x3710 (not x2970) x2969 x2968 x2967 (not x2966) (not x3715))
+(or x3714 x2970)
+(or x3714 (not x2969))
+(or x3714 (not x2968))
+(or x3714 (not x2967))
+(or x3714 (not x2966))
+(or (not x2970) x2969 x2968 x2967 x2966 (not x3714))
+(or x3724 x2970)
+(or x3724 (not x2969))
+(or x3724 (not x2968))
+(or x3724 (not x2967))
+(or x3724 (not x2966))
+(or x3724 x3725)
+(or (not x2970) x2969 x2968 x2967 x2966 (not x3725) (not x3724))
+(or (not x3724) (not x3715) (not x3716) (not x3723) x3726)
+(or (not x3726) x3724)
+(or (not x3726) x3715)
+(or (not x3726) x3716)
+(or (not x3726) x3723)
+(or x3727 (not x3728))
+(or x3727 (not x3729))
+(or x3727 (not x3730))
+(or x3727 (not x2984))
+(or x3728 x3729 x3730 x2984 (not x3727))
+(or x3731 (not x3728))
+(or x3731 (not x3729))
+(or x3731 (not x3730))
+(or x3731 (not x2983))
+(or x3728 x3729 x3730 x2983 (not x3731))
+(or (not x3732) (not x3733) (not x3734) (not x3731) x3735)
+(or (not x3735) x3732)
+(or (not x3735) x3733)
+(or (not x3735) x3734)
+(or (not x3735) x3731)
+(or x3736 (not x3728))
+(or x3736 (not x3729))
+(or x3736 (not x3730))
+(or x3736 (not x2982))
+(or x3728 x3729 x3730 x2982 (not x3736))
+(or (not x3732) (not x3733) (not x3734) (not x3736) x3737)
+(or (not x3737) x3732)
+(or (not x3737) x3733)
+(or (not x3737) x3734)
+(or (not x3737) x3736)
+(or x3738 (not x3728))
+(or x3738 (not x3729))
+(or x3738 (not x3730))
+(or x3738 (not x2981))
+(or x3728 x3729 x3730 x2981 (not x3738))
+(or (not x3732) (not x3734) (not x3738) x3739)
+(or (not x3739) x3732)
+(or (not x3739) x3734)
+(or (not x3739) x3738)
+(or (not x2984) x2983 x2982 (not x2981) x2980 (not x3664) x3665 x3666 x3667 (not x3668) x3730)
+(or (not x3730) x2984)
+(or (not x3730) (not x2983))
+(or (not x3730) (not x2982))
+(or (not x3730) x2981)
+(or (not x3730) (not x2980))
+(or (not x3730) x3664)
+(or (not x3730) (not x3665))
+(or (not x3730) (not x3666))
+(or (not x3730) (not x3667))
+(or (not x3730) x3668)
+(or x3740 (not x3728))
+(or x3740 (not x3729))
+(or x3740 (not x3730))
+(or x3740 (not x2980))
+(or x3728 x3729 x3730 x2980 (not x3740))
+(or x3734 (not x3728))
+(or x3734 (not x3729))
+(or x3734 x2984)
+(or x3734 (not x2983))
+(or x3734 (not x2982))
+(or x3734 x2981)
+(or x3734 (not x2980))
+(or x3734 x3664)
+(or x3734 (not x3665))
+(or x3734 (not x3666))
+(or x3734 (not x3667))
+(or x3734 x3668)
+(or x3728 x3729 (not x2984) x2983 x2982 (not x2981) x2980 (not x3664) x3665 x3666 x3667 (not x3668) (not x3734))
+(or x3733 (not x3728))
+(or x3733 x2984)
+(or x3733 (not x2983))
+(or x3733 (not x2982))
+(or x3733 (not x2981))
+(or x3733 x2980)
+(or x3728 (not x2984) x2983 x2982 x2981 (not x2980) (not x3733))
+(or x3732 x2984)
+(or x3732 (not x2983))
+(or x3732 (not x2982))
+(or x3732 (not x2981))
+(or x3732 (not x2980))
+(or (not x2984) x2983 x2982 x2981 x2980 (not x3732))
+(or x3741 x2984)
+(or x3741 (not x2983))
+(or x3741 (not x2982))
+(or x3741 (not x2981))
+(or x3741 (not x2980))
+(or x3741 x3742)
+(or (not x2984) x2983 x2982 x2981 x2980 (not x3742) (not x3741))
+(or (not x3741) (not x3733) (not x3734) (not x3740) x3743)
+(or (not x3743) x3741)
+(or (not x3743) x3733)
+(or (not x3743) x3734)
+(or (not x3743) x3740)
+(or x3744 (not x3745))
+(or x3744 (not x3746))
+(or x3744 (not x3747))
+(or x3744 (not x2991))
+(or x3745 x3746 x3747 x2991 (not x3744))
+(or x3748 (not x3745))
+(or x3748 (not x3746))
+(or x3748 (not x3747))
+(or x3748 (not x2990))
+(or x3745 x3746 x3747 x2990 (not x3748))
+(or (not x3749) (not x3750) (not x3751) (not x3748) x3752)
+(or (not x3752) x3749)
+(or (not x3752) x3750)
+(or (not x3752) x3751)
+(or (not x3752) x3748)
+(or x3753 (not x3745))
+(or x3753 (not x3746))
+(or x3753 (not x3747))
+(or x3753 (not x2989))
+(or x3745 x3746 x3747 x2989 (not x3753))
+(or (not x3749) (not x3750) (not x3751) (not x3753) x3754)
+(or (not x3754) x3749)
+(or (not x3754) x3750)
+(or (not x3754) x3751)
+(or (not x3754) x3753)
+(or x3755 (not x3745))
+(or x3755 (not x3746))
+(or x3755 (not x3747))
+(or x3755 (not x2988))
+(or x3745 x3746 x3747 x2988 (not x3755))
+(or (not x3749) (not x3751) (not x3755) x3756)
+(or (not x3756) x3749)
+(or (not x3756) x3751)
+(or (not x3756) x3755)
+(or (not x2991) x2990 x2989 (not x2988) x2987 (not x3686) x3665 x3666 x3667 (not x3668) x3747)
+(or (not x3747) x2991)
+(or (not x3747) (not x2990))
+(or (not x3747) (not x2989))
+(or (not x3747) x2988)
+(or (not x3747) (not x2987))
+(or (not x3747) x3686)
+(or (not x3747) (not x3665))
+(or (not x3747) (not x3666))
+(or (not x3747) (not x3667))
+(or (not x3747) x3668)
+(or x3757 (not x3745))
+(or x3757 (not x3746))
+(or x3757 (not x3747))
+(or x3757 (not x2987))
+(or x3745 x3746 x3747 x2987 (not x3757))
+(or x3751 (not x3745))
+(or x3751 (not x3746))
+(or x3751 x2991)
+(or x3751 (not x2990))
+(or x3751 (not x2989))
+(or x3751 x2988)
+(or x3751 (not x2987))
+(or x3751 x3686)
+(or x3751 (not x3665))
+(or x3751 (not x3666))
+(or x3751 (not x3667))
+(or x3751 x3668)
+(or x3745 x3746 (not x2991) x2990 x2989 (not x2988) x2987 (not x3686) x3665 x3666 x3667 (not x3668) (not x3751))
+(or x3750 (not x3745))
+(or x3750 x2991)
+(or x3750 (not x2990))
+(or x3750 (not x2989))
+(or x3750 (not x2988))
+(or x3750 x2987)
+(or x3745 (not x2991) x2990 x2989 x2988 (not x2987) (not x3750))
+(or x3749 x2991)
+(or x3749 (not x2990))
+(or x3749 (not x2989))
+(or x3749 (not x2988))
+(or x3749 (not x2987))
+(or (not x2991) x2990 x2989 x2988 x2987 (not x3749))
+(or x3758 x2991)
+(or x3758 (not x2990))
+(or x3758 (not x2989))
+(or x3758 (not x2988))
+(or x3758 (not x2987))
+(or x3758 x3759)
+(or (not x2991) x2990 x2989 x2988 x2987 (not x3759) (not x3758))
+(or (not x3758) (not x3750) (not x3751) (not x3757) x3760)
+(or (not x3760) x3758)
+(or (not x3760) x3750)
+(or (not x3760) x3751)
+(or (not x3760) x3757)
+(or x3761 (not x3762))
+(or x3761 (not x3763))
+(or x3761 (not x3764))
+(or x3761 (not x2998))
+(or x3762 x3763 x3764 x2998 (not x3761))
+(or x3765 (not x3762))
+(or x3765 (not x3763))
+(or x3765 (not x3764))
+(or x3765 (not x2997))
+(or x3762 x3763 x3764 x2997 (not x3765))
+(or (not x3766) (not x3767) (not x3768) (not x3765) x3769)
+(or (not x3769) x3766)
+(or (not x3769) x3767)
+(or (not x3769) x3768)
+(or (not x3769) x3765)
+(or x3770 (not x3762))
+(or x3770 (not x3763))
+(or x3770 (not x3764))
+(or x3770 (not x2996))
+(or x3762 x3763 x3764 x2996 (not x3770))
+(or (not x3766) (not x3767) (not x3768) (not x3770) x3771)
+(or (not x3771) x3766)
+(or (not x3771) x3767)
+(or (not x3771) x3768)
+(or (not x3771) x3770)
+(or x3772 (not x3762))
+(or x3772 (not x3763))
+(or x3772 (not x3764))
+(or x3772 (not x2995))
+(or x3762 x3763 x3764 x2995 (not x3772))
+(or (not x3766) (not x3768) (not x3772) x3773)
+(or (not x3773) x3766)
+(or (not x3773) x3768)
+(or (not x3773) x3772)
+(or (not x2998) x2997 x2996 (not x2995) x2994 (not x3704) x3665 x3666 x3667 (not x3668) x3764)
+(or (not x3764) x2998)
+(or (not x3764) (not x2997))
+(or (not x3764) (not x2996))
+(or (not x3764) x2995)
+(or (not x3764) (not x2994))
+(or (not x3764) x3704)
+(or (not x3764) (not x3665))
+(or (not x3764) (not x3666))
+(or (not x3764) (not x3667))
+(or (not x3764) x3668)
+(or x3774 (not x3762))
+(or x3774 (not x3763))
+(or x3774 (not x3764))
+(or x3774 (not x2994))
+(or x3762 x3763 x3764 x2994 (not x3774))
+(or x3768 (not x3762))
+(or x3768 (not x3763))
+(or x3768 x2998)
+(or x3768 (not x2997))
+(or x3768 (not x2996))
+(or x3768 x2995)
+(or x3768 (not x2994))
+(or x3768 x3704)
+(or x3768 (not x3665))
+(or x3768 (not x3666))
+(or x3768 (not x3667))
+(or x3768 x3668)
+(or x3762 x3763 (not x2998) x2997 x2996 (not x2995) x2994 (not x3704) x3665 x3666 x3667 (not x3668) (not x3768))
+(or x3767 (not x3762))
+(or x3767 x2998)
+(or x3767 (not x2997))
+(or x3767 (not x2996))
+(or x3767 (not x2995))
+(or x3767 x2994)
+(or x3762 (not x2998) x2997 x2996 x2995 (not x2994) (not x3767))
+(or x3766 x2998)
+(or x3766 (not x2997))
+(or x3766 (not x2996))
+(or x3766 (not x2995))
+(or x3766 (not x2994))
+(or (not x2998) x2997 x2996 x2995 x2994 (not x3766))
+(or x3775 x2998)
+(or x3775 (not x2997))
+(or x3775 (not x2996))
+(or x3775 (not x2995))
+(or x3775 (not x2994))
+(or x3775 x3776)
+(or (not x2998) x2997 x2996 x2995 x2994 (not x3776) (not x3775))
+(or (not x3775) (not x3767) (not x3768) (not x3774) x3777)
+(or (not x3777) x3775)
+(or (not x3777) x3767)
+(or (not x3777) x3768)
+(or (not x3777) x3774)
+(or x3778 (not x3779))
+(or x3778 (not x3780))
+(or x3778 (not x3781))
+(or x3778 (not x3005))
+(or x3779 x3780 x3781 x3005 (not x3778))
+(or x3782 (not x3779))
+(or x3782 (not x3780))
+(or x3782 (not x3781))
+(or x3782 (not x3004))
+(or x3779 x3780 x3781 x3004 (not x3782))
+(or (not x3783) (not x3784) (not x3785) (not x3782) x3786)
+(or (not x3786) x3783)
+(or (not x3786) x3784)
+(or (not x3786) x3785)
+(or (not x3786) x3782)
+(or x3787 (not x3779))
+(or x3787 (not x3780))
+(or x3787 (not x3781))
+(or x3787 (not x3003))
+(or x3779 x3780 x3781 x3003 (not x3787))
+(or (not x3783) (not x3784) (not x3785) (not x3787) x3788)
+(or (not x3788) x3783)
+(or (not x3788) x3784)
+(or (not x3788) x3785)
+(or (not x3788) x3787)
+(or x3789 (not x3779))
+(or x3789 (not x3780))
+(or x3789 (not x3781))
+(or x3789 (not x3002))
+(or x3779 x3780 x3781 x3002 (not x3789))
+(or (not x3783) (not x3785) (not x3789) x3790)
+(or (not x3790) x3783)
+(or (not x3790) x3785)
+(or (not x3790) x3789)
+(or (not x3005) x3004 x3003 (not x3002) x3001 (not x3722) x3665 x3666 x3667 (not x3668) x3781)
+(or (not x3781) x3005)
+(or (not x3781) (not x3004))
+(or (not x3781) (not x3003))
+(or (not x3781) x3002)
+(or (not x3781) (not x3001))
+(or (not x3781) x3722)
+(or (not x3781) (not x3665))
+(or (not x3781) (not x3666))
+(or (not x3781) (not x3667))
+(or (not x3781) x3668)
+(or x3791 (not x3779))
+(or x3791 (not x3780))
+(or x3791 (not x3781))
+(or x3791 (not x3001))
+(or x3779 x3780 x3781 x3001 (not x3791))
+(or x3785 (not x3779))
+(or x3785 (not x3780))
+(or x3785 x3005)
+(or x3785 (not x3004))
+(or x3785 (not x3003))
+(or x3785 x3002)
+(or x3785 (not x3001))
+(or x3785 x3722)
+(or x3785 (not x3665))
+(or x3785 (not x3666))
+(or x3785 (not x3667))
+(or x3785 x3668)
+(or x3779 x3780 (not x3005) x3004 x3003 (not x3002) x3001 (not x3722) x3665 x3666 x3667 (not x3668) (not x3785))
+(or x3784 (not x3779))
+(or x3784 x3005)
+(or x3784 (not x3004))
+(or x3784 (not x3003))
+(or x3784 (not x3002))
+(or x3784 x3001)
+(or x3779 (not x3005) x3004 x3003 x3002 (not x3001) (not x3784))
+(or x3783 x3005)
+(or x3783 (not x3004))
+(or x3783 (not x3003))
+(or x3783 (not x3002))
+(or x3783 (not x3001))
+(or (not x3005) x3004 x3003 x3002 x3001 (not x3783))
+(or x3792 x3005)
+(or x3792 (not x3004))
+(or x3792 (not x3003))
+(or x3792 (not x3002))
+(or x3792 (not x3001))
+(or x3792 x3793)
+(or (not x3005) x3004 x3003 x3002 x3001 (not x3793) (not x3792))
+(or (not x3792) (not x3784) (not x3785) (not x3791) x3794)
+(or (not x3794) x3792)
+(or (not x3794) x3784)
+(or (not x3794) x3785)
+(or (not x3794) x3791)
+(or x3795 (not x3796))
+(or x3795 (not x3797))
+(or x3795 (not x3798))
+(or x3795 (not x3019))
+(or x3796 x3797 x3798 x3019 (not x3795))
+(or x3799 (not x3796))
+(or x3799 (not x3797))
+(or x3799 (not x3798))
+(or x3799 (not x3018))
+(or x3796 x3797 x3798 x3018 (not x3799))
+(or (not x3800) (not x3801) (not x3802) (not x3799) x3803)
+(or (not x3803) x3800)
+(or (not x3803) x3801)
+(or (not x3803) x3802)
+(or (not x3803) x3799)
+(or x3804 (not x3796))
+(or x3804 (not x3797))
+(or x3804 (not x3798))
+(or x3804 (not x3017))
+(or x3796 x3797 x3798 x3017 (not x3804))
+(or (not x3800) (not x3801) (not x3802) (not x3804) x3805)
+(or (not x3805) x3800)
+(or (not x3805) x3801)
+(or (not x3805) x3802)
+(or (not x3805) x3804)
+(or x3806 (not x3796))
+(or x3806 (not x3797))
+(or x3806 (not x3798))
+(or x3806 (not x3016))
+(or x3796 x3797 x3798 x3016 (not x3806))
+(or (not x3800) (not x3802) (not x3806) x3807)
+(or (not x3807) x3800)
+(or (not x3807) x3802)
+(or (not x3807) x3806)
+(or (not x3019) x3018 x3017 (not x3016) x3015 (not x3664) x3665 x3666 (not x3667) x3668 x3798)
+(or (not x3798) x3019)
+(or (not x3798) (not x3018))
+(or (not x3798) (not x3017))
+(or (not x3798) x3016)
+(or (not x3798) (not x3015))
+(or (not x3798) x3664)
+(or (not x3798) (not x3665))
+(or (not x3798) (not x3666))
+(or (not x3798) x3667)
+(or (not x3798) (not x3668))
+(or x3808 (not x3796))
+(or x3808 (not x3797))
+(or x3808 (not x3798))
+(or x3808 (not x3015))
+(or x3796 x3797 x3798 x3015 (not x3808))
+(or x3802 (not x3796))
+(or x3802 (not x3797))
+(or x3802 x3019)
+(or x3802 (not x3018))
+(or x3802 (not x3017))
+(or x3802 x3016)
+(or x3802 (not x3015))
+(or x3802 x3664)
+(or x3802 (not x3665))
+(or x3802 (not x3666))
+(or x3802 x3667)
+(or x3802 (not x3668))
+(or x3796 x3797 (not x3019) x3018 x3017 (not x3016) x3015 (not x3664) x3665 x3666 (not x3667) x3668 (not x3802))
+(or x3801 (not x3796))
+(or x3801 x3019)
+(or x3801 (not x3018))
+(or x3801 (not x3017))
+(or x3801 (not x3016))
+(or x3801 x3015)
+(or x3796 (not x3019) x3018 x3017 x3016 (not x3015) (not x3801))
+(or x3800 x3019)
+(or x3800 (not x3018))
+(or x3800 (not x3017))
+(or x3800 (not x3016))
+(or x3800 (not x3015))
+(or (not x3019) x3018 x3017 x3016 x3015 (not x3800))
+(or x3809 x3019)
+(or x3809 (not x3018))
+(or x3809 (not x3017))
+(or x3809 (not x3016))
+(or x3809 (not x3015))
+(or x3809 x3810)
+(or (not x3019) x3018 x3017 x3016 x3015 (not x3810) (not x3809))
+(or (not x3809) (not x3801) (not x3802) (not x3808) x3811)
+(or (not x3811) x3809)
+(or (not x3811) x3801)
+(or (not x3811) x3802)
+(or (not x3811) x3808)
+(or x3812 (not x3813))
+(or x3812 (not x3814))
+(or x3812 (not x3815))
+(or x3812 (not x3026))
+(or x3813 x3814 x3815 x3026 (not x3812))
+(or x3816 (not x3813))
+(or x3816 (not x3814))
+(or x3816 (not x3815))
+(or x3816 (not x3025))
+(or x3813 x3814 x3815 x3025 (not x3816))
+(or (not x3817) (not x3818) (not x3819) (not x3816) x3820)
+(or (not x3820) x3817)
+(or (not x3820) x3818)
+(or (not x3820) x3819)
+(or (not x3820) x3816)
+(or x3821 (not x3813))
+(or x3821 (not x3814))
+(or x3821 (not x3815))
+(or x3821 (not x3024))
+(or x3813 x3814 x3815 x3024 (not x3821))
+(or (not x3817) (not x3818) (not x3819) (not x3821) x3822)
+(or (not x3822) x3817)
+(or (not x3822) x3818)
+(or (not x3822) x3819)
+(or (not x3822) x3821)
+(or x3823 (not x3813))
+(or x3823 (not x3814))
+(or x3823 (not x3815))
+(or x3823 (not x3023))
+(or x3813 x3814 x3815 x3023 (not x3823))
+(or (not x3817) (not x3819) (not x3823) x3824)
+(or (not x3824) x3817)
+(or (not x3824) x3819)
+(or (not x3824) x3823)
+(or (not x3026) x3025 x3024 (not x3023) x3022 (not x3686) x3665 x3666 (not x3667) x3668 x3815)
+(or (not x3815) x3026)
+(or (not x3815) (not x3025))
+(or (not x3815) (not x3024))
+(or (not x3815) x3023)
+(or (not x3815) (not x3022))
+(or (not x3815) x3686)
+(or (not x3815) (not x3665))
+(or (not x3815) (not x3666))
+(or (not x3815) x3667)
+(or (not x3815) (not x3668))
+(or x3825 (not x3813))
+(or x3825 (not x3814))
+(or x3825 (not x3815))
+(or x3825 (not x3022))
+(or x3813 x3814 x3815 x3022 (not x3825))
+(or x3819 (not x3813))
+(or x3819 (not x3814))
+(or x3819 x3026)
+(or x3819 (not x3025))
+(or x3819 (not x3024))
+(or x3819 x3023)
+(or x3819 (not x3022))
+(or x3819 x3686)
+(or x3819 (not x3665))
+(or x3819 (not x3666))
+(or x3819 x3667)
+(or x3819 (not x3668))
+(or x3813 x3814 (not x3026) x3025 x3024 (not x3023) x3022 (not x3686) x3665 x3666 (not x3667) x3668 (not x3819))
+(or x3818 (not x3813))
+(or x3818 x3026)
+(or x3818 (not x3025))
+(or x3818 (not x3024))
+(or x3818 (not x3023))
+(or x3818 x3022)
+(or x3813 (not x3026) x3025 x3024 x3023 (not x3022) (not x3818))
+(or x3817 x3026)
+(or x3817 (not x3025))
+(or x3817 (not x3024))
+(or x3817 (not x3023))
+(or x3817 (not x3022))
+(or (not x3026) x3025 x3024 x3023 x3022 (not x3817))
+(or x3826 x3026)
+(or x3826 (not x3025))
+(or x3826 (not x3024))
+(or x3826 (not x3023))
+(or x3826 (not x3022))
+(or x3826 x3827)
+(or (not x3026) x3025 x3024 x3023 x3022 (not x3827) (not x3826))
+(or (not x3826) (not x3818) (not x3819) (not x3825) x3828)
+(or (not x3828) x3826)
+(or (not x3828) x3818)
+(or (not x3828) x3819)
+(or (not x3828) x3825)
+(or x3829 (not x3830))
+(or x3829 (not x3831))
+(or x3829 (not x3832))
+(or x3829 (not x3033))
+(or x3830 x3831 x3832 x3033 (not x3829))
+(or x3833 (not x3830))
+(or x3833 (not x3831))
+(or x3833 (not x3832))
+(or x3833 (not x3032))
+(or x3830 x3831 x3832 x3032 (not x3833))
+(or (not x3834) (not x3835) (not x3836) (not x3833) x3837)
+(or (not x3837) x3834)
+(or (not x3837) x3835)
+(or (not x3837) x3836)
+(or (not x3837) x3833)
+(or x3838 (not x3830))
+(or x3838 (not x3831))
+(or x3838 (not x3832))
+(or x3838 (not x3031))
+(or x3830 x3831 x3832 x3031 (not x3838))
+(or (not x3834) (not x3835) (not x3836) (not x3838) x3839)
+(or (not x3839) x3834)
+(or (not x3839) x3835)
+(or (not x3839) x3836)
+(or (not x3839) x3838)
+(or x3840 (not x3830))
+(or x3840 (not x3831))
+(or x3840 (not x3832))
+(or x3840 (not x3030))
+(or x3830 x3831 x3832 x3030 (not x3840))
+(or (not x3834) (not x3836) (not x3840) x3841)
+(or (not x3841) x3834)
+(or (not x3841) x3836)
+(or (not x3841) x3840)
+(or (not x3033) x3032 x3031 (not x3030) x3029 (not x3704) x3665 x3666 (not x3667) x3668 x3832)
+(or (not x3832) x3033)
+(or (not x3832) (not x3032))
+(or (not x3832) (not x3031))
+(or (not x3832) x3030)
+(or (not x3832) (not x3029))
+(or (not x3832) x3704)
+(or (not x3832) (not x3665))
+(or (not x3832) (not x3666))
+(or (not x3832) x3667)
+(or (not x3832) (not x3668))
+(or x3842 (not x3830))
+(or x3842 (not x3831))
+(or x3842 (not x3832))
+(or x3842 (not x3029))
+(or x3830 x3831 x3832 x3029 (not x3842))
+(or x3836 (not x3830))
+(or x3836 (not x3831))
+(or x3836 x3033)
+(or x3836 (not x3032))
+(or x3836 (not x3031))
+(or x3836 x3030)
+(or x3836 (not x3029))
+(or x3836 x3704)
+(or x3836 (not x3665))
+(or x3836 (not x3666))
+(or x3836 x3667)
+(or x3836 (not x3668))
+(or x3830 x3831 (not x3033) x3032 x3031 (not x3030) x3029 (not x3704) x3665 x3666 (not x3667) x3668 (not x3836))
+(or x3835 (not x3830))
+(or x3835 x3033)
+(or x3835 (not x3032))
+(or x3835 (not x3031))
+(or x3835 (not x3030))
+(or x3835 x3029)
+(or x3830 (not x3033) x3032 x3031 x3030 (not x3029) (not x3835))
+(or x3834 x3033)
+(or x3834 (not x3032))
+(or x3834 (not x3031))
+(or x3834 (not x3030))
+(or x3834 (not x3029))
+(or (not x3033) x3032 x3031 x3030 x3029 (not x3834))
+(or x3843 x3033)
+(or x3843 (not x3032))
+(or x3843 (not x3031))
+(or x3843 (not x3030))
+(or x3843 (not x3029))
+(or x3843 x3844)
+(or (not x3033) x3032 x3031 x3030 x3029 (not x3844) (not x3843))
+(or (not x3843) (not x3835) (not x3836) (not x3842) x3845)
+(or (not x3845) x3843)
+(or (not x3845) x3835)
+(or (not x3845) x3836)
+(or (not x3845) x3842)
+(or x3846 (not x3847))
+(or x3846 (not x3848))
+(or x3846 (not x3849))
+(or x3846 (not x3040))
+(or x3847 x3848 x3849 x3040 (not x3846))
+(or x3850 (not x3847))
+(or x3850 (not x3848))
+(or x3850 (not x3849))
+(or x3850 (not x3039))
+(or x3847 x3848 x3849 x3039 (not x3850))
+(or (not x3851) (not x3852) (not x3853) (not x3850) x3854)
+(or (not x3854) x3851)
+(or (not x3854) x3852)
+(or (not x3854) x3853)
+(or (not x3854) x3850)
+(or x3855 (not x3847))
+(or x3855 (not x3848))
+(or x3855 (not x3849))
+(or x3855 (not x3038))
+(or x3847 x3848 x3849 x3038 (not x3855))
+(or (not x3851) (not x3852) (not x3853) (not x3855) x3856)
+(or (not x3856) x3851)
+(or (not x3856) x3852)
+(or (not x3856) x3853)
+(or (not x3856) x3855)
+(or x3857 (not x3847))
+(or x3857 (not x3848))
+(or x3857 (not x3849))
+(or x3857 (not x3037))
+(or x3847 x3848 x3849 x3037 (not x3857))
+(or (not x3851) (not x3853) (not x3857) x3858)
+(or (not x3858) x3851)
+(or (not x3858) x3853)
+(or (not x3858) x3857)
+(or (not x3040) x3039 x3038 (not x3037) x3036 (not x3722) x3665 x3666 (not x3667) x3668 x3849)
+(or (not x3849) x3040)
+(or (not x3849) (not x3039))
+(or (not x3849) (not x3038))
+(or (not x3849) x3037)
+(or (not x3849) (not x3036))
+(or (not x3849) x3722)
+(or (not x3849) (not x3665))
+(or (not x3849) (not x3666))
+(or (not x3849) x3667)
+(or (not x3849) (not x3668))
+(or x3859 (not x3847))
+(or x3859 (not x3848))
+(or x3859 (not x3849))
+(or x3859 (not x3036))
+(or x3847 x3848 x3849 x3036 (not x3859))
+(or x3853 (not x3847))
+(or x3853 (not x3848))
+(or x3853 x3040)
+(or x3853 (not x3039))
+(or x3853 (not x3038))
+(or x3853 x3037)
+(or x3853 (not x3036))
+(or x3853 x3722)
+(or x3853 (not x3665))
+(or x3853 (not x3666))
+(or x3853 x3667)
+(or x3853 (not x3668))
+(or x3847 x3848 (not x3040) x3039 x3038 (not x3037) x3036 (not x3722) x3665 x3666 (not x3667) x3668 (not x3853))
+(or x3852 (not x3847))
+(or x3852 x3040)
+(or x3852 (not x3039))
+(or x3852 (not x3038))
+(or x3852 (not x3037))
+(or x3852 x3036)
+(or x3847 (not x3040) x3039 x3038 x3037 (not x3036) (not x3852))
+(or x3851 x3040)
+(or x3851 (not x3039))
+(or x3851 (not x3038))
+(or x3851 (not x3037))
+(or x3851 (not x3036))
+(or (not x3040) x3039 x3038 x3037 x3036 (not x3851))
+(or x3860 x3040)
+(or x3860 (not x3039))
+(or x3860 (not x3038))
+(or x3860 (not x3037))
+(or x3860 (not x3036))
+(or x3860 x3861)
+(or (not x3040) x3039 x3038 x3037 x3036 (not x3861) (not x3860))
+(or (not x3860) (not x3852) (not x3853) (not x3859) x3862)
+(or (not x3862) x3860)
+(or (not x3862) x3852)
+(or (not x3862) x3853)
+(or (not x3862) x3859)
+(or x3863 (not x3864))
+(or x3863 (not x3865))
+(or x3863 (not x3866))
+(or x3863 (not x3054))
+(or x3864 x3865 x3866 x3054 (not x3863))
+(or x3867 (not x3864))
+(or x3867 (not x3865))
+(or x3867 (not x3866))
+(or x3867 (not x3053))
+(or x3864 x3865 x3866 x3053 (not x3867))
+(or (not x3868) (not x3869) (not x3870) (not x3867) x3871)
+(or (not x3871) x3868)
+(or (not x3871) x3869)
+(or (not x3871) x3870)
+(or (not x3871) x3867)
+(or x3872 (not x3864))
+(or x3872 (not x3865))
+(or x3872 (not x3866))
+(or x3872 (not x3052))
+(or x3864 x3865 x3866 x3052 (not x3872))
+(or (not x3868) (not x3869) (not x3870) (not x3872) x3873)
+(or (not x3873) x3868)
+(or (not x3873) x3869)
+(or (not x3873) x3870)
+(or (not x3873) x3872)
+(or x3874 (not x3864))
+(or x3874 (not x3865))
+(or x3874 (not x3866))
+(or x3874 (not x3051))
+(or x3864 x3865 x3866 x3051 (not x3874))
+(or (not x3868) (not x3870) (not x3874) x3875)
+(or (not x3875) x3868)
+(or (not x3875) x3870)
+(or (not x3875) x3874)
+(or (not x3054) x3053 x3052 (not x3051) x3050 (not x3664) x3665 x3666 x3667 x3668 x3866)
+(or (not x3866) x3054)
+(or (not x3866) (not x3053))
+(or (not x3866) (not x3052))
+(or (not x3866) x3051)
+(or (not x3866) (not x3050))
+(or (not x3866) x3664)
+(or (not x3866) (not x3665))
+(or (not x3866) (not x3666))
+(or (not x3866) (not x3667))
+(or (not x3866) (not x3668))
+(or x3876 (not x3864))
+(or x3876 (not x3865))
+(or x3876 (not x3866))
+(or x3876 (not x3050))
+(or x3864 x3865 x3866 x3050 (not x3876))
+(or x3870 (not x3864))
+(or x3870 (not x3865))
+(or x3870 x3054)
+(or x3870 (not x3053))
+(or x3870 (not x3052))
+(or x3870 x3051)
+(or x3870 (not x3050))
+(or x3870 x3664)
+(or x3870 (not x3665))
+(or x3870 (not x3666))
+(or x3870 (not x3667))
+(or x3870 (not x3668))
+(or x3864 x3865 (not x3054) x3053 x3052 (not x3051) x3050 (not x3664) x3665 x3666 x3667 x3668 (not x3870))
+(or x3869 (not x3864))
+(or x3869 x3054)
+(or x3869 (not x3053))
+(or x3869 (not x3052))
+(or x3869 (not x3051))
+(or x3869 x3050)
+(or x3864 (not x3054) x3053 x3052 x3051 (not x3050) (not x3869))
+(or x3868 x3054)
+(or x3868 (not x3053))
+(or x3868 (not x3052))
+(or x3868 (not x3051))
+(or x3868 (not x3050))
+(or (not x3054) x3053 x3052 x3051 x3050 (not x3868))
+(or x3877 x3054)
+(or x3877 (not x3053))
+(or x3877 (not x3052))
+(or x3877 (not x3051))
+(or x3877 (not x3050))
+(or x3877 x3878)
+(or (not x3054) x3053 x3052 x3051 x3050 (not x3878) (not x3877))
+(or (not x3877) (not x3869) (not x3870) (not x3876) x3879)
+(or (not x3879) x3877)
+(or (not x3879) x3869)
+(or (not x3879) x3870)
+(or (not x3879) x3876)
+(or x3880 (not x3881))
+(or x3880 (not x3882))
+(or x3880 (not x3883))
+(or x3880 (not x3061))
+(or x3881 x3882 x3883 x3061 (not x3880))
+(or x3884 (not x3881))
+(or x3884 (not x3882))
+(or x3884 (not x3883))
+(or x3884 (not x3060))
+(or x3881 x3882 x3883 x3060 (not x3884))
+(or (not x3885) (not x3886) (not x3887) (not x3884) x3888)
+(or (not x3888) x3885)
+(or (not x3888) x3886)
+(or (not x3888) x3887)
+(or (not x3888) x3884)
+(or x3889 (not x3881))
+(or x3889 (not x3882))
+(or x3889 (not x3883))
+(or x3889 (not x3059))
+(or x3881 x3882 x3883 x3059 (not x3889))
+(or (not x3885) (not x3886) (not x3887) (not x3889) x3890)
+(or (not x3890) x3885)
+(or (not x3890) x3886)
+(or (not x3890) x3887)
+(or (not x3890) x3889)
+(or x3891 (not x3881))
+(or x3891 (not x3882))
+(or x3891 (not x3883))
+(or x3891 (not x3058))
+(or x3881 x3882 x3883 x3058 (not x3891))
+(or (not x3885) (not x3887) (not x3891) x3892)
+(or (not x3892) x3885)
+(or (not x3892) x3887)
+(or (not x3892) x3891)
+(or (not x3061) x3060 x3059 (not x3058) x3057 (not x3686) x3665 x3666 x3667 x3668 x3883)
+(or (not x3883) x3061)
+(or (not x3883) (not x3060))
+(or (not x3883) (not x3059))
+(or (not x3883) x3058)
+(or (not x3883) (not x3057))
+(or (not x3883) x3686)
+(or (not x3883) (not x3665))
+(or (not x3883) (not x3666))
+(or (not x3883) (not x3667))
+(or (not x3883) (not x3668))
+(or x3893 (not x3881))
+(or x3893 (not x3882))
+(or x3893 (not x3883))
+(or x3893 (not x3057))
+(or x3881 x3882 x3883 x3057 (not x3893))
+(or x3887 (not x3881))
+(or x3887 (not x3882))
+(or x3887 x3061)
+(or x3887 (not x3060))
+(or x3887 (not x3059))
+(or x3887 x3058)
+(or x3887 (not x3057))
+(or x3887 x3686)
+(or x3887 (not x3665))
+(or x3887 (not x3666))
+(or x3887 (not x3667))
+(or x3887 (not x3668))
+(or x3881 x3882 (not x3061) x3060 x3059 (not x3058) x3057 (not x3686) x3665 x3666 x3667 x3668 (not x3887))
+(or x3886 (not x3881))
+(or x3886 x3061)
+(or x3886 (not x3060))
+(or x3886 (not x3059))
+(or x3886 (not x3058))
+(or x3886 x3057)
+(or x3881 (not x3061) x3060 x3059 x3058 (not x3057) (not x3886))
+(or x3885 x3061)
+(or x3885 (not x3060))
+(or x3885 (not x3059))
+(or x3885 (not x3058))
+(or x3885 (not x3057))
+(or (not x3061) x3060 x3059 x3058 x3057 (not x3885))
+(or x3894 x3061)
+(or x3894 (not x3060))
+(or x3894 (not x3059))
+(or x3894 (not x3058))
+(or x3894 (not x3057))
+(or x3894 x3895)
+(or (not x3061) x3060 x3059 x3058 x3057 (not x3895) (not x3894))
+(or (not x3894) (not x3886) (not x3887) (not x3893) x3896)
+(or (not x3896) x3894)
+(or (not x3896) x3886)
+(or (not x3896) x3887)
+(or (not x3896) x3893)
+(or x3897 (not x3898))
+(or x3897 (not x3899))
+(or x3897 (not x3900))
+(or x3897 (not x3068))
+(or x3898 x3899 x3900 x3068 (not x3897))
+(or x3901 (not x3898))
+(or x3901 (not x3899))
+(or x3901 (not x3900))
+(or x3901 (not x3067))
+(or x3898 x3899 x3900 x3067 (not x3901))
+(or (not x3902) (not x3903) (not x3904) (not x3901) x3905)
+(or (not x3905) x3902)
+(or (not x3905) x3903)
+(or (not x3905) x3904)
+(or (not x3905) x3901)
+(or x3906 (not x3898))
+(or x3906 (not x3899))
+(or x3906 (not x3900))
+(or x3906 (not x3066))
+(or x3898 x3899 x3900 x3066 (not x3906))
+(or (not x3902) (not x3903) (not x3904) (not x3906) x3907)
+(or (not x3907) x3902)
+(or (not x3907) x3903)
+(or (not x3907) x3904)
+(or (not x3907) x3906)
+(or x3908 (not x3898))
+(or x3908 (not x3899))
+(or x3908 (not x3900))
+(or x3908 (not x3065))
+(or x3898 x3899 x3900 x3065 (not x3908))
+(or (not x3902) (not x3904) (not x3908) x3909)
+(or (not x3909) x3902)
+(or (not x3909) x3904)
+(or (not x3909) x3908)
+(or (not x3068) x3067 x3066 (not x3065) x3064 (not x3704) x3665 x3666 x3667 x3668 x3900)
+(or (not x3900) x3068)
+(or (not x3900) (not x3067))
+(or (not x3900) (not x3066))
+(or (not x3900) x3065)
+(or (not x3900) (not x3064))
+(or (not x3900) x3704)
+(or (not x3900) (not x3665))
+(or (not x3900) (not x3666))
+(or (not x3900) (not x3667))
+(or (not x3900) (not x3668))
+(or x3910 (not x3898))
+(or x3910 (not x3899))
+(or x3910 (not x3900))
+(or x3910 (not x3064))
+(or x3898 x3899 x3900 x3064 (not x3910))
+(or x3904 (not x3898))
+(or x3904 (not x3899))
+(or x3904 x3068)
+(or x3904 (not x3067))
+(or x3904 (not x3066))
+(or x3904 x3065)
+(or x3904 (not x3064))
+(or x3904 x3704)
+(or x3904 (not x3665))
+(or x3904 (not x3666))
+(or x3904 (not x3667))
+(or x3904 (not x3668))
+(or x3898 x3899 (not x3068) x3067 x3066 (not x3065) x3064 (not x3704) x3665 x3666 x3667 x3668 (not x3904))
+(or x3903 (not x3898))
+(or x3903 x3068)
+(or x3903 (not x3067))
+(or x3903 (not x3066))
+(or x3903 (not x3065))
+(or x3903 x3064)
+(or x3898 (not x3068) x3067 x3066 x3065 (not x3064) (not x3903))
+(or x3902 x3068)
+(or x3902 (not x3067))
+(or x3902 (not x3066))
+(or x3902 (not x3065))
+(or x3902 (not x3064))
+(or (not x3068) x3067 x3066 x3065 x3064 (not x3902))
+(or x3911 x3068)
+(or x3911 (not x3067))
+(or x3911 (not x3066))
+(or x3911 (not x3065))
+(or x3911 (not x3064))
+(or x3911 x3912)
+(or (not x3068) x3067 x3066 x3065 x3064 (not x3912) (not x3911))
+(or (not x3911) (not x3903) (not x3904) (not x3910) x3913)
+(or (not x3913) x3911)
+(or (not x3913) x3903)
+(or (not x3913) x3904)
+(or (not x3913) x3910)
+(or x3914 (not x3915))
+(or x3914 (not x3916))
+(or x3914 (not x3917))
+(or x3914 (not x3075))
+(or x3915 x3916 x3917 x3075 (not x3914))
+(or x3918 (not x3915))
+(or x3918 (not x3916))
+(or x3918 (not x3917))
+(or x3918 (not x3074))
+(or x3915 x3916 x3917 x3074 (not x3918))
+(or (not x3919) (not x3920) (not x3921) (not x3918) x3922)
+(or (not x3922) x3919)
+(or (not x3922) x3920)
+(or (not x3922) x3921)
+(or (not x3922) x3918)
+(or x3923 (not x3915))
+(or x3923 (not x3916))
+(or x3923 (not x3917))
+(or x3923 (not x3073))
+(or x3915 x3916 x3917 x3073 (not x3923))
+(or (not x3919) (not x3920) (not x3921) (not x3923) x3924)
+(or (not x3924) x3919)
+(or (not x3924) x3920)
+(or (not x3924) x3921)
+(or (not x3924) x3923)
+(or x3925 (not x3915))
+(or x3925 (not x3916))
+(or x3925 (not x3917))
+(or x3925 (not x3072))
+(or x3915 x3916 x3917 x3072 (not x3925))
+(or (not x3919) (not x3921) (not x3925) x3926)
+(or (not x3926) x3919)
+(or (not x3926) x3921)
+(or (not x3926) x3925)
+(or (not x3075) x3074 x3073 (not x3072) x3071 (not x3722) x3665 x3666 x3667 x3668 x3917)
+(or (not x3917) x3075)
+(or (not x3917) (not x3074))
+(or (not x3917) (not x3073))
+(or (not x3917) x3072)
+(or (not x3917) (not x3071))
+(or (not x3917) x3722)
+(or (not x3917) (not x3665))
+(or (not x3917) (not x3666))
+(or (not x3917) (not x3667))
+(or (not x3917) (not x3668))
+(or x3927 (not x3915))
+(or x3927 (not x3916))
+(or x3927 (not x3917))
+(or x3927 (not x3071))
+(or x3915 x3916 x3917 x3071 (not x3927))
+(or x3921 (not x3915))
+(or x3921 (not x3916))
+(or x3921 x3075)
+(or x3921 (not x3074))
+(or x3921 (not x3073))
+(or x3921 x3072)
+(or x3921 (not x3071))
+(or x3921 x3722)
+(or x3921 (not x3665))
+(or x3921 (not x3666))
+(or x3921 (not x3667))
+(or x3921 (not x3668))
+(or x3915 x3916 (not x3075) x3074 x3073 (not x3072) x3071 (not x3722) x3665 x3666 x3667 x3668 (not x3921))
+(or x3920 (not x3915))
+(or x3920 x3075)
+(or x3920 (not x3074))
+(or x3920 (not x3073))
+(or x3920 (not x3072))
+(or x3920 x3071)
+(or x3915 (not x3075) x3074 x3073 x3072 (not x3071) (not x3920))
+(or x3919 x3075)
+(or x3919 (not x3074))
+(or x3919 (not x3073))
+(or x3919 (not x3072))
+(or x3919 (not x3071))
+(or (not x3075) x3074 x3073 x3072 x3071 (not x3919))
+(or x3928 x3075)
+(or x3928 (not x3074))
+(or x3928 (not x3073))
+(or x3928 (not x3072))
+(or x3928 (not x3071))
+(or x3928 x3929)
+(or (not x3075) x3074 x3073 x3072 x3071 (not x3929) (not x3928))
+(or (not x3928) (not x3920) (not x3921) (not x3927) x3930)
+(or (not x3930) x3928)
+(or (not x3930) x3920)
+(or (not x3930) x3921)
+(or (not x3930) x3927)
+(or x3931 (not x3932))
+(or x3931 (not x3933))
+(or x3931 (not x3934))
+(or x3931 (not x3411))
+(or x3932 x3933 x3934 x3411 (not x3931))
+(or x3935 (not x3932))
+(or x3935 (not x3933))
+(or x3935 (not x3934))
+(or x3935 (not x3410))
+(or x3932 x3933 x3934 x3410 (not x3935))
+(or (not x3936) (not x3937) (not x3938) (not x3935) x3939)
+(or (not x3939) x3936)
+(or (not x3939) x3937)
+(or (not x3939) x3938)
+(or (not x3939) x3935)
+(or x3940 (not x3932))
+(or x3940 (not x3933))
+(or x3940 (not x3934))
+(or x3940 (not x3409))
+(or x3932 x3933 x3934 x3409 (not x3940))
+(or (not x3936) (not x3937) (not x3938) (not x3940) x3941)
+(or (not x3941) x3936)
+(or (not x3941) x3937)
+(or (not x3941) x3938)
+(or (not x3941) x3940)
+(or x3942 (not x3932))
+(or x3942 (not x3933))
+(or x3942 (not x3934))
+(or x3942 (not x3408))
+(or x3932 x3933 x3934 x3408 (not x3942))
+(or (not x3936) (not x3938) (not x3942) x3943)
+(or (not x3943) x3936)
+(or (not x3943) x3938)
+(or (not x3943) x3942)
+(or (not x3411) x3410 x3409 (not x3408) x3407 (not x3664) (not x3665) (not x3666) x3667 x3668 x3934)
+(or (not x3934) x3411)
+(or (not x3934) (not x3410))
+(or (not x3934) (not x3409))
+(or (not x3934) x3408)
+(or (not x3934) (not x3407))
+(or (not x3934) x3664)
+(or (not x3934) x3665)
+(or (not x3934) x3666)
+(or (not x3934) (not x3667))
+(or (not x3934) (not x3668))
+(or x3944 (not x3932))
+(or x3944 (not x3933))
+(or x3944 (not x3934))
+(or x3944 (not x3407))
+(or x3932 x3933 x3934 x3407 (not x3944))
+(or x3938 (not x3932))
+(or x3938 (not x3933))
+(or x3938 x3411)
+(or x3938 (not x3410))
+(or x3938 (not x3409))
+(or x3938 x3408)
+(or x3938 (not x3407))
+(or x3938 x3664)
+(or x3938 x3665)
+(or x3938 x3666)
+(or x3938 (not x3667))
+(or x3938 (not x3668))
+(or x3932 x3933 (not x3411) x3410 x3409 (not x3408) x3407 (not x3664) (not x3665) (not x3666) x3667 x3668 (not x3938))
+(or x3937 (not x3932))
+(or x3937 x3411)
+(or x3937 (not x3410))
+(or x3937 (not x3409))
+(or x3937 (not x3408))
+(or x3937 x3407)
+(or x3932 (not x3411) x3410 x3409 x3408 (not x3407) (not x3937))
+(or x3936 x3411)
+(or x3936 (not x3410))
+(or x3936 (not x3409))
+(or x3936 (not x3408))
+(or x3936 (not x3407))
+(or (not x3411) x3410 x3409 x3408 x3407 (not x3936))
+(or x3945 x3411)
+(or x3945 (not x3410))
+(or x3945 (not x3409))
+(or x3945 (not x3408))
+(or x3945 (not x3407))
+(or x3945 x3946)
+(or (not x3411) x3410 x3409 x3408 x3407 (not x3946) (not x3945))
+(or (not x3945) (not x3937) (not x3938) (not x3944) x3947)
+(or (not x3947) x3945)
+(or (not x3947) x3937)
+(or (not x3947) x3938)
+(or (not x3947) x3944)
+(or x3948 (not x3949))
+(or x3948 (not x3950))
+(or x3948 (not x3951))
+(or x3948 (not x3418))
+(or x3949 x3950 x3951 x3418 (not x3948))
+(or x3952 (not x3949))
+(or x3952 (not x3950))
+(or x3952 (not x3951))
+(or x3952 (not x3417))
+(or x3949 x3950 x3951 x3417 (not x3952))
+(or (not x3953) (not x3954) (not x3955) (not x3952) x3956)
+(or (not x3956) x3953)
+(or (not x3956) x3954)
+(or (not x3956) x3955)
+(or (not x3956) x3952)
+(or x3957 (not x3949))
+(or x3957 (not x3950))
+(or x3957 (not x3951))
+(or x3957 (not x3416))
+(or x3949 x3950 x3951 x3416 (not x3957))
+(or (not x3953) (not x3954) (not x3955) (not x3957) x3958)
+(or (not x3958) x3953)
+(or (not x3958) x3954)
+(or (not x3958) x3955)
+(or (not x3958) x3957)
+(or x3959 (not x3949))
+(or x3959 (not x3950))
+(or x3959 (not x3951))
+(or x3959 (not x3415))
+(or x3949 x3950 x3951 x3415 (not x3959))
+(or (not x3953) (not x3955) (not x3959) x3960)
+(or (not x3960) x3953)
+(or (not x3960) x3955)
+(or (not x3960) x3959)
+(or (not x3418) x3417 x3416 (not x3415) x3414 (not x3686) (not x3665) (not x3666) x3667 x3668 x3951)
+(or (not x3951) x3418)
+(or (not x3951) (not x3417))
+(or (not x3951) (not x3416))
+(or (not x3951) x3415)
+(or (not x3951) (not x3414))
+(or (not x3951) x3686)
+(or (not x3951) x3665)
+(or (not x3951) x3666)
+(or (not x3951) (not x3667))
+(or (not x3951) (not x3668))
+(or x3961 (not x3949))
+(or x3961 (not x3950))
+(or x3961 (not x3951))
+(or x3961 (not x3414))
+(or x3949 x3950 x3951 x3414 (not x3961))
+(or x3955 (not x3949))
+(or x3955 (not x3950))
+(or x3955 x3418)
+(or x3955 (not x3417))
+(or x3955 (not x3416))
+(or x3955 x3415)
+(or x3955 (not x3414))
+(or x3955 x3686)
+(or x3955 x3665)
+(or x3955 x3666)
+(or x3955 (not x3667))
+(or x3955 (not x3668))
+(or x3949 x3950 (not x3418) x3417 x3416 (not x3415) x3414 (not x3686) (not x3665) (not x3666) x3667 x3668 (not x3955))
+(or x3954 (not x3949))
+(or x3954 x3418)
+(or x3954 (not x3417))
+(or x3954 (not x3416))
+(or x3954 (not x3415))
+(or x3954 x3414)
+(or x3949 (not x3418) x3417 x3416 x3415 (not x3414) (not x3954))
+(or x3953 x3418)
+(or x3953 (not x3417))
+(or x3953 (not x3416))
+(or x3953 (not x3415))
+(or x3953 (not x3414))
+(or (not x3418) x3417 x3416 x3415 x3414 (not x3953))
+(or x3962 x3418)
+(or x3962 (not x3417))
+(or x3962 (not x3416))
+(or x3962 (not x3415))
+(or x3962 (not x3414))
+(or x3962 x3963)
+(or (not x3418) x3417 x3416 x3415 x3414 (not x3963) (not x3962))
+(or (not x3962) (not x3954) (not x3955) (not x3961) x3964)
+(or (not x3964) x3962)
+(or (not x3964) x3954)
+(or (not x3964) x3955)
+(or (not x3964) x3961)
+(or x3965 (not x3966))
+(or x3965 (not x3967))
+(or x3965 (not x3968))
+(or x3965 (not x3425))
+(or x3966 x3967 x3968 x3425 (not x3965))
+(or x3969 (not x3966))
+(or x3969 (not x3967))
+(or x3969 (not x3968))
+(or x3969 (not x3424))
+(or x3966 x3967 x3968 x3424 (not x3969))
+(or (not x3970) (not x3971) (not x3972) (not x3969) x3973)
+(or (not x3973) x3970)
+(or (not x3973) x3971)
+(or (not x3973) x3972)
+(or (not x3973) x3969)
+(or x3974 (not x3966))
+(or x3974 (not x3967))
+(or x3974 (not x3968))
+(or x3974 (not x3423))
+(or x3966 x3967 x3968 x3423 (not x3974))
+(or (not x3970) (not x3971) (not x3972) (not x3974) x3975)
+(or (not x3975) x3970)
+(or (not x3975) x3971)
+(or (not x3975) x3972)
+(or (not x3975) x3974)
+(or x3976 (not x3966))
+(or x3976 (not x3967))
+(or x3976 (not x3968))
+(or x3976 (not x3422))
+(or x3966 x3967 x3968 x3422 (not x3976))
+(or (not x3970) (not x3972) (not x3976) x3977)
+(or (not x3977) x3970)
+(or (not x3977) x3972)
+(or (not x3977) x3976)
+(or (not x3425) x3424 x3423 (not x3422) x3421 (not x3704) (not x3665) (not x3666) x3667 x3668 x3968)
+(or (not x3968) x3425)
+(or (not x3968) (not x3424))
+(or (not x3968) (not x3423))
+(or (not x3968) x3422)
+(or (not x3968) (not x3421))
+(or (not x3968) x3704)
+(or (not x3968) x3665)
+(or (not x3968) x3666)
+(or (not x3968) (not x3667))
+(or (not x3968) (not x3668))
+(or x3978 (not x3966))
+(or x3978 (not x3967))
+(or x3978 (not x3968))
+(or x3978 (not x3421))
+(or x3966 x3967 x3968 x3421 (not x3978))
+(or x3972 (not x3966))
+(or x3972 (not x3967))
+(or x3972 x3425)
+(or x3972 (not x3424))
+(or x3972 (not x3423))
+(or x3972 x3422)
+(or x3972 (not x3421))
+(or x3972 x3704)
+(or x3972 x3665)
+(or x3972 x3666)
+(or x3972 (not x3667))
+(or x3972 (not x3668))
+(or x3966 x3967 (not x3425) x3424 x3423 (not x3422) x3421 (not x3704) (not x3665) (not x3666) x3667 x3668 (not x3972))
+(or x3971 (not x3966))
+(or x3971 x3425)
+(or x3971 (not x3424))
+(or x3971 (not x3423))
+(or x3971 (not x3422))
+(or x3971 x3421)
+(or x3966 (not x3425) x3424 x3423 x3422 (not x3421) (not x3971))
+(or x3970 x3425)
+(or x3970 (not x3424))
+(or x3970 (not x3423))
+(or x3970 (not x3422))
+(or x3970 (not x3421))
+(or (not x3425) x3424 x3423 x3422 x3421 (not x3970))
+(or x3979 x3425)
+(or x3979 (not x3424))
+(or x3979 (not x3423))
+(or x3979 (not x3422))
+(or x3979 (not x3421))
+(or x3979 x3980)
+(or (not x3425) x3424 x3423 x3422 x3421 (not x3980) (not x3979))
+(or (not x3979) (not x3971) (not x3972) (not x3978) x3981)
+(or (not x3981) x3979)
+(or (not x3981) x3971)
+(or (not x3981) x3972)
+(or (not x3981) x3978)
+(or x3982 (not x3983))
+(or x3982 (not x3984))
+(or x3982 (not x3985))
+(or x3982 (not x3432))
+(or x3983 x3984 x3985 x3432 (not x3982))
+(or x3986 (not x3983))
+(or x3986 (not x3984))
+(or x3986 (not x3985))
+(or x3986 (not x3431))
+(or x3983 x3984 x3985 x3431 (not x3986))
+(or (not x3987) (not x3988) (not x3989) (not x3986) x3990)
+(or (not x3990) x3987)
+(or (not x3990) x3988)
+(or (not x3990) x3989)
+(or (not x3990) x3986)
+(or x3991 (not x3983))
+(or x3991 (not x3984))
+(or x3991 (not x3985))
+(or x3991 (not x3430))
+(or x3983 x3984 x3985 x3430 (not x3991))
+(or (not x3987) (not x3988) (not x3989) (not x3991) x3992)
+(or (not x3992) x3987)
+(or (not x3992) x3988)
+(or (not x3992) x3989)
+(or (not x3992) x3991)
+(or x3993 (not x3983))
+(or x3993 (not x3984))
+(or x3993 (not x3985))
+(or x3993 (not x3429))
+(or x3983 x3984 x3985 x3429 (not x3993))
+(or (not x3987) (not x3989) (not x3993) x3994)
+(or (not x3994) x3987)
+(or (not x3994) x3989)
+(or (not x3994) x3993)
+(or (not x3432) x3431 x3430 (not x3429) x3428 (not x3722) (not x3665) (not x3666) x3667 x3668 x3985)
+(or (not x3985) x3432)
+(or (not x3985) (not x3431))
+(or (not x3985) (not x3430))
+(or (not x3985) x3429)
+(or (not x3985) (not x3428))
+(or (not x3985) x3722)
+(or (not x3985) x3665)
+(or (not x3985) x3666)
+(or (not x3985) (not x3667))
+(or (not x3985) (not x3668))
+(or x3995 (not x3983))
+(or x3995 (not x3984))
+(or x3995 (not x3985))
+(or x3995 (not x3428))
+(or x3983 x3984 x3985 x3428 (not x3995))
+(or x3989 (not x3983))
+(or x3989 (not x3984))
+(or x3989 x3432)
+(or x3989 (not x3431))
+(or x3989 (not x3430))
+(or x3989 x3429)
+(or x3989 (not x3428))
+(or x3989 x3722)
+(or x3989 x3665)
+(or x3989 x3666)
+(or x3989 (not x3667))
+(or x3989 (not x3668))
+(or x3983 x3984 (not x3432) x3431 x3430 (not x3429) x3428 (not x3722) (not x3665) (not x3666) x3667 x3668 (not x3989))
+(or x3988 (not x3983))
+(or x3988 x3432)
+(or x3988 (not x3431))
+(or x3988 (not x3430))
+(or x3988 (not x3429))
+(or x3988 x3428)
+(or x3983 (not x3432) x3431 x3430 x3429 (not x3428) (not x3988))
+(or x3987 x3432)
+(or x3987 (not x3431))
+(or x3987 (not x3430))
+(or x3987 (not x3429))
+(or x3987 (not x3428))
+(or (not x3432) x3431 x3430 x3429 x3428 (not x3987))
+(or x3996 x3432)
+(or x3996 (not x3431))
+(or x3996 (not x3430))
+(or x3996 (not x3429))
+(or x3996 (not x3428))
+(or x3996 x3997)
+(or (not x3432) x3431 x3430 x3429 x3428 (not x3997) (not x3996))
+(or (not x3996) (not x3988) (not x3989) (not x3995) x3998)
+(or (not x3998) x3996)
+(or (not x3998) x3988)
+(or (not x3998) x3989)
+(or (not x3998) x3995)
+(or (not x3999) x4000 (not x4001) (not x4002) (not x2821) (not x4003) x4004)
+(or (not x4004) x3999)
+(or (not x4004) (not x4000))
+(or (not x4004) x4001)
+(or (not x4004) x4002)
+(or (not x4004) x2821)
+(or (not x4004) x4003)
+(or (not x4005) (not x4002) (not x4006) x4007)
+(or (not x4007) x4005)
+(or (not x4007) x4002)
+(or (not x4007) x4006)
+(or x4008 (not x4007))
+(or x4008 (not x4004))
+(or x4007 x4004 (not x4008))
+(or (not x4009) x4010 (not x4011) (not x4002) (not x2821) (not x4003) x4012)
+(or (not x4012) x4009)
+(or (not x4012) (not x4010))
+(or (not x4012) x4011)
+(or (not x4012) x4002)
+(or (not x4012) x2821)
+(or (not x4012) x4003)
+(or (not x4013) (not x4002) (not x4006) x4014)
+(or (not x4014) x4013)
+(or (not x4014) x4002)
+(or (not x4014) x4006)
+(or x4015 (not x4014))
+(or x4015 (not x4012))
+(or x4014 x4012 (not x4015))
+(or (not x4016) x4017 (not x4018) (not x4002) (not x2821) (not x4003) x4019)
+(or (not x4019) x4016)
+(or (not x4019) (not x4017))
+(or (not x4019) x4018)
+(or (not x4019) x4002)
+(or (not x4019) x2821)
+(or (not x4019) x4003)
+(or (not x4020) (not x4002) (not x4006) x4021)
+(or (not x4021) x4020)
+(or (not x4021) x4002)
+(or (not x4021) x4006)
+(or x4022 (not x4021))
+(or x4022 (not x4019))
+(or x4021 x4019 (not x4022))
+(or (not x4023) x4024 (not x4025) (not x4002) (not x2821) (not x4003) x4026)
+(or (not x4026) x4023)
+(or (not x4026) (not x4024))
+(or (not x4026) x4025)
+(or (not x4026) x4002)
+(or (not x4026) x2821)
+(or (not x4026) x4003)
+(or x4006 x2821)
+(or x4006 (not x4027))
+(or (not x2821) x4027 (not x4006))
+(or x4002 (not x4028))
+(or x4002 (not x4020))
+(or x4002 (not x4013))
+(or x4002 (not x4005))
+(or x4028 x4020 x4013 x4005 (not x4002))
+(or (not x4028) (not x4002) (not x4006) x4029)
+(or (not x4029) x4028)
+(or (not x4029) x4002)
+(or (not x4029) x4006)
+(or x4028 x4020 x4013 x4005 x4030)
+(or (not x4030) (not x4028))
+(or (not x4030) (not x4020))
+(or (not x4030) (not x4013))
+(or (not x4030) (not x4005))
+(or x4031 (not x4030))
+(or x4031 (not x4029))
+(or x4031 (not x4026))
+(or x4030 x4029 x4026 (not x4031))
+(or (not x4032) (not x4013) x4033)
+(or (not x4033) x4032)
+(or (not x4033) x4013)
+(or (not x4034) (not x4032) (not x4020) x4035)
+(or (not x4035) x4034)
+(or (not x4035) x4032)
+(or (not x4035) x4020)
+(or (not x4036) (not x4034) (not x4032) (not x4028) x4037)
+(or (not x4037) x4036)
+(or (not x4037) x4034)
+(or (not x4037) x4032)
+(or (not x4037) x4028)
+(or x4023 (not x4005))
+(or x4023 (not x4037))
+(or x4023 (not x4035))
+(or x4023 (not x4033))
+(or x4005 x4037 x4035 x4033 (not x4023))
+(or (not x4023) x4024 (not x4025) (not x2821) (not x4003) x4038)
+(or (not x4038) x4023)
+(or (not x4038) (not x4024))
+(or (not x4038) x4025)
+(or (not x4038) x2821)
+(or (not x4038) x4003)
+(or (not x4034) (not x4020) x4039)
+(or (not x4039) x4034)
+(or (not x4039) x4020)
+(or (not x4036) (not x4034) (not x4028) x4040)
+(or (not x4040) x4036)
+(or (not x4040) x4034)
+(or (not x4040) x4028)
+(or (not x4041) (not x4036) (not x4034) (not x4005) x4042)
+(or (not x4042) x4041)
+(or (not x4042) x4036)
+(or (not x4042) x4034)
+(or (not x4042) x4005)
+(or x3999 (not x4013))
+(or x3999 (not x4042))
+(or x3999 (not x4040))
+(or x3999 (not x4039))
+(or x4013 x4042 x4040 x4039 (not x3999))
+(or (not x3999) x4000 (not x4001) (not x2821) (not x4003) x4043)
+(or (not x4043) x3999)
+(or (not x4043) (not x4000))
+(or (not x4043) x4001)
+(or (not x4043) x2821)
+(or (not x4043) x4003)
+(or (not x4036) (not x4028) x4044)
+(or (not x4044) x4036)
+(or (not x4044) x4028)
+(or (not x4041) (not x4036) (not x4005) x4045)
+(or (not x4045) x4041)
+(or (not x4045) x4036)
+(or (not x4045) x4005)
+(or (not x4032) (not x4041) (not x4036) (not x4013) x4046)
+(or (not x4046) x4032)
+(or (not x4046) x4041)
+(or (not x4046) x4036)
+(or (not x4046) x4013)
+(or x4009 (not x4020))
+(or x4009 (not x4046))
+(or x4009 (not x4045))
+(or x4009 (not x4044))
+(or x4020 x4046 x4045 x4044 (not x4009))
+(or (not x4009) x4010 (not x4011) (not x2821) (not x4003) x4047)
+(or (not x4047) x4009)
+(or (not x4047) (not x4010))
+(or (not x4047) x4011)
+(or (not x4047) x2821)
+(or (not x4047) x4003)
+(or (not x4041) (not x4005) x4048)
+(or (not x4048) x4041)
+(or (not x4048) x4005)
+(or (not x4032) (not x4041) (not x4013) x4049)
+(or (not x4049) x4032)
+(or (not x4049) x4041)
+(or (not x4049) x4013)
+(or (not x4034) (not x4032) (not x4041) (not x4020) x4050)
+(or (not x4050) x4034)
+(or (not x4050) x4032)
+(or (not x4050) x4041)
+(or (not x4050) x4020)
+(or x4016 (not x4028))
+(or x4016 (not x4050))
+(or x4016 (not x4049))
+(or x4016 (not x4048))
+(or x4028 x4050 x4049 x4048 (not x4016))
+(or (not x4016) x4017 (not x4018) (not x2821) (not x4003) x4051)
+(or (not x4051) x4016)
+(or (not x4051) (not x4017))
+(or (not x4051) x4018)
+(or (not x4051) x2821)
+(or (not x4051) x4003)
+(or x4052 x2831)
+(or x4052 x2827)
+(or x4052 x2822)
+(or x4052 x2819)
+(or (not x2831) (not x2827) (not x2822) (not x2819) (not x4052))
+(or (not x4003) (not x4052) x3115)
+(or (not x3115) x4003)
+(or (not x3115) x4052)
+(or x4053 x3282)
+(or x4053 x3462)
+(or (not x3282) (not x3462) (not x4053))
+(or x3295 x3462 x4054)
+(or (not x4054) (not x3295))
+(or (not x4054) (not x3462))
+(or x4055 x3291)
+(or x4055 (not x4054))
+(or (not x3291) x4054 (not x4055))
+(or x3305 x3295 x3462 x4056)
+(or (not x4056) (not x3305))
+(or (not x4056) (not x3295))
+(or (not x4056) (not x3462))
+(or x4057 x3302)
+(or x4057 (not x4056))
+(or (not x3302) x4056 (not x4057))
+(or x3313 x3305 x3295 x3462 x4058)
+(or (not x4058) (not x3313))
+(or (not x4058) (not x3305))
+(or (not x4058) (not x3295))
+(or (not x4058) (not x3462))
+(or x4059 x3311)
+(or x4059 (not x4058))
+(or (not x3311) x4058 (not x4059))
+(or x4060 x3288)
+(or x4060 x3396)
+(or (not x3288) (not x3396) (not x4060))
+(or x3321 x3396 x4061)
+(or (not x4061) (not x3321))
+(or (not x4061) (not x3396))
+(or x4062 x3300)
+(or x4062 (not x4061))
+(or (not x3300) x4061 (not x4062))
+(or x3329 x3321 x3396 x4063)
+(or (not x4063) (not x3329))
+(or (not x4063) (not x3321))
+(or (not x4063) (not x3396))
+(or x4064 x3309)
+(or x4064 (not x4063))
+(or (not x3309) x4063 (not x4064))
+(or x3337 x3329 x3321 x3396 x4065)
+(or (not x4065) (not x3337))
+(or (not x4065) (not x3329))
+(or (not x4065) (not x3321))
+(or (not x4065) (not x3396))
+(or x4066 x3335)
+(or x4066 (not x4065))
+(or (not x3335) x4065 (not x4066))
+(or x4067 x3317)
+(or x4067 x3345)
+(or (not x3317) (not x3345) (not x4067))
+(or x3353 x3345 x4068)
+(or (not x4068) (not x3353))
+(or (not x4068) (not x3345))
+(or x4069 x3325)
+(or x4069 (not x4068))
+(or (not x3325) x4068 (not x4069))
+(or x3361 x3353 x3345 x4070)
+(or (not x4070) (not x3361))
+(or (not x4070) (not x3353))
+(or (not x4070) (not x3345))
+(or x4071 x3333)
+(or x4071 (not x4070))
+(or (not x3333) x4070 (not x4071))
+(or x3368 x3361 x3353 x3345 x4072)
+(or (not x4072) (not x3368))
+(or (not x4072) (not x3361))
+(or (not x4072) (not x3353))
+(or (not x4072) (not x3345))
+(or x4073 x3341)
+(or x4073 (not x4072))
+(or (not x3341) x4072 (not x4073))
+(or x4074 x3349)
+(or x4074 x3403)
+(or (not x3349) (not x3403) (not x4074))
+(or x3375 x3403 x4075)
+(or (not x4075) (not x3375))
+(or (not x4075) (not x3403))
+(or x4076 x3357)
+(or x4076 (not x4075))
+(or (not x3357) x4075 (not x4076))
+(or x3382 x3375 x3403 x4077)
+(or (not x4077) (not x3382))
+(or (not x4077) (not x3375))
+(or (not x4077) (not x3403))
+(or x4078 x3365)
+(or x4078 (not x4077))
+(or (not x3365) x4077 (not x4078))
+(or x3389 x3382 x3375 x3403 x4079)
+(or (not x4079) (not x3389))
+(or (not x4079) (not x3382))
+(or (not x4079) (not x3375))
+(or (not x4079) (not x3403))
+(or x4080 x3387)
+(or x4080 (not x4079))
+(or (not x3387) x4079 (not x4080))
+(or (not x4080) (not x4078) (not x4076) (not x4074) (not x4073) (not x4071) (not x4069) (not x4067) (not x4066) (not x4064) (not x4062) (not x4060) (not x4059) (not x4057) (not x4055) (not x4053) x3472)
+(or (not x3472) x4080)
+(or (not x3472) x4078)
+(or (not x3472) x4076)
+(or (not x3472) x4074)
+(or (not x3472) x4073)
+(or (not x3472) x4071)
+(or (not x3472) x4069)
+(or (not x3472) x4067)
+(or (not x3472) x4066)
+(or (not x3472) x4064)
+(or (not x3472) x4062)
+(or (not x3472) x4060)
+(or (not x3472) x4059)
+(or (not x3472) x4057)
+(or (not x3472) x4055)
+(or (not x3472) x4053)
+(or (not x4080) (not x4078) (not x4076) (not x4074) (not x4073) (not x4071) (not x4069) (not x4067) (not x4066) (not x4064) (not x4062) (not x4060) (not x4059) (not x4057) (not x4055) (not x4053) (not x4081) (not x4082) (not x4083) (not x4084) (not x4085) (not x4086) (not x4087) (not x4088) (not x4089) (not x4090) (not x4091) (not x4092) (not x4093) (not x4094) (not x4095) (not x4096) x3114)
+(or (not x3114) x4080)
+(or (not x3114) x4078)
+(or (not x3114) x4076)
+(or (not x3114) x4074)
+(or (not x3114) x4073)
+(or (not x3114) x4071)
+(or (not x3114) x4069)
+(or (not x3114) x4067)
+(or (not x3114) x4066)
+(or (not x3114) x4064)
+(or (not x3114) x4062)
+(or (not x3114) x4060)
+(or (not x3114) x4059)
+(or (not x3114) x4057)
+(or (not x3114) x4055)
+(or (not x3114) x4053)
+(or (not x3114) x4081)
+(or (not x3114) x4082)
+(or (not x3114) x4083)
+(or (not x3114) x4084)
+(or (not x3114) x4085)
+(or (not x3114) x4086)
+(or (not x3114) x4087)
+(or (not x3114) x4088)
+(or (not x3114) x4089)
+(or (not x3114) x4090)
+(or (not x3114) x4091)
+(or (not x3114) x4092)
+(or (not x3114) x4093)
+(or (not x3114) x4094)
+(or (not x3114) x4095)
+(or (not x3114) x4096)
+(or x3647 x2845)
+(or x3647 (not x3114))
+(or x3647 (not x3115))
+(or (not x2845) x3114 x3115 (not x3647))
+(or (not x3647) (not x2845) x4097)
+(or (not x4097) x3647)
+(or (not x4097) x2845)
+(or x2845 x2818 x2821 x4098)
+(or (not x4098) (not x2845))
+(or (not x4098) (not x2818))
+(or (not x4098) (not x2821))
+(or x4099 (not x4098))
+(or x4099 (not x4097))
+(or x4098 x4097 (not x4099))
+(or x4096 x2838)
+(or x4096 x3105)
+(or (not x2838) (not x3105) (not x4096))
+(or x2852 x3105 x4100)
+(or (not x4100) (not x2852))
+(or (not x4100) (not x3105))
+(or x4095 x2848)
+(or x4095 (not x4100))
+(or (not x2848) x4100 (not x4095))
+(or x2864 x2852 x3105 x4101)
+(or (not x4101) (not x2864))
+(or (not x4101) (not x2852))
+(or (not x4101) (not x3105))
+(or x4094 x2861)
+(or x4094 (not x4101))
+(or (not x2861) x4101 (not x4094))
+(or x2872 x2864 x2852 x3105 x4102)
+(or (not x4102) (not x2872))
+(or (not x4102) (not x2864))
+(or (not x4102) (not x2852))
+(or (not x4102) (not x3105))
+(or x4093 x2870)
+(or x4093 (not x4102))
+(or (not x2870) x4102 (not x4093))
+(or x4092 x2844)
+(or x4092 x2976)
+(or (not x2844) (not x2976) (not x4092))
+(or x2880 x2976 x4103)
+(or (not x4103) (not x2880))
+(or (not x4103) (not x2976))
+(or x4091 x2859)
+(or x4091 (not x4103))
+(or (not x2859) x4103 (not x4091))
+(or x2888 x2880 x2976 x4104)
+(or (not x4104) (not x2888))
+(or (not x4104) (not x2880))
+(or (not x4104) (not x2976))
+(or x4090 x2868)
+(or x4090 (not x4104))
+(or (not x2868) x4104 (not x4090))
+(or x2896 x2888 x2880 x2976 x4105)
+(or (not x4105) (not x2896))
+(or (not x4105) (not x2888))
+(or (not x4105) (not x2880))
+(or (not x4105) (not x2976))
+(or x4089 x2894)
+(or x4089 (not x4105))
+(or (not x2894) x4105 (not x4089))
+(or x4088 x2876)
+(or x4088 x3011)
+(or (not x2876) (not x3011) (not x4088))
+(or x2904 x3011 x4106)
+(or (not x4106) (not x2904))
+(or (not x4106) (not x3011))
+(or x4087 x2884)
+(or x4087 (not x4106))
+(or (not x2884) x4106 (not x4087))
+(or x2912 x2904 x3011 x4107)
+(or (not x4107) (not x2912))
+(or (not x4107) (not x2904))
+(or (not x4107) (not x3011))
+(or x4086 x2892)
+(or x4086 (not x4107))
+(or (not x2892) x4107 (not x4086))
+(or x2920 x2912 x2904 x3011 x4108)
+(or (not x4108) (not x2920))
+(or (not x4108) (not x2912))
+(or (not x4108) (not x2904))
+(or (not x4108) (not x3011))
+(or x4085 x2918)
+(or x4085 (not x4108))
+(or (not x2918) x4108 (not x4085))
+(or x4084 x2900)
+(or x4084 x3046)
+(or (not x2900) (not x3046) (not x4084))
+(or x2927 x3046 x4109)
+(or (not x4109) (not x2927))
+(or (not x4109) (not x3046))
+(or x4083 x2908)
+(or x4083 (not x4109))
+(or (not x2908) x4109 (not x4083))
+(or x2934 x2927 x3046 x4110)
+(or (not x4110) (not x2934))
+(or (not x4110) (not x2927))
+(or (not x4110) (not x3046))
+(or x4082 x2916)
+(or x4082 (not x4110))
+(or (not x2916) x4110 (not x4082))
+(or x2941 x2934 x2927 x3046 x4111)
+(or (not x4111) (not x2941))
+(or (not x4111) (not x2934))
+(or (not x4111) (not x2927))
+(or (not x4111) (not x3046))
+(or x4081 x2939)
+(or x4081 (not x4111))
+(or (not x2939) x4111 (not x4081))
+(or (not x4081) (not x4082) (not x4083) (not x4084) (not x4085) (not x4086) (not x4087) (not x4088) (not x4089) (not x4090) (not x4091) (not x4092) (not x4093) (not x4094) (not x4095) (not x4096) x3113)
+(or (not x3113) x4081)
+(or (not x3113) x4082)
+(or (not x3113) x4083)
+(or (not x3113) x4084)
+(or (not x3113) x4085)
+(or (not x3113) x4086)
+(or (not x3113) x4087)
+(or (not x3113) x4088)
+(or (not x3113) x4089)
+(or (not x3113) x4090)
+(or (not x3113) x4091)
+(or (not x3113) x4092)
+(or (not x3113) x4093)
+(or (not x3113) x4094)
+(or (not x3113) x4095)
+(or (not x3113) x4096)
+(or x3296 (not x3113))
+(or x3296 (not x3274))
+(or x3113 x3274 (not x3296))
+(or (not x2845) (not x2823) (not x2855) (not x3275) (not x3296) x3459)
+(or (not x3459) x2845)
+(or (not x3459) x2823)
+(or (not x3459) x2855)
+(or (not x3459) x3275)
+(or (not x3459) x3296)
+(or x4112 (not x4024))
+(or x4112 x4025)
+(or x4112 (not x4025))
+(or x4024 (not x4025) x4025 (not x4112))
+(or x4113 (not x4114))
+(or x4113 x4115)
+(or x4114 (not x4115) (not x4113))
+(or (not x4113) (not x4112) x4116)
+(or (not x4116) x4113)
+(or (not x4116) x4112)
+(or x4117 (not x4000))
+(or x4117 x4001)
+(or x4117 (not x4001))
+(or x4000 (not x4001) x4001 (not x4117))
+(or x4118 (not x4119))
+(or x4118 x4120)
+(or x4119 (not x4120) (not x4118))
+(or (not x4118) (not x4117) x4121)
+(or (not x4121) x4118)
+(or (not x4121) x4117)
+(or x4122 (not x4010))
+(or x4122 x4011)
+(or x4122 (not x4011))
+(or x4010 (not x4011) x4011 (not x4122))
+(or x4123 (not x4124))
+(or x4123 x4125)
+(or x4124 (not x4125) (not x4123))
+(or (not x4123) (not x4122) x4126)
+(or (not x4126) x4123)
+(or (not x4126) x4122)
+(or x4127 (not x4017))
+(or x4127 x4018)
+(or x4127 (not x4018))
+(or x4017 (not x4018) x4018 (not x4127))
+(or x4128 (not x4129))
+(or x4128 x4130)
+(or x4129 (not x4130) (not x4128))
+(or (not x4128) (not x4127) x4131)
+(or (not x4131) x4128)
+(or (not x4131) x4127)
+(or (not x2831) (not x2827) (not x2822) (not x2819) x4132)
+(or (not x4132) x2831)
+(or (not x4132) x2827)
+(or (not x4132) x2822)
+(or (not x4132) x2819)
+(or x4041 (not x4024))
+(or x4041 x4025)
+(or x4024 (not x4025) (not x4041))
+(or x4032 (not x4000))
+(or x4032 x4001)
+(or x4000 (not x4001) (not x4032))
+(or x4034 (not x4010))
+(or x4034 x4011)
+(or x4010 (not x4011) (not x4034))
+(or x4036 (not x4017))
+(or x4036 x4018)
+(or x4017 (not x4018) (not x4036))
+(or (not x4036) (not x4034) (not x4032) (not x4041) x4027)
+(or (not x4027) x4036)
+(or (not x4027) x4034)
+(or (not x4027) x4032)
+(or (not x4027) x4041)
+(or x2855 (not x4027))
+(or x2855 (not x4132))
+(or x4027 x4132 (not x2855))
+(or (not x2838) (not x3105) x4133)
+(or (not x4133) x2838)
+(or (not x4133) x3105)
+(or x4134 (not x2852))
+(or x4134 (not x3105))
+(or x2852 x3105 (not x4134))
+(or (not x2848) (not x4134) x4135)
+(or (not x4135) x2848)
+(or (not x4135) x4134)
+(or x4136 (not x2864))
+(or x4136 (not x2852))
+(or x4136 (not x3105))
+(or x2864 x2852 x3105 (not x4136))
+(or (not x2861) (not x4136) x4137)
+(or (not x4137) x2861)
+(or (not x4137) x4136)
+(or x4138 (not x2872))
+(or x4138 (not x2864))
+(or x4138 (not x2852))
+(or x4138 (not x3105))
+(or x2872 x2864 x2852 x3105 (not x4138))
+(or (not x2870) (not x4138) x4139)
+(or (not x4139) x2870)
+(or (not x4139) x4138)
+(or (not x2844) (not x2976) x4140)
+(or (not x4140) x2844)
+(or (not x4140) x2976)
+(or x4141 (not x2880))
+(or x4141 (not x2976))
+(or x2880 x2976 (not x4141))
+(or (not x2859) (not x4141) x4142)
+(or (not x4142) x2859)
+(or (not x4142) x4141)
+(or x4143 (not x2888))
+(or x4143 (not x2880))
+(or x4143 (not x2976))
+(or x2888 x2880 x2976 (not x4143))
+(or (not x2868) (not x4143) x4144)
+(or (not x4144) x2868)
+(or (not x4144) x4143)
+(or x4145 (not x2896))
+(or x4145 (not x2888))
+(or x4145 (not x2880))
+(or x4145 (not x2976))
+(or x2896 x2888 x2880 x2976 (not x4145))
+(or (not x2894) (not x4145) x4146)
+(or (not x4146) x2894)
+(or (not x4146) x4145)
+(or (not x2876) (not x3011) x4147)
+(or (not x4147) x2876)
+(or (not x4147) x3011)
+(or x4148 (not x2904))
+(or x4148 (not x3011))
+(or x2904 x3011 (not x4148))
+(or (not x2884) (not x4148) x4149)
+(or (not x4149) x2884)
+(or (not x4149) x4148)
+(or x4150 (not x2912))
+(or x4150 (not x2904))
+(or x4150 (not x3011))
+(or x2912 x2904 x3011 (not x4150))
+(or (not x2892) (not x4150) x4151)
+(or (not x4151) x2892)
+(or (not x4151) x4150)
+(or x4152 (not x2920))
+(or x4152 (not x2912))
+(or x4152 (not x2904))
+(or x4152 (not x3011))
+(or x2920 x2912 x2904 x3011 (not x4152))
+(or (not x2918) (not x4152) x4153)
+(or (not x4153) x2918)
+(or (not x4153) x4152)
+(or (not x2900) (not x3046) x4154)
+(or (not x4154) x2900)
+(or (not x4154) x3046)
+(or x4155 (not x2927))
+(or x4155 (not x3046))
+(or x2927 x3046 (not x4155))
+(or (not x2908) (not x4155) x4156)
+(or (not x4156) x2908)
+(or (not x4156) x4155)
+(or x4157 (not x2934))
+(or x4157 (not x2927))
+(or x4157 (not x3046))
+(or x2934 x2927 x3046 (not x4157))
+(or (not x2916) (not x4157) x4158)
+(or (not x4158) x2916)
+(or (not x4158) x4157)
+(or x4159 (not x2941))
+(or x4159 (not x2934))
+(or x4159 (not x2927))
+(or x4159 (not x3046))
+(or x2941 x2934 x2927 x3046 (not x4159))
+(or (not x2939) (not x4159) x4160)
+(or (not x4160) x2939)
+(or (not x4160) x4159)
+(or x2854 (not x4160))
+(or x2854 (not x4158))
+(or x2854 (not x4156))
+(or x2854 (not x4154))
+(or x2854 (not x4153))
+(or x2854 (not x4151))
+(or x2854 (not x4149))
+(or x2854 (not x4147))
+(or x2854 (not x4146))
+(or x2854 (not x4144))
+(or x2854 (not x4142))
+(or x2854 (not x4140))
+(or x2854 (not x4139))
+(or x2854 (not x4137))
+(or x2854 (not x4135))
+(or x2854 (not x4133))
+(or x4160 x4158 x4156 x4154 x4153 x4151 x4149 x4147 x4146 x4144 x4142 x4140 x4139 x4137 x4135 x4133 (not x2854))
+(or (not x3282) (not x3462) x4161)
+(or (not x4161) x3282)
+(or (not x4161) x3462)
+(or x4162 (not x3295))
+(or x4162 (not x3462))
+(or x3295 x3462 (not x4162))
+(or (not x3291) (not x4162) x4163)
+(or (not x4163) x3291)
+(or (not x4163) x4162)
+(or x4164 (not x3305))
+(or x4164 (not x3295))
+(or x4164 (not x3462))
+(or x3305 x3295 x3462 (not x4164))
+(or (not x3302) (not x4164) x4165)
+(or (not x4165) x3302)
+(or (not x4165) x4164)
+(or x4166 (not x3313))
+(or x4166 (not x3305))
+(or x4166 (not x3295))
+(or x4166 (not x3462))
+(or x3313 x3305 x3295 x3462 (not x4166))
+(or (not x3311) (not x4166) x4167)
+(or (not x4167) x3311)
+(or (not x4167) x4166)
+(or (not x3288) (not x3396) x4168)
+(or (not x4168) x3288)
+(or (not x4168) x3396)
+(or x4169 (not x3321))
+(or x4169 (not x3396))
+(or x3321 x3396 (not x4169))
+(or (not x3300) (not x4169) x4170)
+(or (not x4170) x3300)
+(or (not x4170) x4169)
+(or x4171 (not x3329))
+(or x4171 (not x3321))
+(or x4171 (not x3396))
+(or x3329 x3321 x3396 (not x4171))
+(or (not x3309) (not x4171) x4172)
+(or (not x4172) x3309)
+(or (not x4172) x4171)
+(or x4173 (not x3337))
+(or x4173 (not x3329))
+(or x4173 (not x3321))
+(or x4173 (not x3396))
+(or x3337 x3329 x3321 x3396 (not x4173))
+(or (not x3335) (not x4173) x4174)
+(or (not x4174) x3335)
+(or (not x4174) x4173)
+(or (not x3317) (not x3345) x4175)
+(or (not x4175) x3317)
+(or (not x4175) x3345)
+(or x4176 (not x3353))
+(or x4176 (not x3345))
+(or x3353 x3345 (not x4176))
+(or (not x3325) (not x4176) x4177)
+(or (not x4177) x3325)
+(or (not x4177) x4176)
+(or x4178 (not x3361))
+(or x4178 (not x3353))
+(or x4178 (not x3345))
+(or x3361 x3353 x3345 (not x4178))
+(or (not x3333) (not x4178) x4179)
+(or (not x4179) x3333)
+(or (not x4179) x4178)
+(or x4180 (not x3368))
+(or x4180 (not x3361))
+(or x4180 (not x3353))
+(or x4180 (not x3345))
+(or x3368 x3361 x3353 x3345 (not x4180))
+(or (not x3341) (not x4180) x4181)
+(or (not x4181) x3341)
+(or (not x4181) x4180)
+(or (not x3349) (not x3403) x4182)
+(or (not x4182) x3349)
+(or (not x4182) x3403)
+(or x4183 (not x3375))
+(or x4183 (not x3403))
+(or x3375 x3403 (not x4183))
+(or (not x3357) (not x4183) x4184)
+(or (not x4184) x3357)
+(or (not x4184) x4183)
+(or x4185 (not x3382))
+(or x4185 (not x3375))
+(or x4185 (not x3403))
+(or x3382 x3375 x3403 (not x4185))
+(or (not x3365) (not x4185) x4186)
+(or (not x4186) x3365)
+(or (not x4186) x4185)
+(or x4187 (not x3389))
+(or x4187 (not x3382))
+(or x4187 (not x3375))
+(or x4187 (not x3403))
+(or x3389 x3382 x3375 x3403 (not x4187))
+(or (not x3387) (not x4187) x4188)
+(or (not x4188) x3387)
+(or (not x4188) x4187)
+(or x3275 (not x4188))
+(or x3275 (not x4186))
+(or x3275 (not x4184))
+(or x3275 (not x4182))
+(or x3275 (not x4181))
+(or x3275 (not x4179))
+(or x3275 (not x4177))
+(or x3275 (not x4175))
+(or x3275 (not x4174))
+(or x3275 (not x4172))
+(or x3275 (not x4170))
+(or x3275 (not x4168))
+(or x3275 (not x4167))
+(or x3275 (not x4165))
+(or x3275 (not x4163))
+(or x3275 (not x4161))
+(or x4188 x4186 x4184 x4182 x4181 x4179 x4177 x4175 x4174 x4172 x4170 x4168 x4167 x4165 x4163 x4161 (not x3275))
+(or x2823 (not x4188))
+(or x2823 (not x4186))
+(or x2823 (not x4184))
+(or x2823 (not x4182))
+(or x2823 (not x4181))
+(or x2823 (not x4179))
+(or x2823 (not x4177))
+(or x2823 (not x4175))
+(or x2823 (not x4174))
+(or x2823 (not x4172))
+(or x2823 (not x4170))
+(or x2823 (not x4168))
+(or x2823 (not x4167))
+(or x2823 (not x4165))
+(or x2823 (not x4163))
+(or x2823 (not x4161))
+(or x2823 (not x4160))
+(or x2823 (not x4158))
+(or x2823 (not x4156))
+(or x2823 (not x4154))
+(or x2823 (not x4153))
+(or x2823 (not x4151))
+(or x2823 (not x4149))
+(or x2823 (not x4147))
+(or x2823 (not x4146))
+(or x2823 (not x4144))
+(or x2823 (not x4142))
+(or x2823 (not x4140))
+(or x2823 (not x4139))
+(or x2823 (not x4137))
+(or x2823 (not x4135))
+(or x2823 (not x4133))
+(or x4188 x4186 x4184 x4182 x4181 x4179 x4177 x4175 x4174 x4172 x4170 x4168 x4167 x4165 x4163 x4161 x4160 x4158 x4156 x4154 x4153 x4151 x4149 x4147 x4146 x4144 x4142 x4140 x4139 x4137 x4135 x4133 (not x2823))
+(or (not x2845) (not x2845) (not x2823) (not x2855) x4189)
+(or (not x4189) x2845)
+(or (not x4189) x2845)
+(or (not x4189) x2823)
+(or (not x4189) x2855)
+(or x4190 (not x2821))
+(or x4190 (not x4191))
+(or x2821 x4191 (not x4190))
+(or x4024 (not x4025) x4114)
+(or (not x4114) (not x4024))
+(or (not x4114) x4025)
+(or x4000 (not x4001) x4119)
+(or (not x4119) (not x4000))
+(or (not x4119) x4001)
+(or x4010 (not x4011) x4124)
+(or (not x4124) (not x4010))
+(or (not x4124) x4011)
+(or x4017 (not x4018) x4129)
+(or (not x4129) (not x4017))
+(or (not x4129) x4018)
+(or x4003 (not x4129))
+(or x4003 (not x4124))
+(or x4003 (not x4119))
+(or x4003 (not x4114))
+(or x4129 x4124 x4119 x4114 (not x4003))
+(or (not x2821) (not x4003) x4192)
+(or (not x4192) x2821)
+(or (not x4192) x4003)
+(or x4193 (not x2818))
+(or x4193 (not x4192))
+(or x2818 x4192 (not x4193))
+(or (not x5) (not x2797))
+(or (not x5) x2796)
+(or (not x5) (not x2795))
+(or (not x5) x2794)
+(or (not x5) (not x2793))
+(or (not x4194) (not x2797))
+(or (not x4194) x2796)
+(or (not x4194) (not x2795))
+(or (not x4194) (not x2794))
+(or (not x4194) x2793)
+(or x2797 (not x2796) x2795 x2794 x2793 x2808)
+(or (not x2808) (not x2797))
+(or (not x2808) x2796)
+(or (not x2808) (not x2795))
+(or (not x2808) (not x2794))
+(or (not x2808) (not x2793))
+(or x2797 x2796 (not x2795) (not x2794) (not x2793) x2801)
+(or (not x2801) (not x2797))
+(or (not x2801) (not x2796))
+(or (not x2801) x2795)
+(or (not x2801) x2794)
+(or (not x2801) x2793)
+(or x2797 x2796 (not x2795) (not x2794) x2793 x2800)
+(or (not x2800) (not x2797))
+(or (not x2800) (not x2796))
+(or (not x2800) x2795)
+(or (not x2800) x2794)
+(or (not x2800) (not x2793))
+(or x2797 x2796 (not x2795) x2794 (not x2793) x2792)
+(or (not x2792) (not x2797))
+(or (not x2792) (not x2796))
+(or (not x2792) x2795)
+(or (not x2792) (not x2794))
+(or (not x2792) x2793)
+(or x2797 x2796 (not x2795) x2794 x2793 x2791)
+(or (not x2791) (not x2797))
+(or (not x2791) (not x2796))
+(or (not x2791) x2795)
+(or (not x2791) (not x2794))
+(or (not x2791) (not x2793))
+(or x2797 x2796 x2795 (not x2794) (not x2793) x2790)
+(or (not x2790) (not x2797))
+(or (not x2790) (not x2796))
+(or (not x2790) (not x2795))
+(or (not x2790) x2794)
+(or (not x2790) x2793)
+(or x2797 x2796 x2795 (not x2794) x2793 x2789)
+(or (not x2789) (not x2797))
+(or (not x2789) (not x2796))
+(or (not x2789) (not x2795))
+(or (not x2789) x2794)
+(or (not x2789) (not x2793))
+(or x2797 x2796 x2795 x2794 (not x2793) x2788)
+(or (not x2788) (not x2797))
+(or (not x2788) (not x2796))
+(or (not x2788) (not x2795))
+(or (not x2788) (not x2794))
+(or (not x2788) x2793)
+(or (not x4195) (not x2797))
+(or (not x4195) (not x2796))
+(or (not x4195) (not x2795))
+(or (not x4195) (not x2794))
+(or (not x4195) (not x2793))
+(or x4196 (not x4195))
+(or x4196 (not x2788))
+(or x4196 (not x2789))
+(or x4196 (not x2790))
+(or x4196 (not x2791))
+(or x4196 (not x2792))
+(or x4196 (not x2800))
+(or x4196 (not x2801))
+(or x4196 (not x2808))
+(or x4196 (not x4194))
+(or x4195 x2788 x2789 x2790 x2791 x2792 x2800 x2801 x2808 x4194 (not x4196))
+(or x4197 x2812 x4198)
+(or x4197 (not x2812) (not x4198))
+(or (not x4197) x2812 (not x4198))
+(or (not x4197) (not x2812) x4198)
+(or x4199 x2813 x4200)
+(or x4199 (not x2813) (not x4200))
+(or (not x4199) x2813 (not x4200))
+(or (not x4199) (not x2813) x4200)
+(or x4201 x4202 x4203)
+(or x4201 (not x4202) (not x4203))
+(or (not x4201) x4202 (not x4203))
+(or (not x4201) (not x4202) x4203)
+(or x4204 x4205 x4206)
+(or x4204 (not x4205) (not x4206))
+(or (not x4204) x4205 (not x4206))
+(or (not x4204) (not x4205) x4206)
+(or x4207 x4208 x4209)
+(or x4207 (not x4208) (not x4209))
+(or (not x4207) x4208 (not x4209))
+(or (not x4207) (not x4208) x4209)
+(or x4210 x4211 x4212)
+(or x4210 (not x4211) (not x4212))
+(or (not x4210) x4211 (not x4212))
+(or (not x4210) (not x4211) x4212)
+(or (not x4213) x2811)
+(or (not x4213) x4210)
+(or (not x4213) x4207)
+(or (not x4213) x4204)
+(or (not x4213) x4201)
+(or (not x4213) x4199)
+(or (not x4213) x4197)
+(or x4214 x2805 x4203)
+(or x4214 (not x2805) (not x4203))
+(or (not x4214) x2805 (not x4203))
+(or (not x4214) (not x2805) x4203)
+(or x4215 x2804 x4206)
+(or x4215 (not x2804) (not x4206))
+(or (not x4215) x2804 (not x4206))
+(or (not x4215) (not x2804) x4206)
+(or (not x4216) x2806)
+(or (not x4216) x4215)
+(or (not x4216) x4214)
+(or (not x4216) (not x2811))
+(or x4217 x2811)
+(or x4217 (not x4216))
+(or x4217 x2811)
+(or x4217 x2811)
+(or x4217 (not x4213))
+(or x4217 x2811)
+(or x4217 x2811)
+(or x4217 (not x4216))
+(or x4217 x2811)
+(or x4217 x2811)
+(or x4217 (not x4213))
+(or (not x2811) x4216 (not x2811) (not x2811) x4213 (not x2811) (not x2811) x4216 (not x2811) (not x2811) x4213 (not x4217))
+(or (not x4218) x2949)
+(or (not x4218) (not x2948))
+(or (not x4218) (not x2947))
+(or (not x4218) x2946)
+(or (not x4218) (not x2945))
+(or (not x2949) x2948 x2947 x2946 (not x2945) x3653)
+(or (not x3653) x2949)
+(or (not x3653) (not x2948))
+(or (not x3653) (not x2947))
+(or (not x3653) (not x2946))
+(or (not x3653) x2945)
+(or (not x2949) x2948 x2947 x2946 x2945 x3652)
+(or (not x3652) x2949)
+(or (not x3652) (not x2948))
+(or (not x3652) (not x2947))
+(or (not x3652) (not x2946))
+(or (not x3652) (not x2945))
+(or x4219 (not x3652))
+(or x4219 (not x3653))
+(or x3652 x3653 (not x4219))
+(or (not x4220) x2956)
+(or (not x4220) (not x2955))
+(or (not x4220) (not x2954))
+(or (not x4220) x2953)
+(or (not x4220) (not x2952))
+(or (not x2956) x2955 x2954 x2953 (not x2952) x3675)
+(or (not x3675) x2956)
+(or (not x3675) (not x2955))
+(or (not x3675) (not x2954))
+(or (not x3675) (not x2953))
+(or (not x3675) x2952)
+(or (not x2956) x2955 x2954 x2953 x2952 x3674)
+(or (not x3674) x2956)
+(or (not x3674) (not x2955))
+(or (not x3674) (not x2954))
+(or (not x3674) (not x2953))
+(or (not x3674) (not x2952))
+(or x4221 (not x3674))
+(or x4221 (not x3675))
+(or x3674 x3675 (not x4221))
+(or (not x4222) x2963)
+(or (not x4222) (not x2962))
+(or (not x4222) (not x2961))
+(or (not x4222) x2960)
+(or (not x4222) (not x2959))
+(or (not x2963) x2962 x2961 x2960 (not x2959) x3693)
+(or (not x3693) x2963)
+(or (not x3693) (not x2962))
+(or (not x3693) (not x2961))
+(or (not x3693) (not x2960))
+(or (not x3693) x2959)
+(or (not x2963) x2962 x2961 x2960 x2959 x3692)
+(or (not x3692) x2963)
+(or (not x3692) (not x2962))
+(or (not x3692) (not x2961))
+(or (not x3692) (not x2960))
+(or (not x3692) (not x2959))
+(or x4223 (not x3692))
+(or x4223 (not x3693))
+(or x3692 x3693 (not x4223))
+(or (not x4224) x2970)
+(or (not x4224) (not x2969))
+(or (not x4224) (not x2968))
+(or (not x4224) x2967)
+(or (not x4224) (not x2966))
+(or (not x2970) x2969 x2968 x2967 (not x2966) x3711)
+(or (not x3711) x2970)
+(or (not x3711) (not x2969))
+(or (not x3711) (not x2968))
+(or (not x3711) (not x2967))
+(or (not x3711) x2966)
+(or (not x2970) x2969 x2968 x2967 x2966 x3710)
+(or (not x3710) x2970)
+(or (not x3710) (not x2969))
+(or (not x3710) (not x2968))
+(or (not x3710) (not x2967))
+(or (not x3710) (not x2966))
+(or x4225 (not x3710))
+(or x4225 (not x3711))
+(or x3710 x3711 (not x4225))
+(or (not x4226) x2984)
+(or (not x4226) (not x2983))
+(or (not x4226) (not x2982))
+(or (not x4226) x2981)
+(or (not x4226) (not x2980))
+(or (not x2984) x2983 x2982 x2981 (not x2980) x3729)
+(or (not x3729) x2984)
+(or (not x3729) (not x2983))
+(or (not x3729) (not x2982))
+(or (not x3729) (not x2981))
+(or (not x3729) x2980)
+(or (not x2984) x2983 x2982 x2981 x2980 x3728)
+(or (not x3728) x2984)
+(or (not x3728) (not x2983))
+(or (not x3728) (not x2982))
+(or (not x3728) (not x2981))
+(or (not x3728) (not x2980))
+(or x4227 (not x3728))
+(or x4227 (not x3729))
+(or x3728 x3729 (not x4227))
+(or (not x4228) x2991)
+(or (not x4228) (not x2990))
+(or (not x4228) (not x2989))
+(or (not x4228) x2988)
+(or (not x4228) (not x2987))
+(or (not x2991) x2990 x2989 x2988 (not x2987) x3746)
+(or (not x3746) x2991)
+(or (not x3746) (not x2990))
+(or (not x3746) (not x2989))
+(or (not x3746) (not x2988))
+(or (not x3746) x2987)
+(or (not x2991) x2990 x2989 x2988 x2987 x3745)
+(or (not x3745) x2991)
+(or (not x3745) (not x2990))
+(or (not x3745) (not x2989))
+(or (not x3745) (not x2988))
+(or (not x3745) (not x2987))
+(or x4229 (not x3745))
+(or x4229 (not x3746))
+(or x3745 x3746 (not x4229))
+(or (not x4230) x2998)
+(or (not x4230) (not x2997))
+(or (not x4230) (not x2996))
+(or (not x4230) x2995)
+(or (not x4230) (not x2994))
+(or (not x2998) x2997 x2996 x2995 (not x2994) x3763)
+(or (not x3763) x2998)
+(or (not x3763) (not x2997))
+(or (not x3763) (not x2996))
+(or (not x3763) (not x2995))
+(or (not x3763) x2994)
+(or (not x2998) x2997 x2996 x2995 x2994 x3762)
+(or (not x3762) x2998)
+(or (not x3762) (not x2997))
+(or (not x3762) (not x2996))
+(or (not x3762) (not x2995))
+(or (not x3762) (not x2994))
+(or x4231 (not x3762))
+(or x4231 (not x3763))
+(or x3762 x3763 (not x4231))
+(or (not x4232) x3005)
+(or (not x4232) (not x3004))
+(or (not x4232) (not x3003))
+(or (not x4232) x3002)
+(or (not x4232) (not x3001))
+(or (not x3005) x3004 x3003 x3002 (not x3001) x3780)
+(or (not x3780) x3005)
+(or (not x3780) (not x3004))
+(or (not x3780) (not x3003))
+(or (not x3780) (not x3002))
+(or (not x3780) x3001)
+(or (not x3005) x3004 x3003 x3002 x3001 x3779)
+(or (not x3779) x3005)
+(or (not x3779) (not x3004))
+(or (not x3779) (not x3003))
+(or (not x3779) (not x3002))
+(or (not x3779) (not x3001))
+(or x4233 (not x3779))
+(or x4233 (not x3780))
+(or x3779 x3780 (not x4233))
+(or (not x4234) x3019)
+(or (not x4234) (not x3018))
+(or (not x4234) (not x3017))
+(or (not x4234) x3016)
+(or (not x4234) (not x3015))
+(or (not x3019) x3018 x3017 x3016 (not x3015) x3797)
+(or (not x3797) x3019)
+(or (not x3797) (not x3018))
+(or (not x3797) (not x3017))
+(or (not x3797) (not x3016))
+(or (not x3797) x3015)
+(or (not x3019) x3018 x3017 x3016 x3015 x3796)
+(or (not x3796) x3019)
+(or (not x3796) (not x3018))
+(or (not x3796) (not x3017))
+(or (not x3796) (not x3016))
+(or (not x3796) (not x3015))
+(or x4235 (not x3796))
+(or x4235 (not x3797))
+(or x3796 x3797 (not x4235))
+(or (not x4236) x3026)
+(or (not x4236) (not x3025))
+(or (not x4236) (not x3024))
+(or (not x4236) x3023)
+(or (not x4236) (not x3022))
+(or (not x3026) x3025 x3024 x3023 (not x3022) x3814)
+(or (not x3814) x3026)
+(or (not x3814) (not x3025))
+(or (not x3814) (not x3024))
+(or (not x3814) (not x3023))
+(or (not x3814) x3022)
+(or (not x3026) x3025 x3024 x3023 x3022 x3813)
+(or (not x3813) x3026)
+(or (not x3813) (not x3025))
+(or (not x3813) (not x3024))
+(or (not x3813) (not x3023))
+(or (not x3813) (not x3022))
+(or x4237 (not x3813))
+(or x4237 (not x3814))
+(or x3813 x3814 (not x4237))
+(or (not x4238) x3033)
+(or (not x4238) (not x3032))
+(or (not x4238) (not x3031))
+(or (not x4238) x3030)
+(or (not x4238) (not x3029))
+(or (not x3033) x3032 x3031 x3030 (not x3029) x3831)
+(or (not x3831) x3033)
+(or (not x3831) (not x3032))
+(or (not x3831) (not x3031))
+(or (not x3831) (not x3030))
+(or (not x3831) x3029)
+(or (not x3033) x3032 x3031 x3030 x3029 x3830)
+(or (not x3830) x3033)
+(or (not x3830) (not x3032))
+(or (not x3830) (not x3031))
+(or (not x3830) (not x3030))
+(or (not x3830) (not x3029))
+(or x4239 (not x3830))
+(or x4239 (not x3831))
+(or x3830 x3831 (not x4239))
+(or (not x4240) x3040)
+(or (not x4240) (not x3039))
+(or (not x4240) (not x3038))
+(or (not x4240) x3037)
+(or (not x4240) (not x3036))
+(or (not x3040) x3039 x3038 x3037 (not x3036) x3848)
+(or (not x3848) x3040)
+(or (not x3848) (not x3039))
+(or (not x3848) (not x3038))
+(or (not x3848) (not x3037))
+(or (not x3848) x3036)
+(or (not x3040) x3039 x3038 x3037 x3036 x3847)
+(or (not x3847) x3040)
+(or (not x3847) (not x3039))
+(or (not x3847) (not x3038))
+(or (not x3847) (not x3037))
+(or (not x3847) (not x3036))
+(or x4241 (not x3847))
+(or x4241 (not x3848))
+(or x3847 x3848 (not x4241))
+(or (not x4242) x3054)
+(or (not x4242) (not x3053))
+(or (not x4242) (not x3052))
+(or (not x4242) x3051)
+(or (not x4242) (not x3050))
+(or (not x3054) x3053 x3052 x3051 (not x3050) x3865)
+(or (not x3865) x3054)
+(or (not x3865) (not x3053))
+(or (not x3865) (not x3052))
+(or (not x3865) (not x3051))
+(or (not x3865) x3050)
+(or (not x3054) x3053 x3052 x3051 x3050 x3864)
+(or (not x3864) x3054)
+(or (not x3864) (not x3053))
+(or (not x3864) (not x3052))
+(or (not x3864) (not x3051))
+(or (not x3864) (not x3050))
+(or x4243 (not x3864))
+(or x4243 (not x3865))
+(or x3864 x3865 (not x4243))
+(or (not x4244) x3061)
+(or (not x4244) (not x3060))
+(or (not x4244) (not x3059))
+(or (not x4244) x3058)
+(or (not x4244) (not x3057))
+(or (not x3061) x3060 x3059 x3058 (not x3057) x3882)
+(or (not x3882) x3061)
+(or (not x3882) (not x3060))
+(or (not x3882) (not x3059))
+(or (not x3882) (not x3058))
+(or (not x3882) x3057)
+(or (not x3061) x3060 x3059 x3058 x3057 x3881)
+(or (not x3881) x3061)
+(or (not x3881) (not x3060))
+(or (not x3881) (not x3059))
+(or (not x3881) (not x3058))
+(or (not x3881) (not x3057))
+(or x4245 (not x3881))
+(or x4245 (not x3882))
+(or x3881 x3882 (not x4245))
+(or (not x4246) x3068)
+(or (not x4246) (not x3067))
+(or (not x4246) (not x3066))
+(or (not x4246) x3065)
+(or (not x4246) (not x3064))
+(or (not x3068) x3067 x3066 x3065 (not x3064) x3899)
+(or (not x3899) x3068)
+(or (not x3899) (not x3067))
+(or (not x3899) (not x3066))
+(or (not x3899) (not x3065))
+(or (not x3899) x3064)
+(or (not x3068) x3067 x3066 x3065 x3064 x3898)
+(or (not x3898) x3068)
+(or (not x3898) (not x3067))
+(or (not x3898) (not x3066))
+(or (not x3898) (not x3065))
+(or (not x3898) (not x3064))
+(or x4247 (not x3898))
+(or x4247 (not x3899))
+(or x3898 x3899 (not x4247))
+(or (not x4248) x3075)
+(or (not x4248) (not x3074))
+(or (not x4248) (not x3073))
+(or (not x4248) x3072)
+(or (not x4248) (not x3071))
+(or (not x3075) x3074 x3073 x3072 (not x3071) x3916)
+(or (not x3916) x3075)
+(or (not x3916) (not x3074))
+(or (not x3916) (not x3073))
+(or (not x3916) (not x3072))
+(or (not x3916) x3071)
+(or (not x3075) x3074 x3073 x3072 x3071 x3915)
+(or (not x3915) x3075)
+(or (not x3915) (not x3074))
+(or (not x3915) (not x3073))
+(or (not x3915) (not x3072))
+(or (not x3915) (not x3071))
+(or x4249 (not x3915))
+(or x4249 (not x3916))
+(or x3915 x3916 (not x4249))
+(or (not x4250) x3411)
+(or (not x4250) (not x3410))
+(or (not x4250) (not x3409))
+(or (not x4250) x3408)
+(or (not x4250) (not x3407))
+(or (not x3411) x3410 x3409 x3408 (not x3407) x3933)
+(or (not x3933) x3411)
+(or (not x3933) (not x3410))
+(or (not x3933) (not x3409))
+(or (not x3933) (not x3408))
+(or (not x3933) x3407)
+(or (not x3411) x3410 x3409 x3408 x3407 x3932)
+(or (not x3932) x3411)
+(or (not x3932) (not x3410))
+(or (not x3932) (not x3409))
+(or (not x3932) (not x3408))
+(or (not x3932) (not x3407))
+(or x4251 (not x3932))
+(or x4251 (not x3933))
+(or x3932 x3933 (not x4251))
+(or (not x4252) x3418)
+(or (not x4252) (not x3417))
+(or (not x4252) (not x3416))
+(or (not x4252) x3415)
+(or (not x4252) (not x3414))
+(or (not x3418) x3417 x3416 x3415 (not x3414) x3950)
+(or (not x3950) x3418)
+(or (not x3950) (not x3417))
+(or (not x3950) (not x3416))
+(or (not x3950) (not x3415))
+(or (not x3950) x3414)
+(or (not x3418) x3417 x3416 x3415 x3414 x3949)
+(or (not x3949) x3418)
+(or (not x3949) (not x3417))
+(or (not x3949) (not x3416))
+(or (not x3949) (not x3415))
+(or (not x3949) (not x3414))
+(or x4253 (not x3949))
+(or x4253 (not x3950))
+(or x3949 x3950 (not x4253))
+(or (not x4254) x3425)
+(or (not x4254) (not x3424))
+(or (not x4254) (not x3423))
+(or (not x4254) x3422)
+(or (not x4254) (not x3421))
+(or (not x3425) x3424 x3423 x3422 (not x3421) x3967)
+(or (not x3967) x3425)
+(or (not x3967) (not x3424))
+(or (not x3967) (not x3423))
+(or (not x3967) (not x3422))
+(or (not x3967) x3421)
+(or (not x3425) x3424 x3423 x3422 x3421 x3966)
+(or (not x3966) x3425)
+(or (not x3966) (not x3424))
+(or (not x3966) (not x3423))
+(or (not x3966) (not x3422))
+(or (not x3966) (not x3421))
+(or x4255 (not x3966))
+(or x4255 (not x3967))
+(or x3966 x3967 (not x4255))
+(or (not x4256) x3432)
+(or (not x4256) (not x3431))
+(or (not x4256) (not x3430))
+(or (not x4256) x3429)
+(or (not x4256) (not x3428))
+(or (not x3432) x3431 x3430 x3429 (not x3428) x3984)
+(or (not x3984) x3432)
+(or (not x3984) (not x3431))
+(or (not x3984) (not x3430))
+(or (not x3984) (not x3429))
+(or (not x3984) x3428)
+(or (not x3432) x3431 x3430 x3429 x3428 x3983)
+(or (not x3983) x3432)
+(or (not x3983) (not x3431))
+(or (not x3983) (not x3430))
+(or (not x3983) (not x3429))
+(or (not x3983) (not x3428))
+(or x4257 (not x3983))
+(or x4257 (not x3984))
+(or x3983 x3984 (not x4257))
+(or (not x4258) (not x4259) (not x4260) (not x4261) (not x4262) (not x4263) (not x4264) (not x4265) (not x4266) (not x4267) x4268)
+(or (not x4268) x4258)
+(or (not x4268) x4259)
+(or (not x4268) x4260)
+(or (not x4268) x4261)
+(or (not x4268) x4262)
+(or (not x4268) x4263)
+(or (not x4268) x4264)
+(or (not x4268) x4265)
+(or (not x4268) x4266)
+(or (not x4268) x4267)
+(or x4263 (not x4269))
+(or x4263 (not x4270))
+(or x4263 (not x4271))
+(or x4263 (not x4272))
+(or x4263 (not x4273))
+(or x4263 (not x4278))
+(or x4263 (not x4277))
+(or x4263 x4276)
+(or x4263 x4275)
+(or x4263 (not x4274))
+(or x4269 x4270 x4271 x4272 x4273 x4278 x4277 (not x4276) (not x4275) x4274 (not x4263))
+(or (not x4258) (not x4259) (not x4260) (not x4261) (not x4262) (not x4263) (not x4267) x4279)
+(or (not x4279) x4258)
+(or (not x4279) x4259)
+(or (not x4279) x4260)
+(or (not x4279) x4261)
+(or (not x4279) x4262)
+(or (not x4279) x4263)
+(or (not x4279) x4267)
+(or x4259 (not x4269))
+(or x4259 (not x4278))
+(or x4259 (not x4277))
+(or x4259 (not x4276))
+(or x4259 x4275)
+(or x4259 (not x4274))
+(or x4269 x4278 x4277 x4276 (not x4275) x4274 (not x4259))
+(or (not x4258) (not x4259) (not x4264) (not x4265) (not x4266) (not x4267) x4280)
+(or (not x4280) x4258)
+(or (not x4280) x4259)
+(or (not x4280) x4264)
+(or (not x4280) x4265)
+(or (not x4280) x4266)
+(or (not x4280) x4267)
+(or x4265 (not x4269))
+(or x4265 (not x4270))
+(or x4265 (not x4271))
+(or x4265 (not x4272))
+(or x4265 (not x4273))
+(or x4265 (not x4281))
+(or x4265 (not x4282))
+(or x4265 (not x4278))
+(or x4265 x4277)
+(or x4265 (not x4276))
+(or x4265 (not x4275))
+(or x4265 (not x4274))
+(or x4269 x4270 x4271 x4272 x4273 x4281 x4282 x4278 (not x4277) x4276 x4275 x4274 (not x4265))
+(or x4261 (not x4269))
+(or x4261 (not x4270))
+(or x4261 (not x4271))
+(or x4261 (not x4278))
+(or x4261 (not x4277))
+(or x4261 x4276)
+(or x4261 (not x4275))
+(or x4261 (not x4274))
+(or x4269 x4270 x4271 x4278 x4277 (not x4276) x4275 x4274 (not x4261))
+(or (not x4260) (not x4261) (not x4264) (not x4265) (not x4267) x4283)
+(or (not x4283) x4260)
+(or (not x4283) x4261)
+(or (not x4283) x4264)
+(or (not x4283) x4265)
+(or (not x4283) x4267)
+(or x4284 x4285)
+(or x4284 (not x4286))
+(or (not x4285) x4286 (not x4284))
+(or x4278 (not x4277) x4276 x4275 (not x4274) (not x4287) (not x4284) x4288)
+(or (not x4288) (not x4278))
+(or (not x4288) x4277)
+(or (not x4288) (not x4276))
+(or (not x4288) (not x4275))
+(or (not x4288) x4274)
+(or (not x4288) x4287)
+(or (not x4288) x4284)
+(or x4267 (not x4269))
+(or x4267 (not x4270))
+(or x4267 (not x4271))
+(or x4267 (not x4272))
+(or x4267 (not x4273))
+(or x4267 (not x4281))
+(or x4267 (not x4282))
+(or x4267 (not x4289))
+(or x4267 (not x4288))
+(or x4269 x4270 x4271 x4272 x4273 x4281 x4282 x4289 x4288 (not x4267))
+(or (not x4285) x4286 x4290)
+(or (not x4290) x4285)
+(or (not x4290) (not x4286))
+(or x4266 (not x4269))
+(or x4266 (not x4270))
+(or x4266 (not x4271))
+(or x4266 (not x4272))
+(or x4266 (not x4273))
+(or x4266 (not x4281))
+(or x4266 (not x4282))
+(or x4266 (not x4289))
+(or x4266 (not x4278))
+(or x4266 x4277)
+(or x4266 (not x4276))
+(or x4266 (not x4275))
+(or x4266 x4274)
+(or x4266 x4287)
+(or x4266 (not x4290))
+(or x4269 x4270 x4271 x4272 x4273 x4281 x4282 x4289 x4278 (not x4277) x4276 x4275 (not x4274) (not x4287) x4290 (not x4266))
+(or x4264 (not x4269))
+(or x4264 (not x4270))
+(or x4264 (not x4271))
+(or x4264 (not x4272))
+(or x4264 (not x4273))
+(or x4264 (not x4281))
+(or x4264 (not x4278))
+(or x4264 (not x4277))
+(or x4264 x4276)
+(or x4264 x4275)
+(or x4264 x4274)
+(or x4269 x4270 x4271 x4272 x4273 x4281 x4278 x4277 (not x4276) (not x4275) (not x4274) (not x4264))
+(or x4262 (not x4269))
+(or x4262 (not x4270))
+(or x4262 (not x4271))
+(or x4262 (not x4272))
+(or x4262 (not x4278))
+(or x4262 (not x4277))
+(or x4262 x4276)
+(or x4262 (not x4275))
+(or x4262 x4274)
+(or x4269 x4270 x4271 x4272 x4278 x4277 (not x4276) x4275 (not x4274) (not x4262))
+(or x4260 (not x4269))
+(or x4260 (not x4270))
+(or x4260 (not x4278))
+(or x4260 (not x4277))
+(or x4260 (not x4276))
+(or x4260 x4275)
+(or x4260 x4274)
+(or x4269 x4270 x4278 x4277 x4276 (not x4275) (not x4274) (not x4260))
+(or x4258 (not x4278))
+(or x4258 (not x4277))
+(or x4258 (not x4276))
+(or x4258 (not x4275))
+(or x4258 x4274)
+(or x4278 x4277 x4276 x4275 (not x4274) (not x4258))
+(or (not x4258) (not x4260) (not x4262) (not x4264) (not x4266) (not x4267) x4291)
+(or (not x4291) x4258)
+(or (not x4291) x4260)
+(or (not x4291) x4262)
+(or (not x4291) x4264)
+(or (not x4291) x4266)
+(or (not x4291) x4267)
+(or (not x4292) (not x4293) (not x4294) x4295)
+(or (not x4295) x4292)
+(or (not x4295) x4293)
+(or (not x4295) x4294)
+(or (not x4292) (not x4293) x4294 x4296)
+(or (not x4296) x4292)
+(or (not x4296) x4293)
+(or (not x4296) (not x4294))
+(or (not x4292) x4293 (not x4294) x4297)
+(or (not x4297) x4292)
+(or (not x4297) (not x4293))
+(or (not x4297) x4294)
+(or (not x4292) x4293 x4294 x4298)
+(or (not x4298) x4292)
+(or (not x4298) (not x4293))
+(or (not x4298) (not x4294))
+(or x4299 (not x4300) x4301)
+(or (not x4301) (not x4299))
+(or (not x4301) x4300)
+(or (not x4302) (not x4303) (not x4304) x4305)
+(or (not x4305) x4302)
+(or (not x4305) x4303)
+(or (not x4305) x4304)
+(or x4306 (not x4305))
+(or x4306 (not x4301))
+(or x4305 x4301 (not x4306))
+(or x4299 (not x4303) x4307)
+(or (not x4307) (not x4299))
+(or (not x4307) x4303)
+(or (not x4302) (not x4308) (not x4304) x4309)
+(or (not x4309) x4302)
+(or (not x4309) x4308)
+(or (not x4309) x4304)
+(or x4310 (not x4309))
+(or x4310 (not x4307))
+(or x4309 x4307 (not x4310))
+(or x4299 (not x4308) x4311)
+(or (not x4311) (not x4299))
+(or (not x4311) x4308)
+(or (not x4302) (not x4312) (not x4304) x4313)
+(or (not x4313) x4302)
+(or (not x4313) x4312)
+(or (not x4313) x4304)
+(or x4314 (not x4313))
+(or x4314 (not x4311))
+(or x4313 x4311 (not x4314))
+(or x4299 (not x4312) x4315)
+(or (not x4315) (not x4299))
+(or (not x4315) x4312)
+(or (not x4302) (not x4304) x4316)
+(or (not x4316) x4302)
+(or (not x4316) x4304)
+(or x4317 (not x4316))
+(or x4317 (not x4315))
+(or x4316 x4315 (not x4317))
+(or x4318 (not x4302))
+(or x4318 (not x4299))
+(or x4302 x4299 (not x4318))
+(or (not x4319) (not x4320) (not x4321) (not x4322) (not x4323) x4324)
+(or (not x4324) x4319)
+(or (not x4324) x4320)
+(or (not x4324) x4321)
+(or (not x4324) x4322)
+(or (not x4324) x4323)
+(or (not x4325) (not x4321) (not x4320) (not x4326) (not x4327) x4328)
+(or (not x4328) x4325)
+(or (not x4328) x4321)
+(or (not x4328) x4320)
+(or (not x4328) x4326)
+(or (not x4328) x4327)
+(or (not x4329) (not x4321) (not x4320) (not x4326) (not x4330) x4331)
+(or (not x4331) x4329)
+(or (not x4331) x4321)
+(or (not x4331) x4320)
+(or (not x4331) x4326)
+(or (not x4331) x4330)
+(or (not x4332) (not x4333) (not x4320) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4337)
+(or (not x4337) x4332)
+(or (not x4337) x4333)
+(or (not x4337) x4320)
+(or (not x4337) x4334)
+(or (not x4337) x4335)
+(or (not x4337) x4326)
+(or (not x4337) x4304)
+(or (not x4337) x4336)
+(or x4338 (not x4337))
+(or x4338 (not x4331))
+(or x4338 (not x4328))
+(or x4338 (not x4324))
+(or x4337 x4331 x4328 x4324 (not x4338))
+(or (not x4329) (not x4320) (not x4321) (not x4322) (not x4323) x4339)
+(or (not x4339) x4329)
+(or (not x4339) x4320)
+(or (not x4339) x4321)
+(or (not x4339) x4322)
+(or (not x4339) x4323)
+(or (not x4340) (not x4321) (not x4320) (not x4326) (not x4327) x4341)
+(or (not x4341) x4340)
+(or (not x4341) x4321)
+(or (not x4341) x4320)
+(or (not x4341) x4326)
+(or (not x4341) x4327)
+(or (not x4342) (not x4321) (not x4320) (not x4326) (not x4330) x4343)
+(or (not x4343) x4342)
+(or (not x4343) x4321)
+(or (not x4343) x4320)
+(or (not x4343) x4326)
+(or (not x4343) x4330)
+(or (not x4344) (not x4345) (not x4320) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4346)
+(or (not x4346) x4344)
+(or (not x4346) x4345)
+(or (not x4346) x4320)
+(or (not x4346) x4334)
+(or (not x4346) x4335)
+(or (not x4346) x4326)
+(or (not x4346) x4304)
+(or (not x4346) x4336)
+(or x4347 (not x4346))
+(or x4347 (not x4343))
+(or x4347 (not x4341))
+(or x4347 (not x4339))
+(or x4346 x4343 x4341 x4339 (not x4347))
+(or (not x4342) (not x4320) (not x4321) (not x4322) (not x4323) x4348)
+(or (not x4348) x4342)
+(or (not x4348) x4320)
+(or (not x4348) x4321)
+(or (not x4348) x4322)
+(or (not x4348) x4323)
+(or (not x4349) (not x4321) (not x4320) (not x4326) (not x4327) x4350)
+(or (not x4350) x4349)
+(or (not x4350) x4321)
+(or (not x4350) x4320)
+(or (not x4350) x4326)
+(or (not x4350) x4327)
+(or (not x4351) (not x4321) (not x4320) (not x4326) (not x4330) x4352)
+(or (not x4352) x4351)
+(or (not x4352) x4321)
+(or (not x4352) x4320)
+(or (not x4352) x4326)
+(or (not x4352) x4330)
+(or (not x4351) (not x4353) (not x4320) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4354)
+(or (not x4354) x4351)
+(or (not x4354) x4353)
+(or (not x4354) x4320)
+(or (not x4354) x4334)
+(or (not x4354) x4335)
+(or (not x4354) x4326)
+(or (not x4354) x4304)
+(or (not x4354) x4336)
+(or x4355 (not x4354))
+(or x4355 (not x4352))
+(or x4355 (not x4350))
+(or x4355 (not x4348))
+(or x4354 x4352 x4350 x4348 (not x4355))
+(or (not x4325) (not x4320) (not x4321) (not x4322) (not x4323) x4356)
+(or (not x4356) x4325)
+(or (not x4356) x4320)
+(or (not x4356) x4321)
+(or (not x4356) x4322)
+(or (not x4356) x4323)
+(or (not x4357) (not x4321) (not x4320) (not x4326) (not x4327) x4358)
+(or (not x4358) x4357)
+(or (not x4358) x4321)
+(or (not x4358) x4320)
+(or (not x4358) x4326)
+(or (not x4358) x4327)
+(or (not x4340) (not x4321) (not x4320) (not x4326) (not x4330) x4359)
+(or (not x4359) x4340)
+(or (not x4359) x4321)
+(or (not x4359) x4320)
+(or (not x4359) x4326)
+(or (not x4359) x4330)
+(or (not x4360) (not x4361) (not x4320) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4362)
+(or (not x4362) x4360)
+(or (not x4362) x4361)
+(or (not x4362) x4320)
+(or (not x4362) x4334)
+(or (not x4362) x4335)
+(or (not x4362) x4326)
+(or (not x4362) x4304)
+(or (not x4362) x4336)
+(or x4363 (not x4362))
+(or x4363 (not x4359))
+(or x4363 (not x4358))
+(or x4363 (not x4356))
+(or x4362 x4359 x4358 x4356 (not x4363))
+(or (not x4340) (not x4320) (not x4321) (not x4322) (not x4323) x4364)
+(or (not x4364) x4340)
+(or (not x4364) x4320)
+(or (not x4364) x4321)
+(or (not x4364) x4322)
+(or (not x4364) x4323)
+(or (not x4365) (not x4321) (not x4320) (not x4326) (not x4327) x4366)
+(or (not x4366) x4365)
+(or (not x4366) x4321)
+(or (not x4366) x4320)
+(or (not x4366) x4326)
+(or (not x4366) x4327)
+(or (not x4349) (not x4321) (not x4320) (not x4326) (not x4330) x4367)
+(or (not x4367) x4349)
+(or (not x4367) x4321)
+(or (not x4367) x4320)
+(or (not x4367) x4326)
+(or (not x4367) x4330)
+(or (not x4368) (not x4369) (not x4320) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4370)
+(or (not x4370) x4368)
+(or (not x4370) x4369)
+(or (not x4370) x4320)
+(or (not x4370) x4334)
+(or (not x4370) x4335)
+(or (not x4370) x4326)
+(or (not x4370) x4304)
+(or (not x4370) x4336)
+(or x4371 (not x4370))
+(or x4371 (not x4367))
+(or x4371 (not x4366))
+(or x4371 (not x4364))
+(or x4370 x4367 x4366 x4364 (not x4371))
+(or (not x4349) (not x4320) (not x4321) (not x4322) (not x4323) x4372)
+(or (not x4372) x4349)
+(or (not x4372) x4320)
+(or (not x4372) x4321)
+(or (not x4372) x4322)
+(or (not x4372) x4323)
+(or (not x4373) (not x4321) (not x4320) (not x4326) (not x4327) x4374)
+(or (not x4374) x4373)
+(or (not x4374) x4321)
+(or (not x4374) x4320)
+(or (not x4374) x4326)
+(or (not x4374) x4327)
+(or (not x4375) (not x4321) (not x4320) (not x4326) (not x4330) x4376)
+(or (not x4376) x4375)
+(or (not x4376) x4321)
+(or (not x4376) x4320)
+(or (not x4376) x4326)
+(or (not x4376) x4330)
+(or (not x4375) (not x4377) (not x4320) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4378)
+(or (not x4378) x4375)
+(or (not x4378) x4377)
+(or (not x4378) x4320)
+(or (not x4378) x4334)
+(or (not x4378) x4335)
+(or (not x4378) x4326)
+(or (not x4378) x4304)
+(or (not x4378) x4336)
+(or x4379 (not x4378))
+(or x4379 (not x4376))
+(or x4379 (not x4374))
+(or x4379 (not x4372))
+(or x4378 x4376 x4374 x4372 (not x4379))
+(or (not x4357) (not x4320) (not x4321) (not x4322) (not x4323) x4380)
+(or (not x4380) x4357)
+(or (not x4380) x4320)
+(or (not x4380) x4321)
+(or (not x4380) x4322)
+(or (not x4380) x4323)
+(or (not x4381) (not x4321) (not x4320) (not x4326) (not x4327) x4382)
+(or (not x4382) x4381)
+(or (not x4382) x4321)
+(or (not x4382) x4320)
+(or (not x4382) x4326)
+(or (not x4382) x4327)
+(or (not x4365) (not x4321) (not x4320) (not x4326) (not x4330) x4383)
+(or (not x4383) x4365)
+(or (not x4383) x4321)
+(or (not x4383) x4320)
+(or (not x4383) x4326)
+(or (not x4383) x4330)
+(or (not x4384) (not x4385) (not x4320) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4386)
+(or (not x4386) x4384)
+(or (not x4386) x4385)
+(or (not x4386) x4320)
+(or (not x4386) x4334)
+(or (not x4386) x4335)
+(or (not x4386) x4326)
+(or (not x4386) x4304)
+(or (not x4386) x4336)
+(or x4387 (not x4386))
+(or x4387 (not x4383))
+(or x4387 (not x4382))
+(or x4387 (not x4380))
+(or x4386 x4383 x4382 x4380 (not x4387))
+(or (not x4365) (not x4320) (not x4321) (not x4322) (not x4323) x4388)
+(or (not x4388) x4365)
+(or (not x4388) x4320)
+(or (not x4388) x4321)
+(or (not x4388) x4322)
+(or (not x4388) x4323)
+(or (not x4389) (not x4321) (not x4320) (not x4326) (not x4327) x4390)
+(or (not x4390) x4389)
+(or (not x4390) x4321)
+(or (not x4390) x4320)
+(or (not x4390) x4326)
+(or (not x4390) x4327)
+(or (not x4373) (not x4321) (not x4320) (not x4326) (not x4330) x4391)
+(or (not x4391) x4373)
+(or (not x4391) x4321)
+(or (not x4391) x4320)
+(or (not x4391) x4326)
+(or (not x4391) x4330)
+(or (not x4392) (not x4393) (not x4320) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4394)
+(or (not x4394) x4392)
+(or (not x4394) x4393)
+(or (not x4394) x4320)
+(or (not x4394) x4334)
+(or (not x4394) x4335)
+(or (not x4394) x4326)
+(or (not x4394) x4304)
+(or (not x4394) x4336)
+(or x4395 (not x4394))
+(or x4395 (not x4391))
+(or x4395 (not x4390))
+(or x4395 (not x4388))
+(or x4394 x4391 x4390 x4388 (not x4395))
+(or (not x4373) (not x4320) (not x4321) (not x4322) (not x4323) x4396)
+(or (not x4396) x4373)
+(or (not x4396) x4320)
+(or (not x4396) x4321)
+(or (not x4396) x4322)
+(or (not x4396) x4323)
+(or (not x4397) (not x4321) (not x4320) (not x4326) (not x4327) x4398)
+(or (not x4398) x4397)
+(or (not x4398) x4321)
+(or (not x4398) x4320)
+(or (not x4398) x4326)
+(or (not x4398) x4327)
+(or (not x4399) (not x4321) (not x4320) (not x4326) (not x4330) x4400)
+(or (not x4400) x4399)
+(or (not x4400) x4321)
+(or (not x4400) x4320)
+(or (not x4400) x4326)
+(or (not x4400) x4330)
+(or (not x4399) (not x4401) (not x4320) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4402)
+(or (not x4402) x4399)
+(or (not x4402) x4401)
+(or (not x4402) x4320)
+(or (not x4402) x4334)
+(or (not x4402) x4335)
+(or (not x4402) x4326)
+(or (not x4402) x4304)
+(or (not x4402) x4336)
+(or x4403 (not x4402))
+(or x4403 (not x4400))
+(or x4403 (not x4398))
+(or x4403 (not x4396))
+(or x4402 x4400 x4398 x4396 (not x4403))
+(or (not x4381) (not x4320) (not x4321) (not x4322) (not x4323) x4404)
+(or (not x4404) x4381)
+(or (not x4404) x4320)
+(or (not x4404) x4321)
+(or (not x4404) x4322)
+(or (not x4404) x4323)
+(or (not x4319) (not x4321) (not x4320) (not x4326) (not x4327) x4405)
+(or (not x4405) x4319)
+(or (not x4405) x4321)
+(or (not x4405) x4320)
+(or (not x4405) x4326)
+(or (not x4405) x4327)
+(or (not x4389) (not x4321) (not x4320) (not x4326) (not x4330) x4406)
+(or (not x4406) x4389)
+(or (not x4406) x4321)
+(or (not x4406) x4320)
+(or (not x4406) x4326)
+(or (not x4406) x4330)
+(or (not x4407) (not x4408) (not x4320) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4409)
+(or (not x4409) x4407)
+(or (not x4409) x4408)
+(or (not x4409) x4320)
+(or (not x4409) x4334)
+(or (not x4409) x4335)
+(or (not x4409) x4326)
+(or (not x4409) x4304)
+(or (not x4409) x4336)
+(or x4410 (not x4409))
+(or x4410 (not x4406))
+(or x4410 (not x4405))
+(or x4410 (not x4404))
+(or x4409 x4406 x4405 x4404 (not x4410))
+(or (not x4389) (not x4320) (not x4321) (not x4322) (not x4323) x4411)
+(or (not x4411) x4389)
+(or (not x4411) x4320)
+(or (not x4411) x4321)
+(or (not x4411) x4322)
+(or (not x4411) x4323)
+(or (not x4329) (not x4321) (not x4320) (not x4326) (not x4327) x4412)
+(or (not x4412) x4329)
+(or (not x4412) x4321)
+(or (not x4412) x4320)
+(or (not x4412) x4326)
+(or (not x4412) x4327)
+(or (not x4397) (not x4321) (not x4320) (not x4326) (not x4330) x4413)
+(or (not x4413) x4397)
+(or (not x4413) x4321)
+(or (not x4413) x4320)
+(or (not x4413) x4326)
+(or (not x4413) x4330)
+(or (not x4414) (not x4415) (not x4320) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4416)
+(or (not x4416) x4414)
+(or (not x4416) x4415)
+(or (not x4416) x4320)
+(or (not x4416) x4334)
+(or (not x4416) x4335)
+(or (not x4416) x4326)
+(or (not x4416) x4304)
+(or (not x4416) x4336)
+(or x4417 (not x4416))
+(or x4417 (not x4413))
+(or x4417 (not x4412))
+(or x4417 (not x4411))
+(or x4416 x4413 x4412 x4411 (not x4417))
+(or (not x4397) (not x4320) (not x4321) (not x4322) (not x4323) x4418)
+(or (not x4418) x4397)
+(or (not x4418) x4320)
+(or (not x4418) x4321)
+(or (not x4418) x4322)
+(or (not x4418) x4323)
+(or (not x4342) (not x4321) (not x4320) (not x4326) (not x4327) x4419)
+(or (not x4419) x4342)
+(or (not x4419) x4321)
+(or (not x4419) x4320)
+(or (not x4419) x4326)
+(or (not x4419) x4327)
+(or (not x4420) (not x4321) (not x4320) (not x4326) (not x4330) x4421)
+(or (not x4421) x4420)
+(or (not x4421) x4321)
+(or (not x4421) x4320)
+(or (not x4421) x4326)
+(or (not x4421) x4330)
+(or (not x4420) (not x4422) (not x4320) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4423)
+(or (not x4423) x4420)
+(or (not x4423) x4422)
+(or (not x4423) x4320)
+(or (not x4423) x4334)
+(or (not x4423) x4335)
+(or (not x4423) x4326)
+(or (not x4423) x4304)
+(or (not x4423) x4336)
+(or x4424 (not x4423))
+(or x4424 (not x4421))
+(or x4424 (not x4419))
+(or x4424 (not x4418))
+(or x4423 x4421 x4419 x4418 (not x4424))
+(or x4425 (not x4426))
+(or x4425 (not x4431))
+(or x4426 x4431 (not x4425))
+(or x4432 (not x4433))
+(or x4432 (not x4438))
+(or x4433 x4438 (not x4432))
+(or x4439 (not x4440))
+(or x4439 (not x4445))
+(or x4440 x4445 (not x4439))
+(or x4446 (not x4447))
+(or x4446 (not x4452))
+(or x4447 x4452 (not x4446))
+(or (not x4351) (not x4320) (not x4321) (not x4322) (not x4323) x4453)
+(or (not x4453) x4351)
+(or (not x4453) x4320)
+(or (not x4453) x4321)
+(or (not x4453) x4322)
+(or (not x4453) x4323)
+(or (not x4375) (not x4321) (not x4320) (not x4326) (not x4327) x4454)
+(or (not x4454) x4375)
+(or (not x4454) x4321)
+(or (not x4454) x4320)
+(or (not x4454) x4326)
+(or (not x4454) x4327)
+(or (not x4325) (not x4321) (not x4320) (not x4326) (not x4330) x4455)
+(or (not x4455) x4325)
+(or (not x4455) x4321)
+(or (not x4455) x4320)
+(or (not x4455) x4326)
+(or (not x4455) x4330)
+(or (not x4456) (not x4457) (not x4320) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4458)
+(or (not x4458) x4456)
+(or (not x4458) x4457)
+(or (not x4458) x4320)
+(or (not x4458) x4334)
+(or (not x4458) x4335)
+(or (not x4458) x4326)
+(or (not x4458) x4304)
+(or (not x4458) x4336)
+(or x4459 (not x4458))
+(or x4459 (not x4455))
+(or x4459 (not x4454))
+(or x4459 (not x4453))
+(or x4458 x4455 x4454 x4453 (not x4459))
+(or x4460 (not x4461))
+(or x4460 (not x4466))
+(or x4461 x4466 (not x4460))
+(or x4467 (not x4468))
+(or x4467 (not x4473))
+(or x4468 x4473 (not x4467))
+(or x4474 (not x4475))
+(or x4474 (not x4480))
+(or x4475 x4480 (not x4474))
+(or x4481 (not x4482))
+(or x4481 (not x4487))
+(or x4482 x4487 (not x4481))
+(or (not x4375) (not x4320) (not x4321) (not x4322) (not x4323) x4488)
+(or (not x4488) x4375)
+(or (not x4488) x4320)
+(or (not x4488) x4321)
+(or (not x4488) x4322)
+(or (not x4488) x4323)
+(or (not x4399) (not x4321) (not x4320) (not x4326) (not x4327) x4489)
+(or (not x4489) x4399)
+(or (not x4489) x4321)
+(or (not x4489) x4320)
+(or (not x4489) x4326)
+(or (not x4489) x4327)
+(or (not x4357) (not x4321) (not x4320) (not x4326) (not x4330) x4490)
+(or (not x4490) x4357)
+(or (not x4490) x4321)
+(or (not x4490) x4320)
+(or (not x4490) x4326)
+(or (not x4490) x4330)
+(or (not x4491) (not x4492) (not x4320) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4493)
+(or (not x4493) x4491)
+(or (not x4493) x4492)
+(or (not x4493) x4320)
+(or (not x4493) x4334)
+(or (not x4493) x4335)
+(or (not x4493) x4326)
+(or (not x4493) x4304)
+(or (not x4493) x4336)
+(or x4494 (not x4493))
+(or x4494 (not x4490))
+(or x4494 (not x4489))
+(or x4494 (not x4488))
+(or x4493 x4490 x4489 x4488 (not x4494))
+(or x4495 (not x4496))
+(or x4495 (not x4501))
+(or x4496 x4501 (not x4495))
+(or x4502 (not x4503))
+(or x4502 (not x4508))
+(or x4503 x4508 (not x4502))
+(or x4509 (not x4510))
+(or x4509 (not x4515))
+(or x4510 x4515 (not x4509))
+(or x4516 (not x4517))
+(or x4516 (not x4522))
+(or x4517 x4522 (not x4516))
+(or (not x4399) (not x4320) (not x4321) (not x4322) (not x4323) x4523)
+(or (not x4523) x4399)
+(or (not x4523) x4320)
+(or (not x4523) x4321)
+(or (not x4523) x4322)
+(or (not x4523) x4323)
+(or (not x4420) (not x4321) (not x4320) (not x4326) (not x4327) x4524)
+(or (not x4524) x4420)
+(or (not x4524) x4321)
+(or (not x4524) x4320)
+(or (not x4524) x4326)
+(or (not x4524) x4327)
+(or (not x4381) (not x4321) (not x4320) (not x4326) (not x4330) x4525)
+(or (not x4525) x4381)
+(or (not x4525) x4321)
+(or (not x4525) x4320)
+(or (not x4525) x4326)
+(or (not x4525) x4330)
+(or (not x4526) (not x4527) (not x4320) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4528)
+(or (not x4528) x4526)
+(or (not x4528) x4527)
+(or (not x4528) x4320)
+(or (not x4528) x4334)
+(or (not x4528) x4335)
+(or (not x4528) x4326)
+(or (not x4528) x4304)
+(or (not x4528) x4336)
+(or x4529 (not x4528))
+(or x4529 (not x4525))
+(or x4529 (not x4524))
+(or x4529 (not x4523))
+(or x4528 x4525 x4524 x4523 (not x4529))
+(or x4530 (not x4531))
+(or x4530 (not x4536))
+(or x4531 x4536 (not x4530))
+(or x4537 (not x4538))
+(or x4537 (not x4543))
+(or x4538 x4543 (not x4537))
+(or x4544 (not x4545))
+(or x4544 (not x4550))
+(or x4545 x4550 (not x4544))
+(or x4551 (not x4552))
+(or x4551 (not x4557))
+(or x4552 x4557 (not x4551))
+(or x4342 x4329 x4319 x4558)
+(or (not x4558) (not x4342))
+(or (not x4558) (not x4329))
+(or (not x4558) (not x4319))
+(or x4559 (not x4560))
+(or x4559 (not x4561))
+(or x4559 (not x4562))
+(or x4559 (not x4563))
+(or x4559 (not x4558))
+(or x4560 x4561 x4562 x4563 x4558 (not x4559))
+(or x4349 x4340 x4325 x4564)
+(or (not x4564) (not x4349))
+(or (not x4564) (not x4340))
+(or (not x4564) (not x4325))
+(or x4565 (not x4566))
+(or x4565 (not x4567))
+(or x4565 (not x4568))
+(or x4565 (not x4569))
+(or x4565 (not x4564))
+(or x4566 x4567 x4568 x4569 x4564 (not x4565))
+(or x4373 x4365 x4357 x4570)
+(or (not x4570) (not x4373))
+(or (not x4570) (not x4365))
+(or (not x4570) (not x4357))
+(or x4571 (not x4572))
+(or x4571 (not x4573))
+(or x4571 (not x4574))
+(or x4571 (not x4575))
+(or x4571 (not x4570))
+(or x4572 x4573 x4574 x4575 x4570 (not x4571))
+(or x4397 x4389 x4381 x4576)
+(or (not x4576) (not x4397))
+(or (not x4576) (not x4389))
+(or (not x4576) (not x4381))
+(or x4577 (not x4578))
+(or x4577 (not x4579))
+(or x4577 (not x4580))
+(or x4577 (not x4581))
+(or x4577 (not x4576))
+(or x4578 x4579 x4580 x4581 x4576 (not x4577))
+(or (not x4577) (not x4571) (not x4565) (not x4559) x4582)
+(or (not x4582) x4577)
+(or (not x4582) x4571)
+(or (not x4582) x4565)
+(or (not x4582) x4559)
+(or x4323 (not x4583))
+(or x4323 (not x4584))
+(or x4323 x4326)
+(or x4323 (not x4582))
+(or x4583 x4584 (not x4326) x4582 (not x4323))
+(or (not x4319) (not x4585) (not x4586) x4563)
+(or (not x4563) x4319)
+(or (not x4563) x4585)
+(or (not x4563) x4586)
+(or x4587 (not x4438))
+(or x4587 (not x4431))
+(or x4438 x4431 (not x4587))
+(or (not x4329) (not x4587) x4562)
+(or (not x4562) x4329)
+(or (not x4562) x4587)
+(or x4588 (not x4445))
+(or x4588 (not x4438))
+(or x4588 (not x4431))
+(or x4445 x4438 x4431 (not x4588))
+(or (not x4342) (not x4588) x4561)
+(or (not x4561) x4342)
+(or (not x4561) x4588)
+(or x4589 (not x4333))
+(or x4589 x4329)
+(or x4333 (not x4329) (not x4589))
+(or x4590 (not x4345))
+(or x4590 (not x4333))
+(or x4590 x4342)
+(or x4345 x4333 (not x4342) (not x4590))
+(or x4591 (not x4353))
+(or x4591 (not x4345))
+(or x4591 (not x4333))
+(or x4591 x4351)
+(or x4353 x4345 x4333 (not x4351) (not x4591))
+(or x4319 (not x4591) (not x4590) (not x4589) x4592)
+(or (not x4592) (not x4319))
+(or (not x4592) x4591)
+(or (not x4592) x4590)
+(or (not x4592) x4589)
+(or x4585 (not x4592))
+(or x4585 x4586)
+(or x4585 (not x4593))
+(or x4585 (not x4594))
+(or x4585 x4326)
+(or x4585 (not x4595))
+(or x4585 (not x4596))
+(or x4592 (not x4586) x4593 x4594 (not x4326) x4595 x4596 (not x4585))
+(or (not x4585) (not x4586) x4431)
+(or (not x4431) x4585)
+(or (not x4431) x4586)
+(or x4597 (not x4345))
+(or x4597 x4342)
+(or x4345 (not x4342) (not x4597))
+(or x4598 (not x4353))
+(or x4598 (not x4345))
+(or x4598 x4351)
+(or x4353 x4345 (not x4351) (not x4598))
+(or x4329 (not x4598) (not x4597) x4599)
+(or (not x4599) (not x4329))
+(or (not x4599) x4598)
+(or (not x4599) x4597)
+(or x4600 (not x4599))
+(or x4600 x4333)
+(or x4600 (not x4593))
+(or x4600 (not x4594))
+(or x4600 x4326)
+(or x4600 (not x4595))
+(or x4600 (not x4596))
+(or x4599 (not x4333) x4593 x4594 (not x4326) x4595 x4596 (not x4600))
+(or (not x4600) (not x4333) x4438)
+(or (not x4438) x4600)
+(or (not x4438) x4333)
+(or x4601 (not x4353))
+(or x4601 x4351)
+(or x4353 (not x4351) (not x4601))
+(or x4342 (not x4601) x4602)
+(or (not x4602) (not x4342))
+(or (not x4602) x4601)
+(or x4603 (not x4602))
+(or x4603 x4345)
+(or x4603 (not x4593))
+(or x4603 (not x4594))
+(or x4603 x4326)
+(or x4603 (not x4595))
+(or x4603 (not x4596))
+(or x4602 (not x4345) x4593 x4594 (not x4326) x4595 x4596 (not x4603))
+(or (not x4603) (not x4345) x4445)
+(or (not x4445) x4603)
+(or (not x4445) x4345)
+(or x4604 x4351)
+(or x4604 x4353)
+(or x4604 (not x4593))
+(or x4604 (not x4594))
+(or x4604 x4326)
+(or x4604 (not x4595))
+(or x4604 (not x4596))
+(or (not x4351) (not x4353) x4593 x4594 (not x4326) x4595 x4596 (not x4604))
+(or (not x4604) (not x4353) x4452)
+(or (not x4452) x4604)
+(or (not x4452) x4353)
+(or x4605 (not x4452))
+(or x4605 (not x4445))
+(or x4605 (not x4438))
+(or x4605 (not x4431))
+(or x4452 x4445 x4438 x4431 (not x4605))
+(or (not x4351) (not x4605) x4560)
+(or (not x4560) x4351)
+(or (not x4560) x4605)
+(or x4606 (not x4560))
+(or x4606 (not x4561))
+(or x4606 (not x4562))
+(or x4606 (not x4563))
+(or x4606 x4351)
+(or x4560 x4561 x4562 x4563 (not x4351) (not x4606))
+(or (not x4325) (not x4607) (not x4457) x4569)
+(or (not x4569) x4325)
+(or (not x4569) x4607)
+(or (not x4569) x4457)
+(or x4608 (not x4473))
+(or x4608 (not x4466))
+(or x4473 x4466 (not x4608))
+(or (not x4340) (not x4608) x4568)
+(or (not x4568) x4340)
+(or (not x4568) x4608)
+(or x4609 (not x4480))
+(or x4609 (not x4473))
+(or x4609 (not x4466))
+(or x4480 x4473 x4466 (not x4609))
+(or (not x4349) (not x4609) x4567)
+(or (not x4567) x4349)
+(or (not x4567) x4609)
+(or x4610 (not x4361))
+(or x4610 x4340)
+(or x4361 (not x4340) (not x4610))
+(or x4611 (not x4369))
+(or x4611 (not x4361))
+(or x4611 x4349)
+(or x4369 x4361 (not x4349) (not x4611))
+(or x4612 (not x4377))
+(or x4612 (not x4369))
+(or x4612 (not x4361))
+(or x4612 x4375)
+(or x4377 x4369 x4361 (not x4375) (not x4612))
+(or x4325 (not x4612) (not x4611) (not x4610) x4613)
+(or (not x4613) (not x4325))
+(or (not x4613) x4612)
+(or (not x4613) x4611)
+(or (not x4613) x4610)
+(or x4607 (not x4613))
+(or x4607 x4457)
+(or x4607 (not x4593))
+(or x4607 (not x4594))
+(or x4607 x4326)
+(or x4607 (not x4595))
+(or x4607 (not x4596))
+(or x4613 (not x4457) x4593 x4594 (not x4326) x4595 x4596 (not x4607))
+(or (not x4607) (not x4457) x4466)
+(or (not x4466) x4607)
+(or (not x4466) x4457)
+(or x4614 (not x4369))
+(or x4614 x4349)
+(or x4369 (not x4349) (not x4614))
+(or x4615 (not x4377))
+(or x4615 (not x4369))
+(or x4615 x4375)
+(or x4377 x4369 (not x4375) (not x4615))
+(or x4340 (not x4615) (not x4614) x4616)
+(or (not x4616) (not x4340))
+(or (not x4616) x4615)
+(or (not x4616) x4614)
+(or x4617 (not x4616))
+(or x4617 x4361)
+(or x4617 (not x4593))
+(or x4617 (not x4594))
+(or x4617 x4326)
+(or x4617 (not x4595))
+(or x4617 (not x4596))
+(or x4616 (not x4361) x4593 x4594 (not x4326) x4595 x4596 (not x4617))
+(or (not x4617) (not x4361) x4473)
+(or (not x4473) x4617)
+(or (not x4473) x4361)
+(or x4618 (not x4377))
+(or x4618 x4375)
+(or x4377 (not x4375) (not x4618))
+(or x4349 (not x4618) x4619)
+(or (not x4619) (not x4349))
+(or (not x4619) x4618)
+(or x4620 (not x4619))
+(or x4620 x4369)
+(or x4620 (not x4593))
+(or x4620 (not x4594))
+(or x4620 x4326)
+(or x4620 (not x4595))
+(or x4620 (not x4596))
+(or x4619 (not x4369) x4593 x4594 (not x4326) x4595 x4596 (not x4620))
+(or (not x4620) (not x4369) x4480)
+(or (not x4480) x4620)
+(or (not x4480) x4369)
+(or x4621 x4375)
+(or x4621 x4377)
+(or x4621 (not x4593))
+(or x4621 (not x4594))
+(or x4621 x4326)
+(or x4621 (not x4595))
+(or x4621 (not x4596))
+(or (not x4375) (not x4377) x4593 x4594 (not x4326) x4595 x4596 (not x4621))
+(or (not x4621) (not x4377) x4487)
+(or (not x4487) x4621)
+(or (not x4487) x4377)
+(or x4622 (not x4487))
+(or x4622 (not x4480))
+(or x4622 (not x4473))
+(or x4622 (not x4466))
+(or x4487 x4480 x4473 x4466 (not x4622))
+(or (not x4375) (not x4622) x4566)
+(or (not x4566) x4375)
+(or (not x4566) x4622)
+(or x4623 (not x4566))
+(or x4623 (not x4567))
+(or x4623 (not x4568))
+(or x4623 (not x4569))
+(or x4623 x4375)
+(or x4566 x4567 x4568 x4569 (not x4375) (not x4623))
+(or (not x4357) (not x4624) (not x4492) x4575)
+(or (not x4575) x4357)
+(or (not x4575) x4624)
+(or (not x4575) x4492)
+(or x4625 (not x4508))
+(or x4625 (not x4501))
+(or x4508 x4501 (not x4625))
+(or (not x4365) (not x4625) x4574)
+(or (not x4574) x4365)
+(or (not x4574) x4625)
+(or x4626 (not x4515))
+(or x4626 (not x4508))
+(or x4626 (not x4501))
+(or x4515 x4508 x4501 (not x4626))
+(or (not x4373) (not x4626) x4573)
+(or (not x4573) x4373)
+(or (not x4573) x4626)
+(or x4627 (not x4385))
+(or x4627 x4365)
+(or x4385 (not x4365) (not x4627))
+(or x4628 (not x4393))
+(or x4628 (not x4385))
+(or x4628 x4373)
+(or x4393 x4385 (not x4373) (not x4628))
+(or x4629 (not x4401))
+(or x4629 (not x4393))
+(or x4629 (not x4385))
+(or x4629 x4399)
+(or x4401 x4393 x4385 (not x4399) (not x4629))
+(or x4357 (not x4629) (not x4628) (not x4627) x4630)
+(or (not x4630) (not x4357))
+(or (not x4630) x4629)
+(or (not x4630) x4628)
+(or (not x4630) x4627)
+(or x4624 (not x4630))
+(or x4624 x4492)
+(or x4624 (not x4593))
+(or x4624 (not x4594))
+(or x4624 x4326)
+(or x4624 (not x4595))
+(or x4624 (not x4596))
+(or x4630 (not x4492) x4593 x4594 (not x4326) x4595 x4596 (not x4624))
+(or (not x4624) (not x4492) x4501)
+(or (not x4501) x4624)
+(or (not x4501) x4492)
+(or x4631 (not x4393))
+(or x4631 x4373)
+(or x4393 (not x4373) (not x4631))
+(or x4632 (not x4401))
+(or x4632 (not x4393))
+(or x4632 x4399)
+(or x4401 x4393 (not x4399) (not x4632))
+(or x4365 (not x4632) (not x4631) x4633)
+(or (not x4633) (not x4365))
+(or (not x4633) x4632)
+(or (not x4633) x4631)
+(or x4634 (not x4633))
+(or x4634 x4385)
+(or x4634 (not x4593))
+(or x4634 (not x4594))
+(or x4634 x4326)
+(or x4634 (not x4595))
+(or x4634 (not x4596))
+(or x4633 (not x4385) x4593 x4594 (not x4326) x4595 x4596 (not x4634))
+(or (not x4634) (not x4385) x4508)
+(or (not x4508) x4634)
+(or (not x4508) x4385)
+(or x4635 (not x4401))
+(or x4635 x4399)
+(or x4401 (not x4399) (not x4635))
+(or x4373 (not x4635) x4636)
+(or (not x4636) (not x4373))
+(or (not x4636) x4635)
+(or x4637 (not x4636))
+(or x4637 x4393)
+(or x4637 (not x4593))
+(or x4637 (not x4594))
+(or x4637 x4326)
+(or x4637 (not x4595))
+(or x4637 (not x4596))
+(or x4636 (not x4393) x4593 x4594 (not x4326) x4595 x4596 (not x4637))
+(or (not x4637) (not x4393) x4515)
+(or (not x4515) x4637)
+(or (not x4515) x4393)
+(or x4638 x4399)
+(or x4638 x4401)
+(or x4638 (not x4593))
+(or x4638 (not x4594))
+(or x4638 x4326)
+(or x4638 (not x4595))
+(or x4638 (not x4596))
+(or (not x4399) (not x4401) x4593 x4594 (not x4326) x4595 x4596 (not x4638))
+(or (not x4638) (not x4401) x4522)
+(or (not x4522) x4638)
+(or (not x4522) x4401)
+(or x4639 (not x4522))
+(or x4639 (not x4515))
+(or x4639 (not x4508))
+(or x4639 (not x4501))
+(or x4522 x4515 x4508 x4501 (not x4639))
+(or (not x4399) (not x4639) x4572)
+(or (not x4572) x4399)
+(or (not x4572) x4639)
+(or x4640 (not x4572))
+(or x4640 (not x4573))
+(or x4640 (not x4574))
+(or x4640 (not x4575))
+(or x4640 x4399)
+(or x4572 x4573 x4574 x4575 (not x4399) (not x4640))
+(or (not x4381) (not x4641) (not x4527) x4581)
+(or (not x4581) x4381)
+(or (not x4581) x4641)
+(or (not x4581) x4527)
+(or x4642 (not x4543))
+(or x4642 (not x4536))
+(or x4543 x4536 (not x4642))
+(or (not x4389) (not x4642) x4580)
+(or (not x4580) x4389)
+(or (not x4580) x4642)
+(or x4643 (not x4550))
+(or x4643 (not x4543))
+(or x4643 (not x4536))
+(or x4550 x4543 x4536 (not x4643))
+(or (not x4397) (not x4643) x4579)
+(or (not x4579) x4397)
+(or (not x4579) x4643)
+(or x4644 (not x4408))
+(or x4644 x4389)
+(or x4408 (not x4389) (not x4644))
+(or x4645 (not x4415))
+(or x4645 (not x4408))
+(or x4645 x4397)
+(or x4415 x4408 (not x4397) (not x4645))
+(or x4646 (not x4422))
+(or x4646 (not x4415))
+(or x4646 (not x4408))
+(or x4646 x4420)
+(or x4422 x4415 x4408 (not x4420) (not x4646))
+(or x4381 (not x4646) (not x4645) (not x4644) x4647)
+(or (not x4647) (not x4381))
+(or (not x4647) x4646)
+(or (not x4647) x4645)
+(or (not x4647) x4644)
+(or x4641 (not x4647))
+(or x4641 x4527)
+(or x4641 (not x4593))
+(or x4641 (not x4594))
+(or x4641 x4326)
+(or x4641 (not x4595))
+(or x4641 (not x4596))
+(or x4647 (not x4527) x4593 x4594 (not x4326) x4595 x4596 (not x4641))
+(or (not x4641) (not x4527) x4536)
+(or (not x4536) x4641)
+(or (not x4536) x4527)
+(or x4648 (not x4415))
+(or x4648 x4397)
+(or x4415 (not x4397) (not x4648))
+(or x4649 (not x4422))
+(or x4649 (not x4415))
+(or x4649 x4420)
+(or x4422 x4415 (not x4420) (not x4649))
+(or x4389 (not x4649) (not x4648) x4650)
+(or (not x4650) (not x4389))
+(or (not x4650) x4649)
+(or (not x4650) x4648)
+(or x4651 (not x4650))
+(or x4651 x4408)
+(or x4651 (not x4593))
+(or x4651 (not x4594))
+(or x4651 x4326)
+(or x4651 (not x4595))
+(or x4651 (not x4596))
+(or x4650 (not x4408) x4593 x4594 (not x4326) x4595 x4596 (not x4651))
+(or (not x4651) (not x4408) x4543)
+(or (not x4543) x4651)
+(or (not x4543) x4408)
+(or x4652 (not x4422))
+(or x4652 x4420)
+(or x4422 (not x4420) (not x4652))
+(or x4397 (not x4652) x4653)
+(or (not x4653) (not x4397))
+(or (not x4653) x4652)
+(or x4654 (not x4653))
+(or x4654 x4415)
+(or x4654 (not x4593))
+(or x4654 (not x4594))
+(or x4654 x4326)
+(or x4654 (not x4595))
+(or x4654 (not x4596))
+(or x4653 (not x4415) x4593 x4594 (not x4326) x4595 x4596 (not x4654))
+(or (not x4654) (not x4415) x4550)
+(or (not x4550) x4654)
+(or (not x4550) x4415)
+(or x4655 x4420)
+(or x4655 x4422)
+(or x4655 (not x4593))
+(or x4655 (not x4594))
+(or x4655 x4326)
+(or x4655 (not x4595))
+(or x4655 (not x4596))
+(or (not x4420) (not x4422) x4593 x4594 (not x4326) x4595 x4596 (not x4655))
+(or (not x4655) (not x4422) x4557)
+(or (not x4557) x4655)
+(or (not x4557) x4422)
+(or x4656 (not x4557))
+(or x4656 (not x4550))
+(or x4656 (not x4543))
+(or x4656 (not x4536))
+(or x4557 x4550 x4543 x4536 (not x4656))
+(or (not x4420) (not x4656) x4578)
+(or (not x4578) x4420)
+(or (not x4578) x4656)
+(or x4657 (not x4578))
+(or x4657 (not x4579))
+(or x4657 (not x4580))
+(or x4657 (not x4581))
+(or x4657 x4420)
+(or x4578 x4579 x4580 x4581 (not x4420) (not x4657))
+(or (not x4657) (not x4640) (not x4623) (not x4606) x4658)
+(or (not x4658) x4657)
+(or (not x4658) x4640)
+(or (not x4658) x4623)
+(or (not x4658) x4606)
+(or x4420 x4397 x4389 x4381 x4399 x4373 x4365 x4357 x4375 x4349 x4340 x4325 x4351 x4342 x4329 x4319 x4584)
+(or (not x4584) (not x4420))
+(or (not x4584) (not x4397))
+(or (not x4584) (not x4389))
+(or (not x4584) (not x4381))
+(or (not x4584) (not x4399))
+(or (not x4584) (not x4373))
+(or (not x4584) (not x4365))
+(or (not x4584) (not x4357))
+(or (not x4584) (not x4375))
+(or (not x4584) (not x4349))
+(or (not x4584) (not x4340))
+(or (not x4584) (not x4325))
+(or (not x4584) (not x4351))
+(or (not x4584) (not x4342))
+(or (not x4584) (not x4329))
+(or (not x4584) (not x4319))
+(or x4322 (not x4583))
+(or x4322 (not x4584))
+(or x4322 x4326)
+(or x4322 (not x4658))
+(or x4583 x4584 (not x4326) x4658 (not x4322))
+(or (not x4420) (not x4320) (not x4321) (not x4322) (not x4323) x4659)
+(or (not x4659) x4420)
+(or (not x4659) x4320)
+(or (not x4659) x4321)
+(or (not x4659) x4322)
+(or (not x4659) x4323)
+(or (not x4660) (not x4661) (not x4662) (not x4663) (not x4351) x4664)
+(or (not x4664) x4660)
+(or (not x4664) x4661)
+(or (not x4664) x4662)
+(or (not x4664) x4663)
+(or (not x4664) x4351)
+(or (not x4665) (not x4666) (not x4667) (not x4668) (not x4375) x4669)
+(or (not x4669) x4665)
+(or (not x4669) x4666)
+(or (not x4669) x4667)
+(or (not x4669) x4668)
+(or (not x4669) x4375)
+(or (not x4670) (not x4671) (not x4672) (not x4673) (not x4399) x4674)
+(or (not x4674) x4670)
+(or (not x4674) x4671)
+(or (not x4674) x4672)
+(or (not x4674) x4673)
+(or (not x4674) x4399)
+(or (not x4675) (not x4676) (not x4677) (not x4678) (not x4420) x4679)
+(or (not x4679) x4675)
+(or (not x4679) x4676)
+(or (not x4679) x4677)
+(or (not x4679) x4678)
+(or (not x4679) x4420)
+(or x4327 (not x4679))
+(or x4327 (not x4674))
+(or x4327 (not x4669))
+(or x4327 (not x4664))
+(or x4679 x4674 x4669 x4664 (not x4327))
+(or (not x4351) (not x4321) (not x4320) (not x4326) (not x4327) x4680)
+(or (not x4680) x4351)
+(or (not x4680) x4321)
+(or (not x4680) x4320)
+(or (not x4680) x4326)
+(or (not x4680) x4327)
+(or x4681 (not x4342))
+(or x4681 (not x4329))
+(or x4681 (not x4319))
+(or x4342 x4329 x4319 (not x4681))
+(or x4663 x4319)
+(or x4663 (not x4682))
+(or x4663 x4586)
+(or (not x4319) x4682 (not x4586) (not x4663))
+(or (not x4683) (not x4684) x4685)
+(or (not x4685) x4683)
+(or (not x4685) x4684)
+(or x4662 x4329)
+(or x4662 (not x4685))
+(or (not x4329) x4685 (not x4662))
+(or (not x4686) (not x4683) (not x4684) x4687)
+(or (not x4687) x4686)
+(or (not x4687) x4683)
+(or (not x4687) x4684)
+(or x4661 x4342)
+(or x4661 (not x4687))
+(or (not x4342) x4687 (not x4661))
+(or (not x4688) (not x4586) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4682)
+(or (not x4682) x4688)
+(or (not x4682) x4586)
+(or (not x4682) x4334)
+(or (not x4682) x4335)
+(or (not x4682) x4326)
+(or (not x4682) x4304)
+(or (not x4682) x4336)
+(or x4684 (not x4682))
+(or x4684 x4586)
+(or x4682 (not x4586) (not x4684))
+(or x4345 (not x4342) x4689)
+(or (not x4689) (not x4345))
+(or (not x4689) x4342)
+(or x4353 x4345 (not x4351) x4690)
+(or (not x4690) (not x4353))
+(or (not x4690) (not x4345))
+(or (not x4690) x4351)
+(or x4332 (not x4329))
+(or x4332 (not x4690))
+(or x4332 (not x4689))
+(or x4329 x4690 x4689 (not x4332))
+(or (not x4332) (not x4333) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4691)
+(or (not x4691) x4332)
+(or (not x4691) x4333)
+(or (not x4691) x4334)
+(or (not x4691) x4335)
+(or (not x4691) x4326)
+(or (not x4691) x4304)
+(or (not x4691) x4336)
+(or x4683 (not x4691))
+(or x4683 x4333)
+(or x4691 (not x4333) (not x4683))
+(or x4353 (not x4351) x4692)
+(or (not x4692) (not x4353))
+(or (not x4692) x4351)
+(or x4344 (not x4342))
+(or x4344 (not x4692))
+(or x4342 x4692 (not x4344))
+(or (not x4344) (not x4345) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4693)
+(or (not x4693) x4344)
+(or (not x4693) x4345)
+(or (not x4693) x4334)
+(or (not x4693) x4335)
+(or (not x4693) x4326)
+(or (not x4693) x4304)
+(or (not x4693) x4336)
+(or x4686 (not x4693))
+(or x4686 x4345)
+(or x4693 (not x4345) (not x4686))
+(or (not x4351) (not x4353) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4694)
+(or (not x4694) x4351)
+(or (not x4694) x4353)
+(or (not x4694) x4334)
+(or (not x4694) x4335)
+(or (not x4694) x4326)
+(or (not x4694) x4304)
+(or (not x4694) x4336)
+(or x4695 (not x4694))
+(or x4695 x4353)
+(or x4694 (not x4353) (not x4695))
+(or (not x4695) (not x4686) (not x4683) (not x4684) x4696)
+(or (not x4696) x4695)
+(or (not x4696) x4686)
+(or (not x4696) x4683)
+(or (not x4696) x4684)
+(or x4660 x4351)
+(or x4660 (not x4696))
+(or (not x4351) x4696 (not x4660))
+(or (not x4660) (not x4661) (not x4662) (not x4663) (not x4681) x4697)
+(or (not x4697) x4660)
+(or (not x4697) x4661)
+(or (not x4697) x4662)
+(or (not x4697) x4663)
+(or (not x4697) x4681)
+(or x4698 (not x4349))
+(or x4698 (not x4340))
+(or x4698 (not x4325))
+(or x4349 x4340 x4325 (not x4698))
+(or x4668 x4325)
+(or x4668 (not x4699))
+(or x4668 x4457)
+(or (not x4325) x4699 (not x4457) (not x4668))
+(or (not x4700) (not x4701) x4702)
+(or (not x4702) x4700)
+(or (not x4702) x4701)
+(or x4667 x4340)
+(or x4667 (not x4702))
+(or (not x4340) x4702 (not x4667))
+(or (not x4703) (not x4700) (not x4701) x4704)
+(or (not x4704) x4703)
+(or (not x4704) x4700)
+(or (not x4704) x4701)
+(or x4666 x4349)
+(or x4666 (not x4704))
+(or (not x4349) x4704 (not x4666))
+(or x4361 (not x4340) x4705)
+(or (not x4705) (not x4361))
+(or (not x4705) x4340)
+(or x4369 x4361 (not x4349) x4706)
+(or (not x4706) (not x4369))
+(or (not x4706) (not x4361))
+(or (not x4706) x4349)
+(or x4377 x4369 x4361 (not x4375) x4707)
+(or (not x4707) (not x4377))
+(or (not x4707) (not x4369))
+(or (not x4707) (not x4361))
+(or (not x4707) x4375)
+(or x4456 (not x4325))
+(or x4456 (not x4707))
+(or x4456 (not x4706))
+(or x4456 (not x4705))
+(or x4325 x4707 x4706 x4705 (not x4456))
+(or (not x4456) (not x4457) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4699)
+(or (not x4699) x4456)
+(or (not x4699) x4457)
+(or (not x4699) x4334)
+(or (not x4699) x4335)
+(or (not x4699) x4326)
+(or (not x4699) x4304)
+(or (not x4699) x4336)
+(or x4701 (not x4699))
+(or x4701 x4457)
+(or x4699 (not x4457) (not x4701))
+(or x4369 (not x4349) x4708)
+(or (not x4708) (not x4369))
+(or (not x4708) x4349)
+(or x4377 x4369 (not x4375) x4709)
+(or (not x4709) (not x4377))
+(or (not x4709) (not x4369))
+(or (not x4709) x4375)
+(or x4360 (not x4340))
+(or x4360 (not x4709))
+(or x4360 (not x4708))
+(or x4340 x4709 x4708 (not x4360))
+(or (not x4360) (not x4361) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4710)
+(or (not x4710) x4360)
+(or (not x4710) x4361)
+(or (not x4710) x4334)
+(or (not x4710) x4335)
+(or (not x4710) x4326)
+(or (not x4710) x4304)
+(or (not x4710) x4336)
+(or x4700 (not x4710))
+(or x4700 x4361)
+(or x4710 (not x4361) (not x4700))
+(or x4377 (not x4375) x4711)
+(or (not x4711) (not x4377))
+(or (not x4711) x4375)
+(or x4368 (not x4349))
+(or x4368 (not x4711))
+(or x4349 x4711 (not x4368))
+(or (not x4368) (not x4369) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4712)
+(or (not x4712) x4368)
+(or (not x4712) x4369)
+(or (not x4712) x4334)
+(or (not x4712) x4335)
+(or (not x4712) x4326)
+(or (not x4712) x4304)
+(or (not x4712) x4336)
+(or x4703 (not x4712))
+(or x4703 x4369)
+(or x4712 (not x4369) (not x4703))
+(or (not x4375) (not x4377) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4713)
+(or (not x4713) x4375)
+(or (not x4713) x4377)
+(or (not x4713) x4334)
+(or (not x4713) x4335)
+(or (not x4713) x4326)
+(or (not x4713) x4304)
+(or (not x4713) x4336)
+(or x4714 (not x4713))
+(or x4714 x4377)
+(or x4713 (not x4377) (not x4714))
+(or (not x4714) (not x4703) (not x4700) (not x4701) x4715)
+(or (not x4715) x4714)
+(or (not x4715) x4703)
+(or (not x4715) x4700)
+(or (not x4715) x4701)
+(or x4665 x4375)
+(or x4665 (not x4715))
+(or (not x4375) x4715 (not x4665))
+(or (not x4665) (not x4666) (not x4667) (not x4668) (not x4698) x4716)
+(or (not x4716) x4665)
+(or (not x4716) x4666)
+(or (not x4716) x4667)
+(or (not x4716) x4668)
+(or (not x4716) x4698)
+(or x4717 (not x4373))
+(or x4717 (not x4365))
+(or x4717 (not x4357))
+(or x4373 x4365 x4357 (not x4717))
+(or x4673 x4357)
+(or x4673 (not x4718))
+(or x4673 x4492)
+(or (not x4357) x4718 (not x4492) (not x4673))
+(or (not x4719) (not x4720) x4721)
+(or (not x4721) x4719)
+(or (not x4721) x4720)
+(or x4672 x4365)
+(or x4672 (not x4721))
+(or (not x4365) x4721 (not x4672))
+(or (not x4722) (not x4719) (not x4720) x4723)
+(or (not x4723) x4722)
+(or (not x4723) x4719)
+(or (not x4723) x4720)
+(or x4671 x4373)
+(or x4671 (not x4723))
+(or (not x4373) x4723 (not x4671))
+(or x4385 (not x4365) x4724)
+(or (not x4724) (not x4385))
+(or (not x4724) x4365)
+(or x4393 x4385 (not x4373) x4725)
+(or (not x4725) (not x4393))
+(or (not x4725) (not x4385))
+(or (not x4725) x4373)
+(or x4401 x4393 x4385 (not x4399) x4726)
+(or (not x4726) (not x4401))
+(or (not x4726) (not x4393))
+(or (not x4726) (not x4385))
+(or (not x4726) x4399)
+(or x4491 (not x4357))
+(or x4491 (not x4726))
+(or x4491 (not x4725))
+(or x4491 (not x4724))
+(or x4357 x4726 x4725 x4724 (not x4491))
+(or (not x4491) (not x4492) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4718)
+(or (not x4718) x4491)
+(or (not x4718) x4492)
+(or (not x4718) x4334)
+(or (not x4718) x4335)
+(or (not x4718) x4326)
+(or (not x4718) x4304)
+(or (not x4718) x4336)
+(or x4720 (not x4718))
+(or x4720 x4492)
+(or x4718 (not x4492) (not x4720))
+(or x4393 (not x4373) x4727)
+(or (not x4727) (not x4393))
+(or (not x4727) x4373)
+(or x4401 x4393 (not x4399) x4728)
+(or (not x4728) (not x4401))
+(or (not x4728) (not x4393))
+(or (not x4728) x4399)
+(or x4384 (not x4365))
+(or x4384 (not x4728))
+(or x4384 (not x4727))
+(or x4365 x4728 x4727 (not x4384))
+(or (not x4384) (not x4385) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4729)
+(or (not x4729) x4384)
+(or (not x4729) x4385)
+(or (not x4729) x4334)
+(or (not x4729) x4335)
+(or (not x4729) x4326)
+(or (not x4729) x4304)
+(or (not x4729) x4336)
+(or x4719 (not x4729))
+(or x4719 x4385)
+(or x4729 (not x4385) (not x4719))
+(or x4401 (not x4399) x4730)
+(or (not x4730) (not x4401))
+(or (not x4730) x4399)
+(or x4392 (not x4373))
+(or x4392 (not x4730))
+(or x4373 x4730 (not x4392))
+(or (not x4392) (not x4393) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4731)
+(or (not x4731) x4392)
+(or (not x4731) x4393)
+(or (not x4731) x4334)
+(or (not x4731) x4335)
+(or (not x4731) x4326)
+(or (not x4731) x4304)
+(or (not x4731) x4336)
+(or x4722 (not x4731))
+(or x4722 x4393)
+(or x4731 (not x4393) (not x4722))
+(or (not x4399) (not x4401) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4732)
+(or (not x4732) x4399)
+(or (not x4732) x4401)
+(or (not x4732) x4334)
+(or (not x4732) x4335)
+(or (not x4732) x4326)
+(or (not x4732) x4304)
+(or (not x4732) x4336)
+(or x4733 (not x4732))
+(or x4733 x4401)
+(or x4732 (not x4401) (not x4733))
+(or (not x4733) (not x4722) (not x4719) (not x4720) x4734)
+(or (not x4734) x4733)
+(or (not x4734) x4722)
+(or (not x4734) x4719)
+(or (not x4734) x4720)
+(or x4670 x4399)
+(or x4670 (not x4734))
+(or (not x4399) x4734 (not x4670))
+(or (not x4670) (not x4671) (not x4672) (not x4673) (not x4717) x4735)
+(or (not x4735) x4670)
+(or (not x4735) x4671)
+(or (not x4735) x4672)
+(or (not x4735) x4673)
+(or (not x4735) x4717)
+(or x4736 (not x4397))
+(or x4736 (not x4389))
+(or x4736 (not x4381))
+(or x4397 x4389 x4381 (not x4736))
+(or x4678 x4381)
+(or x4678 (not x4737))
+(or x4678 x4527)
+(or (not x4381) x4737 (not x4527) (not x4678))
+(or (not x4738) (not x4739) x4740)
+(or (not x4740) x4738)
+(or (not x4740) x4739)
+(or x4677 x4389)
+(or x4677 (not x4740))
+(or (not x4389) x4740 (not x4677))
+(or (not x4741) (not x4738) (not x4739) x4742)
+(or (not x4742) x4741)
+(or (not x4742) x4738)
+(or (not x4742) x4739)
+(or x4676 x4397)
+(or x4676 (not x4742))
+(or (not x4397) x4742 (not x4676))
+(or x4408 (not x4389) x4743)
+(or (not x4743) (not x4408))
+(or (not x4743) x4389)
+(or x4415 x4408 (not x4397) x4744)
+(or (not x4744) (not x4415))
+(or (not x4744) (not x4408))
+(or (not x4744) x4397)
+(or x4422 x4415 x4408 (not x4420) x4745)
+(or (not x4745) (not x4422))
+(or (not x4745) (not x4415))
+(or (not x4745) (not x4408))
+(or (not x4745) x4420)
+(or x4526 (not x4381))
+(or x4526 (not x4745))
+(or x4526 (not x4744))
+(or x4526 (not x4743))
+(or x4381 x4745 x4744 x4743 (not x4526))
+(or (not x4526) (not x4527) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4737)
+(or (not x4737) x4526)
+(or (not x4737) x4527)
+(or (not x4737) x4334)
+(or (not x4737) x4335)
+(or (not x4737) x4326)
+(or (not x4737) x4304)
+(or (not x4737) x4336)
+(or x4739 (not x4737))
+(or x4739 x4527)
+(or x4737 (not x4527) (not x4739))
+(or x4415 (not x4397) x4746)
+(or (not x4746) (not x4415))
+(or (not x4746) x4397)
+(or x4422 x4415 (not x4420) x4747)
+(or (not x4747) (not x4422))
+(or (not x4747) (not x4415))
+(or (not x4747) x4420)
+(or x4407 (not x4389))
+(or x4407 (not x4747))
+(or x4407 (not x4746))
+(or x4389 x4747 x4746 (not x4407))
+(or (not x4407) (not x4408) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4748)
+(or (not x4748) x4407)
+(or (not x4748) x4408)
+(or (not x4748) x4334)
+(or (not x4748) x4335)
+(or (not x4748) x4326)
+(or (not x4748) x4304)
+(or (not x4748) x4336)
+(or x4738 (not x4748))
+(or x4738 x4408)
+(or x4748 (not x4408) (not x4738))
+(or x4422 (not x4420) x4749)
+(or (not x4749) (not x4422))
+(or (not x4749) x4420)
+(or x4414 (not x4397))
+(or x4414 (not x4749))
+(or x4397 x4749 (not x4414))
+(or (not x4414) (not x4415) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4750)
+(or (not x4750) x4414)
+(or (not x4750) x4415)
+(or (not x4750) x4334)
+(or (not x4750) x4335)
+(or (not x4750) x4326)
+(or (not x4750) x4304)
+(or (not x4750) x4336)
+(or x4741 (not x4750))
+(or x4741 x4415)
+(or x4750 (not x4415) (not x4741))
+(or (not x4420) (not x4422) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4751)
+(or (not x4751) x4420)
+(or (not x4751) x4422)
+(or (not x4751) x4334)
+(or (not x4751) x4335)
+(or (not x4751) x4326)
+(or (not x4751) x4304)
+(or (not x4751) x4336)
+(or x4752 (not x4751))
+(or x4752 x4422)
+(or x4751 (not x4422) (not x4752))
+(or (not x4752) (not x4741) (not x4738) (not x4739) x4753)
+(or (not x4753) x4752)
+(or (not x4753) x4741)
+(or (not x4753) x4738)
+(or (not x4753) x4739)
+(or x4675 x4420)
+(or x4675 (not x4753))
+(or (not x4420) x4753 (not x4675))
+(or (not x4675) (not x4676) (not x4677) (not x4678) (not x4736) x4754)
+(or (not x4754) x4675)
+(or (not x4754) x4676)
+(or (not x4754) x4677)
+(or (not x4754) x4678)
+(or (not x4754) x4736)
+(or x4330 (not x4754))
+(or x4330 (not x4735))
+(or x4330 (not x4716))
+(or x4330 (not x4697))
+(or x4754 x4735 x4716 x4697 (not x4330))
+(or (not x4755) (not x4756) x4593)
+(or (not x4593) x4755)
+(or (not x4593) x4756)
+(or x4321 (not x4593))
+(or x4321 (not x4594))
+(or x4321 x4326)
+(or x4321 (not x4595))
+(or x4321 (not x4596))
+(or x4593 x4594 (not x4326) x4595 x4596 (not x4321))
+(or (not x4319) (not x4321) (not x4320) (not x4326) (not x4330) x4757)
+(or (not x4757) x4319)
+(or (not x4757) x4321)
+(or (not x4757) x4320)
+(or (not x4757) x4326)
+(or (not x4757) x4330)
+(or x4320 (not x4420))
+(or x4320 (not x4397))
+(or x4320 (not x4389))
+(or x4320 (not x4381))
+(or x4320 (not x4399))
+(or x4320 (not x4373))
+(or x4320 (not x4365))
+(or x4320 (not x4357))
+(or x4320 (not x4375))
+(or x4320 (not x4349))
+(or x4320 (not x4340))
+(or x4320 (not x4325))
+(or x4320 (not x4351))
+(or x4320 (not x4342))
+(or x4320 (not x4329))
+(or x4320 (not x4319))
+(or x4420 x4397 x4389 x4381 x4399 x4373 x4365 x4357 x4375 x4349 x4340 x4325 x4351 x4342 x4329 x4319 (not x4320))
+(or x4333 (not x4329) x4758)
+(or (not x4758) (not x4333))
+(or (not x4758) x4329)
+(or x4345 x4333 (not x4342) x4759)
+(or (not x4759) (not x4345))
+(or (not x4759) (not x4333))
+(or (not x4759) x4342)
+(or x4353 x4345 x4333 (not x4351) x4760)
+(or (not x4760) (not x4353))
+(or (not x4760) (not x4345))
+(or (not x4760) (not x4333))
+(or (not x4760) x4351)
+(or x4688 (not x4319))
+(or x4688 (not x4760))
+(or x4688 (not x4759))
+(or x4688 (not x4758))
+(or x4319 x4760 x4759 x4758 (not x4688))
+(or (not x4688) (not x4586) (not x4320) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4761)
+(or (not x4761) x4688)
+(or (not x4761) x4586)
+(or (not x4761) x4320)
+(or (not x4761) x4334)
+(or (not x4761) x4335)
+(or (not x4761) x4326)
+(or (not x4761) x4304)
+(or (not x4761) x4336)
+(or x4762 (not x4761))
+(or x4762 (not x4757))
+(or x4762 (not x4680))
+(or x4762 (not x4659))
+(or x4762 (not x4584))
+(or x4761 x4757 x4680 x4659 x4584 (not x4762))
+(or (not x4763) (not x4764) (not x4765) (not x4766) (not x4767) x4768)
+(or (not x4768) x4763)
+(or (not x4768) x4764)
+(or (not x4768) x4765)
+(or (not x4768) x4766)
+(or (not x4768) x4767)
+(or (not x4769) (not x4765) (not x4764) (not x4326) (not x4770) x4771)
+(or (not x4771) x4769)
+(or (not x4771) x4765)
+(or (not x4771) x4764)
+(or (not x4771) x4326)
+(or (not x4771) x4770)
+(or (not x4772) (not x4765) (not x4764) (not x4326) (not x4773) x4774)
+(or (not x4774) x4772)
+(or (not x4774) x4765)
+(or (not x4774) x4764)
+(or (not x4774) x4326)
+(or (not x4774) x4773)
+(or (not x4775) (not x4776) (not x4764) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x4778)
+(or (not x4778) x4775)
+(or (not x4778) x4776)
+(or (not x4778) x4764)
+(or (not x4778) x4326)
+(or (not x4778) x4304)
+(or (not x4778) x4336)
+(or (not x4778) x4756)
+(or (not x4778) x4777)
+(or x4779 (not x4778))
+(or x4779 (not x4774))
+(or x4779 (not x4771))
+(or x4779 (not x4768))
+(or x4778 x4774 x4771 x4768 (not x4779))
+(or (not x4772) (not x4764) (not x4765) (not x4766) (not x4767) x4780)
+(or (not x4780) x4772)
+(or (not x4780) x4764)
+(or (not x4780) x4765)
+(or (not x4780) x4766)
+(or (not x4780) x4767)
+(or (not x4781) (not x4765) (not x4764) (not x4326) (not x4770) x4782)
+(or (not x4782) x4781)
+(or (not x4782) x4765)
+(or (not x4782) x4764)
+(or (not x4782) x4326)
+(or (not x4782) x4770)
+(or (not x4783) (not x4765) (not x4764) (not x4326) (not x4773) x4784)
+(or (not x4784) x4783)
+(or (not x4784) x4765)
+(or (not x4784) x4764)
+(or (not x4784) x4326)
+(or (not x4784) x4773)
+(or (not x4785) (not x4786) (not x4764) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x4787)
+(or (not x4787) x4785)
+(or (not x4787) x4786)
+(or (not x4787) x4764)
+(or (not x4787) x4326)
+(or (not x4787) x4304)
+(or (not x4787) x4336)
+(or (not x4787) x4756)
+(or (not x4787) x4777)
+(or x4788 (not x4787))
+(or x4788 (not x4784))
+(or x4788 (not x4782))
+(or x4788 (not x4780))
+(or x4787 x4784 x4782 x4780 (not x4788))
+(or (not x4783) (not x4764) (not x4765) (not x4766) (not x4767) x4789)
+(or (not x4789) x4783)
+(or (not x4789) x4764)
+(or (not x4789) x4765)
+(or (not x4789) x4766)
+(or (not x4789) x4767)
+(or (not x4790) (not x4765) (not x4764) (not x4326) (not x4770) x4791)
+(or (not x4791) x4790)
+(or (not x4791) x4765)
+(or (not x4791) x4764)
+(or (not x4791) x4326)
+(or (not x4791) x4770)
+(or (not x4792) (not x4765) (not x4764) (not x4326) (not x4773) x4793)
+(or (not x4793) x4792)
+(or (not x4793) x4765)
+(or (not x4793) x4764)
+(or (not x4793) x4326)
+(or (not x4793) x4773)
+(or (not x4792) (not x4794) (not x4764) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x4795)
+(or (not x4795) x4792)
+(or (not x4795) x4794)
+(or (not x4795) x4764)
+(or (not x4795) x4326)
+(or (not x4795) x4304)
+(or (not x4795) x4336)
+(or (not x4795) x4756)
+(or (not x4795) x4777)
+(or x4796 (not x4795))
+(or x4796 (not x4793))
+(or x4796 (not x4791))
+(or x4796 (not x4789))
+(or x4795 x4793 x4791 x4789 (not x4796))
+(or (not x4769) (not x4764) (not x4765) (not x4766) (not x4767) x4797)
+(or (not x4797) x4769)
+(or (not x4797) x4764)
+(or (not x4797) x4765)
+(or (not x4797) x4766)
+(or (not x4797) x4767)
+(or (not x4798) (not x4765) (not x4764) (not x4326) (not x4770) x4799)
+(or (not x4799) x4798)
+(or (not x4799) x4765)
+(or (not x4799) x4764)
+(or (not x4799) x4326)
+(or (not x4799) x4770)
+(or (not x4781) (not x4765) (not x4764) (not x4326) (not x4773) x4800)
+(or (not x4800) x4781)
+(or (not x4800) x4765)
+(or (not x4800) x4764)
+(or (not x4800) x4326)
+(or (not x4800) x4773)
+(or (not x4801) (not x4802) (not x4764) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x4803)
+(or (not x4803) x4801)
+(or (not x4803) x4802)
+(or (not x4803) x4764)
+(or (not x4803) x4326)
+(or (not x4803) x4304)
+(or (not x4803) x4336)
+(or (not x4803) x4756)
+(or (not x4803) x4777)
+(or x4804 (not x4803))
+(or x4804 (not x4800))
+(or x4804 (not x4799))
+(or x4804 (not x4797))
+(or x4803 x4800 x4799 x4797 (not x4804))
+(or (not x4781) (not x4764) (not x4765) (not x4766) (not x4767) x4805)
+(or (not x4805) x4781)
+(or (not x4805) x4764)
+(or (not x4805) x4765)
+(or (not x4805) x4766)
+(or (not x4805) x4767)
+(or (not x4806) (not x4765) (not x4764) (not x4326) (not x4770) x4807)
+(or (not x4807) x4806)
+(or (not x4807) x4765)
+(or (not x4807) x4764)
+(or (not x4807) x4326)
+(or (not x4807) x4770)
+(or (not x4790) (not x4765) (not x4764) (not x4326) (not x4773) x4808)
+(or (not x4808) x4790)
+(or (not x4808) x4765)
+(or (not x4808) x4764)
+(or (not x4808) x4326)
+(or (not x4808) x4773)
+(or (not x4809) (not x4810) (not x4764) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x4811)
+(or (not x4811) x4809)
+(or (not x4811) x4810)
+(or (not x4811) x4764)
+(or (not x4811) x4326)
+(or (not x4811) x4304)
+(or (not x4811) x4336)
+(or (not x4811) x4756)
+(or (not x4811) x4777)
+(or x4812 (not x4811))
+(or x4812 (not x4808))
+(or x4812 (not x4807))
+(or x4812 (not x4805))
+(or x4811 x4808 x4807 x4805 (not x4812))
+(or (not x4790) (not x4764) (not x4765) (not x4766) (not x4767) x4813)
+(or (not x4813) x4790)
+(or (not x4813) x4764)
+(or (not x4813) x4765)
+(or (not x4813) x4766)
+(or (not x4813) x4767)
+(or (not x4814) (not x4765) (not x4764) (not x4326) (not x4770) x4815)
+(or (not x4815) x4814)
+(or (not x4815) x4765)
+(or (not x4815) x4764)
+(or (not x4815) x4326)
+(or (not x4815) x4770)
+(or (not x4816) (not x4765) (not x4764) (not x4326) (not x4773) x4817)
+(or (not x4817) x4816)
+(or (not x4817) x4765)
+(or (not x4817) x4764)
+(or (not x4817) x4326)
+(or (not x4817) x4773)
+(or (not x4816) (not x4818) (not x4764) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x4819)
+(or (not x4819) x4816)
+(or (not x4819) x4818)
+(or (not x4819) x4764)
+(or (not x4819) x4326)
+(or (not x4819) x4304)
+(or (not x4819) x4336)
+(or (not x4819) x4756)
+(or (not x4819) x4777)
+(or x4820 (not x4819))
+(or x4820 (not x4817))
+(or x4820 (not x4815))
+(or x4820 (not x4813))
+(or x4819 x4817 x4815 x4813 (not x4820))
+(or (not x4816) (not x4764) (not x4765) (not x4766) (not x4767) x4821)
+(or (not x4821) x4816)
+(or (not x4821) x4764)
+(or (not x4821) x4765)
+(or (not x4821) x4766)
+(or (not x4821) x4767)
+(or (not x4822) (not x4765) (not x4764) (not x4326) (not x4770) x4823)
+(or (not x4823) x4822)
+(or (not x4823) x4765)
+(or (not x4823) x4764)
+(or (not x4823) x4326)
+(or (not x4823) x4770)
+(or (not x4798) (not x4765) (not x4764) (not x4326) (not x4773) x4824)
+(or (not x4824) x4798)
+(or (not x4824) x4765)
+(or (not x4824) x4764)
+(or (not x4824) x4326)
+(or (not x4824) x4773)
+(or (not x4825) (not x4826) (not x4764) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x4827)
+(or (not x4827) x4825)
+(or (not x4827) x4826)
+(or (not x4827) x4764)
+(or (not x4827) x4326)
+(or (not x4827) x4304)
+(or (not x4827) x4336)
+(or (not x4827) x4756)
+(or (not x4827) x4777)
+(or x4828 (not x4827))
+(or x4828 (not x4824))
+(or x4828 (not x4823))
+(or x4828 (not x4821))
+(or x4827 x4824 x4823 x4821 (not x4828))
+(or (not x4798) (not x4764) (not x4765) (not x4766) (not x4767) x4829)
+(or (not x4829) x4798)
+(or (not x4829) x4764)
+(or (not x4829) x4765)
+(or (not x4829) x4766)
+(or (not x4829) x4767)
+(or (not x4830) (not x4765) (not x4764) (not x4326) (not x4770) x4831)
+(or (not x4831) x4830)
+(or (not x4831) x4765)
+(or (not x4831) x4764)
+(or (not x4831) x4326)
+(or (not x4831) x4770)
+(or (not x4806) (not x4765) (not x4764) (not x4326) (not x4773) x4832)
+(or (not x4832) x4806)
+(or (not x4832) x4765)
+(or (not x4832) x4764)
+(or (not x4832) x4326)
+(or (not x4832) x4773)
+(or (not x4833) (not x4834) (not x4764) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x4835)
+(or (not x4835) x4833)
+(or (not x4835) x4834)
+(or (not x4835) x4764)
+(or (not x4835) x4326)
+(or (not x4835) x4304)
+(or (not x4835) x4336)
+(or (not x4835) x4756)
+(or (not x4835) x4777)
+(or x4836 (not x4835))
+(or x4836 (not x4832))
+(or x4836 (not x4831))
+(or x4836 (not x4829))
+(or x4835 x4832 x4831 x4829 (not x4836))
+(or (not x4806) (not x4764) (not x4765) (not x4766) (not x4767) x4837)
+(or (not x4837) x4806)
+(or (not x4837) x4764)
+(or (not x4837) x4765)
+(or (not x4837) x4766)
+(or (not x4837) x4767)
+(or (not x4838) (not x4765) (not x4764) (not x4326) (not x4770) x4839)
+(or (not x4839) x4838)
+(or (not x4839) x4765)
+(or (not x4839) x4764)
+(or (not x4839) x4326)
+(or (not x4839) x4770)
+(or (not x4814) (not x4765) (not x4764) (not x4326) (not x4773) x4840)
+(or (not x4840) x4814)
+(or (not x4840) x4765)
+(or (not x4840) x4764)
+(or (not x4840) x4326)
+(or (not x4840) x4773)
+(or (not x4841) (not x4842) (not x4764) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x4843)
+(or (not x4843) x4841)
+(or (not x4843) x4842)
+(or (not x4843) x4764)
+(or (not x4843) x4326)
+(or (not x4843) x4304)
+(or (not x4843) x4336)
+(or (not x4843) x4756)
+(or (not x4843) x4777)
+(or x4844 (not x4843))
+(or x4844 (not x4840))
+(or x4844 (not x4839))
+(or x4844 (not x4837))
+(or x4843 x4840 x4839 x4837 (not x4844))
+(or (not x4814) (not x4764) (not x4765) (not x4766) (not x4767) x4845)
+(or (not x4845) x4814)
+(or (not x4845) x4764)
+(or (not x4845) x4765)
+(or (not x4845) x4766)
+(or (not x4845) x4767)
+(or (not x4846) (not x4765) (not x4764) (not x4326) (not x4770) x4847)
+(or (not x4847) x4846)
+(or (not x4847) x4765)
+(or (not x4847) x4764)
+(or (not x4847) x4326)
+(or (not x4847) x4770)
+(or (not x4822) (not x4765) (not x4764) (not x4326) (not x4773) x4848)
+(or (not x4848) x4822)
+(or (not x4848) x4765)
+(or (not x4848) x4764)
+(or (not x4848) x4326)
+(or (not x4848) x4773)
+(or (not x4822) (not x4849) (not x4764) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x4850)
+(or (not x4850) x4822)
+(or (not x4850) x4849)
+(or (not x4850) x4764)
+(or (not x4850) x4326)
+(or (not x4850) x4304)
+(or (not x4850) x4336)
+(or (not x4850) x4756)
+(or (not x4850) x4777)
+(or x4851 (not x4850))
+(or x4851 (not x4848))
+(or x4851 (not x4847))
+(or x4851 (not x4845))
+(or x4850 x4848 x4847 x4845 (not x4851))
+(or (not x4830) (not x4764) (not x4765) (not x4766) (not x4767) x4852)
+(or (not x4852) x4830)
+(or (not x4852) x4764)
+(or (not x4852) x4765)
+(or (not x4852) x4766)
+(or (not x4852) x4767)
+(or (not x4763) (not x4765) (not x4764) (not x4326) (not x4770) x4853)
+(or (not x4853) x4763)
+(or (not x4853) x4765)
+(or (not x4853) x4764)
+(or (not x4853) x4326)
+(or (not x4853) x4770)
+(or (not x4838) (not x4765) (not x4764) (not x4326) (not x4773) x4854)
+(or (not x4854) x4838)
+(or (not x4854) x4765)
+(or (not x4854) x4764)
+(or (not x4854) x4326)
+(or (not x4854) x4773)
+(or (not x4855) (not x4856) (not x4764) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x4857)
+(or (not x4857) x4855)
+(or (not x4857) x4856)
+(or (not x4857) x4764)
+(or (not x4857) x4326)
+(or (not x4857) x4304)
+(or (not x4857) x4336)
+(or (not x4857) x4756)
+(or (not x4857) x4777)
+(or x4858 (not x4857))
+(or x4858 (not x4854))
+(or x4858 (not x4853))
+(or x4858 (not x4852))
+(or x4857 x4854 x4853 x4852 (not x4858))
+(or (not x4838) (not x4764) (not x4765) (not x4766) (not x4767) x4859)
+(or (not x4859) x4838)
+(or (not x4859) x4764)
+(or (not x4859) x4765)
+(or (not x4859) x4766)
+(or (not x4859) x4767)
+(or (not x4772) (not x4765) (not x4764) (not x4326) (not x4770) x4860)
+(or (not x4860) x4772)
+(or (not x4860) x4765)
+(or (not x4860) x4764)
+(or (not x4860) x4326)
+(or (not x4860) x4770)
+(or (not x4846) (not x4765) (not x4764) (not x4326) (not x4773) x4861)
+(or (not x4861) x4846)
+(or (not x4861) x4765)
+(or (not x4861) x4764)
+(or (not x4861) x4326)
+(or (not x4861) x4773)
+(or (not x4862) (not x4863) (not x4764) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x4864)
+(or (not x4864) x4862)
+(or (not x4864) x4863)
+(or (not x4864) x4764)
+(or (not x4864) x4326)
+(or (not x4864) x4304)
+(or (not x4864) x4336)
+(or (not x4864) x4756)
+(or (not x4864) x4777)
+(or x4865 (not x4864))
+(or x4865 (not x4861))
+(or x4865 (not x4860))
+(or x4865 (not x4859))
+(or x4864 x4861 x4860 x4859 (not x4865))
+(or (not x4846) (not x4764) (not x4765) (not x4766) (not x4767) x4866)
+(or (not x4866) x4846)
+(or (not x4866) x4764)
+(or (not x4866) x4765)
+(or (not x4866) x4766)
+(or (not x4866) x4767)
+(or (not x4783) (not x4765) (not x4764) (not x4326) (not x4770) x4867)
+(or (not x4867) x4783)
+(or (not x4867) x4765)
+(or (not x4867) x4764)
+(or (not x4867) x4326)
+(or (not x4867) x4770)
+(or (not x4868) (not x4765) (not x4764) (not x4326) (not x4773) x4869)
+(or (not x4869) x4868)
+(or (not x4869) x4765)
+(or (not x4869) x4764)
+(or (not x4869) x4326)
+(or (not x4869) x4773)
+(or (not x4868) (not x4870) (not x4764) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x4871)
+(or (not x4871) x4868)
+(or (not x4871) x4870)
+(or (not x4871) x4764)
+(or (not x4871) x4326)
+(or (not x4871) x4304)
+(or (not x4871) x4336)
+(or (not x4871) x4756)
+(or (not x4871) x4777)
+(or x4872 (not x4871))
+(or x4872 (not x4869))
+(or x4872 (not x4867))
+(or x4872 (not x4866))
+(or x4871 x4869 x4867 x4866 (not x4872))
+(or (not x4792) (not x4764) (not x4765) (not x4766) (not x4767) x4873)
+(or (not x4873) x4792)
+(or (not x4873) x4764)
+(or (not x4873) x4765)
+(or (not x4873) x4766)
+(or (not x4873) x4767)
+(or (not x4816) (not x4765) (not x4764) (not x4326) (not x4770) x4874)
+(or (not x4874) x4816)
+(or (not x4874) x4765)
+(or (not x4874) x4764)
+(or (not x4874) x4326)
+(or (not x4874) x4770)
+(or (not x4769) (not x4765) (not x4764) (not x4326) (not x4773) x4875)
+(or (not x4875) x4769)
+(or (not x4875) x4765)
+(or (not x4875) x4764)
+(or (not x4875) x4326)
+(or (not x4875) x4773)
+(or (not x4876) (not x4877) (not x4764) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x4878)
+(or (not x4878) x4876)
+(or (not x4878) x4877)
+(or (not x4878) x4764)
+(or (not x4878) x4326)
+(or (not x4878) x4304)
+(or (not x4878) x4336)
+(or (not x4878) x4756)
+(or (not x4878) x4777)
+(or x4879 (not x4878))
+(or x4879 (not x4875))
+(or x4879 (not x4874))
+(or x4879 (not x4873))
+(or x4878 x4875 x4874 x4873 (not x4879))
+(or (not x4822) (not x4764) (not x4765) (not x4766) (not x4767) x4880)
+(or (not x4880) x4822)
+(or (not x4880) x4764)
+(or (not x4880) x4765)
+(or (not x4880) x4766)
+(or (not x4880) x4767)
+(or (not x4868) (not x4765) (not x4764) (not x4326) (not x4770) x4881)
+(or (not x4881) x4868)
+(or (not x4881) x4765)
+(or (not x4881) x4764)
+(or (not x4881) x4326)
+(or (not x4881) x4770)
+(or (not x4830) (not x4765) (not x4764) (not x4326) (not x4773) x4882)
+(or (not x4882) x4830)
+(or (not x4882) x4765)
+(or (not x4882) x4764)
+(or (not x4882) x4326)
+(or (not x4882) x4773)
+(or (not x4883) (not x4884) (not x4764) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x4885)
+(or (not x4885) x4883)
+(or (not x4885) x4884)
+(or (not x4885) x4764)
+(or (not x4885) x4326)
+(or (not x4885) x4304)
+(or (not x4885) x4336)
+(or (not x4885) x4756)
+(or (not x4885) x4777)
+(or x4886 (not x4885))
+(or x4886 (not x4882))
+(or x4886 (not x4881))
+(or x4886 (not x4880))
+(or x4885 x4882 x4881 x4880 (not x4886))
+(or x4887 (not x4888))
+(or x4887 (not x4893))
+(or x4888 x4893 (not x4887))
+(or x4894 (not x4895))
+(or x4894 (not x4900))
+(or x4895 x4900 (not x4894))
+(or x4901 (not x4902))
+(or x4901 (not x4907))
+(or x4902 x4907 (not x4901))
+(or x4908 (not x4909))
+(or x4908 (not x4914))
+(or x4909 x4914 (not x4908))
+(or x4783 x4772 x4763 x4915)
+(or (not x4915) (not x4783))
+(or (not x4915) (not x4772))
+(or (not x4915) (not x4763))
+(or x4916 (not x4917))
+(or x4916 (not x4918))
+(or x4916 (not x4919))
+(or x4916 (not x4920))
+(or x4916 (not x4915))
+(or x4917 x4918 x4919 x4920 x4915 (not x4916))
+(or x4790 x4781 x4769 x4921)
+(or (not x4921) (not x4790))
+(or (not x4921) (not x4781))
+(or (not x4921) (not x4769))
+(or x4922 (not x4923))
+(or x4922 (not x4924))
+(or x4922 (not x4925))
+(or x4922 (not x4926))
+(or x4922 (not x4921))
+(or x4923 x4924 x4925 x4926 x4921 (not x4922))
+(or x4814 x4806 x4798 x4927)
+(or (not x4927) (not x4814))
+(or (not x4927) (not x4806))
+(or (not x4927) (not x4798))
+(or x4928 (not x4929))
+(or x4928 (not x4930))
+(or x4928 (not x4931))
+(or x4928 (not x4932))
+(or x4928 (not x4927))
+(or x4929 x4930 x4931 x4932 x4927 (not x4928))
+(or x4846 x4838 x4830 x4933)
+(or (not x4933) (not x4846))
+(or (not x4933) (not x4838))
+(or (not x4933) (not x4830))
+(or x4934 (not x4935))
+(or x4934 (not x4936))
+(or x4934 (not x4937))
+(or x4934 (not x4938))
+(or x4934 (not x4933))
+(or x4935 x4936 x4937 x4938 x4933 (not x4934))
+(or (not x4934) (not x4928) (not x4922) (not x4916) x4939)
+(or (not x4939) x4934)
+(or (not x4939) x4928)
+(or (not x4939) x4922)
+(or (not x4939) x4916)
+(or x4767 (not x4940))
+(or x4767 (not x4941))
+(or x4767 x4326)
+(or x4767 (not x4939))
+(or x4940 x4941 (not x4326) x4939 (not x4767))
+(or (not x4763) (not x4942) (not x4943) x4920)
+(or (not x4920) x4763)
+(or (not x4920) x4942)
+(or (not x4920) x4943)
+(or x4944 (not x4945))
+(or x4944 (not x4946))
+(or x4945 x4946 (not x4944))
+(or (not x4772) (not x4944) x4919)
+(or (not x4919) x4772)
+(or (not x4919) x4944)
+(or x4947 (not x4948))
+(or x4947 (not x4945))
+(or x4947 (not x4946))
+(or x4948 x4945 x4946 (not x4947))
+(or (not x4783) (not x4947) x4918)
+(or (not x4918) x4783)
+(or (not x4918) x4947)
+(or x4949 (not x4776))
+(or x4949 x4772)
+(or x4776 (not x4772) (not x4949))
+(or x4950 (not x4786))
+(or x4950 (not x4776))
+(or x4950 x4783)
+(or x4786 x4776 (not x4783) (not x4950))
+(or x4951 (not x4794))
+(or x4951 (not x4786))
+(or x4951 (not x4776))
+(or x4951 x4792)
+(or x4794 x4786 x4776 (not x4792) (not x4951))
+(or x4763 (not x4951) (not x4950) (not x4949) x4952)
+(or (not x4952) (not x4763))
+(or (not x4952) x4951)
+(or (not x4952) x4950)
+(or (not x4952) x4949)
+(or x4942 (not x4952))
+(or x4942 x4943)
+(or x4942 x4326)
+(or x4942 (not x4595))
+(or x4942 (not x4596))
+(or x4942 (not x4953))
+(or x4942 (not x4954))
+(or x4952 (not x4943) (not x4326) x4595 x4596 x4953 x4954 (not x4942))
+(or (not x4942) (not x4943) x4946)
+(or (not x4946) x4942)
+(or (not x4946) x4943)
+(or x4955 (not x4786))
+(or x4955 x4783)
+(or x4786 (not x4783) (not x4955))
+(or x4956 (not x4794))
+(or x4956 (not x4786))
+(or x4956 x4792)
+(or x4794 x4786 (not x4792) (not x4956))
+(or x4772 (not x4956) (not x4955) x4957)
+(or (not x4957) (not x4772))
+(or (not x4957) x4956)
+(or (not x4957) x4955)
+(or x4958 (not x4957))
+(or x4958 x4776)
+(or x4958 x4326)
+(or x4958 (not x4595))
+(or x4958 (not x4596))
+(or x4958 (not x4953))
+(or x4958 (not x4954))
+(or x4957 (not x4776) (not x4326) x4595 x4596 x4953 x4954 (not x4958))
+(or (not x4958) (not x4776) x4945)
+(or (not x4945) x4958)
+(or (not x4945) x4776)
+(or x4959 (not x4794))
+(or x4959 x4792)
+(or x4794 (not x4792) (not x4959))
+(or x4783 (not x4959) x4960)
+(or (not x4960) (not x4783))
+(or (not x4960) x4959)
+(or x4961 (not x4960))
+(or x4961 x4786)
+(or x4961 x4326)
+(or x4961 (not x4595))
+(or x4961 (not x4596))
+(or x4961 (not x4953))
+(or x4961 (not x4954))
+(or x4960 (not x4786) (not x4326) x4595 x4596 x4953 x4954 (not x4961))
+(or (not x4961) (not x4786) x4948)
+(or (not x4948) x4961)
+(or (not x4948) x4786)
+(or x4962 x4792)
+(or x4962 x4794)
+(or x4962 x4326)
+(or x4962 (not x4595))
+(or x4962 (not x4596))
+(or x4962 (not x4953))
+(or x4962 (not x4954))
+(or (not x4792) (not x4794) (not x4326) x4595 x4596 x4953 x4954 (not x4962))
+(or (not x4962) (not x4794) x4963)
+(or (not x4963) x4962)
+(or (not x4963) x4794)
+(or x4964 (not x4963))
+(or x4964 (not x4948))
+(or x4964 (not x4945))
+(or x4964 (not x4946))
+(or x4963 x4948 x4945 x4946 (not x4964))
+(or (not x4792) (not x4964) x4917)
+(or (not x4917) x4792)
+(or (not x4917) x4964)
+(or x4965 (not x4917))
+(or x4965 (not x4918))
+(or x4965 (not x4919))
+(or x4965 (not x4920))
+(or x4965 x4792)
+(or x4917 x4918 x4919 x4920 (not x4792) (not x4965))
+(or (not x4769) (not x4966) (not x4877) x4926)
+(or (not x4926) x4769)
+(or (not x4926) x4966)
+(or (not x4926) x4877)
+(or x4967 (not x4968))
+(or x4967 (not x4969))
+(or x4968 x4969 (not x4967))
+(or (not x4781) (not x4967) x4925)
+(or (not x4925) x4781)
+(or (not x4925) x4967)
+(or x4970 (not x4971))
+(or x4970 (not x4968))
+(or x4970 (not x4969))
+(or x4971 x4968 x4969 (not x4970))
+(or (not x4790) (not x4970) x4924)
+(or (not x4924) x4790)
+(or (not x4924) x4970)
+(or x4972 (not x4802))
+(or x4972 x4781)
+(or x4802 (not x4781) (not x4972))
+(or x4973 (not x4810))
+(or x4973 (not x4802))
+(or x4973 x4790)
+(or x4810 x4802 (not x4790) (not x4973))
+(or x4974 (not x4818))
+(or x4974 (not x4810))
+(or x4974 (not x4802))
+(or x4974 x4816)
+(or x4818 x4810 x4802 (not x4816) (not x4974))
+(or x4769 (not x4974) (not x4973) (not x4972) x4975)
+(or (not x4975) (not x4769))
+(or (not x4975) x4974)
+(or (not x4975) x4973)
+(or (not x4975) x4972)
+(or x4966 (not x4975))
+(or x4966 x4877)
+(or x4966 x4326)
+(or x4966 (not x4595))
+(or x4966 (not x4596))
+(or x4966 (not x4953))
+(or x4966 (not x4954))
+(or x4975 (not x4877) (not x4326) x4595 x4596 x4953 x4954 (not x4966))
+(or (not x4966) (not x4877) x4969)
+(or (not x4969) x4966)
+(or (not x4969) x4877)
+(or x4976 (not x4810))
+(or x4976 x4790)
+(or x4810 (not x4790) (not x4976))
+(or x4977 (not x4818))
+(or x4977 (not x4810))
+(or x4977 x4816)
+(or x4818 x4810 (not x4816) (not x4977))
+(or x4781 (not x4977) (not x4976) x4978)
+(or (not x4978) (not x4781))
+(or (not x4978) x4977)
+(or (not x4978) x4976)
+(or x4979 (not x4978))
+(or x4979 x4802)
+(or x4979 x4326)
+(or x4979 (not x4595))
+(or x4979 (not x4596))
+(or x4979 (not x4953))
+(or x4979 (not x4954))
+(or x4978 (not x4802) (not x4326) x4595 x4596 x4953 x4954 (not x4979))
+(or (not x4979) (not x4802) x4968)
+(or (not x4968) x4979)
+(or (not x4968) x4802)
+(or x4980 (not x4818))
+(or x4980 x4816)
+(or x4818 (not x4816) (not x4980))
+(or x4790 (not x4980) x4981)
+(or (not x4981) (not x4790))
+(or (not x4981) x4980)
+(or x4982 (not x4981))
+(or x4982 x4810)
+(or x4982 x4326)
+(or x4982 (not x4595))
+(or x4982 (not x4596))
+(or x4982 (not x4953))
+(or x4982 (not x4954))
+(or x4981 (not x4810) (not x4326) x4595 x4596 x4953 x4954 (not x4982))
+(or (not x4982) (not x4810) x4971)
+(or (not x4971) x4982)
+(or (not x4971) x4810)
+(or x4983 x4816)
+(or x4983 x4818)
+(or x4983 x4326)
+(or x4983 (not x4595))
+(or x4983 (not x4596))
+(or x4983 (not x4953))
+(or x4983 (not x4954))
+(or (not x4816) (not x4818) (not x4326) x4595 x4596 x4953 x4954 (not x4983))
+(or (not x4983) (not x4818) x4984)
+(or (not x4984) x4983)
+(or (not x4984) x4818)
+(or x4985 (not x4984))
+(or x4985 (not x4971))
+(or x4985 (not x4968))
+(or x4985 (not x4969))
+(or x4984 x4971 x4968 x4969 (not x4985))
+(or (not x4816) (not x4985) x4923)
+(or (not x4923) x4816)
+(or (not x4923) x4985)
+(or x4986 (not x4923))
+(or x4986 (not x4924))
+(or x4986 (not x4925))
+(or x4986 (not x4926))
+(or x4986 x4816)
+(or x4923 x4924 x4925 x4926 (not x4816) (not x4986))
+(or (not x4798) (not x4987) (not x4826) x4932)
+(or (not x4932) x4798)
+(or (not x4932) x4987)
+(or (not x4932) x4826)
+(or x4988 (not x4989))
+(or x4988 (not x4990))
+(or x4989 x4990 (not x4988))
+(or (not x4806) (not x4988) x4931)
+(or (not x4931) x4806)
+(or (not x4931) x4988)
+(or x4991 (not x4992))
+(or x4991 (not x4989))
+(or x4991 (not x4990))
+(or x4992 x4989 x4990 (not x4991))
+(or (not x4814) (not x4991) x4930)
+(or (not x4930) x4814)
+(or (not x4930) x4991)
+(or x4993 (not x4834))
+(or x4993 x4806)
+(or x4834 (not x4806) (not x4993))
+(or x4994 (not x4842))
+(or x4994 (not x4834))
+(or x4994 x4814)
+(or x4842 x4834 (not x4814) (not x4994))
+(or x4995 (not x4849))
+(or x4995 (not x4842))
+(or x4995 (not x4834))
+(or x4995 x4822)
+(or x4849 x4842 x4834 (not x4822) (not x4995))
+(or x4798 (not x4995) (not x4994) (not x4993) x4996)
+(or (not x4996) (not x4798))
+(or (not x4996) x4995)
+(or (not x4996) x4994)
+(or (not x4996) x4993)
+(or x4987 (not x4996))
+(or x4987 x4826)
+(or x4987 x4326)
+(or x4987 (not x4595))
+(or x4987 (not x4596))
+(or x4987 (not x4953))
+(or x4987 (not x4954))
+(or x4996 (not x4826) (not x4326) x4595 x4596 x4953 x4954 (not x4987))
+(or (not x4987) (not x4826) x4990)
+(or (not x4990) x4987)
+(or (not x4990) x4826)
+(or x4997 (not x4842))
+(or x4997 x4814)
+(or x4842 (not x4814) (not x4997))
+(or x4998 (not x4849))
+(or x4998 (not x4842))
+(or x4998 x4822)
+(or x4849 x4842 (not x4822) (not x4998))
+(or x4806 (not x4998) (not x4997) x4999)
+(or (not x4999) (not x4806))
+(or (not x4999) x4998)
+(or (not x4999) x4997)
+(or x5000 (not x4999))
+(or x5000 x4834)
+(or x5000 x4326)
+(or x5000 (not x4595))
+(or x5000 (not x4596))
+(or x5000 (not x4953))
+(or x5000 (not x4954))
+(or x4999 (not x4834) (not x4326) x4595 x4596 x4953 x4954 (not x5000))
+(or (not x5000) (not x4834) x4989)
+(or (not x4989) x5000)
+(or (not x4989) x4834)
+(or x5001 (not x4849))
+(or x5001 x4822)
+(or x4849 (not x4822) (not x5001))
+(or x4814 (not x5001) x5002)
+(or (not x5002) (not x4814))
+(or (not x5002) x5001)
+(or x5003 (not x5002))
+(or x5003 x4842)
+(or x5003 x4326)
+(or x5003 (not x4595))
+(or x5003 (not x4596))
+(or x5003 (not x4953))
+(or x5003 (not x4954))
+(or x5002 (not x4842) (not x4326) x4595 x4596 x4953 x4954 (not x5003))
+(or (not x5003) (not x4842) x4992)
+(or (not x4992) x5003)
+(or (not x4992) x4842)
+(or x5004 x4822)
+(or x5004 x4849)
+(or x5004 x4326)
+(or x5004 (not x4595))
+(or x5004 (not x4596))
+(or x5004 (not x4953))
+(or x5004 (not x4954))
+(or (not x4822) (not x4849) (not x4326) x4595 x4596 x4953 x4954 (not x5004))
+(or (not x5004) (not x4849) x5005)
+(or (not x5005) x5004)
+(or (not x5005) x4849)
+(or x5006 (not x5005))
+(or x5006 (not x4992))
+(or x5006 (not x4989))
+(or x5006 (not x4990))
+(or x5005 x4992 x4989 x4990 (not x5006))
+(or (not x4822) (not x5006) x4929)
+(or (not x4929) x4822)
+(or (not x4929) x5006)
+(or x5007 (not x4929))
+(or x5007 (not x4930))
+(or x5007 (not x4931))
+(or x5007 (not x4932))
+(or x5007 x4822)
+(or x4929 x4930 x4931 x4932 (not x4822) (not x5007))
+(or (not x4830) (not x5008) (not x4884) x4938)
+(or (not x4938) x4830)
+(or (not x4938) x5008)
+(or (not x4938) x4884)
+(or x5009 (not x4900))
+(or x5009 (not x4893))
+(or x4900 x4893 (not x5009))
+(or (not x4838) (not x5009) x4937)
+(or (not x4937) x4838)
+(or (not x4937) x5009)
+(or x5010 (not x4907))
+(or x5010 (not x4900))
+(or x5010 (not x4893))
+(or x4907 x4900 x4893 (not x5010))
+(or (not x4846) (not x5010) x4936)
+(or (not x4936) x4846)
+(or (not x4936) x5010)
+(or x5011 (not x4856))
+(or x5011 x4838)
+(or x4856 (not x4838) (not x5011))
+(or x5012 (not x4863))
+(or x5012 (not x4856))
+(or x5012 x4846)
+(or x4863 x4856 (not x4846) (not x5012))
+(or x5013 (not x4870))
+(or x5013 (not x4863))
+(or x5013 (not x4856))
+(or x5013 x4868)
+(or x4870 x4863 x4856 (not x4868) (not x5013))
+(or x4830 (not x5013) (not x5012) (not x5011) x5014)
+(or (not x5014) (not x4830))
+(or (not x5014) x5013)
+(or (not x5014) x5012)
+(or (not x5014) x5011)
+(or x5008 (not x5014))
+(or x5008 x4884)
+(or x5008 x4326)
+(or x5008 (not x4595))
+(or x5008 (not x4596))
+(or x5008 (not x4953))
+(or x5008 (not x4954))
+(or x5014 (not x4884) (not x4326) x4595 x4596 x4953 x4954 (not x5008))
+(or (not x5008) (not x4884) x4893)
+(or (not x4893) x5008)
+(or (not x4893) x4884)
+(or x5015 (not x4863))
+(or x5015 x4846)
+(or x4863 (not x4846) (not x5015))
+(or x5016 (not x4870))
+(or x5016 (not x4863))
+(or x5016 x4868)
+(or x4870 x4863 (not x4868) (not x5016))
+(or x4838 (not x5016) (not x5015) x5017)
+(or (not x5017) (not x4838))
+(or (not x5017) x5016)
+(or (not x5017) x5015)
+(or x5018 (not x5017))
+(or x5018 x4856)
+(or x5018 x4326)
+(or x5018 (not x4595))
+(or x5018 (not x4596))
+(or x5018 (not x4953))
+(or x5018 (not x4954))
+(or x5017 (not x4856) (not x4326) x4595 x4596 x4953 x4954 (not x5018))
+(or (not x5018) (not x4856) x4900)
+(or (not x4900) x5018)
+(or (not x4900) x4856)
+(or x5019 (not x4870))
+(or x5019 x4868)
+(or x4870 (not x4868) (not x5019))
+(or x4846 (not x5019) x5020)
+(or (not x5020) (not x4846))
+(or (not x5020) x5019)
+(or x5021 (not x5020))
+(or x5021 x4863)
+(or x5021 x4326)
+(or x5021 (not x4595))
+(or x5021 (not x4596))
+(or x5021 (not x4953))
+(or x5021 (not x4954))
+(or x5020 (not x4863) (not x4326) x4595 x4596 x4953 x4954 (not x5021))
+(or (not x5021) (not x4863) x4907)
+(or (not x4907) x5021)
+(or (not x4907) x4863)
+(or x5022 x4868)
+(or x5022 x4870)
+(or x5022 x4326)
+(or x5022 (not x4595))
+(or x5022 (not x4596))
+(or x5022 (not x4953))
+(or x5022 (not x4954))
+(or (not x4868) (not x4870) (not x4326) x4595 x4596 x4953 x4954 (not x5022))
+(or (not x5022) (not x4870) x4914)
+(or (not x4914) x5022)
+(or (not x4914) x4870)
+(or x5023 (not x4914))
+(or x5023 (not x4907))
+(or x5023 (not x4900))
+(or x5023 (not x4893))
+(or x4914 x4907 x4900 x4893 (not x5023))
+(or (not x4868) (not x5023) x4935)
+(or (not x4935) x4868)
+(or (not x4935) x5023)
+(or x5024 (not x4935))
+(or x5024 (not x4936))
+(or x5024 (not x4937))
+(or x5024 (not x4938))
+(or x5024 x4868)
+(or x4935 x4936 x4937 x4938 (not x4868) (not x5024))
+(or (not x5024) (not x5007) (not x4986) (not x4965) x5025)
+(or (not x5025) x5024)
+(or (not x5025) x5007)
+(or (not x5025) x4986)
+(or (not x5025) x4965)
+(or x4868 x4846 x4838 x4830 x4822 x4814 x4806 x4798 x4816 x4790 x4781 x4769 x4792 x4783 x4772 x4763 x4941)
+(or (not x4941) (not x4868))
+(or (not x4941) (not x4846))
+(or (not x4941) (not x4838))
+(or (not x4941) (not x4830))
+(or (not x4941) (not x4822))
+(or (not x4941) (not x4814))
+(or (not x4941) (not x4806))
+(or (not x4941) (not x4798))
+(or (not x4941) (not x4816))
+(or (not x4941) (not x4790))
+(or (not x4941) (not x4781))
+(or (not x4941) (not x4769))
+(or (not x4941) (not x4792))
+(or (not x4941) (not x4783))
+(or (not x4941) (not x4772))
+(or (not x4941) (not x4763))
+(or x4766 (not x4940))
+(or x4766 (not x4941))
+(or x4766 x4326)
+(or x4766 (not x5025))
+(or x4940 x4941 (not x4326) x5025 (not x4766))
+(or (not x4868) (not x4764) (not x4765) (not x4766) (not x4767) x5026)
+(or (not x5026) x4868)
+(or (not x5026) x4764)
+(or (not x5026) x4765)
+(or (not x5026) x4766)
+(or (not x5026) x4767)
+(or (not x5027) (not x5028) (not x5029) (not x5030) (not x4792) x5031)
+(or (not x5031) x5027)
+(or (not x5031) x5028)
+(or (not x5031) x5029)
+(or (not x5031) x5030)
+(or (not x5031) x4792)
+(or (not x5032) (not x5033) (not x5034) (not x5035) (not x4816) x5036)
+(or (not x5036) x5032)
+(or (not x5036) x5033)
+(or (not x5036) x5034)
+(or (not x5036) x5035)
+(or (not x5036) x4816)
+(or (not x5037) (not x5038) (not x5039) (not x5040) (not x4822) x5041)
+(or (not x5041) x5037)
+(or (not x5041) x5038)
+(or (not x5041) x5039)
+(or (not x5041) x5040)
+(or (not x5041) x4822)
+(or (not x5042) (not x5043) (not x5044) (not x5045) (not x4868) x5046)
+(or (not x5046) x5042)
+(or (not x5046) x5043)
+(or (not x5046) x5044)
+(or (not x5046) x5045)
+(or (not x5046) x4868)
+(or x4770 (not x5046))
+(or x4770 (not x5041))
+(or x4770 (not x5036))
+(or x4770 (not x5031))
+(or x5046 x5041 x5036 x5031 (not x4770))
+(or (not x4792) (not x4765) (not x4764) (not x4326) (not x4770) x5047)
+(or (not x5047) x4792)
+(or (not x5047) x4765)
+(or (not x5047) x4764)
+(or (not x5047) x4326)
+(or (not x5047) x4770)
+(or x5048 (not x4783))
+(or x5048 (not x4772))
+(or x5048 (not x4763))
+(or x4783 x4772 x4763 (not x5048))
+(or x5030 x4763)
+(or x5030 (not x5049))
+(or x5030 x4943)
+(or (not x4763) x5049 (not x4943) (not x5030))
+(or (not x5050) (not x5051) x5052)
+(or (not x5052) x5050)
+(or (not x5052) x5051)
+(or x5029 x4772)
+(or x5029 (not x5052))
+(or (not x4772) x5052 (not x5029))
+(or (not x5053) (not x5050) (not x5051) x5054)
+(or (not x5054) x5053)
+(or (not x5054) x5050)
+(or (not x5054) x5051)
+(or x5028 x4783)
+(or x5028 (not x5054))
+(or (not x4783) x5054 (not x5028))
+(or (not x5055) (not x4943) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x5049)
+(or (not x5049) x5055)
+(or (not x5049) x4943)
+(or (not x5049) x4326)
+(or (not x5049) x4304)
+(or (not x5049) x4336)
+(or (not x5049) x4756)
+(or (not x5049) x4777)
+(or x5051 (not x5049))
+(or x5051 x4943)
+(or x5049 (not x4943) (not x5051))
+(or x4786 (not x4783) x5056)
+(or (not x5056) (not x4786))
+(or (not x5056) x4783)
+(or x4794 x4786 (not x4792) x5057)
+(or (not x5057) (not x4794))
+(or (not x5057) (not x4786))
+(or (not x5057) x4792)
+(or x4775 (not x4772))
+(or x4775 (not x5057))
+(or x4775 (not x5056))
+(or x4772 x5057 x5056 (not x4775))
+(or (not x4775) (not x4776) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x5058)
+(or (not x5058) x4775)
+(or (not x5058) x4776)
+(or (not x5058) x4326)
+(or (not x5058) x4304)
+(or (not x5058) x4336)
+(or (not x5058) x4756)
+(or (not x5058) x4777)
+(or x5050 (not x5058))
+(or x5050 x4776)
+(or x5058 (not x4776) (not x5050))
+(or x4794 (not x4792) x5059)
+(or (not x5059) (not x4794))
+(or (not x5059) x4792)
+(or x4785 (not x4783))
+(or x4785 (not x5059))
+(or x4783 x5059 (not x4785))
+(or (not x4785) (not x4786) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x5060)
+(or (not x5060) x4785)
+(or (not x5060) x4786)
+(or (not x5060) x4326)
+(or (not x5060) x4304)
+(or (not x5060) x4336)
+(or (not x5060) x4756)
+(or (not x5060) x4777)
+(or x5053 (not x5060))
+(or x5053 x4786)
+(or x5060 (not x4786) (not x5053))
+(or (not x4792) (not x4794) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x5061)
+(or (not x5061) x4792)
+(or (not x5061) x4794)
+(or (not x5061) x4326)
+(or (not x5061) x4304)
+(or (not x5061) x4336)
+(or (not x5061) x4756)
+(or (not x5061) x4777)
+(or x5062 (not x5061))
+(or x5062 x4794)
+(or x5061 (not x4794) (not x5062))
+(or (not x5062) (not x5053) (not x5050) (not x5051) x5063)
+(or (not x5063) x5062)
+(or (not x5063) x5053)
+(or (not x5063) x5050)
+(or (not x5063) x5051)
+(or x5027 x4792)
+(or x5027 (not x5063))
+(or (not x4792) x5063 (not x5027))
+(or (not x5027) (not x5028) (not x5029) (not x5030) (not x5048) x5064)
+(or (not x5064) x5027)
+(or (not x5064) x5028)
+(or (not x5064) x5029)
+(or (not x5064) x5030)
+(or (not x5064) x5048)
+(or x5065 (not x4790))
+(or x5065 (not x4781))
+(or x5065 (not x4769))
+(or x4790 x4781 x4769 (not x5065))
+(or x5035 x4769)
+(or x5035 (not x5066))
+(or x5035 x4877)
+(or (not x4769) x5066 (not x4877) (not x5035))
+(or (not x5067) (not x5068) x5069)
+(or (not x5069) x5067)
+(or (not x5069) x5068)
+(or x5034 x4781)
+(or x5034 (not x5069))
+(or (not x4781) x5069 (not x5034))
+(or (not x5070) (not x5067) (not x5068) x5071)
+(or (not x5071) x5070)
+(or (not x5071) x5067)
+(or (not x5071) x5068)
+(or x5033 x4790)
+(or x5033 (not x5071))
+(or (not x4790) x5071 (not x5033))
+(or x4802 (not x4781) x5072)
+(or (not x5072) (not x4802))
+(or (not x5072) x4781)
+(or x4810 x4802 (not x4790) x5073)
+(or (not x5073) (not x4810))
+(or (not x5073) (not x4802))
+(or (not x5073) x4790)
+(or x4818 x4810 x4802 (not x4816) x5074)
+(or (not x5074) (not x4818))
+(or (not x5074) (not x4810))
+(or (not x5074) (not x4802))
+(or (not x5074) x4816)
+(or x4876 (not x4769))
+(or x4876 (not x5074))
+(or x4876 (not x5073))
+(or x4876 (not x5072))
+(or x4769 x5074 x5073 x5072 (not x4876))
+(or (not x4876) (not x4877) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x5066)
+(or (not x5066) x4876)
+(or (not x5066) x4877)
+(or (not x5066) x4326)
+(or (not x5066) x4304)
+(or (not x5066) x4336)
+(or (not x5066) x4756)
+(or (not x5066) x4777)
+(or x5068 (not x5066))
+(or x5068 x4877)
+(or x5066 (not x4877) (not x5068))
+(or x4810 (not x4790) x5075)
+(or (not x5075) (not x4810))
+(or (not x5075) x4790)
+(or x4818 x4810 (not x4816) x5076)
+(or (not x5076) (not x4818))
+(or (not x5076) (not x4810))
+(or (not x5076) x4816)
+(or x4801 (not x4781))
+(or x4801 (not x5076))
+(or x4801 (not x5075))
+(or x4781 x5076 x5075 (not x4801))
+(or (not x4801) (not x4802) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x5077)
+(or (not x5077) x4801)
+(or (not x5077) x4802)
+(or (not x5077) x4326)
+(or (not x5077) x4304)
+(or (not x5077) x4336)
+(or (not x5077) x4756)
+(or (not x5077) x4777)
+(or x5067 (not x5077))
+(or x5067 x4802)
+(or x5077 (not x4802) (not x5067))
+(or x4818 (not x4816) x5078)
+(or (not x5078) (not x4818))
+(or (not x5078) x4816)
+(or x4809 (not x4790))
+(or x4809 (not x5078))
+(or x4790 x5078 (not x4809))
+(or (not x4809) (not x4810) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x5079)
+(or (not x5079) x4809)
+(or (not x5079) x4810)
+(or (not x5079) x4326)
+(or (not x5079) x4304)
+(or (not x5079) x4336)
+(or (not x5079) x4756)
+(or (not x5079) x4777)
+(or x5070 (not x5079))
+(or x5070 x4810)
+(or x5079 (not x4810) (not x5070))
+(or (not x4816) (not x4818) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x5080)
+(or (not x5080) x4816)
+(or (not x5080) x4818)
+(or (not x5080) x4326)
+(or (not x5080) x4304)
+(or (not x5080) x4336)
+(or (not x5080) x4756)
+(or (not x5080) x4777)
+(or x5081 (not x5080))
+(or x5081 x4818)
+(or x5080 (not x4818) (not x5081))
+(or (not x5081) (not x5070) (not x5067) (not x5068) x5082)
+(or (not x5082) x5081)
+(or (not x5082) x5070)
+(or (not x5082) x5067)
+(or (not x5082) x5068)
+(or x5032 x4816)
+(or x5032 (not x5082))
+(or (not x4816) x5082 (not x5032))
+(or (not x5032) (not x5033) (not x5034) (not x5035) (not x5065) x5083)
+(or (not x5083) x5032)
+(or (not x5083) x5033)
+(or (not x5083) x5034)
+(or (not x5083) x5035)
+(or (not x5083) x5065)
+(or x5084 (not x4814))
+(or x5084 (not x4806))
+(or x5084 (not x4798))
+(or x4814 x4806 x4798 (not x5084))
+(or x5040 x4798)
+(or x5040 (not x5085))
+(or x5040 x4826)
+(or (not x4798) x5085 (not x4826) (not x5040))
+(or (not x5086) (not x5087) x5088)
+(or (not x5088) x5086)
+(or (not x5088) x5087)
+(or x5039 x4806)
+(or x5039 (not x5088))
+(or (not x4806) x5088 (not x5039))
+(or (not x5089) (not x5086) (not x5087) x5090)
+(or (not x5090) x5089)
+(or (not x5090) x5086)
+(or (not x5090) x5087)
+(or x5038 x4814)
+(or x5038 (not x5090))
+(or (not x4814) x5090 (not x5038))
+(or x4834 (not x4806) x5091)
+(or (not x5091) (not x4834))
+(or (not x5091) x4806)
+(or x4842 x4834 (not x4814) x5092)
+(or (not x5092) (not x4842))
+(or (not x5092) (not x4834))
+(or (not x5092) x4814)
+(or x4849 x4842 x4834 (not x4822) x5093)
+(or (not x5093) (not x4849))
+(or (not x5093) (not x4842))
+(or (not x5093) (not x4834))
+(or (not x5093) x4822)
+(or x4825 (not x4798))
+(or x4825 (not x5093))
+(or x4825 (not x5092))
+(or x4825 (not x5091))
+(or x4798 x5093 x5092 x5091 (not x4825))
+(or (not x4825) (not x4826) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x5085)
+(or (not x5085) x4825)
+(or (not x5085) x4826)
+(or (not x5085) x4326)
+(or (not x5085) x4304)
+(or (not x5085) x4336)
+(or (not x5085) x4756)
+(or (not x5085) x4777)
+(or x5087 (not x5085))
+(or x5087 x4826)
+(or x5085 (not x4826) (not x5087))
+(or x4842 (not x4814) x5094)
+(or (not x5094) (not x4842))
+(or (not x5094) x4814)
+(or x4849 x4842 (not x4822) x5095)
+(or (not x5095) (not x4849))
+(or (not x5095) (not x4842))
+(or (not x5095) x4822)
+(or x4833 (not x4806))
+(or x4833 (not x5095))
+(or x4833 (not x5094))
+(or x4806 x5095 x5094 (not x4833))
+(or (not x4833) (not x4834) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x5096)
+(or (not x5096) x4833)
+(or (not x5096) x4834)
+(or (not x5096) x4326)
+(or (not x5096) x4304)
+(or (not x5096) x4336)
+(or (not x5096) x4756)
+(or (not x5096) x4777)
+(or x5086 (not x5096))
+(or x5086 x4834)
+(or x5096 (not x4834) (not x5086))
+(or x4849 (not x4822) x5097)
+(or (not x5097) (not x4849))
+(or (not x5097) x4822)
+(or x4841 (not x4814))
+(or x4841 (not x5097))
+(or x4814 x5097 (not x4841))
+(or (not x4841) (not x4842) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x5098)
+(or (not x5098) x4841)
+(or (not x5098) x4842)
+(or (not x5098) x4326)
+(or (not x5098) x4304)
+(or (not x5098) x4336)
+(or (not x5098) x4756)
+(or (not x5098) x4777)
+(or x5089 (not x5098))
+(or x5089 x4842)
+(or x5098 (not x4842) (not x5089))
+(or (not x4822) (not x4849) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x5099)
+(or (not x5099) x4822)
+(or (not x5099) x4849)
+(or (not x5099) x4326)
+(or (not x5099) x4304)
+(or (not x5099) x4336)
+(or (not x5099) x4756)
+(or (not x5099) x4777)
+(or x5100 (not x5099))
+(or x5100 x4849)
+(or x5099 (not x4849) (not x5100))
+(or (not x5100) (not x5089) (not x5086) (not x5087) x5101)
+(or (not x5101) x5100)
+(or (not x5101) x5089)
+(or (not x5101) x5086)
+(or (not x5101) x5087)
+(or x5037 x4822)
+(or x5037 (not x5101))
+(or (not x4822) x5101 (not x5037))
+(or (not x5037) (not x5038) (not x5039) (not x5040) (not x5084) x5102)
+(or (not x5102) x5037)
+(or (not x5102) x5038)
+(or (not x5102) x5039)
+(or (not x5102) x5040)
+(or (not x5102) x5084)
+(or x5103 (not x4846))
+(or x5103 (not x4838))
+(or x5103 (not x4830))
+(or x4846 x4838 x4830 (not x5103))
+(or x5045 x4830)
+(or x5045 (not x5104))
+(or x5045 x4884)
+(or (not x4830) x5104 (not x4884) (not x5045))
+(or (not x5105) (not x5106) x5107)
+(or (not x5107) x5105)
+(or (not x5107) x5106)
+(or x5044 x4838)
+(or x5044 (not x5107))
+(or (not x4838) x5107 (not x5044))
+(or (not x5108) (not x5105) (not x5106) x5109)
+(or (not x5109) x5108)
+(or (not x5109) x5105)
+(or (not x5109) x5106)
+(or x5043 x4846)
+(or x5043 (not x5109))
+(or (not x4846) x5109 (not x5043))
+(or x4856 (not x4838) x5110)
+(or (not x5110) (not x4856))
+(or (not x5110) x4838)
+(or x4863 x4856 (not x4846) x5111)
+(or (not x5111) (not x4863))
+(or (not x5111) (not x4856))
+(or (not x5111) x4846)
+(or x4870 x4863 x4856 (not x4868) x5112)
+(or (not x5112) (not x4870))
+(or (not x5112) (not x4863))
+(or (not x5112) (not x4856))
+(or (not x5112) x4868)
+(or x4883 (not x4830))
+(or x4883 (not x5112))
+(or x4883 (not x5111))
+(or x4883 (not x5110))
+(or x4830 x5112 x5111 x5110 (not x4883))
+(or (not x4883) (not x4884) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x5104)
+(or (not x5104) x4883)
+(or (not x5104) x4884)
+(or (not x5104) x4326)
+(or (not x5104) x4304)
+(or (not x5104) x4336)
+(or (not x5104) x4756)
+(or (not x5104) x4777)
+(or x5106 (not x5104))
+(or x5106 x4884)
+(or x5104 (not x4884) (not x5106))
+(or x4863 (not x4846) x5113)
+(or (not x5113) (not x4863))
+(or (not x5113) x4846)
+(or x4870 x4863 (not x4868) x5114)
+(or (not x5114) (not x4870))
+(or (not x5114) (not x4863))
+(or (not x5114) x4868)
+(or x4855 (not x4838))
+(or x4855 (not x5114))
+(or x4855 (not x5113))
+(or x4838 x5114 x5113 (not x4855))
+(or (not x4855) (not x4856) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x5115)
+(or (not x5115) x4855)
+(or (not x5115) x4856)
+(or (not x5115) x4326)
+(or (not x5115) x4304)
+(or (not x5115) x4336)
+(or (not x5115) x4756)
+(or (not x5115) x4777)
+(or x5105 (not x5115))
+(or x5105 x4856)
+(or x5115 (not x4856) (not x5105))
+(or x4870 (not x4868) x5116)
+(or (not x5116) (not x4870))
+(or (not x5116) x4868)
+(or x4862 (not x4846))
+(or x4862 (not x5116))
+(or x4846 x5116 (not x4862))
+(or (not x4862) (not x4863) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x5117)
+(or (not x5117) x4862)
+(or (not x5117) x4863)
+(or (not x5117) x4326)
+(or (not x5117) x4304)
+(or (not x5117) x4336)
+(or (not x5117) x4756)
+(or (not x5117) x4777)
+(or x5108 (not x5117))
+(or x5108 x4863)
+(or x5117 (not x4863) (not x5108))
+(or (not x4868) (not x4870) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x5118)
+(or (not x5118) x4868)
+(or (not x5118) x4870)
+(or (not x5118) x4326)
+(or (not x5118) x4304)
+(or (not x5118) x4336)
+(or (not x5118) x4756)
+(or (not x5118) x4777)
+(or x5119 (not x5118))
+(or x5119 x4870)
+(or x5118 (not x4870) (not x5119))
+(or (not x5119) (not x5108) (not x5105) (not x5106) x5120)
+(or (not x5120) x5119)
+(or (not x5120) x5108)
+(or (not x5120) x5105)
+(or (not x5120) x5106)
+(or x5042 x4868)
+(or x5042 (not x5120))
+(or (not x4868) x5120 (not x5042))
+(or (not x5042) (not x5043) (not x5044) (not x5045) (not x5103) x5121)
+(or (not x5121) x5042)
+(or (not x5121) x5043)
+(or (not x5121) x5044)
+(or (not x5121) x5045)
+(or (not x5121) x5103)
+(or x4773 (not x5121))
+(or x4773 (not x5102))
+(or x4773 (not x5083))
+(or x4773 (not x5064))
+(or x5121 x5102 x5083 x5064 (not x4773))
+(or (not x4335) x4755 x4954)
+(or (not x4954) x4335)
+(or (not x4954) (not x4755))
+(or x4765 x4326)
+(or x4765 (not x4595))
+(or x4765 (not x4596))
+(or x4765 (not x4953))
+(or x4765 (not x4954))
+(or (not x4326) x4595 x4596 x4953 x4954 (not x4765))
+(or (not x4763) (not x4765) (not x4764) (not x4326) (not x4773) x5122)
+(or (not x5122) x4763)
+(or (not x5122) x4765)
+(or (not x5122) x4764)
+(or (not x5122) x4326)
+(or (not x5122) x4773)
+(or x4764 (not x4868))
+(or x4764 (not x4846))
+(or x4764 (not x4838))
+(or x4764 (not x4830))
+(or x4764 (not x4822))
+(or x4764 (not x4814))
+(or x4764 (not x4806))
+(or x4764 (not x4798))
+(or x4764 (not x4816))
+(or x4764 (not x4790))
+(or x4764 (not x4781))
+(or x4764 (not x4769))
+(or x4764 (not x4792))
+(or x4764 (not x4783))
+(or x4764 (not x4772))
+(or x4764 (not x4763))
+(or x4868 x4846 x4838 x4830 x4822 x4814 x4806 x4798 x4816 x4790 x4781 x4769 x4792 x4783 x4772 x4763 (not x4764))
+(or x4776 (not x4772) x5123)
+(or (not x5123) (not x4776))
+(or (not x5123) x4772)
+(or x4786 x4776 (not x4783) x5124)
+(or (not x5124) (not x4786))
+(or (not x5124) (not x4776))
+(or (not x5124) x4783)
+(or x4794 x4786 x4776 (not x4792) x5125)
+(or (not x5125) (not x4794))
+(or (not x5125) (not x4786))
+(or (not x5125) (not x4776))
+(or (not x5125) x4792)
+(or x5055 (not x4763))
+(or x5055 (not x5125))
+(or x5055 (not x5124))
+(or x5055 (not x5123))
+(or x4763 x5125 x5124 x5123 (not x5055))
+(or (not x5055) (not x4943) (not x4764) (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x5126)
+(or (not x5126) x5055)
+(or (not x5126) x4943)
+(or (not x5126) x4764)
+(or (not x5126) x4326)
+(or (not x5126) x4304)
+(or (not x5126) x4336)
+(or (not x5126) x4756)
+(or (not x5126) x4777)
+(or x5127 (not x5126))
+(or x5127 (not x5122))
+(or x5127 (not x5047))
+(or x5127 (not x5026))
+(or x5127 (not x4941))
+(or x5126 x5122 x5047 x5026 x4941 (not x5127))
+(or (not x5128) (not x4755) x5129)
+(or (not x5129) x5128)
+(or (not x5129) x4755)
+(or x4334 x4755)
+(or x4334 (not x4953))
+(or (not x4755) x4953 (not x4334))
+(or (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x4583)
+(or (not x4583) x4334)
+(or (not x4583) x4335)
+(or (not x4583) x4326)
+(or (not x4583) x4304)
+(or (not x4583) x4336)
+(or (not x4326) (not x4304) (not x4336) (not x4334) (not x4335) (not x4326) (not x4304) (not x4336) x5130)
+(or (not x5130) x4326)
+(or (not x5130) x4304)
+(or (not x5130) x4336)
+(or (not x5130) x4334)
+(or (not x5130) x4335)
+(or (not x5130) x4326)
+(or (not x5130) x4304)
+(or (not x5130) x4336)
+(or x5131 (not x5130))
+(or x5131 (not x5129))
+(or x5130 x5129 (not x5131))
+(or x5132 (not x5133))
+(or x5132 (not x5134))
+(or x5132 (not x5135))
+(or x5132 (not x4430))
+(or x5133 x5134 x5135 x4430 (not x5132))
+(or x5136 (not x5133))
+(or x5136 (not x5134))
+(or x5136 (not x5135))
+(or x5136 (not x4429))
+(or x5133 x5134 x5135 x4429 (not x5136))
+(or (not x5137) (not x5138) (not x5139) (not x5136) x5140)
+(or (not x5140) x5137)
+(or (not x5140) x5138)
+(or (not x5140) x5139)
+(or (not x5140) x5136)
+(or x5141 (not x5133))
+(or x5141 (not x5134))
+(or x5141 (not x5135))
+(or x5141 (not x4428))
+(or x5133 x5134 x5135 x4428 (not x5141))
+(or (not x5137) (not x5138) (not x5139) (not x5141) x5142)
+(or (not x5142) x5137)
+(or (not x5142) x5138)
+(or (not x5142) x5139)
+(or (not x5142) x5141)
+(or x5143 (not x5133))
+(or x5143 (not x5134))
+(or x5143 (not x5135))
+(or x5143 (not x4427))
+(or x5133 x5134 x5135 x4427 (not x5143))
+(or (not x5137) (not x5139) (not x5143) x5144)
+(or (not x5144) x5137)
+(or (not x5144) x5139)
+(or (not x5144) x5143)
+(or (not x4430) x4429 x4428 (not x4427) x4426 (not x5145) x5146 x5147 (not x5148) (not x5149) x5135)
+(or (not x5135) x4430)
+(or (not x5135) (not x4429))
+(or (not x5135) (not x4428))
+(or (not x5135) x4427)
+(or (not x5135) (not x4426))
+(or (not x5135) x5145)
+(or (not x5135) (not x5146))
+(or (not x5135) (not x5147))
+(or (not x5135) x5148)
+(or (not x5135) x5149)
+(or x5150 (not x5133))
+(or x5150 (not x5134))
+(or x5150 (not x5135))
+(or x5150 (not x4426))
+(or x5133 x5134 x5135 x4426 (not x5150))
+(or x5139 (not x5133))
+(or x5139 (not x5134))
+(or x5139 x4430)
+(or x5139 (not x4429))
+(or x5139 (not x4428))
+(or x5139 x4427)
+(or x5139 (not x4426))
+(or x5139 x5145)
+(or x5139 (not x5146))
+(or x5139 (not x5147))
+(or x5139 x5148)
+(or x5139 x5149)
+(or x5133 x5134 (not x4430) x4429 x4428 (not x4427) x4426 (not x5145) x5146 x5147 (not x5148) (not x5149) (not x5139))
+(or x5138 (not x5133))
+(or x5138 x4430)
+(or x5138 (not x4429))
+(or x5138 (not x4428))
+(or x5138 (not x4427))
+(or x5138 x4426)
+(or x5133 (not x4430) x4429 x4428 x4427 (not x4426) (not x5138))
+(or x5137 x4430)
+(or x5137 (not x4429))
+(or x5137 (not x4428))
+(or x5137 (not x4427))
+(or x5137 (not x4426))
+(or (not x4430) x4429 x4428 x4427 x4426 (not x5137))
+(or x5151 x4430)
+(or x5151 (not x4429))
+(or x5151 (not x4428))
+(or x5151 (not x4427))
+(or x5151 (not x4426))
+(or x5151 x5152)
+(or (not x4430) x4429 x4428 x4427 x4426 (not x5152) (not x5151))
+(or (not x5151) (not x5138) (not x5139) (not x5150) x5153)
+(or (not x5153) x5151)
+(or (not x5153) x5138)
+(or (not x5153) x5139)
+(or (not x5153) x5150)
+(or x5154 (not x5155))
+(or x5154 (not x5156))
+(or x5154 (not x5157))
+(or x5154 (not x4437))
+(or x5155 x5156 x5157 x4437 (not x5154))
+(or x5158 (not x5155))
+(or x5158 (not x5156))
+(or x5158 (not x5157))
+(or x5158 (not x4436))
+(or x5155 x5156 x5157 x4436 (not x5158))
+(or (not x5159) (not x5160) (not x5161) (not x5158) x5162)
+(or (not x5162) x5159)
+(or (not x5162) x5160)
+(or (not x5162) x5161)
+(or (not x5162) x5158)
+(or x5163 (not x5155))
+(or x5163 (not x5156))
+(or x5163 (not x5157))
+(or x5163 (not x4435))
+(or x5155 x5156 x5157 x4435 (not x5163))
+(or (not x5159) (not x5160) (not x5161) (not x5163) x5164)
+(or (not x5164) x5159)
+(or (not x5164) x5160)
+(or (not x5164) x5161)
+(or (not x5164) x5163)
+(or x5165 (not x5155))
+(or x5165 (not x5156))
+(or x5165 (not x5157))
+(or x5165 (not x4434))
+(or x5155 x5156 x5157 x4434 (not x5165))
+(or (not x5159) (not x5161) (not x5165) x5166)
+(or (not x5166) x5159)
+(or (not x5166) x5161)
+(or (not x5166) x5165)
+(or (not x4437) x4436 x4435 (not x4434) x4433 (not x5167) x5146 x5147 (not x5148) (not x5149) x5157)
+(or (not x5157) x4437)
+(or (not x5157) (not x4436))
+(or (not x5157) (not x4435))
+(or (not x5157) x4434)
+(or (not x5157) (not x4433))
+(or (not x5157) x5167)
+(or (not x5157) (not x5146))
+(or (not x5157) (not x5147))
+(or (not x5157) x5148)
+(or (not x5157) x5149)
+(or x5168 (not x5155))
+(or x5168 (not x5156))
+(or x5168 (not x5157))
+(or x5168 (not x4433))
+(or x5155 x5156 x5157 x4433 (not x5168))
+(or x5161 (not x5155))
+(or x5161 (not x5156))
+(or x5161 x4437)
+(or x5161 (not x4436))
+(or x5161 (not x4435))
+(or x5161 x4434)
+(or x5161 (not x4433))
+(or x5161 x5167)
+(or x5161 (not x5146))
+(or x5161 (not x5147))
+(or x5161 x5148)
+(or x5161 x5149)
+(or x5155 x5156 (not x4437) x4436 x4435 (not x4434) x4433 (not x5167) x5146 x5147 (not x5148) (not x5149) (not x5161))
+(or x5160 (not x5155))
+(or x5160 x4437)
+(or x5160 (not x4436))
+(or x5160 (not x4435))
+(or x5160 (not x4434))
+(or x5160 x4433)
+(or x5155 (not x4437) x4436 x4435 x4434 (not x4433) (not x5160))
+(or x5159 x4437)
+(or x5159 (not x4436))
+(or x5159 (not x4435))
+(or x5159 (not x4434))
+(or x5159 (not x4433))
+(or (not x4437) x4436 x4435 x4434 x4433 (not x5159))
+(or x5169 x4437)
+(or x5169 (not x4436))
+(or x5169 (not x4435))
+(or x5169 (not x4434))
+(or x5169 (not x4433))
+(or x5169 x5170)
+(or (not x4437) x4436 x4435 x4434 x4433 (not x5170) (not x5169))
+(or (not x5169) (not x5160) (not x5161) (not x5168) x5171)
+(or (not x5171) x5169)
+(or (not x5171) x5160)
+(or (not x5171) x5161)
+(or (not x5171) x5168)
+(or x5172 (not x5173))
+(or x5172 (not x5174))
+(or x5172 (not x5175))
+(or x5172 (not x4444))
+(or x5173 x5174 x5175 x4444 (not x5172))
+(or x5176 (not x5173))
+(or x5176 (not x5174))
+(or x5176 (not x5175))
+(or x5176 (not x4443))
+(or x5173 x5174 x5175 x4443 (not x5176))
+(or (not x5177) (not x5178) (not x5179) (not x5176) x5180)
+(or (not x5180) x5177)
+(or (not x5180) x5178)
+(or (not x5180) x5179)
+(or (not x5180) x5176)
+(or x5181 (not x5173))
+(or x5181 (not x5174))
+(or x5181 (not x5175))
+(or x5181 (not x4442))
+(or x5173 x5174 x5175 x4442 (not x5181))
+(or (not x5177) (not x5178) (not x5179) (not x5181) x5182)
+(or (not x5182) x5177)
+(or (not x5182) x5178)
+(or (not x5182) x5179)
+(or (not x5182) x5181)
+(or x5183 (not x5173))
+(or x5183 (not x5174))
+(or x5183 (not x5175))
+(or x5183 (not x4441))
+(or x5173 x5174 x5175 x4441 (not x5183))
+(or (not x5177) (not x5179) (not x5183) x5184)
+(or (not x5184) x5177)
+(or (not x5184) x5179)
+(or (not x5184) x5183)
+(or (not x4444) x4443 x4442 (not x4441) x4440 (not x5185) x5146 x5147 (not x5148) (not x5149) x5175)
+(or (not x5175) x4444)
+(or (not x5175) (not x4443))
+(or (not x5175) (not x4442))
+(or (not x5175) x4441)
+(or (not x5175) (not x4440))
+(or (not x5175) x5185)
+(or (not x5175) (not x5146))
+(or (not x5175) (not x5147))
+(or (not x5175) x5148)
+(or (not x5175) x5149)
+(or x5186 (not x5173))
+(or x5186 (not x5174))
+(or x5186 (not x5175))
+(or x5186 (not x4440))
+(or x5173 x5174 x5175 x4440 (not x5186))
+(or x5179 (not x5173))
+(or x5179 (not x5174))
+(or x5179 x4444)
+(or x5179 (not x4443))
+(or x5179 (not x4442))
+(or x5179 x4441)
+(or x5179 (not x4440))
+(or x5179 x5185)
+(or x5179 (not x5146))
+(or x5179 (not x5147))
+(or x5179 x5148)
+(or x5179 x5149)
+(or x5173 x5174 (not x4444) x4443 x4442 (not x4441) x4440 (not x5185) x5146 x5147 (not x5148) (not x5149) (not x5179))
+(or x5178 (not x5173))
+(or x5178 x4444)
+(or x5178 (not x4443))
+(or x5178 (not x4442))
+(or x5178 (not x4441))
+(or x5178 x4440)
+(or x5173 (not x4444) x4443 x4442 x4441 (not x4440) (not x5178))
+(or x5177 x4444)
+(or x5177 (not x4443))
+(or x5177 (not x4442))
+(or x5177 (not x4441))
+(or x5177 (not x4440))
+(or (not x4444) x4443 x4442 x4441 x4440 (not x5177))
+(or x5187 x4444)
+(or x5187 (not x4443))
+(or x5187 (not x4442))
+(or x5187 (not x4441))
+(or x5187 (not x4440))
+(or x5187 x5188)
+(or (not x4444) x4443 x4442 x4441 x4440 (not x5188) (not x5187))
+(or (not x5187) (not x5178) (not x5179) (not x5186) x5189)
+(or (not x5189) x5187)
+(or (not x5189) x5178)
+(or (not x5189) x5179)
+(or (not x5189) x5186)
+(or x5190 (not x5191))
+(or x5190 (not x5192))
+(or x5190 (not x5193))
+(or x5190 (not x4451))
+(or x5191 x5192 x5193 x4451 (not x5190))
+(or x5194 (not x5191))
+(or x5194 (not x5192))
+(or x5194 (not x5193))
+(or x5194 (not x4450))
+(or x5191 x5192 x5193 x4450 (not x5194))
+(or (not x5195) (not x5196) (not x5197) (not x5194) x5198)
+(or (not x5198) x5195)
+(or (not x5198) x5196)
+(or (not x5198) x5197)
+(or (not x5198) x5194)
+(or x5199 (not x5191))
+(or x5199 (not x5192))
+(or x5199 (not x5193))
+(or x5199 (not x4449))
+(or x5191 x5192 x5193 x4449 (not x5199))
+(or (not x5195) (not x5196) (not x5197) (not x5199) x5200)
+(or (not x5200) x5195)
+(or (not x5200) x5196)
+(or (not x5200) x5197)
+(or (not x5200) x5199)
+(or x5201 (not x5191))
+(or x5201 (not x5192))
+(or x5201 (not x5193))
+(or x5201 (not x4448))
+(or x5191 x5192 x5193 x4448 (not x5201))
+(or (not x5195) (not x5197) (not x5201) x5202)
+(or (not x5202) x5195)
+(or (not x5202) x5197)
+(or (not x5202) x5201)
+(or (not x4451) x4450 x4449 (not x4448) x4447 (not x5203) x5146 x5147 (not x5148) (not x5149) x5193)
+(or (not x5193) x4451)
+(or (not x5193) (not x4450))
+(or (not x5193) (not x4449))
+(or (not x5193) x4448)
+(or (not x5193) (not x4447))
+(or (not x5193) x5203)
+(or (not x5193) (not x5146))
+(or (not x5193) (not x5147))
+(or (not x5193) x5148)
+(or (not x5193) x5149)
+(or x5204 (not x5191))
+(or x5204 (not x5192))
+(or x5204 (not x5193))
+(or x5204 (not x4447))
+(or x5191 x5192 x5193 x4447 (not x5204))
+(or x5197 (not x5191))
+(or x5197 (not x5192))
+(or x5197 x4451)
+(or x5197 (not x4450))
+(or x5197 (not x4449))
+(or x5197 x4448)
+(or x5197 (not x4447))
+(or x5197 x5203)
+(or x5197 (not x5146))
+(or x5197 (not x5147))
+(or x5197 x5148)
+(or x5197 x5149)
+(or x5191 x5192 (not x4451) x4450 x4449 (not x4448) x4447 (not x5203) x5146 x5147 (not x5148) (not x5149) (not x5197))
+(or x5196 (not x5191))
+(or x5196 x4451)
+(or x5196 (not x4450))
+(or x5196 (not x4449))
+(or x5196 (not x4448))
+(or x5196 x4447)
+(or x5191 (not x4451) x4450 x4449 x4448 (not x4447) (not x5196))
+(or x5195 x4451)
+(or x5195 (not x4450))
+(or x5195 (not x4449))
+(or x5195 (not x4448))
+(or x5195 (not x4447))
+(or (not x4451) x4450 x4449 x4448 x4447 (not x5195))
+(or x5205 x4451)
+(or x5205 (not x4450))
+(or x5205 (not x4449))
+(or x5205 (not x4448))
+(or x5205 (not x4447))
+(or x5205 x5206)
+(or (not x4451) x4450 x4449 x4448 x4447 (not x5206) (not x5205))
+(or (not x5205) (not x5196) (not x5197) (not x5204) x5207)
+(or (not x5207) x5205)
+(or (not x5207) x5196)
+(or (not x5207) x5197)
+(or (not x5207) x5204)
+(or x5208 (not x5209))
+(or x5208 (not x5210))
+(or x5208 (not x5211))
+(or x5208 (not x4465))
+(or x5209 x5210 x5211 x4465 (not x5208))
+(or x5212 (not x5209))
+(or x5212 (not x5210))
+(or x5212 (not x5211))
+(or x5212 (not x4464))
+(or x5209 x5210 x5211 x4464 (not x5212))
+(or (not x5213) (not x5214) (not x5215) (not x5212) x5216)
+(or (not x5216) x5213)
+(or (not x5216) x5214)
+(or (not x5216) x5215)
+(or (not x5216) x5212)
+(or x5217 (not x5209))
+(or x5217 (not x5210))
+(or x5217 (not x5211))
+(or x5217 (not x4463))
+(or x5209 x5210 x5211 x4463 (not x5217))
+(or (not x5213) (not x5214) (not x5215) (not x5217) x5218)
+(or (not x5218) x5213)
+(or (not x5218) x5214)
+(or (not x5218) x5215)
+(or (not x5218) x5217)
+(or x5219 (not x5209))
+(or x5219 (not x5210))
+(or x5219 (not x5211))
+(or x5219 (not x4462))
+(or x5209 x5210 x5211 x4462 (not x5219))
+(or (not x5213) (not x5215) (not x5219) x5220)
+(or (not x5220) x5213)
+(or (not x5220) x5215)
+(or (not x5220) x5219)
+(or (not x4465) x4464 x4463 (not x4462) x4461 (not x5145) x5146 x5147 x5148 (not x5149) x5211)
+(or (not x5211) x4465)
+(or (not x5211) (not x4464))
+(or (not x5211) (not x4463))
+(or (not x5211) x4462)
+(or (not x5211) (not x4461))
+(or (not x5211) x5145)
+(or (not x5211) (not x5146))
+(or (not x5211) (not x5147))
+(or (not x5211) (not x5148))
+(or (not x5211) x5149)
+(or x5221 (not x5209))
+(or x5221 (not x5210))
+(or x5221 (not x5211))
+(or x5221 (not x4461))
+(or x5209 x5210 x5211 x4461 (not x5221))
+(or x5215 (not x5209))
+(or x5215 (not x5210))
+(or x5215 x4465)
+(or x5215 (not x4464))
+(or x5215 (not x4463))
+(or x5215 x4462)
+(or x5215 (not x4461))
+(or x5215 x5145)
+(or x5215 (not x5146))
+(or x5215 (not x5147))
+(or x5215 (not x5148))
+(or x5215 x5149)
+(or x5209 x5210 (not x4465) x4464 x4463 (not x4462) x4461 (not x5145) x5146 x5147 x5148 (not x5149) (not x5215))
+(or x5214 (not x5209))
+(or x5214 x4465)
+(or x5214 (not x4464))
+(or x5214 (not x4463))
+(or x5214 (not x4462))
+(or x5214 x4461)
+(or x5209 (not x4465) x4464 x4463 x4462 (not x4461) (not x5214))
+(or x5213 x4465)
+(or x5213 (not x4464))
+(or x5213 (not x4463))
+(or x5213 (not x4462))
+(or x5213 (not x4461))
+(or (not x4465) x4464 x4463 x4462 x4461 (not x5213))
+(or x5222 x4465)
+(or x5222 (not x4464))
+(or x5222 (not x4463))
+(or x5222 (not x4462))
+(or x5222 (not x4461))
+(or x5222 x5223)
+(or (not x4465) x4464 x4463 x4462 x4461 (not x5223) (not x5222))
+(or (not x5222) (not x5214) (not x5215) (not x5221) x5224)
+(or (not x5224) x5222)
+(or (not x5224) x5214)
+(or (not x5224) x5215)
+(or (not x5224) x5221)
+(or x5225 (not x5226))
+(or x5225 (not x5227))
+(or x5225 (not x5228))
+(or x5225 (not x4472))
+(or x5226 x5227 x5228 x4472 (not x5225))
+(or x5229 (not x5226))
+(or x5229 (not x5227))
+(or x5229 (not x5228))
+(or x5229 (not x4471))
+(or x5226 x5227 x5228 x4471 (not x5229))
+(or (not x5230) (not x5231) (not x5232) (not x5229) x5233)
+(or (not x5233) x5230)
+(or (not x5233) x5231)
+(or (not x5233) x5232)
+(or (not x5233) x5229)
+(or x5234 (not x5226))
+(or x5234 (not x5227))
+(or x5234 (not x5228))
+(or x5234 (not x4470))
+(or x5226 x5227 x5228 x4470 (not x5234))
+(or (not x5230) (not x5231) (not x5232) (not x5234) x5235)
+(or (not x5235) x5230)
+(or (not x5235) x5231)
+(or (not x5235) x5232)
+(or (not x5235) x5234)
+(or x5236 (not x5226))
+(or x5236 (not x5227))
+(or x5236 (not x5228))
+(or x5236 (not x4469))
+(or x5226 x5227 x5228 x4469 (not x5236))
+(or (not x5230) (not x5232) (not x5236) x5237)
+(or (not x5237) x5230)
+(or (not x5237) x5232)
+(or (not x5237) x5236)
+(or (not x4472) x4471 x4470 (not x4469) x4468 (not x5167) x5146 x5147 x5148 (not x5149) x5228)
+(or (not x5228) x4472)
+(or (not x5228) (not x4471))
+(or (not x5228) (not x4470))
+(or (not x5228) x4469)
+(or (not x5228) (not x4468))
+(or (not x5228) x5167)
+(or (not x5228) (not x5146))
+(or (not x5228) (not x5147))
+(or (not x5228) (not x5148))
+(or (not x5228) x5149)
+(or x5238 (not x5226))
+(or x5238 (not x5227))
+(or x5238 (not x5228))
+(or x5238 (not x4468))
+(or x5226 x5227 x5228 x4468 (not x5238))
+(or x5232 (not x5226))
+(or x5232 (not x5227))
+(or x5232 x4472)
+(or x5232 (not x4471))
+(or x5232 (not x4470))
+(or x5232 x4469)
+(or x5232 (not x4468))
+(or x5232 x5167)
+(or x5232 (not x5146))
+(or x5232 (not x5147))
+(or x5232 (not x5148))
+(or x5232 x5149)
+(or x5226 x5227 (not x4472) x4471 x4470 (not x4469) x4468 (not x5167) x5146 x5147 x5148 (not x5149) (not x5232))
+(or x5231 (not x5226))
+(or x5231 x4472)
+(or x5231 (not x4471))
+(or x5231 (not x4470))
+(or x5231 (not x4469))
+(or x5231 x4468)
+(or x5226 (not x4472) x4471 x4470 x4469 (not x4468) (not x5231))
+(or x5230 x4472)
+(or x5230 (not x4471))
+(or x5230 (not x4470))
+(or x5230 (not x4469))
+(or x5230 (not x4468))
+(or (not x4472) x4471 x4470 x4469 x4468 (not x5230))
+(or x5239 x4472)
+(or x5239 (not x4471))
+(or x5239 (not x4470))
+(or x5239 (not x4469))
+(or x5239 (not x4468))
+(or x5239 x5240)
+(or (not x4472) x4471 x4470 x4469 x4468 (not x5240) (not x5239))
+(or (not x5239) (not x5231) (not x5232) (not x5238) x5241)
+(or (not x5241) x5239)
+(or (not x5241) x5231)
+(or (not x5241) x5232)
+(or (not x5241) x5238)
+(or x5242 (not x5243))
+(or x5242 (not x5244))
+(or x5242 (not x5245))
+(or x5242 (not x4479))
+(or x5243 x5244 x5245 x4479 (not x5242))
+(or x5246 (not x5243))
+(or x5246 (not x5244))
+(or x5246 (not x5245))
+(or x5246 (not x4478))
+(or x5243 x5244 x5245 x4478 (not x5246))
+(or (not x5247) (not x5248) (not x5249) (not x5246) x5250)
+(or (not x5250) x5247)
+(or (not x5250) x5248)
+(or (not x5250) x5249)
+(or (not x5250) x5246)
+(or x5251 (not x5243))
+(or x5251 (not x5244))
+(or x5251 (not x5245))
+(or x5251 (not x4477))
+(or x5243 x5244 x5245 x4477 (not x5251))
+(or (not x5247) (not x5248) (not x5249) (not x5251) x5252)
+(or (not x5252) x5247)
+(or (not x5252) x5248)
+(or (not x5252) x5249)
+(or (not x5252) x5251)
+(or x5253 (not x5243))
+(or x5253 (not x5244))
+(or x5253 (not x5245))
+(or x5253 (not x4476))
+(or x5243 x5244 x5245 x4476 (not x5253))
+(or (not x5247) (not x5249) (not x5253) x5254)
+(or (not x5254) x5247)
+(or (not x5254) x5249)
+(or (not x5254) x5253)
+(or (not x4479) x4478 x4477 (not x4476) x4475 (not x5185) x5146 x5147 x5148 (not x5149) x5245)
+(or (not x5245) x4479)
+(or (not x5245) (not x4478))
+(or (not x5245) (not x4477))
+(or (not x5245) x4476)
+(or (not x5245) (not x4475))
+(or (not x5245) x5185)
+(or (not x5245) (not x5146))
+(or (not x5245) (not x5147))
+(or (not x5245) (not x5148))
+(or (not x5245) x5149)
+(or x5255 (not x5243))
+(or x5255 (not x5244))
+(or x5255 (not x5245))
+(or x5255 (not x4475))
+(or x5243 x5244 x5245 x4475 (not x5255))
+(or x5249 (not x5243))
+(or x5249 (not x5244))
+(or x5249 x4479)
+(or x5249 (not x4478))
+(or x5249 (not x4477))
+(or x5249 x4476)
+(or x5249 (not x4475))
+(or x5249 x5185)
+(or x5249 (not x5146))
+(or x5249 (not x5147))
+(or x5249 (not x5148))
+(or x5249 x5149)
+(or x5243 x5244 (not x4479) x4478 x4477 (not x4476) x4475 (not x5185) x5146 x5147 x5148 (not x5149) (not x5249))
+(or x5248 (not x5243))
+(or x5248 x4479)
+(or x5248 (not x4478))
+(or x5248 (not x4477))
+(or x5248 (not x4476))
+(or x5248 x4475)
+(or x5243 (not x4479) x4478 x4477 x4476 (not x4475) (not x5248))
+(or x5247 x4479)
+(or x5247 (not x4478))
+(or x5247 (not x4477))
+(or x5247 (not x4476))
+(or x5247 (not x4475))
+(or (not x4479) x4478 x4477 x4476 x4475 (not x5247))
+(or x5256 x4479)
+(or x5256 (not x4478))
+(or x5256 (not x4477))
+(or x5256 (not x4476))
+(or x5256 (not x4475))
+(or x5256 x5257)
+(or (not x4479) x4478 x4477 x4476 x4475 (not x5257) (not x5256))
+(or (not x5256) (not x5248) (not x5249) (not x5255) x5258)
+(or (not x5258) x5256)
+(or (not x5258) x5248)
+(or (not x5258) x5249)
+(or (not x5258) x5255)
+(or x5259 (not x5260))
+(or x5259 (not x5261))
+(or x5259 (not x5262))
+(or x5259 (not x4486))
+(or x5260 x5261 x5262 x4486 (not x5259))
+(or x5263 (not x5260))
+(or x5263 (not x5261))
+(or x5263 (not x5262))
+(or x5263 (not x4485))
+(or x5260 x5261 x5262 x4485 (not x5263))
+(or (not x5264) (not x5265) (not x5266) (not x5263) x5267)
+(or (not x5267) x5264)
+(or (not x5267) x5265)
+(or (not x5267) x5266)
+(or (not x5267) x5263)
+(or x5268 (not x5260))
+(or x5268 (not x5261))
+(or x5268 (not x5262))
+(or x5268 (not x4484))
+(or x5260 x5261 x5262 x4484 (not x5268))
+(or (not x5264) (not x5265) (not x5266) (not x5268) x5269)
+(or (not x5269) x5264)
+(or (not x5269) x5265)
+(or (not x5269) x5266)
+(or (not x5269) x5268)
+(or x5270 (not x5260))
+(or x5270 (not x5261))
+(or x5270 (not x5262))
+(or x5270 (not x4483))
+(or x5260 x5261 x5262 x4483 (not x5270))
+(or (not x5264) (not x5266) (not x5270) x5271)
+(or (not x5271) x5264)
+(or (not x5271) x5266)
+(or (not x5271) x5270)
+(or (not x4486) x4485 x4484 (not x4483) x4482 (not x5203) x5146 x5147 x5148 (not x5149) x5262)
+(or (not x5262) x4486)
+(or (not x5262) (not x4485))
+(or (not x5262) (not x4484))
+(or (not x5262) x4483)
+(or (not x5262) (not x4482))
+(or (not x5262) x5203)
+(or (not x5262) (not x5146))
+(or (not x5262) (not x5147))
+(or (not x5262) (not x5148))
+(or (not x5262) x5149)
+(or x5272 (not x5260))
+(or x5272 (not x5261))
+(or x5272 (not x5262))
+(or x5272 (not x4482))
+(or x5260 x5261 x5262 x4482 (not x5272))
+(or x5266 (not x5260))
+(or x5266 (not x5261))
+(or x5266 x4486)
+(or x5266 (not x4485))
+(or x5266 (not x4484))
+(or x5266 x4483)
+(or x5266 (not x4482))
+(or x5266 x5203)
+(or x5266 (not x5146))
+(or x5266 (not x5147))
+(or x5266 (not x5148))
+(or x5266 x5149)
+(or x5260 x5261 (not x4486) x4485 x4484 (not x4483) x4482 (not x5203) x5146 x5147 x5148 (not x5149) (not x5266))
+(or x5265 (not x5260))
+(or x5265 x4486)
+(or x5265 (not x4485))
+(or x5265 (not x4484))
+(or x5265 (not x4483))
+(or x5265 x4482)
+(or x5260 (not x4486) x4485 x4484 x4483 (not x4482) (not x5265))
+(or x5264 x4486)
+(or x5264 (not x4485))
+(or x5264 (not x4484))
+(or x5264 (not x4483))
+(or x5264 (not x4482))
+(or (not x4486) x4485 x4484 x4483 x4482 (not x5264))
+(or x5273 x4486)
+(or x5273 (not x4485))
+(or x5273 (not x4484))
+(or x5273 (not x4483))
+(or x5273 (not x4482))
+(or x5273 x5274)
+(or (not x4486) x4485 x4484 x4483 x4482 (not x5274) (not x5273))
+(or (not x5273) (not x5265) (not x5266) (not x5272) x5275)
+(or (not x5275) x5273)
+(or (not x5275) x5265)
+(or (not x5275) x5266)
+(or (not x5275) x5272)
+(or x5276 (not x5277))
+(or x5276 (not x5278))
+(or x5276 (not x5279))
+(or x5276 (not x4500))
+(or x5277 x5278 x5279 x4500 (not x5276))
+(or x5280 (not x5277))
+(or x5280 (not x5278))
+(or x5280 (not x5279))
+(or x5280 (not x4499))
+(or x5277 x5278 x5279 x4499 (not x5280))
+(or (not x5281) (not x5282) (not x5283) (not x5280) x5284)
+(or (not x5284) x5281)
+(or (not x5284) x5282)
+(or (not x5284) x5283)
+(or (not x5284) x5280)
+(or x5285 (not x5277))
+(or x5285 (not x5278))
+(or x5285 (not x5279))
+(or x5285 (not x4498))
+(or x5277 x5278 x5279 x4498 (not x5285))
+(or (not x5281) (not x5282) (not x5283) (not x5285) x5286)
+(or (not x5286) x5281)
+(or (not x5286) x5282)
+(or (not x5286) x5283)
+(or (not x5286) x5285)
+(or x5287 (not x5277))
+(or x5287 (not x5278))
+(or x5287 (not x5279))
+(or x5287 (not x4497))
+(or x5277 x5278 x5279 x4497 (not x5287))
+(or (not x5281) (not x5283) (not x5287) x5288)
+(or (not x5288) x5281)
+(or (not x5288) x5283)
+(or (not x5288) x5287)
+(or (not x4500) x4499 x4498 (not x4497) x4496 (not x5145) x5146 x5147 (not x5148) x5149 x5279)
+(or (not x5279) x4500)
+(or (not x5279) (not x4499))
+(or (not x5279) (not x4498))
+(or (not x5279) x4497)
+(or (not x5279) (not x4496))
+(or (not x5279) x5145)
+(or (not x5279) (not x5146))
+(or (not x5279) (not x5147))
+(or (not x5279) x5148)
+(or (not x5279) (not x5149))
+(or x5289 (not x5277))
+(or x5289 (not x5278))
+(or x5289 (not x5279))
+(or x5289 (not x4496))
+(or x5277 x5278 x5279 x4496 (not x5289))
+(or x5283 (not x5277))
+(or x5283 (not x5278))
+(or x5283 x4500)
+(or x5283 (not x4499))
+(or x5283 (not x4498))
+(or x5283 x4497)
+(or x5283 (not x4496))
+(or x5283 x5145)
+(or x5283 (not x5146))
+(or x5283 (not x5147))
+(or x5283 x5148)
+(or x5283 (not x5149))
+(or x5277 x5278 (not x4500) x4499 x4498 (not x4497) x4496 (not x5145) x5146 x5147 (not x5148) x5149 (not x5283))
+(or x5282 (not x5277))
+(or x5282 x4500)
+(or x5282 (not x4499))
+(or x5282 (not x4498))
+(or x5282 (not x4497))
+(or x5282 x4496)
+(or x5277 (not x4500) x4499 x4498 x4497 (not x4496) (not x5282))
+(or x5281 x4500)
+(or x5281 (not x4499))
+(or x5281 (not x4498))
+(or x5281 (not x4497))
+(or x5281 (not x4496))
+(or (not x4500) x4499 x4498 x4497 x4496 (not x5281))
+(or x5290 x4500)
+(or x5290 (not x4499))
+(or x5290 (not x4498))
+(or x5290 (not x4497))
+(or x5290 (not x4496))
+(or x5290 x5291)
+(or (not x4500) x4499 x4498 x4497 x4496 (not x5291) (not x5290))
+(or (not x5290) (not x5282) (not x5283) (not x5289) x5292)
+(or (not x5292) x5290)
+(or (not x5292) x5282)
+(or (not x5292) x5283)
+(or (not x5292) x5289)
+(or x5293 (not x5294))
+(or x5293 (not x5295))
+(or x5293 (not x5296))
+(or x5293 (not x4507))
+(or x5294 x5295 x5296 x4507 (not x5293))
+(or x5297 (not x5294))
+(or x5297 (not x5295))
+(or x5297 (not x5296))
+(or x5297 (not x4506))
+(or x5294 x5295 x5296 x4506 (not x5297))
+(or (not x5298) (not x5299) (not x5300) (not x5297) x5301)
+(or (not x5301) x5298)
+(or (not x5301) x5299)
+(or (not x5301) x5300)
+(or (not x5301) x5297)
+(or x5302 (not x5294))
+(or x5302 (not x5295))
+(or x5302 (not x5296))
+(or x5302 (not x4505))
+(or x5294 x5295 x5296 x4505 (not x5302))
+(or (not x5298) (not x5299) (not x5300) (not x5302) x5303)
+(or (not x5303) x5298)
+(or (not x5303) x5299)
+(or (not x5303) x5300)
+(or (not x5303) x5302)
+(or x5304 (not x5294))
+(or x5304 (not x5295))
+(or x5304 (not x5296))
+(or x5304 (not x4504))
+(or x5294 x5295 x5296 x4504 (not x5304))
+(or (not x5298) (not x5300) (not x5304) x5305)
+(or (not x5305) x5298)
+(or (not x5305) x5300)
+(or (not x5305) x5304)
+(or (not x4507) x4506 x4505 (not x4504) x4503 (not x5167) x5146 x5147 (not x5148) x5149 x5296)
+(or (not x5296) x4507)
+(or (not x5296) (not x4506))
+(or (not x5296) (not x4505))
+(or (not x5296) x4504)
+(or (not x5296) (not x4503))
+(or (not x5296) x5167)
+(or (not x5296) (not x5146))
+(or (not x5296) (not x5147))
+(or (not x5296) x5148)
+(or (not x5296) (not x5149))
+(or x5306 (not x5294))
+(or x5306 (not x5295))
+(or x5306 (not x5296))
+(or x5306 (not x4503))
+(or x5294 x5295 x5296 x4503 (not x5306))
+(or x5300 (not x5294))
+(or x5300 (not x5295))
+(or x5300 x4507)
+(or x5300 (not x4506))
+(or x5300 (not x4505))
+(or x5300 x4504)
+(or x5300 (not x4503))
+(or x5300 x5167)
+(or x5300 (not x5146))
+(or x5300 (not x5147))
+(or x5300 x5148)
+(or x5300 (not x5149))
+(or x5294 x5295 (not x4507) x4506 x4505 (not x4504) x4503 (not x5167) x5146 x5147 (not x5148) x5149 (not x5300))
+(or x5299 (not x5294))
+(or x5299 x4507)
+(or x5299 (not x4506))
+(or x5299 (not x4505))
+(or x5299 (not x4504))
+(or x5299 x4503)
+(or x5294 (not x4507) x4506 x4505 x4504 (not x4503) (not x5299))
+(or x5298 x4507)
+(or x5298 (not x4506))
+(or x5298 (not x4505))
+(or x5298 (not x4504))
+(or x5298 (not x4503))
+(or (not x4507) x4506 x4505 x4504 x4503 (not x5298))
+(or x5307 x4507)
+(or x5307 (not x4506))
+(or x5307 (not x4505))
+(or x5307 (not x4504))
+(or x5307 (not x4503))
+(or x5307 x5308)
+(or (not x4507) x4506 x4505 x4504 x4503 (not x5308) (not x5307))
+(or (not x5307) (not x5299) (not x5300) (not x5306) x5309)
+(or (not x5309) x5307)
+(or (not x5309) x5299)
+(or (not x5309) x5300)
+(or (not x5309) x5306)
+(or x5310 (not x5311))
+(or x5310 (not x5312))
+(or x5310 (not x5313))
+(or x5310 (not x4514))
+(or x5311 x5312 x5313 x4514 (not x5310))
+(or x5314 (not x5311))
+(or x5314 (not x5312))
+(or x5314 (not x5313))
+(or x5314 (not x4513))
+(or x5311 x5312 x5313 x4513 (not x5314))
+(or (not x5315) (not x5316) (not x5317) (not x5314) x5318)
+(or (not x5318) x5315)
+(or (not x5318) x5316)
+(or (not x5318) x5317)
+(or (not x5318) x5314)
+(or x5319 (not x5311))
+(or x5319 (not x5312))
+(or x5319 (not x5313))
+(or x5319 (not x4512))
+(or x5311 x5312 x5313 x4512 (not x5319))
+(or (not x5315) (not x5316) (not x5317) (not x5319) x5320)
+(or (not x5320) x5315)
+(or (not x5320) x5316)
+(or (not x5320) x5317)
+(or (not x5320) x5319)
+(or x5321 (not x5311))
+(or x5321 (not x5312))
+(or x5321 (not x5313))
+(or x5321 (not x4511))
+(or x5311 x5312 x5313 x4511 (not x5321))
+(or (not x5315) (not x5317) (not x5321) x5322)
+(or (not x5322) x5315)
+(or (not x5322) x5317)
+(or (not x5322) x5321)
+(or (not x4514) x4513 x4512 (not x4511) x4510 (not x5185) x5146 x5147 (not x5148) x5149 x5313)
+(or (not x5313) x4514)
+(or (not x5313) (not x4513))
+(or (not x5313) (not x4512))
+(or (not x5313) x4511)
+(or (not x5313) (not x4510))
+(or (not x5313) x5185)
+(or (not x5313) (not x5146))
+(or (not x5313) (not x5147))
+(or (not x5313) x5148)
+(or (not x5313) (not x5149))
+(or x5323 (not x5311))
+(or x5323 (not x5312))
+(or x5323 (not x5313))
+(or x5323 (not x4510))
+(or x5311 x5312 x5313 x4510 (not x5323))
+(or x5317 (not x5311))
+(or x5317 (not x5312))
+(or x5317 x4514)
+(or x5317 (not x4513))
+(or x5317 (not x4512))
+(or x5317 x4511)
+(or x5317 (not x4510))
+(or x5317 x5185)
+(or x5317 (not x5146))
+(or x5317 (not x5147))
+(or x5317 x5148)
+(or x5317 (not x5149))
+(or x5311 x5312 (not x4514) x4513 x4512 (not x4511) x4510 (not x5185) x5146 x5147 (not x5148) x5149 (not x5317))
+(or x5316 (not x5311))
+(or x5316 x4514)
+(or x5316 (not x4513))
+(or x5316 (not x4512))
+(or x5316 (not x4511))
+(or x5316 x4510)
+(or x5311 (not x4514) x4513 x4512 x4511 (not x4510) (not x5316))
+(or x5315 x4514)
+(or x5315 (not x4513))
+(or x5315 (not x4512))
+(or x5315 (not x4511))
+(or x5315 (not x4510))
+(or (not x4514) x4513 x4512 x4511 x4510 (not x5315))
+(or x5324 x4514)
+(or x5324 (not x4513))
+(or x5324 (not x4512))
+(or x5324 (not x4511))
+(or x5324 (not x4510))
+(or x5324 x5325)
+(or (not x4514) x4513 x4512 x4511 x4510 (not x5325) (not x5324))
+(or (not x5324) (not x5316) (not x5317) (not x5323) x5326)
+(or (not x5326) x5324)
+(or (not x5326) x5316)
+(or (not x5326) x5317)
+(or (not x5326) x5323)
+(or x5327 (not x5328))
+(or x5327 (not x5329))
+(or x5327 (not x5330))
+(or x5327 (not x4521))
+(or x5328 x5329 x5330 x4521 (not x5327))
+(or x5331 (not x5328))
+(or x5331 (not x5329))
+(or x5331 (not x5330))
+(or x5331 (not x4520))
+(or x5328 x5329 x5330 x4520 (not x5331))
+(or (not x5332) (not x5333) (not x5334) (not x5331) x5335)
+(or (not x5335) x5332)
+(or (not x5335) x5333)
+(or (not x5335) x5334)
+(or (not x5335) x5331)
+(or x5336 (not x5328))
+(or x5336 (not x5329))
+(or x5336 (not x5330))
+(or x5336 (not x4519))
+(or x5328 x5329 x5330 x4519 (not x5336))
+(or (not x5332) (not x5333) (not x5334) (not x5336) x5337)
+(or (not x5337) x5332)
+(or (not x5337) x5333)
+(or (not x5337) x5334)
+(or (not x5337) x5336)
+(or x5338 (not x5328))
+(or x5338 (not x5329))
+(or x5338 (not x5330))
+(or x5338 (not x4518))
+(or x5328 x5329 x5330 x4518 (not x5338))
+(or (not x5332) (not x5334) (not x5338) x5339)
+(or (not x5339) x5332)
+(or (not x5339) x5334)
+(or (not x5339) x5338)
+(or (not x4521) x4520 x4519 (not x4518) x4517 (not x5203) x5146 x5147 (not x5148) x5149 x5330)
+(or (not x5330) x4521)
+(or (not x5330) (not x4520))
+(or (not x5330) (not x4519))
+(or (not x5330) x4518)
+(or (not x5330) (not x4517))
+(or (not x5330) x5203)
+(or (not x5330) (not x5146))
+(or (not x5330) (not x5147))
+(or (not x5330) x5148)
+(or (not x5330) (not x5149))
+(or x5340 (not x5328))
+(or x5340 (not x5329))
+(or x5340 (not x5330))
+(or x5340 (not x4517))
+(or x5328 x5329 x5330 x4517 (not x5340))
+(or x5334 (not x5328))
+(or x5334 (not x5329))
+(or x5334 x4521)
+(or x5334 (not x4520))
+(or x5334 (not x4519))
+(or x5334 x4518)
+(or x5334 (not x4517))
+(or x5334 x5203)
+(or x5334 (not x5146))
+(or x5334 (not x5147))
+(or x5334 x5148)
+(or x5334 (not x5149))
+(or x5328 x5329 (not x4521) x4520 x4519 (not x4518) x4517 (not x5203) x5146 x5147 (not x5148) x5149 (not x5334))
+(or x5333 (not x5328))
+(or x5333 x4521)
+(or x5333 (not x4520))
+(or x5333 (not x4519))
+(or x5333 (not x4518))
+(or x5333 x4517)
+(or x5328 (not x4521) x4520 x4519 x4518 (not x4517) (not x5333))
+(or x5332 x4521)
+(or x5332 (not x4520))
+(or x5332 (not x4519))
+(or x5332 (not x4518))
+(or x5332 (not x4517))
+(or (not x4521) x4520 x4519 x4518 x4517 (not x5332))
+(or x5341 x4521)
+(or x5341 (not x4520))
+(or x5341 (not x4519))
+(or x5341 (not x4518))
+(or x5341 (not x4517))
+(or x5341 x5342)
+(or (not x4521) x4520 x4519 x4518 x4517 (not x5342) (not x5341))
+(or (not x5341) (not x5333) (not x5334) (not x5340) x5343)
+(or (not x5343) x5341)
+(or (not x5343) x5333)
+(or (not x5343) x5334)
+(or (not x5343) x5340)
+(or x5344 (not x5345))
+(or x5344 (not x5346))
+(or x5344 (not x5347))
+(or x5344 (not x4535))
+(or x5345 x5346 x5347 x4535 (not x5344))
+(or x5348 (not x5345))
+(or x5348 (not x5346))
+(or x5348 (not x5347))
+(or x5348 (not x4534))
+(or x5345 x5346 x5347 x4534 (not x5348))
+(or (not x5349) (not x5350) (not x5351) (not x5348) x5352)
+(or (not x5352) x5349)
+(or (not x5352) x5350)
+(or (not x5352) x5351)
+(or (not x5352) x5348)
+(or x5353 (not x5345))
+(or x5353 (not x5346))
+(or x5353 (not x5347))
+(or x5353 (not x4533))
+(or x5345 x5346 x5347 x4533 (not x5353))
+(or (not x5349) (not x5350) (not x5351) (not x5353) x5354)
+(or (not x5354) x5349)
+(or (not x5354) x5350)
+(or (not x5354) x5351)
+(or (not x5354) x5353)
+(or x5355 (not x5345))
+(or x5355 (not x5346))
+(or x5355 (not x5347))
+(or x5355 (not x4532))
+(or x5345 x5346 x5347 x4532 (not x5355))
+(or (not x5349) (not x5351) (not x5355) x5356)
+(or (not x5356) x5349)
+(or (not x5356) x5351)
+(or (not x5356) x5355)
+(or (not x4535) x4534 x4533 (not x4532) x4531 (not x5145) x5146 x5147 x5148 x5149 x5347)
+(or (not x5347) x4535)
+(or (not x5347) (not x4534))
+(or (not x5347) (not x4533))
+(or (not x5347) x4532)
+(or (not x5347) (not x4531))
+(or (not x5347) x5145)
+(or (not x5347) (not x5146))
+(or (not x5347) (not x5147))
+(or (not x5347) (not x5148))
+(or (not x5347) (not x5149))
+(or x5357 (not x5345))
+(or x5357 (not x5346))
+(or x5357 (not x5347))
+(or x5357 (not x4531))
+(or x5345 x5346 x5347 x4531 (not x5357))
+(or x5351 (not x5345))
+(or x5351 (not x5346))
+(or x5351 x4535)
+(or x5351 (not x4534))
+(or x5351 (not x4533))
+(or x5351 x4532)
+(or x5351 (not x4531))
+(or x5351 x5145)
+(or x5351 (not x5146))
+(or x5351 (not x5147))
+(or x5351 (not x5148))
+(or x5351 (not x5149))
+(or x5345 x5346 (not x4535) x4534 x4533 (not x4532) x4531 (not x5145) x5146 x5147 x5148 x5149 (not x5351))
+(or x5350 (not x5345))
+(or x5350 x4535)
+(or x5350 (not x4534))
+(or x5350 (not x4533))
+(or x5350 (not x4532))
+(or x5350 x4531)
+(or x5345 (not x4535) x4534 x4533 x4532 (not x4531) (not x5350))
+(or x5349 x4535)
+(or x5349 (not x4534))
+(or x5349 (not x4533))
+(or x5349 (not x4532))
+(or x5349 (not x4531))
+(or (not x4535) x4534 x4533 x4532 x4531 (not x5349))
+(or x5358 x4535)
+(or x5358 (not x4534))
+(or x5358 (not x4533))
+(or x5358 (not x4532))
+(or x5358 (not x4531))
+(or x5358 x5359)
+(or (not x4535) x4534 x4533 x4532 x4531 (not x5359) (not x5358))
+(or (not x5358) (not x5350) (not x5351) (not x5357) x5360)
+(or (not x5360) x5358)
+(or (not x5360) x5350)
+(or (not x5360) x5351)
+(or (not x5360) x5357)
+(or x5361 (not x5362))
+(or x5361 (not x5363))
+(or x5361 (not x5364))
+(or x5361 (not x4542))
+(or x5362 x5363 x5364 x4542 (not x5361))
+(or x5365 (not x5362))
+(or x5365 (not x5363))
+(or x5365 (not x5364))
+(or x5365 (not x4541))
+(or x5362 x5363 x5364 x4541 (not x5365))
+(or (not x5366) (not x5367) (not x5368) (not x5365) x5369)
+(or (not x5369) x5366)
+(or (not x5369) x5367)
+(or (not x5369) x5368)
+(or (not x5369) x5365)
+(or x5370 (not x5362))
+(or x5370 (not x5363))
+(or x5370 (not x5364))
+(or x5370 (not x4540))
+(or x5362 x5363 x5364 x4540 (not x5370))
+(or (not x5366) (not x5367) (not x5368) (not x5370) x5371)
+(or (not x5371) x5366)
+(or (not x5371) x5367)
+(or (not x5371) x5368)
+(or (not x5371) x5370)
+(or x5372 (not x5362))
+(or x5372 (not x5363))
+(or x5372 (not x5364))
+(or x5372 (not x4539))
+(or x5362 x5363 x5364 x4539 (not x5372))
+(or (not x5366) (not x5368) (not x5372) x5373)
+(or (not x5373) x5366)
+(or (not x5373) x5368)
+(or (not x5373) x5372)
+(or (not x4542) x4541 x4540 (not x4539) x4538 (not x5167) x5146 x5147 x5148 x5149 x5364)
+(or (not x5364) x4542)
+(or (not x5364) (not x4541))
+(or (not x5364) (not x4540))
+(or (not x5364) x4539)
+(or (not x5364) (not x4538))
+(or (not x5364) x5167)
+(or (not x5364) (not x5146))
+(or (not x5364) (not x5147))
+(or (not x5364) (not x5148))
+(or (not x5364) (not x5149))
+(or x5374 (not x5362))
+(or x5374 (not x5363))
+(or x5374 (not x5364))
+(or x5374 (not x4538))
+(or x5362 x5363 x5364 x4538 (not x5374))
+(or x5368 (not x5362))
+(or x5368 (not x5363))
+(or x5368 x4542)
+(or x5368 (not x4541))
+(or x5368 (not x4540))
+(or x5368 x4539)
+(or x5368 (not x4538))
+(or x5368 x5167)
+(or x5368 (not x5146))
+(or x5368 (not x5147))
+(or x5368 (not x5148))
+(or x5368 (not x5149))
+(or x5362 x5363 (not x4542) x4541 x4540 (not x4539) x4538 (not x5167) x5146 x5147 x5148 x5149 (not x5368))
+(or x5367 (not x5362))
+(or x5367 x4542)
+(or x5367 (not x4541))
+(or x5367 (not x4540))
+(or x5367 (not x4539))
+(or x5367 x4538)
+(or x5362 (not x4542) x4541 x4540 x4539 (not x4538) (not x5367))
+(or x5366 x4542)
+(or x5366 (not x4541))
+(or x5366 (not x4540))
+(or x5366 (not x4539))
+(or x5366 (not x4538))
+(or (not x4542) x4541 x4540 x4539 x4538 (not x5366))
+(or x5375 x4542)
+(or x5375 (not x4541))
+(or x5375 (not x4540))
+(or x5375 (not x4539))
+(or x5375 (not x4538))
+(or x5375 x5376)
+(or (not x4542) x4541 x4540 x4539 x4538 (not x5376) (not x5375))
+(or (not x5375) (not x5367) (not x5368) (not x5374) x5377)
+(or (not x5377) x5375)
+(or (not x5377) x5367)
+(or (not x5377) x5368)
+(or (not x5377) x5374)
+(or x5378 (not x5379))
+(or x5378 (not x5380))
+(or x5378 (not x5381))
+(or x5378 (not x4549))
+(or x5379 x5380 x5381 x4549 (not x5378))
+(or x5382 (not x5379))
+(or x5382 (not x5380))
+(or x5382 (not x5381))
+(or x5382 (not x4548))
+(or x5379 x5380 x5381 x4548 (not x5382))
+(or (not x5383) (not x5384) (not x5385) (not x5382) x5386)
+(or (not x5386) x5383)
+(or (not x5386) x5384)
+(or (not x5386) x5385)
+(or (not x5386) x5382)
+(or x5387 (not x5379))
+(or x5387 (not x5380))
+(or x5387 (not x5381))
+(or x5387 (not x4547))
+(or x5379 x5380 x5381 x4547 (not x5387))
+(or (not x5383) (not x5384) (not x5385) (not x5387) x5388)
+(or (not x5388) x5383)
+(or (not x5388) x5384)
+(or (not x5388) x5385)
+(or (not x5388) x5387)
+(or x5389 (not x5379))
+(or x5389 (not x5380))
+(or x5389 (not x5381))
+(or x5389 (not x4546))
+(or x5379 x5380 x5381 x4546 (not x5389))
+(or (not x5383) (not x5385) (not x5389) x5390)
+(or (not x5390) x5383)
+(or (not x5390) x5385)
+(or (not x5390) x5389)
+(or (not x4549) x4548 x4547 (not x4546) x4545 (not x5185) x5146 x5147 x5148 x5149 x5381)
+(or (not x5381) x4549)
+(or (not x5381) (not x4548))
+(or (not x5381) (not x4547))
+(or (not x5381) x4546)
+(or (not x5381) (not x4545))
+(or (not x5381) x5185)
+(or (not x5381) (not x5146))
+(or (not x5381) (not x5147))
+(or (not x5381) (not x5148))
+(or (not x5381) (not x5149))
+(or x5391 (not x5379))
+(or x5391 (not x5380))
+(or x5391 (not x5381))
+(or x5391 (not x4545))
+(or x5379 x5380 x5381 x4545 (not x5391))
+(or x5385 (not x5379))
+(or x5385 (not x5380))
+(or x5385 x4549)
+(or x5385 (not x4548))
+(or x5385 (not x4547))
+(or x5385 x4546)
+(or x5385 (not x4545))
+(or x5385 x5185)
+(or x5385 (not x5146))
+(or x5385 (not x5147))
+(or x5385 (not x5148))
+(or x5385 (not x5149))
+(or x5379 x5380 (not x4549) x4548 x4547 (not x4546) x4545 (not x5185) x5146 x5147 x5148 x5149 (not x5385))
+(or x5384 (not x5379))
+(or x5384 x4549)
+(or x5384 (not x4548))
+(or x5384 (not x4547))
+(or x5384 (not x4546))
+(or x5384 x4545)
+(or x5379 (not x4549) x4548 x4547 x4546 (not x4545) (not x5384))
+(or x5383 x4549)
+(or x5383 (not x4548))
+(or x5383 (not x4547))
+(or x5383 (not x4546))
+(or x5383 (not x4545))
+(or (not x4549) x4548 x4547 x4546 x4545 (not x5383))
+(or x5392 x4549)
+(or x5392 (not x4548))
+(or x5392 (not x4547))
+(or x5392 (not x4546))
+(or x5392 (not x4545))
+(or x5392 x5393)
+(or (not x4549) x4548 x4547 x4546 x4545 (not x5393) (not x5392))
+(or (not x5392) (not x5384) (not x5385) (not x5391) x5394)
+(or (not x5394) x5392)
+(or (not x5394) x5384)
+(or (not x5394) x5385)
+(or (not x5394) x5391)
+(or x5395 (not x5396))
+(or x5395 (not x5397))
+(or x5395 (not x5398))
+(or x5395 (not x4556))
+(or x5396 x5397 x5398 x4556 (not x5395))
+(or x5399 (not x5396))
+(or x5399 (not x5397))
+(or x5399 (not x5398))
+(or x5399 (not x4555))
+(or x5396 x5397 x5398 x4555 (not x5399))
+(or (not x5400) (not x5401) (not x5402) (not x5399) x5403)
+(or (not x5403) x5400)
+(or (not x5403) x5401)
+(or (not x5403) x5402)
+(or (not x5403) x5399)
+(or x5404 (not x5396))
+(or x5404 (not x5397))
+(or x5404 (not x5398))
+(or x5404 (not x4554))
+(or x5396 x5397 x5398 x4554 (not x5404))
+(or (not x5400) (not x5401) (not x5402) (not x5404) x5405)
+(or (not x5405) x5400)
+(or (not x5405) x5401)
+(or (not x5405) x5402)
+(or (not x5405) x5404)
+(or x5406 (not x5396))
+(or x5406 (not x5397))
+(or x5406 (not x5398))
+(or x5406 (not x4553))
+(or x5396 x5397 x5398 x4553 (not x5406))
+(or (not x5400) (not x5402) (not x5406) x5407)
+(or (not x5407) x5400)
+(or (not x5407) x5402)
+(or (not x5407) x5406)
+(or (not x4556) x4555 x4554 (not x4553) x4552 (not x5203) x5146 x5147 x5148 x5149 x5398)
+(or (not x5398) x4556)
+(or (not x5398) (not x4555))
+(or (not x5398) (not x4554))
+(or (not x5398) x4553)
+(or (not x5398) (not x4552))
+(or (not x5398) x5203)
+(or (not x5398) (not x5146))
+(or (not x5398) (not x5147))
+(or (not x5398) (not x5148))
+(or (not x5398) (not x5149))
+(or x5408 (not x5396))
+(or x5408 (not x5397))
+(or x5408 (not x5398))
+(or x5408 (not x4552))
+(or x5396 x5397 x5398 x4552 (not x5408))
+(or x5402 (not x5396))
+(or x5402 (not x5397))
+(or x5402 x4556)
+(or x5402 (not x4555))
+(or x5402 (not x4554))
+(or x5402 x4553)
+(or x5402 (not x4552))
+(or x5402 x5203)
+(or x5402 (not x5146))
+(or x5402 (not x5147))
+(or x5402 (not x5148))
+(or x5402 (not x5149))
+(or x5396 x5397 (not x4556) x4555 x4554 (not x4553) x4552 (not x5203) x5146 x5147 x5148 x5149 (not x5402))
+(or x5401 (not x5396))
+(or x5401 x4556)
+(or x5401 (not x4555))
+(or x5401 (not x4554))
+(or x5401 (not x4553))
+(or x5401 x4552)
+(or x5396 (not x4556) x4555 x4554 x4553 (not x4552) (not x5401))
+(or x5400 x4556)
+(or x5400 (not x4555))
+(or x5400 (not x4554))
+(or x5400 (not x4553))
+(or x5400 (not x4552))
+(or (not x4556) x4555 x4554 x4553 x4552 (not x5400))
+(or x5409 x4556)
+(or x5409 (not x4555))
+(or x5409 (not x4554))
+(or x5409 (not x4553))
+(or x5409 (not x4552))
+(or x5409 x5410)
+(or (not x4556) x4555 x4554 x4553 x4552 (not x5410) (not x5409))
+(or (not x5409) (not x5401) (not x5402) (not x5408) x5411)
+(or (not x5411) x5409)
+(or (not x5411) x5401)
+(or (not x5411) x5402)
+(or (not x5411) x5408)
+(or x5412 (not x5413))
+(or x5412 (not x5414))
+(or x5412 (not x5415))
+(or x5412 (not x4892))
+(or x5413 x5414 x5415 x4892 (not x5412))
+(or x5416 (not x5413))
+(or x5416 (not x5414))
+(or x5416 (not x5415))
+(or x5416 (not x4891))
+(or x5413 x5414 x5415 x4891 (not x5416))
+(or (not x5417) (not x5418) (not x5419) (not x5416) x5420)
+(or (not x5420) x5417)
+(or (not x5420) x5418)
+(or (not x5420) x5419)
+(or (not x5420) x5416)
+(or x5421 (not x5413))
+(or x5421 (not x5414))
+(or x5421 (not x5415))
+(or x5421 (not x4890))
+(or x5413 x5414 x5415 x4890 (not x5421))
+(or (not x5417) (not x5418) (not x5419) (not x5421) x5422)
+(or (not x5422) x5417)
+(or (not x5422) x5418)
+(or (not x5422) x5419)
+(or (not x5422) x5421)
+(or x5423 (not x5413))
+(or x5423 (not x5414))
+(or x5423 (not x5415))
+(or x5423 (not x4889))
+(or x5413 x5414 x5415 x4889 (not x5423))
+(or (not x5417) (not x5419) (not x5423) x5424)
+(or (not x5424) x5417)
+(or (not x5424) x5419)
+(or (not x5424) x5423)
+(or (not x4892) x4891 x4890 (not x4889) x4888 (not x5145) (not x5146) (not x5147) x5148 x5149 x5415)
+(or (not x5415) x4892)
+(or (not x5415) (not x4891))
+(or (not x5415) (not x4890))
+(or (not x5415) x4889)
+(or (not x5415) (not x4888))
+(or (not x5415) x5145)
+(or (not x5415) x5146)
+(or (not x5415) x5147)
+(or (not x5415) (not x5148))
+(or (not x5415) (not x5149))
+(or x5425 (not x5413))
+(or x5425 (not x5414))
+(or x5425 (not x5415))
+(or x5425 (not x4888))
+(or x5413 x5414 x5415 x4888 (not x5425))
+(or x5419 (not x5413))
+(or x5419 (not x5414))
+(or x5419 x4892)
+(or x5419 (not x4891))
+(or x5419 (not x4890))
+(or x5419 x4889)
+(or x5419 (not x4888))
+(or x5419 x5145)
+(or x5419 x5146)
+(or x5419 x5147)
+(or x5419 (not x5148))
+(or x5419 (not x5149))
+(or x5413 x5414 (not x4892) x4891 x4890 (not x4889) x4888 (not x5145) (not x5146) (not x5147) x5148 x5149 (not x5419))
+(or x5418 (not x5413))
+(or x5418 x4892)
+(or x5418 (not x4891))
+(or x5418 (not x4890))
+(or x5418 (not x4889))
+(or x5418 x4888)
+(or x5413 (not x4892) x4891 x4890 x4889 (not x4888) (not x5418))
+(or x5417 x4892)
+(or x5417 (not x4891))
+(or x5417 (not x4890))
+(or x5417 (not x4889))
+(or x5417 (not x4888))
+(or (not x4892) x4891 x4890 x4889 x4888 (not x5417))
+(or x5426 x4892)
+(or x5426 (not x4891))
+(or x5426 (not x4890))
+(or x5426 (not x4889))
+(or x5426 (not x4888))
+(or x5426 x5427)
+(or (not x4892) x4891 x4890 x4889 x4888 (not x5427) (not x5426))
+(or (not x5426) (not x5418) (not x5419) (not x5425) x5428)
+(or (not x5428) x5426)
+(or (not x5428) x5418)
+(or (not x5428) x5419)
+(or (not x5428) x5425)
+(or x5429 (not x5430))
+(or x5429 (not x5431))
+(or x5429 (not x5432))
+(or x5429 (not x4899))
+(or x5430 x5431 x5432 x4899 (not x5429))
+(or x5433 (not x5430))
+(or x5433 (not x5431))
+(or x5433 (not x5432))
+(or x5433 (not x4898))
+(or x5430 x5431 x5432 x4898 (not x5433))
+(or (not x5434) (not x5435) (not x5436) (not x5433) x5437)
+(or (not x5437) x5434)
+(or (not x5437) x5435)
+(or (not x5437) x5436)
+(or (not x5437) x5433)
+(or x5438 (not x5430))
+(or x5438 (not x5431))
+(or x5438 (not x5432))
+(or x5438 (not x4897))
+(or x5430 x5431 x5432 x4897 (not x5438))
+(or (not x5434) (not x5435) (not x5436) (not x5438) x5439)
+(or (not x5439) x5434)
+(or (not x5439) x5435)
+(or (not x5439) x5436)
+(or (not x5439) x5438)
+(or x5440 (not x5430))
+(or x5440 (not x5431))
+(or x5440 (not x5432))
+(or x5440 (not x4896))
+(or x5430 x5431 x5432 x4896 (not x5440))
+(or (not x5434) (not x5436) (not x5440) x5441)
+(or (not x5441) x5434)
+(or (not x5441) x5436)
+(or (not x5441) x5440)
+(or (not x4899) x4898 x4897 (not x4896) x4895 (not x5167) (not x5146) (not x5147) x5148 x5149 x5432)
+(or (not x5432) x4899)
+(or (not x5432) (not x4898))
+(or (not x5432) (not x4897))
+(or (not x5432) x4896)
+(or (not x5432) (not x4895))
+(or (not x5432) x5167)
+(or (not x5432) x5146)
+(or (not x5432) x5147)
+(or (not x5432) (not x5148))
+(or (not x5432) (not x5149))
+(or x5442 (not x5430))
+(or x5442 (not x5431))
+(or x5442 (not x5432))
+(or x5442 (not x4895))
+(or x5430 x5431 x5432 x4895 (not x5442))
+(or x5436 (not x5430))
+(or x5436 (not x5431))
+(or x5436 x4899)
+(or x5436 (not x4898))
+(or x5436 (not x4897))
+(or x5436 x4896)
+(or x5436 (not x4895))
+(or x5436 x5167)
+(or x5436 x5146)
+(or x5436 x5147)
+(or x5436 (not x5148))
+(or x5436 (not x5149))
+(or x5430 x5431 (not x4899) x4898 x4897 (not x4896) x4895 (not x5167) (not x5146) (not x5147) x5148 x5149 (not x5436))
+(or x5435 (not x5430))
+(or x5435 x4899)
+(or x5435 (not x4898))
+(or x5435 (not x4897))
+(or x5435 (not x4896))
+(or x5435 x4895)
+(or x5430 (not x4899) x4898 x4897 x4896 (not x4895) (not x5435))
+(or x5434 x4899)
+(or x5434 (not x4898))
+(or x5434 (not x4897))
+(or x5434 (not x4896))
+(or x5434 (not x4895))
+(or (not x4899) x4898 x4897 x4896 x4895 (not x5434))
+(or x5443 x4899)
+(or x5443 (not x4898))
+(or x5443 (not x4897))
+(or x5443 (not x4896))
+(or x5443 (not x4895))
+(or x5443 x5444)
+(or (not x4899) x4898 x4897 x4896 x4895 (not x5444) (not x5443))
+(or (not x5443) (not x5435) (not x5436) (not x5442) x5445)
+(or (not x5445) x5443)
+(or (not x5445) x5435)
+(or (not x5445) x5436)
+(or (not x5445) x5442)
+(or x5446 (not x5447))
+(or x5446 (not x5448))
+(or x5446 (not x5449))
+(or x5446 (not x4906))
+(or x5447 x5448 x5449 x4906 (not x5446))
+(or x5450 (not x5447))
+(or x5450 (not x5448))
+(or x5450 (not x5449))
+(or x5450 (not x4905))
+(or x5447 x5448 x5449 x4905 (not x5450))
+(or (not x5451) (not x5452) (not x5453) (not x5450) x5454)
+(or (not x5454) x5451)
+(or (not x5454) x5452)
+(or (not x5454) x5453)
+(or (not x5454) x5450)
+(or x5455 (not x5447))
+(or x5455 (not x5448))
+(or x5455 (not x5449))
+(or x5455 (not x4904))
+(or x5447 x5448 x5449 x4904 (not x5455))
+(or (not x5451) (not x5452) (not x5453) (not x5455) x5456)
+(or (not x5456) x5451)
+(or (not x5456) x5452)
+(or (not x5456) x5453)
+(or (not x5456) x5455)
+(or x5457 (not x5447))
+(or x5457 (not x5448))
+(or x5457 (not x5449))
+(or x5457 (not x4903))
+(or x5447 x5448 x5449 x4903 (not x5457))
+(or (not x5451) (not x5453) (not x5457) x5458)
+(or (not x5458) x5451)
+(or (not x5458) x5453)
+(or (not x5458) x5457)
+(or (not x4906) x4905 x4904 (not x4903) x4902 (not x5185) (not x5146) (not x5147) x5148 x5149 x5449)
+(or (not x5449) x4906)
+(or (not x5449) (not x4905))
+(or (not x5449) (not x4904))
+(or (not x5449) x4903)
+(or (not x5449) (not x4902))
+(or (not x5449) x5185)
+(or (not x5449) x5146)
+(or (not x5449) x5147)
+(or (not x5449) (not x5148))
+(or (not x5449) (not x5149))
+(or x5459 (not x5447))
+(or x5459 (not x5448))
+(or x5459 (not x5449))
+(or x5459 (not x4902))
+(or x5447 x5448 x5449 x4902 (not x5459))
+(or x5453 (not x5447))
+(or x5453 (not x5448))
+(or x5453 x4906)
+(or x5453 (not x4905))
+(or x5453 (not x4904))
+(or x5453 x4903)
+(or x5453 (not x4902))
+(or x5453 x5185)
+(or x5453 x5146)
+(or x5453 x5147)
+(or x5453 (not x5148))
+(or x5453 (not x5149))
+(or x5447 x5448 (not x4906) x4905 x4904 (not x4903) x4902 (not x5185) (not x5146) (not x5147) x5148 x5149 (not x5453))
+(or x5452 (not x5447))
+(or x5452 x4906)
+(or x5452 (not x4905))
+(or x5452 (not x4904))
+(or x5452 (not x4903))
+(or x5452 x4902)
+(or x5447 (not x4906) x4905 x4904 x4903 (not x4902) (not x5452))
+(or x5451 x4906)
+(or x5451 (not x4905))
+(or x5451 (not x4904))
+(or x5451 (not x4903))
+(or x5451 (not x4902))
+(or (not x4906) x4905 x4904 x4903 x4902 (not x5451))
+(or x5460 x4906)
+(or x5460 (not x4905))
+(or x5460 (not x4904))
+(or x5460 (not x4903))
+(or x5460 (not x4902))
+(or x5460 x5461)
+(or (not x4906) x4905 x4904 x4903 x4902 (not x5461) (not x5460))
+(or (not x5460) (not x5452) (not x5453) (not x5459) x5462)
+(or (not x5462) x5460)
+(or (not x5462) x5452)
+(or (not x5462) x5453)
+(or (not x5462) x5459)
+(or x5463 (not x5464))
+(or x5463 (not x5465))
+(or x5463 (not x5466))
+(or x5463 (not x4913))
+(or x5464 x5465 x5466 x4913 (not x5463))
+(or x5467 (not x5464))
+(or x5467 (not x5465))
+(or x5467 (not x5466))
+(or x5467 (not x4912))
+(or x5464 x5465 x5466 x4912 (not x5467))
+(or (not x5468) (not x5469) (not x5470) (not x5467) x5471)
+(or (not x5471) x5468)
+(or (not x5471) x5469)
+(or (not x5471) x5470)
+(or (not x5471) x5467)
+(or x5472 (not x5464))
+(or x5472 (not x5465))
+(or x5472 (not x5466))
+(or x5472 (not x4911))
+(or x5464 x5465 x5466 x4911 (not x5472))
+(or (not x5468) (not x5469) (not x5470) (not x5472) x5473)
+(or (not x5473) x5468)
+(or (not x5473) x5469)
+(or (not x5473) x5470)
+(or (not x5473) x5472)
+(or x5474 (not x5464))
+(or x5474 (not x5465))
+(or x5474 (not x5466))
+(or x5474 (not x4910))
+(or x5464 x5465 x5466 x4910 (not x5474))
+(or (not x5468) (not x5470) (not x5474) x5475)
+(or (not x5475) x5468)
+(or (not x5475) x5470)
+(or (not x5475) x5474)
+(or (not x4913) x4912 x4911 (not x4910) x4909 (not x5203) (not x5146) (not x5147) x5148 x5149 x5466)
+(or (not x5466) x4913)
+(or (not x5466) (not x4912))
+(or (not x5466) (not x4911))
+(or (not x5466) x4910)
+(or (not x5466) (not x4909))
+(or (not x5466) x5203)
+(or (not x5466) x5146)
+(or (not x5466) x5147)
+(or (not x5466) (not x5148))
+(or (not x5466) (not x5149))
+(or x5476 (not x5464))
+(or x5476 (not x5465))
+(or x5476 (not x5466))
+(or x5476 (not x4909))
+(or x5464 x5465 x5466 x4909 (not x5476))
+(or x5470 (not x5464))
+(or x5470 (not x5465))
+(or x5470 x4913)
+(or x5470 (not x4912))
+(or x5470 (not x4911))
+(or x5470 x4910)
+(or x5470 (not x4909))
+(or x5470 x5203)
+(or x5470 x5146)
+(or x5470 x5147)
+(or x5470 (not x5148))
+(or x5470 (not x5149))
+(or x5464 x5465 (not x4913) x4912 x4911 (not x4910) x4909 (not x5203) (not x5146) (not x5147) x5148 x5149 (not x5470))
+(or x5469 (not x5464))
+(or x5469 x4913)
+(or x5469 (not x4912))
+(or x5469 (not x4911))
+(or x5469 (not x4910))
+(or x5469 x4909)
+(or x5464 (not x4913) x4912 x4911 x4910 (not x4909) (not x5469))
+(or x5468 x4913)
+(or x5468 (not x4912))
+(or x5468 (not x4911))
+(or x5468 (not x4910))
+(or x5468 (not x4909))
+(or (not x4913) x4912 x4911 x4910 x4909 (not x5468))
+(or x5477 x4913)
+(or x5477 (not x4912))
+(or x5477 (not x4911))
+(or x5477 (not x4910))
+(or x5477 (not x4909))
+(or x5477 x5478)
+(or (not x4913) x4912 x4911 x4910 x4909 (not x5478) (not x5477))
+(or (not x5477) (not x5469) (not x5470) (not x5476) x5479)
+(or (not x5479) x5477)
+(or (not x5479) x5469)
+(or (not x5479) x5470)
+(or (not x5479) x5476)
+(or (not x5480) x5481 (not x5482) (not x5483) (not x4302) (not x5484) x5485)
+(or (not x5485) x5480)
+(or (not x5485) (not x5481))
+(or (not x5485) x5482)
+(or (not x5485) x5483)
+(or (not x5485) x4302)
+(or (not x5485) x5484)
+(or (not x5486) (not x5483) (not x5487) x5488)
+(or (not x5488) x5486)
+(or (not x5488) x5483)
+(or (not x5488) x5487)
+(or x5489 (not x5488))
+(or x5489 (not x5485))
+(or x5488 x5485 (not x5489))
+(or (not x5490) x5491 (not x5492) (not x5483) (not x4302) (not x5484) x5493)
+(or (not x5493) x5490)
+(or (not x5493) (not x5491))
+(or (not x5493) x5492)
+(or (not x5493) x5483)
+(or (not x5493) x4302)
+(or (not x5493) x5484)
+(or (not x5494) (not x5483) (not x5487) x5495)
+(or (not x5495) x5494)
+(or (not x5495) x5483)
+(or (not x5495) x5487)
+(or x5496 (not x5495))
+(or x5496 (not x5493))
+(or x5495 x5493 (not x5496))
+(or (not x5497) x5498 (not x5499) (not x5483) (not x4302) (not x5484) x5500)
+(or (not x5500) x5497)
+(or (not x5500) (not x5498))
+(or (not x5500) x5499)
+(or (not x5500) x5483)
+(or (not x5500) x4302)
+(or (not x5500) x5484)
+(or (not x5501) (not x5483) (not x5487) x5502)
+(or (not x5502) x5501)
+(or (not x5502) x5483)
+(or (not x5502) x5487)
+(or x5503 (not x5502))
+(or x5503 (not x5500))
+(or x5502 x5500 (not x5503))
+(or (not x5504) x5505 (not x5506) (not x5483) (not x4302) (not x5484) x5507)
+(or (not x5507) x5504)
+(or (not x5507) (not x5505))
+(or (not x5507) x5506)
+(or (not x5507) x5483)
+(or (not x5507) x4302)
+(or (not x5507) x5484)
+(or x5487 x4302)
+(or x5487 (not x5508))
+(or (not x4302) x5508 (not x5487))
+(or x5483 (not x5509))
+(or x5483 (not x5501))
+(or x5483 (not x5494))
+(or x5483 (not x5486))
+(or x5509 x5501 x5494 x5486 (not x5483))
+(or (not x5509) (not x5483) (not x5487) x5510)
+(or (not x5510) x5509)
+(or (not x5510) x5483)
+(or (not x5510) x5487)
+(or x5509 x5501 x5494 x5486 x5511)
+(or (not x5511) (not x5509))
+(or (not x5511) (not x5501))
+(or (not x5511) (not x5494))
+(or (not x5511) (not x5486))
+(or x5512 (not x5511))
+(or x5512 (not x5510))
+(or x5512 (not x5507))
+(or x5511 x5510 x5507 (not x5512))
+(or (not x5513) (not x5494) x5514)
+(or (not x5514) x5513)
+(or (not x5514) x5494)
+(or (not x5515) (not x5513) (not x5501) x5516)
+(or (not x5516) x5515)
+(or (not x5516) x5513)
+(or (not x5516) x5501)
+(or (not x5517) (not x5515) (not x5513) (not x5509) x5518)
+(or (not x5518) x5517)
+(or (not x5518) x5515)
+(or (not x5518) x5513)
+(or (not x5518) x5509)
+(or x5504 (not x5486))
+(or x5504 (not x5518))
+(or x5504 (not x5516))
+(or x5504 (not x5514))
+(or x5486 x5518 x5516 x5514 (not x5504))
+(or (not x5504) x5505 (not x5506) (not x4302) (not x5484) x5519)
+(or (not x5519) x5504)
+(or (not x5519) (not x5505))
+(or (not x5519) x5506)
+(or (not x5519) x4302)
+(or (not x5519) x5484)
+(or (not x5515) (not x5501) x5520)
+(or (not x5520) x5515)
+(or (not x5520) x5501)
+(or (not x5517) (not x5515) (not x5509) x5521)
+(or (not x5521) x5517)
+(or (not x5521) x5515)
+(or (not x5521) x5509)
+(or (not x5522) (not x5517) (not x5515) (not x5486) x5523)
+(or (not x5523) x5522)
+(or (not x5523) x5517)
+(or (not x5523) x5515)
+(or (not x5523) x5486)
+(or x5480 (not x5494))
+(or x5480 (not x5523))
+(or x5480 (not x5521))
+(or x5480 (not x5520))
+(or x5494 x5523 x5521 x5520 (not x5480))
+(or (not x5480) x5481 (not x5482) (not x4302) (not x5484) x5524)
+(or (not x5524) x5480)
+(or (not x5524) (not x5481))
+(or (not x5524) x5482)
+(or (not x5524) x4302)
+(or (not x5524) x5484)
+(or (not x5517) (not x5509) x5525)
+(or (not x5525) x5517)
+(or (not x5525) x5509)
+(or (not x5522) (not x5517) (not x5486) x5526)
+(or (not x5526) x5522)
+(or (not x5526) x5517)
+(or (not x5526) x5486)
+(or (not x5513) (not x5522) (not x5517) (not x5494) x5527)
+(or (not x5527) x5513)
+(or (not x5527) x5522)
+(or (not x5527) x5517)
+(or (not x5527) x5494)
+(or x5490 (not x5501))
+(or x5490 (not x5527))
+(or x5490 (not x5526))
+(or x5490 (not x5525))
+(or x5501 x5527 x5526 x5525 (not x5490))
+(or (not x5490) x5491 (not x5492) (not x4302) (not x5484) x5528)
+(or (not x5528) x5490)
+(or (not x5528) (not x5491))
+(or (not x5528) x5492)
+(or (not x5528) x4302)
+(or (not x5528) x5484)
+(or (not x5522) (not x5486) x5529)
+(or (not x5529) x5522)
+(or (not x5529) x5486)
+(or (not x5513) (not x5522) (not x5494) x5530)
+(or (not x5530) x5513)
+(or (not x5530) x5522)
+(or (not x5530) x5494)
+(or (not x5515) (not x5513) (not x5522) (not x5501) x5531)
+(or (not x5531) x5515)
+(or (not x5531) x5513)
+(or (not x5531) x5522)
+(or (not x5531) x5501)
+(or x5497 (not x5509))
+(or x5497 (not x5531))
+(or x5497 (not x5530))
+(or x5497 (not x5529))
+(or x5509 x5531 x5530 x5529 (not x5497))
+(or (not x5497) x5498 (not x5499) (not x4302) (not x5484) x5532)
+(or (not x5532) x5497)
+(or (not x5532) (not x5498))
+(or (not x5532) x5499)
+(or (not x5532) x4302)
+(or (not x5532) x5484)
+(or x5533 x4312)
+(or x5533 x4308)
+(or x5533 x4303)
+(or x5533 x4300)
+(or (not x4312) (not x4308) (not x4303) (not x4300) (not x5533))
+(or (not x5484) (not x5533) x4596)
+(or (not x4596) x5484)
+(or (not x4596) x5533)
+(or x5534 x4763)
+(or x5534 x4943)
+(or (not x4763) (not x4943) (not x5534))
+(or x4776 x4943 x5535)
+(or (not x5535) (not x4776))
+(or (not x5535) (not x4943))
+(or x5536 x4772)
+(or x5536 (not x5535))
+(or (not x4772) x5535 (not x5536))
+(or x4786 x4776 x4943 x5537)
+(or (not x5537) (not x4786))
+(or (not x5537) (not x4776))
+(or (not x5537) (not x4943))
+(or x5538 x4783)
+(or x5538 (not x5537))
+(or (not x4783) x5537 (not x5538))
+(or x4794 x4786 x4776 x4943 x5539)
+(or (not x5539) (not x4794))
+(or (not x5539) (not x4786))
+(or (not x5539) (not x4776))
+(or (not x5539) (not x4943))
+(or x5540 x4792)
+(or x5540 (not x5539))
+(or (not x4792) x5539 (not x5540))
+(or x5541 x4769)
+(or x5541 x4877)
+(or (not x4769) (not x4877) (not x5541))
+(or x4802 x4877 x5542)
+(or (not x5542) (not x4802))
+(or (not x5542) (not x4877))
+(or x5543 x4781)
+(or x5543 (not x5542))
+(or (not x4781) x5542 (not x5543))
+(or x4810 x4802 x4877 x5544)
+(or (not x5544) (not x4810))
+(or (not x5544) (not x4802))
+(or (not x5544) (not x4877))
+(or x5545 x4790)
+(or x5545 (not x5544))
+(or (not x4790) x5544 (not x5545))
+(or x4818 x4810 x4802 x4877 x5546)
+(or (not x5546) (not x4818))
+(or (not x5546) (not x4810))
+(or (not x5546) (not x4802))
+(or (not x5546) (not x4877))
+(or x5547 x4816)
+(or x5547 (not x5546))
+(or (not x4816) x5546 (not x5547))
+(or x5548 x4798)
+(or x5548 x4826)
+(or (not x4798) (not x4826) (not x5548))
+(or x4834 x4826 x5549)
+(or (not x5549) (not x4834))
+(or (not x5549) (not x4826))
+(or x5550 x4806)
+(or x5550 (not x5549))
+(or (not x4806) x5549 (not x5550))
+(or x4842 x4834 x4826 x5551)
+(or (not x5551) (not x4842))
+(or (not x5551) (not x4834))
+(or (not x5551) (not x4826))
+(or x5552 x4814)
+(or x5552 (not x5551))
+(or (not x4814) x5551 (not x5552))
+(or x4849 x4842 x4834 x4826 x5553)
+(or (not x5553) (not x4849))
+(or (not x5553) (not x4842))
+(or (not x5553) (not x4834))
+(or (not x5553) (not x4826))
+(or x5554 x4822)
+(or x5554 (not x5553))
+(or (not x4822) x5553 (not x5554))
+(or x5555 x4830)
+(or x5555 x4884)
+(or (not x4830) (not x4884) (not x5555))
+(or x4856 x4884 x5556)
+(or (not x5556) (not x4856))
+(or (not x5556) (not x4884))
+(or x5557 x4838)
+(or x5557 (not x5556))
+(or (not x4838) x5556 (not x5557))
+(or x4863 x4856 x4884 x5558)
+(or (not x5558) (not x4863))
+(or (not x5558) (not x4856))
+(or (not x5558) (not x4884))
+(or x5559 x4846)
+(or x5559 (not x5558))
+(or (not x4846) x5558 (not x5559))
+(or x4870 x4863 x4856 x4884 x5560)
+(or (not x5560) (not x4870))
+(or (not x5560) (not x4863))
+(or (not x5560) (not x4856))
+(or (not x5560) (not x4884))
+(or x5561 x4868)
+(or x5561 (not x5560))
+(or (not x4868) x5560 (not x5561))
+(or (not x5561) (not x5559) (not x5557) (not x5555) (not x5554) (not x5552) (not x5550) (not x5548) (not x5547) (not x5545) (not x5543) (not x5541) (not x5540) (not x5538) (not x5536) (not x5534) x4953)
+(or (not x4953) x5561)
+(or (not x4953) x5559)
+(or (not x4953) x5557)
+(or (not x4953) x5555)
+(or (not x4953) x5554)
+(or (not x4953) x5552)
+(or (not x4953) x5550)
+(or (not x4953) x5548)
+(or (not x4953) x5547)
+(or (not x4953) x5545)
+(or (not x4953) x5543)
+(or (not x4953) x5541)
+(or (not x4953) x5540)
+(or (not x4953) x5538)
+(or (not x4953) x5536)
+(or (not x4953) x5534)
+(or (not x5561) (not x5559) (not x5557) (not x5555) (not x5554) (not x5552) (not x5550) (not x5548) (not x5547) (not x5545) (not x5543) (not x5541) (not x5540) (not x5538) (not x5536) (not x5534) (not x5562) (not x5563) (not x5564) (not x5565) (not x5566) (not x5567) (not x5568) (not x5569) (not x5570) (not x5571) (not x5572) (not x5573) (not x5574) (not x5575) (not x5576) (not x5577) x4595)
+(or (not x4595) x5561)
+(or (not x4595) x5559)
+(or (not x4595) x5557)
+(or (not x4595) x5555)
+(or (not x4595) x5554)
+(or (not x4595) x5552)
+(or (not x4595) x5550)
+(or (not x4595) x5548)
+(or (not x4595) x5547)
+(or (not x4595) x5545)
+(or (not x4595) x5543)
+(or (not x4595) x5541)
+(or (not x4595) x5540)
+(or (not x4595) x5538)
+(or (not x4595) x5536)
+(or (not x4595) x5534)
+(or (not x4595) x5562)
+(or (not x4595) x5563)
+(or (not x4595) x5564)
+(or (not x4595) x5565)
+(or (not x4595) x5566)
+(or (not x4595) x5567)
+(or (not x4595) x5568)
+(or (not x4595) x5569)
+(or (not x4595) x5570)
+(or (not x4595) x5571)
+(or (not x4595) x5572)
+(or (not x4595) x5573)
+(or (not x4595) x5574)
+(or (not x4595) x5575)
+(or (not x4595) x5576)
+(or (not x4595) x5577)
+(or x5128 x4326)
+(or x5128 (not x4595))
+(or x5128 (not x4596))
+(or (not x4326) x4595 x4596 (not x5128))
+(or (not x5128) (not x4326) x5578)
+(or (not x5578) x5128)
+(or (not x5578) x4326)
+(or x4326 x4299 x4302 x5579)
+(or (not x5579) (not x4326))
+(or (not x5579) (not x4299))
+(or (not x5579) (not x4302))
+(or x5580 (not x5579))
+(or x5580 (not x5578))
+(or x5579 x5578 (not x5580))
+(or x5577 x4319)
+(or x5577 x4586)
+(or (not x4319) (not x4586) (not x5577))
+(or x4333 x4586 x5581)
+(or (not x5581) (not x4333))
+(or (not x5581) (not x4586))
+(or x5576 x4329)
+(or x5576 (not x5581))
+(or (not x4329) x5581 (not x5576))
+(or x4345 x4333 x4586 x5582)
+(or (not x5582) (not x4345))
+(or (not x5582) (not x4333))
+(or (not x5582) (not x4586))
+(or x5575 x4342)
+(or x5575 (not x5582))
+(or (not x4342) x5582 (not x5575))
+(or x4353 x4345 x4333 x4586 x5583)
+(or (not x5583) (not x4353))
+(or (not x5583) (not x4345))
+(or (not x5583) (not x4333))
+(or (not x5583) (not x4586))
+(or x5574 x4351)
+(or x5574 (not x5583))
+(or (not x4351) x5583 (not x5574))
+(or x5573 x4325)
+(or x5573 x4457)
+(or (not x4325) (not x4457) (not x5573))
+(or x4361 x4457 x5584)
+(or (not x5584) (not x4361))
+(or (not x5584) (not x4457))
+(or x5572 x4340)
+(or x5572 (not x5584))
+(or (not x4340) x5584 (not x5572))
+(or x4369 x4361 x4457 x5585)
+(or (not x5585) (not x4369))
+(or (not x5585) (not x4361))
+(or (not x5585) (not x4457))
+(or x5571 x4349)
+(or x5571 (not x5585))
+(or (not x4349) x5585 (not x5571))
+(or x4377 x4369 x4361 x4457 x5586)
+(or (not x5586) (not x4377))
+(or (not x5586) (not x4369))
+(or (not x5586) (not x4361))
+(or (not x5586) (not x4457))
+(or x5570 x4375)
+(or x5570 (not x5586))
+(or (not x4375) x5586 (not x5570))
+(or x5569 x4357)
+(or x5569 x4492)
+(or (not x4357) (not x4492) (not x5569))
+(or x4385 x4492 x5587)
+(or (not x5587) (not x4385))
+(or (not x5587) (not x4492))
+(or x5568 x4365)
+(or x5568 (not x5587))
+(or (not x4365) x5587 (not x5568))
+(or x4393 x4385 x4492 x5588)
+(or (not x5588) (not x4393))
+(or (not x5588) (not x4385))
+(or (not x5588) (not x4492))
+(or x5567 x4373)
+(or x5567 (not x5588))
+(or (not x4373) x5588 (not x5567))
+(or x4401 x4393 x4385 x4492 x5589)
+(or (not x5589) (not x4401))
+(or (not x5589) (not x4393))
+(or (not x5589) (not x4385))
+(or (not x5589) (not x4492))
+(or x5566 x4399)
+(or x5566 (not x5589))
+(or (not x4399) x5589 (not x5566))
+(or x5565 x4381)
+(or x5565 x4527)
+(or (not x4381) (not x4527) (not x5565))
+(or x4408 x4527 x5590)
+(or (not x5590) (not x4408))
+(or (not x5590) (not x4527))
+(or x5564 x4389)
+(or x5564 (not x5590))
+(or (not x4389) x5590 (not x5564))
+(or x4415 x4408 x4527 x5591)
+(or (not x5591) (not x4415))
+(or (not x5591) (not x4408))
+(or (not x5591) (not x4527))
+(or x5563 x4397)
+(or x5563 (not x5591))
+(or (not x4397) x5591 (not x5563))
+(or x4422 x4415 x4408 x4527 x5592)
+(or (not x5592) (not x4422))
+(or (not x5592) (not x4415))
+(or (not x5592) (not x4408))
+(or (not x5592) (not x4527))
+(or x5562 x4420)
+(or x5562 (not x5592))
+(or (not x4420) x5592 (not x5562))
+(or (not x5562) (not x5563) (not x5564) (not x5565) (not x5566) (not x5567) (not x5568) (not x5569) (not x5570) (not x5571) (not x5572) (not x5573) (not x5574) (not x5575) (not x5576) (not x5577) x4594)
+(or (not x4594) x5562)
+(or (not x4594) x5563)
+(or (not x4594) x5564)
+(or (not x4594) x5565)
+(or (not x4594) x5566)
+(or (not x4594) x5567)
+(or (not x4594) x5568)
+(or (not x4594) x5569)
+(or (not x4594) x5570)
+(or (not x4594) x5571)
+(or (not x4594) x5572)
+(or (not x4594) x5573)
+(or (not x4594) x5574)
+(or (not x4594) x5575)
+(or (not x4594) x5576)
+(or (not x4594) x5577)
+(or x4777 (not x4594))
+(or x4777 (not x4755))
+(or x4594 x4755 (not x4777))
+(or (not x4326) (not x4304) (not x4336) (not x4756) (not x4777) x4940)
+(or (not x4940) x4326)
+(or (not x4940) x4304)
+(or (not x4940) x4336)
+(or (not x4940) x4756)
+(or (not x4940) x4777)
+(or x5593 (not x5505))
+(or x5593 x5506)
+(or x5593 (not x5506))
+(or x5505 (not x5506) x5506 (not x5593))
+(or x5594 (not x5595))
+(or x5594 x5596)
+(or x5595 (not x5596) (not x5594))
+(or (not x5594) (not x5593) x5597)
+(or (not x5597) x5594)
+(or (not x5597) x5593)
+(or x5598 (not x5481))
+(or x5598 x5482)
+(or x5598 (not x5482))
+(or x5481 (not x5482) x5482 (not x5598))
+(or x5599 (not x5600))
+(or x5599 x5601)
+(or x5600 (not x5601) (not x5599))
+(or (not x5599) (not x5598) x5602)
+(or (not x5602) x5599)
+(or (not x5602) x5598)
+(or x5603 (not x5491))
+(or x5603 x5492)
+(or x5603 (not x5492))
+(or x5491 (not x5492) x5492 (not x5603))
+(or x5604 (not x5605))
+(or x5604 x5606)
+(or x5605 (not x5606) (not x5604))
+(or (not x5604) (not x5603) x5607)
+(or (not x5607) x5604)
+(or (not x5607) x5603)
+(or x5608 (not x5498))
+(or x5608 x5499)
+(or x5608 (not x5499))
+(or x5498 (not x5499) x5499 (not x5608))
+(or x5609 (not x5610))
+(or x5609 x5611)
+(or x5610 (not x5611) (not x5609))
+(or (not x5609) (not x5608) x5612)
+(or (not x5612) x5609)
+(or (not x5612) x5608)
+(or (not x4312) (not x4308) (not x4303) (not x4300) x5613)
+(or (not x5613) x4312)
+(or (not x5613) x4308)
+(or (not x5613) x4303)
+(or (not x5613) x4300)
+(or x5522 (not x5505))
+(or x5522 x5506)
+(or x5505 (not x5506) (not x5522))
+(or x5513 (not x5481))
+(or x5513 x5482)
+(or x5481 (not x5482) (not x5513))
+(or x5515 (not x5491))
+(or x5515 x5492)
+(or x5491 (not x5492) (not x5515))
+(or x5517 (not x5498))
+(or x5517 x5499)
+(or x5498 (not x5499) (not x5517))
+(or (not x5517) (not x5515) (not x5513) (not x5522) x5508)
+(or (not x5508) x5517)
+(or (not x5508) x5515)
+(or (not x5508) x5513)
+(or (not x5508) x5522)
+(or x4336 (not x5508))
+(or x4336 (not x5613))
+(or x5508 x5613 (not x4336))
+(or (not x4319) (not x4586) x5614)
+(or (not x5614) x4319)
+(or (not x5614) x4586)
+(or x5615 (not x4333))
+(or x5615 (not x4586))
+(or x4333 x4586 (not x5615))
+(or (not x4329) (not x5615) x5616)
+(or (not x5616) x4329)
+(or (not x5616) x5615)
+(or x5617 (not x4345))
+(or x5617 (not x4333))
+(or x5617 (not x4586))
+(or x4345 x4333 x4586 (not x5617))
+(or (not x4342) (not x5617) x5618)
+(or (not x5618) x4342)
+(or (not x5618) x5617)
+(or x5619 (not x4353))
+(or x5619 (not x4345))
+(or x5619 (not x4333))
+(or x5619 (not x4586))
+(or x4353 x4345 x4333 x4586 (not x5619))
+(or (not x4351) (not x5619) x5620)
+(or (not x5620) x4351)
+(or (not x5620) x5619)
+(or (not x4325) (not x4457) x5621)
+(or (not x5621) x4325)
+(or (not x5621) x4457)
+(or x5622 (not x4361))
+(or x5622 (not x4457))
+(or x4361 x4457 (not x5622))
+(or (not x4340) (not x5622) x5623)
+(or (not x5623) x4340)
+(or (not x5623) x5622)
+(or x5624 (not x4369))
+(or x5624 (not x4361))
+(or x5624 (not x4457))
+(or x4369 x4361 x4457 (not x5624))
+(or (not x4349) (not x5624) x5625)
+(or (not x5625) x4349)
+(or (not x5625) x5624)
+(or x5626 (not x4377))
+(or x5626 (not x4369))
+(or x5626 (not x4361))
+(or x5626 (not x4457))
+(or x4377 x4369 x4361 x4457 (not x5626))
+(or (not x4375) (not x5626) x5627)
+(or (not x5627) x4375)
+(or (not x5627) x5626)
+(or (not x4357) (not x4492) x5628)
+(or (not x5628) x4357)
+(or (not x5628) x4492)
+(or x5629 (not x4385))
+(or x5629 (not x4492))
+(or x4385 x4492 (not x5629))
+(or (not x4365) (not x5629) x5630)
+(or (not x5630) x4365)
+(or (not x5630) x5629)
+(or x5631 (not x4393))
+(or x5631 (not x4385))
+(or x5631 (not x4492))
+(or x4393 x4385 x4492 (not x5631))
+(or (not x4373) (not x5631) x5632)
+(or (not x5632) x4373)
+(or (not x5632) x5631)
+(or x5633 (not x4401))
+(or x5633 (not x4393))
+(or x5633 (not x4385))
+(or x5633 (not x4492))
+(or x4401 x4393 x4385 x4492 (not x5633))
+(or (not x4399) (not x5633) x5634)
+(or (not x5634) x4399)
+(or (not x5634) x5633)
+(or (not x4381) (not x4527) x5635)
+(or (not x5635) x4381)
+(or (not x5635) x4527)
+(or x5636 (not x4408))
+(or x5636 (not x4527))
+(or x4408 x4527 (not x5636))
+(or (not x4389) (not x5636) x5637)
+(or (not x5637) x4389)
+(or (not x5637) x5636)
+(or x5638 (not x4415))
+(or x5638 (not x4408))
+(or x5638 (not x4527))
+(or x4415 x4408 x4527 (not x5638))
+(or (not x4397) (not x5638) x5639)
+(or (not x5639) x4397)
+(or (not x5639) x5638)
+(or x5640 (not x4422))
+(or x5640 (not x4415))
+(or x5640 (not x4408))
+(or x5640 (not x4527))
+(or x4422 x4415 x4408 x4527 (not x5640))
+(or (not x4420) (not x5640) x5641)
+(or (not x5641) x4420)
+(or (not x5641) x5640)
+(or x4335 (not x5641))
+(or x4335 (not x5639))
+(or x4335 (not x5637))
+(or x4335 (not x5635))
+(or x4335 (not x5634))
+(or x4335 (not x5632))
+(or x4335 (not x5630))
+(or x4335 (not x5628))
+(or x4335 (not x5627))
+(or x4335 (not x5625))
+(or x4335 (not x5623))
+(or x4335 (not x5621))
+(or x4335 (not x5620))
+(or x4335 (not x5618))
+(or x4335 (not x5616))
+(or x4335 (not x5614))
+(or x5641 x5639 x5637 x5635 x5634 x5632 x5630 x5628 x5627 x5625 x5623 x5621 x5620 x5618 x5616 x5614 (not x4335))
+(or (not x4763) (not x4943) x5642)
+(or (not x5642) x4763)
+(or (not x5642) x4943)
+(or x5643 (not x4776))
+(or x5643 (not x4943))
+(or x4776 x4943 (not x5643))
+(or (not x4772) (not x5643) x5644)
+(or (not x5644) x4772)
+(or (not x5644) x5643)
+(or x5645 (not x4786))
+(or x5645 (not x4776))
+(or x5645 (not x4943))
+(or x4786 x4776 x4943 (not x5645))
+(or (not x4783) (not x5645) x5646)
+(or (not x5646) x4783)
+(or (not x5646) x5645)
+(or x5647 (not x4794))
+(or x5647 (not x4786))
+(or x5647 (not x4776))
+(or x5647 (not x4943))
+(or x4794 x4786 x4776 x4943 (not x5647))
+(or (not x4792) (not x5647) x5648)
+(or (not x5648) x4792)
+(or (not x5648) x5647)
+(or (not x4769) (not x4877) x5649)
+(or (not x5649) x4769)
+(or (not x5649) x4877)
+(or x5650 (not x4802))
+(or x5650 (not x4877))
+(or x4802 x4877 (not x5650))
+(or (not x4781) (not x5650) x5651)
+(or (not x5651) x4781)
+(or (not x5651) x5650)
+(or x5652 (not x4810))
+(or x5652 (not x4802))
+(or x5652 (not x4877))
+(or x4810 x4802 x4877 (not x5652))
+(or (not x4790) (not x5652) x5653)
+(or (not x5653) x4790)
+(or (not x5653) x5652)
+(or x5654 (not x4818))
+(or x5654 (not x4810))
+(or x5654 (not x4802))
+(or x5654 (not x4877))
+(or x4818 x4810 x4802 x4877 (not x5654))
+(or (not x4816) (not x5654) x5655)
+(or (not x5655) x4816)
+(or (not x5655) x5654)
+(or (not x4798) (not x4826) x5656)
+(or (not x5656) x4798)
+(or (not x5656) x4826)
+(or x5657 (not x4834))
+(or x5657 (not x4826))
+(or x4834 x4826 (not x5657))
+(or (not x4806) (not x5657) x5658)
+(or (not x5658) x4806)
+(or (not x5658) x5657)
+(or x5659 (not x4842))
+(or x5659 (not x4834))
+(or x5659 (not x4826))
+(or x4842 x4834 x4826 (not x5659))
+(or (not x4814) (not x5659) x5660)
+(or (not x5660) x4814)
+(or (not x5660) x5659)
+(or x5661 (not x4849))
+(or x5661 (not x4842))
+(or x5661 (not x4834))
+(or x5661 (not x4826))
+(or x4849 x4842 x4834 x4826 (not x5661))
+(or (not x4822) (not x5661) x5662)
+(or (not x5662) x4822)
+(or (not x5662) x5661)
+(or (not x4830) (not x4884) x5663)
+(or (not x5663) x4830)
+(or (not x5663) x4884)
+(or x5664 (not x4856))
+(or x5664 (not x4884))
+(or x4856 x4884 (not x5664))
+(or (not x4838) (not x5664) x5665)
+(or (not x5665) x4838)
+(or (not x5665) x5664)
+(or x5666 (not x4863))
+(or x5666 (not x4856))
+(or x5666 (not x4884))
+(or x4863 x4856 x4884 (not x5666))
+(or (not x4846) (not x5666) x5667)
+(or (not x5667) x4846)
+(or (not x5667) x5666)
+(or x5668 (not x4870))
+(or x5668 (not x4863))
+(or x5668 (not x4856))
+(or x5668 (not x4884))
+(or x4870 x4863 x4856 x4884 (not x5668))
+(or (not x4868) (not x5668) x5669)
+(or (not x5669) x4868)
+(or (not x5669) x5668)
+(or x4756 (not x5669))
+(or x4756 (not x5667))
+(or x4756 (not x5665))
+(or x4756 (not x5663))
+(or x4756 (not x5662))
+(or x4756 (not x5660))
+(or x4756 (not x5658))
+(or x4756 (not x5656))
+(or x4756 (not x5655))
+(or x4756 (not x5653))
+(or x4756 (not x5651))
+(or x4756 (not x5649))
+(or x4756 (not x5648))
+(or x4756 (not x5646))
+(or x4756 (not x5644))
+(or x4756 (not x5642))
+(or x5669 x5667 x5665 x5663 x5662 x5660 x5658 x5656 x5655 x5653 x5651 x5649 x5648 x5646 x5644 x5642 (not x4756))
+(or x4304 (not x5669))
+(or x4304 (not x5667))
+(or x4304 (not x5665))
+(or x4304 (not x5663))
+(or x4304 (not x5662))
+(or x4304 (not x5660))
+(or x4304 (not x5658))
+(or x4304 (not x5656))
+(or x4304 (not x5655))
+(or x4304 (not x5653))
+(or x4304 (not x5651))
+(or x4304 (not x5649))
+(or x4304 (not x5648))
+(or x4304 (not x5646))
+(or x4304 (not x5644))
+(or x4304 (not x5642))
+(or x4304 (not x5641))
+(or x4304 (not x5639))
+(or x4304 (not x5637))
+(or x4304 (not x5635))
+(or x4304 (not x5634))
+(or x4304 (not x5632))
+(or x4304 (not x5630))
+(or x4304 (not x5628))
+(or x4304 (not x5627))
+(or x4304 (not x5625))
+(or x4304 (not x5623))
+(or x4304 (not x5621))
+(or x4304 (not x5620))
+(or x4304 (not x5618))
+(or x4304 (not x5616))
+(or x4304 (not x5614))
+(or x5669 x5667 x5665 x5663 x5662 x5660 x5658 x5656 x5655 x5653 x5651 x5649 x5648 x5646 x5644 x5642 x5641 x5639 x5637 x5635 x5634 x5632 x5630 x5628 x5627 x5625 x5623 x5621 x5620 x5618 x5616 x5614 (not x4304))
+(or (not x4326) (not x4326) (not x4304) (not x4336) x5670)
+(or (not x5670) x4326)
+(or (not x5670) x4326)
+(or (not x5670) x4304)
+(or (not x5670) x4336)
+(or x5671 (not x4302))
+(or x5671 (not x5672))
+(or x4302 x5672 (not x5671))
+(or x5505 (not x5506) x5595)
+(or (not x5595) (not x5505))
+(or (not x5595) x5506)
+(or x5481 (not x5482) x5600)
+(or (not x5600) (not x5481))
+(or (not x5600) x5482)
+(or x5491 (not x5492) x5605)
+(or (not x5605) (not x5491))
+(or (not x5605) x5492)
+(or x5498 (not x5499) x5610)
+(or (not x5610) (not x5498))
+(or (not x5610) x5499)
+(or x5484 (not x5610))
+(or x5484 (not x5605))
+(or x5484 (not x5600))
+(or x5484 (not x5595))
+(or x5610 x5605 x5600 x5595 (not x5484))
+(or (not x4302) (not x5484) x5673)
+(or (not x5673) x4302)
+(or (not x5673) x5484)
+(or x5674 (not x4299))
+(or x5674 (not x5673))
+(or x4299 x5673 (not x5674))
+(or (not x4) (not x4278))
+(or (not x4) x4277)
+(or (not x4) (not x4276))
+(or (not x4) x4275)
+(or (not x4) (not x4274))
+(or (not x5675) (not x4278))
+(or (not x5675) x4277)
+(or (not x5675) (not x4276))
+(or (not x5675) (not x4275))
+(or (not x5675) x4274)
+(or x4278 (not x4277) x4276 x4275 x4274 x4289)
+(or (not x4289) (not x4278))
+(or (not x4289) x4277)
+(or (not x4289) (not x4276))
+(or (not x4289) (not x4275))
+(or (not x4289) (not x4274))
+(or x4278 x4277 (not x4276) (not x4275) (not x4274) x4282)
+(or (not x4282) (not x4278))
+(or (not x4282) (not x4277))
+(or (not x4282) x4276)
+(or (not x4282) x4275)
+(or (not x4282) x4274)
+(or x4278 x4277 (not x4276) (not x4275) x4274 x4281)
+(or (not x4281) (not x4278))
+(or (not x4281) (not x4277))
+(or (not x4281) x4276)
+(or (not x4281) x4275)
+(or (not x4281) (not x4274))
+(or x4278 x4277 (not x4276) x4275 (not x4274) x4273)
+(or (not x4273) (not x4278))
+(or (not x4273) (not x4277))
+(or (not x4273) x4276)
+(or (not x4273) (not x4275))
+(or (not x4273) x4274)
+(or x4278 x4277 (not x4276) x4275 x4274 x4272)
+(or (not x4272) (not x4278))
+(or (not x4272) (not x4277))
+(or (not x4272) x4276)
+(or (not x4272) (not x4275))
+(or (not x4272) (not x4274))
+(or x4278 x4277 x4276 (not x4275) (not x4274) x4271)
+(or (not x4271) (not x4278))
+(or (not x4271) (not x4277))
+(or (not x4271) (not x4276))
+(or (not x4271) x4275)
+(or (not x4271) x4274)
+(or x4278 x4277 x4276 (not x4275) x4274 x4270)
+(or (not x4270) (not x4278))
+(or (not x4270) (not x4277))
+(or (not x4270) (not x4276))
+(or (not x4270) x4275)
+(or (not x4270) (not x4274))
+(or x4278 x4277 x4276 x4275 (not x4274) x4269)
+(or (not x4269) (not x4278))
+(or (not x4269) (not x4277))
+(or (not x4269) (not x4276))
+(or (not x4269) (not x4275))
+(or (not x4269) x4274)
+(or (not x5676) (not x4278))
+(or (not x5676) (not x4277))
+(or (not x5676) (not x4276))
+(or (not x5676) (not x4275))
+(or (not x5676) (not x4274))
+(or x5677 (not x5676))
+(or x5677 (not x4269))
+(or x5677 (not x4270))
+(or x5677 (not x4271))
+(or x5677 (not x4272))
+(or x5677 (not x4273))
+(or x5677 (not x4281))
+(or x5677 (not x4282))
+(or x5677 (not x4289))
+(or x5677 (not x5675))
+(or x5676 x4269 x4270 x4271 x4272 x4273 x4281 x4282 x4289 x5675 (not x5677))
+(or x5678 x4293 x5679)
+(or x5678 (not x4293) (not x5679))
+(or (not x5678) x4293 (not x5679))
+(or (not x5678) (not x4293) x5679)
+(or x5680 x4294 x5681)
+(or x5680 (not x4294) (not x5681))
+(or (not x5680) x4294 (not x5681))
+(or (not x5680) (not x4294) x5681)
+(or x5682 x5683 x5684)
+(or x5682 (not x5683) (not x5684))
+(or (not x5682) x5683 (not x5684))
+(or (not x5682) (not x5683) x5684)
+(or x5685 x5686 x5687)
+(or x5685 (not x5686) (not x5687))
+(or (not x5685) x5686 (not x5687))
+(or (not x5685) (not x5686) x5687)
+(or x5688 x5689 x5690)
+(or x5688 (not x5689) (not x5690))
+(or (not x5688) x5689 (not x5690))
+(or (not x5688) (not x5689) x5690)
+(or x5691 x5692 x5693)
+(or x5691 (not x5692) (not x5693))
+(or (not x5691) x5692 (not x5693))
+(or (not x5691) (not x5692) x5693)
+(or (not x5694) x4292)
+(or (not x5694) x5691)
+(or (not x5694) x5688)
+(or (not x5694) x5685)
+(or (not x5694) x5682)
+(or (not x5694) x5680)
+(or (not x5694) x5678)
+(or x5695 x4286 x5684)
+(or x5695 (not x4286) (not x5684))
+(or (not x5695) x4286 (not x5684))
+(or (not x5695) (not x4286) x5684)
+(or x5696 x4285 x5687)
+(or x5696 (not x4285) (not x5687))
+(or (not x5696) x4285 (not x5687))
+(or (not x5696) (not x4285) x5687)
+(or (not x5697) x4287)
+(or (not x5697) x5696)
+(or (not x5697) x5695)
+(or (not x5697) (not x4292))
+(or x5698 x4292)
+(or x5698 (not x5697))
+(or x5698 x4292)
+(or x5698 x4292)
+(or x5698 (not x5694))
+(or x5698 x4292)
+(or x5698 x4292)
+(or x5698 (not x5697))
+(or x5698 x4292)
+(or x5698 x4292)
+(or x5698 (not x5694))
+(or (not x4292) x5697 (not x4292) (not x4292) x5694 (not x4292) (not x4292) x5697 (not x4292) (not x4292) x5694 (not x5698))
+(or (not x5699) x4430)
+(or (not x5699) (not x4429))
+(or (not x5699) (not x4428))
+(or (not x5699) x4427)
+(or (not x5699) (not x4426))
+(or (not x4430) x4429 x4428 x4427 (not x4426) x5134)
+(or (not x5134) x4430)
+(or (not x5134) (not x4429))
+(or (not x5134) (not x4428))
+(or (not x5134) (not x4427))
+(or (not x5134) x4426)
+(or (not x4430) x4429 x4428 x4427 x4426 x5133)
+(or (not x5133) x4430)
+(or (not x5133) (not x4429))
+(or (not x5133) (not x4428))
+(or (not x5133) (not x4427))
+(or (not x5133) (not x4426))
+(or x5700 (not x5133))
+(or x5700 (not x5134))
+(or x5133 x5134 (not x5700))
+(or (not x5701) x4437)
+(or (not x5701) (not x4436))
+(or (not x5701) (not x4435))
+(or (not x5701) x4434)
+(or (not x5701) (not x4433))
+(or (not x4437) x4436 x4435 x4434 (not x4433) x5156)
+(or (not x5156) x4437)
+(or (not x5156) (not x4436))
+(or (not x5156) (not x4435))
+(or (not x5156) (not x4434))
+(or (not x5156) x4433)
+(or (not x4437) x4436 x4435 x4434 x4433 x5155)
+(or (not x5155) x4437)
+(or (not x5155) (not x4436))
+(or (not x5155) (not x4435))
+(or (not x5155) (not x4434))
+(or (not x5155) (not x4433))
+(or x5702 (not x5155))
+(or x5702 (not x5156))
+(or x5155 x5156 (not x5702))
+(or (not x5703) x4444)
+(or (not x5703) (not x4443))
+(or (not x5703) (not x4442))
+(or (not x5703) x4441)
+(or (not x5703) (not x4440))
+(or (not x4444) x4443 x4442 x4441 (not x4440) x5174)
+(or (not x5174) x4444)
+(or (not x5174) (not x4443))
+(or (not x5174) (not x4442))
+(or (not x5174) (not x4441))
+(or (not x5174) x4440)
+(or (not x4444) x4443 x4442 x4441 x4440 x5173)
+(or (not x5173) x4444)
+(or (not x5173) (not x4443))
+(or (not x5173) (not x4442))
+(or (not x5173) (not x4441))
+(or (not x5173) (not x4440))
+(or x5704 (not x5173))
+(or x5704 (not x5174))
+(or x5173 x5174 (not x5704))
+(or (not x5705) x4451)
+(or (not x5705) (not x4450))
+(or (not x5705) (not x4449))
+(or (not x5705) x4448)
+(or (not x5705) (not x4447))
+(or (not x4451) x4450 x4449 x4448 (not x4447) x5192)
+(or (not x5192) x4451)
+(or (not x5192) (not x4450))
+(or (not x5192) (not x4449))
+(or (not x5192) (not x4448))
+(or (not x5192) x4447)
+(or (not x4451) x4450 x4449 x4448 x4447 x5191)
+(or (not x5191) x4451)
+(or (not x5191) (not x4450))
+(or (not x5191) (not x4449))
+(or (not x5191) (not x4448))
+(or (not x5191) (not x4447))
+(or x5706 (not x5191))
+(or x5706 (not x5192))
+(or x5191 x5192 (not x5706))
+(or (not x5707) x4465)
+(or (not x5707) (not x4464))
+(or (not x5707) (not x4463))
+(or (not x5707) x4462)
+(or (not x5707) (not x4461))
+(or (not x4465) x4464 x4463 x4462 (not x4461) x5210)
+(or (not x5210) x4465)
+(or (not x5210) (not x4464))
+(or (not x5210) (not x4463))
+(or (not x5210) (not x4462))
+(or (not x5210) x4461)
+(or (not x4465) x4464 x4463 x4462 x4461 x5209)
+(or (not x5209) x4465)
+(or (not x5209) (not x4464))
+(or (not x5209) (not x4463))
+(or (not x5209) (not x4462))
+(or (not x5209) (not x4461))
+(or x5708 (not x5209))
+(or x5708 (not x5210))
+(or x5209 x5210 (not x5708))
+(or (not x5709) x4472)
+(or (not x5709) (not x4471))
+(or (not x5709) (not x4470))
+(or (not x5709) x4469)
+(or (not x5709) (not x4468))
+(or (not x4472) x4471 x4470 x4469 (not x4468) x5227)
+(or (not x5227) x4472)
+(or (not x5227) (not x4471))
+(or (not x5227) (not x4470))
+(or (not x5227) (not x4469))
+(or (not x5227) x4468)
+(or (not x4472) x4471 x4470 x4469 x4468 x5226)
+(or (not x5226) x4472)
+(or (not x5226) (not x4471))
+(or (not x5226) (not x4470))
+(or (not x5226) (not x4469))
+(or (not x5226) (not x4468))
+(or x5710 (not x5226))
+(or x5710 (not x5227))
+(or x5226 x5227 (not x5710))
+(or (not x5711) x4479)
+(or (not x5711) (not x4478))
+(or (not x5711) (not x4477))
+(or (not x5711) x4476)
+(or (not x5711) (not x4475))
+(or (not x4479) x4478 x4477 x4476 (not x4475) x5244)
+(or (not x5244) x4479)
+(or (not x5244) (not x4478))
+(or (not x5244) (not x4477))
+(or (not x5244) (not x4476))
+(or (not x5244) x4475)
+(or (not x4479) x4478 x4477 x4476 x4475 x5243)
+(or (not x5243) x4479)
+(or (not x5243) (not x4478))
+(or (not x5243) (not x4477))
+(or (not x5243) (not x4476))
+(or (not x5243) (not x4475))
+(or x5712 (not x5243))
+(or x5712 (not x5244))
+(or x5243 x5244 (not x5712))
+(or (not x5713) x4486)
+(or (not x5713) (not x4485))
+(or (not x5713) (not x4484))
+(or (not x5713) x4483)
+(or (not x5713) (not x4482))
+(or (not x4486) x4485 x4484 x4483 (not x4482) x5261)
+(or (not x5261) x4486)
+(or (not x5261) (not x4485))
+(or (not x5261) (not x4484))
+(or (not x5261) (not x4483))
+(or (not x5261) x4482)
+(or (not x4486) x4485 x4484 x4483 x4482 x5260)
+(or (not x5260) x4486)
+(or (not x5260) (not x4485))
+(or (not x5260) (not x4484))
+(or (not x5260) (not x4483))
+(or (not x5260) (not x4482))
+(or x5714 (not x5260))
+(or x5714 (not x5261))
+(or x5260 x5261 (not x5714))
+(or (not x5715) x4500)
+(or (not x5715) (not x4499))
+(or (not x5715) (not x4498))
+(or (not x5715) x4497)
+(or (not x5715) (not x4496))
+(or (not x4500) x4499 x4498 x4497 (not x4496) x5278)
+(or (not x5278) x4500)
+(or (not x5278) (not x4499))
+(or (not x5278) (not x4498))
+(or (not x5278) (not x4497))
+(or (not x5278) x4496)
+(or (not x4500) x4499 x4498 x4497 x4496 x5277)
+(or (not x5277) x4500)
+(or (not x5277) (not x4499))
+(or (not x5277) (not x4498))
+(or (not x5277) (not x4497))
+(or (not x5277) (not x4496))
+(or x5716 (not x5277))
+(or x5716 (not x5278))
+(or x5277 x5278 (not x5716))
+(or (not x5717) x4507)
+(or (not x5717) (not x4506))
+(or (not x5717) (not x4505))
+(or (not x5717) x4504)
+(or (not x5717) (not x4503))
+(or (not x4507) x4506 x4505 x4504 (not x4503) x5295)
+(or (not x5295) x4507)
+(or (not x5295) (not x4506))
+(or (not x5295) (not x4505))
+(or (not x5295) (not x4504))
+(or (not x5295) x4503)
+(or (not x4507) x4506 x4505 x4504 x4503 x5294)
+(or (not x5294) x4507)
+(or (not x5294) (not x4506))
+(or (not x5294) (not x4505))
+(or (not x5294) (not x4504))
+(or (not x5294) (not x4503))
+(or x5718 (not x5294))
+(or x5718 (not x5295))
+(or x5294 x5295 (not x5718))
+(or (not x5719) x4514)
+(or (not x5719) (not x4513))
+(or (not x5719) (not x4512))
+(or (not x5719) x4511)
+(or (not x5719) (not x4510))
+(or (not x4514) x4513 x4512 x4511 (not x4510) x5312)
+(or (not x5312) x4514)
+(or (not x5312) (not x4513))
+(or (not x5312) (not x4512))
+(or (not x5312) (not x4511))
+(or (not x5312) x4510)
+(or (not x4514) x4513 x4512 x4511 x4510 x5311)
+(or (not x5311) x4514)
+(or (not x5311) (not x4513))
+(or (not x5311) (not x4512))
+(or (not x5311) (not x4511))
+(or (not x5311) (not x4510))
+(or x5720 (not x5311))
+(or x5720 (not x5312))
+(or x5311 x5312 (not x5720))
+(or (not x5721) x4521)
+(or (not x5721) (not x4520))
+(or (not x5721) (not x4519))
+(or (not x5721) x4518)
+(or (not x5721) (not x4517))
+(or (not x4521) x4520 x4519 x4518 (not x4517) x5329)
+(or (not x5329) x4521)
+(or (not x5329) (not x4520))
+(or (not x5329) (not x4519))
+(or (not x5329) (not x4518))
+(or (not x5329) x4517)
+(or (not x4521) x4520 x4519 x4518 x4517 x5328)
+(or (not x5328) x4521)
+(or (not x5328) (not x4520))
+(or (not x5328) (not x4519))
+(or (not x5328) (not x4518))
+(or (not x5328) (not x4517))
+(or x5722 (not x5328))
+(or x5722 (not x5329))
+(or x5328 x5329 (not x5722))
+(or (not x5723) x4535)
+(or (not x5723) (not x4534))
+(or (not x5723) (not x4533))
+(or (not x5723) x4532)
+(or (not x5723) (not x4531))
+(or (not x4535) x4534 x4533 x4532 (not x4531) x5346)
+(or (not x5346) x4535)
+(or (not x5346) (not x4534))
+(or (not x5346) (not x4533))
+(or (not x5346) (not x4532))
+(or (not x5346) x4531)
+(or (not x4535) x4534 x4533 x4532 x4531 x5345)
+(or (not x5345) x4535)
+(or (not x5345) (not x4534))
+(or (not x5345) (not x4533))
+(or (not x5345) (not x4532))
+(or (not x5345) (not x4531))
+(or x5724 (not x5345))
+(or x5724 (not x5346))
+(or x5345 x5346 (not x5724))
+(or (not x5725) x4542)
+(or (not x5725) (not x4541))
+(or (not x5725) (not x4540))
+(or (not x5725) x4539)
+(or (not x5725) (not x4538))
+(or (not x4542) x4541 x4540 x4539 (not x4538) x5363)
+(or (not x5363) x4542)
+(or (not x5363) (not x4541))
+(or (not x5363) (not x4540))
+(or (not x5363) (not x4539))
+(or (not x5363) x4538)
+(or (not x4542) x4541 x4540 x4539 x4538 x5362)
+(or (not x5362) x4542)
+(or (not x5362) (not x4541))
+(or (not x5362) (not x4540))
+(or (not x5362) (not x4539))
+(or (not x5362) (not x4538))
+(or x5726 (not x5362))
+(or x5726 (not x5363))
+(or x5362 x5363 (not x5726))
+(or (not x5727) x4549)
+(or (not x5727) (not x4548))
+(or (not x5727) (not x4547))
+(or (not x5727) x4546)
+(or (not x5727) (not x4545))
+(or (not x4549) x4548 x4547 x4546 (not x4545) x5380)
+(or (not x5380) x4549)
+(or (not x5380) (not x4548))
+(or (not x5380) (not x4547))
+(or (not x5380) (not x4546))
+(or (not x5380) x4545)
+(or (not x4549) x4548 x4547 x4546 x4545 x5379)
+(or (not x5379) x4549)
+(or (not x5379) (not x4548))
+(or (not x5379) (not x4547))
+(or (not x5379) (not x4546))
+(or (not x5379) (not x4545))
+(or x5728 (not x5379))
+(or x5728 (not x5380))
+(or x5379 x5380 (not x5728))
+(or (not x5729) x4556)
+(or (not x5729) (not x4555))
+(or (not x5729) (not x4554))
+(or (not x5729) x4553)
+(or (not x5729) (not x4552))
+(or (not x4556) x4555 x4554 x4553 (not x4552) x5397)
+(or (not x5397) x4556)
+(or (not x5397) (not x4555))
+(or (not x5397) (not x4554))
+(or (not x5397) (not x4553))
+(or (not x5397) x4552)
+(or (not x4556) x4555 x4554 x4553 x4552 x5396)
+(or (not x5396) x4556)
+(or (not x5396) (not x4555))
+(or (not x5396) (not x4554))
+(or (not x5396) (not x4553))
+(or (not x5396) (not x4552))
+(or x5730 (not x5396))
+(or x5730 (not x5397))
+(or x5396 x5397 (not x5730))
+(or (not x5731) x4892)
+(or (not x5731) (not x4891))
+(or (not x5731) (not x4890))
+(or (not x5731) x4889)
+(or (not x5731) (not x4888))
+(or (not x4892) x4891 x4890 x4889 (not x4888) x5414)
+(or (not x5414) x4892)
+(or (not x5414) (not x4891))
+(or (not x5414) (not x4890))
+(or (not x5414) (not x4889))
+(or (not x5414) x4888)
+(or (not x4892) x4891 x4890 x4889 x4888 x5413)
+(or (not x5413) x4892)
+(or (not x5413) (not x4891))
+(or (not x5413) (not x4890))
+(or (not x5413) (not x4889))
+(or (not x5413) (not x4888))
+(or x5732 (not x5413))
+(or x5732 (not x5414))
+(or x5413 x5414 (not x5732))
+(or (not x5733) x4899)
+(or (not x5733) (not x4898))
+(or (not x5733) (not x4897))
+(or (not x5733) x4896)
+(or (not x5733) (not x4895))
+(or (not x4899) x4898 x4897 x4896 (not x4895) x5431)
+(or (not x5431) x4899)
+(or (not x5431) (not x4898))
+(or (not x5431) (not x4897))
+(or (not x5431) (not x4896))
+(or (not x5431) x4895)
+(or (not x4899) x4898 x4897 x4896 x4895 x5430)
+(or (not x5430) x4899)
+(or (not x5430) (not x4898))
+(or (not x5430) (not x4897))
+(or (not x5430) (not x4896))
+(or (not x5430) (not x4895))
+(or x5734 (not x5430))
+(or x5734 (not x5431))
+(or x5430 x5431 (not x5734))
+(or (not x5735) x4906)
+(or (not x5735) (not x4905))
+(or (not x5735) (not x4904))
+(or (not x5735) x4903)
+(or (not x5735) (not x4902))
+(or (not x4906) x4905 x4904 x4903 (not x4902) x5448)
+(or (not x5448) x4906)
+(or (not x5448) (not x4905))
+(or (not x5448) (not x4904))
+(or (not x5448) (not x4903))
+(or (not x5448) x4902)
+(or (not x4906) x4905 x4904 x4903 x4902 x5447)
+(or (not x5447) x4906)
+(or (not x5447) (not x4905))
+(or (not x5447) (not x4904))
+(or (not x5447) (not x4903))
+(or (not x5447) (not x4902))
+(or x5736 (not x5447))
+(or x5736 (not x5448))
+(or x5447 x5448 (not x5736))
+(or (not x5737) x4913)
+(or (not x5737) (not x4912))
+(or (not x5737) (not x4911))
+(or (not x5737) x4910)
+(or (not x5737) (not x4909))
+(or (not x4913) x4912 x4911 x4910 (not x4909) x5465)
+(or (not x5465) x4913)
+(or (not x5465) (not x4912))
+(or (not x5465) (not x4911))
+(or (not x5465) (not x4910))
+(or (not x5465) x4909)
+(or (not x4913) x4912 x4911 x4910 x4909 x5464)
+(or (not x5464) x4913)
+(or (not x5464) (not x4912))
+(or (not x5464) (not x4911))
+(or (not x5464) (not x4910))
+(or (not x5464) (not x4909))
+(or x5738 (not x5464))
+(or x5738 (not x5465))
+(or x5464 x5465 (not x5738))
+(or (not x5739) (not x5740) (not x5741) (not x5742) (not x5743) (not x5744) (not x5745) (not x5746) (not x5747) (not x5748) x5749)
+(or (not x5749) x5739)
+(or (not x5749) x5740)
+(or (not x5749) x5741)
+(or (not x5749) x5742)
+(or (not x5749) x5743)
+(or (not x5749) x5744)
+(or (not x5749) x5745)
+(or (not x5749) x5746)
+(or (not x5749) x5747)
+(or (not x5749) x5748)
+(or x5744 (not x5750))
+(or x5744 (not x5751))
+(or x5744 (not x5752))
+(or x5744 (not x5753))
+(or x5744 (not x5754))
+(or x5744 (not x5759))
+(or x5744 (not x5758))
+(or x5744 x5757)
+(or x5744 x5756)
+(or x5744 (not x5755))
+(or x5750 x5751 x5752 x5753 x5754 x5759 x5758 (not x5757) (not x5756) x5755 (not x5744))
+(or (not x5739) (not x5740) (not x5741) (not x5742) (not x5743) (not x5744) (not x5748) x5760)
+(or (not x5760) x5739)
+(or (not x5760) x5740)
+(or (not x5760) x5741)
+(or (not x5760) x5742)
+(or (not x5760) x5743)
+(or (not x5760) x5744)
+(or (not x5760) x5748)
+(or x5740 (not x5750))
+(or x5740 (not x5759))
+(or x5740 (not x5758))
+(or x5740 (not x5757))
+(or x5740 x5756)
+(or x5740 (not x5755))
+(or x5750 x5759 x5758 x5757 (not x5756) x5755 (not x5740))
+(or (not x5739) (not x5740) (not x5745) (not x5746) (not x5747) (not x5748) x5761)
+(or (not x5761) x5739)
+(or (not x5761) x5740)
+(or (not x5761) x5745)
+(or (not x5761) x5746)
+(or (not x5761) x5747)
+(or (not x5761) x5748)
+(or x5746 (not x5750))
+(or x5746 (not x5751))
+(or x5746 (not x5752))
+(or x5746 (not x5753))
+(or x5746 (not x5754))
+(or x5746 (not x5762))
+(or x5746 (not x5763))
+(or x5746 (not x5759))
+(or x5746 x5758)
+(or x5746 (not x5757))
+(or x5746 (not x5756))
+(or x5746 (not x5755))
+(or x5750 x5751 x5752 x5753 x5754 x5762 x5763 x5759 (not x5758) x5757 x5756 x5755 (not x5746))
+(or x5742 (not x5750))
+(or x5742 (not x5751))
+(or x5742 (not x5752))
+(or x5742 (not x5759))
+(or x5742 (not x5758))
+(or x5742 x5757)
+(or x5742 (not x5756))
+(or x5742 (not x5755))
+(or x5750 x5751 x5752 x5759 x5758 (not x5757) x5756 x5755 (not x5742))
+(or (not x5741) (not x5742) (not x5745) (not x5746) (not x5748) x5764)
+(or (not x5764) x5741)
+(or (not x5764) x5742)
+(or (not x5764) x5745)
+(or (not x5764) x5746)
+(or (not x5764) x5748)
+(or x5765 x5766)
+(or x5765 (not x5767))
+(or (not x5766) x5767 (not x5765))
+(or x5759 (not x5758) x5757 x5756 (not x5755) (not x5768) (not x5765) x5769)
+(or (not x5769) (not x5759))
+(or (not x5769) x5758)
+(or (not x5769) (not x5757))
+(or (not x5769) (not x5756))
+(or (not x5769) x5755)
+(or (not x5769) x5768)
+(or (not x5769) x5765)
+(or x5748 (not x5750))
+(or x5748 (not x5751))
+(or x5748 (not x5752))
+(or x5748 (not x5753))
+(or x5748 (not x5754))
+(or x5748 (not x5762))
+(or x5748 (not x5763))
+(or x5748 (not x5770))
+(or x5748 (not x5769))
+(or x5750 x5751 x5752 x5753 x5754 x5762 x5763 x5770 x5769 (not x5748))
+(or (not x5766) x5767 x5771)
+(or (not x5771) x5766)
+(or (not x5771) (not x5767))
+(or x5747 (not x5750))
+(or x5747 (not x5751))
+(or x5747 (not x5752))
+(or x5747 (not x5753))
+(or x5747 (not x5754))
+(or x5747 (not x5762))
+(or x5747 (not x5763))
+(or x5747 (not x5770))
+(or x5747 (not x5759))
+(or x5747 x5758)
+(or x5747 (not x5757))
+(or x5747 (not x5756))
+(or x5747 x5755)
+(or x5747 x5768)
+(or x5747 (not x5771))
+(or x5750 x5751 x5752 x5753 x5754 x5762 x5763 x5770 x5759 (not x5758) x5757 x5756 (not x5755) (not x5768) x5771 (not x5747))
+(or x5745 (not x5750))
+(or x5745 (not x5751))
+(or x5745 (not x5752))
+(or x5745 (not x5753))
+(or x5745 (not x5754))
+(or x5745 (not x5762))
+(or x5745 (not x5759))
+(or x5745 (not x5758))
+(or x5745 x5757)
+(or x5745 x5756)
+(or x5745 x5755)
+(or x5750 x5751 x5752 x5753 x5754 x5762 x5759 x5758 (not x5757) (not x5756) (not x5755) (not x5745))
+(or x5743 (not x5750))
+(or x5743 (not x5751))
+(or x5743 (not x5752))
+(or x5743 (not x5753))
+(or x5743 (not x5759))
+(or x5743 (not x5758))
+(or x5743 x5757)
+(or x5743 (not x5756))
+(or x5743 x5755)
+(or x5750 x5751 x5752 x5753 x5759 x5758 (not x5757) x5756 (not x5755) (not x5743))
+(or x5741 (not x5750))
+(or x5741 (not x5751))
+(or x5741 (not x5759))
+(or x5741 (not x5758))
+(or x5741 (not x5757))
+(or x5741 x5756)
+(or x5741 x5755)
+(or x5750 x5751 x5759 x5758 x5757 (not x5756) (not x5755) (not x5741))
+(or x5739 (not x5759))
+(or x5739 (not x5758))
+(or x5739 (not x5757))
+(or x5739 (not x5756))
+(or x5739 x5755)
+(or x5759 x5758 x5757 x5756 (not x5755) (not x5739))
+(or (not x5739) (not x5741) (not x5743) (not x5745) (not x5747) (not x5748) x5772)
+(or (not x5772) x5739)
+(or (not x5772) x5741)
+(or (not x5772) x5743)
+(or (not x5772) x5745)
+(or (not x5772) x5747)
+(or (not x5772) x5748)
+(or (not x5773) (not x5774) (not x5775) x5776)
+(or (not x5776) x5773)
+(or (not x5776) x5774)
+(or (not x5776) x5775)
+(or (not x5773) (not x5774) x5775 x5777)
+(or (not x5777) x5773)
+(or (not x5777) x5774)
+(or (not x5777) (not x5775))
+(or (not x5773) x5774 (not x5775) x5778)
+(or (not x5778) x5773)
+(or (not x5778) (not x5774))
+(or (not x5778) x5775)
+(or (not x5773) x5774 x5775 x5779)
+(or (not x5779) x5773)
+(or (not x5779) (not x5774))
+(or (not x5779) (not x5775))
+(or x5780 (not x5781) x5782)
+(or (not x5782) (not x5780))
+(or (not x5782) x5781)
+(or (not x5783) (not x5784) (not x5785) x5786)
+(or (not x5786) x5783)
+(or (not x5786) x5784)
+(or (not x5786) x5785)
+(or x5787 (not x5786))
+(or x5787 (not x5782))
+(or x5786 x5782 (not x5787))
+(or x5780 (not x5784) x5788)
+(or (not x5788) (not x5780))
+(or (not x5788) x5784)
+(or (not x5783) (not x5789) (not x5785) x5790)
+(or (not x5790) x5783)
+(or (not x5790) x5789)
+(or (not x5790) x5785)
+(or x5791 (not x5790))
+(or x5791 (not x5788))
+(or x5790 x5788 (not x5791))
+(or x5780 (not x5789) x5792)
+(or (not x5792) (not x5780))
+(or (not x5792) x5789)
+(or (not x5783) (not x5793) (not x5785) x5794)
+(or (not x5794) x5783)
+(or (not x5794) x5793)
+(or (not x5794) x5785)
+(or x5795 (not x5794))
+(or x5795 (not x5792))
+(or x5794 x5792 (not x5795))
+(or x5780 (not x5793) x5796)
+(or (not x5796) (not x5780))
+(or (not x5796) x5793)
+(or (not x5783) (not x5785) x5797)
+(or (not x5797) x5783)
+(or (not x5797) x5785)
+(or x5798 (not x5797))
+(or x5798 (not x5796))
+(or x5797 x5796 (not x5798))
+(or x5799 (not x5783))
+(or x5799 (not x5780))
+(or x5783 x5780 (not x5799))
+(or (not x5800) (not x5801) (not x5802) (not x5803) (not x5804) x5805)
+(or (not x5805) x5800)
+(or (not x5805) x5801)
+(or (not x5805) x5802)
+(or (not x5805) x5803)
+(or (not x5805) x5804)
+(or (not x5806) (not x5802) (not x5801) (not x5807) (not x5808) x5809)
+(or (not x5809) x5806)
+(or (not x5809) x5802)
+(or (not x5809) x5801)
+(or (not x5809) x5807)
+(or (not x5809) x5808)
+(or (not x5810) (not x5802) (not x5801) (not x5807) (not x5811) x5812)
+(or (not x5812) x5810)
+(or (not x5812) x5802)
+(or (not x5812) x5801)
+(or (not x5812) x5807)
+(or (not x5812) x5811)
+(or (not x5813) (not x5814) (not x5801) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x5818)
+(or (not x5818) x5813)
+(or (not x5818) x5814)
+(or (not x5818) x5801)
+(or (not x5818) x5815)
+(or (not x5818) x5816)
+(or (not x5818) x5807)
+(or (not x5818) x5785)
+(or (not x5818) x5817)
+(or x5819 (not x5818))
+(or x5819 (not x5812))
+(or x5819 (not x5809))
+(or x5819 (not x5805))
+(or x5818 x5812 x5809 x5805 (not x5819))
+(or (not x5810) (not x5801) (not x5802) (not x5803) (not x5804) x5820)
+(or (not x5820) x5810)
+(or (not x5820) x5801)
+(or (not x5820) x5802)
+(or (not x5820) x5803)
+(or (not x5820) x5804)
+(or (not x5821) (not x5802) (not x5801) (not x5807) (not x5808) x5822)
+(or (not x5822) x5821)
+(or (not x5822) x5802)
+(or (not x5822) x5801)
+(or (not x5822) x5807)
+(or (not x5822) x5808)
+(or (not x5823) (not x5802) (not x5801) (not x5807) (not x5811) x5824)
+(or (not x5824) x5823)
+(or (not x5824) x5802)
+(or (not x5824) x5801)
+(or (not x5824) x5807)
+(or (not x5824) x5811)
+(or (not x5825) (not x5826) (not x5801) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x5827)
+(or (not x5827) x5825)
+(or (not x5827) x5826)
+(or (not x5827) x5801)
+(or (not x5827) x5815)
+(or (not x5827) x5816)
+(or (not x5827) x5807)
+(or (not x5827) x5785)
+(or (not x5827) x5817)
+(or x5828 (not x5827))
+(or x5828 (not x5824))
+(or x5828 (not x5822))
+(or x5828 (not x5820))
+(or x5827 x5824 x5822 x5820 (not x5828))
+(or (not x5823) (not x5801) (not x5802) (not x5803) (not x5804) x5829)
+(or (not x5829) x5823)
+(or (not x5829) x5801)
+(or (not x5829) x5802)
+(or (not x5829) x5803)
+(or (not x5829) x5804)
+(or (not x5830) (not x5802) (not x5801) (not x5807) (not x5808) x5831)
+(or (not x5831) x5830)
+(or (not x5831) x5802)
+(or (not x5831) x5801)
+(or (not x5831) x5807)
+(or (not x5831) x5808)
+(or (not x5832) (not x5802) (not x5801) (not x5807) (not x5811) x5833)
+(or (not x5833) x5832)
+(or (not x5833) x5802)
+(or (not x5833) x5801)
+(or (not x5833) x5807)
+(or (not x5833) x5811)
+(or (not x5832) (not x5834) (not x5801) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x5835)
+(or (not x5835) x5832)
+(or (not x5835) x5834)
+(or (not x5835) x5801)
+(or (not x5835) x5815)
+(or (not x5835) x5816)
+(or (not x5835) x5807)
+(or (not x5835) x5785)
+(or (not x5835) x5817)
+(or x5836 (not x5835))
+(or x5836 (not x5833))
+(or x5836 (not x5831))
+(or x5836 (not x5829))
+(or x5835 x5833 x5831 x5829 (not x5836))
+(or (not x5806) (not x5801) (not x5802) (not x5803) (not x5804) x5837)
+(or (not x5837) x5806)
+(or (not x5837) x5801)
+(or (not x5837) x5802)
+(or (not x5837) x5803)
+(or (not x5837) x5804)
+(or (not x5838) (not x5802) (not x5801) (not x5807) (not x5808) x5839)
+(or (not x5839) x5838)
+(or (not x5839) x5802)
+(or (not x5839) x5801)
+(or (not x5839) x5807)
+(or (not x5839) x5808)
+(or (not x5821) (not x5802) (not x5801) (not x5807) (not x5811) x5840)
+(or (not x5840) x5821)
+(or (not x5840) x5802)
+(or (not x5840) x5801)
+(or (not x5840) x5807)
+(or (not x5840) x5811)
+(or (not x5841) (not x5842) (not x5801) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x5843)
+(or (not x5843) x5841)
+(or (not x5843) x5842)
+(or (not x5843) x5801)
+(or (not x5843) x5815)
+(or (not x5843) x5816)
+(or (not x5843) x5807)
+(or (not x5843) x5785)
+(or (not x5843) x5817)
+(or x5844 (not x5843))
+(or x5844 (not x5840))
+(or x5844 (not x5839))
+(or x5844 (not x5837))
+(or x5843 x5840 x5839 x5837 (not x5844))
+(or (not x5821) (not x5801) (not x5802) (not x5803) (not x5804) x5845)
+(or (not x5845) x5821)
+(or (not x5845) x5801)
+(or (not x5845) x5802)
+(or (not x5845) x5803)
+(or (not x5845) x5804)
+(or (not x5846) (not x5802) (not x5801) (not x5807) (not x5808) x5847)
+(or (not x5847) x5846)
+(or (not x5847) x5802)
+(or (not x5847) x5801)
+(or (not x5847) x5807)
+(or (not x5847) x5808)
+(or (not x5830) (not x5802) (not x5801) (not x5807) (not x5811) x5848)
+(or (not x5848) x5830)
+(or (not x5848) x5802)
+(or (not x5848) x5801)
+(or (not x5848) x5807)
+(or (not x5848) x5811)
+(or (not x5849) (not x5850) (not x5801) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x5851)
+(or (not x5851) x5849)
+(or (not x5851) x5850)
+(or (not x5851) x5801)
+(or (not x5851) x5815)
+(or (not x5851) x5816)
+(or (not x5851) x5807)
+(or (not x5851) x5785)
+(or (not x5851) x5817)
+(or x5852 (not x5851))
+(or x5852 (not x5848))
+(or x5852 (not x5847))
+(or x5852 (not x5845))
+(or x5851 x5848 x5847 x5845 (not x5852))
+(or (not x5830) (not x5801) (not x5802) (not x5803) (not x5804) x5853)
+(or (not x5853) x5830)
+(or (not x5853) x5801)
+(or (not x5853) x5802)
+(or (not x5853) x5803)
+(or (not x5853) x5804)
+(or (not x5854) (not x5802) (not x5801) (not x5807) (not x5808) x5855)
+(or (not x5855) x5854)
+(or (not x5855) x5802)
+(or (not x5855) x5801)
+(or (not x5855) x5807)
+(or (not x5855) x5808)
+(or (not x5856) (not x5802) (not x5801) (not x5807) (not x5811) x5857)
+(or (not x5857) x5856)
+(or (not x5857) x5802)
+(or (not x5857) x5801)
+(or (not x5857) x5807)
+(or (not x5857) x5811)
+(or (not x5856) (not x5858) (not x5801) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x5859)
+(or (not x5859) x5856)
+(or (not x5859) x5858)
+(or (not x5859) x5801)
+(or (not x5859) x5815)
+(or (not x5859) x5816)
+(or (not x5859) x5807)
+(or (not x5859) x5785)
+(or (not x5859) x5817)
+(or x5860 (not x5859))
+(or x5860 (not x5857))
+(or x5860 (not x5855))
+(or x5860 (not x5853))
+(or x5859 x5857 x5855 x5853 (not x5860))
+(or (not x5838) (not x5801) (not x5802) (not x5803) (not x5804) x5861)
+(or (not x5861) x5838)
+(or (not x5861) x5801)
+(or (not x5861) x5802)
+(or (not x5861) x5803)
+(or (not x5861) x5804)
+(or (not x5862) (not x5802) (not x5801) (not x5807) (not x5808) x5863)
+(or (not x5863) x5862)
+(or (not x5863) x5802)
+(or (not x5863) x5801)
+(or (not x5863) x5807)
+(or (not x5863) x5808)
+(or (not x5846) (not x5802) (not x5801) (not x5807) (not x5811) x5864)
+(or (not x5864) x5846)
+(or (not x5864) x5802)
+(or (not x5864) x5801)
+(or (not x5864) x5807)
+(or (not x5864) x5811)
+(or (not x5865) (not x5866) (not x5801) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x5867)
+(or (not x5867) x5865)
+(or (not x5867) x5866)
+(or (not x5867) x5801)
+(or (not x5867) x5815)
+(or (not x5867) x5816)
+(or (not x5867) x5807)
+(or (not x5867) x5785)
+(or (not x5867) x5817)
+(or x5868 (not x5867))
+(or x5868 (not x5864))
+(or x5868 (not x5863))
+(or x5868 (not x5861))
+(or x5867 x5864 x5863 x5861 (not x5868))
+(or (not x5846) (not x5801) (not x5802) (not x5803) (not x5804) x5869)
+(or (not x5869) x5846)
+(or (not x5869) x5801)
+(or (not x5869) x5802)
+(or (not x5869) x5803)
+(or (not x5869) x5804)
+(or (not x5870) (not x5802) (not x5801) (not x5807) (not x5808) x5871)
+(or (not x5871) x5870)
+(or (not x5871) x5802)
+(or (not x5871) x5801)
+(or (not x5871) x5807)
+(or (not x5871) x5808)
+(or (not x5854) (not x5802) (not x5801) (not x5807) (not x5811) x5872)
+(or (not x5872) x5854)
+(or (not x5872) x5802)
+(or (not x5872) x5801)
+(or (not x5872) x5807)
+(or (not x5872) x5811)
+(or (not x5873) (not x5874) (not x5801) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x5875)
+(or (not x5875) x5873)
+(or (not x5875) x5874)
+(or (not x5875) x5801)
+(or (not x5875) x5815)
+(or (not x5875) x5816)
+(or (not x5875) x5807)
+(or (not x5875) x5785)
+(or (not x5875) x5817)
+(or x5876 (not x5875))
+(or x5876 (not x5872))
+(or x5876 (not x5871))
+(or x5876 (not x5869))
+(or x5875 x5872 x5871 x5869 (not x5876))
+(or (not x5854) (not x5801) (not x5802) (not x5803) (not x5804) x5877)
+(or (not x5877) x5854)
+(or (not x5877) x5801)
+(or (not x5877) x5802)
+(or (not x5877) x5803)
+(or (not x5877) x5804)
+(or (not x5878) (not x5802) (not x5801) (not x5807) (not x5808) x5879)
+(or (not x5879) x5878)
+(or (not x5879) x5802)
+(or (not x5879) x5801)
+(or (not x5879) x5807)
+(or (not x5879) x5808)
+(or (not x5880) (not x5802) (not x5801) (not x5807) (not x5811) x5881)
+(or (not x5881) x5880)
+(or (not x5881) x5802)
+(or (not x5881) x5801)
+(or (not x5881) x5807)
+(or (not x5881) x5811)
+(or (not x5880) (not x5882) (not x5801) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x5883)
+(or (not x5883) x5880)
+(or (not x5883) x5882)
+(or (not x5883) x5801)
+(or (not x5883) x5815)
+(or (not x5883) x5816)
+(or (not x5883) x5807)
+(or (not x5883) x5785)
+(or (not x5883) x5817)
+(or x5884 (not x5883))
+(or x5884 (not x5881))
+(or x5884 (not x5879))
+(or x5884 (not x5877))
+(or x5883 x5881 x5879 x5877 (not x5884))
+(or (not x5862) (not x5801) (not x5802) (not x5803) (not x5804) x5885)
+(or (not x5885) x5862)
+(or (not x5885) x5801)
+(or (not x5885) x5802)
+(or (not x5885) x5803)
+(or (not x5885) x5804)
+(or (not x5800) (not x5802) (not x5801) (not x5807) (not x5808) x5886)
+(or (not x5886) x5800)
+(or (not x5886) x5802)
+(or (not x5886) x5801)
+(or (not x5886) x5807)
+(or (not x5886) x5808)
+(or (not x5870) (not x5802) (not x5801) (not x5807) (not x5811) x5887)
+(or (not x5887) x5870)
+(or (not x5887) x5802)
+(or (not x5887) x5801)
+(or (not x5887) x5807)
+(or (not x5887) x5811)
+(or (not x5888) (not x5889) (not x5801) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x5890)
+(or (not x5890) x5888)
+(or (not x5890) x5889)
+(or (not x5890) x5801)
+(or (not x5890) x5815)
+(or (not x5890) x5816)
+(or (not x5890) x5807)
+(or (not x5890) x5785)
+(or (not x5890) x5817)
+(or x5891 (not x5890))
+(or x5891 (not x5887))
+(or x5891 (not x5886))
+(or x5891 (not x5885))
+(or x5890 x5887 x5886 x5885 (not x5891))
+(or (not x5870) (not x5801) (not x5802) (not x5803) (not x5804) x5892)
+(or (not x5892) x5870)
+(or (not x5892) x5801)
+(or (not x5892) x5802)
+(or (not x5892) x5803)
+(or (not x5892) x5804)
+(or (not x5810) (not x5802) (not x5801) (not x5807) (not x5808) x5893)
+(or (not x5893) x5810)
+(or (not x5893) x5802)
+(or (not x5893) x5801)
+(or (not x5893) x5807)
+(or (not x5893) x5808)
+(or (not x5878) (not x5802) (not x5801) (not x5807) (not x5811) x5894)
+(or (not x5894) x5878)
+(or (not x5894) x5802)
+(or (not x5894) x5801)
+(or (not x5894) x5807)
+(or (not x5894) x5811)
+(or (not x5895) (not x5896) (not x5801) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x5897)
+(or (not x5897) x5895)
+(or (not x5897) x5896)
+(or (not x5897) x5801)
+(or (not x5897) x5815)
+(or (not x5897) x5816)
+(or (not x5897) x5807)
+(or (not x5897) x5785)
+(or (not x5897) x5817)
+(or x5898 (not x5897))
+(or x5898 (not x5894))
+(or x5898 (not x5893))
+(or x5898 (not x5892))
+(or x5897 x5894 x5893 x5892 (not x5898))
+(or (not x5878) (not x5801) (not x5802) (not x5803) (not x5804) x5899)
+(or (not x5899) x5878)
+(or (not x5899) x5801)
+(or (not x5899) x5802)
+(or (not x5899) x5803)
+(or (not x5899) x5804)
+(or (not x5823) (not x5802) (not x5801) (not x5807) (not x5808) x5900)
+(or (not x5900) x5823)
+(or (not x5900) x5802)
+(or (not x5900) x5801)
+(or (not x5900) x5807)
+(or (not x5900) x5808)
+(or (not x5901) (not x5802) (not x5801) (not x5807) (not x5811) x5902)
+(or (not x5902) x5901)
+(or (not x5902) x5802)
+(or (not x5902) x5801)
+(or (not x5902) x5807)
+(or (not x5902) x5811)
+(or (not x5901) (not x5903) (not x5801) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x5904)
+(or (not x5904) x5901)
+(or (not x5904) x5903)
+(or (not x5904) x5801)
+(or (not x5904) x5815)
+(or (not x5904) x5816)
+(or (not x5904) x5807)
+(or (not x5904) x5785)
+(or (not x5904) x5817)
+(or x5905 (not x5904))
+(or x5905 (not x5902))
+(or x5905 (not x5900))
+(or x5905 (not x5899))
+(or x5904 x5902 x5900 x5899 (not x5905))
+(or x5906 (not x5907))
+(or x5906 (not x5912))
+(or x5907 x5912 (not x5906))
+(or x5913 (not x5914))
+(or x5913 (not x5919))
+(or x5914 x5919 (not x5913))
+(or x5920 (not x5921))
+(or x5920 (not x5926))
+(or x5921 x5926 (not x5920))
+(or x5927 (not x5928))
+(or x5927 (not x5933))
+(or x5928 x5933 (not x5927))
+(or (not x5832) (not x5801) (not x5802) (not x5803) (not x5804) x5934)
+(or (not x5934) x5832)
+(or (not x5934) x5801)
+(or (not x5934) x5802)
+(or (not x5934) x5803)
+(or (not x5934) x5804)
+(or (not x5856) (not x5802) (not x5801) (not x5807) (not x5808) x5935)
+(or (not x5935) x5856)
+(or (not x5935) x5802)
+(or (not x5935) x5801)
+(or (not x5935) x5807)
+(or (not x5935) x5808)
+(or (not x5806) (not x5802) (not x5801) (not x5807) (not x5811) x5936)
+(or (not x5936) x5806)
+(or (not x5936) x5802)
+(or (not x5936) x5801)
+(or (not x5936) x5807)
+(or (not x5936) x5811)
+(or (not x5937) (not x5938) (not x5801) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x5939)
+(or (not x5939) x5937)
+(or (not x5939) x5938)
+(or (not x5939) x5801)
+(or (not x5939) x5815)
+(or (not x5939) x5816)
+(or (not x5939) x5807)
+(or (not x5939) x5785)
+(or (not x5939) x5817)
+(or x5940 (not x5939))
+(or x5940 (not x5936))
+(or x5940 (not x5935))
+(or x5940 (not x5934))
+(or x5939 x5936 x5935 x5934 (not x5940))
+(or x5941 (not x5942))
+(or x5941 (not x5947))
+(or x5942 x5947 (not x5941))
+(or x5948 (not x5949))
+(or x5948 (not x5954))
+(or x5949 x5954 (not x5948))
+(or x5955 (not x5956))
+(or x5955 (not x5961))
+(or x5956 x5961 (not x5955))
+(or x5962 (not x5963))
+(or x5962 (not x5968))
+(or x5963 x5968 (not x5962))
+(or (not x5856) (not x5801) (not x5802) (not x5803) (not x5804) x5969)
+(or (not x5969) x5856)
+(or (not x5969) x5801)
+(or (not x5969) x5802)
+(or (not x5969) x5803)
+(or (not x5969) x5804)
+(or (not x5880) (not x5802) (not x5801) (not x5807) (not x5808) x5970)
+(or (not x5970) x5880)
+(or (not x5970) x5802)
+(or (not x5970) x5801)
+(or (not x5970) x5807)
+(or (not x5970) x5808)
+(or (not x5838) (not x5802) (not x5801) (not x5807) (not x5811) x5971)
+(or (not x5971) x5838)
+(or (not x5971) x5802)
+(or (not x5971) x5801)
+(or (not x5971) x5807)
+(or (not x5971) x5811)
+(or (not x5972) (not x5973) (not x5801) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x5974)
+(or (not x5974) x5972)
+(or (not x5974) x5973)
+(or (not x5974) x5801)
+(or (not x5974) x5815)
+(or (not x5974) x5816)
+(or (not x5974) x5807)
+(or (not x5974) x5785)
+(or (not x5974) x5817)
+(or x5975 (not x5974))
+(or x5975 (not x5971))
+(or x5975 (not x5970))
+(or x5975 (not x5969))
+(or x5974 x5971 x5970 x5969 (not x5975))
+(or x5976 (not x5977))
+(or x5976 (not x5982))
+(or x5977 x5982 (not x5976))
+(or x5983 (not x5984))
+(or x5983 (not x5989))
+(or x5984 x5989 (not x5983))
+(or x5990 (not x5991))
+(or x5990 (not x5996))
+(or x5991 x5996 (not x5990))
+(or x5997 (not x5998))
+(or x5997 (not x6003))
+(or x5998 x6003 (not x5997))
+(or (not x5880) (not x5801) (not x5802) (not x5803) (not x5804) x6004)
+(or (not x6004) x5880)
+(or (not x6004) x5801)
+(or (not x6004) x5802)
+(or (not x6004) x5803)
+(or (not x6004) x5804)
+(or (not x5901) (not x5802) (not x5801) (not x5807) (not x5808) x6005)
+(or (not x6005) x5901)
+(or (not x6005) x5802)
+(or (not x6005) x5801)
+(or (not x6005) x5807)
+(or (not x6005) x5808)
+(or (not x5862) (not x5802) (not x5801) (not x5807) (not x5811) x6006)
+(or (not x6006) x5862)
+(or (not x6006) x5802)
+(or (not x6006) x5801)
+(or (not x6006) x5807)
+(or (not x6006) x5811)
+(or (not x6007) (not x6008) (not x5801) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x6009)
+(or (not x6009) x6007)
+(or (not x6009) x6008)
+(or (not x6009) x5801)
+(or (not x6009) x5815)
+(or (not x6009) x5816)
+(or (not x6009) x5807)
+(or (not x6009) x5785)
+(or (not x6009) x5817)
+(or x6010 (not x6009))
+(or x6010 (not x6006))
+(or x6010 (not x6005))
+(or x6010 (not x6004))
+(or x6009 x6006 x6005 x6004 (not x6010))
+(or x6011 (not x6012))
+(or x6011 (not x6017))
+(or x6012 x6017 (not x6011))
+(or x6018 (not x6019))
+(or x6018 (not x6024))
+(or x6019 x6024 (not x6018))
+(or x6025 (not x6026))
+(or x6025 (not x6031))
+(or x6026 x6031 (not x6025))
+(or x6032 (not x6033))
+(or x6032 (not x6038))
+(or x6033 x6038 (not x6032))
+(or x5823 x5810 x5800 x6039)
+(or (not x6039) (not x5823))
+(or (not x6039) (not x5810))
+(or (not x6039) (not x5800))
+(or x6040 (not x6041))
+(or x6040 (not x6042))
+(or x6040 (not x6043))
+(or x6040 (not x6044))
+(or x6040 (not x6039))
+(or x6041 x6042 x6043 x6044 x6039 (not x6040))
+(or x5830 x5821 x5806 x6045)
+(or (not x6045) (not x5830))
+(or (not x6045) (not x5821))
+(or (not x6045) (not x5806))
+(or x6046 (not x6047))
+(or x6046 (not x6048))
+(or x6046 (not x6049))
+(or x6046 (not x6050))
+(or x6046 (not x6045))
+(or x6047 x6048 x6049 x6050 x6045 (not x6046))
+(or x5854 x5846 x5838 x6051)
+(or (not x6051) (not x5854))
+(or (not x6051) (not x5846))
+(or (not x6051) (not x5838))
+(or x6052 (not x6053))
+(or x6052 (not x6054))
+(or x6052 (not x6055))
+(or x6052 (not x6056))
+(or x6052 (not x6051))
+(or x6053 x6054 x6055 x6056 x6051 (not x6052))
+(or x5878 x5870 x5862 x6057)
+(or (not x6057) (not x5878))
+(or (not x6057) (not x5870))
+(or (not x6057) (not x5862))
+(or x6058 (not x6059))
+(or x6058 (not x6060))
+(or x6058 (not x6061))
+(or x6058 (not x6062))
+(or x6058 (not x6057))
+(or x6059 x6060 x6061 x6062 x6057 (not x6058))
+(or (not x6058) (not x6052) (not x6046) (not x6040) x6063)
+(or (not x6063) x6058)
+(or (not x6063) x6052)
+(or (not x6063) x6046)
+(or (not x6063) x6040)
+(or x5804 (not x6064))
+(or x5804 (not x6065))
+(or x5804 x5807)
+(or x5804 (not x6063))
+(or x6064 x6065 (not x5807) x6063 (not x5804))
+(or (not x5800) (not x6066) (not x6067) x6044)
+(or (not x6044) x5800)
+(or (not x6044) x6066)
+(or (not x6044) x6067)
+(or x6068 (not x5919))
+(or x6068 (not x5912))
+(or x5919 x5912 (not x6068))
+(or (not x5810) (not x6068) x6043)
+(or (not x6043) x5810)
+(or (not x6043) x6068)
+(or x6069 (not x5926))
+(or x6069 (not x5919))
+(or x6069 (not x5912))
+(or x5926 x5919 x5912 (not x6069))
+(or (not x5823) (not x6069) x6042)
+(or (not x6042) x5823)
+(or (not x6042) x6069)
+(or x6070 (not x5814))
+(or x6070 x5810)
+(or x5814 (not x5810) (not x6070))
+(or x6071 (not x5826))
+(or x6071 (not x5814))
+(or x6071 x5823)
+(or x5826 x5814 (not x5823) (not x6071))
+(or x6072 (not x5834))
+(or x6072 (not x5826))
+(or x6072 (not x5814))
+(or x6072 x5832)
+(or x5834 x5826 x5814 (not x5832) (not x6072))
+(or x5800 (not x6072) (not x6071) (not x6070) x6073)
+(or (not x6073) (not x5800))
+(or (not x6073) x6072)
+(or (not x6073) x6071)
+(or (not x6073) x6070)
+(or x6066 (not x6073))
+(or x6066 x6067)
+(or x6066 (not x6074))
+(or x6066 (not x6075))
+(or x6066 x5807)
+(or x6066 (not x6076))
+(or x6066 (not x6077))
+(or x6073 (not x6067) x6074 x6075 (not x5807) x6076 x6077 (not x6066))
+(or (not x6066) (not x6067) x5912)
+(or (not x5912) x6066)
+(or (not x5912) x6067)
+(or x6078 (not x5826))
+(or x6078 x5823)
+(or x5826 (not x5823) (not x6078))
+(or x6079 (not x5834))
+(or x6079 (not x5826))
+(or x6079 x5832)
+(or x5834 x5826 (not x5832) (not x6079))
+(or x5810 (not x6079) (not x6078) x6080)
+(or (not x6080) (not x5810))
+(or (not x6080) x6079)
+(or (not x6080) x6078)
+(or x6081 (not x6080))
+(or x6081 x5814)
+(or x6081 (not x6074))
+(or x6081 (not x6075))
+(or x6081 x5807)
+(or x6081 (not x6076))
+(or x6081 (not x6077))
+(or x6080 (not x5814) x6074 x6075 (not x5807) x6076 x6077 (not x6081))
+(or (not x6081) (not x5814) x5919)
+(or (not x5919) x6081)
+(or (not x5919) x5814)
+(or x6082 (not x5834))
+(or x6082 x5832)
+(or x5834 (not x5832) (not x6082))
+(or x5823 (not x6082) x6083)
+(or (not x6083) (not x5823))
+(or (not x6083) x6082)
+(or x6084 (not x6083))
+(or x6084 x5826)
+(or x6084 (not x6074))
+(or x6084 (not x6075))
+(or x6084 x5807)
+(or x6084 (not x6076))
+(or x6084 (not x6077))
+(or x6083 (not x5826) x6074 x6075 (not x5807) x6076 x6077 (not x6084))
+(or (not x6084) (not x5826) x5926)
+(or (not x5926) x6084)
+(or (not x5926) x5826)
+(or x6085 x5832)
+(or x6085 x5834)
+(or x6085 (not x6074))
+(or x6085 (not x6075))
+(or x6085 x5807)
+(or x6085 (not x6076))
+(or x6085 (not x6077))
+(or (not x5832) (not x5834) x6074 x6075 (not x5807) x6076 x6077 (not x6085))
+(or (not x6085) (not x5834) x5933)
+(or (not x5933) x6085)
+(or (not x5933) x5834)
+(or x6086 (not x5933))
+(or x6086 (not x5926))
+(or x6086 (not x5919))
+(or x6086 (not x5912))
+(or x5933 x5926 x5919 x5912 (not x6086))
+(or (not x5832) (not x6086) x6041)
+(or (not x6041) x5832)
+(or (not x6041) x6086)
+(or x6087 (not x6041))
+(or x6087 (not x6042))
+(or x6087 (not x6043))
+(or x6087 (not x6044))
+(or x6087 x5832)
+(or x6041 x6042 x6043 x6044 (not x5832) (not x6087))
+(or (not x5806) (not x6088) (not x5938) x6050)
+(or (not x6050) x5806)
+(or (not x6050) x6088)
+(or (not x6050) x5938)
+(or x6089 (not x5954))
+(or x6089 (not x5947))
+(or x5954 x5947 (not x6089))
+(or (not x5821) (not x6089) x6049)
+(or (not x6049) x5821)
+(or (not x6049) x6089)
+(or x6090 (not x5961))
+(or x6090 (not x5954))
+(or x6090 (not x5947))
+(or x5961 x5954 x5947 (not x6090))
+(or (not x5830) (not x6090) x6048)
+(or (not x6048) x5830)
+(or (not x6048) x6090)
+(or x6091 (not x5842))
+(or x6091 x5821)
+(or x5842 (not x5821) (not x6091))
+(or x6092 (not x5850))
+(or x6092 (not x5842))
+(or x6092 x5830)
+(or x5850 x5842 (not x5830) (not x6092))
+(or x6093 (not x5858))
+(or x6093 (not x5850))
+(or x6093 (not x5842))
+(or x6093 x5856)
+(or x5858 x5850 x5842 (not x5856) (not x6093))
+(or x5806 (not x6093) (not x6092) (not x6091) x6094)
+(or (not x6094) (not x5806))
+(or (not x6094) x6093)
+(or (not x6094) x6092)
+(or (not x6094) x6091)
+(or x6088 (not x6094))
+(or x6088 x5938)
+(or x6088 (not x6074))
+(or x6088 (not x6075))
+(or x6088 x5807)
+(or x6088 (not x6076))
+(or x6088 (not x6077))
+(or x6094 (not x5938) x6074 x6075 (not x5807) x6076 x6077 (not x6088))
+(or (not x6088) (not x5938) x5947)
+(or (not x5947) x6088)
+(or (not x5947) x5938)
+(or x6095 (not x5850))
+(or x6095 x5830)
+(or x5850 (not x5830) (not x6095))
+(or x6096 (not x5858))
+(or x6096 (not x5850))
+(or x6096 x5856)
+(or x5858 x5850 (not x5856) (not x6096))
+(or x5821 (not x6096) (not x6095) x6097)
+(or (not x6097) (not x5821))
+(or (not x6097) x6096)
+(or (not x6097) x6095)
+(or x6098 (not x6097))
+(or x6098 x5842)
+(or x6098 (not x6074))
+(or x6098 (not x6075))
+(or x6098 x5807)
+(or x6098 (not x6076))
+(or x6098 (not x6077))
+(or x6097 (not x5842) x6074 x6075 (not x5807) x6076 x6077 (not x6098))
+(or (not x6098) (not x5842) x5954)
+(or (not x5954) x6098)
+(or (not x5954) x5842)
+(or x6099 (not x5858))
+(or x6099 x5856)
+(or x5858 (not x5856) (not x6099))
+(or x5830 (not x6099) x6100)
+(or (not x6100) (not x5830))
+(or (not x6100) x6099)
+(or x6101 (not x6100))
+(or x6101 x5850)
+(or x6101 (not x6074))
+(or x6101 (not x6075))
+(or x6101 x5807)
+(or x6101 (not x6076))
+(or x6101 (not x6077))
+(or x6100 (not x5850) x6074 x6075 (not x5807) x6076 x6077 (not x6101))
+(or (not x6101) (not x5850) x5961)
+(or (not x5961) x6101)
+(or (not x5961) x5850)
+(or x6102 x5856)
+(or x6102 x5858)
+(or x6102 (not x6074))
+(or x6102 (not x6075))
+(or x6102 x5807)
+(or x6102 (not x6076))
+(or x6102 (not x6077))
+(or (not x5856) (not x5858) x6074 x6075 (not x5807) x6076 x6077 (not x6102))
+(or (not x6102) (not x5858) x5968)
+(or (not x5968) x6102)
+(or (not x5968) x5858)
+(or x6103 (not x5968))
+(or x6103 (not x5961))
+(or x6103 (not x5954))
+(or x6103 (not x5947))
+(or x5968 x5961 x5954 x5947 (not x6103))
+(or (not x5856) (not x6103) x6047)
+(or (not x6047) x5856)
+(or (not x6047) x6103)
+(or x6104 (not x6047))
+(or x6104 (not x6048))
+(or x6104 (not x6049))
+(or x6104 (not x6050))
+(or x6104 x5856)
+(or x6047 x6048 x6049 x6050 (not x5856) (not x6104))
+(or (not x5838) (not x6105) (not x5973) x6056)
+(or (not x6056) x5838)
+(or (not x6056) x6105)
+(or (not x6056) x5973)
+(or x6106 (not x5989))
+(or x6106 (not x5982))
+(or x5989 x5982 (not x6106))
+(or (not x5846) (not x6106) x6055)
+(or (not x6055) x5846)
+(or (not x6055) x6106)
+(or x6107 (not x5996))
+(or x6107 (not x5989))
+(or x6107 (not x5982))
+(or x5996 x5989 x5982 (not x6107))
+(or (not x5854) (not x6107) x6054)
+(or (not x6054) x5854)
+(or (not x6054) x6107)
+(or x6108 (not x5866))
+(or x6108 x5846)
+(or x5866 (not x5846) (not x6108))
+(or x6109 (not x5874))
+(or x6109 (not x5866))
+(or x6109 x5854)
+(or x5874 x5866 (not x5854) (not x6109))
+(or x6110 (not x5882))
+(or x6110 (not x5874))
+(or x6110 (not x5866))
+(or x6110 x5880)
+(or x5882 x5874 x5866 (not x5880) (not x6110))
+(or x5838 (not x6110) (not x6109) (not x6108) x6111)
+(or (not x6111) (not x5838))
+(or (not x6111) x6110)
+(or (not x6111) x6109)
+(or (not x6111) x6108)
+(or x6105 (not x6111))
+(or x6105 x5973)
+(or x6105 (not x6074))
+(or x6105 (not x6075))
+(or x6105 x5807)
+(or x6105 (not x6076))
+(or x6105 (not x6077))
+(or x6111 (not x5973) x6074 x6075 (not x5807) x6076 x6077 (not x6105))
+(or (not x6105) (not x5973) x5982)
+(or (not x5982) x6105)
+(or (not x5982) x5973)
+(or x6112 (not x5874))
+(or x6112 x5854)
+(or x5874 (not x5854) (not x6112))
+(or x6113 (not x5882))
+(or x6113 (not x5874))
+(or x6113 x5880)
+(or x5882 x5874 (not x5880) (not x6113))
+(or x5846 (not x6113) (not x6112) x6114)
+(or (not x6114) (not x5846))
+(or (not x6114) x6113)
+(or (not x6114) x6112)
+(or x6115 (not x6114))
+(or x6115 x5866)
+(or x6115 (not x6074))
+(or x6115 (not x6075))
+(or x6115 x5807)
+(or x6115 (not x6076))
+(or x6115 (not x6077))
+(or x6114 (not x5866) x6074 x6075 (not x5807) x6076 x6077 (not x6115))
+(or (not x6115) (not x5866) x5989)
+(or (not x5989) x6115)
+(or (not x5989) x5866)
+(or x6116 (not x5882))
+(or x6116 x5880)
+(or x5882 (not x5880) (not x6116))
+(or x5854 (not x6116) x6117)
+(or (not x6117) (not x5854))
+(or (not x6117) x6116)
+(or x6118 (not x6117))
+(or x6118 x5874)
+(or x6118 (not x6074))
+(or x6118 (not x6075))
+(or x6118 x5807)
+(or x6118 (not x6076))
+(or x6118 (not x6077))
+(or x6117 (not x5874) x6074 x6075 (not x5807) x6076 x6077 (not x6118))
+(or (not x6118) (not x5874) x5996)
+(or (not x5996) x6118)
+(or (not x5996) x5874)
+(or x6119 x5880)
+(or x6119 x5882)
+(or x6119 (not x6074))
+(or x6119 (not x6075))
+(or x6119 x5807)
+(or x6119 (not x6076))
+(or x6119 (not x6077))
+(or (not x5880) (not x5882) x6074 x6075 (not x5807) x6076 x6077 (not x6119))
+(or (not x6119) (not x5882) x6003)
+(or (not x6003) x6119)
+(or (not x6003) x5882)
+(or x6120 (not x6003))
+(or x6120 (not x5996))
+(or x6120 (not x5989))
+(or x6120 (not x5982))
+(or x6003 x5996 x5989 x5982 (not x6120))
+(or (not x5880) (not x6120) x6053)
+(or (not x6053) x5880)
+(or (not x6053) x6120)
+(or x6121 (not x6053))
+(or x6121 (not x6054))
+(or x6121 (not x6055))
+(or x6121 (not x6056))
+(or x6121 x5880)
+(or x6053 x6054 x6055 x6056 (not x5880) (not x6121))
+(or (not x5862) (not x6122) (not x6008) x6062)
+(or (not x6062) x5862)
+(or (not x6062) x6122)
+(or (not x6062) x6008)
+(or x6123 (not x6024))
+(or x6123 (not x6017))
+(or x6024 x6017 (not x6123))
+(or (not x5870) (not x6123) x6061)
+(or (not x6061) x5870)
+(or (not x6061) x6123)
+(or x6124 (not x6031))
+(or x6124 (not x6024))
+(or x6124 (not x6017))
+(or x6031 x6024 x6017 (not x6124))
+(or (not x5878) (not x6124) x6060)
+(or (not x6060) x5878)
+(or (not x6060) x6124)
+(or x6125 (not x5889))
+(or x6125 x5870)
+(or x5889 (not x5870) (not x6125))
+(or x6126 (not x5896))
+(or x6126 (not x5889))
+(or x6126 x5878)
+(or x5896 x5889 (not x5878) (not x6126))
+(or x6127 (not x5903))
+(or x6127 (not x5896))
+(or x6127 (not x5889))
+(or x6127 x5901)
+(or x5903 x5896 x5889 (not x5901) (not x6127))
+(or x5862 (not x6127) (not x6126) (not x6125) x6128)
+(or (not x6128) (not x5862))
+(or (not x6128) x6127)
+(or (not x6128) x6126)
+(or (not x6128) x6125)
+(or x6122 (not x6128))
+(or x6122 x6008)
+(or x6122 (not x6074))
+(or x6122 (not x6075))
+(or x6122 x5807)
+(or x6122 (not x6076))
+(or x6122 (not x6077))
+(or x6128 (not x6008) x6074 x6075 (not x5807) x6076 x6077 (not x6122))
+(or (not x6122) (not x6008) x6017)
+(or (not x6017) x6122)
+(or (not x6017) x6008)
+(or x6129 (not x5896))
+(or x6129 x5878)
+(or x5896 (not x5878) (not x6129))
+(or x6130 (not x5903))
+(or x6130 (not x5896))
+(or x6130 x5901)
+(or x5903 x5896 (not x5901) (not x6130))
+(or x5870 (not x6130) (not x6129) x6131)
+(or (not x6131) (not x5870))
+(or (not x6131) x6130)
+(or (not x6131) x6129)
+(or x6132 (not x6131))
+(or x6132 x5889)
+(or x6132 (not x6074))
+(or x6132 (not x6075))
+(or x6132 x5807)
+(or x6132 (not x6076))
+(or x6132 (not x6077))
+(or x6131 (not x5889) x6074 x6075 (not x5807) x6076 x6077 (not x6132))
+(or (not x6132) (not x5889) x6024)
+(or (not x6024) x6132)
+(or (not x6024) x5889)
+(or x6133 (not x5903))
+(or x6133 x5901)
+(or x5903 (not x5901) (not x6133))
+(or x5878 (not x6133) x6134)
+(or (not x6134) (not x5878))
+(or (not x6134) x6133)
+(or x6135 (not x6134))
+(or x6135 x5896)
+(or x6135 (not x6074))
+(or x6135 (not x6075))
+(or x6135 x5807)
+(or x6135 (not x6076))
+(or x6135 (not x6077))
+(or x6134 (not x5896) x6074 x6075 (not x5807) x6076 x6077 (not x6135))
+(or (not x6135) (not x5896) x6031)
+(or (not x6031) x6135)
+(or (not x6031) x5896)
+(or x6136 x5901)
+(or x6136 x5903)
+(or x6136 (not x6074))
+(or x6136 (not x6075))
+(or x6136 x5807)
+(or x6136 (not x6076))
+(or x6136 (not x6077))
+(or (not x5901) (not x5903) x6074 x6075 (not x5807) x6076 x6077 (not x6136))
+(or (not x6136) (not x5903) x6038)
+(or (not x6038) x6136)
+(or (not x6038) x5903)
+(or x6137 (not x6038))
+(or x6137 (not x6031))
+(or x6137 (not x6024))
+(or x6137 (not x6017))
+(or x6038 x6031 x6024 x6017 (not x6137))
+(or (not x5901) (not x6137) x6059)
+(or (not x6059) x5901)
+(or (not x6059) x6137)
+(or x6138 (not x6059))
+(or x6138 (not x6060))
+(or x6138 (not x6061))
+(or x6138 (not x6062))
+(or x6138 x5901)
+(or x6059 x6060 x6061 x6062 (not x5901) (not x6138))
+(or (not x6138) (not x6121) (not x6104) (not x6087) x6139)
+(or (not x6139) x6138)
+(or (not x6139) x6121)
+(or (not x6139) x6104)
+(or (not x6139) x6087)
+(or x5901 x5878 x5870 x5862 x5880 x5854 x5846 x5838 x5856 x5830 x5821 x5806 x5832 x5823 x5810 x5800 x6065)
+(or (not x6065) (not x5901))
+(or (not x6065) (not x5878))
+(or (not x6065) (not x5870))
+(or (not x6065) (not x5862))
+(or (not x6065) (not x5880))
+(or (not x6065) (not x5854))
+(or (not x6065) (not x5846))
+(or (not x6065) (not x5838))
+(or (not x6065) (not x5856))
+(or (not x6065) (not x5830))
+(or (not x6065) (not x5821))
+(or (not x6065) (not x5806))
+(or (not x6065) (not x5832))
+(or (not x6065) (not x5823))
+(or (not x6065) (not x5810))
+(or (not x6065) (not x5800))
+(or x5803 (not x6064))
+(or x5803 (not x6065))
+(or x5803 x5807)
+(or x5803 (not x6139))
+(or x6064 x6065 (not x5807) x6139 (not x5803))
+(or (not x5901) (not x5801) (not x5802) (not x5803) (not x5804) x6140)
+(or (not x6140) x5901)
+(or (not x6140) x5801)
+(or (not x6140) x5802)
+(or (not x6140) x5803)
+(or (not x6140) x5804)
+(or (not x6141) (not x6142) (not x6143) (not x6144) (not x5832) x6145)
+(or (not x6145) x6141)
+(or (not x6145) x6142)
+(or (not x6145) x6143)
+(or (not x6145) x6144)
+(or (not x6145) x5832)
+(or (not x6146) (not x6147) (not x6148) (not x6149) (not x5856) x6150)
+(or (not x6150) x6146)
+(or (not x6150) x6147)
+(or (not x6150) x6148)
+(or (not x6150) x6149)
+(or (not x6150) x5856)
+(or (not x6151) (not x6152) (not x6153) (not x6154) (not x5880) x6155)
+(or (not x6155) x6151)
+(or (not x6155) x6152)
+(or (not x6155) x6153)
+(or (not x6155) x6154)
+(or (not x6155) x5880)
+(or (not x6156) (not x6157) (not x6158) (not x6159) (not x5901) x6160)
+(or (not x6160) x6156)
+(or (not x6160) x6157)
+(or (not x6160) x6158)
+(or (not x6160) x6159)
+(or (not x6160) x5901)
+(or x5808 (not x6160))
+(or x5808 (not x6155))
+(or x5808 (not x6150))
+(or x5808 (not x6145))
+(or x6160 x6155 x6150 x6145 (not x5808))
+(or (not x5832) (not x5802) (not x5801) (not x5807) (not x5808) x6161)
+(or (not x6161) x5832)
+(or (not x6161) x5802)
+(or (not x6161) x5801)
+(or (not x6161) x5807)
+(or (not x6161) x5808)
+(or x6162 (not x5823))
+(or x6162 (not x5810))
+(or x6162 (not x5800))
+(or x5823 x5810 x5800 (not x6162))
+(or x6144 x5800)
+(or x6144 (not x6163))
+(or x6144 x6067)
+(or (not x5800) x6163 (not x6067) (not x6144))
+(or (not x6164) (not x6165) x6166)
+(or (not x6166) x6164)
+(or (not x6166) x6165)
+(or x6143 x5810)
+(or x6143 (not x6166))
+(or (not x5810) x6166 (not x6143))
+(or (not x6167) (not x6164) (not x6165) x6168)
+(or (not x6168) x6167)
+(or (not x6168) x6164)
+(or (not x6168) x6165)
+(or x6142 x5823)
+(or x6142 (not x6168))
+(or (not x5823) x6168 (not x6142))
+(or (not x6169) (not x6067) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x6163)
+(or (not x6163) x6169)
+(or (not x6163) x6067)
+(or (not x6163) x5815)
+(or (not x6163) x5816)
+(or (not x6163) x5807)
+(or (not x6163) x5785)
+(or (not x6163) x5817)
+(or x6165 (not x6163))
+(or x6165 x6067)
+(or x6163 (not x6067) (not x6165))
+(or x5826 (not x5823) x6170)
+(or (not x6170) (not x5826))
+(or (not x6170) x5823)
+(or x5834 x5826 (not x5832) x6171)
+(or (not x6171) (not x5834))
+(or (not x6171) (not x5826))
+(or (not x6171) x5832)
+(or x5813 (not x5810))
+(or x5813 (not x6171))
+(or x5813 (not x6170))
+(or x5810 x6171 x6170 (not x5813))
+(or (not x5813) (not x5814) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x6172)
+(or (not x6172) x5813)
+(or (not x6172) x5814)
+(or (not x6172) x5815)
+(or (not x6172) x5816)
+(or (not x6172) x5807)
+(or (not x6172) x5785)
+(or (not x6172) x5817)
+(or x6164 (not x6172))
+(or x6164 x5814)
+(or x6172 (not x5814) (not x6164))
+(or x5834 (not x5832) x6173)
+(or (not x6173) (not x5834))
+(or (not x6173) x5832)
+(or x5825 (not x5823))
+(or x5825 (not x6173))
+(or x5823 x6173 (not x5825))
+(or (not x5825) (not x5826) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x6174)
+(or (not x6174) x5825)
+(or (not x6174) x5826)
+(or (not x6174) x5815)
+(or (not x6174) x5816)
+(or (not x6174) x5807)
+(or (not x6174) x5785)
+(or (not x6174) x5817)
+(or x6167 (not x6174))
+(or x6167 x5826)
+(or x6174 (not x5826) (not x6167))
+(or (not x5832) (not x5834) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x6175)
+(or (not x6175) x5832)
+(or (not x6175) x5834)
+(or (not x6175) x5815)
+(or (not x6175) x5816)
+(or (not x6175) x5807)
+(or (not x6175) x5785)
+(or (not x6175) x5817)
+(or x6176 (not x6175))
+(or x6176 x5834)
+(or x6175 (not x5834) (not x6176))
+(or (not x6176) (not x6167) (not x6164) (not x6165) x6177)
+(or (not x6177) x6176)
+(or (not x6177) x6167)
+(or (not x6177) x6164)
+(or (not x6177) x6165)
+(or x6141 x5832)
+(or x6141 (not x6177))
+(or (not x5832) x6177 (not x6141))
+(or (not x6141) (not x6142) (not x6143) (not x6144) (not x6162) x6178)
+(or (not x6178) x6141)
+(or (not x6178) x6142)
+(or (not x6178) x6143)
+(or (not x6178) x6144)
+(or (not x6178) x6162)
+(or x6179 (not x5830))
+(or x6179 (not x5821))
+(or x6179 (not x5806))
+(or x5830 x5821 x5806 (not x6179))
+(or x6149 x5806)
+(or x6149 (not x6180))
+(or x6149 x5938)
+(or (not x5806) x6180 (not x5938) (not x6149))
+(or (not x6181) (not x6182) x6183)
+(or (not x6183) x6181)
+(or (not x6183) x6182)
+(or x6148 x5821)
+(or x6148 (not x6183))
+(or (not x5821) x6183 (not x6148))
+(or (not x6184) (not x6181) (not x6182) x6185)
+(or (not x6185) x6184)
+(or (not x6185) x6181)
+(or (not x6185) x6182)
+(or x6147 x5830)
+(or x6147 (not x6185))
+(or (not x5830) x6185 (not x6147))
+(or x5842 (not x5821) x6186)
+(or (not x6186) (not x5842))
+(or (not x6186) x5821)
+(or x5850 x5842 (not x5830) x6187)
+(or (not x6187) (not x5850))
+(or (not x6187) (not x5842))
+(or (not x6187) x5830)
+(or x5858 x5850 x5842 (not x5856) x6188)
+(or (not x6188) (not x5858))
+(or (not x6188) (not x5850))
+(or (not x6188) (not x5842))
+(or (not x6188) x5856)
+(or x5937 (not x5806))
+(or x5937 (not x6188))
+(or x5937 (not x6187))
+(or x5937 (not x6186))
+(or x5806 x6188 x6187 x6186 (not x5937))
+(or (not x5937) (not x5938) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x6180)
+(or (not x6180) x5937)
+(or (not x6180) x5938)
+(or (not x6180) x5815)
+(or (not x6180) x5816)
+(or (not x6180) x5807)
+(or (not x6180) x5785)
+(or (not x6180) x5817)
+(or x6182 (not x6180))
+(or x6182 x5938)
+(or x6180 (not x5938) (not x6182))
+(or x5850 (not x5830) x6189)
+(or (not x6189) (not x5850))
+(or (not x6189) x5830)
+(or x5858 x5850 (not x5856) x6190)
+(or (not x6190) (not x5858))
+(or (not x6190) (not x5850))
+(or (not x6190) x5856)
+(or x5841 (not x5821))
+(or x5841 (not x6190))
+(or x5841 (not x6189))
+(or x5821 x6190 x6189 (not x5841))
+(or (not x5841) (not x5842) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x6191)
+(or (not x6191) x5841)
+(or (not x6191) x5842)
+(or (not x6191) x5815)
+(or (not x6191) x5816)
+(or (not x6191) x5807)
+(or (not x6191) x5785)
+(or (not x6191) x5817)
+(or x6181 (not x6191))
+(or x6181 x5842)
+(or x6191 (not x5842) (not x6181))
+(or x5858 (not x5856) x6192)
+(or (not x6192) (not x5858))
+(or (not x6192) x5856)
+(or x5849 (not x5830))
+(or x5849 (not x6192))
+(or x5830 x6192 (not x5849))
+(or (not x5849) (not x5850) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x6193)
+(or (not x6193) x5849)
+(or (not x6193) x5850)
+(or (not x6193) x5815)
+(or (not x6193) x5816)
+(or (not x6193) x5807)
+(or (not x6193) x5785)
+(or (not x6193) x5817)
+(or x6184 (not x6193))
+(or x6184 x5850)
+(or x6193 (not x5850) (not x6184))
+(or (not x5856) (not x5858) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x6194)
+(or (not x6194) x5856)
+(or (not x6194) x5858)
+(or (not x6194) x5815)
+(or (not x6194) x5816)
+(or (not x6194) x5807)
+(or (not x6194) x5785)
+(or (not x6194) x5817)
+(or x6195 (not x6194))
+(or x6195 x5858)
+(or x6194 (not x5858) (not x6195))
+(or (not x6195) (not x6184) (not x6181) (not x6182) x6196)
+(or (not x6196) x6195)
+(or (not x6196) x6184)
+(or (not x6196) x6181)
+(or (not x6196) x6182)
+(or x6146 x5856)
+(or x6146 (not x6196))
+(or (not x5856) x6196 (not x6146))
+(or (not x6146) (not x6147) (not x6148) (not x6149) (not x6179) x6197)
+(or (not x6197) x6146)
+(or (not x6197) x6147)
+(or (not x6197) x6148)
+(or (not x6197) x6149)
+(or (not x6197) x6179)
+(or x6198 (not x5854))
+(or x6198 (not x5846))
+(or x6198 (not x5838))
+(or x5854 x5846 x5838 (not x6198))
+(or x6154 x5838)
+(or x6154 (not x6199))
+(or x6154 x5973)
+(or (not x5838) x6199 (not x5973) (not x6154))
+(or (not x6200) (not x6201) x6202)
+(or (not x6202) x6200)
+(or (not x6202) x6201)
+(or x6153 x5846)
+(or x6153 (not x6202))
+(or (not x5846) x6202 (not x6153))
+(or (not x6203) (not x6200) (not x6201) x6204)
+(or (not x6204) x6203)
+(or (not x6204) x6200)
+(or (not x6204) x6201)
+(or x6152 x5854)
+(or x6152 (not x6204))
+(or (not x5854) x6204 (not x6152))
+(or x5866 (not x5846) x6205)
+(or (not x6205) (not x5866))
+(or (not x6205) x5846)
+(or x5874 x5866 (not x5854) x6206)
+(or (not x6206) (not x5874))
+(or (not x6206) (not x5866))
+(or (not x6206) x5854)
+(or x5882 x5874 x5866 (not x5880) x6207)
+(or (not x6207) (not x5882))
+(or (not x6207) (not x5874))
+(or (not x6207) (not x5866))
+(or (not x6207) x5880)
+(or x5972 (not x5838))
+(or x5972 (not x6207))
+(or x5972 (not x6206))
+(or x5972 (not x6205))
+(or x5838 x6207 x6206 x6205 (not x5972))
+(or (not x5972) (not x5973) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x6199)
+(or (not x6199) x5972)
+(or (not x6199) x5973)
+(or (not x6199) x5815)
+(or (not x6199) x5816)
+(or (not x6199) x5807)
+(or (not x6199) x5785)
+(or (not x6199) x5817)
+(or x6201 (not x6199))
+(or x6201 x5973)
+(or x6199 (not x5973) (not x6201))
+(or x5874 (not x5854) x6208)
+(or (not x6208) (not x5874))
+(or (not x6208) x5854)
+(or x5882 x5874 (not x5880) x6209)
+(or (not x6209) (not x5882))
+(or (not x6209) (not x5874))
+(or (not x6209) x5880)
+(or x5865 (not x5846))
+(or x5865 (not x6209))
+(or x5865 (not x6208))
+(or x5846 x6209 x6208 (not x5865))
+(or (not x5865) (not x5866) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x6210)
+(or (not x6210) x5865)
+(or (not x6210) x5866)
+(or (not x6210) x5815)
+(or (not x6210) x5816)
+(or (not x6210) x5807)
+(or (not x6210) x5785)
+(or (not x6210) x5817)
+(or x6200 (not x6210))
+(or x6200 x5866)
+(or x6210 (not x5866) (not x6200))
+(or x5882 (not x5880) x6211)
+(or (not x6211) (not x5882))
+(or (not x6211) x5880)
+(or x5873 (not x5854))
+(or x5873 (not x6211))
+(or x5854 x6211 (not x5873))
+(or (not x5873) (not x5874) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x6212)
+(or (not x6212) x5873)
+(or (not x6212) x5874)
+(or (not x6212) x5815)
+(or (not x6212) x5816)
+(or (not x6212) x5807)
+(or (not x6212) x5785)
+(or (not x6212) x5817)
+(or x6203 (not x6212))
+(or x6203 x5874)
+(or x6212 (not x5874) (not x6203))
+(or (not x5880) (not x5882) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x6213)
+(or (not x6213) x5880)
+(or (not x6213) x5882)
+(or (not x6213) x5815)
+(or (not x6213) x5816)
+(or (not x6213) x5807)
+(or (not x6213) x5785)
+(or (not x6213) x5817)
+(or x6214 (not x6213))
+(or x6214 x5882)
+(or x6213 (not x5882) (not x6214))
+(or (not x6214) (not x6203) (not x6200) (not x6201) x6215)
+(or (not x6215) x6214)
+(or (not x6215) x6203)
+(or (not x6215) x6200)
+(or (not x6215) x6201)
+(or x6151 x5880)
+(or x6151 (not x6215))
+(or (not x5880) x6215 (not x6151))
+(or (not x6151) (not x6152) (not x6153) (not x6154) (not x6198) x6216)
+(or (not x6216) x6151)
+(or (not x6216) x6152)
+(or (not x6216) x6153)
+(or (not x6216) x6154)
+(or (not x6216) x6198)
+(or x6217 (not x5878))
+(or x6217 (not x5870))
+(or x6217 (not x5862))
+(or x5878 x5870 x5862 (not x6217))
+(or x6159 x5862)
+(or x6159 (not x6218))
+(or x6159 x6008)
+(or (not x5862) x6218 (not x6008) (not x6159))
+(or (not x6219) (not x6220) x6221)
+(or (not x6221) x6219)
+(or (not x6221) x6220)
+(or x6158 x5870)
+(or x6158 (not x6221))
+(or (not x5870) x6221 (not x6158))
+(or (not x6222) (not x6219) (not x6220) x6223)
+(or (not x6223) x6222)
+(or (not x6223) x6219)
+(or (not x6223) x6220)
+(or x6157 x5878)
+(or x6157 (not x6223))
+(or (not x5878) x6223 (not x6157))
+(or x5889 (not x5870) x6224)
+(or (not x6224) (not x5889))
+(or (not x6224) x5870)
+(or x5896 x5889 (not x5878) x6225)
+(or (not x6225) (not x5896))
+(or (not x6225) (not x5889))
+(or (not x6225) x5878)
+(or x5903 x5896 x5889 (not x5901) x6226)
+(or (not x6226) (not x5903))
+(or (not x6226) (not x5896))
+(or (not x6226) (not x5889))
+(or (not x6226) x5901)
+(or x6007 (not x5862))
+(or x6007 (not x6226))
+(or x6007 (not x6225))
+(or x6007 (not x6224))
+(or x5862 x6226 x6225 x6224 (not x6007))
+(or (not x6007) (not x6008) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x6218)
+(or (not x6218) x6007)
+(or (not x6218) x6008)
+(or (not x6218) x5815)
+(or (not x6218) x5816)
+(or (not x6218) x5807)
+(or (not x6218) x5785)
+(or (not x6218) x5817)
+(or x6220 (not x6218))
+(or x6220 x6008)
+(or x6218 (not x6008) (not x6220))
+(or x5896 (not x5878) x6227)
+(or (not x6227) (not x5896))
+(or (not x6227) x5878)
+(or x5903 x5896 (not x5901) x6228)
+(or (not x6228) (not x5903))
+(or (not x6228) (not x5896))
+(or (not x6228) x5901)
+(or x5888 (not x5870))
+(or x5888 (not x6228))
+(or x5888 (not x6227))
+(or x5870 x6228 x6227 (not x5888))
+(or (not x5888) (not x5889) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x6229)
+(or (not x6229) x5888)
+(or (not x6229) x5889)
+(or (not x6229) x5815)
+(or (not x6229) x5816)
+(or (not x6229) x5807)
+(or (not x6229) x5785)
+(or (not x6229) x5817)
+(or x6219 (not x6229))
+(or x6219 x5889)
+(or x6229 (not x5889) (not x6219))
+(or x5903 (not x5901) x6230)
+(or (not x6230) (not x5903))
+(or (not x6230) x5901)
+(or x5895 (not x5878))
+(or x5895 (not x6230))
+(or x5878 x6230 (not x5895))
+(or (not x5895) (not x5896) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x6231)
+(or (not x6231) x5895)
+(or (not x6231) x5896)
+(or (not x6231) x5815)
+(or (not x6231) x5816)
+(or (not x6231) x5807)
+(or (not x6231) x5785)
+(or (not x6231) x5817)
+(or x6222 (not x6231))
+(or x6222 x5896)
+(or x6231 (not x5896) (not x6222))
+(or (not x5901) (not x5903) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x6232)
+(or (not x6232) x5901)
+(or (not x6232) x5903)
+(or (not x6232) x5815)
+(or (not x6232) x5816)
+(or (not x6232) x5807)
+(or (not x6232) x5785)
+(or (not x6232) x5817)
+(or x6233 (not x6232))
+(or x6233 x5903)
+(or x6232 (not x5903) (not x6233))
+(or (not x6233) (not x6222) (not x6219) (not x6220) x6234)
+(or (not x6234) x6233)
+(or (not x6234) x6222)
+(or (not x6234) x6219)
+(or (not x6234) x6220)
+(or x6156 x5901)
+(or x6156 (not x6234))
+(or (not x5901) x6234 (not x6156))
+(or (not x6156) (not x6157) (not x6158) (not x6159) (not x6217) x6235)
+(or (not x6235) x6156)
+(or (not x6235) x6157)
+(or (not x6235) x6158)
+(or (not x6235) x6159)
+(or (not x6235) x6217)
+(or x5811 (not x6235))
+(or x5811 (not x6216))
+(or x5811 (not x6197))
+(or x5811 (not x6178))
+(or x6235 x6216 x6197 x6178 (not x5811))
+(or (not x6236) (not x6237) x6074)
+(or (not x6074) x6236)
+(or (not x6074) x6237)
+(or x5802 (not x6074))
+(or x5802 (not x6075))
+(or x5802 x5807)
+(or x5802 (not x6076))
+(or x5802 (not x6077))
+(or x6074 x6075 (not x5807) x6076 x6077 (not x5802))
+(or (not x5800) (not x5802) (not x5801) (not x5807) (not x5811) x6238)
+(or (not x6238) x5800)
+(or (not x6238) x5802)
+(or (not x6238) x5801)
+(or (not x6238) x5807)
+(or (not x6238) x5811)
+(or x5801 (not x5901))
+(or x5801 (not x5878))
+(or x5801 (not x5870))
+(or x5801 (not x5862))
+(or x5801 (not x5880))
+(or x5801 (not x5854))
+(or x5801 (not x5846))
+(or x5801 (not x5838))
+(or x5801 (not x5856))
+(or x5801 (not x5830))
+(or x5801 (not x5821))
+(or x5801 (not x5806))
+(or x5801 (not x5832))
+(or x5801 (not x5823))
+(or x5801 (not x5810))
+(or x5801 (not x5800))
+(or x5901 x5878 x5870 x5862 x5880 x5854 x5846 x5838 x5856 x5830 x5821 x5806 x5832 x5823 x5810 x5800 (not x5801))
+(or x5814 (not x5810) x6239)
+(or (not x6239) (not x5814))
+(or (not x6239) x5810)
+(or x5826 x5814 (not x5823) x6240)
+(or (not x6240) (not x5826))
+(or (not x6240) (not x5814))
+(or (not x6240) x5823)
+(or x5834 x5826 x5814 (not x5832) x6241)
+(or (not x6241) (not x5834))
+(or (not x6241) (not x5826))
+(or (not x6241) (not x5814))
+(or (not x6241) x5832)
+(or x6169 (not x5800))
+(or x6169 (not x6241))
+(or x6169 (not x6240))
+(or x6169 (not x6239))
+(or x5800 x6241 x6240 x6239 (not x6169))
+(or (not x6169) (not x6067) (not x5801) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x6242)
+(or (not x6242) x6169)
+(or (not x6242) x6067)
+(or (not x6242) x5801)
+(or (not x6242) x5815)
+(or (not x6242) x5816)
+(or (not x6242) x5807)
+(or (not x6242) x5785)
+(or (not x6242) x5817)
+(or x6243 (not x6242))
+(or x6243 (not x6238))
+(or x6243 (not x6161))
+(or x6243 (not x6140))
+(or x6243 (not x6065))
+(or x6242 x6238 x6161 x6140 x6065 (not x6243))
+(or (not x6244) (not x6245) (not x6246) (not x6247) (not x6248) x6249)
+(or (not x6249) x6244)
+(or (not x6249) x6245)
+(or (not x6249) x6246)
+(or (not x6249) x6247)
+(or (not x6249) x6248)
+(or (not x6250) (not x6246) (not x6245) (not x5807) (not x6251) x6252)
+(or (not x6252) x6250)
+(or (not x6252) x6246)
+(or (not x6252) x6245)
+(or (not x6252) x5807)
+(or (not x6252) x6251)
+(or (not x6253) (not x6246) (not x6245) (not x5807) (not x6254) x6255)
+(or (not x6255) x6253)
+(or (not x6255) x6246)
+(or (not x6255) x6245)
+(or (not x6255) x5807)
+(or (not x6255) x6254)
+(or (not x6256) (not x6257) (not x6245) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6259)
+(or (not x6259) x6256)
+(or (not x6259) x6257)
+(or (not x6259) x6245)
+(or (not x6259) x5807)
+(or (not x6259) x5785)
+(or (not x6259) x5817)
+(or (not x6259) x6237)
+(or (not x6259) x6258)
+(or x6260 (not x6259))
+(or x6260 (not x6255))
+(or x6260 (not x6252))
+(or x6260 (not x6249))
+(or x6259 x6255 x6252 x6249 (not x6260))
+(or (not x6253) (not x6245) (not x6246) (not x6247) (not x6248) x6261)
+(or (not x6261) x6253)
+(or (not x6261) x6245)
+(or (not x6261) x6246)
+(or (not x6261) x6247)
+(or (not x6261) x6248)
+(or (not x6262) (not x6246) (not x6245) (not x5807) (not x6251) x6263)
+(or (not x6263) x6262)
+(or (not x6263) x6246)
+(or (not x6263) x6245)
+(or (not x6263) x5807)
+(or (not x6263) x6251)
+(or (not x6264) (not x6246) (not x6245) (not x5807) (not x6254) x6265)
+(or (not x6265) x6264)
+(or (not x6265) x6246)
+(or (not x6265) x6245)
+(or (not x6265) x5807)
+(or (not x6265) x6254)
+(or (not x6266) (not x6267) (not x6245) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6268)
+(or (not x6268) x6266)
+(or (not x6268) x6267)
+(or (not x6268) x6245)
+(or (not x6268) x5807)
+(or (not x6268) x5785)
+(or (not x6268) x5817)
+(or (not x6268) x6237)
+(or (not x6268) x6258)
+(or x6269 (not x6268))
+(or x6269 (not x6265))
+(or x6269 (not x6263))
+(or x6269 (not x6261))
+(or x6268 x6265 x6263 x6261 (not x6269))
+(or (not x6264) (not x6245) (not x6246) (not x6247) (not x6248) x6270)
+(or (not x6270) x6264)
+(or (not x6270) x6245)
+(or (not x6270) x6246)
+(or (not x6270) x6247)
+(or (not x6270) x6248)
+(or (not x6271) (not x6246) (not x6245) (not x5807) (not x6251) x6272)
+(or (not x6272) x6271)
+(or (not x6272) x6246)
+(or (not x6272) x6245)
+(or (not x6272) x5807)
+(or (not x6272) x6251)
+(or (not x6273) (not x6246) (not x6245) (not x5807) (not x6254) x6274)
+(or (not x6274) x6273)
+(or (not x6274) x6246)
+(or (not x6274) x6245)
+(or (not x6274) x5807)
+(or (not x6274) x6254)
+(or (not x6273) (not x6275) (not x6245) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6276)
+(or (not x6276) x6273)
+(or (not x6276) x6275)
+(or (not x6276) x6245)
+(or (not x6276) x5807)
+(or (not x6276) x5785)
+(or (not x6276) x5817)
+(or (not x6276) x6237)
+(or (not x6276) x6258)
+(or x6277 (not x6276))
+(or x6277 (not x6274))
+(or x6277 (not x6272))
+(or x6277 (not x6270))
+(or x6276 x6274 x6272 x6270 (not x6277))
+(or (not x6250) (not x6245) (not x6246) (not x6247) (not x6248) x6278)
+(or (not x6278) x6250)
+(or (not x6278) x6245)
+(or (not x6278) x6246)
+(or (not x6278) x6247)
+(or (not x6278) x6248)
+(or (not x6279) (not x6246) (not x6245) (not x5807) (not x6251) x6280)
+(or (not x6280) x6279)
+(or (not x6280) x6246)
+(or (not x6280) x6245)
+(or (not x6280) x5807)
+(or (not x6280) x6251)
+(or (not x6262) (not x6246) (not x6245) (not x5807) (not x6254) x6281)
+(or (not x6281) x6262)
+(or (not x6281) x6246)
+(or (not x6281) x6245)
+(or (not x6281) x5807)
+(or (not x6281) x6254)
+(or (not x6282) (not x6283) (not x6245) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6284)
+(or (not x6284) x6282)
+(or (not x6284) x6283)
+(or (not x6284) x6245)
+(or (not x6284) x5807)
+(or (not x6284) x5785)
+(or (not x6284) x5817)
+(or (not x6284) x6237)
+(or (not x6284) x6258)
+(or x6285 (not x6284))
+(or x6285 (not x6281))
+(or x6285 (not x6280))
+(or x6285 (not x6278))
+(or x6284 x6281 x6280 x6278 (not x6285))
+(or (not x6262) (not x6245) (not x6246) (not x6247) (not x6248) x6286)
+(or (not x6286) x6262)
+(or (not x6286) x6245)
+(or (not x6286) x6246)
+(or (not x6286) x6247)
+(or (not x6286) x6248)
+(or (not x6287) (not x6246) (not x6245) (not x5807) (not x6251) x6288)
+(or (not x6288) x6287)
+(or (not x6288) x6246)
+(or (not x6288) x6245)
+(or (not x6288) x5807)
+(or (not x6288) x6251)
+(or (not x6271) (not x6246) (not x6245) (not x5807) (not x6254) x6289)
+(or (not x6289) x6271)
+(or (not x6289) x6246)
+(or (not x6289) x6245)
+(or (not x6289) x5807)
+(or (not x6289) x6254)
+(or (not x6290) (not x6291) (not x6245) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6292)
+(or (not x6292) x6290)
+(or (not x6292) x6291)
+(or (not x6292) x6245)
+(or (not x6292) x5807)
+(or (not x6292) x5785)
+(or (not x6292) x5817)
+(or (not x6292) x6237)
+(or (not x6292) x6258)
+(or x6293 (not x6292))
+(or x6293 (not x6289))
+(or x6293 (not x6288))
+(or x6293 (not x6286))
+(or x6292 x6289 x6288 x6286 (not x6293))
+(or (not x6271) (not x6245) (not x6246) (not x6247) (not x6248) x6294)
+(or (not x6294) x6271)
+(or (not x6294) x6245)
+(or (not x6294) x6246)
+(or (not x6294) x6247)
+(or (not x6294) x6248)
+(or (not x6295) (not x6246) (not x6245) (not x5807) (not x6251) x6296)
+(or (not x6296) x6295)
+(or (not x6296) x6246)
+(or (not x6296) x6245)
+(or (not x6296) x5807)
+(or (not x6296) x6251)
+(or (not x6297) (not x6246) (not x6245) (not x5807) (not x6254) x6298)
+(or (not x6298) x6297)
+(or (not x6298) x6246)
+(or (not x6298) x6245)
+(or (not x6298) x5807)
+(or (not x6298) x6254)
+(or (not x6297) (not x6299) (not x6245) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6300)
+(or (not x6300) x6297)
+(or (not x6300) x6299)
+(or (not x6300) x6245)
+(or (not x6300) x5807)
+(or (not x6300) x5785)
+(or (not x6300) x5817)
+(or (not x6300) x6237)
+(or (not x6300) x6258)
+(or x6301 (not x6300))
+(or x6301 (not x6298))
+(or x6301 (not x6296))
+(or x6301 (not x6294))
+(or x6300 x6298 x6296 x6294 (not x6301))
+(or (not x6297) (not x6245) (not x6246) (not x6247) (not x6248) x6302)
+(or (not x6302) x6297)
+(or (not x6302) x6245)
+(or (not x6302) x6246)
+(or (not x6302) x6247)
+(or (not x6302) x6248)
+(or (not x6303) (not x6246) (not x6245) (not x5807) (not x6251) x6304)
+(or (not x6304) x6303)
+(or (not x6304) x6246)
+(or (not x6304) x6245)
+(or (not x6304) x5807)
+(or (not x6304) x6251)
+(or (not x6279) (not x6246) (not x6245) (not x5807) (not x6254) x6305)
+(or (not x6305) x6279)
+(or (not x6305) x6246)
+(or (not x6305) x6245)
+(or (not x6305) x5807)
+(or (not x6305) x6254)
+(or (not x6306) (not x6307) (not x6245) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6308)
+(or (not x6308) x6306)
+(or (not x6308) x6307)
+(or (not x6308) x6245)
+(or (not x6308) x5807)
+(or (not x6308) x5785)
+(or (not x6308) x5817)
+(or (not x6308) x6237)
+(or (not x6308) x6258)
+(or x6309 (not x6308))
+(or x6309 (not x6305))
+(or x6309 (not x6304))
+(or x6309 (not x6302))
+(or x6308 x6305 x6304 x6302 (not x6309))
+(or (not x6279) (not x6245) (not x6246) (not x6247) (not x6248) x6310)
+(or (not x6310) x6279)
+(or (not x6310) x6245)
+(or (not x6310) x6246)
+(or (not x6310) x6247)
+(or (not x6310) x6248)
+(or (not x6311) (not x6246) (not x6245) (not x5807) (not x6251) x6312)
+(or (not x6312) x6311)
+(or (not x6312) x6246)
+(or (not x6312) x6245)
+(or (not x6312) x5807)
+(or (not x6312) x6251)
+(or (not x6287) (not x6246) (not x6245) (not x5807) (not x6254) x6313)
+(or (not x6313) x6287)
+(or (not x6313) x6246)
+(or (not x6313) x6245)
+(or (not x6313) x5807)
+(or (not x6313) x6254)
+(or (not x6314) (not x6315) (not x6245) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6316)
+(or (not x6316) x6314)
+(or (not x6316) x6315)
+(or (not x6316) x6245)
+(or (not x6316) x5807)
+(or (not x6316) x5785)
+(or (not x6316) x5817)
+(or (not x6316) x6237)
+(or (not x6316) x6258)
+(or x6317 (not x6316))
+(or x6317 (not x6313))
+(or x6317 (not x6312))
+(or x6317 (not x6310))
+(or x6316 x6313 x6312 x6310 (not x6317))
+(or (not x6287) (not x6245) (not x6246) (not x6247) (not x6248) x6318)
+(or (not x6318) x6287)
+(or (not x6318) x6245)
+(or (not x6318) x6246)
+(or (not x6318) x6247)
+(or (not x6318) x6248)
+(or (not x6319) (not x6246) (not x6245) (not x5807) (not x6251) x6320)
+(or (not x6320) x6319)
+(or (not x6320) x6246)
+(or (not x6320) x6245)
+(or (not x6320) x5807)
+(or (not x6320) x6251)
+(or (not x6295) (not x6246) (not x6245) (not x5807) (not x6254) x6321)
+(or (not x6321) x6295)
+(or (not x6321) x6246)
+(or (not x6321) x6245)
+(or (not x6321) x5807)
+(or (not x6321) x6254)
+(or (not x6322) (not x6323) (not x6245) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6324)
+(or (not x6324) x6322)
+(or (not x6324) x6323)
+(or (not x6324) x6245)
+(or (not x6324) x5807)
+(or (not x6324) x5785)
+(or (not x6324) x5817)
+(or (not x6324) x6237)
+(or (not x6324) x6258)
+(or x6325 (not x6324))
+(or x6325 (not x6321))
+(or x6325 (not x6320))
+(or x6325 (not x6318))
+(or x6324 x6321 x6320 x6318 (not x6325))
+(or (not x6295) (not x6245) (not x6246) (not x6247) (not x6248) x6326)
+(or (not x6326) x6295)
+(or (not x6326) x6245)
+(or (not x6326) x6246)
+(or (not x6326) x6247)
+(or (not x6326) x6248)
+(or (not x6327) (not x6246) (not x6245) (not x5807) (not x6251) x6328)
+(or (not x6328) x6327)
+(or (not x6328) x6246)
+(or (not x6328) x6245)
+(or (not x6328) x5807)
+(or (not x6328) x6251)
+(or (not x6303) (not x6246) (not x6245) (not x5807) (not x6254) x6329)
+(or (not x6329) x6303)
+(or (not x6329) x6246)
+(or (not x6329) x6245)
+(or (not x6329) x5807)
+(or (not x6329) x6254)
+(or (not x6303) (not x6330) (not x6245) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6331)
+(or (not x6331) x6303)
+(or (not x6331) x6330)
+(or (not x6331) x6245)
+(or (not x6331) x5807)
+(or (not x6331) x5785)
+(or (not x6331) x5817)
+(or (not x6331) x6237)
+(or (not x6331) x6258)
+(or x6332 (not x6331))
+(or x6332 (not x6329))
+(or x6332 (not x6328))
+(or x6332 (not x6326))
+(or x6331 x6329 x6328 x6326 (not x6332))
+(or (not x6311) (not x6245) (not x6246) (not x6247) (not x6248) x6333)
+(or (not x6333) x6311)
+(or (not x6333) x6245)
+(or (not x6333) x6246)
+(or (not x6333) x6247)
+(or (not x6333) x6248)
+(or (not x6244) (not x6246) (not x6245) (not x5807) (not x6251) x6334)
+(or (not x6334) x6244)
+(or (not x6334) x6246)
+(or (not x6334) x6245)
+(or (not x6334) x5807)
+(or (not x6334) x6251)
+(or (not x6319) (not x6246) (not x6245) (not x5807) (not x6254) x6335)
+(or (not x6335) x6319)
+(or (not x6335) x6246)
+(or (not x6335) x6245)
+(or (not x6335) x5807)
+(or (not x6335) x6254)
+(or (not x6336) (not x6337) (not x6245) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6338)
+(or (not x6338) x6336)
+(or (not x6338) x6337)
+(or (not x6338) x6245)
+(or (not x6338) x5807)
+(or (not x6338) x5785)
+(or (not x6338) x5817)
+(or (not x6338) x6237)
+(or (not x6338) x6258)
+(or x6339 (not x6338))
+(or x6339 (not x6335))
+(or x6339 (not x6334))
+(or x6339 (not x6333))
+(or x6338 x6335 x6334 x6333 (not x6339))
+(or (not x6319) (not x6245) (not x6246) (not x6247) (not x6248) x6340)
+(or (not x6340) x6319)
+(or (not x6340) x6245)
+(or (not x6340) x6246)
+(or (not x6340) x6247)
+(or (not x6340) x6248)
+(or (not x6253) (not x6246) (not x6245) (not x5807) (not x6251) x6341)
+(or (not x6341) x6253)
+(or (not x6341) x6246)
+(or (not x6341) x6245)
+(or (not x6341) x5807)
+(or (not x6341) x6251)
+(or (not x6327) (not x6246) (not x6245) (not x5807) (not x6254) x6342)
+(or (not x6342) x6327)
+(or (not x6342) x6246)
+(or (not x6342) x6245)
+(or (not x6342) x5807)
+(or (not x6342) x6254)
+(or (not x6343) (not x6344) (not x6245) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6345)
+(or (not x6345) x6343)
+(or (not x6345) x6344)
+(or (not x6345) x6245)
+(or (not x6345) x5807)
+(or (not x6345) x5785)
+(or (not x6345) x5817)
+(or (not x6345) x6237)
+(or (not x6345) x6258)
+(or x6346 (not x6345))
+(or x6346 (not x6342))
+(or x6346 (not x6341))
+(or x6346 (not x6340))
+(or x6345 x6342 x6341 x6340 (not x6346))
+(or (not x6327) (not x6245) (not x6246) (not x6247) (not x6248) x6347)
+(or (not x6347) x6327)
+(or (not x6347) x6245)
+(or (not x6347) x6246)
+(or (not x6347) x6247)
+(or (not x6347) x6248)
+(or (not x6264) (not x6246) (not x6245) (not x5807) (not x6251) x6348)
+(or (not x6348) x6264)
+(or (not x6348) x6246)
+(or (not x6348) x6245)
+(or (not x6348) x5807)
+(or (not x6348) x6251)
+(or (not x6349) (not x6246) (not x6245) (not x5807) (not x6254) x6350)
+(or (not x6350) x6349)
+(or (not x6350) x6246)
+(or (not x6350) x6245)
+(or (not x6350) x5807)
+(or (not x6350) x6254)
+(or (not x6349) (not x6351) (not x6245) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6352)
+(or (not x6352) x6349)
+(or (not x6352) x6351)
+(or (not x6352) x6245)
+(or (not x6352) x5807)
+(or (not x6352) x5785)
+(or (not x6352) x5817)
+(or (not x6352) x6237)
+(or (not x6352) x6258)
+(or x6353 (not x6352))
+(or x6353 (not x6350))
+(or x6353 (not x6348))
+(or x6353 (not x6347))
+(or x6352 x6350 x6348 x6347 (not x6353))
+(or (not x6273) (not x6245) (not x6246) (not x6247) (not x6248) x6354)
+(or (not x6354) x6273)
+(or (not x6354) x6245)
+(or (not x6354) x6246)
+(or (not x6354) x6247)
+(or (not x6354) x6248)
+(or (not x6297) (not x6246) (not x6245) (not x5807) (not x6251) x6355)
+(or (not x6355) x6297)
+(or (not x6355) x6246)
+(or (not x6355) x6245)
+(or (not x6355) x5807)
+(or (not x6355) x6251)
+(or (not x6250) (not x6246) (not x6245) (not x5807) (not x6254) x6356)
+(or (not x6356) x6250)
+(or (not x6356) x6246)
+(or (not x6356) x6245)
+(or (not x6356) x5807)
+(or (not x6356) x6254)
+(or (not x6357) (not x6358) (not x6245) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6359)
+(or (not x6359) x6357)
+(or (not x6359) x6358)
+(or (not x6359) x6245)
+(or (not x6359) x5807)
+(or (not x6359) x5785)
+(or (not x6359) x5817)
+(or (not x6359) x6237)
+(or (not x6359) x6258)
+(or x6360 (not x6359))
+(or x6360 (not x6356))
+(or x6360 (not x6355))
+(or x6360 (not x6354))
+(or x6359 x6356 x6355 x6354 (not x6360))
+(or (not x6303) (not x6245) (not x6246) (not x6247) (not x6248) x6361)
+(or (not x6361) x6303)
+(or (not x6361) x6245)
+(or (not x6361) x6246)
+(or (not x6361) x6247)
+(or (not x6361) x6248)
+(or (not x6349) (not x6246) (not x6245) (not x5807) (not x6251) x6362)
+(or (not x6362) x6349)
+(or (not x6362) x6246)
+(or (not x6362) x6245)
+(or (not x6362) x5807)
+(or (not x6362) x6251)
+(or (not x6311) (not x6246) (not x6245) (not x5807) (not x6254) x6363)
+(or (not x6363) x6311)
+(or (not x6363) x6246)
+(or (not x6363) x6245)
+(or (not x6363) x5807)
+(or (not x6363) x6254)
+(or (not x6364) (not x6365) (not x6245) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6366)
+(or (not x6366) x6364)
+(or (not x6366) x6365)
+(or (not x6366) x6245)
+(or (not x6366) x5807)
+(or (not x6366) x5785)
+(or (not x6366) x5817)
+(or (not x6366) x6237)
+(or (not x6366) x6258)
+(or x6367 (not x6366))
+(or x6367 (not x6363))
+(or x6367 (not x6362))
+(or x6367 (not x6361))
+(or x6366 x6363 x6362 x6361 (not x6367))
+(or x6368 (not x6369))
+(or x6368 (not x6374))
+(or x6369 x6374 (not x6368))
+(or x6375 (not x6376))
+(or x6375 (not x6381))
+(or x6376 x6381 (not x6375))
+(or x6382 (not x6383))
+(or x6382 (not x6388))
+(or x6383 x6388 (not x6382))
+(or x6389 (not x6390))
+(or x6389 (not x6395))
+(or x6390 x6395 (not x6389))
+(or x6264 x6253 x6244 x6396)
+(or (not x6396) (not x6264))
+(or (not x6396) (not x6253))
+(or (not x6396) (not x6244))
+(or x6397 (not x6398))
+(or x6397 (not x6399))
+(or x6397 (not x6400))
+(or x6397 (not x6401))
+(or x6397 (not x6396))
+(or x6398 x6399 x6400 x6401 x6396 (not x6397))
+(or x6271 x6262 x6250 x6402)
+(or (not x6402) (not x6271))
+(or (not x6402) (not x6262))
+(or (not x6402) (not x6250))
+(or x6403 (not x6404))
+(or x6403 (not x6405))
+(or x6403 (not x6406))
+(or x6403 (not x6407))
+(or x6403 (not x6402))
+(or x6404 x6405 x6406 x6407 x6402 (not x6403))
+(or x6295 x6287 x6279 x6408)
+(or (not x6408) (not x6295))
+(or (not x6408) (not x6287))
+(or (not x6408) (not x6279))
+(or x6409 (not x6410))
+(or x6409 (not x6411))
+(or x6409 (not x6412))
+(or x6409 (not x6413))
+(or x6409 (not x6408))
+(or x6410 x6411 x6412 x6413 x6408 (not x6409))
+(or x6327 x6319 x6311 x6414)
+(or (not x6414) (not x6327))
+(or (not x6414) (not x6319))
+(or (not x6414) (not x6311))
+(or x6415 (not x6416))
+(or x6415 (not x6417))
+(or x6415 (not x6418))
+(or x6415 (not x6419))
+(or x6415 (not x6414))
+(or x6416 x6417 x6418 x6419 x6414 (not x6415))
+(or (not x6415) (not x6409) (not x6403) (not x6397) x6420)
+(or (not x6420) x6415)
+(or (not x6420) x6409)
+(or (not x6420) x6403)
+(or (not x6420) x6397)
+(or x6248 (not x6421))
+(or x6248 (not x6422))
+(or x6248 x5807)
+(or x6248 (not x6420))
+(or x6421 x6422 (not x5807) x6420 (not x6248))
+(or (not x6244) (not x6423) (not x6424) x6401)
+(or (not x6401) x6244)
+(or (not x6401) x6423)
+(or (not x6401) x6424)
+(or x6425 (not x6426))
+(or x6425 (not x6427))
+(or x6426 x6427 (not x6425))
+(or (not x6253) (not x6425) x6400)
+(or (not x6400) x6253)
+(or (not x6400) x6425)
+(or x6428 (not x6429))
+(or x6428 (not x6426))
+(or x6428 (not x6427))
+(or x6429 x6426 x6427 (not x6428))
+(or (not x6264) (not x6428) x6399)
+(or (not x6399) x6264)
+(or (not x6399) x6428)
+(or x6430 (not x6257))
+(or x6430 x6253)
+(or x6257 (not x6253) (not x6430))
+(or x6431 (not x6267))
+(or x6431 (not x6257))
+(or x6431 x6264)
+(or x6267 x6257 (not x6264) (not x6431))
+(or x6432 (not x6275))
+(or x6432 (not x6267))
+(or x6432 (not x6257))
+(or x6432 x6273)
+(or x6275 x6267 x6257 (not x6273) (not x6432))
+(or x6244 (not x6432) (not x6431) (not x6430) x6433)
+(or (not x6433) (not x6244))
+(or (not x6433) x6432)
+(or (not x6433) x6431)
+(or (not x6433) x6430)
+(or x6423 (not x6433))
+(or x6423 x6424)
+(or x6423 x5807)
+(or x6423 (not x6076))
+(or x6423 (not x6077))
+(or x6423 (not x6434))
+(or x6423 (not x6435))
+(or x6433 (not x6424) (not x5807) x6076 x6077 x6434 x6435 (not x6423))
+(or (not x6423) (not x6424) x6427)
+(or (not x6427) x6423)
+(or (not x6427) x6424)
+(or x6436 (not x6267))
+(or x6436 x6264)
+(or x6267 (not x6264) (not x6436))
+(or x6437 (not x6275))
+(or x6437 (not x6267))
+(or x6437 x6273)
+(or x6275 x6267 (not x6273) (not x6437))
+(or x6253 (not x6437) (not x6436) x6438)
+(or (not x6438) (not x6253))
+(or (not x6438) x6437)
+(or (not x6438) x6436)
+(or x6439 (not x6438))
+(or x6439 x6257)
+(or x6439 x5807)
+(or x6439 (not x6076))
+(or x6439 (not x6077))
+(or x6439 (not x6434))
+(or x6439 (not x6435))
+(or x6438 (not x6257) (not x5807) x6076 x6077 x6434 x6435 (not x6439))
+(or (not x6439) (not x6257) x6426)
+(or (not x6426) x6439)
+(or (not x6426) x6257)
+(or x6440 (not x6275))
+(or x6440 x6273)
+(or x6275 (not x6273) (not x6440))
+(or x6264 (not x6440) x6441)
+(or (not x6441) (not x6264))
+(or (not x6441) x6440)
+(or x6442 (not x6441))
+(or x6442 x6267)
+(or x6442 x5807)
+(or x6442 (not x6076))
+(or x6442 (not x6077))
+(or x6442 (not x6434))
+(or x6442 (not x6435))
+(or x6441 (not x6267) (not x5807) x6076 x6077 x6434 x6435 (not x6442))
+(or (not x6442) (not x6267) x6429)
+(or (not x6429) x6442)
+(or (not x6429) x6267)
+(or x6443 x6273)
+(or x6443 x6275)
+(or x6443 x5807)
+(or x6443 (not x6076))
+(or x6443 (not x6077))
+(or x6443 (not x6434))
+(or x6443 (not x6435))
+(or (not x6273) (not x6275) (not x5807) x6076 x6077 x6434 x6435 (not x6443))
+(or (not x6443) (not x6275) x6444)
+(or (not x6444) x6443)
+(or (not x6444) x6275)
+(or x6445 (not x6444))
+(or x6445 (not x6429))
+(or x6445 (not x6426))
+(or x6445 (not x6427))
+(or x6444 x6429 x6426 x6427 (not x6445))
+(or (not x6273) (not x6445) x6398)
+(or (not x6398) x6273)
+(or (not x6398) x6445)
+(or x6446 (not x6398))
+(or x6446 (not x6399))
+(or x6446 (not x6400))
+(or x6446 (not x6401))
+(or x6446 x6273)
+(or x6398 x6399 x6400 x6401 (not x6273) (not x6446))
+(or (not x6250) (not x6447) (not x6358) x6407)
+(or (not x6407) x6250)
+(or (not x6407) x6447)
+(or (not x6407) x6358)
+(or x6448 (not x6449))
+(or x6448 (not x6450))
+(or x6449 x6450 (not x6448))
+(or (not x6262) (not x6448) x6406)
+(or (not x6406) x6262)
+(or (not x6406) x6448)
+(or x6451 (not x6452))
+(or x6451 (not x6449))
+(or x6451 (not x6450))
+(or x6452 x6449 x6450 (not x6451))
+(or (not x6271) (not x6451) x6405)
+(or (not x6405) x6271)
+(or (not x6405) x6451)
+(or x6453 (not x6283))
+(or x6453 x6262)
+(or x6283 (not x6262) (not x6453))
+(or x6454 (not x6291))
+(or x6454 (not x6283))
+(or x6454 x6271)
+(or x6291 x6283 (not x6271) (not x6454))
+(or x6455 (not x6299))
+(or x6455 (not x6291))
+(or x6455 (not x6283))
+(or x6455 x6297)
+(or x6299 x6291 x6283 (not x6297) (not x6455))
+(or x6250 (not x6455) (not x6454) (not x6453) x6456)
+(or (not x6456) (not x6250))
+(or (not x6456) x6455)
+(or (not x6456) x6454)
+(or (not x6456) x6453)
+(or x6447 (not x6456))
+(or x6447 x6358)
+(or x6447 x5807)
+(or x6447 (not x6076))
+(or x6447 (not x6077))
+(or x6447 (not x6434))
+(or x6447 (not x6435))
+(or x6456 (not x6358) (not x5807) x6076 x6077 x6434 x6435 (not x6447))
+(or (not x6447) (not x6358) x6450)
+(or (not x6450) x6447)
+(or (not x6450) x6358)
+(or x6457 (not x6291))
+(or x6457 x6271)
+(or x6291 (not x6271) (not x6457))
+(or x6458 (not x6299))
+(or x6458 (not x6291))
+(or x6458 x6297)
+(or x6299 x6291 (not x6297) (not x6458))
+(or x6262 (not x6458) (not x6457) x6459)
+(or (not x6459) (not x6262))
+(or (not x6459) x6458)
+(or (not x6459) x6457)
+(or x6460 (not x6459))
+(or x6460 x6283)
+(or x6460 x5807)
+(or x6460 (not x6076))
+(or x6460 (not x6077))
+(or x6460 (not x6434))
+(or x6460 (not x6435))
+(or x6459 (not x6283) (not x5807) x6076 x6077 x6434 x6435 (not x6460))
+(or (not x6460) (not x6283) x6449)
+(or (not x6449) x6460)
+(or (not x6449) x6283)
+(or x6461 (not x6299))
+(or x6461 x6297)
+(or x6299 (not x6297) (not x6461))
+(or x6271 (not x6461) x6462)
+(or (not x6462) (not x6271))
+(or (not x6462) x6461)
+(or x6463 (not x6462))
+(or x6463 x6291)
+(or x6463 x5807)
+(or x6463 (not x6076))
+(or x6463 (not x6077))
+(or x6463 (not x6434))
+(or x6463 (not x6435))
+(or x6462 (not x6291) (not x5807) x6076 x6077 x6434 x6435 (not x6463))
+(or (not x6463) (not x6291) x6452)
+(or (not x6452) x6463)
+(or (not x6452) x6291)
+(or x6464 x6297)
+(or x6464 x6299)
+(or x6464 x5807)
+(or x6464 (not x6076))
+(or x6464 (not x6077))
+(or x6464 (not x6434))
+(or x6464 (not x6435))
+(or (not x6297) (not x6299) (not x5807) x6076 x6077 x6434 x6435 (not x6464))
+(or (not x6464) (not x6299) x6465)
+(or (not x6465) x6464)
+(or (not x6465) x6299)
+(or x6466 (not x6465))
+(or x6466 (not x6452))
+(or x6466 (not x6449))
+(or x6466 (not x6450))
+(or x6465 x6452 x6449 x6450 (not x6466))
+(or (not x6297) (not x6466) x6404)
+(or (not x6404) x6297)
+(or (not x6404) x6466)
+(or x6467 (not x6404))
+(or x6467 (not x6405))
+(or x6467 (not x6406))
+(or x6467 (not x6407))
+(or x6467 x6297)
+(or x6404 x6405 x6406 x6407 (not x6297) (not x6467))
+(or (not x6279) (not x6468) (not x6307) x6413)
+(or (not x6413) x6279)
+(or (not x6413) x6468)
+(or (not x6413) x6307)
+(or x6469 (not x6470))
+(or x6469 (not x6471))
+(or x6470 x6471 (not x6469))
+(or (not x6287) (not x6469) x6412)
+(or (not x6412) x6287)
+(or (not x6412) x6469)
+(or x6472 (not x6473))
+(or x6472 (not x6470))
+(or x6472 (not x6471))
+(or x6473 x6470 x6471 (not x6472))
+(or (not x6295) (not x6472) x6411)
+(or (not x6411) x6295)
+(or (not x6411) x6472)
+(or x6474 (not x6315))
+(or x6474 x6287)
+(or x6315 (not x6287) (not x6474))
+(or x6475 (not x6323))
+(or x6475 (not x6315))
+(or x6475 x6295)
+(or x6323 x6315 (not x6295) (not x6475))
+(or x6476 (not x6330))
+(or x6476 (not x6323))
+(or x6476 (not x6315))
+(or x6476 x6303)
+(or x6330 x6323 x6315 (not x6303) (not x6476))
+(or x6279 (not x6476) (not x6475) (not x6474) x6477)
+(or (not x6477) (not x6279))
+(or (not x6477) x6476)
+(or (not x6477) x6475)
+(or (not x6477) x6474)
+(or x6468 (not x6477))
+(or x6468 x6307)
+(or x6468 x5807)
+(or x6468 (not x6076))
+(or x6468 (not x6077))
+(or x6468 (not x6434))
+(or x6468 (not x6435))
+(or x6477 (not x6307) (not x5807) x6076 x6077 x6434 x6435 (not x6468))
+(or (not x6468) (not x6307) x6471)
+(or (not x6471) x6468)
+(or (not x6471) x6307)
+(or x6478 (not x6323))
+(or x6478 x6295)
+(or x6323 (not x6295) (not x6478))
+(or x6479 (not x6330))
+(or x6479 (not x6323))
+(or x6479 x6303)
+(or x6330 x6323 (not x6303) (not x6479))
+(or x6287 (not x6479) (not x6478) x6480)
+(or (not x6480) (not x6287))
+(or (not x6480) x6479)
+(or (not x6480) x6478)
+(or x6481 (not x6480))
+(or x6481 x6315)
+(or x6481 x5807)
+(or x6481 (not x6076))
+(or x6481 (not x6077))
+(or x6481 (not x6434))
+(or x6481 (not x6435))
+(or x6480 (not x6315) (not x5807) x6076 x6077 x6434 x6435 (not x6481))
+(or (not x6481) (not x6315) x6470)
+(or (not x6470) x6481)
+(or (not x6470) x6315)
+(or x6482 (not x6330))
+(or x6482 x6303)
+(or x6330 (not x6303) (not x6482))
+(or x6295 (not x6482) x6483)
+(or (not x6483) (not x6295))
+(or (not x6483) x6482)
+(or x6484 (not x6483))
+(or x6484 x6323)
+(or x6484 x5807)
+(or x6484 (not x6076))
+(or x6484 (not x6077))
+(or x6484 (not x6434))
+(or x6484 (not x6435))
+(or x6483 (not x6323) (not x5807) x6076 x6077 x6434 x6435 (not x6484))
+(or (not x6484) (not x6323) x6473)
+(or (not x6473) x6484)
+(or (not x6473) x6323)
+(or x6485 x6303)
+(or x6485 x6330)
+(or x6485 x5807)
+(or x6485 (not x6076))
+(or x6485 (not x6077))
+(or x6485 (not x6434))
+(or x6485 (not x6435))
+(or (not x6303) (not x6330) (not x5807) x6076 x6077 x6434 x6435 (not x6485))
+(or (not x6485) (not x6330) x6486)
+(or (not x6486) x6485)
+(or (not x6486) x6330)
+(or x6487 (not x6486))
+(or x6487 (not x6473))
+(or x6487 (not x6470))
+(or x6487 (not x6471))
+(or x6486 x6473 x6470 x6471 (not x6487))
+(or (not x6303) (not x6487) x6410)
+(or (not x6410) x6303)
+(or (not x6410) x6487)
+(or x6488 (not x6410))
+(or x6488 (not x6411))
+(or x6488 (not x6412))
+(or x6488 (not x6413))
+(or x6488 x6303)
+(or x6410 x6411 x6412 x6413 (not x6303) (not x6488))
+(or (not x6311) (not x6489) (not x6365) x6419)
+(or (not x6419) x6311)
+(or (not x6419) x6489)
+(or (not x6419) x6365)
+(or x6490 (not x6381))
+(or x6490 (not x6374))
+(or x6381 x6374 (not x6490))
+(or (not x6319) (not x6490) x6418)
+(or (not x6418) x6319)
+(or (not x6418) x6490)
+(or x6491 (not x6388))
+(or x6491 (not x6381))
+(or x6491 (not x6374))
+(or x6388 x6381 x6374 (not x6491))
+(or (not x6327) (not x6491) x6417)
+(or (not x6417) x6327)
+(or (not x6417) x6491)
+(or x6492 (not x6337))
+(or x6492 x6319)
+(or x6337 (not x6319) (not x6492))
+(or x6493 (not x6344))
+(or x6493 (not x6337))
+(or x6493 x6327)
+(or x6344 x6337 (not x6327) (not x6493))
+(or x6494 (not x6351))
+(or x6494 (not x6344))
+(or x6494 (not x6337))
+(or x6494 x6349)
+(or x6351 x6344 x6337 (not x6349) (not x6494))
+(or x6311 (not x6494) (not x6493) (not x6492) x6495)
+(or (not x6495) (not x6311))
+(or (not x6495) x6494)
+(or (not x6495) x6493)
+(or (not x6495) x6492)
+(or x6489 (not x6495))
+(or x6489 x6365)
+(or x6489 x5807)
+(or x6489 (not x6076))
+(or x6489 (not x6077))
+(or x6489 (not x6434))
+(or x6489 (not x6435))
+(or x6495 (not x6365) (not x5807) x6076 x6077 x6434 x6435 (not x6489))
+(or (not x6489) (not x6365) x6374)
+(or (not x6374) x6489)
+(or (not x6374) x6365)
+(or x6496 (not x6344))
+(or x6496 x6327)
+(or x6344 (not x6327) (not x6496))
+(or x6497 (not x6351))
+(or x6497 (not x6344))
+(or x6497 x6349)
+(or x6351 x6344 (not x6349) (not x6497))
+(or x6319 (not x6497) (not x6496) x6498)
+(or (not x6498) (not x6319))
+(or (not x6498) x6497)
+(or (not x6498) x6496)
+(or x6499 (not x6498))
+(or x6499 x6337)
+(or x6499 x5807)
+(or x6499 (not x6076))
+(or x6499 (not x6077))
+(or x6499 (not x6434))
+(or x6499 (not x6435))
+(or x6498 (not x6337) (not x5807) x6076 x6077 x6434 x6435 (not x6499))
+(or (not x6499) (not x6337) x6381)
+(or (not x6381) x6499)
+(or (not x6381) x6337)
+(or x6500 (not x6351))
+(or x6500 x6349)
+(or x6351 (not x6349) (not x6500))
+(or x6327 (not x6500) x6501)
+(or (not x6501) (not x6327))
+(or (not x6501) x6500)
+(or x6502 (not x6501))
+(or x6502 x6344)
+(or x6502 x5807)
+(or x6502 (not x6076))
+(or x6502 (not x6077))
+(or x6502 (not x6434))
+(or x6502 (not x6435))
+(or x6501 (not x6344) (not x5807) x6076 x6077 x6434 x6435 (not x6502))
+(or (not x6502) (not x6344) x6388)
+(or (not x6388) x6502)
+(or (not x6388) x6344)
+(or x6503 x6349)
+(or x6503 x6351)
+(or x6503 x5807)
+(or x6503 (not x6076))
+(or x6503 (not x6077))
+(or x6503 (not x6434))
+(or x6503 (not x6435))
+(or (not x6349) (not x6351) (not x5807) x6076 x6077 x6434 x6435 (not x6503))
+(or (not x6503) (not x6351) x6395)
+(or (not x6395) x6503)
+(or (not x6395) x6351)
+(or x6504 (not x6395))
+(or x6504 (not x6388))
+(or x6504 (not x6381))
+(or x6504 (not x6374))
+(or x6395 x6388 x6381 x6374 (not x6504))
+(or (not x6349) (not x6504) x6416)
+(or (not x6416) x6349)
+(or (not x6416) x6504)
+(or x6505 (not x6416))
+(or x6505 (not x6417))
+(or x6505 (not x6418))
+(or x6505 (not x6419))
+(or x6505 x6349)
+(or x6416 x6417 x6418 x6419 (not x6349) (not x6505))
+(or (not x6505) (not x6488) (not x6467) (not x6446) x6506)
+(or (not x6506) x6505)
+(or (not x6506) x6488)
+(or (not x6506) x6467)
+(or (not x6506) x6446)
+(or x6349 x6327 x6319 x6311 x6303 x6295 x6287 x6279 x6297 x6271 x6262 x6250 x6273 x6264 x6253 x6244 x6422)
+(or (not x6422) (not x6349))
+(or (not x6422) (not x6327))
+(or (not x6422) (not x6319))
+(or (not x6422) (not x6311))
+(or (not x6422) (not x6303))
+(or (not x6422) (not x6295))
+(or (not x6422) (not x6287))
+(or (not x6422) (not x6279))
+(or (not x6422) (not x6297))
+(or (not x6422) (not x6271))
+(or (not x6422) (not x6262))
+(or (not x6422) (not x6250))
+(or (not x6422) (not x6273))
+(or (not x6422) (not x6264))
+(or (not x6422) (not x6253))
+(or (not x6422) (not x6244))
+(or x6247 (not x6421))
+(or x6247 (not x6422))
+(or x6247 x5807)
+(or x6247 (not x6506))
+(or x6421 x6422 (not x5807) x6506 (not x6247))
+(or (not x6349) (not x6245) (not x6246) (not x6247) (not x6248) x6507)
+(or (not x6507) x6349)
+(or (not x6507) x6245)
+(or (not x6507) x6246)
+(or (not x6507) x6247)
+(or (not x6507) x6248)
+(or (not x6508) (not x6509) (not x6510) (not x6511) (not x6273) x6512)
+(or (not x6512) x6508)
+(or (not x6512) x6509)
+(or (not x6512) x6510)
+(or (not x6512) x6511)
+(or (not x6512) x6273)
+(or (not x6513) (not x6514) (not x6515) (not x6516) (not x6297) x6517)
+(or (not x6517) x6513)
+(or (not x6517) x6514)
+(or (not x6517) x6515)
+(or (not x6517) x6516)
+(or (not x6517) x6297)
+(or (not x6518) (not x6519) (not x6520) (not x6521) (not x6303) x6522)
+(or (not x6522) x6518)
+(or (not x6522) x6519)
+(or (not x6522) x6520)
+(or (not x6522) x6521)
+(or (not x6522) x6303)
+(or (not x6523) (not x6524) (not x6525) (not x6526) (not x6349) x6527)
+(or (not x6527) x6523)
+(or (not x6527) x6524)
+(or (not x6527) x6525)
+(or (not x6527) x6526)
+(or (not x6527) x6349)
+(or x6251 (not x6527))
+(or x6251 (not x6522))
+(or x6251 (not x6517))
+(or x6251 (not x6512))
+(or x6527 x6522 x6517 x6512 (not x6251))
+(or (not x6273) (not x6246) (not x6245) (not x5807) (not x6251) x6528)
+(or (not x6528) x6273)
+(or (not x6528) x6246)
+(or (not x6528) x6245)
+(or (not x6528) x5807)
+(or (not x6528) x6251)
+(or x6529 (not x6264))
+(or x6529 (not x6253))
+(or x6529 (not x6244))
+(or x6264 x6253 x6244 (not x6529))
+(or x6511 x6244)
+(or x6511 (not x6530))
+(or x6511 x6424)
+(or (not x6244) x6530 (not x6424) (not x6511))
+(or (not x6531) (not x6532) x6533)
+(or (not x6533) x6531)
+(or (not x6533) x6532)
+(or x6510 x6253)
+(or x6510 (not x6533))
+(or (not x6253) x6533 (not x6510))
+(or (not x6534) (not x6531) (not x6532) x6535)
+(or (not x6535) x6534)
+(or (not x6535) x6531)
+(or (not x6535) x6532)
+(or x6509 x6264)
+(or x6509 (not x6535))
+(or (not x6264) x6535 (not x6509))
+(or (not x6536) (not x6424) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6530)
+(or (not x6530) x6536)
+(or (not x6530) x6424)
+(or (not x6530) x5807)
+(or (not x6530) x5785)
+(or (not x6530) x5817)
+(or (not x6530) x6237)
+(or (not x6530) x6258)
+(or x6532 (not x6530))
+(or x6532 x6424)
+(or x6530 (not x6424) (not x6532))
+(or x6267 (not x6264) x6537)
+(or (not x6537) (not x6267))
+(or (not x6537) x6264)
+(or x6275 x6267 (not x6273) x6538)
+(or (not x6538) (not x6275))
+(or (not x6538) (not x6267))
+(or (not x6538) x6273)
+(or x6256 (not x6253))
+(or x6256 (not x6538))
+(or x6256 (not x6537))
+(or x6253 x6538 x6537 (not x6256))
+(or (not x6256) (not x6257) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6539)
+(or (not x6539) x6256)
+(or (not x6539) x6257)
+(or (not x6539) x5807)
+(or (not x6539) x5785)
+(or (not x6539) x5817)
+(or (not x6539) x6237)
+(or (not x6539) x6258)
+(or x6531 (not x6539))
+(or x6531 x6257)
+(or x6539 (not x6257) (not x6531))
+(or x6275 (not x6273) x6540)
+(or (not x6540) (not x6275))
+(or (not x6540) x6273)
+(or x6266 (not x6264))
+(or x6266 (not x6540))
+(or x6264 x6540 (not x6266))
+(or (not x6266) (not x6267) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6541)
+(or (not x6541) x6266)
+(or (not x6541) x6267)
+(or (not x6541) x5807)
+(or (not x6541) x5785)
+(or (not x6541) x5817)
+(or (not x6541) x6237)
+(or (not x6541) x6258)
+(or x6534 (not x6541))
+(or x6534 x6267)
+(or x6541 (not x6267) (not x6534))
+(or (not x6273) (not x6275) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6542)
+(or (not x6542) x6273)
+(or (not x6542) x6275)
+(or (not x6542) x5807)
+(or (not x6542) x5785)
+(or (not x6542) x5817)
+(or (not x6542) x6237)
+(or (not x6542) x6258)
+(or x6543 (not x6542))
+(or x6543 x6275)
+(or x6542 (not x6275) (not x6543))
+(or (not x6543) (not x6534) (not x6531) (not x6532) x6544)
+(or (not x6544) x6543)
+(or (not x6544) x6534)
+(or (not x6544) x6531)
+(or (not x6544) x6532)
+(or x6508 x6273)
+(or x6508 (not x6544))
+(or (not x6273) x6544 (not x6508))
+(or (not x6508) (not x6509) (not x6510) (not x6511) (not x6529) x6545)
+(or (not x6545) x6508)
+(or (not x6545) x6509)
+(or (not x6545) x6510)
+(or (not x6545) x6511)
+(or (not x6545) x6529)
+(or x6546 (not x6271))
+(or x6546 (not x6262))
+(or x6546 (not x6250))
+(or x6271 x6262 x6250 (not x6546))
+(or x6516 x6250)
+(or x6516 (not x6547))
+(or x6516 x6358)
+(or (not x6250) x6547 (not x6358) (not x6516))
+(or (not x6548) (not x6549) x6550)
+(or (not x6550) x6548)
+(or (not x6550) x6549)
+(or x6515 x6262)
+(or x6515 (not x6550))
+(or (not x6262) x6550 (not x6515))
+(or (not x6551) (not x6548) (not x6549) x6552)
+(or (not x6552) x6551)
+(or (not x6552) x6548)
+(or (not x6552) x6549)
+(or x6514 x6271)
+(or x6514 (not x6552))
+(or (not x6271) x6552 (not x6514))
+(or x6283 (not x6262) x6553)
+(or (not x6553) (not x6283))
+(or (not x6553) x6262)
+(or x6291 x6283 (not x6271) x6554)
+(or (not x6554) (not x6291))
+(or (not x6554) (not x6283))
+(or (not x6554) x6271)
+(or x6299 x6291 x6283 (not x6297) x6555)
+(or (not x6555) (not x6299))
+(or (not x6555) (not x6291))
+(or (not x6555) (not x6283))
+(or (not x6555) x6297)
+(or x6357 (not x6250))
+(or x6357 (not x6555))
+(or x6357 (not x6554))
+(or x6357 (not x6553))
+(or x6250 x6555 x6554 x6553 (not x6357))
+(or (not x6357) (not x6358) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6547)
+(or (not x6547) x6357)
+(or (not x6547) x6358)
+(or (not x6547) x5807)
+(or (not x6547) x5785)
+(or (not x6547) x5817)
+(or (not x6547) x6237)
+(or (not x6547) x6258)
+(or x6549 (not x6547))
+(or x6549 x6358)
+(or x6547 (not x6358) (not x6549))
+(or x6291 (not x6271) x6556)
+(or (not x6556) (not x6291))
+(or (not x6556) x6271)
+(or x6299 x6291 (not x6297) x6557)
+(or (not x6557) (not x6299))
+(or (not x6557) (not x6291))
+(or (not x6557) x6297)
+(or x6282 (not x6262))
+(or x6282 (not x6557))
+(or x6282 (not x6556))
+(or x6262 x6557 x6556 (not x6282))
+(or (not x6282) (not x6283) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6558)
+(or (not x6558) x6282)
+(or (not x6558) x6283)
+(or (not x6558) x5807)
+(or (not x6558) x5785)
+(or (not x6558) x5817)
+(or (not x6558) x6237)
+(or (not x6558) x6258)
+(or x6548 (not x6558))
+(or x6548 x6283)
+(or x6558 (not x6283) (not x6548))
+(or x6299 (not x6297) x6559)
+(or (not x6559) (not x6299))
+(or (not x6559) x6297)
+(or x6290 (not x6271))
+(or x6290 (not x6559))
+(or x6271 x6559 (not x6290))
+(or (not x6290) (not x6291) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6560)
+(or (not x6560) x6290)
+(or (not x6560) x6291)
+(or (not x6560) x5807)
+(or (not x6560) x5785)
+(or (not x6560) x5817)
+(or (not x6560) x6237)
+(or (not x6560) x6258)
+(or x6551 (not x6560))
+(or x6551 x6291)
+(or x6560 (not x6291) (not x6551))
+(or (not x6297) (not x6299) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6561)
+(or (not x6561) x6297)
+(or (not x6561) x6299)
+(or (not x6561) x5807)
+(or (not x6561) x5785)
+(or (not x6561) x5817)
+(or (not x6561) x6237)
+(or (not x6561) x6258)
+(or x6562 (not x6561))
+(or x6562 x6299)
+(or x6561 (not x6299) (not x6562))
+(or (not x6562) (not x6551) (not x6548) (not x6549) x6563)
+(or (not x6563) x6562)
+(or (not x6563) x6551)
+(or (not x6563) x6548)
+(or (not x6563) x6549)
+(or x6513 x6297)
+(or x6513 (not x6563))
+(or (not x6297) x6563 (not x6513))
+(or (not x6513) (not x6514) (not x6515) (not x6516) (not x6546) x6564)
+(or (not x6564) x6513)
+(or (not x6564) x6514)
+(or (not x6564) x6515)
+(or (not x6564) x6516)
+(or (not x6564) x6546)
+(or x6565 (not x6295))
+(or x6565 (not x6287))
+(or x6565 (not x6279))
+(or x6295 x6287 x6279 (not x6565))
+(or x6521 x6279)
+(or x6521 (not x6566))
+(or x6521 x6307)
+(or (not x6279) x6566 (not x6307) (not x6521))
+(or (not x6567) (not x6568) x6569)
+(or (not x6569) x6567)
+(or (not x6569) x6568)
+(or x6520 x6287)
+(or x6520 (not x6569))
+(or (not x6287) x6569 (not x6520))
+(or (not x6570) (not x6567) (not x6568) x6571)
+(or (not x6571) x6570)
+(or (not x6571) x6567)
+(or (not x6571) x6568)
+(or x6519 x6295)
+(or x6519 (not x6571))
+(or (not x6295) x6571 (not x6519))
+(or x6315 (not x6287) x6572)
+(or (not x6572) (not x6315))
+(or (not x6572) x6287)
+(or x6323 x6315 (not x6295) x6573)
+(or (not x6573) (not x6323))
+(or (not x6573) (not x6315))
+(or (not x6573) x6295)
+(or x6330 x6323 x6315 (not x6303) x6574)
+(or (not x6574) (not x6330))
+(or (not x6574) (not x6323))
+(or (not x6574) (not x6315))
+(or (not x6574) x6303)
+(or x6306 (not x6279))
+(or x6306 (not x6574))
+(or x6306 (not x6573))
+(or x6306 (not x6572))
+(or x6279 x6574 x6573 x6572 (not x6306))
+(or (not x6306) (not x6307) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6566)
+(or (not x6566) x6306)
+(or (not x6566) x6307)
+(or (not x6566) x5807)
+(or (not x6566) x5785)
+(or (not x6566) x5817)
+(or (not x6566) x6237)
+(or (not x6566) x6258)
+(or x6568 (not x6566))
+(or x6568 x6307)
+(or x6566 (not x6307) (not x6568))
+(or x6323 (not x6295) x6575)
+(or (not x6575) (not x6323))
+(or (not x6575) x6295)
+(or x6330 x6323 (not x6303) x6576)
+(or (not x6576) (not x6330))
+(or (not x6576) (not x6323))
+(or (not x6576) x6303)
+(or x6314 (not x6287))
+(or x6314 (not x6576))
+(or x6314 (not x6575))
+(or x6287 x6576 x6575 (not x6314))
+(or (not x6314) (not x6315) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6577)
+(or (not x6577) x6314)
+(or (not x6577) x6315)
+(or (not x6577) x5807)
+(or (not x6577) x5785)
+(or (not x6577) x5817)
+(or (not x6577) x6237)
+(or (not x6577) x6258)
+(or x6567 (not x6577))
+(or x6567 x6315)
+(or x6577 (not x6315) (not x6567))
+(or x6330 (not x6303) x6578)
+(or (not x6578) (not x6330))
+(or (not x6578) x6303)
+(or x6322 (not x6295))
+(or x6322 (not x6578))
+(or x6295 x6578 (not x6322))
+(or (not x6322) (not x6323) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6579)
+(or (not x6579) x6322)
+(or (not x6579) x6323)
+(or (not x6579) x5807)
+(or (not x6579) x5785)
+(or (not x6579) x5817)
+(or (not x6579) x6237)
+(or (not x6579) x6258)
+(or x6570 (not x6579))
+(or x6570 x6323)
+(or x6579 (not x6323) (not x6570))
+(or (not x6303) (not x6330) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6580)
+(or (not x6580) x6303)
+(or (not x6580) x6330)
+(or (not x6580) x5807)
+(or (not x6580) x5785)
+(or (not x6580) x5817)
+(or (not x6580) x6237)
+(or (not x6580) x6258)
+(or x6581 (not x6580))
+(or x6581 x6330)
+(or x6580 (not x6330) (not x6581))
+(or (not x6581) (not x6570) (not x6567) (not x6568) x6582)
+(or (not x6582) x6581)
+(or (not x6582) x6570)
+(or (not x6582) x6567)
+(or (not x6582) x6568)
+(or x6518 x6303)
+(or x6518 (not x6582))
+(or (not x6303) x6582 (not x6518))
+(or (not x6518) (not x6519) (not x6520) (not x6521) (not x6565) x6583)
+(or (not x6583) x6518)
+(or (not x6583) x6519)
+(or (not x6583) x6520)
+(or (not x6583) x6521)
+(or (not x6583) x6565)
+(or x6584 (not x6327))
+(or x6584 (not x6319))
+(or x6584 (not x6311))
+(or x6327 x6319 x6311 (not x6584))
+(or x6526 x6311)
+(or x6526 (not x6585))
+(or x6526 x6365)
+(or (not x6311) x6585 (not x6365) (not x6526))
+(or (not x6586) (not x6587) x6588)
+(or (not x6588) x6586)
+(or (not x6588) x6587)
+(or x6525 x6319)
+(or x6525 (not x6588))
+(or (not x6319) x6588 (not x6525))
+(or (not x6589) (not x6586) (not x6587) x6590)
+(or (not x6590) x6589)
+(or (not x6590) x6586)
+(or (not x6590) x6587)
+(or x6524 x6327)
+(or x6524 (not x6590))
+(or (not x6327) x6590 (not x6524))
+(or x6337 (not x6319) x6591)
+(or (not x6591) (not x6337))
+(or (not x6591) x6319)
+(or x6344 x6337 (not x6327) x6592)
+(or (not x6592) (not x6344))
+(or (not x6592) (not x6337))
+(or (not x6592) x6327)
+(or x6351 x6344 x6337 (not x6349) x6593)
+(or (not x6593) (not x6351))
+(or (not x6593) (not x6344))
+(or (not x6593) (not x6337))
+(or (not x6593) x6349)
+(or x6364 (not x6311))
+(or x6364 (not x6593))
+(or x6364 (not x6592))
+(or x6364 (not x6591))
+(or x6311 x6593 x6592 x6591 (not x6364))
+(or (not x6364) (not x6365) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6585)
+(or (not x6585) x6364)
+(or (not x6585) x6365)
+(or (not x6585) x5807)
+(or (not x6585) x5785)
+(or (not x6585) x5817)
+(or (not x6585) x6237)
+(or (not x6585) x6258)
+(or x6587 (not x6585))
+(or x6587 x6365)
+(or x6585 (not x6365) (not x6587))
+(or x6344 (not x6327) x6594)
+(or (not x6594) (not x6344))
+(or (not x6594) x6327)
+(or x6351 x6344 (not x6349) x6595)
+(or (not x6595) (not x6351))
+(or (not x6595) (not x6344))
+(or (not x6595) x6349)
+(or x6336 (not x6319))
+(or x6336 (not x6595))
+(or x6336 (not x6594))
+(or x6319 x6595 x6594 (not x6336))
+(or (not x6336) (not x6337) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6596)
+(or (not x6596) x6336)
+(or (not x6596) x6337)
+(or (not x6596) x5807)
+(or (not x6596) x5785)
+(or (not x6596) x5817)
+(or (not x6596) x6237)
+(or (not x6596) x6258)
+(or x6586 (not x6596))
+(or x6586 x6337)
+(or x6596 (not x6337) (not x6586))
+(or x6351 (not x6349) x6597)
+(or (not x6597) (not x6351))
+(or (not x6597) x6349)
+(or x6343 (not x6327))
+(or x6343 (not x6597))
+(or x6327 x6597 (not x6343))
+(or (not x6343) (not x6344) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6598)
+(or (not x6598) x6343)
+(or (not x6598) x6344)
+(or (not x6598) x5807)
+(or (not x6598) x5785)
+(or (not x6598) x5817)
+(or (not x6598) x6237)
+(or (not x6598) x6258)
+(or x6589 (not x6598))
+(or x6589 x6344)
+(or x6598 (not x6344) (not x6589))
+(or (not x6349) (not x6351) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6599)
+(or (not x6599) x6349)
+(or (not x6599) x6351)
+(or (not x6599) x5807)
+(or (not x6599) x5785)
+(or (not x6599) x5817)
+(or (not x6599) x6237)
+(or (not x6599) x6258)
+(or x6600 (not x6599))
+(or x6600 x6351)
+(or x6599 (not x6351) (not x6600))
+(or (not x6600) (not x6589) (not x6586) (not x6587) x6601)
+(or (not x6601) x6600)
+(or (not x6601) x6589)
+(or (not x6601) x6586)
+(or (not x6601) x6587)
+(or x6523 x6349)
+(or x6523 (not x6601))
+(or (not x6349) x6601 (not x6523))
+(or (not x6523) (not x6524) (not x6525) (not x6526) (not x6584) x6602)
+(or (not x6602) x6523)
+(or (not x6602) x6524)
+(or (not x6602) x6525)
+(or (not x6602) x6526)
+(or (not x6602) x6584)
+(or x6254 (not x6602))
+(or x6254 (not x6583))
+(or x6254 (not x6564))
+(or x6254 (not x6545))
+(or x6602 x6583 x6564 x6545 (not x6254))
+(or (not x5816) x6236 x6435)
+(or (not x6435) x5816)
+(or (not x6435) (not x6236))
+(or x6246 x5807)
+(or x6246 (not x6076))
+(or x6246 (not x6077))
+(or x6246 (not x6434))
+(or x6246 (not x6435))
+(or (not x5807) x6076 x6077 x6434 x6435 (not x6246))
+(or (not x6244) (not x6246) (not x6245) (not x5807) (not x6254) x6603)
+(or (not x6603) x6244)
+(or (not x6603) x6246)
+(or (not x6603) x6245)
+(or (not x6603) x5807)
+(or (not x6603) x6254)
+(or x6245 (not x6349))
+(or x6245 (not x6327))
+(or x6245 (not x6319))
+(or x6245 (not x6311))
+(or x6245 (not x6303))
+(or x6245 (not x6295))
+(or x6245 (not x6287))
+(or x6245 (not x6279))
+(or x6245 (not x6297))
+(or x6245 (not x6271))
+(or x6245 (not x6262))
+(or x6245 (not x6250))
+(or x6245 (not x6273))
+(or x6245 (not x6264))
+(or x6245 (not x6253))
+(or x6245 (not x6244))
+(or x6349 x6327 x6319 x6311 x6303 x6295 x6287 x6279 x6297 x6271 x6262 x6250 x6273 x6264 x6253 x6244 (not x6245))
+(or x6257 (not x6253) x6604)
+(or (not x6604) (not x6257))
+(or (not x6604) x6253)
+(or x6267 x6257 (not x6264) x6605)
+(or (not x6605) (not x6267))
+(or (not x6605) (not x6257))
+(or (not x6605) x6264)
+(or x6275 x6267 x6257 (not x6273) x6606)
+(or (not x6606) (not x6275))
+(or (not x6606) (not x6267))
+(or (not x6606) (not x6257))
+(or (not x6606) x6273)
+(or x6536 (not x6244))
+(or x6536 (not x6606))
+(or x6536 (not x6605))
+(or x6536 (not x6604))
+(or x6244 x6606 x6605 x6604 (not x6536))
+(or (not x6536) (not x6424) (not x6245) (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6607)
+(or (not x6607) x6536)
+(or (not x6607) x6424)
+(or (not x6607) x6245)
+(or (not x6607) x5807)
+(or (not x6607) x5785)
+(or (not x6607) x5817)
+(or (not x6607) x6237)
+(or (not x6607) x6258)
+(or x6608 (not x6607))
+(or x6608 (not x6603))
+(or x6608 (not x6528))
+(or x6608 (not x6507))
+(or x6608 (not x6422))
+(or x6607 x6603 x6528 x6507 x6422 (not x6608))
+(or (not x6609) (not x6236) x6610)
+(or (not x6610) x6609)
+(or (not x6610) x6236)
+(or x5815 x6236)
+(or x5815 (not x6434))
+(or (not x6236) x6434 (not x5815))
+(or (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x6064)
+(or (not x6064) x5815)
+(or (not x6064) x5816)
+(or (not x6064) x5807)
+(or (not x6064) x5785)
+(or (not x6064) x5817)
+(or (not x5807) (not x5785) (not x5817) (not x5815) (not x5816) (not x5807) (not x5785) (not x5817) x6611)
+(or (not x6611) x5807)
+(or (not x6611) x5785)
+(or (not x6611) x5817)
+(or (not x6611) x5815)
+(or (not x6611) x5816)
+(or (not x6611) x5807)
+(or (not x6611) x5785)
+(or (not x6611) x5817)
+(or x6612 (not x6611))
+(or x6612 (not x6610))
+(or x6611 x6610 (not x6612))
+(or x6613 (not x6614))
+(or x6613 (not x6615))
+(or x6613 (not x6616))
+(or x6613 (not x5911))
+(or x6614 x6615 x6616 x5911 (not x6613))
+(or x6617 (not x6614))
+(or x6617 (not x6615))
+(or x6617 (not x6616))
+(or x6617 (not x5910))
+(or x6614 x6615 x6616 x5910 (not x6617))
+(or (not x6618) (not x6619) (not x6620) (not x6617) x6621)
+(or (not x6621) x6618)
+(or (not x6621) x6619)
+(or (not x6621) x6620)
+(or (not x6621) x6617)
+(or x6622 (not x6614))
+(or x6622 (not x6615))
+(or x6622 (not x6616))
+(or x6622 (not x5909))
+(or x6614 x6615 x6616 x5909 (not x6622))
+(or (not x6618) (not x6619) (not x6620) (not x6622) x6623)
+(or (not x6623) x6618)
+(or (not x6623) x6619)
+(or (not x6623) x6620)
+(or (not x6623) x6622)
+(or x6624 (not x6614))
+(or x6624 (not x6615))
+(or x6624 (not x6616))
+(or x6624 (not x5908))
+(or x6614 x6615 x6616 x5908 (not x6624))
+(or (not x6618) (not x6620) (not x6624) x6625)
+(or (not x6625) x6618)
+(or (not x6625) x6620)
+(or (not x6625) x6624)
+(or (not x5911) x5910 x5909 (not x5908) x5907 (not x6626) x6627 x6628 (not x6629) (not x6630) x6616)
+(or (not x6616) x5911)
+(or (not x6616) (not x5910))
+(or (not x6616) (not x5909))
+(or (not x6616) x5908)
+(or (not x6616) (not x5907))
+(or (not x6616) x6626)
+(or (not x6616) (not x6627))
+(or (not x6616) (not x6628))
+(or (not x6616) x6629)
+(or (not x6616) x6630)
+(or x6631 (not x6614))
+(or x6631 (not x6615))
+(or x6631 (not x6616))
+(or x6631 (not x5907))
+(or x6614 x6615 x6616 x5907 (not x6631))
+(or x6620 (not x6614))
+(or x6620 (not x6615))
+(or x6620 x5911)
+(or x6620 (not x5910))
+(or x6620 (not x5909))
+(or x6620 x5908)
+(or x6620 (not x5907))
+(or x6620 x6626)
+(or x6620 (not x6627))
+(or x6620 (not x6628))
+(or x6620 x6629)
+(or x6620 x6630)
+(or x6614 x6615 (not x5911) x5910 x5909 (not x5908) x5907 (not x6626) x6627 x6628 (not x6629) (not x6630) (not x6620))
+(or x6619 (not x6614))
+(or x6619 x5911)
+(or x6619 (not x5910))
+(or x6619 (not x5909))
+(or x6619 (not x5908))
+(or x6619 x5907)
+(or x6614 (not x5911) x5910 x5909 x5908 (not x5907) (not x6619))
+(or x6618 x5911)
+(or x6618 (not x5910))
+(or x6618 (not x5909))
+(or x6618 (not x5908))
+(or x6618 (not x5907))
+(or (not x5911) x5910 x5909 x5908 x5907 (not x6618))
+(or x6632 x5911)
+(or x6632 (not x5910))
+(or x6632 (not x5909))
+(or x6632 (not x5908))
+(or x6632 (not x5907))
+(or x6632 x6633)
+(or (not x5911) x5910 x5909 x5908 x5907 (not x6633) (not x6632))
+(or (not x6632) (not x6619) (not x6620) (not x6631) x6634)
+(or (not x6634) x6632)
+(or (not x6634) x6619)
+(or (not x6634) x6620)
+(or (not x6634) x6631)
+(or x6635 (not x6636))
+(or x6635 (not x6637))
+(or x6635 (not x6638))
+(or x6635 (not x5918))
+(or x6636 x6637 x6638 x5918 (not x6635))
+(or x6639 (not x6636))
+(or x6639 (not x6637))
+(or x6639 (not x6638))
+(or x6639 (not x5917))
+(or x6636 x6637 x6638 x5917 (not x6639))
+(or (not x6640) (not x6641) (not x6642) (not x6639) x6643)
+(or (not x6643) x6640)
+(or (not x6643) x6641)
+(or (not x6643) x6642)
+(or (not x6643) x6639)
+(or x6644 (not x6636))
+(or x6644 (not x6637))
+(or x6644 (not x6638))
+(or x6644 (not x5916))
+(or x6636 x6637 x6638 x5916 (not x6644))
+(or (not x6640) (not x6641) (not x6642) (not x6644) x6645)
+(or (not x6645) x6640)
+(or (not x6645) x6641)
+(or (not x6645) x6642)
+(or (not x6645) x6644)
+(or x6646 (not x6636))
+(or x6646 (not x6637))
+(or x6646 (not x6638))
+(or x6646 (not x5915))
+(or x6636 x6637 x6638 x5915 (not x6646))
+(or (not x6640) (not x6642) (not x6646) x6647)
+(or (not x6647) x6640)
+(or (not x6647) x6642)
+(or (not x6647) x6646)
+(or (not x5918) x5917 x5916 (not x5915) x5914 (not x6648) x6627 x6628 (not x6629) (not x6630) x6638)
+(or (not x6638) x5918)
+(or (not x6638) (not x5917))
+(or (not x6638) (not x5916))
+(or (not x6638) x5915)
+(or (not x6638) (not x5914))
+(or (not x6638) x6648)
+(or (not x6638) (not x6627))
+(or (not x6638) (not x6628))
+(or (not x6638) x6629)
+(or (not x6638) x6630)
+(or x6649 (not x6636))
+(or x6649 (not x6637))
+(or x6649 (not x6638))
+(or x6649 (not x5914))
+(or x6636 x6637 x6638 x5914 (not x6649))
+(or x6642 (not x6636))
+(or x6642 (not x6637))
+(or x6642 x5918)
+(or x6642 (not x5917))
+(or x6642 (not x5916))
+(or x6642 x5915)
+(or x6642 (not x5914))
+(or x6642 x6648)
+(or x6642 (not x6627))
+(or x6642 (not x6628))
+(or x6642 x6629)
+(or x6642 x6630)
+(or x6636 x6637 (not x5918) x5917 x5916 (not x5915) x5914 (not x6648) x6627 x6628 (not x6629) (not x6630) (not x6642))
+(or x6641 (not x6636))
+(or x6641 x5918)
+(or x6641 (not x5917))
+(or x6641 (not x5916))
+(or x6641 (not x5915))
+(or x6641 x5914)
+(or x6636 (not x5918) x5917 x5916 x5915 (not x5914) (not x6641))
+(or x6640 x5918)
+(or x6640 (not x5917))
+(or x6640 (not x5916))
+(or x6640 (not x5915))
+(or x6640 (not x5914))
+(or (not x5918) x5917 x5916 x5915 x5914 (not x6640))
+(or x6650 x5918)
+(or x6650 (not x5917))
+(or x6650 (not x5916))
+(or x6650 (not x5915))
+(or x6650 (not x5914))
+(or x6650 x6651)
+(or (not x5918) x5917 x5916 x5915 x5914 (not x6651) (not x6650))
+(or (not x6650) (not x6641) (not x6642) (not x6649) x6652)
+(or (not x6652) x6650)
+(or (not x6652) x6641)
+(or (not x6652) x6642)
+(or (not x6652) x6649)
+(or x6653 (not x6654))
+(or x6653 (not x6655))
+(or x6653 (not x6656))
+(or x6653 (not x5925))
+(or x6654 x6655 x6656 x5925 (not x6653))
+(or x6657 (not x6654))
+(or x6657 (not x6655))
+(or x6657 (not x6656))
+(or x6657 (not x5924))
+(or x6654 x6655 x6656 x5924 (not x6657))
+(or (not x6658) (not x6659) (not x6660) (not x6657) x6661)
+(or (not x6661) x6658)
+(or (not x6661) x6659)
+(or (not x6661) x6660)
+(or (not x6661) x6657)
+(or x6662 (not x6654))
+(or x6662 (not x6655))
+(or x6662 (not x6656))
+(or x6662 (not x5923))
+(or x6654 x6655 x6656 x5923 (not x6662))
+(or (not x6658) (not x6659) (not x6660) (not x6662) x6663)
+(or (not x6663) x6658)
+(or (not x6663) x6659)
+(or (not x6663) x6660)
+(or (not x6663) x6662)
+(or x6664 (not x6654))
+(or x6664 (not x6655))
+(or x6664 (not x6656))
+(or x6664 (not x5922))
+(or x6654 x6655 x6656 x5922 (not x6664))
+(or (not x6658) (not x6660) (not x6664) x6665)
+(or (not x6665) x6658)
+(or (not x6665) x6660)
+(or (not x6665) x6664)
+(or (not x5925) x5924 x5923 (not x5922) x5921 (not x6666) x6627 x6628 (not x6629) (not x6630) x6656)
+(or (not x6656) x5925)
+(or (not x6656) (not x5924))
+(or (not x6656) (not x5923))
+(or (not x6656) x5922)
+(or (not x6656) (not x5921))
+(or (not x6656) x6666)
+(or (not x6656) (not x6627))
+(or (not x6656) (not x6628))
+(or (not x6656) x6629)
+(or (not x6656) x6630)
+(or x6667 (not x6654))
+(or x6667 (not x6655))
+(or x6667 (not x6656))
+(or x6667 (not x5921))
+(or x6654 x6655 x6656 x5921 (not x6667))
+(or x6660 (not x6654))
+(or x6660 (not x6655))
+(or x6660 x5925)
+(or x6660 (not x5924))
+(or x6660 (not x5923))
+(or x6660 x5922)
+(or x6660 (not x5921))
+(or x6660 x6666)
+(or x6660 (not x6627))
+(or x6660 (not x6628))
+(or x6660 x6629)
+(or x6660 x6630)
+(or x6654 x6655 (not x5925) x5924 x5923 (not x5922) x5921 (not x6666) x6627 x6628 (not x6629) (not x6630) (not x6660))
+(or x6659 (not x6654))
+(or x6659 x5925)
+(or x6659 (not x5924))
+(or x6659 (not x5923))
+(or x6659 (not x5922))
+(or x6659 x5921)
+(or x6654 (not x5925) x5924 x5923 x5922 (not x5921) (not x6659))
+(or x6658 x5925)
+(or x6658 (not x5924))
+(or x6658 (not x5923))
+(or x6658 (not x5922))
+(or x6658 (not x5921))
+(or (not x5925) x5924 x5923 x5922 x5921 (not x6658))
+(or x6668 x5925)
+(or x6668 (not x5924))
+(or x6668 (not x5923))
+(or x6668 (not x5922))
+(or x6668 (not x5921))
+(or x6668 x6669)
+(or (not x5925) x5924 x5923 x5922 x5921 (not x6669) (not x6668))
+(or (not x6668) (not x6659) (not x6660) (not x6667) x6670)
+(or (not x6670) x6668)
+(or (not x6670) x6659)
+(or (not x6670) x6660)
+(or (not x6670) x6667)
+(or x6671 (not x6672))
+(or x6671 (not x6673))
+(or x6671 (not x6674))
+(or x6671 (not x5932))
+(or x6672 x6673 x6674 x5932 (not x6671))
+(or x6675 (not x6672))
+(or x6675 (not x6673))
+(or x6675 (not x6674))
+(or x6675 (not x5931))
+(or x6672 x6673 x6674 x5931 (not x6675))
+(or (not x6676) (not x6677) (not x6678) (not x6675) x6679)
+(or (not x6679) x6676)
+(or (not x6679) x6677)
+(or (not x6679) x6678)
+(or (not x6679) x6675)
+(or x6680 (not x6672))
+(or x6680 (not x6673))
+(or x6680 (not x6674))
+(or x6680 (not x5930))
+(or x6672 x6673 x6674 x5930 (not x6680))
+(or (not x6676) (not x6677) (not x6678) (not x6680) x6681)
+(or (not x6681) x6676)
+(or (not x6681) x6677)
+(or (not x6681) x6678)
+(or (not x6681) x6680)
+(or x6682 (not x6672))
+(or x6682 (not x6673))
+(or x6682 (not x6674))
+(or x6682 (not x5929))
+(or x6672 x6673 x6674 x5929 (not x6682))
+(or (not x6676) (not x6678) (not x6682) x6683)
+(or (not x6683) x6676)
+(or (not x6683) x6678)
+(or (not x6683) x6682)
+(or (not x5932) x5931 x5930 (not x5929) x5928 (not x6684) x6627 x6628 (not x6629) (not x6630) x6674)
+(or (not x6674) x5932)
+(or (not x6674) (not x5931))
+(or (not x6674) (not x5930))
+(or (not x6674) x5929)
+(or (not x6674) (not x5928))
+(or (not x6674) x6684)
+(or (not x6674) (not x6627))
+(or (not x6674) (not x6628))
+(or (not x6674) x6629)
+(or (not x6674) x6630)
+(or x6685 (not x6672))
+(or x6685 (not x6673))
+(or x6685 (not x6674))
+(or x6685 (not x5928))
+(or x6672 x6673 x6674 x5928 (not x6685))
+(or x6678 (not x6672))
+(or x6678 (not x6673))
+(or x6678 x5932)
+(or x6678 (not x5931))
+(or x6678 (not x5930))
+(or x6678 x5929)
+(or x6678 (not x5928))
+(or x6678 x6684)
+(or x6678 (not x6627))
+(or x6678 (not x6628))
+(or x6678 x6629)
+(or x6678 x6630)
+(or x6672 x6673 (not x5932) x5931 x5930 (not x5929) x5928 (not x6684) x6627 x6628 (not x6629) (not x6630) (not x6678))
+(or x6677 (not x6672))
+(or x6677 x5932)
+(or x6677 (not x5931))
+(or x6677 (not x5930))
+(or x6677 (not x5929))
+(or x6677 x5928)
+(or x6672 (not x5932) x5931 x5930 x5929 (not x5928) (not x6677))
+(or x6676 x5932)
+(or x6676 (not x5931))
+(or x6676 (not x5930))
+(or x6676 (not x5929))
+(or x6676 (not x5928))
+(or (not x5932) x5931 x5930 x5929 x5928 (not x6676))
+(or x6686 x5932)
+(or x6686 (not x5931))
+(or x6686 (not x5930))
+(or x6686 (not x5929))
+(or x6686 (not x5928))
+(or x6686 x6687)
+(or (not x5932) x5931 x5930 x5929 x5928 (not x6687) (not x6686))
+(or (not x6686) (not x6677) (not x6678) (not x6685) x6688)
+(or (not x6688) x6686)
+(or (not x6688) x6677)
+(or (not x6688) x6678)
+(or (not x6688) x6685)
+(or x6689 (not x6690))
+(or x6689 (not x6691))
+(or x6689 (not x6692))
+(or x6689 (not x5946))
+(or x6690 x6691 x6692 x5946 (not x6689))
+(or x6693 (not x6690))
+(or x6693 (not x6691))
+(or x6693 (not x6692))
+(or x6693 (not x5945))
+(or x6690 x6691 x6692 x5945 (not x6693))
+(or (not x6694) (not x6695) (not x6696) (not x6693) x6697)
+(or (not x6697) x6694)
+(or (not x6697) x6695)
+(or (not x6697) x6696)
+(or (not x6697) x6693)
+(or x6698 (not x6690))
+(or x6698 (not x6691))
+(or x6698 (not x6692))
+(or x6698 (not x5944))
+(or x6690 x6691 x6692 x5944 (not x6698))
+(or (not x6694) (not x6695) (not x6696) (not x6698) x6699)
+(or (not x6699) x6694)
+(or (not x6699) x6695)
+(or (not x6699) x6696)
+(or (not x6699) x6698)
+(or x6700 (not x6690))
+(or x6700 (not x6691))
+(or x6700 (not x6692))
+(or x6700 (not x5943))
+(or x6690 x6691 x6692 x5943 (not x6700))
+(or (not x6694) (not x6696) (not x6700) x6701)
+(or (not x6701) x6694)
+(or (not x6701) x6696)
+(or (not x6701) x6700)
+(or (not x5946) x5945 x5944 (not x5943) x5942 (not x6626) x6627 x6628 x6629 (not x6630) x6692)
+(or (not x6692) x5946)
+(or (not x6692) (not x5945))
+(or (not x6692) (not x5944))
+(or (not x6692) x5943)
+(or (not x6692) (not x5942))
+(or (not x6692) x6626)
+(or (not x6692) (not x6627))
+(or (not x6692) (not x6628))
+(or (not x6692) (not x6629))
+(or (not x6692) x6630)
+(or x6702 (not x6690))
+(or x6702 (not x6691))
+(or x6702 (not x6692))
+(or x6702 (not x5942))
+(or x6690 x6691 x6692 x5942 (not x6702))
+(or x6696 (not x6690))
+(or x6696 (not x6691))
+(or x6696 x5946)
+(or x6696 (not x5945))
+(or x6696 (not x5944))
+(or x6696 x5943)
+(or x6696 (not x5942))
+(or x6696 x6626)
+(or x6696 (not x6627))
+(or x6696 (not x6628))
+(or x6696 (not x6629))
+(or x6696 x6630)
+(or x6690 x6691 (not x5946) x5945 x5944 (not x5943) x5942 (not x6626) x6627 x6628 x6629 (not x6630) (not x6696))
+(or x6695 (not x6690))
+(or x6695 x5946)
+(or x6695 (not x5945))
+(or x6695 (not x5944))
+(or x6695 (not x5943))
+(or x6695 x5942)
+(or x6690 (not x5946) x5945 x5944 x5943 (not x5942) (not x6695))
+(or x6694 x5946)
+(or x6694 (not x5945))
+(or x6694 (not x5944))
+(or x6694 (not x5943))
+(or x6694 (not x5942))
+(or (not x5946) x5945 x5944 x5943 x5942 (not x6694))
+(or x6703 x5946)
+(or x6703 (not x5945))
+(or x6703 (not x5944))
+(or x6703 (not x5943))
+(or x6703 (not x5942))
+(or x6703 x6704)
+(or (not x5946) x5945 x5944 x5943 x5942 (not x6704) (not x6703))
+(or (not x6703) (not x6695) (not x6696) (not x6702) x6705)
+(or (not x6705) x6703)
+(or (not x6705) x6695)
+(or (not x6705) x6696)
+(or (not x6705) x6702)
+(or x6706 (not x6707))
+(or x6706 (not x6708))
+(or x6706 (not x6709))
+(or x6706 (not x5953))
+(or x6707 x6708 x6709 x5953 (not x6706))
+(or x6710 (not x6707))
+(or x6710 (not x6708))
+(or x6710 (not x6709))
+(or x6710 (not x5952))
+(or x6707 x6708 x6709 x5952 (not x6710))
+(or (not x6711) (not x6712) (not x6713) (not x6710) x6714)
+(or (not x6714) x6711)
+(or (not x6714) x6712)
+(or (not x6714) x6713)
+(or (not x6714) x6710)
+(or x6715 (not x6707))
+(or x6715 (not x6708))
+(or x6715 (not x6709))
+(or x6715 (not x5951))
+(or x6707 x6708 x6709 x5951 (not x6715))
+(or (not x6711) (not x6712) (not x6713) (not x6715) x6716)
+(or (not x6716) x6711)
+(or (not x6716) x6712)
+(or (not x6716) x6713)
+(or (not x6716) x6715)
+(or x6717 (not x6707))
+(or x6717 (not x6708))
+(or x6717 (not x6709))
+(or x6717 (not x5950))
+(or x6707 x6708 x6709 x5950 (not x6717))
+(or (not x6711) (not x6713) (not x6717) x6718)
+(or (not x6718) x6711)
+(or (not x6718) x6713)
+(or (not x6718) x6717)
+(or (not x5953) x5952 x5951 (not x5950) x5949 (not x6648) x6627 x6628 x6629 (not x6630) x6709)
+(or (not x6709) x5953)
+(or (not x6709) (not x5952))
+(or (not x6709) (not x5951))
+(or (not x6709) x5950)
+(or (not x6709) (not x5949))
+(or (not x6709) x6648)
+(or (not x6709) (not x6627))
+(or (not x6709) (not x6628))
+(or (not x6709) (not x6629))
+(or (not x6709) x6630)
+(or x6719 (not x6707))
+(or x6719 (not x6708))
+(or x6719 (not x6709))
+(or x6719 (not x5949))
+(or x6707 x6708 x6709 x5949 (not x6719))
+(or x6713 (not x6707))
+(or x6713 (not x6708))
+(or x6713 x5953)
+(or x6713 (not x5952))
+(or x6713 (not x5951))
+(or x6713 x5950)
+(or x6713 (not x5949))
+(or x6713 x6648)
+(or x6713 (not x6627))
+(or x6713 (not x6628))
+(or x6713 (not x6629))
+(or x6713 x6630)
+(or x6707 x6708 (not x5953) x5952 x5951 (not x5950) x5949 (not x6648) x6627 x6628 x6629 (not x6630) (not x6713))
+(or x6712 (not x6707))
+(or x6712 x5953)
+(or x6712 (not x5952))
+(or x6712 (not x5951))
+(or x6712 (not x5950))
+(or x6712 x5949)
+(or x6707 (not x5953) x5952 x5951 x5950 (not x5949) (not x6712))
+(or x6711 x5953)
+(or x6711 (not x5952))
+(or x6711 (not x5951))
+(or x6711 (not x5950))
+(or x6711 (not x5949))
+(or (not x5953) x5952 x5951 x5950 x5949 (not x6711))
+(or x6720 x5953)
+(or x6720 (not x5952))
+(or x6720 (not x5951))
+(or x6720 (not x5950))
+(or x6720 (not x5949))
+(or x6720 x6721)
+(or (not x5953) x5952 x5951 x5950 x5949 (not x6721) (not x6720))
+(or (not x6720) (not x6712) (not x6713) (not x6719) x6722)
+(or (not x6722) x6720)
+(or (not x6722) x6712)
+(or (not x6722) x6713)
+(or (not x6722) x6719)
+(or x6723 (not x6724))
+(or x6723 (not x6725))
+(or x6723 (not x6726))
+(or x6723 (not x5960))
+(or x6724 x6725 x6726 x5960 (not x6723))
+(or x6727 (not x6724))
+(or x6727 (not x6725))
+(or x6727 (not x6726))
+(or x6727 (not x5959))
+(or x6724 x6725 x6726 x5959 (not x6727))
+(or (not x6728) (not x6729) (not x6730) (not x6727) x6731)
+(or (not x6731) x6728)
+(or (not x6731) x6729)
+(or (not x6731) x6730)
+(or (not x6731) x6727)
+(or x6732 (not x6724))
+(or x6732 (not x6725))
+(or x6732 (not x6726))
+(or x6732 (not x5958))
+(or x6724 x6725 x6726 x5958 (not x6732))
+(or (not x6728) (not x6729) (not x6730) (not x6732) x6733)
+(or (not x6733) x6728)
+(or (not x6733) x6729)
+(or (not x6733) x6730)
+(or (not x6733) x6732)
+(or x6734 (not x6724))
+(or x6734 (not x6725))
+(or x6734 (not x6726))
+(or x6734 (not x5957))
+(or x6724 x6725 x6726 x5957 (not x6734))
+(or (not x6728) (not x6730) (not x6734) x6735)
+(or (not x6735) x6728)
+(or (not x6735) x6730)
+(or (not x6735) x6734)
+(or (not x5960) x5959 x5958 (not x5957) x5956 (not x6666) x6627 x6628 x6629 (not x6630) x6726)
+(or (not x6726) x5960)
+(or (not x6726) (not x5959))
+(or (not x6726) (not x5958))
+(or (not x6726) x5957)
+(or (not x6726) (not x5956))
+(or (not x6726) x6666)
+(or (not x6726) (not x6627))
+(or (not x6726) (not x6628))
+(or (not x6726) (not x6629))
+(or (not x6726) x6630)
+(or x6736 (not x6724))
+(or x6736 (not x6725))
+(or x6736 (not x6726))
+(or x6736 (not x5956))
+(or x6724 x6725 x6726 x5956 (not x6736))
+(or x6730 (not x6724))
+(or x6730 (not x6725))
+(or x6730 x5960)
+(or x6730 (not x5959))
+(or x6730 (not x5958))
+(or x6730 x5957)
+(or x6730 (not x5956))
+(or x6730 x6666)
+(or x6730 (not x6627))
+(or x6730 (not x6628))
+(or x6730 (not x6629))
+(or x6730 x6630)
+(or x6724 x6725 (not x5960) x5959 x5958 (not x5957) x5956 (not x6666) x6627 x6628 x6629 (not x6630) (not x6730))
+(or x6729 (not x6724))
+(or x6729 x5960)
+(or x6729 (not x5959))
+(or x6729 (not x5958))
+(or x6729 (not x5957))
+(or x6729 x5956)
+(or x6724 (not x5960) x5959 x5958 x5957 (not x5956) (not x6729))
+(or x6728 x5960)
+(or x6728 (not x5959))
+(or x6728 (not x5958))
+(or x6728 (not x5957))
+(or x6728 (not x5956))
+(or (not x5960) x5959 x5958 x5957 x5956 (not x6728))
+(or x6737 x5960)
+(or x6737 (not x5959))
+(or x6737 (not x5958))
+(or x6737 (not x5957))
+(or x6737 (not x5956))
+(or x6737 x6738)
+(or (not x5960) x5959 x5958 x5957 x5956 (not x6738) (not x6737))
+(or (not x6737) (not x6729) (not x6730) (not x6736) x6739)
+(or (not x6739) x6737)
+(or (not x6739) x6729)
+(or (not x6739) x6730)
+(or (not x6739) x6736)
+(or x6740 (not x6741))
+(or x6740 (not x6742))
+(or x6740 (not x6743))
+(or x6740 (not x5967))
+(or x6741 x6742 x6743 x5967 (not x6740))
+(or x6744 (not x6741))
+(or x6744 (not x6742))
+(or x6744 (not x6743))
+(or x6744 (not x5966))
+(or x6741 x6742 x6743 x5966 (not x6744))
+(or (not x6745) (not x6746) (not x6747) (not x6744) x6748)
+(or (not x6748) x6745)
+(or (not x6748) x6746)
+(or (not x6748) x6747)
+(or (not x6748) x6744)
+(or x6749 (not x6741))
+(or x6749 (not x6742))
+(or x6749 (not x6743))
+(or x6749 (not x5965))
+(or x6741 x6742 x6743 x5965 (not x6749))
+(or (not x6745) (not x6746) (not x6747) (not x6749) x6750)
+(or (not x6750) x6745)
+(or (not x6750) x6746)
+(or (not x6750) x6747)
+(or (not x6750) x6749)
+(or x6751 (not x6741))
+(or x6751 (not x6742))
+(or x6751 (not x6743))
+(or x6751 (not x5964))
+(or x6741 x6742 x6743 x5964 (not x6751))
+(or (not x6745) (not x6747) (not x6751) x6752)
+(or (not x6752) x6745)
+(or (not x6752) x6747)
+(or (not x6752) x6751)
+(or (not x5967) x5966 x5965 (not x5964) x5963 (not x6684) x6627 x6628 x6629 (not x6630) x6743)
+(or (not x6743) x5967)
+(or (not x6743) (not x5966))
+(or (not x6743) (not x5965))
+(or (not x6743) x5964)
+(or (not x6743) (not x5963))
+(or (not x6743) x6684)
+(or (not x6743) (not x6627))
+(or (not x6743) (not x6628))
+(or (not x6743) (not x6629))
+(or (not x6743) x6630)
+(or x6753 (not x6741))
+(or x6753 (not x6742))
+(or x6753 (not x6743))
+(or x6753 (not x5963))
+(or x6741 x6742 x6743 x5963 (not x6753))
+(or x6747 (not x6741))
+(or x6747 (not x6742))
+(or x6747 x5967)
+(or x6747 (not x5966))
+(or x6747 (not x5965))
+(or x6747 x5964)
+(or x6747 (not x5963))
+(or x6747 x6684)
+(or x6747 (not x6627))
+(or x6747 (not x6628))
+(or x6747 (not x6629))
+(or x6747 x6630)
+(or x6741 x6742 (not x5967) x5966 x5965 (not x5964) x5963 (not x6684) x6627 x6628 x6629 (not x6630) (not x6747))
+(or x6746 (not x6741))
+(or x6746 x5967)
+(or x6746 (not x5966))
+(or x6746 (not x5965))
+(or x6746 (not x5964))
+(or x6746 x5963)
+(or x6741 (not x5967) x5966 x5965 x5964 (not x5963) (not x6746))
+(or x6745 x5967)
+(or x6745 (not x5966))
+(or x6745 (not x5965))
+(or x6745 (not x5964))
+(or x6745 (not x5963))
+(or (not x5967) x5966 x5965 x5964 x5963 (not x6745))
+(or x6754 x5967)
+(or x6754 (not x5966))
+(or x6754 (not x5965))
+(or x6754 (not x5964))
+(or x6754 (not x5963))
+(or x6754 x6755)
+(or (not x5967) x5966 x5965 x5964 x5963 (not x6755) (not x6754))
+(or (not x6754) (not x6746) (not x6747) (not x6753) x6756)
+(or (not x6756) x6754)
+(or (not x6756) x6746)
+(or (not x6756) x6747)
+(or (not x6756) x6753)
+(or x6757 (not x6758))
+(or x6757 (not x6759))
+(or x6757 (not x6760))
+(or x6757 (not x5981))
+(or x6758 x6759 x6760 x5981 (not x6757))
+(or x6761 (not x6758))
+(or x6761 (not x6759))
+(or x6761 (not x6760))
+(or x6761 (not x5980))
+(or x6758 x6759 x6760 x5980 (not x6761))
+(or (not x6762) (not x6763) (not x6764) (not x6761) x6765)
+(or (not x6765) x6762)
+(or (not x6765) x6763)
+(or (not x6765) x6764)
+(or (not x6765) x6761)
+(or x6766 (not x6758))
+(or x6766 (not x6759))
+(or x6766 (not x6760))
+(or x6766 (not x5979))
+(or x6758 x6759 x6760 x5979 (not x6766))
+(or (not x6762) (not x6763) (not x6764) (not x6766) x6767)
+(or (not x6767) x6762)
+(or (not x6767) x6763)
+(or (not x6767) x6764)
+(or (not x6767) x6766)
+(or x6768 (not x6758))
+(or x6768 (not x6759))
+(or x6768 (not x6760))
+(or x6768 (not x5978))
+(or x6758 x6759 x6760 x5978 (not x6768))
+(or (not x6762) (not x6764) (not x6768) x6769)
+(or (not x6769) x6762)
+(or (not x6769) x6764)
+(or (not x6769) x6768)
+(or (not x5981) x5980 x5979 (not x5978) x5977 (not x6626) x6627 x6628 (not x6629) x6630 x6760)
+(or (not x6760) x5981)
+(or (not x6760) (not x5980))
+(or (not x6760) (not x5979))
+(or (not x6760) x5978)
+(or (not x6760) (not x5977))
+(or (not x6760) x6626)
+(or (not x6760) (not x6627))
+(or (not x6760) (not x6628))
+(or (not x6760) x6629)
+(or (not x6760) (not x6630))
+(or x6770 (not x6758))
+(or x6770 (not x6759))
+(or x6770 (not x6760))
+(or x6770 (not x5977))
+(or x6758 x6759 x6760 x5977 (not x6770))
+(or x6764 (not x6758))
+(or x6764 (not x6759))
+(or x6764 x5981)
+(or x6764 (not x5980))
+(or x6764 (not x5979))
+(or x6764 x5978)
+(or x6764 (not x5977))
+(or x6764 x6626)
+(or x6764 (not x6627))
+(or x6764 (not x6628))
+(or x6764 x6629)
+(or x6764 (not x6630))
+(or x6758 x6759 (not x5981) x5980 x5979 (not x5978) x5977 (not x6626) x6627 x6628 (not x6629) x6630 (not x6764))
+(or x6763 (not x6758))
+(or x6763 x5981)
+(or x6763 (not x5980))
+(or x6763 (not x5979))
+(or x6763 (not x5978))
+(or x6763 x5977)
+(or x6758 (not x5981) x5980 x5979 x5978 (not x5977) (not x6763))
+(or x6762 x5981)
+(or x6762 (not x5980))
+(or x6762 (not x5979))
+(or x6762 (not x5978))
+(or x6762 (not x5977))
+(or (not x5981) x5980 x5979 x5978 x5977 (not x6762))
+(or x6771 x5981)
+(or x6771 (not x5980))
+(or x6771 (not x5979))
+(or x6771 (not x5978))
+(or x6771 (not x5977))
+(or x6771 x6772)
+(or (not x5981) x5980 x5979 x5978 x5977 (not x6772) (not x6771))
+(or (not x6771) (not x6763) (not x6764) (not x6770) x6773)
+(or (not x6773) x6771)
+(or (not x6773) x6763)
+(or (not x6773) x6764)
+(or (not x6773) x6770)
+(or x6774 (not x6775))
+(or x6774 (not x6776))
+(or x6774 (not x6777))
+(or x6774 (not x5988))
+(or x6775 x6776 x6777 x5988 (not x6774))
+(or x6778 (not x6775))
+(or x6778 (not x6776))
+(or x6778 (not x6777))
+(or x6778 (not x5987))
+(or x6775 x6776 x6777 x5987 (not x6778))
+(or (not x6779) (not x6780) (not x6781) (not x6778) x6782)
+(or (not x6782) x6779)
+(or (not x6782) x6780)
+(or (not x6782) x6781)
+(or (not x6782) x6778)
+(or x6783 (not x6775))
+(or x6783 (not x6776))
+(or x6783 (not x6777))
+(or x6783 (not x5986))
+(or x6775 x6776 x6777 x5986 (not x6783))
+(or (not x6779) (not x6780) (not x6781) (not x6783) x6784)
+(or (not x6784) x6779)
+(or (not x6784) x6780)
+(or (not x6784) x6781)
+(or (not x6784) x6783)
+(or x6785 (not x6775))
+(or x6785 (not x6776))
+(or x6785 (not x6777))
+(or x6785 (not x5985))
+(or x6775 x6776 x6777 x5985 (not x6785))
+(or (not x6779) (not x6781) (not x6785) x6786)
+(or (not x6786) x6779)
+(or (not x6786) x6781)
+(or (not x6786) x6785)
+(or (not x5988) x5987 x5986 (not x5985) x5984 (not x6648) x6627 x6628 (not x6629) x6630 x6777)
+(or (not x6777) x5988)
+(or (not x6777) (not x5987))
+(or (not x6777) (not x5986))
+(or (not x6777) x5985)
+(or (not x6777) (not x5984))
+(or (not x6777) x6648)
+(or (not x6777) (not x6627))
+(or (not x6777) (not x6628))
+(or (not x6777) x6629)
+(or (not x6777) (not x6630))
+(or x6787 (not x6775))
+(or x6787 (not x6776))
+(or x6787 (not x6777))
+(or x6787 (not x5984))
+(or x6775 x6776 x6777 x5984 (not x6787))
+(or x6781 (not x6775))
+(or x6781 (not x6776))
+(or x6781 x5988)
+(or x6781 (not x5987))
+(or x6781 (not x5986))
+(or x6781 x5985)
+(or x6781 (not x5984))
+(or x6781 x6648)
+(or x6781 (not x6627))
+(or x6781 (not x6628))
+(or x6781 x6629)
+(or x6781 (not x6630))
+(or x6775 x6776 (not x5988) x5987 x5986 (not x5985) x5984 (not x6648) x6627 x6628 (not x6629) x6630 (not x6781))
+(or x6780 (not x6775))
+(or x6780 x5988)
+(or x6780 (not x5987))
+(or x6780 (not x5986))
+(or x6780 (not x5985))
+(or x6780 x5984)
+(or x6775 (not x5988) x5987 x5986 x5985 (not x5984) (not x6780))
+(or x6779 x5988)
+(or x6779 (not x5987))
+(or x6779 (not x5986))
+(or x6779 (not x5985))
+(or x6779 (not x5984))
+(or (not x5988) x5987 x5986 x5985 x5984 (not x6779))
+(or x6788 x5988)
+(or x6788 (not x5987))
+(or x6788 (not x5986))
+(or x6788 (not x5985))
+(or x6788 (not x5984))
+(or x6788 x6789)
+(or (not x5988) x5987 x5986 x5985 x5984 (not x6789) (not x6788))
+(or (not x6788) (not x6780) (not x6781) (not x6787) x6790)
+(or (not x6790) x6788)
+(or (not x6790) x6780)
+(or (not x6790) x6781)
+(or (not x6790) x6787)
+(or x6791 (not x6792))
+(or x6791 (not x6793))
+(or x6791 (not x6794))
+(or x6791 (not x5995))
+(or x6792 x6793 x6794 x5995 (not x6791))
+(or x6795 (not x6792))
+(or x6795 (not x6793))
+(or x6795 (not x6794))
+(or x6795 (not x5994))
+(or x6792 x6793 x6794 x5994 (not x6795))
+(or (not x6796) (not x6797) (not x6798) (not x6795) x6799)
+(or (not x6799) x6796)
+(or (not x6799) x6797)
+(or (not x6799) x6798)
+(or (not x6799) x6795)
+(or x6800 (not x6792))
+(or x6800 (not x6793))
+(or x6800 (not x6794))
+(or x6800 (not x5993))
+(or x6792 x6793 x6794 x5993 (not x6800))
+(or (not x6796) (not x6797) (not x6798) (not x6800) x6801)
+(or (not x6801) x6796)
+(or (not x6801) x6797)
+(or (not x6801) x6798)
+(or (not x6801) x6800)
+(or x6802 (not x6792))
+(or x6802 (not x6793))
+(or x6802 (not x6794))
+(or x6802 (not x5992))
+(or x6792 x6793 x6794 x5992 (not x6802))
+(or (not x6796) (not x6798) (not x6802) x6803)
+(or (not x6803) x6796)
+(or (not x6803) x6798)
+(or (not x6803) x6802)
+(or (not x5995) x5994 x5993 (not x5992) x5991 (not x6666) x6627 x6628 (not x6629) x6630 x6794)
+(or (not x6794) x5995)
+(or (not x6794) (not x5994))
+(or (not x6794) (not x5993))
+(or (not x6794) x5992)
+(or (not x6794) (not x5991))
+(or (not x6794) x6666)
+(or (not x6794) (not x6627))
+(or (not x6794) (not x6628))
+(or (not x6794) x6629)
+(or (not x6794) (not x6630))
+(or x6804 (not x6792))
+(or x6804 (not x6793))
+(or x6804 (not x6794))
+(or x6804 (not x5991))
+(or x6792 x6793 x6794 x5991 (not x6804))
+(or x6798 (not x6792))
+(or x6798 (not x6793))
+(or x6798 x5995)
+(or x6798 (not x5994))
+(or x6798 (not x5993))
+(or x6798 x5992)
+(or x6798 (not x5991))
+(or x6798 x6666)
+(or x6798 (not x6627))
+(or x6798 (not x6628))
+(or x6798 x6629)
+(or x6798 (not x6630))
+(or x6792 x6793 (not x5995) x5994 x5993 (not x5992) x5991 (not x6666) x6627 x6628 (not x6629) x6630 (not x6798))
+(or x6797 (not x6792))
+(or x6797 x5995)
+(or x6797 (not x5994))
+(or x6797 (not x5993))
+(or x6797 (not x5992))
+(or x6797 x5991)
+(or x6792 (not x5995) x5994 x5993 x5992 (not x5991) (not x6797))
+(or x6796 x5995)
+(or x6796 (not x5994))
+(or x6796 (not x5993))
+(or x6796 (not x5992))
+(or x6796 (not x5991))
+(or (not x5995) x5994 x5993 x5992 x5991 (not x6796))
+(or x6805 x5995)
+(or x6805 (not x5994))
+(or x6805 (not x5993))
+(or x6805 (not x5992))
+(or x6805 (not x5991))
+(or x6805 x6806)
+(or (not x5995) x5994 x5993 x5992 x5991 (not x6806) (not x6805))
+(or (not x6805) (not x6797) (not x6798) (not x6804) x6807)
+(or (not x6807) x6805)
+(or (not x6807) x6797)
+(or (not x6807) x6798)
+(or (not x6807) x6804)
+(or x6808 (not x6809))
+(or x6808 (not x6810))
+(or x6808 (not x6811))
+(or x6808 (not x6002))
+(or x6809 x6810 x6811 x6002 (not x6808))
+(or x6812 (not x6809))
+(or x6812 (not x6810))
+(or x6812 (not x6811))
+(or x6812 (not x6001))
+(or x6809 x6810 x6811 x6001 (not x6812))
+(or (not x6813) (not x6814) (not x6815) (not x6812) x6816)
+(or (not x6816) x6813)
+(or (not x6816) x6814)
+(or (not x6816) x6815)
+(or (not x6816) x6812)
+(or x6817 (not x6809))
+(or x6817 (not x6810))
+(or x6817 (not x6811))
+(or x6817 (not x6000))
+(or x6809 x6810 x6811 x6000 (not x6817))
+(or (not x6813) (not x6814) (not x6815) (not x6817) x6818)
+(or (not x6818) x6813)
+(or (not x6818) x6814)
+(or (not x6818) x6815)
+(or (not x6818) x6817)
+(or x6819 (not x6809))
+(or x6819 (not x6810))
+(or x6819 (not x6811))
+(or x6819 (not x5999))
+(or x6809 x6810 x6811 x5999 (not x6819))
+(or (not x6813) (not x6815) (not x6819) x6820)
+(or (not x6820) x6813)
+(or (not x6820) x6815)
+(or (not x6820) x6819)
+(or (not x6002) x6001 x6000 (not x5999) x5998 (not x6684) x6627 x6628 (not x6629) x6630 x6811)
+(or (not x6811) x6002)
+(or (not x6811) (not x6001))
+(or (not x6811) (not x6000))
+(or (not x6811) x5999)
+(or (not x6811) (not x5998))
+(or (not x6811) x6684)
+(or (not x6811) (not x6627))
+(or (not x6811) (not x6628))
+(or (not x6811) x6629)
+(or (not x6811) (not x6630))
+(or x6821 (not x6809))
+(or x6821 (not x6810))
+(or x6821 (not x6811))
+(or x6821 (not x5998))
+(or x6809 x6810 x6811 x5998 (not x6821))
+(or x6815 (not x6809))
+(or x6815 (not x6810))
+(or x6815 x6002)
+(or x6815 (not x6001))
+(or x6815 (not x6000))
+(or x6815 x5999)
+(or x6815 (not x5998))
+(or x6815 x6684)
+(or x6815 (not x6627))
+(or x6815 (not x6628))
+(or x6815 x6629)
+(or x6815 (not x6630))
+(or x6809 x6810 (not x6002) x6001 x6000 (not x5999) x5998 (not x6684) x6627 x6628 (not x6629) x6630 (not x6815))
+(or x6814 (not x6809))
+(or x6814 x6002)
+(or x6814 (not x6001))
+(or x6814 (not x6000))
+(or x6814 (not x5999))
+(or x6814 x5998)
+(or x6809 (not x6002) x6001 x6000 x5999 (not x5998) (not x6814))
+(or x6813 x6002)
+(or x6813 (not x6001))
+(or x6813 (not x6000))
+(or x6813 (not x5999))
+(or x6813 (not x5998))
+(or (not x6002) x6001 x6000 x5999 x5998 (not x6813))
+(or x6822 x6002)
+(or x6822 (not x6001))
+(or x6822 (not x6000))
+(or x6822 (not x5999))
+(or x6822 (not x5998))
+(or x6822 x6823)
+(or (not x6002) x6001 x6000 x5999 x5998 (not x6823) (not x6822))
+(or (not x6822) (not x6814) (not x6815) (not x6821) x6824)
+(or (not x6824) x6822)
+(or (not x6824) x6814)
+(or (not x6824) x6815)
+(or (not x6824) x6821)
+(or x6825 (not x6826))
+(or x6825 (not x6827))
+(or x6825 (not x6828))
+(or x6825 (not x6016))
+(or x6826 x6827 x6828 x6016 (not x6825))
+(or x6829 (not x6826))
+(or x6829 (not x6827))
+(or x6829 (not x6828))
+(or x6829 (not x6015))
+(or x6826 x6827 x6828 x6015 (not x6829))
+(or (not x6830) (not x6831) (not x6832) (not x6829) x6833)
+(or (not x6833) x6830)
+(or (not x6833) x6831)
+(or (not x6833) x6832)
+(or (not x6833) x6829)
+(or x6834 (not x6826))
+(or x6834 (not x6827))
+(or x6834 (not x6828))
+(or x6834 (not x6014))
+(or x6826 x6827 x6828 x6014 (not x6834))
+(or (not x6830) (not x6831) (not x6832) (not x6834) x6835)
+(or (not x6835) x6830)
+(or (not x6835) x6831)
+(or (not x6835) x6832)
+(or (not x6835) x6834)
+(or x6836 (not x6826))
+(or x6836 (not x6827))
+(or x6836 (not x6828))
+(or x6836 (not x6013))
+(or x6826 x6827 x6828 x6013 (not x6836))
+(or (not x6830) (not x6832) (not x6836) x6837)
+(or (not x6837) x6830)
+(or (not x6837) x6832)
+(or (not x6837) x6836)
+(or (not x6016) x6015 x6014 (not x6013) x6012 (not x6626) x6627 x6628 x6629 x6630 x6828)
+(or (not x6828) x6016)
+(or (not x6828) (not x6015))
+(or (not x6828) (not x6014))
+(or (not x6828) x6013)
+(or (not x6828) (not x6012))
+(or (not x6828) x6626)
+(or (not x6828) (not x6627))
+(or (not x6828) (not x6628))
+(or (not x6828) (not x6629))
+(or (not x6828) (not x6630))
+(or x6838 (not x6826))
+(or x6838 (not x6827))
+(or x6838 (not x6828))
+(or x6838 (not x6012))
+(or x6826 x6827 x6828 x6012 (not x6838))
+(or x6832 (not x6826))
+(or x6832 (not x6827))
+(or x6832 x6016)
+(or x6832 (not x6015))
+(or x6832 (not x6014))
+(or x6832 x6013)
+(or x6832 (not x6012))
+(or x6832 x6626)
+(or x6832 (not x6627))
+(or x6832 (not x6628))
+(or x6832 (not x6629))
+(or x6832 (not x6630))
+(or x6826 x6827 (not x6016) x6015 x6014 (not x6013) x6012 (not x6626) x6627 x6628 x6629 x6630 (not x6832))
+(or x6831 (not x6826))
+(or x6831 x6016)
+(or x6831 (not x6015))
+(or x6831 (not x6014))
+(or x6831 (not x6013))
+(or x6831 x6012)
+(or x6826 (not x6016) x6015 x6014 x6013 (not x6012) (not x6831))
+(or x6830 x6016)
+(or x6830 (not x6015))
+(or x6830 (not x6014))
+(or x6830 (not x6013))
+(or x6830 (not x6012))
+(or (not x6016) x6015 x6014 x6013 x6012 (not x6830))
+(or x6839 x6016)
+(or x6839 (not x6015))
+(or x6839 (not x6014))
+(or x6839 (not x6013))
+(or x6839 (not x6012))
+(or x6839 x6840)
+(or (not x6016) x6015 x6014 x6013 x6012 (not x6840) (not x6839))
+(or (not x6839) (not x6831) (not x6832) (not x6838) x6841)
+(or (not x6841) x6839)
+(or (not x6841) x6831)
+(or (not x6841) x6832)
+(or (not x6841) x6838)
+(or x6842 (not x6843))
+(or x6842 (not x6844))
+(or x6842 (not x6845))
+(or x6842 (not x6023))
+(or x6843 x6844 x6845 x6023 (not x6842))
+(or x6846 (not x6843))
+(or x6846 (not x6844))
+(or x6846 (not x6845))
+(or x6846 (not x6022))
+(or x6843 x6844 x6845 x6022 (not x6846))
+(or (not x6847) (not x6848) (not x6849) (not x6846) x6850)
+(or (not x6850) x6847)
+(or (not x6850) x6848)
+(or (not x6850) x6849)
+(or (not x6850) x6846)
+(or x6851 (not x6843))
+(or x6851 (not x6844))
+(or x6851 (not x6845))
+(or x6851 (not x6021))
+(or x6843 x6844 x6845 x6021 (not x6851))
+(or (not x6847) (not x6848) (not x6849) (not x6851) x6852)
+(or (not x6852) x6847)
+(or (not x6852) x6848)
+(or (not x6852) x6849)
+(or (not x6852) x6851)
+(or x6853 (not x6843))
+(or x6853 (not x6844))
+(or x6853 (not x6845))
+(or x6853 (not x6020))
+(or x6843 x6844 x6845 x6020 (not x6853))
+(or (not x6847) (not x6849) (not x6853) x6854)
+(or (not x6854) x6847)
+(or (not x6854) x6849)
+(or (not x6854) x6853)
+(or (not x6023) x6022 x6021 (not x6020) x6019 (not x6648) x6627 x6628 x6629 x6630 x6845)
+(or (not x6845) x6023)
+(or (not x6845) (not x6022))
+(or (not x6845) (not x6021))
+(or (not x6845) x6020)
+(or (not x6845) (not x6019))
+(or (not x6845) x6648)
+(or (not x6845) (not x6627))
+(or (not x6845) (not x6628))
+(or (not x6845) (not x6629))
+(or (not x6845) (not x6630))
+(or x6855 (not x6843))
+(or x6855 (not x6844))
+(or x6855 (not x6845))
+(or x6855 (not x6019))
+(or x6843 x6844 x6845 x6019 (not x6855))
+(or x6849 (not x6843))
+(or x6849 (not x6844))
+(or x6849 x6023)
+(or x6849 (not x6022))
+(or x6849 (not x6021))
+(or x6849 x6020)
+(or x6849 (not x6019))
+(or x6849 x6648)
+(or x6849 (not x6627))
+(or x6849 (not x6628))
+(or x6849 (not x6629))
+(or x6849 (not x6630))
+(or x6843 x6844 (not x6023) x6022 x6021 (not x6020) x6019 (not x6648) x6627 x6628 x6629 x6630 (not x6849))
+(or x6848 (not x6843))
+(or x6848 x6023)
+(or x6848 (not x6022))
+(or x6848 (not x6021))
+(or x6848 (not x6020))
+(or x6848 x6019)
+(or x6843 (not x6023) x6022 x6021 x6020 (not x6019) (not x6848))
+(or x6847 x6023)
+(or x6847 (not x6022))
+(or x6847 (not x6021))
+(or x6847 (not x6020))
+(or x6847 (not x6019))
+(or (not x6023) x6022 x6021 x6020 x6019 (not x6847))
+(or x6856 x6023)
+(or x6856 (not x6022))
+(or x6856 (not x6021))
+(or x6856 (not x6020))
+(or x6856 (not x6019))
+(or x6856 x6857)
+(or (not x6023) x6022 x6021 x6020 x6019 (not x6857) (not x6856))
+(or (not x6856) (not x6848) (not x6849) (not x6855) x6858)
+(or (not x6858) x6856)
+(or (not x6858) x6848)
+(or (not x6858) x6849)
+(or (not x6858) x6855)
+(or x6859 (not x6860))
+(or x6859 (not x6861))
+(or x6859 (not x6862))
+(or x6859 (not x6030))
+(or x6860 x6861 x6862 x6030 (not x6859))
+(or x6863 (not x6860))
+(or x6863 (not x6861))
+(or x6863 (not x6862))
+(or x6863 (not x6029))
+(or x6860 x6861 x6862 x6029 (not x6863))
+(or (not x6864) (not x6865) (not x6866) (not x6863) x6867)
+(or (not x6867) x6864)
+(or (not x6867) x6865)
+(or (not x6867) x6866)
+(or (not x6867) x6863)
+(or x6868 (not x6860))
+(or x6868 (not x6861))
+(or x6868 (not x6862))
+(or x6868 (not x6028))
+(or x6860 x6861 x6862 x6028 (not x6868))
+(or (not x6864) (not x6865) (not x6866) (not x6868) x6869)
+(or (not x6869) x6864)
+(or (not x6869) x6865)
+(or (not x6869) x6866)
+(or (not x6869) x6868)
+(or x6870 (not x6860))
+(or x6870 (not x6861))
+(or x6870 (not x6862))
+(or x6870 (not x6027))
+(or x6860 x6861 x6862 x6027 (not x6870))
+(or (not x6864) (not x6866) (not x6870) x6871)
+(or (not x6871) x6864)
+(or (not x6871) x6866)
+(or (not x6871) x6870)
+(or (not x6030) x6029 x6028 (not x6027) x6026 (not x6666) x6627 x6628 x6629 x6630 x6862)
+(or (not x6862) x6030)
+(or (not x6862) (not x6029))
+(or (not x6862) (not x6028))
+(or (not x6862) x6027)
+(or (not x6862) (not x6026))
+(or (not x6862) x6666)
+(or (not x6862) (not x6627))
+(or (not x6862) (not x6628))
+(or (not x6862) (not x6629))
+(or (not x6862) (not x6630))
+(or x6872 (not x6860))
+(or x6872 (not x6861))
+(or x6872 (not x6862))
+(or x6872 (not x6026))
+(or x6860 x6861 x6862 x6026 (not x6872))
+(or x6866 (not x6860))
+(or x6866 (not x6861))
+(or x6866 x6030)
+(or x6866 (not x6029))
+(or x6866 (not x6028))
+(or x6866 x6027)
+(or x6866 (not x6026))
+(or x6866 x6666)
+(or x6866 (not x6627))
+(or x6866 (not x6628))
+(or x6866 (not x6629))
+(or x6866 (not x6630))
+(or x6860 x6861 (not x6030) x6029 x6028 (not x6027) x6026 (not x6666) x6627 x6628 x6629 x6630 (not x6866))
+(or x6865 (not x6860))
+(or x6865 x6030)
+(or x6865 (not x6029))
+(or x6865 (not x6028))
+(or x6865 (not x6027))
+(or x6865 x6026)
+(or x6860 (not x6030) x6029 x6028 x6027 (not x6026) (not x6865))
+(or x6864 x6030)
+(or x6864 (not x6029))
+(or x6864 (not x6028))
+(or x6864 (not x6027))
+(or x6864 (not x6026))
+(or (not x6030) x6029 x6028 x6027 x6026 (not x6864))
+(or x6873 x6030)
+(or x6873 (not x6029))
+(or x6873 (not x6028))
+(or x6873 (not x6027))
+(or x6873 (not x6026))
+(or x6873 x6874)
+(or (not x6030) x6029 x6028 x6027 x6026 (not x6874) (not x6873))
+(or (not x6873) (not x6865) (not x6866) (not x6872) x6875)
+(or (not x6875) x6873)
+(or (not x6875) x6865)
+(or (not x6875) x6866)
+(or (not x6875) x6872)
+(or x6876 (not x6877))
+(or x6876 (not x6878))
+(or x6876 (not x6879))
+(or x6876 (not x6037))
+(or x6877 x6878 x6879 x6037 (not x6876))
+(or x6880 (not x6877))
+(or x6880 (not x6878))
+(or x6880 (not x6879))
+(or x6880 (not x6036))
+(or x6877 x6878 x6879 x6036 (not x6880))
+(or (not x6881) (not x6882) (not x6883) (not x6880) x6884)
+(or (not x6884) x6881)
+(or (not x6884) x6882)
+(or (not x6884) x6883)
+(or (not x6884) x6880)
+(or x6885 (not x6877))
+(or x6885 (not x6878))
+(or x6885 (not x6879))
+(or x6885 (not x6035))
+(or x6877 x6878 x6879 x6035 (not x6885))
+(or (not x6881) (not x6882) (not x6883) (not x6885) x6886)
+(or (not x6886) x6881)
+(or (not x6886) x6882)
+(or (not x6886) x6883)
+(or (not x6886) x6885)
+(or x6887 (not x6877))
+(or x6887 (not x6878))
+(or x6887 (not x6879))
+(or x6887 (not x6034))
+(or x6877 x6878 x6879 x6034 (not x6887))
+(or (not x6881) (not x6883) (not x6887) x6888)
+(or (not x6888) x6881)
+(or (not x6888) x6883)
+(or (not x6888) x6887)
+(or (not x6037) x6036 x6035 (not x6034) x6033 (not x6684) x6627 x6628 x6629 x6630 x6879)
+(or (not x6879) x6037)
+(or (not x6879) (not x6036))
+(or (not x6879) (not x6035))
+(or (not x6879) x6034)
+(or (not x6879) (not x6033))
+(or (not x6879) x6684)
+(or (not x6879) (not x6627))
+(or (not x6879) (not x6628))
+(or (not x6879) (not x6629))
+(or (not x6879) (not x6630))
+(or x6889 (not x6877))
+(or x6889 (not x6878))
+(or x6889 (not x6879))
+(or x6889 (not x6033))
+(or x6877 x6878 x6879 x6033 (not x6889))
+(or x6883 (not x6877))
+(or x6883 (not x6878))
+(or x6883 x6037)
+(or x6883 (not x6036))
+(or x6883 (not x6035))
+(or x6883 x6034)
+(or x6883 (not x6033))
+(or x6883 x6684)
+(or x6883 (not x6627))
+(or x6883 (not x6628))
+(or x6883 (not x6629))
+(or x6883 (not x6630))
+(or x6877 x6878 (not x6037) x6036 x6035 (not x6034) x6033 (not x6684) x6627 x6628 x6629 x6630 (not x6883))
+(or x6882 (not x6877))
+(or x6882 x6037)
+(or x6882 (not x6036))
+(or x6882 (not x6035))
+(or x6882 (not x6034))
+(or x6882 x6033)
+(or x6877 (not x6037) x6036 x6035 x6034 (not x6033) (not x6882))
+(or x6881 x6037)
+(or x6881 (not x6036))
+(or x6881 (not x6035))
+(or x6881 (not x6034))
+(or x6881 (not x6033))
+(or (not x6037) x6036 x6035 x6034 x6033 (not x6881))
+(or x6890 x6037)
+(or x6890 (not x6036))
+(or x6890 (not x6035))
+(or x6890 (not x6034))
+(or x6890 (not x6033))
+(or x6890 x6891)
+(or (not x6037) x6036 x6035 x6034 x6033 (not x6891) (not x6890))
+(or (not x6890) (not x6882) (not x6883) (not x6889) x6892)
+(or (not x6892) x6890)
+(or (not x6892) x6882)
+(or (not x6892) x6883)
+(or (not x6892) x6889)
+(or x6893 (not x6894))
+(or x6893 (not x6895))
+(or x6893 (not x6896))
+(or x6893 (not x6373))
+(or x6894 x6895 x6896 x6373 (not x6893))
+(or x6897 (not x6894))
+(or x6897 (not x6895))
+(or x6897 (not x6896))
+(or x6897 (not x6372))
+(or x6894 x6895 x6896 x6372 (not x6897))
+(or (not x6898) (not x6899) (not x6900) (not x6897) x6901)
+(or (not x6901) x6898)
+(or (not x6901) x6899)
+(or (not x6901) x6900)
+(or (not x6901) x6897)
+(or x6902 (not x6894))
+(or x6902 (not x6895))
+(or x6902 (not x6896))
+(or x6902 (not x6371))
+(or x6894 x6895 x6896 x6371 (not x6902))
+(or (not x6898) (not x6899) (not x6900) (not x6902) x6903)
+(or (not x6903) x6898)
+(or (not x6903) x6899)
+(or (not x6903) x6900)
+(or (not x6903) x6902)
+(or x6904 (not x6894))
+(or x6904 (not x6895))
+(or x6904 (not x6896))
+(or x6904 (not x6370))
+(or x6894 x6895 x6896 x6370 (not x6904))
+(or (not x6898) (not x6900) (not x6904) x6905)
+(or (not x6905) x6898)
+(or (not x6905) x6900)
+(or (not x6905) x6904)
+(or (not x6373) x6372 x6371 (not x6370) x6369 (not x6626) (not x6627) (not x6628) x6629 x6630 x6896)
+(or (not x6896) x6373)
+(or (not x6896) (not x6372))
+(or (not x6896) (not x6371))
+(or (not x6896) x6370)
+(or (not x6896) (not x6369))
+(or (not x6896) x6626)
+(or (not x6896) x6627)
+(or (not x6896) x6628)
+(or (not x6896) (not x6629))
+(or (not x6896) (not x6630))
+(or x6906 (not x6894))
+(or x6906 (not x6895))
+(or x6906 (not x6896))
+(or x6906 (not x6369))
+(or x6894 x6895 x6896 x6369 (not x6906))
+(or x6900 (not x6894))
+(or x6900 (not x6895))
+(or x6900 x6373)
+(or x6900 (not x6372))
+(or x6900 (not x6371))
+(or x6900 x6370)
+(or x6900 (not x6369))
+(or x6900 x6626)
+(or x6900 x6627)
+(or x6900 x6628)
+(or x6900 (not x6629))
+(or x6900 (not x6630))
+(or x6894 x6895 (not x6373) x6372 x6371 (not x6370) x6369 (not x6626) (not x6627) (not x6628) x6629 x6630 (not x6900))
+(or x6899 (not x6894))
+(or x6899 x6373)
+(or x6899 (not x6372))
+(or x6899 (not x6371))
+(or x6899 (not x6370))
+(or x6899 x6369)
+(or x6894 (not x6373) x6372 x6371 x6370 (not x6369) (not x6899))
+(or x6898 x6373)
+(or x6898 (not x6372))
+(or x6898 (not x6371))
+(or x6898 (not x6370))
+(or x6898 (not x6369))
+(or (not x6373) x6372 x6371 x6370 x6369 (not x6898))
+(or x6907 x6373)
+(or x6907 (not x6372))
+(or x6907 (not x6371))
+(or x6907 (not x6370))
+(or x6907 (not x6369))
+(or x6907 x6908)
+(or (not x6373) x6372 x6371 x6370 x6369 (not x6908) (not x6907))
+(or (not x6907) (not x6899) (not x6900) (not x6906) x6909)
+(or (not x6909) x6907)
+(or (not x6909) x6899)
+(or (not x6909) x6900)
+(or (not x6909) x6906)
+(or x6910 (not x6911))
+(or x6910 (not x6912))
+(or x6910 (not x6913))
+(or x6910 (not x6380))
+(or x6911 x6912 x6913 x6380 (not x6910))
+(or x6914 (not x6911))
+(or x6914 (not x6912))
+(or x6914 (not x6913))
+(or x6914 (not x6379))
+(or x6911 x6912 x6913 x6379 (not x6914))
+(or (not x6915) (not x6916) (not x6917) (not x6914) x6918)
+(or (not x6918) x6915)
+(or (not x6918) x6916)
+(or (not x6918) x6917)
+(or (not x6918) x6914)
+(or x6919 (not x6911))
+(or x6919 (not x6912))
+(or x6919 (not x6913))
+(or x6919 (not x6378))
+(or x6911 x6912 x6913 x6378 (not x6919))
+(or (not x6915) (not x6916) (not x6917) (not x6919) x6920)
+(or (not x6920) x6915)
+(or (not x6920) x6916)
+(or (not x6920) x6917)
+(or (not x6920) x6919)
+(or x6921 (not x6911))
+(or x6921 (not x6912))
+(or x6921 (not x6913))
+(or x6921 (not x6377))
+(or x6911 x6912 x6913 x6377 (not x6921))
+(or (not x6915) (not x6917) (not x6921) x6922)
+(or (not x6922) x6915)
+(or (not x6922) x6917)
+(or (not x6922) x6921)
+(or (not x6380) x6379 x6378 (not x6377) x6376 (not x6648) (not x6627) (not x6628) x6629 x6630 x6913)
+(or (not x6913) x6380)
+(or (not x6913) (not x6379))
+(or (not x6913) (not x6378))
+(or (not x6913) x6377)
+(or (not x6913) (not x6376))
+(or (not x6913) x6648)
+(or (not x6913) x6627)
+(or (not x6913) x6628)
+(or (not x6913) (not x6629))
+(or (not x6913) (not x6630))
+(or x6923 (not x6911))
+(or x6923 (not x6912))
+(or x6923 (not x6913))
+(or x6923 (not x6376))
+(or x6911 x6912 x6913 x6376 (not x6923))
+(or x6917 (not x6911))
+(or x6917 (not x6912))
+(or x6917 x6380)
+(or x6917 (not x6379))
+(or x6917 (not x6378))
+(or x6917 x6377)
+(or x6917 (not x6376))
+(or x6917 x6648)
+(or x6917 x6627)
+(or x6917 x6628)
+(or x6917 (not x6629))
+(or x6917 (not x6630))
+(or x6911 x6912 (not x6380) x6379 x6378 (not x6377) x6376 (not x6648) (not x6627) (not x6628) x6629 x6630 (not x6917))
+(or x6916 (not x6911))
+(or x6916 x6380)
+(or x6916 (not x6379))
+(or x6916 (not x6378))
+(or x6916 (not x6377))
+(or x6916 x6376)
+(or x6911 (not x6380) x6379 x6378 x6377 (not x6376) (not x6916))
+(or x6915 x6380)
+(or x6915 (not x6379))
+(or x6915 (not x6378))
+(or x6915 (not x6377))
+(or x6915 (not x6376))
+(or (not x6380) x6379 x6378 x6377 x6376 (not x6915))
+(or x6924 x6380)
+(or x6924 (not x6379))
+(or x6924 (not x6378))
+(or x6924 (not x6377))
+(or x6924 (not x6376))
+(or x6924 x6925)
+(or (not x6380) x6379 x6378 x6377 x6376 (not x6925) (not x6924))
+(or (not x6924) (not x6916) (not x6917) (not x6923) x6926)
+(or (not x6926) x6924)
+(or (not x6926) x6916)
+(or (not x6926) x6917)
+(or (not x6926) x6923)
+(or x6927 (not x6928))
+(or x6927 (not x6929))
+(or x6927 (not x6930))
+(or x6927 (not x6387))
+(or x6928 x6929 x6930 x6387 (not x6927))
+(or x6931 (not x6928))
+(or x6931 (not x6929))
+(or x6931 (not x6930))
+(or x6931 (not x6386))
+(or x6928 x6929 x6930 x6386 (not x6931))
+(or (not x6932) (not x6933) (not x6934) (not x6931) x6935)
+(or (not x6935) x6932)
+(or (not x6935) x6933)
+(or (not x6935) x6934)
+(or (not x6935) x6931)
+(or x6936 (not x6928))
+(or x6936 (not x6929))
+(or x6936 (not x6930))
+(or x6936 (not x6385))
+(or x6928 x6929 x6930 x6385 (not x6936))
+(or (not x6932) (not x6933) (not x6934) (not x6936) x6937)
+(or (not x6937) x6932)
+(or (not x6937) x6933)
+(or (not x6937) x6934)
+(or (not x6937) x6936)
+(or x6938 (not x6928))
+(or x6938 (not x6929))
+(or x6938 (not x6930))
+(or x6938 (not x6384))
+(or x6928 x6929 x6930 x6384 (not x6938))
+(or (not x6932) (not x6934) (not x6938) x6939)
+(or (not x6939) x6932)
+(or (not x6939) x6934)
+(or (not x6939) x6938)
+(or (not x6387) x6386 x6385 (not x6384) x6383 (not x6666) (not x6627) (not x6628) x6629 x6630 x6930)
+(or (not x6930) x6387)
+(or (not x6930) (not x6386))
+(or (not x6930) (not x6385))
+(or (not x6930) x6384)
+(or (not x6930) (not x6383))
+(or (not x6930) x6666)
+(or (not x6930) x6627)
+(or (not x6930) x6628)
+(or (not x6930) (not x6629))
+(or (not x6930) (not x6630))
+(or x6940 (not x6928))
+(or x6940 (not x6929))
+(or x6940 (not x6930))
+(or x6940 (not x6383))
+(or x6928 x6929 x6930 x6383 (not x6940))
+(or x6934 (not x6928))
+(or x6934 (not x6929))
+(or x6934 x6387)
+(or x6934 (not x6386))
+(or x6934 (not x6385))
+(or x6934 x6384)
+(or x6934 (not x6383))
+(or x6934 x6666)
+(or x6934 x6627)
+(or x6934 x6628)
+(or x6934 (not x6629))
+(or x6934 (not x6630))
+(or x6928 x6929 (not x6387) x6386 x6385 (not x6384) x6383 (not x6666) (not x6627) (not x6628) x6629 x6630 (not x6934))
+(or x6933 (not x6928))
+(or x6933 x6387)
+(or x6933 (not x6386))
+(or x6933 (not x6385))
+(or x6933 (not x6384))
+(or x6933 x6383)
+(or x6928 (not x6387) x6386 x6385 x6384 (not x6383) (not x6933))
+(or x6932 x6387)
+(or x6932 (not x6386))
+(or x6932 (not x6385))
+(or x6932 (not x6384))
+(or x6932 (not x6383))
+(or (not x6387) x6386 x6385 x6384 x6383 (not x6932))
+(or x6941 x6387)
+(or x6941 (not x6386))
+(or x6941 (not x6385))
+(or x6941 (not x6384))
+(or x6941 (not x6383))
+(or x6941 x6942)
+(or (not x6387) x6386 x6385 x6384 x6383 (not x6942) (not x6941))
+(or (not x6941) (not x6933) (not x6934) (not x6940) x6943)
+(or (not x6943) x6941)
+(or (not x6943) x6933)
+(or (not x6943) x6934)
+(or (not x6943) x6940)
+(or x6944 (not x6945))
+(or x6944 (not x6946))
+(or x6944 (not x6947))
+(or x6944 (not x6394))
+(or x6945 x6946 x6947 x6394 (not x6944))
+(or x6948 (not x6945))
+(or x6948 (not x6946))
+(or x6948 (not x6947))
+(or x6948 (not x6393))
+(or x6945 x6946 x6947 x6393 (not x6948))
+(or (not x6949) (not x6950) (not x6951) (not x6948) x6952)
+(or (not x6952) x6949)
+(or (not x6952) x6950)
+(or (not x6952) x6951)
+(or (not x6952) x6948)
+(or x6953 (not x6945))
+(or x6953 (not x6946))
+(or x6953 (not x6947))
+(or x6953 (not x6392))
+(or x6945 x6946 x6947 x6392 (not x6953))
+(or (not x6949) (not x6950) (not x6951) (not x6953) x6954)
+(or (not x6954) x6949)
+(or (not x6954) x6950)
+(or (not x6954) x6951)
+(or (not x6954) x6953)
+(or x6955 (not x6945))
+(or x6955 (not x6946))
+(or x6955 (not x6947))
+(or x6955 (not x6391))
+(or x6945 x6946 x6947 x6391 (not x6955))
+(or (not x6949) (not x6951) (not x6955) x6956)
+(or (not x6956) x6949)
+(or (not x6956) x6951)
+(or (not x6956) x6955)
+(or (not x6394) x6393 x6392 (not x6391) x6390 (not x6684) (not x6627) (not x6628) x6629 x6630 x6947)
+(or (not x6947) x6394)
+(or (not x6947) (not x6393))
+(or (not x6947) (not x6392))
+(or (not x6947) x6391)
+(or (not x6947) (not x6390))
+(or (not x6947) x6684)
+(or (not x6947) x6627)
+(or (not x6947) x6628)
+(or (not x6947) (not x6629))
+(or (not x6947) (not x6630))
+(or x6957 (not x6945))
+(or x6957 (not x6946))
+(or x6957 (not x6947))
+(or x6957 (not x6390))
+(or x6945 x6946 x6947 x6390 (not x6957))
+(or x6951 (not x6945))
+(or x6951 (not x6946))
+(or x6951 x6394)
+(or x6951 (not x6393))
+(or x6951 (not x6392))
+(or x6951 x6391)
+(or x6951 (not x6390))
+(or x6951 x6684)
+(or x6951 x6627)
+(or x6951 x6628)
+(or x6951 (not x6629))
+(or x6951 (not x6630))
+(or x6945 x6946 (not x6394) x6393 x6392 (not x6391) x6390 (not x6684) (not x6627) (not x6628) x6629 x6630 (not x6951))
+(or x6950 (not x6945))
+(or x6950 x6394)
+(or x6950 (not x6393))
+(or x6950 (not x6392))
+(or x6950 (not x6391))
+(or x6950 x6390)
+(or x6945 (not x6394) x6393 x6392 x6391 (not x6390) (not x6950))
+(or x6949 x6394)
+(or x6949 (not x6393))
+(or x6949 (not x6392))
+(or x6949 (not x6391))
+(or x6949 (not x6390))
+(or (not x6394) x6393 x6392 x6391 x6390 (not x6949))
+(or x6958 x6394)
+(or x6958 (not x6393))
+(or x6958 (not x6392))
+(or x6958 (not x6391))
+(or x6958 (not x6390))
+(or x6958 x6959)
+(or (not x6394) x6393 x6392 x6391 x6390 (not x6959) (not x6958))
+(or (not x6958) (not x6950) (not x6951) (not x6957) x6960)
+(or (not x6960) x6958)
+(or (not x6960) x6950)
+(or (not x6960) x6951)
+(or (not x6960) x6957)
+(or (not x6961) x6962 (not x6963) (not x6964) (not x5783) (not x6965) x6966)
+(or (not x6966) x6961)
+(or (not x6966) (not x6962))
+(or (not x6966) x6963)
+(or (not x6966) x6964)
+(or (not x6966) x5783)
+(or (not x6966) x6965)
+(or (not x6967) (not x6964) (not x6968) x6969)
+(or (not x6969) x6967)
+(or (not x6969) x6964)
+(or (not x6969) x6968)
+(or x6970 (not x6969))
+(or x6970 (not x6966))
+(or x6969 x6966 (not x6970))
+(or (not x6971) x6972 (not x6973) (not x6964) (not x5783) (not x6965) x6974)
+(or (not x6974) x6971)
+(or (not x6974) (not x6972))
+(or (not x6974) x6973)
+(or (not x6974) x6964)
+(or (not x6974) x5783)
+(or (not x6974) x6965)
+(or (not x6975) (not x6964) (not x6968) x6976)
+(or (not x6976) x6975)
+(or (not x6976) x6964)
+(or (not x6976) x6968)
+(or x6977 (not x6976))
+(or x6977 (not x6974))
+(or x6976 x6974 (not x6977))
+(or (not x6978) x6979 (not x6980) (not x6964) (not x5783) (not x6965) x6981)
+(or (not x6981) x6978)
+(or (not x6981) (not x6979))
+(or (not x6981) x6980)
+(or (not x6981) x6964)
+(or (not x6981) x5783)
+(or (not x6981) x6965)
+(or (not x6982) (not x6964) (not x6968) x6983)
+(or (not x6983) x6982)
+(or (not x6983) x6964)
+(or (not x6983) x6968)
+(or x6984 (not x6983))
+(or x6984 (not x6981))
+(or x6983 x6981 (not x6984))
+(or (not x6985) x6986 (not x6987) (not x6964) (not x5783) (not x6965) x6988)
+(or (not x6988) x6985)
+(or (not x6988) (not x6986))
+(or (not x6988) x6987)
+(or (not x6988) x6964)
+(or (not x6988) x5783)
+(or (not x6988) x6965)
+(or x6968 x5783)
+(or x6968 (not x6989))
+(or (not x5783) x6989 (not x6968))
+(or x6964 (not x6990))
+(or x6964 (not x6982))
+(or x6964 (not x6975))
+(or x6964 (not x6967))
+(or x6990 x6982 x6975 x6967 (not x6964))
+(or (not x6990) (not x6964) (not x6968) x6991)
+(or (not x6991) x6990)
+(or (not x6991) x6964)
+(or (not x6991) x6968)
+(or x6990 x6982 x6975 x6967 x6992)
+(or (not x6992) (not x6990))
+(or (not x6992) (not x6982))
+(or (not x6992) (not x6975))
+(or (not x6992) (not x6967))
+(or x6993 (not x6992))
+(or x6993 (not x6991))
+(or x6993 (not x6988))
+(or x6992 x6991 x6988 (not x6993))
+(or (not x6994) (not x6975) x6995)
+(or (not x6995) x6994)
+(or (not x6995) x6975)
+(or (not x6996) (not x6994) (not x6982) x6997)
+(or (not x6997) x6996)
+(or (not x6997) x6994)
+(or (not x6997) x6982)
+(or (not x6998) (not x6996) (not x6994) (not x6990) x6999)
+(or (not x6999) x6998)
+(or (not x6999) x6996)
+(or (not x6999) x6994)
+(or (not x6999) x6990)
+(or x6985 (not x6967))
+(or x6985 (not x6999))
+(or x6985 (not x6997))
+(or x6985 (not x6995))
+(or x6967 x6999 x6997 x6995 (not x6985))
+(or (not x6985) x6986 (not x6987) (not x5783) (not x6965) x7000)
+(or (not x7000) x6985)
+(or (not x7000) (not x6986))
+(or (not x7000) x6987)
+(or (not x7000) x5783)
+(or (not x7000) x6965)
+(or (not x6996) (not x6982) x7001)
+(or (not x7001) x6996)
+(or (not x7001) x6982)
+(or (not x6998) (not x6996) (not x6990) x7002)
+(or (not x7002) x6998)
+(or (not x7002) x6996)
+(or (not x7002) x6990)
+(or (not x7003) (not x6998) (not x6996) (not x6967) x7004)
+(or (not x7004) x7003)
+(or (not x7004) x6998)
+(or (not x7004) x6996)
+(or (not x7004) x6967)
+(or x6961 (not x6975))
+(or x6961 (not x7004))
+(or x6961 (not x7002))
+(or x6961 (not x7001))
+(or x6975 x7004 x7002 x7001 (not x6961))
+(or (not x6961) x6962 (not x6963) (not x5783) (not x6965) x7005)
+(or (not x7005) x6961)
+(or (not x7005) (not x6962))
+(or (not x7005) x6963)
+(or (not x7005) x5783)
+(or (not x7005) x6965)
+(or (not x6998) (not x6990) x7006)
+(or (not x7006) x6998)
+(or (not x7006) x6990)
+(or (not x7003) (not x6998) (not x6967) x7007)
+(or (not x7007) x7003)
+(or (not x7007) x6998)
+(or (not x7007) x6967)
+(or (not x6994) (not x7003) (not x6998) (not x6975) x7008)
+(or (not x7008) x6994)
+(or (not x7008) x7003)
+(or (not x7008) x6998)
+(or (not x7008) x6975)
+(or x6971 (not x6982))
+(or x6971 (not x7008))
+(or x6971 (not x7007))
+(or x6971 (not x7006))
+(or x6982 x7008 x7007 x7006 (not x6971))
+(or (not x6971) x6972 (not x6973) (not x5783) (not x6965) x7009)
+(or (not x7009) x6971)
+(or (not x7009) (not x6972))
+(or (not x7009) x6973)
+(or (not x7009) x5783)
+(or (not x7009) x6965)
+(or (not x7003) (not x6967) x7010)
+(or (not x7010) x7003)
+(or (not x7010) x6967)
+(or (not x6994) (not x7003) (not x6975) x7011)
+(or (not x7011) x6994)
+(or (not x7011) x7003)
+(or (not x7011) x6975)
+(or (not x6996) (not x6994) (not x7003) (not x6982) x7012)
+(or (not x7012) x6996)
+(or (not x7012) x6994)
+(or (not x7012) x7003)
+(or (not x7012) x6982)
+(or x6978 (not x6990))
+(or x6978 (not x7012))
+(or x6978 (not x7011))
+(or x6978 (not x7010))
+(or x6990 x7012 x7011 x7010 (not x6978))
+(or (not x6978) x6979 (not x6980) (not x5783) (not x6965) x7013)
+(or (not x7013) x6978)
+(or (not x7013) (not x6979))
+(or (not x7013) x6980)
+(or (not x7013) x5783)
+(or (not x7013) x6965)
+(or x7014 x5793)
+(or x7014 x5789)
+(or x7014 x5784)
+(or x7014 x5781)
+(or (not x5793) (not x5789) (not x5784) (not x5781) (not x7014))
+(or (not x6965) (not x7014) x6077)
+(or (not x6077) x6965)
+(or (not x6077) x7014)
+(or x7015 x6244)
+(or x7015 x6424)
+(or (not x6244) (not x6424) (not x7015))
+(or x6257 x6424 x7016)
+(or (not x7016) (not x6257))
+(or (not x7016) (not x6424))
+(or x7017 x6253)
+(or x7017 (not x7016))
+(or (not x6253) x7016 (not x7017))
+(or x6267 x6257 x6424 x7018)
+(or (not x7018) (not x6267))
+(or (not x7018) (not x6257))
+(or (not x7018) (not x6424))
+(or x7019 x6264)
+(or x7019 (not x7018))
+(or (not x6264) x7018 (not x7019))
+(or x6275 x6267 x6257 x6424 x7020)
+(or (not x7020) (not x6275))
+(or (not x7020) (not x6267))
+(or (not x7020) (not x6257))
+(or (not x7020) (not x6424))
+(or x7021 x6273)
+(or x7021 (not x7020))
+(or (not x6273) x7020 (not x7021))
+(or x7022 x6250)
+(or x7022 x6358)
+(or (not x6250) (not x6358) (not x7022))
+(or x6283 x6358 x7023)
+(or (not x7023) (not x6283))
+(or (not x7023) (not x6358))
+(or x7024 x6262)
+(or x7024 (not x7023))
+(or (not x6262) x7023 (not x7024))
+(or x6291 x6283 x6358 x7025)
+(or (not x7025) (not x6291))
+(or (not x7025) (not x6283))
+(or (not x7025) (not x6358))
+(or x7026 x6271)
+(or x7026 (not x7025))
+(or (not x6271) x7025 (not x7026))
+(or x6299 x6291 x6283 x6358 x7027)
+(or (not x7027) (not x6299))
+(or (not x7027) (not x6291))
+(or (not x7027) (not x6283))
+(or (not x7027) (not x6358))
+(or x7028 x6297)
+(or x7028 (not x7027))
+(or (not x6297) x7027 (not x7028))
+(or x7029 x6279)
+(or x7029 x6307)
+(or (not x6279) (not x6307) (not x7029))
+(or x6315 x6307 x7030)
+(or (not x7030) (not x6315))
+(or (not x7030) (not x6307))
+(or x7031 x6287)
+(or x7031 (not x7030))
+(or (not x6287) x7030 (not x7031))
+(or x6323 x6315 x6307 x7032)
+(or (not x7032) (not x6323))
+(or (not x7032) (not x6315))
+(or (not x7032) (not x6307))
+(or x7033 x6295)
+(or x7033 (not x7032))
+(or (not x6295) x7032 (not x7033))
+(or x6330 x6323 x6315 x6307 x7034)
+(or (not x7034) (not x6330))
+(or (not x7034) (not x6323))
+(or (not x7034) (not x6315))
+(or (not x7034) (not x6307))
+(or x7035 x6303)
+(or x7035 (not x7034))
+(or (not x6303) x7034 (not x7035))
+(or x7036 x6311)
+(or x7036 x6365)
+(or (not x6311) (not x6365) (not x7036))
+(or x6337 x6365 x7037)
+(or (not x7037) (not x6337))
+(or (not x7037) (not x6365))
+(or x7038 x6319)
+(or x7038 (not x7037))
+(or (not x6319) x7037 (not x7038))
+(or x6344 x6337 x6365 x7039)
+(or (not x7039) (not x6344))
+(or (not x7039) (not x6337))
+(or (not x7039) (not x6365))
+(or x7040 x6327)
+(or x7040 (not x7039))
+(or (not x6327) x7039 (not x7040))
+(or x6351 x6344 x6337 x6365 x7041)
+(or (not x7041) (not x6351))
+(or (not x7041) (not x6344))
+(or (not x7041) (not x6337))
+(or (not x7041) (not x6365))
+(or x7042 x6349)
+(or x7042 (not x7041))
+(or (not x6349) x7041 (not x7042))
+(or (not x7042) (not x7040) (not x7038) (not x7036) (not x7035) (not x7033) (not x7031) (not x7029) (not x7028) (not x7026) (not x7024) (not x7022) (not x7021) (not x7019) (not x7017) (not x7015) x6434)
+(or (not x6434) x7042)
+(or (not x6434) x7040)
+(or (not x6434) x7038)
+(or (not x6434) x7036)
+(or (not x6434) x7035)
+(or (not x6434) x7033)
+(or (not x6434) x7031)
+(or (not x6434) x7029)
+(or (not x6434) x7028)
+(or (not x6434) x7026)
+(or (not x6434) x7024)
+(or (not x6434) x7022)
+(or (not x6434) x7021)
+(or (not x6434) x7019)
+(or (not x6434) x7017)
+(or (not x6434) x7015)
+(or (not x7042) (not x7040) (not x7038) (not x7036) (not x7035) (not x7033) (not x7031) (not x7029) (not x7028) (not x7026) (not x7024) (not x7022) (not x7021) (not x7019) (not x7017) (not x7015) (not x7043) (not x7044) (not x7045) (not x7046) (not x7047) (not x7048) (not x7049) (not x7050) (not x7051) (not x7052) (not x7053) (not x7054) (not x7055) (not x7056) (not x7057) (not x7058) x6076)
+(or (not x6076) x7042)
+(or (not x6076) x7040)
+(or (not x6076) x7038)
+(or (not x6076) x7036)
+(or (not x6076) x7035)
+(or (not x6076) x7033)
+(or (not x6076) x7031)
+(or (not x6076) x7029)
+(or (not x6076) x7028)
+(or (not x6076) x7026)
+(or (not x6076) x7024)
+(or (not x6076) x7022)
+(or (not x6076) x7021)
+(or (not x6076) x7019)
+(or (not x6076) x7017)
+(or (not x6076) x7015)
+(or (not x6076) x7043)
+(or (not x6076) x7044)
+(or (not x6076) x7045)
+(or (not x6076) x7046)
+(or (not x6076) x7047)
+(or (not x6076) x7048)
+(or (not x6076) x7049)
+(or (not x6076) x7050)
+(or (not x6076) x7051)
+(or (not x6076) x7052)
+(or (not x6076) x7053)
+(or (not x6076) x7054)
+(or (not x6076) x7055)
+(or (not x6076) x7056)
+(or (not x6076) x7057)
+(or (not x6076) x7058)
+(or x6609 x5807)
+(or x6609 (not x6076))
+(or x6609 (not x6077))
+(or (not x5807) x6076 x6077 (not x6609))
+(or (not x6609) (not x5807) x7059)
+(or (not x7059) x6609)
+(or (not x7059) x5807)
+(or x5807 x5780 x5783 x7060)
+(or (not x7060) (not x5807))
+(or (not x7060) (not x5780))
+(or (not x7060) (not x5783))
+(or x7061 (not x7060))
+(or x7061 (not x7059))
+(or x7060 x7059 (not x7061))
+(or x7058 x5800)
+(or x7058 x6067)
+(or (not x5800) (not x6067) (not x7058))
+(or x5814 x6067 x7062)
+(or (not x7062) (not x5814))
+(or (not x7062) (not x6067))
+(or x7057 x5810)
+(or x7057 (not x7062))
+(or (not x5810) x7062 (not x7057))
+(or x5826 x5814 x6067 x7063)
+(or (not x7063) (not x5826))
+(or (not x7063) (not x5814))
+(or (not x7063) (not x6067))
+(or x7056 x5823)
+(or x7056 (not x7063))
+(or (not x5823) x7063 (not x7056))
+(or x5834 x5826 x5814 x6067 x7064)
+(or (not x7064) (not x5834))
+(or (not x7064) (not x5826))
+(or (not x7064) (not x5814))
+(or (not x7064) (not x6067))
+(or x7055 x5832)
+(or x7055 (not x7064))
+(or (not x5832) x7064 (not x7055))
+(or x7054 x5806)
+(or x7054 x5938)
+(or (not x5806) (not x5938) (not x7054))
+(or x5842 x5938 x7065)
+(or (not x7065) (not x5842))
+(or (not x7065) (not x5938))
+(or x7053 x5821)
+(or x7053 (not x7065))
+(or (not x5821) x7065 (not x7053))
+(or x5850 x5842 x5938 x7066)
+(or (not x7066) (not x5850))
+(or (not x7066) (not x5842))
+(or (not x7066) (not x5938))
+(or x7052 x5830)
+(or x7052 (not x7066))
+(or (not x5830) x7066 (not x7052))
+(or x5858 x5850 x5842 x5938 x7067)
+(or (not x7067) (not x5858))
+(or (not x7067) (not x5850))
+(or (not x7067) (not x5842))
+(or (not x7067) (not x5938))
+(or x7051 x5856)
+(or x7051 (not x7067))
+(or (not x5856) x7067 (not x7051))
+(or x7050 x5838)
+(or x7050 x5973)
+(or (not x5838) (not x5973) (not x7050))
+(or x5866 x5973 x7068)
+(or (not x7068) (not x5866))
+(or (not x7068) (not x5973))
+(or x7049 x5846)
+(or x7049 (not x7068))
+(or (not x5846) x7068 (not x7049))
+(or x5874 x5866 x5973 x7069)
+(or (not x7069) (not x5874))
+(or (not x7069) (not x5866))
+(or (not x7069) (not x5973))
+(or x7048 x5854)
+(or x7048 (not x7069))
+(or (not x5854) x7069 (not x7048))
+(or x5882 x5874 x5866 x5973 x7070)
+(or (not x7070) (not x5882))
+(or (not x7070) (not x5874))
+(or (not x7070) (not x5866))
+(or (not x7070) (not x5973))
+(or x7047 x5880)
+(or x7047 (not x7070))
+(or (not x5880) x7070 (not x7047))
+(or x7046 x5862)
+(or x7046 x6008)
+(or (not x5862) (not x6008) (not x7046))
+(or x5889 x6008 x7071)
+(or (not x7071) (not x5889))
+(or (not x7071) (not x6008))
+(or x7045 x5870)
+(or x7045 (not x7071))
+(or (not x5870) x7071 (not x7045))
+(or x5896 x5889 x6008 x7072)
+(or (not x7072) (not x5896))
+(or (not x7072) (not x5889))
+(or (not x7072) (not x6008))
+(or x7044 x5878)
+(or x7044 (not x7072))
+(or (not x5878) x7072 (not x7044))
+(or x5903 x5896 x5889 x6008 x7073)
+(or (not x7073) (not x5903))
+(or (not x7073) (not x5896))
+(or (not x7073) (not x5889))
+(or (not x7073) (not x6008))
+(or x7043 x5901)
+(or x7043 (not x7073))
+(or (not x5901) x7073 (not x7043))
+(or (not x7043) (not x7044) (not x7045) (not x7046) (not x7047) (not x7048) (not x7049) (not x7050) (not x7051) (not x7052) (not x7053) (not x7054) (not x7055) (not x7056) (not x7057) (not x7058) x6075)
+(or (not x6075) x7043)
+(or (not x6075) x7044)
+(or (not x6075) x7045)
+(or (not x6075) x7046)
+(or (not x6075) x7047)
+(or (not x6075) x7048)
+(or (not x6075) x7049)
+(or (not x6075) x7050)
+(or (not x6075) x7051)
+(or (not x6075) x7052)
+(or (not x6075) x7053)
+(or (not x6075) x7054)
+(or (not x6075) x7055)
+(or (not x6075) x7056)
+(or (not x6075) x7057)
+(or (not x6075) x7058)
+(or x6258 (not x6075))
+(or x6258 (not x6236))
+(or x6075 x6236 (not x6258))
+(or (not x5807) (not x5785) (not x5817) (not x6237) (not x6258) x6421)
+(or (not x6421) x5807)
+(or (not x6421) x5785)
+(or (not x6421) x5817)
+(or (not x6421) x6237)
+(or (not x6421) x6258)
+(or x7074 (not x6986))
+(or x7074 x6987)
+(or x7074 (not x6987))
+(or x6986 (not x6987) x6987 (not x7074))
+(or x7075 (not x7076))
+(or x7075 x7077)
+(or x7076 (not x7077) (not x7075))
+(or (not x7075) (not x7074) x7078)
+(or (not x7078) x7075)
+(or (not x7078) x7074)
+(or x7079 (not x6962))
+(or x7079 x6963)
+(or x7079 (not x6963))
+(or x6962 (not x6963) x6963 (not x7079))
+(or x7080 (not x7081))
+(or x7080 x7082)
+(or x7081 (not x7082) (not x7080))
+(or (not x7080) (not x7079) x7083)
+(or (not x7083) x7080)
+(or (not x7083) x7079)
+(or x7084 (not x6972))
+(or x7084 x6973)
+(or x7084 (not x6973))
+(or x6972 (not x6973) x6973 (not x7084))
+(or x7085 (not x7086))
+(or x7085 x7087)
+(or x7086 (not x7087) (not x7085))
+(or (not x7085) (not x7084) x7088)
+(or (not x7088) x7085)
+(or (not x7088) x7084)
+(or x7089 (not x6979))
+(or x7089 x6980)
+(or x7089 (not x6980))
+(or x6979 (not x6980) x6980 (not x7089))
+(or x7090 (not x7091))
+(or x7090 x7092)
+(or x7091 (not x7092) (not x7090))
+(or (not x7090) (not x7089) x7093)
+(or (not x7093) x7090)
+(or (not x7093) x7089)
+(or (not x5793) (not x5789) (not x5784) (not x5781) x7094)
+(or (not x7094) x5793)
+(or (not x7094) x5789)
+(or (not x7094) x5784)
+(or (not x7094) x5781)
+(or x7003 (not x6986))
+(or x7003 x6987)
+(or x6986 (not x6987) (not x7003))
+(or x6994 (not x6962))
+(or x6994 x6963)
+(or x6962 (not x6963) (not x6994))
+(or x6996 (not x6972))
+(or x6996 x6973)
+(or x6972 (not x6973) (not x6996))
+(or x6998 (not x6979))
+(or x6998 x6980)
+(or x6979 (not x6980) (not x6998))
+(or (not x6998) (not x6996) (not x6994) (not x7003) x6989)
+(or (not x6989) x6998)
+(or (not x6989) x6996)
+(or (not x6989) x6994)
+(or (not x6989) x7003)
+(or x5817 (not x6989))
+(or x5817 (not x7094))
+(or x6989 x7094 (not x5817))
+(or (not x5800) (not x6067) x7095)
+(or (not x7095) x5800)
+(or (not x7095) x6067)
+(or x7096 (not x5814))
+(or x7096 (not x6067))
+(or x5814 x6067 (not x7096))
+(or (not x5810) (not x7096) x7097)
+(or (not x7097) x5810)
+(or (not x7097) x7096)
+(or x7098 (not x5826))
+(or x7098 (not x5814))
+(or x7098 (not x6067))
+(or x5826 x5814 x6067 (not x7098))
+(or (not x5823) (not x7098) x7099)
+(or (not x7099) x5823)
+(or (not x7099) x7098)
+(or x7100 (not x5834))
+(or x7100 (not x5826))
+(or x7100 (not x5814))
+(or x7100 (not x6067))
+(or x5834 x5826 x5814 x6067 (not x7100))
+(or (not x5832) (not x7100) x7101)
+(or (not x7101) x5832)
+(or (not x7101) x7100)
+(or (not x5806) (not x5938) x7102)
+(or (not x7102) x5806)
+(or (not x7102) x5938)
+(or x7103 (not x5842))
+(or x7103 (not x5938))
+(or x5842 x5938 (not x7103))
+(or (not x5821) (not x7103) x7104)
+(or (not x7104) x5821)
+(or (not x7104) x7103)
+(or x7105 (not x5850))
+(or x7105 (not x5842))
+(or x7105 (not x5938))
+(or x5850 x5842 x5938 (not x7105))
+(or (not x5830) (not x7105) x7106)
+(or (not x7106) x5830)
+(or (not x7106) x7105)
+(or x7107 (not x5858))
+(or x7107 (not x5850))
+(or x7107 (not x5842))
+(or x7107 (not x5938))
+(or x5858 x5850 x5842 x5938 (not x7107))
+(or (not x5856) (not x7107) x7108)
+(or (not x7108) x5856)
+(or (not x7108) x7107)
+(or (not x5838) (not x5973) x7109)
+(or (not x7109) x5838)
+(or (not x7109) x5973)
+(or x7110 (not x5866))
+(or x7110 (not x5973))
+(or x5866 x5973 (not x7110))
+(or (not x5846) (not x7110) x7111)
+(or (not x7111) x5846)
+(or (not x7111) x7110)
+(or x7112 (not x5874))
+(or x7112 (not x5866))
+(or x7112 (not x5973))
+(or x5874 x5866 x5973 (not x7112))
+(or (not x5854) (not x7112) x7113)
+(or (not x7113) x5854)
+(or (not x7113) x7112)
+(or x7114 (not x5882))
+(or x7114 (not x5874))
+(or x7114 (not x5866))
+(or x7114 (not x5973))
+(or x5882 x5874 x5866 x5973 (not x7114))
+(or (not x5880) (not x7114) x7115)
+(or (not x7115) x5880)
+(or (not x7115) x7114)
+(or (not x5862) (not x6008) x7116)
+(or (not x7116) x5862)
+(or (not x7116) x6008)
+(or x7117 (not x5889))
+(or x7117 (not x6008))
+(or x5889 x6008 (not x7117))
+(or (not x5870) (not x7117) x7118)
+(or (not x7118) x5870)
+(or (not x7118) x7117)
+(or x7119 (not x5896))
+(or x7119 (not x5889))
+(or x7119 (not x6008))
+(or x5896 x5889 x6008 (not x7119))
+(or (not x5878) (not x7119) x7120)
+(or (not x7120) x5878)
+(or (not x7120) x7119)
+(or x7121 (not x5903))
+(or x7121 (not x5896))
+(or x7121 (not x5889))
+(or x7121 (not x6008))
+(or x5903 x5896 x5889 x6008 (not x7121))
+(or (not x5901) (not x7121) x7122)
+(or (not x7122) x5901)
+(or (not x7122) x7121)
+(or x5816 (not x7122))
+(or x5816 (not x7120))
+(or x5816 (not x7118))
+(or x5816 (not x7116))
+(or x5816 (not x7115))
+(or x5816 (not x7113))
+(or x5816 (not x7111))
+(or x5816 (not x7109))
+(or x5816 (not x7108))
+(or x5816 (not x7106))
+(or x5816 (not x7104))
+(or x5816 (not x7102))
+(or x5816 (not x7101))
+(or x5816 (not x7099))
+(or x5816 (not x7097))
+(or x5816 (not x7095))
+(or x7122 x7120 x7118 x7116 x7115 x7113 x7111 x7109 x7108 x7106 x7104 x7102 x7101 x7099 x7097 x7095 (not x5816))
+(or (not x6244) (not x6424) x7123)
+(or (not x7123) x6244)
+(or (not x7123) x6424)
+(or x7124 (not x6257))
+(or x7124 (not x6424))
+(or x6257 x6424 (not x7124))
+(or (not x6253) (not x7124) x7125)
+(or (not x7125) x6253)
+(or (not x7125) x7124)
+(or x7126 (not x6267))
+(or x7126 (not x6257))
+(or x7126 (not x6424))
+(or x6267 x6257 x6424 (not x7126))
+(or (not x6264) (not x7126) x7127)
+(or (not x7127) x6264)
+(or (not x7127) x7126)
+(or x7128 (not x6275))
+(or x7128 (not x6267))
+(or x7128 (not x6257))
+(or x7128 (not x6424))
+(or x6275 x6267 x6257 x6424 (not x7128))
+(or (not x6273) (not x7128) x7129)
+(or (not x7129) x6273)
+(or (not x7129) x7128)
+(or (not x6250) (not x6358) x7130)
+(or (not x7130) x6250)
+(or (not x7130) x6358)
+(or x7131 (not x6283))
+(or x7131 (not x6358))
+(or x6283 x6358 (not x7131))
+(or (not x6262) (not x7131) x7132)
+(or (not x7132) x6262)
+(or (not x7132) x7131)
+(or x7133 (not x6291))
+(or x7133 (not x6283))
+(or x7133 (not x6358))
+(or x6291 x6283 x6358 (not x7133))
+(or (not x6271) (not x7133) x7134)
+(or (not x7134) x6271)
+(or (not x7134) x7133)
+(or x7135 (not x6299))
+(or x7135 (not x6291))
+(or x7135 (not x6283))
+(or x7135 (not x6358))
+(or x6299 x6291 x6283 x6358 (not x7135))
+(or (not x6297) (not x7135) x7136)
+(or (not x7136) x6297)
+(or (not x7136) x7135)
+(or (not x6279) (not x6307) x7137)
+(or (not x7137) x6279)
+(or (not x7137) x6307)
+(or x7138 (not x6315))
+(or x7138 (not x6307))
+(or x6315 x6307 (not x7138))
+(or (not x6287) (not x7138) x7139)
+(or (not x7139) x6287)
+(or (not x7139) x7138)
+(or x7140 (not x6323))
+(or x7140 (not x6315))
+(or x7140 (not x6307))
+(or x6323 x6315 x6307 (not x7140))
+(or (not x6295) (not x7140) x7141)
+(or (not x7141) x6295)
+(or (not x7141) x7140)
+(or x7142 (not x6330))
+(or x7142 (not x6323))
+(or x7142 (not x6315))
+(or x7142 (not x6307))
+(or x6330 x6323 x6315 x6307 (not x7142))
+(or (not x6303) (not x7142) x7143)
+(or (not x7143) x6303)
+(or (not x7143) x7142)
+(or (not x6311) (not x6365) x7144)
+(or (not x7144) x6311)
+(or (not x7144) x6365)
+(or x7145 (not x6337))
+(or x7145 (not x6365))
+(or x6337 x6365 (not x7145))
+(or (not x6319) (not x7145) x7146)
+(or (not x7146) x6319)
+(or (not x7146) x7145)
+(or x7147 (not x6344))
+(or x7147 (not x6337))
+(or x7147 (not x6365))
+(or x6344 x6337 x6365 (not x7147))
+(or (not x6327) (not x7147) x7148)
+(or (not x7148) x6327)
+(or (not x7148) x7147)
+(or x7149 (not x6351))
+(or x7149 (not x6344))
+(or x7149 (not x6337))
+(or x7149 (not x6365))
+(or x6351 x6344 x6337 x6365 (not x7149))
+(or (not x6349) (not x7149) x7150)
+(or (not x7150) x6349)
+(or (not x7150) x7149)
+(or x6237 (not x7150))
+(or x6237 (not x7148))
+(or x6237 (not x7146))
+(or x6237 (not x7144))
+(or x6237 (not x7143))
+(or x6237 (not x7141))
+(or x6237 (not x7139))
+(or x6237 (not x7137))
+(or x6237 (not x7136))
+(or x6237 (not x7134))
+(or x6237 (not x7132))
+(or x6237 (not x7130))
+(or x6237 (not x7129))
+(or x6237 (not x7127))
+(or x6237 (not x7125))
+(or x6237 (not x7123))
+(or x7150 x7148 x7146 x7144 x7143 x7141 x7139 x7137 x7136 x7134 x7132 x7130 x7129 x7127 x7125 x7123 (not x6237))
+(or x5785 (not x7150))
+(or x5785 (not x7148))
+(or x5785 (not x7146))
+(or x5785 (not x7144))
+(or x5785 (not x7143))
+(or x5785 (not x7141))
+(or x5785 (not x7139))
+(or x5785 (not x7137))
+(or x5785 (not x7136))
+(or x5785 (not x7134))
+(or x5785 (not x7132))
+(or x5785 (not x7130))
+(or x5785 (not x7129))
+(or x5785 (not x7127))
+(or x5785 (not x7125))
+(or x5785 (not x7123))
+(or x5785 (not x7122))
+(or x5785 (not x7120))
+(or x5785 (not x7118))
+(or x5785 (not x7116))
+(or x5785 (not x7115))
+(or x5785 (not x7113))
+(or x5785 (not x7111))
+(or x5785 (not x7109))
+(or x5785 (not x7108))
+(or x5785 (not x7106))
+(or x5785 (not x7104))
+(or x5785 (not x7102))
+(or x5785 (not x7101))
+(or x5785 (not x7099))
+(or x5785 (not x7097))
+(or x5785 (not x7095))
+(or x7150 x7148 x7146 x7144 x7143 x7141 x7139 x7137 x7136 x7134 x7132 x7130 x7129 x7127 x7125 x7123 x7122 x7120 x7118 x7116 x7115 x7113 x7111 x7109 x7108 x7106 x7104 x7102 x7101 x7099 x7097 x7095 (not x5785))
+(or (not x5807) (not x5807) (not x5785) (not x5817) x7151)
+(or (not x7151) x5807)
+(or (not x7151) x5807)
+(or (not x7151) x5785)
+(or (not x7151) x5817)
+(or x7152 (not x5783))
+(or x7152 (not x7153))
+(or x5783 x7153 (not x7152))
+(or x6986 (not x6987) x7076)
+(or (not x7076) (not x6986))
+(or (not x7076) x6987)
+(or x6962 (not x6963) x7081)
+(or (not x7081) (not x6962))
+(or (not x7081) x6963)
+(or x6972 (not x6973) x7086)
+(or (not x7086) (not x6972))
+(or (not x7086) x6973)
+(or x6979 (not x6980) x7091)
+(or (not x7091) (not x6979))
+(or (not x7091) x6980)
+(or x6965 (not x7091))
+(or x6965 (not x7086))
+(or x6965 (not x7081))
+(or x6965 (not x7076))
+(or x7091 x7086 x7081 x7076 (not x6965))
+(or (not x5783) (not x6965) x7154)
+(or (not x7154) x5783)
+(or (not x7154) x6965)
+(or x7155 (not x5780))
+(or x7155 (not x7154))
+(or x5780 x7154 (not x7155))
+(or (not x3) (not x5759))
+(or (not x3) x5758)
+(or (not x3) (not x5757))
+(or (not x3) x5756)
+(or (not x3) (not x5755))
+(or (not x7156) (not x5759))
+(or (not x7156) x5758)
+(or (not x7156) (not x5757))
+(or (not x7156) (not x5756))
+(or (not x7156) x5755)
+(or x5759 (not x5758) x5757 x5756 x5755 x5770)
+(or (not x5770) (not x5759))
+(or (not x5770) x5758)
+(or (not x5770) (not x5757))
+(or (not x5770) (not x5756))
+(or (not x5770) (not x5755))
+(or x5759 x5758 (not x5757) (not x5756) (not x5755) x5763)
+(or (not x5763) (not x5759))
+(or (not x5763) (not x5758))
+(or (not x5763) x5757)
+(or (not x5763) x5756)
+(or (not x5763) x5755)
+(or x5759 x5758 (not x5757) (not x5756) x5755 x5762)
+(or (not x5762) (not x5759))
+(or (not x5762) (not x5758))
+(or (not x5762) x5757)
+(or (not x5762) x5756)
+(or (not x5762) (not x5755))
+(or x5759 x5758 (not x5757) x5756 (not x5755) x5754)
+(or (not x5754) (not x5759))
+(or (not x5754) (not x5758))
+(or (not x5754) x5757)
+(or (not x5754) (not x5756))
+(or (not x5754) x5755)
+(or x5759 x5758 (not x5757) x5756 x5755 x5753)
+(or (not x5753) (not x5759))
+(or (not x5753) (not x5758))
+(or (not x5753) x5757)
+(or (not x5753) (not x5756))
+(or (not x5753) (not x5755))
+(or x5759 x5758 x5757 (not x5756) (not x5755) x5752)
+(or (not x5752) (not x5759))
+(or (not x5752) (not x5758))
+(or (not x5752) (not x5757))
+(or (not x5752) x5756)
+(or (not x5752) x5755)
+(or x5759 x5758 x5757 (not x5756) x5755 x5751)
+(or (not x5751) (not x5759))
+(or (not x5751) (not x5758))
+(or (not x5751) (not x5757))
+(or (not x5751) x5756)
+(or (not x5751) (not x5755))
+(or x5759 x5758 x5757 x5756 (not x5755) x5750)
+(or (not x5750) (not x5759))
+(or (not x5750) (not x5758))
+(or (not x5750) (not x5757))
+(or (not x5750) (not x5756))
+(or (not x5750) x5755)
+(or (not x7157) (not x5759))
+(or (not x7157) (not x5758))
+(or (not x7157) (not x5757))
+(or (not x7157) (not x5756))
+(or (not x7157) (not x5755))
+(or x7158 (not x7157))
+(or x7158 (not x5750))
+(or x7158 (not x5751))
+(or x7158 (not x5752))
+(or x7158 (not x5753))
+(or x7158 (not x5754))
+(or x7158 (not x5762))
+(or x7158 (not x5763))
+(or x7158 (not x5770))
+(or x7158 (not x7156))
+(or x7157 x5750 x5751 x5752 x5753 x5754 x5762 x5763 x5770 x7156 (not x7158))
+(or x7159 x5774 x7160)
+(or x7159 (not x5774) (not x7160))
+(or (not x7159) x5774 (not x7160))
+(or (not x7159) (not x5774) x7160)
+(or x7161 x5775 x7162)
+(or x7161 (not x5775) (not x7162))
+(or (not x7161) x5775 (not x7162))
+(or (not x7161) (not x5775) x7162)
+(or x7163 x7164 x7165)
+(or x7163 (not x7164) (not x7165))
+(or (not x7163) x7164 (not x7165))
+(or (not x7163) (not x7164) x7165)
+(or x7166 x7167 x7168)
+(or x7166 (not x7167) (not x7168))
+(or (not x7166) x7167 (not x7168))
+(or (not x7166) (not x7167) x7168)
+(or x7169 x7170 x7171)
+(or x7169 (not x7170) (not x7171))
+(or (not x7169) x7170 (not x7171))
+(or (not x7169) (not x7170) x7171)
+(or x7172 x7173 x7174)
+(or x7172 (not x7173) (not x7174))
+(or (not x7172) x7173 (not x7174))
+(or (not x7172) (not x7173) x7174)
+(or (not x7175) x5773)
+(or (not x7175) x7172)
+(or (not x7175) x7169)
+(or (not x7175) x7166)
+(or (not x7175) x7163)
+(or (not x7175) x7161)
+(or (not x7175) x7159)
+(or x7176 x5767 x7165)
+(or x7176 (not x5767) (not x7165))
+(or (not x7176) x5767 (not x7165))
+(or (not x7176) (not x5767) x7165)
+(or x7177 x5766 x7168)
+(or x7177 (not x5766) (not x7168))
+(or (not x7177) x5766 (not x7168))
+(or (not x7177) (not x5766) x7168)
+(or (not x7178) x5768)
+(or (not x7178) x7177)
+(or (not x7178) x7176)
+(or (not x7178) (not x5773))
+(or x7179 x5773)
+(or x7179 (not x7178))
+(or x7179 x5773)
+(or x7179 x5773)
+(or x7179 (not x7175))
+(or x7179 x5773)
+(or x7179 x5773)
+(or x7179 (not x7178))
+(or x7179 x5773)
+(or x7179 x5773)
+(or x7179 (not x7175))
+(or (not x5773) x7178 (not x5773) (not x5773) x7175 (not x5773) (not x5773) x7178 (not x5773) (not x5773) x7175 (not x7179))
+(or (not x7180) x5911)
+(or (not x7180) (not x5910))
+(or (not x7180) (not x5909))
+(or (not x7180) x5908)
+(or (not x7180) (not x5907))
+(or (not x5911) x5910 x5909 x5908 (not x5907) x6615)
+(or (not x6615) x5911)
+(or (not x6615) (not x5910))
+(or (not x6615) (not x5909))
+(or (not x6615) (not x5908))
+(or (not x6615) x5907)
+(or (not x5911) x5910 x5909 x5908 x5907 x6614)
+(or (not x6614) x5911)
+(or (not x6614) (not x5910))
+(or (not x6614) (not x5909))
+(or (not x6614) (not x5908))
+(or (not x6614) (not x5907))
+(or x7181 (not x6614))
+(or x7181 (not x6615))
+(or x6614 x6615 (not x7181))
+(or (not x7182) x5918)
+(or (not x7182) (not x5917))
+(or (not x7182) (not x5916))
+(or (not x7182) x5915)
+(or (not x7182) (not x5914))
+(or (not x5918) x5917 x5916 x5915 (not x5914) x6637)
+(or (not x6637) x5918)
+(or (not x6637) (not x5917))
+(or (not x6637) (not x5916))
+(or (not x6637) (not x5915))
+(or (not x6637) x5914)
+(or (not x5918) x5917 x5916 x5915 x5914 x6636)
+(or (not x6636) x5918)
+(or (not x6636) (not x5917))
+(or (not x6636) (not x5916))
+(or (not x6636) (not x5915))
+(or (not x6636) (not x5914))
+(or x7183 (not x6636))
+(or x7183 (not x6637))
+(or x6636 x6637 (not x7183))
+(or (not x7184) x5925)
+(or (not x7184) (not x5924))
+(or (not x7184) (not x5923))
+(or (not x7184) x5922)
+(or (not x7184) (not x5921))
+(or (not x5925) x5924 x5923 x5922 (not x5921) x6655)
+(or (not x6655) x5925)
+(or (not x6655) (not x5924))
+(or (not x6655) (not x5923))
+(or (not x6655) (not x5922))
+(or (not x6655) x5921)
+(or (not x5925) x5924 x5923 x5922 x5921 x6654)
+(or (not x6654) x5925)
+(or (not x6654) (not x5924))
+(or (not x6654) (not x5923))
+(or (not x6654) (not x5922))
+(or (not x6654) (not x5921))
+(or x7185 (not x6654))
+(or x7185 (not x6655))
+(or x6654 x6655 (not x7185))
+(or (not x7186) x5932)
+(or (not x7186) (not x5931))
+(or (not x7186) (not x5930))
+(or (not x7186) x5929)
+(or (not x7186) (not x5928))
+(or (not x5932) x5931 x5930 x5929 (not x5928) x6673)
+(or (not x6673) x5932)
+(or (not x6673) (not x5931))
+(or (not x6673) (not x5930))
+(or (not x6673) (not x5929))
+(or (not x6673) x5928)
+(or (not x5932) x5931 x5930 x5929 x5928 x6672)
+(or (not x6672) x5932)
+(or (not x6672) (not x5931))
+(or (not x6672) (not x5930))
+(or (not x6672) (not x5929))
+(or (not x6672) (not x5928))
+(or x7187 (not x6672))
+(or x7187 (not x6673))
+(or x6672 x6673 (not x7187))
+(or (not x7188) x5946)
+(or (not x7188) (not x5945))
+(or (not x7188) (not x5944))
+(or (not x7188) x5943)
+(or (not x7188) (not x5942))
+(or (not x5946) x5945 x5944 x5943 (not x5942) x6691)
+(or (not x6691) x5946)
+(or (not x6691) (not x5945))
+(or (not x6691) (not x5944))
+(or (not x6691) (not x5943))
+(or (not x6691) x5942)
+(or (not x5946) x5945 x5944 x5943 x5942 x6690)
+(or (not x6690) x5946)
+(or (not x6690) (not x5945))
+(or (not x6690) (not x5944))
+(or (not x6690) (not x5943))
+(or (not x6690) (not x5942))
+(or x7189 (not x6690))
+(or x7189 (not x6691))
+(or x6690 x6691 (not x7189))
+(or (not x7190) x5953)
+(or (not x7190) (not x5952))
+(or (not x7190) (not x5951))
+(or (not x7190) x5950)
+(or (not x7190) (not x5949))
+(or (not x5953) x5952 x5951 x5950 (not x5949) x6708)
+(or (not x6708) x5953)
+(or (not x6708) (not x5952))
+(or (not x6708) (not x5951))
+(or (not x6708) (not x5950))
+(or (not x6708) x5949)
+(or (not x5953) x5952 x5951 x5950 x5949 x6707)
+(or (not x6707) x5953)
+(or (not x6707) (not x5952))
+(or (not x6707) (not x5951))
+(or (not x6707) (not x5950))
+(or (not x6707) (not x5949))
+(or x7191 (not x6707))
+(or x7191 (not x6708))
+(or x6707 x6708 (not x7191))
+(or (not x7192) x5960)
+(or (not x7192) (not x5959))
+(or (not x7192) (not x5958))
+(or (not x7192) x5957)
+(or (not x7192) (not x5956))
+(or (not x5960) x5959 x5958 x5957 (not x5956) x6725)
+(or (not x6725) x5960)
+(or (not x6725) (not x5959))
+(or (not x6725) (not x5958))
+(or (not x6725) (not x5957))
+(or (not x6725) x5956)
+(or (not x5960) x5959 x5958 x5957 x5956 x6724)
+(or (not x6724) x5960)
+(or (not x6724) (not x5959))
+(or (not x6724) (not x5958))
+(or (not x6724) (not x5957))
+(or (not x6724) (not x5956))
+(or x7193 (not x6724))
+(or x7193 (not x6725))
+(or x6724 x6725 (not x7193))
+(or (not x7194) x5967)
+(or (not x7194) (not x5966))
+(or (not x7194) (not x5965))
+(or (not x7194) x5964)
+(or (not x7194) (not x5963))
+(or (not x5967) x5966 x5965 x5964 (not x5963) x6742)
+(or (not x6742) x5967)
+(or (not x6742) (not x5966))
+(or (not x6742) (not x5965))
+(or (not x6742) (not x5964))
+(or (not x6742) x5963)
+(or (not x5967) x5966 x5965 x5964 x5963 x6741)
+(or (not x6741) x5967)
+(or (not x6741) (not x5966))
+(or (not x6741) (not x5965))
+(or (not x6741) (not x5964))
+(or (not x6741) (not x5963))
+(or x7195 (not x6741))
+(or x7195 (not x6742))
+(or x6741 x6742 (not x7195))
+(or (not x7196) x5981)
+(or (not x7196) (not x5980))
+(or (not x7196) (not x5979))
+(or (not x7196) x5978)
+(or (not x7196) (not x5977))
+(or (not x5981) x5980 x5979 x5978 (not x5977) x6759)
+(or (not x6759) x5981)
+(or (not x6759) (not x5980))
+(or (not x6759) (not x5979))
+(or (not x6759) (not x5978))
+(or (not x6759) x5977)
+(or (not x5981) x5980 x5979 x5978 x5977 x6758)
+(or (not x6758) x5981)
+(or (not x6758) (not x5980))
+(or (not x6758) (not x5979))
+(or (not x6758) (not x5978))
+(or (not x6758) (not x5977))
+(or x7197 (not x6758))
+(or x7197 (not x6759))
+(or x6758 x6759 (not x7197))
+(or (not x7198) x5988)
+(or (not x7198) (not x5987))
+(or (not x7198) (not x5986))
+(or (not x7198) x5985)
+(or (not x7198) (not x5984))
+(or (not x5988) x5987 x5986 x5985 (not x5984) x6776)
+(or (not x6776) x5988)
+(or (not x6776) (not x5987))
+(or (not x6776) (not x5986))
+(or (not x6776) (not x5985))
+(or (not x6776) x5984)
+(or (not x5988) x5987 x5986 x5985 x5984 x6775)
+(or (not x6775) x5988)
+(or (not x6775) (not x5987))
+(or (not x6775) (not x5986))
+(or (not x6775) (not x5985))
+(or (not x6775) (not x5984))
+(or x7199 (not x6775))
+(or x7199 (not x6776))
+(or x6775 x6776 (not x7199))
+(or (not x7200) x5995)
+(or (not x7200) (not x5994))
+(or (not x7200) (not x5993))
+(or (not x7200) x5992)
+(or (not x7200) (not x5991))
+(or (not x5995) x5994 x5993 x5992 (not x5991) x6793)
+(or (not x6793) x5995)
+(or (not x6793) (not x5994))
+(or (not x6793) (not x5993))
+(or (not x6793) (not x5992))
+(or (not x6793) x5991)
+(or (not x5995) x5994 x5993 x5992 x5991 x6792)
+(or (not x6792) x5995)
+(or (not x6792) (not x5994))
+(or (not x6792) (not x5993))
+(or (not x6792) (not x5992))
+(or (not x6792) (not x5991))
+(or x7201 (not x6792))
+(or x7201 (not x6793))
+(or x6792 x6793 (not x7201))
+(or (not x7202) x6002)
+(or (not x7202) (not x6001))
+(or (not x7202) (not x6000))
+(or (not x7202) x5999)
+(or (not x7202) (not x5998))
+(or (not x6002) x6001 x6000 x5999 (not x5998) x6810)
+(or (not x6810) x6002)
+(or (not x6810) (not x6001))
+(or (not x6810) (not x6000))
+(or (not x6810) (not x5999))
+(or (not x6810) x5998)
+(or (not x6002) x6001 x6000 x5999 x5998 x6809)
+(or (not x6809) x6002)
+(or (not x6809) (not x6001))
+(or (not x6809) (not x6000))
+(or (not x6809) (not x5999))
+(or (not x6809) (not x5998))
+(or x7203 (not x6809))
+(or x7203 (not x6810))
+(or x6809 x6810 (not x7203))
+(or (not x7204) x6016)
+(or (not x7204) (not x6015))
+(or (not x7204) (not x6014))
+(or (not x7204) x6013)
+(or (not x7204) (not x6012))
+(or (not x6016) x6015 x6014 x6013 (not x6012) x6827)
+(or (not x6827) x6016)
+(or (not x6827) (not x6015))
+(or (not x6827) (not x6014))
+(or (not x6827) (not x6013))
+(or (not x6827) x6012)
+(or (not x6016) x6015 x6014 x6013 x6012 x6826)
+(or (not x6826) x6016)
+(or (not x6826) (not x6015))
+(or (not x6826) (not x6014))
+(or (not x6826) (not x6013))
+(or (not x6826) (not x6012))
+(or x7205 (not x6826))
+(or x7205 (not x6827))
+(or x6826 x6827 (not x7205))
+(or (not x7206) x6023)
+(or (not x7206) (not x6022))
+(or (not x7206) (not x6021))
+(or (not x7206) x6020)
+(or (not x7206) (not x6019))
+(or (not x6023) x6022 x6021 x6020 (not x6019) x6844)
+(or (not x6844) x6023)
+(or (not x6844) (not x6022))
+(or (not x6844) (not x6021))
+(or (not x6844) (not x6020))
+(or (not x6844) x6019)
+(or (not x6023) x6022 x6021 x6020 x6019 x6843)
+(or (not x6843) x6023)
+(or (not x6843) (not x6022))
+(or (not x6843) (not x6021))
+(or (not x6843) (not x6020))
+(or (not x6843) (not x6019))
+(or x7207 (not x6843))
+(or x7207 (not x6844))
+(or x6843 x6844 (not x7207))
+(or (not x7208) x6030)
+(or (not x7208) (not x6029))
+(or (not x7208) (not x6028))
+(or (not x7208) x6027)
+(or (not x7208) (not x6026))
+(or (not x6030) x6029 x6028 x6027 (not x6026) x6861)
+(or (not x6861) x6030)
+(or (not x6861) (not x6029))
+(or (not x6861) (not x6028))
+(or (not x6861) (not x6027))
+(or (not x6861) x6026)
+(or (not x6030) x6029 x6028 x6027 x6026 x6860)
+(or (not x6860) x6030)
+(or (not x6860) (not x6029))
+(or (not x6860) (not x6028))
+(or (not x6860) (not x6027))
+(or (not x6860) (not x6026))
+(or x7209 (not x6860))
+(or x7209 (not x6861))
+(or x6860 x6861 (not x7209))
+(or (not x7210) x6037)
+(or (not x7210) (not x6036))
+(or (not x7210) (not x6035))
+(or (not x7210) x6034)
+(or (not x7210) (not x6033))
+(or (not x6037) x6036 x6035 x6034 (not x6033) x6878)
+(or (not x6878) x6037)
+(or (not x6878) (not x6036))
+(or (not x6878) (not x6035))
+(or (not x6878) (not x6034))
+(or (not x6878) x6033)
+(or (not x6037) x6036 x6035 x6034 x6033 x6877)
+(or (not x6877) x6037)
+(or (not x6877) (not x6036))
+(or (not x6877) (not x6035))
+(or (not x6877) (not x6034))
+(or (not x6877) (not x6033))
+(or x7211 (not x6877))
+(or x7211 (not x6878))
+(or x6877 x6878 (not x7211))
+(or (not x7212) x6373)
+(or (not x7212) (not x6372))
+(or (not x7212) (not x6371))
+(or (not x7212) x6370)
+(or (not x7212) (not x6369))
+(or (not x6373) x6372 x6371 x6370 (not x6369) x6895)
+(or (not x6895) x6373)
+(or (not x6895) (not x6372))
+(or (not x6895) (not x6371))
+(or (not x6895) (not x6370))
+(or (not x6895) x6369)
+(or (not x6373) x6372 x6371 x6370 x6369 x6894)
+(or (not x6894) x6373)
+(or (not x6894) (not x6372))
+(or (not x6894) (not x6371))
+(or (not x6894) (not x6370))
+(or (not x6894) (not x6369))
+(or x7213 (not x6894))
+(or x7213 (not x6895))
+(or x6894 x6895 (not x7213))
+(or (not x7214) x6380)
+(or (not x7214) (not x6379))
+(or (not x7214) (not x6378))
+(or (not x7214) x6377)
+(or (not x7214) (not x6376))
+(or (not x6380) x6379 x6378 x6377 (not x6376) x6912)
+(or (not x6912) x6380)
+(or (not x6912) (not x6379))
+(or (not x6912) (not x6378))
+(or (not x6912) (not x6377))
+(or (not x6912) x6376)
+(or (not x6380) x6379 x6378 x6377 x6376 x6911)
+(or (not x6911) x6380)
+(or (not x6911) (not x6379))
+(or (not x6911) (not x6378))
+(or (not x6911) (not x6377))
+(or (not x6911) (not x6376))
+(or x7215 (not x6911))
+(or x7215 (not x6912))
+(or x6911 x6912 (not x7215))
+(or (not x7216) x6387)
+(or (not x7216) (not x6386))
+(or (not x7216) (not x6385))
+(or (not x7216) x6384)
+(or (not x7216) (not x6383))
+(or (not x6387) x6386 x6385 x6384 (not x6383) x6929)
+(or (not x6929) x6387)
+(or (not x6929) (not x6386))
+(or (not x6929) (not x6385))
+(or (not x6929) (not x6384))
+(or (not x6929) x6383)
+(or (not x6387) x6386 x6385 x6384 x6383 x6928)
+(or (not x6928) x6387)
+(or (not x6928) (not x6386))
+(or (not x6928) (not x6385))
+(or (not x6928) (not x6384))
+(or (not x6928) (not x6383))
+(or x7217 (not x6928))
+(or x7217 (not x6929))
+(or x6928 x6929 (not x7217))
+(or (not x7218) x6394)
+(or (not x7218) (not x6393))
+(or (not x7218) (not x6392))
+(or (not x7218) x6391)
+(or (not x7218) (not x6390))
+(or (not x6394) x6393 x6392 x6391 (not x6390) x6946)
+(or (not x6946) x6394)
+(or (not x6946) (not x6393))
+(or (not x6946) (not x6392))
+(or (not x6946) (not x6391))
+(or (not x6946) x6390)
+(or (not x6394) x6393 x6392 x6391 x6390 x6945)
+(or (not x6945) x6394)
+(or (not x6945) (not x6393))
+(or (not x6945) (not x6392))
+(or (not x6945) (not x6391))
+(or (not x6945) (not x6390))
+(or x7219 (not x6945))
+(or x7219 (not x6946))
+(or x6945 x6946 (not x7219))
+(or (not x7220) (not x7221) (not x7222) (not x7223) (not x7224) (not x7225) (not x7226) (not x7227) (not x7228) (not x7229) x7230)
+(or (not x7230) x7220)
+(or (not x7230) x7221)
+(or (not x7230) x7222)
+(or (not x7230) x7223)
+(or (not x7230) x7224)
+(or (not x7230) x7225)
+(or (not x7230) x7226)
+(or (not x7230) x7227)
+(or (not x7230) x7228)
+(or (not x7230) x7229)
+(or x7225 (not x7231))
+(or x7225 (not x7232))
+(or x7225 (not x7233))
+(or x7225 (not x7234))
+(or x7225 (not x7235))
+(or x7225 (not x7240))
+(or x7225 (not x7239))
+(or x7225 x7238)
+(or x7225 x7237)
+(or x7225 (not x7236))
+(or x7231 x7232 x7233 x7234 x7235 x7240 x7239 (not x7238) (not x7237) x7236 (not x7225))
+(or (not x7220) (not x7221) (not x7222) (not x7223) (not x7224) (not x7225) (not x7229) x7241)
+(or (not x7241) x7220)
+(or (not x7241) x7221)
+(or (not x7241) x7222)
+(or (not x7241) x7223)
+(or (not x7241) x7224)
+(or (not x7241) x7225)
+(or (not x7241) x7229)
+(or x7221 (not x7231))
+(or x7221 (not x7240))
+(or x7221 (not x7239))
+(or x7221 (not x7238))
+(or x7221 x7237)
+(or x7221 (not x7236))
+(or x7231 x7240 x7239 x7238 (not x7237) x7236 (not x7221))
+(or (not x7220) (not x7221) (not x7226) (not x7227) (not x7228) (not x7229) x7242)
+(or (not x7242) x7220)
+(or (not x7242) x7221)
+(or (not x7242) x7226)
+(or (not x7242) x7227)
+(or (not x7242) x7228)
+(or (not x7242) x7229)
+(or x7227 (not x7231))
+(or x7227 (not x7232))
+(or x7227 (not x7233))
+(or x7227 (not x7234))
+(or x7227 (not x7235))
+(or x7227 (not x7243))
+(or x7227 (not x7244))
+(or x7227 (not x7240))
+(or x7227 x7239)
+(or x7227 (not x7238))
+(or x7227 (not x7237))
+(or x7227 (not x7236))
+(or x7231 x7232 x7233 x7234 x7235 x7243 x7244 x7240 (not x7239) x7238 x7237 x7236 (not x7227))
+(or x7223 (not x7231))
+(or x7223 (not x7232))
+(or x7223 (not x7233))
+(or x7223 (not x7240))
+(or x7223 (not x7239))
+(or x7223 x7238)
+(or x7223 (not x7237))
+(or x7223 (not x7236))
+(or x7231 x7232 x7233 x7240 x7239 (not x7238) x7237 x7236 (not x7223))
+(or (not x7222) (not x7223) (not x7226) (not x7227) (not x7229) x7245)
+(or (not x7245) x7222)
+(or (not x7245) x7223)
+(or (not x7245) x7226)
+(or (not x7245) x7227)
+(or (not x7245) x7229)
+(or x7246 x7247)
+(or x7246 (not x7248))
+(or (not x7247) x7248 (not x7246))
+(or x7240 (not x7239) x7238 x7237 (not x7236) (not x7249) (not x7246) x7250)
+(or (not x7250) (not x7240))
+(or (not x7250) x7239)
+(or (not x7250) (not x7238))
+(or (not x7250) (not x7237))
+(or (not x7250) x7236)
+(or (not x7250) x7249)
+(or (not x7250) x7246)
+(or x7229 (not x7231))
+(or x7229 (not x7232))
+(or x7229 (not x7233))
+(or x7229 (not x7234))
+(or x7229 (not x7235))
+(or x7229 (not x7243))
+(or x7229 (not x7244))
+(or x7229 (not x7251))
+(or x7229 (not x7250))
+(or x7231 x7232 x7233 x7234 x7235 x7243 x7244 x7251 x7250 (not x7229))
+(or (not x7247) x7248 x7252)
+(or (not x7252) x7247)
+(or (not x7252) (not x7248))
+(or x7228 (not x7231))
+(or x7228 (not x7232))
+(or x7228 (not x7233))
+(or x7228 (not x7234))
+(or x7228 (not x7235))
+(or x7228 (not x7243))
+(or x7228 (not x7244))
+(or x7228 (not x7251))
+(or x7228 (not x7240))
+(or x7228 x7239)
+(or x7228 (not x7238))
+(or x7228 (not x7237))
+(or x7228 x7236)
+(or x7228 x7249)
+(or x7228 (not x7252))
+(or x7231 x7232 x7233 x7234 x7235 x7243 x7244 x7251 x7240 (not x7239) x7238 x7237 (not x7236) (not x7249) x7252 (not x7228))
+(or x7226 (not x7231))
+(or x7226 (not x7232))
+(or x7226 (not x7233))
+(or x7226 (not x7234))
+(or x7226 (not x7235))
+(or x7226 (not x7243))
+(or x7226 (not x7240))
+(or x7226 (not x7239))
+(or x7226 x7238)
+(or x7226 x7237)
+(or x7226 x7236)
+(or x7231 x7232 x7233 x7234 x7235 x7243 x7240 x7239 (not x7238) (not x7237) (not x7236) (not x7226))
+(or x7224 (not x7231))
+(or x7224 (not x7232))
+(or x7224 (not x7233))
+(or x7224 (not x7234))
+(or x7224 (not x7240))
+(or x7224 (not x7239))
+(or x7224 x7238)
+(or x7224 (not x7237))
+(or x7224 x7236)
+(or x7231 x7232 x7233 x7234 x7240 x7239 (not x7238) x7237 (not x7236) (not x7224))
+(or x7222 (not x7231))
+(or x7222 (not x7232))
+(or x7222 (not x7240))
+(or x7222 (not x7239))
+(or x7222 (not x7238))
+(or x7222 x7237)
+(or x7222 x7236)
+(or x7231 x7232 x7240 x7239 x7238 (not x7237) (not x7236) (not x7222))
+(or x7220 (not x7240))
+(or x7220 (not x7239))
+(or x7220 (not x7238))
+(or x7220 (not x7237))
+(or x7220 x7236)
+(or x7240 x7239 x7238 x7237 (not x7236) (not x7220))
+(or (not x7220) (not x7222) (not x7224) (not x7226) (not x7228) (not x7229) x7253)
+(or (not x7253) x7220)
+(or (not x7253) x7222)
+(or (not x7253) x7224)
+(or (not x7253) x7226)
+(or (not x7253) x7228)
+(or (not x7253) x7229)
+(or (not x7254) (not x7255) (not x7256) x7257)
+(or (not x7257) x7254)
+(or (not x7257) x7255)
+(or (not x7257) x7256)
+(or (not x7254) (not x7255) x7256 x7258)
+(or (not x7258) x7254)
+(or (not x7258) x7255)
+(or (not x7258) (not x7256))
+(or (not x7254) x7255 (not x7256) x7259)
+(or (not x7259) x7254)
+(or (not x7259) (not x7255))
+(or (not x7259) x7256)
+(or (not x7254) x7255 x7256 x7260)
+(or (not x7260) x7254)
+(or (not x7260) (not x7255))
+(or (not x7260) (not x7256))
+(or x7261 (not x7262) x7263)
+(or (not x7263) (not x7261))
+(or (not x7263) x7262)
+(or (not x7264) (not x7265) (not x7266) x7267)
+(or (not x7267) x7264)
+(or (not x7267) x7265)
+(or (not x7267) x7266)
+(or x7268 (not x7267))
+(or x7268 (not x7263))
+(or x7267 x7263 (not x7268))
+(or x7261 (not x7265) x7269)
+(or (not x7269) (not x7261))
+(or (not x7269) x7265)
+(or (not x7264) (not x7270) (not x7266) x7271)
+(or (not x7271) x7264)
+(or (not x7271) x7270)
+(or (not x7271) x7266)
+(or x7272 (not x7271))
+(or x7272 (not x7269))
+(or x7271 x7269 (not x7272))
+(or x7261 (not x7270) x7273)
+(or (not x7273) (not x7261))
+(or (not x7273) x7270)
+(or (not x7264) (not x7274) (not x7266) x7275)
+(or (not x7275) x7264)
+(or (not x7275) x7274)
+(or (not x7275) x7266)
+(or x7276 (not x7275))
+(or x7276 (not x7273))
+(or x7275 x7273 (not x7276))
+(or x7261 (not x7274) x7277)
+(or (not x7277) (not x7261))
+(or (not x7277) x7274)
+(or (not x7264) (not x7266) x7278)
+(or (not x7278) x7264)
+(or (not x7278) x7266)
+(or x7279 (not x7278))
+(or x7279 (not x7277))
+(or x7278 x7277 (not x7279))
+(or x7280 (not x7264))
+(or x7280 (not x7261))
+(or x7264 x7261 (not x7280))
+(or (not x7281) (not x7282) (not x7283) (not x7284) (not x7285) x7286)
+(or (not x7286) x7281)
+(or (not x7286) x7282)
+(or (not x7286) x7283)
+(or (not x7286) x7284)
+(or (not x7286) x7285)
+(or (not x7287) (not x7283) (not x7282) (not x7288) (not x7289) x7290)
+(or (not x7290) x7287)
+(or (not x7290) x7283)
+(or (not x7290) x7282)
+(or (not x7290) x7288)
+(or (not x7290) x7289)
+(or (not x7291) (not x7283) (not x7282) (not x7288) (not x7292) x7293)
+(or (not x7293) x7291)
+(or (not x7293) x7283)
+(or (not x7293) x7282)
+(or (not x7293) x7288)
+(or (not x7293) x7292)
+(or (not x7294) (not x7295) (not x7282) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7299)
+(or (not x7299) x7294)
+(or (not x7299) x7295)
+(or (not x7299) x7282)
+(or (not x7299) x7296)
+(or (not x7299) x7297)
+(or (not x7299) x7288)
+(or (not x7299) x7266)
+(or (not x7299) x7298)
+(or x7300 (not x7299))
+(or x7300 (not x7293))
+(or x7300 (not x7290))
+(or x7300 (not x7286))
+(or x7299 x7293 x7290 x7286 (not x7300))
+(or (not x7291) (not x7282) (not x7283) (not x7284) (not x7285) x7301)
+(or (not x7301) x7291)
+(or (not x7301) x7282)
+(or (not x7301) x7283)
+(or (not x7301) x7284)
+(or (not x7301) x7285)
+(or (not x7302) (not x7283) (not x7282) (not x7288) (not x7289) x7303)
+(or (not x7303) x7302)
+(or (not x7303) x7283)
+(or (not x7303) x7282)
+(or (not x7303) x7288)
+(or (not x7303) x7289)
+(or (not x7304) (not x7283) (not x7282) (not x7288) (not x7292) x7305)
+(or (not x7305) x7304)
+(or (not x7305) x7283)
+(or (not x7305) x7282)
+(or (not x7305) x7288)
+(or (not x7305) x7292)
+(or (not x7306) (not x7307) (not x7282) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7308)
+(or (not x7308) x7306)
+(or (not x7308) x7307)
+(or (not x7308) x7282)
+(or (not x7308) x7296)
+(or (not x7308) x7297)
+(or (not x7308) x7288)
+(or (not x7308) x7266)
+(or (not x7308) x7298)
+(or x7309 (not x7308))
+(or x7309 (not x7305))
+(or x7309 (not x7303))
+(or x7309 (not x7301))
+(or x7308 x7305 x7303 x7301 (not x7309))
+(or (not x7304) (not x7282) (not x7283) (not x7284) (not x7285) x7310)
+(or (not x7310) x7304)
+(or (not x7310) x7282)
+(or (not x7310) x7283)
+(or (not x7310) x7284)
+(or (not x7310) x7285)
+(or (not x7311) (not x7283) (not x7282) (not x7288) (not x7289) x7312)
+(or (not x7312) x7311)
+(or (not x7312) x7283)
+(or (not x7312) x7282)
+(or (not x7312) x7288)
+(or (not x7312) x7289)
+(or (not x7313) (not x7283) (not x7282) (not x7288) (not x7292) x7314)
+(or (not x7314) x7313)
+(or (not x7314) x7283)
+(or (not x7314) x7282)
+(or (not x7314) x7288)
+(or (not x7314) x7292)
+(or (not x7313) (not x7315) (not x7282) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7316)
+(or (not x7316) x7313)
+(or (not x7316) x7315)
+(or (not x7316) x7282)
+(or (not x7316) x7296)
+(or (not x7316) x7297)
+(or (not x7316) x7288)
+(or (not x7316) x7266)
+(or (not x7316) x7298)
+(or x7317 (not x7316))
+(or x7317 (not x7314))
+(or x7317 (not x7312))
+(or x7317 (not x7310))
+(or x7316 x7314 x7312 x7310 (not x7317))
+(or (not x7287) (not x7282) (not x7283) (not x7284) (not x7285) x7318)
+(or (not x7318) x7287)
+(or (not x7318) x7282)
+(or (not x7318) x7283)
+(or (not x7318) x7284)
+(or (not x7318) x7285)
+(or (not x7319) (not x7283) (not x7282) (not x7288) (not x7289) x7320)
+(or (not x7320) x7319)
+(or (not x7320) x7283)
+(or (not x7320) x7282)
+(or (not x7320) x7288)
+(or (not x7320) x7289)
+(or (not x7302) (not x7283) (not x7282) (not x7288) (not x7292) x7321)
+(or (not x7321) x7302)
+(or (not x7321) x7283)
+(or (not x7321) x7282)
+(or (not x7321) x7288)
+(or (not x7321) x7292)
+(or (not x7322) (not x7323) (not x7282) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7324)
+(or (not x7324) x7322)
+(or (not x7324) x7323)
+(or (not x7324) x7282)
+(or (not x7324) x7296)
+(or (not x7324) x7297)
+(or (not x7324) x7288)
+(or (not x7324) x7266)
+(or (not x7324) x7298)
+(or x7325 (not x7324))
+(or x7325 (not x7321))
+(or x7325 (not x7320))
+(or x7325 (not x7318))
+(or x7324 x7321 x7320 x7318 (not x7325))
+(or (not x7302) (not x7282) (not x7283) (not x7284) (not x7285) x7326)
+(or (not x7326) x7302)
+(or (not x7326) x7282)
+(or (not x7326) x7283)
+(or (not x7326) x7284)
+(or (not x7326) x7285)
+(or (not x7327) (not x7283) (not x7282) (not x7288) (not x7289) x7328)
+(or (not x7328) x7327)
+(or (not x7328) x7283)
+(or (not x7328) x7282)
+(or (not x7328) x7288)
+(or (not x7328) x7289)
+(or (not x7311) (not x7283) (not x7282) (not x7288) (not x7292) x7329)
+(or (not x7329) x7311)
+(or (not x7329) x7283)
+(or (not x7329) x7282)
+(or (not x7329) x7288)
+(or (not x7329) x7292)
+(or (not x7330) (not x7331) (not x7282) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7332)
+(or (not x7332) x7330)
+(or (not x7332) x7331)
+(or (not x7332) x7282)
+(or (not x7332) x7296)
+(or (not x7332) x7297)
+(or (not x7332) x7288)
+(or (not x7332) x7266)
+(or (not x7332) x7298)
+(or x7333 (not x7332))
+(or x7333 (not x7329))
+(or x7333 (not x7328))
+(or x7333 (not x7326))
+(or x7332 x7329 x7328 x7326 (not x7333))
+(or (not x7311) (not x7282) (not x7283) (not x7284) (not x7285) x7334)
+(or (not x7334) x7311)
+(or (not x7334) x7282)
+(or (not x7334) x7283)
+(or (not x7334) x7284)
+(or (not x7334) x7285)
+(or (not x7335) (not x7283) (not x7282) (not x7288) (not x7289) x7336)
+(or (not x7336) x7335)
+(or (not x7336) x7283)
+(or (not x7336) x7282)
+(or (not x7336) x7288)
+(or (not x7336) x7289)
+(or (not x7337) (not x7283) (not x7282) (not x7288) (not x7292) x7338)
+(or (not x7338) x7337)
+(or (not x7338) x7283)
+(or (not x7338) x7282)
+(or (not x7338) x7288)
+(or (not x7338) x7292)
+(or (not x7337) (not x7339) (not x7282) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7340)
+(or (not x7340) x7337)
+(or (not x7340) x7339)
+(or (not x7340) x7282)
+(or (not x7340) x7296)
+(or (not x7340) x7297)
+(or (not x7340) x7288)
+(or (not x7340) x7266)
+(or (not x7340) x7298)
+(or x7341 (not x7340))
+(or x7341 (not x7338))
+(or x7341 (not x7336))
+(or x7341 (not x7334))
+(or x7340 x7338 x7336 x7334 (not x7341))
+(or (not x7319) (not x7282) (not x7283) (not x7284) (not x7285) x7342)
+(or (not x7342) x7319)
+(or (not x7342) x7282)
+(or (not x7342) x7283)
+(or (not x7342) x7284)
+(or (not x7342) x7285)
+(or (not x7343) (not x7283) (not x7282) (not x7288) (not x7289) x7344)
+(or (not x7344) x7343)
+(or (not x7344) x7283)
+(or (not x7344) x7282)
+(or (not x7344) x7288)
+(or (not x7344) x7289)
+(or (not x7327) (not x7283) (not x7282) (not x7288) (not x7292) x7345)
+(or (not x7345) x7327)
+(or (not x7345) x7283)
+(or (not x7345) x7282)
+(or (not x7345) x7288)
+(or (not x7345) x7292)
+(or (not x7346) (not x7347) (not x7282) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7348)
+(or (not x7348) x7346)
+(or (not x7348) x7347)
+(or (not x7348) x7282)
+(or (not x7348) x7296)
+(or (not x7348) x7297)
+(or (not x7348) x7288)
+(or (not x7348) x7266)
+(or (not x7348) x7298)
+(or x7349 (not x7348))
+(or x7349 (not x7345))
+(or x7349 (not x7344))
+(or x7349 (not x7342))
+(or x7348 x7345 x7344 x7342 (not x7349))
+(or (not x7327) (not x7282) (not x7283) (not x7284) (not x7285) x7350)
+(or (not x7350) x7327)
+(or (not x7350) x7282)
+(or (not x7350) x7283)
+(or (not x7350) x7284)
+(or (not x7350) x7285)
+(or (not x7351) (not x7283) (not x7282) (not x7288) (not x7289) x7352)
+(or (not x7352) x7351)
+(or (not x7352) x7283)
+(or (not x7352) x7282)
+(or (not x7352) x7288)
+(or (not x7352) x7289)
+(or (not x7335) (not x7283) (not x7282) (not x7288) (not x7292) x7353)
+(or (not x7353) x7335)
+(or (not x7353) x7283)
+(or (not x7353) x7282)
+(or (not x7353) x7288)
+(or (not x7353) x7292)
+(or (not x7354) (not x7355) (not x7282) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7356)
+(or (not x7356) x7354)
+(or (not x7356) x7355)
+(or (not x7356) x7282)
+(or (not x7356) x7296)
+(or (not x7356) x7297)
+(or (not x7356) x7288)
+(or (not x7356) x7266)
+(or (not x7356) x7298)
+(or x7357 (not x7356))
+(or x7357 (not x7353))
+(or x7357 (not x7352))
+(or x7357 (not x7350))
+(or x7356 x7353 x7352 x7350 (not x7357))
+(or (not x7335) (not x7282) (not x7283) (not x7284) (not x7285) x7358)
+(or (not x7358) x7335)
+(or (not x7358) x7282)
+(or (not x7358) x7283)
+(or (not x7358) x7284)
+(or (not x7358) x7285)
+(or (not x7359) (not x7283) (not x7282) (not x7288) (not x7289) x7360)
+(or (not x7360) x7359)
+(or (not x7360) x7283)
+(or (not x7360) x7282)
+(or (not x7360) x7288)
+(or (not x7360) x7289)
+(or (not x7361) (not x7283) (not x7282) (not x7288) (not x7292) x7362)
+(or (not x7362) x7361)
+(or (not x7362) x7283)
+(or (not x7362) x7282)
+(or (not x7362) x7288)
+(or (not x7362) x7292)
+(or (not x7361) (not x7363) (not x7282) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7364)
+(or (not x7364) x7361)
+(or (not x7364) x7363)
+(or (not x7364) x7282)
+(or (not x7364) x7296)
+(or (not x7364) x7297)
+(or (not x7364) x7288)
+(or (not x7364) x7266)
+(or (not x7364) x7298)
+(or x7365 (not x7364))
+(or x7365 (not x7362))
+(or x7365 (not x7360))
+(or x7365 (not x7358))
+(or x7364 x7362 x7360 x7358 (not x7365))
+(or (not x7343) (not x7282) (not x7283) (not x7284) (not x7285) x7366)
+(or (not x7366) x7343)
+(or (not x7366) x7282)
+(or (not x7366) x7283)
+(or (not x7366) x7284)
+(or (not x7366) x7285)
+(or (not x7281) (not x7283) (not x7282) (not x7288) (not x7289) x7367)
+(or (not x7367) x7281)
+(or (not x7367) x7283)
+(or (not x7367) x7282)
+(or (not x7367) x7288)
+(or (not x7367) x7289)
+(or (not x7351) (not x7283) (not x7282) (not x7288) (not x7292) x7368)
+(or (not x7368) x7351)
+(or (not x7368) x7283)
+(or (not x7368) x7282)
+(or (not x7368) x7288)
+(or (not x7368) x7292)
+(or (not x7369) (not x7370) (not x7282) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7371)
+(or (not x7371) x7369)
+(or (not x7371) x7370)
+(or (not x7371) x7282)
+(or (not x7371) x7296)
+(or (not x7371) x7297)
+(or (not x7371) x7288)
+(or (not x7371) x7266)
+(or (not x7371) x7298)
+(or x7372 (not x7371))
+(or x7372 (not x7368))
+(or x7372 (not x7367))
+(or x7372 (not x7366))
+(or x7371 x7368 x7367 x7366 (not x7372))
+(or (not x7351) (not x7282) (not x7283) (not x7284) (not x7285) x7373)
+(or (not x7373) x7351)
+(or (not x7373) x7282)
+(or (not x7373) x7283)
+(or (not x7373) x7284)
+(or (not x7373) x7285)
+(or (not x7291) (not x7283) (not x7282) (not x7288) (not x7289) x7374)
+(or (not x7374) x7291)
+(or (not x7374) x7283)
+(or (not x7374) x7282)
+(or (not x7374) x7288)
+(or (not x7374) x7289)
+(or (not x7359) (not x7283) (not x7282) (not x7288) (not x7292) x7375)
+(or (not x7375) x7359)
+(or (not x7375) x7283)
+(or (not x7375) x7282)
+(or (not x7375) x7288)
+(or (not x7375) x7292)
+(or (not x7376) (not x7377) (not x7282) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7378)
+(or (not x7378) x7376)
+(or (not x7378) x7377)
+(or (not x7378) x7282)
+(or (not x7378) x7296)
+(or (not x7378) x7297)
+(or (not x7378) x7288)
+(or (not x7378) x7266)
+(or (not x7378) x7298)
+(or x7379 (not x7378))
+(or x7379 (not x7375))
+(or x7379 (not x7374))
+(or x7379 (not x7373))
+(or x7378 x7375 x7374 x7373 (not x7379))
+(or (not x7359) (not x7282) (not x7283) (not x7284) (not x7285) x7380)
+(or (not x7380) x7359)
+(or (not x7380) x7282)
+(or (not x7380) x7283)
+(or (not x7380) x7284)
+(or (not x7380) x7285)
+(or (not x7304) (not x7283) (not x7282) (not x7288) (not x7289) x7381)
+(or (not x7381) x7304)
+(or (not x7381) x7283)
+(or (not x7381) x7282)
+(or (not x7381) x7288)
+(or (not x7381) x7289)
+(or (not x7382) (not x7283) (not x7282) (not x7288) (not x7292) x7383)
+(or (not x7383) x7382)
+(or (not x7383) x7283)
+(or (not x7383) x7282)
+(or (not x7383) x7288)
+(or (not x7383) x7292)
+(or (not x7382) (not x7384) (not x7282) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7385)
+(or (not x7385) x7382)
+(or (not x7385) x7384)
+(or (not x7385) x7282)
+(or (not x7385) x7296)
+(or (not x7385) x7297)
+(or (not x7385) x7288)
+(or (not x7385) x7266)
+(or (not x7385) x7298)
+(or x7386 (not x7385))
+(or x7386 (not x7383))
+(or x7386 (not x7381))
+(or x7386 (not x7380))
+(or x7385 x7383 x7381 x7380 (not x7386))
+(or x7387 (not x7388))
+(or x7387 (not x7393))
+(or x7388 x7393 (not x7387))
+(or x7394 (not x7395))
+(or x7394 (not x7400))
+(or x7395 x7400 (not x7394))
+(or x7401 (not x7402))
+(or x7401 (not x7407))
+(or x7402 x7407 (not x7401))
+(or x7408 (not x7409))
+(or x7408 (not x7414))
+(or x7409 x7414 (not x7408))
+(or (not x7313) (not x7282) (not x7283) (not x7284) (not x7285) x7415)
+(or (not x7415) x7313)
+(or (not x7415) x7282)
+(or (not x7415) x7283)
+(or (not x7415) x7284)
+(or (not x7415) x7285)
+(or (not x7337) (not x7283) (not x7282) (not x7288) (not x7289) x7416)
+(or (not x7416) x7337)
+(or (not x7416) x7283)
+(or (not x7416) x7282)
+(or (not x7416) x7288)
+(or (not x7416) x7289)
+(or (not x7287) (not x7283) (not x7282) (not x7288) (not x7292) x7417)
+(or (not x7417) x7287)
+(or (not x7417) x7283)
+(or (not x7417) x7282)
+(or (not x7417) x7288)
+(or (not x7417) x7292)
+(or (not x7418) (not x7419) (not x7282) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7420)
+(or (not x7420) x7418)
+(or (not x7420) x7419)
+(or (not x7420) x7282)
+(or (not x7420) x7296)
+(or (not x7420) x7297)
+(or (not x7420) x7288)
+(or (not x7420) x7266)
+(or (not x7420) x7298)
+(or x7421 (not x7420))
+(or x7421 (not x7417))
+(or x7421 (not x7416))
+(or x7421 (not x7415))
+(or x7420 x7417 x7416 x7415 (not x7421))
+(or x7422 (not x7423))
+(or x7422 (not x7428))
+(or x7423 x7428 (not x7422))
+(or x7429 (not x7430))
+(or x7429 (not x7435))
+(or x7430 x7435 (not x7429))
+(or x7436 (not x7437))
+(or x7436 (not x7442))
+(or x7437 x7442 (not x7436))
+(or x7443 (not x7444))
+(or x7443 (not x7449))
+(or x7444 x7449 (not x7443))
+(or (not x7337) (not x7282) (not x7283) (not x7284) (not x7285) x7450)
+(or (not x7450) x7337)
+(or (not x7450) x7282)
+(or (not x7450) x7283)
+(or (not x7450) x7284)
+(or (not x7450) x7285)
+(or (not x7361) (not x7283) (not x7282) (not x7288) (not x7289) x7451)
+(or (not x7451) x7361)
+(or (not x7451) x7283)
+(or (not x7451) x7282)
+(or (not x7451) x7288)
+(or (not x7451) x7289)
+(or (not x7319) (not x7283) (not x7282) (not x7288) (not x7292) x7452)
+(or (not x7452) x7319)
+(or (not x7452) x7283)
+(or (not x7452) x7282)
+(or (not x7452) x7288)
+(or (not x7452) x7292)
+(or (not x7453) (not x7454) (not x7282) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7455)
+(or (not x7455) x7453)
+(or (not x7455) x7454)
+(or (not x7455) x7282)
+(or (not x7455) x7296)
+(or (not x7455) x7297)
+(or (not x7455) x7288)
+(or (not x7455) x7266)
+(or (not x7455) x7298)
+(or x7456 (not x7455))
+(or x7456 (not x7452))
+(or x7456 (not x7451))
+(or x7456 (not x7450))
+(or x7455 x7452 x7451 x7450 (not x7456))
+(or x7457 (not x7458))
+(or x7457 (not x7463))
+(or x7458 x7463 (not x7457))
+(or x7464 (not x7465))
+(or x7464 (not x7470))
+(or x7465 x7470 (not x7464))
+(or x7471 (not x7472))
+(or x7471 (not x7477))
+(or x7472 x7477 (not x7471))
+(or x7478 (not x7479))
+(or x7478 (not x7484))
+(or x7479 x7484 (not x7478))
+(or (not x7361) (not x7282) (not x7283) (not x7284) (not x7285) x7485)
+(or (not x7485) x7361)
+(or (not x7485) x7282)
+(or (not x7485) x7283)
+(or (not x7485) x7284)
+(or (not x7485) x7285)
+(or (not x7382) (not x7283) (not x7282) (not x7288) (not x7289) x7486)
+(or (not x7486) x7382)
+(or (not x7486) x7283)
+(or (not x7486) x7282)
+(or (not x7486) x7288)
+(or (not x7486) x7289)
+(or (not x7343) (not x7283) (not x7282) (not x7288) (not x7292) x7487)
+(or (not x7487) x7343)
+(or (not x7487) x7283)
+(or (not x7487) x7282)
+(or (not x7487) x7288)
+(or (not x7487) x7292)
+(or (not x7488) (not x7489) (not x7282) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7490)
+(or (not x7490) x7488)
+(or (not x7490) x7489)
+(or (not x7490) x7282)
+(or (not x7490) x7296)
+(or (not x7490) x7297)
+(or (not x7490) x7288)
+(or (not x7490) x7266)
+(or (not x7490) x7298)
+(or x7491 (not x7490))
+(or x7491 (not x7487))
+(or x7491 (not x7486))
+(or x7491 (not x7485))
+(or x7490 x7487 x7486 x7485 (not x7491))
+(or x7492 (not x7493))
+(or x7492 (not x7498))
+(or x7493 x7498 (not x7492))
+(or x7499 (not x7500))
+(or x7499 (not x7505))
+(or x7500 x7505 (not x7499))
+(or x7506 (not x7507))
+(or x7506 (not x7512))
+(or x7507 x7512 (not x7506))
+(or x7513 (not x7514))
+(or x7513 (not x7519))
+(or x7514 x7519 (not x7513))
+(or x7304 x7291 x7281 x7520)
+(or (not x7520) (not x7304))
+(or (not x7520) (not x7291))
+(or (not x7520) (not x7281))
+(or x7521 (not x7522))
+(or x7521 (not x7523))
+(or x7521 (not x7524))
+(or x7521 (not x7525))
+(or x7521 (not x7520))
+(or x7522 x7523 x7524 x7525 x7520 (not x7521))
+(or x7311 x7302 x7287 x7526)
+(or (not x7526) (not x7311))
+(or (not x7526) (not x7302))
+(or (not x7526) (not x7287))
+(or x7527 (not x7528))
+(or x7527 (not x7529))
+(or x7527 (not x7530))
+(or x7527 (not x7531))
+(or x7527 (not x7526))
+(or x7528 x7529 x7530 x7531 x7526 (not x7527))
+(or x7335 x7327 x7319 x7532)
+(or (not x7532) (not x7335))
+(or (not x7532) (not x7327))
+(or (not x7532) (not x7319))
+(or x7533 (not x7534))
+(or x7533 (not x7535))
+(or x7533 (not x7536))
+(or x7533 (not x7537))
+(or x7533 (not x7532))
+(or x7534 x7535 x7536 x7537 x7532 (not x7533))
+(or x7359 x7351 x7343 x7538)
+(or (not x7538) (not x7359))
+(or (not x7538) (not x7351))
+(or (not x7538) (not x7343))
+(or x7539 (not x7540))
+(or x7539 (not x7541))
+(or x7539 (not x7542))
+(or x7539 (not x7543))
+(or x7539 (not x7538))
+(or x7540 x7541 x7542 x7543 x7538 (not x7539))
+(or (not x7539) (not x7533) (not x7527) (not x7521) x7544)
+(or (not x7544) x7539)
+(or (not x7544) x7533)
+(or (not x7544) x7527)
+(or (not x7544) x7521)
+(or x7285 (not x7545))
+(or x7285 (not x7546))
+(or x7285 x7288)
+(or x7285 (not x7544))
+(or x7545 x7546 (not x7288) x7544 (not x7285))
+(or (not x7281) (not x7547) (not x7548) x7525)
+(or (not x7525) x7281)
+(or (not x7525) x7547)
+(or (not x7525) x7548)
+(or x7549 (not x7400))
+(or x7549 (not x7393))
+(or x7400 x7393 (not x7549))
+(or (not x7291) (not x7549) x7524)
+(or (not x7524) x7291)
+(or (not x7524) x7549)
+(or x7550 (not x7407))
+(or x7550 (not x7400))
+(or x7550 (not x7393))
+(or x7407 x7400 x7393 (not x7550))
+(or (not x7304) (not x7550) x7523)
+(or (not x7523) x7304)
+(or (not x7523) x7550)
+(or x7551 (not x7295))
+(or x7551 x7291)
+(or x7295 (not x7291) (not x7551))
+(or x7552 (not x7307))
+(or x7552 (not x7295))
+(or x7552 x7304)
+(or x7307 x7295 (not x7304) (not x7552))
+(or x7553 (not x7315))
+(or x7553 (not x7307))
+(or x7553 (not x7295))
+(or x7553 x7313)
+(or x7315 x7307 x7295 (not x7313) (not x7553))
+(or x7281 (not x7553) (not x7552) (not x7551) x7554)
+(or (not x7554) (not x7281))
+(or (not x7554) x7553)
+(or (not x7554) x7552)
+(or (not x7554) x7551)
+(or x7547 (not x7554))
+(or x7547 x7548)
+(or x7547 (not x7555))
+(or x7547 (not x7556))
+(or x7547 x7288)
+(or x7547 (not x7557))
+(or x7547 (not x7558))
+(or x7554 (not x7548) x7555 x7556 (not x7288) x7557 x7558 (not x7547))
+(or (not x7547) (not x7548) x7393)
+(or (not x7393) x7547)
+(or (not x7393) x7548)
+(or x7559 (not x7307))
+(or x7559 x7304)
+(or x7307 (not x7304) (not x7559))
+(or x7560 (not x7315))
+(or x7560 (not x7307))
+(or x7560 x7313)
+(or x7315 x7307 (not x7313) (not x7560))
+(or x7291 (not x7560) (not x7559) x7561)
+(or (not x7561) (not x7291))
+(or (not x7561) x7560)
+(or (not x7561) x7559)
+(or x7562 (not x7561))
+(or x7562 x7295)
+(or x7562 (not x7555))
+(or x7562 (not x7556))
+(or x7562 x7288)
+(or x7562 (not x7557))
+(or x7562 (not x7558))
+(or x7561 (not x7295) x7555 x7556 (not x7288) x7557 x7558 (not x7562))
+(or (not x7562) (not x7295) x7400)
+(or (not x7400) x7562)
+(or (not x7400) x7295)
+(or x7563 (not x7315))
+(or x7563 x7313)
+(or x7315 (not x7313) (not x7563))
+(or x7304 (not x7563) x7564)
+(or (not x7564) (not x7304))
+(or (not x7564) x7563)
+(or x7565 (not x7564))
+(or x7565 x7307)
+(or x7565 (not x7555))
+(or x7565 (not x7556))
+(or x7565 x7288)
+(or x7565 (not x7557))
+(or x7565 (not x7558))
+(or x7564 (not x7307) x7555 x7556 (not x7288) x7557 x7558 (not x7565))
+(or (not x7565) (not x7307) x7407)
+(or (not x7407) x7565)
+(or (not x7407) x7307)
+(or x7566 x7313)
+(or x7566 x7315)
+(or x7566 (not x7555))
+(or x7566 (not x7556))
+(or x7566 x7288)
+(or x7566 (not x7557))
+(or x7566 (not x7558))
+(or (not x7313) (not x7315) x7555 x7556 (not x7288) x7557 x7558 (not x7566))
+(or (not x7566) (not x7315) x7414)
+(or (not x7414) x7566)
+(or (not x7414) x7315)
+(or x7567 (not x7414))
+(or x7567 (not x7407))
+(or x7567 (not x7400))
+(or x7567 (not x7393))
+(or x7414 x7407 x7400 x7393 (not x7567))
+(or (not x7313) (not x7567) x7522)
+(or (not x7522) x7313)
+(or (not x7522) x7567)
+(or x7568 (not x7522))
+(or x7568 (not x7523))
+(or x7568 (not x7524))
+(or x7568 (not x7525))
+(or x7568 x7313)
+(or x7522 x7523 x7524 x7525 (not x7313) (not x7568))
+(or (not x7287) (not x7569) (not x7419) x7531)
+(or (not x7531) x7287)
+(or (not x7531) x7569)
+(or (not x7531) x7419)
+(or x7570 (not x7435))
+(or x7570 (not x7428))
+(or x7435 x7428 (not x7570))
+(or (not x7302) (not x7570) x7530)
+(or (not x7530) x7302)
+(or (not x7530) x7570)
+(or x7571 (not x7442))
+(or x7571 (not x7435))
+(or x7571 (not x7428))
+(or x7442 x7435 x7428 (not x7571))
+(or (not x7311) (not x7571) x7529)
+(or (not x7529) x7311)
+(or (not x7529) x7571)
+(or x7572 (not x7323))
+(or x7572 x7302)
+(or x7323 (not x7302) (not x7572))
+(or x7573 (not x7331))
+(or x7573 (not x7323))
+(or x7573 x7311)
+(or x7331 x7323 (not x7311) (not x7573))
+(or x7574 (not x7339))
+(or x7574 (not x7331))
+(or x7574 (not x7323))
+(or x7574 x7337)
+(or x7339 x7331 x7323 (not x7337) (not x7574))
+(or x7287 (not x7574) (not x7573) (not x7572) x7575)
+(or (not x7575) (not x7287))
+(or (not x7575) x7574)
+(or (not x7575) x7573)
+(or (not x7575) x7572)
+(or x7569 (not x7575))
+(or x7569 x7419)
+(or x7569 (not x7555))
+(or x7569 (not x7556))
+(or x7569 x7288)
+(or x7569 (not x7557))
+(or x7569 (not x7558))
+(or x7575 (not x7419) x7555 x7556 (not x7288) x7557 x7558 (not x7569))
+(or (not x7569) (not x7419) x7428)
+(or (not x7428) x7569)
+(or (not x7428) x7419)
+(or x7576 (not x7331))
+(or x7576 x7311)
+(or x7331 (not x7311) (not x7576))
+(or x7577 (not x7339))
+(or x7577 (not x7331))
+(or x7577 x7337)
+(or x7339 x7331 (not x7337) (not x7577))
+(or x7302 (not x7577) (not x7576) x7578)
+(or (not x7578) (not x7302))
+(or (not x7578) x7577)
+(or (not x7578) x7576)
+(or x7579 (not x7578))
+(or x7579 x7323)
+(or x7579 (not x7555))
+(or x7579 (not x7556))
+(or x7579 x7288)
+(or x7579 (not x7557))
+(or x7579 (not x7558))
+(or x7578 (not x7323) x7555 x7556 (not x7288) x7557 x7558 (not x7579))
+(or (not x7579) (not x7323) x7435)
+(or (not x7435) x7579)
+(or (not x7435) x7323)
+(or x7580 (not x7339))
+(or x7580 x7337)
+(or x7339 (not x7337) (not x7580))
+(or x7311 (not x7580) x7581)
+(or (not x7581) (not x7311))
+(or (not x7581) x7580)
+(or x7582 (not x7581))
+(or x7582 x7331)
+(or x7582 (not x7555))
+(or x7582 (not x7556))
+(or x7582 x7288)
+(or x7582 (not x7557))
+(or x7582 (not x7558))
+(or x7581 (not x7331) x7555 x7556 (not x7288) x7557 x7558 (not x7582))
+(or (not x7582) (not x7331) x7442)
+(or (not x7442) x7582)
+(or (not x7442) x7331)
+(or x7583 x7337)
+(or x7583 x7339)
+(or x7583 (not x7555))
+(or x7583 (not x7556))
+(or x7583 x7288)
+(or x7583 (not x7557))
+(or x7583 (not x7558))
+(or (not x7337) (not x7339) x7555 x7556 (not x7288) x7557 x7558 (not x7583))
+(or (not x7583) (not x7339) x7449)
+(or (not x7449) x7583)
+(or (not x7449) x7339)
+(or x7584 (not x7449))
+(or x7584 (not x7442))
+(or x7584 (not x7435))
+(or x7584 (not x7428))
+(or x7449 x7442 x7435 x7428 (not x7584))
+(or (not x7337) (not x7584) x7528)
+(or (not x7528) x7337)
+(or (not x7528) x7584)
+(or x7585 (not x7528))
+(or x7585 (not x7529))
+(or x7585 (not x7530))
+(or x7585 (not x7531))
+(or x7585 x7337)
+(or x7528 x7529 x7530 x7531 (not x7337) (not x7585))
+(or (not x7319) (not x7586) (not x7454) x7537)
+(or (not x7537) x7319)
+(or (not x7537) x7586)
+(or (not x7537) x7454)
+(or x7587 (not x7470))
+(or x7587 (not x7463))
+(or x7470 x7463 (not x7587))
+(or (not x7327) (not x7587) x7536)
+(or (not x7536) x7327)
+(or (not x7536) x7587)
+(or x7588 (not x7477))
+(or x7588 (not x7470))
+(or x7588 (not x7463))
+(or x7477 x7470 x7463 (not x7588))
+(or (not x7335) (not x7588) x7535)
+(or (not x7535) x7335)
+(or (not x7535) x7588)
+(or x7589 (not x7347))
+(or x7589 x7327)
+(or x7347 (not x7327) (not x7589))
+(or x7590 (not x7355))
+(or x7590 (not x7347))
+(or x7590 x7335)
+(or x7355 x7347 (not x7335) (not x7590))
+(or x7591 (not x7363))
+(or x7591 (not x7355))
+(or x7591 (not x7347))
+(or x7591 x7361)
+(or x7363 x7355 x7347 (not x7361) (not x7591))
+(or x7319 (not x7591) (not x7590) (not x7589) x7592)
+(or (not x7592) (not x7319))
+(or (not x7592) x7591)
+(or (not x7592) x7590)
+(or (not x7592) x7589)
+(or x7586 (not x7592))
+(or x7586 x7454)
+(or x7586 (not x7555))
+(or x7586 (not x7556))
+(or x7586 x7288)
+(or x7586 (not x7557))
+(or x7586 (not x7558))
+(or x7592 (not x7454) x7555 x7556 (not x7288) x7557 x7558 (not x7586))
+(or (not x7586) (not x7454) x7463)
+(or (not x7463) x7586)
+(or (not x7463) x7454)
+(or x7593 (not x7355))
+(or x7593 x7335)
+(or x7355 (not x7335) (not x7593))
+(or x7594 (not x7363))
+(or x7594 (not x7355))
+(or x7594 x7361)
+(or x7363 x7355 (not x7361) (not x7594))
+(or x7327 (not x7594) (not x7593) x7595)
+(or (not x7595) (not x7327))
+(or (not x7595) x7594)
+(or (not x7595) x7593)
+(or x7596 (not x7595))
+(or x7596 x7347)
+(or x7596 (not x7555))
+(or x7596 (not x7556))
+(or x7596 x7288)
+(or x7596 (not x7557))
+(or x7596 (not x7558))
+(or x7595 (not x7347) x7555 x7556 (not x7288) x7557 x7558 (not x7596))
+(or (not x7596) (not x7347) x7470)
+(or (not x7470) x7596)
+(or (not x7470) x7347)
+(or x7597 (not x7363))
+(or x7597 x7361)
+(or x7363 (not x7361) (not x7597))
+(or x7335 (not x7597) x7598)
+(or (not x7598) (not x7335))
+(or (not x7598) x7597)
+(or x7599 (not x7598))
+(or x7599 x7355)
+(or x7599 (not x7555))
+(or x7599 (not x7556))
+(or x7599 x7288)
+(or x7599 (not x7557))
+(or x7599 (not x7558))
+(or x7598 (not x7355) x7555 x7556 (not x7288) x7557 x7558 (not x7599))
+(or (not x7599) (not x7355) x7477)
+(or (not x7477) x7599)
+(or (not x7477) x7355)
+(or x7600 x7361)
+(or x7600 x7363)
+(or x7600 (not x7555))
+(or x7600 (not x7556))
+(or x7600 x7288)
+(or x7600 (not x7557))
+(or x7600 (not x7558))
+(or (not x7361) (not x7363) x7555 x7556 (not x7288) x7557 x7558 (not x7600))
+(or (not x7600) (not x7363) x7484)
+(or (not x7484) x7600)
+(or (not x7484) x7363)
+(or x7601 (not x7484))
+(or x7601 (not x7477))
+(or x7601 (not x7470))
+(or x7601 (not x7463))
+(or x7484 x7477 x7470 x7463 (not x7601))
+(or (not x7361) (not x7601) x7534)
+(or (not x7534) x7361)
+(or (not x7534) x7601)
+(or x7602 (not x7534))
+(or x7602 (not x7535))
+(or x7602 (not x7536))
+(or x7602 (not x7537))
+(or x7602 x7361)
+(or x7534 x7535 x7536 x7537 (not x7361) (not x7602))
+(or (not x7343) (not x7603) (not x7489) x7543)
+(or (not x7543) x7343)
+(or (not x7543) x7603)
+(or (not x7543) x7489)
+(or x7604 (not x7505))
+(or x7604 (not x7498))
+(or x7505 x7498 (not x7604))
+(or (not x7351) (not x7604) x7542)
+(or (not x7542) x7351)
+(or (not x7542) x7604)
+(or x7605 (not x7512))
+(or x7605 (not x7505))
+(or x7605 (not x7498))
+(or x7512 x7505 x7498 (not x7605))
+(or (not x7359) (not x7605) x7541)
+(or (not x7541) x7359)
+(or (not x7541) x7605)
+(or x7606 (not x7370))
+(or x7606 x7351)
+(or x7370 (not x7351) (not x7606))
+(or x7607 (not x7377))
+(or x7607 (not x7370))
+(or x7607 x7359)
+(or x7377 x7370 (not x7359) (not x7607))
+(or x7608 (not x7384))
+(or x7608 (not x7377))
+(or x7608 (not x7370))
+(or x7608 x7382)
+(or x7384 x7377 x7370 (not x7382) (not x7608))
+(or x7343 (not x7608) (not x7607) (not x7606) x7609)
+(or (not x7609) (not x7343))
+(or (not x7609) x7608)
+(or (not x7609) x7607)
+(or (not x7609) x7606)
+(or x7603 (not x7609))
+(or x7603 x7489)
+(or x7603 (not x7555))
+(or x7603 (not x7556))
+(or x7603 x7288)
+(or x7603 (not x7557))
+(or x7603 (not x7558))
+(or x7609 (not x7489) x7555 x7556 (not x7288) x7557 x7558 (not x7603))
+(or (not x7603) (not x7489) x7498)
+(or (not x7498) x7603)
+(or (not x7498) x7489)
+(or x7610 (not x7377))
+(or x7610 x7359)
+(or x7377 (not x7359) (not x7610))
+(or x7611 (not x7384))
+(or x7611 (not x7377))
+(or x7611 x7382)
+(or x7384 x7377 (not x7382) (not x7611))
+(or x7351 (not x7611) (not x7610) x7612)
+(or (not x7612) (not x7351))
+(or (not x7612) x7611)
+(or (not x7612) x7610)
+(or x7613 (not x7612))
+(or x7613 x7370)
+(or x7613 (not x7555))
+(or x7613 (not x7556))
+(or x7613 x7288)
+(or x7613 (not x7557))
+(or x7613 (not x7558))
+(or x7612 (not x7370) x7555 x7556 (not x7288) x7557 x7558 (not x7613))
+(or (not x7613) (not x7370) x7505)
+(or (not x7505) x7613)
+(or (not x7505) x7370)
+(or x7614 (not x7384))
+(or x7614 x7382)
+(or x7384 (not x7382) (not x7614))
+(or x7359 (not x7614) x7615)
+(or (not x7615) (not x7359))
+(or (not x7615) x7614)
+(or x7616 (not x7615))
+(or x7616 x7377)
+(or x7616 (not x7555))
+(or x7616 (not x7556))
+(or x7616 x7288)
+(or x7616 (not x7557))
+(or x7616 (not x7558))
+(or x7615 (not x7377) x7555 x7556 (not x7288) x7557 x7558 (not x7616))
+(or (not x7616) (not x7377) x7512)
+(or (not x7512) x7616)
+(or (not x7512) x7377)
+(or x7617 x7382)
+(or x7617 x7384)
+(or x7617 (not x7555))
+(or x7617 (not x7556))
+(or x7617 x7288)
+(or x7617 (not x7557))
+(or x7617 (not x7558))
+(or (not x7382) (not x7384) x7555 x7556 (not x7288) x7557 x7558 (not x7617))
+(or (not x7617) (not x7384) x7519)
+(or (not x7519) x7617)
+(or (not x7519) x7384)
+(or x7618 (not x7519))
+(or x7618 (not x7512))
+(or x7618 (not x7505))
+(or x7618 (not x7498))
+(or x7519 x7512 x7505 x7498 (not x7618))
+(or (not x7382) (not x7618) x7540)
+(or (not x7540) x7382)
+(or (not x7540) x7618)
+(or x7619 (not x7540))
+(or x7619 (not x7541))
+(or x7619 (not x7542))
+(or x7619 (not x7543))
+(or x7619 x7382)
+(or x7540 x7541 x7542 x7543 (not x7382) (not x7619))
+(or (not x7619) (not x7602) (not x7585) (not x7568) x7620)
+(or (not x7620) x7619)
+(or (not x7620) x7602)
+(or (not x7620) x7585)
+(or (not x7620) x7568)
+(or x7382 x7359 x7351 x7343 x7361 x7335 x7327 x7319 x7337 x7311 x7302 x7287 x7313 x7304 x7291 x7281 x7546)
+(or (not x7546) (not x7382))
+(or (not x7546) (not x7359))
+(or (not x7546) (not x7351))
+(or (not x7546) (not x7343))
+(or (not x7546) (not x7361))
+(or (not x7546) (not x7335))
+(or (not x7546) (not x7327))
+(or (not x7546) (not x7319))
+(or (not x7546) (not x7337))
+(or (not x7546) (not x7311))
+(or (not x7546) (not x7302))
+(or (not x7546) (not x7287))
+(or (not x7546) (not x7313))
+(or (not x7546) (not x7304))
+(or (not x7546) (not x7291))
+(or (not x7546) (not x7281))
+(or x7284 (not x7545))
+(or x7284 (not x7546))
+(or x7284 x7288)
+(or x7284 (not x7620))
+(or x7545 x7546 (not x7288) x7620 (not x7284))
+(or (not x7382) (not x7282) (not x7283) (not x7284) (not x7285) x7621)
+(or (not x7621) x7382)
+(or (not x7621) x7282)
+(or (not x7621) x7283)
+(or (not x7621) x7284)
+(or (not x7621) x7285)
+(or (not x7622) (not x7623) (not x7624) (not x7625) (not x7313) x7626)
+(or (not x7626) x7622)
+(or (not x7626) x7623)
+(or (not x7626) x7624)
+(or (not x7626) x7625)
+(or (not x7626) x7313)
+(or (not x7627) (not x7628) (not x7629) (not x7630) (not x7337) x7631)
+(or (not x7631) x7627)
+(or (not x7631) x7628)
+(or (not x7631) x7629)
+(or (not x7631) x7630)
+(or (not x7631) x7337)
+(or (not x7632) (not x7633) (not x7634) (not x7635) (not x7361) x7636)
+(or (not x7636) x7632)
+(or (not x7636) x7633)
+(or (not x7636) x7634)
+(or (not x7636) x7635)
+(or (not x7636) x7361)
+(or (not x7637) (not x7638) (not x7639) (not x7640) (not x7382) x7641)
+(or (not x7641) x7637)
+(or (not x7641) x7638)
+(or (not x7641) x7639)
+(or (not x7641) x7640)
+(or (not x7641) x7382)
+(or x7289 (not x7641))
+(or x7289 (not x7636))
+(or x7289 (not x7631))
+(or x7289 (not x7626))
+(or x7641 x7636 x7631 x7626 (not x7289))
+(or (not x7313) (not x7283) (not x7282) (not x7288) (not x7289) x7642)
+(or (not x7642) x7313)
+(or (not x7642) x7283)
+(or (not x7642) x7282)
+(or (not x7642) x7288)
+(or (not x7642) x7289)
+(or x7643 (not x7304))
+(or x7643 (not x7291))
+(or x7643 (not x7281))
+(or x7304 x7291 x7281 (not x7643))
+(or x7625 x7281)
+(or x7625 (not x7644))
+(or x7625 x7548)
+(or (not x7281) x7644 (not x7548) (not x7625))
+(or (not x7645) (not x7646) x7647)
+(or (not x7647) x7645)
+(or (not x7647) x7646)
+(or x7624 x7291)
+(or x7624 (not x7647))
+(or (not x7291) x7647 (not x7624))
+(or (not x7648) (not x7645) (not x7646) x7649)
+(or (not x7649) x7648)
+(or (not x7649) x7645)
+(or (not x7649) x7646)
+(or x7623 x7304)
+(or x7623 (not x7649))
+(or (not x7304) x7649 (not x7623))
+(or (not x7650) (not x7548) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7644)
+(or (not x7644) x7650)
+(or (not x7644) x7548)
+(or (not x7644) x7296)
+(or (not x7644) x7297)
+(or (not x7644) x7288)
+(or (not x7644) x7266)
+(or (not x7644) x7298)
+(or x7646 (not x7644))
+(or x7646 x7548)
+(or x7644 (not x7548) (not x7646))
+(or x7307 (not x7304) x7651)
+(or (not x7651) (not x7307))
+(or (not x7651) x7304)
+(or x7315 x7307 (not x7313) x7652)
+(or (not x7652) (not x7315))
+(or (not x7652) (not x7307))
+(or (not x7652) x7313)
+(or x7294 (not x7291))
+(or x7294 (not x7652))
+(or x7294 (not x7651))
+(or x7291 x7652 x7651 (not x7294))
+(or (not x7294) (not x7295) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7653)
+(or (not x7653) x7294)
+(or (not x7653) x7295)
+(or (not x7653) x7296)
+(or (not x7653) x7297)
+(or (not x7653) x7288)
+(or (not x7653) x7266)
+(or (not x7653) x7298)
+(or x7645 (not x7653))
+(or x7645 x7295)
+(or x7653 (not x7295) (not x7645))
+(or x7315 (not x7313) x7654)
+(or (not x7654) (not x7315))
+(or (not x7654) x7313)
+(or x7306 (not x7304))
+(or x7306 (not x7654))
+(or x7304 x7654 (not x7306))
+(or (not x7306) (not x7307) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7655)
+(or (not x7655) x7306)
+(or (not x7655) x7307)
+(or (not x7655) x7296)
+(or (not x7655) x7297)
+(or (not x7655) x7288)
+(or (not x7655) x7266)
+(or (not x7655) x7298)
+(or x7648 (not x7655))
+(or x7648 x7307)
+(or x7655 (not x7307) (not x7648))
+(or (not x7313) (not x7315) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7656)
+(or (not x7656) x7313)
+(or (not x7656) x7315)
+(or (not x7656) x7296)
+(or (not x7656) x7297)
+(or (not x7656) x7288)
+(or (not x7656) x7266)
+(or (not x7656) x7298)
+(or x7657 (not x7656))
+(or x7657 x7315)
+(or x7656 (not x7315) (not x7657))
+(or (not x7657) (not x7648) (not x7645) (not x7646) x7658)
+(or (not x7658) x7657)
+(or (not x7658) x7648)
+(or (not x7658) x7645)
+(or (not x7658) x7646)
+(or x7622 x7313)
+(or x7622 (not x7658))
+(or (not x7313) x7658 (not x7622))
+(or (not x7622) (not x7623) (not x7624) (not x7625) (not x7643) x7659)
+(or (not x7659) x7622)
+(or (not x7659) x7623)
+(or (not x7659) x7624)
+(or (not x7659) x7625)
+(or (not x7659) x7643)
+(or x7660 (not x7311))
+(or x7660 (not x7302))
+(or x7660 (not x7287))
+(or x7311 x7302 x7287 (not x7660))
+(or x7630 x7287)
+(or x7630 (not x7661))
+(or x7630 x7419)
+(or (not x7287) x7661 (not x7419) (not x7630))
+(or (not x7662) (not x7663) x7664)
+(or (not x7664) x7662)
+(or (not x7664) x7663)
+(or x7629 x7302)
+(or x7629 (not x7664))
+(or (not x7302) x7664 (not x7629))
+(or (not x7665) (not x7662) (not x7663) x7666)
+(or (not x7666) x7665)
+(or (not x7666) x7662)
+(or (not x7666) x7663)
+(or x7628 x7311)
+(or x7628 (not x7666))
+(or (not x7311) x7666 (not x7628))
+(or x7323 (not x7302) x7667)
+(or (not x7667) (not x7323))
+(or (not x7667) x7302)
+(or x7331 x7323 (not x7311) x7668)
+(or (not x7668) (not x7331))
+(or (not x7668) (not x7323))
+(or (not x7668) x7311)
+(or x7339 x7331 x7323 (not x7337) x7669)
+(or (not x7669) (not x7339))
+(or (not x7669) (not x7331))
+(or (not x7669) (not x7323))
+(or (not x7669) x7337)
+(or x7418 (not x7287))
+(or x7418 (not x7669))
+(or x7418 (not x7668))
+(or x7418 (not x7667))
+(or x7287 x7669 x7668 x7667 (not x7418))
+(or (not x7418) (not x7419) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7661)
+(or (not x7661) x7418)
+(or (not x7661) x7419)
+(or (not x7661) x7296)
+(or (not x7661) x7297)
+(or (not x7661) x7288)
+(or (not x7661) x7266)
+(or (not x7661) x7298)
+(or x7663 (not x7661))
+(or x7663 x7419)
+(or x7661 (not x7419) (not x7663))
+(or x7331 (not x7311) x7670)
+(or (not x7670) (not x7331))
+(or (not x7670) x7311)
+(or x7339 x7331 (not x7337) x7671)
+(or (not x7671) (not x7339))
+(or (not x7671) (not x7331))
+(or (not x7671) x7337)
+(or x7322 (not x7302))
+(or x7322 (not x7671))
+(or x7322 (not x7670))
+(or x7302 x7671 x7670 (not x7322))
+(or (not x7322) (not x7323) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7672)
+(or (not x7672) x7322)
+(or (not x7672) x7323)
+(or (not x7672) x7296)
+(or (not x7672) x7297)
+(or (not x7672) x7288)
+(or (not x7672) x7266)
+(or (not x7672) x7298)
+(or x7662 (not x7672))
+(or x7662 x7323)
+(or x7672 (not x7323) (not x7662))
+(or x7339 (not x7337) x7673)
+(or (not x7673) (not x7339))
+(or (not x7673) x7337)
+(or x7330 (not x7311))
+(or x7330 (not x7673))
+(or x7311 x7673 (not x7330))
+(or (not x7330) (not x7331) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7674)
+(or (not x7674) x7330)
+(or (not x7674) x7331)
+(or (not x7674) x7296)
+(or (not x7674) x7297)
+(or (not x7674) x7288)
+(or (not x7674) x7266)
+(or (not x7674) x7298)
+(or x7665 (not x7674))
+(or x7665 x7331)
+(or x7674 (not x7331) (not x7665))
+(or (not x7337) (not x7339) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7675)
+(or (not x7675) x7337)
+(or (not x7675) x7339)
+(or (not x7675) x7296)
+(or (not x7675) x7297)
+(or (not x7675) x7288)
+(or (not x7675) x7266)
+(or (not x7675) x7298)
+(or x7676 (not x7675))
+(or x7676 x7339)
+(or x7675 (not x7339) (not x7676))
+(or (not x7676) (not x7665) (not x7662) (not x7663) x7677)
+(or (not x7677) x7676)
+(or (not x7677) x7665)
+(or (not x7677) x7662)
+(or (not x7677) x7663)
+(or x7627 x7337)
+(or x7627 (not x7677))
+(or (not x7337) x7677 (not x7627))
+(or (not x7627) (not x7628) (not x7629) (not x7630) (not x7660) x7678)
+(or (not x7678) x7627)
+(or (not x7678) x7628)
+(or (not x7678) x7629)
+(or (not x7678) x7630)
+(or (not x7678) x7660)
+(or x7679 (not x7335))
+(or x7679 (not x7327))
+(or x7679 (not x7319))
+(or x7335 x7327 x7319 (not x7679))
+(or x7635 x7319)
+(or x7635 (not x7680))
+(or x7635 x7454)
+(or (not x7319) x7680 (not x7454) (not x7635))
+(or (not x7681) (not x7682) x7683)
+(or (not x7683) x7681)
+(or (not x7683) x7682)
+(or x7634 x7327)
+(or x7634 (not x7683))
+(or (not x7327) x7683 (not x7634))
+(or (not x7684) (not x7681) (not x7682) x7685)
+(or (not x7685) x7684)
+(or (not x7685) x7681)
+(or (not x7685) x7682)
+(or x7633 x7335)
+(or x7633 (not x7685))
+(or (not x7335) x7685 (not x7633))
+(or x7347 (not x7327) x7686)
+(or (not x7686) (not x7347))
+(or (not x7686) x7327)
+(or x7355 x7347 (not x7335) x7687)
+(or (not x7687) (not x7355))
+(or (not x7687) (not x7347))
+(or (not x7687) x7335)
+(or x7363 x7355 x7347 (not x7361) x7688)
+(or (not x7688) (not x7363))
+(or (not x7688) (not x7355))
+(or (not x7688) (not x7347))
+(or (not x7688) x7361)
+(or x7453 (not x7319))
+(or x7453 (not x7688))
+(or x7453 (not x7687))
+(or x7453 (not x7686))
+(or x7319 x7688 x7687 x7686 (not x7453))
+(or (not x7453) (not x7454) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7680)
+(or (not x7680) x7453)
+(or (not x7680) x7454)
+(or (not x7680) x7296)
+(or (not x7680) x7297)
+(or (not x7680) x7288)
+(or (not x7680) x7266)
+(or (not x7680) x7298)
+(or x7682 (not x7680))
+(or x7682 x7454)
+(or x7680 (not x7454) (not x7682))
+(or x7355 (not x7335) x7689)
+(or (not x7689) (not x7355))
+(or (not x7689) x7335)
+(or x7363 x7355 (not x7361) x7690)
+(or (not x7690) (not x7363))
+(or (not x7690) (not x7355))
+(or (not x7690) x7361)
+(or x7346 (not x7327))
+(or x7346 (not x7690))
+(or x7346 (not x7689))
+(or x7327 x7690 x7689 (not x7346))
+(or (not x7346) (not x7347) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7691)
+(or (not x7691) x7346)
+(or (not x7691) x7347)
+(or (not x7691) x7296)
+(or (not x7691) x7297)
+(or (not x7691) x7288)
+(or (not x7691) x7266)
+(or (not x7691) x7298)
+(or x7681 (not x7691))
+(or x7681 x7347)
+(or x7691 (not x7347) (not x7681))
+(or x7363 (not x7361) x7692)
+(or (not x7692) (not x7363))
+(or (not x7692) x7361)
+(or x7354 (not x7335))
+(or x7354 (not x7692))
+(or x7335 x7692 (not x7354))
+(or (not x7354) (not x7355) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7693)
+(or (not x7693) x7354)
+(or (not x7693) x7355)
+(or (not x7693) x7296)
+(or (not x7693) x7297)
+(or (not x7693) x7288)
+(or (not x7693) x7266)
+(or (not x7693) x7298)
+(or x7684 (not x7693))
+(or x7684 x7355)
+(or x7693 (not x7355) (not x7684))
+(or (not x7361) (not x7363) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7694)
+(or (not x7694) x7361)
+(or (not x7694) x7363)
+(or (not x7694) x7296)
+(or (not x7694) x7297)
+(or (not x7694) x7288)
+(or (not x7694) x7266)
+(or (not x7694) x7298)
+(or x7695 (not x7694))
+(or x7695 x7363)
+(or x7694 (not x7363) (not x7695))
+(or (not x7695) (not x7684) (not x7681) (not x7682) x7696)
+(or (not x7696) x7695)
+(or (not x7696) x7684)
+(or (not x7696) x7681)
+(or (not x7696) x7682)
+(or x7632 x7361)
+(or x7632 (not x7696))
+(or (not x7361) x7696 (not x7632))
+(or (not x7632) (not x7633) (not x7634) (not x7635) (not x7679) x7697)
+(or (not x7697) x7632)
+(or (not x7697) x7633)
+(or (not x7697) x7634)
+(or (not x7697) x7635)
+(or (not x7697) x7679)
+(or x7698 (not x7359))
+(or x7698 (not x7351))
+(or x7698 (not x7343))
+(or x7359 x7351 x7343 (not x7698))
+(or x7640 x7343)
+(or x7640 (not x7699))
+(or x7640 x7489)
+(or (not x7343) x7699 (not x7489) (not x7640))
+(or (not x7700) (not x7701) x7702)
+(or (not x7702) x7700)
+(or (not x7702) x7701)
+(or x7639 x7351)
+(or x7639 (not x7702))
+(or (not x7351) x7702 (not x7639))
+(or (not x7703) (not x7700) (not x7701) x7704)
+(or (not x7704) x7703)
+(or (not x7704) x7700)
+(or (not x7704) x7701)
+(or x7638 x7359)
+(or x7638 (not x7704))
+(or (not x7359) x7704 (not x7638))
+(or x7370 (not x7351) x7705)
+(or (not x7705) (not x7370))
+(or (not x7705) x7351)
+(or x7377 x7370 (not x7359) x7706)
+(or (not x7706) (not x7377))
+(or (not x7706) (not x7370))
+(or (not x7706) x7359)
+(or x7384 x7377 x7370 (not x7382) x7707)
+(or (not x7707) (not x7384))
+(or (not x7707) (not x7377))
+(or (not x7707) (not x7370))
+(or (not x7707) x7382)
+(or x7488 (not x7343))
+(or x7488 (not x7707))
+(or x7488 (not x7706))
+(or x7488 (not x7705))
+(or x7343 x7707 x7706 x7705 (not x7488))
+(or (not x7488) (not x7489) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7699)
+(or (not x7699) x7488)
+(or (not x7699) x7489)
+(or (not x7699) x7296)
+(or (not x7699) x7297)
+(or (not x7699) x7288)
+(or (not x7699) x7266)
+(or (not x7699) x7298)
+(or x7701 (not x7699))
+(or x7701 x7489)
+(or x7699 (not x7489) (not x7701))
+(or x7377 (not x7359) x7708)
+(or (not x7708) (not x7377))
+(or (not x7708) x7359)
+(or x7384 x7377 (not x7382) x7709)
+(or (not x7709) (not x7384))
+(or (not x7709) (not x7377))
+(or (not x7709) x7382)
+(or x7369 (not x7351))
+(or x7369 (not x7709))
+(or x7369 (not x7708))
+(or x7351 x7709 x7708 (not x7369))
+(or (not x7369) (not x7370) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7710)
+(or (not x7710) x7369)
+(or (not x7710) x7370)
+(or (not x7710) x7296)
+(or (not x7710) x7297)
+(or (not x7710) x7288)
+(or (not x7710) x7266)
+(or (not x7710) x7298)
+(or x7700 (not x7710))
+(or x7700 x7370)
+(or x7710 (not x7370) (not x7700))
+(or x7384 (not x7382) x7711)
+(or (not x7711) (not x7384))
+(or (not x7711) x7382)
+(or x7376 (not x7359))
+(or x7376 (not x7711))
+(or x7359 x7711 (not x7376))
+(or (not x7376) (not x7377) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7712)
+(or (not x7712) x7376)
+(or (not x7712) x7377)
+(or (not x7712) x7296)
+(or (not x7712) x7297)
+(or (not x7712) x7288)
+(or (not x7712) x7266)
+(or (not x7712) x7298)
+(or x7703 (not x7712))
+(or x7703 x7377)
+(or x7712 (not x7377) (not x7703))
+(or (not x7382) (not x7384) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7713)
+(or (not x7713) x7382)
+(or (not x7713) x7384)
+(or (not x7713) x7296)
+(or (not x7713) x7297)
+(or (not x7713) x7288)
+(or (not x7713) x7266)
+(or (not x7713) x7298)
+(or x7714 (not x7713))
+(or x7714 x7384)
+(or x7713 (not x7384) (not x7714))
+(or (not x7714) (not x7703) (not x7700) (not x7701) x7715)
+(or (not x7715) x7714)
+(or (not x7715) x7703)
+(or (not x7715) x7700)
+(or (not x7715) x7701)
+(or x7637 x7382)
+(or x7637 (not x7715))
+(or (not x7382) x7715 (not x7637))
+(or (not x7637) (not x7638) (not x7639) (not x7640) (not x7698) x7716)
+(or (not x7716) x7637)
+(or (not x7716) x7638)
+(or (not x7716) x7639)
+(or (not x7716) x7640)
+(or (not x7716) x7698)
+(or x7292 (not x7716))
+(or x7292 (not x7697))
+(or x7292 (not x7678))
+(or x7292 (not x7659))
+(or x7716 x7697 x7678 x7659 (not x7292))
+(or (not x7717) (not x7718) x7555)
+(or (not x7555) x7717)
+(or (not x7555) x7718)
+(or x7283 (not x7555))
+(or x7283 (not x7556))
+(or x7283 x7288)
+(or x7283 (not x7557))
+(or x7283 (not x7558))
+(or x7555 x7556 (not x7288) x7557 x7558 (not x7283))
+(or (not x7281) (not x7283) (not x7282) (not x7288) (not x7292) x7719)
+(or (not x7719) x7281)
+(or (not x7719) x7283)
+(or (not x7719) x7282)
+(or (not x7719) x7288)
+(or (not x7719) x7292)
+(or x7282 (not x7382))
+(or x7282 (not x7359))
+(or x7282 (not x7351))
+(or x7282 (not x7343))
+(or x7282 (not x7361))
+(or x7282 (not x7335))
+(or x7282 (not x7327))
+(or x7282 (not x7319))
+(or x7282 (not x7337))
+(or x7282 (not x7311))
+(or x7282 (not x7302))
+(or x7282 (not x7287))
+(or x7282 (not x7313))
+(or x7282 (not x7304))
+(or x7282 (not x7291))
+(or x7282 (not x7281))
+(or x7382 x7359 x7351 x7343 x7361 x7335 x7327 x7319 x7337 x7311 x7302 x7287 x7313 x7304 x7291 x7281 (not x7282))
+(or x7295 (not x7291) x7720)
+(or (not x7720) (not x7295))
+(or (not x7720) x7291)
+(or x7307 x7295 (not x7304) x7721)
+(or (not x7721) (not x7307))
+(or (not x7721) (not x7295))
+(or (not x7721) x7304)
+(or x7315 x7307 x7295 (not x7313) x7722)
+(or (not x7722) (not x7315))
+(or (not x7722) (not x7307))
+(or (not x7722) (not x7295))
+(or (not x7722) x7313)
+(or x7650 (not x7281))
+(or x7650 (not x7722))
+(or x7650 (not x7721))
+(or x7650 (not x7720))
+(or x7281 x7722 x7721 x7720 (not x7650))
+(or (not x7650) (not x7548) (not x7282) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7723)
+(or (not x7723) x7650)
+(or (not x7723) x7548)
+(or (not x7723) x7282)
+(or (not x7723) x7296)
+(or (not x7723) x7297)
+(or (not x7723) x7288)
+(or (not x7723) x7266)
+(or (not x7723) x7298)
+(or x7724 (not x7723))
+(or x7724 (not x7719))
+(or x7724 (not x7642))
+(or x7724 (not x7621))
+(or x7724 (not x7546))
+(or x7723 x7719 x7642 x7621 x7546 (not x7724))
+(or (not x7725) (not x7726) (not x7727) (not x7728) (not x7729) x7730)
+(or (not x7730) x7725)
+(or (not x7730) x7726)
+(or (not x7730) x7727)
+(or (not x7730) x7728)
+(or (not x7730) x7729)
+(or (not x7731) (not x7727) (not x7726) (not x7288) (not x7732) x7733)
+(or (not x7733) x7731)
+(or (not x7733) x7727)
+(or (not x7733) x7726)
+(or (not x7733) x7288)
+(or (not x7733) x7732)
+(or (not x7734) (not x7727) (not x7726) (not x7288) (not x7735) x7736)
+(or (not x7736) x7734)
+(or (not x7736) x7727)
+(or (not x7736) x7726)
+(or (not x7736) x7288)
+(or (not x7736) x7735)
+(or (not x7737) (not x7738) (not x7726) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x7740)
+(or (not x7740) x7737)
+(or (not x7740) x7738)
+(or (not x7740) x7726)
+(or (not x7740) x7288)
+(or (not x7740) x7266)
+(or (not x7740) x7298)
+(or (not x7740) x7718)
+(or (not x7740) x7739)
+(or x7741 (not x7740))
+(or x7741 (not x7736))
+(or x7741 (not x7733))
+(or x7741 (not x7730))
+(or x7740 x7736 x7733 x7730 (not x7741))
+(or (not x7734) (not x7726) (not x7727) (not x7728) (not x7729) x7742)
+(or (not x7742) x7734)
+(or (not x7742) x7726)
+(or (not x7742) x7727)
+(or (not x7742) x7728)
+(or (not x7742) x7729)
+(or (not x7743) (not x7727) (not x7726) (not x7288) (not x7732) x7744)
+(or (not x7744) x7743)
+(or (not x7744) x7727)
+(or (not x7744) x7726)
+(or (not x7744) x7288)
+(or (not x7744) x7732)
+(or (not x7745) (not x7727) (not x7726) (not x7288) (not x7735) x7746)
+(or (not x7746) x7745)
+(or (not x7746) x7727)
+(or (not x7746) x7726)
+(or (not x7746) x7288)
+(or (not x7746) x7735)
+(or (not x7747) (not x7748) (not x7726) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x7749)
+(or (not x7749) x7747)
+(or (not x7749) x7748)
+(or (not x7749) x7726)
+(or (not x7749) x7288)
+(or (not x7749) x7266)
+(or (not x7749) x7298)
+(or (not x7749) x7718)
+(or (not x7749) x7739)
+(or x7750 (not x7749))
+(or x7750 (not x7746))
+(or x7750 (not x7744))
+(or x7750 (not x7742))
+(or x7749 x7746 x7744 x7742 (not x7750))
+(or (not x7745) (not x7726) (not x7727) (not x7728) (not x7729) x7751)
+(or (not x7751) x7745)
+(or (not x7751) x7726)
+(or (not x7751) x7727)
+(or (not x7751) x7728)
+(or (not x7751) x7729)
+(or (not x7752) (not x7727) (not x7726) (not x7288) (not x7732) x7753)
+(or (not x7753) x7752)
+(or (not x7753) x7727)
+(or (not x7753) x7726)
+(or (not x7753) x7288)
+(or (not x7753) x7732)
+(or (not x7754) (not x7727) (not x7726) (not x7288) (not x7735) x7755)
+(or (not x7755) x7754)
+(or (not x7755) x7727)
+(or (not x7755) x7726)
+(or (not x7755) x7288)
+(or (not x7755) x7735)
+(or (not x7754) (not x7756) (not x7726) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x7757)
+(or (not x7757) x7754)
+(or (not x7757) x7756)
+(or (not x7757) x7726)
+(or (not x7757) x7288)
+(or (not x7757) x7266)
+(or (not x7757) x7298)
+(or (not x7757) x7718)
+(or (not x7757) x7739)
+(or x7758 (not x7757))
+(or x7758 (not x7755))
+(or x7758 (not x7753))
+(or x7758 (not x7751))
+(or x7757 x7755 x7753 x7751 (not x7758))
+(or (not x7731) (not x7726) (not x7727) (not x7728) (not x7729) x7759)
+(or (not x7759) x7731)
+(or (not x7759) x7726)
+(or (not x7759) x7727)
+(or (not x7759) x7728)
+(or (not x7759) x7729)
+(or (not x7760) (not x7727) (not x7726) (not x7288) (not x7732) x7761)
+(or (not x7761) x7760)
+(or (not x7761) x7727)
+(or (not x7761) x7726)
+(or (not x7761) x7288)
+(or (not x7761) x7732)
+(or (not x7743) (not x7727) (not x7726) (not x7288) (not x7735) x7762)
+(or (not x7762) x7743)
+(or (not x7762) x7727)
+(or (not x7762) x7726)
+(or (not x7762) x7288)
+(or (not x7762) x7735)
+(or (not x7763) (not x7764) (not x7726) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x7765)
+(or (not x7765) x7763)
+(or (not x7765) x7764)
+(or (not x7765) x7726)
+(or (not x7765) x7288)
+(or (not x7765) x7266)
+(or (not x7765) x7298)
+(or (not x7765) x7718)
+(or (not x7765) x7739)
+(or x7766 (not x7765))
+(or x7766 (not x7762))
+(or x7766 (not x7761))
+(or x7766 (not x7759))
+(or x7765 x7762 x7761 x7759 (not x7766))
+(or (not x7743) (not x7726) (not x7727) (not x7728) (not x7729) x7767)
+(or (not x7767) x7743)
+(or (not x7767) x7726)
+(or (not x7767) x7727)
+(or (not x7767) x7728)
+(or (not x7767) x7729)
+(or (not x7768) (not x7727) (not x7726) (not x7288) (not x7732) x7769)
+(or (not x7769) x7768)
+(or (not x7769) x7727)
+(or (not x7769) x7726)
+(or (not x7769) x7288)
+(or (not x7769) x7732)
+(or (not x7752) (not x7727) (not x7726) (not x7288) (not x7735) x7770)
+(or (not x7770) x7752)
+(or (not x7770) x7727)
+(or (not x7770) x7726)
+(or (not x7770) x7288)
+(or (not x7770) x7735)
+(or (not x7771) (not x7772) (not x7726) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x7773)
+(or (not x7773) x7771)
+(or (not x7773) x7772)
+(or (not x7773) x7726)
+(or (not x7773) x7288)
+(or (not x7773) x7266)
+(or (not x7773) x7298)
+(or (not x7773) x7718)
+(or (not x7773) x7739)
+(or x7774 (not x7773))
+(or x7774 (not x7770))
+(or x7774 (not x7769))
+(or x7774 (not x7767))
+(or x7773 x7770 x7769 x7767 (not x7774))
+(or (not x7752) (not x7726) (not x7727) (not x7728) (not x7729) x7775)
+(or (not x7775) x7752)
+(or (not x7775) x7726)
+(or (not x7775) x7727)
+(or (not x7775) x7728)
+(or (not x7775) x7729)
+(or (not x7776) (not x7727) (not x7726) (not x7288) (not x7732) x7777)
+(or (not x7777) x7776)
+(or (not x7777) x7727)
+(or (not x7777) x7726)
+(or (not x7777) x7288)
+(or (not x7777) x7732)
+(or (not x7778) (not x7727) (not x7726) (not x7288) (not x7735) x7779)
+(or (not x7779) x7778)
+(or (not x7779) x7727)
+(or (not x7779) x7726)
+(or (not x7779) x7288)
+(or (not x7779) x7735)
+(or (not x7778) (not x7780) (not x7726) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x7781)
+(or (not x7781) x7778)
+(or (not x7781) x7780)
+(or (not x7781) x7726)
+(or (not x7781) x7288)
+(or (not x7781) x7266)
+(or (not x7781) x7298)
+(or (not x7781) x7718)
+(or (not x7781) x7739)
+(or x7782 (not x7781))
+(or x7782 (not x7779))
+(or x7782 (not x7777))
+(or x7782 (not x7775))
+(or x7781 x7779 x7777 x7775 (not x7782))
+(or (not x7778) (not x7726) (not x7727) (not x7728) (not x7729) x7783)
+(or (not x7783) x7778)
+(or (not x7783) x7726)
+(or (not x7783) x7727)
+(or (not x7783) x7728)
+(or (not x7783) x7729)
+(or (not x7784) (not x7727) (not x7726) (not x7288) (not x7732) x7785)
+(or (not x7785) x7784)
+(or (not x7785) x7727)
+(or (not x7785) x7726)
+(or (not x7785) x7288)
+(or (not x7785) x7732)
+(or (not x7760) (not x7727) (not x7726) (not x7288) (not x7735) x7786)
+(or (not x7786) x7760)
+(or (not x7786) x7727)
+(or (not x7786) x7726)
+(or (not x7786) x7288)
+(or (not x7786) x7735)
+(or (not x7787) (not x7788) (not x7726) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x7789)
+(or (not x7789) x7787)
+(or (not x7789) x7788)
+(or (not x7789) x7726)
+(or (not x7789) x7288)
+(or (not x7789) x7266)
+(or (not x7789) x7298)
+(or (not x7789) x7718)
+(or (not x7789) x7739)
+(or x7790 (not x7789))
+(or x7790 (not x7786))
+(or x7790 (not x7785))
+(or x7790 (not x7783))
+(or x7789 x7786 x7785 x7783 (not x7790))
+(or (not x7760) (not x7726) (not x7727) (not x7728) (not x7729) x7791)
+(or (not x7791) x7760)
+(or (not x7791) x7726)
+(or (not x7791) x7727)
+(or (not x7791) x7728)
+(or (not x7791) x7729)
+(or (not x7792) (not x7727) (not x7726) (not x7288) (not x7732) x7793)
+(or (not x7793) x7792)
+(or (not x7793) x7727)
+(or (not x7793) x7726)
+(or (not x7793) x7288)
+(or (not x7793) x7732)
+(or (not x7768) (not x7727) (not x7726) (not x7288) (not x7735) x7794)
+(or (not x7794) x7768)
+(or (not x7794) x7727)
+(or (not x7794) x7726)
+(or (not x7794) x7288)
+(or (not x7794) x7735)
+(or (not x7795) (not x7796) (not x7726) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x7797)
+(or (not x7797) x7795)
+(or (not x7797) x7796)
+(or (not x7797) x7726)
+(or (not x7797) x7288)
+(or (not x7797) x7266)
+(or (not x7797) x7298)
+(or (not x7797) x7718)
+(or (not x7797) x7739)
+(or x7798 (not x7797))
+(or x7798 (not x7794))
+(or x7798 (not x7793))
+(or x7798 (not x7791))
+(or x7797 x7794 x7793 x7791 (not x7798))
+(or (not x7768) (not x7726) (not x7727) (not x7728) (not x7729) x7799)
+(or (not x7799) x7768)
+(or (not x7799) x7726)
+(or (not x7799) x7727)
+(or (not x7799) x7728)
+(or (not x7799) x7729)
+(or (not x7800) (not x7727) (not x7726) (not x7288) (not x7732) x7801)
+(or (not x7801) x7800)
+(or (not x7801) x7727)
+(or (not x7801) x7726)
+(or (not x7801) x7288)
+(or (not x7801) x7732)
+(or (not x7776) (not x7727) (not x7726) (not x7288) (not x7735) x7802)
+(or (not x7802) x7776)
+(or (not x7802) x7727)
+(or (not x7802) x7726)
+(or (not x7802) x7288)
+(or (not x7802) x7735)
+(or (not x7803) (not x7804) (not x7726) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x7805)
+(or (not x7805) x7803)
+(or (not x7805) x7804)
+(or (not x7805) x7726)
+(or (not x7805) x7288)
+(or (not x7805) x7266)
+(or (not x7805) x7298)
+(or (not x7805) x7718)
+(or (not x7805) x7739)
+(or x7806 (not x7805))
+(or x7806 (not x7802))
+(or x7806 (not x7801))
+(or x7806 (not x7799))
+(or x7805 x7802 x7801 x7799 (not x7806))
+(or (not x7776) (not x7726) (not x7727) (not x7728) (not x7729) x7807)
+(or (not x7807) x7776)
+(or (not x7807) x7726)
+(or (not x7807) x7727)
+(or (not x7807) x7728)
+(or (not x7807) x7729)
+(or (not x7808) (not x7727) (not x7726) (not x7288) (not x7732) x7809)
+(or (not x7809) x7808)
+(or (not x7809) x7727)
+(or (not x7809) x7726)
+(or (not x7809) x7288)
+(or (not x7809) x7732)
+(or (not x7784) (not x7727) (not x7726) (not x7288) (not x7735) x7810)
+(or (not x7810) x7784)
+(or (not x7810) x7727)
+(or (not x7810) x7726)
+(or (not x7810) x7288)
+(or (not x7810) x7735)
+(or (not x7784) (not x7811) (not x7726) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x7812)
+(or (not x7812) x7784)
+(or (not x7812) x7811)
+(or (not x7812) x7726)
+(or (not x7812) x7288)
+(or (not x7812) x7266)
+(or (not x7812) x7298)
+(or (not x7812) x7718)
+(or (not x7812) x7739)
+(or x7813 (not x7812))
+(or x7813 (not x7810))
+(or x7813 (not x7809))
+(or x7813 (not x7807))
+(or x7812 x7810 x7809 x7807 (not x7813))
+(or (not x7792) (not x7726) (not x7727) (not x7728) (not x7729) x7814)
+(or (not x7814) x7792)
+(or (not x7814) x7726)
+(or (not x7814) x7727)
+(or (not x7814) x7728)
+(or (not x7814) x7729)
+(or (not x7725) (not x7727) (not x7726) (not x7288) (not x7732) x7815)
+(or (not x7815) x7725)
+(or (not x7815) x7727)
+(or (not x7815) x7726)
+(or (not x7815) x7288)
+(or (not x7815) x7732)
+(or (not x7800) (not x7727) (not x7726) (not x7288) (not x7735) x7816)
+(or (not x7816) x7800)
+(or (not x7816) x7727)
+(or (not x7816) x7726)
+(or (not x7816) x7288)
+(or (not x7816) x7735)
+(or (not x7817) (not x7818) (not x7726) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x7819)
+(or (not x7819) x7817)
+(or (not x7819) x7818)
+(or (not x7819) x7726)
+(or (not x7819) x7288)
+(or (not x7819) x7266)
+(or (not x7819) x7298)
+(or (not x7819) x7718)
+(or (not x7819) x7739)
+(or x7820 (not x7819))
+(or x7820 (not x7816))
+(or x7820 (not x7815))
+(or x7820 (not x7814))
+(or x7819 x7816 x7815 x7814 (not x7820))
+(or (not x7800) (not x7726) (not x7727) (not x7728) (not x7729) x7821)
+(or (not x7821) x7800)
+(or (not x7821) x7726)
+(or (not x7821) x7727)
+(or (not x7821) x7728)
+(or (not x7821) x7729)
+(or (not x7734) (not x7727) (not x7726) (not x7288) (not x7732) x7822)
+(or (not x7822) x7734)
+(or (not x7822) x7727)
+(or (not x7822) x7726)
+(or (not x7822) x7288)
+(or (not x7822) x7732)
+(or (not x7808) (not x7727) (not x7726) (not x7288) (not x7735) x7823)
+(or (not x7823) x7808)
+(or (not x7823) x7727)
+(or (not x7823) x7726)
+(or (not x7823) x7288)
+(or (not x7823) x7735)
+(or (not x7824) (not x7825) (not x7726) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x7826)
+(or (not x7826) x7824)
+(or (not x7826) x7825)
+(or (not x7826) x7726)
+(or (not x7826) x7288)
+(or (not x7826) x7266)
+(or (not x7826) x7298)
+(or (not x7826) x7718)
+(or (not x7826) x7739)
+(or x7827 (not x7826))
+(or x7827 (not x7823))
+(or x7827 (not x7822))
+(or x7827 (not x7821))
+(or x7826 x7823 x7822 x7821 (not x7827))
+(or (not x7808) (not x7726) (not x7727) (not x7728) (not x7729) x7828)
+(or (not x7828) x7808)
+(or (not x7828) x7726)
+(or (not x7828) x7727)
+(or (not x7828) x7728)
+(or (not x7828) x7729)
+(or (not x7745) (not x7727) (not x7726) (not x7288) (not x7732) x7829)
+(or (not x7829) x7745)
+(or (not x7829) x7727)
+(or (not x7829) x7726)
+(or (not x7829) x7288)
+(or (not x7829) x7732)
+(or (not x7830) (not x7727) (not x7726) (not x7288) (not x7735) x7831)
+(or (not x7831) x7830)
+(or (not x7831) x7727)
+(or (not x7831) x7726)
+(or (not x7831) x7288)
+(or (not x7831) x7735)
+(or (not x7830) (not x7832) (not x7726) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x7833)
+(or (not x7833) x7830)
+(or (not x7833) x7832)
+(or (not x7833) x7726)
+(or (not x7833) x7288)
+(or (not x7833) x7266)
+(or (not x7833) x7298)
+(or (not x7833) x7718)
+(or (not x7833) x7739)
+(or x7834 (not x7833))
+(or x7834 (not x7831))
+(or x7834 (not x7829))
+(or x7834 (not x7828))
+(or x7833 x7831 x7829 x7828 (not x7834))
+(or (not x7754) (not x7726) (not x7727) (not x7728) (not x7729) x7835)
+(or (not x7835) x7754)
+(or (not x7835) x7726)
+(or (not x7835) x7727)
+(or (not x7835) x7728)
+(or (not x7835) x7729)
+(or (not x7778) (not x7727) (not x7726) (not x7288) (not x7732) x7836)
+(or (not x7836) x7778)
+(or (not x7836) x7727)
+(or (not x7836) x7726)
+(or (not x7836) x7288)
+(or (not x7836) x7732)
+(or (not x7731) (not x7727) (not x7726) (not x7288) (not x7735) x7837)
+(or (not x7837) x7731)
+(or (not x7837) x7727)
+(or (not x7837) x7726)
+(or (not x7837) x7288)
+(or (not x7837) x7735)
+(or (not x7838) (not x7839) (not x7726) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x7840)
+(or (not x7840) x7838)
+(or (not x7840) x7839)
+(or (not x7840) x7726)
+(or (not x7840) x7288)
+(or (not x7840) x7266)
+(or (not x7840) x7298)
+(or (not x7840) x7718)
+(or (not x7840) x7739)
+(or x7841 (not x7840))
+(or x7841 (not x7837))
+(or x7841 (not x7836))
+(or x7841 (not x7835))
+(or x7840 x7837 x7836 x7835 (not x7841))
+(or (not x7784) (not x7726) (not x7727) (not x7728) (not x7729) x7842)
+(or (not x7842) x7784)
+(or (not x7842) x7726)
+(or (not x7842) x7727)
+(or (not x7842) x7728)
+(or (not x7842) x7729)
+(or (not x7830) (not x7727) (not x7726) (not x7288) (not x7732) x7843)
+(or (not x7843) x7830)
+(or (not x7843) x7727)
+(or (not x7843) x7726)
+(or (not x7843) x7288)
+(or (not x7843) x7732)
+(or (not x7792) (not x7727) (not x7726) (not x7288) (not x7735) x7844)
+(or (not x7844) x7792)
+(or (not x7844) x7727)
+(or (not x7844) x7726)
+(or (not x7844) x7288)
+(or (not x7844) x7735)
+(or (not x7845) (not x7846) (not x7726) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x7847)
+(or (not x7847) x7845)
+(or (not x7847) x7846)
+(or (not x7847) x7726)
+(or (not x7847) x7288)
+(or (not x7847) x7266)
+(or (not x7847) x7298)
+(or (not x7847) x7718)
+(or (not x7847) x7739)
+(or x7848 (not x7847))
+(or x7848 (not x7844))
+(or x7848 (not x7843))
+(or x7848 (not x7842))
+(or x7847 x7844 x7843 x7842 (not x7848))
+(or x7849 (not x7850))
+(or x7849 (not x7855))
+(or x7850 x7855 (not x7849))
+(or x7856 (not x7857))
+(or x7856 (not x7862))
+(or x7857 x7862 (not x7856))
+(or x7863 (not x7864))
+(or x7863 (not x7869))
+(or x7864 x7869 (not x7863))
+(or x7870 (not x7871))
+(or x7870 (not x7876))
+(or x7871 x7876 (not x7870))
+(or x7745 x7734 x7725 x7877)
+(or (not x7877) (not x7745))
+(or (not x7877) (not x7734))
+(or (not x7877) (not x7725))
+(or x7878 (not x7879))
+(or x7878 (not x7880))
+(or x7878 (not x7881))
+(or x7878 (not x7882))
+(or x7878 (not x7877))
+(or x7879 x7880 x7881 x7882 x7877 (not x7878))
+(or x7752 x7743 x7731 x7883)
+(or (not x7883) (not x7752))
+(or (not x7883) (not x7743))
+(or (not x7883) (not x7731))
+(or x7884 (not x7885))
+(or x7884 (not x7886))
+(or x7884 (not x7887))
+(or x7884 (not x7888))
+(or x7884 (not x7883))
+(or x7885 x7886 x7887 x7888 x7883 (not x7884))
+(or x7776 x7768 x7760 x7889)
+(or (not x7889) (not x7776))
+(or (not x7889) (not x7768))
+(or (not x7889) (not x7760))
+(or x7890 (not x7891))
+(or x7890 (not x7892))
+(or x7890 (not x7893))
+(or x7890 (not x7894))
+(or x7890 (not x7889))
+(or x7891 x7892 x7893 x7894 x7889 (not x7890))
+(or x7808 x7800 x7792 x7895)
+(or (not x7895) (not x7808))
+(or (not x7895) (not x7800))
+(or (not x7895) (not x7792))
+(or x7896 (not x7897))
+(or x7896 (not x7898))
+(or x7896 (not x7899))
+(or x7896 (not x7900))
+(or x7896 (not x7895))
+(or x7897 x7898 x7899 x7900 x7895 (not x7896))
+(or (not x7896) (not x7890) (not x7884) (not x7878) x7901)
+(or (not x7901) x7896)
+(or (not x7901) x7890)
+(or (not x7901) x7884)
+(or (not x7901) x7878)
+(or x7729 (not x7902))
+(or x7729 (not x7903))
+(or x7729 x7288)
+(or x7729 (not x7901))
+(or x7902 x7903 (not x7288) x7901 (not x7729))
+(or (not x7725) (not x7904) (not x7905) x7882)
+(or (not x7882) x7725)
+(or (not x7882) x7904)
+(or (not x7882) x7905)
+(or x7906 (not x7907))
+(or x7906 (not x7908))
+(or x7907 x7908 (not x7906))
+(or (not x7734) (not x7906) x7881)
+(or (not x7881) x7734)
+(or (not x7881) x7906)
+(or x7909 (not x7910))
+(or x7909 (not x7907))
+(or x7909 (not x7908))
+(or x7910 x7907 x7908 (not x7909))
+(or (not x7745) (not x7909) x7880)
+(or (not x7880) x7745)
+(or (not x7880) x7909)
+(or x7911 (not x7738))
+(or x7911 x7734)
+(or x7738 (not x7734) (not x7911))
+(or x7912 (not x7748))
+(or x7912 (not x7738))
+(or x7912 x7745)
+(or x7748 x7738 (not x7745) (not x7912))
+(or x7913 (not x7756))
+(or x7913 (not x7748))
+(or x7913 (not x7738))
+(or x7913 x7754)
+(or x7756 x7748 x7738 (not x7754) (not x7913))
+(or x7725 (not x7913) (not x7912) (not x7911) x7914)
+(or (not x7914) (not x7725))
+(or (not x7914) x7913)
+(or (not x7914) x7912)
+(or (not x7914) x7911)
+(or x7904 (not x7914))
+(or x7904 x7905)
+(or x7904 x7288)
+(or x7904 (not x7557))
+(or x7904 (not x7558))
+(or x7904 (not x7915))
+(or x7904 (not x7916))
+(or x7914 (not x7905) (not x7288) x7557 x7558 x7915 x7916 (not x7904))
+(or (not x7904) (not x7905) x7908)
+(or (not x7908) x7904)
+(or (not x7908) x7905)
+(or x7917 (not x7748))
+(or x7917 x7745)
+(or x7748 (not x7745) (not x7917))
+(or x7918 (not x7756))
+(or x7918 (not x7748))
+(or x7918 x7754)
+(or x7756 x7748 (not x7754) (not x7918))
+(or x7734 (not x7918) (not x7917) x7919)
+(or (not x7919) (not x7734))
+(or (not x7919) x7918)
+(or (not x7919) x7917)
+(or x7920 (not x7919))
+(or x7920 x7738)
+(or x7920 x7288)
+(or x7920 (not x7557))
+(or x7920 (not x7558))
+(or x7920 (not x7915))
+(or x7920 (not x7916))
+(or x7919 (not x7738) (not x7288) x7557 x7558 x7915 x7916 (not x7920))
+(or (not x7920) (not x7738) x7907)
+(or (not x7907) x7920)
+(or (not x7907) x7738)
+(or x7921 (not x7756))
+(or x7921 x7754)
+(or x7756 (not x7754) (not x7921))
+(or x7745 (not x7921) x7922)
+(or (not x7922) (not x7745))
+(or (not x7922) x7921)
+(or x7923 (not x7922))
+(or x7923 x7748)
+(or x7923 x7288)
+(or x7923 (not x7557))
+(or x7923 (not x7558))
+(or x7923 (not x7915))
+(or x7923 (not x7916))
+(or x7922 (not x7748) (not x7288) x7557 x7558 x7915 x7916 (not x7923))
+(or (not x7923) (not x7748) x7910)
+(or (not x7910) x7923)
+(or (not x7910) x7748)
+(or x7924 x7754)
+(or x7924 x7756)
+(or x7924 x7288)
+(or x7924 (not x7557))
+(or x7924 (not x7558))
+(or x7924 (not x7915))
+(or x7924 (not x7916))
+(or (not x7754) (not x7756) (not x7288) x7557 x7558 x7915 x7916 (not x7924))
+(or (not x7924) (not x7756) x7925)
+(or (not x7925) x7924)
+(or (not x7925) x7756)
+(or x7926 (not x7925))
+(or x7926 (not x7910))
+(or x7926 (not x7907))
+(or x7926 (not x7908))
+(or x7925 x7910 x7907 x7908 (not x7926))
+(or (not x7754) (not x7926) x7879)
+(or (not x7879) x7754)
+(or (not x7879) x7926)
+(or x7927 (not x7879))
+(or x7927 (not x7880))
+(or x7927 (not x7881))
+(or x7927 (not x7882))
+(or x7927 x7754)
+(or x7879 x7880 x7881 x7882 (not x7754) (not x7927))
+(or (not x7731) (not x7928) (not x7839) x7888)
+(or (not x7888) x7731)
+(or (not x7888) x7928)
+(or (not x7888) x7839)
+(or x7929 (not x7930))
+(or x7929 (not x7931))
+(or x7930 x7931 (not x7929))
+(or (not x7743) (not x7929) x7887)
+(or (not x7887) x7743)
+(or (not x7887) x7929)
+(or x7932 (not x7933))
+(or x7932 (not x7930))
+(or x7932 (not x7931))
+(or x7933 x7930 x7931 (not x7932))
+(or (not x7752) (not x7932) x7886)
+(or (not x7886) x7752)
+(or (not x7886) x7932)
+(or x7934 (not x7764))
+(or x7934 x7743)
+(or x7764 (not x7743) (not x7934))
+(or x7935 (not x7772))
+(or x7935 (not x7764))
+(or x7935 x7752)
+(or x7772 x7764 (not x7752) (not x7935))
+(or x7936 (not x7780))
+(or x7936 (not x7772))
+(or x7936 (not x7764))
+(or x7936 x7778)
+(or x7780 x7772 x7764 (not x7778) (not x7936))
+(or x7731 (not x7936) (not x7935) (not x7934) x7937)
+(or (not x7937) (not x7731))
+(or (not x7937) x7936)
+(or (not x7937) x7935)
+(or (not x7937) x7934)
+(or x7928 (not x7937))
+(or x7928 x7839)
+(or x7928 x7288)
+(or x7928 (not x7557))
+(or x7928 (not x7558))
+(or x7928 (not x7915))
+(or x7928 (not x7916))
+(or x7937 (not x7839) (not x7288) x7557 x7558 x7915 x7916 (not x7928))
+(or (not x7928) (not x7839) x7931)
+(or (not x7931) x7928)
+(or (not x7931) x7839)
+(or x7938 (not x7772))
+(or x7938 x7752)
+(or x7772 (not x7752) (not x7938))
+(or x7939 (not x7780))
+(or x7939 (not x7772))
+(or x7939 x7778)
+(or x7780 x7772 (not x7778) (not x7939))
+(or x7743 (not x7939) (not x7938) x7940)
+(or (not x7940) (not x7743))
+(or (not x7940) x7939)
+(or (not x7940) x7938)
+(or x7941 (not x7940))
+(or x7941 x7764)
+(or x7941 x7288)
+(or x7941 (not x7557))
+(or x7941 (not x7558))
+(or x7941 (not x7915))
+(or x7941 (not x7916))
+(or x7940 (not x7764) (not x7288) x7557 x7558 x7915 x7916 (not x7941))
+(or (not x7941) (not x7764) x7930)
+(or (not x7930) x7941)
+(or (not x7930) x7764)
+(or x7942 (not x7780))
+(or x7942 x7778)
+(or x7780 (not x7778) (not x7942))
+(or x7752 (not x7942) x7943)
+(or (not x7943) (not x7752))
+(or (not x7943) x7942)
+(or x7944 (not x7943))
+(or x7944 x7772)
+(or x7944 x7288)
+(or x7944 (not x7557))
+(or x7944 (not x7558))
+(or x7944 (not x7915))
+(or x7944 (not x7916))
+(or x7943 (not x7772) (not x7288) x7557 x7558 x7915 x7916 (not x7944))
+(or (not x7944) (not x7772) x7933)
+(or (not x7933) x7944)
+(or (not x7933) x7772)
+(or x7945 x7778)
+(or x7945 x7780)
+(or x7945 x7288)
+(or x7945 (not x7557))
+(or x7945 (not x7558))
+(or x7945 (not x7915))
+(or x7945 (not x7916))
+(or (not x7778) (not x7780) (not x7288) x7557 x7558 x7915 x7916 (not x7945))
+(or (not x7945) (not x7780) x7946)
+(or (not x7946) x7945)
+(or (not x7946) x7780)
+(or x7947 (not x7946))
+(or x7947 (not x7933))
+(or x7947 (not x7930))
+(or x7947 (not x7931))
+(or x7946 x7933 x7930 x7931 (not x7947))
+(or (not x7778) (not x7947) x7885)
+(or (not x7885) x7778)
+(or (not x7885) x7947)
+(or x7948 (not x7885))
+(or x7948 (not x7886))
+(or x7948 (not x7887))
+(or x7948 (not x7888))
+(or x7948 x7778)
+(or x7885 x7886 x7887 x7888 (not x7778) (not x7948))
+(or (not x7760) (not x7949) (not x7788) x7894)
+(or (not x7894) x7760)
+(or (not x7894) x7949)
+(or (not x7894) x7788)
+(or x7950 (not x7951))
+(or x7950 (not x7952))
+(or x7951 x7952 (not x7950))
+(or (not x7768) (not x7950) x7893)
+(or (not x7893) x7768)
+(or (not x7893) x7950)
+(or x7953 (not x7954))
+(or x7953 (not x7951))
+(or x7953 (not x7952))
+(or x7954 x7951 x7952 (not x7953))
+(or (not x7776) (not x7953) x7892)
+(or (not x7892) x7776)
+(or (not x7892) x7953)
+(or x7955 (not x7796))
+(or x7955 x7768)
+(or x7796 (not x7768) (not x7955))
+(or x7956 (not x7804))
+(or x7956 (not x7796))
+(or x7956 x7776)
+(or x7804 x7796 (not x7776) (not x7956))
+(or x7957 (not x7811))
+(or x7957 (not x7804))
+(or x7957 (not x7796))
+(or x7957 x7784)
+(or x7811 x7804 x7796 (not x7784) (not x7957))
+(or x7760 (not x7957) (not x7956) (not x7955) x7958)
+(or (not x7958) (not x7760))
+(or (not x7958) x7957)
+(or (not x7958) x7956)
+(or (not x7958) x7955)
+(or x7949 (not x7958))
+(or x7949 x7788)
+(or x7949 x7288)
+(or x7949 (not x7557))
+(or x7949 (not x7558))
+(or x7949 (not x7915))
+(or x7949 (not x7916))
+(or x7958 (not x7788) (not x7288) x7557 x7558 x7915 x7916 (not x7949))
+(or (not x7949) (not x7788) x7952)
+(or (not x7952) x7949)
+(or (not x7952) x7788)
+(or x7959 (not x7804))
+(or x7959 x7776)
+(or x7804 (not x7776) (not x7959))
+(or x7960 (not x7811))
+(or x7960 (not x7804))
+(or x7960 x7784)
+(or x7811 x7804 (not x7784) (not x7960))
+(or x7768 (not x7960) (not x7959) x7961)
+(or (not x7961) (not x7768))
+(or (not x7961) x7960)
+(or (not x7961) x7959)
+(or x7962 (not x7961))
+(or x7962 x7796)
+(or x7962 x7288)
+(or x7962 (not x7557))
+(or x7962 (not x7558))
+(or x7962 (not x7915))
+(or x7962 (not x7916))
+(or x7961 (not x7796) (not x7288) x7557 x7558 x7915 x7916 (not x7962))
+(or (not x7962) (not x7796) x7951)
+(or (not x7951) x7962)
+(or (not x7951) x7796)
+(or x7963 (not x7811))
+(or x7963 x7784)
+(or x7811 (not x7784) (not x7963))
+(or x7776 (not x7963) x7964)
+(or (not x7964) (not x7776))
+(or (not x7964) x7963)
+(or x7965 (not x7964))
+(or x7965 x7804)
+(or x7965 x7288)
+(or x7965 (not x7557))
+(or x7965 (not x7558))
+(or x7965 (not x7915))
+(or x7965 (not x7916))
+(or x7964 (not x7804) (not x7288) x7557 x7558 x7915 x7916 (not x7965))
+(or (not x7965) (not x7804) x7954)
+(or (not x7954) x7965)
+(or (not x7954) x7804)
+(or x7966 x7784)
+(or x7966 x7811)
+(or x7966 x7288)
+(or x7966 (not x7557))
+(or x7966 (not x7558))
+(or x7966 (not x7915))
+(or x7966 (not x7916))
+(or (not x7784) (not x7811) (not x7288) x7557 x7558 x7915 x7916 (not x7966))
+(or (not x7966) (not x7811) x7967)
+(or (not x7967) x7966)
+(or (not x7967) x7811)
+(or x7968 (not x7967))
+(or x7968 (not x7954))
+(or x7968 (not x7951))
+(or x7968 (not x7952))
+(or x7967 x7954 x7951 x7952 (not x7968))
+(or (not x7784) (not x7968) x7891)
+(or (not x7891) x7784)
+(or (not x7891) x7968)
+(or x7969 (not x7891))
+(or x7969 (not x7892))
+(or x7969 (not x7893))
+(or x7969 (not x7894))
+(or x7969 x7784)
+(or x7891 x7892 x7893 x7894 (not x7784) (not x7969))
+(or (not x7792) (not x7970) (not x7846) x7900)
+(or (not x7900) x7792)
+(or (not x7900) x7970)
+(or (not x7900) x7846)
+(or x7971 (not x7862))
+(or x7971 (not x7855))
+(or x7862 x7855 (not x7971))
+(or (not x7800) (not x7971) x7899)
+(or (not x7899) x7800)
+(or (not x7899) x7971)
+(or x7972 (not x7869))
+(or x7972 (not x7862))
+(or x7972 (not x7855))
+(or x7869 x7862 x7855 (not x7972))
+(or (not x7808) (not x7972) x7898)
+(or (not x7898) x7808)
+(or (not x7898) x7972)
+(or x7973 (not x7818))
+(or x7973 x7800)
+(or x7818 (not x7800) (not x7973))
+(or x7974 (not x7825))
+(or x7974 (not x7818))
+(or x7974 x7808)
+(or x7825 x7818 (not x7808) (not x7974))
+(or x7975 (not x7832))
+(or x7975 (not x7825))
+(or x7975 (not x7818))
+(or x7975 x7830)
+(or x7832 x7825 x7818 (not x7830) (not x7975))
+(or x7792 (not x7975) (not x7974) (not x7973) x7976)
+(or (not x7976) (not x7792))
+(or (not x7976) x7975)
+(or (not x7976) x7974)
+(or (not x7976) x7973)
+(or x7970 (not x7976))
+(or x7970 x7846)
+(or x7970 x7288)
+(or x7970 (not x7557))
+(or x7970 (not x7558))
+(or x7970 (not x7915))
+(or x7970 (not x7916))
+(or x7976 (not x7846) (not x7288) x7557 x7558 x7915 x7916 (not x7970))
+(or (not x7970) (not x7846) x7855)
+(or (not x7855) x7970)
+(or (not x7855) x7846)
+(or x7977 (not x7825))
+(or x7977 x7808)
+(or x7825 (not x7808) (not x7977))
+(or x7978 (not x7832))
+(or x7978 (not x7825))
+(or x7978 x7830)
+(or x7832 x7825 (not x7830) (not x7978))
+(or x7800 (not x7978) (not x7977) x7979)
+(or (not x7979) (not x7800))
+(or (not x7979) x7978)
+(or (not x7979) x7977)
+(or x7980 (not x7979))
+(or x7980 x7818)
+(or x7980 x7288)
+(or x7980 (not x7557))
+(or x7980 (not x7558))
+(or x7980 (not x7915))
+(or x7980 (not x7916))
+(or x7979 (not x7818) (not x7288) x7557 x7558 x7915 x7916 (not x7980))
+(or (not x7980) (not x7818) x7862)
+(or (not x7862) x7980)
+(or (not x7862) x7818)
+(or x7981 (not x7832))
+(or x7981 x7830)
+(or x7832 (not x7830) (not x7981))
+(or x7808 (not x7981) x7982)
+(or (not x7982) (not x7808))
+(or (not x7982) x7981)
+(or x7983 (not x7982))
+(or x7983 x7825)
+(or x7983 x7288)
+(or x7983 (not x7557))
+(or x7983 (not x7558))
+(or x7983 (not x7915))
+(or x7983 (not x7916))
+(or x7982 (not x7825) (not x7288) x7557 x7558 x7915 x7916 (not x7983))
+(or (not x7983) (not x7825) x7869)
+(or (not x7869) x7983)
+(or (not x7869) x7825)
+(or x7984 x7830)
+(or x7984 x7832)
+(or x7984 x7288)
+(or x7984 (not x7557))
+(or x7984 (not x7558))
+(or x7984 (not x7915))
+(or x7984 (not x7916))
+(or (not x7830) (not x7832) (not x7288) x7557 x7558 x7915 x7916 (not x7984))
+(or (not x7984) (not x7832) x7876)
+(or (not x7876) x7984)
+(or (not x7876) x7832)
+(or x7985 (not x7876))
+(or x7985 (not x7869))
+(or x7985 (not x7862))
+(or x7985 (not x7855))
+(or x7876 x7869 x7862 x7855 (not x7985))
+(or (not x7830) (not x7985) x7897)
+(or (not x7897) x7830)
+(or (not x7897) x7985)
+(or x7986 (not x7897))
+(or x7986 (not x7898))
+(or x7986 (not x7899))
+(or x7986 (not x7900))
+(or x7986 x7830)
+(or x7897 x7898 x7899 x7900 (not x7830) (not x7986))
+(or (not x7986) (not x7969) (not x7948) (not x7927) x7987)
+(or (not x7987) x7986)
+(or (not x7987) x7969)
+(or (not x7987) x7948)
+(or (not x7987) x7927)
+(or x7830 x7808 x7800 x7792 x7784 x7776 x7768 x7760 x7778 x7752 x7743 x7731 x7754 x7745 x7734 x7725 x7903)
+(or (not x7903) (not x7830))
+(or (not x7903) (not x7808))
+(or (not x7903) (not x7800))
+(or (not x7903) (not x7792))
+(or (not x7903) (not x7784))
+(or (not x7903) (not x7776))
+(or (not x7903) (not x7768))
+(or (not x7903) (not x7760))
+(or (not x7903) (not x7778))
+(or (not x7903) (not x7752))
+(or (not x7903) (not x7743))
+(or (not x7903) (not x7731))
+(or (not x7903) (not x7754))
+(or (not x7903) (not x7745))
+(or (not x7903) (not x7734))
+(or (not x7903) (not x7725))
+(or x7728 (not x7902))
+(or x7728 (not x7903))
+(or x7728 x7288)
+(or x7728 (not x7987))
+(or x7902 x7903 (not x7288) x7987 (not x7728))
+(or (not x7830) (not x7726) (not x7727) (not x7728) (not x7729) x7988)
+(or (not x7988) x7830)
+(or (not x7988) x7726)
+(or (not x7988) x7727)
+(or (not x7988) x7728)
+(or (not x7988) x7729)
+(or (not x7989) (not x7990) (not x7991) (not x7992) (not x7754) x7993)
+(or (not x7993) x7989)
+(or (not x7993) x7990)
+(or (not x7993) x7991)
+(or (not x7993) x7992)
+(or (not x7993) x7754)
+(or (not x7994) (not x7995) (not x7996) (not x7997) (not x7778) x7998)
+(or (not x7998) x7994)
+(or (not x7998) x7995)
+(or (not x7998) x7996)
+(or (not x7998) x7997)
+(or (not x7998) x7778)
+(or (not x7999) (not x8000) (not x8001) (not x8002) (not x7784) x8003)
+(or (not x8003) x7999)
+(or (not x8003) x8000)
+(or (not x8003) x8001)
+(or (not x8003) x8002)
+(or (not x8003) x7784)
+(or (not x8004) (not x8005) (not x8006) (not x8007) (not x7830) x8008)
+(or (not x8008) x8004)
+(or (not x8008) x8005)
+(or (not x8008) x8006)
+(or (not x8008) x8007)
+(or (not x8008) x7830)
+(or x7732 (not x8008))
+(or x7732 (not x8003))
+(or x7732 (not x7998))
+(or x7732 (not x7993))
+(or x8008 x8003 x7998 x7993 (not x7732))
+(or (not x7754) (not x7727) (not x7726) (not x7288) (not x7732) x8009)
+(or (not x8009) x7754)
+(or (not x8009) x7727)
+(or (not x8009) x7726)
+(or (not x8009) x7288)
+(or (not x8009) x7732)
+(or x8010 (not x7745))
+(or x8010 (not x7734))
+(or x8010 (not x7725))
+(or x7745 x7734 x7725 (not x8010))
+(or x7992 x7725)
+(or x7992 (not x8011))
+(or x7992 x7905)
+(or (not x7725) x8011 (not x7905) (not x7992))
+(or (not x8012) (not x8013) x8014)
+(or (not x8014) x8012)
+(or (not x8014) x8013)
+(or x7991 x7734)
+(or x7991 (not x8014))
+(or (not x7734) x8014 (not x7991))
+(or (not x8015) (not x8012) (not x8013) x8016)
+(or (not x8016) x8015)
+(or (not x8016) x8012)
+(or (not x8016) x8013)
+(or x7990 x7745)
+(or x7990 (not x8016))
+(or (not x7745) x8016 (not x7990))
+(or (not x8017) (not x7905) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x8011)
+(or (not x8011) x8017)
+(or (not x8011) x7905)
+(or (not x8011) x7288)
+(or (not x8011) x7266)
+(or (not x8011) x7298)
+(or (not x8011) x7718)
+(or (not x8011) x7739)
+(or x8013 (not x8011))
+(or x8013 x7905)
+(or x8011 (not x7905) (not x8013))
+(or x7748 (not x7745) x8018)
+(or (not x8018) (not x7748))
+(or (not x8018) x7745)
+(or x7756 x7748 (not x7754) x8019)
+(or (not x8019) (not x7756))
+(or (not x8019) (not x7748))
+(or (not x8019) x7754)
+(or x7737 (not x7734))
+(or x7737 (not x8019))
+(or x7737 (not x8018))
+(or x7734 x8019 x8018 (not x7737))
+(or (not x7737) (not x7738) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x8020)
+(or (not x8020) x7737)
+(or (not x8020) x7738)
+(or (not x8020) x7288)
+(or (not x8020) x7266)
+(or (not x8020) x7298)
+(or (not x8020) x7718)
+(or (not x8020) x7739)
+(or x8012 (not x8020))
+(or x8012 x7738)
+(or x8020 (not x7738) (not x8012))
+(or x7756 (not x7754) x8021)
+(or (not x8021) (not x7756))
+(or (not x8021) x7754)
+(or x7747 (not x7745))
+(or x7747 (not x8021))
+(or x7745 x8021 (not x7747))
+(or (not x7747) (not x7748) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x8022)
+(or (not x8022) x7747)
+(or (not x8022) x7748)
+(or (not x8022) x7288)
+(or (not x8022) x7266)
+(or (not x8022) x7298)
+(or (not x8022) x7718)
+(or (not x8022) x7739)
+(or x8015 (not x8022))
+(or x8015 x7748)
+(or x8022 (not x7748) (not x8015))
+(or (not x7754) (not x7756) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x8023)
+(or (not x8023) x7754)
+(or (not x8023) x7756)
+(or (not x8023) x7288)
+(or (not x8023) x7266)
+(or (not x8023) x7298)
+(or (not x8023) x7718)
+(or (not x8023) x7739)
+(or x8024 (not x8023))
+(or x8024 x7756)
+(or x8023 (not x7756) (not x8024))
+(or (not x8024) (not x8015) (not x8012) (not x8013) x8025)
+(or (not x8025) x8024)
+(or (not x8025) x8015)
+(or (not x8025) x8012)
+(or (not x8025) x8013)
+(or x7989 x7754)
+(or x7989 (not x8025))
+(or (not x7754) x8025 (not x7989))
+(or (not x7989) (not x7990) (not x7991) (not x7992) (not x8010) x8026)
+(or (not x8026) x7989)
+(or (not x8026) x7990)
+(or (not x8026) x7991)
+(or (not x8026) x7992)
+(or (not x8026) x8010)
+(or x8027 (not x7752))
+(or x8027 (not x7743))
+(or x8027 (not x7731))
+(or x7752 x7743 x7731 (not x8027))
+(or x7997 x7731)
+(or x7997 (not x8028))
+(or x7997 x7839)
+(or (not x7731) x8028 (not x7839) (not x7997))
+(or (not x8029) (not x8030) x8031)
+(or (not x8031) x8029)
+(or (not x8031) x8030)
+(or x7996 x7743)
+(or x7996 (not x8031))
+(or (not x7743) x8031 (not x7996))
+(or (not x8032) (not x8029) (not x8030) x8033)
+(or (not x8033) x8032)
+(or (not x8033) x8029)
+(or (not x8033) x8030)
+(or x7995 x7752)
+(or x7995 (not x8033))
+(or (not x7752) x8033 (not x7995))
+(or x7764 (not x7743) x8034)
+(or (not x8034) (not x7764))
+(or (not x8034) x7743)
+(or x7772 x7764 (not x7752) x8035)
+(or (not x8035) (not x7772))
+(or (not x8035) (not x7764))
+(or (not x8035) x7752)
+(or x7780 x7772 x7764 (not x7778) x8036)
+(or (not x8036) (not x7780))
+(or (not x8036) (not x7772))
+(or (not x8036) (not x7764))
+(or (not x8036) x7778)
+(or x7838 (not x7731))
+(or x7838 (not x8036))
+(or x7838 (not x8035))
+(or x7838 (not x8034))
+(or x7731 x8036 x8035 x8034 (not x7838))
+(or (not x7838) (not x7839) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x8028)
+(or (not x8028) x7838)
+(or (not x8028) x7839)
+(or (not x8028) x7288)
+(or (not x8028) x7266)
+(or (not x8028) x7298)
+(or (not x8028) x7718)
+(or (not x8028) x7739)
+(or x8030 (not x8028))
+(or x8030 x7839)
+(or x8028 (not x7839) (not x8030))
+(or x7772 (not x7752) x8037)
+(or (not x8037) (not x7772))
+(or (not x8037) x7752)
+(or x7780 x7772 (not x7778) x8038)
+(or (not x8038) (not x7780))
+(or (not x8038) (not x7772))
+(or (not x8038) x7778)
+(or x7763 (not x7743))
+(or x7763 (not x8038))
+(or x7763 (not x8037))
+(or x7743 x8038 x8037 (not x7763))
+(or (not x7763) (not x7764) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x8039)
+(or (not x8039) x7763)
+(or (not x8039) x7764)
+(or (not x8039) x7288)
+(or (not x8039) x7266)
+(or (not x8039) x7298)
+(or (not x8039) x7718)
+(or (not x8039) x7739)
+(or x8029 (not x8039))
+(or x8029 x7764)
+(or x8039 (not x7764) (not x8029))
+(or x7780 (not x7778) x8040)
+(or (not x8040) (not x7780))
+(or (not x8040) x7778)
+(or x7771 (not x7752))
+(or x7771 (not x8040))
+(or x7752 x8040 (not x7771))
+(or (not x7771) (not x7772) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x8041)
+(or (not x8041) x7771)
+(or (not x8041) x7772)
+(or (not x8041) x7288)
+(or (not x8041) x7266)
+(or (not x8041) x7298)
+(or (not x8041) x7718)
+(or (not x8041) x7739)
+(or x8032 (not x8041))
+(or x8032 x7772)
+(or x8041 (not x7772) (not x8032))
+(or (not x7778) (not x7780) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x8042)
+(or (not x8042) x7778)
+(or (not x8042) x7780)
+(or (not x8042) x7288)
+(or (not x8042) x7266)
+(or (not x8042) x7298)
+(or (not x8042) x7718)
+(or (not x8042) x7739)
+(or x8043 (not x8042))
+(or x8043 x7780)
+(or x8042 (not x7780) (not x8043))
+(or (not x8043) (not x8032) (not x8029) (not x8030) x8044)
+(or (not x8044) x8043)
+(or (not x8044) x8032)
+(or (not x8044) x8029)
+(or (not x8044) x8030)
+(or x7994 x7778)
+(or x7994 (not x8044))
+(or (not x7778) x8044 (not x7994))
+(or (not x7994) (not x7995) (not x7996) (not x7997) (not x8027) x8045)
+(or (not x8045) x7994)
+(or (not x8045) x7995)
+(or (not x8045) x7996)
+(or (not x8045) x7997)
+(or (not x8045) x8027)
+(or x8046 (not x7776))
+(or x8046 (not x7768))
+(or x8046 (not x7760))
+(or x7776 x7768 x7760 (not x8046))
+(or x8002 x7760)
+(or x8002 (not x8047))
+(or x8002 x7788)
+(or (not x7760) x8047 (not x7788) (not x8002))
+(or (not x8048) (not x8049) x8050)
+(or (not x8050) x8048)
+(or (not x8050) x8049)
+(or x8001 x7768)
+(or x8001 (not x8050))
+(or (not x7768) x8050 (not x8001))
+(or (not x8051) (not x8048) (not x8049) x8052)
+(or (not x8052) x8051)
+(or (not x8052) x8048)
+(or (not x8052) x8049)
+(or x8000 x7776)
+(or x8000 (not x8052))
+(or (not x7776) x8052 (not x8000))
+(or x7796 (not x7768) x8053)
+(or (not x8053) (not x7796))
+(or (not x8053) x7768)
+(or x7804 x7796 (not x7776) x8054)
+(or (not x8054) (not x7804))
+(or (not x8054) (not x7796))
+(or (not x8054) x7776)
+(or x7811 x7804 x7796 (not x7784) x8055)
+(or (not x8055) (not x7811))
+(or (not x8055) (not x7804))
+(or (not x8055) (not x7796))
+(or (not x8055) x7784)
+(or x7787 (not x7760))
+(or x7787 (not x8055))
+(or x7787 (not x8054))
+(or x7787 (not x8053))
+(or x7760 x8055 x8054 x8053 (not x7787))
+(or (not x7787) (not x7788) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x8047)
+(or (not x8047) x7787)
+(or (not x8047) x7788)
+(or (not x8047) x7288)
+(or (not x8047) x7266)
+(or (not x8047) x7298)
+(or (not x8047) x7718)
+(or (not x8047) x7739)
+(or x8049 (not x8047))
+(or x8049 x7788)
+(or x8047 (not x7788) (not x8049))
+(or x7804 (not x7776) x8056)
+(or (not x8056) (not x7804))
+(or (not x8056) x7776)
+(or x7811 x7804 (not x7784) x8057)
+(or (not x8057) (not x7811))
+(or (not x8057) (not x7804))
+(or (not x8057) x7784)
+(or x7795 (not x7768))
+(or x7795 (not x8057))
+(or x7795 (not x8056))
+(or x7768 x8057 x8056 (not x7795))
+(or (not x7795) (not x7796) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x8058)
+(or (not x8058) x7795)
+(or (not x8058) x7796)
+(or (not x8058) x7288)
+(or (not x8058) x7266)
+(or (not x8058) x7298)
+(or (not x8058) x7718)
+(or (not x8058) x7739)
+(or x8048 (not x8058))
+(or x8048 x7796)
+(or x8058 (not x7796) (not x8048))
+(or x7811 (not x7784) x8059)
+(or (not x8059) (not x7811))
+(or (not x8059) x7784)
+(or x7803 (not x7776))
+(or x7803 (not x8059))
+(or x7776 x8059 (not x7803))
+(or (not x7803) (not x7804) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x8060)
+(or (not x8060) x7803)
+(or (not x8060) x7804)
+(or (not x8060) x7288)
+(or (not x8060) x7266)
+(or (not x8060) x7298)
+(or (not x8060) x7718)
+(or (not x8060) x7739)
+(or x8051 (not x8060))
+(or x8051 x7804)
+(or x8060 (not x7804) (not x8051))
+(or (not x7784) (not x7811) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x8061)
+(or (not x8061) x7784)
+(or (not x8061) x7811)
+(or (not x8061) x7288)
+(or (not x8061) x7266)
+(or (not x8061) x7298)
+(or (not x8061) x7718)
+(or (not x8061) x7739)
+(or x8062 (not x8061))
+(or x8062 x7811)
+(or x8061 (not x7811) (not x8062))
+(or (not x8062) (not x8051) (not x8048) (not x8049) x8063)
+(or (not x8063) x8062)
+(or (not x8063) x8051)
+(or (not x8063) x8048)
+(or (not x8063) x8049)
+(or x7999 x7784)
+(or x7999 (not x8063))
+(or (not x7784) x8063 (not x7999))
+(or (not x7999) (not x8000) (not x8001) (not x8002) (not x8046) x8064)
+(or (not x8064) x7999)
+(or (not x8064) x8000)
+(or (not x8064) x8001)
+(or (not x8064) x8002)
+(or (not x8064) x8046)
+(or x8065 (not x7808))
+(or x8065 (not x7800))
+(or x8065 (not x7792))
+(or x7808 x7800 x7792 (not x8065))
+(or x8007 x7792)
+(or x8007 (not x8066))
+(or x8007 x7846)
+(or (not x7792) x8066 (not x7846) (not x8007))
+(or (not x8067) (not x8068) x8069)
+(or (not x8069) x8067)
+(or (not x8069) x8068)
+(or x8006 x7800)
+(or x8006 (not x8069))
+(or (not x7800) x8069 (not x8006))
+(or (not x8070) (not x8067) (not x8068) x8071)
+(or (not x8071) x8070)
+(or (not x8071) x8067)
+(or (not x8071) x8068)
+(or x8005 x7808)
+(or x8005 (not x8071))
+(or (not x7808) x8071 (not x8005))
+(or x7818 (not x7800) x8072)
+(or (not x8072) (not x7818))
+(or (not x8072) x7800)
+(or x7825 x7818 (not x7808) x8073)
+(or (not x8073) (not x7825))
+(or (not x8073) (not x7818))
+(or (not x8073) x7808)
+(or x7832 x7825 x7818 (not x7830) x8074)
+(or (not x8074) (not x7832))
+(or (not x8074) (not x7825))
+(or (not x8074) (not x7818))
+(or (not x8074) x7830)
+(or x7845 (not x7792))
+(or x7845 (not x8074))
+(or x7845 (not x8073))
+(or x7845 (not x8072))
+(or x7792 x8074 x8073 x8072 (not x7845))
+(or (not x7845) (not x7846) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x8066)
+(or (not x8066) x7845)
+(or (not x8066) x7846)
+(or (not x8066) x7288)
+(or (not x8066) x7266)
+(or (not x8066) x7298)
+(or (not x8066) x7718)
+(or (not x8066) x7739)
+(or x8068 (not x8066))
+(or x8068 x7846)
+(or x8066 (not x7846) (not x8068))
+(or x7825 (not x7808) x8075)
+(or (not x8075) (not x7825))
+(or (not x8075) x7808)
+(or x7832 x7825 (not x7830) x8076)
+(or (not x8076) (not x7832))
+(or (not x8076) (not x7825))
+(or (not x8076) x7830)
+(or x7817 (not x7800))
+(or x7817 (not x8076))
+(or x7817 (not x8075))
+(or x7800 x8076 x8075 (not x7817))
+(or (not x7817) (not x7818) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x8077)
+(or (not x8077) x7817)
+(or (not x8077) x7818)
+(or (not x8077) x7288)
+(or (not x8077) x7266)
+(or (not x8077) x7298)
+(or (not x8077) x7718)
+(or (not x8077) x7739)
+(or x8067 (not x8077))
+(or x8067 x7818)
+(or x8077 (not x7818) (not x8067))
+(or x7832 (not x7830) x8078)
+(or (not x8078) (not x7832))
+(or (not x8078) x7830)
+(or x7824 (not x7808))
+(or x7824 (not x8078))
+(or x7808 x8078 (not x7824))
+(or (not x7824) (not x7825) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x8079)
+(or (not x8079) x7824)
+(or (not x8079) x7825)
+(or (not x8079) x7288)
+(or (not x8079) x7266)
+(or (not x8079) x7298)
+(or (not x8079) x7718)
+(or (not x8079) x7739)
+(or x8070 (not x8079))
+(or x8070 x7825)
+(or x8079 (not x7825) (not x8070))
+(or (not x7830) (not x7832) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x8080)
+(or (not x8080) x7830)
+(or (not x8080) x7832)
+(or (not x8080) x7288)
+(or (not x8080) x7266)
+(or (not x8080) x7298)
+(or (not x8080) x7718)
+(or (not x8080) x7739)
+(or x8081 (not x8080))
+(or x8081 x7832)
+(or x8080 (not x7832) (not x8081))
+(or (not x8081) (not x8070) (not x8067) (not x8068) x8082)
+(or (not x8082) x8081)
+(or (not x8082) x8070)
+(or (not x8082) x8067)
+(or (not x8082) x8068)
+(or x8004 x7830)
+(or x8004 (not x8082))
+(or (not x7830) x8082 (not x8004))
+(or (not x8004) (not x8005) (not x8006) (not x8007) (not x8065) x8083)
+(or (not x8083) x8004)
+(or (not x8083) x8005)
+(or (not x8083) x8006)
+(or (not x8083) x8007)
+(or (not x8083) x8065)
+(or x7735 (not x8083))
+(or x7735 (not x8064))
+(or x7735 (not x8045))
+(or x7735 (not x8026))
+(or x8083 x8064 x8045 x8026 (not x7735))
+(or (not x7297) x7717 x7916)
+(or (not x7916) x7297)
+(or (not x7916) (not x7717))
+(or x7727 x7288)
+(or x7727 (not x7557))
+(or x7727 (not x7558))
+(or x7727 (not x7915))
+(or x7727 (not x7916))
+(or (not x7288) x7557 x7558 x7915 x7916 (not x7727))
+(or (not x7725) (not x7727) (not x7726) (not x7288) (not x7735) x8084)
+(or (not x8084) x7725)
+(or (not x8084) x7727)
+(or (not x8084) x7726)
+(or (not x8084) x7288)
+(or (not x8084) x7735)
+(or x7726 (not x7830))
+(or x7726 (not x7808))
+(or x7726 (not x7800))
+(or x7726 (not x7792))
+(or x7726 (not x7784))
+(or x7726 (not x7776))
+(or x7726 (not x7768))
+(or x7726 (not x7760))
+(or x7726 (not x7778))
+(or x7726 (not x7752))
+(or x7726 (not x7743))
+(or x7726 (not x7731))
+(or x7726 (not x7754))
+(or x7726 (not x7745))
+(or x7726 (not x7734))
+(or x7726 (not x7725))
+(or x7830 x7808 x7800 x7792 x7784 x7776 x7768 x7760 x7778 x7752 x7743 x7731 x7754 x7745 x7734 x7725 (not x7726))
+(or x7738 (not x7734) x8085)
+(or (not x8085) (not x7738))
+(or (not x8085) x7734)
+(or x7748 x7738 (not x7745) x8086)
+(or (not x8086) (not x7748))
+(or (not x8086) (not x7738))
+(or (not x8086) x7745)
+(or x7756 x7748 x7738 (not x7754) x8087)
+(or (not x8087) (not x7756))
+(or (not x8087) (not x7748))
+(or (not x8087) (not x7738))
+(or (not x8087) x7754)
+(or x8017 (not x7725))
+(or x8017 (not x8087))
+(or x8017 (not x8086))
+(or x8017 (not x8085))
+(or x7725 x8087 x8086 x8085 (not x8017))
+(or (not x8017) (not x7905) (not x7726) (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x8088)
+(or (not x8088) x8017)
+(or (not x8088) x7905)
+(or (not x8088) x7726)
+(or (not x8088) x7288)
+(or (not x8088) x7266)
+(or (not x8088) x7298)
+(or (not x8088) x7718)
+(or (not x8088) x7739)
+(or x8089 (not x8088))
+(or x8089 (not x8084))
+(or x8089 (not x8009))
+(or x8089 (not x7988))
+(or x8089 (not x7903))
+(or x8088 x8084 x8009 x7988 x7903 (not x8089))
+(or (not x8090) (not x7717) x8091)
+(or (not x8091) x8090)
+(or (not x8091) x7717)
+(or x7296 x7717)
+(or x7296 (not x7915))
+(or (not x7717) x7915 (not x7296))
+(or (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x7545)
+(or (not x7545) x7296)
+(or (not x7545) x7297)
+(or (not x7545) x7288)
+(or (not x7545) x7266)
+(or (not x7545) x7298)
+(or (not x7288) (not x7266) (not x7298) (not x7296) (not x7297) (not x7288) (not x7266) (not x7298) x8092)
+(or (not x8092) x7288)
+(or (not x8092) x7266)
+(or (not x8092) x7298)
+(or (not x8092) x7296)
+(or (not x8092) x7297)
+(or (not x8092) x7288)
+(or (not x8092) x7266)
+(or (not x8092) x7298)
+(or x8093 (not x8092))
+(or x8093 (not x8091))
+(or x8092 x8091 (not x8093))
+(or x8094 (not x8095))
+(or x8094 (not x8096))
+(or x8094 (not x8097))
+(or x8094 (not x7392))
+(or x8095 x8096 x8097 x7392 (not x8094))
+(or x8098 (not x8095))
+(or x8098 (not x8096))
+(or x8098 (not x8097))
+(or x8098 (not x7391))
+(or x8095 x8096 x8097 x7391 (not x8098))
+(or (not x8099) (not x8100) (not x8101) (not x8098) x8102)
+(or (not x8102) x8099)
+(or (not x8102) x8100)
+(or (not x8102) x8101)
+(or (not x8102) x8098)
+(or x8103 (not x8095))
+(or x8103 (not x8096))
+(or x8103 (not x8097))
+(or x8103 (not x7390))
+(or x8095 x8096 x8097 x7390 (not x8103))
+(or (not x8099) (not x8100) (not x8101) (not x8103) x8104)
+(or (not x8104) x8099)
+(or (not x8104) x8100)
+(or (not x8104) x8101)
+(or (not x8104) x8103)
+(or x8105 (not x8095))
+(or x8105 (not x8096))
+(or x8105 (not x8097))
+(or x8105 (not x7389))
+(or x8095 x8096 x8097 x7389 (not x8105))
+(or (not x8099) (not x8101) (not x8105) x8106)
+(or (not x8106) x8099)
+(or (not x8106) x8101)
+(or (not x8106) x8105)
+(or (not x7392) x7391 x7390 (not x7389) x7388 (not x8107) x8108 x8109 (not x8110) (not x8111) x8097)
+(or (not x8097) x7392)
+(or (not x8097) (not x7391))
+(or (not x8097) (not x7390))
+(or (not x8097) x7389)
+(or (not x8097) (not x7388))
+(or (not x8097) x8107)
+(or (not x8097) (not x8108))
+(or (not x8097) (not x8109))
+(or (not x8097) x8110)
+(or (not x8097) x8111)
+(or x8112 (not x8095))
+(or x8112 (not x8096))
+(or x8112 (not x8097))
+(or x8112 (not x7388))
+(or x8095 x8096 x8097 x7388 (not x8112))
+(or x8101 (not x8095))
+(or x8101 (not x8096))
+(or x8101 x7392)
+(or x8101 (not x7391))
+(or x8101 (not x7390))
+(or x8101 x7389)
+(or x8101 (not x7388))
+(or x8101 x8107)
+(or x8101 (not x8108))
+(or x8101 (not x8109))
+(or x8101 x8110)
+(or x8101 x8111)
+(or x8095 x8096 (not x7392) x7391 x7390 (not x7389) x7388 (not x8107) x8108 x8109 (not x8110) (not x8111) (not x8101))
+(or x8100 (not x8095))
+(or x8100 x7392)
+(or x8100 (not x7391))
+(or x8100 (not x7390))
+(or x8100 (not x7389))
+(or x8100 x7388)
+(or x8095 (not x7392) x7391 x7390 x7389 (not x7388) (not x8100))
+(or x8099 x7392)
+(or x8099 (not x7391))
+(or x8099 (not x7390))
+(or x8099 (not x7389))
+(or x8099 (not x7388))
+(or (not x7392) x7391 x7390 x7389 x7388 (not x8099))
+(or x8113 x7392)
+(or x8113 (not x7391))
+(or x8113 (not x7390))
+(or x8113 (not x7389))
+(or x8113 (not x7388))
+(or x8113 x8114)
+(or (not x7392) x7391 x7390 x7389 x7388 (not x8114) (not x8113))
+(or (not x8113) (not x8100) (not x8101) (not x8112) x8115)
+(or (not x8115) x8113)
+(or (not x8115) x8100)
+(or (not x8115) x8101)
+(or (not x8115) x8112)
+(or x8116 (not x8117))
+(or x8116 (not x8118))
+(or x8116 (not x8119))
+(or x8116 (not x7399))
+(or x8117 x8118 x8119 x7399 (not x8116))
+(or x8120 (not x8117))
+(or x8120 (not x8118))
+(or x8120 (not x8119))
+(or x8120 (not x7398))
+(or x8117 x8118 x8119 x7398 (not x8120))
+(or (not x8121) (not x8122) (not x8123) (not x8120) x8124)
+(or (not x8124) x8121)
+(or (not x8124) x8122)
+(or (not x8124) x8123)
+(or (not x8124) x8120)
+(or x8125 (not x8117))
+(or x8125 (not x8118))
+(or x8125 (not x8119))
+(or x8125 (not x7397))
+(or x8117 x8118 x8119 x7397 (not x8125))
+(or (not x8121) (not x8122) (not x8123) (not x8125) x8126)
+(or (not x8126) x8121)
+(or (not x8126) x8122)
+(or (not x8126) x8123)
+(or (not x8126) x8125)
+(or x8127 (not x8117))
+(or x8127 (not x8118))
+(or x8127 (not x8119))
+(or x8127 (not x7396))
+(or x8117 x8118 x8119 x7396 (not x8127))
+(or (not x8121) (not x8123) (not x8127) x8128)
+(or (not x8128) x8121)
+(or (not x8128) x8123)
+(or (not x8128) x8127)
+(or (not x7399) x7398 x7397 (not x7396) x7395 (not x8129) x8108 x8109 (not x8110) (not x8111) x8119)
+(or (not x8119) x7399)
+(or (not x8119) (not x7398))
+(or (not x8119) (not x7397))
+(or (not x8119) x7396)
+(or (not x8119) (not x7395))
+(or (not x8119) x8129)
+(or (not x8119) (not x8108))
+(or (not x8119) (not x8109))
+(or (not x8119) x8110)
+(or (not x8119) x8111)
+(or x8130 (not x8117))
+(or x8130 (not x8118))
+(or x8130 (not x8119))
+(or x8130 (not x7395))
+(or x8117 x8118 x8119 x7395 (not x8130))
+(or x8123 (not x8117))
+(or x8123 (not x8118))
+(or x8123 x7399)
+(or x8123 (not x7398))
+(or x8123 (not x7397))
+(or x8123 x7396)
+(or x8123 (not x7395))
+(or x8123 x8129)
+(or x8123 (not x8108))
+(or x8123 (not x8109))
+(or x8123 x8110)
+(or x8123 x8111)
+(or x8117 x8118 (not x7399) x7398 x7397 (not x7396) x7395 (not x8129) x8108 x8109 (not x8110) (not x8111) (not x8123))
+(or x8122 (not x8117))
+(or x8122 x7399)
+(or x8122 (not x7398))
+(or x8122 (not x7397))
+(or x8122 (not x7396))
+(or x8122 x7395)
+(or x8117 (not x7399) x7398 x7397 x7396 (not x7395) (not x8122))
+(or x8121 x7399)
+(or x8121 (not x7398))
+(or x8121 (not x7397))
+(or x8121 (not x7396))
+(or x8121 (not x7395))
+(or (not x7399) x7398 x7397 x7396 x7395 (not x8121))
+(or x8131 x7399)
+(or x8131 (not x7398))
+(or x8131 (not x7397))
+(or x8131 (not x7396))
+(or x8131 (not x7395))
+(or x8131 x8132)
+(or (not x7399) x7398 x7397 x7396 x7395 (not x8132) (not x8131))
+(or (not x8131) (not x8122) (not x8123) (not x8130) x8133)
+(or (not x8133) x8131)
+(or (not x8133) x8122)
+(or (not x8133) x8123)
+(or (not x8133) x8130)
+(or x8134 (not x8135))
+(or x8134 (not x8136))
+(or x8134 (not x8137))
+(or x8134 (not x7406))
+(or x8135 x8136 x8137 x7406 (not x8134))
+(or x8138 (not x8135))
+(or x8138 (not x8136))
+(or x8138 (not x8137))
+(or x8138 (not x7405))
+(or x8135 x8136 x8137 x7405 (not x8138))
+(or (not x8139) (not x8140) (not x8141) (not x8138) x8142)
+(or (not x8142) x8139)
+(or (not x8142) x8140)
+(or (not x8142) x8141)
+(or (not x8142) x8138)
+(or x8143 (not x8135))
+(or x8143 (not x8136))
+(or x8143 (not x8137))
+(or x8143 (not x7404))
+(or x8135 x8136 x8137 x7404 (not x8143))
+(or (not x8139) (not x8140) (not x8141) (not x8143) x8144)
+(or (not x8144) x8139)
+(or (not x8144) x8140)
+(or (not x8144) x8141)
+(or (not x8144) x8143)
+(or x8145 (not x8135))
+(or x8145 (not x8136))
+(or x8145 (not x8137))
+(or x8145 (not x7403))
+(or x8135 x8136 x8137 x7403 (not x8145))
+(or (not x8139) (not x8141) (not x8145) x8146)
+(or (not x8146) x8139)
+(or (not x8146) x8141)
+(or (not x8146) x8145)
+(or (not x7406) x7405 x7404 (not x7403) x7402 (not x8147) x8108 x8109 (not x8110) (not x8111) x8137)
+(or (not x8137) x7406)
+(or (not x8137) (not x7405))
+(or (not x8137) (not x7404))
+(or (not x8137) x7403)
+(or (not x8137) (not x7402))
+(or (not x8137) x8147)
+(or (not x8137) (not x8108))
+(or (not x8137) (not x8109))
+(or (not x8137) x8110)
+(or (not x8137) x8111)
+(or x8148 (not x8135))
+(or x8148 (not x8136))
+(or x8148 (not x8137))
+(or x8148 (not x7402))
+(or x8135 x8136 x8137 x7402 (not x8148))
+(or x8141 (not x8135))
+(or x8141 (not x8136))
+(or x8141 x7406)
+(or x8141 (not x7405))
+(or x8141 (not x7404))
+(or x8141 x7403)
+(or x8141 (not x7402))
+(or x8141 x8147)
+(or x8141 (not x8108))
+(or x8141 (not x8109))
+(or x8141 x8110)
+(or x8141 x8111)
+(or x8135 x8136 (not x7406) x7405 x7404 (not x7403) x7402 (not x8147) x8108 x8109 (not x8110) (not x8111) (not x8141))
+(or x8140 (not x8135))
+(or x8140 x7406)
+(or x8140 (not x7405))
+(or x8140 (not x7404))
+(or x8140 (not x7403))
+(or x8140 x7402)
+(or x8135 (not x7406) x7405 x7404 x7403 (not x7402) (not x8140))
+(or x8139 x7406)
+(or x8139 (not x7405))
+(or x8139 (not x7404))
+(or x8139 (not x7403))
+(or x8139 (not x7402))
+(or (not x7406) x7405 x7404 x7403 x7402 (not x8139))
+(or x8149 x7406)
+(or x8149 (not x7405))
+(or x8149 (not x7404))
+(or x8149 (not x7403))
+(or x8149 (not x7402))
+(or x8149 x8150)
+(or (not x7406) x7405 x7404 x7403 x7402 (not x8150) (not x8149))
+(or (not x8149) (not x8140) (not x8141) (not x8148) x8151)
+(or (not x8151) x8149)
+(or (not x8151) x8140)
+(or (not x8151) x8141)
+(or (not x8151) x8148)
+(or x8152 (not x8153))
+(or x8152 (not x8154))
+(or x8152 (not x8155))
+(or x8152 (not x7413))
+(or x8153 x8154 x8155 x7413 (not x8152))
+(or x8156 (not x8153))
+(or x8156 (not x8154))
+(or x8156 (not x8155))
+(or x8156 (not x7412))
+(or x8153 x8154 x8155 x7412 (not x8156))
+(or (not x8157) (not x8158) (not x8159) (not x8156) x8160)
+(or (not x8160) x8157)
+(or (not x8160) x8158)
+(or (not x8160) x8159)
+(or (not x8160) x8156)
+(or x8161 (not x8153))
+(or x8161 (not x8154))
+(or x8161 (not x8155))
+(or x8161 (not x7411))
+(or x8153 x8154 x8155 x7411 (not x8161))
+(or (not x8157) (not x8158) (not x8159) (not x8161) x8162)
+(or (not x8162) x8157)
+(or (not x8162) x8158)
+(or (not x8162) x8159)
+(or (not x8162) x8161)
+(or x8163 (not x8153))
+(or x8163 (not x8154))
+(or x8163 (not x8155))
+(or x8163 (not x7410))
+(or x8153 x8154 x8155 x7410 (not x8163))
+(or (not x8157) (not x8159) (not x8163) x8164)
+(or (not x8164) x8157)
+(or (not x8164) x8159)
+(or (not x8164) x8163)
+(or (not x7413) x7412 x7411 (not x7410) x7409 (not x8165) x8108 x8109 (not x8110) (not x8111) x8155)
+(or (not x8155) x7413)
+(or (not x8155) (not x7412))
+(or (not x8155) (not x7411))
+(or (not x8155) x7410)
+(or (not x8155) (not x7409))
+(or (not x8155) x8165)
+(or (not x8155) (not x8108))
+(or (not x8155) (not x8109))
+(or (not x8155) x8110)
+(or (not x8155) x8111)
+(or x8166 (not x8153))
+(or x8166 (not x8154))
+(or x8166 (not x8155))
+(or x8166 (not x7409))
+(or x8153 x8154 x8155 x7409 (not x8166))
+(or x8159 (not x8153))
+(or x8159 (not x8154))
+(or x8159 x7413)
+(or x8159 (not x7412))
+(or x8159 (not x7411))
+(or x8159 x7410)
+(or x8159 (not x7409))
+(or x8159 x8165)
+(or x8159 (not x8108))
+(or x8159 (not x8109))
+(or x8159 x8110)
+(or x8159 x8111)
+(or x8153 x8154 (not x7413) x7412 x7411 (not x7410) x7409 (not x8165) x8108 x8109 (not x8110) (not x8111) (not x8159))
+(or x8158 (not x8153))
+(or x8158 x7413)
+(or x8158 (not x7412))
+(or x8158 (not x7411))
+(or x8158 (not x7410))
+(or x8158 x7409)
+(or x8153 (not x7413) x7412 x7411 x7410 (not x7409) (not x8158))
+(or x8157 x7413)
+(or x8157 (not x7412))
+(or x8157 (not x7411))
+(or x8157 (not x7410))
+(or x8157 (not x7409))
+(or (not x7413) x7412 x7411 x7410 x7409 (not x8157))
+(or x8167 x7413)
+(or x8167 (not x7412))
+(or x8167 (not x7411))
+(or x8167 (not x7410))
+(or x8167 (not x7409))
+(or x8167 x8168)
+(or (not x7413) x7412 x7411 x7410 x7409 (not x8168) (not x8167))
+(or (not x8167) (not x8158) (not x8159) (not x8166) x8169)
+(or (not x8169) x8167)
+(or (not x8169) x8158)
+(or (not x8169) x8159)
+(or (not x8169) x8166)
+(or x8170 (not x8171))
+(or x8170 (not x8172))
+(or x8170 (not x8173))
+(or x8170 (not x7427))
+(or x8171 x8172 x8173 x7427 (not x8170))
+(or x8174 (not x8171))
+(or x8174 (not x8172))
+(or x8174 (not x8173))
+(or x8174 (not x7426))
+(or x8171 x8172 x8173 x7426 (not x8174))
+(or (not x8175) (not x8176) (not x8177) (not x8174) x8178)
+(or (not x8178) x8175)
+(or (not x8178) x8176)
+(or (not x8178) x8177)
+(or (not x8178) x8174)
+(or x8179 (not x8171))
+(or x8179 (not x8172))
+(or x8179 (not x8173))
+(or x8179 (not x7425))
+(or x8171 x8172 x8173 x7425 (not x8179))
+(or (not x8175) (not x8176) (not x8177) (not x8179) x8180)
+(or (not x8180) x8175)
+(or (not x8180) x8176)
+(or (not x8180) x8177)
+(or (not x8180) x8179)
+(or x8181 (not x8171))
+(or x8181 (not x8172))
+(or x8181 (not x8173))
+(or x8181 (not x7424))
+(or x8171 x8172 x8173 x7424 (not x8181))
+(or (not x8175) (not x8177) (not x8181) x8182)
+(or (not x8182) x8175)
+(or (not x8182) x8177)
+(or (not x8182) x8181)
+(or (not x7427) x7426 x7425 (not x7424) x7423 (not x8107) x8108 x8109 x8110 (not x8111) x8173)
+(or (not x8173) x7427)
+(or (not x8173) (not x7426))
+(or (not x8173) (not x7425))
+(or (not x8173) x7424)
+(or (not x8173) (not x7423))
+(or (not x8173) x8107)
+(or (not x8173) (not x8108))
+(or (not x8173) (not x8109))
+(or (not x8173) (not x8110))
+(or (not x8173) x8111)
+(or x8183 (not x8171))
+(or x8183 (not x8172))
+(or x8183 (not x8173))
+(or x8183 (not x7423))
+(or x8171 x8172 x8173 x7423 (not x8183))
+(or x8177 (not x8171))
+(or x8177 (not x8172))
+(or x8177 x7427)
+(or x8177 (not x7426))
+(or x8177 (not x7425))
+(or x8177 x7424)
+(or x8177 (not x7423))
+(or x8177 x8107)
+(or x8177 (not x8108))
+(or x8177 (not x8109))
+(or x8177 (not x8110))
+(or x8177 x8111)
+(or x8171 x8172 (not x7427) x7426 x7425 (not x7424) x7423 (not x8107) x8108 x8109 x8110 (not x8111) (not x8177))
+(or x8176 (not x8171))
+(or x8176 x7427)
+(or x8176 (not x7426))
+(or x8176 (not x7425))
+(or x8176 (not x7424))
+(or x8176 x7423)
+(or x8171 (not x7427) x7426 x7425 x7424 (not x7423) (not x8176))
+(or x8175 x7427)
+(or x8175 (not x7426))
+(or x8175 (not x7425))
+(or x8175 (not x7424))
+(or x8175 (not x7423))
+(or (not x7427) x7426 x7425 x7424 x7423 (not x8175))
+(or x8184 x7427)
+(or x8184 (not x7426))
+(or x8184 (not x7425))
+(or x8184 (not x7424))
+(or x8184 (not x7423))
+(or x8184 x8185)
+(or (not x7427) x7426 x7425 x7424 x7423 (not x8185) (not x8184))
+(or (not x8184) (not x8176) (not x8177) (not x8183) x8186)
+(or (not x8186) x8184)
+(or (not x8186) x8176)
+(or (not x8186) x8177)
+(or (not x8186) x8183)
+(or x8187 (not x8188))
+(or x8187 (not x8189))
+(or x8187 (not x8190))
+(or x8187 (not x7434))
+(or x8188 x8189 x8190 x7434 (not x8187))
+(or x8191 (not x8188))
+(or x8191 (not x8189))
+(or x8191 (not x8190))
+(or x8191 (not x7433))
+(or x8188 x8189 x8190 x7433 (not x8191))
+(or (not x8192) (not x8193) (not x8194) (not x8191) x8195)
+(or (not x8195) x8192)
+(or (not x8195) x8193)
+(or (not x8195) x8194)
+(or (not x8195) x8191)
+(or x8196 (not x8188))
+(or x8196 (not x8189))
+(or x8196 (not x8190))
+(or x8196 (not x7432))
+(or x8188 x8189 x8190 x7432 (not x8196))
+(or (not x8192) (not x8193) (not x8194) (not x8196) x8197)
+(or (not x8197) x8192)
+(or (not x8197) x8193)
+(or (not x8197) x8194)
+(or (not x8197) x8196)
+(or x8198 (not x8188))
+(or x8198 (not x8189))
+(or x8198 (not x8190))
+(or x8198 (not x7431))
+(or x8188 x8189 x8190 x7431 (not x8198))
+(or (not x8192) (not x8194) (not x8198) x8199)
+(or (not x8199) x8192)
+(or (not x8199) x8194)
+(or (not x8199) x8198)
+(or (not x7434) x7433 x7432 (not x7431) x7430 (not x8129) x8108 x8109 x8110 (not x8111) x8190)
+(or (not x8190) x7434)
+(or (not x8190) (not x7433))
+(or (not x8190) (not x7432))
+(or (not x8190) x7431)
+(or (not x8190) (not x7430))
+(or (not x8190) x8129)
+(or (not x8190) (not x8108))
+(or (not x8190) (not x8109))
+(or (not x8190) (not x8110))
+(or (not x8190) x8111)
+(or x8200 (not x8188))
+(or x8200 (not x8189))
+(or x8200 (not x8190))
+(or x8200 (not x7430))
+(or x8188 x8189 x8190 x7430 (not x8200))
+(or x8194 (not x8188))
+(or x8194 (not x8189))
+(or x8194 x7434)
+(or x8194 (not x7433))
+(or x8194 (not x7432))
+(or x8194 x7431)
+(or x8194 (not x7430))
+(or x8194 x8129)
+(or x8194 (not x8108))
+(or x8194 (not x8109))
+(or x8194 (not x8110))
+(or x8194 x8111)
+(or x8188 x8189 (not x7434) x7433 x7432 (not x7431) x7430 (not x8129) x8108 x8109 x8110 (not x8111) (not x8194))
+(or x8193 (not x8188))
+(or x8193 x7434)
+(or x8193 (not x7433))
+(or x8193 (not x7432))
+(or x8193 (not x7431))
+(or x8193 x7430)
+(or x8188 (not x7434) x7433 x7432 x7431 (not x7430) (not x8193))
+(or x8192 x7434)
+(or x8192 (not x7433))
+(or x8192 (not x7432))
+(or x8192 (not x7431))
+(or x8192 (not x7430))
+(or (not x7434) x7433 x7432 x7431 x7430 (not x8192))
+(or x8201 x7434)
+(or x8201 (not x7433))
+(or x8201 (not x7432))
+(or x8201 (not x7431))
+(or x8201 (not x7430))
+(or x8201 x8202)
+(or (not x7434) x7433 x7432 x7431 x7430 (not x8202) (not x8201))
+(or (not x8201) (not x8193) (not x8194) (not x8200) x8203)
+(or (not x8203) x8201)
+(or (not x8203) x8193)
+(or (not x8203) x8194)
+(or (not x8203) x8200)
+(or x8204 (not x8205))
+(or x8204 (not x8206))
+(or x8204 (not x8207))
+(or x8204 (not x7441))
+(or x8205 x8206 x8207 x7441 (not x8204))
+(or x8208 (not x8205))
+(or x8208 (not x8206))
+(or x8208 (not x8207))
+(or x8208 (not x7440))
+(or x8205 x8206 x8207 x7440 (not x8208))
+(or (not x8209) (not x8210) (not x8211) (not x8208) x8212)
+(or (not x8212) x8209)
+(or (not x8212) x8210)
+(or (not x8212) x8211)
+(or (not x8212) x8208)
+(or x8213 (not x8205))
+(or x8213 (not x8206))
+(or x8213 (not x8207))
+(or x8213 (not x7439))
+(or x8205 x8206 x8207 x7439 (not x8213))
+(or (not x8209) (not x8210) (not x8211) (not x8213) x8214)
+(or (not x8214) x8209)
+(or (not x8214) x8210)
+(or (not x8214) x8211)
+(or (not x8214) x8213)
+(or x8215 (not x8205))
+(or x8215 (not x8206))
+(or x8215 (not x8207))
+(or x8215 (not x7438))
+(or x8205 x8206 x8207 x7438 (not x8215))
+(or (not x8209) (not x8211) (not x8215) x8216)
+(or (not x8216) x8209)
+(or (not x8216) x8211)
+(or (not x8216) x8215)
+(or (not x7441) x7440 x7439 (not x7438) x7437 (not x8147) x8108 x8109 x8110 (not x8111) x8207)
+(or (not x8207) x7441)
+(or (not x8207) (not x7440))
+(or (not x8207) (not x7439))
+(or (not x8207) x7438)
+(or (not x8207) (not x7437))
+(or (not x8207) x8147)
+(or (not x8207) (not x8108))
+(or (not x8207) (not x8109))
+(or (not x8207) (not x8110))
+(or (not x8207) x8111)
+(or x8217 (not x8205))
+(or x8217 (not x8206))
+(or x8217 (not x8207))
+(or x8217 (not x7437))
+(or x8205 x8206 x8207 x7437 (not x8217))
+(or x8211 (not x8205))
+(or x8211 (not x8206))
+(or x8211 x7441)
+(or x8211 (not x7440))
+(or x8211 (not x7439))
+(or x8211 x7438)
+(or x8211 (not x7437))
+(or x8211 x8147)
+(or x8211 (not x8108))
+(or x8211 (not x8109))
+(or x8211 (not x8110))
+(or x8211 x8111)
+(or x8205 x8206 (not x7441) x7440 x7439 (not x7438) x7437 (not x8147) x8108 x8109 x8110 (not x8111) (not x8211))
+(or x8210 (not x8205))
+(or x8210 x7441)
+(or x8210 (not x7440))
+(or x8210 (not x7439))
+(or x8210 (not x7438))
+(or x8210 x7437)
+(or x8205 (not x7441) x7440 x7439 x7438 (not x7437) (not x8210))
+(or x8209 x7441)
+(or x8209 (not x7440))
+(or x8209 (not x7439))
+(or x8209 (not x7438))
+(or x8209 (not x7437))
+(or (not x7441) x7440 x7439 x7438 x7437 (not x8209))
+(or x8218 x7441)
+(or x8218 (not x7440))
+(or x8218 (not x7439))
+(or x8218 (not x7438))
+(or x8218 (not x7437))
+(or x8218 x8219)
+(or (not x7441) x7440 x7439 x7438 x7437 (not x8219) (not x8218))
+(or (not x8218) (not x8210) (not x8211) (not x8217) x8220)
+(or (not x8220) x8218)
+(or (not x8220) x8210)
+(or (not x8220) x8211)
+(or (not x8220) x8217)
+(or x8221 (not x8222))
+(or x8221 (not x8223))
+(or x8221 (not x8224))
+(or x8221 (not x7448))
+(or x8222 x8223 x8224 x7448 (not x8221))
+(or x8225 (not x8222))
+(or x8225 (not x8223))
+(or x8225 (not x8224))
+(or x8225 (not x7447))
+(or x8222 x8223 x8224 x7447 (not x8225))
+(or (not x8226) (not x8227) (not x8228) (not x8225) x8229)
+(or (not x8229) x8226)
+(or (not x8229) x8227)
+(or (not x8229) x8228)
+(or (not x8229) x8225)
+(or x8230 (not x8222))
+(or x8230 (not x8223))
+(or x8230 (not x8224))
+(or x8230 (not x7446))
+(or x8222 x8223 x8224 x7446 (not x8230))
+(or (not x8226) (not x8227) (not x8228) (not x8230) x8231)
+(or (not x8231) x8226)
+(or (not x8231) x8227)
+(or (not x8231) x8228)
+(or (not x8231) x8230)
+(or x8232 (not x8222))
+(or x8232 (not x8223))
+(or x8232 (not x8224))
+(or x8232 (not x7445))
+(or x8222 x8223 x8224 x7445 (not x8232))
+(or (not x8226) (not x8228) (not x8232) x8233)
+(or (not x8233) x8226)
+(or (not x8233) x8228)
+(or (not x8233) x8232)
+(or (not x7448) x7447 x7446 (not x7445) x7444 (not x8165) x8108 x8109 x8110 (not x8111) x8224)
+(or (not x8224) x7448)
+(or (not x8224) (not x7447))
+(or (not x8224) (not x7446))
+(or (not x8224) x7445)
+(or (not x8224) (not x7444))
+(or (not x8224) x8165)
+(or (not x8224) (not x8108))
+(or (not x8224) (not x8109))
+(or (not x8224) (not x8110))
+(or (not x8224) x8111)
+(or x8234 (not x8222))
+(or x8234 (not x8223))
+(or x8234 (not x8224))
+(or x8234 (not x7444))
+(or x8222 x8223 x8224 x7444 (not x8234))
+(or x8228 (not x8222))
+(or x8228 (not x8223))
+(or x8228 x7448)
+(or x8228 (not x7447))
+(or x8228 (not x7446))
+(or x8228 x7445)
+(or x8228 (not x7444))
+(or x8228 x8165)
+(or x8228 (not x8108))
+(or x8228 (not x8109))
+(or x8228 (not x8110))
+(or x8228 x8111)
+(or x8222 x8223 (not x7448) x7447 x7446 (not x7445) x7444 (not x8165) x8108 x8109 x8110 (not x8111) (not x8228))
+(or x8227 (not x8222))
+(or x8227 x7448)
+(or x8227 (not x7447))
+(or x8227 (not x7446))
+(or x8227 (not x7445))
+(or x8227 x7444)
+(or x8222 (not x7448) x7447 x7446 x7445 (not x7444) (not x8227))
+(or x8226 x7448)
+(or x8226 (not x7447))
+(or x8226 (not x7446))
+(or x8226 (not x7445))
+(or x8226 (not x7444))
+(or (not x7448) x7447 x7446 x7445 x7444 (not x8226))
+(or x8235 x7448)
+(or x8235 (not x7447))
+(or x8235 (not x7446))
+(or x8235 (not x7445))
+(or x8235 (not x7444))
+(or x8235 x8236)
+(or (not x7448) x7447 x7446 x7445 x7444 (not x8236) (not x8235))
+(or (not x8235) (not x8227) (not x8228) (not x8234) x8237)
+(or (not x8237) x8235)
+(or (not x8237) x8227)
+(or (not x8237) x8228)
+(or (not x8237) x8234)
+(or x8238 (not x8239))
+(or x8238 (not x8240))
+(or x8238 (not x8241))
+(or x8238 (not x7462))
+(or x8239 x8240 x8241 x7462 (not x8238))
+(or x8242 (not x8239))
+(or x8242 (not x8240))
+(or x8242 (not x8241))
+(or x8242 (not x7461))
+(or x8239 x8240 x8241 x7461 (not x8242))
+(or (not x8243) (not x8244) (not x8245) (not x8242) x8246)
+(or (not x8246) x8243)
+(or (not x8246) x8244)
+(or (not x8246) x8245)
+(or (not x8246) x8242)
+(or x8247 (not x8239))
+(or x8247 (not x8240))
+(or x8247 (not x8241))
+(or x8247 (not x7460))
+(or x8239 x8240 x8241 x7460 (not x8247))
+(or (not x8243) (not x8244) (not x8245) (not x8247) x8248)
+(or (not x8248) x8243)
+(or (not x8248) x8244)
+(or (not x8248) x8245)
+(or (not x8248) x8247)
+(or x8249 (not x8239))
+(or x8249 (not x8240))
+(or x8249 (not x8241))
+(or x8249 (not x7459))
+(or x8239 x8240 x8241 x7459 (not x8249))
+(or (not x8243) (not x8245) (not x8249) x8250)
+(or (not x8250) x8243)
+(or (not x8250) x8245)
+(or (not x8250) x8249)
+(or (not x7462) x7461 x7460 (not x7459) x7458 (not x8107) x8108 x8109 (not x8110) x8111 x8241)
+(or (not x8241) x7462)
+(or (not x8241) (not x7461))
+(or (not x8241) (not x7460))
+(or (not x8241) x7459)
+(or (not x8241) (not x7458))
+(or (not x8241) x8107)
+(or (not x8241) (not x8108))
+(or (not x8241) (not x8109))
+(or (not x8241) x8110)
+(or (not x8241) (not x8111))
+(or x8251 (not x8239))
+(or x8251 (not x8240))
+(or x8251 (not x8241))
+(or x8251 (not x7458))
+(or x8239 x8240 x8241 x7458 (not x8251))
+(or x8245 (not x8239))
+(or x8245 (not x8240))
+(or x8245 x7462)
+(or x8245 (not x7461))
+(or x8245 (not x7460))
+(or x8245 x7459)
+(or x8245 (not x7458))
+(or x8245 x8107)
+(or x8245 (not x8108))
+(or x8245 (not x8109))
+(or x8245 x8110)
+(or x8245 (not x8111))
+(or x8239 x8240 (not x7462) x7461 x7460 (not x7459) x7458 (not x8107) x8108 x8109 (not x8110) x8111 (not x8245))
+(or x8244 (not x8239))
+(or x8244 x7462)
+(or x8244 (not x7461))
+(or x8244 (not x7460))
+(or x8244 (not x7459))
+(or x8244 x7458)
+(or x8239 (not x7462) x7461 x7460 x7459 (not x7458) (not x8244))
+(or x8243 x7462)
+(or x8243 (not x7461))
+(or x8243 (not x7460))
+(or x8243 (not x7459))
+(or x8243 (not x7458))
+(or (not x7462) x7461 x7460 x7459 x7458 (not x8243))
+(or x8252 x7462)
+(or x8252 (not x7461))
+(or x8252 (not x7460))
+(or x8252 (not x7459))
+(or x8252 (not x7458))
+(or x8252 x8253)
+(or (not x7462) x7461 x7460 x7459 x7458 (not x8253) (not x8252))
+(or (not x8252) (not x8244) (not x8245) (not x8251) x8254)
+(or (not x8254) x8252)
+(or (not x8254) x8244)
+(or (not x8254) x8245)
+(or (not x8254) x8251)
+(or x8255 (not x8256))
+(or x8255 (not x8257))
+(or x8255 (not x8258))
+(or x8255 (not x7469))
+(or x8256 x8257 x8258 x7469 (not x8255))
+(or x8259 (not x8256))
+(or x8259 (not x8257))
+(or x8259 (not x8258))
+(or x8259 (not x7468))
+(or x8256 x8257 x8258 x7468 (not x8259))
+(or (not x8260) (not x8261) (not x8262) (not x8259) x8263)
+(or (not x8263) x8260)
+(or (not x8263) x8261)
+(or (not x8263) x8262)
+(or (not x8263) x8259)
+(or x8264 (not x8256))
+(or x8264 (not x8257))
+(or x8264 (not x8258))
+(or x8264 (not x7467))
+(or x8256 x8257 x8258 x7467 (not x8264))
+(or (not x8260) (not x8261) (not x8262) (not x8264) x8265)
+(or (not x8265) x8260)
+(or (not x8265) x8261)
+(or (not x8265) x8262)
+(or (not x8265) x8264)
+(or x8266 (not x8256))
+(or x8266 (not x8257))
+(or x8266 (not x8258))
+(or x8266 (not x7466))
+(or x8256 x8257 x8258 x7466 (not x8266))
+(or (not x8260) (not x8262) (not x8266) x8267)
+(or (not x8267) x8260)
+(or (not x8267) x8262)
+(or (not x8267) x8266)
+(or (not x7469) x7468 x7467 (not x7466) x7465 (not x8129) x8108 x8109 (not x8110) x8111 x8258)
+(or (not x8258) x7469)
+(or (not x8258) (not x7468))
+(or (not x8258) (not x7467))
+(or (not x8258) x7466)
+(or (not x8258) (not x7465))
+(or (not x8258) x8129)
+(or (not x8258) (not x8108))
+(or (not x8258) (not x8109))
+(or (not x8258) x8110)
+(or (not x8258) (not x8111))
+(or x8268 (not x8256))
+(or x8268 (not x8257))
+(or x8268 (not x8258))
+(or x8268 (not x7465))
+(or x8256 x8257 x8258 x7465 (not x8268))
+(or x8262 (not x8256))
+(or x8262 (not x8257))
+(or x8262 x7469)
+(or x8262 (not x7468))
+(or x8262 (not x7467))
+(or x8262 x7466)
+(or x8262 (not x7465))
+(or x8262 x8129)
+(or x8262 (not x8108))
+(or x8262 (not x8109))
+(or x8262 x8110)
+(or x8262 (not x8111))
+(or x8256 x8257 (not x7469) x7468 x7467 (not x7466) x7465 (not x8129) x8108 x8109 (not x8110) x8111 (not x8262))
+(or x8261 (not x8256))
+(or x8261 x7469)
+(or x8261 (not x7468))
+(or x8261 (not x7467))
+(or x8261 (not x7466))
+(or x8261 x7465)
+(or x8256 (not x7469) x7468 x7467 x7466 (not x7465) (not x8261))
+(or x8260 x7469)
+(or x8260 (not x7468))
+(or x8260 (not x7467))
+(or x8260 (not x7466))
+(or x8260 (not x7465))
+(or (not x7469) x7468 x7467 x7466 x7465 (not x8260))
+(or x8269 x7469)
+(or x8269 (not x7468))
+(or x8269 (not x7467))
+(or x8269 (not x7466))
+(or x8269 (not x7465))
+(or x8269 x8270)
+(or (not x7469) x7468 x7467 x7466 x7465 (not x8270) (not x8269))
+(or (not x8269) (not x8261) (not x8262) (not x8268) x8271)
+(or (not x8271) x8269)
+(or (not x8271) x8261)
+(or (not x8271) x8262)
+(or (not x8271) x8268)
+(or x8272 (not x8273))
+(or x8272 (not x8274))
+(or x8272 (not x8275))
+(or x8272 (not x7476))
+(or x8273 x8274 x8275 x7476 (not x8272))
+(or x8276 (not x8273))
+(or x8276 (not x8274))
+(or x8276 (not x8275))
+(or x8276 (not x7475))
+(or x8273 x8274 x8275 x7475 (not x8276))
+(or (not x8277) (not x8278) (not x8279) (not x8276) x8280)
+(or (not x8280) x8277)
+(or (not x8280) x8278)
+(or (not x8280) x8279)
+(or (not x8280) x8276)
+(or x8281 (not x8273))
+(or x8281 (not x8274))
+(or x8281 (not x8275))
+(or x8281 (not x7474))
+(or x8273 x8274 x8275 x7474 (not x8281))
+(or (not x8277) (not x8278) (not x8279) (not x8281) x8282)
+(or (not x8282) x8277)
+(or (not x8282) x8278)
+(or (not x8282) x8279)
+(or (not x8282) x8281)
+(or x8283 (not x8273))
+(or x8283 (not x8274))
+(or x8283 (not x8275))
+(or x8283 (not x7473))
+(or x8273 x8274 x8275 x7473 (not x8283))
+(or (not x8277) (not x8279) (not x8283) x8284)
+(or (not x8284) x8277)
+(or (not x8284) x8279)
+(or (not x8284) x8283)
+(or (not x7476) x7475 x7474 (not x7473) x7472 (not x8147) x8108 x8109 (not x8110) x8111 x8275)
+(or (not x8275) x7476)
+(or (not x8275) (not x7475))
+(or (not x8275) (not x7474))
+(or (not x8275) x7473)
+(or (not x8275) (not x7472))
+(or (not x8275) x8147)
+(or (not x8275) (not x8108))
+(or (not x8275) (not x8109))
+(or (not x8275) x8110)
+(or (not x8275) (not x8111))
+(or x8285 (not x8273))
+(or x8285 (not x8274))
+(or x8285 (not x8275))
+(or x8285 (not x7472))
+(or x8273 x8274 x8275 x7472 (not x8285))
+(or x8279 (not x8273))
+(or x8279 (not x8274))
+(or x8279 x7476)
+(or x8279 (not x7475))
+(or x8279 (not x7474))
+(or x8279 x7473)
+(or x8279 (not x7472))
+(or x8279 x8147)
+(or x8279 (not x8108))
+(or x8279 (not x8109))
+(or x8279 x8110)
+(or x8279 (not x8111))
+(or x8273 x8274 (not x7476) x7475 x7474 (not x7473) x7472 (not x8147) x8108 x8109 (not x8110) x8111 (not x8279))
+(or x8278 (not x8273))
+(or x8278 x7476)
+(or x8278 (not x7475))
+(or x8278 (not x7474))
+(or x8278 (not x7473))
+(or x8278 x7472)
+(or x8273 (not x7476) x7475 x7474 x7473 (not x7472) (not x8278))
+(or x8277 x7476)
+(or x8277 (not x7475))
+(or x8277 (not x7474))
+(or x8277 (not x7473))
+(or x8277 (not x7472))
+(or (not x7476) x7475 x7474 x7473 x7472 (not x8277))
+(or x8286 x7476)
+(or x8286 (not x7475))
+(or x8286 (not x7474))
+(or x8286 (not x7473))
+(or x8286 (not x7472))
+(or x8286 x8287)
+(or (not x7476) x7475 x7474 x7473 x7472 (not x8287) (not x8286))
+(or (not x8286) (not x8278) (not x8279) (not x8285) x8288)
+(or (not x8288) x8286)
+(or (not x8288) x8278)
+(or (not x8288) x8279)
+(or (not x8288) x8285)
+(or x8289 (not x8290))
+(or x8289 (not x8291))
+(or x8289 (not x8292))
+(or x8289 (not x7483))
+(or x8290 x8291 x8292 x7483 (not x8289))
+(or x8293 (not x8290))
+(or x8293 (not x8291))
+(or x8293 (not x8292))
+(or x8293 (not x7482))
+(or x8290 x8291 x8292 x7482 (not x8293))
+(or (not x8294) (not x8295) (not x8296) (not x8293) x8297)
+(or (not x8297) x8294)
+(or (not x8297) x8295)
+(or (not x8297) x8296)
+(or (not x8297) x8293)
+(or x8298 (not x8290))
+(or x8298 (not x8291))
+(or x8298 (not x8292))
+(or x8298 (not x7481))
+(or x8290 x8291 x8292 x7481 (not x8298))
+(or (not x8294) (not x8295) (not x8296) (not x8298) x8299)
+(or (not x8299) x8294)
+(or (not x8299) x8295)
+(or (not x8299) x8296)
+(or (not x8299) x8298)
+(or x8300 (not x8290))
+(or x8300 (not x8291))
+(or x8300 (not x8292))
+(or x8300 (not x7480))
+(or x8290 x8291 x8292 x7480 (not x8300))
+(or (not x8294) (not x8296) (not x8300) x8301)
+(or (not x8301) x8294)
+(or (not x8301) x8296)
+(or (not x8301) x8300)
+(or (not x7483) x7482 x7481 (not x7480) x7479 (not x8165) x8108 x8109 (not x8110) x8111 x8292)
+(or (not x8292) x7483)
+(or (not x8292) (not x7482))
+(or (not x8292) (not x7481))
+(or (not x8292) x7480)
+(or (not x8292) (not x7479))
+(or (not x8292) x8165)
+(or (not x8292) (not x8108))
+(or (not x8292) (not x8109))
+(or (not x8292) x8110)
+(or (not x8292) (not x8111))
+(or x8302 (not x8290))
+(or x8302 (not x8291))
+(or x8302 (not x8292))
+(or x8302 (not x7479))
+(or x8290 x8291 x8292 x7479 (not x8302))
+(or x8296 (not x8290))
+(or x8296 (not x8291))
+(or x8296 x7483)
+(or x8296 (not x7482))
+(or x8296 (not x7481))
+(or x8296 x7480)
+(or x8296 (not x7479))
+(or x8296 x8165)
+(or x8296 (not x8108))
+(or x8296 (not x8109))
+(or x8296 x8110)
+(or x8296 (not x8111))
+(or x8290 x8291 (not x7483) x7482 x7481 (not x7480) x7479 (not x8165) x8108 x8109 (not x8110) x8111 (not x8296))
+(or x8295 (not x8290))
+(or x8295 x7483)
+(or x8295 (not x7482))
+(or x8295 (not x7481))
+(or x8295 (not x7480))
+(or x8295 x7479)
+(or x8290 (not x7483) x7482 x7481 x7480 (not x7479) (not x8295))
+(or x8294 x7483)
+(or x8294 (not x7482))
+(or x8294 (not x7481))
+(or x8294 (not x7480))
+(or x8294 (not x7479))
+(or (not x7483) x7482 x7481 x7480 x7479 (not x8294))
+(or x8303 x7483)
+(or x8303 (not x7482))
+(or x8303 (not x7481))
+(or x8303 (not x7480))
+(or x8303 (not x7479))
+(or x8303 x8304)
+(or (not x7483) x7482 x7481 x7480 x7479 (not x8304) (not x8303))
+(or (not x8303) (not x8295) (not x8296) (not x8302) x8305)
+(or (not x8305) x8303)
+(or (not x8305) x8295)
+(or (not x8305) x8296)
+(or (not x8305) x8302)
+(or x8306 (not x8307))
+(or x8306 (not x8308))
+(or x8306 (not x8309))
+(or x8306 (not x7497))
+(or x8307 x8308 x8309 x7497 (not x8306))
+(or x8310 (not x8307))
+(or x8310 (not x8308))
+(or x8310 (not x8309))
+(or x8310 (not x7496))
+(or x8307 x8308 x8309 x7496 (not x8310))
+(or (not x8311) (not x8312) (not x8313) (not x8310) x8314)
+(or (not x8314) x8311)
+(or (not x8314) x8312)
+(or (not x8314) x8313)
+(or (not x8314) x8310)
+(or x8315 (not x8307))
+(or x8315 (not x8308))
+(or x8315 (not x8309))
+(or x8315 (not x7495))
+(or x8307 x8308 x8309 x7495 (not x8315))
+(or (not x8311) (not x8312) (not x8313) (not x8315) x8316)
+(or (not x8316) x8311)
+(or (not x8316) x8312)
+(or (not x8316) x8313)
+(or (not x8316) x8315)
+(or x8317 (not x8307))
+(or x8317 (not x8308))
+(or x8317 (not x8309))
+(or x8317 (not x7494))
+(or x8307 x8308 x8309 x7494 (not x8317))
+(or (not x8311) (not x8313) (not x8317) x8318)
+(or (not x8318) x8311)
+(or (not x8318) x8313)
+(or (not x8318) x8317)
+(or (not x7497) x7496 x7495 (not x7494) x7493 (not x8107) x8108 x8109 x8110 x8111 x8309)
+(or (not x8309) x7497)
+(or (not x8309) (not x7496))
+(or (not x8309) (not x7495))
+(or (not x8309) x7494)
+(or (not x8309) (not x7493))
+(or (not x8309) x8107)
+(or (not x8309) (not x8108))
+(or (not x8309) (not x8109))
+(or (not x8309) (not x8110))
+(or (not x8309) (not x8111))
+(or x8319 (not x8307))
+(or x8319 (not x8308))
+(or x8319 (not x8309))
+(or x8319 (not x7493))
+(or x8307 x8308 x8309 x7493 (not x8319))
+(or x8313 (not x8307))
+(or x8313 (not x8308))
+(or x8313 x7497)
+(or x8313 (not x7496))
+(or x8313 (not x7495))
+(or x8313 x7494)
+(or x8313 (not x7493))
+(or x8313 x8107)
+(or x8313 (not x8108))
+(or x8313 (not x8109))
+(or x8313 (not x8110))
+(or x8313 (not x8111))
+(or x8307 x8308 (not x7497) x7496 x7495 (not x7494) x7493 (not x8107) x8108 x8109 x8110 x8111 (not x8313))
+(or x8312 (not x8307))
+(or x8312 x7497)
+(or x8312 (not x7496))
+(or x8312 (not x7495))
+(or x8312 (not x7494))
+(or x8312 x7493)
+(or x8307 (not x7497) x7496 x7495 x7494 (not x7493) (not x8312))
+(or x8311 x7497)
+(or x8311 (not x7496))
+(or x8311 (not x7495))
+(or x8311 (not x7494))
+(or x8311 (not x7493))
+(or (not x7497) x7496 x7495 x7494 x7493 (not x8311))
+(or x8320 x7497)
+(or x8320 (not x7496))
+(or x8320 (not x7495))
+(or x8320 (not x7494))
+(or x8320 (not x7493))
+(or x8320 x8321)
+(or (not x7497) x7496 x7495 x7494 x7493 (not x8321) (not x8320))
+(or (not x8320) (not x8312) (not x8313) (not x8319) x8322)
+(or (not x8322) x8320)
+(or (not x8322) x8312)
+(or (not x8322) x8313)
+(or (not x8322) x8319)
+(or x8323 (not x8324))
+(or x8323 (not x8325))
+(or x8323 (not x8326))
+(or x8323 (not x7504))
+(or x8324 x8325 x8326 x7504 (not x8323))
+(or x8327 (not x8324))
+(or x8327 (not x8325))
+(or x8327 (not x8326))
+(or x8327 (not x7503))
+(or x8324 x8325 x8326 x7503 (not x8327))
+(or (not x8328) (not x8329) (not x8330) (not x8327) x8331)
+(or (not x8331) x8328)
+(or (not x8331) x8329)
+(or (not x8331) x8330)
+(or (not x8331) x8327)
+(or x8332 (not x8324))
+(or x8332 (not x8325))
+(or x8332 (not x8326))
+(or x8332 (not x7502))
+(or x8324 x8325 x8326 x7502 (not x8332))
+(or (not x8328) (not x8329) (not x8330) (not x8332) x8333)
+(or (not x8333) x8328)
+(or (not x8333) x8329)
+(or (not x8333) x8330)
+(or (not x8333) x8332)
+(or x8334 (not x8324))
+(or x8334 (not x8325))
+(or x8334 (not x8326))
+(or x8334 (not x7501))
+(or x8324 x8325 x8326 x7501 (not x8334))
+(or (not x8328) (not x8330) (not x8334) x8335)
+(or (not x8335) x8328)
+(or (not x8335) x8330)
+(or (not x8335) x8334)
+(or (not x7504) x7503 x7502 (not x7501) x7500 (not x8129) x8108 x8109 x8110 x8111 x8326)
+(or (not x8326) x7504)
+(or (not x8326) (not x7503))
+(or (not x8326) (not x7502))
+(or (not x8326) x7501)
+(or (not x8326) (not x7500))
+(or (not x8326) x8129)
+(or (not x8326) (not x8108))
+(or (not x8326) (not x8109))
+(or (not x8326) (not x8110))
+(or (not x8326) (not x8111))
+(or x8336 (not x8324))
+(or x8336 (not x8325))
+(or x8336 (not x8326))
+(or x8336 (not x7500))
+(or x8324 x8325 x8326 x7500 (not x8336))
+(or x8330 (not x8324))
+(or x8330 (not x8325))
+(or x8330 x7504)
+(or x8330 (not x7503))
+(or x8330 (not x7502))
+(or x8330 x7501)
+(or x8330 (not x7500))
+(or x8330 x8129)
+(or x8330 (not x8108))
+(or x8330 (not x8109))
+(or x8330 (not x8110))
+(or x8330 (not x8111))
+(or x8324 x8325 (not x7504) x7503 x7502 (not x7501) x7500 (not x8129) x8108 x8109 x8110 x8111 (not x8330))
+(or x8329 (not x8324))
+(or x8329 x7504)
+(or x8329 (not x7503))
+(or x8329 (not x7502))
+(or x8329 (not x7501))
+(or x8329 x7500)
+(or x8324 (not x7504) x7503 x7502 x7501 (not x7500) (not x8329))
+(or x8328 x7504)
+(or x8328 (not x7503))
+(or x8328 (not x7502))
+(or x8328 (not x7501))
+(or x8328 (not x7500))
+(or (not x7504) x7503 x7502 x7501 x7500 (not x8328))
+(or x8337 x7504)
+(or x8337 (not x7503))
+(or x8337 (not x7502))
+(or x8337 (not x7501))
+(or x8337 (not x7500))
+(or x8337 x8338)
+(or (not x7504) x7503 x7502 x7501 x7500 (not x8338) (not x8337))
+(or (not x8337) (not x8329) (not x8330) (not x8336) x8339)
+(or (not x8339) x8337)
+(or (not x8339) x8329)
+(or (not x8339) x8330)
+(or (not x8339) x8336)
+(or x8340 (not x8341))
+(or x8340 (not x8342))
+(or x8340 (not x8343))
+(or x8340 (not x7511))
+(or x8341 x8342 x8343 x7511 (not x8340))
+(or x8344 (not x8341))
+(or x8344 (not x8342))
+(or x8344 (not x8343))
+(or x8344 (not x7510))
+(or x8341 x8342 x8343 x7510 (not x8344))
+(or (not x8345) (not x8346) (not x8347) (not x8344) x8348)
+(or (not x8348) x8345)
+(or (not x8348) x8346)
+(or (not x8348) x8347)
+(or (not x8348) x8344)
+(or x8349 (not x8341))
+(or x8349 (not x8342))
+(or x8349 (not x8343))
+(or x8349 (not x7509))
+(or x8341 x8342 x8343 x7509 (not x8349))
+(or (not x8345) (not x8346) (not x8347) (not x8349) x8350)
+(or (not x8350) x8345)
+(or (not x8350) x8346)
+(or (not x8350) x8347)
+(or (not x8350) x8349)
+(or x8351 (not x8341))
+(or x8351 (not x8342))
+(or x8351 (not x8343))
+(or x8351 (not x7508))
+(or x8341 x8342 x8343 x7508 (not x8351))
+(or (not x8345) (not x8347) (not x8351) x8352)
+(or (not x8352) x8345)
+(or (not x8352) x8347)
+(or (not x8352) x8351)
+(or (not x7511) x7510 x7509 (not x7508) x7507 (not x8147) x8108 x8109 x8110 x8111 x8343)
+(or (not x8343) x7511)
+(or (not x8343) (not x7510))
+(or (not x8343) (not x7509))
+(or (not x8343) x7508)
+(or (not x8343) (not x7507))
+(or (not x8343) x8147)
+(or (not x8343) (not x8108))
+(or (not x8343) (not x8109))
+(or (not x8343) (not x8110))
+(or (not x8343) (not x8111))
+(or x8353 (not x8341))
+(or x8353 (not x8342))
+(or x8353 (not x8343))
+(or x8353 (not x7507))
+(or x8341 x8342 x8343 x7507 (not x8353))
+(or x8347 (not x8341))
+(or x8347 (not x8342))
+(or x8347 x7511)
+(or x8347 (not x7510))
+(or x8347 (not x7509))
+(or x8347 x7508)
+(or x8347 (not x7507))
+(or x8347 x8147)
+(or x8347 (not x8108))
+(or x8347 (not x8109))
+(or x8347 (not x8110))
+(or x8347 (not x8111))
+(or x8341 x8342 (not x7511) x7510 x7509 (not x7508) x7507 (not x8147) x8108 x8109 x8110 x8111 (not x8347))
+(or x8346 (not x8341))
+(or x8346 x7511)
+(or x8346 (not x7510))
+(or x8346 (not x7509))
+(or x8346 (not x7508))
+(or x8346 x7507)
+(or x8341 (not x7511) x7510 x7509 x7508 (not x7507) (not x8346))
+(or x8345 x7511)
+(or x8345 (not x7510))
+(or x8345 (not x7509))
+(or x8345 (not x7508))
+(or x8345 (not x7507))
+(or (not x7511) x7510 x7509 x7508 x7507 (not x8345))
+(or x8354 x7511)
+(or x8354 (not x7510))
+(or x8354 (not x7509))
+(or x8354 (not x7508))
+(or x8354 (not x7507))
+(or x8354 x8355)
+(or (not x7511) x7510 x7509 x7508 x7507 (not x8355) (not x8354))
+(or (not x8354) (not x8346) (not x8347) (not x8353) x8356)
+(or (not x8356) x8354)
+(or (not x8356) x8346)
+(or (not x8356) x8347)
+(or (not x8356) x8353)
+(or x8357 (not x8358))
+(or x8357 (not x8359))
+(or x8357 (not x8360))
+(or x8357 (not x7518))
+(or x8358 x8359 x8360 x7518 (not x8357))
+(or x8361 (not x8358))
+(or x8361 (not x8359))
+(or x8361 (not x8360))
+(or x8361 (not x7517))
+(or x8358 x8359 x8360 x7517 (not x8361))
+(or (not x8362) (not x8363) (not x8364) (not x8361) x8365)
+(or (not x8365) x8362)
+(or (not x8365) x8363)
+(or (not x8365) x8364)
+(or (not x8365) x8361)
+(or x8366 (not x8358))
+(or x8366 (not x8359))
+(or x8366 (not x8360))
+(or x8366 (not x7516))
+(or x8358 x8359 x8360 x7516 (not x8366))
+(or (not x8362) (not x8363) (not x8364) (not x8366) x8367)
+(or (not x8367) x8362)
+(or (not x8367) x8363)
+(or (not x8367) x8364)
+(or (not x8367) x8366)
+(or x8368 (not x8358))
+(or x8368 (not x8359))
+(or x8368 (not x8360))
+(or x8368 (not x7515))
+(or x8358 x8359 x8360 x7515 (not x8368))
+(or (not x8362) (not x8364) (not x8368) x8369)
+(or (not x8369) x8362)
+(or (not x8369) x8364)
+(or (not x8369) x8368)
+(or (not x7518) x7517 x7516 (not x7515) x7514 (not x8165) x8108 x8109 x8110 x8111 x8360)
+(or (not x8360) x7518)
+(or (not x8360) (not x7517))
+(or (not x8360) (not x7516))
+(or (not x8360) x7515)
+(or (not x8360) (not x7514))
+(or (not x8360) x8165)
+(or (not x8360) (not x8108))
+(or (not x8360) (not x8109))
+(or (not x8360) (not x8110))
+(or (not x8360) (not x8111))
+(or x8370 (not x8358))
+(or x8370 (not x8359))
+(or x8370 (not x8360))
+(or x8370 (not x7514))
+(or x8358 x8359 x8360 x7514 (not x8370))
+(or x8364 (not x8358))
+(or x8364 (not x8359))
+(or x8364 x7518)
+(or x8364 (not x7517))
+(or x8364 (not x7516))
+(or x8364 x7515)
+(or x8364 (not x7514))
+(or x8364 x8165)
+(or x8364 (not x8108))
+(or x8364 (not x8109))
+(or x8364 (not x8110))
+(or x8364 (not x8111))
+(or x8358 x8359 (not x7518) x7517 x7516 (not x7515) x7514 (not x8165) x8108 x8109 x8110 x8111 (not x8364))
+(or x8363 (not x8358))
+(or x8363 x7518)
+(or x8363 (not x7517))
+(or x8363 (not x7516))
+(or x8363 (not x7515))
+(or x8363 x7514)
+(or x8358 (not x7518) x7517 x7516 x7515 (not x7514) (not x8363))
+(or x8362 x7518)
+(or x8362 (not x7517))
+(or x8362 (not x7516))
+(or x8362 (not x7515))
+(or x8362 (not x7514))
+(or (not x7518) x7517 x7516 x7515 x7514 (not x8362))
+(or x8371 x7518)
+(or x8371 (not x7517))
+(or x8371 (not x7516))
+(or x8371 (not x7515))
+(or x8371 (not x7514))
+(or x8371 x8372)
+(or (not x7518) x7517 x7516 x7515 x7514 (not x8372) (not x8371))
+(or (not x8371) (not x8363) (not x8364) (not x8370) x8373)
+(or (not x8373) x8371)
+(or (not x8373) x8363)
+(or (not x8373) x8364)
+(or (not x8373) x8370)
+(or x8374 (not x8375))
+(or x8374 (not x8376))
+(or x8374 (not x8377))
+(or x8374 (not x7854))
+(or x8375 x8376 x8377 x7854 (not x8374))
+(or x8378 (not x8375))
+(or x8378 (not x8376))
+(or x8378 (not x8377))
+(or x8378 (not x7853))
+(or x8375 x8376 x8377 x7853 (not x8378))
+(or (not x8379) (not x8380) (not x8381) (not x8378) x8382)
+(or (not x8382) x8379)
+(or (not x8382) x8380)
+(or (not x8382) x8381)
+(or (not x8382) x8378)
+(or x8383 (not x8375))
+(or x8383 (not x8376))
+(or x8383 (not x8377))
+(or x8383 (not x7852))
+(or x8375 x8376 x8377 x7852 (not x8383))
+(or (not x8379) (not x8380) (not x8381) (not x8383) x8384)
+(or (not x8384) x8379)
+(or (not x8384) x8380)
+(or (not x8384) x8381)
+(or (not x8384) x8383)
+(or x8385 (not x8375))
+(or x8385 (not x8376))
+(or x8385 (not x8377))
+(or x8385 (not x7851))
+(or x8375 x8376 x8377 x7851 (not x8385))
+(or (not x8379) (not x8381) (not x8385) x8386)
+(or (not x8386) x8379)
+(or (not x8386) x8381)
+(or (not x8386) x8385)
+(or (not x7854) x7853 x7852 (not x7851) x7850 (not x8107) (not x8108) (not x8109) x8110 x8111 x8377)
+(or (not x8377) x7854)
+(or (not x8377) (not x7853))
+(or (not x8377) (not x7852))
+(or (not x8377) x7851)
+(or (not x8377) (not x7850))
+(or (not x8377) x8107)
+(or (not x8377) x8108)
+(or (not x8377) x8109)
+(or (not x8377) (not x8110))
+(or (not x8377) (not x8111))
+(or x8387 (not x8375))
+(or x8387 (not x8376))
+(or x8387 (not x8377))
+(or x8387 (not x7850))
+(or x8375 x8376 x8377 x7850 (not x8387))
+(or x8381 (not x8375))
+(or x8381 (not x8376))
+(or x8381 x7854)
+(or x8381 (not x7853))
+(or x8381 (not x7852))
+(or x8381 x7851)
+(or x8381 (not x7850))
+(or x8381 x8107)
+(or x8381 x8108)
+(or x8381 x8109)
+(or x8381 (not x8110))
+(or x8381 (not x8111))
+(or x8375 x8376 (not x7854) x7853 x7852 (not x7851) x7850 (not x8107) (not x8108) (not x8109) x8110 x8111 (not x8381))
+(or x8380 (not x8375))
+(or x8380 x7854)
+(or x8380 (not x7853))
+(or x8380 (not x7852))
+(or x8380 (not x7851))
+(or x8380 x7850)
+(or x8375 (not x7854) x7853 x7852 x7851 (not x7850) (not x8380))
+(or x8379 x7854)
+(or x8379 (not x7853))
+(or x8379 (not x7852))
+(or x8379 (not x7851))
+(or x8379 (not x7850))
+(or (not x7854) x7853 x7852 x7851 x7850 (not x8379))
+(or x8388 x7854)
+(or x8388 (not x7853))
+(or x8388 (not x7852))
+(or x8388 (not x7851))
+(or x8388 (not x7850))
+(or x8388 x8389)
+(or (not x7854) x7853 x7852 x7851 x7850 (not x8389) (not x8388))
+(or (not x8388) (not x8380) (not x8381) (not x8387) x8390)
+(or (not x8390) x8388)
+(or (not x8390) x8380)
+(or (not x8390) x8381)
+(or (not x8390) x8387)
+(or x8391 (not x8392))
+(or x8391 (not x8393))
+(or x8391 (not x8394))
+(or x8391 (not x7861))
+(or x8392 x8393 x8394 x7861 (not x8391))
+(or x8395 (not x8392))
+(or x8395 (not x8393))
+(or x8395 (not x8394))
+(or x8395 (not x7860))
+(or x8392 x8393 x8394 x7860 (not x8395))
+(or (not x8396) (not x8397) (not x8398) (not x8395) x8399)
+(or (not x8399) x8396)
+(or (not x8399) x8397)
+(or (not x8399) x8398)
+(or (not x8399) x8395)
+(or x8400 (not x8392))
+(or x8400 (not x8393))
+(or x8400 (not x8394))
+(or x8400 (not x7859))
+(or x8392 x8393 x8394 x7859 (not x8400))
+(or (not x8396) (not x8397) (not x8398) (not x8400) x8401)
+(or (not x8401) x8396)
+(or (not x8401) x8397)
+(or (not x8401) x8398)
+(or (not x8401) x8400)
+(or x8402 (not x8392))
+(or x8402 (not x8393))
+(or x8402 (not x8394))
+(or x8402 (not x7858))
+(or x8392 x8393 x8394 x7858 (not x8402))
+(or (not x8396) (not x8398) (not x8402) x8403)
+(or (not x8403) x8396)
+(or (not x8403) x8398)
+(or (not x8403) x8402)
+(or (not x7861) x7860 x7859 (not x7858) x7857 (not x8129) (not x8108) (not x8109) x8110 x8111 x8394)
+(or (not x8394) x7861)
+(or (not x8394) (not x7860))
+(or (not x8394) (not x7859))
+(or (not x8394) x7858)
+(or (not x8394) (not x7857))
+(or (not x8394) x8129)
+(or (not x8394) x8108)
+(or (not x8394) x8109)
+(or (not x8394) (not x8110))
+(or (not x8394) (not x8111))
+(or x8404 (not x8392))
+(or x8404 (not x8393))
+(or x8404 (not x8394))
+(or x8404 (not x7857))
+(or x8392 x8393 x8394 x7857 (not x8404))
+(or x8398 (not x8392))
+(or x8398 (not x8393))
+(or x8398 x7861)
+(or x8398 (not x7860))
+(or x8398 (not x7859))
+(or x8398 x7858)
+(or x8398 (not x7857))
+(or x8398 x8129)
+(or x8398 x8108)
+(or x8398 x8109)
+(or x8398 (not x8110))
+(or x8398 (not x8111))
+(or x8392 x8393 (not x7861) x7860 x7859 (not x7858) x7857 (not x8129) (not x8108) (not x8109) x8110 x8111 (not x8398))
+(or x8397 (not x8392))
+(or x8397 x7861)
+(or x8397 (not x7860))
+(or x8397 (not x7859))
+(or x8397 (not x7858))
+(or x8397 x7857)
+(or x8392 (not x7861) x7860 x7859 x7858 (not x7857) (not x8397))
+(or x8396 x7861)
+(or x8396 (not x7860))
+(or x8396 (not x7859))
+(or x8396 (not x7858))
+(or x8396 (not x7857))
+(or (not x7861) x7860 x7859 x7858 x7857 (not x8396))
+(or x8405 x7861)
+(or x8405 (not x7860))
+(or x8405 (not x7859))
+(or x8405 (not x7858))
+(or x8405 (not x7857))
+(or x8405 x8406)
+(or (not x7861) x7860 x7859 x7858 x7857 (not x8406) (not x8405))
+(or (not x8405) (not x8397) (not x8398) (not x8404) x8407)
+(or (not x8407) x8405)
+(or (not x8407) x8397)
+(or (not x8407) x8398)
+(or (not x8407) x8404)
+(or x8408 (not x8409))
+(or x8408 (not x8410))
+(or x8408 (not x8411))
+(or x8408 (not x7868))
+(or x8409 x8410 x8411 x7868 (not x8408))
+(or x8412 (not x8409))
+(or x8412 (not x8410))
+(or x8412 (not x8411))
+(or x8412 (not x7867))
+(or x8409 x8410 x8411 x7867 (not x8412))
+(or (not x8413) (not x8414) (not x8415) (not x8412) x8416)
+(or (not x8416) x8413)
+(or (not x8416) x8414)
+(or (not x8416) x8415)
+(or (not x8416) x8412)
+(or x8417 (not x8409))
+(or x8417 (not x8410))
+(or x8417 (not x8411))
+(or x8417 (not x7866))
+(or x8409 x8410 x8411 x7866 (not x8417))
+(or (not x8413) (not x8414) (not x8415) (not x8417) x8418)
+(or (not x8418) x8413)
+(or (not x8418) x8414)
+(or (not x8418) x8415)
+(or (not x8418) x8417)
+(or x8419 (not x8409))
+(or x8419 (not x8410))
+(or x8419 (not x8411))
+(or x8419 (not x7865))
+(or x8409 x8410 x8411 x7865 (not x8419))
+(or (not x8413) (not x8415) (not x8419) x8420)
+(or (not x8420) x8413)
+(or (not x8420) x8415)
+(or (not x8420) x8419)
+(or (not x7868) x7867 x7866 (not x7865) x7864 (not x8147) (not x8108) (not x8109) x8110 x8111 x8411)
+(or (not x8411) x7868)
+(or (not x8411) (not x7867))
+(or (not x8411) (not x7866))
+(or (not x8411) x7865)
+(or (not x8411) (not x7864))
+(or (not x8411) x8147)
+(or (not x8411) x8108)
+(or (not x8411) x8109)
+(or (not x8411) (not x8110))
+(or (not x8411) (not x8111))
+(or x8421 (not x8409))
+(or x8421 (not x8410))
+(or x8421 (not x8411))
+(or x8421 (not x7864))
+(or x8409 x8410 x8411 x7864 (not x8421))
+(or x8415 (not x8409))
+(or x8415 (not x8410))
+(or x8415 x7868)
+(or x8415 (not x7867))
+(or x8415 (not x7866))
+(or x8415 x7865)
+(or x8415 (not x7864))
+(or x8415 x8147)
+(or x8415 x8108)
+(or x8415 x8109)
+(or x8415 (not x8110))
+(or x8415 (not x8111))
+(or x8409 x8410 (not x7868) x7867 x7866 (not x7865) x7864 (not x8147) (not x8108) (not x8109) x8110 x8111 (not x8415))
+(or x8414 (not x8409))
+(or x8414 x7868)
+(or x8414 (not x7867))
+(or x8414 (not x7866))
+(or x8414 (not x7865))
+(or x8414 x7864)
+(or x8409 (not x7868) x7867 x7866 x7865 (not x7864) (not x8414))
+(or x8413 x7868)
+(or x8413 (not x7867))
+(or x8413 (not x7866))
+(or x8413 (not x7865))
+(or x8413 (not x7864))
+(or (not x7868) x7867 x7866 x7865 x7864 (not x8413))
+(or x8422 x7868)
+(or x8422 (not x7867))
+(or x8422 (not x7866))
+(or x8422 (not x7865))
+(or x8422 (not x7864))
+(or x8422 x8423)
+(or (not x7868) x7867 x7866 x7865 x7864 (not x8423) (not x8422))
+(or (not x8422) (not x8414) (not x8415) (not x8421) x8424)
+(or (not x8424) x8422)
+(or (not x8424) x8414)
+(or (not x8424) x8415)
+(or (not x8424) x8421)
+(or x8425 (not x8426))
+(or x8425 (not x8427))
+(or x8425 (not x8428))
+(or x8425 (not x7875))
+(or x8426 x8427 x8428 x7875 (not x8425))
+(or x8429 (not x8426))
+(or x8429 (not x8427))
+(or x8429 (not x8428))
+(or x8429 (not x7874))
+(or x8426 x8427 x8428 x7874 (not x8429))
+(or (not x8430) (not x8431) (not x8432) (not x8429) x8433)
+(or (not x8433) x8430)
+(or (not x8433) x8431)
+(or (not x8433) x8432)
+(or (not x8433) x8429)
+(or x8434 (not x8426))
+(or x8434 (not x8427))
+(or x8434 (not x8428))
+(or x8434 (not x7873))
+(or x8426 x8427 x8428 x7873 (not x8434))
+(or (not x8430) (not x8431) (not x8432) (not x8434) x8435)
+(or (not x8435) x8430)
+(or (not x8435) x8431)
+(or (not x8435) x8432)
+(or (not x8435) x8434)
+(or x8436 (not x8426))
+(or x8436 (not x8427))
+(or x8436 (not x8428))
+(or x8436 (not x7872))
+(or x8426 x8427 x8428 x7872 (not x8436))
+(or (not x8430) (not x8432) (not x8436) x8437)
+(or (not x8437) x8430)
+(or (not x8437) x8432)
+(or (not x8437) x8436)
+(or (not x7875) x7874 x7873 (not x7872) x7871 (not x8165) (not x8108) (not x8109) x8110 x8111 x8428)
+(or (not x8428) x7875)
+(or (not x8428) (not x7874))
+(or (not x8428) (not x7873))
+(or (not x8428) x7872)
+(or (not x8428) (not x7871))
+(or (not x8428) x8165)
+(or (not x8428) x8108)
+(or (not x8428) x8109)
+(or (not x8428) (not x8110))
+(or (not x8428) (not x8111))
+(or x8438 (not x8426))
+(or x8438 (not x8427))
+(or x8438 (not x8428))
+(or x8438 (not x7871))
+(or x8426 x8427 x8428 x7871 (not x8438))
+(or x8432 (not x8426))
+(or x8432 (not x8427))
+(or x8432 x7875)
+(or x8432 (not x7874))
+(or x8432 (not x7873))
+(or x8432 x7872)
+(or x8432 (not x7871))
+(or x8432 x8165)
+(or x8432 x8108)
+(or x8432 x8109)
+(or x8432 (not x8110))
+(or x8432 (not x8111))
+(or x8426 x8427 (not x7875) x7874 x7873 (not x7872) x7871 (not x8165) (not x8108) (not x8109) x8110 x8111 (not x8432))
+(or x8431 (not x8426))
+(or x8431 x7875)
+(or x8431 (not x7874))
+(or x8431 (not x7873))
+(or x8431 (not x7872))
+(or x8431 x7871)
+(or x8426 (not x7875) x7874 x7873 x7872 (not x7871) (not x8431))
+(or x8430 x7875)
+(or x8430 (not x7874))
+(or x8430 (not x7873))
+(or x8430 (not x7872))
+(or x8430 (not x7871))
+(or (not x7875) x7874 x7873 x7872 x7871 (not x8430))
+(or x8439 x7875)
+(or x8439 (not x7874))
+(or x8439 (not x7873))
+(or x8439 (not x7872))
+(or x8439 (not x7871))
+(or x8439 x8440)
+(or (not x7875) x7874 x7873 x7872 x7871 (not x8440) (not x8439))
+(or (not x8439) (not x8431) (not x8432) (not x8438) x8441)
+(or (not x8441) x8439)
+(or (not x8441) x8431)
+(or (not x8441) x8432)
+(or (not x8441) x8438)
+(or (not x8442) x8443 (not x8444) (not x8445) (not x7264) (not x8446) x8447)
+(or (not x8447) x8442)
+(or (not x8447) (not x8443))
+(or (not x8447) x8444)
+(or (not x8447) x8445)
+(or (not x8447) x7264)
+(or (not x8447) x8446)
+(or (not x8448) (not x8445) (not x8449) x8450)
+(or (not x8450) x8448)
+(or (not x8450) x8445)
+(or (not x8450) x8449)
+(or x8451 (not x8450))
+(or x8451 (not x8447))
+(or x8450 x8447 (not x8451))
+(or (not x8452) x8453 (not x8454) (not x8445) (not x7264) (not x8446) x8455)
+(or (not x8455) x8452)
+(or (not x8455) (not x8453))
+(or (not x8455) x8454)
+(or (not x8455) x8445)
+(or (not x8455) x7264)
+(or (not x8455) x8446)
+(or (not x8456) (not x8445) (not x8449) x8457)
+(or (not x8457) x8456)
+(or (not x8457) x8445)
+(or (not x8457) x8449)
+(or x8458 (not x8457))
+(or x8458 (not x8455))
+(or x8457 x8455 (not x8458))
+(or (not x8459) x8460 (not x8461) (not x8445) (not x7264) (not x8446) x8462)
+(or (not x8462) x8459)
+(or (not x8462) (not x8460))
+(or (not x8462) x8461)
+(or (not x8462) x8445)
+(or (not x8462) x7264)
+(or (not x8462) x8446)
+(or (not x8463) (not x8445) (not x8449) x8464)
+(or (not x8464) x8463)
+(or (not x8464) x8445)
+(or (not x8464) x8449)
+(or x8465 (not x8464))
+(or x8465 (not x8462))
+(or x8464 x8462 (not x8465))
+(or (not x8466) x8467 (not x8468) (not x8445) (not x7264) (not x8446) x8469)
+(or (not x8469) x8466)
+(or (not x8469) (not x8467))
+(or (not x8469) x8468)
+(or (not x8469) x8445)
+(or (not x8469) x7264)
+(or (not x8469) x8446)
+(or x8449 x7264)
+(or x8449 (not x8470))
+(or (not x7264) x8470 (not x8449))
+(or x8445 (not x8471))
+(or x8445 (not x8463))
+(or x8445 (not x8456))
+(or x8445 (not x8448))
+(or x8471 x8463 x8456 x8448 (not x8445))
+(or (not x8471) (not x8445) (not x8449) x8472)
+(or (not x8472) x8471)
+(or (not x8472) x8445)
+(or (not x8472) x8449)
+(or x8471 x8463 x8456 x8448 x8473)
+(or (not x8473) (not x8471))
+(or (not x8473) (not x8463))
+(or (not x8473) (not x8456))
+(or (not x8473) (not x8448))
+(or x8474 (not x8473))
+(or x8474 (not x8472))
+(or x8474 (not x8469))
+(or x8473 x8472 x8469 (not x8474))
+(or (not x8475) (not x8456) x8476)
+(or (not x8476) x8475)
+(or (not x8476) x8456)
+(or (not x8477) (not x8475) (not x8463) x8478)
+(or (not x8478) x8477)
+(or (not x8478) x8475)
+(or (not x8478) x8463)
+(or (not x8479) (not x8477) (not x8475) (not x8471) x8480)
+(or (not x8480) x8479)
+(or (not x8480) x8477)
+(or (not x8480) x8475)
+(or (not x8480) x8471)
+(or x8466 (not x8448))
+(or x8466 (not x8480))
+(or x8466 (not x8478))
+(or x8466 (not x8476))
+(or x8448 x8480 x8478 x8476 (not x8466))
+(or (not x8466) x8467 (not x8468) (not x7264) (not x8446) x8481)
+(or (not x8481) x8466)
+(or (not x8481) (not x8467))
+(or (not x8481) x8468)
+(or (not x8481) x7264)
+(or (not x8481) x8446)
+(or (not x8477) (not x8463) x8482)
+(or (not x8482) x8477)
+(or (not x8482) x8463)
+(or (not x8479) (not x8477) (not x8471) x8483)
+(or (not x8483) x8479)
+(or (not x8483) x8477)
+(or (not x8483) x8471)
+(or (not x8484) (not x8479) (not x8477) (not x8448) x8485)
+(or (not x8485) x8484)
+(or (not x8485) x8479)
+(or (not x8485) x8477)
+(or (not x8485) x8448)
+(or x8442 (not x8456))
+(or x8442 (not x8485))
+(or x8442 (not x8483))
+(or x8442 (not x8482))
+(or x8456 x8485 x8483 x8482 (not x8442))
+(or (not x8442) x8443 (not x8444) (not x7264) (not x8446) x8486)
+(or (not x8486) x8442)
+(or (not x8486) (not x8443))
+(or (not x8486) x8444)
+(or (not x8486) x7264)
+(or (not x8486) x8446)
+(or (not x8479) (not x8471) x8487)
+(or (not x8487) x8479)
+(or (not x8487) x8471)
+(or (not x8484) (not x8479) (not x8448) x8488)
+(or (not x8488) x8484)
+(or (not x8488) x8479)
+(or (not x8488) x8448)
+(or (not x8475) (not x8484) (not x8479) (not x8456) x8489)
+(or (not x8489) x8475)
+(or (not x8489) x8484)
+(or (not x8489) x8479)
+(or (not x8489) x8456)
+(or x8452 (not x8463))
+(or x8452 (not x8489))
+(or x8452 (not x8488))
+(or x8452 (not x8487))
+(or x8463 x8489 x8488 x8487 (not x8452))
+(or (not x8452) x8453 (not x8454) (not x7264) (not x8446) x8490)
+(or (not x8490) x8452)
+(or (not x8490) (not x8453))
+(or (not x8490) x8454)
+(or (not x8490) x7264)
+(or (not x8490) x8446)
+(or (not x8484) (not x8448) x8491)
+(or (not x8491) x8484)
+(or (not x8491) x8448)
+(or (not x8475) (not x8484) (not x8456) x8492)
+(or (not x8492) x8475)
+(or (not x8492) x8484)
+(or (not x8492) x8456)
+(or (not x8477) (not x8475) (not x8484) (not x8463) x8493)
+(or (not x8493) x8477)
+(or (not x8493) x8475)
+(or (not x8493) x8484)
+(or (not x8493) x8463)
+(or x8459 (not x8471))
+(or x8459 (not x8493))
+(or x8459 (not x8492))
+(or x8459 (not x8491))
+(or x8471 x8493 x8492 x8491 (not x8459))
+(or (not x8459) x8460 (not x8461) (not x7264) (not x8446) x8494)
+(or (not x8494) x8459)
+(or (not x8494) (not x8460))
+(or (not x8494) x8461)
+(or (not x8494) x7264)
+(or (not x8494) x8446)
+(or x8495 x7274)
+(or x8495 x7270)
+(or x8495 x7265)
+(or x8495 x7262)
+(or (not x7274) (not x7270) (not x7265) (not x7262) (not x8495))
+(or (not x8446) (not x8495) x7558)
+(or (not x7558) x8446)
+(or (not x7558) x8495)
+(or x8496 x7725)
+(or x8496 x7905)
+(or (not x7725) (not x7905) (not x8496))
+(or x7738 x7905 x8497)
+(or (not x8497) (not x7738))
+(or (not x8497) (not x7905))
+(or x8498 x7734)
+(or x8498 (not x8497))
+(or (not x7734) x8497 (not x8498))
+(or x7748 x7738 x7905 x8499)
+(or (not x8499) (not x7748))
+(or (not x8499) (not x7738))
+(or (not x8499) (not x7905))
+(or x8500 x7745)
+(or x8500 (not x8499))
+(or (not x7745) x8499 (not x8500))
+(or x7756 x7748 x7738 x7905 x8501)
+(or (not x8501) (not x7756))
+(or (not x8501) (not x7748))
+(or (not x8501) (not x7738))
+(or (not x8501) (not x7905))
+(or x8502 x7754)
+(or x8502 (not x8501))
+(or (not x7754) x8501 (not x8502))
+(or x8503 x7731)
+(or x8503 x7839)
+(or (not x7731) (not x7839) (not x8503))
+(or x7764 x7839 x8504)
+(or (not x8504) (not x7764))
+(or (not x8504) (not x7839))
+(or x8505 x7743)
+(or x8505 (not x8504))
+(or (not x7743) x8504 (not x8505))
+(or x7772 x7764 x7839 x8506)
+(or (not x8506) (not x7772))
+(or (not x8506) (not x7764))
+(or (not x8506) (not x7839))
+(or x8507 x7752)
+(or x8507 (not x8506))
+(or (not x7752) x8506 (not x8507))
+(or x7780 x7772 x7764 x7839 x8508)
+(or (not x8508) (not x7780))
+(or (not x8508) (not x7772))
+(or (not x8508) (not x7764))
+(or (not x8508) (not x7839))
+(or x8509 x7778)
+(or x8509 (not x8508))
+(or (not x7778) x8508 (not x8509))
+(or x8510 x7760)
+(or x8510 x7788)
+(or (not x7760) (not x7788) (not x8510))
+(or x7796 x7788 x8511)
+(or (not x8511) (not x7796))
+(or (not x8511) (not x7788))
+(or x8512 x7768)
+(or x8512 (not x8511))
+(or (not x7768) x8511 (not x8512))
+(or x7804 x7796 x7788 x8513)
+(or (not x8513) (not x7804))
+(or (not x8513) (not x7796))
+(or (not x8513) (not x7788))
+(or x8514 x7776)
+(or x8514 (not x8513))
+(or (not x7776) x8513 (not x8514))
+(or x7811 x7804 x7796 x7788 x8515)
+(or (not x8515) (not x7811))
+(or (not x8515) (not x7804))
+(or (not x8515) (not x7796))
+(or (not x8515) (not x7788))
+(or x8516 x7784)
+(or x8516 (not x8515))
+(or (not x7784) x8515 (not x8516))
+(or x8517 x7792)
+(or x8517 x7846)
+(or (not x7792) (not x7846) (not x8517))
+(or x7818 x7846 x8518)
+(or (not x8518) (not x7818))
+(or (not x8518) (not x7846))
+(or x8519 x7800)
+(or x8519 (not x8518))
+(or (not x7800) x8518 (not x8519))
+(or x7825 x7818 x7846 x8520)
+(or (not x8520) (not x7825))
+(or (not x8520) (not x7818))
+(or (not x8520) (not x7846))
+(or x8521 x7808)
+(or x8521 (not x8520))
+(or (not x7808) x8520 (not x8521))
+(or x7832 x7825 x7818 x7846 x8522)
+(or (not x8522) (not x7832))
+(or (not x8522) (not x7825))
+(or (not x8522) (not x7818))
+(or (not x8522) (not x7846))
+(or x8523 x7830)
+(or x8523 (not x8522))
+(or (not x7830) x8522 (not x8523))
+(or (not x8523) (not x8521) (not x8519) (not x8517) (not x8516) (not x8514) (not x8512) (not x8510) (not x8509) (not x8507) (not x8505) (not x8503) (not x8502) (not x8500) (not x8498) (not x8496) x7915)
+(or (not x7915) x8523)
+(or (not x7915) x8521)
+(or (not x7915) x8519)
+(or (not x7915) x8517)
+(or (not x7915) x8516)
+(or (not x7915) x8514)
+(or (not x7915) x8512)
+(or (not x7915) x8510)
+(or (not x7915) x8509)
+(or (not x7915) x8507)
+(or (not x7915) x8505)
+(or (not x7915) x8503)
+(or (not x7915) x8502)
+(or (not x7915) x8500)
+(or (not x7915) x8498)
+(or (not x7915) x8496)
+(or (not x8523) (not x8521) (not x8519) (not x8517) (not x8516) (not x8514) (not x8512) (not x8510) (not x8509) (not x8507) (not x8505) (not x8503) (not x8502) (not x8500) (not x8498) (not x8496) (not x8524) (not x8525) (not x8526) (not x8527) (not x8528) (not x8529) (not x8530) (not x8531) (not x8532) (not x8533) (not x8534) (not x8535) (not x8536) (not x8537) (not x8538) (not x8539) x7557)
+(or (not x7557) x8523)
+(or (not x7557) x8521)
+(or (not x7557) x8519)
+(or (not x7557) x8517)
+(or (not x7557) x8516)
+(or (not x7557) x8514)
+(or (not x7557) x8512)
+(or (not x7557) x8510)
+(or (not x7557) x8509)
+(or (not x7557) x8507)
+(or (not x7557) x8505)
+(or (not x7557) x8503)
+(or (not x7557) x8502)
+(or (not x7557) x8500)
+(or (not x7557) x8498)
+(or (not x7557) x8496)
+(or (not x7557) x8524)
+(or (not x7557) x8525)
+(or (not x7557) x8526)
+(or (not x7557) x8527)
+(or (not x7557) x8528)
+(or (not x7557) x8529)
+(or (not x7557) x8530)
+(or (not x7557) x8531)
+(or (not x7557) x8532)
+(or (not x7557) x8533)
+(or (not x7557) x8534)
+(or (not x7557) x8535)
+(or (not x7557) x8536)
+(or (not x7557) x8537)
+(or (not x7557) x8538)
+(or (not x7557) x8539)
+(or x8090 x7288)
+(or x8090 (not x7557))
+(or x8090 (not x7558))
+(or (not x7288) x7557 x7558 (not x8090))
+(or (not x8090) (not x7288) x8540)
+(or (not x8540) x8090)
+(or (not x8540) x7288)
+(or x7288 x7261 x7264 x8541)
+(or (not x8541) (not x7288))
+(or (not x8541) (not x7261))
+(or (not x8541) (not x7264))
+(or x8542 (not x8541))
+(or x8542 (not x8540))
+(or x8541 x8540 (not x8542))
+(or x8539 x7281)
+(or x8539 x7548)
+(or (not x7281) (not x7548) (not x8539))
+(or x7295 x7548 x8543)
+(or (not x8543) (not x7295))
+(or (not x8543) (not x7548))
+(or x8538 x7291)
+(or x8538 (not x8543))
+(or (not x7291) x8543 (not x8538))
+(or x7307 x7295 x7548 x8544)
+(or (not x8544) (not x7307))
+(or (not x8544) (not x7295))
+(or (not x8544) (not x7548))
+(or x8537 x7304)
+(or x8537 (not x8544))
+(or (not x7304) x8544 (not x8537))
+(or x7315 x7307 x7295 x7548 x8545)
+(or (not x8545) (not x7315))
+(or (not x8545) (not x7307))
+(or (not x8545) (not x7295))
+(or (not x8545) (not x7548))
+(or x8536 x7313)
+(or x8536 (not x8545))
+(or (not x7313) x8545 (not x8536))
+(or x8535 x7287)
+(or x8535 x7419)
+(or (not x7287) (not x7419) (not x8535))
+(or x7323 x7419 x8546)
+(or (not x8546) (not x7323))
+(or (not x8546) (not x7419))
+(or x8534 x7302)
+(or x8534 (not x8546))
+(or (not x7302) x8546 (not x8534))
+(or x7331 x7323 x7419 x8547)
+(or (not x8547) (not x7331))
+(or (not x8547) (not x7323))
+(or (not x8547) (not x7419))
+(or x8533 x7311)
+(or x8533 (not x8547))
+(or (not x7311) x8547 (not x8533))
+(or x7339 x7331 x7323 x7419 x8548)
+(or (not x8548) (not x7339))
+(or (not x8548) (not x7331))
+(or (not x8548) (not x7323))
+(or (not x8548) (not x7419))
+(or x8532 x7337)
+(or x8532 (not x8548))
+(or (not x7337) x8548 (not x8532))
+(or x8531 x7319)
+(or x8531 x7454)
+(or (not x7319) (not x7454) (not x8531))
+(or x7347 x7454 x8549)
+(or (not x8549) (not x7347))
+(or (not x8549) (not x7454))
+(or x8530 x7327)
+(or x8530 (not x8549))
+(or (not x7327) x8549 (not x8530))
+(or x7355 x7347 x7454 x8550)
+(or (not x8550) (not x7355))
+(or (not x8550) (not x7347))
+(or (not x8550) (not x7454))
+(or x8529 x7335)
+(or x8529 (not x8550))
+(or (not x7335) x8550 (not x8529))
+(or x7363 x7355 x7347 x7454 x8551)
+(or (not x8551) (not x7363))
+(or (not x8551) (not x7355))
+(or (not x8551) (not x7347))
+(or (not x8551) (not x7454))
+(or x8528 x7361)
+(or x8528 (not x8551))
+(or (not x7361) x8551 (not x8528))
+(or x8527 x7343)
+(or x8527 x7489)
+(or (not x7343) (not x7489) (not x8527))
+(or x7370 x7489 x8552)
+(or (not x8552) (not x7370))
+(or (not x8552) (not x7489))
+(or x8526 x7351)
+(or x8526 (not x8552))
+(or (not x7351) x8552 (not x8526))
+(or x7377 x7370 x7489 x8553)
+(or (not x8553) (not x7377))
+(or (not x8553) (not x7370))
+(or (not x8553) (not x7489))
+(or x8525 x7359)
+(or x8525 (not x8553))
+(or (not x7359) x8553 (not x8525))
+(or x7384 x7377 x7370 x7489 x8554)
+(or (not x8554) (not x7384))
+(or (not x8554) (not x7377))
+(or (not x8554) (not x7370))
+(or (not x8554) (not x7489))
+(or x8524 x7382)
+(or x8524 (not x8554))
+(or (not x7382) x8554 (not x8524))
+(or (not x8524) (not x8525) (not x8526) (not x8527) (not x8528) (not x8529) (not x8530) (not x8531) (not x8532) (not x8533) (not x8534) (not x8535) (not x8536) (not x8537) (not x8538) (not x8539) x7556)
+(or (not x7556) x8524)
+(or (not x7556) x8525)
+(or (not x7556) x8526)
+(or (not x7556) x8527)
+(or (not x7556) x8528)
+(or (not x7556) x8529)
+(or (not x7556) x8530)
+(or (not x7556) x8531)
+(or (not x7556) x8532)
+(or (not x7556) x8533)
+(or (not x7556) x8534)
+(or (not x7556) x8535)
+(or (not x7556) x8536)
+(or (not x7556) x8537)
+(or (not x7556) x8538)
+(or (not x7556) x8539)
+(or x7739 (not x7556))
+(or x7739 (not x7717))
+(or x7556 x7717 (not x7739))
+(or (not x7288) (not x7266) (not x7298) (not x7718) (not x7739) x7902)
+(or (not x7902) x7288)
+(or (not x7902) x7266)
+(or (not x7902) x7298)
+(or (not x7902) x7718)
+(or (not x7902) x7739)
+(or x8555 (not x8467))
+(or x8555 x8468)
+(or x8555 (not x8468))
+(or x8467 (not x8468) x8468 (not x8555))
+(or x8556 (not x8557))
+(or x8556 x8558)
+(or x8557 (not x8558) (not x8556))
+(or (not x8556) (not x8555) x8559)
+(or (not x8559) x8556)
+(or (not x8559) x8555)
+(or x8560 (not x8443))
+(or x8560 x8444)
+(or x8560 (not x8444))
+(or x8443 (not x8444) x8444 (not x8560))
+(or x8561 (not x8562))
+(or x8561 x8563)
+(or x8562 (not x8563) (not x8561))
+(or (not x8561) (not x8560) x8564)
+(or (not x8564) x8561)
+(or (not x8564) x8560)
+(or x8565 (not x8453))
+(or x8565 x8454)
+(or x8565 (not x8454))
+(or x8453 (not x8454) x8454 (not x8565))
+(or x8566 (not x8567))
+(or x8566 x8568)
+(or x8567 (not x8568) (not x8566))
+(or (not x8566) (not x8565) x8569)
+(or (not x8569) x8566)
+(or (not x8569) x8565)
+(or x8570 (not x8460))
+(or x8570 x8461)
+(or x8570 (not x8461))
+(or x8460 (not x8461) x8461 (not x8570))
+(or x8571 (not x8572))
+(or x8571 x8573)
+(or x8572 (not x8573) (not x8571))
+(or (not x8571) (not x8570) x8574)
+(or (not x8574) x8571)
+(or (not x8574) x8570)
+(or (not x7274) (not x7270) (not x7265) (not x7262) x8575)
+(or (not x8575) x7274)
+(or (not x8575) x7270)
+(or (not x8575) x7265)
+(or (not x8575) x7262)
+(or x8484 (not x8467))
+(or x8484 x8468)
+(or x8467 (not x8468) (not x8484))
+(or x8475 (not x8443))
+(or x8475 x8444)
+(or x8443 (not x8444) (not x8475))
+(or x8477 (not x8453))
+(or x8477 x8454)
+(or x8453 (not x8454) (not x8477))
+(or x8479 (not x8460))
+(or x8479 x8461)
+(or x8460 (not x8461) (not x8479))
+(or (not x8479) (not x8477) (not x8475) (not x8484) x8470)
+(or (not x8470) x8479)
+(or (not x8470) x8477)
+(or (not x8470) x8475)
+(or (not x8470) x8484)
+(or x7298 (not x8470))
+(or x7298 (not x8575))
+(or x8470 x8575 (not x7298))
+(or (not x7281) (not x7548) x8576)
+(or (not x8576) x7281)
+(or (not x8576) x7548)
+(or x8577 (not x7295))
+(or x8577 (not x7548))
+(or x7295 x7548 (not x8577))
+(or (not x7291) (not x8577) x8578)
+(or (not x8578) x7291)
+(or (not x8578) x8577)
+(or x8579 (not x7307))
+(or x8579 (not x7295))
+(or x8579 (not x7548))
+(or x7307 x7295 x7548 (not x8579))
+(or (not x7304) (not x8579) x8580)
+(or (not x8580) x7304)
+(or (not x8580) x8579)
+(or x8581 (not x7315))
+(or x8581 (not x7307))
+(or x8581 (not x7295))
+(or x8581 (not x7548))
+(or x7315 x7307 x7295 x7548 (not x8581))
+(or (not x7313) (not x8581) x8582)
+(or (not x8582) x7313)
+(or (not x8582) x8581)
+(or (not x7287) (not x7419) x8583)
+(or (not x8583) x7287)
+(or (not x8583) x7419)
+(or x8584 (not x7323))
+(or x8584 (not x7419))
+(or x7323 x7419 (not x8584))
+(or (not x7302) (not x8584) x8585)
+(or (not x8585) x7302)
+(or (not x8585) x8584)
+(or x8586 (not x7331))
+(or x8586 (not x7323))
+(or x8586 (not x7419))
+(or x7331 x7323 x7419 (not x8586))
+(or (not x7311) (not x8586) x8587)
+(or (not x8587) x7311)
+(or (not x8587) x8586)
+(or x8588 (not x7339))
+(or x8588 (not x7331))
+(or x8588 (not x7323))
+(or x8588 (not x7419))
+(or x7339 x7331 x7323 x7419 (not x8588))
+(or (not x7337) (not x8588) x8589)
+(or (not x8589) x7337)
+(or (not x8589) x8588)
+(or (not x7319) (not x7454) x8590)
+(or (not x8590) x7319)
+(or (not x8590) x7454)
+(or x8591 (not x7347))
+(or x8591 (not x7454))
+(or x7347 x7454 (not x8591))
+(or (not x7327) (not x8591) x8592)
+(or (not x8592) x7327)
+(or (not x8592) x8591)
+(or x8593 (not x7355))
+(or x8593 (not x7347))
+(or x8593 (not x7454))
+(or x7355 x7347 x7454 (not x8593))
+(or (not x7335) (not x8593) x8594)
+(or (not x8594) x7335)
+(or (not x8594) x8593)
+(or x8595 (not x7363))
+(or x8595 (not x7355))
+(or x8595 (not x7347))
+(or x8595 (not x7454))
+(or x7363 x7355 x7347 x7454 (not x8595))
+(or (not x7361) (not x8595) x8596)
+(or (not x8596) x7361)
+(or (not x8596) x8595)
+(or (not x7343) (not x7489) x8597)
+(or (not x8597) x7343)
+(or (not x8597) x7489)
+(or x8598 (not x7370))
+(or x8598 (not x7489))
+(or x7370 x7489 (not x8598))
+(or (not x7351) (not x8598) x8599)
+(or (not x8599) x7351)
+(or (not x8599) x8598)
+(or x8600 (not x7377))
+(or x8600 (not x7370))
+(or x8600 (not x7489))
+(or x7377 x7370 x7489 (not x8600))
+(or (not x7359) (not x8600) x8601)
+(or (not x8601) x7359)
+(or (not x8601) x8600)
+(or x8602 (not x7384))
+(or x8602 (not x7377))
+(or x8602 (not x7370))
+(or x8602 (not x7489))
+(or x7384 x7377 x7370 x7489 (not x8602))
+(or (not x7382) (not x8602) x8603)
+(or (not x8603) x7382)
+(or (not x8603) x8602)
+(or x7297 (not x8603))
+(or x7297 (not x8601))
+(or x7297 (not x8599))
+(or x7297 (not x8597))
+(or x7297 (not x8596))
+(or x7297 (not x8594))
+(or x7297 (not x8592))
+(or x7297 (not x8590))
+(or x7297 (not x8589))
+(or x7297 (not x8587))
+(or x7297 (not x8585))
+(or x7297 (not x8583))
+(or x7297 (not x8582))
+(or x7297 (not x8580))
+(or x7297 (not x8578))
+(or x7297 (not x8576))
+(or x8603 x8601 x8599 x8597 x8596 x8594 x8592 x8590 x8589 x8587 x8585 x8583 x8582 x8580 x8578 x8576 (not x7297))
+(or (not x7725) (not x7905) x8604)
+(or (not x8604) x7725)
+(or (not x8604) x7905)
+(or x8605 (not x7738))
+(or x8605 (not x7905))
+(or x7738 x7905 (not x8605))
+(or (not x7734) (not x8605) x8606)
+(or (not x8606) x7734)
+(or (not x8606) x8605)
+(or x8607 (not x7748))
+(or x8607 (not x7738))
+(or x8607 (not x7905))
+(or x7748 x7738 x7905 (not x8607))
+(or (not x7745) (not x8607) x8608)
+(or (not x8608) x7745)
+(or (not x8608) x8607)
+(or x8609 (not x7756))
+(or x8609 (not x7748))
+(or x8609 (not x7738))
+(or x8609 (not x7905))
+(or x7756 x7748 x7738 x7905 (not x8609))
+(or (not x7754) (not x8609) x8610)
+(or (not x8610) x7754)
+(or (not x8610) x8609)
+(or (not x7731) (not x7839) x8611)
+(or (not x8611) x7731)
+(or (not x8611) x7839)
+(or x8612 (not x7764))
+(or x8612 (not x7839))
+(or x7764 x7839 (not x8612))
+(or (not x7743) (not x8612) x8613)
+(or (not x8613) x7743)
+(or (not x8613) x8612)
+(or x8614 (not x7772))
+(or x8614 (not x7764))
+(or x8614 (not x7839))
+(or x7772 x7764 x7839 (not x8614))
+(or (not x7752) (not x8614) x8615)
+(or (not x8615) x7752)
+(or (not x8615) x8614)
+(or x8616 (not x7780))
+(or x8616 (not x7772))
+(or x8616 (not x7764))
+(or x8616 (not x7839))
+(or x7780 x7772 x7764 x7839 (not x8616))
+(or (not x7778) (not x8616) x8617)
+(or (not x8617) x7778)
+(or (not x8617) x8616)
+(or (not x7760) (not x7788) x8618)
+(or (not x8618) x7760)
+(or (not x8618) x7788)
+(or x8619 (not x7796))
+(or x8619 (not x7788))
+(or x7796 x7788 (not x8619))
+(or (not x7768) (not x8619) x8620)
+(or (not x8620) x7768)
+(or (not x8620) x8619)
+(or x8621 (not x7804))
+(or x8621 (not x7796))
+(or x8621 (not x7788))
+(or x7804 x7796 x7788 (not x8621))
+(or (not x7776) (not x8621) x8622)
+(or (not x8622) x7776)
+(or (not x8622) x8621)
+(or x8623 (not x7811))
+(or x8623 (not x7804))
+(or x8623 (not x7796))
+(or x8623 (not x7788))
+(or x7811 x7804 x7796 x7788 (not x8623))
+(or (not x7784) (not x8623) x8624)
+(or (not x8624) x7784)
+(or (not x8624) x8623)
+(or (not x7792) (not x7846) x8625)
+(or (not x8625) x7792)
+(or (not x8625) x7846)
+(or x8626 (not x7818))
+(or x8626 (not x7846))
+(or x7818 x7846 (not x8626))
+(or (not x7800) (not x8626) x8627)
+(or (not x8627) x7800)
+(or (not x8627) x8626)
+(or x8628 (not x7825))
+(or x8628 (not x7818))
+(or x8628 (not x7846))
+(or x7825 x7818 x7846 (not x8628))
+(or (not x7808) (not x8628) x8629)
+(or (not x8629) x7808)
+(or (not x8629) x8628)
+(or x8630 (not x7832))
+(or x8630 (not x7825))
+(or x8630 (not x7818))
+(or x8630 (not x7846))
+(or x7832 x7825 x7818 x7846 (not x8630))
+(or (not x7830) (not x8630) x8631)
+(or (not x8631) x7830)
+(or (not x8631) x8630)
+(or x7718 (not x8631))
+(or x7718 (not x8629))
+(or x7718 (not x8627))
+(or x7718 (not x8625))
+(or x7718 (not x8624))
+(or x7718 (not x8622))
+(or x7718 (not x8620))
+(or x7718 (not x8618))
+(or x7718 (not x8617))
+(or x7718 (not x8615))
+(or x7718 (not x8613))
+(or x7718 (not x8611))
+(or x7718 (not x8610))
+(or x7718 (not x8608))
+(or x7718 (not x8606))
+(or x7718 (not x8604))
+(or x8631 x8629 x8627 x8625 x8624 x8622 x8620 x8618 x8617 x8615 x8613 x8611 x8610 x8608 x8606 x8604 (not x7718))
+(or x7266 (not x8631))
+(or x7266 (not x8629))
+(or x7266 (not x8627))
+(or x7266 (not x8625))
+(or x7266 (not x8624))
+(or x7266 (not x8622))
+(or x7266 (not x8620))
+(or x7266 (not x8618))
+(or x7266 (not x8617))
+(or x7266 (not x8615))
+(or x7266 (not x8613))
+(or x7266 (not x8611))
+(or x7266 (not x8610))
+(or x7266 (not x8608))
+(or x7266 (not x8606))
+(or x7266 (not x8604))
+(or x7266 (not x8603))
+(or x7266 (not x8601))
+(or x7266 (not x8599))
+(or x7266 (not x8597))
+(or x7266 (not x8596))
+(or x7266 (not x8594))
+(or x7266 (not x8592))
+(or x7266 (not x8590))
+(or x7266 (not x8589))
+(or x7266 (not x8587))
+(or x7266 (not x8585))
+(or x7266 (not x8583))
+(or x7266 (not x8582))
+(or x7266 (not x8580))
+(or x7266 (not x8578))
+(or x7266 (not x8576))
+(or x8631 x8629 x8627 x8625 x8624 x8622 x8620 x8618 x8617 x8615 x8613 x8611 x8610 x8608 x8606 x8604 x8603 x8601 x8599 x8597 x8596 x8594 x8592 x8590 x8589 x8587 x8585 x8583 x8582 x8580 x8578 x8576 (not x7266))
+(or (not x7288) (not x7288) (not x7266) (not x7298) x8632)
+(or (not x8632) x7288)
+(or (not x8632) x7288)
+(or (not x8632) x7266)
+(or (not x8632) x7298)
+(or x8633 (not x7264))
+(or x8633 (not x8634))
+(or x7264 x8634 (not x8633))
+(or x8467 (not x8468) x8557)
+(or (not x8557) (not x8467))
+(or (not x8557) x8468)
+(or x8443 (not x8444) x8562)
+(or (not x8562) (not x8443))
+(or (not x8562) x8444)
+(or x8453 (not x8454) x8567)
+(or (not x8567) (not x8453))
+(or (not x8567) x8454)
+(or x8460 (not x8461) x8572)
+(or (not x8572) (not x8460))
+(or (not x8572) x8461)
+(or x8446 (not x8572))
+(or x8446 (not x8567))
+(or x8446 (not x8562))
+(or x8446 (not x8557))
+(or x8572 x8567 x8562 x8557 (not x8446))
+(or (not x7264) (not x8446) x8635)
+(or (not x8635) x7264)
+(or (not x8635) x8446)
+(or x8636 (not x7261))
+(or x8636 (not x8635))
+(or x7261 x8635 (not x8636))
+(or (not x2) (not x7240))
+(or (not x2) x7239)
+(or (not x2) (not x7238))
+(or (not x2) x7237)
+(or (not x2) (not x7236))
+(or (not x8637) (not x7240))
+(or (not x8637) x7239)
+(or (not x8637) (not x7238))
+(or (not x8637) (not x7237))
+(or (not x8637) x7236)
+(or x7240 (not x7239) x7238 x7237 x7236 x7251)
+(or (not x7251) (not x7240))
+(or (not x7251) x7239)
+(or (not x7251) (not x7238))
+(or (not x7251) (not x7237))
+(or (not x7251) (not x7236))
+(or x7240 x7239 (not x7238) (not x7237) (not x7236) x7244)
+(or (not x7244) (not x7240))
+(or (not x7244) (not x7239))
+(or (not x7244) x7238)
+(or (not x7244) x7237)
+(or (not x7244) x7236)
+(or x7240 x7239 (not x7238) (not x7237) x7236 x7243)
+(or (not x7243) (not x7240))
+(or (not x7243) (not x7239))
+(or (not x7243) x7238)
+(or (not x7243) x7237)
+(or (not x7243) (not x7236))
+(or x7240 x7239 (not x7238) x7237 (not x7236) x7235)
+(or (not x7235) (not x7240))
+(or (not x7235) (not x7239))
+(or (not x7235) x7238)
+(or (not x7235) (not x7237))
+(or (not x7235) x7236)
+(or x7240 x7239 (not x7238) x7237 x7236 x7234)
+(or (not x7234) (not x7240))
+(or (not x7234) (not x7239))
+(or (not x7234) x7238)
+(or (not x7234) (not x7237))
+(or (not x7234) (not x7236))
+(or x7240 x7239 x7238 (not x7237) (not x7236) x7233)
+(or (not x7233) (not x7240))
+(or (not x7233) (not x7239))
+(or (not x7233) (not x7238))
+(or (not x7233) x7237)
+(or (not x7233) x7236)
+(or x7240 x7239 x7238 (not x7237) x7236 x7232)
+(or (not x7232) (not x7240))
+(or (not x7232) (not x7239))
+(or (not x7232) (not x7238))
+(or (not x7232) x7237)
+(or (not x7232) (not x7236))
+(or x7240 x7239 x7238 x7237 (not x7236) x7231)
+(or (not x7231) (not x7240))
+(or (not x7231) (not x7239))
+(or (not x7231) (not x7238))
+(or (not x7231) (not x7237))
+(or (not x7231) x7236)
+(or (not x8638) (not x7240))
+(or (not x8638) (not x7239))
+(or (not x8638) (not x7238))
+(or (not x8638) (not x7237))
+(or (not x8638) (not x7236))
+(or x8639 (not x8638))
+(or x8639 (not x7231))
+(or x8639 (not x7232))
+(or x8639 (not x7233))
+(or x8639 (not x7234))
+(or x8639 (not x7235))
+(or x8639 (not x7243))
+(or x8639 (not x7244))
+(or x8639 (not x7251))
+(or x8639 (not x8637))
+(or x8638 x7231 x7232 x7233 x7234 x7235 x7243 x7244 x7251 x8637 (not x8639))
+(or x8640 x7255 x8641)
+(or x8640 (not x7255) (not x8641))
+(or (not x8640) x7255 (not x8641))
+(or (not x8640) (not x7255) x8641)
+(or x8642 x7256 x8643)
+(or x8642 (not x7256) (not x8643))
+(or (not x8642) x7256 (not x8643))
+(or (not x8642) (not x7256) x8643)
+(or x8644 x8645 x8646)
+(or x8644 (not x8645) (not x8646))
+(or (not x8644) x8645 (not x8646))
+(or (not x8644) (not x8645) x8646)
+(or x8647 x8648 x8649)
+(or x8647 (not x8648) (not x8649))
+(or (not x8647) x8648 (not x8649))
+(or (not x8647) (not x8648) x8649)
+(or x8650 x8651 x8652)
+(or x8650 (not x8651) (not x8652))
+(or (not x8650) x8651 (not x8652))
+(or (not x8650) (not x8651) x8652)
+(or x8653 x8654 x8655)
+(or x8653 (not x8654) (not x8655))
+(or (not x8653) x8654 (not x8655))
+(or (not x8653) (not x8654) x8655)
+(or (not x8656) x7254)
+(or (not x8656) x8653)
+(or (not x8656) x8650)
+(or (not x8656) x8647)
+(or (not x8656) x8644)
+(or (not x8656) x8642)
+(or (not x8656) x8640)
+(or x8657 x7248 x8646)
+(or x8657 (not x7248) (not x8646))
+(or (not x8657) x7248 (not x8646))
+(or (not x8657) (not x7248) x8646)
+(or x8658 x7247 x8649)
+(or x8658 (not x7247) (not x8649))
+(or (not x8658) x7247 (not x8649))
+(or (not x8658) (not x7247) x8649)
+(or (not x8659) x7249)
+(or (not x8659) x8658)
+(or (not x8659) x8657)
+(or (not x8659) (not x7254))
+(or x8660 x7254)
+(or x8660 (not x8659))
+(or x8660 x7254)
+(or x8660 x7254)
+(or x8660 (not x8656))
+(or x8660 x7254)
+(or x8660 x7254)
+(or x8660 (not x8659))
+(or x8660 x7254)
+(or x8660 x7254)
+(or x8660 (not x8656))
+(or (not x7254) x8659 (not x7254) (not x7254) x8656 (not x7254) (not x7254) x8659 (not x7254) (not x7254) x8656 (not x8660))
+(or (not x8661) x7392)
+(or (not x8661) (not x7391))
+(or (not x8661) (not x7390))
+(or (not x8661) x7389)
+(or (not x8661) (not x7388))
+(or (not x7392) x7391 x7390 x7389 (not x7388) x8096)
+(or (not x8096) x7392)
+(or (not x8096) (not x7391))
+(or (not x8096) (not x7390))
+(or (not x8096) (not x7389))
+(or (not x8096) x7388)
+(or (not x7392) x7391 x7390 x7389 x7388 x8095)
+(or (not x8095) x7392)
+(or (not x8095) (not x7391))
+(or (not x8095) (not x7390))
+(or (not x8095) (not x7389))
+(or (not x8095) (not x7388))
+(or x8662 (not x8095))
+(or x8662 (not x8096))
+(or x8095 x8096 (not x8662))
+(or (not x8663) x7399)
+(or (not x8663) (not x7398))
+(or (not x8663) (not x7397))
+(or (not x8663) x7396)
+(or (not x8663) (not x7395))
+(or (not x7399) x7398 x7397 x7396 (not x7395) x8118)
+(or (not x8118) x7399)
+(or (not x8118) (not x7398))
+(or (not x8118) (not x7397))
+(or (not x8118) (not x7396))
+(or (not x8118) x7395)
+(or (not x7399) x7398 x7397 x7396 x7395 x8117)
+(or (not x8117) x7399)
+(or (not x8117) (not x7398))
+(or (not x8117) (not x7397))
+(or (not x8117) (not x7396))
+(or (not x8117) (not x7395))
+(or x8664 (not x8117))
+(or x8664 (not x8118))
+(or x8117 x8118 (not x8664))
+(or (not x8665) x7406)
+(or (not x8665) (not x7405))
+(or (not x8665) (not x7404))
+(or (not x8665) x7403)
+(or (not x8665) (not x7402))
+(or (not x7406) x7405 x7404 x7403 (not x7402) x8136)
+(or (not x8136) x7406)
+(or (not x8136) (not x7405))
+(or (not x8136) (not x7404))
+(or (not x8136) (not x7403))
+(or (not x8136) x7402)
+(or (not x7406) x7405 x7404 x7403 x7402 x8135)
+(or (not x8135) x7406)
+(or (not x8135) (not x7405))
+(or (not x8135) (not x7404))
+(or (not x8135) (not x7403))
+(or (not x8135) (not x7402))
+(or x8666 (not x8135))
+(or x8666 (not x8136))
+(or x8135 x8136 (not x8666))
+(or (not x8667) x7413)
+(or (not x8667) (not x7412))
+(or (not x8667) (not x7411))
+(or (not x8667) x7410)
+(or (not x8667) (not x7409))
+(or (not x7413) x7412 x7411 x7410 (not x7409) x8154)
+(or (not x8154) x7413)
+(or (not x8154) (not x7412))
+(or (not x8154) (not x7411))
+(or (not x8154) (not x7410))
+(or (not x8154) x7409)
+(or (not x7413) x7412 x7411 x7410 x7409 x8153)
+(or (not x8153) x7413)
+(or (not x8153) (not x7412))
+(or (not x8153) (not x7411))
+(or (not x8153) (not x7410))
+(or (not x8153) (not x7409))
+(or x8668 (not x8153))
+(or x8668 (not x8154))
+(or x8153 x8154 (not x8668))
+(or (not x8669) x7427)
+(or (not x8669) (not x7426))
+(or (not x8669) (not x7425))
+(or (not x8669) x7424)
+(or (not x8669) (not x7423))
+(or (not x7427) x7426 x7425 x7424 (not x7423) x8172)
+(or (not x8172) x7427)
+(or (not x8172) (not x7426))
+(or (not x8172) (not x7425))
+(or (not x8172) (not x7424))
+(or (not x8172) x7423)
+(or (not x7427) x7426 x7425 x7424 x7423 x8171)
+(or (not x8171) x7427)
+(or (not x8171) (not x7426))
+(or (not x8171) (not x7425))
+(or (not x8171) (not x7424))
+(or (not x8171) (not x7423))
+(or x8670 (not x8171))
+(or x8670 (not x8172))
+(or x8171 x8172 (not x8670))
+(or (not x8671) x7434)
+(or (not x8671) (not x7433))
+(or (not x8671) (not x7432))
+(or (not x8671) x7431)
+(or (not x8671) (not x7430))
+(or (not x7434) x7433 x7432 x7431 (not x7430) x8189)
+(or (not x8189) x7434)
+(or (not x8189) (not x7433))
+(or (not x8189) (not x7432))
+(or (not x8189) (not x7431))
+(or (not x8189) x7430)
+(or (not x7434) x7433 x7432 x7431 x7430 x8188)
+(or (not x8188) x7434)
+(or (not x8188) (not x7433))
+(or (not x8188) (not x7432))
+(or (not x8188) (not x7431))
+(or (not x8188) (not x7430))
+(or x8672 (not x8188))
+(or x8672 (not x8189))
+(or x8188 x8189 (not x8672))
+(or (not x8673) x7441)
+(or (not x8673) (not x7440))
+(or (not x8673) (not x7439))
+(or (not x8673) x7438)
+(or (not x8673) (not x7437))
+(or (not x7441) x7440 x7439 x7438 (not x7437) x8206)
+(or (not x8206) x7441)
+(or (not x8206) (not x7440))
+(or (not x8206) (not x7439))
+(or (not x8206) (not x7438))
+(or (not x8206) x7437)
+(or (not x7441) x7440 x7439 x7438 x7437 x8205)
+(or (not x8205) x7441)
+(or (not x8205) (not x7440))
+(or (not x8205) (not x7439))
+(or (not x8205) (not x7438))
+(or (not x8205) (not x7437))
+(or x8674 (not x8205))
+(or x8674 (not x8206))
+(or x8205 x8206 (not x8674))
+(or (not x8675) x7448)
+(or (not x8675) (not x7447))
+(or (not x8675) (not x7446))
+(or (not x8675) x7445)
+(or (not x8675) (not x7444))
+(or (not x7448) x7447 x7446 x7445 (not x7444) x8223)
+(or (not x8223) x7448)
+(or (not x8223) (not x7447))
+(or (not x8223) (not x7446))
+(or (not x8223) (not x7445))
+(or (not x8223) x7444)
+(or (not x7448) x7447 x7446 x7445 x7444 x8222)
+(or (not x8222) x7448)
+(or (not x8222) (not x7447))
+(or (not x8222) (not x7446))
+(or (not x8222) (not x7445))
+(or (not x8222) (not x7444))
+(or x8676 (not x8222))
+(or x8676 (not x8223))
+(or x8222 x8223 (not x8676))
+(or (not x8677) x7462)
+(or (not x8677) (not x7461))
+(or (not x8677) (not x7460))
+(or (not x8677) x7459)
+(or (not x8677) (not x7458))
+(or (not x7462) x7461 x7460 x7459 (not x7458) x8240)
+(or (not x8240) x7462)
+(or (not x8240) (not x7461))
+(or (not x8240) (not x7460))
+(or (not x8240) (not x7459))
+(or (not x8240) x7458)
+(or (not x7462) x7461 x7460 x7459 x7458 x8239)
+(or (not x8239) x7462)
+(or (not x8239) (not x7461))
+(or (not x8239) (not x7460))
+(or (not x8239) (not x7459))
+(or (not x8239) (not x7458))
+(or x8678 (not x8239))
+(or x8678 (not x8240))
+(or x8239 x8240 (not x8678))
+(or (not x8679) x7469)
+(or (not x8679) (not x7468))
+(or (not x8679) (not x7467))
+(or (not x8679) x7466)
+(or (not x8679) (not x7465))
+(or (not x7469) x7468 x7467 x7466 (not x7465) x8257)
+(or (not x8257) x7469)
+(or (not x8257) (not x7468))
+(or (not x8257) (not x7467))
+(or (not x8257) (not x7466))
+(or (not x8257) x7465)
+(or (not x7469) x7468 x7467 x7466 x7465 x8256)
+(or (not x8256) x7469)
+(or (not x8256) (not x7468))
+(or (not x8256) (not x7467))
+(or (not x8256) (not x7466))
+(or (not x8256) (not x7465))
+(or x8680 (not x8256))
+(or x8680 (not x8257))
+(or x8256 x8257 (not x8680))
+(or (not x8681) x7476)
+(or (not x8681) (not x7475))
+(or (not x8681) (not x7474))
+(or (not x8681) x7473)
+(or (not x8681) (not x7472))
+(or (not x7476) x7475 x7474 x7473 (not x7472) x8274)
+(or (not x8274) x7476)
+(or (not x8274) (not x7475))
+(or (not x8274) (not x7474))
+(or (not x8274) (not x7473))
+(or (not x8274) x7472)
+(or (not x7476) x7475 x7474 x7473 x7472 x8273)
+(or (not x8273) x7476)
+(or (not x8273) (not x7475))
+(or (not x8273) (not x7474))
+(or (not x8273) (not x7473))
+(or (not x8273) (not x7472))
+(or x8682 (not x8273))
+(or x8682 (not x8274))
+(or x8273 x8274 (not x8682))
+(or (not x8683) x7483)
+(or (not x8683) (not x7482))
+(or (not x8683) (not x7481))
+(or (not x8683) x7480)
+(or (not x8683) (not x7479))
+(or (not x7483) x7482 x7481 x7480 (not x7479) x8291)
+(or (not x8291) x7483)
+(or (not x8291) (not x7482))
+(or (not x8291) (not x7481))
+(or (not x8291) (not x7480))
+(or (not x8291) x7479)
+(or (not x7483) x7482 x7481 x7480 x7479 x8290)
+(or (not x8290) x7483)
+(or (not x8290) (not x7482))
+(or (not x8290) (not x7481))
+(or (not x8290) (not x7480))
+(or (not x8290) (not x7479))
+(or x8684 (not x8290))
+(or x8684 (not x8291))
+(or x8290 x8291 (not x8684))
+(or (not x8685) x7497)
+(or (not x8685) (not x7496))
+(or (not x8685) (not x7495))
+(or (not x8685) x7494)
+(or (not x8685) (not x7493))
+(or (not x7497) x7496 x7495 x7494 (not x7493) x8308)
+(or (not x8308) x7497)
+(or (not x8308) (not x7496))
+(or (not x8308) (not x7495))
+(or (not x8308) (not x7494))
+(or (not x8308) x7493)
+(or (not x7497) x7496 x7495 x7494 x7493 x8307)
+(or (not x8307) x7497)
+(or (not x8307) (not x7496))
+(or (not x8307) (not x7495))
+(or (not x8307) (not x7494))
+(or (not x8307) (not x7493))
+(or x8686 (not x8307))
+(or x8686 (not x8308))
+(or x8307 x8308 (not x8686))
+(or (not x8687) x7504)
+(or (not x8687) (not x7503))
+(or (not x8687) (not x7502))
+(or (not x8687) x7501)
+(or (not x8687) (not x7500))
+(or (not x7504) x7503 x7502 x7501 (not x7500) x8325)
+(or (not x8325) x7504)
+(or (not x8325) (not x7503))
+(or (not x8325) (not x7502))
+(or (not x8325) (not x7501))
+(or (not x8325) x7500)
+(or (not x7504) x7503 x7502 x7501 x7500 x8324)
+(or (not x8324) x7504)
+(or (not x8324) (not x7503))
+(or (not x8324) (not x7502))
+(or (not x8324) (not x7501))
+(or (not x8324) (not x7500))
+(or x8688 (not x8324))
+(or x8688 (not x8325))
+(or x8324 x8325 (not x8688))
+(or (not x8689) x7511)
+(or (not x8689) (not x7510))
+(or (not x8689) (not x7509))
+(or (not x8689) x7508)
+(or (not x8689) (not x7507))
+(or (not x7511) x7510 x7509 x7508 (not x7507) x8342)
+(or (not x8342) x7511)
+(or (not x8342) (not x7510))
+(or (not x8342) (not x7509))
+(or (not x8342) (not x7508))
+(or (not x8342) x7507)
+(or (not x7511) x7510 x7509 x7508 x7507 x8341)
+(or (not x8341) x7511)
+(or (not x8341) (not x7510))
+(or (not x8341) (not x7509))
+(or (not x8341) (not x7508))
+(or (not x8341) (not x7507))
+(or x8690 (not x8341))
+(or x8690 (not x8342))
+(or x8341 x8342 (not x8690))
+(or (not x8691) x7518)
+(or (not x8691) (not x7517))
+(or (not x8691) (not x7516))
+(or (not x8691) x7515)
+(or (not x8691) (not x7514))
+(or (not x7518) x7517 x7516 x7515 (not x7514) x8359)
+(or (not x8359) x7518)
+(or (not x8359) (not x7517))
+(or (not x8359) (not x7516))
+(or (not x8359) (not x7515))
+(or (not x8359) x7514)
+(or (not x7518) x7517 x7516 x7515 x7514 x8358)
+(or (not x8358) x7518)
+(or (not x8358) (not x7517))
+(or (not x8358) (not x7516))
+(or (not x8358) (not x7515))
+(or (not x8358) (not x7514))
+(or x8692 (not x8358))
+(or x8692 (not x8359))
+(or x8358 x8359 (not x8692))
+(or (not x8693) x7854)
+(or (not x8693) (not x7853))
+(or (not x8693) (not x7852))
+(or (not x8693) x7851)
+(or (not x8693) (not x7850))
+(or (not x7854) x7853 x7852 x7851 (not x7850) x8376)
+(or (not x8376) x7854)
+(or (not x8376) (not x7853))
+(or (not x8376) (not x7852))
+(or (not x8376) (not x7851))
+(or (not x8376) x7850)
+(or (not x7854) x7853 x7852 x7851 x7850 x8375)
+(or (not x8375) x7854)
+(or (not x8375) (not x7853))
+(or (not x8375) (not x7852))
+(or (not x8375) (not x7851))
+(or (not x8375) (not x7850))
+(or x8694 (not x8375))
+(or x8694 (not x8376))
+(or x8375 x8376 (not x8694))
+(or (not x8695) x7861)
+(or (not x8695) (not x7860))
+(or (not x8695) (not x7859))
+(or (not x8695) x7858)
+(or (not x8695) (not x7857))
+(or (not x7861) x7860 x7859 x7858 (not x7857) x8393)
+(or (not x8393) x7861)
+(or (not x8393) (not x7860))
+(or (not x8393) (not x7859))
+(or (not x8393) (not x7858))
+(or (not x8393) x7857)
+(or (not x7861) x7860 x7859 x7858 x7857 x8392)
+(or (not x8392) x7861)
+(or (not x8392) (not x7860))
+(or (not x8392) (not x7859))
+(or (not x8392) (not x7858))
+(or (not x8392) (not x7857))
+(or x8696 (not x8392))
+(or x8696 (not x8393))
+(or x8392 x8393 (not x8696))
+(or (not x8697) x7868)
+(or (not x8697) (not x7867))
+(or (not x8697) (not x7866))
+(or (not x8697) x7865)
+(or (not x8697) (not x7864))
+(or (not x7868) x7867 x7866 x7865 (not x7864) x8410)
+(or (not x8410) x7868)
+(or (not x8410) (not x7867))
+(or (not x8410) (not x7866))
+(or (not x8410) (not x7865))
+(or (not x8410) x7864)
+(or (not x7868) x7867 x7866 x7865 x7864 x8409)
+(or (not x8409) x7868)
+(or (not x8409) (not x7867))
+(or (not x8409) (not x7866))
+(or (not x8409) (not x7865))
+(or (not x8409) (not x7864))
+(or x8698 (not x8409))
+(or x8698 (not x8410))
+(or x8409 x8410 (not x8698))
+(or (not x8699) x7875)
+(or (not x8699) (not x7874))
+(or (not x8699) (not x7873))
+(or (not x8699) x7872)
+(or (not x8699) (not x7871))
+(or (not x7875) x7874 x7873 x7872 (not x7871) x8427)
+(or (not x8427) x7875)
+(or (not x8427) (not x7874))
+(or (not x8427) (not x7873))
+(or (not x8427) (not x7872))
+(or (not x8427) x7871)
+(or (not x7875) x7874 x7873 x7872 x7871 x8426)
+(or (not x8426) x7875)
+(or (not x8426) (not x7874))
+(or (not x8426) (not x7873))
+(or (not x8426) (not x7872))
+(or (not x8426) (not x7871))
+(or x8700 (not x8426))
+(or x8700 (not x8427))
+(or x8426 x8427 (not x8700))
+(or (not x7249))
+(or (not x7247))
+(or (not x7248))
+(or (not x7261))
+(or (not x8461))
+(or (not x8454))
+(or (not x8444))
+(or (not x8468))
+(or (not x8634))
+(or (not x7264))
+(or (not x8460))
+(or (not x8453))
+(or (not x8443))
+(or (not x8467))
+(or (not x8471))
+(or (not x8463))
+(or (not x8456))
+(or (not x8448))
+(or (not x7871))
+(or (not x7872))
+(or (not x7873))
+(or (not x7874))
+(or x7875)
+(or (not x7864))
+(or (not x7865))
+(or (not x7866))
+(or (not x7867))
+(or x7868)
+(or (not x7857))
+(or (not x7858))
+(or (not x7859))
+(or (not x7860))
+(or x7861)
+(or (not x7850))
+(or (not x7851))
+(or (not x7852))
+(or (not x7853))
+(or x7854)
+(or (not x7514))
+(or (not x7515))
+(or (not x7516))
+(or (not x7517))
+(or x7518)
+(or (not x7507))
+(or (not x7508))
+(or (not x7509))
+(or (not x7510))
+(or x7511)
+(or (not x7500))
+(or (not x7501))
+(or (not x7502))
+(or (not x7503))
+(or x7504)
+(or (not x7493))
+(or (not x7494))
+(or (not x7495))
+(or (not x7496))
+(or x7497)
+(or (not x7479))
+(or (not x7480))
+(or (not x7481))
+(or (not x7482))
+(or x7483)
+(or (not x7472))
+(or (not x7473))
+(or (not x7474))
+(or (not x7475))
+(or x7476)
+(or (not x7465))
+(or (not x7466))
+(or (not x7467))
+(or (not x7468))
+(or x7469)
+(or (not x7458))
+(or (not x7459))
+(or (not x7460))
+(or (not x7461))
+(or x7462)
+(or (not x7444))
+(or (not x7445))
+(or (not x7446))
+(or (not x7447))
+(or x7448)
+(or (not x7437))
+(or (not x7438))
+(or (not x7439))
+(or (not x7440))
+(or x7441)
+(or (not x7430))
+(or (not x7431))
+(or (not x7432))
+(or (not x7433))
+(or x7434)
+(or (not x7423))
+(or (not x7424))
+(or (not x7425))
+(or (not x7426))
+(or x7427)
+(or (not x7409))
+(or (not x7410))
+(or (not x7411))
+(or (not x7412))
+(or x7413)
+(or (not x7402))
+(or (not x7403))
+(or (not x7404))
+(or (not x7405))
+(or x7406)
+(or (not x7395))
+(or (not x7396))
+(or (not x7397))
+(or (not x7398))
+(or x7399)
+(or (not x7388))
+(or (not x7389))
+(or (not x7390))
+(or (not x7391))
+(or x7392)
+(or (not x7717))
+(or (not x7830))
+(or (not x7832))
+(or (not x7825))
+(or (not x7818))
+(or (not x7846))
+(or (not x7784))
+(or (not x7811))
+(or (not x7804))
+(or (not x7796))
+(or (not x7788))
+(or (not x7754))
+(or (not x7756))
+(or (not x7748))
+(or (not x7738))
+(or (not x7905))
+(or (not x7808))
+(or (not x7800))
+(or (not x7792))
+(or (not x7776))
+(or (not x7768))
+(or (not x7760))
+(or (not x7778))
+(or (not x7752))
+(or (not x7743))
+(or (not x7731))
+(or (not x7839))
+(or (not x7745))
+(or (not x7734))
+(or (not x7725))
+(or (not x7382))
+(or (not x7384))
+(or (not x7377))
+(or (not x7370))
+(or (not x7489))
+(or (not x7361))
+(or (not x7363))
+(or (not x7355))
+(or (not x7347))
+(or (not x7454))
+(or (not x7337))
+(or (not x7339))
+(or (not x7331))
+(or (not x7323))
+(or (not x7419))
+(or (not x7313))
+(or (not x7315))
+(or (not x7307))
+(or (not x7295))
+(or (not x7548))
+(or (not x7359))
+(or (not x7351))
+(or (not x7343))
+(or (not x7335))
+(or (not x7327))
+(or (not x7319))
+(or (not x7311))
+(or (not x7302))
+(or (not x7287))
+(or (not x7304))
+(or (not x7291))
+(or (not x7281))
+(or (not x7780))
+(or (not x7772))
+(or (not x7764))
+(or (not x7288))
+(or (not x7274))
+(or (not x7270))
+(or (not x7265))
+(or (not x7262))
+(or (not x8165))
+(or (not x8147))
+(or (not x8129))
+(or (not x8107))
+(or (not x8108))
+(or (not x8109))
+(or (not x8110))
+(or (not x8111))
+(or x7236)
+(or (not x7237))
+(or (not x7238))
+(or (not x7239))
+(or (not x7240))
+(or x8700 x8699)
+(or x8698 x8697)
+(or x8696 x8695)
+(or x8694 x8693)
+(or x8692 x8691)
+(or x8690 x8689)
+(or x8688 x8687)
+(or x8686 x8685)
+(or x8684 x8683)
+(or x8682 x8681)
+(or x8680 x8679)
+(or x8678 x8677)
+(or x8676 x8675)
+(or x8674 x8673)
+(or x8672 x8671)
+(or x8670 x8669)
+(or x8668 x8667)
+(or x8666 x8665)
+(or x8664 x8663)
+(or x8662 x8661)
+(or (not x7254) x8660)
+(or x8639 x2)
+(or (not x7174) x8655)
+(or x7174 (not x8655))
+(or (not x7171) x8652)
+(or x7171 (not x8652))
+(or (not x7168) x8649)
+(or x7168 (not x8649))
+(or (not x7165) x8646)
+(or x7165 (not x8646))
+(or (not x7162) x8643)
+(or x7162 (not x8643))
+(or (not x7160) x8641)
+(or x7160 (not x8641))
+(or (not x5768) x8636)
+(or x5768 (not x8636))
+(or (not x5766) x8634)
+(or x5766 (not x8634))
+(or (not x5767) x8633)
+(or x5767 (not x8633))
+(or (not x5780) x8632)
+(or x5780 (not x8632))
+(or (not x6980) x8574)
+(or x6980 (not x8574))
+(or (not x6973) x8569)
+(or x6973 (not x8569))
+(or (not x6963) x8564)
+(or x6963 (not x8564))
+(or (not x6987) x8559)
+(or x6987 (not x8559))
+(or (not x7153) x7902)
+(or x7153 (not x7902))
+(or (not x5783) x8542)
+(or x5783 (not x8542))
+(or (not x6979) x8494)
+(or x6979 (not x8494))
+(or (not x6972) x8490)
+(or x6972 (not x8490))
+(or (not x6962) x8486)
+(or x6962 (not x8486))
+(or (not x6986) x8481)
+(or x6986 (not x8481))
+(or (not x6990) x8474)
+(or x6990 (not x8474))
+(or (not x6982) x8465)
+(or x6982 (not x8465))
+(or (not x6975) x8458)
+(or x6975 (not x8458))
+(or (not x6967) x8451)
+(or x6967 (not x8451))
+(or (not x6390) x8441)
+(or x6390 (not x8441))
+(or (not x6391) x8437)
+(or x6391 (not x8437))
+(or (not x6392) x8435)
+(or x6392 (not x8435))
+(or (not x6393) x8433)
+(or x6393 (not x8433))
+(or (not x6394) x8425)
+(or x6394 (not x8425))
+(or (not x6383) x8424)
+(or x6383 (not x8424))
+(or (not x6384) x8420)
+(or x6384 (not x8420))
+(or (not x6385) x8418)
+(or x6385 (not x8418))
+(or (not x6386) x8416)
+(or x6386 (not x8416))
+(or (not x6387) x8408)
+(or x6387 (not x8408))
+(or (not x6376) x8407)
+(or x6376 (not x8407))
+(or (not x6377) x8403)
+(or x6377 (not x8403))
+(or (not x6378) x8401)
+(or x6378 (not x8401))
+(or (not x6379) x8399)
+(or x6379 (not x8399))
+(or (not x6380) x8391)
+(or x6380 (not x8391))
+(or (not x6369) x8390)
+(or x6369 (not x8390))
+(or (not x6370) x8386)
+(or x6370 (not x8386))
+(or (not x6371) x8384)
+(or x6371 (not x8384))
+(or (not x6372) x8382)
+(or x6372 (not x8382))
+(or (not x6373) x8374)
+(or x6373 (not x8374))
+(or (not x6033) x8373)
+(or x6033 (not x8373))
+(or (not x6034) x8369)
+(or x6034 (not x8369))
+(or (not x6035) x8367)
+(or x6035 (not x8367))
+(or (not x6036) x8365)
+(or x6036 (not x8365))
+(or (not x6037) x8357)
+(or x6037 (not x8357))
+(or (not x6026) x8356)
+(or x6026 (not x8356))
+(or (not x6027) x8352)
+(or x6027 (not x8352))
+(or (not x6028) x8350)
+(or x6028 (not x8350))
+(or (not x6029) x8348)
+(or x6029 (not x8348))
+(or (not x6030) x8340)
+(or x6030 (not x8340))
+(or (not x6019) x8339)
+(or x6019 (not x8339))
+(or (not x6020) x8335)
+(or x6020 (not x8335))
+(or (not x6021) x8333)
+(or x6021 (not x8333))
+(or (not x6022) x8331)
+(or x6022 (not x8331))
+(or (not x6023) x8323)
+(or x6023 (not x8323))
+(or (not x6012) x8322)
+(or x6012 (not x8322))
+(or (not x6013) x8318)
+(or x6013 (not x8318))
+(or (not x6014) x8316)
+(or x6014 (not x8316))
+(or (not x6015) x8314)
+(or x6015 (not x8314))
+(or (not x6016) x8306)
+(or x6016 (not x8306))
+(or (not x5998) x8305)
+(or x5998 (not x8305))
+(or (not x5999) x8301)
+(or x5999 (not x8301))
+(or (not x6000) x8299)
+(or x6000 (not x8299))
+(or (not x6001) x8297)
+(or x6001 (not x8297))
+(or (not x6002) x8289)
+(or x6002 (not x8289))
+(or (not x5991) x8288)
+(or x5991 (not x8288))
+(or (not x5992) x8284)
+(or x5992 (not x8284))
+(or (not x5993) x8282)
+(or x5993 (not x8282))
+(or (not x5994) x8280)
+(or x5994 (not x8280))
+(or (not x5995) x8272)
+(or x5995 (not x8272))
+(or (not x5984) x8271)
+(or x5984 (not x8271))
+(or (not x5985) x8267)
+(or x5985 (not x8267))
+(or (not x5986) x8265)
+(or x5986 (not x8265))
+(or (not x5987) x8263)
+(or x5987 (not x8263))
+(or (not x5988) x8255)
+(or x5988 (not x8255))
+(or (not x5977) x8254)
+(or x5977 (not x8254))
+(or (not x5978) x8250)
+(or x5978 (not x8250))
+(or (not x5979) x8248)
+(or x5979 (not x8248))
+(or (not x5980) x8246)
+(or x5980 (not x8246))
+(or (not x5981) x8238)
+(or x5981 (not x8238))
+(or (not x5963) x8237)
+(or x5963 (not x8237))
+(or (not x5964) x8233)
+(or x5964 (not x8233))
+(or (not x5965) x8231)
+(or x5965 (not x8231))
+(or (not x5966) x8229)
+(or x5966 (not x8229))
+(or (not x5967) x8221)
+(or x5967 (not x8221))
+(or (not x5956) x8220)
+(or x5956 (not x8220))
+(or (not x5957) x8216)
+(or x5957 (not x8216))
+(or (not x5958) x8214)
+(or x5958 (not x8214))
+(or (not x5959) x8212)
+(or x5959 (not x8212))
+(or (not x5960) x8204)
+(or x5960 (not x8204))
+(or (not x5949) x8203)
+(or x5949 (not x8203))
+(or (not x5950) x8199)
+(or x5950 (not x8199))
+(or (not x5951) x8197)
+(or x5951 (not x8197))
+(or (not x5952) x8195)
+(or x5952 (not x8195))
+(or (not x5953) x8187)
+(or x5953 (not x8187))
+(or (not x5942) x8186)
+(or x5942 (not x8186))
+(or (not x5943) x8182)
+(or x5943 (not x8182))
+(or (not x5944) x8180)
+(or x5944 (not x8180))
+(or (not x5945) x8178)
+(or x5945 (not x8178))
+(or (not x5946) x8170)
+(or x5946 (not x8170))
+(or (not x5928) x8169)
+(or x5928 (not x8169))
+(or (not x5929) x8164)
+(or x5929 (not x8164))
+(or (not x5930) x8162)
+(or x5930 (not x8162))
+(or (not x5931) x8160)
+(or x5931 (not x8160))
+(or (not x5932) x8152)
+(or x5932 (not x8152))
+(or (not x5921) x8151)
+(or x5921 (not x8151))
+(or (not x5922) x8146)
+(or x5922 (not x8146))
+(or (not x5923) x8144)
+(or x5923 (not x8144))
+(or (not x5924) x8142)
+(or x5924 (not x8142))
+(or (not x5925) x8134)
+(or x5925 (not x8134))
+(or (not x5914) x8133)
+(or x5914 (not x8133))
+(or (not x5915) x8128)
+(or x5915 (not x8128))
+(or (not x5916) x8126)
+(or x5916 (not x8126))
+(or (not x5917) x8124)
+(or x5917 (not x8124))
+(or (not x5918) x8116)
+(or x5918 (not x8116))
+(or (not x5907) x8115)
+(or x5907 (not x8115))
+(or (not x5908) x8106)
+(or x5908 (not x8106))
+(or (not x5909) x8104)
+(or x5909 (not x8104))
+(or (not x5910) x8102)
+(or x5910 (not x8102))
+(or (not x5911) x8094)
+(or x5911 (not x8094))
+(or (not x6236) x8093)
+(or x6236 (not x8093))
+(or (not x6349) x8089)
+(or x6349 (not x8089))
+(or (not x6351) x7870)
+(or x6351 (not x7870))
+(or (not x6344) x7863)
+(or x6344 (not x7863))
+(or (not x6337) x7856)
+(or x6337 (not x7856))
+(or (not x6365) x7849)
+(or x6365 (not x7849))
+(or (not x6303) x7848)
+(or x6303 (not x7848))
+(or (not x6330) x7967)
+(or x6330 (not x7967))
+(or (not x6323) x7954)
+(or x6323 (not x7954))
+(or (not x6315) x7951)
+(or x6315 (not x7951))
+(or (not x6307) x7952)
+(or x6307 (not x7952))
+(or (not x6273) x7841)
+(or x6273 (not x7841))
+(or (not x6275) x7925)
+(or x6275 (not x7925))
+(or (not x6267) x7910)
+(or x6267 (not x7910))
+(or (not x6257) x7907)
+(or x6257 (not x7907))
+(or (not x6424) x7908)
+(or x6424 (not x7908))
+(or (not x6327) x7834)
+(or x6327 (not x7834))
+(or (not x6319) x7827)
+(or x6319 (not x7827))
+(or (not x6311) x7820)
+(or x6311 (not x7820))
+(or (not x6295) x7813)
+(or x6295 (not x7813))
+(or (not x6287) x7806)
+(or x6287 (not x7806))
+(or (not x6279) x7798)
+(or x6279 (not x7798))
+(or (not x6297) x7790)
+(or x6297 (not x7790))
+(or (not x6271) x7782)
+(or x6271 (not x7782))
+(or (not x6262) x7774)
+(or x6262 (not x7774))
+(or (not x6250) x7766)
+(or x6250 (not x7766))
+(or (not x6358) x7931)
+(or x6358 (not x7931))
+(or (not x6264) x7758)
+(or x6264 (not x7758))
+(or (not x6253) x7750)
+(or x6253 (not x7750))
+(or (not x6244) x7741)
+(or x6244 (not x7741))
+(or (not x5901) x7724)
+(or x5901 (not x7724))
+(or (not x5903) x7513)
+(or x5903 (not x7513))
+(or (not x5896) x7506)
+(or x5896 (not x7506))
+(or (not x5889) x7499)
+(or x5889 (not x7499))
+(or (not x6008) x7492)
+(or x6008 (not x7492))
+(or (not x5880) x7491)
+(or x5880 (not x7491))
+(or (not x5882) x7478)
+(or x5882 (not x7478))
+(or (not x5874) x7471)
+(or x5874 (not x7471))
+(or (not x5866) x7464)
+(or x5866 (not x7464))
+(or (not x5973) x7457)
+(or x5973 (not x7457))
+(or (not x5856) x7456)
+(or x5856 (not x7456))
+(or (not x5858) x7443)
+(or x5858 (not x7443))
+(or (not x5850) x7436)
+(or x5850 (not x7436))
+(or (not x5842) x7429)
+(or x5842 (not x7429))
+(or (not x5938) x7422)
+(or x5938 (not x7422))
+(or (not x5832) x7421)
+(or x5832 (not x7421))
+(or (not x5834) x7408)
+(or x5834 (not x7408))
+(or (not x5826) x7401)
+(or x5826 (not x7401))
+(or (not x5814) x7394)
+(or x5814 (not x7394))
+(or (not x6067) x7387)
+(or x6067 (not x7387))
+(or (not x5878) x7386)
+(or x5878 (not x7386))
+(or (not x5870) x7379)
+(or x5870 (not x7379))
+(or (not x5862) x7372)
+(or x5862 (not x7372))
+(or (not x5854) x7365)
+(or x5854 (not x7365))
+(or (not x5846) x7357)
+(or x5846 (not x7357))
+(or (not x5838) x7349)
+(or x5838 (not x7349))
+(or (not x5830) x7341)
+(or x5830 (not x7341))
+(or (not x5821) x7333)
+(or x5821 (not x7333))
+(or (not x5806) x7325)
+(or x5806 (not x7325))
+(or (not x5823) x7317)
+(or x5823 (not x7317))
+(or (not x5810) x7309)
+(or x5810 (not x7309))
+(or (not x5800) x7300)
+(or x5800 (not x7300))
+(or (not x6299) x7946)
+(or x6299 (not x7946))
+(or (not x6291) x7933)
+(or x6291 (not x7933))
+(or (not x6283) x7930)
+(or x6283 (not x7930))
+(or (not x5807) x7280)
+(or x5807 (not x7280))
+(or (not x5793) x7279)
+(or x5793 (not x7279))
+(or (not x5789) x7276)
+(or x5789 (not x7276))
+(or (not x5784) x7272)
+(or x5784 (not x7272))
+(or (not x5781) x7268)
+(or x5781 (not x7268))
+(or (not x6684) x7260)
+(or x6684 (not x7260))
+(or (not x6666) x7259)
+(or x6666 (not x7259))
+(or (not x6648) x7258)
+(or x6648 (not x7258))
+(or (not x6626) x7257)
+(or x6626 (not x7257))
+(or (not x6627) x8648)
+(or x6627 (not x8648))
+(or (not x6628) x8645)
+(or x6628 (not x8645))
+(or (not x6629) x8654)
+(or x6629 (not x8654))
+(or (not x6630) x8651)
+(or x6630 (not x8651))
+(or (not x5755) x7253)
+(or x5755 (not x7253))
+(or (not x5756) x7245)
+(or x5756 (not x7245))
+(or (not x5757) x7242)
+(or x5757 (not x7242))
+(or (not x5758) x7241)
+(or x5758 (not x7241))
+(or (not x5759) x7230)
+(or x5759 (not x7230))
+(or x8700 x8699)
+(or x8698 x8697)
+(or x8696 x8695)
+(or x8694 x8693)
+(or x8692 x8691)
+(or x8690 x8689)
+(or x8688 x8687)
+(or x8686 x8685)
+(or x8684 x8683)
+(or x8682 x8681)
+(or x8680 x8679)
+(or x8678 x8677)
+(or x8676 x8675)
+(or x8674 x8673)
+(or x8672 x8671)
+(or x8670 x8669)
+(or x8668 x8667)
+(or x8666 x8665)
+(or x8664 x8663)
+(or x8662 x8661)
+(or (not x7254) x8660)
+(or x8639 x2)
+(or x7219 x7218)
+(or x7217 x7216)
+(or x7215 x7214)
+(or x7213 x7212)
+(or x7211 x7210)
+(or x7209 x7208)
+(or x7207 x7206)
+(or x7205 x7204)
+(or x7203 x7202)
+(or x7201 x7200)
+(or x7199 x7198)
+(or x7197 x7196)
+(or x7195 x7194)
+(or x7193 x7192)
+(or x7191 x7190)
+(or x7189 x7188)
+(or x7187 x7186)
+(or x7185 x7184)
+(or x7183 x7182)
+(or x7181 x7180)
+(or (not x5773) x7179)
+(or x7158 x3)
+(or (not x5693) x7174)
+(or x5693 (not x7174))
+(or (not x5690) x7171)
+(or x5690 (not x7171))
+(or (not x5687) x7168)
+(or x5687 (not x7168))
+(or (not x5684) x7165)
+(or x5684 (not x7165))
+(or (not x5681) x7162)
+(or x5681 (not x7162))
+(or (not x5679) x7160)
+(or x5679 (not x7160))
+(or (not x4287) x7155)
+(or x4287 (not x7155))
+(or (not x4285) x7153)
+(or x4285 (not x7153))
+(or (not x4286) x7152)
+(or x4286 (not x7152))
+(or (not x4299) x7151)
+(or x4299 (not x7151))
+(or (not x5499) x7093)
+(or x5499 (not x7093))
+(or (not x5492) x7088)
+(or x5492 (not x7088))
+(or (not x5482) x7083)
+(or x5482 (not x7083))
+(or (not x5506) x7078)
+(or x5506 (not x7078))
+(or (not x5672) x6421)
+(or x5672 (not x6421))
+(or (not x4302) x7061)
+(or x4302 (not x7061))
+(or (not x5498) x7013)
+(or x5498 (not x7013))
+(or (not x5491) x7009)
+(or x5491 (not x7009))
+(or (not x5481) x7005)
+(or x5481 (not x7005))
+(or (not x5505) x7000)
+(or x5505 (not x7000))
+(or (not x5509) x6993)
+(or x5509 (not x6993))
+(or (not x5501) x6984)
+(or x5501 (not x6984))
+(or (not x5494) x6977)
+(or x5494 (not x6977))
+(or (not x5486) x6970)
+(or x5486 (not x6970))
+(or (not x4909) x6960)
+(or x4909 (not x6960))
+(or (not x4910) x6956)
+(or x4910 (not x6956))
+(or (not x4911) x6954)
+(or x4911 (not x6954))
+(or (not x4912) x6952)
+(or x4912 (not x6952))
+(or (not x4913) x6944)
+(or x4913 (not x6944))
+(or (not x4902) x6943)
+(or x4902 (not x6943))
+(or (not x4903) x6939)
+(or x4903 (not x6939))
+(or (not x4904) x6937)
+(or x4904 (not x6937))
+(or (not x4905) x6935)
+(or x4905 (not x6935))
+(or (not x4906) x6927)
+(or x4906 (not x6927))
+(or (not x4895) x6926)
+(or x4895 (not x6926))
+(or (not x4896) x6922)
+(or x4896 (not x6922))
+(or (not x4897) x6920)
+(or x4897 (not x6920))
+(or (not x4898) x6918)
+(or x4898 (not x6918))
+(or (not x4899) x6910)
+(or x4899 (not x6910))
+(or (not x4888) x6909)
+(or x4888 (not x6909))
+(or (not x4889) x6905)
+(or x4889 (not x6905))
+(or (not x4890) x6903)
+(or x4890 (not x6903))
+(or (not x4891) x6901)
+(or x4891 (not x6901))
+(or (not x4892) x6893)
+(or x4892 (not x6893))
+(or (not x4552) x6892)
+(or x4552 (not x6892))
+(or (not x4553) x6888)
+(or x4553 (not x6888))
+(or (not x4554) x6886)
+(or x4554 (not x6886))
+(or (not x4555) x6884)
+(or x4555 (not x6884))
+(or (not x4556) x6876)
+(or x4556 (not x6876))
+(or (not x4545) x6875)
+(or x4545 (not x6875))
+(or (not x4546) x6871)
+(or x4546 (not x6871))
+(or (not x4547) x6869)
+(or x4547 (not x6869))
+(or (not x4548) x6867)
+(or x4548 (not x6867))
+(or (not x4549) x6859)
+(or x4549 (not x6859))
+(or (not x4538) x6858)
+(or x4538 (not x6858))
+(or (not x4539) x6854)
+(or x4539 (not x6854))
+(or (not x4540) x6852)
+(or x4540 (not x6852))
+(or (not x4541) x6850)
+(or x4541 (not x6850))
+(or (not x4542) x6842)
+(or x4542 (not x6842))
+(or (not x4531) x6841)
+(or x4531 (not x6841))
+(or (not x4532) x6837)
+(or x4532 (not x6837))
+(or (not x4533) x6835)
+(or x4533 (not x6835))
+(or (not x4534) x6833)
+(or x4534 (not x6833))
+(or (not x4535) x6825)
+(or x4535 (not x6825))
+(or (not x4517) x6824)
+(or x4517 (not x6824))
+(or (not x4518) x6820)
+(or x4518 (not x6820))
+(or (not x4519) x6818)
+(or x4519 (not x6818))
+(or (not x4520) x6816)
+(or x4520 (not x6816))
+(or (not x4521) x6808)
+(or x4521 (not x6808))
+(or (not x4510) x6807)
+(or x4510 (not x6807))
+(or (not x4511) x6803)
+(or x4511 (not x6803))
+(or (not x4512) x6801)
+(or x4512 (not x6801))
+(or (not x4513) x6799)
+(or x4513 (not x6799))
+(or (not x4514) x6791)
+(or x4514 (not x6791))
+(or (not x4503) x6790)
+(or x4503 (not x6790))
+(or (not x4504) x6786)
+(or x4504 (not x6786))
+(or (not x4505) x6784)
+(or x4505 (not x6784))
+(or (not x4506) x6782)
+(or x4506 (not x6782))
+(or (not x4507) x6774)
+(or x4507 (not x6774))
+(or (not x4496) x6773)
+(or x4496 (not x6773))
+(or (not x4497) x6769)
+(or x4497 (not x6769))
+(or (not x4498) x6767)
+(or x4498 (not x6767))
+(or (not x4499) x6765)
+(or x4499 (not x6765))
+(or (not x4500) x6757)
+(or x4500 (not x6757))
+(or (not x4482) x6756)
+(or x4482 (not x6756))
+(or (not x4483) x6752)
+(or x4483 (not x6752))
+(or (not x4484) x6750)
+(or x4484 (not x6750))
+(or (not x4485) x6748)
+(or x4485 (not x6748))
+(or (not x4486) x6740)
+(or x4486 (not x6740))
+(or (not x4475) x6739)
+(or x4475 (not x6739))
+(or (not x4476) x6735)
+(or x4476 (not x6735))
+(or (not x4477) x6733)
+(or x4477 (not x6733))
+(or (not x4478) x6731)
+(or x4478 (not x6731))
+(or (not x4479) x6723)
+(or x4479 (not x6723))
+(or (not x4468) x6722)
+(or x4468 (not x6722))
+(or (not x4469) x6718)
+(or x4469 (not x6718))
+(or (not x4470) x6716)
+(or x4470 (not x6716))
+(or (not x4471) x6714)
+(or x4471 (not x6714))
+(or (not x4472) x6706)
+(or x4472 (not x6706))
+(or (not x4461) x6705)
+(or x4461 (not x6705))
+(or (not x4462) x6701)
+(or x4462 (not x6701))
+(or (not x4463) x6699)
+(or x4463 (not x6699))
+(or (not x4464) x6697)
+(or x4464 (not x6697))
+(or (not x4465) x6689)
+(or x4465 (not x6689))
+(or (not x4447) x6688)
+(or x4447 (not x6688))
+(or (not x4448) x6683)
+(or x4448 (not x6683))
+(or (not x4449) x6681)
+(or x4449 (not x6681))
+(or (not x4450) x6679)
+(or x4450 (not x6679))
+(or (not x4451) x6671)
+(or x4451 (not x6671))
+(or (not x4440) x6670)
+(or x4440 (not x6670))
+(or (not x4441) x6665)
+(or x4441 (not x6665))
+(or (not x4442) x6663)
+(or x4442 (not x6663))
+(or (not x4443) x6661)
+(or x4443 (not x6661))
+(or (not x4444) x6653)
+(or x4444 (not x6653))
+(or (not x4433) x6652)
+(or x4433 (not x6652))
+(or (not x4434) x6647)
+(or x4434 (not x6647))
+(or (not x4435) x6645)
+(or x4435 (not x6645))
+(or (not x4436) x6643)
+(or x4436 (not x6643))
+(or (not x4437) x6635)
+(or x4437 (not x6635))
+(or (not x4426) x6634)
+(or x4426 (not x6634))
+(or (not x4427) x6625)
+(or x4427 (not x6625))
+(or (not x4428) x6623)
+(or x4428 (not x6623))
+(or (not x4429) x6621)
+(or x4429 (not x6621))
+(or (not x4430) x6613)
+(or x4430 (not x6613))
+(or (not x4755) x6612)
+(or x4755 (not x6612))
+(or (not x4868) x6608)
+(or x4868 (not x6608))
+(or (not x4870) x6389)
+(or x4870 (not x6389))
+(or (not x4863) x6382)
+(or x4863 (not x6382))
+(or (not x4856) x6375)
+(or x4856 (not x6375))
+(or (not x4884) x6368)
+(or x4884 (not x6368))
+(or (not x4822) x6367)
+(or x4822 (not x6367))
+(or (not x4849) x6486)
+(or x4849 (not x6486))
+(or (not x4842) x6473)
+(or x4842 (not x6473))
+(or (not x4834) x6470)
+(or x4834 (not x6470))
+(or (not x4826) x6471)
+(or x4826 (not x6471))
+(or (not x4792) x6360)
+(or x4792 (not x6360))
+(or (not x4794) x6444)
+(or x4794 (not x6444))
+(or (not x4786) x6429)
+(or x4786 (not x6429))
+(or (not x4776) x6426)
+(or x4776 (not x6426))
+(or (not x4943) x6427)
+(or x4943 (not x6427))
+(or (not x4846) x6353)
+(or x4846 (not x6353))
+(or (not x4838) x6346)
+(or x4838 (not x6346))
+(or (not x4830) x6339)
+(or x4830 (not x6339))
+(or (not x4814) x6332)
+(or x4814 (not x6332))
+(or (not x4806) x6325)
+(or x4806 (not x6325))
+(or (not x4798) x6317)
+(or x4798 (not x6317))
+(or (not x4816) x6309)
+(or x4816 (not x6309))
+(or (not x4790) x6301)
+(or x4790 (not x6301))
+(or (not x4781) x6293)
+(or x4781 (not x6293))
+(or (not x4769) x6285)
+(or x4769 (not x6285))
+(or (not x4877) x6450)
+(or x4877 (not x6450))
+(or (not x4783) x6277)
+(or x4783 (not x6277))
+(or (not x4772) x6269)
+(or x4772 (not x6269))
+(or (not x4763) x6260)
+(or x4763 (not x6260))
+(or (not x4420) x6243)
+(or x4420 (not x6243))
+(or (not x4422) x6032)
+(or x4422 (not x6032))
+(or (not x4415) x6025)
+(or x4415 (not x6025))
+(or (not x4408) x6018)
+(or x4408 (not x6018))
+(or (not x4527) x6011)
+(or x4527 (not x6011))
+(or (not x4399) x6010)
+(or x4399 (not x6010))
+(or (not x4401) x5997)
+(or x4401 (not x5997))
+(or (not x4393) x5990)
+(or x4393 (not x5990))
+(or (not x4385) x5983)
+(or x4385 (not x5983))
+(or (not x4492) x5976)
+(or x4492 (not x5976))
+(or (not x4375) x5975)
+(or x4375 (not x5975))
+(or (not x4377) x5962)
+(or x4377 (not x5962))
+(or (not x4369) x5955)
+(or x4369 (not x5955))
+(or (not x4361) x5948)
+(or x4361 (not x5948))
+(or (not x4457) x5941)
+(or x4457 (not x5941))
+(or (not x4351) x5940)
+(or x4351 (not x5940))
+(or (not x4353) x5927)
+(or x4353 (not x5927))
+(or (not x4345) x5920)
+(or x4345 (not x5920))
+(or (not x4333) x5913)
+(or x4333 (not x5913))
+(or (not x4586) x5906)
+(or x4586 (not x5906))
+(or (not x4397) x5905)
+(or x4397 (not x5905))
+(or (not x4389) x5898)
+(or x4389 (not x5898))
+(or (not x4381) x5891)
+(or x4381 (not x5891))
+(or (not x4373) x5884)
+(or x4373 (not x5884))
+(or (not x4365) x5876)
+(or x4365 (not x5876))
+(or (not x4357) x5868)
+(or x4357 (not x5868))
+(or (not x4349) x5860)
+(or x4349 (not x5860))
+(or (not x4340) x5852)
+(or x4340 (not x5852))
+(or (not x4325) x5844)
+(or x4325 (not x5844))
+(or (not x4342) x5836)
+(or x4342 (not x5836))
+(or (not x4329) x5828)
+(or x4329 (not x5828))
+(or (not x4319) x5819)
+(or x4319 (not x5819))
+(or (not x4818) x6465)
+(or x4818 (not x6465))
+(or (not x4810) x6452)
+(or x4810 (not x6452))
+(or (not x4802) x6449)
+(or x4802 (not x6449))
+(or (not x4326) x5799)
+(or x4326 (not x5799))
+(or (not x4312) x5798)
+(or x4312 (not x5798))
+(or (not x4308) x5795)
+(or x4308 (not x5795))
+(or (not x4303) x5791)
+(or x4303 (not x5791))
+(or (not x4300) x5787)
+(or x4300 (not x5787))
+(or (not x5203) x5779)
+(or x5203 (not x5779))
+(or (not x5185) x5778)
+(or x5185 (not x5778))
+(or (not x5167) x5777)
+(or x5167 (not x5777))
+(or (not x5145) x5776)
+(or x5145 (not x5776))
+(or (not x5146) x7167)
+(or x5146 (not x7167))
+(or (not x5147) x7164)
+(or x5147 (not x7164))
+(or (not x5148) x7173)
+(or x5148 (not x7173))
+(or (not x5149) x7170)
+(or x5149 (not x7170))
+(or (not x4274) x5772)
+(or x4274 (not x5772))
+(or (not x4275) x5764)
+(or x4275 (not x5764))
+(or (not x4276) x5761)
+(or x4276 (not x5761))
+(or (not x4277) x5760)
+(or x4277 (not x5760))
+(or (not x4278) x5749)
+(or x4278 (not x5749))
+(or x7219 x7218)
+(or x7217 x7216)
+(or x7215 x7214)
+(or x7213 x7212)
+(or x7211 x7210)
+(or x7209 x7208)
+(or x7207 x7206)
+(or x7205 x7204)
+(or x7203 x7202)
+(or x7201 x7200)
+(or x7199 x7198)
+(or x7197 x7196)
+(or x7195 x7194)
+(or x7193 x7192)
+(or x7191 x7190)
+(or x7189 x7188)
+(or x7187 x7186)
+(or x7185 x7184)
+(or x7183 x7182)
+(or x7181 x7180)
+(or (not x5773) x7179)
+(or x7158 x3)
+(or x5738 x5737)
+(or x5736 x5735)
+(or x5734 x5733)
+(or x5732 x5731)
+(or x5730 x5729)
+(or x5728 x5727)
+(or x5726 x5725)
+(or x5724 x5723)
+(or x5722 x5721)
+(or x5720 x5719)
+(or x5718 x5717)
+(or x5716 x5715)
+(or x5714 x5713)
+(or x5712 x5711)
+(or x5710 x5709)
+(or x5708 x5707)
+(or x5706 x5705)
+(or x5704 x5703)
+(or x5702 x5701)
+(or x5700 x5699)
+(or (not x4292) x5698)
+(or x5677 x4)
+(or (not x4212) x5693)
+(or x4212 (not x5693))
+(or (not x4209) x5690)
+(or x4209 (not x5690))
+(or (not x4206) x5687)
+(or x4206 (not x5687))
+(or (not x4203) x5684)
+(or x4203 (not x5684))
+(or (not x4200) x5681)
+(or x4200 (not x5681))
+(or (not x4198) x5679)
+(or x4198 (not x5679))
+(or (not x2806) x5674)
+(or x2806 (not x5674))
+(or (not x2804) x5672)
+(or x2804 (not x5672))
+(or (not x2805) x5671)
+(or x2805 (not x5671))
+(or (not x2818) x5670)
+(or x2818 (not x5670))
+(or (not x4018) x5612)
+(or x4018 (not x5612))
+(or (not x4011) x5607)
+(or x4011 (not x5607))
+(or (not x4001) x5602)
+(or x4001 (not x5602))
+(or (not x4025) x5597)
+(or x4025 (not x5597))
+(or (not x4191) x4940)
+(or x4191 (not x4940))
+(or (not x2821) x5580)
+(or x2821 (not x5580))
+(or (not x4017) x5532)
+(or x4017 (not x5532))
+(or (not x4010) x5528)
+(or x4010 (not x5528))
+(or (not x4000) x5524)
+(or x4000 (not x5524))
+(or (not x4024) x5519)
+(or x4024 (not x5519))
+(or (not x4028) x5512)
+(or x4028 (not x5512))
+(or (not x4020) x5503)
+(or x4020 (not x5503))
+(or (not x4013) x5496)
+(or x4013 (not x5496))
+(or (not x4005) x5489)
+(or x4005 (not x5489))
+(or (not x3428) x5479)
+(or x3428 (not x5479))
+(or (not x3429) x5475)
+(or x3429 (not x5475))
+(or (not x3430) x5473)
+(or x3430 (not x5473))
+(or (not x3431) x5471)
+(or x3431 (not x5471))
+(or (not x3432) x5463)
+(or x3432 (not x5463))
+(or (not x3421) x5462)
+(or x3421 (not x5462))
+(or (not x3422) x5458)
+(or x3422 (not x5458))
+(or (not x3423) x5456)
+(or x3423 (not x5456))
+(or (not x3424) x5454)
+(or x3424 (not x5454))
+(or (not x3425) x5446)
+(or x3425 (not x5446))
+(or (not x3414) x5445)
+(or x3414 (not x5445))
+(or (not x3415) x5441)
+(or x3415 (not x5441))
+(or (not x3416) x5439)
+(or x3416 (not x5439))
+(or (not x3417) x5437)
+(or x3417 (not x5437))
+(or (not x3418) x5429)
+(or x3418 (not x5429))
+(or (not x3407) x5428)
+(or x3407 (not x5428))
+(or (not x3408) x5424)
+(or x3408 (not x5424))
+(or (not x3409) x5422)
+(or x3409 (not x5422))
+(or (not x3410) x5420)
+(or x3410 (not x5420))
+(or (not x3411) x5412)
+(or x3411 (not x5412))
+(or (not x3071) x5411)
+(or x3071 (not x5411))
+(or (not x3072) x5407)
+(or x3072 (not x5407))
+(or (not x3073) x5405)
+(or x3073 (not x5405))
+(or (not x3074) x5403)
+(or x3074 (not x5403))
+(or (not x3075) x5395)
+(or x3075 (not x5395))
+(or (not x3064) x5394)
+(or x3064 (not x5394))
+(or (not x3065) x5390)
+(or x3065 (not x5390))
+(or (not x3066) x5388)
+(or x3066 (not x5388))
+(or (not x3067) x5386)
+(or x3067 (not x5386))
+(or (not x3068) x5378)
+(or x3068 (not x5378))
+(or (not x3057) x5377)
+(or x3057 (not x5377))
+(or (not x3058) x5373)
+(or x3058 (not x5373))
+(or (not x3059) x5371)
+(or x3059 (not x5371))
+(or (not x3060) x5369)
+(or x3060 (not x5369))
+(or (not x3061) x5361)
+(or x3061 (not x5361))
+(or (not x3050) x5360)
+(or x3050 (not x5360))
+(or (not x3051) x5356)
+(or x3051 (not x5356))
+(or (not x3052) x5354)
+(or x3052 (not x5354))
+(or (not x3053) x5352)
+(or x3053 (not x5352))
+(or (not x3054) x5344)
+(or x3054 (not x5344))
+(or (not x3036) x5343)
+(or x3036 (not x5343))
+(or (not x3037) x5339)
+(or x3037 (not x5339))
+(or (not x3038) x5337)
+(or x3038 (not x5337))
+(or (not x3039) x5335)
+(or x3039 (not x5335))
+(or (not x3040) x5327)
+(or x3040 (not x5327))
+(or (not x3029) x5326)
+(or x3029 (not x5326))
+(or (not x3030) x5322)
+(or x3030 (not x5322))
+(or (not x3031) x5320)
+(or x3031 (not x5320))
+(or (not x3032) x5318)
+(or x3032 (not x5318))
+(or (not x3033) x5310)
+(or x3033 (not x5310))
+(or (not x3022) x5309)
+(or x3022 (not x5309))
+(or (not x3023) x5305)
+(or x3023 (not x5305))
+(or (not x3024) x5303)
+(or x3024 (not x5303))
+(or (not x3025) x5301)
+(or x3025 (not x5301))
+(or (not x3026) x5293)
+(or x3026 (not x5293))
+(or (not x3015) x5292)
+(or x3015 (not x5292))
+(or (not x3016) x5288)
+(or x3016 (not x5288))
+(or (not x3017) x5286)
+(or x3017 (not x5286))
+(or (not x3018) x5284)
+(or x3018 (not x5284))
+(or (not x3019) x5276)
+(or x3019 (not x5276))
+(or (not x3001) x5275)
+(or x3001 (not x5275))
+(or (not x3002) x5271)
+(or x3002 (not x5271))
+(or (not x3003) x5269)
+(or x3003 (not x5269))
+(or (not x3004) x5267)
+(or x3004 (not x5267))
+(or (not x3005) x5259)
+(or x3005 (not x5259))
+(or (not x2994) x5258)
+(or x2994 (not x5258))
+(or (not x2995) x5254)
+(or x2995 (not x5254))
+(or (not x2996) x5252)
+(or x2996 (not x5252))
+(or (not x2997) x5250)
+(or x2997 (not x5250))
+(or (not x2998) x5242)
+(or x2998 (not x5242))
+(or (not x2987) x5241)
+(or x2987 (not x5241))
+(or (not x2988) x5237)
+(or x2988 (not x5237))
+(or (not x2989) x5235)
+(or x2989 (not x5235))
+(or (not x2990) x5233)
+(or x2990 (not x5233))
+(or (not x2991) x5225)
+(or x2991 (not x5225))
+(or (not x2980) x5224)
+(or x2980 (not x5224))
+(or (not x2981) x5220)
+(or x2981 (not x5220))
+(or (not x2982) x5218)
+(or x2982 (not x5218))
+(or (not x2983) x5216)
+(or x2983 (not x5216))
+(or (not x2984) x5208)
+(or x2984 (not x5208))
+(or (not x2966) x5207)
+(or x2966 (not x5207))
+(or (not x2967) x5202)
+(or x2967 (not x5202))
+(or (not x2968) x5200)
+(or x2968 (not x5200))
+(or (not x2969) x5198)
+(or x2969 (not x5198))
+(or (not x2970) x5190)
+(or x2970 (not x5190))
+(or (not x2959) x5189)
+(or x2959 (not x5189))
+(or (not x2960) x5184)
+(or x2960 (not x5184))
+(or (not x2961) x5182)
+(or x2961 (not x5182))
+(or (not x2962) x5180)
+(or x2962 (not x5180))
+(or (not x2963) x5172)
+(or x2963 (not x5172))
+(or (not x2952) x5171)
+(or x2952 (not x5171))
+(or (not x2953) x5166)
+(or x2953 (not x5166))
+(or (not x2954) x5164)
+(or x2954 (not x5164))
+(or (not x2955) x5162)
+(or x2955 (not x5162))
+(or (not x2956) x5154)
+(or x2956 (not x5154))
+(or (not x2945) x5153)
+(or x2945 (not x5153))
+(or (not x2946) x5144)
+(or x2946 (not x5144))
+(or (not x2947) x5142)
+(or x2947 (not x5142))
+(or (not x2948) x5140)
+(or x2948 (not x5140))
+(or (not x2949) x5132)
+(or x2949 (not x5132))
+(or (not x3274) x5131)
+(or x3274 (not x5131))
+(or (not x3387) x5127)
+(or x3387 (not x5127))
+(or (not x3389) x4908)
+(or x3389 (not x4908))
+(or (not x3382) x4901)
+(or x3382 (not x4901))
+(or (not x3375) x4894)
+(or x3375 (not x4894))
+(or (not x3403) x4887)
+(or x3403 (not x4887))
+(or (not x3341) x4886)
+(or x3341 (not x4886))
+(or (not x3368) x5005)
+(or x3368 (not x5005))
+(or (not x3361) x4992)
+(or x3361 (not x4992))
+(or (not x3353) x4989)
+(or x3353 (not x4989))
+(or (not x3345) x4990)
+(or x3345 (not x4990))
+(or (not x3311) x4879)
+(or x3311 (not x4879))
+(or (not x3313) x4963)
+(or x3313 (not x4963))
+(or (not x3305) x4948)
+(or x3305 (not x4948))
+(or (not x3295) x4945)
+(or x3295 (not x4945))
+(or (not x3462) x4946)
+(or x3462 (not x4946))
+(or (not x3365) x4872)
+(or x3365 (not x4872))
+(or (not x3357) x4865)
+(or x3357 (not x4865))
+(or (not x3349) x4858)
+(or x3349 (not x4858))
+(or (not x3333) x4851)
+(or x3333 (not x4851))
+(or (not x3325) x4844)
+(or x3325 (not x4844))
+(or (not x3317) x4836)
+(or x3317 (not x4836))
+(or (not x3335) x4828)
+(or x3335 (not x4828))
+(or (not x3309) x4820)
+(or x3309 (not x4820))
+(or (not x3300) x4812)
+(or x3300 (not x4812))
+(or (not x3288) x4804)
+(or x3288 (not x4804))
+(or (not x3396) x4969)
+(or x3396 (not x4969))
+(or (not x3302) x4796)
+(or x3302 (not x4796))
+(or (not x3291) x4788)
+(or x3291 (not x4788))
+(or (not x3282) x4779)
+(or x3282 (not x4779))
+(or (not x2939) x4762)
+(or x2939 (not x4762))
+(or (not x2941) x4551)
+(or x2941 (not x4551))
+(or (not x2934) x4544)
+(or x2934 (not x4544))
+(or (not x2927) x4537)
+(or x2927 (not x4537))
+(or (not x3046) x4530)
+(or x3046 (not x4530))
+(or (not x2918) x4529)
+(or x2918 (not x4529))
+(or (not x2920) x4516)
+(or x2920 (not x4516))
+(or (not x2912) x4509)
+(or x2912 (not x4509))
+(or (not x2904) x4502)
+(or x2904 (not x4502))
+(or (not x3011) x4495)
+(or x3011 (not x4495))
+(or (not x2894) x4494)
+(or x2894 (not x4494))
+(or (not x2896) x4481)
+(or x2896 (not x4481))
+(or (not x2888) x4474)
+(or x2888 (not x4474))
+(or (not x2880) x4467)
+(or x2880 (not x4467))
+(or (not x2976) x4460)
+(or x2976 (not x4460))
+(or (not x2870) x4459)
+(or x2870 (not x4459))
+(or (not x2872) x4446)
+(or x2872 (not x4446))
+(or (not x2864) x4439)
+(or x2864 (not x4439))
+(or (not x2852) x4432)
+(or x2852 (not x4432))
+(or (not x3105) x4425)
+(or x3105 (not x4425))
+(or (not x2916) x4424)
+(or x2916 (not x4424))
+(or (not x2908) x4417)
+(or x2908 (not x4417))
+(or (not x2900) x4410)
+(or x2900 (not x4410))
+(or (not x2892) x4403)
+(or x2892 (not x4403))
+(or (not x2884) x4395)
+(or x2884 (not x4395))
+(or (not x2876) x4387)
+(or x2876 (not x4387))
+(or (not x2868) x4379)
+(or x2868 (not x4379))
+(or (not x2859) x4371)
+(or x2859 (not x4371))
+(or (not x2844) x4363)
+(or x2844 (not x4363))
+(or (not x2861) x4355)
+(or x2861 (not x4355))
+(or (not x2848) x4347)
+(or x2848 (not x4347))
+(or (not x2838) x4338)
+(or x2838 (not x4338))
+(or (not x3337) x4984)
+(or x3337 (not x4984))
+(or (not x3329) x4971)
+(or x3329 (not x4971))
+(or (not x3321) x4968)
+(or x3321 (not x4968))
+(or (not x2845) x4318)
+(or x2845 (not x4318))
+(or (not x2831) x4317)
+(or x2831 (not x4317))
+(or (not x2827) x4314)
+(or x2827 (not x4314))
+(or (not x2822) x4310)
+(or x2822 (not x4310))
+(or (not x2819) x4306)
+(or x2819 (not x4306))
+(or (not x3722) x4298)
+(or x3722 (not x4298))
+(or (not x3704) x4297)
+(or x3704 (not x4297))
+(or (not x3686) x4296)
+(or x3686 (not x4296))
+(or (not x3664) x4295)
+(or x3664 (not x4295))
+(or (not x3665) x5686)
+(or x3665 (not x5686))
+(or (not x3666) x5683)
+(or x3666 (not x5683))
+(or (not x3667) x5692)
+(or x3667 (not x5692))
+(or (not x3668) x5689)
+(or x3668 (not x5689))
+(or (not x2793) x4291)
+(or x2793 (not x4291))
+(or (not x2794) x4283)
+(or x2794 (not x4283))
+(or (not x2795) x4280)
+(or x2795 (not x4280))
+(or (not x2796) x4279)
+(or x2796 (not x4279))
+(or (not x2797) x4268)
+(or x2797 (not x4268))
+(or x5738 x5737)
+(or x5736 x5735)
+(or x5734 x5733)
+(or x5732 x5731)
+(or x5730 x5729)
+(or x5728 x5727)
+(or x5726 x5725)
+(or x5724 x5723)
+(or x5722 x5721)
+(or x5720 x5719)
+(or x5718 x5717)
+(or x5716 x5715)
+(or x5714 x5713)
+(or x5712 x5711)
+(or x5710 x5709)
+(or x5708 x5707)
+(or x5706 x5705)
+(or x5704 x5703)
+(or x5702 x5701)
+(or x5700 x5699)
+(or (not x4292) x5698)
+(or x5677 x4)
+(or x4257 x4256)
+(or x4255 x4254)
+(or x4253 x4252)
+(or x4251 x4250)
+(or x4249 x4248)
+(or x4247 x4246)
+(or x4245 x4244)
+(or x4243 x4242)
+(or x4241 x4240)
+(or x4239 x4238)
+(or x4237 x4236)
+(or x4235 x4234)
+(or x4233 x4232)
+(or x4231 x4230)
+(or x4229 x4228)
+(or x4227 x4226)
+(or x4225 x4224)
+(or x4223 x4222)
+(or x4221 x4220)
+(or x4219 x4218)
+(or (not x2811) x4217)
+(or x4196 x5)
+(or (not x8701) x4206)
+(or x8701 (not x4206))
+(or (not x8702) x4203)
+(or x8702 (not x4203))
+(or (not x1513) x4193)
+(or x1513 (not x4193))
+(or (not x1511) x4191)
+(or x1511 (not x4191))
+(or (not x1512) x4190)
+(or x1512 (not x4190))
+(or (not x1518) x4189)
+(or x1518 (not x4189))
+(or (not x2558) x4131)
+(or x2558 (not x4131))
+(or (not x2551) x4126)
+(or x2551 (not x4126))
+(or (not x2541) x4121)
+(or x2541 (not x4121))
+(or (not x2565) x4116)
+(or x2565 (not x4116))
+(or (not x2731) x3459)
+(or x2731 (not x3459))
+(or (not x1521) x4099)
+(or x1521 (not x4099))
+(or (not x2557) x4051)
+(or x2557 (not x4051))
+(or (not x2550) x4047)
+(or x2550 (not x4047))
+(or (not x2540) x4043)
+(or x2540 (not x4043))
+(or (not x2564) x4038)
+(or x2564 (not x4038))
+(or (not x2568) x4031)
+(or x2568 (not x4031))
+(or (not x2560) x4022)
+(or x2560 (not x4022))
+(or (not x2553) x4015)
+(or x2553 (not x4015))
+(or (not x2545) x4008)
+(or x2545 (not x4008))
+(or (not x2128) x3998)
+(or x2128 (not x3998))
+(or (not x2129) x3994)
+(or x2129 (not x3994))
+(or (not x2130) x3992)
+(or x2130 (not x3992))
+(or (not x2131) x3990)
+(or x2131 (not x3990))
+(or (not x2132) x3982)
+(or x2132 (not x3982))
+(or (not x2121) x3981)
+(or x2121 (not x3981))
+(or (not x2122) x3977)
+(or x2122 (not x3977))
+(or (not x2123) x3975)
+(or x2123 (not x3975))
+(or (not x2124) x3973)
+(or x2124 (not x3973))
+(or (not x2125) x3965)
+(or x2125 (not x3965))
+(or (not x2114) x3964)
+(or x2114 (not x3964))
+(or (not x2115) x3960)
+(or x2115 (not x3960))
+(or (not x2116) x3958)
+(or x2116 (not x3958))
+(or (not x2117) x3956)
+(or x2117 (not x3956))
+(or (not x2118) x3948)
+(or x2118 (not x3948))
+(or (not x2107) x3947)
+(or x2107 (not x3947))
+(or (not x2108) x3943)
+(or x2108 (not x3943))
+(or (not x2109) x3941)
+(or x2109 (not x3941))
+(or (not x2110) x3939)
+(or x2110 (not x3939))
+(or (not x2111) x3931)
+(or x2111 (not x3931))
+(or (not x1771) x3930)
+(or x1771 (not x3930))
+(or (not x1772) x3926)
+(or x1772 (not x3926))
+(or (not x1773) x3924)
+(or x1773 (not x3924))
+(or (not x1774) x3922)
+(or x1774 (not x3922))
+(or (not x1775) x3914)
+(or x1775 (not x3914))
+(or (not x1764) x3913)
+(or x1764 (not x3913))
+(or (not x1765) x3909)
+(or x1765 (not x3909))
+(or (not x1766) x3907)
+(or x1766 (not x3907))
+(or (not x1767) x3905)
+(or x1767 (not x3905))
+(or (not x1768) x3897)
+(or x1768 (not x3897))
+(or (not x1757) x3896)
+(or x1757 (not x3896))
+(or (not x1758) x3892)
+(or x1758 (not x3892))
+(or (not x1759) x3890)
+(or x1759 (not x3890))
+(or (not x1760) x3888)
+(or x1760 (not x3888))
+(or (not x1761) x3880)
+(or x1761 (not x3880))
+(or (not x1750) x3879)
+(or x1750 (not x3879))
+(or (not x1751) x3875)
+(or x1751 (not x3875))
+(or (not x1752) x3873)
+(or x1752 (not x3873))
+(or (not x1753) x3871)
+(or x1753 (not x3871))
+(or (not x1754) x3863)
+(or x1754 (not x3863))
+(or (not x1736) x3862)
+(or x1736 (not x3862))
+(or (not x1737) x3858)
+(or x1737 (not x3858))
+(or (not x1738) x3856)
+(or x1738 (not x3856))
+(or (not x1739) x3854)
+(or x1739 (not x3854))
+(or (not x1740) x3846)
+(or x1740 (not x3846))
+(or (not x1729) x3845)
+(or x1729 (not x3845))
+(or (not x1730) x3841)
+(or x1730 (not x3841))
+(or (not x1731) x3839)
+(or x1731 (not x3839))
+(or (not x1732) x3837)
+(or x1732 (not x3837))
+(or (not x1733) x3829)
+(or x1733 (not x3829))
+(or (not x1722) x3828)
+(or x1722 (not x3828))
+(or (not x1723) x3824)
+(or x1723 (not x3824))
+(or (not x1724) x3822)
+(or x1724 (not x3822))
+(or (not x1725) x3820)
+(or x1725 (not x3820))
+(or (not x1726) x3812)
+(or x1726 (not x3812))
+(or (not x1715) x3811)
+(or x1715 (not x3811))
+(or (not x1716) x3807)
+(or x1716 (not x3807))
+(or (not x1717) x3805)
+(or x1717 (not x3805))
+(or (not x1718) x3803)
+(or x1718 (not x3803))
+(or (not x1719) x3795)
+(or x1719 (not x3795))
+(or (not x1701) x3794)
+(or x1701 (not x3794))
+(or (not x1702) x3790)
+(or x1702 (not x3790))
+(or (not x1703) x3788)
+(or x1703 (not x3788))
+(or (not x1704) x3786)
+(or x1704 (not x3786))
+(or (not x1705) x3778)
+(or x1705 (not x3778))
+(or (not x1694) x3777)
+(or x1694 (not x3777))
+(or (not x1695) x3773)
+(or x1695 (not x3773))
+(or (not x1696) x3771)
+(or x1696 (not x3771))
+(or (not x1697) x3769)
+(or x1697 (not x3769))
+(or (not x1698) x3761)
+(or x1698 (not x3761))
+(or (not x1687) x3760)
+(or x1687 (not x3760))
+(or (not x1688) x3756)
+(or x1688 (not x3756))
+(or (not x1689) x3754)
+(or x1689 (not x3754))
+(or (not x1690) x3752)
+(or x1690 (not x3752))
+(or (not x1691) x3744)
+(or x1691 (not x3744))
+(or (not x1680) x3743)
+(or x1680 (not x3743))
+(or (not x1681) x3739)
+(or x1681 (not x3739))
+(or (not x1682) x3737)
+(or x1682 (not x3737))
+(or (not x1683) x3735)
+(or x1683 (not x3735))
+(or (not x1684) x3727)
+(or x1684 (not x3727))
+(or (not x1666) x3726)
+(or x1666 (not x3726))
+(or (not x1667) x3721)
+(or x1667 (not x3721))
+(or (not x1668) x3719)
+(or x1668 (not x3719))
+(or (not x1669) x3717)
+(or x1669 (not x3717))
+(or (not x1670) x3709)
+(or x1670 (not x3709))
+(or (not x1659) x3708)
+(or x1659 (not x3708))
+(or (not x1660) x3703)
+(or x1660 (not x3703))
+(or (not x1661) x3701)
+(or x1661 (not x3701))
+(or (not x1662) x3699)
+(or x1662 (not x3699))
+(or (not x1663) x3691)
+(or x1663 (not x3691))
+(or (not x1652) x3690)
+(or x1652 (not x3690))
+(or (not x1653) x3685)
+(or x1653 (not x3685))
+(or (not x1654) x3683)
+(or x1654 (not x3683))
+(or (not x1655) x3681)
+(or x1655 (not x3681))
+(or (not x1656) x3673)
+(or x1656 (not x3673))
+(or (not x1645) x3672)
+(or x1645 (not x3672))
+(or (not x1646) x3663)
+(or x1646 (not x3663))
+(or (not x1647) x3661)
+(or x1647 (not x3661))
+(or (not x1648) x3659)
+(or x1648 (not x3659))
+(or (not x1649) x3651)
+(or x1649 (not x3651))
+(or (not x1974) x3650)
+(or x1974 (not x3650))
+(or (not x2087) x3646)
+(or x2087 (not x3646))
+(or (not x2089) x3427)
+(or x2089 (not x3427))
+(or (not x2082) x3420)
+(or x2082 (not x3420))
+(or (not x2075) x3413)
+(or x2075 (not x3413))
+(or (not x2103) x3406)
+(or x2103 (not x3406))
+(or (not x2041) x3405)
+(or x2041 (not x3405))
+(or (not x2068) x3524)
+(or x2068 (not x3524))
+(or (not x2061) x3511)
+(or x2061 (not x3511))
+(or (not x2053) x3508)
+(or x2053 (not x3508))
+(or (not x2045) x3509)
+(or x2045 (not x3509))
+(or (not x2011) x3398)
+(or x2011 (not x3398))
+(or (not x2013) x3482)
+(or x2013 (not x3482))
+(or (not x2005) x3467)
+(or x2005 (not x3467))
+(or (not x1995) x3464)
+(or x1995 (not x3464))
+(or (not x2162) x3465)
+(or x2162 (not x3465))
+(or (not x2065) x3391)
+(or x2065 (not x3391))
+(or (not x2057) x3384)
+(or x2057 (not x3384))
+(or (not x2049) x3377)
+(or x2049 (not x3377))
+(or (not x2033) x3370)
+(or x2033 (not x3370))
+(or (not x2025) x3363)
+(or x2025 (not x3363))
+(or (not x2017) x3355)
+(or x2017 (not x3355))
+(or (not x2035) x3347)
+(or x2035 (not x3347))
+(or (not x2009) x3339)
+(or x2009 (not x3339))
+(or (not x2000) x3331)
+(or x2000 (not x3331))
+(or (not x1988) x3323)
+(or x1988 (not x3323))
+(or (not x2096) x3488)
+(or x2096 (not x3488))
+(or (not x2002) x3315)
+(or x2002 (not x3315))
+(or (not x1991) x3307)
+(or x1991 (not x3307))
+(or (not x1982) x3298)
+(or x1982 (not x3298))
+(or (not x1639) x3281)
+(or x1639 (not x3281))
+(or (not x1641) x3070)
+(or x1641 (not x3070))
+(or (not x1634) x3063)
+(or x1634 (not x3063))
+(or (not x1627) x3056)
+(or x1627 (not x3056))
+(or (not x1746) x3049)
+(or x1746 (not x3049))
+(or (not x1618) x3048)
+(or x1618 (not x3048))
+(or (not x1620) x3035)
+(or x1620 (not x3035))
+(or (not x1612) x3028)
+(or x1612 (not x3028))
+(or (not x1604) x3021)
+(or x1604 (not x3021))
+(or (not x1711) x3014)
+(or x1711 (not x3014))
+(or (not x1594) x3013)
+(or x1594 (not x3013))
+(or (not x1596) x3000)
+(or x1596 (not x3000))
+(or (not x1588) x2993)
+(or x1588 (not x2993))
+(or (not x1580) x2986)
+(or x1580 (not x2986))
+(or (not x1676) x2979)
+(or x1676 (not x2979))
+(or (not x1570) x2978)
+(or x1570 (not x2978))
+(or (not x1572) x2965)
+(or x1572 (not x2965))
+(or (not x1564) x2958)
+(or x1564 (not x2958))
+(or (not x1552) x2951)
+(or x1552 (not x2951))
+(or (not x1805) x2944)
+(or x1805 (not x2944))
+(or (not x1616) x2943)
+(or x1616 (not x2943))
+(or (not x1608) x2936)
+(or x1608 (not x2936))
+(or (not x1600) x2929)
+(or x1600 (not x2929))
+(or (not x1592) x2922)
+(or x1592 (not x2922))
+(or (not x1584) x2914)
+(or x1584 (not x2914))
+(or (not x1576) x2906)
+(or x1576 (not x2906))
+(or (not x1568) x2898)
+(or x1568 (not x2898))
+(or (not x1559) x2890)
+(or x1559 (not x2890))
+(or (not x1544) x2882)
+(or x1544 (not x2882))
+(or (not x1561) x2874)
+(or x1561 (not x2874))
+(or (not x1548) x2866)
+(or x1548 (not x2866))
+(or (not x1538) x2857)
+(or x1538 (not x2857))
+(or (not x2037) x3503)
+(or x2037 (not x3503))
+(or (not x2029) x3490)
+(or x2029 (not x3490))
+(or (not x2021) x3487)
+(or x2021 (not x3487))
+(or (not x1545) x2837)
+(or x1545 (not x2837))
+(or (not x1531) x2836)
+(or x1531 (not x2836))
+(or (not x1527) x2833)
+(or x1527 (not x2833))
+(or (not x1522) x2829)
+(or x1522 (not x2829))
+(or (not x1519) x2825)
+(or x1519 (not x2825))
+(or (not x2385) x2817)
+(or x2385 (not x2817))
+(or (not x2375) x2816)
+(or x2375 (not x2816))
+(or (not x2365) x2815)
+(or x2365 (not x2815))
+(or (not x2351) x2814)
+(or x2351 (not x2814))
+(or (not x2352) x4205)
+(or x2352 (not x4205))
+(or (not x2353) x4202)
+(or x2353 (not x4202))
+(or (not x2354) x4211)
+(or x2354 (not x4211))
+(or (not x2355) x4208)
+(or x2355 (not x4208))
+(or (not x1500) x2810)
+(or x1500 (not x2810))
+(or (not x1501) x2802)
+(or x1501 (not x2802))
+(or (not x1502) x2799)
+(or x1502 (not x2799))
+(or (not x1503) x2798)
+(or x1503 (not x2798))
+(or (not x1504) x2787)
+(or x1504 (not x2787))
+(or x4257 x4256)
+(or x4255 x4254)
+(or x4253 x4252)
+(or x4251 x4250)
+(or x4249 x4248)
+(or x4247 x4246)
+(or x4245 x4244)
+(or x4243 x4242)
+(or x4241 x4240)
+(or x4239 x4238)
+(or x4237 x4236)
+(or x4235 x4234)
+(or x4233 x4232)
+(or x4231 x4230)
+(or x4229 x4228)
+(or x4227 x4226)
+(or x4225 x4224)
+(or x4223 x4222)
+(or x4221 x4220)
+(or x4219 x4218)
+(or (not x2811) x4217)
+(or x4196 x5)
+(or x2776 x2775)
+(or x2774 x2773)
+(or x2772 x2771)
+(or x2770 x2769)
+(or x2768 x2767)
+(or x2766 x2765)
+(or x2764 x2763)
+(or x2762 x2761)
+(or x2760 x2759)
+(or x2758 x2757)
+(or x2756 x2755)
+(or x2754 x2753)
+(or x2752 x2751)
+(or x2750 x2749)
+(or x2748 x2747)
+(or x2746 x2745)
+(or x2744 x2743)
+(or x2742 x2741)
+(or x2740 x2739)
+(or x2738 x2737)
+(or x2736 x6)
+(or (not x8703) x8701)
+(or x8703 (not x8701))
+(or (not x8704) x8702)
+(or x8704 (not x8702))
+(or (not x448) x2733)
+(or x448 (not x2733))
+(or (not x446) x2731)
+(or x446 (not x2731))
+(or (not x447) x2730)
+(or x447 (not x2730))
+(or (not x453) x2729)
+(or x453 (not x2729))
+(or (not x1305) x2671)
+(or x1305 (not x2671))
+(or (not x1298) x2666)
+(or x1298 (not x2666))
+(or (not x1288) x2661)
+(or x1288 (not x2661))
+(or (not x1312) x2656)
+(or x1312 (not x2656))
+(or (not x1478) x2159)
+(or x1478 (not x2159))
+(or (not x456) x2639)
+(or x456 (not x2639))
+(or (not x1304) x2591)
+(or x1304 (not x2591))
+(or (not x1297) x2587)
+(or x1297 (not x2587))
+(or (not x1287) x2583)
+(or x1287 (not x2583))
+(or (not x1311) x2578)
+(or x1311 (not x2578))
+(or (not x1315) x2571)
+(or x1315 (not x2571))
+(or (not x1307) x2562)
+(or x1307 (not x2562))
+(or (not x1300) x2555)
+(or x1300 (not x2555))
+(or (not x1292) x2548)
+(or x1292 (not x2548))
+(or (not x1063) x2538)
+(or x1063 (not x2538))
+(or (not x1056) x2529)
+(or x1056 (not x2529))
+(or (not x1049) x2520)
+(or x1049 (not x2520))
+(or (not x1042) x2511)
+(or x1042 (not x2511))
+(or (not x706) x2502)
+(or x706 (not x2502))
+(or (not x699) x2493)
+(or x699 (not x2493))
+(or (not x692) x2484)
+(or x692 (not x2484))
+(or (not x685) x2475)
+(or x685 (not x2475))
+(or (not x671) x2466)
+(or x671 (not x2466))
+(or (not x664) x2457)
+(or x664 (not x2457))
+(or (not x657) x2448)
+(or x657 (not x2448))
+(or (not x650) x2439)
+(or x650 (not x2439))
+(or (not x636) x2430)
+(or x636 (not x2430))
+(or (not x629) x2421)
+(or x629 (not x2421))
+(or (not x622) x2412)
+(or x622 (not x2412))
+(or (not x615) x2403)
+(or x615 (not x2403))
+(or (not x601) x2394)
+(or x601 (not x2394))
+(or (not x594) x2384)
+(or x594 (not x2384))
+(or (not x587) x2374)
+(or x587 (not x2374))
+(or (not x580) x2364)
+(or x580 (not x2364))
+(or (not x909) x2350)
+(or x909 (not x2350))
+(or (not x1022) x2346)
+(or x1022 (not x2346))
+(or (not x1024) x2127)
+(or x1024 (not x2127))
+(or (not x1017) x2120)
+(or x1017 (not x2120))
+(or (not x1010) x2113)
+(or x1010 (not x2113))
+(or (not x1038) x2106)
+(or x1038 (not x2106))
+(or (not x976) x2105)
+(or x976 (not x2105))
+(or (not x1003) x2224)
+(or x1003 (not x2224))
+(or (not x996) x2211)
+(or x996 (not x2211))
+(or (not x988) x2208)
+(or x988 (not x2208))
+(or (not x980) x2209)
+(or x980 (not x2209))
+(or (not x946) x2098)
+(or x946 (not x2098))
+(or (not x948) x2182)
+(or x948 (not x2182))
+(or (not x940) x2167)
+(or x940 (not x2167))
+(or (not x930) x2164)
+(or x930 (not x2164))
+(or (not x1097) x2165)
+(or x1097 (not x2165))
+(or (not x1000) x2091)
+(or x1000 (not x2091))
+(or (not x992) x2084)
+(or x992 (not x2084))
+(or (not x984) x2077)
+(or x984 (not x2077))
+(or (not x968) x2070)
+(or x968 (not x2070))
+(or (not x960) x2063)
+(or x960 (not x2063))
+(or (not x952) x2055)
+(or x952 (not x2055))
+(or (not x970) x2047)
+(or x970 (not x2047))
+(or (not x944) x2039)
+(or x944 (not x2039))
+(or (not x935) x2031)
+(or x935 (not x2031))
+(or (not x923) x2023)
+(or x923 (not x2023))
+(or (not x1031) x2188)
+(or x1031 (not x2188))
+(or (not x937) x2015)
+(or x937 (not x2015))
+(or (not x926) x2007)
+(or x926 (not x2007))
+(or (not x917) x1998)
+(or x917 (not x1998))
+(or (not x574) x1981)
+(or x574 (not x1981))
+(or (not x576) x1770)
+(or x576 (not x1770))
+(or (not x569) x1763)
+(or x569 (not x1763))
+(or (not x562) x1756)
+(or x562 (not x1756))
+(or (not x681) x1749)
+(or x681 (not x1749))
+(or (not x553) x1748)
+(or x553 (not x1748))
+(or (not x555) x1735)
+(or x555 (not x1735))
+(or (not x547) x1728)
+(or x547 (not x1728))
+(or (not x539) x1721)
+(or x539 (not x1721))
+(or (not x646) x1714)
+(or x646 (not x1714))
+(or (not x529) x1713)
+(or x529 (not x1713))
+(or (not x531) x1700)
+(or x531 (not x1700))
+(or (not x523) x1693)
+(or x523 (not x1693))
+(or (not x515) x1686)
+(or x515 (not x1686))
+(or (not x611) x1679)
+(or x611 (not x1679))
+(or (not x505) x1678)
+(or x505 (not x1678))
+(or (not x507) x1665)
+(or x507 (not x1665))
+(or (not x499) x1658)
+(or x499 (not x1658))
+(or (not x487) x1651)
+(or x487 (not x1651))
+(or (not x740) x1644)
+(or x740 (not x1644))
+(or (not x551) x1643)
+(or x551 (not x1643))
+(or (not x543) x1636)
+(or x543 (not x1636))
+(or (not x535) x1629)
+(or x535 (not x1629))
+(or (not x527) x1622)
+(or x527 (not x1622))
+(or (not x519) x1614)
+(or x519 (not x1614))
+(or (not x511) x1606)
+(or x511 (not x1606))
+(or (not x503) x1598)
+(or x503 (not x1598))
+(or (not x494) x1590)
+(or x494 (not x1590))
+(or (not x479) x1582)
+(or x479 (not x1582))
+(or (not x496) x1574)
+(or x496 (not x1574))
+(or (not x483) x1566)
+(or x483 (not x1566))
+(or (not x473) x1557)
+(or x473 (not x1557))
+(or (not x972) x2203)
+(or x972 (not x2203))
+(or (not x964) x2190)
+(or x964 (not x2190))
+(or (not x956) x2187)
+(or x956 (not x2187))
+(or (not x480) x1537)
+(or x480 (not x1537))
+(or (not x466) x1536)
+(or x466 (not x1536))
+(or (not x462) x1533)
+(or x462 (not x1533))
+(or (not x457) x1529)
+(or x457 (not x1529))
+(or (not x454) x1525)
+(or x454 (not x1525))
+(or (not x435) x1517)
+(or x435 (not x1517))
+(or (not x436) x1509)
+(or x436 (not x1509))
+(or (not x437) x1506)
+(or x437 (not x1506))
+(or (not x438) x1505)
+(or x438 (not x1505))
+(or (not x439) x1494)
+(or x439 (not x1494))
+(or x2776 x2775)
+(or x2774 x2773)
+(or x2772 x2771)
+(or x2770 x2769)
+(or x2768 x2767)
+(or x2766 x2765)
+(or x2764 x2763)
+(or x2762 x2761)
+(or x2760 x2759)
+(or x2758 x2757)
+(or x2756 x2755)
+(or x2754 x2753)
+(or x2752 x2751)
+(or x2750 x2749)
+(or x2748 x2747)
+(or x2746 x2745)
+(or x2744 x2743)
+(or x2742 x2741)
+(or x2740 x2739)
+(or x2738 x2737)
+(or x2736 x6)
+(or x1483 x7)
+(or (not x8705) x8703)
+(or x8705 (not x8703))
+(or (not x8706) x8704)
+(or x8706 (not x8704))
+(or (not x150) x1480)
+(or x150 (not x1480))
+(or (not x148) x1478)
+(or x148 (not x1478))
+(or (not x149) x1477)
+(or x149 (not x1477))
+(or (not x279) x1476)
+(or x279 (not x1476))
+(or (not x191) x1418)
+(or x191 (not x1418))
+(or (not x184) x1413)
+(or x184 (not x1413))
+(or (not x177) x1408)
+(or x177 (not x1408))
+(or (not x167) x1403)
+(or x167 (not x1403))
+(or (not x413) x1094)
+(or x413 (not x1094))
+(or (not x168) x1386)
+(or x168 (not x1386))
+(or (not x190) x1338)
+(or x190 (not x1338))
+(or (not x183) x1334)
+(or x183 (not x1334))
+(or (not x176) x1330)
+(or x176 (not x1330))
+(or (not x166) x1325)
+(or x166 (not x1325))
+(or (not x162) x1318)
+(or x162 (not x1318))
+(or (not x159) x1309)
+(or x159 (not x1309))
+(or (not x156) x1302)
+(or x156 (not x1302))
+(or (not x165) x1295)
+(or x165 (not x1295))
+(or (not x328) x1285)
+(or x328 (not x1285))
+(or (not x258) x1281)
+(or x258 (not x1281))
+(or (not x255) x1062)
+(or x255 (not x1062))
+(or (not x251) x1055)
+(or x251 (not x1055))
+(or (not x247) x1048)
+(or x247 (not x1048))
+(or (not x246) x1041)
+(or x246 (not x1041))
+(or (not x243) x1040)
+(or x243 (not x1040))
+(or (not x240) x1159)
+(or x240 (not x1159))
+(or (not x236) x1146)
+(or x236 (not x1146))
+(or (not x232) x1143)
+(or x232 (not x1143))
+(or (not x231) x1144)
+(or x231 (not x1144))
+(or (not x213) x1033)
+(or x213 (not x1033))
+(or (not x210) x1117)
+(or x210 (not x1117))
+(or (not x206) x1102)
+(or x206 (not x1102))
+(or (not x202) x1099)
+(or x202 (not x1099))
+(or (not x201) x1100)
+(or x201 (not x1100))
+(or (not x254) x1026)
+(or x254 (not x1026))
+(or (not x250) x1019)
+(or x250 (not x1019))
+(or (not x245) x1012)
+(or x245 (not x1012))
+(or (not x239) x1005)
+(or x239 (not x1005))
+(or (not x235) x998)
+(or x235 (not x998))
+(or (not x230) x990)
+(or x230 (not x990))
+(or (not x228) x982)
+(or x228 (not x982))
+(or (not x224) x974)
+(or x224 (not x974))
+(or (not x220) x966)
+(or x220 (not x966))
+(or (not x215) x958)
+(or x215 (not x958))
+(or (not x216) x1123)
+(or x216 (not x1123))
+(or (not x209) x950)
+(or x209 (not x950))
+(or (not x205) x942)
+(or x205 (not x942))
+(or (not x200) x933)
+(or x200 (not x933))
+(or (not x325) x916)
+(or x325 (not x916))
+(or (not x323) x705)
+(or x323 (not x705))
+(or (not x320) x698)
+(or x320 (not x698))
+(or (not x317) x691)
+(or x317 (not x691))
+(or (not x316) x684)
+(or x316 (not x684))
+(or (not x314) x683)
+(or x314 (not x683))
+(or (not x312) x670)
+(or x312 (not x670))
+(or (not x309) x663)
+(or x309 (not x663))
+(or (not x306) x656)
+(or x306 (not x656))
+(or (not x305) x649)
+(or x305 (not x649))
+(or (not x303) x648)
+(or x303 (not x648))
+(or (not x301) x635)
+(or x301 (not x635))
+(or (not x298) x628)
+(or x298 (not x628))
+(or (not x295) x621)
+(or x295 (not x621))
+(or (not x294) x614)
+(or x294 (not x614))
+(or (not x292) x613)
+(or x292 (not x613))
+(or (not x290) x600)
+(or x290 (not x600))
+(or (not x287) x593)
+(or x287 (not x593))
+(or (not x284) x586)
+(or x284 (not x586))
+(or (not x283) x579)
+(or x283 (not x579))
+(or (not x322) x578)
+(or x322 (not x578))
+(or (not x319) x571)
+(or x319 (not x571))
+(or (not x315) x564)
+(or x315 (not x564))
+(or (not x311) x557)
+(or x311 (not x557))
+(or (not x308) x549)
+(or x308 (not x549))
+(or (not x304) x541)
+(or x304 (not x541))
+(or (not x300) x533)
+(or x300 (not x533))
+(or (not x297) x525)
+(or x297 (not x525))
+(or (not x293) x517)
+(or x293 (not x517))
+(or (not x289) x509)
+(or x289 (not x509))
+(or (not x286) x501)
+(or x286 (not x501))
+(or (not x282) x492)
+(or x282 (not x492))
+(or (not x225) x1138)
+(or x225 (not x1138))
+(or (not x221) x1125)
+(or x221 (not x1125))
+(or (not x217) x1122)
+(or x217 (not x1122))
+(or (not x277) x472)
+(or x277 (not x472))
+(or (not x194) x471)
+(or x194 (not x471))
+(or (not x195) x468)
+(or x195 (not x468))
+(or (not x196) x464)
+(or x196 (not x464))
+(or (not x197) x460)
+(or x197 (not x460))
+(or (not x137) x452)
+(or x137 (not x452))
+(or (not x138) x444)
+(or x138 (not x444))
+(or (not x139) x441)
+(or x139 (not x441))
+(or (not x140) x440)
+(or x140 (not x440))
+(or (not x141) x429)
+(or x141 (not x429))
+(or x1483 x7)
+(or x418 x8)
+(or (not x8707) x8705)
+(or x8707 (not x8705))
+(or (not x8708) x8706)
+(or x8708 (not x8706))
+(or (not x94) x415)
+(or x94 (not x415))
+(or (not x92) x413)
+(or x92 (not x413))
+(or (not x93) x412)
+(or x93 (not x412))
+(or (not x117) x411)
+(or x117 (not x411))
+(or (not x112) x352)
+(or x112 (not x352))
+(or (not x109) x347)
+(or x109 (not x347))
+(or (not x106) x342)
+(or x106 (not x342))
+(or (not x103) x337)
+(or x103 (not x337))
+(or (not x101) x332)
+(or x101 (not x332))
+(or (not x100) x281)
+(or x100 (not x281))
+(or (not x111) x192)
+(or x111 (not x192))
+(or (not x108) x185)
+(or x108 (not x185))
+(or (not x105) x178)
+(or x105 (not x178))
+(or (not x102) x170)
+(or x102 (not x170))
+(or (not x81) x154)
+(or x81 (not x154))
+(or (not x82) x146)
+(or x82 (not x146))
+(or (not x83) x143)
+(or x83 (not x143))
+(or (not x84) x142)
+(or x84 (not x142))
+(or (not x85) x131)
+(or x85 (not x131))
+(or x418 x8)
+(or x120 x9)
+(or (not x8709) x8707)
+(or x8709 (not x8707))
+(or (not x8710) x8708)
+(or x8710 (not x8708))
+(or (not x57) x116)
+(or x57 (not x116))
+(or (not x55) x101)
+(or x55 (not x101))
+(or (not x56) x99)
+(or x56 (not x99))
+(or (not x44) x98)
+(or x44 (not x98))
+(or (not x45) x90)
+(or x45 (not x90))
+(or (not x46) x87)
+(or x46 (not x87))
+(or (not x47) x86)
+(or x47 (not x86))
+(or (not x48) x75)
+(or x48 (not x75))
+(or x120 x9)
+(or x64 x10)
+(or (not x12) x61)
+(or x12 (not x61))
+(or (not x13) x53)
+(or x13 (not x53))
+(or (not x14) x50)
+(or x14 (not x50))
+(or (not x15) x49)
+(or x15 (not x49))
+(or (not x16) x38)
+(or x16 (not x38))
+(or x64 x10)
+(or x27 x11)
+(or x1)
+))
diff --git a/test/regress/regress3/bug497.cvc b/test/regress/regress3/bug497.cvc
new file mode 100644
index 0000000..8af5684
--- /dev/null
+++ b/test/regress/regress3/bug497.cvc
@@ -0,0 +1,919 @@
+% COMMAND-LINE: --decision=justification --incremental
+% EXPECT: sat
+% EXPECT: sat
+OPTION "logic" "QF_UFLIA";
+_nat : TYPE = INT;
+_base : INT;
+ASSERT _base <= 0;
+_n : _nat;
+ASSERT _n >= _base;
+_check_quant : BOOLEAN;
+
+% maxdepth = 1
+x100 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state126_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_OrbitalState_Complex_OrbitalState %  LOCAL/200
+x101 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state122_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_OrbitalState_Complex_OrbitalState %  LOCAL/201
+x2 : _nat -> INT;
+			% GroundTrack_OrbitalPosition %  INPUT,STATE(1,)/102
+x102 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state221_rlt_chart_data_vars_Chart_OrbitalState_Attitude %  LOCAL,STATE(1,)/202
+x3 : _nat -> INT;
+			% GroundTrack_OrbitalVelocity %  INPUT,STATE(1,)/103
+x103 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state221_rlt_chart_data_vars_Chart_InertialNavigation_AbsoluteVelocity %  LOCAL/203
+x4 : _nat -> INT;
+			% dockVisibility_status %  INPUT,STATE(1,)/104
+x104 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state221_rlt_chart_data_vars_Chart_InertialNavigation_AbsolutePosition %  LOCAL/204
+x5 : _nat -> BOOLEAN;
+			% opticsAvailability_status %  INPUT,STATE(1,)/105
+x105 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state221_rlt_chart_data_vars_Chart_InertialNavigation_timer %  LOCAL/205
+x6 : _nat -> BOOLEAN;
+			% sunlight_status %  INPUT,STATE(1,)/106
+x106 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state221_rlt_chart_data_vars_Chart_OrbitalState_Velocity %  LOCAL,STATE(1,)/206
+x7 : _nat -> INT;
+			% GPS_satelliteVisibility_status %  INPUT,STATE(1,)/107
+x107 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state221_rlt_chart_data_vars_Chart_OrbitalState_Position %  LOCAL,STATE(1,)/207
+x8 : _nat -> BOOLEAN;
+			% GPS_receiverAvailability_status %  INPUT,STATE(1,)/108
+x108 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state221_rlt_chart_data_vars_Chart_InertialNavigation_AbsoluteAttitude %  LOCAL/208
+x9 : _nat -> INT;
+			% StarPlanetTracker_planetVisibility %  INPUT,STATE(1,)/109
+x109 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state221_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_OrbitalState_Complex_OrbitalState %  LOCAL,STATE(1,)/209
+x10 : _nat -> INT;
+			% StarPlanetTracker_starVisibility %  INPUT,STATE(1,)/110
+x110 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state221_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_InertialNavigation %  LOCAL/210
+x11 : _nat -> BOOLEAN;
+			% InertialNavigation_time %  INPUT/111
+x111 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state367_rlt_chart_data_vars_Chart_OrbitalState_Time %  LOCAL,STATE(1,)/211
+x12 : _nat -> INT;
+			% GroundTrack_Time %  INPUT/112
+x112 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state367_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_OrbitalState_Complex_OrbitalState2 %  LOCAL,STATE(1,)/212
+x13 : _nat -> INT;
+			% RealTimeClock_time %  INPUT,STATE(1,)/113
+x113 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state499_rlt_chart_data_vars_Chart_InertialNavigation_AbsoluteVelocity %  LOCAL,STATE(1,)/213
+x14 : _nat -> INT;
+			% StageTransition %  INPUT,STATE(1,)/114
+x114 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state499_rlt_chart_data_vars_Chart_InertialNavigation_AbsolutePosition %  LOCAL,STATE(1,)/214
+x15 : _nat -> BOOLEAN;
+			% CaptureApproachComplete %  OUTPUT,STATE(1,)/115
+x115 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state499_rlt_chart_data_vars_Chart_InertialNavigation_AbsoluteAttitude %  LOCAL,STATE(1,)/215
+x16 : _nat -> BOOLEAN;
+			% DockingApproachComplete %  OUTPUT,STATE(1,)/116
+x116 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state499_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_InertialNavigation %  LOCAL,STATE(1,)/216
+x17 : _nat -> BOOLEAN;
+			% AttemptingToDock %  OUTPUT,STATE(1,)/117
+x117 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state627_rlt_chart_data_states_Chart_MissionPhaseStates_DockingApproach_dockingSensor %  LOCAL,STATE(1,)/217
+x118 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state545_rlt_chart_data_vars_Chart_dockingSensor_timer %  LOCAL/218
+x119 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state545_rlt_chart_data_states_Chart_MissionPhaseStates_DockingApproach_dockingSensor %  LOCAL/219
+x20 : _nat -> BOOLEAN;
+			% ApproachOrbitComplete %  OUTPUT,STATE(1,)/120
+x120 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state542_rlt_chart_data_states_Chart_MissionPhaseStates_DockingApproach_dockingSensor %  LOCAL/220
+x21 : _nat -> BOOLEAN;
+			% FarApproachComplete %  OUTPUT,STATE(1,)/121
+x121 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state540_rlt_chart_data_states_Chart_MissionPhaseStates_DockingApproach_dockingSensor %  LOCAL/221
+x22 : _nat -> BOOLEAN;
+			% ProximityOperationsComplete %  OUTPUT,STATE(1,)/122
+x122 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state765_rlt_chart_data_states_Chart_MissionPhaseStates_LatchCapture_latch %  LOCAL,STATE(1,)/222
+x123 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state690_rlt_chart_data_states_Chart_MissionPhaseStates_LatchCapture_LatchCaptureCheck %  LOCAL,STATE(1,)/223
+x124 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state706_rlt_chart_data_states_Chart_MissionPhaseStates_LatchCapture_latch %  LOCAL/224
+x125 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state702_rlt_chart_data_states_Chart_MissionPhaseStates_LatchCapture_latch %  LOCAL/225
+x26 : _nat -> INT;
+			% MWI_FcnMin_Out110 %  LOCAL,STATE(1,)/126
+x126 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state759_rlt_chart_data_states_Chart_MissionPhaseStates_LatchCapture_latch %  LOCAL/226
+x27 : _nat -> INT;
+			% MWI_FcnMin_Out19 %  LOCAL,STATE(1,)/127
+x127 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state757_rlt_chart_data_states_Chart_MissionPhaseStates_LatchCapture_latch %  LOCAL/227
+x28 : _nat -> INT;
+			% MWI_FcnMin_In1n8 %  LOCAL/128
+x128 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state753_rlt_chart_data_states_Chart_MissionPhaseStates_LatchCapture_latch %  LOCAL/228
+x29 : _nat -> INT;
+			% MWI_FcnMin_Out18 %  LOCAL,STATE(1,)/129
+x129 : _nat -> BOOLEAN;
+			% sequence1 %  LOCAL/229
+x30 : _nat -> INT;
+			% MWI_FcnMin_Out17 %  LOCAL/130
+x31 : _nat -> INT;
+			% MWI_FcnMin_Out13 %  LOCAL,STATE(1,)/131
+x32 : _nat -> INT;
+			% MWI_FcnMin_Out12 %  LOCAL,STATE(1,)/132
+x33 : _nat -> INT;
+			% MWI_FcnMin_Out11 %  LOCAL,STATE(1,)/133
+x34 : _nat -> INT;
+			% MWI_FcnMin_In1n %  LOCAL/134
+x35 : _nat -> INT;
+			% MWI_FcnMin_Out1 %  LOCAL,STATE(1,)/135
+x36 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_vars_Chart_OrbitalState_Time %  LOCAL,STATE(1,)/136
+x37 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_vars_Chart_LatchCapture_timer %  LOCAL,STATE(1,)/137
+x38 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_vars_Chart_StarPlanetTracker_timer %  LOCAL,STATE(1,)/138
+x39 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_vars_Chart_OrbitalState_Attitude %  LOCAL,STATE(1,)/139
+x40 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_vars_Chart_CaptureApproach_timer %  LOCAL,STATE(1,)/140
+x41 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_vars_Chart_GPS_timer %  LOCAL,STATE(1,)/141
+x42 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_vars_Chart_InertialNavigation_AbsoluteVelocity %  LOCAL,STATE(1,)/142
+x43 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_vars_Chart_InertialNavigation_AbsolutePosition %  LOCAL,STATE(1,)/143
+x44 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_vars_Chart_InertialNavigation_timer %  LOCAL,STATE(1,)/144
+x45 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_vars_Chart_latch_status %  LOCAL,STATE(1,)/145
+x46 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_vars_Chart_dockingSensor_timer %  LOCAL,STATE(1,)/146
+x47 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_vars_Chart_OrbitalState_Velocity %  LOCAL,STATE(1,)/147
+x48 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_vars_Chart_OrbitalState_Position %  LOCAL,STATE(1,)/148
+x49 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_vars_Chart_dockingSensor_RelativeAttitude %  LOCAL,STATE(1,)/149
+x50 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_vars_Chart_GPS_AbsolutePosition %  LOCAL,STATE(1,)/150
+x51 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_vars_Chart_DockingApproach_timer %  LOCAL,STATE(1,)/151
+x52 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_vars_Chart_InertialNavigation_AbsoluteAttitude %  LOCAL,STATE(1,)/152
+x53 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_vars_Chart_StarPlanetTracker_AbsolutePosition %  LOCAL,STATE(1,)/153
+x54 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_states_Chart_MissionPhaseStates_DockingApproach_dockingSensor %  LOCAL,STATE(1,)/154
+x55 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_states_Chart_MissionPhaseStates_DockingApproach_DockingApproach %  LOCAL,STATE(1,)/155
+x56 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_states_Chart_MissionPhaseStates_LatchCapture_latch %  LOCAL,STATE(1,)/156
+x57 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_states_Chart_MissionPhaseStates_LatchCapture_LatchCaptureCheck %  LOCAL,STATE(1,)/157
+x58 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_GPS %  LOCAL,STATE(1,)/158
+x59 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_states_Chart %  LOCAL,STATE(1,)/159
+x60 : _nat -> [0..2];
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_OrbitalState_Complex_OrbitalState2 %  LOCAL,STATE(1,)/160
+x61 : _nat -> [0..4];
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_OrbitalState_Complex_OrbitalState %  LOCAL,STATE(1,)/161
+x62 : _nat -> [0..3];
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_StarPlanetTracker %  LOCAL,STATE(1,)/162
+x63 : _nat -> [0..5];
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_CaptureApproach %  LOCAL,STATE(1,)/163
+x64 : _nat -> [0..3];
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_InertialNavigation %  LOCAL,STATE(1,)/164
+x65 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_states_Chart_MissionPhaseStates %  LOCAL,STATE(1,)/165
+x66 : _nat -> BOOLEAN;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_outports_FarApproachComplete %  LOCAL/166
+x68 : _nat -> BOOLEAN;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_outports_AttemptingToDock %  LOCAL/168
+x71 : _nat -> BOOLEAN;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_outports_ProximityOperationsComplete %  LOCAL/171
+x73 : _nat -> BOOLEAN;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_outports_DockingApproachComplete %  LOCAL/173
+x74 : _nat -> BOOLEAN;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_outports_ApproachOrbitComplete %  LOCAL/174
+x76 : _nat -> BOOLEAN;
+			% Chart_main_simp_rlt_node_state1_rlt_chart_data_outports_CaptureApproachComplete %  LOCAL/176
+x77 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state364_rlt_chart_data_vars_Chart_InertialNavigation_AbsoluteVelocity %  LOCAL,STATE(1,)/177
+x78 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state364_rlt_chart_data_vars_Chart_InertialNavigation_AbsolutePosition %  LOCAL,STATE(1,)/178
+x79 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state364_rlt_chart_data_vars_Chart_InertialNavigation_AbsoluteAttitude %  LOCAL,STATE(1,)/179
+x80 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state364_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_InertialNavigation %  LOCAL,STATE(1,)/180
+x81 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state155_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_GPS %  LOCAL,STATE(1,)/181
+x82 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state155_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_OrbitalState_Complex_OrbitalState2 %  LOCAL,STATE(1,)/182
+x83 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state155_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_OrbitalState_Complex_OrbitalState %  LOCAL,STATE(1,)/183
+x84 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state155_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_StarPlanetTracker %  LOCAL,STATE(1,)/184
+x85 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state155_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_InertialNavigation %  LOCAL/185
+x86 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state155_rlt_chart_data_states_Chart_MissionPhaseStates %  LOCAL,STATE(1,)/186
+x87 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state104_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_InertialNavigation %  LOCAL/187
+x88 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state100_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_StarPlanetTracker %  LOCAL/188
+x89 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state98_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_StarPlanetTracker %  LOCAL/189
+x90 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state96_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_StarPlanetTracker %  LOCAL/190
+x91 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state82_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_OrbitalState_Complex_OrbitalState %  LOCAL/191
+x92 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state78_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_OrbitalState_Complex_OrbitalState %  LOCAL/192
+x93 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state148_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_InertialNavigation %  LOCAL/193
+x94 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state144_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_InertialNavigation %  LOCAL/194
+x95 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state136_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_GPS %  LOCAL/195
+x96 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state134_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_GPS %  LOCAL/196
+x97 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state132_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_GPS %  LOCAL/197
+x98 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state130_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_OrbitalState_Complex_OrbitalState2 %  LOCAL/198
+x99 : _nat -> INT;
+			% Chart_main_simp_rlt_node_state128_rlt_chart_data_states_Chart_MissionPhaseStates_CaptureApproach_OrbitalState_Active_OrbitalState_Complex_OrbitalState2 %  LOCAL/199
+
+
+% Generic definitions
+DEF__174 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x74(_M)) = (IF (_M = _base) THEN FALSE ELSE (x20((_M - 1))) ENDIF));
+DEF__176 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x76(_M)) = (IF (_M = _base) THEN FALSE ELSE (x15((_M - 1))) ENDIF));
+DEF__177 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x77(_M)) = (IF ((x83(_M)) = 1) THEN (x42(_M)) ELSE (IF ((x83(_M)) = 2) THEN (x42(_M)) ELSE (IF ((x83(_M)) = 3) THEN (x103(_M)) ELSE (IF ((x83(_M)) = 4) THEN (IF ((NOT ((((((((x2(_M)) = 2) AND ((x50(_M)) = 2)) OR (((x2(_M)) = 2) AND ((x53(_M)) = 2))) OR (((x53(_M)) = 2) AND ((x50(_M)) = 2))) OR (((x43(_M)) = 2) AND ((x2(_M)) = 2))) OR (((x43(_M)) = 2) AND ((x50(_M)) = 2))) OR (((x43(_M)) = 2) AND ((x53(_M)) = 2)))) <=> TRUE) THEN (IF ((NO [...]
+DEF__178 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x78(_M)) = (IF ((x83(_M)) = 1) THEN (x43(_M)) ELSE (IF ((x83(_M)) = 2) THEN (x43(_M)) ELSE (IF ((x83(_M)) = 3) THEN (x104(_M)) ELSE (IF ((x83(_M)) = 4) THEN (IF ((NOT ((((((((x2(_M)) = 2) AND ((x50(_M)) = 2)) OR (((x2(_M)) = 2) AND ((x53(_M)) = 2))) OR (((x53(_M)) = 2) AND ((x50(_M)) = 2))) OR (((x43(_M)) = 2) AND ((x2(_M)) = 2))) OR (((x43(_M)) = 2) AND ((x50(_M)) = 2))) OR (((x43(_M)) = 2) AND ((x53(_M)) = 2)))) <=> TRUE) THEN (IF ((NO [...]
+DEF__179 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x79(_M)) = (IF ((x83(_M)) = 1) THEN (x52(_M)) ELSE (IF ((x83(_M)) = 2) THEN (x52(_M)) ELSE (IF ((x83(_M)) = 3) THEN (x108(_M)) ELSE (IF ((x83(_M)) = 4) THEN (IF ((NOT ((((((((x2(_M)) = 2) AND ((x50(_M)) = 2)) OR (((x2(_M)) = 2) AND ((x53(_M)) = 2))) OR (((x53(_M)) = 2) AND ((x50(_M)) = 2))) OR (((x43(_M)) = 2) AND ((x2(_M)) = 2))) OR (((x43(_M)) = 2) AND ((x50(_M)) = 2))) OR (((x43(_M)) = 2) AND ((x53(_M)) = 2)))) <=> TRUE) THEN (IF ((NO [...]
+DEF__180 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x80(_M)) = (IF ((x83(_M)) = 1) THEN (x85(_M)) ELSE (IF ((x83(_M)) = 2) THEN (x85(_M)) ELSE (IF ((x83(_M)) = 3) THEN (x110(_M)) ELSE (IF ((x83(_M)) = 4) THEN (IF ((NOT ((((((((x2(_M)) = 2) AND ((x50(_M)) = 2)) OR (((x2(_M)) = 2) AND ((x53(_M)) = 2))) OR (((x53(_M)) = 2) AND ((x50(_M)) = 2))) OR (((x43(_M)) = 2) AND ((x2(_M)) = 2))) OR (((x43(_M)) = 2) AND ((x50(_M)) = 2))) OR (((x43(_M)) = 2) AND ((x53(_M)) = 2)))) <=> TRUE) THEN (IF ((NO [...]
+DEF__181 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x81(_M)) = (IF ((x63(_M)) = 1) THEN (x58(_M)) ELSE (IF ((x63(_M)) = 2) THEN (x58(_M)) ELSE (IF ((x63(_M)) = 3) THEN (x58(_M)) ELSE (IF ((x63(_M)) = 4) THEN (x95(_M)) ELSE (IF ((x63(_M)) = 5) THEN (x95(_M)) ELSE (x58(_M)) ENDIF) ENDIF) ENDIF) ENDIF) ENDIF));
+DEF__182 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x82(_M)) = (IF ((x63(_M)) = 1) THEN (x60(_M)) ELSE (IF ((x63(_M)) = 2) THEN (x60(_M)) ELSE (IF ((x63(_M)) = 3) THEN (x60(_M)) ELSE (IF ((x63(_M)) = 4) THEN (x98(_M)) ELSE (IF ((x63(_M)) = 5) THEN (x98(_M)) ELSE (x60(_M)) ENDIF) ENDIF) ENDIF) ENDIF) ENDIF));
+DEF__183 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x83(_M)) = (IF ((x63(_M)) = 1) THEN (x61(_M)) ELSE (IF ((x63(_M)) = 2) THEN (x61(_M)) ELSE (IF ((x63(_M)) = 3) THEN (x61(_M)) ELSE (IF ((x63(_M)) = 4) THEN (x100(_M)) ELSE (IF ((x63(_M)) = 5) THEN (x100(_M)) ELSE (x61(_M)) ENDIF) ENDIF) ENDIF) ENDIF) ENDIF));
+DEF__184 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x84(_M)) = (IF ((x63(_M)) = 1) THEN (x62(_M)) ELSE (IF ((x63(_M)) = 2) THEN (x62(_M)) ELSE (IF ((x63(_M)) = 3) THEN (x62(_M)) ELSE (IF ((x63(_M)) = 4) THEN (x88(_M)) ELSE (IF ((x63(_M)) = 5) THEN (x88(_M)) ELSE (x62(_M)) ENDIF) ENDIF) ENDIF) ENDIF) ENDIF));
+DEF__185 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x85(_M)) = (IF ((x63(_M)) = 1) THEN (x64(_M)) ELSE (IF ((x63(_M)) = 2) THEN (x64(_M)) ELSE (IF ((x63(_M)) = 3) THEN (x64(_M)) ELSE (IF ((x63(_M)) = 4) THEN (x93(_M)) ELSE (IF ((x63(_M)) = 5) THEN (x93(_M)) ELSE (x64(_M)) ENDIF) ENDIF) ENDIF) ENDIF) ENDIF));
+DEF__186 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x86(_M)) = (IF ((x63(_M)) = 1) THEN (x65(_M)) ELSE (IF ((x63(_M)) = 2) THEN (x65(_M)) ELSE (IF ((x63(_M)) = 3) THEN (x65(_M)) ELSE (IF ((x63(_M)) = 4) THEN 10 ELSE (IF ((x63(_M)) = 5) THEN 2 ELSE (x65(_M)) ENDIF) ENDIF) ENDIF) ENDIF) ENDIF));
+DEF__187 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x87(_M)) = (IF ((x94(_M)) = 2) THEN 0 ELSE (x94(_M)) ENDIF));
+DEF__188 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x88(_M)) = (IF ((x89(_M)) = 3) THEN 0 ELSE (x89(_M)) ENDIF));
+DEF__189 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x89(_M)) = (IF ((x90(_M)) = 2) THEN 0 ELSE (x90(_M)) ENDIF));
+DEF__190 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x90(_M)) = (IF ((x62(_M)) = 1) THEN 0 ELSE (x62(_M)) ENDIF));
+DEF__191 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x91(_M)) = (IF ((x101(_M)) = 3) THEN 0 ELSE (x101(_M)) ENDIF));
+DEF__192 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x92(_M)) = (IF ((x61(_M)) = 1) THEN 0 ELSE (x61(_M)) ENDIF));
+DEF__193 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x93(_M)) = (IF ((x87(_M)) = 3) THEN 0 ELSE (x87(_M)) ENDIF));
+DEF__194 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x94(_M)) = (IF ((x64(_M)) = 1) THEN 0 ELSE (x64(_M)) ENDIF));
+DEF__195 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x95(_M)) = (IF ((x96(_M)) = 3) THEN 0 ELSE (x96(_M)) ENDIF));
+DEF__196 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x96(_M)) = (IF ((x97(_M)) = 2) THEN 0 ELSE (x97(_M)) ENDIF));
+DEF__197 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x97(_M)) = (IF ((x58(_M)) = 1) THEN 0 ELSE (x58(_M)) ENDIF));
+DEF__198 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x98(_M)) = (IF ((x99(_M)) = 2) THEN 0 ELSE (x99(_M)) ENDIF));
+DEF__199 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x99(_M)) = (IF ((x60(_M)) = 1) THEN 0 ELSE (x60(_M)) ENDIF));
+DEF__200 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x100(_M)) = (IF ((x91(_M)) = 4) THEN 0 ELSE (x91(_M)) ENDIF));
+DEF__201 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x101(_M)) = (IF ((x92(_M)) = 2) THEN 0 ELSE (x92(_M)) ENDIF));
+DEF__202 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x102(_M)) = (IF (((((((x2(_M)) = 2) OR ((x50(_M)) = 2)) OR ((x53(_M)) = 2)) AND ((((x3(_M)) = 2) OR ((x50(_M)) = 2)) OR ((x53(_M)) = 2))) AND ((x53(_M)) = 2)) <=> TRUE) THEN 2 ELSE (x39(_M)) ENDIF));
+DEF__115 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x15(_M)) = (IF ((NOT ((x59(_M)) = 0)) <=> TRUE) THEN (IF ((x65(_M)) = 1) THEN (x76(_M)) ELSE (IF ((x65(_M)) = 2) THEN ((NOT ((x14(_M)) = 8)) AND ((NOT ((x14(_M)) = 6)) AND (x76(_M)))) ELSE (IF ((x65(_M)) = 3) THEN (x76(_M)) ELSE (IF ((x65(_M)) = 4) THEN (x76(_M)) ELSE (IF ((x65(_M)) = 5) THEN (x76(_M)) ELSE (IF ((x65(_M)) = 6) THEN (x76(_M)) ELSE (IF ((x65(_M)) = 7) THEN (x76(_M)) ELSE (IF ((x65(_M)) = 8) THEN (x76(_M)) ELSE (IF ((x65(_M [...]
+DEF__203 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x103(_M)) = (IF (((((((x2(_M)) = 2) OR ((x50(_M)) = 2)) OR ((x53(_M)) = 2)) AND ((((x3(_M)) = 2) OR ((x50(_M)) = 2)) OR ((x53(_M)) = 2))) AND ((x53(_M)) = 2)) <=> TRUE) THEN (IF ((x86(_M)) = 9) THEN (IF ((x85(_M)) = 1) THEN 2 ELSE (IF ((x85(_M)) = 2) THEN (IF ((x30(_M)) = 6) THEN 1 ELSE (IF ((x30(_M)) < 6) THEN 2 ELSE (IF ((x11(_M)) <=> TRUE) THEN 0 ELSE (x42(_M)) ENDIF) ENDIF) ENDIF) ELSE (IF ((x85(_M)) = 3) THEN 2 ELSE (x42(_M)) ENDIF) [...]
+DEF__116 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x16(_M)) = (IF ((NOT ((x59(_M)) = 0)) <=> TRUE) THEN (IF ((x65(_M)) = 1) THEN (x73(_M)) ELSE (IF ((x65(_M)) = 2) THEN (x73(_M)) ELSE (IF ((x65(_M)) = 3) THEN (x73(_M)) ELSE (IF ((x65(_M)) = 4) THEN (x73(_M)) ELSE (IF ((x65(_M)) = 5) THEN (x73(_M)) ELSE (IF ((x65(_M)) = 6) THEN (x73(_M)) ELSE (IF ((x65(_M)) = 7) THEN (x73(_M)) ELSE (IF ((x65(_M)) = 8) THEN (x73(_M)) ELSE (IF ((x65(_M)) = 9) THEN (IF ((x63(_M)) = 1) THEN (x73(_M)) ELSE (IF [...]
+DEF__204 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x104(_M)) = (IF (((((((x2(_M)) = 2) OR ((x50(_M)) = 2)) OR ((x53(_M)) = 2)) AND ((((x3(_M)) = 2) OR ((x50(_M)) = 2)) OR ((x53(_M)) = 2))) AND ((x53(_M)) = 2)) <=> TRUE) THEN (IF ((x86(_M)) = 9) THEN (IF ((x85(_M)) = 1) THEN 2 ELSE (IF ((x85(_M)) = 2) THEN (IF ((x30(_M)) = 6) THEN 1 ELSE (IF ((x30(_M)) < 6) THEN 2 ELSE (IF ((x11(_M)) <=> TRUE) THEN 0 ELSE (x43(_M)) ENDIF) ENDIF) ENDIF) ELSE (IF ((x85(_M)) = 3) THEN 2 ELSE (x43(_M)) ENDIF) [...]
+DEF__117 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x17(_M)) = (IF ((NOT ((x59(_M)) = 0)) <=> TRUE) THEN (IF ((x65(_M)) = 1) THEN (x68(_M)) ELSE (IF ((x65(_M)) = 2) THEN (x68(_M)) ELSE (IF ((x65(_M)) = 3) THEN (x68(_M)) ELSE (IF ((x65(_M)) = 4) THEN (x68(_M)) ELSE (IF ((x65(_M)) = 5) THEN (x68(_M)) ELSE (IF ((x65(_M)) = 6) THEN (x68(_M)) ELSE (IF ((x65(_M)) = 7) THEN (x68(_M)) ELSE (IF ((x65(_M)) = 8) THEN (x68(_M)) ELSE (IF ((x65(_M)) = 9) THEN (x68(_M)) ELSE (IF ((x65(_M)) = 10) THEN (I [...]
+DEF__205 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x105(_M)) = (IF (((((((x2(_M)) = 2) OR ((x50(_M)) = 2)) OR ((x53(_M)) = 2)) AND ((((x3(_M)) = 2) OR ((x50(_M)) = 2)) OR ((x53(_M)) = 2))) AND ((x53(_M)) = 2)) <=> TRUE) THEN (IF ((x86(_M)) = 9) THEN (IF ((x85(_M)) = 1) THEN 0 ELSE (IF ((x85(_M)) = 2) THEN (IF ((x30(_M)) = 6) THEN (x30(_M)) ELSE (IF ((x30(_M)) < 6) THEN 0 ELSE (x30(_M)) ENDIF) ENDIF) ELSE (IF ((x85(_M)) = 3) THEN 0 ELSE (x30(_M)) ENDIF) ENDIF) ENDIF) ELSE (x44(_M)) ENDIF) [...]
+DEF__206 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x106(_M)) = (IF (((((((x2(_M)) = 2) OR ((x50(_M)) = 2)) OR ((x53(_M)) = 2)) AND ((((x3(_M)) = 2) OR ((x50(_M)) = 2)) OR ((x53(_M)) = 2))) AND ((x53(_M)) = 2)) <=> TRUE) THEN 2 ELSE (x47(_M)) ENDIF));
+DEF__207 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x107(_M)) = (IF (((((((x2(_M)) = 2) OR ((x50(_M)) = 2)) OR ((x53(_M)) = 2)) AND ((((x3(_M)) = 2) OR ((x50(_M)) = 2)) OR ((x53(_M)) = 2))) AND ((x53(_M)) = 2)) <=> TRUE) THEN 2 ELSE (x48(_M)) ENDIF));
+DEF__120 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x20(_M)) = (IF ((NOT ((x59(_M)) = 0)) <=> TRUE) THEN (IF ((x65(_M)) = 1) THEN (x74(_M)) ELSE (IF ((x65(_M)) = 2) THEN ((NOT ((x14(_M)) = 8)) AND ((NOT ((x14(_M)) = 6)) AND (x74(_M)))) ELSE (IF ((x65(_M)) = 3) THEN (((x14(_M)) = 2) OR (x74(_M))) ELSE (IF ((x65(_M)) = 4) THEN ((NOT ((x14(_M)) = 1)) AND (x74(_M))) ELSE (x74(_M)) ENDIF) ENDIF) ENDIF) ENDIF) ELSE (x74(_M)) ENDIF));
+DEF__208 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x108(_M)) = (IF (((((((x2(_M)) = 2) OR ((x50(_M)) = 2)) OR ((x53(_M)) = 2)) AND ((((x3(_M)) = 2) OR ((x50(_M)) = 2)) OR ((x53(_M)) = 2))) AND ((x53(_M)) = 2)) <=> TRUE) THEN (IF ((x86(_M)) = 9) THEN (IF ((x85(_M)) = 1) THEN 2 ELSE (IF ((x85(_M)) = 2) THEN (IF ((x30(_M)) = 6) THEN 1 ELSE (IF ((x30(_M)) < 6) THEN 2 ELSE (IF ((x11(_M)) <=> TRUE) THEN 0 ELSE (x52(_M)) ENDIF) ENDIF) ENDIF) ELSE (IF ((x85(_M)) = 3) THEN 2 ELSE (x52(_M)) ENDIF) [...]
+DEF__121 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x21(_M)) = (IF ((NOT ((x59(_M)) = 0)) <=> TRUE) THEN (IF ((x65(_M)) = 1) THEN (x66(_M)) ELSE (IF ((x65(_M)) = 2) THEN ((NOT ((x14(_M)) = 8)) AND ((NOT ((x14(_M)) = 6)) AND (x66(_M)))) ELSE (IF ((x65(_M)) = 3) THEN (x66(_M)) ELSE (IF ((x65(_M)) = 4) THEN (x66(_M)) ELSE (IF ((x65(_M)) = 5) THEN (x66(_M)) ELSE (IF ((x65(_M)) = 6) THEN (IF ((x14(_M)) = 5) THEN (x66(_M)) ELSE (((x14(_M)) = 4) OR (x66(_M))) ENDIF) ELSE (x66(_M)) ENDIF) ENDIF)  [...]
+DEF__209 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x109(_M)) = (IF (((((((x2(_M)) = 2) OR ((x50(_M)) = 2)) OR ((x53(_M)) = 2)) AND ((((x3(_M)) = 2) OR ((x50(_M)) = 2)) OR ((x53(_M)) = 2))) AND ((x53(_M)) = 2)) <=> TRUE) THEN 4 ELSE (x83(_M)) ENDIF));
+DEF__122 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x22(_M)) = (IF ((NOT ((x59(_M)) = 0)) <=> TRUE) THEN (IF ((x65(_M)) = 1) THEN (x71(_M)) ELSE (IF ((x65(_M)) = 2) THEN ((NOT ((x14(_M)) = 8)) AND ((NOT ((x14(_M)) = 6)) AND (x71(_M)))) ELSE (IF ((x65(_M)) = 3) THEN (x71(_M)) ELSE (IF ((x65(_M)) = 4) THEN (IF ((x14(_M)) = 1) THEN (x71(_M)) ELSE (((x14(_M)) = 3) OR (x71(_M))) ENDIF) ELSE (x71(_M)) ENDIF) ENDIF) ENDIF) ENDIF) ELSE (x71(_M)) ENDIF));
+DEF__210 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x110(_M)) = (IF (((((((x2(_M)) = 2) OR ((x50(_M)) = 2)) OR ((x53(_M)) = 2)) AND ((((x3(_M)) = 2) OR ((x50(_M)) = 2)) OR ((x53(_M)) = 2))) AND ((x53(_M)) = 2)) <=> TRUE) THEN (IF ((x86(_M)) = 9) THEN (IF ((x85(_M)) = 1) THEN 2 ELSE (IF ((x85(_M)) = 2) THEN (IF ((x30(_M)) = 6) THEN 3 ELSE (IF ((x30(_M)) < 6) THEN 2 ELSE (IF ((x11(_M)) <=> TRUE) THEN 1 ELSE (x85(_M)) ENDIF) ENDIF) ENDIF) ELSE (IF ((x85(_M)) = 3) THEN 2 ELSE (x85(_M)) ENDIF) [...]
+DEF__211 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x111(_M)) = (IF (((((x12(_M)) = 2) OR ((x50(_M)) = 2)) OR ((x53(_M)) = 2)) <=> TRUE) THEN 2 ELSE (x36(_M)) ENDIF));
+DEF__212 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x112(_M)) = (IF (((((x12(_M)) = 2) OR ((x50(_M)) = 2)) OR ((x53(_M)) = 2)) <=> TRUE) THEN 2 ELSE (x82(_M)) ENDIF));
+DEF__126 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x26(_M)) = (IF (((x37(_M)) + 1) < 9) THEN ((x37(_M)) + 1) ELSE 9 ENDIF));
+DEF__213 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x113(_M)) = (IF ((x11(_M)) <=> TRUE) THEN 0 ELSE (x77(_M)) ENDIF));
+DEF__127 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x27(_M)) = (IF (((x51(_M)) + 1) < 9) THEN ((x51(_M)) + 1) ELSE 9 ENDIF));
+DEF__214 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x114(_M)) = (IF ((x11(_M)) <=> TRUE) THEN 0 ELSE (x78(_M)) ENDIF));
+DEF__128 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x28(_M)) = ((IF ((x55(_M)) = 1) THEN (x46(_M)) ELSE (IF ((x55(_M)) = 2) THEN (x46(_M)) ELSE (IF ((x55(_M)) = 3) THEN (x118(_M)) ELSE (IF ((x55(_M)) = 4) THEN (x118(_M)) ELSE (x46(_M)) ENDIF) ENDIF) ENDIF) ENDIF) + 1));
+DEF__215 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x115(_M)) = (IF ((x11(_M)) <=> TRUE) THEN 0 ELSE (x79(_M)) ENDIF));
+DEF__216 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x116(_M)) = (IF ((x11(_M)) <=> TRUE) THEN 1 ELSE (x80(_M)) ENDIF));
+DEF__129 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x29(_M)) = (IF ((x28(_M)) < 6) THEN (x28(_M)) ELSE 6 ENDIF));
+DEF__217 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x117(_M)) = (IF ((x55(_M)) = 1) THEN (x54(_M)) ELSE (IF ((x55(_M)) = 2) THEN (x54(_M)) ELSE (IF ((x55(_M)) = 3) THEN (x119(_M)) ELSE (IF ((x55(_M)) = 4) THEN (x119(_M)) ELSE (x54(_M)) ENDIF) ENDIF) ENDIF) ENDIF));
+DEF__130 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x30(_M)) = (IF (((x44(_M)) + 1) < 6) THEN ((x44(_M)) + 1) ELSE 6 ENDIF));
+DEF__131 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x31(_M)) = (IF (((x40(_M)) + 1) < 11) THEN ((x40(_M)) + 1) ELSE 11 ENDIF));
+DEF__218 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x118(_M)) = (IF ((x120(_M)) = 3) THEN 0 ELSE (IF ((x54(_M)) = 1) THEN 0 ELSE (x46(_M)) ENDIF) ENDIF));
+DEF__132 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x32(_M)) = (IF (((x41(_M)) + 1) < 6) THEN ((x41(_M)) + 1) ELSE 6 ENDIF));
+DEF__219 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x119(_M)) = (IF ((x120(_M)) = 3) THEN 0 ELSE (x120(_M)) ENDIF));
+DEF__133 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x33(_M)) = (IF (((x38(_M)) + 1) < 6) THEN ((x38(_M)) + 1) ELSE 6 ENDIF));
+DEF__220 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x120(_M)) = (IF ((x121(_M)) = 2) THEN 0 ELSE (x121(_M)) ENDIF));
+DEF__134 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x34(_M)) = ((IF ((x83(_M)) = 1) THEN (x44(_M)) ELSE (IF ((x83(_M)) = 2) THEN (x44(_M)) ELSE (IF ((x83(_M)) = 3) THEN (x105(_M)) ELSE (IF ((x83(_M)) = 4) THEN (IF ((NOT ((((((((x2(_M)) = 2) AND ((x50(_M)) = 2)) OR (((x2(_M)) = 2) AND ((x53(_M)) = 2))) OR (((x53(_M)) = 2) AND ((x50(_M)) = 2))) OR (((x43(_M)) = 2) AND ((x2(_M)) = 2))) OR (((x43(_M)) = 2) AND ((x50(_M)) = 2))) OR (((x43(_M)) = 2) AND ((x53(_M)) = 2)))) <=> TRUE) THEN (IF ((N [...]
+DEF__221 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x121(_M)) = (IF ((x54(_M)) = 1) THEN 0 ELSE (x54(_M)) ENDIF));
+DEF__222 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x122(_M)) = (IF ((x57(_M)) = 1) THEN (x56(_M)) ELSE (IF ((x57(_M)) = 2) THEN (x56(_M)) ELSE (IF ((x57(_M)) = 3) THEN (x126(_M)) ELSE (IF ((x57(_M)) = 4) THEN (x126(_M)) ELSE (x56(_M)) ENDIF) ENDIF) ENDIF) ENDIF));
+DEF__135 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x35(_M)) = (IF ((x34(_M)) < 6) THEN (x34(_M)) ELSE 6 ENDIF));
+DEF__223 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x123(_M)) = (IF ((x26(_M)) = 8) THEN 3 ELSE (x57(_M)) ENDIF));
+DEF__136 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x36(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x36((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x36((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x36((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x36((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x36((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (IF ((x14((_M - 1))) = 5) THEN (x36((_M - 1))) ELSE (IF ((x14( [...]
+DEF__224 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x124(_M)) = (IF ((x128(_M)) = 3) THEN 0 ELSE (x128(_M)) ENDIF));
+DEF__137 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x37(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x37((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x37((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x37((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x37((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x37((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (x37((_M - 1))) ELSE (IF ((x65((_M - 1))) = 7) THEN (x37((_M - [...]
+DEF__225 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x125(_M)) = (IF ((x56(_M)) = 1) THEN 0 ELSE (x56(_M)) ENDIF));
+DEF__138 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x38(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x38((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x38((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x38((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x38((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x38((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (x38((_M - 1))) ELSE (IF ((x65((_M - 1))) = 7) THEN (x38((_M - [...]
+DEF__226 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x126(_M)) = (IF ((x127(_M)) = 5) THEN 0 ELSE (x127(_M)) ENDIF));
+DEF__139 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x39(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x39((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x39((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x39((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x39((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x39((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (IF ((x14((_M - 1))) = 5) THEN (x39((_M - 1))) ELSE (IF ((x14( [...]
+DEF__227 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x127(_M)) = (IF ((x124(_M)) = 4) THEN 0 ELSE (x124(_M)) ENDIF));
+DEF__140 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x40(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x40((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x40((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x40((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x40((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x40((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (IF ((x14((_M - 1))) = 5) THEN (x40((_M - 1))) ELSE (IF ((x14( [...]
+DEF__228 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x128(_M)) = (IF ((x125(_M)) = 2) THEN 0 ELSE (x125(_M)) ENDIF));
+DEF__141 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x41(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x41((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x41((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x41((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x41((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x41((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (x41((_M - 1))) ELSE (IF ((x65((_M - 1))) = 7) THEN (x41((_M - [...]
+DEF__229 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x129(_M)) = ((NOT (x17(_M))) OR (((((x20(_M)) AND (x22(_M))) AND (x21(_M))) AND (x15(_M))) AND (x16(_M)))));
+DEF__142 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x42(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x42((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x42((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x42((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x42((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x42((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (IF ((x14((_M - 1))) = 5) THEN (x42((_M - 1))) ELSE (IF ((x14( [...]
+DEF__143 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x43(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x43((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x43((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x43((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x43((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x43((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (IF ((x14((_M - 1))) = 5) THEN (x43((_M - 1))) ELSE (IF ((x14( [...]
+DEF__144 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x44(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x44((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x44((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x44((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x44((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x44((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (x44((_M - 1))) ELSE (IF ((x65((_M - 1))) = 7) THEN (x44((_M - [...]
+DEF__145 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x45(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x45((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x45((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x45((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x45((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x45((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (x45((_M - 1))) ELSE (IF ((x65((_M - 1))) = 7) THEN (x45((_M - [...]
+DEF__146 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x46(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x46((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x46((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x46((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x46((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x46((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (x46((_M - 1))) ELSE (IF ((x65((_M - 1))) = 7) THEN (x46((_M - [...]
+DEF__147 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x47(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x47((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x47((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x47((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x47((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x47((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (IF ((x14((_M - 1))) = 5) THEN (x47((_M - 1))) ELSE (IF ((x14( [...]
+DEF__148 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x48(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x48((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x48((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x48((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x48((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x48((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (IF ((x14((_M - 1))) = 5) THEN (x48((_M - 1))) ELSE (IF ((x14( [...]
+DEF__149 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x49(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x49((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x49((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x49((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x49((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x49((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (x49((_M - 1))) ELSE (IF ((x65((_M - 1))) = 7) THEN (x49((_M - [...]
+DEF__150 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x50(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x50((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x50((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x50((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x50((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x50((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (IF ((x14((_M - 1))) = 5) THEN (x50((_M - 1))) ELSE (IF ((x14( [...]
+DEF__151 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x51(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x51((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x51((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x51((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x51((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x51((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (x51((_M - 1))) ELSE (IF ((x65((_M - 1))) = 7) THEN (x51((_M - [...]
+DEF__152 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x52(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x52((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x52((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x52((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x52((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x52((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (IF ((x14((_M - 1))) = 5) THEN (x52((_M - 1))) ELSE (IF ((x14( [...]
+DEF__153 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x53(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x53((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x53((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x53((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x53((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x53((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (IF ((x14((_M - 1))) = 5) THEN (x53((_M - 1))) ELSE (IF ((x14( [...]
+DEF__154 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x54(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x54((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x54((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x54((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x54((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x54((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (x54((_M - 1))) ELSE (IF ((x65((_M - 1))) = 7) THEN (x54((_M - [...]
+DEF__155 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x55(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x55((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x55((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x55((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x55((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x55((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (x55((_M - 1))) ELSE (IF ((x65((_M - 1))) = 7) THEN (x55((_M - [...]
+DEF__156 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x56(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x56((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x56((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x56((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x56((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x56((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (x56((_M - 1))) ELSE (IF ((x65((_M - 1))) = 7) THEN (x56((_M - [...]
+DEF__157 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x57(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x57((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x57((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x57((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x57((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x57((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (x57((_M - 1))) ELSE (IF ((x65((_M - 1))) = 7) THEN (x57((_M - [...]
+DEF__158 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x58(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x58((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x58((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x58((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x58((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x58((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (IF ((x14((_M - 1))) = 5) THEN (x58((_M - 1))) ELSE (IF ((x14( [...]
+DEF__159 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x59(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (x59((_M - 1))) ELSE 1 ENDIF) ENDIF));
+DEF__160 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x60(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x60((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x60((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x60((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x60((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x60((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (IF ((x14((_M - 1))) = 5) THEN (x60((_M - 1))) ELSE (IF ((x14( [...]
+DEF__161 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x61(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x61((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x61((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x61((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x61((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x61((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (IF ((x14((_M - 1))) = 5) THEN (x61((_M - 1))) ELSE (IF ((x14( [...]
+DEF__162 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x62(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x62((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x62((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x62((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x62((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x62((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (IF ((x14((_M - 1))) = 5) THEN (x62((_M - 1))) ELSE (IF ((x14( [...]
+DEF__163 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x63(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x63((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x63((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x63((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x63((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x63((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (IF ((x14((_M - 1))) = 5) THEN (x63((_M - 1))) ELSE (IF ((x14( [...]
+DEF__164 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x64(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (x64((_M - 1))) ELSE (IF ((x65((_M - 1))) = 2) THEN (x64((_M - 1))) ELSE (IF ((x65((_M - 1))) = 3) THEN (x64((_M - 1))) ELSE (IF ((x65((_M - 1))) = 4) THEN (x64((_M - 1))) ELSE (IF ((x65((_M - 1))) = 5) THEN (x64((_M - 1))) ELSE (IF ((x65((_M - 1))) = 6) THEN (IF ((x14((_M - 1))) = 5) THEN (x64((_M - 1))) ELSE (IF ((x14( [...]
+DEF__165 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x65(_M)) = (IF (_M = _base) THEN 0 ELSE (IF ((NOT ((x59((_M - 1))) = 0)) <=> TRUE) THEN (IF ((x65((_M - 1))) = 1) THEN (IF ((x14((_M - 1))) = 0) THEN 3 ELSE (x65((_M - 1))) ENDIF) ELSE (IF ((x65((_M - 1))) = 2) THEN (IF ((x14((_M - 1))) = 8) THEN 7 ELSE (IF ((x14((_M - 1))) = 6) THEN 3 ELSE (x65((_M - 1))) ENDIF) ENDIF) ELSE (IF ((x65((_M - 1))) = 3) THEN (IF ((x14((_M - 1))) = 2) THEN 4 ELSE (x65((_M - 1))) ENDIF) ELSE (IF ((x65((_M - 1 [...]
+DEF__166 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x66(_M)) = (IF (_M = _base) THEN FALSE ELSE (x21((_M - 1))) ENDIF));
+DEF__168 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x68(_M)) = (IF (_M = _base) THEN FALSE ELSE (x17((_M - 1))) ENDIF));
+DEF__171 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x71(_M)) = (IF (_M = _base) THEN FALSE ELSE (x22((_M - 1))) ENDIF));
+DEF__173 : _nat -> BOOLEAN = LAMBDA( _M : _nat): ((x73(_M)) = (IF (_M = _base) THEN FALSE ELSE (x16((_M - 1))) ENDIF));
+% Property(ies)
+
+P : _nat -> BOOLEAN = LAMBDA(_M : _nat): (x129(_M));
+
+
+
+
+% INDUCT : Single property verification.
+% INDUCT :  MAIN.
+% INDUCT :  not refinement_pass.
+% INDUCT :  Checking K = 2. No message received.
+% INDUCT :  setup step loop - initialize step.
+PUSH;
+% INDUCT : ;4b 
+ASSERT (DEF__174( (_n + 0)));
+ASSERT (DEF__176( (_n + 0)));
+ASSERT (DEF__177( (_n + 0)));
+ASSERT (DEF__178( (_n + 0)));
+ASSERT (DEF__179( (_n + 0)));
+ASSERT (DEF__180( (_n + 0)));
+ASSERT (DEF__181( (_n + 0)));
+ASSERT (DEF__182( (_n + 0)));
+ASSERT (DEF__183( (_n + 0)));
+ASSERT (DEF__184( (_n + 0)));
+ASSERT (DEF__185( (_n + 0)));
+ASSERT (DEF__186( (_n + 0)));
+ASSERT (DEF__187( (_n + 0)));
+ASSERT (DEF__188( (_n + 0)));
+ASSERT (DEF__189( (_n + 0)));
+ASSERT (DEF__190( (_n + 0)));
+ASSERT (DEF__191( (_n + 0)));
+ASSERT (DEF__192( (_n + 0)));
+ASSERT (DEF__193( (_n + 0)));
+ASSERT (DEF__194( (_n + 0)));
+ASSERT (DEF__195( (_n + 0)));
+ASSERT (DEF__196( (_n + 0)));
+ASSERT (DEF__197( (_n + 0)));
+ASSERT (DEF__198( (_n + 0)));
+ASSERT (DEF__199( (_n + 0)));
+ASSERT (DEF__200( (_n + 0)));
+ASSERT (DEF__201( (_n + 0)));
+ASSERT (DEF__202( (_n + 0)));
+ASSERT (DEF__115( (_n + 0)));
+ASSERT (DEF__203( (_n + 0)));
+ASSERT (DEF__116( (_n + 0)));
+ASSERT (DEF__204( (_n + 0)));
+ASSERT (DEF__117( (_n + 0)));
+ASSERT (DEF__205( (_n + 0)));
+ASSERT (DEF__206( (_n + 0)));
+ASSERT (DEF__207( (_n + 0)));
+ASSERT (DEF__120( (_n + 0)));
+ASSERT (DEF__208( (_n + 0)));
+ASSERT (DEF__121( (_n + 0)));
+ASSERT (DEF__209( (_n + 0)));
+ASSERT (DEF__122( (_n + 0)));
+ASSERT (DEF__210( (_n + 0)));
+ASSERT (DEF__211( (_n + 0)));
+ASSERT (DEF__212( (_n + 0)));
+ASSERT (DEF__126( (_n + 0)));
+ASSERT (DEF__213( (_n + 0)));
+ASSERT (DEF__127( (_n + 0)));
+ASSERT (DEF__214( (_n + 0)));
+ASSERT (DEF__128( (_n + 0)));
+ASSERT (DEF__215( (_n + 0)));
+ASSERT (DEF__216( (_n + 0)));
+ASSERT (DEF__129( (_n + 0)));
+ASSERT (DEF__217( (_n + 0)));
+ASSERT (DEF__130( (_n + 0)));
+ASSERT (DEF__131( (_n + 0)));
+ASSERT (DEF__218( (_n + 0)));
+ASSERT (DEF__132( (_n + 0)));
+ASSERT (DEF__219( (_n + 0)));
+ASSERT (DEF__133( (_n + 0)));
+ASSERT (DEF__220( (_n + 0)));
+ASSERT (DEF__134( (_n + 0)));
+ASSERT (DEF__221( (_n + 0)));
+ASSERT (DEF__222( (_n + 0)));
+ASSERT (DEF__135( (_n + 0)));
+ASSERT (DEF__223( (_n + 0)));
+ASSERT (DEF__136( (_n + 0)));
+ASSERT (DEF__224( (_n + 0)));
+ASSERT (DEF__137( (_n + 0)));
+ASSERT (DEF__225( (_n + 0)));
+ASSERT (DEF__138( (_n + 0)));
+ASSERT (DEF__226( (_n + 0)));
+ASSERT (DEF__139( (_n + 0)));
+ASSERT (DEF__227( (_n + 0)));
+ASSERT (DEF__140( (_n + 0)));
+ASSERT (DEF__228( (_n + 0)));
+ASSERT (DEF__141( (_n + 0)));
+ASSERT (DEF__229( (_n + 0)));
+ASSERT (DEF__142( (_n + 0)));
+ASSERT (DEF__143( (_n + 0)));
+ASSERT (DEF__144( (_n + 0)));
+ASSERT (DEF__145( (_n + 0)));
+ASSERT (DEF__146( (_n + 0)));
+ASSERT (DEF__147( (_n + 0)));
+ASSERT (DEF__148( (_n + 0)));
+ASSERT (DEF__149( (_n + 0)));
+ASSERT (DEF__150( (_n + 0)));
+ASSERT (DEF__151( (_n + 0)));
+ASSERT (DEF__152( (_n + 0)));
+ASSERT (DEF__153( (_n + 0)));
+ASSERT (DEF__154( (_n + 0)));
+ASSERT (DEF__155( (_n + 0)));
+ASSERT (DEF__156( (_n + 0)));
+ASSERT (DEF__157( (_n + 0)));
+ASSERT (DEF__158( (_n + 0)));
+ASSERT (DEF__159( (_n + 0)));
+ASSERT (DEF__160( (_n + 0)));
+ASSERT (DEF__161( (_n + 0)));
+ASSERT (DEF__162( (_n + 0)));
+ASSERT (DEF__163( (_n + 0)));
+ASSERT (DEF__164( (_n + 0)));
+ASSERT (DEF__165( (_n + 0)));
+ASSERT (DEF__166( (_n + 0)));
+ASSERT (DEF__168( (_n + 0)));
+ASSERT (DEF__171( (_n + 0)));
+ASSERT (DEF__173( (_n + 0)));
+ASSERT (DEF__174( (_n - 1)));
+ASSERT (DEF__176( (_n - 1)));
+ASSERT (DEF__177( (_n - 1)));
+ASSERT (DEF__178( (_n - 1)));
+ASSERT (DEF__179( (_n - 1)));
+ASSERT (DEF__180( (_n - 1)));
+ASSERT (DEF__181( (_n - 1)));
+ASSERT (DEF__182( (_n - 1)));
+ASSERT (DEF__183( (_n - 1)));
+ASSERT (DEF__184( (_n - 1)));
+ASSERT (DEF__185( (_n - 1)));
+ASSERT (DEF__186( (_n - 1)));
+ASSERT (DEF__187( (_n - 1)));
+ASSERT (DEF__188( (_n - 1)));
+ASSERT (DEF__189( (_n - 1)));
+ASSERT (DEF__190( (_n - 1)));
+ASSERT (DEF__191( (_n - 1)));
+ASSERT (DEF__192( (_n - 1)));
+ASSERT (DEF__193( (_n - 1)));
+ASSERT (DEF__194( (_n - 1)));
+ASSERT (DEF__195( (_n - 1)));
+ASSERT (DEF__196( (_n - 1)));
+ASSERT (DEF__197( (_n - 1)));
+ASSERT (DEF__198( (_n - 1)));
+ASSERT (DEF__199( (_n - 1)));
+ASSERT (DEF__200( (_n - 1)));
+ASSERT (DEF__201( (_n - 1)));
+ASSERT (DEF__202( (_n - 1)));
+ASSERT (DEF__115( (_n - 1)));
+ASSERT (DEF__203( (_n - 1)));
+ASSERT (DEF__116( (_n - 1)));
+ASSERT (DEF__204( (_n - 1)));
+ASSERT (DEF__117( (_n - 1)));
+ASSERT (DEF__205( (_n - 1)));
+ASSERT (DEF__206( (_n - 1)));
+ASSERT (DEF__207( (_n - 1)));
+ASSERT (DEF__120( (_n - 1)));
+ASSERT (DEF__208( (_n - 1)));
+ASSERT (DEF__121( (_n - 1)));
+ASSERT (DEF__209( (_n - 1)));
+ASSERT (DEF__122( (_n - 1)));
+ASSERT (DEF__210( (_n - 1)));
+ASSERT (DEF__211( (_n - 1)));
+ASSERT (DEF__212( (_n - 1)));
+ASSERT (DEF__126( (_n - 1)));
+ASSERT (DEF__213( (_n - 1)));
+ASSERT (DEF__127( (_n - 1)));
+ASSERT (DEF__214( (_n - 1)));
+ASSERT (DEF__128( (_n - 1)));
+ASSERT (DEF__215( (_n - 1)));
+ASSERT (DEF__216( (_n - 1)));
+ASSERT (DEF__129( (_n - 1)));
+ASSERT (DEF__217( (_n - 1)));
+ASSERT (DEF__130( (_n - 1)));
+ASSERT (DEF__131( (_n - 1)));
+ASSERT (DEF__218( (_n - 1)));
+ASSERT (DEF__132( (_n - 1)));
+ASSERT (DEF__219( (_n - 1)));
+ASSERT (DEF__133( (_n - 1)));
+ASSERT (DEF__220( (_n - 1)));
+ASSERT (DEF__134( (_n - 1)));
+ASSERT (DEF__221( (_n - 1)));
+ASSERT (DEF__222( (_n - 1)));
+ASSERT (DEF__135( (_n - 1)));
+ASSERT (DEF__223( (_n - 1)));
+ASSERT (DEF__136( (_n - 1)));
+ASSERT (DEF__224( (_n - 1)));
+ASSERT (DEF__137( (_n - 1)));
+ASSERT (DEF__225( (_n - 1)));
+ASSERT (DEF__138( (_n - 1)));
+ASSERT (DEF__226( (_n - 1)));
+ASSERT (DEF__139( (_n - 1)));
+ASSERT (DEF__227( (_n - 1)));
+ASSERT (DEF__140( (_n - 1)));
+ASSERT (DEF__228( (_n - 1)));
+ASSERT (DEF__141( (_n - 1)));
+ASSERT (DEF__229( (_n - 1)));
+ASSERT (DEF__142( (_n - 1)));
+ASSERT (DEF__143( (_n - 1)));
+ASSERT (DEF__144( (_n - 1)));
+ASSERT (DEF__145( (_n - 1)));
+ASSERT (DEF__146( (_n - 1)));
+ASSERT (DEF__147( (_n - 1)));
+ASSERT (DEF__148( (_n - 1)));
+ASSERT (DEF__149( (_n - 1)));
+ASSERT (DEF__150( (_n - 1)));
+ASSERT (DEF__151( (_n - 1)));
+ASSERT (DEF__152( (_n - 1)));
+ASSERT (DEF__153( (_n - 1)));
+ASSERT (DEF__154( (_n - 1)));
+ASSERT (DEF__155( (_n - 1)));
+ASSERT (DEF__156( (_n - 1)));
+ASSERT (DEF__157( (_n - 1)));
+ASSERT (DEF__158( (_n - 1)));
+ASSERT (DEF__159( (_n - 1)));
+ASSERT (DEF__160( (_n - 1)));
+ASSERT (DEF__161( (_n - 1)));
+ASSERT (DEF__162( (_n - 1)));
+ASSERT (DEF__163( (_n - 1)));
+ASSERT (DEF__164( (_n - 1)));
+ASSERT (DEF__165( (_n - 1)));
+ASSERT (DEF__166( (_n - 1)));
+ASSERT (DEF__168( (_n - 1)));
+ASSERT (DEF__171( (_n - 1)));
+ASSERT (DEF__173( (_n - 1)));
+ASSERT (P( (_n - 1)));
+ASSERT (NOT (P( _n)));
+% PUSH; %safe
+ASSERT TRUE;
+CHECKSAT;
+%ECHO "__DONE__";
+% INDUCT : sat
+% INDUCT : __DONE__
+% POP; %safe
+% INDUCT :  Inductive step is Invalid at K = 2. Continuing search.
+POP;
+ASSERT (P( (_n - 1)));
+ASSERT (P( (_n - 2)));
+ASSERT (DEF__174( (_n + 0)));
+ASSERT (DEF__176( (_n + 0)));
+ASSERT (DEF__177( (_n + 0)));
+ASSERT (DEF__178( (_n + 0)));
+ASSERT (DEF__179( (_n + 0)));
+ASSERT (DEF__180( (_n + 0)));
+ASSERT (DEF__181( (_n + 0)));
+ASSERT (DEF__182( (_n + 0)));
+ASSERT (DEF__183( (_n + 0)));
+ASSERT (DEF__184( (_n + 0)));
+ASSERT (DEF__185( (_n + 0)));
+ASSERT (DEF__186( (_n + 0)));
+ASSERT (DEF__187( (_n + 0)));
+ASSERT (DEF__188( (_n + 0)));
+ASSERT (DEF__189( (_n + 0)));
+ASSERT (DEF__190( (_n + 0)));
+ASSERT (DEF__191( (_n + 0)));
+ASSERT (DEF__192( (_n + 0)));
+ASSERT (DEF__193( (_n + 0)));
+ASSERT (DEF__194( (_n + 0)));
+ASSERT (DEF__195( (_n + 0)));
+ASSERT (DEF__196( (_n + 0)));
+ASSERT (DEF__197( (_n + 0)));
+ASSERT (DEF__198( (_n + 0)));
+ASSERT (DEF__199( (_n + 0)));
+ASSERT (DEF__200( (_n + 0)));
+ASSERT (DEF__201( (_n + 0)));
+ASSERT (DEF__202( (_n + 0)));
+ASSERT (DEF__115( (_n + 0)));
+ASSERT (DEF__203( (_n + 0)));
+ASSERT (DEF__116( (_n + 0)));
+ASSERT (DEF__204( (_n + 0)));
+ASSERT (DEF__117( (_n + 0)));
+ASSERT (DEF__205( (_n + 0)));
+ASSERT (DEF__206( (_n + 0)));
+ASSERT (DEF__207( (_n + 0)));
+ASSERT (DEF__120( (_n + 0)));
+ASSERT (DEF__208( (_n + 0)));
+ASSERT (DEF__121( (_n + 0)));
+ASSERT (DEF__209( (_n + 0)));
+ASSERT (DEF__122( (_n + 0)));
+ASSERT (DEF__210( (_n + 0)));
+ASSERT (DEF__211( (_n + 0)));
+ASSERT (DEF__212( (_n + 0)));
+ASSERT (DEF__126( (_n + 0)));
+ASSERT (DEF__213( (_n + 0)));
+ASSERT (DEF__127( (_n + 0)));
+ASSERT (DEF__214( (_n + 0)));
+ASSERT (DEF__128( (_n + 0)));
+ASSERT (DEF__215( (_n + 0)));
+ASSERT (DEF__216( (_n + 0)));
+ASSERT (DEF__129( (_n + 0)));
+ASSERT (DEF__217( (_n + 0)));
+ASSERT (DEF__130( (_n + 0)));
+ASSERT (DEF__131( (_n + 0)));
+ASSERT (DEF__218( (_n + 0)));
+ASSERT (DEF__132( (_n + 0)));
+ASSERT (DEF__219( (_n + 0)));
+ASSERT (DEF__133( (_n + 0)));
+ASSERT (DEF__220( (_n + 0)));
+ASSERT (DEF__134( (_n + 0)));
+ASSERT (DEF__221( (_n + 0)));
+ASSERT (DEF__222( (_n + 0)));
+ASSERT (DEF__135( (_n + 0)));
+ASSERT (DEF__223( (_n + 0)));
+ASSERT (DEF__136( (_n + 0)));
+ASSERT (DEF__224( (_n + 0)));
+ASSERT (DEF__137( (_n + 0)));
+ASSERT (DEF__225( (_n + 0)));
+ASSERT (DEF__138( (_n + 0)));
+ASSERT (DEF__226( (_n + 0)));
+ASSERT (DEF__139( (_n + 0)));
+ASSERT (DEF__227( (_n + 0)));
+ASSERT (DEF__140( (_n + 0)));
+ASSERT (DEF__228( (_n + 0)));
+ASSERT (DEF__141( (_n + 0)));
+ASSERT (DEF__229( (_n + 0)));
+ASSERT (DEF__142( (_n + 0)));
+ASSERT (DEF__143( (_n + 0)));
+ASSERT (DEF__144( (_n + 0)));
+ASSERT (DEF__145( (_n + 0)));
+ASSERT (DEF__146( (_n + 0)));
+ASSERT (DEF__147( (_n + 0)));
+ASSERT (DEF__148( (_n + 0)));
+ASSERT (DEF__149( (_n + 0)));
+ASSERT (DEF__150( (_n + 0)));
+ASSERT (DEF__151( (_n + 0)));
+ASSERT (DEF__152( (_n + 0)));
+ASSERT (DEF__153( (_n + 0)));
+ASSERT (DEF__154( (_n + 0)));
+ASSERT (DEF__155( (_n + 0)));
+ASSERT (DEF__156( (_n + 0)));
+ASSERT (DEF__157( (_n + 0)));
+ASSERT (DEF__158( (_n + 0)));
+ASSERT (DEF__159( (_n + 0)));
+ASSERT (DEF__160( (_n + 0)));
+ASSERT (DEF__161( (_n + 0)));
+ASSERT (DEF__162( (_n + 0)));
+ASSERT (DEF__163( (_n + 0)));
+ASSERT (DEF__164( (_n + 0)));
+ASSERT (DEF__165( (_n + 0)));
+ASSERT (DEF__166( (_n + 0)));
+ASSERT (DEF__168( (_n + 0)));
+ASSERT (DEF__171( (_n + 0)));
+ASSERT (DEF__173( (_n + 0)));
+% INDUCT :  not refinement_pass.
+% INDUCT :  Checking K = 3. No message received.
+% INDUCT :  setup step loop - initialize step.
+PUSH;
+% INDUCT : ;4b 
+ASSERT (DEF__174( (_n - 1)));
+ASSERT (DEF__176( (_n - 1)));
+ASSERT (DEF__177( (_n - 1)));
+ASSERT (DEF__178( (_n - 1)));
+ASSERT (DEF__179( (_n - 1)));
+ASSERT (DEF__180( (_n - 1)));
+ASSERT (DEF__181( (_n - 1)));
+ASSERT (DEF__182( (_n - 1)));
+ASSERT (DEF__183( (_n - 1)));
+ASSERT (DEF__184( (_n - 1)));
+ASSERT (DEF__185( (_n - 1)));
+ASSERT (DEF__186( (_n - 1)));
+ASSERT (DEF__187( (_n - 1)));
+ASSERT (DEF__188( (_n - 1)));
+ASSERT (DEF__189( (_n - 1)));
+ASSERT (DEF__190( (_n - 1)));
+ASSERT (DEF__191( (_n - 1)));
+ASSERT (DEF__192( (_n - 1)));
+ASSERT (DEF__193( (_n - 1)));
+ASSERT (DEF__194( (_n - 1)));
+ASSERT (DEF__195( (_n - 1)));
+ASSERT (DEF__196( (_n - 1)));
+ASSERT (DEF__197( (_n - 1)));
+ASSERT (DEF__198( (_n - 1)));
+ASSERT (DEF__199( (_n - 1)));
+ASSERT (DEF__200( (_n - 1)));
+ASSERT (DEF__201( (_n - 1)));
+ASSERT (DEF__202( (_n - 1)));
+ASSERT (DEF__115( (_n - 1)));
+ASSERT (DEF__203( (_n - 1)));
+ASSERT (DEF__116( (_n - 1)));
+ASSERT (DEF__204( (_n - 1)));
+ASSERT (DEF__117( (_n - 1)));
+ASSERT (DEF__205( (_n - 1)));
+ASSERT (DEF__206( (_n - 1)));
+ASSERT (DEF__207( (_n - 1)));
+ASSERT (DEF__120( (_n - 1)));
+ASSERT (DEF__208( (_n - 1)));
+ASSERT (DEF__121( (_n - 1)));
+ASSERT (DEF__209( (_n - 1)));
+ASSERT (DEF__122( (_n - 1)));
+ASSERT (DEF__210( (_n - 1)));
+ASSERT (DEF__211( (_n - 1)));
+ASSERT (DEF__212( (_n - 1)));
+ASSERT (DEF__126( (_n - 1)));
+ASSERT (DEF__213( (_n - 1)));
+ASSERT (DEF__127( (_n - 1)));
+ASSERT (DEF__214( (_n - 1)));
+ASSERT (DEF__128( (_n - 1)));
+ASSERT (DEF__215( (_n - 1)));
+ASSERT (DEF__216( (_n - 1)));
+ASSERT (DEF__129( (_n - 1)));
+ASSERT (DEF__217( (_n - 1)));
+ASSERT (DEF__130( (_n - 1)));
+ASSERT (DEF__131( (_n - 1)));
+ASSERT (DEF__218( (_n - 1)));
+ASSERT (DEF__132( (_n - 1)));
+ASSERT (DEF__219( (_n - 1)));
+ASSERT (DEF__133( (_n - 1)));
+ASSERT (DEF__220( (_n - 1)));
+ASSERT (DEF__134( (_n - 1)));
+ASSERT (DEF__221( (_n - 1)));
+ASSERT (DEF__222( (_n - 1)));
+ASSERT (DEF__135( (_n - 1)));
+ASSERT (DEF__223( (_n - 1)));
+ASSERT (DEF__136( (_n - 1)));
+ASSERT (DEF__224( (_n - 1)));
+ASSERT (DEF__137( (_n - 1)));
+ASSERT (DEF__225( (_n - 1)));
+ASSERT (DEF__138( (_n - 1)));
+ASSERT (DEF__226( (_n - 1)));
+ASSERT (DEF__139( (_n - 1)));
+ASSERT (DEF__227( (_n - 1)));
+ASSERT (DEF__140( (_n - 1)));
+ASSERT (DEF__228( (_n - 1)));
+ASSERT (DEF__141( (_n - 1)));
+ASSERT (DEF__229( (_n - 1)));
+ASSERT (DEF__142( (_n - 1)));
+ASSERT (DEF__143( (_n - 1)));
+ASSERT (DEF__144( (_n - 1)));
+ASSERT (DEF__145( (_n - 1)));
+ASSERT (DEF__146( (_n - 1)));
+ASSERT (DEF__147( (_n - 1)));
+ASSERT (DEF__148( (_n - 1)));
+ASSERT (DEF__149( (_n - 1)));
+ASSERT (DEF__150( (_n - 1)));
+ASSERT (DEF__151( (_n - 1)));
+ASSERT (DEF__152( (_n - 1)));
+ASSERT (DEF__153( (_n - 1)));
+ASSERT (DEF__154( (_n - 1)));
+ASSERT (DEF__155( (_n - 1)));
+ASSERT (DEF__156( (_n - 1)));
+ASSERT (DEF__157( (_n - 1)));
+ASSERT (DEF__158( (_n - 1)));
+ASSERT (DEF__159( (_n - 1)));
+ASSERT (DEF__160( (_n - 1)));
+ASSERT (DEF__161( (_n - 1)));
+ASSERT (DEF__162( (_n - 1)));
+ASSERT (DEF__163( (_n - 1)));
+ASSERT (DEF__164( (_n - 1)));
+ASSERT (DEF__165( (_n - 1)));
+ASSERT (DEF__166( (_n - 1)));
+ASSERT (DEF__168( (_n - 1)));
+ASSERT (DEF__171( (_n - 1)));
+ASSERT (DEF__173( (_n - 1)));
+ASSERT (DEF__174( (_n - 2)));
+ASSERT (DEF__176( (_n - 2)));
+ASSERT (DEF__177( (_n - 2)));
+ASSERT (DEF__178( (_n - 2)));
+ASSERT (DEF__179( (_n - 2)));
+ASSERT (DEF__180( (_n - 2)));
+ASSERT (DEF__181( (_n - 2)));
+ASSERT (DEF__182( (_n - 2)));
+ASSERT (DEF__183( (_n - 2)));
+ASSERT (DEF__184( (_n - 2)));
+ASSERT (DEF__185( (_n - 2)));
+ASSERT (DEF__186( (_n - 2)));
+ASSERT (DEF__187( (_n - 2)));
+ASSERT (DEF__188( (_n - 2)));
+ASSERT (DEF__189( (_n - 2)));
+ASSERT (DEF__190( (_n - 2)));
+ASSERT (DEF__191( (_n - 2)));
+ASSERT (DEF__192( (_n - 2)));
+ASSERT (DEF__193( (_n - 2)));
+ASSERT (DEF__194( (_n - 2)));
+ASSERT (DEF__195( (_n - 2)));
+ASSERT (DEF__196( (_n - 2)));
+ASSERT (DEF__197( (_n - 2)));
+ASSERT (DEF__198( (_n - 2)));
+ASSERT (DEF__199( (_n - 2)));
+ASSERT (DEF__200( (_n - 2)));
+ASSERT (DEF__201( (_n - 2)));
+ASSERT (DEF__202( (_n - 2)));
+ASSERT (DEF__115( (_n - 2)));
+ASSERT (DEF__203( (_n - 2)));
+ASSERT (DEF__116( (_n - 2)));
+ASSERT (DEF__204( (_n - 2)));
+ASSERT (DEF__117( (_n - 2)));
+ASSERT (DEF__205( (_n - 2)));
+ASSERT (DEF__206( (_n - 2)));
+ASSERT (DEF__207( (_n - 2)));
+ASSERT (DEF__120( (_n - 2)));
+ASSERT (DEF__208( (_n - 2)));
+ASSERT (DEF__121( (_n - 2)));
+ASSERT (DEF__209( (_n - 2)));
+ASSERT (DEF__122( (_n - 2)));
+ASSERT (DEF__210( (_n - 2)));
+ASSERT (DEF__211( (_n - 2)));
+ASSERT (DEF__212( (_n - 2)));
+ASSERT (DEF__126( (_n - 2)));
+ASSERT (DEF__213( (_n - 2)));
+ASSERT (DEF__127( (_n - 2)));
+ASSERT (DEF__214( (_n - 2)));
+ASSERT (DEF__128( (_n - 2)));
+ASSERT (DEF__215( (_n - 2)));
+ASSERT (DEF__216( (_n - 2)));
+ASSERT (DEF__129( (_n - 2)));
+ASSERT (DEF__217( (_n - 2)));
+ASSERT (DEF__130( (_n - 2)));
+ASSERT (DEF__131( (_n - 2)));
+ASSERT (DEF__218( (_n - 2)));
+ASSERT (DEF__132( (_n - 2)));
+ASSERT (DEF__219( (_n - 2)));
+ASSERT (DEF__133( (_n - 2)));
+ASSERT (DEF__220( (_n - 2)));
+ASSERT (DEF__134( (_n - 2)));
+ASSERT (DEF__221( (_n - 2)));
+ASSERT (DEF__222( (_n - 2)));
+ASSERT (DEF__135( (_n - 2)));
+ASSERT (DEF__223( (_n - 2)));
+ASSERT (DEF__136( (_n - 2)));
+ASSERT (DEF__224( (_n - 2)));
+ASSERT (DEF__137( (_n - 2)));
+ASSERT (DEF__225( (_n - 2)));
+ASSERT (DEF__138( (_n - 2)));
+ASSERT (DEF__226( (_n - 2)));
+ASSERT (DEF__139( (_n - 2)));
+ASSERT (DEF__227( (_n - 2)));
+ASSERT (DEF__140( (_n - 2)));
+ASSERT (DEF__228( (_n - 2)));
+ASSERT (DEF__141( (_n - 2)));
+ASSERT (DEF__229( (_n - 2)));
+ASSERT (DEF__142( (_n - 2)));
+ASSERT (DEF__143( (_n - 2)));
+ASSERT (DEF__144( (_n - 2)));
+ASSERT (DEF__145( (_n - 2)));
+ASSERT (DEF__146( (_n - 2)));
+ASSERT (DEF__147( (_n - 2)));
+ASSERT (DEF__148( (_n - 2)));
+ASSERT (DEF__149( (_n - 2)));
+ASSERT (DEF__150( (_n - 2)));
+ASSERT (DEF__151( (_n - 2)));
+ASSERT (DEF__152( (_n - 2)));
+ASSERT (DEF__153( (_n - 2)));
+ASSERT (DEF__154( (_n - 2)));
+ASSERT (DEF__155( (_n - 2)));
+ASSERT (DEF__156( (_n - 2)));
+ASSERT (DEF__157( (_n - 2)));
+ASSERT (DEF__158( (_n - 2)));
+ASSERT (DEF__159( (_n - 2)));
+ASSERT (DEF__160( (_n - 2)));
+ASSERT (DEF__161( (_n - 2)));
+ASSERT (DEF__162( (_n - 2)));
+ASSERT (DEF__163( (_n - 2)));
+ASSERT (DEF__164( (_n - 2)));
+ASSERT (DEF__165( (_n - 2)));
+ASSERT (DEF__166( (_n - 2)));
+ASSERT (DEF__168( (_n - 2)));
+ASSERT (DEF__171( (_n - 2)));
+ASSERT (DEF__173( (_n - 2)));
+ASSERT (NOT (P( _n)));
+% PUSH; %safe
+ASSERT TRUE;
+CHECKSAT;
+%ECHO "__DONE__";
+% INDUCT :  Abort in 3 step.
diff --git a/test/regress/regress3/eq_diamond14.smt b/test/regress/regress3/eq_diamond14.smt
new file mode 100644
index 0000000..f89d0e3
--- /dev/null
+++ b/test/regress/regress3/eq_diamond14.smt
@@ -0,0 +1,41 @@
+(benchmark eq_diamond14
+:source{
+Generating minimum transitivity constraints in P-time for deciding Equality Logic,
+Ofer Strichman and Mirron Rozanov,
+SMT Workshop 2005.
+
+Translator: Leonardo de Moura. }
+:status unsat
+:category { crafted }
+:logic QF_UF
+:difficulty { 0 }
+:extrafuns ((x0 U) (y0 U) (z0 U)
+(x1 U) (y1 U) (z1 U)
+(x2 U) (y2 U) (z2 U)
+(x3 U) (y3 U) (z3 U)
+(x4 U) (y4 U) (z4 U)
+(x5 U) (y5 U) (z5 U)
+(x6 U) (y6 U) (z6 U)
+(x7 U) (y7 U) (z7 U)
+(x8 U) (y8 U) (z8 U)
+(x9 U) (y9 U) (z9 U)
+(x10 U) (y10 U) (z10 U)
+(x11 U) (y11 U) (z11 U)
+(x12 U) (y12 U) (z12 U)
+(x13 U) (y13 U) (z13 U)
+)
+:formula (and 
+(or (and (= x0 y0) (= y0 x1)) (and (= x0 z0) (= z0 x1)))
+(or (and (= x1 y1) (= y1 x2)) (and (= x1 z1) (= z1 x2)))
+(or (and (= x2 y2) (= y2 x3)) (and (= x2 z2) (= z2 x3)))
+(or (and (= x3 y3) (= y3 x4)) (and (= x3 z3) (= z3 x4)))
+(or (and (= x4 y4) (= y4 x5)) (and (= x4 z4) (= z4 x5)))
+(or (and (= x5 y5) (= y5 x6)) (and (= x5 z5) (= z5 x6)))
+(or (and (= x6 y6) (= y6 x7)) (and (= x6 z6) (= z6 x7)))
+(or (and (= x7 y7) (= y7 x8)) (and (= x7 z7) (= z7 x8)))
+(or (and (= x8 y8) (= y8 x9)) (and (= x8 z8) (= z8 x9)))
+(or (and (= x9 y9) (= y9 x10)) (and (= x9 z9) (= z9 x10)))
+(or (and (= x10 y10) (= y10 x11)) (and (= x10 z10) (= z10 x11)))
+(or (and (= x11 y11) (= y11 x12)) (and (= x11 z11) (= z11 x12)))
+(or (and (= x12 y12) (= y12 x13)) (and (= x12 z12) (= z12 x13)))
+(not (= x0 x13))))
diff --git a/test/regress/regress3/friedman_n6_i4.smt b/test/regress/regress3/friedman_n6_i4.smt
new file mode 100644
index 0000000..1138779
--- /dev/null
+++ b/test/regress/regress3/friedman_n6_i4.smt
@@ -0,0 +1,47402 @@
+
+;;;generated using
+;;;  #stratimprsat -pp -ce -ci -n 6 -i 4
+;;;stratimprsat is from from http://www2.tcs.ifi.lmu.de/~friedman/#paritysat
+;;; 
+
+(benchmark b
+:status sat
+:logic QF_UF
+:extrapreds ((x1))
+: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))
+:extrapreds ((x770))
+:extrapreds ((x771))
+:extrapreds ((x772))
+:extrapreds ((x773))
+:extrapreds ((x774))
+:extrapreds ((x775))
+:extrapreds ((x776))
+:extrapreds ((x777))
+:extrapreds ((x778))
+:extrapreds ((x779))
+:extrapreds ((x780))
+:extrapreds ((x781))
+:extrapreds ((x782))
+:extrapreds ((x783))
+:extrapreds ((x784))
+:extrapreds ((x785))
+:extrapreds ((x786))
+:extrapreds ((x787))
+:extrapreds ((x788))
+:extrapreds ((x789))
+:extrapreds ((x790))
+:extrapreds ((x791))
+:extrapreds ((x792))
+:extrapreds ((x793))
+:extrapreds ((x794))
+:extrapreds ((x795))
+:extrapreds ((x796))
+:extrapreds ((x797))
+:extrapreds ((x798))
+:extrapreds ((x799))
+:extrapreds ((x800))
+:extrapreds ((x801))
+:extrapreds ((x802))
+:extrapreds ((x803))
+:extrapreds ((x804))
+:extrapreds ((x805))
+:extrapreds ((x806))
+:extrapreds ((x807))
+:extrapreds ((x808))
+:extrapreds ((x809))
+:extrapreds ((x810))
+:extrapreds ((x811))
+:extrapreds ((x812))
+:extrapreds ((x813))
+:extrapreds ((x814))
+:extrapreds ((x815))
+:extrapreds ((x816))
+:extrapreds ((x817))
+:extrapreds ((x818))
+:extrapreds ((x819))
+:extrapreds ((x820))
+:extrapreds ((x821))
+:extrapreds ((x822))
+:extrapreds ((x823))
+:extrapreds ((x824))
+:extrapreds ((x825))
+:extrapreds ((x826))
+:extrapreds ((x827))
+:extrapreds ((x828))
+:extrapreds ((x829))
+:extrapreds ((x830))
+:extrapreds ((x831))
+:extrapreds ((x832))
+:extrapreds ((x833))
+:extrapreds ((x834))
+:extrapreds ((x835))
+:extrapreds ((x836))
+:extrapreds ((x837))
+:extrapreds ((x838))
+:extrapreds ((x839))
+:extrapreds ((x840))
+:extrapreds ((x841))
+:extrapreds ((x842))
+:extrapreds ((x843))
+:extrapreds ((x844))
+:extrapreds ((x845))
+:extrapreds ((x846))
+:extrapreds ((x847))
+:extrapreds ((x848))
+:extrapreds ((x849))
+:extrapreds ((x850))
+:extrapreds ((x851))
+:extrapreds ((x852))
+:extrapreds ((x853))
+:extrapreds ((x854))
+:extrapreds ((x855))
+:extrapreds ((x856))
+:extrapreds ((x857))
+:extrapreds ((x858))
+:extrapreds ((x859))
+:extrapreds ((x860))
+:extrapreds ((x861))
+:extrapreds ((x862))
+:extrapreds ((x863))
+:extrapreds ((x864))
+:extrapreds ((x865))
+:extrapreds ((x866))
+:extrapreds ((x867))
+:extrapreds ((x868))
+:extrapreds ((x869))
+:extrapreds ((x870))
+:extrapreds ((x871))
+:extrapreds ((x872))
+:extrapreds ((x873))
+:extrapreds ((x874))
+:extrapreds ((x875))
+:extrapreds ((x876))
+:extrapreds ((x877))
+:extrapreds ((x878))
+:extrapreds ((x879))
+:extrapreds ((x880))
+:extrapreds ((x881))
+:extrapreds ((x882))
+:extrapreds ((x883))
+:extrapreds ((x884))
+:extrapreds ((x885))
+:extrapreds ((x886))
+:extrapreds ((x887))
+:extrapreds ((x888))
+:extrapreds ((x889))
+:extrapreds ((x890))
+:extrapreds ((x891))
+:extrapreds ((x892))
+:extrapreds ((x893))
+:extrapreds ((x894))
+:extrapreds ((x895))
+:extrapreds ((x896))
+:extrapreds ((x897))
+:extrapreds ((x898))
+:extrapreds ((x899))
+:extrapreds ((x900))
+:extrapreds ((x901))
+:extrapreds ((x902))
+:extrapreds ((x903))
+:extrapreds ((x904))
+:extrapreds ((x905))
+:extrapreds ((x906))
+:extrapreds ((x907))
+:extrapreds ((x908))
+:extrapreds ((x909))
+:extrapreds ((x910))
+:extrapreds ((x911))
+:extrapreds ((x912))
+:extrapreds ((x913))
+:extrapreds ((x914))
+:extrapreds ((x915))
+:extrapreds ((x916))
+:extrapreds ((x917))
+:extrapreds ((x918))
+:extrapreds ((x919))
+:extrapreds ((x920))
+:extrapreds ((x921))
+:extrapreds ((x922))
+:extrapreds ((x923))
+:extrapreds ((x924))
+:extrapreds ((x925))
+:extrapreds ((x926))
+:extrapreds ((x927))
+:extrapreds ((x928))
+:extrapreds ((x929))
+:extrapreds ((x930))
+:extrapreds ((x931))
+:extrapreds ((x932))
+:extrapreds ((x933))
+:extrapreds ((x934))
+:extrapreds ((x935))
+:extrapreds ((x936))
+:extrapreds ((x937))
+:extrapreds ((x938))
+:extrapreds ((x939))
+:extrapreds ((x940))
+:extrapreds ((x941))
+:extrapreds ((x942))
+:extrapreds ((x943))
+:extrapreds ((x944))
+:extrapreds ((x945))
+:extrapreds ((x946))
+:extrapreds ((x947))
+:extrapreds ((x948))
+:extrapreds ((x949))
+:extrapreds ((x950))
+:extrapreds ((x951))
+:extrapreds ((x952))
+:extrapreds ((x953))
+:extrapreds ((x954))
+:extrapreds ((x955))
+:extrapreds ((x956))
+:extrapreds ((x957))
+:extrapreds ((x958))
+:extrapreds ((x959))
+:extrapreds ((x960))
+:extrapreds ((x961))
+:extrapreds ((x962))
+:extrapreds ((x963))
+:extrapreds ((x964))
+:extrapreds ((x965))
+:extrapreds ((x966))
+:extrapreds ((x967))
+:extrapreds ((x968))
+:extrapreds ((x969))
+:extrapreds ((x970))
+:extrapreds ((x971))
+:extrapreds ((x972))
+:extrapreds ((x973))
+:extrapreds ((x974))
+:extrapreds ((x975))
+:extrapreds ((x976))
+:extrapreds ((x977))
+:extrapreds ((x978))
+:extrapreds ((x979))
+:extrapreds ((x980))
+:extrapreds ((x981))
+:extrapreds ((x982))
+:extrapreds ((x983))
+:extrapreds ((x984))
+:extrapreds ((x985))
+:extrapreds ((x986))
+:extrapreds ((x987))
+:extrapreds ((x988))
+:extrapreds ((x989))
+:extrapreds ((x990))
+:extrapreds ((x991))
+:extrapreds ((x992))
+:extrapreds ((x993))
+:extrapreds ((x994))
+:extrapreds ((x995))
+:extrapreds ((x996))
+:extrapreds ((x997))
+:extrapreds ((x998))
+:extrapreds ((x999))
+:extrapreds ((x1000))
+:extrapreds ((x1001))
+:extrapreds ((x1002))
+:extrapreds ((x1003))
+:extrapreds ((x1004))
+:extrapreds ((x1005))
+:extrapreds ((x1006))
+:extrapreds ((x1007))
+:extrapreds ((x1008))
+:extrapreds ((x1009))
+:extrapreds ((x1010))
+:extrapreds ((x1011))
+:extrapreds ((x1012))
+:extrapreds ((x1013))
+:extrapreds ((x1014))
+:extrapreds ((x1015))
+:extrapreds ((x1016))
+:extrapreds ((x1017))
+:extrapreds ((x1018))
+:extrapreds ((x1019))
+:extrapreds ((x1020))
+:extrapreds ((x1021))
+:extrapreds ((x1022))
+:extrapreds ((x1023))
+:extrapreds ((x1024))
+:extrapreds ((x1025))
+:extrapreds ((x1026))
+:extrapreds ((x1027))
+:extrapreds ((x1028))
+:extrapreds ((x1029))
+:extrapreds ((x1030))
+:extrapreds ((x1031))
+:extrapreds ((x1032))
+:extrapreds ((x1033))
+:extrapreds ((x1034))
+:extrapreds ((x1035))
+:extrapreds ((x1036))
+:extrapreds ((x1037))
+:extrapreds ((x1038))
+:extrapreds ((x1039))
+:extrapreds ((x1040))
+:extrapreds ((x1041))
+:extrapreds ((x1042))
+:extrapreds ((x1043))
+:extrapreds ((x1044))
+:extrapreds ((x1045))
+:extrapreds ((x1046))
+:extrapreds ((x1047))
+:extrapreds ((x1048))
+:extrapreds ((x1049))
+:extrapreds ((x1050))
+:extrapreds ((x1051))
+:extrapreds ((x1052))
+:extrapreds ((x1053))
+:extrapreds ((x1054))
+:extrapreds ((x1055))
+:extrapreds ((x1056))
+:extrapreds ((x1057))
+:extrapreds ((x1058))
+:extrapreds ((x1059))
+:extrapreds ((x1060))
+:extrapreds ((x1061))
+:extrapreds ((x1062))
+:extrapreds ((x1063))
+:extrapreds ((x1064))
+:extrapreds ((x1065))
+:extrapreds ((x1066))
+:extrapreds ((x1067))
+:extrapreds ((x1068))
+:extrapreds ((x1069))
+:extrapreds ((x1070))
+:extrapreds ((x1071))
+:extrapreds ((x1072))
+:extrapreds ((x1073))
+:extrapreds ((x1074))
+:extrapreds ((x1075))
+:extrapreds ((x1076))
+:extrapreds ((x1077))
+:extrapreds ((x1078))
+:extrapreds ((x1079))
+:extrapreds ((x1080))
+:extrapreds ((x1081))
+:extrapreds ((x1082))
+:extrapreds ((x1083))
+:extrapreds ((x1084))
+:extrapreds ((x1085))
+:extrapreds ((x1086))
+:extrapreds ((x1087))
+:extrapreds ((x1088))
+:extrapreds ((x1089))
+:extrapreds ((x1090))
+:extrapreds ((x1091))
+:extrapreds ((x1092))
+:extrapreds ((x1093))
+:extrapreds ((x1094))
+:extrapreds ((x1095))
+:extrapreds ((x1096))
+:extrapreds ((x1097))
+:extrapreds ((x1098))
+:extrapreds ((x1099))
+:extrapreds ((x1100))
+:extrapreds ((x1101))
+:extrapreds ((x1102))
+:extrapreds ((x1103))
+:extrapreds ((x1104))
+:extrapreds ((x1105))
+:extrapreds ((x1106))
+:extrapreds ((x1107))
+:extrapreds ((x1108))
+:extrapreds ((x1109))
+:extrapreds ((x1110))
+:extrapreds ((x1111))
+:extrapreds ((x1112))
+:extrapreds ((x1113))
+:extrapreds ((x1114))
+:extrapreds ((x1115))
+:extrapreds ((x1116))
+:extrapreds ((x1117))
+:extrapreds ((x1118))
+:extrapreds ((x1119))
+:extrapreds ((x1120))
+:extrapreds ((x1121))
+:extrapreds ((x1122))
+:extrapreds ((x1123))
+:extrapreds ((x1124))
+:extrapreds ((x1125))
+:extrapreds ((x1126))
+:extrapreds ((x1127))
+:extrapreds ((x1128))
+:extrapreds ((x1129))
+:extrapreds ((x1130))
+:extrapreds ((x1131))
+:extrapreds ((x1132))
+:extrapreds ((x1133))
+:extrapreds ((x1134))
+:extrapreds ((x1135))
+:extrapreds ((x1136))
+:extrapreds ((x1137))
+:extrapreds ((x1138))
+:extrapreds ((x1139))
+:extrapreds ((x1140))
+:extrapreds ((x1141))
+:extrapreds ((x1142))
+:extrapreds ((x1143))
+:extrapreds ((x1144))
+:extrapreds ((x1145))
+:extrapreds ((x1146))
+:extrapreds ((x1147))
+:extrapreds ((x1148))
+:extrapreds ((x1149))
+:extrapreds ((x1150))
+:extrapreds ((x1151))
+:extrapreds ((x1152))
+:extrapreds ((x1153))
+:extrapreds ((x1154))
+:extrapreds ((x1155))
+:extrapreds ((x1156))
+:extrapreds ((x1157))
+:extrapreds ((x1158))
+:extrapreds ((x1159))
+:extrapreds ((x1160))
+:extrapreds ((x1161))
+:extrapreds ((x1162))
+:extrapreds ((x1163))
+:extrapreds ((x1164))
+:extrapreds ((x1165))
+:extrapreds ((x1166))
+:extrapreds ((x1167))
+:extrapreds ((x1168))
+:extrapreds ((x1169))
+:extrapreds ((x1170))
+:extrapreds ((x1171))
+:extrapreds ((x1172))
+:extrapreds ((x1173))
+:extrapreds ((x1174))
+:extrapreds ((x1175))
+:extrapreds ((x1176))
+:extrapreds ((x1177))
+:extrapreds ((x1178))
+:extrapreds ((x1179))
+:extrapreds ((x1180))
+:extrapreds ((x1181))
+:extrapreds ((x1182))
+:extrapreds ((x1183))
+:extrapreds ((x1184))
+:extrapreds ((x1185))
+:extrapreds ((x1186))
+:extrapreds ((x1187))
+:extrapreds ((x1188))
+:extrapreds ((x1189))
+:extrapreds ((x1190))
+:extrapreds ((x1191))
+:extrapreds ((x1192))
+:extrapreds ((x1193))
+:extrapreds ((x1194))
+:extrapreds ((x1195))
+:extrapreds ((x1196))
+:extrapreds ((x1197))
+:extrapreds ((x1198))
+:extrapreds ((x1199))
+:extrapreds ((x1200))
+:extrapreds ((x1201))
+:extrapreds ((x1202))
+:extrapreds ((x1203))
+:extrapreds ((x1204))
+:extrapreds ((x1205))
+:extrapreds ((x1206))
+:extrapreds ((x1207))
+:extrapreds ((x1208))
+:extrapreds ((x1209))
+:extrapreds ((x1210))
+:extrapreds ((x1211))
+:extrapreds ((x1212))
+:extrapreds ((x1213))
+:extrapreds ((x1214))
+:extrapreds ((x1215))
+:extrapreds ((x1216))
+:extrapreds ((x1217))
+:extrapreds ((x1218))
+:extrapreds ((x1219))
+:extrapreds ((x1220))
+:extrapreds ((x1221))
+:extrapreds ((x1222))
+:extrapreds ((x1223))
+:extrapreds ((x1224))
+:extrapreds ((x1225))
+:extrapreds ((x1226))
+:extrapreds ((x1227))
+:extrapreds ((x1228))
+:extrapreds ((x1229))
+:extrapreds ((x1230))
+:extrapreds ((x1231))
+:extrapreds ((x1232))
+:extrapreds ((x1233))
+:extrapreds ((x1234))
+:extrapreds ((x1235))
+:extrapreds ((x1236))
+:extrapreds ((x1237))
+:extrapreds ((x1238))
+:extrapreds ((x1239))
+:extrapreds ((x1240))
+:extrapreds ((x1241))
+:extrapreds ((x1242))
+:extrapreds ((x1243))
+:extrapreds ((x1244))
+:extrapreds ((x1245))
+:extrapreds ((x1246))
+:extrapreds ((x1247))
+:extrapreds ((x1248))
+:extrapreds ((x1249))
+:extrapreds ((x1250))
+:extrapreds ((x1251))
+:extrapreds ((x1252))
+:extrapreds ((x1253))
+:extrapreds ((x1254))
+:extrapreds ((x1255))
+:extrapreds ((x1256))
+:extrapreds ((x1257))
+:extrapreds ((x1258))
+:extrapreds ((x1259))
+:extrapreds ((x1260))
+:extrapreds ((x1261))
+:extrapreds ((x1262))
+:extrapreds ((x1263))
+:extrapreds ((x1264))
+:extrapreds ((x1265))
+:extrapreds ((x1266))
+:extrapreds ((x1267))
+:extrapreds ((x1268))
+:extrapreds ((x1269))
+:extrapreds ((x1270))
+:extrapreds ((x1271))
+:extrapreds ((x1272))
+:extrapreds ((x1273))
+:extrapreds ((x1274))
+:extrapreds ((x1275))
+:extrapreds ((x1276))
+:extrapreds ((x1277))
+:extrapreds ((x1278))
+:extrapreds ((x1279))
+:extrapreds ((x1280))
+:extrapreds ((x1281))
+:extrapreds ((x1282))
+:extrapreds ((x1283))
+:extrapreds ((x1284))
+:extrapreds ((x1285))
+:extrapreds ((x1286))
+:extrapreds ((x1287))
+:extrapreds ((x1288))
+:extrapreds ((x1289))
+:extrapreds ((x1290))
+:extrapreds ((x1291))
+:extrapreds ((x1292))
+:extrapreds ((x1293))
+:extrapreds ((x1294))
+:extrapreds ((x1295))
+:extrapreds ((x1296))
+:extrapreds ((x1297))
+:extrapreds ((x1298))
+:extrapreds ((x1299))
+:extrapreds ((x1300))
+:extrapreds ((x1301))
+:extrapreds ((x1302))
+:extrapreds ((x1303))
+:extrapreds ((x1304))
+:extrapreds ((x1305))
+:extrapreds ((x1306))
+:extrapreds ((x1307))
+:extrapreds ((x1308))
+:extrapreds ((x1309))
+:extrapreds ((x1310))
+:extrapreds ((x1311))
+:extrapreds ((x1312))
+:extrapreds ((x1313))
+:extrapreds ((x1314))
+:extrapreds ((x1315))
+:extrapreds ((x1316))
+:extrapreds ((x1317))
+:extrapreds ((x1318))
+:extrapreds ((x1319))
+:extrapreds ((x1320))
+:extrapreds ((x1321))
+:extrapreds ((x1322))
+:extrapreds ((x1323))
+:extrapreds ((x1324))
+:extrapreds ((x1325))
+:extrapreds ((x1326))
+:extrapreds ((x1327))
+:extrapreds ((x1328))
+:extrapreds ((x1329))
+:extrapreds ((x1330))
+:extrapreds ((x1331))
+:extrapreds ((x1332))
+:extrapreds ((x1333))
+:extrapreds ((x1334))
+:extrapreds ((x1335))
+:extrapreds ((x1336))
+:extrapreds ((x1337))
+:extrapreds ((x1338))
+:extrapreds ((x1339))
+:extrapreds ((x1340))
+:extrapreds ((x1341))
+:extrapreds ((x1342))
+:extrapreds ((x1343))
+:extrapreds ((x1344))
+:extrapreds ((x1345))
+:extrapreds ((x1346))
+:extrapreds ((x1347))
+:extrapreds ((x1348))
+:extrapreds ((x1349))
+:extrapreds ((x1350))
+:extrapreds ((x1351))
+:extrapreds ((x1352))
+:extrapreds ((x1353))
+:extrapreds ((x1354))
+:extrapreds ((x1355))
+:extrapreds ((x1356))
+:extrapreds ((x1357))
+:extrapreds ((x1358))
+:extrapreds ((x1359))
+:extrapreds ((x1360))
+:extrapreds ((x1361))
+:extrapreds ((x1362))
+:extrapreds ((x1363))
+:extrapreds ((x1364))
+:extrapreds ((x1365))
+:extrapreds ((x1366))
+:extrapreds ((x1367))
+:extrapreds ((x1368))
+:extrapreds ((x1369))
+:extrapreds ((x1370))
+:extrapreds ((x1371))
+:extrapreds ((x1372))
+:extrapreds ((x1373))
+:extrapreds ((x1374))
+:extrapreds ((x1375))
+:extrapreds ((x1376))
+:extrapreds ((x1377))
+:extrapreds ((x1378))
+:extrapreds ((x1379))
+:extrapreds ((x1380))
+:extrapreds ((x1381))
+:extrapreds ((x1382))
+:extrapreds ((x1383))
+:extrapreds ((x1384))
+:extrapreds ((x1385))
+:extrapreds ((x1386))
+:extrapreds ((x1387))
+:extrapreds ((x1388))
+:extrapreds ((x1389))
+:extrapreds ((x1390))
+:extrapreds ((x1391))
+:extrapreds ((x1392))
+:extrapreds ((x1393))
+:extrapreds ((x1394))
+:extrapreds ((x1395))
+:extrapreds ((x1396))
+:extrapreds ((x1397))
+:extrapreds ((x1398))
+:extrapreds ((x1399))
+:extrapreds ((x1400))
+:extrapreds ((x1401))
+:extrapreds ((x1402))
+:extrapreds ((x1403))
+:extrapreds ((x1404))
+:extrapreds ((x1405))
+:extrapreds ((x1406))
+:extrapreds ((x1407))
+:extrapreds ((x1408))
+:extrapreds ((x1409))
+:extrapreds ((x1410))
+:extrapreds ((x1411))
+:extrapreds ((x1412))
+:extrapreds ((x1413))
+:extrapreds ((x1414))
+:extrapreds ((x1415))
+:extrapreds ((x1416))
+:extrapreds ((x1417))
+:extrapreds ((x1418))
+:extrapreds ((x1419))
+:extrapreds ((x1420))
+:extrapreds ((x1421))
+:extrapreds ((x1422))
+:extrapreds ((x1423))
+:extrapreds ((x1424))
+:extrapreds ((x1425))
+:extrapreds ((x1426))
+:extrapreds ((x1427))
+:extrapreds ((x1428))
+:extrapreds ((x1429))
+:extrapreds ((x1430))
+:extrapreds ((x1431))
+:extrapreds ((x1432))
+:extrapreds ((x1433))
+:extrapreds ((x1434))
+:extrapreds ((x1435))
+:extrapreds ((x1436))
+:extrapreds ((x1437))
+:extrapreds ((x1438))
+:extrapreds ((x1439))
+:extrapreds ((x1440))
+:extrapreds ((x1441))
+:extrapreds ((x1442))
+:extrapreds ((x1443))
+:extrapreds ((x1444))
+:extrapreds ((x1445))
+:extrapreds ((x1446))
+:extrapreds ((x1447))
+:extrapreds ((x1448))
+:extrapreds ((x1449))
+:extrapreds ((x1450))
+:extrapreds ((x1451))
+:extrapreds ((x1452))
+:extrapreds ((x1453))
+:extrapreds ((x1454))
+:extrapreds ((x1455))
+:extrapreds ((x1456))
+:extrapreds ((x1457))
+:extrapreds ((x1458))
+:extrapreds ((x1459))
+:extrapreds ((x1460))
+:extrapreds ((x1461))
+:extrapreds ((x1462))
+:extrapreds ((x1463))
+:extrapreds ((x1464))
+:extrapreds ((x1465))
+:extrapreds ((x1466))
+:extrapreds ((x1467))
+:extrapreds ((x1468))
+:extrapreds ((x1469))
+:extrapreds ((x1470))
+:extrapreds ((x1471))
+:extrapreds ((x1472))
+:extrapreds ((x1473))
+:extrapreds ((x1474))
+:extrapreds ((x1475))
+:extrapreds ((x1476))
+:extrapreds ((x1477))
+:extrapreds ((x1478))
+:extrapreds ((x1479))
+:extrapreds ((x1480))
+:extrapreds ((x1481))
+:extrapreds ((x1482))
+:extrapreds ((x1483))
+:extrapreds ((x1484))
+:extrapreds ((x1485))
+:extrapreds ((x1486))
+:extrapreds ((x1487))
+:extrapreds ((x1488))
+:extrapreds ((x1489))
+:extrapreds ((x1490))
+:extrapreds ((x1491))
+:extrapreds ((x1492))
+:extrapreds ((x1493))
+:extrapreds ((x1494))
+:extrapreds ((x1495))
+:extrapreds ((x1496))
+:extrapreds ((x1497))
+:extrapreds ((x1498))
+:extrapreds ((x1499))
+:extrapreds ((x1500))
+:extrapreds ((x1501))
+:extrapreds ((x1502))
+:extrapreds ((x1503))
+:extrapreds ((x1504))
+:extrapreds ((x1505))
+:extrapreds ((x1506))
+:extrapreds ((x1507))
+:extrapreds ((x1508))
+:extrapreds ((x1509))
+:extrapreds ((x1510))
+:extrapreds ((x1511))
+:extrapreds ((x1512))
+:extrapreds ((x1513))
+:extrapreds ((x1514))
+:extrapreds ((x1515))
+:extrapreds ((x1516))
+:extrapreds ((x1517))
+:extrapreds ((x1518))
+:extrapreds ((x1519))
+:extrapreds ((x1520))
+:extrapreds ((x1521))
+:extrapreds ((x1522))
+:extrapreds ((x1523))
+:extrapreds ((x1524))
+:extrapreds ((x1525))
+:extrapreds ((x1526))
+:extrapreds ((x1527))
+:extrapreds ((x1528))
+:extrapreds ((x1529))
+:extrapreds ((x1530))
+:extrapreds ((x1531))
+:extrapreds ((x1532))
+:extrapreds ((x1533))
+:extrapreds ((x1534))
+:extrapreds ((x1535))
+:extrapreds ((x1536))
+:extrapreds ((x1537))
+:extrapreds ((x1538))
+:extrapreds ((x1539))
+:extrapreds ((x1540))
+:extrapreds ((x1541))
+:extrapreds ((x1542))
+:extrapreds ((x1543))
+:extrapreds ((x1544))
+:extrapreds ((x1545))
+:extrapreds ((x1546))
+:extrapreds ((x1547))
+:extrapreds ((x1548))
+:extrapreds ((x1549))
+:extrapreds ((x1550))
+:extrapreds ((x1551))
+:extrapreds ((x1552))
+:extrapreds ((x1553))
+:extrapreds ((x1554))
+:extrapreds ((x1555))
+:extrapreds ((x1556))
+:extrapreds ((x1557))
+:extrapreds ((x1558))
+:extrapreds ((x1559))
+:extrapreds ((x1560))
+:extrapreds ((x1561))
+:extrapreds ((x1562))
+:extrapreds ((x1563))
+:extrapreds ((x1564))
+:extrapreds ((x1565))
+:extrapreds ((x1566))
+:extrapreds ((x1567))
+:extrapreds ((x1568))
+:extrapreds ((x1569))
+:extrapreds ((x1570))
+:extrapreds ((x1571))
+:extrapreds ((x1572))
+:extrapreds ((x1573))
+:extrapreds ((x1574))
+:extrapreds ((x1575))
+:extrapreds ((x1576))
+:extrapreds ((x1577))
+:extrapreds ((x1578))
+:extrapreds ((x1579))
+:extrapreds ((x1580))
+:extrapreds ((x1581))
+:extrapreds ((x1582))
+:extrapreds ((x1583))
+:extrapreds ((x1584))
+:extrapreds ((x1585))
+:extrapreds ((x1586))
+:extrapreds ((x1587))
+:extrapreds ((x1588))
+:extrapreds ((x1589))
+:extrapreds ((x1590))
+:extrapreds ((x1591))
+:extrapreds ((x1592))
+:extrapreds ((x1593))
+:extrapreds ((x1594))
+:extrapreds ((x1595))
+:extrapreds ((x1596))
+:extrapreds ((x1597))
+:extrapreds ((x1598))
+:extrapreds ((x1599))
+:extrapreds ((x1600))
+:extrapreds ((x1601))
+:extrapreds ((x1602))
+:extrapreds ((x1603))
+:extrapreds ((x1604))
+:extrapreds ((x1605))
+:extrapreds ((x1606))
+:extrapreds ((x1607))
+:extrapreds ((x1608))
+:extrapreds ((x1609))
+:extrapreds ((x1610))
+:extrapreds ((x1611))
+:extrapreds ((x1612))
+:extrapreds ((x1613))
+:extrapreds ((x1614))
+:extrapreds ((x1615))
+:extrapreds ((x1616))
+:extrapreds ((x1617))
+:extrapreds ((x1618))
+:extrapreds ((x1619))
+:extrapreds ((x1620))
+:extrapreds ((x1621))
+:extrapreds ((x1622))
+:extrapreds ((x1623))
+:extrapreds ((x1624))
+:extrapreds ((x1625))
+:extrapreds ((x1626))
+:extrapreds ((x1627))
+:extrapreds ((x1628))
+:extrapreds ((x1629))
+:extrapreds ((x1630))
+:extrapreds ((x1631))
+:extrapreds ((x1632))
+:extrapreds ((x1633))
+:extrapreds ((x1634))
+:extrapreds ((x1635))
+:extrapreds ((x1636))
+:extrapreds ((x1637))
+:extrapreds ((x1638))
+:extrapreds ((x1639))
+:extrapreds ((x1640))
+:extrapreds ((x1641))
+:extrapreds ((x1642))
+:extrapreds ((x1643))
+:extrapreds ((x1644))
+:extrapreds ((x1645))
+:extrapreds ((x1646))
+:extrapreds ((x1647))
+:extrapreds ((x1648))
+:extrapreds ((x1649))
+:extrapreds ((x1650))
+:extrapreds ((x1651))
+:extrapreds ((x1652))
+:extrapreds ((x1653))
+:extrapreds ((x1654))
+:extrapreds ((x1655))
+:extrapreds ((x1656))
+:extrapreds ((x1657))
+:extrapreds ((x1658))
+:extrapreds ((x1659))
+:extrapreds ((x1660))
+:extrapreds ((x1661))
+:extrapreds ((x1662))
+:extrapreds ((x1663))
+:extrapreds ((x1664))
+:extrapreds ((x1665))
+:extrapreds ((x1666))
+:extrapreds ((x1667))
+:extrapreds ((x1668))
+:extrapreds ((x1669))
+:extrapreds ((x1670))
+:extrapreds ((x1671))
+:extrapreds ((x1672))
+:extrapreds ((x1673))
+:extrapreds ((x1674))
+:extrapreds ((x1675))
+:extrapreds ((x1676))
+:extrapreds ((x1677))
+:extrapreds ((x1678))
+:extrapreds ((x1679))
+:extrapreds ((x1680))
+:extrapreds ((x1681))
+:extrapreds ((x1682))
+:extrapreds ((x1683))
+:extrapreds ((x1684))
+:extrapreds ((x1685))
+:extrapreds ((x1686))
+:extrapreds ((x1687))
+:extrapreds ((x1688))
+:extrapreds ((x1689))
+:extrapreds ((x1690))
+:extrapreds ((x1691))
+:extrapreds ((x1692))
+:extrapreds ((x1693))
+:extrapreds ((x1694))
+:extrapreds ((x1695))
+:extrapreds ((x1696))
+:extrapreds ((x1697))
+:extrapreds ((x1698))
+:extrapreds ((x1699))
+:extrapreds ((x1700))
+:extrapreds ((x1701))
+:extrapreds ((x1702))
+:extrapreds ((x1703))
+:extrapreds ((x1704))
+:extrapreds ((x1705))
+:extrapreds ((x1706))
+:extrapreds ((x1707))
+:extrapreds ((x1708))
+:extrapreds ((x1709))
+:extrapreds ((x1710))
+:extrapreds ((x1711))
+:extrapreds ((x1712))
+:extrapreds ((x1713))
+:extrapreds ((x1714))
+:extrapreds ((x1715))
+:extrapreds ((x1716))
+:extrapreds ((x1717))
+:extrapreds ((x1718))
+:extrapreds ((x1719))
+:extrapreds ((x1720))
+:extrapreds ((x1721))
+:extrapreds ((x1722))
+:extrapreds ((x1723))
+:extrapreds ((x1724))
+:extrapreds ((x1725))
+:extrapreds ((x1726))
+:extrapreds ((x1727))
+:extrapreds ((x1728))
+:extrapreds ((x1729))
+:extrapreds ((x1730))
+:extrapreds ((x1731))
+:extrapreds ((x1732))
+:extrapreds ((x1733))
+:extrapreds ((x1734))
+:extrapreds ((x1735))
+:extrapreds ((x1736))
+:extrapreds ((x1737))
+:extrapreds ((x1738))
+:extrapreds ((x1739))
+:extrapreds ((x1740))
+:extrapreds ((x1741))
+:extrapreds ((x1742))
+:extrapreds ((x1743))
+:extrapreds ((x1744))
+:extrapreds ((x1745))
+:extrapreds ((x1746))
+:extrapreds ((x1747))
+:extrapreds ((x1748))
+:extrapreds ((x1749))
+:extrapreds ((x1750))
+:extrapreds ((x1751))
+:extrapreds ((x1752))
+:extrapreds ((x1753))
+:extrapreds ((x1754))
+:extrapreds ((x1755))
+:extrapreds ((x1756))
+:extrapreds ((x1757))
+:extrapreds ((x1758))
+:extrapreds ((x1759))
+:extrapreds ((x1760))
+:extrapreds ((x1761))
+:extrapreds ((x1762))
+:extrapreds ((x1763))
+:extrapreds ((x1764))
+:extrapreds ((x1765))
+:extrapreds ((x1766))
+:extrapreds ((x1767))
+:extrapreds ((x1768))
+:extrapreds ((x1769))
+:extrapreds ((x1770))
+:extrapreds ((x1771))
+:extrapreds ((x1772))
+:extrapreds ((x1773))
+:extrapreds ((x1774))
+:extrapreds ((x1775))
+:extrapreds ((x1776))
+:extrapreds ((x1777))
+:extrapreds ((x1778))
+:extrapreds ((x1779))
+:extrapreds ((x1780))
+:extrapreds ((x1781))
+:extrapreds ((x1782))
+:extrapreds ((x1783))
+:extrapreds ((x1784))
+:extrapreds ((x1785))
+:extrapreds ((x1786))
+:extrapreds ((x1787))
+:extrapreds ((x1788))
+:extrapreds ((x1789))
+:extrapreds ((x1790))
+:extrapreds ((x1791))
+:extrapreds ((x1792))
+:extrapreds ((x1793))
+:extrapreds ((x1794))
+:extrapreds ((x1795))
+:extrapreds ((x1796))
+:extrapreds ((x1797))
+:extrapreds ((x1798))
+:extrapreds ((x1799))
+:extrapreds ((x1800))
+:extrapreds ((x1801))
+:extrapreds ((x1802))
+:extrapreds ((x1803))
+:extrapreds ((x1804))
+:extrapreds ((x1805))
+:extrapreds ((x1806))
+:extrapreds ((x1807))
+:extrapreds ((x1808))
+:extrapreds ((x1809))
+:extrapreds ((x1810))
+:extrapreds ((x1811))
+:extrapreds ((x1812))
+:extrapreds ((x1813))
+:extrapreds ((x1814))
+:extrapreds ((x1815))
+:extrapreds ((x1816))
+:extrapreds ((x1817))
+:extrapreds ((x1818))
+:extrapreds ((x1819))
+:extrapreds ((x1820))
+:extrapreds ((x1821))
+:extrapreds ((x1822))
+:extrapreds ((x1823))
+:extrapreds ((x1824))
+:extrapreds ((x1825))
+:extrapreds ((x1826))
+:extrapreds ((x1827))
+:extrapreds ((x1828))
+:extrapreds ((x1829))
+:extrapreds ((x1830))
+:extrapreds ((x1831))
+:extrapreds ((x1832))
+:extrapreds ((x1833))
+:extrapreds ((x1834))
+:extrapreds ((x1835))
+:extrapreds ((x1836))
+:extrapreds ((x1837))
+:extrapreds ((x1838))
+:extrapreds ((x1839))
+:extrapreds ((x1840))
+:extrapreds ((x1841))
+:extrapreds ((x1842))
+:extrapreds ((x1843))
+:extrapreds ((x1844))
+:extrapreds ((x1845))
+:extrapreds ((x1846))
+:extrapreds ((x1847))
+:extrapreds ((x1848))
+:extrapreds ((x1849))
+:extrapreds ((x1850))
+:extrapreds ((x1851))
+:extrapreds ((x1852))
+:extrapreds ((x1853))
+:extrapreds ((x1854))
+:extrapreds ((x1855))
+:extrapreds ((x1856))
+:extrapreds ((x1857))
+:extrapreds ((x1858))
+:extrapreds ((x1859))
+:extrapreds ((x1860))
+:extrapreds ((x1861))
+:extrapreds ((x1862))
+:extrapreds ((x1863))
+:extrapreds ((x1864))
+:extrapreds ((x1865))
+:extrapreds ((x1866))
+:extrapreds ((x1867))
+:extrapreds ((x1868))
+:extrapreds ((x1869))
+:extrapreds ((x1870))
+:extrapreds ((x1871))
+:extrapreds ((x1872))
+:extrapreds ((x1873))
+:extrapreds ((x1874))
+:extrapreds ((x1875))
+:extrapreds ((x1876))
+:extrapreds ((x1877))
+:extrapreds ((x1878))
+:extrapreds ((x1879))
+:extrapreds ((x1880))
+:extrapreds ((x1881))
+:extrapreds ((x1882))
+:extrapreds ((x1883))
+:extrapreds ((x1884))
+:extrapreds ((x1885))
+:extrapreds ((x1886))
+:extrapreds ((x1887))
+:extrapreds ((x1888))
+:extrapreds ((x1889))
+:extrapreds ((x1890))
+:extrapreds ((x1891))
+:extrapreds ((x1892))
+:extrapreds ((x1893))
+:extrapreds ((x1894))
+:extrapreds ((x1895))
+:extrapreds ((x1896))
+:extrapreds ((x1897))
+:extrapreds ((x1898))
+:extrapreds ((x1899))
+:extrapreds ((x1900))
+:extrapreds ((x1901))
+:extrapreds ((x1902))
+:extrapreds ((x1903))
+:extrapreds ((x1904))
+:extrapreds ((x1905))
+:extrapreds ((x1906))
+:extrapreds ((x1907))
+:extrapreds ((x1908))
+:extrapreds ((x1909))
+:extrapreds ((x1910))
+:extrapreds ((x1911))
+:extrapreds ((x1912))
+:extrapreds ((x1913))
+:extrapreds ((x1914))
+:extrapreds ((x1915))
+:extrapreds ((x1916))
+:extrapreds ((x1917))
+:extrapreds ((x1918))
+:extrapreds ((x1919))
+:extrapreds ((x1920))
+:extrapreds ((x1921))
+:extrapreds ((x1922))
+:extrapreds ((x1923))
+:extrapreds ((x1924))
+:extrapreds ((x1925))
+:extrapreds ((x1926))
+:extrapreds ((x1927))
+:extrapreds ((x1928))
+:extrapreds ((x1929))
+:extrapreds ((x1930))
+:extrapreds ((x1931))
+:extrapreds ((x1932))
+:extrapreds ((x1933))
+:extrapreds ((x1934))
+:extrapreds ((x1935))
+:extrapreds ((x1936))
+:extrapreds ((x1937))
+:extrapreds ((x1938))
+:extrapreds ((x1939))
+:extrapreds ((x1940))
+:extrapreds ((x1941))
+:extrapreds ((x1942))
+:extrapreds ((x1943))
+:extrapreds ((x1944))
+:extrapreds ((x1945))
+:extrapreds ((x1946))
+:extrapreds ((x1947))
+:extrapreds ((x1948))
+:extrapreds ((x1949))
+:extrapreds ((x1950))
+:extrapreds ((x1951))
+:extrapreds ((x1952))
+:extrapreds ((x1953))
+:extrapreds ((x1954))
+:extrapreds ((x1955))
+:extrapreds ((x1956))
+:extrapreds ((x1957))
+:extrapreds ((x1958))
+:extrapreds ((x1959))
+:extrapreds ((x1960))
+:extrapreds ((x1961))
+:extrapreds ((x1962))
+:extrapreds ((x1963))
+:extrapreds ((x1964))
+:extrapreds ((x1965))
+:extrapreds ((x1966))
+:extrapreds ((x1967))
+:extrapreds ((x1968))
+:extrapreds ((x1969))
+:extrapreds ((x1970))
+:extrapreds ((x1971))
+:extrapreds ((x1972))
+:extrapreds ((x1973))
+:extrapreds ((x1974))
+:extrapreds ((x1975))
+:extrapreds ((x1976))
+:extrapreds ((x1977))
+:extrapreds ((x1978))
+:extrapreds ((x1979))
+:extrapreds ((x1980))
+:extrapreds ((x1981))
+:extrapreds ((x1982))
+:extrapreds ((x1983))
+:extrapreds ((x1984))
+:extrapreds ((x1985))
+:extrapreds ((x1986))
+:extrapreds ((x1987))
+:extrapreds ((x1988))
+:extrapreds ((x1989))
+:extrapreds ((x1990))
+:extrapreds ((x1991))
+:extrapreds ((x1992))
+:extrapreds ((x1993))
+:extrapreds ((x1994))
+:extrapreds ((x1995))
+:extrapreds ((x1996))
+:extrapreds ((x1997))
+:extrapreds ((x1998))
+:extrapreds ((x1999))
+:extrapreds ((x2000))
+:extrapreds ((x2001))
+:extrapreds ((x2002))
+:extrapreds ((x2003))
+:extrapreds ((x2004))
+:extrapreds ((x2005))
+:extrapreds ((x2006))
+:extrapreds ((x2007))
+:extrapreds ((x2008))
+:extrapreds ((x2009))
+:extrapreds ((x2010))
+:extrapreds ((x2011))
+:extrapreds ((x2012))
+:extrapreds ((x2013))
+:extrapreds ((x2014))
+:extrapreds ((x2015))
+:extrapreds ((x2016))
+:extrapreds ((x2017))
+:extrapreds ((x2018))
+:extrapreds ((x2019))
+:extrapreds ((x2020))
+:extrapreds ((x2021))
+:extrapreds ((x2022))
+:extrapreds ((x2023))
+:extrapreds ((x2024))
+:extrapreds ((x2025))
+:extrapreds ((x2026))
+:extrapreds ((x2027))
+:extrapreds ((x2028))
+:extrapreds ((x2029))
+:extrapreds ((x2030))
+:extrapreds ((x2031))
+:extrapreds ((x2032))
+:extrapreds ((x2033))
+:extrapreds ((x2034))
+:extrapreds ((x2035))
+:extrapreds ((x2036))
+:extrapreds ((x2037))
+:extrapreds ((x2038))
+:extrapreds ((x2039))
+:extrapreds ((x2040))
+:extrapreds ((x2041))
+:extrapreds ((x2042))
+:extrapreds ((x2043))
+:extrapreds ((x2044))
+:extrapreds ((x2045))
+:extrapreds ((x2046))
+:extrapreds ((x2047))
+:extrapreds ((x2048))
+:extrapreds ((x2049))
+:extrapreds ((x2050))
+:extrapreds ((x2051))
+:extrapreds ((x2052))
+:extrapreds ((x2053))
+:extrapreds ((x2054))
+:extrapreds ((x2055))
+:extrapreds ((x2056))
+:extrapreds ((x2057))
+:extrapreds ((x2058))
+:extrapreds ((x2059))
+:extrapreds ((x2060))
+:extrapreds ((x2061))
+:extrapreds ((x2062))
+:extrapreds ((x2063))
+:extrapreds ((x2064))
+:extrapreds ((x2065))
+:extrapreds ((x2066))
+:extrapreds ((x2067))
+:extrapreds ((x2068))
+:extrapreds ((x2069))
+:extrapreds ((x2070))
+:extrapreds ((x2071))
+:extrapreds ((x2072))
+:extrapreds ((x2073))
+:extrapreds ((x2074))
+:extrapreds ((x2075))
+:extrapreds ((x2076))
+:extrapreds ((x2077))
+:extrapreds ((x2078))
+:extrapreds ((x2079))
+:extrapreds ((x2080))
+:extrapreds ((x2081))
+:extrapreds ((x2082))
+:extrapreds ((x2083))
+:extrapreds ((x2084))
+:extrapreds ((x2085))
+:extrapreds ((x2086))
+:extrapreds ((x2087))
+:extrapreds ((x2088))
+:extrapreds ((x2089))
+:extrapreds ((x2090))
+:extrapreds ((x2091))
+:extrapreds ((x2092))
+:extrapreds ((x2093))
+:extrapreds ((x2094))
+:extrapreds ((x2095))
+:extrapreds ((x2096))
+:extrapreds ((x2097))
+:extrapreds ((x2098))
+:extrapreds ((x2099))
+:extrapreds ((x2100))
+:extrapreds ((x2101))
+:extrapreds ((x2102))
+:extrapreds ((x2103))
+:extrapreds ((x2104))
+:extrapreds ((x2105))
+:extrapreds ((x2106))
+:extrapreds ((x2107))
+:extrapreds ((x2108))
+:extrapreds ((x2109))
+:extrapreds ((x2110))
+:extrapreds ((x2111))
+:extrapreds ((x2112))
+:extrapreds ((x2113))
+:extrapreds ((x2114))
+:extrapreds ((x2115))
+:extrapreds ((x2116))
+:extrapreds ((x2117))
+:extrapreds ((x2118))
+:extrapreds ((x2119))
+:extrapreds ((x2120))
+:extrapreds ((x2121))
+:extrapreds ((x2122))
+:extrapreds ((x2123))
+:extrapreds ((x2124))
+:extrapreds ((x2125))
+:extrapreds ((x2126))
+:extrapreds ((x2127))
+:extrapreds ((x2128))
+:extrapreds ((x2129))
+:extrapreds ((x2130))
+:extrapreds ((x2131))
+:extrapreds ((x2132))
+:extrapreds ((x2133))
+:extrapreds ((x2134))
+:extrapreds ((x2135))
+:extrapreds ((x2136))
+:extrapreds ((x2137))
+:extrapreds ((x2138))
+:extrapreds ((x2139))
+:extrapreds ((x2140))
+:extrapreds ((x2141))
+:extrapreds ((x2142))
+:extrapreds ((x2143))
+:extrapreds ((x2144))
+:extrapreds ((x2145))
+:extrapreds ((x2146))
+:extrapreds ((x2147))
+:extrapreds ((x2148))
+:extrapreds ((x2149))
+:extrapreds ((x2150))
+:extrapreds ((x2151))
+:extrapreds ((x2152))
+:extrapreds ((x2153))
+:extrapreds ((x2154))
+:extrapreds ((x2155))
+:extrapreds ((x2156))
+:extrapreds ((x2157))
+:extrapreds ((x2158))
+:extrapreds ((x2159))
+:extrapreds ((x2160))
+:extrapreds ((x2161))
+:extrapreds ((x2162))
+:extrapreds ((x2163))
+:extrapreds ((x2164))
+:extrapreds ((x2165))
+:extrapreds ((x2166))
+:extrapreds ((x2167))
+:extrapreds ((x2168))
+:extrapreds ((x2169))
+:extrapreds ((x2170))
+:extrapreds ((x2171))
+:extrapreds ((x2172))
+:extrapreds ((x2173))
+:extrapreds ((x2174))
+:extrapreds ((x2175))
+:extrapreds ((x2176))
+:extrapreds ((x2177))
+:extrapreds ((x2178))
+:extrapreds ((x2179))
+:extrapreds ((x2180))
+:extrapreds ((x2181))
+:extrapreds ((x2182))
+:extrapreds ((x2183))
+:extrapreds ((x2184))
+:extrapreds ((x2185))
+:extrapreds ((x2186))
+:extrapreds ((x2187))
+:extrapreds ((x2188))
+:extrapreds ((x2189))
+:extrapreds ((x2190))
+:extrapreds ((x2191))
+:extrapreds ((x2192))
+:extrapreds ((x2193))
+:extrapreds ((x2194))
+:extrapreds ((x2195))
+:extrapreds ((x2196))
+:extrapreds ((x2197))
+:extrapreds ((x2198))
+:extrapreds ((x2199))
+:extrapreds ((x2200))
+:extrapreds ((x2201))
+:extrapreds ((x2202))
+:extrapreds ((x2203))
+:extrapreds ((x2204))
+:extrapreds ((x2205))
+:extrapreds ((x2206))
+:extrapreds ((x2207))
+:extrapreds ((x2208))
+:extrapreds ((x2209))
+:extrapreds ((x2210))
+:extrapreds ((x2211))
+:extrapreds ((x2212))
+:extrapreds ((x2213))
+:extrapreds ((x2214))
+:extrapreds ((x2215))
+:extrapreds ((x2216))
+:extrapreds ((x2217))
+:extrapreds ((x2218))
+:extrapreds ((x2219))
+:extrapreds ((x2220))
+:extrapreds ((x2221))
+:extrapreds ((x2222))
+:extrapreds ((x2223))
+:extrapreds ((x2224))
+:extrapreds ((x2225))
+:extrapreds ((x2226))
+:extrapreds ((x2227))
+:extrapreds ((x2228))
+:extrapreds ((x2229))
+:extrapreds ((x2230))
+:extrapreds ((x2231))
+:extrapreds ((x2232))
+:extrapreds ((x2233))
+:extrapreds ((x2234))
+:extrapreds ((x2235))
+:extrapreds ((x2236))
+:extrapreds ((x2237))
+:extrapreds ((x2238))
+:extrapreds ((x2239))
+:extrapreds ((x2240))
+:extrapreds ((x2241))
+:extrapreds ((x2242))
+:extrapreds ((x2243))
+:extrapreds ((x2244))
+:extrapreds ((x2245))
+:extrapreds ((x2246))
+:extrapreds ((x2247))
+:extrapreds ((x2248))
+:extrapreds ((x2249))
+:extrapreds ((x2250))
+:extrapreds ((x2251))
+:extrapreds ((x2252))
+:extrapreds ((x2253))
+:extrapreds ((x2254))
+:extrapreds ((x2255))
+:extrapreds ((x2256))
+:extrapreds ((x2257))
+:extrapreds ((x2258))
+:extrapreds ((x2259))
+:extrapreds ((x2260))
+:extrapreds ((x2261))
+:extrapreds ((x2262))
+:extrapreds ((x2263))
+:extrapreds ((x2264))
+:extrapreds ((x2265))
+:extrapreds ((x2266))
+:extrapreds ((x2267))
+:extrapreds ((x2268))
+:extrapreds ((x2269))
+:extrapreds ((x2270))
+:extrapreds ((x2271))
+:extrapreds ((x2272))
+:extrapreds ((x2273))
+:extrapreds ((x2274))
+:extrapreds ((x2275))
+:extrapreds ((x2276))
+:extrapreds ((x2277))
+:extrapreds ((x2278))
+:extrapreds ((x2279))
+:extrapreds ((x2280))
+:extrapreds ((x2281))
+:extrapreds ((x2282))
+:extrapreds ((x2283))
+:extrapreds ((x2284))
+:extrapreds ((x2285))
+:extrapreds ((x2286))
+:extrapreds ((x2287))
+:extrapreds ((x2288))
+:extrapreds ((x2289))
+:extrapreds ((x2290))
+:extrapreds ((x2291))
+:extrapreds ((x2292))
+:extrapreds ((x2293))
+:extrapreds ((x2294))
+:extrapreds ((x2295))
+:extrapreds ((x2296))
+:extrapreds ((x2297))
+:extrapreds ((x2298))
+:extrapreds ((x2299))
+:extrapreds ((x2300))
+:extrapreds ((x2301))
+:extrapreds ((x2302))
+:extrapreds ((x2303))
+:extrapreds ((x2304))
+:extrapreds ((x2305))
+:extrapreds ((x2306))
+:extrapreds ((x2307))
+:extrapreds ((x2308))
+:extrapreds ((x2309))
+:extrapreds ((x2310))
+:extrapreds ((x2311))
+:extrapreds ((x2312))
+:extrapreds ((x2313))
+:extrapreds ((x2314))
+:extrapreds ((x2315))
+:extrapreds ((x2316))
+:extrapreds ((x2317))
+:extrapreds ((x2318))
+:extrapreds ((x2319))
+:extrapreds ((x2320))
+:extrapreds ((x2321))
+:extrapreds ((x2322))
+:extrapreds ((x2323))
+:extrapreds ((x2324))
+:extrapreds ((x2325))
+:extrapreds ((x2326))
+:extrapreds ((x2327))
+:extrapreds ((x2328))
+:extrapreds ((x2329))
+:extrapreds ((x2330))
+:extrapreds ((x2331))
+:extrapreds ((x2332))
+:extrapreds ((x2333))
+:extrapreds ((x2334))
+:extrapreds ((x2335))
+:extrapreds ((x2336))
+:extrapreds ((x2337))
+:extrapreds ((x2338))
+:extrapreds ((x2339))
+:extrapreds ((x2340))
+:extrapreds ((x2341))
+:extrapreds ((x2342))
+:extrapreds ((x2343))
+:extrapreds ((x2344))
+:extrapreds ((x2345))
+:extrapreds ((x2346))
+:extrapreds ((x2347))
+:extrapreds ((x2348))
+:extrapreds ((x2349))
+:extrapreds ((x2350))
+:extrapreds ((x2351))
+:extrapreds ((x2352))
+:extrapreds ((x2353))
+:extrapreds ((x2354))
+:extrapreds ((x2355))
+:extrapreds ((x2356))
+:extrapreds ((x2357))
+:extrapreds ((x2358))
+:extrapreds ((x2359))
+:extrapreds ((x2360))
+:extrapreds ((x2361))
+:extrapreds ((x2362))
+:extrapreds ((x2363))
+:extrapreds ((x2364))
+:extrapreds ((x2365))
+:extrapreds ((x2366))
+:extrapreds ((x2367))
+:extrapreds ((x2368))
+:extrapreds ((x2369))
+:extrapreds ((x2370))
+:extrapreds ((x2371))
+:extrapreds ((x2372))
+:extrapreds ((x2373))
+:extrapreds ((x2374))
+:extrapreds ((x2375))
+:extrapreds ((x2376))
+:extrapreds ((x2377))
+:extrapreds ((x2378))
+:extrapreds ((x2379))
+:extrapreds ((x2380))
+:extrapreds ((x2381))
+:extrapreds ((x2382))
+:extrapreds ((x2383))
+:extrapreds ((x2384))
+:extrapreds ((x2385))
+:extrapreds ((x2386))
+:extrapreds ((x2387))
+:extrapreds ((x2388))
+:extrapreds ((x2389))
+:extrapreds ((x2390))
+:extrapreds ((x2391))
+:extrapreds ((x2392))
+:extrapreds ((x2393))
+:extrapreds ((x2394))
+:extrapreds ((x2395))
+:extrapreds ((x2396))
+:extrapreds ((x2397))
+:extrapreds ((x2398))
+:extrapreds ((x2399))
+:extrapreds ((x2400))
+:extrapreds ((x2401))
+:extrapreds ((x2402))
+:extrapreds ((x2403))
+:extrapreds ((x2404))
+:extrapreds ((x2405))
+:extrapreds ((x2406))
+:extrapreds ((x2407))
+:extrapreds ((x2408))
+:extrapreds ((x2409))
+:extrapreds ((x2410))
+:extrapreds ((x2411))
+:extrapreds ((x2412))
+:extrapreds ((x2413))
+:extrapreds ((x2414))
+:extrapreds ((x2415))
+:extrapreds ((x2416))
+:extrapreds ((x2417))
+:extrapreds ((x2418))
+:extrapreds ((x2419))
+:extrapreds ((x2420))
+:extrapreds ((x2421))
+:extrapreds ((x2422))
+:extrapreds ((x2423))
+:extrapreds ((x2424))
+:extrapreds ((x2425))
+:extrapreds ((x2426))
+:extrapreds ((x2427))
+:extrapreds ((x2428))
+:extrapreds ((x2429))
+:extrapreds ((x2430))
+:extrapreds ((x2431))
+:extrapreds ((x2432))
+:extrapreds ((x2433))
+:extrapreds ((x2434))
+:extrapreds ((x2435))
+:extrapreds ((x2436))
+:extrapreds ((x2437))
+:extrapreds ((x2438))
+:extrapreds ((x2439))
+:extrapreds ((x2440))
+:extrapreds ((x2441))
+:extrapreds ((x2442))
+:extrapreds ((x2443))
+:extrapreds ((x2444))
+:extrapreds ((x2445))
+:extrapreds ((x2446))
+:extrapreds ((x2447))
+:extrapreds ((x2448))
+:extrapreds ((x2449))
+:extrapreds ((x2450))
+:extrapreds ((x2451))
+:extrapreds ((x2452))
+:extrapreds ((x2453))
+:extrapreds ((x2454))
+:extrapreds ((x2455))
+:extrapreds ((x2456))
+:extrapreds ((x2457))
+:extrapreds ((x2458))
+:extrapreds ((x2459))
+:extrapreds ((x2460))
+:extrapreds ((x2461))
+:extrapreds ((x2462))
+:extrapreds ((x2463))
+:extrapreds ((x2464))
+:extrapreds ((x2465))
+:extrapreds ((x2466))
+:extrapreds ((x2467))
+:extrapreds ((x2468))
+:extrapreds ((x2469))
+:extrapreds ((x2470))
+:extrapreds ((x2471))
+:extrapreds ((x2472))
+:extrapreds ((x2473))
+:extrapreds ((x2474))
+:extrapreds ((x2475))
+:extrapreds ((x2476))
+:extrapreds ((x2477))
+:extrapreds ((x2478))
+:extrapreds ((x2479))
+:extrapreds ((x2480))
+:extrapreds ((x2481))
+:extrapreds ((x2482))
+:extrapreds ((x2483))
+:extrapreds ((x2484))
+:extrapreds ((x2485))
+:extrapreds ((x2486))
+:extrapreds ((x2487))
+:extrapreds ((x2488))
+:extrapreds ((x2489))
+:extrapreds ((x2490))
+:extrapreds ((x2491))
+:extrapreds ((x2492))
+:extrapreds ((x2493))
+:extrapreds ((x2494))
+:extrapreds ((x2495))
+:extrapreds ((x2496))
+:extrapreds ((x2497))
+:extrapreds ((x2498))
+:extrapreds ((x2499))
+:extrapreds ((x2500))
+:extrapreds ((x2501))
+:extrapreds ((x2502))
+:extrapreds ((x2503))
+:extrapreds ((x2504))
+:extrapreds ((x2505))
+:extrapreds ((x2506))
+:extrapreds ((x2507))
+:extrapreds ((x2508))
+:extrapreds ((x2509))
+:extrapreds ((x2510))
+:extrapreds ((x2511))
+:extrapreds ((x2512))
+:extrapreds ((x2513))
+:extrapreds ((x2514))
+:extrapreds ((x2515))
+:extrapreds ((x2516))
+:extrapreds ((x2517))
+:extrapreds ((x2518))
+:extrapreds ((x2519))
+:extrapreds ((x2520))
+:extrapreds ((x2521))
+:extrapreds ((x2522))
+:extrapreds ((x2523))
+:extrapreds ((x2524))
+:extrapreds ((x2525))
+:extrapreds ((x2526))
+:extrapreds ((x2527))
+:extrapreds ((x2528))
+:extrapreds ((x2529))
+:extrapreds ((x2530))
+:extrapreds ((x2531))
+:extrapreds ((x2532))
+:extrapreds ((x2533))
+:extrapreds ((x2534))
+:extrapreds ((x2535))
+:extrapreds ((x2536))
+:extrapreds ((x2537))
+:extrapreds ((x2538))
+:extrapreds ((x2539))
+:extrapreds ((x2540))
+:extrapreds ((x2541))
+:extrapreds ((x2542))
+:extrapreds ((x2543))
+:extrapreds ((x2544))
+:extrapreds ((x2545))
+:extrapreds ((x2546))
+:extrapreds ((x2547))
+:extrapreds ((x2548))
+:extrapreds ((x2549))
+:extrapreds ((x2550))
+:extrapreds ((x2551))
+:extrapreds ((x2552))
+:extrapreds ((x2553))
+:extrapreds ((x2554))
+:extrapreds ((x2555))
+:extrapreds ((x2556))
+:extrapreds ((x2557))
+:extrapreds ((x2558))
+:extrapreds ((x2559))
+:extrapreds ((x2560))
+:extrapreds ((x2561))
+:extrapreds ((x2562))
+:extrapreds ((x2563))
+:extrapreds ((x2564))
+:extrapreds ((x2565))
+:extrapreds ((x2566))
+:extrapreds ((x2567))
+:extrapreds ((x2568))
+:extrapreds ((x2569))
+:extrapreds ((x2570))
+:extrapreds ((x2571))
+:extrapreds ((x2572))
+:extrapreds ((x2573))
+:extrapreds ((x2574))
+:extrapreds ((x2575))
+:extrapreds ((x2576))
+:extrapreds ((x2577))
+:extrapreds ((x2578))
+:extrapreds ((x2579))
+:extrapreds ((x2580))
+:extrapreds ((x2581))
+:extrapreds ((x2582))
+:extrapreds ((x2583))
+:extrapreds ((x2584))
+:extrapreds ((x2585))
+:extrapreds ((x2586))
+:extrapreds ((x2587))
+:extrapreds ((x2588))
+:extrapreds ((x2589))
+:extrapreds ((x2590))
+:extrapreds ((x2591))
+:extrapreds ((x2592))
+:extrapreds ((x2593))
+:extrapreds ((x2594))
+:extrapreds ((x2595))
+:extrapreds ((x2596))
+:extrapreds ((x2597))
+:extrapreds ((x2598))
+:extrapreds ((x2599))
+:extrapreds ((x2600))
+:extrapreds ((x2601))
+:extrapreds ((x2602))
+:extrapreds ((x2603))
+:extrapreds ((x2604))
+:extrapreds ((x2605))
+:extrapreds ((x2606))
+:extrapreds ((x2607))
+:extrapreds ((x2608))
+:extrapreds ((x2609))
+:extrapreds ((x2610))
+:extrapreds ((x2611))
+:extrapreds ((x2612))
+:extrapreds ((x2613))
+:extrapreds ((x2614))
+:extrapreds ((x2615))
+:extrapreds ((x2616))
+:extrapreds ((x2617))
+:extrapreds ((x2618))
+:extrapreds ((x2619))
+:extrapreds ((x2620))
+:extrapreds ((x2621))
+:extrapreds ((x2622))
+:extrapreds ((x2623))
+:extrapreds ((x2624))
+:extrapreds ((x2625))
+:extrapreds ((x2626))
+:extrapreds ((x2627))
+:extrapreds ((x2628))
+:extrapreds ((x2629))
+:extrapreds ((x2630))
+:extrapreds ((x2631))
+:extrapreds ((x2632))
+:extrapreds ((x2633))
+:extrapreds ((x2634))
+:extrapreds ((x2635))
+:extrapreds ((x2636))
+:extrapreds ((x2637))
+:extrapreds ((x2638))
+:extrapreds ((x2639))
+:extrapreds ((x2640))
+:extrapreds ((x2641))
+:extrapreds ((x2642))
+:extrapreds ((x2643))
+:extrapreds ((x2644))
+:extrapreds ((x2645))
+:extrapreds ((x2646))
+:extrapreds ((x2647))
+:extrapreds ((x2648))
+:extrapreds ((x2649))
+:extrapreds ((x2650))
+:extrapreds ((x2651))
+:extrapreds ((x2652))
+:extrapreds ((x2653))
+:extrapreds ((x2654))
+:extrapreds ((x2655))
+:extrapreds ((x2656))
+:extrapreds ((x2657))
+:extrapreds ((x2658))
+:extrapreds ((x2659))
+:extrapreds ((x2660))
+:extrapreds ((x2661))
+:extrapreds ((x2662))
+:extrapreds ((x2663))
+:extrapreds ((x2664))
+:extrapreds ((x2665))
+:extrapreds ((x2666))
+:extrapreds ((x2667))
+:extrapreds ((x2668))
+:extrapreds ((x2669))
+:extrapreds ((x2670))
+:extrapreds ((x2671))
+:extrapreds ((x2672))
+:extrapreds ((x2673))
+:extrapreds ((x2674))
+:extrapreds ((x2675))
+:extrapreds ((x2676))
+:extrapreds ((x2677))
+:extrapreds ((x2678))
+:extrapreds ((x2679))
+:extrapreds ((x2680))
+:extrapreds ((x2681))
+:extrapreds ((x2682))
+:extrapreds ((x2683))
+:extrapreds ((x2684))
+:extrapreds ((x2685))
+:extrapreds ((x2686))
+:extrapreds ((x2687))
+:extrapreds ((x2688))
+:extrapreds ((x2689))
+:extrapreds ((x2690))
+:extrapreds ((x2691))
+:extrapreds ((x2692))
+:extrapreds ((x2693))
+:extrapreds ((x2694))
+:extrapreds ((x2695))
+:extrapreds ((x2696))
+:extrapreds ((x2697))
+:extrapreds ((x2698))
+:extrapreds ((x2699))
+:extrapreds ((x2700))
+:extrapreds ((x2701))
+:extrapreds ((x2702))
+:extrapreds ((x2703))
+:extrapreds ((x2704))
+:extrapreds ((x2705))
+:extrapreds ((x2706))
+:extrapreds ((x2707))
+:extrapreds ((x2708))
+:extrapreds ((x2709))
+:extrapreds ((x2710))
+:extrapreds ((x2711))
+:extrapreds ((x2712))
+:extrapreds ((x2713))
+:extrapreds ((x2714))
+:extrapreds ((x2715))
+:extrapreds ((x2716))
+:extrapreds ((x2717))
+:extrapreds ((x2718))
+:extrapreds ((x2719))
+:extrapreds ((x2720))
+:extrapreds ((x2721))
+:extrapreds ((x2722))
+:extrapreds ((x2723))
+:extrapreds ((x2724))
+:extrapreds ((x2725))
+:extrapreds ((x2726))
+:extrapreds ((x2727))
+:extrapreds ((x2728))
+:extrapreds ((x2729))
+:extrapreds ((x2730))
+:extrapreds ((x2731))
+:extrapreds ((x2732))
+:extrapreds ((x2733))
+:extrapreds ((x2734))
+:extrapreds ((x2735))
+:extrapreds ((x2736))
+:extrapreds ((x2737))
+:extrapreds ((x2738))
+:extrapreds ((x2739))
+:extrapreds ((x2740))
+:extrapreds ((x2741))
+:extrapreds ((x2742))
+:extrapreds ((x2743))
+:extrapreds ((x2744))
+:extrapreds ((x2745))
+:extrapreds ((x2746))
+:extrapreds ((x2747))
+:extrapreds ((x2748))
+:extrapreds ((x2749))
+:extrapreds ((x2750))
+:extrapreds ((x2751))
+:extrapreds ((x2752))
+:extrapreds ((x2753))
+:extrapreds ((x2754))
+:extrapreds ((x2755))
+:extrapreds ((x2756))
+:extrapreds ((x2757))
+:extrapreds ((x2758))
+:extrapreds ((x2759))
+:extrapreds ((x2760))
+:extrapreds ((x2761))
+:extrapreds ((x2762))
+:extrapreds ((x2763))
+:extrapreds ((x2764))
+:extrapreds ((x2765))
+:extrapreds ((x2766))
+:extrapreds ((x2767))
+:extrapreds ((x2768))
+:extrapreds ((x2769))
+:extrapreds ((x2770))
+:extrapreds ((x2771))
+:extrapreds ((x2772))
+:extrapreds ((x2773))
+:extrapreds ((x2774))
+:extrapreds ((x2775))
+:extrapreds ((x2776))
+:extrapreds ((x2777))
+:extrapreds ((x2778))
+:extrapreds ((x2779))
+:extrapreds ((x2780))
+:extrapreds ((x2781))
+:extrapreds ((x2782))
+:extrapreds ((x2783))
+:extrapreds ((x2784))
+:extrapreds ((x2785))
+:extrapreds ((x2786))
+:extrapreds ((x2787))
+:extrapreds ((x2788))
+:extrapreds ((x2789))
+:extrapreds ((x2790))
+:extrapreds ((x2791))
+:extrapreds ((x2792))
+:extrapreds ((x2793))
+:extrapreds ((x2794))
+:extrapreds ((x2795))
+:extrapreds ((x2796))
+:extrapreds ((x2797))
+:extrapreds ((x2798))
+:extrapreds ((x2799))
+:extrapreds ((x2800))
+:extrapreds ((x2801))
+:extrapreds ((x2802))
+:extrapreds ((x2803))
+:extrapreds ((x2804))
+:extrapreds ((x2805))
+:extrapreds ((x2806))
+:extrapreds ((x2807))
+:extrapreds ((x2808))
+:extrapreds ((x2809))
+:extrapreds ((x2810))
+:extrapreds ((x2811))
+:extrapreds ((x2812))
+:extrapreds ((x2813))
+:extrapreds ((x2814))
+:extrapreds ((x2815))
+:extrapreds ((x2816))
+:extrapreds ((x2817))
+:extrapreds ((x2818))
+:extrapreds ((x2819))
+:extrapreds ((x2820))
+:extrapreds ((x2821))
+:extrapreds ((x2822))
+:extrapreds ((x2823))
+:extrapreds ((x2824))
+:extrapreds ((x2825))
+:extrapreds ((x2826))
+:extrapreds ((x2827))
+:extrapreds ((x2828))
+:extrapreds ((x2829))
+:extrapreds ((x2830))
+:extrapreds ((x2831))
+:extrapreds ((x2832))
+:extrapreds ((x2833))
+:extrapreds ((x2834))
+:extrapreds ((x2835))
+:extrapreds ((x2836))
+:extrapreds ((x2837))
+:extrapreds ((x2838))
+:extrapreds ((x2839))
+:extrapreds ((x2840))
+:extrapreds ((x2841))
+:extrapreds ((x2842))
+:extrapreds ((x2843))
+:extrapreds ((x2844))
+:extrapreds ((x2845))
+:extrapreds ((x2846))
+:extrapreds ((x2847))
+:extrapreds ((x2848))
+:extrapreds ((x2849))
+:extrapreds ((x2850))
+:extrapreds ((x2851))
+:extrapreds ((x2852))
+:extrapreds ((x2853))
+:extrapreds ((x2854))
+:extrapreds ((x2855))
+:extrapreds ((x2856))
+:extrapreds ((x2857))
+:extrapreds ((x2858))
+:extrapreds ((x2859))
+:extrapreds ((x2860))
+:extrapreds ((x2861))
+:extrapreds ((x2862))
+:extrapreds ((x2863))
+:extrapreds ((x2864))
+:extrapreds ((x2865))
+:extrapreds ((x2866))
+:extrapreds ((x2867))
+:extrapreds ((x2868))
+:extrapreds ((x2869))
+:extrapreds ((x2870))
+:extrapreds ((x2871))
+:extrapreds ((x2872))
+:extrapreds ((x2873))
+:extrapreds ((x2874))
+:extrapreds ((x2875))
+:extrapreds ((x2876))
+:extrapreds ((x2877))
+:extrapreds ((x2878))
+:extrapreds ((x2879))
+:extrapreds ((x2880))
+:extrapreds ((x2881))
+:extrapreds ((x2882))
+:extrapreds ((x2883))
+:extrapreds ((x2884))
+:extrapreds ((x2885))
+:extrapreds ((x2886))
+:extrapreds ((x2887))
+:extrapreds ((x2888))
+:extrapreds ((x2889))
+:extrapreds ((x2890))
+:extrapreds ((x2891))
+:extrapreds ((x2892))
+:extrapreds ((x2893))
+:extrapreds ((x2894))
+:extrapreds ((x2895))
+:extrapreds ((x2896))
+:extrapreds ((x2897))
+:extrapreds ((x2898))
+:extrapreds ((x2899))
+:extrapreds ((x2900))
+:extrapreds ((x2901))
+:extrapreds ((x2902))
+:extrapreds ((x2903))
+:extrapreds ((x2904))
+:extrapreds ((x2905))
+:extrapreds ((x2906))
+:extrapreds ((x2907))
+:extrapreds ((x2908))
+:extrapreds ((x2909))
+:extrapreds ((x2910))
+:extrapreds ((x2911))
+:extrapreds ((x2912))
+:extrapreds ((x2913))
+:extrapreds ((x2914))
+:extrapreds ((x2915))
+:extrapreds ((x2916))
+:extrapreds ((x2917))
+:extrapreds ((x2918))
+:extrapreds ((x2919))
+:extrapreds ((x2920))
+:extrapreds ((x2921))
+:extrapreds ((x2922))
+:extrapreds ((x2923))
+:extrapreds ((x2924))
+:extrapreds ((x2925))
+:extrapreds ((x2926))
+:extrapreds ((x2927))
+:extrapreds ((x2928))
+:extrapreds ((x2929))
+:extrapreds ((x2930))
+:extrapreds ((x2931))
+:extrapreds ((x2932))
+:extrapreds ((x2933))
+:extrapreds ((x2934))
+:extrapreds ((x2935))
+:extrapreds ((x2936))
+:extrapreds ((x2937))
+:extrapreds ((x2938))
+:extrapreds ((x2939))
+:extrapreds ((x2940))
+:extrapreds ((x2941))
+:extrapreds ((x2942))
+:extrapreds ((x2943))
+:extrapreds ((x2944))
+:extrapreds ((x2945))
+:extrapreds ((x2946))
+:extrapreds ((x2947))
+:extrapreds ((x2948))
+:extrapreds ((x2949))
+:extrapreds ((x2950))
+:extrapreds ((x2951))
+:extrapreds ((x2952))
+:extrapreds ((x2953))
+:extrapreds ((x2954))
+:extrapreds ((x2955))
+:extrapreds ((x2956))
+:extrapreds ((x2957))
+:extrapreds ((x2958))
+:extrapreds ((x2959))
+:extrapreds ((x2960))
+:extrapreds ((x2961))
+:extrapreds ((x2962))
+:extrapreds ((x2963))
+:extrapreds ((x2964))
+:extrapreds ((x2965))
+:extrapreds ((x2966))
+:extrapreds ((x2967))
+:extrapreds ((x2968))
+:extrapreds ((x2969))
+:extrapreds ((x2970))
+:extrapreds ((x2971))
+:extrapreds ((x2972))
+:extrapreds ((x2973))
+:extrapreds ((x2974))
+:extrapreds ((x2975))
+:extrapreds ((x2976))
+:extrapreds ((x2977))
+:extrapreds ((x2978))
+:extrapreds ((x2979))
+:extrapreds ((x2980))
+:extrapreds ((x2981))
+:extrapreds ((x2982))
+:extrapreds ((x2983))
+:extrapreds ((x2984))
+:extrapreds ((x2985))
+:extrapreds ((x2986))
+:extrapreds ((x2987))
+:extrapreds ((x2988))
+:extrapreds ((x2989))
+:extrapreds ((x2990))
+:extrapreds ((x2991))
+:extrapreds ((x2992))
+:extrapreds ((x2993))
+:extrapreds ((x2994))
+:extrapreds ((x2995))
+:extrapreds ((x2996))
+:extrapreds ((x2997))
+:extrapreds ((x2998))
+:extrapreds ((x2999))
+:extrapreds ((x3000))
+:extrapreds ((x3001))
+:extrapreds ((x3002))
+:extrapreds ((x3003))
+:extrapreds ((x3004))
+:extrapreds ((x3005))
+:extrapreds ((x3006))
+:extrapreds ((x3007))
+:extrapreds ((x3008))
+:extrapreds ((x3009))
+:extrapreds ((x3010))
+:extrapreds ((x3011))
+:extrapreds ((x3012))
+:extrapreds ((x3013))
+:extrapreds ((x3014))
+:extrapreds ((x3015))
+:extrapreds ((x3016))
+:extrapreds ((x3017))
+:extrapreds ((x3018))
+:extrapreds ((x3019))
+:extrapreds ((x3020))
+:extrapreds ((x3021))
+:extrapreds ((x3022))
+:extrapreds ((x3023))
+:extrapreds ((x3024))
+:extrapreds ((x3025))
+:extrapreds ((x3026))
+:extrapreds ((x3027))
+:extrapreds ((x3028))
+:extrapreds ((x3029))
+:extrapreds ((x3030))
+:extrapreds ((x3031))
+:extrapreds ((x3032))
+:extrapreds ((x3033))
+:extrapreds ((x3034))
+:extrapreds ((x3035))
+:extrapreds ((x3036))
+:extrapreds ((x3037))
+:extrapreds ((x3038))
+:extrapreds ((x3039))
+:extrapreds ((x3040))
+:extrapreds ((x3041))
+:extrapreds ((x3042))
+:extrapreds ((x3043))
+:extrapreds ((x3044))
+:extrapreds ((x3045))
+:extrapreds ((x3046))
+:extrapreds ((x3047))
+:extrapreds ((x3048))
+:extrapreds ((x3049))
+:extrapreds ((x3050))
+:extrapreds ((x3051))
+:extrapreds ((x3052))
+:extrapreds ((x3053))
+:extrapreds ((x3054))
+:extrapreds ((x3055))
+:extrapreds ((x3056))
+:extrapreds ((x3057))
+:extrapreds ((x3058))
+:extrapreds ((x3059))
+:extrapreds ((x3060))
+:extrapreds ((x3061))
+:extrapreds ((x3062))
+:extrapreds ((x3063))
+:extrapreds ((x3064))
+:extrapreds ((x3065))
+:extrapreds ((x3066))
+:extrapreds ((x3067))
+:extrapreds ((x3068))
+:extrapreds ((x3069))
+:extrapreds ((x3070))
+:extrapreds ((x3071))
+:extrapreds ((x3072))
+:extrapreds ((x3073))
+:extrapreds ((x3074))
+:extrapreds ((x3075))
+:extrapreds ((x3076))
+:extrapreds ((x3077))
+:extrapreds ((x3078))
+:extrapreds ((x3079))
+:extrapreds ((x3080))
+:extrapreds ((x3081))
+:extrapreds ((x3082))
+:extrapreds ((x3083))
+:extrapreds ((x3084))
+:extrapreds ((x3085))
+:extrapreds ((x3086))
+:extrapreds ((x3087))
+:extrapreds ((x3088))
+:extrapreds ((x3089))
+:extrapreds ((x3090))
+:extrapreds ((x3091))
+:extrapreds ((x3092))
+:extrapreds ((x3093))
+:extrapreds ((x3094))
+:extrapreds ((x3095))
+:extrapreds ((x3096))
+:extrapreds ((x3097))
+:extrapreds ((x3098))
+:extrapreds ((x3099))
+:extrapreds ((x3100))
+:extrapreds ((x3101))
+:extrapreds ((x3102))
+:extrapreds ((x3103))
+:extrapreds ((x3104))
+:extrapreds ((x3105))
+:extrapreds ((x3106))
+:extrapreds ((x3107))
+:extrapreds ((x3108))
+:extrapreds ((x3109))
+:extrapreds ((x3110))
+:extrapreds ((x3111))
+:extrapreds ((x3112))
+:extrapreds ((x3113))
+:extrapreds ((x3114))
+:extrapreds ((x3115))
+:extrapreds ((x3116))
+:extrapreds ((x3117))
+:extrapreds ((x3118))
+:extrapreds ((x3119))
+:extrapreds ((x3120))
+:extrapreds ((x3121))
+:extrapreds ((x3122))
+:extrapreds ((x3123))
+:extrapreds ((x3124))
+:extrapreds ((x3125))
+:extrapreds ((x3126))
+:extrapreds ((x3127))
+:extrapreds ((x3128))
+:extrapreds ((x3129))
+:extrapreds ((x3130))
+:extrapreds ((x3131))
+:extrapreds ((x3132))
+:extrapreds ((x3133))
+:extrapreds ((x3134))
+:extrapreds ((x3135))
+:extrapreds ((x3136))
+:extrapreds ((x3137))
+:extrapreds ((x3138))
+:extrapreds ((x3139))
+:extrapreds ((x3140))
+:extrapreds ((x3141))
+:extrapreds ((x3142))
+:extrapreds ((x3143))
+:extrapreds ((x3144))
+:extrapreds ((x3145))
+:extrapreds ((x3146))
+:extrapreds ((x3147))
+:extrapreds ((x3148))
+:extrapreds ((x3149))
+:extrapreds ((x3150))
+:extrapreds ((x3151))
+:extrapreds ((x3152))
+:extrapreds ((x3153))
+:extrapreds ((x3154))
+:extrapreds ((x3155))
+:extrapreds ((x3156))
+:extrapreds ((x3157))
+:extrapreds ((x3158))
+:extrapreds ((x3159))
+:extrapreds ((x3160))
+:extrapreds ((x3161))
+:extrapreds ((x3162))
+:extrapreds ((x3163))
+:extrapreds ((x3164))
+:extrapreds ((x3165))
+:extrapreds ((x3166))
+:extrapreds ((x3167))
+:extrapreds ((x3168))
+:extrapreds ((x3169))
+:extrapreds ((x3170))
+:extrapreds ((x3171))
+:extrapreds ((x3172))
+:extrapreds ((x3173))
+:extrapreds ((x3174))
+:extrapreds ((x3175))
+:extrapreds ((x3176))
+:extrapreds ((x3177))
+:extrapreds ((x3178))
+:extrapreds ((x3179))
+:extrapreds ((x3180))
+:extrapreds ((x3181))
+:extrapreds ((x3182))
+:extrapreds ((x3183))
+:extrapreds ((x3184))
+:extrapreds ((x3185))
+:extrapreds ((x3186))
+:extrapreds ((x3187))
+:extrapreds ((x3188))
+:extrapreds ((x3189))
+:extrapreds ((x3190))
+:extrapreds ((x3191))
+:extrapreds ((x3192))
+:extrapreds ((x3193))
+:extrapreds ((x3194))
+:extrapreds ((x3195))
+:extrapreds ((x3196))
+:extrapreds ((x3197))
+:extrapreds ((x3198))
+:extrapreds ((x3199))
+:extrapreds ((x3200))
+:extrapreds ((x3201))
+:extrapreds ((x3202))
+:extrapreds ((x3203))
+:extrapreds ((x3204))
+:extrapreds ((x3205))
+:extrapreds ((x3206))
+:extrapreds ((x3207))
+:extrapreds ((x3208))
+:extrapreds ((x3209))
+:extrapreds ((x3210))
+:extrapreds ((x3211))
+:extrapreds ((x3212))
+:extrapreds ((x3213))
+:extrapreds ((x3214))
+:extrapreds ((x3215))
+:extrapreds ((x3216))
+:extrapreds ((x3217))
+:extrapreds ((x3218))
+:extrapreds ((x3219))
+:extrapreds ((x3220))
+:extrapreds ((x3221))
+:extrapreds ((x3222))
+:extrapreds ((x3223))
+:extrapreds ((x3224))
+:extrapreds ((x3225))
+:extrapreds ((x3226))
+:extrapreds ((x3227))
+:extrapreds ((x3228))
+:extrapreds ((x3229))
+:extrapreds ((x3230))
+:extrapreds ((x3231))
+:extrapreds ((x3232))
+:extrapreds ((x3233))
+:extrapreds ((x3234))
+:extrapreds ((x3235))
+:extrapreds ((x3236))
+:extrapreds ((x3237))
+:extrapreds ((x3238))
+:extrapreds ((x3239))
+:extrapreds ((x3240))
+:extrapreds ((x3241))
+:extrapreds ((x3242))
+:extrapreds ((x3243))
+:extrapreds ((x3244))
+:extrapreds ((x3245))
+:extrapreds ((x3246))
+:extrapreds ((x3247))
+:extrapreds ((x3248))
+:extrapreds ((x3249))
+:extrapreds ((x3250))
+:extrapreds ((x3251))
+:extrapreds ((x3252))
+:extrapreds ((x3253))
+:extrapreds ((x3254))
+:extrapreds ((x3255))
+:extrapreds ((x3256))
+:extrapreds ((x3257))
+:extrapreds ((x3258))
+:extrapreds ((x3259))
+:extrapreds ((x3260))
+:extrapreds ((x3261))
+:extrapreds ((x3262))
+:extrapreds ((x3263))
+:extrapreds ((x3264))
+:extrapreds ((x3265))
+:extrapreds ((x3266))
+:extrapreds ((x3267))
+:extrapreds ((x3268))
+:extrapreds ((x3269))
+:extrapreds ((x3270))
+:extrapreds ((x3271))
+:extrapreds ((x3272))
+:extrapreds ((x3273))
+:extrapreds ((x3274))
+:extrapreds ((x3275))
+:extrapreds ((x3276))
+:extrapreds ((x3277))
+:extrapreds ((x3278))
+:extrapreds ((x3279))
+:extrapreds ((x3280))
+:extrapreds ((x3281))
+:extrapreds ((x3282))
+:extrapreds ((x3283))
+:extrapreds ((x3284))
+:extrapreds ((x3285))
+:extrapreds ((x3286))
+:extrapreds ((x3287))
+:extrapreds ((x3288))
+:extrapreds ((x3289))
+:extrapreds ((x3290))
+:extrapreds ((x3291))
+:extrapreds ((x3292))
+:extrapreds ((x3293))
+:extrapreds ((x3294))
+:extrapreds ((x3295))
+:extrapreds ((x3296))
+:extrapreds ((x3297))
+:extrapreds ((x3298))
+:extrapreds ((x3299))
+:extrapreds ((x3300))
+:extrapreds ((x3301))
+:extrapreds ((x3302))
+:extrapreds ((x3303))
+:extrapreds ((x3304))
+:extrapreds ((x3305))
+:extrapreds ((x3306))
+:extrapreds ((x3307))
+:extrapreds ((x3308))
+:extrapreds ((x3309))
+:extrapreds ((x3310))
+:extrapreds ((x3311))
+:extrapreds ((x3312))
+:extrapreds ((x3313))
+:extrapreds ((x3314))
+:extrapreds ((x3315))
+:extrapreds ((x3316))
+:extrapreds ((x3317))
+:extrapreds ((x3318))
+:extrapreds ((x3319))
+:extrapreds ((x3320))
+:extrapreds ((x3321))
+:extrapreds ((x3322))
+:extrapreds ((x3323))
+:extrapreds ((x3324))
+:extrapreds ((x3325))
+:extrapreds ((x3326))
+:extrapreds ((x3327))
+:extrapreds ((x3328))
+:extrapreds ((x3329))
+:extrapreds ((x3330))
+:extrapreds ((x3331))
+:extrapreds ((x3332))
+:extrapreds ((x3333))
+:extrapreds ((x3334))
+:extrapreds ((x3335))
+:extrapreds ((x3336))
+:extrapreds ((x3337))
+:extrapreds ((x3338))
+:extrapreds ((x3339))
+:extrapreds ((x3340))
+:extrapreds ((x3341))
+:extrapreds ((x3342))
+:extrapreds ((x3343))
+:extrapreds ((x3344))
+:extrapreds ((x3345))
+:extrapreds ((x3346))
+:extrapreds ((x3347))
+:extrapreds ((x3348))
+:extrapreds ((x3349))
+:extrapreds ((x3350))
+:extrapreds ((x3351))
+:extrapreds ((x3352))
+:extrapreds ((x3353))
+:extrapreds ((x3354))
+:extrapreds ((x3355))
+:extrapreds ((x3356))
+:extrapreds ((x3357))
+:extrapreds ((x3358))
+:extrapreds ((x3359))
+:extrapreds ((x3360))
+:extrapreds ((x3361))
+:extrapreds ((x3362))
+:extrapreds ((x3363))
+:extrapreds ((x3364))
+:extrapreds ((x3365))
+:extrapreds ((x3366))
+:extrapreds ((x3367))
+:extrapreds ((x3368))
+:extrapreds ((x3369))
+:extrapreds ((x3370))
+:extrapreds ((x3371))
+:extrapreds ((x3372))
+:extrapreds ((x3373))
+:extrapreds ((x3374))
+:extrapreds ((x3375))
+:extrapreds ((x3376))
+:extrapreds ((x3377))
+:extrapreds ((x3378))
+:extrapreds ((x3379))
+:extrapreds ((x3380))
+:extrapreds ((x3381))
+:extrapreds ((x3382))
+:extrapreds ((x3383))
+:extrapreds ((x3384))
+:extrapreds ((x3385))
+:extrapreds ((x3386))
+:extrapreds ((x3387))
+:extrapreds ((x3388))
+:extrapreds ((x3389))
+:extrapreds ((x3390))
+:extrapreds ((x3391))
+:extrapreds ((x3392))
+:extrapreds ((x3393))
+:extrapreds ((x3394))
+:extrapreds ((x3395))
+:extrapreds ((x3396))
+:extrapreds ((x3397))
+:extrapreds ((x3398))
+:extrapreds ((x3399))
+:extrapreds ((x3400))
+:extrapreds ((x3401))
+:extrapreds ((x3402))
+:extrapreds ((x3403))
+:extrapreds ((x3404))
+:extrapreds ((x3405))
+:extrapreds ((x3406))
+:extrapreds ((x3407))
+:extrapreds ((x3408))
+:extrapreds ((x3409))
+:extrapreds ((x3410))
+:extrapreds ((x3411))
+:extrapreds ((x3412))
+:extrapreds ((x3413))
+:extrapreds ((x3414))
+:extrapreds ((x3415))
+:extrapreds ((x3416))
+:extrapreds ((x3417))
+:extrapreds ((x3418))
+:extrapreds ((x3419))
+:extrapreds ((x3420))
+:extrapreds ((x3421))
+:extrapreds ((x3422))
+:extrapreds ((x3423))
+:extrapreds ((x3424))
+:extrapreds ((x3425))
+:extrapreds ((x3426))
+:extrapreds ((x3427))
+:extrapreds ((x3428))
+:extrapreds ((x3429))
+:extrapreds ((x3430))
+:extrapreds ((x3431))
+:extrapreds ((x3432))
+:extrapreds ((x3433))
+:extrapreds ((x3434))
+:extrapreds ((x3435))
+:extrapreds ((x3436))
+:extrapreds ((x3437))
+:extrapreds ((x3438))
+:extrapreds ((x3439))
+:extrapreds ((x3440))
+:extrapreds ((x3441))
+:extrapreds ((x3442))
+:extrapreds ((x3443))
+:extrapreds ((x3444))
+:extrapreds ((x3445))
+:extrapreds ((x3446))
+:extrapreds ((x3447))
+:extrapreds ((x3448))
+:extrapreds ((x3449))
+:extrapreds ((x3450))
+:extrapreds ((x3451))
+:extrapreds ((x3452))
+:extrapreds ((x3453))
+:extrapreds ((x3454))
+:extrapreds ((x3455))
+:extrapreds ((x3456))
+:extrapreds ((x3457))
+:extrapreds ((x3458))
+:extrapreds ((x3459))
+:extrapreds ((x3460))
+:extrapreds ((x3461))
+:extrapreds ((x3462))
+:extrapreds ((x3463))
+:extrapreds ((x3464))
+:extrapreds ((x3465))
+:extrapreds ((x3466))
+:extrapreds ((x3467))
+:extrapreds ((x3468))
+:extrapreds ((x3469))
+:extrapreds ((x3470))
+:extrapreds ((x3471))
+:extrapreds ((x3472))
+:extrapreds ((x3473))
+:extrapreds ((x3474))
+:extrapreds ((x3475))
+:extrapreds ((x3476))
+:extrapreds ((x3477))
+:extrapreds ((x3478))
+:extrapreds ((x3479))
+:extrapreds ((x3480))
+:extrapreds ((x3481))
+:extrapreds ((x3482))
+:extrapreds ((x3483))
+:extrapreds ((x3484))
+:extrapreds ((x3485))
+:extrapreds ((x3486))
+:extrapreds ((x3487))
+:extrapreds ((x3488))
+:extrapreds ((x3489))
+:extrapreds ((x3490))
+:extrapreds ((x3491))
+:extrapreds ((x3492))
+:extrapreds ((x3493))
+:extrapreds ((x3494))
+:extrapreds ((x3495))
+:extrapreds ((x3496))
+:extrapreds ((x3497))
+:extrapreds ((x3498))
+:extrapreds ((x3499))
+:extrapreds ((x3500))
+:extrapreds ((x3501))
+:extrapreds ((x3502))
+:extrapreds ((x3503))
+:extrapreds ((x3504))
+:extrapreds ((x3505))
+:extrapreds ((x3506))
+:extrapreds ((x3507))
+:extrapreds ((x3508))
+:extrapreds ((x3509))
+:extrapreds ((x3510))
+:extrapreds ((x3511))
+:extrapreds ((x3512))
+:extrapreds ((x3513))
+:extrapreds ((x3514))
+:extrapreds ((x3515))
+:extrapreds ((x3516))
+:extrapreds ((x3517))
+:extrapreds ((x3518))
+:extrapreds ((x3519))
+:extrapreds ((x3520))
+:extrapreds ((x3521))
+:extrapreds ((x3522))
+:extrapreds ((x3523))
+:extrapreds ((x3524))
+:extrapreds ((x3525))
+:extrapreds ((x3526))
+:extrapreds ((x3527))
+:extrapreds ((x3528))
+:extrapreds ((x3529))
+:extrapreds ((x3530))
+:extrapreds ((x3531))
+:extrapreds ((x3532))
+:extrapreds ((x3533))
+:extrapreds ((x3534))
+:extrapreds ((x3535))
+:extrapreds ((x3536))
+:extrapreds ((x3537))
+:extrapreds ((x3538))
+:extrapreds ((x3539))
+:extrapreds ((x3540))
+:extrapreds ((x3541))
+:extrapreds ((x3542))
+:extrapreds ((x3543))
+:extrapreds ((x3544))
+:extrapreds ((x3545))
+:extrapreds ((x3546))
+:extrapreds ((x3547))
+:extrapreds ((x3548))
+:extrapreds ((x3549))
+:extrapreds ((x3550))
+:extrapreds ((x3551))
+:extrapreds ((x3552))
+:extrapreds ((x3553))
+:extrapreds ((x3554))
+:extrapreds ((x3555))
+:extrapreds ((x3556))
+:extrapreds ((x3557))
+:extrapreds ((x3558))
+:extrapreds ((x3559))
+:extrapreds ((x3560))
+:extrapreds ((x3561))
+:extrapreds ((x3562))
+:extrapreds ((x3563))
+:extrapreds ((x3564))
+:extrapreds ((x3565))
+:extrapreds ((x3566))
+:extrapreds ((x3567))
+:extrapreds ((x3568))
+:extrapreds ((x3569))
+:extrapreds ((x3570))
+:extrapreds ((x3571))
+:extrapreds ((x3572))
+:extrapreds ((x3573))
+:extrapreds ((x3574))
+:extrapreds ((x3575))
+:extrapreds ((x3576))
+:extrapreds ((x3577))
+:extrapreds ((x3578))
+:extrapreds ((x3579))
+:extrapreds ((x3580))
+:extrapreds ((x3581))
+:extrapreds ((x3582))
+:extrapreds ((x3583))
+:extrapreds ((x3584))
+:extrapreds ((x3585))
+:extrapreds ((x3586))
+:extrapreds ((x3587))
+:extrapreds ((x3588))
+:extrapreds ((x3589))
+:extrapreds ((x3590))
+:extrapreds ((x3591))
+:extrapreds ((x3592))
+:extrapreds ((x3593))
+:extrapreds ((x3594))
+:extrapreds ((x3595))
+:extrapreds ((x3596))
+:extrapreds ((x3597))
+:extrapreds ((x3598))
+:extrapreds ((x3599))
+:extrapreds ((x3600))
+:extrapreds ((x3601))
+:extrapreds ((x3602))
+:extrapreds ((x3603))
+:extrapreds ((x3604))
+:extrapreds ((x3605))
+:extrapreds ((x3606))
+:extrapreds ((x3607))
+:extrapreds ((x3608))
+:extrapreds ((x3609))
+:extrapreds ((x3610))
+:extrapreds ((x3611))
+:extrapreds ((x3612))
+:extrapreds ((x3613))
+:extrapreds ((x3614))
+:extrapreds ((x3615))
+:extrapreds ((x3616))
+:extrapreds ((x3617))
+:extrapreds ((x3618))
+:extrapreds ((x3619))
+:extrapreds ((x3620))
+:extrapreds ((x3621))
+:extrapreds ((x3622))
+:extrapreds ((x3623))
+:extrapreds ((x3624))
+:extrapreds ((x3625))
+:extrapreds ((x3626))
+:extrapreds ((x3627))
+:extrapreds ((x3628))
+:extrapreds ((x3629))
+:extrapreds ((x3630))
+:extrapreds ((x3631))
+:extrapreds ((x3632))
+:extrapreds ((x3633))
+:extrapreds ((x3634))
+:extrapreds ((x3635))
+:extrapreds ((x3636))
+:extrapreds ((x3637))
+:extrapreds ((x3638))
+:extrapreds ((x3639))
+:extrapreds ((x3640))
+:extrapreds ((x3641))
+:extrapreds ((x3642))
+:extrapreds ((x3643))
+:extrapreds ((x3644))
+:extrapreds ((x3645))
+:extrapreds ((x3646))
+:extrapreds ((x3647))
+:extrapreds ((x3648))
+:extrapreds ((x3649))
+:extrapreds ((x3650))
+:extrapreds ((x3651))
+:extrapreds ((x3652))
+:extrapreds ((x3653))
+:extrapreds ((x3654))
+:extrapreds ((x3655))
+:extrapreds ((x3656))
+:extrapreds ((x3657))
+:extrapreds ((x3658))
+:extrapreds ((x3659))
+:extrapreds ((x3660))
+:extrapreds ((x3661))
+:extrapreds ((x3662))
+:extrapreds ((x3663))
+:extrapreds ((x3664))
+:extrapreds ((x3665))
+:extrapreds ((x3666))
+:extrapreds ((x3667))
+:extrapreds ((x3668))
+:extrapreds ((x3669))
+:extrapreds ((x3670))
+:extrapreds ((x3671))
+:extrapreds ((x3672))
+:extrapreds ((x3673))
+:extrapreds ((x3674))
+:extrapreds ((x3675))
+:extrapreds ((x3676))
+:extrapreds ((x3677))
+:extrapreds ((x3678))
+:extrapreds ((x3679))
+:extrapreds ((x3680))
+:extrapreds ((x3681))
+:extrapreds ((x3682))
+:extrapreds ((x3683))
+:extrapreds ((x3684))
+:extrapreds ((x3685))
+:extrapreds ((x3686))
+:extrapreds ((x3687))
+:extrapreds ((x3688))
+:extrapreds ((x3689))
+:extrapreds ((x3690))
+:extrapreds ((x3691))
+:extrapreds ((x3692))
+:extrapreds ((x3693))
+:extrapreds ((x3694))
+:extrapreds ((x3695))
+:extrapreds ((x3696))
+:extrapreds ((x3697))
+:extrapreds ((x3698))
+:extrapreds ((x3699))
+:extrapreds ((x3700))
+:extrapreds ((x3701))
+:extrapreds ((x3702))
+:extrapreds ((x3703))
+:extrapreds ((x3704))
+:extrapreds ((x3705))
+:extrapreds ((x3706))
+:extrapreds ((x3707))
+:extrapreds ((x3708))
+:extrapreds ((x3709))
+:extrapreds ((x3710))
+:extrapreds ((x3711))
+:extrapreds ((x3712))
+:extrapreds ((x3713))
+:extrapreds ((x3714))
+:extrapreds ((x3715))
+:extrapreds ((x3716))
+:extrapreds ((x3717))
+:extrapreds ((x3718))
+:extrapreds ((x3719))
+:extrapreds ((x3720))
+:extrapreds ((x3721))
+:extrapreds ((x3722))
+:extrapreds ((x3723))
+:extrapreds ((x3724))
+:extrapreds ((x3725))
+:extrapreds ((x3726))
+:extrapreds ((x3727))
+:extrapreds ((x3728))
+:extrapreds ((x3729))
+:extrapreds ((x3730))
+:extrapreds ((x3731))
+:extrapreds ((x3732))
+:extrapreds ((x3733))
+:extrapreds ((x3734))
+:extrapreds ((x3735))
+:extrapreds ((x3736))
+:extrapreds ((x3737))
+:extrapreds ((x3738))
+:extrapreds ((x3739))
+:extrapreds ((x3740))
+:extrapreds ((x3741))
+:extrapreds ((x3742))
+:extrapreds ((x3743))
+:extrapreds ((x3744))
+:extrapreds ((x3745))
+:extrapreds ((x3746))
+:extrapreds ((x3747))
+:extrapreds ((x3748))
+:extrapreds ((x3749))
+:extrapreds ((x3750))
+:extrapreds ((x3751))
+:extrapreds ((x3752))
+:extrapreds ((x3753))
+:extrapreds ((x3754))
+:extrapreds ((x3755))
+:extrapreds ((x3756))
+:extrapreds ((x3757))
+:extrapreds ((x3758))
+:extrapreds ((x3759))
+:extrapreds ((x3760))
+:extrapreds ((x3761))
+:extrapreds ((x3762))
+:extrapreds ((x3763))
+:extrapreds ((x3764))
+:extrapreds ((x3765))
+:extrapreds ((x3766))
+:extrapreds ((x3767))
+:extrapreds ((x3768))
+:extrapreds ((x3769))
+:extrapreds ((x3770))
+:extrapreds ((x3771))
+:extrapreds ((x3772))
+:extrapreds ((x3773))
+:extrapreds ((x3774))
+:extrapreds ((x3775))
+:extrapreds ((x3776))
+:extrapreds ((x3777))
+:extrapreds ((x3778))
+:extrapreds ((x3779))
+:extrapreds ((x3780))
+:extrapreds ((x3781))
+:extrapreds ((x3782))
+:extrapreds ((x3783))
+:extrapreds ((x3784))
+:extrapreds ((x3785))
+:extrapreds ((x3786))
+:extrapreds ((x3787))
+:extrapreds ((x3788))
+:extrapreds ((x3789))
+:extrapreds ((x3790))
+:extrapreds ((x3791))
+:extrapreds ((x3792))
+:extrapreds ((x3793))
+:extrapreds ((x3794))
+:extrapreds ((x3795))
+:extrapreds ((x3796))
+:extrapreds ((x3797))
+:extrapreds ((x3798))
+:extrapreds ((x3799))
+:extrapreds ((x3800))
+:extrapreds ((x3801))
+:extrapreds ((x3802))
+:extrapreds ((x3803))
+:extrapreds ((x3804))
+:extrapreds ((x3805))
+:extrapreds ((x3806))
+:extrapreds ((x3807))
+:extrapreds ((x3808))
+:extrapreds ((x3809))
+:extrapreds ((x3810))
+:extrapreds ((x3811))
+:extrapreds ((x3812))
+:extrapreds ((x3813))
+:extrapreds ((x3814))
+:extrapreds ((x3815))
+:extrapreds ((x3816))
+:extrapreds ((x3817))
+:extrapreds ((x3818))
+:extrapreds ((x3819))
+:extrapreds ((x3820))
+:extrapreds ((x3821))
+:extrapreds ((x3822))
+:extrapreds ((x3823))
+:extrapreds ((x3824))
+:extrapreds ((x3825))
+:extrapreds ((x3826))
+:extrapreds ((x3827))
+:extrapreds ((x3828))
+:extrapreds ((x3829))
+:extrapreds ((x3830))
+:extrapreds ((x3831))
+:extrapreds ((x3832))
+:extrapreds ((x3833))
+:extrapreds ((x3834))
+:extrapreds ((x3835))
+:extrapreds ((x3836))
+:extrapreds ((x3837))
+:extrapreds ((x3838))
+:extrapreds ((x3839))
+:extrapreds ((x3840))
+:extrapreds ((x3841))
+:extrapreds ((x3842))
+:extrapreds ((x3843))
+:extrapreds ((x3844))
+:extrapreds ((x3845))
+:extrapreds ((x3846))
+:extrapreds ((x3847))
+:extrapreds ((x3848))
+:extrapreds ((x3849))
+:extrapreds ((x3850))
+:extrapreds ((x3851))
+:extrapreds ((x3852))
+:extrapreds ((x3853))
+:extrapreds ((x3854))
+:extrapreds ((x3855))
+:extrapreds ((x3856))
+:extrapreds ((x3857))
+:extrapreds ((x3858))
+:extrapreds ((x3859))
+:extrapreds ((x3860))
+:extrapreds ((x3861))
+:extrapreds ((x3862))
+:extrapreds ((x3863))
+:extrapreds ((x3864))
+:extrapreds ((x3865))
+:extrapreds ((x3866))
+:extrapreds ((x3867))
+:extrapreds ((x3868))
+:extrapreds ((x3869))
+:extrapreds ((x3870))
+:extrapreds ((x3871))
+:extrapreds ((x3872))
+:extrapreds ((x3873))
+:extrapreds ((x3874))
+:extrapreds ((x3875))
+:extrapreds ((x3876))
+:extrapreds ((x3877))
+:extrapreds ((x3878))
+:extrapreds ((x3879))
+:extrapreds ((x3880))
+:extrapreds ((x3881))
+:extrapreds ((x3882))
+:extrapreds ((x3883))
+:extrapreds ((x3884))
+:extrapreds ((x3885))
+:extrapreds ((x3886))
+:extrapreds ((x3887))
+:extrapreds ((x3888))
+:extrapreds ((x3889))
+:extrapreds ((x3890))
+:extrapreds ((x3891))
+:extrapreds ((x3892))
+:extrapreds ((x3893))
+:extrapreds ((x3894))
+:extrapreds ((x3895))
+:extrapreds ((x3896))
+:extrapreds ((x3897))
+:extrapreds ((x3898))
+:extrapreds ((x3899))
+:extrapreds ((x3900))
+:extrapreds ((x3901))
+:extrapreds ((x3902))
+:extrapreds ((x3903))
+:extrapreds ((x3904))
+:extrapreds ((x3905))
+:extrapreds ((x3906))
+:extrapreds ((x3907))
+:extrapreds ((x3908))
+:extrapreds ((x3909))
+:extrapreds ((x3910))
+:extrapreds ((x3911))
+:extrapreds ((x3912))
+:extrapreds ((x3913))
+:extrapreds ((x3914))
+:extrapreds ((x3915))
+:extrapreds ((x3916))
+:extrapreds ((x3917))
+:extrapreds ((x3918))
+:extrapreds ((x3919))
+:extrapreds ((x3920))
+:extrapreds ((x3921))
+:extrapreds ((x3922))
+:extrapreds ((x3923))
+:extrapreds ((x3924))
+:extrapreds ((x3925))
+:extrapreds ((x3926))
+:extrapreds ((x3927))
+:extrapreds ((x3928))
+:extrapreds ((x3929))
+:extrapreds ((x3930))
+:extrapreds ((x3931))
+:extrapreds ((x3932))
+:extrapreds ((x3933))
+:extrapreds ((x3934))
+:extrapreds ((x3935))
+:extrapreds ((x3936))
+:extrapreds ((x3937))
+:extrapreds ((x3938))
+:extrapreds ((x3939))
+:extrapreds ((x3940))
+:extrapreds ((x3941))
+:extrapreds ((x3942))
+:extrapreds ((x3943))
+:extrapreds ((x3944))
+:extrapreds ((x3945))
+:extrapreds ((x3946))
+:extrapreds ((x3947))
+:extrapreds ((x3948))
+:extrapreds ((x3949))
+:extrapreds ((x3950))
+:extrapreds ((x3951))
+:extrapreds ((x3952))
+:extrapreds ((x3953))
+:extrapreds ((x3954))
+:extrapreds ((x3955))
+:extrapreds ((x3956))
+:extrapreds ((x3957))
+:extrapreds ((x3958))
+:extrapreds ((x3959))
+:extrapreds ((x3960))
+:extrapreds ((x3961))
+:extrapreds ((x3962))
+:extrapreds ((x3963))
+:extrapreds ((x3964))
+:extrapreds ((x3965))
+:extrapreds ((x3966))
+:extrapreds ((x3967))
+:extrapreds ((x3968))
+:extrapreds ((x3969))
+:extrapreds ((x3970))
+:extrapreds ((x3971))
+:extrapreds ((x3972))
+:extrapreds ((x3973))
+:extrapreds ((x3974))
+:extrapreds ((x3975))
+:extrapreds ((x3976))
+:extrapreds ((x3977))
+:extrapreds ((x3978))
+:extrapreds ((x3979))
+:extrapreds ((x3980))
+:extrapreds ((x3981))
+:extrapreds ((x3982))
+:extrapreds ((x3983))
+:extrapreds ((x3984))
+:extrapreds ((x3985))
+:extrapreds ((x3986))
+:extrapreds ((x3987))
+:extrapreds ((x3988))
+:extrapreds ((x3989))
+:extrapreds ((x3990))
+:extrapreds ((x3991))
+:extrapreds ((x3992))
+:extrapreds ((x3993))
+:extrapreds ((x3994))
+:extrapreds ((x3995))
+:extrapreds ((x3996))
+:extrapreds ((x3997))
+:extrapreds ((x3998))
+:extrapreds ((x3999))
+:extrapreds ((x4000))
+:extrapreds ((x4001))
+:extrapreds ((x4002))
+:extrapreds ((x4003))
+:extrapreds ((x4004))
+:extrapreds ((x4005))
+:extrapreds ((x4006))
+:extrapreds ((x4007))
+:extrapreds ((x4008))
+:extrapreds ((x4009))
+:extrapreds ((x4010))
+:extrapreds ((x4011))
+:extrapreds ((x4012))
+:extrapreds ((x4013))
+:extrapreds ((x4014))
+:extrapreds ((x4015))
+:extrapreds ((x4016))
+:extrapreds ((x4017))
+:extrapreds ((x4018))
+:extrapreds ((x4019))
+:extrapreds ((x4020))
+:extrapreds ((x4021))
+:extrapreds ((x4022))
+:extrapreds ((x4023))
+:extrapreds ((x4024))
+:extrapreds ((x4025))
+:extrapreds ((x4026))
+:extrapreds ((x4027))
+:extrapreds ((x4028))
+:extrapreds ((x4029))
+:extrapreds ((x4030))
+:extrapreds ((x4031))
+:extrapreds ((x4032))
+:extrapreds ((x4033))
+:extrapreds ((x4034))
+:extrapreds ((x4035))
+:extrapreds ((x4036))
+:extrapreds ((x4037))
+:extrapreds ((x4038))
+:extrapreds ((x4039))
+:extrapreds ((x4040))
+:extrapreds ((x4041))
+:extrapreds ((x4042))
+:extrapreds ((x4043))
+:extrapreds ((x4044))
+:extrapreds ((x4045))
+:extrapreds ((x4046))
+:extrapreds ((x4047))
+:extrapreds ((x4048))
+:extrapreds ((x4049))
+:extrapreds ((x4050))
+:extrapreds ((x4051))
+:extrapreds ((x4052))
+:extrapreds ((x4053))
+:extrapreds ((x4054))
+:extrapreds ((x4055))
+:extrapreds ((x4056))
+:extrapreds ((x4057))
+:extrapreds ((x4058))
+:extrapreds ((x4059))
+:extrapreds ((x4060))
+:extrapreds ((x4061))
+:extrapreds ((x4062))
+:extrapreds ((x4063))
+:extrapreds ((x4064))
+:extrapreds ((x4065))
+:extrapreds ((x4066))
+:extrapreds ((x4067))
+:extrapreds ((x4068))
+:extrapreds ((x4069))
+:extrapreds ((x4070))
+:extrapreds ((x4071))
+:extrapreds ((x4072))
+:extrapreds ((x4073))
+:extrapreds ((x4074))
+:extrapreds ((x4075))
+:extrapreds ((x4076))
+:extrapreds ((x4077))
+:extrapreds ((x4078))
+:extrapreds ((x4079))
+:extrapreds ((x4080))
+:extrapreds ((x4081))
+:extrapreds ((x4082))
+:extrapreds ((x4083))
+:extrapreds ((x4084))
+:extrapreds ((x4085))
+:extrapreds ((x4086))
+:extrapreds ((x4087))
+:extrapreds ((x4088))
+:extrapreds ((x4089))
+:extrapreds ((x4090))
+:extrapreds ((x4091))
+:extrapreds ((x4092))
+:extrapreds ((x4093))
+:extrapreds ((x4094))
+:extrapreds ((x4095))
+:extrapreds ((x4096))
+:extrapreds ((x4097))
+:extrapreds ((x4098))
+:extrapreds ((x4099))
+:extrapreds ((x4100))
+:extrapreds ((x4101))
+:extrapreds ((x4102))
+:extrapreds ((x4103))
+:extrapreds ((x4104))
+:extrapreds ((x4105))
+:extrapreds ((x4106))
+:extrapreds ((x4107))
+:extrapreds ((x4108))
+:extrapreds ((x4109))
+:extrapreds ((x4110))
+:extrapreds ((x4111))
+:extrapreds ((x4112))
+:extrapreds ((x4113))
+:extrapreds ((x4114))
+:extrapreds ((x4115))
+:extrapreds ((x4116))
+:extrapreds ((x4117))
+:extrapreds ((x4118))
+:extrapreds ((x4119))
+:extrapreds ((x4120))
+:extrapreds ((x4121))
+:extrapreds ((x4122))
+:extrapreds ((x4123))
+:extrapreds ((x4124))
+:extrapreds ((x4125))
+:extrapreds ((x4126))
+:extrapreds ((x4127))
+:extrapreds ((x4128))
+:extrapreds ((x4129))
+:extrapreds ((x4130))
+:extrapreds ((x4131))
+:extrapreds ((x4132))
+:extrapreds ((x4133))
+:extrapreds ((x4134))
+:extrapreds ((x4135))
+:extrapreds ((x4136))
+:extrapreds ((x4137))
+:extrapreds ((x4138))
+:extrapreds ((x4139))
+:extrapreds ((x4140))
+:extrapreds ((x4141))
+:extrapreds ((x4142))
+:extrapreds ((x4143))
+:extrapreds ((x4144))
+:extrapreds ((x4145))
+:extrapreds ((x4146))
+:extrapreds ((x4147))
+:extrapreds ((x4148))
+:extrapreds ((x4149))
+:extrapreds ((x4150))
+:extrapreds ((x4151))
+:extrapreds ((x4152))
+:extrapreds ((x4153))
+:extrapreds ((x4154))
+:extrapreds ((x4155))
+:extrapreds ((x4156))
+:extrapreds ((x4157))
+:extrapreds ((x4158))
+:extrapreds ((x4159))
+:extrapreds ((x4160))
+:extrapreds ((x4161))
+:extrapreds ((x4162))
+:extrapreds ((x4163))
+:extrapreds ((x4164))
+:extrapreds ((x4165))
+:extrapreds ((x4166))
+:extrapreds ((x4167))
+:extrapreds ((x4168))
+:extrapreds ((x4169))
+:extrapreds ((x4170))
+:extrapreds ((x4171))
+:extrapreds ((x4172))
+:extrapreds ((x4173))
+:extrapreds ((x4174))
+:extrapreds ((x4175))
+:extrapreds ((x4176))
+:extrapreds ((x4177))
+:extrapreds ((x4178))
+:extrapreds ((x4179))
+:extrapreds ((x4180))
+:extrapreds ((x4181))
+:extrapreds ((x4182))
+:extrapreds ((x4183))
+:extrapreds ((x4184))
+:extrapreds ((x4185))
+:extrapreds ((x4186))
+:extrapreds ((x4187))
+:extrapreds ((x4188))
+:extrapreds ((x4189))
+:extrapreds ((x4190))
+:extrapreds ((x4191))
+:extrapreds ((x4192))
+:extrapreds ((x4193))
+:extrapreds ((x4194))
+:extrapreds ((x4195))
+:extrapreds ((x4196))
+:extrapreds ((x4197))
+:extrapreds ((x4198))
+:extrapreds ((x4199))
+:extrapreds ((x4200))
+:extrapreds ((x4201))
+:extrapreds ((x4202))
+:extrapreds ((x4203))
+:extrapreds ((x4204))
+:extrapreds ((x4205))
+:extrapreds ((x4206))
+:extrapreds ((x4207))
+:extrapreds ((x4208))
+:extrapreds ((x4209))
+:extrapreds ((x4210))
+:extrapreds ((x4211))
+:extrapreds ((x4212))
+:extrapreds ((x4213))
+:extrapreds ((x4214))
+:extrapreds ((x4215))
+:extrapreds ((x4216))
+:extrapreds ((x4217))
+:extrapreds ((x4218))
+:extrapreds ((x4219))
+:extrapreds ((x4220))
+:extrapreds ((x4221))
+:extrapreds ((x4222))
+:extrapreds ((x4223))
+:extrapreds ((x4224))
+:extrapreds ((x4225))
+:extrapreds ((x4226))
+:extrapreds ((x4227))
+:extrapreds ((x4228))
+:extrapreds ((x4229))
+:extrapreds ((x4230))
+:extrapreds ((x4231))
+:extrapreds ((x4232))
+:extrapreds ((x4233))
+:extrapreds ((x4234))
+:extrapreds ((x4235))
+:extrapreds ((x4236))
+:extrapreds ((x4237))
+:extrapreds ((x4238))
+:extrapreds ((x4239))
+:extrapreds ((x4240))
+:extrapreds ((x4241))
+:extrapreds ((x4242))
+:extrapreds ((x4243))
+:extrapreds ((x4244))
+:extrapreds ((x4245))
+:extrapreds ((x4246))
+:extrapreds ((x4247))
+:extrapreds ((x4248))
+:extrapreds ((x4249))
+:extrapreds ((x4250))
+:extrapreds ((x4251))
+:extrapreds ((x4252))
+:extrapreds ((x4253))
+:extrapreds ((x4254))
+:extrapreds ((x4255))
+:extrapreds ((x4256))
+:extrapreds ((x4257))
+:extrapreds ((x4258))
+:extrapreds ((x4259))
+:extrapreds ((x4260))
+:extrapreds ((x4261))
+:extrapreds ((x4262))
+:extrapreds ((x4263))
+:extrapreds ((x4264))
+:extrapreds ((x4265))
+:extrapreds ((x4266))
+:extrapreds ((x4267))
+:extrapreds ((x4268))
+:extrapreds ((x4269))
+:extrapreds ((x4270))
+:extrapreds ((x4271))
+:extrapreds ((x4272))
+:extrapreds ((x4273))
+:extrapreds ((x4274))
+:extrapreds ((x4275))
+:extrapreds ((x4276))
+:extrapreds ((x4277))
+:extrapreds ((x4278))
+:extrapreds ((x4279))
+:extrapreds ((x4280))
+:extrapreds ((x4281))
+:extrapreds ((x4282))
+:extrapreds ((x4283))
+:extrapreds ((x4284))
+:extrapreds ((x4285))
+:extrapreds ((x4286))
+:extrapreds ((x4287))
+:extrapreds ((x4288))
+:extrapreds ((x4289))
+:extrapreds ((x4290))
+:extrapreds ((x4291))
+:extrapreds ((x4292))
+:extrapreds ((x4293))
+:extrapreds ((x4294))
+:extrapreds ((x4295))
+:extrapreds ((x4296))
+:extrapreds ((x4297))
+:extrapreds ((x4298))
+:extrapreds ((x4299))
+:extrapreds ((x4300))
+:extrapreds ((x4301))
+:extrapreds ((x4302))
+:extrapreds ((x4303))
+:extrapreds ((x4304))
+:extrapreds ((x4305))
+:extrapreds ((x4306))
+:extrapreds ((x4307))
+:extrapreds ((x4308))
+:extrapreds ((x4309))
+:extrapreds ((x4310))
+:extrapreds ((x4311))
+:extrapreds ((x4312))
+:extrapreds ((x4313))
+:extrapreds ((x4314))
+:extrapreds ((x4315))
+:extrapreds ((x4316))
+:extrapreds ((x4317))
+:extrapreds ((x4318))
+:extrapreds ((x4319))
+:extrapreds ((x4320))
+:extrapreds ((x4321))
+:extrapreds ((x4322))
+:extrapreds ((x4323))
+:extrapreds ((x4324))
+:extrapreds ((x4325))
+:extrapreds ((x4326))
+:extrapreds ((x4327))
+:extrapreds ((x4328))
+:extrapreds ((x4329))
+:extrapreds ((x4330))
+:extrapreds ((x4331))
+:extrapreds ((x4332))
+:extrapreds ((x4333))
+:extrapreds ((x4334))
+:extrapreds ((x4335))
+:extrapreds ((x4336))
+:extrapreds ((x4337))
+:extrapreds ((x4338))
+:extrapreds ((x4339))
+:extrapreds ((x4340))
+:extrapreds ((x4341))
+:extrapreds ((x4342))
+:extrapreds ((x4343))
+:extrapreds ((x4344))
+:extrapreds ((x4345))
+:extrapreds ((x4346))
+:extrapreds ((x4347))
+:extrapreds ((x4348))
+:extrapreds ((x4349))
+:extrapreds ((x4350))
+:extrapreds ((x4351))
+:extrapreds ((x4352))
+:extrapreds ((x4353))
+:extrapreds ((x4354))
+:extrapreds ((x4355))
+:extrapreds ((x4356))
+:extrapreds ((x4357))
+:extrapreds ((x4358))
+:extrapreds ((x4359))
+:extrapreds ((x4360))
+:extrapreds ((x4361))
+:extrapreds ((x4362))
+:extrapreds ((x4363))
+:extrapreds ((x4364))
+:extrapreds ((x4365))
+:extrapreds ((x4366))
+:extrapreds ((x4367))
+:extrapreds ((x4368))
+:extrapreds ((x4369))
+:extrapreds ((x4370))
+:extrapreds ((x4371))
+:extrapreds ((x4372))
+:extrapreds ((x4373))
+:extrapreds ((x4374))
+:extrapreds ((x4375))
+:extrapreds ((x4376))
+:extrapreds ((x4377))
+:extrapreds ((x4378))
+:extrapreds ((x4379))
+:extrapreds ((x4380))
+:extrapreds ((x4381))
+:extrapreds ((x4382))
+:extrapreds ((x4383))
+:extrapreds ((x4384))
+:extrapreds ((x4385))
+:extrapreds ((x4386))
+:extrapreds ((x4387))
+:extrapreds ((x4388))
+:extrapreds ((x4389))
+:extrapreds ((x4390))
+:extrapreds ((x4391))
+:extrapreds ((x4392))
+:extrapreds ((x4393))
+:extrapreds ((x4394))
+:extrapreds ((x4395))
+:extrapreds ((x4396))
+:extrapreds ((x4397))
+:extrapreds ((x4398))
+:extrapreds ((x4399))
+:extrapreds ((x4400))
+:extrapreds ((x4401))
+:extrapreds ((x4402))
+:extrapreds ((x4403))
+:extrapreds ((x4404))
+:extrapreds ((x4405))
+:extrapreds ((x4406))
+:extrapreds ((x4407))
+:extrapreds ((x4408))
+:extrapreds ((x4409))
+:extrapreds ((x4410))
+:extrapreds ((x4411))
+:extrapreds ((x4412))
+:extrapreds ((x4413))
+:extrapreds ((x4414))
+:extrapreds ((x4415))
+:extrapreds ((x4416))
+:extrapreds ((x4417))
+:extrapreds ((x4418))
+:extrapreds ((x4419))
+:extrapreds ((x4420))
+:extrapreds ((x4421))
+:extrapreds ((x4422))
+:extrapreds ((x4423))
+:extrapreds ((x4424))
+:extrapreds ((x4425))
+:extrapreds ((x4426))
+:extrapreds ((x4427))
+:extrapreds ((x4428))
+:extrapreds ((x4429))
+:extrapreds ((x4430))
+:extrapreds ((x4431))
+:extrapreds ((x4432))
+:extrapreds ((x4433))
+:extrapreds ((x4434))
+:extrapreds ((x4435))
+:extrapreds ((x4436))
+:extrapreds ((x4437))
+:extrapreds ((x4438))
+:extrapreds ((x4439))
+:extrapreds ((x4440))
+:extrapreds ((x4441))
+:extrapreds ((x4442))
+:extrapreds ((x4443))
+:extrapreds ((x4444))
+:extrapreds ((x4445))
+:extrapreds ((x4446))
+:extrapreds ((x4447))
+:extrapreds ((x4448))
+:extrapreds ((x4449))
+:extrapreds ((x4450))
+:extrapreds ((x4451))
+:extrapreds ((x4452))
+:extrapreds ((x4453))
+:extrapreds ((x4454))
+:extrapreds ((x4455))
+:extrapreds ((x4456))
+:extrapreds ((x4457))
+:extrapreds ((x4458))
+:extrapreds ((x4459))
+:extrapreds ((x4460))
+:extrapreds ((x4461))
+:extrapreds ((x4462))
+:extrapreds ((x4463))
+:extrapreds ((x4464))
+:extrapreds ((x4465))
+:extrapreds ((x4466))
+:extrapreds ((x4467))
+:extrapreds ((x4468))
+:extrapreds ((x4469))
+:extrapreds ((x4470))
+:extrapreds ((x4471))
+:extrapreds ((x4472))
+:extrapreds ((x4473))
+:extrapreds ((x4474))
+:extrapreds ((x4475))
+:extrapreds ((x4476))
+:extrapreds ((x4477))
+:extrapreds ((x4478))
+:extrapreds ((x4479))
+:extrapreds ((x4480))
+:extrapreds ((x4481))
+:extrapreds ((x4482))
+:extrapreds ((x4483))
+:extrapreds ((x4484))
+:extrapreds ((x4485))
+:extrapreds ((x4486))
+:extrapreds ((x4487))
+:extrapreds ((x4488))
+:extrapreds ((x4489))
+:extrapreds ((x4490))
+:extrapreds ((x4491))
+:extrapreds ((x4492))
+:extrapreds ((x4493))
+:extrapreds ((x4494))
+:extrapreds ((x4495))
+:extrapreds ((x4496))
+:extrapreds ((x4497))
+:extrapreds ((x4498))
+:extrapreds ((x4499))
+:extrapreds ((x4500))
+:extrapreds ((x4501))
+:extrapreds ((x4502))
+:extrapreds ((x4503))
+:extrapreds ((x4504))
+:extrapreds ((x4505))
+:extrapreds ((x4506))
+:extrapreds ((x4507))
+:extrapreds ((x4508))
+:extrapreds ((x4509))
+:extrapreds ((x4510))
+:extrapreds ((x4511))
+:extrapreds ((x4512))
+:extrapreds ((x4513))
+:extrapreds ((x4514))
+:extrapreds ((x4515))
+:extrapreds ((x4516))
+:extrapreds ((x4517))
+:extrapreds ((x4518))
+:extrapreds ((x4519))
+:extrapreds ((x4520))
+:extrapreds ((x4521))
+:extrapreds ((x4522))
+:extrapreds ((x4523))
+:extrapreds ((x4524))
+:extrapreds ((x4525))
+:extrapreds ((x4526))
+:extrapreds ((x4527))
+:extrapreds ((x4528))
+:extrapreds ((x4529))
+:extrapreds ((x4530))
+:extrapreds ((x4531))
+:extrapreds ((x4532))
+:extrapreds ((x4533))
+:extrapreds ((x4534))
+:extrapreds ((x4535))
+:extrapreds ((x4536))
+:extrapreds ((x4537))
+:extrapreds ((x4538))
+:extrapreds ((x4539))
+:extrapreds ((x4540))
+:extrapreds ((x4541))
+:extrapreds ((x4542))
+:extrapreds ((x4543))
+:extrapreds ((x4544))
+:extrapreds ((x4545))
+:extrapreds ((x4546))
+:extrapreds ((x4547))
+:extrapreds ((x4548))
+:extrapreds ((x4549))
+:extrapreds ((x4550))
+:extrapreds ((x4551))
+:extrapreds ((x4552))
+:extrapreds ((x4553))
+:extrapreds ((x4554))
+:extrapreds ((x4555))
+:extrapreds ((x4556))
+:extrapreds ((x4557))
+:extrapreds ((x4558))
+:extrapreds ((x4559))
+:extrapreds ((x4560))
+:extrapreds ((x4561))
+:extrapreds ((x4562))
+:extrapreds ((x4563))
+:extrapreds ((x4564))
+:extrapreds ((x4565))
+:extrapreds ((x4566))
+:extrapreds ((x4567))
+:extrapreds ((x4568))
+:extrapreds ((x4569))
+:extrapreds ((x4570))
+:extrapreds ((x4571))
+:extrapreds ((x4572))
+:extrapreds ((x4573))
+:extrapreds ((x4574))
+:extrapreds ((x4575))
+:extrapreds ((x4576))
+:extrapreds ((x4577))
+:extrapreds ((x4578))
+:extrapreds ((x4579))
+:extrapreds ((x4580))
+:extrapreds ((x4581))
+:extrapreds ((x4582))
+:extrapreds ((x4583))
+:extrapreds ((x4584))
+:extrapreds ((x4585))
+:extrapreds ((x4586))
+:extrapreds ((x4587))
+:extrapreds ((x4588))
+:extrapreds ((x4589))
+:extrapreds ((x4590))
+:extrapreds ((x4591))
+:extrapreds ((x4592))
+:extrapreds ((x4593))
+:extrapreds ((x4594))
+:extrapreds ((x4595))
+:extrapreds ((x4596))
+:extrapreds ((x4597))
+:extrapreds ((x4598))
+:extrapreds ((x4599))
+:extrapreds ((x4600))
+:extrapreds ((x4601))
+:extrapreds ((x4602))
+:extrapreds ((x4603))
+:extrapreds ((x4604))
+:extrapreds ((x4605))
+:extrapreds ((x4606))
+:extrapreds ((x4607))
+:extrapreds ((x4608))
+:extrapreds ((x4609))
+:extrapreds ((x4610))
+:extrapreds ((x4611))
+:extrapreds ((x4612))
+:extrapreds ((x4613))
+:extrapreds ((x4614))
+:extrapreds ((x4615))
+:extrapreds ((x4616))
+:extrapreds ((x4617))
+:extrapreds ((x4618))
+:extrapreds ((x4619))
+:extrapreds ((x4620))
+:extrapreds ((x4621))
+:extrapreds ((x4622))
+:extrapreds ((x4623))
+:extrapreds ((x4624))
+:extrapreds ((x4625))
+:extrapreds ((x4626))
+:extrapreds ((x4627))
+:extrapreds ((x4628))
+:extrapreds ((x4629))
+:extrapreds ((x4630))
+:extrapreds ((x4631))
+:extrapreds ((x4632))
+:extrapreds ((x4633))
+:extrapreds ((x4634))
+:extrapreds ((x4635))
+:extrapreds ((x4636))
+:extrapreds ((x4637))
+:extrapreds ((x4638))
+:extrapreds ((x4639))
+:extrapreds ((x4640))
+:extrapreds ((x4641))
+:extrapreds ((x4642))
+:extrapreds ((x4643))
+:extrapreds ((x4644))
+:extrapreds ((x4645))
+:extrapreds ((x4646))
+:extrapreds ((x4647))
+:extrapreds ((x4648))
+:extrapreds ((x4649))
+:extrapreds ((x4650))
+:extrapreds ((x4651))
+:extrapreds ((x4652))
+:extrapreds ((x4653))
+:extrapreds ((x4654))
+:extrapreds ((x4655))
+:extrapreds ((x4656))
+:extrapreds ((x4657))
+:extrapreds ((x4658))
+:extrapreds ((x4659))
+:extrapreds ((x4660))
+:extrapreds ((x4661))
+:extrapreds ((x4662))
+:extrapreds ((x4663))
+:extrapreds ((x4664))
+:extrapreds ((x4665))
+:extrapreds ((x4666))
+:extrapreds ((x4667))
+:extrapreds ((x4668))
+:extrapreds ((x4669))
+:extrapreds ((x4670))
+:extrapreds ((x4671))
+:extrapreds ((x4672))
+:extrapreds ((x4673))
+:extrapreds ((x4674))
+:extrapreds ((x4675))
+:extrapreds ((x4676))
+:extrapreds ((x4677))
+:extrapreds ((x4678))
+:extrapreds ((x4679))
+:extrapreds ((x4680))
+:extrapreds ((x4681))
+:extrapreds ((x4682))
+:extrapreds ((x4683))
+:extrapreds ((x4684))
+:extrapreds ((x4685))
+:extrapreds ((x4686))
+:extrapreds ((x4687))
+:extrapreds ((x4688))
+:extrapreds ((x4689))
+:extrapreds ((x4690))
+:extrapreds ((x4691))
+:extrapreds ((x4692))
+:extrapreds ((x4693))
+:extrapreds ((x4694))
+:extrapreds ((x4695))
+:extrapreds ((x4696))
+:extrapreds ((x4697))
+:extrapreds ((x4698))
+:extrapreds ((x4699))
+:extrapreds ((x4700))
+:extrapreds ((x4701))
+:extrapreds ((x4702))
+:extrapreds ((x4703))
+:extrapreds ((x4704))
+:extrapreds ((x4705))
+:extrapreds ((x4706))
+:extrapreds ((x4707))
+:extrapreds ((x4708))
+:extrapreds ((x4709))
+:extrapreds ((x4710))
+:extrapreds ((x4711))
+:extrapreds ((x4712))
+:extrapreds ((x4713))
+:extrapreds ((x4714))
+:extrapreds ((x4715))
+:extrapreds ((x4716))
+:extrapreds ((x4717))
+:extrapreds ((x4718))
+:extrapreds ((x4719))
+:extrapreds ((x4720))
+:extrapreds ((x4721))
+:extrapreds ((x4722))
+:extrapreds ((x4723))
+:extrapreds ((x4724))
+:extrapreds ((x4725))
+:extrapreds ((x4726))
+:extrapreds ((x4727))
+:extrapreds ((x4728))
+:extrapreds ((x4729))
+:extrapreds ((x4730))
+:extrapreds ((x4731))
+:extrapreds ((x4732))
+:extrapreds ((x4733))
+:extrapreds ((x4734))
+:extrapreds ((x4735))
+:extrapreds ((x4736))
+:extrapreds ((x4737))
+:extrapreds ((x4738))
+:extrapreds ((x4739))
+:extrapreds ((x4740))
+:extrapreds ((x4741))
+:extrapreds ((x4742))
+:extrapreds ((x4743))
+:extrapreds ((x4744))
+:extrapreds ((x4745))
+:extrapreds ((x4746))
+:extrapreds ((x4747))
+:extrapreds ((x4748))
+:extrapreds ((x4749))
+:extrapreds ((x4750))
+:extrapreds ((x4751))
+:extrapreds ((x4752))
+:extrapreds ((x4753))
+:extrapreds ((x4754))
+:extrapreds ((x4755))
+:extrapreds ((x4756))
+:extrapreds ((x4757))
+:extrapreds ((x4758))
+:extrapreds ((x4759))
+:extrapreds ((x4760))
+:extrapreds ((x4761))
+:extrapreds ((x4762))
+:extrapreds ((x4763))
+:extrapreds ((x4764))
+:extrapreds ((x4765))
+:extrapreds ((x4766))
+:extrapreds ((x4767))
+:extrapreds ((x4768))
+:extrapreds ((x4769))
+:extrapreds ((x4770))
+:extrapreds ((x4771))
+:extrapreds ((x4772))
+:extrapreds ((x4773))
+:extrapreds ((x4774))
+:extrapreds ((x4775))
+:extrapreds ((x4776))
+:extrapreds ((x4777))
+:extrapreds ((x4778))
+:extrapreds ((x4779))
+:extrapreds ((x4780))
+:extrapreds ((x4781))
+:extrapreds ((x4782))
+:extrapreds ((x4783))
+:extrapreds ((x4784))
+:extrapreds ((x4785))
+:extrapreds ((x4786))
+:extrapreds ((x4787))
+:extrapreds ((x4788))
+:extrapreds ((x4789))
+:extrapreds ((x4790))
+:extrapreds ((x4791))
+:extrapreds ((x4792))
+:extrapreds ((x4793))
+:extrapreds ((x4794))
+:extrapreds ((x4795))
+:extrapreds ((x4796))
+:extrapreds ((x4797))
+:extrapreds ((x4798))
+:extrapreds ((x4799))
+:extrapreds ((x4800))
+:extrapreds ((x4801))
+:extrapreds ((x4802))
+:extrapreds ((x4803))
+:extrapreds ((x4804))
+:extrapreds ((x4805))
+:extrapreds ((x4806))
+:extrapreds ((x4807))
+:extrapreds ((x4808))
+:extrapreds ((x4809))
+:extrapreds ((x4810))
+:extrapreds ((x4811))
+:extrapreds ((x4812))
+:extrapreds ((x4813))
+:extrapreds ((x4814))
+:extrapreds ((x4815))
+:extrapreds ((x4816))
+:extrapreds ((x4817))
+:extrapreds ((x4818))
+:extrapreds ((x4819))
+:extrapreds ((x4820))
+:extrapreds ((x4821))
+:extrapreds ((x4822))
+:extrapreds ((x4823))
+:extrapreds ((x4824))
+:extrapreds ((x4825))
+:extrapreds ((x4826))
+:extrapreds ((x4827))
+:extrapreds ((x4828))
+:extrapreds ((x4829))
+:extrapreds ((x4830))
+:extrapreds ((x4831))
+:extrapreds ((x4832))
+:extrapreds ((x4833))
+:extrapreds ((x4834))
+:extrapreds ((x4835))
+:extrapreds ((x4836))
+:extrapreds ((x4837))
+:extrapreds ((x4838))
+:extrapreds ((x4839))
+:extrapreds ((x4840))
+:extrapreds ((x4841))
+:extrapreds ((x4842))
+:extrapreds ((x4843))
+:extrapreds ((x4844))
+:extrapreds ((x4845))
+:extrapreds ((x4846))
+:extrapreds ((x4847))
+:extrapreds ((x4848))
+:extrapreds ((x4849))
+:extrapreds ((x4850))
+:extrapreds ((x4851))
+:extrapreds ((x4852))
+:extrapreds ((x4853))
+:extrapreds ((x4854))
+:extrapreds ((x4855))
+:extrapreds ((x4856))
+:extrapreds ((x4857))
+:extrapreds ((x4858))
+:extrapreds ((x4859))
+:extrapreds ((x4860))
+:extrapreds ((x4861))
+:extrapreds ((x4862))
+:extrapreds ((x4863))
+:extrapreds ((x4864))
+:extrapreds ((x4865))
+:extrapreds ((x4866))
+:formula (and
+(or (not x3) (not x1) x2)
+(or (not x3) (not x2) x1)
+(or (not x3) (not x25) x26)
+(or (not x3) (not x26) x25)
+(or (not x3) (not x18) x19)
+(or (not x3) (not x19) x18)
+(or (not x3) (not x11) x12)
+(or (not x3) (not x12) x11)
+(or (not x3) (not x4) x5)
+(or (not x3) (not x5) x4)
+(or (not x52) x62 x4866 x530)
+(or (not x62) (not x530) (not x52) x4866)
+(or (not x62) x4866 x530 x52)
+(or (not x530) x62 x4866 x52)
+(or (not x4866) (not x50) x62 x4865 x527)
+(or (not x62) (not x4866) (not x527) (not x50) x4865)
+(or (not x62) (not x4866) x4865 x527 x50)
+(or (not x4866) (not x527) x62 x4865 x50)
+(or (not x4865) (not x48) x62 x4864 x523)
+(or (not x62) (not x4865) (not x523) (not x48) x4864)
+(or (not x62) (not x4865) x4864 x523 x48)
+(or (not x4865) (not x523) x62 x4864 x48)
+(or (not x4864) (not x46) x62 x4863 x519)
+(or (not x62) (not x4864) (not x519) (not x46) x4863)
+(or (not x62) (not x4864) x4863 x519 x46)
+(or (not x4864) (not x519) x62 x4863 x46)
+(or (not x4863) (not x44) x62 x4862 x514)
+(or (not x62) (not x4863) (not x514) (not x44) x4862)
+(or (not x62) (not x4863) x4862 x514 x44)
+(or (not x4863) (not x514) x62 x4862 x44)
+(or (not x4862) (not x149) x62 x4861 x511)
+(or (not x62) (not x4862) (not x511) (not x149) x4861)
+(or (not x62) (not x4862) x4861 x511 x149)
+(or (not x4862) (not x511) x62 x4861 x149)
+(or (not x62) (not x64))
+(or (not x4861) x64)
+(or (not x64) x4861)
+(or x4866 x530 x439)
+(or (not x530) (not x439) x4866)
+(or (not x4866) (not x530) x439)
+(or (not x4866) (not x439) x530)
+(or (not x4866) x4865 x527 x434)
+(or (not x4866) (not x527) (not x434) x4865)
+(or (not x4865) (not x527) x434)
+(or (not x4865) (not x434) x527)
+(or (not x4865) x4866)
+(or (not x4865) x4864 x523 x432)
+(or (not x4865) (not x523) (not x432) x4864)
+(or (not x4864) (not x523) x432)
+(or (not x4864) (not x432) x523)
+(or (not x4864) x4865)
+(or (not x4864) x4863 x519 x429)
+(or (not x4864) (not x519) (not x429) x4863)
+(or (not x4863) (not x519) x429)
+(or (not x4863) (not x429) x519)
+(or (not x4863) x4864)
+(or (not x4863) x4862 x514 x424)
+(or (not x4863) (not x514) (not x424) x4862)
+(or (not x4862) (not x514) x424)
+(or (not x4862) (not x424) x514)
+(or (not x4862) x4863)
+(or (not x4862) x4861 x511 x420)
+(or (not x4862) (not x511) (not x420) x4861)
+(or (not x4861) (not x511) x420)
+(or (not x4861) (not x420) x511)
+(or (not x4861) x4862)
+(or (not x59) (not x483) (not x393))
+(or (not x483) (not x393) x63)
+(or (not x59) (not x481) (not x393) x95)
+(or (not x481) (not x393) (not x95) x59)
+(or (not x63) (not x481) (not x393))
+(or (not x59) (not x478) (not x393) x94)
+(or (not x478) (not x393) (not x94) x59)
+(or (not x63) (not x478) (not x393))
+(or (not x59) (not x476) (not x393) x92)
+(or (not x476) (not x393) (not x92) x59)
+(or (not x63) (not x476) (not x393))
+(or (not x59) (not x473) (not x393) x91)
+(or (not x473) (not x393) (not x91) x59)
+(or (not x63) (not x473) (not x393))
+(or (not x59) (not x483) (not x392) x89)
+(or (not x483) (not x392) (not x89) x59)
+(or (not x63) (not x483) (not x392))
+(or (not x59) (not x481) (not x392))
+(or (not x481) (not x392) x63)
+(or (not x59) (not x478) (not x392) x88)
+(or (not x478) (not x392) (not x88) x59)
+(or (not x63) (not x478) (not x392))
+(or (not x59) (not x476) (not x392) x87)
+(or (not x476) (not x392) (not x87) x59)
+(or (not x63) (not x476) (not x392))
+(or (not x59) (not x473) (not x392) x86)
+(or (not x473) (not x392) (not x86) x59)
+(or (not x63) (not x473) (not x392))
+(or (not x59) (not x483) (not x390) x82)
+(or (not x483) (not x390) (not x82) x59)
+(or (not x63) (not x483) (not x390))
+(or (not x59) (not x481) (not x390) x81)
+(or (not x481) (not x390) (not x81) x59)
+(or (not x63) (not x481) (not x390))
+(or (not x59) (not x478) (not x390))
+(or (not x478) (not x390) x63)
+(or (not x59) (not x476) (not x390) x79)
+(or (not x476) (not x390) (not x79) x59)
+(or (not x63) (not x476) (not x390))
+(or (not x59) (not x473) (not x390) x77)
+(or (not x473) (not x390) (not x77) x59)
+(or (not x63) (not x473) (not x390))
+(or (not x59) (not x483) (not x387) x73)
+(or (not x483) (not x387) (not x73) x59)
+(or (not x63) (not x483) (not x387))
+(or (not x59) (not x481) (not x387) x67)
+(or (not x481) (not x387) (not x67) x59)
+(or (not x63) (not x481) (not x387))
+(or (not x59) (not x478) (not x387) x66)
+(or (not x478) (not x387) (not x66) x59)
+(or (not x63) (not x478) (not x387))
+(or (not x59) (not x476) (not x387))
+(or (not x476) (not x387) x63)
+(or (not x59) (not x473) (not x387) x65)
+(or (not x473) (not x387) (not x65) x59)
+(or (not x63) (not x473) (not x387))
+(or (not x59) (not x483) (not x384) x58)
+(or (not x483) (not x384) (not x58) x59)
+(or (not x63) (not x483) (not x384))
+(or (not x59) (not x481) (not x384) x57)
+(or (not x481) (not x384) (not x57) x59)
+(or (not x63) (not x481) (not x384))
+(or (not x59) (not x478) (not x384) x56)
+(or (not x478) (not x384) (not x56) x59)
+(or (not x63) (not x478) (not x384))
+(or (not x59) (not x476) (not x384) x55)
+(or (not x476) (not x384) (not x55) x59)
+(or (not x63) (not x476) (not x384))
+(or (not x59) (not x473) (not x384))
+(or (not x473) (not x384) x63)
+(or (not x68) (not x69) (not x7) x899)
+(or (not x899) (not x4857) (not x4849) x4860 x4859)
+(or (not x899) (not x4849) x4858 x4857)
+(or (not x899) x4850 x4849)
+(or (not x4859) (not x4857) (not x4849) x899)
+(or (not x4860) (not x4857) (not x4849) x899)
+(or (not x4858) (not x4849) x899)
+(or (not x4850) x899)
+(or (not x4860) (not x4859))
+(or (not x2) x4860 x171 x37)
+(or (not x4860) (not x2) (not x37) x171)
+(or (not x4860) (not x171) x2 x37)
+(or (not x171) (not x37) x4860 x2)
+(or (not x26) x4860 x169 x37)
+(or (not x4860) (not x26) (not x37) x169)
+(or (not x4860) (not x169) x26 x37)
+(or (not x169) (not x37) x4860 x26)
+(or (not x19) x4860 x167 x37)
+(or (not x4860) (not x19) (not x37) x167)
+(or (not x4860) (not x167) x19 x37)
+(or (not x167) (not x37) x4860 x19)
+(or (not x12) x4860 x164 x37)
+(or (not x4860) (not x12) (not x37) x164)
+(or (not x4860) (not x164) x12 x37)
+(or (not x164) (not x37) x4860 x12)
+(or (not x5) x4860 x162 x37)
+(or (not x4860) (not x5) (not x37) x162)
+(or (not x4860) (not x162) x5 x37)
+(or (not x162) (not x37) x4860 x5)
+(or (not x169) (not x26) x4859 x171 x2)
+(or (not x167) (not x19) x4859 x169 x26)
+(or (not x164) (not x12) x4859 x167 x19)
+(or (not x162) (not x5) x4859 x164 x12)
+(or x4859 x162 x5)
+(or (not x171) (not x2) x4859)
+(or (not x4859) (not x171) x2)
+(or (not x4859) (not x2) x171)
+(or (not x4859) (not x169) x26)
+(or (not x4859) (not x26) x169)
+(or (not x4859) (not x167) x19)
+(or (not x4859) (not x19) x167)
+(or (not x4859) (not x164) x12)
+(or (not x4859) (not x12) x164)
+(or (not x4859) (not x162) x5)
+(or (not x4859) (not x5) x162)
+(or (not x52) x4858 x4856 x143)
+(or (not x4858) (not x143) (not x52) x4856)
+(or (not x4858) x4856 x143 x52)
+(or (not x143) x4858 x4856 x52)
+(or (not x4856) (not x50) x4858 x4855 x139)
+(or (not x4858) (not x4856) (not x139) (not x50) x4855)
+(or (not x4858) (not x4856) x4855 x139 x50)
+(or (not x4856) (not x139) x4858 x4855 x50)
+(or (not x4855) (not x48) x4858 x4854 x133)
+(or (not x4858) (not x4855) (not x133) (not x48) x4854)
+(or (not x4858) (not x4855) x4854 x133 x48)
+(or (not x4855) (not x133) x4858 x4854 x48)
+(or (not x4854) (not x46) x4858 x4853 x127)
+(or (not x4858) (not x4854) (not x127) (not x46) x4853)
+(or (not x4858) (not x4854) x4853 x127 x46)
+(or (not x4854) (not x127) x4858 x4853 x46)
+(or (not x4853) (not x44) x4858 x4852 x123)
+(or (not x4858) (not x4853) (not x123) (not x44) x4852)
+(or (not x4858) (not x4853) x4852 x123 x44)
+(or (not x4853) (not x123) x4858 x4852 x44)
+(or (not x4852) (not x149) x4858 x4851 x118)
+(or (not x4858) (not x4852) (not x118) (not x149) x4851)
+(or (not x4858) (not x4852) x4851 x118 x149)
+(or (not x4852) (not x118) x4858 x4851 x149)
+(or (not x4858) (not x4857))
+(or (not x4851) x4857)
+(or (not x4857) x4851)
+(or x4856 x143 x439)
+(or (not x143) (not x439) x4856)
+(or (not x4856) (not x143) x439)
+(or (not x4856) (not x439) x143)
+(or (not x4856) x4855 x139 x434)
+(or (not x4856) (not x139) (not x434) x4855)
+(or (not x4855) (not x139) x434)
+(or (not x4855) (not x434) x139)
+(or (not x4855) x4856)
+(or (not x4855) x4854 x133 x432)
+(or (not x4855) (not x133) (not x432) x4854)
+(or (not x4854) (not x133) x432)
+(or (not x4854) (not x432) x133)
+(or (not x4854) x4855)
+(or (not x4854) x4853 x127 x429)
+(or (not x4854) (not x127) (not x429) x4853)
+(or (not x4853) (not x127) x429)
+(or (not x4853) (not x429) x127)
+(or (not x4853) x4854)
+(or (not x4853) x4852 x123 x424)
+(or (not x4853) (not x123) (not x424) x4852)
+(or (not x4852) (not x123) x424)
+(or (not x4852) (not x424) x123)
+(or (not x4852) x4853)
+(or (not x4852) x4851 x118 x420)
+(or (not x4852) (not x118) (not x420) x4851)
+(or (not x4851) (not x118) x420)
+(or (not x4851) (not x420) x118)
+(or (not x4851) x4852)
+(or (not x4850) (not x107) (not x393))
+(or (not x107) (not x393) x4849)
+(or (not x4850) (not x101) (not x393) x95)
+(or (not x101) (not x393) (not x95) x4850)
+(or (not x4849) (not x101) (not x393))
+(or (not x4850) (not x93) (not x393) x94)
+(or (not x93) (not x393) (not x94) x4850)
+(or (not x4849) (not x93) (not x393))
+(or (not x4850) (not x85) (not x393) x92)
+(or (not x85) (not x393) (not x92) x4850)
+(or (not x4849) (not x85) (not x393))
+(or (not x4850) (not x70) (not x393) x91)
+(or (not x70) (not x393) (not x91) x4850)
+(or (not x4849) (not x70) (not x393))
+(or (not x4850) (not x107) (not x392) x89)
+(or (not x107) (not x392) (not x89) x4850)
+(or (not x4849) (not x107) (not x392))
+(or (not x4850) (not x101) (not x392))
+(or (not x101) (not x392) x4849)
+(or (not x4850) (not x93) (not x392) x88)
+(or (not x93) (not x392) (not x88) x4850)
+(or (not x4849) (not x93) (not x392))
+(or (not x4850) (not x85) (not x392) x87)
+(or (not x85) (not x392) (not x87) x4850)
+(or (not x4849) (not x85) (not x392))
+(or (not x4850) (not x70) (not x392) x86)
+(or (not x70) (not x392) (not x86) x4850)
+(or (not x4849) (not x70) (not x392))
+(or (not x4850) (not x107) (not x390) x82)
+(or (not x107) (not x390) (not x82) x4850)
+(or (not x4849) (not x107) (not x390))
+(or (not x4850) (not x101) (not x390) x81)
+(or (not x101) (not x390) (not x81) x4850)
+(or (not x4849) (not x101) (not x390))
+(or (not x4850) (not x93) (not x390))
+(or (not x93) (not x390) x4849)
+(or (not x4850) (not x85) (not x390) x79)
+(or (not x85) (not x390) (not x79) x4850)
+(or (not x4849) (not x85) (not x390))
+(or (not x4850) (not x70) (not x390) x77)
+(or (not x70) (not x390) (not x77) x4850)
+(or (not x4849) (not x70) (not x390))
+(or (not x4850) (not x107) (not x387) x73)
+(or (not x107) (not x387) (not x73) x4850)
+(or (not x4849) (not x107) (not x387))
+(or (not x4850) (not x101) (not x387) x67)
+(or (not x101) (not x387) (not x67) x4850)
+(or (not x4849) (not x101) (not x387))
+(or (not x4850) (not x93) (not x387) x66)
+(or (not x93) (not x387) (not x66) x4850)
+(or (not x4849) (not x93) (not x387))
+(or (not x4850) (not x85) (not x387))
+(or (not x85) (not x387) x4849)
+(or (not x4850) (not x70) (not x387) x65)
+(or (not x70) (not x387) (not x65) x4850)
+(or (not x4849) (not x70) (not x387))
+(or (not x4850) (not x107) (not x384) x58)
+(or (not x107) (not x384) (not x58) x4850)
+(or (not x4849) (not x107) (not x384))
+(or (not x4850) (not x101) (not x384) x57)
+(or (not x101) (not x384) (not x57) x4850)
+(or (not x4849) (not x101) (not x384))
+(or (not x4850) (not x93) (not x384) x56)
+(or (not x93) (not x384) (not x56) x4850)
+(or (not x4849) (not x93) (not x384))
+(or (not x4850) (not x85) (not x384) x55)
+(or (not x85) (not x384) (not x55) x4850)
+(or (not x4849) (not x85) (not x384))
+(or (not x4850) (not x70) (not x384))
+(or (not x70) (not x384) x4849)
+(or (not x68) (not x69) (not x9) x897)
+(or (not x897) (not x4845) (not x4837) x4848 x4847)
+(or (not x897) (not x4837) x4846 x4845)
+(or (not x897) x4838 x4837)
+(or (not x4847) (not x4845) (not x4837) x897)
+(or (not x4848) (not x4845) (not x4837) x897)
+(or (not x4846) (not x4837) x897)
+(or (not x4838) x897)
+(or (not x4848) (not x4847))
+(or (not x2) x4848 x366 x37)
+(or (not x4848) (not x2) (not x37) x366)
+(or (not x4848) (not x366) x2 x37)
+(or (not x366) (not x37) x4848 x2)
+(or (not x26) x4848 x363 x37)
+(or (not x4848) (not x26) (not x37) x363)
+(or (not x4848) (not x363) x26 x37)
+(or (not x363) (not x37) x4848 x26)
+(or (not x19) x4848 x362 x37)
+(or (not x4848) (not x19) (not x37) x362)
+(or (not x4848) (not x362) x19 x37)
+(or (not x362) (not x37) x4848 x19)
+(or (not x12) x4848 x361 x37)
+(or (not x4848) (not x12) (not x37) x361)
+(or (not x4848) (not x361) x12 x37)
+(or (not x361) (not x37) x4848 x12)
+(or (not x5) x4848 x360 x37)
+(or (not x4848) (not x5) (not x37) x360)
+(or (not x4848) (not x360) x5 x37)
+(or (not x360) (not x37) x4848 x5)
+(or (not x26) (not x363) x4847 x2 x366)
+(or (not x19) (not x362) x4847 x26 x363)
+(or (not x12) (not x361) x4847 x19 x362)
+(or (not x5) (not x360) x4847 x12 x361)
+(or x4847 x5 x360)
+(or (not x2) (not x366) x4847)
+(or (not x4847) (not x366) x2)
+(or (not x4847) (not x2) x366)
+(or (not x4847) (not x363) x26)
+(or (not x4847) (not x26) x363)
+(or (not x4847) (not x362) x19)
+(or (not x4847) (not x19) x362)
+(or (not x4847) (not x361) x12)
+(or (not x4847) (not x12) x361)
+(or (not x4847) (not x360) x5)
+(or (not x4847) (not x5) x360)
+(or (not x52) x4846 x4844 x343)
+(or (not x4846) (not x343) (not x52) x4844)
+(or (not x4846) x4844 x343 x52)
+(or (not x343) x4846 x4844 x52)
+(or (not x4844) (not x50) x4846 x4843 x341)
+(or (not x4846) (not x4844) (not x341) (not x50) x4843)
+(or (not x4846) (not x4844) x4843 x341 x50)
+(or (not x4844) (not x341) x4846 x4843 x50)
+(or (not x4843) (not x48) x4846 x4842 x337)
+(or (not x4846) (not x4843) (not x337) (not x48) x4842)
+(or (not x4846) (not x4843) x4842 x337 x48)
+(or (not x4843) (not x337) x4846 x4842 x48)
+(or (not x4842) (not x46) x4846 x4841 x331)
+(or (not x4846) (not x4842) (not x331) (not x46) x4841)
+(or (not x4846) (not x4842) x4841 x331 x46)
+(or (not x4842) (not x331) x4846 x4841 x46)
+(or (not x4841) (not x44) x4846 x4840 x329)
+(or (not x4846) (not x4841) (not x329) (not x44) x4840)
+(or (not x4846) (not x4841) x4840 x329 x44)
+(or (not x4841) (not x329) x4846 x4840 x44)
+(or (not x4840) (not x149) x4846 x4839 x326)
+(or (not x4846) (not x4840) (not x326) (not x149) x4839)
+(or (not x4846) (not x4840) x4839 x326 x149)
+(or (not x4840) (not x326) x4846 x4839 x149)
+(or (not x4846) (not x4845))
+(or (not x4839) x4845)
+(or (not x4845) x4839)
+(or x4844 x439 x343)
+(or (not x439) (not x343) x4844)
+(or (not x4844) (not x343) x439)
+(or (not x4844) (not x439) x343)
+(or (not x4844) x4843 x434 x341)
+(or (not x4844) (not x434) (not x341) x4843)
+(or (not x4843) (not x341) x434)
+(or (not x4843) (not x434) x341)
+(or (not x4843) x4844)
+(or (not x4843) x4842 x432 x337)
+(or (not x4843) (not x432) (not x337) x4842)
+(or (not x4842) (not x337) x432)
+(or (not x4842) (not x432) x337)
+(or (not x4842) x4843)
+(or (not x4842) x4841 x429 x331)
+(or (not x4842) (not x429) (not x331) x4841)
+(or (not x4841) (not x331) x429)
+(or (not x4841) (not x429) x331)
+(or (not x4841) x4842)
+(or (not x4841) x4840 x424 x329)
+(or (not x4841) (not x424) (not x329) x4840)
+(or (not x4840) (not x329) x424)
+(or (not x4840) (not x424) x329)
+(or (not x4840) x4841)
+(or (not x4840) x4839 x420 x326)
+(or (not x4840) (not x420) (not x326) x4839)
+(or (not x4839) (not x326) x420)
+(or (not x4839) (not x420) x326)
+(or (not x4839) x4840)
+(or (not x4838) (not x393) (not x299))
+(or (not x393) (not x299) x4837)
+(or (not x4838) (not x393) (not x296) x95)
+(or (not x393) (not x296) (not x95) x4838)
+(or (not x4837) (not x393) (not x296))
+(or (not x4838) (not x393) (not x293) x94)
+(or (not x393) (not x293) (not x94) x4838)
+(or (not x4837) (not x393) (not x293))
+(or (not x4838) (not x393) (not x291) x92)
+(or (not x393) (not x291) (not x92) x4838)
+(or (not x4837) (not x393) (not x291))
+(or (not x4838) (not x393) (not x288) x91)
+(or (not x393) (not x288) (not x91) x4838)
+(or (not x4837) (not x393) (not x288))
+(or (not x4838) (not x392) (not x299) x89)
+(or (not x392) (not x299) (not x89) x4838)
+(or (not x4837) (not x392) (not x299))
+(or (not x4838) (not x392) (not x296))
+(or (not x392) (not x296) x4837)
+(or (not x4838) (not x392) (not x293) x88)
+(or (not x392) (not x293) (not x88) x4838)
+(or (not x4837) (not x392) (not x293))
+(or (not x4838) (not x392) (not x291) x87)
+(or (not x392) (not x291) (not x87) x4838)
+(or (not x4837) (not x392) (not x291))
+(or (not x4838) (not x392) (not x288) x86)
+(or (not x392) (not x288) (not x86) x4838)
+(or (not x4837) (not x392) (not x288))
+(or (not x4838) (not x390) (not x299) x82)
+(or (not x390) (not x299) (not x82) x4838)
+(or (not x4837) (not x390) (not x299))
+(or (not x4838) (not x390) (not x296) x81)
+(or (not x390) (not x296) (not x81) x4838)
+(or (not x4837) (not x390) (not x296))
+(or (not x4838) (not x390) (not x293))
+(or (not x390) (not x293) x4837)
+(or (not x4838) (not x390) (not x291) x79)
+(or (not x390) (not x291) (not x79) x4838)
+(or (not x4837) (not x390) (not x291))
+(or (not x4838) (not x390) (not x288) x77)
+(or (not x390) (not x288) (not x77) x4838)
+(or (not x4837) (not x390) (not x288))
+(or (not x4838) (not x387) (not x299) x73)
+(or (not x387) (not x299) (not x73) x4838)
+(or (not x4837) (not x387) (not x299))
+(or (not x4838) (not x387) (not x296) x67)
+(or (not x387) (not x296) (not x67) x4838)
+(or (not x4837) (not x387) (not x296))
+(or (not x4838) (not x387) (not x293) x66)
+(or (not x387) (not x293) (not x66) x4838)
+(or (not x4837) (not x387) (not x293))
+(or (not x4838) (not x387) (not x291))
+(or (not x387) (not x291) x4837)
+(or (not x4838) (not x387) (not x288) x65)
+(or (not x387) (not x288) (not x65) x4838)
+(or (not x4837) (not x387) (not x288))
+(or (not x4838) (not x384) (not x299) x58)
+(or (not x384) (not x299) (not x58) x4838)
+(or (not x4837) (not x384) (not x299))
+(or (not x4838) (not x384) (not x296) x57)
+(or (not x384) (not x296) (not x57) x4838)
+(or (not x4837) (not x384) (not x296))
+(or (not x4838) (not x384) (not x293) x56)
+(or (not x384) (not x293) (not x56) x4838)
+(or (not x4837) (not x384) (not x293))
+(or (not x4838) (not x384) (not x291) x55)
+(or (not x384) (not x291) (not x55) x4838)
+(or (not x4837) (not x384) (not x291))
+(or (not x4838) (not x384) (not x288))
+(or (not x384) (not x288) x4837)
+(or (not x68) (not x69) (not x10) x913)
+(or (not x913) (not x4833) (not x4825) x4836 x4835)
+(or (not x913) (not x4825) x4834 x4833)
+(or (not x913) x4826 x4825)
+(or (not x4835) (not x4833) (not x4825) x913)
+(or (not x4836) (not x4833) (not x4825) x913)
+(or (not x4834) (not x4825) x913)
+(or (not x4826) x913)
+(or (not x4836) (not x4835))
+(or (not x2) x4836 x272 x37)
+(or (not x4836) (not x2) (not x37) x272)
+(or (not x4836) (not x272) x2 x37)
+(or (not x272) (not x37) x4836 x2)
+(or (not x26) x4836 x269 x37)
+(or (not x4836) (not x26) (not x37) x269)
+(or (not x4836) (not x269) x26 x37)
+(or (not x269) (not x37) x4836 x26)
+(or (not x19) x4836 x268 x37)
+(or (not x4836) (not x19) (not x37) x268)
+(or (not x4836) (not x268) x19 x37)
+(or (not x268) (not x37) x4836 x19)
+(or (not x12) x4836 x265 x37)
+(or (not x4836) (not x12) (not x37) x265)
+(or (not x4836) (not x265) x12 x37)
+(or (not x265) (not x37) x4836 x12)
+(or (not x5) x4836 x264 x37)
+(or (not x4836) (not x5) (not x37) x264)
+(or (not x4836) (not x264) x5 x37)
+(or (not x264) (not x37) x4836 x5)
+(or (not x26) (not x269) x4835 x2 x272)
+(or (not x19) (not x268) x4835 x26 x269)
+(or (not x12) (not x265) x4835 x19 x268)
+(or (not x5) (not x264) x4835 x12 x265)
+(or x4835 x5 x264)
+(or (not x2) (not x272) x4835)
+(or (not x4835) (not x272) x2)
+(or (not x4835) (not x2) x272)
+(or (not x4835) (not x269) x26)
+(or (not x4835) (not x26) x269)
+(or (not x4835) (not x268) x19)
+(or (not x4835) (not x19) x268)
+(or (not x4835) (not x265) x12)
+(or (not x4835) (not x12) x265)
+(or (not x4835) (not x264) x5)
+(or (not x4835) (not x5) x264)
+(or (not x52) x4834 x4832 x246)
+(or (not x4834) (not x246) (not x52) x4832)
+(or (not x4834) x4832 x246 x52)
+(or (not x246) x4834 x4832 x52)
+(or (not x4832) (not x50) x4834 x4831 x245)
+(or (not x4834) (not x4832) (not x245) (not x50) x4831)
+(or (not x4834) (not x4832) x4831 x245 x50)
+(or (not x4832) (not x245) x4834 x4831 x50)
+(or (not x4831) (not x48) x4834 x4830 x242)
+(or (not x4834) (not x4831) (not x242) (not x48) x4830)
+(or (not x4834) (not x4831) x4830 x242 x48)
+(or (not x4831) (not x242) x4834 x4830 x48)
+(or (not x4830) (not x46) x4834 x4829 x238)
+(or (not x4834) (not x4830) (not x238) (not x46) x4829)
+(or (not x4834) (not x4830) x4829 x238 x46)
+(or (not x4830) (not x238) x4834 x4829 x46)
+(or (not x4829) (not x44) x4834 x4828 x233)
+(or (not x4834) (not x4829) (not x233) (not x44) x4828)
+(or (not x4834) (not x4829) x4828 x233 x44)
+(or (not x4829) (not x233) x4834 x4828 x44)
+(or (not x4828) (not x149) x4834 x4827 x229)
+(or (not x4834) (not x4828) (not x229) (not x149) x4827)
+(or (not x4834) (not x4828) x4827 x229 x149)
+(or (not x4828) (not x229) x4834 x4827 x149)
+(or (not x4834) (not x4833))
+(or (not x4827) x4833)
+(or (not x4833) x4827)
+(or x4832 x439 x246)
+(or (not x439) (not x246) x4832)
+(or (not x4832) (not x246) x439)
+(or (not x4832) (not x439) x246)
+(or (not x4832) x4831 x434 x245)
+(or (not x4832) (not x434) (not x245) x4831)
+(or (not x4831) (not x245) x434)
+(or (not x4831) (not x434) x245)
+(or (not x4831) x4832)
+(or (not x4831) x4830 x432 x242)
+(or (not x4831) (not x432) (not x242) x4830)
+(or (not x4830) (not x242) x432)
+(or (not x4830) (not x432) x242)
+(or (not x4830) x4831)
+(or (not x4830) x4829 x429 x238)
+(or (not x4830) (not x429) (not x238) x4829)
+(or (not x4829) (not x238) x429)
+(or (not x4829) (not x429) x238)
+(or (not x4829) x4830)
+(or (not x4829) x4828 x424 x233)
+(or (not x4829) (not x424) (not x233) x4828)
+(or (not x4828) (not x233) x424)
+(or (not x4828) (not x424) x233)
+(or (not x4828) x4829)
+(or (not x4828) x4827 x420 x229)
+(or (not x4828) (not x420) (not x229) x4827)
+(or (not x4827) (not x229) x420)
+(or (not x4827) (not x420) x229)
+(or (not x4827) x4828)
+(or (not x4826) (not x393) (not x204))
+(or (not x393) (not x204) x4825)
+(or (not x4826) (not x393) (not x203) x95)
+(or (not x393) (not x203) (not x95) x4826)
+(or (not x4825) (not x393) (not x203))
+(or (not x4826) (not x393) (not x200) x94)
+(or (not x393) (not x200) (not x94) x4826)
+(or (not x4825) (not x393) (not x200))
+(or (not x4826) (not x393) (not x197) x92)
+(or (not x393) (not x197) (not x92) x4826)
+(or (not x4825) (not x393) (not x197))
+(or (not x4826) (not x393) (not x194) x91)
+(or (not x393) (not x194) (not x91) x4826)
+(or (not x4825) (not x393) (not x194))
+(or (not x4826) (not x392) (not x204) x89)
+(or (not x392) (not x204) (not x89) x4826)
+(or (not x4825) (not x392) (not x204))
+(or (not x4826) (not x392) (not x203))
+(or (not x392) (not x203) x4825)
+(or (not x4826) (not x392) (not x200) x88)
+(or (not x392) (not x200) (not x88) x4826)
+(or (not x4825) (not x392) (not x200))
+(or (not x4826) (not x392) (not x197) x87)
+(or (not x392) (not x197) (not x87) x4826)
+(or (not x4825) (not x392) (not x197))
+(or (not x4826) (not x392) (not x194) x86)
+(or (not x392) (not x194) (not x86) x4826)
+(or (not x4825) (not x392) (not x194))
+(or (not x4826) (not x390) (not x204) x82)
+(or (not x390) (not x204) (not x82) x4826)
+(or (not x4825) (not x390) (not x204))
+(or (not x4826) (not x390) (not x203) x81)
+(or (not x390) (not x203) (not x81) x4826)
+(or (not x4825) (not x390) (not x203))
+(or (not x4826) (not x390) (not x200))
+(or (not x390) (not x200) x4825)
+(or (not x4826) (not x390) (not x197) x79)
+(or (not x390) (not x197) (not x79) x4826)
+(or (not x4825) (not x390) (not x197))
+(or (not x4826) (not x390) (not x194) x77)
+(or (not x390) (not x194) (not x77) x4826)
+(or (not x4825) (not x390) (not x194))
+(or (not x4826) (not x387) (not x204) x73)
+(or (not x387) (not x204) (not x73) x4826)
+(or (not x4825) (not x387) (not x204))
+(or (not x4826) (not x387) (not x203) x67)
+(or (not x387) (not x203) (not x67) x4826)
+(or (not x4825) (not x387) (not x203))
+(or (not x4826) (not x387) (not x200) x66)
+(or (not x387) (not x200) (not x66) x4826)
+(or (not x4825) (not x387) (not x200))
+(or (not x4826) (not x387) (not x197))
+(or (not x387) (not x197) x4825)
+(or (not x4826) (not x387) (not x194) x65)
+(or (not x387) (not x194) (not x65) x4826)
+(or (not x4825) (not x387) (not x194))
+(or (not x4826) (not x384) (not x204) x58)
+(or (not x384) (not x204) (not x58) x4826)
+(or (not x4825) (not x384) (not x204))
+(or (not x4826) (not x384) (not x203) x57)
+(or (not x384) (not x203) (not x57) x4826)
+(or (not x4825) (not x384) (not x203))
+(or (not x4826) (not x384) (not x200) x56)
+(or (not x384) (not x200) (not x56) x4826)
+(or (not x4825) (not x384) (not x200))
+(or (not x4826) (not x384) (not x197) x55)
+(or (not x384) (not x197) (not x55) x4826)
+(or (not x4825) (not x384) (not x197))
+(or (not x4826) (not x384) (not x194))
+(or (not x384) (not x194) x4825)
+(or (not x896) (not x4821) (not x4813) x4824 x4823)
+(or (not x896) (not x4813) x4822 x4821)
+(or (not x896) x4814 x4813)
+(or (not x4823) (not x4821) (not x4813) x896)
+(or (not x4824) (not x4821) (not x4813) x896)
+(or (not x4822) (not x4813) x896)
+(or (not x4814) x896)
+(or (not x4824) (not x4823))
+(or (not x2) x4824 x172 x37)
+(or (not x4824) (not x2) (not x37) x172)
+(or (not x4824) (not x172) x2 x37)
+(or (not x172) (not x37) x4824 x2)
+(or (not x26) x4824 x170 x37)
+(or (not x4824) (not x26) (not x37) x170)
+(or (not x4824) (not x170) x26 x37)
+(or (not x170) (not x37) x4824 x26)
+(or (not x19) x4824 x168 x37)
+(or (not x4824) (not x19) (not x37) x168)
+(or (not x4824) (not x168) x19 x37)
+(or (not x168) (not x37) x4824 x19)
+(or (not x12) x4824 x165 x37)
+(or (not x4824) (not x12) (not x37) x165)
+(or (not x4824) (not x165) x12 x37)
+(or (not x165) (not x37) x4824 x12)
+(or (not x5) x4824 x163 x37)
+(or (not x4824) (not x5) (not x37) x163)
+(or (not x4824) (not x163) x5 x37)
+(or (not x163) (not x37) x4824 x5)
+(or (not x26) (not x170) x4823 x2 x172)
+(or (not x19) (not x168) x4823 x26 x170)
+(or (not x12) (not x165) x4823 x19 x168)
+(or (not x5) (not x163) x4823 x12 x165)
+(or x4823 x5 x163)
+(or (not x2) (not x172) x4823)
+(or (not x4823) (not x172) x2)
+(or (not x4823) (not x2) x172)
+(or (not x4823) (not x170) x26)
+(or (not x4823) (not x26) x170)
+(or (not x4823) (not x168) x19)
+(or (not x4823) (not x19) x168)
+(or (not x4823) (not x165) x12)
+(or (not x4823) (not x12) x165)
+(or (not x4823) (not x163) x5)
+(or (not x4823) (not x5) x163)
+(or (not x52) x4822 x4820 x144)
+(or (not x4822) (not x144) (not x52) x4820)
+(or (not x4822) x4820 x144 x52)
+(or (not x144) x4822 x4820 x52)
+(or (not x4820) (not x50) x4822 x4819 x140)
+(or (not x4822) (not x4820) (not x140) (not x50) x4819)
+(or (not x4822) (not x4820) x4819 x140 x50)
+(or (not x4820) (not x140) x4822 x4819 x50)
+(or (not x4819) (not x48) x4822 x4818 x134)
+(or (not x4822) (not x4819) (not x134) (not x48) x4818)
+(or (not x4822) (not x4819) x4818 x134 x48)
+(or (not x4819) (not x134) x4822 x4818 x48)
+(or (not x4818) (not x46) x4822 x4817 x128)
+(or (not x4822) (not x4818) (not x128) (not x46) x4817)
+(or (not x4822) (not x4818) x4817 x128 x46)
+(or (not x4818) (not x128) x4822 x4817 x46)
+(or (not x4817) (not x44) x4822 x4816 x124)
+(or (not x4822) (not x4817) (not x124) (not x44) x4816)
+(or (not x4822) (not x4817) x4816 x124 x44)
+(or (not x4817) (not x124) x4822 x4816 x44)
+(or (not x4816) (not x149) x4822 x4815 x119)
+(or (not x4822) (not x4816) (not x119) (not x149) x4815)
+(or (not x4822) (not x4816) x4815 x119 x149)
+(or (not x4816) (not x119) x4822 x4815 x149)
+(or (not x4822) (not x4821))
+(or (not x4815) x4821)
+(or (not x4821) x4815)
+(or x4820 x439 x144)
+(or (not x439) (not x144) x4820)
+(or (not x4820) (not x144) x439)
+(or (not x4820) (not x439) x144)
+(or (not x4820) x4819 x434 x140)
+(or (not x4820) (not x434) (not x140) x4819)
+(or (not x4819) (not x140) x434)
+(or (not x4819) (not x434) x140)
+(or (not x4819) x4820)
+(or (not x4819) x4818 x432 x134)
+(or (not x4819) (not x432) (not x134) x4818)
+(or (not x4818) (not x134) x432)
+(or (not x4818) (not x432) x134)
+(or (not x4818) x4819)
+(or (not x4818) x4817 x429 x128)
+(or (not x4818) (not x429) (not x128) x4817)
+(or (not x4817) (not x128) x429)
+(or (not x4817) (not x429) x128)
+(or (not x4817) x4818)
+(or (not x4817) x4816 x424 x124)
+(or (not x4817) (not x424) (not x124) x4816)
+(or (not x4816) (not x124) x424)
+(or (not x4816) (not x424) x124)
+(or (not x4816) x4817)
+(or (not x4816) x4815 x420 x119)
+(or (not x4816) (not x420) (not x119) x4815)
+(or (not x4815) (not x119) x420)
+(or (not x4815) (not x420) x119)
+(or (not x4815) x4816)
+(or (not x4814) (not x393) (not x83))
+(or (not x393) (not x83) x4813)
+(or (not x4814) (not x393) (not x80) x95)
+(or (not x393) (not x80) (not x95) x4814)
+(or (not x4813) (not x393) (not x80))
+(or (not x4814) (not x393) (not x78) x94)
+(or (not x393) (not x78) (not x94) x4814)
+(or (not x4813) (not x393) (not x78))
+(or (not x4814) (not x393) (not x75) x92)
+(or (not x393) (not x75) (not x92) x4814)
+(or (not x4813) (not x393) (not x75))
+(or (not x4814) (not x393) (not x71) x91)
+(or (not x393) (not x71) (not x91) x4814)
+(or (not x4813) (not x393) (not x71))
+(or (not x4814) (not x392) (not x83) x89)
+(or (not x392) (not x83) (not x89) x4814)
+(or (not x4813) (not x392) (not x83))
+(or (not x4814) (not x392) (not x80))
+(or (not x392) (not x80) x4813)
+(or (not x4814) (not x392) (not x78) x88)
+(or (not x392) (not x78) (not x88) x4814)
+(or (not x4813) (not x392) (not x78))
+(or (not x4814) (not x392) (not x75) x87)
+(or (not x392) (not x75) (not x87) x4814)
+(or (not x4813) (not x392) (not x75))
+(or (not x4814) (not x392) (not x71) x86)
+(or (not x392) (not x71) (not x86) x4814)
+(or (not x4813) (not x392) (not x71))
+(or (not x4814) (not x390) (not x83) x82)
+(or (not x390) (not x83) (not x82) x4814)
+(or (not x4813) (not x390) (not x83))
+(or (not x4814) (not x390) (not x80) x81)
+(or (not x390) (not x80) (not x81) x4814)
+(or (not x4813) (not x390) (not x80))
+(or (not x4814) (not x390) (not x78))
+(or (not x390) (not x78) x4813)
+(or (not x4814) (not x390) (not x75) x79)
+(or (not x390) (not x75) (not x79) x4814)
+(or (not x4813) (not x390) (not x75))
+(or (not x4814) (not x390) (not x71) x77)
+(or (not x390) (not x71) (not x77) x4814)
+(or (not x4813) (not x390) (not x71))
+(or (not x4814) (not x387) (not x83) x73)
+(or (not x387) (not x83) (not x73) x4814)
+(or (not x4813) (not x387) (not x83))
+(or (not x4814) (not x387) (not x80) x67)
+(or (not x387) (not x80) (not x67) x4814)
+(or (not x4813) (not x387) (not x80))
+(or (not x4814) (not x387) (not x78) x66)
+(or (not x387) (not x78) (not x66) x4814)
+(or (not x4813) (not x387) (not x78))
+(or (not x4814) (not x387) (not x75))
+(or (not x387) (not x75) x4813)
+(or (not x4814) (not x387) (not x71) x65)
+(or (not x387) (not x71) (not x65) x4814)
+(or (not x4813) (not x387) (not x71))
+(or (not x4814) (not x384) (not x83) x58)
+(or (not x384) (not x83) (not x58) x4814)
+(or (not x4813) (not x384) (not x83))
+(or (not x4814) (not x384) (not x80) x57)
+(or (not x384) (not x80) (not x57) x4814)
+(or (not x4813) (not x384) (not x80))
+(or (not x4814) (not x384) (not x78) x56)
+(or (not x384) (not x78) (not x56) x4814)
+(or (not x4813) (not x384) (not x78))
+(or (not x4814) (not x384) (not x75) x55)
+(or (not x384) (not x75) (not x55) x4814)
+(or (not x4813) (not x384) (not x75))
+(or (not x4814) (not x384) (not x71))
+(or (not x384) (not x71) x4813)
+(or (not x2297) (not x69) (not x6) x894)
+(or (not x894) (not x4809) (not x4801) x4812 x4811)
+(or (not x894) (not x4801) x4810 x4809)
+(or (not x894) x4802 x4801)
+(or (not x4811) (not x4809) (not x4801) x894)
+(or (not x4812) (not x4809) (not x4801) x894)
+(or (not x4810) (not x4801) x894)
+(or (not x4802) x894)
+(or (not x4812) (not x4811))
+(or (not x366) x4812 x1 x2264)
+(or (not x4812) (not x366) (not x2264) x1)
+(or (not x4812) (not x1) x366 x2264)
+(or (not x1) (not x2264) x4812 x366)
+(or (not x363) x4812 x25 x2264)
+(or (not x4812) (not x363) (not x2264) x25)
+(or (not x4812) (not x25) x363 x2264)
+(or (not x25) (not x2264) x4812 x363)
+(or (not x362) x4812 x18 x2264)
+(or (not x4812) (not x362) (not x2264) x18)
+(or (not x4812) (not x18) x362 x2264)
+(or (not x18) (not x2264) x4812 x362)
+(or (not x361) x4812 x11 x2264)
+(or (not x4812) (not x361) (not x2264) x11)
+(or (not x4812) (not x11) x361 x2264)
+(or (not x11) (not x2264) x4812 x361)
+(or (not x360) x4812 x4 x2264)
+(or (not x4812) (not x360) (not x2264) x4)
+(or (not x4812) (not x4) x360 x2264)
+(or (not x4) (not x2264) x4812 x360)
+(or (not x25) (not x363) x4811 x1 x366)
+(or (not x18) (not x362) x4811 x25 x363)
+(or (not x11) (not x361) x4811 x18 x362)
+(or (not x4) (not x360) x4811 x11 x361)
+(or x4811 x4 x360)
+(or (not x1) (not x366) x4811)
+(or (not x4811) (not x1) x366)
+(or (not x4811) (not x366) x1)
+(or (not x4811) (not x25) x363)
+(or (not x4811) (not x363) x25)
+(or (not x4811) (not x18) x362)
+(or (not x4811) (not x362) x18)
+(or (not x4811) (not x11) x361)
+(or (not x4811) (not x361) x11)
+(or (not x4811) (not x4) x360)
+(or (not x4811) (not x360) x4)
+(or (not x52) x4810 x4808 x530)
+(or (not x4810) (not x530) (not x52) x4808)
+(or (not x4810) x4808 x530 x52)
+(or (not x530) x4810 x4808 x52)
+(or (not x4808) (not x50) x4810 x4807 x527)
+(or (not x4810) (not x4808) (not x527) (not x50) x4807)
+(or (not x4810) (not x4808) x4807 x527 x50)
+(or (not x4808) (not x527) x4810 x4807 x50)
+(or (not x4807) (not x48) x4810 x4806 x523)
+(or (not x4810) (not x4807) (not x523) (not x48) x4806)
+(or (not x4810) (not x4807) x4806 x523 x48)
+(or (not x4807) (not x523) x4810 x4806 x48)
+(or (not x4806) (not x46) x4810 x4805 x519)
+(or (not x4810) (not x4806) (not x519) (not x46) x4805)
+(or (not x4810) (not x4806) x4805 x519 x46)
+(or (not x4806) (not x519) x4810 x4805 x46)
+(or (not x4805) (not x44) x4810 x4804 x514)
+(or (not x4810) (not x4805) (not x514) (not x44) x4804)
+(or (not x4810) (not x4805) x4804 x514 x44)
+(or (not x4805) (not x514) x4810 x4804 x44)
+(or (not x4804) (not x149) x4810 x4803 x511)
+(or (not x4810) (not x4804) (not x511) (not x149) x4803)
+(or (not x4810) (not x4804) x4803 x511 x149)
+(or (not x4804) (not x511) x4810 x4803 x149)
+(or (not x4810) (not x4809))
+(or (not x4803) x4809)
+(or (not x4809) x4803)
+(or x4808 x530 x343)
+(or (not x530) (not x343) x4808)
+(or (not x4808) (not x530) x343)
+(or (not x4808) (not x343) x530)
+(or (not x4808) x4807 x527 x341)
+(or (not x4808) (not x527) (not x341) x4807)
+(or (not x4807) (not x527) x341)
+(or (not x4807) (not x341) x527)
+(or (not x4807) x4808)
+(or (not x4807) x4806 x523 x337)
+(or (not x4807) (not x523) (not x337) x4806)
+(or (not x4806) (not x523) x337)
+(or (not x4806) (not x337) x523)
+(or (not x4806) x4807)
+(or (not x4806) x4805 x519 x331)
+(or (not x4806) (not x519) (not x331) x4805)
+(or (not x4805) (not x519) x331)
+(or (not x4805) (not x331) x519)
+(or (not x4805) x4806)
+(or (not x4805) x4804 x514 x329)
+(or (not x4805) (not x514) (not x329) x4804)
+(or (not x4804) (not x514) x329)
+(or (not x4804) (not x329) x514)
+(or (not x4804) x4805)
+(or (not x4804) x4803 x511 x326)
+(or (not x4804) (not x511) (not x326) x4803)
+(or (not x4803) (not x511) x326)
+(or (not x4803) (not x326) x511)
+(or (not x4803) x4804)
+(or (not x4802) (not x483) (not x299))
+(or (not x483) (not x299) x4801)
+(or (not x4802) (not x481) (not x299) x95)
+(or (not x481) (not x299) (not x95) x4802)
+(or (not x4801) (not x481) (not x299))
+(or (not x4802) (not x478) (not x299) x94)
+(or (not x478) (not x299) (not x94) x4802)
+(or (not x4801) (not x478) (not x299))
+(or (not x4802) (not x476) (not x299) x92)
+(or (not x476) (not x299) (not x92) x4802)
+(or (not x4801) (not x476) (not x299))
+(or (not x4802) (not x473) (not x299) x91)
+(or (not x473) (not x299) (not x91) x4802)
+(or (not x4801) (not x473) (not x299))
+(or (not x4802) (not x483) (not x296) x89)
+(or (not x483) (not x296) (not x89) x4802)
+(or (not x4801) (not x483) (not x296))
+(or (not x4802) (not x481) (not x296))
+(or (not x481) (not x296) x4801)
+(or (not x4802) (not x478) (not x296) x88)
+(or (not x478) (not x296) (not x88) x4802)
+(or (not x4801) (not x478) (not x296))
+(or (not x4802) (not x476) (not x296) x87)
+(or (not x476) (not x296) (not x87) x4802)
+(or (not x4801) (not x476) (not x296))
+(or (not x4802) (not x473) (not x296) x86)
+(or (not x473) (not x296) (not x86) x4802)
+(or (not x4801) (not x473) (not x296))
+(or (not x4802) (not x483) (not x293) x82)
+(or (not x483) (not x293) (not x82) x4802)
+(or (not x4801) (not x483) (not x293))
+(or (not x4802) (not x481) (not x293) x81)
+(or (not x481) (not x293) (not x81) x4802)
+(or (not x4801) (not x481) (not x293))
+(or (not x4802) (not x478) (not x293))
+(or (not x478) (not x293) x4801)
+(or (not x4802) (not x476) (not x293) x79)
+(or (not x476) (not x293) (not x79) x4802)
+(or (not x4801) (not x476) (not x293))
+(or (not x4802) (not x473) (not x293) x77)
+(or (not x473) (not x293) (not x77) x4802)
+(or (not x4801) (not x473) (not x293))
+(or (not x4802) (not x483) (not x291) x73)
+(or (not x483) (not x291) (not x73) x4802)
+(or (not x4801) (not x483) (not x291))
+(or (not x4802) (not x481) (not x291) x67)
+(or (not x481) (not x291) (not x67) x4802)
+(or (not x4801) (not x481) (not x291))
+(or (not x4802) (not x478) (not x291) x66)
+(or (not x478) (not x291) (not x66) x4802)
+(or (not x4801) (not x478) (not x291))
+(or (not x4802) (not x476) (not x291))
+(or (not x476) (not x291) x4801)
+(or (not x4802) (not x473) (not x291) x65)
+(or (not x473) (not x291) (not x65) x4802)
+(or (not x4801) (not x473) (not x291))
+(or (not x4802) (not x483) (not x288) x58)
+(or (not x483) (not x288) (not x58) x4802)
+(or (not x4801) (not x483) (not x288))
+(or (not x4802) (not x481) (not x288) x57)
+(or (not x481) (not x288) (not x57) x4802)
+(or (not x4801) (not x481) (not x288))
+(or (not x4802) (not x478) (not x288) x56)
+(or (not x478) (not x288) (not x56) x4802)
+(or (not x4801) (not x478) (not x288))
+(or (not x4802) (not x476) (not x288) x55)
+(or (not x476) (not x288) (not x55) x4802)
+(or (not x4801) (not x476) (not x288))
+(or (not x4802) (not x473) (not x288))
+(or (not x473) (not x288) x4801)
+(or (not x2297) (not x69) (not x7) x893)
+(or (not x893) (not x4797) (not x4789) x4800 x4799)
+(or (not x893) (not x4789) x4798 x4797)
+(or (not x893) x4790 x4789)
+(or (not x4799) (not x4797) (not x4789) x893)
+(or (not x4800) (not x4797) (not x4789) x893)
+(or (not x4798) (not x4789) x893)
+(or (not x4790) x893)
+(or (not x4800) (not x4799))
+(or (not x366) x4800 x171 x2264)
+(or (not x4800) (not x366) (not x2264) x171)
+(or (not x4800) (not x171) x366 x2264)
+(or (not x171) (not x2264) x4800 x366)
+(or (not x363) x4800 x169 x2264)
+(or (not x4800) (not x363) (not x2264) x169)
+(or (not x4800) (not x169) x363 x2264)
+(or (not x169) (not x2264) x4800 x363)
+(or (not x362) x4800 x167 x2264)
+(or (not x4800) (not x362) (not x2264) x167)
+(or (not x4800) (not x167) x362 x2264)
+(or (not x167) (not x2264) x4800 x362)
+(or (not x361) x4800 x164 x2264)
+(or (not x4800) (not x361) (not x2264) x164)
+(or (not x4800) (not x164) x361 x2264)
+(or (not x164) (not x2264) x4800 x361)
+(or (not x360) x4800 x162 x2264)
+(or (not x4800) (not x360) (not x2264) x162)
+(or (not x4800) (not x162) x360 x2264)
+(or (not x162) (not x2264) x4800 x360)
+(or (not x169) (not x363) x4799 x171 x366)
+(or (not x167) (not x362) x4799 x169 x363)
+(or (not x164) (not x361) x4799 x167 x362)
+(or (not x162) (not x360) x4799 x164 x361)
+(or x4799 x162 x360)
+(or (not x171) (not x366) x4799)
+(or (not x4799) (not x171) x366)
+(or (not x4799) (not x366) x171)
+(or (not x4799) (not x169) x363)
+(or (not x4799) (not x363) x169)
+(or (not x4799) (not x167) x362)
+(or (not x4799) (not x362) x167)
+(or (not x4799) (not x164) x361)
+(or (not x4799) (not x361) x164)
+(or (not x4799) (not x162) x360)
+(or (not x4799) (not x360) x162)
+(or (not x52) x4798 x4796 x143)
+(or (not x4798) (not x143) (not x52) x4796)
+(or (not x4798) x4796 x143 x52)
+(or (not x143) x4798 x4796 x52)
+(or (not x4796) (not x50) x4798 x4795 x139)
+(or (not x4798) (not x4796) (not x139) (not x50) x4795)
+(or (not x4798) (not x4796) x4795 x139 x50)
+(or (not x4796) (not x139) x4798 x4795 x50)
+(or (not x4795) (not x48) x4798 x4794 x133)
+(or (not x4798) (not x4795) (not x133) (not x48) x4794)
+(or (not x4798) (not x4795) x4794 x133 x48)
+(or (not x4795) (not x133) x4798 x4794 x48)
+(or (not x4794) (not x46) x4798 x4793 x127)
+(or (not x4798) (not x4794) (not x127) (not x46) x4793)
+(or (not x4798) (not x4794) x4793 x127 x46)
+(or (not x4794) (not x127) x4798 x4793 x46)
+(or (not x4793) (not x44) x4798 x4792 x123)
+(or (not x4798) (not x4793) (not x123) (not x44) x4792)
+(or (not x4798) (not x4793) x4792 x123 x44)
+(or (not x4793) (not x123) x4798 x4792 x44)
+(or (not x4792) (not x149) x4798 x4791 x118)
+(or (not x4798) (not x4792) (not x118) (not x149) x4791)
+(or (not x4798) (not x4792) x4791 x118 x149)
+(or (not x4792) (not x118) x4798 x4791 x149)
+(or (not x4798) (not x4797))
+(or (not x4791) x4797)
+(or (not x4797) x4791)
+(or x4796 x143 x343)
+(or (not x143) (not x343) x4796)
+(or (not x4796) (not x143) x343)
+(or (not x4796) (not x343) x143)
+(or (not x4796) x4795 x139 x341)
+(or (not x4796) (not x139) (not x341) x4795)
+(or (not x4795) (not x139) x341)
+(or (not x4795) (not x341) x139)
+(or (not x4795) x4796)
+(or (not x4795) x4794 x133 x337)
+(or (not x4795) (not x133) (not x337) x4794)
+(or (not x4794) (not x133) x337)
+(or (not x4794) (not x337) x133)
+(or (not x4794) x4795)
+(or (not x4794) x4793 x127 x331)
+(or (not x4794) (not x127) (not x331) x4793)
+(or (not x4793) (not x127) x331)
+(or (not x4793) (not x331) x127)
+(or (not x4793) x4794)
+(or (not x4793) x4792 x123 x329)
+(or (not x4793) (not x123) (not x329) x4792)
+(or (not x4792) (not x123) x329)
+(or (not x4792) (not x329) x123)
+(or (not x4792) x4793)
+(or (not x4792) x4791 x118 x326)
+(or (not x4792) (not x118) (not x326) x4791)
+(or (not x4791) (not x118) x326)
+(or (not x4791) (not x326) x118)
+(or (not x4791) x4792)
+(or (not x4790) (not x107) (not x299))
+(or (not x107) (not x299) x4789)
+(or (not x4790) (not x101) (not x299) x95)
+(or (not x101) (not x299) (not x95) x4790)
+(or (not x4789) (not x101) (not x299))
+(or (not x4790) (not x93) (not x299) x94)
+(or (not x93) (not x299) (not x94) x4790)
+(or (not x4789) (not x93) (not x299))
+(or (not x4790) (not x85) (not x299) x92)
+(or (not x85) (not x299) (not x92) x4790)
+(or (not x4789) (not x85) (not x299))
+(or (not x4790) (not x70) (not x299) x91)
+(or (not x70) (not x299) (not x91) x4790)
+(or (not x4789) (not x70) (not x299))
+(or (not x4790) (not x107) (not x296) x89)
+(or (not x107) (not x296) (not x89) x4790)
+(or (not x4789) (not x107) (not x296))
+(or (not x4790) (not x101) (not x296))
+(or (not x101) (not x296) x4789)
+(or (not x4790) (not x93) (not x296) x88)
+(or (not x93) (not x296) (not x88) x4790)
+(or (not x4789) (not x93) (not x296))
+(or (not x4790) (not x85) (not x296) x87)
+(or (not x85) (not x296) (not x87) x4790)
+(or (not x4789) (not x85) (not x296))
+(or (not x4790) (not x70) (not x296) x86)
+(or (not x70) (not x296) (not x86) x4790)
+(or (not x4789) (not x70) (not x296))
+(or (not x4790) (not x107) (not x293) x82)
+(or (not x107) (not x293) (not x82) x4790)
+(or (not x4789) (not x107) (not x293))
+(or (not x4790) (not x101) (not x293) x81)
+(or (not x101) (not x293) (not x81) x4790)
+(or (not x4789) (not x101) (not x293))
+(or (not x4790) (not x93) (not x293))
+(or (not x93) (not x293) x4789)
+(or (not x4790) (not x85) (not x293) x79)
+(or (not x85) (not x293) (not x79) x4790)
+(or (not x4789) (not x85) (not x293))
+(or (not x4790) (not x70) (not x293) x77)
+(or (not x70) (not x293) (not x77) x4790)
+(or (not x4789) (not x70) (not x293))
+(or (not x4790) (not x107) (not x291) x73)
+(or (not x107) (not x291) (not x73) x4790)
+(or (not x4789) (not x107) (not x291))
+(or (not x4790) (not x101) (not x291) x67)
+(or (not x101) (not x291) (not x67) x4790)
+(or (not x4789) (not x101) (not x291))
+(or (not x4790) (not x93) (not x291) x66)
+(or (not x93) (not x291) (not x66) x4790)
+(or (not x4789) (not x93) (not x291))
+(or (not x4790) (not x85) (not x291))
+(or (not x85) (not x291) x4789)
+(or (not x4790) (not x70) (not x291) x65)
+(or (not x70) (not x291) (not x65) x4790)
+(or (not x4789) (not x70) (not x291))
+(or (not x4790) (not x107) (not x288) x58)
+(or (not x107) (not x288) (not x58) x4790)
+(or (not x4789) (not x107) (not x288))
+(or (not x4790) (not x101) (not x288) x57)
+(or (not x101) (not x288) (not x57) x4790)
+(or (not x4789) (not x101) (not x288))
+(or (not x4790) (not x93) (not x288) x56)
+(or (not x93) (not x288) (not x56) x4790)
+(or (not x4789) (not x93) (not x288))
+(or (not x4790) (not x85) (not x288) x55)
+(or (not x85) (not x288) (not x55) x4790)
+(or (not x4789) (not x85) (not x288))
+(or (not x4790) (not x70) (not x288))
+(or (not x70) (not x288) x4789)
+(or (not x2297) (not x69) (not x8) x891)
+(or (not x891) (not x4785) (not x4777) x4788 x4787)
+(or (not x891) (not x4777) x4786 x4785)
+(or (not x891) x4778 x4777)
+(or (not x4787) (not x4785) (not x4777) x891)
+(or (not x4788) (not x4785) (not x4777) x891)
+(or (not x4786) (not x4777) x891)
+(or (not x4778) x891)
+(or (not x4788) (not x4787))
+(or (not x366) x4788 x2 x2264)
+(or (not x4788) (not x366) (not x2264) x2)
+(or (not x4788) (not x2) x366 x2264)
+(or (not x2) (not x2264) x4788 x366)
+(or (not x363) x4788 x26 x2264)
+(or (not x4788) (not x363) (not x2264) x26)
+(or (not x4788) (not x26) x363 x2264)
+(or (not x26) (not x2264) x4788 x363)
+(or (not x362) x4788 x19 x2264)
+(or (not x4788) (not x362) (not x2264) x19)
+(or (not x4788) (not x19) x362 x2264)
+(or (not x19) (not x2264) x4788 x362)
+(or (not x361) x4788 x12 x2264)
+(or (not x4788) (not x361) (not x2264) x12)
+(or (not x4788) (not x12) x361 x2264)
+(or (not x12) (not x2264) x4788 x361)
+(or (not x360) x4788 x5 x2264)
+(or (not x4788) (not x360) (not x2264) x5)
+(or (not x4788) (not x5) x360 x2264)
+(or (not x5) (not x2264) x4788 x360)
+(or (not x26) (not x363) x4787 x2 x366)
+(or (not x19) (not x362) x4787 x26 x363)
+(or (not x12) (not x361) x4787 x19 x362)
+(or (not x5) (not x360) x4787 x12 x361)
+(or x4787 x5 x360)
+(or (not x2) (not x366) x4787)
+(or (not x4787) (not x2) x366)
+(or (not x4787) (not x366) x2)
+(or (not x4787) (not x26) x363)
+(or (not x4787) (not x363) x26)
+(or (not x4787) (not x19) x362)
+(or (not x4787) (not x362) x19)
+(or (not x4787) (not x12) x361)
+(or (not x4787) (not x361) x12)
+(or (not x4787) (not x5) x360)
+(or (not x4787) (not x360) x5)
+(or (not x52) x4786 x4784 x439)
+(or (not x4786) (not x439) (not x52) x4784)
+(or (not x4786) x4784 x439 x52)
+(or (not x439) x4786 x4784 x52)
+(or (not x4784) (not x50) x4786 x4783 x434)
+(or (not x4786) (not x4784) (not x434) (not x50) x4783)
+(or (not x4786) (not x4784) x4783 x434 x50)
+(or (not x4784) (not x434) x4786 x4783 x50)
+(or (not x4783) (not x48) x4786 x4782 x432)
+(or (not x4786) (not x4783) (not x432) (not x48) x4782)
+(or (not x4786) (not x4783) x4782 x432 x48)
+(or (not x4783) (not x432) x4786 x4782 x48)
+(or (not x4782) (not x46) x4786 x4781 x429)
+(or (not x4786) (not x4782) (not x429) (not x46) x4781)
+(or (not x4786) (not x4782) x4781 x429 x46)
+(or (not x4782) (not x429) x4786 x4781 x46)
+(or (not x4781) (not x44) x4786 x4780 x424)
+(or (not x4786) (not x4781) (not x424) (not x44) x4780)
+(or (not x4786) (not x4781) x4780 x424 x44)
+(or (not x4781) (not x424) x4786 x4780 x44)
+(or (not x4780) (not x149) x4786 x4779 x420)
+(or (not x4786) (not x4780) (not x420) (not x149) x4779)
+(or (not x4786) (not x4780) x4779 x420 x149)
+(or (not x4780) (not x420) x4786 x4779 x149)
+(or (not x4786) (not x4785))
+(or (not x4779) x4785)
+(or (not x4785) x4779)
+(or x4784 x439 x343)
+(or (not x439) (not x343) x4784)
+(or (not x4784) (not x439) x343)
+(or (not x4784) (not x343) x439)
+(or (not x4784) x4783 x434 x341)
+(or (not x4784) (not x434) (not x341) x4783)
+(or (not x4783) (not x434) x341)
+(or (not x4783) (not x341) x434)
+(or (not x4783) x4784)
+(or (not x4783) x4782 x432 x337)
+(or (not x4783) (not x432) (not x337) x4782)
+(or (not x4782) (not x432) x337)
+(or (not x4782) (not x337) x432)
+(or (not x4782) x4783)
+(or (not x4782) x4781 x429 x331)
+(or (not x4782) (not x429) (not x331) x4781)
+(or (not x4781) (not x429) x331)
+(or (not x4781) (not x331) x429)
+(or (not x4781) x4782)
+(or (not x4781) x4780 x424 x329)
+(or (not x4781) (not x424) (not x329) x4780)
+(or (not x4780) (not x424) x329)
+(or (not x4780) (not x329) x424)
+(or (not x4780) x4781)
+(or (not x4780) x4779 x420 x326)
+(or (not x4780) (not x420) (not x326) x4779)
+(or (not x4779) (not x420) x326)
+(or (not x4779) (not x326) x420)
+(or (not x4779) x4780)
+(or (not x4778) (not x393) (not x299))
+(or (not x393) (not x299) x4777)
+(or (not x4778) (not x392) (not x299) x95)
+(or (not x392) (not x299) (not x95) x4778)
+(or (not x4777) (not x392) (not x299))
+(or (not x4778) (not x390) (not x299) x94)
+(or (not x390) (not x299) (not x94) x4778)
+(or (not x4777) (not x390) (not x299))
+(or (not x4778) (not x387) (not x299) x92)
+(or (not x387) (not x299) (not x92) x4778)
+(or (not x4777) (not x387) (not x299))
+(or (not x4778) (not x384) (not x299) x91)
+(or (not x384) (not x299) (not x91) x4778)
+(or (not x4777) (not x384) (not x299))
+(or (not x4778) (not x393) (not x296) x89)
+(or (not x393) (not x296) (not x89) x4778)
+(or (not x4777) (not x393) (not x296))
+(or (not x4778) (not x392) (not x296))
+(or (not x392) (not x296) x4777)
+(or (not x4778) (not x390) (not x296) x88)
+(or (not x390) (not x296) (not x88) x4778)
+(or (not x4777) (not x390) (not x296))
+(or (not x4778) (not x387) (not x296) x87)
+(or (not x387) (not x296) (not x87) x4778)
+(or (not x4777) (not x387) (not x296))
+(or (not x4778) (not x384) (not x296) x86)
+(or (not x384) (not x296) (not x86) x4778)
+(or (not x4777) (not x384) (not x296))
+(or (not x4778) (not x393) (not x293) x82)
+(or (not x393) (not x293) (not x82) x4778)
+(or (not x4777) (not x393) (not x293))
+(or (not x4778) (not x392) (not x293) x81)
+(or (not x392) (not x293) (not x81) x4778)
+(or (not x4777) (not x392) (not x293))
+(or (not x4778) (not x390) (not x293))
+(or (not x390) (not x293) x4777)
+(or (not x4778) (not x387) (not x293) x79)
+(or (not x387) (not x293) (not x79) x4778)
+(or (not x4777) (not x387) (not x293))
+(or (not x4778) (not x384) (not x293) x77)
+(or (not x384) (not x293) (not x77) x4778)
+(or (not x4777) (not x384) (not x293))
+(or (not x4778) (not x393) (not x291) x73)
+(or (not x393) (not x291) (not x73) x4778)
+(or (not x4777) (not x393) (not x291))
+(or (not x4778) (not x392) (not x291) x67)
+(or (not x392) (not x291) (not x67) x4778)
+(or (not x4777) (not x392) (not x291))
+(or (not x4778) (not x390) (not x291) x66)
+(or (not x390) (not x291) (not x66) x4778)
+(or (not x4777) (not x390) (not x291))
+(or (not x4778) (not x387) (not x291))
+(or (not x387) (not x291) x4777)
+(or (not x4778) (not x384) (not x291) x65)
+(or (not x384) (not x291) (not x65) x4778)
+(or (not x4777) (not x384) (not x291))
+(or (not x4778) (not x393) (not x288) x58)
+(or (not x393) (not x288) (not x58) x4778)
+(or (not x4777) (not x393) (not x288))
+(or (not x4778) (not x392) (not x288) x57)
+(or (not x392) (not x288) (not x57) x4778)
+(or (not x4777) (not x392) (not x288))
+(or (not x4778) (not x390) (not x288) x56)
+(or (not x390) (not x288) (not x56) x4778)
+(or (not x4777) (not x390) (not x288))
+(or (not x4778) (not x387) (not x288) x55)
+(or (not x387) (not x288) (not x55) x4778)
+(or (not x4777) (not x387) (not x288))
+(or (not x4778) (not x384) (not x288))
+(or (not x384) (not x288) x4777)
+(or (not x2297) (not x69) (not x10) x925)
+(or (not x925) (not x4773) (not x4765) x4776 x4775)
+(or (not x925) (not x4765) x4774 x4773)
+(or (not x925) x4766 x4765)
+(or (not x4775) (not x4773) (not x4765) x925)
+(or (not x4776) (not x4773) (not x4765) x925)
+(or (not x4774) (not x4765) x925)
+(or (not x4766) x925)
+(or (not x4776) (not x4775))
+(or (not x366) x4776 x272 x2264)
+(or (not x4776) (not x366) (not x2264) x272)
+(or (not x4776) (not x272) x366 x2264)
+(or (not x272) (not x2264) x4776 x366)
+(or (not x363) x4776 x269 x2264)
+(or (not x4776) (not x363) (not x2264) x269)
+(or (not x4776) (not x269) x363 x2264)
+(or (not x269) (not x2264) x4776 x363)
+(or (not x362) x4776 x268 x2264)
+(or (not x4776) (not x362) (not x2264) x268)
+(or (not x4776) (not x268) x362 x2264)
+(or (not x268) (not x2264) x4776 x362)
+(or (not x361) x4776 x265 x2264)
+(or (not x4776) (not x361) (not x2264) x265)
+(or (not x4776) (not x265) x361 x2264)
+(or (not x265) (not x2264) x4776 x361)
+(or (not x360) x4776 x264 x2264)
+(or (not x4776) (not x360) (not x2264) x264)
+(or (not x4776) (not x264) x360 x2264)
+(or (not x264) (not x2264) x4776 x360)
+(or (not x363) (not x269) x4775 x366 x272)
+(or (not x362) (not x268) x4775 x363 x269)
+(or (not x361) (not x265) x4775 x362 x268)
+(or (not x360) (not x264) x4775 x361 x265)
+(or x4775 x360 x264)
+(or (not x366) (not x272) x4775)
+(or (not x4775) (not x272) x366)
+(or (not x4775) (not x366) x272)
+(or (not x4775) (not x269) x363)
+(or (not x4775) (not x363) x269)
+(or (not x4775) (not x268) x362)
+(or (not x4775) (not x362) x268)
+(or (not x4775) (not x265) x361)
+(or (not x4775) (not x361) x265)
+(or (not x4775) (not x264) x360)
+(or (not x4775) (not x360) x264)
+(or (not x52) x4774 x4772 x246)
+(or (not x4774) (not x246) (not x52) x4772)
+(or (not x4774) x4772 x246 x52)
+(or (not x246) x4774 x4772 x52)
+(or (not x4772) (not x50) x4774 x4771 x245)
+(or (not x4774) (not x4772) (not x245) (not x50) x4771)
+(or (not x4774) (not x4772) x4771 x245 x50)
+(or (not x4772) (not x245) x4774 x4771 x50)
+(or (not x4771) (not x48) x4774 x4770 x242)
+(or (not x4774) (not x4771) (not x242) (not x48) x4770)
+(or (not x4774) (not x4771) x4770 x242 x48)
+(or (not x4771) (not x242) x4774 x4770 x48)
+(or (not x4770) (not x46) x4774 x4769 x238)
+(or (not x4774) (not x4770) (not x238) (not x46) x4769)
+(or (not x4774) (not x4770) x4769 x238 x46)
+(or (not x4770) (not x238) x4774 x4769 x46)
+(or (not x4769) (not x44) x4774 x4768 x233)
+(or (not x4774) (not x4769) (not x233) (not x44) x4768)
+(or (not x4774) (not x4769) x4768 x233 x44)
+(or (not x4769) (not x233) x4774 x4768 x44)
+(or (not x4768) (not x149) x4774 x4767 x229)
+(or (not x4774) (not x4768) (not x229) (not x149) x4767)
+(or (not x4774) (not x4768) x4767 x229 x149)
+(or (not x4768) (not x229) x4774 x4767 x149)
+(or (not x4774) (not x4773))
+(or (not x4767) x4773)
+(or (not x4773) x4767)
+(or x4772 x343 x246)
+(or (not x343) (not x246) x4772)
+(or (not x4772) (not x246) x343)
+(or (not x4772) (not x343) x246)
+(or (not x4772) x4771 x341 x245)
+(or (not x4772) (not x341) (not x245) x4771)
+(or (not x4771) (not x245) x341)
+(or (not x4771) (not x341) x245)
+(or (not x4771) x4772)
+(or (not x4771) x4770 x337 x242)
+(or (not x4771) (not x337) (not x242) x4770)
+(or (not x4770) (not x242) x337)
+(or (not x4770) (not x337) x242)
+(or (not x4770) x4771)
+(or (not x4770) x4769 x331 x238)
+(or (not x4770) (not x331) (not x238) x4769)
+(or (not x4769) (not x238) x331)
+(or (not x4769) (not x331) x238)
+(or (not x4769) x4770)
+(or (not x4769) x4768 x329 x233)
+(or (not x4769) (not x329) (not x233) x4768)
+(or (not x4768) (not x233) x329)
+(or (not x4768) (not x329) x233)
+(or (not x4768) x4769)
+(or (not x4768) x4767 x326 x229)
+(or (not x4768) (not x326) (not x229) x4767)
+(or (not x4767) (not x229) x326)
+(or (not x4767) (not x326) x229)
+(or (not x4767) x4768)
+(or (not x4766) (not x299) (not x204))
+(or (not x299) (not x204) x4765)
+(or (not x4766) (not x299) (not x203) x95)
+(or (not x299) (not x203) (not x95) x4766)
+(or (not x4765) (not x299) (not x203))
+(or (not x4766) (not x299) (not x200) x94)
+(or (not x299) (not x200) (not x94) x4766)
+(or (not x4765) (not x299) (not x200))
+(or (not x4766) (not x299) (not x197) x92)
+(or (not x299) (not x197) (not x92) x4766)
+(or (not x4765) (not x299) (not x197))
+(or (not x4766) (not x299) (not x194) x91)
+(or (not x299) (not x194) (not x91) x4766)
+(or (not x4765) (not x299) (not x194))
+(or (not x4766) (not x296) (not x204) x89)
+(or (not x296) (not x204) (not x89) x4766)
+(or (not x4765) (not x296) (not x204))
+(or (not x4766) (not x296) (not x203))
+(or (not x296) (not x203) x4765)
+(or (not x4766) (not x296) (not x200) x88)
+(or (not x296) (not x200) (not x88) x4766)
+(or (not x4765) (not x296) (not x200))
+(or (not x4766) (not x296) (not x197) x87)
+(or (not x296) (not x197) (not x87) x4766)
+(or (not x4765) (not x296) (not x197))
+(or (not x4766) (not x296) (not x194) x86)
+(or (not x296) (not x194) (not x86) x4766)
+(or (not x4765) (not x296) (not x194))
+(or (not x4766) (not x293) (not x204) x82)
+(or (not x293) (not x204) (not x82) x4766)
+(or (not x4765) (not x293) (not x204))
+(or (not x4766) (not x293) (not x203) x81)
+(or (not x293) (not x203) (not x81) x4766)
+(or (not x4765) (not x293) (not x203))
+(or (not x4766) (not x293) (not x200))
+(or (not x293) (not x200) x4765)
+(or (not x4766) (not x293) (not x197) x79)
+(or (not x293) (not x197) (not x79) x4766)
+(or (not x4765) (not x293) (not x197))
+(or (not x4766) (not x293) (not x194) x77)
+(or (not x293) (not x194) (not x77) x4766)
+(or (not x4765) (not x293) (not x194))
+(or (not x4766) (not x291) (not x204) x73)
+(or (not x291) (not x204) (not x73) x4766)
+(or (not x4765) (not x291) (not x204))
+(or (not x4766) (not x291) (not x203) x67)
+(or (not x291) (not x203) (not x67) x4766)
+(or (not x4765) (not x291) (not x203))
+(or (not x4766) (not x291) (not x200) x66)
+(or (not x291) (not x200) (not x66) x4766)
+(or (not x4765) (not x291) (not x200))
+(or (not x4766) (not x291) (not x197))
+(or (not x2212) x2239)
+(or (not x291) (not x197) x4765)
+(or (not x2239) x2212)
+(or (not x4766) (not x291) (not x194) x65)
+(or (not x2213) x2240)
+(or (not x291) (not x194) (not x65) x4766)
+(or (not x2240) x2213)
+(or (not x4765) (not x291) (not x194))
+(or (not x2214) x2241)
+(or (not x4766) (not x288) (not x204) x58)
+(or (not x2241) x2214)
+(or (not x288) (not x204) (not x58) x4766)
+(or (not x2215) x2242)
+(or (not x4765) (not x288) (not x204))
+(or (not x2242) x2215)
+(or (not x4766) (not x288) (not x203) x57)
+(or (not x2216) x2243)
+(or (not x288) (not x203) (not x57) x4766)
+(or (not x2243) x2216)
+(or (not x4765) (not x288) (not x203))
+(or (not x2239) x2234)
+(or (not x4766) (not x288) (not x200) x56)
+(or (not x2234) x2239)
+(or (not x288) (not x200) (not x56) x4766)
+(or (not x2240) x2235)
+(or (not x4765) (not x288) (not x200))
+(or (not x2235) x2240)
+(or (not x4766) (not x288) (not x197) x55)
+(or (not x2241) x2236)
+(or (not x288) (not x197) (not x55) x4766)
+(or (not x2236) x2241)
+(or (not x4765) (not x288) (not x197))
+(or (not x2242) x2237)
+(or (not x4766) (not x288) (not x194))
+(or (not x2237) x2242)
+(or (not x288) (not x194) x4765)
+(or (not x2243) x2238)
+(or (not x890) (not x4761) (not x4753) x4764 x4763)
+(or (not x2238) x2243)
+(or (not x890) (not x4753) x4762 x4761)
+(or (not x2234) x2228)
+(or (not x890) x4754 x4753)
+(or (not x2228) x2234)
+(or (not x4763) (not x4761) (not x4753) x890)
+(or (not x2235) x2229)
+(or (not x4764) (not x4761) (not x4753) x890)
+(or (not x2229) x2235)
+(or (not x4762) (not x4753) x890)
+(or (not x2236) x2230)
+(or (not x4754) x890)
+(or (not x2230) x2236)
+(or (not x4764) (not x4763))
+(or (not x2237) x2231)
+(or (not x366) x4764 x172 x2264)
+(or (not x2231) x2237)
+(or (not x4764) (not x366) (not x2264) x172)
+(or (not x2238) x2232)
+(or (not x4764) (not x172) x366 x2264)
+(or (not x2232) x2238)
+(or (not x172) (not x2264) x4764 x366)
+(or (not x2228) x2223)
+(or (not x363) x4764 x170 x2264)
+(or (not x2223) x2228)
+(or (not x4764) (not x363) (not x2264) x170)
+(or (not x2229) x2224)
+(or (not x4764) (not x170) x363 x2264)
+(or (not x2224) x2229)
+(or (not x170) (not x2264) x4764 x363)
+(or (not x2230) x2225)
+(or (not x362) x4764 x168 x2264)
+(or (not x2225) x2230)
+(or (not x4764) (not x362) (not x2264) x168)
+(or (not x2231) x2226)
+(or (not x4764) (not x168) x362 x2264)
+(or (not x2226) x2231)
+(or (not x168) (not x2264) x4764 x362)
+(or (not x2232) x2227)
+(or (not x361) x4764 x165 x2264)
+(or (not x2227) x2232)
+(or (not x4764) (not x361) (not x2264) x165)
+(or (not x2223) x2217)
+(or (not x4764) (not x165) x361 x2264)
+(or (not x2217) x2223)
+(or (not x165) (not x2264) x4764 x361)
+(or (not x2224) x2218)
+(or (not x360) x4764 x163 x2264)
+(or (not x2218) x2224)
+(or (not x4764) (not x360) (not x2264) x163)
+(or (not x2225) x2219)
+(or (not x4764) (not x163) x360 x2264)
+(or (not x2219) x2225)
+(or (not x163) (not x2264) x4764 x360)
+(or (not x2226) x2220)
+(or (not x363) (not x170) x4763 x366 x172)
+(or (not x2220) x2226)
+(or (not x362) (not x168) x4763 x363 x170)
+(or (not x2227) x2221)
+(or (not x361) (not x165) x4763 x362 x168)
+(or (not x2221) x2227)
+(or (not x360) (not x163) x4763 x361 x165)
+(or (not x2217) x2212)
+(or x4763 x360 x163)
+(or (not x2212) x2217)
+(or (not x366) (not x172) x4763)
+(or (not x2218) x2213)
+(or (not x4763) (not x172) x366)
+(or (not x2213) x2218)
+(or (not x4763) (not x366) x172)
+(or (not x2219) x2214)
+(or (not x4763) (not x170) x363)
+(or (not x2214) x2219)
+(or (not x4763) (not x363) x170)
+(or (not x2220) x2215)
+(or (not x4763) (not x168) x362)
+(or (not x2215) x2220)
+(or (not x4763) (not x362) x168)
+(or (not x2221) x2216)
+(or (not x4763) (not x165) x361)
+(or (not x2216) x2221)
+(or (not x4763) (not x361) x165)
+(or (not x2165) x2190)
+(or (not x4763) (not x163) x360)
+(or (not x2190) x2165)
+(or (not x4763) (not x360) x163)
+(or (not x2166) x2191)
+(or (not x52) x4762 x4760 x144)
+(or (not x2191) x2166)
+(or (not x4762) (not x144) (not x52) x4760)
+(or (not x2167) x2192)
+(or (not x4762) x4760 x144 x52)
+(or (not x2192) x2167)
+(or (not x144) x4762 x4760 x52)
+(or (not x2168) x2193)
+(or (not x4760) (not x50) x4762 x4759 x140)
+(or (not x2193) x2168)
+(or (not x4762) (not x4760) (not x140) (not x50) x4759)
+(or (not x2169) x2194)
+(or (not x4762) (not x4760) x4759 x140 x50)
+(or (not x2194) x2169)
+(or (not x4760) (not x140) x4762 x4759 x50)
+(or (not x2190) x2185)
+(or (not x4759) (not x48) x4762 x4758 x134)
+(or (not x2185) x2190)
+(or (not x4762) (not x4759) (not x134) (not x48) x4758)
+(or (not x2191) x2186)
+(or (not x4762) (not x4759) x4758 x134 x48)
+(or (not x2186) x2191)
+(or (not x4759) (not x134) x4762 x4758 x48)
+(or (not x2192) x2187)
+(or (not x4758) (not x46) x4762 x4757 x128)
+(or (not x2187) x2192)
+(or (not x4762) (not x4758) (not x128) (not x46) x4757)
+(or (not x2193) x2188)
+(or (not x4762) (not x4758) x4757 x128 x46)
+(or (not x2188) x2193)
+(or (not x4758) (not x128) x4762 x4757 x46)
+(or (not x2194) x2189)
+(or (not x4757) (not x44) x4762 x4756 x124)
+(or (not x2189) x2194)
+(or (not x4762) (not x4757) (not x124) (not x44) x4756)
+(or (not x2185) x2180)
+(or (not x4762) (not x4757) x4756 x124 x44)
+(or (not x2180) x2185)
+(or (not x4757) (not x124) x4762 x4756 x44)
+(or (not x2186) x2181)
+(or (not x4756) (not x149) x4762 x4755 x119)
+(or (not x2181) x2186)
+(or (not x4762) (not x4756) (not x119) (not x149) x4755)
+(or (not x2187) x2182)
+(or (not x4762) (not x4756) x4755 x119 x149)
+(or (not x2182) x2187)
+(or (not x4756) (not x119) x4762 x4755 x149)
+(or (not x2188) x2183)
+(or (not x4762) (not x4761))
+(or (not x2183) x2188)
+(or (not x4755) x4761)
+(or (not x2189) x2184)
+(or (not x4761) x4755)
+(or (not x2184) x2189)
+(or x4760 x343 x144)
+(or (not x2180) x2175)
+(or (not x343) (not x144) x4760)
+(or (not x2175) x2180)
+(or (not x4760) (not x144) x343)
+(or (not x2181) x2176)
+(or (not x4760) (not x343) x144)
+(or (not x2176) x2181)
+(or (not x4760) x4759 x341 x140)
+(or (not x2182) x2177)
+(or (not x4760) (not x341) (not x140) x4759)
+(or (not x2177) x2182)
+(or (not x4759) (not x140) x341)
+(or (not x2183) x2178)
+(or (not x4759) (not x341) x140)
+(or (not x2178) x2183)
+(or (not x4759) x4760)
+(or (not x2184) x2179)
+(or (not x4759) x4758 x337 x134)
+(or (not x2179) x2184)
+(or (not x4759) (not x337) (not x134) x4758)
+(or (not x2175) x2170)
+(or (not x4758) (not x134) x337)
+(or (not x2170) x2175)
+(or (not x4758) (not x337) x134)
+(or (not x2176) x2171)
+(or (not x4758) x4759)
+(or (not x2171) x2176)
+(or (not x4758) x4757 x331 x128)
+(or (not x2177) x2172)
+(or (not x4758) (not x331) (not x128) x4757)
+(or (not x2172) x2177)
+(or (not x4757) (not x128) x331)
+(or (not x2178) x2173)
+(or (not x4757) (not x331) x128)
+(or (not x2173) x2178)
+(or (not x4757) x4758)
+(or (not x2179) x2174)
+(or (not x4757) x4756 x329 x124)
+(or (not x2174) x2179)
+(or (not x4757) (not x329) (not x124) x4756)
+(or (not x2170) x2165)
+(or (not x4756) (not x124) x329)
+(or (not x2165) x2170)
+(or (not x4756) (not x329) x124)
+(or (not x2171) x2166)
+(or (not x4756) x4757)
+(or (not x2166) x2171)
+(or (not x4756) x4755 x326 x119)
+(or (not x2172) x2167)
+(or (not x4756) (not x326) (not x119) x4755)
+(or (not x2167) x2172)
+(or (not x4755) (not x119) x326)
+(or (not x2173) x2168)
+(or (not x4755) (not x326) x119)
+(or (not x2168) x2173)
+(or (not x4755) x4756)
+(or (not x2174) x2169)
+(or (not x4754) (not x299) (not x83))
+(or (not x2169) x2174)
+(or (not x299) (not x83) x4753)
+(or (not x974) x1284)
+(or (not x4754) (not x299) (not x80) x95)
+(or (not x1284) x974)
+(or (not x299) (not x80) (not x95) x4754)
+(or (not x970) x1283)
+(or (not x4753) (not x299) (not x80))
+(or (not x1283) x970)
+(or (not x4754) (not x299) (not x78) x94)
+(or (not x967) x1281)
+(or (not x299) (not x78) (not x94) x4754)
+(or (not x1281) x967)
+(or (not x4753) (not x299) (not x78))
+(or (not x962) x1279)
+(or (not x4754) (not x299) (not x75) x92)
+(or (not x1279) x962)
+(or (not x299) (not x75) (not x92) x4754)
+(or (not x949) x1276)
+(or (not x4753) (not x299) (not x75))
+(or (not x1276) x949)
+(or (not x4754) (not x299) (not x71) x91)
+(or (not x1284) x1199)
+(or (not x299) (not x71) (not x91) x4754)
+(or (not x1199) x1284)
+(or (not x4753) (not x299) (not x71))
+(or (not x1283) x1197)
+(or (not x4754) (not x296) (not x83) x89)
+(or (not x1197) x1283)
+(or (not x296) (not x83) (not x89) x4754)
+(or (not x1281) x1194)
+(or (not x4753) (not x296) (not x83))
+(or (not x1194) x1281)
+(or (not x4754) (not x296) (not x80))
+(or (not x1279) x1191)
+(or (not x296) (not x80) x4753)
+(or (not x1191) x1279)
+(or (not x4754) (not x296) (not x78) x88)
+(or (not x1276) x1188)
+(or (not x296) (not x78) (not x88) x4754)
+(or (not x1188) x1276)
+(or (not x4753) (not x296) (not x78))
+(or (not x1199) x1113)
+(or (not x4754) (not x296) (not x75) x87)
+(or (not x1113) x1199)
+(or (not x296) (not x75) (not x87) x4754)
+(or (not x1197) x1111)
+(or (not x4753) (not x296) (not x75))
+(or (not x1111) x1197)
+(or (not x4754) (not x296) (not x71) x86)
+(or (not x1194) x1109)
+(or (not x296) (not x71) (not x86) x4754)
+(or (not x1109) x1194)
+(or (not x4753) (not x296) (not x71))
+(or (not x1191) x1108)
+(or (not x4754) (not x293) (not x83) x82)
+(or (not x1108) x1191)
+(or (not x293) (not x83) (not x82) x4754)
+(or (not x1188) x1105)
+(or (not x4753) (not x293) (not x83))
+(or (not x1105) x1188)
+(or (not x4754) (not x293) (not x80) x81)
+(or (not x1113) x1045)
+(or (not x293) (not x80) (not x81) x4754)
+(or (not x1045) x1113)
+(or (not x4753) (not x293) (not x80))
+(or (not x1111) x1043)
+(or (not x4754) (not x293) (not x78))
+(or (not x1043) x1111)
+(or (not x293) (not x78) x4753)
+(or (not x1109) x1042)
+(or (not x4754) (not x293) (not x75) x79)
+(or (not x1042) x1109)
+(or (not x293) (not x75) (not x79) x4754)
+(or (not x1108) x1040)
+(or (not x4753) (not x293) (not x75))
+(or (not x1040) x1108)
+(or (not x4754) (not x293) (not x71) x77)
+(or (not x1105) x1037)
+(or (not x293) (not x71) (not x77) x4754)
+(or (not x1037) x1105)
+(or (not x4753) (not x293) (not x71))
+(or (not x1045) x959)
+(or (not x4754) (not x291) (not x83) x73)
+(or (not x959) x1045)
+(or (not x291) (not x83) (not x73) x4754)
+(or (not x1043) x957)
+(or (not x4753) (not x291) (not x83))
+(or (not x957) x1043)
+(or (not x4754) (not x291) (not x80) x67)
+(or (not x1042) x956)
+(or (not x291) (not x80) (not x67) x4754)
+(or (not x956) x1042)
+(or (not x4753) (not x291) (not x80))
+(or (not x1040) x954)
+(or (not x4754) (not x291) (not x78) x66)
+(or (not x954) x1040)
+(or (not x291) (not x78) (not x66) x4754)
+(or (not x1037) x948)
+(or (not x4753) (not x291) (not x78))
+(or (not x948) x1037)
+(or (not x4754) (not x291) (not x75))
+(or (not x959) x974)
+(or (not x291) (not x75) x4753)
+(or (not x974) x959)
+(or (not x4754) (not x291) (not x71) x65)
+(or (not x957) x970)
+(or (not x291) (not x71) (not x65) x4754)
+(or (not x970) x957)
+(or (not x4753) (not x291) (not x71))
+(or (not x956) x967)
+(or (not x4754) (not x288) (not x83) x58)
+(or (not x967) x956)
+(or (not x288) (not x83) (not x58) x4754)
+(or (not x954) x962)
+(or (not x4753) (not x288) (not x83))
+(or (not x962) x954)
+(or (not x4754) (not x288) (not x80) x57)
+(or (not x948) x949)
+(or (not x288) (not x80) (not x57) x4754)
+(or (not x949) x948)
+(or (not x4753) (not x288) (not x80))
+(or (not x83) x483)
+(or (not x4754) (not x288) (not x78) x56)
+(or (not x483) x83)
+(or (not x288) (not x78) (not x56) x4754)
+(or (not x80) x481)
+(or (not x4753) (not x288) (not x78))
+(or (not x481) x80)
+(or (not x4754) (not x288) (not x75) x55)
+(or (not x78) x478)
+(or (not x288) (not x75) (not x55) x4754)
+(or (not x478) x78)
+(or (not x4753) (not x288) (not x75))
+(or (not x75) x476)
+(or (not x4754) (not x288) (not x71))
+(or (not x476) x75)
+(or (not x288) (not x71) x4753)
+(or (not x71) x473)
+(or (not x2295) (not x69) (not x6) x911)
+(or (not x473) x71)
+(or (not x911) (not x4749) (not x4741) x4752 x4751)
+(or (not x483) x107)
+(or (not x911) (not x4741) x4750 x4749)
+(or (not x107) x483)
+(or (not x911) x4742 x4741)
+(or (not x481) x101)
+(or (not x4751) (not x4749) (not x4741) x911)
+(or (not x101) x481)
+(or (not x4752) (not x4749) (not x4741) x911)
+(or (not x478) x93)
+(or (not x4750) (not x4741) x911)
+(or (not x93) x478)
+(or (not x4742) x911)
+(or (not x476) x85)
+(or (not x4752) (not x4751))
+(or (not x85) x476)
+(or (not x272) x4752 x1 x2262)
+(or (not x473) x70)
+(or (not x4752) (not x272) (not x2262) x1)
+(or (not x70) x473)
+(or (not x4752) (not x1) x272 x2262)
+(or (not x107) x393)
+(or (not x1) (not x2262) x4752 x272)
+(or (not x393) x107)
+(or (not x269) x4752 x25 x2262)
+(or (not x101) x392)
+(or (not x4752) (not x269) (not x2262) x25)
+(or (not x392) x101)
+(or (not x4752) (not x25) x269 x2262)
+(or (not x93) x390)
+(or (not x25) (not x2262) x4752 x269)
+(or (not x390) x93)
+(or (not x268) x4752 x18 x2262)
+(or (not x85) x387)
+(or (not x4752) (not x268) (not x2262) x18)
+(or (not x387) x85)
+(or (not x4752) (not x18) x268 x2262)
+(or (not x70) x384)
+(or (not x18) (not x2262) x4752 x268)
+(or (not x384) x70)
+(or (not x265) x4752 x11 x2262)
+(or (not x393) x299)
+(or (not x4752) (not x265) (not x2262) x11)
+(or (not x299) x393)
+(or (not x4752) (not x11) x265 x2262)
+(or (not x392) x296)
+(or (not x11) (not x2262) x4752 x265)
+(or (not x296) x392)
+(or (not x264) x4752 x4 x2262)
+(or (not x390) x293)
+(or (not x4752) (not x264) (not x2262) x4)
+(or (not x293) x390)
+(or (not x4752) (not x4) x264 x2262)
+(or (not x387) x291)
+(or (not x4) (not x2262) x4752 x264)
+(or (not x291) x387)
+(or (not x25) (not x269) x4751 x1 x272)
+(or (not x384) x288)
+(or (not x18) (not x268) x4751 x25 x269)
+(or (not x288) x384)
+(or (not x11) (not x265) x4751 x18 x268)
+(or (not x299) x204)
+(or (not x4) (not x264) x4751 x11 x265)
+(or (not x204) x299)
+(or x4751 x4 x264)
+(or (not x296) x203)
+(or (not x1) (not x272) x4751)
+(or (not x203) x296)
+(or (not x4751) (not x1) x272)
+(or (not x293) x200)
+(or (not x4751) (not x272) x1)
+(or (not x200) x293)
+(or (not x4751) (not x25) x269)
+(or (not x291) x197)
+(or (not x4751) (not x269) x25)
+(or (not x197) x291)
+(or (not x4751) (not x18) x268)
+(or (not x288) x194)
+(or (not x4751) (not x268) x18)
+(or (not x194) x288)
+(or (not x4751) (not x11) x265)
+(or (not x204) x83)
+(or (not x4751) (not x265) x11)
+(or (not x83) x204)
+(or (not x4751) (not x4) x264)
+(or (not x203) x80)
+(or (not x4751) (not x264) x4)
+(or (not x80) x203)
+(or (not x52) x4750 x4748 x530)
+(or (not x200) x78)
+(or (not x4750) (not x530) (not x52) x4748)
+(or (not x78) x200)
+(or (not x4750) x4748 x530 x52)
+(or (not x197) x75)
+(or (not x530) x4750 x4748 x52)
+(or (not x75) x197)
+(or (not x4748) (not x50) x4750 x4747 x527)
+(or (not x194) x71)
+(or (not x4750) (not x4748) (not x527) (not x50) x4747)
+(or (not x71) x194)
+(or (not x4750) (not x4748) x4747 x527 x50)
+(or (not x2239) x2190)
+(or (not x4748) (not x527) x4750 x4747 x50)
+(or (not x2190) x2239)
+(or (not x4747) (not x48) x4750 x4746 x523)
+(or (not x2240) x2191)
+(or (not x4750) (not x4747) (not x523) (not x48) x4746)
+(or (not x2191) x2240)
+(or (not x4750) (not x4747) x4746 x523 x48)
+(or (not x2241) x2192)
+(or (not x4747) (not x523) x4750 x4746 x48)
+(or (not x2192) x2241)
+(or (not x4746) (not x46) x4750 x4745 x519)
+(or (not x2242) x2193)
+(or (not x4750) (not x4746) (not x519) (not x46) x4745)
+(or (not x2193) x2242)
+(or (not x4750) (not x4746) x4745 x519 x46)
+(or (not x2243) x2194)
+(or (not x4746) (not x519) x4750 x4745 x46)
+(or (not x2194) x2243)
+(or (not x4745) (not x44) x4750 x4744 x514)
+(or (not x2234) x2185)
+(or (not x4750) (not x4745) (not x514) (not x44) x4744)
+(or (not x2185) x2234)
+(or (not x4750) (not x4745) x4744 x514 x44)
+(or (not x2235) x2186)
+(or (not x4745) (not x514) x4750 x4744 x44)
+(or (not x2186) x2235)
+(or (not x4744) (not x149) x4750 x4743 x511)
+(or (not x2236) x2187)
+(or (not x4750) (not x4744) (not x511) (not x149) x4743)
+(or (not x2187) x2236)
+(or (not x4750) (not x4744) x4743 x511 x149)
+(or (not x2237) x2188)
+(or (not x4744) (not x511) x4750 x4743 x149)
+(or (not x2188) x2237)
+(or (not x4750) (not x4749))
+(or (not x2238) x2189)
+(or (not x4743) x4749)
+(or (not x2189) x2238)
+(or (not x4749) x4743)
+(or (not x2228) x2180)
+(or x4748 x530 x246)
+(or (not x2180) x2228)
+(or (not x530) (not x246) x4748)
+(or (not x2229) x2181)
+(or (not x4748) (not x530) x246)
+(or (not x2181) x2229)
+(or (not x4748) (not x246) x530)
+(or (not x2230) x2182)
+(or (not x4748) x4747 x527 x245)
+(or (not x2182) x2230)
+(or (not x4748) (not x527) (not x245) x4747)
+(or (not x2231) x2183)
+(or (not x4747) (not x527) x245)
+(or (not x2183) x2231)
+(or (not x4747) (not x245) x527)
+(or (not x2232) x2184)
+(or (not x4747) x4748)
+(or (not x2184) x2232)
+(or (not x4747) x4746 x523 x242)
+(or (not x2223) x2175)
+(or (not x4747) (not x523) (not x242) x4746)
+(or (not x2175) x2223)
+(or (not x4746) (not x523) x242)
+(or (not x2224) x2176)
+(or (not x4746) (not x242) x523)
+(or (not x2176) x2224)
+(or (not x4746) x4747)
+(or (not x2225) x2177)
+(or (not x4746) x4745 x519 x238)
+(or (not x2177) x2225)
+(or (not x4746) (not x519) (not x238) x4745)
+(or (not x2226) x2178)
+(or (not x4745) (not x519) x238)
+(or (not x2178) x2226)
+(or (not x4745) (not x238) x519)
+(or (not x2227) x2179)
+(or (not x4745) x4746)
+(or (not x2179) x2227)
+(or (not x4745) x4744 x514 x233)
+(or (not x2217) x2170)
+(or (not x4745) (not x514) (not x233) x4744)
+(or (not x2170) x2217)
+(or (not x4744) (not x514) x233)
+(or (not x2218) x2171)
+(or (not x4744) (not x233) x514)
+(or (not x2171) x2218)
+(or (not x4744) x4745)
+(or (not x2219) x2172)
+(or (not x4744) x4743 x511 x229)
+(or (not x2172) x2219)
+(or (not x4744) (not x511) (not x229) x4743)
+(or (not x2220) x2173)
+(or (not x4743) (not x511) x229)
+(or (not x2173) x2220)
+(or (not x4743) (not x229) x511)
+(or (not x2221) x2174)
+(or (not x4743) x4744)
+(or (not x2174) x2221)
+(or (not x4742) (not x483) (not x204))
+(or (not x2212) x2165)
+(or (not x483) (not x204) x4741)
+(or (not x2165) x2212)
+(or (not x4742) (not x481) (not x204) x95)
+(or (not x2213) x2166)
+(or (not x481) (not x204) (not x95) x4742)
+(or (not x2166) x2213)
+(or (not x4741) (not x481) (not x204))
+(or (not x2214) x2167)
+(or (not x4742) (not x478) (not x204) x94)
+(or (not x2167) x2214)
+(or (not x478) (not x204) (not x94) x4742)
+(or (not x2215) x2168)
+(or (not x4741) (not x478) (not x204))
+(or (not x2168) x2215)
+(or (not x4742) (not x476) (not x204) x92)
+(or (not x2216) x2169)
+(or (not x476) (not x204) (not x92) x4742)
+(or (not x2169) x2216)
+(or (not x4741) (not x476) (not x204))
+(or (not x2190) x1284)
+(or (not x4742) (not x473) (not x204) x91)
+(or (not x1284) x2190)
+(or (not x473) (not x204) (not x91) x4742)
+(or (not x2191) x1283)
+(or (not x4741) (not x473) (not x204))
+(or (not x1283) x2191)
+(or (not x4742) (not x483) (not x203) x89)
+(or (not x2192) x1281)
+(or (not x483) (not x203) (not x89) x4742)
+(or (not x1281) x2192)
+(or (not x4741) (not x483) (not x203))
+(or (not x2193) x1279)
+(or (not x4742) (not x481) (not x203))
+(or (not x1279) x2193)
+(or (not x481) (not x203) x4741)
+(or (not x2194) x1276)
+(or (not x4742) (not x478) (not x203) x88)
+(or (not x1276) x2194)
+(or (not x478) (not x203) (not x88) x4742)
+(or (not x2185) x1199)
+(or (not x4741) (not x478) (not x203))
+(or (not x1199) x2185)
+(or (not x4742) (not x476) (not x203) x87)
+(or (not x2186) x1197)
+(or (not x476) (not x203) (not x87) x4742)
+(or (not x1197) x2186)
+(or (not x4741) (not x476) (not x203))
+(or (not x2187) x1194)
+(or (not x4742) (not x473) (not x203) x86)
+(or (not x1194) x2187)
+(or (not x473) (not x203) (not x86) x4742)
+(or (not x2188) x1191)
+(or (not x4741) (not x473) (not x203))
+(or (not x1191) x2188)
+(or (not x4742) (not x483) (not x200) x82)
+(or (not x2189) x1188)
+(or (not x483) (not x200) (not x82) x4742)
+(or (not x1188) x2189)
+(or (not x4741) (not x483) (not x200))
+(or (not x2180) x1113)
+(or (not x4742) (not x481) (not x200) x81)
+(or (not x1113) x2180)
+(or (not x481) (not x200) (not x81) x4742)
+(or (not x2181) x1111)
+(or (not x4741) (not x481) (not x200))
+(or (not x1111) x2181)
+(or (not x4742) (not x478) (not x200))
+(or (not x2182) x1109)
+(or (not x478) (not x200) x4741)
+(or (not x1109) x2182)
+(or (not x4742) (not x476) (not x200) x79)
+(or (not x2183) x1108)
+(or (not x476) (not x200) (not x79) x4742)
+(or (not x1108) x2183)
+(or (not x4741) (not x476) (not x200))
+(or (not x2184) x1105)
+(or (not x4742) (not x473) (not x200) x77)
+(or (not x1105) x2184)
+(or (not x473) (not x200) (not x77) x4742)
+(or (not x2175) x1045)
+(or (not x4741) (not x473) (not x200))
+(or (not x1045) x2175)
+(or (not x4742) (not x483) (not x197) x73)
+(or (not x2176) x1043)
+(or (not x483) (not x197) (not x73) x4742)
+(or (not x1043) x2176)
+(or (not x4741) (not x483) (not x197))
+(or (not x2177) x1042)
+(or (not x4742) (not x481) (not x197) x67)
+(or (not x1042) x2177)
+(or (not x481) (not x197) (not x67) x4742)
+(or (not x2178) x1040)
+(or (not x4741) (not x481) (not x197))
+(or (not x1040) x2178)
+(or (not x4742) (not x478) (not x197) x66)
+(or (not x2179) x1037)
+(or (not x478) (not x197) (not x66) x4742)
+(or (not x1037) x2179)
+(or (not x4741) (not x478) (not x197))
+(or (not x2170) x959)
+(or (not x4742) (not x476) (not x197))
+(or (not x959) x2170)
+(or (not x476) (not x197) x4741)
+(or (not x2171) x957)
+(or (not x4742) (not x473) (not x197) x65)
+(or (not x957) x2171)
+(or (not x473) (not x197) (not x65) x4742)
+(or (not x2172) x956)
+(or (not x4741) (not x473) (not x197))
+(or (not x956) x2172)
+(or (not x4742) (not x483) (not x194) x58)
+(or (not x2173) x954)
+(or (not x483) (not x194) (not x58) x4742)
+(or (not x954) x2173)
+(or (not x4741) (not x483) (not x194))
+(or (not x2174) x948)
+(or (not x4742) (not x481) (not x194) x57)
+(or (not x948) x2174)
+(or (not x481) (not x194) (not x57) x4742)
+(or (not x2165) x974)
+(or (not x4741) (not x481) (not x194))
+(or (not x974) x2165)
+(or (not x4742) (not x478) (not x194) x56)
+(or (not x2166) x970)
+(or (not x478) (not x194) (not x56) x4742)
+(or (not x970) x2166)
+(or (not x4741) (not x478) (not x194))
+(or (not x2167) x967)
+(or (not x4742) (not x476) (not x194) x55)
+(or (not x967) x2167)
+(or (not x476) (not x194) (not x55) x4742)
+(or (not x2168) x962)
+(or (not x4741) (not x476) (not x194))
+(or (not x962) x2168)
+(or (not x4742) (not x473) (not x194))
+(or (not x2169) x949)
+(or (not x473) (not x194) x4741)
+(or (not x949) x2169)
+(or (not x2295) (not x69) (not x7) x910)
+(or (not x1284) x483)
+(or (not x910) (not x4737) (not x4729) x4740 x4739)
+(or (not x483) x1284)
+(or (not x910) (not x4729) x4738 x4737)
+(or (not x1283) x481)
+(or (not x910) x4730 x4729)
+(or (not x481) x1283)
+(or (not x4739) (not x4737) (not x4729) x910)
+(or (not x1281) x478)
+(or (not x4740) (not x4737) (not x4729) x910)
+(or (not x478) x1281)
+(or (not x4738) (not x4729) x910)
+(or (not x1279) x476)
+(or (not x4730) x910)
+(or (not x476) x1279)
+(or (not x4740) (not x4739))
+(or (not x1276) x473)
+(or (not x272) x4740 x171 x2262)
+(or (not x473) x1276)
+(or (not x4740) (not x272) (not x2262) x171)
+(or (not x1199) x107)
+(or (not x4740) (not x171) x272 x2262)
+(or (not x107) x1199)
+(or (not x171) (not x2262) x4740 x272)
+(or (not x1197) x101)
+(or (not x269) x4740 x169 x2262)
+(or (not x101) x1197)
+(or (not x4740) (not x269) (not x2262) x169)
+(or (not x1194) x93)
+(or (not x4740) (not x169) x269 x2262)
+(or (not x93) x1194)
+(or (not x169) (not x2262) x4740 x269)
+(or (not x1191) x85)
+(or (not x268) x4740 x167 x2262)
+(or (not x85) x1191)
+(or (not x4740) (not x268) (not x2262) x167)
+(or (not x1188) x70)
+(or (not x4740) (not x167) x268 x2262)
+(or (not x70) x1188)
+(or (not x167) (not x2262) x4740 x268)
+(or (not x1113) x393)
+(or (not x265) x4740 x164 x2262)
+(or (not x393) x1113)
+(or (not x4740) (not x265) (not x2262) x164)
+(or (not x1111) x392)
+(or (not x4740) (not x164) x265 x2262)
+(or (not x392) x1111)
+(or (not x164) (not x2262) x4740 x265)
+(or (not x1109) x390)
+(or (not x264) x4740 x162 x2262)
+(or (not x390) x1109)
+(or (not x4740) (not x264) (not x2262) x162)
+(or (not x1108) x387)
+(or (not x4740) (not x162) x264 x2262)
+(or (not x387) x1108)
+(or (not x162) (not x2262) x4740 x264)
+(or (not x1105) x384)
+(or (not x169) (not x269) x4739 x171 x272)
+(or (not x384) x1105)
+(or (not x167) (not x268) x4739 x169 x269)
+(or (not x1045) x299)
+(or (not x164) (not x265) x4739 x167 x268)
+(or (not x299) x1045)
+(or (not x162) (not x264) x4739 x164 x265)
+(or (not x1043) x296)
+(or x4739 x162 x264)
+(or (not x296) x1043)
+(or (not x171) (not x272) x4739)
+(or (not x1042) x293)
+(or (not x4739) (not x171) x272)
+(or (not x293) x1042)
+(or (not x4739) (not x272) x171)
+(or (not x1040) x291)
+(or (not x4739) (not x169) x269)
+(or (not x291) x1040)
+(or (not x4739) (not x269) x169)
+(or (not x1037) x288)
+(or (not x4739) (not x167) x268)
+(or (not x288) x1037)
+(or (not x4739) (not x268) x167)
+(or (not x959) x204)
+(or (not x4739) (not x164) x265)
+(or (not x204) x959)
+(or (not x4739) (not x265) x164)
+(or (not x957) x203)
+(or (not x4739) (not x162) x264)
+(or (not x203) x957)
+(or (not x4739) (not x264) x162)
+(or (not x956) x200)
+(or (not x52) x4738 x4736 x143)
+(or (not x200) x956)
+(or (not x4738) (not x143) (not x52) x4736)
+(or (not x954) x197)
+(or (not x4738) x4736 x143 x52)
+(or (not x197) x954)
+(or (not x143) x4738 x4736 x52)
+(or (not x948) x194)
+(or (not x4736) (not x50) x4738 x4735 x139)
+(or (not x194) x948)
+(or (not x4738) (not x4736) (not x139) (not x50) x4735)
+(or (not x974) x83)
+(or (not x4738) (not x4736) x4735 x139 x50)
+(or (not x83) x974)
+(or (not x4736) (not x139) x4738 x4735 x50)
+(or (not x970) x80)
+(or (not x4735) (not x48) x4738 x4734 x133)
+(or (not x80) x970)
+(or (not x4738) (not x4735) (not x133) (not x48) x4734)
+(or (not x967) x78)
+(or (not x4738) (not x4735) x4734 x133 x48)
+(or (not x78) x967)
+(or (not x4735) (not x133) x4738 x4734 x48)
+(or (not x962) x75)
+(or (not x4734) (not x46) x4738 x4733 x127)
+(or (not x75) x962)
+(or (not x4738) (not x4734) (not x127) (not x46) x4733)
+(or (not x949) x71)
+(or (not x4738) (not x4734) x4733 x127 x46)
+(or (not x71) x949)
+(or (not x4734) (not x127) x4738 x4733 x46)
+(or (not x3222) (not x456) (not x375))
+(or (not x4733) (not x44) x4738 x4732 x123)
+(or (not x3048) (not x453) (not x375))
+(or (not x4738) (not x4733) (not x123) (not x44) x4732)
+(or (not x2887) (not x451) (not x375))
+(or (not x4738) (not x4733) x4732 x123 x44)
+(or (not x2694) (not x449) (not x375))
+(or (not x4733) (not x123) x4738 x4732 x44)
+(or (not x3404) (not x458) (not x373))
+(or (not x4732) (not x149) x4738 x4731 x118)
+(or (not x3029) (not x453) (not x373))
+(or (not x4738) (not x4732) (not x118) (not x149) x4731)
+(or (not x2874) (not x451) (not x373))
+(or (not x4738) (not x4732) x4731 x118 x149)
+(or (not x2670) (not x449) (not x373))
+(or (not x4732) (not x118) x4738 x4731 x149)
+(or (not x3362) (not x458) (not x370))
+(or (not x4738) (not x4737))
+(or (not x3209) (not x456) (not x370))
+(or (not x4731) x4737)
+(or (not x2801) (not x451) (not x370))
+(or (not x4737) x4731)
+(or (not x2611) (not x449) (not x370))
+(or x4736 x143 x246)
+(or (not x3318) (not x458) (not x368))
+(or (not x143) (not x246) x4736)
+(or (not x3140) (not x456) (not x368))
+(or (not x4736) (not x143) x246)
+(or (not x2971) (not x453) (not x368))
+(or (not x4736) (not x246) x143)
+(or (not x2567) (not x449) (not x368))
+(or (not x4736) x4735 x139 x245)
+(or (not x3305) (not x458) (not x365))
+(or (not x4736) (not x139) (not x245) x4735)
+(or (not x3127) (not x456) (not x365))
+(or (not x4735) (not x139) x245)
+(or (not x2958) (not x453) (not x365))
+(or (not x4735) (not x245) x139)
+(or (not x2788) (not x451) (not x365))
+(or (not x4735) x4736)
+(or (not x3247) (not x445) (not x358))
+(or (not x4735) x4734 x133 x242)
+(or (not x3083) (not x441) (not x358))
+(or (not x4735) (not x133) (not x242) x4734)
+(or (not x2900) (not x438) (not x358))
+(or (not x4734) (not x133) x242)
+(or (not x2770) (not x436) (not x358))
+(or (not x4734) (not x242) x133)
+(or (not x3570) (not x447) (not x356))
+(or (not x4734) x4735)
+(or (not x3029) (not x441) (not x356))
+(or (not x4734) x4733 x127 x238)
+(or (not x2874) (not x438) (not x356))
+(or (not x4734) (not x127) (not x238) x4733)
+(or (not x2670) (not x436) (not x356))
+(or (not x4733) (not x127) x238)
+(or (not x3511) (not x447) (not x354))
+(or (not x4733) (not x238) x127)
+(or (not x3209) (not x445) (not x354))
+(or (not x4733) x4734)
+(or (not x2801) (not x438) (not x354))
+(or (not x4733) x4732 x123 x233)
+(or (not x2611) (not x436) (not x354))
+(or (not x4733) (not x123) (not x233) x4732)
+(or (not x3489) (not x447) (not x352))
+(or (not x4732) (not x123) x233)
+(or (not x3140) (not x445) (not x352))
+(or (not x4732) (not x233) x123)
+(or (not x2971) (not x441) (not x352))
+(or (not x4732) x4733)
+(or (not x2567) (not x436) (not x352))
+(or (not x4732) x4731 x118 x229)
+(or (not x3460) (not x447) (not x350))
+(or (not x4732) (not x118) (not x229) x4731)
+(or (not x3127) (not x445) (not x350))
+(or (not x4731) (not x118) x229)
+(or (not x2958) (not x441) (not x350))
+(or (not x4731) (not x229) x118)
+(or (not x2788) (not x438) (not x350))
+(or (not x4731) x4732)
+(or (not x3417) (not x428) (not x347))
+(or (not x4730) (not x107) (not x204))
+(or (not x3083) (not x422) (not x347))
+(or (not x107) (not x204) x4729)
+(or (not x2900) (not x417) (not x347))
+(or (not x4730) (not x101) (not x204) x95)
+(or (not x2770) (not x415) (not x347))
+(or (not x101) (not x204) (not x95) x4730)
+(or (not x3583) (not x430) (not x345))
+(or (not x4729) (not x101) (not x204))
+(or (not x3048) (not x422) (not x345))
+(or (not x4730) (not x93) (not x204) x94)
+(or (not x2887) (not x417) (not x345))
+(or (not x93) (not x204) (not x94) x4730)
+(or (not x2694) (not x415) (not x345))
+(or (not x4729) (not x93) (not x204))
+(or (not x3511) (not x430) (not x339))
+(or (not x4730) (not x85) (not x204) x92)
+(or (not x3362) (not x428) (not x339))
+(or (not x85) (not x204) (not x92) x4730)
+(or (not x2801) (not x417) (not x339))
+(or (not x4729) (not x85) (not x204))
+(or (not x2611) (not x415) (not x339))
+(or (not x4730) (not x70) (not x204) x91)
+(or (not x3489) (not x430) (not x335))
+(or (not x70) (not x204) (not x91) x4730)
+(or (not x3318) (not x428) (not x335))
+(or (not x4729) (not x70) (not x204))
+(or (not x2971) (not x422) (not x335))
+(or (not x4730) (not x107) (not x203) x89)
+(or (not x2567) (not x415) (not x335))
+(or (not x107) (not x203) (not x89) x4730)
+(or (not x3460) (not x430) (not x333))
+(or (not x4729) (not x107) (not x203))
+(or (not x3305) (not x428) (not x333))
+(or (not x4730) (not x101) (not x203))
+(or (not x2958) (not x422) (not x333))
+(or (not x101) (not x203) x4729)
+(or (not x2788) (not x417) (not x333))
+(or (not x4730) (not x93) (not x203) x88)
+(or (not x3417) (not x412) (not x327))
+(or (not x93) (not x203) (not x88) x4730)
+(or (not x3247) (not x410) (not x327))
+(or (not x4729) (not x93) (not x203))
+(or (not x2900) (not x407) (not x327))
+(or (not x4730) (not x85) (not x203) x87)
+(or (not x2770) (not x405) (not x327))
+(or (not x85) (not x203) (not x87) x4730)
+(or (not x3583) (not x413) (not x323))
+(or (not x4729) (not x85) (not x203))
+(or (not x3222) (not x410) (not x323))
+(or (not x4730) (not x70) (not x203) x86)
+(or (not x2887) (not x407) (not x323))
+(or (not x70) (not x203) (not x86) x4730)
+(or (not x2694) (not x405) (not x323))
+(or (not x4729) (not x70) (not x203))
+(or (not x3570) (not x413) (not x321))
+(or (not x4730) (not x107) (not x200) x82)
+(or (not x3404) (not x412) (not x321))
+(or (not x107) (not x200) (not x82) x4730)
+(or (not x2874) (not x407) (not x321))
+(or (not x4729) (not x107) (not x200))
+(or (not x2670) (not x405) (not x321))
+(or (not x4730) (not x101) (not x200) x81)
+(or (not x3489) (not x413) (not x318))
+(or (not x101) (not x200) (not x81) x4730)
+(or (not x3318) (not x412) (not x318))
+(or (not x4729) (not x101) (not x200))
+(or (not x3140) (not x410) (not x318))
+(or (not x4730) (not x93) (not x200))
+(or (not x2567) (not x405) (not x318))
+(or (not x93) (not x200) x4729)
+(or (not x3460) (not x413) (not x316))
+(or (not x4730) (not x85) (not x200) x79)
+(or (not x3305) (not x412) (not x316))
+(or (not x85) (not x200) (not x79) x4730)
+(or (not x3127) (not x410) (not x316))
+(or (not x4729) (not x85) (not x200))
+(or (not x2788) (not x407) (not x316))
+(or (not x4730) (not x70) (not x200) x77)
+(or (not x3417) (not x402) (not x314))
+(or (not x70) (not x200) (not x77) x4730)
+(or (not x3247) (not x400) (not x314))
+(or (not x4729) (not x70) (not x200))
+(or (not x3083) (not x398) (not x314))
+(or (not x4730) (not x107) (not x197) x73)
+(or (not x2770) (not x395) (not x314))
+(or (not x107) (not x197) (not x73) x4730)
+(or (not x3583) (not x403) (not x313))
+(or (not x4729) (not x107) (not x197))
+(or (not x3222) (not x400) (not x313))
+(or (not x4730) (not x101) (not x197) x67)
+(or (not x3048) (not x398) (not x313))
+(or (not x101) (not x197) (not x67) x4730)
+(or (not x2694) (not x395) (not x313))
+(or (not x4729) (not x101) (not x197))
+(or (not x3570) (not x403) (not x311))
+(or (not x4730) (not x93) (not x197) x66)
+(or (not x3404) (not x402) (not x311))
+(or (not x93) (not x197) (not x66) x4730)
+(or (not x3029) (not x398) (not x311))
+(or (not x4729) (not x93) (not x197))
+(or (not x2670) (not x395) (not x311))
+(or (not x4730) (not x85) (not x197))
+(or (not x3511) (not x403) (not x309))
+(or (not x85) (not x197) x4729)
+(or (not x3362) (not x402) (not x309))
+(or (not x4730) (not x70) (not x197) x65)
+(or (not x3209) (not x400) (not x309))
+(or (not x70) (not x197) (not x65) x4730)
+(or (not x2611) (not x395) (not x309))
+(or (not x4729) (not x70) (not x197))
+(or (not x3460) (not x403) (not x306))
+(or (not x4730) (not x107) (not x194) x58)
+(or (not x3305) (not x402) (not x306))
+(or (not x107) (not x194) (not x58) x4730)
+(or (not x3127) (not x400) (not x306))
+(or (not x4729) (not x107) (not x194))
+(or (not x2958) (not x398) (not x306))
+(or (not x4730) (not x101) (not x194) x57)
+(or (not x3417) (not x389) (not x304))
+(or (not x101) (not x194) (not x57) x4730)
+(or (not x3247) (not x383) (not x304))
+(or (not x4729) (not x101) (not x194))
+(or (not x3083) (not x381) (not x304))
+(or (not x4730) (not x93) (not x194) x56)
+(or (not x2900) (not x378) (not x304))
+(or (not x93) (not x194) (not x56) x4730)
+(or (not x3583) (not x391) (not x303))
+(or (not x4729) (not x93) (not x194))
+(or (not x3222) (not x383) (not x303))
+(or (not x4730) (not x85) (not x194) x55)
+(or (not x3048) (not x381) (not x303))
+(or (not x85) (not x194) (not x55) x4730)
+(or (not x2887) (not x378) (not x303))
+(or (not x4729) (not x85) (not x194))
+(or (not x3570) (not x391) (not x301))
+(or (not x4730) (not x70) (not x194))
+(or (not x3404) (not x389) (not x301))
+(or (not x70) (not x194) x4729)
+(or (not x3029) (not x381) (not x301))
+(or (not x2295) (not x69) (not x8) x909)
+(or (not x2874) (not x378) (not x301))
+(or (not x909) (not x4725) (not x4717) x4728 x4727)
+(or (not x3511) (not x391) (not x298))
+(or (not x909) (not x4717) x4726 x4725)
+(or (not x3362) (not x389) (not x298))
+(or (not x909) x4718 x4717)
+(or (not x3209) (not x383) (not x298))
+(or (not x4727) (not x4725) (not x4717) x909)
+(or (not x2801) (not x378) (not x298))
+(or (not x4728) (not x4725) (not x4717) x909)
+(or (not x3489) (not x391) (not x295))
+(or (not x4726) (not x4717) x909)
+(or (not x3318) (not x389) (not x295))
+(or (not x4718) x909)
+(or (not x3140) (not x383) (not x295))
+(or (not x4728) (not x4727))
+(or (not x2971) (not x381) (not x295))
+(or (not x272) x4728 x2 x2262)
+(or (not x2135) (not x373) (not x285))
+(or (not x4728) (not x272) (not x2262) x2)
+(or (not x1883) (not x370) (not x285))
+(or (not x4728) (not x2) x272 x2262)
+(or (not x1591) (not x368) (not x285))
+(or (not x2) (not x2262) x4728 x272)
+(or (not x1274) (not x365) (not x285))
+(or (not x269) x4728 x26 x2262)
+(or (not x2265) (not x375) (not x283))
+(or (not x4728) (not x269) (not x2262) x26)
+(or (not x1800) (not x370) (not x283))
+(or (not x4728) (not x26) x269 x2262)
+(or (not x1498) (not x368) (not x283))
+(or (not x26) (not x2262) x4728 x269)
+(or (not x1183) (not x365) (not x283))
+(or (not x268) x4728 x19 x2262)
+(or (not x2249) (not x375) (not x281))
+(or (not x4728) (not x268) (not x2262) x19)
+(or (not x2102) (not x373) (not x281))
+(or (not x4728) (not x19) x268 x2262)
+(or (not x1446) (not x368) (not x281))
+(or (not x19) (not x2262) x4728 x268)
+(or (not x1102) (not x365) (not x281))
+(or (not x265) x4728 x12 x2262)
+(or (not x2205) (not x375) (not x279))
+(or (not x4728) (not x265) (not x2262) x12)
+(or (not x2050) (not x373) (not x279))
+(or (not x4728) (not x12) x265 x2262)
+(or (not x1748) (not x370) (not x279))
+(or (not x12) (not x2262) x4728 x265)
+(or (not x1033) (not x365) (not x279))
+(or (not x264) x4728 x5 x2262)
+(or (not x2162) (not x375) (not x277))
+(or (not x4728) (not x264) (not x2262) x5)
+(or (not x1996) (not x373) (not x277))
+(or (not x4728) (not x5) x264 x2262)
+(or (not x1695) (not x370) (not x277))
+(or (not x5) (not x2262) x4728 x264)
+(or (not x1394) (not x368) (not x277))
+(or (not x26) (not x269) x4727 x2 x272)
+(or (not x2148) (not x356) (not x274))
+(or (not x19) (not x268) x4727 x26 x269)
+(or (not x1940) (not x354) (not x274))
+(or (not x12) (not x265) x4727 x19 x268)
+(or (not x1643) (not x352) (not x274))
+(or (not x5) (not x264) x4727 x12 x265)
+(or (not x1341) (not x350) (not x274))
+(or x4727 x5 x264)
+(or (not x2441) (not x358) (not x271))
+(or (not x2) (not x272) x4727)
+(or (not x1800) (not x354) (not x271))
+(or (not x4727) (not x2) x272)
+(or (not x1498) (not x352) (not x271))
+(or (not x4727) (not x272) x2)
+(or (not x1183) (not x350) (not x271))
+(or (not x4727) (not x26) x269)
+(or (not x2413) (not x358) (not x267))
+(or (not x4727) (not x269) x26)
+(or (not x2102) (not x356) (not x267))
+(or (not x4727) (not x19) x268)
+(or (not x1446) (not x352) (not x267))
+(or (not x4727) (not x268) x19)
+(or (not x1102) (not x350) (not x267))
+(or (not x4727) (not x12) x265)
+(or (not x2364) (not x358) (not x262))
+(or (not x4727) (not x265) x12)
+(or (not x2050) (not x356) (not x262))
+(or (not x4727) (not x5) x264)
+(or (not x1748) (not x354) (not x262))
+(or (not x4727) (not x264) x5)
+(or (not x1033) (not x350) (not x262))
+(or (not x52) x4726 x4724 x439)
+(or (not x2351) (not x358) (not x260))
+(or (not x4726) (not x439) (not x52) x4724)
+(or (not x1996) (not x356) (not x260))
+(or (not x4726) x4724 x439 x52)
+(or (not x1695) (not x354) (not x260))
+(or (not x439) x4726 x4724 x52)
+(or (not x1394) (not x352) (not x260))
+(or (not x4724) (not x50) x4726 x4723 x434)
+(or (not x2288) (not x345) (not x258))
+(or (not x4726) (not x4724) (not x434) (not x50) x4723)
+(or (not x1940) (not x339) (not x258))
+(or (not x4726) (not x4724) x4723 x434 x50)
+(or (not x1643) (not x335) (not x258))
+(or (not x4724) (not x434) x4726 x4723 x50)
+(or (not x1341) (not x333) (not x258))
+(or (not x4723) (not x48) x4726 x4722 x432)
+(or (not x2467) (not x347) (not x257))
+(or (not x4726) (not x4723) (not x432) (not x48) x4722)
+(or (not x1883) (not x339) (not x257))
+(or (not x4726) (not x4723) x4722 x432 x48)
+(or (not x1591) (not x335) (not x257))
+(or (not x4723) (not x432) x4726 x4722 x48)
+(or (not x1274) (not x333) (not x257))
+(or (not x4722) (not x46) x4726 x4721 x429)
+(or (not x2413) (not x347) (not x254))
+(or (not x4726) (not x4722) (not x429) (not x46) x4721)
+(or (not x2249) (not x345) (not x254))
+(or (not x4726) (not x4722) x4721 x429 x46)
+(or (not x1446) (not x335) (not x254))
+(or (not x4722) (not x429) x4726 x4721 x46)
+(or (not x1102) (not x333) (not x254))
+(or (not x4721) (not x44) x4726 x4720 x424)
+(or (not x2364) (not x347) (not x250))
+(or (not x4726) (not x4721) (not x424) (not x44) x4720)
+(or (not x2205) (not x345) (not x250))
+(or (not x4726) (not x4721) x4720 x424 x44)
+(or (not x1748) (not x339) (not x250))
+(or (not x4721) (not x424) x4726 x4720 x44)
+(or (not x1033) (not x333) (not x250))
+(or (not x4720) (not x149) x4726 x4719 x420)
+(or (not x2351) (not x347) (not x248))
+(or (not x4726) (not x4720) (not x420) (not x149) x4719)
+(or (not x2162) (not x345) (not x248))
+(or (not x4726) (not x4720) x4719 x420 x149)
+(or (not x1695) (not x339) (not x248))
+(or (not x4720) (not x420) x4726 x4719 x149)
+(or (not x1394) (not x335) (not x248))
+(or (not x4726) (not x4725))
+(or (not x2288) (not x323) (not x243))
+(or (not x4719) x4725)
+(or (not x2148) (not x321) (not x243))
+(or (not x4725) x4719)
+(or (not x1643) (not x318) (not x243))
+(or x4724 x439 x246)
+(or (not x1341) (not x316) (not x243))
+(or (not x439) (not x246) x4724)
+(or (not x2467) (not x327) (not x240))
+(or (not x4724) (not x439) x246)
+(or (not x2135) (not x321) (not x240))
+(or (not x4724) (not x246) x439)
+(or (not x1591) (not x318) (not x240))
+(or (not x4724) x4723 x434 x245)
+(or (not x1274) (not x316) (not x240))
+(or (not x4724) (not x434) (not x245) x4723)
+(or (not x2441) (not x327) (not x237))
+(or (not x4723) (not x434) x245)
+(or (not x2265) (not x323) (not x237))
+(or (not x4723) (not x245) x434)
+(or (not x1498) (not x318) (not x237))
+(or (not x4723) x4724)
+(or (not x1183) (not x316) (not x237))
+(or (not x4723) x4722 x432 x242)
+(or (not x2364) (not x327) (not x231))
+(or (not x4723) (not x432) (not x242) x4722)
+(or (not x2205) (not x323) (not x231))
+(or (not x4722) (not x432) x242)
+(or (not x2050) (not x321) (not x231))
+(or (not x4722) (not x242) x432)
+(or (not x1033) (not x316) (not x231))
+(or (not x4722) x4723)
+(or (not x2351) (not x327) (not x228))
+(or (not x4722) x4721 x429 x238)
+(or (not x2162) (not x323) (not x228))
+(or (not x4722) (not x429) (not x238) x4721)
+(or (not x1996) (not x321) (not x228))
+(or (not x4721) (not x429) x238)
+(or (not x1394) (not x318) (not x228))
+(or (not x4721) (not x238) x429)
+(or (not x2288) (not x313) (not x224))
+(or (not x4721) x4722)
+(or (not x2148) (not x311) (not x224))
+(or (not x4721) x4720 x424 x233)
+(or (not x1940) (not x309) (not x224))
+(or (not x4721) (not x424) (not x233) x4720)
+(or (not x1341) (not x306) (not x224))
+(or (not x4720) (not x424) x233)
+(or (not x2467) (not x314) (not x223))
+(or (not x4720) (not x233) x424)
+(or (not x2135) (not x311) (not x223))
+(or (not x4720) x4721)
+(or (not x1883) (not x309) (not x223))
+(or (not x4720) x4719 x420 x229)
+(or (not x1274) (not x306) (not x223))
+(or (not x4720) (not x420) (not x229) x4719)
+(or (not x2441) (not x314) (not x221))
+(or (not x4719) (not x420) x229)
+(or (not x2265) (not x313) (not x221))
+(or (not x4719) (not x229) x420)
+(or (not x1800) (not x309) (not x221))
+(or (not x4719) x4720)
+(or (not x1183) (not x306) (not x221))
+(or (not x4718) (not x393) (not x204))
+(or (not x2413) (not x314) (not x219))
+(or (not x393) (not x204) x4717)
+(or (not x2249) (not x313) (not x219))
+(or (not x4718) (not x392) (not x204) x95)
+(or (not x2102) (not x311) (not x219))
+(or (not x392) (not x204) (not x95) x4718)
+(or (not x1102) (not x306) (not x219))
+(or (not x4717) (not x392) (not x204))
+(or (not x2351) (not x314) (not x216))
+(or (not x4718) (not x390) (not x204) x94)
+(or (not x2162) (not x313) (not x216))
+(or (not x390) (not x204) (not x94) x4718)
+(or (not x1996) (not x311) (not x216))
+(or (not x4717) (not x390) (not x204))
+(or (not x1695) (not x309) (not x216))
+(or (not x4718) (not x387) (not x204) x92)
+(or (not x2288) (not x303) (not x214))
+(or (not x387) (not x204) (not x92) x4718)
+(or (not x2148) (not x301) (not x214))
+(or (not x4717) (not x387) (not x204))
+(or (not x1940) (not x298) (not x214))
+(or (not x4718) (not x384) (not x204) x91)
+(or (not x1643) (not x295) (not x214))
+(or (not x384) (not x204) (not x91) x4718)
+(or (not x2467) (not x304) (not x213))
+(or (not x4717) (not x384) (not x204))
+(or (not x2135) (not x301) (not x213))
+(or (not x4718) (not x393) (not x203) x89)
+(or (not x1883) (not x298) (not x213))
+(or (not x393) (not x203) (not x89) x4718)
+(or (not x1591) (not x295) (not x213))
+(or (not x4717) (not x393) (not x203))
+(or (not x2441) (not x304) (not x211))
+(or (not x4718) (not x392) (not x203))
+(or (not x2265) (not x303) (not x211))
+(or (not x392) (not x203) x4717)
+(or (not x1800) (not x298) (not x211))
+(or (not x4718) (not x390) (not x203) x88)
+(or (not x1498) (not x295) (not x211))
+(or (not x390) (not x203) (not x88) x4718)
+(or (not x2413) (not x304) (not x209))
+(or (not x4717) (not x390) (not x203))
+(or (not x2249) (not x303) (not x209))
+(or (not x4718) (not x387) (not x203) x87)
+(or (not x2102) (not x301) (not x209))
+(or (not x387) (not x203) (not x87) x4718)
+(or (not x1446) (not x295) (not x209))
+(or (not x4717) (not x387) (not x203))
+(or (not x2364) (not x304) (not x207))
+(or (not x4718) (not x384) (not x203) x86)
+(or (not x2205) (not x303) (not x207))
+(or (not x384) (not x203) (not x86) x4718)
+(or (not x2050) (not x301) (not x207))
+(or (not x4717) (not x384) (not x203))
+(or (not x1748) (not x298) (not x207))
+(or (not x4718) (not x393) (not x200) x82)
+(or (not x899) (not x283) (not x202))
+(or (not x393) (not x200) (not x82) x4718)
+(or (not x893) (not x281) (not x202))
+(or (not x4717) (not x393) (not x200))
+(or (not x910) (not x279) (not x202))
+(or (not x4718) (not x392) (not x200) x81)
+(or (not x887) (not x277) (not x202))
+(or (not x392) (not x200) (not x81) x4718)
+(or (not x468) (not x285) (not x199))
+(or (not x4717) (not x392) (not x200))
+(or (not x891) (not x281) (not x199))
+(or (not x4718) (not x390) (not x200))
+(or (not x909) (not x279) (not x199))
+(or (not x390) (not x200) x4717)
+(or (not x885) (not x277) (not x199))
+(or (not x4718) (not x387) (not x200) x79)
+(or (not x379) (not x285) (not x193))
+(or (not x387) (not x200) (not x79) x4718)
+(or (not x897) (not x283) (not x193))
+(or (not x4717) (not x387) (not x200))
+(or (not x922) (not x279) (not x193))
+(or (not x4718) (not x384) (not x200) x77)
+(or (not x884) (not x277) (not x193))
+(or (not x384) (not x200) (not x77) x4718)
+(or (not x286) (not x285) (not x191))
+(or (not x4717) (not x384) (not x200))
+(or (not x913) (not x283) (not x191))
+(or (not x4718) (not x393) (not x197) x73)
+(or (not x925) (not x281) (not x191))
+(or (not x393) (not x197) (not x73) x4718)
+(or (not x906) (not x277) (not x191))
+(or (not x4717) (not x393) (not x197))
+(or (not x189) (not x285) (not x187))
+(or (not x4718) (not x392) (not x197) x67)
+(or (not x896) (not x283) (not x187))
+(or (not x392) (not x197) (not x67) x4718)
+(or (not x890) (not x281) (not x187))
+(or (not x4717) (not x392) (not x197))
+(or (not x908) (not x279) (not x187))
+(or (not x4718) (not x390) (not x197) x66)
+(or (not x60) (not x271) (not x185))
+(or (not x390) (not x197) (not x66) x4718)
+(or (not x894) (not x267) (not x185))
+(or (not x4717) (not x390) (not x197))
+(or (not x911) (not x262) (not x185))
+(or (not x4718) (not x387) (not x197))
+(or (not x888) (not x260) (not x185))
+(or (not x387) (not x197) x4717)
+(or (not x829) (not x274) (not x183))
+(or (not x4718) (not x384) (not x197) x65)
+(or (not x891) (not x267) (not x183))
+(or (not x384) (not x197) (not x65) x4718)
+(or (not x909) (not x262) (not x183))
+(or (not x4717) (not x384) (not x197))
+(or (not x885) (not x260) (not x183))
+(or (not x4718) (not x393) (not x194) x58)
+(or (not x738) (not x274) (not x181))
+(or (not x393) (not x194) (not x58) x4718)
+(or (not x897) (not x271) (not x181))
+(or (not x4717) (not x393) (not x194))
+(or (not x922) (not x262) (not x181))
+(or (not x4718) (not x392) (not x194) x57)
+(or (not x884) (not x260) (not x181))
+(or (not x392) (not x194) (not x57) x4718)
+(or (not x679) (not x274) (not x177))
+(or (not x4717) (not x392) (not x194))
+(or (not x913) (not x271) (not x177))
+(or (not x4718) (not x390) (not x194) x56)
+(or (not x925) (not x267) (not x177))
+(or (not x390) (not x194) (not x56) x4718)
+(or (not x906) (not x260) (not x177))
+(or (not x4717) (not x390) (not x194))
+(or (not x624) (not x274) (not x174))
+(or (not x4718) (not x387) (not x194) x55)
+(or (not x896) (not x271) (not x174))
+(or (not x387) (not x194) (not x55) x4718)
+(or (not x890) (not x267) (not x174))
+(or (not x4717) (not x387) (not x194))
+(or (not x908) (not x262) (not x174))
+(or (not x4718) (not x384) (not x194))
+(or (not x562) (not x257) (not x166))
+(or (not x384) (not x194) x4717)
+(or (not x894) (not x254) (not x166))
+(or (not x2295) (not x69) (not x9) x922)
+(or (not x911) (not x250) (not x166))
+(or (not x922) (not x4713) (not x4705) x4716 x4715)
+(or (not x888) (not x248) (not x166))
+(or (not x922) (not x4705) x4714 x4713)
+(or (not x881) (not x258) (not x160))
+(or (not x922) x4706 x4705)
+(or (not x893) (not x254) (not x160))
+(or (not x4715) (not x4713) (not x4705) x922)
+(or (not x910) (not x250) (not x160))
+(or (not x4716) (not x4713) (not x4705) x922)
+(or (not x887) (not x248) (not x160))
+(or (not x4714) (not x4705) x922)
+(or (not x738) (not x258) (not x157))
+(or (not x4706) x922)
+(or (not x379) (not x257) (not x157))
+(or (not x4716) (not x4715))
+(or (not x922) (not x250) (not x157))
+(or (not x272) x4716 x366 x2262)
+(or (not x884) (not x248) (not x157))
+(or (not x4716) (not x272) (not x2262) x366)
+(or (not x679) (not x258) (not x155))
+(or (not x4716) (not x366) x272 x2262)
+(or (not x286) (not x257) (not x155))
+(or (not x366) (not x2262) x4716 x272)
+(or (not x925) (not x254) (not x155))
+(or (not x269) x4716 x363 x2262)
+(or (not x906) (not x248) (not x155))
+(or (not x4716) (not x269) (not x2262) x363)
+(or (not x624) (not x258) (not x152))
+(or (not x4716) (not x363) x269 x2262)
+(or (not x189) (not x257) (not x152))
+(or (not x363) (not x2262) x4716 x269)
+(or (not x890) (not x254) (not x152))
+(or (not x268) x4716 x362 x2262)
+(or (not x908) (not x250) (not x152))
+(or (not x4716) (not x268) (not x2262) x362)
+(or (not x562) (not x240) (not x150))
+(or (not x4716) (not x362) x268 x2262)
+(or (not x60) (not x237) (not x150))
+(or (not x362) (not x2262) x4716 x268)
+(or (not x911) (not x231) (not x150))
+(or (not x265) x4716 x361 x2262)
+(or (not x888) (not x228) (not x150))
+(or (not x4716) (not x265) (not x2262) x361)
+(or (not x881) (not x243) (not x146))
+(or (not x4716) (not x361) x265 x2262)
+(or (not x899) (not x237) (not x146))
+(or (not x361) (not x2262) x4716 x265)
+(or (not x910) (not x231) (not x146))
+(or (not x264) x4716 x360 x2262)
+(or (not x887) (not x228) (not x146))
+(or (not x4716) (not x264) (not x2262) x360)
+(or (not x829) (not x243) (not x142))
+(or (not x4716) (not x360) x264 x2262)
+(or (not x468) (not x240) (not x142))
+(or (not x360) (not x2262) x4716 x264)
+(or (not x909) (not x231) (not x142))
+(or (not x363) (not x269) x4715 x366 x272)
+(or (not x885) (not x228) (not x142))
+(or (not x362) (not x268) x4715 x363 x269)
+(or (not x679) (not x243) (not x136))
+(or (not x361) (not x265) x4715 x362 x268)
+(or (not x286) (not x240) (not x136))
+(or (not x360) (not x264) x4715 x361 x265)
+(or (not x913) (not x237) (not x136))
+(or x4715 x360 x264)
+(or (not x906) (not x228) (not x136))
+(or (not x366) (not x272) x4715)
+(or (not x624) (not x243) (not x130))
+(or (not x4715) (not x366) x272)
+(or (not x189) (not x240) (not x130))
+(or (not x4715) (not x272) x366)
+(or (not x896) (not x237) (not x130))
+(or (not x4715) (not x363) x269)
+(or (not x908) (not x231) (not x130))
+(or (not x4715) (not x269) x363)
+(or (not x562) (not x223) (not x125))
+(or (not x4715) (not x362) x268)
+(or (not x60) (not x221) (not x125))
+(or (not x4715) (not x268) x362)
+(or (not x894) (not x219) (not x125))
+(or (not x4715) (not x361) x265)
+(or (not x888) (not x216) (not x125))
+(or (not x4715) (not x265) x361)
+(or (not x881) (not x224) (not x121))
+(or (not x4715) (not x360) x264)
+(or (not x899) (not x221) (not x121))
+(or (not x4715) (not x264) x360)
+(or (not x893) (not x219) (not x121))
+(or (not x52) x4714 x4712 x343)
+(or (not x887) (not x216) (not x121))
+(or (not x4714) (not x343) (not x52) x4712)
+(or (not x829) (not x224) (not x115))
+(or (not x4714) x4712 x343 x52)
+(or (not x468) (not x223) (not x115))
+(or (not x343) x4714 x4712 x52)
+(or (not x891) (not x219) (not x115))
+(or (not x4712) (not x50) x4714 x4711 x341)
+(or (not x885) (not x216) (not x115))
+(or (not x4714) (not x4712) (not x341) (not x50) x4711)
+(or (not x738) (not x224) (not x113))
+(or (not x4714) (not x4712) x4711 x341 x50)
+(or (not x379) (not x223) (not x113))
+(or (not x4712) (not x341) x4714 x4711 x50)
+(or (not x897) (not x221) (not x113))
+(or (not x4711) (not x48) x4714 x4710 x337)
+(or (not x884) (not x216) (not x113))
+(or (not x4714) (not x4711) (not x337) (not x48) x4710)
+(or (not x624) (not x224) (not x109))
+(or (not x4714) (not x4711) x4710 x337 x48)
+(or (not x189) (not x223) (not x109))
+(or (not x4711) (not x337) x4714 x4710 x48)
+(or (not x896) (not x221) (not x109))
+(or (not x4710) (not x46) x4714 x4709 x331)
+(or (not x890) (not x219) (not x109))
+(or (not x4714) (not x4710) (not x331) (not x46) x4709)
+(or (not x562) (not x213) (not x106))
+(or (not x4714) (not x4710) x4709 x331 x46)
+(or (not x60) (not x211) (not x106))
+(or (not x4710) (not x331) x4714 x4709 x46)
+(or (not x894) (not x209) (not x106))
+(or (not x4709) (not x44) x4714 x4708 x329)
+(or (not x911) (not x207) (not x106))
+(or (not x4714) (not x4709) (not x329) (not x44) x4708)
+(or (not x881) (not x214) (not x105))
+(or (not x4714) (not x4709) x4708 x329 x44)
+(or (not x899) (not x211) (not x105))
+(or (not x4709) (not x329) x4714 x4708 x44)
+(or (not x893) (not x209) (not x105))
+(or (not x4708) (not x149) x4714 x4707 x326)
+(or (not x910) (not x207) (not x105))
+(or (not x4714) (not x4708) (not x326) (not x149) x4707)
+(or (not x829) (not x214) (not x103))
+(or (not x4714) (not x4708) x4707 x326 x149)
+(or (not x468) (not x213) (not x103))
+(or (not x4708) (not x326) x4714 x4707 x149)
+(or (not x891) (not x209) (not x103))
+(or (not x4714) (not x4713))
+(or (not x909) (not x207) (not x103))
+(or (not x4707) x4713)
+(or (not x738) (not x214) (not x100))
+(or (not x4713) x4707)
+(or (not x379) (not x213) (not x100))
+(or x4712 x343 x246)
+(or (not x897) (not x211) (not x100))
+(or (not x343) (not x246) x4712)
+(or (not x922) (not x207) (not x100))
+(or (not x4712) (not x343) x246)
+(or (not x679) (not x214) (not x98))
+(or (not x4712) (not x246) x343)
+(or (not x286) (not x213) (not x98))
+(or (not x4712) x4711 x341 x245)
+(or (not x913) (not x211) (not x98))
+(or (not x4712) (not x341) (not x245) x4711)
+(or (not x925) (not x209) (not x98))
+(or (not x4711) (not x341) x245)
+(or (not x458) (not x40) x3222 x188)
+(or (not x4711) (not x245) x341)
+(or (not x458) (not x41) x3048 x188)
+(or (not x4711) x4712)
+(or (not x458) (not x42) x2887 x188)
+(or (not x4711) x4710 x337 x242)
+(or (not x458) (not x43) x2694 x188)
+(or (not x4711) (not x337) (not x242) x4710)
+(or (not x456) (not x39) x3404 x188)
+(or (not x4710) (not x337) x242)
+(or (not x456) (not x41) x3029 x188)
+(or (not x4710) (not x242) x337)
+(or (not x456) (not x42) x2874 x188)
+(or (not x4710) x4711)
+(or (not x456) (not x43) x2670 x188)
+(or (not x4710) x4709 x331 x238)
+(or (not x453) (not x39) x3362 x188)
+(or (not x4710) (not x331) (not x238) x4709)
+(or (not x453) (not x40) x3209 x188)
+(or (not x4709) (not x331) x238)
+(or (not x453) (not x42) x2801 x188)
+(or (not x4709) (not x238) x331)
+(or (not x453) (not x43) x2611 x188)
+(or (not x4709) x4710)
+(or (not x451) (not x39) x3318 x188)
+(or (not x4709) x4708 x329 x233)
+(or (not x451) (not x40) x3140 x188)
+(or (not x4709) (not x329) (not x233) x4708)
+(or (not x451) (not x41) x2971 x188)
+(or (not x4708) (not x329) x233)
+(or (not x451) (not x43) x2567 x188)
+(or (not x4708) (not x233) x329)
+(or (not x449) (not x39) x3305 x188)
+(or (not x4708) x4709)
+(or (not x449) (not x40) x3127 x188)
+(or (not x4708) x4707 x326 x229)
+(or (not x449) (not x41) x2958 x188)
+(or (not x4708) (not x326) (not x229) x4707)
+(or (not x449) (not x42) x2788 x188)
+(or (not x4707) (not x326) x229)
+(or (not x447) (not x33) x3247 x175)
+(or (not x4707) (not x229) x326)
+(or (not x447) (not x34) x3083 x175)
+(or (not x4707) x4708)
+(or (not x447) (not x35) x2900 x175)
+(or (not x4706) (not x299) (not x204))
+(or (not x447) (not x36) x2770 x175)
+(or (not x299) (not x204) x4705)
+(or (not x445) (not x32) x3570 x175)
+(or (not x4706) (not x296) (not x204) x95)
+(or (not x445) (not x34) x3029 x175)
+(or (not x296) (not x204) (not x95) x4706)
+(or (not x445) (not x35) x2874 x175)
+(or (not x4705) (not x296) (not x204))
+(or (not x445) (not x36) x2670 x175)
+(or (not x4706) (not x293) (not x204) x94)
+(or (not x441) (not x32) x3511 x175)
+(or (not x293) (not x204) (not x94) x4706)
+(or (not x441) (not x33) x3209 x175)
+(or (not x4705) (not x293) (not x204))
+(or (not x441) (not x35) x2801 x175)
+(or (not x4706) (not x291) (not x204) x92)
+(or (not x441) (not x36) x2611 x175)
+(or (not x291) (not x204) (not x92) x4706)
+(or (not x438) (not x32) x3489 x175)
+(or (not x4705) (not x291) (not x204))
+(or (not x438) (not x33) x3140 x175)
+(or (not x4706) (not x288) (not x204) x91)
+(or (not x438) (not x34) x2971 x175)
+(or (not x288) (not x204) (not x91) x4706)
+(or (not x438) (not x36) x2567 x175)
+(or (not x4705) (not x288) (not x204))
+(or (not x436) (not x32) x3460 x175)
+(or (not x4706) (not x299) (not x203) x89)
+(or (not x436) (not x33) x3127 x175)
+(or (not x299) (not x203) (not x89) x4706)
+(or (not x436) (not x34) x2958 x175)
+(or (not x4705) (not x299) (not x203))
+(or (not x436) (not x35) x2788 x175)
+(or (not x4706) (not x296) (not x203))
+(or (not x430) (not x28) x3417 x153)
+(or (not x296) (not x203) x4705)
+(or (not x430) (not x29) x3083 x153)
+(or (not x4706) (not x293) (not x203) x88)
+(or (not x430) (not x30) x2900 x153)
+(or (not x293) (not x203) (not x88) x4706)
+(or (not x430) (not x31) x2770 x153)
+(or (not x4705) (not x293) (not x203))
+(or (not x428) (not x27) x3583 x153)
+(or (not x4706) (not x291) (not x203) x87)
+(or (not x428) (not x29) x3048 x153)
+(or (not x291) (not x203) (not x87) x4706)
+(or (not x428) (not x30) x2887 x153)
+(or (not x4705) (not x291) (not x203))
+(or (not x428) (not x31) x2694 x153)
+(or (not x4706) (not x288) (not x203) x86)
+(or (not x422) (not x27) x3511 x153)
+(or (not x288) (not x203) (not x86) x4706)
+(or (not x422) (not x28) x3362 x153)
+(or (not x4705) (not x288) (not x203))
+(or (not x422) (not x30) x2801 x153)
+(or (not x4706) (not x299) (not x200) x82)
+(or (not x422) (not x31) x2611 x153)
+(or (not x299) (not x200) (not x82) x4706)
+(or (not x417) (not x27) x3489 x153)
+(or (not x4705) (not x299) (not x200))
+(or (not x417) (not x28) x3318 x153)
+(or (not x4706) (not x296) (not x200) x81)
+(or (not x417) (not x29) x2971 x153)
+(or (not x296) (not x200) (not x81) x4706)
+(or (not x417) (not x31) x2567 x153)
+(or (not x4705) (not x296) (not x200))
+(or (not x415) (not x27) x3460 x153)
+(or (not x4706) (not x293) (not x200))
+(or (not x415) (not x28) x3305 x153)
+(or (not x293) (not x200) x4705)
+(or (not x415) (not x29) x2958 x153)
+(or (not x4706) (not x291) (not x200) x79)
+(or (not x415) (not x30) x2788 x153)
+(or (not x291) (not x200) (not x79) x4706)
+(or (not x413) (not x21) x3417 x131)
+(or (not x4705) (not x291) (not x200))
+(or (not x413) (not x22) x3247 x131)
+(or (not x4706) (not x288) (not x200) x77)
+(or (not x413) (not x23) x2900 x131)
+(or (not x288) (not x200) (not x77) x4706)
+(or (not x413) (not x24) x2770 x131)
+(or (not x4705) (not x288) (not x200))
+(or (not x412) (not x20) x3583 x131)
+(or (not x4706) (not x299) (not x197) x73)
+(or (not x412) (not x22) x3222 x131)
+(or (not x299) (not x197) (not x73) x4706)
+(or (not x412) (not x23) x2887 x131)
+(or (not x4705) (not x299) (not x197))
+(or (not x412) (not x24) x2694 x131)
+(or (not x4706) (not x296) (not x197) x67)
+(or (not x410) (not x20) x3570 x131)
+(or (not x296) (not x197) (not x67) x4706)
+(or (not x410) (not x21) x3404 x131)
+(or (not x4705) (not x296) (not x197))
+(or (not x410) (not x23) x2874 x131)
+(or (not x4706) (not x293) (not x197) x66)
+(or (not x410) (not x24) x2670 x131)
+(or (not x293) (not x197) (not x66) x4706)
+(or (not x407) (not x20) x3489 x131)
+(or (not x4705) (not x293) (not x197))
+(or (not x407) (not x21) x3318 x131)
+(or (not x4706) (not x291) (not x197))
+(or (not x407) (not x22) x3140 x131)
+(or (not x291) (not x197) x4705)
+(or (not x407) (not x24) x2567 x131)
+(or (not x4706) (not x288) (not x197) x65)
+(or (not x405) (not x20) x3460 x131)
+(or (not x288) (not x197) (not x65) x4706)
+(or (not x405) (not x21) x3305 x131)
+(or (not x4705) (not x288) (not x197))
+(or (not x405) (not x22) x3127 x131)
+(or (not x4706) (not x299) (not x194) x58)
+(or (not x405) (not x23) x2788 x131)
+(or (not x299) (not x194) (not x58) x4706)
+(or (not x403) (not x14) x3417 x110)
+(or (not x4705) (not x299) (not x194))
+(or (not x403) (not x15) x3247 x110)
+(or (not x4706) (not x296) (not x194) x57)
+(or (not x403) (not x16) x3083 x110)
+(or (not x296) (not x194) (not x57) x4706)
+(or (not x403) (not x17) x2770 x110)
+(or (not x4705) (not x296) (not x194))
+(or (not x402) (not x13) x3583 x110)
+(or (not x4706) (not x293) (not x194) x56)
+(or (not x402) (not x15) x3222 x110)
+(or (not x293) (not x194) (not x56) x4706)
+(or (not x402) (not x16) x3048 x110)
+(or (not x4705) (not x293) (not x194))
+(or (not x402) (not x17) x2694 x110)
+(or (not x4706) (not x291) (not x194) x55)
+(or (not x400) (not x13) x3570 x110)
+(or (not x291) (not x194) (not x55) x4706)
+(or (not x400) (not x14) x3404 x110)
+(or (not x4705) (not x291) (not x194))
+(or (not x400) (not x16) x3029 x110)
+(or (not x4706) (not x288) (not x194))
+(or (not x400) (not x17) x2670 x110)
+(or (not x288) (not x194) x4705)
+(or (not x398) (not x13) x3511 x110)
+(or (not x908) (not x4701) (not x4693) x4704 x4703)
+(or (not x398) (not x14) x3362 x110)
+(or (not x908) (not x4693) x4702 x4701)
+(or (not x398) (not x15) x3209 x110)
+(or (not x908) x4694 x4693)
+(or (not x398) (not x17) x2611 x110)
+(or (not x4703) (not x4701) (not x4693) x908)
+(or (not x395) (not x13) x3460 x110)
+(or (not x4704) (not x4701) (not x4693) x908)
+(or (not x395) (not x14) x3305 x110)
+(or (not x4702) (not x4693) x908)
+(or (not x395) (not x15) x3127 x110)
+(or (not x4694) x908)
+(or (not x395) (not x16) x2958 x110)
+(or (not x4704) (not x4703))
+(or (not x391) (not x7) x3417 x69)
+(or (not x272) x4704 x172 x2262)
+(or (not x391) (not x8) x3247 x69)
+(or (not x4704) (not x272) (not x2262) x172)
+(or (not x391) (not x9) x3083 x69)
+(or (not x4704) (not x172) x272 x2262)
+(or (not x391) (not x10) x2900 x69)
+(or (not x172) (not x2262) x4704 x272)
+(or (not x389) (not x6) x3583 x69)
+(or (not x269) x4704 x170 x2262)
+(or (not x389) (not x8) x3222 x69)
+(or (not x4704) (not x269) (not x2262) x170)
+(or (not x389) (not x9) x3048 x69)
+(or (not x4704) (not x170) x269 x2262)
+(or (not x389) (not x10) x2887 x69)
+(or (not x170) (not x2262) x4704 x269)
+(or (not x383) (not x6) x3570 x69)
+(or (not x268) x4704 x168 x2262)
+(or (not x383) (not x7) x3404 x69)
+(or (not x4704) (not x268) (not x2262) x168)
+(or (not x383) (not x9) x3029 x69)
+(or (not x4704) (not x168) x268 x2262)
+(or (not x383) (not x10) x2874 x69)
+(or (not x168) (not x2262) x4704 x268)
+(or (not x381) (not x6) x3511 x69)
+(or (not x265) x4704 x165 x2262)
+(or (not x381) (not x7) x3362 x69)
+(or (not x4704) (not x265) (not x2262) x165)
+(or (not x381) (not x8) x3209 x69)
+(or (not x4704) (not x165) x265 x2262)
+(or (not x381) (not x10) x2801 x69)
+(or (not x165) (not x2262) x4704 x265)
+(or (not x378) (not x6) x3489 x69)
+(or (not x264) x4704 x163 x2262)
+(or (not x378) (not x7) x3318 x69)
+(or (not x4704) (not x264) (not x2262) x163)
+(or (not x378) (not x8) x3140 x69)
+(or (not x4704) (not x163) x264 x2262)
+(or (not x378) (not x9) x2971 x69)
+(or (not x163) (not x2262) x4704 x264)
+(or (not x375) (not x40) x2135 x188)
+(or (not x269) (not x170) x4703 x272 x172)
+(or (not x375) (not x41) x1883 x188)
+(or (not x268) (not x168) x4703 x269 x170)
+(or (not x375) (not x42) x1591 x188)
+(or (not x265) (not x165) x4703 x268 x168)
+(or (not x375) (not x43) x1274 x188)
+(or (not x264) (not x163) x4703 x265 x165)
+(or (not x373) (not x39) x2265 x188)
+(or x4703 x264 x163)
+(or (not x373) (not x41) x1800 x188)
+(or (not x272) (not x172) x4703)
+(or (not x373) (not x42) x1498 x188)
+(or (not x4703) (not x172) x272)
+(or (not x373) (not x43) x1183 x188)
+(or (not x4703) (not x272) x172)
+(or (not x370) (not x39) x2249 x188)
+(or (not x4703) (not x170) x269)
+(or (not x370) (not x40) x2102 x188)
+(or (not x4703) (not x269) x170)
+(or (not x370) (not x42) x1446 x188)
+(or (not x4703) (not x168) x268)
+(or (not x370) (not x43) x1102 x188)
+(or (not x4703) (not x268) x168)
+(or (not x368) (not x39) x2205 x188)
+(or (not x4703) (not x165) x265)
+(or (not x368) (not x40) x2050 x188)
+(or (not x4703) (not x265) x165)
+(or (not x368) (not x41) x1748 x188)
+(or (not x4703) (not x163) x264)
+(or (not x368) (not x43) x1033 x188)
+(or (not x4703) (not x264) x163)
+(or (not x365) (not x39) x2162 x188)
+(or (not x52) x4702 x4700 x144)
+(or (not x365) (not x40) x1996 x188)
+(or (not x4702) (not x144) (not x52) x4700)
+(or (not x365) (not x41) x1695 x188)
+(or (not x4702) x4700 x144 x52)
+(or (not x365) (not x42) x1394 x188)
+(or (not x144) x4702 x4700 x52)
+(or (not x358) (not x33) x2148 x175)
+(or (not x4700) (not x50) x4702 x4699 x140)
+(or (not x358) (not x34) x1940 x175)
+(or (not x4702) (not x4700) (not x140) (not x50) x4699)
+(or (not x358) (not x35) x1643 x175)
+(or (not x4702) (not x4700) x4699 x140 x50)
+(or (not x358) (not x36) x1341 x175)
+(or (not x4700) (not x140) x4702 x4699 x50)
+(or (not x356) (not x32) x2441 x175)
+(or (not x4699) (not x48) x4702 x4698 x134)
+(or (not x356) (not x34) x1800 x175)
+(or (not x4702) (not x4699) (not x134) (not x48) x4698)
+(or (not x356) (not x35) x1498 x175)
+(or (not x4702) (not x4699) x4698 x134 x48)
+(or (not x356) (not x36) x1183 x175)
+(or (not x4699) (not x134) x4702 x4698 x48)
+(or (not x354) (not x32) x2413 x175)
+(or (not x4698) (not x46) x4702 x4697 x128)
+(or (not x354) (not x33) x2102 x175)
+(or (not x4702) (not x4698) (not x128) (not x46) x4697)
+(or (not x354) (not x35) x1446 x175)
+(or (not x4702) (not x4698) x4697 x128 x46)
+(or (not x354) (not x36) x1102 x175)
+(or (not x4698) (not x128) x4702 x4697 x46)
+(or (not x352) (not x32) x2364 x175)
+(or (not x4697) (not x44) x4702 x4696 x124)
+(or (not x352) (not x33) x2050 x175)
+(or (not x4702) (not x4697) (not x124) (not x44) x4696)
+(or (not x352) (not x34) x1748 x175)
+(or (not x4702) (not x4697) x4696 x124 x44)
+(or (not x352) (not x36) x1033 x175)
+(or (not x4697) (not x124) x4702 x4696 x44)
+(or (not x350) (not x32) x2351 x175)
+(or (not x4696) (not x149) x4702 x4695 x119)
+(or (not x350) (not x33) x1996 x175)
+(or (not x4702) (not x4696) (not x119) (not x149) x4695)
+(or (not x350) (not x34) x1695 x175)
+(or (not x4702) (not x4696) x4695 x119 x149)
+(or (not x350) (not x35) x1394 x175)
+(or (not x4696) (not x119) x4702 x4695 x149)
+(or (not x347) (not x28) x2288 x153)
+(or (not x4702) (not x4701))
+(or (not x347) (not x29) x1940 x153)
+(or (not x4695) x4701)
+(or (not x347) (not x30) x1643 x153)
+(or (not x4701) x4695)
+(or (not x347) (not x31) x1341 x153)
+(or x4700 x246 x144)
+(or (not x345) (not x27) x2467 x153)
+(or (not x246) (not x144) x4700)
+(or (not x345) (not x29) x1883 x153)
+(or (not x4700) (not x144) x246)
+(or (not x345) (not x30) x1591 x153)
+(or (not x4700) (not x246) x144)
+(or (not x345) (not x31) x1274 x153)
+(or (not x4700) x4699 x245 x140)
+(or (not x339) (not x27) x2413 x153)
+(or (not x4700) (not x245) (not x140) x4699)
+(or (not x339) (not x28) x2249 x153)
+(or (not x4699) (not x140) x245)
+(or (not x339) (not x30) x1446 x153)
+(or (not x4699) (not x245) x140)
+(or (not x339) (not x31) x1102 x153)
+(or (not x4699) x4700)
+(or (not x335) (not x27) x2364 x153)
+(or (not x4699) x4698 x242 x134)
+(or (not x335) (not x28) x2205 x153)
+(or (not x4699) (not x242) (not x134) x4698)
+(or (not x335) (not x29) x1748 x153)
+(or (not x4698) (not x134) x242)
+(or (not x335) (not x31) x1033 x153)
+(or (not x4698) (not x242) x134)
+(or (not x333) (not x27) x2351 x153)
+(or (not x4698) x4699)
+(or (not x333) (not x28) x2162 x153)
+(or (not x4698) x4697 x238 x128)
+(or (not x333) (not x29) x1695 x153)
+(or (not x4698) (not x238) (not x128) x4697)
+(or (not x333) (not x30) x1394 x153)
+(or (not x4697) (not x128) x238)
+(or (not x327) (not x21) x2288 x131)
+(or (not x4697) (not x238) x128)
+(or (not x327) (not x22) x2148 x131)
+(or (not x4697) x4698)
+(or (not x327) (not x23) x1643 x131)
+(or (not x4697) x4696 x233 x124)
+(or (not x327) (not x24) x1341 x131)
+(or (not x4697) (not x233) (not x124) x4696)
+(or (not x323) (not x20) x2467 x131)
+(or (not x4696) (not x124) x233)
+(or (not x323) (not x22) x2135 x131)
+(or (not x4696) (not x233) x124)
+(or (not x323) (not x23) x1591 x131)
+(or (not x4696) x4697)
+(or (not x323) (not x24) x1274 x131)
+(or (not x4696) x4695 x229 x119)
+(or (not x321) (not x20) x2441 x131)
+(or (not x4696) (not x229) (not x119) x4695)
+(or (not x321) (not x21) x2265 x131)
+(or (not x4695) (not x119) x229)
+(or (not x321) (not x23) x1498 x131)
+(or (not x4695) (not x229) x119)
+(or (not x321) (not x24) x1183 x131)
+(or (not x4695) x4696)
+(or (not x318) (not x20) x2364 x131)
+(or (not x4694) (not x204) (not x83))
+(or (not x318) (not x21) x2205 x131)
+(or (not x204) (not x83) x4693)
+(or (not x318) (not x22) x2050 x131)
+(or (not x4694) (not x204) (not x80) x95)
+(or (not x318) (not x24) x1033 x131)
+(or (not x204) (not x80) (not x95) x4694)
+(or (not x316) (not x20) x2351 x131)
+(or (not x4693) (not x204) (not x80))
+(or (not x316) (not x21) x2162 x131)
+(or (not x4694) (not x204) (not x78) x94)
+(or (not x316) (not x22) x1996 x131)
+(or (not x204) (not x78) (not x94) x4694)
+(or (not x316) (not x23) x1394 x131)
+(or (not x4693) (not x204) (not x78))
+(or (not x314) (not x14) x2288 x110)
+(or (not x4694) (not x204) (not x75) x92)
+(or (not x314) (not x15) x2148 x110)
+(or (not x204) (not x75) (not x92) x4694)
+(or (not x314) (not x16) x1940 x110)
+(or (not x4693) (not x204) (not x75))
+(or (not x314) (not x17) x1341 x110)
+(or (not x4694) (not x204) (not x71) x91)
+(or (not x313) (not x13) x2467 x110)
+(or (not x204) (not x71) (not x91) x4694)
+(or (not x313) (not x15) x2135 x110)
+(or (not x4693) (not x204) (not x71))
+(or (not x313) (not x16) x1883 x110)
+(or (not x4694) (not x203) (not x83) x89)
+(or (not x313) (not x17) x1274 x110)
+(or (not x203) (not x83) (not x89) x4694)
+(or (not x311) (not x13) x2441 x110)
+(or (not x4693) (not x203) (not x83))
+(or (not x311) (not x14) x2265 x110)
+(or (not x4694) (not x203) (not x80))
+(or (not x311) (not x16) x1800 x110)
+(or (not x203) (not x80) x4693)
+(or (not x311) (not x17) x1183 x110)
+(or (not x4694) (not x203) (not x78) x88)
+(or (not x309) (not x13) x2413 x110)
+(or (not x203) (not x78) (not x88) x4694)
+(or (not x309) (not x14) x2249 x110)
+(or (not x4693) (not x203) (not x78))
+(or (not x309) (not x15) x2102 x110)
+(or (not x4694) (not x203) (not x75) x87)
+(or (not x309) (not x17) x1102 x110)
+(or (not x203) (not x75) (not x87) x4694)
+(or (not x306) (not x13) x2351 x110)
+(or (not x4693) (not x203) (not x75))
+(or (not x306) (not x14) x2162 x110)
+(or (not x4694) (not x203) (not x71) x86)
+(or (not x306) (not x15) x1996 x110)
+(or (not x203) (not x71) (not x86) x4694)
+(or (not x306) (not x16) x1695 x110)
+(or (not x4693) (not x203) (not x71))
+(or (not x304) (not x7) x2288 x69)
+(or (not x4694) (not x200) (not x83) x82)
+(or (not x304) (not x8) x2148 x69)
+(or (not x200) (not x83) (not x82) x4694)
+(or (not x304) (not x9) x1940 x69)
+(or (not x4693) (not x200) (not x83))
+(or (not x304) (not x10) x1643 x69)
+(or (not x4694) (not x200) (not x80) x81)
+(or (not x303) (not x6) x2467 x69)
+(or (not x200) (not x80) (not x81) x4694)
+(or (not x303) (not x8) x2135 x69)
+(or (not x4693) (not x200) (not x80))
+(or (not x303) (not x9) x1883 x69)
+(or (not x4694) (not x200) (not x78))
+(or (not x303) (not x10) x1591 x69)
+(or (not x200) (not x78) x4693)
+(or (not x301) (not x6) x2441 x69)
+(or (not x4694) (not x200) (not x75) x79)
+(or (not x301) (not x7) x2265 x69)
+(or (not x200) (not x75) (not x79) x4694)
+(or (not x301) (not x9) x1800 x69)
+(or (not x4693) (not x200) (not x75))
+(or (not x301) (not x10) x1498 x69)
+(or (not x4694) (not x200) (not x71) x77)
+(or (not x298) (not x6) x2413 x69)
+(or (not x200) (not x71) (not x77) x4694)
+(or (not x298) (not x7) x2249 x69)
+(or (not x4693) (not x200) (not x71))
+(or (not x298) (not x8) x2102 x69)
+(or (not x4694) (not x197) (not x83) x73)
+(or (not x298) (not x10) x1446 x69)
+(or (not x197) (not x83) (not x73) x4694)
+(or (not x295) (not x6) x2364 x69)
+(or (not x4693) (not x197) (not x83))
+(or (not x295) (not x7) x2205 x69)
+(or (not x4694) (not x197) (not x80) x67)
+(or (not x295) (not x8) x2050 x69)
+(or (not x197) (not x80) (not x67) x4694)
+(or (not x295) (not x9) x1748 x69)
+(or (not x4693) (not x197) (not x80))
+(or (not x285) (not x40) x899 x188)
+(or (not x4694) (not x197) (not x78) x66)
+(or (not x285) (not x41) x893 x188)
+(or (not x197) (not x78) (not x66) x4694)
+(or (not x285) (not x42) x910 x188)
+(or (not x4693) (not x197) (not x78))
+(or (not x285) (not x43) x887 x188)
+(or (not x4694) (not x197) (not x75))
+(or (not x283) (not x39) x468 x188)
+(or (not x197) (not x75) x4693)
+(or (not x283) (not x41) x891 x188)
+(or (not x4694) (not x197) (not x71) x65)
+(or (not x283) (not x42) x909 x188)
+(or (not x197) (not x71) (not x65) x4694)
+(or (not x283) (not x43) x885 x188)
+(or (not x4693) (not x197) (not x71))
+(or (not x281) (not x39) x379 x188)
+(or (not x4694) (not x194) (not x83) x58)
+(or (not x281) (not x40) x897 x188)
+(or (not x194) (not x83) (not x58) x4694)
+(or (not x281) (not x42) x922 x188)
+(or (not x4693) (not x194) (not x83))
+(or (not x281) (not x43) x884 x188)
+(or (not x4694) (not x194) (not x80) x57)
+(or (not x279) (not x39) x286 x188)
+(or (not x194) (not x80) (not x57) x4694)
+(or (not x279) (not x40) x913 x188)
+(or (not x4693) (not x194) (not x80))
+(or (not x279) (not x41) x925 x188)
+(or (not x4694) (not x194) (not x78) x56)
+(or (not x279) (not x43) x906 x188)
+(or (not x194) (not x78) (not x56) x4694)
+(or (not x277) (not x39) x189 x188)
+(or (not x4693) (not x194) (not x78))
+(or (not x277) (not x40) x896 x188)
+(or (not x4694) (not x194) (not x75) x55)
+(or (not x277) (not x41) x890 x188)
+(or (not x194) (not x75) (not x55) x4694)
+(or (not x277) (not x42) x908 x188)
+(or (not x4693) (not x194) (not x75))
+(or (not x274) (not x33) x60 x175)
+(or (not x4694) (not x194) (not x71))
+(or (not x274) (not x34) x894 x175)
+(or (not x194) (not x71) x4693)
+(or (not x274) (not x35) x911 x175)
+(or (not x888) (not x4689) (not x4681) x4692 x4691)
+(or (not x274) (not x36) x888 x175)
+(or (not x888) (not x4681) x4690 x4689)
+(or (not x271) (not x32) x829 x175)
+(or (not x888) x4682 x4681)
+(or (not x271) (not x34) x891 x175)
+(or (not x4691) (not x4689) (not x4681) x888)
+(or (not x271) (not x35) x909 x175)
+(or (not x4692) (not x4689) (not x4681) x888)
+(or (not x271) (not x36) x885 x175)
+(or (not x4690) (not x4681) x888)
+(or (not x267) (not x32) x738 x175)
+(or (not x4682) x888)
+(or (not x267) (not x33) x897 x175)
+(or (not x4692) (not x4691))
+(or (not x267) (not x35) x922 x175)
+(or (not x172) x4692 x1 x2261)
+(or (not x267) (not x36) x884 x175)
+(or (not x4692) (not x172) (not x2261) x1)
+(or (not x262) (not x32) x679 x175)
+(or (not x4692) (not x1) x172 x2261)
+(or (not x262) (not x33) x913 x175)
+(or (not x1) (not x2261) x4692 x172)
+(or (not x262) (not x34) x925 x175)
+(or (not x170) x4692 x25 x2261)
+(or (not x262) (not x36) x906 x175)
+(or (not x4692) (not x170) (not x2261) x25)
+(or (not x260) (not x32) x624 x175)
+(or (not x4692) (not x25) x170 x2261)
+(or (not x260) (not x33) x896 x175)
+(or (not x25) (not x2261) x4692 x170)
+(or (not x260) (not x34) x890 x175)
+(or (not x168) x4692 x18 x2261)
+(or (not x260) (not x35) x908 x175)
+(or (not x4692) (not x168) (not x2261) x18)
+(or (not x258) (not x28) x562 x153)
+(or (not x4692) (not x18) x168 x2261)
+(or (not x258) (not x29) x894 x153)
+(or (not x18) (not x2261) x4692 x168)
+(or (not x258) (not x30) x911 x153)
+(or (not x165) x4692 x11 x2261)
+(or (not x258) (not x31) x888 x153)
+(or (not x4692) (not x165) (not x2261) x11)
+(or (not x257) (not x27) x881 x153)
+(or (not x4692) (not x11) x165 x2261)
+(or (not x257) (not x29) x893 x153)
+(or (not x11) (not x2261) x4692 x165)
+(or (not x257) (not x30) x910 x153)
+(or (not x163) x4692 x4 x2261)
+(or (not x257) (not x31) x887 x153)
+(or (not x4692) (not x163) (not x2261) x4)
+(or (not x254) (not x27) x738 x153)
+(or (not x4692) (not x4) x163 x2261)
+(or (not x254) (not x28) x379 x153)
+(or (not x4) (not x2261) x4692 x163)
+(or (not x254) (not x30) x922 x153)
+(or (not x25) (not x170) x4691 x1 x172)
+(or (not x254) (not x31) x884 x153)
+(or (not x18) (not x168) x4691 x25 x170)
+(or (not x250) (not x27) x679 x153)
+(or (not x11) (not x165) x4691 x18 x168)
+(or (not x250) (not x28) x286 x153)
+(or (not x4) (not x163) x4691 x11 x165)
+(or (not x250) (not x29) x925 x153)
+(or x4691 x4 x163)
+(or (not x250) (not x31) x906 x153)
+(or (not x1) (not x172) x4691)
+(or (not x248) (not x27) x624 x153)
+(or (not x4691) (not x1) x172)
+(or (not x248) (not x28) x189 x153)
+(or (not x4691) (not x172) x1)
+(or (not x248) (not x29) x890 x153)
+(or (not x4691) (not x25) x170)
+(or (not x248) (not x30) x908 x153)
+(or (not x4691) (not x170) x25)
+(or (not x243) (not x21) x562 x131)
+(or (not x4691) (not x18) x168)
+(or (not x243) (not x22) x60 x131)
+(or (not x4691) (not x168) x18)
+(or (not x243) (not x23) x911 x131)
+(or (not x4691) (not x11) x165)
+(or (not x243) (not x24) x888 x131)
+(or (not x4691) (not x165) x11)
+(or (not x240) (not x20) x881 x131)
+(or (not x4691) (not x4) x163)
+(or (not x240) (not x22) x899 x131)
+(or (not x4691) (not x163) x4)
+(or (not x240) (not x23) x910 x131)
+(or (not x52) x4690 x4688 x530)
+(or (not x240) (not x24) x887 x131)
+(or (not x4690) (not x530) (not x52) x4688)
+(or (not x237) (not x20) x829 x131)
+(or (not x4690) x4688 x530 x52)
+(or (not x237) (not x21) x468 x131)
+(or (not x530) x4690 x4688 x52)
+(or (not x237) (not x23) x909 x131)
+(or (not x4688) (not x50) x4690 x4687 x527)
+(or (not x237) (not x24) x885 x131)
+(or (not x4690) (not x4688) (not x527) (not x50) x4687)
+(or (not x231) (not x20) x679 x131)
+(or (not x4690) (not x4688) x4687 x527 x50)
+(or (not x231) (not x21) x286 x131)
+(or (not x4688) (not x527) x4690 x4687 x50)
+(or (not x231) (not x22) x913 x131)
+(or (not x4687) (not x48) x4690 x4686 x523)
+(or (not x231) (not x24) x906 x131)
+(or (not x4690) (not x4687) (not x523) (not x48) x4686)
+(or (not x228) (not x20) x624 x131)
+(or (not x4690) (not x4687) x4686 x523 x48)
+(or (not x228) (not x21) x189 x131)
+(or (not x4687) (not x523) x4690 x4686 x48)
+(or (not x228) (not x22) x896 x131)
+(or (not x4686) (not x46) x4690 x4685 x519)
+(or (not x228) (not x23) x908 x131)
+(or (not x4690) (not x4686) (not x519) (not x46) x4685)
+(or (not x224) (not x14) x562 x110)
+(or (not x4690) (not x4686) x4685 x519 x46)
+(or (not x224) (not x15) x60 x110)
+(or (not x4686) (not x519) x4690 x4685 x46)
+(or (not x224) (not x16) x894 x110)
+(or (not x4685) (not x44) x4690 x4684 x514)
+(or (not x224) (not x17) x888 x110)
+(or (not x4690) (not x4685) (not x514) (not x44) x4684)
+(or (not x223) (not x13) x881 x110)
+(or (not x4690) (not x4685) x4684 x514 x44)
+(or (not x223) (not x15) x899 x110)
+(or (not x4685) (not x514) x4690 x4684 x44)
+(or (not x223) (not x16) x893 x110)
+(or (not x4684) (not x149) x4690 x4683 x511)
+(or (not x223) (not x17) x887 x110)
+(or (not x4690) (not x4684) (not x511) (not x149) x4683)
+(or (not x221) (not x13) x829 x110)
+(or (not x4690) (not x4684) x4683 x511 x149)
+(or (not x221) (not x14) x468 x110)
+(or (not x4684) (not x511) x4690 x4683 x149)
+(or (not x221) (not x16) x891 x110)
+(or (not x4690) (not x4689))
+(or (not x221) (not x17) x885 x110)
+(or (not x4683) x4689)
+(or (not x219) (not x13) x738 x110)
+(or (not x4689) x4683)
+(or (not x219) (not x14) x379 x110)
+(or x4688 x530 x144)
+(or (not x219) (not x15) x897 x110)
+(or (not x530) (not x144) x4688)
+(or (not x219) (not x17) x884 x110)
+(or (not x4688) (not x530) x144)
+(or (not x216) (not x13) x624 x110)
+(or (not x4688) (not x144) x530)
+(or (not x216) (not x14) x189 x110)
+(or (not x4688) x4687 x527 x140)
+(or (not x216) (not x15) x896 x110)
+(or (not x4688) (not x527) (not x140) x4687)
+(or (not x216) (not x16) x890 x110)
+(or (not x4687) (not x527) x140)
+(or (not x214) (not x7) x562 x69)
+(or (not x4687) (not x140) x527)
+(or (not x214) (not x8) x60 x69)
+(or (not x4687) x4688)
+(or (not x214) (not x9) x894 x69)
+(or (not x4687) x4686 x523 x134)
+(or (not x214) (not x10) x911 x69)
+(or (not x4687) (not x523) (not x134) x4686)
+(or (not x213) (not x6) x881 x69)
+(or (not x4686) (not x523) x134)
+(or (not x213) (not x8) x899 x69)
+(or (not x4686) (not x134) x523)
+(or (not x213) (not x9) x893 x69)
+(or (not x4686) x4687)
+(or (not x213) (not x10) x910 x69)
+(or (not x4686) x4685 x519 x128)
+(or (not x211) (not x6) x829 x69)
+(or (not x4686) (not x519) (not x128) x4685)
+(or (not x211) (not x7) x468 x69)
+(or (not x4685) (not x519) x128)
+(or (not x211) (not x9) x891 x69)
+(or (not x4685) (not x128) x519)
+(or (not x211) (not x10) x909 x69)
+(or (not x4685) x4686)
+(or (not x209) (not x6) x738 x69)
+(or (not x4685) x4684 x514 x124)
+(or (not x209) (not x7) x379 x69)
+(or (not x4685) (not x514) (not x124) x4684)
+(or (not x209) (not x8) x897 x69)
+(or (not x4684) (not x514) x124)
+(or (not x209) (not x10) x922 x69)
+(or (not x4684) (not x124) x514)
+(or (not x207) (not x6) x679 x69)
+(or (not x4684) x4685)
+(or (not x207) (not x7) x286 x69)
+(or (not x4684) x4683 x511 x119)
+(or (not x207) (not x8) x913 x69)
+(or (not x4684) (not x511) (not x119) x4683)
+(or (not x207) (not x9) x925 x69)
+(or (not x4683) (not x511) x119)
+(or (not x4550) (not x4498))
+(or (not x4683) (not x119) x511)
+(or (not x4535) (not x4498))
+(or (not x4683) x4684)
+(or (not x4520) (not x4498))
+(or (not x4682) (not x483) (not x83))
+(or (not x4509) (not x4498))
+(or (not x483) (not x83) x4681)
+(or (not x4548) (not x4498) x4434)
+(or (not x4682) (not x481) (not x83) x95)
+(or (not x4532) (not x4498) x4420)
+(or (not x481) (not x83) (not x95) x4682)
+(or (not x4518) (not x4498) x4404)
+(or (not x4681) (not x481) (not x83))
+(or (not x4507) (not x4498) x4393)
+(or (not x4682) (not x478) (not x83) x94)
+(or (not x4544) (not x4498) x4432)
+(or (not x478) (not x83) (not x94) x4682)
+(or (not x4530) (not x4498) x4418)
+(or (not x4681) (not x478) (not x83))
+(or (not x4516) (not x4498) x4402)
+(or (not x4682) (not x476) (not x83) x92)
+(or (not x4505) (not x4498) x4391)
+(or (not x476) (not x83) (not x92) x4682)
+(or (not x4542) (not x4498) x4430)
+(or (not x4681) (not x476) (not x83))
+(or (not x4527) (not x4498) x4415)
+(or (not x4682) (not x473) (not x83) x91)
+(or (not x4514) (not x4498) x4400)
+(or (not x473) (not x83) (not x91) x4682)
+(or (not x4503) (not x4498) x4389)
+(or (not x4681) (not x473) (not x83))
+(or (not x4540) (not x4498) x4428)
+(or (not x4682) (not x483) (not x80) x89)
+(or (not x4523) (not x4498) x4412)
+(or (not x483) (not x80) (not x89) x4682)
+(or (not x4512) (not x4498) x4398)
+(or (not x4681) (not x483) (not x80))
+(or (not x4501) (not x4498) x4387)
+(or (not x4682) (not x481) (not x80))
+(or (not x4550) (not x4496) x4339)
+(or (not x481) (not x80) x4681)
+(or (not x4535) (not x4496) x4325)
+(or (not x4682) (not x478) (not x80) x88)
+(or (not x4520) (not x4496) x4313)
+(or (not x478) (not x80) (not x88) x4682)
+(or (not x4509) (not x4496) x4301)
+(or (not x4681) (not x478) (not x80))
+(or (not x4548) (not x4496))
+(or (not x4682) (not x476) (not x80) x87)
+(or (not x4532) (not x4496))
+(or (not x476) (not x80) (not x87) x4682)
+(or (not x4518) (not x4496))
+(or (not x4681) (not x476) (not x80))
+(or (not x4507) (not x4496))
+(or (not x4682) (not x473) (not x80) x86)
+(or (not x4544) (not x4496) x4334)
+(or (not x473) (not x80) (not x86) x4682)
+(or (not x4530) (not x4496) x4322)
+(or (not x4681) (not x473) (not x80))
+(or (not x4516) (not x4496) x4309)
+(or (not x4682) (not x483) (not x78) x82)
+(or (not x4505) (not x4496) x4297)
+(or (not x483) (not x78) (not x82) x4682)
+(or (not x4542) (not x4496) x4331)
+(or (not x4681) (not x483) (not x78))
+(or (not x4527) (not x4496) x4319)
+(or (not x4682) (not x481) (not x78) x81)
+(or (not x4514) (not x4496) x4307)
+(or (not x481) (not x78) (not x81) x4682)
+(or (not x4503) (not x4496) x4294)
+(or (not x4681) (not x481) (not x78))
+(or (not x4540) (not x4496) x4329)
+(or (not x4682) (not x478) (not x78))
+(or (not x4523) (not x4496) x4317)
+(or (not x478) (not x78) x4681)
+(or (not x4512) (not x4496) x4305)
+(or (not x4682) (not x476) (not x78) x79)
+(or (not x4501) (not x4496) x4292)
+(or (not x476) (not x78) (not x79) x4682)
+(or (not x4550) (not x4494) x4245)
+(or (not x4681) (not x476) (not x78))
+(or (not x4535) (not x4494) x4229)
+(or (not x4682) (not x473) (not x78) x77)
+(or (not x4520) (not x4494) x4218)
+(or (not x473) (not x78) (not x77) x4682)
+(or (not x4509) (not x4494) x4207)
+(or (not x4681) (not x473) (not x78))
+(or (not x4548) (not x4494) x4242)
+(or (not x4682) (not x483) (not x75) x73)
+(or (not x4532) (not x4494) x4227)
+(or (not x483) (not x75) (not x73) x4682)
+(or (not x4518) (not x4494) x4216)
+(or (not x4681) (not x483) (not x75))
+(or (not x4507) (not x4494) x4205)
+(or (not x4682) (not x481) (not x75) x67)
+(or (not x4544) (not x4494))
+(or (not x481) (not x75) (not x67) x4682)
+(or (not x4530) (not x4494))
+(or (not x4681) (not x481) (not x75))
+(or (not x4516) (not x4494))
+(or (not x4682) (not x478) (not x75) x66)
+(or (not x4505) (not x4494))
+(or (not x478) (not x75) (not x66) x4682)
+(or (not x4542) (not x4494) x4238)
+(or (not x4681) (not x478) (not x75))
+(or (not x4527) (not x4494) x4224)
+(or (not x4682) (not x476) (not x75))
+(or (not x4514) (not x4494) x4213)
+(or (not x476) (not x75) x4681)
+(or (not x4503) (not x4494) x4202)
+(or (not x4682) (not x473) (not x75) x65)
+(or (not x4540) (not x4494) x4235)
+(or (not x473) (not x75) (not x65) x4682)
+(or (not x4523) (not x4494) x4222)
+(or (not x4681) (not x473) (not x75))
+(or (not x4512) (not x4494) x4211)
+(or (not x4682) (not x483) (not x71) x58)
+(or (not x4501) (not x4494) x4200)
+(or (not x483) (not x71) (not x58) x4682)
+(or (not x4550) (not x4492) x4156)
+(or (not x4681) (not x483) (not x71))
+(or (not x4535) (not x4492) x4145)
+(or (not x4682) (not x481) (not x71) x57)
+(or (not x4520) (not x4492) x4132)
+(or (not x481) (not x71) (not x57) x4682)
+(or (not x4509) (not x4492) x4120)
+(or (not x4681) (not x481) (not x71))
+(or (not x4548) (not x4492) x4154)
+(or (not x4682) (not x478) (not x71) x56)
+(or (not x4532) (not x4492) x4143)
+(or (not x478) (not x71) (not x56) x4682)
+(or (not x4518) (not x4492) x4129)
+(or (not x4681) (not x478) (not x71))
+(or (not x4507) (not x4492) x4117)
+(or (not x4682) (not x476) (not x71) x55)
+(or (not x4544) (not x4492) x4152)
+(or (not x476) (not x71) (not x55) x4682)
+(or (not x4530) (not x4492) x4141)
+(or (not x4681) (not x476) (not x71))
+(or (not x4516) (not x4492) x4127)
+(or (not x4682) (not x473) (not x71))
+(or (not x4505) (not x4492) x4115)
+(or (not x473) (not x71) x4681)
+(or (not x4542) (not x4492))
+(or (not x887) (not x4677) (not x4669) x4680 x4679)
+(or (not x4527) (not x4492))
+(or (not x887) (not x4669) x4678 x4677)
+(or (not x4514) (not x4492))
+(or (not x887) x4670 x4669)
+(or (not x4503) (not x4492))
+(or (not x4679) (not x4677) (not x4669) x887)
+(or (not x4540) (not x4492) x4149)
+(or (not x4680) (not x4677) (not x4669) x887)
+(or (not x4523) (not x4492) x4138)
+(or (not x4678) (not x4669) x887)
+(or (not x4512) (not x4492) x4124)
+(or (not x4670) x887)
+(or (not x4501) (not x4492) x4112)
+(or (not x4680) (not x4679))
+(or (not x4550) (not x4490) x4073)
+(or (not x172) x4680 x171 x2261)
+(or (not x4535) (not x4490) x4062)
+(or (not x4680) (not x172) (not x2261) x171)
+(or (not x4520) (not x4490) x4051)
+(or (not x4680) (not x171) x172 x2261)
+(or (not x4509) (not x4490) x4038)
+(or (not x171) (not x2261) x4680 x172)
+(or (not x4548) (not x4490) x4071)
+(or (not x170) x4680 x169 x2261)
+(or (not x4532) (not x4490) x4060)
+(or (not x4680) (not x170) (not x2261) x169)
+(or (not x4518) (not x4490) x4049)
+(or (not x4680) (not x169) x170 x2261)
+(or (not x4507) (not x4490) x4035)
+(or (not x169) (not x2261) x4680 x170)
+(or (not x4544) (not x4490) x4069)
+(or (not x168) x4680 x167 x2261)
+(or (not x4530) (not x4490) x4057)
+(or (not x4680) (not x168) (not x2261) x167)
+(or (not x4516) (not x4490) x4046)
+(or (not x4680) (not x167) x168 x2261)
+(or (not x4505) (not x4490) x4032)
+(or (not x167) (not x2261) x4680 x168)
+(or (not x4542) (not x4490) x4066)
+(or (not x165) x4680 x164 x2261)
+(or (not x4527) (not x4490) x4055)
+(or (not x4680) (not x165) (not x2261) x164)
+(or (not x4514) (not x4490) x4043)
+(or (not x4680) (not x164) x165 x2261)
+(or (not x4503) (not x4490) x3926)
+(or (not x164) (not x2261) x4680 x165)
+(or (not x4540) (not x4490))
+(or (not x163) x4680 x162 x2261)
+(or (not x4523) (not x4490))
+(or (not x4680) (not x163) (not x2261) x162)
+(or (not x4512) (not x4490))
+(or (not x4680) (not x162) x163 x2261)
+(or (not x4501) (not x4490))
+(or (not x162) (not x2261) x4680 x163)
+(or (not x4449) (not x4396))
+(or (not x169) (not x170) x4679 x171 x172)
+(or (not x4437) (not x4396))
+(or (not x167) (not x168) x4679 x169 x170)
+(or (not x4424) (not x4396))
+(or (not x164) (not x165) x4679 x167 x168)
+(or (not x4410) (not x4396))
+(or (not x162) (not x163) x4679 x164 x165)
+(or (not x4446) (not x4396) x4532)
+(or x4679 x162 x163)
+(or (not x4434) (not x4396) x4518)
+(or (not x171) (not x172) x4679)
+(or (not x4420) (not x4396) x4507)
+(or (not x4679) (not x171) x172)
+(or (not x4404) (not x4396) x4496)
+(or (not x4679) (not x172) x171)
+(or (not x4444) (not x4396) x4530)
+(or (not x4679) (not x169) x170)
+(or (not x4432) (not x4396) x4516)
+(or (not x4679) (not x170) x169)
+(or (not x4418) (not x4396) x4505)
+(or (not x4679) (not x167) x168)
+(or (not x4402) (not x4396) x4494)
+(or (not x4679) (not x168) x167)
+(or (not x4441) (not x4396) x4527)
+(or (not x4679) (not x164) x165)
+(or (not x4430) (not x4396) x4514)
+(or (not x4679) (not x165) x164)
+(or (not x4415) (not x4396) x4503)
+(or (not x4679) (not x162) x163)
+(or (not x4400) (not x4396) x4492)
+(or (not x4679) (not x163) x162)
+(or (not x4439) (not x4396) x4523)
+(or (not x52) x4678 x4676 x143)
+(or (not x4428) (not x4396) x4512)
+(or (not x4678) (not x143) (not x52) x4676)
+(or (not x4412) (not x4396) x4501)
+(or (not x4678) x4676 x143 x52)
+(or (not x4398) (not x4396) x4490)
+(or (not x143) x4678 x4676 x52)
+(or (not x4449) (not x4393) x4341)
+(or (not x4676) (not x50) x4678 x4675 x139)
+(or (not x4437) (not x4393) x4327)
+(or (not x4678) (not x4676) (not x139) (not x50) x4675)
+(or (not x4424) (not x4393) x4315)
+(or (not x4678) (not x4676) x4675 x139 x50)
+(or (not x4410) (not x4393) x4303)
+(or (not x4676) (not x139) x4678 x4675 x50)
+(or (not x4446) (not x4393))
+(or (not x4675) (not x48) x4678 x4674 x133)
+(or (not x4434) (not x4393))
+(or (not x4678) (not x4675) (not x133) (not x48) x4674)
+(or (not x4420) (not x4393))
+(or (not x4678) (not x4675) x4674 x133 x48)
+(or (not x4404) (not x4393))
+(or (not x4675) (not x133) x4678 x4674 x48)
+(or (not x4444) (not x4393) x4334)
+(or (not x4674) (not x46) x4678 x4673 x127)
+(or (not x4432) (not x4393) x4322)
+(or (not x4678) (not x4674) (not x127) (not x46) x4673)
+(or (not x4418) (not x4393) x4309)
+(or (not x4678) (not x4674) x4673 x127 x46)
+(or (not x4402) (not x4393) x4297)
+(or (not x4674) (not x127) x4678 x4673 x46)
+(or (not x4441) (not x4393) x4331)
+(or (not x4673) (not x44) x4678 x4672 x123)
+(or (not x4430) (not x4393) x4319)
+(or (not x4678) (not x4673) (not x123) (not x44) x4672)
+(or (not x4415) (not x4393) x4307)
+(or (not x4678) (not x4673) x4672 x123 x44)
+(or (not x4400) (not x4393) x4294)
+(or (not x4673) (not x123) x4678 x4672 x44)
+(or (not x4439) (not x4393) x4329)
+(or (not x4672) (not x149) x4678 x4671 x118)
+(or (not x4428) (not x4393) x4317)
+(or (not x4678) (not x4672) (not x118) (not x149) x4671)
+(or (not x4412) (not x4393) x4305)
+(or (not x4678) (not x4672) x4671 x118 x149)
+(or (not x4398) (not x4393) x4292)
+(or (not x4672) (not x118) x4678 x4671 x149)
+(or (not x4449) (not x4391) x4248)
+(or (not x4678) (not x4677))
+(or (not x4437) (not x4391) x4231)
+(or (not x4671) x4677)
+(or (not x4424) (not x4391) x4220)
+(or (not x4677) x4671)
+(or (not x4410) (not x4391) x4209)
+(or x4676 x143 x144)
+(or (not x4446) (not x4391) x4242)
+(or (not x143) (not x144) x4676)
+(or (not x4434) (not x4391) x4227)
+(or (not x4676) (not x143) x144)
+(or (not x4420) (not x4391) x4216)
+(or (not x4676) (not x144) x143)
+(or (not x4404) (not x4391) x4205)
+(or (not x4676) x4675 x139 x140)
+(or (not x4444) (not x4391))
+(or (not x4676) (not x139) (not x140) x4675)
+(or (not x4432) (not x4391))
+(or (not x4675) (not x139) x140)
+(or (not x4418) (not x4391))
+(or (not x4675) (not x140) x139)
+(or (not x4402) (not x4391))
+(or (not x4675) x4676)
+(or (not x4441) (not x4391) x4238)
+(or (not x4675) x4674 x133 x134)
+(or (not x4430) (not x4391) x4224)
+(or (not x4675) (not x133) (not x134) x4674)
+(or (not x4415) (not x4391) x4213)
+(or (not x4674) (not x133) x134)
+(or (not x4400) (not x4391) x4202)
+(or (not x4674) (not x134) x133)
+(or (not x4439) (not x4391) x4235)
+(or (not x4674) x4675)
+(or (not x4428) (not x4391) x4222)
+(or (not x4674) x4673 x127 x128)
+(or (not x4412) (not x4391) x4211)
+(or (not x4674) (not x127) (not x128) x4673)
+(or (not x4398) (not x4391) x4200)
+(or (not x4673) (not x127) x128)
+(or (not x4449) (not x4389) x4158)
+(or (not x4673) (not x128) x127)
+(or (not x4437) (not x4389) x4147)
+(or (not x4673) x4674)
+(or (not x4424) (not x4389) x4134)
+(or (not x4673) x4672 x123 x124)
+(or (not x4410) (not x4389) x4122)
+(or (not x4673) (not x123) (not x124) x4672)
+(or (not x4446) (not x4389) x4154)
+(or (not x4672) (not x123) x124)
+(or (not x4434) (not x4389) x4143)
+(or (not x4672) (not x124) x123)
+(or (not x4420) (not x4389) x4129)
+(or (not x4672) x4673)
+(or (not x4404) (not x4389) x4117)
+(or (not x4672) x4671 x118 x119)
+(or (not x4444) (not x4389) x4152)
+(or (not x4672) (not x118) (not x119) x4671)
+(or (not x4432) (not x4389) x4141)
+(or (not x4671) (not x118) x119)
+(or (not x4418) (not x4389) x4127)
+(or (not x4671) (not x119) x118)
+(or (not x4402) (not x4389) x4115)
+(or (not x4671) x4672)
+(or (not x4441) (not x4389))
+(or (not x4670) (not x107) (not x83))
+(or (not x4430) (not x4389))
+(or (not x107) (not x83) x4669)
+(or (not x4415) (not x4389))
+(or (not x4670) (not x101) (not x83) x95)
+(or (not x4400) (not x4389))
+(or (not x101) (not x83) (not x95) x4670)
+(or (not x4439) (not x4389) x4149)
+(or (not x4669) (not x101) (not x83))
+(or (not x4428) (not x4389) x4138)
+(or (not x4670) (not x93) (not x83) x94)
+(or (not x4412) (not x4389) x4124)
+(or (not x93) (not x83) (not x94) x4670)
+(or (not x4398) (not x4389) x4112)
+(or (not x4669) (not x93) (not x83))
+(or (not x4449) (not x4387) x4075)
+(or (not x4670) (not x85) (not x83) x92)
+(or (not x4437) (not x4387) x4064)
+(or (not x85) (not x83) (not x92) x4670)
+(or (not x4424) (not x4387) x4053)
+(or (not x4669) (not x85) (not x83))
+(or (not x4410) (not x4387) x4041)
+(or (not x4670) (not x70) (not x83) x91)
+(or (not x4446) (not x4387) x4071)
+(or (not x70) (not x83) (not x91) x4670)
+(or (not x4434) (not x4387) x4060)
+(or (not x4669) (not x70) (not x83))
+(or (not x4420) (not x4387) x4049)
+(or (not x4670) (not x107) (not x80) x89)
+(or (not x4404) (not x4387) x4035)
+(or (not x107) (not x80) (not x89) x4670)
+(or (not x4444) (not x4387) x4069)
+(or (not x4669) (not x107) (not x80))
+(or (not x4432) (not x4387) x4057)
+(or (not x4670) (not x101) (not x80))
+(or (not x4418) (not x4387) x4046)
+(or (not x101) (not x80) x4669)
+(or (not x4402) (not x4387) x4032)
+(or (not x4670) (not x93) (not x80) x88)
+(or (not x4441) (not x4387) x4066)
+(or (not x93) (not x80) (not x88) x4670)
+(or (not x4430) (not x4387) x4055)
+(or (not x4669) (not x93) (not x80))
+(or (not x4415) (not x4387) x4043)
+(or (not x4670) (not x85) (not x80) x87)
+(or (not x4400) (not x4387) x3926)
+(or (not x85) (not x80) (not x87) x4670)
+(or (not x4439) (not x4387))
+(or (not x4669) (not x85) (not x80))
+(or (not x4428) (not x4387))
+(or (not x4670) (not x70) (not x80) x86)
+(or (not x4412) (not x4387))
+(or (not x70) (not x80) (not x86) x4670)
+(or (not x4398) (not x4387))
+(or (not x4669) (not x70) (not x80))
+(or (not x4352) (not x4303))
+(or (not x4670) (not x107) (not x78) x82)
+(or (not x4341) (not x4303))
+(or (not x107) (not x78) (not x82) x4670)
+(or (not x4327) (not x4303))
+(or (not x4669) (not x107) (not x78))
+(or (not x4315) (not x4303))
+(or (not x4670) (not x101) (not x78) x81)
+(or (not x4350) (not x4303) x4535)
+(or (not x101) (not x78) (not x81) x4670)
+(or (not x4339) (not x4303) x4520)
+(or (not x4669) (not x101) (not x78))
+(or (not x4325) (not x4303) x4509)
+(or (not x4670) (not x93) (not x78))
+(or (not x4313) (not x4303) x4498)
+(or (not x93) (not x78) x4669)
+(or (not x4347) (not x4303) x4530)
+(or (not x4670) (not x85) (not x78) x79)
+(or (not x4334) (not x4303) x4516)
+(or (not x85) (not x78) (not x79) x4670)
+(or (not x4322) (not x4303) x4505)
+(or (not x4669) (not x85) (not x78))
+(or (not x4309) (not x4303) x4494)
+(or (not x4670) (not x70) (not x78) x77)
+(or (not x4345) (not x4303) x4527)
+(or (not x70) (not x78) (not x77) x4670)
+(or (not x4331) (not x4303) x4514)
+(or (not x4669) (not x70) (not x78))
+(or (not x4319) (not x4303) x4503)
+(or (not x4670) (not x107) (not x75) x73)
+(or (not x4307) (not x4303) x4492)
+(or (not x107) (not x75) (not x73) x4670)
+(or (not x4343) (not x4303) x4523)
+(or (not x4669) (not x107) (not x75))
+(or (not x4329) (not x4303) x4512)
+(or (not x4670) (not x101) (not x75) x67)
+(or (not x4317) (not x4303) x4501)
+(or (not x101) (not x75) (not x67) x4670)
+(or (not x4305) (not x4303) x4490)
+(or (not x4669) (not x101) (not x75))
+(or (not x4352) (not x4301) x4437)
+(or (not x4670) (not x93) (not x75) x66)
+(or (not x4341) (not x4301) x4424)
+(or (not x93) (not x75) (not x66) x4670)
+(or (not x4327) (not x4301) x4410)
+(or (not x4669) (not x93) (not x75))
+(or (not x4315) (not x4301) x4396)
+(or (not x4670) (not x85) (not x75))
+(or (not x4350) (not x4301))
+(or (not x85) (not x75) x4669)
+(or (not x4339) (not x4301))
+(or (not x4670) (not x70) (not x75) x65)
+(or (not x4325) (not x4301))
+(or (not x70) (not x75) (not x65) x4670)
+(or (not x4313) (not x4301))
+(or (not x4669) (not x70) (not x75))
+(or (not x4347) (not x4301) x4432)
+(or (not x4670) (not x107) (not x71) x58)
+(or (not x4334) (not x4301) x4418)
+(or (not x107) (not x71) (not x58) x4670)
+(or (not x4322) (not x4301) x4402)
+(or (not x4669) (not x107) (not x71))
+(or (not x4309) (not x4301) x4391)
+(or (not x4670) (not x101) (not x71) x57)
+(or (not x4345) (not x4301) x4430)
+(or (not x101) (not x71) (not x57) x4670)
+(or (not x4331) (not x4301) x4415)
+(or (not x4669) (not x101) (not x71))
+(or (not x4319) (not x4301) x4400)
+(or (not x4670) (not x93) (not x71) x56)
+(or (not x4307) (not x4301) x4389)
+(or (not x93) (not x71) (not x56) x4670)
+(or (not x4343) (not x4301) x4428)
+(or (not x4669) (not x93) (not x71))
+(or (not x4329) (not x4301) x4412)
+(or (not x4670) (not x85) (not x71) x55)
+(or (not x4317) (not x4301) x4398)
+(or (not x85) (not x71) (not x55) x4670)
+(or (not x4305) (not x4301) x4387)
+(or (not x4669) (not x85) (not x71))
+(or (not x4352) (not x4297) x4248)
+(or (not x4670) (not x70) (not x71))
+(or (not x4341) (not x4297) x4231)
+(or (not x70) (not x71) x4669)
+(or (not x4327) (not x4297) x4220)
+(or (not x885) (not x4665) (not x4657) x4668 x4667)
+(or (not x4315) (not x4297) x4209)
+(or (not x885) (not x4657) x4666 x4665)
+(or (not x4350) (not x4297) x4245)
+(or (not x885) x4658 x4657)
+(or (not x4339) (not x4297) x4229)
+(or (not x4667) (not x4665) (not x4657) x885)
+(or (not x4325) (not x4297) x4218)
+(or (not x4668) (not x4665) (not x4657) x885)
+(or (not x4313) (not x4297) x4207)
+(or (not x4666) (not x4657) x885)
+(or (not x4347) (not x4297))
+(or (not x4658) x885)
+(or (not x4334) (not x4297))
+(or (not x4668) (not x4667))
+(or (not x4322) (not x4297))
+(or (not x172) x4668 x2 x2261)
+(or (not x4309) (not x4297))
+(or (not x4668) (not x172) (not x2261) x2)
+(or (not x4345) (not x4297) x4238)
+(or (not x4668) (not x2) x172 x2261)
+(or (not x4331) (not x4297) x4224)
+(or (not x2) (not x2261) x4668 x172)
+(or (not x4319) (not x4297) x4213)
+(or (not x170) x4668 x26 x2261)
+(or (not x4307) (not x4297) x4202)
+(or (not x4668) (not x170) (not x2261) x26)
+(or (not x4343) (not x4297) x4235)
+(or (not x4668) (not x26) x170 x2261)
+(or (not x4329) (not x4297) x4222)
+(or (not x26) (not x2261) x4668 x170)
+(or (not x4317) (not x4297) x4211)
+(or (not x168) x4668 x19 x2261)
+(or (not x4305) (not x4297) x4200)
+(or (not x4668) (not x168) (not x2261) x19)
+(or (not x4352) (not x4294) x4158)
+(or (not x4668) (not x19) x168 x2261)
+(or (not x4341) (not x4294) x4147)
+(or (not x19) (not x2261) x4668 x168)
+(or (not x4327) (not x4294) x4134)
+(or (not x165) x4668 x12 x2261)
+(or (not x4315) (not x4294) x4122)
+(or (not x4668) (not x165) (not x2261) x12)
+(or (not x4350) (not x4294) x4156)
+(or (not x4668) (not x12) x165 x2261)
+(or (not x4339) (not x4294) x4145)
+(or (not x12) (not x2261) x4668 x165)
+(or (not x4325) (not x4294) x4132)
+(or (not x163) x4668 x5 x2261)
+(or (not x4313) (not x4294) x4120)
+(or (not x4668) (not x163) (not x2261) x5)
+(or (not x4347) (not x4294) x4152)
+(or (not x4668) (not x5) x163 x2261)
+(or (not x4334) (not x4294) x4141)
+(or (not x5) (not x2261) x4668 x163)
+(or (not x4322) (not x4294) x4127)
+(or (not x26) (not x170) x4667 x2 x172)
+(or (not x4309) (not x4294) x4115)
+(or (not x19) (not x168) x4667 x26 x170)
+(or (not x4345) (not x4294))
+(or (not x12) (not x165) x4667 x19 x168)
+(or (not x4331) (not x4294))
+(or (not x5) (not x163) x4667 x12 x165)
+(or (not x4319) (not x4294))
+(or x4667 x5 x163)
+(or (not x4307) (not x4294))
+(or (not x2) (not x172) x4667)
+(or (not x4343) (not x4294) x4149)
+(or (not x4667) (not x2) x172)
+(or (not x4329) (not x4294) x4138)
+(or (not x4667) (not x172) x2)
+(or (not x4317) (not x4294) x4124)
+(or (not x4667) (not x26) x170)
+(or (not x4305) (not x4294) x4112)
+(or (not x4667) (not x170) x26)
+(or (not x4352) (not x4292) x4075)
+(or (not x4667) (not x19) x168)
+(or (not x4341) (not x4292) x4064)
+(or (not x4667) (not x168) x19)
+(or (not x4327) (not x4292) x4053)
+(or (not x4667) (not x12) x165)
+(or (not x4315) (not x4292) x4041)
+(or (not x4667) (not x165) x12)
+(or (not x4350) (not x4292) x4073)
+(or (not x4667) (not x5) x163)
+(or (not x4339) (not x4292) x4062)
+(or (not x4667) (not x163) x5)
+(or (not x4325) (not x4292) x4051)
+(or (not x52) x4666 x4664 x439)
+(or (not x4313) (not x4292) x4038)
+(or (not x4666) (not x439) (not x52) x4664)
+(or (not x4347) (not x4292) x4069)
+(or (not x4666) x4664 x439 x52)
+(or (not x4334) (not x4292) x4057)
+(or (not x439) x4666 x4664 x52)
+(or (not x4322) (not x4292) x4046)
+(or (not x4664) (not x50) x4666 x4663 x434)
+(or (not x4309) (not x4292) x4032)
+(or (not x4666) (not x4664) (not x434) (not x50) x4663)
+(or (not x4345) (not x4292) x4066)
+(or (not x4666) (not x4664) x4663 x434 x50)
+(or (not x4331) (not x4292) x4055)
+(or (not x4664) (not x434) x4666 x4663 x50)
+(or (not x4319) (not x4292) x4043)
+(or (not x4663) (not x48) x4666 x4662 x432)
+(or (not x4307) (not x4292) x3926)
+(or (not x4666) (not x4663) (not x432) (not x48) x4662)
+(or (not x4343) (not x4292))
+(or (not x4666) (not x4663) x4662 x432 x48)
+(or (not x4329) (not x4292))
+(or (not x4663) (not x432) x4666 x4662 x48)
+(or (not x4317) (not x4292))
+(or (not x4662) (not x46) x4666 x4661 x429)
+(or (not x4305) (not x4292))
+(or (not x4666) (not x4662) (not x429) (not x46) x4661)
+(or (not x4261) (not x4209))
+(or (not x4666) (not x4662) x4661 x429 x46)
+(or (not x4248) (not x4209))
+(or (not x4662) (not x429) x4666 x4661 x46)
+(or (not x4231) (not x4209))
+(or (not x4661) (not x44) x4666 x4660 x424)
+(or (not x4220) (not x4209))
+(or (not x4666) (not x4661) (not x424) (not x44) x4660)
+(or (not x4259) (not x4209) x4535)
+(or (not x4666) (not x4661) x4660 x424 x44)
+(or (not x4245) (not x4209) x4520)
+(or (not x4661) (not x424) x4666 x4660 x44)
+(or (not x4229) (not x4209) x4509)
+(or (not x4660) (not x149) x4666 x4659 x420)
+(or (not x4218) (not x4209) x4498)
+(or (not x4666) (not x4660) (not x420) (not x149) x4659)
+(or (not x4257) (not x4209) x4532)
+(or (not x4666) (not x4660) x4659 x420 x149)
+(or (not x4242) (not x4209) x4518)
+(or (not x4660) (not x420) x4666 x4659 x149)
+(or (not x4227) (not x4209) x4507)
+(or (not x4666) (not x4665))
+(or (not x4216) (not x4209) x4496)
+(or (not x4659) x4665)
+(or (not x4252) (not x4209) x4527)
+(or (not x4665) x4659)
+(or (not x4238) (not x4209) x4514)
+(or x4664 x439 x144)
+(or (not x4224) (not x4209) x4503)
+(or (not x439) (not x144) x4664)
+(or (not x4213) (not x4209) x4492)
+(or (not x4664) (not x439) x144)
+(or (not x4250) (not x4209) x4523)
+(or (not x4664) (not x144) x439)
+(or (not x4235) (not x4209) x4512)
+(or (not x4664) x4663 x434 x140)
+(or (not x4222) (not x4209) x4501)
+(or (not x4664) (not x434) (not x140) x4663)
+(or (not x4211) (not x4209) x4490)
+(or (not x4663) (not x434) x140)
+(or (not x4261) (not x4207) x4437)
+(or (not x4663) (not x140) x434)
+(or (not x4248) (not x4207) x4424)
+(or (not x4663) x4664)
+(or (not x4231) (not x4207) x4410)
+(or (not x4663) x4662 x432 x134)
+(or (not x4220) (not x4207) x4396)
+(or (not x4663) (not x432) (not x134) x4662)
+(or (not x4259) (not x4207))
+(or (not x4662) (not x432) x134)
+(or (not x4245) (not x4207))
+(or (not x4662) (not x134) x432)
+(or (not x4229) (not x4207))
+(or (not x4662) x4663)
+(or (not x4218) (not x4207))
+(or (not x4662) x4661 x429 x128)
+(or (not x4257) (not x4207) x4434)
+(or (not x4662) (not x429) (not x128) x4661)
+(or (not x4242) (not x4207) x4420)
+(or (not x4661) (not x429) x128)
+(or (not x4227) (not x4207) x4404)
+(or (not x4661) (not x128) x429)
+(or (not x4216) (not x4207) x4393)
+(or (not x4661) x4662)
+(or (not x4252) (not x4207) x4430)
+(or (not x4661) x4660 x424 x124)
+(or (not x4238) (not x4207) x4415)
+(or (not x4661) (not x424) (not x124) x4660)
+(or (not x4224) (not x4207) x4400)
+(or (not x4660) (not x424) x124)
+(or (not x4213) (not x4207) x4389)
+(or (not x4660) (not x124) x424)
+(or (not x4250) (not x4207) x4428)
+(or (not x4660) x4661)
+(or (not x4235) (not x4207) x4412)
+(or (not x4660) x4659 x420 x119)
+(or (not x4222) (not x4207) x4398)
+(or (not x4660) (not x420) (not x119) x4659)
+(or (not x4211) (not x4207) x4387)
+(or (not x4659) (not x420) x119)
+(or (not x4261) (not x4205) x4341)
+(or (not x4659) (not x119) x420)
+(or (not x4248) (not x4205) x4327)
+(or (not x4659) x4660)
+(or (not x4231) (not x4205) x4315)
+(or (not x4658) (not x393) (not x83))
+(or (not x4220) (not x4205) x4303)
+(or (not x393) (not x83) x4657)
+(or (not x4259) (not x4205) x4339)
+(or (not x4658) (not x392) (not x83) x95)
+(or (not x4245) (not x4205) x4325)
+(or (not x392) (not x83) (not x95) x4658)
+(or (not x4229) (not x4205) x4313)
+(or (not x4657) (not x392) (not x83))
+(or (not x4218) (not x4205) x4301)
+(or (not x4658) (not x390) (not x83) x94)
+(or (not x4257) (not x4205))
+(or (not x390) (not x83) (not x94) x4658)
+(or (not x4242) (not x4205))
+(or (not x4657) (not x390) (not x83))
+(or (not x4227) (not x4205))
+(or (not x4658) (not x387) (not x83) x92)
+(or (not x4216) (not x4205))
+(or (not x387) (not x83) (not x92) x4658)
+(or (not x4252) (not x4205) x4331)
+(or (not x4657) (not x387) (not x83))
+(or (not x4238) (not x4205) x4319)
+(or (not x4658) (not x384) (not x83) x91)
+(or (not x4224) (not x4205) x4307)
+(or (not x384) (not x83) (not x91) x4658)
+(or (not x4213) (not x4205) x4294)
+(or (not x4657) (not x384) (not x83))
+(or (not x4250) (not x4205) x4329)
+(or (not x4658) (not x393) (not x80) x89)
+(or (not x4235) (not x4205) x4317)
+(or (not x393) (not x80) (not x89) x4658)
+(or (not x4222) (not x4205) x4305)
+(or (not x4657) (not x393) (not x80))
+(or (not x4211) (not x4205) x4292)
+(or (not x4658) (not x392) (not x80))
+(or (not x4261) (not x4202) x4158)
+(or (not x392) (not x80) x4657)
+(or (not x4248) (not x4202) x4147)
+(or (not x4658) (not x390) (not x80) x88)
+(or (not x4231) (not x4202) x4134)
+(or (not x390) (not x80) (not x88) x4658)
+(or (not x4220) (not x4202) x4122)
+(or (not x4657) (not x390) (not x80))
+(or (not x4259) (not x4202) x4156)
+(or (not x4658) (not x387) (not x80) x87)
+(or (not x4245) (not x4202) x4145)
+(or (not x387) (not x80) (not x87) x4658)
+(or (not x4229) (not x4202) x4132)
+(or (not x4657) (not x387) (not x80))
+(or (not x4218) (not x4202) x4120)
+(or (not x4658) (not x384) (not x80) x86)
+(or (not x4257) (not x4202) x4154)
+(or (not x384) (not x80) (not x86) x4658)
+(or (not x4242) (not x4202) x4143)
+(or (not x4657) (not x384) (not x80))
+(or (not x4227) (not x4202) x4129)
+(or (not x4658) (not x393) (not x78) x82)
+(or (not x4216) (not x4202) x4117)
+(or (not x393) (not x78) (not x82) x4658)
+(or (not x4252) (not x4202))
+(or (not x4657) (not x393) (not x78))
+(or (not x4238) (not x4202))
+(or (not x4658) (not x392) (not x78) x81)
+(or (not x4224) (not x4202))
+(or (not x392) (not x78) (not x81) x4658)
+(or (not x4213) (not x4202))
+(or (not x4657) (not x392) (not x78))
+(or (not x4250) (not x4202) x4149)
+(or (not x4658) (not x390) (not x78))
+(or (not x4235) (not x4202) x4138)
+(or (not x390) (not x78) x4657)
+(or (not x4222) (not x4202) x4124)
+(or (not x4658) (not x387) (not x78) x79)
+(or (not x4211) (not x4202) x4112)
+(or (not x387) (not x78) (not x79) x4658)
+(or (not x4261) (not x4200) x4075)
+(or (not x4657) (not x387) (not x78))
+(or (not x4248) (not x4200) x4064)
+(or (not x4658) (not x384) (not x78) x77)
+(or (not x4231) (not x4200) x4053)
+(or (not x384) (not x78) (not x77) x4658)
+(or (not x4220) (not x4200) x4041)
+(or (not x4657) (not x384) (not x78))
+(or (not x4259) (not x4200) x4073)
+(or (not x4658) (not x393) (not x75) x73)
+(or (not x4245) (not x4200) x4062)
+(or (not x393) (not x75) (not x73) x4658)
+(or (not x4229) (not x4200) x4051)
+(or (not x4657) (not x393) (not x75))
+(or (not x4218) (not x4200) x4038)
+(or (not x4658) (not x392) (not x75) x67)
+(or (not x4257) (not x4200) x4071)
+(or (not x392) (not x75) (not x67) x4658)
+(or (not x4242) (not x4200) x4060)
+(or (not x4657) (not x392) (not x75))
+(or (not x4227) (not x4200) x4049)
+(or (not x4658) (not x390) (not x75) x66)
+(or (not x4216) (not x4200) x4035)
+(or (not x390) (not x75) (not x66) x4658)
+(or (not x4252) (not x4200) x4066)
+(or (not x4657) (not x390) (not x75))
+(or (not x4238) (not x4200) x4055)
+(or (not x4658) (not x387) (not x75))
+(or (not x4224) (not x4200) x4043)
+(or (not x387) (not x75) x4657)
+(or (not x4213) (not x4200) x3926)
+(or (not x4658) (not x384) (not x75) x65)
+(or (not x4250) (not x4200))
+(or (not x384) (not x75) (not x65) x4658)
+(or (not x4235) (not x4200))
+(or (not x4657) (not x384) (not x75))
+(or (not x4222) (not x4200))
+(or (not x4658) (not x393) (not x71) x58)
+(or (not x4211) (not x4200))
+(or (not x393) (not x71) (not x58) x4658)
+(or (not x4169) (not x4122))
+(or (not x4657) (not x393) (not x71))
+(or (not x4158) (not x4122))
+(or (not x4658) (not x392) (not x71) x57)
+(or (not x4147) (not x4122))
+(or (not x392) (not x71) (not x57) x4658)
+(or (not x4134) (not x4122))
+(or (not x4657) (not x392) (not x71))
+(or (not x4167) (not x4122) x4535)
+(or (not x4658) (not x390) (not x71) x56)
+(or (not x4156) (not x4122) x4520)
+(or (not x390) (not x71) (not x56) x4658)
+(or (not x4145) (not x4122) x4509)
+(or (not x4657) (not x390) (not x71))
+(or (not x4132) (not x4122) x4498)
+(or (not x4658) (not x387) (not x71) x55)
+(or (not x4165) (not x4122) x4532)
+(or (not x387) (not x71) (not x55) x4658)
+(or (not x4154) (not x4122) x4518)
+(or (not x4657) (not x387) (not x71))
+(or (not x4143) (not x4122) x4507)
+(or (not x4658) (not x384) (not x71))
+(or (not x4129) (not x4122) x4496)
+(or (not x384) (not x71) x4657)
+(or (not x4163) (not x4122) x4530)
+(or (not x884) (not x4653) (not x4645) x4656 x4655)
+(or (not x4152) (not x4122) x4516)
+(or (not x884) (not x4645) x4654 x4653)
+(or (not x4141) (not x4122) x4505)
+(or (not x884) x4646 x4645)
+(or (not x4127) (not x4122) x4494)
+(or (not x4655) (not x4653) (not x4645) x884)
+(or (not x4160) (not x4122) x4523)
+(or (not x4656) (not x4653) (not x4645) x884)
+(or (not x4149) (not x4122) x4512)
+(or (not x4654) (not x4645) x884)
+(or (not x4138) (not x4122) x4501)
+(or (not x4646) x884)
+(or (not x4124) (not x4122) x4490)
+(or (not x4656) (not x4655))
+(or (not x4169) (not x4120) x4437)
+(or (not x172) x4656 x366 x2261)
+(or (not x4158) (not x4120) x4424)
+(or (not x4656) (not x172) (not x2261) x366)
+(or (not x4147) (not x4120) x4410)
+(or (not x4656) (not x366) x172 x2261)
+(or (not x4134) (not x4120) x4396)
+(or (not x366) (not x2261) x4656 x172)
+(or (not x4167) (not x4120))
+(or (not x170) x4656 x363 x2261)
+(or (not x4156) (not x4120))
+(or (not x4656) (not x170) (not x2261) x363)
+(or (not x4145) (not x4120))
+(or (not x4656) (not x363) x170 x2261)
+(or (not x4132) (not x4120))
+(or (not x363) (not x2261) x4656 x170)
+(or (not x4165) (not x4120) x4434)
+(or (not x168) x4656 x362 x2261)
+(or (not x4154) (not x4120) x4420)
+(or (not x4656) (not x168) (not x2261) x362)
+(or (not x4143) (not x4120) x4404)
+(or (not x4656) (not x362) x168 x2261)
+(or (not x4129) (not x4120) x4393)
+(or (not x362) (not x2261) x4656 x168)
+(or (not x4163) (not x4120) x4432)
+(or (not x165) x4656 x361 x2261)
+(or (not x4152) (not x4120) x4418)
+(or (not x4656) (not x165) (not x2261) x361)
+(or (not x4141) (not x4120) x4402)
+(or (not x4656) (not x361) x165 x2261)
+(or (not x4127) (not x4120) x4391)
+(or (not x361) (not x2261) x4656 x165)
+(or (not x4160) (not x4120) x4428)
+(or (not x163) x4656 x360 x2261)
+(or (not x4149) (not x4120) x4412)
+(or (not x4656) (not x163) (not x2261) x360)
+(or (not x4138) (not x4120) x4398)
+(or (not x4656) (not x360) x163 x2261)
+(or (not x4124) (not x4120) x4387)
+(or (not x360) (not x2261) x4656 x163)
+(or (not x4169) (not x4117) x4341)
+(or (not x363) (not x170) x4655 x366 x172)
+(or (not x4158) (not x4117) x4327)
+(or (not x362) (not x168) x4655 x363 x170)
+(or (not x4147) (not x4117) x4315)
+(or (not x361) (not x165) x4655 x362 x168)
+(or (not x4134) (not x4117) x4303)
+(or (not x360) (not x163) x4655 x361 x165)
+(or (not x4167) (not x4117) x4339)
+(or x4655 x360 x163)
+(or (not x4156) (not x4117) x4325)
+(or (not x366) (not x172) x4655)
+(or (not x4145) (not x4117) x4313)
+(or (not x4655) (not x366) x172)
+(or (not x4132) (not x4117) x4301)
+(or (not x4655) (not x172) x366)
+(or (not x4165) (not x4117))
+(or (not x4655) (not x363) x170)
+(or (not x4154) (not x4117))
+(or (not x4655) (not x170) x363)
+(or (not x4143) (not x4117))
+(or (not x4655) (not x362) x168)
+(or (not x4129) (not x4117))
+(or (not x4655) (not x168) x362)
+(or (not x4163) (not x4117) x4334)
+(or (not x4655) (not x361) x165)
+(or (not x4152) (not x4117) x4322)
+(or (not x4655) (not x165) x361)
+(or (not x4141) (not x4117) x4309)
+(or (not x4655) (not x360) x163)
+(or (not x4127) (not x4117) x4297)
+(or (not x4655) (not x163) x360)
+(or (not x4160) (not x4117) x4329)
+(or (not x52) x4654 x4652 x343)
+(or (not x4149) (not x4117) x4317)
+(or (not x4654) (not x343) (not x52) x4652)
+(or (not x4138) (not x4117) x4305)
+(or (not x4654) x4652 x343 x52)
+(or (not x4124) (not x4117) x4292)
+(or (not x343) x4654 x4652 x52)
+(or (not x4169) (not x4115) x4248)
+(or (not x4652) (not x50) x4654 x4651 x341)
+(or (not x4158) (not x4115) x4231)
+(or (not x4654) (not x4652) (not x341) (not x50) x4651)
+(or (not x4147) (not x4115) x4220)
+(or (not x4654) (not x4652) x4651 x341 x50)
+(or (not x4134) (not x4115) x4209)
+(or (not x4652) (not x341) x4654 x4651 x50)
+(or (not x4167) (not x4115) x4245)
+(or (not x4651) (not x48) x4654 x4650 x337)
+(or (not x4156) (not x4115) x4229)
+(or (not x4654) (not x4651) (not x337) (not x48) x4650)
+(or (not x4145) (not x4115) x4218)
+(or (not x4654) (not x4651) x4650 x337 x48)
+(or (not x4132) (not x4115) x4207)
+(or (not x4651) (not x337) x4654 x4650 x48)
+(or (not x4165) (not x4115) x4242)
+(or (not x4650) (not x46) x4654 x4649 x331)
+(or (not x4154) (not x4115) x4227)
+(or (not x4654) (not x4650) (not x331) (not x46) x4649)
+(or (not x4143) (not x4115) x4216)
+(or (not x4654) (not x4650) x4649 x331 x46)
+(or (not x4129) (not x4115) x4205)
+(or (not x4650) (not x331) x4654 x4649 x46)
+(or (not x4163) (not x4115))
+(or (not x4649) (not x44) x4654 x4648 x329)
+(or (not x4152) (not x4115))
+(or (not x4654) (not x4649) (not x329) (not x44) x4648)
+(or (not x4141) (not x4115))
+(or (not x4654) (not x4649) x4648 x329 x44)
+(or (not x4127) (not x4115))
+(or (not x4649) (not x329) x4654 x4648 x44)
+(or (not x4160) (not x4115) x4235)
+(or (not x4648) (not x149) x4654 x4647 x326)
+(or (not x4149) (not x4115) x4222)
+(or (not x4654) (not x4648) (not x326) (not x149) x4647)
+(or (not x4138) (not x4115) x4211)
+(or (not x4654) (not x4648) x4647 x326 x149)
+(or (not x4124) (not x4115) x4200)
+(or (not x4648) (not x326) x4654 x4647 x149)
+(or (not x4169) (not x4112) x4075)
+(or (not x4654) (not x4653))
+(or (not x4158) (not x4112) x4064)
+(or (not x4647) x4653)
+(or (not x4147) (not x4112) x4053)
+(or (not x4653) x4647)
+(or (not x4134) (not x4112) x4041)
+(or x4652 x343 x144)
+(or (not x4167) (not x4112) x4073)
+(or (not x343) (not x144) x4652)
+(or (not x4156) (not x4112) x4062)
+(or (not x4652) (not x343) x144)
+(or (not x4145) (not x4112) x4051)
+(or (not x4652) (not x144) x343)
+(or (not x4132) (not x4112) x4038)
+(or (not x4652) x4651 x341 x140)
+(or (not x4165) (not x4112) x4071)
+(or (not x4652) (not x341) (not x140) x4651)
+(or (not x4154) (not x4112) x4060)
+(or (not x4651) (not x341) x140)
+(or (not x4143) (not x4112) x4049)
+(or (not x4651) (not x140) x341)
+(or (not x4129) (not x4112) x4035)
+(or (not x4651) x4652)
+(or (not x4163) (not x4112) x4069)
+(or (not x4651) x4650 x337 x134)
+(or (not x4152) (not x4112) x4057)
+(or (not x4651) (not x337) (not x134) x4650)
+(or (not x4141) (not x4112) x4046)
+(or (not x4650) (not x337) x134)
+(or (not x4127) (not x4112) x4032)
+(or (not x4650) (not x134) x337)
+(or (not x4160) (not x4112))
+(or (not x4650) x4651)
+(or (not x4149) (not x4112))
+(or (not x4650) x4649 x331 x128)
+(or (not x4138) (not x4112))
+(or (not x4650) (not x331) (not x128) x4649)
+(or (not x4124) (not x4112))
+(or (not x4649) (not x331) x128)
+(or (not x4088) (not x4041))
+(or (not x4649) (not x128) x331)
+(or (not x4075) (not x4041))
+(or (not x4649) x4650)
+(or (not x4064) (not x4041))
+(or (not x4649) x4648 x329 x124)
+(or (not x4053) (not x4041))
+(or (not x4649) (not x329) (not x124) x4648)
+(or (not x4086) (not x4041) x4535)
+(or (not x4648) (not x329) x124)
+(or (not x4073) (not x4041) x4520)
+(or (not x4648) (not x124) x329)
+(or (not x4062) (not x4041) x4509)
+(or (not x4648) x4649)
+(or (not x4051) (not x4041) x4498)
+(or (not x4648) x4647 x326 x119)
+(or (not x4083) (not x4041) x4532)
+(or (not x4648) (not x326) (not x119) x4647)
+(or (not x4071) (not x4041) x4518)
+(or (not x4647) (not x326) x119)
+(or (not x4060) (not x4041) x4507)
+(or (not x4647) (not x119) x326)
+(or (not x4049) (not x4041) x4496)
+(or (not x4647) x4648)
+(or (not x4080) (not x4041) x4530)
+(or (not x4646) (not x299) (not x83))
+(or (not x4069) (not x4041) x4516)
+(or (not x299) (not x83) x4645)
+(or (not x4057) (not x4041) x4505)
+(or (not x4646) (not x296) (not x83) x95)
+(or (not x4046) (not x4041) x4494)
+(or (not x296) (not x83) (not x95) x4646)
+(or (not x4077) (not x4041) x4527)
+(or (not x4645) (not x296) (not x83))
+(or (not x4066) (not x4041) x4514)
+(or (not x4646) (not x293) (not x83) x94)
+(or (not x4055) (not x4041) x4503)
+(or (not x293) (not x83) (not x94) x4646)
+(or (not x4043) (not x4041) x4492)
+(or (not x4645) (not x293) (not x83))
+(or (not x4088) (not x4038) x4437)
+(or (not x4646) (not x291) (not x83) x92)
+(or (not x4075) (not x4038) x4424)
+(or (not x291) (not x83) (not x92) x4646)
+(or (not x4064) (not x4038) x4410)
+(or (not x4645) (not x291) (not x83))
+(or (not x4053) (not x4038) x4396)
+(or (not x4646) (not x288) (not x83) x91)
+(or (not x4086) (not x4038))
+(or (not x288) (not x83) (not x91) x4646)
+(or (not x4073) (not x4038))
+(or (not x4645) (not x288) (not x83))
+(or (not x4062) (not x4038))
+(or (not x4646) (not x299) (not x80) x89)
+(or (not x4051) (not x4038))
+(or (not x299) (not x80) (not x89) x4646)
+(or (not x4083) (not x4038) x4434)
+(or (not x4645) (not x299) (not x80))
+(or (not x4071) (not x4038) x4420)
+(or (not x4646) (not x296) (not x80))
+(or (not x4060) (not x4038) x4404)
+(or (not x296) (not x80) x4645)
+(or (not x4049) (not x4038) x4393)
+(or (not x4646) (not x293) (not x80) x88)
+(or (not x4080) (not x4038) x4432)
+(or (not x293) (not x80) (not x88) x4646)
+(or (not x4069) (not x4038) x4418)
+(or (not x4645) (not x293) (not x80))
+(or (not x4057) (not x4038) x4402)
+(or (not x4646) (not x291) (not x80) x87)
+(or (not x4046) (not x4038) x4391)
+(or (not x291) (not x80) (not x87) x4646)
+(or (not x4077) (not x4038) x4430)
+(or (not x4645) (not x291) (not x80))
+(or (not x4066) (not x4038) x4415)
+(or (not x4646) (not x288) (not x80) x86)
+(or (not x4055) (not x4038) x4400)
+(or (not x288) (not x80) (not x86) x4646)
+(or (not x4043) (not x4038) x4389)
+(or (not x4645) (not x288) (not x80))
+(or (not x4088) (not x4035) x4341)
+(or (not x4646) (not x299) (not x78) x82)
+(or (not x4075) (not x4035) x4327)
+(or (not x299) (not x78) (not x82) x4646)
+(or (not x4064) (not x4035) x4315)
+(or (not x4645) (not x299) (not x78))
+(or (not x4053) (not x4035) x4303)
+(or (not x4646) (not x296) (not x78) x81)
+(or (not x4086) (not x4035) x4339)
+(or (not x296) (not x78) (not x81) x4646)
+(or (not x4073) (not x4035) x4325)
+(or (not x4645) (not x296) (not x78))
+(or (not x4062) (not x4035) x4313)
+(or (not x4646) (not x293) (not x78))
+(or (not x4051) (not x4035) x4301)
+(or (not x293) (not x78) x4645)
+(or (not x4083) (not x4035))
+(or (not x4646) (not x291) (not x78) x79)
+(or (not x4071) (not x4035))
+(or (not x291) (not x78) (not x79) x4646)
+(or (not x4060) (not x4035))
+(or (not x4645) (not x291) (not x78))
+(or (not x4049) (not x4035))
+(or (not x4646) (not x288) (not x78) x77)
+(or (not x4080) (not x4035) x4334)
+(or (not x288) (not x78) (not x77) x4646)
+(or (not x4069) (not x4035) x4322)
+(or (not x4645) (not x288) (not x78))
+(or (not x4057) (not x4035) x4309)
+(or (not x4646) (not x299) (not x75) x73)
+(or (not x4046) (not x4035) x4297)
+(or (not x299) (not x75) (not x73) x4646)
+(or (not x4077) (not x4035) x4331)
+(or (not x4645) (not x299) (not x75))
+(or (not x4066) (not x4035) x4319)
+(or (not x4646) (not x296) (not x75) x67)
+(or (not x4055) (not x4035) x4307)
+(or (not x296) (not x75) (not x67) x4646)
+(or (not x4043) (not x4035) x4294)
+(or (not x4645) (not x296) (not x75))
+(or (not x4088) (not x4032) x4248)
+(or (not x4646) (not x293) (not x75) x66)
+(or (not x4075) (not x4032) x4231)
+(or (not x293) (not x75) (not x66) x4646)
+(or (not x4064) (not x4032) x4220)
+(or (not x4645) (not x293) (not x75))
+(or (not x4053) (not x4032) x4209)
+(or (not x4646) (not x291) (not x75))
+(or (not x4086) (not x4032) x4245)
+(or (not x291) (not x75) x4645)
+(or (not x4073) (not x4032) x4229)
+(or (not x4646) (not x288) (not x75) x65)
+(or (not x4062) (not x4032) x4218)
+(or (not x288) (not x75) (not x65) x4646)
+(or (not x4051) (not x4032) x4207)
+(or (not x4645) (not x288) (not x75))
+(or (not x4083) (not x4032) x4242)
+(or (not x4646) (not x299) (not x71) x58)
+(or (not x4071) (not x4032) x4227)
+(or (not x299) (not x71) (not x58) x4646)
+(or (not x4060) (not x4032) x4216)
+(or (not x4645) (not x299) (not x71))
+(or (not x4049) (not x4032) x4205)
+(or (not x4646) (not x296) (not x71) x57)
+(or (not x4080) (not x4032))
+(or (not x296) (not x71) (not x57) x4646)
+(or (not x4069) (not x4032))
+(or (not x4645) (not x296) (not x71))
+(or (not x4057) (not x4032))
+(or (not x4646) (not x293) (not x71) x56)
+(or (not x4046) (not x4032))
+(or (not x293) (not x71) (not x56) x4646)
+(or (not x4077) (not x4032) x4238)
+(or (not x4645) (not x293) (not x71))
+(or (not x4066) (not x4032) x4224)
+(or (not x4646) (not x291) (not x71) x55)
+(or (not x4055) (not x4032) x4213)
+(or (not x291) (not x71) (not x55) x4646)
+(or (not x4043) (not x4032) x4202)
+(or (not x4645) (not x291) (not x71))
+(or (not x4088) (not x3926) x4158)
+(or (not x4646) (not x288) (not x71))
+(or (not x4075) (not x3926) x4147)
+(or (not x288) (not x71) x4645)
+(or (not x4064) (not x3926) x4134)
+(or (not x906) (not x4641) (not x4633) x4644 x4643)
+(or (not x4053) (not x3926) x4122)
+(or (not x906) (not x4633) x4642 x4641)
+(or (not x4086) (not x3926) x4156)
+(or (not x906) x4634 x4633)
+(or (not x4073) (not x3926) x4145)
+(or (not x4643) (not x4641) (not x4633) x906)
+(or (not x4062) (not x3926) x4132)
+(or (not x4644) (not x4641) (not x4633) x906)
+(or (not x4051) (not x3926) x4120)
+(or (not x4642) (not x4633) x906)
+(or (not x4083) (not x3926) x4154)
+(or (not x4634) x906)
+(or (not x4071) (not x3926) x4143)
+(or (not x4644) (not x4643))
+(or (not x4060) (not x3926) x4129)
+(or (not x172) x4644 x272 x2261)
+(or (not x4049) (not x3926) x4117)
+(or (not x4644) (not x172) (not x2261) x272)
+(or (not x4080) (not x3926) x4152)
+(or (not x4644) (not x272) x172 x2261)
+(or (not x4069) (not x3926) x4141)
+(or (not x272) (not x2261) x4644 x172)
+(or (not x4057) (not x3926) x4127)
+(or (not x170) x4644 x269 x2261)
+(or (not x4046) (not x3926) x4115)
+(or (not x4644) (not x170) (not x2261) x269)
+(or (not x4077) (not x3926))
+(or (not x4644) (not x269) x170 x2261)
+(or (not x4066) (not x3926))
+(or (not x269) (not x2261) x4644 x170)
+(or (not x4055) (not x3926))
+(or (not x168) x4644 x268 x2261)
+(or (not x4043) (not x3926))
+(or (not x4644) (not x168) (not x2261) x268)
+(or (not x3999) (not x3638))
+(or (not x4644) (not x268) x168 x2261)
+(or (not x3988) (not x3638))
+(or (not x268) (not x2261) x4644 x168)
+(or (not x3974) (not x3638))
+(or (not x165) x4644 x265 x2261)
+(or (not x3962) (not x3638))
+(or (not x4644) (not x165) (not x2261) x265)
+(or (not x3997) (not x3638) x3887)
+(or (not x4644) (not x265) x165 x2261)
+(or (not x3986) (not x3638) x3876)
+(or (not x265) (not x2261) x4644 x165)
+(or (not x3972) (not x3638) x3862)
+(or (not x163) x4644 x264 x2261)
+(or (not x3960) (not x3638) x3621)
+(or (not x4644) (not x163) (not x2261) x264)
+(or (not x3995) (not x3638) x3885)
+(or (not x4644) (not x264) x163 x2261)
+(or (not x3982) (not x3638) x3874)
+(or (not x264) (not x2261) x4644 x163)
+(or (not x3970) (not x3638) x3860)
+(or (not x269) (not x170) x4643 x272 x172)
+(or (not x3957) (not x3638) x3616)
+(or (not x268) (not x168) x4643 x269 x170)
+(or (not x3993) (not x3638) x3883)
+(or (not x265) (not x165) x4643 x268 x168)
+(or (not x3980) (not x3638) x3872)
+(or (not x264) (not x163) x4643 x265 x165)
+(or (not x3968) (not x3638) x3858)
+(or x4643 x264 x163)
+(or (not x3955) (not x3638) x3613)
+(or (not x272) (not x172) x4643)
+(or (not x3991) (not x3638) x3881)
+(or (not x4643) (not x272) x172)
+(or (not x3977) (not x3638) x3870)
+(or (not x4643) (not x172) x272)
+(or (not x3965) (not x3638) x3856)
+(or (not x4643) (not x269) x170)
+(or (not x3953) (not x3638) x3610)
+(or (not x4643) (not x170) x269)
+(or (not x3999) (not x3635) x3770)
+(or (not x4643) (not x268) x168)
+(or (not x3988) (not x3635) x3751)
+(or (not x4643) (not x168) x268)
+(or (not x3974) (not x3635) x3737)
+(or (not x4643) (not x265) x165)
+(or (not x3962) (not x3635) x3605)
+(or (not x4643) (not x165) x265)
+(or (not x3997) (not x3635))
+(or (not x4643) (not x264) x163)
+(or (not x3986) (not x3635))
+(or (not x4643) (not x163) x264)
+(or (not x3972) (not x3635))
+(or (not x52) x4642 x4640 x246)
+(or (not x3960) (not x3635))
+(or (not x4642) (not x246) (not x52) x4640)
+(or (not x3995) (not x3635) x3764)
+(or (not x4642) x4640 x246 x52)
+(or (not x3982) (not x3635) x3745)
+(or (not x246) x4642 x4640 x52)
+(or (not x3970) (not x3635) x3734)
+(or (not x4640) (not x50) x4642 x4639 x245)
+(or (not x3957) (not x3635) x3602)
+(or (not x4642) (not x4640) (not x245) (not x50) x4639)
+(or (not x3993) (not x3635) x3761)
+(or (not x4642) (not x4640) x4639 x245 x50)
+(or (not x3980) (not x3635) x3743)
+(or (not x4640) (not x245) x4642 x4639 x50)
+(or (not x3968) (not x3635) x3732)
+(or (not x4639) (not x48) x4642 x4638 x242)
+(or (not x3955) (not x3635) x3599)
+(or (not x4642) (not x4639) (not x242) (not x48) x4638)
+(or (not x3991) (not x3635) x3757)
+(or (not x4642) (not x4639) x4638 x242 x48)
+(or (not x3977) (not x3635) x3741)
+(or (not x4639) (not x242) x4642 x4638 x48)
+(or (not x3965) (not x3635) x3730)
+(or (not x4638) (not x46) x4642 x4637 x238)
+(or (not x3953) (not x3635) x3597)
+(or (not x4642) (not x4638) (not x238) (not x46) x4637)
+(or (not x3999) (not x3632) x3645)
+(or (not x4642) (not x4638) x4637 x238 x46)
+(or (not x3988) (not x3632) x3628)
+(or (not x4638) (not x238) x4642 x4637 x46)
+(or (not x3974) (not x3632) x3612)
+(or (not x4637) (not x44) x4642 x4636 x233)
+(or (not x3962) (not x3632) x3593)
+(or (not x4642) (not x4637) (not x233) (not x44) x4636)
+(or (not x3997) (not x3632) x3643)
+(or (not x4642) (not x4637) x4636 x233 x44)
+(or (not x3986) (not x3632) x3625)
+(or (not x4637) (not x233) x4642 x4636 x44)
+(or (not x3972) (not x3632) x3609)
+(or (not x4636) (not x149) x4642 x4635 x229)
+(or (not x3960) (not x3632) x3591)
+(or (not x4642) (not x4636) (not x229) (not x149) x4635)
+(or (not x3995) (not x3632))
+(or (not x4642) (not x4636) x4635 x229 x149)
+(or (not x3982) (not x3632))
+(or (not x4636) (not x229) x4642 x4635 x149)
+(or (not x3970) (not x3632))
+(or (not x4642) (not x4641))
+(or (not x3957) (not x3632))
+(or (not x4635) x4641)
+(or (not x3993) (not x3632) x3637)
+(or (not x4641) x4635)
+(or (not x3980) (not x3632) x3620)
+(or x4640 x246 x144)
+(or (not x3968) (not x3632) x3604)
+(or (not x246) (not x144) x4640)
+(or (not x3955) (not x3632) x3588)
+(or (not x4640) (not x246) x144)
+(or (not x3991) (not x3632) x3634)
+(or (not x4640) (not x144) x246)
+(or (not x3977) (not x3632) x3618)
+(or (not x4640) x4639 x245 x140)
+(or (not x3965) (not x3632) x3601)
+(or (not x4640) (not x245) (not x140) x4639)
+(or (not x3953) (not x3632) x3587)
+(or (not x4639) (not x245) x140)
+(or (not x3999) (not x3629) x3546)
+(or (not x4639) (not x140) x245)
+(or (not x3988) (not x3629) x3535)
+(or (not x4639) x4640)
+(or (not x3974) (not x3629) x3524)
+(or (not x4639) x4638 x242 x134)
+(or (not x3962) (not x3629) x3510)
+(or (not x4639) (not x242) (not x134) x4638)
+(or (not x3997) (not x3629) x3544)
+(or (not x4638) (not x242) x134)
+(or (not x3986) (not x3629) x3533)
+(or (not x4638) (not x134) x242)
+(or (not x3972) (not x3629) x3522)
+(or (not x4638) x4639)
+(or (not x3960) (not x3629) x3508)
+(or (not x4638) x4637 x238 x128)
+(or (not x3995) (not x3629) x3542)
+(or (not x4638) (not x238) (not x128) x4637)
+(or (not x3982) (not x3629) x3531)
+(or (not x4637) (not x238) x128)
+(or (not x3970) (not x3629) x3520)
+(or (not x4637) (not x128) x238)
+(or (not x3957) (not x3629) x3506)
+(or (not x4637) x4638)
+(or (not x3993) (not x3629))
+(or (not x4637) x4636 x233 x124)
+(or (not x3980) (not x3629))
+(or (not x4637) (not x233) (not x124) x4636)
+(or (not x3968) (not x3629))
+(or (not x4636) (not x233) x124)
+(or (not x3955) (not x3629))
+(or (not x4636) (not x124) x233)
+(or (not x3991) (not x3629) x3539)
+(or (not x4636) x4637)
+(or (not x3977) (not x3629) x3528)
+(or (not x4636) x4635 x229 x119)
+(or (not x3965) (not x3629) x3515)
+(or (not x4636) (not x229) (not x119) x4635)
+(or (not x3953) (not x3629) x3503)
+(or (not x4635) (not x229) x119)
+(or (not x3999) (not x3626) x3465)
+(or (not x4635) (not x119) x229)
+(or (not x3988) (not x3626) x3453)
+(or (not x4635) x4636)
+(or (not x3974) (not x3626) x3442)
+(or (not x4634) (not x204) (not x83))
+(or (not x3962) (not x3626) x3319)
+(or (not x204) (not x83) x4633)
+(or (not x3997) (not x3626) x3462)
+(or (not x4634) (not x203) (not x83) x95)
+(or (not x3986) (not x3626) x3451)
+(or (not x203) (not x83) (not x95) x4634)
+(or (not x3972) (not x3626) x3439)
+(or (not x4633) (not x203) (not x83))
+(or (not x3960) (not x3626) x3141)
+(or (not x4634) (not x200) (not x83) x94)
+(or (not x3995) (not x3626) x3459)
+(or (not x200) (not x83) (not x94) x4634)
+(or (not x3982) (not x3626) x3448)
+(or (not x4633) (not x200) (not x83))
+(or (not x3970) (not x3626) x3437)
+(or (not x4634) (not x197) (not x83) x92)
+(or (not x3957) (not x3626) x2972)
+(or (not x197) (not x83) (not x92) x4634)
+(or (not x3993) (not x3626) x3457)
+(or (not x4633) (not x197) (not x83))
+(or (not x3980) (not x3626) x3446)
+(or (not x4634) (not x194) (not x83) x91)
+(or (not x3968) (not x3626) x3435)
+(or (not x194) (not x83) (not x91) x4634)
+(or (not x3955) (not x3626) x2802)
+(or (not x4633) (not x194) (not x83))
+(or (not x3991) (not x3626))
+(or (not x4634) (not x204) (not x80) x89)
+(or (not x3977) (not x3626))
+(or (not x204) (not x80) (not x89) x4634)
+(or (not x3965) (not x3626))
+(or (not x4633) (not x204) (not x80))
+(or (not x3953) (not x3626))
+(or (not x4634) (not x203) (not x80))
+(or (not x3901) (not x3623))
+(or (not x203) (not x80) x4633)
+(or (not x3890) (not x3623))
+(or (not x4634) (not x200) (not x80) x88)
+(or (not x3879) (not x3623))
+(or (not x200) (not x80) (not x88) x4634)
+(or (not x3866) (not x3623))
+(or (not x4633) (not x200) (not x80))
+(or (not x3898) (not x3623) x3986)
+(or (not x4634) (not x197) (not x80) x87)
+(or (not x3887) (not x3623) x3972)
+(or (not x197) (not x80) (not x87) x4634)
+(or (not x3876) (not x3623) x3960)
+(or (not x4633) (not x197) (not x80))
+(or (not x3862) (not x3623) x3635)
+(or (not x4634) (not x194) (not x80) x86)
+(or (not x3896) (not x3623) x3982)
+(or (not x194) (not x80) (not x86) x4634)
+(or (not x3885) (not x3623) x3970)
+(or (not x4633) (not x194) (not x80))
+(or (not x3874) (not x3623) x3957)
+(or (not x4634) (not x204) (not x78) x82)
+(or (not x3860) (not x3623) x3632)
+(or (not x204) (not x78) (not x82) x4634)
+(or (not x3894) (not x3623) x3980)
+(or (not x4633) (not x204) (not x78))
+(or (not x3883) (not x3623) x3968)
+(or (not x4634) (not x203) (not x78) x81)
+(or (not x3872) (not x3623) x3955)
+(or (not x203) (not x78) (not x81) x4634)
+(or (not x3858) (not x3623) x3629)
+(or (not x4633) (not x203) (not x78))
+(or (not x3892) (not x3623) x3977)
+(or (not x4634) (not x200) (not x78))
+(or (not x3881) (not x3623) x3965)
+(or (not x200) (not x78) x4633)
+(or (not x3870) (not x3623) x3953)
+(or (not x4634) (not x197) (not x78) x79)
+(or (not x3856) (not x3623) x3626)
+(or (not x197) (not x78) (not x79) x4634)
+(or (not x3901) (not x3621) x3773)
+(or (not x4633) (not x197) (not x78))
+(or (not x3890) (not x3621) x3754)
+(or (not x4634) (not x194) (not x78) x77)
+(or (not x3879) (not x3621) x3739)
+(or (not x194) (not x78) (not x77) x4634)
+(or (not x3866) (not x3621) x3607)
+(or (not x4633) (not x194) (not x78))
+(or (not x3898) (not x3621))
+(or (not x4634) (not x204) (not x75) x73)
+(or (not x3887) (not x3621))
+(or (not x204) (not x75) (not x73) x4634)
+(or (not x3876) (not x3621))
+(or (not x4633) (not x204) (not x75))
+(or (not x3862) (not x3621))
+(or (not x4634) (not x203) (not x75) x67)
+(or (not x3896) (not x3621) x3764)
+(or (not x203) (not x75) (not x67) x4634)
+(or (not x3885) (not x3621) x3745)
+(or (not x4633) (not x203) (not x75))
+(or (not x3874) (not x3621) x3734)
+(or (not x4634) (not x200) (not x75) x66)
+(or (not x3860) (not x3621) x3602)
+(or (not x200) (not x75) (not x66) x4634)
+(or (not x3894) (not x3621) x3761)
+(or (not x4633) (not x200) (not x75))
+(or (not x3883) (not x3621) x3743)
+(or (not x4634) (not x197) (not x75))
+(or (not x3872) (not x3621) x3732)
+(or (not x197) (not x75) x4633)
+(or (not x3858) (not x3621) x3599)
+(or (not x4634) (not x194) (not x75) x65)
+(or (not x3892) (not x3621) x3757)
+(or (not x194) (not x75) (not x65) x4634)
+(or (not x3881) (not x3621) x3741)
+(or (not x4633) (not x194) (not x75))
+(or (not x3870) (not x3621) x3730)
+(or (not x4634) (not x204) (not x71) x58)
+(or (not x3856) (not x3621) x3597)
+(or (not x204) (not x71) (not x58) x4634)
+(or (not x3901) (not x3616) x3647)
+(or (not x4633) (not x204) (not x71))
+(or (not x3890) (not x3616) x3631)
+(or (not x4634) (not x203) (not x71) x57)
+(or (not x3879) (not x3616) x3615)
+(or (not x203) (not x71) (not x57) x4634)
+(or (not x3866) (not x3616) x3595)
+(or (not x4633) (not x203) (not x71))
+(or (not x3898) (not x3616) x3643)
+(or (not x4634) (not x200) (not x71) x56)
+(or (not x3887) (not x3616) x3625)
+(or (not x200) (not x71) (not x56) x4634)
+(or (not x3876) (not x3616) x3609)
+(or (not x4633) (not x200) (not x71))
+(or (not x3862) (not x3616) x3591)
+(or (not x4634) (not x197) (not x71) x55)
+(or (not x3896) (not x3616))
+(or (not x197) (not x71) (not x55) x4634)
+(or (not x3885) (not x3616))
+(or (not x4633) (not x197) (not x71))
+(or (not x3874) (not x3616))
+(or (not x4634) (not x194) (not x71))
+(or (not x3860) (not x3616))
+(or (not x194) (not x71) x4633)
+(or (not x3894) (not x3616) x3637)
+(or (not x3850) x4550 x4548 x4544 x4542 x4540)
+(or (not x3883) (not x3616) x3620)
+(or (not x4550) x3850)
+(or (not x3872) (not x3616) x3604)
+(or (not x4548) x3850)
+(or (not x3858) (not x3616) x3588)
+(or (not x4544) x3850)
+(or (not x3892) (not x3616) x3634)
+(or (not x4542) x3850)
+(or (not x3881) (not x3616) x3618)
+(or (not x4540) x3850)
+(or (not x3870) (not x3616) x3601)
+(or (not x3848) x4535 x4532 x4530 x4527 x4523)
+(or (not x3856) (not x3616) x3587)
+(or (not x4535) x3848)
+(or (not x3901) (not x3613) x3548)
+(or (not x4532) x3848)
+(or (not x3890) (not x3613) x3537)
+(or (not x4530) x3848)
+(or (not x3879) (not x3613) x3526)
+(or (not x4527) x3848)
+(or (not x3866) (not x3613) x3513)
+(or (not x4523) x3848)
+(or (not x3898) (not x3613) x3544)
+(or (not x3847) x4520 x4518 x4516 x4514 x4512)
+(or (not x3887) (not x3613) x3533)
+(or (not x4520) x3847)
+(or (not x3876) (not x3613) x3522)
+(or (not x4518) x3847)
+(or (not x3862) (not x3613) x3508)
+(or (not x4516) x3847)
+(or (not x3896) (not x3613) x3542)
+(or (not x4514) x3847)
+(or (not x3885) (not x3613) x3531)
+(or (not x4512) x3847)
+(or (not x3874) (not x3613) x3520)
+(or (not x3845) x4509 x4507 x4505 x4503 x4501)
+(or (not x3860) (not x3613) x3506)
+(or (not x4509) x3845)
+(or (not x3894) (not x3613))
+(or (not x4507) x3845)
+(or (not x3883) (not x3613))
+(or (not x4505) x3845)
+(or (not x3872) (not x3613))
+(or (not x4503) x3845)
+(or (not x3858) (not x3613))
+(or (not x4501) x3845)
+(or (not x3892) (not x3613) x3539)
+(or (not x3843) x4498 x4496 x4494 x4492 x4490)
+(or (not x3881) (not x3613) x3528)
+(or (not x4498) x3843)
+(or (not x3870) (not x3613) x3515)
+(or (not x4496) x3843)
+(or (not x3856) (not x3613) x3503)
+(or (not x4494) x3843)
+(or (not x3901) (not x3610) x3468)
+(or (not x4492) x3843)
+(or (not x3890) (not x3610) x3455)
+(or (not x4490) x3843)
+(or (not x3879) (not x3610) x3444)
+(or (not x3866) (not x3610) x3433)
+(or (not x3898) (not x3610) x3462)
+(or (not x3887) (not x3610) x3451)
+(or (not x3876) (not x3610) x3439)
+(or (not x3862) (not x3610) x3141)
+(or (not x3816) x4449 x4446 x4444 x4441 x4439)
+(or (not x3896) (not x3610) x3459)
+(or (not x4449) x3816)
+(or (not x3885) (not x3610) x3448)
+(or (not x4446) x3816)
+(or (not x3874) (not x3610) x3437)
+(or (not x4444) x3816)
+(or (not x3860) (not x3610) x2972)
+(or (not x4441) x3816)
+(or (not x3894) (not x3610) x3457)
+(or (not x4439) x3816)
+(or (not x3883) (not x3610) x3446)
+(or (not x3815) x4437 x4434 x4432 x4430 x4428)
+(or (not x3872) (not x3610) x3435)
+(or (not x4437) x3815)
+(or (not x3858) (not x3610) x2802)
+(or (not x4434) x3815)
+(or (not x3892) (not x3610))
+(or (not x4432) x3815)
+(or (not x3881) (not x3610))
+(or (not x4430) x3815)
+(or (not x3870) (not x3610))
+(or (not x4428) x3815)
+(or (not x3856) (not x3610))
+(or (not x3814) x4424 x4420 x4418 x4415 x4412)
+(or (not x3786) (not x3607))
+(or (not x4424) x3814)
+(or (not x3773) (not x3607))
+(or (not x4420) x3814)
+(or (not x3754) (not x3607))
+(or (not x4418) x3814)
+(or (not x3739) (not x3607))
+(or (not x4415) x3814)
+(or (not x3784) (not x3607) x3988)
+(or (not x4412) x3814)
+(or (not x3770) (not x3607) x3974)
+(or (not x3813) x4410 x4404 x4402 x4400 x4398)
+(or (not x3751) (not x3607) x3962)
+(or (not x4410) x3813)
+(or (not x3737) (not x3607) x3638)
+(or (not x4404) x3813)
+(or (not x3781) (not x3607) x3982)
+(or (not x4402) x3813)
+(or (not x3764) (not x3607) x3970)
+(or (not x4400) x3813)
+(or (not x3745) (not x3607) x3957)
+(or (not x4398) x3813)
+(or (not x3734) (not x3607) x3632)
+(or (not x3812) x4396 x4393 x4391 x4389 x4387)
+(or (not x3779) (not x3607) x3980)
+(or (not x4396) x3812)
+(or (not x3761) (not x3607) x3968)
+(or (not x4393) x3812)
+(or (not x3743) (not x3607) x3955)
+(or (not x4391) x3812)
+(or (not x3732) (not x3607) x3629)
+(or (not x4389) x3812)
+(or (not x3777) (not x3607) x3977)
+(or (not x4387) x3812)
+(or (not x3757) (not x3607) x3965)
+(or (not x3741) (not x3607) x3953)
+(or (not x3730) (not x3607) x3626)
+(or (not x3786) (not x3605) x3890)
+(or (not x3773) (not x3605) x3879)
+(or (not x3792) x4352 x4350 x4347 x4345 x4343)
+(or (not x3754) (not x3605) x3866)
+(or (not x4352) x3792)
+(or (not x3739) (not x3605) x3623)
+(or (not x4350) x3792)
+(or (not x3784) (not x3605))
+(or (not x4347) x3792)
+(or (not x3770) (not x3605))
+(or (not x4345) x3792)
+(or (not x3751) (not x3605))
+(or (not x4343) x3792)
+(or (not x3737) (not x3605))
+(or (not x3791) x4341 x4339 x4334 x4331 x4329)
+(or (not x3781) (not x3605) x3885)
+(or (not x4341) x3791)
+(or (not x3764) (not x3605) x3874)
+(or (not x4339) x3791)
+(or (not x3745) (not x3605) x3860)
+(or (not x4334) x3791)
+(or (not x3734) (not x3605) x3616)
+(or (not x4331) x3791)
+(or (not x3779) (not x3605) x3883)
+(or (not x4329) x3791)
+(or (not x3761) (not x3605) x3872)
+(or (not x3790) x4327 x4325 x4322 x4319 x4317)
+(or (not x3743) (not x3605) x3858)
+(or (not x4327) x3790)
+(or (not x3732) (not x3605) x3613)
+(or (not x4325) x3790)
+(or (not x3777) (not x3605) x3881)
+(or (not x4322) x3790)
+(or (not x3757) (not x3605) x3870)
+(or (not x4319) x3790)
+(or (not x3741) (not x3605) x3856)
+(or (not x4317) x3790)
+(or (not x3730) (not x3605) x3610)
+(or (not x3789) x4315 x4313 x4309 x4307 x4305)
+(or (not x3786) (not x3602) x3647)
+(or (not x4315) x3789)
+(or (not x3773) (not x3602) x3631)
+(or (not x4313) x3789)
+(or (not x3754) (not x3602) x3615)
+(or (not x4309) x3789)
+(or (not x3739) (not x3602) x3595)
+(or (not x4307) x3789)
+(or (not x3784) (not x3602) x3645)
+(or (not x4305) x3789)
+(or (not x3770) (not x3602) x3628)
+(or (not x3788) x4303 x4301 x4297 x4294 x4292)
+(or (not x3751) (not x3602) x3612)
+(or (not x4303) x3788)
+(or (not x3737) (not x3602) x3593)
+(or (not x4301) x3788)
+(or (not x3781) (not x3602))
+(or (not x4297) x3788)
+(or (not x3764) (not x3602))
+(or (not x4294) x3788)
+(or (not x3745) (not x3602))
+(or (not x4292) x3788)
+(or (not x3734) (not x3602))
+(or (not x3779) (not x3602) x3637)
+(or (not x3761) (not x3602) x3620)
+(or (not x3743) (not x3602) x3604)
+(or (not x3713) x4261 x4259 x4257 x4252 x4250)
+(or (not x3732) (not x3602) x3588)
+(or (not x4261) x3713)
+(or (not x3777) (not x3602) x3634)
+(or (not x4259) x3713)
+(or (not x3757) (not x3602) x3618)
+(or (not x4257) x3713)
+(or (not x3741) (not x3602) x3601)
+(or (not x4252) x3713)
+(or (not x3730) (not x3602) x3587)
+(or (not x4250) x3713)
+(or (not x3786) (not x3599) x3548)
+(or (not x3712) x4248 x4245 x4242 x4238 x4235)
+(or (not x3773) (not x3599) x3537)
+(or (not x4248) x3712)
+(or (not x3754) (not x3599) x3526)
+(or (not x4245) x3712)
+(or (not x3739) (not x3599) x3513)
+(or (not x4242) x3712)
+(or (not x3784) (not x3599) x3546)
+(or (not x4238) x3712)
+(or (not x3770) (not x3599) x3535)
+(or (not x4235) x3712)
+(or (not x3751) (not x3599) x3524)
+(or (not x3711) x4231 x4229 x4227 x4224 x4222)
+(or (not x3737) (not x3599) x3510)
+(or (not x4231) x3711)
+(or (not x3781) (not x3599) x3542)
+(or (not x4229) x3711)
+(or (not x3764) (not x3599) x3531)
+(or (not x4227) x3711)
+(or (not x3745) (not x3599) x3520)
+(or (not x4224) x3711)
+(or (not x3734) (not x3599) x3506)
+(or (not x4222) x3711)
+(or (not x3779) (not x3599))
+(or (not x3710) x4220 x4218 x4216 x4213 x4211)
+(or (not x3761) (not x3599))
+(or (not x4220) x3710)
+(or (not x3743) (not x3599))
+(or (not x4218) x3710)
+(or (not x3732) (not x3599))
+(or (not x4216) x3710)
+(or (not x3777) (not x3599) x3539)
+(or (not x4213) x3710)
+(or (not x3757) (not x3599) x3528)
+(or (not x4211) x3710)
+(or (not x3741) (not x3599) x3515)
+(or (not x3709) x4209 x4207 x4205 x4202 x4200)
+(or (not x3730) (not x3599) x3503)
+(or (not x4209) x3709)
+(or (not x3786) (not x3597) x3468)
+(or (not x4207) x3709)
+(or (not x3773) (not x3597) x3455)
+(or (not x4205) x3709)
+(or (not x3754) (not x3597) x3444)
+(or (not x4202) x3709)
+(or (not x3739) (not x3597) x3433)
+(or (not x4200) x3709)
+(or (not x3784) (not x3597) x3465)
+(or (not x3770) (not x3597) x3453)
+(or (not x3751) (not x3597) x3442)
+(or (not x3689) x4169 x4167 x4165 x4163 x4160)
+(or (not x3737) (not x3597) x3319)
+(or (not x4169) x3689)
+(or (not x3781) (not x3597) x3459)
+(or (not x4167) x3689)
+(or (not x3764) (not x3597) x3448)
+(or (not x4165) x3689)
+(or (not x3745) (not x3597) x3437)
+(or (not x4163) x3689)
+(or (not x3734) (not x3597) x2972)
+(or (not x4160) x3689)
+(or (not x3779) (not x3597) x3457)
+(or (not x3687) x4158 x4156 x4154 x4152 x4149)
+(or (not x3761) (not x3597) x3446)
+(or (not x4158) x3687)
+(or (not x3743) (not x3597) x3435)
+(or (not x4156) x3687)
+(or (not x3732) (not x3597) x2802)
+(or (not x4154) x3687)
+(or (not x3777) (not x3597))
+(or (not x4152) x3687)
+(or (not x3757) (not x3597))
+(or (not x4149) x3687)
+(or (not x3741) (not x3597))
+(or (not x3685) x4147 x4145 x4143 x4141 x4138)
+(or (not x3730) (not x3597))
+(or (not x4147) x3685)
+(or (not x3658) (not x3595))
+(or (not x4145) x3685)
+(or (not x3647) (not x3595))
+(or (not x4143) x3685)
+(or (not x3631) (not x3595))
+(or (not x4141) x3685)
+(or (not x3615) (not x3595))
+(or (not x4138) x3685)
+(or (not x3656) (not x3595) x3988)
+(or (not x3683) x4134 x4132 x4129 x4127 x4124)
+(or (not x3645) (not x3595) x3974)
+(or (not x4134) x3683)
+(or (not x3628) (not x3595) x3962)
+(or (not x4132) x3683)
+(or (not x3612) (not x3595) x3638)
+(or (not x4129) x3683)
+(or (not x3654) (not x3595) x3986)
+(or (not x4127) x3683)
+(or (not x3643) (not x3595) x3972)
+(or (not x4124) x3683)
+(or (not x3625) (not x3595) x3960)
+(or (not x3681) x4122 x4120 x4117 x4115 x4112)
+(or (not x3609) (not x3595) x3635)
+(or (not x4122) x3681)
+(or (not x3651) (not x3595) x3980)
+(or (not x4120) x3681)
+(or (not x3637) (not x3595) x3968)
+(or (not x4117) x3681)
+(or (not x3620) (not x3595) x3955)
+(or (not x4115) x3681)
+(or (not x3604) (not x3595) x3629)
+(or (not x4112) x3681)
+(or (not x3649) (not x3595) x3977)
+(or (not x3688) x4088 x4086 x4083 x4080 x4077)
+(or (not x3634) (not x3595) x3965)
+(or (not x4088) x3688)
+(or (not x3618) (not x3595) x3953)
+(or (not x4086) x3688)
+(or (not x3601) (not x3595) x3626)
+(or (not x4083) x3688)
+(or (not x3658) (not x3593) x3890)
+(or (not x4080) x3688)
+(or (not x3647) (not x3593) x3879)
+(or (not x4077) x3688)
+(or (not x3631) (not x3593) x3866)
+(or (not x3686) x4075 x4073 x4071 x4069 x4066)
+(or (not x3615) (not x3593) x3623)
+(or (not x4075) x3686)
+(or (not x3656) (not x3593))
+(or (not x4073) x3686)
+(or (not x3645) (not x3593))
+(or (not x4071) x3686)
+(or (not x3628) (not x3593))
+(or (not x4069) x3686)
+(or (not x3612) (not x3593))
+(or (not x4066) x3686)
+(or (not x3654) (not x3593) x3887)
+(or (not x3684) x4064 x4062 x4060 x4057 x4055)
+(or (not x3643) (not x3593) x3876)
+(or (not x4064) x3684)
+(or (not x3625) (not x3593) x3862)
+(or (not x4062) x3684)
+(or (not x3609) (not x3593) x3621)
+(or (not x4060) x3684)
+(or (not x3651) (not x3593) x3883)
+(or (not x4057) x3684)
+(or (not x3637) (not x3593) x3872)
+(or (not x4055) x3684)
+(or (not x3620) (not x3593) x3858)
+(or (not x3682) x4053 x4051 x4049 x4046 x4043)
+(or (not x3604) (not x3593) x3613)
+(or (not x4053) x3682)
+(or (not x3649) (not x3593) x3881)
+(or (not x4051) x3682)
+(or (not x3634) (not x3593) x3870)
+(or (not x4049) x3682)
+(or (not x3618) (not x3593) x3856)
+(or (not x4046) x3682)
+(or (not x3601) (not x3593) x3610)
+(or (not x4043) x3682)
+(or (not x3658) (not x3591) x3773)
+(or (not x3680) x4041 x4038 x4035 x4032 x3926)
+(or (not x3647) (not x3591) x3754)
+(or (not x4041) x3680)
+(or (not x3631) (not x3591) x3739)
+(or (not x4038) x3680)
+(or (not x3615) (not x3591) x3607)
+(or (not x4035) x3680)
+(or (not x3656) (not x3591) x3770)
+(or (not x4032) x3680)
+(or (not x3645) (not x3591) x3751)
+(or (not x3926) x3680)
+(or (not x3628) (not x3591) x3737)
+(or (not x2753) x3999 x3997 x3995 x3993 x3991)
+(or (not x3612) (not x3591) x3605)
+(or (not x3999) x2753)
+(or (not x3654) (not x3591))
+(or (not x3997) x2753)
+(or (not x3643) (not x3591))
+(or (not x3995) x2753)
+(or (not x3625) (not x3591))
+(or (not x3993) x2753)
+(or (not x3609) (not x3591))
+(or (not x3991) x2753)
+(or (not x3651) (not x3591) x3761)
+(or (not x2750) x3988 x3986 x3982 x3980 x3977)
+(or (not x3637) (not x3591) x3743)
+(or (not x3988) x2750)
+(or (not x3620) (not x3591) x3732)
+(or (not x3986) x2750)
+(or (not x3604) (not x3591) x3599)
+(or (not x3982) x2750)
+(or (not x3649) (not x3591) x3757)
+(or (not x3980) x2750)
+(or (not x3634) (not x3591) x3741)
+(or (not x3977) x2750)
+(or (not x3618) (not x3591) x3730)
+(or (not x2749) x3974 x3972 x3970 x3968 x3965)
+(or (not x3601) (not x3591) x3597)
+(or (not x3974) x2749)
+(or (not x3658) (not x3588) x3548)
+(or (not x3972) x2749)
+(or (not x3647) (not x3588) x3537)
+(or (not x3970) x2749)
+(or (not x3631) (not x3588) x3526)
+(or (not x3968) x2749)
+(or (not x3615) (not x3588) x3513)
+(or (not x3965) x2749)
+(or (not x3656) (not x3588) x3546)
+(or (not x2746) x3962 x3960 x3957 x3955 x3953)
+(or (not x3645) (not x3588) x3535)
+(or (not x3962) x2746)
+(or (not x3628) (not x3588) x3524)
+(or (not x3960) x2746)
+(or (not x3612) (not x3588) x3510)
+(or (not x3957) x2746)
+(or (not x3654) (not x3588) x3544)
+(or (not x3955) x2746)
+(or (not x3643) (not x3588) x3533)
+(or (not x3953) x2746)
+(or (not x3625) (not x3588) x3522)
+(or (not x2745) x3638 x3635 x3632 x3629 x3626)
+(or (not x3609) (not x3588) x3508)
+(or (not x3638) x2745)
+(or (not x3651) (not x3588))
+(or (not x3635) x2745)
+(or (not x3637) (not x3588))
+(or (not x3632) x2745)
+(or (not x3620) (not x3588))
+(or (not x3629) x2745)
+(or (not x3604) (not x3588))
+(or (not x3626) x2745)
+(or (not x3649) (not x3588) x3539)
+(or (not x3634) (not x3588) x3528)
+(or (not x3618) (not x3588) x3515)
+(or (not x3601) (not x3588) x3503)
+(or (not x3658) (not x3587) x3468)
+(or (not x3647) (not x3587) x3455)
+(or (not x2692) x3901 x3898 x3896 x3894 x3892)
+(or (not x3631) (not x3587) x3444)
+(or (not x3901) x2692)
+(or (not x3615) (not x3587) x3433)
+(or (not x3898) x2692)
+(or (not x3656) (not x3587) x3465)
+(or (not x3896) x2692)
+(or (not x3645) (not x3587) x3453)
+(or (not x3894) x2692)
+(or (not x3628) (not x3587) x3442)
+(or (not x3892) x2692)
+(or (not x3612) (not x3587) x3319)
+(or (not x2691) x3890 x3887 x3885 x3883 x3881)
+(or (not x3654) (not x3587) x3462)
+(or (not x3890) x2691)
+(or (not x3643) (not x3587) x3451)
+(or (not x3887) x2691)
+(or (not x3625) (not x3587) x3439)
+(or (not x3885) x2691)
+(or (not x3609) (not x3587) x3141)
+(or (not x3883) x2691)
+(or (not x3651) (not x3587) x3457)
+(or (not x3881) x2691)
+(or (not x3637) (not x3587) x3446)
+(or (not x2690) x3879 x3876 x3874 x3872 x3870)
+(or (not x3620) (not x3587) x3435)
+(or (not x3879) x2690)
+(or (not x3604) (not x3587) x2802)
+(or (not x3876) x2690)
+(or (not x3649) (not x3587))
+(or (not x3874) x2690)
+(or (not x3634) (not x3587))
+(or (not x3872) x2690)
+(or (not x3618) (not x3587))
+(or (not x3870) x2690)
+(or (not x3601) (not x3587))
+(or (not x2689) x3866 x3862 x3860 x3858 x3856)
+(or (not x3563) (not x3513))
+(or (not x3866) x2689)
+(or (not x3548) (not x3513))
+(or (not x3862) x2689)
+(or (not x3537) (not x3513))
+(or (not x3860) x2689)
+(or (not x3526) (not x3513))
+(or (not x3858) x2689)
+(or (not x3560) (not x3513) x3988)
+(or (not x3856) x2689)
+(or (not x3546) (not x3513) x3974)
+(or (not x2688) x3623 x3621 x3616 x3613 x3610)
+(or (not x3535) (not x3513) x3962)
+(or (not x3623) x2688)
+(or (not x3524) (not x3513) x3638)
+(or (not x3621) x2688)
+(or (not x3557) (not x3513) x3986)
+(or (not x3616) x2688)
+(or (not x3544) (not x3513) x3972)
+(or (not x3613) x2688)
+(or (not x3533) (not x3513) x3960)
+(or (not x3610) x2688)
+(or (not x3522) (not x3513) x3635)
+(or (not x3553) (not x3513) x3982)
+(or (not x3542) (not x3513) x3970)
+(or (not x3531) (not x3513) x3957)
+(or (not x3520) (not x3513) x3632)
+(or (not x2668) x3786 x3784 x3781 x3779 x3777)
+(or (not x3550) (not x3513) x3977)
+(or (not x3786) x2668)
+(or (not x3539) (not x3513) x3965)
+(or (not x3784) x2668)
+(or (not x3528) (not x3513) x3953)
+(or (not x3781) x2668)
+(or (not x3515) (not x3513) x3626)
+(or (not x3779) x2668)
+(or (not x3563) (not x3510) x3890)
+(or (not x3777) x2668)
+(or (not x3548) (not x3510) x3879)
+(or (not x2667) x3773 x3770 x3764 x3761 x3757)
+(or (not x3537) (not x3510) x3866)
+(or (not x3773) x2667)
+(or (not x3526) (not x3510) x3623)
+(or (not x3770) x2667)
+(or (not x3560) (not x3510))
+(or (not x3764) x2667)
+(or (not x3546) (not x3510))
+(or (not x3761) x2667)
+(or (not x3535) (not x3510))
+(or (not x3757) x2667)
+(or (not x3524) (not x3510))
+(or (not x2666) x3754 x3751 x3745 x3743 x3741)
+(or (not x3557) (not x3510) x3887)
+(or (not x3754) x2666)
+(or (not x3544) (not x3510) x3876)
+(or (not x3751) x2666)
+(or (not x3533) (not x3510) x3862)
+(or (not x3745) x2666)
+(or (not x3522) (not x3510) x3621)
+(or (not x3743) x2666)
+(or (not x3553) (not x3510) x3885)
+(or (not x3741) x2666)
+(or (not x3542) (not x3510) x3874)
+(or (not x2665) x3739 x3737 x3734 x3732 x3730)
+(or (not x3531) (not x3510) x3860)
+(or (not x3739) x2665)
+(or (not x3520) (not x3510) x3616)
+(or (not x3737) x2665)
+(or (not x3550) (not x3510) x3881)
+(or (not x3734) x2665)
+(or (not x3539) (not x3510) x3870)
+(or (not x3732) x2665)
+(or (not x3528) (not x3510) x3856)
+(or (not x3730) x2665)
+(or (not x3515) (not x3510) x3610)
+(or (not x2664) x3607 x3605 x3602 x3599 x3597)
+(or (not x3563) (not x3508) x3773)
+(or (not x3607) x2664)
+(or (not x3548) (not x3508) x3754)
+(or (not x3605) x2664)
+(or (not x3537) (not x3508) x3739)
+(or (not x3602) x2664)
+(or (not x3526) (not x3508) x3607)
+(or (not x3599) x2664)
+(or (not x3560) (not x3508) x3770)
+(or (not x3597) x2664)
+(or (not x3546) (not x3508) x3751)
+(or (not x3535) (not x3508) x3737)
+(or (not x3524) (not x3508) x3605)
+(or (not x3557) (not x3508))
+(or (not x2598) x3658 x3656 x3654 x3651 x3649)
+(or (not x3544) (not x3508))
+(or (not x3658) x2598)
+(or (not x3533) (not x3508))
+(or (not x3656) x2598)
+(or (not x3522) (not x3508))
+(or (not x3654) x2598)
+(or (not x3553) (not x3508) x3764)
+(or (not x3651) x2598)
+(or (not x3542) (not x3508) x3745)
+(or (not x3649) x2598)
+(or (not x3531) (not x3508) x3734)
+(or (not x2596) x3647 x3645 x3643 x3637 x3634)
+(or (not x3520) (not x3508) x3602)
+(or (not x3647) x2596)
+(or (not x3550) (not x3508) x3757)
+(or (not x3645) x2596)
+(or (not x3539) (not x3508) x3741)
+(or (not x3643) x2596)
+(or (not x3528) (not x3508) x3730)
+(or (not x3637) x2596)
+(or (not x3515) (not x3508) x3597)
+(or (not x3634) x2596)
+(or (not x3563) (not x3506) x3647)
+(or (not x2595) x3631 x3628 x3625 x3620 x3618)
+(or (not x3548) (not x3506) x3631)
+(or (not x3631) x2595)
+(or (not x3537) (not x3506) x3615)
+(or (not x3628) x2595)
+(or (not x3526) (not x3506) x3595)
+(or (not x3625) x2595)
+(or (not x3560) (not x3506) x3645)
+(or (not x3620) x2595)
+(or (not x3546) (not x3506) x3628)
+(or (not x3618) x2595)
+(or (not x3535) (not x3506) x3612)
+(or (not x2593) x3615 x3612 x3609 x3604 x3601)
+(or (not x3524) (not x3506) x3593)
+(or (not x3615) x2593)
+(or (not x3557) (not x3506) x3643)
+(or (not x3612) x2593)
+(or (not x3544) (not x3506) x3625)
+(or (not x3609) x2593)
+(or (not x3533) (not x3506) x3609)
+(or (not x3604) x2593)
+(or (not x3522) (not x3506) x3591)
+(or (not x3601) x2593)
+(or (not x3553) (not x3506))
+(or (not x2592) x3595 x3593 x3591 x3588 x3587)
+(or (not x3542) (not x3506))
+(or (not x3595) x2592)
+(or (not x3531) (not x3506))
+(or (not x3593) x2592)
+(or (not x3520) (not x3506))
+(or (not x3591) x2592)
+(or (not x3550) (not x3506) x3634)
+(or (not x3588) x2592)
+(or (not x3539) (not x3506) x3618)
+(or (not x3587) x2592)
+(or (not x3528) (not x3506) x3601)
+(or (not x3515) (not x3506) x3587)
+(or (not x3563) (not x3503) x3468)
+(or (not x2565) x3563 x3560 x3557 x3553 x3550)
+(or (not x3548) (not x3503) x3455)
+(or (not x3563) x2565)
+(or (not x3537) (not x3503) x3444)
+(or (not x3560) x2565)
+(or (not x3526) (not x3503) x3433)
+(or (not x3557) x2565)
+(or (not x3560) (not x3503) x3465)
+(or (not x3553) x2565)
+(or (not x3546) (not x3503) x3453)
+(or (not x3550) x2565)
+(or (not x3535) (not x3503) x3442)
+(or (not x2563) x3548 x3546 x3544 x3542 x3539)
+(or (not x3524) (not x3503) x3319)
+(or (not x3548) x2563)
+(or (not x3557) (not x3503) x3462)
+(or (not x3546) x2563)
+(or (not x3544) (not x3503) x3451)
+(or (not x3544) x2563)
+(or (not x3533) (not x3503) x3439)
+(or (not x3542) x2563)
+(or (not x3522) (not x3503) x3141)
+(or (not x3539) x2563)
+(or (not x3553) (not x3503) x3459)
+(or (not x2561) x3537 x3535 x3533 x3531 x3528)
+(or (not x3542) (not x3503) x3448)
+(or (not x3537) x2561)
+(or (not x3531) (not x3503) x3437)
+(or (not x3535) x2561)
+(or (not x3520) (not x3503) x2972)
+(or (not x3533) x2561)
+(or (not x3550) (not x3503))
+(or (not x3531) x2561)
+(or (not x3539) (not x3503))
+(or (not x3528) x2561)
+(or (not x3528) (not x3503))
+(or (not x2559) x3526 x3524 x3522 x3520 x3515)
+(or (not x3515) (not x3503))
+(or (not x3526) x2559)
+(or (not x3478) (not x3433))
+(or (not x3524) x2559)
+(or (not x3468) (not x3433))
+(or (not x3522) x2559)
+(or (not x3455) (not x3433))
+(or (not x3520) x2559)
+(or (not x3444) (not x3433))
+(or (not x3515) x2559)
+(or (not x3476) (not x3433) x3988)
+(or (not x2557) x3513 x3510 x3508 x3506 x3503)
+(or (not x3465) (not x3433) x3974)
+(or (not x3513) x2557)
+(or (not x3453) (not x3433) x3962)
+(or (not x3510) x2557)
+(or (not x3442) (not x3433) x3638)
+(or (not x3508) x2557)
+(or (not x3474) (not x3433) x3986)
+(or (not x3506) x2557)
+(or (not x3462) (not x3433) x3972)
+(or (not x3503) x2557)
+(or (not x3451) (not x3433) x3960)
+(or (not x2564) x3478 x3476 x3474 x3472 x3470)
+(or (not x3439) (not x3433) x3635)
+(or (not x3478) x2564)
+(or (not x3472) (not x3433) x3982)
+(or (not x3476) x2564)
+(or (not x3459) (not x3433) x3970)
+(or (not x3474) x2564)
+(or (not x3448) (not x3433) x3957)
+(or (not x3472) x2564)
+(or (not x3437) (not x3433) x3632)
+(or (not x3470) x2564)
+(or (not x3470) (not x3433) x3980)
+(or (not x2562) x3468 x3465 x3462 x3459 x3457)
+(or (not x3457) (not x3433) x3968)
+(or (not x3468) x2562)
+(or (not x3446) (not x3433) x3955)
+(or (not x3465) x2562)
+(or (not x3435) (not x3433) x3629)
+(or (not x3462) x2562)
+(or (not x3478) (not x3319) x3890)
+(or (not x3459) x2562)
+(or (not x3468) (not x3319) x3879)
+(or (not x3457) x2562)
+(or (not x3455) (not x3319) x3866)
+(or (not x2560) x3455 x3453 x3451 x3448 x3446)
+(or (not x3444) (not x3319) x3623)
+(or (not x3455) x2560)
+(or (not x3476) (not x3319))
+(or (not x3453) x2560)
+(or (not x3465) (not x3319))
+(or (not x3451) x2560)
+(or (not x3453) (not x3319))
+(or (not x3448) x2560)
+(or (not x3442) (not x3319))
+(or (not x3446) x2560)
+(or (not x3474) (not x3319) x3887)
+(or (not x2558) x3444 x3442 x3439 x3437 x3435)
+(or (not x3462) (not x3319) x3876)
+(or (not x3444) x2558)
+(or (not x3451) (not x3319) x3862)
+(or (not x3442) x2558)
+(or (not x3439) (not x3319) x3621)
+(or (not x3439) x2558)
+(or (not x3472) (not x3319) x3885)
+(or (not x3437) x2558)
+(or (not x3459) (not x3319) x3874)
+(or (not x3435) x2558)
+(or (not x3448) (not x3319) x3860)
+(or (not x2556) x3433 x3319 x3141 x2972 x2802)
+(or (not x3437) (not x3319) x3616)
+(or (not x3433) x2556)
+(or (not x3470) (not x3319) x3883)
+(or (not x3319) x2556)
+(or (not x3457) (not x3319) x3872)
+(or (not x3141) x2556)
+(or (not x3446) (not x3319) x3858)
+(or (not x2972) x2556)
+(or (not x3435) (not x3319) x3613)
+(or (not x2802) x2556)
+(or (not x3478) (not x3141) x3773)
+(or (not x1334) x3392 x3390 x3388 x3386 x3384)
+(or (not x3468) (not x3141) x3754)
+(or (not x3392) x1334)
+(or (not x3455) (not x3141) x3739)
+(or (not x3390) x1334)
+(or (not x3444) (not x3141) x3607)
+(or (not x3388) x1334)
+(or (not x3476) (not x3141) x3770)
+(or (not x3386) x1334)
+(or (not x3465) (not x3141) x3751)
+(or (not x3384) x1334)
+(or (not x3453) (not x3141) x3737)
+(or (not x1332) x3381 x3379 x3377 x3375 x3373)
+(or (not x3442) (not x3141) x3605)
+(or (not x3381) x1332)
+(or (not x3474) (not x3141))
+(or (not x3379) x1332)
+(or (not x3462) (not x3141))
+(or (not x3377) x1332)
+(or (not x3451) (not x3141))
+(or (not x3375) x1332)
+(or (not x3439) (not x3141))
+(or (not x3373) x1332)
+(or (not x3472) (not x3141) x3764)
+(or (not x1331) x3370 x3366 x3364 x3361 x3359)
+(or (not x3459) (not x3141) x3745)
+(or (not x3370) x1331)
+(or (not x3448) (not x3141) x3734)
+(or (not x3366) x1331)
+(or (not x3437) (not x3141) x3602)
+(or (not x3364) x1331)
+(or (not x3470) (not x3141) x3761)
+(or (not x3361) x1331)
+(or (not x3457) (not x3141) x3743)
+(or (not x3359) x1331)
+(or (not x3446) (not x3141) x3732)
+(or (not x1329) x3356 x3354 x3352 x3349 x3347)
+(or (not x3435) (not x3141) x3599)
+(or (not x3356) x1329)
+(or (not x3478) (not x2972) x3647)
+(or (not x3354) x1329)
+(or (not x3468) (not x2972) x3631)
+(or (not x3352) x1329)
+(or (not x3455) (not x2972) x3615)
+(or (not x3349) x1329)
+(or (not x3444) (not x2972) x3595)
+(or (not x3347) x1329)
+(or (not x3476) (not x2972) x3645)
+(or (not x1328) x2532 x2531 x2530 x2529 x2528)
+(or (not x3465) (not x2972) x3628)
+(or (not x2532) x1328)
+(or (not x3453) (not x2972) x3612)
+(or (not x2531) x1328)
+(or (not x3442) (not x2972) x3593)
+(or (not x2530) x1328)
+(or (not x3474) (not x2972) x3643)
+(or (not x2529) x1328)
+(or (not x3462) (not x2972) x3625)
+(or (not x2528) x1328)
+(or (not x3451) (not x2972) x3609)
+(or (not x3439) (not x2972) x3591)
+(or (not x3472) (not x2972))
+(or (not x3459) (not x2972))
+(or (not x3448) (not x2972))
+(or (not x3437) (not x2972))
+(or (not x1267) x3298 x3293 x3289 x3287 x3285)
+(or (not x3470) (not x2972) x3637)
+(or (not x3298) x1267)
+(or (not x3457) (not x2972) x3620)
+(or (not x3293) x1267)
+(or (not x3446) (not x2972) x3604)
+(or (not x3289) x1267)
+(or (not x3435) (not x2972) x3588)
+(or (not x3287) x1267)
+(or (not x3478) (not x2802) x3548)
+(or (not x3285) x1267)
+(or (not x3468) (not x2802) x3537)
+(or (not x1265) x3283 x3280 x3278 x3276 x3274)
+(or (not x3455) (not x2802) x3526)
+(or (not x3283) x1265)
+(or (not x3444) (not x2802) x3513)
+(or (not x3280) x1265)
+(or (not x3476) (not x2802) x3546)
+(or (not x3278) x1265)
+(or (not x3465) (not x2802) x3535)
+(or (not x3276) x1265)
+(or (not x3453) (not x2802) x3524)
+(or (not x3274) x1265)
+(or (not x3442) (not x2802) x3510)
+(or (not x1264) x3272 x3269 x3267 x3265 x3263)
+(or (not x3474) (not x2802) x3544)
+(or (not x3272) x1264)
+(or (not x3462) (not x2802) x3533)
+(or (not x3269) x1264)
+(or (not x3451) (not x2802) x3522)
+(or (not x3267) x1264)
+(or (not x3439) (not x2802) x3508)
+(or (not x3265) x1264)
+(or (not x3472) (not x2802) x3542)
+(or (not x3263) x1264)
+(or (not x3459) (not x2802) x3531)
+(or (not x1262) x3261 x3258 x3256 x3252 x3250)
+(or (not x3448) (not x2802) x3520)
+(or (not x3261) x1262)
+(or (not x3437) (not x2802) x3506)
+(or (not x3258) x1262)
+(or (not x3470) (not x2802))
+(or (not x3256) x1262)
+(or (not x3457) (not x2802))
+(or (not x3252) x1262)
+(or (not x3446) (not x2802))
+(or (not x3250) x1262)
+(or (not x3435) (not x2802))
+(or (not x1261) x2527 x2526 x2523 x2520 x2517)
+(or (not x3392) (not x2532))
+(or (not x2527) x1261)
+(or (not x3381) (not x2532))
+(or (not x2526) x1261)
+(or (not x3370) (not x2532))
+(or (not x2523) x1261)
+(or (not x3356) (not x2532))
+(or (not x2520) x1261)
+(or (not x3390) (not x2532) x3280)
+(or (not x2517) x1261)
+(or (not x3379) (not x2532) x3269)
+(or (not x3366) (not x2532) x3258)
+(or (not x3354) (not x2532) x2526)
+(or (not x3388) (not x2532) x3278)
+(or (not x3377) (not x2532) x3267)
+(or (not x1168) x3207 x3205 x3202 x3199 x3197)
+(or (not x3364) (not x2532) x3256)
+(or (not x3207) x1168)
+(or (not x3352) (not x2532) x2523)
+(or (not x3205) x1168)
+(or (not x3386) (not x2532) x3276)
+(or (not x3202) x1168)
+(or (not x3375) (not x2532) x3265)
+(or (not x3199) x1168)
+(or (not x3361) (not x2532) x3252)
+(or (not x3197) x1168)
+(or (not x3349) (not x2532) x2520)
+(or (not x1167) x3195 x3193 x3190 x3188 x3185)
+(or (not x3384) (not x2532) x3274)
+(or (not x3195) x1167)
+(or (not x3373) (not x2532) x3263)
+(or (not x3193) x1167)
+(or (not x3359) (not x2532) x3250)
+(or (not x3190) x1167)
+(or (not x3347) (not x2532) x2517)
+(or (not x3188) x1167)
+(or (not x3392) (not x2531) x3193)
+(or (not x3185) x1167)
+(or (not x3381) (not x2531) x3180)
+(or (not x1165) x3182 x3180 x3175 x3173 x3170)
+(or (not x3370) (not x2531) x3165)
+(or (not x3182) x1165)
+(or (not x3356) (not x2531) x2510)
+(or (not x3180) x1165)
+(or (not x3390) (not x2531))
+(or (not x3175) x1165)
+(or (not x3379) (not x2531))
+(or (not x3173) x1165)
+(or (not x3366) (not x2531))
+(or (not x3170) x1165)
+(or (not x3354) (not x2531))
+(or (not x1164) x3167 x3165 x3160 x3158 x3156)
+(or (not x3388) (not x2531) x3190)
+(or (not x3167) x1164)
+(or (not x3377) (not x2531) x3175)
+(or (not x3165) x1164)
+(or (not x3364) (not x2531) x3160)
+(or (not x3160) x1164)
+(or (not x3352) (not x2531) x2507)
+(or (not x3158) x1164)
+(or (not x3386) (not x2531) x3188)
+(or (not x3156) x1164)
+(or (not x3375) (not x2531) x3173)
+(or (not x1160) x2515 x2510 x2507 x2504 x2501)
+(or (not x3361) (not x2531) x3158)
+(or (not x2515) x1160)
+(or (not x3349) (not x2531) x2504)
+(or (not x2510) x1160)
+(or (not x3384) (not x2531) x3185)
+(or (not x2507) x1160)
+(or (not x3373) (not x2531) x3170)
+(or (not x2504) x1160)
+(or (not x3359) (not x2531) x3156)
+(or (not x2501) x1160)
+(or (not x3347) (not x2531) x2501)
+(or (not x3392) (not x2530) x3103)
+(or (not x3381) (not x2530) x3092)
+(or (not x3370) (not x2530) x3078)
+(or (not x1090) x3116 x3114 x3112 x3109 x3107)
+(or (not x3356) (not x2530) x2496)
+(or (not x3116) x1090)
+(or (not x3390) (not x2530) x3101)
+(or (not x3114) x1090)
+(or (not x3379) (not x2530) x3090)
+(or (not x3112) x1090)
+(or (not x3366) (not x2530) x3076)
+(or (not x3109) x1090)
+(or (not x3354) (not x2530) x2493)
+(or (not x3107) x1090)
+(or (not x3388) (not x2530))
+(or (not x1089) x3105 x3103 x3101 x3098 x3096)
+(or (not x3377) (not x2530))
+(or (not x3105) x1089)
+(or (not x3364) (not x2530))
+(or (not x3103) x1089)
+(or (not x3352) (not x2530))
+(or (not x3101) x1089)
+(or (not x3386) (not x2530) x3098)
+(or (not x3098) x1089)
+(or (not x3375) (not x2530) x3085)
+(or (not x3096) x1089)
+(or (not x3361) (not x2530) x3073)
+(or (not x1087) x3094 x3092 x3090 x3085 x3082)
+(or (not x3349) (not x2530) x2490)
+(or (not x3094) x1087)
+(or (not x3384) (not x2530) x3096)
+(or (not x3092) x1087)
+(or (not x3373) (not x2530) x3082)
+(or (not x3090) x1087)
+(or (not x3359) (not x2530) x3070)
+(or (not x3085) x1087)
+(or (not x3347) (not x2530) x2487)
+(or (not x3082) x1087)
+(or (not x3392) (not x2529) x3021)
+(or (not x1085) x3080 x3078 x3076 x3073 x3070)
+(or (not x3381) (not x2529) x3009)
+(or (not x3080) x1085)
+(or (not x3370) (not x2529) x2997)
+(or (not x3078) x1085)
+(or (not x3356) (not x2529) x2482)
+(or (not x3076) x1085)
+(or (not x3390) (not x2529) x3019)
+(or (not x3073) x1085)
+(or (not x3379) (not x2529) x3006)
+(or (not x3070) x1085)
+(or (not x3366) (not x2529) x2994)
+(or (not x1084) x2499 x2496 x2493 x2490 x2487)
+(or (not x3354) (not x2529) x2477)
+(or (not x2499) x1084)
+(or (not x3388) (not x2529) x3016)
+(or (not x2496) x1084)
+(or (not x3377) (not x2529) x3004)
+(or (not x2493) x1084)
+(or (not x3364) (not x2529) x2991)
+(or (not x2490) x1084)
+(or (not x3352) (not x2529) x2474)
+(or (not x2487) x1084)
+(or (not x3386) (not x2529))
+(or (not x3375) (not x2529))
+(or (not x3361) (not x2529))
+(or (not x1021) x3037 x3033 x3031 x3028 x3025)
+(or (not x3349) (not x2529))
+(or (not x3037) x1021)
+(or (not x3384) (not x2529) x3013)
+(or (not x3033) x1021)
+(or (not x3373) (not x2529) x3001)
+(or (not x3031) x1021)
+(or (not x3359) (not x2529) x2988)
+(or (not x3028) x1021)
+(or (not x3347) (not x2529) x2471)
+(or (not x3025) x1021)
+(or (not x3392) (not x2528) x2941)
+(or (not x1019) x3023 x3021 x3019 x3016 x3013)
+(or (not x3381) (not x2528) x2927)
+(or (not x3023) x1019)
+(or (not x3370) (not x2528) x2915)
+(or (not x3021) x1019)
+(or (not x3356) (not x2528) x2206)
+(or (not x3019) x1019)
+(or (not x3390) (not x2528) x2938)
+(or (not x3016) x1019)
+(or (not x3379) (not x2528) x2923)
+(or (not x3013) x1019)
+(or (not x3366) (not x2528) x2913)
+(or (not x1017) x3011 x3009 x3006 x3004 x3001)
+(or (not x3354) (not x2528) x2052)
+(or (not x3011) x1017)
+(or (not x3388) (not x2528) x2935)
+(or (not x3009) x1017)
+(or (not x3377) (not x2528) x2921)
+(or (not x3006) x1017)
+(or (not x3364) (not x2528) x2911)
+(or (not x3004) x1017)
+(or (not x3352) (not x2528) x1750)
+(or (not x3001) x1017)
+(or (not x3386) (not x2528) x2933)
+(or (not x1015) x2999 x2997 x2994 x2991 x2988)
+(or (not x3375) (not x2528) x2919)
+(or (not x2999) x1015)
+(or (not x3361) (not x2528) x2909)
+(or (not x2997) x1015)
+(or (not x3349) (not x2528) x1449)
+(or (not x2994) x1015)
+(or (not x3384) (not x2528))
+(or (not x2991) x1015)
+(or (not x3373) (not x2528))
+(or (not x2988) x1015)
+(or (not x3359) (not x2528))
+(or (not x1012) x2484 x2482 x2477 x2474 x2471)
+(or (not x3347) (not x2528))
+(or (not x2484) x1012)
+(or (not x3298) (not x2527))
+(or (not x2482) x1012)
+(or (not x3283) (not x2527))
+(or (not x2477) x1012)
+(or (not x3272) (not x2527))
+(or (not x2474) x1012)
+(or (not x3261) (not x2527))
+(or (not x2471) x1012)
+(or (not x3293) (not x2527) x3379)
+(or (not x1020) x2955 x2953 x2951 x2949 x2947)
+(or (not x3280) (not x2527) x3366)
+(or (not x2955) x1020)
+(or (not x3269) (not x2527) x3354)
+(or (not x2953) x1020)
+(or (not x3258) (not x2527) x2531)
+(or (not x2951) x1020)
+(or (not x3289) (not x2527) x3377)
+(or (not x2949) x1020)
+(or (not x3278) (not x2527) x3364)
+(or (not x2947) x1020)
+(or (not x3267) (not x2527) x3352)
+(or (not x1018) x2943 x2941 x2938 x2935 x2933)
+(or (not x3256) (not x2527) x2530)
+(or (not x2943) x1018)
+(or (not x3287) (not x2527) x3375)
+(or (not x2941) x1018)
+(or (not x3276) (not x2527) x3361)
+(or (not x2938) x1018)
+(or (not x3265) (not x2527) x3349)
+(or (not x2935) x1018)
+(or (not x3252) (not x2527) x2529)
+(or (not x2933) x1018)
+(or (not x3285) (not x2527) x3373)
+(or (not x1016) x2929 x2927 x2923 x2921 x2919)
+(or (not x3274) (not x2527) x3359)
+(or (not x2929) x1016)
+(or (not x3263) (not x2527) x3347)
+(or (not x2927) x1016)
+(or (not x3250) (not x2527) x2528)
+(or (not x2923) x1016)
+(or (not x3298) (not x2526) x3195)
+(or (not x2921) x1016)
+(or (not x3283) (not x2526) x3182)
+(or (not x2919) x1016)
+(or (not x3272) (not x2526) x3167)
+(or (not x1014) x2917 x2915 x2913 x2911 x2909)
+(or (not x3261) (not x2526) x2515)
+(or (not x2917) x1014)
+(or (not x3293) (not x2526))
+(or (not x2915) x1014)
+(or (not x3280) (not x2526))
+(or (not x2913) x1014)
+(or (not x3269) (not x2526))
+(or (not x2911) x1014)
+(or (not x3258) (not x2526))
+(or (not x2909) x1014)
+(or (not x3289) (not x2526) x3190)
+(or (not x1011) x2365 x2206 x2052 x1750 x1449)
+(or (not x3278) (not x2526) x3175)
+(or (not x2365) x1011)
+(or (not x3267) (not x2526) x3160)
+(or (not x2206) x1011)
+(or (not x3256) (not x2526) x2507)
+(or (not x2052) x1011)
+(or (not x3287) (not x2526) x3188)
+(or (not x1750) x1011)
+(or (not x3276) (not x2526) x3173)
+(or (not x1449) x1011)
+(or (not x3265) (not x2526) x3158)
+(or (not x1) x2871 x2869 x2867 x2865 x2862)
+(or (not x3252) (not x2526) x2504)
+(or (not x2871) x1)
+(or (not x3285) (not x2526) x3185)
+(or (not x2869) x1)
+(or (not x3274) (not x2526) x3170)
+(or (not x2867) x1)
+(or (not x3263) (not x2526) x3156)
+(or (not x2865) x1)
+(or (not x3250) (not x2526) x2501)
+(or (not x2862) x1)
+(or (not x3298) (not x2523) x3105)
+(or (not x25) x2859 x2857 x2855 x2853 x2851)
+(or (not x3283) (not x2523) x3094)
+(or (not x2859) x25)
+(or (not x3272) (not x2523) x3080)
+(or (not x2857) x25)
+(or (not x3261) (not x2523) x2499)
+(or (not x2855) x25)
+(or (not x3293) (not x2523) x3101)
+(or (not x2853) x25)
+(or (not x3280) (not x2523) x3090)
+(or (not x2851) x25)
+(or (not x3269) (not x2523) x3076)
+(or (not x18) x2846 x2844 x2841 x2838 x2836)
+(or (not x3258) (not x2523) x2493)
+(or (not x2846) x18)
+(or (not x3289) (not x2523))
+(or (not x2844) x18)
+(or (not x3278) (not x2523))
+(or (not x2841) x18)
+(or (not x3267) (not x2523))
+(or (not x2838) x18)
+(or (not x3256) (not x2523))
+(or (not x2836) x18)
+(or (not x3287) (not x2523) x3098)
+(or (not x11) x2831 x2827 x2825 x2823 x2821)
+(or (not x3276) (not x2523) x3085)
+(or (not x2831) x11)
+(or (not x3265) (not x2523) x3073)
+(or (not x2827) x11)
+(or (not x3252) (not x2523) x2490)
+(or (not x2825) x11)
+(or (not x3285) (not x2523) x3096)
+(or (not x2823) x11)
+(or (not x3274) (not x2523) x3082)
+(or (not x2821) x11)
+(or (not x3263) (not x2523) x3070)
+(or (not x4) x946 x944 x942 x941 x939)
+(or (not x3250) (not x2523) x2487)
+(or (not x946) x4)
+(or (not x3298) (not x2520) x3023)
+(or (not x944) x4)
+(or (not x3283) (not x2520) x3011)
+(or (not x942) x4)
+(or (not x3272) (not x2520) x2999)
+(or (not x941) x4)
+(or (not x3261) (not x2520) x2484)
+(or (not x939) x4)
+(or (not x3293) (not x2520) x3019)
+(or (not x3280) (not x2520) x3006)
+(or (not x3269) (not x2520) x2994)
+(or (not x3258) (not x2520) x2477)
+(or (not x3289) (not x2520) x3016)
+(or (not x3278) (not x2520) x3004)
+(or (not x171) x2777 x2772 x2769 x2767 x2765)
+(or (not x3267) (not x2520) x2991)
+(or (not x2777) x171)
+(or (not x3256) (not x2520) x2474)
+(or (not x2772) x171)
+(or (not x3287) (not x2520))
+(or (not x2769) x171)
+(or (not x3276) (not x2520))
+(or (not x2767) x171)
+(or (not x3265) (not x2520))
+(or (not x2765) x171)
+(or (not x3252) (not x2520))
+(or (not x169) x2763 x2760 x2757 x2755 x2752)
+(or (not x3285) (not x2520) x3013)
+(or (not x2763) x169)
+(or (not x3274) (not x2520) x3001)
+(or (not x2760) x169)
+(or (not x3263) (not x2520) x2988)
+(or (not x2757) x169)
+(or (not x3250) (not x2520) x2471)
+(or (not x2755) x169)
+(or (not x3298) (not x2517) x2943)
+(or (not x2752) x169)
+(or (not x3283) (not x2517) x2929)
+(or (not x167) x2748 x2742 x2740 x2738 x2736)
+(or (not x3272) (not x2517) x2917)
+(or (not x2748) x167)
+(or (not x3261) (not x2517) x2365)
+(or (not x2742) x167)
+(or (not x3293) (not x2517) x2938)
+(or (not x2740) x167)
+(or (not x3280) (not x2517) x2923)
+(or (not x2738) x167)
+(or (not x3269) (not x2517) x2913)
+(or (not x2736) x167)
+(or (not x3258) (not x2517) x2052)
+(or (not x164) x2734 x2730 x2727 x2724 x2720)
+(or (not x3289) (not x2517) x2935)
+(or (not x2734) x164)
+(or (not x3278) (not x2517) x2921)
+(or (not x2730) x164)
+(or (not x3267) (not x2517) x2911)
+(or (not x2727) x164)
+(or (not x3256) (not x2517) x1750)
+(or (not x2724) x164)
+(or (not x3287) (not x2517) x2933)
+(or (not x2720) x164)
+(or (not x3276) (not x2517) x2919)
+(or (not x162) x937 x936 x933 x931 x929)
+(or (not x3265) (not x2517) x2909)
+(or (not x937) x162)
+(or (not x3252) (not x2517) x1449)
+(or (not x936) x162)
+(or (not x3285) (not x2517))
+(or (not x933) x162)
+(or (not x3274) (not x2517))
+(or (not x931) x162)
+(or (not x3263) (not x2517))
+(or (not x929) x162)
+(or (not x3250) (not x2517))
+(or (not x3207) (not x2515))
+(or (not x3195) (not x2515))
+(or (not x3182) (not x2515))
+(or (not x3167) (not x2515))
+(or (not x2) x2648 x2646 x2643 x2641 x2639)
+(or (not x3205) (not x2515) x3381)
+(or (not x2648) x2)
+(or (not x3193) (not x2515) x3370)
+(or (not x2646) x2)
+(or (not x3180) (not x2515) x3356)
+(or (not x2643) x2)
+(or (not x3165) (not x2515) x2532)
+(or (not x2641) x2)
+(or (not x3202) (not x2515) x3377)
+(or (not x2639) x2)
+(or (not x3190) (not x2515) x3364)
+(or (not x26) x2637 x2635 x2632 x2630 x2628)
+(or (not x3175) (not x2515) x3352)
+(or (not x2637) x26)
+(or (not x3160) (not x2515) x2530)
+(or (not x2635) x26)
+(or (not x3199) (not x2515) x3375)
+(or (not x2632) x26)
+(or (not x3188) (not x2515) x3361)
+(or (not x2630) x26)
+(or (not x3173) (not x2515) x3349)
+(or (not x2628) x26)
+(or (not x3158) (not x2515) x2529)
+(or (not x19) x2626 x2624 x2621 x2617 x2615)
+(or (not x3197) (not x2515) x3373)
+(or (not x2626) x19)
+(or (not x3185) (not x2515) x3359)
+(or (not x2624) x19)
+(or (not x3170) (not x2515) x3347)
+(or (not x2621) x19)
+(or (not x3156) (not x2515) x2528)
+(or (not x2617) x19)
+(or (not x3207) (not x2510) x3283)
+(or (not x2615) x19)
+(or (not x3195) (not x2510) x3272)
+(or (not x12) x2613 x2610 x2607 x2605 x2603)
+(or (not x3182) (not x2510) x3261)
+(or (not x2613) x12)
+(or (not x3167) (not x2510) x2527)
+(or (not x2610) x12)
+(or (not x3205) (not x2510))
+(or (not x2607) x12)
+(or (not x3193) (not x2510))
+(or (not x2605) x12)
+(or (not x3180) (not x2510))
+(or (not x2603) x12)
+(or (not x3165) (not x2510))
+(or (not x5) x928 x926 x924 x921 x919)
+(or (not x3202) (not x2510) x3278)
+(or (not x928) x5)
+(or (not x3190) (not x2510) x3267)
+(or (not x926) x5)
+(or (not x3175) (not x2510) x3256)
+(or (not x924) x5)
+(or (not x3160) (not x2510) x2523)
+(or (not x921) x5)
+(or (not x3199) (not x2510) x3276)
+(or (not x919) x5)
+(or (not x3188) (not x2510) x3265)
+(or (not x3173) (not x2510) x3252)
+(or (not x3158) (not x2510) x2520)
+(or (not x3197) (not x2510) x3274)
+(or (not x366) x2525 x2522 x2519 x2514 x2512)
+(or (not x3185) (not x2510) x3263)
+(or (not x2525) x366)
+(or (not x3170) (not x2510) x3250)
+(or (not x2522) x366)
+(or (not x3156) (not x2510) x2517)
+(or (not x2519) x366)
+(or (not x3207) (not x2507) x3105)
+(or (not x2514) x366)
+(or (not x3195) (not x2507) x3094)
+(or (not x2512) x366)
+(or (not x3182) (not x2507) x3080)
+(or (not x363) x2509 x2506 x2503 x2498 x2495)
+(or (not x3167) (not x2507) x2499)
+(or (not x2509) x363)
+(or (not x3205) (not x2507) x3103)
+(or (not x2506) x363)
+(or (not x3193) (not x2507) x3092)
+(or (not x2503) x363)
+(or (not x3180) (not x2507) x3078)
+(or (not x2498) x363)
+(or (not x3165) (not x2507) x2496)
+(or (not x2495) x363)
+(or (not x3202) (not x2507))
+(or (not x362) x2492 x2489 x2486 x2481 x2479)
+(or (not x3190) (not x2507))
+(or (not x2492) x362)
+(or (not x3175) (not x2507))
+(or (not x2489) x362)
+(or (not x3160) (not x2507))
+(or (not x2486) x362)
+(or (not x3199) (not x2507) x3098)
+(or (not x2481) x362)
+(or (not x3188) (not x2507) x3085)
+(or (not x2479) x362)
+(or (not x3173) (not x2507) x3073)
+(or (not x361) x2476 x2473 x2470 x2466 x2464)
+(or (not x3158) (not x2507) x2490)
+(or (not x2476) x361)
+(or (not x3197) (not x2507) x3096)
+(or (not x2473) x361)
+(or (not x3185) (not x2507) x3082)
+(or (not x2470) x361)
+(or (not x3170) (not x2507) x3070)
+(or (not x2466) x361)
+(or (not x3156) (not x2507) x2487)
+(or (not x2464) x361)
+(or (not x3207) (not x2504) x3023)
+(or (not x360) x917 x915 x912 x907 x905)
+(or (not x3195) (not x2504) x3011)
+(or (not x917) x360)
+(or (not x3182) (not x2504) x2999)
+(or (not x915) x360)
+(or (not x3167) (not x2504) x2484)
+(or (not x912) x360)
+(or (not x3205) (not x2504) x3021)
+(or (not x907) x360)
+(or (not x3193) (not x2504) x3009)
+(or (not x905) x360)
+(or (not x3180) (not x2504) x2997)
+(or (not x3165) (not x2504) x2482)
+(or (not x3202) (not x2504) x3016)
+(or (not x272) x2430 x2428 x2426 x2424 x2421)
+(or (not x3190) (not x2504) x3004)
+(or (not x2430) x272)
+(or (not x3175) (not x2504) x2991)
+(or (not x2428) x272)
+(or (not x3160) (not x2504) x2474)
+(or (not x2426) x272)
+(or (not x3199) (not x2504))
+(or (not x2424) x272)
+(or (not x3188) (not x2504))
+(or (not x2421) x272)
+(or (not x3173) (not x2504))
+(or (not x269) x2417 x2415 x2412 x2410 x2407)
+(or (not x3158) (not x2504))
+(or (not x2417) x269)
+(or (not x3197) (not x2504) x3013)
+(or (not x2415) x269)
+(or (not x3185) (not x2504) x3001)
+(or (not x2412) x269)
+(or (not x3170) (not x2504) x2988)
+(or (not x2410) x269)
+(or (not x3156) (not x2504) x2471)
+(or (not x2407) x269)
+(or (not x3207) (not x2501) x2943)
+(or (not x268) x2405 x2403 x2400 x2398 x2395)
+(or (not x3195) (not x2501) x2929)
+(or (not x2405) x268)
+(or (not x3182) (not x2501) x2917)
+(or (not x2403) x268)
+(or (not x3167) (not x2501) x2365)
+(or (not x2400) x268)
+(or (not x3205) (not x2501) x2941)
+(or (not x2398) x268)
+(or (not x3193) (not x2501) x2927)
+(or (not x2395) x268)
+(or (not x3180) (not x2501) x2915)
+(or (not x265) x2393 x2390 x2388 x2386 x2383)
+(or (not x3165) (not x2501) x2206)
+(or (not x2393) x265)
+(or (not x3202) (not x2501) x2935)
+(or (not x2390) x265)
+(or (not x3190) (not x2501) x2921)
+(or (not x2388) x265)
+(or (not x3175) (not x2501) x2911)
+(or (not x2386) x265)
+(or (not x3160) (not x2501) x1750)
+(or (not x2383) x265)
+(or (not x3199) (not x2501) x2933)
+(or (not x264) x902 x900 x895 x889 x883)
+(or (not x3188) (not x2501) x2919)
+(or (not x902) x264)
+(or (not x3173) (not x2501) x2909)
+(or (not x900) x264)
+(or (not x3158) (not x2501) x1449)
+(or (not x895) x264)
+(or (not x3197) (not x2501))
+(or (not x889) x264)
+(or (not x3185) (not x2501))
+(or (not x883) x264)
+(or (not x3170) (not x2501))
+(or (not x172) x2349 x2347 x2345 x2342 x2340)
+(or (not x3156) (not x2501))
+(or (not x2349) x172)
+(or (not x3116) (not x2499))
+(or (not x2347) x172)
+(or (not x3105) (not x2499))
+(or (not x2345) x172)
+(or (not x3094) (not x2499))
+(or (not x2342) x172)
+(or (not x3080) (not x2499))
+(or (not x2340) x172)
+(or (not x3114) (not x2499) x3381)
+(or (not x170) x2338 x2336 x2334 x2332 x2328)
+(or (not x3103) (not x2499) x3370)
+(or (not x2338) x170)
+(or (not x3092) (not x2499) x3356)
+(or (not x2336) x170)
+(or (not x3078) (not x2499) x2532)
+(or (not x2334) x170)
+(or (not x3112) (not x2499) x3379)
+(or (not x2332) x170)
+(or (not x3101) (not x2499) x3366)
+(or (not x2328) x170)
+(or (not x3090) (not x2499) x3354)
+(or (not x168) x2326 x2323 x2320 x2318 x2315)
+(or (not x3076) (not x2499) x2531)
+(or (not x2326) x168)
+(or (not x3109) (not x2499) x3375)
+(or (not x2323) x168)
+(or (not x3098) (not x2499) x3361)
+(or (not x2320) x168)
+(or (not x3085) (not x2499) x3349)
+(or (not x2318) x168)
+(or (not x3073) (not x2499) x2529)
+(or (not x2315) x168)
+(or (not x3107) (not x2499) x3373)
+(or (not x165) x2312 x2308 x2306 x2304 x2302)
+(or (not x3096) (not x2499) x3359)
+(or (not x2312) x165)
+(or (not x3082) (not x2499) x3347)
+(or (not x2308) x165)
+(or (not x3070) (not x2499) x2528)
+(or (not x2306) x165)
+(or (not x3116) (not x2496) x3283)
+(or (not x2304) x165)
+(or (not x3105) (not x2496) x3272)
+(or (not x2302) x165)
+(or (not x3094) (not x2496) x3261)
+(or (not x163) x682 x287 x68 x2297 x2295)
+(or (not x3080) (not x2496) x2527)
+(or (not x682) x163)
+(or (not x3114) (not x2496))
+(or (not x287) x163)
+(or (not x3103) (not x2496))
+(or (not x68) x163)
+(or (not x3092) (not x2496))
+(or (not x2297) x163)
+(or (not x3078) (not x2496))
+(or (not x2295) x163)
+(or (not x3112) (not x2496) x3280)
+(or (not x3832) (not x2239))
+(or (not x3101) (not x2496) x3269)
+(or (not x3831) (not x2239))
+(or (not x3090) (not x2496) x3258)
+(or (not x3829) (not x2239))
+(or (not x3076) (not x2496) x2526)
+(or (not x3827) (not x2239))
+(or (not x3109) (not x2496) x3276)
+(or (not x3825) (not x2239))
+(or (not x3098) (not x2496) x3265)
+(or (not x3823) (not x2239))
+(or (not x3085) (not x2496) x3252)
+(or (not x2240) x3832)
+(or (not x3073) (not x2496) x2520)
+(or (not x2241) x3832)
+(or (not x3107) (not x2496) x3274)
+(or (not x2242) x3832)
+(or (not x3096) (not x2496) x3263)
+(or (not x2243) x3832)
+(or (not x3082) (not x2496) x3250)
+(or (not x3831) (not x2240))
+(or (not x3070) (not x2496) x2517)
+(or (not x3829) (not x2240))
+(or (not x3116) (not x2493) x3195)
+(or (not x3827) (not x2240))
+(or (not x3105) (not x2493) x3182)
+(or (not x3825) (not x2240))
+(or (not x3094) (not x2493) x3167)
+(or (not x3823) (not x2240))
+(or (not x3080) (not x2493) x2515)
+(or (not x4550) (not x2241) x3831)
+(or (not x3114) (not x2493) x3193)
+(or (not x4550) (not x2242) x3831)
+(or (not x3103) (not x2493) x3180)
+(or (not x4550) (not x2243) x3831)
+(or (not x3092) (not x2493) x3165)
+(or (not x4535) (not x2241) x3831)
+(or (not x3078) (not x2493) x2510)
+(or (not x4535) (not x2242) x3831)
+(or (not x3112) (not x2493))
+(or (not x4535) (not x2243) x3831)
+(or (not x3101) (not x2493))
+(or (not x4520) (not x2241) x3831)
+(or (not x3090) (not x2493))
+(or (not x4520) (not x2242) x3831)
+(or (not x3076) (not x2493))
+(or (not x4520) (not x2243) x3831)
+(or (not x3109) (not x2493) x3188)
+(or (not x4509) (not x2241) x3831)
+(or (not x3098) (not x2493) x3173)
+(or (not x4509) (not x2242) x3831)
+(or (not x3085) (not x2493) x3158)
+(or (not x4509) (not x2243) x3831)
+(or (not x3073) (not x2493) x2504)
+(or (not x4498) (not x2241) x3831)
+(or (not x3107) (not x2493) x3185)
+(or (not x4498) (not x2242) x3831)
+(or (not x3096) (not x2493) x3170)
+(or (not x4498) (not x2243) x3831)
+(or (not x3082) (not x2493) x3156)
+(or (not x4486) (not x2241) x3831)
+(or (not x3070) (not x2493) x2501)
+(or (not x4486) (not x2242) x3831)
+(or (not x3116) (not x2490) x3023)
+(or (not x4486) (not x2243) x3831)
+(or (not x3105) (not x2490) x3011)
+(or (not x3831) x4550 x4535 x4520 x4509 x4498 x4486)
+(or (not x3094) (not x2490) x2999)
+(or (not x3829) (not x2241))
+(or (not x3080) (not x2490) x2484)
+(or (not x3827) (not x2241))
+(or (not x3114) (not x2490) x3021)
+(or (not x3825) (not x2241))
+(or (not x3103) (not x2490) x3009)
+(or (not x3823) (not x2241))
+(or (not x3092) (not x2490) x2997)
+(or (not x4548) (not x2242) x3829)
+(or (not x3078) (not x2490) x2482)
+(or (not x4548) (not x2243) x3829)
+(or (not x3112) (not x2490) x3019)
+(or (not x4532) (not x2242) x3829)
+(or (not x3101) (not x2490) x3006)
+(or (not x4532) (not x2243) x3829)
+(or (not x3090) (not x2490) x2994)
+(or (not x4518) (not x2242) x3829)
+(or (not x3076) (not x2490) x2477)
+(or (not x4518) (not x2243) x3829)
+(or (not x3109) (not x2490))
+(or (not x4507) (not x2242) x3829)
+(or (not x3098) (not x2490))
+(or (not x4507) (not x2243) x3829)
+(or (not x3085) (not x2490))
+(or (not x4496) (not x2242) x3829)
+(or (not x3073) (not x2490))
+(or (not x4496) (not x2243) x3829)
+(or (not x3107) (not x2490) x3013)
+(or (not x4485) (not x2242) x3829)
+(or (not x3096) (not x2490) x3001)
+(or (not x4485) (not x2243) x3829)
+(or (not x3082) (not x2490) x2988)
+(or (not x3829) x4548 x4532 x4518 x4507 x4496 x4485)
+(or (not x3070) (not x2490) x2471)
+(or (not x3827) (not x2242))
+(or (not x3116) (not x2487) x2943)
+(or (not x3825) (not x2242))
+(or (not x3105) (not x2487) x2929)
+(or (not x3823) (not x2242))
+(or (not x3094) (not x2487) x2917)
+(or (not x4544) (not x2243) x3827)
+(or (not x3080) (not x2487) x2365)
+(or (not x4530) (not x2243) x3827)
+(or (not x3114) (not x2487) x2941)
+(or (not x4516) (not x2243) x3827)
+(or (not x3103) (not x2487) x2927)
+(or (not x4505) (not x2243) x3827)
+(or (not x3092) (not x2487) x2915)
+(or (not x4494) (not x2243) x3827)
+(or (not x3078) (not x2487) x2206)
+(or (not x4482) (not x2243) x3827)
+(or (not x3112) (not x2487) x2938)
+(or (not x3827) x4544 x4530 x4516 x4505 x4494 x4482)
+(or (not x3101) (not x2487) x2923)
+(or (not x3825) (not x2243))
+(or (not x3090) (not x2487) x2913)
+(or (not x3823) (not x2243))
+(or (not x3076) (not x2487) x2052)
+(or (not x3825) x4542 x4527 x4514 x4503 x4492 x4480)
+(or (not x3109) (not x2487) x2933)
+(or (not x3823) x4540 x4523 x4512 x4501 x4490 x4478)
+(or (not x3098) (not x2487) x2919)
+(or (not x3808) (not x2234))
+(or (not x3085) (not x2487) x2909)
+(or (not x3807) (not x2234))
+(or (not x3073) (not x2487) x1449)
+(or (not x3805) (not x2234))
+(or (not x3107) (not x2487))
+(or (not x3803) (not x2234))
+(or (not x3096) (not x2487))
+(or (not x3801) (not x2234))
+(or (not x3082) (not x2487))
+(or (not x3799) (not x2234))
+(or (not x3070) (not x2487))
+(or (not x4449) (not x2235) x3808)
+(or (not x3037) (not x2484))
+(or (not x4449) (not x2236) x3808)
+(or (not x3023) (not x2484))
+(or (not x4449) (not x2237) x3808)
+(or (not x3011) (not x2484))
+(or (not x4449) (not x2238) x3808)
+(or (not x2999) (not x2484))
+(or (not x4437) (not x2235) x3808)
+(or (not x3033) (not x2484) x3381)
+(or (not x4437) (not x2236) x3808)
+(or (not x3021) (not x2484) x3370)
+(or (not x4437) (not x2237) x3808)
+(or (not x3009) (not x2484) x3356)
+(or (not x4437) (not x2238) x3808)
+(or (not x2997) (not x2484) x2532)
+(or (not x4424) (not x2235) x3808)
+(or (not x3031) (not x2484) x3379)
+(or (not x4424) (not x2236) x3808)
+(or (not x3019) (not x2484) x3366)
+(or (not x4424) (not x2237) x3808)
+(or (not x3006) (not x2484) x3354)
+(or (not x4424) (not x2238) x3808)
+(or (not x2994) (not x2484) x2531)
+(or (not x4410) (not x2235) x3808)
+(or (not x3028) (not x2484) x3377)
+(or (not x4410) (not x2236) x3808)
+(or (not x3016) (not x2484) x3364)
+(or (not x4410) (not x2237) x3808)
+(or (not x3004) (not x2484) x3352)
+(or (not x4410) (not x2238) x3808)
+(or (not x2991) (not x2484) x2530)
+(or (not x4396) (not x2235) x3808)
+(or (not x3025) (not x2484) x3373)
+(or (not x4396) (not x2236) x3808)
+(or (not x3013) (not x2484) x3359)
+(or (not x4396) (not x2237) x3808)
+(or (not x3001) (not x2484) x3347)
+(or (not x4396) (not x2238) x3808)
+(or (not x2988) (not x2484) x2528)
+(or (not x3808) x4449 x4437 x4424 x4410 x4396)
+(or (not x3037) (not x2482) x3283)
+(or (not x3807) (not x2235))
+(or (not x3023) (not x2482) x3272)
+(or (not x3805) (not x2235))
+(or (not x3011) (not x2482) x3261)
+(or (not x3803) (not x2235))
+(or (not x2999) (not x2482) x2527)
+(or (not x3801) (not x2235))
+(or (not x3033) (not x2482))
+(or (not x3799) (not x2235))
+(or (not x3021) (not x2482))
+(or (not x2236) x3807)
+(or (not x3009) (not x2482))
+(or (not x2237) x3807)
+(or (not x2997) (not x2482))
+(or (not x2238) x3807)
+(or (not x3031) (not x2482) x3280)
+(or (not x3805) (not x2236))
+(or (not x3019) (not x2482) x3269)
+(or (not x3803) (not x2236))
+(or (not x3006) (not x2482) x3258)
+(or (not x3801) (not x2236))
+(or (not x2994) (not x2482) x2526)
+(or (not x3799) (not x2236))
+(or (not x3028) (not x2482) x3278)
+(or (not x4446) (not x2237) x3805)
+(or (not x3016) (not x2482) x3267)
+(or (not x4446) (not x2238) x3805)
+(or (not x3004) (not x2482) x3256)
+(or (not x4434) (not x2237) x3805)
+(or (not x2991) (not x2482) x2523)
+(or (not x4434) (not x2238) x3805)
+(or (not x3025) (not x2482) x3274)
+(or (not x4420) (not x2237) x3805)
+(or (not x3013) (not x2482) x3263)
+(or (not x4420) (not x2238) x3805)
+(or (not x3001) (not x2482) x3250)
+(or (not x4404) (not x2237) x3805)
+(or (not x2988) (not x2482) x2517)
+(or (not x4404) (not x2238) x3805)
+(or (not x3037) (not x2477) x3195)
+(or (not x4393) (not x2237) x3805)
+(or (not x3023) (not x2477) x3182)
+(or (not x4393) (not x2238) x3805)
+(or (not x3011) (not x2477) x3167)
+(or (not x4385) (not x2237) x3805)
+(or (not x2999) (not x2477) x2515)
+(or (not x4385) (not x2238) x3805)
+(or (not x3033) (not x2477) x3193)
+(or (not x3805) x4446 x4434 x4420 x4404 x4393 x4385)
+(or (not x3021) (not x2477) x3180)
+(or (not x3803) (not x2237))
+(or (not x3009) (not x2477) x3165)
+(or (not x3801) (not x2237))
+(or (not x2997) (not x2477) x2510)
+(or (not x3799) (not x2237))
+(or (not x3031) (not x2477))
+(or (not x4444) (not x2238) x3803)
+(or (not x3019) (not x2477))
+(or (not x4432) (not x2238) x3803)
+(or (not x3006) (not x2477))
+(or (not x4418) (not x2238) x3803)
+(or (not x2994) (not x2477))
+(or (not x4402) (not x2238) x3803)
+(or (not x3028) (not x2477) x3190)
+(or (not x4391) (not x2238) x3803)
+(or (not x3016) (not x2477) x3175)
+(or (not x4384) (not x2238) x3803)
+(or (not x3004) (not x2477) x3160)
+(or (not x3803) x4444 x4432 x4418 x4402 x4391 x4384)
+(or (not x2991) (not x2477) x2507)
+(or (not x3801) (not x2238))
+(or (not x3025) (not x2477) x3185)
+(or (not x3799) (not x2238))
+(or (not x3013) (not x2477) x3170)
+(or (not x3801) x4441 x4430 x4415 x4400 x4389 x4382)
+(or (not x3001) (not x2477) x3156)
+(or (not x3799) x4439 x4428 x4412 x4398 x4387 x4380)
+(or (not x2988) (not x2477) x2501)
+(or (not x3771) (not x2228))
+(or (not x3037) (not x2474) x3105)
+(or (not x3768) (not x2228))
+(or (not x3023) (not x2474) x3094)
+(or (not x3765) (not x2228))
+(or (not x3011) (not x2474) x3080)
+(or (not x3759) (not x2228))
+(or (not x2999) (not x2474) x2499)
+(or (not x3755) (not x2228))
+(or (not x3033) (not x2474) x3103)
+(or (not x3749) (not x2228))
+(or (not x3021) (not x2474) x3092)
+(or (not x4352) (not x2229) x3771)
+(or (not x3009) (not x2474) x3078)
+(or (not x4352) (not x2230) x3771)
+(or (not x2997) (not x2474) x2496)
+(or (not x4352) (not x2231) x3771)
+(or (not x3031) (not x2474) x3101)
+(or (not x4352) (not x2232) x3771)
+(or (not x3019) (not x2474) x3090)
+(or (not x4341) (not x2229) x3771)
+(or (not x3006) (not x2474) x3076)
+(or (not x4341) (not x2230) x3771)
+(or (not x2994) (not x2474) x2493)
+(or (not x4341) (not x2231) x3771)
+(or (not x3028) (not x2474))
+(or (not x4341) (not x2232) x3771)
+(or (not x3016) (not x2474))
+(or (not x4327) (not x2229) x3771)
+(or (not x3004) (not x2474))
+(or (not x4327) (not x2230) x3771)
+(or (not x2991) (not x2474))
+(or (not x4327) (not x2231) x3771)
+(or (not x3025) (not x2474) x3096)
+(or (not x4327) (not x2232) x3771)
+(or (not x3013) (not x2474) x3082)
+(or (not x4315) (not x2229) x3771)
+(or (not x3001) (not x2474) x3070)
+(or (not x4315) (not x2230) x3771)
+(or (not x2988) (not x2474) x2487)
+(or (not x4315) (not x2231) x3771)
+(or (not x3037) (not x2471) x2943)
+(or (not x4315) (not x2232) x3771)
+(or (not x3023) (not x2471) x2929)
+(or (not x4303) (not x2229) x3771)
+(or (not x3011) (not x2471) x2917)
+(or (not x4303) (not x2230) x3771)
+(or (not x2999) (not x2471) x2365)
+(or (not x4303) (not x2231) x3771)
+(or (not x3033) (not x2471) x2941)
+(or (not x4303) (not x2232) x3771)
+(or (not x3021) (not x2471) x2927)
+(or (not x3771) x4352 x4341 x4327 x4315 x4303)
+(or (not x3009) (not x2471) x2915)
+(or (not x3768) (not x2229))
+(or (not x2997) (not x2471) x2206)
+(or (not x3765) (not x2229))
+(or (not x3031) (not x2471) x2938)
+(or (not x3759) (not x2229))
+(or (not x3019) (not x2471) x2923)
+(or (not x3755) (not x2229))
+(or (not x3006) (not x2471) x2913)
+(or (not x3749) (not x2229))
+(or (not x2994) (not x2471) x2052)
+(or (not x4350) (not x2230) x3768)
+(or (not x3028) (not x2471) x2935)
+(or (not x4350) (not x2231) x3768)
+(or (not x3016) (not x2471) x2921)
+(or (not x4350) (not x2232) x3768)
+(or (not x3004) (not x2471) x2911)
+(or (not x4339) (not x2230) x3768)
+(or (not x2991) (not x2471) x1750)
+(or (not x4339) (not x2231) x3768)
+(or (not x3025) (not x2471))
+(or (not x4339) (not x2232) x3768)
+(or (not x3013) (not x2471))
+(or (not x4325) (not x2230) x3768)
+(or (not x3001) (not x2471))
+(or (not x4325) (not x2231) x3768)
+(or (not x2988) (not x2471))
+(or (not x4325) (not x2232) x3768)
+(or (not x2955) (not x2365))
+(or (not x4313) (not x2230) x3768)
+(or (not x2943) (not x2365))
+(or (not x4313) (not x2231) x3768)
+(or (not x2929) (not x2365))
+(or (not x4313) (not x2232) x3768)
+(or (not x2917) (not x2365))
+(or (not x4301) (not x2230) x3768)
+(or (not x2953) (not x2365) x3381)
+(or (not x4301) (not x2231) x3768)
+(or (not x2941) (not x2365) x3370)
+(or (not x4301) (not x2232) x3768)
+(or (not x2927) (not x2365) x3356)
+(or (not x3768) x4350 x4339 x4325 x4313 x4301)
+(or (not x2915) (not x2365) x2532)
+(or (not x3765) (not x2230))
+(or (not x2951) (not x2365) x3379)
+(or (not x3759) (not x2230))
+(or (not x2938) (not x2365) x3366)
+(or (not x3755) (not x2230))
+(or (not x2923) (not x2365) x3354)
+(or (not x3749) (not x2230))
+(or (not x2913) (not x2365) x2531)
+(or (not x2231) x3765)
+(or (not x2949) (not x2365) x3377)
+(or (not x2232) x3765)
+(or (not x2935) (not x2365) x3364)
+(or (not x3759) (not x2231))
+(or (not x2921) (not x2365) x3352)
+(or (not x3755) (not x2231))
+(or (not x2911) (not x2365) x2530)
+(or (not x3749) (not x2231))
+(or (not x2947) (not x2365) x3375)
+(or (not x4347) (not x2232) x3759)
+(or (not x2933) (not x2365) x3361)
+(or (not x4334) (not x2232) x3759)
+(or (not x2919) (not x2365) x3349)
+(or (not x4322) (not x2232) x3759)
+(or (not x2909) (not x2365) x2529)
+(or (not x4309) (not x2232) x3759)
+(or (not x2955) (not x2206) x3283)
+(or (not x4297) (not x2232) x3759)
+(or (not x2943) (not x2206) x3272)
+(or (not x4289) (not x2232) x3759)
+(or (not x2929) (not x2206) x3261)
+(or (not x3759) x4347 x4334 x4322 x4309 x4297 x4289)
+(or (not x2917) (not x2206) x2527)
+(or (not x3755) (not x2232))
+(or (not x2953) (not x2206))
+(or (not x3749) (not x2232))
+(or (not x2941) (not x2206))
+(or (not x3755) x4345 x4331 x4319 x4307 x4294 x4287)
+(or (not x2927) (not x2206))
+(or (not x3749) x4343 x4329 x4317 x4305 x4292 x4285)
+(or (not x2915) (not x2206))
+(or (not x3705) (not x2223))
+(or (not x2951) (not x2206) x3280)
+(or (not x3704) (not x2223))
+(or (not x2938) (not x2206) x3269)
+(or (not x3702) (not x2223))
+(or (not x2923) (not x2206) x3258)
+(or (not x3700) (not x2223))
+(or (not x2913) (not x2206) x2526)
+(or (not x3698) (not x2223))
+(or (not x2949) (not x2206) x3278)
+(or (not x3696) (not x2223))
+(or (not x2935) (not x2206) x3267)
+(or (not x4261) (not x2224) x3705)
+(or (not x2921) (not x2206) x3256)
+(or (not x4261) (not x2225) x3705)
+(or (not x2911) (not x2206) x2523)
+(or (not x4261) (not x2226) x3705)
+(or (not x2947) (not x2206) x3276)
+(or (not x4261) (not x2227) x3705)
+(or (not x2933) (not x2206) x3265)
+(or (not x4248) (not x2224) x3705)
+(or (not x2919) (not x2206) x3252)
+(or (not x4248) (not x2225) x3705)
+(or (not x2909) (not x2206) x2520)
+(or (not x4248) (not x2226) x3705)
+(or (not x2955) (not x2052) x3195)
+(or (not x4248) (not x2227) x3705)
+(or (not x2943) (not x2052) x3182)
+(or (not x4231) (not x2224) x3705)
+(or (not x2929) (not x2052) x3167)
+(or (not x4231) (not x2225) x3705)
+(or (not x2917) (not x2052) x2515)
+(or (not x4231) (not x2226) x3705)
+(or (not x2953) (not x2052) x3193)
+(or (not x4231) (not x2227) x3705)
+(or (not x2941) (not x2052) x3180)
+(or (not x4220) (not x2224) x3705)
+(or (not x2927) (not x2052) x3165)
+(or (not x4220) (not x2225) x3705)
+(or (not x2915) (not x2052) x2510)
+(or (not x4220) (not x2226) x3705)
+(or (not x2951) (not x2052))
+(or (not x4220) (not x2227) x3705)
+(or (not x2938) (not x2052))
+(or (not x4209) (not x2224) x3705)
+(or (not x2923) (not x2052))
+(or (not x4209) (not x2225) x3705)
+(or (not x2913) (not x2052))
+(or (not x4209) (not x2226) x3705)
+(or (not x2949) (not x2052) x3190)
+(or (not x4209) (not x2227) x3705)
+(or (not x2935) (not x2052) x3175)
+(or (not x3705) x4261 x4248 x4231 x4220 x4209)
+(or (not x2921) (not x2052) x3160)
+(or (not x3704) (not x2224))
+(or (not x2911) (not x2052) x2507)
+(or (not x3702) (not x2224))
+(or (not x2947) (not x2052) x3188)
+(or (not x3700) (not x2224))
+(or (not x2933) (not x2052) x3173)
+(or (not x3698) (not x2224))
+(or (not x2919) (not x2052) x3158)
+(or (not x3696) (not x2224))
+(or (not x2909) (not x2052) x2504)
+(or (not x4259) (not x2225) x3704)
+(or (not x2955) (not x1750) x3105)
+(or (not x4259) (not x2226) x3704)
+(or (not x2943) (not x1750) x3094)
+(or (not x4259) (not x2227) x3704)
+(or (not x2929) (not x1750) x3080)
+(or (not x4245) (not x2225) x3704)
+(or (not x2917) (not x1750) x2499)
+(or (not x4245) (not x2226) x3704)
+(or (not x2953) (not x1750) x3103)
+(or (not x4245) (not x2227) x3704)
+(or (not x2941) (not x1750) x3092)
+(or (not x4229) (not x2225) x3704)
+(or (not x2927) (not x1750) x3078)
+(or (not x4229) (not x2226) x3704)
+(or (not x2915) (not x1750) x2496)
+(or (not x4229) (not x2227) x3704)
+(or (not x2951) (not x1750) x3101)
+(or (not x4218) (not x2225) x3704)
+(or (not x2938) (not x1750) x3090)
+(or (not x4218) (not x2226) x3704)
+(or (not x2923) (not x1750) x3076)
+(or (not x4218) (not x2227) x3704)
+(or (not x2913) (not x1750) x2493)
+(or (not x4207) (not x2225) x3704)
+(or (not x2949) (not x1750))
+(or (not x4207) (not x2226) x3704)
+(or (not x2935) (not x1750))
+(or (not x4207) (not x2227) x3704)
+(or (not x2921) (not x1750))
+(or (not x3704) x4259 x4245 x4229 x4218 x4207)
+(or (not x2911) (not x1750))
+(or (not x3702) (not x2225))
+(or (not x2947) (not x1750) x3098)
+(or (not x3700) (not x2225))
+(or (not x2933) (not x1750) x3085)
+(or (not x3698) (not x2225))
+(or (not x2919) (not x1750) x3073)
+(or (not x3696) (not x2225))
+(or (not x2909) (not x1750) x2490)
+(or (not x4257) (not x2226) x3702)
+(or (not x2955) (not x1449) x3023)
+(or (not x4257) (not x2227) x3702)
+(or (not x2943) (not x1449) x3011)
+(or (not x4242) (not x2226) x3702)
+(or (not x2929) (not x1449) x2999)
+(or (not x4242) (not x2227) x3702)
+(or (not x2917) (not x1449) x2484)
+(or (not x4227) (not x2226) x3702)
+(or (not x2953) (not x1449) x3021)
+(or (not x4227) (not x2227) x3702)
+(or (not x2941) (not x1449) x3009)
+(or (not x4216) (not x2226) x3702)
+(or (not x2927) (not x1449) x2997)
+(or (not x4216) (not x2227) x3702)
+(or (not x2915) (not x1449) x2482)
+(or (not x4205) (not x2226) x3702)
+(or (not x2951) (not x1449) x3019)
+(or (not x4205) (not x2227) x3702)
+(or (not x2938) (not x1449) x3006)
+(or (not x3702) x4257 x4242 x4227 x4216 x4205)
+(or (not x2923) (not x1449) x2994)
+(or (not x3700) (not x2226))
+(or (not x2913) (not x1449) x2477)
+(or (not x3698) (not x2226))
+(or (not x2949) (not x1449) x3016)
+(or (not x3696) (not x2226))
+(or (not x2935) (not x1449) x3004)
+(or (not x2227) x3700)
+(or (not x2921) (not x1449) x2991)
+(or (not x3698) (not x2227))
+(or (not x2911) (not x1449) x2474)
+(or (not x3696) (not x2227))
+(or (not x2947) (not x1449))
+(or (not x3698) x4252 x4238 x4224 x4213 x4202 x4197)
+(or (not x2933) (not x1449))
+(or (not x3696) x4250 x4235 x4222 x4211 x4200 x4195)
+(or (not x2919) (not x1449))
+(or (not x3676) (not x2217))
+(or (not x2909) (not x1449))
+(or (not x3674) (not x2217))
+(or (not x2871) (not x946))
+(or (not x3671) (not x2217))
+(or (not x2859) (not x946))
+(or (not x3668) (not x2217))
+(or (not x2846) (not x946))
+(or (not x3665) (not x2217))
+(or (not x2831) (not x946))
+(or (not x3662) (not x2217))
+(or (not x2869) (not x946) x2760)
+(or (not x4169) (not x2218) x3676)
+(or (not x2857) (not x946) x2742)
+(or (not x4169) (not x2219) x3676)
+(or (not x2844) (not x946) x2730)
+(or (not x4169) (not x2220) x3676)
+(or (not x2827) (not x946) x936)
+(or (not x4169) (not x2221) x3676)
+(or (not x2867) (not x946) x2757)
+(or (not x4158) (not x2218) x3676)
+(or (not x2855) (not x946) x2740)
+(or (not x4158) (not x2219) x3676)
+(or (not x2841) (not x946) x2727)
+(or (not x4158) (not x2220) x3676)
+(or (not x2825) (not x946) x933)
+(or (not x4158) (not x2221) x3676)
+(or (not x2865) (not x946) x2755)
+(or (not x4147) (not x2218) x3676)
+(or (not x2853) (not x946) x2738)
+(or (not x4147) (not x2219) x3676)
+(or (not x2838) (not x946) x2724)
+(or (not x4147) (not x2220) x3676)
+(or (not x2823) (not x946) x931)
+(or (not x4147) (not x2221) x3676)
+(or (not x2862) (not x946) x2752)
+(or (not x4134) (not x2218) x3676)
+(or (not x2851) (not x946) x2736)
+(or (not x4134) (not x2219) x3676)
+(or (not x2836) (not x946) x2720)
+(or (not x4134) (not x2220) x3676)
+(or (not x2821) (not x946) x929)
+(or (not x4134) (not x2221) x3676)
+(or (not x2871) (not x944) x2635)
+(or (not x4122) (not x2218) x3676)
+(or (not x2859) (not x944) x2624)
+(or (not x4122) (not x2219) x3676)
+(or (not x2846) (not x944) x2610)
+(or (not x4122) (not x2220) x3676)
+(or (not x2831) (not x944) x926)
+(or (not x4122) (not x2221) x3676)
+(or (not x2869) (not x944))
+(or (not x3676) x4169 x4158 x4147 x4134 x4122)
+(or (not x2857) (not x944))
+(or (not x3674) (not x2218))
+(or (not x2844) (not x944))
+(or (not x3671) (not x2218))
+(or (not x2827) (not x944))
+(or (not x3668) (not x2218))
+(or (not x2867) (not x944) x2632)
+(or (not x3665) (not x2218))
+(or (not x2855) (not x944) x2621)
+(or (not x3662) (not x2218))
+(or (not x2841) (not x944) x2607)
+(or (not x4167) (not x2219) x3674)
+(or (not x2825) (not x944) x924)
+(or (not x4167) (not x2220) x3674)
+(or (not x2865) (not x944) x2630)
+(or (not x4167) (not x2221) x3674)
+(or (not x2853) (not x944) x2617)
+(or (not x4156) (not x2219) x3674)
+(or (not x2838) (not x944) x2605)
+(or (not x4156) (not x2220) x3674)
+(or (not x2823) (not x944) x921)
+(or (not x4156) (not x2221) x3674)
+(or (not x2862) (not x944) x2628)
+(or (not x4145) (not x2219) x3674)
+(or (not x2851) (not x944) x2615)
+(or (not x4145) (not x2220) x3674)
+(or (not x2836) (not x944) x2603)
+(or (not x4145) (not x2221) x3674)
+(or (not x2821) (not x944) x919)
+(or (not x4132) (not x2219) x3674)
+(or (not x2871) (not x942) x2506)
+(or (not x4132) (not x2220) x3674)
+(or (not x2859) (not x942) x2489)
+(or (not x4132) (not x2221) x3674)
+(or (not x2846) (not x942) x2473)
+(or (not x4120) (not x2219) x3674)
+(or (not x2831) (not x942) x915)
+(or (not x4120) (not x2220) x3674)
+(or (not x2869) (not x942) x2503)
+(or (not x4120) (not x2221) x3674)
+(or (not x2857) (not x942) x2486)
+(or (not x3674) x4167 x4156 x4145 x4132 x4120)
+(or (not x2844) (not x942) x2470)
+(or (not x3671) (not x2219))
+(or (not x2827) (not x942) x912)
+(or (not x3668) (not x2219))
+(or (not x2867) (not x942))
+(or (not x3665) (not x2219))
+(or (not x2855) (not x942))
+(or (not x3662) (not x2219))
+(or (not x2841) (not x942))
+(or (not x4165) (not x2220) x3671)
+(or (not x2825) (not x942))
+(or (not x4165) (not x2221) x3671)
+(or (not x2865) (not x942) x2498)
+(or (not x4154) (not x2220) x3671)
+(or (not x2853) (not x942) x2481)
+(or (not x4154) (not x2221) x3671)
+(or (not x2838) (not x942) x2466)
+(or (not x4143) (not x2220) x3671)
+(or (not x2823) (not x942) x907)
+(or (not x4143) (not x2221) x3671)
+(or (not x2862) (not x942) x2495)
+(or (not x4129) (not x2220) x3671)
+(or (not x2851) (not x942) x2479)
+(or (not x4129) (not x2221) x3671)
+(or (not x2836) (not x942) x2464)
+(or (not x4117) (not x2220) x3671)
+(or (not x2821) (not x942) x905)
+(or (not x4117) (not x2221) x3671)
+(or (not x2871) (not x941) x2415)
+(or (not x3671) x4165 x4154 x4143 x4129 x4117)
+(or (not x2859) (not x941) x2403)
+(or (not x3668) (not x2220))
+(or (not x2846) (not x941) x2390)
+(or (not x3665) (not x2220))
+(or (not x2831) (not x941) x900)
+(or (not x3662) (not x2220))
+(or (not x2869) (not x941) x2412)
+(or (not x4163) (not x2221) x3668)
+(or (not x2857) (not x941) x2400)
+(or (not x4152) (not x2221) x3668)
+(or (not x2844) (not x941) x2388)
+(or (not x4141) (not x2221) x3668)
+(or (not x2827) (not x941) x895)
+(or (not x4127) (not x2221) x3668)
+(or (not x2867) (not x941) x2410)
+(or (not x4115) (not x2221) x3668)
+(or (not x2855) (not x941) x2398)
+(or (not x3668) x4163 x4152 x4141 x4127 x4115)
+(or (not x2841) (not x941) x2386)
+(or (not x3665) (not x2221))
+(or (not x2825) (not x941) x889)
+(or (not x3662) (not x2221))
+(or (not x2865) (not x941))
+(or (not x3662) x4160 x4149 x4138 x4124 x4112)
+(or (not x2853) (not x941))
+(or (not x3675) (not x2212))
+(or (not x2838) (not x941))
+(or (not x3673) (not x2212))
+(or (not x2823) (not x941))
+(or (not x3670) (not x2212))
+(or (not x2862) (not x941) x2407)
+(or (not x3667) (not x2212))
+(or (not x2851) (not x941) x2395)
+(or (not x3664) (not x2212))
+(or (not x2836) (not x941) x2383)
+(or (not x3661) (not x2212))
+(or (not x2821) (not x941) x883)
+(or (not x4088) (not x2213) x3675)
+(or (not x2871) (not x939) x2336)
+(or (not x4088) (not x2214) x3675)
+(or (not x2859) (not x939) x2323)
+(or (not x4088) (not x2215) x3675)
+(or (not x2846) (not x939) x2308)
+(or (not x4088) (not x2216) x3675)
+(or (not x2831) (not x939) x287)
+(or (not x4075) (not x2213) x3675)
+(or (not x2869) (not x939) x2334)
+(or (not x4075) (not x2214) x3675)
+(or (not x2857) (not x939) x2320)
+(or (not x4075) (not x2215) x3675)
+(or (not x2844) (not x939) x2306)
+(or (not x4075) (not x2216) x3675)
+(or (not x2827) (not x939) x68)
+(or (not x4064) (not x2213) x3675)
+(or (not x2867) (not x939) x2332)
+(or (not x4064) (not x2214) x3675)
+(or (not x2855) (not x939) x2318)
+(or (not x4064) (not x2215) x3675)
+(or (not x2841) (not x939) x2304)
+(or (not x4064) (not x2216) x3675)
+(or (not x2825) (not x939) x2297)
+(or (not x4053) (not x2213) x3675)
+(or (not x2865) (not x939) x2328)
+(or (not x4053) (not x2214) x3675)
+(or (not x2853) (not x939) x2315)
+(or (not x4053) (not x2215) x3675)
+(or (not x2838) (not x939) x2302)
+(or (not x4053) (not x2216) x3675)
+(or (not x2823) (not x939) x2295)
+(or (not x4041) (not x2213) x3675)
+(or (not x2862) (not x939))
+(or (not x4041) (not x2214) x3675)
+(or (not x2851) (not x939))
+(or (not x4041) (not x2215) x3675)
+(or (not x2836) (not x939))
+(or (not x4041) (not x2216) x3675)
+(or (not x2821) (not x939))
+(or (not x3675) x4088 x4075 x4064 x4053 x4041)
+(or (not x2777) (not x937))
+(or (not x3673) (not x2213))
+(or (not x2763) (not x937))
+(or (not x3670) (not x2213))
+(or (not x2748) (not x937))
+(or (not x3667) (not x2213))
+(or (not x2734) (not x937))
+(or (not x3664) (not x2213))
+(or (not x2772) (not x937) x2857)
+(or (not x3661) (not x2213))
+(or (not x2760) (not x937) x2844)
+(or (not x4086) (not x2214) x3673)
+(or (not x2742) (not x937) x2827)
+(or (not x4086) (not x2215) x3673)
+(or (not x2730) (not x937) x944)
+(or (not x4086) (not x2216) x3673)
+(or (not x2769) (not x937) x2855)
+(or (not x4073) (not x2214) x3673)
+(or (not x2757) (not x937) x2841)
+(or (not x4073) (not x2215) x3673)
+(or (not x2740) (not x937) x2825)
+(or (not x4073) (not x2216) x3673)
+(or (not x2727) (not x937) x942)
+(or (not x4062) (not x2214) x3673)
+(or (not x2767) (not x937) x2853)
+(or (not x4062) (not x2215) x3673)
+(or (not x2755) (not x937) x2838)
+(or (not x4062) (not x2216) x3673)
+(or (not x2738) (not x937) x2823)
+(or (not x4051) (not x2214) x3673)
+(or (not x2724) (not x937) x941)
+(or (not x4051) (not x2215) x3673)
+(or (not x2765) (not x937) x2851)
+(or (not x4051) (not x2216) x3673)
+(or (not x2752) (not x937) x2836)
+(or (not x4038) (not x2214) x3673)
+(or (not x2736) (not x937) x2821)
+(or (not x4038) (not x2215) x3673)
+(or (not x2720) (not x937) x939)
+(or (not x4038) (not x2216) x3673)
+(or (not x2777) (not x936) x2637)
+(or (not x3673) x4086 x4073 x4062 x4051 x4038)
+(or (not x2763) (not x936) x2626)
+(or (not x3670) (not x2214))
+(or (not x2748) (not x936) x2613)
+(or (not x3667) (not x2214))
+(or (not x2734) (not x936) x928)
+(or (not x3664) (not x2214))
+(or (not x2772) (not x936))
+(or (not x3661) (not x2214))
+(or (not x2760) (not x936))
+(or (not x4083) (not x2215) x3670)
+(or (not x2742) (not x936))
+(or (not x4083) (not x2216) x3670)
+(or (not x2730) (not x936))
+(or (not x4071) (not x2215) x3670)
+(or (not x2769) (not x936) x2632)
+(or (not x4071) (not x2216) x3670)
+(or (not x2757) (not x936) x2621)
+(or (not x4060) (not x2215) x3670)
+(or (not x2740) (not x936) x2607)
+(or (not x4060) (not x2216) x3670)
+(or (not x2727) (not x936) x924)
+(or (not x4049) (not x2215) x3670)
+(or (not x2767) (not x936) x2630)
+(or (not x4049) (not x2216) x3670)
+(or (not x2755) (not x936) x2617)
+(or (not x4035) (not x2215) x3670)
+(or (not x2738) (not x936) x2605)
+(or (not x4035) (not x2216) x3670)
+(or (not x2724) (not x936) x921)
+(or (not x3670) x4083 x4071 x4060 x4049 x4035)
+(or (not x2765) (not x936) x2628)
+(or (not x3667) (not x2215))
+(or (not x2752) (not x936) x2615)
+(or (not x3664) (not x2215))
+(or (not x2736) (not x936) x2603)
+(or (not x3661) (not x2215))
+(or (not x2720) (not x936) x919)
+(or (not x4080) (not x2216) x3667)
+(or (not x2777) (not x933) x2509)
+(or (not x4069) (not x2216) x3667)
+(or (not x2763) (not x933) x2492)
+(or (not x4057) (not x2216) x3667)
+(or (not x2748) (not x933) x2476)
+(or (not x4046) (not x2216) x3667)
+(or (not x2734) (not x933) x917)
+(or (not x4032) (not x2216) x3667)
+(or (not x2772) (not x933) x2503)
+(or (not x3667) x4080 x4069 x4057 x4046 x4032)
+(or (not x2760) (not x933) x2486)
+(or (not x3664) (not x2216))
+(or (not x2742) (not x933) x2470)
+(or (not x3661) (not x2216))
+(or (not x2730) (not x933) x912)
+(or (not x3664) x4077 x4066 x4055 x4043 x3926)
+(or (not x2769) (not x933))
+(or (not x2725) (not x2190))
+(or (not x2757) (not x933))
+(or (not x2722) (not x2190))
+(or (not x2740) (not x933))
+(or (not x2718) (not x2190))
+(or (not x2727) (not x933))
+(or (not x2714) (not x2190))
+(or (not x2767) (not x933) x2498)
+(or (not x2711) (not x2190))
+(or (not x2755) (not x933) x2481)
+(or (not x2708) (not x2190))
+(or (not x2738) (not x933) x2466)
+(or (not x2191) x2725)
+(or (not x2724) (not x933) x907)
+(or (not x2192) x2725)
+(or (not x2765) (not x933) x2495)
+(or (not x2193) x2725)
+(or (not x2752) (not x933) x2479)
+(or (not x2194) x2725)
+(or (not x2736) (not x933) x2464)
+(or (not x2722) (not x2191))
+(or (not x2720) (not x933) x905)
+(or (not x2718) (not x2191))
+(or (not x2777) (not x931) x2417)
+(or (not x2714) (not x2191))
+(or (not x2763) (not x931) x2405)
+(or (not x2711) (not x2191))
+(or (not x2748) (not x931) x2393)
+(or (not x2708) (not x2191))
+(or (not x2734) (not x931) x902)
+(or (not x3999) (not x2192) x2722)
+(or (not x2772) (not x931) x2412)
+(or (not x3999) (not x2193) x2722)
+(or (not x2760) (not x931) x2400)
+(or (not x3999) (not x2194) x2722)
+(or (not x2742) (not x931) x2388)
+(or (not x3988) (not x2192) x2722)
+(or (not x2730) (not x931) x895)
+(or (not x3988) (not x2193) x2722)
+(or (not x2769) (not x931) x2410)
+(or (not x3988) (not x2194) x2722)
+(or (not x2757) (not x931) x2398)
+(or (not x3974) (not x2192) x2722)
+(or (not x2740) (not x931) x2386)
+(or (not x3974) (not x2193) x2722)
+(or (not x2727) (not x931) x889)
+(or (not x3974) (not x2194) x2722)
+(or (not x2767) (not x931))
+(or (not x3962) (not x2192) x2722)
+(or (not x2755) (not x931))
+(or (not x3962) (not x2193) x2722)
+(or (not x2738) (not x931))
+(or (not x3962) (not x2194) x2722)
+(or (not x2724) (not x931))
+(or (not x3638) (not x2192) x2722)
+(or (not x2765) (not x931) x2407)
+(or (not x3638) (not x2193) x2722)
+(or (not x2752) (not x931) x2395)
+(or (not x3638) (not x2194) x2722)
+(or (not x2736) (not x931) x2383)
+(or (not x3943) (not x2192) x2722)
+(or (not x2720) (not x931) x883)
+(or (not x3943) (not x2193) x2722)
+(or (not x2777) (not x929) x2338)
+(or (not x3943) (not x2194) x2722)
+(or (not x2763) (not x929) x2326)
+(or (not x2722) x3999 x3988 x3974 x3962 x3638 x3943)
+(or (not x2748) (not x929) x2312)
+(or (not x2718) (not x2192))
+(or (not x2734) (not x929) x682)
+(or (not x2714) (not x2192))
+(or (not x2772) (not x929) x2334)
+(or (not x2711) (not x2192))
+(or (not x2760) (not x929) x2320)
+(or (not x2708) (not x2192))
+(or (not x2742) (not x929) x2306)
+(or (not x3997) (not x2193) x2718)
+(or (not x2730) (not x929) x68)
+(or (not x3997) (not x2194) x2718)
+(or (not x2769) (not x929) x2332)
+(or (not x3986) (not x2193) x2718)
+(or (not x2757) (not x929) x2318)
+(or (not x3986) (not x2194) x2718)
+(or (not x2740) (not x929) x2304)
+(or (not x3972) (not x2193) x2718)
+(or (not x2727) (not x929) x2297)
+(or (not x3972) (not x2194) x2718)
+(or (not x2767) (not x929) x2328)
+(or (not x3960) (not x2193) x2718)
+(or (not x2755) (not x929) x2315)
+(or (not x3960) (not x2194) x2718)
+(or (not x2738) (not x929) x2302)
+(or (not x3635) (not x2193) x2718)
+(or (not x2724) (not x929) x2295)
+(or (not x3635) (not x2194) x2718)
+(or (not x2765) (not x929))
+(or (not x3941) (not x2193) x2718)
+(or (not x2752) (not x929))
+(or (not x3941) (not x2194) x2718)
+(or (not x2736) (not x929))
+(or (not x2718) x3997 x3986 x3972 x3960 x3635 x3941)
+(or (not x2720) (not x929))
+(or (not x2714) (not x2193))
+(or (not x2648) (not x928))
+(or (not x2711) (not x2193))
+(or (not x2637) (not x928))
+(or (not x2708) (not x2193))
+(or (not x2626) (not x928))
+(or (not x3995) (not x2194) x2714)
+(or (not x2613) (not x928))
+(or (not x3982) (not x2194) x2714)
+(or (not x2646) (not x928) x2859)
+(or (not x3970) (not x2194) x2714)
+(or (not x2635) (not x928) x2846)
+(or (not x3957) (not x2194) x2714)
+(or (not x2624) (not x928) x2831)
+(or (not x3632) (not x2194) x2714)
+(or (not x2610) (not x928) x946)
+(or (not x3938) (not x2194) x2714)
+(or (not x2643) (not x928) x2855)
+(or (not x2714) x3995 x3982 x3970 x3957 x3632 x3938)
+(or (not x2632) (not x928) x2841)
+(or (not x2711) (not x2194))
+(or (not x2621) (not x928) x2825)
+(or (not x2708) (not x2194))
+(or (not x2607) (not x928) x942)
+(or (not x2711) x3993 x3980 x3968 x3955 x3629 x3935)
+(or (not x2641) (not x928) x2853)
+(or (not x2708) x3991 x3977 x3965 x3953 x3626 x3933)
+(or (not x2630) (not x928) x2838)
+(or (not x2684) (not x2185))
+(or (not x2617) (not x928) x2823)
+(or (not x2683) (not x2185))
+(or (not x2605) (not x928) x941)
+(or (not x2681) (not x2185))
+(or (not x2639) (not x928) x2851)
+(or (not x2679) (not x2185))
+(or (not x2628) (not x928) x2836)
+(or (not x2677) (not x2185))
+(or (not x2615) (not x928) x2821)
+(or (not x2675) (not x2185))
+(or (not x2603) (not x928) x939)
+(or (not x3901) (not x2186) x2684)
+(or (not x2648) (not x926) x2763)
+(or (not x3901) (not x2187) x2684)
+(or (not x2637) (not x926) x2748)
+(or (not x3901) (not x2188) x2684)
+(or (not x2626) (not x926) x2734)
+(or (not x3901) (not x2189) x2684)
+(or (not x2613) (not x926) x937)
+(or (not x3890) (not x2186) x2684)
+(or (not x2646) (not x926))
+(or (not x3890) (not x2187) x2684)
+(or (not x2635) (not x926))
+(or (not x3890) (not x2188) x2684)
+(or (not x2624) (not x926))
+(or (not x3890) (not x2189) x2684)
+(or (not x2610) (not x926))
+(or (not x3879) (not x2186) x2684)
+(or (not x2643) (not x926) x2757)
+(or (not x3879) (not x2187) x2684)
+(or (not x2632) (not x926) x2740)
+(or (not x3879) (not x2188) x2684)
+(or (not x2621) (not x926) x2727)
+(or (not x3879) (not x2189) x2684)
+(or (not x2607) (not x926) x933)
+(or (not x3866) (not x2186) x2684)
+(or (not x2641) (not x926) x2755)
+(or (not x3866) (not x2187) x2684)
+(or (not x2630) (not x926) x2738)
+(or (not x3866) (not x2188) x2684)
+(or (not x2617) (not x926) x2724)
+(or (not x3866) (not x2189) x2684)
+(or (not x2605) (not x926) x931)
+(or (not x3623) (not x2186) x2684)
+(or (not x2639) (not x926) x2752)
+(or (not x3623) (not x2187) x2684)
+(or (not x2628) (not x926) x2736)
+(or (not x3623) (not x2188) x2684)
+(or (not x2615) (not x926) x2720)
+(or (not x3623) (not x2189) x2684)
+(or (not x2603) (not x926) x929)
+(or (not x2684) x3901 x3890 x3879 x3866 x3623)
+(or (not x2648) (not x924) x2509)
+(or (not x2683) (not x2186))
+(or (not x2637) (not x924) x2492)
+(or (not x2681) (not x2186))
+(or (not x2626) (not x924) x2476)
+(or (not x2679) (not x2186))
+(or (not x2613) (not x924) x917)
+(or (not x2677) (not x2186))
+(or (not x2646) (not x924) x2506)
+(or (not x2675) (not x2186))
+(or (not x2635) (not x924) x2489)
+(or (not x2187) x2683)
+(or (not x2624) (not x924) x2473)
+(or (not x2188) x2683)
+(or (not x2610) (not x924) x915)
+(or (not x2189) x2683)
+(or (not x2643) (not x924))
+(or (not x2681) (not x2187))
+(or (not x2632) (not x924))
+(or (not x2679) (not x2187))
+(or (not x2621) (not x924))
+(or (not x2677) (not x2187))
+(or (not x2607) (not x924))
+(or (not x2675) (not x2187))
+(or (not x2641) (not x924) x2498)
+(or (not x3898) (not x2188) x2681)
+(or (not x2630) (not x924) x2481)
+(or (not x3898) (not x2189) x2681)
+(or (not x2617) (not x924) x2466)
+(or (not x3887) (not x2188) x2681)
+(or (not x2605) (not x924) x907)
+(or (not x3887) (not x2189) x2681)
+(or (not x2639) (not x924) x2495)
+(or (not x3876) (not x2188) x2681)
+(or (not x2628) (not x924) x2479)
+(or (not x3876) (not x2189) x2681)
+(or (not x2615) (not x924) x2464)
+(or (not x3862) (not x2188) x2681)
+(or (not x2603) (not x924) x905)
+(or (not x3862) (not x2189) x2681)
+(or (not x2648) (not x921) x2417)
+(or (not x3621) (not x2188) x2681)
+(or (not x2637) (not x921) x2405)
+(or (not x3621) (not x2189) x2681)
+(or (not x2626) (not x921) x2393)
+(or (not x3841) (not x2188) x2681)
+(or (not x2613) (not x921) x902)
+(or (not x3841) (not x2189) x2681)
+(or (not x2646) (not x921) x2415)
+(or (not x2681) x3898 x3887 x3876 x3862 x3621 x3841)
+(or (not x2635) (not x921) x2403)
+(or (not x2679) (not x2188))
+(or (not x2624) (not x921) x2390)
+(or (not x2677) (not x2188))
+(or (not x2610) (not x921) x900)
+(or (not x2675) (not x2188))
+(or (not x2643) (not x921) x2410)
+(or (not x3896) (not x2189) x2679)
+(or (not x2632) (not x921) x2398)
+(or (not x3885) (not x2189) x2679)
+(or (not x2621) (not x921) x2386)
+(or (not x3874) (not x2189) x2679)
+(or (not x2607) (not x921) x889)
+(or (not x3860) (not x2189) x2679)
+(or (not x2641) (not x921))
+(or (not x3616) (not x2189) x2679)
+(or (not x2630) (not x921))
+(or (not x3840) (not x2189) x2679)
+(or (not x2617) (not x921))
+(or (not x2679) x3896 x3885 x3874 x3860 x3616 x3840)
+(or (not x2605) (not x921))
+(or (not x2677) (not x2189))
+(or (not x2639) (not x921) x2407)
+(or (not x2675) (not x2189))
+(or (not x2628) (not x921) x2395)
+(or (not x2677) x3894 x3883 x3872 x3858 x3613 x3838)
+(or (not x2615) (not x921) x2383)
+(or (not x2675) x3892 x3881 x3870 x3856 x3610 x3836)
+(or (not x2603) (not x921) x883)
+(or (not x2660) (not x2180))
+(or (not x2648) (not x919) x2338)
+(or (not x2659) (not x2180))
+(or (not x2637) (not x919) x2326)
+(or (not x2657) (not x2180))
+(or (not x2626) (not x919) x2312)
+(or (not x2655) (not x2180))
+(or (not x2613) (not x919) x682)
+(or (not x2653) (not x2180))
+(or (not x2646) (not x919) x2336)
+(or (not x2651) (not x2180))
+(or (not x2635) (not x919) x2323)
+(or (not x3786) (not x2181) x2660)
+(or (not x2624) (not x919) x2308)
+(or (not x3786) (not x2182) x2660)
+(or (not x2610) (not x919) x287)
+(or (not x3786) (not x2183) x2660)
+(or (not x2643) (not x919) x2332)
+(or (not x3786) (not x2184) x2660)
+(or (not x2632) (not x919) x2318)
+(or (not x3773) (not x2181) x2660)
+(or (not x2621) (not x919) x2304)
+(or (not x3773) (not x2182) x2660)
+(or (not x2607) (not x919) x2297)
+(or (not x3773) (not x2183) x2660)
+(or (not x2641) (not x919) x2328)
+(or (not x3773) (not x2184) x2660)
+(or (not x2630) (not x919) x2315)
+(or (not x3754) (not x2181) x2660)
+(or (not x2617) (not x919) x2302)
+(or (not x3754) (not x2182) x2660)
+(or (not x2605) (not x919) x2295)
+(or (not x3754) (not x2183) x2660)
+(or (not x2639) (not x919))
+(or (not x3754) (not x2184) x2660)
+(or (not x2628) (not x919))
+(or (not x3739) (not x2181) x2660)
+(or (not x2615) (not x919))
+(or (not x3739) (not x2182) x2660)
+(or (not x2603) (not x919))
+(or (not x3739) (not x2183) x2660)
+(or (not x2525) (not x917))
+(or (not x3739) (not x2184) x2660)
+(or (not x2509) (not x917))
+(or (not x3607) (not x2181) x2660)
+(or (not x2492) (not x917))
+(or (not x3607) (not x2182) x2660)
+(or (not x2476) (not x917))
+(or (not x3607) (not x2183) x2660)
+(or (not x2522) (not x917) x2859)
+(or (not x3607) (not x2184) x2660)
+(or (not x2506) (not x917) x2846)
+(or (not x2660) x3786 x3773 x3754 x3739 x3607)
+(or (not x2489) (not x917) x2831)
+(or (not x2659) (not x2181))
+(or (not x2473) (not x917) x946)
+(or (not x2657) (not x2181))
+(or (not x2519) (not x917) x2857)
+(or (not x2655) (not x2181))
+(or (not x2503) (not x917) x2844)
+(or (not x2653) (not x2181))
+(or (not x2486) (not x917) x2827)
+(or (not x2651) (not x2181))
+(or (not x2470) (not x917) x944)
+(or (not x3784) (not x2182) x2659)
+(or (not x2514) (not x917) x2853)
+(or (not x3784) (not x2183) x2659)
+(or (not x2498) (not x917) x2838)
+(or (not x3784) (not x2184) x2659)
+(or (not x2481) (not x917) x2823)
+(or (not x3770) (not x2182) x2659)
+(or (not x2466) (not x917) x941)
+(or (not x3770) (not x2183) x2659)
+(or (not x2512) (not x917) x2851)
+(or (not x3770) (not x2184) x2659)
+(or (not x2495) (not x917) x2836)
+(or (not x3751) (not x2182) x2659)
+(or (not x2479) (not x917) x2821)
+(or (not x3751) (not x2183) x2659)
+(or (not x2464) (not x917) x939)
+(or (not x3751) (not x2184) x2659)
+(or (not x2525) (not x915) x2763)
+(or (not x3737) (not x2182) x2659)
+(or (not x2509) (not x915) x2748)
+(or (not x3737) (not x2183) x2659)
+(or (not x2492) (not x915) x2734)
+(or (not x3737) (not x2184) x2659)
+(or (not x2476) (not x915) x937)
+(or (not x3605) (not x2182) x2659)
+(or (not x2522) (not x915))
+(or (not x3605) (not x2183) x2659)
+(or (not x2506) (not x915))
+(or (not x3605) (not x2184) x2659)
+(or (not x2489) (not x915))
+(or (not x2659) x3784 x3770 x3751 x3737 x3605)
+(or (not x2473) (not x915))
+(or (not x2657) (not x2182))
+(or (not x2519) (not x915) x2760)
+(or (not x2655) (not x2182))
+(or (not x2503) (not x915) x2742)
+(or (not x2653) (not x2182))
+(or (not x2486) (not x915) x2730)
+(or (not x2651) (not x2182))
+(or (not x2470) (not x915) x936)
+(or (not x2183) x2657)
+(or (not x2514) (not x915) x2755)
+(or (not x2184) x2657)
+(or (not x2498) (not x915) x2738)
+(or (not x2655) (not x2183))
+(or (not x2481) (not x915) x2724)
+(or (not x2653) (not x2183))
+(or (not x2466) (not x915) x931)
+(or (not x2651) (not x2183))
+(or (not x2512) (not x915) x2752)
+(or (not x3781) (not x2184) x2655)
+(or (not x2495) (not x915) x2736)
+(or (not x3764) (not x2184) x2655)
+(or (not x2479) (not x915) x2720)
+(or (not x3745) (not x2184) x2655)
+(or (not x2464) (not x915) x929)
+(or (not x3734) (not x2184) x2655)
+(or (not x2525) (not x912) x2637)
+(or (not x3602) (not x2184) x2655)
+(or (not x2509) (not x912) x2626)
+(or (not x3722) (not x2184) x2655)
+(or (not x2492) (not x912) x2613)
+(or (not x2655) x3781 x3764 x3745 x3734 x3602 x3722)
+(or (not x2476) (not x912) x928)
+(or (not x2653) (not x2184))
+(or (not x2522) (not x912) x2635)
+(or (not x2651) (not x2184))
+(or (not x2506) (not x912) x2624)
+(or (not x2653) x3779 x3761 x3743 x3732 x3599 x3721)
+(or (not x2489) (not x912) x2610)
+(or (not x2651) x3777 x3757 x3741 x3730 x3597 x3718)
+(or (not x2473) (not x912) x926)
+(or (not x2581) (not x2175))
+(or (not x2519) (not x912))
+(or (not x2580) (not x2175))
+(or (not x2503) (not x912))
+(or (not x2578) (not x2175))
+(or (not x2486) (not x912))
+(or (not x2576) (not x2175))
+(or (not x2470) (not x912))
+(or (not x2574) (not x2175))
+(or (not x2514) (not x912) x2630)
+(or (not x2572) (not x2175))
+(or (not x2498) (not x912) x2617)
+(or (not x3658) (not x2176) x2581)
+(or (not x2481) (not x912) x2605)
+(or (not x3658) (not x2177) x2581)
+(or (not x2466) (not x912) x921)
+(or (not x3658) (not x2178) x2581)
+(or (not x2512) (not x912) x2628)
+(or (not x3658) (not x2179) x2581)
+(or (not x2495) (not x912) x2615)
+(or (not x3647) (not x2176) x2581)
+(or (not x2479) (not x912) x2603)
+(or (not x3647) (not x2177) x2581)
+(or (not x2464) (not x912) x919)
+(or (not x3647) (not x2178) x2581)
+(or (not x2525) (not x907) x2417)
+(or (not x3647) (not x2179) x2581)
+(or (not x2509) (not x907) x2405)
+(or (not x3631) (not x2176) x2581)
+(or (not x2492) (not x907) x2393)
+(or (not x3631) (not x2177) x2581)
+(or (not x2476) (not x907) x902)
+(or (not x3631) (not x2178) x2581)
+(or (not x2522) (not x907) x2415)
+(or (not x3631) (not x2179) x2581)
+(or (not x2506) (not x907) x2403)
+(or (not x3615) (not x2176) x2581)
+(or (not x2489) (not x907) x2390)
+(or (not x3615) (not x2177) x2581)
+(or (not x2473) (not x907) x900)
+(or (not x3615) (not x2178) x2581)
+(or (not x2519) (not x907) x2412)
+(or (not x3615) (not x2179) x2581)
+(or (not x2503) (not x907) x2400)
+(or (not x3595) (not x2176) x2581)
+(or (not x2486) (not x907) x2388)
+(or (not x3595) (not x2177) x2581)
+(or (not x2470) (not x907) x895)
+(or (not x3595) (not x2178) x2581)
+(or (not x2514) (not x907))
+(or (not x3595) (not x2179) x2581)
+(or (not x2498) (not x907))
+(or (not x2581) x3658 x3647 x3631 x3615 x3595)
+(or (not x2481) (not x907))
+(or (not x2580) (not x2176))
+(or (not x2466) (not x907))
+(or (not x2578) (not x2176))
+(or (not x2512) (not x907) x2407)
+(or (not x2576) (not x2176))
+(or (not x2495) (not x907) x2395)
+(or (not x2574) (not x2176))
+(or (not x2479) (not x907) x2383)
+(or (not x2572) (not x2176))
+(or (not x2464) (not x907) x883)
+(or (not x3656) (not x2177) x2580)
+(or (not x2525) (not x905) x2338)
+(or (not x3656) (not x2178) x2580)
+(or (not x2509) (not x905) x2326)
+(or (not x3656) (not x2179) x2580)
+(or (not x2492) (not x905) x2312)
+(or (not x3645) (not x2177) x2580)
+(or (not x2476) (not x905) x682)
+(or (not x3645) (not x2178) x2580)
+(or (not x2522) (not x905) x2336)
+(or (not x3645) (not x2179) x2580)
+(or (not x2506) (not x905) x2323)
+(or (not x3628) (not x2177) x2580)
+(or (not x2489) (not x905) x2308)
+(or (not x3628) (not x2178) x2580)
+(or (not x2473) (not x905) x287)
+(or (not x3628) (not x2179) x2580)
+(or (not x2519) (not x905) x2334)
+(or (not x3612) (not x2177) x2580)
+(or (not x2503) (not x905) x2320)
+(or (not x3612) (not x2178) x2580)
+(or (not x2486) (not x905) x2306)
+(or (not x3612) (not x2179) x2580)
+(or (not x2470) (not x905) x68)
+(or (not x3593) (not x2177) x2580)
+(or (not x2514) (not x905) x2328)
+(or (not x3593) (not x2178) x2580)
+(or (not x2498) (not x905) x2315)
+(or (not x3593) (not x2179) x2580)
+(or (not x2481) (not x905) x2302)
+(or (not x2580) x3656 x3645 x3628 x3612 x3593)
+(or (not x2466) (not x905) x2295)
+(or (not x2578) (not x2177))
+(or (not x2512) (not x905))
+(or (not x2576) (not x2177))
+(or (not x2495) (not x905))
+(or (not x2574) (not x2177))
+(or (not x2479) (not x905))
+(or (not x2572) (not x2177))
+(or (not x2464) (not x905))
+(or (not x3654) (not x2178) x2578)
+(or (not x2430) (not x902))
+(or (not x3654) (not x2179) x2578)
+(or (not x2417) (not x902))
+(or (not x3643) (not x2178) x2578)
+(or (not x2405) (not x902))
+(or (not x3643) (not x2179) x2578)
+(or (not x2393) (not x902))
+(or (not x3625) (not x2178) x2578)
+(or (not x2428) (not x902) x2859)
+(or (not x3625) (not x2179) x2578)
+(or (not x2415) (not x902) x2846)
+(or (not x3609) (not x2178) x2578)
+(or (not x2403) (not x902) x2831)
+(or (not x3609) (not x2179) x2578)
+(or (not x2390) (not x902) x946)
+(or (not x3591) (not x2178) x2578)
+(or (not x2426) (not x902) x2857)
+(or (not x3591) (not x2179) x2578)
+(or (not x2412) (not x902) x2844)
+(or (not x2578) x3654 x3643 x3625 x3609 x3591)
+(or (not x2400) (not x902) x2827)
+(or (not x2576) (not x2178))
+(or (not x2388) (not x902) x944)
+(or (not x2574) (not x2178))
+(or (not x2424) (not x902) x2855)
+(or (not x2572) (not x2178))
+(or (not x2410) (not x902) x2841)
+(or (not x2179) x2576)
+(or (not x2398) (not x902) x2825)
+(or (not x2574) (not x2179))
+(or (not x2386) (not x902) x942)
+(or (not x2572) (not x2179))
+(or (not x2421) (not x902) x2851)
+(or (not x2574) x3651 x3637 x3620 x3604 x3588 x3586)
+(or (not x2407) (not x902) x2836)
+(or (not x2572) x3649 x3634 x3618 x3601 x3587 x3585)
+(or (not x2395) (not x902) x2821)
+(or (not x2552) (not x2170))
+(or (not x2383) (not x902) x939)
+(or (not x2550) (not x2170))
+(or (not x2430) (not x900) x2763)
+(or (not x2547) (not x2170))
+(or (not x2417) (not x900) x2748)
+(or (not x2544) (not x2170))
+(or (not x2405) (not x900) x2734)
+(or (not x2541) (not x2170))
+(or (not x2393) (not x900) x937)
+(or (not x2538) (not x2170))
+(or (not x2428) (not x900))
+(or (not x3563) (not x2171) x2552)
+(or (not x2415) (not x900))
+(or (not x3563) (not x2172) x2552)
+(or (not x2403) (not x900))
+(or (not x3563) (not x2173) x2552)
+(or (not x2390) (not x900))
+(or (not x3563) (not x2174) x2552)
+(or (not x2426) (not x900) x2760)
+(or (not x3548) (not x2171) x2552)
+(or (not x2412) (not x900) x2742)
+(or (not x3548) (not x2172) x2552)
+(or (not x2400) (not x900) x2730)
+(or (not x3548) (not x2173) x2552)
+(or (not x2388) (not x900) x936)
+(or (not x3548) (not x2174) x2552)
+(or (not x2424) (not x900) x2757)
+(or (not x3537) (not x2171) x2552)
+(or (not x2410) (not x900) x2740)
+(or (not x3537) (not x2172) x2552)
+(or (not x2398) (not x900) x2727)
+(or (not x3537) (not x2173) x2552)
+(or (not x2386) (not x900) x933)
+(or (not x3537) (not x2174) x2552)
+(or (not x2421) (not x900) x2752)
+(or (not x3526) (not x2171) x2552)
+(or (not x2407) (not x900) x2736)
+(or (not x3526) (not x2172) x2552)
+(or (not x2395) (not x900) x2720)
+(or (not x3526) (not x2173) x2552)
+(or (not x2383) (not x900) x929)
+(or (not x3526) (not x2174) x2552)
+(or (not x2430) (not x895) x2637)
+(or (not x3513) (not x2171) x2552)
+(or (not x2417) (not x895) x2626)
+(or (not x3513) (not x2172) x2552)
+(or (not x2405) (not x895) x2613)
+(or (not x3513) (not x2173) x2552)
+(or (not x2393) (not x895) x928)
+(or (not x3513) (not x2174) x2552)
+(or (not x2428) (not x895) x2635)
+(or (not x2552) x3563 x3548 x3537 x3526 x3513)
+(or (not x2415) (not x895) x2624)
+(or (not x2550) (not x2171))
+(or (not x2403) (not x895) x2610)
+(or (not x2547) (not x2171))
+(or (not x2390) (not x895) x926)
+(or (not x2544) (not x2171))
+(or (not x2426) (not x895))
+(or (not x2541) (not x2171))
+(or (not x2412) (not x895))
+(or (not x2538) (not x2171))
+(or (not x2400) (not x895))
+(or (not x3560) (not x2172) x2550)
+(or (not x2388) (not x895))
+(or (not x3560) (not x2173) x2550)
+(or (not x2424) (not x895) x2632)
+(or (not x3560) (not x2174) x2550)
+(or (not x2410) (not x895) x2621)
+(or (not x3546) (not x2172) x2550)
+(or (not x2398) (not x895) x2607)
+(or (not x3546) (not x2173) x2550)
+(or (not x2386) (not x895) x924)
+(or (not x3546) (not x2174) x2550)
+(or (not x2421) (not x895) x2628)
+(or (not x3535) (not x2172) x2550)
+(or (not x2407) (not x895) x2615)
+(or (not x3535) (not x2173) x2550)
+(or (not x2395) (not x895) x2603)
+(or (not x3535) (not x2174) x2550)
+(or (not x2383) (not x895) x919)
+(or (not x3524) (not x2172) x2550)
+(or (not x2430) (not x889) x2509)
+(or (not x3524) (not x2173) x2550)
+(or (not x2417) (not x889) x2492)
+(or (not x3524) (not x2174) x2550)
+(or (not x2405) (not x889) x2476)
+(or (not x3510) (not x2172) x2550)
+(or (not x2393) (not x889) x917)
+(or (not x3510) (not x2173) x2550)
+(or (not x2428) (not x889) x2506)
+(or (not x3510) (not x2174) x2550)
+(or (not x2415) (not x889) x2489)
+(or (not x2550) x3560 x3546 x3535 x3524 x3510)
+(or (not x2403) (not x889) x2473)
+(or (not x2547) (not x2172))
+(or (not x2390) (not x889) x915)
+(or (not x2544) (not x2172))
+(or (not x2426) (not x889) x2503)
+(or (not x2541) (not x2172))
+(or (not x2412) (not x889) x2486)
+(or (not x2538) (not x2172))
+(or (not x2400) (not x889) x2470)
+(or (not x3557) (not x2173) x2547)
+(or (not x2388) (not x889) x912)
+(or (not x3557) (not x2174) x2547)
+(or (not x2424) (not x889))
+(or (not x3544) (not x2173) x2547)
+(or (not x2410) (not x889))
+(or (not x3544) (not x2174) x2547)
+(or (not x2398) (not x889))
+(or (not x3533) (not x2173) x2547)
+(or (not x2386) (not x889))
+(or (not x3533) (not x2174) x2547)
+(or (not x2421) (not x889) x2495)
+(or (not x3522) (not x2173) x2547)
+(or (not x2407) (not x889) x2479)
+(or (not x3522) (not x2174) x2547)
+(or (not x2395) (not x889) x2464)
+(or (not x3508) (not x2173) x2547)
+(or (not x2383) (not x889) x905)
+(or (not x3508) (not x2174) x2547)
+(or (not x2430) (not x883) x2338)
+(or (not x2547) x3557 x3544 x3533 x3522 x3508)
+(or (not x2417) (not x883) x2326)
+(or (not x2544) (not x2173))
+(or (not x2405) (not x883) x2312)
+(or (not x2541) (not x2173))
+(or (not x2393) (not x883) x682)
+(or (not x2538) (not x2173))
+(or (not x2428) (not x883) x2336)
+(or (not x3553) (not x2174) x2544)
+(or (not x2415) (not x883) x2323)
+(or (not x3542) (not x2174) x2544)
+(or (not x2403) (not x883) x2308)
+(or (not x3531) (not x2174) x2544)
+(or (not x2390) (not x883) x287)
+(or (not x3520) (not x2174) x2544)
+(or (not x2426) (not x883) x2334)
+(or (not x3506) (not x2174) x2544)
+(or (not x2412) (not x883) x2320)
+(or (not x2544) x3553 x3542 x3531 x3520 x3506)
+(or (not x2400) (not x883) x2306)
+(or (not x2541) (not x2174))
+(or (not x2388) (not x883) x68)
+(or (not x2538) (not x2174))
+(or (not x2424) (not x883) x2332)
+(or (not x2538) x3550 x3539 x3528 x3515 x3503)
+(or (not x2410) (not x883) x2318)
+(or (not x2551) (not x2165))
+(or (not x2398) (not x883) x2304)
+(or (not x2549) (not x2165))
+(or (not x2386) (not x883) x2297)
+(or (not x2546) (not x2165))
+(or (not x2421) (not x883))
+(or (not x2543) (not x2165))
+(or (not x2407) (not x883))
+(or (not x2540) (not x2165))
+(or (not x2395) (not x883))
+(or (not x2537) (not x2165))
+(or (not x2383) (not x883))
+(or (not x3478) (not x2166) x2551)
+(or (not x2349) (not x682))
+(or (not x3478) (not x2167) x2551)
+(or (not x2338) (not x682))
+(or (not x3478) (not x2168) x2551)
+(or (not x2326) (not x682))
+(or (not x3478) (not x2169) x2551)
+(or (not x2312) (not x682))
+(or (not x3468) (not x2166) x2551)
+(or (not x2347) (not x682) x2859)
+(or (not x3468) (not x2167) x2551)
+(or (not x2336) (not x682) x2846)
+(or (not x3468) (not x2168) x2551)
+(or (not x2323) (not x682) x2831)
+(or (not x3468) (not x2169) x2551)
+(or (not x2308) (not x682) x946)
+(or (not x3455) (not x2166) x2551)
+(or (not x2345) (not x682) x2857)
+(or (not x3455) (not x2167) x2551)
+(or (not x2334) (not x682) x2844)
+(or (not x3455) (not x2168) x2551)
+(or (not x2320) (not x682) x2827)
+(or (not x3455) (not x2169) x2551)
+(or (not x2306) (not x682) x944)
+(or (not x3444) (not x2166) x2551)
+(or (not x2342) (not x682) x2855)
+(or (not x3444) (not x2167) x2551)
+(or (not x2332) (not x682) x2841)
+(or (not x3444) (not x2168) x2551)
+(or (not x2318) (not x682) x2825)
+(or (not x3444) (not x2169) x2551)
+(or (not x2304) (not x682) x942)
+(or (not x3433) (not x2166) x2551)
+(or (not x2340) (not x682) x2853)
+(or (not x3433) (not x2167) x2551)
+(or (not x2328) (not x682) x2838)
+(or (not x3433) (not x2168) x2551)
+(or (not x2315) (not x682) x2823)
+(or (not x3433) (not x2169) x2551)
+(or (not x2302) (not x682) x941)
+(or (not x2551) x3478 x3468 x3455 x3444 x3433)
+(or (not x2349) (not x287) x2763)
+(or (not x2549) (not x2166))
+(or (not x2338) (not x287) x2748)
+(or (not x2546) (not x2166))
+(or (not x2326) (not x287) x2734)
+(or (not x2543) (not x2166))
+(or (not x2312) (not x287) x937)
+(or (not x2540) (not x2166))
+(or (not x2347) (not x287))
+(or (not x2537) (not x2166))
+(or (not x2336) (not x287))
+(or (not x3476) (not x2167) x2549)
+(or (not x2323) (not x287))
+(or (not x3476) (not x2168) x2549)
+(or (not x2308) (not x287))
+(or (not x3476) (not x2169) x2549)
+(or (not x2345) (not x287) x2760)
+(or (not x3465) (not x2167) x2549)
+(or (not x2334) (not x287) x2742)
+(or (not x3465) (not x2168) x2549)
+(or (not x2320) (not x287) x2730)
+(or (not x3465) (not x2169) x2549)
+(or (not x2306) (not x287) x936)
+(or (not x3453) (not x2167) x2549)
+(or (not x2342) (not x287) x2757)
+(or (not x3453) (not x2168) x2549)
+(or (not x2332) (not x287) x2740)
+(or (not x3453) (not x2169) x2549)
+(or (not x2318) (not x287) x2727)
+(or (not x3442) (not x2167) x2549)
+(or (not x2304) (not x287) x933)
+(or (not x3442) (not x2168) x2549)
+(or (not x2340) (not x287) x2755)
+(or (not x3442) (not x2169) x2549)
+(or (not x2328) (not x287) x2738)
+(or (not x3319) (not x2167) x2549)
+(or (not x2315) (not x287) x2724)
+(or (not x3319) (not x2168) x2549)
+(or (not x2302) (not x287) x931)
+(or (not x3319) (not x2169) x2549)
+(or (not x2349) (not x68) x2637)
+(or (not x2549) x3476 x3465 x3453 x3442 x3319)
+(or (not x2338) (not x68) x2626)
+(or (not x2546) (not x2167))
+(or (not x2326) (not x68) x2613)
+(or (not x2543) (not x2167))
+(or (not x2312) (not x68) x928)
+(or (not x2540) (not x2167))
+(or (not x2347) (not x68) x2635)
+(or (not x2537) (not x2167))
+(or (not x2336) (not x68) x2624)
+(or (not x3474) (not x2168) x2546)
+(or (not x2323) (not x68) x2610)
+(or (not x3474) (not x2169) x2546)
+(or (not x2308) (not x68) x926)
+(or (not x3462) (not x2168) x2546)
+(or (not x2345) (not x68))
+(or (not x3462) (not x2169) x2546)
+(or (not x2334) (not x68))
+(or (not x3451) (not x2168) x2546)
+(or (not x2320) (not x68))
+(or (not x3451) (not x2169) x2546)
+(or (not x2306) (not x68))
+(or (not x3439) (not x2168) x2546)
+(or (not x2342) (not x68) x2632)
+(or (not x3439) (not x2169) x2546)
+(or (not x2332) (not x68) x2621)
+(or (not x3141) (not x2168) x2546)
+(or (not x2318) (not x68) x2607)
+(or (not x3141) (not x2169) x2546)
+(or (not x2304) (not x68) x924)
+(or (not x2546) x3474 x3462 x3451 x3439 x3141)
+(or (not x2340) (not x68) x2630)
+(or (not x2543) (not x2168))
+(or (not x2328) (not x68) x2617)
+(or (not x2540) (not x2168))
+(or (not x2315) (not x68) x2605)
+(or (not x2537) (not x2168))
+(or (not x2302) (not x68) x921)
+(or (not x3472) (not x2169) x2543)
+(or (not x2349) (not x2297) x2509)
+(or (not x3459) (not x2169) x2543)
+(or (not x2338) (not x2297) x2492)
+(or (not x3448) (not x2169) x2543)
+(or (not x2326) (not x2297) x2476)
+(or (not x3437) (not x2169) x2543)
+(or (not x2312) (not x2297) x917)
+(or (not x2972) (not x2169) x2543)
+(or (not x2347) (not x2297) x2506)
+(or (not x2543) x3472 x3459 x3448 x3437 x2972)
+(or (not x2336) (not x2297) x2489)
+(or (not x2540) (not x2169))
+(or (not x2323) (not x2297) x2473)
+(or (not x2537) (not x2169))
+(or (not x2308) (not x2297) x915)
+(or (not x2540) x3470 x3457 x3446 x3435 x2802)
+(or (not x2345) (not x2297) x2503)
+(or (not x1318) (not x1284))
+(or (not x2334) (not x2297) x2486)
+(or (not x1316) (not x1284))
+(or (not x2320) (not x2297) x2470)
+(or (not x1312) (not x1284))
+(or (not x2306) (not x2297) x912)
+(or (not x1308) (not x1284))
+(or (not x2342) (not x2297))
+(or (not x1303) (not x1284))
+(or (not x2332) (not x2297))
+(or (not x1300) (not x1284))
+(or (not x2318) (not x2297))
+(or (not x1283) x1318)
+(or (not x2304) (not x2297))
+(or (not x1281) x1318)
+(or (not x2340) (not x2297) x2498)
+(or (not x1279) x1318)
+(or (not x2328) (not x2297) x2481)
+(or (not x1276) x1318)
+(or (not x2315) (not x2297) x2466)
+(or (not x1316) (not x1283))
+(or (not x2302) (not x2297) x907)
+(or (not x1312) (not x1283))
+(or (not x2349) (not x2295) x2417)
+(or (not x1308) (not x1283))
+(or (not x2338) (not x2295) x2405)
+(or (not x1303) (not x1283))
+(or (not x2326) (not x2295) x2393)
+(or (not x1300) (not x1283))
+(or (not x2312) (not x2295) x902)
+(or (not x3392) (not x1281) x1316)
+(or (not x2347) (not x2295) x2415)
+(or (not x3392) (not x1279) x1316)
+(or (not x2336) (not x2295) x2403)
+(or (not x3392) (not x1276) x1316)
+(or (not x2323) (not x2295) x2390)
+(or (not x3381) (not x1281) x1316)
+(or (not x2308) (not x2295) x900)
+(or (not x3381) (not x1279) x1316)
+(or (not x2345) (not x2295) x2412)
+(or (not x3381) (not x1276) x1316)
+(or (not x2334) (not x2295) x2400)
+(or (not x3370) (not x1281) x1316)
+(or (not x2320) (not x2295) x2388)
+(or (not x3370) (not x1279) x1316)
+(or (not x2306) (not x2295) x895)
+(or (not x3370) (not x1276) x1316)
+(or (not x2342) (not x2295) x2410)
+(or (not x3356) (not x1281) x1316)
+(or (not x2332) (not x2295) x2398)
+(or (not x3356) (not x1279) x1316)
+(or (not x2318) (not x2295) x2386)
+(or (not x3356) (not x1276) x1316)
+(or (not x2304) (not x2295) x889)
+(or (not x2532) (not x1281) x1316)
+(or (not x2340) (not x2295))
+(or (not x2532) (not x1279) x1316)
+(or (not x2328) (not x2295))
+(or (not x2532) (not x1276) x1316)
+(or (not x2315) (not x2295))
+(or (not x3338) (not x1281) x1316)
+(or (not x2302) (not x2295))
+(or (not x3338) (not x1279) x1316)
+(or (not x4498) (not x188) (not x40) x4554)
+(or (not x3338) (not x1276) x1316)
+(or (not x4498) (not x188) (not x41) x4483)
+(or (not x1316) x3392 x3381 x3370 x3356 x2532 x3338)
+(or (not x4498) (not x188) (not x42) x4464)
+(or (not x1312) (not x1281))
+(or (not x4498) (not x188) (not x43) x4451)
+(or (not x1308) (not x1281))
+(or (not x4496) (not x188) (not x39) x4363)
+(or (not x1303) (not x1281))
+(or (not x4496) (not x188) (not x41) x4332)
+(or (not x1300) (not x1281))
+(or (not x4496) (not x188) (not x42) x4277)
+(or (not x3390) (not x1279) x1312)
+(or (not x4496) (not x188) (not x43) x4264)
+(or (not x3390) (not x1276) x1312)
+(or (not x4494) (not x188) (not x39) x4180)
+(or (not x3379) (not x1279) x1312)
+(or (not x4494) (not x188) (not x40) x4130)
+(or (not x3379) (not x1276) x1312)
+(or (not x4494) (not x188) (not x42) x4099)
+(or (not x3366) (not x1279) x1312)
+(or (not x4494) (not x188) (not x43) x4078)
+(or (not x3366) (not x1276) x1312)
+(or (not x4492) (not x188) (not x39) x4011)
+(or (not x3354) (not x1279) x1312)
+(or (not x4492) (not x188) (not x40) x3978)
+(or (not x3354) (not x1276) x1312)
+(or (not x4492) (not x188) (not x41) x3925)
+(or (not x2531) (not x1279) x1312)
+(or (not x4492) (not x188) (not x43) x3912)
+(or (not x2531) (not x1276) x1312)
+(or (not x4490) (not x188) (not x39) x3818)
+(or (not x3337) (not x1279) x1312)
+(or (not x4490) (not x188) (not x40) x3794)
+(or (not x3337) (not x1276) x1312)
+(or (not x4490) (not x188) (not x41) x3715)
+(or (not x1312) x3390 x3379 x3366 x3354 x2531 x3337)
+(or (not x4490) (not x188) (not x42) x3691)
+(or (not x1308) (not x1279))
+(or (not x4396) (not x175) (not x33) x4619)
+(or (not x1303) (not x1279))
+(or (not x4396) (not x175) (not x34) x4606)
+(or (not x1300) (not x1279))
+(or (not x4396) (not x175) (not x35) x4593)
+(or (not x3388) (not x1276) x1308)
+(or (not x4396) (not x175) (not x36) x4580)
+(or (not x3377) (not x1276) x1308)
+(or (not x4393) (not x175) (not x32) x4376)
+(or (not x3364) (not x1276) x1308)
+(or (not x4393) (not x175) (not x34) x4332)
+(or (not x3352) (not x1276) x1308)
+(or (not x4393) (not x175) (not x35) x4277)
+(or (not x2530) (not x1276) x1308)
+(or (not x4393) (not x175) (not x36) x4264)
+(or (not x3335) (not x1276) x1308)
+(or (not x4391) (not x175) (not x32) x4193)
+(or (not x1308) x3388 x3377 x3364 x3352 x2530 x3335)
+(or (not x4391) (not x175) (not x33) x4130)
+(or (not x1303) (not x1276))
+(or (not x4391) (not x175) (not x35) x4099)
+(or (not x1300) (not x1276))
+(or (not x4391) (not x175) (not x36) x4078)
+(or (not x1303) x3386 x3375 x3361 x3349 x2529 x3331)
+(or (not x4389) (not x175) (not x32) x4024)
+(or (not x1300) x3384 x3373 x3359 x3347 x2528 x3329)
+(or (not x4389) (not x175) (not x33) x3978)
+(or (not x1247) (not x1199))
+(or (not x4389) (not x175) (not x34) x3925)
+(or (not x1244) (not x1199))
+(or (not x4389) (not x175) (not x36) x3912)
+(or (not x1241) (not x1199))
+(or (not x4387) (not x175) (not x32) x3863)
+(or (not x1236) (not x1199))
+(or (not x4387) (not x175) (not x33) x3794)
+(or (not x1233) (not x1199))
+(or (not x4387) (not x175) (not x34) x3715)
+(or (not x1229) (not x1199))
+(or (not x4387) (not x175) (not x35) x3691)
+(or (not x3298) (not x1197) x1247)
+(or (not x4303) (not x153) (not x28) x4632)
+(or (not x3298) (not x1194) x1247)
+(or (not x4303) (not x153) (not x29) x4606)
+(or (not x3298) (not x1191) x1247)
+(or (not x4303) (not x153) (not x30) x4593)
+(or (not x3298) (not x1188) x1247)
+(or (not x4303) (not x153) (not x31) x4580)
+(or (not x3283) (not x1197) x1247)
+(or (not x4301) (not x153) (not x27) x4567)
+(or (not x3283) (not x1194) x1247)
+(or (not x4301) (not x153) (not x29) x4483)
+(or (not x3283) (not x1191) x1247)
+(or (not x4301) (not x153) (not x30) x4464)
+(or (not x3283) (not x1188) x1247)
+(or (not x4301) (not x153) (not x31) x4451)
+(or (not x3272) (not x1197) x1247)
+(or (not x4297) (not x153) (not x27) x4193)
+(or (not x3272) (not x1194) x1247)
+(or (not x4297) (not x153) (not x28) x4180)
+(or (not x3272) (not x1191) x1247)
+(or (not x4297) (not x153) (not x30) x4099)
+(or (not x3272) (not x1188) x1247)
+(or (not x4297) (not x153) (not x31) x4078)
+(or (not x3261) (not x1197) x1247)
+(or (not x4294) (not x153) (not x27) x4024)
+(or (not x3261) (not x1194) x1247)
+(or (not x4294) (not x153) (not x28) x4011)
+(or (not x3261) (not x1191) x1247)
+(or (not x4294) (not x153) (not x29) x3925)
+(or (not x3261) (not x1188) x1247)
+(or (not x4294) (not x153) (not x31) x3912)
+(or (not x2527) (not x1197) x1247)
+(or (not x4292) (not x153) (not x27) x3863)
+(or (not x2527) (not x1194) x1247)
+(or (not x4292) (not x153) (not x28) x3818)
+(or (not x2527) (not x1191) x1247)
+(or (not x4292) (not x153) (not x29) x3715)
+(or (not x2527) (not x1188) x1247)
+(or (not x4292) (not x153) (not x30) x3691)
+(or (not x1247) x3298 x3283 x3272 x3261 x2527)
+(or (not x4209) (not x131) (not x21) x4632)
+(or (not x1244) (not x1197))
+(or (not x4209) (not x131) (not x22) x4619)
+(or (not x1241) (not x1197))
+(or (not x4209) (not x131) (not x23) x4593)
+(or (not x1236) (not x1197))
+(or (not x4209) (not x131) (not x24) x4580)
+(or (not x1233) (not x1197))
+(or (not x4207) (not x131) (not x20) x4567)
+(or (not x1229) (not x1197))
+(or (not x4207) (not x131) (not x22) x4554)
+(or (not x1194) x1244)
+(or (not x4207) (not x131) (not x23) x4464)
+(or (not x1191) x1244)
+(or (not x4207) (not x131) (not x24) x4451)
+(or (not x1188) x1244)
+(or (not x4205) (not x131) (not x20) x4376)
+(or (not x1241) (not x1194))
+(or (not x4205) (not x131) (not x21) x4363)
+(or (not x1236) (not x1194))
+(or (not x4205) (not x131) (not x23) x4277)
+(or (not x1233) (not x1194))
+(or (not x4205) (not x131) (not x24) x4264)
+(or (not x1229) (not x1194))
+(or (not x4202) (not x131) (not x20) x4024)
+(or (not x3293) (not x1191) x1241)
+(or (not x4202) (not x131) (not x21) x4011)
+(or (not x3293) (not x1188) x1241)
+(or (not x4202) (not x131) (not x22) x3978)
+(or (not x3280) (not x1191) x1241)
+(or (not x4202) (not x131) (not x24) x3912)
+(or (not x3280) (not x1188) x1241)
+(or (not x4200) (not x131) (not x20) x3863)
+(or (not x3269) (not x1191) x1241)
+(or (not x4200) (not x131) (not x21) x3818)
+(or (not x3269) (not x1188) x1241)
+(or (not x4200) (not x131) (not x22) x3794)
+(or (not x3258) (not x1191) x1241)
+(or (not x4200) (not x131) (not x23) x3691)
+(or (not x3258) (not x1188) x1241)
+(or (not x4122) (not x110) (not x14) x4632)
+(or (not x2526) (not x1191) x1241)
+(or (not x4122) (not x110) (not x15) x4619)
+(or (not x2526) (not x1188) x1241)
+(or (not x4122) (not x110) (not x16) x4606)
+(or (not x3240) (not x1191) x1241)
+(or (not x4122) (not x110) (not x17) x4580)
+(or (not x3240) (not x1188) x1241)
+(or (not x4120) (not x110) (not x13) x4567)
+(or (not x1241) x3293 x3280 x3269 x3258 x2526 x3240)
+(or (not x4120) (not x110) (not x15) x4554)
+(or (not x1236) (not x1191))
+(or (not x4120) (not x110) (not x16) x4483)
+(or (not x1233) (not x1191))
+(or (not x4120) (not x110) (not x17) x4451)
+(or (not x1229) (not x1191))
+(or (not x4117) (not x110) (not x13) x4376)
+(or (not x3289) (not x1188) x1236)
+(or (not x4117) (not x110) (not x14) x4363)
+(or (not x3278) (not x1188) x1236)
+(or (not x4117) (not x110) (not x16) x4332)
+(or (not x3267) (not x1188) x1236)
+(or (not x4117) (not x110) (not x17) x4264)
+(or (not x3256) (not x1188) x1236)
+(or (not x4115) (not x110) (not x13) x4193)
+(or (not x2523) (not x1188) x1236)
+(or (not x4115) (not x110) (not x14) x4180)
+(or (not x3239) (not x1188) x1236)
+(or (not x4115) (not x110) (not x15) x4130)
+(or (not x1236) x3289 x3278 x3267 x3256 x2523 x3239)
+(or (not x4115) (not x110) (not x17) x4078)
+(or (not x1233) (not x1188))
+(or (not x4112) (not x110) (not x13) x3863)
+(or (not x1229) (not x1188))
+(or (not x4112) (not x110) (not x14) x3818)
+(or (not x1233) x3287 x3276 x3265 x3252 x2520 x3237)
+(or (not x4112) (not x110) (not x15) x3794)
+(or (not x1229) x3285 x3274 x3263 x3250 x2517 x3235)
+(or (not x4112) (not x110) (not x16) x3715)
+(or (not x1141) (not x1113))
+(or (not x4041) (not x69) (not x7) x4632)
+(or (not x1139) (not x1113))
+(or (not x4632) (not x4628) (not x4620) x4631 x4630)
+(or (not x1136) (not x1113))
+(or (not x4632) (not x4620) x4629 x4628)
+(or (not x1133) (not x1113))
+(or (not x4632) x4621 x4620)
+(or (not x1131) (not x1113))
+(or (not x4630) (not x4628) (not x4620) x4632)
+(or (not x1128) (not x1113))
+(or (not x4631) (not x4628) (not x4620) x4632)
+(or (not x3207) (not x1111) x1141)
+(or (not x4629) (not x4620) x4632)
+(or (not x3207) (not x1109) x1141)
+(or (not x4621) x4632)
+(or (not x3207) (not x1108) x1141)
+(or (not x4631) (not x4630))
+(or (not x3207) (not x1105) x1141)
+(or (not x3850) x4631 x3816 x2293)
+(or (not x3195) (not x1111) x1141)
+(or (not x4631) (not x3850) (not x2293) x3816)
+(or (not x3195) (not x1109) x1141)
+(or (not x4631) (not x3816) x3850 x2293)
+(or (not x3195) (not x1108) x1141)
+(or (not x3816) (not x2293) x4631 x3850)
+(or (not x3195) (not x1105) x1141)
+(or (not x3848) x4631 x3815 x2293)
+(or (not x3182) (not x1111) x1141)
+(or (not x4631) (not x3848) (not x2293) x3815)
+(or (not x3182) (not x1109) x1141)
+(or (not x4631) (not x3815) x3848 x2293)
+(or (not x3182) (not x1108) x1141)
+(or (not x3815) (not x2293) x4631 x3848)
+(or (not x3182) (not x1105) x1141)
+(or (not x3847) x4631 x3814 x2293)
+(or (not x3167) (not x1111) x1141)
+(or (not x4631) (not x3847) (not x2293) x3814)
+(or (not x3167) (not x1109) x1141)
+(or (not x4631) (not x3814) x3847 x2293)
+(or (not x3167) (not x1108) x1141)
+(or (not x3814) (not x2293) x4631 x3847)
+(or (not x3167) (not x1105) x1141)
+(or (not x3845) x4631 x3813 x2293)
+(or (not x2515) (not x1111) x1141)
+(or (not x4631) (not x3845) (not x2293) x3813)
+(or (not x2515) (not x1109) x1141)
+(or (not x4631) (not x3813) x3845 x2293)
+(or (not x2515) (not x1108) x1141)
+(or (not x3813) (not x2293) x4631 x3845)
+(or (not x2515) (not x1105) x1141)
+(or (not x3843) x4631 x3812 x2293)
+(or (not x1141) x3207 x3195 x3182 x3167 x2515)
+(or (not x4631) (not x3843) (not x2293) x3812)
+(or (not x1139) (not x1111))
+(or (not x4631) (not x3812) x3843 x2293)
+(or (not x1136) (not x1111))
+(or (not x3812) (not x2293) x4631 x3843)
+(or (not x1133) (not x1111))
+(or (not x3848) (not x3815) x4630 x3850 x3816)
+(or (not x1131) (not x1111))
+(or (not x3847) (not x3814) x4630 x3848 x3815)
+(or (not x1128) (not x1111))
+(or (not x3845) (not x3813) x4630 x3847 x3814)
+(or (not x3205) (not x1109) x1139)
+(or (not x3843) (not x3812) x4630 x3845 x3813)
+(or (not x3205) (not x1108) x1139)
+(or x4630 x3843 x3812)
+(or (not x3205) (not x1105) x1139)
+(or (not x3850) (not x3816) x4630)
+(or (not x3193) (not x1109) x1139)
+(or (not x4630) (not x3816) x3850)
+(or (not x3193) (not x1108) x1139)
+(or (not x4630) (not x3850) x3816)
+(or (not x3193) (not x1105) x1139)
+(or (not x4630) (not x3815) x3848)
+(or (not x3180) (not x1109) x1139)
+(or (not x4630) (not x3848) x3815)
+(or (not x3180) (not x1108) x1139)
+(or (not x4630) (not x3814) x3847)
+(or (not x3180) (not x1105) x1139)
+(or (not x4630) (not x3847) x3814)
+(or (not x3165) (not x1109) x1139)
+(or (not x4630) (not x3813) x3845)
+(or (not x3165) (not x1108) x1139)
+(or (not x4630) (not x3845) x3813)
+(or (not x3165) (not x1105) x1139)
+(or (not x4630) (not x3812) x3843)
+(or (not x2510) (not x1109) x1139)
+(or (not x4630) (not x3843) x3812)
+(or (not x2510) (not x1108) x1139)
+(or (not x52) x4629 x4627 x3808)
+(or (not x2510) (not x1105) x1139)
+(or (not x4629) (not x3808) (not x52) x4627)
+(or (not x1139) x3205 x3193 x3180 x3165 x2510)
+(or (not x4629) x4627 x3808 x52)
+(or (not x1136) (not x1109))
+(or (not x3808) x4629 x4627 x52)
+(or (not x1133) (not x1109))
+(or (not x4627) (not x50) x4629 x4626 x3807)
+(or (not x1131) (not x1109))
+(or (not x4629) (not x4627) (not x3807) (not x50) x4626)
+(or (not x1128) (not x1109))
+(or (not x4629) (not x4627) x4626 x3807 x50)
+(or (not x1108) x1136)
+(or (not x4627) (not x3807) x4629 x4626 x50)
+(or (not x1105) x1136)
+(or (not x4626) (not x48) x4629 x4625 x3805)
+(or (not x1133) (not x1108))
+(or (not x4629) (not x4626) (not x3805) (not x48) x4625)
+(or (not x1131) (not x1108))
+(or (not x4629) (not x4626) x4625 x3805 x48)
+(or (not x1128) (not x1108))
+(or (not x4626) (not x3805) x4629 x4625 x48)
+(or (not x3202) (not x1105) x1133)
+(or (not x4625) (not x46) x4629 x4624 x3803)
+(or (not x3190) (not x1105) x1133)
+(or (not x4629) (not x4625) (not x3803) (not x46) x4624)
+(or (not x3175) (not x1105) x1133)
+(or (not x4629) (not x4625) x4624 x3803 x46)
+(or (not x3160) (not x1105) x1133)
+(or (not x4625) (not x3803) x4629 x4624 x46)
+(or (not x2507) (not x1105) x1133)
+(or (not x4624) (not x44) x4629 x4623 x3801)
+(or (not x3148) (not x1105) x1133)
+(or (not x4629) (not x4624) (not x3801) (not x44) x4623)
+(or (not x1133) x3202 x3190 x3175 x3160 x2507 x3148)
+(or (not x4629) (not x4624) x4623 x3801 x44)
+(or (not x1131) (not x1105))
+(or (not x4624) (not x3801) x4629 x4623 x44)
+(or (not x1128) (not x1105))
+(or (not x4623) (not x149) x4629 x4622 x3799)
+(or (not x1131) x3199 x3188 x3173 x3158 x2504 x3147)
+(or (not x4629) (not x4623) (not x3799) (not x149) x4622)
+(or (not x1128) x3197 x3185 x3170 x3156 x2501 x3145)
+(or (not x4629) (not x4623) x4622 x3799 x149)
+(or (not x1073) (not x1045))
+(or (not x4623) (not x3799) x4629 x4622 x149)
+(or (not x1072) (not x1045))
+(or (not x4629) (not x4628))
+(or (not x1069) (not x1045))
+(or (not x4622) x4628)
+(or (not x1066) (not x1045))
+(or (not x4628) x4622)
+(or (not x1062) (not x1045))
+(or x4627 x3832 x3808)
+(or (not x1059) (not x1045))
+(or (not x3832) (not x3808) x4627)
+(or (not x3116) (not x1043) x1073)
+(or (not x4627) (not x3808) x3832)
+(or (not x3116) (not x1042) x1073)
+(or (not x4627) (not x3832) x3808)
+(or (not x3116) (not x1040) x1073)
+(or (not x4627) x4626 x3831 x3807)
+(or (not x3116) (not x1037) x1073)
+(or (not x4627) (not x3831) (not x3807) x4626)
+(or (not x3105) (not x1043) x1073)
+(or (not x4626) (not x3807) x3831)
+(or (not x3105) (not x1042) x1073)
+(or (not x4626) (not x3831) x3807)
+(or (not x3105) (not x1040) x1073)
+(or (not x4626) x4627)
+(or (not x3105) (not x1037) x1073)
+(or (not x4626) x4625 x3829 x3805)
+(or (not x3094) (not x1043) x1073)
+(or (not x4626) (not x3829) (not x3805) x4625)
+(or (not x3094) (not x1042) x1073)
+(or (not x4625) (not x3805) x3829)
+(or (not x3094) (not x1040) x1073)
+(or (not x4625) (not x3829) x3805)
+(or (not x3094) (not x1037) x1073)
+(or (not x4625) x4626)
+(or (not x3080) (not x1043) x1073)
+(or (not x4625) x4624 x3827 x3803)
+(or (not x3080) (not x1042) x1073)
+(or (not x4625) (not x3827) (not x3803) x4624)
+(or (not x3080) (not x1040) x1073)
+(or (not x4624) (not x3803) x3827)
+(or (not x3080) (not x1037) x1073)
+(or (not x4624) (not x3827) x3803)
+(or (not x2499) (not x1043) x1073)
+(or (not x4624) x4625)
+(or (not x2499) (not x1042) x1073)
+(or (not x4624) x4623 x3825 x3801)
+(or (not x2499) (not x1040) x1073)
+(or (not x4624) (not x3825) (not x3801) x4623)
+(or (not x2499) (not x1037) x1073)
+(or (not x4623) (not x3801) x3825)
+(or (not x1073) x3116 x3105 x3094 x3080 x2499)
+(or (not x4623) (not x3825) x3801)
+(or (not x1072) (not x1043))
+(or (not x4623) x4624)
+(or (not x1069) (not x1043))
+(or (not x4623) x4622 x3823 x3799)
+(or (not x1066) (not x1043))
+(or (not x4623) (not x3823) (not x3799) x4622)
+(or (not x1062) (not x1043))
+(or (not x4622) (not x3799) x3823)
+(or (not x1059) (not x1043))
+(or (not x4622) (not x3823) x3799)
+(or (not x3114) (not x1042) x1072)
+(or (not x4622) x4623)
+(or (not x3114) (not x1040) x1072)
+(or (not x4621) (not x2239) (not x2234))
+(or (not x3114) (not x1037) x1072)
+(or (not x2239) (not x2234) x4620)
+(or (not x3103) (not x1042) x1072)
+(or (not x4621) (not x2239) (not x2235) x95)
+(or (not x3103) (not x1040) x1072)
+(or (not x2239) (not x2235) (not x95) x4621)
+(or (not x3103) (not x1037) x1072)
+(or (not x4620) (not x2239) (not x2235))
+(or (not x3092) (not x1042) x1072)
+(or (not x4621) (not x2239) (not x2236) x94)
+(or (not x3092) (not x1040) x1072)
+(or (not x2239) (not x2236) (not x94) x4621)
+(or (not x3092) (not x1037) x1072)
+(or (not x4620) (not x2239) (not x2236))
+(or (not x3078) (not x1042) x1072)
+(or (not x4621) (not x2239) (not x2237) x92)
+(or (not x3078) (not x1040) x1072)
+(or (not x2239) (not x2237) (not x92) x4621)
+(or (not x3078) (not x1037) x1072)
+(or (not x4620) (not x2239) (not x2237))
+(or (not x2496) (not x1042) x1072)
+(or (not x4621) (not x2239) (not x2238) x91)
+(or (not x2496) (not x1040) x1072)
+(or (not x2239) (not x2238) (not x91) x4621)
+(or (not x2496) (not x1037) x1072)
+(or (not x4620) (not x2239) (not x2238))
+(or (not x1072) x3114 x3103 x3092 x3078 x2496)
+(or (not x4621) (not x2240) (not x2234) x89)
+(or (not x1069) (not x1042))
+(or (not x2240) (not x2234) (not x89) x4621)
+(or (not x1066) (not x1042))
+(or (not x4620) (not x2240) (not x2234))
+(or (not x1062) (not x1042))
+(or (not x4621) (not x2240) (not x2235))
+(or (not x1059) (not x1042))
+(or (not x2240) (not x2235) x4620)
+(or (not x3112) (not x1040) x1069)
+(or (not x4621) (not x2240) (not x2236) x88)
+(or (not x3112) (not x1037) x1069)
+(or (not x2240) (not x2236) (not x88) x4621)
+(or (not x3101) (not x1040) x1069)
+(or (not x4620) (not x2240) (not x2236))
+(or (not x3101) (not x1037) x1069)
+(or (not x4621) (not x2240) (not x2237) x87)
+(or (not x3090) (not x1040) x1069)
+(or (not x2240) (not x2237) (not x87) x4621)
+(or (not x3090) (not x1037) x1069)
+(or (not x4620) (not x2240) (not x2237))
+(or (not x3076) (not x1040) x1069)
+(or (not x4621) (not x2240) (not x2238) x86)
+(or (not x3076) (not x1037) x1069)
+(or (not x2240) (not x2238) (not x86) x4621)
+(or (not x2493) (not x1040) x1069)
+(or (not x4620) (not x2240) (not x2238))
+(or (not x2493) (not x1037) x1069)
+(or (not x4621) (not x2241) (not x2234) x82)
+(or (not x1069) x3112 x3101 x3090 x3076 x2493)
+(or (not x2241) (not x2234) (not x82) x4621)
+(or (not x1066) (not x1040))
+(or (not x4620) (not x2241) (not x2234))
+(or (not x1062) (not x1040))
+(or (not x4621) (not x2241) (not x2235) x81)
+(or (not x1059) (not x1040))
+(or (not x2241) (not x2235) (not x81) x4621)
+(or (not x1037) x1066)
+(or (not x4620) (not x2241) (not x2235))
+(or (not x1062) (not x1037))
+(or (not x4621) (not x2241) (not x2236))
+(or (not x1059) (not x1037))
+(or (not x2241) (not x2236) x4620)
+(or (not x1062) x3109 x3098 x3085 x3073 x2490 x3061)
+(or (not x4621) (not x2241) (not x2237) x79)
+(or (not x1059) x3107 x3096 x3082 x3070 x2487 x3060)
+(or (not x2241) (not x2237) (not x79) x4621)
+(or (not x1000) (not x959))
+(or (not x4620) (not x2241) (not x2237))
+(or (not x997) (not x959))
+(or (not x4621) (not x2241) (not x2238) x77)
+(or (not x993) (not x959))
+(or (not x2241) (not x2238) (not x77) x4621)
+(or (not x989) (not x959))
+(or (not x4620) (not x2241) (not x2238))
+(or (not x986) (not x959))
+(or (not x4621) (not x2242) (not x2234) x73)
+(or (not x981) (not x959))
+(or (not x2242) (not x2234) (not x73) x4621)
+(or (not x3037) (not x957) x1000)
+(or (not x4620) (not x2242) (not x2234))
+(or (not x3037) (not x956) x1000)
+(or (not x4621) (not x2242) (not x2235) x67)
+(or (not x3037) (not x954) x1000)
+(or (not x2242) (not x2235) (not x67) x4621)
+(or (not x3037) (not x948) x1000)
+(or (not x4620) (not x2242) (not x2235))
+(or (not x3023) (not x957) x1000)
+(or (not x4621) (not x2242) (not x2236) x66)
+(or (not x3023) (not x956) x1000)
+(or (not x2242) (not x2236) (not x66) x4621)
+(or (not x3023) (not x954) x1000)
+(or (not x4620) (not x2242) (not x2236))
+(or (not x3023) (not x948) x1000)
+(or (not x4621) (not x2242) (not x2237))
+(or (not x3011) (not x957) x1000)
+(or (not x2242) (not x2237) x4620)
+(or (not x3011) (not x956) x1000)
+(or (not x4621) (not x2242) (not x2238) x65)
+(or (not x3011) (not x954) x1000)
+(or (not x2242) (not x2238) (not x65) x4621)
+(or (not x3011) (not x948) x1000)
+(or (not x4620) (not x2242) (not x2238))
+(or (not x2999) (not x957) x1000)
+(or (not x4621) (not x2243) (not x2234) x58)
+(or (not x2999) (not x956) x1000)
+(or (not x2243) (not x2234) (not x58) x4621)
+(or (not x2999) (not x954) x1000)
+(or (not x4620) (not x2243) (not x2234))
+(or (not x2999) (not x948) x1000)
+(or (not x4621) (not x2243) (not x2235) x57)
+(or (not x2484) (not x957) x1000)
+(or (not x2243) (not x2235) (not x57) x4621)
+(or (not x2484) (not x956) x1000)
+(or (not x4620) (not x2243) (not x2235))
+(or (not x2484) (not x954) x1000)
+(or (not x4621) (not x2243) (not x2236) x56)
+(or (not x2484) (not x948) x1000)
+(or (not x2243) (not x2236) (not x56) x4621)
+(or (not x1000) x3037 x3023 x3011 x2999 x2484)
+(or (not x4620) (not x2243) (not x2236))
+(or (not x997) (not x957))
+(or (not x4621) (not x2243) (not x2237) x55)
+(or (not x993) (not x957))
+(or (not x2243) (not x2237) (not x55) x4621)
+(or (not x989) (not x957))
+(or (not x4620) (not x2243) (not x2237))
+(or (not x986) (not x957))
+(or (not x4621) (not x2243) (not x2238))
+(or (not x981) (not x957))
+(or (not x2243) (not x2238) x4620)
+(or (not x3033) (not x956) x997)
+(or (not x4041) (not x69) (not x8) x4619)
+(or (not x3033) (not x954) x997)
+(or (not x4619) (not x4615) (not x4607) x4618 x4617)
+(or (not x3033) (not x948) x997)
+(or (not x4619) (not x4607) x4616 x4615)
+(or (not x3021) (not x956) x997)
+(or (not x4619) x4608 x4607)
+(or (not x3021) (not x954) x997)
+(or (not x4617) (not x4615) (not x4607) x4619)
+(or (not x3021) (not x948) x997)
+(or (not x4618) (not x4615) (not x4607) x4619)
+(or (not x3009) (not x956) x997)
+(or (not x4616) (not x4607) x4619)
+(or (not x3009) (not x954) x997)
+(or (not x4608) x4619)
+(or (not x3009) (not x948) x997)
+(or (not x4618) (not x4617))
+(or (not x2997) (not x956) x997)
+(or (not x3850) x4618 x3792 x2293)
+(or (not x2997) (not x954) x997)
+(or (not x4618) (not x3850) (not x2293) x3792)
+(or (not x2997) (not x948) x997)
+(or (not x4618) (not x3792) x3850 x2293)
+(or (not x2482) (not x956) x997)
+(or (not x3792) (not x2293) x4618 x3850)
+(or (not x2482) (not x954) x997)
+(or (not x3848) x4618 x3791 x2293)
+(or (not x2482) (not x948) x997)
+(or (not x4618) (not x3848) (not x2293) x3791)
+(or (not x997) x3033 x3021 x3009 x2997 x2482)
+(or (not x4618) (not x3791) x3848 x2293)
+(or (not x993) (not x956))
+(or (not x3791) (not x2293) x4618 x3848)
+(or (not x989) (not x956))
+(or (not x3847) x4618 x3790 x2293)
+(or (not x986) (not x956))
+(or (not x4618) (not x3847) (not x2293) x3790)
+(or (not x981) (not x956))
+(or (not x4618) (not x3790) x3847 x2293)
+(or (not x3031) (not x954) x993)
+(or (not x3790) (not x2293) x4618 x3847)
+(or (not x3031) (not x948) x993)
+(or (not x3845) x4618 x3789 x2293)
+(or (not x3019) (not x954) x993)
+(or (not x4618) (not x3845) (not x2293) x3789)
+(or (not x3019) (not x948) x993)
+(or (not x4618) (not x3789) x3845 x2293)
+(or (not x3006) (not x954) x993)
+(or (not x3789) (not x2293) x4618 x3845)
+(or (not x3006) (not x948) x993)
+(or (not x3843) x4618 x3788 x2293)
+(or (not x2994) (not x954) x993)
+(or (not x4618) (not x3843) (not x2293) x3788)
+(or (not x2994) (not x948) x993)
+(or (not x4618) (not x3788) x3843 x2293)
+(or (not x2477) (not x954) x993)
+(or (not x3788) (not x2293) x4618 x3843)
+(or (not x2477) (not x948) x993)
+(or (not x3848) (not x3791) x4617 x3850 x3792)
+(or (not x993) x3031 x3019 x3006 x2994 x2477)
+(or (not x3847) (not x3790) x4617 x3848 x3791)
+(or (not x989) (not x954))
+(or (not x3845) (not x3789) x4617 x3847 x3790)
+(or (not x986) (not x954))
+(or (not x3843) (not x3788) x4617 x3845 x3789)
+(or (not x981) (not x954))
+(or x4617 x3843 x3788)
+(or (not x3028) (not x948) x989)
+(or (not x3850) (not x3792) x4617)
+(or (not x3016) (not x948) x989)
+(or (not x4617) (not x3792) x3850)
+(or (not x3004) (not x948) x989)
+(or (not x4617) (not x3850) x3792)
+(or (not x2991) (not x948) x989)
+(or (not x4617) (not x3791) x3848)
+(or (not x2474) (not x948) x989)
+(or (not x4617) (not x3848) x3791)
+(or (not x989) x3028 x3016 x3004 x2991 x2474)
+(or (not x4617) (not x3790) x3847)
+(or (not x986) (not x948))
+(or (not x4617) (not x3847) x3790)
+(or (not x981) (not x948))
+(or (not x4617) (not x3789) x3845)
+(or (not x981) x3025 x3013 x3001 x2988 x2471)
+(or (not x4617) (not x3845) x3789)
+(or (not x999) (not x974))
+(or (not x4617) (not x3788) x3843)
+(or (not x996) (not x974))
+(or (not x4617) (not x3843) x3788)
+(or (not x992) (not x974))
+(or (not x52) x4616 x4614 x3771)
+(or (not x988) (not x974))
+(or (not x4616) (not x3771) (not x52) x4614)
+(or (not x985) (not x974))
+(or (not x4616) x4614 x3771 x52)
+(or (not x980) (not x974))
+(or (not x3771) x4616 x4614 x52)
+(or (not x2955) (not x970) x999)
+(or (not x4614) (not x50) x4616 x4613 x3768)
+(or (not x2955) (not x967) x999)
+(or (not x4616) (not x4614) (not x3768) (not x50) x4613)
+(or (not x2955) (not x962) x999)
+(or (not x4616) (not x4614) x4613 x3768 x50)
+(or (not x2955) (not x949) x999)
+(or (not x4614) (not x3768) x4616 x4613 x50)
+(or (not x2943) (not x970) x999)
+(or (not x4613) (not x48) x4616 x4612 x3765)
+(or (not x2943) (not x967) x999)
+(or (not x4616) (not x4613) (not x3765) (not x48) x4612)
+(or (not x2943) (not x962) x999)
+(or (not x4616) (not x4613) x4612 x3765 x48)
+(or (not x2943) (not x949) x999)
+(or (not x4613) (not x3765) x4616 x4612 x48)
+(or (not x2929) (not x970) x999)
+(or (not x4612) (not x46) x4616 x4611 x3759)
+(or (not x2929) (not x967) x999)
+(or (not x4616) (not x4612) (not x3759) (not x46) x4611)
+(or (not x2929) (not x962) x999)
+(or (not x4616) (not x4612) x4611 x3759 x46)
+(or (not x2929) (not x949) x999)
+(or (not x4612) (not x3759) x4616 x4611 x46)
+(or (not x2917) (not x970) x999)
+(or (not x4611) (not x44) x4616 x4610 x3755)
+(or (not x2917) (not x967) x999)
+(or (not x4616) (not x4611) (not x3755) (not x44) x4610)
+(or (not x2917) (not x962) x999)
+(or (not x4616) (not x4611) x4610 x3755 x44)
+(or (not x2917) (not x949) x999)
+(or (not x4611) (not x3755) x4616 x4610 x44)
+(or (not x2365) (not x970) x999)
+(or (not x4610) (not x149) x4616 x4609 x3749)
+(or (not x2365) (not x967) x999)
+(or (not x4616) (not x4610) (not x3749) (not x149) x4609)
+(or (not x2365) (not x962) x999)
+(or (not x4616) (not x4610) x4609 x3749 x149)
+(or (not x2365) (not x949) x999)
+(or (not x4610) (not x3749) x4616 x4609 x149)
+(or (not x999) x2955 x2943 x2929 x2917 x2365)
+(or (not x4616) (not x4615))
+(or (not x996) (not x970))
+(or (not x4609) x4615)
+(or (not x992) (not x970))
+(or (not x4615) x4609)
+(or (not x988) (not x970))
+(or x4614 x3832 x3771)
+(or (not x985) (not x970))
+(or (not x3832) (not x3771) x4614)
+(or (not x980) (not x970))
+(or (not x4614) (not x3771) x3832)
+(or (not x2953) (not x967) x996)
+(or (not x4614) (not x3832) x3771)
+(or (not x2953) (not x962) x996)
+(or (not x4614) x4613 x3831 x3768)
+(or (not x2953) (not x949) x996)
+(or (not x4614) (not x3831) (not x3768) x4613)
+(or (not x2941) (not x967) x996)
+(or (not x4613) (not x3768) x3831)
+(or (not x2941) (not x962) x996)
+(or (not x4613) (not x3831) x3768)
+(or (not x2941) (not x949) x996)
+(or (not x4613) x4614)
+(or (not x2927) (not x967) x996)
+(or (not x4613) x4612 x3829 x3765)
+(or (not x2927) (not x962) x996)
+(or (not x4613) (not x3829) (not x3765) x4612)
+(or (not x2927) (not x949) x996)
+(or (not x4612) (not x3765) x3829)
+(or (not x2915) (not x967) x996)
+(or (not x4612) (not x3829) x3765)
+(or (not x2915) (not x962) x996)
+(or (not x4612) x4613)
+(or (not x2915) (not x949) x996)
+(or (not x4612) x4611 x3827 x3759)
+(or (not x2206) (not x967) x996)
+(or (not x4612) (not x3827) (not x3759) x4611)
+(or (not x2206) (not x962) x996)
+(or (not x4611) (not x3759) x3827)
+(or (not x2206) (not x949) x996)
+(or (not x4611) (not x3827) x3759)
+(or (not x996) x2953 x2941 x2927 x2915 x2206)
+(or (not x4611) x4612)
+(or (not x992) (not x967))
+(or (not x4611) x4610 x3825 x3755)
+(or (not x988) (not x967))
+(or (not x4611) (not x3825) (not x3755) x4610)
+(or (not x985) (not x967))
+(or (not x4610) (not x3755) x3825)
+(or (not x980) (not x967))
+(or (not x4610) (not x3825) x3755)
+(or (not x2951) (not x962) x992)
+(or (not x4610) x4611)
+(or (not x2951) (not x949) x992)
+(or (not x4610) x4609 x3823 x3749)
+(or (not x2938) (not x962) x992)
+(or (not x4610) (not x3823) (not x3749) x4609)
+(or (not x2938) (not x949) x992)
+(or (not x4609) (not x3749) x3823)
+(or (not x2923) (not x962) x992)
+(or (not x4609) (not x3823) x3749)
+(or (not x2923) (not x949) x992)
+(or (not x4609) x4610)
+(or (not x2913) (not x962) x992)
+(or (not x4608) (not x2239) (not x2228))
+(or (not x2913) (not x949) x992)
+(or (not x2239) (not x2228) x4607)
+(or (not x2052) (not x962) x992)
+(or (not x4608) (not x2239) (not x2229) x95)
+(or (not x2052) (not x949) x992)
+(or (not x2239) (not x2229) (not x95) x4608)
+(or (not x992) x2951 x2938 x2923 x2913 x2052)
+(or (not x4607) (not x2239) (not x2229))
+(or (not x988) (not x962))
+(or (not x4608) (not x2239) (not x2230) x94)
+(or (not x985) (not x962))
+(or (not x2239) (not x2230) (not x94) x4608)
+(or (not x980) (not x962))
+(or (not x4607) (not x2239) (not x2230))
+(or (not x2949) (not x949) x988)
+(or (not x4608) (not x2239) (not x2231) x92)
+(or (not x2935) (not x949) x988)
+(or (not x2239) (not x2231) (not x92) x4608)
+(or (not x2921) (not x949) x988)
+(or (not x4607) (not x2239) (not x2231))
+(or (not x2911) (not x949) x988)
+(or (not x4608) (not x2239) (not x2232) x91)
+(or (not x1750) (not x949) x988)
+(or (not x2239) (not x2232) (not x91) x4608)
+(or (not x988) x2949 x2935 x2921 x2911 x1750)
+(or (not x4607) (not x2239) (not x2232))
+(or (not x985) (not x949))
+(or (not x4608) (not x2240) (not x2228) x89)
+(or (not x980) (not x949))
+(or (not x2240) (not x2228) (not x89) x4608)
+(or (not x985) x2947 x2933 x2919 x2909 x1449)
+(or (not x4607) (not x2240) (not x2228))
+(or (not x530) (not x483))
+(or (not x4608) (not x2240) (not x2229))
+(or (not x527) (not x483))
+(or (not x2240) (not x2229) x4607)
+(or (not x523) (not x483))
+(or (not x4608) (not x2240) (not x2230) x88)
+(or (not x519) (not x483))
+(or (not x2240) (not x2230) (not x88) x4608)
+(or (not x514) (not x483))
+(or (not x4607) (not x2240) (not x2230))
+(or (not x511) (not x483))
+(or (not x4608) (not x2240) (not x2231) x87)
+(or (not x481) x530)
+(or (not x2240) (not x2231) (not x87) x4608)
+(or (not x478) x530)
+(or (not x4607) (not x2240) (not x2231))
+(or (not x476) x530)
+(or (not x4608) (not x2240) (not x2232) x86)
+(or (not x473) x530)
+(or (not x2240) (not x2232) (not x86) x4608)
+(or (not x527) (not x481))
+(or (not x4607) (not x2240) (not x2232))
+(or (not x523) (not x481))
+(or (not x4608) (not x2241) (not x2228) x82)
+(or (not x519) (not x481))
+(or (not x2241) (not x2228) (not x82) x4608)
+(or (not x514) (not x481))
+(or (not x4607) (not x2241) (not x2228))
+(or (not x511) (not x481))
+(or (not x4608) (not x2241) (not x2229) x81)
+(or (not x2871) (not x478) x527)
+(or (not x2241) (not x2229) (not x81) x4608)
+(or (not x2871) (not x476) x527)
+(or (not x4607) (not x2241) (not x2229))
+(or (not x2871) (not x473) x527)
+(or (not x4608) (not x2241) (not x2230))
+(or (not x2859) (not x478) x527)
+(or (not x2241) (not x2230) x4607)
+(or (not x2859) (not x476) x527)
+(or (not x4608) (not x2241) (not x2231) x79)
+(or (not x2859) (not x473) x527)
+(or (not x2241) (not x2231) (not x79) x4608)
+(or (not x2846) (not x478) x527)
+(or (not x4607) (not x2241) (not x2231))
+(or (not x2846) (not x476) x527)
+(or (not x4608) (not x2241) (not x2232) x77)
+(or (not x2846) (not x473) x527)
+(or (not x2241) (not x2232) (not x77) x4608)
+(or (not x2831) (not x478) x527)
+(or (not x4607) (not x2241) (not x2232))
+(or (not x2831) (not x476) x527)
+(or (not x4608) (not x2242) (not x2228) x73)
+(or (not x2831) (not x473) x527)
+(or (not x2242) (not x2228) (not x73) x4608)
+(or (not x946) (not x478) x527)
+(or (not x4607) (not x2242) (not x2228))
+(or (not x946) (not x476) x527)
+(or (not x4608) (not x2242) (not x2229) x67)
+(or (not x946) (not x473) x527)
+(or (not x2242) (not x2229) (not x67) x4608)
+(or (not x2813) (not x478) x527)
+(or (not x4607) (not x2242) (not x2229))
+(or (not x2813) (not x476) x527)
+(or (not x4608) (not x2242) (not x2230) x66)
+(or (not x2813) (not x473) x527)
+(or (not x2242) (not x2230) (not x66) x4608)
+(or (not x527) x2871 x2859 x2846 x2831 x946 x2813)
+(or (not x4607) (not x2242) (not x2230))
+(or (not x523) (not x478))
+(or (not x4608) (not x2242) (not x2231))
+(or (not x519) (not x478))
+(or (not x2242) (not x2231) x4607)
+(or (not x514) (not x478))
+(or (not x4608) (not x2242) (not x2232) x65)
+(or (not x511) (not x478))
+(or (not x2242) (not x2232) (not x65) x4608)
+(or (not x2869) (not x476) x523)
+(or (not x4607) (not x2242) (not x2232))
+(or (not x2869) (not x473) x523)
+(or (not x4608) (not x2243) (not x2228) x58)
+(or (not x2857) (not x476) x523)
+(or (not x2243) (not x2228) (not x58) x4608)
+(or (not x2857) (not x473) x523)
+(or (not x4607) (not x2243) (not x2228))
+(or (not x2844) (not x476) x523)
+(or (not x4608) (not x2243) (not x2229) x57)
+(or (not x2844) (not x473) x523)
+(or (not x2243) (not x2229) (not x57) x4608)
+(or (not x2827) (not x476) x523)
+(or (not x4607) (not x2243) (not x2229))
+(or (not x2827) (not x473) x523)
+(or (not x4608) (not x2243) (not x2230) x56)
+(or (not x944) (not x476) x523)
+(or (not x2243) (not x2230) (not x56) x4608)
+(or (not x944) (not x473) x523)
+(or (not x4607) (not x2243) (not x2230))
+(or (not x2812) (not x476) x523)
+(or (not x4608) (not x2243) (not x2231) x55)
+(or (not x2812) (not x473) x523)
+(or (not x2243) (not x2231) (not x55) x4608)
+(or (not x523) x2869 x2857 x2844 x2827 x944 x2812)
+(or (not x4607) (not x2243) (not x2231))
+(or (not x519) (not x476))
+(or (not x4608) (not x2243) (not x2232))
+(or (not x514) (not x476))
+(or (not x2243) (not x2232) x4607)
+(or (not x511) (not x476))
+(or (not x4041) (not x69) (not x9) x4606)
+(or (not x2867) (not x473) x519)
+(or (not x4606) (not x4602) (not x4594) x4605 x4604)
+(or (not x2855) (not x473) x519)
+(or (not x4606) (not x4594) x4603 x4602)
+(or (not x2841) (not x473) x519)
+(or (not x4606) x4595 x4594)
+(or (not x2825) (not x473) x519)
+(or (not x4604) (not x4602) (not x4594) x4606)
+(or (not x942) (not x473) x519)
+(or (not x4605) (not x4602) (not x4594) x4606)
+(or (not x2810) (not x473) x519)
+(or (not x4603) (not x4594) x4606)
+(or (not x519) x2867 x2855 x2841 x2825 x942 x2810)
+(or (not x4595) x4606)
+(or (not x514) (not x473))
+(or (not x4605) (not x4604))
+(or (not x511) (not x473))
+(or (not x3850) x4605 x3713 x2293)
+(or (not x514) x2865 x2853 x2838 x2823 x941 x2808)
+(or (not x4605) (not x3850) (not x2293) x3713)
+(or (not x511) x2862 x2851 x2836 x2821 x939 x2806)
+(or (not x4605) (not x3713) x3850 x2293)
+(or (not x143) (not x107))
+(or (not x3713) (not x2293) x4605 x3850)
+(or (not x139) (not x107))
+(or (not x3848) x4605 x3712 x2293)
+(or (not x133) (not x107))
+(or (not x4605) (not x3848) (not x2293) x3712)
+(or (not x127) (not x107))
+(or (not x4605) (not x3712) x3848 x2293)
+(or (not x123) (not x107))
+(or (not x3712) (not x2293) x4605 x3848)
+(or (not x118) (not x107))
+(or (not x3847) x4605 x3711 x2293)
+(or (not x2777) (not x101) x143)
+(or (not x4605) (not x3847) (not x2293) x3711)
+(or (not x2777) (not x93) x143)
+(or (not x4605) (not x3711) x3847 x2293)
+(or (not x2777) (not x85) x143)
+(or (not x3711) (not x2293) x4605 x3847)
+(or (not x2777) (not x70) x143)
+(or (not x3845) x4605 x3710 x2293)
+(or (not x2763) (not x101) x143)
+(or (not x4605) (not x3845) (not x2293) x3710)
+(or (not x2763) (not x93) x143)
+(or (not x4605) (not x3710) x3845 x2293)
+(or (not x2763) (not x85) x143)
+(or (not x3710) (not x2293) x4605 x3845)
+(or (not x2763) (not x70) x143)
+(or (not x3843) x4605 x3709 x2293)
+(or (not x2748) (not x101) x143)
+(or (not x4605) (not x3843) (not x2293) x3709)
+(or (not x2748) (not x93) x143)
+(or (not x4605) (not x3709) x3843 x2293)
+(or (not x2748) (not x85) x143)
+(or (not x3709) (not x2293) x4605 x3843)
+(or (not x2748) (not x70) x143)
+(or (not x3848) (not x3712) x4604 x3850 x3713)
+(or (not x2734) (not x101) x143)
+(or (not x3847) (not x3711) x4604 x3848 x3712)
+(or (not x2734) (not x93) x143)
+(or (not x3845) (not x3710) x4604 x3847 x3711)
+(or (not x2734) (not x85) x143)
+(or (not x3843) (not x3709) x4604 x3845 x3710)
+(or (not x2734) (not x70) x143)
+(or x4604 x3843 x3709)
+(or (not x937) (not x101) x143)
+(or (not x3850) (not x3713) x4604)
+(or (not x937) (not x93) x143)
+(or (not x4604) (not x3713) x3850)
+(or (not x937) (not x85) x143)
+(or (not x4604) (not x3850) x3713)
+(or (not x937) (not x70) x143)
+(or (not x4604) (not x3712) x3848)
+(or (not x143) x2777 x2763 x2748 x2734 x937)
+(or (not x4604) (not x3848) x3712)
+(or (not x139) (not x101))
+(or (not x4604) (not x3711) x3847)
+(or (not x133) (not x101))
+(or (not x4604) (not x3847) x3711)
+(or (not x127) (not x101))
+(or (not x4604) (not x3710) x3845)
+(or (not x123) (not x101))
+(or (not x4604) (not x3845) x3710)
+(or (not x118) (not x101))
+(or (not x4604) (not x3709) x3843)
+(or (not x93) x139)
+(or (not x4604) (not x3843) x3709)
+(or (not x85) x139)
+(or (not x52) x4603 x4601 x3705)
+(or (not x70) x139)
+(or (not x4603) (not x3705) (not x52) x4601)
+(or (not x133) (not x93))
+(or (not x4603) x4601 x3705 x52)
+(or (not x127) (not x93))
+(or (not x3705) x4603 x4601 x52)
+(or (not x123) (not x93))
+(or (not x4601) (not x50) x4603 x4600 x3704)
+(or (not x118) (not x93))
+(or (not x4603) (not x4601) (not x3704) (not x50) x4600)
+(or (not x2772) (not x85) x133)
+(or (not x4603) (not x4601) x4600 x3704 x50)
+(or (not x2772) (not x70) x133)
+(or (not x4601) (not x3704) x4603 x4600 x50)
+(or (not x2760) (not x85) x133)
+(or (not x4600) (not x48) x4603 x4599 x3702)
+(or (not x2760) (not x70) x133)
+(or (not x4603) (not x4600) (not x3702) (not x48) x4599)
+(or (not x2742) (not x85) x133)
+(or (not x4603) (not x4600) x4599 x3702 x48)
+(or (not x2742) (not x70) x133)
+(or (not x4600) (not x3702) x4603 x4599 x48)
+(or (not x2730) (not x85) x133)
+(or (not x4599) (not x46) x4603 x4598 x3700)
+(or (not x2730) (not x70) x133)
+(or (not x4603) (not x4599) (not x3700) (not x46) x4598)
+(or (not x936) (not x85) x133)
+(or (not x4603) (not x4599) x4598 x3700 x46)
+(or (not x936) (not x70) x133)
+(or (not x4599) (not x3700) x4603 x4598 x46)
+(or (not x2703) (not x85) x133)
+(or (not x4598) (not x44) x4603 x4597 x3698)
+(or (not x2703) (not x70) x133)
+(or (not x4603) (not x4598) (not x3698) (not x44) x4597)
+(or (not x133) x2772 x2760 x2742 x2730 x936 x2703)
+(or (not x4603) (not x4598) x4597 x3698 x44)
+(or (not x127) (not x85))
+(or (not x4598) (not x3698) x4603 x4597 x44)
+(or (not x123) (not x85))
+(or (not x4597) (not x149) x4603 x4596 x3696)
+(or (not x118) (not x85))
+(or (not x4603) (not x4597) (not x3696) (not x149) x4596)
+(or (not x2769) (not x70) x127)
+(or (not x4603) (not x4597) x4596 x3696 x149)
+(or (not x2757) (not x70) x127)
+(or (not x4597) (not x3696) x4603 x4596 x149)
+(or (not x2740) (not x70) x127)
+(or (not x4603) (not x4602))
+(or (not x2727) (not x70) x127)
+(or (not x4596) x4602)
+(or (not x933) (not x70) x127)
+(or (not x4602) x4596)
+(or (not x2702) (not x70) x127)
+(or x4601 x3832 x3705)
+(or (not x127) x2769 x2757 x2740 x2727 x933 x2702)
+(or (not x3832) (not x3705) x4601)
+(or (not x123) (not x70))
+(or (not x4601) (not x3705) x3832)
+(or (not x118) (not x70))
+(or (not x4601) (not x3832) x3705)
+(or (not x123) x2767 x2755 x2738 x2724 x931 x2700)
+(or (not x4601) x4600 x3831 x3704)
+(or (not x118) x2765 x2752 x2736 x2720 x929 x2698)
+(or (not x4601) (not x3831) (not x3704) x4600)
+(or (not x439) (not x393))
+(or (not x4600) (not x3704) x3831)
+(or (not x434) (not x393))
+(or (not x4600) (not x3831) x3704)
+(or (not x432) (not x393))
+(or (not x4600) x4601)
+(or (not x429) (not x393))
+(or (not x4600) x4599 x3829 x3702)
+(or (not x424) (not x393))
+(or (not x4600) (not x3829) (not x3702) x4599)
+(or (not x420) (not x393))
+(or (not x4599) (not x3702) x3829)
+(or (not x2648) (not x392) x439)
+(or (not x4599) (not x3829) x3702)
+(or (not x2648) (not x390) x439)
+(or (not x4599) x4600)
+(or (not x2648) (not x387) x439)
+(or (not x4599) x4598 x3827 x3700)
+(or (not x2648) (not x384) x439)
+(or (not x4599) (not x3827) (not x3700) x4598)
+(or (not x2637) (not x392) x439)
+(or (not x4598) (not x3700) x3827)
+(or (not x2637) (not x390) x439)
+(or (not x4598) (not x3827) x3700)
+(or (not x2637) (not x387) x439)
+(or (not x4598) x4599)
+(or (not x2637) (not x384) x439)
+(or (not x4598) x4597 x3825 x3698)
+(or (not x2626) (not x392) x439)
+(or (not x4598) (not x3825) (not x3698) x4597)
+(or (not x2626) (not x390) x439)
+(or (not x4597) (not x3698) x3825)
+(or (not x2626) (not x387) x439)
+(or (not x4597) (not x3825) x3698)
+(or (not x2626) (not x384) x439)
+(or (not x4597) x4598)
+(or (not x2613) (not x392) x439)
+(or (not x4597) x4596 x3823 x3696)
+(or (not x2613) (not x390) x439)
+(or (not x4597) (not x3823) (not x3696) x4596)
+(or (not x2613) (not x387) x439)
+(or (not x4596) (not x3696) x3823)
+(or (not x2613) (not x384) x439)
+(or (not x4596) (not x3823) x3696)
+(or (not x928) (not x392) x439)
+(or (not x4596) x4597)
+(or (not x928) (not x390) x439)
+(or (not x4595) (not x2239) (not x2223))
+(or (not x928) (not x387) x439)
+(or (not x2239) (not x2223) x4594)
+(or (not x928) (not x384) x439)
+(or (not x4595) (not x2239) (not x2224) x95)
+(or (not x439) x2648 x2637 x2626 x2613 x928)
+(or (not x2239) (not x2224) (not x95) x4595)
+(or (not x434) (not x392))
+(or (not x4594) (not x2239) (not x2224))
+(or (not x432) (not x392))
+(or (not x4595) (not x2239) (not x2225) x94)
+(or (not x429) (not x392))
+(or (not x2239) (not x2225) (not x94) x4595)
+(or (not x424) (not x392))
+(or (not x4594) (not x2239) (not x2225))
+(or (not x420) (not x392))
+(or (not x4595) (not x2239) (not x2226) x92)
+(or (not x2646) (not x390) x434)
+(or (not x2239) (not x2226) (not x92) x4595)
+(or (not x2646) (not x387) x434)
+(or (not x4594) (not x2239) (not x2226))
+(or (not x2646) (not x384) x434)
+(or (not x4595) (not x2239) (not x2227) x91)
+(or (not x2635) (not x390) x434)
+(or (not x2239) (not x2227) (not x91) x4595)
+(or (not x2635) (not x387) x434)
+(or (not x4594) (not x2239) (not x2227))
+(or (not x2635) (not x384) x434)
+(or (not x4595) (not x2240) (not x2223) x89)
+(or (not x2624) (not x390) x434)
+(or (not x2240) (not x2223) (not x89) x4595)
+(or (not x2624) (not x387) x434)
+(or (not x4594) (not x2240) (not x2223))
+(or (not x2624) (not x384) x434)
+(or (not x4595) (not x2240) (not x2224))
+(or (not x2610) (not x390) x434)
+(or (not x2240) (not x2224) x4594)
+(or (not x2610) (not x387) x434)
+(or (not x4595) (not x2240) (not x2225) x88)
+(or (not x2610) (not x384) x434)
+(or (not x2240) (not x2225) (not x88) x4595)
+(or (not x926) (not x390) x434)
+(or (not x4594) (not x2240) (not x2225))
+(or (not x926) (not x387) x434)
+(or (not x4595) (not x2240) (not x2226) x87)
+(or (not x926) (not x384) x434)
+(or (not x2240) (not x2226) (not x87) x4595)
+(or (not x434) x2646 x2635 x2624 x2610 x926)
+(or (not x4594) (not x2240) (not x2226))
+(or (not x432) (not x390))
+(or (not x4595) (not x2240) (not x2227) x86)
+(or (not x429) (not x390))
+(or (not x2240) (not x2227) (not x86) x4595)
+(or (not x424) (not x390))
+(or (not x4594) (not x2240) (not x2227))
+(or (not x420) (not x390))
+(or (not x4595) (not x2241) (not x2223) x82)
+(or (not x387) x432)
+(or (not x2241) (not x2223) (not x82) x4595)
+(or (not x384) x432)
+(or (not x4594) (not x2241) (not x2223))
+(or (not x429) (not x387))
+(or (not x4595) (not x2241) (not x2224) x81)
+(or (not x424) (not x387))
+(or (not x2241) (not x2224) (not x81) x4595)
+(or (not x420) (not x387))
+(or (not x4594) (not x2241) (not x2224))
+(or (not x2643) (not x384) x429)
+(or (not x4595) (not x2241) (not x2225))
+(or (not x2632) (not x384) x429)
+(or (not x2241) (not x2225) x4594)
+(or (not x2621) (not x384) x429)
+(or (not x4595) (not x2241) (not x2226) x79)
+(or (not x2607) (not x384) x429)
+(or (not x2241) (not x2226) (not x79) x4595)
+(or (not x924) (not x384) x429)
+(or (not x4594) (not x2241) (not x2226))
+(or (not x2588) (not x384) x429)
+(or (not x4595) (not x2241) (not x2227) x77)
+(or (not x429) x2643 x2632 x2621 x2607 x924 x2588)
+(or (not x2241) (not x2227) (not x77) x4595)
+(or (not x424) (not x384))
+(or (not x4594) (not x2241) (not x2227))
+(or (not x420) (not x384))
+(or (not x4595) (not x2242) (not x2223) x73)
+(or (not x424) x2641 x2630 x2617 x2605 x921 x2587)
+(or (not x2242) (not x2223) (not x73) x4595)
+(or (not x420) x2639 x2628 x2615 x2603 x919 x2585)
+(or (not x4594) (not x2242) (not x2223))
+(or (not x343) (not x299))
+(or (not x4595) (not x2242) (not x2224) x67)
+(or (not x341) (not x299))
+(or (not x2242) (not x2224) (not x67) x4595)
+(or (not x337) (not x299))
+(or (not x4594) (not x2242) (not x2224))
+(or (not x331) (not x299))
+(or (not x4595) (not x2242) (not x2225) x66)
+(or (not x329) (not x299))
+(or (not x2242) (not x2225) (not x66) x4595)
+(or (not x326) (not x299))
+(or (not x4594) (not x2242) (not x2225))
+(or (not x2525) (not x296) x343)
+(or (not x4595) (not x2242) (not x2226))
+(or (not x2525) (not x293) x343)
+(or (not x2242) (not x2226) x4594)
+(or (not x2525) (not x291) x343)
+(or (not x4595) (not x2242) (not x2227) x65)
+(or (not x2525) (not x288) x343)
+(or (not x2242) (not x2227) (not x65) x4595)
+(or (not x2509) (not x296) x343)
+(or (not x4594) (not x2242) (not x2227))
+(or (not x2509) (not x293) x343)
+(or (not x4595) (not x2243) (not x2223) x58)
+(or (not x2509) (not x291) x343)
+(or (not x2243) (not x2223) (not x58) x4595)
+(or (not x2509) (not x288) x343)
+(or (not x4594) (not x2243) (not x2223))
+(or (not x2492) (not x296) x343)
+(or (not x4595) (not x2243) (not x2224) x57)
+(or (not x2492) (not x293) x343)
+(or (not x2243) (not x2224) (not x57) x4595)
+(or (not x2492) (not x291) x343)
+(or (not x4594) (not x2243) (not x2224))
+(or (not x2492) (not x288) x343)
+(or (not x4595) (not x2243) (not x2225) x56)
+(or (not x2476) (not x296) x343)
+(or (not x2243) (not x2225) (not x56) x4595)
+(or (not x2476) (not x293) x343)
+(or (not x4594) (not x2243) (not x2225))
+(or (not x2476) (not x291) x343)
+(or (not x4595) (not x2243) (not x2226) x55)
+(or (not x2476) (not x288) x343)
+(or (not x2243) (not x2226) (not x55) x4595)
+(or (not x917) (not x296) x343)
+(or (not x4594) (not x2243) (not x2226))
+(or (not x917) (not x293) x343)
+(or (not x4595) (not x2243) (not x2227))
+(or (not x917) (not x291) x343)
+(or (not x2243) (not x2227) x4594)
+(or (not x917) (not x288) x343)
+(or (not x4041) (not x69) (not x10) x4593)
+(or (not x343) x2525 x2509 x2492 x2476 x917)
+(or (not x4593) (not x4589) (not x4581) x4592 x4591)
+(or (not x341) (not x296))
+(or (not x4593) (not x4581) x4590 x4589)
+(or (not x337) (not x296))
+(or (not x4593) x4582 x4581)
+(or (not x331) (not x296))
+(or (not x4591) (not x4589) (not x4581) x4593)
+(or (not x329) (not x296))
+(or (not x4592) (not x4589) (not x4581) x4593)
+(or (not x326) (not x296))
+(or (not x4590) (not x4581) x4593)
+(or (not x2522) (not x293) x341)
+(or (not x4582) x4593)
+(or (not x2522) (not x291) x341)
+(or (not x4592) (not x4591))
+(or (not x2522) (not x288) x341)
+(or (not x3850) x4592 x3689 x2293)
+(or (not x2506) (not x293) x341)
+(or (not x4592) (not x3850) (not x2293) x3689)
+(or (not x2506) (not x291) x341)
+(or (not x4592) (not x3689) x3850 x2293)
+(or (not x2506) (not x288) x341)
+(or (not x3689) (not x2293) x4592 x3850)
+(or (not x2489) (not x293) x341)
+(or (not x3848) x4592 x3687 x2293)
+(or (not x2489) (not x291) x341)
+(or (not x4592) (not x3848) (not x2293) x3687)
+(or (not x2489) (not x288) x341)
+(or (not x4592) (not x3687) x3848 x2293)
+(or (not x2473) (not x293) x341)
+(or (not x3687) (not x2293) x4592 x3848)
+(or (not x2473) (not x291) x341)
+(or (not x3847) x4592 x3685 x2293)
+(or (not x2473) (not x288) x341)
+(or (not x4592) (not x3847) (not x2293) x3685)
+(or (not x915) (not x293) x341)
+(or (not x4592) (not x3685) x3847 x2293)
+(or (not x915) (not x291) x341)
+(or (not x3685) (not x2293) x4592 x3847)
+(or (not x915) (not x288) x341)
+(or (not x3845) x4592 x3683 x2293)
+(or (not x341) x2522 x2506 x2489 x2473 x915)
+(or (not x4592) (not x3845) (not x2293) x3683)
+(or (not x337) (not x293))
+(or (not x4592) (not x3683) x3845 x2293)
+(or (not x331) (not x293))
+(or (not x3683) (not x2293) x4592 x3845)
+(or (not x329) (not x293))
+(or (not x3843) x4592 x3681 x2293)
+(or (not x326) (not x293))
+(or (not x4592) (not x3843) (not x2293) x3681)
+(or (not x2519) (not x291) x337)
+(or (not x4592) (not x3681) x3843 x2293)
+(or (not x2519) (not x288) x337)
+(or (not x3681) (not x2293) x4592 x3843)
+(or (not x2503) (not x291) x337)
+(or (not x3848) (not x3687) x4591 x3850 x3689)
+(or (not x2503) (not x288) x337)
+(or (not x3847) (not x3685) x4591 x3848 x3687)
+(or (not x2486) (not x291) x337)
+(or (not x3845) (not x3683) x4591 x3847 x3685)
+(or (not x2486) (not x288) x337)
+(or (not x3843) (not x3681) x4591 x3845 x3683)
+(or (not x2470) (not x291) x337)
+(or x4591 x3843 x3681)
+(or (not x2470) (not x288) x337)
+(or (not x3850) (not x3689) x4591)
+(or (not x912) (not x291) x337)
+(or (not x4591) (not x3689) x3850)
+(or (not x912) (not x288) x337)
+(or (not x4591) (not x3850) x3689)
+(or (not x337) x2519 x2503 x2486 x2470 x912)
+(or (not x4591) (not x3687) x3848)
+(or (not x331) (not x291))
+(or (not x4591) (not x3848) x3687)
+(or (not x329) (not x291))
+(or (not x4591) (not x3685) x3847)
+(or (not x326) (not x291))
+(or (not x4591) (not x3847) x3685)
+(or (not x288) x331)
+(or (not x4591) (not x3683) x3845)
+(or (not x329) (not x288))
+(or (not x4591) (not x3845) x3683)
+(or (not x326) (not x288))
+(or (not x4591) (not x3681) x3843)
+(or (not x329) x2514 x2498 x2481 x2466 x907 x2455)
+(or (not x4591) (not x3843) x3681)
+(or (not x326) x2512 x2495 x2479 x2464 x905 x2454)
+(or (not x52) x4590 x4588 x3676)
+(or (not x246) (not x204))
+(or (not x4590) (not x3676) (not x52) x4588)
+(or (not x245) (not x204))
+(or (not x4590) x4588 x3676 x52)
+(or (not x242) (not x204))
+(or (not x3676) x4590 x4588 x52)
+(or (not x238) (not x204))
+(or (not x4588) (not x50) x4590 x4587 x3674)
+(or (not x233) (not x204))
+(or (not x4590) (not x4588) (not x3674) (not x50) x4587)
+(or (not x229) (not x204))
+(or (not x4590) (not x4588) x4587 x3674 x50)
+(or (not x2430) (not x203) x246)
+(or (not x4588) (not x3674) x4590 x4587 x50)
+(or (not x2430) (not x200) x246)
+(or (not x4587) (not x48) x4590 x4586 x3671)
+(or (not x2430) (not x197) x246)
+(or (not x4590) (not x4587) (not x3671) (not x48) x4586)
+(or (not x2430) (not x194) x246)
+(or (not x4590) (not x4587) x4586 x3671 x48)
+(or (not x2417) (not x203) x246)
+(or (not x4587) (not x3671) x4590 x4586 x48)
+(or (not x2417) (not x200) x246)
+(or (not x4586) (not x46) x4590 x4585 x3668)
+(or (not x2417) (not x197) x246)
+(or (not x4590) (not x4586) (not x3668) (not x46) x4585)
+(or (not x2417) (not x194) x246)
+(or (not x4590) (not x4586) x4585 x3668 x46)
+(or (not x2405) (not x203) x246)
+(or (not x4586) (not x3668) x4590 x4585 x46)
+(or (not x2405) (not x200) x246)
+(or (not x4585) (not x44) x4590 x4584 x3665)
+(or (not x2405) (not x197) x246)
+(or (not x4590) (not x4585) (not x3665) (not x44) x4584)
+(or (not x2405) (not x194) x246)
+(or (not x4590) (not x4585) x4584 x3665 x44)
+(or (not x2393) (not x203) x246)
+(or (not x4585) (not x3665) x4590 x4584 x44)
+(or (not x2393) (not x200) x246)
+(or (not x4584) (not x149) x4590 x4583 x3662)
+(or (not x2393) (not x197) x246)
+(or (not x4590) (not x4584) (not x3662) (not x149) x4583)
+(or (not x2393) (not x194) x246)
+(or (not x4590) (not x4584) x4583 x3662 x149)
+(or (not x902) (not x203) x246)
+(or (not x4584) (not x3662) x4590 x4583 x149)
+(or (not x902) (not x200) x246)
+(or (not x4590) (not x4589))
+(or (not x902) (not x197) x246)
+(or (not x4583) x4589)
+(or (not x902) (not x194) x246)
+(or (not x4589) x4583)
+(or (not x246) x2430 x2417 x2405 x2393 x902)
+(or x4588 x3832 x3676)
+(or (not x245) (not x203))
+(or (not x3832) (not x3676) x4588)
+(or (not x242) (not x203))
+(or (not x4588) (not x3676) x3832)
+(or (not x238) (not x203))
+(or (not x4588) (not x3832) x3676)
+(or (not x233) (not x203))
+(or (not x4588) x4587 x3831 x3674)
+(or (not x229) (not x203))
+(or (not x4588) (not x3831) (not x3674) x4587)
+(or (not x2428) (not x200) x245)
+(or (not x4587) (not x3674) x3831)
+(or (not x2428) (not x197) x245)
+(or (not x4587) (not x3831) x3674)
+(or (not x2428) (not x194) x245)
+(or (not x4587) x4588)
+(or (not x2415) (not x200) x245)
+(or (not x4587) x4586 x3829 x3671)
+(or (not x2415) (not x197) x245)
+(or (not x4587) (not x3829) (not x3671) x4586)
+(or (not x2415) (not x194) x245)
+(or (not x4586) (not x3671) x3829)
+(or (not x2403) (not x200) x245)
+(or (not x4586) (not x3829) x3671)
+(or (not x2403) (not x197) x245)
+(or (not x4586) x4587)
+(or (not x2403) (not x194) x245)
+(or (not x4586) x4585 x3827 x3668)
+(or (not x2390) (not x200) x245)
+(or (not x4586) (not x3827) (not x3668) x4585)
+(or (not x2390) (not x197) x245)
+(or (not x4585) (not x3668) x3827)
+(or (not x2390) (not x194) x245)
+(or (not x4585) (not x3827) x3668)
+(or (not x900) (not x200) x245)
+(or (not x4585) x4586)
+(or (not x900) (not x197) x245)
+(or (not x4585) x4584 x3825 x3665)
+(or (not x900) (not x194) x245)
+(or (not x4585) (not x3825) (not x3665) x4584)
+(or (not x245) x2428 x2415 x2403 x2390 x900)
+(or (not x4584) (not x3665) x3825)
+(or (not x242) (not x200))
+(or (not x4584) (not x3825) x3665)
+(or (not x238) (not x200))
+(or (not x4584) x4585)
+(or (not x233) (not x200))
+(or (not x4584) x4583 x3823 x3662)
+(or (not x229) (not x200))
+(or (not x4584) (not x3823) (not x3662) x4583)
+(or (not x2426) (not x197) x242)
+(or (not x4583) (not x3662) x3823)
+(or (not x2426) (not x194) x242)
+(or (not x4583) (not x3823) x3662)
+(or (not x2412) (not x197) x242)
+(or (not x4583) x4584)
+(or (not x2412) (not x194) x242)
+(or (not x4582) (not x2239) (not x2217))
+(or (not x2400) (not x197) x242)
+(or (not x2239) (not x2217) x4581)
+(or (not x2400) (not x194) x242)
+(or (not x4582) (not x2239) (not x2218) x95)
+(or (not x2388) (not x197) x242)
+(or (not x2239) (not x2218) (not x95) x4582)
+(or (not x2388) (not x194) x242)
+(or (not x4581) (not x2239) (not x2218))
+(or (not x895) (not x197) x242)
+(or (not x4582) (not x2239) (not x2219) x94)
+(or (not x895) (not x194) x242)
+(or (not x2239) (not x2219) (not x94) x4582)
+(or (not x242) x2426 x2412 x2400 x2388 x895)
+(or (not x4581) (not x2239) (not x2219))
+(or (not x238) (not x197))
+(or (not x4582) (not x2239) (not x2220) x92)
+(or (not x233) (not x197))
+(or (not x2239) (not x2220) (not x92) x4582)
+(or (not x229) (not x197))
+(or (not x4581) (not x2239) (not x2220))
+(or (not x2424) (not x194) x238)
+(or (not x4582) (not x2239) (not x2221) x91)
+(or (not x2410) (not x194) x238)
+(or (not x2239) (not x2221) (not x91) x4582)
+(or (not x2398) (not x194) x238)
+(or (not x4581) (not x2239) (not x2221))
+(or (not x2386) (not x194) x238)
+(or (not x4582) (not x2240) (not x2217) x89)
+(or (not x889) (not x194) x238)
+(or (not x2240) (not x2217) (not x89) x4582)
+(or (not x238) x2424 x2410 x2398 x2386 x889)
+(or (not x4581) (not x2240) (not x2217))
+(or (not x233) (not x194))
+(or (not x4582) (not x2240) (not x2218))
+(or (not x229) (not x194))
+(or (not x2240) (not x2218) x4581)
+(or (not x229) x2421 x2407 x2395 x2383 x883)
+(or (not x4582) (not x2240) (not x2219) x88)
+(or (not x144) (not x83))
+(or (not x2240) (not x2219) (not x88) x4582)
+(or (not x140) (not x83))
+(or (not x4581) (not x2240) (not x2219))
+(or (not x134) (not x83))
+(or (not x4582) (not x2240) (not x2220) x87)
+(or (not x128) (not x83))
+(or (not x2240) (not x2220) (not x87) x4582)
+(or (not x124) (not x83))
+(or (not x4581) (not x2240) (not x2220))
+(or (not x119) (not x83))
+(or (not x4582) (not x2240) (not x2221) x86)
+(or (not x2349) (not x80) x144)
+(or (not x2240) (not x2221) (not x86) x4582)
+(or (not x2349) (not x78) x144)
+(or (not x4581) (not x2240) (not x2221))
+(or (not x2349) (not x75) x144)
+(or (not x4582) (not x2241) (not x2217) x82)
+(or (not x2349) (not x71) x144)
+(or (not x2241) (not x2217) (not x82) x4582)
+(or (not x2338) (not x80) x144)
+(or (not x4581) (not x2241) (not x2217))
+(or (not x2338) (not x78) x144)
+(or (not x4582) (not x2241) (not x2218) x81)
+(or (not x2338) (not x75) x144)
+(or (not x2241) (not x2218) (not x81) x4582)
+(or (not x2338) (not x71) x144)
+(or (not x4581) (not x2241) (not x2218))
+(or (not x2326) (not x80) x144)
+(or (not x4582) (not x2241) (not x2219))
+(or (not x2326) (not x78) x144)
+(or (not x2241) (not x2219) x4581)
+(or (not x2326) (not x75) x144)
+(or (not x4582) (not x2241) (not x2220) x79)
+(or (not x2326) (not x71) x144)
+(or (not x2241) (not x2220) (not x79) x4582)
+(or (not x2312) (not x80) x144)
+(or (not x4581) (not x2241) (not x2220))
+(or (not x2312) (not x78) x144)
+(or (not x4582) (not x2241) (not x2221) x77)
+(or (not x2312) (not x75) x144)
+(or (not x2241) (not x2221) (not x77) x4582)
+(or (not x2312) (not x71) x144)
+(or (not x4581) (not x2241) (not x2221))
+(or (not x682) (not x80) x144)
+(or (not x4582) (not x2242) (not x2217) x73)
+(or (not x682) (not x78) x144)
+(or (not x2242) (not x2217) (not x73) x4582)
+(or (not x682) (not x75) x144)
+(or (not x4581) (not x2242) (not x2217))
+(or (not x682) (not x71) x144)
+(or (not x4582) (not x2242) (not x2218) x67)
+(or (not x144) x2349 x2338 x2326 x2312 x682)
+(or (not x2242) (not x2218) (not x67) x4582)
+(or (not x140) (not x80))
+(or (not x4581) (not x2242) (not x2218))
+(or (not x134) (not x80))
+(or (not x4582) (not x2242) (not x2219) x66)
+(or (not x128) (not x80))
+(or (not x2242) (not x2219) (not x66) x4582)
+(or (not x124) (not x80))
+(or (not x4581) (not x2242) (not x2219))
+(or (not x119) (not x80))
+(or (not x4582) (not x2242) (not x2220))
+(or (not x2347) (not x78) x140)
+(or (not x2242) (not x2220) x4581)
+(or (not x2347) (not x75) x140)
+(or (not x4582) (not x2242) (not x2221) x65)
+(or (not x2347) (not x71) x140)
+(or (not x2242) (not x2221) (not x65) x4582)
+(or (not x2336) (not x78) x140)
+(or (not x4581) (not x2242) (not x2221))
+(or (not x2336) (not x75) x140)
+(or (not x4582) (not x2243) (not x2217) x58)
+(or (not x2336) (not x71) x140)
+(or (not x2243) (not x2217) (not x58) x4582)
+(or (not x2323) (not x78) x140)
+(or (not x4581) (not x2243) (not x2217))
+(or (not x2323) (not x75) x140)
+(or (not x4582) (not x2243) (not x2218) x57)
+(or (not x2323) (not x71) x140)
+(or (not x2243) (not x2218) (not x57) x4582)
+(or (not x2308) (not x78) x140)
+(or (not x4581) (not x2243) (not x2218))
+(or (not x2308) (not x75) x140)
+(or (not x4582) (not x2243) (not x2219) x56)
+(or (not x2308) (not x71) x140)
+(or (not x2243) (not x2219) (not x56) x4582)
+(or (not x287) (not x78) x140)
+(or (not x4581) (not x2243) (not x2219))
+(or (not x287) (not x75) x140)
+(or (not x4582) (not x2243) (not x2220) x55)
+(or (not x287) (not x71) x140)
+(or (not x2243) (not x2220) (not x55) x4582)
+(or (not x140) x2347 x2336 x2323 x2308 x287)
+(or (not x4581) (not x2243) (not x2220))
+(or (not x134) (not x78))
+(or (not x4582) (not x2243) (not x2221))
+(or (not x128) (not x78))
+(or (not x2243) (not x2221) x4581)
+(or (not x124) (not x78))
+(or (not x4580) (not x4576) (not x4568) x4579 x4578)
+(or (not x119) (not x78))
+(or (not x4580) (not x4568) x4577 x4576)
+(or (not x2345) (not x75) x134)
+(or (not x4580) x4569 x4568)
+(or (not x2345) (not x71) x134)
+(or (not x4578) (not x4576) (not x4568) x4580)
+(or (not x2334) (not x75) x134)
+(or (not x4579) (not x4576) (not x4568) x4580)
+(or (not x2334) (not x71) x134)
+(or (not x4577) (not x4568) x4580)
+(or (not x2320) (not x75) x134)
+(or (not x4569) x4580)
+(or (not x2320) (not x71) x134)
+(or (not x4579) (not x4578))
+(or (not x2306) (not x75) x134)
+(or (not x3850) x4579 x3688 x2293)
+(or (not x2306) (not x71) x134)
+(or (not x4579) (not x3850) (not x2293) x3688)
+(or (not x68) (not x75) x134)
+(or (not x4579) (not x3688) x3850 x2293)
+(or (not x68) (not x71) x134)
+(or (not x3688) (not x2293) x4579 x3850)
+(or (not x134) x2345 x2334 x2320 x2306 x68)
+(or (not x3848) x4579 x3686 x2293)
+(or (not x128) (not x75))
+(or (not x4579) (not x3848) (not x2293) x3686)
+(or (not x124) (not x75))
+(or (not x4579) (not x3686) x3848 x2293)
+(or (not x119) (not x75))
+(or (not x3686) (not x2293) x4579 x3848)
+(or (not x2342) (not x71) x128)
+(or (not x3847) x4579 x3684 x2293)
+(or (not x2332) (not x71) x128)
+(or (not x4579) (not x3847) (not x2293) x3684)
+(or (not x2318) (not x71) x128)
+(or (not x4579) (not x3684) x3847 x2293)
+(or (not x2304) (not x71) x128)
+(or (not x3684) (not x2293) x4579 x3847)
+(or (not x2297) (not x71) x128)
+(or (not x3845) x4579 x3682 x2293)
+(or (not x128) x2342 x2332 x2318 x2304 x2297)
+(or (not x4579) (not x3845) (not x2293) x3682)
+(or (not x124) (not x71))
+(or (not x4579) (not x3682) x3845 x2293)
+(or (not x119) (not x71))
+(or (not x3682) (not x2293) x4579 x3845)
+(or (not x124) x2340 x2328 x2315 x2302 x2295)
+(or (not x3843) x4579 x3680 x2293)
+(or (not x4579) (not x3843) (not x2293) x3680)
+(or (not x4579) (not x3680) x3843 x2293)
+(or (not x4550) (not x4535) (not x2240))
+(or (not x3680) (not x2293) x4579 x3843)
+(or (not x4550) (not x4535))
+(or (not x3848) (not x3686) x4578 x3850 x3688)
+(or (not x4550) (not x4532) (not x2241))
+(or (not x3847) (not x3684) x4578 x3848 x3686)
+(or (not x4550) (not x4532) x721)
+(or (not x3845) (not x3682) x4578 x3847 x3684)
+(or (not x4550) (not x4530) (not x2242))
+(or (not x3843) (not x3680) x4578 x3845 x3682)
+(or (not x4550) (not x4530) x714)
+(or x4578 x3843 x3680)
+(or (not x4550) (not x4527) (not x2243))
+(or (not x3850) (not x3688) x4578)
+(or (not x4550) (not x4527) x705)
+(or (not x4578) (not x3688) x3850)
+(or (not x4550) (not x4523) x698)
+(or (not x4578) (not x3850) x3688)
+(or (not x4550) x4535 x4532 x4530 x4527 x4523)
+(or (not x4578) (not x3686) x3848)
+(or (not x4550) (not x4535))
+(or (not x4578) (not x3848) x3686)
+(or (not x4550) (not x4520))
+(or (not x4578) (not x3684) x3847)
+(or (not x4550) (not x4509))
+(or (not x4578) (not x3847) x3684)
+(or (not x4550) (not x4498))
+(or (not x4578) (not x3682) x3845)
+(or (not x4550) (not x4486))
+(or (not x4578) (not x3845) x3682)
+(or (not x4578) (not x3680) x3843)
+(or (not x4578) (not x3843) x3680)
+(or (not x4535) (not x4520) (not x2240))
+(or (not x52) x4577 x4575 x3675)
+(or (not x4535) (not x4520))
+(or (not x4577) (not x3675) (not x52) x4575)
+(or (not x4535) (not x4518) (not x2241))
+(or (not x4577) x4575 x3675 x52)
+(or (not x4535) (not x4518) x721)
+(or (not x3675) x4577 x4575 x52)
+(or (not x4535) (not x4516) (not x2242))
+(or (not x4575) (not x50) x4577 x4574 x3673)
+(or (not x4535) (not x4516) x714)
+(or (not x4577) (not x4575) (not x3673) (not x50) x4574)
+(or (not x4535) (not x4514) (not x2243))
+(or (not x4577) (not x4575) x4574 x3673 x50)
+(or (not x4535) (not x4514) x705)
+(or (not x4575) (not x3673) x4577 x4574 x50)
+(or (not x4535) (not x4512) x698)
+(or (not x4574) (not x48) x4577 x4573 x3670)
+(or (not x4535) x4520 x4518 x4516 x4514 x4512)
+(or (not x4577) (not x4574) (not x3670) (not x48) x4573)
+(or (not x4535) (not x4520))
+(or (not x4577) (not x4574) x4573 x3670 x48)
+(or (not x4535) (not x4509))
+(or (not x4574) (not x3670) x4577 x4573 x48)
+(or (not x4535) (not x4498))
+(or (not x4573) (not x46) x4577 x4572 x3667)
+(or (not x4535) (not x4486))
+(or (not x4577) (not x4573) (not x3667) (not x46) x4572)
+(or (not x4577) (not x4573) x4572 x3667 x46)
+(or (not x4573) (not x3667) x4577 x4572 x46)
+(or (not x4520) (not x4509) (not x2240))
+(or (not x4572) (not x44) x4577 x4571 x3664)
+(or (not x4520) (not x4509))
+(or (not x4577) (not x4572) (not x3664) (not x44) x4571)
+(or (not x4520) (not x4507) (not x2241))
+(or (not x4577) (not x4572) x4571 x3664 x44)
+(or (not x4520) (not x4507) x721)
+(or (not x4572) (not x3664) x4577 x4571 x44)
+(or (not x4520) (not x4505) (not x2242))
+(or (not x4571) (not x149) x4577 x4570 x3661)
+(or (not x4520) (not x4505) x714)
+(or (not x4577) (not x4571) (not x3661) (not x149) x4570)
+(or (not x4520) (not x4503) (not x2243))
+(or (not x4577) (not x4571) x4570 x3661 x149)
+(or (not x4520) (not x4503) x705)
+(or (not x4571) (not x3661) x4577 x4570 x149)
+(or (not x4520) (not x4501) x698)
+(or (not x4577) (not x4576))
+(or (not x4520) x4509 x4507 x4505 x4503 x4501)
+(or (not x4570) x4576)
+(or (not x4520) (not x4509))
+(or (not x4576) x4570)
+(or (not x4520) (not x4498))
+(or x4575 x3832 x3675)
+(or (not x4520) (not x4486))
+(or (not x3832) (not x3675) x4575)
+(or (not x4575) (not x3675) x3832)
+(or (not x4575) (not x3832) x3675)
+(or (not x4509) (not x4498) (not x2240))
+(or (not x4575) x4574 x3831 x3673)
+(or (not x4509) (not x4498))
+(or (not x4575) (not x3831) (not x3673) x4574)
+(or (not x4509) (not x4496) (not x2241))
+(or (not x4574) (not x3673) x3831)
+(or (not x4509) (not x4496) x721)
+(or (not x4574) (not x3831) x3673)
+(or (not x4509) (not x4494) (not x2242))
+(or (not x4574) x4575)
+(or (not x4509) (not x4494) x714)
+(or (not x4574) x4573 x3829 x3670)
+(or (not x4509) (not x4492) (not x2243))
+(or (not x4574) (not x3829) (not x3670) x4573)
+(or (not x4509) (not x4492) x705)
+(or (not x4573) (not x3670) x3829)
+(or (not x4509) (not x4490) x698)
+(or (not x4573) (not x3829) x3670)
+(or (not x4509) x4498 x4496 x4494 x4492 x4490)
+(or (not x4573) x4574)
+(or (not x4509) (not x4498))
+(or (not x4573) x4572 x3827 x3667)
+(or (not x4509) (not x4486))
+(or (not x4573) (not x3827) (not x3667) x4572)
+(or (not x4498) (not x2239))
+(or (not x4572) (not x3667) x3827)
+(or (not x4498) x734)
+(or (not x4572) (not x3827) x3667)
+(or (not x4498) (not x4486) (not x2240))
+(or (not x4572) x4573)
+(or (not x4498) (not x4486))
+(or (not x4572) x4571 x3825 x3664)
+(or (not x4498) (not x4485) (not x2241))
+(or (not x4572) (not x3825) (not x3664) x4571)
+(or (not x4498) (not x4485) x721)
+(or (not x4571) (not x3664) x3825)
+(or (not x4498) (not x4482) (not x2242))
+(or (not x4571) (not x3825) x3664)
+(or (not x4498) (not x4482) x714)
+(or (not x4571) x4572)
+(or (not x4498) (not x4480) (not x2243))
+(or (not x4571) x4570 x3823 x3661)
+(or (not x4498) (not x4480) x705)
+(or (not x4571) (not x3823) (not x3661) x4570)
+(or (not x4498) (not x4478) x698)
+(or (not x4570) (not x3661) x3823)
+(or (not x4498) (not x4486))
+(or (not x4570) (not x3823) x3661)
+(or (not x2240) x4550 x4535 x4520 x4509 x4498 x4486)
+(or (not x4570) x4571)
+(or (not x4569) (not x2239) (not x2212))
+(or (not x2239) (not x2212) x4568)
+(or (not x4548) (not x4535) (not x2240))
+(or (not x4569) (not x2239) (not x2213) x95)
+(or (not x4548) (not x4535) x727)
+(or (not x2239) (not x2213) (not x95) x4569)
+(or (not x4548) (not x4532) (not x2241))
+(or (not x4568) (not x2239) (not x2213))
+(or (not x4548) (not x4532))
+(or (not x4569) (not x2239) (not x2214) x94)
+(or (not x4548) (not x4530) (not x2242))
+(or (not x2239) (not x2214) (not x94) x4569)
+(or (not x4548) (not x4530) x712)
+(or (not x4568) (not x2239) (not x2214))
+(or (not x4548) (not x4527) (not x2243))
+(or (not x4569) (not x2239) (not x2215) x92)
+(or (not x4548) (not x4527) x702)
+(or (not x2239) (not x2215) (not x92) x4569)
+(or (not x4548) (not x4523) x697)
+(or (not x4568) (not x2239) (not x2215))
+(or (not x4548) x4535 x4532 x4530 x4527 x4523)
+(or (not x4569) (not x2239) (not x2216) x91)
+(or (not x4548) (not x4532))
+(or (not x2239) (not x2216) (not x91) x4569)
+(or (not x4548) (not x4518))
+(or (not x4568) (not x2239) (not x2216))
+(or (not x4548) (not x4507))
+(or (not x4569) (not x2240) (not x2212) x89)
+(or (not x4548) (not x4496))
+(or (not x2240) (not x2212) (not x89) x4569)
+(or (not x4548) (not x4485))
+(or (not x4568) (not x2240) (not x2212))
+(or (not x4569) (not x2240) (not x2213))
+(or (not x2240) (not x2213) x4568)
+(or (not x4532) (not x4520) (not x2240))
+(or (not x4569) (not x2240) (not x2214) x88)
+(or (not x4532) (not x4520) x727)
+(or (not x2240) (not x2214) (not x88) x4569)
+(or (not x4532) (not x4518) (not x2241))
+(or (not x4568) (not x2240) (not x2214))
+(or (not x4532) (not x4518))
+(or (not x4569) (not x2240) (not x2215) x87)
+(or (not x4532) (not x4516) (not x2242))
+(or (not x2240) (not x2215) (not x87) x4569)
+(or (not x4532) (not x4516) x712)
+(or (not x4568) (not x2240) (not x2215))
+(or (not x4532) (not x4514) (not x2243))
+(or (not x4569) (not x2240) (not x2216) x86)
+(or (not x4532) (not x4514) x702)
+(or (not x2240) (not x2216) (not x86) x4569)
+(or (not x4532) (not x4512) x697)
+(or (not x4568) (not x2240) (not x2216))
+(or (not x4532) x4520 x4518 x4516 x4514 x4512)
+(or (not x4569) (not x2241) (not x2212) x82)
+(or (not x4532) (not x4518))
+(or (not x2241) (not x2212) (not x82) x4569)
+(or (not x4532) (not x4507))
+(or (not x4568) (not x2241) (not x2212))
+(or (not x4532) (not x4496))
+(or (not x4569) (not x2241) (not x2213) x81)
+(or (not x4532) (not x4485))
+(or (not x2241) (not x2213) (not x81) x4569)
+(or (not x4568) (not x2241) (not x2213))
+(or (not x4569) (not x2241) (not x2214))
+(or (not x4518) (not x4509) (not x2240))
+(or (not x2241) (not x2214) x4568)
+(or (not x4518) (not x4509) x727)
+(or (not x4569) (not x2241) (not x2215) x79)
+(or (not x4518) (not x4507) (not x2241))
+(or (not x2241) (not x2215) (not x79) x4569)
+(or (not x4518) (not x4507))
+(or (not x4568) (not x2241) (not x2215))
+(or (not x4518) (not x4505) (not x2242))
+(or (not x4569) (not x2241) (not x2216) x77)
+(or (not x4518) (not x4505) x712)
+(or (not x2241) (not x2216) (not x77) x4569)
+(or (not x4518) (not x4503) (not x2243))
+(or (not x4568) (not x2241) (not x2216))
+(or (not x4518) (not x4503) x702)
+(or (not x4569) (not x2242) (not x2212) x73)
+(or (not x4518) (not x4501) x697)
+(or (not x2242) (not x2212) (not x73) x4569)
+(or (not x4518) x4509 x4507 x4505 x4503 x4501)
+(or (not x4568) (not x2242) (not x2212))
+(or (not x4518) (not x4507))
+(or (not x4569) (not x2242) (not x2213) x67)
+(or (not x4518) (not x4496))
+(or (not x2242) (not x2213) (not x67) x4569)
+(or (not x4518) (not x4485))
+(or (not x4568) (not x2242) (not x2213))
+(or (not x4569) (not x2242) (not x2214) x66)
+(or (not x2242) (not x2214) (not x66) x4569)
+(or (not x4507) (not x4498) (not x2240))
+(or (not x4568) (not x2242) (not x2214))
+(or (not x4507) (not x4498) x727)
+(or (not x4569) (not x2242) (not x2215))
+(or (not x4507) (not x4496) (not x2241))
+(or (not x2242) (not x2215) x4568)
+(or (not x4507) (not x4496))
+(or (not x4569) (not x2242) (not x2216) x65)
+(or (not x4507) (not x4494) (not x2242))
+(or (not x2242) (not x2216) (not x65) x4569)
+(or (not x4507) (not x4494) x712)
+(or (not x4568) (not x2242) (not x2216))
+(or (not x4507) (not x4492) (not x2243))
+(or (not x4569) (not x2243) (not x2212) x58)
+(or (not x4507) (not x4492) x702)
+(or (not x2243) (not x2212) (not x58) x4569)
+(or (not x4507) (not x4490) x697)
+(or (not x4568) (not x2243) (not x2212))
+(or (not x4507) x4498 x4496 x4494 x4492 x4490)
+(or (not x4569) (not x2243) (not x2213) x57)
+(or (not x4507) (not x4496))
+(or (not x2243) (not x2213) (not x57) x4569)
+(or (not x4507) (not x4485))
+(or (not x4568) (not x2243) (not x2213))
+(or (not x4496) (not x2239))
+(or (not x4569) (not x2243) (not x2214) x56)
+(or (not x4496) x733)
+(or (not x2243) (not x2214) (not x56) x4569)
+(or (not x4496) (not x4486) (not x2240))
+(or (not x4568) (not x2243) (not x2214))
+(or (not x4496) (not x4486) x727)
+(or (not x4569) (not x2243) (not x2215) x55)
+(or (not x4496) (not x4485) (not x2241))
+(or (not x2243) (not x2215) (not x55) x4569)
+(or (not x4496) (not x4485))
+(or (not x4568) (not x2243) (not x2215))
+(or (not x4496) (not x4482) (not x2242))
+(or (not x4569) (not x2243) (not x2216))
+(or (not x4496) (not x4482) x712)
+(or (not x2243) (not x2216) x4568)
+(or (not x4496) (not x4480) (not x2243))
+(or (not x4038) (not x69) (not x6) x4567)
+(or (not x4496) (not x4480) x702)
+(or (not x4567) (not x4563) (not x4555) x4566 x4565)
+(or (not x4496) (not x4478) x697)
+(or (not x4567) (not x4555) x4564 x4563)
+(or (not x4496) (not x4485))
+(or (not x4567) x4556 x4555)
+(or (not x2241) x4548 x4532 x4518 x4507 x4496 x4485)
+(or (not x4565) (not x4563) (not x4555) x4567)
+(or (not x4566) (not x4563) (not x4555) x4567)
+(or (not x4564) (not x4555) x4567)
+(or (not x4544) (not x4535) (not x2240))
+(or (not x4556) x4567)
+(or (not x4544) (not x4535) x726)
+(or (not x4566) (not x4565))
+(or (not x4544) (not x4532) (not x2241))
+(or (not x3816) x4566 x3850 x2292)
+(or (not x4544) (not x4532) x720)
+(or (not x4566) (not x3816) (not x2292) x3850)
+(or (not x4544) (not x4530) (not x2242))
+(or (not x4566) (not x3850) x3816 x2292)
+(or (not x4544) (not x4530))
+(or (not x3850) (not x2292) x4566 x3816)
+(or (not x4544) (not x4527) (not x2243))
+(or (not x3815) x4566 x3848 x2292)
+(or (not x4544) (not x4527) x701)
+(or (not x4566) (not x3815) (not x2292) x3848)
+(or (not x4544) (not x4523) x696)
+(or (not x4566) (not x3848) x3815 x2292)
+(or (not x4544) x4535 x4532 x4530 x4527 x4523)
+(or (not x3848) (not x2292) x4566 x3815)
+(or (not x4544) (not x4530))
+(or (not x3814) x4566 x3847 x2292)
+(or (not x4544) (not x4516))
+(or (not x4566) (not x3814) (not x2292) x3847)
+(or (not x4544) (not x4505))
+(or (not x4566) (not x3847) x3814 x2292)
+(or (not x4544) (not x4494))
+(or (not x3847) (not x2292) x4566 x3814)
+(or (not x4544) (not x4482))
+(or (not x3813) x4566 x3845 x2292)
+(or (not x4566) (not x3813) (not x2292) x3845)
+(or (not x4566) (not x3845) x3813 x2292)
+(or (not x4530) (not x4520) (not x2240))
+(or (not x3845) (not x2292) x4566 x3813)
+(or (not x4530) (not x4520) x726)
+(or (not x3812) x4566 x3843 x2292)
+(or (not x4530) (not x4518) (not x2241))
+(or (not x4566) (not x3812) (not x2292) x3843)
+(or (not x4530) (not x4518) x720)
+(or (not x4566) (not x3843) x3812 x2292)
+(or (not x4530) (not x4516) (not x2242))
+(or (not x3843) (not x2292) x4566 x3812)
+(or (not x4530) (not x4516))
+(or (not x3848) (not x3815) x4565 x3850 x3816)
+(or (not x4530) (not x4514) (not x2243))
+(or (not x3847) (not x3814) x4565 x3848 x3815)
+(or (not x4530) (not x4514) x701)
+(or (not x3845) (not x3813) x4565 x3847 x3814)
+(or (not x4530) (not x4512) x696)
+(or (not x3843) (not x3812) x4565 x3845 x3813)
+(or (not x4530) x4520 x4518 x4516 x4514 x4512)
+(or x4565 x3843 x3812)
+(or (not x4530) (not x4516))
+(or (not x3850) (not x3816) x4565)
+(or (not x4530) (not x4505))
+(or (not x4565) (not x3850) x3816)
+(or (not x4530) (not x4494))
+(or (not x4565) (not x3816) x3850)
+(or (not x4530) (not x4482))
+(or (not x4565) (not x3848) x3815)
+(or (not x4565) (not x3815) x3848)
+(or (not x4565) (not x3847) x3814)
+(or (not x4516) (not x4509) (not x2240))
+(or (not x4565) (not x3814) x3847)
+(or (not x4516) (not x4509) x726)
+(or (not x4565) (not x3845) x3813)
+(or (not x4516) (not x4507) (not x2241))
+(or (not x4565) (not x3813) x3845)
+(or (not x4516) (not x4507) x720)
+(or (not x4565) (not x3843) x3812)
+(or (not x4516) (not x4505) (not x2242))
+(or (not x4565) (not x3812) x3843)
+(or (not x4516) (not x4505))
+(or (not x52) x4564 x4562 x3832)
+(or (not x4516) (not x4503) (not x2243))
+(or (not x4564) (not x3832) (not x52) x4562)
+(or (not x4516) (not x4503) x701)
+(or (not x4564) x4562 x3832 x52)
+(or (not x4516) (not x4501) x696)
+(or (not x3832) x4564 x4562 x52)
+(or (not x4516) x4509 x4507 x4505 x4503 x4501)
+(or (not x4562) (not x50) x4564 x4561 x3831)
+(or (not x4516) (not x4505))
+(or (not x4564) (not x4562) (not x3831) (not x50) x4561)
+(or (not x4516) (not x4494))
+(or (not x4564) (not x4562) x4561 x3831 x50)
+(or (not x4516) (not x4482))
+(or (not x4562) (not x3831) x4564 x4561 x50)
+(or (not x4561) (not x48) x4564 x4560 x3829)
+(or (not x4564) (not x4561) (not x3829) (not x48) x4560)
+(or (not x4505) (not x4498) (not x2240))
+(or (not x4564) (not x4561) x4560 x3829 x48)
+(or (not x4505) (not x4498) x726)
+(or (not x4561) (not x3829) x4564 x4560 x48)
+(or (not x4505) (not x4496) (not x2241))
+(or (not x4560) (not x46) x4564 x4559 x3827)
+(or (not x4505) (not x4496) x720)
+(or (not x4564) (not x4560) (not x3827) (not x46) x4559)
+(or (not x4505) (not x4494) (not x2242))
+(or (not x4564) (not x4560) x4559 x3827 x46)
+(or (not x4505) (not x4494))
+(or (not x4560) (not x3827) x4564 x4559 x46)
+(or (not x4505) (not x4492) (not x2243))
+(or (not x4559) (not x44) x4564 x4558 x3825)
+(or (not x4505) (not x4492) x701)
+(or (not x4564) (not x4559) (not x3825) (not x44) x4558)
+(or (not x4505) (not x4490) x696)
+(or (not x4564) (not x4559) x4558 x3825 x44)
+(or (not x4505) x4498 x4496 x4494 x4492 x4490)
+(or (not x4559) (not x3825) x4564 x4558 x44)
+(or (not x4505) (not x4494))
+(or (not x4558) (not x149) x4564 x4557 x3823)
+(or (not x4505) (not x4482))
+(or (not x4564) (not x4558) (not x3823) (not x149) x4557)
+(or (not x4494) (not x2239))
+(or (not x4564) (not x4558) x4557 x3823 x149)
+(or (not x4494) x732)
+(or (not x4558) (not x3823) x4564 x4557 x149)
+(or (not x4494) (not x4486) (not x2240))
+(or (not x4564) (not x4563))
+(or (not x4494) (not x4486) x726)
+(or (not x4557) x4563)
+(or (not x4494) (not x4485) (not x2241))
+(or (not x4563) x4557)
+(or (not x4494) (not x4485) x720)
+(or x4562 x3832 x3808)
+(or (not x4494) (not x4482) (not x2242))
+(or (not x3832) (not x3808) x4562)
+(or (not x4494) (not x4482))
+(or (not x4562) (not x3832) x3808)
+(or (not x4494) (not x4480) (not x2243))
+(or (not x4562) (not x3808) x3832)
+(or (not x4494) (not x4480) x701)
+(or (not x4562) x4561 x3831 x3807)
+(or (not x4494) (not x4478) x696)
+(or (not x4562) (not x3831) (not x3807) x4561)
+(or (not x4494) (not x4482))
+(or (not x4561) (not x3831) x3807)
+(or (not x2242) x4544 x4530 x4516 x4505 x4494 x4482)
+(or (not x4561) (not x3807) x3831)
+(or (not x4561) x4562)
+(or (not x4561) x4560 x3829 x3805)
+(or (not x4542) (not x4535) (not x2240))
+(or (not x4561) (not x3829) (not x3805) x4560)
+(or (not x4542) (not x4535) x724)
+(or (not x4560) (not x3829) x3805)
+(or (not x4542) (not x4532) (not x2241))
+(or (not x4560) (not x3805) x3829)
+(or (not x4542) (not x4532) x719)
+(or (not x4560) x4561)
+(or (not x4542) (not x4530) (not x2242))
+(or (not x4560) x4559 x3827 x3803)
+(or (not x4542) (not x4530) x710)
+(or (not x4560) (not x3827) (not x3803) x4559)
+(or (not x4542) (not x4527) (not x2243))
+(or (not x4559) (not x3827) x3803)
+(or (not x4542) (not x4527))
+(or (not x4559) (not x3803) x3827)
+(or (not x4542) (not x4523) x695)
+(or (not x4559) x4560)
+(or (not x4542) x4535 x4532 x4530 x4527 x4523)
+(or (not x4559) x4558 x3825 x3801)
+(or (not x4542) (not x4527))
+(or (not x4559) (not x3825) (not x3801) x4558)
+(or (not x4542) (not x4514))
+(or (not x4558) (not x3825) x3801)
+(or (not x4542) (not x4503))
+(or (not x4558) (not x3801) x3825)
+(or (not x4542) (not x4492))
+(or (not x4558) x4559)
+(or (not x4542) (not x4480))
+(or (not x4558) x4557 x3823 x3799)
+(or (not x4558) (not x3823) (not x3799) x4557)
+(or (not x4557) (not x3823) x3799)
+(or (not x4527) (not x4520) (not x2240))
+(or (not x4557) (not x3799) x3823)
+(or (not x4527) (not x4520) x724)
+(or (not x4557) x4558)
+(or (not x4527) (not x4518) (not x2241))
+(or (not x4556) (not x2239) (not x2234))
+(or (not x4527) (not x4518) x719)
+(or (not x2239) (not x2234) x4555)
+(or (not x4527) (not x4516) (not x2242))
+(or (not x4556) (not x2240) (not x2234) x95)
+(or (not x4527) (not x4516) x710)
+(or (not x2240) (not x2234) (not x95) x4556)
+(or (not x4527) (not x4514) (not x2243))
+(or (not x4555) (not x2240) (not x2234))
+(or (not x4527) (not x4514))
+(or (not x4556) (not x2241) (not x2234) x94)
+(or (not x4527) (not x4512) x695)
+(or (not x2241) (not x2234) (not x94) x4556)
+(or (not x4527) x4520 x4518 x4516 x4514 x4512)
+(or (not x4555) (not x2241) (not x2234))
+(or (not x4527) (not x4514))
+(or (not x4556) (not x2242) (not x2234) x92)
+(or (not x4527) (not x4503))
+(or (not x2242) (not x2234) (not x92) x4556)
+(or (not x4527) (not x4492))
+(or (not x4555) (not x2242) (not x2234))
+(or (not x4527) (not x4480))
+(or (not x4556) (not x2243) (not x2234) x91)
+(or (not x2243) (not x2234) (not x91) x4556)
+(or (not x4555) (not x2243) (not x2234))
+(or (not x4514) (not x4509) (not x2240))
+(or (not x4556) (not x2239) (not x2235) x89)
+(or (not x4514) (not x4509) x724)
+(or (not x2239) (not x2235) (not x89) x4556)
+(or (not x4514) (not x4507) (not x2241))
+(or (not x4555) (not x2239) (not x2235))
+(or (not x4514) (not x4507) x719)
+(or (not x4556) (not x2240) (not x2235))
+(or (not x4514) (not x4505) (not x2242))
+(or (not x2240) (not x2235) x4555)
+(or (not x4514) (not x4505) x710)
+(or (not x4556) (not x2241) (not x2235) x88)
+(or (not x4514) (not x4503) (not x2243))
+(or (not x2241) (not x2235) (not x88) x4556)
+(or (not x4514) (not x4503))
+(or (not x4555) (not x2241) (not x2235))
+(or (not x4514) (not x4501) x695)
+(or (not x4556) (not x2242) (not x2235) x87)
+(or (not x4514) x4509 x4507 x4505 x4503 x4501)
+(or (not x2242) (not x2235) (not x87) x4556)
+(or (not x4514) (not x4503))
+(or (not x4555) (not x2242) (not x2235))
+(or (not x4514) (not x4492))
+(or (not x4556) (not x2243) (not x2235) x86)
+(or (not x4514) (not x4480))
+(or (not x2243) (not x2235) (not x86) x4556)
+(or (not x4555) (not x2243) (not x2235))
+(or (not x4556) (not x2239) (not x2236) x82)
+(or (not x4503) (not x4498) (not x2240))
+(or (not x2239) (not x2236) (not x82) x4556)
+(or (not x4503) (not x4498) x724)
+(or (not x4555) (not x2239) (not x2236))
+(or (not x4503) (not x4496) (not x2241))
+(or (not x4556) (not x2240) (not x2236) x81)
+(or (not x4503) (not x4496) x719)
+(or (not x2240) (not x2236) (not x81) x4556)
+(or (not x4503) (not x4494) (not x2242))
+(or (not x4555) (not x2240) (not x2236))
+(or (not x4503) (not x4494) x710)
+(or (not x4556) (not x2241) (not x2236))
+(or (not x4503) (not x4492) (not x2243))
+(or (not x2241) (not x2236) x4555)
+(or (not x4503) (not x4492))
+(or (not x4556) (not x2242) (not x2236) x79)
+(or (not x4503) (not x4490) x695)
+(or (not x2242) (not x2236) (not x79) x4556)
+(or (not x4503) x4498 x4496 x4494 x4492 x4490)
+(or (not x4555) (not x2242) (not x2236))
+(or (not x4503) (not x4492))
+(or (not x4556) (not x2243) (not x2236) x77)
+(or (not x4503) (not x4480))
+(or (not x2243) (not x2236) (not x77) x4556)
+(or (not x4492) (not x2239))
+(or (not x4555) (not x2243) (not x2236))
+(or (not x4492) x731)
+(or (not x4556) (not x2239) (not x2237) x73)
+(or (not x4492) (not x4486) (not x2240))
+(or (not x2239) (not x2237) (not x73) x4556)
+(or (not x4492) (not x4486) x724)
+(or (not x4555) (not x2239) (not x2237))
+(or (not x4492) (not x4485) (not x2241))
+(or (not x4556) (not x2240) (not x2237) x67)
+(or (not x4492) (not x4485) x719)
+(or (not x2240) (not x2237) (not x67) x4556)
+(or (not x4492) (not x4482) (not x2242))
+(or (not x4555) (not x2240) (not x2237))
+(or (not x4492) (not x4482) x710)
+(or (not x4556) (not x2241) (not x2237) x66)
+(or (not x4492) (not x4480) (not x2243))
+(or (not x2241) (not x2237) (not x66) x4556)
+(or (not x4492) (not x4480))
+(or (not x4555) (not x2241) (not x2237))
+(or (not x4492) (not x4478) x695)
+(or (not x4556) (not x2242) (not x2237))
+(or (not x4492) (not x4480))
+(or (not x2242) (not x2237) x4555)
+(or (not x2243) x4542 x4527 x4514 x4503 x4492 x4480)
+(or (not x4556) (not x2243) (not x2237) x65)
+(or (not x2243) (not x2237) (not x65) x4556)
+(or (not x4555) (not x2243) (not x2237))
+(or (not x4540) (not x4535) (not x2240))
+(or (not x4556) (not x2239) (not x2238) x58)
+(or (not x4540) (not x4535) x723)
+(or (not x2239) (not x2238) (not x58) x4556)
+(or (not x4540) (not x4532) (not x2241))
+(or (not x4555) (not x2239) (not x2238))
+(or (not x4540) (not x4532) x717)
+(or (not x4556) (not x2240) (not x2238) x57)
+(or (not x4540) (not x4530) (not x2242))
+(or (not x2240) (not x2238) (not x57) x4556)
+(or (not x4540) (not x4530) x709)
+(or (not x4555) (not x2240) (not x2238))
+(or (not x4540) (not x4527) (not x2243))
+(or (not x4556) (not x2241) (not x2238) x56)
+(or (not x4540) (not x4527) x700)
+(or (not x2241) (not x2238) (not x56) x4556)
+(or (not x4540) (not x4523))
+(or (not x4555) (not x2241) (not x2238))
+(or (not x4540) x4535 x4532 x4530 x4527 x4523)
+(or (not x4556) (not x2242) (not x2238) x55)
+(or (not x4540) (not x4523))
+(or (not x2242) (not x2238) (not x55) x4556)
+(or (not x4540) (not x4512))
+(or (not x4555) (not x2242) (not x2238))
+(or (not x4540) (not x4501))
+(or (not x4556) (not x2243) (not x2238))
+(or (not x4540) (not x4490))
+(or (not x2243) (not x2238) x4555)
+(or (not x4540) (not x4478))
+(or (not x4038) (not x69) (not x8) x4554)
+(or (not x4554) (not x4545) (not x4487) x4553 x4552)
+(or (not x4554) (not x4487) x4546 x4545)
+(or (not x4523) (not x4520) (not x2240))
+(or (not x4554) x4488 x4487)
+(or (not x4523) (not x4520) x723)
+(or (not x4552) (not x4545) (not x4487) x4554)
+(or (not x4523) (not x4518) (not x2241))
+(or (not x4553) (not x4545) (not x4487) x4554)
+(or (not x4523) (not x4518) x717)
+(or (not x4546) (not x4487) x4554)
+(or (not x4523) (not x4516) (not x2242))
+(or (not x4488) x4554)
+(or (not x4523) (not x4516) x709)
+(or (not x4553) (not x4552))
+(or (not x4523) (not x4514) (not x2243))
+(or (not x3816) x4553 x3792 x2292)
+(or (not x4523) (not x4514) x700)
+(or (not x4553) (not x3816) (not x2292) x3792)
+(or (not x4523) (not x4512))
+(or (not x4553) (not x3792) x3816 x2292)
+(or (not x4523) x4520 x4518 x4516 x4514 x4512)
+(or (not x3792) (not x2292) x4553 x3816)
+(or (not x4523) (not x4512))
+(or (not x3815) x4553 x3791 x2292)
+(or (not x4523) (not x4501))
+(or (not x4553) (not x3815) (not x2292) x3791)
+(or (not x4523) (not x4490))
+(or (not x4553) (not x3791) x3815 x2292)
+(or (not x4523) (not x4478))
+(or (not x3791) (not x2292) x4553 x3815)
+(or (not x3814) x4553 x3790 x2292)
+(or (not x4553) (not x3814) (not x2292) x3790)
+(or (not x4512) (not x4509) (not x2240))
+(or (not x4553) (not x3790) x3814 x2292)
+(or (not x4512) (not x4509) x723)
+(or (not x3790) (not x2292) x4553 x3814)
+(or (not x4512) (not x4507) (not x2241))
+(or (not x3813) x4553 x3789 x2292)
+(or (not x4512) (not x4507) x717)
+(or (not x4553) (not x3813) (not x2292) x3789)
+(or (not x4512) (not x4505) (not x2242))
+(or (not x4553) (not x3789) x3813 x2292)
+(or (not x4512) (not x4505) x709)
+(or (not x3789) (not x2292) x4553 x3813)
+(or (not x4512) (not x4503) (not x2243))
+(or (not x3812) x4553 x3788 x2292)
+(or (not x4512) (not x4503) x700)
+(or (not x4553) (not x3812) (not x2292) x3788)
+(or (not x4512) (not x4501))
+(or (not x4553) (not x3788) x3812 x2292)
+(or (not x4512) x4509 x4507 x4505 x4503 x4501)
+(or (not x3788) (not x2292) x4553 x3812)
+(or (not x4512) (not x4501))
+(or (not x3815) (not x3791) x4552 x3816 x3792)
+(or (not x4512) (not x4490))
+(or (not x3814) (not x3790) x4552 x3815 x3791)
+(or (not x4512) (not x4478))
+(or (not x3813) (not x3789) x4552 x3814 x3790)
+(or (not x3812) (not x3788) x4552 x3813 x3789)
+(or x4552 x3812 x3788)
+(or (not x4501) (not x4498) (not x2240))
+(or (not x3816) (not x3792) x4552)
+(or (not x4501) (not x4498) x723)
+(or (not x4552) (not x3792) x3816)
+(or (not x4501) (not x4496) (not x2241))
+(or (not x4552) (not x3816) x3792)
+(or (not x4501) (not x4496) x717)
+(or (not x4552) (not x3791) x3815)
+(or (not x4501) (not x4494) (not x2242))
+(or (not x4552) (not x3815) x3791)
+(or (not x4501) (not x4494) x709)
+(or (not x4552) (not x3790) x3814)
+(or (not x4501) (not x4492) (not x2243))
+(or (not x4552) (not x3814) x3790)
+(or (not x4501) (not x4492) x700)
+(or (not x4552) (not x3789) x3813)
+(or (not x4501) (not x4490))
+(or (not x4552) (not x3813) x3789)
+(or (not x4501) x4498 x4496 x4494 x4492 x4490)
+(or (not x4552) (not x3788) x3812)
+(or (not x4501) (not x4490))
+(or (not x4552) (not x3812) x3788)
+(or (not x4501) (not x4478))
+(or (not x52) x4546 x4538 x3771)
+(or (not x4490) (not x2239))
+(or (not x4546) (not x3771) (not x52) x4538)
+(or (not x4490) x729)
+(or (not x4546) x4538 x3771 x52)
+(or (not x4490) (not x4486) (not x2240))
+(or (not x3771) x4546 x4538 x52)
+(or (not x4490) (not x4486) x723)
+(or (not x4538) (not x50) x4546 x4536 x3768)
+(or (not x4490) (not x4485) (not x2241))
+(or (not x4546) (not x4538) (not x3768) (not x50) x4536)
+(or (not x4490) (not x4485) x717)
+(or (not x4546) (not x4538) x4536 x3768 x50)
+(or (not x4490) (not x4482) (not x2242))
+(or (not x4538) (not x3768) x4546 x4536 x50)
+(or (not x4490) (not x4482) x709)
+(or (not x4536) (not x48) x4546 x4533 x3765)
+(or (not x4490) (not x4480) (not x2243))
+(or (not x4546) (not x4536) (not x3765) (not x48) x4533)
+(or (not x4490) (not x4480) x700)
+(or (not x4546) (not x4536) x4533 x3765 x48)
+(or (not x4490) (not x4478))
+(or (not x4536) (not x3765) x4546 x4533 x48)
+(or (not x4490) (not x4478))
+(or (not x4533) (not x46) x4546 x4528 x3759)
+(or (not x4546) (not x4533) (not x3759) (not x46) x4528)
+(or (not x4546) (not x4533) x4528 x3759 x46)
+(or (not x4549) x4551)
+(or (not x4533) (not x3759) x4546 x4528 x46)
+(or (not x4551) x4549)
+(or (not x4528) (not x44) x4546 x4525 x3755)
+(or (not x4550) (not x4547))
+(or (not x4546) (not x4528) (not x3755) (not x44) x4525)
+(or (not x4550) x4549 x4547)
+(or (not x4546) (not x4528) x4525 x3755 x44)
+(or (not x4547) x4550 x4549)
+(or (not x4528) (not x3755) x4546 x4525 x44)
+(or (not x4549) x4550 x4547)
+(or (not x4525) (not x149) x4546 x4524 x3749)
+(or (not x4548) (not x4543))
+(or (not x4546) (not x4525) (not x3749) (not x149) x4524)
+(or (not x4548) x4547 x4543)
+(or (not x4546) (not x4525) x4524 x3749 x149)
+(or (not x4543) x4548 x4547)
+(or (not x4525) (not x3749) x4546 x4524 x149)
+(or (not x4547) x4548 x4543)
+(or (not x4546) (not x4545))
+(or (not x4544) (not x4541))
+(or (not x4524) x4545)
+(or (not x4544) x4543 x4541)
+(or (not x4545) x4524)
+(or (not x4541) x4544 x4543)
+(or x4538 x3808 x3771)
+(or (not x4543) x4544 x4541)
+(or (not x3808) (not x3771) x4538)
+(or (not x4542) (not x4539))
+(or (not x4538) (not x3771) x3808)
+(or (not x4542) x4541 x4539)
+(or (not x4538) (not x3808) x3771)
+(or (not x4539) x4542 x4541)
+(or (not x4538) x4536 x3807 x3768)
+(or (not x4541) x4542 x4539)
+(or (not x4538) (not x3807) (not x3768) x4536)
+(or (not x4540) x4539)
+(or (not x4536) (not x3768) x3807)
+(or (not x4539) x4540)
+(or (not x4536) (not x3807) x3768)
+(or (not x4536) x4538)
+(or (not x4536) x4533 x3805 x3765)
+(or (not x4534) x4537)
+(or (not x4536) (not x3805) (not x3765) x4533)
+(or (not x4537) x4534)
+(or (not x4533) (not x3765) x3805)
+(or (not x4535) (not x4531))
+(or (not x4533) (not x3805) x3765)
+(or (not x4535) x4534 x4531)
+(or (not x4533) x4536)
+(or (not x4531) x4535 x4534)
+(or (not x4533) x4528 x3803 x3759)
+(or (not x4534) x4535 x4531)
+(or (not x4533) (not x3803) (not x3759) x4528)
+(or (not x4532) (not x4529))
+(or (not x4528) (not x3759) x3803)
+(or (not x4532) x4531 x4529)
+(or (not x4528) (not x3803) x3759)
+(or (not x4529) x4532 x4531)
+(or (not x4528) x4533)
+(or (not x4531) x4532 x4529)
+(or (not x4528) x4525 x3801 x3755)
+(or (not x4530) (not x4526))
+(or (not x4528) (not x3801) (not x3755) x4525)
+(or (not x4530) x4529 x4526)
+(or (not x4525) (not x3755) x3801)
+(or (not x4526) x4530 x4529)
+(or (not x4525) (not x3801) x3755)
+(or (not x4529) x4530 x4526)
+(or (not x4525) x4528)
+(or (not x4527) (not x4522))
+(or (not x4525) x4524 x3799 x3749)
+(or (not x4527) x4526 x4522)
+(or (not x4525) (not x3799) (not x3749) x4524)
+(or (not x4522) x4527 x4526)
+(or (not x4524) (not x3749) x3799)
+(or (not x4526) x4527 x4522)
+(or (not x4524) (not x3799) x3749)
+(or (not x4523) x4522)
+(or (not x4524) x4525)
+(or (not x4522) x4523)
+(or (not x4488) (not x2234) (not x2228))
+(or (not x2234) (not x2228) x4487)
+(or (not x4488) (not x2234) (not x2229) x95)
+(or (not x4519) x4521)
+(or (not x2234) (not x2229) (not x95) x4488)
+(or (not x4521) x4519)
+(or (not x4487) (not x2234) (not x2229))
+(or (not x4520) (not x4517))
+(or (not x4488) (not x2234) (not x2230) x94)
+(or (not x4520) x4519 x4517)
+(or (not x2234) (not x2230) (not x94) x4488)
+(or (not x4517) x4520 x4519)
+(or (not x4487) (not x2234) (not x2230))
+(or (not x4519) x4520 x4517)
+(or (not x4488) (not x2234) (not x2231) x92)
+(or (not x4518) (not x4515))
+(or (not x2234) (not x2231) (not x92) x4488)
+(or (not x4518) x4517 x4515)
+(or (not x4487) (not x2234) (not x2231))
+(or (not x4515) x4518 x4517)
+(or (not x4488) (not x2234) (not x2232) x91)
+(or (not x4517) x4518 x4515)
+(or (not x2234) (not x2232) (not x91) x4488)
+(or (not x4516) (not x4513))
+(or (not x4487) (not x2234) (not x2232))
+(or (not x4516) x4515 x4513)
+(or (not x4488) (not x2235) (not x2228) x89)
+(or (not x4513) x4516 x4515)
+(or (not x2235) (not x2228) (not x89) x4488)
+(or (not x4515) x4516 x4513)
+(or (not x4487) (not x2235) (not x2228))
+(or (not x4514) (not x4511))
+(or (not x4488) (not x2235) (not x2229))
+(or (not x4514) x4513 x4511)
+(or (not x2235) (not x2229) x4487)
+(or (not x4511) x4514 x4513)
+(or (not x4488) (not x2235) (not x2230) x88)
+(or (not x4513) x4514 x4511)
+(or (not x2235) (not x2230) (not x88) x4488)
+(or (not x4512) x4511)
+(or (not x4487) (not x2235) (not x2230))
+(or (not x4511) x4512)
+(or (not x4488) (not x2235) (not x2231) x87)
+(or (not x2235) (not x2231) (not x87) x4488)
+(or (not x4487) (not x2235) (not x2231))
+(or (not x4508) x4510)
+(or (not x4488) (not x2235) (not x2232) x86)
+(or (not x4510) x4508)
+(or (not x2235) (not x2232) (not x86) x4488)
+(or (not x4509) (not x4506))
+(or (not x4487) (not x2235) (not x2232))
+(or (not x4509) x4508 x4506)
+(or (not x4488) (not x2236) (not x2228) x82)
+(or (not x4506) x4509 x4508)
+(or (not x2236) (not x2228) (not x82) x4488)
+(or (not x4508) x4509 x4506)
+(or (not x4487) (not x2236) (not x2228))
+(or (not x4507) (not x4504))
+(or (not x4488) (not x2236) (not x2229) x81)
+(or (not x4507) x4506 x4504)
+(or (not x2236) (not x2229) (not x81) x4488)
+(or (not x4504) x4507 x4506)
+(or (not x4487) (not x2236) (not x2229))
+(or (not x4506) x4507 x4504)
+(or (not x4488) (not x2236) (not x2230))
+(or (not x4505) (not x4502))
+(or (not x2236) (not x2230) x4487)
+(or (not x4505) x4504 x4502)
+(or (not x4488) (not x2236) (not x2231) x79)
+(or (not x4502) x4505 x4504)
+(or (not x2236) (not x2231) (not x79) x4488)
+(or (not x4504) x4505 x4502)
+(or (not x4487) (not x2236) (not x2231))
+(or (not x4503) (not x4500))
+(or (not x4488) (not x2236) (not x2232) x77)
+(or (not x4503) x4502 x4500)
+(or (not x2236) (not x2232) (not x77) x4488)
+(or (not x4500) x4503 x4502)
+(or (not x4487) (not x2236) (not x2232))
+(or (not x4502) x4503 x4500)
+(or (not x4488) (not x2237) (not x2228) x73)
+(or (not x4501) x4500)
+(or (not x2237) (not x2228) (not x73) x4488)
+(or (not x4500) x4501)
+(or (not x4487) (not x2237) (not x2228))
+(or (not x4488) (not x2237) (not x2229) x67)
+(or (not x2237) (not x2229) (not x67) x4488)
+(or (not x4497) x4499)
+(or (not x4487) (not x2237) (not x2229))
+(or (not x4499) x4497)
+(or (not x4488) (not x2237) (not x2230) x66)
+(or (not x4498) (not x4495))
+(or (not x2237) (not x2230) (not x66) x4488)
+(or (not x4498) x4497 x4495)
+(or (not x4487) (not x2237) (not x2230))
+(or (not x4495) x4498 x4497)
+(or (not x4488) (not x2237) (not x2231))
+(or (not x4497) x4498 x4495)
+(or (not x2237) (not x2231) x4487)
+(or (not x4496) (not x4493))
+(or (not x4488) (not x2237) (not x2232) x65)
+(or (not x4496) x4495 x4493)
+(or (not x2237) (not x2232) (not x65) x4488)
+(or (not x4493) x4496 x4495)
+(or (not x4487) (not x2237) (not x2232))
+(or (not x4495) x4496 x4493)
+(or (not x4488) (not x2238) (not x2228) x58)
+(or (not x4494) (not x4491))
+(or (not x2238) (not x2228) (not x58) x4488)
+(or (not x4494) x4493 x4491)
+(or (not x4487) (not x2238) (not x2228))
+(or (not x4491) x4494 x4493)
+(or (not x4488) (not x2238) (not x2229) x57)
+(or (not x4493) x4494 x4491)
+(or (not x2238) (not x2229) (not x57) x4488)
+(or (not x4492) (not x4489))
+(or (not x4487) (not x2238) (not x2229))
+(or (not x4492) x4491 x4489)
+(or (not x4488) (not x2238) (not x2230) x56)
+(or (not x4489) x4492 x4491)
+(or (not x2238) (not x2230) (not x56) x4488)
+(or (not x4491) x4492 x4489)
+(or (not x4487) (not x2238) (not x2230))
+(or (not x4490) x4489)
+(or (not x4488) (not x2238) (not x2231) x55)
+(or (not x4489) x4490)
+(or (not x2238) (not x2231) (not x55) x4488)
+(or (not x4487) (not x2238) (not x2231))
+(or (not x4486) (not x4484))
+(or (not x4488) (not x2238) (not x2232))
+(or (not x4486) x4484)
+(or (not x2238) (not x2232) x4487)
+(or (not x4484) x4486)
+(or (not x4038) (not x69) (not x9) x4483)
+(or (not x4483) (not x4473) (not x4465) x4476 x4475)
+(or (not x4485) (not x4481))
+(or (not x4483) (not x4465) x4474 x4473)
+(or (not x4485) x4484 x4481)
+(or (not x4483) x4466 x4465)
+(or (not x4481) x4485 x4484)
+(or (not x4475) (not x4473) (not x4465) x4483)
+(or (not x4484) x4485 x4481)
+(or (not x4476) (not x4473) (not x4465) x4483)
+(or (not x4482) (not x4479))
+(or (not x4474) (not x4465) x4483)
+(or (not x4482) x4481 x4479)
+(or (not x4466) x4483)
+(or (not x4479) x4482 x4481)
+(or (not x4476) (not x4475))
+(or (not x4481) x4482 x4479)
+(or (not x3816) x4476 x3713 x2292)
+(or (not x4480) (not x4477))
+(or (not x4476) (not x3816) (not x2292) x3713)
+(or (not x4480) x4479 x4477)
+(or (not x4476) (not x3713) x3816 x2292)
+(or (not x4477) x4480 x4479)
+(or (not x3713) (not x2292) x4476 x3816)
+(or (not x4479) x4480 x4477)
+(or (not x3815) x4476 x3712 x2292)
+(or (not x4478) x4477)
+(or (not x4476) (not x3815) (not x2292) x3712)
+(or (not x4477) x4478)
+(or (not x4476) (not x3712) x3815 x2292)
+(or (not x4449) (not x4437) (not x2234))
+(or (not x3712) (not x2292) x4476 x3815)
+(or (not x4449) (not x4437))
+(or (not x3814) x4476 x3711 x2292)
+(or (not x4449) (not x4434) (not x2236))
+(or (not x4476) (not x3814) (not x2292) x3711)
+(or (not x4449) (not x4434) x722)
+(or (not x4476) (not x3711) x3814 x2292)
+(or (not x4449) (not x4432) (not x2237))
+(or (not x3711) (not x2292) x4476 x3814)
+(or (not x4449) (not x4432) x715)
+(or (not x3813) x4476 x3710 x2292)
+(or (not x4449) (not x4430) (not x2238))
+(or (not x4476) (not x3813) (not x2292) x3710)
+(or (not x4449) (not x4430) x707)
+(or (not x4476) (not x3710) x3813 x2292)
+(or (not x4449) (not x4428) x699)
+(or (not x3710) (not x2292) x4476 x3813)
+(or (not x4449) x4437 x4434 x4432 x4430 x4428)
+(or (not x3812) x4476 x3709 x2292)
+(or (not x4449) (not x4437))
+(or (not x4476) (not x3812) (not x2292) x3709)
+(or (not x4449) (not x4424))
+(or (not x4476) (not x3709) x3812 x2292)
+(or (not x4449) (not x4410))
+(or (not x3709) (not x2292) x4476 x3812)
+(or (not x4449) (not x4396))
+(or (not x3815) (not x3712) x4475 x3816 x3713)
+(or (not x4437) (not x4424) (not x2234))
+(or (not x3814) (not x3711) x4475 x3815 x3712)
+(or (not x4437) (not x4424))
+(or (not x3813) (not x3710) x4475 x3814 x3711)
+(or (not x4437) (not x4420) (not x2236))
+(or (not x3812) (not x3709) x4475 x3813 x3710)
+(or (not x4437) (not x4420) x722)
+(or x4475 x3812 x3709)
+(or (not x4437) (not x4418) (not x2237))
+(or (not x3816) (not x3713) x4475)
+(or (not x4437) (not x4418) x715)
+(or (not x4475) (not x3713) x3816)
+(or (not x4437) (not x4415) (not x2238))
+(or (not x4475) (not x3816) x3713)
+(or (not x4437) (not x4415) x707)
+(or (not x4475) (not x3712) x3815)
+(or (not x4437) (not x4412) x699)
+(or (not x4475) (not x3815) x3712)
+(or (not x4437) x4424 x4420 x4418 x4415 x4412)
+(or (not x4475) (not x3711) x3814)
+(or (not x4437) (not x4424))
+(or (not x4475) (not x3814) x3711)
+(or (not x4437) (not x4410))
+(or (not x4475) (not x3710) x3813)
+(or (not x4437) (not x4396))
+(or (not x4475) (not x3813) x3710)
+(or (not x4424) (not x4410) (not x2234))
+(or (not x4475) (not x3709) x3812)
+(or (not x4424) (not x4410))
+(or (not x4475) (not x3812) x3709)
+(or (not x4424) (not x4404) (not x2236))
+(or (not x52) x4474 x4472 x3705)
+(or (not x4424) (not x4404) x722)
+(or (not x4474) (not x3705) (not x52) x4472)
+(or (not x4424) (not x4402) (not x2237))
+(or (not x4474) x4472 x3705 x52)
+(or (not x4424) (not x4402) x715)
+(or (not x3705) x4474 x4472 x52)
+(or (not x4424) (not x4400) (not x2238))
+(or (not x4472) (not x50) x4474 x4471 x3704)
+(or (not x4424) (not x4400) x707)
+(or (not x4474) (not x4472) (not x3704) (not x50) x4471)
+(or (not x4424) (not x4398) x699)
+(or (not x4474) (not x4472) x4471 x3704 x50)
+(or (not x4424) x4410 x4404 x4402 x4400 x4398)
+(or (not x4472) (not x3704) x4474 x4471 x50)
+(or (not x4424) (not x4410))
+(or (not x4471) (not x48) x4474 x4470 x3702)
+(or (not x4424) (not x4396))
+(or (not x4474) (not x4471) (not x3702) (not x48) x4470)
+(or (not x4410) (not x4396) (not x2234))
+(or (not x4474) (not x4471) x4470 x3702 x48)
+(or (not x4410) (not x4396))
+(or (not x4471) (not x3702) x4474 x4470 x48)
+(or (not x4410) (not x4393) (not x2236))
+(or (not x4470) (not x46) x4474 x4469 x3700)
+(or (not x4410) (not x4393) x722)
+(or (not x4474) (not x4470) (not x3700) (not x46) x4469)
+(or (not x4410) (not x4391) (not x2237))
+(or (not x4474) (not x4470) x4469 x3700 x46)
+(or (not x4410) (not x4391) x715)
+(or (not x4470) (not x3700) x4474 x4469 x46)
+(or (not x4410) (not x4389) (not x2238))
+(or (not x4469) (not x44) x4474 x4468 x3698)
+(or (not x4410) (not x4389) x707)
+(or (not x4474) (not x4469) (not x3698) (not x44) x4468)
+(or (not x4410) (not x4387) x699)
+(or (not x4474) (not x4469) x4468 x3698 x44)
+(or (not x4410) x4396 x4393 x4391 x4389 x4387)
+(or (not x4469) (not x3698) x4474 x4468 x44)
+(or (not x4410) (not x4396))
+(or (not x4468) (not x149) x4474 x4467 x3696)
+(or (not x4396) (not x2235))
+(or (not x4474) (not x4468) (not x3696) (not x149) x4467)
+(or (not x4396) x728)
+(or (not x4474) (not x4468) x4467 x3696 x149)
+(or (not x4396) (not x4385) (not x2236))
+(or (not x4468) (not x3696) x4474 x4467 x149)
+(or (not x4396) (not x4385) x722)
+(or (not x4474) (not x4473))
+(or (not x4396) (not x4384) (not x2237))
+(or (not x4467) x4473)
+(or (not x4396) (not x4384) x715)
+(or (not x4473) x4467)
+(or (not x4396) (not x4382) (not x2238))
+(or x4472 x3808 x3705)
+(or (not x4396) (not x4382) x707)
+(or (not x3808) (not x3705) x4472)
+(or (not x4396) (not x4380) x699)
+(or (not x4472) (not x3705) x3808)
+(or (not x2234) x4449 x4437 x4424 x4410 x4396)
+(or (not x4472) (not x3808) x3705)
+(or (not x4446) (not x4437) (not x2234))
+(or (not x4472) x4471 x3807 x3704)
+(or (not x4446) (not x4437) x733)
+(or (not x4472) (not x3807) (not x3704) x4471)
+(or (not x4471) (not x3704) x3807)
+(or (not x4471) (not x3807) x3704)
+(or (not x4446) (not x4434) (not x2236))
+(or (not x4471) x4472)
+(or (not x4446) (not x4434))
+(or (not x4471) x4470 x3805 x3702)
+(or (not x4446) (not x4432) (not x2237))
+(or (not x4471) (not x3805) (not x3702) x4470)
+(or (not x4446) (not x4432) x712)
+(or (not x4470) (not x3702) x3805)
+(or (not x4446) (not x4430) (not x2238))
+(or (not x4470) (not x3805) x3702)
+(or (not x4446) (not x4430) x702)
+(or (not x4470) x4471)
+(or (not x4446) (not x4428) x697)
+(or (not x4470) x4469 x3803 x3700)
+(or (not x4446) x4437 x4434 x4432 x4430 x4428)
+(or (not x4470) (not x3803) (not x3700) x4469)
+(or (not x4446) (not x4434))
+(or (not x4469) (not x3700) x3803)
+(or (not x4446) (not x4420))
+(or (not x4469) (not x3803) x3700)
+(or (not x4446) (not x4404))
+(or (not x4469) x4470)
+(or (not x4446) (not x4393))
+(or (not x4469) x4468 x3801 x3698)
+(or (not x4446) (not x4385))
+(or (not x4469) (not x3801) (not x3698) x4468)
+(or (not x4434) (not x4424) (not x2234))
+(or (not x4468) (not x3698) x3801)
+(or (not x4434) (not x4424) x733)
+(or (not x4468) (not x3801) x3698)
+(or (not x4468) x4469)
+(or (not x4468) x4467 x3799 x3696)
+(or (not x4434) (not x4420) (not x2236))
+(or (not x4468) (not x3799) (not x3696) x4467)
+(or (not x4434) (not x4420))
+(or (not x4467) (not x3696) x3799)
+(or (not x4434) (not x4418) (not x2237))
+(or (not x4467) (not x3799) x3696)
+(or (not x4434) (not x4418) x712)
+(or (not x4467) x4468)
+(or (not x4434) (not x4415) (not x2238))
+(or (not x4466) (not x2234) (not x2223))
+(or (not x4434) (not x4415) x702)
+(or (not x2234) (not x2223) x4465)
+(or (not x4434) (not x4412) x697)
+(or (not x4466) (not x2234) (not x2224) x95)
+(or (not x4434) x4424 x4420 x4418 x4415 x4412)
+(or (not x2234) (not x2224) (not x95) x4466)
+(or (not x4434) (not x4420))
+(or (not x4465) (not x2234) (not x2224))
+(or (not x4434) (not x4404))
+(or (not x4466) (not x2234) (not x2225) x94)
+(or (not x4434) (not x4393))
+(or (not x2234) (not x2225) (not x94) x4466)
+(or (not x4434) (not x4385))
+(or (not x4465) (not x2234) (not x2225))
+(or (not x4420) (not x4410) (not x2234))
+(or (not x4466) (not x2234) (not x2226) x92)
+(or (not x4420) (not x4410) x733)
+(or (not x2234) (not x2226) (not x92) x4466)
+(or (not x4465) (not x2234) (not x2226))
+(or (not x4466) (not x2234) (not x2227) x91)
+(or (not x4420) (not x4404) (not x2236))
+(or (not x2234) (not x2227) (not x91) x4466)
+(or (not x4420) (not x4404))
+(or (not x4465) (not x2234) (not x2227))
+(or (not x4420) (not x4402) (not x2237))
+(or (not x4466) (not x2235) (not x2223) x89)
+(or (not x4420) (not x4402) x712)
+(or (not x2235) (not x2223) (not x89) x4466)
+(or (not x4420) (not x4400) (not x2238))
+(or (not x4465) (not x2235) (not x2223))
+(or (not x4420) (not x4400) x702)
+(or (not x4466) (not x2235) (not x2224))
+(or (not x4420) (not x4398) x697)
+(or (not x2235) (not x2224) x4465)
+(or (not x4420) x4410 x4404 x4402 x4400 x4398)
+(or (not x4466) (not x2235) (not x2225) x88)
+(or (not x4420) (not x4404))
+(or (not x2235) (not x2225) (not x88) x4466)
+(or (not x4420) (not x4393))
+(or (not x4465) (not x2235) (not x2225))
+(or (not x4420) (not x4385))
+(or (not x4466) (not x2235) (not x2226) x87)
+(or (not x4404) (not x4396) (not x2234))
+(or (not x2235) (not x2226) (not x87) x4466)
+(or (not x4404) (not x4396) x733)
+(or (not x4465) (not x2235) (not x2226))
+(or (not x4466) (not x2235) (not x2227) x86)
+(or (not x2235) (not x2227) (not x86) x4466)
+(or (not x4404) (not x4393) (not x2236))
+(or (not x4465) (not x2235) (not x2227))
+(or (not x4404) (not x4393))
+(or (not x4466) (not x2236) (not x2223) x82)
+(or (not x4404) (not x4391) (not x2237))
+(or (not x2236) (not x2223) (not x82) x4466)
+(or (not x4404) (not x4391) x712)
+(or (not x4465) (not x2236) (not x2223))
+(or (not x4404) (not x4389) (not x2238))
+(or (not x4466) (not x2236) (not x2224) x81)
+(or (not x4404) (not x4389) x702)
+(or (not x2236) (not x2224) (not x81) x4466)
+(or (not x4404) (not x4387) x697)
+(or (not x4465) (not x2236) (not x2224))
+(or (not x4404) x4396 x4393 x4391 x4389 x4387)
+(or (not x4466) (not x2236) (not x2225))
+(or (not x4404) (not x4393))
+(or (not x2236) (not x2225) x4465)
+(or (not x4404) (not x4385))
+(or (not x4466) (not x2236) (not x2226) x79)
+(or (not x4393) (not x2235))
+(or (not x2236) (not x2226) (not x79) x4466)
+(or (not x4393) x727)
+(or (not x4465) (not x2236) (not x2226))
+(or (not x4393) (not x4385) (not x2236))
+(or (not x4466) (not x2236) (not x2227) x77)
+(or (not x4393) (not x4385))
+(or (not x2236) (not x2227) (not x77) x4466)
+(or (not x4393) (not x4384) (not x2237))
+(or (not x4465) (not x2236) (not x2227))
+(or (not x4393) (not x4384) x712)
+(or (not x4466) (not x2237) (not x2223) x73)
+(or (not x4393) (not x4382) (not x2238))
+(or (not x2237) (not x2223) (not x73) x4466)
+(or (not x4393) (not x4382) x702)
+(or (not x4465) (not x2237) (not x2223))
+(or (not x4393) (not x4380) x697)
+(or (not x4466) (not x2237) (not x2224) x67)
+(or (not x4393) (not x4385))
+(or (not x2237) (not x2224) (not x67) x4466)
+(or (not x2236) x4446 x4434 x4420 x4404 x4393 x4385)
+(or (not x4465) (not x2237) (not x2224))
+(or (not x4444) (not x4437) (not x2234))
+(or (not x4466) (not x2237) (not x2225) x66)
+(or (not x4444) (not x4437) x732)
+(or (not x2237) (not x2225) (not x66) x4466)
+(or (not x4465) (not x2237) (not x2225))
+(or (not x4466) (not x2237) (not x2226))
+(or (not x4444) (not x4434) (not x2236))
+(or (not x2237) (not x2226) x4465)
+(or (not x4444) (not x4434) x720)
+(or (not x4466) (not x2237) (not x2227) x65)
+(or (not x4444) (not x4432) (not x2237))
+(or (not x2237) (not x2227) (not x65) x4466)
+(or (not x4444) (not x4432))
+(or (not x4465) (not x2237) (not x2227))
+(or (not x4444) (not x4430) (not x2238))
+(or (not x4466) (not x2238) (not x2223) x58)
+(or (not x4444) (not x4430) x701)
+(or (not x2238) (not x2223) (not x58) x4466)
+(or (not x4444) (not x4428) x696)
+(or (not x4465) (not x2238) (not x2223))
+(or (not x4444) x4437 x4434 x4432 x4430 x4428)
+(or (not x4466) (not x2238) (not x2224) x57)
+(or (not x4444) (not x4432))
+(or (not x2238) (not x2224) (not x57) x4466)
+(or (not x4444) (not x4418))
+(or (not x4465) (not x2238) (not x2224))
+(or (not x4444) (not x4402))
+(or (not x4466) (not x2238) (not x2225) x56)
+(or (not x4444) (not x4391))
+(or (not x2238) (not x2225) (not x56) x4466)
+(or (not x4444) (not x4384))
+(or (not x4465) (not x2238) (not x2225))
+(or (not x4432) (not x4424) (not x2234))
+(or (not x4466) (not x2238) (not x2226) x55)
+(or (not x4432) (not x4424) x732)
+(or (not x2238) (not x2226) (not x55) x4466)
+(or (not x4465) (not x2238) (not x2226))
+(or (not x4466) (not x2238) (not x2227))
+(or (not x4432) (not x4420) (not x2236))
+(or (not x2238) (not x2227) x4465)
+(or (not x4432) (not x4420) x720)
+(or (not x4038) (not x69) (not x10) x4464)
+(or (not x4432) (not x4418) (not x2237))
+(or (not x4464) (not x4460) (not x4452) x4463 x4462)
+(or (not x4432) (not x4418))
+(or (not x4464) (not x4452) x4461 x4460)
+(or (not x4432) (not x4415) (not x2238))
+(or (not x4464) x4453 x4452)
+(or (not x4432) (not x4415) x701)
+(or (not x4462) (not x4460) (not x4452) x4464)
+(or (not x4432) (not x4412) x696)
+(or (not x4463) (not x4460) (not x4452) x4464)
+(or (not x4432) x4424 x4420 x4418 x4415 x4412)
+(or (not x4461) (not x4452) x4464)
+(or (not x4432) (not x4418))
+(or (not x4453) x4464)
+(or (not x4432) (not x4402))
+(or (not x4463) (not x4462))
+(or (not x4432) (not x4391))
+(or (not x3816) x4463 x3689 x2292)
+(or (not x4432) (not x4384))
+(or (not x4463) (not x3816) (not x2292) x3689)
+(or (not x4418) (not x4410) (not x2234))
+(or (not x4463) (not x3689) x3816 x2292)
+(or (not x4418) (not x4410) x732)
+(or (not x3689) (not x2292) x4463 x3816)
+(or (not x3815) x4463 x3687 x2292)
+(or (not x4463) (not x3815) (not x2292) x3687)
+(or (not x4418) (not x4404) (not x2236))
+(or (not x4463) (not x3687) x3815 x2292)
+(or (not x4418) (not x4404) x720)
+(or (not x3687) (not x2292) x4463 x3815)
+(or (not x4418) (not x4402) (not x2237))
+(or (not x3814) x4463 x3685 x2292)
+(or (not x4418) (not x4402))
+(or (not x4463) (not x3814) (not x2292) x3685)
+(or (not x4418) (not x4400) (not x2238))
+(or (not x4463) (not x3685) x3814 x2292)
+(or (not x4418) (not x4400) x701)
+(or (not x3685) (not x2292) x4463 x3814)
+(or (not x4418) (not x4398) x696)
+(or (not x3813) x4463 x3683 x2292)
+(or (not x4418) x4410 x4404 x4402 x4400 x4398)
+(or (not x4463) (not x3813) (not x2292) x3683)
+(or (not x4418) (not x4402))
+(or (not x4463) (not x3683) x3813 x2292)
+(or (not x4418) (not x4391))
+(or (not x3683) (not x2292) x4463 x3813)
+(or (not x4418) (not x4384))
+(or (not x3812) x4463 x3681 x2292)
+(or (not x4402) (not x4396) (not x2234))
+(or (not x4463) (not x3812) (not x2292) x3681)
+(or (not x4402) (not x4396) x732)
+(or (not x4463) (not x3681) x3812 x2292)
+(or (not x3681) (not x2292) x4463 x3812)
+(or (not x3815) (not x3687) x4462 x3816 x3689)
+(or (not x4402) (not x4393) (not x2236))
+(or (not x3814) (not x3685) x4462 x3815 x3687)
+(or (not x4402) (not x4393) x720)
+(or (not x3813) (not x3683) x4462 x3814 x3685)
+(or (not x4402) (not x4391) (not x2237))
+(or (not x3812) (not x3681) x4462 x3813 x3683)
+(or (not x4402) (not x4391))
+(or x4462 x3812 x3681)
+(or (not x4402) (not x4389) (not x2238))
+(or (not x3816) (not x3689) x4462)
+(or (not x4402) (not x4389) x701)
+(or (not x4462) (not x3689) x3816)
+(or (not x4402) (not x4387) x696)
+(or (not x4462) (not x3816) x3689)
+(or (not x4402) x4396 x4393 x4391 x4389 x4387)
+(or (not x4462) (not x3687) x3815)
+(or (not x4402) (not x4391))
+(or (not x4462) (not x3815) x3687)
+(or (not x4402) (not x4384))
+(or (not x4462) (not x3685) x3814)
+(or (not x4391) (not x2235))
+(or (not x4462) (not x3814) x3685)
+(or (not x4391) x726)
+(or (not x4462) (not x3683) x3813)
+(or (not x4391) (not x4385) (not x2236))
+(or (not x4462) (not x3813) x3683)
+(or (not x4391) (not x4385) x720)
+(or (not x4462) (not x3681) x3812)
+(or (not x4391) (not x4384) (not x2237))
+(or (not x4462) (not x3812) x3681)
+(or (not x4391) (not x4384))
+(or (not x52) x4461 x4459 x3676)
+(or (not x4391) (not x4382) (not x2238))
+(or (not x4461) (not x3676) (not x52) x4459)
+(or (not x4391) (not x4382) x701)
+(or (not x4461) x4459 x3676 x52)
+(or (not x4391) (not x4380) x696)
+(or (not x3676) x4461 x4459 x52)
+(or (not x4391) (not x4384))
+(or (not x4459) (not x50) x4461 x4458 x3674)
+(or (not x2237) x4444 x4432 x4418 x4402 x4391 x4384)
+(or (not x4461) (not x4459) (not x3674) (not x50) x4458)
+(or (not x4441) (not x4437) (not x2234))
+(or (not x4461) (not x4459) x4458 x3674 x50)
+(or (not x4441) (not x4437) x731)
+(or (not x4459) (not x3674) x4461 x4458 x50)
+(or (not x4458) (not x48) x4461 x4457 x3671)
+(or (not x4461) (not x4458) (not x3671) (not x48) x4457)
+(or (not x4441) (not x4434) (not x2236))
+(or (not x4461) (not x4458) x4457 x3671 x48)
+(or (not x4441) (not x4434) x719)
+(or (not x4458) (not x3671) x4461 x4457 x48)
+(or (not x4441) (not x4432) (not x2237))
+(or (not x4457) (not x46) x4461 x4456 x3668)
+(or (not x4441) (not x4432) x710)
+(or (not x4461) (not x4457) (not x3668) (not x46) x4456)
+(or (not x4441) (not x4430) (not x2238))
+(or (not x4461) (not x4457) x4456 x3668 x46)
+(or (not x4441) (not x4430))
+(or (not x4457) (not x3668) x4461 x4456 x46)
+(or (not x4441) (not x4428) x695)
+(or (not x4456) (not x44) x4461 x4455 x3665)
+(or (not x4441) x4437 x4434 x4432 x4430 x4428)
+(or (not x4461) (not x4456) (not x3665) (not x44) x4455)
+(or (not x4441) (not x4430))
+(or (not x4461) (not x4456) x4455 x3665 x44)
+(or (not x4441) (not x4415))
+(or (not x4456) (not x3665) x4461 x4455 x44)
+(or (not x4441) (not x4400))
+(or (not x4455) (not x149) x4461 x4454 x3662)
+(or (not x4441) (not x4389))
+(or (not x4461) (not x4455) (not x3662) (not x149) x4454)
+(or (not x4441) (not x4382))
+(or (not x4461) (not x4455) x4454 x3662 x149)
+(or (not x4430) (not x4424) (not x2234))
+(or (not x4455) (not x3662) x4461 x4454 x149)
+(or (not x4430) (not x4424) x731)
+(or (not x4461) (not x4460))
+(or (not x4454) x4460)
+(or (not x4460) x4454)
+(or (not x4430) (not x4420) (not x2236))
+(or x4459 x3808 x3676)
+(or (not x4430) (not x4420) x719)
+(or (not x3808) (not x3676) x4459)
+(or (not x4430) (not x4418) (not x2237))
+(or (not x4459) (not x3676) x3808)
+(or (not x4430) (not x4418) x710)
+(or (not x4459) (not x3808) x3676)
+(or (not x4430) (not x4415) (not x2238))
+(or (not x4459) x4458 x3807 x3674)
+(or (not x4430) (not x4415))
+(or (not x4459) (not x3807) (not x3674) x4458)
+(or (not x4430) (not x4412) x695)
+(or (not x4458) (not x3674) x3807)
+(or (not x4430) x4424 x4420 x4418 x4415 x4412)
+(or (not x4458) (not x3807) x3674)
+(or (not x4430) (not x4415))
+(or (not x4458) x4459)
+(or (not x4430) (not x4400))
+(or (not x4458) x4457 x3805 x3671)
+(or (not x4430) (not x4389))
+(or (not x4458) (not x3805) (not x3671) x4457)
+(or (not x4430) (not x4382))
+(or (not x4457) (not x3671) x3805)
+(or (not x4415) (not x4410) (not x2234))
+(or (not x4457) (not x3805) x3671)
+(or (not x4415) (not x4410) x731)
+(or (not x4457) x4458)
+(or (not x4457) x4456 x3803 x3668)
+(or (not x4457) (not x3803) (not x3668) x4456)
+(or (not x4415) (not x4404) (not x2236))
+(or (not x4456) (not x3668) x3803)
+(or (not x4415) (not x4404) x719)
+(or (not x4456) (not x3803) x3668)
+(or (not x4415) (not x4402) (not x2237))
+(or (not x4456) x4457)
+(or (not x4415) (not x4402) x710)
+(or (not x4456) x4455 x3801 x3665)
+(or (not x4415) (not x4400) (not x2238))
+(or (not x4456) (not x3801) (not x3665) x4455)
+(or (not x4415) (not x4400))
+(or (not x4455) (not x3665) x3801)
+(or (not x4415) (not x4398) x695)
+(or (not x4455) (not x3801) x3665)
+(or (not x4415) x4410 x4404 x4402 x4400 x4398)
+(or (not x4455) x4456)
+(or (not x4415) (not x4400))
+(or (not x4455) x4454 x3799 x3662)
+(or (not x4415) (not x4389))
+(or (not x4455) (not x3799) (not x3662) x4454)
+(or (not x4415) (not x4382))
+(or (not x4454) (not x3662) x3799)
+(or (not x4400) (not x4396) (not x2234))
+(or (not x4454) (not x3799) x3662)
+(or (not x4400) (not x4396) x731)
+(or (not x4454) x4455)
+(or (not x4453) (not x2234) (not x2217))
+(or (not x2234) (not x2217) x4452)
+(or (not x4400) (not x4393) (not x2236))
+(or (not x4453) (not x2234) (not x2218) x95)
+(or (not x4400) (not x4393) x719)
+(or (not x2234) (not x2218) (not x95) x4453)
+(or (not x4400) (not x4391) (not x2237))
+(or (not x4452) (not x2234) (not x2218))
+(or (not x4400) (not x4391) x710)
+(or (not x4453) (not x2234) (not x2219) x94)
+(or (not x4400) (not x4389) (not x2238))
+(or (not x2234) (not x2219) (not x94) x4453)
+(or (not x4400) (not x4389))
+(or (not x4452) (not x2234) (not x2219))
+(or (not x4400) (not x4387) x695)
+(or (not x4453) (not x2234) (not x2220) x92)
+(or (not x4400) x4396 x4393 x4391 x4389 x4387)
+(or (not x2234) (not x2220) (not x92) x4453)
+(or (not x4400) (not x4389))
+(or (not x4452) (not x2234) (not x2220))
+(or (not x4400) (not x4382))
+(or (not x4453) (not x2234) (not x2221) x91)
+(or (not x4389) (not x2235))
+(or (not x2234) (not x2221) (not x91) x4453)
+(or (not x4389) x724)
+(or (not x4452) (not x2234) (not x2221))
+(or (not x4389) (not x4385) (not x2236))
+(or (not x4453) (not x2235) (not x2217) x89)
+(or (not x4389) (not x4385) x719)
+(or (not x2235) (not x2217) (not x89) x4453)
+(or (not x4389) (not x4384) (not x2237))
+(or (not x4452) (not x2235) (not x2217))
+(or (not x4389) (not x4384) x710)
+(or (not x4453) (not x2235) (not x2218))
+(or (not x4389) (not x4382) (not x2238))
+(or (not x2235) (not x2218) x4452)
+(or (not x4389) (not x4382))
+(or (not x4453) (not x2235) (not x2219) x88)
+(or (not x4389) (not x4380) x695)
+(or (not x2235) (not x2219) (not x88) x4453)
+(or (not x4389) (not x4382))
+(or (not x4452) (not x2235) (not x2219))
+(or (not x2238) x4441 x4430 x4415 x4400 x4389 x4382)
+(or (not x4453) (not x2235) (not x2220) x87)
+(or (not x4439) (not x4437) (not x2234))
+(or (not x2235) (not x2220) (not x87) x4453)
+(or (not x4439) (not x4437) x729)
+(or (not x4452) (not x2235) (not x2220))
+(or (not x4453) (not x2235) (not x2221) x86)
+(or (not x2235) (not x2221) (not x86) x4453)
+(or (not x4439) (not x4434) (not x2236))
+(or (not x4452) (not x2235) (not x2221))
+(or (not x4439) (not x4434) x717)
+(or (not x4453) (not x2236) (not x2217) x82)
+(or (not x4439) (not x4432) (not x2237))
+(or (not x2236) (not x2217) (not x82) x4453)
+(or (not x4439) (not x4432) x709)
+(or (not x4452) (not x2236) (not x2217))
+(or (not x4439) (not x4430) (not x2238))
+(or (not x4453) (not x2236) (not x2218) x81)
+(or (not x4439) (not x4430) x700)
+(or (not x2236) (not x2218) (not x81) x4453)
+(or (not x4439) (not x4428))
+(or (not x4452) (not x2236) (not x2218))
+(or (not x4439) x4437 x4434 x4432 x4430 x4428)
+(or (not x4453) (not x2236) (not x2219))
+(or (not x4439) (not x4428))
+(or (not x2236) (not x2219) x4452)
+(or (not x4439) (not x4412))
+(or (not x4453) (not x2236) (not x2220) x79)
+(or (not x4439) (not x4398))
+(or (not x2236) (not x2220) (not x79) x4453)
+(or (not x4439) (not x4387))
+(or (not x4452) (not x2236) (not x2220))
+(or (not x4439) (not x4380))
+(or (not x4453) (not x2236) (not x2221) x77)
+(or (not x4428) (not x4424) (not x2234))
+(or (not x2236) (not x2221) (not x77) x4453)
+(or (not x4428) (not x4424) x729)
+(or (not x4452) (not x2236) (not x2221))
+(or (not x4453) (not x2237) (not x2217) x73)
+(or (not x2237) (not x2217) (not x73) x4453)
+(or (not x4428) (not x4420) (not x2236))
+(or (not x4452) (not x2237) (not x2217))
+(or (not x4428) (not x4420) x717)
+(or (not x4453) (not x2237) (not x2218) x67)
+(or (not x4428) (not x4418) (not x2237))
+(or (not x2237) (not x2218) (not x67) x4453)
+(or (not x4428) (not x4418) x709)
+(or (not x4452) (not x2237) (not x2218))
+(or (not x4428) (not x4415) (not x2238))
+(or (not x4453) (not x2237) (not x2219) x66)
+(or (not x4428) (not x4415) x700)
+(or (not x2237) (not x2219) (not x66) x4453)
+(or (not x4428) (not x4412))
+(or (not x4452) (not x2237) (not x2219))
+(or (not x4428) x4424 x4420 x4418 x4415 x4412)
+(or (not x4453) (not x2237) (not x2220))
+(or (not x4428) (not x4412))
+(or (not x2237) (not x2220) x4452)
+(or (not x4428) (not x4398))
+(or (not x4453) (not x2237) (not x2221) x65)
+(or (not x4428) (not x4387))
+(or (not x2237) (not x2221) (not x65) x4453)
+(or (not x4428) (not x4380))
+(or (not x4452) (not x2237) (not x2221))
+(or (not x4412) (not x4410) (not x2234))
+(or (not x4453) (not x2238) (not x2217) x58)
+(or (not x4412) (not x4410) x729)
+(or (not x2238) (not x2217) (not x58) x4453)
+(or (not x4452) (not x2238) (not x2217))
+(or (not x4453) (not x2238) (not x2218) x57)
+(or (not x4412) (not x4404) (not x2236))
+(or (not x2238) (not x2218) (not x57) x4453)
+(or (not x4412) (not x4404) x717)
+(or (not x4452) (not x2238) (not x2218))
+(or (not x4412) (not x4402) (not x2237))
+(or (not x4453) (not x2238) (not x2219) x56)
+(or (not x4412) (not x4402) x709)
+(or (not x2238) (not x2219) (not x56) x4453)
+(or (not x4412) (not x4400) (not x2238))
+(or (not x4452) (not x2238) (not x2219))
+(or (not x4412) (not x4400) x700)
+(or (not x4453) (not x2238) (not x2220) x55)
+(or (not x4412) (not x4398))
+(or (not x2238) (not x2220) (not x55) x4453)
+(or (not x4412) x4410 x4404 x4402 x4400 x4398)
+(or (not x4452) (not x2238) (not x2220))
+(or (not x4412) (not x4398))
+(or (not x4453) (not x2238) (not x2221))
+(or (not x4412) (not x4387))
+(or (not x2238) (not x2221) x4452)
+(or (not x4412) (not x4380))
+(or (not x4451) (not x4425) (not x4377) x4450 x4442)
+(or (not x4398) (not x4396) (not x2234))
+(or (not x4451) (not x4377) x4426 x4425)
+(or (not x4398) (not x4396) x729)
+(or (not x4451) x4378 x4377)
+(or (not x4442) (not x4425) (not x4377) x4451)
+(or (not x4450) (not x4425) (not x4377) x4451)
+(or (not x4398) (not x4393) (not x2236))
+(or (not x4426) (not x4377) x4451)
+(or (not x4398) (not x4393) x717)
+(or (not x4378) x4451)
+(or (not x4398) (not x4391) (not x2237))
+(or (not x4450) (not x4442))
+(or (not x4398) (not x4391) x709)
+(or (not x3816) x4450 x3688 x2292)
+(or (not x4398) (not x4389) (not x2238))
+(or (not x4450) (not x3816) (not x2292) x3688)
+(or (not x4398) (not x4389) x700)
+(or (not x4450) (not x3688) x3816 x2292)
+(or (not x4398) (not x4387))
+(or (not x3688) (not x2292) x4450 x3816)
+(or (not x4398) x4396 x4393 x4391 x4389 x4387)
+(or (not x3815) x4450 x3686 x2292)
+(or (not x4398) (not x4387))
+(or (not x4450) (not x3815) (not x2292) x3686)
+(or (not x4398) (not x4380))
+(or (not x4450) (not x3686) x3815 x2292)
+(or (not x4387) (not x2235))
+(or (not x3686) (not x2292) x4450 x3815)
+(or (not x4387) x723)
+(or (not x3814) x4450 x3684 x2292)
+(or (not x4387) (not x4385) (not x2236))
+(or (not x4450) (not x3814) (not x2292) x3684)
+(or (not x4387) (not x4385) x717)
+(or (not x4450) (not x3684) x3814 x2292)
+(or (not x4387) (not x4384) (not x2237))
+(or (not x3684) (not x2292) x4450 x3814)
+(or (not x4387) (not x4384) x709)
+(or (not x3813) x4450 x3682 x2292)
+(or (not x4387) (not x4382) (not x2238))
+(or (not x4450) (not x3813) (not x2292) x3682)
+(or (not x4387) (not x4382) x700)
+(or (not x4450) (not x3682) x3813 x2292)
+(or (not x4387) (not x4380))
+(or (not x3682) (not x2292) x4450 x3813)
+(or (not x4387) (not x4380))
+(or (not x3812) x4450 x3680 x2292)
+(or (not x4449) (not x4447))
+(or (not x4450) (not x3812) (not x2292) x3680)
+(or (not x4449) x4448 x4447)
+(or (not x4450) (not x3680) x3812 x2292)
+(or (not x4447) x4449 x4448)
+(or (not x3680) (not x2292) x4450 x3812)
+(or (not x4448) x4449 x4447)
+(or (not x3815) (not x3686) x4442 x3816 x3688)
+(or (not x3814) (not x3684) x4442 x3815 x3686)
+(or (not x3813) (not x3682) x4442 x3814 x3684)
+(or (not x4445) x4447)
+(or (not x3812) (not x3680) x4442 x3813 x3682)
+(or (not x4447) x4445)
+(or x4442 x3812 x3680)
+(or (not x4446) (not x4443))
+(or (not x3816) (not x3688) x4442)
+(or (not x4446) x4445 x4443)
+(or (not x4442) (not x3688) x3816)
+(or (not x4443) x4446 x4445)
+(or (not x4442) (not x3816) x3688)
+(or (not x4445) x4446 x4443)
+(or (not x4442) (not x3686) x3815)
+(or (not x4444) (not x4440))
+(or (not x4442) (not x3815) x3686)
+(or (not x4444) x4443 x4440)
+(or (not x4442) (not x3684) x3814)
+(or (not x4440) x4444 x4443)
+(or (not x4442) (not x3814) x3684)
+(or (not x4443) x4444 x4440)
+(or (not x4442) (not x3682) x3813)
+(or (not x4441) (not x4438))
+(or (not x4442) (not x3813) x3682)
+(or (not x4441) x4440 x4438)
+(or (not x4442) (not x3680) x3812)
+(or (not x4438) x4441 x4440)
+(or (not x4442) (not x3812) x3680)
+(or (not x4440) x4441 x4438)
+(or (not x52) x4426 x4421 x3675)
+(or (not x4439) x4438)
+(or (not x4426) (not x3675) (not x52) x4421)
+(or (not x4438) x4439)
+(or (not x4426) x4421 x3675 x52)
+(or (not x4437) (not x4435))
+(or (not x3675) x4426 x4421 x52)
+(or (not x4437) x4436 x4435)
+(or (not x4421) (not x50) x4426 x4416 x3673)
+(or (not x4435) x4437 x4436)
+(or (not x4426) (not x4421) (not x3673) (not x50) x4416)
+(or (not x4436) x4437 x4435)
+(or (not x4426) (not x4421) x4416 x3673 x50)
+(or (not x4421) (not x3673) x4426 x4416 x50)
+(or (not x4416) (not x48) x4426 x4413 x3670)
+(or (not x4433) x4435)
+(or (not x4426) (not x4416) (not x3670) (not x48) x4413)
+(or (not x4435) x4433)
+(or (not x4426) (not x4416) x4413 x3670 x48)
+(or (not x4434) (not x4431))
+(or (not x4416) (not x3670) x4426 x4413 x48)
+(or (not x4434) x4433 x4431)
+(or (not x4413) (not x46) x4426 x4408 x3667)
+(or (not x4431) x4434 x4433)
+(or (not x4426) (not x4413) (not x3667) (not x46) x4408)
+(or (not x4433) x4434 x4431)
+(or (not x4426) (not x4413) x4408 x3667 x46)
+(or (not x4432) (not x4429))
+(or (not x4413) (not x3667) x4426 x4408 x46)
+(or (not x4432) x4431 x4429)
+(or (not x4408) (not x44) x4426 x4406 x3664)
+(or (not x4429) x4432 x4431)
+(or (not x4426) (not x4408) (not x3664) (not x44) x4406)
+(or (not x4431) x4432 x4429)
+(or (not x4426) (not x4408) x4406 x3664 x44)
+(or (not x4430) (not x4427))
+(or (not x4408) (not x3664) x4426 x4406 x44)
+(or (not x4430) x4429 x4427)
+(or (not x4406) (not x149) x4426 x4405 x3661)
+(or (not x4427) x4430 x4429)
+(or (not x4426) (not x4406) (not x3661) (not x149) x4405)
+(or (not x4429) x4430 x4427)
+(or (not x4426) (not x4406) x4405 x3661 x149)
+(or (not x4428) x4427)
+(or (not x4406) (not x3661) x4426 x4405 x149)
+(or (not x4427) x4428)
+(or (not x4426) (not x4425))
+(or (not x4424) (not x4422))
+(or (not x4405) x4425)
+(or (not x4424) x4423 x4422)
+(or (not x4425) x4405)
+(or (not x4422) x4424 x4423)
+(or x4421 x3808 x3675)
+(or (not x4423) x4424 x4422)
+(or (not x3808) (not x3675) x4421)
+(or (not x4421) (not x3675) x3808)
+(or (not x4421) (not x3808) x3675)
+(or (not x4419) x4422)
+(or (not x4421) x4416 x3807 x3673)
+(or (not x4422) x4419)
+(or (not x4421) (not x3807) (not x3673) x4416)
+(or (not x4420) (not x4417))
+(or (not x4416) (not x3673) x3807)
+(or (not x4420) x4419 x4417)
+(or (not x4416) (not x3807) x3673)
+(or (not x4417) x4420 x4419)
+(or (not x4416) x4421)
+(or (not x4419) x4420 x4417)
+(or (not x4416) x4413 x3805 x3670)
+(or (not x4418) (not x4414))
+(or (not x4416) (not x3805) (not x3670) x4413)
+(or (not x4418) x4417 x4414)
+(or (not x4413) (not x3670) x3805)
+(or (not x4414) x4418 x4417)
+(or (not x4413) (not x3805) x3670)
+(or (not x4417) x4418 x4414)
+(or (not x4413) x4416)
+(or (not x4415) (not x4411))
+(or (not x4413) x4408 x3803 x3667)
+(or (not x4415) x4414 x4411)
+(or (not x4413) (not x3803) (not x3667) x4408)
+(or (not x4411) x4415 x4414)
+(or (not x4408) (not x3667) x3803)
+(or (not x4414) x4415 x4411)
+(or (not x4408) (not x3803) x3667)
+(or (not x4412) x4411)
+(or (not x4408) x4413)
+(or (not x4411) x4412)
+(or (not x4408) x4406 x3801 x3664)
+(or (not x4410) (not x4407))
+(or (not x4408) (not x3801) (not x3664) x4406)
+(or (not x4410) x4409 x4407)
+(or (not x4406) (not x3664) x3801)
+(or (not x4407) x4410 x4409)
+(or (not x4406) (not x3801) x3664)
+(or (not x4409) x4410 x4407)
+(or (not x4406) x4408)
+(or (not x4406) x4405 x3799 x3661)
+(or (not x4406) (not x3799) (not x3661) x4405)
+(or (not x4403) x4407)
+(or (not x4405) (not x3661) x3799)
+(or (not x4407) x4403)
+(or (not x4405) (not x3799) x3661)
+(or (not x4404) (not x4401))
+(or (not x4405) x4406)
+(or (not x4404) x4403 x4401)
+(or (not x4378) (not x2234) (not x2212))
+(or (not x4401) x4404 x4403)
+(or (not x2234) (not x2212) x4377)
+(or (not x4403) x4404 x4401)
+(or (not x4378) (not x2234) (not x2213) x95)
+(or (not x4402) (not x4399))
+(or (not x2234) (not x2213) (not x95) x4378)
+(or (not x4402) x4401 x4399)
+(or (not x4377) (not x2234) (not x2213))
+(or (not x4399) x4402 x4401)
+(or (not x4378) (not x2234) (not x2214) x94)
+(or (not x4401) x4402 x4399)
+(or (not x2234) (not x2214) (not x94) x4378)
+(or (not x4400) (not x4397))
+(or (not x4377) (not x2234) (not x2214))
+(or (not x4400) x4399 x4397)
+(or (not x4378) (not x2234) (not x2215) x92)
+(or (not x4397) x4400 x4399)
+(or (not x2234) (not x2215) (not x92) x4378)
+(or (not x4399) x4400 x4397)
+(or (not x4377) (not x2234) (not x2215))
+(or (not x4398) x4397)
+(or (not x4378) (not x2234) (not x2216) x91)
+(or (not x4397) x4398)
+(or (not x2234) (not x2216) (not x91) x4378)
+(or (not x4396) (not x4394))
+(or (not x4377) (not x2234) (not x2216))
+(or (not x4396) x4395 x4394)
+(or (not x4378) (not x2235) (not x2212) x89)
+(or (not x4394) x4396 x4395)
+(or (not x2235) (not x2212) (not x89) x4378)
+(or (not x4395) x4396 x4394)
+(or (not x4377) (not x2235) (not x2212))
+(or (not x4378) (not x2235) (not x2213))
+(or (not x2235) (not x2213) x4377)
+(or (not x4392) x4394)
+(or (not x4378) (not x2235) (not x2214) x88)
+(or (not x4394) x4392)
+(or (not x2235) (not x2214) (not x88) x4378)
+(or (not x4393) (not x4390))
+(or (not x4377) (not x2235) (not x2214))
+(or (not x4393) x4392 x4390)
+(or (not x4378) (not x2235) (not x2215) x87)
+(or (not x4390) x4393 x4392)
+(or (not x2235) (not x2215) (not x87) x4378)
+(or (not x4392) x4393 x4390)
+(or (not x4377) (not x2235) (not x2215))
+(or (not x4391) (not x4388))
+(or (not x4378) (not x2235) (not x2216) x86)
+(or (not x4391) x4390 x4388)
+(or (not x2235) (not x2216) (not x86) x4378)
+(or (not x4388) x4391 x4390)
+(or (not x4377) (not x2235) (not x2216))
+(or (not x4390) x4391 x4388)
+(or (not x4378) (not x2236) (not x2212) x82)
+(or (not x4389) (not x4386))
+(or (not x2236) (not x2212) (not x82) x4378)
+(or (not x4389) x4388 x4386)
+(or (not x4377) (not x2236) (not x2212))
+(or (not x4386) x4389 x4388)
+(or (not x4378) (not x2236) (not x2213) x81)
+(or (not x4388) x4389 x4386)
+(or (not x2236) (not x2213) (not x81) x4378)
+(or (not x4387) x4386)
+(or (not x4377) (not x2236) (not x2213))
+(or (not x4386) x4387)
+(or (not x4378) (not x2236) (not x2214))
+(or (not x2236) (not x2214) x4377)
+(or (not x4378) (not x2236) (not x2215) x79)
+(or (not x4385) (not x4383))
+(or (not x2236) (not x2215) (not x79) x4378)
+(or (not x4385) x4383)
+(or (not x4377) (not x2236) (not x2215))
+(or (not x4383) x4385)
+(or (not x4378) (not x2236) (not x2216) x77)
+(or (not x2236) (not x2216) (not x77) x4378)
+(or (not x4384) (not x4381))
+(or (not x4377) (not x2236) (not x2216))
+(or (not x4384) x4383 x4381)
+(or (not x4378) (not x2237) (not x2212) x73)
+(or (not x4381) x4384 x4383)
+(or (not x2237) (not x2212) (not x73) x4378)
+(or (not x4383) x4384 x4381)
+(or (not x4377) (not x2237) (not x2212))
+(or (not x4382) (not x4379))
+(or (not x4378) (not x2237) (not x2213) x67)
+(or (not x4382) x4381 x4379)
+(or (not x2237) (not x2213) (not x67) x4378)
+(or (not x4379) x4382 x4381)
+(or (not x4377) (not x2237) (not x2213))
+(or (not x4381) x4382 x4379)
+(or (not x4378) (not x2237) (not x2214) x66)
+(or (not x4380) x4379)
+(or (not x2237) (not x2214) (not x66) x4378)
+(or (not x4379) x4380)
+(or (not x4377) (not x2237) (not x2214))
+(or (not x4352) (not x4341) (not x2228))
+(or (not x4378) (not x2237) (not x2215))
+(or (not x4352) (not x4341))
+(or (not x2237) (not x2215) x4377)
+(or (not x4352) (not x4339) (not x2229))
+(or (not x4378) (not x2237) (not x2216) x65)
+(or (not x4352) (not x4339) x728)
+(or (not x2237) (not x2216) (not x65) x4378)
+(or (not x4352) (not x4334) (not x2231))
+(or (not x4377) (not x2237) (not x2216))
+(or (not x4352) (not x4334) x715)
+(or (not x4378) (not x2238) (not x2212) x58)
+(or (not x4352) (not x4331) (not x2232))
+(or (not x2238) (not x2212) (not x58) x4378)
+(or (not x4352) (not x4331) x707)
+(or (not x4377) (not x2238) (not x2212))
+(or (not x4352) (not x4329) x699)
+(or (not x4378) (not x2238) (not x2213) x57)
+(or (not x4352) x4341 x4339 x4334 x4331 x4329)
+(or (not x2238) (not x2213) (not x57) x4378)
+(or (not x4352) (not x4341))
+(or (not x4377) (not x2238) (not x2213))
+(or (not x4352) (not x4327))
+(or (not x4378) (not x2238) (not x2214) x56)
+(or (not x4352) (not x4315))
+(or (not x2238) (not x2214) (not x56) x4378)
+(or (not x4352) (not x4303))
+(or (not x4377) (not x2238) (not x2214))
+(or (not x4341) (not x4327) (not x2228))
+(or (not x4378) (not x2238) (not x2215) x55)
+(or (not x4341) (not x4327))
+(or (not x2238) (not x2215) (not x55) x4378)
+(or (not x4341) (not x4325) (not x2229))
+(or (not x4377) (not x2238) (not x2215))
+(or (not x4341) (not x4325) x728)
+(or (not x4378) (not x2238) (not x2216))
+(or (not x4341) (not x4322) (not x2231))
+(or (not x2238) (not x2216) x4377)
+(or (not x4341) (not x4322) x715)
+(or (not x4035) (not x69) (not x6) x4376)
+(or (not x4341) (not x4319) (not x2232))
+(or (not x4376) (not x4372) (not x4364) x4375 x4374)
+(or (not x4341) (not x4319) x707)
+(or (not x4376) (not x4364) x4373 x4372)
+(or (not x4341) (not x4317) x699)
+(or (not x4376) x4365 x4364)
+(or (not x4341) x4327 x4325 x4322 x4319 x4317)
+(or (not x4374) (not x4372) (not x4364) x4376)
+(or (not x4341) (not x4327))
+(or (not x4375) (not x4372) (not x4364) x4376)
+(or (not x4341) (not x4315))
+(or (not x4373) (not x4364) x4376)
+(or (not x4341) (not x4303))
+(or (not x4365) x4376)
+(or (not x4327) (not x4315) (not x2228))
+(or (not x4375) (not x4374))
+(or (not x4327) (not x4315))
+(or (not x3792) x4375 x3850 x2289)
+(or (not x4327) (not x4313) (not x2229))
+(or (not x4375) (not x3792) (not x2289) x3850)
+(or (not x4327) (not x4313) x728)
+(or (not x4375) (not x3850) x3792 x2289)
+(or (not x4327) (not x4309) (not x2231))
+(or (not x3850) (not x2289) x4375 x3792)
+(or (not x4327) (not x4309) x715)
+(or (not x3791) x4375 x3848 x2289)
+(or (not x4327) (not x4307) (not x2232))
+(or (not x4375) (not x3791) (not x2289) x3848)
+(or (not x4327) (not x4307) x707)
+(or (not x4375) (not x3848) x3791 x2289)
+(or (not x4327) (not x4305) x699)
+(or (not x3848) (not x2289) x4375 x3791)
+(or (not x4327) x4315 x4313 x4309 x4307 x4305)
+(or (not x3790) x4375 x3847 x2289)
+(or (not x4327) (not x4315))
+(or (not x4375) (not x3790) (not x2289) x3847)
+(or (not x4327) (not x4303))
+(or (not x4375) (not x3847) x3790 x2289)
+(or (not x4315) (not x4303) (not x2228))
+(or (not x3847) (not x2289) x4375 x3790)
+(or (not x4315) (not x4303))
+(or (not x3789) x4375 x3845 x2289)
+(or (not x4315) (not x4301) (not x2229))
+(or (not x4375) (not x3789) (not x2289) x3845)
+(or (not x4315) (not x4301) x728)
+(or (not x4375) (not x3845) x3789 x2289)
+(or (not x4315) (not x4297) (not x2231))
+(or (not x3845) (not x2289) x4375 x3789)
+(or (not x4315) (not x4297) x715)
+(or (not x3788) x4375 x3843 x2289)
+(or (not x4315) (not x4294) (not x2232))
+(or (not x4375) (not x3788) (not x2289) x3843)
+(or (not x4315) (not x4294) x707)
+(or (not x4375) (not x3843) x3788 x2289)
+(or (not x4315) (not x4292) x699)
+(or (not x3843) (not x2289) x4375 x3788)
+(or (not x4315) x4303 x4301 x4297 x4294 x4292)
+(or (not x3848) (not x3791) x4374 x3850 x3792)
+(or (not x4315) (not x4303))
+(or (not x3847) (not x3790) x4374 x3848 x3791)
+(or (not x4303) (not x2230))
+(or (not x3845) (not x3789) x4374 x3847 x3790)
+(or (not x4303) x722)
+(or (not x3843) (not x3788) x4374 x3845 x3789)
+(or (not x4303) (not x4289) (not x2231))
+(or x4374 x3843 x3788)
+(or (not x4303) (not x4289) x715)
+(or (not x3850) (not x3792) x4374)
+(or (not x4303) (not x4287) (not x2232))
+(or (not x4374) (not x3850) x3792)
+(or (not x4303) (not x4287) x707)
+(or (not x4374) (not x3792) x3850)
+(or (not x4303) (not x4285) x699)
+(or (not x4374) (not x3848) x3791)
+(or (not x2228) x4352 x4341 x4327 x4315 x4303)
+(or (not x4374) (not x3791) x3848)
+(or (not x4350) (not x4341) (not x2228))
+(or (not x4374) (not x3847) x3790)
+(or (not x4350) (not x4341) x734)
+(or (not x4374) (not x3790) x3847)
+(or (not x4350) (not x4339) (not x2229))
+(or (not x4374) (not x3845) x3789)
+(or (not x4350) (not x4339))
+(or (not x4374) (not x3789) x3845)
+(or (not x4350) (not x4334) (not x2231))
+(or (not x4374) (not x3843) x3788)
+(or (not x4350) (not x4334) x714)
+(or (not x4374) (not x3788) x3843)
+(or (not x4350) (not x4331) (not x2232))
+(or (not x52) x4373 x4371 x3832)
+(or (not x4350) (not x4331) x705)
+(or (not x4373) (not x3832) (not x52) x4371)
+(or (not x4350) (not x4329) x698)
+(or (not x4373) x4371 x3832 x52)
+(or (not x4350) x4341 x4339 x4334 x4331 x4329)
+(or (not x3832) x4373 x4371 x52)
+(or (not x4350) (not x4339))
+(or (not x4371) (not x50) x4373 x4370 x3831)
+(or (not x4350) (not x4325))
+(or (not x4373) (not x4371) (not x3831) (not x50) x4370)
+(or (not x4350) (not x4313))
+(or (not x4373) (not x4371) x4370 x3831 x50)
+(or (not x4350) (not x4301))
+(or (not x4371) (not x3831) x4373 x4370 x50)
+(or (not x4339) (not x4327) (not x2228))
+(or (not x4370) (not x48) x4373 x4369 x3829)
+(or (not x4339) (not x4327) x734)
+(or (not x4373) (not x4370) (not x3829) (not x48) x4369)
+(or (not x4339) (not x4325) (not x2229))
+(or (not x4373) (not x4370) x4369 x3829 x48)
+(or (not x4339) (not x4325))
+(or (not x4370) (not x3829) x4373 x4369 x48)
+(or (not x4339) (not x4322) (not x2231))
+(or (not x4369) (not x46) x4373 x4368 x3827)
+(or (not x4339) (not x4322) x714)
+(or (not x4373) (not x4369) (not x3827) (not x46) x4368)
+(or (not x4339) (not x4319) (not x2232))
+(or (not x4373) (not x4369) x4368 x3827 x46)
+(or (not x4339) (not x4319) x705)
+(or (not x4369) (not x3827) x4373 x4368 x46)
+(or (not x4339) (not x4317) x698)
+(or (not x4368) (not x44) x4373 x4367 x3825)
+(or (not x4339) x4327 x4325 x4322 x4319 x4317)
+(or (not x4373) (not x4368) (not x3825) (not x44) x4367)
+(or (not x4339) (not x4325))
+(or (not x4373) (not x4368) x4367 x3825 x44)
+(or (not x4339) (not x4313))
+(or (not x4368) (not x3825) x4373 x4367 x44)
+(or (not x4339) (not x4301))
+(or (not x4367) (not x149) x4373 x4366 x3823)
+(or (not x4325) (not x4315) (not x2228))
+(or (not x4373) (not x4367) (not x3823) (not x149) x4366)
+(or (not x4325) (not x4315) x734)
+(or (not x4373) (not x4367) x4366 x3823 x149)
+(or (not x4325) (not x4313) (not x2229))
+(or (not x4367) (not x3823) x4373 x4366 x149)
+(or (not x4325) (not x4313))
+(or (not x4373) (not x4372))
+(or (not x4325) (not x4309) (not x2231))
+(or (not x4366) x4372)
+(or (not x4325) (not x4309) x714)
+(or (not x4372) x4366)
+(or (not x4325) (not x4307) (not x2232))
+(or x4371 x3832 x3771)
+(or (not x4325) (not x4307) x705)
+(or (not x3832) (not x3771) x4371)
+(or (not x4325) (not x4305) x698)
+(or (not x4371) (not x3832) x3771)
+(or (not x4325) x4315 x4313 x4309 x4307 x4305)
+(or (not x4371) (not x3771) x3832)
+(or (not x4325) (not x4313))
+(or (not x4371) x4370 x3831 x3768)
+(or (not x4325) (not x4301))
+(or (not x4371) (not x3831) (not x3768) x4370)
+(or (not x4313) (not x4303) (not x2228))
+(or (not x4370) (not x3831) x3768)
+(or (not x4313) (not x4303) x734)
+(or (not x4370) (not x3768) x3831)
+(or (not x4313) (not x4301) (not x2229))
+(or (not x4370) x4371)
+(or (not x4313) (not x4301))
+(or (not x4370) x4369 x3829 x3765)
+(or (not x4313) (not x4297) (not x2231))
+(or (not x4370) (not x3829) (not x3765) x4369)
+(or (not x4313) (not x4297) x714)
+(or (not x4369) (not x3829) x3765)
+(or (not x4313) (not x4294) (not x2232))
+(or (not x4369) (not x3765) x3829)
+(or (not x4313) (not x4294) x705)
+(or (not x4369) x4370)
+(or (not x4313) (not x4292) x698)
+(or (not x4369) x4368 x3827 x3759)
+(or (not x4313) x4303 x4301 x4297 x4294 x4292)
+(or (not x4369) (not x3827) (not x3759) x4368)
+(or (not x4313) (not x4301))
+(or (not x4368) (not x3827) x3759)
+(or (not x4301) (not x2230))
+(or (not x4368) (not x3759) x3827)
+(or (not x4301) x721)
+(or (not x4368) x4369)
+(or (not x4301) (not x4289) (not x2231))
+(or (not x4368) x4367 x3825 x3755)
+(or (not x4301) (not x4289) x714)
+(or (not x4368) (not x3825) (not x3755) x4367)
+(or (not x4301) (not x4287) (not x2232))
+(or (not x4367) (not x3825) x3755)
+(or (not x4301) (not x4287) x705)
+(or (not x4367) (not x3755) x3825)
+(or (not x4301) (not x4285) x698)
+(or (not x4367) x4368)
+(or (not x2229) x4350 x4339 x4325 x4313 x4301)
+(or (not x4367) x4366 x3823 x3749)
+(or (not x4347) (not x4341) (not x2228))
+(or (not x4367) (not x3823) (not x3749) x4366)
+(or (not x4347) (not x4341) x732)
+(or (not x4366) (not x3823) x3749)
+(or (not x4347) (not x4339) (not x2229))
+(or (not x4366) (not x3749) x3823)
+(or (not x4347) (not x4339) x726)
+(or (not x4366) x4367)
+(or (not x4365) (not x2239) (not x2228))
+(or (not x2239) (not x2228) x4364)
+(or (not x4347) (not x4334) (not x2231))
+(or (not x4365) (not x2240) (not x2228) x95)
+(or (not x4347) (not x4334))
+(or (not x2240) (not x2228) (not x95) x4365)
+(or (not x4347) (not x4331) (not x2232))
+(or (not x4364) (not x2240) (not x2228))
+(or (not x4347) (not x4331) x701)
+(or (not x4365) (not x2241) (not x2228) x94)
+(or (not x4347) (not x4329) x696)
+(or (not x2241) (not x2228) (not x94) x4365)
+(or (not x4347) x4341 x4339 x4334 x4331 x4329)
+(or (not x4364) (not x2241) (not x2228))
+(or (not x4347) (not x4334))
+(or (not x4365) (not x2242) (not x2228) x92)
+(or (not x4347) (not x4322))
+(or (not x2242) (not x2228) (not x92) x4365)
+(or (not x4347) (not x4309))
+(or (not x4364) (not x2242) (not x2228))
+(or (not x4347) (not x4297))
+(or (not x4365) (not x2243) (not x2228) x91)
+(or (not x4347) (not x4289))
+(or (not x2243) (not x2228) (not x91) x4365)
+(or (not x4334) (not x4327) (not x2228))
+(or (not x4364) (not x2243) (not x2228))
+(or (not x4334) (not x4327) x732)
+(or (not x4365) (not x2239) (not x2229) x89)
+(or (not x4334) (not x4325) (not x2229))
+(or (not x2239) (not x2229) (not x89) x4365)
+(or (not x4334) (not x4325) x726)
+(or (not x4364) (not x2239) (not x2229))
+(or (not x4365) (not x2240) (not x2229))
+(or (not x2240) (not x2229) x4364)
+(or (not x4334) (not x4322) (not x2231))
+(or (not x4365) (not x2241) (not x2229) x88)
+(or (not x4334) (not x4322))
+(or (not x2241) (not x2229) (not x88) x4365)
+(or (not x4334) (not x4319) (not x2232))
+(or (not x4364) (not x2241) (not x2229))
+(or (not x4334) (not x4319) x701)
+(or (not x4365) (not x2242) (not x2229) x87)
+(or (not x4334) (not x4317) x696)
+(or (not x2242) (not x2229) (not x87) x4365)
+(or (not x4334) x4327 x4325 x4322 x4319 x4317)
+(or (not x4364) (not x2242) (not x2229))
+(or (not x4334) (not x4322))
+(or (not x4365) (not x2243) (not x2229) x86)
+(or (not x4334) (not x4309))
+(or (not x2243) (not x2229) (not x86) x4365)
+(or (not x4334) (not x4297))
+(or (not x4364) (not x2243) (not x2229))
+(or (not x4334) (not x4289))
+(or (not x4365) (not x2239) (not x2230) x82)
+(or (not x4322) (not x4315) (not x2228))
+(or (not x2239) (not x2230) (not x82) x4365)
+(or (not x4322) (not x4315) x732)
+(or (not x4364) (not x2239) (not x2230))
+(or (not x4322) (not x4313) (not x2229))
+(or (not x4365) (not x2240) (not x2230) x81)
+(or (not x4322) (not x4313) x726)
+(or (not x2240) (not x2230) (not x81) x4365)
+(or (not x4364) (not x2240) (not x2230))
+(or (not x4365) (not x2241) (not x2230))
+(or (not x4322) (not x4309) (not x2231))
+(or (not x2241) (not x2230) x4364)
+(or (not x4322) (not x4309))
+(or (not x4365) (not x2242) (not x2230) x79)
+(or (not x4322) (not x4307) (not x2232))
+(or (not x2242) (not x2230) (not x79) x4365)
+(or (not x4322) (not x4307) x701)
+(or (not x4364) (not x2242) (not x2230))
+(or (not x4322) (not x4305) x696)
+(or (not x4365) (not x2243) (not x2230) x77)
+(or (not x4322) x4315 x4313 x4309 x4307 x4305)
+(or (not x2243) (not x2230) (not x77) x4365)
+(or (not x4322) (not x4309))
+(or (not x4364) (not x2243) (not x2230))
+(or (not x4322) (not x4297))
+(or (not x4365) (not x2239) (not x2231) x73)
+(or (not x4322) (not x4289))
+(or (not x2239) (not x2231) (not x73) x4365)
+(or (not x4309) (not x4303) (not x2228))
+(or (not x4364) (not x2239) (not x2231))
+(or (not x4309) (not x4303) x732)
+(or (not x4365) (not x2240) (not x2231) x67)
+(or (not x4309) (not x4301) (not x2229))
+(or (not x2240) (not x2231) (not x67) x4365)
+(or (not x4309) (not x4301) x726)
+(or (not x4364) (not x2240) (not x2231))
+(or (not x4365) (not x2241) (not x2231) x66)
+(or (not x2241) (not x2231) (not x66) x4365)
+(or (not x4309) (not x4297) (not x2231))
+(or (not x4364) (not x2241) (not x2231))
+(or (not x4309) (not x4297))
+(or (not x4365) (not x2242) (not x2231))
+(or (not x4309) (not x4294) (not x2232))
+(or (not x2242) (not x2231) x4364)
+(or (not x4309) (not x4294) x701)
+(or (not x4365) (not x2243) (not x2231) x65)
+(or (not x4309) (not x4292) x696)
+(or (not x2243) (not x2231) (not x65) x4365)
+(or (not x4309) x4303 x4301 x4297 x4294 x4292)
+(or (not x4364) (not x2243) (not x2231))
+(or (not x4309) (not x4297))
+(or (not x4365) (not x2239) (not x2232) x58)
+(or (not x4309) (not x4289))
+(or (not x2239) (not x2232) (not x58) x4365)
+(or (not x4297) (not x2230))
+(or (not x4364) (not x2239) (not x2232))
+(or (not x4297) x720)
+(or (not x4365) (not x2240) (not x2232) x57)
+(or (not x4297) (not x4289) (not x2231))
+(or (not x2240) (not x2232) (not x57) x4365)
+(or (not x4297) (not x4289))
+(or (not x4364) (not x2240) (not x2232))
+(or (not x4297) (not x4287) (not x2232))
+(or (not x4365) (not x2241) (not x2232) x56)
+(or (not x4297) (not x4287) x701)
+(or (not x2241) (not x2232) (not x56) x4365)
+(or (not x4297) (not x4285) x696)
+(or (not x4364) (not x2241) (not x2232))
+(or (not x4297) (not x4289))
+(or (not x4365) (not x2242) (not x2232) x55)
+(or (not x2231) x4347 x4334 x4322 x4309 x4297 x4289)
+(or (not x2242) (not x2232) (not x55) x4365)
+(or (not x4345) (not x4341) (not x2228))
+(or (not x4364) (not x2242) (not x2232))
+(or (not x4345) (not x4341) x731)
+(or (not x4365) (not x2243) (not x2232))
+(or (not x4345) (not x4339) (not x2229))
+(or (not x2243) (not x2232) x4364)
+(or (not x4345) (not x4339) x724)
+(or (not x4035) (not x69) (not x7) x4363)
+(or (not x4363) (not x4359) (not x4336) x4362 x4361)
+(or (not x4363) (not x4336) x4360 x4359)
+(or (not x4345) (not x4334) (not x2231))
+(or (not x4363) x4337 x4336)
+(or (not x4345) (not x4334) x710)
+(or (not x4361) (not x4359) (not x4336) x4363)
+(or (not x4345) (not x4331) (not x2232))
+(or (not x4362) (not x4359) (not x4336) x4363)
+(or (not x4345) (not x4331))
+(or (not x4360) (not x4336) x4363)
+(or (not x4345) (not x4329) x695)
+(or (not x4337) x4363)
+(or (not x4345) x4341 x4339 x4334 x4331 x4329)
+(or (not x4362) (not x4361))
+(or (not x4345) (not x4331))
+(or (not x3792) x4362 x3816 x2289)
+(or (not x4345) (not x4319))
+(or (not x4362) (not x3792) (not x2289) x3816)
+(or (not x4345) (not x4307))
+(or (not x4362) (not x3816) x3792 x2289)
+(or (not x4345) (not x4294))
+(or (not x3816) (not x2289) x4362 x3792)
+(or (not x4345) (not x4287))
+(or (not x3791) x4362 x3815 x2289)
+(or (not x4331) (not x4327) (not x2228))
+(or (not x4362) (not x3791) (not x2289) x3815)
+(or (not x4331) (not x4327) x731)
+(or (not x4362) (not x3815) x3791 x2289)
+(or (not x4331) (not x4325) (not x2229))
+(or (not x3815) (not x2289) x4362 x3791)
+(or (not x4331) (not x4325) x724)
+(or (not x3790) x4362 x3814 x2289)
+(or (not x4362) (not x3790) (not x2289) x3814)
+(or (not x4362) (not x3814) x3790 x2289)
+(or (not x4331) (not x4322) (not x2231))
+(or (not x3814) (not x2289) x4362 x3790)
+(or (not x4331) (not x4322) x710)
+(or (not x3789) x4362 x3813 x2289)
+(or (not x4331) (not x4319) (not x2232))
+(or (not x4362) (not x3789) (not x2289) x3813)
+(or (not x4331) (not x4319))
+(or (not x4362) (not x3813) x3789 x2289)
+(or (not x4331) (not x4317) x695)
+(or (not x3813) (not x2289) x4362 x3789)
+(or (not x4331) x4327 x4325 x4322 x4319 x4317)
+(or (not x3788) x4362 x3812 x2289)
+(or (not x4331) (not x4319))
+(or (not x4362) (not x3788) (not x2289) x3812)
+(or (not x4331) (not x4307))
+(or (not x4362) (not x3812) x3788 x2289)
+(or (not x4331) (not x4294))
+(or (not x3812) (not x2289) x4362 x3788)
+(or (not x4331) (not x4287))
+(or (not x3815) (not x3791) x4361 x3816 x3792)
+(or (not x4319) (not x4315) (not x2228))
+(or (not x3814) (not x3790) x4361 x3815 x3791)
+(or (not x4319) (not x4315) x731)
+(or (not x3813) (not x3789) x4361 x3814 x3790)
+(or (not x4319) (not x4313) (not x2229))
+(or (not x3812) (not x3788) x4361 x3813 x3789)
+(or (not x4319) (not x4313) x724)
+(or x4361 x3812 x3788)
+(or (not x3816) (not x3792) x4361)
+(or (not x4361) (not x3816) x3792)
+(or (not x4319) (not x4309) (not x2231))
+(or (not x4361) (not x3792) x3816)
+(or (not x4319) (not x4309) x710)
+(or (not x4361) (not x3815) x3791)
+(or (not x4319) (not x4307) (not x2232))
+(or (not x4361) (not x3791) x3815)
+(or (not x4319) (not x4307))
+(or (not x4361) (not x3814) x3790)
+(or (not x4319) (not x4305) x695)
+(or (not x4361) (not x3790) x3814)
+(or (not x4319) x4315 x4313 x4309 x4307 x4305)
+(or (not x4361) (not x3813) x3789)
+(or (not x4319) (not x4307))
+(or (not x4361) (not x3789) x3813)
+(or (not x4319) (not x4294))
+(or (not x4361) (not x3812) x3788)
+(or (not x4319) (not x4287))
+(or (not x4361) (not x3788) x3812)
+(or (not x4307) (not x4303) (not x2228))
+(or (not x52) x4360 x4358 x3808)
+(or (not x4307) (not x4303) x731)
+(or (not x4360) (not x3808) (not x52) x4358)
+(or (not x4307) (not x4301) (not x2229))
+(or (not x4360) x4358 x3808 x52)
+(or (not x4307) (not x4301) x724)
+(or (not x3808) x4360 x4358 x52)
+(or (not x4358) (not x50) x4360 x4357 x3807)
+(or (not x4360) (not x4358) (not x3807) (not x50) x4357)
+(or (not x4307) (not x4297) (not x2231))
+(or (not x4360) (not x4358) x4357 x3807 x50)
+(or (not x4307) (not x4297) x710)
+(or (not x4358) (not x3807) x4360 x4357 x50)
+(or (not x4307) (not x4294) (not x2232))
+(or (not x4357) (not x48) x4360 x4356 x3805)
+(or (not x4307) (not x4294))
+(or (not x4360) (not x4357) (not x3805) (not x48) x4356)
+(or (not x4307) (not x4292) x695)
+(or (not x4360) (not x4357) x4356 x3805 x48)
+(or (not x4307) x4303 x4301 x4297 x4294 x4292)
+(or (not x4357) (not x3805) x4360 x4356 x48)
+(or (not x4307) (not x4294))
+(or (not x4356) (not x46) x4360 x4355 x3803)
+(or (not x4307) (not x4287))
+(or (not x4360) (not x4356) (not x3803) (not x46) x4355)
+(or (not x4294) (not x2230))
+(or (not x4360) (not x4356) x4355 x3803 x46)
+(or (not x4294) x719)
+(or (not x4356) (not x3803) x4360 x4355 x46)
+(or (not x4294) (not x4289) (not x2231))
+(or (not x4355) (not x44) x4360 x4354 x3801)
+(or (not x4294) (not x4289) x710)
+(or (not x4360) (not x4355) (not x3801) (not x44) x4354)
+(or (not x4294) (not x4287) (not x2232))
+(or (not x4360) (not x4355) x4354 x3801 x44)
+(or (not x4294) (not x4287))
+(or (not x4355) (not x3801) x4360 x4354 x44)
+(or (not x4294) (not x4285) x695)
+(or (not x4354) (not x149) x4360 x4353 x3799)
+(or (not x4294) (not x4287))
+(or (not x4360) (not x4354) (not x3799) (not x149) x4353)
+(or (not x2232) x4345 x4331 x4319 x4307 x4294 x4287)
+(or (not x4360) (not x4354) x4353 x3799 x149)
+(or (not x4343) (not x4341) (not x2228))
+(or (not x4354) (not x3799) x4360 x4353 x149)
+(or (not x4343) (not x4341) x729)
+(or (not x4360) (not x4359))
+(or (not x4343) (not x4339) (not x2229))
+(or (not x4353) x4359)
+(or (not x4343) (not x4339) x723)
+(or (not x4359) x4353)
+(or x4358 x3808 x3771)
+(or (not x3808) (not x3771) x4358)
+(or (not x4343) (not x4334) (not x2231))
+(or (not x4358) (not x3808) x3771)
+(or (not x4343) (not x4334) x709)
+(or (not x4358) (not x3771) x3808)
+(or (not x4343) (not x4331) (not x2232))
+(or (not x4358) x4357 x3807 x3768)
+(or (not x4343) (not x4331) x700)
+(or (not x4358) (not x3807) (not x3768) x4357)
+(or (not x4343) (not x4329))
+(or (not x4357) (not x3807) x3768)
+(or (not x4343) x4341 x4339 x4334 x4331 x4329)
+(or (not x4357) (not x3768) x3807)
+(or (not x4343) (not x4329))
+(or (not x4357) x4358)
+(or (not x4343) (not x4317))
+(or (not x4357) x4356 x3805 x3765)
+(or (not x4343) (not x4305))
+(or (not x4357) (not x3805) (not x3765) x4356)
+(or (not x4343) (not x4292))
+(or (not x4356) (not x3805) x3765)
+(or (not x4343) (not x4285))
+(or (not x4356) (not x3765) x3805)
+(or (not x4329) (not x4327) (not x2228))
+(or (not x4356) x4357)
+(or (not x4329) (not x4327) x729)
+(or (not x4356) x4355 x3803 x3759)
+(or (not x4329) (not x4325) (not x2229))
+(or (not x4356) (not x3803) (not x3759) x4355)
+(or (not x4329) (not x4325) x723)
+(or (not x4355) (not x3803) x3759)
+(or (not x4355) (not x3759) x3803)
+(or (not x4355) x4356)
+(or (not x4329) (not x4322) (not x2231))
+(or (not x4355) x4354 x3801 x3755)
+(or (not x4329) (not x4322) x709)
+(or (not x4355) (not x3801) (not x3755) x4354)
+(or (not x4329) (not x4319) (not x2232))
+(or (not x4354) (not x3801) x3755)
+(or (not x4329) (not x4319) x700)
+(or (not x4354) (not x3755) x3801)
+(or (not x4329) (not x4317))
+(or (not x4354) x4355)
+(or (not x4329) x4327 x4325 x4322 x4319 x4317)
+(or (not x4354) x4353 x3799 x3749)
+(or (not x4329) (not x4317))
+(or (not x4354) (not x3799) (not x3749) x4353)
+(or (not x4329) (not x4305))
+(or (not x4353) (not x3799) x3749)
+(or (not x4329) (not x4292))
+(or (not x4353) (not x3749) x3799)
+(or (not x4329) (not x4285))
+(or (not x4353) x4354)
+(or (not x4317) (not x4315) (not x2228))
+(or (not x4337) (not x2234) (not x2228))
+(or (not x4317) (not x4315) x729)
+(or (not x2234) (not x2228) x4336)
+(or (not x4317) (not x4313) (not x2229))
+(or (not x4337) (not x2235) (not x2228) x95)
+(or (not x4317) (not x4313) x723)
+(or (not x2235) (not x2228) (not x95) x4337)
+(or (not x4336) (not x2235) (not x2228))
+(or (not x4337) (not x2236) (not x2228) x94)
+(or (not x4317) (not x4309) (not x2231))
+(or (not x2236) (not x2228) (not x94) x4337)
+(or (not x4317) (not x4309) x709)
+(or (not x4336) (not x2236) (not x2228))
+(or (not x4317) (not x4307) (not x2232))
+(or (not x4337) (not x2237) (not x2228) x92)
+(or (not x4317) (not x4307) x700)
+(or (not x2237) (not x2228) (not x92) x4337)
+(or (not x4317) (not x4305))
+(or (not x4336) (not x2237) (not x2228))
+(or (not x4317) x4315 x4313 x4309 x4307 x4305)
+(or (not x4337) (not x2238) (not x2228) x91)
+(or (not x4317) (not x4305))
+(or (not x2238) (not x2228) (not x91) x4337)
+(or (not x4317) (not x4292))
+(or (not x4336) (not x2238) (not x2228))
+(or (not x4317) (not x4285))
+(or (not x4337) (not x2234) (not x2229) x89)
+(or (not x4305) (not x4303) (not x2228))
+(or (not x2234) (not x2229) (not x89) x4337)
+(or (not x4305) (not x4303) x729)
+(or (not x4336) (not x2234) (not x2229))
+(or (not x4305) (not x4301) (not x2229))
+(or (not x4337) (not x2235) (not x2229))
+(or (not x4305) (not x4301) x723)
+(or (not x2235) (not x2229) x4336)
+(or (not x4337) (not x2236) (not x2229) x88)
+(or (not x2236) (not x2229) (not x88) x4337)
+(or (not x4305) (not x4297) (not x2231))
+(or (not x4336) (not x2236) (not x2229))
+(or (not x4305) (not x4297) x709)
+(or (not x4337) (not x2237) (not x2229) x87)
+(or (not x4305) (not x4294) (not x2232))
+(or (not x2237) (not x2229) (not x87) x4337)
+(or (not x4305) (not x4294) x700)
+(or (not x4336) (not x2237) (not x2229))
+(or (not x4305) (not x4292))
+(or (not x4337) (not x2238) (not x2229) x86)
+(or (not x4305) x4303 x4301 x4297 x4294 x4292)
+(or (not x2238) (not x2229) (not x86) x4337)
+(or (not x4305) (not x4292))
+(or (not x4336) (not x2238) (not x2229))
+(or (not x4305) (not x4285))
+(or (not x4337) (not x2234) (not x2230) x82)
+(or (not x4292) (not x2230))
+(or (not x2234) (not x2230) (not x82) x4337)
+(or (not x4292) x717)
+(or (not x4336) (not x2234) (not x2230))
+(or (not x4292) (not x4289) (not x2231))
+(or (not x4337) (not x2235) (not x2230) x81)
+(or (not x4292) (not x4289) x709)
+(or (not x2235) (not x2230) (not x81) x4337)
+(or (not x4292) (not x4287) (not x2232))
+(or (not x4336) (not x2235) (not x2230))
+(or (not x4292) (not x4287) x700)
+(or (not x4337) (not x2236) (not x2230))
+(or (not x4292) (not x4285))
+(or (not x2236) (not x2230) x4336)
+(or (not x4292) (not x4285))
+(or (not x4337) (not x2237) (not x2230) x79)
+(or (not x4352) (not x4349))
+(or (not x2237) (not x2230) (not x79) x4337)
+(or (not x4352) x4351 x4349)
+(or (not x4336) (not x2237) (not x2230))
+(or (not x4349) x4352 x4351)
+(or (not x4337) (not x2238) (not x2230) x77)
+(or (not x4351) x4352 x4349)
+(or (not x2238) (not x2230) (not x77) x4337)
+(or (not x4350) (not x4348))
+(or (not x4336) (not x2238) (not x2230))
+(or (not x4350) x4349 x4348)
+(or (not x4337) (not x2234) (not x2231) x73)
+(or (not x4348) x4350 x4349)
+(or (not x2234) (not x2231) (not x73) x4337)
+(or (not x4349) x4350 x4348)
+(or (not x4336) (not x2234) (not x2231))
+(or (not x4337) (not x2235) (not x2231) x67)
+(or (not x2235) (not x2231) (not x67) x4337)
+(or (not x4346) x4348)
+(or (not x4336) (not x2235) (not x2231))
+(or (not x4348) x4346)
+(or (not x4337) (not x2236) (not x2231) x66)
+(or (not x4347) (not x4344))
+(or (not x2236) (not x2231) (not x66) x4337)
+(or (not x4347) x4346 x4344)
+(or (not x4336) (not x2236) (not x2231))
+(or (not x4344) x4347 x4346)
+(or (not x4337) (not x2237) (not x2231))
+(or (not x4346) x4347 x4344)
+(or (not x2237) (not x2231) x4336)
+(or (not x4345) (not x4342))
+(or (not x4337) (not x2238) (not x2231) x65)
+(or (not x4345) x4344 x4342)
+(or (not x2238) (not x2231) (not x65) x4337)
+(or (not x4342) x4345 x4344)
+(or (not x4336) (not x2238) (not x2231))
+(or (not x4344) x4345 x4342)
+(or (not x4337) (not x2234) (not x2232) x58)
+(or (not x4343) x4342)
+(or (not x2234) (not x2232) (not x58) x4337)
+(or (not x4342) x4343)
+(or (not x4336) (not x2234) (not x2232))
+(or (not x4341) (not x4338))
+(or (not x4337) (not x2235) (not x2232) x57)
+(or (not x4341) x4340 x4338)
+(or (not x2235) (not x2232) (not x57) x4337)
+(or (not x4338) x4341 x4340)
+(or (not x4336) (not x2235) (not x2232))
+(or (not x4340) x4341 x4338)
+(or (not x4337) (not x2236) (not x2232) x56)
+(or (not x4339) (not x4335))
+(or (not x2236) (not x2232) (not x56) x4337)
+(or (not x4339) x4338 x4335)
+(or (not x4336) (not x2236) (not x2232))
+(or (not x4335) x4339 x4338)
+(or (not x4337) (not x2237) (not x2232) x55)
+(or (not x4338) x4339 x4335)
+(or (not x2237) (not x2232) (not x55) x4337)
+(or (not x4336) (not x2237) (not x2232))
+(or (not x4337) (not x2238) (not x2232))
+(or (not x4333) x4335)
+(or (not x2238) (not x2232) x4336)
+(or (not x4335) x4333)
+(or (not x4035) (not x69) (not x9) x4332)
+(or (not x4334) (not x4330))
+(or (not x4332) (not x4295) (not x4278) x4320 x4310)
+(or (not x4334) x4333 x4330)
+(or (not x4332) (not x4278) x4298 x4295)
+(or (not x4330) x4334 x4333)
+(or (not x4332) x4279 x4278)
+(or (not x4333) x4334 x4330)
+(or (not x4310) (not x4295) (not x4278) x4332)
+(or (not x4331) (not x4328))
+(or (not x4320) (not x4295) (not x4278) x4332)
+(or (not x4331) x4330 x4328)
+(or (not x4298) (not x4278) x4332)
+(or (not x4328) x4331 x4330)
+(or (not x4279) x4332)
+(or (not x4330) x4331 x4328)
+(or (not x4320) (not x4310))
+(or (not x4329) x4328)
+(or (not x3792) x4320 x3713 x2289)
+(or (not x4328) x4329)
+(or (not x4320) (not x3792) (not x2289) x3713)
+(or (not x4327) (not x4324))
+(or (not x4320) (not x3713) x3792 x2289)
+(or (not x4327) x4326 x4324)
+(or (not x3713) (not x2289) x4320 x3792)
+(or (not x4324) x4327 x4326)
+(or (not x3791) x4320 x3712 x2289)
+(or (not x4326) x4327 x4324)
+(or (not x4320) (not x3791) (not x2289) x3712)
+(or (not x4325) (not x4323))
+(or (not x4320) (not x3712) x3791 x2289)
+(or (not x4325) x4324 x4323)
+(or (not x3712) (not x2289) x4320 x3791)
+(or (not x4323) x4325 x4324)
+(or (not x3790) x4320 x3711 x2289)
+(or (not x4324) x4325 x4323)
+(or (not x4320) (not x3790) (not x2289) x3711)
+(or (not x4320) (not x3711) x3790 x2289)
+(or (not x3711) (not x2289) x4320 x3790)
+(or (not x4321) x4323)
+(or (not x3789) x4320 x3710 x2289)
+(or (not x4323) x4321)
+(or (not x4320) (not x3789) (not x2289) x3710)
+(or (not x4322) (not x4318))
+(or (not x4320) (not x3710) x3789 x2289)
+(or (not x4322) x4321 x4318)
+(or (not x3710) (not x2289) x4320 x3789)
+(or (not x4318) x4322 x4321)
+(or (not x3788) x4320 x3709 x2289)
+(or (not x4321) x4322 x4318)
+(or (not x4320) (not x3788) (not x2289) x3709)
+(or (not x4319) (not x4316))
+(or (not x4320) (not x3709) x3788 x2289)
+(or (not x4319) x4318 x4316)
+(or (not x3709) (not x2289) x4320 x3788)
+(or (not x4316) x4319 x4318)
+(or (not x3791) (not x3712) x4310 x3792 x3713)
+(or (not x4318) x4319 x4316)
+(or (not x3790) (not x3711) x4310 x3791 x3712)
+(or (not x4317) x4316)
+(or (not x3789) (not x3710) x4310 x3790 x3711)
+(or (not x4316) x4317)
+(or (not x3788) (not x3709) x4310 x3789 x3710)
+(or (not x4315) (not x4312))
+(or x4310 x3788 x3709)
+(or (not x4315) x4314 x4312)
+(or (not x3792) (not x3713) x4310)
+(or (not x4312) x4315 x4314)
+(or (not x4310) (not x3713) x3792)
+(or (not x4314) x4315 x4312)
+(or (not x4310) (not x3792) x3713)
+(or (not x4313) (not x4311))
+(or (not x4310) (not x3712) x3791)
+(or (not x4313) x4312 x4311)
+(or (not x4310) (not x3791) x3712)
+(or (not x4311) x4313 x4312)
+(or (not x4310) (not x3711) x3790)
+(or (not x4312) x4313 x4311)
+(or (not x4310) (not x3790) x3711)
+(or (not x4310) (not x3710) x3789)
+(or (not x4310) (not x3789) x3710)
+(or (not x4308) x4311)
+(or (not x4310) (not x3709) x3788)
+(or (not x4311) x4308)
+(or (not x4310) (not x3788) x3709)
+(or (not x4309) (not x4306))
+(or (not x52) x4298 x4290 x3705)
+(or (not x4309) x4308 x4306)
+(or (not x4298) (not x3705) (not x52) x4290)
+(or (not x4306) x4309 x4308)
+(or (not x4298) x4290 x3705 x52)
+(or (not x4308) x4309 x4306)
+(or (not x3705) x4298 x4290 x52)
+(or (not x4307) (not x4304))
+(or (not x4290) (not x50) x4298 x4288 x3704)
+(or (not x4307) x4306 x4304)
+(or (not x4298) (not x4290) (not x3704) (not x50) x4288)
+(or (not x4304) x4307 x4306)
+(or (not x4298) (not x4290) x4288 x3704 x50)
+(or (not x4306) x4307 x4304)
+(or (not x4290) (not x3704) x4298 x4288 x50)
+(or (not x4305) x4304)
+(or (not x4288) (not x48) x4298 x4283 x3702)
+(or (not x4304) x4305)
+(or (not x4298) (not x4288) (not x3702) (not x48) x4283)
+(or (not x4303) (not x4300))
+(or (not x4298) (not x4288) x4283 x3702 x48)
+(or (not x4303) x4302 x4300)
+(or (not x4288) (not x3702) x4298 x4283 x48)
+(or (not x4300) x4303 x4302)
+(or (not x4283) (not x46) x4298 x4282 x3700)
+(or (not x4302) x4303 x4300)
+(or (not x4298) (not x4283) (not x3700) (not x46) x4282)
+(or (not x4301) (not x4299))
+(or (not x4298) (not x4283) x4282 x3700 x46)
+(or (not x4301) x4300 x4299)
+(or (not x4283) (not x3700) x4298 x4282 x46)
+(or (not x4299) x4301 x4300)
+(or (not x4282) (not x44) x4298 x4281 x3698)
+(or (not x4300) x4301 x4299)
+(or (not x4298) (not x4282) (not x3698) (not x44) x4281)
+(or (not x4298) (not x4282) x4281 x3698 x44)
+(or (not x4282) (not x3698) x4298 x4281 x44)
+(or (not x4296) x4299)
+(or (not x4281) (not x149) x4298 x4280 x3696)
+(or (not x4299) x4296)
+(or (not x4298) (not x4281) (not x3696) (not x149) x4280)
+(or (not x4297) (not x4293))
+(or (not x4298) (not x4281) x4280 x3696 x149)
+(or (not x4297) x4296 x4293)
+(or (not x4281) (not x3696) x4298 x4280 x149)
+(or (not x4293) x4297 x4296)
+(or (not x4298) (not x4295))
+(or (not x4296) x4297 x4293)
+(or (not x4280) x4295)
+(or (not x4294) (not x4291))
+(or (not x4295) x4280)
+(or (not x4294) x4293 x4291)
+(or x4290 x3771 x3705)
+(or (not x4291) x4294 x4293)
+(or (not x3771) (not x3705) x4290)
+(or (not x4293) x4294 x4291)
+(or (not x4290) (not x3705) x3771)
+(or (not x4292) x4291)
+(or (not x4290) (not x3771) x3705)
+(or (not x4291) x4292)
+(or (not x4290) x4288 x3768 x3704)
+(or (not x4290) (not x3768) (not x3704) x4288)
+(or (not x4288) (not x3704) x3768)
+(or (not x4288) (not x3768) x3704)
+(or (not x4289) (not x4286))
+(or (not x4288) x4290)
+(or (not x4289) x4286)
+(or (not x4288) x4283 x3765 x3702)
+(or (not x4286) x4289)
+(or (not x4288) (not x3765) (not x3702) x4283)
+(or (not x4283) (not x3702) x3765)
+(or (not x4287) (not x4284))
+(or (not x4283) (not x3765) x3702)
+(or (not x4287) x4286 x4284)
+(or (not x4283) x4288)
+(or (not x4284) x4287 x4286)
+(or (not x4283) x4282 x3759 x3700)
+(or (not x4286) x4287 x4284)
+(or (not x4283) (not x3759) (not x3700) x4282)
+(or (not x4285) x4284)
+(or (not x4282) (not x3700) x3759)
+(or (not x4284) x4285)
+(or (not x4282) (not x3759) x3700)
+(or (not x4261) (not x4248) (not x2223))
+(or (not x4282) x4283)
+(or (not x4261) (not x4248))
+(or (not x4282) x4281 x3755 x3698)
+(or (not x4261) (not x4245) (not x2224))
+(or (not x4282) (not x3755) (not x3698) x4281)
+(or (not x4261) (not x4245) x728)
+(or (not x4281) (not x3698) x3755)
+(or (not x4261) (not x4242) (not x2225))
+(or (not x4281) (not x3755) x3698)
+(or (not x4261) (not x4242) x722)
+(or (not x4281) x4282)
+(or (not x4261) (not x4238) (not x2227))
+(or (not x4281) x4280 x3749 x3696)
+(or (not x4261) (not x4238) x707)
+(or (not x4281) (not x3749) (not x3696) x4280)
+(or (not x4261) (not x4235) x699)
+(or (not x4280) (not x3696) x3749)
+(or (not x4261) x4248 x4245 x4242 x4238 x4235)
+(or (not x4280) (not x3749) x3696)
+(or (not x4261) (not x4248))
+(or (not x4280) x4281)
+(or (not x4261) (not x4231))
+(or (not x4279) (not x2228) (not x2223))
+(or (not x4261) (not x4220))
+(or (not x2228) (not x2223) x4278)
+(or (not x4261) (not x4209))
+(or (not x4279) (not x2228) (not x2224) x95)
+(or (not x4248) (not x4231) (not x2223))
+(or (not x2228) (not x2224) (not x95) x4279)
+(or (not x4248) (not x4231))
+(or (not x4278) (not x2228) (not x2224))
+(or (not x4248) (not x4229) (not x2224))
+(or (not x4279) (not x2228) (not x2225) x94)
+(or (not x4248) (not x4229) x728)
+(or (not x2228) (not x2225) (not x94) x4279)
+(or (not x4248) (not x4227) (not x2225))
+(or (not x4278) (not x2228) (not x2225))
+(or (not x4248) (not x4227) x722)
+(or (not x4279) (not x2228) (not x2226) x92)
+(or (not x4248) (not x4224) (not x2227))
+(or (not x2228) (not x2226) (not x92) x4279)
+(or (not x4248) (not x4224) x707)
+(or (not x4278) (not x2228) (not x2226))
+(or (not x4248) (not x4222) x699)
+(or (not x4279) (not x2228) (not x2227) x91)
+(or (not x4248) x4231 x4229 x4227 x4224 x4222)
+(or (not x2228) (not x2227) (not x91) x4279)
+(or (not x4248) (not x4231))
+(or (not x4278) (not x2228) (not x2227))
+(or (not x4248) (not x4220))
+(or (not x4279) (not x2229) (not x2223) x89)
+(or (not x4248) (not x4209))
+(or (not x2229) (not x2223) (not x89) x4279)
+(or (not x4231) (not x4220) (not x2223))
+(or (not x4278) (not x2229) (not x2223))
+(or (not x4231) (not x4220))
+(or (not x4279) (not x2229) (not x2224))
+(or (not x4231) (not x4218) (not x2224))
+(or (not x2229) (not x2224) x4278)
+(or (not x4231) (not x4218) x728)
+(or (not x4279) (not x2229) (not x2225) x88)
+(or (not x4231) (not x4216) (not x2225))
+(or (not x2229) (not x2225) (not x88) x4279)
+(or (not x4231) (not x4216) x722)
+(or (not x4278) (not x2229) (not x2225))
+(or (not x4231) (not x4213) (not x2227))
+(or (not x4279) (not x2229) (not x2226) x87)
+(or (not x4231) (not x4213) x707)
+(or (not x2229) (not x2226) (not x87) x4279)
+(or (not x4231) (not x4211) x699)
+(or (not x4278) (not x2229) (not x2226))
+(or (not x4231) x4220 x4218 x4216 x4213 x4211)
+(or (not x4279) (not x2229) (not x2227) x86)
+(or (not x4231) (not x4220))
+(or (not x2229) (not x2227) (not x86) x4279)
+(or (not x4231) (not x4209))
+(or (not x4278) (not x2229) (not x2227))
+(or (not x4220) (not x4209) (not x2223))
+(or (not x4279) (not x2230) (not x2223) x82)
+(or (not x4220) (not x4209))
+(or (not x2230) (not x2223) (not x82) x4279)
+(or (not x4220) (not x4207) (not x2224))
+(or (not x4278) (not x2230) (not x2223))
+(or (not x4220) (not x4207) x728)
+(or (not x4279) (not x2230) (not x2224) x81)
+(or (not x4220) (not x4205) (not x2225))
+(or (not x2230) (not x2224) (not x81) x4279)
+(or (not x4220) (not x4205) x722)
+(or (not x4278) (not x2230) (not x2224))
+(or (not x4220) (not x4202) (not x2227))
+(or (not x4279) (not x2230) (not x2225))
+(or (not x4220) (not x4202) x707)
+(or (not x2230) (not x2225) x4278)
+(or (not x4220) (not x4200) x699)
+(or (not x4279) (not x2230) (not x2226) x79)
+(or (not x4220) x4209 x4207 x4205 x4202 x4200)
+(or (not x2230) (not x2226) (not x79) x4279)
+(or (not x4220) (not x4209))
+(or (not x4278) (not x2230) (not x2226))
+(or (not x4209) (not x2226))
+(or (not x4279) (not x2230) (not x2227) x77)
+(or (not x4209) x715)
+(or (not x2230) (not x2227) (not x77) x4279)
+(or (not x4209) (not x4197) (not x2227))
+(or (not x4278) (not x2230) (not x2227))
+(or (not x4209) (not x4197) x707)
+(or (not x4279) (not x2231) (not x2223) x73)
+(or (not x4209) (not x4195) x699)
+(or (not x2231) (not x2223) (not x73) x4279)
+(or (not x2223) x4261 x4248 x4231 x4220 x4209)
+(or (not x4278) (not x2231) (not x2223))
+(or (not x4259) (not x4248) (not x2223))
+(or (not x4279) (not x2231) (not x2224) x67)
+(or (not x4259) (not x4248) x734)
+(or (not x2231) (not x2224) (not x67) x4279)
+(or (not x4259) (not x4245) (not x2224))
+(or (not x4278) (not x2231) (not x2224))
+(or (not x4259) (not x4245))
+(or (not x4279) (not x2231) (not x2225) x66)
+(or (not x4259) (not x4242) (not x2225))
+(or (not x2231) (not x2225) (not x66) x4279)
+(or (not x4259) (not x4242) x721)
+(or (not x4278) (not x2231) (not x2225))
+(or (not x4259) (not x4238) (not x2227))
+(or (not x4279) (not x2231) (not x2226))
+(or (not x4259) (not x4238) x705)
+(or (not x2231) (not x2226) x4278)
+(or (not x4259) (not x4235) x698)
+(or (not x4279) (not x2231) (not x2227) x65)
+(or (not x4259) x4248 x4245 x4242 x4238 x4235)
+(or (not x2231) (not x2227) (not x65) x4279)
+(or (not x4259) (not x4245))
+(or (not x4278) (not x2231) (not x2227))
+(or (not x4259) (not x4229))
+(or (not x4279) (not x2232) (not x2223) x58)
+(or (not x4259) (not x4218))
+(or (not x2232) (not x2223) (not x58) x4279)
+(or (not x4259) (not x4207))
+(or (not x4278) (not x2232) (not x2223))
+(or (not x4245) (not x4231) (not x2223))
+(or (not x4279) (not x2232) (not x2224) x57)
+(or (not x4245) (not x4231) x734)
+(or (not x2232) (not x2224) (not x57) x4279)
+(or (not x4245) (not x4229) (not x2224))
+(or (not x4278) (not x2232) (not x2224))
+(or (not x4245) (not x4229))
+(or (not x4279) (not x2232) (not x2225) x56)
+(or (not x4245) (not x4227) (not x2225))
+(or (not x2232) (not x2225) (not x56) x4279)
+(or (not x4245) (not x4227) x721)
+(or (not x4278) (not x2232) (not x2225))
+(or (not x4245) (not x4224) (not x2227))
+(or (not x4279) (not x2232) (not x2226) x55)
+(or (not x4245) (not x4224) x705)
+(or (not x2232) (not x2226) (not x55) x4279)
+(or (not x4245) (not x4222) x698)
+(or (not x4278) (not x2232) (not x2226))
+(or (not x4245) x4231 x4229 x4227 x4224 x4222)
+(or (not x4279) (not x2232) (not x2227))
+(or (not x4245) (not x4229))
+(or (not x2232) (not x2227) x4278)
+(or (not x4245) (not x4218))
+(or (not x4035) (not x69) (not x10) x4277)
+(or (not x4245) (not x4207))
+(or (not x4277) (not x4273) (not x4265) x4276 x4275)
+(or (not x4229) (not x4220) (not x2223))
+(or (not x4277) (not x4265) x4274 x4273)
+(or (not x4229) (not x4220) x734)
+(or (not x4277) x4266 x4265)
+(or (not x4229) (not x4218) (not x2224))
+(or (not x4275) (not x4273) (not x4265) x4277)
+(or (not x4229) (not x4218))
+(or (not x4276) (not x4273) (not x4265) x4277)
+(or (not x4229) (not x4216) (not x2225))
+(or (not x4274) (not x4265) x4277)
+(or (not x4229) (not x4216) x721)
+(or (not x4266) x4277)
+(or (not x4229) (not x4213) (not x2227))
+(or (not x4276) (not x4275))
+(or (not x4229) (not x4213) x705)
+(or (not x3792) x4276 x3689 x2289)
+(or (not x4229) (not x4211) x698)
+(or (not x4276) (not x3792) (not x2289) x3689)
+(or (not x4229) x4220 x4218 x4216 x4213 x4211)
+(or (not x4276) (not x3689) x3792 x2289)
+(or (not x4229) (not x4218))
+(or (not x3689) (not x2289) x4276 x3792)
+(or (not x4229) (not x4207))
+(or (not x3791) x4276 x3687 x2289)
+(or (not x4218) (not x4209) (not x2223))
+(or (not x4276) (not x3791) (not x2289) x3687)
+(or (not x4218) (not x4209) x734)
+(or (not x4276) (not x3687) x3791 x2289)
+(or (not x4218) (not x4207) (not x2224))
+(or (not x3687) (not x2289) x4276 x3791)
+(or (not x4218) (not x4207))
+(or (not x3790) x4276 x3685 x2289)
+(or (not x4218) (not x4205) (not x2225))
+(or (not x4276) (not x3790) (not x2289) x3685)
+(or (not x4218) (not x4205) x721)
+(or (not x4276) (not x3685) x3790 x2289)
+(or (not x4218) (not x4202) (not x2227))
+(or (not x3685) (not x2289) x4276 x3790)
+(or (not x4218) (not x4202) x705)
+(or (not x3789) x4276 x3683 x2289)
+(or (not x4218) (not x4200) x698)
+(or (not x4276) (not x3789) (not x2289) x3683)
+(or (not x4218) x4209 x4207 x4205 x4202 x4200)
+(or (not x4276) (not x3683) x3789 x2289)
+(or (not x4218) (not x4207))
+(or (not x3683) (not x2289) x4276 x3789)
+(or (not x4207) (not x2226))
+(or (not x3788) x4276 x3681 x2289)
+(or (not x4207) x714)
+(or (not x4276) (not x3788) (not x2289) x3681)
+(or (not x4207) (not x4197) (not x2227))
+(or (not x4276) (not x3681) x3788 x2289)
+(or (not x4207) (not x4197) x705)
+(or (not x3681) (not x2289) x4276 x3788)
+(or (not x4207) (not x4195) x698)
+(or (not x3791) (not x3687) x4275 x3792 x3689)
+(or (not x2224) x4259 x4245 x4229 x4218 x4207)
+(or (not x3790) (not x3685) x4275 x3791 x3687)
+(or (not x4257) (not x4248) (not x2223))
+(or (not x3789) (not x3683) x4275 x3790 x3685)
+(or (not x4257) (not x4248) x733)
+(or (not x3788) (not x3681) x4275 x3789 x3683)
+(or (not x4257) (not x4245) (not x2224))
+(or x4275 x3788 x3681)
+(or (not x4257) (not x4245) x727)
+(or (not x3792) (not x3689) x4275)
+(or (not x4257) (not x4242) (not x2225))
+(or (not x4275) (not x3689) x3792)
+(or (not x4257) (not x4242))
+(or (not x4275) (not x3792) x3689)
+(or (not x4257) (not x4238) (not x2227))
+(or (not x4275) (not x3687) x3791)
+(or (not x4257) (not x4238) x702)
+(or (not x4275) (not x3791) x3687)
+(or (not x4257) (not x4235) x697)
+(or (not x4275) (not x3685) x3790)
+(or (not x4257) x4248 x4245 x4242 x4238 x4235)
+(or (not x4275) (not x3790) x3685)
+(or (not x4257) (not x4242))
+(or (not x4275) (not x3683) x3789)
+(or (not x4257) (not x4227))
+(or (not x4275) (not x3789) x3683)
+(or (not x4257) (not x4216))
+(or (not x4275) (not x3681) x3788)
+(or (not x4257) (not x4205))
+(or (not x4275) (not x3788) x3681)
+(or (not x4242) (not x4231) (not x2223))
+(or (not x52) x4274 x4272 x3676)
+(or (not x4242) (not x4231) x733)
+(or (not x4274) (not x3676) (not x52) x4272)
+(or (not x4242) (not x4229) (not x2224))
+(or (not x4274) x4272 x3676 x52)
+(or (not x4242) (not x4229) x727)
+(or (not x3676) x4274 x4272 x52)
+(or (not x4242) (not x4227) (not x2225))
+(or (not x4272) (not x50) x4274 x4271 x3674)
+(or (not x4242) (not x4227))
+(or (not x4274) (not x4272) (not x3674) (not x50) x4271)
+(or (not x4242) (not x4224) (not x2227))
+(or (not x4274) (not x4272) x4271 x3674 x50)
+(or (not x4242) (not x4224) x702)
+(or (not x4272) (not x3674) x4274 x4271 x50)
+(or (not x4242) (not x4222) x697)
+(or (not x4271) (not x48) x4274 x4270 x3671)
+(or (not x4242) x4231 x4229 x4227 x4224 x4222)
+(or (not x4274) (not x4271) (not x3671) (not x48) x4270)
+(or (not x4242) (not x4227))
+(or (not x4274) (not x4271) x4270 x3671 x48)
+(or (not x4242) (not x4216))
+(or (not x4271) (not x3671) x4274 x4270 x48)
+(or (not x4242) (not x4205))
+(or (not x4270) (not x46) x4274 x4269 x3668)
+(or (not x4227) (not x4220) (not x2223))
+(or (not x4274) (not x4270) (not x3668) (not x46) x4269)
+(or (not x4227) (not x4220) x733)
+(or (not x4274) (not x4270) x4269 x3668 x46)
+(or (not x4227) (not x4218) (not x2224))
+(or (not x4270) (not x3668) x4274 x4269 x46)
+(or (not x4227) (not x4218) x727)
+(or (not x4269) (not x44) x4274 x4268 x3665)
+(or (not x4227) (not x4216) (not x2225))
+(or (not x4274) (not x4269) (not x3665) (not x44) x4268)
+(or (not x4227) (not x4216))
+(or (not x4274) (not x4269) x4268 x3665 x44)
+(or (not x4227) (not x4213) (not x2227))
+(or (not x4269) (not x3665) x4274 x4268 x44)
+(or (not x4227) (not x4213) x702)
+(or (not x4268) (not x149) x4274 x4267 x3662)
+(or (not x4227) (not x4211) x697)
+(or (not x4274) (not x4268) (not x3662) (not x149) x4267)
+(or (not x4227) x4220 x4218 x4216 x4213 x4211)
+(or (not x4274) (not x4268) x4267 x3662 x149)
+(or (not x4227) (not x4216))
+(or (not x4268) (not x3662) x4274 x4267 x149)
+(or (not x4227) (not x4205))
+(or (not x4274) (not x4273))
+(or (not x4216) (not x4209) (not x2223))
+(or (not x4267) x4273)
+(or (not x4216) (not x4209) x733)
+(or (not x4273) x4267)
+(or (not x4216) (not x4207) (not x2224))
+(or x4272 x3771 x3676)
+(or (not x4216) (not x4207) x727)
+(or (not x3771) (not x3676) x4272)
+(or (not x4216) (not x4205) (not x2225))
+(or (not x4272) (not x3676) x3771)
+(or (not x4216) (not x4205))
+(or (not x4272) (not x3771) x3676)
+(or (not x4216) (not x4202) (not x2227))
+(or (not x4272) x4271 x3768 x3674)
+(or (not x4216) (not x4202) x702)
+(or (not x4272) (not x3768) (not x3674) x4271)
+(or (not x4216) (not x4200) x697)
+(or (not x4271) (not x3674) x3768)
+(or (not x4216) x4209 x4207 x4205 x4202 x4200)
+(or (not x4271) (not x3768) x3674)
+(or (not x4216) (not x4205))
+(or (not x4271) x4272)
+(or (not x4205) (not x2226))
+(or (not x4271) x4270 x3765 x3671)
+(or (not x4205) x712)
+(or (not x4271) (not x3765) (not x3671) x4270)
+(or (not x4205) (not x4197) (not x2227))
+(or (not x4270) (not x3671) x3765)
+(or (not x4205) (not x4197) x702)
+(or (not x4270) (not x3765) x3671)
+(or (not x4205) (not x4195) x697)
+(or (not x4270) x4271)
+(or (not x2225) x4257 x4242 x4227 x4216 x4205)
+(or (not x4270) x4269 x3759 x3668)
+(or (not x4252) (not x4248) (not x2223))
+(or (not x4270) (not x3759) (not x3668) x4269)
+(or (not x4252) (not x4248) x731)
+(or (not x4269) (not x3668) x3759)
+(or (not x4252) (not x4245) (not x2224))
+(or (not x4269) (not x3759) x3668)
+(or (not x4252) (not x4245) x724)
+(or (not x4269) x4270)
+(or (not x4252) (not x4242) (not x2225))
+(or (not x4269) x4268 x3755 x3665)
+(or (not x4252) (not x4242) x719)
+(or (not x4269) (not x3755) (not x3665) x4268)
+(or (not x4268) (not x3665) x3755)
+(or (not x4268) (not x3755) x3665)
+(or (not x4252) (not x4238) (not x2227))
+(or (not x4268) x4269)
+(or (not x4252) (not x4238))
+(or (not x4268) x4267 x3749 x3662)
+(or (not x4252) (not x4235) x695)
+(or (not x4268) (not x3749) (not x3662) x4267)
+(or (not x4252) x4248 x4245 x4242 x4238 x4235)
+(or (not x4267) (not x3662) x3749)
+(or (not x4252) (not x4238))
+(or (not x4267) (not x3749) x3662)
+(or (not x4252) (not x4224))
+(or (not x4267) x4268)
+(or (not x4252) (not x4213))
+(or (not x4266) (not x2228) (not x2217))
+(or (not x4252) (not x4202))
+(or (not x2228) (not x2217) x4265)
+(or (not x4252) (not x4197))
+(or (not x4266) (not x2228) (not x2218) x95)
+(or (not x4238) (not x4231) (not x2223))
+(or (not x2228) (not x2218) (not x95) x4266)
+(or (not x4238) (not x4231) x731)
+(or (not x4265) (not x2228) (not x2218))
+(or (not x4238) (not x4229) (not x2224))
+(or (not x4266) (not x2228) (not x2219) x94)
+(or (not x4238) (not x4229) x724)
+(or (not x2228) (not x2219) (not x94) x4266)
+(or (not x4238) (not x4227) (not x2225))
+(or (not x4265) (not x2228) (not x2219))
+(or (not x4238) (not x4227) x719)
+(or (not x4266) (not x2228) (not x2220) x92)
+(or (not x2228) (not x2220) (not x92) x4266)
+(or (not x4265) (not x2228) (not x2220))
+(or (not x4238) (not x4224) (not x2227))
+(or (not x4266) (not x2228) (not x2221) x91)
+(or (not x4238) (not x4224))
+(or (not x2228) (not x2221) (not x91) x4266)
+(or (not x4238) (not x4222) x695)
+(or (not x4265) (not x2228) (not x2221))
+(or (not x4238) x4231 x4229 x4227 x4224 x4222)
+(or (not x4266) (not x2229) (not x2217) x89)
+(or (not x4238) (not x4224))
+(or (not x2229) (not x2217) (not x89) x4266)
+(or (not x4238) (not x4213))
+(or (not x4265) (not x2229) (not x2217))
+(or (not x4238) (not x4202))
+(or (not x4266) (not x2229) (not x2218))
+(or (not x4238) (not x4197))
+(or (not x2229) (not x2218) x4265)
+(or (not x4224) (not x4220) (not x2223))
+(or (not x4266) (not x2229) (not x2219) x88)
+(or (not x4224) (not x4220) x731)
+(or (not x2229) (not x2219) (not x88) x4266)
+(or (not x4224) (not x4218) (not x2224))
+(or (not x4265) (not x2229) (not x2219))
+(or (not x4224) (not x4218) x724)
+(or (not x4266) (not x2229) (not x2220) x87)
+(or (not x4224) (not x4216) (not x2225))
+(or (not x2229) (not x2220) (not x87) x4266)
+(or (not x4224) (not x4216) x719)
+(or (not x4265) (not x2229) (not x2220))
+(or (not x4266) (not x2229) (not x2221) x86)
+(or (not x2229) (not x2221) (not x86) x4266)
+(or (not x4224) (not x4213) (not x2227))
+(or (not x4265) (not x2229) (not x2221))
+(or (not x4224) (not x4213))
+(or (not x4266) (not x2230) (not x2217) x82)
+(or (not x4224) (not x4211) x695)
+(or (not x2230) (not x2217) (not x82) x4266)
+(or (not x4224) x4220 x4218 x4216 x4213 x4211)
+(or (not x4265) (not x2230) (not x2217))
+(or (not x4224) (not x4213))
+(or (not x4266) (not x2230) (not x2218) x81)
+(or (not x4224) (not x4202))
+(or (not x2230) (not x2218) (not x81) x4266)
+(or (not x4224) (not x4197))
+(or (not x4265) (not x2230) (not x2218))
+(or (not x4213) (not x4209) (not x2223))
+(or (not x4266) (not x2230) (not x2219))
+(or (not x4213) (not x4209) x731)
+(or (not x2230) (not x2219) x4265)
+(or (not x4213) (not x4207) (not x2224))
+(or (not x4266) (not x2230) (not x2220) x79)
+(or (not x4213) (not x4207) x724)
+(or (not x2230) (not x2220) (not x79) x4266)
+(or (not x4213) (not x4205) (not x2225))
+(or (not x4265) (not x2230) (not x2220))
+(or (not x4213) (not x4205) x719)
+(or (not x4266) (not x2230) (not x2221) x77)
+(or (not x2230) (not x2221) (not x77) x4266)
+(or (not x4265) (not x2230) (not x2221))
+(or (not x4213) (not x4202) (not x2227))
+(or (not x4266) (not x2231) (not x2217) x73)
+(or (not x4213) (not x4202))
+(or (not x2231) (not x2217) (not x73) x4266)
+(or (not x4213) (not x4200) x695)
+(or (not x4265) (not x2231) (not x2217))
+(or (not x4213) x4209 x4207 x4205 x4202 x4200)
+(or (not x4266) (not x2231) (not x2218) x67)
+(or (not x4213) (not x4202))
+(or (not x2231) (not x2218) (not x67) x4266)
+(or (not x4213) (not x4197))
+(or (not x4265) (not x2231) (not x2218))
+(or (not x4202) (not x2226))
+(or (not x4266) (not x2231) (not x2219) x66)
+(or (not x4202) x710)
+(or (not x2231) (not x2219) (not x66) x4266)
+(or (not x4202) (not x4197) (not x2227))
+(or (not x4265) (not x2231) (not x2219))
+(or (not x4202) (not x4197))
+(or (not x4266) (not x2231) (not x2220))
+(or (not x4202) (not x4195) x695)
+(or (not x2231) (not x2220) x4265)
+(or (not x4202) (not x4197))
+(or (not x4266) (not x2231) (not x2221) x65)
+(or (not x2227) x4252 x4238 x4224 x4213 x4202 x4197)
+(or (not x2231) (not x2221) (not x65) x4266)
+(or (not x4250) (not x4248) (not x2223))
+(or (not x4265) (not x2231) (not x2221))
+(or (not x4250) (not x4248) x729)
+(or (not x4266) (not x2232) (not x2217) x58)
+(or (not x4250) (not x4245) (not x2224))
+(or (not x2232) (not x2217) (not x58) x4266)
+(or (not x4250) (not x4245) x723)
+(or (not x4265) (not x2232) (not x2217))
+(or (not x4250) (not x4242) (not x2225))
+(or (not x4266) (not x2232) (not x2218) x57)
+(or (not x4250) (not x4242) x717)
+(or (not x2232) (not x2218) (not x57) x4266)
+(or (not x4265) (not x2232) (not x2218))
+(or (not x4266) (not x2232) (not x2219) x56)
+(or (not x4250) (not x4238) (not x2227))
+(or (not x2232) (not x2219) (not x56) x4266)
+(or (not x4250) (not x4238) x700)
+(or (not x4265) (not x2232) (not x2219))
+(or (not x4250) (not x4235))
+(or (not x4266) (not x2232) (not x2220) x55)
+(or (not x4250) x4248 x4245 x4242 x4238 x4235)
+(or (not x2232) (not x2220) (not x55) x4266)
+(or (not x4250) (not x4235))
+(or (not x4265) (not x2232) (not x2220))
+(or (not x4250) (not x4222))
+(or (not x4266) (not x2232) (not x2221))
+(or (not x4250) (not x4211))
+(or (not x2232) (not x2221) x4265)
+(or (not x4250) (not x4200))
+(or (not x4264) (not x4253) (not x4196) x4263 x4262)
+(or (not x4250) (not x4195))
+(or (not x4264) (not x4196) x4254 x4253)
+(or (not x4235) (not x4231) (not x2223))
+(or (not x4264) x4198 x4196)
+(or (not x4235) (not x4231) x729)
+(or (not x4262) (not x4253) (not x4196) x4264)
+(or (not x4235) (not x4229) (not x2224))
+(or (not x4263) (not x4253) (not x4196) x4264)
+(or (not x4235) (not x4229) x723)
+(or (not x4254) (not x4196) x4264)
+(or (not x4235) (not x4227) (not x2225))
+(or (not x4198) x4264)
+(or (not x4235) (not x4227) x717)
+(or (not x4263) (not x4262))
+(or (not x3792) x4263 x3688 x2289)
+(or (not x4263) (not x3792) (not x2289) x3688)
+(or (not x4235) (not x4224) (not x2227))
+(or (not x4263) (not x3688) x3792 x2289)
+(or (not x4235) (not x4224) x700)
+(or (not x3688) (not x2289) x4263 x3792)
+(or (not x4235) (not x4222))
+(or (not x3791) x4263 x3686 x2289)
+(or (not x4235) x4231 x4229 x4227 x4224 x4222)
+(or (not x4263) (not x3791) (not x2289) x3686)
+(or (not x4235) (not x4222))
+(or (not x4263) (not x3686) x3791 x2289)
+(or (not x4235) (not x4211))
+(or (not x3686) (not x2289) x4263 x3791)
+(or (not x4235) (not x4200))
+(or (not x3790) x4263 x3684 x2289)
+(or (not x4235) (not x4195))
+(or (not x4263) (not x3790) (not x2289) x3684)
+(or (not x4222) (not x4220) (not x2223))
+(or (not x4263) (not x3684) x3790 x2289)
+(or (not x4222) (not x4220) x729)
+(or (not x3684) (not x2289) x4263 x3790)
+(or (not x4222) (not x4218) (not x2224))
+(or (not x3789) x4263 x3682 x2289)
+(or (not x4222) (not x4218) x723)
+(or (not x4263) (not x3789) (not x2289) x3682)
+(or (not x4222) (not x4216) (not x2225))
+(or (not x4263) (not x3682) x3789 x2289)
+(or (not x4222) (not x4216) x717)
+(or (not x3682) (not x2289) x4263 x3789)
+(or (not x3788) x4263 x3680 x2289)
+(or (not x4263) (not x3788) (not x2289) x3680)
+(or (not x4222) (not x4213) (not x2227))
+(or (not x4263) (not x3680) x3788 x2289)
+(or (not x4222) (not x4213) x700)
+(or (not x3680) (not x2289) x4263 x3788)
+(or (not x4222) (not x4211))
+(or (not x3791) (not x3686) x4262 x3792 x3688)
+(or (not x4222) x4220 x4218 x4216 x4213 x4211)
+(or (not x3790) (not x3684) x4262 x3791 x3686)
+(or (not x4222) (not x4211))
+(or (not x3789) (not x3682) x4262 x3790 x3684)
+(or (not x4222) (not x4200))
+(or (not x3788) (not x3680) x4262 x3789 x3682)
+(or (not x4222) (not x4195))
+(or x4262 x3788 x3680)
+(or (not x4211) (not x4209) (not x2223))
+(or (not x3792) (not x3688) x4262)
+(or (not x4211) (not x4209) x729)
+(or (not x4262) (not x3688) x3792)
+(or (not x4211) (not x4207) (not x2224))
+(or (not x4262) (not x3792) x3688)
+(or (not x4211) (not x4207) x723)
+(or (not x4262) (not x3686) x3791)
+(or (not x4211) (not x4205) (not x2225))
+(or (not x4262) (not x3791) x3686)
+(or (not x4211) (not x4205) x717)
+(or (not x4262) (not x3684) x3790)
+(or (not x4262) (not x3790) x3684)
+(or (not x4262) (not x3682) x3789)
+(or (not x4211) (not x4202) (not x2227))
+(or (not x4262) (not x3789) x3682)
+(or (not x4211) (not x4202) x700)
+(or (not x4262) (not x3680) x3788)
+(or (not x4211) (not x4200))
+(or (not x4262) (not x3788) x3680)
+(or (not x4211) x4209 x4207 x4205 x4202 x4200)
+(or (not x52) x4254 x4246 x3675)
+(or (not x4211) (not x4200))
+(or (not x4254) (not x3675) (not x52) x4246)
+(or (not x4211) (not x4195))
+(or (not x4254) x4246 x3675 x52)
+(or (not x4200) (not x2226))
+(or (not x3675) x4254 x4246 x52)
+(or (not x4200) x709)
+(or (not x4246) (not x50) x4254 x4243 x3673)
+(or (not x4200) (not x4197) (not x2227))
+(or (not x4254) (not x4246) (not x3673) (not x50) x4243)
+(or (not x4200) (not x4197) x700)
+(or (not x4254) (not x4246) x4243 x3673 x50)
+(or (not x4200) (not x4195))
+(or (not x4246) (not x3673) x4254 x4243 x50)
+(or (not x4200) (not x4195))
+(or (not x4243) (not x48) x4254 x4240 x3670)
+(or (not x4261) (not x4258))
+(or (not x4254) (not x4243) (not x3670) (not x48) x4240)
+(or (not x4261) x4260 x4258)
+(or (not x4254) (not x4243) x4240 x3670 x48)
+(or (not x4258) x4261 x4260)
+(or (not x4243) (not x3670) x4254 x4240 x48)
+(or (not x4260) x4261 x4258)
+(or (not x4240) (not x46) x4254 x4236 x3667)
+(or (not x4259) (not x4256))
+(or (not x4254) (not x4240) (not x3667) (not x46) x4236)
+(or (not x4259) x4258 x4256)
+(or (not x4254) (not x4240) x4236 x3667 x46)
+(or (not x4256) x4259 x4258)
+(or (not x4240) (not x3667) x4254 x4236 x46)
+(or (not x4258) x4259 x4256)
+(or (not x4236) (not x44) x4254 x4233 x3664)
+(or (not x4257) (not x4255))
+(or (not x4254) (not x4236) (not x3664) (not x44) x4233)
+(or (not x4257) x4256 x4255)
+(or (not x4254) (not x4236) x4233 x3664 x44)
+(or (not x4255) x4257 x4256)
+(or (not x4236) (not x3664) x4254 x4233 x44)
+(or (not x4256) x4257 x4255)
+(or (not x4233) (not x149) x4254 x4232 x3661)
+(or (not x4254) (not x4233) (not x3661) (not x149) x4232)
+(or (not x4254) (not x4233) x4232 x3661 x149)
+(or (not x4251) x4255)
+(or (not x4233) (not x3661) x4254 x4232 x149)
+(or (not x4255) x4251)
+(or (not x4254) (not x4253))
+(or (not x4252) (not x4249))
+(or (not x4232) x4253)
+(or (not x4252) x4251 x4249)
+(or (not x4253) x4232)
+(or (not x4249) x4252 x4251)
+(or x4246 x3771 x3675)
+(or (not x4251) x4252 x4249)
+(or (not x3771) (not x3675) x4246)
+(or (not x4250) x4249)
+(or (not x4246) (not x3675) x3771)
+(or (not x4249) x4250)
+(or (not x4246) (not x3771) x3675)
+(or (not x4248) (not x4244))
+(or (not x4246) x4243 x3768 x3673)
+(or (not x4248) x4247 x4244)
+(or (not x4246) (not x3768) (not x3673) x4243)
+(or (not x4244) x4248 x4247)
+(or (not x4243) (not x3673) x3768)
+(or (not x4247) x4248 x4244)
+(or (not x4243) (not x3768) x3673)
+(or (not x4245) (not x4241))
+(or (not x4243) x4246)
+(or (not x4245) x4244 x4241)
+(or (not x4243) x4240 x3765 x3670)
+(or (not x4241) x4245 x4244)
+(or (not x4243) (not x3765) (not x3670) x4240)
+(or (not x4244) x4245 x4241)
+(or (not x4240) (not x3670) x3765)
+(or (not x4242) (not x4239))
+(or (not x4240) (not x3765) x3670)
+(or (not x4242) x4241 x4239)
+(or (not x4240) x4243)
+(or (not x4239) x4242 x4241)
+(or (not x4240) x4236 x3759 x3667)
+(or (not x4241) x4242 x4239)
+(or (not x4240) (not x3759) (not x3667) x4236)
+(or (not x4236) (not x3667) x3759)
+(or (not x4236) (not x3759) x3667)
+(or (not x4237) x4239)
+(or (not x4236) x4240)
+(or (not x4239) x4237)
+(or (not x4236) x4233 x3755 x3664)
+(or (not x4238) (not x4234))
+(or (not x4236) (not x3755) (not x3664) x4233)
+(or (not x4238) x4237 x4234)
+(or (not x4233) (not x3664) x3755)
+(or (not x4234) x4238 x4237)
+(or (not x4233) (not x3755) x3664)
+(or (not x4237) x4238 x4234)
+(or (not x4233) x4236)
+(or (not x4235) x4234)
+(or (not x4233) x4232 x3749 x3661)
+(or (not x4234) x4235)
+(or (not x4233) (not x3749) (not x3661) x4232)
+(or (not x4231) (not x4228))
+(or (not x4232) (not x3661) x3749)
+(or (not x4231) x4230 x4228)
+(or (not x4232) (not x3749) x3661)
+(or (not x4228) x4231 x4230)
+(or (not x4232) x4233)
+(or (not x4230) x4231 x4228)
+(or (not x4198) (not x2228) (not x2212))
+(or (not x4229) (not x4226))
+(or (not x2228) (not x2212) x4196)
+(or (not x4229) x4228 x4226)
+(or (not x4198) (not x2228) (not x2213) x95)
+(or (not x4226) x4229 x4228)
+(or (not x2228) (not x2213) (not x95) x4198)
+(or (not x4228) x4229 x4226)
+(or (not x4196) (not x2228) (not x2213))
+(or (not x4227) (not x4225))
+(or (not x4198) (not x2228) (not x2214) x94)
+(or (not x4227) x4226 x4225)
+(or (not x2228) (not x2214) (not x94) x4198)
+(or (not x4225) x4227 x4226)
+(or (not x4196) (not x2228) (not x2214))
+(or (not x4226) x4227 x4225)
+(or (not x4198) (not x2228) (not x2215) x92)
+(or (not x2228) (not x2215) (not x92) x4198)
+(or (not x4196) (not x2228) (not x2215))
+(or (not x4223) x4225)
+(or (not x4198) (not x2228) (not x2216) x91)
+(or (not x4225) x4223)
+(or (not x2228) (not x2216) (not x91) x4198)
+(or (not x4224) (not x4221))
+(or (not x4196) (not x2228) (not x2216))
+(or (not x4224) x4223 x4221)
+(or (not x4198) (not x2229) (not x2212) x89)
+(or (not x4221) x4224 x4223)
+(or (not x2229) (not x2212) (not x89) x4198)
+(or (not x4223) x4224 x4221)
+(or (not x4196) (not x2229) (not x2212))
+(or (not x4222) x4221)
+(or (not x4198) (not x2229) (not x2213))
+(or (not x4221) x4222)
+(or (not x2229) (not x2213) x4196)
+(or (not x4220) (not x4217))
+(or (not x4198) (not x2229) (not x2214) x88)
+(or (not x4220) x4219 x4217)
+(or (not x2229) (not x2214) (not x88) x4198)
+(or (not x4217) x4220 x4219)
+(or (not x4196) (not x2229) (not x2214))
+(or (not x4219) x4220 x4217)
+(or (not x4198) (not x2229) (not x2215) x87)
+(or (not x4218) (not x4215))
+(or (not x2229) (not x2215) (not x87) x4198)
+(or (not x4218) x4217 x4215)
+(or (not x4196) (not x2229) (not x2215))
+(or (not x4215) x4218 x4217)
+(or (not x4198) (not x2229) (not x2216) x86)
+(or (not x4217) x4218 x4215)
+(or (not x2229) (not x2216) (not x86) x4198)
+(or (not x4216) (not x4214))
+(or (not x4196) (not x2229) (not x2216))
+(or (not x4216) x4215 x4214)
+(or (not x4198) (not x2230) (not x2212) x82)
+(or (not x4214) x4216 x4215)
+(or (not x2230) (not x2212) (not x82) x4198)
+(or (not x4215) x4216 x4214)
+(or (not x4196) (not x2230) (not x2212))
+(or (not x4198) (not x2230) (not x2213) x81)
+(or (not x2230) (not x2213) (not x81) x4198)
+(or (not x4212) x4214)
+(or (not x4196) (not x2230) (not x2213))
+(or (not x4214) x4212)
+(or (not x4198) (not x2230) (not x2214))
+(or (not x4213) (not x4210))
+(or (not x2230) (not x2214) x4196)
+(or (not x4213) x4212 x4210)
+(or (not x4198) (not x2230) (not x2215) x79)
+(or (not x4210) x4213 x4212)
+(or (not x2230) (not x2215) (not x79) x4198)
+(or (not x4212) x4213 x4210)
+(or (not x4196) (not x2230) (not x2215))
+(or (not x4211) x4210)
+(or (not x4198) (not x2230) (not x2216) x77)
+(or (not x4210) x4211)
+(or (not x2230) (not x2216) (not x77) x4198)
+(or (not x4209) (not x4206))
+(or (not x4196) (not x2230) (not x2216))
+(or (not x4209) x4208 x4206)
+(or (not x4198) (not x2231) (not x2212) x73)
+(or (not x4206) x4209 x4208)
+(or (not x2231) (not x2212) (not x73) x4198)
+(or (not x4208) x4209 x4206)
+(or (not x4196) (not x2231) (not x2212))
+(or (not x4207) (not x4204))
+(or (not x4198) (not x2231) (not x2213) x67)
+(or (not x4207) x4206 x4204)
+(or (not x2231) (not x2213) (not x67) x4198)
+(or (not x4204) x4207 x4206)
+(or (not x4196) (not x2231) (not x2213))
+(or (not x4206) x4207 x4204)
+(or (not x4198) (not x2231) (not x2214) x66)
+(or (not x4205) (not x4203))
+(or (not x2231) (not x2214) (not x66) x4198)
+(or (not x4205) x4204 x4203)
+(or (not x4196) (not x2231) (not x2214))
+(or (not x4203) x4205 x4204)
+(or (not x4198) (not x2231) (not x2215))
+(or (not x4204) x4205 x4203)
+(or (not x2231) (not x2215) x4196)
+(or (not x4198) (not x2231) (not x2216) x65)
+(or (not x2231) (not x2216) (not x65) x4198)
+(or (not x4201) x4203)
+(or (not x4196) (not x2231) (not x2216))
+(or (not x4203) x4201)
+(or (not x4198) (not x2232) (not x2212) x58)
+(or (not x4202) (not x4199))
+(or (not x2232) (not x2212) (not x58) x4198)
+(or (not x4202) x4201 x4199)
+(or (not x4196) (not x2232) (not x2212))
+(or (not x4199) x4202 x4201)
+(or (not x4198) (not x2232) (not x2213) x57)
+(or (not x4201) x4202 x4199)
+(or (not x2232) (not x2213) (not x57) x4198)
+(or (not x4200) x4199)
+(or (not x4196) (not x2232) (not x2213))
+(or (not x4199) x4200)
+(or (not x4198) (not x2232) (not x2214) x56)
+(or (not x2232) (not x2214) (not x56) x4198)
+(or (not x4196) (not x2232) (not x2214))
+(or (not x4198) (not x2232) (not x2215) x55)
+(or (not x2232) (not x2215) (not x55) x4198)
+(or (not x4197) (not x4194))
+(or (not x4196) (not x2232) (not x2215))
+(or (not x4197) x4194)
+(or (not x4198) (not x2232) (not x2216))
+(or (not x4194) x4197)
+(or (not x2232) (not x2216) x4196)
+(or (not x4032) (not x69) (not x6) x4193)
+(or (not x4195) x4194)
+(or (not x4193) (not x4189) (not x4181) x4192 x4191)
+(or (not x4194) x4195)
+(or (not x4193) (not x4181) x4190 x4189)
+(or (not x4169) (not x4158) (not x2217))
+(or (not x4193) x4182 x4181)
+(or (not x4169) (not x4158))
+(or (not x4191) (not x4189) (not x4181) x4193)
+(or (not x4169) (not x4156) (not x2218))
+(or (not x4192) (not x4189) (not x4181) x4193)
+(or (not x4169) (not x4156) x728)
+(or (not x4190) (not x4181) x4193)
+(or (not x4169) (not x4154) (not x2219))
+(or (not x4182) x4193)
+(or (not x4169) (not x4154) x722)
+(or (not x4192) (not x4191))
+(or (not x4169) (not x4152) (not x2220))
+(or (not x3713) x4192 x3850 x2287)
+(or (not x4169) (not x4152) x715)
+(or (not x4192) (not x3713) (not x2287) x3850)
+(or (not x4169) (not x4149) x699)
+(or (not x4192) (not x3850) x3713 x2287)
+(or (not x4169) x4158 x4156 x4154 x4152 x4149)
+(or (not x3850) (not x2287) x4192 x3713)
+(or (not x4169) (not x4158))
+(or (not x3712) x4192 x3848 x2287)
+(or (not x4169) (not x4147))
+(or (not x4192) (not x3712) (not x2287) x3848)
+(or (not x4169) (not x4134))
+(or (not x4192) (not x3848) x3712 x2287)
+(or (not x4169) (not x4122))
+(or (not x3848) (not x2287) x4192 x3712)
+(or (not x4158) (not x4147) (not x2217))
+(or (not x3711) x4192 x3847 x2287)
+(or (not x4158) (not x4147))
+(or (not x4192) (not x3711) (not x2287) x3847)
+(or (not x4158) (not x4145) (not x2218))
+(or (not x4192) (not x3847) x3711 x2287)
+(or (not x4158) (not x4145) x728)
+(or (not x3847) (not x2287) x4192 x3711)
+(or (not x4158) (not x4143) (not x2219))
+(or (not x3710) x4192 x3845 x2287)
+(or (not x4158) (not x4143) x722)
+(or (not x4192) (not x3710) (not x2287) x3845)
+(or (not x4158) (not x4141) (not x2220))
+(or (not x4192) (not x3845) x3710 x2287)
+(or (not x4158) (not x4141) x715)
+(or (not x3845) (not x2287) x4192 x3710)
+(or (not x4158) (not x4138) x699)
+(or (not x3709) x4192 x3843 x2287)
+(or (not x4158) x4147 x4145 x4143 x4141 x4138)
+(or (not x4192) (not x3709) (not x2287) x3843)
+(or (not x4158) (not x4147))
+(or (not x4192) (not x3843) x3709 x2287)
+(or (not x4158) (not x4134))
+(or (not x3843) (not x2287) x4192 x3709)
+(or (not x4158) (not x4122))
+(or (not x3848) (not x3712) x4191 x3850 x3713)
+(or (not x4147) (not x4134) (not x2217))
+(or (not x3847) (not x3711) x4191 x3848 x3712)
+(or (not x4147) (not x4134))
+(or (not x3845) (not x3710) x4191 x3847 x3711)
+(or (not x4147) (not x4132) (not x2218))
+(or (not x3843) (not x3709) x4191 x3845 x3710)
+(or (not x4147) (not x4132) x728)
+(or x4191 x3843 x3709)
+(or (not x4147) (not x4129) (not x2219))
+(or (not x3850) (not x3713) x4191)
+(or (not x4147) (not x4129) x722)
+(or (not x4191) (not x3850) x3713)
+(or (not x4147) (not x4127) (not x2220))
+(or (not x4191) (not x3713) x3850)
+(or (not x4147) (not x4127) x715)
+(or (not x4191) (not x3848) x3712)
+(or (not x4147) (not x4124) x699)
+(or (not x4191) (not x3712) x3848)
+(or (not x4147) x4134 x4132 x4129 x4127 x4124)
+(or (not x4191) (not x3847) x3711)
+(or (not x4147) (not x4134))
+(or (not x4191) (not x3711) x3847)
+(or (not x4147) (not x4122))
+(or (not x4191) (not x3845) x3710)
+(or (not x4134) (not x4122) (not x2217))
+(or (not x4191) (not x3710) x3845)
+(or (not x4134) (not x4122))
+(or (not x4191) (not x3843) x3709)
+(or (not x4134) (not x4120) (not x2218))
+(or (not x4191) (not x3709) x3843)
+(or (not x4134) (not x4120) x728)
+(or (not x52) x4190 x4188 x3832)
+(or (not x4134) (not x4117) (not x2219))
+(or (not x4190) (not x3832) (not x52) x4188)
+(or (not x4134) (not x4117) x722)
+(or (not x4190) x4188 x3832 x52)
+(or (not x4134) (not x4115) (not x2220))
+(or (not x3832) x4190 x4188 x52)
+(or (not x4134) (not x4115) x715)
+(or (not x4188) (not x50) x4190 x4187 x3831)
+(or (not x4134) (not x4112) x699)
+(or (not x4190) (not x4188) (not x3831) (not x50) x4187)
+(or (not x4134) x4122 x4120 x4117 x4115 x4112)
+(or (not x4190) (not x4188) x4187 x3831 x50)
+(or (not x4134) (not x4122))
+(or (not x4188) (not x3831) x4190 x4187 x50)
+(or (not x4122) (not x2221))
+(or (not x4187) (not x48) x4190 x4186 x3829)
+(or (not x4122) x707)
+(or (not x4190) (not x4187) (not x3829) (not x48) x4186)
+(or (not x2217) x4169 x4158 x4147 x4134 x4122)
+(or (not x4190) (not x4187) x4186 x3829 x48)
+(or (not x4167) (not x4158) (not x2217))
+(or (not x4187) (not x3829) x4190 x4186 x48)
+(or (not x4167) (not x4158) x734)
+(or (not x4186) (not x46) x4190 x4185 x3827)
+(or (not x4167) (not x4156) (not x2218))
+(or (not x4190) (not x4186) (not x3827) (not x46) x4185)
+(or (not x4167) (not x4156))
+(or (not x4190) (not x4186) x4185 x3827 x46)
+(or (not x4167) (not x4154) (not x2219))
+(or (not x4186) (not x3827) x4190 x4185 x46)
+(or (not x4167) (not x4154) x721)
+(or (not x4185) (not x44) x4190 x4184 x3825)
+(or (not x4167) (not x4152) (not x2220))
+(or (not x4190) (not x4185) (not x3825) (not x44) x4184)
+(or (not x4167) (not x4152) x714)
+(or (not x4190) (not x4185) x4184 x3825 x44)
+(or (not x4167) (not x4149) x698)
+(or (not x4185) (not x3825) x4190 x4184 x44)
+(or (not x4167) x4158 x4156 x4154 x4152 x4149)
+(or (not x4184) (not x149) x4190 x4183 x3823)
+(or (not x4167) (not x4156))
+(or (not x4190) (not x4184) (not x3823) (not x149) x4183)
+(or (not x4167) (not x4145))
+(or (not x4190) (not x4184) x4183 x3823 x149)
+(or (not x4167) (not x4132))
+(or (not x4184) (not x3823) x4190 x4183 x149)
+(or (not x4167) (not x4120))
+(or (not x4190) (not x4189))
+(or (not x4156) (not x4147) (not x2217))
+(or (not x4183) x4189)
+(or (not x4156) (not x4147) x734)
+(or (not x4189) x4183)
+(or (not x4156) (not x4145) (not x2218))
+(or x4188 x3832 x3705)
+(or (not x4156) (not x4145))
+(or (not x3832) (not x3705) x4188)
+(or (not x4156) (not x4143) (not x2219))
+(or (not x4188) (not x3832) x3705)
+(or (not x4156) (not x4143) x721)
+(or (not x4188) (not x3705) x3832)
+(or (not x4156) (not x4141) (not x2220))
+(or (not x4188) x4187 x3831 x3704)
+(or (not x4156) (not x4141) x714)
+(or (not x4188) (not x3831) (not x3704) x4187)
+(or (not x4156) (not x4138) x698)
+(or (not x4187) (not x3831) x3704)
+(or (not x4156) x4147 x4145 x4143 x4141 x4138)
+(or (not x4187) (not x3704) x3831)
+(or (not x4156) (not x4145))
+(or (not x4187) x4188)
+(or (not x4156) (not x4132))
+(or (not x4187) x4186 x3829 x3702)
+(or (not x4156) (not x4120))
+(or (not x4187) (not x3829) (not x3702) x4186)
+(or (not x4145) (not x4134) (not x2217))
+(or (not x4186) (not x3829) x3702)
+(or (not x4145) (not x4134) x734)
+(or (not x4186) (not x3702) x3829)
+(or (not x4145) (not x4132) (not x2218))
+(or (not x4186) x4187)
+(or (not x4145) (not x4132))
+(or (not x4186) x4185 x3827 x3700)
+(or (not x4145) (not x4129) (not x2219))
+(or (not x4186) (not x3827) (not x3700) x4185)
+(or (not x4145) (not x4129) x721)
+(or (not x4185) (not x3827) x3700)
+(or (not x4145) (not x4127) (not x2220))
+(or (not x4185) (not x3700) x3827)
+(or (not x4145) (not x4127) x714)
+(or (not x4185) x4186)
+(or (not x4145) (not x4124) x698)
+(or (not x4185) x4184 x3825 x3698)
+(or (not x4145) x4134 x4132 x4129 x4127 x4124)
+(or (not x4185) (not x3825) (not x3698) x4184)
+(or (not x4145) (not x4132))
+(or (not x4184) (not x3825) x3698)
+(or (not x4145) (not x4120))
+(or (not x4184) (not x3698) x3825)
+(or (not x4132) (not x4122) (not x2217))
+(or (not x4184) x4185)
+(or (not x4132) (not x4122) x734)
+(or (not x4184) x4183 x3823 x3696)
+(or (not x4132) (not x4120) (not x2218))
+(or (not x4184) (not x3823) (not x3696) x4183)
+(or (not x4132) (not x4120))
+(or (not x4183) (not x3823) x3696)
+(or (not x4132) (not x4117) (not x2219))
+(or (not x4183) (not x3696) x3823)
+(or (not x4132) (not x4117) x721)
+(or (not x4183) x4184)
+(or (not x4132) (not x4115) (not x2220))
+(or (not x4182) (not x2239) (not x2223))
+(or (not x4132) (not x4115) x714)
+(or (not x2239) (not x2223) x4181)
+(or (not x4132) (not x4112) x698)
+(or (not x4182) (not x2240) (not x2223) x95)
+(or (not x4132) x4122 x4120 x4117 x4115 x4112)
+(or (not x2240) (not x2223) (not x95) x4182)
+(or (not x4132) (not x4120))
+(or (not x4181) (not x2240) (not x2223))
+(or (not x4120) (not x2221))
+(or (not x4182) (not x2241) (not x2223) x94)
+(or (not x4120) x705)
+(or (not x2241) (not x2223) (not x94) x4182)
+(or (not x2218) x4167 x4156 x4145 x4132 x4120)
+(or (not x4181) (not x2241) (not x2223))
+(or (not x4165) (not x4158) (not x2217))
+(or (not x4182) (not x2242) (not x2223) x92)
+(or (not x4165) (not x4158) x733)
+(or (not x2242) (not x2223) (not x92) x4182)
+(or (not x4165) (not x4156) (not x2218))
+(or (not x4181) (not x2242) (not x2223))
+(or (not x4165) (not x4156) x727)
+(or (not x4182) (not x2243) (not x2223) x91)
+(or (not x4165) (not x4154) (not x2219))
+(or (not x2243) (not x2223) (not x91) x4182)
+(or (not x4165) (not x4154))
+(or (not x4181) (not x2243) (not x2223))
+(or (not x4165) (not x4152) (not x2220))
+(or (not x4182) (not x2239) (not x2224) x89)
+(or (not x4165) (not x4152) x712)
+(or (not x2239) (not x2224) (not x89) x4182)
+(or (not x4165) (not x4149) x697)
+(or (not x4181) (not x2239) (not x2224))
+(or (not x4165) x4158 x4156 x4154 x4152 x4149)
+(or (not x4182) (not x2240) (not x2224))
+(or (not x4165) (not x4154))
+(or (not x2240) (not x2224) x4181)
+(or (not x4165) (not x4143))
+(or (not x4182) (not x2241) (not x2224) x88)
+(or (not x4165) (not x4129))
+(or (not x2241) (not x2224) (not x88) x4182)
+(or (not x4165) (not x4117))
+(or (not x4181) (not x2241) (not x2224))
+(or (not x4154) (not x4147) (not x2217))
+(or (not x4182) (not x2242) (not x2224) x87)
+(or (not x4154) (not x4147) x733)
+(or (not x2242) (not x2224) (not x87) x4182)
+(or (not x4154) (not x4145) (not x2218))
+(or (not x4181) (not x2242) (not x2224))
+(or (not x4154) (not x4145) x727)
+(or (not x4182) (not x2243) (not x2224) x86)
+(or (not x4154) (not x4143) (not x2219))
+(or (not x2243) (not x2224) (not x86) x4182)
+(or (not x4154) (not x4143))
+(or (not x4181) (not x2243) (not x2224))
+(or (not x4154) (not x4141) (not x2220))
+(or (not x4182) (not x2239) (not x2225) x82)
+(or (not x4154) (not x4141) x712)
+(or (not x2239) (not x2225) (not x82) x4182)
+(or (not x4154) (not x4138) x697)
+(or (not x4181) (not x2239) (not x2225))
+(or (not x4154) x4147 x4145 x4143 x4141 x4138)
+(or (not x4182) (not x2240) (not x2225) x81)
+(or (not x4154) (not x4143))
+(or (not x2240) (not x2225) (not x81) x4182)
+(or (not x4154) (not x4129))
+(or (not x4181) (not x2240) (not x2225))
+(or (not x4154) (not x4117))
+(or (not x4182) (not x2241) (not x2225))
+(or (not x4143) (not x4134) (not x2217))
+(or (not x2241) (not x2225) x4181)
+(or (not x4143) (not x4134) x733)
+(or (not x4182) (not x2242) (not x2225) x79)
+(or (not x4143) (not x4132) (not x2218))
+(or (not x2242) (not x2225) (not x79) x4182)
+(or (not x4143) (not x4132) x727)
+(or (not x4181) (not x2242) (not x2225))
+(or (not x4143) (not x4129) (not x2219))
+(or (not x4182) (not x2243) (not x2225) x77)
+(or (not x4143) (not x4129))
+(or (not x2243) (not x2225) (not x77) x4182)
+(or (not x4143) (not x4127) (not x2220))
+(or (not x4181) (not x2243) (not x2225))
+(or (not x4143) (not x4127) x712)
+(or (not x4182) (not x2239) (not x2226) x73)
+(or (not x4143) (not x4124) x697)
+(or (not x2239) (not x2226) (not x73) x4182)
+(or (not x4143) x4134 x4132 x4129 x4127 x4124)
+(or (not x4181) (not x2239) (not x2226))
+(or (not x4143) (not x4129))
+(or (not x4182) (not x2240) (not x2226) x67)
+(or (not x4143) (not x4117))
+(or (not x2240) (not x2226) (not x67) x4182)
+(or (not x4129) (not x4122) (not x2217))
+(or (not x4181) (not x2240) (not x2226))
+(or (not x4129) (not x4122) x733)
+(or (not x4182) (not x2241) (not x2226) x66)
+(or (not x4129) (not x4120) (not x2218))
+(or (not x2241) (not x2226) (not x66) x4182)
+(or (not x4129) (not x4120) x727)
+(or (not x4181) (not x2241) (not x2226))
+(or (not x4129) (not x4117) (not x2219))
+(or (not x4182) (not x2242) (not x2226))
+(or (not x4129) (not x4117))
+(or (not x2242) (not x2226) x4181)
+(or (not x4129) (not x4115) (not x2220))
+(or (not x4182) (not x2243) (not x2226) x65)
+(or (not x4129) (not x4115) x712)
+(or (not x2243) (not x2226) (not x65) x4182)
+(or (not x4129) (not x4112) x697)
+(or (not x4181) (not x2243) (not x2226))
+(or (not x4129) x4122 x4120 x4117 x4115 x4112)
+(or (not x4182) (not x2239) (not x2227) x58)
+(or (not x4129) (not x4117))
+(or (not x2239) (not x2227) (not x58) x4182)
+(or (not x4117) (not x2221))
+(or (not x4181) (not x2239) (not x2227))
+(or (not x4117) x702)
+(or (not x4182) (not x2240) (not x2227) x57)
+(or (not x2219) x4165 x4154 x4143 x4129 x4117)
+(or (not x2240) (not x2227) (not x57) x4182)
+(or (not x4163) (not x4158) (not x2217))
+(or (not x4181) (not x2240) (not x2227))
+(or (not x4163) (not x4158) x732)
+(or (not x4182) (not x2241) (not x2227) x56)
+(or (not x4163) (not x4156) (not x2218))
+(or (not x2241) (not x2227) (not x56) x4182)
+(or (not x4163) (not x4156) x726)
+(or (not x4181) (not x2241) (not x2227))
+(or (not x4163) (not x4154) (not x2219))
+(or (not x4182) (not x2242) (not x2227) x55)
+(or (not x4163) (not x4154) x720)
+(or (not x2242) (not x2227) (not x55) x4182)
+(or (not x4163) (not x4152) (not x2220))
+(or (not x4181) (not x2242) (not x2227))
+(or (not x4163) (not x4152))
+(or (not x4182) (not x2243) (not x2227))
+(or (not x4163) (not x4149) x696)
+(or (not x2243) (not x2227) x4181)
+(or (not x4163) x4158 x4156 x4154 x4152 x4149)
+(or (not x4032) (not x69) (not x7) x4180)
+(or (not x4163) (not x4152))
+(or (not x4180) (not x4176) (not x4135) x4179 x4178)
+(or (not x4163) (not x4141))
+(or (not x4180) (not x4135) x4177 x4176)
+(or (not x4163) (not x4127))
+(or (not x4180) x4136 x4135)
+(or (not x4163) (not x4115))
+(or (not x4178) (not x4176) (not x4135) x4180)
+(or (not x4152) (not x4147) (not x2217))
+(or (not x4179) (not x4176) (not x4135) x4180)
+(or (not x4152) (not x4147) x732)
+(or (not x4177) (not x4135) x4180)
+(or (not x4152) (not x4145) (not x2218))
+(or (not x4136) x4180)
+(or (not x4152) (not x4145) x726)
+(or (not x4179) (not x4178))
+(or (not x4152) (not x4143) (not x2219))
+(or (not x3713) x4179 x3816 x2287)
+(or (not x4152) (not x4143) x720)
+(or (not x4179) (not x3713) (not x2287) x3816)
+(or (not x4152) (not x4141) (not x2220))
+(or (not x4179) (not x3816) x3713 x2287)
+(or (not x4152) (not x4141))
+(or (not x3816) (not x2287) x4179 x3713)
+(or (not x4152) (not x4138) x696)
+(or (not x3712) x4179 x3815 x2287)
+(or (not x4152) x4147 x4145 x4143 x4141 x4138)
+(or (not x4179) (not x3712) (not x2287) x3815)
+(or (not x4152) (not x4141))
+(or (not x4179) (not x3815) x3712 x2287)
+(or (not x4152) (not x4127))
+(or (not x3815) (not x2287) x4179 x3712)
+(or (not x4152) (not x4115))
+(or (not x3711) x4179 x3814 x2287)
+(or (not x4141) (not x4134) (not x2217))
+(or (not x4179) (not x3711) (not x2287) x3814)
+(or (not x4141) (not x4134) x732)
+(or (not x4179) (not x3814) x3711 x2287)
+(or (not x4141) (not x4132) (not x2218))
+(or (not x3814) (not x2287) x4179 x3711)
+(or (not x4141) (not x4132) x726)
+(or (not x3710) x4179 x3813 x2287)
+(or (not x4141) (not x4129) (not x2219))
+(or (not x4179) (not x3710) (not x2287) x3813)
+(or (not x4141) (not x4129) x720)
+(or (not x4179) (not x3813) x3710 x2287)
+(or (not x4141) (not x4127) (not x2220))
+(or (not x3813) (not x2287) x4179 x3710)
+(or (not x4141) (not x4127))
+(or (not x3709) x4179 x3812 x2287)
+(or (not x4141) (not x4124) x696)
+(or (not x4179) (not x3709) (not x2287) x3812)
+(or (not x4141) x4134 x4132 x4129 x4127 x4124)
+(or (not x4179) (not x3812) x3709 x2287)
+(or (not x4141) (not x4127))
+(or (not x3812) (not x2287) x4179 x3709)
+(or (not x4141) (not x4115))
+(or (not x3815) (not x3712) x4178 x3816 x3713)
+(or (not x4127) (not x4122) (not x2217))
+(or (not x3814) (not x3711) x4178 x3815 x3712)
+(or (not x4127) (not x4122) x732)
+(or (not x3813) (not x3710) x4178 x3814 x3711)
+(or (not x4127) (not x4120) (not x2218))
+(or (not x3812) (not x3709) x4178 x3813 x3710)
+(or (not x4127) (not x4120) x726)
+(or x4178 x3812 x3709)
+(or (not x4127) (not x4117) (not x2219))
+(or (not x3816) (not x3713) x4178)
+(or (not x4127) (not x4117) x720)
+(or (not x4178) (not x3816) x3713)
+(or (not x4127) (not x4115) (not x2220))
+(or (not x4178) (not x3713) x3816)
+(or (not x4127) (not x4115))
+(or (not x4178) (not x3815) x3712)
+(or (not x4127) (not x4112) x696)
+(or (not x4178) (not x3712) x3815)
+(or (not x4127) x4122 x4120 x4117 x4115 x4112)
+(or (not x4178) (not x3814) x3711)
+(or (not x4127) (not x4115))
+(or (not x4178) (not x3711) x3814)
+(or (not x4115) (not x2221))
+(or (not x4178) (not x3813) x3710)
+(or (not x4115) x701)
+(or (not x4178) (not x3710) x3813)
+(or (not x2220) x4163 x4152 x4141 x4127 x4115)
+(or (not x4178) (not x3812) x3709)
+(or (not x4160) (not x4158) (not x2217))
+(or (not x4178) (not x3709) x3812)
+(or (not x4160) (not x4158) x729)
+(or (not x52) x4177 x4175 x3808)
+(or (not x4160) (not x4156) (not x2218))
+(or (not x4177) (not x3808) (not x52) x4175)
+(or (not x4160) (not x4156) x723)
+(or (not x4177) x4175 x3808 x52)
+(or (not x4160) (not x4154) (not x2219))
+(or (not x3808) x4177 x4175 x52)
+(or (not x4160) (not x4154) x717)
+(or (not x4175) (not x50) x4177 x4174 x3807)
+(or (not x4160) (not x4152) (not x2220))
+(or (not x4177) (not x4175) (not x3807) (not x50) x4174)
+(or (not x4160) (not x4152) x709)
+(or (not x4177) (not x4175) x4174 x3807 x50)
+(or (not x4175) (not x3807) x4177 x4174 x50)
+(or (not x4174) (not x48) x4177 x4173 x3805)
+(or (not x4160) (not x4149))
+(or (not x4177) (not x4174) (not x3805) (not x48) x4173)
+(or (not x4160) x4158 x4156 x4154 x4152 x4149)
+(or (not x4177) (not x4174) x4173 x3805 x48)
+(or (not x4160) (not x4149))
+(or (not x4174) (not x3805) x4177 x4173 x48)
+(or (not x4160) (not x4138))
+(or (not x4173) (not x46) x4177 x4172 x3803)
+(or (not x4160) (not x4124))
+(or (not x4177) (not x4173) (not x3803) (not x46) x4172)
+(or (not x4160) (not x4112))
+(or (not x4177) (not x4173) x4172 x3803 x46)
+(or (not x4149) (not x4147) (not x2217))
+(or (not x4173) (not x3803) x4177 x4172 x46)
+(or (not x4149) (not x4147) x729)
+(or (not x4172) (not x44) x4177 x4171 x3801)
+(or (not x4149) (not x4145) (not x2218))
+(or (not x4177) (not x4172) (not x3801) (not x44) x4171)
+(or (not x4149) (not x4145) x723)
+(or (not x4177) (not x4172) x4171 x3801 x44)
+(or (not x4149) (not x4143) (not x2219))
+(or (not x4172) (not x3801) x4177 x4171 x44)
+(or (not x4149) (not x4143) x717)
+(or (not x4171) (not x149) x4177 x4170 x3799)
+(or (not x4149) (not x4141) (not x2220))
+(or (not x4177) (not x4171) (not x3799) (not x149) x4170)
+(or (not x4149) (not x4141) x709)
+(or (not x4177) (not x4171) x4170 x3799 x149)
+(or (not x4171) (not x3799) x4177 x4170 x149)
+(or (not x4177) (not x4176))
+(or (not x4149) (not x4138))
+(or (not x4170) x4176)
+(or (not x4149) x4147 x4145 x4143 x4141 x4138)
+(or (not x4176) x4170)
+(or (not x4149) (not x4138))
+(or x4175 x3808 x3705)
+(or (not x4149) (not x4124))
+(or (not x3808) (not x3705) x4175)
+(or (not x4149) (not x4112))
+(or (not x4175) (not x3808) x3705)
+(or (not x4138) (not x4134) (not x2217))
+(or (not x4175) (not x3705) x3808)
+(or (not x4138) (not x4134) x729)
+(or (not x4175) x4174 x3807 x3704)
+(or (not x4138) (not x4132) (not x2218))
+(or (not x4175) (not x3807) (not x3704) x4174)
+(or (not x4138) (not x4132) x723)
+(or (not x4174) (not x3807) x3704)
+(or (not x4138) (not x4129) (not x2219))
+(or (not x4174) (not x3704) x3807)
+(or (not x4138) (not x4129) x717)
+(or (not x4174) x4175)
+(or (not x4138) (not x4127) (not x2220))
+(or (not x4174) x4173 x3805 x3702)
+(or (not x4138) (not x4127) x709)
+(or (not x4174) (not x3805) (not x3702) x4173)
+(or (not x4173) (not x3805) x3702)
+(or (not x4173) (not x3702) x3805)
+(or (not x4138) (not x4124))
+(or (not x4173) x4174)
+(or (not x4138) x4134 x4132 x4129 x4127 x4124)
+(or (not x4173) x4172 x3803 x3700)
+(or (not x4138) (not x4124))
+(or (not x4173) (not x3803) (not x3700) x4172)
+(or (not x4138) (not x4112))
+(or (not x4172) (not x3803) x3700)
+(or (not x4124) (not x4122) (not x2217))
+(or (not x4172) (not x3700) x3803)
+(or (not x4124) (not x4122) x729)
+(or (not x4172) x4173)
+(or (not x4124) (not x4120) (not x2218))
+(or (not x4172) x4171 x3801 x3698)
+(or (not x4124) (not x4120) x723)
+(or (not x4172) (not x3801) (not x3698) x4171)
+(or (not x4124) (not x4117) (not x2219))
+(or (not x4171) (not x3801) x3698)
+(or (not x4124) (not x4117) x717)
+(or (not x4171) (not x3698) x3801)
+(or (not x4124) (not x4115) (not x2220))
+(or (not x4171) x4172)
+(or (not x4124) (not x4115) x709)
+(or (not x4171) x4170 x3799 x3696)
+(or (not x4171) (not x3799) (not x3696) x4170)
+(or (not x4170) (not x3799) x3696)
+(or (not x4124) (not x4112))
+(or (not x4170) (not x3696) x3799)
+(or (not x4124) x4122 x4120 x4117 x4115 x4112)
+(or (not x4170) x4171)
+(or (not x4124) (not x4112))
+(or (not x4136) (not x2234) (not x2223))
+(or (not x4112) (not x2221))
+(or (not x2234) (not x2223) x4135)
+(or (not x4112) x700)
+(or (not x4136) (not x2235) (not x2223) x95)
+(or (not x4169) (not x4166))
+(or (not x2235) (not x2223) (not x95) x4136)
+(or (not x4169) x4168 x4166)
+(or (not x4135) (not x2235) (not x2223))
+(or (not x4166) x4169 x4168)
+(or (not x4136) (not x2236) (not x2223) x94)
+(or (not x4168) x4169 x4166)
+(or (not x2236) (not x2223) (not x94) x4136)
+(or (not x4167) (not x4164))
+(or (not x4135) (not x2236) (not x2223))
+(or (not x4167) x4166 x4164)
+(or (not x4136) (not x2237) (not x2223) x92)
+(or (not x4164) x4167 x4166)
+(or (not x2237) (not x2223) (not x92) x4136)
+(or (not x4166) x4167 x4164)
+(or (not x4135) (not x2237) (not x2223))
+(or (not x4165) (not x4162))
+(or (not x4136) (not x2238) (not x2223) x91)
+(or (not x4165) x4164 x4162)
+(or (not x2238) (not x2223) (not x91) x4136)
+(or (not x4162) x4165 x4164)
+(or (not x4135) (not x2238) (not x2223))
+(or (not x4164) x4165 x4162)
+(or (not x4136) (not x2234) (not x2224) x89)
+(or (not x4163) (not x4161))
+(or (not x2234) (not x2224) (not x89) x4136)
+(or (not x4163) x4162 x4161)
+(or (not x4135) (not x2234) (not x2224))
+(or (not x4161) x4163 x4162)
+(or (not x4136) (not x2235) (not x2224))
+(or (not x4162) x4163 x4161)
+(or (not x2235) (not x2224) x4135)
+(or (not x4136) (not x2236) (not x2224) x88)
+(or (not x2236) (not x2224) (not x88) x4136)
+(or (not x4159) x4161)
+(or (not x4135) (not x2236) (not x2224))
+(or (not x4161) x4159)
+(or (not x4136) (not x2237) (not x2224) x87)
+(or (not x4160) x4159)
+(or (not x2237) (not x2224) (not x87) x4136)
+(or (not x4159) x4160)
+(or (not x4135) (not x2237) (not x2224))
+(or (not x4158) (not x4155))
+(or (not x4136) (not x2238) (not x2224) x86)
+(or (not x4158) x4157 x4155)
+(or (not x2238) (not x2224) (not x86) x4136)
+(or (not x4155) x4158 x4157)
+(or (not x4135) (not x2238) (not x2224))
+(or (not x4157) x4158 x4155)
+(or (not x4136) (not x2234) (not x2225) x82)
+(or (not x4156) (not x4153))
+(or (not x2234) (not x2225) (not x82) x4136)
+(or (not x4156) x4155 x4153)
+(or (not x4135) (not x2234) (not x2225))
+(or (not x4153) x4156 x4155)
+(or (not x4136) (not x2235) (not x2225) x81)
+(or (not x4155) x4156 x4153)
+(or (not x2235) (not x2225) (not x81) x4136)
+(or (not x4154) (not x4151))
+(or (not x4135) (not x2235) (not x2225))
+(or (not x4154) x4153 x4151)
+(or (not x4136) (not x2236) (not x2225))
+(or (not x4151) x4154 x4153)
+(or (not x2236) (not x2225) x4135)
+(or (not x4153) x4154 x4151)
+(or (not x4136) (not x2237) (not x2225) x79)
+(or (not x4152) (not x4150))
+(or (not x2237) (not x2225) (not x79) x4136)
+(or (not x4152) x4151 x4150)
+(or (not x4135) (not x2237) (not x2225))
+(or (not x4150) x4152 x4151)
+(or (not x4136) (not x2238) (not x2225) x77)
+(or (not x4151) x4152 x4150)
+(or (not x2238) (not x2225) (not x77) x4136)
+(or (not x4135) (not x2238) (not x2225))
+(or (not x4136) (not x2234) (not x2226) x73)
+(or (not x4148) x4150)
+(or (not x2234) (not x2226) (not x73) x4136)
+(or (not x4150) x4148)
+(or (not x4135) (not x2234) (not x2226))
+(or (not x4149) x4148)
+(or (not x4136) (not x2235) (not x2226) x67)
+(or (not x4148) x4149)
+(or (not x2235) (not x2226) (not x67) x4136)
+(or (not x4147) (not x4144))
+(or (not x4135) (not x2235) (not x2226))
+(or (not x4147) x4146 x4144)
+(or (not x4136) (not x2236) (not x2226) x66)
+(or (not x4144) x4147 x4146)
+(or (not x2236) (not x2226) (not x66) x4136)
+(or (not x4146) x4147 x4144)
+(or (not x4135) (not x2236) (not x2226))
+(or (not x4145) (not x4142))
+(or (not x4136) (not x2237) (not x2226))
+(or (not x4145) x4144 x4142)
+(or (not x2237) (not x2226) x4135)
+(or (not x4142) x4145 x4144)
+(or (not x4136) (not x2238) (not x2226) x65)
+(or (not x4144) x4145 x4142)
+(or (not x2238) (not x2226) (not x65) x4136)
+(or (not x4143) (not x4140))
+(or (not x4135) (not x2238) (not x2226))
+(or (not x4143) x4142 x4140)
+(or (not x4136) (not x2234) (not x2227) x58)
+(or (not x4140) x4143 x4142)
+(or (not x2234) (not x2227) (not x58) x4136)
+(or (not x4142) x4143 x4140)
+(or (not x4135) (not x2234) (not x2227))
+(or (not x4141) (not x4139))
+(or (not x4136) (not x2235) (not x2227) x57)
+(or (not x4141) x4140 x4139)
+(or (not x2235) (not x2227) (not x57) x4136)
+(or (not x4139) x4141 x4140)
+(or (not x4135) (not x2235) (not x2227))
+(or (not x4140) x4141 x4139)
+(or (not x4136) (not x2236) (not x2227) x56)
+(or (not x2236) (not x2227) (not x56) x4136)
+(or (not x4135) (not x2236) (not x2227))
+(or (not x4137) x4139)
+(or (not x4136) (not x2237) (not x2227) x55)
+(or (not x4139) x4137)
+(or (not x2237) (not x2227) (not x55) x4136)
+(or (not x4138) x4137)
+(or (not x4135) (not x2237) (not x2227))
+(or (not x4137) x4138)
+(or (not x4136) (not x2238) (not x2227))
+(or (not x4134) (not x4131))
+(or (not x2238) (not x2227) x4135)
+(or (not x4134) x4133 x4131)
+(or (not x4032) (not x69) (not x8) x4130)
+(or (not x4131) x4134 x4133)
+(or (not x4130) (not x4108) (not x4100) x4118 x4110)
+(or (not x4133) x4134 x4131)
+(or (not x4130) (not x4100) x4109 x4108)
+(or (not x4132) (not x4128))
+(or (not x4130) x4101 x4100)
+(or (not x4132) x4131 x4128)
+(or (not x4110) (not x4108) (not x4100) x4130)
+(or (not x4128) x4132 x4131)
+(or (not x4118) (not x4108) (not x4100) x4130)
+(or (not x4131) x4132 x4128)
+(or (not x4109) (not x4100) x4130)
+(or (not x4129) (not x4126))
+(or (not x4101) x4130)
+(or (not x4129) x4128 x4126)
+(or (not x4118) (not x4110))
+(or (not x4126) x4129 x4128)
+(or (not x3713) x4118 x3792 x2287)
+(or (not x4128) x4129 x4126)
+(or (not x4118) (not x3713) (not x2287) x3792)
+(or (not x4127) (not x4125))
+(or (not x4118) (not x3792) x3713 x2287)
+(or (not x4127) x4126 x4125)
+(or (not x3792) (not x2287) x4118 x3713)
+(or (not x4125) x4127 x4126)
+(or (not x3712) x4118 x3791 x2287)
+(or (not x4126) x4127 x4125)
+(or (not x4118) (not x3712) (not x2287) x3791)
+(or (not x4118) (not x3791) x3712 x2287)
+(or (not x3791) (not x2287) x4118 x3712)
+(or (not x4123) x4125)
+(or (not x3711) x4118 x3790 x2287)
+(or (not x4125) x4123)
+(or (not x4118) (not x3711) (not x2287) x3790)
+(or (not x4124) x4123)
+(or (not x4118) (not x3790) x3711 x2287)
+(or (not x4123) x4124)
+(or (not x3790) (not x2287) x4118 x3711)
+(or (not x4122) (not x4119))
+(or (not x3710) x4118 x3789 x2287)
+(or (not x4122) x4121 x4119)
+(or (not x4118) (not x3710) (not x2287) x3789)
+(or (not x4119) x4122 x4121)
+(or (not x4118) (not x3789) x3710 x2287)
+(or (not x4121) x4122 x4119)
+(or (not x3789) (not x2287) x4118 x3710)
+(or (not x4120) (not x4116))
+(or (not x3709) x4118 x3788 x2287)
+(or (not x4120) x4119 x4116)
+(or (not x4118) (not x3709) (not x2287) x3788)
+(or (not x4116) x4120 x4119)
+(or (not x4118) (not x3788) x3709 x2287)
+(or (not x4119) x4120 x4116)
+(or (not x3788) (not x2287) x4118 x3709)
+(or (not x4117) (not x4114))
+(or (not x3791) (not x3712) x4110 x3792 x3713)
+(or (not x4117) x4116 x4114)
+(or (not x3790) (not x3711) x4110 x3791 x3712)
+(or (not x4114) x4117 x4116)
+(or (not x3789) (not x3710) x4110 x3790 x3711)
+(or (not x4116) x4117 x4114)
+(or (not x3788) (not x3709) x4110 x3789 x3710)
+(or (not x4115) (not x4113))
+(or x4110 x3788 x3709)
+(or (not x4115) x4114 x4113)
+(or (not x3792) (not x3713) x4110)
+(or (not x4113) x4115 x4114)
+(or (not x4110) (not x3792) x3713)
+(or (not x4114) x4115 x4113)
+(or (not x4110) (not x3713) x3792)
+(or (not x4110) (not x3791) x3712)
+(or (not x4110) (not x3712) x3791)
+(or (not x4111) x4113)
+(or (not x4110) (not x3790) x3711)
+(or (not x4113) x4111)
+(or (not x4110) (not x3711) x3790)
+(or (not x4112) x4111)
+(or (not x4110) (not x3789) x3710)
+(or (not x4111) x4112)
+(or (not x4110) (not x3710) x3789)
+(or (not x4110) (not x3788) x3709)
+(or (not x4110) (not x3709) x3788)
+(or (not x52) x4109 x4107 x3771)
+(or (not x4109) (not x3771) (not x52) x4107)
+(or (not x4109) x4107 x3771 x52)
+(or (not x3771) x4109 x4107 x52)
+(or (not x4107) (not x50) x4109 x4106 x3768)
+(or (not x4088) (not x4075) (not x2212))
+(or (not x4109) (not x4107) (not x3768) (not x50) x4106)
+(or (not x4088) (not x4075))
+(or (not x4109) (not x4107) x4106 x3768 x50)
+(or (not x4088) (not x4073) (not x2213))
+(or (not x4107) (not x3768) x4109 x4106 x50)
+(or (not x4088) (not x4073) x728)
+(or (not x4106) (not x48) x4109 x4105 x3765)
+(or (not x4088) (not x4071) (not x2214))
+(or (not x4109) (not x4106) (not x3765) (not x48) x4105)
+(or (not x4088) (not x4071) x722)
+(or (not x4109) (not x4106) x4105 x3765 x48)
+(or (not x4088) (not x4069) (not x2215))
+(or (not x4106) (not x3765) x4109 x4105 x48)
+(or (not x4088) (not x4069) x715)
+(or (not x4105) (not x46) x4109 x4104 x3759)
+(or (not x4088) (not x4066) (not x2216))
+(or (not x4109) (not x4105) (not x3759) (not x46) x4104)
+(or (not x4088) (not x4066) x707)
+(or (not x4109) (not x4105) x4104 x3759 x46)
+(or (not x4088) x4075 x4073 x4071 x4069 x4066)
+(or (not x4105) (not x3759) x4109 x4104 x46)
+(or (not x4088) (not x4075))
+(or (not x4104) (not x44) x4109 x4103 x3755)
+(or (not x4088) (not x4064))
+(or (not x4109) (not x4104) (not x3755) (not x44) x4103)
+(or (not x4088) (not x4053))
+(or (not x4109) (not x4104) x4103 x3755 x44)
+(or (not x4088) (not x4041))
+(or (not x4104) (not x3755) x4109 x4103 x44)
+(or (not x4075) (not x4064) (not x2212))
+(or (not x4103) (not x149) x4109 x4102 x3749)
+(or (not x4075) (not x4064))
+(or (not x4109) (not x4103) (not x3749) (not x149) x4102)
+(or (not x4075) (not x4062) (not x2213))
+(or (not x4109) (not x4103) x4102 x3749 x149)
+(or (not x4075) (not x4062) x728)
+(or (not x4103) (not x3749) x4109 x4102 x149)
+(or (not x4075) (not x4060) (not x2214))
+(or (not x4109) (not x4108))
+(or (not x4075) (not x4060) x722)
+(or (not x4102) x4108)
+(or (not x4075) (not x4057) (not x2215))
+(or (not x4108) x4102)
+(or (not x4075) (not x4057) x715)
+(or x4107 x3771 x3705)
+(or (not x4075) (not x4055) (not x2216))
+(or (not x3771) (not x3705) x4107)
+(or (not x4075) (not x4055) x707)
+(or (not x4107) (not x3771) x3705)
+(or (not x4075) x4064 x4062 x4060 x4057 x4055)
+(or (not x4107) (not x3705) x3771)
+(or (not x4075) (not x4064))
+(or (not x4107) x4106 x3768 x3704)
+(or (not x4075) (not x4053))
+(or (not x4107) (not x3768) (not x3704) x4106)
+(or (not x4075) (not x4041))
+(or (not x4106) (not x3768) x3704)
+(or (not x4064) (not x4053) (not x2212))
+(or (not x4106) (not x3704) x3768)
+(or (not x4064) (not x4053))
+(or (not x4106) x4107)
+(or (not x4064) (not x4051) (not x2213))
+(or (not x4106) x4105 x3765 x3702)
+(or (not x4064) (not x4051) x728)
+(or (not x4106) (not x3765) (not x3702) x4105)
+(or (not x4064) (not x4049) (not x2214))
+(or (not x4105) (not x3765) x3702)
+(or (not x4064) (not x4049) x722)
+(or (not x4105) (not x3702) x3765)
+(or (not x4064) (not x4046) (not x2215))
+(or (not x4105) x4106)
+(or (not x4064) (not x4046) x715)
+(or (not x4105) x4104 x3759 x3700)
+(or (not x4064) (not x4043) (not x2216))
+(or (not x4105) (not x3759) (not x3700) x4104)
+(or (not x4064) (not x4043) x707)
+(or (not x4104) (not x3759) x3700)
+(or (not x4064) x4053 x4051 x4049 x4046 x4043)
+(or (not x4104) (not x3700) x3759)
+(or (not x4064) (not x4053))
+(or (not x4104) x4105)
+(or (not x4064) (not x4041))
+(or (not x4104) x4103 x3755 x3698)
+(or (not x4053) (not x4041) (not x2212))
+(or (not x4104) (not x3755) (not x3698) x4103)
+(or (not x4053) (not x4041))
+(or (not x4103) (not x3755) x3698)
+(or (not x4053) (not x4038) (not x2213))
+(or (not x4103) (not x3698) x3755)
+(or (not x4053) (not x4038) x728)
+(or (not x4103) x4104)
+(or (not x4053) (not x4035) (not x2214))
+(or (not x4103) x4102 x3749 x3696)
+(or (not x4053) (not x4035) x722)
+(or (not x4103) (not x3749) (not x3696) x4102)
+(or (not x4053) (not x4032) (not x2215))
+(or (not x4102) (not x3749) x3696)
+(or (not x4053) (not x4032) x715)
+(or (not x4102) (not x3696) x3749)
+(or (not x4053) (not x3926) (not x2216))
+(or (not x4102) x4103)
+(or (not x4053) (not x3926) x707)
+(or (not x4101) (not x2228) (not x2223))
+(or (not x4053) x4041 x4038 x4035 x4032 x3926)
+(or (not x2228) (not x2223) x4100)
+(or (not x4053) (not x4041))
+(or (not x4101) (not x2229) (not x2223) x95)
+(or (not x4041) x699)
+(or (not x2229) (not x2223) (not x95) x4101)
+(or (not x2212) x4088 x4075 x4064 x4053 x4041)
+(or (not x4100) (not x2229) (not x2223))
+(or (not x4086) (not x4075) (not x2212))
+(or (not x4101) (not x2230) (not x2223) x94)
+(or (not x4086) (not x4075) x734)
+(or (not x2230) (not x2223) (not x94) x4101)
+(or (not x4086) (not x4073) (not x2213))
+(or (not x4100) (not x2230) (not x2223))
+(or (not x4086) (not x4073))
+(or (not x4101) (not x2231) (not x2223) x92)
+(or (not x4086) (not x4071) (not x2214))
+(or (not x2231) (not x2223) (not x92) x4101)
+(or (not x4086) (not x4071) x721)
+(or (not x4100) (not x2231) (not x2223))
+(or (not x4086) (not x4069) (not x2215))
+(or (not x4101) (not x2232) (not x2223) x91)
+(or (not x4086) (not x4069) x714)
+(or (not x2232) (not x2223) (not x91) x4101)
+(or (not x4086) (not x4066) (not x2216))
+(or (not x4100) (not x2232) (not x2223))
+(or (not x4086) (not x4066) x705)
+(or (not x4101) (not x2228) (not x2224) x89)
+(or (not x4086) x4075 x4073 x4071 x4069 x4066)
+(or (not x2228) (not x2224) (not x89) x4101)
+(or (not x4086) (not x4073))
+(or (not x4100) (not x2228) (not x2224))
+(or (not x4086) (not x4062))
+(or (not x4101) (not x2229) (not x2224))
+(or (not x4086) (not x4051))
+(or (not x2229) (not x2224) x4100)
+(or (not x4086) (not x4038))
+(or (not x4101) (not x2230) (not x2224) x88)
+(or (not x4073) (not x4064) (not x2212))
+(or (not x2230) (not x2224) (not x88) x4101)
+(or (not x4073) (not x4064) x734)
+(or (not x4100) (not x2230) (not x2224))
+(or (not x4073) (not x4062) (not x2213))
+(or (not x4101) (not x2231) (not x2224) x87)
+(or (not x4073) (not x4062))
+(or (not x2231) (not x2224) (not x87) x4101)
+(or (not x4073) (not x4060) (not x2214))
+(or (not x4100) (not x2231) (not x2224))
+(or (not x4073) (not x4060) x721)
+(or (not x4101) (not x2232) (not x2224) x86)
+(or (not x4073) (not x4057) (not x2215))
+(or (not x2232) (not x2224) (not x86) x4101)
+(or (not x4073) (not x4057) x714)
+(or (not x4100) (not x2232) (not x2224))
+(or (not x4073) (not x4055) (not x2216))
+(or (not x4101) (not x2228) (not x2225) x82)
+(or (not x4073) (not x4055) x705)
+(or (not x2228) (not x2225) (not x82) x4101)
+(or (not x4073) x4064 x4062 x4060 x4057 x4055)
+(or (not x4100) (not x2228) (not x2225))
+(or (not x4073) (not x4062))
+(or (not x4101) (not x2229) (not x2225) x81)
+(or (not x4073) (not x4051))
+(or (not x2229) (not x2225) (not x81) x4101)
+(or (not x4073) (not x4038))
+(or (not x4100) (not x2229) (not x2225))
+(or (not x4062) (not x4053) (not x2212))
+(or (not x4101) (not x2230) (not x2225))
+(or (not x4062) (not x4053) x734)
+(or (not x2230) (not x2225) x4100)
+(or (not x4062) (not x4051) (not x2213))
+(or (not x4101) (not x2231) (not x2225) x79)
+(or (not x4062) (not x4051))
+(or (not x2231) (not x2225) (not x79) x4101)
+(or (not x4062) (not x4049) (not x2214))
+(or (not x4100) (not x2231) (not x2225))
+(or (not x4062) (not x4049) x721)
+(or (not x4101) (not x2232) (not x2225) x77)
+(or (not x4062) (not x4046) (not x2215))
+(or (not x2232) (not x2225) (not x77) x4101)
+(or (not x4062) (not x4046) x714)
+(or (not x4100) (not x2232) (not x2225))
+(or (not x4062) (not x4043) (not x2216))
+(or (not x4101) (not x2228) (not x2226) x73)
+(or (not x4062) (not x4043) x705)
+(or (not x2228) (not x2226) (not x73) x4101)
+(or (not x4062) x4053 x4051 x4049 x4046 x4043)
+(or (not x4100) (not x2228) (not x2226))
+(or (not x4062) (not x4051))
+(or (not x4101) (not x2229) (not x2226) x67)
+(or (not x4062) (not x4038))
+(or (not x2229) (not x2226) (not x67) x4101)
+(or (not x4051) (not x4041) (not x2212))
+(or (not x4100) (not x2229) (not x2226))
+(or (not x4051) (not x4041) x734)
+(or (not x4101) (not x2230) (not x2226) x66)
+(or (not x4051) (not x4038) (not x2213))
+(or (not x2230) (not x2226) (not x66) x4101)
+(or (not x4051) (not x4038))
+(or (not x4100) (not x2230) (not x2226))
+(or (not x4051) (not x4035) (not x2214))
+(or (not x4101) (not x2231) (not x2226))
+(or (not x4051) (not x4035) x721)
+(or (not x2231) (not x2226) x4100)
+(or (not x4051) (not x4032) (not x2215))
+(or (not x4101) (not x2232) (not x2226) x65)
+(or (not x4051) (not x4032) x714)
+(or (not x2232) (not x2226) (not x65) x4101)
+(or (not x4051) (not x3926) (not x2216))
+(or (not x4100) (not x2232) (not x2226))
+(or (not x4051) (not x3926) x705)
+(or (not x4101) (not x2228) (not x2227) x58)
+(or (not x4051) x4041 x4038 x4035 x4032 x3926)
+(or (not x2228) (not x2227) (not x58) x4101)
+(or (not x4051) (not x4038))
+(or (not x4100) (not x2228) (not x2227))
+(or (not x4038) x698)
+(or (not x4101) (not x2229) (not x2227) x57)
+(or (not x2213) x4086 x4073 x4062 x4051 x4038)
+(or (not x2229) (not x2227) (not x57) x4101)
+(or (not x4083) (not x4075) (not x2212))
+(or (not x4100) (not x2229) (not x2227))
+(or (not x4083) (not x4075) x733)
+(or (not x4101) (not x2230) (not x2227) x56)
+(or (not x4083) (not x4073) (not x2213))
+(or (not x2230) (not x2227) (not x56) x4101)
+(or (not x4083) (not x4073) x727)
+(or (not x4100) (not x2230) (not x2227))
+(or (not x4083) (not x4071) (not x2214))
+(or (not x4101) (not x2231) (not x2227) x55)
+(or (not x4083) (not x4071))
+(or (not x2231) (not x2227) (not x55) x4101)
+(or (not x4083) (not x4069) (not x2215))
+(or (not x4100) (not x2231) (not x2227))
+(or (not x4083) (not x4069) x712)
+(or (not x4101) (not x2232) (not x2227))
+(or (not x4083) (not x4066) (not x2216))
+(or (not x2232) (not x2227) x4100)
+(or (not x4083) (not x4066) x702)
+(or (not x4032) (not x69) (not x10) x4099)
+(or (not x4083) x4075 x4073 x4071 x4069 x4066)
+(or (not x4099) (not x4095) (not x4081) x4098 x4097)
+(or (not x4083) (not x4071))
+(or (not x4099) (not x4081) x4096 x4095)
+(or (not x4083) (not x4060))
+(or (not x4099) x4084 x4081)
+(or (not x4083) (not x4049))
+(or (not x4097) (not x4095) (not x4081) x4099)
+(or (not x4083) (not x4035))
+(or (not x4098) (not x4095) (not x4081) x4099)
+(or (not x4071) (not x4064) (not x2212))
+(or (not x4096) (not x4081) x4099)
+(or (not x4071) (not x4064) x733)
+(or (not x4084) x4099)
+(or (not x4071) (not x4062) (not x2213))
+(or (not x4098) (not x4097))
+(or (not x4071) (not x4062) x727)
+(or (not x3713) x4098 x3689 x2287)
+(or (not x4071) (not x4060) (not x2214))
+(or (not x4098) (not x3713) (not x2287) x3689)
+(or (not x4071) (not x4060))
+(or (not x4098) (not x3689) x3713 x2287)
+(or (not x4071) (not x4057) (not x2215))
+(or (not x3689) (not x2287) x4098 x3713)
+(or (not x4071) (not x4057) x712)
+(or (not x3712) x4098 x3687 x2287)
+(or (not x4071) (not x4055) (not x2216))
+(or (not x4098) (not x3712) (not x2287) x3687)
+(or (not x4071) (not x4055) x702)
+(or (not x4098) (not x3687) x3712 x2287)
+(or (not x4071) x4064 x4062 x4060 x4057 x4055)
+(or (not x3687) (not x2287) x4098 x3712)
+(or (not x4071) (not x4060))
+(or (not x3711) x4098 x3685 x2287)
+(or (not x4071) (not x4049))
+(or (not x4098) (not x3711) (not x2287) x3685)
+(or (not x4071) (not x4035))
+(or (not x4098) (not x3685) x3711 x2287)
+(or (not x4060) (not x4053) (not x2212))
+(or (not x3685) (not x2287) x4098 x3711)
+(or (not x4060) (not x4053) x733)
+(or (not x3710) x4098 x3683 x2287)
+(or (not x4060) (not x4051) (not x2213))
+(or (not x4098) (not x3710) (not x2287) x3683)
+(or (not x4060) (not x4051) x727)
+(or (not x4098) (not x3683) x3710 x2287)
+(or (not x4060) (not x4049) (not x2214))
+(or (not x3683) (not x2287) x4098 x3710)
+(or (not x4060) (not x4049))
+(or (not x3709) x4098 x3681 x2287)
+(or (not x4060) (not x4046) (not x2215))
+(or (not x4098) (not x3709) (not x2287) x3681)
+(or (not x4060) (not x4046) x712)
+(or (not x4098) (not x3681) x3709 x2287)
+(or (not x4060) (not x4043) (not x2216))
+(or (not x3681) (not x2287) x4098 x3709)
+(or (not x4060) (not x4043) x702)
+(or (not x3712) (not x3687) x4097 x3713 x3689)
+(or (not x4060) x4053 x4051 x4049 x4046 x4043)
+(or (not x3711) (not x3685) x4097 x3712 x3687)
+(or (not x4060) (not x4049))
+(or (not x3710) (not x3683) x4097 x3711 x3685)
+(or (not x4060) (not x4035))
+(or (not x3709) (not x3681) x4097 x3710 x3683)
+(or (not x4049) (not x4041) (not x2212))
+(or x4097 x3709 x3681)
+(or (not x4049) (not x4041) x733)
+(or (not x3713) (not x3689) x4097)
+(or (not x4049) (not x4038) (not x2213))
+(or (not x4097) (not x3689) x3713)
+(or (not x4049) (not x4038) x727)
+(or (not x4097) (not x3713) x3689)
+(or (not x4049) (not x4035) (not x2214))
+(or (not x4097) (not x3687) x3712)
+(or (not x4049) (not x4035))
+(or (not x4097) (not x3712) x3687)
+(or (not x4049) (not x4032) (not x2215))
+(or (not x4097) (not x3685) x3711)
+(or (not x4049) (not x4032) x712)
+(or (not x4097) (not x3711) x3685)
+(or (not x4049) (not x3926) (not x2216))
+(or (not x4097) (not x3683) x3710)
+(or (not x4049) (not x3926) x702)
+(or (not x4097) (not x3710) x3683)
+(or (not x4049) x4041 x4038 x4035 x4032 x3926)
+(or (not x4097) (not x3681) x3709)
+(or (not x4049) (not x4035))
+(or (not x4097) (not x3709) x3681)
+(or (not x4035) x697)
+(or (not x52) x4096 x4094 x3676)
+(or (not x2214) x4083 x4071 x4060 x4049 x4035)
+(or (not x4096) (not x3676) (not x52) x4094)
+(or (not x4080) (not x4075) (not x2212))
+(or (not x4096) x4094 x3676 x52)
+(or (not x4080) (not x4075) x732)
+(or (not x3676) x4096 x4094 x52)
+(or (not x4080) (not x4073) (not x2213))
+(or (not x4094) (not x50) x4096 x4093 x3674)
+(or (not x4080) (not x4073) x726)
+(or (not x4096) (not x4094) (not x3674) (not x50) x4093)
+(or (not x4080) (not x4071) (not x2214))
+(or (not x4096) (not x4094) x4093 x3674 x50)
+(or (not x4080) (not x4071) x720)
+(or (not x4094) (not x3674) x4096 x4093 x50)
+(or (not x4080) (not x4069) (not x2215))
+(or (not x4093) (not x48) x4096 x4092 x3671)
+(or (not x4080) (not x4069))
+(or (not x4096) (not x4093) (not x3671) (not x48) x4092)
+(or (not x4080) (not x4066) (not x2216))
+(or (not x4096) (not x4093) x4092 x3671 x48)
+(or (not x4080) (not x4066) x701)
+(or (not x4093) (not x3671) x4096 x4092 x48)
+(or (not x4080) x4075 x4073 x4071 x4069 x4066)
+(or (not x4092) (not x46) x4096 x4091 x3668)
+(or (not x4080) (not x4069))
+(or (not x4096) (not x4092) (not x3668) (not x46) x4091)
+(or (not x4080) (not x4057))
+(or (not x4096) (not x4092) x4091 x3668 x46)
+(or (not x4080) (not x4046))
+(or (not x4092) (not x3668) x4096 x4091 x46)
+(or (not x4080) (not x4032))
+(or (not x4091) (not x44) x4096 x4090 x3665)
+(or (not x4069) (not x4064) (not x2212))
+(or (not x4096) (not x4091) (not x3665) (not x44) x4090)
+(or (not x4069) (not x4064) x732)
+(or (not x4096) (not x4091) x4090 x3665 x44)
+(or (not x4069) (not x4062) (not x2213))
+(or (not x4091) (not x3665) x4096 x4090 x44)
+(or (not x4069) (not x4062) x726)
+(or (not x4090) (not x149) x4096 x4089 x3662)
+(or (not x4069) (not x4060) (not x2214))
+(or (not x4096) (not x4090) (not x3662) (not x149) x4089)
+(or (not x4069) (not x4060) x720)
+(or (not x4096) (not x4090) x4089 x3662 x149)
+(or (not x4069) (not x4057) (not x2215))
+(or (not x4090) (not x3662) x4096 x4089 x149)
+(or (not x4069) (not x4057))
+(or (not x4096) (not x4095))
+(or (not x4069) (not x4055) (not x2216))
+(or (not x4089) x4095)
+(or (not x4069) (not x4055) x701)
+(or (not x4095) x4089)
+(or (not x4069) x4064 x4062 x4060 x4057 x4055)
+(or x4094 x3705 x3676)
+(or (not x4069) (not x4057))
+(or (not x3705) (not x3676) x4094)
+(or (not x4069) (not x4046))
+(or (not x4094) (not x3676) x3705)
+(or (not x4069) (not x4032))
+(or (not x4094) (not x3705) x3676)
+(or (not x4057) (not x4053) (not x2212))
+(or (not x4094) x4093 x3704 x3674)
+(or (not x4057) (not x4053) x732)
+(or (not x4094) (not x3704) (not x3674) x4093)
+(or (not x4057) (not x4051) (not x2213))
+(or (not x4093) (not x3674) x3704)
+(or (not x4057) (not x4051) x726)
+(or (not x4093) (not x3704) x3674)
+(or (not x4057) (not x4049) (not x2214))
+(or (not x4093) x4094)
+(or (not x4057) (not x4049) x720)
+(or (not x4093) x4092 x3702 x3671)
+(or (not x4057) (not x4046) (not x2215))
+(or (not x4093) (not x3702) (not x3671) x4092)
+(or (not x4057) (not x4046))
+(or (not x4092) (not x3671) x3702)
+(or (not x4057) (not x4043) (not x2216))
+(or (not x4092) (not x3702) x3671)
+(or (not x4057) (not x4043) x701)
+(or (not x4092) x4093)
+(or (not x4057) x4053 x4051 x4049 x4046 x4043)
+(or (not x4092) x4091 x3700 x3668)
+(or (not x4057) (not x4046))
+(or (not x4092) (not x3700) (not x3668) x4091)
+(or (not x4057) (not x4032))
+(or (not x4091) (not x3668) x3700)
+(or (not x4046) (not x4041) (not x2212))
+(or (not x4091) (not x3700) x3668)
+(or (not x4046) (not x4041) x732)
+(or (not x4091) x4092)
+(or (not x4046) (not x4038) (not x2213))
+(or (not x4091) x4090 x3698 x3665)
+(or (not x4046) (not x4038) x726)
+(or (not x4091) (not x3698) (not x3665) x4090)
+(or (not x4046) (not x4035) (not x2214))
+(or (not x4090) (not x3665) x3698)
+(or (not x4046) (not x4035) x720)
+(or (not x4090) (not x3698) x3665)
+(or (not x4046) (not x4032) (not x2215))
+(or (not x4090) x4091)
+(or (not x4046) (not x4032))
+(or (not x4090) x4089 x3696 x3662)
+(or (not x4046) (not x3926) (not x2216))
+(or (not x4090) (not x3696) (not x3662) x4089)
+(or (not x4046) (not x3926) x701)
+(or (not x4089) (not x3662) x3696)
+(or (not x4046) x4041 x4038 x4035 x4032 x3926)
+(or (not x4089) (not x3696) x3662)
+(or (not x4046) (not x4032))
+(or (not x4089) x4090)
+(or (not x4032) x696)
+(or (not x4084) (not x2223) (not x2217))
+(or (not x2215) x4080 x4069 x4057 x4046 x4032)
+(or (not x2223) (not x2217) x4081)
+(or (not x4077) (not x4075) (not x2212))
+(or (not x4084) (not x2223) (not x2218) x95)
+(or (not x4077) (not x4075) x731)
+(or (not x2223) (not x2218) (not x95) x4084)
+(or (not x4077) (not x4073) (not x2213))
+(or (not x4081) (not x2223) (not x2218))
+(or (not x4077) (not x4073) x724)
+(or (not x4084) (not x2223) (not x2219) x94)
+(or (not x4077) (not x4071) (not x2214))
+(or (not x2223) (not x2219) (not x94) x4084)
+(or (not x4077) (not x4071) x719)
+(or (not x4081) (not x2223) (not x2219))
+(or (not x4077) (not x4069) (not x2215))
+(or (not x4084) (not x2223) (not x2220) x92)
+(or (not x4077) (not x4069) x710)
+(or (not x2223) (not x2220) (not x92) x4084)
+(or (not x4077) (not x4066) (not x2216))
+(or (not x4081) (not x2223) (not x2220))
+(or (not x4077) (not x4066))
+(or (not x4084) (not x2223) (not x2221) x91)
+(or (not x4077) x4075 x4073 x4071 x4069 x4066)
+(or (not x2223) (not x2221) (not x91) x4084)
+(or (not x4077) (not x4066))
+(or (not x4081) (not x2223) (not x2221))
+(or (not x4077) (not x4055))
+(or (not x4084) (not x2224) (not x2217) x89)
+(or (not x4077) (not x4043))
+(or (not x2224) (not x2217) (not x89) x4084)
+(or (not x4077) (not x3926))
+(or (not x4081) (not x2224) (not x2217))
+(or (not x4066) (not x4064) (not x2212))
+(or (not x4084) (not x2224) (not x2218))
+(or (not x4066) (not x4064) x731)
+(or (not x2224) (not x2218) x4081)
+(or (not x4066) (not x4062) (not x2213))
+(or (not x4084) (not x2224) (not x2219) x88)
+(or (not x4066) (not x4062) x724)
+(or (not x2224) (not x2219) (not x88) x4084)
+(or (not x4066) (not x4060) (not x2214))
+(or (not x4081) (not x2224) (not x2219))
+(or (not x4066) (not x4060) x719)
+(or (not x4084) (not x2224) (not x2220) x87)
+(or (not x4066) (not x4057) (not x2215))
+(or (not x2224) (not x2220) (not x87) x4084)
+(or (not x4066) (not x4057) x710)
+(or (not x4081) (not x2224) (not x2220))
+(or (not x4066) (not x4055) (not x2216))
+(or (not x4084) (not x2224) (not x2221) x86)
+(or (not x4066) (not x4055))
+(or (not x2224) (not x2221) (not x86) x4084)
+(or (not x4066) x4064 x4062 x4060 x4057 x4055)
+(or (not x4081) (not x2224) (not x2221))
+(or (not x4066) (not x4055))
+(or (not x4084) (not x2225) (not x2217) x82)
+(or (not x4066) (not x4043))
+(or (not x2225) (not x2217) (not x82) x4084)
+(or (not x4066) (not x3926))
+(or (not x4081) (not x2225) (not x2217))
+(or (not x4055) (not x4053) (not x2212))
+(or (not x4084) (not x2225) (not x2218) x81)
+(or (not x4055) (not x4053) x731)
+(or (not x2225) (not x2218) (not x81) x4084)
+(or (not x4055) (not x4051) (not x2213))
+(or (not x4081) (not x2225) (not x2218))
+(or (not x4055) (not x4051) x724)
+(or (not x4084) (not x2225) (not x2219))
+(or (not x4055) (not x4049) (not x2214))
+(or (not x2225) (not x2219) x4081)
+(or (not x4055) (not x4049) x719)
+(or (not x4084) (not x2225) (not x2220) x79)
+(or (not x4055) (not x4046) (not x2215))
+(or (not x2225) (not x2220) (not x79) x4084)
+(or (not x4055) (not x4046) x710)
+(or (not x4081) (not x2225) (not x2220))
+(or (not x4055) (not x4043) (not x2216))
+(or (not x4084) (not x2225) (not x2221) x77)
+(or (not x4055) (not x4043))
+(or (not x2225) (not x2221) (not x77) x4084)
+(or (not x4055) x4053 x4051 x4049 x4046 x4043)
+(or (not x4081) (not x2225) (not x2221))
+(or (not x4055) (not x4043))
+(or (not x4084) (not x2226) (not x2217) x73)
+(or (not x4055) (not x3926))
+(or (not x2226) (not x2217) (not x73) x4084)
+(or (not x4043) (not x4041) (not x2212))
+(or (not x4081) (not x2226) (not x2217))
+(or (not x4043) (not x4041) x731)
+(or (not x4084) (not x2226) (not x2218) x67)
+(or (not x4043) (not x4038) (not x2213))
+(or (not x2226) (not x2218) (not x67) x4084)
+(or (not x4043) (not x4038) x724)
+(or (not x4081) (not x2226) (not x2218))
+(or (not x4043) (not x4035) (not x2214))
+(or (not x4084) (not x2226) (not x2219) x66)
+(or (not x4043) (not x4035) x719)
+(or (not x2226) (not x2219) (not x66) x4084)
+(or (not x4043) (not x4032) (not x2215))
+(or (not x4081) (not x2226) (not x2219))
+(or (not x4043) (not x4032) x710)
+(or (not x4084) (not x2226) (not x2220))
+(or (not x4043) (not x3926) (not x2216))
+(or (not x2226) (not x2220) x4081)
+(or (not x4043) (not x3926))
+(or (not x4084) (not x2226) (not x2221) x65)
+(or (not x4043) x4041 x4038 x4035 x4032 x3926)
+(or (not x2226) (not x2221) (not x65) x4084)
+(or (not x4043) (not x3926))
+(or (not x4081) (not x2226) (not x2221))
+(or (not x3926) x695)
+(or (not x4084) (not x2227) (not x2217) x58)
+(or (not x2216) x4077 x4066 x4055 x4043 x3926)
+(or (not x2227) (not x2217) (not x58) x4084)
+(or (not x4088) (not x4085))
+(or (not x4081) (not x2227) (not x2217))
+(or (not x4088) x4087 x4085)
+(or (not x4084) (not x2227) (not x2218) x57)
+(or (not x4085) x4088 x4087)
+(or (not x2227) (not x2218) (not x57) x4084)
+(or (not x4087) x4088 x4085)
+(or (not x4081) (not x2227) (not x2218))
+(or (not x4086) (not x4082))
+(or (not x4084) (not x2227) (not x2219) x56)
+(or (not x4086) x4085 x4082)
+(or (not x2227) (not x2219) (not x56) x4084)
+(or (not x4082) x4086 x4085)
+(or (not x4081) (not x2227) (not x2219))
+(or (not x4085) x4086 x4082)
+(or (not x4084) (not x2227) (not x2220) x55)
+(or (not x4083) (not x4079))
+(or (not x2227) (not x2220) (not x55) x4084)
+(or (not x4083) x4082 x4079)
+(or (not x4081) (not x2227) (not x2220))
+(or (not x4079) x4083 x4082)
+(or (not x4084) (not x2227) (not x2221))
+(or (not x4082) x4083 x4079)
+(or (not x2227) (not x2221) x4081)
+(or (not x4080) (not x4076))
+(or (not x4078) (not x4044) (not x4025) x4067 x4058)
+(or (not x4080) x4079 x4076)
+(or (not x4078) (not x4025) x4047 x4044)
+(or (not x4076) x4080 x4079)
+(or (not x4078) x4026 x4025)
+(or (not x4079) x4080 x4076)
+(or (not x4058) (not x4044) (not x4025) x4078)
+(or (not x4067) (not x4044) (not x4025) x4078)
+(or (not x4077) x4076)
+(or (not x4047) (not x4025) x4078)
+(or (not x4026) x4078)
+(or (not x4076) x4077)
+(or (not x4067) (not x4058))
+(or (not x3713) x4067 x3688 x2287)
+(or (not x4067) (not x3713) (not x2287) x3688)
+(or (not x4075) (not x4072))
+(or (not x4067) (not x3688) x3713 x2287)
+(or (not x4075) x4074 x4072)
+(or (not x3688) (not x2287) x4067 x3713)
+(or (not x4072) x4075 x4074)
+(or (not x3712) x4067 x3686 x2287)
+(or (not x4074) x4075 x4072)
+(or (not x4067) (not x3712) (not x2287) x3686)
+(or (not x4073) (not x4070))
+(or (not x4067) (not x3686) x3712 x2287)
+(or (not x4073) x4072 x4070)
+(or (not x3686) (not x2287) x4067 x3712)
+(or (not x4070) x4073 x4072)
+(or (not x3711) x4067 x3684 x2287)
+(or (not x4072) x4073 x4070)
+(or (not x4067) (not x3711) (not x2287) x3684)
+(or (not x4071) (not x4068))
+(or (not x4067) (not x3684) x3711 x2287)
+(or (not x4071) x4070 x4068)
+(or (not x3684) (not x2287) x4067 x3711)
+(or (not x4068) x4071 x4070)
+(or (not x3710) x4067 x3682 x2287)
+(or (not x4070) x4071 x4068)
+(or (not x4067) (not x3710) (not x2287) x3682)
+(or (not x4069) (not x4065))
+(or (not x4067) (not x3682) x3710 x2287)
+(or (not x4069) x4068 x4065)
+(or (not x3682) (not x2287) x4067 x3710)
+(or (not x4065) x4069 x4068)
+(or (not x3709) x4067 x3680 x2287)
+(or (not x4068) x4069 x4065)
+(or (not x4067) (not x3709) (not x2287) x3680)
+(or (not x4067) (not x3680) x3709 x2287)
+(or (not x4066) x4065)
+(or (not x3680) (not x2287) x4067 x3709)
+(or (not x3712) (not x3686) x4058 x3713 x3688)
+(or (not x4065) x4066)
+(or (not x3711) (not x3684) x4058 x3712 x3686)
+(or (not x3710) (not x3682) x4058 x3711 x3684)
+(or (not x3709) (not x3680) x4058 x3710 x3682)
+(or (not x4064) (not x4061))
+(or x4058 x3709 x3680)
+(or (not x4064) x4063 x4061)
+(or (not x3713) (not x3688) x4058)
+(or (not x4061) x4064 x4063)
+(or (not x4058) (not x3688) x3713)
+(or (not x4063) x4064 x4061)
+(or (not x4058) (not x3713) x3688)
+(or (not x4062) (not x4059))
+(or (not x4058) (not x3686) x3712)
+(or (not x4062) x4061 x4059)
+(or (not x4058) (not x3712) x3686)
+(or (not x4059) x4062 x4061)
+(or (not x4058) (not x3684) x3711)
+(or (not x4061) x4062 x4059)
+(or (not x4058) (not x3711) x3684)
+(or (not x4060) (not x4056))
+(or (not x4058) (not x3682) x3710)
+(or (not x4060) x4059 x4056)
+(or (not x4058) (not x3710) x3682)
+(or (not x4056) x4060 x4059)
+(or (not x4058) (not x3680) x3709)
+(or (not x4059) x4060 x4056)
+(or (not x4058) (not x3709) x3680)
+(or (not x4057) (not x4054))
+(or (not x52) x4047 x4039 x3675)
+(or (not x4057) x4056 x4054)
+(or (not x4047) (not x3675) (not x52) x4039)
+(or (not x4054) x4057 x4056)
+(or (not x4047) x4039 x3675 x52)
+(or (not x4056) x4057 x4054)
+(or (not x3675) x4047 x4039 x52)
+(or (not x4039) (not x50) x4047 x4036 x3673)
+(or (not x4055) x4054)
+(or (not x4047) (not x4039) (not x3673) (not x50) x4036)
+(or (not x4047) (not x4039) x4036 x3673 x50)
+(or (not x4054) x4055)
+(or (not x4039) (not x3673) x4047 x4036 x50)
+(or (not x4036) (not x48) x4047 x4033 x3670)
+(or (not x4047) (not x4036) (not x3670) (not x48) x4033)
+(or (not x4053) (not x4050))
+(or (not x4047) (not x4036) x4033 x3670 x48)
+(or (not x4053) x4052 x4050)
+(or (not x4036) (not x3670) x4047 x4033 x48)
+(or (not x4050) x4053 x4052)
+(or (not x4033) (not x46) x4047 x4030 x3667)
+(or (not x4052) x4053 x4050)
+(or (not x4047) (not x4033) (not x3667) (not x46) x4030)
+(or (not x4051) (not x4048))
+(or (not x4047) (not x4033) x4030 x3667 x46)
+(or (not x4051) x4050 x4048)
+(or (not x4033) (not x3667) x4047 x4030 x46)
+(or (not x4048) x4051 x4050)
+(or (not x4030) (not x44) x4047 x4028 x3664)
+(or (not x4050) x4051 x4048)
+(or (not x4047) (not x4030) (not x3664) (not x44) x4028)
+(or (not x4049) (not x4045))
+(or (not x4047) (not x4030) x4028 x3664 x44)
+(or (not x4049) x4048 x4045)
+(or (not x4030) (not x3664) x4047 x4028 x44)
+(or (not x4045) x4049 x4048)
+(or (not x4028) (not x149) x4047 x4027 x3661)
+(or (not x4048) x4049 x4045)
+(or (not x4047) (not x4028) (not x3661) (not x149) x4027)
+(or (not x4046) (not x4042))
+(or (not x4047) (not x4028) x4027 x3661 x149)
+(or (not x4046) x4045 x4042)
+(or (not x4028) (not x3661) x4047 x4027 x149)
+(or (not x4042) x4046 x4045)
+(or (not x4047) (not x4044))
+(or (not x4045) x4046 x4042)
+(or (not x4027) x4044)
+(or (not x4044) x4027)
+(or (not x4043) x4042)
+(or x4039 x3705 x3675)
+(or (not x3705) (not x3675) x4039)
+(or (not x4042) x4043)
+(or (not x4039) (not x3675) x3705)
+(or (not x4039) (not x3705) x3675)
+(or (not x4039) x4036 x3704 x3673)
+(or (not x4041) (not x4037))
+(or (not x4039) (not x3704) (not x3673) x4036)
+(or (not x4041) x4040 x4037)
+(or (not x4036) (not x3673) x3704)
+(or (not x4037) x4041 x4040)
+(or (not x4036) (not x3704) x3673)
+(or (not x4040) x4041 x4037)
+(or (not x4036) x4039)
+(or (not x4038) (not x4034))
+(or (not x4036) x4033 x3702 x3670)
+(or (not x4038) x4037 x4034)
+(or (not x4036) (not x3702) (not x3670) x4033)
+(or (not x4034) x4038 x4037)
+(or (not x4033) (not x3670) x3702)
+(or (not x4037) x4038 x4034)
+(or (not x4033) (not x3702) x3670)
+(or (not x4035) (not x4031))
+(or (not x4033) x4036)
+(or (not x4035) x4034 x4031)
+(or (not x4033) x4030 x3700 x3667)
+(or (not x4031) x4035 x4034)
+(or (not x4033) (not x3700) (not x3667) x4030)
+(or (not x4034) x4035 x4031)
+(or (not x4030) (not x3667) x3700)
+(or (not x4032) (not x4029))
+(or (not x4030) (not x3700) x3667)
+(or (not x4032) x4031 x4029)
+(or (not x4030) x4033)
+(or (not x4029) x4032 x4031)
+(or (not x4030) x4028 x3698 x3664)
+(or (not x4031) x4032 x4029)
+(or (not x4030) (not x3698) (not x3664) x4028)
+(or (not x4028) (not x3664) x3698)
+(or (not x3926) x4029)
+(or (not x4028) (not x3698) x3664)
+(or (not x4028) x4030)
+(or (not x4029) x3926)
+(or (not x4028) x4027 x3696 x3661)
+(or (not x4028) (not x3696) (not x3661) x4027)
+(or (not x4027) (not x3661) x3696)
+(or (not x4027) (not x3696) x3661)
+(or (not x4027) x4028)
+(or (not x4026) (not x2223) (not x2212))
+(or (not x2223) (not x2212) x4025)
+(or (not x4026) (not x2223) (not x2213) x95)
+(or (not x2223) (not x2213) (not x95) x4026)
+(or (not x4025) (not x2223) (not x2213))
+(or (not x3999) (not x3988) (not x2191))
+(or (not x4026) (not x2223) (not x2214) x94)
+(or (not x3999) (not x3988))
+(or (not x2223) (not x2214) (not x94) x4026)
+(or (not x3999) (not x3986) (not x2192))
+(or (not x4025) (not x2223) (not x2214))
+(or (not x3999) (not x3986) x680)
+(or (not x4026) (not x2223) (not x2215) x92)
+(or (not x3999) (not x3982) (not x2193))
+(or (not x2223) (not x2215) (not x92) x4026)
+(or (not x3999) (not x3982) x674)
+(or (not x4025) (not x2223) (not x2215))
+(or (not x3999) (not x3980) (not x2194))
+(or (not x4026) (not x2223) (not x2216) x91)
+(or (not x3999) (not x3980) x667)
+(or (not x2223) (not x2216) (not x91) x4026)
+(or (not x3999) (not x3977) x662)
+(or (not x4025) (not x2223) (not x2216))
+(or (not x3999) x3988 x3986 x3982 x3980 x3977)
+(or (not x4026) (not x2224) (not x2212) x89)
+(or (not x3999) (not x3988))
+(or (not x2224) (not x2212) (not x89) x4026)
+(or (not x3999) (not x3974))
+(or (not x4025) (not x2224) (not x2212))
+(or (not x3999) (not x3962))
+(or (not x4026) (not x2224) (not x2213))
+(or (not x3999) (not x3638))
+(or (not x2224) (not x2213) x4025)
+(or (not x3999) (not x3943))
+(or (not x4026) (not x2224) (not x2214) x88)
+(or (not x2224) (not x2214) (not x88) x4026)
+(or (not x4025) (not x2224) (not x2214))
+(or (not x3988) (not x3974) (not x2191))
+(or (not x4026) (not x2224) (not x2215) x87)
+(or (not x3988) (not x3974))
+(or (not x2224) (not x2215) (not x87) x4026)
+(or (not x3988) (not x3972) (not x2192))
+(or (not x4025) (not x2224) (not x2215))
+(or (not x3988) (not x3972) x680)
+(or (not x4026) (not x2224) (not x2216) x86)
+(or (not x3988) (not x3970) (not x2193))
+(or (not x2224) (not x2216) (not x86) x4026)
+(or (not x3988) (not x3970) x674)
+(or (not x4025) (not x2224) (not x2216))
+(or (not x3988) (not x3968) (not x2194))
+(or (not x4026) (not x2225) (not x2212) x82)
+(or (not x3988) (not x3968) x667)
+(or (not x2225) (not x2212) (not x82) x4026)
+(or (not x3988) (not x3965) x662)
+(or (not x4025) (not x2225) (not x2212))
+(or (not x3988) x3974 x3972 x3970 x3968 x3965)
+(or (not x4026) (not x2225) (not x2213) x81)
+(or (not x3988) (not x3974))
+(or (not x2225) (not x2213) (not x81) x4026)
+(or (not x3988) (not x3962))
+(or (not x4025) (not x2225) (not x2213))
+(or (not x3988) (not x3638))
+(or (not x4026) (not x2225) (not x2214))
+(or (not x3988) (not x3943))
+(or (not x2225) (not x2214) x4025)
+(or (not x4026) (not x2225) (not x2215) x79)
+(or (not x2225) (not x2215) (not x79) x4026)
+(or (not x3974) (not x3962) (not x2191))
+(or (not x4025) (not x2225) (not x2215))
+(or (not x3974) (not x3962))
+(or (not x4026) (not x2225) (not x2216) x77)
+(or (not x3974) (not x3960) (not x2192))
+(or (not x2225) (not x2216) (not x77) x4026)
+(or (not x3974) (not x3960) x680)
+(or (not x4025) (not x2225) (not x2216))
+(or (not x3974) (not x3957) (not x2193))
+(or (not x4026) (not x2226) (not x2212) x73)
+(or (not x3974) (not x3957) x674)
+(or (not x2226) (not x2212) (not x73) x4026)
+(or (not x3974) (not x3955) (not x2194))
+(or (not x4025) (not x2226) (not x2212))
+(or (not x3974) (not x3955) x667)
+(or (not x4026) (not x2226) (not x2213) x67)
+(or (not x3974) (not x3953) x662)
+(or (not x2226) (not x2213) (not x67) x4026)
+(or (not x3974) x3962 x3960 x3957 x3955 x3953)
+(or (not x4025) (not x2226) (not x2213))
+(or (not x3974) (not x3962))
+(or (not x4026) (not x2226) (not x2214) x66)
+(or (not x3974) (not x3638))
+(or (not x2226) (not x2214) (not x66) x4026)
+(or (not x3974) (not x3943))
+(or (not x4025) (not x2226) (not x2214))
+(or (not x4026) (not x2226) (not x2215))
+(or (not x2226) (not x2215) x4025)
+(or (not x3962) (not x3638) (not x2191))
+(or (not x4026) (not x2226) (not x2216) x65)
+(or (not x3962) (not x3638))
+(or (not x2226) (not x2216) (not x65) x4026)
+(or (not x3962) (not x3635) (not x2192))
+(or (not x4025) (not x2226) (not x2216))
+(or (not x3962) (not x3635) x680)
+(or (not x4026) (not x2227) (not x2212) x58)
+(or (not x3962) (not x3632) (not x2193))
+(or (not x2227) (not x2212) (not x58) x4026)
+(or (not x3962) (not x3632) x674)
+(or (not x4025) (not x2227) (not x2212))
+(or (not x3962) (not x3629) (not x2194))
+(or (not x4026) (not x2227) (not x2213) x57)
+(or (not x3962) (not x3629) x667)
+(or (not x2227) (not x2213) (not x57) x4026)
+(or (not x3962) (not x3626) x662)
+(or (not x4025) (not x2227) (not x2213))
+(or (not x3962) x3638 x3635 x3632 x3629 x3626)
+(or (not x4026) (not x2227) (not x2214) x56)
+(or (not x3962) (not x3638))
+(or (not x2227) (not x2214) (not x56) x4026)
+(or (not x3962) (not x3943))
+(or (not x4025) (not x2227) (not x2214))
+(or (not x3638) (not x2190))
+(or (not x4026) (not x2227) (not x2215) x55)
+(or (not x3638) x694)
+(or (not x2227) (not x2215) (not x55) x4026)
+(or (not x3638) (not x3943) (not x2191))
+(or (not x4025) (not x2227) (not x2215))
+(or (not x3638) (not x3943))
+(or (not x4026) (not x2227) (not x2216))
+(or (not x3638) (not x3941) (not x2192))
+(or (not x2227) (not x2216) x4025)
+(or (not x3638) (not x3941) x680)
+(or (not x3926) (not x69) (not x6) x4024)
+(or (not x3638) (not x3938) (not x2193))
+(or (not x4024) (not x4020) (not x4012) x4023 x4022)
+(or (not x3638) (not x3938) x674)
+(or (not x4024) (not x4012) x4021 x4020)
+(or (not x3638) (not x3935) (not x2194))
+(or (not x4024) x4013 x4012)
+(or (not x3638) (not x3935) x667)
+(or (not x4022) (not x4020) (not x4012) x4024)
+(or (not x3638) (not x3933) x662)
+(or (not x4023) (not x4020) (not x4012) x4024)
+(or (not x3638) (not x3943))
+(or (not x4021) (not x4012) x4024)
+(or (not x2191) x3999 x3988 x3974 x3962 x3638 x3943)
+(or (not x4013) x4024)
+(or (not x4023) (not x4022))
+(or (not x3689) x4023 x3850 x2286)
+(or (not x3997) (not x3988) (not x2191))
+(or (not x4023) (not x3689) (not x2286) x3850)
+(or (not x3997) (not x3988) x688)
+(or (not x4023) (not x3850) x3689 x2286)
+(or (not x3997) (not x3986) (not x2192))
+(or (not x3850) (not x2286) x4023 x3689)
+(or (not x3997) (not x3986))
+(or (not x3687) x4023 x3848 x2286)
+(or (not x3997) (not x3982) (not x2193))
+(or (not x4023) (not x3687) (not x2286) x3848)
+(or (not x3997) (not x3982) x672)
+(or (not x4023) (not x3848) x3687 x2286)
+(or (not x3997) (not x3980) (not x2194))
+(or (not x3848) (not x2286) x4023 x3687)
+(or (not x3997) (not x3980) x666)
+(or (not x3685) x4023 x3847 x2286)
+(or (not x3997) (not x3977) x660)
+(or (not x4023) (not x3685) (not x2286) x3847)
+(or (not x3997) x3988 x3986 x3982 x3980 x3977)
+(or (not x4023) (not x3847) x3685 x2286)
+(or (not x3997) (not x3986))
+(or (not x3847) (not x2286) x4023 x3685)
+(or (not x3997) (not x3972))
+(or (not x3683) x4023 x3845 x2286)
+(or (not x3997) (not x3960))
+(or (not x4023) (not x3683) (not x2286) x3845)
+(or (not x3997) (not x3635))
+(or (not x4023) (not x3845) x3683 x2286)
+(or (not x3997) (not x3941))
+(or (not x3845) (not x2286) x4023 x3683)
+(or (not x3681) x4023 x3843 x2286)
+(or (not x4023) (not x3681) (not x2286) x3843)
+(or (not x3986) (not x3974) (not x2191))
+(or (not x4023) (not x3843) x3681 x2286)
+(or (not x3986) (not x3974) x688)
+(or (not x3843) (not x2286) x4023 x3681)
+(or (not x3986) (not x3972) (not x2192))
+(or (not x3848) (not x3687) x4022 x3850 x3689)
+(or (not x3986) (not x3972))
+(or (not x3847) (not x3685) x4022 x3848 x3687)
+(or (not x3986) (not x3970) (not x2193))
+(or (not x3845) (not x3683) x4022 x3847 x3685)
+(or (not x3986) (not x3970) x672)
+(or (not x3843) (not x3681) x4022 x3845 x3683)
+(or (not x3986) (not x3968) (not x2194))
+(or x4022 x3843 x3681)
+(or (not x3986) (not x3968) x666)
+(or (not x3850) (not x3689) x4022)
+(or (not x3986) (not x3965) x660)
+(or (not x4022) (not x3850) x3689)
+(or (not x3986) x3974 x3972 x3970 x3968 x3965)
+(or (not x4022) (not x3689) x3850)
+(or (not x3986) (not x3972))
+(or (not x4022) (not x3848) x3687)
+(or (not x3986) (not x3960))
+(or (not x4022) (not x3687) x3848)
+(or (not x3986) (not x3635))
+(or (not x4022) (not x3847) x3685)
+(or (not x3986) (not x3941))
+(or (not x4022) (not x3685) x3847)
+(or (not x4022) (not x3845) x3683)
+(or (not x4022) (not x3683) x3845)
+(or (not x3972) (not x3962) (not x2191))
+(or (not x4022) (not x3843) x3681)
+(or (not x3972) (not x3962) x688)
+(or (not x4022) (not x3681) x3843)
+(or (not x3972) (not x3960) (not x2192))
+(or (not x52) x4021 x4019 x3832)
+(or (not x3972) (not x3960))
+(or (not x4021) (not x3832) (not x52) x4019)
+(or (not x3972) (not x3957) (not x2193))
+(or (not x4021) x4019 x3832 x52)
+(or (not x3972) (not x3957) x672)
+(or (not x3832) x4021 x4019 x52)
+(or (not x3972) (not x3955) (not x2194))
+(or (not x4019) (not x50) x4021 x4018 x3831)
+(or (not x3972) (not x3955) x666)
+(or (not x4021) (not x4019) (not x3831) (not x50) x4018)
+(or (not x3972) (not x3953) x660)
+(or (not x4021) (not x4019) x4018 x3831 x50)
+(or (not x3972) x3962 x3960 x3957 x3955 x3953)
+(or (not x4019) (not x3831) x4021 x4018 x50)
+(or (not x3972) (not x3960))
+(or (not x4018) (not x48) x4021 x4017 x3829)
+(or (not x3972) (not x3635))
+(or (not x4021) (not x4018) (not x3829) (not x48) x4017)
+(or (not x3972) (not x3941))
+(or (not x4021) (not x4018) x4017 x3829 x48)
+(or (not x4018) (not x3829) x4021 x4017 x48)
+(or (not x4017) (not x46) x4021 x4016 x3827)
+(or (not x3960) (not x3638) (not x2191))
+(or (not x4021) (not x4017) (not x3827) (not x46) x4016)
+(or (not x3960) (not x3638) x688)
+(or (not x4021) (not x4017) x4016 x3827 x46)
+(or (not x3960) (not x3635) (not x2192))
+(or (not x4017) (not x3827) x4021 x4016 x46)
+(or (not x3960) (not x3635))
+(or (not x4016) (not x44) x4021 x4015 x3825)
+(or (not x3960) (not x3632) (not x2193))
+(or (not x4021) (not x4016) (not x3825) (not x44) x4015)
+(or (not x3960) (not x3632) x672)
+(or (not x4021) (not x4016) x4015 x3825 x44)
+(or (not x3960) (not x3629) (not x2194))
+(or (not x4016) (not x3825) x4021 x4015 x44)
+(or (not x3960) (not x3629) x666)
+(or (not x4015) (not x149) x4021 x4014 x3823)
+(or (not x3960) (not x3626) x660)
+(or (not x4021) (not x4015) (not x3823) (not x149) x4014)
+(or (not x3960) x3638 x3635 x3632 x3629 x3626)
+(or (not x4021) (not x4015) x4014 x3823 x149)
+(or (not x3960) (not x3635))
+(or (not x4015) (not x3823) x4021 x4014 x149)
+(or (not x3960) (not x3941))
+(or (not x4021) (not x4020))
+(or (not x3635) (not x2190))
+(or (not x4014) x4020)
+(or (not x3635) x693)
+(or (not x4020) x4014)
+(or (not x3635) (not x3943) (not x2191))
+(or x4019 x3832 x3676)
+(or (not x3635) (not x3943) x688)
+(or (not x3832) (not x3676) x4019)
+(or (not x3635) (not x3941) (not x2192))
+(or (not x4019) (not x3832) x3676)
+(or (not x3635) (not x3941))
+(or (not x4019) (not x3676) x3832)
+(or (not x3635) (not x3938) (not x2193))
+(or (not x4019) x4018 x3831 x3674)
+(or (not x3635) (not x3938) x672)
+(or (not x4019) (not x3831) (not x3674) x4018)
+(or (not x3635) (not x3935) (not x2194))
+(or (not x4018) (not x3831) x3674)
+(or (not x3635) (not x3935) x666)
+(or (not x4018) (not x3674) x3831)
+(or (not x3635) (not x3933) x660)
+(or (not x4018) x4019)
+(or (not x3635) (not x3941))
+(or (not x4018) x4017 x3829 x3671)
+(or (not x2192) x3997 x3986 x3972 x3960 x3635 x3941)
+(or (not x4018) (not x3829) (not x3671) x4017)
+(or (not x4017) (not x3829) x3671)
+(or (not x4017) (not x3671) x3829)
+(or (not x3995) (not x3988) (not x2191))
+(or (not x4017) x4018)
+(or (not x3995) (not x3988) x687)
+(or (not x4017) x4016 x3827 x3668)
+(or (not x3995) (not x3986) (not x2192))
+(or (not x4017) (not x3827) (not x3668) x4016)
+(or (not x3995) (not x3986) x678)
+(or (not x4016) (not x3827) x3668)
+(or (not x3995) (not x3982) (not x2193))
+(or (not x4016) (not x3668) x3827)
+(or (not x3995) (not x3982))
+(or (not x4016) x4017)
+(or (not x3995) (not x3980) (not x2194))
+(or (not x4016) x4015 x3825 x3665)
+(or (not x3995) (not x3980) x665)
+(or (not x4016) (not x3825) (not x3665) x4015)
+(or (not x3995) (not x3977) x658)
+(or (not x4015) (not x3825) x3665)
+(or (not x3995) x3988 x3986 x3982 x3980 x3977)
+(or (not x4015) (not x3665) x3825)
+(or (not x3995) (not x3982))
+(or (not x4015) x4016)
+(or (not x3995) (not x3970))
+(or (not x4015) x4014 x3823 x3662)
+(or (not x3995) (not x3957))
+(or (not x4015) (not x3823) (not x3662) x4014)
+(or (not x3995) (not x3632))
+(or (not x4014) (not x3823) x3662)
+(or (not x3995) (not x3938))
+(or (not x4014) (not x3662) x3823)
+(or (not x4014) x4015)
+(or (not x4013) (not x2239) (not x2217))
+(or (not x3982) (not x3974) (not x2191))
+(or (not x2239) (not x2217) x4012)
+(or (not x3982) (not x3974) x687)
+(or (not x4013) (not x2240) (not x2217) x95)
+(or (not x3982) (not x3972) (not x2192))
+(or (not x2240) (not x2217) (not x95) x4013)
+(or (not x3982) (not x3972) x678)
+(or (not x4012) (not x2240) (not x2217))
+(or (not x3982) (not x3970) (not x2193))
+(or (not x4013) (not x2241) (not x2217) x94)
+(or (not x3982) (not x3970))
+(or (not x2241) (not x2217) (not x94) x4013)
+(or (not x3982) (not x3968) (not x2194))
+(or (not x4012) (not x2241) (not x2217))
+(or (not x3982) (not x3968) x665)
+(or (not x4013) (not x2242) (not x2217) x92)
+(or (not x3982) (not x3965) x658)
+(or (not x2242) (not x2217) (not x92) x4013)
+(or (not x3982) x3974 x3972 x3970 x3968 x3965)
+(or (not x4012) (not x2242) (not x2217))
+(or (not x3982) (not x3970))
+(or (not x4013) (not x2243) (not x2217) x91)
+(or (not x3982) (not x3957))
+(or (not x2243) (not x2217) (not x91) x4013)
+(or (not x3982) (not x3632))
+(or (not x4012) (not x2243) (not x2217))
+(or (not x3982) (not x3938))
+(or (not x4013) (not x2239) (not x2218) x89)
+(or (not x2239) (not x2218) (not x89) x4013)
+(or (not x4012) (not x2239) (not x2218))
+(or (not x3970) (not x3962) (not x2191))
+(or (not x4013) (not x2240) (not x2218))
+(or (not x3970) (not x3962) x687)
+(or (not x2240) (not x2218) x4012)
+(or (not x3970) (not x3960) (not x2192))
+(or (not x4013) (not x2241) (not x2218) x88)
+(or (not x3970) (not x3960) x678)
+(or (not x2241) (not x2218) (not x88) x4013)
+(or (not x3970) (not x3957) (not x2193))
+(or (not x4012) (not x2241) (not x2218))
+(or (not x3970) (not x3957))
+(or (not x4013) (not x2242) (not x2218) x87)
+(or (not x3970) (not x3955) (not x2194))
+(or (not x2242) (not x2218) (not x87) x4013)
+(or (not x3970) (not x3955) x665)
+(or (not x4012) (not x2242) (not x2218))
+(or (not x3970) (not x3953) x658)
+(or (not x4013) (not x2243) (not x2218) x86)
+(or (not x3970) x3962 x3960 x3957 x3955 x3953)
+(or (not x2243) (not x2218) (not x86) x4013)
+(or (not x3970) (not x3957))
+(or (not x4012) (not x2243) (not x2218))
+(or (not x3970) (not x3632))
+(or (not x4013) (not x2239) (not x2219) x82)
+(or (not x3970) (not x3938))
+(or (not x2239) (not x2219) (not x82) x4013)
+(or (not x4012) (not x2239) (not x2219))
+(or (not x4013) (not x2240) (not x2219) x81)
+(or (not x3957) (not x3638) (not x2191))
+(or (not x2240) (not x2219) (not x81) x4013)
+(or (not x3957) (not x3638) x687)
+(or (not x4012) (not x2240) (not x2219))
+(or (not x3957) (not x3635) (not x2192))
+(or (not x4013) (not x2241) (not x2219))
+(or (not x3957) (not x3635) x678)
+(or (not x2241) (not x2219) x4012)
+(or (not x3957) (not x3632) (not x2193))
+(or (not x4013) (not x2242) (not x2219) x79)
+(or (not x3957) (not x3632))
+(or (not x2242) (not x2219) (not x79) x4013)
+(or (not x3957) (not x3629) (not x2194))
+(or (not x4012) (not x2242) (not x2219))
+(or (not x3957) (not x3629) x665)
+(or (not x4013) (not x2243) (not x2219) x77)
+(or (not x3957) (not x3626) x658)
+(or (not x2243) (not x2219) (not x77) x4013)
+(or (not x3957) x3638 x3635 x3632 x3629 x3626)
+(or (not x4012) (not x2243) (not x2219))
+(or (not x3957) (not x3632))
+(or (not x4013) (not x2239) (not x2220) x73)
+(or (not x3957) (not x3938))
+(or (not x2239) (not x2220) (not x73) x4013)
+(or (not x3632) (not x2190))
+(or (not x4012) (not x2239) (not x2220))
+(or (not x3632) x692)
+(or (not x4013) (not x2240) (not x2220) x67)
+(or (not x3632) (not x3943) (not x2191))
+(or (not x2240) (not x2220) (not x67) x4013)
+(or (not x3632) (not x3943) x687)
+(or (not x4012) (not x2240) (not x2220))
+(or (not x3632) (not x3941) (not x2192))
+(or (not x4013) (not x2241) (not x2220) x66)
+(or (not x3632) (not x3941) x678)
+(or (not x2241) (not x2220) (not x66) x4013)
+(or (not x3632) (not x3938) (not x2193))
+(or (not x4012) (not x2241) (not x2220))
+(or (not x3632) (not x3938))
+(or (not x4013) (not x2242) (not x2220))
+(or (not x3632) (not x3935) (not x2194))
+(or (not x2242) (not x2220) x4012)
+(or (not x3632) (not x3935) x665)
+(or (not x4013) (not x2243) (not x2220) x65)
+(or (not x3632) (not x3933) x658)
+(or (not x2243) (not x2220) (not x65) x4013)
+(or (not x3632) (not x3938))
+(or (not x4012) (not x2243) (not x2220))
+(or (not x2193) x3995 x3982 x3970 x3957 x3632 x3938)
+(or (not x4013) (not x2239) (not x2221) x58)
+(or (not x2239) (not x2221) (not x58) x4013)
+(or (not x4012) (not x2239) (not x2221))
+(or (not x3993) (not x3988) (not x2191))
+(or (not x4013) (not x2240) (not x2221) x57)
+(or (not x3993) (not x3988) x686)
+(or (not x2240) (not x2221) (not x57) x4013)
+(or (not x3993) (not x3986) (not x2192))
+(or (not x4012) (not x2240) (not x2221))
+(or (not x3993) (not x3986) x677)
+(or (not x4013) (not x2241) (not x2221) x56)
+(or (not x3993) (not x3982) (not x2193))
+(or (not x2241) (not x2221) (not x56) x4013)
+(or (not x3993) (not x3982) x671)
+(or (not x4012) (not x2241) (not x2221))
+(or (not x3993) (not x3980) (not x2194))
+(or (not x4013) (not x2242) (not x2221) x55)
+(or (not x3993) (not x3980))
+(or (not x2242) (not x2221) (not x55) x4013)
+(or (not x3993) (not x3977) x657)
+(or (not x4012) (not x2242) (not x2221))
+(or (not x3993) x3988 x3986 x3982 x3980 x3977)
+(or (not x4013) (not x2243) (not x2221))
+(or (not x3993) (not x3980))
+(or (not x2243) (not x2221) x4012)
+(or (not x3993) (not x3968))
+(or (not x3926) (not x69) (not x7) x4011)
+(or (not x3993) (not x3955))
+(or (not x4011) (not x4007) (not x3983) x4010 x4009)
+(or (not x3993) (not x3629))
+(or (not x4011) (not x3983) x4008 x4007)
+(or (not x3993) (not x3935))
+(or (not x4011) x3984 x3983)
+(or (not x4009) (not x4007) (not x3983) x4011)
+(or (not x4010) (not x4007) (not x3983) x4011)
+(or (not x3980) (not x3974) (not x2191))
+(or (not x4008) (not x3983) x4011)
+(or (not x3980) (not x3974) x686)
+(or (not x3984) x4011)
+(or (not x3980) (not x3972) (not x2192))
+(or (not x4010) (not x4009))
+(or (not x3980) (not x3972) x677)
+(or (not x3689) x4010 x3816 x2286)
+(or (not x3980) (not x3970) (not x2193))
+(or (not x4010) (not x3689) (not x2286) x3816)
+(or (not x3980) (not x3970) x671)
+(or (not x4010) (not x3816) x3689 x2286)
+(or (not x3980) (not x3968) (not x2194))
+(or (not x3816) (not x2286) x4010 x3689)
+(or (not x3980) (not x3968))
+(or (not x3687) x4010 x3815 x2286)
+(or (not x3980) (not x3965) x657)
+(or (not x4010) (not x3687) (not x2286) x3815)
+(or (not x3980) x3974 x3972 x3970 x3968 x3965)
+(or (not x4010) (not x3815) x3687 x2286)
+(or (not x3980) (not x3968))
+(or (not x3815) (not x2286) x4010 x3687)
+(or (not x3980) (not x3955))
+(or (not x3685) x4010 x3814 x2286)
+(or (not x3980) (not x3629))
+(or (not x4010) (not x3685) (not x2286) x3814)
+(or (not x3980) (not x3935))
+(or (not x4010) (not x3814) x3685 x2286)
+(or (not x3814) (not x2286) x4010 x3685)
+(or (not x3683) x4010 x3813 x2286)
+(or (not x3968) (not x3962) (not x2191))
+(or (not x4010) (not x3683) (not x2286) x3813)
+(or (not x3968) (not x3962) x686)
+(or (not x4010) (not x3813) x3683 x2286)
+(or (not x3968) (not x3960) (not x2192))
+(or (not x3813) (not x2286) x4010 x3683)
+(or (not x3968) (not x3960) x677)
+(or (not x3681) x4010 x3812 x2286)
+(or (not x3968) (not x3957) (not x2193))
+(or (not x4010) (not x3681) (not x2286) x3812)
+(or (not x3968) (not x3957) x671)
+(or (not x4010) (not x3812) x3681 x2286)
+(or (not x3968) (not x3955) (not x2194))
+(or (not x3812) (not x2286) x4010 x3681)
+(or (not x3968) (not x3955))
+(or (not x3815) (not x3687) x4009 x3816 x3689)
+(or (not x3968) (not x3953) x657)
+(or (not x3814) (not x3685) x4009 x3815 x3687)
+(or (not x3968) x3962 x3960 x3957 x3955 x3953)
+(or (not x3813) (not x3683) x4009 x3814 x3685)
+(or (not x3968) (not x3955))
+(or (not x3812) (not x3681) x4009 x3813 x3683)
+(or (not x3968) (not x3629))
+(or x4009 x3812 x3681)
+(or (not x3968) (not x3935))
+(or (not x3816) (not x3689) x4009)
+(or (not x4009) (not x3816) x3689)
+(or (not x4009) (not x3689) x3816)
+(or (not x3955) (not x3638) (not x2191))
+(or (not x4009) (not x3815) x3687)
+(or (not x3955) (not x3638) x686)
+(or (not x4009) (not x3687) x3815)
+(or (not x3955) (not x3635) (not x2192))
+(or (not x4009) (not x3814) x3685)
+(or (not x3955) (not x3635) x677)
+(or (not x4009) (not x3685) x3814)
+(or (not x3955) (not x3632) (not x2193))
+(or (not x4009) (not x3813) x3683)
+(or (not x3955) (not x3632) x671)
+(or (not x4009) (not x3683) x3813)
+(or (not x3955) (not x3629) (not x2194))
+(or (not x4009) (not x3812) x3681)
+(or (not x3955) (not x3629))
+(or (not x4009) (not x3681) x3812)
+(or (not x3955) (not x3626) x657)
+(or (not x52) x4008 x4006 x3808)
+(or (not x3955) x3638 x3635 x3632 x3629 x3626)
+(or (not x4008) (not x3808) (not x52) x4006)
+(or (not x3955) (not x3629))
+(or (not x4008) x4006 x3808 x52)
+(or (not x3955) (not x3935))
+(or (not x3808) x4008 x4006 x52)
+(or (not x3629) (not x2190))
+(or (not x4006) (not x50) x4008 x4005 x3807)
+(or (not x3629) x691)
+(or (not x4008) (not x4006) (not x3807) (not x50) x4005)
+(or (not x3629) (not x3943) (not x2191))
+(or (not x4008) (not x4006) x4005 x3807 x50)
+(or (not x3629) (not x3943) x686)
+(or (not x4006) (not x3807) x4008 x4005 x50)
+(or (not x3629) (not x3941) (not x2192))
+(or (not x4005) (not x48) x4008 x4004 x3805)
+(or (not x3629) (not x3941) x677)
+(or (not x4008) (not x4005) (not x3805) (not x48) x4004)
+(or (not x3629) (not x3938) (not x2193))
+(or (not x4008) (not x4005) x4004 x3805 x48)
+(or (not x3629) (not x3938) x671)
+(or (not x4005) (not x3805) x4008 x4004 x48)
+(or (not x3629) (not x3935) (not x2194))
+(or (not x4004) (not x46) x4008 x4003 x3803)
+(or (not x3629) (not x3935))
+(or (not x4008) (not x4004) (not x3803) (not x46) x4003)
+(or (not x3629) (not x3933) x657)
+(or (not x4008) (not x4004) x4003 x3803 x46)
+(or (not x3629) (not x3935))
+(or (not x4004) (not x3803) x4008 x4003 x46)
+(or (not x2194) x3993 x3980 x3968 x3955 x3629 x3935)
+(or (not x4003) (not x44) x4008 x4002 x3801)
+(or (not x4008) (not x4003) (not x3801) (not x44) x4002)
+(or (not x4008) (not x4003) x4002 x3801 x44)
+(or (not x3991) (not x3988) (not x2191))
+(or (not x4003) (not x3801) x4008 x4002 x44)
+(or (not x3991) (not x3988) x684)
+(or (not x4002) (not x149) x4008 x4001 x3799)
+(or (not x3991) (not x3986) (not x2192))
+(or (not x4008) (not x4002) (not x3799) (not x149) x4001)
+(or (not x3991) (not x3986) x676)
+(or (not x4008) (not x4002) x4001 x3799 x149)
+(or (not x3991) (not x3982) (not x2193))
+(or (not x4002) (not x3799) x4008 x4001 x149)
+(or (not x3991) (not x3982) x670)
+(or (not x4008) (not x4007))
+(or (not x3991) (not x3980) (not x2194))
+(or (not x4001) x4007)
+(or (not x3991) (not x3980) x664)
+(or (not x4007) x4001)
+(or (not x3991) (not x3977))
+(or x4006 x3808 x3676)
+(or (not x3991) x3988 x3986 x3982 x3980 x3977)
+(or (not x3808) (not x3676) x4006)
+(or (not x3991) (not x3977))
+(or (not x4006) (not x3808) x3676)
+(or (not x3991) (not x3965))
+(or (not x4006) (not x3676) x3808)
+(or (not x3991) (not x3953))
+(or (not x4006) x4005 x3807 x3674)
+(or (not x3991) (not x3626))
+(or (not x4006) (not x3807) (not x3674) x4005)
+(or (not x3991) (not x3933))
+(or (not x4005) (not x3807) x3674)
+(or (not x4005) (not x3674) x3807)
+(or (not x4005) x4006)
+(or (not x3977) (not x3974) (not x2191))
+(or (not x4005) x4004 x3805 x3671)
+(or (not x3977) (not x3974) x684)
+(or (not x4005) (not x3805) (not x3671) x4004)
+(or (not x3977) (not x3972) (not x2192))
+(or (not x4004) (not x3805) x3671)
+(or (not x3977) (not x3972) x676)
+(or (not x4004) (not x3671) x3805)
+(or (not x3977) (not x3970) (not x2193))
+(or (not x4004) x4005)
+(or (not x3977) (not x3970) x670)
+(or (not x4004) x4003 x3803 x3668)
+(or (not x3977) (not x3968) (not x2194))
+(or (not x4004) (not x3803) (not x3668) x4003)
+(or (not x3977) (not x3968) x664)
+(or (not x4003) (not x3803) x3668)
+(or (not x3977) (not x3965))
+(or (not x4003) (not x3668) x3803)
+(or (not x3977) x3974 x3972 x3970 x3968 x3965)
+(or (not x4003) x4004)
+(or (not x3977) (not x3965))
+(or (not x4003) x4002 x3801 x3665)
+(or (not x3977) (not x3953))
+(or (not x4003) (not x3801) (not x3665) x4002)
+(or (not x3977) (not x3626))
+(or (not x4002) (not x3801) x3665)
+(or (not x3977) (not x3933))
+(or (not x4002) (not x3665) x3801)
+(or (not x4002) x4003)
+(or (not x4002) x4001 x3799 x3662)
+(or (not x3965) (not x3962) (not x2191))
+(or (not x4002) (not x3799) (not x3662) x4001)
+(or (not x3965) (not x3962) x684)
+(or (not x4001) (not x3799) x3662)
+(or (not x3965) (not x3960) (not x2192))
+(or (not x4001) (not x3662) x3799)
+(or (not x3965) (not x3960) x676)
+(or (not x4001) x4002)
+(or (not x3965) (not x3957) (not x2193))
+(or (not x3984) (not x2234) (not x2217))
+(or (not x3965) (not x3957) x670)
+(or (not x2234) (not x2217) x3983)
+(or (not x3965) (not x3955) (not x2194))
+(or (not x3984) (not x2235) (not x2217) x95)
+(or (not x3965) (not x3955) x664)
+(or (not x2235) (not x2217) (not x95) x3984)
+(or (not x3965) (not x3953))
+(or (not x3983) (not x2235) (not x2217))
+(or (not x3965) x3962 x3960 x3957 x3955 x3953)
+(or (not x3984) (not x2236) (not x2217) x94)
+(or (not x3965) (not x3953))
+(or (not x2236) (not x2217) (not x94) x3984)
+(or (not x3965) (not x3626))
+(or (not x3983) (not x2236) (not x2217))
+(or (not x3965) (not x3933))
+(or (not x3984) (not x2237) (not x2217) x92)
+(or (not x2237) (not x2217) (not x92) x3984)
+(or (not x3983) (not x2237) (not x2217))
+(or (not x3953) (not x3638) (not x2191))
+(or (not x3984) (not x2238) (not x2217) x91)
+(or (not x3953) (not x3638) x684)
+(or (not x2238) (not x2217) (not x91) x3984)
+(or (not x3953) (not x3635) (not x2192))
+(or (not x3983) (not x2238) (not x2217))
+(or (not x3953) (not x3635) x676)
+(or (not x3984) (not x2234) (not x2218) x89)
+(or (not x3953) (not x3632) (not x2193))
+(or (not x2234) (not x2218) (not x89) x3984)
+(or (not x3953) (not x3632) x670)
+(or (not x3983) (not x2234) (not x2218))
+(or (not x3953) (not x3629) (not x2194))
+(or (not x3984) (not x2235) (not x2218))
+(or (not x3953) (not x3629) x664)
+(or (not x2235) (not x2218) x3983)
+(or (not x3953) (not x3626))
+(or (not x3984) (not x2236) (not x2218) x88)
+(or (not x3953) x3638 x3635 x3632 x3629 x3626)
+(or (not x2236) (not x2218) (not x88) x3984)
+(or (not x3953) (not x3626))
+(or (not x3983) (not x2236) (not x2218))
+(or (not x3953) (not x3933))
+(or (not x3984) (not x2237) (not x2218) x87)
+(or (not x3626) (not x2190))
+(or (not x2237) (not x2218) (not x87) x3984)
+(or (not x3626) x690)
+(or (not x3983) (not x2237) (not x2218))
+(or (not x3626) (not x3943) (not x2191))
+(or (not x3984) (not x2238) (not x2218) x86)
+(or (not x3626) (not x3943) x684)
+(or (not x2238) (not x2218) (not x86) x3984)
+(or (not x3626) (not x3941) (not x2192))
+(or (not x3983) (not x2238) (not x2218))
+(or (not x3626) (not x3941) x676)
+(or (not x3984) (not x2234) (not x2219) x82)
+(or (not x3626) (not x3938) (not x2193))
+(or (not x2234) (not x2219) (not x82) x3984)
+(or (not x3626) (not x3938) x670)
+(or (not x3983) (not x2234) (not x2219))
+(or (not x3626) (not x3935) (not x2194))
+(or (not x3984) (not x2235) (not x2219) x81)
+(or (not x3626) (not x3935) x664)
+(or (not x2235) (not x2219) (not x81) x3984)
+(or (not x3626) (not x3933))
+(or (not x3983) (not x2235) (not x2219))
+(or (not x3626) (not x3933))
+(or (not x3984) (not x2236) (not x2219))
+(or (not x2236) (not x2219) x3983)
+(or (not x3984) (not x2237) (not x2219) x79)
+(or (not x3998) x4000)
+(or (not x2237) (not x2219) (not x79) x3984)
+(or (not x4000) x3998)
+(or (not x3983) (not x2237) (not x2219))
+(or (not x3999) (not x3996))
+(or (not x3984) (not x2238) (not x2219) x77)
+(or (not x3999) x3998 x3996)
+(or (not x2238) (not x2219) (not x77) x3984)
+(or (not x3996) x3999 x3998)
+(or (not x3983) (not x2238) (not x2219))
+(or (not x3998) x3999 x3996)
+(or (not x3984) (not x2234) (not x2220) x73)
+(or (not x3997) (not x3994))
+(or (not x2234) (not x2220) (not x73) x3984)
+(or (not x3997) x3996 x3994)
+(or (not x3983) (not x2234) (not x2220))
+(or (not x3994) x3997 x3996)
+(or (not x3984) (not x2235) (not x2220) x67)
+(or (not x3996) x3997 x3994)
+(or (not x2235) (not x2220) (not x67) x3984)
+(or (not x3995) (not x3992))
+(or (not x3983) (not x2235) (not x2220))
+(or (not x3995) x3994 x3992)
+(or (not x3984) (not x2236) (not x2220) x66)
+(or (not x3992) x3995 x3994)
+(or (not x2236) (not x2220) (not x66) x3984)
+(or (not x3994) x3995 x3992)
+(or (not x3983) (not x2236) (not x2220))
+(or (not x3993) (not x3990))
+(or (not x3984) (not x2237) (not x2220))
+(or (not x3993) x3992 x3990)
+(or (not x2237) (not x2220) x3983)
+(or (not x3990) x3993 x3992)
+(or (not x3984) (not x2238) (not x2220) x65)
+(or (not x3992) x3993 x3990)
+(or (not x2238) (not x2220) (not x65) x3984)
+(or (not x3991) x3990)
+(or (not x3983) (not x2238) (not x2220))
+(or (not x3990) x3991)
+(or (not x3984) (not x2234) (not x2221) x58)
+(or (not x2234) (not x2221) (not x58) x3984)
+(or (not x3983) (not x2234) (not x2221))
+(or (not x3987) x3989)
+(or (not x3984) (not x2235) (not x2221) x57)
+(or (not x3989) x3987)
+(or (not x2235) (not x2221) (not x57) x3984)
+(or (not x3988) (not x3985))
+(or (not x3983) (not x2235) (not x2221))
+(or (not x3988) x3987 x3985)
+(or (not x3984) (not x2236) (not x2221) x56)
+(or (not x3985) x3988 x3987)
+(or (not x2236) (not x2221) (not x56) x3984)
+(or (not x3987) x3988 x3985)
+(or (not x3983) (not x2236) (not x2221))
+(or (not x3986) (not x3981))
+(or (not x3984) (not x2237) (not x2221) x55)
+(or (not x3986) x3985 x3981)
+(or (not x2237) (not x2221) (not x55) x3984)
+(or (not x3981) x3986 x3985)
+(or (not x3983) (not x2237) (not x2221))
+(or (not x3985) x3986 x3981)
+(or (not x3984) (not x2238) (not x2221))
+(or (not x3982) (not x3979))
+(or (not x2238) (not x2221) x3983)
+(or (not x3982) x3981 x3979)
+(or (not x3926) (not x69) (not x8) x3978)
+(or (not x3979) x3982 x3981)
+(or (not x3978) (not x3946) (not x3927) x3966 x3958)
+(or (not x3981) x3982 x3979)
+(or (not x3978) (not x3927) x3947 x3946)
+(or (not x3980) (not x3976))
+(or (not x3978) x3928 x3927)
+(or (not x3980) x3979 x3976)
+(or (not x3958) (not x3946) (not x3927) x3978)
+(or (not x3976) x3980 x3979)
+(or (not x3966) (not x3946) (not x3927) x3978)
+(or (not x3979) x3980 x3976)
+(or (not x3947) (not x3927) x3978)
+(or (not x3977) x3976)
+(or (not x3928) x3978)
+(or (not x3976) x3977)
+(or (not x3966) (not x3958))
+(or (not x3689) x3966 x3792 x2286)
+(or (not x3966) (not x3689) (not x2286) x3792)
+(or (not x3973) x3975)
+(or (not x3966) (not x3792) x3689 x2286)
+(or (not x3975) x3973)
+(or (not x3792) (not x2286) x3966 x3689)
+(or (not x3974) (not x3971))
+(or (not x3687) x3966 x3791 x2286)
+(or (not x3974) x3973 x3971)
+(or (not x3966) (not x3687) (not x2286) x3791)
+(or (not x3971) x3974 x3973)
+(or (not x3966) (not x3791) x3687 x2286)
+(or (not x3973) x3974 x3971)
+(or (not x3791) (not x2286) x3966 x3687)
+(or (not x3972) (not x3969))
+(or (not x3685) x3966 x3790 x2286)
+(or (not x3972) x3971 x3969)
+(or (not x3966) (not x3685) (not x2286) x3790)
+(or (not x3969) x3972 x3971)
+(or (not x3966) (not x3790) x3685 x2286)
+(or (not x3971) x3972 x3969)
+(or (not x3790) (not x2286) x3966 x3685)
+(or (not x3970) (not x3967))
+(or (not x3683) x3966 x3789 x2286)
+(or (not x3970) x3969 x3967)
+(or (not x3966) (not x3683) (not x2286) x3789)
+(or (not x3967) x3970 x3969)
+(or (not x3966) (not x3789) x3683 x2286)
+(or (not x3969) x3970 x3967)
+(or (not x3789) (not x2286) x3966 x3683)
+(or (not x3968) (not x3964))
+(or (not x3681) x3966 x3788 x2286)
+(or (not x3968) x3967 x3964)
+(or (not x3966) (not x3681) (not x2286) x3788)
+(or (not x3964) x3968 x3967)
+(or (not x3966) (not x3788) x3681 x2286)
+(or (not x3967) x3968 x3964)
+(or (not x3788) (not x2286) x3966 x3681)
+(or (not x3965) x3964)
+(or (not x3791) (not x3687) x3958 x3792 x3689)
+(or (not x3964) x3965)
+(or (not x3790) (not x3685) x3958 x3791 x3687)
+(or (not x3789) (not x3683) x3958 x3790 x3685)
+(or (not x3788) (not x3681) x3958 x3789 x3683)
+(or (not x3961) x3963)
+(or x3958 x3788 x3681)
+(or (not x3963) x3961)
+(or (not x3792) (not x3689) x3958)
+(or (not x3962) (not x3959))
+(or (not x3958) (not x3792) x3689)
+(or (not x3962) x3961 x3959)
+(or (not x3958) (not x3689) x3792)
+(or (not x3959) x3962 x3961)
+(or (not x3958) (not x3791) x3687)
+(or (not x3961) x3962 x3959)
+(or (not x3958) (not x3687) x3791)
+(or (not x3960) (not x3956))
+(or (not x3958) (not x3790) x3685)
+(or (not x3960) x3959 x3956)
+(or (not x3958) (not x3685) x3790)
+(or (not x3956) x3960 x3959)
+(or (not x3958) (not x3789) x3683)
+(or (not x3959) x3960 x3956)
+(or (not x3958) (not x3683) x3789)
+(or (not x3957) (not x3954))
+(or (not x3958) (not x3788) x3681)
+(or (not x3957) x3956 x3954)
+(or (not x3958) (not x3681) x3788)
+(or (not x3954) x3957 x3956)
+(or (not x52) x3947 x3942 x3771)
+(or (not x3956) x3957 x3954)
+(or (not x3947) (not x3771) (not x52) x3942)
+(or (not x3955) (not x3952))
+(or (not x3947) x3942 x3771 x52)
+(or (not x3955) x3954 x3952)
+(or (not x3771) x3947 x3942 x52)
+(or (not x3952) x3955 x3954)
+(or (not x3942) (not x50) x3947 x3939 x3768)
+(or (not x3954) x3955 x3952)
+(or (not x3947) (not x3942) (not x3768) (not x50) x3939)
+(or (not x3953) x3952)
+(or (not x3947) (not x3942) x3939 x3768 x50)
+(or (not x3952) x3953)
+(or (not x3942) (not x3768) x3947 x3939 x50)
+(or (not x3939) (not x48) x3947 x3936 x3765)
+(or (not x3947) (not x3939) (not x3765) (not x48) x3936)
+(or (not x3950) x3951)
+(or (not x3947) (not x3939) x3936 x3765 x48)
+(or (not x3951) x3950)
+(or (not x3939) (not x3765) x3947 x3936 x48)
+(or (not x3638) (not x3949))
+(or (not x3936) (not x46) x3947 x3931 x3759)
+(or (not x3638) x3950 x3949)
+(or (not x3947) (not x3936) (not x3759) (not x46) x3931)
+(or (not x3949) x3638 x3950)
+(or (not x3947) (not x3936) x3931 x3759 x46)
+(or (not x3950) x3638 x3949)
+(or (not x3936) (not x3759) x3947 x3931 x46)
+(or (not x3635) (not x3948))
+(or (not x3931) (not x44) x3947 x3930 x3755)
+(or (not x3635) x3949 x3948)
+(or (not x3947) (not x3931) (not x3755) (not x44) x3930)
+(or (not x3948) x3635 x3949)
+(or (not x3947) (not x3931) x3930 x3755 x44)
+(or (not x3949) x3635 x3948)
+(or (not x3931) (not x3755) x3947 x3930 x44)
+(or (not x3632) (not x3945))
+(or (not x3930) (not x149) x3947 x3929 x3749)
+(or (not x3632) x3948 x3945)
+(or (not x3947) (not x3930) (not x3749) (not x149) x3929)
+(or (not x3945) x3632 x3948)
+(or (not x3947) (not x3930) x3929 x3749 x149)
+(or (not x3948) x3632 x3945)
+(or (not x3930) (not x3749) x3947 x3929 x149)
+(or (not x3629) (not x3944))
+(or (not x3947) (not x3946))
+(or (not x3629) x3945 x3944)
+(or (not x3929) x3946)
+(or (not x3944) x3629 x3945)
+(or (not x3946) x3929)
+(or (not x3945) x3629 x3944)
+(or x3942 x3771 x3676)
+(or (not x3626) x3944)
+(or (not x3771) (not x3676) x3942)
+(or (not x3944) x3626)
+(or (not x3942) (not x3771) x3676)
+(or (not x3942) (not x3676) x3771)
+(or (not x3943) (not x3940))
+(or (not x3942) x3939 x3768 x3674)
+(or (not x3943) x3940)
+(or (not x3942) (not x3768) (not x3674) x3939)
+(or (not x3940) x3943)
+(or (not x3939) (not x3768) x3674)
+(or (not x3939) (not x3674) x3768)
+(or (not x3941) (not x3937))
+(or (not x3939) x3942)
+(or (not x3941) x3940 x3937)
+(or (not x3939) x3936 x3765 x3671)
+(or (not x3937) x3941 x3940)
+(or (not x3939) (not x3765) (not x3671) x3936)
+(or (not x3940) x3941 x3937)
+(or (not x3936) (not x3765) x3671)
+(or (not x3938) (not x3934))
+(or (not x3936) (not x3671) x3765)
+(or (not x3938) x3937 x3934)
+(or (not x3936) x3939)
+(or (not x3934) x3938 x3937)
+(or (not x3936) x3931 x3759 x3668)
+(or (not x3937) x3938 x3934)
+(or (not x3936) (not x3759) (not x3668) x3931)
+(or (not x3935) (not x3932))
+(or (not x3931) (not x3759) x3668)
+(or (not x3935) x3934 x3932)
+(or (not x3931) (not x3668) x3759)
+(or (not x3932) x3935 x3934)
+(or (not x3931) x3936)
+(or (not x3934) x3935 x3932)
+(or (not x3931) x3930 x3755 x3665)
+(or (not x3933) x3932)
+(or (not x3931) (not x3755) (not x3665) x3930)
+(or (not x3932) x3933)
+(or (not x3930) (not x3755) x3665)
+(or (not x3901) (not x3890) (not x2185))
+(or (not x3930) (not x3665) x3755)
+(or (not x3901) (not x3890))
+(or (not x3930) x3931)
+(or (not x3901) (not x3887) (not x2187))
+(or (not x3930) x3929 x3749 x3662)
+(or (not x3901) (not x3887) x681)
+(or (not x3930) (not x3749) (not x3662) x3929)
+(or (not x3901) (not x3885) (not x2188))
+(or (not x3929) (not x3749) x3662)
+(or (not x3901) (not x3885) x675)
+(or (not x3929) (not x3662) x3749)
+(or (not x3901) (not x3883) (not x2189))
+(or (not x3929) x3930)
+(or (not x3901) (not x3883) x669)
+(or (not x3928) (not x2228) (not x2217))
+(or (not x3901) (not x3881) x663)
+(or (not x2228) (not x2217) x3927)
+(or (not x3901) x3890 x3887 x3885 x3883 x3881)
+(or (not x3928) (not x2229) (not x2217) x95)
+(or (not x3901) (not x3890))
+(or (not x2229) (not x2217) (not x95) x3928)
+(or (not x3901) (not x3879))
+(or (not x3927) (not x2229) (not x2217))
+(or (not x3901) (not x3866))
+(or (not x3928) (not x2230) (not x2217) x94)
+(or (not x3901) (not x3623))
+(or (not x2230) (not x2217) (not x94) x3928)
+(or (not x3890) (not x3879) (not x2185))
+(or (not x3927) (not x2230) (not x2217))
+(or (not x3890) (not x3879))
+(or (not x3928) (not x2231) (not x2217) x92)
+(or (not x3890) (not x3876) (not x2187))
+(or (not x2231) (not x2217) (not x92) x3928)
+(or (not x3890) (not x3876) x681)
+(or (not x3927) (not x2231) (not x2217))
+(or (not x3890) (not x3874) (not x2188))
+(or (not x3928) (not x2232) (not x2217) x91)
+(or (not x3890) (not x3874) x675)
+(or (not x2232) (not x2217) (not x91) x3928)
+(or (not x3890) (not x3872) (not x2189))
+(or (not x3927) (not x2232) (not x2217))
+(or (not x3890) (not x3872) x669)
+(or (not x3928) (not x2228) (not x2218) x89)
+(or (not x3890) (not x3870) x663)
+(or (not x2228) (not x2218) (not x89) x3928)
+(or (not x3890) x3879 x3876 x3874 x3872 x3870)
+(or (not x3927) (not x2228) (not x2218))
+(or (not x3890) (not x3879))
+(or (not x3928) (not x2229) (not x2218))
+(or (not x3890) (not x3866))
+(or (not x2229) (not x2218) x3927)
+(or (not x3890) (not x3623))
+(or (not x3928) (not x2230) (not x2218) x88)
+(or (not x3879) (not x3866) (not x2185))
+(or (not x2230) (not x2218) (not x88) x3928)
+(or (not x3879) (not x3866))
+(or (not x3927) (not x2230) (not x2218))
+(or (not x3879) (not x3862) (not x2187))
+(or (not x3928) (not x2231) (not x2218) x87)
+(or (not x3879) (not x3862) x681)
+(or (not x2231) (not x2218) (not x87) x3928)
+(or (not x3879) (not x3860) (not x2188))
+(or (not x3927) (not x2231) (not x2218))
+(or (not x3879) (not x3860) x675)
+(or (not x3928) (not x2232) (not x2218) x86)
+(or (not x3879) (not x3858) (not x2189))
+(or (not x2232) (not x2218) (not x86) x3928)
+(or (not x3879) (not x3858) x669)
+(or (not x3927) (not x2232) (not x2218))
+(or (not x3879) (not x3856) x663)
+(or (not x3928) (not x2228) (not x2219) x82)
+(or (not x3879) x3866 x3862 x3860 x3858 x3856)
+(or (not x2228) (not x2219) (not x82) x3928)
+(or (not x3879) (not x3866))
+(or (not x3927) (not x2228) (not x2219))
+(or (not x3879) (not x3623))
+(or (not x3928) (not x2229) (not x2219) x81)
+(or (not x3866) (not x3623) (not x2185))
+(or (not x2229) (not x2219) (not x81) x3928)
+(or (not x3866) (not x3623))
+(or (not x3927) (not x2229) (not x2219))
+(or (not x3866) (not x3621) (not x2187))
+(or (not x3928) (not x2230) (not x2219))
+(or (not x3866) (not x3621) x681)
+(or (not x2230) (not x2219) x3927)
+(or (not x3866) (not x3616) (not x2188))
+(or (not x3928) (not x2231) (not x2219) x79)
+(or (not x3866) (not x3616) x675)
+(or (not x2231) (not x2219) (not x79) x3928)
+(or (not x3866) (not x3613) (not x2189))
+(or (not x3927) (not x2231) (not x2219))
+(or (not x3866) (not x3613) x669)
+(or (not x3928) (not x2232) (not x2219) x77)
+(or (not x3866) (not x3610) x663)
+(or (not x2232) (not x2219) (not x77) x3928)
+(or (not x3866) x3623 x3621 x3616 x3613 x3610)
+(or (not x3927) (not x2232) (not x2219))
+(or (not x3866) (not x3623))
+(or (not x3928) (not x2228) (not x2220) x73)
+(or (not x3623) (not x2186))
+(or (not x2228) (not x2220) (not x73) x3928)
+(or (not x3623) x689)
+(or (not x3927) (not x2228) (not x2220))
+(or (not x3623) (not x3841) (not x2187))
+(or (not x3928) (not x2229) (not x2220) x67)
+(or (not x3623) (not x3841) x681)
+(or (not x2229) (not x2220) (not x67) x3928)
+(or (not x3623) (not x3840) (not x2188))
+(or (not x3927) (not x2229) (not x2220))
+(or (not x3623) (not x3840) x675)
+(or (not x3928) (not x2230) (not x2220) x66)
+(or (not x3623) (not x3838) (not x2189))
+(or (not x2230) (not x2220) (not x66) x3928)
+(or (not x3623) (not x3838) x669)
+(or (not x3927) (not x2230) (not x2220))
+(or (not x3623) (not x3836) x663)
+(or (not x3928) (not x2231) (not x2220))
+(or (not x2185) x3901 x3890 x3879 x3866 x3623)
+(or (not x2231) (not x2220) x3927)
+(or (not x3898) (not x3890) (not x2185))
+(or (not x3928) (not x2232) (not x2220) x65)
+(or (not x3898) (not x3890) x693)
+(or (not x2232) (not x2220) (not x65) x3928)
+(or (not x3927) (not x2232) (not x2220))
+(or (not x3928) (not x2228) (not x2221) x58)
+(or (not x3898) (not x3887) (not x2187))
+(or (not x2228) (not x2221) (not x58) x3928)
+(or (not x3898) (not x3887))
+(or (not x3927) (not x2228) (not x2221))
+(or (not x3898) (not x3885) (not x2188))
+(or (not x3928) (not x2229) (not x2221) x57)
+(or (not x3898) (not x3885) x672)
+(or (not x2229) (not x2221) (not x57) x3928)
+(or (not x3898) (not x3883) (not x2189))
+(or (not x3927) (not x2229) (not x2221))
+(or (not x3898) (not x3883) x666)
+(or (not x3928) (not x2230) (not x2221) x56)
+(or (not x3898) (not x3881) x660)
+(or (not x2230) (not x2221) (not x56) x3928)
+(or (not x3898) x3890 x3887 x3885 x3883 x3881)
+(or (not x3927) (not x2230) (not x2221))
+(or (not x3898) (not x3887))
+(or (not x3928) (not x2231) (not x2221) x55)
+(or (not x3898) (not x3876))
+(or (not x2231) (not x2221) (not x55) x3928)
+(or (not x3898) (not x3862))
+(or (not x3927) (not x2231) (not x2221))
+(or (not x3898) (not x3621))
+(or (not x3928) (not x2232) (not x2221))
+(or (not x3898) (not x3841))
+(or (not x2232) (not x2221) x3927)
+(or (not x3887) (not x3879) (not x2185))
+(or (not x3926) (not x69) (not x9) x3925)
+(or (not x3887) (not x3879) x693)
+(or (not x3925) (not x3921) (not x3913) x3924 x3923)
+(or (not x3925) (not x3913) x3922 x3921)
+(or (not x3925) x3914 x3913)
+(or (not x3887) (not x3876) (not x2187))
+(or (not x3923) (not x3921) (not x3913) x3925)
+(or (not x3887) (not x3876))
+(or (not x3924) (not x3921) (not x3913) x3925)
+(or (not x3887) (not x3874) (not x2188))
+(or (not x3922) (not x3913) x3925)
+(or (not x3887) (not x3874) x672)
+(or (not x3914) x3925)
+(or (not x3887) (not x3872) (not x2189))
+(or (not x3924) (not x3923))
+(or (not x3887) (not x3872) x666)
+(or (not x3689) x3924 x3713 x2286)
+(or (not x3887) (not x3870) x660)
+(or (not x3924) (not x3689) (not x2286) x3713)
+(or (not x3887) x3879 x3876 x3874 x3872 x3870)
+(or (not x3924) (not x3713) x3689 x2286)
+(or (not x3887) (not x3876))
+(or (not x3713) (not x2286) x3924 x3689)
+(or (not x3887) (not x3862))
+(or (not x3687) x3924 x3712 x2286)
+(or (not x3887) (not x3621))
+(or (not x3924) (not x3687) (not x2286) x3712)
+(or (not x3887) (not x3841))
+(or (not x3924) (not x3712) x3687 x2286)
+(or (not x3876) (not x3866) (not x2185))
+(or (not x3712) (not x2286) x3924 x3687)
+(or (not x3876) (not x3866) x693)
+(or (not x3685) x3924 x3711 x2286)
+(or (not x3924) (not x3685) (not x2286) x3711)
+(or (not x3924) (not x3711) x3685 x2286)
+(or (not x3876) (not x3862) (not x2187))
+(or (not x3711) (not x2286) x3924 x3685)
+(or (not x3876) (not x3862))
+(or (not x3683) x3924 x3710 x2286)
+(or (not x3876) (not x3860) (not x2188))
+(or (not x3924) (not x3683) (not x2286) x3710)
+(or (not x3876) (not x3860) x672)
+(or (not x3924) (not x3710) x3683 x2286)
+(or (not x3876) (not x3858) (not x2189))
+(or (not x3710) (not x2286) x3924 x3683)
+(or (not x3876) (not x3858) x666)
+(or (not x3681) x3924 x3709 x2286)
+(or (not x3876) (not x3856) x660)
+(or (not x3924) (not x3681) (not x2286) x3709)
+(or (not x3876) x3866 x3862 x3860 x3858 x3856)
+(or (not x3924) (not x3709) x3681 x2286)
+(or (not x3876) (not x3862))
+(or (not x3709) (not x2286) x3924 x3681)
+(or (not x3876) (not x3621))
+(or (not x3712) (not x3687) x3923 x3713 x3689)
+(or (not x3876) (not x3841))
+(or (not x3711) (not x3685) x3923 x3712 x3687)
+(or (not x3862) (not x3623) (not x2185))
+(or (not x3710) (not x3683) x3923 x3711 x3685)
+(or (not x3862) (not x3623) x693)
+(or (not x3709) (not x3681) x3923 x3710 x3683)
+(or x3923 x3709 x3681)
+(or (not x3713) (not x3689) x3923)
+(or (not x3862) (not x3621) (not x2187))
+(or (not x3923) (not x3713) x3689)
+(or (not x3862) (not x3621))
+(or (not x3923) (not x3689) x3713)
+(or (not x3862) (not x3616) (not x2188))
+(or (not x3923) (not x3712) x3687)
+(or (not x3862) (not x3616) x672)
+(or (not x3923) (not x3687) x3712)
+(or (not x3862) (not x3613) (not x2189))
+(or (not x3923) (not x3711) x3685)
+(or (not x3862) (not x3613) x666)
+(or (not x3923) (not x3685) x3711)
+(or (not x3862) (not x3610) x660)
+(or (not x3923) (not x3710) x3683)
+(or (not x3862) x3623 x3621 x3616 x3613 x3610)
+(or (not x3923) (not x3683) x3710)
+(or (not x3862) (not x3621))
+(or (not x3923) (not x3709) x3681)
+(or (not x3862) (not x3841))
+(or (not x3923) (not x3681) x3709)
+(or (not x3621) (not x2186))
+(or (not x52) x3922 x3920 x3705)
+(or (not x3621) x688)
+(or (not x3922) (not x3705) (not x52) x3920)
+(or (not x3621) (not x3841) (not x2187))
+(or (not x3922) x3920 x3705 x52)
+(or (not x3621) (not x3841))
+(or (not x3705) x3922 x3920 x52)
+(or (not x3621) (not x3840) (not x2188))
+(or (not x3920) (not x50) x3922 x3919 x3704)
+(or (not x3621) (not x3840) x672)
+(or (not x3922) (not x3920) (not x3704) (not x50) x3919)
+(or (not x3621) (not x3838) (not x2189))
+(or (not x3922) (not x3920) x3919 x3704 x50)
+(or (not x3621) (not x3838) x666)
+(or (not x3920) (not x3704) x3922 x3919 x50)
+(or (not x3621) (not x3836) x660)
+(or (not x3919) (not x48) x3922 x3918 x3702)
+(or (not x3621) (not x3841))
+(or (not x3922) (not x3919) (not x3702) (not x48) x3918)
+(or (not x2187) x3898 x3887 x3876 x3862 x3621 x3841)
+(or (not x3922) (not x3919) x3918 x3702 x48)
+(or (not x3896) (not x3890) (not x2185))
+(or (not x3919) (not x3702) x3922 x3918 x48)
+(or (not x3896) (not x3890) x692)
+(or (not x3918) (not x46) x3922 x3917 x3700)
+(or (not x3922) (not x3918) (not x3700) (not x46) x3917)
+(or (not x3922) (not x3918) x3917 x3700 x46)
+(or (not x3896) (not x3887) (not x2187))
+(or (not x3918) (not x3700) x3922 x3917 x46)
+(or (not x3896) (not x3887) x678)
+(or (not x3917) (not x44) x3922 x3916 x3698)
+(or (not x3896) (not x3885) (not x2188))
+(or (not x3922) (not x3917) (not x3698) (not x44) x3916)
+(or (not x3896) (not x3885))
+(or (not x3922) (not x3917) x3916 x3698 x44)
+(or (not x3896) (not x3883) (not x2189))
+(or (not x3917) (not x3698) x3922 x3916 x44)
+(or (not x3896) (not x3883) x665)
+(or (not x3916) (not x149) x3922 x3915 x3696)
+(or (not x3896) (not x3881) x658)
+(or (not x3922) (not x3916) (not x3696) (not x149) x3915)
+(or (not x3896) x3890 x3887 x3885 x3883 x3881)
+(or (not x3922) (not x3916) x3915 x3696 x149)
+(or (not x3896) (not x3885))
+(or (not x3916) (not x3696) x3922 x3915 x149)
+(or (not x3896) (not x3874))
+(or (not x3922) (not x3921))
+(or (not x3896) (not x3860))
+(or (not x3915) x3921)
+(or (not x3896) (not x3616))
+(or (not x3921) x3915)
+(or (not x3896) (not x3840))
+(or x3920 x3705 x3676)
+(or (not x3885) (not x3879) (not x2185))
+(or (not x3705) (not x3676) x3920)
+(or (not x3885) (not x3879) x692)
+(or (not x3920) (not x3705) x3676)
+(or (not x3920) (not x3676) x3705)
+(or (not x3920) x3919 x3704 x3674)
+(or (not x3885) (not x3876) (not x2187))
+(or (not x3920) (not x3704) (not x3674) x3919)
+(or (not x3885) (not x3876) x678)
+(or (not x3919) (not x3704) x3674)
+(or (not x3885) (not x3874) (not x2188))
+(or (not x3919) (not x3674) x3704)
+(or (not x3885) (not x3874))
+(or (not x3919) x3920)
+(or (not x3885) (not x3872) (not x2189))
+(or (not x3919) x3918 x3702 x3671)
+(or (not x3885) (not x3872) x665)
+(or (not x3919) (not x3702) (not x3671) x3918)
+(or (not x3885) (not x3870) x658)
+(or (not x3918) (not x3702) x3671)
+(or (not x3885) x3879 x3876 x3874 x3872 x3870)
+(or (not x3918) (not x3671) x3702)
+(or (not x3885) (not x3874))
+(or (not x3918) x3919)
+(or (not x3885) (not x3860))
+(or (not x3918) x3917 x3700 x3668)
+(or (not x3885) (not x3616))
+(or (not x3918) (not x3700) (not x3668) x3917)
+(or (not x3885) (not x3840))
+(or (not x3917) (not x3700) x3668)
+(or (not x3874) (not x3866) (not x2185))
+(or (not x3917) (not x3668) x3700)
+(or (not x3874) (not x3866) x692)
+(or (not x3917) x3918)
+(or (not x3917) x3916 x3698 x3665)
+(or (not x3917) (not x3698) (not x3665) x3916)
+(or (not x3874) (not x3862) (not x2187))
+(or (not x3916) (not x3698) x3665)
+(or (not x3874) (not x3862) x678)
+(or (not x3916) (not x3665) x3698)
+(or (not x3874) (not x3860) (not x2188))
+(or (not x3916) x3917)
+(or (not x3874) (not x3860))
+(or (not x3916) x3915 x3696 x3662)
+(or (not x3874) (not x3858) (not x2189))
+(or (not x3916) (not x3696) (not x3662) x3915)
+(or (not x3874) (not x3858) x665)
+(or (not x3915) (not x3696) x3662)
+(or (not x3874) (not x3856) x658)
+(or (not x3915) (not x3662) x3696)
+(or (not x3874) x3866 x3862 x3860 x3858 x3856)
+(or (not x3915) x3916)
+(or (not x3874) (not x3860))
+(or (not x3914) (not x2223) (not x2217))
+(or (not x3874) (not x3616))
+(or (not x2223) (not x2217) x3913)
+(or (not x3874) (not x3840))
+(or (not x3914) (not x2224) (not x2217) x95)
+(or (not x3860) (not x3623) (not x2185))
+(or (not x2224) (not x2217) (not x95) x3914)
+(or (not x3860) (not x3623) x692)
+(or (not x3913) (not x2224) (not x2217))
+(or (not x3914) (not x2225) (not x2217) x94)
+(or (not x2225) (not x2217) (not x94) x3914)
+(or (not x3860) (not x3621) (not x2187))
+(or (not x3913) (not x2225) (not x2217))
+(or (not x3860) (not x3621) x678)
+(or (not x3914) (not x2226) (not x2217) x92)
+(or (not x3860) (not x3616) (not x2188))
+(or (not x2226) (not x2217) (not x92) x3914)
+(or (not x3860) (not x3616))
+(or (not x3913) (not x2226) (not x2217))
+(or (not x3860) (not x3613) (not x2189))
+(or (not x3914) (not x2227) (not x2217) x91)
+(or (not x3860) (not x3613) x665)
+(or (not x2227) (not x2217) (not x91) x3914)
+(or (not x3860) (not x3610) x658)
+(or (not x3913) (not x2227) (not x2217))
+(or (not x3860) x3623 x3621 x3616 x3613 x3610)
+(or (not x3914) (not x2223) (not x2218) x89)
+(or (not x3860) (not x3616))
+(or (not x2223) (not x2218) (not x89) x3914)
+(or (not x3860) (not x3840))
+(or (not x3913) (not x2223) (not x2218))
+(or (not x3616) (not x2186))
+(or (not x3914) (not x2224) (not x2218))
+(or (not x3616) x687)
+(or (not x2224) (not x2218) x3913)
+(or (not x3616) (not x3841) (not x2187))
+(or (not x3914) (not x2225) (not x2218) x88)
+(or (not x3616) (not x3841) x678)
+(or (not x2225) (not x2218) (not x88) x3914)
+(or (not x3616) (not x3840) (not x2188))
+(or (not x3913) (not x2225) (not x2218))
+(or (not x3616) (not x3840))
+(or (not x3914) (not x2226) (not x2218) x87)
+(or (not x3616) (not x3838) (not x2189))
+(or (not x2226) (not x2218) (not x87) x3914)
+(or (not x3616) (not x3838) x665)
+(or (not x3913) (not x2226) (not x2218))
+(or (not x3616) (not x3836) x658)
+(or (not x3914) (not x2227) (not x2218) x86)
+(or (not x3616) (not x3840))
+(or (not x2227) (not x2218) (not x86) x3914)
+(or (not x2188) x3896 x3885 x3874 x3860 x3616 x3840)
+(or (not x3913) (not x2227) (not x2218))
+(or (not x3894) (not x3890) (not x2185))
+(or (not x3914) (not x2223) (not x2219) x82)
+(or (not x3894) (not x3890) x691)
+(or (not x2223) (not x2219) (not x82) x3914)
+(or (not x3913) (not x2223) (not x2219))
+(or (not x3914) (not x2224) (not x2219) x81)
+(or (not x3894) (not x3887) (not x2187))
+(or (not x2224) (not x2219) (not x81) x3914)
+(or (not x3894) (not x3887) x677)
+(or (not x3913) (not x2224) (not x2219))
+(or (not x3894) (not x3885) (not x2188))
+(or (not x3914) (not x2225) (not x2219))
+(or (not x3894) (not x3885) x671)
+(or (not x2225) (not x2219) x3913)
+(or (not x3894) (not x3883) (not x2189))
+(or (not x3914) (not x2226) (not x2219) x79)
+(or (not x3894) (not x3883))
+(or (not x2226) (not x2219) (not x79) x3914)
+(or (not x3894) (not x3881) x657)
+(or (not x3913) (not x2226) (not x2219))
+(or (not x3894) x3890 x3887 x3885 x3883 x3881)
+(or (not x3914) (not x2227) (not x2219) x77)
+(or (not x3894) (not x3883))
+(or (not x2227) (not x2219) (not x77) x3914)
+(or (not x3894) (not x3872))
+(or (not x3913) (not x2227) (not x2219))
+(or (not x3894) (not x3858))
+(or (not x3914) (not x2223) (not x2220) x73)
+(or (not x3894) (not x3613))
+(or (not x2223) (not x2220) (not x73) x3914)
+(or (not x3894) (not x3838))
+(or (not x3913) (not x2223) (not x2220))
+(or (not x3883) (not x3879) (not x2185))
+(or (not x3914) (not x2224) (not x2220) x67)
+(or (not x3883) (not x3879) x691)
+(or (not x2224) (not x2220) (not x67) x3914)
+(or (not x3913) (not x2224) (not x2220))
+(or (not x3914) (not x2225) (not x2220) x66)
+(or (not x3883) (not x3876) (not x2187))
+(or (not x2225) (not x2220) (not x66) x3914)
+(or (not x3883) (not x3876) x677)
+(or (not x3913) (not x2225) (not x2220))
+(or (not x3883) (not x3874) (not x2188))
+(or (not x3914) (not x2226) (not x2220))
+(or (not x3883) (not x3874) x671)
+(or (not x2226) (not x2220) x3913)
+(or (not x3883) (not x3872) (not x2189))
+(or (not x3914) (not x2227) (not x2220) x65)
+(or (not x3883) (not x3872))
+(or (not x2227) (not x2220) (not x65) x3914)
+(or (not x3883) (not x3870) x657)
+(or (not x3913) (not x2227) (not x2220))
+(or (not x3883) x3879 x3876 x3874 x3872 x3870)
+(or (not x3914) (not x2223) (not x2221) x58)
+(or (not x3883) (not x3872))
+(or (not x2223) (not x2221) (not x58) x3914)
+(or (not x3883) (not x3858))
+(or (not x3913) (not x2223) (not x2221))
+(or (not x3883) (not x3613))
+(or (not x3914) (not x2224) (not x2221) x57)
+(or (not x3883) (not x3838))
+(or (not x2224) (not x2221) (not x57) x3914)
+(or (not x3872) (not x3866) (not x2185))
+(or (not x3913) (not x2224) (not x2221))
+(or (not x3872) (not x3866) x691)
+(or (not x3914) (not x2225) (not x2221) x56)
+(or (not x2225) (not x2221) (not x56) x3914)
+(or (not x3913) (not x2225) (not x2221))
+(or (not x3872) (not x3862) (not x2187))
+(or (not x3914) (not x2226) (not x2221) x55)
+(or (not x3872) (not x3862) x677)
+(or (not x2226) (not x2221) (not x55) x3914)
+(or (not x3872) (not x3860) (not x2188))
+(or (not x3913) (not x2226) (not x2221))
+(or (not x3872) (not x3860) x671)
+(or (not x3914) (not x2227) (not x2221))
+(or (not x3872) (not x3858) (not x2189))
+(or (not x2227) (not x2221) x3913)
+(or (not x3872) (not x3858))
+(or (not x3912) (not x3908) (not x3867) x3911 x3910)
+(or (not x3872) (not x3856) x657)
+(or (not x3912) (not x3867) x3909 x3908)
+(or (not x3872) x3866 x3862 x3860 x3858 x3856)
+(or (not x3912) x3868 x3867)
+(or (not x3872) (not x3858))
+(or (not x3910) (not x3908) (not x3867) x3912)
+(or (not x3872) (not x3613))
+(or (not x3911) (not x3908) (not x3867) x3912)
+(or (not x3872) (not x3838))
+(or (not x3909) (not x3867) x3912)
+(or (not x3858) (not x3623) (not x2185))
+(or (not x3868) x3912)
+(or (not x3858) (not x3623) x691)
+(or (not x3911) (not x3910))
+(or (not x3689) x3911 x3688 x2286)
+(or (not x3911) (not x3689) (not x2286) x3688)
+(or (not x3858) (not x3621) (not x2187))
+(or (not x3911) (not x3688) x3689 x2286)
+(or (not x3858) (not x3621) x677)
+(or (not x3688) (not x2286) x3911 x3689)
+(or (not x3858) (not x3616) (not x2188))
+(or (not x3687) x3911 x3686 x2286)
+(or (not x3858) (not x3616) x671)
+(or (not x3911) (not x3687) (not x2286) x3686)
+(or (not x3858) (not x3613) (not x2189))
+(or (not x3911) (not x3686) x3687 x2286)
+(or (not x3858) (not x3613))
+(or (not x3686) (not x2286) x3911 x3687)
+(or (not x3858) (not x3610) x657)
+(or (not x3685) x3911 x3684 x2286)
+(or (not x3858) x3623 x3621 x3616 x3613 x3610)
+(or (not x3911) (not x3685) (not x2286) x3684)
+(or (not x3858) (not x3613))
+(or (not x3911) (not x3684) x3685 x2286)
+(or (not x3858) (not x3838))
+(or (not x3684) (not x2286) x3911 x3685)
+(or (not x3613) (not x2186))
+(or (not x3683) x3911 x3682 x2286)
+(or (not x3613) x686)
+(or (not x3911) (not x3683) (not x2286) x3682)
+(or (not x3613) (not x3841) (not x2187))
+(or (not x3911) (not x3682) x3683 x2286)
+(or (not x3613) (not x3841) x677)
+(or (not x3682) (not x2286) x3911 x3683)
+(or (not x3613) (not x3840) (not x2188))
+(or (not x3681) x3911 x3680 x2286)
+(or (not x3613) (not x3840) x671)
+(or (not x3911) (not x3681) (not x2286) x3680)
+(or (not x3613) (not x3838) (not x2189))
+(or (not x3911) (not x3680) x3681 x2286)
+(or (not x3613) (not x3838))
+(or (not x3680) (not x2286) x3911 x3681)
+(or (not x3613) (not x3836) x657)
+(or (not x3687) (not x3686) x3910 x3689 x3688)
+(or (not x3613) (not x3838))
+(or (not x3685) (not x3684) x3910 x3687 x3686)
+(or (not x2189) x3894 x3883 x3872 x3858 x3613 x3838)
+(or (not x3683) (not x3682) x3910 x3685 x3684)
+(or (not x3892) (not x3890) (not x2185))
+(or (not x3681) (not x3680) x3910 x3683 x3682)
+(or (not x3892) (not x3890) x690)
+(or x3910 x3681 x3680)
+(or (not x3689) (not x3688) x3910)
+(or (not x3910) (not x3688) x3689)
+(or (not x3892) (not x3887) (not x2187))
+(or (not x3910) (not x3689) x3688)
+(or (not x3892) (not x3887) x676)
+(or (not x3910) (not x3686) x3687)
+(or (not x3892) (not x3885) (not x2188))
+(or (not x3910) (not x3687) x3686)
+(or (not x3892) (not x3885) x670)
+(or (not x3910) (not x3684) x3685)
+(or (not x3892) (not x3883) (not x2189))
+(or (not x3910) (not x3685) x3684)
+(or (not x3892) (not x3883) x664)
+(or (not x3910) (not x3682) x3683)
+(or (not x3892) (not x3881))
+(or (not x3910) (not x3683) x3682)
+(or (not x3892) x3890 x3887 x3885 x3883 x3881)
+(or (not x3910) (not x3680) x3681)
+(or (not x3892) (not x3881))
+(or (not x3910) (not x3681) x3680)
+(or (not x3892) (not x3870))
+(or (not x52) x3909 x3907 x3675)
+(or (not x3892) (not x3856))
+(or (not x3909) (not x3675) (not x52) x3907)
+(or (not x3892) (not x3610))
+(or (not x3909) x3907 x3675 x52)
+(or (not x3892) (not x3836))
+(or (not x3675) x3909 x3907 x52)
+(or (not x3881) (not x3879) (not x2185))
+(or (not x3907) (not x50) x3909 x3906 x3673)
+(or (not x3881) (not x3879) x690)
+(or (not x3909) (not x3907) (not x3673) (not x50) x3906)
+(or (not x3909) (not x3907) x3906 x3673 x50)
+(or (not x3907) (not x3673) x3909 x3906 x50)
+(or (not x3881) (not x3876) (not x2187))
+(or (not x3906) (not x48) x3909 x3905 x3670)
+(or (not x3881) (not x3876) x676)
+(or (not x3909) (not x3906) (not x3670) (not x48) x3905)
+(or (not x3881) (not x3874) (not x2188))
+(or (not x3909) (not x3906) x3905 x3670 x48)
+(or (not x3881) (not x3874) x670)
+(or (not x3906) (not x3670) x3909 x3905 x48)
+(or (not x3881) (not x3872) (not x2189))
+(or (not x3905) (not x46) x3909 x3904 x3667)
+(or (not x3881) (not x3872) x664)
+(or (not x3909) (not x3905) (not x3667) (not x46) x3904)
+(or (not x3881) (not x3870))
+(or (not x3909) (not x3905) x3904 x3667 x46)
+(or (not x3881) x3879 x3876 x3874 x3872 x3870)
+(or (not x3905) (not x3667) x3909 x3904 x46)
+(or (not x3881) (not x3870))
+(or (not x3904) (not x44) x3909 x3903 x3664)
+(or (not x3881) (not x3856))
+(or (not x3909) (not x3904) (not x3664) (not x44) x3903)
+(or (not x3881) (not x3610))
+(or (not x3909) (not x3904) x3903 x3664 x44)
+(or (not x3881) (not x3836))
+(or (not x3904) (not x3664) x3909 x3903 x44)
+(or (not x3870) (not x3866) (not x2185))
+(or (not x3903) (not x149) x3909 x3902 x3661)
+(or (not x3870) (not x3866) x690)
+(or (not x3909) (not x3903) (not x3661) (not x149) x3902)
+(or (not x3909) (not x3903) x3902 x3661 x149)
+(or (not x3903) (not x3661) x3909 x3902 x149)
+(or (not x3870) (not x3862) (not x2187))
+(or (not x3909) (not x3908))
+(or (not x3870) (not x3862) x676)
+(or (not x3902) x3908)
+(or (not x3870) (not x3860) (not x2188))
+(or (not x3908) x3902)
+(or (not x3870) (not x3860) x670)
+(or x3907 x3676 x3675)
+(or (not x3870) (not x3858) (not x2189))
+(or (not x3676) (not x3675) x3907)
+(or (not x3870) (not x3858) x664)
+(or (not x3907) (not x3675) x3676)
+(or (not x3870) (not x3856))
+(or (not x3907) (not x3676) x3675)
+(or (not x3870) x3866 x3862 x3860 x3858 x3856)
+(or (not x3907) x3906 x3674 x3673)
+(or (not x3870) (not x3856))
+(or (not x3907) (not x3674) (not x3673) x3906)
+(or (not x3870) (not x3610))
+(or (not x3906) (not x3673) x3674)
+(or (not x3870) (not x3836))
+(or (not x3906) (not x3674) x3673)
+(or (not x3856) (not x3623) (not x2185))
+(or (not x3906) x3907)
+(or (not x3856) (not x3623) x690)
+(or (not x3906) x3905 x3671 x3670)
+(or (not x3906) (not x3671) (not x3670) x3905)
+(or (not x3905) (not x3670) x3671)
+(or (not x3856) (not x3621) (not x2187))
+(or (not x3905) (not x3671) x3670)
+(or (not x3856) (not x3621) x676)
+(or (not x3905) x3906)
+(or (not x3856) (not x3616) (not x2188))
+(or (not x3905) x3904 x3668 x3667)
+(or (not x3856) (not x3616) x670)
+(or (not x3905) (not x3668) (not x3667) x3904)
+(or (not x3856) (not x3613) (not x2189))
+(or (not x3904) (not x3667) x3668)
+(or (not x3856) (not x3613) x664)
+(or (not x3904) (not x3668) x3667)
+(or (not x3856) (not x3610))
+(or (not x3904) x3905)
+(or (not x3856) x3623 x3621 x3616 x3613 x3610)
+(or (not x3904) x3903 x3665 x3664)
+(or (not x3856) (not x3610))
+(or (not x3904) (not x3665) (not x3664) x3903)
+(or (not x3856) (not x3836))
+(or (not x3903) (not x3664) x3665)
+(or (not x3610) (not x2186))
+(or (not x3903) (not x3665) x3664)
+(or (not x3610) x684)
+(or (not x3903) x3904)
+(or (not x3610) (not x3841) (not x2187))
+(or (not x3903) x3902 x3662 x3661)
+(or (not x3610) (not x3841) x676)
+(or (not x3903) (not x3662) (not x3661) x3902)
+(or (not x3610) (not x3840) (not x2188))
+(or (not x3902) (not x3661) x3662)
+(or (not x3610) (not x3840) x670)
+(or (not x3902) (not x3662) x3661)
+(or (not x3610) (not x3838) (not x2189))
+(or (not x3902) x3903)
+(or (not x3610) (not x3838) x664)
+(or (not x3868) (not x2217) (not x2212))
+(or (not x3610) (not x3836))
+(or (not x2217) (not x2212) x3867)
+(or (not x3610) (not x3836))
+(or (not x3868) (not x2217) (not x2213) x95)
+(or (not x3901) (not x3899))
+(or (not x2217) (not x2213) (not x95) x3868)
+(or (not x3901) x3900 x3899)
+(or (not x3867) (not x2217) (not x2213))
+(or (not x3899) x3901 x3900)
+(or (not x3868) (not x2217) (not x2214) x94)
+(or (not x3900) x3901 x3899)
+(or (not x2217) (not x2214) (not x94) x3868)
+(or (not x3867) (not x2217) (not x2214))
+(or (not x3868) (not x2217) (not x2215) x92)
+(or (not x3897) x3899)
+(or (not x2217) (not x2215) (not x92) x3868)
+(or (not x3899) x3897)
+(or (not x3867) (not x2217) (not x2215))
+(or (not x3898) (not x3895))
+(or (not x3868) (not x2217) (not x2216) x91)
+(or (not x3898) x3897 x3895)
+(or (not x2217) (not x2216) (not x91) x3868)
+(or (not x3895) x3898 x3897)
+(or (not x3867) (not x2217) (not x2216))
+(or (not x3897) x3898 x3895)
+(or (not x3868) (not x2218) (not x2212) x89)
+(or (not x3896) (not x3893))
+(or (not x2218) (not x2212) (not x89) x3868)
+(or (not x3896) x3895 x3893)
+(or (not x3867) (not x2218) (not x2212))
+(or (not x3893) x3896 x3895)
+(or (not x3868) (not x2218) (not x2213))
+(or (not x3895) x3896 x3893)
+(or (not x2218) (not x2213) x3867)
+(or (not x3894) (not x3891))
+(or (not x3868) (not x2218) (not x2214) x88)
+(or (not x3894) x3893 x3891)
+(or (not x2218) (not x2214) (not x88) x3868)
+(or (not x3891) x3894 x3893)
+(or (not x3867) (not x2218) (not x2214))
+(or (not x3893) x3894 x3891)
+(or (not x3868) (not x2218) (not x2215) x87)
+(or (not x3892) x3891)
+(or (not x2218) (not x2215) (not x87) x3868)
+(or (not x3891) x3892)
+(or (not x3867) (not x2218) (not x2215))
+(or (not x3890) (not x3888))
+(or (not x3868) (not x2218) (not x2216) x86)
+(or (not x3890) x3889 x3888)
+(or (not x2218) (not x2216) (not x86) x3868)
+(or (not x3888) x3890 x3889)
+(or (not x3867) (not x2218) (not x2216))
+(or (not x3889) x3890 x3888)
+(or (not x3868) (not x2219) (not x2212) x82)
+(or (not x2219) (not x2212) (not x82) x3868)
+(or (not x3867) (not x2219) (not x2212))
+(or (not x3886) x3888)
+(or (not x3868) (not x2219) (not x2213) x81)
+(or (not x3888) x3886)
+(or (not x2219) (not x2213) (not x81) x3868)
+(or (not x3887) (not x3884))
+(or (not x3867) (not x2219) (not x2213))
+(or (not x3887) x3886 x3884)
+(or (not x3868) (not x2219) (not x2214))
+(or (not x3884) x3887 x3886)
+(or (not x2219) (not x2214) x3867)
+(or (not x3886) x3887 x3884)
+(or (not x3868) (not x2219) (not x2215) x79)
+(or (not x3885) (not x3882))
+(or (not x2219) (not x2215) (not x79) x3868)
+(or (not x3885) x3884 x3882)
+(or (not x3867) (not x2219) (not x2215))
+(or (not x3882) x3885 x3884)
+(or (not x3868) (not x2219) (not x2216) x77)
+(or (not x3884) x3885 x3882)
+(or (not x2219) (not x2216) (not x77) x3868)
+(or (not x3883) (not x3880))
+(or (not x3867) (not x2219) (not x2216))
+(or (not x3883) x3882 x3880)
+(or (not x3868) (not x2220) (not x2212) x73)
+(or (not x3880) x3883 x3882)
+(or (not x2220) (not x2212) (not x73) x3868)
+(or (not x3882) x3883 x3880)
+(or (not x3867) (not x2220) (not x2212))
+(or (not x3881) x3880)
+(or (not x3868) (not x2220) (not x2213) x67)
+(or (not x3880) x3881)
+(or (not x2220) (not x2213) (not x67) x3868)
+(or (not x3879) (not x3877))
+(or (not x3867) (not x2220) (not x2213))
+(or (not x3879) x3878 x3877)
+(or (not x3868) (not x2220) (not x2214) x66)
+(or (not x3877) x3879 x3878)
+(or (not x2220) (not x2214) (not x66) x3868)
+(or (not x3878) x3879 x3877)
+(or (not x3867) (not x2220) (not x2214))
+(or (not x3868) (not x2220) (not x2215))
+(or (not x2220) (not x2215) x3867)
+(or (not x3875) x3877)
+(or (not x3868) (not x2220) (not x2216) x65)
+(or (not x3877) x3875)
+(or (not x2220) (not x2216) (not x65) x3868)
+(or (not x3876) (not x3873))
+(or (not x3867) (not x2220) (not x2216))
+(or (not x3876) x3875 x3873)
+(or (not x3868) (not x2221) (not x2212) x58)
+(or (not x3873) x3876 x3875)
+(or (not x2221) (not x2212) (not x58) x3868)
+(or (not x3875) x3876 x3873)
+(or (not x3867) (not x2221) (not x2212))
+(or (not x3874) (not x3871))
+(or (not x3868) (not x2221) (not x2213) x57)
+(or (not x3874) x3873 x3871)
+(or (not x2221) (not x2213) (not x57) x3868)
+(or (not x3871) x3874 x3873)
+(or (not x3867) (not x2221) (not x2213))
+(or (not x3873) x3874 x3871)
+(or (not x3868) (not x2221) (not x2214) x56)
+(or (not x3872) (not x3869))
+(or (not x2221) (not x2214) (not x56) x3868)
+(or (not x3872) x3871 x3869)
+(or (not x3867) (not x2221) (not x2214))
+(or (not x3869) x3872 x3871)
+(or (not x3868) (not x2221) (not x2215) x55)
+(or (not x3871) x3872 x3869)
+(or (not x2221) (not x2215) (not x55) x3868)
+(or (not x3870) x3869)
+(or (not x3867) (not x2221) (not x2215))
+(or (not x3869) x3870)
+(or (not x3868) (not x2221) (not x2216))
+(or (not x3866) (not x3864))
+(or (not x2221) (not x2216) x3867)
+(or (not x3866) x3865 x3864)
+(or (not x3863) (not x3833) (not x3819) x3853 x3842)
+(or (not x3864) x3866 x3865)
+(or (not x3863) (not x3819) x3834 x3833)
+(or (not x3865) x3866 x3864)
+(or (not x3863) x3820 x3819)
+(or (not x3842) (not x3833) (not x3819) x3863)
+(or (not x3853) (not x3833) (not x3819) x3863)
+(or (not x3861) x3864)
+(or (not x3834) (not x3819) x3863)
+(or (not x3864) x3861)
+(or (not x3820) x3863)
+(or (not x3862) (not x3859))
+(or (not x3853) (not x3842))
+(or (not x3862) x3861 x3859)
+(or (not x3688) x3853 x3850 x2284)
+(or (not x3859) x3862 x3861)
+(or (not x3853) (not x3688) (not x2284) x3850)
+(or (not x3861) x3862 x3859)
+(or (not x3853) (not x3850) x3688 x2284)
+(or (not x3860) (not x3857))
+(or (not x3850) (not x2284) x3853 x3688)
+(or (not x3860) x3859 x3857)
+(or (not x3686) x3853 x3848 x2284)
+(or (not x3857) x3860 x3859)
+(or (not x3853) (not x3686) (not x2284) x3848)
+(or (not x3859) x3860 x3857)
+(or (not x3853) (not x3848) x3686 x2284)
+(or (not x3858) (not x3855))
+(or (not x3848) (not x2284) x3853 x3686)
+(or (not x3858) x3857 x3855)
+(or (not x3684) x3853 x3847 x2284)
+(or (not x3855) x3858 x3857)
+(or (not x3853) (not x3684) (not x2284) x3847)
+(or (not x3857) x3858 x3855)
+(or (not x3853) (not x3847) x3684 x2284)
+(or (not x3856) x3855)
+(or (not x3847) (not x2284) x3853 x3684)
+(or (not x3855) x3856)
+(or (not x3682) x3853 x3845 x2284)
+(or (not x3623) (not x3852))
+(or (not x3853) (not x3682) (not x2284) x3845)
+(or (not x3623) x3854 x3852)
+(or (not x3853) (not x3845) x3682 x2284)
+(or (not x3852) x3623 x3854)
+(or (not x3845) (not x2284) x3853 x3682)
+(or (not x3854) x3623 x3852)
+(or (not x3680) x3853 x3843 x2284)
+(or (not x3853) (not x3680) (not x2284) x3843)
+(or (not x3853) (not x3843) x3680 x2284)
+(or (not x3851) x3852)
+(or (not x3843) (not x2284) x3853 x3680)
+(or (not x3852) x3851)
+(or (not x3848) (not x3686) x3842 x3850 x3688)
+(or (not x3621) (not x3849))
+(or (not x3847) (not x3684) x3842 x3848 x3686)
+(or (not x3621) x3851 x3849)
+(or (not x3845) (not x3682) x3842 x3847 x3684)
+(or (not x3849) x3621 x3851)
+(or (not x3843) (not x3680) x3842 x3845 x3682)
+(or (not x3851) x3621 x3849)
+(or x3842 x3843 x3680)
+(or (not x3616) (not x3846))
+(or (not x3850) (not x3688) x3842)
+(or (not x3616) x3849 x3846)
+(or (not x3842) (not x3850) x3688)
+(or (not x3846) x3616 x3849)
+(or (not x3842) (not x3688) x3850)
+(or (not x3849) x3616 x3846)
+(or (not x3842) (not x3848) x3686)
+(or (not x3613) (not x3844))
+(or (not x3842) (not x3686) x3848)
+(or (not x3613) x3846 x3844)
+(or (not x3842) (not x3847) x3684)
+(or (not x3844) x3613 x3846)
+(or (not x3842) (not x3684) x3847)
+(or (not x3846) x3613 x3844)
+(or (not x3842) (not x3845) x3682)
+(or (not x3610) x3844)
+(or (not x3842) (not x3682) x3845)
+(or (not x3844) x3610)
+(or (not x3842) (not x3843) x3680)
+(or (not x3842) (not x3680) x3843)
+(or (not x52) x3834 x3830 x3832)
+(or (not x3841) (not x3839))
+(or (not x3834) (not x3832) (not x52) x3830)
+(or (not x3841) x3839)
+(or (not x3834) x3830 x3832 x52)
+(or (not x3839) x3841)
+(or (not x3832) x3834 x3830 x52)
+(or (not x3830) (not x50) x3834 x3828 x3831)
+(or (not x3840) (not x3837))
+(or (not x3834) (not x3830) (not x3831) (not x50) x3828)
+(or (not x3840) x3839 x3837)
+(or (not x3834) (not x3830) x3828 x3831 x50)
+(or (not x3837) x3840 x3839)
+(or (not x3830) (not x3831) x3834 x3828 x50)
+(or (not x3839) x3840 x3837)
+(or (not x3828) (not x48) x3834 x3826 x3829)
+(or (not x3838) (not x3835))
+(or (not x3834) (not x3828) (not x3829) (not x48) x3826)
+(or (not x3838) x3837 x3835)
+(or (not x3834) (not x3828) x3826 x3829 x48)
+(or (not x3835) x3838 x3837)
+(or (not x3828) (not x3829) x3834 x3826 x48)
+(or (not x3837) x3838 x3835)
+(or (not x3826) (not x46) x3834 x3824 x3827)
+(or (not x3836) x3835)
+(or (not x3834) (not x3826) (not x3827) (not x46) x3824)
+(or (not x3835) x3836)
+(or (not x3834) (not x3826) x3824 x3827 x46)
+(or (not x3786) (not x3773) (not x2180))
+(or (not x3826) (not x3827) x3834 x3824 x46)
+(or (not x3786) (not x3773))
+(or (not x3824) (not x44) x3834 x3822 x3825)
+(or (not x3786) (not x3770) (not x2181))
+(or (not x3834) (not x3824) (not x3825) (not x44) x3822)
+(or (not x3786) (not x3770) x689)
+(or (not x3834) (not x3824) x3822 x3825 x44)
+(or (not x3786) (not x3764) (not x2183))
+(or (not x3824) (not x3825) x3834 x3822 x44)
+(or (not x3786) (not x3764) x675)
+(or (not x3822) (not x149) x3834 x3821 x3823)
+(or (not x3786) (not x3761) (not x2184))
+(or (not x3834) (not x3822) (not x3823) (not x149) x3821)
+(or (not x3786) (not x3761) x669)
+(or (not x3834) (not x3822) x3821 x3823 x149)
+(or (not x3786) (not x3757) x663)
+(or (not x3822) (not x3823) x3834 x3821 x149)
+(or (not x3786) x3773 x3770 x3764 x3761 x3757)
+(or (not x3834) (not x3833))
+(or (not x3786) (not x3773))
+(or (not x3821) x3833)
+(or (not x3786) (not x3754))
+(or (not x3833) x3821)
+(or (not x3786) (not x3739))
+(or x3830 x3832 x3675)
+(or (not x3786) (not x3607))
+(or (not x3832) (not x3675) x3830)
+(or (not x3773) (not x3754) (not x2180))
+(or (not x3830) (not x3832) x3675)
+(or (not x3773) (not x3754))
+(or (not x3830) (not x3675) x3832)
+(or (not x3773) (not x3751) (not x2181))
+(or (not x3830) x3828 x3831 x3673)
+(or (not x3773) (not x3751) x689)
+(or (not x3830) (not x3831) (not x3673) x3828)
+(or (not x3773) (not x3745) (not x2183))
+(or (not x3828) (not x3831) x3673)
+(or (not x3773) (not x3745) x675)
+(or (not x3828) (not x3673) x3831)
+(or (not x3773) (not x3743) (not x2184))
+(or (not x3828) x3830)
+(or (not x3773) (not x3743) x669)
+(or (not x3828) x3826 x3829 x3670)
+(or (not x3773) (not x3741) x663)
+(or (not x3828) (not x3829) (not x3670) x3826)
+(or (not x3773) x3754 x3751 x3745 x3743 x3741)
+(or (not x3826) (not x3829) x3670)
+(or (not x3773) (not x3754))
+(or (not x3826) (not x3670) x3829)
+(or (not x3773) (not x3739))
+(or (not x3826) x3828)
+(or (not x3773) (not x3607))
+(or (not x3826) x3824 x3827 x3667)
+(or (not x3754) (not x3739) (not x2180))
+(or (not x3826) (not x3827) (not x3667) x3824)
+(or (not x3754) (not x3739))
+(or (not x3824) (not x3827) x3667)
+(or (not x3754) (not x3737) (not x2181))
+(or (not x3824) (not x3667) x3827)
+(or (not x3754) (not x3737) x689)
+(or (not x3824) x3826)
+(or (not x3754) (not x3734) (not x2183))
+(or (not x3824) x3822 x3825 x3664)
+(or (not x3754) (not x3734) x675)
+(or (not x3824) (not x3825) (not x3664) x3822)
+(or (not x3754) (not x3732) (not x2184))
+(or (not x3822) (not x3825) x3664)
+(or (not x3754) (not x3732) x669)
+(or (not x3822) (not x3664) x3825)
+(or (not x3754) (not x3730) x663)
+(or (not x3822) x3824)
+(or (not x3754) x3739 x3737 x3734 x3732 x3730)
+(or (not x3822) x3821 x3823 x3661)
+(or (not x3754) (not x3739))
+(or (not x3822) (not x3823) (not x3661) x3821)
+(or (not x3754) (not x3607))
+(or (not x3821) (not x3823) x3661)
+(or (not x3739) (not x3607) (not x2180))
+(or (not x3821) (not x3661) x3823)
+(or (not x3739) (not x3607))
+(or (not x3821) x3822)
+(or (not x3739) (not x3605) (not x2181))
+(or (not x3820) (not x2239) (not x2212))
+(or (not x3739) (not x3605) x689)
+(or (not x2239) (not x2212) x3819)
+(or (not x3739) (not x3602) (not x2183))
+(or (not x3820) (not x2240) (not x2212) x95)
+(or (not x3739) (not x3602) x675)
+(or (not x2240) (not x2212) (not x95) x3820)
+(or (not x3739) (not x3599) (not x2184))
+(or (not x3819) (not x2240) (not x2212))
+(or (not x3739) (not x3599) x669)
+(or (not x3820) (not x2241) (not x2212) x94)
+(or (not x3739) (not x3597) x663)
+(or (not x2241) (not x2212) (not x94) x3820)
+(or (not x3739) x3607 x3605 x3602 x3599 x3597)
+(or (not x3819) (not x2241) (not x2212))
+(or (not x3739) (not x3607))
+(or (not x3820) (not x2242) (not x2212) x92)
+(or (not x3607) (not x2182))
+(or (not x2242) (not x2212) (not x92) x3820)
+(or (not x3607) x681)
+(or (not x3819) (not x2242) (not x2212))
+(or (not x3607) (not x3722) (not x2183))
+(or (not x3820) (not x2243) (not x2212) x91)
+(or (not x3607) (not x3722) x675)
+(or (not x2243) (not x2212) (not x91) x3820)
+(or (not x3607) (not x3721) (not x2184))
+(or (not x3819) (not x2243) (not x2212))
+(or (not x3607) (not x3721) x669)
+(or (not x3820) (not x2239) (not x2213) x89)
+(or (not x3607) (not x3718) x663)
+(or (not x2239) (not x2213) (not x89) x3820)
+(or (not x2180) x3786 x3773 x3754 x3739 x3607)
+(or (not x3819) (not x2239) (not x2213))
+(or (not x3784) (not x3773) (not x2180))
+(or (not x3820) (not x2240) (not x2213))
+(or (not x3784) (not x3773) x694)
+(or (not x2240) (not x2213) x3819)
+(or (not x3784) (not x3770) (not x2181))
+(or (not x3820) (not x2241) (not x2213) x88)
+(or (not x3784) (not x3770))
+(or (not x2241) (not x2213) (not x88) x3820)
+(or (not x3784) (not x3764) (not x2183))
+(or (not x3819) (not x2241) (not x2213))
+(or (not x3784) (not x3764) x674)
+(or (not x3820) (not x2242) (not x2213) x87)
+(or (not x3784) (not x3761) (not x2184))
+(or (not x2242) (not x2213) (not x87) x3820)
+(or (not x3784) (not x3761) x667)
+(or (not x3819) (not x2242) (not x2213))
+(or (not x3784) (not x3757) x662)
+(or (not x3820) (not x2243) (not x2213) x86)
+(or (not x3784) x3773 x3770 x3764 x3761 x3757)
+(or (not x2243) (not x2213) (not x86) x3820)
+(or (not x3784) (not x3770))
+(or (not x3819) (not x2243) (not x2213))
+(or (not x3784) (not x3751))
+(or (not x3820) (not x2239) (not x2214) x82)
+(or (not x3784) (not x3737))
+(or (not x2239) (not x2214) (not x82) x3820)
+(or (not x3784) (not x3605))
+(or (not x3819) (not x2239) (not x2214))
+(or (not x3770) (not x3754) (not x2180))
+(or (not x3820) (not x2240) (not x2214) x81)
+(or (not x3770) (not x3754) x694)
+(or (not x2240) (not x2214) (not x81) x3820)
+(or (not x3770) (not x3751) (not x2181))
+(or (not x3819) (not x2240) (not x2214))
+(or (not x3770) (not x3751))
+(or (not x3820) (not x2241) (not x2214))
+(or (not x3770) (not x3745) (not x2183))
+(or (not x2241) (not x2214) x3819)
+(or (not x3770) (not x3745) x674)
+(or (not x3820) (not x2242) (not x2214) x79)
+(or (not x3770) (not x3743) (not x2184))
+(or (not x2242) (not x2214) (not x79) x3820)
+(or (not x3770) (not x3743) x667)
+(or (not x3819) (not x2242) (not x2214))
+(or (not x3770) (not x3741) x662)
+(or (not x3820) (not x2243) (not x2214) x77)
+(or (not x3770) x3754 x3751 x3745 x3743 x3741)
+(or (not x2243) (not x2214) (not x77) x3820)
+(or (not x3770) (not x3751))
+(or (not x3819) (not x2243) (not x2214))
+(or (not x3770) (not x3737))
+(or (not x3820) (not x2239) (not x2215) x73)
+(or (not x3770) (not x3605))
+(or (not x2239) (not x2215) (not x73) x3820)
+(or (not x3751) (not x3739) (not x2180))
+(or (not x3819) (not x2239) (not x2215))
+(or (not x3751) (not x3739) x694)
+(or (not x3820) (not x2240) (not x2215) x67)
+(or (not x3751) (not x3737) (not x2181))
+(or (not x2240) (not x2215) (not x67) x3820)
+(or (not x3751) (not x3737))
+(or (not x3819) (not x2240) (not x2215))
+(or (not x3751) (not x3734) (not x2183))
+(or (not x3820) (not x2241) (not x2215) x66)
+(or (not x3751) (not x3734) x674)
+(or (not x2241) (not x2215) (not x66) x3820)
+(or (not x3751) (not x3732) (not x2184))
+(or (not x3819) (not x2241) (not x2215))
+(or (not x3751) (not x3732) x667)
+(or (not x3820) (not x2242) (not x2215))
+(or (not x3751) (not x3730) x662)
+(or (not x2242) (not x2215) x3819)
+(or (not x3751) x3739 x3737 x3734 x3732 x3730)
+(or (not x3820) (not x2243) (not x2215) x65)
+(or (not x3751) (not x3737))
+(or (not x2243) (not x2215) (not x65) x3820)
+(or (not x3751) (not x3605))
+(or (not x3819) (not x2243) (not x2215))
+(or (not x3737) (not x3607) (not x2180))
+(or (not x3820) (not x2239) (not x2216) x58)
+(or (not x3737) (not x3607) x694)
+(or (not x2239) (not x2216) (not x58) x3820)
+(or (not x3737) (not x3605) (not x2181))
+(or (not x3819) (not x2239) (not x2216))
+(or (not x3737) (not x3605))
+(or (not x3820) (not x2240) (not x2216) x57)
+(or (not x3737) (not x3602) (not x2183))
+(or (not x2240) (not x2216) (not x57) x3820)
+(or (not x3737) (not x3602) x674)
+(or (not x3819) (not x2240) (not x2216))
+(or (not x3737) (not x3599) (not x2184))
+(or (not x3820) (not x2241) (not x2216) x56)
+(or (not x3737) (not x3599) x667)
+(or (not x2241) (not x2216) (not x56) x3820)
+(or (not x3737) (not x3597) x662)
+(or (not x3819) (not x2241) (not x2216))
+(or (not x3737) x3607 x3605 x3602 x3599 x3597)
+(or (not x3820) (not x2242) (not x2216) x55)
+(or (not x3737) (not x3605))
+(or (not x2242) (not x2216) (not x55) x3820)
+(or (not x3605) (not x2182))
+(or (not x3819) (not x2242) (not x2216))
+(or (not x3605) x680)
+(or (not x3820) (not x2243) (not x2216))
+(or (not x3605) (not x3722) (not x2183))
+(or (not x2243) (not x2216) x3819)
+(or (not x3605) (not x3722) x674)
+(or (not x3818) (not x3809) (not x3795) x3817 x3811)
+(or (not x3605) (not x3721) (not x2184))
+(or (not x3818) (not x3795) x3810 x3809)
+(or (not x3605) (not x3721) x667)
+(or (not x3818) x3796 x3795)
+(or (not x3605) (not x3718) x662)
+(or (not x3811) (not x3809) (not x3795) x3818)
+(or (not x2181) x3784 x3770 x3751 x3737 x3605)
+(or (not x3817) (not x3809) (not x3795) x3818)
+(or (not x3781) (not x3773) (not x2180))
+(or (not x3810) (not x3795) x3818)
+(or (not x3781) (not x3773) x692)
+(or (not x3796) x3818)
+(or (not x3781) (not x3770) (not x2181))
+(or (not x3817) (not x3811))
+(or (not x3781) (not x3770) x687)
+(or (not x3688) x3817 x3816 x2284)
+(or (not x3817) (not x3688) (not x2284) x3816)
+(or (not x3817) (not x3816) x3688 x2284)
+(or (not x3781) (not x3764) (not x2183))
+(or (not x3816) (not x2284) x3817 x3688)
+(or (not x3781) (not x3764))
+(or (not x3686) x3817 x3815 x2284)
+(or (not x3781) (not x3761) (not x2184))
+(or (not x3817) (not x3686) (not x2284) x3815)
+(or (not x3781) (not x3761) x665)
+(or (not x3817) (not x3815) x3686 x2284)
+(or (not x3781) (not x3757) x658)
+(or (not x3815) (not x2284) x3817 x3686)
+(or (not x3781) x3773 x3770 x3764 x3761 x3757)
+(or (not x3684) x3817 x3814 x2284)
+(or (not x3781) (not x3764))
+(or (not x3817) (not x3684) (not x2284) x3814)
+(or (not x3781) (not x3745))
+(or (not x3817) (not x3814) x3684 x2284)
+(or (not x3781) (not x3734))
+(or (not x3814) (not x2284) x3817 x3684)
+(or (not x3781) (not x3602))
+(or (not x3682) x3817 x3813 x2284)
+(or (not x3781) (not x3722))
+(or (not x3817) (not x3682) (not x2284) x3813)
+(or (not x3764) (not x3754) (not x2180))
+(or (not x3817) (not x3813) x3682 x2284)
+(or (not x3764) (not x3754) x692)
+(or (not x3813) (not x2284) x3817 x3682)
+(or (not x3764) (not x3751) (not x2181))
+(or (not x3680) x3817 x3812 x2284)
+(or (not x3764) (not x3751) x687)
+(or (not x3817) (not x3680) (not x2284) x3812)
+(or (not x3817) (not x3812) x3680 x2284)
+(or (not x3812) (not x2284) x3817 x3680)
+(or (not x3764) (not x3745) (not x2183))
+(or (not x3815) (not x3686) x3811 x3816 x3688)
+(or (not x3764) (not x3745))
+(or (not x3814) (not x3684) x3811 x3815 x3686)
+(or (not x3764) (not x3743) (not x2184))
+(or (not x3813) (not x3682) x3811 x3814 x3684)
+(or (not x3764) (not x3743) x665)
+(or (not x3812) (not x3680) x3811 x3813 x3682)
+(or (not x3764) (not x3741) x658)
+(or x3811 x3812 x3680)
+(or (not x3764) x3754 x3751 x3745 x3743 x3741)
+(or (not x3816) (not x3688) x3811)
+(or (not x3764) (not x3745))
+(or (not x3811) (not x3816) x3688)
+(or (not x3764) (not x3734))
+(or (not x3811) (not x3688) x3816)
+(or (not x3764) (not x3602))
+(or (not x3811) (not x3815) x3686)
+(or (not x3764) (not x3722))
+(or (not x3811) (not x3686) x3815)
+(or (not x3745) (not x3739) (not x2180))
+(or (not x3811) (not x3814) x3684)
+(or (not x3745) (not x3739) x692)
+(or (not x3811) (not x3684) x3814)
+(or (not x3745) (not x3737) (not x2181))
+(or (not x3811) (not x3813) x3682)
+(or (not x3745) (not x3737) x687)
+(or (not x3811) (not x3682) x3813)
+(or (not x3811) (not x3812) x3680)
+(or (not x3811) (not x3680) x3812)
+(or (not x3745) (not x3734) (not x2183))
+(or (not x52) x3810 x3806 x3808)
+(or (not x3745) (not x3734))
+(or (not x3810) (not x3808) (not x52) x3806)
+(or (not x3745) (not x3732) (not x2184))
+(or (not x3810) x3806 x3808 x52)
+(or (not x3745) (not x3732) x665)
+(or (not x3808) x3810 x3806 x52)
+(or (not x3745) (not x3730) x658)
+(or (not x3806) (not x50) x3810 x3804 x3807)
+(or (not x3745) x3739 x3737 x3734 x3732 x3730)
+(or (not x3810) (not x3806) (not x3807) (not x50) x3804)
+(or (not x3745) (not x3734))
+(or (not x3810) (not x3806) x3804 x3807 x50)
+(or (not x3745) (not x3602))
+(or (not x3806) (not x3807) x3810 x3804 x50)
+(or (not x3745) (not x3722))
+(or (not x3804) (not x48) x3810 x3802 x3805)
+(or (not x3734) (not x3607) (not x2180))
+(or (not x3810) (not x3804) (not x3805) (not x48) x3802)
+(or (not x3734) (not x3607) x692)
+(or (not x3810) (not x3804) x3802 x3805 x48)
+(or (not x3734) (not x3605) (not x2181))
+(or (not x3804) (not x3805) x3810 x3802 x48)
+(or (not x3734) (not x3605) x687)
+(or (not x3802) (not x46) x3810 x3800 x3803)
+(or (not x3810) (not x3802) (not x3803) (not x46) x3800)
+(or (not x3810) (not x3802) x3800 x3803 x46)
+(or (not x3734) (not x3602) (not x2183))
+(or (not x3802) (not x3803) x3810 x3800 x46)
+(or (not x3734) (not x3602))
+(or (not x3800) (not x44) x3810 x3798 x3801)
+(or (not x3734) (not x3599) (not x2184))
+(or (not x3810) (not x3800) (not x3801) (not x44) x3798)
+(or (not x3734) (not x3599) x665)
+(or (not x3810) (not x3800) x3798 x3801 x44)
+(or (not x3734) (not x3597) x658)
+(or (not x3800) (not x3801) x3810 x3798 x44)
+(or (not x3734) x3607 x3605 x3602 x3599 x3597)
+(or (not x3798) (not x149) x3810 x3797 x3799)
+(or (not x3734) (not x3602))
+(or (not x3810) (not x3798) (not x3799) (not x149) x3797)
+(or (not x3734) (not x3722))
+(or (not x3810) (not x3798) x3797 x3799 x149)
+(or (not x3602) (not x2182))
+(or (not x3798) (not x3799) x3810 x3797 x149)
+(or (not x3602) x678)
+(or (not x3810) (not x3809))
+(or (not x3602) (not x3722) (not x2183))
+(or (not x3797) x3809)
+(or (not x3602) (not x3722))
+(or (not x3809) x3797)
+(or (not x3602) (not x3721) (not x2184))
+(or x3806 x3808 x3675)
+(or (not x3602) (not x3721) x665)
+(or (not x3808) (not x3675) x3806)
+(or (not x3602) (not x3718) x658)
+(or (not x3806) (not x3808) x3675)
+(or (not x3602) (not x3722))
+(or (not x3806) (not x3675) x3808)
+(or (not x2183) x3781 x3764 x3745 x3734 x3602 x3722)
+(or (not x3806) x3804 x3807 x3673)
+(or (not x3779) (not x3773) (not x2180))
+(or (not x3806) (not x3807) (not x3673) x3804)
+(or (not x3779) (not x3773) x691)
+(or (not x3804) (not x3807) x3673)
+(or (not x3779) (not x3770) (not x2181))
+(or (not x3804) (not x3673) x3807)
+(or (not x3779) (not x3770) x686)
+(or (not x3804) x3806)
+(or (not x3804) x3802 x3805 x3670)
+(or (not x3804) (not x3805) (not x3670) x3802)
+(or (not x3779) (not x3764) (not x2183))
+(or (not x3802) (not x3805) x3670)
+(or (not x3779) (not x3764) x671)
+(or (not x3802) (not x3670) x3805)
+(or (not x3779) (not x3761) (not x2184))
+(or (not x3802) x3804)
+(or (not x3779) (not x3761))
+(or (not x3802) x3800 x3803 x3667)
+(or (not x3779) (not x3757) x657)
+(or (not x3802) (not x3803) (not x3667) x3800)
+(or (not x3779) x3773 x3770 x3764 x3761 x3757)
+(or (not x3800) (not x3803) x3667)
+(or (not x3779) (not x3761))
+(or (not x3800) (not x3667) x3803)
+(or (not x3779) (not x3743))
+(or (not x3800) x3802)
+(or (not x3779) (not x3732))
+(or (not x3800) x3798 x3801 x3664)
+(or (not x3779) (not x3599))
+(or (not x3800) (not x3801) (not x3664) x3798)
+(or (not x3779) (not x3721))
+(or (not x3798) (not x3801) x3664)
+(or (not x3761) (not x3754) (not x2180))
+(or (not x3798) (not x3664) x3801)
+(or (not x3761) (not x3754) x691)
+(or (not x3798) x3800)
+(or (not x3761) (not x3751) (not x2181))
+(or (not x3798) x3797 x3799 x3661)
+(or (not x3761) (not x3751) x686)
+(or (not x3798) (not x3799) (not x3661) x3797)
+(or (not x3797) (not x3799) x3661)
+(or (not x3797) (not x3661) x3799)
+(or (not x3761) (not x3745) (not x2183))
+(or (not x3797) x3798)
+(or (not x3761) (not x3745) x671)
+(or (not x3796) (not x2234) (not x2212))
+(or (not x3761) (not x3743) (not x2184))
+(or (not x2234) (not x2212) x3795)
+(or (not x3761) (not x3743))
+(or (not x3796) (not x2235) (not x2212) x95)
+(or (not x3761) (not x3741) x657)
+(or (not x2235) (not x2212) (not x95) x3796)
+(or (not x3761) x3754 x3751 x3745 x3743 x3741)
+(or (not x3795) (not x2235) (not x2212))
+(or (not x3761) (not x3743))
+(or (not x3796) (not x2236) (not x2212) x94)
+(or (not x3761) (not x3732))
+(or (not x2236) (not x2212) (not x94) x3796)
+(or (not x3761) (not x3599))
+(or (not x3795) (not x2236) (not x2212))
+(or (not x3761) (not x3721))
+(or (not x3796) (not x2237) (not x2212) x92)
+(or (not x3743) (not x3739) (not x2180))
+(or (not x2237) (not x2212) (not x92) x3796)
+(or (not x3743) (not x3739) x691)
+(or (not x3795) (not x2237) (not x2212))
+(or (not x3743) (not x3737) (not x2181))
+(or (not x3796) (not x2238) (not x2212) x91)
+(or (not x3743) (not x3737) x686)
+(or (not x2238) (not x2212) (not x91) x3796)
+(or (not x3795) (not x2238) (not x2212))
+(or (not x3796) (not x2234) (not x2213) x89)
+(or (not x3743) (not x3734) (not x2183))
+(or (not x2234) (not x2213) (not x89) x3796)
+(or (not x3743) (not x3734) x671)
+(or (not x3795) (not x2234) (not x2213))
+(or (not x3743) (not x3732) (not x2184))
+(or (not x3796) (not x2235) (not x2213))
+(or (not x3743) (not x3732))
+(or (not x2235) (not x2213) x3795)
+(or (not x3743) (not x3730) x657)
+(or (not x3796) (not x2236) (not x2213) x88)
+(or (not x3743) x3739 x3737 x3734 x3732 x3730)
+(or (not x2236) (not x2213) (not x88) x3796)
+(or (not x3743) (not x3732))
+(or (not x3795) (not x2236) (not x2213))
+(or (not x3743) (not x3599))
+(or (not x3796) (not x2237) (not x2213) x87)
+(or (not x3743) (not x3721))
+(or (not x2237) (not x2213) (not x87) x3796)
+(or (not x3732) (not x3607) (not x2180))
+(or (not x3795) (not x2237) (not x2213))
+(or (not x3732) (not x3607) x691)
+(or (not x3796) (not x2238) (not x2213) x86)
+(or (not x3732) (not x3605) (not x2181))
+(or (not x2238) (not x2213) (not x86) x3796)
+(or (not x3732) (not x3605) x686)
+(or (not x3795) (not x2238) (not x2213))
+(or (not x3796) (not x2234) (not x2214) x82)
+(or (not x2234) (not x2214) (not x82) x3796)
+(or (not x3732) (not x3602) (not x2183))
+(or (not x3795) (not x2234) (not x2214))
+(or (not x3732) (not x3602) x671)
+(or (not x3796) (not x2235) (not x2214) x81)
+(or (not x3732) (not x3599) (not x2184))
+(or (not x2235) (not x2214) (not x81) x3796)
+(or (not x3732) (not x3599))
+(or (not x3795) (not x2235) (not x2214))
+(or (not x3732) (not x3597) x657)
+(or (not x3796) (not x2236) (not x2214))
+(or (not x3732) x3607 x3605 x3602 x3599 x3597)
+(or (not x2236) (not x2214) x3795)
+(or (not x3732) (not x3599))
+(or (not x3796) (not x2237) (not x2214) x79)
+(or (not x3732) (not x3721))
+(or (not x2237) (not x2214) (not x79) x3796)
+(or (not x3599) (not x2182))
+(or (not x3795) (not x2237) (not x2214))
+(or (not x3599) x677)
+(or (not x3796) (not x2238) (not x2214) x77)
+(or (not x3599) (not x3722) (not x2183))
+(or (not x2238) (not x2214) (not x77) x3796)
+(or (not x3599) (not x3722) x671)
+(or (not x3795) (not x2238) (not x2214))
+(or (not x3599) (not x3721) (not x2184))
+(or (not x3796) (not x2234) (not x2215) x73)
+(or (not x3599) (not x3721))
+(or (not x2234) (not x2215) (not x73) x3796)
+(or (not x3599) (not x3718) x657)
+(or (not x3795) (not x2234) (not x2215))
+(or (not x3599) (not x3721))
+(or (not x3796) (not x2235) (not x2215) x67)
+(or (not x2184) x3779 x3761 x3743 x3732 x3599 x3721)
+(or (not x2235) (not x2215) (not x67) x3796)
+(or (not x3777) (not x3773) (not x2180))
+(or (not x3795) (not x2235) (not x2215))
+(or (not x3777) (not x3773) x690)
+(or (not x3796) (not x2236) (not x2215) x66)
+(or (not x3777) (not x3770) (not x2181))
+(or (not x2236) (not x2215) (not x66) x3796)
+(or (not x3777) (not x3770) x684)
+(or (not x3795) (not x2236) (not x2215))
+(or (not x3796) (not x2237) (not x2215))
+(or (not x2237) (not x2215) x3795)
+(or (not x3777) (not x3764) (not x2183))
+(or (not x3796) (not x2238) (not x2215) x65)
+(or (not x3777) (not x3764) x670)
+(or (not x2238) (not x2215) (not x65) x3796)
+(or (not x3777) (not x3761) (not x2184))
+(or (not x3795) (not x2238) (not x2215))
+(or (not x3777) (not x3761) x664)
+(or (not x3796) (not x2234) (not x2216) x58)
+(or (not x3777) (not x3757))
+(or (not x2234) (not x2216) (not x58) x3796)
+(or (not x3777) x3773 x3770 x3764 x3761 x3757)
+(or (not x3795) (not x2234) (not x2216))
+(or (not x3777) (not x3757))
+(or (not x3796) (not x2235) (not x2216) x57)
+(or (not x3777) (not x3741))
+(or (not x2235) (not x2216) (not x57) x3796)
+(or (not x3777) (not x3730))
+(or (not x3795) (not x2235) (not x2216))
+(or (not x3777) (not x3597))
+(or (not x3796) (not x2236) (not x2216) x56)
+(or (not x3777) (not x3718))
+(or (not x2236) (not x2216) (not x56) x3796)
+(or (not x3757) (not x3754) (not x2180))
+(or (not x3795) (not x2236) (not x2216))
+(or (not x3757) (not x3754) x690)
+(or (not x3796) (not x2237) (not x2216) x55)
+(or (not x3757) (not x3751) (not x2181))
+(or (not x2237) (not x2216) (not x55) x3796)
+(or (not x3757) (not x3751) x684)
+(or (not x3795) (not x2237) (not x2216))
+(or (not x3796) (not x2238) (not x2216))
+(or (not x2238) (not x2216) x3795)
+(or (not x3757) (not x3745) (not x2183))
+(or (not x3794) (not x3774) (not x3716) x3793 x3787)
+(or (not x3757) (not x3745) x670)
+(or (not x3794) (not x3716) x3775 x3774)
+(or (not x3757) (not x3743) (not x2184))
+(or (not x3794) x3719 x3716)
+(or (not x3757) (not x3743) x664)
+(or (not x3787) (not x3774) (not x3716) x3794)
+(or (not x3757) (not x3741))
+(or (not x3793) (not x3774) (not x3716) x3794)
+(or (not x3757) x3754 x3751 x3745 x3743 x3741)
+(or (not x3775) (not x3716) x3794)
+(or (not x3757) (not x3741))
+(or (not x3719) x3794)
+(or (not x3757) (not x3730))
+(or (not x3793) (not x3787))
+(or (not x3757) (not x3597))
+(or (not x3688) x3793 x3792 x2284)
+(or (not x3757) (not x3718))
+(or (not x3793) (not x3688) (not x2284) x3792)
+(or (not x3741) (not x3739) (not x2180))
+(or (not x3793) (not x3792) x3688 x2284)
+(or (not x3741) (not x3739) x690)
+(or (not x3792) (not x2284) x3793 x3688)
+(or (not x3741) (not x3737) (not x2181))
+(or (not x3686) x3793 x3791 x2284)
+(or (not x3741) (not x3737) x684)
+(or (not x3793) (not x3686) (not x2284) x3791)
+(or (not x3793) (not x3791) x3686 x2284)
+(or (not x3791) (not x2284) x3793 x3686)
+(or (not x3741) (not x3734) (not x2183))
+(or (not x3684) x3793 x3790 x2284)
+(or (not x3741) (not x3734) x670)
+(or (not x3793) (not x3684) (not x2284) x3790)
+(or (not x3741) (not x3732) (not x2184))
+(or (not x3793) (not x3790) x3684 x2284)
+(or (not x3741) (not x3732) x664)
+(or (not x3790) (not x2284) x3793 x3684)
+(or (not x3741) (not x3730))
+(or (not x3682) x3793 x3789 x2284)
+(or (not x3741) x3739 x3737 x3734 x3732 x3730)
+(or (not x3793) (not x3682) (not x2284) x3789)
+(or (not x3741) (not x3730))
+(or (not x3793) (not x3789) x3682 x2284)
+(or (not x3741) (not x3597))
+(or (not x3789) (not x2284) x3793 x3682)
+(or (not x3741) (not x3718))
+(or (not x3680) x3793 x3788 x2284)
+(or (not x3730) (not x3607) (not x2180))
+(or (not x3793) (not x3680) (not x2284) x3788)
+(or (not x3730) (not x3607) x690)
+(or (not x3793) (not x3788) x3680 x2284)
+(or (not x3730) (not x3605) (not x2181))
+(or (not x3788) (not x2284) x3793 x3680)
+(or (not x3730) (not x3605) x684)
+(or (not x3791) (not x3686) x3787 x3792 x3688)
+(or (not x3790) (not x3684) x3787 x3791 x3686)
+(or (not x3789) (not x3682) x3787 x3790 x3684)
+(or (not x3730) (not x3602) (not x2183))
+(or (not x3788) (not x3680) x3787 x3789 x3682)
+(or (not x3730) (not x3602) x670)
+(or x3787 x3788 x3680)
+(or (not x3730) (not x3599) (not x2184))
+(or (not x3792) (not x3688) x3787)
+(or (not x3730) (not x3599) x664)
+(or (not x3787) (not x3792) x3688)
+(or (not x3730) (not x3597))
+(or (not x3787) (not x3688) x3792)
+(or (not x3730) x3607 x3605 x3602 x3599 x3597)
+(or (not x3787) (not x3791) x3686)
+(or (not x3730) (not x3597))
+(or (not x3787) (not x3686) x3791)
+(or (not x3730) (not x3718))
+(or (not x3787) (not x3790) x3684)
+(or (not x3597) (not x2182))
+(or (not x3787) (not x3684) x3790)
+(or (not x3597) x676)
+(or (not x3787) (not x3789) x3682)
+(or (not x3597) (not x3722) (not x2183))
+(or (not x3787) (not x3682) x3789)
+(or (not x3597) (not x3722) x670)
+(or (not x3787) (not x3788) x3680)
+(or (not x3597) (not x3721) (not x2184))
+(or (not x3787) (not x3680) x3788)
+(or (not x3597) (not x3721) x664)
+(or (not x52) x3775 x3767 x3771)
+(or (not x3597) (not x3718))
+(or (not x3775) (not x3771) (not x52) x3767)
+(or (not x3597) (not x3718))
+(or (not x3775) x3767 x3771 x52)
+(or (not x3786) (not x3783))
+(or (not x3771) x3775 x3767 x52)
+(or (not x3786) x3785 x3783)
+(or (not x3767) (not x50) x3775 x3762 x3768)
+(or (not x3783) x3786 x3785)
+(or (not x3775) (not x3767) (not x3768) (not x50) x3762)
+(or (not x3785) x3786 x3783)
+(or (not x3775) (not x3767) x3762 x3768 x50)
+(or (not x3784) (not x3782))
+(or (not x3767) (not x3768) x3775 x3762 x50)
+(or (not x3784) x3783 x3782)
+(or (not x3762) (not x48) x3775 x3758 x3765)
+(or (not x3782) x3784 x3783)
+(or (not x3775) (not x3762) (not x3765) (not x48) x3758)
+(or (not x3783) x3784 x3782)
+(or (not x3775) (not x3762) x3758 x3765 x48)
+(or (not x3762) (not x3765) x3775 x3758 x48)
+(or (not x3758) (not x46) x3775 x3752 x3759)
+(or (not x3780) x3782)
+(or (not x3775) (not x3758) (not x3759) (not x46) x3752)
+(or (not x3782) x3780)
+(or (not x3775) (not x3758) x3752 x3759 x46)
+(or (not x3781) (not x3778))
+(or (not x3758) (not x3759) x3775 x3752 x46)
+(or (not x3781) x3780 x3778)
+(or (not x3752) (not x44) x3775 x3748 x3755)
+(or (not x3778) x3781 x3780)
+(or (not x3775) (not x3752) (not x3755) (not x44) x3748)
+(or (not x3780) x3781 x3778)
+(or (not x3775) (not x3752) x3748 x3755 x44)
+(or (not x3779) (not x3776))
+(or (not x3752) (not x3755) x3775 x3748 x44)
+(or (not x3779) x3778 x3776)
+(or (not x3748) (not x149) x3775 x3747 x3749)
+(or (not x3776) x3779 x3778)
+(or (not x3775) (not x3748) (not x3749) (not x149) x3747)
+(or (not x3778) x3779 x3776)
+(or (not x3775) (not x3748) x3747 x3749 x149)
+(or (not x3777) x3776)
+(or (not x3748) (not x3749) x3775 x3747 x149)
+(or (not x3776) x3777)
+(or (not x3775) (not x3774))
+(or (not x3773) (not x3769))
+(or (not x3747) x3774)
+(or (not x3773) x3772 x3769)
+(or (not x3774) x3747)
+(or (not x3769) x3773 x3772)
+(or x3767 x3771 x3675)
+(or (not x3772) x3773 x3769)
+(or (not x3771) (not x3675) x3767)
+(or (not x3770) (not x3766))
+(or (not x3767) (not x3771) x3675)
+(or (not x3770) x3769 x3766)
+(or (not x3767) (not x3675) x3771)
+(or (not x3766) x3770 x3769)
+(or (not x3767) x3762 x3768 x3673)
+(or (not x3769) x3770 x3766)
+(or (not x3767) (not x3768) (not x3673) x3762)
+(or (not x3762) (not x3768) x3673)
+(or (not x3762) (not x3673) x3768)
+(or (not x3763) x3766)
+(or (not x3762) x3767)
+(or (not x3766) x3763)
+(or (not x3762) x3758 x3765 x3670)
+(or (not x3764) (not x3760))
+(or (not x3762) (not x3765) (not x3670) x3758)
+(or (not x3764) x3763 x3760)
+(or (not x3758) (not x3765) x3670)
+(or (not x3760) x3764 x3763)
+(or (not x3758) (not x3670) x3765)
+(or (not x3763) x3764 x3760)
+(or (not x3758) x3762)
+(or (not x3761) (not x3756))
+(or (not x3758) x3752 x3759 x3667)
+(or (not x3761) x3760 x3756)
+(or (not x3758) (not x3759) (not x3667) x3752)
+(or (not x3756) x3761 x3760)
+(or (not x3752) (not x3759) x3667)
+(or (not x3760) x3761 x3756)
+(or (not x3752) (not x3667) x3759)
+(or (not x3757) x3756)
+(or (not x3752) x3758)
+(or (not x3756) x3757)
+(or (not x3752) x3748 x3755 x3664)
+(or (not x3754) (not x3750))
+(or (not x3752) (not x3755) (not x3664) x3748)
+(or (not x3754) x3753 x3750)
+(or (not x3748) (not x3755) x3664)
+(or (not x3750) x3754 x3753)
+(or (not x3748) (not x3664) x3755)
+(or (not x3753) x3754 x3750)
+(or (not x3748) x3752)
+(or (not x3751) (not x3746))
+(or (not x3748) x3747 x3749 x3661)
+(or (not x3751) x3750 x3746)
+(or (not x3748) (not x3749) (not x3661) x3747)
+(or (not x3746) x3751 x3750)
+(or (not x3747) (not x3749) x3661)
+(or (not x3750) x3751 x3746)
+(or (not x3747) (not x3661) x3749)
+(or (not x3747) x3748)
+(or (not x3719) (not x2228) (not x2212))
+(or (not x3744) x3746)
+(or (not x2228) (not x2212) x3716)
+(or (not x3746) x3744)
+(or (not x3719) (not x2229) (not x2212) x95)
+(or (not x3745) (not x3742))
+(or (not x2229) (not x2212) (not x95) x3719)
+(or (not x3745) x3744 x3742)
+(or (not x3716) (not x2229) (not x2212))
+(or (not x3742) x3745 x3744)
+(or (not x3719) (not x2230) (not x2212) x94)
+(or (not x3744) x3745 x3742)
+(or (not x2230) (not x2212) (not x94) x3719)
+(or (not x3743) (not x3740))
+(or (not x3716) (not x2230) (not x2212))
+(or (not x3743) x3742 x3740)
+(or (not x3719) (not x2231) (not x2212) x92)
+(or (not x3740) x3743 x3742)
+(or (not x2231) (not x2212) (not x92) x3719)
+(or (not x3742) x3743 x3740)
+(or (not x3716) (not x2231) (not x2212))
+(or (not x3741) x3740)
+(or (not x3719) (not x2232) (not x2212) x91)
+(or (not x3740) x3741)
+(or (not x2232) (not x2212) (not x91) x3719)
+(or (not x3739) (not x3736))
+(or (not x3716) (not x2232) (not x2212))
+(or (not x3739) x3738 x3736)
+(or (not x3719) (not x2228) (not x2213) x89)
+(or (not x3736) x3739 x3738)
+(or (not x2228) (not x2213) (not x89) x3719)
+(or (not x3738) x3739 x3736)
+(or (not x3716) (not x2228) (not x2213))
+(or (not x3737) (not x3735))
+(or (not x3719) (not x2229) (not x2213))
+(or (not x3737) x3736 x3735)
+(or (not x2229) (not x2213) x3716)
+(or (not x3735) x3737 x3736)
+(or (not x3719) (not x2230) (not x2213) x88)
+(or (not x3736) x3737 x3735)
+(or (not x2230) (not x2213) (not x88) x3719)
+(or (not x3716) (not x2230) (not x2213))
+(or (not x3719) (not x2231) (not x2213) x87)
+(or (not x3733) x3735)
+(or (not x2231) (not x2213) (not x87) x3719)
+(or (not x3735) x3733)
+(or (not x3716) (not x2231) (not x2213))
+(or (not x3734) (not x3731))
+(or (not x3719) (not x2232) (not x2213) x86)
+(or (not x3734) x3733 x3731)
+(or (not x2232) (not x2213) (not x86) x3719)
+(or (not x3731) x3734 x3733)
+(or (not x3716) (not x2232) (not x2213))
+(or (not x3733) x3734 x3731)
+(or (not x3719) (not x2228) (not x2214) x82)
+(or (not x3732) (not x3729))
+(or (not x2228) (not x2214) (not x82) x3719)
+(or (not x3732) x3731 x3729)
+(or (not x3716) (not x2228) (not x2214))
+(or (not x3729) x3732 x3731)
+(or (not x3719) (not x2229) (not x2214) x81)
+(or (not x3731) x3732 x3729)
+(or (not x2229) (not x2214) (not x81) x3719)
+(or (not x3730) x3729)
+(or (not x3716) (not x2229) (not x2214))
+(or (not x3729) x3730)
+(or (not x3719) (not x2230) (not x2214))
+(or (not x3607) (not x3727))
+(or (not x2230) (not x2214) x3716)
+(or (not x3607) x3728 x3727)
+(or (not x3719) (not x2231) (not x2214) x79)
+(or (not x3727) x3607 x3728)
+(or (not x2231) (not x2214) (not x79) x3719)
+(or (not x3728) x3607 x3727)
+(or (not x3716) (not x2231) (not x2214))
+(or (not x3605) (not x3726))
+(or (not x3719) (not x2232) (not x2214) x77)
+(or (not x3605) x3727 x3726)
+(or (not x2232) (not x2214) (not x77) x3719)
+(or (not x3726) x3605 x3727)
+(or (not x3716) (not x2232) (not x2214))
+(or (not x3727) x3605 x3726)
+(or (not x3719) (not x2228) (not x2215) x73)
+(or (not x2228) (not x2215) (not x73) x3719)
+(or (not x3716) (not x2228) (not x2215))
+(or (not x3725) x3726)
+(or (not x3719) (not x2229) (not x2215) x67)
+(or (not x3726) x3725)
+(or (not x2229) (not x2215) (not x67) x3719)
+(or (not x3602) (not x3724))
+(or (not x3716) (not x2229) (not x2215))
+(or (not x3602) x3725 x3724)
+(or (not x3719) (not x2230) (not x2215) x66)
+(or (not x3724) x3602 x3725)
+(or (not x2230) (not x2215) (not x66) x3719)
+(or (not x3725) x3602 x3724)
+(or (not x3716) (not x2230) (not x2215))
+(or (not x3599) (not x3723))
+(or (not x3719) (not x2231) (not x2215))
+(or (not x3599) x3724 x3723)
+(or (not x2231) (not x2215) x3716)
+(or (not x3723) x3599 x3724)
+(or (not x3719) (not x2232) (not x2215) x65)
+(or (not x3724) x3599 x3723)
+(or (not x2232) (not x2215) (not x65) x3719)
+(or (not x3597) x3723)
+(or (not x3716) (not x2232) (not x2215))
+(or (not x3723) x3597)
+(or (not x3719) (not x2228) (not x2216) x58)
+(or (not x2228) (not x2216) (not x58) x3719)
+(or (not x3716) (not x2228) (not x2216))
+(or (not x3719) (not x2229) (not x2216) x57)
+(or (not x3722) (not x3720))
+(or (not x2229) (not x2216) (not x57) x3719)
+(or (not x3722) x3720)
+(or (not x3716) (not x2229) (not x2216))
+(or (not x3720) x3722)
+(or (not x3719) (not x2230) (not x2216) x56)
+(or (not x2230) (not x2216) (not x56) x3719)
+(or (not x3721) (not x3717))
+(or (not x3716) (not x2230) (not x2216))
+(or (not x3721) x3720 x3717)
+(or (not x3719) (not x2231) (not x2216) x55)
+(or (not x3717) x3721 x3720)
+(or (not x2231) (not x2216) (not x55) x3719)
+(or (not x3720) x3721 x3717)
+(or (not x3716) (not x2231) (not x2216))
+(or (not x3718) x3717)
+(or (not x3719) (not x2232) (not x2216))
+(or (not x3717) x3718)
+(or (not x2232) (not x2216) x3716)
+(or (not x3658) (not x3647) (not x2175))
+(or (not x3715) (not x3706) (not x3692) x3714 x3708)
+(or (not x3658) (not x3647))
+(or (not x3715) (not x3692) x3707 x3706)
+(or (not x3658) (not x3645) (not x2176))
+(or (not x3715) x3693 x3692)
+(or (not x3658) (not x3645) x689)
+(or (not x3708) (not x3706) (not x3692) x3715)
+(or (not x3658) (not x3643) (not x2177))
+(or (not x3714) (not x3706) (not x3692) x3715)
+(or (not x3658) (not x3643) x681)
+(or (not x3707) (not x3692) x3715)
+(or (not x3658) (not x3637) (not x2179))
+(or (not x3693) x3715)
+(or (not x3658) (not x3637) x669)
+(or (not x3714) (not x3708))
+(or (not x3658) (not x3634) x663)
+(or (not x3688) x3714 x3713 x2284)
+(or (not x3658) x3647 x3645 x3643 x3637 x3634)
+(or (not x3714) (not x3688) (not x2284) x3713)
+(or (not x3658) (not x3647))
+(or (not x3714) (not x3713) x3688 x2284)
+(or (not x3658) (not x3631))
+(or (not x3713) (not x2284) x3714 x3688)
+(or (not x3658) (not x3615))
+(or (not x3686) x3714 x3712 x2284)
+(or (not x3658) (not x3595))
+(or (not x3714) (not x3686) (not x2284) x3712)
+(or (not x3647) (not x3631) (not x2175))
+(or (not x3714) (not x3712) x3686 x2284)
+(or (not x3647) (not x3631))
+(or (not x3712) (not x2284) x3714 x3686)
+(or (not x3647) (not x3628) (not x2176))
+(or (not x3684) x3714 x3711 x2284)
+(or (not x3647) (not x3628) x689)
+(or (not x3714) (not x3684) (not x2284) x3711)
+(or (not x3647) (not x3625) (not x2177))
+(or (not x3714) (not x3711) x3684 x2284)
+(or (not x3647) (not x3625) x681)
+(or (not x3711) (not x2284) x3714 x3684)
+(or (not x3647) (not x3620) (not x2179))
+(or (not x3682) x3714 x3710 x2284)
+(or (not x3647) (not x3620) x669)
+(or (not x3714) (not x3682) (not x2284) x3710)
+(or (not x3647) (not x3618) x663)
+(or (not x3714) (not x3710) x3682 x2284)
+(or (not x3647) x3631 x3628 x3625 x3620 x3618)
+(or (not x3710) (not x2284) x3714 x3682)
+(or (not x3647) (not x3631))
+(or (not x3680) x3714 x3709 x2284)
+(or (not x3647) (not x3615))
+(or (not x3714) (not x3680) (not x2284) x3709)
+(or (not x3647) (not x3595))
+(or (not x3714) (not x3709) x3680 x2284)
+(or (not x3631) (not x3615) (not x2175))
+(or (not x3709) (not x2284) x3714 x3680)
+(or (not x3631) (not x3615))
+(or (not x3712) (not x3686) x3708 x3713 x3688)
+(or (not x3631) (not x3612) (not x2176))
+(or (not x3711) (not x3684) x3708 x3712 x3686)
+(or (not x3631) (not x3612) x689)
+(or (not x3710) (not x3682) x3708 x3711 x3684)
+(or (not x3631) (not x3609) (not x2177))
+(or (not x3709) (not x3680) x3708 x3710 x3682)
+(or (not x3631) (not x3609) x681)
+(or x3708 x3709 x3680)
+(or (not x3631) (not x3604) (not x2179))
+(or (not x3713) (not x3688) x3708)
+(or (not x3631) (not x3604) x669)
+(or (not x3708) (not x3713) x3688)
+(or (not x3631) (not x3601) x663)
+(or (not x3708) (not x3688) x3713)
+(or (not x3631) x3615 x3612 x3609 x3604 x3601)
+(or (not x3708) (not x3712) x3686)
+(or (not x3631) (not x3615))
+(or (not x3708) (not x3686) x3712)
+(or (not x3631) (not x3595))
+(or (not x3708) (not x3711) x3684)
+(or (not x3615) (not x3595) (not x2175))
+(or (not x3708) (not x3684) x3711)
+(or (not x3615) (not x3595))
+(or (not x3708) (not x3710) x3682)
+(or (not x3615) (not x3593) (not x2176))
+(or (not x3708) (not x3682) x3710)
+(or (not x3615) (not x3593) x689)
+(or (not x3708) (not x3709) x3680)
+(or (not x3615) (not x3591) (not x2177))
+(or (not x3708) (not x3680) x3709)
+(or (not x3615) (not x3591) x681)
+(or (not x52) x3707 x3703 x3705)
+(or (not x3615) (not x3588) (not x2179))
+(or (not x3707) (not x3705) (not x52) x3703)
+(or (not x3615) (not x3588) x669)
+(or (not x3707) x3703 x3705 x52)
+(or (not x3615) (not x3587) x663)
+(or (not x3705) x3707 x3703 x52)
+(or (not x3615) x3595 x3593 x3591 x3588 x3587)
+(or (not x3703) (not x50) x3707 x3701 x3704)
+(or (not x3615) (not x3595))
+(or (not x3707) (not x3703) (not x3704) (not x50) x3701)
+(or (not x3595) (not x2178))
+(or (not x3707) (not x3703) x3701 x3704 x50)
+(or (not x3595) x675)
+(or (not x3703) (not x3704) x3707 x3701 x50)
+(or (not x3595) (not x3586) (not x2179))
+(or (not x3701) (not x48) x3707 x3699 x3702)
+(or (not x3595) (not x3586) x669)
+(or (not x3707) (not x3701) (not x3702) (not x48) x3699)
+(or (not x3595) (not x3585) x663)
+(or (not x3707) (not x3701) x3699 x3702 x48)
+(or (not x2175) x3658 x3647 x3631 x3615 x3595)
+(or (not x3701) (not x3702) x3707 x3699 x48)
+(or (not x3656) (not x3647) (not x2175))
+(or (not x3699) (not x46) x3707 x3697 x3700)
+(or (not x3656) (not x3647) x694)
+(or (not x3707) (not x3699) (not x3700) (not x46) x3697)
+(or (not x3656) (not x3645) (not x2176))
+(or (not x3707) (not x3699) x3697 x3700 x46)
+(or (not x3656) (not x3645))
+(or (not x3699) (not x3700) x3707 x3697 x46)
+(or (not x3656) (not x3643) (not x2177))
+(or (not x3697) (not x44) x3707 x3695 x3698)
+(or (not x3656) (not x3643) x680)
+(or (not x3707) (not x3697) (not x3698) (not x44) x3695)
+(or (not x3656) (not x3637) (not x2179))
+(or (not x3707) (not x3697) x3695 x3698 x44)
+(or (not x3656) (not x3637) x667)
+(or (not x3697) (not x3698) x3707 x3695 x44)
+(or (not x3656) (not x3634) x662)
+(or (not x3695) (not x149) x3707 x3694 x3696)
+(or (not x3656) x3647 x3645 x3643 x3637 x3634)
+(or (not x3707) (not x3695) (not x3696) (not x149) x3694)
+(or (not x3656) (not x3645))
+(or (not x3707) (not x3695) x3694 x3696 x149)
+(or (not x3656) (not x3628))
+(or (not x3695) (not x3696) x3707 x3694 x149)
+(or (not x3656) (not x3612))
+(or (not x3707) (not x3706))
+(or (not x3656) (not x3593))
+(or (not x3694) x3706)
+(or (not x3645) (not x3631) (not x2175))
+(or (not x3706) x3694)
+(or (not x3645) (not x3631) x694)
+(or x3703 x3705 x3675)
+(or (not x3645) (not x3628) (not x2176))
+(or (not x3705) (not x3675) x3703)
+(or (not x3645) (not x3628))
+(or (not x3703) (not x3705) x3675)
+(or (not x3645) (not x3625) (not x2177))
+(or (not x3703) (not x3675) x3705)
+(or (not x3645) (not x3625) x680)
+(or (not x3703) x3701 x3704 x3673)
+(or (not x3645) (not x3620) (not x2179))
+(or (not x3703) (not x3704) (not x3673) x3701)
+(or (not x3645) (not x3620) x667)
+(or (not x3701) (not x3704) x3673)
+(or (not x3645) (not x3618) x662)
+(or (not x3701) (not x3673) x3704)
+(or (not x3645) x3631 x3628 x3625 x3620 x3618)
+(or (not x3701) x3703)
+(or (not x3645) (not x3628))
+(or (not x3701) x3699 x3702 x3670)
+(or (not x3645) (not x3612))
+(or (not x3701) (not x3702) (not x3670) x3699)
+(or (not x3645) (not x3593))
+(or (not x3699) (not x3702) x3670)
+(or (not x3628) (not x3615) (not x2175))
+(or (not x3699) (not x3670) x3702)
+(or (not x3628) (not x3615) x694)
+(or (not x3699) x3701)
+(or (not x3628) (not x3612) (not x2176))
+(or (not x3699) x3697 x3700 x3667)
+(or (not x3628) (not x3612))
+(or (not x3699) (not x3700) (not x3667) x3697)
+(or (not x3628) (not x3609) (not x2177))
+(or (not x3697) (not x3700) x3667)
+(or (not x3628) (not x3609) x680)
+(or (not x3697) (not x3667) x3700)
+(or (not x3628) (not x3604) (not x2179))
+(or (not x3697) x3699)
+(or (not x3628) (not x3604) x667)
+(or (not x3697) x3695 x3698 x3664)
+(or (not x3628) (not x3601) x662)
+(or (not x3697) (not x3698) (not x3664) x3695)
+(or (not x3628) x3615 x3612 x3609 x3604 x3601)
+(or (not x3695) (not x3698) x3664)
+(or (not x3628) (not x3612))
+(or (not x3695) (not x3664) x3698)
+(or (not x3628) (not x3593))
+(or (not x3695) x3697)
+(or (not x3612) (not x3595) (not x2175))
+(or (not x3695) x3694 x3696 x3661)
+(or (not x3612) (not x3595) x694)
+(or (not x3695) (not x3696) (not x3661) x3694)
+(or (not x3612) (not x3593) (not x2176))
+(or (not x3694) (not x3696) x3661)
+(or (not x3612) (not x3593))
+(or (not x3694) (not x3661) x3696)
+(or (not x3612) (not x3591) (not x2177))
+(or (not x3694) x3695)
+(or (not x3612) (not x3591) x680)
+(or (not x3693) (not x2223) (not x2212))
+(or (not x3612) (not x3588) (not x2179))
+(or (not x2223) (not x2212) x3692)
+(or (not x3612) (not x3588) x667)
+(or (not x3693) (not x2224) (not x2212) x95)
+(or (not x3612) (not x3587) x662)
+(or (not x2224) (not x2212) (not x95) x3693)
+(or (not x3612) x3595 x3593 x3591 x3588 x3587)
+(or (not x3692) (not x2224) (not x2212))
+(or (not x3612) (not x3593))
+(or (not x3693) (not x2225) (not x2212) x94)
+(or (not x3593) (not x2178))
+(or (not x2225) (not x2212) (not x94) x3693)
+(or (not x3593) x674)
+(or (not x3692) (not x2225) (not x2212))
+(or (not x3593) (not x3586) (not x2179))
+(or (not x3693) (not x2226) (not x2212) x92)
+(or (not x3593) (not x3586) x667)
+(or (not x2226) (not x2212) (not x92) x3693)
+(or (not x3593) (not x3585) x662)
+(or (not x3692) (not x2226) (not x2212))
+(or (not x2176) x3656 x3645 x3628 x3612 x3593)
+(or (not x3693) (not x2227) (not x2212) x91)
+(or (not x3654) (not x3647) (not x2175))
+(or (not x2227) (not x2212) (not x91) x3693)
+(or (not x3654) (not x3647) x693)
+(or (not x3692) (not x2227) (not x2212))
+(or (not x3654) (not x3645) (not x2176))
+(or (not x3693) (not x2223) (not x2213) x89)
+(or (not x3654) (not x3645) x688)
+(or (not x2223) (not x2213) (not x89) x3693)
+(or (not x3654) (not x3643) (not x2177))
+(or (not x3692) (not x2223) (not x2213))
+(or (not x3654) (not x3643))
+(or (not x3693) (not x2224) (not x2213))
+(or (not x3654) (not x3637) (not x2179))
+(or (not x2224) (not x2213) x3692)
+(or (not x3654) (not x3637) x666)
+(or (not x3693) (not x2225) (not x2213) x88)
+(or (not x3654) (not x3634) x660)
+(or (not x2225) (not x2213) (not x88) x3693)
+(or (not x3654) x3647 x3645 x3643 x3637 x3634)
+(or (not x3692) (not x2225) (not x2213))
+(or (not x3654) (not x3643))
+(or (not x3693) (not x2226) (not x2213) x87)
+(or (not x3654) (not x3625))
+(or (not x2226) (not x2213) (not x87) x3693)
+(or (not x3654) (not x3609))
+(or (not x3692) (not x2226) (not x2213))
+(or (not x3654) (not x3591))
+(or (not x3693) (not x2227) (not x2213) x86)
+(or (not x3643) (not x3631) (not x2175))
+(or (not x2227) (not x2213) (not x86) x3693)
+(or (not x3643) (not x3631) x693)
+(or (not x3692) (not x2227) (not x2213))
+(or (not x3643) (not x3628) (not x2176))
+(or (not x3693) (not x2223) (not x2214) x82)
+(or (not x3643) (not x3628) x688)
+(or (not x2223) (not x2214) (not x82) x3693)
+(or (not x3643) (not x3625) (not x2177))
+(or (not x3692) (not x2223) (not x2214))
+(or (not x3643) (not x3625))
+(or (not x3693) (not x2224) (not x2214) x81)
+(or (not x3643) (not x3620) (not x2179))
+(or (not x2224) (not x2214) (not x81) x3693)
+(or (not x3643) (not x3620) x666)
+(or (not x3692) (not x2224) (not x2214))
+(or (not x3643) (not x3618) x660)
+(or (not x3693) (not x2225) (not x2214))
+(or (not x3643) x3631 x3628 x3625 x3620 x3618)
+(or (not x2225) (not x2214) x3692)
+(or (not x3643) (not x3625))
+(or (not x3693) (not x2226) (not x2214) x79)
+(or (not x3643) (not x3609))
+(or (not x2226) (not x2214) (not x79) x3693)
+(or (not x3643) (not x3591))
+(or (not x3692) (not x2226) (not x2214))
+(or (not x3625) (not x3615) (not x2175))
+(or (not x3693) (not x2227) (not x2214) x77)
+(or (not x3625) (not x3615) x693)
+(or (not x2227) (not x2214) (not x77) x3693)
+(or (not x3625) (not x3612) (not x2176))
+(or (not x3692) (not x2227) (not x2214))
+(or (not x3625) (not x3612) x688)
+(or (not x3693) (not x2223) (not x2215) x73)
+(or (not x3625) (not x3609) (not x2177))
+(or (not x2223) (not x2215) (not x73) x3693)
+(or (not x3625) (not x3609))
+(or (not x3692) (not x2223) (not x2215))
+(or (not x3625) (not x3604) (not x2179))
+(or (not x3693) (not x2224) (not x2215) x67)
+(or (not x3625) (not x3604) x666)
+(or (not x2224) (not x2215) (not x67) x3693)
+(or (not x3625) (not x3601) x660)
+(or (not x3692) (not x2224) (not x2215))
+(or (not x3625) x3615 x3612 x3609 x3604 x3601)
+(or (not x3693) (not x2225) (not x2215) x66)
+(or (not x3625) (not x3609))
+(or (not x2225) (not x2215) (not x66) x3693)
+(or (not x3625) (not x3591))
+(or (not x3692) (not x2225) (not x2215))
+(or (not x3609) (not x3595) (not x2175))
+(or (not x3693) (not x2226) (not x2215))
+(or (not x3609) (not x3595) x693)
+(or (not x2226) (not x2215) x3692)
+(or (not x3609) (not x3593) (not x2176))
+(or (not x3693) (not x2227) (not x2215) x65)
+(or (not x3609) (not x3593) x688)
+(or (not x2227) (not x2215) (not x65) x3693)
+(or (not x3609) (not x3591) (not x2177))
+(or (not x3692) (not x2227) (not x2215))
+(or (not x3609) (not x3591))
+(or (not x3693) (not x2223) (not x2216) x58)
+(or (not x3609) (not x3588) (not x2179))
+(or (not x2223) (not x2216) (not x58) x3693)
+(or (not x3609) (not x3588) x666)
+(or (not x3692) (not x2223) (not x2216))
+(or (not x3609) (not x3587) x660)
+(or (not x3693) (not x2224) (not x2216) x57)
+(or (not x3609) x3595 x3593 x3591 x3588 x3587)
+(or (not x2224) (not x2216) (not x57) x3693)
+(or (not x3609) (not x3591))
+(or (not x3692) (not x2224) (not x2216))
+(or (not x3591) (not x2178))
+(or (not x3693) (not x2225) (not x2216) x56)
+(or (not x3591) x672)
+(or (not x2225) (not x2216) (not x56) x3693)
+(or (not x3591) (not x3586) (not x2179))
+(or (not x3692) (not x2225) (not x2216))
+(or (not x3591) (not x3586) x666)
+(or (not x3693) (not x2226) (not x2216) x55)
+(or (not x3591) (not x3585) x660)
+(or (not x2226) (not x2216) (not x55) x3693)
+(or (not x2177) x3654 x3643 x3625 x3609 x3591)
+(or (not x3692) (not x2226) (not x2216))
+(or (not x3651) (not x3647) (not x2175))
+(or (not x3693) (not x2227) (not x2216))
+(or (not x3651) (not x3647) x691)
+(or (not x2227) (not x2216) x3692)
+(or (not x3651) (not x3645) (not x2176))
+(or (not x3691) (not x3677) (not x3640) x3690 x3679)
+(or (not x3651) (not x3645) x686)
+(or (not x3691) (not x3640) x3678 x3677)
+(or (not x3651) (not x3643) (not x2177))
+(or (not x3691) x3641 x3640)
+(or (not x3651) (not x3643) x677)
+(or (not x3679) (not x3677) (not x3640) x3691)
+(or (not x3690) (not x3677) (not x3640) x3691)
+(or (not x3678) (not x3640) x3691)
+(or (not x3651) (not x3637) (not x2179))
+(or (not x3641) x3691)
+(or (not x3651) (not x3637))
+(or (not x3690) (not x3679))
+(or (not x3651) (not x3634) x657)
+(or (not x3688) x3690 x3689 x2284)
+(or (not x3651) x3647 x3645 x3643 x3637 x3634)
+(or (not x3690) (not x3688) (not x2284) x3689)
+(or (not x3651) (not x3637))
+(or (not x3690) (not x3689) x3688 x2284)
+(or (not x3651) (not x3620))
+(or (not x3689) (not x2284) x3690 x3688)
+(or (not x3651) (not x3604))
+(or (not x3686) x3690 x3687 x2284)
+(or (not x3651) (not x3588))
+(or (not x3690) (not x3686) (not x2284) x3687)
+(or (not x3651) (not x3586))
+(or (not x3690) (not x3687) x3686 x2284)
+(or (not x3637) (not x3631) (not x2175))
+(or (not x3687) (not x2284) x3690 x3686)
+(or (not x3637) (not x3631) x691)
+(or (not x3684) x3690 x3685 x2284)
+(or (not x3637) (not x3628) (not x2176))
+(or (not x3690) (not x3684) (not x2284) x3685)
+(or (not x3637) (not x3628) x686)
+(or (not x3690) (not x3685) x3684 x2284)
+(or (not x3637) (not x3625) (not x2177))
+(or (not x3685) (not x2284) x3690 x3684)
+(or (not x3637) (not x3625) x677)
+(or (not x3682) x3690 x3683 x2284)
+(or (not x3690) (not x3682) (not x2284) x3683)
+(or (not x3690) (not x3683) x3682 x2284)
+(or (not x3637) (not x3620) (not x2179))
+(or (not x3683) (not x2284) x3690 x3682)
+(or (not x3637) (not x3620))
+(or (not x3680) x3690 x3681 x2284)
+(or (not x3637) (not x3618) x657)
+(or (not x3690) (not x3680) (not x2284) x3681)
+(or (not x3637) x3631 x3628 x3625 x3620 x3618)
+(or (not x3690) (not x3681) x3680 x2284)
+(or (not x3637) (not x3620))
+(or (not x3681) (not x2284) x3690 x3680)
+(or (not x3637) (not x3604))
+(or (not x3687) (not x3686) x3679 x3689 x3688)
+(or (not x3637) (not x3588))
+(or (not x3685) (not x3684) x3679 x3687 x3686)
+(or (not x3637) (not x3586))
+(or (not x3683) (not x3682) x3679 x3685 x3684)
+(or (not x3620) (not x3615) (not x2175))
+(or (not x3681) (not x3680) x3679 x3683 x3682)
+(or (not x3620) (not x3615) x691)
+(or x3679 x3681 x3680)
+(or (not x3620) (not x3612) (not x2176))
+(or (not x3689) (not x3688) x3679)
+(or (not x3620) (not x3612) x686)
+(or (not x3679) (not x3689) x3688)
+(or (not x3620) (not x3609) (not x2177))
+(or (not x3679) (not x3688) x3689)
+(or (not x3620) (not x3609) x677)
+(or (not x3679) (not x3687) x3686)
+(or (not x3679) (not x3686) x3687)
+(or (not x3679) (not x3685) x3684)
+(or (not x3620) (not x3604) (not x2179))
+(or (not x3679) (not x3684) x3685)
+(or (not x3620) (not x3604))
+(or (not x3679) (not x3683) x3682)
+(or (not x3620) (not x3601) x657)
+(or (not x3679) (not x3682) x3683)
+(or (not x3620) x3615 x3612 x3609 x3604 x3601)
+(or (not x3679) (not x3681) x3680)
+(or (not x3620) (not x3604))
+(or (not x3679) (not x3680) x3681)
+(or (not x3620) (not x3588))
+(or (not x52) x3678 x3672 x3676)
+(or (not x3620) (not x3586))
+(or (not x3678) (not x3676) (not x52) x3672)
+(or (not x3604) (not x3595) (not x2175))
+(or (not x3678) x3672 x3676 x52)
+(or (not x3604) (not x3595) x691)
+(or (not x3676) x3678 x3672 x52)
+(or (not x3604) (not x3593) (not x2176))
+(or (not x3672) (not x50) x3678 x3669 x3674)
+(or (not x3604) (not x3593) x686)
+(or (not x3678) (not x3672) (not x3674) (not x50) x3669)
+(or (not x3604) (not x3591) (not x2177))
+(or (not x3678) (not x3672) x3669 x3674 x50)
+(or (not x3604) (not x3591) x677)
+(or (not x3672) (not x3674) x3678 x3669 x50)
+(or (not x3669) (not x48) x3678 x3666 x3671)
+(or (not x3678) (not x3669) (not x3671) (not x48) x3666)
+(or (not x3604) (not x3588) (not x2179))
+(or (not x3678) (not x3669) x3666 x3671 x48)
+(or (not x3604) (not x3588))
+(or (not x3669) (not x3671) x3678 x3666 x48)
+(or (not x3604) (not x3587) x657)
+(or (not x3666) (not x46) x3678 x3663 x3668)
+(or (not x3604) x3595 x3593 x3591 x3588 x3587)
+(or (not x3678) (not x3666) (not x3668) (not x46) x3663)
+(or (not x3604) (not x3588))
+(or (not x3678) (not x3666) x3663 x3668 x46)
+(or (not x3604) (not x3586))
+(or (not x3666) (not x3668) x3678 x3663 x46)
+(or (not x3588) (not x2178))
+(or (not x3663) (not x44) x3678 x3660 x3665)
+(or (not x3588) x671)
+(or (not x3678) (not x3663) (not x3665) (not x44) x3660)
+(or (not x3588) (not x3586) (not x2179))
+(or (not x3678) (not x3663) x3660 x3665 x44)
+(or (not x3588) (not x3586))
+(or (not x3663) (not x3665) x3678 x3660 x44)
+(or (not x3588) (not x3585) x657)
+(or (not x3660) (not x149) x3678 x3659 x3662)
+(or (not x3588) (not x3586))
+(or (not x3678) (not x3660) (not x3662) (not x149) x3659)
+(or (not x2179) x3651 x3637 x3620 x3604 x3588 x3586)
+(or (not x3678) (not x3660) x3659 x3662 x149)
+(or (not x3649) (not x3647) (not x2175))
+(or (not x3660) (not x3662) x3678 x3659 x149)
+(or (not x3649) (not x3647) x690)
+(or (not x3678) (not x3677))
+(or (not x3649) (not x3645) (not x2176))
+(or (not x3659) x3677)
+(or (not x3649) (not x3645) x684)
+(or (not x3677) x3659)
+(or (not x3649) (not x3643) (not x2177))
+(or x3672 x3676 x3675)
+(or (not x3649) (not x3643) x676)
+(or (not x3676) (not x3675) x3672)
+(or (not x3672) (not x3676) x3675)
+(or (not x3672) (not x3675) x3676)
+(or (not x3649) (not x3637) (not x2179))
+(or (not x3672) x3669 x3674 x3673)
+(or (not x3649) (not x3637) x664)
+(or (not x3672) (not x3674) (not x3673) x3669)
+(or (not x3649) (not x3634))
+(or (not x3669) (not x3674) x3673)
+(or (not x3649) x3647 x3645 x3643 x3637 x3634)
+(or (not x3669) (not x3673) x3674)
+(or (not x3649) (not x3634))
+(or (not x3669) x3672)
+(or (not x3649) (not x3618))
+(or (not x3669) x3666 x3671 x3670)
+(or (not x3649) (not x3601))
+(or (not x3669) (not x3671) (not x3670) x3666)
+(or (not x3649) (not x3587))
+(or (not x3666) (not x3671) x3670)
+(or (not x3649) (not x3585))
+(or (not x3666) (not x3670) x3671)
+(or (not x3634) (not x3631) (not x2175))
+(or (not x3666) x3669)
+(or (not x3634) (not x3631) x690)
+(or (not x3666) x3663 x3668 x3667)
+(or (not x3634) (not x3628) (not x2176))
+(or (not x3666) (not x3668) (not x3667) x3663)
+(or (not x3634) (not x3628) x684)
+(or (not x3663) (not x3668) x3667)
+(or (not x3634) (not x3625) (not x2177))
+(or (not x3663) (not x3667) x3668)
+(or (not x3634) (not x3625) x676)
+(or (not x3663) x3666)
+(or (not x3663) x3660 x3665 x3664)
+(or (not x3663) (not x3665) (not x3664) x3660)
+(or (not x3634) (not x3620) (not x2179))
+(or (not x3660) (not x3665) x3664)
+(or (not x3634) (not x3620) x664)
+(or (not x3660) (not x3664) x3665)
+(or (not x3634) (not x3618))
+(or (not x3660) x3663)
+(or (not x3634) x3631 x3628 x3625 x3620 x3618)
+(or (not x3660) x3659 x3662 x3661)
+(or (not x3634) (not x3618))
+(or (not x3660) (not x3662) (not x3661) x3659)
+(or (not x3634) (not x3601))
+(or (not x3659) (not x3662) x3661)
+(or (not x3634) (not x3587))
+(or (not x3659) (not x3661) x3662)
+(or (not x3634) (not x3585))
+(or (not x3659) x3660)
+(or (not x3618) (not x3615) (not x2175))
+(or (not x3641) (not x2217) (not x2212))
+(or (not x3618) (not x3615) x690)
+(or (not x2217) (not x2212) x3640)
+(or (not x3618) (not x3612) (not x2176))
+(or (not x3641) (not x2218) (not x2212) x95)
+(or (not x3618) (not x3612) x684)
+(or (not x2218) (not x2212) (not x95) x3641)
+(or (not x3618) (not x3609) (not x2177))
+(or (not x3640) (not x2218) (not x2212))
+(or (not x3618) (not x3609) x676)
+(or (not x3641) (not x2219) (not x2212) x94)
+(or (not x2219) (not x2212) (not x94) x3641)
+(or (not x3640) (not x2219) (not x2212))
+(or (not x3618) (not x3604) (not x2179))
+(or (not x3641) (not x2220) (not x2212) x92)
+(or (not x3618) (not x3604) x664)
+(or (not x2220) (not x2212) (not x92) x3641)
+(or (not x3618) (not x3601))
+(or (not x3640) (not x2220) (not x2212))
+(or (not x3618) x3615 x3612 x3609 x3604 x3601)
+(or (not x3641) (not x2221) (not x2212) x91)
+(or (not x3618) (not x3601))
+(or (not x2221) (not x2212) (not x91) x3641)
+(or (not x3618) (not x3587))
+(or (not x3640) (not x2221) (not x2212))
+(or (not x3618) (not x3585))
+(or (not x3641) (not x2217) (not x2213) x89)
+(or (not x3601) (not x3595) (not x2175))
+(or (not x2217) (not x2213) (not x89) x3641)
+(or (not x3601) (not x3595) x690)
+(or (not x3640) (not x2217) (not x2213))
+(or (not x3601) (not x3593) (not x2176))
+(or (not x3641) (not x2218) (not x2213))
+(or (not x3601) (not x3593) x684)
+(or (not x2218) (not x2213) x3640)
+(or (not x3601) (not x3591) (not x2177))
+(or (not x3641) (not x2219) (not x2213) x88)
+(or (not x3601) (not x3591) x676)
+(or (not x2219) (not x2213) (not x88) x3641)
+(or (not x3640) (not x2219) (not x2213))
+(or (not x3641) (not x2220) (not x2213) x87)
+(or (not x3601) (not x3588) (not x2179))
+(or (not x2220) (not x2213) (not x87) x3641)
+(or (not x3601) (not x3588) x664)
+(or (not x3640) (not x2220) (not x2213))
+(or (not x3601) (not x3587))
+(or (not x3641) (not x2221) (not x2213) x86)
+(or (not x3601) x3595 x3593 x3591 x3588 x3587)
+(or (not x2221) (not x2213) (not x86) x3641)
+(or (not x3601) (not x3587))
+(or (not x3640) (not x2221) (not x2213))
+(or (not x3601) (not x3585))
+(or (not x3641) (not x2217) (not x2214) x82)
+(or (not x3587) (not x2178))
+(or (not x2217) (not x2214) (not x82) x3641)
+(or (not x3587) x670)
+(or (not x3640) (not x2217) (not x2214))
+(or (not x3587) (not x3586) (not x2179))
+(or (not x3641) (not x2218) (not x2214) x81)
+(or (not x3587) (not x3586) x664)
+(or (not x2218) (not x2214) (not x81) x3641)
+(or (not x3587) (not x3585))
+(or (not x3640) (not x2218) (not x2214))
+(or (not x3587) (not x3585))
+(or (not x3641) (not x2219) (not x2214))
+(or (not x3658) (not x3655))
+(or (not x2219) (not x2214) x3640)
+(or (not x3658) x3657 x3655)
+(or (not x3641) (not x2220) (not x2214) x79)
+(or (not x3655) x3658 x3657)
+(or (not x2220) (not x2214) (not x79) x3641)
+(or (not x3657) x3658 x3655)
+(or (not x3640) (not x2220) (not x2214))
+(or (not x3656) (not x3653))
+(or (not x3641) (not x2221) (not x2214) x77)
+(or (not x3656) x3655 x3653)
+(or (not x2221) (not x2214) (not x77) x3641)
+(or (not x3653) x3656 x3655)
+(or (not x3640) (not x2221) (not x2214))
+(or (not x3655) x3656 x3653)
+(or (not x3641) (not x2217) (not x2215) x73)
+(or (not x3654) (not x3652))
+(or (not x2217) (not x2215) (not x73) x3641)
+(or (not x3654) x3653 x3652)
+(or (not x3640) (not x2217) (not x2215))
+(or (not x3652) x3654 x3653)
+(or (not x3641) (not x2218) (not x2215) x67)
+(or (not x3653) x3654 x3652)
+(or (not x2218) (not x2215) (not x67) x3641)
+(or (not x3640) (not x2218) (not x2215))
+(or (not x3641) (not x2219) (not x2215) x66)
+(or (not x3650) x3652)
+(or (not x2219) (not x2215) (not x66) x3641)
+(or (not x3652) x3650)
+(or (not x3640) (not x2219) (not x2215))
+(or (not x3651) (not x3648))
+(or (not x3641) (not x2220) (not x2215))
+(or (not x3651) x3650 x3648)
+(or (not x2220) (not x2215) x3640)
+(or (not x3648) x3651 x3650)
+(or (not x3641) (not x2221) (not x2215) x65)
+(or (not x3650) x3651 x3648)
+(or (not x2221) (not x2215) (not x65) x3641)
+(or (not x3649) x3648)
+(or (not x3640) (not x2221) (not x2215))
+(or (not x3648) x3649)
+(or (not x3641) (not x2217) (not x2216) x58)
+(or (not x3647) (not x3644))
+(or (not x2217) (not x2216) (not x58) x3641)
+(or (not x3647) x3646 x3644)
+(or (not x3640) (not x2217) (not x2216))
+(or (not x3644) x3647 x3646)
+(or (not x3641) (not x2218) (not x2216) x57)
+(or (not x3646) x3647 x3644)
+(or (not x2218) (not x2216) (not x57) x3641)
+(or (not x3645) (not x3642))
+(or (not x3640) (not x2218) (not x2216))
+(or (not x3645) x3644 x3642)
+(or (not x3641) (not x2219) (not x2216) x56)
+(or (not x3642) x3645 x3644)
+(or (not x2219) (not x2216) (not x56) x3641)
+(or (not x3644) x3645 x3642)
+(or (not x3640) (not x2219) (not x2216))
+(or (not x3643) (not x3639))
+(or (not x3641) (not x2220) (not x2216) x55)
+(or (not x3643) x3642 x3639)
+(or (not x2220) (not x2216) (not x55) x3641)
+(or (not x3639) x3643 x3642)
+(or (not x3640) (not x2220) (not x2216))
+(or (not x3642) x3643 x3639)
+(or (not x3641) (not x2221) (not x2216))
+(or (not x2221) (not x2216) x3640)
+(or (not x3638) (not x188) (not x40) x3404)
+(or (not x3636) x3639)
+(or (not x3638) (not x188) (not x41) x3362)
+(or (not x3639) x3636)
+(or (not x3638) (not x188) (not x42) x3318)
+(or (not x3637) (not x3633))
+(or (not x3638) (not x188) (not x43) x3305)
+(or (not x3637) x3636 x3633)
+(or (not x3635) (not x188) (not x39) x3222)
+(or (not x3633) x3637 x3636)
+(or (not x3635) (not x188) (not x41) x3209)
+(or (not x3636) x3637 x3633)
+(or (not x3635) (not x188) (not x42) x3140)
+(or (not x3634) x3633)
+(or (not x3635) (not x188) (not x43) x3127)
+(or (not x3633) x3634)
+(or (not x3632) (not x188) (not x39) x3048)
+(or (not x3631) (not x3627))
+(or (not x3632) (not x188) (not x40) x3029)
+(or (not x3631) x3630 x3627)
+(or (not x3632) (not x188) (not x42) x2971)
+(or (not x3627) x3631 x3630)
+(or (not x3632) (not x188) (not x43) x2958)
+(or (not x3630) x3631 x3627)
+(or (not x3629) (not x188) (not x39) x2887)
+(or (not x3628) (not x3624))
+(or (not x3629) (not x188) (not x40) x2874)
+(or (not x3628) x3627 x3624)
+(or (not x3629) (not x188) (not x41) x2801)
+(or (not x3624) x3628 x3627)
+(or (not x3629) (not x188) (not x43) x2788)
+(or (not x3627) x3628 x3624)
+(or (not x3626) (not x188) (not x39) x2694)
+(or (not x3625) (not x3622))
+(or (not x3626) (not x188) (not x40) x2670)
+(or (not x3625) x3624 x3622)
+(or (not x3626) (not x188) (not x41) x2611)
+(or (not x3622) x3625 x3624)
+(or (not x3626) (not x188) (not x42) x2567)
+(or (not x3624) x3625 x3622)
+(or (not x3623) (not x175) (not x33) x3570)
+(or (not x3623) (not x175) (not x34) x3511)
+(or (not x3623) (not x175) (not x35) x3489)
+(or (not x3619) x3622)
+(or (not x3623) (not x175) (not x36) x3460)
+(or (not x3622) x3619)
+(or (not x3621) (not x175) (not x32) x3247)
+(or (not x3620) (not x3617))
+(or (not x3621) (not x175) (not x34) x3209)
+(or (not x3620) x3619 x3617)
+(or (not x3621) (not x175) (not x35) x3140)
+(or (not x3617) x3620 x3619)
+(or (not x3621) (not x175) (not x36) x3127)
+(or (not x3619) x3620 x3617)
+(or (not x3616) (not x175) (not x32) x3083)
+(or (not x3618) x3617)
+(or (not x3616) (not x175) (not x33) x3029)
+(or (not x3617) x3618)
+(or (not x3616) (not x175) (not x35) x2971)
+(or (not x3615) (not x3611))
+(or (not x3616) (not x175) (not x36) x2958)
+(or (not x3615) x3614 x3611)
+(or (not x3613) (not x175) (not x32) x2900)
+(or (not x3611) x3615 x3614)
+(or (not x3613) (not x175) (not x33) x2874)
+(or (not x3614) x3615 x3611)
+(or (not x3613) (not x175) (not x34) x2801)
+(or (not x3612) (not x3608))
+(or (not x3613) (not x175) (not x36) x2788)
+(or (not x3612) x3611 x3608)
+(or (not x3610) (not x175) (not x32) x2770)
+(or (not x3608) x3612 x3611)
+(or (not x3610) (not x175) (not x33) x2670)
+(or (not x3611) x3612 x3608)
+(or (not x3610) (not x175) (not x34) x2611)
+(or (not x3609) (not x3606))
+(or (not x3610) (not x175) (not x35) x2567)
+(or (not x3609) x3608 x3606)
+(or (not x3607) (not x153) (not x28) x3583)
+(or (not x3606) x3609 x3608)
+(or (not x3607) (not x153) (not x29) x3511)
+(or (not x3608) x3609 x3606)
+(or (not x3607) (not x153) (not x30) x3489)
+(or (not x3607) (not x153) (not x31) x3460)
+(or (not x3605) (not x153) (not x27) x3417)
+(or (not x3603) x3606)
+(or (not x3605) (not x153) (not x29) x3362)
+(or (not x3606) x3603)
+(or (not x3605) (not x153) (not x30) x3318)
+(or (not x3604) (not x3600))
+(or (not x3605) (not x153) (not x31) x3305)
+(or (not x3604) x3603 x3600)
+(or (not x3602) (not x153) (not x27) x3083)
+(or (not x3600) x3604 x3603)
+(or (not x3602) (not x153) (not x28) x3048)
+(or (not x3603) x3604 x3600)
+(or (not x3602) (not x153) (not x30) x2971)
+(or (not x3601) x3600)
+(or (not x3602) (not x153) (not x31) x2958)
+(or (not x3600) x3601)
+(or (not x3599) (not x153) (not x27) x2900)
+(or (not x3595) (not x3596))
+(or (not x3599) (not x153) (not x28) x2887)
+(or (not x3595) x3598 x3596)
+(or (not x3599) (not x153) (not x29) x2801)
+(or (not x3596) x3595 x3598)
+(or (not x3599) (not x153) (not x31) x2788)
+(or (not x3598) x3595 x3596)
+(or (not x3597) (not x153) (not x27) x2770)
+(or (not x3593) (not x3594))
+(or (not x3597) (not x153) (not x28) x2694)
+(or (not x3593) x3596 x3594)
+(or (not x3597) (not x153) (not x29) x2611)
+(or (not x3594) x3593 x3596)
+(or (not x3597) (not x153) (not x30) x2567)
+(or (not x3596) x3593 x3594)
+(or (not x3595) (not x131) (not x21) x3583)
+(or (not x3591) (not x3592))
+(or (not x3595) (not x131) (not x22) x3570)
+(or (not x3591) x3594 x3592)
+(or (not x3595) (not x131) (not x23) x3489)
+(or (not x3592) x3591 x3594)
+(or (not x3595) (not x131) (not x24) x3460)
+(or (not x3594) x3591 x3592)
+(or (not x3593) (not x131) (not x20) x3417)
+(or (not x3593) (not x131) (not x22) x3404)
+(or (not x3593) (not x131) (not x23) x3318)
+(or (not x3590) x3592)
+(or (not x3593) (not x131) (not x24) x3305)
+(or (not x3592) x3590)
+(or (not x3591) (not x131) (not x20) x3247)
+(or (not x3588) (not x3589))
+(or (not x3591) (not x131) (not x21) x3222)
+(or (not x3588) x3590 x3589)
+(or (not x3591) (not x131) (not x23) x3140)
+(or (not x3589) x3588 x3590)
+(or (not x3591) (not x131) (not x24) x3127)
+(or (not x3590) x3588 x3589)
+(or (not x3588) (not x131) (not x20) x2900)
+(or (not x3587) x3589)
+(or (not x3588) (not x131) (not x21) x2887)
+(or (not x3589) x3587)
+(or (not x3588) (not x131) (not x22) x2874)
+(or (not x3588) (not x131) (not x24) x2788)
+(or (not x3587) (not x131) (not x20) x2770)
+(or (not x3587) (not x131) (not x21) x2694)
+(or (not x3587) (not x131) (not x22) x2670)
+(or (not x3586) (not x3584))
+(or (not x3587) (not x131) (not x23) x2567)
+(or (not x3586) x3584)
+(or (not x3513) (not x110) (not x14) x3583)
+(or (not x3584) x3586)
+(or (not x3513) (not x110) (not x15) x3570)
+(or (not x3513) (not x110) (not x16) x3511)
+(or (not x3585) x3584)
+(or (not x3513) (not x110) (not x17) x3460)
+(or (not x3584) x3585)
+(or (not x3510) (not x110) (not x13) x3417)
+(or (not x3563) (not x3548) (not x2170))
+(or (not x3510) (not x110) (not x15) x3404)
+(or (not x3563) (not x3548))
+(or (not x3510) (not x110) (not x16) x3362)
+(or (not x3563) (not x3546) (not x2171))
+(or (not x3510) (not x110) (not x17) x3305)
+(or (not x3563) (not x3546) x689)
+(or (not x3508) (not x110) (not x13) x3247)
+(or (not x3563) (not x3544) (not x2172))
+(or (not x3508) (not x110) (not x14) x3222)
+(or (not x3563) (not x3544) x681)
+(or (not x3508) (not x110) (not x16) x3209)
+(or (not x3563) (not x3542) (not x2173))
+(or (not x3508) (not x110) (not x17) x3127)
+(or (not x3563) (not x3542) x675)
+(or (not x3506) (not x110) (not x13) x3083)
+(or (not x3563) (not x3539) x663)
+(or (not x3506) (not x110) (not x14) x3048)
+(or (not x3563) x3548 x3546 x3544 x3542 x3539)
+(or (not x3506) (not x110) (not x15) x3029)
+(or (not x3563) (not x3548))
+(or (not x3506) (not x110) (not x17) x2958)
+(or (not x3563) (not x3537))
+(or (not x3503) (not x110) (not x13) x2770)
+(or (not x3563) (not x3526))
+(or (not x3503) (not x110) (not x14) x2694)
+(or (not x3563) (not x3513))
+(or (not x3503) (not x110) (not x15) x2670)
+(or (not x3548) (not x3537) (not x2170))
+(or (not x3503) (not x110) (not x16) x2611)
+(or (not x3548) (not x3537))
+(or (not x3433) (not x69) (not x7) x3583)
+(or (not x3548) (not x3535) (not x2171))
+(or (not x3583) (not x3579) (not x3571) x3582 x3581)
+(or (not x3548) (not x3535) x689)
+(or (not x3583) (not x3571) x3580 x3579)
+(or (not x3548) (not x3533) (not x2172))
+(or (not x3583) x3572 x3571)
+(or (not x3548) (not x3533) x681)
+(or (not x3581) (not x3579) (not x3571) x3583)
+(or (not x3548) (not x3531) (not x2173))
+(or (not x3582) (not x3579) (not x3571) x3583)
+(or (not x3548) (not x3531) x675)
+(or (not x3580) (not x3571) x3583)
+(or (not x3548) (not x3528) x663)
+(or (not x3572) x3583)
+(or (not x3548) x3537 x3535 x3533 x3531 x3528)
+(or (not x3582) (not x3581))
+(or (not x3548) (not x3537))
+(or (not x2753) x3582 x2692 x2283)
+(or (not x3548) (not x3526))
+(or (not x3582) (not x2753) (not x2283) x2692)
+(or (not x3548) (not x3513))
+(or (not x3582) (not x2692) x2753 x2283)
+(or (not x3537) (not x3526) (not x2170))
+(or (not x2692) (not x2283) x3582 x2753)
+(or (not x3537) (not x3526))
+(or (not x2750) x3582 x2691 x2283)
+(or (not x3537) (not x3524) (not x2171))
+(or (not x3582) (not x2750) (not x2283) x2691)
+(or (not x3537) (not x3524) x689)
+(or (not x3582) (not x2691) x2750 x2283)
+(or (not x3537) (not x3522) (not x2172))
+(or (not x2691) (not x2283) x3582 x2750)
+(or (not x3537) (not x3522) x681)
+(or (not x2749) x3582 x2690 x2283)
+(or (not x3537) (not x3520) (not x2173))
+(or (not x3582) (not x2749) (not x2283) x2690)
+(or (not x3537) (not x3520) x675)
+(or (not x3582) (not x2690) x2749 x2283)
+(or (not x3537) (not x3515) x663)
+(or (not x2690) (not x2283) x3582 x2749)
+(or (not x3537) x3526 x3524 x3522 x3520 x3515)
+(or (not x2746) x3582 x2689 x2283)
+(or (not x3537) (not x3526))
+(or (not x3582) (not x2746) (not x2283) x2689)
+(or (not x3537) (not x3513))
+(or (not x3582) (not x2689) x2746 x2283)
+(or (not x3526) (not x3513) (not x2170))
+(or (not x2689) (not x2283) x3582 x2746)
+(or (not x3526) (not x3513))
+(or (not x2745) x3582 x2688 x2283)
+(or (not x3526) (not x3510) (not x2171))
+(or (not x3582) (not x2745) (not x2283) x2688)
+(or (not x3526) (not x3510) x689)
+(or (not x3582) (not x2688) x2745 x2283)
+(or (not x3526) (not x3508) (not x2172))
+(or (not x2688) (not x2283) x3582 x2745)
+(or (not x3526) (not x3508) x681)
+(or (not x2750) (not x2691) x3581 x2753 x2692)
+(or (not x3526) (not x3506) (not x2173))
+(or (not x2749) (not x2690) x3581 x2750 x2691)
+(or (not x3526) (not x3506) x675)
+(or (not x2746) (not x2689) x3581 x2749 x2690)
+(or (not x3526) (not x3503) x663)
+(or (not x2745) (not x2688) x3581 x2746 x2689)
+(or (not x3526) x3513 x3510 x3508 x3506 x3503)
+(or x3581 x2745 x2688)
+(or (not x3526) (not x3513))
+(or (not x2753) (not x2692) x3581)
+(or (not x3513) (not x2174))
+(or (not x3581) (not x2692) x2753)
+(or (not x3513) x669)
+(or (not x3581) (not x2753) x2692)
+(or (not x2170) x3563 x3548 x3537 x3526 x3513)
+(or (not x3581) (not x2691) x2750)
+(or (not x3560) (not x3548) (not x2170))
+(or (not x3581) (not x2750) x2691)
+(or (not x3560) (not x3548) x694)
+(or (not x3581) (not x2690) x2749)
+(or (not x3560) (not x3546) (not x2171))
+(or (not x3581) (not x2749) x2690)
+(or (not x3560) (not x3546))
+(or (not x3581) (not x2689) x2746)
+(or (not x3560) (not x3544) (not x2172))
+(or (not x3581) (not x2746) x2689)
+(or (not x3560) (not x3544) x680)
+(or (not x3581) (not x2688) x2745)
+(or (not x3560) (not x3542) (not x2173))
+(or (not x3581) (not x2745) x2688)
+(or (not x3560) (not x3542) x674)
+(or (not x52) x3580 x3578 x2684)
+(or (not x3560) (not x3539) x662)
+(or (not x3580) (not x2684) (not x52) x3578)
+(or (not x3560) x3548 x3546 x3544 x3542 x3539)
+(or (not x3580) x3578 x2684 x52)
+(or (not x3560) (not x3546))
+(or (not x2684) x3580 x3578 x52)
+(or (not x3560) (not x3535))
+(or (not x3578) (not x50) x3580 x3577 x2683)
+(or (not x3560) (not x3524))
+(or (not x3580) (not x3578) (not x2683) (not x50) x3577)
+(or (not x3560) (not x3510))
+(or (not x3580) (not x3578) x3577 x2683 x50)
+(or (not x3546) (not x3537) (not x2170))
+(or (not x3578) (not x2683) x3580 x3577 x50)
+(or (not x3546) (not x3537) x694)
+(or (not x3577) (not x48) x3580 x3576 x2681)
+(or (not x3546) (not x3535) (not x2171))
+(or (not x3580) (not x3577) (not x2681) (not x48) x3576)
+(or (not x3546) (not x3535))
+(or (not x3580) (not x3577) x3576 x2681 x48)
+(or (not x3546) (not x3533) (not x2172))
+(or (not x3577) (not x2681) x3580 x3576 x48)
+(or (not x3546) (not x3533) x680)
+(or (not x3576) (not x46) x3580 x3575 x2679)
+(or (not x3546) (not x3531) (not x2173))
+(or (not x3580) (not x3576) (not x2679) (not x46) x3575)
+(or (not x3546) (not x3531) x674)
+(or (not x3580) (not x3576) x3575 x2679 x46)
+(or (not x3546) (not x3528) x662)
+(or (not x3576) (not x2679) x3580 x3575 x46)
+(or (not x3546) x3537 x3535 x3533 x3531 x3528)
+(or (not x3575) (not x44) x3580 x3574 x2677)
+(or (not x3546) (not x3535))
+(or (not x3580) (not x3575) (not x2677) (not x44) x3574)
+(or (not x3546) (not x3524))
+(or (not x3580) (not x3575) x3574 x2677 x44)
+(or (not x3546) (not x3510))
+(or (not x3575) (not x2677) x3580 x3574 x44)
+(or (not x3535) (not x3526) (not x2170))
+(or (not x3574) (not x149) x3580 x3573 x2675)
+(or (not x3535) (not x3526) x694)
+(or (not x3580) (not x3574) (not x2675) (not x149) x3573)
+(or (not x3535) (not x3524) (not x2171))
+(or (not x3580) (not x3574) x3573 x2675 x149)
+(or (not x3535) (not x3524))
+(or (not x3574) (not x2675) x3580 x3573 x149)
+(or (not x3535) (not x3522) (not x2172))
+(or (not x3580) (not x3579))
+(or (not x3535) (not x3522) x680)
+(or (not x3573) x3579)
+(or (not x3535) (not x3520) (not x2173))
+(or (not x3579) x3573)
+(or (not x3535) (not x3520) x674)
+(or x3578 x2725 x2684)
+(or (not x3535) (not x3515) x662)
+(or (not x2725) (not x2684) x3578)
+(or (not x3535) x3526 x3524 x3522 x3520 x3515)
+(or (not x3578) (not x2684) x2725)
+(or (not x3535) (not x3524))
+(or (not x3578) (not x2725) x2684)
+(or (not x3535) (not x3510))
+(or (not x3578) x3577 x2722 x2683)
+(or (not x3524) (not x3513) (not x2170))
+(or (not x3578) (not x2722) (not x2683) x3577)
+(or (not x3524) (not x3513) x694)
+(or (not x3577) (not x2683) x2722)
+(or (not x3524) (not x3510) (not x2171))
+(or (not x3577) (not x2722) x2683)
+(or (not x3524) (not x3510))
+(or (not x3577) x3578)
+(or (not x3524) (not x3508) (not x2172))
+(or (not x3577) x3576 x2718 x2681)
+(or (not x3524) (not x3508) x680)
+(or (not x3577) (not x2718) (not x2681) x3576)
+(or (not x3524) (not x3506) (not x2173))
+(or (not x3576) (not x2681) x2718)
+(or (not x3524) (not x3506) x674)
+(or (not x3576) (not x2718) x2681)
+(or (not x3524) (not x3503) x662)
+(or (not x3576) x3577)
+(or (not x3524) x3513 x3510 x3508 x3506 x3503)
+(or (not x3576) x3575 x2714 x2679)
+(or (not x3524) (not x3510))
+(or (not x3576) (not x2714) (not x2679) x3575)
+(or (not x3510) (not x2174))
+(or (not x3575) (not x2679) x2714)
+(or (not x3510) x667)
+(or (not x3575) (not x2714) x2679)
+(or (not x2171) x3560 x3546 x3535 x3524 x3510)
+(or (not x3575) x3576)
+(or (not x3557) (not x3548) (not x2170))
+(or (not x3575) x3574 x2711 x2677)
+(or (not x3557) (not x3548) x693)
+(or (not x3575) (not x2711) (not x2677) x3574)
+(or (not x3557) (not x3546) (not x2171))
+(or (not x3574) (not x2677) x2711)
+(or (not x3557) (not x3546) x688)
+(or (not x3574) (not x2711) x2677)
+(or (not x3557) (not x3544) (not x2172))
+(or (not x3574) x3575)
+(or (not x3557) (not x3544))
+(or (not x3574) x3573 x2708 x2675)
+(or (not x3557) (not x3542) (not x2173))
+(or (not x3574) (not x2708) (not x2675) x3573)
+(or (not x3557) (not x3542) x672)
+(or (not x3573) (not x2675) x2708)
+(or (not x3557) (not x3539) x660)
+(or (not x3573) (not x2708) x2675)
+(or (not x3557) x3548 x3546 x3544 x3542 x3539)
+(or (not x3573) x3574)
+(or (not x3557) (not x3544))
+(or (not x3572) (not x2190) (not x2185))
+(or (not x3557) (not x3533))
+(or (not x2190) (not x2185) x3571)
+(or (not x3557) (not x3522))
+(or (not x3572) (not x2190) (not x2186) x95)
+(or (not x3557) (not x3508))
+(or (not x2190) (not x2186) (not x95) x3572)
+(or (not x3544) (not x3537) (not x2170))
+(or (not x3571) (not x2190) (not x2186))
+(or (not x3544) (not x3537) x693)
+(or (not x3572) (not x2190) (not x2187) x94)
+(or (not x3544) (not x3535) (not x2171))
+(or (not x2190) (not x2187) (not x94) x3572)
+(or (not x3544) (not x3535) x688)
+(or (not x3571) (not x2190) (not x2187))
+(or (not x3544) (not x3533) (not x2172))
+(or (not x3572) (not x2190) (not x2188) x92)
+(or (not x3544) (not x3533))
+(or (not x2190) (not x2188) (not x92) x3572)
+(or (not x3544) (not x3531) (not x2173))
+(or (not x3571) (not x2190) (not x2188))
+(or (not x3544) (not x3531) x672)
+(or (not x3572) (not x2190) (not x2189) x91)
+(or (not x3544) (not x3528) x660)
+(or (not x2190) (not x2189) (not x91) x3572)
+(or (not x3544) x3537 x3535 x3533 x3531 x3528)
+(or (not x3571) (not x2190) (not x2189))
+(or (not x3544) (not x3533))
+(or (not x3572) (not x2191) (not x2185) x89)
+(or (not x3544) (not x3522))
+(or (not x2191) (not x2185) (not x89) x3572)
+(or (not x3544) (not x3508))
+(or (not x3571) (not x2191) (not x2185))
+(or (not x3533) (not x3526) (not x2170))
+(or (not x3572) (not x2191) (not x2186))
+(or (not x3533) (not x3526) x693)
+(or (not x2191) (not x2186) x3571)
+(or (not x3533) (not x3524) (not x2171))
+(or (not x3572) (not x2191) (not x2187) x88)
+(or (not x3533) (not x3524) x688)
+(or (not x2191) (not x2187) (not x88) x3572)
+(or (not x3533) (not x3522) (not x2172))
+(or (not x3571) (not x2191) (not x2187))
+(or (not x3533) (not x3522))
+(or (not x3572) (not x2191) (not x2188) x87)
+(or (not x3533) (not x3520) (not x2173))
+(or (not x2191) (not x2188) (not x87) x3572)
+(or (not x3533) (not x3520) x672)
+(or (not x3571) (not x2191) (not x2188))
+(or (not x3533) (not x3515) x660)
+(or (not x3572) (not x2191) (not x2189) x86)
+(or (not x3533) x3526 x3524 x3522 x3520 x3515)
+(or (not x2191) (not x2189) (not x86) x3572)
+(or (not x3533) (not x3522))
+(or (not x3571) (not x2191) (not x2189))
+(or (not x3533) (not x3508))
+(or (not x3572) (not x2192) (not x2185) x82)
+(or (not x3522) (not x3513) (not x2170))
+(or (not x2192) (not x2185) (not x82) x3572)
+(or (not x3522) (not x3513) x693)
+(or (not x3571) (not x2192) (not x2185))
+(or (not x3522) (not x3510) (not x2171))
+(or (not x3572) (not x2192) (not x2186) x81)
+(or (not x3522) (not x3510) x688)
+(or (not x2192) (not x2186) (not x81) x3572)
+(or (not x3522) (not x3508) (not x2172))
+(or (not x3571) (not x2192) (not x2186))
+(or (not x3522) (not x3508))
+(or (not x3572) (not x2192) (not x2187))
+(or (not x3522) (not x3506) (not x2173))
+(or (not x2192) (not x2187) x3571)
+(or (not x3522) (not x3506) x672)
+(or (not x3572) (not x2192) (not x2188) x79)
+(or (not x3522) (not x3503) x660)
+(or (not x2192) (not x2188) (not x79) x3572)
+(or (not x3522) x3513 x3510 x3508 x3506 x3503)
+(or (not x3571) (not x2192) (not x2188))
+(or (not x3522) (not x3508))
+(or (not x3572) (not x2192) (not x2189) x77)
+(or (not x3508) (not x2174))
+(or (not x2192) (not x2189) (not x77) x3572)
+(or (not x3508) x666)
+(or (not x3571) (not x2192) (not x2189))
+(or (not x2172) x3557 x3544 x3533 x3522 x3508)
+(or (not x3572) (not x2193) (not x2185) x73)
+(or (not x3553) (not x3548) (not x2170))
+(or (not x2193) (not x2185) (not x73) x3572)
+(or (not x3553) (not x3548) x692)
+(or (not x3571) (not x2193) (not x2185))
+(or (not x3553) (not x3546) (not x2171))
+(or (not x3572) (not x2193) (not x2186) x67)
+(or (not x3553) (not x3546) x687)
+(or (not x2193) (not x2186) (not x67) x3572)
+(or (not x3553) (not x3544) (not x2172))
+(or (not x3571) (not x2193) (not x2186))
+(or (not x3553) (not x3544) x678)
+(or (not x3572) (not x2193) (not x2187) x66)
+(or (not x3553) (not x3542) (not x2173))
+(or (not x2193) (not x2187) (not x66) x3572)
+(or (not x3553) (not x3542))
+(or (not x3571) (not x2193) (not x2187))
+(or (not x3553) (not x3539) x658)
+(or (not x3572) (not x2193) (not x2188))
+(or (not x3553) x3548 x3546 x3544 x3542 x3539)
+(or (not x2193) (not x2188) x3571)
+(or (not x3553) (not x3542))
+(or (not x3572) (not x2193) (not x2189) x65)
+(or (not x3553) (not x3531))
+(or (not x2193) (not x2189) (not x65) x3572)
+(or (not x3553) (not x3520))
+(or (not x3571) (not x2193) (not x2189))
+(or (not x3553) (not x3506))
+(or (not x3572) (not x2194) (not x2185) x58)
+(or (not x3542) (not x3537) (not x2170))
+(or (not x2194) (not x2185) (not x58) x3572)
+(or (not x3542) (not x3537) x692)
+(or (not x3571) (not x2194) (not x2185))
+(or (not x3542) (not x3535) (not x2171))
+(or (not x3572) (not x2194) (not x2186) x57)
+(or (not x3542) (not x3535) x687)
+(or (not x2194) (not x2186) (not x57) x3572)
+(or (not x3542) (not x3533) (not x2172))
+(or (not x3571) (not x2194) (not x2186))
+(or (not x3542) (not x3533) x678)
+(or (not x3572) (not x2194) (not x2187) x56)
+(or (not x3542) (not x3531) (not x2173))
+(or (not x2194) (not x2187) (not x56) x3572)
+(or (not x3542) (not x3531))
+(or (not x3571) (not x2194) (not x2187))
+(or (not x3542) (not x3528) x658)
+(or (not x3572) (not x2194) (not x2188) x55)
+(or (not x3542) x3537 x3535 x3533 x3531 x3528)
+(or (not x2194) (not x2188) (not x55) x3572)
+(or (not x3542) (not x3531))
+(or (not x3571) (not x2194) (not x2188))
+(or (not x3542) (not x3520))
+(or (not x3572) (not x2194) (not x2189))
+(or (not x3542) (not x3506))
+(or (not x2194) (not x2189) x3571)
+(or (not x3531) (not x3526) (not x2170))
+(or (not x3433) (not x69) (not x8) x3570)
+(or (not x3531) (not x3526) x692)
+(or (not x3570) (not x3566) (not x3517) x3569 x3568)
+(or (not x3531) (not x3524) (not x2171))
+(or (not x3570) (not x3517) x3567 x3566)
+(or (not x3531) (not x3524) x687)
+(or (not x3570) x3518 x3517)
+(or (not x3531) (not x3522) (not x2172))
+(or (not x3568) (not x3566) (not x3517) x3570)
+(or (not x3531) (not x3522) x678)
+(or (not x3569) (not x3566) (not x3517) x3570)
+(or (not x3531) (not x3520) (not x2173))
+(or (not x3567) (not x3517) x3570)
+(or (not x3531) (not x3520))
+(or (not x3518) x3570)
+(or (not x3531) (not x3515) x658)
+(or (not x3569) (not x3568))
+(or (not x3531) x3526 x3524 x3522 x3520 x3515)
+(or (not x2753) x3569 x2668 x2283)
+(or (not x3531) (not x3520))
+(or (not x3569) (not x2753) (not x2283) x2668)
+(or (not x3531) (not x3506))
+(or (not x3569) (not x2668) x2753 x2283)
+(or (not x3520) (not x3513) (not x2170))
+(or (not x2668) (not x2283) x3569 x2753)
+(or (not x3520) (not x3513) x692)
+(or (not x2750) x3569 x2667 x2283)
+(or (not x3520) (not x3510) (not x2171))
+(or (not x3569) (not x2750) (not x2283) x2667)
+(or (not x3520) (not x3510) x687)
+(or (not x3569) (not x2667) x2750 x2283)
+(or (not x3520) (not x3508) (not x2172))
+(or (not x2667) (not x2283) x3569 x2750)
+(or (not x3520) (not x3508) x678)
+(or (not x2749) x3569 x2666 x2283)
+(or (not x3520) (not x3506) (not x2173))
+(or (not x3569) (not x2749) (not x2283) x2666)
+(or (not x3520) (not x3506))
+(or (not x3569) (not x2666) x2749 x2283)
+(or (not x3520) (not x3503) x658)
+(or (not x2666) (not x2283) x3569 x2749)
+(or (not x3520) x3513 x3510 x3508 x3506 x3503)
+(or (not x2746) x3569 x2665 x2283)
+(or (not x3520) (not x3506))
+(or (not x3569) (not x2746) (not x2283) x2665)
+(or (not x3506) (not x2174))
+(or (not x3569) (not x2665) x2746 x2283)
+(or (not x3506) x665)
+(or (not x2665) (not x2283) x3569 x2746)
+(or (not x2173) x3553 x3542 x3531 x3520 x3506)
+(or (not x2745) x3569 x2664 x2283)
+(or (not x3550) (not x3548) (not x2170))
+(or (not x3569) (not x2745) (not x2283) x2664)
+(or (not x3550) (not x3548) x690)
+(or (not x3569) (not x2664) x2745 x2283)
+(or (not x3550) (not x3546) (not x2171))
+(or (not x2664) (not x2283) x3569 x2745)
+(or (not x3550) (not x3546) x684)
+(or (not x2750) (not x2667) x3568 x2753 x2668)
+(or (not x3550) (not x3544) (not x2172))
+(or (not x2749) (not x2666) x3568 x2750 x2667)
+(or (not x3550) (not x3544) x676)
+(or (not x2746) (not x2665) x3568 x2749 x2666)
+(or (not x3550) (not x3542) (not x2173))
+(or (not x2745) (not x2664) x3568 x2746 x2665)
+(or (not x3550) (not x3542) x670)
+(or x3568 x2745 x2664)
+(or (not x2753) (not x2668) x3568)
+(or (not x3568) (not x2668) x2753)
+(or (not x3550) (not x3539))
+(or (not x3568) (not x2753) x2668)
+(or (not x3550) x3548 x3546 x3544 x3542 x3539)
+(or (not x3568) (not x2667) x2750)
+(or (not x3550) (not x3539))
+(or (not x3568) (not x2750) x2667)
+(or (not x3550) (not x3528))
+(or (not x3568) (not x2666) x2749)
+(or (not x3550) (not x3515))
+(or (not x3568) (not x2749) x2666)
+(or (not x3550) (not x3503))
+(or (not x3568) (not x2665) x2746)
+(or (not x3539) (not x3537) (not x2170))
+(or (not x3568) (not x2746) x2665)
+(or (not x3539) (not x3537) x690)
+(or (not x3568) (not x2664) x2745)
+(or (not x3539) (not x3535) (not x2171))
+(or (not x3568) (not x2745) x2664)
+(or (not x3539) (not x3535) x684)
+(or (not x52) x3567 x3565 x2660)
+(or (not x3539) (not x3533) (not x2172))
+(or (not x3567) (not x2660) (not x52) x3565)
+(or (not x3539) (not x3533) x676)
+(or (not x3567) x3565 x2660 x52)
+(or (not x3539) (not x3531) (not x2173))
+(or (not x2660) x3567 x3565 x52)
+(or (not x3539) (not x3531) x670)
+(or (not x3565) (not x50) x3567 x3564 x2659)
+(or (not x3567) (not x3565) (not x2659) (not x50) x3564)
+(or (not x3567) (not x3565) x3564 x2659 x50)
+(or (not x3539) (not x3528))
+(or (not x3565) (not x2659) x3567 x3564 x50)
+(or (not x3539) x3537 x3535 x3533 x3531 x3528)
+(or (not x3564) (not x48) x3567 x3561 x2657)
+(or (not x3539) (not x3528))
+(or (not x3567) (not x3564) (not x2657) (not x48) x3561)
+(or (not x3539) (not x3515))
+(or (not x3567) (not x3564) x3561 x2657 x48)
+(or (not x3539) (not x3503))
+(or (not x3564) (not x2657) x3567 x3561 x48)
+(or (not x3528) (not x3526) (not x2170))
+(or (not x3561) (not x46) x3567 x3558 x2655)
+(or (not x3528) (not x3526) x690)
+(or (not x3567) (not x3561) (not x2655) (not x46) x3558)
+(or (not x3528) (not x3524) (not x2171))
+(or (not x3567) (not x3561) x3558 x2655 x46)
+(or (not x3528) (not x3524) x684)
+(or (not x3561) (not x2655) x3567 x3558 x46)
+(or (not x3528) (not x3522) (not x2172))
+(or (not x3558) (not x44) x3567 x3555 x2653)
+(or (not x3528) (not x3522) x676)
+(or (not x3567) (not x3558) (not x2653) (not x44) x3555)
+(or (not x3528) (not x3520) (not x2173))
+(or (not x3567) (not x3558) x3555 x2653 x44)
+(or (not x3528) (not x3520) x670)
+(or (not x3558) (not x2653) x3567 x3555 x44)
+(or (not x3555) (not x149) x3567 x3554 x2651)
+(or (not x3567) (not x3555) (not x2651) (not x149) x3554)
+(or (not x3528) (not x3515))
+(or (not x3567) (not x3555) x3554 x2651 x149)
+(or (not x3528) x3526 x3524 x3522 x3520 x3515)
+(or (not x3555) (not x2651) x3567 x3554 x149)
+(or (not x3528) (not x3515))
+(or (not x3567) (not x3566))
+(or (not x3528) (not x3503))
+(or (not x3554) x3566)
+(or (not x3515) (not x3513) (not x2170))
+(or (not x3566) x3554)
+(or (not x3515) (not x3513) x690)
+(or x3565 x2725 x2660)
+(or (not x3515) (not x3510) (not x2171))
+(or (not x2725) (not x2660) x3565)
+(or (not x3515) (not x3510) x684)
+(or (not x3565) (not x2660) x2725)
+(or (not x3515) (not x3508) (not x2172))
+(or (not x3565) (not x2725) x2660)
+(or (not x3515) (not x3508) x676)
+(or (not x3565) x3564 x2722 x2659)
+(or (not x3515) (not x3506) (not x2173))
+(or (not x3565) (not x2722) (not x2659) x3564)
+(or (not x3515) (not x3506) x670)
+(or (not x3564) (not x2659) x2722)
+(or (not x3564) (not x2722) x2659)
+(or (not x3564) x3565)
+(or (not x3515) (not x3503))
+(or (not x3564) x3561 x2718 x2657)
+(or (not x3515) x3513 x3510 x3508 x3506 x3503)
+(or (not x3564) (not x2718) (not x2657) x3561)
+(or (not x3515) (not x3503))
+(or (not x3561) (not x2657) x2718)
+(or (not x3503) (not x2174))
+(or (not x3561) (not x2718) x2657)
+(or (not x3503) x664)
+(or (not x3561) x3564)
+(or (not x3563) (not x3559))
+(or (not x3561) x3558 x2714 x2655)
+(or (not x3563) x3562 x3559)
+(or (not x3561) (not x2714) (not x2655) x3558)
+(or (not x3559) x3563 x3562)
+(or (not x3558) (not x2655) x2714)
+(or (not x3562) x3563 x3559)
+(or (not x3558) (not x2714) x2655)
+(or (not x3560) (not x3556))
+(or (not x3558) x3561)
+(or (not x3560) x3559 x3556)
+(or (not x3558) x3555 x2711 x2653)
+(or (not x3556) x3560 x3559)
+(or (not x3558) (not x2711) (not x2653) x3555)
+(or (not x3559) x3560 x3556)
+(or (not x3555) (not x2653) x2711)
+(or (not x3557) (not x3552))
+(or (not x3555) (not x2711) x2653)
+(or (not x3557) x3556 x3552)
+(or (not x3555) x3558)
+(or (not x3552) x3557 x3556)
+(or (not x3555) x3554 x2708 x2651)
+(or (not x3556) x3557 x3552)
+(or (not x3555) (not x2708) (not x2651) x3554)
+(or (not x3553) (not x3551))
+(or (not x3554) (not x2651) x2708)
+(or (not x3553) x3552 x3551)
+(or (not x3554) (not x2708) x2651)
+(or (not x3551) x3553 x3552)
+(or (not x3554) x3555)
+(or (not x3552) x3553 x3551)
+(or (not x3518) (not x2190) (not x2180))
+(or (not x2190) (not x2180) x3517)
+(or (not x3518) (not x2190) (not x2181) x95)
+(or (not x3549) x3551)
+(or (not x2190) (not x2181) (not x95) x3518)
+(or (not x3551) x3549)
+(or (not x3517) (not x2190) (not x2181))
+(or (not x3550) x3549)
+(or (not x3518) (not x2190) (not x2182) x94)
+(or (not x3549) x3550)
+(or (not x2190) (not x2182) (not x94) x3518)
+(or (not x3548) (not x3545))
+(or (not x3517) (not x2190) (not x2182))
+(or (not x3548) x3547 x3545)
+(or (not x3518) (not x2190) (not x2183) x92)
+(or (not x3545) x3548 x3547)
+(or (not x2190) (not x2183) (not x92) x3518)
+(or (not x3547) x3548 x3545)
+(or (not x3517) (not x2190) (not x2183))
+(or (not x3546) (not x3543))
+(or (not x3518) (not x2190) (not x2184) x91)
+(or (not x3546) x3545 x3543)
+(or (not x2190) (not x2184) (not x91) x3518)
+(or (not x3543) x3546 x3545)
+(or (not x3517) (not x2190) (not x2184))
+(or (not x3545) x3546 x3543)
+(or (not x3518) (not x2191) (not x2180) x89)
+(or (not x3544) (not x3541))
+(or (not x2191) (not x2180) (not x89) x3518)
+(or (not x3544) x3543 x3541)
+(or (not x3517) (not x2191) (not x2180))
+(or (not x3541) x3544 x3543)
+(or (not x3518) (not x2191) (not x2181))
+(or (not x3543) x3544 x3541)
+(or (not x2191) (not x2181) x3517)
+(or (not x3542) (not x3540))
+(or (not x3518) (not x2191) (not x2182) x88)
+(or (not x3542) x3541 x3540)
+(or (not x2191) (not x2182) (not x88) x3518)
+(or (not x3540) x3542 x3541)
+(or (not x3517) (not x2191) (not x2182))
+(or (not x3541) x3542 x3540)
+(or (not x3518) (not x2191) (not x2183) x87)
+(or (not x2191) (not x2183) (not x87) x3518)
+(or (not x3517) (not x2191) (not x2183))
+(or (not x3538) x3540)
+(or (not x3518) (not x2191) (not x2184) x86)
+(or (not x3540) x3538)
+(or (not x2191) (not x2184) (not x86) x3518)
+(or (not x3539) x3538)
+(or (not x3517) (not x2191) (not x2184))
+(or (not x3538) x3539)
+(or (not x3518) (not x2192) (not x2180) x82)
+(or (not x3537) (not x3534))
+(or (not x2192) (not x2180) (not x82) x3518)
+(or (not x3537) x3536 x3534)
+(or (not x3517) (not x2192) (not x2180))
+(or (not x3534) x3537 x3536)
+(or (not x3518) (not x2192) (not x2181) x81)
+(or (not x3536) x3537 x3534)
+(or (not x2192) (not x2181) (not x81) x3518)
+(or (not x3535) (not x3532))
+(or (not x3517) (not x2192) (not x2181))
+(or (not x3535) x3534 x3532)
+(or (not x3518) (not x2192) (not x2182))
+(or (not x3532) x3535 x3534)
+(or (not x2192) (not x2182) x3517)
+(or (not x3534) x3535 x3532)
+(or (not x3518) (not x2192) (not x2183) x79)
+(or (not x3533) (not x3530))
+(or (not x2192) (not x2183) (not x79) x3518)
+(or (not x3533) x3532 x3530)
+(or (not x3517) (not x2192) (not x2183))
+(or (not x3530) x3533 x3532)
+(or (not x3518) (not x2192) (not x2184) x77)
+(or (not x3532) x3533 x3530)
+(or (not x2192) (not x2184) (not x77) x3518)
+(or (not x3531) (not x3529))
+(or (not x3517) (not x2192) (not x2184))
+(or (not x3531) x3530 x3529)
+(or (not x3518) (not x2193) (not x2180) x73)
+(or (not x3529) x3531 x3530)
+(or (not x2193) (not x2180) (not x73) x3518)
+(or (not x3530) x3531 x3529)
+(or (not x3517) (not x2193) (not x2180))
+(or (not x3518) (not x2193) (not x2181) x67)
+(or (not x2193) (not x2181) (not x67) x3518)
+(or (not x3527) x3529)
+(or (not x3517) (not x2193) (not x2181))
+(or (not x3529) x3527)
+(or (not x3518) (not x2193) (not x2182) x66)
+(or (not x3528) x3527)
+(or (not x2193) (not x2182) (not x66) x3518)
+(or (not x3527) x3528)
+(or (not x3517) (not x2193) (not x2182))
+(or (not x3526) (not x3523))
+(or (not x3518) (not x2193) (not x2183))
+(or (not x3526) x3525 x3523)
+(or (not x2193) (not x2183) x3517)
+(or (not x3523) x3526 x3525)
+(or (not x3518) (not x2193) (not x2184) x65)
+(or (not x3525) x3526 x3523)
+(or (not x2193) (not x2184) (not x65) x3518)
+(or (not x3524) (not x3521))
+(or (not x3517) (not x2193) (not x2184))
+(or (not x3524) x3523 x3521)
+(or (not x3518) (not x2194) (not x2180) x58)
+(or (not x3521) x3524 x3523)
+(or (not x2194) (not x2180) (not x58) x3518)
+(or (not x3523) x3524 x3521)
+(or (not x3517) (not x2194) (not x2180))
+(or (not x3522) (not x3519))
+(or (not x3518) (not x2194) (not x2181) x57)
+(or (not x3522) x3521 x3519)
+(or (not x2194) (not x2181) (not x57) x3518)
+(or (not x3519) x3522 x3521)
+(or (not x3517) (not x2194) (not x2181))
+(or (not x3521) x3522 x3519)
+(or (not x3518) (not x2194) (not x2182) x56)
+(or (not x3520) (not x3516))
+(or (not x2194) (not x2182) (not x56) x3518)
+(or (not x3520) x3519 x3516)
+(or (not x3517) (not x2194) (not x2182))
+(or (not x3516) x3520 x3519)
+(or (not x3518) (not x2194) (not x2183) x55)
+(or (not x3519) x3520 x3516)
+(or (not x2194) (not x2183) (not x55) x3518)
+(or (not x3517) (not x2194) (not x2183))
+(or (not x3518) (not x2194) (not x2184))
+(or (not x3514) x3516)
+(or (not x2194) (not x2184) x3517)
+(or (not x3516) x3514)
+(or (not x3433) (not x69) (not x9) x3511)
+(or (not x3515) x3514)
+(or (not x3511) (not x3498) (not x3490) x3501 x3500)
+(or (not x3514) x3515)
+(or (not x3511) (not x3490) x3499 x3498)
+(or (not x3513) (not x3509))
+(or (not x3511) x3491 x3490)
+(or (not x3513) x3512 x3509)
+(or (not x3500) (not x3498) (not x3490) x3511)
+(or (not x3509) x3513 x3512)
+(or (not x3501) (not x3498) (not x3490) x3511)
+(or (not x3512) x3513 x3509)
+(or (not x3499) (not x3490) x3511)
+(or (not x3510) (not x3507))
+(or (not x3491) x3511)
+(or (not x3510) x3509 x3507)
+(or (not x3501) (not x3500))
+(or (not x3507) x3510 x3509)
+(or (not x2753) x3501 x2598 x2283)
+(or (not x3509) x3510 x3507)
+(or (not x3501) (not x2753) (not x2283) x2598)
+(or (not x3508) (not x3505))
+(or (not x3501) (not x2598) x2753 x2283)
+(or (not x3508) x3507 x3505)
+(or (not x2598) (not x2283) x3501 x2753)
+(or (not x3505) x3508 x3507)
+(or (not x2750) x3501 x2596 x2283)
+(or (not x3507) x3508 x3505)
+(or (not x3501) (not x2750) (not x2283) x2596)
+(or (not x3506) (not x3504))
+(or (not x3501) (not x2596) x2750 x2283)
+(or (not x3506) x3505 x3504)
+(or (not x2596) (not x2283) x3501 x2750)
+(or (not x3504) x3506 x3505)
+(or (not x2749) x3501 x2595 x2283)
+(or (not x3505) x3506 x3504)
+(or (not x3501) (not x2749) (not x2283) x2595)
+(or (not x3501) (not x2595) x2749 x2283)
+(or (not x2595) (not x2283) x3501 x2749)
+(or (not x3502) x3504)
+(or (not x2746) x3501 x2593 x2283)
+(or (not x3504) x3502)
+(or (not x3501) (not x2746) (not x2283) x2593)
+(or (not x3503) x3502)
+(or (not x3501) (not x2593) x2746 x2283)
+(or (not x3502) x3503)
+(or (not x2593) (not x2283) x3501 x2746)
+(or (not x2745) x3501 x2592 x2283)
+(or (not x3501) (not x2745) (not x2283) x2592)
+(or (not x3501) (not x2592) x2745 x2283)
+(or (not x2592) (not x2283) x3501 x2745)
+(or (not x2750) (not x2596) x3500 x2753 x2598)
+(or (not x2749) (not x2595) x3500 x2750 x2596)
+(or (not x2746) (not x2593) x3500 x2749 x2595)
+(or (not x3478) (not x3468) (not x2165))
+(or (not x2745) (not x2592) x3500 x2746 x2593)
+(or (not x3478) (not x3468))
+(or x3500 x2745 x2592)
+(or (not x3478) (not x3465) (not x2166))
+(or (not x2753) (not x2598) x3500)
+(or (not x3478) (not x3465) x689)
+(or (not x3500) (not x2598) x2753)
+(or (not x3478) (not x3462) (not x2167))
+(or (not x3500) (not x2753) x2598)
+(or (not x3478) (not x3462) x681)
+(or (not x3500) (not x2596) x2750)
+(or (not x3478) (not x3459) (not x2168))
+(or (not x3500) (not x2750) x2596)
+(or (not x3478) (not x3459) x675)
+(or (not x3500) (not x2595) x2749)
+(or (not x3478) (not x3457) (not x2169))
+(or (not x3500) (not x2749) x2595)
+(or (not x3478) (not x3457) x669)
+(or (not x3500) (not x2593) x2746)
+(or (not x3478) x3468 x3465 x3462 x3459 x3457)
+(or (not x3500) (not x2746) x2593)
+(or (not x3478) (not x3468))
+(or (not x3500) (not x2592) x2745)
+(or (not x3478) (not x3455))
+(or (not x3500) (not x2745) x2592)
+(or (not x3478) (not x3444))
+(or (not x52) x3499 x3497 x2581)
+(or (not x3478) (not x3433))
+(or (not x3499) (not x2581) (not x52) x3497)
+(or (not x3468) (not x3455) (not x2165))
+(or (not x3499) x3497 x2581 x52)
+(or (not x3468) (not x3455))
+(or (not x2581) x3499 x3497 x52)
+(or (not x3468) (not x3453) (not x2166))
+(or (not x3497) (not x50) x3499 x3496 x2580)
+(or (not x3468) (not x3453) x689)
+(or (not x3499) (not x3497) (not x2580) (not x50) x3496)
+(or (not x3468) (not x3451) (not x2167))
+(or (not x3499) (not x3497) x3496 x2580 x50)
+(or (not x3468) (not x3451) x681)
+(or (not x3497) (not x2580) x3499 x3496 x50)
+(or (not x3468) (not x3448) (not x2168))
+(or (not x3496) (not x48) x3499 x3495 x2578)
+(or (not x3468) (not x3448) x675)
+(or (not x3499) (not x3496) (not x2578) (not x48) x3495)
+(or (not x3468) (not x3446) (not x2169))
+(or (not x3499) (not x3496) x3495 x2578 x48)
+(or (not x3468) (not x3446) x669)
+(or (not x3496) (not x2578) x3499 x3495 x48)
+(or (not x3468) x3455 x3453 x3451 x3448 x3446)
+(or (not x3495) (not x46) x3499 x3494 x2576)
+(or (not x3468) (not x3455))
+(or (not x3499) (not x3495) (not x2576) (not x46) x3494)
+(or (not x3468) (not x3444))
+(or (not x3499) (not x3495) x3494 x2576 x46)
+(or (not x3468) (not x3433))
+(or (not x3495) (not x2576) x3499 x3494 x46)
+(or (not x3455) (not x3444) (not x2165))
+(or (not x3494) (not x44) x3499 x3493 x2574)
+(or (not x3455) (not x3444))
+(or (not x3499) (not x3494) (not x2574) (not x44) x3493)
+(or (not x3455) (not x3442) (not x2166))
+(or (not x3499) (not x3494) x3493 x2574 x44)
+(or (not x3455) (not x3442) x689)
+(or (not x3494) (not x2574) x3499 x3493 x44)
+(or (not x3455) (not x3439) (not x2167))
+(or (not x3493) (not x149) x3499 x3492 x2572)
+(or (not x3455) (not x3439) x681)
+(or (not x3499) (not x3493) (not x2572) (not x149) x3492)
+(or (not x3455) (not x3437) (not x2168))
+(or (not x3499) (not x3493) x3492 x2572 x149)
+(or (not x3455) (not x3437) x675)
+(or (not x3493) (not x2572) x3499 x3492 x149)
+(or (not x3455) (not x3435) (not x2169))
+(or (not x3499) (not x3498))
+(or (not x3455) (not x3435) x669)
+(or (not x3492) x3498)
+(or (not x3455) x3444 x3442 x3439 x3437 x3435)
+(or (not x3498) x3492)
+(or (not x3455) (not x3444))
+(or x3497 x2725 x2581)
+(or (not x3455) (not x3433))
+(or (not x2725) (not x2581) x3497)
+(or (not x3444) (not x3433) (not x2165))
+(or (not x3497) (not x2581) x2725)
+(or (not x3444) (not x3433))
+(or (not x3497) (not x2725) x2581)
+(or (not x3444) (not x3319) (not x2166))
+(or (not x3497) x3496 x2722 x2580)
+(or (not x3444) (not x3319) x689)
+(or (not x3497) (not x2722) (not x2580) x3496)
+(or (not x3444) (not x3141) (not x2167))
+(or (not x3496) (not x2580) x2722)
+(or (not x3444) (not x3141) x681)
+(or (not x3496) (not x2722) x2580)
+(or (not x3444) (not x2972) (not x2168))
+(or (not x3496) x3497)
+(or (not x3444) (not x2972) x675)
+(or (not x3496) x3495 x2718 x2578)
+(or (not x3444) (not x2802) (not x2169))
+(or (not x3496) (not x2718) (not x2578) x3495)
+(or (not x3444) (not x2802) x669)
+(or (not x3495) (not x2578) x2718)
+(or (not x3444) x3433 x3319 x3141 x2972 x2802)
+(or (not x3495) (not x2718) x2578)
+(or (not x3444) (not x3433))
+(or (not x3495) x3496)
+(or (not x3433) x663)
+(or (not x3495) x3494 x2714 x2576)
+(or (not x2165) x3478 x3468 x3455 x3444 x3433)
+(or (not x3495) (not x2714) (not x2576) x3494)
+(or (not x3476) (not x3468) (not x2165))
+(or (not x3494) (not x2576) x2714)
+(or (not x3476) (not x3468) x694)
+(or (not x3494) (not x2714) x2576)
+(or (not x3476) (not x3465) (not x2166))
+(or (not x3494) x3495)
+(or (not x3476) (not x3465))
+(or (not x3494) x3493 x2711 x2574)
+(or (not x3476) (not x3462) (not x2167))
+(or (not x3494) (not x2711) (not x2574) x3493)
+(or (not x3476) (not x3462) x680)
+(or (not x3493) (not x2574) x2711)
+(or (not x3476) (not x3459) (not x2168))
+(or (not x3493) (not x2711) x2574)
+(or (not x3476) (not x3459) x674)
+(or (not x3493) x3494)
+(or (not x3476) (not x3457) (not x2169))
+(or (not x3493) x3492 x2708 x2572)
+(or (not x3476) (not x3457) x667)
+(or (not x3493) (not x2708) (not x2572) x3492)
+(or (not x3476) x3468 x3465 x3462 x3459 x3457)
+(or (not x3492) (not x2572) x2708)
+(or (not x3476) (not x3465))
+(or (not x3492) (not x2708) x2572)
+(or (not x3476) (not x3453))
+(or (not x3492) x3493)
+(or (not x3476) (not x3442))
+(or (not x3491) (not x2190) (not x2175))
+(or (not x3476) (not x3319))
+(or (not x2190) (not x2175) x3490)
+(or (not x3465) (not x3455) (not x2165))
+(or (not x3491) (not x2190) (not x2176) x95)
+(or (not x3465) (not x3455) x694)
+(or (not x2190) (not x2176) (not x95) x3491)
+(or (not x3465) (not x3453) (not x2166))
+(or (not x3490) (not x2190) (not x2176))
+(or (not x3465) (not x3453))
+(or (not x3491) (not x2190) (not x2177) x94)
+(or (not x3465) (not x3451) (not x2167))
+(or (not x2190) (not x2177) (not x94) x3491)
+(or (not x3465) (not x3451) x680)
+(or (not x3490) (not x2190) (not x2177))
+(or (not x3465) (not x3448) (not x2168))
+(or (not x3491) (not x2190) (not x2178) x92)
+(or (not x3465) (not x3448) x674)
+(or (not x2190) (not x2178) (not x92) x3491)
+(or (not x3465) (not x3446) (not x2169))
+(or (not x3490) (not x2190) (not x2178))
+(or (not x3465) (not x3446) x667)
+(or (not x3491) (not x2190) (not x2179) x91)
+(or (not x3465) x3455 x3453 x3451 x3448 x3446)
+(or (not x2190) (not x2179) (not x91) x3491)
+(or (not x3465) (not x3453))
+(or (not x3490) (not x2190) (not x2179))
+(or (not x3465) (not x3442))
+(or (not x3491) (not x2191) (not x2175) x89)
+(or (not x3465) (not x3319))
+(or (not x2191) (not x2175) (not x89) x3491)
+(or (not x3453) (not x3444) (not x2165))
+(or (not x3490) (not x2191) (not x2175))
+(or (not x3453) (not x3444) x694)
+(or (not x3491) (not x2191) (not x2176))
+(or (not x3453) (not x3442) (not x2166))
+(or (not x2191) (not x2176) x3490)
+(or (not x3453) (not x3442))
+(or (not x3491) (not x2191) (not x2177) x88)
+(or (not x3453) (not x3439) (not x2167))
+(or (not x2191) (not x2177) (not x88) x3491)
+(or (not x3453) (not x3439) x680)
+(or (not x3490) (not x2191) (not x2177))
+(or (not x3453) (not x3437) (not x2168))
+(or (not x3491) (not x2191) (not x2178) x87)
+(or (not x3453) (not x3437) x674)
+(or (not x2191) (not x2178) (not x87) x3491)
+(or (not x3453) (not x3435) (not x2169))
+(or (not x3490) (not x2191) (not x2178))
+(or (not x3453) (not x3435) x667)
+(or (not x3491) (not x2191) (not x2179) x86)
+(or (not x3453) x3444 x3442 x3439 x3437 x3435)
+(or (not x2191) (not x2179) (not x86) x3491)
+(or (not x3453) (not x3442))
+(or (not x3490) (not x2191) (not x2179))
+(or (not x3453) (not x3319))
+(or (not x3491) (not x2192) (not x2175) x82)
+(or (not x3442) (not x3433) (not x2165))
+(or (not x2192) (not x2175) (not x82) x3491)
+(or (not x3442) (not x3433) x694)
+(or (not x3490) (not x2192) (not x2175))
+(or (not x3442) (not x3319) (not x2166))
+(or (not x3491) (not x2192) (not x2176) x81)
+(or (not x3442) (not x3319))
+(or (not x2192) (not x2176) (not x81) x3491)
+(or (not x3442) (not x3141) (not x2167))
+(or (not x3490) (not x2192) (not x2176))
+(or (not x3442) (not x3141) x680)
+(or (not x3491) (not x2192) (not x2177))
+(or (not x3442) (not x2972) (not x2168))
+(or (not x2192) (not x2177) x3490)
+(or (not x3442) (not x2972) x674)
+(or (not x3491) (not x2192) (not x2178) x79)
+(or (not x3442) (not x2802) (not x2169))
+(or (not x2192) (not x2178) (not x79) x3491)
+(or (not x3442) (not x2802) x667)
+(or (not x3490) (not x2192) (not x2178))
+(or (not x3442) x3433 x3319 x3141 x2972 x2802)
+(or (not x3491) (not x2192) (not x2179) x77)
+(or (not x3442) (not x3319))
+(or (not x2192) (not x2179) (not x77) x3491)
+(or (not x3319) x662)
+(or (not x3490) (not x2192) (not x2179))
+(or (not x2166) x3476 x3465 x3453 x3442 x3319)
+(or (not x3491) (not x2193) (not x2175) x73)
+(or (not x3474) (not x3468) (not x2165))
+(or (not x2193) (not x2175) (not x73) x3491)
+(or (not x3474) (not x3468) x693)
+(or (not x3490) (not x2193) (not x2175))
+(or (not x3474) (not x3465) (not x2166))
+(or (not x3491) (not x2193) (not x2176) x67)
+(or (not x3474) (not x3465) x688)
+(or (not x2193) (not x2176) (not x67) x3491)
+(or (not x3474) (not x3462) (not x2167))
+(or (not x3490) (not x2193) (not x2176))
+(or (not x3474) (not x3462))
+(or (not x3491) (not x2193) (not x2177) x66)
+(or (not x3474) (not x3459) (not x2168))
+(or (not x2193) (not x2177) (not x66) x3491)
+(or (not x3474) (not x3459) x672)
+(or (not x3490) (not x2193) (not x2177))
+(or (not x3474) (not x3457) (not x2169))
+(or (not x3491) (not x2193) (not x2178))
+(or (not x3474) (not x3457) x666)
+(or (not x2193) (not x2178) x3490)
+(or (not x3474) x3468 x3465 x3462 x3459 x3457)
+(or (not x3491) (not x2193) (not x2179) x65)
+(or (not x3474) (not x3462))
+(or (not x2193) (not x2179) (not x65) x3491)
+(or (not x3474) (not x3451))
+(or (not x3490) (not x2193) (not x2179))
+(or (not x3474) (not x3439))
+(or (not x3491) (not x2194) (not x2175) x58)
+(or (not x3474) (not x3141))
+(or (not x2194) (not x2175) (not x58) x3491)
+(or (not x3462) (not x3455) (not x2165))
+(or (not x3490) (not x2194) (not x2175))
+(or (not x3462) (not x3455) x693)
+(or (not x3491) (not x2194) (not x2176) x57)
+(or (not x3462) (not x3453) (not x2166))
+(or (not x2194) (not x2176) (not x57) x3491)
+(or (not x3462) (not x3453) x688)
+(or (not x3490) (not x2194) (not x2176))
+(or (not x3462) (not x3451) (not x2167))
+(or (not x3491) (not x2194) (not x2177) x56)
+(or (not x3462) (not x3451))
+(or (not x2194) (not x2177) (not x56) x3491)
+(or (not x3462) (not x3448) (not x2168))
+(or (not x3490) (not x2194) (not x2177))
+(or (not x3462) (not x3448) x672)
+(or (not x3491) (not x2194) (not x2178) x55)
+(or (not x3462) (not x3446) (not x2169))
+(or (not x2194) (not x2178) (not x55) x3491)
+(or (not x3462) (not x3446) x666)
+(or (not x3490) (not x2194) (not x2178))
+(or (not x3462) x3455 x3453 x3451 x3448 x3446)
+(or (not x3491) (not x2194) (not x2179))
+(or (not x3462) (not x3451))
+(or (not x2194) (not x2179) x3490)
+(or (not x3462) (not x3439))
+(or (not x3433) (not x69) (not x10) x3489)
+(or (not x3462) (not x3141))
+(or (not x3489) (not x3485) (not x3463) x3488 x3487)
+(or (not x3451) (not x3444) (not x2165))
+(or (not x3489) (not x3463) x3486 x3485)
+(or (not x3451) (not x3444) x693)
+(or (not x3489) x3466 x3463)
+(or (not x3451) (not x3442) (not x2166))
+(or (not x3487) (not x3485) (not x3463) x3489)
+(or (not x3451) (not x3442) x688)
+(or (not x3488) (not x3485) (not x3463) x3489)
+(or (not x3451) (not x3439) (not x2167))
+(or (not x3486) (not x3463) x3489)
+(or (not x3451) (not x3439))
+(or (not x3466) x3489)
+(or (not x3451) (not x3437) (not x2168))
+(or (not x3488) (not x3487))
+(or (not x3451) (not x3437) x672)
+(or (not x2753) x3488 x2565 x2283)
+(or (not x3451) (not x3435) (not x2169))
+(or (not x3488) (not x2753) (not x2283) x2565)
+(or (not x3451) (not x3435) x666)
+(or (not x3488) (not x2565) x2753 x2283)
+(or (not x3451) x3444 x3442 x3439 x3437 x3435)
+(or (not x2565) (not x2283) x3488 x2753)
+(or (not x3451) (not x3439))
+(or (not x2750) x3488 x2563 x2283)
+(or (not x3451) (not x3141))
+(or (not x3488) (not x2750) (not x2283) x2563)
+(or (not x3439) (not x3433) (not x2165))
+(or (not x3488) (not x2563) x2750 x2283)
+(or (not x3439) (not x3433) x693)
+(or (not x2563) (not x2283) x3488 x2750)
+(or (not x3439) (not x3319) (not x2166))
+(or (not x2749) x3488 x2561 x2283)
+(or (not x3439) (not x3319) x688)
+(or (not x3488) (not x2749) (not x2283) x2561)
+(or (not x3439) (not x3141) (not x2167))
+(or (not x3488) (not x2561) x2749 x2283)
+(or (not x3439) (not x3141))
+(or (not x2561) (not x2283) x3488 x2749)
+(or (not x3439) (not x2972) (not x2168))
+(or (not x2746) x3488 x2559 x2283)
+(or (not x3439) (not x2972) x672)
+(or (not x3488) (not x2746) (not x2283) x2559)
+(or (not x3439) (not x2802) (not x2169))
+(or (not x3488) (not x2559) x2746 x2283)
+(or (not x3439) (not x2802) x666)
+(or (not x2559) (not x2283) x3488 x2746)
+(or (not x3439) x3433 x3319 x3141 x2972 x2802)
+(or (not x2745) x3488 x2557 x2283)
+(or (not x3439) (not x3141))
+(or (not x3488) (not x2745) (not x2283) x2557)
+(or (not x3141) x660)
+(or (not x3488) (not x2557) x2745 x2283)
+(or (not x2167) x3474 x3462 x3451 x3439 x3141)
+(or (not x2557) (not x2283) x3488 x2745)
+(or (not x3472) (not x3468) (not x2165))
+(or (not x2750) (not x2563) x3487 x2753 x2565)
+(or (not x3472) (not x3468) x692)
+(or (not x2749) (not x2561) x3487 x2750 x2563)
+(or (not x3472) (not x3465) (not x2166))
+(or (not x2746) (not x2559) x3487 x2749 x2561)
+(or (not x3472) (not x3465) x687)
+(or (not x2745) (not x2557) x3487 x2746 x2559)
+(or (not x3472) (not x3462) (not x2167))
+(or x3487 x2745 x2557)
+(or (not x3472) (not x3462) x678)
+(or (not x2753) (not x2565) x3487)
+(or (not x3472) (not x3459) (not x2168))
+(or (not x3487) (not x2565) x2753)
+(or (not x3472) (not x3459))
+(or (not x3487) (not x2753) x2565)
+(or (not x3472) (not x3457) (not x2169))
+(or (not x3487) (not x2563) x2750)
+(or (not x3472) (not x3457) x665)
+(or (not x3487) (not x2750) x2563)
+(or (not x3472) x3468 x3465 x3462 x3459 x3457)
+(or (not x3487) (not x2561) x2749)
+(or (not x3472) (not x3459))
+(or (not x3487) (not x2749) x2561)
+(or (not x3472) (not x3448))
+(or (not x3487) (not x2559) x2746)
+(or (not x3472) (not x3437))
+(or (not x3487) (not x2746) x2559)
+(or (not x3472) (not x2972))
+(or (not x3487) (not x2557) x2745)
+(or (not x3459) (not x3455) (not x2165))
+(or (not x3487) (not x2745) x2557)
+(or (not x3459) (not x3455) x692)
+(or (not x52) x3486 x3484 x2552)
+(or (not x3459) (not x3453) (not x2166))
+(or (not x3486) (not x2552) (not x52) x3484)
+(or (not x3459) (not x3453) x687)
+(or (not x3486) x3484 x2552 x52)
+(or (not x3459) (not x3451) (not x2167))
+(or (not x2552) x3486 x3484 x52)
+(or (not x3459) (not x3451) x678)
+(or (not x3484) (not x50) x3486 x3483 x2550)
+(or (not x3459) (not x3448) (not x2168))
+(or (not x3486) (not x3484) (not x2550) (not x50) x3483)
+(or (not x3459) (not x3448))
+(or (not x3486) (not x3484) x3483 x2550 x50)
+(or (not x3459) (not x3446) (not x2169))
+(or (not x3484) (not x2550) x3486 x3483 x50)
+(or (not x3459) (not x3446) x665)
+(or (not x3483) (not x48) x3486 x3482 x2547)
+(or (not x3459) x3455 x3453 x3451 x3448 x3446)
+(or (not x3486) (not x3483) (not x2547) (not x48) x3482)
+(or (not x3459) (not x3448))
+(or (not x3486) (not x3483) x3482 x2547 x48)
+(or (not x3459) (not x3437))
+(or (not x3483) (not x2547) x3486 x3482 x48)
+(or (not x3459) (not x2972))
+(or (not x3482) (not x46) x3486 x3481 x2544)
+(or (not x3448) (not x3444) (not x2165))
+(or (not x3486) (not x3482) (not x2544) (not x46) x3481)
+(or (not x3448) (not x3444) x692)
+(or (not x3486) (not x3482) x3481 x2544 x46)
+(or (not x3448) (not x3442) (not x2166))
+(or (not x3482) (not x2544) x3486 x3481 x46)
+(or (not x3448) (not x3442) x687)
+(or (not x3481) (not x44) x3486 x3480 x2541)
+(or (not x3448) (not x3439) (not x2167))
+(or (not x3486) (not x3481) (not x2541) (not x44) x3480)
+(or (not x3448) (not x3439) x678)
+(or (not x3486) (not x3481) x3480 x2541 x44)
+(or (not x3448) (not x3437) (not x2168))
+(or (not x3481) (not x2541) x3486 x3480 x44)
+(or (not x3448) (not x3437))
+(or (not x3480) (not x149) x3486 x3479 x2538)
+(or (not x3448) (not x3435) (not x2169))
+(or (not x3486) (not x3480) (not x2538) (not x149) x3479)
+(or (not x3448) (not x3435) x665)
+(or (not x3486) (not x3480) x3479 x2538 x149)
+(or (not x3448) x3444 x3442 x3439 x3437 x3435)
+(or (not x3480) (not x2538) x3486 x3479 x149)
+(or (not x3448) (not x3437))
+(or (not x3486) (not x3485))
+(or (not x3448) (not x2972))
+(or (not x3479) x3485)
+(or (not x3437) (not x3433) (not x2165))
+(or (not x3485) x3479)
+(or (not x3437) (not x3433) x692)
+(or x3484 x2725 x2552)
+(or (not x3437) (not x3319) (not x2166))
+(or (not x2725) (not x2552) x3484)
+(or (not x3437) (not x3319) x687)
+(or (not x3484) (not x2552) x2725)
+(or (not x3437) (not x3141) (not x2167))
+(or (not x3484) (not x2725) x2552)
+(or (not x3437) (not x3141) x678)
+(or (not x3484) x3483 x2722 x2550)
+(or (not x3437) (not x2972) (not x2168))
+(or (not x3484) (not x2722) (not x2550) x3483)
+(or (not x3437) (not x2972))
+(or (not x3483) (not x2550) x2722)
+(or (not x3437) (not x2802) (not x2169))
+(or (not x3483) (not x2722) x2550)
+(or (not x3437) (not x2802) x665)
+(or (not x3483) x3484)
+(or (not x3437) x3433 x3319 x3141 x2972 x2802)
+(or (not x3483) x3482 x2718 x2547)
+(or (not x3437) (not x2972))
+(or (not x3483) (not x2718) (not x2547) x3482)
+(or (not x2972) x658)
+(or (not x3482) (not x2547) x2718)
+(or (not x2168) x3472 x3459 x3448 x3437 x2972)
+(or (not x3482) (not x2718) x2547)
+(or (not x3470) (not x3468) (not x2165))
+(or (not x3482) x3483)
+(or (not x3470) (not x3468) x691)
+(or (not x3482) x3481 x2714 x2544)
+(or (not x3470) (not x3465) (not x2166))
+(or (not x3482) (not x2714) (not x2544) x3481)
+(or (not x3470) (not x3465) x686)
+(or (not x3481) (not x2544) x2714)
+(or (not x3470) (not x3462) (not x2167))
+(or (not x3481) (not x2714) x2544)
+(or (not x3470) (not x3462) x677)
+(or (not x3481) x3482)
+(or (not x3470) (not x3459) (not x2168))
+(or (not x3481) x3480 x2711 x2541)
+(or (not x3470) (not x3459) x671)
+(or (not x3481) (not x2711) (not x2541) x3480)
+(or (not x3470) (not x3457) (not x2169))
+(or (not x3480) (not x2541) x2711)
+(or (not x3470) (not x3457))
+(or (not x3480) (not x2711) x2541)
+(or (not x3470) x3468 x3465 x3462 x3459 x3457)
+(or (not x3480) x3481)
+(or (not x3470) (not x3457))
+(or (not x3480) x3479 x2708 x2538)
+(or (not x3470) (not x3446))
+(or (not x3480) (not x2708) (not x2538) x3479)
+(or (not x3470) (not x3435))
+(or (not x3479) (not x2538) x2708)
+(or (not x3470) (not x2802))
+(or (not x3479) (not x2708) x2538)
+(or (not x3457) (not x3455) (not x2165))
+(or (not x3479) x3480)
+(or (not x3457) (not x3455) x691)
+(or (not x3466) (not x2190) (not x2170))
+(or (not x3457) (not x3453) (not x2166))
+(or (not x2190) (not x2170) x3463)
+(or (not x3457) (not x3453) x686)
+(or (not x3466) (not x2190) (not x2171) x95)
+(or (not x3457) (not x3451) (not x2167))
+(or (not x2190) (not x2171) (not x95) x3466)
+(or (not x3457) (not x3451) x677)
+(or (not x3463) (not x2190) (not x2171))
+(or (not x3457) (not x3448) (not x2168))
+(or (not x3466) (not x2190) (not x2172) x94)
+(or (not x3457) (not x3448) x671)
+(or (not x2190) (not x2172) (not x94) x3466)
+(or (not x3457) (not x3446) (not x2169))
+(or (not x3463) (not x2190) (not x2172))
+(or (not x3457) (not x3446))
+(or (not x3466) (not x2190) (not x2173) x92)
+(or (not x3457) x3455 x3453 x3451 x3448 x3446)
+(or (not x2190) (not x2173) (not x92) x3466)
+(or (not x3457) (not x3446))
+(or (not x3463) (not x2190) (not x2173))
+(or (not x3457) (not x3435))
+(or (not x3466) (not x2190) (not x2174) x91)
+(or (not x3457) (not x2802))
+(or (not x2190) (not x2174) (not x91) x3466)
+(or (not x3446) (not x3444) (not x2165))
+(or (not x3463) (not x2190) (not x2174))
+(or (not x3446) (not x3444) x691)
+(or (not x3466) (not x2191) (not x2170) x89)
+(or (not x3446) (not x3442) (not x2166))
+(or (not x2191) (not x2170) (not x89) x3466)
+(or (not x3446) (not x3442) x686)
+(or (not x3463) (not x2191) (not x2170))
+(or (not x3446) (not x3439) (not x2167))
+(or (not x3466) (not x2191) (not x2171))
+(or (not x3446) (not x3439) x677)
+(or (not x2191) (not x2171) x3463)
+(or (not x3446) (not x3437) (not x2168))
+(or (not x3466) (not x2191) (not x2172) x88)
+(or (not x3446) (not x3437) x671)
+(or (not x2191) (not x2172) (not x88) x3466)
+(or (not x3446) (not x3435) (not x2169))
+(or (not x3463) (not x2191) (not x2172))
+(or (not x3446) (not x3435))
+(or (not x3466) (not x2191) (not x2173) x87)
+(or (not x3446) x3444 x3442 x3439 x3437 x3435)
+(or (not x2191) (not x2173) (not x87) x3466)
+(or (not x3446) (not x3435))
+(or (not x3463) (not x2191) (not x2173))
+(or (not x3446) (not x2802))
+(or (not x3466) (not x2191) (not x2174) x86)
+(or (not x3435) (not x3433) (not x2165))
+(or (not x2191) (not x2174) (not x86) x3466)
+(or (not x3435) (not x3433) x691)
+(or (not x3463) (not x2191) (not x2174))
+(or (not x3435) (not x3319) (not x2166))
+(or (not x3466) (not x2192) (not x2170) x82)
+(or (not x3435) (not x3319) x686)
+(or (not x2192) (not x2170) (not x82) x3466)
+(or (not x3435) (not x3141) (not x2167))
+(or (not x3463) (not x2192) (not x2170))
+(or (not x3435) (not x3141) x677)
+(or (not x3466) (not x2192) (not x2171) x81)
+(or (not x3435) (not x2972) (not x2168))
+(or (not x2192) (not x2171) (not x81) x3466)
+(or (not x3435) (not x2972) x671)
+(or (not x3463) (not x2192) (not x2171))
+(or (not x3435) (not x2802) (not x2169))
+(or (not x3466) (not x2192) (not x2172))
+(or (not x3435) (not x2802))
+(or (not x2192) (not x2172) x3463)
+(or (not x3435) x3433 x3319 x3141 x2972 x2802)
+(or (not x3466) (not x2192) (not x2173) x79)
+(or (not x3435) (not x2802))
+(or (not x2192) (not x2173) (not x79) x3466)
+(or (not x2802) x657)
+(or (not x3463) (not x2192) (not x2173))
+(or (not x2169) x3470 x3457 x3446 x3435 x2802)
+(or (not x3466) (not x2192) (not x2174) x77)
+(or (not x3478) (not x3475))
+(or (not x2192) (not x2174) (not x77) x3466)
+(or (not x3478) x3477 x3475)
+(or (not x3463) (not x2192) (not x2174))
+(or (not x3475) x3478 x3477)
+(or (not x3466) (not x2193) (not x2170) x73)
+(or (not x3477) x3478 x3475)
+(or (not x2193) (not x2170) (not x73) x3466)
+(or (not x3476) (not x3473))
+(or (not x3463) (not x2193) (not x2170))
+(or (not x3476) x3475 x3473)
+(or (not x3466) (not x2193) (not x2171) x67)
+(or (not x3473) x3476 x3475)
+(or (not x2193) (not x2171) (not x67) x3466)
+(or (not x3475) x3476 x3473)
+(or (not x3463) (not x2193) (not x2171))
+(or (not x3474) (not x3471))
+(or (not x3466) (not x2193) (not x2172) x66)
+(or (not x3474) x3473 x3471)
+(or (not x2193) (not x2172) (not x66) x3466)
+(or (not x3471) x3474 x3473)
+(or (not x3463) (not x2193) (not x2172))
+(or (not x3473) x3474 x3471)
+(or (not x3466) (not x2193) (not x2173))
+(or (not x3472) (not x3469))
+(or (not x2193) (not x2173) x3463)
+(or (not x3472) x3471 x3469)
+(or (not x3466) (not x2193) (not x2174) x65)
+(or (not x3469) x3472 x3471)
+(or (not x2193) (not x2174) (not x65) x3466)
+(or (not x3471) x3472 x3469)
+(or (not x3463) (not x2193) (not x2174))
+(or (not x3466) (not x2194) (not x2170) x58)
+(or (not x3470) x3469)
+(or (not x2194) (not x2170) (not x58) x3466)
+(or (not x3463) (not x2194) (not x2170))
+(or (not x3469) x3470)
+(or (not x3466) (not x2194) (not x2171) x57)
+(or (not x2194) (not x2171) (not x57) x3466)
+(or (not x3463) (not x2194) (not x2171))
+(or (not x3468) (not x3464))
+(or (not x3466) (not x2194) (not x2172) x56)
+(or (not x3468) x3467 x3464)
+(or (not x2194) (not x2172) (not x56) x3466)
+(or (not x3464) x3468 x3467)
+(or (not x3463) (not x2194) (not x2172))
+(or (not x3467) x3468 x3464)
+(or (not x3466) (not x2194) (not x2173) x55)
+(or (not x3465) (not x3461))
+(or (not x2194) (not x2173) (not x55) x3466)
+(or (not x3465) x3464 x3461)
+(or (not x3463) (not x2194) (not x2173))
+(or (not x3461) x3465 x3464)
+(or (not x3466) (not x2194) (not x2174))
+(or (not x3464) x3465 x3461)
+(or (not x2194) (not x2174) x3463)
+(or (not x3462) (not x3458))
+(or (not x3460) (not x3428) (not x3418) x3449 x3440)
+(or (not x3462) x3461 x3458)
+(or (not x3460) (not x3418) x3430 x3428)
+(or (not x3458) x3462 x3461)
+(or (not x3460) x3419 x3418)
+(or (not x3461) x3462 x3458)
+(or (not x3440) (not x3428) (not x3418) x3460)
+(or (not x3459) (not x3456))
+(or (not x3449) (not x3428) (not x3418) x3460)
+(or (not x3459) x3458 x3456)
+(or (not x3430) (not x3418) x3460)
+(or (not x3456) x3459 x3458)
+(or (not x3419) x3460)
+(or (not x3458) x3459 x3456)
+(or (not x3449) (not x3440))
+(or (not x2753) x3449 x2564 x2283)
+(or (not x3457) x3456)
+(or (not x3449) (not x2753) (not x2283) x2564)
+(or (not x3449) (not x2564) x2753 x2283)
+(or (not x3456) x3457)
+(or (not x2564) (not x2283) x3449 x2753)
+(or (not x2750) x3449 x2562 x2283)
+(or (not x3449) (not x2750) (not x2283) x2562)
+(or (not x3455) (not x3452))
+(or (not x3449) (not x2562) x2750 x2283)
+(or (not x3455) x3454 x3452)
+(or (not x2562) (not x2283) x3449 x2750)
+(or (not x3452) x3455 x3454)
+(or (not x2749) x3449 x2560 x2283)
+(or (not x3454) x3455 x3452)
+(or (not x3449) (not x2749) (not x2283) x2560)
+(or (not x3453) (not x3450))
+(or (not x3449) (not x2560) x2749 x2283)
+(or (not x3453) x3452 x3450)
+(or (not x2560) (not x2283) x3449 x2749)
+(or (not x3450) x3453 x3452)
+(or (not x2746) x3449 x2558 x2283)
+(or (not x3452) x3453 x3450)
+(or (not x3449) (not x2746) (not x2283) x2558)
+(or (not x3451) (not x3447))
+(or (not x3449) (not x2558) x2746 x2283)
+(or (not x3451) x3450 x3447)
+(or (not x2558) (not x2283) x3449 x2746)
+(or (not x3447) x3451 x3450)
+(or (not x2745) x3449 x2556 x2283)
+(or (not x3450) x3451 x3447)
+(or (not x3449) (not x2745) (not x2283) x2556)
+(or (not x3448) (not x3445))
+(or (not x3449) (not x2556) x2745 x2283)
+(or (not x3448) x3447 x3445)
+(or (not x2556) (not x2283) x3449 x2745)
+(or (not x3445) x3448 x3447)
+(or (not x2750) (not x2562) x3440 x2753 x2564)
+(or (not x3447) x3448 x3445)
+(or (not x2749) (not x2560) x3440 x2750 x2562)
+(or (not x2746) (not x2558) x3440 x2749 x2560)
+(or (not x3446) x3445)
+(or (not x2745) (not x2556) x3440 x2746 x2558)
+(or x3440 x2745 x2556)
+(or (not x3445) x3446)
+(or (not x2753) (not x2564) x3440)
+(or (not x3440) (not x2564) x2753)
+(or (not x3440) (not x2753) x2564)
+(or (not x3444) (not x3441))
+(or (not x3440) (not x2562) x2750)
+(or (not x3444) x3443 x3441)
+(or (not x3440) (not x2750) x2562)
+(or (not x3441) x3444 x3443)
+(or (not x3440) (not x2560) x2749)
+(or (not x3443) x3444 x3441)
+(or (not x3440) (not x2749) x2560)
+(or (not x3442) (not x3438))
+(or (not x3440) (not x2558) x2746)
+(or (not x3442) x3441 x3438)
+(or (not x3440) (not x2746) x2558)
+(or (not x3438) x3442 x3441)
+(or (not x3440) (not x2556) x2745)
+(or (not x3441) x3442 x3438)
+(or (not x3440) (not x2745) x2556)
+(or (not x3439) (not x3436))
+(or (not x52) x3430 x3425 x2551)
+(or (not x3439) x3438 x3436)
+(or (not x3430) (not x2551) (not x52) x3425)
+(or (not x3436) x3439 x3438)
+(or (not x3430) x3425 x2551 x52)
+(or (not x3438) x3439 x3436)
+(or (not x2551) x3430 x3425 x52)
+(or (not x3437) (not x3434))
+(or (not x3425) (not x50) x3430 x3424 x2549)
+(or (not x3437) x3436 x3434)
+(or (not x3430) (not x3425) (not x2549) (not x50) x3424)
+(or (not x3434) x3437 x3436)
+(or (not x3430) (not x3425) x3424 x2549 x50)
+(or (not x3436) x3437 x3434)
+(or (not x3425) (not x2549) x3430 x3424 x50)
+(or (not x3424) (not x48) x3430 x3423 x2546)
+(or (not x3435) x3434)
+(or (not x3430) (not x3424) (not x2546) (not x48) x3423)
+(or (not x3430) (not x3424) x3423 x2546 x48)
+(or (not x3434) x3435)
+(or (not x3424) (not x2546) x3430 x3423 x48)
+(or (not x3423) (not x46) x3430 x3422 x2543)
+(or (not x3430) (not x3423) (not x2543) (not x46) x3422)
+(or (not x3433) (not x3431))
+(or (not x3430) (not x3423) x3422 x2543 x46)
+(or (not x3433) x3432 x3431)
+(or (not x3423) (not x2543) x3430 x3422 x46)
+(or (not x3431) x3433 x3432)
+(or (not x3422) (not x44) x3430 x3421 x2540)
+(or (not x3432) x3433 x3431)
+(or (not x3430) (not x3422) (not x2540) (not x44) x3421)
+(or (not x3319) (not x3429))
+(or (not x3430) (not x3422) x3421 x2540 x44)
+(or (not x3319) x3431 x3429)
+(or (not x3422) (not x2540) x3430 x3421 x44)
+(or (not x3429) x3319 x3431)
+(or (not x3421) (not x149) x3430 x3420 x2537)
+(or (not x3431) x3319 x3429)
+(or (not x3430) (not x3421) (not x2537) (not x149) x3420)
+(or (not x3141) (not x3427))
+(or (not x3430) (not x3421) x3420 x2537 x149)
+(or (not x3141) x3429 x3427)
+(or (not x3421) (not x2537) x3430 x3420 x149)
+(or (not x3427) x3141 x3429)
+(or (not x3430) (not x3428))
+(or (not x3429) x3141 x3427)
+(or (not x3420) x3428)
+(or (not x2972) (not x3426))
+(or (not x3428) x3420)
+(or (not x2972) x3427 x3426)
+(or x3425 x2725 x2551)
+(or (not x3426) x2972 x3427)
+(or (not x2725) (not x2551) x3425)
+(or (not x3427) x2972 x3426)
+(or (not x3425) (not x2551) x2725)
+(or (not x3425) (not x2725) x2551)
+(or (not x2802) x3426)
+(or (not x3425) x3424 x2722 x2549)
+(or (not x3425) (not x2722) (not x2549) x3424)
+(or (not x3426) x2802)
+(or (not x3424) (not x2549) x2722)
+(or (not x3424) (not x2722) x2549)
+(or (not x3424) x3425)
+(or (not x3424) x3423 x2718 x2546)
+(or (not x3424) (not x2718) (not x2546) x3423)
+(or (not x3423) (not x2546) x2718)
+(or (not x3423) (not x2718) x2546)
+(or (not x3423) x3424)
+(or (not x3423) x3422 x2714 x2543)
+(or (not x3423) (not x2714) (not x2543) x3422)
+(or (not x3392) (not x3381) (not x1283))
+(or (not x3422) (not x2543) x2714)
+(or (not x3392) (not x3381))
+(or (not x3422) (not x2714) x2543)
+(or (not x3392) (not x3379) (not x1281))
+(or (not x3422) x3423)
+(or (not x3392) (not x3379) x639)
+(or (not x3422) x3421 x2711 x2540)
+(or (not x3392) (not x3377) (not x1279))
+(or (not x3422) (not x2711) (not x2540) x3421)
+(or (not x3392) (not x3377) x634)
+(or (not x3421) (not x2540) x2711)
+(or (not x3392) (not x3375) (not x1276))
+(or (not x3421) (not x2711) x2540)
+(or (not x3392) (not x3375) x629)
+(or (not x3421) x3422)
+(or (not x3392) (not x3373) x621)
+(or (not x3421) x3420 x2708 x2537)
+(or (not x3392) x3381 x3379 x3377 x3375 x3373)
+(or (not x3421) (not x2708) (not x2537) x3420)
+(or (not x3392) (not x3381))
+(or (not x3420) (not x2537) x2708)
+(or (not x3392) (not x3370))
+(or (not x3420) (not x2708) x2537)
+(or (not x3392) (not x3356))
+(or (not x3420) x3421)
+(or (not x3392) (not x2532))
+(or (not x3419) (not x2190) (not x2165))
+(or (not x3392) (not x3338))
+(or (not x2190) (not x2165) x3418)
+(or (not x3419) (not x2190) (not x2166) x95)
+(or (not x2190) (not x2166) (not x95) x3419)
+(or (not x3381) (not x3370) (not x1283))
+(or (not x3418) (not x2190) (not x2166))
+(or (not x3381) (not x3370))
+(or (not x3419) (not x2190) (not x2167) x94)
+(or (not x3381) (not x3366) (not x1281))
+(or (not x2190) (not x2167) (not x94) x3419)
+(or (not x3381) (not x3366) x639)
+(or (not x3418) (not x2190) (not x2167))
+(or (not x3381) (not x3364) (not x1279))
+(or (not x3419) (not x2190) (not x2168) x92)
+(or (not x3381) (not x3364) x634)
+(or (not x2190) (not x2168) (not x92) x3419)
+(or (not x3381) (not x3361) (not x1276))
+(or (not x3418) (not x2190) (not x2168))
+(or (not x3381) (not x3361) x629)
+(or (not x3419) (not x2190) (not x2169) x91)
+(or (not x3381) (not x3359) x621)
+(or (not x2190) (not x2169) (not x91) x3419)
+(or (not x3381) x3370 x3366 x3364 x3361 x3359)
+(or (not x3418) (not x2190) (not x2169))
+(or (not x3381) (not x3370))
+(or (not x3419) (not x2191) (not x2165) x89)
+(or (not x3381) (not x3356))
+(or (not x2191) (not x2165) (not x89) x3419)
+(or (not x3381) (not x2532))
+(or (not x3418) (not x2191) (not x2165))
+(or (not x3381) (not x3338))
+(or (not x3419) (not x2191) (not x2166))
+(or (not x2191) (not x2166) x3418)
+(or (not x3419) (not x2191) (not x2167) x88)
+(or (not x3370) (not x3356) (not x1283))
+(or (not x2191) (not x2167) (not x88) x3419)
+(or (not x3370) (not x3356))
+(or (not x3418) (not x2191) (not x2167))
+(or (not x3370) (not x3354) (not x1281))
+(or (not x3419) (not x2191) (not x2168) x87)
+(or (not x3370) (not x3354) x639)
+(or (not x2191) (not x2168) (not x87) x3419)
+(or (not x3370) (not x3352) (not x1279))
+(or (not x3418) (not x2191) (not x2168))
+(or (not x3370) (not x3352) x634)
+(or (not x3419) (not x2191) (not x2169) x86)
+(or (not x3370) (not x3349) (not x1276))
+(or (not x2191) (not x2169) (not x86) x3419)
+(or (not x3370) (not x3349) x629)
+(or (not x3418) (not x2191) (not x2169))
+(or (not x3370) (not x3347) x621)
+(or (not x3419) (not x2192) (not x2165) x82)
+(or (not x3370) x3356 x3354 x3352 x3349 x3347)
+(or (not x2192) (not x2165) (not x82) x3419)
+(or (not x3370) (not x3356))
+(or (not x3418) (not x2192) (not x2165))
+(or (not x3370) (not x2532))
+(or (not x3419) (not x2192) (not x2166) x81)
+(or (not x3370) (not x3338))
+(or (not x2192) (not x2166) (not x81) x3419)
+(or (not x3418) (not x2192) (not x2166))
+(or (not x3419) (not x2192) (not x2167))
+(or (not x3356) (not x2532) (not x1283))
+(or (not x2192) (not x2167) x3418)
+(or (not x3356) (not x2532))
+(or (not x3419) (not x2192) (not x2168) x79)
+(or (not x3356) (not x2531) (not x1281))
+(or (not x2192) (not x2168) (not x79) x3419)
+(or (not x3356) (not x2531) x639)
+(or (not x3418) (not x2192) (not x2168))
+(or (not x3356) (not x2530) (not x1279))
+(or (not x3419) (not x2192) (not x2169) x77)
+(or (not x3356) (not x2530) x634)
+(or (not x2192) (not x2169) (not x77) x3419)
+(or (not x3356) (not x2529) (not x1276))
+(or (not x3418) (not x2192) (not x2169))
+(or (not x3356) (not x2529) x629)
+(or (not x3419) (not x2193) (not x2165) x73)
+(or (not x3356) (not x2528) x621)
+(or (not x2193) (not x2165) (not x73) x3419)
+(or (not x3356) x2532 x2531 x2530 x2529 x2528)
+(or (not x3418) (not x2193) (not x2165))
+(or (not x3356) (not x2532))
+(or (not x3419) (not x2193) (not x2166) x67)
+(or (not x3356) (not x3338))
+(or (not x2193) (not x2166) (not x67) x3419)
+(or (not x2532) (not x1284))
+(or (not x3418) (not x2193) (not x2166))
+(or (not x2532) x655)
+(or (not x3419) (not x2193) (not x2167) x66)
+(or (not x2532) (not x3338) (not x1283))
+(or (not x2193) (not x2167) (not x66) x3419)
+(or (not x2532) (not x3338))
+(or (not x3418) (not x2193) (not x2167))
+(or (not x2532) (not x3337) (not x1281))
+(or (not x3419) (not x2193) (not x2168))
+(or (not x2532) (not x3337) x639)
+(or (not x2193) (not x2168) x3418)
+(or (not x2532) (not x3335) (not x1279))
+(or (not x3419) (not x2193) (not x2169) x65)
+(or (not x2532) (not x3335) x634)
+(or (not x2193) (not x2169) (not x65) x3419)
+(or (not x2532) (not x3331) (not x1276))
+(or (not x3418) (not x2193) (not x2169))
+(or (not x2532) (not x3331) x629)
+(or (not x3419) (not x2194) (not x2165) x58)
+(or (not x2532) (not x3329) x621)
+(or (not x2194) (not x2165) (not x58) x3419)
+(or (not x2532) (not x3338))
+(or (not x3418) (not x2194) (not x2165))
+(or (not x1283) x3392 x3381 x3370 x3356 x2532 x3338)
+(or (not x3419) (not x2194) (not x2166) x57)
+(or (not x2194) (not x2166) (not x57) x3419)
+(or (not x3418) (not x2194) (not x2166))
+(or (not x3390) (not x3381) (not x1283))
+(or (not x3419) (not x2194) (not x2167) x56)
+(or (not x3390) (not x3381) x644)
+(or (not x2194) (not x2167) (not x56) x3419)
+(or (not x3390) (not x3379) (not x1281))
+(or (not x3418) (not x2194) (not x2167))
+(or (not x3390) (not x3379))
+(or (not x3419) (not x2194) (not x2168) x55)
+(or (not x3390) (not x3377) (not x1279))
+(or (not x2194) (not x2168) (not x55) x3419)
+(or (not x3390) (not x3377) x633)
+(or (not x3418) (not x2194) (not x2168))
+(or (not x3390) (not x3375) (not x1276))
+(or (not x3419) (not x2194) (not x2169))
+(or (not x3390) (not x3375) x626)
+(or (not x2194) (not x2169) x3418)
+(or (not x3390) (not x3373) x620)
+(or (not x3319) (not x69) (not x6) x3417)
+(or (not x3390) x3381 x3379 x3377 x3375 x3373)
+(or (not x3417) (not x3413) (not x3405) x3416 x3415)
+(or (not x3390) (not x3379))
+(or (not x3417) (not x3405) x3414 x3413)
+(or (not x3390) (not x3366))
+(or (not x3417) x3406 x3405)
+(or (not x3390) (not x3354))
+(or (not x3415) (not x3413) (not x3405) x3417)
+(or (not x3390) (not x2531))
+(or (not x3416) (not x3413) (not x3405) x3417)
+(or (not x3390) (not x3337))
+(or (not x3414) (not x3405) x3417)
+(or (not x3406) x3417)
+(or (not x3416) (not x3415))
+(or (not x3379) (not x3370) (not x1283))
+(or (not x2692) x3416 x2753 x2281)
+(or (not x3379) (not x3370) x644)
+(or (not x3416) (not x2692) (not x2281) x2753)
+(or (not x3379) (not x3366) (not x1281))
+(or (not x3416) (not x2753) x2692 x2281)
+(or (not x3379) (not x3366))
+(or (not x2753) (not x2281) x3416 x2692)
+(or (not x3379) (not x3364) (not x1279))
+(or (not x2691) x3416 x2750 x2281)
+(or (not x3379) (not x3364) x633)
+(or (not x3416) (not x2691) (not x2281) x2750)
+(or (not x3379) (not x3361) (not x1276))
+(or (not x3416) (not x2750) x2691 x2281)
+(or (not x3379) (not x3361) x626)
+(or (not x2750) (not x2281) x3416 x2691)
+(or (not x3379) (not x3359) x620)
+(or (not x2690) x3416 x2749 x2281)
+(or (not x3379) x3370 x3366 x3364 x3361 x3359)
+(or (not x3416) (not x2690) (not x2281) x2749)
+(or (not x3379) (not x3366))
+(or (not x3416) (not x2749) x2690 x2281)
+(or (not x3379) (not x3354))
+(or (not x2749) (not x2281) x3416 x2690)
+(or (not x3379) (not x2531))
+(or (not x2689) x3416 x2746 x2281)
+(or (not x3379) (not x3337))
+(or (not x3416) (not x2689) (not x2281) x2746)
+(or (not x3416) (not x2746) x2689 x2281)
+(or (not x2746) (not x2281) x3416 x2689)
+(or (not x3366) (not x3356) (not x1283))
+(or (not x2688) x3416 x2745 x2281)
+(or (not x3366) (not x3356) x644)
+(or (not x3416) (not x2688) (not x2281) x2745)
+(or (not x3366) (not x3354) (not x1281))
+(or (not x3416) (not x2745) x2688 x2281)
+(or (not x3366) (not x3354))
+(or (not x2745) (not x2281) x3416 x2688)
+(or (not x3366) (not x3352) (not x1279))
+(or (not x2750) (not x2691) x3415 x2753 x2692)
+(or (not x3366) (not x3352) x633)
+(or (not x2749) (not x2690) x3415 x2750 x2691)
+(or (not x3366) (not x3349) (not x1276))
+(or (not x2746) (not x2689) x3415 x2749 x2690)
+(or (not x3366) (not x3349) x626)
+(or (not x2745) (not x2688) x3415 x2746 x2689)
+(or (not x3366) (not x3347) x620)
+(or x3415 x2745 x2688)
+(or (not x3366) x3356 x3354 x3352 x3349 x3347)
+(or (not x2753) (not x2692) x3415)
+(or (not x3366) (not x3354))
+(or (not x3415) (not x2753) x2692)
+(or (not x3366) (not x2531))
+(or (not x3415) (not x2692) x2753)
+(or (not x3366) (not x3337))
+(or (not x3415) (not x2750) x2691)
+(or (not x3415) (not x2691) x2750)
+(or (not x3415) (not x2749) x2690)
+(or (not x3354) (not x2532) (not x1283))
+(or (not x3415) (not x2690) x2749)
+(or (not x3354) (not x2532) x644)
+(or (not x3415) (not x2746) x2689)
+(or (not x3354) (not x2531) (not x1281))
+(or (not x3415) (not x2689) x2746)
+(or (not x3354) (not x2531))
+(or (not x3415) (not x2745) x2688)
+(or (not x3354) (not x2530) (not x1279))
+(or (not x3415) (not x2688) x2745)
+(or (not x3354) (not x2530) x633)
+(or (not x52) x3414 x3412 x2725)
+(or (not x3354) (not x2529) (not x1276))
+(or (not x3414) (not x2725) (not x52) x3412)
+(or (not x3354) (not x2529) x626)
+(or (not x3414) x3412 x2725 x52)
+(or (not x3354) (not x2528) x620)
+(or (not x2725) x3414 x3412 x52)
+(or (not x3354) x2532 x2531 x2530 x2529 x2528)
+(or (not x3412) (not x50) x3414 x3411 x2722)
+(or (not x3354) (not x2531))
+(or (not x3414) (not x3412) (not x2722) (not x50) x3411)
+(or (not x3354) (not x3337))
+(or (not x3414) (not x3412) x3411 x2722 x50)
+(or (not x2531) (not x1284))
+(or (not x3412) (not x2722) x3414 x3411 x50)
+(or (not x2531) x653)
+(or (not x3411) (not x48) x3414 x3410 x2718)
+(or (not x2531) (not x3338) (not x1283))
+(or (not x3414) (not x3411) (not x2718) (not x48) x3410)
+(or (not x2531) (not x3338) x644)
+(or (not x3414) (not x3411) x3410 x2718 x48)
+(or (not x2531) (not x3337) (not x1281))
+(or (not x3411) (not x2718) x3414 x3410 x48)
+(or (not x2531) (not x3337))
+(or (not x3410) (not x46) x3414 x3409 x2714)
+(or (not x2531) (not x3335) (not x1279))
+(or (not x3414) (not x3410) (not x2714) (not x46) x3409)
+(or (not x2531) (not x3335) x633)
+(or (not x3414) (not x3410) x3409 x2714 x46)
+(or (not x2531) (not x3331) (not x1276))
+(or (not x3410) (not x2714) x3414 x3409 x46)
+(or (not x2531) (not x3331) x626)
+(or (not x3409) (not x44) x3414 x3408 x2711)
+(or (not x2531) (not x3329) x620)
+(or (not x3414) (not x3409) (not x2711) (not x44) x3408)
+(or (not x2531) (not x3337))
+(or (not x3414) (not x3409) x3408 x2711 x44)
+(or (not x1281) x3390 x3379 x3366 x3354 x2531 x3337)
+(or (not x3409) (not x2711) x3414 x3408 x44)
+(or (not x3408) (not x149) x3414 x3407 x2708)
+(or (not x3414) (not x3408) (not x2708) (not x149) x3407)
+(or (not x3388) (not x3381) (not x1283))
+(or (not x3414) (not x3408) x3407 x2708 x149)
+(or (not x3388) (not x3381) x643)
+(or (not x3408) (not x2708) x3414 x3407 x149)
+(or (not x3388) (not x3379) (not x1281))
+(or (not x3414) (not x3413))
+(or (not x3388) (not x3379) x638)
+(or (not x3407) x3413)
+(or (not x3388) (not x3377) (not x1279))
+(or (not x3413) x3407)
+(or (not x3388) (not x3377))
+(or x3412 x2725 x2684)
+(or (not x3388) (not x3375) (not x1276))
+(or (not x2725) (not x2684) x3412)
+(or (not x3388) (not x3375) x625)
+(or (not x3412) (not x2725) x2684)
+(or (not x3388) (not x3373) x619)
+(or (not x3412) (not x2684) x2725)
+(or (not x3388) x3381 x3379 x3377 x3375 x3373)
+(or (not x3412) x3411 x2722 x2683)
+(or (not x3388) (not x3377))
+(or (not x3412) (not x2722) (not x2683) x3411)
+(or (not x3388) (not x3364))
+(or (not x3411) (not x2722) x2683)
+(or (not x3388) (not x3352))
+(or (not x3411) (not x2683) x2722)
+(or (not x3388) (not x2530))
+(or (not x3411) x3412)
+(or (not x3388) (not x3335))
+(or (not x3411) x3410 x2718 x2681)
+(or (not x3411) (not x2718) (not x2681) x3410)
+(or (not x3410) (not x2718) x2681)
+(or (not x3377) (not x3370) (not x1283))
+(or (not x3410) (not x2681) x2718)
+(or (not x3377) (not x3370) x643)
+(or (not x3410) x3411)
+(or (not x3377) (not x3366) (not x1281))
+(or (not x3410) x3409 x2714 x2679)
+(or (not x3377) (not x3366) x638)
+(or (not x3410) (not x2714) (not x2679) x3409)
+(or (not x3377) (not x3364) (not x1279))
+(or (not x3409) (not x2714) x2679)
+(or (not x3377) (not x3364))
+(or (not x3409) (not x2679) x2714)
+(or (not x3377) (not x3361) (not x1276))
+(or (not x3409) x3410)
+(or (not x3377) (not x3361) x625)
+(or (not x3409) x3408 x2711 x2677)
+(or (not x3377) (not x3359) x619)
+(or (not x3409) (not x2711) (not x2677) x3408)
+(or (not x3377) x3370 x3366 x3364 x3361 x3359)
+(or (not x3408) (not x2711) x2677)
+(or (not x3377) (not x3364))
+(or (not x3408) (not x2677) x2711)
+(or (not x3377) (not x3352))
+(or (not x3408) x3409)
+(or (not x3377) (not x2530))
+(or (not x3408) x3407 x2708 x2675)
+(or (not x3377) (not x3335))
+(or (not x3408) (not x2708) (not x2675) x3407)
+(or (not x3407) (not x2708) x2675)
+(or (not x3407) (not x2675) x2708)
+(or (not x3364) (not x3356) (not x1283))
+(or (not x3407) x3408)
+(or (not x3364) (not x3356) x643)
+(or (not x3406) (not x2190) (not x2185))
+(or (not x3364) (not x3354) (not x1281))
+(or (not x2190) (not x2185) x3405)
+(or (not x3364) (not x3354) x638)
+(or (not x3406) (not x2191) (not x2185) x95)
+(or (not x3364) (not x3352) (not x1279))
+(or (not x2191) (not x2185) (not x95) x3406)
+(or (not x3364) (not x3352))
+(or (not x3405) (not x2191) (not x2185))
+(or (not x3364) (not x3349) (not x1276))
+(or (not x3406) (not x2192) (not x2185) x94)
+(or (not x3364) (not x3349) x625)
+(or (not x2192) (not x2185) (not x94) x3406)
+(or (not x3364) (not x3347) x619)
+(or (not x3405) (not x2192) (not x2185))
+(or (not x3364) x3356 x3354 x3352 x3349 x3347)
+(or (not x3406) (not x2193) (not x2185) x92)
+(or (not x3364) (not x3352))
+(or (not x2193) (not x2185) (not x92) x3406)
+(or (not x3364) (not x2530))
+(or (not x3405) (not x2193) (not x2185))
+(or (not x3364) (not x3335))
+(or (not x3406) (not x2194) (not x2185) x91)
+(or (not x2194) (not x2185) (not x91) x3406)
+(or (not x3405) (not x2194) (not x2185))
+(or (not x3352) (not x2532) (not x1283))
+(or (not x3406) (not x2190) (not x2186) x89)
+(or (not x3352) (not x2532) x643)
+(or (not x2190) (not x2186) (not x89) x3406)
+(or (not x3352) (not x2531) (not x1281))
+(or (not x3405) (not x2190) (not x2186))
+(or (not x3352) (not x2531) x638)
+(or (not x3406) (not x2191) (not x2186))
+(or (not x3352) (not x2530) (not x1279))
+(or (not x2191) (not x2186) x3405)
+(or (not x3352) (not x2530))
+(or (not x3406) (not x2192) (not x2186) x88)
+(or (not x3352) (not x2529) (not x1276))
+(or (not x2192) (not x2186) (not x88) x3406)
+(or (not x3352) (not x2529) x625)
+(or (not x3405) (not x2192) (not x2186))
+(or (not x3352) (not x2528) x619)
+(or (not x3406) (not x2193) (not x2186) x87)
+(or (not x3352) x2532 x2531 x2530 x2529 x2528)
+(or (not x2193) (not x2186) (not x87) x3406)
+(or (not x3352) (not x2530))
+(or (not x3405) (not x2193) (not x2186))
+(or (not x3352) (not x3335))
+(or (not x3406) (not x2194) (not x2186) x86)
+(or (not x2530) (not x1284))
+(or (not x2194) (not x2186) (not x86) x3406)
+(or (not x2530) x651)
+(or (not x3405) (not x2194) (not x2186))
+(or (not x2530) (not x3338) (not x1283))
+(or (not x3406) (not x2190) (not x2187) x82)
+(or (not x2530) (not x3338) x643)
+(or (not x2190) (not x2187) (not x82) x3406)
+(or (not x2530) (not x3337) (not x1281))
+(or (not x3405) (not x2190) (not x2187))
+(or (not x2530) (not x3337) x638)
+(or (not x3406) (not x2191) (not x2187) x81)
+(or (not x2530) (not x3335) (not x1279))
+(or (not x2191) (not x2187) (not x81) x3406)
+(or (not x2530) (not x3335))
+(or (not x3405) (not x2191) (not x2187))
+(or (not x2530) (not x3331) (not x1276))
+(or (not x3406) (not x2192) (not x2187))
+(or (not x2530) (not x3331) x625)
+(or (not x2192) (not x2187) x3405)
+(or (not x2530) (not x3329) x619)
+(or (not x3406) (not x2193) (not x2187) x79)
+(or (not x2530) (not x3335))
+(or (not x2193) (not x2187) (not x79) x3406)
+(or (not x1279) x3388 x3377 x3364 x3352 x2530 x3335)
+(or (not x3405) (not x2193) (not x2187))
+(or (not x3406) (not x2194) (not x2187) x77)
+(or (not x2194) (not x2187) (not x77) x3406)
+(or (not x3386) (not x3381) (not x1283))
+(or (not x3405) (not x2194) (not x2187))
+(or (not x3386) (not x3381) x642)
+(or (not x3406) (not x2190) (not x2188) x73)
+(or (not x3386) (not x3379) (not x1281))
+(or (not x2190) (not x2188) (not x73) x3406)
+(or (not x3386) (not x3379) x637)
+(or (not x3405) (not x2190) (not x2188))
+(or (not x3386) (not x3377) (not x1279))
+(or (not x3406) (not x2191) (not x2188) x67)
+(or (not x3386) (not x3377) x632)
+(or (not x2191) (not x2188) (not x67) x3406)
+(or (not x3386) (not x3375) (not x1276))
+(or (not x3405) (not x2191) (not x2188))
+(or (not x3386) (not x3375))
+(or (not x3406) (not x2192) (not x2188) x66)
+(or (not x3386) (not x3373) x616)
+(or (not x2192) (not x2188) (not x66) x3406)
+(or (not x3386) x3381 x3379 x3377 x3375 x3373)
+(or (not x3405) (not x2192) (not x2188))
+(or (not x3386) (not x3375))
+(or (not x3406) (not x2193) (not x2188))
+(or (not x3386) (not x3361))
+(or (not x2193) (not x2188) x3405)
+(or (not x3386) (not x3349))
+(or (not x3406) (not x2194) (not x2188) x65)
+(or (not x3386) (not x2529))
+(or (not x2194) (not x2188) (not x65) x3406)
+(or (not x3386) (not x3331))
+(or (not x3405) (not x2194) (not x2188))
+(or (not x3406) (not x2190) (not x2189) x58)
+(or (not x2190) (not x2189) (not x58) x3406)
+(or (not x3375) (not x3370) (not x1283))
+(or (not x3405) (not x2190) (not x2189))
+(or (not x3375) (not x3370) x642)
+(or (not x3406) (not x2191) (not x2189) x57)
+(or (not x3375) (not x3366) (not x1281))
+(or (not x2191) (not x2189) (not x57) x3406)
+(or (not x3375) (not x3366) x637)
+(or (not x3405) (not x2191) (not x2189))
+(or (not x3375) (not x3364) (not x1279))
+(or (not x3406) (not x2192) (not x2189) x56)
+(or (not x3375) (not x3364) x632)
+(or (not x2192) (not x2189) (not x56) x3406)
+(or (not x3375) (not x3361) (not x1276))
+(or (not x3405) (not x2192) (not x2189))
+(or (not x3375) (not x3361))
+(or (not x3406) (not x2193) (not x2189) x55)
+(or (not x3375) (not x3359) x616)
+(or (not x2193) (not x2189) (not x55) x3406)
+(or (not x3375) x3370 x3366 x3364 x3361 x3359)
+(or (not x3405) (not x2193) (not x2189))
+(or (not x3375) (not x3361))
+(or (not x3406) (not x2194) (not x2189))
+(or (not x3375) (not x3349))
+(or (not x2194) (not x2189) x3405)
+(or (not x3375) (not x2529))
+(or (not x3319) (not x69) (not x8) x3404)
+(or (not x3375) (not x3331))
+(or (not x3404) (not x3400) (not x3367) x3403 x3402)
+(or (not x3404) (not x3367) x3401 x3400)
+(or (not x3404) x3368 x3367)
+(or (not x3361) (not x3356) (not x1283))
+(or (not x3402) (not x3400) (not x3367) x3404)
+(or (not x3361) (not x3356) x642)
+(or (not x3403) (not x3400) (not x3367) x3404)
+(or (not x3361) (not x3354) (not x1281))
+(or (not x3401) (not x3367) x3404)
+(or (not x3361) (not x3354) x637)
+(or (not x3368) x3404)
+(or (not x3361) (not x3352) (not x1279))
+(or (not x3403) (not x3402))
+(or (not x3361) (not x3352) x632)
+(or (not x2692) x3403 x2668 x2281)
+(or (not x3361) (not x3349) (not x1276))
+(or (not x3403) (not x2692) (not x2281) x2668)
+(or (not x3361) (not x3349))
+(or (not x3403) (not x2668) x2692 x2281)
+(or (not x3361) (not x3347) x616)
+(or (not x2668) (not x2281) x3403 x2692)
+(or (not x3361) x3356 x3354 x3352 x3349 x3347)
+(or (not x2691) x3403 x2667 x2281)
+(or (not x3361) (not x3349))
+(or (not x3403) (not x2691) (not x2281) x2667)
+(or (not x3361) (not x2529))
+(or (not x3403) (not x2667) x2691 x2281)
+(or (not x3361) (not x3331))
+(or (not x2667) (not x2281) x3403 x2691)
+(or (not x2690) x3403 x2666 x2281)
+(or (not x3403) (not x2690) (not x2281) x2666)
+(or (not x3349) (not x2532) (not x1283))
+(or (not x3403) (not x2666) x2690 x2281)
+(or (not x3349) (not x2532) x642)
+(or (not x2666) (not x2281) x3403 x2690)
+(or (not x3349) (not x2531) (not x1281))
+(or (not x2689) x3403 x2665 x2281)
+(or (not x3349) (not x2531) x637)
+(or (not x3403) (not x2689) (not x2281) x2665)
+(or (not x3349) (not x2530) (not x1279))
+(or (not x3403) (not x2665) x2689 x2281)
+(or (not x3349) (not x2530) x632)
+(or (not x2665) (not x2281) x3403 x2689)
+(or (not x3349) (not x2529) (not x1276))
+(or (not x2688) x3403 x2664 x2281)
+(or (not x3349) (not x2529))
+(or (not x3403) (not x2688) (not x2281) x2664)
+(or (not x3349) (not x2528) x616)
+(or (not x3403) (not x2664) x2688 x2281)
+(or (not x3349) x2532 x2531 x2530 x2529 x2528)
+(or (not x2664) (not x2281) x3403 x2688)
+(or (not x3349) (not x2529))
+(or (not x2691) (not x2667) x3402 x2692 x2668)
+(or (not x3349) (not x3331))
+(or (not x2690) (not x2666) x3402 x2691 x2667)
+(or (not x2529) (not x1284))
+(or (not x2689) (not x2665) x3402 x2690 x2666)
+(or (not x2529) x650)
+(or (not x2688) (not x2664) x3402 x2689 x2665)
+(or (not x2529) (not x3338) (not x1283))
+(or x3402 x2688 x2664)
+(or (not x2529) (not x3338) x642)
+(or (not x2692) (not x2668) x3402)
+(or (not x2529) (not x3337) (not x1281))
+(or (not x3402) (not x2668) x2692)
+(or (not x2529) (not x3337) x637)
+(or (not x3402) (not x2692) x2668)
+(or (not x2529) (not x3335) (not x1279))
+(or (not x3402) (not x2667) x2691)
+(or (not x2529) (not x3335) x632)
+(or (not x3402) (not x2691) x2667)
+(or (not x2529) (not x3331) (not x1276))
+(or (not x3402) (not x2666) x2690)
+(or (not x2529) (not x3331))
+(or (not x3402) (not x2690) x2666)
+(or (not x2529) (not x3329) x616)
+(or (not x3402) (not x2665) x2689)
+(or (not x2529) (not x3331))
+(or (not x3402) (not x2689) x2665)
+(or (not x1276) x3386 x3375 x3361 x3349 x2529 x3331)
+(or (not x3402) (not x2664) x2688)
+(or (not x3402) (not x2688) x2664)
+(or (not x52) x3401 x3399 x2660)
+(or (not x3384) (not x3381) (not x1283))
+(or (not x3401) (not x2660) (not x52) x3399)
+(or (not x3384) (not x3381) x641)
+(or (not x3401) x3399 x2660 x52)
+(or (not x3384) (not x3379) (not x1281))
+(or (not x2660) x3401 x3399 x52)
+(or (not x3384) (not x3379) x636)
+(or (not x3399) (not x50) x3401 x3398 x2659)
+(or (not x3384) (not x3377) (not x1279))
+(or (not x3401) (not x3399) (not x2659) (not x50) x3398)
+(or (not x3384) (not x3377) x631)
+(or (not x3401) (not x3399) x3398 x2659 x50)
+(or (not x3384) (not x3375) (not x1276))
+(or (not x3399) (not x2659) x3401 x3398 x50)
+(or (not x3384) (not x3375) x623)
+(or (not x3398) (not x48) x3401 x3397 x2657)
+(or (not x3384) (not x3373))
+(or (not x3401) (not x3398) (not x2657) (not x48) x3397)
+(or (not x3384) x3381 x3379 x3377 x3375 x3373)
+(or (not x3401) (not x3398) x3397 x2657 x48)
+(or (not x3384) (not x3373))
+(or (not x3398) (not x2657) x3401 x3397 x48)
+(or (not x3384) (not x3359))
+(or (not x3397) (not x46) x3401 x3396 x2655)
+(or (not x3384) (not x3347))
+(or (not x3401) (not x3397) (not x2655) (not x46) x3396)
+(or (not x3384) (not x2528))
+(or (not x3401) (not x3397) x3396 x2655 x46)
+(or (not x3384) (not x3329))
+(or (not x3397) (not x2655) x3401 x3396 x46)
+(or (not x3396) (not x44) x3401 x3395 x2653)
+(or (not x3401) (not x3396) (not x2653) (not x44) x3395)
+(or (not x3373) (not x3370) (not x1283))
+(or (not x3401) (not x3396) x3395 x2653 x44)
+(or (not x3373) (not x3370) x641)
+(or (not x3396) (not x2653) x3401 x3395 x44)
+(or (not x3373) (not x3366) (not x1281))
+(or (not x3395) (not x149) x3401 x3394 x2651)
+(or (not x3373) (not x3366) x636)
+(or (not x3401) (not x3395) (not x2651) (not x149) x3394)
+(or (not x3373) (not x3364) (not x1279))
+(or (not x3401) (not x3395) x3394 x2651 x149)
+(or (not x3373) (not x3364) x631)
+(or (not x3395) (not x2651) x3401 x3394 x149)
+(or (not x3373) (not x3361) (not x1276))
+(or (not x3401) (not x3400))
+(or (not x3373) (not x3361) x623)
+(or (not x3394) x3400)
+(or (not x3373) (not x3359))
+(or (not x3400) x3394)
+(or (not x3373) x3370 x3366 x3364 x3361 x3359)
+(or x3399 x2684 x2660)
+(or (not x3373) (not x3359))
+(or (not x2684) (not x2660) x3399)
+(or (not x3373) (not x3347))
+(or (not x3399) (not x2660) x2684)
+(or (not x3373) (not x2528))
+(or (not x3399) (not x2684) x2660)
+(or (not x3373) (not x3329))
+(or (not x3399) x3398 x2683 x2659)
+(or (not x3399) (not x2683) (not x2659) x3398)
+(or (not x3398) (not x2659) x2683)
+(or (not x3359) (not x3356) (not x1283))
+(or (not x3398) (not x2683) x2659)
+(or (not x3359) (not x3356) x641)
+(or (not x3398) x3399)
+(or (not x3359) (not x3354) (not x1281))
+(or (not x3398) x3397 x2681 x2657)
+(or (not x3359) (not x3354) x636)
+(or (not x3398) (not x2681) (not x2657) x3397)
+(or (not x3359) (not x3352) (not x1279))
+(or (not x3397) (not x2657) x2681)
+(or (not x3359) (not x3352) x631)
+(or (not x3397) (not x2681) x2657)
+(or (not x3359) (not x3349) (not x1276))
+(or (not x3397) x3398)
+(or (not x3359) (not x3349) x623)
+(or (not x3397) x3396 x2679 x2655)
+(or (not x3359) (not x3347))
+(or (not x3397) (not x2679) (not x2655) x3396)
+(or (not x3359) x3356 x3354 x3352 x3349 x3347)
+(or (not x3396) (not x2655) x2679)
+(or (not x3359) (not x3347))
+(or (not x3396) (not x2679) x2655)
+(or (not x3359) (not x2528))
+(or (not x3396) x3397)
+(or (not x3359) (not x3329))
+(or (not x3396) x3395 x2677 x2653)
+(or (not x3396) (not x2677) (not x2653) x3395)
+(or (not x3395) (not x2653) x2677)
+(or (not x3347) (not x2532) (not x1283))
+(or (not x3395) (not x2677) x2653)
+(or (not x3347) (not x2532) x641)
+(or (not x3395) x3396)
+(or (not x3347) (not x2531) (not x1281))
+(or (not x3395) x3394 x2675 x2651)
+(or (not x3347) (not x2531) x636)
+(or (not x3395) (not x2675) (not x2651) x3394)
+(or (not x3347) (not x2530) (not x1279))
+(or (not x3394) (not x2651) x2675)
+(or (not x3347) (not x2530) x631)
+(or (not x3394) (not x2675) x2651)
+(or (not x3347) (not x2529) (not x1276))
+(or (not x3394) x3395)
+(or (not x3347) (not x2529) x623)
+(or (not x3368) (not x2185) (not x2180))
+(or (not x3347) (not x2528))
+(or (not x2185) (not x2180) x3367)
+(or (not x3347) x2532 x2531 x2530 x2529 x2528)
+(or (not x3368) (not x2185) (not x2181) x95)
+(or (not x3347) (not x2528))
+(or (not x2185) (not x2181) (not x95) x3368)
+(or (not x3347) (not x3329))
+(or (not x3367) (not x2185) (not x2181))
+(or (not x2528) (not x1284))
+(or (not x3368) (not x2185) (not x2182) x94)
+(or (not x2528) x648)
+(or (not x2185) (not x2182) (not x94) x3368)
+(or (not x2528) (not x3338) (not x1283))
+(or (not x3367) (not x2185) (not x2182))
+(or (not x2528) (not x3338) x641)
+(or (not x3368) (not x2185) (not x2183) x92)
+(or (not x2528) (not x3337) (not x1281))
+(or (not x2185) (not x2183) (not x92) x3368)
+(or (not x2528) (not x3337) x636)
+(or (not x3367) (not x2185) (not x2183))
+(or (not x2528) (not x3335) (not x1279))
+(or (not x3368) (not x2185) (not x2184) x91)
+(or (not x2528) (not x3335) x631)
+(or (not x2185) (not x2184) (not x91) x3368)
+(or (not x2528) (not x3331) (not x1276))
+(or (not x3367) (not x2185) (not x2184))
+(or (not x2528) (not x3331) x623)
+(or (not x3368) (not x2186) (not x2180) x89)
+(or (not x2528) (not x3329))
+(or (not x2186) (not x2180) (not x89) x3368)
+(or (not x2528) (not x3329))
+(or (not x3367) (not x2186) (not x2180))
+(or (not x3368) (not x2186) (not x2181))
+(or (not x2186) (not x2181) x3367)
+(or (not x3391) x3393)
+(or (not x3368) (not x2186) (not x2182) x88)
+(or (not x3393) x3391)
+(or (not x2186) (not x2182) (not x88) x3368)
+(or (not x3392) (not x3389))
+(or (not x3367) (not x2186) (not x2182))
+(or (not x3392) x3391 x3389)
+(or (not x3368) (not x2186) (not x2183) x87)
+(or (not x3389) x3392 x3391)
+(or (not x2186) (not x2183) (not x87) x3368)
+(or (not x3391) x3392 x3389)
+(or (not x3367) (not x2186) (not x2183))
+(or (not x3390) (not x3387))
+(or (not x3368) (not x2186) (not x2184) x86)
+(or (not x3390) x3389 x3387)
+(or (not x2186) (not x2184) (not x86) x3368)
+(or (not x3387) x3390 x3389)
+(or (not x3367) (not x2186) (not x2184))
+(or (not x3389) x3390 x3387)
+(or (not x3368) (not x2187) (not x2180) x82)
+(or (not x3388) (not x3385))
+(or (not x2187) (not x2180) (not x82) x3368)
+(or (not x3388) x3387 x3385)
+(or (not x3367) (not x2187) (not x2180))
+(or (not x3385) x3388 x3387)
+(or (not x3368) (not x2187) (not x2181) x81)
+(or (not x3387) x3388 x3385)
+(or (not x2187) (not x2181) (not x81) x3368)
+(or (not x3386) (not x3383))
+(or (not x3367) (not x2187) (not x2181))
+(or (not x3386) x3385 x3383)
+(or (not x3368) (not x2187) (not x2182))
+(or (not x3383) x3386 x3385)
+(or (not x2187) (not x2182) x3367)
+(or (not x3385) x3386 x3383)
+(or (not x3368) (not x2187) (not x2183) x79)
+(or (not x3384) x3383)
+(or (not x2187) (not x2183) (not x79) x3368)
+(or (not x3383) x3384)
+(or (not x3367) (not x2187) (not x2183))
+(or (not x3368) (not x2187) (not x2184) x77)
+(or (not x2187) (not x2184) (not x77) x3368)
+(or (not x3380) x3382)
+(or (not x3367) (not x2187) (not x2184))
+(or (not x3382) x3380)
+(or (not x3368) (not x2188) (not x2180) x73)
+(or (not x3381) (not x3378))
+(or (not x2188) (not x2180) (not x73) x3368)
+(or (not x3381) x3380 x3378)
+(or (not x3367) (not x2188) (not x2180))
+(or (not x3378) x3381 x3380)
+(or (not x3368) (not x2188) (not x2181) x67)
+(or (not x3380) x3381 x3378)
+(or (not x2188) (not x2181) (not x67) x3368)
+(or (not x3379) (not x3376))
+(or (not x3367) (not x2188) (not x2181))
+(or (not x3379) x3378 x3376)
+(or (not x3368) (not x2188) (not x2182) x66)
+(or (not x3376) x3379 x3378)
+(or (not x2188) (not x2182) (not x66) x3368)
+(or (not x3378) x3379 x3376)
+(or (not x3367) (not x2188) (not x2182))
+(or (not x3377) (not x3374))
+(or (not x3368) (not x2188) (not x2183))
+(or (not x3377) x3376 x3374)
+(or (not x2188) (not x2183) x3367)
+(or (not x3374) x3377 x3376)
+(or (not x3368) (not x2188) (not x2184) x65)
+(or (not x3376) x3377 x3374)
+(or (not x2188) (not x2184) (not x65) x3368)
+(or (not x3375) (not x3372))
+(or (not x3367) (not x2188) (not x2184))
+(or (not x3375) x3374 x3372)
+(or (not x3368) (not x2189) (not x2180) x58)
+(or (not x3372) x3375 x3374)
+(or (not x2189) (not x2180) (not x58) x3368)
+(or (not x3374) x3375 x3372)
+(or (not x3367) (not x2189) (not x2180))
+(or (not x3373) x3372)
+(or (not x3368) (not x2189) (not x2181) x57)
+(or (not x3372) x3373)
+(or (not x2189) (not x2181) (not x57) x3368)
+(or (not x3367) (not x2189) (not x2181))
+(or (not x3368) (not x2189) (not x2182) x56)
+(or (not x3369) x3371)
+(or (not x2189) (not x2182) (not x56) x3368)
+(or (not x3371) x3369)
+(or (not x3367) (not x2189) (not x2182))
+(or (not x3370) (not x3365))
+(or (not x3368) (not x2189) (not x2183) x55)
+(or (not x3370) x3369 x3365)
+(or (not x2189) (not x2183) (not x55) x3368)
+(or (not x3365) x3370 x3369)
+(or (not x3367) (not x2189) (not x2183))
+(or (not x3369) x3370 x3365)
+(or (not x3368) (not x2189) (not x2184))
+(or (not x3366) (not x3363))
+(or (not x2189) (not x2184) x3367)
+(or (not x3366) x3365 x3363)
+(or (not x3319) (not x69) (not x9) x3362)
+(or (not x3363) x3366 x3365)
+(or (not x3362) (not x3332) (not x3320) x3350 x3343)
+(or (not x3365) x3366 x3363)
+(or (not x3362) (not x3320) x3333 x3332)
+(or (not x3364) (not x3360))
+(or (not x3362) x3321 x3320)
+(or (not x3364) x3363 x3360)
+(or (not x3343) (not x3332) (not x3320) x3362)
+(or (not x3360) x3364 x3363)
+(or (not x3350) (not x3332) (not x3320) x3362)
+(or (not x3363) x3364 x3360)
+(or (not x3333) (not x3320) x3362)
+(or (not x3361) (not x3358))
+(or (not x3321) x3362)
+(or (not x3361) x3360 x3358)
+(or (not x3350) (not x3343))
+(or (not x3358) x3361 x3360)
+(or (not x2692) x3350 x2598 x2281)
+(or (not x3360) x3361 x3358)
+(or (not x3350) (not x2692) (not x2281) x2598)
+(or (not x3359) x3358)
+(or (not x3350) (not x2598) x2692 x2281)
+(or (not x3358) x3359)
+(or (not x2598) (not x2281) x3350 x2692)
+(or (not x2691) x3350 x2596 x2281)
+(or (not x3350) (not x2691) (not x2281) x2596)
+(or (not x3355) x3357)
+(or (not x3350) (not x2596) x2691 x2281)
+(or (not x3357) x3355)
+(or (not x2596) (not x2281) x3350 x2691)
+(or (not x3356) (not x3353))
+(or (not x2690) x3350 x2595 x2281)
+(or (not x3356) x3355 x3353)
+(or (not x3350) (not x2690) (not x2281) x2595)
+(or (not x3353) x3356 x3355)
+(or (not x3350) (not x2595) x2690 x2281)
+(or (not x3355) x3356 x3353)
+(or (not x2595) (not x2281) x3350 x2690)
+(or (not x3354) (not x3351))
+(or (not x2689) x3350 x2593 x2281)
+(or (not x3354) x3353 x3351)
+(or (not x3350) (not x2689) (not x2281) x2593)
+(or (not x3351) x3354 x3353)
+(or (not x3350) (not x2593) x2689 x2281)
+(or (not x3353) x3354 x3351)
+(or (not x2593) (not x2281) x3350 x2689)
+(or (not x3352) (not x3348))
+(or (not x2688) x3350 x2592 x2281)
+(or (not x3352) x3351 x3348)
+(or (not x3350) (not x2688) (not x2281) x2592)
+(or (not x3348) x3352 x3351)
+(or (not x3350) (not x2592) x2688 x2281)
+(or (not x3351) x3352 x3348)
+(or (not x2592) (not x2281) x3350 x2688)
+(or (not x3349) (not x3346))
+(or (not x2691) (not x2596) x3343 x2692 x2598)
+(or (not x3349) x3348 x3346)
+(or (not x2690) (not x2595) x3343 x2691 x2596)
+(or (not x3346) x3349 x3348)
+(or (not x2689) (not x2593) x3343 x2690 x2595)
+(or (not x3348) x3349 x3346)
+(or (not x2688) (not x2592) x3343 x2689 x2593)
+(or (not x3347) x3346)
+(or x3343 x2688 x2592)
+(or (not x3346) x3347)
+(or (not x2692) (not x2598) x3343)
+(or (not x3343) (not x2598) x2692)
+(or (not x3343) (not x2692) x2598)
+(or (not x3344) x3345)
+(or (not x3343) (not x2596) x2691)
+(or (not x3345) x3344)
+(or (not x3343) (not x2691) x2596)
+(or (not x2532) (not x3342))
+(or (not x3343) (not x2595) x2690)
+(or (not x2532) x3344 x3342)
+(or (not x3343) (not x2690) x2595)
+(or (not x3342) x2532 x3344)
+(or (not x3343) (not x2593) x2689)
+(or (not x3344) x2532 x3342)
+(or (not x3343) (not x2689) x2593)
+(or (not x2531) (not x3341))
+(or (not x3343) (not x2592) x2688)
+(or (not x2531) x3342 x3341)
+(or (not x3343) (not x2688) x2592)
+(or (not x3341) x2531 x3342)
+(or (not x52) x3333 x3327 x2581)
+(or (not x3342) x2531 x3341)
+(or (not x3333) (not x2581) (not x52) x3327)
+(or (not x2530) (not x3340))
+(or (not x3333) x3327 x2581 x52)
+(or (not x2530) x3341 x3340)
+(or (not x2581) x3333 x3327 x52)
+(or (not x3340) x2530 x3341)
+(or (not x3327) (not x50) x3333 x3326 x2580)
+(or (not x3341) x2530 x3340)
+(or (not x3333) (not x3327) (not x2580) (not x50) x3326)
+(or (not x2529) (not x3339))
+(or (not x3333) (not x3327) x3326 x2580 x50)
+(or (not x2529) x3340 x3339)
+(or (not x3327) (not x2580) x3333 x3326 x50)
+(or (not x3339) x2529 x3340)
+(or (not x3326) (not x48) x3333 x3325 x2578)
+(or (not x3340) x2529 x3339)
+(or (not x3333) (not x3326) (not x2578) (not x48) x3325)
+(or (not x2528) x3339)
+(or (not x3333) (not x3326) x3325 x2578 x48)
+(or (not x3339) x2528)
+(or (not x3326) (not x2578) x3333 x3325 x48)
+(or (not x3325) (not x46) x3333 x3324 x2576)
+(or (not x3338) (not x3336))
+(or (not x3333) (not x3325) (not x2576) (not x46) x3324)
+(or (not x3338) x3336)
+(or (not x3333) (not x3325) x3324 x2576 x46)
+(or (not x3336) x3338)
+(or (not x3325) (not x2576) x3333 x3324 x46)
+(or (not x3324) (not x44) x3333 x3323 x2574)
+(or (not x3337) (not x3334))
+(or (not x3333) (not x3324) (not x2574) (not x44) x3323)
+(or (not x3337) x3336 x3334)
+(or (not x3333) (not x3324) x3323 x2574 x44)
+(or (not x3334) x3337 x3336)
+(or (not x3324) (not x2574) x3333 x3323 x44)
+(or (not x3336) x3337 x3334)
+(or (not x3323) (not x149) x3333 x3322 x2572)
+(or (not x3335) (not x3330))
+(or (not x3333) (not x3323) (not x2572) (not x149) x3322)
+(or (not x3335) x3334 x3330)
+(or (not x3333) (not x3323) x3322 x2572 x149)
+(or (not x3330) x3335 x3334)
+(or (not x3323) (not x2572) x3333 x3322 x149)
+(or (not x3334) x3335 x3330)
+(or (not x3333) (not x3332))
+(or (not x3331) (not x3328))
+(or (not x3322) x3332)
+(or (not x3331) x3330 x3328)
+(or (not x3332) x3322)
+(or (not x3328) x3331 x3330)
+(or x3327 x2684 x2581)
+(or (not x3330) x3331 x3328)
+(or (not x2684) (not x2581) x3327)
+(or (not x3329) x3328)
+(or (not x3327) (not x2581) x2684)
+(or (not x3328) x3329)
+(or (not x3327) (not x2684) x2581)
+(or (not x3298) (not x3283) (not x1199))
+(or (not x3327) x3326 x2683 x2580)
+(or (not x3298) (not x3283))
+(or (not x3327) (not x2683) (not x2580) x3326)
+(or (not x3298) (not x3280) (not x1194))
+(or (not x3326) (not x2580) x2683)
+(or (not x3298) (not x3280) x640)
+(or (not x3326) (not x2683) x2580)
+(or (not x3298) (not x3278) (not x1191))
+(or (not x3326) x3327)
+(or (not x3298) (not x3278) x635)
+(or (not x3326) x3325 x2681 x2578)
+(or (not x3298) (not x3276) (not x1188))
+(or (not x3326) (not x2681) (not x2578) x3325)
+(or (not x3298) (not x3276) x630)
+(or (not x3325) (not x2578) x2681)
+(or (not x3298) (not x3274) x622)
+(or (not x3325) (not x2681) x2578)
+(or (not x3298) x3283 x3280 x3278 x3276 x3274)
+(or (not x3325) x3326)
+(or (not x3298) (not x3283))
+(or (not x3325) x3324 x2679 x2576)
+(or (not x3298) (not x3272))
+(or (not x3325) (not x2679) (not x2576) x3324)
+(or (not x3298) (not x3261))
+(or (not x3324) (not x2576) x2679)
+(or (not x3298) (not x2527))
+(or (not x3324) (not x2679) x2576)
+(or (not x3283) (not x3272) (not x1199))
+(or (not x3324) x3325)
+(or (not x3283) (not x3272))
+(or (not x3324) x3323 x2677 x2574)
+(or (not x3283) (not x3269) (not x1194))
+(or (not x3324) (not x2677) (not x2574) x3323)
+(or (not x3283) (not x3269) x640)
+(or (not x3323) (not x2574) x2677)
+(or (not x3283) (not x3267) (not x1191))
+(or (not x3323) (not x2677) x2574)
+(or (not x3283) (not x3267) x635)
+(or (not x3323) x3324)
+(or (not x3283) (not x3265) (not x1188))
+(or (not x3323) x3322 x2675 x2572)
+(or (not x3283) (not x3265) x630)
+(or (not x3323) (not x2675) (not x2572) x3322)
+(or (not x3283) (not x3263) x622)
+(or (not x3322) (not x2572) x2675)
+(or (not x3283) x3272 x3269 x3267 x3265 x3263)
+(or (not x3322) (not x2675) x2572)
+(or (not x3283) (not x3272))
+(or (not x3322) x3323)
+(or (not x3283) (not x3261))
+(or (not x3321) (not x2185) (not x2175))
+(or (not x3283) (not x2527))
+(or (not x2185) (not x2175) x3320)
+(or (not x3272) (not x3261) (not x1199))
+(or (not x3321) (not x2185) (not x2176) x95)
+(or (not x3272) (not x3261))
+(or (not x2185) (not x2176) (not x95) x3321)
+(or (not x3272) (not x3258) (not x1194))
+(or (not x3320) (not x2185) (not x2176))
+(or (not x3272) (not x3258) x640)
+(or (not x3321) (not x2185) (not x2177) x94)
+(or (not x3272) (not x3256) (not x1191))
+(or (not x2185) (not x2177) (not x94) x3321)
+(or (not x3272) (not x3256) x635)
+(or (not x3320) (not x2185) (not x2177))
+(or (not x3272) (not x3252) (not x1188))
+(or (not x3321) (not x2185) (not x2178) x92)
+(or (not x3272) (not x3252) x630)
+(or (not x2185) (not x2178) (not x92) x3321)
+(or (not x3272) (not x3250) x622)
+(or (not x3320) (not x2185) (not x2178))
+(or (not x3272) x3261 x3258 x3256 x3252 x3250)
+(or (not x3321) (not x2185) (not x2179) x91)
+(or (not x3272) (not x3261))
+(or (not x2185) (not x2179) (not x91) x3321)
+(or (not x3272) (not x2527))
+(or (not x3320) (not x2185) (not x2179))
+(or (not x3261) (not x2527) (not x1199))
+(or (not x3321) (not x2186) (not x2175) x89)
+(or (not x3261) (not x2527))
+(or (not x2186) (not x2175) (not x89) x3321)
+(or (not x3261) (not x2526) (not x1194))
+(or (not x3320) (not x2186) (not x2175))
+(or (not x3261) (not x2526) x640)
+(or (not x3321) (not x2186) (not x2176))
+(or (not x3261) (not x2523) (not x1191))
+(or (not x2186) (not x2176) x3320)
+(or (not x3261) (not x2523) x635)
+(or (not x3321) (not x2186) (not x2177) x88)
+(or (not x3261) (not x2520) (not x1188))
+(or (not x2186) (not x2177) (not x88) x3321)
+(or (not x3261) (not x2520) x630)
+(or (not x3320) (not x2186) (not x2177))
+(or (not x3261) (not x2517) x622)
+(or (not x3321) (not x2186) (not x2178) x87)
+(or (not x3261) x2527 x2526 x2523 x2520 x2517)
+(or (not x2186) (not x2178) (not x87) x3321)
+(or (not x3261) (not x2527))
+(or (not x3320) (not x2186) (not x2178))
+(or (not x2527) (not x1197))
+(or (not x3321) (not x2186) (not x2179) x86)
+(or (not x2527) x645)
+(or (not x2186) (not x2179) (not x86) x3321)
+(or (not x2527) (not x3240) (not x1194))
+(or (not x3320) (not x2186) (not x2179))
+(or (not x2527) (not x3240) x640)
+(or (not x3321) (not x2187) (not x2175) x82)
+(or (not x2527) (not x3239) (not x1191))
+(or (not x2187) (not x2175) (not x82) x3321)
+(or (not x2527) (not x3239) x635)
+(or (not x3320) (not x2187) (not x2175))
+(or (not x2527) (not x3237) (not x1188))
+(or (not x3321) (not x2187) (not x2176) x81)
+(or (not x2527) (not x3237) x630)
+(or (not x2187) (not x2176) (not x81) x3321)
+(or (not x2527) (not x3235) x622)
+(or (not x3320) (not x2187) (not x2176))
+(or (not x1199) x3298 x3283 x3272 x3261 x2527)
+(or (not x3321) (not x2187) (not x2177))
+(or (not x3293) (not x3283) (not x1199))
+(or (not x2187) (not x2177) x3320)
+(or (not x3293) (not x3283) x653)
+(or (not x3321) (not x2187) (not x2178) x79)
+(or (not x2187) (not x2178) (not x79) x3321)
+(or (not x3320) (not x2187) (not x2178))
+(or (not x3293) (not x3280) (not x1194))
+(or (not x3321) (not x2187) (not x2179) x77)
+(or (not x3293) (not x3280))
+(or (not x2187) (not x2179) (not x77) x3321)
+(or (not x3293) (not x3278) (not x1191))
+(or (not x3320) (not x2187) (not x2179))
+(or (not x3293) (not x3278) x633)
+(or (not x3321) (not x2188) (not x2175) x73)
+(or (not x3293) (not x3276) (not x1188))
+(or (not x2188) (not x2175) (not x73) x3321)
+(or (not x3293) (not x3276) x626)
+(or (not x3320) (not x2188) (not x2175))
+(or (not x3293) (not x3274) x620)
+(or (not x3321) (not x2188) (not x2176) x67)
+(or (not x3293) x3283 x3280 x3278 x3276 x3274)
+(or (not x2188) (not x2176) (not x67) x3321)
+(or (not x3293) (not x3280))
+(or (not x3320) (not x2188) (not x2176))
+(or (not x3293) (not x3269))
+(or (not x3321) (not x2188) (not x2177) x66)
+(or (not x3293) (not x3258))
+(or (not x2188) (not x2177) (not x66) x3321)
+(or (not x3293) (not x2526))
+(or (not x3320) (not x2188) (not x2177))
+(or (not x3293) (not x3240))
+(or (not x3321) (not x2188) (not x2178))
+(or (not x3280) (not x3272) (not x1199))
+(or (not x2188) (not x2178) x3320)
+(or (not x3280) (not x3272) x653)
+(or (not x3321) (not x2188) (not x2179) x65)
+(or (not x2188) (not x2179) (not x65) x3321)
+(or (not x3320) (not x2188) (not x2179))
+(or (not x3280) (not x3269) (not x1194))
+(or (not x3321) (not x2189) (not x2175) x58)
+(or (not x3280) (not x3269))
+(or (not x2189) (not x2175) (not x58) x3321)
+(or (not x3280) (not x3267) (not x1191))
+(or (not x3320) (not x2189) (not x2175))
+(or (not x3280) (not x3267) x633)
+(or (not x3321) (not x2189) (not x2176) x57)
+(or (not x3280) (not x3265) (not x1188))
+(or (not x2189) (not x2176) (not x57) x3321)
+(or (not x3280) (not x3265) x626)
+(or (not x3320) (not x2189) (not x2176))
+(or (not x3280) (not x3263) x620)
+(or (not x3321) (not x2189) (not x2177) x56)
+(or (not x3280) x3272 x3269 x3267 x3265 x3263)
+(or (not x2189) (not x2177) (not x56) x3321)
+(or (not x3280) (not x3269))
+(or (not x3320) (not x2189) (not x2177))
+(or (not x3280) (not x3258))
+(or (not x3321) (not x2189) (not x2178) x55)
+(or (not x3280) (not x2526))
+(or (not x2189) (not x2178) (not x55) x3321)
+(or (not x3280) (not x3240))
+(or (not x3320) (not x2189) (not x2178))
+(or (not x3269) (not x3261) (not x1199))
+(or (not x3321) (not x2189) (not x2179))
+(or (not x3269) (not x3261) x653)
+(or (not x2189) (not x2179) x3320)
+(or (not x3319) (not x69) (not x10) x3318)
+(or (not x3318) (not x3314) (not x3306) x3317 x3316)
+(or (not x3269) (not x3258) (not x1194))
+(or (not x3318) (not x3306) x3315 x3314)
+(or (not x3269) (not x3258))
+(or (not x3318) x3307 x3306)
+(or (not x3269) (not x3256) (not x1191))
+(or (not x3316) (not x3314) (not x3306) x3318)
+(or (not x3269) (not x3256) x633)
+(or (not x3317) (not x3314) (not x3306) x3318)
+(or (not x3269) (not x3252) (not x1188))
+(or (not x3315) (not x3306) x3318)
+(or (not x3269) (not x3252) x626)
+(or (not x3307) x3318)
+(or (not x3269) (not x3250) x620)
+(or (not x3317) (not x3316))
+(or (not x3269) x3261 x3258 x3256 x3252 x3250)
+(or (not x2692) x3317 x2565 x2281)
+(or (not x3269) (not x3258))
+(or (not x3317) (not x2692) (not x2281) x2565)
+(or (not x3269) (not x2526))
+(or (not x3317) (not x2565) x2692 x2281)
+(or (not x3269) (not x3240))
+(or (not x2565) (not x2281) x3317 x2692)
+(or (not x3258) (not x2527) (not x1199))
+(or (not x2691) x3317 x2563 x2281)
+(or (not x3258) (not x2527) x653)
+(or (not x3317) (not x2691) (not x2281) x2563)
+(or (not x3317) (not x2563) x2691 x2281)
+(or (not x2563) (not x2281) x3317 x2691)
+(or (not x3258) (not x2526) (not x1194))
+(or (not x2690) x3317 x2561 x2281)
+(or (not x3258) (not x2526))
+(or (not x3317) (not x2690) (not x2281) x2561)
+(or (not x3258) (not x2523) (not x1191))
+(or (not x3317) (not x2561) x2690 x2281)
+(or (not x3258) (not x2523) x633)
+(or (not x2561) (not x2281) x3317 x2690)
+(or (not x3258) (not x2520) (not x1188))
+(or (not x2689) x3317 x2559 x2281)
+(or (not x3258) (not x2520) x626)
+(or (not x3317) (not x2689) (not x2281) x2559)
+(or (not x3258) (not x2517) x620)
+(or (not x3317) (not x2559) x2689 x2281)
+(or (not x3258) x2527 x2526 x2523 x2520 x2517)
+(or (not x2559) (not x2281) x3317 x2689)
+(or (not x3258) (not x2526))
+(or (not x2688) x3317 x2557 x2281)
+(or (not x3258) (not x3240))
+(or (not x3317) (not x2688) (not x2281) x2557)
+(or (not x2526) (not x1197))
+(or (not x3317) (not x2557) x2688 x2281)
+(or (not x2526) x644)
+(or (not x2557) (not x2281) x3317 x2688)
+(or (not x2526) (not x3240) (not x1194))
+(or (not x2691) (not x2563) x3316 x2692 x2565)
+(or (not x2526) (not x3240))
+(or (not x2690) (not x2561) x3316 x2691 x2563)
+(or (not x2526) (not x3239) (not x1191))
+(or (not x2689) (not x2559) x3316 x2690 x2561)
+(or (not x2526) (not x3239) x633)
+(or (not x2688) (not x2557) x3316 x2689 x2559)
+(or (not x2526) (not x3237) (not x1188))
+(or x3316 x2688 x2557)
+(or (not x2526) (not x3237) x626)
+(or (not x2692) (not x2565) x3316)
+(or (not x2526) (not x3235) x620)
+(or (not x3316) (not x2565) x2692)
+(or (not x2526) (not x3240))
+(or (not x3316) (not x2692) x2565)
+(or (not x1194) x3293 x3280 x3269 x3258 x2526 x3240)
+(or (not x3316) (not x2563) x2691)
+(or (not x3289) (not x3283) (not x1199))
+(or (not x3316) (not x2691) x2563)
+(or (not x3289) (not x3283) x651)
+(or (not x3316) (not x2561) x2690)
+(or (not x3316) (not x2690) x2561)
+(or (not x3316) (not x2559) x2689)
+(or (not x3289) (not x3280) (not x1194))
+(or (not x3316) (not x2689) x2559)
+(or (not x3289) (not x3280) x638)
+(or (not x3316) (not x2557) x2688)
+(or (not x3289) (not x3278) (not x1191))
+(or (not x3316) (not x2688) x2557)
+(or (not x3289) (not x3278))
+(or (not x52) x3315 x3313 x2552)
+(or (not x3289) (not x3276) (not x1188))
+(or (not x3315) (not x2552) (not x52) x3313)
+(or (not x3289) (not x3276) x625)
+(or (not x3315) x3313 x2552 x52)
+(or (not x3289) (not x3274) x619)
+(or (not x2552) x3315 x3313 x52)
+(or (not x3289) x3283 x3280 x3278 x3276 x3274)
+(or (not x3313) (not x50) x3315 x3312 x2550)
+(or (not x3289) (not x3278))
+(or (not x3315) (not x3313) (not x2550) (not x50) x3312)
+(or (not x3289) (not x3267))
+(or (not x3315) (not x3313) x3312 x2550 x50)
+(or (not x3289) (not x3256))
+(or (not x3313) (not x2550) x3315 x3312 x50)
+(or (not x3289) (not x2523))
+(or (not x3312) (not x48) x3315 x3311 x2547)
+(or (not x3289) (not x3239))
+(or (not x3315) (not x3312) (not x2547) (not x48) x3311)
+(or (not x3278) (not x3272) (not x1199))
+(or (not x3315) (not x3312) x3311 x2547 x48)
+(or (not x3278) (not x3272) x651)
+(or (not x3312) (not x2547) x3315 x3311 x48)
+(or (not x3311) (not x46) x3315 x3310 x2544)
+(or (not x3315) (not x3311) (not x2544) (not x46) x3310)
+(or (not x3278) (not x3269) (not x1194))
+(or (not x3315) (not x3311) x3310 x2544 x46)
+(or (not x3278) (not x3269) x638)
+(or (not x3311) (not x2544) x3315 x3310 x46)
+(or (not x3278) (not x3267) (not x1191))
+(or (not x3310) (not x44) x3315 x3309 x2541)
+(or (not x3278) (not x3267))
+(or (not x3315) (not x3310) (not x2541) (not x44) x3309)
+(or (not x3278) (not x3265) (not x1188))
+(or (not x3315) (not x3310) x3309 x2541 x44)
+(or (not x3278) (not x3265) x625)
+(or (not x3310) (not x2541) x3315 x3309 x44)
+(or (not x3278) (not x3263) x619)
+(or (not x3309) (not x149) x3315 x3308 x2538)
+(or (not x3278) x3272 x3269 x3267 x3265 x3263)
+(or (not x3315) (not x3309) (not x2538) (not x149) x3308)
+(or (not x3278) (not x3267))
+(or (not x3315) (not x3309) x3308 x2538 x149)
+(or (not x3278) (not x3256))
+(or (not x3309) (not x2538) x3315 x3308 x149)
+(or (not x3278) (not x2523))
+(or (not x3315) (not x3314))
+(or (not x3278) (not x3239))
+(or (not x3308) x3314)
+(or (not x3267) (not x3261) (not x1199))
+(or (not x3314) x3308)
+(or (not x3267) (not x3261) x651)
+(or x3313 x2684 x2552)
+(or (not x2684) (not x2552) x3313)
+(or (not x3313) (not x2552) x2684)
+(or (not x3267) (not x3258) (not x1194))
+(or (not x3313) (not x2684) x2552)
+(or (not x3267) (not x3258) x638)
+(or (not x3313) x3312 x2683 x2550)
+(or (not x3267) (not x3256) (not x1191))
+(or (not x3313) (not x2683) (not x2550) x3312)
+(or (not x3267) (not x3256))
+(or (not x3312) (not x2550) x2683)
+(or (not x3267) (not x3252) (not x1188))
+(or (not x3312) (not x2683) x2550)
+(or (not x3267) (not x3252) x625)
+(or (not x3312) x3313)
+(or (not x3267) (not x3250) x619)
+(or (not x3312) x3311 x2681 x2547)
+(or (not x3267) x3261 x3258 x3256 x3252 x3250)
+(or (not x3312) (not x2681) (not x2547) x3311)
+(or (not x3267) (not x3256))
+(or (not x3311) (not x2547) x2681)
+(or (not x3267) (not x2523))
+(or (not x3311) (not x2681) x2547)
+(or (not x3267) (not x3239))
+(or (not x3311) x3312)
+(or (not x3256) (not x2527) (not x1199))
+(or (not x3311) x3310 x2679 x2544)
+(or (not x3256) (not x2527) x651)
+(or (not x3311) (not x2679) (not x2544) x3310)
+(or (not x3310) (not x2544) x2679)
+(or (not x3310) (not x2679) x2544)
+(or (not x3256) (not x2526) (not x1194))
+(or (not x3310) x3311)
+(or (not x3256) (not x2526) x638)
+(or (not x3310) x3309 x2677 x2541)
+(or (not x3256) (not x2523) (not x1191))
+(or (not x3310) (not x2677) (not x2541) x3309)
+(or (not x3256) (not x2523))
+(or (not x3309) (not x2541) x2677)
+(or (not x3256) (not x2520) (not x1188))
+(or (not x3309) (not x2677) x2541)
+(or (not x3256) (not x2520) x625)
+(or (not x3309) x3310)
+(or (not x3256) (not x2517) x619)
+(or (not x3309) x3308 x2675 x2538)
+(or (not x3256) x2527 x2526 x2523 x2520 x2517)
+(or (not x3309) (not x2675) (not x2538) x3308)
+(or (not x3256) (not x2523))
+(or (not x3308) (not x2538) x2675)
+(or (not x3256) (not x3239))
+(or (not x3308) (not x2675) x2538)
+(or (not x2523) (not x1197))
+(or (not x3308) x3309)
+(or (not x2523) x643)
+(or (not x3307) (not x2185) (not x2170))
+(or (not x2523) (not x3240) (not x1194))
+(or (not x2185) (not x2170) x3306)
+(or (not x2523) (not x3240) x638)
+(or (not x3307) (not x2185) (not x2171) x95)
+(or (not x2523) (not x3239) (not x1191))
+(or (not x2185) (not x2171) (not x95) x3307)
+(or (not x2523) (not x3239))
+(or (not x3306) (not x2185) (not x2171))
+(or (not x2523) (not x3237) (not x1188))
+(or (not x3307) (not x2185) (not x2172) x94)
+(or (not x2523) (not x3237) x625)
+(or (not x2185) (not x2172) (not x94) x3307)
+(or (not x2523) (not x3235) x619)
+(or (not x3306) (not x2185) (not x2172))
+(or (not x2523) (not x3239))
+(or (not x3307) (not x2185) (not x2173) x92)
+(or (not x1191) x3289 x3278 x3267 x3256 x2523 x3239)
+(or (not x2185) (not x2173) (not x92) x3307)
+(or (not x3287) (not x3283) (not x1199))
+(or (not x3306) (not x2185) (not x2173))
+(or (not x3287) (not x3283) x650)
+(or (not x3307) (not x2185) (not x2174) x91)
+(or (not x2185) (not x2174) (not x91) x3307)
+(or (not x3306) (not x2185) (not x2174))
+(or (not x3287) (not x3280) (not x1194))
+(or (not x3307) (not x2186) (not x2170) x89)
+(or (not x3287) (not x3280) x637)
+(or (not x2186) (not x2170) (not x89) x3307)
+(or (not x3287) (not x3278) (not x1191))
+(or (not x3306) (not x2186) (not x2170))
+(or (not x3287) (not x3278) x632)
+(or (not x3307) (not x2186) (not x2171))
+(or (not x3287) (not x3276) (not x1188))
+(or (not x2186) (not x2171) x3306)
+(or (not x3287) (not x3276))
+(or (not x3307) (not x2186) (not x2172) x88)
+(or (not x3287) (not x3274) x616)
+(or (not x2186) (not x2172) (not x88) x3307)
+(or (not x3287) x3283 x3280 x3278 x3276 x3274)
+(or (not x3306) (not x2186) (not x2172))
+(or (not x3287) (not x3276))
+(or (not x3307) (not x2186) (not x2173) x87)
+(or (not x3287) (not x3265))
+(or (not x2186) (not x2173) (not x87) x3307)
+(or (not x3287) (not x3252))
+(or (not x3306) (not x2186) (not x2173))
+(or (not x3287) (not x2520))
+(or (not x3307) (not x2186) (not x2174) x86)
+(or (not x3287) (not x3237))
+(or (not x2186) (not x2174) (not x86) x3307)
+(or (not x3276) (not x3272) (not x1199))
+(or (not x3306) (not x2186) (not x2174))
+(or (not x3276) (not x3272) x650)
+(or (not x3307) (not x2187) (not x2170) x82)
+(or (not x2187) (not x2170) (not x82) x3307)
+(or (not x3306) (not x2187) (not x2170))
+(or (not x3276) (not x3269) (not x1194))
+(or (not x3307) (not x2187) (not x2171) x81)
+(or (not x3276) (not x3269) x637)
+(or (not x2187) (not x2171) (not x81) x3307)
+(or (not x3276) (not x3267) (not x1191))
+(or (not x3306) (not x2187) (not x2171))
+(or (not x3276) (not x3267) x632)
+(or (not x3307) (not x2187) (not x2172))
+(or (not x3276) (not x3265) (not x1188))
+(or (not x2187) (not x2172) x3306)
+(or (not x3276) (not x3265))
+(or (not x3307) (not x2187) (not x2173) x79)
+(or (not x3276) (not x3263) x616)
+(or (not x2187) (not x2173) (not x79) x3307)
+(or (not x3276) x3272 x3269 x3267 x3265 x3263)
+(or (not x3306) (not x2187) (not x2173))
+(or (not x3276) (not x3265))
+(or (not x3307) (not x2187) (not x2174) x77)
+(or (not x3276) (not x3252))
+(or (not x2187) (not x2174) (not x77) x3307)
+(or (not x3276) (not x2520))
+(or (not x3306) (not x2187) (not x2174))
+(or (not x3276) (not x3237))
+(or (not x3307) (not x2188) (not x2170) x73)
+(or (not x3265) (not x3261) (not x1199))
+(or (not x2188) (not x2170) (not x73) x3307)
+(or (not x3265) (not x3261) x650)
+(or (not x3306) (not x2188) (not x2170))
+(or (not x3307) (not x2188) (not x2171) x67)
+(or (not x2188) (not x2171) (not x67) x3307)
+(or (not x3265) (not x3258) (not x1194))
+(or (not x3306) (not x2188) (not x2171))
+(or (not x3265) (not x3258) x637)
+(or (not x3307) (not x2188) (not x2172) x66)
+(or (not x3265) (not x3256) (not x1191))
+(or (not x2188) (not x2172) (not x66) x3307)
+(or (not x3265) (not x3256) x632)
+(or (not x3306) (not x2188) (not x2172))
+(or (not x3265) (not x3252) (not x1188))
+(or (not x3307) (not x2188) (not x2173))
+(or (not x3265) (not x3252))
+(or (not x2188) (not x2173) x3306)
+(or (not x3265) (not x3250) x616)
+(or (not x3307) (not x2188) (not x2174) x65)
+(or (not x3265) x3261 x3258 x3256 x3252 x3250)
+(or (not x2188) (not x2174) (not x65) x3307)
+(or (not x3265) (not x3252))
+(or (not x3306) (not x2188) (not x2174))
+(or (not x3265) (not x2520))
+(or (not x3307) (not x2189) (not x2170) x58)
+(or (not x3265) (not x3237))
+(or (not x2189) (not x2170) (not x58) x3307)
+(or (not x3252) (not x2527) (not x1199))
+(or (not x3306) (not x2189) (not x2170))
+(or (not x3252) (not x2527) x650)
+(or (not x3307) (not x2189) (not x2171) x57)
+(or (not x2189) (not x2171) (not x57) x3307)
+(or (not x3306) (not x2189) (not x2171))
+(or (not x3252) (not x2526) (not x1194))
+(or (not x3307) (not x2189) (not x2172) x56)
+(or (not x3252) (not x2526) x637)
+(or (not x2189) (not x2172) (not x56) x3307)
+(or (not x3252) (not x2523) (not x1191))
+(or (not x3306) (not x2189) (not x2172))
+(or (not x3252) (not x2523) x632)
+(or (not x3307) (not x2189) (not x2173) x55)
+(or (not x3252) (not x2520) (not x1188))
+(or (not x2189) (not x2173) (not x55) x3307)
+(or (not x3252) (not x2520))
+(or (not x3306) (not x2189) (not x2173))
+(or (not x3252) (not x2517) x616)
+(or (not x3307) (not x2189) (not x2174))
+(or (not x3252) x2527 x2526 x2523 x2520 x2517)
+(or (not x2189) (not x2174) x3306)
+(or (not x3252) (not x2520))
+(or (not x3305) (not x3301) (not x3253) x3304 x3303)
+(or (not x3252) (not x3237))
+(or (not x3305) (not x3253) x3302 x3301)
+(or (not x2520) (not x1197))
+(or (not x3305) x3254 x3253)
+(or (not x2520) x642)
+(or (not x3303) (not x3301) (not x3253) x3305)
+(or (not x2520) (not x3240) (not x1194))
+(or (not x3304) (not x3301) (not x3253) x3305)
+(or (not x2520) (not x3240) x637)
+(or (not x3302) (not x3253) x3305)
+(or (not x2520) (not x3239) (not x1191))
+(or (not x3254) x3305)
+(or (not x2520) (not x3239) x632)
+(or (not x3304) (not x3303))
+(or (not x2520) (not x3237) (not x1188))
+(or (not x2692) x3304 x2564 x2281)
+(or (not x2520) (not x3237))
+(or (not x3304) (not x2692) (not x2281) x2564)
+(or (not x2520) (not x3235) x616)
+(or (not x3304) (not x2564) x2692 x2281)
+(or (not x2520) (not x3237))
+(or (not x2564) (not x2281) x3304 x2692)
+(or (not x1188) x3287 x3276 x3265 x3252 x2520 x3237)
+(or (not x2691) x3304 x2562 x2281)
+(or (not x3285) (not x3283) (not x1199))
+(or (not x3304) (not x2691) (not x2281) x2562)
+(or (not x3285) (not x3283) x648)
+(or (not x3304) (not x2562) x2691 x2281)
+(or (not x2562) (not x2281) x3304 x2691)
+(or (not x2690) x3304 x2560 x2281)
+(or (not x3285) (not x3280) (not x1194))
+(or (not x3304) (not x2690) (not x2281) x2560)
+(or (not x3285) (not x3280) x636)
+(or (not x3304) (not x2560) x2690 x2281)
+(or (not x3285) (not x3278) (not x1191))
+(or (not x2560) (not x2281) x3304 x2690)
+(or (not x3285) (not x3278) x631)
+(or (not x2689) x3304 x2558 x2281)
+(or (not x3285) (not x3276) (not x1188))
+(or (not x3304) (not x2689) (not x2281) x2558)
+(or (not x3285) (not x3276) x623)
+(or (not x3304) (not x2558) x2689 x2281)
+(or (not x3285) (not x3274))
+(or (not x2558) (not x2281) x3304 x2689)
+(or (not x3285) x3283 x3280 x3278 x3276 x3274)
+(or (not x2688) x3304 x2556 x2281)
+(or (not x3285) (not x3274))
+(or (not x3304) (not x2688) (not x2281) x2556)
+(or (not x3285) (not x3263))
+(or (not x3304) (not x2556) x2688 x2281)
+(or (not x3285) (not x3250))
+(or (not x2556) (not x2281) x3304 x2688)
+(or (not x3285) (not x2517))
+(or (not x2691) (not x2562) x3303 x2692 x2564)
+(or (not x3285) (not x3235))
+(or (not x2690) (not x2560) x3303 x2691 x2562)
+(or (not x3274) (not x3272) (not x1199))
+(or (not x2689) (not x2558) x3303 x2690 x2560)
+(or (not x3274) (not x3272) x648)
+(or (not x2688) (not x2556) x3303 x2689 x2558)
+(or x3303 x2688 x2556)
+(or (not x2692) (not x2564) x3303)
+(or (not x3274) (not x3269) (not x1194))
+(or (not x3303) (not x2564) x2692)
+(or (not x3274) (not x3269) x636)
+(or (not x3303) (not x2692) x2564)
+(or (not x3274) (not x3267) (not x1191))
+(or (not x3303) (not x2562) x2691)
+(or (not x3274) (not x3267) x631)
+(or (not x3303) (not x2691) x2562)
+(or (not x3274) (not x3265) (not x1188))
+(or (not x3303) (not x2560) x2690)
+(or (not x3274) (not x3265) x623)
+(or (not x3303) (not x2690) x2560)
+(or (not x3274) (not x3263))
+(or (not x3303) (not x2558) x2689)
+(or (not x3274) x3272 x3269 x3267 x3265 x3263)
+(or (not x3303) (not x2689) x2558)
+(or (not x3274) (not x3263))
+(or (not x3303) (not x2556) x2688)
+(or (not x3274) (not x3250))
+(or (not x3303) (not x2688) x2556)
+(or (not x3274) (not x2517))
+(or (not x52) x3302 x3300 x2551)
+(or (not x3274) (not x3235))
+(or (not x3302) (not x2551) (not x52) x3300)
+(or (not x3263) (not x3261) (not x1199))
+(or (not x3302) x3300 x2551 x52)
+(or (not x3263) (not x3261) x648)
+(or (not x2551) x3302 x3300 x52)
+(or (not x3300) (not x50) x3302 x3299 x2549)
+(or (not x3302) (not x3300) (not x2549) (not x50) x3299)
+(or (not x3263) (not x3258) (not x1194))
+(or (not x3302) (not x3300) x3299 x2549 x50)
+(or (not x3263) (not x3258) x636)
+(or (not x3300) (not x2549) x3302 x3299 x50)
+(or (not x3263) (not x3256) (not x1191))
+(or (not x3299) (not x48) x3302 x3296 x2546)
+(or (not x3263) (not x3256) x631)
+(or (not x3302) (not x3299) (not x2546) (not x48) x3296)
+(or (not x3263) (not x3252) (not x1188))
+(or (not x3302) (not x3299) x3296 x2546 x48)
+(or (not x3263) (not x3252) x623)
+(or (not x3299) (not x2546) x3302 x3296 x48)
+(or (not x3263) (not x3250))
+(or (not x3296) (not x46) x3302 x3294 x2543)
+(or (not x3263) x3261 x3258 x3256 x3252 x3250)
+(or (not x3302) (not x3296) (not x2543) (not x46) x3294)
+(or (not x3263) (not x3250))
+(or (not x3302) (not x3296) x3294 x2543 x46)
+(or (not x3263) (not x2517))
+(or (not x3296) (not x2543) x3302 x3294 x46)
+(or (not x3263) (not x3235))
+(or (not x3294) (not x44) x3302 x3291 x2540)
+(or (not x3250) (not x2527) (not x1199))
+(or (not x3302) (not x3294) (not x2540) (not x44) x3291)
+(or (not x3250) (not x2527) x648)
+(or (not x3302) (not x3294) x3291 x2540 x44)
+(or (not x3294) (not x2540) x3302 x3291 x44)
+(or (not x3291) (not x149) x3302 x3290 x2537)
+(or (not x3250) (not x2526) (not x1194))
+(or (not x3302) (not x3291) (not x2537) (not x149) x3290)
+(or (not x3250) (not x2526) x636)
+(or (not x3302) (not x3291) x3290 x2537 x149)
+(or (not x3250) (not x2523) (not x1191))
+(or (not x3291) (not x2537) x3302 x3290 x149)
+(or (not x3250) (not x2523) x631)
+(or (not x3302) (not x3301))
+(or (not x3250) (not x2520) (not x1188))
+(or (not x3290) x3301)
+(or (not x3250) (not x2520) x623)
+(or (not x3301) x3290)
+(or (not x3250) (not x2517))
+(or x3300 x2684 x2551)
+(or (not x3250) x2527 x2526 x2523 x2520 x2517)
+(or (not x2684) (not x2551) x3300)
+(or (not x3250) (not x2517))
+(or (not x3300) (not x2551) x2684)
+(or (not x3250) (not x3235))
+(or (not x3300) (not x2684) x2551)
+(or (not x2517) (not x1197))
+(or (not x3300) x3299 x2683 x2549)
+(or (not x2517) x641)
+(or (not x3300) (not x2683) (not x2549) x3299)
+(or (not x2517) (not x3240) (not x1194))
+(or (not x3299) (not x2549) x2683)
+(or (not x2517) (not x3240) x636)
+(or (not x3299) (not x2683) x2549)
+(or (not x2517) (not x3239) (not x1191))
+(or (not x3299) x3300)
+(or (not x2517) (not x3239) x631)
+(or (not x3299) x3296 x2681 x2546)
+(or (not x2517) (not x3237) (not x1188))
+(or (not x3299) (not x2681) (not x2546) x3296)
+(or (not x2517) (not x3237) x623)
+(or (not x3296) (not x2546) x2681)
+(or (not x2517) (not x3235))
+(or (not x3296) (not x2681) x2546)
+(or (not x2517) (not x3235))
+(or (not x3296) x3299)
+(or (not x3298) (not x3295))
+(or (not x3296) x3294 x2679 x2543)
+(or (not x3298) x3297 x3295)
+(or (not x3296) (not x2679) (not x2543) x3294)
+(or (not x3295) x3298 x3297)
+(or (not x3294) (not x2543) x2679)
+(or (not x3297) x3298 x3295)
+(or (not x3294) (not x2679) x2543)
+(or (not x3294) x3296)
+(or (not x3294) x3291 x2677 x2540)
+(or (not x3292) x3295)
+(or (not x3294) (not x2677) (not x2540) x3291)
+(or (not x3295) x3292)
+(or (not x3291) (not x2540) x2677)
+(or (not x3293) (not x3288))
+(or (not x3291) (not x2677) x2540)
+(or (not x3293) x3292 x3288)
+(or (not x3291) x3294)
+(or (not x3288) x3293 x3292)
+(or (not x3291) x3290 x2675 x2537)
+(or (not x3292) x3293 x3288)
+(or (not x3291) (not x2675) (not x2537) x3290)
+(or (not x3289) (not x3286))
+(or (not x3290) (not x2537) x2675)
+(or (not x3289) x3288 x3286)
+(or (not x3290) (not x2675) x2537)
+(or (not x3286) x3289 x3288)
+(or (not x3290) x3291)
+(or (not x3288) x3289 x3286)
+(or (not x3254) (not x2185) (not x2165))
+(or (not x3287) (not x3284))
+(or (not x2185) (not x2165) x3253)
+(or (not x3287) x3286 x3284)
+(or (not x3254) (not x2185) (not x2166) x95)
+(or (not x3284) x3287 x3286)
+(or (not x2185) (not x2166) (not x95) x3254)
+(or (not x3286) x3287 x3284)
+(or (not x3253) (not x2185) (not x2166))
+(or (not x3285) x3284)
+(or (not x3254) (not x2185) (not x2167) x94)
+(or (not x3284) x3285)
+(or (not x2185) (not x2167) (not x94) x3254)
+(or (not x3283) (not x3281))
+(or (not x3253) (not x2185) (not x2167))
+(or (not x3283) x3282 x3281)
+(or (not x3254) (not x2185) (not x2168) x92)
+(or (not x3281) x3283 x3282)
+(or (not x2185) (not x2168) (not x92) x3254)
+(or (not x3282) x3283 x3281)
+(or (not x3253) (not x2185) (not x2168))
+(or (not x3254) (not x2185) (not x2169) x91)
+(or (not x2185) (not x2169) (not x91) x3254)
+(or (not x3279) x3281)
+(or (not x3253) (not x2185) (not x2169))
+(or (not x3281) x3279)
+(or (not x3254) (not x2186) (not x2165) x89)
+(or (not x3280) (not x3277))
+(or (not x2186) (not x2165) (not x89) x3254)
+(or (not x3280) x3279 x3277)
+(or (not x3253) (not x2186) (not x2165))
+(or (not x3277) x3280 x3279)
+(or (not x3254) (not x2186) (not x2166))
+(or (not x3279) x3280 x3277)
+(or (not x2186) (not x2166) x3253)
+(or (not x3278) (not x3275))
+(or (not x3254) (not x2186) (not x2167) x88)
+(or (not x3278) x3277 x3275)
+(or (not x2186) (not x2167) (not x88) x3254)
+(or (not x3275) x3278 x3277)
+(or (not x3253) (not x2186) (not x2167))
+(or (not x3277) x3278 x3275)
+(or (not x3254) (not x2186) (not x2168) x87)
+(or (not x3276) (not x3273))
+(or (not x2186) (not x2168) (not x87) x3254)
+(or (not x3276) x3275 x3273)
+(or (not x3253) (not x2186) (not x2168))
+(or (not x3273) x3276 x3275)
+(or (not x3254) (not x2186) (not x2169) x86)
+(or (not x3275) x3276 x3273)
+(or (not x2186) (not x2169) (not x86) x3254)
+(or (not x3274) x3273)
+(or (not x3253) (not x2186) (not x2169))
+(or (not x3273) x3274)
+(or (not x3254) (not x2187) (not x2165) x82)
+(or (not x3272) (not x3270))
+(or (not x2187) (not x2165) (not x82) x3254)
+(or (not x3272) x3271 x3270)
+(or (not x3253) (not x2187) (not x2165))
+(or (not x3270) x3272 x3271)
+(or (not x3254) (not x2187) (not x2166) x81)
+(or (not x3271) x3272 x3270)
+(or (not x2187) (not x2166) (not x81) x3254)
+(or (not x3253) (not x2187) (not x2166))
+(or (not x3254) (not x2187) (not x2167))
+(or (not x3268) x3270)
+(or (not x2187) (not x2167) x3253)
+(or (not x3270) x3268)
+(or (not x3254) (not x2187) (not x2168) x79)
+(or (not x3269) (not x3266))
+(or (not x2187) (not x2168) (not x79) x3254)
+(or (not x3269) x3268 x3266)
+(or (not x3253) (not x2187) (not x2168))
+(or (not x3266) x3269 x3268)
+(or (not x3254) (not x2187) (not x2169) x77)
+(or (not x3268) x3269 x3266)
+(or (not x2187) (not x2169) (not x77) x3254)
+(or (not x3267) (not x3264))
+(or (not x3253) (not x2187) (not x2169))
+(or (not x3267) x3266 x3264)
+(or (not x3254) (not x2188) (not x2165) x73)
+(or (not x3264) x3267 x3266)
+(or (not x2188) (not x2165) (not x73) x3254)
+(or (not x3266) x3267 x3264)
+(or (not x3253) (not x2188) (not x2165))
+(or (not x3265) (not x3262))
+(or (not x3254) (not x2188) (not x2166) x67)
+(or (not x3265) x3264 x3262)
+(or (not x2188) (not x2166) (not x67) x3254)
+(or (not x3262) x3265 x3264)
+(or (not x3253) (not x2188) (not x2166))
+(or (not x3264) x3265 x3262)
+(or (not x3254) (not x2188) (not x2167) x66)
+(or (not x3263) x3262)
+(or (not x2188) (not x2167) (not x66) x3254)
+(or (not x3262) x3263)
+(or (not x3253) (not x2188) (not x2167))
+(or (not x3261) (not x3259))
+(or (not x3254) (not x2188) (not x2168))
+(or (not x3261) x3260 x3259)
+(or (not x2188) (not x2168) x3253)
+(or (not x3259) x3261 x3260)
+(or (not x3254) (not x2188) (not x2169) x65)
+(or (not x3260) x3261 x3259)
+(or (not x2188) (not x2169) (not x65) x3254)
+(or (not x3253) (not x2188) (not x2169))
+(or (not x3254) (not x2189) (not x2165) x58)
+(or (not x3257) x3259)
+(or (not x2189) (not x2165) (not x58) x3254)
+(or (not x3259) x3257)
+(or (not x3253) (not x2189) (not x2165))
+(or (not x3258) (not x3255))
+(or (not x3254) (not x2189) (not x2166) x57)
+(or (not x3258) x3257 x3255)
+(or (not x2189) (not x2166) (not x57) x3254)
+(or (not x3255) x3258 x3257)
+(or (not x3253) (not x2189) (not x2166))
+(or (not x3257) x3258 x3255)
+(or (not x3254) (not x2189) (not x2167) x56)
+(or (not x3256) (not x3251))
+(or (not x2189) (not x2167) (not x56) x3254)
+(or (not x3256) x3255 x3251)
+(or (not x3253) (not x2189) (not x2167))
+(or (not x3251) x3256 x3255)
+(or (not x3254) (not x2189) (not x2168) x55)
+(or (not x3255) x3256 x3251)
+(or (not x2189) (not x2168) (not x55) x3254)
+(or (not x3252) (not x3249))
+(or (not x3253) (not x2189) (not x2168))
+(or (not x3252) x3251 x3249)
+(or (not x3254) (not x2189) (not x2169))
+(or (not x3249) x3252 x3251)
+(or (not x2189) (not x2169) x3253)
+(or (not x3251) x3252 x3249)
+(or (not x3141) (not x69) (not x6) x3247)
+(or (not x3250) x3249)
+(or (not x3247) (not x3231) (not x3223) x3241 x3233)
+(or (not x3249) x3250)
+(or (not x3247) (not x3223) x3232 x3231)
+(or (not x2527) (not x3246))
+(or (not x3247) x3224 x3223)
+(or (not x2527) x3248 x3246)
+(or (not x3233) (not x3231) (not x3223) x3247)
+(or (not x3246) x2527 x3248)
+(or (not x3241) (not x3231) (not x3223) x3247)
+(or (not x3248) x2527 x3246)
+(or (not x3232) (not x3223) x3247)
+(or (not x3224) x3247)
+(or (not x3241) (not x3233))
+(or (not x3245) x3246)
+(or (not x2668) x3241 x2753 x2280)
+(or (not x3246) x3245)
+(or (not x3241) (not x2668) (not x2280) x2753)
+(or (not x2526) (not x3244))
+(or (not x3241) (not x2753) x2668 x2280)
+(or (not x2526) x3245 x3244)
+(or (not x2753) (not x2280) x3241 x2668)
+(or (not x3244) x2526 x3245)
+(or (not x2667) x3241 x2750 x2280)
+(or (not x3245) x2526 x3244)
+(or (not x3241) (not x2667) (not x2280) x2750)
+(or (not x2523) (not x3243))
+(or (not x3241) (not x2750) x2667 x2280)
+(or (not x2523) x3244 x3243)
+(or (not x2750) (not x2280) x3241 x2667)
+(or (not x3243) x2523 x3244)
+(or (not x2666) x3241 x2749 x2280)
+(or (not x3244) x2523 x3243)
+(or (not x3241) (not x2666) (not x2280) x2749)
+(or (not x2520) (not x3242))
+(or (not x3241) (not x2749) x2666 x2280)
+(or (not x2520) x3243 x3242)
+(or (not x2749) (not x2280) x3241 x2666)
+(or (not x3242) x2520 x3243)
+(or (not x2665) x3241 x2746 x2280)
+(or (not x3243) x2520 x3242)
+(or (not x3241) (not x2665) (not x2280) x2746)
+(or (not x2517) x3242)
+(or (not x3241) (not x2746) x2665 x2280)
+(or (not x3242) x2517)
+(or (not x2746) (not x2280) x3241 x2665)
+(or (not x2664) x3241 x2745 x2280)
+(or (not x3241) (not x2664) (not x2280) x2745)
+(or (not x3240) (not x3238))
+(or (not x3241) (not x2745) x2664 x2280)
+(or (not x3240) x3238)
+(or (not x2745) (not x2280) x3241 x2664)
+(or (not x3238) x3240)
+(or (not x2750) (not x2667) x3233 x2753 x2668)
+(or (not x2749) (not x2666) x3233 x2750 x2667)
+(or (not x3239) (not x3236))
+(or (not x2746) (not x2665) x3233 x2749 x2666)
+(or (not x3239) x3238 x3236)
+(or (not x2745) (not x2664) x3233 x2746 x2665)
+(or (not x3236) x3239 x3238)
+(or x3233 x2745 x2664)
+(or (not x3238) x3239 x3236)
+(or (not x2753) (not x2668) x3233)
+(or (not x3237) (not x3234))
+(or (not x3233) (not x2753) x2668)
+(or (not x3237) x3236 x3234)
+(or (not x3233) (not x2668) x2753)
+(or (not x3234) x3237 x3236)
+(or (not x3233) (not x2750) x2667)
+(or (not x3236) x3237 x3234)
+(or (not x3233) (not x2667) x2750)
+(or (not x3235) x3234)
+(or (not x3233) (not x2749) x2666)
+(or (not x3234) x3235)
+(or (not x3233) (not x2666) x2749)
+(or (not x3207) (not x3195) (not x1113))
+(or (not x3233) (not x2746) x2665)
+(or (not x3207) (not x3195))
+(or (not x3233) (not x2665) x2746)
+(or (not x3207) (not x3193) (not x1111))
+(or (not x3233) (not x2745) x2664)
+(or (not x3207) (not x3193) x645)
+(or (not x3233) (not x2664) x2745)
+(or (not x3207) (not x3190) (not x1108))
+(or (not x52) x3232 x3230 x2725)
+(or (not x3207) (not x3190) x635)
+(or (not x3232) (not x2725) (not x52) x3230)
+(or (not x3207) (not x3188) (not x1105))
+(or (not x3232) x3230 x2725 x52)
+(or (not x3207) (not x3188) x630)
+(or (not x2725) x3232 x3230 x52)
+(or (not x3207) (not x3185) x622)
+(or (not x3230) (not x50) x3232 x3229 x2722)
+(or (not x3207) x3195 x3193 x3190 x3188 x3185)
+(or (not x3232) (not x3230) (not x2722) (not x50) x3229)
+(or (not x3207) (not x3195))
+(or (not x3232) (not x3230) x3229 x2722 x50)
+(or (not x3207) (not x3182))
+(or (not x3230) (not x2722) x3232 x3229 x50)
+(or (not x3207) (not x3167))
+(or (not x3229) (not x48) x3232 x3228 x2718)
+(or (not x3207) (not x2515))
+(or (not x3232) (not x3229) (not x2718) (not x48) x3228)
+(or (not x3195) (not x3182) (not x1113))
+(or (not x3232) (not x3229) x3228 x2718 x48)
+(or (not x3195) (not x3182))
+(or (not x3229) (not x2718) x3232 x3228 x48)
+(or (not x3195) (not x3180) (not x1111))
+(or (not x3228) (not x46) x3232 x3227 x2714)
+(or (not x3195) (not x3180) x645)
+(or (not x3232) (not x3228) (not x2714) (not x46) x3227)
+(or (not x3195) (not x3175) (not x1108))
+(or (not x3232) (not x3228) x3227 x2714 x46)
+(or (not x3195) (not x3175) x635)
+(or (not x3228) (not x2714) x3232 x3227 x46)
+(or (not x3195) (not x3173) (not x1105))
+(or (not x3227) (not x44) x3232 x3226 x2711)
+(or (not x3195) (not x3173) x630)
+(or (not x3232) (not x3227) (not x2711) (not x44) x3226)
+(or (not x3195) (not x3170) x622)
+(or (not x3232) (not x3227) x3226 x2711 x44)
+(or (not x3195) x3182 x3180 x3175 x3173 x3170)
+(or (not x3227) (not x2711) x3232 x3226 x44)
+(or (not x3195) (not x3182))
+(or (not x3226) (not x149) x3232 x3225 x2708)
+(or (not x3195) (not x3167))
+(or (not x3232) (not x3226) (not x2708) (not x149) x3225)
+(or (not x3195) (not x2515))
+(or (not x3232) (not x3226) x3225 x2708 x149)
+(or (not x3182) (not x3167) (not x1113))
+(or (not x3226) (not x2708) x3232 x3225 x149)
+(or (not x3182) (not x3167))
+(or (not x3232) (not x3231))
+(or (not x3182) (not x3165) (not x1111))
+(or (not x3225) x3231)
+(or (not x3182) (not x3165) x645)
+(or (not x3231) x3225)
+(or (not x3182) (not x3160) (not x1108))
+(or x3230 x2725 x2660)
+(or (not x3182) (not x3160) x635)
+(or (not x2725) (not x2660) x3230)
+(or (not x3182) (not x3158) (not x1105))
+(or (not x3230) (not x2725) x2660)
+(or (not x3182) (not x3158) x630)
+(or (not x3230) (not x2660) x2725)
+(or (not x3182) (not x3156) x622)
+(or (not x3230) x3229 x2722 x2659)
+(or (not x3182) x3167 x3165 x3160 x3158 x3156)
+(or (not x3230) (not x2722) (not x2659) x3229)
+(or (not x3182) (not x3167))
+(or (not x3229) (not x2722) x2659)
+(or (not x3182) (not x2515))
+(or (not x3229) (not x2659) x2722)
+(or (not x3167) (not x2515) (not x1113))
+(or (not x3229) x3230)
+(or (not x3167) (not x2515))
+(or (not x3229) x3228 x2718 x2657)
+(or (not x3167) (not x2510) (not x1111))
+(or (not x3229) (not x2718) (not x2657) x3228)
+(or (not x3167) (not x2510) x645)
+(or (not x3228) (not x2718) x2657)
+(or (not x3167) (not x2507) (not x1108))
+(or (not x3228) (not x2657) x2718)
+(or (not x3167) (not x2507) x635)
+(or (not x3228) x3229)
+(or (not x3167) (not x2504) (not x1105))
+(or (not x3228) x3227 x2714 x2655)
+(or (not x3167) (not x2504) x630)
+(or (not x3228) (not x2714) (not x2655) x3227)
+(or (not x3167) (not x2501) x622)
+(or (not x3227) (not x2714) x2655)
+(or (not x3167) x2515 x2510 x2507 x2504 x2501)
+(or (not x3227) (not x2655) x2714)
+(or (not x3167) (not x2515))
+(or (not x3227) x3228)
+(or (not x2515) (not x1109))
+(or (not x3227) x3226 x2711 x2653)
+(or (not x2515) x640)
+(or (not x3227) (not x2711) (not x2653) x3226)
+(or (not x2515) (not x3148) (not x1108))
+(or (not x3226) (not x2711) x2653)
+(or (not x2515) (not x3148) x635)
+(or (not x3226) (not x2653) x2711)
+(or (not x2515) (not x3147) (not x1105))
+(or (not x3226) x3227)
+(or (not x2515) (not x3147) x630)
+(or (not x3226) x3225 x2708 x2651)
+(or (not x2515) (not x3145) x622)
+(or (not x3226) (not x2708) (not x2651) x3225)
+(or (not x1113) x3207 x3195 x3182 x3167 x2515)
+(or (not x3225) (not x2708) x2651)
+(or (not x3205) (not x3195) (not x1113))
+(or (not x3225) (not x2651) x2708)
+(or (not x3205) (not x3195) x655)
+(or (not x3225) x3226)
+(or (not x3205) (not x3193) (not x1111))
+(or (not x3224) (not x2190) (not x2180))
+(or (not x3205) (not x3193))
+(or (not x2190) (not x2180) x3223)
+(or (not x3205) (not x3190) (not x1108))
+(or (not x3224) (not x2191) (not x2180) x95)
+(or (not x3205) (not x3190) x634)
+(or (not x2191) (not x2180) (not x95) x3224)
+(or (not x3205) (not x3188) (not x1105))
+(or (not x3223) (not x2191) (not x2180))
+(or (not x3205) (not x3188) x629)
+(or (not x3224) (not x2192) (not x2180) x94)
+(or (not x3205) (not x3185) x621)
+(or (not x2192) (not x2180) (not x94) x3224)
+(or (not x3205) x3195 x3193 x3190 x3188 x3185)
+(or (not x3223) (not x2192) (not x2180))
+(or (not x3205) (not x3193))
+(or (not x3224) (not x2193) (not x2180) x92)
+(or (not x3205) (not x3180))
+(or (not x2193) (not x2180) (not x92) x3224)
+(or (not x3205) (not x3165))
+(or (not x3223) (not x2193) (not x2180))
+(or (not x3205) (not x2510))
+(or (not x3224) (not x2194) (not x2180) x91)
+(or (not x3193) (not x3182) (not x1113))
+(or (not x2194) (not x2180) (not x91) x3224)
+(or (not x3193) (not x3182) x655)
+(or (not x3223) (not x2194) (not x2180))
+(or (not x3193) (not x3180) (not x1111))
+(or (not x3224) (not x2190) (not x2181) x89)
+(or (not x3193) (not x3180))
+(or (not x2190) (not x2181) (not x89) x3224)
+(or (not x3193) (not x3175) (not x1108))
+(or (not x3223) (not x2190) (not x2181))
+(or (not x3193) (not x3175) x634)
+(or (not x3224) (not x2191) (not x2181))
+(or (not x3193) (not x3173) (not x1105))
+(or (not x2191) (not x2181) x3223)
+(or (not x3193) (not x3173) x629)
+(or (not x3224) (not x2192) (not x2181) x88)
+(or (not x3193) (not x3170) x621)
+(or (not x2192) (not x2181) (not x88) x3224)
+(or (not x3193) x3182 x3180 x3175 x3173 x3170)
+(or (not x3223) (not x2192) (not x2181))
+(or (not x3193) (not x3180))
+(or (not x3224) (not x2193) (not x2181) x87)
+(or (not x3193) (not x3165))
+(or (not x2193) (not x2181) (not x87) x3224)
+(or (not x3193) (not x2510))
+(or (not x3223) (not x2193) (not x2181))
+(or (not x3180) (not x3167) (not x1113))
+(or (not x3224) (not x2194) (not x2181) x86)
+(or (not x3180) (not x3167) x655)
+(or (not x2194) (not x2181) (not x86) x3224)
+(or (not x3180) (not x3165) (not x1111))
+(or (not x3223) (not x2194) (not x2181))
+(or (not x3180) (not x3165))
+(or (not x3224) (not x2190) (not x2182) x82)
+(or (not x3180) (not x3160) (not x1108))
+(or (not x2190) (not x2182) (not x82) x3224)
+(or (not x3180) (not x3160) x634)
+(or (not x3223) (not x2190) (not x2182))
+(or (not x3180) (not x3158) (not x1105))
+(or (not x3224) (not x2191) (not x2182) x81)
+(or (not x3180) (not x3158) x629)
+(or (not x2191) (not x2182) (not x81) x3224)
+(or (not x3180) (not x3156) x621)
+(or (not x3223) (not x2191) (not x2182))
+(or (not x3180) x3167 x3165 x3160 x3158 x3156)
+(or (not x3224) (not x2192) (not x2182))
+(or (not x3180) (not x3165))
+(or (not x2192) (not x2182) x3223)
+(or (not x3180) (not x2510))
+(or (not x3224) (not x2193) (not x2182) x79)
+(or (not x3165) (not x2515) (not x1113))
+(or (not x2193) (not x2182) (not x79) x3224)
+(or (not x3165) (not x2515) x655)
+(or (not x3223) (not x2193) (not x2182))
+(or (not x3165) (not x2510) (not x1111))
+(or (not x3224) (not x2194) (not x2182) x77)
+(or (not x3165) (not x2510))
+(or (not x2194) (not x2182) (not x77) x3224)
+(or (not x3165) (not x2507) (not x1108))
+(or (not x3223) (not x2194) (not x2182))
+(or (not x3165) (not x2507) x634)
+(or (not x3224) (not x2190) (not x2183) x73)
+(or (not x3165) (not x2504) (not x1105))
+(or (not x2190) (not x2183) (not x73) x3224)
+(or (not x3165) (not x2504) x629)
+(or (not x3223) (not x2190) (not x2183))
+(or (not x3165) (not x2501) x621)
+(or (not x3224) (not x2191) (not x2183) x67)
+(or (not x3165) x2515 x2510 x2507 x2504 x2501)
+(or (not x2191) (not x2183) (not x67) x3224)
+(or (not x3165) (not x2510))
+(or (not x3223) (not x2191) (not x2183))
+(or (not x2510) (not x1109))
+(or (not x3224) (not x2192) (not x2183) x66)
+(or (not x2510) x639)
+(or (not x2192) (not x2183) (not x66) x3224)
+(or (not x2510) (not x3148) (not x1108))
+(or (not x3223) (not x2192) (not x2183))
+(or (not x2510) (not x3148) x634)
+(or (not x3224) (not x2193) (not x2183))
+(or (not x2510) (not x3147) (not x1105))
+(or (not x2193) (not x2183) x3223)
+(or (not x2510) (not x3147) x629)
+(or (not x3224) (not x2194) (not x2183) x65)
+(or (not x2510) (not x3145) x621)
+(or (not x2194) (not x2183) (not x65) x3224)
+(or (not x1111) x3205 x3193 x3180 x3165 x2510)
+(or (not x3223) (not x2194) (not x2183))
+(or (not x3202) (not x3195) (not x1113))
+(or (not x3224) (not x2190) (not x2184) x58)
+(or (not x3202) (not x3195) x651)
+(or (not x2190) (not x2184) (not x58) x3224)
+(or (not x3202) (not x3193) (not x1111))
+(or (not x3223) (not x2190) (not x2184))
+(or (not x3202) (not x3193) x643)
+(or (not x3224) (not x2191) (not x2184) x57)
+(or (not x2191) (not x2184) (not x57) x3224)
+(or (not x3223) (not x2191) (not x2184))
+(or (not x3202) (not x3190) (not x1108))
+(or (not x3224) (not x2192) (not x2184) x56)
+(or (not x3202) (not x3190))
+(or (not x2192) (not x2184) (not x56) x3224)
+(or (not x3202) (not x3188) (not x1105))
+(or (not x3223) (not x2192) (not x2184))
+(or (not x3202) (not x3188) x625)
+(or (not x3224) (not x2193) (not x2184) x55)
+(or (not x3202) (not x3185) x619)
+(or (not x2193) (not x2184) (not x55) x3224)
+(or (not x3202) x3195 x3193 x3190 x3188 x3185)
+(or (not x3223) (not x2193) (not x2184))
+(or (not x3202) (not x3190))
+(or (not x3224) (not x2194) (not x2184))
+(or (not x3202) (not x3175))
+(or (not x2194) (not x2184) x3223)
+(or (not x3202) (not x3160))
+(or (not x3141) (not x69) (not x7) x3222)
+(or (not x3202) (not x2507))
+(or (not x3222) (not x3218) (not x3210) x3221 x3220)
+(or (not x3202) (not x3148))
+(or (not x3222) (not x3210) x3219 x3218)
+(or (not x3190) (not x3182) (not x1113))
+(or (not x3222) x3211 x3210)
+(or (not x3190) (not x3182) x651)
+(or (not x3220) (not x3218) (not x3210) x3222)
+(or (not x3190) (not x3180) (not x1111))
+(or (not x3221) (not x3218) (not x3210) x3222)
+(or (not x3190) (not x3180) x643)
+(or (not x3219) (not x3210) x3222)
+(or (not x3211) x3222)
+(or (not x3221) (not x3220))
+(or (not x3190) (not x3175) (not x1108))
+(or (not x2668) x3221 x2692 x2280)
+(or (not x3190) (not x3175))
+(or (not x3221) (not x2668) (not x2280) x2692)
+(or (not x3190) (not x3173) (not x1105))
+(or (not x3221) (not x2692) x2668 x2280)
+(or (not x3190) (not x3173) x625)
+(or (not x2692) (not x2280) x3221 x2668)
+(or (not x3190) (not x3170) x619)
+(or (not x2667) x3221 x2691 x2280)
+(or (not x3190) x3182 x3180 x3175 x3173 x3170)
+(or (not x3221) (not x2667) (not x2280) x2691)
+(or (not x3190) (not x3175))
+(or (not x3221) (not x2691) x2667 x2280)
+(or (not x3190) (not x3160))
+(or (not x2691) (not x2280) x3221 x2667)
+(or (not x3190) (not x2507))
+(or (not x2666) x3221 x2690 x2280)
+(or (not x3190) (not x3148))
+(or (not x3221) (not x2666) (not x2280) x2690)
+(or (not x3175) (not x3167) (not x1113))
+(or (not x3221) (not x2690) x2666 x2280)
+(or (not x3175) (not x3167) x651)
+(or (not x2690) (not x2280) x3221 x2666)
+(or (not x3175) (not x3165) (not x1111))
+(or (not x2665) x3221 x2689 x2280)
+(or (not x3175) (not x3165) x643)
+(or (not x3221) (not x2665) (not x2280) x2689)
+(or (not x3221) (not x2689) x2665 x2280)
+(or (not x2689) (not x2280) x3221 x2665)
+(or (not x3175) (not x3160) (not x1108))
+(or (not x2664) x3221 x2688 x2280)
+(or (not x3175) (not x3160))
+(or (not x3221) (not x2664) (not x2280) x2688)
+(or (not x3175) (not x3158) (not x1105))
+(or (not x3221) (not x2688) x2664 x2280)
+(or (not x3175) (not x3158) x625)
+(or (not x2688) (not x2280) x3221 x2664)
+(or (not x3175) (not x3156) x619)
+(or (not x2691) (not x2667) x3220 x2692 x2668)
+(or (not x3175) x3167 x3165 x3160 x3158 x3156)
+(or (not x2690) (not x2666) x3220 x2691 x2667)
+(or (not x3175) (not x3160))
+(or (not x2689) (not x2665) x3220 x2690 x2666)
+(or (not x3175) (not x2507))
+(or (not x2688) (not x2664) x3220 x2689 x2665)
+(or (not x3175) (not x3148))
+(or x3220 x2688 x2664)
+(or (not x3160) (not x2515) (not x1113))
+(or (not x2692) (not x2668) x3220)
+(or (not x3160) (not x2515) x651)
+(or (not x3220) (not x2692) x2668)
+(or (not x3160) (not x2510) (not x1111))
+(or (not x3220) (not x2668) x2692)
+(or (not x3160) (not x2510) x643)
+(or (not x3220) (not x2691) x2667)
+(or (not x3220) (not x2667) x2691)
+(or (not x3220) (not x2690) x2666)
+(or (not x3160) (not x2507) (not x1108))
+(or (not x3220) (not x2666) x2690)
+(or (not x3160) (not x2507))
+(or (not x3220) (not x2689) x2665)
+(or (not x3160) (not x2504) (not x1105))
+(or (not x3220) (not x2665) x2689)
+(or (not x3160) (not x2504) x625)
+(or (not x3220) (not x2688) x2664)
+(or (not x3160) (not x2501) x619)
+(or (not x3220) (not x2664) x2688)
+(or (not x3160) x2515 x2510 x2507 x2504 x2501)
+(or (not x52) x3219 x3217 x2684)
+(or (not x3160) (not x2507))
+(or (not x3219) (not x2684) (not x52) x3217)
+(or (not x3160) (not x3148))
+(or (not x3219) x3217 x2684 x52)
+(or (not x2507) (not x1109))
+(or (not x2684) x3219 x3217 x52)
+(or (not x2507) x638)
+(or (not x3217) (not x50) x3219 x3216 x2683)
+(or (not x2507) (not x3148) (not x1108))
+(or (not x3219) (not x3217) (not x2683) (not x50) x3216)
+(or (not x2507) (not x3148))
+(or (not x3219) (not x3217) x3216 x2683 x50)
+(or (not x2507) (not x3147) (not x1105))
+(or (not x3217) (not x2683) x3219 x3216 x50)
+(or (not x2507) (not x3147) x625)
+(or (not x3216) (not x48) x3219 x3215 x2681)
+(or (not x2507) (not x3145) x619)
+(or (not x3219) (not x3216) (not x2681) (not x48) x3215)
+(or (not x2507) (not x3148))
+(or (not x3219) (not x3216) x3215 x2681 x48)
+(or (not x1108) x3202 x3190 x3175 x3160 x2507 x3148)
+(or (not x3216) (not x2681) x3219 x3215 x48)
+(or (not x3199) (not x3195) (not x1113))
+(or (not x3215) (not x46) x3219 x3214 x2679)
+(or (not x3199) (not x3195) x650)
+(or (not x3219) (not x3215) (not x2679) (not x46) x3214)
+(or (not x3199) (not x3193) (not x1111))
+(or (not x3219) (not x3215) x3214 x2679 x46)
+(or (not x3199) (not x3193) x642)
+(or (not x3215) (not x2679) x3219 x3214 x46)
+(or (not x3214) (not x44) x3219 x3213 x2677)
+(or (not x3219) (not x3214) (not x2677) (not x44) x3213)
+(or (not x3199) (not x3190) (not x1108))
+(or (not x3219) (not x3214) x3213 x2677 x44)
+(or (not x3199) (not x3190) x632)
+(or (not x3214) (not x2677) x3219 x3213 x44)
+(or (not x3199) (not x3188) (not x1105))
+(or (not x3213) (not x149) x3219 x3212 x2675)
+(or (not x3199) (not x3188))
+(or (not x3219) (not x3213) (not x2675) (not x149) x3212)
+(or (not x3199) (not x3185) x616)
+(or (not x3219) (not x3213) x3212 x2675 x149)
+(or (not x3199) x3195 x3193 x3190 x3188 x3185)
+(or (not x3213) (not x2675) x3219 x3212 x149)
+(or (not x3199) (not x3188))
+(or (not x3219) (not x3218))
+(or (not x3199) (not x3173))
+(or (not x3212) x3218)
+(or (not x3199) (not x3158))
+(or (not x3218) x3212)
+(or (not x3199) (not x2504))
+(or x3217 x2684 x2660)
+(or (not x3199) (not x3147))
+(or (not x2684) (not x2660) x3217)
+(or (not x3188) (not x3182) (not x1113))
+(or (not x3217) (not x2684) x2660)
+(or (not x3188) (not x3182) x650)
+(or (not x3217) (not x2660) x2684)
+(or (not x3188) (not x3180) (not x1111))
+(or (not x3217) x3216 x2683 x2659)
+(or (not x3188) (not x3180) x642)
+(or (not x3217) (not x2683) (not x2659) x3216)
+(or (not x3216) (not x2683) x2659)
+(or (not x3216) (not x2659) x2683)
+(or (not x3188) (not x3175) (not x1108))
+(or (not x3216) x3217)
+(or (not x3188) (not x3175) x632)
+(or (not x3216) x3215 x2681 x2657)
+(or (not x3188) (not x3173) (not x1105))
+(or (not x3216) (not x2681) (not x2657) x3215)
+(or (not x3188) (not x3173))
+(or (not x3215) (not x2681) x2657)
+(or (not x3188) (not x3170) x616)
+(or (not x3215) (not x2657) x2681)
+(or (not x3188) x3182 x3180 x3175 x3173 x3170)
+(or (not x3215) x3216)
+(or (not x3188) (not x3173))
+(or (not x3215) x3214 x2679 x2655)
+(or (not x3188) (not x3158))
+(or (not x3215) (not x2679) (not x2655) x3214)
+(or (not x3188) (not x2504))
+(or (not x3214) (not x2679) x2655)
+(or (not x3188) (not x3147))
+(or (not x3214) (not x2655) x2679)
+(or (not x3173) (not x3167) (not x1113))
+(or (not x3214) x3215)
+(or (not x3173) (not x3167) x650)
+(or (not x3214) x3213 x2677 x2653)
+(or (not x3173) (not x3165) (not x1111))
+(or (not x3214) (not x2677) (not x2653) x3213)
+(or (not x3173) (not x3165) x642)
+(or (not x3213) (not x2677) x2653)
+(or (not x3213) (not x2653) x2677)
+(or (not x3213) x3214)
+(or (not x3173) (not x3160) (not x1108))
+(or (not x3213) x3212 x2675 x2651)
+(or (not x3173) (not x3160) x632)
+(or (not x3213) (not x2675) (not x2651) x3212)
+(or (not x3173) (not x3158) (not x1105))
+(or (not x3212) (not x2675) x2651)
+(or (not x3173) (not x3158))
+(or (not x3212) (not x2651) x2675)
+(or (not x3173) (not x3156) x616)
+(or (not x3212) x3213)
+(or (not x3173) x3167 x3165 x3160 x3158 x3156)
+(or (not x3211) (not x2185) (not x2180))
+(or (not x3173) (not x3158))
+(or (not x2185) (not x2180) x3210)
+(or (not x3173) (not x2504))
+(or (not x3211) (not x2186) (not x2180) x95)
+(or (not x3173) (not x3147))
+(or (not x2186) (not x2180) (not x95) x3211)
+(or (not x3158) (not x2515) (not x1113))
+(or (not x3210) (not x2186) (not x2180))
+(or (not x3158) (not x2515) x650)
+(or (not x3211) (not x2187) (not x2180) x94)
+(or (not x3158) (not x2510) (not x1111))
+(or (not x2187) (not x2180) (not x94) x3211)
+(or (not x3158) (not x2510) x642)
+(or (not x3210) (not x2187) (not x2180))
+(or (not x3211) (not x2188) (not x2180) x92)
+(or (not x2188) (not x2180) (not x92) x3211)
+(or (not x3158) (not x2507) (not x1108))
+(or (not x3210) (not x2188) (not x2180))
+(or (not x3158) (not x2507) x632)
+(or (not x3211) (not x2189) (not x2180) x91)
+(or (not x3158) (not x2504) (not x1105))
+(or (not x2189) (not x2180) (not x91) x3211)
+(or (not x3158) (not x2504))
+(or (not x3210) (not x2189) (not x2180))
+(or (not x3158) (not x2501) x616)
+(or (not x3211) (not x2185) (not x2181) x89)
+(or (not x3158) x2515 x2510 x2507 x2504 x2501)
+(or (not x2185) (not x2181) (not x89) x3211)
+(or (not x3158) (not x2504))
+(or (not x3210) (not x2185) (not x2181))
+(or (not x3158) (not x3147))
+(or (not x3211) (not x2186) (not x2181))
+(or (not x2504) (not x1109))
+(or (not x2186) (not x2181) x3210)
+(or (not x2504) x637)
+(or (not x3211) (not x2187) (not x2181) x88)
+(or (not x2504) (not x3148) (not x1108))
+(or (not x2187) (not x2181) (not x88) x3211)
+(or (not x2504) (not x3148) x632)
+(or (not x3210) (not x2187) (not x2181))
+(or (not x2504) (not x3147) (not x1105))
+(or (not x3211) (not x2188) (not x2181) x87)
+(or (not x2504) (not x3147))
+(or (not x2188) (not x2181) (not x87) x3211)
+(or (not x2504) (not x3145) x616)
+(or (not x3210) (not x2188) (not x2181))
+(or (not x2504) (not x3147))
+(or (not x3211) (not x2189) (not x2181) x86)
+(or (not x1105) x3199 x3188 x3173 x3158 x2504 x3147)
+(or (not x2189) (not x2181) (not x86) x3211)
+(or (not x3197) (not x3195) (not x1113))
+(or (not x3210) (not x2189) (not x2181))
+(or (not x3197) (not x3195) x648)
+(or (not x3211) (not x2185) (not x2182) x82)
+(or (not x3197) (not x3193) (not x1111))
+(or (not x2185) (not x2182) (not x82) x3211)
+(or (not x3197) (not x3193) x641)
+(or (not x3210) (not x2185) (not x2182))
+(or (not x3211) (not x2186) (not x2182) x81)
+(or (not x2186) (not x2182) (not x81) x3211)
+(or (not x3197) (not x3190) (not x1108))
+(or (not x3210) (not x2186) (not x2182))
+(or (not x3197) (not x3190) x631)
+(or (not x3211) (not x2187) (not x2182))
+(or (not x3197) (not x3188) (not x1105))
+(or (not x2187) (not x2182) x3210)
+(or (not x3197) (not x3188) x623)
+(or (not x3211) (not x2188) (not x2182) x79)
+(or (not x3197) (not x3185))
+(or (not x2188) (not x2182) (not x79) x3211)
+(or (not x3197) x3195 x3193 x3190 x3188 x3185)
+(or (not x3210) (not x2188) (not x2182))
+(or (not x3197) (not x3185))
+(or (not x3211) (not x2189) (not x2182) x77)
+(or (not x3197) (not x3170))
+(or (not x2189) (not x2182) (not x77) x3211)
+(or (not x3197) (not x3156))
+(or (not x3210) (not x2189) (not x2182))
+(or (not x3197) (not x2501))
+(or (not x3211) (not x2185) (not x2183) x73)
+(or (not x3197) (not x3145))
+(or (not x2185) (not x2183) (not x73) x3211)
+(or (not x3185) (not x3182) (not x1113))
+(or (not x3210) (not x2185) (not x2183))
+(or (not x3185) (not x3182) x648)
+(or (not x3211) (not x2186) (not x2183) x67)
+(or (not x3185) (not x3180) (not x1111))
+(or (not x2186) (not x2183) (not x67) x3211)
+(or (not x3185) (not x3180) x641)
+(or (not x3210) (not x2186) (not x2183))
+(or (not x3211) (not x2187) (not x2183) x66)
+(or (not x2187) (not x2183) (not x66) x3211)
+(or (not x3185) (not x3175) (not x1108))
+(or (not x3210) (not x2187) (not x2183))
+(or (not x3185) (not x3175) x631)
+(or (not x3211) (not x2188) (not x2183))
+(or (not x3185) (not x3173) (not x1105))
+(or (not x2188) (not x2183) x3210)
+(or (not x3185) (not x3173) x623)
+(or (not x3211) (not x2189) (not x2183) x65)
+(or (not x3185) (not x3170))
+(or (not x2189) (not x2183) (not x65) x3211)
+(or (not x3185) x3182 x3180 x3175 x3173 x3170)
+(or (not x3210) (not x2189) (not x2183))
+(or (not x3185) (not x3170))
+(or (not x3211) (not x2185) (not x2184) x58)
+(or (not x3185) (not x3156))
+(or (not x2185) (not x2184) (not x58) x3211)
+(or (not x3185) (not x2501))
+(or (not x3210) (not x2185) (not x2184))
+(or (not x3185) (not x3145))
+(or (not x3211) (not x2186) (not x2184) x57)
+(or (not x3170) (not x3167) (not x1113))
+(or (not x2186) (not x2184) (not x57) x3211)
+(or (not x3170) (not x3167) x648)
+(or (not x3210) (not x2186) (not x2184))
+(or (not x3170) (not x3165) (not x1111))
+(or (not x3211) (not x2187) (not x2184) x56)
+(or (not x3170) (not x3165) x641)
+(or (not x2187) (not x2184) (not x56) x3211)
+(or (not x3210) (not x2187) (not x2184))
+(or (not x3211) (not x2188) (not x2184) x55)
+(or (not x3170) (not x3160) (not x1108))
+(or (not x2188) (not x2184) (not x55) x3211)
+(or (not x3170) (not x3160) x631)
+(or (not x3210) (not x2188) (not x2184))
+(or (not x3170) (not x3158) (not x1105))
+(or (not x3211) (not x2189) (not x2184))
+(or (not x3170) (not x3158) x623)
+(or (not x2189) (not x2184) x3210)
+(or (not x3170) (not x3156))
+(or (not x3141) (not x69) (not x9) x3209)
+(or (not x3170) x3167 x3165 x3160 x3158 x3156)
+(or (not x3209) (not x3183) (not x3142) x3208 x3200)
+(or (not x3170) (not x3156))
+(or (not x3209) (not x3142) x3186 x3183)
+(or (not x3170) (not x2501))
+(or (not x3209) x3143 x3142)
+(or (not x3170) (not x3145))
+(or (not x3200) (not x3183) (not x3142) x3209)
+(or (not x3156) (not x2515) (not x1113))
+(or (not x3208) (not x3183) (not x3142) x3209)
+(or (not x3156) (not x2515) x648)
+(or (not x3186) (not x3142) x3209)
+(or (not x3156) (not x2510) (not x1111))
+(or (not x3143) x3209)
+(or (not x3156) (not x2510) x641)
+(or (not x3208) (not x3200))
+(or (not x2668) x3208 x2598 x2280)
+(or (not x3208) (not x2668) (not x2280) x2598)
+(or (not x3156) (not x2507) (not x1108))
+(or (not x3208) (not x2598) x2668 x2280)
+(or (not x3156) (not x2507) x631)
+(or (not x2598) (not x2280) x3208 x2668)
+(or (not x3156) (not x2504) (not x1105))
+(or (not x2667) x3208 x2596 x2280)
+(or (not x3156) (not x2504) x623)
+(or (not x3208) (not x2667) (not x2280) x2596)
+(or (not x3156) (not x2501))
+(or (not x3208) (not x2596) x2667 x2280)
+(or (not x3156) x2515 x2510 x2507 x2504 x2501)
+(or (not x2596) (not x2280) x3208 x2667)
+(or (not x3156) (not x2501))
+(or (not x2666) x3208 x2595 x2280)
+(or (not x3156) (not x3145))
+(or (not x3208) (not x2666) (not x2280) x2595)
+(or (not x2501) (not x1109))
+(or (not x3208) (not x2595) x2666 x2280)
+(or (not x2501) x636)
+(or (not x2595) (not x2280) x3208 x2666)
+(or (not x2501) (not x3148) (not x1108))
+(or (not x2665) x3208 x2593 x2280)
+(or (not x2501) (not x3148) x631)
+(or (not x3208) (not x2665) (not x2280) x2593)
+(or (not x2501) (not x3147) (not x1105))
+(or (not x3208) (not x2593) x2665 x2280)
+(or (not x2501) (not x3147) x623)
+(or (not x2593) (not x2280) x3208 x2665)
+(or (not x2501) (not x3145))
+(or (not x2664) x3208 x2592 x2280)
+(or (not x2501) (not x3145))
+(or (not x3208) (not x2664) (not x2280) x2592)
+(or (not x3207) (not x3204))
+(or (not x3208) (not x2592) x2664 x2280)
+(or (not x3207) x3206 x3204)
+(or (not x2592) (not x2280) x3208 x2664)
+(or (not x3204) x3207 x3206)
+(or (not x2667) (not x2596) x3200 x2668 x2598)
+(or (not x3206) x3207 x3204)
+(or (not x2666) (not x2595) x3200 x2667 x2596)
+(or (not x3205) (not x3203))
+(or (not x2665) (not x2593) x3200 x2666 x2595)
+(or (not x3205) x3204 x3203)
+(or (not x2664) (not x2592) x3200 x2665 x2593)
+(or (not x3203) x3205 x3204)
+(or x3200 x2664 x2592)
+(or (not x3204) x3205 x3203)
+(or (not x2668) (not x2598) x3200)
+(or (not x3200) (not x2598) x2668)
+(or (not x3200) (not x2668) x2598)
+(or (not x3201) x3203)
+(or (not x3200) (not x2596) x2667)
+(or (not x3203) x3201)
+(or (not x3200) (not x2667) x2596)
+(or (not x3202) (not x3198))
+(or (not x3200) (not x2595) x2666)
+(or (not x3202) x3201 x3198)
+(or (not x3200) (not x2666) x2595)
+(or (not x3198) x3202 x3201)
+(or (not x3200) (not x2593) x2665)
+(or (not x3201) x3202 x3198)
+(or (not x3200) (not x2665) x2593)
+(or (not x3199) (not x3196))
+(or (not x3200) (not x2592) x2664)
+(or (not x3199) x3198 x3196)
+(or (not x3200) (not x2664) x2592)
+(or (not x3196) x3199 x3198)
+(or (not x52) x3186 x3178 x2581)
+(or (not x3198) x3199 x3196)
+(or (not x3186) (not x2581) (not x52) x3178)
+(or (not x3197) x3196)
+(or (not x3186) x3178 x2581 x52)
+(or (not x3196) x3197)
+(or (not x2581) x3186 x3178 x52)
+(or (not x3195) (not x3192))
+(or (not x3178) (not x50) x3186 x3176 x2580)
+(or (not x3195) x3194 x3192)
+(or (not x3186) (not x3178) (not x2580) (not x50) x3176)
+(or (not x3192) x3195 x3194)
+(or (not x3186) (not x3178) x3176 x2580 x50)
+(or (not x3194) x3195 x3192)
+(or (not x3178) (not x2580) x3186 x3176 x50)
+(or (not x3193) (not x3191))
+(or (not x3176) (not x48) x3186 x3171 x2578)
+(or (not x3193) x3192 x3191)
+(or (not x3186) (not x3176) (not x2578) (not x48) x3171)
+(or (not x3191) x3193 x3192)
+(or (not x3186) (not x3176) x3171 x2578 x48)
+(or (not x3192) x3193 x3191)
+(or (not x3176) (not x2578) x3186 x3171 x48)
+(or (not x3171) (not x46) x3186 x3168 x2576)
+(or (not x3186) (not x3171) (not x2576) (not x46) x3168)
+(or (not x3189) x3191)
+(or (not x3186) (not x3171) x3168 x2576 x46)
+(or (not x3191) x3189)
+(or (not x3171) (not x2576) x3186 x3168 x46)
+(or (not x3190) (not x3187))
+(or (not x3168) (not x44) x3186 x3163 x2574)
+(or (not x3190) x3189 x3187)
+(or (not x3186) (not x3168) (not x2574) (not x44) x3163)
+(or (not x3187) x3190 x3189)
+(or (not x3186) (not x3168) x3163 x2574 x44)
+(or (not x3189) x3190 x3187)
+(or (not x3168) (not x2574) x3186 x3163 x44)
+(or (not x3188) (not x3184))
+(or (not x3163) (not x149) x3186 x3162 x2572)
+(or (not x3188) x3187 x3184)
+(or (not x3186) (not x3163) (not x2572) (not x149) x3162)
+(or (not x3184) x3188 x3187)
+(or (not x3186) (not x3163) x3162 x2572 x149)
+(or (not x3187) x3188 x3184)
+(or (not x3163) (not x2572) x3186 x3162 x149)
+(or (not x3185) x3184)
+(or (not x3186) (not x3183))
+(or (not x3184) x3185)
+(or (not x3162) x3183)
+(or (not x3182) (not x3179))
+(or (not x3183) x3162)
+(or (not x3182) x3181 x3179)
+(or x3178 x2660 x2581)
+(or (not x3179) x3182 x3181)
+(or (not x2660) (not x2581) x3178)
+(or (not x3181) x3182 x3179)
+(or (not x3178) (not x2581) x2660)
+(or (not x3180) (not x3177))
+(or (not x3178) (not x2660) x2581)
+(or (not x3180) x3179 x3177)
+(or (not x3178) x3176 x2659 x2580)
+(or (not x3177) x3180 x3179)
+(or (not x3178) (not x2659) (not x2580) x3176)
+(or (not x3179) x3180 x3177)
+(or (not x3176) (not x2580) x2659)
+(or (not x3176) (not x2659) x2580)
+(or (not x3176) x3178)
+(or (not x3174) x3177)
+(or (not x3176) x3171 x2657 x2578)
+(or (not x3177) x3174)
+(or (not x3176) (not x2657) (not x2578) x3171)
+(or (not x3175) (not x3172))
+(or (not x3171) (not x2578) x2657)
+(or (not x3175) x3174 x3172)
+(or (not x3171) (not x2657) x2578)
+(or (not x3172) x3175 x3174)
+(or (not x3171) x3176)
+(or (not x3174) x3175 x3172)
+(or (not x3171) x3168 x2655 x2576)
+(or (not x3173) (not x3169))
+(or (not x3171) (not x2655) (not x2576) x3168)
+(or (not x3173) x3172 x3169)
+(or (not x3168) (not x2576) x2655)
+(or (not x3169) x3173 x3172)
+(or (not x3168) (not x2655) x2576)
+(or (not x3172) x3173 x3169)
+(or (not x3168) x3171)
+(or (not x3170) x3169)
+(or (not x3168) x3163 x2653 x2574)
+(or (not x3169) x3170)
+(or (not x3168) (not x2653) (not x2574) x3163)
+(or (not x3167) (not x3164))
+(or (not x3163) (not x2574) x2653)
+(or (not x3167) x3166 x3164)
+(or (not x3163) (not x2653) x2574)
+(or (not x3164) x3167 x3166)
+(or (not x3163) x3168)
+(or (not x3166) x3167 x3164)
+(or (not x3163) x3162 x2651 x2572)
+(or (not x3165) (not x3161))
+(or (not x3163) (not x2651) (not x2572) x3162)
+(or (not x3165) x3164 x3161)
+(or (not x3162) (not x2572) x2651)
+(or (not x3161) x3165 x3164)
+(or (not x3162) (not x2651) x2572)
+(or (not x3164) x3165 x3161)
+(or (not x3162) x3163)
+(or (not x3143) (not x2180) (not x2175))
+(or (not x2180) (not x2175) x3142)
+(or (not x3159) x3161)
+(or (not x3143) (not x2180) (not x2176) x95)
+(or (not x3161) x3159)
+(or (not x2180) (not x2176) (not x95) x3143)
+(or (not x3160) (not x3157))
+(or (not x3142) (not x2180) (not x2176))
+(or (not x3160) x3159 x3157)
+(or (not x3143) (not x2180) (not x2177) x94)
+(or (not x3157) x3160 x3159)
+(or (not x2180) (not x2177) (not x94) x3143)
+(or (not x3159) x3160 x3157)
+(or (not x3142) (not x2180) (not x2177))
+(or (not x3158) (not x3155))
+(or (not x3143) (not x2180) (not x2178) x92)
+(or (not x3158) x3157 x3155)
+(or (not x2180) (not x2178) (not x92) x3143)
+(or (not x3155) x3158 x3157)
+(or (not x3142) (not x2180) (not x2178))
+(or (not x3157) x3158 x3155)
+(or (not x3143) (not x2180) (not x2179) x91)
+(or (not x3156) x3155)
+(or (not x2180) (not x2179) (not x91) x3143)
+(or (not x3155) x3156)
+(or (not x3142) (not x2180) (not x2179))
+(or (not x2515) (not x3153))
+(or (not x3143) (not x2181) (not x2175) x89)
+(or (not x2515) x3154 x3153)
+(or (not x2181) (not x2175) (not x89) x3143)
+(or (not x3153) x2515 x3154)
+(or (not x3142) (not x2181) (not x2175))
+(or (not x3154) x2515 x3153)
+(or (not x3143) (not x2181) (not x2176))
+(or (not x2510) (not x3152))
+(or (not x2181) (not x2176) x3142)
+(or (not x2510) x3153 x3152)
+(or (not x3143) (not x2181) (not x2177) x88)
+(or (not x3152) x2510 x3153)
+(or (not x2181) (not x2177) (not x88) x3143)
+(or (not x3153) x2510 x3152)
+(or (not x3142) (not x2181) (not x2177))
+(or (not x3143) (not x2181) (not x2178) x87)
+(or (not x2181) (not x2178) (not x87) x3143)
+(or (not x3151) x3152)
+(or (not x3142) (not x2181) (not x2178))
+(or (not x3152) x3151)
+(or (not x3143) (not x2181) (not x2179) x86)
+(or (not x2507) (not x3150))
+(or (not x2181) (not x2179) (not x86) x3143)
+(or (not x2507) x3151 x3150)
+(or (not x3142) (not x2181) (not x2179))
+(or (not x3150) x2507 x3151)
+(or (not x3143) (not x2182) (not x2175) x82)
+(or (not x3151) x2507 x3150)
+(or (not x2182) (not x2175) (not x82) x3143)
+(or (not x2504) (not x3149))
+(or (not x3142) (not x2182) (not x2175))
+(or (not x2504) x3150 x3149)
+(or (not x3143) (not x2182) (not x2176) x81)
+(or (not x3149) x2504 x3150)
+(or (not x2182) (not x2176) (not x81) x3143)
+(or (not x3150) x2504 x3149)
+(or (not x3142) (not x2182) (not x2176))
+(or (not x2501) x3149)
+(or (not x3143) (not x2182) (not x2177))
+(or (not x3149) x2501)
+(or (not x2182) (not x2177) x3142)
+(or (not x3143) (not x2182) (not x2178) x79)
+(or (not x2182) (not x2178) (not x79) x3143)
+(or (not x3142) (not x2182) (not x2178))
+(or (not x3148) (not x3146))
+(or (not x3143) (not x2182) (not x2179) x77)
+(or (not x3148) x3146)
+(or (not x2182) (not x2179) (not x77) x3143)
+(or (not x3146) x3148)
+(or (not x3142) (not x2182) (not x2179))
+(or (not x3143) (not x2183) (not x2175) x73)
+(or (not x3147) (not x3144))
+(or (not x2183) (not x2175) (not x73) x3143)
+(or (not x3147) x3146 x3144)
+(or (not x3142) (not x2183) (not x2175))
+(or (not x3144) x3147 x3146)
+(or (not x3143) (not x2183) (not x2176) x67)
+(or (not x3146) x3147 x3144)
+(or (not x2183) (not x2176) (not x67) x3143)
+(or (not x3145) x3144)
+(or (not x3142) (not x2183) (not x2176))
+(or (not x3144) x3145)
+(or (not x3143) (not x2183) (not x2177) x66)
+(or (not x3116) (not x3105) (not x1045))
+(or (not x2183) (not x2177) (not x66) x3143)
+(or (not x3116) (not x3105))
+(or (not x3142) (not x2183) (not x2177))
+(or (not x3116) (not x3103) (not x1043))
+(or (not x3143) (not x2183) (not x2178))
+(or (not x3116) (not x3103) x645)
+(or (not x2183) (not x2178) x3142)
+(or (not x3116) (not x3101) (not x1042))
+(or (not x3143) (not x2183) (not x2179) x65)
+(or (not x3116) (not x3101) x640)
+(or (not x2183) (not x2179) (not x65) x3143)
+(or (not x3116) (not x3098) (not x1037))
+(or (not x3142) (not x2183) (not x2179))
+(or (not x3116) (not x3098) x630)
+(or (not x3143) (not x2184) (not x2175) x58)
+(or (not x3116) (not x3096) x622)
+(or (not x2184) (not x2175) (not x58) x3143)
+(or (not x3116) x3105 x3103 x3101 x3098 x3096)
+(or (not x3142) (not x2184) (not x2175))
+(or (not x3116) (not x3105))
+(or (not x3143) (not x2184) (not x2176) x57)
+(or (not x3116) (not x3094))
+(or (not x2184) (not x2176) (not x57) x3143)
+(or (not x3116) (not x3080))
+(or (not x3142) (not x2184) (not x2176))
+(or (not x3116) (not x2499))
+(or (not x3143) (not x2184) (not x2177) x56)
+(or (not x3105) (not x3094) (not x1045))
+(or (not x2184) (not x2177) (not x56) x3143)
+(or (not x3105) (not x3094))
+(or (not x3142) (not x2184) (not x2177))
+(or (not x3105) (not x3092) (not x1043))
+(or (not x3143) (not x2184) (not x2178) x55)
+(or (not x3105) (not x3092) x645)
+(or (not x2184) (not x2178) (not x55) x3143)
+(or (not x3105) (not x3090) (not x1042))
+(or (not x3142) (not x2184) (not x2178))
+(or (not x3105) (not x3090) x640)
+(or (not x3143) (not x2184) (not x2179))
+(or (not x3105) (not x3085) (not x1037))
+(or (not x2184) (not x2179) x3142)
+(or (not x3105) (not x3085) x630)
+(or (not x3141) (not x69) (not x10) x3140)
+(or (not x3105) (not x3082) x622)
+(or (not x3140) (not x3136) (not x3128) x3139 x3138)
+(or (not x3105) x3094 x3092 x3090 x3085 x3082)
+(or (not x3140) (not x3128) x3137 x3136)
+(or (not x3105) (not x3094))
+(or (not x3140) x3129 x3128)
+(or (not x3105) (not x3080))
+(or (not x3138) (not x3136) (not x3128) x3140)
+(or (not x3105) (not x2499))
+(or (not x3139) (not x3136) (not x3128) x3140)
+(or (not x3094) (not x3080) (not x1045))
+(or (not x3137) (not x3128) x3140)
+(or (not x3094) (not x3080))
+(or (not x3129) x3140)
+(or (not x3094) (not x3078) (not x1043))
+(or (not x3139) (not x3138))
+(or (not x3094) (not x3078) x645)
+(or (not x2668) x3139 x2565 x2280)
+(or (not x3094) (not x3076) (not x1042))
+(or (not x3139) (not x2668) (not x2280) x2565)
+(or (not x3094) (not x3076) x640)
+(or (not x3139) (not x2565) x2668 x2280)
+(or (not x3094) (not x3073) (not x1037))
+(or (not x2565) (not x2280) x3139 x2668)
+(or (not x3094) (not x3073) x630)
+(or (not x2667) x3139 x2563 x2280)
+(or (not x3094) (not x3070) x622)
+(or (not x3139) (not x2667) (not x2280) x2563)
+(or (not x3094) x3080 x3078 x3076 x3073 x3070)
+(or (not x3139) (not x2563) x2667 x2280)
+(or (not x3094) (not x3080))
+(or (not x2563) (not x2280) x3139 x2667)
+(or (not x3094) (not x2499))
+(or (not x2666) x3139 x2561 x2280)
+(or (not x3080) (not x2499) (not x1045))
+(or (not x3139) (not x2666) (not x2280) x2561)
+(or (not x3080) (not x2499))
+(or (not x3139) (not x2561) x2666 x2280)
+(or (not x3080) (not x2496) (not x1043))
+(or (not x2561) (not x2280) x3139 x2666)
+(or (not x3080) (not x2496) x645)
+(or (not x2665) x3139 x2559 x2280)
+(or (not x3080) (not x2493) (not x1042))
+(or (not x3139) (not x2665) (not x2280) x2559)
+(or (not x3080) (not x2493) x640)
+(or (not x3139) (not x2559) x2665 x2280)
+(or (not x3080) (not x2490) (not x1037))
+(or (not x2559) (not x2280) x3139 x2665)
+(or (not x3080) (not x2490) x630)
+(or (not x2664) x3139 x2557 x2280)
+(or (not x3080) (not x2487) x622)
+(or (not x3139) (not x2664) (not x2280) x2557)
+(or (not x3080) x2499 x2496 x2493 x2490 x2487)
+(or (not x3139) (not x2557) x2664 x2280)
+(or (not x3080) (not x2499))
+(or (not x2557) (not x2280) x3139 x2664)
+(or (not x2499) (not x1040))
+(or (not x2667) (not x2563) x3138 x2668 x2565)
+(or (not x2499) x635)
+(or (not x2666) (not x2561) x3138 x2667 x2563)
+(or (not x2499) (not x3061) (not x1037))
+(or (not x2665) (not x2559) x3138 x2666 x2561)
+(or (not x2499) (not x3061) x630)
+(or (not x2664) (not x2557) x3138 x2665 x2559)
+(or (not x2499) (not x3060) x622)
+(or x3138 x2664 x2557)
+(or (not x1045) x3116 x3105 x3094 x3080 x2499)
+(or (not x2668) (not x2565) x3138)
+(or (not x3114) (not x3105) (not x1045))
+(or (not x3138) (not x2565) x2668)
+(or (not x3114) (not x3105) x655)
+(or (not x3138) (not x2668) x2565)
+(or (not x3114) (not x3103) (not x1043))
+(or (not x3138) (not x2563) x2667)
+(or (not x3114) (not x3103))
+(or (not x3138) (not x2667) x2563)
+(or (not x3114) (not x3101) (not x1042))
+(or (not x3138) (not x2561) x2666)
+(or (not x3114) (not x3101) x639)
+(or (not x3138) (not x2666) x2561)
+(or (not x3114) (not x3098) (not x1037))
+(or (not x3138) (not x2559) x2665)
+(or (not x3114) (not x3098) x629)
+(or (not x3138) (not x2665) x2559)
+(or (not x3114) (not x3096) x621)
+(or (not x3138) (not x2557) x2664)
+(or (not x3114) x3105 x3103 x3101 x3098 x3096)
+(or (not x3138) (not x2664) x2557)
+(or (not x3114) (not x3103))
+(or (not x52) x3137 x3135 x2552)
+(or (not x3114) (not x3092))
+(or (not x3137) (not x2552) (not x52) x3135)
+(or (not x3114) (not x3078))
+(or (not x3137) x3135 x2552 x52)
+(or (not x3114) (not x2496))
+(or (not x2552) x3137 x3135 x52)
+(or (not x3103) (not x3094) (not x1045))
+(or (not x3135) (not x50) x3137 x3134 x2550)
+(or (not x3103) (not x3094) x655)
+(or (not x3137) (not x3135) (not x2550) (not x50) x3134)
+(or (not x3103) (not x3092) (not x1043))
+(or (not x3137) (not x3135) x3134 x2550 x50)
+(or (not x3103) (not x3092))
+(or (not x3135) (not x2550) x3137 x3134 x50)
+(or (not x3103) (not x3090) (not x1042))
+(or (not x3134) (not x48) x3137 x3133 x2547)
+(or (not x3103) (not x3090) x639)
+(or (not x3137) (not x3134) (not x2547) (not x48) x3133)
+(or (not x3103) (not x3085) (not x1037))
+(or (not x3137) (not x3134) x3133 x2547 x48)
+(or (not x3103) (not x3085) x629)
+(or (not x3134) (not x2547) x3137 x3133 x48)
+(or (not x3103) (not x3082) x621)
+(or (not x3133) (not x46) x3137 x3132 x2544)
+(or (not x3103) x3094 x3092 x3090 x3085 x3082)
+(or (not x3137) (not x3133) (not x2544) (not x46) x3132)
+(or (not x3103) (not x3092))
+(or (not x3137) (not x3133) x3132 x2544 x46)
+(or (not x3103) (not x3078))
+(or (not x3133) (not x2544) x3137 x3132 x46)
+(or (not x3103) (not x2496))
+(or (not x3132) (not x44) x3137 x3131 x2541)
+(or (not x3092) (not x3080) (not x1045))
+(or (not x3137) (not x3132) (not x2541) (not x44) x3131)
+(or (not x3092) (not x3080) x655)
+(or (not x3137) (not x3132) x3131 x2541 x44)
+(or (not x3092) (not x3078) (not x1043))
+(or (not x3132) (not x2541) x3137 x3131 x44)
+(or (not x3092) (not x3078))
+(or (not x3131) (not x149) x3137 x3130 x2538)
+(or (not x3092) (not x3076) (not x1042))
+(or (not x3137) (not x3131) (not x2538) (not x149) x3130)
+(or (not x3092) (not x3076) x639)
+(or (not x3137) (not x3131) x3130 x2538 x149)
+(or (not x3092) (not x3073) (not x1037))
+(or (not x3131) (not x2538) x3137 x3130 x149)
+(or (not x3092) (not x3073) x629)
+(or (not x3137) (not x3136))
+(or (not x3092) (not x3070) x621)
+(or (not x3130) x3136)
+(or (not x3092) x3080 x3078 x3076 x3073 x3070)
+(or (not x3136) x3130)
+(or (not x3092) (not x3078))
+(or x3135 x2660 x2552)
+(or (not x3092) (not x2496))
+(or (not x2660) (not x2552) x3135)
+(or (not x3078) (not x2499) (not x1045))
+(or (not x3135) (not x2552) x2660)
+(or (not x3078) (not x2499) x655)
+(or (not x3135) (not x2660) x2552)
+(or (not x3078) (not x2496) (not x1043))
+(or (not x3135) x3134 x2659 x2550)
+(or (not x3078) (not x2496))
+(or (not x3135) (not x2659) (not x2550) x3134)
+(or (not x3078) (not x2493) (not x1042))
+(or (not x3134) (not x2550) x2659)
+(or (not x3078) (not x2493) x639)
+(or (not x3134) (not x2659) x2550)
+(or (not x3078) (not x2490) (not x1037))
+(or (not x3134) x3135)
+(or (not x3078) (not x2490) x629)
+(or (not x3134) x3133 x2657 x2547)
+(or (not x3078) (not x2487) x621)
+(or (not x3134) (not x2657) (not x2547) x3133)
+(or (not x3078) x2499 x2496 x2493 x2490 x2487)
+(or (not x3133) (not x2547) x2657)
+(or (not x3078) (not x2496))
+(or (not x3133) (not x2657) x2547)
+(or (not x2496) (not x1040))
+(or (not x3133) x3134)
+(or (not x2496) x634)
+(or (not x3133) x3132 x2655 x2544)
+(or (not x2496) (not x3061) (not x1037))
+(or (not x3133) (not x2655) (not x2544) x3132)
+(or (not x2496) (not x3061) x629)
+(or (not x3132) (not x2544) x2655)
+(or (not x2496) (not x3060) x621)
+(or (not x3132) (not x2655) x2544)
+(or (not x1043) x3114 x3103 x3092 x3078 x2496)
+(or (not x3132) x3133)
+(or (not x3112) (not x3105) (not x1045))
+(or (not x3132) x3131 x2653 x2541)
+(or (not x3112) (not x3105) x653)
+(or (not x3132) (not x2653) (not x2541) x3131)
+(or (not x3112) (not x3103) (not x1043))
+(or (not x3131) (not x2541) x2653)
+(or (not x3112) (not x3103) x644)
+(or (not x3131) (not x2653) x2541)
+(or (not x3112) (not x3101) (not x1042))
+(or (not x3131) x3132)
+(or (not x3112) (not x3101))
+(or (not x3131) x3130 x2651 x2538)
+(or (not x3112) (not x3098) (not x1037))
+(or (not x3131) (not x2651) (not x2538) x3130)
+(or (not x3112) (not x3098) x626)
+(or (not x3130) (not x2538) x2651)
+(or (not x3112) (not x3096) x620)
+(or (not x3130) (not x2651) x2538)
+(or (not x3112) x3105 x3103 x3101 x3098 x3096)
+(or (not x3130) x3131)
+(or (not x3112) (not x3101))
+(or (not x3129) (not x2180) (not x2170))
+(or (not x3112) (not x3090))
+(or (not x2180) (not x2170) x3128)
+(or (not x3112) (not x3076))
+(or (not x3129) (not x2180) (not x2171) x95)
+(or (not x3112) (not x2493))
+(or (not x2180) (not x2171) (not x95) x3129)
+(or (not x3101) (not x3094) (not x1045))
+(or (not x3128) (not x2180) (not x2171))
+(or (not x3101) (not x3094) x653)
+(or (not x3129) (not x2180) (not x2172) x94)
+(or (not x3101) (not x3092) (not x1043))
+(or (not x2180) (not x2172) (not x94) x3129)
+(or (not x3101) (not x3092) x644)
+(or (not x3128) (not x2180) (not x2172))
+(or (not x3101) (not x3090) (not x1042))
+(or (not x3129) (not x2180) (not x2173) x92)
+(or (not x3101) (not x3090))
+(or (not x2180) (not x2173) (not x92) x3129)
+(or (not x3101) (not x3085) (not x1037))
+(or (not x3128) (not x2180) (not x2173))
+(or (not x3101) (not x3085) x626)
+(or (not x3129) (not x2180) (not x2174) x91)
+(or (not x3101) (not x3082) x620)
+(or (not x2180) (not x2174) (not x91) x3129)
+(or (not x3101) x3094 x3092 x3090 x3085 x3082)
+(or (not x3128) (not x2180) (not x2174))
+(or (not x3101) (not x3090))
+(or (not x3129) (not x2181) (not x2170) x89)
+(or (not x3101) (not x3076))
+(or (not x2181) (not x2170) (not x89) x3129)
+(or (not x3101) (not x2493))
+(or (not x3128) (not x2181) (not x2170))
+(or (not x3090) (not x3080) (not x1045))
+(or (not x3129) (not x2181) (not x2171))
+(or (not x3090) (not x3080) x653)
+(or (not x2181) (not x2171) x3128)
+(or (not x3090) (not x3078) (not x1043))
+(or (not x3129) (not x2181) (not x2172) x88)
+(or (not x3090) (not x3078) x644)
+(or (not x2181) (not x2172) (not x88) x3129)
+(or (not x3090) (not x3076) (not x1042))
+(or (not x3128) (not x2181) (not x2172))
+(or (not x3090) (not x3076))
+(or (not x3129) (not x2181) (not x2173) x87)
+(or (not x3090) (not x3073) (not x1037))
+(or (not x2181) (not x2173) (not x87) x3129)
+(or (not x3090) (not x3073) x626)
+(or (not x3128) (not x2181) (not x2173))
+(or (not x3090) (not x3070) x620)
+(or (not x3129) (not x2181) (not x2174) x86)
+(or (not x3090) x3080 x3078 x3076 x3073 x3070)
+(or (not x2181) (not x2174) (not x86) x3129)
+(or (not x3090) (not x3076))
+(or (not x3128) (not x2181) (not x2174))
+(or (not x3090) (not x2493))
+(or (not x3129) (not x2182) (not x2170) x82)
+(or (not x3076) (not x2499) (not x1045))
+(or (not x2182) (not x2170) (not x82) x3129)
+(or (not x3076) (not x2499) x653)
+(or (not x3128) (not x2182) (not x2170))
+(or (not x3076) (not x2496) (not x1043))
+(or (not x3129) (not x2182) (not x2171) x81)
+(or (not x3076) (not x2496) x644)
+(or (not x2182) (not x2171) (not x81) x3129)
+(or (not x3076) (not x2493) (not x1042))
+(or (not x3128) (not x2182) (not x2171))
+(or (not x3076) (not x2493))
+(or (not x3129) (not x2182) (not x2172))
+(or (not x3076) (not x2490) (not x1037))
+(or (not x2182) (not x2172) x3128)
+(or (not x3076) (not x2490) x626)
+(or (not x3129) (not x2182) (not x2173) x79)
+(or (not x3076) (not x2487) x620)
+(or (not x2182) (not x2173) (not x79) x3129)
+(or (not x3076) x2499 x2496 x2493 x2490 x2487)
+(or (not x3128) (not x2182) (not x2173))
+(or (not x3076) (not x2493))
+(or (not x3129) (not x2182) (not x2174) x77)
+(or (not x2493) (not x1040))
+(or (not x2182) (not x2174) (not x77) x3129)
+(or (not x2493) x633)
+(or (not x3128) (not x2182) (not x2174))
+(or (not x2493) (not x3061) (not x1037))
+(or (not x3129) (not x2183) (not x2170) x73)
+(or (not x2493) (not x3061) x626)
+(or (not x2183) (not x2170) (not x73) x3129)
+(or (not x2493) (not x3060) x620)
+(or (not x3128) (not x2183) (not x2170))
+(or (not x1042) x3112 x3101 x3090 x3076 x2493)
+(or (not x3129) (not x2183) (not x2171) x67)
+(or (not x3109) (not x3105) (not x1045))
+(or (not x2183) (not x2171) (not x67) x3129)
+(or (not x3109) (not x3105) x650)
+(or (not x3128) (not x2183) (not x2171))
+(or (not x3109) (not x3103) (not x1043))
+(or (not x3129) (not x2183) (not x2172) x66)
+(or (not x3109) (not x3103) x642)
+(or (not x2183) (not x2172) (not x66) x3129)
+(or (not x3109) (not x3101) (not x1042))
+(or (not x3128) (not x2183) (not x2172))
+(or (not x3109) (not x3101) x637)
+(or (not x3129) (not x2183) (not x2173))
+(or (not x2183) (not x2173) x3128)
+(or (not x3129) (not x2183) (not x2174) x65)
+(or (not x3109) (not x3098) (not x1037))
+(or (not x2183) (not x2174) (not x65) x3129)
+(or (not x3109) (not x3098))
+(or (not x3128) (not x2183) (not x2174))
+(or (not x3109) (not x3096) x616)
+(or (not x3129) (not x2184) (not x2170) x58)
+(or (not x3109) x3105 x3103 x3101 x3098 x3096)
+(or (not x2184) (not x2170) (not x58) x3129)
+(or (not x3109) (not x3098))
+(or (not x3128) (not x2184) (not x2170))
+(or (not x3109) (not x3085))
+(or (not x3129) (not x2184) (not x2171) x57)
+(or (not x3109) (not x3073))
+(or (not x2184) (not x2171) (not x57) x3129)
+(or (not x3109) (not x2490))
+(or (not x3128) (not x2184) (not x2171))
+(or (not x3109) (not x3061))
+(or (not x3129) (not x2184) (not x2172) x56)
+(or (not x3098) (not x3094) (not x1045))
+(or (not x2184) (not x2172) (not x56) x3129)
+(or (not x3098) (not x3094) x650)
+(or (not x3128) (not x2184) (not x2172))
+(or (not x3098) (not x3092) (not x1043))
+(or (not x3129) (not x2184) (not x2173) x55)
+(or (not x3098) (not x3092) x642)
+(or (not x2184) (not x2173) (not x55) x3129)
+(or (not x3098) (not x3090) (not x1042))
+(or (not x3128) (not x2184) (not x2173))
+(or (not x3098) (not x3090) x637)
+(or (not x3129) (not x2184) (not x2174))
+(or (not x2184) (not x2174) x3128)
+(or (not x3127) (not x3123) (not x3087) x3126 x3125)
+(or (not x3098) (not x3085) (not x1037))
+(or (not x3127) (not x3087) x3124 x3123)
+(or (not x3098) (not x3085))
+(or (not x3127) x3088 x3087)
+(or (not x3098) (not x3082) x616)
+(or (not x3125) (not x3123) (not x3087) x3127)
+(or (not x3098) x3094 x3092 x3090 x3085 x3082)
+(or (not x3126) (not x3123) (not x3087) x3127)
+(or (not x3098) (not x3085))
+(or (not x3124) (not x3087) x3127)
+(or (not x3098) (not x3073))
+(or (not x3088) x3127)
+(or (not x3098) (not x2490))
+(or (not x3126) (not x3125))
+(or (not x3098) (not x3061))
+(or (not x2668) x3126 x2564 x2280)
+(or (not x3085) (not x3080) (not x1045))
+(or (not x3126) (not x2668) (not x2280) x2564)
+(or (not x3085) (not x3080) x650)
+(or (not x3126) (not x2564) x2668 x2280)
+(or (not x3085) (not x3078) (not x1043))
+(or (not x2564) (not x2280) x3126 x2668)
+(or (not x3085) (not x3078) x642)
+(or (not x2667) x3126 x2562 x2280)
+(or (not x3085) (not x3076) (not x1042))
+(or (not x3126) (not x2667) (not x2280) x2562)
+(or (not x3085) (not x3076) x637)
+(or (not x3126) (not x2562) x2667 x2280)
+(or (not x2562) (not x2280) x3126 x2667)
+(or (not x2666) x3126 x2560 x2280)
+(or (not x3085) (not x3073) (not x1037))
+(or (not x3126) (not x2666) (not x2280) x2560)
+(or (not x3085) (not x3073))
+(or (not x3126) (not x2560) x2666 x2280)
+(or (not x3085) (not x3070) x616)
+(or (not x2560) (not x2280) x3126 x2666)
+(or (not x3085) x3080 x3078 x3076 x3073 x3070)
+(or (not x2665) x3126 x2558 x2280)
+(or (not x3085) (not x3073))
+(or (not x3126) (not x2665) (not x2280) x2558)
+(or (not x3085) (not x2490))
+(or (not x3126) (not x2558) x2665 x2280)
+(or (not x3085) (not x3061))
+(or (not x2558) (not x2280) x3126 x2665)
+(or (not x3073) (not x2499) (not x1045))
+(or (not x2664) x3126 x2556 x2280)
+(or (not x3073) (not x2499) x650)
+(or (not x3126) (not x2664) (not x2280) x2556)
+(or (not x3073) (not x2496) (not x1043))
+(or (not x3126) (not x2556) x2664 x2280)
+(or (not x3073) (not x2496) x642)
+(or (not x2556) (not x2280) x3126 x2664)
+(or (not x3073) (not x2493) (not x1042))
+(or (not x2667) (not x2562) x3125 x2668 x2564)
+(or (not x3073) (not x2493) x637)
+(or (not x2666) (not x2560) x3125 x2667 x2562)
+(or (not x2665) (not x2558) x3125 x2666 x2560)
+(or (not x2664) (not x2556) x3125 x2665 x2558)
+(or (not x3073) (not x2490) (not x1037))
+(or x3125 x2664 x2556)
+(or (not x3073) (not x2490))
+(or (not x2668) (not x2564) x3125)
+(or (not x3073) (not x2487) x616)
+(or (not x3125) (not x2564) x2668)
+(or (not x3073) x2499 x2496 x2493 x2490 x2487)
+(or (not x3125) (not x2668) x2564)
+(or (not x3073) (not x2490))
+(or (not x3125) (not x2562) x2667)
+(or (not x3073) (not x3061))
+(or (not x3125) (not x2667) x2562)
+(or (not x2490) (not x1040))
+(or (not x3125) (not x2560) x2666)
+(or (not x2490) x632)
+(or (not x3125) (not x2666) x2560)
+(or (not x2490) (not x3061) (not x1037))
+(or (not x3125) (not x2558) x2665)
+(or (not x2490) (not x3061))
+(or (not x3125) (not x2665) x2558)
+(or (not x2490) (not x3060) x616)
+(or (not x3125) (not x2556) x2664)
+(or (not x2490) (not x3061))
+(or (not x3125) (not x2664) x2556)
+(or (not x1037) x3109 x3098 x3085 x3073 x2490 x3061)
+(or (not x52) x3124 x3122 x2551)
+(or (not x3107) (not x3105) (not x1045))
+(or (not x3124) (not x2551) (not x52) x3122)
+(or (not x3107) (not x3105) x648)
+(or (not x3124) x3122 x2551 x52)
+(or (not x3107) (not x3103) (not x1043))
+(or (not x2551) x3124 x3122 x52)
+(or (not x3107) (not x3103) x641)
+(or (not x3122) (not x50) x3124 x3121 x2549)
+(or (not x3107) (not x3101) (not x1042))
+(or (not x3124) (not x3122) (not x2549) (not x50) x3121)
+(or (not x3107) (not x3101) x636)
+(or (not x3124) (not x3122) x3121 x2549 x50)
+(or (not x3122) (not x2549) x3124 x3121 x50)
+(or (not x3121) (not x48) x3124 x3120 x2546)
+(or (not x3107) (not x3098) (not x1037))
+(or (not x3124) (not x3121) (not x2546) (not x48) x3120)
+(or (not x3107) (not x3098) x623)
+(or (not x3124) (not x3121) x3120 x2546 x48)
+(or (not x3107) (not x3096))
+(or (not x3121) (not x2546) x3124 x3120 x48)
+(or (not x3107) x3105 x3103 x3101 x3098 x3096)
+(or (not x3120) (not x46) x3124 x3119 x2543)
+(or (not x3107) (not x3096))
+(or (not x3124) (not x3120) (not x2543) (not x46) x3119)
+(or (not x3107) (not x3082))
+(or (not x3124) (not x3120) x3119 x2543 x46)
+(or (not x3107) (not x3070))
+(or (not x3120) (not x2543) x3124 x3119 x46)
+(or (not x3107) (not x2487))
+(or (not x3119) (not x44) x3124 x3118 x2540)
+(or (not x3107) (not x3060))
+(or (not x3124) (not x3119) (not x2540) (not x44) x3118)
+(or (not x3096) (not x3094) (not x1045))
+(or (not x3124) (not x3119) x3118 x2540 x44)
+(or (not x3096) (not x3094) x648)
+(or (not x3119) (not x2540) x3124 x3118 x44)
+(or (not x3096) (not x3092) (not x1043))
+(or (not x3118) (not x149) x3124 x3117 x2537)
+(or (not x3096) (not x3092) x641)
+(or (not x3124) (not x3118) (not x2537) (not x149) x3117)
+(or (not x3096) (not x3090) (not x1042))
+(or (not x3124) (not x3118) x3117 x2537 x149)
+(or (not x3096) (not x3090) x636)
+(or (not x3118) (not x2537) x3124 x3117 x149)
+(or (not x3124) (not x3123))
+(or (not x3117) x3123)
+(or (not x3096) (not x3085) (not x1037))
+(or (not x3123) x3117)
+(or (not x3096) (not x3085) x623)
+(or x3122 x2660 x2551)
+(or (not x3096) (not x3082))
+(or (not x2660) (not x2551) x3122)
+(or (not x3096) x3094 x3092 x3090 x3085 x3082)
+(or (not x3122) (not x2551) x2660)
+(or (not x3096) (not x3082))
+(or (not x3122) (not x2660) x2551)
+(or (not x3096) (not x3070))
+(or (not x3122) x3121 x2659 x2549)
+(or (not x3096) (not x2487))
+(or (not x3122) (not x2659) (not x2549) x3121)
+(or (not x3096) (not x3060))
+(or (not x3121) (not x2549) x2659)
+(or (not x3082) (not x3080) (not x1045))
+(or (not x3121) (not x2659) x2549)
+(or (not x3082) (not x3080) x648)
+(or (not x3121) x3122)
+(or (not x3082) (not x3078) (not x1043))
+(or (not x3121) x3120 x2657 x2546)
+(or (not x3082) (not x3078) x641)
+(or (not x3121) (not x2657) (not x2546) x3120)
+(or (not x3082) (not x3076) (not x1042))
+(or (not x3120) (not x2546) x2657)
+(or (not x3082) (not x3076) x636)
+(or (not x3120) (not x2657) x2546)
+(or (not x3120) x3121)
+(or (not x3120) x3119 x2655 x2543)
+(or (not x3082) (not x3073) (not x1037))
+(or (not x3120) (not x2655) (not x2543) x3119)
+(or (not x3082) (not x3073) x623)
+(or (not x3119) (not x2543) x2655)
+(or (not x3082) (not x3070))
+(or (not x3119) (not x2655) x2543)
+(or (not x3082) x3080 x3078 x3076 x3073 x3070)
+(or (not x3119) x3120)
+(or (not x3082) (not x3070))
+(or (not x3119) x3118 x2653 x2540)
+(or (not x3082) (not x2487))
+(or (not x3119) (not x2653) (not x2540) x3118)
+(or (not x3082) (not x3060))
+(or (not x3118) (not x2540) x2653)
+(or (not x3070) (not x2499) (not x1045))
+(or (not x3118) (not x2653) x2540)
+(or (not x3070) (not x2499) x648)
+(or (not x3118) x3119)
+(or (not x3070) (not x2496) (not x1043))
+(or (not x3118) x3117 x2651 x2537)
+(or (not x3070) (not x2496) x641)
+(or (not x3118) (not x2651) (not x2537) x3117)
+(or (not x3070) (not x2493) (not x1042))
+(or (not x3117) (not x2537) x2651)
+(or (not x3070) (not x2493) x636)
+(or (not x3117) (not x2651) x2537)
+(or (not x3117) x3118)
+(or (not x3088) (not x2180) (not x2165))
+(or (not x3070) (not x2490) (not x1037))
+(or (not x2180) (not x2165) x3087)
+(or (not x3070) (not x2490) x623)
+(or (not x3088) (not x2180) (not x2166) x95)
+(or (not x3070) (not x2487))
+(or (not x2180) (not x2166) (not x95) x3088)
+(or (not x3070) x2499 x2496 x2493 x2490 x2487)
+(or (not x3087) (not x2180) (not x2166))
+(or (not x3070) (not x2487))
+(or (not x3088) (not x2180) (not x2167) x94)
+(or (not x3070) (not x3060))
+(or (not x2180) (not x2167) (not x94) x3088)
+(or (not x2487) (not x1040))
+(or (not x3087) (not x2180) (not x2167))
+(or (not x2487) x631)
+(or (not x3088) (not x2180) (not x2168) x92)
+(or (not x2487) (not x3061) (not x1037))
+(or (not x2180) (not x2168) (not x92) x3088)
+(or (not x2487) (not x3061) x623)
+(or (not x3087) (not x2180) (not x2168))
+(or (not x2487) (not x3060))
+(or (not x3088) (not x2180) (not x2169) x91)
+(or (not x2487) (not x3060))
+(or (not x2180) (not x2169) (not x91) x3088)
+(or (not x3116) (not x3113))
+(or (not x3087) (not x2180) (not x2169))
+(or (not x3116) x3115 x3113)
+(or (not x3088) (not x2181) (not x2165) x89)
+(or (not x3113) x3116 x3115)
+(or (not x2181) (not x2165) (not x89) x3088)
+(or (not x3115) x3116 x3113)
+(or (not x3087) (not x2181) (not x2165))
+(or (not x3114) (not x3111))
+(or (not x3088) (not x2181) (not x2166))
+(or (not x3114) x3113 x3111)
+(or (not x2181) (not x2166) x3087)
+(or (not x3111) x3114 x3113)
+(or (not x3088) (not x2181) (not x2167) x88)
+(or (not x3113) x3114 x3111)
+(or (not x2181) (not x2167) (not x88) x3088)
+(or (not x3112) (not x3110))
+(or (not x3087) (not x2181) (not x2167))
+(or (not x3112) x3111 x3110)
+(or (not x3088) (not x2181) (not x2168) x87)
+(or (not x3110) x3112 x3111)
+(or (not x2181) (not x2168) (not x87) x3088)
+(or (not x3111) x3112 x3110)
+(or (not x3087) (not x2181) (not x2168))
+(or (not x3088) (not x2181) (not x2169) x86)
+(or (not x2181) (not x2169) (not x86) x3088)
+(or (not x3108) x3110)
+(or (not x3087) (not x2181) (not x2169))
+(or (not x3110) x3108)
+(or (not x3088) (not x2182) (not x2165) x82)
+(or (not x3109) (not x3106))
+(or (not x2182) (not x2165) (not x82) x3088)
+(or (not x3109) x3108 x3106)
+(or (not x3087) (not x2182) (not x2165))
+(or (not x3106) x3109 x3108)
+(or (not x3088) (not x2182) (not x2166) x81)
+(or (not x3108) x3109 x3106)
+(or (not x2182) (not x2166) (not x81) x3088)
+(or (not x3107) x3106)
+(or (not x3087) (not x2182) (not x2166))
+(or (not x3106) x3107)
+(or (not x3088) (not x2182) (not x2167))
+(or (not x3105) (not x3102))
+(or (not x2182) (not x2167) x3087)
+(or (not x3105) x3104 x3102)
+(or (not x3088) (not x2182) (not x2168) x79)
+(or (not x3102) x3105 x3104)
+(or (not x2182) (not x2168) (not x79) x3088)
+(or (not x3104) x3105 x3102)
+(or (not x3087) (not x2182) (not x2168))
+(or (not x3103) (not x3100))
+(or (not x3088) (not x2182) (not x2169) x77)
+(or (not x3103) x3102 x3100)
+(or (not x2182) (not x2169) (not x77) x3088)
+(or (not x3100) x3103 x3102)
+(or (not x3087) (not x2182) (not x2169))
+(or (not x3102) x3103 x3100)
+(or (not x3088) (not x2183) (not x2165) x73)
+(or (not x3101) (not x3099))
+(or (not x2183) (not x2165) (not x73) x3088)
+(or (not x3101) x3100 x3099)
+(or (not x3087) (not x2183) (not x2165))
+(or (not x3099) x3101 x3100)
+(or (not x3088) (not x2183) (not x2166) x67)
+(or (not x3100) x3101 x3099)
+(or (not x2183) (not x2166) (not x67) x3088)
+(or (not x3087) (not x2183) (not x2166))
+(or (not x3088) (not x2183) (not x2167) x66)
+(or (not x3097) x3099)
+(or (not x2183) (not x2167) (not x66) x3088)
+(or (not x3099) x3097)
+(or (not x3087) (not x2183) (not x2167))
+(or (not x3098) (not x3095))
+(or (not x3088) (not x2183) (not x2168))
+(or (not x3098) x3097 x3095)
+(or (not x2183) (not x2168) x3087)
+(or (not x3095) x3098 x3097)
+(or (not x3088) (not x2183) (not x2169) x65)
+(or (not x3097) x3098 x3095)
+(or (not x2183) (not x2169) (not x65) x3088)
+(or (not x3096) x3095)
+(or (not x3087) (not x2183) (not x2169))
+(or (not x3095) x3096)
+(or (not x3088) (not x2184) (not x2165) x58)
+(or (not x3094) (not x3091))
+(or (not x2184) (not x2165) (not x58) x3088)
+(or (not x3094) x3093 x3091)
+(or (not x3087) (not x2184) (not x2165))
+(or (not x3091) x3094 x3093)
+(or (not x3088) (not x2184) (not x2166) x57)
+(or (not x3093) x3094 x3091)
+(or (not x2184) (not x2166) (not x57) x3088)
+(or (not x3092) (not x3089))
+(or (not x3087) (not x2184) (not x2166))
+(or (not x3092) x3091 x3089)
+(or (not x3088) (not x2184) (not x2167) x56)
+(or (not x3089) x3092 x3091)
+(or (not x2184) (not x2167) (not x56) x3088)
+(or (not x3091) x3092 x3089)
+(or (not x3087) (not x2184) (not x2167))
+(or (not x3090) (not x3086))
+(or (not x3088) (not x2184) (not x2168) x55)
+(or (not x3090) x3089 x3086)
+(or (not x2184) (not x2168) (not x55) x3088)
+(or (not x3086) x3090 x3089)
+(or (not x3087) (not x2184) (not x2168))
+(or (not x3089) x3090 x3086)
+(or (not x3088) (not x2184) (not x2169))
+(or (not x2184) (not x2169) x3087)
+(or (not x2972) (not x69) (not x6) x3083)
+(or (not x3084) x3086)
+(or (not x3083) (not x3057) (not x3049) x3071 x3065)
+(or (not x3086) x3084)
+(or (not x3083) (not x3049) x3058 x3057)
+(or (not x3085) (not x3081))
+(or (not x3083) x3050 x3049)
+(or (not x3085) x3084 x3081)
+(or (not x3065) (not x3057) (not x3049) x3083)
+(or (not x3081) x3085 x3084)
+(or (not x3071) (not x3057) (not x3049) x3083)
+(or (not x3084) x3085 x3081)
+(or (not x3058) (not x3049) x3083)
+(or (not x3082) x3081)
+(or (not x3050) x3083)
+(or (not x3081) x3082)
+(or (not x3071) (not x3065))
+(or (not x3080) (not x3077))
+(or (not x2598) x3071 x2753 x2277)
+(or (not x3080) x3079 x3077)
+(or (not x3071) (not x2598) (not x2277) x2753)
+(or (not x3077) x3080 x3079)
+(or (not x3071) (not x2753) x2598 x2277)
+(or (not x3079) x3080 x3077)
+(or (not x2753) (not x2277) x3071 x2598)
+(or (not x3078) (not x3075))
+(or (not x2596) x3071 x2750 x2277)
+(or (not x3078) x3077 x3075)
+(or (not x3071) (not x2596) (not x2277) x2750)
+(or (not x3075) x3078 x3077)
+(or (not x3071) (not x2750) x2596 x2277)
+(or (not x3077) x3078 x3075)
+(or (not x2750) (not x2277) x3071 x2596)
+(or (not x3076) (not x3074))
+(or (not x2595) x3071 x2749 x2277)
+(or (not x3076) x3075 x3074)
+(or (not x3071) (not x2595) (not x2277) x2749)
+(or (not x3074) x3076 x3075)
+(or (not x3071) (not x2749) x2595 x2277)
+(or (not x3075) x3076 x3074)
+(or (not x2749) (not x2277) x3071 x2595)
+(or (not x2593) x3071 x2746 x2277)
+(or (not x3071) (not x2593) (not x2277) x2746)
+(or (not x3072) x3074)
+(or (not x3071) (not x2746) x2593 x2277)
+(or (not x3074) x3072)
+(or (not x2746) (not x2277) x3071 x2593)
+(or (not x3073) (not x3069))
+(or (not x2592) x3071 x2745 x2277)
+(or (not x3073) x3072 x3069)
+(or (not x3071) (not x2592) (not x2277) x2745)
+(or (not x3069) x3073 x3072)
+(or (not x3071) (not x2745) x2592 x2277)
+(or (not x3072) x3073 x3069)
+(or (not x2745) (not x2277) x3071 x2592)
+(or (not x3070) x3069)
+(or (not x2750) (not x2596) x3065 x2753 x2598)
+(or (not x3069) x3070)
+(or (not x2749) (not x2595) x3065 x2750 x2596)
+(or (not x2499) (not x3067))
+(or (not x2746) (not x2593) x3065 x2749 x2595)
+(or (not x2499) x3068 x3067)
+(or (not x2745) (not x2592) x3065 x2746 x2593)
+(or (not x3067) x2499 x3068)
+(or x3065 x2745 x2592)
+(or (not x3068) x2499 x3067)
+(or (not x2753) (not x2598) x3065)
+(or (not x2496) (not x3066))
+(or (not x3065) (not x2753) x2598)
+(or (not x2496) x3067 x3066)
+(or (not x3065) (not x2598) x2753)
+(or (not x3066) x2496 x3067)
+(or (not x3065) (not x2750) x2596)
+(or (not x3067) x2496 x3066)
+(or (not x3065) (not x2596) x2750)
+(or (not x2493) (not x3064))
+(or (not x3065) (not x2749) x2595)
+(or (not x2493) x3066 x3064)
+(or (not x3065) (not x2595) x2749)
+(or (not x3064) x2493 x3066)
+(or (not x3065) (not x2746) x2593)
+(or (not x3066) x2493 x3064)
+(or (not x3065) (not x2593) x2746)
+(or (not x3065) (not x2745) x2592)
+(or (not x3065) (not x2592) x2745)
+(or (not x3063) x3064)
+(or (not x52) x3058 x3056 x2725)
+(or (not x3064) x3063)
+(or (not x3058) (not x2725) (not x52) x3056)
+(or (not x2490) (not x3062))
+(or (not x3058) x3056 x2725 x52)
+(or (not x2490) x3063 x3062)
+(or (not x2725) x3058 x3056 x52)
+(or (not x3062) x2490 x3063)
+(or (not x3056) (not x50) x3058 x3055 x2722)
+(or (not x3063) x2490 x3062)
+(or (not x3058) (not x3056) (not x2722) (not x50) x3055)
+(or (not x2487) x3062)
+(or (not x3058) (not x3056) x3055 x2722 x50)
+(or (not x3062) x2487)
+(or (not x3056) (not x2722) x3058 x3055 x50)
+(or (not x3055) (not x48) x3058 x3054 x2718)
+(or (not x3058) (not x3055) (not x2718) (not x48) x3054)
+(or (not x3058) (not x3055) x3054 x2718 x48)
+(or (not x3055) (not x2718) x3058 x3054 x48)
+(or (not x3061) (not x3059))
+(or (not x3054) (not x46) x3058 x3053 x2714)
+(or (not x3061) x3059)
+(or (not x3058) (not x3054) (not x2714) (not x46) x3053)
+(or (not x3059) x3061)
+(or (not x3058) (not x3054) x3053 x2714 x46)
+(or (not x3054) (not x2714) x3058 x3053 x46)
+(or (not x3060) x3059)
+(or (not x3053) (not x44) x3058 x3052 x2711)
+(or (not x3059) x3060)
+(or (not x3058) (not x3053) (not x2711) (not x44) x3052)
+(or (not x3037) (not x3023) (not x959))
+(or (not x3058) (not x3053) x3052 x2711 x44)
+(or (not x3037) (not x3023))
+(or (not x3053) (not x2711) x3058 x3052 x44)
+(or (not x3037) (not x3021) (not x957))
+(or (not x3052) (not x149) x3058 x3051 x2708)
+(or (not x3037) (not x3021) x645)
+(or (not x3058) (not x3052) (not x2708) (not x149) x3051)
+(or (not x3037) (not x3019) (not x956))
+(or (not x3058) (not x3052) x3051 x2708 x149)
+(or (not x3037) (not x3019) x640)
+(or (not x3052) (not x2708) x3058 x3051 x149)
+(or (not x3037) (not x3016) (not x954))
+(or (not x3058) (not x3057))
+(or (not x3037) (not x3016) x635)
+(or (not x3051) x3057)
+(or (not x3037) (not x3013) x622)
+(or (not x3057) x3051)
+(or (not x3037) x3023 x3021 x3019 x3016 x3013)
+(or x3056 x2725 x2581)
+(or (not x3037) (not x3023))
+(or (not x2725) (not x2581) x3056)
+(or (not x3037) (not x3011))
+(or (not x3056) (not x2725) x2581)
+(or (not x3037) (not x2999))
+(or (not x3056) (not x2581) x2725)
+(or (not x3037) (not x2484))
+(or (not x3056) x3055 x2722 x2580)
+(or (not x3023) (not x3011) (not x959))
+(or (not x3056) (not x2722) (not x2580) x3055)
+(or (not x3023) (not x3011))
+(or (not x3055) (not x2722) x2580)
+(or (not x3023) (not x3009) (not x957))
+(or (not x3055) (not x2580) x2722)
+(or (not x3023) (not x3009) x645)
+(or (not x3055) x3056)
+(or (not x3023) (not x3006) (not x956))
+(or (not x3055) x3054 x2718 x2578)
+(or (not x3023) (not x3006) x640)
+(or (not x3055) (not x2718) (not x2578) x3054)
+(or (not x3023) (not x3004) (not x954))
+(or (not x3054) (not x2718) x2578)
+(or (not x3023) (not x3004) x635)
+(or (not x3054) (not x2578) x2718)
+(or (not x3023) (not x3001) x622)
+(or (not x3054) x3055)
+(or (not x3023) x3011 x3009 x3006 x3004 x3001)
+(or (not x3054) x3053 x2714 x2576)
+(or (not x3023) (not x3011))
+(or (not x3054) (not x2714) (not x2576) x3053)
+(or (not x3023) (not x2999))
+(or (not x3053) (not x2714) x2576)
+(or (not x3023) (not x2484))
+(or (not x3053) (not x2576) x2714)
+(or (not x3011) (not x2999) (not x959))
+(or (not x3053) x3054)
+(or (not x3011) (not x2999))
+(or (not x3053) x3052 x2711 x2574)
+(or (not x3011) (not x2997) (not x957))
+(or (not x3053) (not x2711) (not x2574) x3052)
+(or (not x3011) (not x2997) x645)
+(or (not x3052) (not x2711) x2574)
+(or (not x3011) (not x2994) (not x956))
+(or (not x3052) (not x2574) x2711)
+(or (not x3011) (not x2994) x640)
+(or (not x3052) x3053)
+(or (not x3011) (not x2991) (not x954))
+(or (not x3052) x3051 x2708 x2572)
+(or (not x3011) (not x2991) x635)
+(or (not x3052) (not x2708) (not x2572) x3051)
+(or (not x3011) (not x2988) x622)
+(or (not x3051) (not x2708) x2572)
+(or (not x3011) x2999 x2997 x2994 x2991 x2988)
+(or (not x3051) (not x2572) x2708)
+(or (not x3011) (not x2999))
+(or (not x3051) x3052)
+(or (not x3011) (not x2484))
+(or (not x3050) (not x2190) (not x2175))
+(or (not x2999) (not x2484) (not x959))
+(or (not x2190) (not x2175) x3049)
+(or (not x2999) (not x2484))
+(or (not x3050) (not x2191) (not x2175) x95)
+(or (not x2999) (not x2482) (not x957))
+(or (not x2191) (not x2175) (not x95) x3050)
+(or (not x2999) (not x2482) x645)
+(or (not x3049) (not x2191) (not x2175))
+(or (not x2999) (not x2477) (not x956))
+(or (not x3050) (not x2192) (not x2175) x94)
+(or (not x2999) (not x2477) x640)
+(or (not x2192) (not x2175) (not x94) x3050)
+(or (not x2999) (not x2474) (not x954))
+(or (not x3049) (not x2192) (not x2175))
+(or (not x2999) (not x2474) x635)
+(or (not x3050) (not x2193) (not x2175) x92)
+(or (not x2999) (not x2471) x622)
+(or (not x2193) (not x2175) (not x92) x3050)
+(or (not x2999) x2484 x2482 x2477 x2474 x2471)
+(or (not x3049) (not x2193) (not x2175))
+(or (not x2999) (not x2484))
+(or (not x3050) (not x2194) (not x2175) x91)
+(or (not x2484) (not x948))
+(or (not x2194) (not x2175) (not x91) x3050)
+(or (not x2484) x630)
+(or (not x3049) (not x2194) (not x2175))
+(or (not x959) x3037 x3023 x3011 x2999 x2484)
+(or (not x3050) (not x2190) (not x2176) x89)
+(or (not x3033) (not x3023) (not x959))
+(or (not x2190) (not x2176) (not x89) x3050)
+(or (not x3033) (not x3023) x655)
+(or (not x3049) (not x2190) (not x2176))
+(or (not x3033) (not x3021) (not x957))
+(or (not x3050) (not x2191) (not x2176))
+(or (not x3033) (not x3021))
+(or (not x2191) (not x2176) x3049)
+(or (not x3033) (not x3019) (not x956))
+(or (not x3050) (not x2192) (not x2176) x88)
+(or (not x3033) (not x3019) x639)
+(or (not x2192) (not x2176) (not x88) x3050)
+(or (not x3033) (not x3016) (not x954))
+(or (not x3049) (not x2192) (not x2176))
+(or (not x3033) (not x3016) x634)
+(or (not x3050) (not x2193) (not x2176) x87)
+(or (not x3033) (not x3013) x621)
+(or (not x2193) (not x2176) (not x87) x3050)
+(or (not x3033) x3023 x3021 x3019 x3016 x3013)
+(or (not x3049) (not x2193) (not x2176))
+(or (not x3033) (not x3021))
+(or (not x3050) (not x2194) (not x2176) x86)
+(or (not x3033) (not x3009))
+(or (not x2194) (not x2176) (not x86) x3050)
+(or (not x3033) (not x2997))
+(or (not x3049) (not x2194) (not x2176))
+(or (not x3033) (not x2482))
+(or (not x3050) (not x2190) (not x2177) x82)
+(or (not x3021) (not x3011) (not x959))
+(or (not x2190) (not x2177) (not x82) x3050)
+(or (not x3021) (not x3011) x655)
+(or (not x3049) (not x2190) (not x2177))
+(or (not x3021) (not x3009) (not x957))
+(or (not x3050) (not x2191) (not x2177) x81)
+(or (not x3021) (not x3009))
+(or (not x2191) (not x2177) (not x81) x3050)
+(or (not x3021) (not x3006) (not x956))
+(or (not x3049) (not x2191) (not x2177))
+(or (not x3021) (not x3006) x639)
+(or (not x3050) (not x2192) (not x2177))
+(or (not x3021) (not x3004) (not x954))
+(or (not x2192) (not x2177) x3049)
+(or (not x3021) (not x3004) x634)
+(or (not x3050) (not x2193) (not x2177) x79)
+(or (not x3021) (not x3001) x621)
+(or (not x2193) (not x2177) (not x79) x3050)
+(or (not x3021) x3011 x3009 x3006 x3004 x3001)
+(or (not x3049) (not x2193) (not x2177))
+(or (not x3021) (not x3009))
+(or (not x3050) (not x2194) (not x2177) x77)
+(or (not x3021) (not x2997))
+(or (not x2194) (not x2177) (not x77) x3050)
+(or (not x3021) (not x2482))
+(or (not x3049) (not x2194) (not x2177))
+(or (not x3009) (not x2999) (not x959))
+(or (not x3050) (not x2190) (not x2178) x73)
+(or (not x3009) (not x2999) x655)
+(or (not x2190) (not x2178) (not x73) x3050)
+(or (not x3009) (not x2997) (not x957))
+(or (not x3049) (not x2190) (not x2178))
+(or (not x3009) (not x2997))
+(or (not x3050) (not x2191) (not x2178) x67)
+(or (not x3009) (not x2994) (not x956))
+(or (not x2191) (not x2178) (not x67) x3050)
+(or (not x3009) (not x2994) x639)
+(or (not x3049) (not x2191) (not x2178))
+(or (not x3009) (not x2991) (not x954))
+(or (not x3050) (not x2192) (not x2178) x66)
+(or (not x3009) (not x2991) x634)
+(or (not x2192) (not x2178) (not x66) x3050)
+(or (not x3009) (not x2988) x621)
+(or (not x3049) (not x2192) (not x2178))
+(or (not x3009) x2999 x2997 x2994 x2991 x2988)
+(or (not x3050) (not x2193) (not x2178))
+(or (not x3009) (not x2997))
+(or (not x2193) (not x2178) x3049)
+(or (not x3009) (not x2482))
+(or (not x3050) (not x2194) (not x2178) x65)
+(or (not x2997) (not x2484) (not x959))
+(or (not x2194) (not x2178) (not x65) x3050)
+(or (not x2997) (not x2484) x655)
+(or (not x3049) (not x2194) (not x2178))
+(or (not x2997) (not x2482) (not x957))
+(or (not x3050) (not x2190) (not x2179) x58)
+(or (not x2997) (not x2482))
+(or (not x2190) (not x2179) (not x58) x3050)
+(or (not x2997) (not x2477) (not x956))
+(or (not x3049) (not x2190) (not x2179))
+(or (not x2997) (not x2477) x639)
+(or (not x3050) (not x2191) (not x2179) x57)
+(or (not x2997) (not x2474) (not x954))
+(or (not x2191) (not x2179) (not x57) x3050)
+(or (not x2997) (not x2474) x634)
+(or (not x3049) (not x2191) (not x2179))
+(or (not x2997) (not x2471) x621)
+(or (not x3050) (not x2192) (not x2179) x56)
+(or (not x2997) x2484 x2482 x2477 x2474 x2471)
+(or (not x2192) (not x2179) (not x56) x3050)
+(or (not x2997) (not x2482))
+(or (not x3049) (not x2192) (not x2179))
+(or (not x2482) (not x948))
+(or (not x3050) (not x2193) (not x2179) x55)
+(or (not x2482) x629)
+(or (not x2193) (not x2179) (not x55) x3050)
+(or (not x957) x3033 x3021 x3009 x2997 x2482)
+(or (not x3049) (not x2193) (not x2179))
+(or (not x3031) (not x3023) (not x959))
+(or (not x3050) (not x2194) (not x2179))
+(or (not x3031) (not x3023) x653)
+(or (not x2194) (not x2179) x3049)
+(or (not x3031) (not x3021) (not x957))
+(or (not x2972) (not x69) (not x7) x3048)
+(or (not x3031) (not x3021) x644)
+(or (not x3048) (not x3044) (not x3034) x3047 x3046)
+(or (not x3031) (not x3019) (not x956))
+(or (not x3048) (not x3034) x3045 x3044)
+(or (not x3031) (not x3019))
+(or (not x3048) x3035 x3034)
+(or (not x3031) (not x3016) (not x954))
+(or (not x3046) (not x3044) (not x3034) x3048)
+(or (not x3031) (not x3016) x633)
+(or (not x3047) (not x3044) (not x3034) x3048)
+(or (not x3031) (not x3013) x620)
+(or (not x3045) (not x3034) x3048)
+(or (not x3031) x3023 x3021 x3019 x3016 x3013)
+(or (not x3035) x3048)
+(or (not x3031) (not x3019))
+(or (not x3047) (not x3046))
+(or (not x3031) (not x3006))
+(or (not x2598) x3047 x2692 x2277)
+(or (not x3031) (not x2994))
+(or (not x3047) (not x2598) (not x2277) x2692)
+(or (not x3031) (not x2477))
+(or (not x3047) (not x2692) x2598 x2277)
+(or (not x3019) (not x3011) (not x959))
+(or (not x2692) (not x2277) x3047 x2598)
+(or (not x3019) (not x3011) x653)
+(or (not x2596) x3047 x2691 x2277)
+(or (not x3019) (not x3009) (not x957))
+(or (not x3047) (not x2596) (not x2277) x2691)
+(or (not x3019) (not x3009) x644)
+(or (not x3047) (not x2691) x2596 x2277)
+(or (not x3019) (not x3006) (not x956))
+(or (not x2691) (not x2277) x3047 x2596)
+(or (not x3019) (not x3006))
+(or (not x2595) x3047 x2690 x2277)
+(or (not x3019) (not x3004) (not x954))
+(or (not x3047) (not x2595) (not x2277) x2690)
+(or (not x3019) (not x3004) x633)
+(or (not x3047) (not x2690) x2595 x2277)
+(or (not x3019) (not x3001) x620)
+(or (not x2690) (not x2277) x3047 x2595)
+(or (not x3019) x3011 x3009 x3006 x3004 x3001)
+(or (not x2593) x3047 x2689 x2277)
+(or (not x3019) (not x3006))
+(or (not x3047) (not x2593) (not x2277) x2689)
+(or (not x3019) (not x2994))
+(or (not x3047) (not x2689) x2593 x2277)
+(or (not x3019) (not x2477))
+(or (not x2689) (not x2277) x3047 x2593)
+(or (not x3006) (not x2999) (not x959))
+(or (not x2592) x3047 x2688 x2277)
+(or (not x3006) (not x2999) x653)
+(or (not x3047) (not x2592) (not x2277) x2688)
+(or (not x3006) (not x2997) (not x957))
+(or (not x3047) (not x2688) x2592 x2277)
+(or (not x3006) (not x2997) x644)
+(or (not x2688) (not x2277) x3047 x2592)
+(or (not x3006) (not x2994) (not x956))
+(or (not x2691) (not x2596) x3046 x2692 x2598)
+(or (not x3006) (not x2994))
+(or (not x2690) (not x2595) x3046 x2691 x2596)
+(or (not x3006) (not x2991) (not x954))
+(or (not x2689) (not x2593) x3046 x2690 x2595)
+(or (not x3006) (not x2991) x633)
+(or (not x2688) (not x2592) x3046 x2689 x2593)
+(or (not x3006) (not x2988) x620)
+(or x3046 x2688 x2592)
+(or (not x3006) x2999 x2997 x2994 x2991 x2988)
+(or (not x2692) (not x2598) x3046)
+(or (not x3006) (not x2994))
+(or (not x3046) (not x2692) x2598)
+(or (not x3006) (not x2477))
+(or (not x3046) (not x2598) x2692)
+(or (not x2994) (not x2484) (not x959))
+(or (not x3046) (not x2691) x2596)
+(or (not x2994) (not x2484) x653)
+(or (not x3046) (not x2596) x2691)
+(or (not x2994) (not x2482) (not x957))
+(or (not x3046) (not x2690) x2595)
+(or (not x2994) (not x2482) x644)
+(or (not x3046) (not x2595) x2690)
+(or (not x2994) (not x2477) (not x956))
+(or (not x3046) (not x2689) x2593)
+(or (not x2994) (not x2477))
+(or (not x3046) (not x2593) x2689)
+(or (not x2994) (not x2474) (not x954))
+(or (not x3046) (not x2688) x2592)
+(or (not x2994) (not x2474) x633)
+(or (not x3046) (not x2592) x2688)
+(or (not x2994) (not x2471) x620)
+(or (not x52) x3045 x3043 x2684)
+(or (not x2994) x2484 x2482 x2477 x2474 x2471)
+(or (not x3045) (not x2684) (not x52) x3043)
+(or (not x2994) (not x2477))
+(or (not x3045) x3043 x2684 x52)
+(or (not x2477) (not x948))
+(or (not x2684) x3045 x3043 x52)
+(or (not x2477) x626)
+(or (not x3043) (not x50) x3045 x3042 x2683)
+(or (not x956) x3031 x3019 x3006 x2994 x2477)
+(or (not x3045) (not x3043) (not x2683) (not x50) x3042)
+(or (not x3028) (not x3023) (not x959))
+(or (not x3045) (not x3043) x3042 x2683 x50)
+(or (not x3028) (not x3023) x651)
+(or (not x3043) (not x2683) x3045 x3042 x50)
+(or (not x3028) (not x3021) (not x957))
+(or (not x3042) (not x48) x3045 x3041 x2681)
+(or (not x3028) (not x3021) x643)
+(or (not x3045) (not x3042) (not x2681) (not x48) x3041)
+(or (not x3028) (not x3019) (not x956))
+(or (not x3045) (not x3042) x3041 x2681 x48)
+(or (not x3028) (not x3019) x638)
+(or (not x3042) (not x2681) x3045 x3041 x48)
+(or (not x3028) (not x3016) (not x954))
+(or (not x3041) (not x46) x3045 x3040 x2679)
+(or (not x3028) (not x3016))
+(or (not x3045) (not x3041) (not x2679) (not x46) x3040)
+(or (not x3028) (not x3013) x619)
+(or (not x3045) (not x3041) x3040 x2679 x46)
+(or (not x3028) x3023 x3021 x3019 x3016 x3013)
+(or (not x3041) (not x2679) x3045 x3040 x46)
+(or (not x3028) (not x3016))
+(or (not x3040) (not x44) x3045 x3039 x2677)
+(or (not x3028) (not x3004))
+(or (not x3045) (not x3040) (not x2677) (not x44) x3039)
+(or (not x3028) (not x2991))
+(or (not x3045) (not x3040) x3039 x2677 x44)
+(or (not x3028) (not x2474))
+(or (not x3040) (not x2677) x3045 x3039 x44)
+(or (not x3016) (not x3011) (not x959))
+(or (not x3039) (not x149) x3045 x3038 x2675)
+(or (not x3016) (not x3011) x651)
+(or (not x3045) (not x3039) (not x2675) (not x149) x3038)
+(or (not x3016) (not x3009) (not x957))
+(or (not x3045) (not x3039) x3038 x2675 x149)
+(or (not x3016) (not x3009) x643)
+(or (not x3039) (not x2675) x3045 x3038 x149)
+(or (not x3016) (not x3006) (not x956))
+(or (not x3045) (not x3044))
+(or (not x3016) (not x3006) x638)
+(or (not x3038) x3044)
+(or (not x3016) (not x3004) (not x954))
+(or (not x3044) x3038)
+(or (not x3016) (not x3004))
+(or x3043 x2684 x2581)
+(or (not x3016) (not x3001) x619)
+(or (not x2684) (not x2581) x3043)
+(or (not x3016) x3011 x3009 x3006 x3004 x3001)
+(or (not x3043) (not x2684) x2581)
+(or (not x3016) (not x3004))
+(or (not x3043) (not x2581) x2684)
+(or (not x3016) (not x2991))
+(or (not x3043) x3042 x2683 x2580)
+(or (not x3016) (not x2474))
+(or (not x3043) (not x2683) (not x2580) x3042)
+(or (not x3004) (not x2999) (not x959))
+(or (not x3042) (not x2683) x2580)
+(or (not x3004) (not x2999) x651)
+(or (not x3042) (not x2580) x2683)
+(or (not x3004) (not x2997) (not x957))
+(or (not x3042) x3043)
+(or (not x3004) (not x2997) x643)
+(or (not x3042) x3041 x2681 x2578)
+(or (not x3004) (not x2994) (not x956))
+(or (not x3042) (not x2681) (not x2578) x3041)
+(or (not x3004) (not x2994) x638)
+(or (not x3041) (not x2681) x2578)
+(or (not x3004) (not x2991) (not x954))
+(or (not x3041) (not x2578) x2681)
+(or (not x3004) (not x2991))
+(or (not x3041) x3042)
+(or (not x3004) (not x2988) x619)
+(or (not x3041) x3040 x2679 x2576)
+(or (not x3004) x2999 x2997 x2994 x2991 x2988)
+(or (not x3041) (not x2679) (not x2576) x3040)
+(or (not x3004) (not x2991))
+(or (not x3040) (not x2679) x2576)
+(or (not x3004) (not x2474))
+(or (not x3040) (not x2576) x2679)
+(or (not x2991) (not x2484) (not x959))
+(or (not x3040) x3041)
+(or (not x2991) (not x2484) x651)
+(or (not x3040) x3039 x2677 x2574)
+(or (not x2991) (not x2482) (not x957))
+(or (not x3040) (not x2677) (not x2574) x3039)
+(or (not x2991) (not x2482) x643)
+(or (not x3039) (not x2677) x2574)
+(or (not x2991) (not x2477) (not x956))
+(or (not x3039) (not x2574) x2677)
+(or (not x2991) (not x2477) x638)
+(or (not x3039) x3040)
+(or (not x2991) (not x2474) (not x954))
+(or (not x3039) x3038 x2675 x2572)
+(or (not x2991) (not x2474))
+(or (not x3039) (not x2675) (not x2572) x3038)
+(or (not x2991) (not x2471) x619)
+(or (not x3038) (not x2675) x2572)
+(or (not x2991) x2484 x2482 x2477 x2474 x2471)
+(or (not x3038) (not x2572) x2675)
+(or (not x2991) (not x2474))
+(or (not x3038) x3039)
+(or (not x2474) (not x948))
+(or (not x3035) (not x2185) (not x2175))
+(or (not x2474) x625)
+(or (not x2185) (not x2175) x3034)
+(or (not x954) x3028 x3016 x3004 x2991 x2474)
+(or (not x3035) (not x2186) (not x2175) x95)
+(or (not x3025) (not x3023) (not x959))
+(or (not x2186) (not x2175) (not x95) x3035)
+(or (not x3025) (not x3023) x648)
+(or (not x3034) (not x2186) (not x2175))
+(or (not x3025) (not x3021) (not x957))
+(or (not x3035) (not x2187) (not x2175) x94)
+(or (not x3025) (not x3021) x641)
+(or (not x2187) (not x2175) (not x94) x3035)
+(or (not x3025) (not x3019) (not x956))
+(or (not x3034) (not x2187) (not x2175))
+(or (not x3025) (not x3019) x636)
+(or (not x3035) (not x2188) (not x2175) x92)
+(or (not x3025) (not x3016) (not x954))
+(or (not x2188) (not x2175) (not x92) x3035)
+(or (not x3025) (not x3016) x631)
+(or (not x3034) (not x2188) (not x2175))
+(or (not x3035) (not x2189) (not x2175) x91)
+(or (not x2189) (not x2175) (not x91) x3035)
+(or (not x3025) (not x3013))
+(or (not x3034) (not x2189) (not x2175))
+(or (not x3025) x3023 x3021 x3019 x3016 x3013)
+(or (not x3035) (not x2185) (not x2176) x89)
+(or (not x3025) (not x3013))
+(or (not x2185) (not x2176) (not x89) x3035)
+(or (not x3025) (not x3001))
+(or (not x3034) (not x2185) (not x2176))
+(or (not x3025) (not x2988))
+(or (not x3035) (not x2186) (not x2176))
+(or (not x3025) (not x2471))
+(or (not x2186) (not x2176) x3034)
+(or (not x3013) (not x3011) (not x959))
+(or (not x3035) (not x2187) (not x2176) x88)
+(or (not x3013) (not x3011) x648)
+(or (not x2187) (not x2176) (not x88) x3035)
+(or (not x3013) (not x3009) (not x957))
+(or (not x3034) (not x2187) (not x2176))
+(or (not x3013) (not x3009) x641)
+(or (not x3035) (not x2188) (not x2176) x87)
+(or (not x3013) (not x3006) (not x956))
+(or (not x2188) (not x2176) (not x87) x3035)
+(or (not x3013) (not x3006) x636)
+(or (not x3034) (not x2188) (not x2176))
+(or (not x3013) (not x3004) (not x954))
+(or (not x3035) (not x2189) (not x2176) x86)
+(or (not x3013) (not x3004) x631)
+(or (not x2189) (not x2176) (not x86) x3035)
+(or (not x3034) (not x2189) (not x2176))
+(or (not x3035) (not x2185) (not x2177) x82)
+(or (not x3013) (not x3001))
+(or (not x2185) (not x2177) (not x82) x3035)
+(or (not x3013) x3011 x3009 x3006 x3004 x3001)
+(or (not x3034) (not x2185) (not x2177))
+(or (not x3013) (not x3001))
+(or (not x3035) (not x2186) (not x2177) x81)
+(or (not x3013) (not x2988))
+(or (not x2186) (not x2177) (not x81) x3035)
+(or (not x3013) (not x2471))
+(or (not x3034) (not x2186) (not x2177))
+(or (not x3001) (not x2999) (not x959))
+(or (not x3035) (not x2187) (not x2177))
+(or (not x3001) (not x2999) x648)
+(or (not x2187) (not x2177) x3034)
+(or (not x3001) (not x2997) (not x957))
+(or (not x3035) (not x2188) (not x2177) x79)
+(or (not x3001) (not x2997) x641)
+(or (not x2188) (not x2177) (not x79) x3035)
+(or (not x3001) (not x2994) (not x956))
+(or (not x3034) (not x2188) (not x2177))
+(or (not x3001) (not x2994) x636)
+(or (not x3035) (not x2189) (not x2177) x77)
+(or (not x3001) (not x2991) (not x954))
+(or (not x2189) (not x2177) (not x77) x3035)
+(or (not x3001) (not x2991) x631)
+(or (not x3034) (not x2189) (not x2177))
+(or (not x3035) (not x2185) (not x2178) x73)
+(or (not x2185) (not x2178) (not x73) x3035)
+(or (not x3001) (not x2988))
+(or (not x3034) (not x2185) (not x2178))
+(or (not x3001) x2999 x2997 x2994 x2991 x2988)
+(or (not x3035) (not x2186) (not x2178) x67)
+(or (not x3001) (not x2988))
+(or (not x2186) (not x2178) (not x67) x3035)
+(or (not x3001) (not x2471))
+(or (not x3034) (not x2186) (not x2178))
+(or (not x2988) (not x2484) (not x959))
+(or (not x3035) (not x2187) (not x2178) x66)
+(or (not x2988) (not x2484) x648)
+(or (not x2187) (not x2178) (not x66) x3035)
+(or (not x2988) (not x2482) (not x957))
+(or (not x3034) (not x2187) (not x2178))
+(or (not x2988) (not x2482) x641)
+(or (not x3035) (not x2188) (not x2178))
+(or (not x2988) (not x2477) (not x956))
+(or (not x2188) (not x2178) x3034)
+(or (not x2988) (not x2477) x636)
+(or (not x3035) (not x2189) (not x2178) x65)
+(or (not x2988) (not x2474) (not x954))
+(or (not x2189) (not x2178) (not x65) x3035)
+(or (not x2988) (not x2474) x631)
+(or (not x3034) (not x2189) (not x2178))
+(or (not x3035) (not x2185) (not x2179) x58)
+(or (not x2185) (not x2179) (not x58) x3035)
+(or (not x2988) (not x2471))
+(or (not x3034) (not x2185) (not x2179))
+(or (not x2988) x2484 x2482 x2477 x2474 x2471)
+(or (not x3035) (not x2186) (not x2179) x57)
+(or (not x2988) (not x2471))
+(or (not x2186) (not x2179) (not x57) x3035)
+(or (not x2471) (not x948))
+(or (not x3034) (not x2186) (not x2179))
+(or (not x2471) x623)
+(or (not x3035) (not x2187) (not x2179) x56)
+(or (not x3037) (not x3032))
+(or (not x2187) (not x2179) (not x56) x3035)
+(or (not x3037) x3036 x3032)
+(or (not x3034) (not x2187) (not x2179))
+(or (not x3032) x3037 x3036)
+(or (not x3035) (not x2188) (not x2179) x55)
+(or (not x3036) x3037 x3032)
+(or (not x2188) (not x2179) (not x55) x3035)
+(or (not x3033) (not x3030))
+(or (not x3034) (not x2188) (not x2179))
+(or (not x3033) x3032 x3030)
+(or (not x3035) (not x2189) (not x2179))
+(or (not x3030) x3033 x3032)
+(or (not x2189) (not x2179) x3034)
+(or (not x3032) x3033 x3030)
+(or (not x2972) (not x69) (not x8) x3029)
+(or (not x3031) (not x3027))
+(or (not x3029) (not x2992) (not x2973) x3017 x3007)
+(or (not x3031) x3030 x3027)
+(or (not x3029) (not x2973) x2995 x2992)
+(or (not x3027) x3031 x3030)
+(or (not x3029) x2974 x2973)
+(or (not x3030) x3031 x3027)
+(or (not x3007) (not x2992) (not x2973) x3029)
+(or (not x3028) (not x3026))
+(or (not x3017) (not x2992) (not x2973) x3029)
+(or (not x3028) x3027 x3026)
+(or (not x2995) (not x2973) x3029)
+(or (not x3026) x3028 x3027)
+(or (not x2974) x3029)
+(or (not x3027) x3028 x3026)
+(or (not x3017) (not x3007))
+(or (not x2598) x3017 x2668 x2277)
+(or (not x3017) (not x2598) (not x2277) x2668)
+(or (not x3024) x3026)
+(or (not x3017) (not x2668) x2598 x2277)
+(or (not x3026) x3024)
+(or (not x2668) (not x2277) x3017 x2598)
+(or (not x3025) x3024)
+(or (not x2596) x3017 x2667 x2277)
+(or (not x3024) x3025)
+(or (not x3017) (not x2596) (not x2277) x2667)
+(or (not x3023) (not x3020))
+(or (not x3017) (not x2667) x2596 x2277)
+(or (not x3023) x3022 x3020)
+(or (not x2667) (not x2277) x3017 x2596)
+(or (not x3020) x3023 x3022)
+(or (not x2595) x3017 x2666 x2277)
+(or (not x3022) x3023 x3020)
+(or (not x3017) (not x2595) (not x2277) x2666)
+(or (not x3021) (not x3018))
+(or (not x3017) (not x2666) x2595 x2277)
+(or (not x3021) x3020 x3018)
+(or (not x2666) (not x2277) x3017 x2595)
+(or (not x3018) x3021 x3020)
+(or (not x2593) x3017 x2665 x2277)
+(or (not x3020) x3021 x3018)
+(or (not x3017) (not x2593) (not x2277) x2665)
+(or (not x3019) (not x3015))
+(or (not x3017) (not x2665) x2593 x2277)
+(or (not x3019) x3018 x3015)
+(or (not x2665) (not x2277) x3017 x2593)
+(or (not x3015) x3019 x3018)
+(or (not x2592) x3017 x2664 x2277)
+(or (not x3018) x3019 x3015)
+(or (not x3017) (not x2592) (not x2277) x2664)
+(or (not x3016) (not x3014))
+(or (not x3017) (not x2664) x2592 x2277)
+(or (not x3016) x3015 x3014)
+(or (not x2664) (not x2277) x3017 x2592)
+(or (not x3014) x3016 x3015)
+(or (not x2667) (not x2596) x3007 x2668 x2598)
+(or (not x3015) x3016 x3014)
+(or (not x2666) (not x2595) x3007 x2667 x2596)
+(or (not x2665) (not x2593) x3007 x2666 x2595)
+(or (not x2664) (not x2592) x3007 x2665 x2593)
+(or (not x3012) x3014)
+(or x3007 x2664 x2592)
+(or (not x3014) x3012)
+(or (not x2668) (not x2598) x3007)
+(or (not x3013) x3012)
+(or (not x3007) (not x2668) x2598)
+(or (not x3012) x3013)
+(or (not x3007) (not x2598) x2668)
+(or (not x3011) (not x3008))
+(or (not x3007) (not x2667) x2596)
+(or (not x3011) x3010 x3008)
+(or (not x3007) (not x2596) x2667)
+(or (not x3008) x3011 x3010)
+(or (not x3007) (not x2666) x2595)
+(or (not x3010) x3011 x3008)
+(or (not x3007) (not x2595) x2666)
+(or (not x3009) (not x3005))
+(or (not x3007) (not x2665) x2593)
+(or (not x3009) x3008 x3005)
+(or (not x3007) (not x2593) x2665)
+(or (not x3005) x3009 x3008)
+(or (not x3007) (not x2664) x2592)
+(or (not x3008) x3009 x3005)
+(or (not x3007) (not x2592) x2664)
+(or (not x3006) (not x3003))
+(or (not x52) x2995 x2986 x2660)
+(or (not x3006) x3005 x3003)
+(or (not x2995) (not x2660) (not x52) x2986)
+(or (not x3003) x3006 x3005)
+(or (not x2995) x2986 x2660 x52)
+(or (not x3005) x3006 x3003)
+(or (not x2660) x2995 x2986 x52)
+(or (not x3004) (not x3002))
+(or (not x2986) (not x50) x2995 x2984 x2659)
+(or (not x3004) x3003 x3002)
+(or (not x2995) (not x2986) (not x2659) (not x50) x2984)
+(or (not x3002) x3004 x3003)
+(or (not x2995) (not x2986) x2984 x2659 x50)
+(or (not x3003) x3004 x3002)
+(or (not x2986) (not x2659) x2995 x2984 x50)
+(or (not x2984) (not x48) x2995 x2982 x2657)
+(or (not x2995) (not x2984) (not x2657) (not x48) x2982)
+(or (not x3000) x3002)
+(or (not x2995) (not x2984) x2982 x2657 x48)
+(or (not x3002) x3000)
+(or (not x2984) (not x2657) x2995 x2982 x48)
+(or (not x3001) x3000)
+(or (not x2982) (not x46) x2995 x2980 x2655)
+(or (not x3000) x3001)
+(or (not x2995) (not x2982) (not x2655) (not x46) x2980)
+(or (not x2999) (not x2996))
+(or (not x2995) (not x2982) x2980 x2655 x46)
+(or (not x2999) x2998 x2996)
+(or (not x2982) (not x2655) x2995 x2980 x46)
+(or (not x2996) x2999 x2998)
+(or (not x2980) (not x44) x2995 x2977 x2653)
+(or (not x2998) x2999 x2996)
+(or (not x2995) (not x2980) (not x2653) (not x44) x2977)
+(or (not x2997) (not x2993))
+(or (not x2995) (not x2980) x2977 x2653 x44)
+(or (not x2997) x2996 x2993)
+(or (not x2980) (not x2653) x2995 x2977 x44)
+(or (not x2993) x2997 x2996)
+(or (not x2977) (not x149) x2995 x2976 x2651)
+(or (not x2996) x2997 x2993)
+(or (not x2995) (not x2977) (not x2651) (not x149) x2976)
+(or (not x2994) (not x2990))
+(or (not x2995) (not x2977) x2976 x2651 x149)
+(or (not x2994) x2993 x2990)
+(or (not x2977) (not x2651) x2995 x2976 x149)
+(or (not x2990) x2994 x2993)
+(or (not x2995) (not x2992))
+(or (not x2993) x2994 x2990)
+(or (not x2976) x2992)
+(or (not x2991) (not x2989))
+(or (not x2992) x2976)
+(or (not x2991) x2990 x2989)
+(or x2986 x2660 x2581)
+(or (not x2989) x2991 x2990)
+(or (not x2660) (not x2581) x2986)
+(or (not x2990) x2991 x2989)
+(or (not x2986) (not x2660) x2581)
+(or (not x2986) (not x2581) x2660)
+(or (not x2986) x2984 x2659 x2580)
+(or (not x2987) x2989)
+(or (not x2986) (not x2659) (not x2580) x2984)
+(or (not x2989) x2987)
+(or (not x2984) (not x2659) x2580)
+(or (not x2988) x2987)
+(or (not x2984) (not x2580) x2659)
+(or (not x2987) x2988)
+(or (not x2984) x2986)
+(or (not x2484) (not x2983))
+(or (not x2984) x2982 x2657 x2578)
+(or (not x2484) x2985 x2983)
+(or (not x2984) (not x2657) (not x2578) x2982)
+(or (not x2983) x2484 x2985)
+(or (not x2982) (not x2657) x2578)
+(or (not x2985) x2484 x2983)
+(or (not x2982) (not x2578) x2657)
+(or (not x2482) (not x2981))
+(or (not x2982) x2984)
+(or (not x2482) x2983 x2981)
+(or (not x2982) x2980 x2655 x2576)
+(or (not x2981) x2482 x2983)
+(or (not x2982) (not x2655) (not x2576) x2980)
+(or (not x2983) x2482 x2981)
+(or (not x2980) (not x2655) x2576)
+(or (not x2477) (not x2979))
+(or (not x2980) (not x2576) x2655)
+(or (not x2477) x2981 x2979)
+(or (not x2980) x2982)
+(or (not x2979) x2477 x2981)
+(or (not x2980) x2977 x2653 x2574)
+(or (not x2981) x2477 x2979)
+(or (not x2980) (not x2653) (not x2574) x2977)
+(or (not x2474) (not x2978))
+(or (not x2977) (not x2653) x2574)
+(or (not x2474) x2979 x2978)
+(or (not x2977) (not x2574) x2653)
+(or (not x2978) x2474 x2979)
+(or (not x2977) x2980)
+(or (not x2979) x2474 x2978)
+(or (not x2977) x2976 x2651 x2572)
+(or (not x2977) (not x2651) (not x2572) x2976)
+(or (not x2976) (not x2651) x2572)
+(or (not x2975) x2978)
+(or (not x2976) (not x2572) x2651)
+(or (not x2978) x2975)
+(or (not x2976) x2977)
+(or (not x2471) x2975)
+(or (not x2974) (not x2180) (not x2175))
+(or (not x2975) x2471)
+(or (not x2180) (not x2175) x2973)
+(or (not x2974) (not x2181) (not x2175) x95)
+(or (not x2181) (not x2175) (not x95) x2974)
+(or (not x2973) (not x2181) (not x2175))
+(or (not x2974) (not x2182) (not x2175) x94)
+(or (not x2182) (not x2175) (not x94) x2974)
+(or (not x2973) (not x2182) (not x2175))
+(or (not x2974) (not x2183) (not x2175) x92)
+(or (not x2955) (not x2943) (not x974))
+(or (not x2183) (not x2175) (not x92) x2974)
+(or (not x2955) (not x2943))
+(or (not x2973) (not x2183) (not x2175))
+(or (not x2955) (not x2941) (not x970))
+(or (not x2974) (not x2184) (not x2175) x91)
+(or (not x2955) (not x2941) x645)
+(or (not x2184) (not x2175) (not x91) x2974)
+(or (not x2955) (not x2938) (not x967))
+(or (not x2973) (not x2184) (not x2175))
+(or (not x2955) (not x2938) x640)
+(or (not x2974) (not x2180) (not x2176) x89)
+(or (not x2955) (not x2935) (not x962))
+(or (not x2180) (not x2176) (not x89) x2974)
+(or (not x2955) (not x2935) x635)
+(or (not x2973) (not x2180) (not x2176))
+(or (not x2955) (not x2933) (not x949))
+(or (not x2974) (not x2181) (not x2176))
+(or (not x2955) (not x2933) x630)
+(or (not x2181) (not x2176) x2973)
+(or (not x2955) x2943 x2941 x2938 x2935 x2933)
+(or (not x2974) (not x2182) (not x2176) x88)
+(or (not x2955) (not x2943))
+(or (not x2182) (not x2176) (not x88) x2974)
+(or (not x2955) (not x2929))
+(or (not x2973) (not x2182) (not x2176))
+(or (not x2955) (not x2917))
+(or (not x2974) (not x2183) (not x2176) x87)
+(or (not x2955) (not x2365))
+(or (not x2183) (not x2176) (not x87) x2974)
+(or (not x2943) (not x2929) (not x974))
+(or (not x2973) (not x2183) (not x2176))
+(or (not x2943) (not x2929))
+(or (not x2974) (not x2184) (not x2176) x86)
+(or (not x2943) (not x2927) (not x970))
+(or (not x2184) (not x2176) (not x86) x2974)
+(or (not x2943) (not x2927) x645)
+(or (not x2973) (not x2184) (not x2176))
+(or (not x2943) (not x2923) (not x967))
+(or (not x2974) (not x2180) (not x2177) x82)
+(or (not x2943) (not x2923) x640)
+(or (not x2180) (not x2177) (not x82) x2974)
+(or (not x2943) (not x2921) (not x962))
+(or (not x2973) (not x2180) (not x2177))
+(or (not x2943) (not x2921) x635)
+(or (not x2974) (not x2181) (not x2177) x81)
+(or (not x2943) (not x2919) (not x949))
+(or (not x2181) (not x2177) (not x81) x2974)
+(or (not x2943) (not x2919) x630)
+(or (not x2973) (not x2181) (not x2177))
+(or (not x2943) x2929 x2927 x2923 x2921 x2919)
+(or (not x2974) (not x2182) (not x2177))
+(or (not x2943) (not x2929))
+(or (not x2182) (not x2177) x2973)
+(or (not x2943) (not x2917))
+(or (not x2974) (not x2183) (not x2177) x79)
+(or (not x2943) (not x2365))
+(or (not x2183) (not x2177) (not x79) x2974)
+(or (not x2929) (not x2917) (not x974))
+(or (not x2973) (not x2183) (not x2177))
+(or (not x2929) (not x2917))
+(or (not x2974) (not x2184) (not x2177) x77)
+(or (not x2929) (not x2915) (not x970))
+(or (not x2184) (not x2177) (not x77) x2974)
+(or (not x2929) (not x2915) x645)
+(or (not x2973) (not x2184) (not x2177))
+(or (not x2929) (not x2913) (not x967))
+(or (not x2974) (not x2180) (not x2178) x73)
+(or (not x2929) (not x2913) x640)
+(or (not x2180) (not x2178) (not x73) x2974)
+(or (not x2929) (not x2911) (not x962))
+(or (not x2973) (not x2180) (not x2178))
+(or (not x2929) (not x2911) x635)
+(or (not x2974) (not x2181) (not x2178) x67)
+(or (not x2929) (not x2909) (not x949))
+(or (not x2181) (not x2178) (not x67) x2974)
+(or (not x2929) (not x2909) x630)
+(or (not x2973) (not x2181) (not x2178))
+(or (not x2929) x2917 x2915 x2913 x2911 x2909)
+(or (not x2974) (not x2182) (not x2178) x66)
+(or (not x2929) (not x2917))
+(or (not x2182) (not x2178) (not x66) x2974)
+(or (not x2929) (not x2365))
+(or (not x2973) (not x2182) (not x2178))
+(or (not x2917) (not x2365) (not x974))
+(or (not x2974) (not x2183) (not x2178))
+(or (not x2917) (not x2365))
+(or (not x2183) (not x2178) x2973)
+(or (not x2917) (not x2206) (not x970))
+(or (not x2974) (not x2184) (not x2178) x65)
+(or (not x2917) (not x2206) x645)
+(or (not x2184) (not x2178) (not x65) x2974)
+(or (not x2917) (not x2052) (not x967))
+(or (not x2973) (not x2184) (not x2178))
+(or (not x2917) (not x2052) x640)
+(or (not x2974) (not x2180) (not x2179) x58)
+(or (not x2917) (not x1750) (not x962))
+(or (not x2180) (not x2179) (not x58) x2974)
+(or (not x2917) (not x1750) x635)
+(or (not x2973) (not x2180) (not x2179))
+(or (not x2917) (not x1449) (not x949))
+(or (not x2974) (not x2181) (not x2179) x57)
+(or (not x2917) (not x1449) x630)
+(or (not x2181) (not x2179) (not x57) x2974)
+(or (not x2917) x2365 x2206 x2052 x1750 x1449)
+(or (not x2973) (not x2181) (not x2179))
+(or (not x2917) (not x2365))
+(or (not x2974) (not x2182) (not x2179) x56)
+(or (not x2365) x622)
+(or (not x2182) (not x2179) (not x56) x2974)
+(or (not x974) x2955 x2943 x2929 x2917 x2365)
+(or (not x2973) (not x2182) (not x2179))
+(or (not x2953) (not x2943) (not x974))
+(or (not x2974) (not x2183) (not x2179) x55)
+(or (not x2953) (not x2943) x655)
+(or (not x2183) (not x2179) (not x55) x2974)
+(or (not x2953) (not x2941) (not x970))
+(or (not x2973) (not x2183) (not x2179))
+(or (not x2953) (not x2941))
+(or (not x2974) (not x2184) (not x2179))
+(or (not x2953) (not x2938) (not x967))
+(or (not x2184) (not x2179) x2973)
+(or (not x2953) (not x2938) x639)
+(or (not x2972) (not x69) (not x10) x2971)
+(or (not x2953) (not x2935) (not x962))
+(or (not x2971) (not x2967) (not x2959) x2970 x2969)
+(or (not x2953) (not x2935) x634)
+(or (not x2971) (not x2959) x2968 x2967)
+(or (not x2953) (not x2933) (not x949))
+(or (not x2971) x2960 x2959)
+(or (not x2953) (not x2933) x629)
+(or (not x2969) (not x2967) (not x2959) x2971)
+(or (not x2953) x2943 x2941 x2938 x2935 x2933)
+(or (not x2970) (not x2967) (not x2959) x2971)
+(or (not x2953) (not x2941))
+(or (not x2968) (not x2959) x2971)
+(or (not x2953) (not x2927))
+(or (not x2960) x2971)
+(or (not x2953) (not x2915))
+(or (not x2970) (not x2969))
+(or (not x2953) (not x2206))
+(or (not x2598) x2970 x2565 x2277)
+(or (not x2941) (not x2929) (not x974))
+(or (not x2970) (not x2598) (not x2277) x2565)
+(or (not x2941) (not x2929) x655)
+(or (not x2970) (not x2565) x2598 x2277)
+(or (not x2941) (not x2927) (not x970))
+(or (not x2565) (not x2277) x2970 x2598)
+(or (not x2941) (not x2927))
+(or (not x2596) x2970 x2563 x2277)
+(or (not x2941) (not x2923) (not x967))
+(or (not x2970) (not x2596) (not x2277) x2563)
+(or (not x2941) (not x2923) x639)
+(or (not x2970) (not x2563) x2596 x2277)
+(or (not x2941) (not x2921) (not x962))
+(or (not x2563) (not x2277) x2970 x2596)
+(or (not x2941) (not x2921) x634)
+(or (not x2595) x2970 x2561 x2277)
+(or (not x2941) (not x2919) (not x949))
+(or (not x2970) (not x2595) (not x2277) x2561)
+(or (not x2941) (not x2919) x629)
+(or (not x2970) (not x2561) x2595 x2277)
+(or (not x2941) x2929 x2927 x2923 x2921 x2919)
+(or (not x2561) (not x2277) x2970 x2595)
+(or (not x2941) (not x2927))
+(or (not x2593) x2970 x2559 x2277)
+(or (not x2941) (not x2915))
+(or (not x2970) (not x2593) (not x2277) x2559)
+(or (not x2941) (not x2206))
+(or (not x2970) (not x2559) x2593 x2277)
+(or (not x2927) (not x2917) (not x974))
+(or (not x2559) (not x2277) x2970 x2593)
+(or (not x2927) (not x2917) x655)
+(or (not x2592) x2970 x2557 x2277)
+(or (not x2927) (not x2915) (not x970))
+(or (not x2970) (not x2592) (not x2277) x2557)
+(or (not x2927) (not x2915))
+(or (not x2970) (not x2557) x2592 x2277)
+(or (not x2927) (not x2913) (not x967))
+(or (not x2557) (not x2277) x2970 x2592)
+(or (not x2927) (not x2913) x639)
+(or (not x2596) (not x2563) x2969 x2598 x2565)
+(or (not x2927) (not x2911) (not x962))
+(or (not x2595) (not x2561) x2969 x2596 x2563)
+(or (not x2927) (not x2911) x634)
+(or (not x2593) (not x2559) x2969 x2595 x2561)
+(or (not x2927) (not x2909) (not x949))
+(or (not x2592) (not x2557) x2969 x2593 x2559)
+(or (not x2927) (not x2909) x629)
+(or x2969 x2592 x2557)
+(or (not x2927) x2917 x2915 x2913 x2911 x2909)
+(or (not x2598) (not x2565) x2969)
+(or (not x2927) (not x2915))
+(or (not x2969) (not x2565) x2598)
+(or (not x2927) (not x2206))
+(or (not x2969) (not x2598) x2565)
+(or (not x2915) (not x2365) (not x974))
+(or (not x2969) (not x2563) x2596)
+(or (not x2915) (not x2365) x655)
+(or (not x2969) (not x2596) x2563)
+(or (not x2915) (not x2206) (not x970))
+(or (not x2969) (not x2561) x2595)
+(or (not x2915) (not x2206))
+(or (not x2969) (not x2595) x2561)
+(or (not x2915) (not x2052) (not x967))
+(or (not x2969) (not x2559) x2593)
+(or (not x2915) (not x2052) x639)
+(or (not x2969) (not x2593) x2559)
+(or (not x2915) (not x1750) (not x962))
+(or (not x2969) (not x2557) x2592)
+(or (not x2915) (not x1750) x634)
+(or (not x2969) (not x2592) x2557)
+(or (not x2915) (not x1449) (not x949))
+(or (not x52) x2968 x2966 x2552)
+(or (not x2915) (not x1449) x629)
+(or (not x2968) (not x2552) (not x52) x2966)
+(or (not x2915) x2365 x2206 x2052 x1750 x1449)
+(or (not x2968) x2966 x2552 x52)
+(or (not x2915) (not x2206))
+(or (not x2552) x2968 x2966 x52)
+(or (not x2206) x621)
+(or (not x2966) (not x50) x2968 x2965 x2550)
+(or (not x970) x2953 x2941 x2927 x2915 x2206)
+(or (not x2968) (not x2966) (not x2550) (not x50) x2965)
+(or (not x2951) (not x2943) (not x974))
+(or (not x2968) (not x2966) x2965 x2550 x50)
+(or (not x2951) (not x2943) x653)
+(or (not x2966) (not x2550) x2968 x2965 x50)
+(or (not x2951) (not x2941) (not x970))
+(or (not x2965) (not x48) x2968 x2964 x2547)
+(or (not x2951) (not x2941) x644)
+(or (not x2968) (not x2965) (not x2547) (not x48) x2964)
+(or (not x2951) (not x2938) (not x967))
+(or (not x2968) (not x2965) x2964 x2547 x48)
+(or (not x2951) (not x2938))
+(or (not x2965) (not x2547) x2968 x2964 x48)
+(or (not x2951) (not x2935) (not x962))
+(or (not x2964) (not x46) x2968 x2963 x2544)
+(or (not x2951) (not x2935) x633)
+(or (not x2968) (not x2964) (not x2544) (not x46) x2963)
+(or (not x2951) (not x2933) (not x949))
+(or (not x2968) (not x2964) x2963 x2544 x46)
+(or (not x2951) (not x2933) x626)
+(or (not x2964) (not x2544) x2968 x2963 x46)
+(or (not x2951) x2943 x2941 x2938 x2935 x2933)
+(or (not x2963) (not x44) x2968 x2962 x2541)
+(or (not x2951) (not x2938))
+(or (not x2968) (not x2963) (not x2541) (not x44) x2962)
+(or (not x2951) (not x2923))
+(or (not x2968) (not x2963) x2962 x2541 x44)
+(or (not x2951) (not x2913))
+(or (not x2963) (not x2541) x2968 x2962 x44)
+(or (not x2951) (not x2052))
+(or (not x2962) (not x149) x2968 x2961 x2538)
+(or (not x2938) (not x2929) (not x974))
+(or (not x2968) (not x2962) (not x2538) (not x149) x2961)
+(or (not x2938) (not x2929) x653)
+(or (not x2968) (not x2962) x2961 x2538 x149)
+(or (not x2938) (not x2927) (not x970))
+(or (not x2962) (not x2538) x2968 x2961 x149)
+(or (not x2938) (not x2927) x644)
+(or (not x2968) (not x2967))
+(or (not x2938) (not x2923) (not x967))
+(or (not x2961) x2967)
+(or (not x2938) (not x2923))
+(or (not x2967) x2961)
+(or (not x2938) (not x2921) (not x962))
+(or x2966 x2581 x2552)
+(or (not x2938) (not x2921) x633)
+(or (not x2581) (not x2552) x2966)
+(or (not x2938) (not x2919) (not x949))
+(or (not x2966) (not x2552) x2581)
+(or (not x2938) (not x2919) x626)
+(or (not x2966) (not x2581) x2552)
+(or (not x2938) x2929 x2927 x2923 x2921 x2919)
+(or (not x2966) x2965 x2580 x2550)
+(or (not x2938) (not x2923))
+(or (not x2966) (not x2580) (not x2550) x2965)
+(or (not x2938) (not x2913))
+(or (not x2965) (not x2550) x2580)
+(or (not x2938) (not x2052))
+(or (not x2965) (not x2580) x2550)
+(or (not x2923) (not x2917) (not x974))
+(or (not x2965) x2966)
+(or (not x2923) (not x2917) x653)
+(or (not x2965) x2964 x2578 x2547)
+(or (not x2923) (not x2915) (not x970))
+(or (not x2965) (not x2578) (not x2547) x2964)
+(or (not x2923) (not x2915) x644)
+(or (not x2964) (not x2547) x2578)
+(or (not x2923) (not x2913) (not x967))
+(or (not x2964) (not x2578) x2547)
+(or (not x2923) (not x2913))
+(or (not x2964) x2965)
+(or (not x2923) (not x2911) (not x962))
+(or (not x2964) x2963 x2576 x2544)
+(or (not x2923) (not x2911) x633)
+(or (not x2964) (not x2576) (not x2544) x2963)
+(or (not x2923) (not x2909) (not x949))
+(or (not x2963) (not x2544) x2576)
+(or (not x2923) (not x2909) x626)
+(or (not x2963) (not x2576) x2544)
+(or (not x2923) x2917 x2915 x2913 x2911 x2909)
+(or (not x2963) x2964)
+(or (not x2923) (not x2913))
+(or (not x2963) x2962 x2574 x2541)
+(or (not x2923) (not x2052))
+(or (not x2963) (not x2574) (not x2541) x2962)
+(or (not x2913) (not x2365) (not x974))
+(or (not x2962) (not x2541) x2574)
+(or (not x2913) (not x2365) x653)
+(or (not x2962) (not x2574) x2541)
+(or (not x2913) (not x2206) (not x970))
+(or (not x2962) x2963)
+(or (not x2913) (not x2206) x644)
+(or (not x2962) x2961 x2572 x2538)
+(or (not x2913) (not x2052) (not x967))
+(or (not x2962) (not x2572) (not x2538) x2961)
+(or (not x2913) (not x2052))
+(or (not x2961) (not x2538) x2572)
+(or (not x2913) (not x1750) (not x962))
+(or (not x2961) (not x2572) x2538)
+(or (not x2913) (not x1750) x633)
+(or (not x2961) x2962)
+(or (not x2913) (not x1449) (not x949))
+(or (not x2960) (not x2175) (not x2170))
+(or (not x2913) (not x1449) x626)
+(or (not x2175) (not x2170) x2959)
+(or (not x2913) x2365 x2206 x2052 x1750 x1449)
+(or (not x2960) (not x2175) (not x2171) x95)
+(or (not x2913) (not x2052))
+(or (not x2175) (not x2171) (not x95) x2960)
+(or (not x2052) x620)
+(or (not x2959) (not x2175) (not x2171))
+(or (not x967) x2951 x2938 x2923 x2913 x2052)
+(or (not x2960) (not x2175) (not x2172) x94)
+(or (not x2949) (not x2943) (not x974))
+(or (not x2175) (not x2172) (not x94) x2960)
+(or (not x2949) (not x2943) x651)
+(or (not x2959) (not x2175) (not x2172))
+(or (not x2949) (not x2941) (not x970))
+(or (not x2960) (not x2175) (not x2173) x92)
+(or (not x2949) (not x2941) x643)
+(or (not x2175) (not x2173) (not x92) x2960)
+(or (not x2949) (not x2938) (not x967))
+(or (not x2959) (not x2175) (not x2173))
+(or (not x2949) (not x2938) x638)
+(or (not x2960) (not x2175) (not x2174) x91)
+(or (not x2949) (not x2935) (not x962))
+(or (not x2175) (not x2174) (not x91) x2960)
+(or (not x2949) (not x2935))
+(or (not x2959) (not x2175) (not x2174))
+(or (not x2949) (not x2933) (not x949))
+(or (not x2960) (not x2176) (not x2170) x89)
+(or (not x2949) (not x2933) x625)
+(or (not x2176) (not x2170) (not x89) x2960)
+(or (not x2949) x2943 x2941 x2938 x2935 x2933)
+(or (not x2959) (not x2176) (not x2170))
+(or (not x2949) (not x2935))
+(or (not x2960) (not x2176) (not x2171))
+(or (not x2949) (not x2921))
+(or (not x2176) (not x2171) x2959)
+(or (not x2949) (not x2911))
+(or (not x2960) (not x2176) (not x2172) x88)
+(or (not x2949) (not x1750))
+(or (not x2176) (not x2172) (not x88) x2960)
+(or (not x2935) (not x2929) (not x974))
+(or (not x2959) (not x2176) (not x2172))
+(or (not x2935) (not x2929) x651)
+(or (not x2960) (not x2176) (not x2173) x87)
+(or (not x2935) (not x2927) (not x970))
+(or (not x2176) (not x2173) (not x87) x2960)
+(or (not x2935) (not x2927) x643)
+(or (not x2959) (not x2176) (not x2173))
+(or (not x2935) (not x2923) (not x967))
+(or (not x2960) (not x2176) (not x2174) x86)
+(or (not x2935) (not x2923) x638)
+(or (not x2176) (not x2174) (not x86) x2960)
+(or (not x2935) (not x2921) (not x962))
+(or (not x2959) (not x2176) (not x2174))
+(or (not x2935) (not x2921))
+(or (not x2960) (not x2177) (not x2170) x82)
+(or (not x2935) (not x2919) (not x949))
+(or (not x2177) (not x2170) (not x82) x2960)
+(or (not x2935) (not x2919) x625)
+(or (not x2959) (not x2177) (not x2170))
+(or (not x2935) x2929 x2927 x2923 x2921 x2919)
+(or (not x2960) (not x2177) (not x2171) x81)
+(or (not x2935) (not x2921))
+(or (not x2177) (not x2171) (not x81) x2960)
+(or (not x2935) (not x2911))
+(or (not x2959) (not x2177) (not x2171))
+(or (not x2935) (not x1750))
+(or (not x2960) (not x2177) (not x2172))
+(or (not x2921) (not x2917) (not x974))
+(or (not x2177) (not x2172) x2959)
+(or (not x2921) (not x2917) x651)
+(or (not x2960) (not x2177) (not x2173) x79)
+(or (not x2921) (not x2915) (not x970))
+(or (not x2177) (not x2173) (not x79) x2960)
+(or (not x2921) (not x2915) x643)
+(or (not x2959) (not x2177) (not x2173))
+(or (not x2921) (not x2913) (not x967))
+(or (not x2960) (not x2177) (not x2174) x77)
+(or (not x2921) (not x2913) x638)
+(or (not x2177) (not x2174) (not x77) x2960)
+(or (not x2921) (not x2911) (not x962))
+(or (not x2959) (not x2177) (not x2174))
+(or (not x2921) (not x2911))
+(or (not x2960) (not x2178) (not x2170) x73)
+(or (not x2921) (not x2909) (not x949))
+(or (not x2178) (not x2170) (not x73) x2960)
+(or (not x2921) (not x2909) x625)
+(or (not x2959) (not x2178) (not x2170))
+(or (not x2921) x2917 x2915 x2913 x2911 x2909)
+(or (not x2960) (not x2178) (not x2171) x67)
+(or (not x2921) (not x2911))
+(or (not x2178) (not x2171) (not x67) x2960)
+(or (not x2921) (not x1750))
+(or (not x2959) (not x2178) (not x2171))
+(or (not x2911) (not x2365) (not x974))
+(or (not x2960) (not x2178) (not x2172) x66)
+(or (not x2911) (not x2365) x651)
+(or (not x2178) (not x2172) (not x66) x2960)
+(or (not x2911) (not x2206) (not x970))
+(or (not x2959) (not x2178) (not x2172))
+(or (not x2911) (not x2206) x643)
+(or (not x2960) (not x2178) (not x2173))
+(or (not x2911) (not x2052) (not x967))
+(or (not x2178) (not x2173) x2959)
+(or (not x2911) (not x2052) x638)
+(or (not x2960) (not x2178) (not x2174) x65)
+(or (not x2911) (not x1750) (not x962))
+(or (not x2178) (not x2174) (not x65) x2960)
+(or (not x2911) (not x1750))
+(or (not x2959) (not x2178) (not x2174))
+(or (not x2911) (not x1449) (not x949))
+(or (not x2960) (not x2179) (not x2170) x58)
+(or (not x2911) (not x1449) x625)
+(or (not x2179) (not x2170) (not x58) x2960)
+(or (not x2911) x2365 x2206 x2052 x1750 x1449)
+(or (not x2959) (not x2179) (not x2170))
+(or (not x2911) (not x1750))
+(or (not x2960) (not x2179) (not x2171) x57)
+(or (not x1750) x619)
+(or (not x2179) (not x2171) (not x57) x2960)
+(or (not x962) x2949 x2935 x2921 x2911 x1750)
+(or (not x2959) (not x2179) (not x2171))
+(or (not x2947) (not x2943) (not x974))
+(or (not x2960) (not x2179) (not x2172) x56)
+(or (not x2947) (not x2943) x650)
+(or (not x2179) (not x2172) (not x56) x2960)
+(or (not x2947) (not x2941) (not x970))
+(or (not x2959) (not x2179) (not x2172))
+(or (not x2947) (not x2941) x642)
+(or (not x2960) (not x2179) (not x2173) x55)
+(or (not x2947) (not x2938) (not x967))
+(or (not x2179) (not x2173) (not x55) x2960)
+(or (not x2947) (not x2938) x637)
+(or (not x2959) (not x2179) (not x2173))
+(or (not x2947) (not x2935) (not x962))
+(or (not x2960) (not x2179) (not x2174))
+(or (not x2947) (not x2935) x632)
+(or (not x2179) (not x2174) x2959)
+(or (not x2947) (not x2933) (not x949))
+(or (not x2958) (not x2944) (not x2901) x2957 x2956)
+(or (not x2947) (not x2933))
+(or (not x2958) (not x2901) x2945 x2944)
+(or (not x2947) x2943 x2941 x2938 x2935 x2933)
+(or (not x2958) x2902 x2901)
+(or (not x2947) (not x2933))
+(or (not x2956) (not x2944) (not x2901) x2958)
+(or (not x2947) (not x2919))
+(or (not x2957) (not x2944) (not x2901) x2958)
+(or (not x2947) (not x2909))
+(or (not x2945) (not x2901) x2958)
+(or (not x2947) (not x1449))
+(or (not x2902) x2958)
+(or (not x2933) (not x2929) (not x974))
+(or (not x2957) (not x2956))
+(or (not x2933) (not x2929) x650)
+(or (not x2598) x2957 x2564 x2277)
+(or (not x2933) (not x2927) (not x970))
+(or (not x2957) (not x2598) (not x2277) x2564)
+(or (not x2933) (not x2927) x642)
+(or (not x2957) (not x2564) x2598 x2277)
+(or (not x2933) (not x2923) (not x967))
+(or (not x2564) (not x2277) x2957 x2598)
+(or (not x2933) (not x2923) x637)
+(or (not x2596) x2957 x2562 x2277)
+(or (not x2933) (not x2921) (not x962))
+(or (not x2957) (not x2596) (not x2277) x2562)
+(or (not x2933) (not x2921) x632)
+(or (not x2957) (not x2562) x2596 x2277)
+(or (not x2933) (not x2919) (not x949))
+(or (not x2562) (not x2277) x2957 x2596)
+(or (not x2933) (not x2919))
+(or (not x2595) x2957 x2560 x2277)
+(or (not x2933) x2929 x2927 x2923 x2921 x2919)
+(or (not x2957) (not x2595) (not x2277) x2560)
+(or (not x2933) (not x2919))
+(or (not x2957) (not x2560) x2595 x2277)
+(or (not x2933) (not x2909))
+(or (not x2560) (not x2277) x2957 x2595)
+(or (not x2933) (not x1449))
+(or (not x2593) x2957 x2558 x2277)
+(or (not x2919) (not x2917) (not x974))
+(or (not x2957) (not x2593) (not x2277) x2558)
+(or (not x2919) (not x2917) x650)
+(or (not x2957) (not x2558) x2593 x2277)
+(or (not x2919) (not x2915) (not x970))
+(or (not x2558) (not x2277) x2957 x2593)
+(or (not x2919) (not x2915) x642)
+(or (not x2592) x2957 x2556 x2277)
+(or (not x2919) (not x2913) (not x967))
+(or (not x2957) (not x2592) (not x2277) x2556)
+(or (not x2919) (not x2913) x637)
+(or (not x2957) (not x2556) x2592 x2277)
+(or (not x2919) (not x2911) (not x962))
+(or (not x2556) (not x2277) x2957 x2592)
+(or (not x2919) (not x2911) x632)
+(or (not x2596) (not x2562) x2956 x2598 x2564)
+(or (not x2919) (not x2909) (not x949))
+(or (not x2595) (not x2560) x2956 x2596 x2562)
+(or (not x2919) (not x2909))
+(or (not x2593) (not x2558) x2956 x2595 x2560)
+(or (not x2919) x2917 x2915 x2913 x2911 x2909)
+(or (not x2592) (not x2556) x2956 x2593 x2558)
+(or (not x2919) (not x2909))
+(or x2956 x2592 x2556)
+(or (not x2919) (not x1449))
+(or (not x2598) (not x2564) x2956)
+(or (not x2909) (not x2365) (not x974))
+(or (not x2956) (not x2564) x2598)
+(or (not x2909) (not x2365) x650)
+(or (not x2956) (not x2598) x2564)
+(or (not x2909) (not x2206) (not x970))
+(or (not x2956) (not x2562) x2596)
+(or (not x2909) (not x2206) x642)
+(or (not x2956) (not x2596) x2562)
+(or (not x2909) (not x2052) (not x967))
+(or (not x2956) (not x2560) x2595)
+(or (not x2909) (not x2052) x637)
+(or (not x2956) (not x2595) x2560)
+(or (not x2909) (not x1750) (not x962))
+(or (not x2956) (not x2558) x2593)
+(or (not x2909) (not x1750) x632)
+(or (not x2956) (not x2593) x2558)
+(or (not x2909) (not x1449) (not x949))
+(or (not x2956) (not x2556) x2592)
+(or (not x2909) (not x1449))
+(or (not x2956) (not x2592) x2556)
+(or (not x2909) x2365 x2206 x2052 x1750 x1449)
+(or (not x52) x2945 x2939 x2551)
+(or (not x2909) (not x1449))
+(or (not x2945) (not x2551) (not x52) x2939)
+(or (not x1449) x616)
+(or (not x2945) x2939 x2551 x52)
+(or (not x949) x2947 x2933 x2919 x2909 x1449)
+(or (not x2551) x2945 x2939 x52)
+(or (not x2955) (not x2952))
+(or (not x2939) (not x50) x2945 x2936 x2549)
+(or (not x2955) x2954 x2952)
+(or (not x2945) (not x2939) (not x2549) (not x50) x2936)
+(or (not x2952) x2955 x2954)
+(or (not x2945) (not x2939) x2936 x2549 x50)
+(or (not x2954) x2955 x2952)
+(or (not x2939) (not x2549) x2945 x2936 x50)
+(or (not x2953) (not x2950))
+(or (not x2936) (not x48) x2945 x2931 x2546)
+(or (not x2953) x2952 x2950)
+(or (not x2945) (not x2936) (not x2546) (not x48) x2931)
+(or (not x2950) x2953 x2952)
+(or (not x2945) (not x2936) x2931 x2546 x48)
+(or (not x2952) x2953 x2950)
+(or (not x2936) (not x2546) x2945 x2931 x48)
+(or (not x2951) (not x2948))
+(or (not x2931) (not x46) x2945 x2930 x2543)
+(or (not x2951) x2950 x2948)
+(or (not x2945) (not x2931) (not x2543) (not x46) x2930)
+(or (not x2948) x2951 x2950)
+(or (not x2945) (not x2931) x2930 x2543 x46)
+(or (not x2950) x2951 x2948)
+(or (not x2931) (not x2543) x2945 x2930 x46)
+(or (not x2949) (not x2946))
+(or (not x2930) (not x44) x2945 x2925 x2540)
+(or (not x2949) x2948 x2946)
+(or (not x2945) (not x2930) (not x2540) (not x44) x2925)
+(or (not x2946) x2949 x2948)
+(or (not x2945) (not x2930) x2925 x2540 x44)
+(or (not x2948) x2949 x2946)
+(or (not x2930) (not x2540) x2945 x2925 x44)
+(or (not x2925) (not x149) x2945 x2924 x2537)
+(or (not x2947) x2946)
+(or (not x2945) (not x2925) (not x2537) (not x149) x2924)
+(or (not x2945) (not x2925) x2924 x2537 x149)
+(or (not x2946) x2947)
+(or (not x2925) (not x2537) x2945 x2924 x149)
+(or (not x2945) (not x2944))
+(or (not x2924) x2944)
+(or (not x2943) (not x2940))
+(or (not x2944) x2924)
+(or (not x2943) x2942 x2940)
+(or x2939 x2581 x2551)
+(or (not x2940) x2943 x2942)
+(or (not x2581) (not x2551) x2939)
+(or (not x2942) x2943 x2940)
+(or (not x2939) (not x2551) x2581)
+(or (not x2941) (not x2937))
+(or (not x2939) (not x2581) x2551)
+(or (not x2941) x2940 x2937)
+(or (not x2939) x2936 x2580 x2549)
+(or (not x2937) x2941 x2940)
+(or (not x2939) (not x2580) (not x2549) x2936)
+(or (not x2940) x2941 x2937)
+(or (not x2936) (not x2549) x2580)
+(or (not x2938) (not x2934))
+(or (not x2936) (not x2580) x2549)
+(or (not x2938) x2937 x2934)
+(or (not x2936) x2939)
+(or (not x2934) x2938 x2937)
+(or (not x2936) x2931 x2578 x2546)
+(or (not x2937) x2938 x2934)
+(or (not x2936) (not x2578) (not x2546) x2931)
+(or (not x2935) (not x2932))
+(or (not x2931) (not x2546) x2578)
+(or (not x2935) x2934 x2932)
+(or (not x2931) (not x2578) x2546)
+(or (not x2932) x2935 x2934)
+(or (not x2931) x2936)
+(or (not x2934) x2935 x2932)
+(or (not x2931) x2930 x2576 x2543)
+(or (not x2931) (not x2576) (not x2543) x2930)
+(or (not x2933) x2932)
+(or (not x2930) (not x2543) x2576)
+(or (not x2930) (not x2576) x2543)
+(or (not x2932) x2933)
+(or (not x2930) x2931)
+(or (not x2930) x2925 x2574 x2540)
+(or (not x2930) (not x2574) (not x2540) x2925)
+(or (not x2929) (not x2926))
+(or (not x2925) (not x2540) x2574)
+(or (not x2929) x2928 x2926)
+(or (not x2925) (not x2574) x2540)
+(or (not x2926) x2929 x2928)
+(or (not x2925) x2930)
+(or (not x2928) x2929 x2926)
+(or (not x2925) x2924 x2572 x2537)
+(or (not x2927) (not x2922))
+(or (not x2925) (not x2572) (not x2537) x2924)
+(or (not x2927) x2926 x2922)
+(or (not x2924) (not x2537) x2572)
+(or (not x2922) x2927 x2926)
+(or (not x2924) (not x2572) x2537)
+(or (not x2926) x2927 x2922)
+(or (not x2924) x2925)
+(or (not x2923) (not x2920))
+(or (not x2902) (not x2175) (not x2165))
+(or (not x2923) x2922 x2920)
+(or (not x2175) (not x2165) x2901)
+(or (not x2920) x2923 x2922)
+(or (not x2902) (not x2175) (not x2166) x95)
+(or (not x2922) x2923 x2920)
+(or (not x2175) (not x2166) (not x95) x2902)
+(or (not x2921) (not x2918))
+(or (not x2901) (not x2175) (not x2166))
+(or (not x2921) x2920 x2918)
+(or (not x2902) (not x2175) (not x2167) x94)
+(or (not x2918) x2921 x2920)
+(or (not x2175) (not x2167) (not x94) x2902)
+(or (not x2920) x2921 x2918)
+(or (not x2901) (not x2175) (not x2167))
+(or (not x2902) (not x2175) (not x2168) x92)
+(or (not x2919) x2918)
+(or (not x2175) (not x2168) (not x92) x2902)
+(or (not x2901) (not x2175) (not x2168))
+(or (not x2918) x2919)
+(or (not x2902) (not x2175) (not x2169) x91)
+(or (not x2175) (not x2169) (not x91) x2902)
+(or (not x2901) (not x2175) (not x2169))
+(or (not x2917) (not x2914))
+(or (not x2902) (not x2176) (not x2165) x89)
+(or (not x2917) x2916 x2914)
+(or (not x2176) (not x2165) (not x89) x2902)
+(or (not x2914) x2917 x2916)
+(or (not x2901) (not x2176) (not x2165))
+(or (not x2916) x2917 x2914)
+(or (not x2902) (not x2176) (not x2166))
+(or (not x2915) (not x2912))
+(or (not x2176) (not x2166) x2901)
+(or (not x2915) x2914 x2912)
+(or (not x2902) (not x2176) (not x2167) x88)
+(or (not x2912) x2915 x2914)
+(or (not x2176) (not x2167) (not x88) x2902)
+(or (not x2914) x2915 x2912)
+(or (not x2901) (not x2176) (not x2167))
+(or (not x2913) (not x2910))
+(or (not x2902) (not x2176) (not x2168) x87)
+(or (not x2913) x2912 x2910)
+(or (not x2176) (not x2168) (not x87) x2902)
+(or (not x2910) x2913 x2912)
+(or (not x2901) (not x2176) (not x2168))
+(or (not x2912) x2913 x2910)
+(or (not x2902) (not x2176) (not x2169) x86)
+(or (not x2911) (not x2908))
+(or (not x2176) (not x2169) (not x86) x2902)
+(or (not x2911) x2910 x2908)
+(or (not x2901) (not x2176) (not x2169))
+(or (not x2908) x2911 x2910)
+(or (not x2902) (not x2177) (not x2165) x82)
+(or (not x2910) x2911 x2908)
+(or (not x2177) (not x2165) (not x82) x2902)
+(or (not x2901) (not x2177) (not x2165))
+(or (not x2909) x2908)
+(or (not x2902) (not x2177) (not x2166) x81)
+(or (not x2177) (not x2166) (not x81) x2902)
+(or (not x2908) x2909)
+(or (not x2901) (not x2177) (not x2166))
+(or (not x2902) (not x2177) (not x2167))
+(or (not x2177) (not x2167) x2901)
+(or (not x2365) (not x2906))
+(or (not x2902) (not x2177) (not x2168) x79)
+(or (not x2365) x2907 x2906)
+(or (not x2177) (not x2168) (not x79) x2902)
+(or (not x2906) x2365 x2907)
+(or (not x2901) (not x2177) (not x2168))
+(or (not x2907) x2365 x2906)
+(or (not x2902) (not x2177) (not x2169) x77)
+(or (not x2206) (not x2905))
+(or (not x2177) (not x2169) (not x77) x2902)
+(or (not x2206) x2906 x2905)
+(or (not x2901) (not x2177) (not x2169))
+(or (not x2905) x2206 x2906)
+(or (not x2902) (not x2178) (not x2165) x73)
+(or (not x2906) x2206 x2905)
+(or (not x2178) (not x2165) (not x73) x2902)
+(or (not x2052) (not x2904))
+(or (not x2901) (not x2178) (not x2165))
+(or (not x2052) x2905 x2904)
+(or (not x2902) (not x2178) (not x2166) x67)
+(or (not x2904) x2052 x2905)
+(or (not x2178) (not x2166) (not x67) x2902)
+(or (not x2905) x2052 x2904)
+(or (not x2901) (not x2178) (not x2166))
+(or (not x1750) (not x2903))
+(or (not x2902) (not x2178) (not x2167) x66)
+(or (not x1750) x2904 x2903)
+(or (not x2178) (not x2167) (not x66) x2902)
+(or (not x2903) x1750 x2904)
+(or (not x2901) (not x2178) (not x2167))
+(or (not x2904) x1750 x2903)
+(or (not x2902) (not x2178) (not x2168))
+(or (not x2178) (not x2168) x2901)
+(or (not x1449) x2903)
+(or (not x2902) (not x2178) (not x2169) x65)
+(or (not x2178) (not x2169) (not x65) x2902)
+(or (not x2903) x1449)
+(or (not x2901) (not x2178) (not x2169))
+(or (not x2902) (not x2179) (not x2165) x58)
+(or (not x2179) (not x2165) (not x58) x2902)
+(or (not x2901) (not x2179) (not x2165))
+(or (not x2902) (not x2179) (not x2166) x57)
+(or (not x2179) (not x2166) (not x57) x2902)
+(or (not x2901) (not x2179) (not x2166))
+(or (not x2902) (not x2179) (not x2167) x56)
+(or (not x2179) (not x2167) (not x56) x2902)
+(or (not x2901) (not x2179) (not x2167))
+(or (not x2871) (not x2859) (not x481))
+(or (not x2902) (not x2179) (not x2168) x55)
+(or (not x2871) (not x2859))
+(or (not x2179) (not x2168) (not x55) x2902)
+(or (not x2871) (not x2857) (not x478))
+(or (not x2901) (not x2179) (not x2168))
+(or (not x2871) (not x2857) x601)
+(or (not x2902) (not x2179) (not x2169))
+(or (not x2871) (not x2855) (not x476))
+(or (not x2179) (not x2169) x2901)
+(or (not x2871) (not x2855) x592)
+(or (not x2802) (not x69) (not x6) x2900)
+(or (not x2871) (not x2853) (not x473))
+(or (not x2900) (not x2896) (not x2888) x2899 x2898)
+(or (not x2871) (not x2853) x585)
+(or (not x2900) (not x2888) x2897 x2896)
+(or (not x2871) (not x2851) x580)
+(or (not x2900) x2889 x2888)
+(or (not x2871) x2859 x2857 x2855 x2853 x2851)
+(or (not x2898) (not x2896) (not x2888) x2900)
+(or (not x2871) (not x2859))
+(or (not x2899) (not x2896) (not x2888) x2900)
+(or (not x2871) (not x2846))
+(or (not x2897) (not x2888) x2900)
+(or (not x2871) (not x2831))
+(or (not x2889) x2900)
+(or (not x2871) (not x946))
+(or (not x2899) (not x2898))
+(or (not x2871) (not x2813))
+(or (not x2565) x2899 x2753 x2275)
+(or (not x2899) (not x2565) (not x2275) x2753)
+(or (not x2899) (not x2753) x2565 x2275)
+(or (not x2859) (not x2846) (not x481))
+(or (not x2753) (not x2275) x2899 x2565)
+(or (not x2859) (not x2846))
+(or (not x2563) x2899 x2750 x2275)
+(or (not x2859) (not x2844) (not x478))
+(or (not x2899) (not x2563) (not x2275) x2750)
+(or (not x2859) (not x2844) x601)
+(or (not x2899) (not x2750) x2563 x2275)
+(or (not x2859) (not x2841) (not x476))
+(or (not x2750) (not x2275) x2899 x2563)
+(or (not x2859) (not x2841) x592)
+(or (not x2561) x2899 x2749 x2275)
+(or (not x2859) (not x2838) (not x473))
+(or (not x2899) (not x2561) (not x2275) x2749)
+(or (not x2859) (not x2838) x585)
+(or (not x2899) (not x2749) x2561 x2275)
+(or (not x2859) (not x2836) x580)
+(or (not x2749) (not x2275) x2899 x2561)
+(or (not x2859) x2846 x2844 x2841 x2838 x2836)
+(or (not x2559) x2899 x2746 x2275)
+(or (not x2859) (not x2846))
+(or (not x2899) (not x2559) (not x2275) x2746)
+(or (not x2859) (not x2831))
+(or (not x2899) (not x2746) x2559 x2275)
+(or (not x2859) (not x946))
+(or (not x2746) (not x2275) x2899 x2559)
+(or (not x2859) (not x2813))
+(or (not x2557) x2899 x2745 x2275)
+(or (not x2899) (not x2557) (not x2275) x2745)
+(or (not x2899) (not x2745) x2557 x2275)
+(or (not x2846) (not x2831) (not x481))
+(or (not x2745) (not x2275) x2899 x2557)
+(or (not x2846) (not x2831))
+(or (not x2750) (not x2563) x2898 x2753 x2565)
+(or (not x2846) (not x2827) (not x478))
+(or (not x2749) (not x2561) x2898 x2750 x2563)
+(or (not x2846) (not x2827) x601)
+(or (not x2746) (not x2559) x2898 x2749 x2561)
+(or (not x2846) (not x2825) (not x476))
+(or (not x2745) (not x2557) x2898 x2746 x2559)
+(or (not x2846) (not x2825) x592)
+(or x2898 x2745 x2557)
+(or (not x2846) (not x2823) (not x473))
+(or (not x2753) (not x2565) x2898)
+(or (not x2846) (not x2823) x585)
+(or (not x2898) (not x2753) x2565)
+(or (not x2846) (not x2821) x580)
+(or (not x2898) (not x2565) x2753)
+(or (not x2846) x2831 x2827 x2825 x2823 x2821)
+(or (not x2898) (not x2750) x2563)
+(or (not x2846) (not x2831))
+(or (not x2898) (not x2563) x2750)
+(or (not x2846) (not x946))
+(or (not x2898) (not x2749) x2561)
+(or (not x2846) (not x2813))
+(or (not x2898) (not x2561) x2749)
+(or (not x2898) (not x2746) x2559)
+(or (not x2898) (not x2559) x2746)
+(or (not x2831) (not x946) (not x481))
+(or (not x2898) (not x2745) x2557)
+(or (not x2831) (not x946))
+(or (not x2898) (not x2557) x2745)
+(or (not x2831) (not x944) (not x478))
+(or (not x52) x2897 x2895 x2725)
+(or (not x2831) (not x944) x601)
+(or (not x2897) (not x2725) (not x52) x2895)
+(or (not x2831) (not x942) (not x476))
+(or (not x2897) x2895 x2725 x52)
+(or (not x2831) (not x942) x592)
+(or (not x2725) x2897 x2895 x52)
+(or (not x2831) (not x941) (not x473))
+(or (not x2895) (not x50) x2897 x2894 x2722)
+(or (not x2831) (not x941) x585)
+(or (not x2897) (not x2895) (not x2722) (not x50) x2894)
+(or (not x2831) (not x939) x580)
+(or (not x2897) (not x2895) x2894 x2722 x50)
+(or (not x2831) x946 x944 x942 x941 x939)
+(or (not x2895) (not x2722) x2897 x2894 x50)
+(or (not x2831) (not x946))
+(or (not x2894) (not x48) x2897 x2893 x2718)
+(or (not x2831) (not x2813))
+(or (not x2897) (not x2894) (not x2718) (not x48) x2893)
+(or (not x946) (not x483))
+(or (not x2897) (not x2894) x2893 x2718 x48)
+(or (not x946) x615)
+(or (not x2894) (not x2718) x2897 x2893 x48)
+(or (not x946) (not x2813) (not x481))
+(or (not x2893) (not x46) x2897 x2892 x2714)
+(or (not x946) (not x2813))
+(or (not x2897) (not x2893) (not x2714) (not x46) x2892)
+(or (not x946) (not x2812) (not x478))
+(or (not x2897) (not x2893) x2892 x2714 x46)
+(or (not x946) (not x2812) x601)
+(or (not x2893) (not x2714) x2897 x2892 x46)
+(or (not x946) (not x2810) (not x476))
+(or (not x2892) (not x44) x2897 x2891 x2711)
+(or (not x946) (not x2810) x592)
+(or (not x2897) (not x2892) (not x2711) (not x44) x2891)
+(or (not x946) (not x2808) (not x473))
+(or (not x2897) (not x2892) x2891 x2711 x44)
+(or (not x946) (not x2808) x585)
+(or (not x2892) (not x2711) x2897 x2891 x44)
+(or (not x946) (not x2806) x580)
+(or (not x2891) (not x149) x2897 x2890 x2708)
+(or (not x946) (not x2813))
+(or (not x2897) (not x2891) (not x2708) (not x149) x2890)
+(or (not x481) x2871 x2859 x2846 x2831 x946 x2813)
+(or (not x2897) (not x2891) x2890 x2708 x149)
+(or (not x2891) (not x2708) x2897 x2890 x149)
+(or (not x2897) (not x2896))
+(or (not x2869) (not x2859) (not x481))
+(or (not x2890) x2896)
+(or (not x2869) (not x2859) x608)
+(or (not x2896) x2890)
+(or (not x2869) (not x2857) (not x478))
+(or x2895 x2725 x2552)
+(or (not x2869) (not x2857))
+(or (not x2725) (not x2552) x2895)
+(or (not x2869) (not x2855) (not x476))
+(or (not x2895) (not x2725) x2552)
+(or (not x2869) (not x2855) x589)
+(or (not x2895) (not x2552) x2725)
+(or (not x2869) (not x2853) (not x473))
+(or (not x2895) x2894 x2722 x2550)
+(or (not x2869) (not x2853) x584)
+(or (not x2895) (not x2722) (not x2550) x2894)
+(or (not x2869) (not x2851) x579)
+(or (not x2894) (not x2722) x2550)
+(or (not x2869) x2859 x2857 x2855 x2853 x2851)
+(or (not x2894) (not x2550) x2722)
+(or (not x2869) (not x2857))
+(or (not x2894) x2895)
+(or (not x2869) (not x2844))
+(or (not x2894) x2893 x2718 x2547)
+(or (not x2869) (not x2827))
+(or (not x2894) (not x2718) (not x2547) x2893)
+(or (not x2869) (not x944))
+(or (not x2893) (not x2718) x2547)
+(or (not x2869) (not x2812))
+(or (not x2893) (not x2547) x2718)
+(or (not x2893) x2894)
+(or (not x2893) x2892 x2714 x2544)
+(or (not x2857) (not x2846) (not x481))
+(or (not x2893) (not x2714) (not x2544) x2892)
+(or (not x2857) (not x2846) x608)
+(or (not x2892) (not x2714) x2544)
+(or (not x2857) (not x2844) (not x478))
+(or (not x2892) (not x2544) x2714)
+(or (not x2857) (not x2844))
+(or (not x2892) x2893)
+(or (not x2857) (not x2841) (not x476))
+(or (not x2892) x2891 x2711 x2541)
+(or (not x2857) (not x2841) x589)
+(or (not x2892) (not x2711) (not x2541) x2891)
+(or (not x2857) (not x2838) (not x473))
+(or (not x2891) (not x2711) x2541)
+(or (not x2857) (not x2838) x584)
+(or (not x2891) (not x2541) x2711)
+(or (not x2857) (not x2836) x579)
+(or (not x2891) x2892)
+(or (not x2857) x2846 x2844 x2841 x2838 x2836)
+(or (not x2891) x2890 x2708 x2538)
+(or (not x2857) (not x2844))
+(or (not x2891) (not x2708) (not x2538) x2890)
+(or (not x2857) (not x2827))
+(or (not x2890) (not x2708) x2538)
+(or (not x2857) (not x944))
+(or (not x2890) (not x2538) x2708)
+(or (not x2857) (not x2812))
+(or (not x2890) x2891)
+(or (not x2889) (not x2190) (not x2170))
+(or (not x2190) (not x2170) x2888)
+(or (not x2844) (not x2831) (not x481))
+(or (not x2889) (not x2191) (not x2170) x95)
+(or (not x2844) (not x2831) x608)
+(or (not x2191) (not x2170) (not x95) x2889)
+(or (not x2844) (not x2827) (not x478))
+(or (not x2888) (not x2191) (not x2170))
+(or (not x2844) (not x2827))
+(or (not x2889) (not x2192) (not x2170) x94)
+(or (not x2844) (not x2825) (not x476))
+(or (not x2192) (not x2170) (not x94) x2889)
+(or (not x2844) (not x2825) x589)
+(or (not x2888) (not x2192) (not x2170))
+(or (not x2844) (not x2823) (not x473))
+(or (not x2889) (not x2193) (not x2170) x92)
+(or (not x2844) (not x2823) x584)
+(or (not x2193) (not x2170) (not x92) x2889)
+(or (not x2844) (not x2821) x579)
+(or (not x2888) (not x2193) (not x2170))
+(or (not x2844) x2831 x2827 x2825 x2823 x2821)
+(or (not x2889) (not x2194) (not x2170) x91)
+(or (not x2844) (not x2827))
+(or (not x2194) (not x2170) (not x91) x2889)
+(or (not x2844) (not x944))
+(or (not x2888) (not x2194) (not x2170))
+(or (not x2844) (not x2812))
+(or (not x2889) (not x2190) (not x2171) x89)
+(or (not x2190) (not x2171) (not x89) x2889)
+(or (not x2888) (not x2190) (not x2171))
+(or (not x2827) (not x946) (not x481))
+(or (not x2889) (not x2191) (not x2171))
+(or (not x2827) (not x946) x608)
+(or (not x2191) (not x2171) x2888)
+(or (not x2827) (not x944) (not x478))
+(or (not x2889) (not x2192) (not x2171) x88)
+(or (not x2827) (not x944))
+(or (not x2192) (not x2171) (not x88) x2889)
+(or (not x2827) (not x942) (not x476))
+(or (not x2888) (not x2192) (not x2171))
+(or (not x2827) (not x942) x589)
+(or (not x2889) (not x2193) (not x2171) x87)
+(or (not x2827) (not x941) (not x473))
+(or (not x2193) (not x2171) (not x87) x2889)
+(or (not x2827) (not x941) x584)
+(or (not x2888) (not x2193) (not x2171))
+(or (not x2827) (not x939) x579)
+(or (not x2889) (not x2194) (not x2171) x86)
+(or (not x2827) x946 x944 x942 x941 x939)
+(or (not x2194) (not x2171) (not x86) x2889)
+(or (not x2827) (not x944))
+(or (not x2888) (not x2194) (not x2171))
+(or (not x2827) (not x2812))
+(or (not x2889) (not x2190) (not x2172) x82)
+(or (not x944) (not x483))
+(or (not x2190) (not x2172) (not x82) x2889)
+(or (not x944) x614)
+(or (not x2888) (not x2190) (not x2172))
+(or (not x944) (not x2813) (not x481))
+(or (not x2889) (not x2191) (not x2172) x81)
+(or (not x944) (not x2813) x608)
+(or (not x2191) (not x2172) (not x81) x2889)
+(or (not x944) (not x2812) (not x478))
+(or (not x2888) (not x2191) (not x2172))
+(or (not x944) (not x2812))
+(or (not x2889) (not x2192) (not x2172))
+(or (not x944) (not x2810) (not x476))
+(or (not x2192) (not x2172) x2888)
+(or (not x944) (not x2810) x589)
+(or (not x2889) (not x2193) (not x2172) x79)
+(or (not x944) (not x2808) (not x473))
+(or (not x2193) (not x2172) (not x79) x2889)
+(or (not x944) (not x2808) x584)
+(or (not x2888) (not x2193) (not x2172))
+(or (not x944) (not x2806) x579)
+(or (not x2889) (not x2194) (not x2172) x77)
+(or (not x944) (not x2812))
+(or (not x2194) (not x2172) (not x77) x2889)
+(or (not x478) x2869 x2857 x2844 x2827 x944 x2812)
+(or (not x2888) (not x2194) (not x2172))
+(or (not x2889) (not x2190) (not x2173) x73)
+(or (not x2190) (not x2173) (not x73) x2889)
+(or (not x2867) (not x2859) (not x481))
+(or (not x2888) (not x2190) (not x2173))
+(or (not x2867) (not x2859) x607)
+(or (not x2889) (not x2191) (not x2173) x67)
+(or (not x2867) (not x2857) (not x478))
+(or (not x2191) (not x2173) (not x67) x2889)
+(or (not x2867) (not x2857) x599)
+(or (not x2888) (not x2191) (not x2173))
+(or (not x2867) (not x2855) (not x476))
+(or (not x2889) (not x2192) (not x2173) x66)
+(or (not x2867) (not x2855))
+(or (not x2192) (not x2173) (not x66) x2889)
+(or (not x2867) (not x2853) (not x473))
+(or (not x2888) (not x2192) (not x2173))
+(or (not x2867) (not x2853) x583)
+(or (not x2889) (not x2193) (not x2173))
+(or (not x2867) (not x2851) x578)
+(or (not x2193) (not x2173) x2888)
+(or (not x2867) x2859 x2857 x2855 x2853 x2851)
+(or (not x2889) (not x2194) (not x2173) x65)
+(or (not x2867) (not x2855))
+(or (not x2194) (not x2173) (not x65) x2889)
+(or (not x2867) (not x2841))
+(or (not x2888) (not x2194) (not x2173))
+(or (not x2867) (not x2825))
+(or (not x2889) (not x2190) (not x2174) x58)
+(or (not x2867) (not x942))
+(or (not x2190) (not x2174) (not x58) x2889)
+(or (not x2867) (not x2810))
+(or (not x2888) (not x2190) (not x2174))
+(or (not x2889) (not x2191) (not x2174) x57)
+(or (not x2191) (not x2174) (not x57) x2889)
+(or (not x2855) (not x2846) (not x481))
+(or (not x2888) (not x2191) (not x2174))
+(or (not x2855) (not x2846) x607)
+(or (not x2889) (not x2192) (not x2174) x56)
+(or (not x2855) (not x2844) (not x478))
+(or (not x2192) (not x2174) (not x56) x2889)
+(or (not x2855) (not x2844) x599)
+(or (not x2888) (not x2192) (not x2174))
+(or (not x2855) (not x2841) (not x476))
+(or (not x2889) (not x2193) (not x2174) x55)
+(or (not x2855) (not x2841))
+(or (not x2193) (not x2174) (not x55) x2889)
+(or (not x2855) (not x2838) (not x473))
+(or (not x2888) (not x2193) (not x2174))
+(or (not x2855) (not x2838) x583)
+(or (not x2889) (not x2194) (not x2174))
+(or (not x2855) (not x2836) x578)
+(or (not x2194) (not x2174) x2888)
+(or (not x2855) x2846 x2844 x2841 x2838 x2836)
+(or (not x2802) (not x69) (not x7) x2887)
+(or (not x2855) (not x2841))
+(or (not x2887) (not x2883) (not x2875) x2886 x2885)
+(or (not x2855) (not x2825))
+(or (not x2887) (not x2875) x2884 x2883)
+(or (not x2855) (not x942))
+(or (not x2887) x2876 x2875)
+(or (not x2855) (not x2810))
+(or (not x2885) (not x2883) (not x2875) x2887)
+(or (not x2886) (not x2883) (not x2875) x2887)
+(or (not x2884) (not x2875) x2887)
+(or (not x2841) (not x2831) (not x481))
+(or (not x2876) x2887)
+(or (not x2841) (not x2831) x607)
+(or (not x2886) (not x2885))
+(or (not x2841) (not x2827) (not x478))
+(or (not x2565) x2886 x2692 x2275)
+(or (not x2841) (not x2827) x599)
+(or (not x2886) (not x2565) (not x2275) x2692)
+(or (not x2841) (not x2825) (not x476))
+(or (not x2886) (not x2692) x2565 x2275)
+(or (not x2841) (not x2825))
+(or (not x2692) (not x2275) x2886 x2565)
+(or (not x2841) (not x2823) (not x473))
+(or (not x2563) x2886 x2691 x2275)
+(or (not x2841) (not x2823) x583)
+(or (not x2886) (not x2563) (not x2275) x2691)
+(or (not x2841) (not x2821) x578)
+(or (not x2886) (not x2691) x2563 x2275)
+(or (not x2841) x2831 x2827 x2825 x2823 x2821)
+(or (not x2691) (not x2275) x2886 x2563)
+(or (not x2841) (not x2825))
+(or (not x2561) x2886 x2690 x2275)
+(or (not x2841) (not x942))
+(or (not x2886) (not x2561) (not x2275) x2690)
+(or (not x2841) (not x2810))
+(or (not x2886) (not x2690) x2561 x2275)
+(or (not x2690) (not x2275) x2886 x2561)
+(or (not x2559) x2886 x2689 x2275)
+(or (not x2825) (not x946) (not x481))
+(or (not x2886) (not x2559) (not x2275) x2689)
+(or (not x2825) (not x946) x607)
+(or (not x2886) (not x2689) x2559 x2275)
+(or (not x2825) (not x944) (not x478))
+(or (not x2689) (not x2275) x2886 x2559)
+(or (not x2825) (not x944) x599)
+(or (not x2557) x2886 x2688 x2275)
+(or (not x2825) (not x942) (not x476))
+(or (not x2886) (not x2557) (not x2275) x2688)
+(or (not x2825) (not x942))
+(or (not x2886) (not x2688) x2557 x2275)
+(or (not x2825) (not x941) (not x473))
+(or (not x2688) (not x2275) x2886 x2557)
+(or (not x2825) (not x941) x583)
+(or (not x2691) (not x2563) x2885 x2692 x2565)
+(or (not x2825) (not x939) x578)
+(or (not x2690) (not x2561) x2885 x2691 x2563)
+(or (not x2825) x946 x944 x942 x941 x939)
+(or (not x2689) (not x2559) x2885 x2690 x2561)
+(or (not x2825) (not x942))
+(or (not x2688) (not x2557) x2885 x2689 x2559)
+(or (not x2825) (not x2810))
+(or x2885 x2688 x2557)
+(or (not x942) (not x483))
+(or (not x2692) (not x2565) x2885)
+(or (not x942) x613)
+(or (not x2885) (not x2692) x2565)
+(or (not x942) (not x2813) (not x481))
+(or (not x2885) (not x2565) x2692)
+(or (not x942) (not x2813) x607)
+(or (not x2885) (not x2691) x2563)
+(or (not x942) (not x2812) (not x478))
+(or (not x2885) (not x2563) x2691)
+(or (not x942) (not x2812) x599)
+(or (not x2885) (not x2690) x2561)
+(or (not x942) (not x2810) (not x476))
+(or (not x2885) (not x2561) x2690)
+(or (not x942) (not x2810))
+(or (not x2885) (not x2689) x2559)
+(or (not x942) (not x2808) (not x473))
+(or (not x2885) (not x2559) x2689)
+(or (not x942) (not x2808) x583)
+(or (not x2885) (not x2688) x2557)
+(or (not x942) (not x2806) x578)
+(or (not x2885) (not x2557) x2688)
+(or (not x942) (not x2810))
+(or (not x52) x2884 x2882 x2684)
+(or (not x476) x2867 x2855 x2841 x2825 x942 x2810)
+(or (not x2884) (not x2684) (not x52) x2882)
+(or (not x2884) x2882 x2684 x52)
+(or (not x2684) x2884 x2882 x52)
+(or (not x2865) (not x2859) (not x481))
+(or (not x2882) (not x50) x2884 x2881 x2683)
+(or (not x2865) (not x2859) x606)
+(or (not x2884) (not x2882) (not x2683) (not x50) x2881)
+(or (not x2865) (not x2857) (not x478))
+(or (not x2884) (not x2882) x2881 x2683 x50)
+(or (not x2865) (not x2857) x598)
+(or (not x2882) (not x2683) x2884 x2881 x50)
+(or (not x2865) (not x2855) (not x476))
+(or (not x2881) (not x48) x2884 x2880 x2681)
+(or (not x2865) (not x2855) x588)
+(or (not x2884) (not x2881) (not x2681) (not x48) x2880)
+(or (not x2865) (not x2853) (not x473))
+(or (not x2884) (not x2881) x2880 x2681 x48)
+(or (not x2865) (not x2853))
+(or (not x2881) (not x2681) x2884 x2880 x48)
+(or (not x2865) (not x2851) x577)
+(or (not x2880) (not x46) x2884 x2879 x2679)
+(or (not x2865) x2859 x2857 x2855 x2853 x2851)
+(or (not x2884) (not x2880) (not x2679) (not x46) x2879)
+(or (not x2865) (not x2853))
+(or (not x2884) (not x2880) x2879 x2679 x46)
+(or (not x2865) (not x2838))
+(or (not x2880) (not x2679) x2884 x2879 x46)
+(or (not x2865) (not x2823))
+(or (not x2879) (not x44) x2884 x2878 x2677)
+(or (not x2865) (not x941))
+(or (not x2884) (not x2879) (not x2677) (not x44) x2878)
+(or (not x2865) (not x2808))
+(or (not x2884) (not x2879) x2878 x2677 x44)
+(or (not x2879) (not x2677) x2884 x2878 x44)
+(or (not x2878) (not x149) x2884 x2877 x2675)
+(or (not x2853) (not x2846) (not x481))
+(or (not x2884) (not x2878) (not x2675) (not x149) x2877)
+(or (not x2853) (not x2846) x606)
+(or (not x2884) (not x2878) x2877 x2675 x149)
+(or (not x2853) (not x2844) (not x478))
+(or (not x2878) (not x2675) x2884 x2877 x149)
+(or (not x2853) (not x2844) x598)
+(or (not x2884) (not x2883))
+(or (not x2853) (not x2841) (not x476))
+(or (not x2877) x2883)
+(or (not x2853) (not x2841) x588)
+(or (not x2883) x2877)
+(or (not x2853) (not x2838) (not x473))
+(or x2882 x2684 x2552)
+(or (not x2853) (not x2838))
+(or (not x2684) (not x2552) x2882)
+(or (not x2853) (not x2836) x577)
+(or (not x2882) (not x2684) x2552)
+(or (not x2853) x2846 x2844 x2841 x2838 x2836)
+(or (not x2882) (not x2552) x2684)
+(or (not x2853) (not x2838))
+(or (not x2882) x2881 x2683 x2550)
+(or (not x2853) (not x2823))
+(or (not x2882) (not x2683) (not x2550) x2881)
+(or (not x2853) (not x941))
+(or (not x2881) (not x2683) x2550)
+(or (not x2853) (not x2808))
+(or (not x2881) (not x2550) x2683)
+(or (not x2881) x2882)
+(or (not x2881) x2880 x2681 x2547)
+(or (not x2838) (not x2831) (not x481))
+(or (not x2881) (not x2681) (not x2547) x2880)
+(or (not x2838) (not x2831) x606)
+(or (not x2880) (not x2681) x2547)
+(or (not x2838) (not x2827) (not x478))
+(or (not x2880) (not x2547) x2681)
+(or (not x2838) (not x2827) x598)
+(or (not x2880) x2881)
+(or (not x2838) (not x2825) (not x476))
+(or (not x2880) x2879 x2679 x2544)
+(or (not x2838) (not x2825) x588)
+(or (not x2880) (not x2679) (not x2544) x2879)
+(or (not x2838) (not x2823) (not x473))
+(or (not x2879) (not x2679) x2544)
+(or (not x2838) (not x2823))
+(or (not x2879) (not x2544) x2679)
+(or (not x2838) (not x2821) x577)
+(or (not x2879) x2880)
+(or (not x2838) x2831 x2827 x2825 x2823 x2821)
+(or (not x2879) x2878 x2677 x2541)
+(or (not x2838) (not x2823))
+(or (not x2879) (not x2677) (not x2541) x2878)
+(or (not x2838) (not x941))
+(or (not x2878) (not x2677) x2541)
+(or (not x2838) (not x2808))
+(or (not x2878) (not x2541) x2677)
+(or (not x2878) x2879)
+(or (not x2878) x2877 x2675 x2538)
+(or (not x2823) (not x946) (not x481))
+(or (not x2878) (not x2675) (not x2538) x2877)
+(or (not x2823) (not x946) x606)
+(or (not x2877) (not x2675) x2538)
+(or (not x2823) (not x944) (not x478))
+(or (not x2877) (not x2538) x2675)
+(or (not x2823) (not x944) x598)
+(or (not x2877) x2878)
+(or (not x2823) (not x942) (not x476))
+(or (not x2876) (not x2185) (not x2170))
+(or (not x2823) (not x942) x588)
+(or (not x2185) (not x2170) x2875)
+(or (not x2823) (not x941) (not x473))
+(or (not x2876) (not x2186) (not x2170) x95)
+(or (not x2823) (not x941))
+(or (not x2186) (not x2170) (not x95) x2876)
+(or (not x2823) (not x939) x577)
+(or (not x2875) (not x2186) (not x2170))
+(or (not x2823) x946 x944 x942 x941 x939)
+(or (not x2876) (not x2187) (not x2170) x94)
+(or (not x2823) (not x941))
+(or (not x2187) (not x2170) (not x94) x2876)
+(or (not x2823) (not x2808))
+(or (not x2875) (not x2187) (not x2170))
+(or (not x941) (not x483))
+(or (not x2876) (not x2188) (not x2170) x92)
+(or (not x941) x611)
+(or (not x2188) (not x2170) (not x92) x2876)
+(or (not x941) (not x2813) (not x481))
+(or (not x2875) (not x2188) (not x2170))
+(or (not x941) (not x2813) x606)
+(or (not x2876) (not x2189) (not x2170) x91)
+(or (not x941) (not x2812) (not x478))
+(or (not x2189) (not x2170) (not x91) x2876)
+(or (not x941) (not x2812) x598)
+(or (not x2875) (not x2189) (not x2170))
+(or (not x941) (not x2810) (not x476))
+(or (not x2876) (not x2185) (not x2171) x89)
+(or (not x941) (not x2810) x588)
+(or (not x2185) (not x2171) (not x89) x2876)
+(or (not x941) (not x2808) (not x473))
+(or (not x2875) (not x2185) (not x2171))
+(or (not x941) (not x2808))
+(or (not x2876) (not x2186) (not x2171))
+(or (not x941) (not x2806) x577)
+(or (not x2186) (not x2171) x2875)
+(or (not x941) (not x2808))
+(or (not x2876) (not x2187) (not x2171) x88)
+(or (not x473) x2865 x2853 x2838 x2823 x941 x2808)
+(or (not x2187) (not x2171) (not x88) x2876)
+(or (not x2875) (not x2187) (not x2171))
+(or (not x2876) (not x2188) (not x2171) x87)
+(or (not x2862) (not x2859) (not x481))
+(or (not x2188) (not x2171) (not x87) x2876)
+(or (not x2862) (not x2859) x605)
+(or (not x2875) (not x2188) (not x2171))
+(or (not x2862) (not x2857) (not x478))
+(or (not x2876) (not x2189) (not x2171) x86)
+(or (not x2862) (not x2857) x596)
+(or (not x2189) (not x2171) (not x86) x2876)
+(or (not x2862) (not x2855) (not x476))
+(or (not x2875) (not x2189) (not x2171))
+(or (not x2862) (not x2855) x587)
+(or (not x2876) (not x2185) (not x2172) x82)
+(or (not x2862) (not x2853) (not x473))
+(or (not x2185) (not x2172) (not x82) x2876)
+(or (not x2862) (not x2853) x582)
+(or (not x2875) (not x2185) (not x2172))
+(or (not x2862) (not x2851))
+(or (not x2876) (not x2186) (not x2172) x81)
+(or (not x2862) x2859 x2857 x2855 x2853 x2851)
+(or (not x2186) (not x2172) (not x81) x2876)
+(or (not x2862) (not x2851))
+(or (not x2875) (not x2186) (not x2172))
+(or (not x2862) (not x2836))
+(or (not x2876) (not x2187) (not x2172))
+(or (not x2862) (not x2821))
+(or (not x2187) (not x2172) x2875)
+(or (not x2862) (not x939))
+(or (not x2876) (not x2188) (not x2172) x79)
+(or (not x2862) (not x2806))
+(or (not x2188) (not x2172) (not x79) x2876)
+(or (not x2875) (not x2188) (not x2172))
+(or (not x2876) (not x2189) (not x2172) x77)
+(or (not x2851) (not x2846) (not x481))
+(or (not x2189) (not x2172) (not x77) x2876)
+(or (not x2851) (not x2846) x605)
+(or (not x2875) (not x2189) (not x2172))
+(or (not x2851) (not x2844) (not x478))
+(or (not x2876) (not x2185) (not x2173) x73)
+(or (not x2851) (not x2844) x596)
+(or (not x2185) (not x2173) (not x73) x2876)
+(or (not x2851) (not x2841) (not x476))
+(or (not x2875) (not x2185) (not x2173))
+(or (not x2851) (not x2841) x587)
+(or (not x2876) (not x2186) (not x2173) x67)
+(or (not x2851) (not x2838) (not x473))
+(or (not x2186) (not x2173) (not x67) x2876)
+(or (not x2851) (not x2838) x582)
+(or (not x2875) (not x2186) (not x2173))
+(or (not x2851) (not x2836))
+(or (not x2876) (not x2187) (not x2173) x66)
+(or (not x2851) x2846 x2844 x2841 x2838 x2836)
+(or (not x2187) (not x2173) (not x66) x2876)
+(or (not x2851) (not x2836))
+(or (not x2875) (not x2187) (not x2173))
+(or (not x2851) (not x2821))
+(or (not x2876) (not x2188) (not x2173))
+(or (not x2851) (not x939))
+(or (not x2188) (not x2173) x2875)
+(or (not x2851) (not x2806))
+(or (not x2876) (not x2189) (not x2173) x65)
+(or (not x2189) (not x2173) (not x65) x2876)
+(or (not x2875) (not x2189) (not x2173))
+(or (not x2836) (not x2831) (not x481))
+(or (not x2876) (not x2185) (not x2174) x58)
+(or (not x2836) (not x2831) x605)
+(or (not x2185) (not x2174) (not x58) x2876)
+(or (not x2836) (not x2827) (not x478))
+(or (not x2875) (not x2185) (not x2174))
+(or (not x2836) (not x2827) x596)
+(or (not x2876) (not x2186) (not x2174) x57)
+(or (not x2836) (not x2825) (not x476))
+(or (not x2186) (not x2174) (not x57) x2876)
+(or (not x2836) (not x2825) x587)
+(or (not x2875) (not x2186) (not x2174))
+(or (not x2836) (not x2823) (not x473))
+(or (not x2876) (not x2187) (not x2174) x56)
+(or (not x2836) (not x2823) x582)
+(or (not x2187) (not x2174) (not x56) x2876)
+(or (not x2836) (not x2821))
+(or (not x2875) (not x2187) (not x2174))
+(or (not x2836) x2831 x2827 x2825 x2823 x2821)
+(or (not x2876) (not x2188) (not x2174) x55)
+(or (not x2836) (not x2821))
+(or (not x2188) (not x2174) (not x55) x2876)
+(or (not x2836) (not x939))
+(or (not x2875) (not x2188) (not x2174))
+(or (not x2836) (not x2806))
+(or (not x2876) (not x2189) (not x2174))
+(or (not x2189) (not x2174) x2875)
+(or (not x2802) (not x69) (not x8) x2874)
+(or (not x2821) (not x946) (not x481))
+(or (not x2874) (not x2848) (not x2803) x2872 x2863)
+(or (not x2821) (not x946) x605)
+(or (not x2874) (not x2803) x2849 x2848)
+(or (not x2821) (not x944) (not x478))
+(or (not x2874) x2804 x2803)
+(or (not x2821) (not x944) x596)
+(or (not x2863) (not x2848) (not x2803) x2874)
+(or (not x2821) (not x942) (not x476))
+(or (not x2872) (not x2848) (not x2803) x2874)
+(or (not x2821) (not x942) x587)
+(or (not x2849) (not x2803) x2874)
+(or (not x2821) (not x941) (not x473))
+(or (not x2804) x2874)
+(or (not x2821) (not x941) x582)
+(or (not x2872) (not x2863))
+(or (not x2821) (not x939))
+(or (not x2565) x2872 x2668 x2275)
+(or (not x2821) x946 x944 x942 x941 x939)
+(or (not x2872) (not x2565) (not x2275) x2668)
+(or (not x2821) (not x939))
+(or (not x2872) (not x2668) x2565 x2275)
+(or (not x2821) (not x2806))
+(or (not x2668) (not x2275) x2872 x2565)
+(or (not x939) (not x483))
+(or (not x2563) x2872 x2667 x2275)
+(or (not x939) x610)
+(or (not x2872) (not x2563) (not x2275) x2667)
+(or (not x939) (not x2813) (not x481))
+(or (not x2872) (not x2667) x2563 x2275)
+(or (not x939) (not x2813) x605)
+(or (not x2667) (not x2275) x2872 x2563)
+(or (not x939) (not x2812) (not x478))
+(or (not x2561) x2872 x2666 x2275)
+(or (not x939) (not x2812) x596)
+(or (not x2872) (not x2561) (not x2275) x2666)
+(or (not x939) (not x2810) (not x476))
+(or (not x2872) (not x2666) x2561 x2275)
+(or (not x939) (not x2810) x587)
+(or (not x2666) (not x2275) x2872 x2561)
+(or (not x939) (not x2808) (not x473))
+(or (not x2559) x2872 x2665 x2275)
+(or (not x939) (not x2808) x582)
+(or (not x2872) (not x2559) (not x2275) x2665)
+(or (not x939) (not x2806))
+(or (not x2872) (not x2665) x2559 x2275)
+(or (not x939) (not x2806))
+(or (not x2665) (not x2275) x2872 x2559)
+(or (not x2557) x2872 x2664 x2275)
+(or (not x2872) (not x2557) (not x2275) x2664)
+(or (not x2870) x2873)
+(or (not x2872) (not x2664) x2557 x2275)
+(or (not x2873) x2870)
+(or (not x2664) (not x2275) x2872 x2557)
+(or (not x2871) (not x2868))
+(or (not x2667) (not x2563) x2863 x2668 x2565)
+(or (not x2871) x2870 x2868)
+(or (not x2666) (not x2561) x2863 x2667 x2563)
+(or (not x2868) x2871 x2870)
+(or (not x2665) (not x2559) x2863 x2666 x2561)
+(or (not x2870) x2871 x2868)
+(or (not x2664) (not x2557) x2863 x2665 x2559)
+(or (not x2869) (not x2866))
+(or x2863 x2664 x2557)
+(or (not x2869) x2868 x2866)
+(or (not x2668) (not x2565) x2863)
+(or (not x2866) x2869 x2868)
+(or (not x2863) (not x2668) x2565)
+(or (not x2868) x2869 x2866)
+(or (not x2863) (not x2565) x2668)
+(or (not x2867) (not x2864))
+(or (not x2863) (not x2667) x2563)
+(or (not x2867) x2866 x2864)
+(or (not x2863) (not x2563) x2667)
+(or (not x2864) x2867 x2866)
+(or (not x2863) (not x2666) x2561)
+(or (not x2866) x2867 x2864)
+(or (not x2863) (not x2561) x2666)
+(or (not x2865) (not x2861))
+(or (not x2863) (not x2665) x2559)
+(or (not x2865) x2864 x2861)
+(or (not x2863) (not x2559) x2665)
+(or (not x2861) x2865 x2864)
+(or (not x2863) (not x2664) x2557)
+(or (not x2864) x2865 x2861)
+(or (not x2863) (not x2557) x2664)
+(or (not x2862) x2861)
+(or (not x52) x2849 x2842 x2660)
+(or (not x2861) x2862)
+(or (not x2849) (not x2660) (not x52) x2842)
+(or (not x2849) x2842 x2660 x52)
+(or (not x2660) x2849 x2842 x52)
+(or (not x2858) x2860)
+(or (not x2842) (not x50) x2849 x2839 x2659)
+(or (not x2860) x2858)
+(or (not x2849) (not x2842) (not x2659) (not x50) x2839)
+(or (not x2859) (not x2856))
+(or (not x2849) (not x2842) x2839 x2659 x50)
+(or (not x2859) x2858 x2856)
+(or (not x2842) (not x2659) x2849 x2839 x50)
+(or (not x2856) x2859 x2858)
+(or (not x2839) (not x48) x2849 x2834 x2657)
+(or (not x2858) x2859 x2856)
+(or (not x2849) (not x2839) (not x2657) (not x48) x2834)
+(or (not x2857) (not x2854))
+(or (not x2849) (not x2839) x2834 x2657 x48)
+(or (not x2857) x2856 x2854)
+(or (not x2839) (not x2657) x2849 x2834 x48)
+(or (not x2854) x2857 x2856)
+(or (not x2834) (not x46) x2849 x2832 x2655)
+(or (not x2856) x2857 x2854)
+(or (not x2849) (not x2834) (not x2655) (not x46) x2832)
+(or (not x2855) (not x2852))
+(or (not x2849) (not x2834) x2832 x2655 x46)
+(or (not x2855) x2854 x2852)
+(or (not x2834) (not x2655) x2849 x2832 x46)
+(or (not x2852) x2855 x2854)
+(or (not x2832) (not x44) x2849 x2829 x2653)
+(or (not x2854) x2855 x2852)
+(or (not x2849) (not x2832) (not x2653) (not x44) x2829)
+(or (not x2853) (not x2850))
+(or (not x2849) (not x2832) x2829 x2653 x44)
+(or (not x2853) x2852 x2850)
+(or (not x2832) (not x2653) x2849 x2829 x44)
+(or (not x2850) x2853 x2852)
+(or (not x2829) (not x149) x2849 x2828 x2651)
+(or (not x2852) x2853 x2850)
+(or (not x2849) (not x2829) (not x2651) (not x149) x2828)
+(or (not x2851) x2850)
+(or (not x2849) (not x2829) x2828 x2651 x149)
+(or (not x2850) x2851)
+(or (not x2829) (not x2651) x2849 x2828 x149)
+(or (not x2849) (not x2848))
+(or (not x2828) x2848)
+(or (not x2845) x2847)
+(or (not x2848) x2828)
+(or (not x2847) x2845)
+(or x2842 x2660 x2552)
+(or (not x2846) (not x2843))
+(or (not x2660) (not x2552) x2842)
+(or (not x2846) x2845 x2843)
+(or (not x2842) (not x2660) x2552)
+(or (not x2843) x2846 x2845)
+(or (not x2842) (not x2552) x2660)
+(or (not x2845) x2846 x2843)
+(or (not x2842) x2839 x2659 x2550)
+(or (not x2844) (not x2840))
+(or (not x2842) (not x2659) (not x2550) x2839)
+(or (not x2844) x2843 x2840)
+(or (not x2839) (not x2659) x2550)
+(or (not x2840) x2844 x2843)
+(or (not x2839) (not x2550) x2659)
+(or (not x2843) x2844 x2840)
+(or (not x2839) x2842)
+(or (not x2841) (not x2837))
+(or (not x2839) x2834 x2657 x2547)
+(or (not x2841) x2840 x2837)
+(or (not x2839) (not x2657) (not x2547) x2834)
+(or (not x2837) x2841 x2840)
+(or (not x2834) (not x2657) x2547)
+(or (not x2840) x2841 x2837)
+(or (not x2834) (not x2547) x2657)
+(or (not x2838) (not x2835))
+(or (not x2834) x2839)
+(or (not x2838) x2837 x2835)
+(or (not x2834) x2832 x2655 x2544)
+(or (not x2835) x2838 x2837)
+(or (not x2834) (not x2655) (not x2544) x2832)
+(or (not x2837) x2838 x2835)
+(or (not x2832) (not x2655) x2544)
+(or (not x2836) x2835)
+(or (not x2832) (not x2544) x2655)
+(or (not x2835) x2836)
+(or (not x2832) x2834)
+(or (not x2832) x2829 x2653 x2541)
+(or (not x2832) (not x2653) (not x2541) x2829)
+(or (not x2830) x2833)
+(or (not x2829) (not x2653) x2541)
+(or (not x2833) x2830)
+(or (not x2829) (not x2541) x2653)
+(or (not x2831) (not x2826))
+(or (not x2829) x2832)
+(or (not x2831) x2830 x2826)
+(or (not x2829) x2828 x2651 x2538)
+(or (not x2826) x2831 x2830)
+(or (not x2829) (not x2651) (not x2538) x2828)
+(or (not x2830) x2831 x2826)
+(or (not x2828) (not x2651) x2538)
+(or (not x2827) (not x2824))
+(or (not x2828) (not x2538) x2651)
+(or (not x2827) x2826 x2824)
+(or (not x2828) x2829)
+(or (not x2824) x2827 x2826)
+(or (not x2804) (not x2180) (not x2170))
+(or (not x2826) x2827 x2824)
+(or (not x2180) (not x2170) x2803)
+(or (not x2825) (not x2822))
+(or (not x2804) (not x2181) (not x2170) x95)
+(or (not x2825) x2824 x2822)
+(or (not x2181) (not x2170) (not x95) x2804)
+(or (not x2822) x2825 x2824)
+(or (not x2803) (not x2181) (not x2170))
+(or (not x2824) x2825 x2822)
+(or (not x2804) (not x2182) (not x2170) x94)
+(or (not x2823) (not x2820))
+(or (not x2182) (not x2170) (not x94) x2804)
+(or (not x2823) x2822 x2820)
+(or (not x2803) (not x2182) (not x2170))
+(or (not x2820) x2823 x2822)
+(or (not x2804) (not x2183) (not x2170) x92)
+(or (not x2822) x2823 x2820)
+(or (not x2183) (not x2170) (not x92) x2804)
+(or (not x2821) x2820)
+(or (not x2803) (not x2183) (not x2170))
+(or (not x2820) x2821)
+(or (not x2804) (not x2184) (not x2170) x91)
+(or (not x2184) (not x2170) (not x91) x2804)
+(or (not x2803) (not x2184) (not x2170))
+(or (not x2818) x2819)
+(or (not x2804) (not x2180) (not x2171) x89)
+(or (not x2819) x2818)
+(or (not x2180) (not x2171) (not x89) x2804)
+(or (not x946) (not x2817))
+(or (not x2803) (not x2180) (not x2171))
+(or (not x946) x2818 x2817)
+(or (not x2804) (not x2181) (not x2171))
+(or (not x2817) x946 x2818)
+(or (not x2181) (not x2171) x2803)
+(or (not x2818) x946 x2817)
+(or (not x2804) (not x2182) (not x2171) x88)
+(or (not x944) (not x2816))
+(or (not x2182) (not x2171) (not x88) x2804)
+(or (not x944) x2817 x2816)
+(or (not x2803) (not x2182) (not x2171))
+(or (not x2816) x944 x2817)
+(or (not x2804) (not x2183) (not x2171) x87)
+(or (not x2817) x944 x2816)
+(or (not x2183) (not x2171) (not x87) x2804)
+(or (not x942) (not x2815))
+(or (not x2803) (not x2183) (not x2171))
+(or (not x942) x2816 x2815)
+(or (not x2804) (not x2184) (not x2171) x86)
+(or (not x2815) x942 x2816)
+(or (not x2184) (not x2171) (not x86) x2804)
+(or (not x2816) x942 x2815)
+(or (not x2803) (not x2184) (not x2171))
+(or (not x941) (not x2814))
+(or (not x2804) (not x2180) (not x2172) x82)
+(or (not x941) x2815 x2814)
+(or (not x2180) (not x2172) (not x82) x2804)
+(or (not x2814) x941 x2815)
+(or (not x2803) (not x2180) (not x2172))
+(or (not x2815) x941 x2814)
+(or (not x2804) (not x2181) (not x2172) x81)
+(or (not x939) x2814)
+(or (not x2181) (not x2172) (not x81) x2804)
+(or (not x2814) x939)
+(or (not x2803) (not x2181) (not x2172))
+(or (not x2804) (not x2182) (not x2172))
+(or (not x2813) (not x2811))
+(or (not x2182) (not x2172) x2803)
+(or (not x2813) x2811)
+(or (not x2804) (not x2183) (not x2172) x79)
+(or (not x2811) x2813)
+(or (not x2183) (not x2172) (not x79) x2804)
+(or (not x2803) (not x2183) (not x2172))
+(or (not x2812) (not x2809))
+(or (not x2804) (not x2184) (not x2172) x77)
+(or (not x2812) x2811 x2809)
+(or (not x2184) (not x2172) (not x77) x2804)
+(or (not x2809) x2812 x2811)
+(or (not x2803) (not x2184) (not x2172))
+(or (not x2811) x2812 x2809)
+(or (not x2804) (not x2180) (not x2173) x73)
+(or (not x2810) (not x2807))
+(or (not x2180) (not x2173) (not x73) x2804)
+(or (not x2810) x2809 x2807)
+(or (not x2803) (not x2180) (not x2173))
+(or (not x2807) x2810 x2809)
+(or (not x2804) (not x2181) (not x2173) x67)
+(or (not x2809) x2810 x2807)
+(or (not x2181) (not x2173) (not x67) x2804)
+(or (not x2808) (not x2805))
+(or (not x2803) (not x2181) (not x2173))
+(or (not x2808) x2807 x2805)
+(or (not x2804) (not x2182) (not x2173) x66)
+(or (not x2805) x2808 x2807)
+(or (not x2182) (not x2173) (not x66) x2804)
+(or (not x2807) x2808 x2805)
+(or (not x2803) (not x2182) (not x2173))
+(or (not x2806) x2805)
+(or (not x2804) (not x2183) (not x2173))
+(or (not x2805) x2806)
+(or (not x2183) (not x2173) x2803)
+(or (not x2777) (not x2763) (not x107))
+(or (not x2804) (not x2184) (not x2173) x65)
+(or (not x2777) (not x2763))
+(or (not x2184) (not x2173) (not x65) x2804)
+(or (not x2777) (not x2760) (not x93))
+(or (not x2803) (not x2184) (not x2173))
+(or (not x2777) (not x2760) x602)
+(or (not x2804) (not x2180) (not x2174) x58)
+(or (not x2777) (not x2757) (not x85))
+(or (not x2180) (not x2174) (not x58) x2804)
+(or (not x2777) (not x2757) x594)
+(or (not x2803) (not x2180) (not x2174))
+(or (not x2777) (not x2755) (not x70))
+(or (not x2804) (not x2181) (not x2174) x57)
+(or (not x2777) (not x2755) x586)
+(or (not x2181) (not x2174) (not x57) x2804)
+(or (not x2777) (not x2752) x581)
+(or (not x2803) (not x2181) (not x2174))
+(or (not x2777) x2763 x2760 x2757 x2755 x2752)
+(or (not x2804) (not x2182) (not x2174) x56)
+(or (not x2777) (not x2763))
+(or (not x2182) (not x2174) (not x56) x2804)
+(or (not x2777) (not x2748))
+(or (not x2803) (not x2182) (not x2174))
+(or (not x2777) (not x2734))
+(or (not x2804) (not x2183) (not x2174) x55)
+(or (not x2777) (not x937))
+(or (not x2183) (not x2174) (not x55) x2804)
+(or (not x2763) (not x2748) (not x107))
+(or (not x2803) (not x2183) (not x2174))
+(or (not x2763) (not x2748))
+(or (not x2804) (not x2184) (not x2174))
+(or (not x2763) (not x2742) (not x93))
+(or (not x2184) (not x2174) x2803)
+(or (not x2763) (not x2742) x602)
+(or (not x2802) (not x69) (not x9) x2801)
+(or (not x2763) (not x2740) (not x85))
+(or (not x2801) (not x2797) (not x2789) x2800 x2799)
+(or (not x2763) (not x2740) x594)
+(or (not x2801) (not x2789) x2798 x2797)
+(or (not x2763) (not x2738) (not x70))
+(or (not x2801) x2790 x2789)
+(or (not x2763) (not x2738) x586)
+(or (not x2799) (not x2797) (not x2789) x2801)
+(or (not x2763) (not x2736) x581)
+(or (not x2800) (not x2797) (not x2789) x2801)
+(or (not x2763) x2748 x2742 x2740 x2738 x2736)
+(or (not x2798) (not x2789) x2801)
+(or (not x2763) (not x2748))
+(or (not x2790) x2801)
+(or (not x2763) (not x2734))
+(or (not x2800) (not x2799))
+(or (not x2763) (not x937))
+(or (not x2565) x2800 x2598 x2275)
+(or (not x2748) (not x2734) (not x107))
+(or (not x2800) (not x2565) (not x2275) x2598)
+(or (not x2748) (not x2734))
+(or (not x2800) (not x2598) x2565 x2275)
+(or (not x2748) (not x2730) (not x93))
+(or (not x2598) (not x2275) x2800 x2565)
+(or (not x2748) (not x2730) x602)
+(or (not x2563) x2800 x2596 x2275)
+(or (not x2748) (not x2727) (not x85))
+(or (not x2800) (not x2563) (not x2275) x2596)
+(or (not x2748) (not x2727) x594)
+(or (not x2800) (not x2596) x2563 x2275)
+(or (not x2748) (not x2724) (not x70))
+(or (not x2596) (not x2275) x2800 x2563)
+(or (not x2748) (not x2724) x586)
+(or (not x2561) x2800 x2595 x2275)
+(or (not x2748) (not x2720) x581)
+(or (not x2800) (not x2561) (not x2275) x2595)
+(or (not x2748) x2734 x2730 x2727 x2724 x2720)
+(or (not x2800) (not x2595) x2561 x2275)
+(or (not x2748) (not x2734))
+(or (not x2595) (not x2275) x2800 x2561)
+(or (not x2748) (not x937))
+(or (not x2559) x2800 x2593 x2275)
+(or (not x2734) (not x937) (not x107))
+(or (not x2800) (not x2559) (not x2275) x2593)
+(or (not x2734) (not x937))
+(or (not x2800) (not x2593) x2559 x2275)
+(or (not x2734) (not x936) (not x93))
+(or (not x2593) (not x2275) x2800 x2559)
+(or (not x2734) (not x936) x602)
+(or (not x2557) x2800 x2592 x2275)
+(or (not x2734) (not x933) (not x85))
+(or (not x2800) (not x2557) (not x2275) x2592)
+(or (not x2734) (not x933) x594)
+(or (not x2800) (not x2592) x2557 x2275)
+(or (not x2734) (not x931) (not x70))
+(or (not x2592) (not x2275) x2800 x2557)
+(or (not x2734) (not x931) x586)
+(or (not x2596) (not x2563) x2799 x2598 x2565)
+(or (not x2734) (not x929) x581)
+(or (not x2595) (not x2561) x2799 x2596 x2563)
+(or (not x2734) x937 x936 x933 x931 x929)
+(or (not x2593) (not x2559) x2799 x2595 x2561)
+(or (not x2734) (not x937))
+(or (not x2592) (not x2557) x2799 x2593 x2559)
+(or (not x937) (not x101))
+(or x2799 x2592 x2557)
+(or (not x937) x609)
+(or (not x2598) (not x2565) x2799)
+(or (not x937) (not x2703) (not x93))
+(or (not x2799) (not x2598) x2565)
+(or (not x937) (not x2703) x602)
+(or (not x2799) (not x2565) x2598)
+(or (not x937) (not x2702) (not x85))
+(or (not x2799) (not x2596) x2563)
+(or (not x937) (not x2702) x594)
+(or (not x2799) (not x2563) x2596)
+(or (not x937) (not x2700) (not x70))
+(or (not x2799) (not x2595) x2561)
+(or (not x937) (not x2700) x586)
+(or (not x2799) (not x2561) x2595)
+(or (not x937) (not x2698) x581)
+(or (not x2799) (not x2593) x2559)
+(or (not x107) x2777 x2763 x2748 x2734 x937)
+(or (not x2799) (not x2559) x2593)
+(or (not x2772) (not x2763) (not x107))
+(or (not x2799) (not x2592) x2557)
+(or (not x2772) (not x2763) x614)
+(or (not x2799) (not x2557) x2592)
+(or (not x52) x2798 x2796 x2581)
+(or (not x2798) (not x2581) (not x52) x2796)
+(or (not x2772) (not x2760) (not x93))
+(or (not x2798) x2796 x2581 x52)
+(or (not x2772) (not x2760))
+(or (not x2581) x2798 x2796 x52)
+(or (not x2772) (not x2757) (not x85))
+(or (not x2796) (not x50) x2798 x2795 x2580)
+(or (not x2772) (not x2757) x589)
+(or (not x2798) (not x2796) (not x2580) (not x50) x2795)
+(or (not x2772) (not x2755) (not x70))
+(or (not x2798) (not x2796) x2795 x2580 x50)
+(or (not x2772) (not x2755) x584)
+(or (not x2796) (not x2580) x2798 x2795 x50)
+(or (not x2772) (not x2752) x579)
+(or (not x2795) (not x48) x2798 x2794 x2578)
+(or (not x2772) x2763 x2760 x2757 x2755 x2752)
+(or (not x2798) (not x2795) (not x2578) (not x48) x2794)
+(or (not x2772) (not x2760))
+(or (not x2798) (not x2795) x2794 x2578 x48)
+(or (not x2772) (not x2742))
+(or (not x2795) (not x2578) x2798 x2794 x48)
+(or (not x2772) (not x2730))
+(or (not x2794) (not x46) x2798 x2793 x2576)
+(or (not x2772) (not x936))
+(or (not x2798) (not x2794) (not x2576) (not x46) x2793)
+(or (not x2772) (not x2703))
+(or (not x2798) (not x2794) x2793 x2576 x46)
+(or (not x2760) (not x2748) (not x107))
+(or (not x2794) (not x2576) x2798 x2793 x46)
+(or (not x2760) (not x2748) x614)
+(or (not x2793) (not x44) x2798 x2792 x2574)
+(or (not x2798) (not x2793) (not x2574) (not x44) x2792)
+(or (not x2798) (not x2793) x2792 x2574 x44)
+(or (not x2760) (not x2742) (not x93))
+(or (not x2793) (not x2574) x2798 x2792 x44)
+(or (not x2760) (not x2742))
+(or (not x2792) (not x149) x2798 x2791 x2572)
+(or (not x2760) (not x2740) (not x85))
+(or (not x2798) (not x2792) (not x2572) (not x149) x2791)
+(or (not x2760) (not x2740) x589)
+(or (not x2798) (not x2792) x2791 x2572 x149)
+(or (not x2760) (not x2738) (not x70))
+(or (not x2792) (not x2572) x2798 x2791 x149)
+(or (not x2760) (not x2738) x584)
+(or (not x2798) (not x2797))
+(or (not x2760) (not x2736) x579)
+(or (not x2791) x2797)
+(or (not x2760) x2748 x2742 x2740 x2738 x2736)
+(or (not x2797) x2791)
+(or (not x2760) (not x2742))
+(or x2796 x2581 x2552)
+(or (not x2760) (not x2730))
+(or (not x2581) (not x2552) x2796)
+(or (not x2760) (not x936))
+(or (not x2796) (not x2581) x2552)
+(or (not x2760) (not x2703))
+(or (not x2796) (not x2552) x2581)
+(or (not x2742) (not x2734) (not x107))
+(or (not x2796) x2795 x2580 x2550)
+(or (not x2742) (not x2734) x614)
+(or (not x2796) (not x2580) (not x2550) x2795)
+(or (not x2795) (not x2580) x2550)
+(or (not x2795) (not x2550) x2580)
+(or (not x2742) (not x2730) (not x93))
+(or (not x2795) x2796)
+(or (not x2742) (not x2730))
+(or (not x2795) x2794 x2578 x2547)
+(or (not x2742) (not x2727) (not x85))
+(or (not x2795) (not x2578) (not x2547) x2794)
+(or (not x2742) (not x2727) x589)
+(or (not x2794) (not x2578) x2547)
+(or (not x2742) (not x2724) (not x70))
+(or (not x2794) (not x2547) x2578)
+(or (not x2742) (not x2724) x584)
+(or (not x2794) x2795)
+(or (not x2742) (not x2720) x579)
+(or (not x2794) x2793 x2576 x2544)
+(or (not x2742) x2734 x2730 x2727 x2724 x2720)
+(or (not x2794) (not x2576) (not x2544) x2793)
+(or (not x2742) (not x2730))
+(or (not x2793) (not x2576) x2544)
+(or (not x2742) (not x936))
+(or (not x2793) (not x2544) x2576)
+(or (not x2742) (not x2703))
+(or (not x2793) x2794)
+(or (not x2730) (not x937) (not x107))
+(or (not x2793) x2792 x2574 x2541)
+(or (not x2730) (not x937) x614)
+(or (not x2793) (not x2574) (not x2541) x2792)
+(or (not x2792) (not x2574) x2541)
+(or (not x2792) (not x2541) x2574)
+(or (not x2730) (not x936) (not x93))
+(or (not x2792) x2793)
+(or (not x2730) (not x936))
+(or (not x2792) x2791 x2572 x2538)
+(or (not x2730) (not x933) (not x85))
+(or (not x2792) (not x2572) (not x2538) x2791)
+(or (not x2730) (not x933) x589)
+(or (not x2791) (not x2572) x2538)
+(or (not x2730) (not x931) (not x70))
+(or (not x2791) (not x2538) x2572)
+(or (not x2730) (not x931) x584)
+(or (not x2791) x2792)
+(or (not x2730) (not x929) x579)
+(or (not x2790) (not x2175) (not x2170))
+(or (not x2730) x937 x936 x933 x931 x929)
+(or (not x2175) (not x2170) x2789)
+(or (not x2730) (not x936))
+(or (not x2790) (not x2176) (not x2170) x95)
+(or (not x2730) (not x2703))
+(or (not x2176) (not x2170) (not x95) x2790)
+(or (not x936) (not x101))
+(or (not x2789) (not x2176) (not x2170))
+(or (not x936) x608)
+(or (not x2790) (not x2177) (not x2170) x94)
+(or (not x936) (not x2703) (not x93))
+(or (not x2177) (not x2170) (not x94) x2790)
+(or (not x936) (not x2703))
+(or (not x2789) (not x2177) (not x2170))
+(or (not x936) (not x2702) (not x85))
+(or (not x2790) (not x2178) (not x2170) x92)
+(or (not x936) (not x2702) x589)
+(or (not x2178) (not x2170) (not x92) x2790)
+(or (not x936) (not x2700) (not x70))
+(or (not x2789) (not x2178) (not x2170))
+(or (not x936) (not x2700) x584)
+(or (not x2790) (not x2179) (not x2170) x91)
+(or (not x936) (not x2698) x579)
+(or (not x2179) (not x2170) (not x91) x2790)
+(or (not x936) (not x2703))
+(or (not x2789) (not x2179) (not x2170))
+(or (not x93) x2772 x2760 x2742 x2730 x936 x2703)
+(or (not x2790) (not x2175) (not x2171) x89)
+(or (not x2769) (not x2763) (not x107))
+(or (not x2175) (not x2171) (not x89) x2790)
+(or (not x2769) (not x2763) x613)
+(or (not x2789) (not x2175) (not x2171))
+(or (not x2790) (not x2176) (not x2171))
+(or (not x2176) (not x2171) x2789)
+(or (not x2769) (not x2760) (not x93))
+(or (not x2790) (not x2177) (not x2171) x88)
+(or (not x2769) (not x2760) x599)
+(or (not x2177) (not x2171) (not x88) x2790)
+(or (not x2769) (not x2757) (not x85))
+(or (not x2789) (not x2177) (not x2171))
+(or (not x2769) (not x2757))
+(or (not x2790) (not x2178) (not x2171) x87)
+(or (not x2769) (not x2755) (not x70))
+(or (not x2178) (not x2171) (not x87) x2790)
+(or (not x2769) (not x2755) x583)
+(or (not x2789) (not x2178) (not x2171))
+(or (not x2769) (not x2752) x578)
+(or (not x2790) (not x2179) (not x2171) x86)
+(or (not x2769) x2763 x2760 x2757 x2755 x2752)
+(or (not x2179) (not x2171) (not x86) x2790)
+(or (not x2769) (not x2757))
+(or (not x2789) (not x2179) (not x2171))
+(or (not x2769) (not x2740))
+(or (not x2790) (not x2175) (not x2172) x82)
+(or (not x2769) (not x2727))
+(or (not x2175) (not x2172) (not x82) x2790)
+(or (not x2769) (not x933))
+(or (not x2789) (not x2175) (not x2172))
+(or (not x2769) (not x2702))
+(or (not x2790) (not x2176) (not x2172) x81)
+(or (not x2757) (not x2748) (not x107))
+(or (not x2176) (not x2172) (not x81) x2790)
+(or (not x2757) (not x2748) x613)
+(or (not x2789) (not x2176) (not x2172))
+(or (not x2790) (not x2177) (not x2172))
+(or (not x2177) (not x2172) x2789)
+(or (not x2757) (not x2742) (not x93))
+(or (not x2790) (not x2178) (not x2172) x79)
+(or (not x2757) (not x2742) x599)
+(or (not x2178) (not x2172) (not x79) x2790)
+(or (not x2757) (not x2740) (not x85))
+(or (not x2789) (not x2178) (not x2172))
+(or (not x2757) (not x2740))
+(or (not x2790) (not x2179) (not x2172) x77)
+(or (not x2757) (not x2738) (not x70))
+(or (not x2179) (not x2172) (not x77) x2790)
+(or (not x2757) (not x2738) x583)
+(or (not x2789) (not x2179) (not x2172))
+(or (not x2757) (not x2736) x578)
+(or (not x2790) (not x2175) (not x2173) x73)
+(or (not x2757) x2748 x2742 x2740 x2738 x2736)
+(or (not x2175) (not x2173) (not x73) x2790)
+(or (not x2757) (not x2740))
+(or (not x2789) (not x2175) (not x2173))
+(or (not x2757) (not x2727))
+(or (not x2790) (not x2176) (not x2173) x67)
+(or (not x2757) (not x933))
+(or (not x2176) (not x2173) (not x67) x2790)
+(or (not x2757) (not x2702))
+(or (not x2789) (not x2176) (not x2173))
+(or (not x2740) (not x2734) (not x107))
+(or (not x2790) (not x2177) (not x2173) x66)
+(or (not x2740) (not x2734) x613)
+(or (not x2177) (not x2173) (not x66) x2790)
+(or (not x2789) (not x2177) (not x2173))
+(or (not x2790) (not x2178) (not x2173))
+(or (not x2740) (not x2730) (not x93))
+(or (not x2178) (not x2173) x2789)
+(or (not x2740) (not x2730) x599)
+(or (not x2790) (not x2179) (not x2173) x65)
+(or (not x2740) (not x2727) (not x85))
+(or (not x2179) (not x2173) (not x65) x2790)
+(or (not x2740) (not x2727))
+(or (not x2789) (not x2179) (not x2173))
+(or (not x2740) (not x2724) (not x70))
+(or (not x2790) (not x2175) (not x2174) x58)
+(or (not x2740) (not x2724) x583)
+(or (not x2175) (not x2174) (not x58) x2790)
+(or (not x2740) (not x2720) x578)
+(or (not x2789) (not x2175) (not x2174))
+(or (not x2740) x2734 x2730 x2727 x2724 x2720)
+(or (not x2790) (not x2176) (not x2174) x57)
+(or (not x2740) (not x2727))
+(or (not x2176) (not x2174) (not x57) x2790)
+(or (not x2740) (not x933))
+(or (not x2789) (not x2176) (not x2174))
+(or (not x2740) (not x2702))
+(or (not x2790) (not x2177) (not x2174) x56)
+(or (not x2727) (not x937) (not x107))
+(or (not x2177) (not x2174) (not x56) x2790)
+(or (not x2727) (not x937) x613)
+(or (not x2789) (not x2177) (not x2174))
+(or (not x2790) (not x2178) (not x2174) x55)
+(or (not x2178) (not x2174) (not x55) x2790)
+(or (not x2727) (not x936) (not x93))
+(or (not x2789) (not x2178) (not x2174))
+(or (not x2727) (not x936) x599)
+(or (not x2790) (not x2179) (not x2174))
+(or (not x2727) (not x933) (not x85))
+(or (not x2179) (not x2174) x2789)
+(or (not x2727) (not x933))
+(or (not x2788) (not x2784) (not x2774) x2787 x2786)
+(or (not x2727) (not x931) (not x70))
+(or (not x2788) (not x2774) x2785 x2784)
+(or (not x2727) (not x931) x583)
+(or (not x2788) x2775 x2774)
+(or (not x2727) (not x929) x578)
+(or (not x2786) (not x2784) (not x2774) x2788)
+(or (not x2727) x937 x936 x933 x931 x929)
+(or (not x2787) (not x2784) (not x2774) x2788)
+(or (not x2727) (not x933))
+(or (not x2785) (not x2774) x2788)
+(or (not x2727) (not x2702))
+(or (not x2775) x2788)
+(or (not x933) (not x101))
+(or (not x2787) (not x2786))
+(or (not x933) x607)
+(or (not x2565) x2787 x2564 x2275)
+(or (not x933) (not x2703) (not x93))
+(or (not x2787) (not x2565) (not x2275) x2564)
+(or (not x933) (not x2703) x599)
+(or (not x2787) (not x2564) x2565 x2275)
+(or (not x933) (not x2702) (not x85))
+(or (not x2564) (not x2275) x2787 x2565)
+(or (not x933) (not x2702))
+(or (not x2563) x2787 x2562 x2275)
+(or (not x933) (not x2700) (not x70))
+(or (not x2787) (not x2563) (not x2275) x2562)
+(or (not x933) (not x2700) x583)
+(or (not x2787) (not x2562) x2563 x2275)
+(or (not x933) (not x2698) x578)
+(or (not x2562) (not x2275) x2787 x2563)
+(or (not x933) (not x2702))
+(or (not x2561) x2787 x2560 x2275)
+(or (not x85) x2769 x2757 x2740 x2727 x933 x2702)
+(or (not x2787) (not x2561) (not x2275) x2560)
+(or (not x2767) (not x2763) (not x107))
+(or (not x2787) (not x2560) x2561 x2275)
+(or (not x2767) (not x2763) x611)
+(or (not x2560) (not x2275) x2787 x2561)
+(or (not x2559) x2787 x2558 x2275)
+(or (not x2787) (not x2559) (not x2275) x2558)
+(or (not x2767) (not x2760) (not x93))
+(or (not x2787) (not x2558) x2559 x2275)
+(or (not x2767) (not x2760) x598)
+(or (not x2558) (not x2275) x2787 x2559)
+(or (not x2767) (not x2757) (not x85))
+(or (not x2557) x2787 x2556 x2275)
+(or (not x2767) (not x2757) x588)
+(or (not x2787) (not x2557) (not x2275) x2556)
+(or (not x2767) (not x2755) (not x70))
+(or (not x2787) (not x2556) x2557 x2275)
+(or (not x2767) (not x2755))
+(or (not x2556) (not x2275) x2787 x2557)
+(or (not x2767) (not x2752) x577)
+(or (not x2563) (not x2562) x2786 x2565 x2564)
+(or (not x2767) x2763 x2760 x2757 x2755 x2752)
+(or (not x2561) (not x2560) x2786 x2563 x2562)
+(or (not x2767) (not x2755))
+(or (not x2559) (not x2558) x2786 x2561 x2560)
+(or (not x2767) (not x2738))
+(or (not x2557) (not x2556) x2786 x2559 x2558)
+(or (not x2767) (not x2724))
+(or x2786 x2557 x2556)
+(or (not x2767) (not x931))
+(or (not x2565) (not x2564) x2786)
+(or (not x2767) (not x2700))
+(or (not x2786) (not x2564) x2565)
+(or (not x2755) (not x2748) (not x107))
+(or (not x2786) (not x2565) x2564)
+(or (not x2755) (not x2748) x611)
+(or (not x2786) (not x2562) x2563)
+(or (not x2786) (not x2563) x2562)
+(or (not x2786) (not x2560) x2561)
+(or (not x2755) (not x2742) (not x93))
+(or (not x2786) (not x2561) x2560)
+(or (not x2755) (not x2742) x598)
+(or (not x2786) (not x2558) x2559)
+(or (not x2755) (not x2740) (not x85))
+(or (not x2786) (not x2559) x2558)
+(or (not x2755) (not x2740) x588)
+(or (not x2786) (not x2556) x2557)
+(or (not x2755) (not x2738) (not x70))
+(or (not x2786) (not x2557) x2556)
+(or (not x2755) (not x2738))
+(or (not x52) x2785 x2783 x2551)
+(or (not x2755) (not x2736) x577)
+(or (not x2785) (not x2551) (not x52) x2783)
+(or (not x2755) x2748 x2742 x2740 x2738 x2736)
+(or (not x2785) x2783 x2551 x52)
+(or (not x2755) (not x2738))
+(or (not x2551) x2785 x2783 x52)
+(or (not x2755) (not x2724))
+(or (not x2783) (not x50) x2785 x2782 x2549)
+(or (not x2755) (not x931))
+(or (not x2785) (not x2783) (not x2549) (not x50) x2782)
+(or (not x2755) (not x2700))
+(or (not x2785) (not x2783) x2782 x2549 x50)
+(or (not x2738) (not x2734) (not x107))
+(or (not x2783) (not x2549) x2785 x2782 x50)
+(or (not x2738) (not x2734) x611)
+(or (not x2782) (not x48) x2785 x2781 x2546)
+(or (not x2785) (not x2782) (not x2546) (not x48) x2781)
+(or (not x2785) (not x2782) x2781 x2546 x48)
+(or (not x2738) (not x2730) (not x93))
+(or (not x2782) (not x2546) x2785 x2781 x48)
+(or (not x2738) (not x2730) x598)
+(or (not x2781) (not x46) x2785 x2780 x2543)
+(or (not x2738) (not x2727) (not x85))
+(or (not x2785) (not x2781) (not x2543) (not x46) x2780)
+(or (not x2738) (not x2727) x588)
+(or (not x2785) (not x2781) x2780 x2543 x46)
+(or (not x2738) (not x2724) (not x70))
+(or (not x2781) (not x2543) x2785 x2780 x46)
+(or (not x2738) (not x2724))
+(or (not x2780) (not x44) x2785 x2779 x2540)
+(or (not x2738) (not x2720) x577)
+(or (not x2785) (not x2780) (not x2540) (not x44) x2779)
+(or (not x2738) x2734 x2730 x2727 x2724 x2720)
+(or (not x2785) (not x2780) x2779 x2540 x44)
+(or (not x2738) (not x2724))
+(or (not x2780) (not x2540) x2785 x2779 x44)
+(or (not x2738) (not x931))
+(or (not x2779) (not x149) x2785 x2778 x2537)
+(or (not x2738) (not x2700))
+(or (not x2785) (not x2779) (not x2537) (not x149) x2778)
+(or (not x2724) (not x937) (not x107))
+(or (not x2785) (not x2779) x2778 x2537 x149)
+(or (not x2724) (not x937) x611)
+(or (not x2779) (not x2537) x2785 x2778 x149)
+(or (not x2785) (not x2784))
+(or (not x2778) x2784)
+(or (not x2724) (not x936) (not x93))
+(or (not x2784) x2778)
+(or (not x2724) (not x936) x598)
+(or x2783 x2552 x2551)
+(or (not x2724) (not x933) (not x85))
+(or (not x2552) (not x2551) x2783)
+(or (not x2724) (not x933) x588)
+(or (not x2783) (not x2551) x2552)
+(or (not x2724) (not x931) (not x70))
+(or (not x2783) (not x2552) x2551)
+(or (not x2724) (not x931))
+(or (not x2783) x2782 x2550 x2549)
+(or (not x2724) (not x929) x577)
+(or (not x2783) (not x2550) (not x2549) x2782)
+(or (not x2724) x937 x936 x933 x931 x929)
+(or (not x2782) (not x2549) x2550)
+(or (not x2724) (not x931))
+(or (not x2782) (not x2550) x2549)
+(or (not x2724) (not x2700))
+(or (not x2782) x2783)
+(or (not x931) (not x101))
+(or (not x2782) x2781 x2547 x2546)
+(or (not x931) x606)
+(or (not x2782) (not x2547) (not x2546) x2781)
+(or (not x931) (not x2703) (not x93))
+(or (not x2781) (not x2546) x2547)
+(or (not x931) (not x2703) x598)
+(or (not x2781) (not x2547) x2546)
+(or (not x931) (not x2702) (not x85))
+(or (not x2781) x2782)
+(or (not x931) (not x2702) x588)
+(or (not x2781) x2780 x2544 x2543)
+(or (not x931) (not x2700) (not x70))
+(or (not x2781) (not x2544) (not x2543) x2780)
+(or (not x931) (not x2700))
+(or (not x2780) (not x2543) x2544)
+(or (not x931) (not x2698) x577)
+(or (not x2780) (not x2544) x2543)
+(or (not x931) (not x2700))
+(or (not x2780) x2781)
+(or (not x70) x2767 x2755 x2738 x2724 x931 x2700)
+(or (not x2780) x2779 x2541 x2540)
+(or (not x2765) (not x2763) (not x107))
+(or (not x2780) (not x2541) (not x2540) x2779)
+(or (not x2765) (not x2763) x610)
+(or (not x2779) (not x2540) x2541)
+(or (not x2779) (not x2541) x2540)
+(or (not x2779) x2780)
+(or (not x2765) (not x2760) (not x93))
+(or (not x2779) x2778 x2538 x2537)
+(or (not x2765) (not x2760) x596)
+(or (not x2779) (not x2538) (not x2537) x2778)
+(or (not x2765) (not x2757) (not x85))
+(or (not x2778) (not x2537) x2538)
+(or (not x2765) (not x2757) x587)
+(or (not x2778) (not x2538) x2537)
+(or (not x2765) (not x2755) (not x70))
+(or (not x2778) x2779)
+(or (not x2765) (not x2755) x582)
+(or (not x2775) (not x2170) (not x2165))
+(or (not x2765) (not x2752))
+(or (not x2170) (not x2165) x2774)
+(or (not x2765) x2763 x2760 x2757 x2755 x2752)
+(or (not x2775) (not x2170) (not x2166) x95)
+(or (not x2765) (not x2752))
+(or (not x2170) (not x2166) (not x95) x2775)
+(or (not x2765) (not x2736))
+(or (not x2774) (not x2170) (not x2166))
+(or (not x2765) (not x2720))
+(or (not x2775) (not x2170) (not x2167) x94)
+(or (not x2765) (not x929))
+(or (not x2170) (not x2167) (not x94) x2775)
+(or (not x2765) (not x2698))
+(or (not x2774) (not x2170) (not x2167))
+(or (not x2752) (not x2748) (not x107))
+(or (not x2775) (not x2170) (not x2168) x92)
+(or (not x2752) (not x2748) x610)
+(or (not x2170) (not x2168) (not x92) x2775)
+(or (not x2774) (not x2170) (not x2168))
+(or (not x2775) (not x2170) (not x2169) x91)
+(or (not x2752) (not x2742) (not x93))
+(or (not x2170) (not x2169) (not x91) x2775)
+(or (not x2752) (not x2742) x596)
+(or (not x2774) (not x2170) (not x2169))
+(or (not x2752) (not x2740) (not x85))
+(or (not x2775) (not x2171) (not x2165) x89)
+(or (not x2752) (not x2740) x587)
+(or (not x2171) (not x2165) (not x89) x2775)
+(or (not x2752) (not x2738) (not x70))
+(or (not x2774) (not x2171) (not x2165))
+(or (not x2752) (not x2738) x582)
+(or (not x2775) (not x2171) (not x2166))
+(or (not x2752) (not x2736))
+(or (not x2171) (not x2166) x2774)
+(or (not x2752) x2748 x2742 x2740 x2738 x2736)
+(or (not x2775) (not x2171) (not x2167) x88)
+(or (not x2752) (not x2736))
+(or (not x2171) (not x2167) (not x88) x2775)
+(or (not x2752) (not x2720))
+(or (not x2774) (not x2171) (not x2167))
+(or (not x2752) (not x929))
+(or (not x2775) (not x2171) (not x2168) x87)
+(or (not x2752) (not x2698))
+(or (not x2171) (not x2168) (not x87) x2775)
+(or (not x2736) (not x2734) (not x107))
+(or (not x2774) (not x2171) (not x2168))
+(or (not x2736) (not x2734) x610)
+(or (not x2775) (not x2171) (not x2169) x86)
+(or (not x2171) (not x2169) (not x86) x2775)
+(or (not x2774) (not x2171) (not x2169))
+(or (not x2736) (not x2730) (not x93))
+(or (not x2775) (not x2172) (not x2165) x82)
+(or (not x2736) (not x2730) x596)
+(or (not x2172) (not x2165) (not x82) x2775)
+(or (not x2736) (not x2727) (not x85))
+(or (not x2774) (not x2172) (not x2165))
+(or (not x2736) (not x2727) x587)
+(or (not x2775) (not x2172) (not x2166) x81)
+(or (not x2736) (not x2724) (not x70))
+(or (not x2172) (not x2166) (not x81) x2775)
+(or (not x2736) (not x2724) x582)
+(or (not x2774) (not x2172) (not x2166))
+(or (not x2736) (not x2720))
+(or (not x2775) (not x2172) (not x2167))
+(or (not x2736) x2734 x2730 x2727 x2724 x2720)
+(or (not x2172) (not x2167) x2774)
+(or (not x2736) (not x2720))
+(or (not x2775) (not x2172) (not x2168) x79)
+(or (not x2736) (not x929))
+(or (not x2172) (not x2168) (not x79) x2775)
+(or (not x2736) (not x2698))
+(or (not x2774) (not x2172) (not x2168))
+(or (not x2720) (not x937) (not x107))
+(or (not x2775) (not x2172) (not x2169) x77)
+(or (not x2720) (not x937) x610)
+(or (not x2172) (not x2169) (not x77) x2775)
+(or (not x2774) (not x2172) (not x2169))
+(or (not x2775) (not x2173) (not x2165) x73)
+(or (not x2720) (not x936) (not x93))
+(or (not x2173) (not x2165) (not x73) x2775)
+(or (not x2720) (not x936) x596)
+(or (not x2774) (not x2173) (not x2165))
+(or (not x2720) (not x933) (not x85))
+(or (not x2775) (not x2173) (not x2166) x67)
+(or (not x2720) (not x933) x587)
+(or (not x2173) (not x2166) (not x67) x2775)
+(or (not x2720) (not x931) (not x70))
+(or (not x2774) (not x2173) (not x2166))
+(or (not x2720) (not x931) x582)
+(or (not x2775) (not x2173) (not x2167) x66)
+(or (not x2720) (not x929))
+(or (not x2173) (not x2167) (not x66) x2775)
+(or (not x2720) x937 x936 x933 x931 x929)
+(or (not x2774) (not x2173) (not x2167))
+(or (not x2720) (not x929))
+(or (not x2775) (not x2173) (not x2168))
+(or (not x2720) (not x2698))
+(or (not x2173) (not x2168) x2774)
+(or (not x929) (not x101))
+(or (not x2775) (not x2173) (not x2169) x65)
+(or (not x929) x605)
+(or (not x2173) (not x2169) (not x65) x2775)
+(or (not x929) (not x2703) (not x93))
+(or (not x2774) (not x2173) (not x2169))
+(or (not x929) (not x2703) x596)
+(or (not x2775) (not x2174) (not x2165) x58)
+(or (not x929) (not x2702) (not x85))
+(or (not x2174) (not x2165) (not x58) x2775)
+(or (not x929) (not x2702) x587)
+(or (not x2774) (not x2174) (not x2165))
+(or (not x929) (not x2700) (not x70))
+(or (not x2775) (not x2174) (not x2166) x57)
+(or (not x929) (not x2700) x582)
+(or (not x2174) (not x2166) (not x57) x2775)
+(or (not x929) (not x2698))
+(or (not x2774) (not x2174) (not x2166))
+(or (not x929) (not x2698))
+(or (not x2775) (not x2174) (not x2167) x56)
+(or (not x2777) (not x2773))
+(or (not x2174) (not x2167) (not x56) x2775)
+(or (not x2777) x2776 x2773)
+(or (not x2774) (not x2174) (not x2167))
+(or (not x2773) x2777 x2776)
+(or (not x2775) (not x2174) (not x2168) x55)
+(or (not x2776) x2777 x2773)
+(or (not x2174) (not x2168) (not x55) x2775)
+(or (not x2774) (not x2174) (not x2168))
+(or (not x2775) (not x2174) (not x2169))
+(or (not x2771) x2773)
+(or (not x2174) (not x2169) x2774)
+(or (not x2773) x2771)
+(or (not x2770) (not x2728) (not x2695) x2758 x2744)
+(or (not x2772) (not x2768))
+(or (not x2770) (not x2695) x2731 x2728)
+(or (not x2772) x2771 x2768)
+(or (not x2770) x2696 x2695)
+(or (not x2768) x2772 x2771)
+(or (not x2744) (not x2728) (not x2695) x2770)
+(or (not x2771) x2772 x2768)
+(or (not x2758) (not x2728) (not x2695) x2770)
+(or (not x2769) (not x2766))
+(or (not x2731) (not x2695) x2770)
+(or (not x2769) x2768 x2766)
+(or (not x2696) x2770)
+(or (not x2766) x2769 x2768)
+(or (not x2758) (not x2744))
+(or (not x2768) x2769 x2766)
+(or (not x2564) x2758 x2753 x2272)
+(or (not x2767) (not x2764))
+(or (not x2758) (not x2564) (not x2272) x2753)
+(or (not x2767) x2766 x2764)
+(or (not x2758) (not x2753) x2564 x2272)
+(or (not x2764) x2767 x2766)
+(or (not x2753) (not x2272) x2758 x2564)
+(or (not x2766) x2767 x2764)
+(or (not x2562) x2758 x2750 x2272)
+(or (not x2765) x2764)
+(or (not x2758) (not x2562) (not x2272) x2750)
+(or (not x2764) x2765)
+(or (not x2758) (not x2750) x2562 x2272)
+(or (not x2763) (not x2761))
+(or (not x2750) (not x2272) x2758 x2562)
+(or (not x2763) x2762 x2761)
+(or (not x2560) x2758 x2749 x2272)
+(or (not x2761) x2763 x2762)
+(or (not x2758) (not x2560) (not x2272) x2749)
+(or (not x2762) x2763 x2761)
+(or (not x2758) (not x2749) x2560 x2272)
+(or (not x2749) (not x2272) x2758 x2560)
+(or (not x2558) x2758 x2746 x2272)
+(or (not x2759) x2761)
+(or (not x2758) (not x2558) (not x2272) x2746)
+(or (not x2761) x2759)
+(or (not x2758) (not x2746) x2558 x2272)
+(or (not x2760) (not x2756))
+(or (not x2746) (not x2272) x2758 x2558)
+(or (not x2760) x2759 x2756)
+(or (not x2556) x2758 x2745 x2272)
+(or (not x2756) x2760 x2759)
+(or (not x2758) (not x2556) (not x2272) x2745)
+(or (not x2759) x2760 x2756)
+(or (not x2758) (not x2745) x2556 x2272)
+(or (not x2757) (not x2754))
+(or (not x2745) (not x2272) x2758 x2556)
+(or (not x2757) x2756 x2754)
+(or (not x2750) (not x2562) x2744 x2753 x2564)
+(or (not x2754) x2757 x2756)
+(or (not x2749) (not x2560) x2744 x2750 x2562)
+(or (not x2756) x2757 x2754)
+(or (not x2746) (not x2558) x2744 x2749 x2560)
+(or (not x2755) (not x2751))
+(or (not x2745) (not x2556) x2744 x2746 x2558)
+(or (not x2755) x2754 x2751)
+(or x2744 x2745 x2556)
+(or (not x2751) x2755 x2754)
+(or (not x2753) (not x2564) x2744)
+(or (not x2754) x2755 x2751)
+(or (not x2744) (not x2753) x2564)
+(or (not x2752) x2751)
+(or (not x2744) (not x2564) x2753)
+(or (not x2751) x2752)
+(or (not x2744) (not x2750) x2562)
+(or (not x2748) (not x2743))
+(or (not x2744) (not x2562) x2750)
+(or (not x2748) x2747 x2743)
+(or (not x2744) (not x2749) x2560)
+(or (not x2743) x2748 x2747)
+(or (not x2744) (not x2560) x2749)
+(or (not x2747) x2748 x2743)
+(or (not x2744) (not x2746) x2558)
+(or (not x2744) (not x2558) x2746)
+(or (not x2744) (not x2745) x2556)
+(or (not x2741) x2743)
+(or (not x2744) (not x2556) x2745)
+(or (not x2743) x2741)
+(or (not x52) x2731 x2721 x2725)
+(or (not x2742) (not x2739))
+(or (not x2731) (not x2725) (not x52) x2721)
+(or (not x2742) x2741 x2739)
+(or (not x2731) x2721 x2725 x52)
+(or (not x2739) x2742 x2741)
+(or (not x2725) x2731 x2721 x52)
+(or (not x2741) x2742 x2739)
+(or (not x2721) (not x50) x2731 x2716 x2722)
+(or (not x2740) (not x2737))
+(or (not x2731) (not x2721) (not x2722) (not x50) x2716)
+(or (not x2740) x2739 x2737)
+(or (not x2731) (not x2721) x2716 x2722 x50)
+(or (not x2737) x2740 x2739)
+(or (not x2721) (not x2722) x2731 x2716 x50)
+(or (not x2739) x2740 x2737)
+(or (not x2716) (not x48) x2731 x2713 x2718)
+(or (not x2738) (not x2735))
+(or (not x2731) (not x2716) (not x2718) (not x48) x2713)
+(or (not x2738) x2737 x2735)
+(or (not x2731) (not x2716) x2713 x2718 x48)
+(or (not x2735) x2738 x2737)
+(or (not x2716) (not x2718) x2731 x2713 x48)
+(or (not x2737) x2738 x2735)
+(or (not x2713) (not x46) x2731 x2710 x2714)
+(or (not x2736) x2735)
+(or (not x2731) (not x2713) (not x2714) (not x46) x2710)
+(or (not x2735) x2736)
+(or (not x2731) (not x2713) x2710 x2714 x46)
+(or (not x2734) (not x2732))
+(or (not x2713) (not x2714) x2731 x2710 x46)
+(or (not x2734) x2733 x2732)
+(or (not x2710) (not x44) x2731 x2707 x2711)
+(or (not x2732) x2734 x2733)
+(or (not x2731) (not x2710) (not x2711) (not x44) x2707)
+(or (not x2733) x2734 x2732)
+(or (not x2731) (not x2710) x2707 x2711 x44)
+(or (not x2710) (not x2711) x2731 x2707 x44)
+(or (not x2707) (not x149) x2731 x2706 x2708)
+(or (not x2729) x2732)
+(or (not x2731) (not x2707) (not x2708) (not x149) x2706)
+(or (not x2732) x2729)
+(or (not x2731) (not x2707) x2706 x2708 x149)
+(or (not x2730) (not x2726))
+(or (not x2707) (not x2708) x2731 x2706 x149)
+(or (not x2730) x2729 x2726)
+(or (not x2731) (not x2728))
+(or (not x2726) x2730 x2729)
+(or (not x2706) x2728)
+(or (not x2729) x2730 x2726)
+(or (not x2728) x2706)
+(or (not x2727) (not x2723))
+(or x2721 x2725 x2551)
+(or (not x2727) x2726 x2723)
+(or (not x2725) (not x2551) x2721)
+(or (not x2723) x2727 x2726)
+(or (not x2721) (not x2725) x2551)
+(or (not x2726) x2727 x2723)
+(or (not x2721) (not x2551) x2725)
+(or (not x2724) (not x2719))
+(or (not x2721) x2716 x2722 x2549)
+(or (not x2724) x2723 x2719)
+(or (not x2721) (not x2722) (not x2549) x2716)
+(or (not x2719) x2724 x2723)
+(or (not x2716) (not x2722) x2549)
+(or (not x2723) x2724 x2719)
+(or (not x2716) (not x2549) x2722)
+(or (not x2720) x2719)
+(or (not x2716) x2721)
+(or (not x2719) x2720)
+(or (not x2716) x2713 x2718 x2546)
+(or (not x937) (not x2715))
+(or (not x2716) (not x2718) (not x2546) x2713)
+(or (not x937) x2717 x2715)
+(or (not x2713) (not x2718) x2546)
+(or (not x2715) x937 x2717)
+(or (not x2713) (not x2546) x2718)
+(or (not x2717) x937 x2715)
+(or (not x2713) x2716)
+(or (not x2713) x2710 x2714 x2543)
+(or (not x2713) (not x2714) (not x2543) x2710)
+(or (not x2712) x2715)
+(or (not x2710) (not x2714) x2543)
+(or (not x2715) x2712)
+(or (not x2710) (not x2543) x2714)
+(or (not x936) (not x2709))
+(or (not x2710) x2713)
+(or (not x936) x2712 x2709)
+(or (not x2710) x2707 x2711 x2540)
+(or (not x2709) x936 x2712)
+(or (not x2710) (not x2711) (not x2540) x2707)
+(or (not x2712) x936 x2709)
+(or (not x2707) (not x2711) x2540)
+(or (not x933) (not x2705))
+(or (not x2707) (not x2540) x2711)
+(or (not x933) x2709 x2705)
+(or (not x2707) x2710)
+(or (not x2705) x933 x2709)
+(or (not x2707) x2706 x2708 x2537)
+(or (not x2709) x933 x2705)
+(or (not x2707) (not x2708) (not x2537) x2706)
+(or (not x931) (not x2704))
+(or (not x2706) (not x2708) x2537)
+(or (not x931) x2705 x2704)
+(or (not x2706) (not x2537) x2708)
+(or (not x2704) x931 x2705)
+(or (not x2706) x2707)
+(or (not x2705) x931 x2704)
+(or (not x2696) (not x2190) (not x2165))
+(or (not x929) x2704)
+(or (not x2190) (not x2165) x2695)
+(or (not x2704) x929)
+(or (not x2696) (not x2191) (not x2165) x95)
+(or (not x2191) (not x2165) (not x95) x2696)
+(or (not x2695) (not x2191) (not x2165))
+(or (not x2703) (not x2701))
+(or (not x2696) (not x2192) (not x2165) x94)
+(or (not x2703) x2701)
+(or (not x2192) (not x2165) (not x94) x2696)
+(or (not x2701) x2703)
+(or (not x2695) (not x2192) (not x2165))
+(or (not x2696) (not x2193) (not x2165) x92)
+(or (not x2702) (not x2699))
+(or (not x2193) (not x2165) (not x92) x2696)
+(or (not x2702) x2701 x2699)
+(or (not x2695) (not x2193) (not x2165))
+(or (not x2699) x2702 x2701)
+(or (not x2696) (not x2194) (not x2165) x91)
+(or (not x2701) x2702 x2699)
+(or (not x2194) (not x2165) (not x91) x2696)
+(or (not x2700) (not x2697))
+(or (not x2695) (not x2194) (not x2165))
+(or (not x2700) x2699 x2697)
+(or (not x2696) (not x2190) (not x2166) x89)
+(or (not x2697) x2700 x2699)
+(or (not x2190) (not x2166) (not x89) x2696)
+(or (not x2699) x2700 x2697)
+(or (not x2695) (not x2190) (not x2166))
+(or (not x2698) x2697)
+(or (not x2696) (not x2191) (not x2166))
+(or (not x2697) x2698)
+(or (not x2191) (not x2166) x2695)
+(or (not x2648) (not x2637) (not x393))
+(or (not x2696) (not x2192) (not x2166) x88)
+(or (not x2648) (not x2637))
+(or (not x2192) (not x2166) (not x88) x2696)
+(or (not x2648) (not x2635) (not x392))
+(or (not x2695) (not x2192) (not x2166))
+(or (not x2648) (not x2635) x609)
+(or (not x2696) (not x2193) (not x2166) x87)
+(or (not x2648) (not x2632) (not x387))
+(or (not x2193) (not x2166) (not x87) x2696)
+(or (not x2648) (not x2632) x594)
+(or (not x2695) (not x2193) (not x2166))
+(or (not x2648) (not x2630) (not x384))
+(or (not x2696) (not x2194) (not x2166) x86)
+(or (not x2648) (not x2630) x586)
+(or (not x2194) (not x2166) (not x86) x2696)
+(or (not x2648) (not x2628) x581)
+(or (not x2695) (not x2194) (not x2166))
+(or (not x2648) x2637 x2635 x2632 x2630 x2628)
+(or (not x2696) (not x2190) (not x2167) x82)
+(or (not x2648) (not x2637))
+(or (not x2190) (not x2167) (not x82) x2696)
+(or (not x2648) (not x2626))
+(or (not x2695) (not x2190) (not x2167))
+(or (not x2648) (not x2613))
+(or (not x2696) (not x2191) (not x2167) x81)
+(or (not x2648) (not x928))
+(or (not x2191) (not x2167) (not x81) x2696)
+(or (not x2637) (not x2626) (not x393))
+(or (not x2695) (not x2191) (not x2167))
+(or (not x2637) (not x2626))
+(or (not x2696) (not x2192) (not x2167))
+(or (not x2637) (not x2624) (not x392))
+(or (not x2192) (not x2167) x2695)
+(or (not x2637) (not x2624) x609)
+(or (not x2696) (not x2193) (not x2167) x79)
+(or (not x2637) (not x2621) (not x387))
+(or (not x2193) (not x2167) (not x79) x2696)
+(or (not x2637) (not x2621) x594)
+(or (not x2695) (not x2193) (not x2167))
+(or (not x2637) (not x2617) (not x384))
+(or (not x2696) (not x2194) (not x2167) x77)
+(or (not x2637) (not x2617) x586)
+(or (not x2194) (not x2167) (not x77) x2696)
+(or (not x2637) (not x2615) x581)
+(or (not x2695) (not x2194) (not x2167))
+(or (not x2637) x2626 x2624 x2621 x2617 x2615)
+(or (not x2696) (not x2190) (not x2168) x73)
+(or (not x2637) (not x2626))
+(or (not x2190) (not x2168) (not x73) x2696)
+(or (not x2637) (not x2613))
+(or (not x2695) (not x2190) (not x2168))
+(or (not x2637) (not x928))
+(or (not x2696) (not x2191) (not x2168) x67)
+(or (not x2626) (not x2613) (not x393))
+(or (not x2191) (not x2168) (not x67) x2696)
+(or (not x2626) (not x2613))
+(or (not x2695) (not x2191) (not x2168))
+(or (not x2626) (not x2610) (not x392))
+(or (not x2696) (not x2192) (not x2168) x66)
+(or (not x2626) (not x2610) x609)
+(or (not x2192) (not x2168) (not x66) x2696)
+(or (not x2626) (not x2607) (not x387))
+(or (not x2695) (not x2192) (not x2168))
+(or (not x2626) (not x2607) x594)
+(or (not x2696) (not x2193) (not x2168))
+(or (not x2626) (not x2605) (not x384))
+(or (not x2193) (not x2168) x2695)
+(or (not x2626) (not x2605) x586)
+(or (not x2696) (not x2194) (not x2168) x65)
+(or (not x2626) (not x2603) x581)
+(or (not x2194) (not x2168) (not x65) x2696)
+(or (not x2626) x2613 x2610 x2607 x2605 x2603)
+(or (not x2695) (not x2194) (not x2168))
+(or (not x2626) (not x2613))
+(or (not x2696) (not x2190) (not x2169) x58)
+(or (not x2626) (not x928))
+(or (not x2190) (not x2169) (not x58) x2696)
+(or (not x2613) (not x928) (not x393))
+(or (not x2695) (not x2190) (not x2169))
+(or (not x2613) (not x928))
+(or (not x2696) (not x2191) (not x2169) x57)
+(or (not x2613) (not x926) (not x392))
+(or (not x2191) (not x2169) (not x57) x2696)
+(or (not x2613) (not x926) x609)
+(or (not x2695) (not x2191) (not x2169))
+(or (not x2613) (not x924) (not x387))
+(or (not x2696) (not x2192) (not x2169) x56)
+(or (not x2613) (not x924) x594)
+(or (not x2192) (not x2169) (not x56) x2696)
+(or (not x2613) (not x921) (not x384))
+(or (not x2695) (not x2192) (not x2169))
+(or (not x2613) (not x921) x586)
+(or (not x2696) (not x2193) (not x2169) x55)
+(or (not x2613) (not x919) x581)
+(or (not x2193) (not x2169) (not x55) x2696)
+(or (not x2613) x928 x926 x924 x921 x919)
+(or (not x2695) (not x2193) (not x2169))
+(or (not x2613) (not x928))
+(or (not x2696) (not x2194) (not x2169))
+(or (not x928) (not x390))
+(or (not x2194) (not x2169) x2695)
+(or (not x928) x602)
+(or (not x2694) (not x2685) (not x2671) x2693 x2687)
+(or (not x928) (not x2588) (not x387))
+(or (not x2694) (not x2671) x2686 x2685)
+(or (not x928) (not x2588) x594)
+(or (not x2694) x2672 x2671)
+(or (not x928) (not x2587) (not x384))
+(or (not x2687) (not x2685) (not x2671) x2694)
+(or (not x928) (not x2587) x586)
+(or (not x2693) (not x2685) (not x2671) x2694)
+(or (not x928) (not x2585) x581)
+(or (not x2686) (not x2671) x2694)
+(or (not x393) x2648 x2637 x2626 x2613 x928)
+(or (not x2672) x2694)
+(or (not x2646) (not x2637) (not x393))
+(or (not x2693) (not x2687))
+(or (not x2646) (not x2637) x615)
+(or (not x2564) x2693 x2692 x2272)
+(or (not x2646) (not x2635) (not x392))
+(or (not x2693) (not x2564) (not x2272) x2692)
+(or (not x2646) (not x2635))
+(or (not x2693) (not x2692) x2564 x2272)
+(or (not x2646) (not x2632) (not x387))
+(or (not x2692) (not x2272) x2693 x2564)
+(or (not x2646) (not x2632) x592)
+(or (not x2562) x2693 x2691 x2272)
+(or (not x2646) (not x2630) (not x384))
+(or (not x2693) (not x2562) (not x2272) x2691)
+(or (not x2646) (not x2630) x585)
+(or (not x2693) (not x2691) x2562 x2272)
+(or (not x2646) (not x2628) x580)
+(or (not x2691) (not x2272) x2693 x2562)
+(or (not x2646) x2637 x2635 x2632 x2630 x2628)
+(or (not x2560) x2693 x2690 x2272)
+(or (not x2646) (not x2635))
+(or (not x2693) (not x2560) (not x2272) x2690)
+(or (not x2646) (not x2624))
+(or (not x2693) (not x2690) x2560 x2272)
+(or (not x2646) (not x2610))
+(or (not x2690) (not x2272) x2693 x2560)
+(or (not x2646) (not x926))
+(or (not x2558) x2693 x2689 x2272)
+(or (not x2635) (not x2626) (not x393))
+(or (not x2693) (not x2558) (not x2272) x2689)
+(or (not x2635) (not x2626) x615)
+(or (not x2693) (not x2689) x2558 x2272)
+(or (not x2635) (not x2624) (not x392))
+(or (not x2689) (not x2272) x2693 x2558)
+(or (not x2635) (not x2624))
+(or (not x2556) x2693 x2688 x2272)
+(or (not x2635) (not x2621) (not x387))
+(or (not x2693) (not x2556) (not x2272) x2688)
+(or (not x2635) (not x2621) x592)
+(or (not x2693) (not x2688) x2556 x2272)
+(or (not x2635) (not x2617) (not x384))
+(or (not x2688) (not x2272) x2693 x2556)
+(or (not x2635) (not x2617) x585)
+(or (not x2691) (not x2562) x2687 x2692 x2564)
+(or (not x2635) (not x2615) x580)
+(or (not x2690) (not x2560) x2687 x2691 x2562)
+(or (not x2635) x2626 x2624 x2621 x2617 x2615)
+(or (not x2689) (not x2558) x2687 x2690 x2560)
+(or (not x2635) (not x2624))
+(or (not x2688) (not x2556) x2687 x2689 x2558)
+(or (not x2635) (not x2610))
+(or x2687 x2688 x2556)
+(or (not x2635) (not x926))
+(or (not x2692) (not x2564) x2687)
+(or (not x2624) (not x2613) (not x393))
+(or (not x2687) (not x2692) x2564)
+(or (not x2624) (not x2613) x615)
+(or (not x2687) (not x2564) x2692)
+(or (not x2624) (not x2610) (not x392))
+(or (not x2687) (not x2691) x2562)
+(or (not x2624) (not x2610))
+(or (not x2687) (not x2562) x2691)
+(or (not x2624) (not x2607) (not x387))
+(or (not x2687) (not x2690) x2560)
+(or (not x2624) (not x2607) x592)
+(or (not x2687) (not x2560) x2690)
+(or (not x2624) (not x2605) (not x384))
+(or (not x2687) (not x2689) x2558)
+(or (not x2624) (not x2605) x585)
+(or (not x2687) (not x2558) x2689)
+(or (not x2624) (not x2603) x580)
+(or (not x2687) (not x2688) x2556)
+(or (not x2624) x2613 x2610 x2607 x2605 x2603)
+(or (not x2687) (not x2556) x2688)
+(or (not x2624) (not x2610))
+(or (not x52) x2686 x2682 x2684)
+(or (not x2624) (not x926))
+(or (not x2686) (not x2684) (not x52) x2682)
+(or (not x2610) (not x928) (not x393))
+(or (not x2686) x2682 x2684 x52)
+(or (not x2610) (not x928) x615)
+(or (not x2684) x2686 x2682 x52)
+(or (not x2610) (not x926) (not x392))
+(or (not x2682) (not x50) x2686 x2680 x2683)
+(or (not x2610) (not x926))
+(or (not x2686) (not x2682) (not x2683) (not x50) x2680)
+(or (not x2610) (not x924) (not x387))
+(or (not x2686) (not x2682) x2680 x2683 x50)
+(or (not x2610) (not x924) x592)
+(or (not x2682) (not x2683) x2686 x2680 x50)
+(or (not x2610) (not x921) (not x384))
+(or (not x2680) (not x48) x2686 x2678 x2681)
+(or (not x2610) (not x921) x585)
+(or (not x2686) (not x2680) (not x2681) (not x48) x2678)
+(or (not x2610) (not x919) x580)
+(or (not x2686) (not x2680) x2678 x2681 x48)
+(or (not x2610) x928 x926 x924 x921 x919)
+(or (not x2680) (not x2681) x2686 x2678 x48)
+(or (not x2610) (not x926))
+(or (not x2678) (not x46) x2686 x2676 x2679)
+(or (not x926) (not x390))
+(or (not x2686) (not x2678) (not x2679) (not x46) x2676)
+(or (not x926) x601)
+(or (not x2686) (not x2678) x2676 x2679 x46)
+(or (not x926) (not x2588) (not x387))
+(or (not x2678) (not x2679) x2686 x2676 x46)
+(or (not x926) (not x2588) x592)
+(or (not x2676) (not x44) x2686 x2674 x2677)
+(or (not x926) (not x2587) (not x384))
+(or (not x2686) (not x2676) (not x2677) (not x44) x2674)
+(or (not x926) (not x2587) x585)
+(or (not x2686) (not x2676) x2674 x2677 x44)
+(or (not x926) (not x2585) x580)
+(or (not x2676) (not x2677) x2686 x2674 x44)
+(or (not x392) x2646 x2635 x2624 x2610 x926)
+(or (not x2674) (not x149) x2686 x2673 x2675)
+(or (not x2643) (not x2637) (not x393))
+(or (not x2686) (not x2674) (not x2675) (not x149) x2673)
+(or (not x2643) (not x2637) x613)
+(or (not x2686) (not x2674) x2673 x2675 x149)
+(or (not x2643) (not x2635) (not x392))
+(or (not x2674) (not x2675) x2686 x2673 x149)
+(or (not x2643) (not x2635) x607)
+(or (not x2686) (not x2685))
+(or (not x2673) x2685)
+(or (not x2685) x2673)
+(or (not x2643) (not x2632) (not x387))
+(or x2682 x2684 x2551)
+(or (not x2643) (not x2632))
+(or (not x2684) (not x2551) x2682)
+(or (not x2643) (not x2630) (not x384))
+(or (not x2682) (not x2684) x2551)
+(or (not x2643) (not x2630) x583)
+(or (not x2682) (not x2551) x2684)
+(or (not x2643) (not x2628) x578)
+(or (not x2682) x2680 x2683 x2549)
+(or (not x2643) x2637 x2635 x2632 x2630 x2628)
+(or (not x2682) (not x2683) (not x2549) x2680)
+(or (not x2643) (not x2632))
+(or (not x2680) (not x2683) x2549)
+(or (not x2643) (not x2621))
+(or (not x2680) (not x2549) x2683)
+(or (not x2643) (not x2607))
+(or (not x2680) x2682)
+(or (not x2643) (not x924))
+(or (not x2680) x2678 x2681 x2546)
+(or (not x2643) (not x2588))
+(or (not x2680) (not x2681) (not x2546) x2678)
+(or (not x2632) (not x2626) (not x393))
+(or (not x2678) (not x2681) x2546)
+(or (not x2632) (not x2626) x613)
+(or (not x2678) (not x2546) x2681)
+(or (not x2632) (not x2624) (not x392))
+(or (not x2678) x2680)
+(or (not x2632) (not x2624) x607)
+(or (not x2678) x2676 x2679 x2543)
+(or (not x2678) (not x2679) (not x2543) x2676)
+(or (not x2676) (not x2679) x2543)
+(or (not x2632) (not x2621) (not x387))
+(or (not x2676) (not x2543) x2679)
+(or (not x2632) (not x2621))
+(or (not x2676) x2678)
+(or (not x2632) (not x2617) (not x384))
+(or (not x2676) x2674 x2677 x2540)
+(or (not x2632) (not x2617) x583)
+(or (not x2676) (not x2677) (not x2540) x2674)
+(or (not x2632) (not x2615) x578)
+(or (not x2674) (not x2677) x2540)
+(or (not x2632) x2626 x2624 x2621 x2617 x2615)
+(or (not x2674) (not x2540) x2677)
+(or (not x2632) (not x2621))
+(or (not x2674) x2676)
+(or (not x2632) (not x2607))
+(or (not x2674) x2673 x2675 x2537)
+(or (not x2632) (not x924))
+(or (not x2674) (not x2675) (not x2537) x2673)
+(or (not x2632) (not x2588))
+(or (not x2673) (not x2675) x2537)
+(or (not x2621) (not x2613) (not x393))
+(or (not x2673) (not x2537) x2675)
+(or (not x2621) (not x2613) x613)
+(or (not x2673) x2674)
+(or (not x2621) (not x2610) (not x392))
+(or (not x2672) (not x2185) (not x2165))
+(or (not x2621) (not x2610) x607)
+(or (not x2185) (not x2165) x2671)
+(or (not x2672) (not x2186) (not x2165) x95)
+(or (not x2186) (not x2165) (not x95) x2672)
+(or (not x2621) (not x2607) (not x387))
+(or (not x2671) (not x2186) (not x2165))
+(or (not x2621) (not x2607))
+(or (not x2672) (not x2187) (not x2165) x94)
+(or (not x2621) (not x2605) (not x384))
+(or (not x2187) (not x2165) (not x94) x2672)
+(or (not x2621) (not x2605) x583)
+(or (not x2671) (not x2187) (not x2165))
+(or (not x2621) (not x2603) x578)
+(or (not x2672) (not x2188) (not x2165) x92)
+(or (not x2621) x2613 x2610 x2607 x2605 x2603)
+(or (not x2188) (not x2165) (not x92) x2672)
+(or (not x2621) (not x2607))
+(or (not x2671) (not x2188) (not x2165))
+(or (not x2621) (not x924))
+(or (not x2672) (not x2189) (not x2165) x91)
+(or (not x2621) (not x2588))
+(or (not x2189) (not x2165) (not x91) x2672)
+(or (not x2607) (not x928) (not x393))
+(or (not x2671) (not x2189) (not x2165))
+(or (not x2607) (not x928) x613)
+(or (not x2672) (not x2185) (not x2166) x89)
+(or (not x2607) (not x926) (not x392))
+(or (not x2185) (not x2166) (not x89) x2672)
+(or (not x2607) (not x926) x607)
+(or (not x2671) (not x2185) (not x2166))
+(or (not x2672) (not x2186) (not x2166))
+(or (not x2186) (not x2166) x2671)
+(or (not x2607) (not x924) (not x387))
+(or (not x2672) (not x2187) (not x2166) x88)
+(or (not x2607) (not x924))
+(or (not x2187) (not x2166) (not x88) x2672)
+(or (not x2607) (not x921) (not x384))
+(or (not x2671) (not x2187) (not x2166))
+(or (not x2607) (not x921) x583)
+(or (not x2672) (not x2188) (not x2166) x87)
+(or (not x2607) (not x919) x578)
+(or (not x2188) (not x2166) (not x87) x2672)
+(or (not x2607) x928 x926 x924 x921 x919)
+(or (not x2671) (not x2188) (not x2166))
+(or (not x2607) (not x924))
+(or (not x2672) (not x2189) (not x2166) x86)
+(or (not x2607) (not x2588))
+(or (not x2189) (not x2166) (not x86) x2672)
+(or (not x924) (not x390))
+(or (not x2671) (not x2189) (not x2166))
+(or (not x924) x599)
+(or (not x2672) (not x2185) (not x2167) x82)
+(or (not x924) (not x2588) (not x387))
+(or (not x2185) (not x2167) (not x82) x2672)
+(or (not x924) (not x2588))
+(or (not x2671) (not x2185) (not x2167))
+(or (not x924) (not x2587) (not x384))
+(or (not x2672) (not x2186) (not x2167) x81)
+(or (not x924) (not x2587) x583)
+(or (not x2186) (not x2167) (not x81) x2672)
+(or (not x924) (not x2585) x578)
+(or (not x2671) (not x2186) (not x2167))
+(or (not x924) (not x2588))
+(or (not x2672) (not x2187) (not x2167))
+(or (not x387) x2643 x2632 x2621 x2607 x924 x2588)
+(or (not x2187) (not x2167) x2671)
+(or (not x2641) (not x2637) (not x393))
+(or (not x2672) (not x2188) (not x2167) x79)
+(or (not x2641) (not x2637) x611)
+(or (not x2188) (not x2167) (not x79) x2672)
+(or (not x2641) (not x2635) (not x392))
+(or (not x2671) (not x2188) (not x2167))
+(or (not x2641) (not x2635) x606)
+(or (not x2672) (not x2189) (not x2167) x77)
+(or (not x2189) (not x2167) (not x77) x2672)
+(or (not x2671) (not x2189) (not x2167))
+(or (not x2641) (not x2632) (not x387))
+(or (not x2672) (not x2185) (not x2168) x73)
+(or (not x2641) (not x2632) x588)
+(or (not x2185) (not x2168) (not x73) x2672)
+(or (not x2641) (not x2630) (not x384))
+(or (not x2671) (not x2185) (not x2168))
+(or (not x2641) (not x2630))
+(or (not x2672) (not x2186) (not x2168) x67)
+(or (not x2641) (not x2628) x577)
+(or (not x2186) (not x2168) (not x67) x2672)
+(or (not x2641) x2637 x2635 x2632 x2630 x2628)
+(or (not x2671) (not x2186) (not x2168))
+(or (not x2641) (not x2630))
+(or (not x2672) (not x2187) (not x2168) x66)
+(or (not x2641) (not x2617))
+(or (not x2187) (not x2168) (not x66) x2672)
+(or (not x2641) (not x2605))
+(or (not x2671) (not x2187) (not x2168))
+(or (not x2641) (not x921))
+(or (not x2672) (not x2188) (not x2168))
+(or (not x2641) (not x2587))
+(or (not x2188) (not x2168) x2671)
+(or (not x2630) (not x2626) (not x393))
+(or (not x2672) (not x2189) (not x2168) x65)
+(or (not x2630) (not x2626) x611)
+(or (not x2189) (not x2168) (not x65) x2672)
+(or (not x2630) (not x2624) (not x392))
+(or (not x2671) (not x2189) (not x2168))
+(or (not x2630) (not x2624) x606)
+(or (not x2672) (not x2185) (not x2169) x58)
+(or (not x2185) (not x2169) (not x58) x2672)
+(or (not x2671) (not x2185) (not x2169))
+(or (not x2630) (not x2621) (not x387))
+(or (not x2672) (not x2186) (not x2169) x57)
+(or (not x2630) (not x2621) x588)
+(or (not x2186) (not x2169) (not x57) x2672)
+(or (not x2630) (not x2617) (not x384))
+(or (not x2671) (not x2186) (not x2169))
+(or (not x2630) (not x2617))
+(or (not x2672) (not x2187) (not x2169) x56)
+(or (not x2630) (not x2615) x577)
+(or (not x2187) (not x2169) (not x56) x2672)
+(or (not x2630) x2626 x2624 x2621 x2617 x2615)
+(or (not x2671) (not x2187) (not x2169))
+(or (not x2630) (not x2617))
+(or (not x2672) (not x2188) (not x2169) x55)
+(or (not x2630) (not x2605))
+(or (not x2188) (not x2169) (not x55) x2672)
+(or (not x2630) (not x921))
+(or (not x2671) (not x2188) (not x2169))
+(or (not x2630) (not x2587))
+(or (not x2672) (not x2189) (not x2169))
+(or (not x2617) (not x2613) (not x393))
+(or (not x2189) (not x2169) x2671)
+(or (not x2617) (not x2613) x611)
+(or (not x2670) (not x2661) (not x2618) x2669 x2663)
+(or (not x2617) (not x2610) (not x392))
+(or (not x2670) (not x2618) x2662 x2661)
+(or (not x2617) (not x2610) x606)
+(or (not x2670) x2619 x2618)
+(or (not x2663) (not x2661) (not x2618) x2670)
+(or (not x2669) (not x2661) (not x2618) x2670)
+(or (not x2617) (not x2607) (not x387))
+(or (not x2662) (not x2618) x2670)
+(or (not x2617) (not x2607) x588)
+(or (not x2619) x2670)
+(or (not x2617) (not x2605) (not x384))
+(or (not x2669) (not x2663))
+(or (not x2617) (not x2605))
+(or (not x2564) x2669 x2668 x2272)
+(or (not x2617) (not x2603) x577)
+(or (not x2669) (not x2564) (not x2272) x2668)
+(or (not x2617) x2613 x2610 x2607 x2605 x2603)
+(or (not x2669) (not x2668) x2564 x2272)
+(or (not x2617) (not x2605))
+(or (not x2668) (not x2272) x2669 x2564)
+(or (not x2617) (not x921))
+(or (not x2562) x2669 x2667 x2272)
+(or (not x2617) (not x2587))
+(or (not x2669) (not x2562) (not x2272) x2667)
+(or (not x2605) (not x928) (not x393))
+(or (not x2669) (not x2667) x2562 x2272)
+(or (not x2605) (not x928) x611)
+(or (not x2667) (not x2272) x2669 x2562)
+(or (not x2605) (not x926) (not x392))
+(or (not x2560) x2669 x2666 x2272)
+(or (not x2605) (not x926) x606)
+(or (not x2669) (not x2560) (not x2272) x2666)
+(or (not x2669) (not x2666) x2560 x2272)
+(or (not x2666) (not x2272) x2669 x2560)
+(or (not x2605) (not x924) (not x387))
+(or (not x2558) x2669 x2665 x2272)
+(or (not x2605) (not x924) x588)
+(or (not x2669) (not x2558) (not x2272) x2665)
+(or (not x2605) (not x921) (not x384))
+(or (not x2669) (not x2665) x2558 x2272)
+(or (not x2605) (not x921))
+(or (not x2665) (not x2272) x2669 x2558)
+(or (not x2605) (not x919) x577)
+(or (not x2556) x2669 x2664 x2272)
+(or (not x2605) x928 x926 x924 x921 x919)
+(or (not x2669) (not x2556) (not x2272) x2664)
+(or (not x2605) (not x921))
+(or (not x2669) (not x2664) x2556 x2272)
+(or (not x2605) (not x2587))
+(or (not x2664) (not x2272) x2669 x2556)
+(or (not x921) (not x390))
+(or (not x2667) (not x2562) x2663 x2668 x2564)
+(or (not x921) x598)
+(or (not x2666) (not x2560) x2663 x2667 x2562)
+(or (not x921) (not x2588) (not x387))
+(or (not x2665) (not x2558) x2663 x2666 x2560)
+(or (not x921) (not x2588) x588)
+(or (not x2664) (not x2556) x2663 x2665 x2558)
+(or (not x921) (not x2587) (not x384))
+(or x2663 x2664 x2556)
+(or (not x921) (not x2587))
+(or (not x2668) (not x2564) x2663)
+(or (not x921) (not x2585) x577)
+(or (not x2663) (not x2668) x2564)
+(or (not x921) (not x2587))
+(or (not x2663) (not x2564) x2668)
+(or (not x384) x2641 x2630 x2617 x2605 x921 x2587)
+(or (not x2663) (not x2667) x2562)
+(or (not x2639) (not x2637) (not x393))
+(or (not x2663) (not x2562) x2667)
+(or (not x2639) (not x2637) x610)
+(or (not x2663) (not x2666) x2560)
+(or (not x2639) (not x2635) (not x392))
+(or (not x2663) (not x2560) x2666)
+(or (not x2639) (not x2635) x605)
+(or (not x2663) (not x2665) x2558)
+(or (not x2663) (not x2558) x2665)
+(or (not x2663) (not x2664) x2556)
+(or (not x2639) (not x2632) (not x387))
+(or (not x2663) (not x2556) x2664)
+(or (not x2639) (not x2632) x587)
+(or (not x52) x2662 x2658 x2660)
+(or (not x2639) (not x2630) (not x384))
+(or (not x2662) (not x2660) (not x52) x2658)
+(or (not x2639) (not x2630) x582)
+(or (not x2662) x2658 x2660 x52)
+(or (not x2639) (not x2628))
+(or (not x2660) x2662 x2658 x52)
+(or (not x2639) x2637 x2635 x2632 x2630 x2628)
+(or (not x2658) (not x50) x2662 x2656 x2659)
+(or (not x2639) (not x2628))
+(or (not x2662) (not x2658) (not x2659) (not x50) x2656)
+(or (not x2639) (not x2615))
+(or (not x2662) (not x2658) x2656 x2659 x50)
+(or (not x2639) (not x2603))
+(or (not x2658) (not x2659) x2662 x2656 x50)
+(or (not x2639) (not x919))
+(or (not x2656) (not x48) x2662 x2654 x2657)
+(or (not x2639) (not x2585))
+(or (not x2662) (not x2656) (not x2657) (not x48) x2654)
+(or (not x2628) (not x2626) (not x393))
+(or (not x2662) (not x2656) x2654 x2657 x48)
+(or (not x2628) (not x2626) x610)
+(or (not x2656) (not x2657) x2662 x2654 x48)
+(or (not x2628) (not x2624) (not x392))
+(or (not x2654) (not x46) x2662 x2652 x2655)
+(or (not x2628) (not x2624) x605)
+(or (not x2662) (not x2654) (not x2655) (not x46) x2652)
+(or (not x2662) (not x2654) x2652 x2655 x46)
+(or (not x2654) (not x2655) x2662 x2652 x46)
+(or (not x2628) (not x2621) (not x387))
+(or (not x2652) (not x44) x2662 x2650 x2653)
+(or (not x2628) (not x2621) x587)
+(or (not x2662) (not x2652) (not x2653) (not x44) x2650)
+(or (not x2628) (not x2617) (not x384))
+(or (not x2662) (not x2652) x2650 x2653 x44)
+(or (not x2628) (not x2617) x582)
+(or (not x2652) (not x2653) x2662 x2650 x44)
+(or (not x2628) (not x2615))
+(or (not x2650) (not x149) x2662 x2649 x2651)
+(or (not x2628) x2626 x2624 x2621 x2617 x2615)
+(or (not x2662) (not x2650) (not x2651) (not x149) x2649)
+(or (not x2628) (not x2615))
+(or (not x2662) (not x2650) x2649 x2651 x149)
+(or (not x2628) (not x2603))
+(or (not x2650) (not x2651) x2662 x2649 x149)
+(or (not x2628) (not x919))
+(or (not x2662) (not x2661))
+(or (not x2628) (not x2585))
+(or (not x2649) x2661)
+(or (not x2615) (not x2613) (not x393))
+(or (not x2661) x2649)
+(or (not x2615) (not x2613) x610)
+(or x2658 x2660 x2551)
+(or (not x2615) (not x2610) (not x392))
+(or (not x2660) (not x2551) x2658)
+(or (not x2615) (not x2610) x605)
+(or (not x2658) (not x2660) x2551)
+(or (not x2658) (not x2551) x2660)
+(or (not x2658) x2656 x2659 x2549)
+(or (not x2615) (not x2607) (not x387))
+(or (not x2658) (not x2659) (not x2549) x2656)
+(or (not x2615) (not x2607) x587)
+(or (not x2656) (not x2659) x2549)
+(or (not x2615) (not x2605) (not x384))
+(or (not x2656) (not x2549) x2659)
+(or (not x2615) (not x2605) x582)
+(or (not x2656) x2658)
+(or (not x2615) (not x2603))
+(or (not x2656) x2654 x2657 x2546)
+(or (not x2615) x2613 x2610 x2607 x2605 x2603)
+(or (not x2656) (not x2657) (not x2546) x2654)
+(or (not x2615) (not x2603))
+(or (not x2654) (not x2657) x2546)
+(or (not x2615) (not x919))
+(or (not x2654) (not x2546) x2657)
+(or (not x2615) (not x2585))
+(or (not x2654) x2656)
+(or (not x2603) (not x928) (not x393))
+(or (not x2654) x2652 x2655 x2543)
+(or (not x2603) (not x928) x610)
+(or (not x2654) (not x2655) (not x2543) x2652)
+(or (not x2603) (not x926) (not x392))
+(or (not x2652) (not x2655) x2543)
+(or (not x2603) (not x926) x605)
+(or (not x2652) (not x2543) x2655)
+(or (not x2652) x2654)
+(or (not x2652) x2650 x2653 x2540)
+(or (not x2603) (not x924) (not x387))
+(or (not x2652) (not x2653) (not x2540) x2650)
+(or (not x2603) (not x924) x587)
+(or (not x2650) (not x2653) x2540)
+(or (not x2603) (not x921) (not x384))
+(or (not x2650) (not x2540) x2653)
+(or (not x2603) (not x921) x582)
+(or (not x2650) x2652)
+(or (not x2603) (not x919))
+(or (not x2650) x2649 x2651 x2537)
+(or (not x2603) x928 x926 x924 x921 x919)
+(or (not x2650) (not x2651) (not x2537) x2649)
+(or (not x2603) (not x919))
+(or (not x2649) (not x2651) x2537)
+(or (not x2603) (not x2585))
+(or (not x2649) (not x2537) x2651)
+(or (not x919) (not x390))
+(or (not x2649) x2650)
+(or (not x919) x596)
+(or (not x2619) (not x2180) (not x2165))
+(or (not x919) (not x2588) (not x387))
+(or (not x2180) (not x2165) x2618)
+(or (not x919) (not x2588) x587)
+(or (not x2619) (not x2181) (not x2165) x95)
+(or (not x919) (not x2587) (not x384))
+(or (not x2181) (not x2165) (not x95) x2619)
+(or (not x919) (not x2587) x582)
+(or (not x2618) (not x2181) (not x2165))
+(or (not x919) (not x2585))
+(or (not x2619) (not x2182) (not x2165) x94)
+(or (not x919) (not x2585))
+(or (not x2182) (not x2165) (not x94) x2619)
+(or (not x2648) (not x2645))
+(or (not x2618) (not x2182) (not x2165))
+(or (not x2648) x2647 x2645)
+(or (not x2619) (not x2183) (not x2165) x92)
+(or (not x2645) x2648 x2647)
+(or (not x2183) (not x2165) (not x92) x2619)
+(or (not x2647) x2648 x2645)
+(or (not x2618) (not x2183) (not x2165))
+(or (not x2646) (not x2644))
+(or (not x2619) (not x2184) (not x2165) x91)
+(or (not x2646) x2645 x2644)
+(or (not x2184) (not x2165) (not x91) x2619)
+(or (not x2644) x2646 x2645)
+(or (not x2618) (not x2184) (not x2165))
+(or (not x2645) x2646 x2644)
+(or (not x2619) (not x2180) (not x2166) x89)
+(or (not x2180) (not x2166) (not x89) x2619)
+(or (not x2618) (not x2180) (not x2166))
+(or (not x2642) x2644)
+(or (not x2619) (not x2181) (not x2166))
+(or (not x2644) x2642)
+(or (not x2181) (not x2166) x2618)
+(or (not x2643) (not x2640))
+(or (not x2619) (not x2182) (not x2166) x88)
+(or (not x2643) x2642 x2640)
+(or (not x2182) (not x2166) (not x88) x2619)
+(or (not x2640) x2643 x2642)
+(or (not x2618) (not x2182) (not x2166))
+(or (not x2642) x2643 x2640)
+(or (not x2619) (not x2183) (not x2166) x87)
+(or (not x2641) (not x2638))
+(or (not x2183) (not x2166) (not x87) x2619)
+(or (not x2641) x2640 x2638)
+(or (not x2618) (not x2183) (not x2166))
+(or (not x2638) x2641 x2640)
+(or (not x2619) (not x2184) (not x2166) x86)
+(or (not x2640) x2641 x2638)
+(or (not x2184) (not x2166) (not x86) x2619)
+(or (not x2639) x2638)
+(or (not x2618) (not x2184) (not x2166))
+(or (not x2638) x2639)
+(or (not x2619) (not x2180) (not x2167) x82)
+(or (not x2637) (not x2634))
+(or (not x2180) (not x2167) (not x82) x2619)
+(or (not x2637) x2636 x2634)
+(or (not x2618) (not x2180) (not x2167))
+(or (not x2634) x2637 x2636)
+(or (not x2619) (not x2181) (not x2167) x81)
+(or (not x2636) x2637 x2634)
+(or (not x2181) (not x2167) (not x81) x2619)
+(or (not x2635) (not x2633))
+(or (not x2618) (not x2181) (not x2167))
+(or (not x2635) x2634 x2633)
+(or (not x2619) (not x2182) (not x2167))
+(or (not x2633) x2635 x2634)
+(or (not x2182) (not x2167) x2618)
+(or (not x2634) x2635 x2633)
+(or (not x2619) (not x2183) (not x2167) x79)
+(or (not x2183) (not x2167) (not x79) x2619)
+(or (not x2618) (not x2183) (not x2167))
+(or (not x2631) x2633)
+(or (not x2619) (not x2184) (not x2167) x77)
+(or (not x2633) x2631)
+(or (not x2184) (not x2167) (not x77) x2619)
+(or (not x2632) (not x2629))
+(or (not x2618) (not x2184) (not x2167))
+(or (not x2632) x2631 x2629)
+(or (not x2619) (not x2180) (not x2168) x73)
+(or (not x2629) x2632 x2631)
+(or (not x2180) (not x2168) (not x73) x2619)
+(or (not x2631) x2632 x2629)
+(or (not x2618) (not x2180) (not x2168))
+(or (not x2630) (not x2627))
+(or (not x2619) (not x2181) (not x2168) x67)
+(or (not x2630) x2629 x2627)
+(or (not x2181) (not x2168) (not x67) x2619)
+(or (not x2627) x2630 x2629)
+(or (not x2618) (not x2181) (not x2168))
+(or (not x2629) x2630 x2627)
+(or (not x2619) (not x2182) (not x2168) x66)
+(or (not x2628) x2627)
+(or (not x2182) (not x2168) (not x66) x2619)
+(or (not x2627) x2628)
+(or (not x2618) (not x2182) (not x2168))
+(or (not x2626) (not x2623))
+(or (not x2619) (not x2183) (not x2168))
+(or (not x2626) x2625 x2623)
+(or (not x2183) (not x2168) x2618)
+(or (not x2623) x2626 x2625)
+(or (not x2619) (not x2184) (not x2168) x65)
+(or (not x2625) x2626 x2623)
+(or (not x2184) (not x2168) (not x65) x2619)
+(or (not x2624) (not x2622))
+(or (not x2618) (not x2184) (not x2168))
+(or (not x2624) x2623 x2622)
+(or (not x2619) (not x2180) (not x2169) x58)
+(or (not x2622) x2624 x2623)
+(or (not x2180) (not x2169) (not x58) x2619)
+(or (not x2623) x2624 x2622)
+(or (not x2618) (not x2180) (not x2169))
+(or (not x2619) (not x2181) (not x2169) x57)
+(or (not x2181) (not x2169) (not x57) x2619)
+(or (not x2620) x2622)
+(or (not x2618) (not x2181) (not x2169))
+(or (not x2622) x2620)
+(or (not x2619) (not x2182) (not x2169) x56)
+(or (not x2621) (not x2616))
+(or (not x2182) (not x2169) (not x56) x2619)
+(or (not x2621) x2620 x2616)
+(or (not x2618) (not x2182) (not x2169))
+(or (not x2616) x2621 x2620)
+(or (not x2619) (not x2183) (not x2169) x55)
+(or (not x2620) x2621 x2616)
+(or (not x2183) (not x2169) (not x55) x2619)
+(or (not x2617) (not x2614))
+(or (not x2618) (not x2183) (not x2169))
+(or (not x2617) x2616 x2614)
+(or (not x2619) (not x2184) (not x2169))
+(or (not x2614) x2617 x2616)
+(or (not x2184) (not x2169) x2618)
+(or (not x2616) x2617 x2614)
+(or (not x2611) (not x2582) (not x2568) x2601 x2591)
+(or (not x2615) x2614)
+(or (not x2611) (not x2568) x2583 x2582)
+(or (not x2614) x2615)
+(or (not x2611) x2569 x2568)
+(or (not x2613) (not x2609))
+(or (not x2591) (not x2582) (not x2568) x2611)
+(or (not x2613) x2612 x2609)
+(or (not x2601) (not x2582) (not x2568) x2611)
+(or (not x2609) x2613 x2612)
+(or (not x2583) (not x2568) x2611)
+(or (not x2612) x2613 x2609)
+(or (not x2569) x2611)
+(or (not x2610) (not x2608))
+(or (not x2601) (not x2591))
+(or (not x2610) x2609 x2608)
+(or (not x2564) x2601 x2598 x2272)
+(or (not x2608) x2610 x2609)
+(or (not x2601) (not x2564) (not x2272) x2598)
+(or (not x2609) x2610 x2608)
+(or (not x2601) (not x2598) x2564 x2272)
+(or (not x2598) (not x2272) x2601 x2564)
+(or (not x2562) x2601 x2596 x2272)
+(or (not x2606) x2608)
+(or (not x2601) (not x2562) (not x2272) x2596)
+(or (not x2608) x2606)
+(or (not x2601) (not x2596) x2562 x2272)
+(or (not x2607) (not x2604))
+(or (not x2596) (not x2272) x2601 x2562)
+(or (not x2607) x2606 x2604)
+(or (not x2560) x2601 x2595 x2272)
+(or (not x2604) x2607 x2606)
+(or (not x2601) (not x2560) (not x2272) x2595)
+(or (not x2606) x2607 x2604)
+(or (not x2601) (not x2595) x2560 x2272)
+(or (not x2605) (not x2602))
+(or (not x2595) (not x2272) x2601 x2560)
+(or (not x2605) x2604 x2602)
+(or (not x2558) x2601 x2593 x2272)
+(or (not x2602) x2605 x2604)
+(or (not x2601) (not x2558) (not x2272) x2593)
+(or (not x2604) x2605 x2602)
+(or (not x2601) (not x2593) x2558 x2272)
+(or (not x2603) x2602)
+(or (not x2593) (not x2272) x2601 x2558)
+(or (not x2602) x2603)
+(or (not x2556) x2601 x2592 x2272)
+(or (not x928) (not x2599))
+(or (not x2601) (not x2556) (not x2272) x2592)
+(or (not x928) x2600 x2599)
+(or (not x2601) (not x2592) x2556 x2272)
+(or (not x2599) x928 x2600)
+(or (not x2592) (not x2272) x2601 x2556)
+(or (not x2600) x928 x2599)
+(or (not x2596) (not x2562) x2591 x2598 x2564)
+(or (not x926) (not x2597))
+(or (not x2595) (not x2560) x2591 x2596 x2562)
+(or (not x926) x2599 x2597)
+(or (not x2593) (not x2558) x2591 x2595 x2560)
+(or (not x2597) x926 x2599)
+(or (not x2592) (not x2556) x2591 x2593 x2558)
+(or (not x2599) x926 x2597)
+(or x2591 x2592 x2556)
+(or (not x2598) (not x2564) x2591)
+(or (not x2591) (not x2598) x2564)
+(or (not x2594) x2597)
+(or (not x2591) (not x2564) x2598)
+(or (not x2597) x2594)
+(or (not x2591) (not x2596) x2562)
+(or (not x924) (not x2590))
+(or (not x2591) (not x2562) x2596)
+(or (not x924) x2594 x2590)
+(or (not x2591) (not x2595) x2560)
+(or (not x2590) x924 x2594)
+(or (not x2591) (not x2560) x2595)
+(or (not x2594) x924 x2590)
+(or (not x2591) (not x2593) x2558)
+(or (not x921) (not x2589))
+(or (not x2591) (not x2558) x2593)
+(or (not x921) x2590 x2589)
+(or (not x2591) (not x2592) x2556)
+(or (not x2589) x921 x2590)
+(or (not x2591) (not x2556) x2592)
+(or (not x2590) x921 x2589)
+(or (not x52) x2583 x2579 x2581)
+(or (not x919) x2589)
+(or (not x2583) (not x2581) (not x52) x2579)
+(or (not x2589) x919)
+(or (not x2583) x2579 x2581 x52)
+(or (not x2581) x2583 x2579 x52)
+(or (not x2579) (not x50) x2583 x2577 x2580)
+(or (not x2583) (not x2579) (not x2580) (not x50) x2577)
+(or (not x2588) (not x2586))
+(or (not x2583) (not x2579) x2577 x2580 x50)
+(or (not x2588) x2586)
+(or (not x2579) (not x2580) x2583 x2577 x50)
+(or (not x2586) x2588)
+(or (not x2577) (not x48) x2583 x2575 x2578)
+(or (not x2583) (not x2577) (not x2578) (not x48) x2575)
+(or (not x2587) (not x2584))
+(or (not x2583) (not x2577) x2575 x2578 x48)
+(or (not x2587) x2586 x2584)
+(or (not x2577) (not x2578) x2583 x2575 x48)
+(or (not x2584) x2587 x2586)
+(or (not x2575) (not x46) x2583 x2573 x2576)
+(or (not x2586) x2587 x2584)
+(or (not x2583) (not x2575) (not x2576) (not x46) x2573)
+(or (not x2585) x2584)
+(or (not x2583) (not x2575) x2573 x2576 x46)
+(or (not x2584) x2585)
+(or (not x2575) (not x2576) x2583 x2573 x46)
+(or (not x2525) (not x2509) (not x299))
+(or (not x2573) (not x44) x2583 x2571 x2574)
+(or (not x2525) (not x2509))
+(or (not x2583) (not x2573) (not x2574) (not x44) x2571)
+(or (not x2525) (not x2506) (not x296))
+(or (not x2583) (not x2573) x2571 x2574 x44)
+(or (not x2525) (not x2506) x609)
+(or (not x2573) (not x2574) x2583 x2571 x44)
+(or (not x2525) (not x2503) (not x293))
+(or (not x2571) (not x149) x2583 x2570 x2572)
+(or (not x2525) (not x2503) x602)
+(or (not x2583) (not x2571) (not x2572) (not x149) x2570)
+(or (not x2525) (not x2498) (not x288))
+(or (not x2583) (not x2571) x2570 x2572 x149)
+(or (not x2525) (not x2498) x586)
+(or (not x2571) (not x2572) x2583 x2570 x149)
+(or (not x2525) (not x2495) x581)
+(or (not x2583) (not x2582))
+(or (not x2525) x2509 x2506 x2503 x2498 x2495)
+(or (not x2570) x2582)
+(or (not x2525) (not x2509))
+(or (not x2582) x2570)
+(or (not x2525) (not x2492))
+(or x2579 x2581 x2551)
+(or (not x2525) (not x2476))
+(or (not x2581) (not x2551) x2579)
+(or (not x2525) (not x917))
+(or (not x2579) (not x2581) x2551)
+(or (not x2509) (not x2492) (not x299))
+(or (not x2579) (not x2551) x2581)
+(or (not x2509) (not x2492))
+(or (not x2579) x2577 x2580 x2549)
+(or (not x2509) (not x2489) (not x296))
+(or (not x2579) (not x2580) (not x2549) x2577)
+(or (not x2509) (not x2489) x609)
+(or (not x2577) (not x2580) x2549)
+(or (not x2509) (not x2486) (not x293))
+(or (not x2577) (not x2549) x2580)
+(or (not x2509) (not x2486) x602)
+(or (not x2577) x2579)
+(or (not x2509) (not x2481) (not x288))
+(or (not x2577) x2575 x2578 x2546)
+(or (not x2509) (not x2481) x586)
+(or (not x2577) (not x2578) (not x2546) x2575)
+(or (not x2509) (not x2479) x581)
+(or (not x2575) (not x2578) x2546)
+(or (not x2509) x2492 x2489 x2486 x2481 x2479)
+(or (not x2575) (not x2546) x2578)
+(or (not x2509) (not x2492))
+(or (not x2575) x2577)
+(or (not x2509) (not x2476))
+(or (not x2575) x2573 x2576 x2543)
+(or (not x2509) (not x917))
+(or (not x2575) (not x2576) (not x2543) x2573)
+(or (not x2492) (not x2476) (not x299))
+(or (not x2573) (not x2576) x2543)
+(or (not x2492) (not x2476))
+(or (not x2573) (not x2543) x2576)
+(or (not x2492) (not x2473) (not x296))
+(or (not x2573) x2575)
+(or (not x2492) (not x2473) x609)
+(or (not x2573) x2571 x2574 x2540)
+(or (not x2492) (not x2470) (not x293))
+(or (not x2573) (not x2574) (not x2540) x2571)
+(or (not x2492) (not x2470) x602)
+(or (not x2571) (not x2574) x2540)
+(or (not x2492) (not x2466) (not x288))
+(or (not x2571) (not x2540) x2574)
+(or (not x2492) (not x2466) x586)
+(or (not x2571) x2573)
+(or (not x2492) (not x2464) x581)
+(or (not x2571) x2570 x2572 x2537)
+(or (not x2492) x2476 x2473 x2470 x2466 x2464)
+(or (not x2571) (not x2572) (not x2537) x2570)
+(or (not x2492) (not x2476))
+(or (not x2570) (not x2572) x2537)
+(or (not x2492) (not x917))
+(or (not x2570) (not x2537) x2572)
+(or (not x2476) (not x917) (not x299))
+(or (not x2570) x2571)
+(or (not x2476) (not x917))
+(or (not x2569) (not x2175) (not x2165))
+(or (not x2476) (not x915) (not x296))
+(or (not x2175) (not x2165) x2568)
+(or (not x2476) (not x915) x609)
+(or (not x2569) (not x2176) (not x2165) x95)
+(or (not x2476) (not x912) (not x293))
+(or (not x2176) (not x2165) (not x95) x2569)
+(or (not x2476) (not x912) x602)
+(or (not x2568) (not x2176) (not x2165))
+(or (not x2476) (not x907) (not x288))
+(or (not x2569) (not x2177) (not x2165) x94)
+(or (not x2476) (not x907) x586)
+(or (not x2177) (not x2165) (not x94) x2569)
+(or (not x2476) (not x905) x581)
+(or (not x2568) (not x2177) (not x2165))
+(or (not x2476) x917 x915 x912 x907 x905)
+(or (not x2569) (not x2178) (not x2165) x92)
+(or (not x2476) (not x917))
+(or (not x2178) (not x2165) (not x92) x2569)
+(or (not x917) (not x291))
+(or (not x2568) (not x2178) (not x2165))
+(or (not x917) x594)
+(or (not x2569) (not x2179) (not x2165) x91)
+(or (not x917) (not x2455) (not x288))
+(or (not x2179) (not x2165) (not x91) x2569)
+(or (not x917) (not x2455) x586)
+(or (not x2568) (not x2179) (not x2165))
+(or (not x917) (not x2454) x581)
+(or (not x2569) (not x2175) (not x2166) x89)
+(or (not x299) x2525 x2509 x2492 x2476 x917)
+(or (not x2175) (not x2166) (not x89) x2569)
+(or (not x2522) (not x2509) (not x299))
+(or (not x2568) (not x2175) (not x2166))
+(or (not x2522) (not x2509) x615)
+(or (not x2569) (not x2176) (not x2166))
+(or (not x2522) (not x2506) (not x296))
+(or (not x2176) (not x2166) x2568)
+(or (not x2522) (not x2506))
+(or (not x2569) (not x2177) (not x2166) x88)
+(or (not x2522) (not x2503) (not x293))
+(or (not x2177) (not x2166) (not x88) x2569)
+(or (not x2522) (not x2503) x601)
+(or (not x2568) (not x2177) (not x2166))
+(or (not x2522) (not x2498) (not x288))
+(or (not x2569) (not x2178) (not x2166) x87)
+(or (not x2522) (not x2498) x585)
+(or (not x2178) (not x2166) (not x87) x2569)
+(or (not x2522) (not x2495) x580)
+(or (not x2568) (not x2178) (not x2166))
+(or (not x2522) x2509 x2506 x2503 x2498 x2495)
+(or (not x2569) (not x2179) (not x2166) x86)
+(or (not x2522) (not x2506))
+(or (not x2179) (not x2166) (not x86) x2569)
+(or (not x2522) (not x2489))
+(or (not x2568) (not x2179) (not x2166))
+(or (not x2522) (not x2473))
+(or (not x2569) (not x2175) (not x2167) x82)
+(or (not x2522) (not x915))
+(or (not x2175) (not x2167) (not x82) x2569)
+(or (not x2506) (not x2492) (not x299))
+(or (not x2568) (not x2175) (not x2167))
+(or (not x2506) (not x2492) x615)
+(or (not x2569) (not x2176) (not x2167) x81)
+(or (not x2506) (not x2489) (not x296))
+(or (not x2176) (not x2167) (not x81) x2569)
+(or (not x2506) (not x2489))
+(or (not x2568) (not x2176) (not x2167))
+(or (not x2506) (not x2486) (not x293))
+(or (not x2569) (not x2177) (not x2167))
+(or (not x2506) (not x2486) x601)
+(or (not x2177) (not x2167) x2568)
+(or (not x2506) (not x2481) (not x288))
+(or (not x2569) (not x2178) (not x2167) x79)
+(or (not x2506) (not x2481) x585)
+(or (not x2178) (not x2167) (not x79) x2569)
+(or (not x2506) (not x2479) x580)
+(or (not x2568) (not x2178) (not x2167))
+(or (not x2506) x2492 x2489 x2486 x2481 x2479)
+(or (not x2569) (not x2179) (not x2167) x77)
+(or (not x2506) (not x2489))
+(or (not x2179) (not x2167) (not x77) x2569)
+(or (not x2506) (not x2473))
+(or (not x2568) (not x2179) (not x2167))
+(or (not x2506) (not x915))
+(or (not x2569) (not x2175) (not x2168) x73)
+(or (not x2489) (not x2476) (not x299))
+(or (not x2175) (not x2168) (not x73) x2569)
+(or (not x2489) (not x2476) x615)
+(or (not x2568) (not x2175) (not x2168))
+(or (not x2489) (not x2473) (not x296))
+(or (not x2569) (not x2176) (not x2168) x67)
+(or (not x2489) (not x2473))
+(or (not x2176) (not x2168) (not x67) x2569)
+(or (not x2489) (not x2470) (not x293))
+(or (not x2568) (not x2176) (not x2168))
+(or (not x2489) (not x2470) x601)
+(or (not x2569) (not x2177) (not x2168) x66)
+(or (not x2489) (not x2466) (not x288))
+(or (not x2177) (not x2168) (not x66) x2569)
+(or (not x2489) (not x2466) x585)
+(or (not x2568) (not x2177) (not x2168))
+(or (not x2489) (not x2464) x580)
+(or (not x2569) (not x2178) (not x2168))
+(or (not x2489) x2476 x2473 x2470 x2466 x2464)
+(or (not x2178) (not x2168) x2568)
+(or (not x2489) (not x2473))
+(or (not x2569) (not x2179) (not x2168) x65)
+(or (not x2489) (not x915))
+(or (not x2179) (not x2168) (not x65) x2569)
+(or (not x2473) (not x917) (not x299))
+(or (not x2568) (not x2179) (not x2168))
+(or (not x2473) (not x917) x615)
+(or (not x2569) (not x2175) (not x2169) x58)
+(or (not x2473) (not x915) (not x296))
+(or (not x2175) (not x2169) (not x58) x2569)
+(or (not x2473) (not x915))
+(or (not x2568) (not x2175) (not x2169))
+(or (not x2473) (not x912) (not x293))
+(or (not x2569) (not x2176) (not x2169) x57)
+(or (not x2473) (not x912) x601)
+(or (not x2176) (not x2169) (not x57) x2569)
+(or (not x2473) (not x907) (not x288))
+(or (not x2568) (not x2176) (not x2169))
+(or (not x2473) (not x907) x585)
+(or (not x2569) (not x2177) (not x2169) x56)
+(or (not x2473) (not x905) x580)
+(or (not x2177) (not x2169) (not x56) x2569)
+(or (not x2473) x917 x915 x912 x907 x905)
+(or (not x2568) (not x2177) (not x2169))
+(or (not x2473) (not x915))
+(or (not x2569) (not x2178) (not x2169) x55)
+(or (not x915) (not x291))
+(or (not x2178) (not x2169) (not x55) x2569)
+(or (not x915) x592)
+(or (not x2568) (not x2178) (not x2169))
+(or (not x915) (not x2455) (not x288))
+(or (not x2569) (not x2179) (not x2169))
+(or (not x915) (not x2455) x585)
+(or (not x2179) (not x2169) x2568)
+(or (not x915) (not x2454) x580)
+(or (not x2567) (not x2553) (not x2533) x2566 x2555)
+(or (not x296) x2522 x2506 x2489 x2473 x915)
+(or (not x2567) (not x2533) x2554 x2553)
+(or (not x2519) (not x2509) (not x299))
+(or (not x2567) x2534 x2533)
+(or (not x2519) (not x2509) x614)
+(or (not x2555) (not x2553) (not x2533) x2567)
+(or (not x2519) (not x2506) (not x296))
+(or (not x2566) (not x2553) (not x2533) x2567)
+(or (not x2519) (not x2506) x608)
+(or (not x2554) (not x2533) x2567)
+(or (not x2519) (not x2503) (not x293))
+(or (not x2534) x2567)
+(or (not x2519) (not x2503))
+(or (not x2566) (not x2555))
+(or (not x2519) (not x2498) (not x288))
+(or (not x2564) x2566 x2565 x2272)
+(or (not x2519) (not x2498) x584)
+(or (not x2566) (not x2564) (not x2272) x2565)
+(or (not x2519) (not x2495) x579)
+(or (not x2566) (not x2565) x2564 x2272)
+(or (not x2519) x2509 x2506 x2503 x2498 x2495)
+(or (not x2565) (not x2272) x2566 x2564)
+(or (not x2519) (not x2503))
+(or (not x2562) x2566 x2563 x2272)
+(or (not x2519) (not x2486))
+(or (not x2566) (not x2562) (not x2272) x2563)
+(or (not x2519) (not x2470))
+(or (not x2566) (not x2563) x2562 x2272)
+(or (not x2519) (not x912))
+(or (not x2563) (not x2272) x2566 x2562)
+(or (not x2503) (not x2492) (not x299))
+(or (not x2560) x2566 x2561 x2272)
+(or (not x2503) (not x2492) x614)
+(or (not x2566) (not x2560) (not x2272) x2561)
+(or (not x2503) (not x2489) (not x296))
+(or (not x2566) (not x2561) x2560 x2272)
+(or (not x2503) (not x2489) x608)
+(or (not x2561) (not x2272) x2566 x2560)
+(or (not x2503) (not x2486) (not x293))
+(or (not x2558) x2566 x2559 x2272)
+(or (not x2503) (not x2486))
+(or (not x2566) (not x2558) (not x2272) x2559)
+(or (not x2503) (not x2481) (not x288))
+(or (not x2566) (not x2559) x2558 x2272)
+(or (not x2503) (not x2481) x584)
+(or (not x2559) (not x2272) x2566 x2558)
+(or (not x2503) (not x2479) x579)
+(or (not x2556) x2566 x2557 x2272)
+(or (not x2503) x2492 x2489 x2486 x2481 x2479)
+(or (not x2566) (not x2556) (not x2272) x2557)
+(or (not x2503) (not x2486))
+(or (not x2566) (not x2557) x2556 x2272)
+(or (not x2503) (not x2470))
+(or (not x2557) (not x2272) x2566 x2556)
+(or (not x2503) (not x912))
+(or (not x2563) (not x2562) x2555 x2565 x2564)
+(or (not x2486) (not x2476) (not x299))
+(or (not x2561) (not x2560) x2555 x2563 x2562)
+(or (not x2486) (not x2476) x614)
+(or (not x2559) (not x2558) x2555 x2561 x2560)
+(or (not x2486) (not x2473) (not x296))
+(or (not x2557) (not x2556) x2555 x2559 x2558)
+(or (not x2486) (not x2473) x608)
+(or x2555 x2557 x2556)
+(or (not x2486) (not x2470) (not x293))
+(or (not x2565) (not x2564) x2555)
+(or (not x2486) (not x2470))
+(or (not x2555) (not x2565) x2564)
+(or (not x2486) (not x2466) (not x288))
+(or (not x2555) (not x2564) x2565)
+(or (not x2486) (not x2466) x584)
+(or (not x2555) (not x2563) x2562)
+(or (not x2486) (not x2464) x579)
+(or (not x2555) (not x2562) x2563)
+(or (not x2486) x2476 x2473 x2470 x2466 x2464)
+(or (not x2555) (not x2561) x2560)
+(or (not x2486) (not x2470))
+(or (not x2555) (not x2560) x2561)
+(or (not x2486) (not x912))
+(or (not x2555) (not x2559) x2558)
+(or (not x2470) (not x917) (not x299))
+(or (not x2555) (not x2558) x2559)
+(or (not x2470) (not x917) x614)
+(or (not x2555) (not x2557) x2556)
+(or (not x2470) (not x915) (not x296))
+(or (not x2555) (not x2556) x2557)
+(or (not x2470) (not x915) x608)
+(or (not x52) x2554 x2548 x2552)
+(or (not x2470) (not x912) (not x293))
+(or (not x2554) (not x2552) (not x52) x2548)
+(or (not x2470) (not x912))
+(or (not x2554) x2548 x2552 x52)
+(or (not x2470) (not x907) (not x288))
+(or (not x2552) x2554 x2548 x52)
+(or (not x2470) (not x907) x584)
+(or (not x2548) (not x50) x2554 x2545 x2550)
+(or (not x2470) (not x905) x579)
+(or (not x2554) (not x2548) (not x2550) (not x50) x2545)
+(or (not x2470) x917 x915 x912 x907 x905)
+(or (not x2554) (not x2548) x2545 x2550 x50)
+(or (not x2470) (not x912))
+(or (not x2548) (not x2550) x2554 x2545 x50)
+(or (not x912) (not x291))
+(or (not x2545) (not x48) x2554 x2542 x2547)
+(or (not x912) x589)
+(or (not x2554) (not x2545) (not x2547) (not x48) x2542)
+(or (not x912) (not x2455) (not x288))
+(or (not x2554) (not x2545) x2542 x2547 x48)
+(or (not x912) (not x2455) x584)
+(or (not x2545) (not x2547) x2554 x2542 x48)
+(or (not x912) (not x2454) x579)
+(or (not x2542) (not x46) x2554 x2539 x2544)
+(or (not x293) x2519 x2503 x2486 x2470 x912)
+(or (not x2554) (not x2542) (not x2544) (not x46) x2539)
+(or (not x2514) (not x2509) (not x299))
+(or (not x2554) (not x2542) x2539 x2544 x46)
+(or (not x2514) (not x2509) x611)
+(or (not x2542) (not x2544) x2554 x2539 x46)
+(or (not x2514) (not x2506) (not x296))
+(or (not x2539) (not x44) x2554 x2536 x2541)
+(or (not x2514) (not x2506) x606)
+(or (not x2554) (not x2539) (not x2541) (not x44) x2536)
+(or (not x2514) (not x2503) (not x293))
+(or (not x2554) (not x2539) x2536 x2541 x44)
+(or (not x2514) (not x2503) x598)
+(or (not x2539) (not x2541) x2554 x2536 x44)
+(or (not x2536) (not x149) x2554 x2535 x2538)
+(or (not x2554) (not x2536) (not x2538) (not x149) x2535)
+(or (not x2514) (not x2498) (not x288))
+(or (not x2554) (not x2536) x2535 x2538 x149)
+(or (not x2514) (not x2498))
+(or (not x2536) (not x2538) x2554 x2535 x149)
+(or (not x2514) (not x2495) x577)
+(or (not x2554) (not x2553))
+(or (not x2514) x2509 x2506 x2503 x2498 x2495)
+(or (not x2535) x2553)
+(or (not x2514) (not x2498))
+(or (not x2553) x2535)
+(or (not x2514) (not x2481))
+(or x2548 x2552 x2551)
+(or (not x2514) (not x2466))
+(or (not x2552) (not x2551) x2548)
+(or (not x2514) (not x907))
+(or (not x2548) (not x2552) x2551)
+(or (not x2514) (not x2455))
+(or (not x2548) (not x2551) x2552)
+(or (not x2498) (not x2492) (not x299))
+(or (not x2548) x2545 x2550 x2549)
+(or (not x2498) (not x2492) x611)
+(or (not x2548) (not x2550) (not x2549) x2545)
+(or (not x2498) (not x2489) (not x296))
+(or (not x2545) (not x2550) x2549)
+(or (not x2498) (not x2489) x606)
+(or (not x2545) (not x2549) x2550)
+(or (not x2498) (not x2486) (not x293))
+(or (not x2545) x2548)
+(or (not x2498) (not x2486) x598)
+(or (not x2545) x2542 x2547 x2546)
+(or (not x2545) (not x2547) (not x2546) x2542)
+(or (not x2542) (not x2547) x2546)
+(or (not x2498) (not x2481) (not x288))
+(or (not x2542) (not x2546) x2547)
+(or (not x2498) (not x2481))
+(or (not x2542) x2545)
+(or (not x2498) (not x2479) x577)
+(or (not x2542) x2539 x2544 x2543)
+(or (not x2498) x2492 x2489 x2486 x2481 x2479)
+(or (not x2542) (not x2544) (not x2543) x2539)
+(or (not x2498) (not x2481))
+(or (not x2539) (not x2544) x2543)
+(or (not x2498) (not x2466))
+(or (not x2539) (not x2543) x2544)
+(or (not x2498) (not x907))
+(or (not x2539) x2542)
+(or (not x2498) (not x2455))
+(or (not x2539) x2536 x2541 x2540)
+(or (not x2481) (not x2476) (not x299))
+(or (not x2539) (not x2541) (not x2540) x2536)
+(or (not x2481) (not x2476) x611)
+(or (not x2536) (not x2541) x2540)
+(or (not x2481) (not x2473) (not x296))
+(or (not x2536) (not x2540) x2541)
+(or (not x2481) (not x2473) x606)
+(or (not x2536) x2539)
+(or (not x2481) (not x2470) (not x293))
+(or (not x2536) x2535 x2538 x2537)
+(or (not x2481) (not x2470) x598)
+(or (not x2536) (not x2538) (not x2537) x2535)
+(or (not x2535) (not x2538) x2537)
+(or (not x2535) (not x2537) x2538)
+(or (not x2481) (not x2466) (not x288))
+(or (not x2535) x2536)
+(or (not x2481) (not x2466))
+(or (not x2534) (not x2170) (not x2165))
+(or (not x2481) (not x2464) x577)
+(or (not x2170) (not x2165) x2533)
+(or (not x2481) x2476 x2473 x2470 x2466 x2464)
+(or (not x2534) (not x2171) (not x2165) x95)
+(or (not x2481) (not x2466))
+(or (not x2171) (not x2165) (not x95) x2534)
+(or (not x2481) (not x907))
+(or (not x2533) (not x2171) (not x2165))
+(or (not x2481) (not x2455))
+(or (not x2534) (not x2172) (not x2165) x94)
+(or (not x2466) (not x917) (not x299))
+(or (not x2172) (not x2165) (not x94) x2534)
+(or (not x2466) (not x917) x611)
+(or (not x2533) (not x2172) (not x2165))
+(or (not x2466) (not x915) (not x296))
+(or (not x2534) (not x2173) (not x2165) x92)
+(or (not x2466) (not x915) x606)
+(or (not x2173) (not x2165) (not x92) x2534)
+(or (not x2466) (not x912) (not x293))
+(or (not x2533) (not x2173) (not x2165))
+(or (not x2466) (not x912) x598)
+(or (not x2534) (not x2174) (not x2165) x91)
+(or (not x2174) (not x2165) (not x91) x2534)
+(or (not x2533) (not x2174) (not x2165))
+(or (not x2466) (not x907) (not x288))
+(or (not x2534) (not x2170) (not x2166) x89)
+(or (not x2466) (not x907))
+(or (not x2170) (not x2166) (not x89) x2534)
+(or (not x2466) (not x905) x577)
+(or (not x2533) (not x2170) (not x2166))
+(or (not x2466) x917 x915 x912 x907 x905)
+(or (not x2534) (not x2171) (not x2166))
+(or (not x2466) (not x907))
+(or (not x2171) (not x2166) x2533)
+(or (not x2466) (not x2455))
+(or (not x2534) (not x2172) (not x2166) x88)
+(or (not x907) (not x291))
+(or (not x2172) (not x2166) (not x88) x2534)
+(or (not x907) x588)
+(or (not x2533) (not x2172) (not x2166))
+(or (not x907) (not x2455) (not x288))
+(or (not x2534) (not x2173) (not x2166) x87)
+(or (not x907) (not x2455))
+(or (not x2173) (not x2166) (not x87) x2534)
+(or (not x907) (not x2454) x577)
+(or (not x2533) (not x2173) (not x2166))
+(or (not x907) (not x2455))
+(or (not x2534) (not x2174) (not x2166) x86)
+(or (not x288) x2514 x2498 x2481 x2466 x907 x2455)
+(or (not x2174) (not x2166) (not x86) x2534)
+(or (not x2512) (not x2509) (not x299))
+(or (not x2533) (not x2174) (not x2166))
+(or (not x2512) (not x2509) x610)
+(or (not x2534) (not x2170) (not x2167) x82)
+(or (not x2512) (not x2506) (not x296))
+(or (not x2170) (not x2167) (not x82) x2534)
+(or (not x2512) (not x2506) x605)
+(or (not x2533) (not x2170) (not x2167))
+(or (not x2512) (not x2503) (not x293))
+(or (not x2534) (not x2171) (not x2167) x81)
+(or (not x2512) (not x2503) x596)
+(or (not x2171) (not x2167) (not x81) x2534)
+(or (not x2533) (not x2171) (not x2167))
+(or (not x2534) (not x2172) (not x2167))
+(or (not x2512) (not x2498) (not x288))
+(or (not x2172) (not x2167) x2533)
+(or (not x2512) (not x2498) x582)
+(or (not x2534) (not x2173) (not x2167) x79)
+(or (not x2512) (not x2495))
+(or (not x2173) (not x2167) (not x79) x2534)
+(or (not x2512) x2509 x2506 x2503 x2498 x2495)
+(or (not x2533) (not x2173) (not x2167))
+(or (not x2512) (not x2495))
+(or (not x2534) (not x2174) (not x2167) x77)
+(or (not x2512) (not x2479))
+(or (not x2174) (not x2167) (not x77) x2534)
+(or (not x2512) (not x2464))
+(or (not x2533) (not x2174) (not x2167))
+(or (not x2512) (not x905))
+(or (not x2534) (not x2170) (not x2168) x73)
+(or (not x2512) (not x2454))
+(or (not x2170) (not x2168) (not x73) x2534)
+(or (not x2495) (not x2492) (not x299))
+(or (not x2533) (not x2170) (not x2168))
+(or (not x2495) (not x2492) x610)
+(or (not x2534) (not x2171) (not x2168) x67)
+(or (not x2495) (not x2489) (not x296))
+(or (not x2171) (not x2168) (not x67) x2534)
+(or (not x2495) (not x2489) x605)
+(or (not x2533) (not x2171) (not x2168))
+(or (not x2495) (not x2486) (not x293))
+(or (not x2534) (not x2172) (not x2168) x66)
+(or (not x2495) (not x2486) x596)
+(or (not x2172) (not x2168) (not x66) x2534)
+(or (not x2533) (not x2172) (not x2168))
+(or (not x2534) (not x2173) (not x2168))
+(or (not x2495) (not x2481) (not x288))
+(or (not x2173) (not x2168) x2533)
+(or (not x2495) (not x2481) x582)
+(or (not x2534) (not x2174) (not x2168) x65)
+(or (not x2495) (not x2479))
+(or (not x2174) (not x2168) (not x65) x2534)
+(or (not x2495) x2492 x2489 x2486 x2481 x2479)
+(or (not x2533) (not x2174) (not x2168))
+(or (not x2495) (not x2479))
+(or (not x2534) (not x2170) (not x2169) x58)
+(or (not x2495) (not x2464))
+(or (not x2170) (not x2169) (not x58) x2534)
+(or (not x2495) (not x905))
+(or (not x2533) (not x2170) (not x2169))
+(or (not x2495) (not x2454))
+(or (not x2534) (not x2171) (not x2169) x57)
+(or (not x2479) (not x2476) (not x299))
+(or (not x2171) (not x2169) (not x57) x2534)
+(or (not x2479) (not x2476) x610)
+(or (not x2533) (not x2171) (not x2169))
+(or (not x2479) (not x2473) (not x296))
+(or (not x2534) (not x2172) (not x2169) x56)
+(or (not x2479) (not x2473) x605)
+(or (not x2172) (not x2169) (not x56) x2534)
+(or (not x2479) (not x2470) (not x293))
+(or (not x2533) (not x2172) (not x2169))
+(or (not x2479) (not x2470) x596)
+(or (not x2534) (not x2173) (not x2169) x55)
+(or (not x2173) (not x2169) (not x55) x2534)
+(or (not x2533) (not x2173) (not x2169))
+(or (not x2479) (not x2466) (not x288))
+(or (not x2534) (not x2174) (not x2169))
+(or (not x2479) (not x2466) x582)
+(or (not x2174) (not x2169) x2533)
+(or (not x2479) (not x2464))
+(or (not x2532) (not x188) (not x40) x2265)
+(or (not x2479) x2476 x2473 x2470 x2466 x2464)
+(or (not x2532) (not x188) (not x41) x2249)
+(or (not x2479) (not x2464))
+(or (not x2532) (not x188) (not x42) x2205)
+(or (not x2479) (not x905))
+(or (not x2532) (not x188) (not x43) x2162)
+(or (not x2479) (not x2454))
+(or (not x2531) (not x188) (not x39) x2135)
+(or (not x2464) (not x917) (not x299))
+(or (not x2531) (not x188) (not x41) x2102)
+(or (not x2464) (not x917) x610)
+(or (not x2531) (not x188) (not x42) x2050)
+(or (not x2464) (not x915) (not x296))
+(or (not x2531) (not x188) (not x43) x1996)
+(or (not x2464) (not x915) x605)
+(or (not x2530) (not x188) (not x39) x1883)
+(or (not x2464) (not x912) (not x293))
+(or (not x2530) (not x188) (not x40) x1800)
+(or (not x2464) (not x912) x596)
+(or (not x2530) (not x188) (not x42) x1748)
+(or (not x2530) (not x188) (not x43) x1695)
+(or (not x2529) (not x188) (not x39) x1591)
+(or (not x2464) (not x907) (not x288))
+(or (not x2529) (not x188) (not x40) x1498)
+(or (not x2464) (not x907) x582)
+(or (not x2529) (not x188) (not x41) x1446)
+(or (not x2464) (not x905))
+(or (not x2529) (not x188) (not x43) x1394)
+(or (not x2464) x917 x915 x912 x907 x905)
+(or (not x2528) (not x188) (not x39) x1274)
+(or (not x2464) (not x905))
+(or (not x2528) (not x188) (not x40) x1183)
+(or (not x2464) (not x2454))
+(or (not x2528) (not x188) (not x41) x1102)
+(or (not x905) (not x291))
+(or (not x2528) (not x188) (not x42) x1033)
+(or (not x905) x587)
+(or (not x2527) (not x175) (not x33) x2441)
+(or (not x905) (not x2455) (not x288))
+(or (not x2527) (not x175) (not x34) x2413)
+(or (not x905) (not x2455) x582)
+(or (not x2527) (not x175) (not x35) x2364)
+(or (not x905) (not x2454))
+(or (not x2527) (not x175) (not x36) x2351)
+(or (not x905) (not x2454))
+(or (not x2526) (not x175) (not x32) x2148)
+(or (not x2525) (not x2521))
+(or (not x2526) (not x175) (not x34) x2102)
+(or (not x2525) x2524 x2521)
+(or (not x2526) (not x175) (not x35) x2050)
+(or (not x2521) x2525 x2524)
+(or (not x2526) (not x175) (not x36) x1996)
+(or (not x2524) x2525 x2521)
+(or (not x2523) (not x175) (not x32) x1940)
+(or (not x2522) (not x2518))
+(or (not x2523) (not x175) (not x33) x1800)
+(or (not x2522) x2521 x2518)
+(or (not x2523) (not x175) (not x35) x1748)
+(or (not x2518) x2522 x2521)
+(or (not x2523) (not x175) (not x36) x1695)
+(or (not x2521) x2522 x2518)
+(or (not x2520) (not x175) (not x32) x1643)
+(or (not x2519) (not x2516))
+(or (not x2520) (not x175) (not x33) x1498)
+(or (not x2519) x2518 x2516)
+(or (not x2520) (not x175) (not x34) x1446)
+(or (not x2516) x2519 x2518)
+(or (not x2520) (not x175) (not x36) x1394)
+(or (not x2518) x2519 x2516)
+(or (not x2517) (not x175) (not x32) x1341)
+(or (not x2517) (not x175) (not x33) x1183)
+(or (not x2517) (not x175) (not x34) x1102)
+(or (not x2513) x2516)
+(or (not x2517) (not x175) (not x35) x1033)
+(or (not x2516) x2513)
+(or (not x2515) (not x153) (not x28) x2467)
+(or (not x2514) (not x2511))
+(or (not x2515) (not x153) (not x29) x2413)
+(or (not x2514) x2513 x2511)
+(or (not x2515) (not x153) (not x30) x2364)
+(or (not x2511) x2514 x2513)
+(or (not x2515) (not x153) (not x31) x2351)
+(or (not x2513) x2514 x2511)
+(or (not x2510) (not x153) (not x27) x2288)
+(or (not x2512) x2511)
+(or (not x2510) (not x153) (not x29) x2249)
+(or (not x2511) x2512)
+(or (not x2510) (not x153) (not x30) x2205)
+(or (not x2509) (not x2505))
+(or (not x2510) (not x153) (not x31) x2162)
+(or (not x2509) x2508 x2505)
+(or (not x2507) (not x153) (not x27) x1940)
+(or (not x2505) x2509 x2508)
+(or (not x2507) (not x153) (not x28) x1883)
+(or (not x2508) x2509 x2505)
+(or (not x2507) (not x153) (not x30) x1748)
+(or (not x2506) (not x2502))
+(or (not x2507) (not x153) (not x31) x1695)
+(or (not x2506) x2505 x2502)
+(or (not x2504) (not x153) (not x27) x1643)
+(or (not x2502) x2506 x2505)
+(or (not x2504) (not x153) (not x28) x1591)
+(or (not x2505) x2506 x2502)
+(or (not x2504) (not x153) (not x29) x1446)
+(or (not x2503) (not x2500))
+(or (not x2504) (not x153) (not x31) x1394)
+(or (not x2503) x2502 x2500)
+(or (not x2501) (not x153) (not x27) x1341)
+(or (not x2500) x2503 x2502)
+(or (not x2501) (not x153) (not x28) x1274)
+(or (not x2502) x2503 x2500)
+(or (not x2501) (not x153) (not x29) x1102)
+(or (not x2501) (not x153) (not x30) x1033)
+(or (not x2499) (not x131) (not x21) x2467)
+(or (not x2497) x2500)
+(or (not x2499) (not x131) (not x22) x2441)
+(or (not x2500) x2497)
+(or (not x2499) (not x131) (not x23) x2364)
+(or (not x2498) (not x2494))
+(or (not x2499) (not x131) (not x24) x2351)
+(or (not x2498) x2497 x2494)
+(or (not x2496) (not x131) (not x20) x2288)
+(or (not x2494) x2498 x2497)
+(or (not x2496) (not x131) (not x22) x2265)
+(or (not x2497) x2498 x2494)
+(or (not x2496) (not x131) (not x23) x2205)
+(or (not x2495) x2494)
+(or (not x2496) (not x131) (not x24) x2162)
+(or (not x2494) x2495)
+(or (not x2493) (not x131) (not x20) x2148)
+(or (not x2492) (not x2488))
+(or (not x2493) (not x131) (not x21) x2135)
+(or (not x2492) x2491 x2488)
+(or (not x2493) (not x131) (not x23) x2050)
+(or (not x2488) x2492 x2491)
+(or (not x2493) (not x131) (not x24) x1996)
+(or (not x2491) x2492 x2488)
+(or (not x2490) (not x131) (not x20) x1643)
+(or (not x2489) (not x2485))
+(or (not x2490) (not x131) (not x21) x1591)
+(or (not x2489) x2488 x2485)
+(or (not x2490) (not x131) (not x22) x1498)
+(or (not x2485) x2489 x2488)
+(or (not x2490) (not x131) (not x24) x1394)
+(or (not x2488) x2489 x2485)
+(or (not x2487) (not x131) (not x20) x1341)
+(or (not x2486) (not x2483))
+(or (not x2487) (not x131) (not x21) x1274)
+(or (not x2486) x2485 x2483)
+(or (not x2487) (not x131) (not x22) x1183)
+(or (not x2483) x2486 x2485)
+(or (not x2487) (not x131) (not x23) x1033)
+(or (not x2485) x2486 x2483)
+(or (not x2484) (not x110) (not x14) x2467)
+(or (not x2484) (not x110) (not x15) x2441)
+(or (not x2484) (not x110) (not x16) x2413)
+(or (not x2480) x2483)
+(or (not x2484) (not x110) (not x17) x2351)
+(or (not x2483) x2480)
+(or (not x2482) (not x110) (not x13) x2288)
+(or (not x2481) (not x2478))
+(or (not x2482) (not x110) (not x15) x2265)
+(or (not x2481) x2480 x2478)
+(or (not x2482) (not x110) (not x16) x2249)
+(or (not x2478) x2481 x2480)
+(or (not x2482) (not x110) (not x17) x2162)
+(or (not x2480) x2481 x2478)
+(or (not x2477) (not x110) (not x13) x2148)
+(or (not x2479) x2478)
+(or (not x2477) (not x110) (not x14) x2135)
+(or (not x2478) x2479)
+(or (not x2477) (not x110) (not x16) x2102)
+(or (not x2476) (not x2472))
+(or (not x2477) (not x110) (not x17) x1996)
+(or (not x2476) x2475 x2472)
+(or (not x2474) (not x110) (not x13) x1940)
+(or (not x2472) x2476 x2475)
+(or (not x2474) (not x110) (not x14) x1883)
+(or (not x2475) x2476 x2472)
+(or (not x2474) (not x110) (not x15) x1800)
+(or (not x2473) (not x2469))
+(or (not x2474) (not x110) (not x17) x1695)
+(or (not x2473) x2472 x2469)
+(or (not x2471) (not x110) (not x13) x1341)
+(or (not x2469) x2473 x2472)
+(or (not x2471) (not x110) (not x14) x1274)
+(or (not x2472) x2473 x2469)
+(or (not x2471) (not x110) (not x15) x1183)
+(or (not x2470) (not x2468))
+(or (not x2471) (not x110) (not x16) x1102)
+(or (not x2470) x2469 x2468)
+(or (not x2365) (not x69) (not x7) x2467)
+(or (not x2468) x2470 x2469)
+(or (not x2467) (not x2450) (not x2442) x2458 x2452)
+(or (not x2469) x2470 x2468)
+(or (not x2467) (not x2442) x2451 x2450)
+(or (not x2467) x2443 x2442)
+(or (not x2452) (not x2450) (not x2442) x2467)
+(or (not x2465) x2468)
+(or (not x2458) (not x2450) (not x2442) x2467)
+(or (not x2468) x2465)
+(or (not x2451) (not x2442) x2467)
+(or (not x2466) (not x2463))
+(or (not x2443) x2467)
+(or (not x2466) x2465 x2463)
+(or (not x2458) (not x2452))
+(or (not x2463) x2466 x2465)
+(or (not x1334) x2458 x1267 x2268)
+(or (not x2465) x2466 x2463)
+(or (not x2458) (not x1334) (not x2268) x1267)
+(or (not x2464) x2463)
+(or (not x2458) (not x1267) x1334 x2268)
+(or (not x2463) x2464)
+(or (not x1267) (not x2268) x2458 x1334)
+(or (not x917) (not x2461))
+(or (not x1332) x2458 x1265 x2268)
+(or (not x917) x2462 x2461)
+(or (not x2458) (not x1332) (not x2268) x1265)
+(or (not x2461) x917 x2462)
+(or (not x2458) (not x1265) x1332 x2268)
+(or (not x2462) x917 x2461)
+(or (not x1265) (not x2268) x2458 x1332)
+(or (not x915) (not x2460))
+(or (not x1331) x2458 x1264 x2268)
+(or (not x915) x2461 x2460)
+(or (not x2458) (not x1331) (not x2268) x1264)
+(or (not x2460) x915 x2461)
+(or (not x2458) (not x1264) x1331 x2268)
+(or (not x2461) x915 x2460)
+(or (not x1264) (not x2268) x2458 x1331)
+(or (not x912) (not x2459))
+(or (not x1329) x2458 x1262 x2268)
+(or (not x912) x2460 x2459)
+(or (not x2458) (not x1329) (not x2268) x1262)
+(or (not x2459) x912 x2460)
+(or (not x2458) (not x1262) x1329 x2268)
+(or (not x2460) x912 x2459)
+(or (not x1262) (not x2268) x2458 x1329)
+(or (not x1328) x2458 x1261 x2268)
+(or (not x2458) (not x1328) (not x2268) x1261)
+(or (not x2457) x2459)
+(or (not x2458) (not x1261) x1328 x2268)
+(or (not x2459) x2457)
+(or (not x1261) (not x2268) x2458 x1328)
+(or (not x907) (not x2456))
+(or (not x1332) (not x1265) x2452 x1334 x1267)
+(or (not x907) x2457 x2456)
+(or (not x1331) (not x1264) x2452 x1332 x1265)
+(or (not x2456) x907 x2457)
+(or (not x1329) (not x1262) x2452 x1331 x1264)
+(or (not x2457) x907 x2456)
+(or (not x1328) (not x1261) x2452 x1329 x1262)
+(or (not x905) x2456)
+(or x2452 x1328 x1261)
+(or (not x2456) x905)
+(or (not x1334) (not x1267) x2452)
+(or (not x2452) (not x1267) x1334)
+(or (not x2452) (not x1334) x1267)
+(or (not x2452) (not x1265) x1332)
+(or (not x2452) (not x1332) x1265)
+(or (not x2455) (not x2453))
+(or (not x2452) (not x1264) x1331)
+(or (not x2455) x2453)
+(or (not x2452) (not x1331) x1264)
+(or (not x2453) x2455)
+(or (not x2452) (not x1262) x1329)
+(or (not x2452) (not x1329) x1262)
+(or (not x2454) x2453)
+(or (not x2452) (not x1261) x1328)
+(or (not x2453) x2454)
+(or (not x2452) (not x1328) x1261)
+(or (not x2430) (not x2417) (not x204))
+(or (not x52) x2451 x2449 x1247)
+(or (not x2430) (not x2417))
+(or (not x2451) (not x1247) (not x52) x2449)
+(or (not x2430) (not x2415) (not x203))
+(or (not x2451) x2449 x1247 x52)
+(or (not x2430) (not x2415) x609)
+(or (not x1247) x2451 x2449 x52)
+(or (not x2430) (not x2412) (not x200))
+(or (not x2449) (not x50) x2451 x2448 x1244)
+(or (not x2430) (not x2412) x602)
+(or (not x2451) (not x2449) (not x1244) (not x50) x2448)
+(or (not x2430) (not x2410) (not x197))
+(or (not x2451) (not x2449) x2448 x1244 x50)
+(or (not x2430) (not x2410) x594)
+(or (not x2449) (not x1244) x2451 x2448 x50)
+(or (not x2430) (not x2407) x581)
+(or (not x2448) (not x48) x2451 x2447 x1241)
+(or (not x2430) x2417 x2415 x2412 x2410 x2407)
+(or (not x2451) (not x2448) (not x1241) (not x48) x2447)
+(or (not x2430) (not x2417))
+(or (not x2451) (not x2448) x2447 x1241 x48)
+(or (not x2430) (not x2405))
+(or (not x2448) (not x1241) x2451 x2447 x48)
+(or (not x2430) (not x2393))
+(or (not x2447) (not x46) x2451 x2446 x1236)
+(or (not x2430) (not x902))
+(or (not x2451) (not x2447) (not x1236) (not x46) x2446)
+(or (not x2417) (not x2405) (not x204))
+(or (not x2451) (not x2447) x2446 x1236 x46)
+(or (not x2417) (not x2405))
+(or (not x2447) (not x1236) x2451 x2446 x46)
+(or (not x2417) (not x2403) (not x203))
+(or (not x2446) (not x44) x2451 x2445 x1233)
+(or (not x2417) (not x2403) x609)
+(or (not x2451) (not x2446) (not x1233) (not x44) x2445)
+(or (not x2417) (not x2400) (not x200))
+(or (not x2451) (not x2446) x2445 x1233 x44)
+(or (not x2417) (not x2400) x602)
+(or (not x2446) (not x1233) x2451 x2445 x44)
+(or (not x2417) (not x2398) (not x197))
+(or (not x2445) (not x149) x2451 x2444 x1229)
+(or (not x2417) (not x2398) x594)
+(or (not x2451) (not x2445) (not x1229) (not x149) x2444)
+(or (not x2417) (not x2395) x581)
+(or (not x2451) (not x2445) x2444 x1229 x149)
+(or (not x2417) x2405 x2403 x2400 x2398 x2395)
+(or (not x2445) (not x1229) x2451 x2444 x149)
+(or (not x2417) (not x2405))
+(or (not x2451) (not x2450))
+(or (not x2417) (not x2393))
+(or (not x2444) x2450)
+(or (not x2417) (not x902))
+(or (not x2450) x2444)
+(or (not x2405) (not x2393) (not x204))
+(or x2449 x1318 x1247)
+(or (not x2405) (not x2393))
+(or (not x1318) (not x1247) x2449)
+(or (not x2405) (not x2390) (not x203))
+(or (not x2449) (not x1247) x1318)
+(or (not x2405) (not x2390) x609)
+(or (not x2449) (not x1318) x1247)
+(or (not x2405) (not x2388) (not x200))
+(or (not x2449) x2448 x1316 x1244)
+(or (not x2405) (not x2388) x602)
+(or (not x2449) (not x1316) (not x1244) x2448)
+(or (not x2405) (not x2386) (not x197))
+(or (not x2448) (not x1244) x1316)
+(or (not x2405) (not x2386) x594)
+(or (not x2448) (not x1316) x1244)
+(or (not x2405) (not x2383) x581)
+(or (not x2448) x2449)
+(or (not x2405) x2393 x2390 x2388 x2386 x2383)
+(or (not x2448) x2447 x1312 x1241)
+(or (not x2405) (not x2393))
+(or (not x2448) (not x1312) (not x1241) x2447)
+(or (not x2405) (not x902))
+(or (not x2447) (not x1241) x1312)
+(or (not x2393) (not x902) (not x204))
+(or (not x2447) (not x1312) x1241)
+(or (not x2393) (not x902))
+(or (not x2447) x2448)
+(or (not x2393) (not x900) (not x203))
+(or (not x2447) x2446 x1308 x1236)
+(or (not x2393) (not x900) x609)
+(or (not x2447) (not x1308) (not x1236) x2446)
+(or (not x2393) (not x895) (not x200))
+(or (not x2446) (not x1236) x1308)
+(or (not x2393) (not x895) x602)
+(or (not x2446) (not x1308) x1236)
+(or (not x2393) (not x889) (not x197))
+(or (not x2446) x2447)
+(or (not x2393) (not x889) x594)
+(or (not x2446) x2445 x1303 x1233)
+(or (not x2393) (not x883) x581)
+(or (not x2446) (not x1303) (not x1233) x2445)
+(or (not x2393) x902 x900 x895 x889 x883)
+(or (not x2445) (not x1233) x1303)
+(or (not x2393) (not x902))
+(or (not x2445) (not x1303) x1233)
+(or (not x902) (not x194))
+(or (not x2445) x2446)
+(or (not x902) x586)
+(or (not x2445) x2444 x1300 x1229)
+(or (not x204) x2430 x2417 x2405 x2393 x902)
+(or (not x2445) (not x1300) (not x1229) x2444)
+(or (not x2428) (not x2417) (not x204))
+(or (not x2444) (not x1229) x1300)
+(or (not x2428) (not x2417) x615)
+(or (not x2444) (not x1300) x1229)
+(or (not x2428) (not x2415) (not x203))
+(or (not x2444) x2445)
+(or (not x2428) (not x2415))
+(or (not x2443) (not x1284) (not x1199))
+(or (not x2428) (not x2412) (not x200))
+(or (not x1284) (not x1199) x2442)
+(or (not x2428) (not x2412) x601)
+(or (not x2443) (not x1284) (not x1197) x95)
+(or (not x2428) (not x2410) (not x197))
+(or (not x1284) (not x1197) (not x95) x2443)
+(or (not x2428) (not x2410) x592)
+(or (not x2442) (not x1284) (not x1197))
+(or (not x2428) (not x2407) x580)
+(or (not x2443) (not x1284) (not x1194) x94)
+(or (not x2428) x2417 x2415 x2412 x2410 x2407)
+(or (not x1284) (not x1194) (not x94) x2443)
+(or (not x2428) (not x2415))
+(or (not x2442) (not x1284) (not x1194))
+(or (not x2428) (not x2403))
+(or (not x2443) (not x1284) (not x1191) x92)
+(or (not x2428) (not x2390))
+(or (not x1284) (not x1191) (not x92) x2443)
+(or (not x2428) (not x900))
+(or (not x2442) (not x1284) (not x1191))
+(or (not x2415) (not x2405) (not x204))
+(or (not x2443) (not x1284) (not x1188) x91)
+(or (not x2415) (not x2405) x615)
+(or (not x1284) (not x1188) (not x91) x2443)
+(or (not x2415) (not x2403) (not x203))
+(or (not x2442) (not x1284) (not x1188))
+(or (not x2415) (not x2403))
+(or (not x2443) (not x1283) (not x1199) x89)
+(or (not x2415) (not x2400) (not x200))
+(or (not x1283) (not x1199) (not x89) x2443)
+(or (not x2415) (not x2400) x601)
+(or (not x2442) (not x1283) (not x1199))
+(or (not x2415) (not x2398) (not x197))
+(or (not x2443) (not x1283) (not x1197))
+(or (not x2415) (not x2398) x592)
+(or (not x1283) (not x1197) x2442)
+(or (not x2415) (not x2395) x580)
+(or (not x2443) (not x1283) (not x1194) x88)
+(or (not x2415) x2405 x2403 x2400 x2398 x2395)
+(or (not x1283) (not x1194) (not x88) x2443)
+(or (not x2415) (not x2403))
+(or (not x2442) (not x1283) (not x1194))
+(or (not x2415) (not x2390))
+(or (not x2443) (not x1283) (not x1191) x87)
+(or (not x2415) (not x900))
+(or (not x1283) (not x1191) (not x87) x2443)
+(or (not x2403) (not x2393) (not x204))
+(or (not x2442) (not x1283) (not x1191))
+(or (not x2403) (not x2393) x615)
+(or (not x2443) (not x1283) (not x1188) x86)
+(or (not x2403) (not x2390) (not x203))
+(or (not x1283) (not x1188) (not x86) x2443)
+(or (not x2403) (not x2390))
+(or (not x2442) (not x1283) (not x1188))
+(or (not x2403) (not x2388) (not x200))
+(or (not x2443) (not x1281) (not x1199) x82)
+(or (not x2403) (not x2388) x601)
+(or (not x1281) (not x1199) (not x82) x2443)
+(or (not x2403) (not x2386) (not x197))
+(or (not x2442) (not x1281) (not x1199))
+(or (not x2403) (not x2386) x592)
+(or (not x2443) (not x1281) (not x1197) x81)
+(or (not x2403) (not x2383) x580)
+(or (not x1281) (not x1197) (not x81) x2443)
+(or (not x2403) x2393 x2390 x2388 x2386 x2383)
+(or (not x2442) (not x1281) (not x1197))
+(or (not x2403) (not x2390))
+(or (not x2443) (not x1281) (not x1194))
+(or (not x2403) (not x900))
+(or (not x1281) (not x1194) x2442)
+(or (not x2390) (not x902) (not x204))
+(or (not x2443) (not x1281) (not x1191) x79)
+(or (not x2390) (not x902) x615)
+(or (not x1281) (not x1191) (not x79) x2443)
+(or (not x2390) (not x900) (not x203))
+(or (not x2442) (not x1281) (not x1191))
+(or (not x2390) (not x900))
+(or (not x2443) (not x1281) (not x1188) x77)
+(or (not x2390) (not x895) (not x200))
+(or (not x1281) (not x1188) (not x77) x2443)
+(or (not x2390) (not x895) x601)
+(or (not x2442) (not x1281) (not x1188))
+(or (not x2390) (not x889) (not x197))
+(or (not x2443) (not x1279) (not x1199) x73)
+(or (not x2390) (not x889) x592)
+(or (not x1279) (not x1199) (not x73) x2443)
+(or (not x2390) (not x883) x580)
+(or (not x2442) (not x1279) (not x1199))
+(or (not x2390) x902 x900 x895 x889 x883)
+(or (not x2443) (not x1279) (not x1197) x67)
+(or (not x2390) (not x900))
+(or (not x1279) (not x1197) (not x67) x2443)
+(or (not x900) (not x194))
+(or (not x2442) (not x1279) (not x1197))
+(or (not x900) x585)
+(or (not x2443) (not x1279) (not x1194) x66)
+(or (not x203) x2428 x2415 x2403 x2390 x900)
+(or (not x1279) (not x1194) (not x66) x2443)
+(or (not x2426) (not x2417) (not x204))
+(or (not x2442) (not x1279) (not x1194))
+(or (not x2426) (not x2417) x614)
+(or (not x2443) (not x1279) (not x1191))
+(or (not x2426) (not x2415) (not x203))
+(or (not x1279) (not x1191) x2442)
+(or (not x2426) (not x2415) x608)
+(or (not x2443) (not x1279) (not x1188) x65)
+(or (not x2426) (not x2412) (not x200))
+(or (not x1279) (not x1188) (not x65) x2443)
+(or (not x2426) (not x2412))
+(or (not x2442) (not x1279) (not x1188))
+(or (not x2426) (not x2410) (not x197))
+(or (not x2443) (not x1276) (not x1199) x58)
+(or (not x2426) (not x2410) x589)
+(or (not x1276) (not x1199) (not x58) x2443)
+(or (not x2426) (not x2407) x579)
+(or (not x2442) (not x1276) (not x1199))
+(or (not x2426) x2417 x2415 x2412 x2410 x2407)
+(or (not x2443) (not x1276) (not x1197) x57)
+(or (not x2426) (not x2412))
+(or (not x1276) (not x1197) (not x57) x2443)
+(or (not x2426) (not x2400))
+(or (not x2442) (not x1276) (not x1197))
+(or (not x2426) (not x2388))
+(or (not x2443) (not x1276) (not x1194) x56)
+(or (not x2426) (not x895))
+(or (not x1276) (not x1194) (not x56) x2443)
+(or (not x2412) (not x2405) (not x204))
+(or (not x2442) (not x1276) (not x1194))
+(or (not x2412) (not x2405) x614)
+(or (not x2443) (not x1276) (not x1191) x55)
+(or (not x2412) (not x2403) (not x203))
+(or (not x1276) (not x1191) (not x55) x2443)
+(or (not x2412) (not x2403) x608)
+(or (not x2442) (not x1276) (not x1191))
+(or (not x2412) (not x2400) (not x200))
+(or (not x2443) (not x1276) (not x1188))
+(or (not x2412) (not x2400))
+(or (not x1276) (not x1188) x2442)
+(or (not x2412) (not x2398) (not x197))
+(or (not x2365) (not x69) (not x8) x2441)
+(or (not x2412) (not x2398) x589)
+(or (not x2441) (not x2437) (not x2418) x2440 x2439)
+(or (not x2412) (not x2395) x579)
+(or (not x2441) (not x2418) x2438 x2437)
+(or (not x2412) x2405 x2403 x2400 x2398 x2395)
+(or (not x2441) x2419 x2418)
+(or (not x2412) (not x2400))
+(or (not x2439) (not x2437) (not x2418) x2441)
+(or (not x2412) (not x2388))
+(or (not x2440) (not x2437) (not x2418) x2441)
+(or (not x2412) (not x895))
+(or (not x2438) (not x2418) x2441)
+(or (not x2400) (not x2393) (not x204))
+(or (not x2419) x2441)
+(or (not x2400) (not x2393) x614)
+(or (not x2440) (not x2439))
+(or (not x2400) (not x2390) (not x203))
+(or (not x1334) x2440 x1168 x2268)
+(or (not x2400) (not x2390) x608)
+(or (not x2440) (not x1334) (not x2268) x1168)
+(or (not x2400) (not x2388) (not x200))
+(or (not x2440) (not x1168) x1334 x2268)
+(or (not x2400) (not x2388))
+(or (not x1168) (not x2268) x2440 x1334)
+(or (not x2400) (not x2386) (not x197))
+(or (not x1332) x2440 x1167 x2268)
+(or (not x2400) (not x2386) x589)
+(or (not x2440) (not x1332) (not x2268) x1167)
+(or (not x2400) (not x2383) x579)
+(or (not x2440) (not x1167) x1332 x2268)
+(or (not x2400) x2393 x2390 x2388 x2386 x2383)
+(or (not x1167) (not x2268) x2440 x1332)
+(or (not x2400) (not x2388))
+(or (not x1331) x2440 x1165 x2268)
+(or (not x2400) (not x895))
+(or (not x2440) (not x1331) (not x2268) x1165)
+(or (not x2388) (not x902) (not x204))
+(or (not x2440) (not x1165) x1331 x2268)
+(or (not x2388) (not x902) x614)
+(or (not x1165) (not x2268) x2440 x1331)
+(or (not x2388) (not x900) (not x203))
+(or (not x1329) x2440 x1164 x2268)
+(or (not x2388) (not x900) x608)
+(or (not x2440) (not x1329) (not x2268) x1164)
+(or (not x2388) (not x895) (not x200))
+(or (not x2440) (not x1164) x1329 x2268)
+(or (not x2388) (not x895))
+(or (not x1164) (not x2268) x2440 x1329)
+(or (not x2388) (not x889) (not x197))
+(or (not x1328) x2440 x1160 x2268)
+(or (not x2388) (not x889) x589)
+(or (not x2440) (not x1328) (not x2268) x1160)
+(or (not x2388) (not x883) x579)
+(or (not x2440) (not x1160) x1328 x2268)
+(or (not x2388) x902 x900 x895 x889 x883)
+(or (not x1160) (not x2268) x2440 x1328)
+(or (not x2388) (not x895))
+(or (not x1332) (not x1167) x2439 x1334 x1168)
+(or (not x895) (not x194))
+(or (not x1331) (not x1165) x2439 x1332 x1167)
+(or (not x895) x584)
+(or (not x1329) (not x1164) x2439 x1331 x1165)
+(or (not x200) x2426 x2412 x2400 x2388 x895)
+(or (not x1328) (not x1160) x2439 x1329 x1164)
+(or (not x2424) (not x2417) (not x204))
+(or x2439 x1328 x1160)
+(or (not x2424) (not x2417) x613)
+(or (not x1334) (not x1168) x2439)
+(or (not x2424) (not x2415) (not x203))
+(or (not x2439) (not x1168) x1334)
+(or (not x2424) (not x2415) x607)
+(or (not x2439) (not x1334) x1168)
+(or (not x2424) (not x2412) (not x200))
+(or (not x2439) (not x1167) x1332)
+(or (not x2424) (not x2412) x599)
+(or (not x2439) (not x1332) x1167)
+(or (not x2424) (not x2410) (not x197))
+(or (not x2439) (not x1165) x1331)
+(or (not x2424) (not x2410))
+(or (not x2439) (not x1331) x1165)
+(or (not x2424) (not x2407) x578)
+(or (not x2439) (not x1164) x1329)
+(or (not x2424) x2417 x2415 x2412 x2410 x2407)
+(or (not x2439) (not x1329) x1164)
+(or (not x2424) (not x2410))
+(or (not x2439) (not x1160) x1328)
+(or (not x2424) (not x2398))
+(or (not x2439) (not x1328) x1160)
+(or (not x2424) (not x2386))
+(or (not x52) x2438 x2436 x1141)
+(or (not x2424) (not x889))
+(or (not x2438) (not x1141) (not x52) x2436)
+(or (not x2410) (not x2405) (not x204))
+(or (not x2438) x2436 x1141 x52)
+(or (not x2410) (not x2405) x613)
+(or (not x1141) x2438 x2436 x52)
+(or (not x2410) (not x2403) (not x203))
+(or (not x2436) (not x50) x2438 x2435 x1139)
+(or (not x2410) (not x2403) x607)
+(or (not x2438) (not x2436) (not x1139) (not x50) x2435)
+(or (not x2410) (not x2400) (not x200))
+(or (not x2438) (not x2436) x2435 x1139 x50)
+(or (not x2410) (not x2400) x599)
+(or (not x2436) (not x1139) x2438 x2435 x50)
+(or (not x2410) (not x2398) (not x197))
+(or (not x2435) (not x48) x2438 x2434 x1136)
+(or (not x2410) (not x2398))
+(or (not x2438) (not x2435) (not x1136) (not x48) x2434)
+(or (not x2410) (not x2395) x578)
+(or (not x2438) (not x2435) x2434 x1136 x48)
+(or (not x2410) x2405 x2403 x2400 x2398 x2395)
+(or (not x2435) (not x1136) x2438 x2434 x48)
+(or (not x2410) (not x2398))
+(or (not x2434) (not x46) x2438 x2433 x1133)
+(or (not x2410) (not x2386))
+(or (not x2438) (not x2434) (not x1133) (not x46) x2433)
+(or (not x2410) (not x889))
+(or (not x2438) (not x2434) x2433 x1133 x46)
+(or (not x2398) (not x2393) (not x204))
+(or (not x2434) (not x1133) x2438 x2433 x46)
+(or (not x2398) (not x2393) x613)
+(or (not x2433) (not x44) x2438 x2432 x1131)
+(or (not x2398) (not x2390) (not x203))
+(or (not x2438) (not x2433) (not x1131) (not x44) x2432)
+(or (not x2398) (not x2390) x607)
+(or (not x2438) (not x2433) x2432 x1131 x44)
+(or (not x2398) (not x2388) (not x200))
+(or (not x2433) (not x1131) x2438 x2432 x44)
+(or (not x2398) (not x2388) x599)
+(or (not x2432) (not x149) x2438 x2431 x1128)
+(or (not x2398) (not x2386) (not x197))
+(or (not x2438) (not x2432) (not x1128) (not x149) x2431)
+(or (not x2398) (not x2386))
+(or (not x2438) (not x2432) x2431 x1128 x149)
+(or (not x2398) (not x2383) x578)
+(or (not x2432) (not x1128) x2438 x2431 x149)
+(or (not x2398) x2393 x2390 x2388 x2386 x2383)
+(or (not x2438) (not x2437))
+(or (not x2398) (not x2386))
+(or (not x2431) x2437)
+(or (not x2398) (not x889))
+(or (not x2437) x2431)
+(or (not x2386) (not x902) (not x204))
+(or x2436 x1318 x1141)
+(or (not x2386) (not x902) x613)
+(or (not x1318) (not x1141) x2436)
+(or (not x2386) (not x900) (not x203))
+(or (not x2436) (not x1141) x1318)
+(or (not x2386) (not x900) x607)
+(or (not x2436) (not x1318) x1141)
+(or (not x2386) (not x895) (not x200))
+(or (not x2436) x2435 x1316 x1139)
+(or (not x2386) (not x895) x599)
+(or (not x2436) (not x1316) (not x1139) x2435)
+(or (not x2386) (not x889) (not x197))
+(or (not x2435) (not x1139) x1316)
+(or (not x2386) (not x889))
+(or (not x2435) (not x1316) x1139)
+(or (not x2386) (not x883) x578)
+(or (not x2435) x2436)
+(or (not x2386) x902 x900 x895 x889 x883)
+(or (not x2435) x2434 x1312 x1136)
+(or (not x2386) (not x889))
+(or (not x2435) (not x1312) (not x1136) x2434)
+(or (not x889) (not x194))
+(or (not x2434) (not x1136) x1312)
+(or (not x889) x583)
+(or (not x2434) (not x1312) x1136)
+(or (not x197) x2424 x2410 x2398 x2386 x889)
+(or (not x2434) x2435)
+(or (not x2421) (not x2417) (not x204))
+(or (not x2434) x2433 x1308 x1133)
+(or (not x2421) (not x2417) x610)
+(or (not x2434) (not x1308) (not x1133) x2433)
+(or (not x2421) (not x2415) (not x203))
+(or (not x2433) (not x1133) x1308)
+(or (not x2421) (not x2415) x605)
+(or (not x2433) (not x1308) x1133)
+(or (not x2421) (not x2412) (not x200))
+(or (not x2433) x2434)
+(or (not x2421) (not x2412) x596)
+(or (not x2433) x2432 x1303 x1131)
+(or (not x2421) (not x2410) (not x197))
+(or (not x2433) (not x1303) (not x1131) x2432)
+(or (not x2421) (not x2410) x587)
+(or (not x2432) (not x1131) x1303)
+(or (not x2432) (not x1303) x1131)
+(or (not x2432) x2433)
+(or (not x2421) (not x2407))
+(or (not x2432) x2431 x1300 x1128)
+(or (not x2421) x2417 x2415 x2412 x2410 x2407)
+(or (not x2432) (not x1300) (not x1128) x2431)
+(or (not x2421) (not x2407))
+(or (not x2431) (not x1128) x1300)
+(or (not x2421) (not x2395))
+(or (not x2431) (not x1300) x1128)
+(or (not x2421) (not x2383))
+(or (not x2431) x2432)
+(or (not x2421) (not x883))
+(or (not x2419) (not x1284) (not x1113))
+(or (not x2407) (not x2405) (not x204))
+(or (not x1284) (not x1113) x2418)
+(or (not x2407) (not x2405) x610)
+(or (not x2419) (not x1284) (not x1111) x95)
+(or (not x2407) (not x2403) (not x203))
+(or (not x1284) (not x1111) (not x95) x2419)
+(or (not x2407) (not x2403) x605)
+(or (not x2418) (not x1284) (not x1111))
+(or (not x2407) (not x2400) (not x200))
+(or (not x2419) (not x1284) (not x1109) x94)
+(or (not x2407) (not x2400) x596)
+(or (not x1284) (not x1109) (not x94) x2419)
+(or (not x2407) (not x2398) (not x197))
+(or (not x2418) (not x1284) (not x1109))
+(or (not x2407) (not x2398) x587)
+(or (not x2419) (not x1284) (not x1108) x92)
+(or (not x1284) (not x1108) (not x92) x2419)
+(or (not x2418) (not x1284) (not x1108))
+(or (not x2407) (not x2395))
+(or (not x2419) (not x1284) (not x1105) x91)
+(or (not x2407) x2405 x2403 x2400 x2398 x2395)
+(or (not x1284) (not x1105) (not x91) x2419)
+(or (not x2407) (not x2395))
+(or (not x2418) (not x1284) (not x1105))
+(or (not x2407) (not x2383))
+(or (not x2419) (not x1283) (not x1113) x89)
+(or (not x2407) (not x883))
+(or (not x1283) (not x1113) (not x89) x2419)
+(or (not x2395) (not x2393) (not x204))
+(or (not x2418) (not x1283) (not x1113))
+(or (not x2395) (not x2393) x610)
+(or (not x2419) (not x1283) (not x1111))
+(or (not x2395) (not x2390) (not x203))
+(or (not x1283) (not x1111) x2418)
+(or (not x2395) (not x2390) x605)
+(or (not x2419) (not x1283) (not x1109) x88)
+(or (not x2395) (not x2388) (not x200))
+(or (not x1283) (not x1109) (not x88) x2419)
+(or (not x2395) (not x2388) x596)
+(or (not x2418) (not x1283) (not x1109))
+(or (not x2395) (not x2386) (not x197))
+(or (not x2419) (not x1283) (not x1108) x87)
+(or (not x2395) (not x2386) x587)
+(or (not x1283) (not x1108) (not x87) x2419)
+(or (not x2418) (not x1283) (not x1108))
+(or (not x2419) (not x1283) (not x1105) x86)
+(or (not x2395) (not x2383))
+(or (not x1283) (not x1105) (not x86) x2419)
+(or (not x2395) x2393 x2390 x2388 x2386 x2383)
+(or (not x2418) (not x1283) (not x1105))
+(or (not x2395) (not x2383))
+(or (not x2419) (not x1281) (not x1113) x82)
+(or (not x2395) (not x883))
+(or (not x1281) (not x1113) (not x82) x2419)
+(or (not x2383) (not x902) (not x204))
+(or (not x2418) (not x1281) (not x1113))
+(or (not x2383) (not x902) x610)
+(or (not x2419) (not x1281) (not x1111) x81)
+(or (not x2383) (not x900) (not x203))
+(or (not x1281) (not x1111) (not x81) x2419)
+(or (not x2383) (not x900) x605)
+(or (not x2418) (not x1281) (not x1111))
+(or (not x2383) (not x895) (not x200))
+(or (not x2419) (not x1281) (not x1109))
+(or (not x2383) (not x895) x596)
+(or (not x1281) (not x1109) x2418)
+(or (not x2383) (not x889) (not x197))
+(or (not x2419) (not x1281) (not x1108) x79)
+(or (not x2383) (not x889) x587)
+(or (not x1281) (not x1108) (not x79) x2419)
+(or (not x2418) (not x1281) (not x1108))
+(or (not x2419) (not x1281) (not x1105) x77)
+(or (not x2383) (not x883))
+(or (not x1281) (not x1105) (not x77) x2419)
+(or (not x2383) x902 x900 x895 x889 x883)
+(or (not x2418) (not x1281) (not x1105))
+(or (not x2383) (not x883))
+(or (not x2419) (not x1279) (not x1113) x73)
+(or (not x883) (not x194))
+(or (not x1279) (not x1113) (not x73) x2419)
+(or (not x883) x582)
+(or (not x2418) (not x1279) (not x1113))
+(or (not x2430) (not x2427))
+(or (not x2419) (not x1279) (not x1111) x67)
+(or (not x2430) x2429 x2427)
+(or (not x1279) (not x1111) (not x67) x2419)
+(or (not x2427) x2430 x2429)
+(or (not x2418) (not x1279) (not x1111))
+(or (not x2429) x2430 x2427)
+(or (not x2419) (not x1279) (not x1109) x66)
+(or (not x2428) (not x2425))
+(or (not x1279) (not x1109) (not x66) x2419)
+(or (not x2428) x2427 x2425)
+(or (not x2418) (not x1279) (not x1109))
+(or (not x2425) x2428 x2427)
+(or (not x2419) (not x1279) (not x1108))
+(or (not x2427) x2428 x2425)
+(or (not x1279) (not x1108) x2418)
+(or (not x2426) (not x2423))
+(or (not x2419) (not x1279) (not x1105) x65)
+(or (not x2426) x2425 x2423)
+(or (not x1279) (not x1105) (not x65) x2419)
+(or (not x2423) x2426 x2425)
+(or (not x2418) (not x1279) (not x1105))
+(or (not x2425) x2426 x2423)
+(or (not x2419) (not x1276) (not x1113) x58)
+(or (not x2424) (not x2422))
+(or (not x1276) (not x1113) (not x58) x2419)
+(or (not x2424) x2423 x2422)
+(or (not x2418) (not x1276) (not x1113))
+(or (not x2422) x2424 x2423)
+(or (not x2419) (not x1276) (not x1111) x57)
+(or (not x2423) x2424 x2422)
+(or (not x1276) (not x1111) (not x57) x2419)
+(or (not x2418) (not x1276) (not x1111))
+(or (not x2419) (not x1276) (not x1109) x56)
+(or (not x2420) x2422)
+(or (not x1276) (not x1109) (not x56) x2419)
+(or (not x2422) x2420)
+(or (not x2418) (not x1276) (not x1109))
+(or (not x2421) x2420)
+(or (not x2419) (not x1276) (not x1108) x55)
+(or (not x2420) x2421)
+(or (not x1276) (not x1108) (not x55) x2419)
+(or (not x2417) (not x2414))
+(or (not x2418) (not x1276) (not x1108))
+(or (not x2417) x2416 x2414)
+(or (not x2419) (not x1276) (not x1105))
+(or (not x2414) x2417 x2416)
+(or (not x1276) (not x1105) x2418)
+(or (not x2416) x2417 x2414)
+(or (not x2365) (not x69) (not x9) x2413)
+(or (not x2415) (not x2411))
+(or (not x2413) (not x2378) (not x2366) x2401 x2391)
+(or (not x2415) x2414 x2411)
+(or (not x2413) (not x2366) x2380 x2378)
+(or (not x2411) x2415 x2414)
+(or (not x2413) x2367 x2366)
+(or (not x2414) x2415 x2411)
+(or (not x2391) (not x2378) (not x2366) x2413)
+(or (not x2412) (not x2409))
+(or (not x2401) (not x2378) (not x2366) x2413)
+(or (not x2412) x2411 x2409)
+(or (not x2380) (not x2366) x2413)
+(or (not x2409) x2412 x2411)
+(or (not x2367) x2413)
+(or (not x2411) x2412 x2409)
+(or (not x2401) (not x2391))
+(or (not x2410) (not x2408))
+(or (not x1334) x2401 x1090 x2268)
+(or (not x2410) x2409 x2408)
+(or (not x2401) (not x1334) (not x2268) x1090)
+(or (not x2408) x2410 x2409)
+(or (not x2401) (not x1090) x1334 x2268)
+(or (not x2409) x2410 x2408)
+(or (not x1090) (not x2268) x2401 x1334)
+(or (not x1332) x2401 x1089 x2268)
+(or (not x2401) (not x1332) (not x2268) x1089)
+(or (not x2406) x2408)
+(or (not x2401) (not x1089) x1332 x2268)
+(or (not x2408) x2406)
+(or (not x1089) (not x2268) x2401 x1332)
+(or (not x2407) x2406)
+(or (not x1331) x2401 x1087 x2268)
+(or (not x2406) x2407)
+(or (not x2401) (not x1331) (not x2268) x1087)
+(or (not x2405) (not x2402))
+(or (not x2401) (not x1087) x1331 x2268)
+(or (not x2405) x2404 x2402)
+(or (not x1087) (not x2268) x2401 x1331)
+(or (not x2402) x2405 x2404)
+(or (not x1329) x2401 x1085 x2268)
+(or (not x2404) x2405 x2402)
+(or (not x2401) (not x1329) (not x2268) x1085)
+(or (not x2403) (not x2399))
+(or (not x2401) (not x1085) x1329 x2268)
+(or (not x2403) x2402 x2399)
+(or (not x1085) (not x2268) x2401 x1329)
+(or (not x2399) x2403 x2402)
+(or (not x1328) x2401 x1084 x2268)
+(or (not x2402) x2403 x2399)
+(or (not x2401) (not x1328) (not x2268) x1084)
+(or (not x2400) (not x2397))
+(or (not x2401) (not x1084) x1328 x2268)
+(or (not x2400) x2399 x2397)
+(or (not x1084) (not x2268) x2401 x1328)
+(or (not x2397) x2400 x2399)
+(or (not x1332) (not x1089) x2391 x1334 x1090)
+(or (not x2399) x2400 x2397)
+(or (not x1331) (not x1087) x2391 x1332 x1089)
+(or (not x2398) (not x2396))
+(or (not x1329) (not x1085) x2391 x1331 x1087)
+(or (not x2398) x2397 x2396)
+(or (not x1328) (not x1084) x2391 x1329 x1085)
+(or (not x2396) x2398 x2397)
+(or x2391 x1328 x1084)
+(or (not x2397) x2398 x2396)
+(or (not x1334) (not x1090) x2391)
+(or (not x2391) (not x1090) x1334)
+(or (not x2391) (not x1334) x1090)
+(or (not x2394) x2396)
+(or (not x2391) (not x1089) x1332)
+(or (not x2396) x2394)
+(or (not x2391) (not x1332) x1089)
+(or (not x2395) x2394)
+(or (not x2391) (not x1087) x1331)
+(or (not x2394) x2395)
+(or (not x2391) (not x1331) x1087)
+(or (not x2393) (not x2389))
+(or (not x2391) (not x1085) x1329)
+(or (not x2393) x2392 x2389)
+(or (not x2391) (not x1329) x1085)
+(or (not x2389) x2393 x2392)
+(or (not x2391) (not x1084) x1328)
+(or (not x2392) x2393 x2389)
+(or (not x2391) (not x1328) x1084)
+(or (not x2390) (not x2387))
+(or (not x52) x2380 x2375 x1073)
+(or (not x2390) x2389 x2387)
+(or (not x2380) (not x1073) (not x52) x2375)
+(or (not x2387) x2390 x2389)
+(or (not x2380) x2375 x1073 x52)
+(or (not x2389) x2390 x2387)
+(or (not x1073) x2380 x2375 x52)
+(or (not x2388) (not x2385))
+(or (not x2375) (not x50) x2380 x2372 x1072)
+(or (not x2388) x2387 x2385)
+(or (not x2380) (not x2375) (not x1072) (not x50) x2372)
+(or (not x2385) x2388 x2387)
+(or (not x2380) (not x2375) x2372 x1072 x50)
+(or (not x2387) x2388 x2385)
+(or (not x2375) (not x1072) x2380 x2372 x50)
+(or (not x2386) (not x2384))
+(or (not x2372) (not x48) x2380 x2371 x1069)
+(or (not x2386) x2385 x2384)
+(or (not x2380) (not x2372) (not x1069) (not x48) x2371)
+(or (not x2384) x2386 x2385)
+(or (not x2380) (not x2372) x2371 x1069 x48)
+(or (not x2385) x2386 x2384)
+(or (not x2372) (not x1069) x2380 x2371 x48)
+(or (not x2371) (not x46) x2380 x2370 x1066)
+(or (not x2380) (not x2371) (not x1066) (not x46) x2370)
+(or (not x2382) x2384)
+(or (not x2380) (not x2371) x2370 x1066 x46)
+(or (not x2384) x2382)
+(or (not x2371) (not x1066) x2380 x2370 x46)
+(or (not x2383) x2382)
+(or (not x2370) (not x44) x2380 x2369 x1062)
+(or (not x2382) x2383)
+(or (not x2380) (not x2370) (not x1062) (not x44) x2369)
+(or (not x902) (not x2379))
+(or (not x2380) (not x2370) x2369 x1062 x44)
+(or (not x902) x2381 x2379)
+(or (not x2370) (not x1062) x2380 x2369 x44)
+(or (not x2379) x902 x2381)
+(or (not x2369) (not x149) x2380 x2368 x1059)
+(or (not x2381) x902 x2379)
+(or (not x2380) (not x2369) (not x1059) (not x149) x2368)
+(or (not x900) (not x2377))
+(or (not x2380) (not x2369) x2368 x1059 x149)
+(or (not x900) x2379 x2377)
+(or (not x2369) (not x1059) x2380 x2368 x149)
+(or (not x2377) x900 x2379)
+(or (not x2380) (not x2378))
+(or (not x2379) x900 x2377)
+(or (not x2368) x2378)
+(or (not x895) (not x2376))
+(or (not x2378) x2368)
+(or (not x895) x2377 x2376)
+(or x2375 x1318 x1073)
+(or (not x2376) x895 x2377)
+(or (not x1318) (not x1073) x2375)
+(or (not x2377) x895 x2376)
+(or (not x2375) (not x1073) x1318)
+(or (not x889) (not x2374))
+(or (not x2375) (not x1318) x1073)
+(or (not x889) x2376 x2374)
+(or (not x2375) x2372 x1316 x1072)
+(or (not x2374) x889 x2376)
+(or (not x2375) (not x1316) (not x1072) x2372)
+(or (not x2376) x889 x2374)
+(or (not x2372) (not x1072) x1316)
+(or (not x2372) (not x1316) x1072)
+(or (not x2372) x2375)
+(or (not x2373) x2374)
+(or (not x2372) x2371 x1312 x1069)
+(or (not x2374) x2373)
+(or (not x2372) (not x1312) (not x1069) x2371)
+(or (not x883) x2373)
+(or (not x2371) (not x1069) x1312)
+(or (not x2373) x883)
+(or (not x2371) (not x1312) x1069)
+(or (not x2371) x2372)
+(or (not x2371) x2370 x1308 x1066)
+(or (not x2371) (not x1308) (not x1066) x2370)
+(or (not x2370) (not x1066) x1308)
+(or (not x2370) (not x1308) x1066)
+(or (not x2370) x2371)
+(or (not x2370) x2369 x1303 x1062)
+(or (not x2349) (not x2338) (not x83))
+(or (not x2370) (not x1303) (not x1062) x2369)
+(or (not x2349) (not x2338))
+(or (not x2369) (not x1062) x1303)
+(or (not x2349) (not x2336) (not x80))
+(or (not x2369) (not x1303) x1062)
+(or (not x2349) (not x2336) x609)
+(or (not x2369) x2370)
+(or (not x2349) (not x2334) (not x78))
+(or (not x2369) x2368 x1300 x1059)
+(or (not x2349) (not x2334) x602)
+(or (not x2369) (not x1300) (not x1059) x2368)
+(or (not x2349) (not x2332) (not x75))
+(or (not x2368) (not x1059) x1300)
+(or (not x2349) (not x2332) x594)
+(or (not x2368) (not x1300) x1059)
+(or (not x2349) (not x2328) (not x71))
+(or (not x2368) x2369)
+(or (not x2349) (not x2328) x586)
+(or (not x2367) (not x1284) (not x1045))
+(or (not x2349) x2338 x2336 x2334 x2332 x2328)
+(or (not x1284) (not x1045) x2366)
+(or (not x2349) (not x2338))
+(or (not x2367) (not x1284) (not x1043) x95)
+(or (not x2349) (not x2326))
+(or (not x1284) (not x1043) (not x95) x2367)
+(or (not x2349) (not x2312))
+(or (not x2366) (not x1284) (not x1043))
+(or (not x2349) (not x682))
+(or (not x2367) (not x1284) (not x1042) x94)
+(or (not x2338) (not x2326) (not x83))
+(or (not x1284) (not x1042) (not x94) x2367)
+(or (not x2338) (not x2326))
+(or (not x2366) (not x1284) (not x1042))
+(or (not x2338) (not x2323) (not x80))
+(or (not x2367) (not x1284) (not x1040) x92)
+(or (not x2338) (not x2323) x609)
+(or (not x1284) (not x1040) (not x92) x2367)
+(or (not x2338) (not x2320) (not x78))
+(or (not x2366) (not x1284) (not x1040))
+(or (not x2338) (not x2320) x602)
+(or (not x2367) (not x1284) (not x1037) x91)
+(or (not x2338) (not x2318) (not x75))
+(or (not x1284) (not x1037) (not x91) x2367)
+(or (not x2338) (not x2318) x594)
+(or (not x2366) (not x1284) (not x1037))
+(or (not x2338) (not x2315) (not x71))
+(or (not x2367) (not x1283) (not x1045) x89)
+(or (not x2338) (not x2315) x586)
+(or (not x1283) (not x1045) (not x89) x2367)
+(or (not x2338) x2326 x2323 x2320 x2318 x2315)
+(or (not x2366) (not x1283) (not x1045))
+(or (not x2338) (not x2326))
+(or (not x2367) (not x1283) (not x1043))
+(or (not x2338) (not x2312))
+(or (not x1283) (not x1043) x2366)
+(or (not x2338) (not x682))
+(or (not x2367) (not x1283) (not x1042) x88)
+(or (not x2326) (not x2312) (not x83))
+(or (not x1283) (not x1042) (not x88) x2367)
+(or (not x2326) (not x2312))
+(or (not x2366) (not x1283) (not x1042))
+(or (not x2326) (not x2308) (not x80))
+(or (not x2367) (not x1283) (not x1040) x87)
+(or (not x2326) (not x2308) x609)
+(or (not x1283) (not x1040) (not x87) x2367)
+(or (not x2326) (not x2306) (not x78))
+(or (not x2366) (not x1283) (not x1040))
+(or (not x2326) (not x2306) x602)
+(or (not x2367) (not x1283) (not x1037) x86)
+(or (not x2326) (not x2304) (not x75))
+(or (not x1283) (not x1037) (not x86) x2367)
+(or (not x2326) (not x2304) x594)
+(or (not x2366) (not x1283) (not x1037))
+(or (not x2326) (not x2302) (not x71))
+(or (not x2367) (not x1281) (not x1045) x82)
+(or (not x2326) (not x2302) x586)
+(or (not x1281) (not x1045) (not x82) x2367)
+(or (not x2326) x2312 x2308 x2306 x2304 x2302)
+(or (not x2366) (not x1281) (not x1045))
+(or (not x2326) (not x2312))
+(or (not x2367) (not x1281) (not x1043) x81)
+(or (not x2326) (not x682))
+(or (not x1281) (not x1043) (not x81) x2367)
+(or (not x2312) (not x682) (not x83))
+(or (not x2366) (not x1281) (not x1043))
+(or (not x2312) (not x682))
+(or (not x2367) (not x1281) (not x1042))
+(or (not x2312) (not x287) (not x80))
+(or (not x1281) (not x1042) x2366)
+(or (not x2312) (not x287) x609)
+(or (not x2367) (not x1281) (not x1040) x79)
+(or (not x2312) (not x68) (not x78))
+(or (not x1281) (not x1040) (not x79) x2367)
+(or (not x2312) (not x68) x602)
+(or (not x2366) (not x1281) (not x1040))
+(or (not x2312) (not x2297) (not x75))
+(or (not x2367) (not x1281) (not x1037) x77)
+(or (not x2312) (not x2297) x594)
+(or (not x1281) (not x1037) (not x77) x2367)
+(or (not x2312) (not x2295) (not x71))
+(or (not x2366) (not x1281) (not x1037))
+(or (not x2312) (not x2295) x586)
+(or (not x2367) (not x1279) (not x1045) x73)
+(or (not x2312) x682 x287 x68 x2297 x2295)
+(or (not x1279) (not x1045) (not x73) x2367)
+(or (not x2312) (not x682))
+(or (not x2366) (not x1279) (not x1045))
+(or (not x682) x581)
+(or (not x2367) (not x1279) (not x1043) x67)
+(or (not x83) x2349 x2338 x2326 x2312 x682)
+(or (not x1279) (not x1043) (not x67) x2367)
+(or (not x2347) (not x2338) (not x83))
+(or (not x2366) (not x1279) (not x1043))
+(or (not x2347) (not x2338) x615)
+(or (not x2367) (not x1279) (not x1042) x66)
+(or (not x2347) (not x2336) (not x80))
+(or (not x1279) (not x1042) (not x66) x2367)
+(or (not x2347) (not x2336))
+(or (not x2366) (not x1279) (not x1042))
+(or (not x2347) (not x2334) (not x78))
+(or (not x2367) (not x1279) (not x1040))
+(or (not x2347) (not x2334) x601)
+(or (not x1279) (not x1040) x2366)
+(or (not x2347) (not x2332) (not x75))
+(or (not x2367) (not x1279) (not x1037) x65)
+(or (not x2347) (not x2332) x592)
+(or (not x1279) (not x1037) (not x65) x2367)
+(or (not x2347) (not x2328) (not x71))
+(or (not x2366) (not x1279) (not x1037))
+(or (not x2347) (not x2328) x585)
+(or (not x2367) (not x1276) (not x1045) x58)
+(or (not x2347) x2338 x2336 x2334 x2332 x2328)
+(or (not x1276) (not x1045) (not x58) x2367)
+(or (not x2347) (not x2336))
+(or (not x2366) (not x1276) (not x1045))
+(or (not x2347) (not x2323))
+(or (not x2367) (not x1276) (not x1043) x57)
+(or (not x2347) (not x2308))
+(or (not x1276) (not x1043) (not x57) x2367)
+(or (not x2347) (not x287))
+(or (not x2366) (not x1276) (not x1043))
+(or (not x2336) (not x2326) (not x83))
+(or (not x2367) (not x1276) (not x1042) x56)
+(or (not x2336) (not x2326) x615)
+(or (not x1276) (not x1042) (not x56) x2367)
+(or (not x2336) (not x2323) (not x80))
+(or (not x2366) (not x1276) (not x1042))
+(or (not x2336) (not x2323))
+(or (not x2367) (not x1276) (not x1040) x55)
+(or (not x2336) (not x2320) (not x78))
+(or (not x1276) (not x1040) (not x55) x2367)
+(or (not x2336) (not x2320) x601)
+(or (not x2366) (not x1276) (not x1040))
+(or (not x2336) (not x2318) (not x75))
+(or (not x2367) (not x1276) (not x1037))
+(or (not x2336) (not x2318) x592)
+(or (not x1276) (not x1037) x2366)
+(or (not x2336) (not x2315) (not x71))
+(or (not x2365) (not x69) (not x10) x2364)
+(or (not x2336) (not x2315) x585)
+(or (not x2364) (not x2360) (not x2352) x2363 x2362)
+(or (not x2336) x2326 x2323 x2320 x2318 x2315)
+(or (not x2364) (not x2352) x2361 x2360)
+(or (not x2336) (not x2323))
+(or (not x2364) x2353 x2352)
+(or (not x2336) (not x2308))
+(or (not x2362) (not x2360) (not x2352) x2364)
+(or (not x2336) (not x287))
+(or (not x2363) (not x2360) (not x2352) x2364)
+(or (not x2323) (not x2312) (not x83))
+(or (not x2361) (not x2352) x2364)
+(or (not x2323) (not x2312) x615)
+(or (not x2353) x2364)
+(or (not x2323) (not x2308) (not x80))
+(or (not x2363) (not x2362))
+(or (not x2323) (not x2308))
+(or (not x1334) x2363 x1021 x2268)
+(or (not x2323) (not x2306) (not x78))
+(or (not x2363) (not x1334) (not x2268) x1021)
+(or (not x2323) (not x2306) x601)
+(or (not x2363) (not x1021) x1334 x2268)
+(or (not x2323) (not x2304) (not x75))
+(or (not x1021) (not x2268) x2363 x1334)
+(or (not x2323) (not x2304) x592)
+(or (not x1332) x2363 x1019 x2268)
+(or (not x2323) (not x2302) (not x71))
+(or (not x2363) (not x1332) (not x2268) x1019)
+(or (not x2323) (not x2302) x585)
+(or (not x2363) (not x1019) x1332 x2268)
+(or (not x2323) x2312 x2308 x2306 x2304 x2302)
+(or (not x1019) (not x2268) x2363 x1332)
+(or (not x2323) (not x2308))
+(or (not x1331) x2363 x1017 x2268)
+(or (not x2323) (not x287))
+(or (not x2363) (not x1331) (not x2268) x1017)
+(or (not x2308) (not x682) (not x83))
+(or (not x2363) (not x1017) x1331 x2268)
+(or (not x2308) (not x682) x615)
+(or (not x1017) (not x2268) x2363 x1331)
+(or (not x2308) (not x287) (not x80))
+(or (not x1329) x2363 x1015 x2268)
+(or (not x2308) (not x287))
+(or (not x2363) (not x1329) (not x2268) x1015)
+(or (not x2308) (not x68) (not x78))
+(or (not x2363) (not x1015) x1329 x2268)
+(or (not x2308) (not x68) x601)
+(or (not x1015) (not x2268) x2363 x1329)
+(or (not x2308) (not x2297) (not x75))
+(or (not x1328) x2363 x1012 x2268)
+(or (not x2308) (not x2297) x592)
+(or (not x2363) (not x1328) (not x2268) x1012)
+(or (not x2308) (not x2295) (not x71))
+(or (not x2363) (not x1012) x1328 x2268)
+(or (not x2308) (not x2295) x585)
+(or (not x1012) (not x2268) x2363 x1328)
+(or (not x2308) x682 x287 x68 x2297 x2295)
+(or (not x1332) (not x1019) x2362 x1334 x1021)
+(or (not x2308) (not x287))
+(or (not x1331) (not x1017) x2362 x1332 x1019)
+(or (not x287) x580)
+(or (not x1329) (not x1015) x2362 x1331 x1017)
+(or (not x80) x2347 x2336 x2323 x2308 x287)
+(or (not x1328) (not x1012) x2362 x1329 x1015)
+(or (not x2345) (not x2338) (not x83))
+(or x2362 x1328 x1012)
+(or (not x2345) (not x2338) x614)
+(or (not x1334) (not x1021) x2362)
+(or (not x2345) (not x2336) (not x80))
+(or (not x2362) (not x1021) x1334)
+(or (not x2345) (not x2336) x608)
+(or (not x2362) (not x1334) x1021)
+(or (not x2345) (not x2334) (not x78))
+(or (not x2362) (not x1019) x1332)
+(or (not x2345) (not x2334))
+(or (not x2362) (not x1332) x1019)
+(or (not x2345) (not x2332) (not x75))
+(or (not x2362) (not x1017) x1331)
+(or (not x2345) (not x2332) x589)
+(or (not x2362) (not x1331) x1017)
+(or (not x2345) (not x2328) (not x71))
+(or (not x2362) (not x1015) x1329)
+(or (not x2345) (not x2328) x584)
+(or (not x2362) (not x1329) x1015)
+(or (not x2345) x2338 x2336 x2334 x2332 x2328)
+(or (not x2362) (not x1012) x1328)
+(or (not x2345) (not x2334))
+(or (not x2362) (not x1328) x1012)
+(or (not x2345) (not x2320))
+(or (not x52) x2361 x2359 x1000)
+(or (not x2345) (not x2306))
+(or (not x2361) (not x1000) (not x52) x2359)
+(or (not x2345) (not x68))
+(or (not x2361) x2359 x1000 x52)
+(or (not x2334) (not x2326) (not x83))
+(or (not x1000) x2361 x2359 x52)
+(or (not x2334) (not x2326) x614)
+(or (not x2359) (not x50) x2361 x2358 x997)
+(or (not x2334) (not x2323) (not x80))
+(or (not x2361) (not x2359) (not x997) (not x50) x2358)
+(or (not x2334) (not x2323) x608)
+(or (not x2361) (not x2359) x2358 x997 x50)
+(or (not x2334) (not x2320) (not x78))
+(or (not x2359) (not x997) x2361 x2358 x50)
+(or (not x2334) (not x2320))
+(or (not x2358) (not x48) x2361 x2357 x993)
+(or (not x2334) (not x2318) (not x75))
+(or (not x2361) (not x2358) (not x993) (not x48) x2357)
+(or (not x2334) (not x2318) x589)
+(or (not x2361) (not x2358) x2357 x993 x48)
+(or (not x2334) (not x2315) (not x71))
+(or (not x2358) (not x993) x2361 x2357 x48)
+(or (not x2334) (not x2315) x584)
+(or (not x2357) (not x46) x2361 x2356 x989)
+(or (not x2334) x2326 x2323 x2320 x2318 x2315)
+(or (not x2361) (not x2357) (not x989) (not x46) x2356)
+(or (not x2334) (not x2320))
+(or (not x2361) (not x2357) x2356 x989 x46)
+(or (not x2334) (not x2306))
+(or (not x2357) (not x989) x2361 x2356 x46)
+(or (not x2334) (not x68))
+(or (not x2356) (not x44) x2361 x2355 x986)
+(or (not x2320) (not x2312) (not x83))
+(or (not x2361) (not x2356) (not x986) (not x44) x2355)
+(or (not x2320) (not x2312) x614)
+(or (not x2361) (not x2356) x2355 x986 x44)
+(or (not x2320) (not x2308) (not x80))
+(or (not x2356) (not x986) x2361 x2355 x44)
+(or (not x2320) (not x2308) x608)
+(or (not x2355) (not x149) x2361 x2354 x981)
+(or (not x2320) (not x2306) (not x78))
+(or (not x2361) (not x2355) (not x981) (not x149) x2354)
+(or (not x2320) (not x2306))
+(or (not x2361) (not x2355) x2354 x981 x149)
+(or (not x2320) (not x2304) (not x75))
+(or (not x2355) (not x981) x2361 x2354 x149)
+(or (not x2320) (not x2304) x589)
+(or (not x2361) (not x2360))
+(or (not x2320) (not x2302) (not x71))
+(or (not x2354) x2360)
+(or (not x2320) (not x2302) x584)
+(or (not x2360) x2354)
+(or (not x2320) x2312 x2308 x2306 x2304 x2302)
+(or x2359 x1318 x1000)
+(or (not x2320) (not x2306))
+(or (not x1318) (not x1000) x2359)
+(or (not x2320) (not x68))
+(or (not x2359) (not x1000) x1318)
+(or (not x2306) (not x682) (not x83))
+(or (not x2359) (not x1318) x1000)
+(or (not x2306) (not x682) x614)
+(or (not x2359) x2358 x1316 x997)
+(or (not x2306) (not x287) (not x80))
+(or (not x2359) (not x1316) (not x997) x2358)
+(or (not x2306) (not x287) x608)
+(or (not x2358) (not x997) x1316)
+(or (not x2306) (not x68) (not x78))
+(or (not x2358) (not x1316) x997)
+(or (not x2306) (not x68))
+(or (not x2358) x2359)
+(or (not x2306) (not x2297) (not x75))
+(or (not x2358) x2357 x1312 x993)
+(or (not x2306) (not x2297) x589)
+(or (not x2358) (not x1312) (not x993) x2357)
+(or (not x2306) (not x2295) (not x71))
+(or (not x2357) (not x993) x1312)
+(or (not x2306) (not x2295) x584)
+(or (not x2357) (not x1312) x993)
+(or (not x2306) x682 x287 x68 x2297 x2295)
+(or (not x2357) x2358)
+(or (not x2306) (not x68))
+(or (not x2357) x2356 x1308 x989)
+(or (not x68) x579)
+(or (not x2357) (not x1308) (not x989) x2356)
+(or (not x78) x2345 x2334 x2320 x2306 x68)
+(or (not x2356) (not x989) x1308)
+(or (not x2342) (not x2338) (not x83))
+(or (not x2356) (not x1308) x989)
+(or (not x2342) (not x2338) x613)
+(or (not x2356) x2357)
+(or (not x2342) (not x2336) (not x80))
+(or (not x2356) x2355 x1303 x986)
+(or (not x2342) (not x2336) x607)
+(or (not x2356) (not x1303) (not x986) x2355)
+(or (not x2342) (not x2334) (not x78))
+(or (not x2355) (not x986) x1303)
+(or (not x2342) (not x2334) x599)
+(or (not x2355) (not x1303) x986)
+(or (not x2342) (not x2332) (not x75))
+(or (not x2355) x2356)
+(or (not x2342) (not x2332))
+(or (not x2355) x2354 x1300 x981)
+(or (not x2342) (not x2328) (not x71))
+(or (not x2355) (not x1300) (not x981) x2354)
+(or (not x2342) (not x2328) x583)
+(or (not x2354) (not x981) x1300)
+(or (not x2342) x2338 x2336 x2334 x2332 x2328)
+(or (not x2354) (not x1300) x981)
+(or (not x2342) (not x2332))
+(or (not x2354) x2355)
+(or (not x2342) (not x2318))
+(or (not x2353) (not x1284) (not x959))
+(or (not x2342) (not x2304))
+(or (not x1284) (not x959) x2352)
+(or (not x2342) (not x2297))
+(or (not x2353) (not x1284) (not x957) x95)
+(or (not x2332) (not x2326) (not x83))
+(or (not x1284) (not x957) (not x95) x2353)
+(or (not x2332) (not x2326) x613)
+(or (not x2352) (not x1284) (not x957))
+(or (not x2332) (not x2323) (not x80))
+(or (not x2353) (not x1284) (not x956) x94)
+(or (not x2332) (not x2323) x607)
+(or (not x1284) (not x956) (not x94) x2353)
+(or (not x2332) (not x2320) (not x78))
+(or (not x2352) (not x1284) (not x956))
+(or (not x2332) (not x2320) x599)
+(or (not x2353) (not x1284) (not x954) x92)
+(or (not x2332) (not x2318) (not x75))
+(or (not x1284) (not x954) (not x92) x2353)
+(or (not x2332) (not x2318))
+(or (not x2352) (not x1284) (not x954))
+(or (not x2332) (not x2315) (not x71))
+(or (not x2353) (not x1284) (not x948) x91)
+(or (not x2332) (not x2315) x583)
+(or (not x1284) (not x948) (not x91) x2353)
+(or (not x2332) x2326 x2323 x2320 x2318 x2315)
+(or (not x2352) (not x1284) (not x948))
+(or (not x2332) (not x2318))
+(or (not x2353) (not x1283) (not x959) x89)
+(or (not x2332) (not x2304))
+(or (not x1283) (not x959) (not x89) x2353)
+(or (not x2332) (not x2297))
+(or (not x2352) (not x1283) (not x959))
+(or (not x2318) (not x2312) (not x83))
+(or (not x2353) (not x1283) (not x957))
+(or (not x2318) (not x2312) x613)
+(or (not x1283) (not x957) x2352)
+(or (not x2318) (not x2308) (not x80))
+(or (not x2353) (not x1283) (not x956) x88)
+(or (not x2318) (not x2308) x607)
+(or (not x1283) (not x956) (not x88) x2353)
+(or (not x2318) (not x2306) (not x78))
+(or (not x2352) (not x1283) (not x956))
+(or (not x2318) (not x2306) x599)
+(or (not x2353) (not x1283) (not x954) x87)
+(or (not x2318) (not x2304) (not x75))
+(or (not x1283) (not x954) (not x87) x2353)
+(or (not x2318) (not x2304))
+(or (not x2352) (not x1283) (not x954))
+(or (not x2318) (not x2302) (not x71))
+(or (not x2353) (not x1283) (not x948) x86)
+(or (not x2318) (not x2302) x583)
+(or (not x1283) (not x948) (not x86) x2353)
+(or (not x2318) x2312 x2308 x2306 x2304 x2302)
+(or (not x2352) (not x1283) (not x948))
+(or (not x2318) (not x2304))
+(or (not x2353) (not x1281) (not x959) x82)
+(or (not x2318) (not x2297))
+(or (not x1281) (not x959) (not x82) x2353)
+(or (not x2304) (not x682) (not x83))
+(or (not x2352) (not x1281) (not x959))
+(or (not x2304) (not x682) x613)
+(or (not x2353) (not x1281) (not x957) x81)
+(or (not x2304) (not x287) (not x80))
+(or (not x1281) (not x957) (not x81) x2353)
+(or (not x2304) (not x287) x607)
+(or (not x2352) (not x1281) (not x957))
+(or (not x2304) (not x68) (not x78))
+(or (not x2353) (not x1281) (not x956))
+(or (not x2304) (not x68) x599)
+(or (not x1281) (not x956) x2352)
+(or (not x2304) (not x2297) (not x75))
+(or (not x2353) (not x1281) (not x954) x79)
+(or (not x2304) (not x2297))
+(or (not x1281) (not x954) (not x79) x2353)
+(or (not x2304) (not x2295) (not x71))
+(or (not x2352) (not x1281) (not x954))
+(or (not x2304) (not x2295) x583)
+(or (not x2353) (not x1281) (not x948) x77)
+(or (not x2304) x682 x287 x68 x2297 x2295)
+(or (not x1281) (not x948) (not x77) x2353)
+(or (not x2304) (not x2297))
+(or (not x2352) (not x1281) (not x948))
+(or (not x2297) x578)
+(or (not x2353) (not x1279) (not x959) x73)
+(or (not x75) x2342 x2332 x2318 x2304 x2297)
+(or (not x1279) (not x959) (not x73) x2353)
+(or (not x2340) (not x2338) (not x83))
+(or (not x2352) (not x1279) (not x959))
+(or (not x2340) (not x2338) x611)
+(or (not x2353) (not x1279) (not x957) x67)
+(or (not x2340) (not x2336) (not x80))
+(or (not x1279) (not x957) (not x67) x2353)
+(or (not x2340) (not x2336) x606)
+(or (not x2352) (not x1279) (not x957))
+(or (not x2340) (not x2334) (not x78))
+(or (not x2353) (not x1279) (not x956) x66)
+(or (not x2340) (not x2334) x598)
+(or (not x1279) (not x956) (not x66) x2353)
+(or (not x2340) (not x2332) (not x75))
+(or (not x2352) (not x1279) (not x956))
+(or (not x2340) (not x2332) x588)
+(or (not x2353) (not x1279) (not x954))
+(or (not x2340) (not x2328) (not x71))
+(or (not x1279) (not x954) x2352)
+(or (not x2340) (not x2328))
+(or (not x2353) (not x1279) (not x948) x65)
+(or (not x2340) x2338 x2336 x2334 x2332 x2328)
+(or (not x1279) (not x948) (not x65) x2353)
+(or (not x2340) (not x2328))
+(or (not x2352) (not x1279) (not x948))
+(or (not x2340) (not x2315))
+(or (not x2353) (not x1276) (not x959) x58)
+(or (not x2340) (not x2302))
+(or (not x1276) (not x959) (not x58) x2353)
+(or (not x2340) (not x2295))
+(or (not x2352) (not x1276) (not x959))
+(or (not x2328) (not x2326) (not x83))
+(or (not x2353) (not x1276) (not x957) x57)
+(or (not x2328) (not x2326) x611)
+(or (not x1276) (not x957) (not x57) x2353)
+(or (not x2328) (not x2323) (not x80))
+(or (not x2352) (not x1276) (not x957))
+(or (not x2328) (not x2323) x606)
+(or (not x2353) (not x1276) (not x956) x56)
+(or (not x2328) (not x2320) (not x78))
+(or (not x1276) (not x956) (not x56) x2353)
+(or (not x2328) (not x2320) x598)
+(or (not x2352) (not x1276) (not x956))
+(or (not x2328) (not x2318) (not x75))
+(or (not x2353) (not x1276) (not x954) x55)
+(or (not x2328) (not x2318) x588)
+(or (not x1276) (not x954) (not x55) x2353)
+(or (not x2328) (not x2315) (not x71))
+(or (not x2352) (not x1276) (not x954))
+(or (not x2328) (not x2315))
+(or (not x2353) (not x1276) (not x948))
+(or (not x2328) x2326 x2323 x2320 x2318 x2315)
+(or (not x1276) (not x948) x2352)
+(or (not x2328) (not x2315))
+(or (not x2351) (not x2329) (not x2290) x2350 x2343)
+(or (not x2328) (not x2302))
+(or (not x2351) (not x2290) x2330 x2329)
+(or (not x2328) (not x2295))
+(or (not x2351) x2291 x2290)
+(or (not x2315) (not x2312) (not x83))
+(or (not x2343) (not x2329) (not x2290) x2351)
+(or (not x2315) (not x2312) x611)
+(or (not x2350) (not x2329) (not x2290) x2351)
+(or (not x2315) (not x2308) (not x80))
+(or (not x2330) (not x2290) x2351)
+(or (not x2315) (not x2308) x606)
+(or (not x2291) x2351)
+(or (not x2315) (not x2306) (not x78))
+(or (not x2350) (not x2343))
+(or (not x2315) (not x2306) x598)
+(or (not x1334) x2350 x1020 x2268)
+(or (not x2315) (not x2304) (not x75))
+(or (not x2350) (not x1334) (not x2268) x1020)
+(or (not x2315) (not x2304) x588)
+(or (not x2350) (not x1020) x1334 x2268)
+(or (not x2315) (not x2302) (not x71))
+(or (not x1020) (not x2268) x2350 x1334)
+(or (not x2315) (not x2302))
+(or (not x1332) x2350 x1018 x2268)
+(or (not x2315) x2312 x2308 x2306 x2304 x2302)
+(or (not x2350) (not x1332) (not x2268) x1018)
+(or (not x2315) (not x2302))
+(or (not x2350) (not x1018) x1332 x2268)
+(or (not x2315) (not x2295))
+(or (not x1018) (not x2268) x2350 x1332)
+(or (not x2302) (not x682) (not x83))
+(or (not x1331) x2350 x1016 x2268)
+(or (not x2302) (not x682) x611)
+(or (not x2350) (not x1331) (not x2268) x1016)
+(or (not x2302) (not x287) (not x80))
+(or (not x2350) (not x1016) x1331 x2268)
+(or (not x2302) (not x287) x606)
+(or (not x1016) (not x2268) x2350 x1331)
+(or (not x2302) (not x68) (not x78))
+(or (not x1329) x2350 x1014 x2268)
+(or (not x2302) (not x68) x598)
+(or (not x2350) (not x1329) (not x2268) x1014)
+(or (not x2302) (not x2297) (not x75))
+(or (not x2350) (not x1014) x1329 x2268)
+(or (not x2302) (not x2297) x588)
+(or (not x1014) (not x2268) x2350 x1329)
+(or (not x2302) (not x2295) (not x71))
+(or (not x1328) x2350 x1011 x2268)
+(or (not x2302) (not x2295))
+(or (not x2350) (not x1328) (not x2268) x1011)
+(or (not x2302) x682 x287 x68 x2297 x2295)
+(or (not x2350) (not x1011) x1328 x2268)
+(or (not x2302) (not x2295))
+(or (not x1011) (not x2268) x2350 x1328)
+(or (not x2295) x577)
+(or (not x1332) (not x1018) x2343 x1334 x1020)
+(or (not x71) x2340 x2328 x2315 x2302 x2295)
+(or (not x1331) (not x1016) x2343 x1332 x1018)
+(or (not x2349) (not x2346))
+(or (not x1329) (not x1014) x2343 x1331 x1016)
+(or (not x2349) x2348 x2346)
+(or (not x1328) (not x1011) x2343 x1329 x1014)
+(or (not x2346) x2349 x2348)
+(or x2343 x1328 x1011)
+(or (not x2348) x2349 x2346)
+(or (not x1334) (not x1020) x2343)
+(or (not x2347) (not x2344))
+(or (not x2343) (not x1020) x1334)
+(or (not x2347) x2346 x2344)
+(or (not x2343) (not x1334) x1020)
+(or (not x2344) x2347 x2346)
+(or (not x2343) (not x1018) x1332)
+(or (not x2346) x2347 x2344)
+(or (not x2343) (not x1332) x1018)
+(or (not x2345) (not x2341))
+(or (not x2343) (not x1016) x1331)
+(or (not x2345) x2344 x2341)
+(or (not x2343) (not x1331) x1016)
+(or (not x2341) x2345 x2344)
+(or (not x2343) (not x1014) x1329)
+(or (not x2344) x2345 x2341)
+(or (not x2343) (not x1329) x1014)
+(or (not x2342) (not x2339))
+(or (not x2343) (not x1011) x1328)
+(or (not x2342) x2341 x2339)
+(or (not x2343) (not x1328) x1011)
+(or (not x2339) x2342 x2341)
+(or (not x52) x2330 x2324 x999)
+(or (not x2341) x2342 x2339)
+(or (not x2330) (not x999) (not x52) x2324)
+(or (not x2330) x2324 x999 x52)
+(or (not x2340) x2339)
+(or (not x999) x2330 x2324 x52)
+(or (not x2324) (not x50) x2330 x2321 x996)
+(or (not x2339) x2340)
+(or (not x2330) (not x2324) (not x996) (not x50) x2321)
+(or (not x2330) (not x2324) x2321 x996 x50)
+(or (not x2324) (not x996) x2330 x2321 x50)
+(or (not x2338) (not x2335))
+(or (not x2321) (not x48) x2330 x2316 x992)
+(or (not x2338) x2337 x2335)
+(or (not x2330) (not x2321) (not x992) (not x48) x2316)
+(or (not x2335) x2338 x2337)
+(or (not x2330) (not x2321) x2316 x992 x48)
+(or (not x2337) x2338 x2335)
+(or (not x2321) (not x992) x2330 x2316 x48)
+(or (not x2336) (not x2333))
+(or (not x2316) (not x46) x2330 x2313 x988)
+(or (not x2336) x2335 x2333)
+(or (not x2330) (not x2316) (not x988) (not x46) x2313)
+(or (not x2333) x2336 x2335)
+(or (not x2330) (not x2316) x2313 x988 x46)
+(or (not x2335) x2336 x2333)
+(or (not x2316) (not x988) x2330 x2313 x46)
+(or (not x2334) (not x2331))
+(or (not x2313) (not x44) x2330 x2310 x985)
+(or (not x2334) x2333 x2331)
+(or (not x2330) (not x2313) (not x985) (not x44) x2310)
+(or (not x2331) x2334 x2333)
+(or (not x2330) (not x2313) x2310 x985 x44)
+(or (not x2333) x2334 x2331)
+(or (not x2313) (not x985) x2330 x2310 x44)
+(or (not x2332) (not x2327))
+(or (not x2310) (not x149) x2330 x2309 x980)
+(or (not x2332) x2331 x2327)
+(or (not x2330) (not x2310) (not x980) (not x149) x2309)
+(or (not x2327) x2332 x2331)
+(or (not x2330) (not x2310) x2309 x980 x149)
+(or (not x2331) x2332 x2327)
+(or (not x2310) (not x980) x2330 x2309 x149)
+(or (not x2330) (not x2329))
+(or (not x2328) x2327)
+(or (not x2309) x2329)
+(or (not x2329) x2309)
+(or (not x2327) x2328)
+(or x2324 x1318 x999)
+(or (not x1318) (not x999) x2324)
+(or (not x2324) (not x999) x1318)
+(or (not x2326) (not x2322))
+(or (not x2324) (not x1318) x999)
+(or (not x2326) x2325 x2322)
+(or (not x2324) x2321 x1316 x996)
+(or (not x2322) x2326 x2325)
+(or (not x2324) (not x1316) (not x996) x2321)
+(or (not x2325) x2326 x2322)
+(or (not x2321) (not x996) x1316)
+(or (not x2323) (not x2319))
+(or (not x2321) (not x1316) x996)
+(or (not x2323) x2322 x2319)
+(or (not x2321) x2324)
+(or (not x2319) x2323 x2322)
+(or (not x2321) x2316 x1312 x992)
+(or (not x2322) x2323 x2319)
+(or (not x2321) (not x1312) (not x992) x2316)
+(or (not x2320) (not x2317))
+(or (not x2316) (not x992) x1312)
+(or (not x2320) x2319 x2317)
+(or (not x2316) (not x1312) x992)
+(or (not x2317) x2320 x2319)
+(or (not x2316) x2321)
+(or (not x2319) x2320 x2317)
+(or (not x2316) x2313 x1308 x988)
+(or (not x2318) (not x2314))
+(or (not x2316) (not x1308) (not x988) x2313)
+(or (not x2318) x2317 x2314)
+(or (not x2313) (not x988) x1308)
+(or (not x2314) x2318 x2317)
+(or (not x2313) (not x1308) x988)
+(or (not x2317) x2318 x2314)
+(or (not x2313) x2316)
+(or (not x2313) x2310 x1303 x985)
+(or (not x2315) x2314)
+(or (not x2313) (not x1303) (not x985) x2310)
+(or (not x2310) (not x985) x1303)
+(or (not x2314) x2315)
+(or (not x2310) (not x1303) x985)
+(or (not x2310) x2313)
+(or (not x2310) x2309 x1300 x980)
+(or (not x2312) (not x2307))
+(or (not x2310) (not x1300) (not x980) x2309)
+(or (not x2312) x2311 x2307)
+(or (not x2309) (not x980) x1300)
+(or (not x2307) x2312 x2311)
+(or (not x2309) (not x1300) x980)
+(or (not x2311) x2312 x2307)
+(or (not x2309) x2310)
+(or (not x2308) (not x2305))
+(or (not x2291) (not x1284) (not x974))
+(or (not x2308) x2307 x2305)
+(or (not x1284) (not x974) x2290)
+(or (not x2305) x2308 x2307)
+(or (not x2291) (not x1284) (not x970) x95)
+(or (not x2307) x2308 x2305)
+(or (not x1284) (not x970) (not x95) x2291)
+(or (not x2306) (not x2303))
+(or (not x2290) (not x1284) (not x970))
+(or (not x2306) x2305 x2303)
+(or (not x2291) (not x1284) (not x967) x94)
+(or (not x2303) x2306 x2305)
+(or (not x1284) (not x967) (not x94) x2291)
+(or (not x2305) x2306 x2303)
+(or (not x2290) (not x1284) (not x967))
+(or (not x2304) (not x2301))
+(or (not x2291) (not x1284) (not x962) x92)
+(or (not x2304) x2303 x2301)
+(or (not x1284) (not x962) (not x92) x2291)
+(or (not x2301) x2304 x2303)
+(or (not x2290) (not x1284) (not x962))
+(or (not x2303) x2304 x2301)
+(or (not x2291) (not x1284) (not x949) x91)
+(or (not x1284) (not x949) (not x91) x2291)
+(or (not x2302) x2301)
+(or (not x2290) (not x1284) (not x949))
+(or (not x2291) (not x1283) (not x974) x89)
+(or (not x2301) x2302)
+(or (not x1283) (not x974) (not x89) x2291)
+(or (not x2290) (not x1283) (not x974))
+(or (not x2291) (not x1283) (not x970))
+(or (not x682) (not x2299))
+(or (not x1283) (not x970) x2290)
+(or (not x682) x2300 x2299)
+(or (not x2291) (not x1283) (not x967) x88)
+(or (not x2299) x682 x2300)
+(or (not x1283) (not x967) (not x88) x2291)
+(or (not x2300) x682 x2299)
+(or (not x2290) (not x1283) (not x967))
+(or (not x287) (not x2298))
+(or (not x2291) (not x1283) (not x962) x87)
+(or (not x287) x2299 x2298)
+(or (not x1283) (not x962) (not x87) x2291)
+(or (not x2298) x287 x2299)
+(or (not x2290) (not x1283) (not x962))
+(or (not x2299) x287 x2298)
+(or (not x2291) (not x1283) (not x949) x86)
+(or (not x68) (not x2296))
+(or (not x1283) (not x949) (not x86) x2291)
+(or (not x68) x2298 x2296)
+(or (not x2290) (not x1283) (not x949))
+(or (not x2296) x68 x2298)
+(or (not x2291) (not x1281) (not x974) x82)
+(or (not x2298) x68 x2296)
+(or (not x1281) (not x974) (not x82) x2291)
+(or (not x2297) (not x2294))
+(or (not x2290) (not x1281) (not x974))
+(or (not x2297) x2296 x2294)
+(or (not x2291) (not x1281) (not x970) x81)
+(or (not x2294) x2297 x2296)
+(or (not x1281) (not x970) (not x81) x2291)
+(or (not x2296) x2297 x2294)
+(or (not x2290) (not x1281) (not x970))
+(or (not x2291) (not x1281) (not x967))
+(or (not x2295) x2294)
+(or (not x1281) (not x967) x2290)
+(or (not x2291) (not x1281) (not x962) x79)
+(or (not x2294) x2295)
+(or (not x1281) (not x962) (not x79) x2291)
+(or (not x2290) (not x1281) (not x962))
+(or (not x2291) (not x1281) (not x949) x77)
+(or (not x1281) (not x949) (not x77) x2291)
+(or (not x2290) (not x1281) (not x949))
+(or (not x2291) (not x1279) (not x974) x73)
+(or (not x1279) (not x974) (not x73) x2291)
+(or (not x2290) (not x1279) (not x974))
+(or (not x2293) (not x2239) x52)
+(or (not x2291) (not x1279) (not x970) x67)
+(or (not x2239) (not x52) x2293)
+(or (not x1279) (not x970) (not x67) x2291)
+(or (not x2293) (not x2240) x50)
+(or (not x2290) (not x1279) (not x970))
+(or (not x2240) (not x50) x2293)
+(or (not x2291) (not x1279) (not x967) x66)
+(or (not x2293) (not x2241) x48)
+(or (not x1279) (not x967) (not x66) x2291)
+(or (not x2241) (not x48) x2293)
+(or (not x2290) (not x1279) (not x967))
+(or (not x2293) (not x2242) x46)
+(or (not x2291) (not x1279) (not x962))
+(or (not x2242) (not x46) x2293)
+(or (not x1279) (not x962) x2290)
+(or (not x2293) (not x2243) x44)
+(or (not x2291) (not x1279) (not x949) x65)
+(or (not x2243) (not x44) x2293)
+(or (not x1279) (not x949) (not x65) x2291)
+(or (not x2292) (not x2234) x52)
+(or (not x2290) (not x1279) (not x949))
+(or (not x2234) (not x52) x2292)
+(or (not x2291) (not x1276) (not x974) x58)
+(or (not x2292) (not x2235) x50)
+(or (not x1276) (not x974) (not x58) x2291)
+(or (not x2235) (not x50) x2292)
+(or (not x2290) (not x1276) (not x974))
+(or (not x2292) (not x2236) x48)
+(or (not x2291) (not x1276) (not x970) x57)
+(or (not x2236) (not x48) x2292)
+(or (not x1276) (not x970) (not x57) x2291)
+(or (not x2292) (not x2237) x46)
+(or (not x2290) (not x1276) (not x970))
+(or (not x2237) (not x46) x2292)
+(or (not x2291) (not x1276) (not x967) x56)
+(or (not x2292) (not x2238) x44)
+(or (not x1276) (not x967) (not x56) x2291)
+(or (not x2238) (not x44) x2292)
+(or (not x2290) (not x1276) (not x967))
+(or (not x2289) (not x2228) x52)
+(or (not x2291) (not x1276) (not x962) x55)
+(or (not x2228) (not x52) x2289)
+(or (not x1276) (not x962) (not x55) x2291)
+(or (not x2289) (not x2229) x50)
+(or (not x2290) (not x1276) (not x962))
+(or (not x2229) (not x50) x2289)
+(or (not x2291) (not x1276) (not x949))
+(or (not x2289) (not x2230) x48)
+(or (not x1276) (not x949) x2290)
+(or (not x2230) (not x48) x2289)
+(or (not x2206) (not x69) (not x6) x2288)
+(or (not x2289) (not x2231) x46)
+(or (not x2288) (not x2278) (not x2266) x2285 x2282)
+(or (not x2231) (not x46) x2289)
+(or (not x2288) (not x2266) x2279 x2278)
+(or (not x2289) (not x2232) x44)
+(or (not x2288) x2267 x2266)
+(or (not x2232) (not x44) x2289)
+(or (not x2282) (not x2278) (not x2266) x2288)
+(or (not x2287) (not x2223) x52)
+(or (not x2285) (not x2278) (not x2266) x2288)
+(or (not x2223) (not x52) x2287)
+(or (not x2279) (not x2266) x2288)
+(or (not x2287) (not x2224) x50)
+(or (not x2267) x2288)
+(or (not x2224) (not x50) x2287)
+(or (not x2285) (not x2282))
+(or (not x2287) (not x2225) x48)
+(or (not x1267) x2285 x1334 x2160)
+(or (not x2225) (not x48) x2287)
+(or (not x2285) (not x1267) (not x2160) x1334)
+(or (not x2287) (not x2226) x46)
+(or (not x2285) (not x1334) x1267 x2160)
+(or (not x2226) (not x46) x2287)
+(or (not x1334) (not x2160) x2285 x1267)
+(or (not x2287) (not x2227) x44)
+(or (not x1265) x2285 x1332 x2160)
+(or (not x2227) (not x44) x2287)
+(or (not x2285) (not x1265) (not x2160) x1332)
+(or (not x2286) (not x2217) x52)
+(or (not x2285) (not x1332) x1265 x2160)
+(or (not x2217) (not x52) x2286)
+(or (not x1332) (not x2160) x2285 x1265)
+(or (not x2286) (not x2218) x50)
+(or (not x1264) x2285 x1331 x2160)
+(or (not x2218) (not x50) x2286)
+(or (not x2285) (not x1264) (not x2160) x1331)
+(or (not x2286) (not x2219) x48)
+(or (not x2285) (not x1331) x1264 x2160)
+(or (not x2219) (not x48) x2286)
+(or (not x1331) (not x2160) x2285 x1264)
+(or (not x2286) (not x2220) x46)
+(or (not x1262) x2285 x1329 x2160)
+(or (not x2220) (not x46) x2286)
+(or (not x2285) (not x1262) (not x2160) x1329)
+(or (not x2286) (not x2221) x44)
+(or (not x2285) (not x1329) x1262 x2160)
+(or (not x2221) (not x44) x2286)
+(or (not x1329) (not x2160) x2285 x1262)
+(or (not x2284) (not x2212) x52)
+(or (not x1261) x2285 x1328 x2160)
+(or (not x2212) (not x52) x2284)
+(or (not x2285) (not x1261) (not x2160) x1328)
+(or (not x2284) (not x2213) x50)
+(or (not x2285) (not x1328) x1261 x2160)
+(or (not x2213) (not x50) x2284)
+(or (not x1328) (not x2160) x2285 x1261)
+(or (not x2284) (not x2214) x48)
+(or (not x1332) (not x1265) x2282 x1334 x1267)
+(or (not x2214) (not x48) x2284)
+(or (not x1331) (not x1264) x2282 x1332 x1265)
+(or (not x2284) (not x2215) x46)
+(or (not x1329) (not x1262) x2282 x1331 x1264)
+(or (not x2215) (not x46) x2284)
+(or (not x1328) (not x1261) x2282 x1329 x1262)
+(or (not x2284) (not x2216) x44)
+(or x2282 x1328 x1261)
+(or (not x2216) (not x44) x2284)
+(or (not x1334) (not x1267) x2282)
+(or (not x2283) (not x2190) x52)
+(or (not x2282) (not x1334) x1267)
+(or (not x2190) (not x52) x2283)
+(or (not x2282) (not x1267) x1334)
+(or (not x2283) (not x2191) x50)
+(or (not x2282) (not x1332) x1265)
+(or (not x2191) (not x50) x2283)
+(or (not x2282) (not x1265) x1332)
+(or (not x2283) (not x2192) x48)
+(or (not x2282) (not x1331) x1264)
+(or (not x2192) (not x48) x2283)
+(or (not x2282) (not x1264) x1331)
+(or (not x2283) (not x2193) x46)
+(or (not x2282) (not x1329) x1262)
+(or (not x2193) (not x46) x2283)
+(or (not x2282) (not x1262) x1329)
+(or (not x2283) (not x2194) x44)
+(or (not x2282) (not x1328) x1261)
+(or (not x2194) (not x44) x2283)
+(or (not x2282) (not x1261) x1328)
+(or (not x2281) (not x2185) x52)
+(or (not x52) x2279 x2276 x1318)
+(or (not x2185) (not x52) x2281)
+(or (not x2279) (not x1318) (not x52) x2276)
+(or (not x2281) (not x2186) x50)
+(or (not x2279) x2276 x1318 x52)
+(or (not x2186) (not x50) x2281)
+(or (not x1318) x2279 x2276 x52)
+(or (not x2281) (not x2187) x48)
+(or (not x2276) (not x50) x2279 x2274 x1316)
+(or (not x2187) (not x48) x2281)
+(or (not x2279) (not x2276) (not x1316) (not x50) x2274)
+(or (not x2281) (not x2188) x46)
+(or (not x2279) (not x2276) x2274 x1316 x50)
+(or (not x2188) (not x46) x2281)
+(or (not x2276) (not x1316) x2279 x2274 x50)
+(or (not x2281) (not x2189) x44)
+(or (not x2274) (not x48) x2279 x2273 x1312)
+(or (not x2189) (not x44) x2281)
+(or (not x2279) (not x2274) (not x1312) (not x48) x2273)
+(or (not x2280) (not x2180) x52)
+(or (not x2279) (not x2274) x2273 x1312 x48)
+(or (not x2180) (not x52) x2280)
+(or (not x2274) (not x1312) x2279 x2273 x48)
+(or (not x2280) (not x2181) x50)
+(or (not x2273) (not x46) x2279 x2271 x1308)
+(or (not x2181) (not x50) x2280)
+(or (not x2279) (not x2273) (not x1308) (not x46) x2271)
+(or (not x2280) (not x2182) x48)
+(or (not x2279) (not x2273) x2271 x1308 x46)
+(or (not x2182) (not x48) x2280)
+(or (not x2273) (not x1308) x2279 x2271 x46)
+(or (not x2280) (not x2183) x46)
+(or (not x2271) (not x44) x2279 x2270 x1303)
+(or (not x2183) (not x46) x2280)
+(or (not x2279) (not x2271) (not x1303) (not x44) x2270)
+(or (not x2280) (not x2184) x44)
+(or (not x2279) (not x2271) x2270 x1303 x44)
+(or (not x2184) (not x44) x2280)
+(or (not x2271) (not x1303) x2279 x2270 x44)
+(or (not x2277) (not x2175) x52)
+(or (not x2270) (not x149) x2279 x2269 x1300)
+(or (not x2175) (not x52) x2277)
+(or (not x2279) (not x2270) (not x1300) (not x149) x2269)
+(or (not x2277) (not x2176) x50)
+(or (not x2279) (not x2270) x2269 x1300 x149)
+(or (not x2176) (not x50) x2277)
+(or (not x2270) (not x1300) x2279 x2269 x149)
+(or (not x2277) (not x2177) x48)
+(or (not x2279) (not x2278))
+(or (not x2177) (not x48) x2277)
+(or (not x2269) x2278)
+(or (not x2277) (not x2178) x46)
+(or (not x2278) x2269)
+(or (not x2178) (not x46) x2277)
+(or x2276 x1318 x1247)
+(or (not x2277) (not x2179) x44)
+(or (not x1318) (not x1247) x2276)
+(or (not x2179) (not x44) x2277)
+(or (not x2276) (not x1318) x1247)
+(or (not x2275) (not x2170) x52)
+(or (not x2276) (not x1247) x1318)
+(or (not x2170) (not x52) x2275)
+(or (not x2276) x2274 x1316 x1244)
+(or (not x2275) (not x2171) x50)
+(or (not x2276) (not x1316) (not x1244) x2274)
+(or (not x2171) (not x50) x2275)
+(or (not x2274) (not x1316) x1244)
+(or (not x2275) (not x2172) x48)
+(or (not x2274) (not x1244) x1316)
+(or (not x2172) (not x48) x2275)
+(or (not x2274) x2276)
+(or (not x2275) (not x2173) x46)
+(or (not x2274) x2273 x1312 x1241)
+(or (not x2173) (not x46) x2275)
+(or (not x2274) (not x1312) (not x1241) x2273)
+(or (not x2275) (not x2174) x44)
+(or (not x2273) (not x1312) x1241)
+(or (not x2174) (not x44) x2275)
+(or (not x2273) (not x1241) x1312)
+(or (not x2272) (not x2165) x52)
+(or (not x2273) x2274)
+(or (not x2165) (not x52) x2272)
+(or (not x2273) x2271 x1308 x1236)
+(or (not x2272) (not x2166) x50)
+(or (not x2273) (not x1308) (not x1236) x2271)
+(or (not x2166) (not x50) x2272)
+(or (not x2271) (not x1308) x1236)
+(or (not x2272) (not x2167) x48)
+(or (not x2271) (not x1236) x1308)
+(or (not x2167) (not x48) x2272)
+(or (not x2271) x2273)
+(or (not x2272) (not x2168) x46)
+(or (not x2271) x2270 x1303 x1233)
+(or (not x2168) (not x46) x2272)
+(or (not x2271) (not x1303) (not x1233) x2270)
+(or (not x2272) (not x2169) x44)
+(or (not x2270) (not x1303) x1233)
+(or (not x2169) (not x44) x2272)
+(or (not x2270) (not x1233) x1303)
+(or (not x2268) (not x1284) x52)
+(or (not x2270) x2271)
+(or (not x1284) (not x52) x2268)
+(or (not x2270) x2269 x1300 x1229)
+(or (not x2268) (not x1283) x50)
+(or (not x2270) (not x1300) (not x1229) x2269)
+(or (not x1283) (not x50) x2268)
+(or (not x2269) (not x1300) x1229)
+(or (not x2268) (not x1281) x48)
+(or (not x2269) (not x1229) x1300)
+(or (not x1281) (not x48) x2268)
+(or (not x2269) x2270)
+(or (not x2268) (not x1279) x46)
+(or (not x2267) (not x1284) (not x1199))
+(or (not x1279) (not x46) x2268)
+(or (not x1284) (not x1199) x2266)
+(or (not x2268) (not x1276) x44)
+(or (not x2267) (not x1283) (not x1199) x95)
+(or (not x1276) (not x44) x2268)
+(or (not x1283) (not x1199) (not x95) x2267)
+(or (not x2160) (not x1199) x52)
+(or (not x2266) (not x1283) (not x1199))
+(or (not x1199) (not x52) x2160)
+(or (not x2267) (not x1281) (not x1199) x94)
+(or (not x2160) (not x1197) x50)
+(or (not x1281) (not x1199) (not x94) x2267)
+(or (not x1197) (not x50) x2160)
+(or (not x2266) (not x1281) (not x1199))
+(or (not x2160) (not x1194) x48)
+(or (not x2267) (not x1279) (not x1199) x92)
+(or (not x1194) (not x48) x2160)
+(or (not x1279) (not x1199) (not x92) x2267)
+(or (not x2160) (not x1191) x46)
+(or (not x2266) (not x1279) (not x1199))
+(or (not x1191) (not x46) x2160)
+(or (not x2267) (not x1276) (not x1199) x91)
+(or (not x2160) (not x1188) x44)
+(or (not x1276) (not x1199) (not x91) x2267)
+(or (not x1188) (not x44) x2160)
+(or (not x2266) (not x1276) (not x1199))
+(or (not x1987) (not x1113) x52)
+(or (not x2267) (not x1284) (not x1197) x89)
+(or (not x1113) (not x52) x1987)
+(or (not x1284) (not x1197) (not x89) x2267)
+(or (not x1987) (not x1111) x50)
+(or (not x2266) (not x1284) (not x1197))
+(or (not x1111) (not x50) x1987)
+(or (not x2267) (not x1283) (not x1197))
+(or (not x1987) (not x1109) x48)
+(or (not x1283) (not x1197) x2266)
+(or (not x1109) (not x48) x1987)
+(or (not x2267) (not x1281) (not x1197) x88)
+(or (not x1987) (not x1108) x46)
+(or (not x1281) (not x1197) (not x88) x2267)
+(or (not x1108) (not x46) x1987)
+(or (not x2266) (not x1281) (not x1197))
+(or (not x1987) (not x1105) x44)
+(or (not x2267) (not x1279) (not x1197) x87)
+(or (not x1105) (not x44) x1987)
+(or (not x1279) (not x1197) (not x87) x2267)
+(or (not x1689) (not x1045) x52)
+(or (not x2266) (not x1279) (not x1197))
+(or (not x1045) (not x52) x1689)
+(or (not x2267) (not x1276) (not x1197) x86)
+(or (not x1689) (not x1043) x50)
+(or (not x1276) (not x1197) (not x86) x2267)
+(or (not x1043) (not x50) x1689)
+(or (not x2266) (not x1276) (not x1197))
+(or (not x1689) (not x1042) x48)
+(or (not x2267) (not x1284) (not x1194) x82)
+(or (not x1042) (not x48) x1689)
+(or (not x1284) (not x1194) (not x82) x2267)
+(or (not x1689) (not x1040) x46)
+(or (not x2266) (not x1284) (not x1194))
+(or (not x1040) (not x46) x1689)
+(or (not x2267) (not x1283) (not x1194) x81)
+(or (not x1689) (not x1037) x44)
+(or (not x1283) (not x1194) (not x81) x2267)
+(or (not x1037) (not x44) x1689)
+(or (not x2266) (not x1283) (not x1194))
+(or (not x1388) (not x959) x52)
+(or (not x2267) (not x1281) (not x1194))
+(or (not x959) (not x52) x1388)
+(or (not x1281) (not x1194) x2266)
+(or (not x1388) (not x957) x50)
+(or (not x2267) (not x1279) (not x1194) x79)
+(or (not x957) (not x50) x1388)
+(or (not x1279) (not x1194) (not x79) x2267)
+(or (not x1388) (not x956) x48)
+(or (not x2266) (not x1279) (not x1194))
+(or (not x956) (not x48) x1388)
+(or (not x2267) (not x1276) (not x1194) x77)
+(or (not x1388) (not x954) x46)
+(or (not x1276) (not x1194) (not x77) x2267)
+(or (not x954) (not x46) x1388)
+(or (not x2266) (not x1276) (not x1194))
+(or (not x1388) (not x948) x44)
+(or (not x2267) (not x1284) (not x1191) x73)
+(or (not x948) (not x44) x1388)
+(or (not x1284) (not x1191) (not x73) x2267)
+(or (not x1023) (not x974) x52)
+(or (not x2266) (not x1284) (not x1191))
+(or (not x974) (not x52) x1023)
+(or (not x2267) (not x1283) (not x1191) x67)
+(or (not x1023) (not x970) x50)
+(or (not x1283) (not x1191) (not x67) x2267)
+(or (not x970) (not x50) x1023)
+(or (not x2266) (not x1283) (not x1191))
+(or (not x1023) (not x967) x48)
+(or (not x2267) (not x1281) (not x1191) x66)
+(or (not x967) (not x48) x1023)
+(or (not x1281) (not x1191) (not x66) x2267)
+(or (not x1023) (not x962) x46)
+(or (not x2266) (not x1281) (not x1191))
+(or (not x962) (not x46) x1023)
+(or (not x2267) (not x1279) (not x1191))
+(or (not x1023) (not x949) x44)
+(or (not x1279) (not x1191) x2266)
+(or (not x949) (not x44) x1023)
+(or (not x2267) (not x1276) (not x1191) x65)
+(or (not x617) (not x483) x52)
+(or (not x1276) (not x1191) (not x65) x2267)
+(or (not x483) (not x52) x617)
+(or (not x2266) (not x1276) (not x1191))
+(or (not x617) (not x481) x50)
+(or (not x2267) (not x1284) (not x1188) x58)
+(or (not x481) (not x50) x617)
+(or (not x1284) (not x1188) (not x58) x2267)
+(or (not x617) (not x478) x48)
+(or (not x2266) (not x1284) (not x1188))
+(or (not x478) (not x48) x617)
+(or (not x2267) (not x1283) (not x1188) x57)
+(or (not x617) (not x476) x46)
+(or (not x1283) (not x1188) (not x57) x2267)
+(or (not x476) (not x46) x617)
+(or (not x2266) (not x1283) (not x1188))
+(or (not x617) (not x473) x44)
+(or (not x2267) (not x1281) (not x1188) x56)
+(or (not x473) (not x44) x617)
+(or (not x1281) (not x1188) (not x56) x2267)
+(or (not x178) (not x107) x52)
+(or (not x2266) (not x1281) (not x1188))
+(or (not x107) (not x52) x178)
+(or (not x2267) (not x1279) (not x1188) x55)
+(or (not x178) (not x101) x50)
+(or (not x1279) (not x1188) (not x55) x2267)
+(or (not x101) (not x50) x178)
+(or (not x2266) (not x1279) (not x1188))
+(or (not x178) (not x93) x48)
+(or (not x2267) (not x1276) (not x1188))
+(or (not x93) (not x48) x178)
+(or (not x1276) (not x1188) x2266)
+(or (not x178) (not x85) x46)
+(or (not x2206) (not x69) (not x8) x2265)
+(or (not x85) (not x46) x178)
+(or (not x2265) (not x2258) (not x2250) x2263 x2260)
+(or (not x178) (not x70) x44)
+(or (not x2265) (not x2250) x2259 x2258)
+(or (not x70) (not x44) x178)
+(or (not x2265) x2251 x2250)
+(or (not x37) (not x393) x52)
+(or (not x2260) (not x2258) (not x2250) x2265)
+(or (not x393) (not x52) x37)
+(or (not x2263) (not x2258) (not x2250) x2265)
+(or (not x37) (not x392) x50)
+(or (not x2259) (not x2250) x2265)
+(or (not x392) (not x50) x37)
+(or (not x2251) x2265)
+(or (not x37) (not x390) x48)
+(or (not x2263) (not x2260))
+(or (not x390) (not x48) x37)
+(or (not x1267) x2263 x1168 x2160)
+(or (not x37) (not x387) x46)
+(or (not x2263) (not x1267) (not x2160) x1168)
+(or (not x387) (not x46) x37)
+(or (not x2263) (not x1168) x1267 x2160)
+(or (not x37) (not x384) x44)
+(or (not x1168) (not x2160) x2263 x1267)
+(or (not x384) (not x44) x37)
+(or (not x1265) x2263 x1167 x2160)
+(or (not x2264) (not x299) x52)
+(or (not x2263) (not x1265) (not x2160) x1167)
+(or (not x299) (not x52) x2264)
+(or (not x2263) (not x1167) x1265 x2160)
+(or (not x2264) (not x296) x50)
+(or (not x1167) (not x2160) x2263 x1265)
+(or (not x296) (not x50) x2264)
+(or (not x1264) x2263 x1165 x2160)
+(or (not x2264) (not x293) x48)
+(or (not x2263) (not x1264) (not x2160) x1165)
+(or (not x293) (not x48) x2264)
+(or (not x2263) (not x1165) x1264 x2160)
+(or (not x2264) (not x291) x46)
+(or (not x1165) (not x2160) x2263 x1264)
+(or (not x291) (not x46) x2264)
+(or (not x1262) x2263 x1164 x2160)
+(or (not x2264) (not x288) x44)
+(or (not x2263) (not x1262) (not x2160) x1164)
+(or (not x288) (not x44) x2264)
+(or (not x2263) (not x1164) x1262 x2160)
+(or (not x2262) (not x204) x52)
+(or (not x1164) (not x2160) x2263 x1262)
+(or (not x204) (not x52) x2262)
+(or (not x1261) x2263 x1160 x2160)
+(or (not x2262) (not x203) x50)
+(or (not x2263) (not x1261) (not x2160) x1160)
+(or (not x203) (not x50) x2262)
+(or (not x2263) (not x1160) x1261 x2160)
+(or (not x2262) (not x200) x48)
+(or (not x1160) (not x2160) x2263 x1261)
+(or (not x200) (not x48) x2262)
+(or (not x1265) (not x1167) x2260 x1267 x1168)
+(or (not x2262) (not x197) x46)
+(or (not x1264) (not x1165) x2260 x1265 x1167)
+(or (not x197) (not x46) x2262)
+(or (not x1262) (not x1164) x2260 x1264 x1165)
+(or (not x2262) (not x194) x44)
+(or (not x1261) (not x1160) x2260 x1262 x1164)
+(or (not x194) (not x44) x2262)
+(or x2260 x1261 x1160)
+(or (not x2261) (not x83) x52)
+(or (not x1267) (not x1168) x2260)
+(or (not x83) (not x52) x2261)
+(or (not x2260) (not x1168) x1267)
+(or (not x2261) (not x80) x50)
+(or (not x2260) (not x1267) x1168)
+(or (not x80) (not x50) x2261)
+(or (not x2260) (not x1167) x1265)
+(or (not x2261) (not x78) x48)
+(or (not x2260) (not x1265) x1167)
+(or (not x78) (not x48) x2261)
+(or (not x2260) (not x1165) x1264)
+(or (not x2261) (not x75) x46)
+(or (not x2260) (not x1264) x1165)
+(or (not x75) (not x46) x2261)
+(or (not x2260) (not x1164) x1262)
+(or (not x2261) (not x71) x44)
+(or (not x2260) (not x1262) x1164)
+(or (not x71) (not x44) x2261)
+(or (not x2260) (not x1160) x1261)
+(or (not x2239) (not x2119) (not x2073) (not x89))
+(or (not x2260) (not x1261) x1160)
+(or (not x2239) (not x2114) (not x2015) (not x82))
+(or (not x52) x2259 x2257 x1141)
+(or (not x2239) (not x2109) (not x1960) (not x73))
+(or (not x2259) (not x1141) (not x52) x2257)
+(or (not x2239) (not x2101) (not x1906) (not x58))
+(or (not x2259) x2257 x1141 x52)
+(or x2239 x2240 x2241 x2242 x2243)
+(or (not x1141) x2259 x2257 x52)
+(or (not x2239) x2129)
+(or (not x2257) (not x50) x2259 x2256 x1139)
+(or (not x2239) x2129)
+(or (not x2259) (not x2257) (not x1139) (not x50) x2256)
+(or (not x2234) (not x2075) (not x2073) (not x89))
+(or (not x2259) (not x2257) x2256 x1139 x50)
+(or (not x2234) (not x2066) (not x2015) (not x82))
+(or (not x2257) (not x1139) x2259 x2256 x50)
+(or (not x2234) (not x2061) (not x1960) (not x73))
+(or (not x2256) (not x48) x2259 x2255 x1136)
+(or (not x2234) (not x2056) (not x1906) (not x58))
+(or (not x2259) (not x2256) (not x1136) (not x48) x2255)
+(or x2234 x2235 x2236 x2237 x2238)
+(or (not x2259) (not x2256) x2255 x1136 x48)
+(or (not x2234) x2129)
+(or (not x2256) (not x1136) x2259 x2255 x48)
+(or (not x2234) x2084)
+(or (not x2255) (not x46) x2259 x2254 x1133)
+(or (not x2228) (not x2073) (not x2030) (not x89))
+(or (not x2259) (not x2255) (not x1133) (not x46) x2254)
+(or (not x2228) (not x2020) (not x2015) (not x82))
+(or (not x2259) (not x2255) x2254 x1133 x46)
+(or (not x2228) (not x2012) (not x1960) (not x73))
+(or (not x2255) (not x1133) x2259 x2254 x46)
+(or (not x2228) (not x2007) (not x1906) (not x58))
+(or (not x2254) (not x44) x2259 x2253 x1131)
+(or x2228 x2229 x2230 x2231 x2232)
+(or (not x2259) (not x2254) (not x1131) (not x44) x2253)
+(or (not x2228) x2129)
+(or (not x2259) (not x2254) x2253 x1131 x44)
+(or (not x2228) x2036)
+(or (not x2254) (not x1131) x2259 x2253 x44)
+(or (not x2223) (not x2073) (not x1981) (not x89))
+(or (not x2253) (not x149) x2259 x2252 x1128)
+(or (not x2223) (not x2015) (not x1974) (not x82))
+(or (not x2259) (not x2253) (not x1128) (not x149) x2252)
+(or (not x2223) (not x1963) (not x1960) (not x73))
+(or (not x2259) (not x2253) x2252 x1128 x149)
+(or (not x2223) (not x1958) (not x1906) (not x58))
+(or (not x2253) (not x1128) x2259 x2252 x149)
+(or x2223 x2224 x2225 x2226 x2227)
+(or (not x2259) (not x2258))
+(or (not x2223) x2129)
+(or (not x2252) x2258)
+(or (not x2223) x1989)
+(or (not x2258) x2252)
+(or (not x2217) (not x2073) (not x1934) (not x89))
+(or x2257 x1247 x1141)
+(or (not x2217) (not x2015) (not x1928) (not x82))
+(or (not x1247) (not x1141) x2257)
+(or (not x2217) (not x1960) (not x1920) (not x73))
+(or (not x2257) (not x1141) x1247)
+(or (not x2217) (not x1910) (not x1906) (not x58))
+(or (not x2257) (not x1247) x1141)
+(or x2217 x2218 x2219 x2220 x2221)
+(or (not x2257) x2256 x1244 x1139)
+(or (not x2217) x2129)
+(or (not x2257) (not x1244) (not x1139) x2256)
+(or (not x2217) x1941)
+(or (not x2256) (not x1139) x1244)
+(or (not x2212) (not x2073) (not x1880) (not x89))
+(or (not x2256) (not x1244) x1139)
+(or (not x2212) (not x2015) (not x1868) (not x82))
+(or (not x2256) x2257)
+(or (not x2212) (not x1960) (not x1856) (not x73))
+(or (not x2256) x2255 x1241 x1136)
+(or (not x2212) (not x1906) (not x1841) (not x58))
+(or (not x2256) (not x1241) (not x1136) x2255)
+(or x2212 x2213 x2214 x2215 x2216)
+(or (not x2255) (not x1136) x1241)
+(or (not x2212) x2129)
+(or (not x2255) (not x1241) x1136)
+(or (not x2212) x1894)
+(or (not x2255) x2256)
+(or (not x2240) (not x2129) (not x95))
+(or (not x2255) x2254 x1236 x1133)
+(or (not x2240) (not x2114) (not x2015) (not x81))
+(or (not x2255) (not x1236) (not x1133) x2254)
+(or (not x2240) (not x2109) (not x1960) (not x67))
+(or (not x2254) (not x1133) x1236)
+(or (not x2240) (not x2101) (not x1906) (not x57))
+(or (not x2254) (not x1236) x1133)
+(or x2239 x2240 x2241 x2242 x2243)
+(or (not x2254) x2255)
+(or (not x2240) x2073)
+(or (not x2254) x2253 x1233 x1131)
+(or (not x2240) x2119)
+(or (not x2254) (not x1233) (not x1131) x2253)
+(or (not x2235) (not x2129) (not x2084) (not x95))
+(or (not x2253) (not x1131) x1233)
+(or (not x2235) (not x2066) (not x2015) (not x81))
+(or (not x2253) (not x1233) x1131)
+(or (not x2235) (not x2061) (not x1960) (not x67))
+(or (not x2253) x2254)
+(or (not x2235) (not x2056) (not x1906) (not x57))
+(or (not x2253) x2252 x1229 x1128)
+(or x2234 x2235 x2236 x2237 x2238)
+(or (not x2253) (not x1229) (not x1128) x2252)
+(or (not x2235) x2073)
+(or (not x2252) (not x1128) x1229)
+(or (not x2235) x2075)
+(or (not x2252) (not x1229) x1128)
+(or (not x2229) (not x2129) (not x2036) (not x95))
+(or (not x2252) x2253)
+(or (not x2229) (not x2020) (not x2015) (not x81))
+(or (not x2251) (not x1199) (not x1113))
+(or (not x2229) (not x2012) (not x1960) (not x67))
+(or (not x1199) (not x1113) x2250)
+(or (not x2229) (not x2007) (not x1906) (not x57))
+(or (not x2251) (not x1199) (not x1111) x95)
+(or x2228 x2229 x2230 x2231 x2232)
+(or (not x1199) (not x1111) (not x95) x2251)
+(or (not x2229) x2073)
+(or (not x2250) (not x1199) (not x1111))
+(or (not x2229) x2030)
+(or (not x2251) (not x1199) (not x1109) x94)
+(or (not x2224) (not x2129) (not x1989) (not x95))
+(or (not x1199) (not x1109) (not x94) x2251)
+(or (not x2224) (not x2015) (not x1974) (not x81))
+(or (not x2250) (not x1199) (not x1109))
+(or (not x2224) (not x1963) (not x1960) (not x67))
+(or (not x2251) (not x1199) (not x1108) x92)
+(or (not x2224) (not x1958) (not x1906) (not x57))
+(or (not x1199) (not x1108) (not x92) x2251)
+(or x2223 x2224 x2225 x2226 x2227)
+(or (not x2250) (not x1199) (not x1108))
+(or (not x2224) x2073)
+(or (not x2251) (not x1199) (not x1105) x91)
+(or (not x2224) x1981)
+(or (not x1199) (not x1105) (not x91) x2251)
+(or (not x2218) (not x2129) (not x1941) (not x95))
+(or (not x2250) (not x1199) (not x1105))
+(or (not x2218) (not x2015) (not x1928) (not x81))
+(or (not x2251) (not x1197) (not x1113) x89)
+(or (not x2218) (not x1960) (not x1920) (not x67))
+(or (not x1197) (not x1113) (not x89) x2251)
+(or (not x2218) (not x1910) (not x1906) (not x57))
+(or (not x2250) (not x1197) (not x1113))
+(or x2217 x2218 x2219 x2220 x2221)
+(or (not x2251) (not x1197) (not x1111))
+(or (not x2218) x2073)
+(or (not x1197) (not x1111) x2250)
+(or (not x2218) x1934)
+(or (not x2251) (not x1197) (not x1109) x88)
+(or (not x2213) (not x2129) (not x1894) (not x95))
+(or (not x1197) (not x1109) (not x88) x2251)
+(or (not x2213) (not x2015) (not x1868) (not x81))
+(or (not x2250) (not x1197) (not x1109))
+(or (not x2213) (not x1960) (not x1856) (not x67))
+(or (not x2251) (not x1197) (not x1108) x87)
+(or (not x2213) (not x1906) (not x1841) (not x57))
+(or (not x1197) (not x1108) (not x87) x2251)
+(or x2212 x2213 x2214 x2215 x2216)
+(or (not x2250) (not x1197) (not x1108))
+(or (not x2213) x2073)
+(or (not x2251) (not x1197) (not x1105) x86)
+(or (not x2213) x1880)
+(or (not x1197) (not x1105) (not x86) x2251)
+(or (not x2241) (not x2129) (not x94))
+(or (not x2250) (not x1197) (not x1105))
+(or (not x2241) (not x2119) (not x2073) (not x88))
+(or (not x2251) (not x1194) (not x1113) x82)
+(or (not x2241) (not x2109) (not x1960) (not x66))
+(or (not x1194) (not x1113) (not x82) x2251)
+(or (not x2241) (not x2101) (not x1906) (not x56))
+(or (not x2250) (not x1194) (not x1113))
+(or x2239 x2240 x2241 x2242 x2243)
+(or (not x2251) (not x1194) (not x1111) x81)
+(or (not x2241) x2015)
+(or (not x1194) (not x1111) (not x81) x2251)
+(or (not x2241) x2114)
+(or (not x2250) (not x1194) (not x1111))
+(or (not x2236) (not x2129) (not x2084) (not x94))
+(or (not x2251) (not x1194) (not x1109))
+(or (not x2236) (not x2075) (not x2073) (not x88))
+(or (not x1194) (not x1109) x2250)
+(or (not x2236) (not x2061) (not x1960) (not x66))
+(or (not x2251) (not x1194) (not x1108) x79)
+(or (not x2236) (not x2056) (not x1906) (not x56))
+(or (not x1194) (not x1108) (not x79) x2251)
+(or x2234 x2235 x2236 x2237 x2238)
+(or (not x2250) (not x1194) (not x1108))
+(or (not x2236) x2015)
+(or (not x2251) (not x1194) (not x1105) x77)
+(or (not x2236) x2066)
+(or (not x1194) (not x1105) (not x77) x2251)
+(or (not x2230) (not x2129) (not x2036) (not x94))
+(or (not x2250) (not x1194) (not x1105))
+(or (not x2230) (not x2073) (not x2030) (not x88))
+(or (not x2251) (not x1191) (not x1113) x73)
+(or (not x2230) (not x2012) (not x1960) (not x66))
+(or (not x1191) (not x1113) (not x73) x2251)
+(or (not x2230) (not x2007) (not x1906) (not x56))
+(or (not x2250) (not x1191) (not x1113))
+(or x2228 x2229 x2230 x2231 x2232)
+(or (not x2251) (not x1191) (not x1111) x67)
+(or (not x2230) x2015)
+(or (not x1191) (not x1111) (not x67) x2251)
+(or (not x2230) x2020)
+(or (not x2250) (not x1191) (not x1111))
+(or (not x2225) (not x2129) (not x1989) (not x94))
+(or (not x2251) (not x1191) (not x1109) x66)
+(or (not x2225) (not x2073) (not x1981) (not x88))
+(or (not x1191) (not x1109) (not x66) x2251)
+(or (not x2225) (not x1963) (not x1960) (not x66))
+(or (not x2250) (not x1191) (not x1109))
+(or (not x2225) (not x1958) (not x1906) (not x56))
+(or (not x2251) (not x1191) (not x1108))
+(or x2223 x2224 x2225 x2226 x2227)
+(or (not x1191) (not x1108) x2250)
+(or (not x2225) x2015)
+(or (not x2251) (not x1191) (not x1105) x65)
+(or (not x2225) x1974)
+(or (not x1191) (not x1105) (not x65) x2251)
+(or (not x2219) (not x2129) (not x1941) (not x94))
+(or (not x2250) (not x1191) (not x1105))
+(or (not x2219) (not x2073) (not x1934) (not x88))
+(or (not x2251) (not x1188) (not x1113) x58)
+(or (not x2219) (not x1960) (not x1920) (not x66))
+(or (not x1188) (not x1113) (not x58) x2251)
+(or (not x2219) (not x1910) (not x1906) (not x56))
+(or (not x2250) (not x1188) (not x1113))
+(or x2217 x2218 x2219 x2220 x2221)
+(or (not x2251) (not x1188) (not x1111) x57)
+(or (not x2219) x2015)
+(or (not x1188) (not x1111) (not x57) x2251)
+(or (not x2219) x1928)
+(or (not x2250) (not x1188) (not x1111))
+(or (not x2214) (not x2129) (not x1894) (not x94))
+(or (not x2251) (not x1188) (not x1109) x56)
+(or (not x2214) (not x2073) (not x1880) (not x88))
+(or (not x1188) (not x1109) (not x56) x2251)
+(or (not x2214) (not x1960) (not x1856) (not x66))
+(or (not x2250) (not x1188) (not x1109))
+(or (not x2214) (not x1906) (not x1841) (not x56))
+(or (not x2251) (not x1188) (not x1108) x55)
+(or x2212 x2213 x2214 x2215 x2216)
+(or (not x1188) (not x1108) (not x55) x2251)
+(or (not x2214) x2015)
+(or (not x2250) (not x1188) (not x1108))
+(or (not x2214) x1868)
+(or (not x2251) (not x1188) (not x1105))
+(or (not x2242) (not x2129) (not x92))
+(or (not x1188) (not x1105) x2250)
+(or (not x2242) (not x2119) (not x2073) (not x87))
+(or (not x2206) (not x69) (not x9) x2249)
+(or (not x2242) (not x2114) (not x2015) (not x79))
+(or (not x2249) (not x2245) (not x2207) x2248 x2247)
+(or (not x2242) (not x2101) (not x1906) (not x55))
+(or (not x2249) (not x2207) x2246 x2245)
+(or x2239 x2240 x2241 x2242 x2243)
+(or (not x2249) x2208 x2207)
+(or (not x2242) x1960)
+(or (not x2247) (not x2245) (not x2207) x2249)
+(or (not x2242) x2109)
+(or (not x2248) (not x2245) (not x2207) x2249)
+(or (not x2237) (not x2129) (not x2084) (not x92))
+(or (not x2246) (not x2207) x2249)
+(or (not x2237) (not x2075) (not x2073) (not x87))
+(or (not x2208) x2249)
+(or (not x2237) (not x2066) (not x2015) (not x79))
+(or (not x2248) (not x2247))
+(or (not x2237) (not x2056) (not x1906) (not x55))
+(or (not x1267) x2248 x1090 x2160)
+(or x2234 x2235 x2236 x2237 x2238)
+(or (not x2248) (not x1267) (not x2160) x1090)
+(or (not x2237) x1960)
+(or (not x2248) (not x1090) x1267 x2160)
+(or (not x2237) x2061)
+(or (not x1090) (not x2160) x2248 x1267)
+(or (not x2231) (not x2129) (not x2036) (not x92))
+(or (not x1265) x2248 x1089 x2160)
+(or (not x2231) (not x2073) (not x2030) (not x87))
+(or (not x2248) (not x1265) (not x2160) x1089)
+(or (not x2231) (not x2020) (not x2015) (not x79))
+(or (not x2248) (not x1089) x1265 x2160)
+(or (not x2231) (not x2007) (not x1906) (not x55))
+(or (not x1089) (not x2160) x2248 x1265)
+(or x2228 x2229 x2230 x2231 x2232)
+(or (not x1264) x2248 x1087 x2160)
+(or (not x2231) x1960)
+(or (not x2248) (not x1264) (not x2160) x1087)
+(or (not x2231) x2012)
+(or (not x2248) (not x1087) x1264 x2160)
+(or (not x2226) (not x2129) (not x1989) (not x92))
+(or (not x1087) (not x2160) x2248 x1264)
+(or (not x2226) (not x2073) (not x1981) (not x87))
+(or (not x1262) x2248 x1085 x2160)
+(or (not x2226) (not x2015) (not x1974) (not x79))
+(or (not x2248) (not x1262) (not x2160) x1085)
+(or (not x2226) (not x1958) (not x1906) (not x55))
+(or (not x2248) (not x1085) x1262 x2160)
+(or x2223 x2224 x2225 x2226 x2227)
+(or (not x1085) (not x2160) x2248 x1262)
+(or (not x2226) x1960)
+(or (not x1261) x2248 x1084 x2160)
+(or (not x2226) x1963)
+(or (not x2248) (not x1261) (not x2160) x1084)
+(or (not x2220) (not x2129) (not x1941) (not x92))
+(or (not x2248) (not x1084) x1261 x2160)
+(or (not x2220) (not x2073) (not x1934) (not x87))
+(or (not x1084) (not x2160) x2248 x1261)
+(or (not x2220) (not x2015) (not x1928) (not x79))
+(or (not x1265) (not x1089) x2247 x1267 x1090)
+(or (not x2220) (not x1910) (not x1906) (not x55))
+(or (not x1264) (not x1087) x2247 x1265 x1089)
+(or x2217 x2218 x2219 x2220 x2221)
+(or (not x1262) (not x1085) x2247 x1264 x1087)
+(or (not x2220) x1960)
+(or (not x1261) (not x1084) x2247 x1262 x1085)
+(or (not x2220) x1920)
+(or x2247 x1261 x1084)
+(or (not x2215) (not x2129) (not x1894) (not x92))
+(or (not x1267) (not x1090) x2247)
+(or (not x2215) (not x2073) (not x1880) (not x87))
+(or (not x2247) (not x1090) x1267)
+(or (not x2215) (not x2015) (not x1868) (not x79))
+(or (not x2247) (not x1267) x1090)
+(or (not x2215) (not x1906) (not x1841) (not x55))
+(or (not x2247) (not x1089) x1265)
+(or x2212 x2213 x2214 x2215 x2216)
+(or (not x2247) (not x1265) x1089)
+(or (not x2215) x1960)
+(or (not x2247) (not x1087) x1264)
+(or (not x2215) x1856)
+(or (not x2247) (not x1264) x1087)
+(or (not x2243) (not x2129) (not x91))
+(or (not x2247) (not x1085) x1262)
+(or (not x2243) (not x2119) (not x2073) (not x86))
+(or (not x2247) (not x1262) x1085)
+(or (not x2243) (not x2114) (not x2015) (not x77))
+(or (not x2247) (not x1084) x1261)
+(or (not x2243) (not x2109) (not x1960) (not x65))
+(or (not x2247) (not x1261) x1084)
+(or x2239 x2240 x2241 x2242 x2243)
+(or (not x52) x2246 x2244 x1073)
+(or (not x2243) x1906)
+(or (not x2246) (not x1073) (not x52) x2244)
+(or (not x2243) x2101)
+(or (not x2246) x2244 x1073 x52)
+(or (not x2238) (not x2129) (not x2084) (not x91))
+(or (not x1073) x2246 x2244 x52)
+(or (not x2238) (not x2075) (not x2073) (not x86))
+(or (not x2244) (not x50) x2246 x2233 x1072)
+(or (not x2238) (not x2066) (not x2015) (not x77))
+(or (not x2246) (not x2244) (not x1072) (not x50) x2233)
+(or (not x2238) (not x2061) (not x1960) (not x65))
+(or (not x2246) (not x2244) x2233 x1072 x50)
+(or x2234 x2235 x2236 x2237 x2238)
+(or (not x2244) (not x1072) x2246 x2233 x50)
+(or (not x2238) x1906)
+(or (not x2233) (not x48) x2246 x2222 x1069)
+(or (not x2238) x2056)
+(or (not x2246) (not x2233) (not x1069) (not x48) x2222)
+(or (not x2232) (not x2129) (not x2036) (not x91))
+(or (not x2246) (not x2233) x2222 x1069 x48)
+(or (not x2232) (not x2073) (not x2030) (not x86))
+(or (not x2233) (not x1069) x2246 x2222 x48)
+(or (not x2232) (not x2020) (not x2015) (not x77))
+(or (not x2222) (not x46) x2246 x2211 x1066)
+(or (not x2232) (not x2012) (not x1960) (not x65))
+(or (not x2246) (not x2222) (not x1066) (not x46) x2211)
+(or x2228 x2229 x2230 x2231 x2232)
+(or (not x2246) (not x2222) x2211 x1066 x46)
+(or (not x2232) x1906)
+(or (not x2222) (not x1066) x2246 x2211 x46)
+(or (not x2232) x2007)
+(or (not x2211) (not x44) x2246 x2210 x1062)
+(or (not x2227) (not x2129) (not x1989) (not x91))
+(or (not x2246) (not x2211) (not x1062) (not x44) x2210)
+(or (not x2227) (not x2073) (not x1981) (not x86))
+(or (not x2246) (not x2211) x2210 x1062 x44)
+(or (not x2227) (not x2015) (not x1974) (not x77))
+(or (not x2211) (not x1062) x2246 x2210 x44)
+(or (not x2227) (not x1963) (not x1960) (not x65))
+(or (not x2210) (not x149) x2246 x2209 x1059)
+(or x2223 x2224 x2225 x2226 x2227)
+(or (not x2246) (not x2210) (not x1059) (not x149) x2209)
+(or (not x2227) x1906)
+(or (not x2246) (not x2210) x2209 x1059 x149)
+(or (not x2227) x1958)
+(or (not x2210) (not x1059) x2246 x2209 x149)
+(or (not x2221) (not x2129) (not x1941) (not x91))
+(or (not x2246) (not x2245))
+(or (not x2221) (not x2073) (not x1934) (not x86))
+(or (not x2209) x2245)
+(or (not x2221) (not x2015) (not x1928) (not x77))
+(or (not x2245) x2209)
+(or (not x2221) (not x1960) (not x1920) (not x65))
+(or x2244 x1247 x1073)
+(or x2217 x2218 x2219 x2220 x2221)
+(or (not x1247) (not x1073) x2244)
+(or (not x2221) x1906)
+(or (not x2244) (not x1073) x1247)
+(or (not x2221) x1910)
+(or (not x2244) (not x1247) x1073)
+(or (not x2216) (not x2129) (not x1894) (not x91))
+(or (not x2244) x2233 x1244 x1072)
+(or (not x2216) (not x2073) (not x1880) (not x86))
+(or (not x2244) (not x1244) (not x1072) x2233)
+(or (not x2216) (not x2015) (not x1868) (not x77))
+(or (not x2233) (not x1072) x1244)
+(or (not x2216) (not x1960) (not x1856) (not x65))
+(or (not x2233) (not x1244) x1072)
+(or x2212 x2213 x2214 x2215 x2216)
+(or (not x2233) x2244)
+(or (not x2216) x1906)
+(or (not x2233) x2222 x1241 x1069)
+(or (not x2216) x1841)
+(or (not x2233) (not x1241) (not x1069) x2222)
+(or x2239 x2240 x2241 x2242 x2243)
+(or (not x2222) (not x1069) x1241)
+(or (not x2222) (not x1241) x1069)
+(or x2234 x2235 x2236 x2237 x2238)
+(or (not x2222) x2233)
+(or (not x2222) x2211 x1236 x1066)
+(or x2228 x2229 x2230 x2231 x2232)
+(or (not x2222) (not x1236) (not x1066) x2211)
+(or (not x2211) (not x1066) x1236)
+(or x2223 x2224 x2225 x2226 x2227)
+(or (not x2211) (not x1236) x1066)
+(or (not x2211) x2222)
+(or x2217 x2218 x2219 x2220 x2221)
+(or (not x2211) x2210 x1233 x1062)
+(or (not x2211) (not x1233) (not x1062) x2210)
+(or x2212 x2213 x2214 x2215 x2216)
+(or (not x2210) (not x1062) x1233)
+(or (not x2210) (not x1233) x1062)
+(or (not x2190) (not x1807) (not x1758) (not x89))
+(or (not x2210) x2211)
+(or (not x2190) (not x1799) (not x1703) (not x82))
+(or (not x2210) x2209 x1229 x1059)
+(or (not x2190) (not x1793) (not x1648) (not x73))
+(or (not x2210) (not x1229) (not x1059) x2209)
+(or (not x2190) (not x1787) (not x1592) (not x58))
+(or (not x2209) (not x1059) x1229)
+(or x2190 x2191 x2192 x2193 x2194)
+(or (not x2209) (not x1229) x1059)
+(or (not x2190) x1812)
+(or (not x2209) x2210)
+(or (not x2190) x1812)
+(or (not x2208) (not x1199) (not x1045))
+(or (not x2185) (not x1759) (not x1758) (not x89))
+(or (not x1199) (not x1045) x2207)
+(or (not x2185) (not x1754) (not x1703) (not x82))
+(or (not x2208) (not x1199) (not x1043) x95)
+(or (not x2185) (not x1745) (not x1648) (not x73))
+(or (not x1199) (not x1043) (not x95) x2208)
+(or (not x2185) (not x1739) (not x1592) (not x58))
+(or (not x2207) (not x1199) (not x1043))
+(or x2185 x2186 x2187 x2188 x2189)
+(or (not x2208) (not x1199) (not x1042) x94)
+(or (not x2185) x1812)
+(or (not x1199) (not x1042) (not x94) x2208)
+(or (not x2185) x1764)
+(or (not x2207) (not x1199) (not x1042))
+(or (not x2180) (not x1758) (not x1710) (not x89))
+(or (not x2208) (not x1199) (not x1040) x92)
+(or (not x2180) (not x1705) (not x1703) (not x82))
+(or (not x1199) (not x1040) (not x92) x2208)
+(or (not x2180) (not x1700) (not x1648) (not x73))
+(or (not x2207) (not x1199) (not x1040))
+(or (not x2180) (not x1692) (not x1592) (not x58))
+(or (not x2208) (not x1199) (not x1037) x91)
+(or x2180 x2181 x2182 x2183 x2184)
+(or (not x1199) (not x1037) (not x91) x2208)
+(or (not x2180) x1812)
+(or (not x2207) (not x1199) (not x1037))
+(or (not x2180) x1718)
+(or (not x2208) (not x1197) (not x1045) x89)
+(or (not x2175) (not x1758) (not x1661) (not x89))
+(or (not x1197) (not x1045) (not x89) x2208)
+(or (not x2175) (not x1703) (not x1656) (not x82))
+(or (not x2207) (not x1197) (not x1045))
+(or (not x2175) (not x1651) (not x1648) (not x73))
+(or (not x2208) (not x1197) (not x1043))
+(or (not x2175) (not x1644) (not x1592) (not x58))
+(or (not x1197) (not x1043) x2207)
+(or x2175 x2176 x2177 x2178 x2179)
+(or (not x2208) (not x1197) (not x1042) x88)
+(or (not x2175) x1812)
+(or (not x1197) (not x1042) (not x88) x2208)
+(or (not x2175) x1672)
+(or (not x2207) (not x1197) (not x1042))
+(or (not x2170) (not x1758) (not x1618) (not x89))
+(or (not x2208) (not x1197) (not x1040) x87)
+(or (not x2170) (not x1703) (not x1608) (not x82))
+(or (not x1197) (not x1040) (not x87) x2208)
+(or (not x2170) (not x1648) (not x1603) (not x73))
+(or (not x2207) (not x1197) (not x1040))
+(or (not x2170) (not x1598) (not x1592) (not x58))
+(or (not x2208) (not x1197) (not x1037) x86)
+(or x2170 x2171 x2172 x2173 x2174)
+(or (not x1197) (not x1037) (not x86) x2208)
+(or (not x2170) x1812)
+(or (not x2207) (not x1197) (not x1037))
+(or (not x2170) x1626)
+(or (not x2208) (not x1194) (not x1045) x82)
+(or (not x2165) (not x1758) (not x1566) (not x89))
+(or (not x1194) (not x1045) (not x82) x2208)
+(or (not x2165) (not x1703) (not x1551) (not x82))
+(or (not x2207) (not x1194) (not x1045))
+(or (not x2165) (not x1648) (not x1536) (not x73))
+(or (not x2208) (not x1194) (not x1043) x81)
+(or (not x2165) (not x1592) (not x1525) (not x58))
+(or (not x1194) (not x1043) (not x81) x2208)
+(or x2165 x2166 x2167 x2168 x2169)
+(or (not x2207) (not x1194) (not x1043))
+(or (not x2165) x1812)
+(or (not x2208) (not x1194) (not x1042))
+(or (not x2165) x1578)
+(or (not x1194) (not x1042) x2207)
+(or (not x2191) (not x1812) (not x95))
+(or (not x2208) (not x1194) (not x1040) x79)
+(or (not x2191) (not x1799) (not x1703) (not x81))
+(or (not x1194) (not x1040) (not x79) x2208)
+(or (not x2191) (not x1793) (not x1648) (not x67))
+(or (not x2207) (not x1194) (not x1040))
+(or (not x2191) (not x1787) (not x1592) (not x57))
+(or (not x2208) (not x1194) (not x1037) x77)
+(or x2190 x2191 x2192 x2193 x2194)
+(or (not x1194) (not x1037) (not x77) x2208)
+(or (not x2191) x1758)
+(or (not x2207) (not x1194) (not x1037))
+(or (not x2191) x1807)
+(or (not x2208) (not x1191) (not x1045) x73)
+(or (not x2186) (not x1812) (not x1764) (not x95))
+(or (not x1191) (not x1045) (not x73) x2208)
+(or (not x2186) (not x1754) (not x1703) (not x81))
+(or (not x2207) (not x1191) (not x1045))
+(or (not x2186) (not x1745) (not x1648) (not x67))
+(or (not x2208) (not x1191) (not x1043) x67)
+(or (not x2186) (not x1739) (not x1592) (not x57))
+(or (not x1191) (not x1043) (not x67) x2208)
+(or x2185 x2186 x2187 x2188 x2189)
+(or (not x2207) (not x1191) (not x1043))
+(or (not x2186) x1758)
+(or (not x2208) (not x1191) (not x1042) x66)
+(or (not x2186) x1759)
+(or (not x1191) (not x1042) (not x66) x2208)
+(or (not x2181) (not x1812) (not x1718) (not x95))
+(or (not x2207) (not x1191) (not x1042))
+(or (not x2181) (not x1705) (not x1703) (not x81))
+(or (not x2208) (not x1191) (not x1040))
+(or (not x2181) (not x1700) (not x1648) (not x67))
+(or (not x1191) (not x1040) x2207)
+(or (not x2181) (not x1692) (not x1592) (not x57))
+(or (not x2208) (not x1191) (not x1037) x65)
+(or x2180 x2181 x2182 x2183 x2184)
+(or (not x1191) (not x1037) (not x65) x2208)
+(or (not x2181) x1758)
+(or (not x2207) (not x1191) (not x1037))
+(or (not x2181) x1710)
+(or (not x2208) (not x1188) (not x1045) x58)
+(or (not x2176) (not x1812) (not x1672) (not x95))
+(or (not x1188) (not x1045) (not x58) x2208)
+(or (not x2176) (not x1703) (not x1656) (not x81))
+(or (not x2207) (not x1188) (not x1045))
+(or (not x2176) (not x1651) (not x1648) (not x67))
+(or (not x2208) (not x1188) (not x1043) x57)
+(or (not x2176) (not x1644) (not x1592) (not x57))
+(or (not x1188) (not x1043) (not x57) x2208)
+(or x2175 x2176 x2177 x2178 x2179)
+(or (not x2207) (not x1188) (not x1043))
+(or (not x2176) x1758)
+(or (not x2208) (not x1188) (not x1042) x56)
+(or (not x2176) x1661)
+(or (not x1188) (not x1042) (not x56) x2208)
+(or (not x2171) (not x1812) (not x1626) (not x95))
+(or (not x2207) (not x1188) (not x1042))
+(or (not x2171) (not x1703) (not x1608) (not x81))
+(or (not x2208) (not x1188) (not x1040) x55)
+(or (not x2171) (not x1648) (not x1603) (not x67))
+(or (not x1188) (not x1040) (not x55) x2208)
+(or (not x2171) (not x1598) (not x1592) (not x57))
+(or (not x2207) (not x1188) (not x1040))
+(or x2170 x2171 x2172 x2173 x2174)
+(or (not x2208) (not x1188) (not x1037))
+(or (not x2171) x1758)
+(or (not x1188) (not x1037) x2207)
+(or (not x2171) x1618)
+(or (not x2206) (not x69) (not x10) x2205)
+(or (not x2166) (not x1812) (not x1578) (not x95))
+(or (not x2205) (not x2201) (not x2163) x2204 x2203)
+(or (not x2166) (not x1703) (not x1551) (not x81))
+(or (not x2205) (not x2163) x2202 x2201)
+(or (not x2166) (not x1648) (not x1536) (not x67))
+(or (not x2205) x2164 x2163)
+(or (not x2166) (not x1592) (not x1525) (not x57))
+(or (not x2203) (not x2201) (not x2163) x2205)
+(or x2165 x2166 x2167 x2168 x2169)
+(or (not x2204) (not x2201) (not x2163) x2205)
+(or (not x2166) x1758)
+(or (not x2202) (not x2163) x2205)
+(or (not x2166) x1566)
+(or (not x2164) x2205)
+(or (not x2192) (not x1812) (not x94))
+(or (not x2204) (not x2203))
+(or (not x2192) (not x1807) (not x1758) (not x88))
+(or (not x1267) x2204 x1021 x2160)
+(or (not x2192) (not x1793) (not x1648) (not x66))
+(or (not x2204) (not x1267) (not x2160) x1021)
+(or (not x2192) (not x1787) (not x1592) (not x56))
+(or (not x2204) (not x1021) x1267 x2160)
+(or x2190 x2191 x2192 x2193 x2194)
+(or (not x1021) (not x2160) x2204 x1267)
+(or (not x2192) x1703)
+(or (not x1265) x2204 x1019 x2160)
+(or (not x2192) x1799)
+(or (not x2204) (not x1265) (not x2160) x1019)
+(or (not x2187) (not x1812) (not x1764) (not x94))
+(or (not x2204) (not x1019) x1265 x2160)
+(or (not x2187) (not x1759) (not x1758) (not x88))
+(or (not x1019) (not x2160) x2204 x1265)
+(or (not x2187) (not x1745) (not x1648) (not x66))
+(or (not x1264) x2204 x1017 x2160)
+(or (not x2187) (not x1739) (not x1592) (not x56))
+(or (not x2204) (not x1264) (not x2160) x1017)
+(or x2185 x2186 x2187 x2188 x2189)
+(or (not x2204) (not x1017) x1264 x2160)
+(or (not x2187) x1703)
+(or (not x1017) (not x2160) x2204 x1264)
+(or (not x2187) x1754)
+(or (not x1262) x2204 x1015 x2160)
+(or (not x2182) (not x1812) (not x1718) (not x94))
+(or (not x2204) (not x1262) (not x2160) x1015)
+(or (not x2182) (not x1758) (not x1710) (not x88))
+(or (not x2204) (not x1015) x1262 x2160)
+(or (not x2182) (not x1700) (not x1648) (not x66))
+(or (not x1015) (not x2160) x2204 x1262)
+(or (not x2182) (not x1692) (not x1592) (not x56))
+(or (not x1261) x2204 x1012 x2160)
+(or x2180 x2181 x2182 x2183 x2184)
+(or (not x2204) (not x1261) (not x2160) x1012)
+(or (not x2182) x1703)
+(or (not x2204) (not x1012) x1261 x2160)
+(or (not x2182) x1705)
+(or (not x1012) (not x2160) x2204 x1261)
+(or (not x2177) (not x1812) (not x1672) (not x94))
+(or (not x1265) (not x1019) x2203 x1267 x1021)
+(or (not x2177) (not x1758) (not x1661) (not x88))
+(or (not x1264) (not x1017) x2203 x1265 x1019)
+(or (not x2177) (not x1651) (not x1648) (not x66))
+(or (not x1262) (not x1015) x2203 x1264 x1017)
+(or (not x2177) (not x1644) (not x1592) (not x56))
+(or (not x1261) (not x1012) x2203 x1262 x1015)
+(or x2175 x2176 x2177 x2178 x2179)
+(or x2203 x1261 x1012)
+(or (not x2177) x1703)
+(or (not x1267) (not x1021) x2203)
+(or (not x2177) x1656)
+(or (not x2203) (not x1021) x1267)
+(or (not x2172) (not x1812) (not x1626) (not x94))
+(or (not x2203) (not x1267) x1021)
+(or (not x2172) (not x1758) (not x1618) (not x88))
+(or (not x2203) (not x1019) x1265)
+(or (not x2172) (not x1648) (not x1603) (not x66))
+(or (not x2203) (not x1265) x1019)
+(or (not x2172) (not x1598) (not x1592) (not x56))
+(or (not x2203) (not x1017) x1264)
+(or x2170 x2171 x2172 x2173 x2174)
+(or (not x2203) (not x1264) x1017)
+(or (not x2172) x1703)
+(or (not x2203) (not x1015) x1262)
+(or (not x2172) x1608)
+(or (not x2203) (not x1262) x1015)
+(or (not x2167) (not x1812) (not x1578) (not x94))
+(or (not x2203) (not x1012) x1261)
+(or (not x2167) (not x1758) (not x1566) (not x88))
+(or (not x2203) (not x1261) x1012)
+(or (not x2167) (not x1648) (not x1536) (not x66))
+(or (not x52) x2202 x2200 x1000)
+(or (not x2167) (not x1592) (not x1525) (not x56))
+(or (not x2202) (not x1000) (not x52) x2200)
+(or x2165 x2166 x2167 x2168 x2169)
+(or (not x2202) x2200 x1000 x52)
+(or (not x2167) x1703)
+(or (not x1000) x2202 x2200 x52)
+(or (not x2167) x1551)
+(or (not x2200) (not x50) x2202 x2199 x997)
+(or (not x2193) (not x1812) (not x92))
+(or (not x2202) (not x2200) (not x997) (not x50) x2199)
+(or (not x2193) (not x1807) (not x1758) (not x87))
+(or (not x2202) (not x2200) x2199 x997 x50)
+(or (not x2193) (not x1799) (not x1703) (not x79))
+(or (not x2200) (not x997) x2202 x2199 x50)
+(or (not x2193) (not x1787) (not x1592) (not x55))
+(or (not x2199) (not x48) x2202 x2198 x993)
+(or x2190 x2191 x2192 x2193 x2194)
+(or (not x2202) (not x2199) (not x993) (not x48) x2198)
+(or (not x2193) x1648)
+(or (not x2202) (not x2199) x2198 x993 x48)
+(or (not x2193) x1793)
+(or (not x2199) (not x993) x2202 x2198 x48)
+(or (not x2188) (not x1812) (not x1764) (not x92))
+(or (not x2198) (not x46) x2202 x2197 x989)
+(or (not x2188) (not x1759) (not x1758) (not x87))
+(or (not x2202) (not x2198) (not x989) (not x46) x2197)
+(or (not x2188) (not x1754) (not x1703) (not x79))
+(or (not x2202) (not x2198) x2197 x989 x46)
+(or (not x2188) (not x1739) (not x1592) (not x55))
+(or (not x2198) (not x989) x2202 x2197 x46)
+(or x2185 x2186 x2187 x2188 x2189)
+(or (not x2197) (not x44) x2202 x2196 x986)
+(or (not x2188) x1648)
+(or (not x2202) (not x2197) (not x986) (not x44) x2196)
+(or (not x2188) x1745)
+(or (not x2202) (not x2197) x2196 x986 x44)
+(or (not x2183) (not x1812) (not x1718) (not x92))
+(or (not x2197) (not x986) x2202 x2196 x44)
+(or (not x2183) (not x1758) (not x1710) (not x87))
+(or (not x2196) (not x149) x2202 x2195 x981)
+(or (not x2183) (not x1705) (not x1703) (not x79))
+(or (not x2202) (not x2196) (not x981) (not x149) x2195)
+(or (not x2183) (not x1692) (not x1592) (not x55))
+(or (not x2202) (not x2196) x2195 x981 x149)
+(or x2180 x2181 x2182 x2183 x2184)
+(or (not x2196) (not x981) x2202 x2195 x149)
+(or (not x2183) x1648)
+(or (not x2202) (not x2201))
+(or (not x2183) x1700)
+(or (not x2195) x2201)
+(or (not x2178) (not x1812) (not x1672) (not x92))
+(or (not x2201) x2195)
+(or (not x2178) (not x1758) (not x1661) (not x87))
+(or x2200 x1247 x1000)
+(or (not x2178) (not x1703) (not x1656) (not x79))
+(or (not x1247) (not x1000) x2200)
+(or (not x2178) (not x1644) (not x1592) (not x55))
+(or (not x2200) (not x1000) x1247)
+(or x2175 x2176 x2177 x2178 x2179)
+(or (not x2200) (not x1247) x1000)
+(or (not x2178) x1648)
+(or (not x2200) x2199 x1244 x997)
+(or (not x2178) x1651)
+(or (not x2200) (not x1244) (not x997) x2199)
+(or (not x2173) (not x1812) (not x1626) (not x92))
+(or (not x2199) (not x997) x1244)
+(or (not x2173) (not x1758) (not x1618) (not x87))
+(or (not x2199) (not x1244) x997)
+(or (not x2173) (not x1703) (not x1608) (not x79))
+(or (not x2199) x2200)
+(or (not x2173) (not x1598) (not x1592) (not x55))
+(or (not x2199) x2198 x1241 x993)
+(or x2170 x2171 x2172 x2173 x2174)
+(or (not x2199) (not x1241) (not x993) x2198)
+(or (not x2173) x1648)
+(or (not x2198) (not x993) x1241)
+(or (not x2173) x1603)
+(or (not x2198) (not x1241) x993)
+(or (not x2168) (not x1812) (not x1578) (not x92))
+(or (not x2198) x2199)
+(or (not x2168) (not x1758) (not x1566) (not x87))
+(or (not x2198) x2197 x1236 x989)
+(or (not x2168) (not x1703) (not x1551) (not x79))
+(or (not x2198) (not x1236) (not x989) x2197)
+(or (not x2168) (not x1592) (not x1525) (not x55))
+(or (not x2197) (not x989) x1236)
+(or x2165 x2166 x2167 x2168 x2169)
+(or (not x2197) (not x1236) x989)
+(or (not x2168) x1648)
+(or (not x2197) x2198)
+(or (not x2168) x1536)
+(or (not x2197) x2196 x1233 x986)
+(or (not x2194) (not x1812) (not x91))
+(or (not x2197) (not x1233) (not x986) x2196)
+(or (not x2194) (not x1807) (not x1758) (not x86))
+(or (not x2196) (not x986) x1233)
+(or (not x2194) (not x1799) (not x1703) (not x77))
+(or (not x2196) (not x1233) x986)
+(or (not x2194) (not x1793) (not x1648) (not x65))
+(or (not x2196) x2197)
+(or x2190 x2191 x2192 x2193 x2194)
+(or (not x2196) x2195 x1229 x981)
+(or (not x2194) x1592)
+(or (not x2196) (not x1229) (not x981) x2195)
+(or (not x2194) x1787)
+(or (not x2195) (not x981) x1229)
+(or (not x2189) (not x1812) (not x1764) (not x91))
+(or (not x2195) (not x1229) x981)
+(or (not x2189) (not x1759) (not x1758) (not x86))
+(or (not x2195) x2196)
+(or (not x2189) (not x1754) (not x1703) (not x77))
+(or (not x2164) (not x1199) (not x959))
+(or (not x2189) (not x1745) (not x1648) (not x65))
+(or (not x1199) (not x959) x2163)
+(or x2185 x2186 x2187 x2188 x2189)
+(or (not x2164) (not x1199) (not x957) x95)
+(or (not x2189) x1592)
+(or (not x1199) (not x957) (not x95) x2164)
+(or (not x2189) x1739)
+(or (not x2163) (not x1199) (not x957))
+(or (not x2184) (not x1812) (not x1718) (not x91))
+(or (not x2164) (not x1199) (not x956) x94)
+(or (not x2184) (not x1758) (not x1710) (not x86))
+(or (not x1199) (not x956) (not x94) x2164)
+(or (not x2184) (not x1705) (not x1703) (not x77))
+(or (not x2163) (not x1199) (not x956))
+(or (not x2184) (not x1700) (not x1648) (not x65))
+(or (not x2164) (not x1199) (not x954) x92)
+(or x2180 x2181 x2182 x2183 x2184)
+(or (not x1199) (not x954) (not x92) x2164)
+(or (not x2184) x1592)
+(or (not x2163) (not x1199) (not x954))
+(or (not x2184) x1692)
+(or (not x2164) (not x1199) (not x948) x91)
+(or (not x2179) (not x1812) (not x1672) (not x91))
+(or (not x1199) (not x948) (not x91) x2164)
+(or (not x2179) (not x1758) (not x1661) (not x86))
+(or (not x2163) (not x1199) (not x948))
+(or (not x2179) (not x1703) (not x1656) (not x77))
+(or (not x2164) (not x1197) (not x959) x89)
+(or (not x2179) (not x1651) (not x1648) (not x65))
+(or (not x1197) (not x959) (not x89) x2164)
+(or x2175 x2176 x2177 x2178 x2179)
+(or (not x2163) (not x1197) (not x959))
+(or (not x2179) x1592)
+(or (not x2164) (not x1197) (not x957))
+(or (not x2179) x1644)
+(or (not x1197) (not x957) x2163)
+(or (not x2174) (not x1812) (not x1626) (not x91))
+(or (not x2164) (not x1197) (not x956) x88)
+(or (not x2174) (not x1758) (not x1618) (not x86))
+(or (not x1197) (not x956) (not x88) x2164)
+(or (not x2174) (not x1703) (not x1608) (not x77))
+(or (not x2163) (not x1197) (not x956))
+(or (not x2174) (not x1648) (not x1603) (not x65))
+(or (not x2164) (not x1197) (not x954) x87)
+(or x2170 x2171 x2172 x2173 x2174)
+(or (not x1197) (not x954) (not x87) x2164)
+(or (not x2174) x1592)
+(or (not x2163) (not x1197) (not x954))
+(or (not x2174) x1598)
+(or (not x2164) (not x1197) (not x948) x86)
+(or (not x2169) (not x1812) (not x1578) (not x91))
+(or (not x1197) (not x948) (not x86) x2164)
+(or (not x2169) (not x1758) (not x1566) (not x86))
+(or (not x2163) (not x1197) (not x948))
+(or (not x2169) (not x1703) (not x1551) (not x77))
+(or (not x2164) (not x1194) (not x959) x82)
+(or (not x2169) (not x1648) (not x1536) (not x65))
+(or (not x1194) (not x959) (not x82) x2164)
+(or x2165 x2166 x2167 x2168 x2169)
+(or (not x2163) (not x1194) (not x959))
+(or (not x2169) x1592)
+(or (not x2164) (not x1194) (not x957) x81)
+(or (not x2169) x1525)
+(or (not x1194) (not x957) (not x81) x2164)
+(or x2190 x2191 x2192 x2193 x2194)
+(or (not x2163) (not x1194) (not x957))
+(or (not x2164) (not x1194) (not x956))
+(or x2185 x2186 x2187 x2188 x2189)
+(or (not x1194) (not x956) x2163)
+(or (not x2164) (not x1194) (not x954) x79)
+(or x2180 x2181 x2182 x2183 x2184)
+(or (not x1194) (not x954) (not x79) x2164)
+(or (not x2163) (not x1194) (not x954))
+(or x2175 x2176 x2177 x2178 x2179)
+(or (not x2164) (not x1194) (not x948) x77)
+(or (not x1194) (not x948) (not x77) x2164)
+(or x2170 x2171 x2172 x2173 x2174)
+(or (not x2163) (not x1194) (not x948))
+(or (not x2164) (not x1191) (not x959) x73)
+(or x2165 x2166 x2167 x2168 x2169)
+(or (not x1191) (not x959) (not x73) x2164)
+(or (not x2163) (not x1191) (not x959))
+(or (not x1284) (not x1491) (not x1442) (not x89))
+(or (not x2164) (not x1191) (not x957) x67)
+(or (not x1284) (not x1485) (not x1386) (not x82))
+(or (not x1191) (not x957) (not x67) x2164)
+(or (not x1284) (not x1477) (not x1326) (not x73))
+(or (not x2163) (not x1191) (not x957))
+(or (not x1284) (not x1467) (not x1256) (not x58))
+(or (not x2164) (not x1191) (not x956) x66)
+(or x1284 x1283 x1281 x1279 x1276)
+(or (not x1191) (not x956) (not x66) x2164)
+(or (not x1284) x1497)
+(or (not x2163) (not x1191) (not x956))
+(or (not x1284) x1497)
+(or (not x2164) (not x1191) (not x954))
+(or (not x1199) (not x1443) (not x1442) (not x89))
+(or (not x1191) (not x954) x2163)
+(or (not x1199) (not x1437) (not x1386) (not x82))
+(or (not x2164) (not x1191) (not x948) x65)
+(or (not x1199) (not x1431) (not x1326) (not x73))
+(or (not x1191) (not x948) (not x65) x2164)
+(or (not x1199) (not x1421) (not x1256) (not x58))
+(or (not x2163) (not x1191) (not x948))
+(or x1199 x1197 x1194 x1191 x1188)
+(or (not x2164) (not x1188) (not x959) x58)
+(or (not x1199) x1497)
+(or (not x1188) (not x959) (not x58) x2164)
+(or (not x1199) x1452)
+(or (not x2163) (not x1188) (not x959))
+(or (not x1113) (not x1442) (not x1398) (not x89))
+(or (not x2164) (not x1188) (not x957) x57)
+(or (not x1113) (not x1390) (not x1386) (not x82))
+(or (not x1188) (not x957) (not x57) x2164)
+(or (not x1113) (not x1382) (not x1326) (not x73))
+(or (not x2163) (not x1188) (not x957))
+(or (not x1113) (not x1375) (not x1256) (not x58))
+(or (not x2164) (not x1188) (not x956) x56)
+(or x1113 x1111 x1109 x1108 x1105)
+(or (not x1188) (not x956) (not x56) x2164)
+(or (not x1113) x1497)
+(or (not x2163) (not x1188) (not x956))
+(or (not x1113) x1403)
+(or (not x2164) (not x1188) (not x954) x55)
+(or (not x1045) (not x1442) (not x1349) (not x89))
+(or (not x1188) (not x954) (not x55) x2164)
+(or (not x1045) (not x1386) (not x1342) (not x82))
+(or (not x2163) (not x1188) (not x954))
+(or (not x1045) (not x1335) (not x1326) (not x73))
+(or (not x2164) (not x1188) (not x948))
+(or (not x1045) (not x1324) (not x1256) (not x58))
+(or (not x1188) (not x948) x2163)
+(or x1045 x1043 x1042 x1040 x1037)
+(or (not x2162) (not x2157) (not x2149) x2161 x2159)
+(or (not x1045) x1497)
+(or (not x2162) (not x2149) x2158 x2157)
+(or (not x1045) x1354)
+(or (not x2162) x2150 x2149)
+(or (not x959) (not x1442) (not x1290) (not x89))
+(or (not x2159) (not x2157) (not x2149) x2162)
+(or (not x959) (not x1386) (not x1285) (not x82))
+(or (not x2161) (not x2157) (not x2149) x2162)
+(or (not x959) (not x1326) (not x1272) (not x73))
+(or (not x2158) (not x2149) x2162)
+(or (not x959) (not x1263) (not x1256) (not x58))
+(or (not x2150) x2162)
+(or x959 x957 x956 x954 x948)
+(or (not x2161) (not x2159))
+(or (not x959) x1497)
+(or (not x1267) x2161 x1020 x2160)
+(or (not x959) x1295)
+(or (not x2161) (not x1267) (not x2160) x1020)
+(or (not x974) (not x1442) (not x1219) (not x89))
+(or (not x2161) (not x1020) x1267 x2160)
+(or (not x974) (not x1386) (not x1208) (not x82))
+(or (not x1020) (not x2160) x2161 x1267)
+(or (not x974) (not x1326) (not x1195) (not x73))
+(or (not x1265) x2161 x1018 x2160)
+(or (not x974) (not x1256) (not x1178) (not x58))
+(or (not x2161) (not x1265) (not x2160) x1018)
+(or x974 x970 x967 x962 x949)
+(or (not x2161) (not x1018) x1265 x2160)
+(or (not x974) x1497)
+(or (not x1018) (not x2160) x2161 x1265)
+(or (not x974) x1237)
+(or (not x1264) x2161 x1016 x2160)
+(or (not x1283) (not x1497) (not x95))
+(or (not x2161) (not x1264) (not x2160) x1016)
+(or (not x1283) (not x1485) (not x1386) (not x81))
+(or (not x2161) (not x1016) x1264 x2160)
+(or (not x1283) (not x1477) (not x1326) (not x67))
+(or (not x1016) (not x2160) x2161 x1264)
+(or (not x1283) (not x1467) (not x1256) (not x57))
+(or (not x1262) x2161 x1014 x2160)
+(or x1284 x1283 x1281 x1279 x1276)
+(or (not x2161) (not x1262) (not x2160) x1014)
+(or (not x1283) x1442)
+(or (not x2161) (not x1014) x1262 x2160)
+(or (not x1283) x1491)
+(or (not x1014) (not x2160) x2161 x1262)
+(or (not x1197) (not x1497) (not x1452) (not x95))
+(or (not x1261) x2161 x1011 x2160)
+(or (not x1197) (not x1437) (not x1386) (not x81))
+(or (not x2161) (not x1261) (not x2160) x1011)
+(or (not x1197) (not x1431) (not x1326) (not x67))
+(or (not x2161) (not x1011) x1261 x2160)
+(or (not x1197) (not x1421) (not x1256) (not x57))
+(or (not x1011) (not x2160) x2161 x1261)
+(or x1199 x1197 x1194 x1191 x1188)
+(or (not x1265) (not x1018) x2159 x1267 x1020)
+(or (not x1197) x1442)
+(or (not x1264) (not x1016) x2159 x1265 x1018)
+(or (not x1197) x1443)
+(or (not x1262) (not x1014) x2159 x1264 x1016)
+(or (not x1111) (not x1497) (not x1403) (not x95))
+(or (not x1261) (not x1011) x2159 x1262 x1014)
+(or (not x1111) (not x1390) (not x1386) (not x81))
+(or x2159 x1261 x1011)
+(or (not x1111) (not x1382) (not x1326) (not x67))
+(or (not x1267) (not x1020) x2159)
+(or (not x1111) (not x1375) (not x1256) (not x57))
+(or (not x2159) (not x1020) x1267)
+(or x1113 x1111 x1109 x1108 x1105)
+(or (not x2159) (not x1267) x1020)
+(or (not x1111) x1442)
+(or (not x2159) (not x1018) x1265)
+(or (not x1111) x1398)
+(or (not x2159) (not x1265) x1018)
+(or (not x1043) (not x1497) (not x1354) (not x95))
+(or (not x2159) (not x1016) x1264)
+(or (not x1043) (not x1386) (not x1342) (not x81))
+(or (not x2159) (not x1264) x1016)
+(or (not x1043) (not x1335) (not x1326) (not x67))
+(or (not x2159) (not x1014) x1262)
+(or (not x1043) (not x1324) (not x1256) (not x57))
+(or (not x2159) (not x1262) x1014)
+(or x1045 x1043 x1042 x1040 x1037)
+(or (not x2159) (not x1011) x1261)
+(or (not x1043) x1442)
+(or (not x2159) (not x1261) x1011)
+(or (not x1043) x1349)
+(or (not x52) x2158 x2156 x999)
+(or (not x957) (not x1497) (not x1295) (not x95))
+(or (not x2158) (not x999) (not x52) x2156)
+(or (not x957) (not x1386) (not x1285) (not x81))
+(or (not x2158) x2156 x999 x52)
+(or (not x957) (not x1326) (not x1272) (not x67))
+(or (not x999) x2158 x2156 x52)
+(or (not x957) (not x1263) (not x1256) (not x57))
+(or (not x2156) (not x50) x2158 x2155 x996)
+(or x959 x957 x956 x954 x948)
+(or (not x2158) (not x2156) (not x996) (not x50) x2155)
+(or (not x957) x1442)
+(or (not x2158) (not x2156) x2155 x996 x50)
+(or (not x957) x1290)
+(or (not x2156) (not x996) x2158 x2155 x50)
+(or (not x970) (not x1497) (not x1237) (not x95))
+(or (not x2155) (not x48) x2158 x2154 x992)
+(or (not x970) (not x1386) (not x1208) (not x81))
+(or (not x2158) (not x2155) (not x992) (not x48) x2154)
+(or (not x970) (not x1326) (not x1195) (not x67))
+(or (not x2158) (not x2155) x2154 x992 x48)
+(or (not x970) (not x1256) (not x1178) (not x57))
+(or (not x2155) (not x992) x2158 x2154 x48)
+(or x974 x970 x967 x962 x949)
+(or (not x2154) (not x46) x2158 x2153 x988)
+(or (not x970) x1442)
+(or (not x2158) (not x2154) (not x988) (not x46) x2153)
+(or (not x970) x1219)
+(or (not x2158) (not x2154) x2153 x988 x46)
+(or (not x1281) (not x1497) (not x94))
+(or (not x2154) (not x988) x2158 x2153 x46)
+(or (not x1281) (not x1491) (not x1442) (not x88))
+(or (not x2153) (not x44) x2158 x2152 x985)
+(or (not x1281) (not x1477) (not x1326) (not x66))
+(or (not x2158) (not x2153) (not x985) (not x44) x2152)
+(or (not x1281) (not x1467) (not x1256) (not x56))
+(or (not x2158) (not x2153) x2152 x985 x44)
+(or x1284 x1283 x1281 x1279 x1276)
+(or (not x2153) (not x985) x2158 x2152 x44)
+(or (not x1281) x1386)
+(or (not x2152) (not x149) x2158 x2151 x980)
+(or (not x1281) x1485)
+(or (not x2158) (not x2152) (not x980) (not x149) x2151)
+(or (not x1194) (not x1497) (not x1452) (not x94))
+(or (not x2158) (not x2152) x2151 x980 x149)
+(or (not x1194) (not x1443) (not x1442) (not x88))
+(or (not x2152) (not x980) x2158 x2151 x149)
+(or (not x1194) (not x1431) (not x1326) (not x66))
+(or (not x2158) (not x2157))
+(or (not x1194) (not x1421) (not x1256) (not x56))
+(or (not x2151) x2157)
+(or x1199 x1197 x1194 x1191 x1188)
+(or (not x2157) x2151)
+(or (not x1194) x1386)
+(or x2156 x1247 x999)
+(or (not x1194) x1437)
+(or (not x1247) (not x999) x2156)
+(or (not x1109) (not x1497) (not x1403) (not x94))
+(or (not x2156) (not x999) x1247)
+(or (not x1109) (not x1442) (not x1398) (not x88))
+(or (not x2156) (not x1247) x999)
+(or (not x1109) (not x1382) (not x1326) (not x66))
+(or (not x2156) x2155 x1244 x996)
+(or (not x1109) (not x1375) (not x1256) (not x56))
+(or (not x2156) (not x1244) (not x996) x2155)
+(or x1113 x1111 x1109 x1108 x1105)
+(or (not x2155) (not x996) x1244)
+(or (not x1109) x1386)
+(or (not x2155) (not x1244) x996)
+(or (not x1109) x1390)
+(or (not x2155) x2156)
+(or (not x1042) (not x1497) (not x1354) (not x94))
+(or (not x2155) x2154 x1241 x992)
+(or (not x1042) (not x1442) (not x1349) (not x88))
+(or (not x2155) (not x1241) (not x992) x2154)
+(or (not x1042) (not x1335) (not x1326) (not x66))
+(or (not x2154) (not x992) x1241)
+(or (not x1042) (not x1324) (not x1256) (not x56))
+(or (not x2154) (not x1241) x992)
+(or x1045 x1043 x1042 x1040 x1037)
+(or (not x2154) x2155)
+(or (not x1042) x1386)
+(or (not x2154) x2153 x1236 x988)
+(or (not x1042) x1342)
+(or (not x2154) (not x1236) (not x988) x2153)
+(or (not x956) (not x1497) (not x1295) (not x94))
+(or (not x2153) (not x988) x1236)
+(or (not x956) (not x1442) (not x1290) (not x88))
+(or (not x2153) (not x1236) x988)
+(or (not x956) (not x1326) (not x1272) (not x66))
+(or (not x2153) x2154)
+(or (not x956) (not x1263) (not x1256) (not x56))
+(or (not x2153) x2152 x1233 x985)
+(or x959 x957 x956 x954 x948)
+(or (not x2153) (not x1233) (not x985) x2152)
+(or (not x956) x1386)
+(or (not x2152) (not x985) x1233)
+(or (not x956) x1285)
+(or (not x2152) (not x1233) x985)
+(or (not x967) (not x1497) (not x1237) (not x94))
+(or (not x2152) x2153)
+(or (not x967) (not x1442) (not x1219) (not x88))
+(or (not x2152) x2151 x1229 x980)
+(or (not x967) (not x1326) (not x1195) (not x66))
+(or (not x2152) (not x1229) (not x980) x2151)
+(or (not x967) (not x1256) (not x1178) (not x56))
+(or (not x2151) (not x980) x1229)
+(or x974 x970 x967 x962 x949)
+(or (not x2151) (not x1229) x980)
+(or (not x967) x1386)
+(or (not x2151) x2152)
+(or (not x967) x1208)
+(or (not x2150) (not x1199) (not x974))
+(or (not x1279) (not x1497) (not x92))
+(or (not x1199) (not x974) x2149)
+(or (not x1279) (not x1491) (not x1442) (not x87))
+(or (not x2150) (not x1199) (not x970) x95)
+(or (not x1279) (not x1485) (not x1386) (not x79))
+(or (not x1199) (not x970) (not x95) x2150)
+(or (not x1279) (not x1467) (not x1256) (not x55))
+(or (not x2149) (not x1199) (not x970))
+(or x1284 x1283 x1281 x1279 x1276)
+(or (not x2150) (not x1199) (not x967) x94)
+(or (not x1279) x1326)
+(or (not x1199) (not x967) (not x94) x2150)
+(or (not x1279) x1477)
+(or (not x2149) (not x1199) (not x967))
+(or (not x1191) (not x1497) (not x1452) (not x92))
+(or (not x2150) (not x1199) (not x962) x92)
+(or (not x1191) (not x1443) (not x1442) (not x87))
+(or (not x1199) (not x962) (not x92) x2150)
+(or (not x1191) (not x1437) (not x1386) (not x79))
+(or (not x2149) (not x1199) (not x962))
+(or (not x1191) (not x1421) (not x1256) (not x55))
+(or (not x2150) (not x1199) (not x949) x91)
+(or x1199 x1197 x1194 x1191 x1188)
+(or (not x1199) (not x949) (not x91) x2150)
+(or (not x1191) x1326)
+(or (not x2149) (not x1199) (not x949))
+(or (not x1191) x1431)
+(or (not x2150) (not x1197) (not x974) x89)
+(or (not x1108) (not x1497) (not x1403) (not x92))
+(or (not x1197) (not x974) (not x89) x2150)
+(or (not x1108) (not x1442) (not x1398) (not x87))
+(or (not x2149) (not x1197) (not x974))
+(or (not x1108) (not x1390) (not x1386) (not x79))
+(or (not x2150) (not x1197) (not x970))
+(or (not x1108) (not x1375) (not x1256) (not x55))
+(or (not x1197) (not x970) x2149)
+(or x1113 x1111 x1109 x1108 x1105)
+(or (not x2150) (not x1197) (not x967) x88)
+(or (not x1108) x1326)
+(or (not x1197) (not x967) (not x88) x2150)
+(or (not x1108) x1382)
+(or (not x2149) (not x1197) (not x967))
+(or (not x1040) (not x1497) (not x1354) (not x92))
+(or (not x2150) (not x1197) (not x962) x87)
+(or (not x1040) (not x1442) (not x1349) (not x87))
+(or (not x1197) (not x962) (not x87) x2150)
+(or (not x1040) (not x1386) (not x1342) (not x79))
+(or (not x2149) (not x1197) (not x962))
+(or (not x1040) (not x1324) (not x1256) (not x55))
+(or (not x2150) (not x1197) (not x949) x86)
+(or x1045 x1043 x1042 x1040 x1037)
+(or (not x1197) (not x949) (not x86) x2150)
+(or (not x1040) x1326)
+(or (not x2149) (not x1197) (not x949))
+(or (not x1040) x1335)
+(or (not x2150) (not x1194) (not x974) x82)
+(or (not x954) (not x1497) (not x1295) (not x92))
+(or (not x1194) (not x974) (not x82) x2150)
+(or (not x954) (not x1442) (not x1290) (not x87))
+(or (not x2149) (not x1194) (not x974))
+(or (not x954) (not x1386) (not x1285) (not x79))
+(or (not x2150) (not x1194) (not x970) x81)
+(or (not x954) (not x1263) (not x1256) (not x55))
+(or (not x1194) (not x970) (not x81) x2150)
+(or x959 x957 x956 x954 x948)
+(or (not x2149) (not x1194) (not x970))
+(or (not x954) x1326)
+(or (not x2150) (not x1194) (not x967))
+(or (not x954) x1272)
+(or (not x1194) (not x967) x2149)
+(or (not x962) (not x1497) (not x1237) (not x92))
+(or (not x2150) (not x1194) (not x962) x79)
+(or (not x962) (not x1442) (not x1219) (not x87))
+(or (not x1194) (not x962) (not x79) x2150)
+(or (not x962) (not x1386) (not x1208) (not x79))
+(or (not x2149) (not x1194) (not x962))
+(or (not x962) (not x1256) (not x1178) (not x55))
+(or (not x2150) (not x1194) (not x949) x77)
+(or x974 x970 x967 x962 x949)
+(or (not x1194) (not x949) (not x77) x2150)
+(or (not x962) x1326)
+(or (not x2149) (not x1194) (not x949))
+(or (not x962) x1195)
+(or (not x2150) (not x1191) (not x974) x73)
+(or (not x1276) (not x1497) (not x91))
+(or (not x1191) (not x974) (not x73) x2150)
+(or (not x1276) (not x1491) (not x1442) (not x86))
+(or (not x2149) (not x1191) (not x974))
+(or (not x1276) (not x1485) (not x1386) (not x77))
+(or (not x2150) (not x1191) (not x970) x67)
+(or (not x1276) (not x1477) (not x1326) (not x65))
+(or (not x1191) (not x970) (not x67) x2150)
+(or x1284 x1283 x1281 x1279 x1276)
+(or (not x2149) (not x1191) (not x970))
+(or (not x1276) x1256)
+(or (not x2150) (not x1191) (not x967) x66)
+(or (not x1276) x1467)
+(or (not x1191) (not x967) (not x66) x2150)
+(or (not x1188) (not x1497) (not x1452) (not x91))
+(or (not x2149) (not x1191) (not x967))
+(or (not x1188) (not x1443) (not x1442) (not x86))
+(or (not x2150) (not x1191) (not x962))
+(or (not x1188) (not x1437) (not x1386) (not x77))
+(or (not x1191) (not x962) x2149)
+(or (not x1188) (not x1431) (not x1326) (not x65))
+(or (not x2150) (not x1191) (not x949) x65)
+(or x1199 x1197 x1194 x1191 x1188)
+(or (not x1191) (not x949) (not x65) x2150)
+(or (not x1188) x1256)
+(or (not x2149) (not x1191) (not x949))
+(or (not x1188) x1421)
+(or (not x2150) (not x1188) (not x974) x58)
+(or (not x1105) (not x1497) (not x1403) (not x91))
+(or (not x1188) (not x974) (not x58) x2150)
+(or (not x1105) (not x1442) (not x1398) (not x86))
+(or (not x2149) (not x1188) (not x974))
+(or (not x1105) (not x1390) (not x1386) (not x77))
+(or (not x2150) (not x1188) (not x970) x57)
+(or (not x1105) (not x1382) (not x1326) (not x65))
+(or (not x1188) (not x970) (not x57) x2150)
+(or x1113 x1111 x1109 x1108 x1105)
+(or (not x2149) (not x1188) (not x970))
+(or (not x1105) x1256)
+(or (not x2150) (not x1188) (not x967) x56)
+(or (not x1105) x1375)
+(or (not x1188) (not x967) (not x56) x2150)
+(or (not x1037) (not x1497) (not x1354) (not x91))
+(or (not x2149) (not x1188) (not x967))
+(or (not x1037) (not x1442) (not x1349) (not x86))
+(or (not x2150) (not x1188) (not x962) x55)
+(or (not x1037) (not x1386) (not x1342) (not x77))
+(or (not x1188) (not x962) (not x55) x2150)
+(or (not x1037) (not x1335) (not x1326) (not x65))
+(or (not x2149) (not x1188) (not x962))
+(or x1045 x1043 x1042 x1040 x1037)
+(or (not x2150) (not x1188) (not x949))
+(or (not x1037) x1256)
+(or (not x1188) (not x949) x2149)
+(or (not x1037) x1324)
+(or (not x2052) (not x69) (not x6) x2148)
+(or (not x948) (not x1497) (not x1295) (not x91))
+(or (not x2148) (not x2144) (not x2136) x2147 x2146)
+(or (not x948) (not x1442) (not x1290) (not x86))
+(or (not x2148) (not x2136) x2145 x2144)
+(or (not x948) (not x1386) (not x1285) (not x77))
+(or (not x2148) x2137 x2136)
+(or (not x948) (not x1326) (not x1272) (not x65))
+(or (not x2146) (not x2144) (not x2136) x2148)
+(or x959 x957 x956 x954 x948)
+(or (not x2147) (not x2144) (not x2136) x2148)
+(or (not x948) x1256)
+(or (not x2145) (not x2136) x2148)
+(or (not x948) x1263)
+(or (not x2137) x2148)
+(or (not x949) (not x1497) (not x1237) (not x91))
+(or (not x2147) (not x2146))
+(or (not x949) (not x1442) (not x1219) (not x86))
+(or (not x1168) x2147 x1334 x1987)
+(or (not x949) (not x1386) (not x1208) (not x77))
+(or (not x2147) (not x1168) (not x1987) x1334)
+(or (not x949) (not x1326) (not x1195) (not x65))
+(or (not x2147) (not x1334) x1168 x1987)
+(or x974 x970 x967 x962 x949)
+(or (not x1334) (not x1987) x2147 x1168)
+(or (not x949) x1256)
+(or (not x1167) x2147 x1332 x1987)
+(or (not x949) x1178)
+(or (not x2147) (not x1167) (not x1987) x1332)
+(or x1284 x1283 x1281 x1279 x1276)
+(or (not x2147) (not x1332) x1167 x1987)
+(or (not x1332) (not x1987) x2147 x1167)
+(or x1199 x1197 x1194 x1191 x1188)
+(or (not x1165) x2147 x1331 x1987)
+(or (not x2147) (not x1165) (not x1987) x1331)
+(or x1113 x1111 x1109 x1108 x1105)
+(or (not x2147) (not x1331) x1165 x1987)
+(or (not x1331) (not x1987) x2147 x1165)
+(or x1045 x1043 x1042 x1040 x1037)
+(or (not x1164) x2147 x1329 x1987)
+(or (not x2147) (not x1164) (not x1987) x1329)
+(or x959 x957 x956 x954 x948)
+(or (not x2147) (not x1329) x1164 x1987)
+(or (not x1329) (not x1987) x2147 x1164)
+(or x974 x970 x967 x962 x949)
+(or (not x1160) x2147 x1328 x1987)
+(or (not x2147) (not x1160) (not x1987) x1328)
+(or (not x483) (not x1134) (not x1074) (not x89))
+(or (not x2147) (not x1328) x1160 x1987)
+(or (not x483) (not x1122) (not x990) (not x82))
+(or (not x1328) (not x1987) x2147 x1160)
+(or (not x483) (not x1117) (not x886) (not x73))
+(or (not x1332) (not x1167) x2146 x1334 x1168)
+(or (not x483) (not x1110) (not x828) (not x58))
+(or (not x1331) (not x1165) x2146 x1332 x1167)
+(or x483 x481 x478 x476 x473)
+(or (not x1329) (not x1164) x2146 x1331 x1165)
+(or (not x483) x1146)
+(or (not x1328) (not x1160) x2146 x1329 x1164)
+(or (not x483) x1146)
+(or x2146 x1328 x1160)
+(or (not x107) (not x1076) (not x1074) (not x89))
+(or (not x1334) (not x1168) x2146)
+(or (not x107) (not x1063) (not x990) (not x82))
+(or (not x2146) (not x1334) x1168)
+(or (not x107) (not x1053) (not x886) (not x73))
+(or (not x2146) (not x1168) x1334)
+(or (not x107) (not x1048) (not x828) (not x58))
+(or (not x2146) (not x1332) x1167)
+(or x107 x101 x93 x85 x70)
+(or (not x2146) (not x1167) x1332)
+(or (not x107) x1146)
+(or (not x2146) (not x1331) x1165)
+(or (not x107) x1082)
+(or (not x2146) (not x1165) x1331)
+(or (not x393) (not x1074) (not x1007) (not x89))
+(or (not x2146) (not x1329) x1164)
+(or (not x393) (not x998) (not x990) (not x82))
+(or (not x2146) (not x1164) x1329)
+(or (not x393) (not x977) (not x886) (not x73))
+(or (not x2146) (not x1328) x1160)
+(or (not x393) (not x971) (not x828) (not x58))
+(or (not x2146) (not x1160) x1328)
+(or x393 x392 x390 x387 x384)
+(or (not x52) x2145 x2143 x1318)
+(or (not x393) x1146)
+(or (not x2145) (not x1318) (not x52) x2143)
+(or (not x393) x1025)
+(or (not x2145) x2143 x1318 x52)
+(or (not x299) (not x1074) (not x932) (not x89))
+(or (not x1318) x2145 x2143 x52)
+(or (not x299) (not x990) (not x918) (not x82))
+(or (not x2143) (not x50) x2145 x2142 x1316)
+(or (not x299) (not x901) (not x886) (not x73))
+(or (not x2145) (not x2143) (not x1316) (not x50) x2142)
+(or (not x299) (not x880) (not x828) (not x58))
+(or (not x2145) (not x2143) x2142 x1316 x50)
+(or x299 x296 x293 x291 x288)
+(or (not x2143) (not x1316) x2145 x2142 x50)
+(or (not x299) x1146)
+(or (not x2142) (not x48) x2145 x2141 x1312)
+(or (not x299) x943)
+(or (not x2145) (not x2142) (not x1312) (not x48) x2141)
+(or (not x204) (not x1074) (not x854) (not x89))
+(or (not x2145) (not x2142) x2141 x1312 x48)
+(or (not x204) (not x990) (not x845) (not x82))
+(or (not x2142) (not x1312) x2145 x2141 x48)
+(or (not x204) (not x886) (not x840) (not x73))
+(or (not x2141) (not x46) x2145 x2140 x1308)
+(or (not x204) (not x835) (not x828) (not x58))
+(or (not x2145) (not x2141) (not x1308) (not x46) x2140)
+(or x204 x203 x200 x197 x194)
+(or (not x2145) (not x2141) x2140 x1308 x46)
+(or (not x204) x1146)
+(or (not x2141) (not x1308) x2145 x2140 x46)
+(or (not x204) x863)
+(or (not x2140) (not x44) x2145 x2139 x1303)
+(or (not x83) (not x1074) (not x803) (not x89))
+(or (not x2145) (not x2140) (not x1303) (not x44) x2139)
+(or (not x83) (not x990) (not x787) (not x82))
+(or (not x2145) (not x2140) x2139 x1303 x44)
+(or (not x83) (not x886) (not x773) (not x73))
+(or (not x2140) (not x1303) x2145 x2139 x44)
+(or (not x83) (not x828) (not x762) (not x58))
+(or (not x2139) (not x149) x2145 x2138 x1300)
+(or x83 x80 x78 x75 x71)
+(or (not x2145) (not x2139) (not x1300) (not x149) x2138)
+(or (not x83) x1146)
+(or (not x2145) (not x2139) x2138 x1300 x149)
+(or (not x83) x815)
+(or (not x2139) (not x1300) x2145 x2138 x149)
+(or (not x481) (not x1146) (not x95))
+(or (not x2145) (not x2144))
+(or (not x481) (not x1122) (not x990) (not x81))
+(or (not x2138) x2144)
+(or (not x481) (not x1117) (not x886) (not x67))
+(or (not x2144) x2138)
+(or (not x481) (not x1110) (not x828) (not x57))
+(or x2143 x1318 x1141)
+(or x483 x481 x478 x476 x473)
+(or (not x1318) (not x1141) x2143)
+(or (not x481) x1074)
+(or (not x2143) (not x1318) x1141)
+(or (not x481) x1134)
+(or (not x2143) (not x1141) x1318)
+(or (not x101) (not x1146) (not x1082) (not x95))
+(or (not x2143) x2142 x1316 x1139)
+(or (not x101) (not x1063) (not x990) (not x81))
+(or (not x2143) (not x1316) (not x1139) x2142)
+(or (not x101) (not x1053) (not x886) (not x67))
+(or (not x2142) (not x1316) x1139)
+(or (not x101) (not x1048) (not x828) (not x57))
+(or (not x2142) (not x1139) x1316)
+(or x107 x101 x93 x85 x70)
+(or (not x2142) x2143)
+(or (not x101) x1074)
+(or (not x2142) x2141 x1312 x1136)
+(or (not x101) x1076)
+(or (not x2142) (not x1312) (not x1136) x2141)
+(or (not x392) (not x1146) (not x1025) (not x95))
+(or (not x2141) (not x1312) x1136)
+(or (not x392) (not x998) (not x990) (not x81))
+(or (not x2141) (not x1136) x1312)
+(or (not x392) (not x977) (not x886) (not x67))
+(or (not x2141) x2142)
+(or (not x392) (not x971) (not x828) (not x57))
+(or (not x2141) x2140 x1308 x1133)
+(or x393 x392 x390 x387 x384)
+(or (not x2141) (not x1308) (not x1133) x2140)
+(or (not x392) x1074)
+(or (not x2140) (not x1308) x1133)
+(or (not x392) x1007)
+(or (not x2140) (not x1133) x1308)
+(or (not x296) (not x1146) (not x943) (not x95))
+(or (not x2140) x2141)
+(or (not x296) (not x990) (not x918) (not x81))
+(or (not x2140) x2139 x1303 x1131)
+(or (not x296) (not x901) (not x886) (not x67))
+(or (not x2140) (not x1303) (not x1131) x2139)
+(or (not x296) (not x880) (not x828) (not x57))
+(or (not x2139) (not x1303) x1131)
+(or x299 x296 x293 x291 x288)
+(or (not x2139) (not x1131) x1303)
+(or (not x296) x1074)
+(or (not x2139) x2140)
+(or (not x296) x932)
+(or (not x2139) x2138 x1300 x1128)
+(or (not x203) (not x1146) (not x863) (not x95))
+(or (not x2139) (not x1300) (not x1128) x2138)
+(or (not x203) (not x990) (not x845) (not x81))
+(or (not x2138) (not x1300) x1128)
+(or (not x203) (not x886) (not x840) (not x67))
+(or (not x2138) (not x1128) x1300)
+(or (not x203) (not x835) (not x828) (not x57))
+(or (not x2138) x2139)
+(or x204 x203 x200 x197 x194)
+(or (not x2137) (not x1284) (not x1113))
+(or (not x203) x1074)
+(or (not x1284) (not x1113) x2136)
+(or (not x203) x854)
+(or (not x2137) (not x1283) (not x1113) x95)
+(or (not x80) (not x1146) (not x815) (not x95))
+(or (not x1283) (not x1113) (not x95) x2137)
+(or (not x80) (not x990) (not x787) (not x81))
+(or (not x2136) (not x1283) (not x1113))
+(or (not x80) (not x886) (not x773) (not x67))
+(or (not x2137) (not x1281) (not x1113) x94)
+(or (not x80) (not x828) (not x762) (not x57))
+(or (not x1281) (not x1113) (not x94) x2137)
+(or x83 x80 x78 x75 x71)
+(or (not x2136) (not x1281) (not x1113))
+(or (not x80) x1074)
+(or (not x2137) (not x1279) (not x1113) x92)
+(or (not x80) x803)
+(or (not x1279) (not x1113) (not x92) x2137)
+(or (not x478) (not x1146) (not x94))
+(or (not x2136) (not x1279) (not x1113))
+(or (not x478) (not x1134) (not x1074) (not x88))
+(or (not x2137) (not x1276) (not x1113) x91)
+(or (not x478) (not x1117) (not x886) (not x66))
+(or (not x1276) (not x1113) (not x91) x2137)
+(or (not x478) (not x1110) (not x828) (not x56))
+(or (not x2136) (not x1276) (not x1113))
+(or x483 x481 x478 x476 x473)
+(or (not x2137) (not x1284) (not x1111) x89)
+(or (not x478) x990)
+(or (not x1284) (not x1111) (not x89) x2137)
+(or (not x478) x1122)
+(or (not x2136) (not x1284) (not x1111))
+(or (not x93) (not x1146) (not x1082) (not x94))
+(or (not x2137) (not x1283) (not x1111))
+(or (not x93) (not x1076) (not x1074) (not x88))
+(or (not x1283) (not x1111) x2136)
+(or (not x93) (not x1053) (not x886) (not x66))
+(or (not x2137) (not x1281) (not x1111) x88)
+(or (not x93) (not x1048) (not x828) (not x56))
+(or (not x1281) (not x1111) (not x88) x2137)
+(or x107 x101 x93 x85 x70)
+(or (not x2136) (not x1281) (not x1111))
+(or (not x93) x990)
+(or (not x2137) (not x1279) (not x1111) x87)
+(or (not x93) x1063)
+(or (not x1279) (not x1111) (not x87) x2137)
+(or (not x390) (not x1146) (not x1025) (not x94))
+(or (not x2136) (not x1279) (not x1111))
+(or (not x390) (not x1074) (not x1007) (not x88))
+(or (not x2137) (not x1276) (not x1111) x86)
+(or (not x390) (not x977) (not x886) (not x66))
+(or (not x1276) (not x1111) (not x86) x2137)
+(or (not x390) (not x971) (not x828) (not x56))
+(or (not x2136) (not x1276) (not x1111))
+(or x393 x392 x390 x387 x384)
+(or (not x2137) (not x1284) (not x1109) x82)
+(or (not x390) x990)
+(or (not x1284) (not x1109) (not x82) x2137)
+(or (not x390) x998)
+(or (not x2136) (not x1284) (not x1109))
+(or (not x293) (not x1146) (not x943) (not x94))
+(or (not x2137) (not x1283) (not x1109) x81)
+(or (not x293) (not x1074) (not x932) (not x88))
+(or (not x1283) (not x1109) (not x81) x2137)
+(or (not x293) (not x901) (not x886) (not x66))
+(or (not x2136) (not x1283) (not x1109))
+(or (not x293) (not x880) (not x828) (not x56))
+(or (not x2137) (not x1281) (not x1109))
+(or x299 x296 x293 x291 x288)
+(or (not x1281) (not x1109) x2136)
+(or (not x293) x990)
+(or (not x2137) (not x1279) (not x1109) x79)
+(or (not x293) x918)
+(or (not x1279) (not x1109) (not x79) x2137)
+(or (not x200) (not x1146) (not x863) (not x94))
+(or (not x2136) (not x1279) (not x1109))
+(or (not x200) (not x1074) (not x854) (not x88))
+(or (not x2137) (not x1276) (not x1109) x77)
+(or (not x200) (not x886) (not x840) (not x66))
+(or (not x1276) (not x1109) (not x77) x2137)
+(or (not x200) (not x835) (not x828) (not x56))
+(or (not x2136) (not x1276) (not x1109))
+(or x204 x203 x200 x197 x194)
+(or (not x2137) (not x1284) (not x1108) x73)
+(or (not x200) x990)
+(or (not x1284) (not x1108) (not x73) x2137)
+(or (not x200) x845)
+(or (not x2136) (not x1284) (not x1108))
+(or (not x78) (not x1146) (not x815) (not x94))
+(or (not x2137) (not x1283) (not x1108) x67)
+(or (not x78) (not x1074) (not x803) (not x88))
+(or (not x1283) (not x1108) (not x67) x2137)
+(or (not x78) (not x886) (not x773) (not x66))
+(or (not x2136) (not x1283) (not x1108))
+(or (not x78) (not x828) (not x762) (not x56))
+(or (not x2137) (not x1281) (not x1108) x66)
+(or x83 x80 x78 x75 x71)
+(or (not x1281) (not x1108) (not x66) x2137)
+(or (not x78) x990)
+(or (not x2136) (not x1281) (not x1108))
+(or (not x78) x787)
+(or (not x2137) (not x1279) (not x1108))
+(or (not x476) (not x1146) (not x92))
+(or (not x1279) (not x1108) x2136)
+(or (not x476) (not x1134) (not x1074) (not x87))
+(or (not x2137) (not x1276) (not x1108) x65)
+(or (not x476) (not x1122) (not x990) (not x79))
+(or (not x1276) (not x1108) (not x65) x2137)
+(or (not x476) (not x1110) (not x828) (not x55))
+(or (not x2136) (not x1276) (not x1108))
+(or x483 x481 x478 x476 x473)
+(or (not x2137) (not x1284) (not x1105) x58)
+(or (not x476) x886)
+(or (not x1284) (not x1105) (not x58) x2137)
+(or (not x476) x1117)
+(or (not x2136) (not x1284) (not x1105))
+(or (not x85) (not x1146) (not x1082) (not x92))
+(or (not x2137) (not x1283) (not x1105) x57)
+(or (not x85) (not x1076) (not x1074) (not x87))
+(or (not x1283) (not x1105) (not x57) x2137)
+(or (not x85) (not x1063) (not x990) (not x79))
+(or (not x2136) (not x1283) (not x1105))
+(or (not x85) (not x1048) (not x828) (not x55))
+(or (not x2137) (not x1281) (not x1105) x56)
+(or x107 x101 x93 x85 x70)
+(or (not x1281) (not x1105) (not x56) x2137)
+(or (not x85) x886)
+(or (not x2136) (not x1281) (not x1105))
+(or (not x85) x1053)
+(or (not x2137) (not x1279) (not x1105) x55)
+(or (not x387) (not x1146) (not x1025) (not x92))
+(or (not x1279) (not x1105) (not x55) x2137)
+(or (not x387) (not x1074) (not x1007) (not x87))
+(or (not x2136) (not x1279) (not x1105))
+(or (not x387) (not x998) (not x990) (not x79))
+(or (not x2137) (not x1276) (not x1105))
+(or (not x387) (not x971) (not x828) (not x55))
+(or (not x1276) (not x1105) x2136)
+(or x393 x392 x390 x387 x384)
+(or (not x2052) (not x69) (not x7) x2135)
+(or (not x387) x886)
+(or (not x2135) (not x2131) (not x2105) x2134 x2133)
+(or (not x387) x977)
+(or (not x2135) (not x2105) x2132 x2131)
+(or (not x291) (not x1146) (not x943) (not x92))
+(or (not x2135) x2106 x2105)
+(or (not x291) (not x1074) (not x932) (not x87))
+(or (not x2133) (not x2131) (not x2105) x2135)
+(or (not x291) (not x990) (not x918) (not x79))
+(or (not x2134) (not x2131) (not x2105) x2135)
+(or (not x291) (not x880) (not x828) (not x55))
+(or (not x2132) (not x2105) x2135)
+(or x299 x296 x293 x291 x288)
+(or (not x2106) x2135)
+(or (not x291) x886)
+(or (not x2134) (not x2133))
+(or (not x291) x901)
+(or (not x1168) x2134 x1267 x1987)
+(or (not x197) (not x1146) (not x863) (not x92))
+(or (not x2134) (not x1168) (not x1987) x1267)
+(or (not x197) (not x1074) (not x854) (not x87))
+(or (not x2134) (not x1267) x1168 x1987)
+(or (not x197) (not x990) (not x845) (not x79))
+(or (not x1267) (not x1987) x2134 x1168)
+(or (not x197) (not x835) (not x828) (not x55))
+(or (not x1167) x2134 x1265 x1987)
+(or x204 x203 x200 x197 x194)
+(or (not x2134) (not x1167) (not x1987) x1265)
+(or (not x197) x886)
+(or (not x2134) (not x1265) x1167 x1987)
+(or (not x197) x840)
+(or (not x1265) (not x1987) x2134 x1167)
+(or (not x75) (not x1146) (not x815) (not x92))
+(or (not x1165) x2134 x1264 x1987)
+(or (not x75) (not x1074) (not x803) (not x87))
+(or (not x2134) (not x1165) (not x1987) x1264)
+(or (not x75) (not x990) (not x787) (not x79))
+(or (not x2134) (not x1264) x1165 x1987)
+(or (not x75) (not x828) (not x762) (not x55))
+(or (not x1264) (not x1987) x2134 x1165)
+(or x83 x80 x78 x75 x71)
+(or (not x1164) x2134 x1262 x1987)
+(or (not x75) x886)
+(or (not x2134) (not x1164) (not x1987) x1262)
+(or (not x75) x773)
+(or (not x2134) (not x1262) x1164 x1987)
+(or (not x473) (not x1146) (not x91))
+(or (not x1262) (not x1987) x2134 x1164)
+(or (not x473) (not x1134) (not x1074) (not x86))
+(or (not x1160) x2134 x1261 x1987)
+(or (not x473) (not x1122) (not x990) (not x77))
+(or (not x2134) (not x1160) (not x1987) x1261)
+(or (not x473) (not x1117) (not x886) (not x65))
+(or (not x2134) (not x1261) x1160 x1987)
+(or x483 x481 x478 x476 x473)
+(or (not x1261) (not x1987) x2134 x1160)
+(or (not x473) x828)
+(or (not x1265) (not x1167) x2133 x1267 x1168)
+(or (not x473) x1110)
+(or (not x1264) (not x1165) x2133 x1265 x1167)
+(or (not x70) (not x1146) (not x1082) (not x91))
+(or (not x1262) (not x1164) x2133 x1264 x1165)
+(or (not x70) (not x1076) (not x1074) (not x86))
+(or (not x1261) (not x1160) x2133 x1262 x1164)
+(or (not x70) (not x1063) (not x990) (not x77))
+(or x2133 x1261 x1160)
+(or (not x70) (not x1053) (not x886) (not x65))
+(or (not x1267) (not x1168) x2133)
+(or x107 x101 x93 x85 x70)
+(or (not x2133) (not x1267) x1168)
+(or (not x70) x828)
+(or (not x2133) (not x1168) x1267)
+(or (not x70) x1048)
+(or (not x2133) (not x1265) x1167)
+(or (not x384) (not x1146) (not x1025) (not x91))
+(or (not x2133) (not x1167) x1265)
+(or (not x384) (not x1074) (not x1007) (not x86))
+(or (not x2133) (not x1264) x1165)
+(or (not x384) (not x998) (not x990) (not x77))
+(or (not x2133) (not x1165) x1264)
+(or (not x384) (not x977) (not x886) (not x65))
+(or (not x2133) (not x1262) x1164)
+(or x393 x392 x390 x387 x384)
+(or (not x2133) (not x1164) x1262)
+(or (not x384) x828)
+(or (not x2133) (not x1261) x1160)
+(or (not x384) x971)
+(or (not x2133) (not x1160) x1261)
+(or (not x288) (not x1146) (not x943) (not x91))
+(or (not x52) x2132 x2130 x1247)
+(or (not x288) (not x1074) (not x932) (not x86))
+(or (not x2132) (not x1247) (not x52) x2130)
+(or (not x288) (not x990) (not x918) (not x77))
+(or (not x2132) x2130 x1247 x52)
+(or (not x288) (not x901) (not x886) (not x65))
+(or (not x1247) x2132 x2130 x52)
+(or x299 x296 x293 x291 x288)
+(or (not x2130) (not x50) x2132 x2128 x1244)
+(or (not x288) x828)
+(or (not x2132) (not x2130) (not x1244) (not x50) x2128)
+(or (not x288) x880)
+(or (not x2132) (not x2130) x2128 x1244 x50)
+(or (not x194) (not x1146) (not x863) (not x91))
+(or (not x2130) (not x1244) x2132 x2128 x50)
+(or (not x194) (not x1074) (not x854) (not x86))
+(or (not x2128) (not x48) x2132 x2126 x1241)
+(or (not x194) (not x990) (not x845) (not x77))
+(or (not x2132) (not x2128) (not x1241) (not x48) x2126)
+(or (not x194) (not x886) (not x840) (not x65))
+(or (not x2132) (not x2128) x2126 x1241 x48)
+(or x204 x203 x200 x197 x194)
+(or (not x2128) (not x1241) x2132 x2126 x48)
+(or (not x194) x828)
+(or (not x2126) (not x46) x2132 x2124 x1236)
+(or (not x194) x835)
+(or (not x2132) (not x2126) (not x1236) (not x46) x2124)
+(or (not x71) (not x1146) (not x815) (not x91))
+(or (not x2132) (not x2126) x2124 x1236 x46)
+(or (not x71) (not x1074) (not x803) (not x86))
+(or (not x2126) (not x1236) x2132 x2124 x46)
+(or (not x71) (not x990) (not x787) (not x77))
+(or (not x2124) (not x44) x2132 x2121 x1233)
+(or (not x71) (not x886) (not x773) (not x65))
+(or (not x2132) (not x2124) (not x1233) (not x44) x2121)
+(or x83 x80 x78 x75 x71)
+(or (not x2132) (not x2124) x2121 x1233 x44)
+(or (not x71) x828)
+(or (not x2124) (not x1233) x2132 x2121 x44)
+(or (not x71) x762)
+(or (not x2121) (not x149) x2132 x2120 x1229)
+(or x483 x481 x478 x476 x473)
+(or (not x2132) (not x2121) (not x1229) (not x149) x2120)
+(or (not x2132) (not x2121) x2120 x1229 x149)
+(or x107 x101 x93 x85 x70)
+(or (not x2121) (not x1229) x2132 x2120 x149)
+(or (not x2132) (not x2131))
+(or x393 x392 x390 x387 x384)
+(or (not x2120) x2131)
+(or (not x2131) x2120)
+(or x299 x296 x293 x291 x288)
+(or x2130 x1247 x1141)
+(or (not x1247) (not x1141) x2130)
+(or x204 x203 x200 x197 x194)
+(or (not x2130) (not x1247) x1141)
+(or (not x2130) (not x1141) x1247)
+(or x83 x80 x78 x75 x71)
+(or (not x2130) x2128 x1244 x1139)
+(or (not x2130) (not x1244) (not x1139) x2128)
+(or (not x1895) x2129)
+(or (not x2128) (not x1244) x1139)
+(or (not x1895) x2129)
+(or (not x2128) (not x1139) x1244)
+(or (not x2129) x1895)
+(or (not x2128) x2130)
+(or (not x2129) x1895)
+(or (not x2128) x2126 x1241 x1136)
+(or (not x2094) (not x1893) x1895)
+(or (not x2128) (not x1241) (not x1136) x2126)
+(or (not x2127) x1895)
+(or (not x2126) (not x1241) x1136)
+(or (not x1895) x2127 x1893)
+(or (not x2126) (not x1136) x1241)
+(or (not x1895) x2127 x2094)
+(or (not x2126) x2128)
+(or (not x2092) (not x1892) x2127)
+(or (not x2126) x2124 x1236 x1133)
+(or (not x2125) x2127)
+(or (not x2126) (not x1236) (not x1133) x2124)
+(or (not x2127) x2125 x1892)
+(or (not x2124) (not x1236) x1133)
+(or (not x2127) x2125 x2092)
+(or (not x2124) (not x1133) x1236)
+(or (not x2090) (not x1890) x2125)
+(or (not x2124) x2126)
+(or (not x2123) x2125)
+(or (not x2124) x2121 x1233 x1131)
+(or (not x2125) x2123 x1890)
+(or (not x2124) (not x1233) (not x1131) x2121)
+(or (not x2125) x2123 x2090)
+(or (not x2121) (not x1233) x1131)
+(or (not x2088) (not x1886) x2123)
+(or (not x2121) (not x1131) x1233)
+(or (not x2122) x2123)
+(or (not x2121) x2124)
+(or (not x2123) x2122 x1886)
+(or (not x2121) x2120 x1229 x1128)
+(or (not x2123) x2122 x2088)
+(or (not x2121) (not x1229) (not x1128) x2120)
+(or (not x2085) (not x1882) x2122)
+(or (not x2120) (not x1229) x1128)
+(or (not x2122) x1882)
+(or (not x2120) (not x1128) x1229)
+(or (not x2122) x2085)
+(or (not x2120) x2121)
+(or (not x1895) (not x1881) x2119)
+(or (not x2106) (not x1199) (not x1113))
+(or (not x1881) x2119)
+(or (not x1199) (not x1113) x2105)
+(or (not x2119) x1881)
+(or (not x2106) (not x1197) (not x1113) x95)
+(or (not x2119) x1895 x1881)
+(or (not x1197) (not x1113) (not x95) x2106)
+(or (not x2094) (not x1879) x1881)
+(or (not x2105) (not x1197) (not x1113))
+(or (not x2094) x1881)
+(or (not x2106) (not x1194) (not x1113) x94)
+(or (not x1881) x2094 x1879)
+(or (not x1194) (not x1113) (not x94) x2106)
+(or (not x1881) x2094)
+(or (not x2105) (not x1194) (not x1113))
+(or (not x2092) (not x1877) x2094)
+(or (not x2106) (not x1191) (not x1113) x92)
+(or (not x2118) x2094)
+(or (not x1191) (not x1113) (not x92) x2106)
+(or (not x2094) x2118 x1877)
+(or (not x2105) (not x1191) (not x1113))
+(or (not x2094) x2118 x2092)
+(or (not x2106) (not x1188) (not x1113) x91)
+(or (not x2090) (not x1876) x2118)
+(or (not x1188) (not x1113) (not x91) x2106)
+(or (not x2117) x2118)
+(or (not x2105) (not x1188) (not x1113))
+(or (not x2118) x2117 x1876)
+(or (not x2106) (not x1199) (not x1111) x89)
+(or (not x2118) x2117 x2090)
+(or (not x1199) (not x1111) (not x89) x2106)
+(or (not x2088) (not x1874) x2117)
+(or (not x2105) (not x1199) (not x1111))
+(or (not x2116) x2117)
+(or (not x2106) (not x1197) (not x1111))
+(or (not x2117) x2116 x1874)
+(or (not x1197) (not x1111) x2105)
+(or (not x2117) x2116 x2088)
+(or (not x2106) (not x1194) (not x1111) x88)
+(or (not x2085) (not x1870) x2116)
+(or (not x1194) (not x1111) (not x88) x2106)
+(or (not x2115) x2116)
+(or (not x2105) (not x1194) (not x1111))
+(or (not x2116) x2115 x1870)
+(or (not x2106) (not x1191) (not x1111) x87)
+(or (not x2116) x2115 x2085)
+(or (not x1191) (not x1111) (not x87) x2106)
+(or (not x734) x2115)
+(or (not x2105) (not x1191) (not x1111))
+(or (not x2115) x734)
+(or (not x2106) (not x1188) (not x1111) x86)
+(or (not x1895) (not x1869) x2114)
+(or (not x1188) (not x1111) (not x86) x2106)
+(or (not x1869) x2114)
+(or (not x2105) (not x1188) (not x1111))
+(or (not x2114) x1869)
+(or (not x2106) (not x1199) (not x1109) x82)
+(or (not x2114) x1895 x1869)
+(or (not x1199) (not x1109) (not x82) x2106)
+(or (not x2094) (not x1867) x1869)
+(or (not x2105) (not x1199) (not x1109))
+(or (not x2113) x1869)
+(or (not x2106) (not x1197) (not x1109) x81)
+(or (not x1869) x2113 x1867)
+(or (not x1197) (not x1109) (not x81) x2106)
+(or (not x1869) x2113 x2094)
+(or (not x2105) (not x1197) (not x1109))
+(or (not x2092) (not x1865) x2113)
+(or (not x2106) (not x1194) (not x1109))
+(or (not x2092) x2113)
+(or (not x1194) (not x1109) x2105)
+(or (not x2113) x2092 x1865)
+(or (not x2106) (not x1191) (not x1109) x79)
+(or (not x2113) x2092)
+(or (not x1191) (not x1109) (not x79) x2106)
+(or (not x2090) (not x1862) x2092)
+(or (not x2105) (not x1191) (not x1109))
+(or (not x2112) x2092)
+(or (not x2106) (not x1188) (not x1109) x77)
+(or (not x2092) x2112 x1862)
+(or (not x1188) (not x1109) (not x77) x2106)
+(or (not x2092) x2112 x2090)
+(or (not x2105) (not x1188) (not x1109))
+(or (not x2088) (not x1861) x2112)
+(or (not x2106) (not x1199) (not x1108) x73)
+(or (not x2111) x2112)
+(or (not x1199) (not x1108) (not x73) x2106)
+(or (not x2112) x2111 x1861)
+(or (not x2105) (not x1199) (not x1108))
+(or (not x2112) x2111 x2088)
+(or (not x2106) (not x1197) (not x1108) x67)
+(or (not x2085) (not x1858) x2111)
+(or (not x1197) (not x1108) (not x67) x2106)
+(or (not x2110) x2111)
+(or (not x2105) (not x1197) (not x1108))
+(or (not x2111) x2110 x1858)
+(or (not x2106) (not x1194) (not x1108) x66)
+(or (not x2111) x2110 x2085)
+(or (not x1194) (not x1108) (not x66) x2106)
+(or (not x733) x2110)
+(or (not x2105) (not x1194) (not x1108))
+(or (not x2110) x733)
+(or (not x2106) (not x1191) (not x1108))
+(or (not x1895) (not x1857) x2109)
+(or (not x1191) (not x1108) x2105)
+(or (not x1857) x2109)
+(or (not x2106) (not x1188) (not x1108) x65)
+(or (not x2109) x1857)
+(or (not x1188) (not x1108) (not x65) x2106)
+(or (not x2109) x1895 x1857)
+(or (not x2105) (not x1188) (not x1108))
+(or (not x2094) (not x1855) x1857)
+(or (not x2106) (not x1199) (not x1105) x58)
+(or (not x2108) x1857)
+(or (not x1199) (not x1105) (not x58) x2106)
+(or (not x1857) x2108 x1855)
+(or (not x2105) (not x1199) (not x1105))
+(or (not x1857) x2108 x2094)
+(or (not x2106) (not x1197) (not x1105) x57)
+(or (not x2092) (not x1853) x2108)
+(or (not x1197) (not x1105) (not x57) x2106)
+(or (not x2107) x2108)
+(or (not x2105) (not x1197) (not x1105))
+(or (not x2108) x2107 x1853)
+(or (not x2106) (not x1194) (not x1105) x56)
+(or (not x2108) x2107 x2092)
+(or (not x1194) (not x1105) (not x56) x2106)
+(or (not x2090) (not x1849) x2107)
+(or (not x2105) (not x1194) (not x1105))
+(or (not x2090) x2107)
+(or (not x2106) (not x1191) (not x1105) x55)
+(or (not x2107) x2090 x1849)
+(or (not x1191) (not x1105) (not x55) x2106)
+(or (not x2107) x2090)
+(or (not x2105) (not x1191) (not x1105))
+(or (not x2088) (not x1847) x2090)
+(or (not x2106) (not x1188) (not x1105))
+(or (not x2104) x2090)
+(or (not x1188) (not x1105) x2105)
+(or (not x2090) x2104 x1847)
+(or (not x2052) (not x69) (not x9) x2102)
+(or (not x2090) x2104 x2088)
+(or (not x2102) (not x2082) (not x2053) x2097 x2093)
+(or (not x2085) (not x1844) x2104)
+(or (not x2102) (not x2053) x2083 x2082)
+(or (not x2103) x2104)
+(or (not x2102) x2054 x2053)
+(or (not x2104) x2103 x1844)
+(or (not x2093) (not x2082) (not x2053) x2102)
+(or (not x2104) x2103 x2085)
+(or (not x2097) (not x2082) (not x2053) x2102)
+(or (not x732) x2103)
+(or (not x2083) (not x2053) x2102)
+(or (not x2103) x732)
+(or (not x2054) x2102)
+(or (not x1895) (not x1842) x2101)
+(or (not x2097) (not x2093))
+(or (not x1842) x2101)
+(or (not x1168) x2097 x1090 x1987)
+(or (not x2101) x1842)
+(or (not x2097) (not x1168) (not x1987) x1090)
+(or (not x2101) x1895 x1842)
+(or (not x2097) (not x1090) x1168 x1987)
+(or (not x2094) (not x1840) x1842)
+(or (not x1090) (not x1987) x2097 x1168)
+(or (not x2100) x1842)
+(or (not x1167) x2097 x1089 x1987)
+(or (not x1842) x2100 x1840)
+(or (not x2097) (not x1167) (not x1987) x1089)
+(or (not x1842) x2100 x2094)
+(or (not x2097) (not x1089) x1167 x1987)
+(or (not x2092) (not x1837) x2100)
+(or (not x1089) (not x1987) x2097 x1167)
+(or (not x2099) x2100)
+(or (not x1165) x2097 x1087 x1987)
+(or (not x2100) x2099 x1837)
+(or (not x2097) (not x1165) (not x1987) x1087)
+(or (not x2100) x2099 x2092)
+(or (not x2097) (not x1087) x1165 x1987)
+(or (not x2090) (not x1834) x2099)
+(or (not x1087) (not x1987) x2097 x1165)
+(or (not x2098) x2099)
+(or (not x1164) x2097 x1085 x1987)
+(or (not x2099) x2098 x1834)
+(or (not x2097) (not x1164) (not x1987) x1085)
+(or (not x2099) x2098 x2090)
+(or (not x2097) (not x1085) x1164 x1987)
+(or (not x2088) (not x1830) x2098)
+(or (not x1085) (not x1987) x2097 x1164)
+(or (not x2088) x2098)
+(or (not x1160) x2097 x1084 x1987)
+(or (not x2098) x2088 x1830)
+(or (not x2097) (not x1160) (not x1987) x1084)
+(or (not x2098) x2088)
+(or (not x2097) (not x1084) x1160 x1987)
+(or (not x2085) (not x1828) x2088)
+(or (not x1084) (not x1987) x2097 x1160)
+(or (not x2096) x2088)
+(or (not x1167) (not x1089) x2093 x1168 x1090)
+(or (not x2088) x2096 x1828)
+(or (not x1165) (not x1087) x2093 x1167 x1089)
+(or (not x2088) x2096 x2085)
+(or (not x1164) (not x1085) x2093 x1165 x1087)
+(or (not x731) x2096)
+(or (not x1160) (not x1084) x2093 x1164 x1085)
+(or (not x2096) x731)
+(or x2093 x1160 x1084)
+(or (not x1895) (not x1827) x2095)
+(or (not x1168) (not x1090) x2093)
+(or (not x1827) x2095)
+(or (not x2093) (not x1090) x1168)
+(or (not x2095) x1827)
+(or (not x2093) (not x1168) x1090)
+(or (not x2095) x1895 x1827)
+(or (not x2093) (not x1089) x1167)
+(or (not x2094) (not x1824) x1827)
+(or (not x2093) (not x1167) x1089)
+(or (not x2091) x1827)
+(or (not x2093) (not x1087) x1165)
+(or (not x1827) x2091 x1824)
+(or (not x2093) (not x1165) x1087)
+(or (not x1827) x2094 x2091)
+(or (not x2093) (not x1085) x1164)
+(or (not x2092) (not x1821) x2091)
+(or (not x2093) (not x1164) x1085)
+(or (not x2089) x2091)
+(or (not x2093) (not x1084) x1160)
+(or (not x2091) x2089 x1821)
+(or (not x2093) (not x1160) x1084)
+(or (not x2091) x2092 x2089)
+(or (not x52) x2083 x2079 x1073)
+(or (not x2090) (not x1818) x2089)
+(or (not x2083) (not x1073) (not x52) x2079)
+(or (not x2087) x2089)
+(or (not x2083) x2079 x1073 x52)
+(or (not x2089) x2087 x1818)
+(or (not x1073) x2083 x2079 x52)
+(or (not x2089) x2090 x2087)
+(or (not x2079) (not x50) x2083 x2076 x1072)
+(or (not x2088) (not x1815) x2087)
+(or (not x2083) (not x2079) (not x1072) (not x50) x2076)
+(or (not x2086) x2087)
+(or (not x2083) (not x2079) x2076 x1072 x50)
+(or (not x2087) x2086 x1815)
+(or (not x2079) (not x1072) x2083 x2076 x50)
+(or (not x2087) x2088 x2086)
+(or (not x2076) (not x48) x2083 x2074 x1069)
+(or (not x2085) x2086)
+(or (not x2083) (not x2076) (not x1069) (not x48) x2074)
+(or (not x2086) x2085)
+(or (not x2083) (not x2076) x2074 x1069 x48)
+(or (not x2086) x2085)
+(or (not x2076) (not x1069) x2083 x2074 x48)
+(or (not x729) x2085)
+(or (not x2074) (not x46) x2083 x2072 x1066)
+(or (not x2085) x729)
+(or (not x2083) (not x2074) (not x1066) (not x46) x2072)
+(or (not x2047) (not x1895) x2084)
+(or (not x2083) (not x2074) x2072 x1066 x46)
+(or (not x2047) x2084)
+(or (not x2074) (not x1066) x2083 x2072 x46)
+(or (not x2084) x2047 x1895)
+(or (not x2072) (not x44) x2083 x2070 x1062)
+(or (not x2084) x2047)
+(or (not x2083) (not x2072) (not x1062) (not x44) x2070)
+(or (not x1893) (not x1879) x2047)
+(or (not x2083) (not x2072) x2070 x1062 x44)
+(or (not x1893) x2047)
+(or (not x2072) (not x1062) x2083 x2070 x44)
+(or (not x2047) x1893)
+(or (not x2070) (not x149) x2083 x2069 x1059)
+(or (not x2047) x1893 x1879)
+(or (not x2083) (not x2070) (not x1059) (not x149) x2069)
+(or (not x2044) (not x1892) x1893)
+(or (not x2083) (not x2070) x2069 x1059 x149)
+(or (not x2081) x1893)
+(or (not x2070) (not x1059) x2083 x2069 x149)
+(or (not x1893) x2081 x1892)
+(or (not x2083) (not x2082))
+(or (not x1893) x2081 x2044)
+(or (not x2069) x2082)
+(or (not x2042) (not x1890) x2081)
+(or (not x2082) x2069)
+(or (not x2080) x2081)
+(or x2079 x1141 x1073)
+(or (not x2081) x2080 x1890)
+(or (not x1141) (not x1073) x2079)
+(or (not x2081) x2080 x2042)
+(or (not x2079) (not x1073) x1141)
+(or (not x2040) (not x1886) x2080)
+(or (not x2079) (not x1141) x1073)
+(or (not x2078) x2080)
+(or (not x2079) x2076 x1139 x1072)
+(or (not x2080) x2078 x1886)
+(or (not x2079) (not x1139) (not x1072) x2076)
+(or (not x2080) x2078 x2040)
+(or (not x2076) (not x1072) x1139)
+(or (not x2037) (not x1882) x2078)
+(or (not x2076) (not x1139) x1072)
+(or (not x2077) x2078)
+(or (not x2076) x2079)
+(or (not x2078) x2077 x1882)
+(or (not x2076) x2074 x1136 x1069)
+(or (not x2078) x2077 x2037)
+(or (not x2076) (not x1136) (not x1069) x2074)
+(or (not x728) x2077)
+(or (not x2074) (not x1069) x1136)
+(or (not x2077) x728)
+(or (not x2074) (not x1136) x1069)
+(or (not x2047) (not x1881) x2075)
+(or (not x2074) x2076)
+(or (not x2073) x2075)
+(or (not x2074) x2072 x1133 x1066)
+(or (not x2075) x2073 x1881)
+(or (not x2074) (not x1133) (not x1066) x2072)
+(or (not x2075) x2073 x2047)
+(or (not x2072) (not x1066) x1133)
+(or (not x1879) x2073)
+(or (not x2072) (not x1133) x1066)
+(or (not x1879) x2073)
+(or (not x2072) x2074)
+(or (not x2073) x1879)
+(or (not x2072) x2070 x1131 x1062)
+(or (not x2073) x1879)
+(or (not x2072) (not x1131) (not x1062) x2070)
+(or (not x2044) (not x1877) x1879)
+(or (not x2070) (not x1062) x1131)
+(or (not x2071) x1879)
+(or (not x2070) (not x1131) x1062)
+(or (not x1879) x2071 x1877)
+(or (not x2070) x2072)
+(or (not x1879) x2071 x2044)
+(or (not x2070) x2069 x1128 x1059)
+(or (not x2042) (not x1876) x2071)
+(or (not x2070) (not x1128) (not x1059) x2069)
+(or (not x2068) x2071)
+(or (not x2069) (not x1059) x1128)
+(or (not x2071) x2068 x1876)
+(or (not x2069) (not x1128) x1059)
+(or (not x2071) x2068 x2042)
+(or (not x2069) x2070)
+(or (not x2040) (not x1874) x2068)
+(or (not x2054) (not x1113) (not x1045))
+(or (not x2067) x2068)
+(or (not x1113) (not x1045) x2053)
+(or (not x2068) x2067 x1874)
+(or (not x2054) (not x1113) (not x1043) x95)
+(or (not x2068) x2067 x2040)
+(or (not x1113) (not x1043) (not x95) x2054)
+(or (not x2037) (not x1870) x2067)
+(or (not x2053) (not x1113) (not x1043))
+(or (not x2067) x1870)
+(or (not x2054) (not x1113) (not x1042) x94)
+(or (not x2067) x2037)
+(or (not x1113) (not x1042) (not x94) x2054)
+(or (not x2047) (not x1869) x2066)
+(or (not x2053) (not x1113) (not x1042))
+(or (not x2065) x2066)
+(or (not x2054) (not x1113) (not x1040) x92)
+(or (not x2066) x2065 x1869)
+(or (not x1113) (not x1040) (not x92) x2054)
+(or (not x2066) x2065 x2047)
+(or (not x2053) (not x1113) (not x1040))
+(or (not x1879) (not x1867) x2065)
+(or (not x2054) (not x1113) (not x1037) x91)
+(or (not x1867) x2065)
+(or (not x1113) (not x1037) (not x91) x2054)
+(or (not x2065) x1867)
+(or (not x2053) (not x1113) (not x1037))
+(or (not x2065) x1879 x1867)
+(or (not x2054) (not x1111) (not x1045) x89)
+(or (not x2044) (not x1865) x1867)
+(or (not x1111) (not x1045) (not x89) x2054)
+(or (not x2044) x1867)
+(or (not x2053) (not x1111) (not x1045))
+(or (not x1867) x2044 x1865)
+(or (not x2054) (not x1111) (not x1043))
+(or (not x1867) x2044)
+(or (not x1111) (not x1043) x2053)
+(or (not x2042) (not x1862) x2044)
+(or (not x2054) (not x1111) (not x1042) x88)
+(or (not x2064) x2044)
+(or (not x1111) (not x1042) (not x88) x2054)
+(or (not x2044) x2064 x1862)
+(or (not x2053) (not x1111) (not x1042))
+(or (not x2044) x2064 x2042)
+(or (not x2054) (not x1111) (not x1040) x87)
+(or (not x2040) (not x1861) x2064)
+(or (not x1111) (not x1040) (not x87) x2054)
+(or (not x2063) x2064)
+(or (not x2053) (not x1111) (not x1040))
+(or (not x2064) x2063 x1861)
+(or (not x2054) (not x1111) (not x1037) x86)
+(or (not x2064) x2063 x2040)
+(or (not x1111) (not x1037) (not x86) x2054)
+(or (not x2037) (not x1858) x2063)
+(or (not x2053) (not x1111) (not x1037))
+(or (not x2062) x2063)
+(or (not x2054) (not x1109) (not x1045) x82)
+(or (not x2063) x2062 x1858)
+(or (not x1109) (not x1045) (not x82) x2054)
+(or (not x2063) x2062 x2037)
+(or (not x2053) (not x1109) (not x1045))
+(or (not x727) x2062)
+(or (not x2054) (not x1109) (not x1043) x81)
+(or (not x2062) x727)
+(or (not x1109) (not x1043) (not x81) x2054)
+(or (not x2047) (not x1857) x2061)
+(or (not x2053) (not x1109) (not x1043))
+(or (not x2060) x2061)
+(or (not x2054) (not x1109) (not x1042))
+(or (not x2061) x2060 x1857)
+(or (not x1109) (not x1042) x2053)
+(or (not x2061) x2060 x2047)
+(or (not x2054) (not x1109) (not x1040) x79)
+(or (not x1879) (not x1855) x2060)
+(or (not x1109) (not x1040) (not x79) x2054)
+(or (not x1855) x2060)
+(or (not x2053) (not x1109) (not x1040))
+(or (not x2060) x1855)
+(or (not x2054) (not x1109) (not x1037) x77)
+(or (not x2060) x1879 x1855)
+(or (not x1109) (not x1037) (not x77) x2054)
+(or (not x2044) (not x1853) x1855)
+(or (not x2053) (not x1109) (not x1037))
+(or (not x2059) x1855)
+(or (not x2054) (not x1108) (not x1045) x73)
+(or (not x1855) x2059 x1853)
+(or (not x1108) (not x1045) (not x73) x2054)
+(or (not x1855) x2059 x2044)
+(or (not x2053) (not x1108) (not x1045))
+(or (not x2042) (not x1849) x2059)
+(or (not x2054) (not x1108) (not x1043) x67)
+(or (not x2042) x2059)
+(or (not x1108) (not x1043) (not x67) x2054)
+(or (not x2059) x2042 x1849)
+(or (not x2053) (not x1108) (not x1043))
+(or (not x2059) x2042)
+(or (not x2054) (not x1108) (not x1042) x66)
+(or (not x2040) (not x1847) x2042)
+(or (not x1108) (not x1042) (not x66) x2054)
+(or (not x2058) x2042)
+(or (not x2053) (not x1108) (not x1042))
+(or (not x2042) x2058 x1847)
+(or (not x2054) (not x1108) (not x1040))
+(or (not x2042) x2058 x2040)
+(or (not x1108) (not x1040) x2053)
+(or (not x2037) (not x1844) x2058)
+(or (not x2054) (not x1108) (not x1037) x65)
+(or (not x2057) x2058)
+(or (not x1108) (not x1037) (not x65) x2054)
+(or (not x2058) x2057 x1844)
+(or (not x2053) (not x1108) (not x1037))
+(or (not x2058) x2057 x2037)
+(or (not x2054) (not x1105) (not x1045) x58)
+(or (not x726) x2057)
+(or (not x1105) (not x1045) (not x58) x2054)
+(or (not x2057) x726)
+(or (not x2053) (not x1105) (not x1045))
+(or (not x2047) (not x1842) x2056)
+(or (not x2054) (not x1105) (not x1043) x57)
+(or (not x2055) x2056)
+(or (not x1105) (not x1043) (not x57) x2054)
+(or (not x2056) x2055 x1842)
+(or (not x2053) (not x1105) (not x1043))
+(or (not x2056) x2055 x2047)
+(or (not x2054) (not x1105) (not x1042) x56)
+(or (not x1879) (not x1840) x2055)
+(or (not x1105) (not x1042) (not x56) x2054)
+(or (not x1840) x2055)
+(or (not x2053) (not x1105) (not x1042))
+(or (not x2055) x1840)
+(or (not x2054) (not x1105) (not x1040) x55)
+(or (not x2055) x1879 x1840)
+(or (not x1105) (not x1040) (not x55) x2054)
+(or (not x2044) (not x1837) x1840)
+(or (not x2053) (not x1105) (not x1040))
+(or (not x2051) x1840)
+(or (not x2054) (not x1105) (not x1037))
+(or (not x1840) x2051 x1837)
+(or (not x1105) (not x1037) x2053)
+(or (not x1840) x2051 x2044)
+(or (not x2052) (not x69) (not x10) x2050)
+(or (not x2042) (not x1834) x2051)
+(or (not x2050) (not x2028) (not x1999) x2043 x2035)
+(or (not x2049) x2051)
+(or (not x2050) (not x1999) x2029 x2028)
+(or (not x2051) x2049 x1834)
+(or (not x2050) x2002 x1999)
+(or (not x2051) x2049 x2042)
+(or (not x2035) (not x2028) (not x1999) x2050)
+(or (not x2040) (not x1830) x2049)
+(or (not x2043) (not x2028) (not x1999) x2050)
+(or (not x2040) x2049)
+(or (not x2029) (not x1999) x2050)
+(or (not x2049) x2040 x1830)
+(or (not x2002) x2050)
+(or (not x2049) x2040)
+(or (not x2043) (not x2035))
+(or (not x2037) (not x1828) x2040)
+(or (not x1168) x2043 x1021 x1987)
+(or (not x2048) x2040)
+(or (not x2043) (not x1168) (not x1987) x1021)
+(or (not x2040) x2048 x1828)
+(or (not x2043) (not x1021) x1168 x1987)
+(or (not x2040) x2048 x2037)
+(or (not x1021) (not x1987) x2043 x1168)
+(or (not x724) x2048)
+(or (not x1167) x2043 x1019 x1987)
+(or (not x2048) x724)
+(or (not x2043) (not x1167) (not x1987) x1019)
+(or (not x2047) (not x1827) x2046)
+(or (not x2043) (not x1019) x1167 x1987)
+(or (not x2045) x2046)
+(or (not x1019) (not x1987) x2043 x1167)
+(or (not x2046) x2045 x1827)
+(or (not x1165) x2043 x1017 x1987)
+(or (not x2046) x2047 x2045)
+(or (not x2043) (not x1165) (not x1987) x1017)
+(or (not x1879) (not x1824) x2045)
+(or (not x2043) (not x1017) x1165 x1987)
+(or (not x1824) x2045)
+(or (not x1017) (not x1987) x2043 x1165)
+(or (not x2045) x1824)
+(or (not x1164) x2043 x1015 x1987)
+(or (not x2045) x1879 x1824)
+(or (not x2043) (not x1164) (not x1987) x1015)
+(or (not x2044) (not x1821) x1824)
+(or (not x2043) (not x1015) x1164 x1987)
+(or (not x2041) x1824)
+(or (not x1015) (not x1987) x2043 x1164)
+(or (not x1824) x2041 x1821)
+(or (not x1160) x2043 x1012 x1987)
+(or (not x1824) x2044 x2041)
+(or (not x2043) (not x1160) (not x1987) x1012)
+(or (not x2042) (not x1818) x2041)
+(or (not x2043) (not x1012) x1160 x1987)
+(or (not x2039) x2041)
+(or (not x1012) (not x1987) x2043 x1160)
+(or (not x2041) x2039 x1818)
+(or (not x1167) (not x1019) x2035 x1168 x1021)
+(or (not x2041) x2042 x2039)
+(or (not x1165) (not x1017) x2035 x1167 x1019)
+(or (not x2040) (not x1815) x2039)
+(or (not x1164) (not x1015) x2035 x1165 x1017)
+(or (not x2038) x2039)
+(or (not x1160) (not x1012) x2035 x1164 x1015)
+(or (not x2039) x2038 x1815)
+(or x2035 x1160 x1012)
+(or (not x2039) x2040 x2038)
+(or (not x1168) (not x1021) x2035)
+(or (not x2037) x2038)
+(or (not x2035) (not x1021) x1168)
+(or (not x2038) x2037)
+(or (not x2035) (not x1168) x1021)
+(or (not x2038) x2037)
+(or (not x2035) (not x1019) x1167)
+(or (not x723) x2037)
+(or (not x2035) (not x1167) x1019)
+(or (not x2037) x723)
+(or (not x2035) (not x1017) x1165)
+(or (not x2001) (not x1895) x2036)
+(or (not x2035) (not x1165) x1017)
+(or (not x2001) x2036)
+(or (not x2035) (not x1015) x1164)
+(or (not x2036) x2001 x1895)
+(or (not x2035) (not x1164) x1015)
+(or (not x2036) x2001)
+(or (not x2035) (not x1012) x1160)
+(or (not x1998) (not x1893) x2001)
+(or (not x2035) (not x1160) x1012)
+(or (not x2034) x2001)
+(or (not x52) x2029 x2026 x1000)
+(or (not x2001) x2034 x1893)
+(or (not x2029) (not x1000) (not x52) x2026)
+(or (not x2001) x2034 x1998)
+(or (not x2029) x2026 x1000 x52)
+(or (not x1892) (not x1865) x2034)
+(or (not x1000) x2029 x2026 x52)
+(or (not x1892) x2034)
+(or (not x2026) (not x50) x2029 x2024 x997)
+(or (not x2034) x1892)
+(or (not x2029) (not x2026) (not x997) (not x50) x2024)
+(or (not x2034) x1892 x1865)
+(or (not x2029) (not x2026) x2024 x997 x50)
+(or (not x1994) (not x1890) x1892)
+(or (not x2026) (not x997) x2029 x2024 x50)
+(or (not x2033) x1892)
+(or (not x2024) (not x48) x2029 x2022 x993)
+(or (not x1892) x2033 x1890)
+(or (not x2029) (not x2024) (not x993) (not x48) x2022)
+(or (not x1892) x2033 x1994)
+(or (not x2029) (not x2024) x2022 x993 x48)
+(or (not x1993) (not x1886) x2033)
+(or (not x2024) (not x993) x2029 x2022 x48)
+(or (not x2032) x2033)
+(or (not x2022) (not x46) x2029 x2019 x989)
+(or (not x2033) x2032 x1886)
+(or (not x2029) (not x2022) (not x989) (not x46) x2019)
+(or (not x2033) x2032 x1993)
+(or (not x2029) (not x2022) x2019 x989 x46)
+(or (not x1990) (not x1882) x2032)
+(or (not x2022) (not x989) x2029 x2019 x46)
+(or (not x2031) x2032)
+(or (not x2019) (not x44) x2029 x2017 x986)
+(or (not x2032) x2031 x1882)
+(or (not x2029) (not x2019) (not x986) (not x44) x2017)
+(or (not x2032) x2031 x1990)
+(or (not x2029) (not x2019) x2017 x986 x44)
+(or (not x722) x2031)
+(or (not x2019) (not x986) x2029 x2017 x44)
+(or (not x2031) x722)
+(or (not x2017) (not x149) x2029 x2016 x981)
+(or (not x2001) (not x1881) x2030)
+(or (not x2029) (not x2017) (not x981) (not x149) x2016)
+(or (not x2027) x2030)
+(or (not x2029) (not x2017) x2016 x981 x149)
+(or (not x2030) x2027 x1881)
+(or (not x2017) (not x981) x2029 x2016 x149)
+(or (not x2030) x2027 x2001)
+(or (not x2029) (not x2028))
+(or (not x1998) (not x1879) x2027)
+(or (not x2016) x2028)
+(or (not x1998) x2027)
+(or (not x2028) x2016)
+(or (not x2027) x1998 x1879)
+(or x2026 x1141 x1000)
+(or (not x2027) x1998)
+(or (not x1141) (not x1000) x2026)
+(or (not x1877) (not x1865) x1998)
+(or (not x2026) (not x1000) x1141)
+(or (not x1877) x1998)
+(or (not x2026) (not x1141) x1000)
+(or (not x1998) x1877)
+(or (not x2026) x2024 x1139 x997)
+(or (not x1998) x1877 x1865)
+(or (not x2026) (not x1139) (not x997) x2024)
+(or (not x1994) (not x1876) x1877)
+(or (not x2024) (not x997) x1139)
+(or (not x2025) x1877)
+(or (not x2024) (not x1139) x997)
+(or (not x1877) x2025 x1876)
+(or (not x2024) x2026)
+(or (not x1877) x2025 x1994)
+(or (not x2024) x2022 x1136 x993)
+(or (not x1993) (not x1874) x2025)
+(or (not x2024) (not x1136) (not x993) x2022)
+(or (not x2023) x2025)
+(or (not x2022) (not x993) x1136)
+(or (not x2025) x2023 x1874)
+(or (not x2022) (not x1136) x993)
+(or (not x2025) x2023 x1993)
+(or (not x2022) x2024)
+(or (not x1990) (not x1870) x2023)
+(or (not x2022) x2019 x1133 x989)
+(or (not x2021) x2023)
+(or (not x2022) (not x1133) (not x989) x2019)
+(or (not x2023) x2021 x1870)
+(or (not x2019) (not x989) x1133)
+(or (not x2023) x2021 x1990)
+(or (not x2019) (not x1133) x989)
+(or (not x721) x2021)
+(or (not x2019) x2022)
+(or (not x2021) x721)
+(or (not x2019) x2017 x1131 x986)
+(or (not x2001) (not x1869) x2020)
+(or (not x2019) (not x1131) (not x986) x2017)
+(or (not x2018) x2020)
+(or (not x2017) (not x986) x1131)
+(or (not x2020) x2018 x1869)
+(or (not x2017) (not x1131) x986)
+(or (not x2020) x2018 x2001)
+(or (not x2017) x2019)
+(or (not x1998) (not x1867) x2018)
+(or (not x2017) x2016 x1128 x981)
+(or (not x2015) x2018)
+(or (not x2017) (not x1128) (not x981) x2016)
+(or (not x2018) x2015 x1867)
+(or (not x2016) (not x981) x1128)
+(or (not x2018) x2015 x1998)
+(or (not x2016) (not x1128) x981)
+(or (not x1865) x2015)
+(or (not x2016) x2017)
+(or (not x1865) x2015)
+(or (not x2002) (not x1113) (not x959))
+(or (not x2015) x1865)
+(or (not x1113) (not x959) x1999)
+(or (not x2015) x1865)
+(or (not x2002) (not x1113) (not x957) x95)
+(or (not x1994) (not x1862) x1865)
+(or (not x1113) (not x957) (not x95) x2002)
+(or (not x2014) x1865)
+(or (not x1999) (not x1113) (not x957))
+(or (not x1865) x2014 x1862)
+(or (not x2002) (not x1113) (not x956) x94)
+(or (not x1865) x2014 x1994)
+(or (not x1113) (not x956) (not x94) x2002)
+(or (not x1993) (not x1861) x2014)
+(or (not x1999) (not x1113) (not x956))
+(or (not x2013) x2014)
+(or (not x2002) (not x1113) (not x954) x92)
+(or (not x2014) x2013 x1861)
+(or (not x1113) (not x954) (not x92) x2002)
+(or (not x2014) x2013 x1993)
+(or (not x1999) (not x1113) (not x954))
+(or (not x1990) (not x1858) x2013)
+(or (not x2002) (not x1113) (not x948) x91)
+(or (not x2013) x1858)
+(or (not x1113) (not x948) (not x91) x2002)
+(or (not x2013) x1990)
+(or (not x1999) (not x1113) (not x948))
+(or (not x2001) (not x1857) x2012)
+(or (not x2002) (not x1111) (not x959) x89)
+(or (not x2011) x2012)
+(or (not x1111) (not x959) (not x89) x2002)
+(or (not x2012) x2011 x1857)
+(or (not x1999) (not x1111) (not x959))
+(or (not x2012) x2011 x2001)
+(or (not x2002) (not x1111) (not x957))
+(or (not x1998) (not x1855) x2011)
+(or (not x1111) (not x957) x1999)
+(or (not x2010) x2011)
+(or (not x2002) (not x1111) (not x956) x88)
+(or (not x2011) x2010 x1855)
+(or (not x1111) (not x956) (not x88) x2002)
+(or (not x2011) x2010 x1998)
+(or (not x1999) (not x1111) (not x956))
+(or (not x1865) (not x1853) x2010)
+(or (not x2002) (not x1111) (not x954) x87)
+(or (not x1853) x2010)
+(or (not x1111) (not x954) (not x87) x2002)
+(or (not x2010) x1853)
+(or (not x1999) (not x1111) (not x954))
+(or (not x2010) x1865 x1853)
+(or (not x2002) (not x1111) (not x948) x86)
+(or (not x1994) (not x1849) x1853)
+(or (not x1111) (not x948) (not x86) x2002)
+(or (not x1994) x1853)
+(or (not x1999) (not x1111) (not x948))
+(or (not x1853) x1994 x1849)
+(or (not x2002) (not x1109) (not x959) x82)
+(or (not x1853) x1994)
+(or (not x1109) (not x959) (not x82) x2002)
+(or (not x1993) (not x1847) x1994)
+(or (not x1999) (not x1109) (not x959))
+(or (not x2009) x1994)
+(or (not x2002) (not x1109) (not x957) x81)
+(or (not x1994) x2009 x1847)
+(or (not x1109) (not x957) (not x81) x2002)
+(or (not x1994) x2009 x1993)
+(or (not x1999) (not x1109) (not x957))
+(or (not x1990) (not x1844) x2009)
+(or (not x2002) (not x1109) (not x956))
+(or (not x2008) x2009)
+(or (not x1109) (not x956) x1999)
+(or (not x2009) x2008 x1844)
+(or (not x2002) (not x1109) (not x954) x79)
+(or (not x2009) x2008 x1990)
+(or (not x1109) (not x954) (not x79) x2002)
+(or (not x720) x2008)
+(or (not x1999) (not x1109) (not x954))
+(or (not x2008) x720)
+(or (not x2002) (not x1109) (not x948) x77)
+(or (not x2001) (not x1842) x2007)
+(or (not x1109) (not x948) (not x77) x2002)
+(or (not x2006) x2007)
+(or (not x1999) (not x1109) (not x948))
+(or (not x2007) x2006 x1842)
+(or (not x2002) (not x1108) (not x959) x73)
+(or (not x2007) x2006 x2001)
+(or (not x1108) (not x959) (not x73) x2002)
+(or (not x1998) (not x1840) x2006)
+(or (not x1999) (not x1108) (not x959))
+(or (not x2005) x2006)
+(or (not x2002) (not x1108) (not x957) x67)
+(or (not x2006) x2005 x1840)
+(or (not x1108) (not x957) (not x67) x2002)
+(or (not x2006) x2005 x1998)
+(or (not x1999) (not x1108) (not x957))
+(or (not x1865) (not x1837) x2005)
+(or (not x2002) (not x1108) (not x956) x66)
+(or (not x1837) x2005)
+(or (not x1108) (not x956) (not x66) x2002)
+(or (not x2005) x1837)
+(or (not x1999) (not x1108) (not x956))
+(or (not x2005) x1865 x1837)
+(or (not x2002) (not x1108) (not x954))
+(or (not x1994) (not x1834) x1837)
+(or (not x1108) (not x954) x1999)
+(or (not x2004) x1837)
+(or (not x2002) (not x1108) (not x948) x65)
+(or (not x1837) x2004 x1834)
+(or (not x1108) (not x948) (not x65) x2002)
+(or (not x1837) x2004 x1994)
+(or (not x1999) (not x1108) (not x948))
+(or (not x1993) (not x1830) x2004)
+(or (not x2002) (not x1105) (not x959) x58)
+(or (not x1993) x2004)
+(or (not x1105) (not x959) (not x58) x2002)
+(or (not x2004) x1993 x1830)
+(or (not x1999) (not x1105) (not x959))
+(or (not x2004) x1993)
+(or (not x2002) (not x1105) (not x957) x57)
+(or (not x1990) (not x1828) x1993)
+(or (not x1105) (not x957) (not x57) x2002)
+(or (not x2003) x1993)
+(or (not x1999) (not x1105) (not x957))
+(or (not x1993) x2003 x1828)
+(or (not x2002) (not x1105) (not x956) x56)
+(or (not x1993) x2003 x1990)
+(or (not x1105) (not x956) (not x56) x2002)
+(or (not x719) x2003)
+(or (not x1999) (not x1105) (not x956))
+(or (not x2003) x719)
+(or (not x2002) (not x1105) (not x954) x55)
+(or (not x2001) (not x1827) x2000)
+(or (not x1105) (not x954) (not x55) x2002)
+(or (not x1997) x2000)
+(or (not x1999) (not x1105) (not x954))
+(or (not x2000) x1997 x1827)
+(or (not x2002) (not x1105) (not x948))
+(or (not x2000) x2001 x1997)
+(or (not x1105) (not x948) x1999)
+(or (not x1998) (not x1824) x1997)
+(or (not x1996) (not x1976) (not x1944) x1988 x1984)
+(or (not x1995) x1997)
+(or (not x1996) (not x1944) x1978 x1976)
+(or (not x1997) x1995 x1824)
+(or (not x1996) x1945 x1944)
+(or (not x1997) x1998 x1995)
+(or (not x1984) (not x1976) (not x1944) x1996)
+(or (not x1865) (not x1821) x1995)
+(or (not x1988) (not x1976) (not x1944) x1996)
+(or (not x1821) x1995)
+(or (not x1978) (not x1944) x1996)
+(or (not x1995) x1821)
+(or (not x1945) x1996)
+(or (not x1995) x1865 x1821)
+(or (not x1988) (not x1984))
+(or (not x1994) (not x1818) x1821)
+(or (not x1168) x1988 x1020 x1987)
+(or (not x1992) x1821)
+(or (not x1988) (not x1168) (not x1987) x1020)
+(or (not x1821) x1992 x1818)
+(or (not x1988) (not x1020) x1168 x1987)
+(or (not x1821) x1994 x1992)
+(or (not x1020) (not x1987) x1988 x1168)
+(or (not x1993) (not x1815) x1992)
+(or (not x1167) x1988 x1018 x1987)
+(or (not x1991) x1992)
+(or (not x1988) (not x1167) (not x1987) x1018)
+(or (not x1992) x1991 x1815)
+(or (not x1988) (not x1018) x1167 x1987)
+(or (not x1992) x1993 x1991)
+(or (not x1018) (not x1987) x1988 x1167)
+(or (not x1990) x1991)
+(or (not x1165) x1988 x1016 x1987)
+(or (not x1991) x1990)
+(or (not x1988) (not x1165) (not x1987) x1016)
+(or (not x1991) x1990)
+(or (not x1988) (not x1016) x1165 x1987)
+(or (not x717) x1990)
+(or (not x1016) (not x1987) x1988 x1165)
+(or (not x1990) x717)
+(or (not x1164) x1988 x1014 x1987)
+(or (not x1953) (not x1895) x1989)
+(or (not x1988) (not x1164) (not x1987) x1014)
+(or (not x1953) x1989)
+(or (not x1988) (not x1014) x1164 x1987)
+(or (not x1989) x1953 x1895)
+(or (not x1014) (not x1987) x1988 x1164)
+(or (not x1989) x1953)
+(or (not x1160) x1988 x1011 x1987)
+(or (not x1951) (not x1893) x1953)
+(or (not x1988) (not x1160) (not x1987) x1011)
+(or (not x1986) x1953)
+(or (not x1988) (not x1011) x1160 x1987)
+(or (not x1953) x1986 x1893)
+(or (not x1011) (not x1987) x1988 x1160)
+(or (not x1953) x1986 x1951)
+(or (not x1167) (not x1018) x1984 x1168 x1020)
+(or (not x1949) (not x1892) x1986)
+(or (not x1165) (not x1016) x1984 x1167 x1018)
+(or (not x1985) x1986)
+(or (not x1164) (not x1014) x1984 x1165 x1016)
+(or (not x1986) x1985 x1892)
+(or (not x1160) (not x1011) x1984 x1164 x1014)
+(or (not x1986) x1985 x1949)
+(or x1984 x1160 x1011)
+(or (not x1890) (not x1849) x1985)
+(or (not x1168) (not x1020) x1984)
+(or (not x1890) x1985)
+(or (not x1984) (not x1020) x1168)
+(or (not x1985) x1890)
+(or (not x1984) (not x1168) x1020)
+(or (not x1985) x1890 x1849)
+(or (not x1984) (not x1018) x1167)
+(or (not x1946) (not x1886) x1890)
+(or (not x1984) (not x1167) x1018)
+(or (not x1983) x1890)
+(or (not x1984) (not x1016) x1165)
+(or (not x1890) x1983 x1886)
+(or (not x1984) (not x1165) x1016)
+(or (not x1890) x1983 x1946)
+(or (not x1984) (not x1014) x1164)
+(or (not x1942) (not x1882) x1983)
+(or (not x1984) (not x1164) x1014)
+(or (not x1982) x1983)
+(or (not x1984) (not x1011) x1160)
+(or (not x1983) x1982 x1882)
+(or (not x1984) (not x1160) x1011)
+(or (not x1983) x1982 x1942)
+(or (not x52) x1978 x1973 x999)
+(or (not x715) x1982)
+(or (not x1978) (not x999) (not x52) x1973)
+(or (not x1982) x715)
+(or (not x1978) x1973 x999 x52)
+(or (not x1953) (not x1881) x1981)
+(or (not x999) x1978 x1973 x52)
+(or (not x1980) x1981)
+(or (not x1973) (not x50) x1978 x1970 x996)
+(or (not x1981) x1980 x1881)
+(or (not x1978) (not x1973) (not x996) (not x50) x1970)
+(or (not x1981) x1980 x1953)
+(or (not x1978) (not x1973) x1970 x996 x50)
+(or (not x1951) (not x1879) x1980)
+(or (not x1973) (not x996) x1978 x1970 x50)
+(or (not x1951) x1980)
+(or (not x1970) (not x48) x1978 x1969 x992)
+(or (not x1980) x1951 x1879)
+(or (not x1978) (not x1970) (not x992) (not x48) x1969)
+(or (not x1980) x1951)
+(or (not x1978) (not x1970) x1969 x992 x48)
+(or (not x1949) (not x1877) x1951)
+(or (not x1970) (not x992) x1978 x1969 x48)
+(or (not x1979) x1951)
+(or (not x1969) (not x46) x1978 x1968 x988)
+(or (not x1951) x1979 x1877)
+(or (not x1978) (not x1969) (not x988) (not x46) x1968)
+(or (not x1951) x1979 x1949)
+(or (not x1978) (not x1969) x1968 x988 x46)
+(or (not x1876) (not x1849) x1979)
+(or (not x1969) (not x988) x1978 x1968 x46)
+(or (not x1876) x1979)
+(or (not x1968) (not x44) x1978 x1965 x985)
+(or (not x1979) x1876)
+(or (not x1978) (not x1968) (not x985) (not x44) x1965)
+(or (not x1979) x1876 x1849)
+(or (not x1978) (not x1968) x1965 x985 x44)
+(or (not x1946) (not x1874) x1876)
+(or (not x1968) (not x985) x1978 x1965 x44)
+(or (not x1977) x1876)
+(or (not x1965) (not x149) x1978 x1964 x980)
+(or (not x1876) x1977 x1874)
+(or (not x1978) (not x1965) (not x980) (not x149) x1964)
+(or (not x1876) x1977 x1946)
+(or (not x1978) (not x1965) x1964 x980 x149)
+(or (not x1942) (not x1870) x1977)
+(or (not x1965) (not x980) x1978 x1964 x149)
+(or (not x1975) x1977)
+(or (not x1978) (not x1976))
+(or (not x1977) x1975 x1870)
+(or (not x1964) x1976)
+(or (not x1977) x1975 x1942)
+(or (not x1976) x1964)
+(or (not x714) x1975)
+(or x1973 x1141 x999)
+(or (not x1975) x714)
+(or (not x1141) (not x999) x1973)
+(or (not x1953) (not x1869) x1974)
+(or (not x1973) (not x999) x1141)
+(or (not x1972) x1974)
+(or (not x1973) (not x1141) x999)
+(or (not x1974) x1972 x1869)
+(or (not x1973) x1970 x1139 x996)
+(or (not x1974) x1972 x1953)
+(or (not x1973) (not x1139) (not x996) x1970)
+(or (not x1951) (not x1867) x1972)
+(or (not x1970) (not x996) x1139)
+(or (not x1971) x1972)
+(or (not x1970) (not x1139) x996)
+(or (not x1972) x1971 x1867)
+(or (not x1970) x1973)
+(or (not x1972) x1971 x1951)
+(or (not x1970) x1969 x1136 x992)
+(or (not x1949) (not x1865) x1971)
+(or (not x1970) (not x1136) (not x992) x1969)
+(or (not x1949) x1971)
+(or (not x1969) (not x992) x1136)
+(or (not x1971) x1949 x1865)
+(or (not x1969) (not x1136) x992)
+(or (not x1971) x1949)
+(or (not x1969) x1970)
+(or (not x1862) (not x1849) x1949)
+(or (not x1969) x1968 x1133 x988)
+(or (not x1862) x1949)
+(or (not x1969) (not x1133) (not x988) x1968)
+(or (not x1949) x1862)
+(or (not x1968) (not x988) x1133)
+(or (not x1949) x1862 x1849)
+(or (not x1968) (not x1133) x988)
+(or (not x1946) (not x1861) x1862)
+(or (not x1968) x1969)
+(or (not x1967) x1862)
+(or (not x1968) x1965 x1131 x985)
+(or (not x1862) x1967 x1861)
+(or (not x1968) (not x1131) (not x985) x1965)
+(or (not x1862) x1967 x1946)
+(or (not x1965) (not x985) x1131)
+(or (not x1942) (not x1858) x1967)
+(or (not x1965) (not x1131) x985)
+(or (not x1966) x1967)
+(or (not x1965) x1968)
+(or (not x1967) x1966 x1858)
+(or (not x1965) x1964 x1128 x980)
+(or (not x1967) x1966 x1942)
+(or (not x1965) (not x1128) (not x980) x1964)
+(or (not x712) x1966)
+(or (not x1964) (not x980) x1128)
+(or (not x1966) x712)
+(or (not x1964) (not x1128) x980)
+(or (not x1953) (not x1857) x1963)
+(or (not x1964) x1965)
+(or (not x1962) x1963)
+(or (not x1945) (not x1113) (not x974))
+(or (not x1963) x1962 x1857)
+(or (not x1113) (not x974) x1944)
+(or (not x1963) x1962 x1953)
+(or (not x1945) (not x1113) (not x970) x95)
+(or (not x1951) (not x1855) x1962)
+(or (not x1113) (not x970) (not x95) x1945)
+(or (not x1961) x1962)
+(or (not x1944) (not x1113) (not x970))
+(or (not x1962) x1961 x1855)
+(or (not x1945) (not x1113) (not x967) x94)
+(or (not x1962) x1961 x1951)
+(or (not x1113) (not x967) (not x94) x1945)
+(or (not x1949) (not x1853) x1961)
+(or (not x1944) (not x1113) (not x967))
+(or (not x1960) x1961)
+(or (not x1945) (not x1113) (not x962) x92)
+(or (not x1961) x1960 x1853)
+(or (not x1113) (not x962) (not x92) x1945)
+(or (not x1961) x1960 x1949)
+(or (not x1944) (not x1113) (not x962))
+(or (not x1849) x1960)
+(or (not x1945) (not x1113) (not x949) x91)
+(or (not x1849) x1960)
+(or (not x1113) (not x949) (not x91) x1945)
+(or (not x1960) x1849)
+(or (not x1944) (not x1113) (not x949))
+(or (not x1960) x1849)
+(or (not x1945) (not x1111) (not x974) x89)
+(or (not x1946) (not x1847) x1849)
+(or (not x1111) (not x974) (not x89) x1945)
+(or (not x1959) x1849)
+(or (not x1944) (not x1111) (not x974))
+(or (not x1849) x1959 x1847)
+(or (not x1945) (not x1111) (not x970))
+(or (not x1849) x1959 x1946)
+(or (not x1111) (not x970) x1944)
+(or (not x1942) (not x1844) x1959)
+(or (not x1945) (not x1111) (not x967) x88)
+(or (not x1959) x1844)
+(or (not x1111) (not x967) (not x88) x1945)
+(or (not x1959) x1942)
+(or (not x1944) (not x1111) (not x967))
+(or (not x1953) (not x1842) x1958)
+(or (not x1945) (not x1111) (not x962) x87)
+(or (not x1957) x1958)
+(or (not x1111) (not x962) (not x87) x1945)
+(or (not x1958) x1957 x1842)
+(or (not x1944) (not x1111) (not x962))
+(or (not x1958) x1957 x1953)
+(or (not x1945) (not x1111) (not x949) x86)
+(or (not x1951) (not x1840) x1957)
+(or (not x1111) (not x949) (not x86) x1945)
+(or (not x1956) x1957)
+(or (not x1944) (not x1111) (not x949))
+(or (not x1957) x1956 x1840)
+(or (not x1945) (not x1109) (not x974) x82)
+(or (not x1957) x1956 x1951)
+(or (not x1109) (not x974) (not x82) x1945)
+(or (not x1949) (not x1837) x1956)
+(or (not x1944) (not x1109) (not x974))
+(or (not x1955) x1956)
+(or (not x1945) (not x1109) (not x970) x81)
+(or (not x1956) x1955 x1837)
+(or (not x1109) (not x970) (not x81) x1945)
+(or (not x1956) x1955 x1949)
+(or (not x1944) (not x1109) (not x970))
+(or (not x1849) (not x1834) x1955)
+(or (not x1945) (not x1109) (not x967))
+(or (not x1834) x1955)
+(or (not x1109) (not x967) x1944)
+(or (not x1955) x1834)
+(or (not x1945) (not x1109) (not x962) x79)
+(or (not x1955) x1849 x1834)
+(or (not x1109) (not x962) (not x79) x1945)
+(or (not x1946) (not x1830) x1834)
+(or (not x1944) (not x1109) (not x962))
+(or (not x1946) x1834)
+(or (not x1945) (not x1109) (not x949) x77)
+(or (not x1834) x1946 x1830)
+(or (not x1109) (not x949) (not x77) x1945)
+(or (not x1834) x1946)
+(or (not x1944) (not x1109) (not x949))
+(or (not x1942) (not x1828) x1946)
+(or (not x1945) (not x1108) (not x974) x73)
+(or (not x1954) x1946)
+(or (not x1108) (not x974) (not x73) x1945)
+(or (not x1946) x1954 x1828)
+(or (not x1944) (not x1108) (not x974))
+(or (not x1946) x1954 x1942)
+(or (not x1945) (not x1108) (not x970) x67)
+(or (not x710) x1954)
+(or (not x1108) (not x970) (not x67) x1945)
+(or (not x1954) x710)
+(or (not x1944) (not x1108) (not x970))
+(or (not x1953) (not x1827) x1952)
+(or (not x1945) (not x1108) (not x967) x66)
+(or (not x1950) x1952)
+(or (not x1108) (not x967) (not x66) x1945)
+(or (not x1952) x1950 x1827)
+(or (not x1944) (not x1108) (not x967))
+(or (not x1952) x1953 x1950)
+(or (not x1945) (not x1108) (not x962))
+(or (not x1951) (not x1824) x1950)
+(or (not x1108) (not x962) x1944)
+(or (not x1948) x1950)
+(or (not x1945) (not x1108) (not x949) x65)
+(or (not x1950) x1948 x1824)
+(or (not x1108) (not x949) (not x65) x1945)
+(or (not x1950) x1951 x1948)
+(or (not x1944) (not x1108) (not x949))
+(or (not x1949) (not x1821) x1948)
+(or (not x1945) (not x1105) (not x974) x58)
+(or (not x1947) x1948)
+(or (not x1105) (not x974) (not x58) x1945)
+(or (not x1948) x1947 x1821)
+(or (not x1944) (not x1105) (not x974))
+(or (not x1948) x1949 x1947)
+(or (not x1945) (not x1105) (not x970) x57)
+(or (not x1849) (not x1818) x1947)
+(or (not x1105) (not x970) (not x57) x1945)
+(or (not x1818) x1947)
+(or (not x1944) (not x1105) (not x970))
+(or (not x1947) x1818)
+(or (not x1945) (not x1105) (not x967) x56)
+(or (not x1947) x1849 x1818)
+(or (not x1105) (not x967) (not x56) x1945)
+(or (not x1946) (not x1815) x1818)
+(or (not x1944) (not x1105) (not x967))
+(or (not x1943) x1818)
+(or (not x1945) (not x1105) (not x962) x55)
+(or (not x1818) x1943 x1815)
+(or (not x1105) (not x962) (not x55) x1945)
+(or (not x1818) x1946 x1943)
+(or (not x1944) (not x1105) (not x962))
+(or (not x1942) x1943)
+(or (not x1945) (not x1105) (not x949))
+(or (not x1943) x1942)
+(or (not x1105) (not x949) x1944)
+(or (not x1943) x1942)
+(or (not x1750) (not x69) (not x6) x1940)
+(or (not x709) x1942)
+(or (not x1940) (not x1924) (not x1887) x1935 x1931)
+(or (not x1942) x709)
+(or (not x1940) (not x1887) x1925 x1924)
+(or (not x1905) (not x1895) x1941)
+(or (not x1940) x1889 x1887)
+(or (not x1905) x1941)
+(or (not x1931) (not x1924) (not x1887) x1940)
+(or (not x1941) x1905 x1895)
+(or (not x1935) (not x1924) (not x1887) x1940)
+(or (not x1941) x1905)
+(or (not x1925) (not x1887) x1940)
+(or (not x1903) (not x1893) x1905)
+(or (not x1889) x1940)
+(or (not x1939) x1905)
+(or (not x1935) (not x1931))
+(or (not x1905) x1939 x1893)
+(or (not x1090) x1935 x1334 x1689)
+(or (not x1905) x1939 x1903)
+(or (not x1935) (not x1090) (not x1689) x1334)
+(or (not x1901) (not x1892) x1939)
+(or (not x1935) (not x1334) x1090 x1689)
+(or (not x1938) x1939)
+(or (not x1334) (not x1689) x1935 x1090)
+(or (not x1939) x1938 x1892)
+(or (not x1089) x1935 x1332 x1689)
+(or (not x1939) x1938 x1901)
+(or (not x1935) (not x1089) (not x1689) x1332)
+(or (not x1899) (not x1890) x1938)
+(or (not x1935) (not x1332) x1089 x1689)
+(or (not x1937) x1938)
+(or (not x1332) (not x1689) x1935 x1089)
+(or (not x1938) x1937 x1890)
+(or (not x1087) x1935 x1331 x1689)
+(or (not x1938) x1937 x1899)
+(or (not x1935) (not x1087) (not x1689) x1331)
+(or (not x1886) (not x1830) x1937)
+(or (not x1935) (not x1331) x1087 x1689)
+(or (not x1886) x1937)
+(or (not x1331) (not x1689) x1935 x1087)
+(or (not x1937) x1886)
+(or (not x1085) x1935 x1329 x1689)
+(or (not x1937) x1886 x1830)
+(or (not x1935) (not x1085) (not x1689) x1329)
+(or (not x1896) (not x1882) x1886)
+(or (not x1935) (not x1329) x1085 x1689)
+(or (not x1936) x1886)
+(or (not x1329) (not x1689) x1935 x1085)
+(or (not x1886) x1936 x1882)
+(or (not x1084) x1935 x1328 x1689)
+(or (not x1886) x1936 x1896)
+(or (not x1935) (not x1084) (not x1689) x1328)
+(or (not x707) x1936)
+(or (not x1935) (not x1328) x1084 x1689)
+(or (not x1936) x707)
+(or (not x1328) (not x1689) x1935 x1084)
+(or (not x1905) (not x1881) x1934)
+(or (not x1332) (not x1089) x1931 x1334 x1090)
+(or (not x1933) x1934)
+(or (not x1331) (not x1087) x1931 x1332 x1089)
+(or (not x1934) x1933 x1881)
+(or (not x1329) (not x1085) x1931 x1331 x1087)
+(or (not x1934) x1933 x1905)
+(or (not x1328) (not x1084) x1931 x1329 x1085)
+(or (not x1903) (not x1879) x1933)
+(or x1931 x1328 x1084)
+(or (not x1903) x1933)
+(or (not x1334) (not x1090) x1931)
+(or (not x1933) x1903 x1879)
+(or (not x1931) (not x1334) x1090)
+(or (not x1933) x1903)
+(or (not x1931) (not x1090) x1334)
+(or (not x1901) (not x1877) x1903)
+(or (not x1931) (not x1332) x1089)
+(or (not x1932) x1903)
+(or (not x1931) (not x1089) x1332)
+(or (not x1903) x1932 x1877)
+(or (not x1931) (not x1331) x1087)
+(or (not x1903) x1932 x1901)
+(or (not x1931) (not x1087) x1331)
+(or (not x1899) (not x1876) x1932)
+(or (not x1931) (not x1329) x1085)
+(or (not x1930) x1932)
+(or (not x1931) (not x1085) x1329)
+(or (not x1932) x1930 x1876)
+(or (not x1931) (not x1328) x1084)
+(or (not x1932) x1930 x1899)
+(or (not x1931) (not x1084) x1328)
+(or (not x1874) (not x1830) x1930)
+(or (not x52) x1925 x1921 x1318)
+(or (not x1874) x1930)
+(or (not x1925) (not x1318) (not x52) x1921)
+(or (not x1930) x1874)
+(or (not x1925) x1921 x1318 x52)
+(or (not x1930) x1874 x1830)
+(or (not x1318) x1925 x1921 x52)
+(or (not x1896) (not x1870) x1874)
+(or (not x1921) (not x50) x1925 x1919 x1316)
+(or (not x1929) x1874)
+(or (not x1925) (not x1921) (not x1316) (not x50) x1919)
+(or (not x1874) x1929 x1870)
+(or (not x1925) (not x1921) x1919 x1316 x50)
+(or (not x1874) x1929 x1896)
+(or (not x1921) (not x1316) x1925 x1919 x50)
+(or (not x705) x1929)
+(or (not x1919) (not x48) x1925 x1917 x1312)
+(or (not x1929) x705)
+(or (not x1925) (not x1919) (not x1312) (not x48) x1917)
+(or (not x1905) (not x1869) x1928)
+(or (not x1925) (not x1919) x1917 x1312 x48)
+(or (not x1927) x1928)
+(or (not x1919) (not x1312) x1925 x1917 x48)
+(or (not x1928) x1927 x1869)
+(or (not x1917) (not x46) x1925 x1915 x1308)
+(or (not x1928) x1927 x1905)
+(or (not x1925) (not x1917) (not x1308) (not x46) x1915)
+(or (not x1903) (not x1867) x1927)
+(or (not x1925) (not x1917) x1915 x1308 x46)
+(or (not x1926) x1927)
+(or (not x1917) (not x1308) x1925 x1915 x46)
+(or (not x1927) x1926 x1867)
+(or (not x1915) (not x44) x1925 x1913 x1303)
+(or (not x1927) x1926 x1903)
+(or (not x1925) (not x1915) (not x1303) (not x44) x1913)
+(or (not x1901) (not x1865) x1926)
+(or (not x1925) (not x1915) x1913 x1303 x44)
+(or (not x1901) x1926)
+(or (not x1915) (not x1303) x1925 x1913 x44)
+(or (not x1926) x1901 x1865)
+(or (not x1913) (not x149) x1925 x1912 x1300)
+(or (not x1926) x1901)
+(or (not x1925) (not x1913) (not x1300) (not x149) x1912)
+(or (not x1899) (not x1862) x1901)
+(or (not x1925) (not x1913) x1912 x1300 x149)
+(or (not x1923) x1901)
+(or (not x1913) (not x1300) x1925 x1912 x149)
+(or (not x1901) x1923 x1862)
+(or (not x1925) (not x1924))
+(or (not x1901) x1923 x1899)
+(or (not x1912) x1924)
+(or (not x1861) (not x1830) x1923)
+(or (not x1924) x1912)
+(or (not x1861) x1923)
+(or x1921 x1318 x1073)
+(or (not x1923) x1861)
+(or (not x1318) (not x1073) x1921)
+(or (not x1923) x1861 x1830)
+(or (not x1921) (not x1318) x1073)
+(or (not x1896) (not x1858) x1861)
+(or (not x1921) (not x1073) x1318)
+(or (not x1922) x1861)
+(or (not x1921) x1919 x1316 x1072)
+(or (not x1861) x1922 x1858)
+(or (not x1921) (not x1316) (not x1072) x1919)
+(or (not x1861) x1922 x1896)
+(or (not x1919) (not x1316) x1072)
+(or (not x702) x1922)
+(or (not x1919) (not x1072) x1316)
+(or (not x1922) x702)
+(or (not x1919) x1921)
+(or (not x1905) (not x1857) x1920)
+(or (not x1919) x1917 x1312 x1069)
+(or (not x1918) x1920)
+(or (not x1919) (not x1312) (not x1069) x1917)
+(or (not x1920) x1918 x1857)
+(or (not x1917) (not x1312) x1069)
+(or (not x1920) x1918 x1905)
+(or (not x1917) (not x1069) x1312)
+(or (not x1903) (not x1855) x1918)
+(or (not x1917) x1919)
+(or (not x1916) x1918)
+(or (not x1917) x1915 x1308 x1066)
+(or (not x1918) x1916 x1855)
+(or (not x1917) (not x1308) (not x1066) x1915)
+(or (not x1918) x1916 x1903)
+(or (not x1915) (not x1308) x1066)
+(or (not x1901) (not x1853) x1916)
+(or (not x1915) (not x1066) x1308)
+(or (not x1914) x1916)
+(or (not x1915) x1917)
+(or (not x1916) x1914 x1853)
+(or (not x1915) x1913 x1303 x1062)
+(or (not x1916) x1914 x1901)
+(or (not x1915) (not x1303) (not x1062) x1913)
+(or (not x1899) (not x1849) x1914)
+(or (not x1913) (not x1303) x1062)
+(or (not x1899) x1914)
+(or (not x1913) (not x1062) x1303)
+(or (not x1914) x1899 x1849)
+(or (not x1913) x1915)
+(or (not x1914) x1899)
+(or (not x1913) x1912 x1300 x1059)
+(or (not x1847) (not x1830) x1899)
+(or (not x1913) (not x1300) (not x1059) x1912)
+(or (not x1847) x1899)
+(or (not x1912) (not x1300) x1059)
+(or (not x1899) x1847)
+(or (not x1912) (not x1059) x1300)
+(or (not x1899) x1847 x1830)
+(or (not x1912) x1913)
+(or (not x1896) (not x1844) x1847)
+(or (not x1889) (not x1284) (not x1045))
+(or (not x1911) x1847)
+(or (not x1284) (not x1045) x1887)
+(or (not x1847) x1911 x1844)
+(or (not x1889) (not x1283) (not x1045) x95)
+(or (not x1847) x1911 x1896)
+(or (not x1283) (not x1045) (not x95) x1889)
+(or (not x701) x1911)
+(or (not x1887) (not x1283) (not x1045))
+(or (not x1911) x701)
+(or (not x1889) (not x1281) (not x1045) x94)
+(or (not x1905) (not x1842) x1910)
+(or (not x1281) (not x1045) (not x94) x1889)
+(or (not x1909) x1910)
+(or (not x1887) (not x1281) (not x1045))
+(or (not x1910) x1909 x1842)
+(or (not x1889) (not x1279) (not x1045) x92)
+(or (not x1910) x1909 x1905)
+(or (not x1279) (not x1045) (not x92) x1889)
+(or (not x1903) (not x1840) x1909)
+(or (not x1887) (not x1279) (not x1045))
+(or (not x1908) x1909)
+(or (not x1889) (not x1276) (not x1045) x91)
+(or (not x1909) x1908 x1840)
+(or (not x1276) (not x1045) (not x91) x1889)
+(or (not x1909) x1908 x1903)
+(or (not x1887) (not x1276) (not x1045))
+(or (not x1901) (not x1837) x1908)
+(or (not x1889) (not x1284) (not x1043) x89)
+(or (not x1907) x1908)
+(or (not x1284) (not x1043) (not x89) x1889)
+(or (not x1908) x1907 x1837)
+(or (not x1887) (not x1284) (not x1043))
+(or (not x1908) x1907 x1901)
+(or (not x1889) (not x1283) (not x1043))
+(or (not x1899) (not x1834) x1907)
+(or (not x1283) (not x1043) x1887)
+(or (not x1906) x1907)
+(or (not x1889) (not x1281) (not x1043) x88)
+(or (not x1907) x1906 x1834)
+(or (not x1281) (not x1043) (not x88) x1889)
+(or (not x1907) x1906 x1899)
+(or (not x1887) (not x1281) (not x1043))
+(or (not x1830) x1906)
+(or (not x1889) (not x1279) (not x1043) x87)
+(or (not x1830) x1906)
+(or (not x1279) (not x1043) (not x87) x1889)
+(or (not x1906) x1830)
+(or (not x1887) (not x1279) (not x1043))
+(or (not x1906) x1830)
+(or (not x1889) (not x1276) (not x1043) x86)
+(or (not x1896) (not x1828) x1830)
+(or (not x1276) (not x1043) (not x86) x1889)
+(or (not x1830) x1828)
+(or (not x1887) (not x1276) (not x1043))
+(or (not x1830) x1896)
+(or (not x1889) (not x1284) (not x1042) x82)
+(or (not x1905) (not x1827) x1904)
+(or (not x1284) (not x1042) (not x82) x1889)
+(or (not x1902) x1904)
+(or (not x1887) (not x1284) (not x1042))
+(or (not x1904) x1902 x1827)
+(or (not x1889) (not x1283) (not x1042) x81)
+(or (not x1904) x1905 x1902)
+(or (not x1283) (not x1042) (not x81) x1889)
+(or (not x1903) (not x1824) x1902)
+(or (not x1887) (not x1283) (not x1042))
+(or (not x1900) x1902)
+(or (not x1889) (not x1281) (not x1042))
+(or (not x1902) x1900 x1824)
+(or (not x1281) (not x1042) x1887)
+(or (not x1902) x1903 x1900)
+(or (not x1889) (not x1279) (not x1042) x79)
+(or (not x1901) (not x1821) x1900)
+(or (not x1279) (not x1042) (not x79) x1889)
+(or (not x1898) x1900)
+(or (not x1887) (not x1279) (not x1042))
+(or (not x1900) x1898 x1821)
+(or (not x1889) (not x1276) (not x1042) x77)
+(or (not x1900) x1901 x1898)
+(or (not x1276) (not x1042) (not x77) x1889)
+(or (not x1899) (not x1818) x1898)
+(or (not x1887) (not x1276) (not x1042))
+(or (not x1897) x1898)
+(or (not x1889) (not x1284) (not x1040) x73)
+(or (not x1898) x1897 x1818)
+(or (not x1284) (not x1040) (not x73) x1889)
+(or (not x1898) x1899 x1897)
+(or (not x1887) (not x1284) (not x1040))
+(or (not x1830) (not x1815) x1897)
+(or (not x1889) (not x1283) (not x1040) x67)
+(or (not x1815) x1897)
+(or (not x1283) (not x1040) (not x67) x1889)
+(or (not x1897) x1815)
+(or (not x1887) (not x1283) (not x1040))
+(or (not x1897) x1830 x1815)
+(or (not x1889) (not x1281) (not x1040) x66)
+(or (not x1896) x1815)
+(or (not x1281) (not x1040) (not x66) x1889)
+(or (not x1815) x1896)
+(or (not x1887) (not x1281) (not x1040))
+(or (not x1815) x1896)
+(or (not x1889) (not x1279) (not x1040))
+(or (not x700) x1896)
+(or (not x1279) (not x1040) x1887)
+(or (not x1896) x700)
+(or (not x1889) (not x1276) (not x1040) x65)
+(or (not x1895) (not x1826) x1894)
+(or (not x1276) (not x1040) (not x65) x1889)
+(or (not x1826) x1894)
+(or (not x1887) (not x1276) (not x1040))
+(or (not x1894) x1895 x1826)
+(or (not x1889) (not x1284) (not x1037) x58)
+(or (not x1894) x1826)
+(or (not x1284) (not x1037) (not x58) x1889)
+(or (not x1893) (not x1823) x1826)
+(or (not x1887) (not x1284) (not x1037))
+(or (not x1891) x1826)
+(or (not x1889) (not x1283) (not x1037) x57)
+(or (not x1826) x1893 x1891)
+(or (not x1283) (not x1037) (not x57) x1889)
+(or (not x1826) x1891 x1823)
+(or (not x1887) (not x1283) (not x1037))
+(or (not x1892) (not x1820) x1891)
+(or (not x1889) (not x1281) (not x1037) x56)
+(or (not x1888) x1891)
+(or (not x1281) (not x1037) (not x56) x1889)
+(or (not x1891) x1892 x1888)
+(or (not x1887) (not x1281) (not x1037))
+(or (not x1891) x1888 x1820)
+(or (not x1889) (not x1279) (not x1037) x55)
+(or (not x1890) (not x1817) x1888)
+(or (not x1279) (not x1037) (not x55) x1889)
+(or (not x1885) x1888)
+(or (not x1887) (not x1279) (not x1037))
+(or (not x1888) x1890 x1885)
+(or (not x1889) (not x1276) (not x1037))
+(or (not x1888) x1885 x1817)
+(or (not x1276) (not x1037) x1887)
+(or (not x1886) (not x1814) x1885)
+(or (not x1750) (not x69) (not x7) x1883)
+(or (not x1884) x1885)
+(or (not x1883) (not x1850) (not x1803) x1872 x1864)
+(or (not x1885) x1886 x1884)
+(or (not x1883) (not x1803) x1852 x1850)
+(or (not x1885) x1884 x1814)
+(or (not x1883) x1805 x1803)
+(or (not x1882) x1884)
+(or (not x1864) (not x1850) (not x1803) x1883)
+(or (not x1884) x1882)
+(or (not x1872) (not x1850) (not x1803) x1883)
+(or (not x1884) x1882)
+(or (not x1852) (not x1803) x1883)
+(or (not x699) x1882)
+(or (not x1805) x1883)
+(or (not x1882) x699)
+(or (not x1872) (not x1864))
+(or (not x1881) (not x1826) x1880)
+(or (not x1090) x1872 x1267 x1689)
+(or (not x1878) x1880)
+(or (not x1872) (not x1090) (not x1689) x1267)
+(or (not x1880) x1881 x1878)
+(or (not x1872) (not x1267) x1090 x1689)
+(or (not x1880) x1878 x1826)
+(or (not x1267) (not x1689) x1872 x1090)
+(or (not x1879) (not x1823) x1878)
+(or (not x1089) x1872 x1265 x1689)
+(or (not x1823) x1878)
+(or (not x1872) (not x1089) (not x1689) x1265)
+(or (not x1878) x1879 x1823)
+(or (not x1872) (not x1265) x1089 x1689)
+(or (not x1878) x1823)
+(or (not x1265) (not x1689) x1872 x1089)
+(or (not x1877) (not x1820) x1823)
+(or (not x1087) x1872 x1264 x1689)
+(or (not x1875) x1823)
+(or (not x1872) (not x1087) (not x1689) x1264)
+(or (not x1823) x1877 x1875)
+(or (not x1872) (not x1264) x1087 x1689)
+(or (not x1823) x1875 x1820)
+(or (not x1264) (not x1689) x1872 x1087)
+(or (not x1876) (not x1817) x1875)
+(or (not x1085) x1872 x1262 x1689)
+(or (not x1873) x1875)
+(or (not x1872) (not x1085) (not x1689) x1262)
+(or (not x1875) x1876 x1873)
+(or (not x1872) (not x1262) x1085 x1689)
+(or (not x1875) x1873 x1817)
+(or (not x1262) (not x1689) x1872 x1085)
+(or (not x1874) (not x1814) x1873)
+(or (not x1084) x1872 x1261 x1689)
+(or (not x1871) x1873)
+(or (not x1872) (not x1084) (not x1689) x1261)
+(or (not x1873) x1874 x1871)
+(or (not x1872) (not x1261) x1084 x1689)
+(or (not x1873) x1871 x1814)
+(or (not x1261) (not x1689) x1872 x1084)
+(or (not x1870) x1871)
+(or (not x1265) (not x1089) x1864 x1267 x1090)
+(or (not x1871) x1870)
+(or (not x1264) (not x1087) x1864 x1265 x1089)
+(or (not x1871) x1870)
+(or (not x1262) (not x1085) x1864 x1264 x1087)
+(or (not x698) x1870)
+(or (not x1261) (not x1084) x1864 x1262 x1085)
+(or (not x1870) x698)
+(or x1864 x1261 x1084)
+(or (not x1869) (not x1826) x1868)
+(or (not x1267) (not x1090) x1864)
+(or (not x1866) x1868)
+(or (not x1864) (not x1267) x1090)
+(or (not x1868) x1869 x1866)
+(or (not x1864) (not x1090) x1267)
+(or (not x1868) x1866 x1826)
+(or (not x1864) (not x1265) x1089)
+(or (not x1867) (not x1823) x1866)
+(or (not x1864) (not x1089) x1265)
+(or (not x1863) x1866)
+(or (not x1864) (not x1264) x1087)
+(or (not x1866) x1867 x1863)
+(or (not x1864) (not x1087) x1264)
+(or (not x1866) x1863 x1823)
+(or (not x1864) (not x1262) x1085)
+(or (not x1865) (not x1820) x1863)
+(or (not x1864) (not x1085) x1262)
+(or (not x1820) x1863)
+(or (not x1864) (not x1261) x1084)
+(or (not x1863) x1865 x1820)
+(or (not x1864) (not x1084) x1261)
+(or (not x1863) x1820)
+(or (not x52) x1852 x1846 x1247)
+(or (not x1862) (not x1817) x1820)
+(or (not x1852) (not x1247) (not x52) x1846)
+(or (not x1860) x1820)
+(or (not x1852) x1846 x1247 x52)
+(or (not x1820) x1862 x1860)
+(or (not x1247) x1852 x1846 x52)
+(or (not x1820) x1860 x1817)
+(or (not x1846) (not x50) x1852 x1843 x1244)
+(or (not x1861) (not x1814) x1860)
+(or (not x1852) (not x1846) (not x1244) (not x50) x1843)
+(or (not x1859) x1860)
+(or (not x1852) (not x1846) x1843 x1244 x50)
+(or (not x1860) x1861 x1859)
+(or (not x1846) (not x1244) x1852 x1843 x50)
+(or (not x1860) x1859 x1814)
+(or (not x1843) (not x48) x1852 x1839 x1241)
+(or (not x1858) x1859)
+(or (not x1852) (not x1843) (not x1241) (not x48) x1839)
+(or (not x1859) x1858)
+(or (not x1852) (not x1843) x1839 x1241 x48)
+(or (not x1859) x1858)
+(or (not x1843) (not x1241) x1852 x1839 x48)
+(or (not x697) x1858)
+(or (not x1839) (not x46) x1852 x1835 x1236)
+(or (not x1858) x697)
+(or (not x1852) (not x1839) (not x1236) (not x46) x1835)
+(or (not x1857) (not x1826) x1856)
+(or (not x1852) (not x1839) x1835 x1236 x46)
+(or (not x1854) x1856)
+(or (not x1839) (not x1236) x1852 x1835 x46)
+(or (not x1856) x1857 x1854)
+(or (not x1835) (not x44) x1852 x1832 x1233)
+(or (not x1856) x1854 x1826)
+(or (not x1852) (not x1835) (not x1233) (not x44) x1832)
+(or (not x1855) (not x1823) x1854)
+(or (not x1852) (not x1835) x1832 x1233 x44)
+(or (not x1851) x1854)
+(or (not x1835) (not x1233) x1852 x1832 x44)
+(or (not x1854) x1855 x1851)
+(or (not x1832) (not x149) x1852 x1831 x1229)
+(or (not x1854) x1851 x1823)
+(or (not x1852) (not x1832) (not x1229) (not x149) x1831)
+(or (not x1853) (not x1820) x1851)
+(or (not x1852) (not x1832) x1831 x1229 x149)
+(or (not x1848) x1851)
+(or (not x1832) (not x1229) x1852 x1831 x149)
+(or (not x1851) x1853 x1848)
+(or (not x1852) (not x1850))
+(or (not x1851) x1848 x1820)
+(or (not x1831) x1850)
+(or (not x1849) (not x1817) x1848)
+(or (not x1850) x1831)
+(or (not x1817) x1848)
+(or x1846 x1247 x1073)
+(or (not x1848) x1849 x1817)
+(or (not x1247) (not x1073) x1846)
+(or (not x1848) x1817)
+(or (not x1846) (not x1247) x1073)
+(or (not x1847) (not x1814) x1817)
+(or (not x1846) (not x1073) x1247)
+(or (not x1845) x1817)
+(or (not x1846) x1843 x1244 x1072)
+(or (not x1817) x1847 x1845)
+(or (not x1846) (not x1244) (not x1072) x1843)
+(or (not x1817) x1845 x1814)
+(or (not x1843) (not x1244) x1072)
+(or (not x1844) x1845)
+(or (not x1843) (not x1072) x1244)
+(or (not x1845) x1844)
+(or (not x1843) x1846)
+(or (not x1845) x1844)
+(or (not x1843) x1839 x1241 x1069)
+(or (not x696) x1844)
+(or (not x1843) (not x1241) (not x1069) x1839)
+(or (not x1844) x696)
+(or (not x1839) (not x1241) x1069)
+(or (not x1842) (not x1826) x1841)
+(or (not x1839) (not x1069) x1241)
+(or (not x1838) x1841)
+(or (not x1839) x1843)
+(or (not x1841) x1842 x1838)
+(or (not x1839) x1835 x1236 x1066)
+(or (not x1841) x1838 x1826)
+(or (not x1839) (not x1236) (not x1066) x1835)
+(or (not x1840) (not x1823) x1838)
+(or (not x1835) (not x1236) x1066)
+(or (not x1836) x1838)
+(or (not x1835) (not x1066) x1236)
+(or (not x1838) x1840 x1836)
+(or (not x1835) x1839)
+(or (not x1838) x1836 x1823)
+(or (not x1835) x1832 x1233 x1062)
+(or (not x1837) (not x1820) x1836)
+(or (not x1835) (not x1233) (not x1062) x1832)
+(or (not x1833) x1836)
+(or (not x1832) (not x1233) x1062)
+(or (not x1836) x1837 x1833)
+(or (not x1832) (not x1062) x1233)
+(or (not x1836) x1833 x1820)
+(or (not x1832) x1835)
+(or (not x1834) (not x1817) x1833)
+(or (not x1832) x1831 x1229 x1059)
+(or (not x1829) x1833)
+(or (not x1832) (not x1229) (not x1059) x1831)
+(or (not x1833) x1834 x1829)
+(or (not x1831) (not x1229) x1059)
+(or (not x1833) x1829 x1817)
+(or (not x1831) (not x1059) x1229)
+(or (not x1830) (not x1814) x1829)
+(or (not x1831) x1832)
+(or (not x1814) x1829)
+(or (not x1805) (not x1199) (not x1045))
+(or (not x1829) x1830 x1814)
+(or (not x1199) (not x1045) x1803)
+(or (not x1829) x1814)
+(or (not x1805) (not x1197) (not x1045) x95)
+(or (not x1828) x1814)
+(or (not x1197) (not x1045) (not x95) x1805)
+(or (not x1814) x1828)
+(or (not x1803) (not x1197) (not x1045))
+(or (not x1814) x1828)
+(or (not x1805) (not x1194) (not x1045) x94)
+(or (not x695) x1828)
+(or (not x1194) (not x1045) (not x94) x1805)
+(or (not x1828) x695)
+(or (not x1803) (not x1194) (not x1045))
+(or (not x1827) (not x1826) x1825)
+(or (not x1805) (not x1191) (not x1045) x92)
+(or (not x1822) x1825)
+(or (not x1191) (not x1045) (not x92) x1805)
+(or (not x1825) x1827 x1822)
+(or (not x1803) (not x1191) (not x1045))
+(or (not x1825) x1826 x1822)
+(or (not x1805) (not x1188) (not x1045) x91)
+(or (not x1824) (not x1823) x1822)
+(or (not x1188) (not x1045) (not x91) x1805)
+(or (not x1819) x1822)
+(or (not x1803) (not x1188) (not x1045))
+(or (not x1822) x1824 x1819)
+(or (not x1805) (not x1199) (not x1043) x89)
+(or (not x1822) x1823 x1819)
+(or (not x1199) (not x1043) (not x89) x1805)
+(or (not x1821) (not x1820) x1819)
+(or (not x1803) (not x1199) (not x1043))
+(or (not x1816) x1819)
+(or (not x1805) (not x1197) (not x1043))
+(or (not x1819) x1821 x1816)
+(or (not x1197) (not x1043) x1803)
+(or (not x1819) x1820 x1816)
+(or (not x1805) (not x1194) (not x1043) x88)
+(or (not x1818) (not x1817) x1816)
+(or (not x1194) (not x1043) (not x88) x1805)
+(or (not x1813) x1816)
+(or (not x1803) (not x1194) (not x1043))
+(or (not x1816) x1818 x1813)
+(or (not x1805) (not x1191) (not x1043) x87)
+(or (not x1816) x1817 x1813)
+(or (not x1191) (not x1043) (not x87) x1805)
+(or (not x1815) (not x1814) x1813)
+(or (not x1803) (not x1191) (not x1043))
+(or (not x1813) x1815)
+(or (not x1805) (not x1188) (not x1043) x86)
+(or (not x1813) x1814)
+(or (not x1188) (not x1043) (not x86) x1805)
+(or (not x1579) x1812)
+(or (not x1803) (not x1188) (not x1043))
+(or (not x1579) x1812)
+(or (not x1805) (not x1199) (not x1042) x82)
+(or (not x1812) x1579)
+(or (not x1199) (not x1042) (not x82) x1805)
+(or (not x1812) x1579)
+(or (not x1803) (not x1199) (not x1042))
+(or (not x1776) (not x1577) x1579)
+(or (not x1805) (not x1197) (not x1042) x81)
+(or (not x1811) x1579)
+(or (not x1197) (not x1042) (not x81) x1805)
+(or (not x1579) x1811 x1577)
+(or (not x1803) (not x1197) (not x1042))
+(or (not x1579) x1811 x1776)
+(or (not x1805) (not x1194) (not x1042))
+(or (not x1775) (not x1576) x1811)
+(or (not x1194) (not x1042) x1803)
+(or (not x1810) x1811)
+(or (not x1805) (not x1191) (not x1042) x79)
+(or (not x1811) x1810 x1576)
+(or (not x1191) (not x1042) (not x79) x1805)
+(or (not x1811) x1810 x1775)
+(or (not x1803) (not x1191) (not x1042))
+(or (not x1772) (not x1573) x1810)
+(or (not x1805) (not x1188) (not x1042) x77)
+(or (not x1809) x1810)
+(or (not x1188) (not x1042) (not x77) x1805)
+(or (not x1810) x1809 x1573)
+(or (not x1803) (not x1188) (not x1042))
+(or (not x1810) x1809 x1772)
+(or (not x1805) (not x1199) (not x1040) x73)
+(or (not x1768) (not x1571) x1809)
+(or (not x1199) (not x1040) (not x73) x1805)
+(or (not x1808) x1809)
+(or (not x1803) (not x1199) (not x1040))
+(or (not x1809) x1808 x1571)
+(or (not x1805) (not x1197) (not x1040) x67)
+(or (not x1809) x1808 x1768)
+(or (not x1197) (not x1040) (not x67) x1805)
+(or (not x1765) (not x1568) x1808)
+(or (not x1803) (not x1197) (not x1040))
+(or (not x1808) x1568)
+(or (not x1805) (not x1194) (not x1040) x66)
+(or (not x1808) x1765)
+(or (not x1194) (not x1040) (not x66) x1805)
+(or (not x1579) (not x1567) x1807)
+(or (not x1803) (not x1194) (not x1040))
+(or (not x1567) x1807)
+(or (not x1805) (not x1191) (not x1040))
+(or (not x1807) x1567)
+(or (not x1191) (not x1040) x1803)
+(or (not x1807) x1579 x1567)
+(or (not x1805) (not x1188) (not x1040) x65)
+(or (not x1776) (not x1565) x1567)
+(or (not x1188) (not x1040) (not x65) x1805)
+(or (not x1776) x1567)
+(or (not x1803) (not x1188) (not x1040))
+(or (not x1567) x1776 x1565)
+(or (not x1805) (not x1199) (not x1037) x58)
+(or (not x1567) x1776)
+(or (not x1199) (not x1037) (not x58) x1805)
+(or (not x1775) (not x1563) x1776)
+(or (not x1803) (not x1199) (not x1037))
+(or (not x1806) x1776)
+(or (not x1805) (not x1197) (not x1037) x57)
+(or (not x1776) x1806 x1563)
+(or (not x1197) (not x1037) (not x57) x1805)
+(or (not x1776) x1806 x1775)
+(or (not x1803) (not x1197) (not x1037))
+(or (not x1772) (not x1560) x1806)
+(or (not x1805) (not x1194) (not x1037) x56)
+(or (not x1804) x1806)
+(or (not x1194) (not x1037) (not x56) x1805)
+(or (not x1806) x1804 x1560)
+(or (not x1803) (not x1194) (not x1037))
+(or (not x1806) x1804 x1772)
+(or (not x1805) (not x1191) (not x1037) x55)
+(or (not x1768) (not x1558) x1804)
+(or (not x1191) (not x1037) (not x55) x1805)
+(or (not x1802) x1804)
+(or (not x1803) (not x1191) (not x1037))
+(or (not x1804) x1802 x1558)
+(or (not x1805) (not x1188) (not x1037))
+(or (not x1804) x1802 x1768)
+(or (not x1188) (not x1037) x1803)
+(or (not x1765) (not x1554) x1802)
+(or (not x1750) (not x69) (not x8) x1800)
+(or (not x1801) x1802)
+(or (not x1800) (not x1784) (not x1751) x1796 x1791)
+(or (not x1802) x1801 x1554)
+(or (not x1800) (not x1751) x1785 x1784)
+(or (not x1802) x1801 x1765)
+(or (not x1800) x1752 x1751)
+(or (not x694) x1801)
+(or (not x1791) (not x1784) (not x1751) x1800)
+(or (not x1801) x694)
+(or (not x1796) (not x1784) (not x1751) x1800)
+(or (not x1579) (not x1552) x1799)
+(or (not x1785) (not x1751) x1800)
+(or (not x1552) x1799)
+(or (not x1752) x1800)
+(or (not x1799) x1552)
+(or (not x1796) (not x1791))
+(or (not x1799) x1579 x1552)
+(or (not x1090) x1796 x1168 x1689)
+(or (not x1776) (not x1550) x1552)
+(or (not x1796) (not x1090) (not x1689) x1168)
+(or (not x1798) x1552)
+(or (not x1796) (not x1168) x1090 x1689)
+(or (not x1552) x1798 x1550)
+(or (not x1168) (not x1689) x1796 x1090)
+(or (not x1552) x1798 x1776)
+(or (not x1089) x1796 x1167 x1689)
+(or (not x1775) (not x1547) x1798)
+(or (not x1796) (not x1089) (not x1689) x1167)
+(or (not x1775) x1798)
+(or (not x1796) (not x1167) x1089 x1689)
+(or (not x1798) x1775 x1547)
+(or (not x1167) (not x1689) x1796 x1089)
+(or (not x1798) x1775)
+(or (not x1087) x1796 x1165 x1689)
+(or (not x1772) (not x1544) x1775)
+(or (not x1796) (not x1087) (not x1689) x1165)
+(or (not x1797) x1775)
+(or (not x1796) (not x1165) x1087 x1689)
+(or (not x1775) x1797 x1544)
+(or (not x1165) (not x1689) x1796 x1087)
+(or (not x1775) x1797 x1772)
+(or (not x1085) x1796 x1164 x1689)
+(or (not x1768) (not x1541) x1797)
+(or (not x1796) (not x1085) (not x1689) x1164)
+(or (not x1795) x1797)
+(or (not x1796) (not x1164) x1085 x1689)
+(or (not x1797) x1795 x1541)
+(or (not x1164) (not x1689) x1796 x1085)
+(or (not x1797) x1795 x1768)
+(or (not x1084) x1796 x1160 x1689)
+(or (not x1765) (not x1538) x1795)
+(or (not x1796) (not x1084) (not x1689) x1160)
+(or (not x1794) x1795)
+(or (not x1796) (not x1160) x1084 x1689)
+(or (not x1795) x1794 x1538)
+(or (not x1160) (not x1689) x1796 x1084)
+(or (not x1795) x1794 x1765)
+(or (not x1167) (not x1089) x1791 x1168 x1090)
+(or (not x693) x1794)
+(or (not x1165) (not x1087) x1791 x1167 x1089)
+(or (not x1794) x693)
+(or (not x1164) (not x1085) x1791 x1165 x1087)
+(or (not x1579) (not x1537) x1793)
+(or (not x1160) (not x1084) x1791 x1164 x1085)
+(or (not x1537) x1793)
+(or x1791 x1160 x1084)
+(or (not x1793) x1537)
+(or (not x1168) (not x1090) x1791)
+(or (not x1793) x1579 x1537)
+(or (not x1791) (not x1168) x1090)
+(or (not x1776) (not x1535) x1537)
+(or (not x1791) (not x1090) x1168)
+(or (not x1792) x1537)
+(or (not x1791) (not x1167) x1089)
+(or (not x1537) x1792 x1535)
+(or (not x1791) (not x1089) x1167)
+(or (not x1537) x1792 x1776)
+(or (not x1791) (not x1165) x1087)
+(or (not x1775) (not x1533) x1792)
+(or (not x1791) (not x1087) x1165)
+(or (not x1790) x1792)
+(or (not x1791) (not x1164) x1085)
+(or (not x1792) x1790 x1533)
+(or (not x1791) (not x1085) x1164)
+(or (not x1792) x1790 x1775)
+(or (not x1791) (not x1160) x1084)
+(or (not x1772) (not x1531) x1790)
+(or (not x1791) (not x1084) x1160)
+(or (not x1772) x1790)
+(or (not x52) x1785 x1781 x1141)
+(or (not x1790) x1772 x1531)
+(or (not x1785) (not x1141) (not x52) x1781)
+(or (not x1790) x1772)
+(or (not x1785) x1781 x1141 x52)
+(or (not x1768) (not x1529) x1772)
+(or (not x1141) x1785 x1781 x52)
+(or (not x1789) x1772)
+(or (not x1781) (not x50) x1785 x1779 x1139)
+(or (not x1772) x1789 x1529)
+(or (not x1785) (not x1781) (not x1139) (not x50) x1779)
+(or (not x1772) x1789 x1768)
+(or (not x1785) (not x1781) x1779 x1139 x50)
+(or (not x1765) (not x1527) x1789)
+(or (not x1781) (not x1139) x1785 x1779 x50)
+(or (not x1788) x1789)
+(or (not x1779) (not x48) x1785 x1777 x1136)
+(or (not x1789) x1788 x1527)
+(or (not x1785) (not x1779) (not x1136) (not x48) x1777)
+(or (not x1789) x1788 x1765)
+(or (not x1785) (not x1779) x1777 x1136 x48)
+(or (not x692) x1788)
+(or (not x1779) (not x1136) x1785 x1777 x48)
+(or (not x1788) x692)
+(or (not x1777) (not x46) x1785 x1773 x1133)
+(or (not x1579) (not x1526) x1787)
+(or (not x1785) (not x1777) (not x1133) (not x46) x1773)
+(or (not x1526) x1787)
+(or (not x1785) (not x1777) x1773 x1133 x46)
+(or (not x1787) x1526)
+(or (not x1777) (not x1133) x1785 x1773 x46)
+(or (not x1787) x1579 x1526)
+(or (not x1773) (not x44) x1785 x1770 x1131)
+(or (not x1776) (not x1524) x1526)
+(or (not x1785) (not x1773) (not x1131) (not x44) x1770)
+(or (not x1786) x1526)
+(or (not x1785) (not x1773) x1770 x1131 x44)
+(or (not x1526) x1786 x1524)
+(or (not x1773) (not x1131) x1785 x1770 x44)
+(or (not x1526) x1786 x1776)
+(or (not x1770) (not x149) x1785 x1769 x1128)
+(or (not x1775) (not x1522) x1786)
+(or (not x1785) (not x1770) (not x1128) (not x149) x1769)
+(or (not x1783) x1786)
+(or (not x1785) (not x1770) x1769 x1128 x149)
+(or (not x1786) x1783 x1522)
+(or (not x1770) (not x1128) x1785 x1769 x149)
+(or (not x1786) x1783 x1775)
+(or (not x1785) (not x1784))
+(or (not x1772) (not x1520) x1783)
+(or (not x1769) x1784)
+(or (not x1782) x1783)
+(or (not x1784) x1769)
+(or (not x1783) x1782 x1520)
+(or x1781 x1141 x1073)
+(or (not x1783) x1782 x1772)
+(or (not x1141) (not x1073) x1781)
+(or (not x1768) (not x1518) x1782)
+(or (not x1781) (not x1141) x1073)
+(or (not x1768) x1782)
+(or (not x1781) (not x1073) x1141)
+(or (not x1782) x1768 x1518)
+(or (not x1781) x1779 x1139 x1072)
+(or (not x1782) x1768)
+(or (not x1781) (not x1139) (not x1072) x1779)
+(or (not x1765) (not x1516) x1768)
+(or (not x1779) (not x1139) x1072)
+(or (not x1780) x1768)
+(or (not x1779) (not x1072) x1139)
+(or (not x1768) x1780 x1516)
+(or (not x1779) x1781)
+(or (not x1768) x1780 x1765)
+(or (not x1779) x1777 x1136 x1069)
+(or (not x691) x1780)
+(or (not x1779) (not x1136) (not x1069) x1777)
+(or (not x1780) x691)
+(or (not x1777) (not x1136) x1069)
+(or (not x1579) (not x1515) x1778)
+(or (not x1777) (not x1069) x1136)
+(or (not x1515) x1778)
+(or (not x1777) x1779)
+(or (not x1778) x1515)
+(or (not x1777) x1773 x1133 x1066)
+(or (not x1778) x1579 x1515)
+(or (not x1777) (not x1133) (not x1066) x1773)
+(or (not x1776) (not x1512) x1515)
+(or (not x1773) (not x1133) x1066)
+(or (not x1774) x1515)
+(or (not x1773) (not x1066) x1133)
+(or (not x1515) x1774 x1512)
+(or (not x1773) x1777)
+(or (not x1515) x1776 x1774)
+(or (not x1773) x1770 x1131 x1062)
+(or (not x1775) (not x1509) x1774)
+(or (not x1773) (not x1131) (not x1062) x1770)
+(or (not x1771) x1774)
+(or (not x1770) (not x1131) x1062)
+(or (not x1774) x1771 x1509)
+(or (not x1770) (not x1062) x1131)
+(or (not x1774) x1775 x1771)
+(or (not x1770) x1773)
+(or (not x1772) (not x1504) x1771)
+(or (not x1770) x1769 x1128 x1059)
+(or (not x1767) x1771)
+(or (not x1770) (not x1128) (not x1059) x1769)
+(or (not x1771) x1767 x1504)
+(or (not x1769) (not x1128) x1059)
+(or (not x1771) x1772 x1767)
+(or (not x1769) (not x1059) x1128)
+(or (not x1768) (not x1501) x1767)
+(or (not x1769) x1770)
+(or (not x1766) x1767)
+(or (not x1752) (not x1113) (not x1045))
+(or (not x1767) x1766 x1501)
+(or (not x1113) (not x1045) x1751)
+(or (not x1767) x1768 x1766)
+(or (not x1752) (not x1111) (not x1045) x95)
+(or (not x1765) x1766)
+(or (not x1111) (not x1045) (not x95) x1752)
+(or (not x1766) x1765)
+(or (not x1751) (not x1111) (not x1045))
+(or (not x1766) x1765)
+(or (not x1752) (not x1109) (not x1045) x94)
+(or (not x690) x1765)
+(or (not x1109) (not x1045) (not x94) x1752)
+(or (not x1765) x690)
+(or (not x1751) (not x1109) (not x1045))
+(or (not x1733) (not x1579) x1764)
+(or (not x1752) (not x1108) (not x1045) x92)
+(or (not x1733) x1764)
+(or (not x1108) (not x1045) (not x92) x1752)
+(or (not x1764) x1733 x1579)
+(or (not x1751) (not x1108) (not x1045))
+(or (not x1764) x1733)
+(or (not x1752) (not x1105) (not x1045) x91)
+(or (not x1577) (not x1565) x1733)
+(or (not x1105) (not x1045) (not x91) x1752)
+(or (not x1577) x1733)
+(or (not x1751) (not x1105) (not x1045))
+(or (not x1733) x1577)
+(or (not x1752) (not x1113) (not x1043) x89)
+(or (not x1733) x1577 x1565)
+(or (not x1113) (not x1043) (not x89) x1752)
+(or (not x1728) (not x1576) x1577)
+(or (not x1751) (not x1113) (not x1043))
+(or (not x1763) x1577)
+(or (not x1752) (not x1111) (not x1043))
+(or (not x1577) x1763 x1576)
+(or (not x1111) (not x1043) x1751)
+(or (not x1577) x1763 x1728)
+(or (not x1752) (not x1109) (not x1043) x88)
+(or (not x1727) (not x1573) x1763)
+(or (not x1109) (not x1043) (not x88) x1752)
+(or (not x1762) x1763)
+(or (not x1751) (not x1109) (not x1043))
+(or (not x1763) x1762 x1573)
+(or (not x1752) (not x1108) (not x1043) x87)
+(or (not x1763) x1762 x1727)
+(or (not x1108) (not x1043) (not x87) x1752)
+(or (not x1724) (not x1571) x1762)
+(or (not x1751) (not x1108) (not x1043))
+(or (not x1761) x1762)
+(or (not x1752) (not x1105) (not x1043) x86)
+(or (not x1762) x1761 x1571)
+(or (not x1105) (not x1043) (not x86) x1752)
+(or (not x1762) x1761 x1724)
+(or (not x1751) (not x1105) (not x1043))
+(or (not x1720) (not x1568) x1761)
+(or (not x1752) (not x1113) (not x1042) x82)
+(or (not x1760) x1761)
+(or (not x1113) (not x1042) (not x82) x1752)
+(or (not x1761) x1760 x1568)
+(or (not x1751) (not x1113) (not x1042))
+(or (not x1761) x1760 x1720)
+(or (not x1752) (not x1111) (not x1042) x81)
+(or (not x689) x1760)
+(or (not x1111) (not x1042) (not x81) x1752)
+(or (not x1760) x689)
+(or (not x1751) (not x1111) (not x1042))
+(or (not x1733) (not x1567) x1759)
+(or (not x1752) (not x1109) (not x1042))
+(or (not x1758) x1759)
+(or (not x1109) (not x1042) x1751)
+(or (not x1759) x1758 x1567)
+(or (not x1752) (not x1108) (not x1042) x79)
+(or (not x1759) x1758 x1733)
+(or (not x1108) (not x1042) (not x79) x1752)
+(or (not x1565) x1758)
+(or (not x1751) (not x1108) (not x1042))
+(or (not x1565) x1758)
+(or (not x1752) (not x1105) (not x1042) x77)
+(or (not x1758) x1565)
+(or (not x1105) (not x1042) (not x77) x1752)
+(or (not x1758) x1565)
+(or (not x1751) (not x1105) (not x1042))
+(or (not x1728) (not x1563) x1565)
+(or (not x1752) (not x1113) (not x1040) x73)
+(or (not x1757) x1565)
+(or (not x1113) (not x1040) (not x73) x1752)
+(or (not x1565) x1757 x1563)
+(or (not x1751) (not x1113) (not x1040))
+(or (not x1565) x1757 x1728)
+(or (not x1752) (not x1111) (not x1040) x67)
+(or (not x1727) (not x1560) x1757)
+(or (not x1111) (not x1040) (not x67) x1752)
+(or (not x1756) x1757)
+(or (not x1751) (not x1111) (not x1040))
+(or (not x1757) x1756 x1560)
+(or (not x1752) (not x1109) (not x1040) x66)
+(or (not x1757) x1756 x1727)
+(or (not x1109) (not x1040) (not x66) x1752)
+(or (not x1724) (not x1558) x1756)
+(or (not x1751) (not x1109) (not x1040))
+(or (not x1755) x1756)
+(or (not x1752) (not x1108) (not x1040))
+(or (not x1756) x1755 x1558)
+(or (not x1108) (not x1040) x1751)
+(or (not x1756) x1755 x1724)
+(or (not x1752) (not x1105) (not x1040) x65)
+(or (not x1720) (not x1554) x1755)
+(or (not x1105) (not x1040) (not x65) x1752)
+(or (not x1755) x1554)
+(or (not x1751) (not x1105) (not x1040))
+(or (not x1755) x1720)
+(or (not x1752) (not x1113) (not x1037) x58)
+(or (not x1733) (not x1552) x1754)
+(or (not x1113) (not x1037) (not x58) x1752)
+(or (not x1753) x1754)
+(or (not x1751) (not x1113) (not x1037))
+(or (not x1754) x1753 x1552)
+(or (not x1752) (not x1111) (not x1037) x57)
+(or (not x1754) x1753 x1733)
+(or (not x1111) (not x1037) (not x57) x1752)
+(or (not x1565) (not x1550) x1753)
+(or (not x1751) (not x1111) (not x1037))
+(or (not x1550) x1753)
+(or (not x1752) (not x1109) (not x1037) x56)
+(or (not x1753) x1550)
+(or (not x1109) (not x1037) (not x56) x1752)
+(or (not x1753) x1565 x1550)
+(or (not x1751) (not x1109) (not x1037))
+(or (not x1728) (not x1547) x1550)
+(or (not x1752) (not x1108) (not x1037) x55)
+(or (not x1728) x1550)
+(or (not x1108) (not x1037) (not x55) x1752)
+(or (not x1550) x1728 x1547)
+(or (not x1751) (not x1108) (not x1037))
+(or (not x1550) x1728)
+(or (not x1752) (not x1105) (not x1037))
+(or (not x1727) (not x1544) x1728)
+(or (not x1105) (not x1037) x1751)
+(or (not x1749) x1728)
+(or (not x1750) (not x69) (not x10) x1748)
+(or (not x1728) x1749 x1544)
+(or (not x1748) (not x1730) (not x1698) x1742 x1738)
+(or (not x1728) x1749 x1727)
+(or (not x1748) (not x1698) x1731 x1730)
+(or (not x1724) (not x1541) x1749)
+(or (not x1748) x1699 x1698)
+(or (not x1747) x1749)
+(or (not x1738) (not x1730) (not x1698) x1748)
+(or (not x1749) x1747 x1541)
+(or (not x1742) (not x1730) (not x1698) x1748)
+(or (not x1749) x1747 x1724)
+(or (not x1731) (not x1698) x1748)
+(or (not x1720) (not x1538) x1747)
+(or (not x1699) x1748)
+(or (not x1746) x1747)
+(or (not x1742) (not x1738))
+(or (not x1747) x1746 x1538)
+(or (not x1090) x1742 x1021 x1689)
+(or (not x1747) x1746 x1720)
+(or (not x1742) (not x1090) (not x1689) x1021)
+(or (not x688) x1746)
+(or (not x1742) (not x1021) x1090 x1689)
+(or (not x1746) x688)
+(or (not x1021) (not x1689) x1742 x1090)
+(or (not x1733) (not x1537) x1745)
+(or (not x1089) x1742 x1019 x1689)
+(or (not x1744) x1745)
+(or (not x1742) (not x1089) (not x1689) x1019)
+(or (not x1745) x1744 x1537)
+(or (not x1742) (not x1019) x1089 x1689)
+(or (not x1745) x1744 x1733)
+(or (not x1019) (not x1689) x1742 x1089)
+(or (not x1565) (not x1535) x1744)
+(or (not x1087) x1742 x1017 x1689)
+(or (not x1535) x1744)
+(or (not x1742) (not x1087) (not x1689) x1017)
+(or (not x1744) x1535)
+(or (not x1742) (not x1017) x1087 x1689)
+(or (not x1744) x1565 x1535)
+(or (not x1017) (not x1689) x1742 x1087)
+(or (not x1728) (not x1533) x1535)
+(or (not x1085) x1742 x1015 x1689)
+(or (not x1743) x1535)
+(or (not x1742) (not x1085) (not x1689) x1015)
+(or (not x1535) x1743 x1533)
+(or (not x1742) (not x1015) x1085 x1689)
+(or (not x1535) x1743 x1728)
+(or (not x1015) (not x1689) x1742 x1085)
+(or (not x1727) (not x1531) x1743)
+(or (not x1084) x1742 x1012 x1689)
+(or (not x1727) x1743)
+(or (not x1742) (not x1084) (not x1689) x1012)
+(or (not x1743) x1727 x1531)
+(or (not x1742) (not x1012) x1084 x1689)
+(or (not x1743) x1727)
+(or (not x1012) (not x1689) x1742 x1084)
+(or (not x1724) (not x1529) x1727)
+(or (not x1089) (not x1019) x1738 x1090 x1021)
+(or (not x1741) x1727)
+(or (not x1087) (not x1017) x1738 x1089 x1019)
+(or (not x1727) x1741 x1529)
+(or (not x1085) (not x1015) x1738 x1087 x1017)
+(or (not x1727) x1741 x1724)
+(or (not x1084) (not x1012) x1738 x1085 x1015)
+(or (not x1720) (not x1527) x1741)
+(or x1738 x1084 x1012)
+(or (not x1740) x1741)
+(or (not x1090) (not x1021) x1738)
+(or (not x1741) x1740 x1527)
+(or (not x1738) (not x1021) x1090)
+(or (not x1741) x1740 x1720)
+(or (not x1738) (not x1090) x1021)
+(or (not x687) x1740)
+(or (not x1738) (not x1019) x1089)
+(or (not x1740) x687)
+(or (not x1738) (not x1089) x1019)
+(or (not x1733) (not x1526) x1739)
+(or (not x1738) (not x1017) x1087)
+(or (not x1737) x1739)
+(or (not x1738) (not x1087) x1017)
+(or (not x1739) x1737 x1526)
+(or (not x1738) (not x1015) x1085)
+(or (not x1739) x1737 x1733)
+(or (not x1738) (not x1085) x1015)
+(or (not x1565) (not x1524) x1737)
+(or (not x1738) (not x1012) x1084)
+(or (not x1524) x1737)
+(or (not x1738) (not x1084) x1012)
+(or (not x1737) x1524)
+(or (not x52) x1731 x1725 x1000)
+(or (not x1737) x1565 x1524)
+(or (not x1731) (not x1000) (not x52) x1725)
+(or (not x1728) (not x1522) x1524)
+(or (not x1731) x1725 x1000 x52)
+(or (not x1736) x1524)
+(or (not x1000) x1731 x1725 x52)
+(or (not x1524) x1736 x1522)
+(or (not x1725) (not x50) x1731 x1722 x997)
+(or (not x1524) x1736 x1728)
+(or (not x1731) (not x1725) (not x997) (not x50) x1722)
+(or (not x1727) (not x1520) x1736)
+(or (not x1731) (not x1725) x1722 x997 x50)
+(or (not x1735) x1736)
+(or (not x1725) (not x997) x1731 x1722 x50)
+(or (not x1736) x1735 x1520)
+(or (not x1722) (not x48) x1731 x1719 x993)
+(or (not x1736) x1735 x1727)
+(or (not x1731) (not x1722) (not x993) (not x48) x1719)
+(or (not x1724) (not x1518) x1735)
+(or (not x1731) (not x1722) x1719 x993 x48)
+(or (not x1724) x1735)
+(or (not x1722) (not x993) x1731 x1719 x48)
+(or (not x1735) x1724 x1518)
+(or (not x1719) (not x46) x1731 x1717 x989)
+(or (not x1735) x1724)
+(or (not x1731) (not x1719) (not x989) (not x46) x1717)
+(or (not x1720) (not x1516) x1724)
+(or (not x1731) (not x1719) x1717 x989 x46)
+(or (not x1734) x1724)
+(or (not x1719) (not x989) x1731 x1717 x46)
+(or (not x1724) x1734 x1516)
+(or (not x1717) (not x44) x1731 x1716 x986)
+(or (not x1724) x1734 x1720)
+(or (not x1731) (not x1717) (not x986) (not x44) x1716)
+(or (not x686) x1734)
+(or (not x1731) (not x1717) x1716 x986 x44)
+(or (not x1734) x686)
+(or (not x1717) (not x986) x1731 x1716 x44)
+(or (not x1733) (not x1515) x1732)
+(or (not x1716) (not x149) x1731 x1715 x981)
+(or (not x1729) x1732)
+(or (not x1731) (not x1716) (not x981) (not x149) x1715)
+(or (not x1732) x1729 x1515)
+(or (not x1731) (not x1716) x1715 x981 x149)
+(or (not x1732) x1733 x1729)
+(or (not x1716) (not x981) x1731 x1715 x149)
+(or (not x1565) (not x1512) x1729)
+(or (not x1731) (not x1730))
+(or (not x1512) x1729)
+(or (not x1715) x1730)
+(or (not x1729) x1512)
+(or (not x1730) x1715)
+(or (not x1729) x1565 x1512)
+(or x1725 x1073 x1000)
+(or (not x1728) (not x1509) x1512)
+(or (not x1073) (not x1000) x1725)
+(or (not x1726) x1512)
+(or (not x1725) (not x1000) x1073)
+(or (not x1512) x1726 x1509)
+(or (not x1725) (not x1073) x1000)
+(or (not x1512) x1728 x1726)
+(or (not x1725) x1722 x1072 x997)
+(or (not x1727) (not x1504) x1726)
+(or (not x1725) (not x1072) (not x997) x1722)
+(or (not x1723) x1726)
+(or (not x1722) (not x997) x1072)
+(or (not x1726) x1723 x1504)
+(or (not x1722) (not x1072) x997)
+(or (not x1726) x1727 x1723)
+(or (not x1722) x1725)
+(or (not x1724) (not x1501) x1723)
+(or (not x1722) x1719 x1069 x993)
+(or (not x1721) x1723)
+(or (not x1722) (not x1069) (not x993) x1719)
+(or (not x1723) x1721 x1501)
+(or (not x1719) (not x993) x1069)
+(or (not x1723) x1724 x1721)
+(or (not x1719) (not x1069) x993)
+(or (not x1720) x1721)
+(or (not x1719) x1722)
+(or (not x1721) x1720)
+(or (not x1719) x1717 x1066 x989)
+(or (not x1721) x1720)
+(or (not x1719) (not x1066) (not x989) x1717)
+(or (not x684) x1720)
+(or (not x1717) (not x989) x1066)
+(or (not x1720) x684)
+(or (not x1717) (not x1066) x989)
+(or (not x1684) (not x1579) x1718)
+(or (not x1717) x1719)
+(or (not x1684) x1718)
+(or (not x1717) x1716 x1062 x986)
+(or (not x1718) x1684 x1579)
+(or (not x1717) (not x1062) (not x986) x1716)
+(or (not x1718) x1684)
+(or (not x1716) (not x986) x1062)
+(or (not x1682) (not x1577) x1684)
+(or (not x1716) (not x1062) x986)
+(or (not x1714) x1684)
+(or (not x1716) x1717)
+(or (not x1684) x1714 x1577)
+(or (not x1716) x1715 x1059 x981)
+(or (not x1684) x1714 x1682)
+(or (not x1716) (not x1059) (not x981) x1715)
+(or (not x1576) (not x1547) x1714)
+(or (not x1715) (not x981) x1059)
+(or (not x1576) x1714)
+(or (not x1715) (not x1059) x981)
+(or (not x1714) x1576)
+(or (not x1715) x1716)
+(or (not x1714) x1576 x1547)
+(or (not x1699) (not x1045) (not x959))
+(or (not x1679) (not x1573) x1576)
+(or (not x1045) (not x959) x1698)
+(or (not x1713) x1576)
+(or (not x1699) (not x1045) (not x957) x95)
+(or (not x1576) x1713 x1573)
+(or (not x1045) (not x957) (not x95) x1699)
+(or (not x1576) x1713 x1679)
+(or (not x1698) (not x1045) (not x957))
+(or (not x1678) (not x1571) x1713)
+(or (not x1699) (not x1045) (not x956) x94)
+(or (not x1712) x1713)
+(or (not x1045) (not x956) (not x94) x1699)
+(or (not x1713) x1712 x1571)
+(or (not x1698) (not x1045) (not x956))
+(or (not x1713) x1712 x1678)
+(or (not x1699) (not x1045) (not x954) x92)
+(or (not x1674) (not x1568) x1712)
+(or (not x1045) (not x954) (not x92) x1699)
+(or (not x1711) x1712)
+(or (not x1698) (not x1045) (not x954))
+(or (not x1712) x1711 x1568)
+(or (not x1699) (not x1045) (not x948) x91)
+(or (not x1712) x1711 x1674)
+(or (not x1045) (not x948) (not x91) x1699)
+(or (not x681) x1711)
+(or (not x1698) (not x1045) (not x948))
+(or (not x1711) x681)
+(or (not x1699) (not x1043) (not x959) x89)
+(or (not x1684) (not x1567) x1710)
+(or (not x1043) (not x959) (not x89) x1699)
+(or (not x1709) x1710)
+(or (not x1698) (not x1043) (not x959))
+(or (not x1710) x1709 x1567)
+(or (not x1699) (not x1043) (not x957))
+(or (not x1710) x1709 x1684)
+(or (not x1043) (not x957) x1698)
+(or (not x1682) (not x1565) x1709)
+(or (not x1699) (not x1043) (not x956) x88)
+(or (not x1682) x1709)
+(or (not x1043) (not x956) (not x88) x1699)
+(or (not x1709) x1682 x1565)
+(or (not x1698) (not x1043) (not x956))
+(or (not x1709) x1682)
+(or (not x1699) (not x1043) (not x954) x87)
+(or (not x1563) (not x1547) x1682)
+(or (not x1043) (not x954) (not x87) x1699)
+(or (not x1563) x1682)
+(or (not x1698) (not x1043) (not x954))
+(or (not x1682) x1563)
+(or (not x1699) (not x1043) (not x948) x86)
+(or (not x1682) x1563 x1547)
+(or (not x1043) (not x948) (not x86) x1699)
+(or (not x1679) (not x1560) x1563)
+(or (not x1698) (not x1043) (not x948))
+(or (not x1708) x1563)
+(or (not x1699) (not x1042) (not x959) x82)
+(or (not x1563) x1708 x1560)
+(or (not x1042) (not x959) (not x82) x1699)
+(or (not x1563) x1708 x1679)
+(or (not x1698) (not x1042) (not x959))
+(or (not x1678) (not x1558) x1708)
+(or (not x1699) (not x1042) (not x957) x81)
+(or (not x1707) x1708)
+(or (not x1042) (not x957) (not x81) x1699)
+(or (not x1708) x1707 x1558)
+(or (not x1698) (not x1042) (not x957))
+(or (not x1708) x1707 x1678)
+(or (not x1699) (not x1042) (not x956))
+(or (not x1674) (not x1554) x1707)
+(or (not x1042) (not x956) x1698)
+(or (not x1706) x1707)
+(or (not x1699) (not x1042) (not x954) x79)
+(or (not x1707) x1706 x1554)
+(or (not x1042) (not x954) (not x79) x1699)
+(or (not x1707) x1706 x1674)
+(or (not x1698) (not x1042) (not x954))
+(or (not x680) x1706)
+(or (not x1699) (not x1042) (not x948) x77)
+(or (not x1706) x680)
+(or (not x1042) (not x948) (not x77) x1699)
+(or (not x1684) (not x1552) x1705)
+(or (not x1698) (not x1042) (not x948))
+(or (not x1704) x1705)
+(or (not x1699) (not x1040) (not x959) x73)
+(or (not x1705) x1704 x1552)
+(or (not x1040) (not x959) (not x73) x1699)
+(or (not x1705) x1704 x1684)
+(or (not x1698) (not x1040) (not x959))
+(or (not x1682) (not x1550) x1704)
+(or (not x1699) (not x1040) (not x957) x67)
+(or (not x1703) x1704)
+(or (not x1040) (not x957) (not x67) x1699)
+(or (not x1704) x1703 x1550)
+(or (not x1698) (not x1040) (not x957))
+(or (not x1704) x1703 x1682)
+(or (not x1699) (not x1040) (not x956) x66)
+(or (not x1547) x1703)
+(or (not x1040) (not x956) (not x66) x1699)
+(or (not x1547) x1703)
+(or (not x1698) (not x1040) (not x956))
+(or (not x1703) x1547)
+(or (not x1699) (not x1040) (not x954))
+(or (not x1703) x1547)
+(or (not x1040) (not x954) x1698)
+(or (not x1679) (not x1544) x1547)
+(or (not x1699) (not x1040) (not x948) x65)
+(or (not x1702) x1547)
+(or (not x1040) (not x948) (not x65) x1699)
+(or (not x1547) x1702 x1544)
+(or (not x1698) (not x1040) (not x948))
+(or (not x1547) x1702 x1679)
+(or (not x1699) (not x1037) (not x959) x58)
+(or (not x1678) (not x1541) x1702)
+(or (not x1037) (not x959) (not x58) x1699)
+(or (not x1701) x1702)
+(or (not x1698) (not x1037) (not x959))
+(or (not x1702) x1701 x1541)
+(or (not x1699) (not x1037) (not x957) x57)
+(or (not x1702) x1701 x1678)
+(or (not x1037) (not x957) (not x57) x1699)
+(or (not x1674) (not x1538) x1701)
+(or (not x1698) (not x1037) (not x957))
+(or (not x1701) x1538)
+(or (not x1699) (not x1037) (not x956) x56)
+(or (not x1701) x1674)
+(or (not x1037) (not x956) (not x56) x1699)
+(or (not x1684) (not x1537) x1700)
+(or (not x1698) (not x1037) (not x956))
+(or (not x1697) x1700)
+(or (not x1699) (not x1037) (not x954) x55)
+(or (not x1700) x1697 x1537)
+(or (not x1037) (not x954) (not x55) x1699)
+(or (not x1700) x1697 x1684)
+(or (not x1698) (not x1037) (not x954))
+(or (not x1682) (not x1535) x1697)
+(or (not x1699) (not x1037) (not x948))
+(or (not x1696) x1697)
+(or (not x1037) (not x948) x1698)
+(or (not x1697) x1696 x1535)
+(or (not x1695) (not x1673) (not x1646) x1690 x1686)
+(or (not x1697) x1696 x1682)
+(or (not x1695) (not x1646) x1675 x1673)
+(or (not x1547) (not x1533) x1696)
+(or (not x1695) x1647 x1646)
+(or (not x1533) x1696)
+(or (not x1686) (not x1673) (not x1646) x1695)
+(or (not x1696) x1533)
+(or (not x1690) (not x1673) (not x1646) x1695)
+(or (not x1696) x1547 x1533)
+(or (not x1675) (not x1646) x1695)
+(or (not x1679) (not x1531) x1533)
+(or (not x1647) x1695)
+(or (not x1679) x1533)
+(or (not x1690) (not x1686))
+(or (not x1533) x1679 x1531)
+(or (not x1090) x1690 x1020 x1689)
+(or (not x1533) x1679)
+(or (not x1690) (not x1090) (not x1689) x1020)
+(or (not x1678) (not x1529) x1679)
+(or (not x1690) (not x1020) x1090 x1689)
+(or (not x1694) x1679)
+(or (not x1020) (not x1689) x1690 x1090)
+(or (not x1679) x1694 x1529)
+(or (not x1089) x1690 x1018 x1689)
+(or (not x1679) x1694 x1678)
+(or (not x1690) (not x1089) (not x1689) x1018)
+(or (not x1674) (not x1527) x1694)
+(or (not x1690) (not x1018) x1089 x1689)
+(or (not x1693) x1694)
+(or (not x1018) (not x1689) x1690 x1089)
+(or (not x1694) x1693 x1527)
+(or (not x1087) x1690 x1016 x1689)
+(or (not x1694) x1693 x1674)
+(or (not x1690) (not x1087) (not x1689) x1016)
+(or (not x678) x1693)
+(or (not x1690) (not x1016) x1087 x1689)
+(or (not x1693) x678)
+(or (not x1016) (not x1689) x1690 x1087)
+(or (not x1684) (not x1526) x1692)
+(or (not x1085) x1690 x1014 x1689)
+(or (not x1691) x1692)
+(or (not x1690) (not x1085) (not x1689) x1014)
+(or (not x1692) x1691 x1526)
+(or (not x1690) (not x1014) x1085 x1689)
+(or (not x1692) x1691 x1684)
+(or (not x1014) (not x1689) x1690 x1085)
+(or (not x1682) (not x1524) x1691)
+(or (not x1084) x1690 x1011 x1689)
+(or (not x1688) x1691)
+(or (not x1690) (not x1084) (not x1689) x1011)
+(or (not x1691) x1688 x1524)
+(or (not x1690) (not x1011) x1084 x1689)
+(or (not x1691) x1688 x1682)
+(or (not x1011) (not x1689) x1690 x1084)
+(or (not x1547) (not x1522) x1688)
+(or (not x1089) (not x1018) x1686 x1090 x1020)
+(or (not x1522) x1688)
+(or (not x1087) (not x1016) x1686 x1089 x1018)
+(or (not x1688) x1522)
+(or (not x1085) (not x1014) x1686 x1087 x1016)
+(or (not x1688) x1547 x1522)
+(or (not x1084) (not x1011) x1686 x1085 x1014)
+(or (not x1679) (not x1520) x1522)
+(or x1686 x1084 x1011)
+(or (not x1687) x1522)
+(or (not x1090) (not x1020) x1686)
+(or (not x1522) x1687 x1520)
+(or (not x1686) (not x1020) x1090)
+(or (not x1522) x1687 x1679)
+(or (not x1686) (not x1090) x1020)
+(or (not x1678) (not x1518) x1687)
+(or (not x1686) (not x1018) x1089)
+(or (not x1678) x1687)
+(or (not x1686) (not x1089) x1018)
+(or (not x1687) x1678 x1518)
+(or (not x1686) (not x1016) x1087)
+(or (not x1687) x1678)
+(or (not x1686) (not x1087) x1016)
+(or (not x1674) (not x1516) x1678)
+(or (not x1686) (not x1014) x1085)
+(or (not x1685) x1678)
+(or (not x1686) (not x1085) x1014)
+(or (not x1678) x1685 x1516)
+(or (not x1686) (not x1011) x1084)
+(or (not x1678) x1685 x1674)
+(or (not x1686) (not x1084) x1011)
+(or (not x677) x1685)
+(or (not x52) x1675 x1671 x999)
+(or (not x1685) x677)
+(or (not x1675) (not x999) (not x52) x1671)
+(or (not x1684) (not x1515) x1683)
+(or (not x1675) x1671 x999 x52)
+(or (not x1681) x1683)
+(or (not x999) x1675 x1671 x52)
+(or (not x1683) x1681 x1515)
+(or (not x1671) (not x50) x1675 x1669 x996)
+(or (not x1683) x1684 x1681)
+(or (not x1675) (not x1671) (not x996) (not x50) x1669)
+(or (not x1682) (not x1512) x1681)
+(or (not x1675) (not x1671) x1669 x996 x50)
+(or (not x1680) x1681)
+(or (not x1671) (not x996) x1675 x1669 x50)
+(or (not x1681) x1680 x1512)
+(or (not x1669) (not x48) x1675 x1667 x992)
+(or (not x1681) x1682 x1680)
+(or (not x1675) (not x1669) (not x992) (not x48) x1667)
+(or (not x1547) (not x1509) x1680)
+(or (not x1675) (not x1669) x1667 x992 x48)
+(or (not x1509) x1680)
+(or (not x1669) (not x992) x1675 x1667 x48)
+(or (not x1680) x1509)
+(or (not x1667) (not x46) x1675 x1665 x988)
+(or (not x1680) x1547 x1509)
+(or (not x1675) (not x1667) (not x988) (not x46) x1665)
+(or (not x1679) (not x1504) x1509)
+(or (not x1675) (not x1667) x1665 x988 x46)
+(or (not x1677) x1509)
+(or (not x1667) (not x988) x1675 x1665 x46)
+(or (not x1509) x1677 x1504)
+(or (not x1665) (not x44) x1675 x1663 x985)
+(or (not x1509) x1679 x1677)
+(or (not x1675) (not x1665) (not x985) (not x44) x1663)
+(or (not x1678) (not x1501) x1677)
+(or (not x1675) (not x1665) x1663 x985 x44)
+(or (not x1676) x1677)
+(or (not x1665) (not x985) x1675 x1663 x44)
+(or (not x1677) x1676 x1501)
+(or (not x1663) (not x149) x1675 x1662 x980)
+(or (not x1677) x1678 x1676)
+(or (not x1675) (not x1663) (not x980) (not x149) x1662)
+(or (not x1674) x1676)
+(or (not x1675) (not x1663) x1662 x980 x149)
+(or (not x1676) x1674)
+(or (not x1663) (not x980) x1675 x1662 x149)
+(or (not x1676) x1674)
+(or (not x1675) (not x1673))
+(or (not x676) x1674)
+(or (not x1662) x1673)
+(or (not x1674) x676)
+(or (not x1673) x1662)
+(or (not x1637) (not x1579) x1672)
+(or x1671 x1073 x999)
+(or (not x1637) x1672)
+(or (not x1073) (not x999) x1671)
+(or (not x1672) x1637 x1579)
+(or (not x1671) (not x999) x1073)
+(or (not x1672) x1637)
+(or (not x1671) (not x1073) x999)
+(or (not x1635) (not x1577) x1637)
+(or (not x1671) x1669 x1072 x996)
+(or (not x1670) x1637)
+(or (not x1671) (not x1072) (not x996) x1669)
+(or (not x1637) x1670 x1577)
+(or (not x1669) (not x996) x1072)
+(or (not x1637) x1670 x1635)
+(or (not x1669) (not x1072) x996)
+(or (not x1633) (not x1576) x1670)
+(or (not x1669) x1671)
+(or (not x1668) x1670)
+(or (not x1669) x1667 x1069 x992)
+(or (not x1670) x1668 x1576)
+(or (not x1669) (not x1069) (not x992) x1667)
+(or (not x1670) x1668 x1633)
+(or (not x1667) (not x992) x1069)
+(or (not x1573) (not x1531) x1668)
+(or (not x1667) (not x1069) x992)
+(or (not x1573) x1668)
+(or (not x1667) x1669)
+(or (not x1668) x1573)
+(or (not x1667) x1665 x1066 x988)
+(or (not x1668) x1573 x1531)
+(or (not x1667) (not x1066) (not x988) x1665)
+(or (not x1629) (not x1571) x1573)
+(or (not x1665) (not x988) x1066)
+(or (not x1666) x1573)
+(or (not x1665) (not x1066) x988)
+(or (not x1573) x1666 x1571)
+(or (not x1665) x1667)
+(or (not x1573) x1666 x1629)
+(or (not x1665) x1663 x1062 x985)
+(or (not x1627) (not x1568) x1666)
+(or (not x1665) (not x1062) (not x985) x1663)
+(or (not x1664) x1666)
+(or (not x1663) (not x985) x1062)
+(or (not x1666) x1664 x1568)
+(or (not x1663) (not x1062) x985)
+(or (not x1666) x1664 x1627)
+(or (not x1663) x1665)
+(or (not x675) x1664)
+(or (not x1663) x1662 x1059 x980)
+(or (not x1664) x675)
+(or (not x1663) (not x1059) (not x980) x1662)
+(or (not x1637) (not x1567) x1661)
+(or (not x1662) (not x980) x1059)
+(or (not x1660) x1661)
+(or (not x1662) (not x1059) x980)
+(or (not x1661) x1660 x1567)
+(or (not x1662) x1663)
+(or (not x1661) x1660 x1637)
+(or (not x1647) (not x1045) (not x974))
+(or (not x1635) (not x1565) x1660)
+(or (not x1045) (not x974) x1646)
+(or (not x1635) x1660)
+(or (not x1647) (not x1045) (not x970) x95)
+(or (not x1660) x1635 x1565)
+(or (not x1045) (not x970) (not x95) x1647)
+(or (not x1660) x1635)
+(or (not x1646) (not x1045) (not x970))
+(or (not x1633) (not x1563) x1635)
+(or (not x1647) (not x1045) (not x967) x94)
+(or (not x1659) x1635)
+(or (not x1045) (not x967) (not x94) x1647)
+(or (not x1635) x1659 x1563)
+(or (not x1646) (not x1045) (not x967))
+(or (not x1635) x1659 x1633)
+(or (not x1647) (not x1045) (not x962) x92)
+(or (not x1560) (not x1531) x1659)
+(or (not x1045) (not x962) (not x92) x1647)
+(or (not x1560) x1659)
+(or (not x1646) (not x1045) (not x962))
+(or (not x1659) x1560)
+(or (not x1647) (not x1045) (not x949) x91)
+(or (not x1659) x1560 x1531)
+(or (not x1045) (not x949) (not x91) x1647)
+(or (not x1629) (not x1558) x1560)
+(or (not x1646) (not x1045) (not x949))
+(or (not x1658) x1560)
+(or (not x1647) (not x1043) (not x974) x89)
+(or (not x1560) x1658 x1558)
+(or (not x1043) (not x974) (not x89) x1647)
+(or (not x1560) x1658 x1629)
+(or (not x1646) (not x1043) (not x974))
+(or (not x1627) (not x1554) x1658)
+(or (not x1647) (not x1043) (not x970))
+(or (not x1657) x1658)
+(or (not x1043) (not x970) x1646)
+(or (not x1658) x1657 x1554)
+(or (not x1647) (not x1043) (not x967) x88)
+(or (not x1658) x1657 x1627)
+(or (not x1043) (not x967) (not x88) x1647)
+(or (not x674) x1657)
+(or (not x1646) (not x1043) (not x967))
+(or (not x1657) x674)
+(or (not x1647) (not x1043) (not x962) x87)
+(or (not x1637) (not x1552) x1656)
+(or (not x1043) (not x962) (not x87) x1647)
+(or (not x1655) x1656)
+(or (not x1646) (not x1043) (not x962))
+(or (not x1656) x1655 x1552)
+(or (not x1647) (not x1043) (not x949) x86)
+(or (not x1656) x1655 x1637)
+(or (not x1043) (not x949) (not x86) x1647)
+(or (not x1635) (not x1550) x1655)
+(or (not x1646) (not x1043) (not x949))
+(or (not x1654) x1655)
+(or (not x1647) (not x1042) (not x974) x82)
+(or (not x1655) x1654 x1550)
+(or (not x1042) (not x974) (not x82) x1647)
+(or (not x1655) x1654 x1635)
+(or (not x1646) (not x1042) (not x974))
+(or (not x1633) (not x1547) x1654)
+(or (not x1647) (not x1042) (not x970) x81)
+(or (not x1633) x1654)
+(or (not x1042) (not x970) (not x81) x1647)
+(or (not x1654) x1633 x1547)
+(or (not x1646) (not x1042) (not x970))
+(or (not x1654) x1633)
+(or (not x1647) (not x1042) (not x967))
+(or (not x1544) (not x1531) x1633)
+(or (not x1042) (not x967) x1646)
+(or (not x1544) x1633)
+(or (not x1647) (not x1042) (not x962) x79)
+(or (not x1633) x1544)
+(or (not x1042) (not x962) (not x79) x1647)
+(or (not x1633) x1544 x1531)
+(or (not x1646) (not x1042) (not x962))
+(or (not x1629) (not x1541) x1544)
+(or (not x1647) (not x1042) (not x949) x77)
+(or (not x1653) x1544)
+(or (not x1042) (not x949) (not x77) x1647)
+(or (not x1544) x1653 x1541)
+(or (not x1646) (not x1042) (not x949))
+(or (not x1544) x1653 x1629)
+(or (not x1647) (not x1040) (not x974) x73)
+(or (not x1627) (not x1538) x1653)
+(or (not x1040) (not x974) (not x73) x1647)
+(or (not x1652) x1653)
+(or (not x1646) (not x1040) (not x974))
+(or (not x1653) x1652 x1538)
+(or (not x1647) (not x1040) (not x970) x67)
+(or (not x1653) x1652 x1627)
+(or (not x1040) (not x970) (not x67) x1647)
+(or (not x672) x1652)
+(or (not x1646) (not x1040) (not x970))
+(or (not x1652) x672)
+(or (not x1647) (not x1040) (not x967) x66)
+(or (not x1637) (not x1537) x1651)
+(or (not x1040) (not x967) (not x66) x1647)
+(or (not x1650) x1651)
+(or (not x1646) (not x1040) (not x967))
+(or (not x1651) x1650 x1537)
+(or (not x1647) (not x1040) (not x962))
+(or (not x1651) x1650 x1637)
+(or (not x1040) (not x962) x1646)
+(or (not x1635) (not x1535) x1650)
+(or (not x1647) (not x1040) (not x949) x65)
+(or (not x1649) x1650)
+(or (not x1040) (not x949) (not x65) x1647)
+(or (not x1650) x1649 x1535)
+(or (not x1646) (not x1040) (not x949))
+(or (not x1650) x1649 x1635)
+(or (not x1647) (not x1037) (not x974) x58)
+(or (not x1633) (not x1533) x1649)
+(or (not x1037) (not x974) (not x58) x1647)
+(or (not x1648) x1649)
+(or (not x1646) (not x1037) (not x974))
+(or (not x1649) x1648 x1533)
+(or (not x1647) (not x1037) (not x970) x57)
+(or (not x1649) x1648 x1633)
+(or (not x1037) (not x970) (not x57) x1647)
+(or (not x1531) x1648)
+(or (not x1646) (not x1037) (not x970))
+(or (not x1531) x1648)
+(or (not x1647) (not x1037) (not x967) x56)
+(or (not x1648) x1531)
+(or (not x1037) (not x967) (not x56) x1647)
+(or (not x1648) x1531)
+(or (not x1646) (not x1037) (not x967))
+(or (not x1629) (not x1529) x1531)
+(or (not x1647) (not x1037) (not x962) x55)
+(or (not x1645) x1531)
+(or (not x1037) (not x962) (not x55) x1647)
+(or (not x1531) x1645 x1529)
+(or (not x1646) (not x1037) (not x962))
+(or (not x1531) x1645 x1629)
+(or (not x1647) (not x1037) (not x949))
+(or (not x1627) (not x1527) x1645)
+(or (not x1037) (not x949) x1646)
+(or (not x1645) x1527)
+(or (not x1449) (not x69) (not x6) x1643)
+(or (not x1645) x1627)
+(or (not x1643) (not x1622) (not x1594) x1638 x1630)
+(or (not x1637) (not x1526) x1644)
+(or (not x1643) (not x1594) x1623 x1622)
+(or (not x1642) x1644)
+(or (not x1643) x1595 x1594)
+(or (not x1644) x1642 x1526)
+(or (not x1630) (not x1622) (not x1594) x1643)
+(or (not x1644) x1642 x1637)
+(or (not x1638) (not x1622) (not x1594) x1643)
+(or (not x1635) (not x1524) x1642)
+(or (not x1623) (not x1594) x1643)
+(or (not x1641) x1642)
+(or (not x1595) x1643)
+(or (not x1642) x1641 x1524)
+(or (not x1638) (not x1630))
+(or (not x1642) x1641 x1635)
+(or (not x1021) x1638 x1334 x1388)
+(or (not x1633) (not x1522) x1641)
+(or (not x1638) (not x1021) (not x1388) x1334)
+(or (not x1640) x1641)
+(or (not x1638) (not x1334) x1021 x1388)
+(or (not x1641) x1640 x1522)
+(or (not x1334) (not x1388) x1638 x1021)
+(or (not x1641) x1640 x1633)
+(or (not x1019) x1638 x1332 x1388)
+(or (not x1531) (not x1520) x1640)
+(or (not x1638) (not x1019) (not x1388) x1332)
+(or (not x1520) x1640)
+(or (not x1638) (not x1332) x1019 x1388)
+(or (not x1640) x1520)
+(or (not x1332) (not x1388) x1638 x1019)
+(or (not x1640) x1531 x1520)
+(or (not x1017) x1638 x1331 x1388)
+(or (not x1629) (not x1518) x1520)
+(or (not x1638) (not x1017) (not x1388) x1331)
+(or (not x1629) x1520)
+(or (not x1638) (not x1331) x1017 x1388)
+(or (not x1520) x1629 x1518)
+(or (not x1331) (not x1388) x1638 x1017)
+(or (not x1520) x1629)
+(or (not x1015) x1638 x1329 x1388)
+(or (not x1627) (not x1516) x1629)
+(or (not x1638) (not x1015) (not x1388) x1329)
+(or (not x1639) x1629)
+(or (not x1638) (not x1329) x1015 x1388)
+(or (not x1629) x1639 x1516)
+(or (not x1329) (not x1388) x1638 x1015)
+(or (not x1629) x1639 x1627)
+(or (not x1012) x1638 x1328 x1388)
+(or (not x671) x1639)
+(or (not x1638) (not x1012) (not x1388) x1328)
+(or (not x1639) x671)
+(or (not x1638) (not x1328) x1012 x1388)
+(or (not x1637) (not x1515) x1636)
+(or (not x1328) (not x1388) x1638 x1012)
+(or (not x1634) x1636)
+(or (not x1332) (not x1019) x1630 x1334 x1021)
+(or (not x1636) x1634 x1515)
+(or (not x1331) (not x1017) x1630 x1332 x1019)
+(or (not x1636) x1637 x1634)
+(or (not x1329) (not x1015) x1630 x1331 x1017)
+(or (not x1635) (not x1512) x1634)
+(or (not x1328) (not x1012) x1630 x1329 x1015)
+(or (not x1632) x1634)
+(or x1630 x1328 x1012)
+(or (not x1634) x1632 x1512)
+(or (not x1334) (not x1021) x1630)
+(or (not x1634) x1635 x1632)
+(or (not x1630) (not x1334) x1021)
+(or (not x1633) (not x1509) x1632)
+(or (not x1630) (not x1021) x1334)
+(or (not x1631) x1632)
+(or (not x1630) (not x1332) x1019)
+(or (not x1632) x1631 x1509)
+(or (not x1630) (not x1019) x1332)
+(or (not x1632) x1633 x1631)
+(or (not x1630) (not x1331) x1017)
+(or (not x1531) (not x1504) x1631)
+(or (not x1630) (not x1017) x1331)
+(or (not x1504) x1631)
+(or (not x1630) (not x1329) x1015)
+(or (not x1631) x1504)
+(or (not x1630) (not x1015) x1329)
+(or (not x1631) x1531 x1504)
+(or (not x1630) (not x1328) x1012)
+(or (not x1629) (not x1501) x1504)
+(or (not x1630) (not x1012) x1328)
+(or (not x1628) x1504)
+(or (not x52) x1623 x1619 x1318)
+(or (not x1504) x1628 x1501)
+(or (not x1623) (not x1318) (not x52) x1619)
+(or (not x1504) x1629 x1628)
+(or (not x1623) x1619 x1318 x52)
+(or (not x1627) x1628)
+(or (not x1318) x1623 x1619 x52)
+(or (not x1628) x1627)
+(or (not x1619) (not x50) x1623 x1617 x1316)
+(or (not x1628) x1627)
+(or (not x1623) (not x1619) (not x1316) (not x50) x1617)
+(or (not x670) x1627)
+(or (not x1623) (not x1619) x1617 x1316 x50)
+(or (not x1627) x670)
+(or (not x1619) (not x1316) x1623 x1617 x50)
+(or (not x1590) (not x1579) x1626)
+(or (not x1617) (not x48) x1623 x1615 x1312)
+(or (not x1590) x1626)
+(or (not x1623) (not x1617) (not x1312) (not x48) x1615)
+(or (not x1626) x1590 x1579)
+(or (not x1623) (not x1617) x1615 x1312 x48)
+(or (not x1626) x1590)
+(or (not x1617) (not x1312) x1623 x1615 x48)
+(or (not x1588) (not x1577) x1590)
+(or (not x1615) (not x46) x1623 x1613 x1308)
+(or (not x1625) x1590)
+(or (not x1623) (not x1615) (not x1308) (not x46) x1613)
+(or (not x1590) x1625 x1577)
+(or (not x1623) (not x1615) x1613 x1308 x46)
+(or (not x1590) x1625 x1588)
+(or (not x1615) (not x1308) x1623 x1613 x46)
+(or (not x1586) (not x1576) x1625)
+(or (not x1613) (not x44) x1623 x1611 x1303)
+(or (not x1624) x1625)
+(or (not x1623) (not x1613) (not x1303) (not x44) x1611)
+(or (not x1625) x1624 x1576)
+(or (not x1623) (not x1613) x1611 x1303 x44)
+(or (not x1625) x1624 x1586)
+(or (not x1613) (not x1303) x1623 x1611 x44)
+(or (not x1584) (not x1573) x1624)
+(or (not x1611) (not x149) x1623 x1610 x1300)
+(or (not x1621) x1624)
+(or (not x1623) (not x1611) (not x1300) (not x149) x1610)
+(or (not x1624) x1621 x1573)
+(or (not x1623) (not x1611) x1610 x1300 x149)
+(or (not x1624) x1621 x1584)
+(or (not x1611) (not x1300) x1623 x1610 x149)
+(or (not x1571) (not x1518) x1621)
+(or (not x1623) (not x1622))
+(or (not x1571) x1621)
+(or (not x1610) x1622)
+(or (not x1621) x1571)
+(or (not x1622) x1610)
+(or (not x1621) x1571 x1518)
+(or x1619 x1318 x1000)
+(or (not x1580) (not x1568) x1571)
+(or (not x1318) (not x1000) x1619)
+(or (not x1620) x1571)
+(or (not x1619) (not x1318) x1000)
+(or (not x1571) x1620 x1568)
+(or (not x1619) (not x1000) x1318)
+(or (not x1571) x1620 x1580)
+(or (not x1619) x1617 x1316 x997)
+(or (not x669) x1620)
+(or (not x1619) (not x1316) (not x997) x1617)
+(or (not x1620) x669)
+(or (not x1617) (not x1316) x997)
+(or (not x1590) (not x1567) x1618)
+(or (not x1617) (not x997) x1316)
+(or (not x1616) x1618)
+(or (not x1617) x1619)
+(or (not x1618) x1616 x1567)
+(or (not x1617) x1615 x1312 x993)
+(or (not x1618) x1616 x1590)
+(or (not x1617) (not x1312) (not x993) x1615)
+(or (not x1588) (not x1565) x1616)
+(or (not x1615) (not x1312) x993)
+(or (not x1588) x1616)
+(or (not x1615) (not x993) x1312)
+(or (not x1616) x1588 x1565)
+(or (not x1615) x1617)
+(or (not x1616) x1588)
+(or (not x1615) x1613 x1308 x989)
+(or (not x1586) (not x1563) x1588)
+(or (not x1615) (not x1308) (not x989) x1613)
+(or (not x1614) x1588)
+(or (not x1613) (not x1308) x989)
+(or (not x1588) x1614 x1563)
+(or (not x1613) (not x989) x1308)
+(or (not x1588) x1614 x1586)
+(or (not x1613) x1615)
+(or (not x1584) (not x1560) x1614)
+(or (not x1613) x1611 x1303 x986)
+(or (not x1612) x1614)
+(or (not x1613) (not x1303) (not x986) x1611)
+(or (not x1614) x1612 x1560)
+(or (not x1611) (not x1303) x986)
+(or (not x1614) x1612 x1584)
+(or (not x1611) (not x986) x1303)
+(or (not x1558) (not x1518) x1612)
+(or (not x1611) x1613)
+(or (not x1558) x1612)
+(or (not x1611) x1610 x1300 x981)
+(or (not x1612) x1558)
+(or (not x1611) (not x1300) (not x981) x1610)
+(or (not x1612) x1558 x1518)
+(or (not x1610) (not x1300) x981)
+(or (not x1580) (not x1554) x1558)
+(or (not x1610) (not x981) x1300)
+(or (not x1609) x1558)
+(or (not x1610) x1611)
+(or (not x1558) x1609 x1554)
+(or (not x1595) (not x1284) (not x959))
+(or (not x1558) x1609 x1580)
+(or (not x1284) (not x959) x1594)
+(or (not x667) x1609)
+(or (not x1595) (not x1283) (not x959) x95)
+(or (not x1609) x667)
+(or (not x1283) (not x959) (not x95) x1595)
+(or (not x1590) (not x1552) x1608)
+(or (not x1594) (not x1283) (not x959))
+(or (not x1607) x1608)
+(or (not x1595) (not x1281) (not x959) x94)
+(or (not x1608) x1607 x1552)
+(or (not x1281) (not x959) (not x94) x1595)
+(or (not x1608) x1607 x1590)
+(or (not x1594) (not x1281) (not x959))
+(or (not x1588) (not x1550) x1607)
+(or (not x1595) (not x1279) (not x959) x92)
+(or (not x1606) x1607)
+(or (not x1279) (not x959) (not x92) x1595)
+(or (not x1607) x1606 x1550)
+(or (not x1594) (not x1279) (not x959))
+(or (not x1607) x1606 x1588)
+(or (not x1595) (not x1276) (not x959) x91)
+(or (not x1586) (not x1547) x1606)
+(or (not x1276) (not x959) (not x91) x1595)
+(or (not x1586) x1606)
+(or (not x1594) (not x1276) (not x959))
+(or (not x1606) x1586 x1547)
+(or (not x1595) (not x1284) (not x957) x89)
+(or (not x1606) x1586)
+(or (not x1284) (not x957) (not x89) x1595)
+(or (not x1584) (not x1544) x1586)
+(or (not x1594) (not x1284) (not x957))
+(or (not x1605) x1586)
+(or (not x1595) (not x1283) (not x957))
+(or (not x1586) x1605 x1544)
+(or (not x1283) (not x957) x1594)
+(or (not x1586) x1605 x1584)
+(or (not x1595) (not x1281) (not x957) x88)
+(or (not x1541) (not x1518) x1605)
+(or (not x1281) (not x957) (not x88) x1595)
+(or (not x1541) x1605)
+(or (not x1594) (not x1281) (not x957))
+(or (not x1605) x1541)
+(or (not x1595) (not x1279) (not x957) x87)
+(or (not x1605) x1541 x1518)
+(or (not x1279) (not x957) (not x87) x1595)
+(or (not x1580) (not x1538) x1541)
+(or (not x1594) (not x1279) (not x957))
+(or (not x1604) x1541)
+(or (not x1595) (not x1276) (not x957) x86)
+(or (not x1541) x1604 x1538)
+(or (not x1276) (not x957) (not x86) x1595)
+(or (not x1541) x1604 x1580)
+(or (not x1594) (not x1276) (not x957))
+(or (not x666) x1604)
+(or (not x1595) (not x1284) (not x956) x82)
+(or (not x1604) x666)
+(or (not x1284) (not x956) (not x82) x1595)
+(or (not x1590) (not x1537) x1603)
+(or (not x1594) (not x1284) (not x956))
+(or (not x1602) x1603)
+(or (not x1595) (not x1283) (not x956) x81)
+(or (not x1603) x1602 x1537)
+(or (not x1283) (not x956) (not x81) x1595)
+(or (not x1603) x1602 x1590)
+(or (not x1594) (not x1283) (not x956))
+(or (not x1588) (not x1535) x1602)
+(or (not x1595) (not x1281) (not x956))
+(or (not x1601) x1602)
+(or (not x1281) (not x956) x1594)
+(or (not x1602) x1601 x1535)
+(or (not x1595) (not x1279) (not x956) x79)
+(or (not x1602) x1601 x1588)
+(or (not x1279) (not x956) (not x79) x1595)
+(or (not x1586) (not x1533) x1601)
+(or (not x1594) (not x1279) (not x956))
+(or (not x1600) x1601)
+(or (not x1595) (not x1276) (not x956) x77)
+(or (not x1601) x1600 x1533)
+(or (not x1276) (not x956) (not x77) x1595)
+(or (not x1601) x1600 x1586)
+(or (not x1594) (not x1276) (not x956))
+(or (not x1584) (not x1531) x1600)
+(or (not x1595) (not x1284) (not x954) x73)
+(or (not x1584) x1600)
+(or (not x1284) (not x954) (not x73) x1595)
+(or (not x1600) x1584 x1531)
+(or (not x1594) (not x1284) (not x954))
+(or (not x1600) x1584)
+(or (not x1595) (not x1283) (not x954) x67)
+(or (not x1529) (not x1518) x1584)
+(or (not x1283) (not x954) (not x67) x1595)
+(or (not x1529) x1584)
+(or (not x1594) (not x1283) (not x954))
+(or (not x1584) x1529)
+(or (not x1595) (not x1281) (not x954) x66)
+(or (not x1584) x1529 x1518)
+(or (not x1281) (not x954) (not x66) x1595)
+(or (not x1580) (not x1527) x1529)
+(or (not x1594) (not x1281) (not x954))
+(or (not x1599) x1529)
+(or (not x1595) (not x1279) (not x954))
+(or (not x1529) x1599 x1527)
+(or (not x1279) (not x954) x1594)
+(or (not x1529) x1599 x1580)
+(or (not x1595) (not x1276) (not x954) x65)
+(or (not x665) x1599)
+(or (not x1276) (not x954) (not x65) x1595)
+(or (not x1599) x665)
+(or (not x1594) (not x1276) (not x954))
+(or (not x1590) (not x1526) x1598)
+(or (not x1595) (not x1284) (not x948) x58)
+(or (not x1597) x1598)
+(or (not x1284) (not x948) (not x58) x1595)
+(or (not x1598) x1597 x1526)
+(or (not x1594) (not x1284) (not x948))
+(or (not x1598) x1597 x1590)
+(or (not x1595) (not x1283) (not x948) x57)
+(or (not x1588) (not x1524) x1597)
+(or (not x1283) (not x948) (not x57) x1595)
+(or (not x1596) x1597)
+(or (not x1594) (not x1283) (not x948))
+(or (not x1597) x1596 x1524)
+(or (not x1595) (not x1281) (not x948) x56)
+(or (not x1597) x1596 x1588)
+(or (not x1281) (not x948) (not x56) x1595)
+(or (not x1586) (not x1522) x1596)
+(or (not x1594) (not x1281) (not x948))
+(or (not x1593) x1596)
+(or (not x1595) (not x1279) (not x948) x55)
+(or (not x1596) x1593 x1522)
+(or (not x1279) (not x948) (not x55) x1595)
+(or (not x1596) x1593 x1586)
+(or (not x1594) (not x1279) (not x948))
+(or (not x1584) (not x1520) x1593)
+(or (not x1595) (not x1276) (not x948))
+(or (not x1592) x1593)
+(or (not x1276) (not x948) x1594)
+(or (not x1593) x1592 x1520)
+(or (not x1449) (not x69) (not x7) x1591)
+(or (not x1593) x1592 x1584)
+(or (not x1591) (not x1561) (not x1505) x1581 x1575)
+(or (not x1518) x1592)
+(or (not x1591) (not x1505) x1562 x1561)
+(or (not x1518) x1592)
+(or (not x1591) x1508 x1505)
+(or (not x1592) x1518)
+(or (not x1575) (not x1561) (not x1505) x1591)
+(or (not x1592) x1518)
+(or (not x1581) (not x1561) (not x1505) x1591)
+(or (not x1580) (not x1516) x1518)
+(or (not x1562) (not x1505) x1591)
+(or (not x1518) x1516)
+(or (not x1508) x1591)
+(or (not x1518) x1580)
+(or (not x1581) (not x1575))
+(or (not x1590) (not x1515) x1589)
+(or (not x1021) x1581 x1267 x1388)
+(or (not x1587) x1589)
+(or (not x1581) (not x1021) (not x1388) x1267)
+(or (not x1589) x1587 x1515)
+(or (not x1581) (not x1267) x1021 x1388)
+(or (not x1589) x1590 x1587)
+(or (not x1267) (not x1388) x1581 x1021)
+(or (not x1588) (not x1512) x1587)
+(or (not x1019) x1581 x1265 x1388)
+(or (not x1585) x1587)
+(or (not x1581) (not x1019) (not x1388) x1265)
+(or (not x1587) x1585 x1512)
+(or (not x1581) (not x1265) x1019 x1388)
+(or (not x1587) x1588 x1585)
+(or (not x1265) (not x1388) x1581 x1019)
+(or (not x1586) (not x1509) x1585)
+(or (not x1017) x1581 x1264 x1388)
+(or (not x1583) x1585)
+(or (not x1581) (not x1017) (not x1388) x1264)
+(or (not x1585) x1583 x1509)
+(or (not x1581) (not x1264) x1017 x1388)
+(or (not x1585) x1586 x1583)
+(or (not x1264) (not x1388) x1581 x1017)
+(or (not x1584) (not x1504) x1583)
+(or (not x1015) x1581 x1262 x1388)
+(or (not x1582) x1583)
+(or (not x1581) (not x1015) (not x1388) x1262)
+(or (not x1583) x1582 x1504)
+(or (not x1581) (not x1262) x1015 x1388)
+(or (not x1583) x1584 x1582)
+(or (not x1262) (not x1388) x1581 x1015)
+(or (not x1518) (not x1501) x1582)
+(or (not x1012) x1581 x1261 x1388)
+(or (not x1501) x1582)
+(or (not x1581) (not x1012) (not x1388) x1261)
+(or (not x1582) x1501)
+(or (not x1581) (not x1261) x1012 x1388)
+(or (not x1582) x1518 x1501)
+(or (not x1261) (not x1388) x1581 x1012)
+(or (not x1580) x1501)
+(or (not x1265) (not x1019) x1575 x1267 x1021)
+(or (not x1501) x1580)
+(or (not x1264) (not x1017) x1575 x1265 x1019)
+(or (not x1501) x1580)
+(or (not x1262) (not x1015) x1575 x1264 x1017)
+(or (not x664) x1580)
+(or (not x1261) (not x1012) x1575 x1262 x1015)
+(or (not x1580) x664)
+(or x1575 x1261 x1012)
+(or (not x1579) (not x1514) x1578)
+(or (not x1267) (not x1021) x1575)
+(or (not x1514) x1578)
+(or (not x1575) (not x1267) x1021)
+(or (not x1578) x1579 x1514)
+(or (not x1575) (not x1021) x1267)
+(or (not x1578) x1514)
+(or (not x1575) (not x1265) x1019)
+(or (not x1577) (not x1511) x1514)
+(or (not x1575) (not x1019) x1265)
+(or (not x1574) x1514)
+(or (not x1575) (not x1264) x1017)
+(or (not x1514) x1577 x1574)
+(or (not x1575) (not x1017) x1264)
+(or (not x1514) x1574 x1511)
+(or (not x1575) (not x1262) x1015)
+(or (not x1576) (not x1507) x1574)
+(or (not x1575) (not x1015) x1262)
+(or (not x1572) x1574)
+(or (not x1575) (not x1261) x1012)
+(or (not x1574) x1576 x1572)
+(or (not x1575) (not x1012) x1261)
+(or (not x1574) x1572 x1507)
+(or (not x52) x1562 x1556 x1247)
+(or (not x1573) (not x1503) x1572)
+(or (not x1562) (not x1247) (not x52) x1556)
+(or (not x1570) x1572)
+(or (not x1562) x1556 x1247 x52)
+(or (not x1572) x1573 x1570)
+(or (not x1247) x1562 x1556 x52)
+(or (not x1572) x1570 x1503)
+(or (not x1556) (not x50) x1562 x1553 x1244)
+(or (not x1571) (not x1500) x1570)
+(or (not x1562) (not x1556) (not x1244) (not x50) x1553)
+(or (not x1569) x1570)
+(or (not x1562) (not x1556) x1553 x1244 x50)
+(or (not x1570) x1571 x1569)
+(or (not x1556) (not x1244) x1562 x1553 x50)
+(or (not x1570) x1569 x1500)
+(or (not x1553) (not x48) x1562 x1549 x1241)
+(or (not x1568) x1569)
+(or (not x1562) (not x1553) (not x1241) (not x48) x1549)
+(or (not x1569) x1568)
+(or (not x1562) (not x1553) x1549 x1241 x48)
+(or (not x1569) x1568)
+(or (not x1553) (not x1241) x1562 x1549 x48)
+(or (not x663) x1568)
+(or (not x1549) (not x46) x1562 x1545 x1236)
+(or (not x1568) x663)
+(or (not x1562) (not x1549) (not x1236) (not x46) x1545)
+(or (not x1567) (not x1514) x1566)
+(or (not x1562) (not x1549) x1545 x1236 x46)
+(or (not x1564) x1566)
+(or (not x1549) (not x1236) x1562 x1545 x46)
+(or (not x1566) x1567 x1564)
+(or (not x1545) (not x44) x1562 x1543 x1233)
+(or (not x1566) x1564 x1514)
+(or (not x1562) (not x1545) (not x1233) (not x44) x1543)
+(or (not x1565) (not x1511) x1564)
+(or (not x1562) (not x1545) x1543 x1233 x44)
+(or (not x1511) x1564)
+(or (not x1545) (not x1233) x1562 x1543 x44)
+(or (not x1564) x1565 x1511)
+(or (not x1543) (not x149) x1562 x1542 x1229)
+(or (not x1564) x1511)
+(or (not x1562) (not x1543) (not x1229) (not x149) x1542)
+(or (not x1563) (not x1507) x1511)
+(or (not x1562) (not x1543) x1542 x1229 x149)
+(or (not x1559) x1511)
+(or (not x1543) (not x1229) x1562 x1542 x149)
+(or (not x1511) x1563 x1559)
+(or (not x1562) (not x1561))
+(or (not x1511) x1559 x1507)
+(or (not x1542) x1561)
+(or (not x1560) (not x1503) x1559)
+(or (not x1561) x1542)
+(or (not x1557) x1559)
+(or x1556 x1247 x1000)
+(or (not x1559) x1560 x1557)
+(or (not x1247) (not x1000) x1556)
+(or (not x1559) x1557 x1503)
+(or (not x1556) (not x1247) x1000)
+(or (not x1558) (not x1500) x1557)
+(or (not x1556) (not x1000) x1247)
+(or (not x1555) x1557)
+(or (not x1556) x1553 x1244 x997)
+(or (not x1557) x1558 x1555)
+(or (not x1556) (not x1244) (not x997) x1553)
+(or (not x1557) x1555 x1500)
+(or (not x1553) (not x1244) x997)
+(or (not x1554) x1555)
+(or (not x1553) (not x997) x1244)
+(or (not x1555) x1554)
+(or (not x1553) x1556)
+(or (not x1555) x1554)
+(or (not x1553) x1549 x1241 x993)
+(or (not x662) x1554)
+(or (not x1553) (not x1241) (not x993) x1549)
+(or (not x1554) x662)
+(or (not x1549) (not x1241) x993)
+(or (not x1552) (not x1514) x1551)
+(or (not x1549) (not x993) x1241)
+(or (not x1548) x1551)
+(or (not x1549) x1553)
+(or (not x1551) x1552 x1548)
+(or (not x1549) x1545 x1236 x989)
+(or (not x1551) x1548 x1514)
+(or (not x1549) (not x1236) (not x989) x1545)
+(or (not x1550) (not x1511) x1548)
+(or (not x1545) (not x1236) x989)
+(or (not x1546) x1548)
+(or (not x1545) (not x989) x1236)
+(or (not x1548) x1550 x1546)
+(or (not x1545) x1549)
+(or (not x1548) x1546 x1511)
+(or (not x1545) x1543 x1233 x986)
+(or (not x1547) (not x1507) x1546)
+(or (not x1545) (not x1233) (not x986) x1543)
+(or (not x1507) x1546)
+(or (not x1543) (not x1233) x986)
+(or (not x1546) x1547 x1507)
+(or (not x1543) (not x986) x1233)
+(or (not x1546) x1507)
+(or (not x1543) x1545)
+(or (not x1544) (not x1503) x1507)
+(or (not x1543) x1542 x1229 x981)
+(or (not x1540) x1507)
+(or (not x1543) (not x1229) (not x981) x1542)
+(or (not x1507) x1544 x1540)
+(or (not x1542) (not x1229) x981)
+(or (not x1507) x1540 x1503)
+(or (not x1542) (not x981) x1229)
+(or (not x1541) (not x1500) x1540)
+(or (not x1542) x1543)
+(or (not x1539) x1540)
+(or (not x1508) (not x1199) (not x959))
+(or (not x1540) x1541 x1539)
+(or (not x1199) (not x959) x1505)
+(or (not x1540) x1539 x1500)
+(or (not x1508) (not x1197) (not x959) x95)
+(or (not x1538) x1539)
+(or (not x1197) (not x959) (not x95) x1508)
+(or (not x1539) x1538)
+(or (not x1505) (not x1197) (not x959))
+(or (not x1539) x1538)
+(or (not x1508) (not x1194) (not x959) x94)
+(or (not x660) x1538)
+(or (not x1194) (not x959) (not x94) x1508)
+(or (not x1538) x660)
+(or (not x1505) (not x1194) (not x959))
+(or (not x1537) (not x1514) x1536)
+(or (not x1508) (not x1191) (not x959) x92)
+(or (not x1534) x1536)
+(or (not x1191) (not x959) (not x92) x1508)
+(or (not x1536) x1537 x1534)
+(or (not x1505) (not x1191) (not x959))
+(or (not x1536) x1534 x1514)
+(or (not x1508) (not x1188) (not x959) x91)
+(or (not x1535) (not x1511) x1534)
+(or (not x1188) (not x959) (not x91) x1508)
+(or (not x1532) x1534)
+(or (not x1505) (not x1188) (not x959))
+(or (not x1534) x1535 x1532)
+(or (not x1508) (not x1199) (not x957) x89)
+(or (not x1534) x1532 x1511)
+(or (not x1199) (not x957) (not x89) x1508)
+(or (not x1533) (not x1507) x1532)
+(or (not x1505) (not x1199) (not x957))
+(or (not x1530) x1532)
+(or (not x1508) (not x1197) (not x957))
+(or (not x1532) x1533 x1530)
+(or (not x1197) (not x957) x1505)
+(or (not x1532) x1530 x1507)
+(or (not x1508) (not x1194) (not x957) x88)
+(or (not x1531) (not x1503) x1530)
+(or (not x1194) (not x957) (not x88) x1508)
+(or (not x1503) x1530)
+(or (not x1505) (not x1194) (not x957))
+(or (not x1530) x1531 x1503)
+(or (not x1508) (not x1191) (not x957) x87)
+(or (not x1530) x1503)
+(or (not x1191) (not x957) (not x87) x1508)
+(or (not x1529) (not x1500) x1503)
+(or (not x1505) (not x1191) (not x957))
+(or (not x1528) x1503)
+(or (not x1508) (not x1188) (not x957) x86)
+(or (not x1503) x1529 x1528)
+(or (not x1188) (not x957) (not x86) x1508)
+(or (not x1503) x1528 x1500)
+(or (not x1505) (not x1188) (not x957))
+(or (not x1527) x1528)
+(or (not x1508) (not x1199) (not x956) x82)
+(or (not x1528) x1527)
+(or (not x1199) (not x956) (not x82) x1508)
+(or (not x1528) x1527)
+(or (not x1505) (not x1199) (not x956))
+(or (not x658) x1527)
+(or (not x1508) (not x1197) (not x956) x81)
+(or (not x1527) x658)
+(or (not x1197) (not x956) (not x81) x1508)
+(or (not x1526) (not x1514) x1525)
+(or (not x1505) (not x1197) (not x956))
+(or (not x1523) x1525)
+(or (not x1508) (not x1194) (not x956))
+(or (not x1525) x1526 x1523)
+(or (not x1194) (not x956) x1505)
+(or (not x1525) x1523 x1514)
+(or (not x1508) (not x1191) (not x956) x79)
+(or (not x1524) (not x1511) x1523)
+(or (not x1191) (not x956) (not x79) x1508)
+(or (not x1521) x1523)
+(or (not x1505) (not x1191) (not x956))
+(or (not x1523) x1524 x1521)
+(or (not x1508) (not x1188) (not x956) x77)
+(or (not x1523) x1521 x1511)
+(or (not x1188) (not x956) (not x77) x1508)
+(or (not x1522) (not x1507) x1521)
+(or (not x1505) (not x1188) (not x956))
+(or (not x1519) x1521)
+(or (not x1508) (not x1199) (not x954) x73)
+(or (not x1521) x1522 x1519)
+(or (not x1199) (not x954) (not x73) x1508)
+(or (not x1521) x1519 x1507)
+(or (not x1505) (not x1199) (not x954))
+(or (not x1520) (not x1503) x1519)
+(or (not x1508) (not x1197) (not x954) x67)
+(or (not x1517) x1519)
+(or (not x1197) (not x954) (not x67) x1508)
+(or (not x1519) x1520 x1517)
+(or (not x1505) (not x1197) (not x954))
+(or (not x1519) x1517 x1503)
+(or (not x1508) (not x1194) (not x954) x66)
+(or (not x1518) (not x1500) x1517)
+(or (not x1194) (not x954) (not x66) x1508)
+(or (not x1500) x1517)
+(or (not x1505) (not x1194) (not x954))
+(or (not x1517) x1518 x1500)
+(or (not x1508) (not x1191) (not x954))
+(or (not x1517) x1500)
+(or (not x1191) (not x954) x1505)
+(or (not x1516) x1500)
+(or (not x1508) (not x1188) (not x954) x65)
+(or (not x1500) x1516)
+(or (not x1188) (not x954) (not x65) x1508)
+(or (not x1500) x1516)
+(or (not x1505) (not x1188) (not x954))
+(or (not x657) x1516)
+(or (not x1508) (not x1199) (not x948) x58)
+(or (not x1516) x657)
+(or (not x1199) (not x948) (not x58) x1508)
+(or (not x1515) (not x1514) x1513)
+(or (not x1505) (not x1199) (not x948))
+(or (not x1510) x1513)
+(or (not x1508) (not x1197) (not x948) x57)
+(or (not x1513) x1515 x1510)
+(or (not x1197) (not x948) (not x57) x1508)
+(or (not x1513) x1514 x1510)
+(or (not x1505) (not x1197) (not x948))
+(or (not x1512) (not x1511) x1510)
+(or (not x1508) (not x1194) (not x948) x56)
+(or (not x1506) x1510)
+(or (not x1194) (not x948) (not x56) x1508)
+(or (not x1510) x1512 x1506)
+(or (not x1505) (not x1194) (not x948))
+(or (not x1510) x1511 x1506)
+(or (not x1508) (not x1191) (not x948) x55)
+(or (not x1509) (not x1507) x1506)
+(or (not x1191) (not x948) (not x55) x1508)
+(or (not x1502) x1506)
+(or (not x1505) (not x1191) (not x948))
+(or (not x1506) x1509 x1502)
+(or (not x1508) (not x1188) (not x948))
+(or (not x1506) x1507 x1502)
+(or (not x1188) (not x948) x1505)
+(or (not x1504) (not x1503) x1502)
+(or (not x1449) (not x69) (not x8) x1498)
+(or (not x1499) x1502)
+(or (not x1498) (not x1482) (not x1450) x1493 x1490)
+(or (not x1502) x1504 x1499)
+(or (not x1498) (not x1450) x1483 x1482)
+(or (not x1502) x1503 x1499)
+(or (not x1498) x1451 x1450)
+(or (not x1501) (not x1500) x1499)
+(or (not x1490) (not x1482) (not x1450) x1498)
+(or (not x1499) x1501)
+(or (not x1493) (not x1482) (not x1450) x1498)
+(or (not x1499) x1500)
+(or (not x1483) (not x1450) x1498)
+(or (not x1238) x1497)
+(or (not x1451) x1498)
+(or (not x1238) x1497)
+(or (not x1493) (not x1490))
+(or (not x1497) x1238)
+(or (not x1021) x1493 x1168 x1388)
+(or (not x1497) x1238)
+(or (not x1493) (not x1021) (not x1388) x1168)
+(or (not x1461) (not x1234) x1238)
+(or (not x1493) (not x1168) x1021 x1388)
+(or (not x1496) x1238)
+(or (not x1168) (not x1388) x1493 x1021)
+(or (not x1238) x1496 x1234)
+(or (not x1019) x1493 x1167 x1388)
+(or (not x1238) x1496 x1461)
+(or (not x1493) (not x1019) (not x1388) x1167)
+(or (not x1460) (not x1231) x1496)
+(or (not x1493) (not x1167) x1019 x1388)
+(or (not x1495) x1496)
+(or (not x1167) (not x1388) x1493 x1019)
+(or (not x1496) x1495 x1231)
+(or (not x1017) x1493 x1165 x1388)
+(or (not x1496) x1495 x1460)
+(or (not x1493) (not x1017) (not x1388) x1165)
+(or (not x1458) (not x1228) x1495)
+(or (not x1493) (not x1165) x1017 x1388)
+(or (not x1494) x1495)
+(or (not x1165) (not x1388) x1493 x1017)
+(or (not x1495) x1494 x1228)
+(or (not x1015) x1493 x1164 x1388)
+(or (not x1495) x1494 x1458)
+(or (not x1493) (not x1015) (not x1388) x1164)
+(or (not x1456) (not x1224) x1494)
+(or (not x1493) (not x1164) x1015 x1388)
+(or (not x1492) x1494)
+(or (not x1164) (not x1388) x1493 x1015)
+(or (not x1494) x1492 x1224)
+(or (not x1012) x1493 x1160 x1388)
+(or (not x1494) x1492 x1456)
+(or (not x1493) (not x1012) (not x1388) x1160)
+(or (not x1453) (not x1221) x1492)
+(or (not x1493) (not x1160) x1012 x1388)
+(or (not x1492) x1221)
+(or (not x1160) (not x1388) x1493 x1012)
+(or (not x1492) x1453)
+(or (not x1167) (not x1019) x1490 x1168 x1021)
+(or (not x1238) (not x1220) x1491)
+(or (not x1165) (not x1017) x1490 x1167 x1019)
+(or (not x1220) x1491)
+(or (not x1164) (not x1015) x1490 x1165 x1017)
+(or (not x1491) x1220)
+(or (not x1160) (not x1012) x1490 x1164 x1015)
+(or (not x1491) x1238 x1220)
+(or x1490 x1160 x1012)
+(or (not x1461) (not x1218) x1220)
+(or (not x1168) (not x1021) x1490)
+(or (not x1461) x1220)
+(or (not x1490) (not x1168) x1021)
+(or (not x1220) x1461 x1218)
+(or (not x1490) (not x1021) x1168)
+(or (not x1220) x1461)
+(or (not x1490) (not x1167) x1019)
+(or (not x1460) (not x1216) x1461)
+(or (not x1490) (not x1019) x1167)
+(or (not x1489) x1461)
+(or (not x1490) (not x1165) x1017)
+(or (not x1461) x1489 x1216)
+(or (not x1490) (not x1017) x1165)
+(or (not x1461) x1489 x1460)
+(or (not x1490) (not x1164) x1015)
+(or (not x1458) (not x1215) x1489)
+(or (not x1490) (not x1015) x1164)
+(or (not x1488) x1489)
+(or (not x1490) (not x1160) x1012)
+(or (not x1489) x1488 x1215)
+(or (not x1490) (not x1012) x1160)
+(or (not x1489) x1488 x1458)
+(or (not x52) x1483 x1479 x1141)
+(or (not x1456) (not x1213) x1488)
+(or (not x1483) (not x1141) (not x52) x1479)
+(or (not x1487) x1488)
+(or (not x1483) x1479 x1141 x52)
+(or (not x1488) x1487 x1213)
+(or (not x1141) x1483 x1479 x52)
+(or (not x1488) x1487 x1456)
+(or (not x1479) (not x50) x1483 x1476 x1139)
+(or (not x1453) (not x1210) x1487)
+(or (not x1483) (not x1479) (not x1139) (not x50) x1476)
+(or (not x1486) x1487)
+(or (not x1483) (not x1479) x1476 x1139 x50)
+(or (not x1487) x1486 x1210)
+(or (not x1479) (not x1139) x1483 x1476 x50)
+(or (not x1487) x1486 x1453)
+(or (not x1476) (not x48) x1483 x1475 x1136)
+(or (not x655) x1486)
+(or (not x1483) (not x1476) (not x1136) (not x48) x1475)
+(or (not x1486) x655)
+(or (not x1483) (not x1476) x1475 x1136 x48)
+(or (not x1238) (not x1209) x1485)
+(or (not x1476) (not x1136) x1483 x1475 x48)
+(or (not x1209) x1485)
+(or (not x1475) (not x46) x1483 x1473 x1133)
+(or (not x1485) x1209)
+(or (not x1483) (not x1475) (not x1133) (not x46) x1473)
+(or (not x1485) x1238 x1209)
+(or (not x1483) (not x1475) x1473 x1133 x46)
+(or (not x1461) (not x1207) x1209)
+(or (not x1475) (not x1133) x1483 x1473 x46)
+(or (not x1484) x1209)
+(or (not x1473) (not x44) x1483 x1471 x1131)
+(or (not x1209) x1484 x1207)
+(or (not x1483) (not x1473) (not x1131) (not x44) x1471)
+(or (not x1209) x1484 x1461)
+(or (not x1483) (not x1473) x1471 x1131 x44)
+(or (not x1460) (not x1205) x1484)
+(or (not x1473) (not x1131) x1483 x1471 x44)
+(or (not x1460) x1484)
+(or (not x1471) (not x149) x1483 x1470 x1128)
+(or (not x1484) x1460 x1205)
+(or (not x1483) (not x1471) (not x1128) (not x149) x1470)
+(or (not x1484) x1460)
+(or (not x1483) (not x1471) x1470 x1128 x149)
+(or (not x1458) (not x1203) x1460)
+(or (not x1471) (not x1128) x1483 x1470 x149)
+(or (not x1481) x1460)
+(or (not x1483) (not x1482))
+(or (not x1460) x1481 x1203)
+(or (not x1470) x1482)
+(or (not x1460) x1481 x1458)
+(or (not x1482) x1470)
+(or (not x1456) (not x1202) x1481)
+(or x1479 x1141 x1000)
+(or (not x1480) x1481)
+(or (not x1141) (not x1000) x1479)
+(or (not x1481) x1480 x1202)
+(or (not x1479) (not x1141) x1000)
+(or (not x1481) x1480 x1456)
+(or (not x1479) (not x1000) x1141)
+(or (not x1453) (not x1198) x1480)
+(or (not x1479) x1476 x1139 x997)
+(or (not x1478) x1480)
+(or (not x1479) (not x1139) (not x997) x1476)
+(or (not x1480) x1478 x1198)
+(or (not x1476) (not x1139) x997)
+(or (not x1480) x1478 x1453)
+(or (not x1476) (not x997) x1139)
+(or (not x653) x1478)
+(or (not x1476) x1479)
+(or (not x1478) x653)
+(or (not x1476) x1475 x1136 x993)
+(or (not x1238) (not x1196) x1477)
+(or (not x1476) (not x1136) (not x993) x1475)
+(or (not x1196) x1477)
+(or (not x1475) (not x1136) x993)
+(or (not x1477) x1196)
+(or (not x1475) (not x993) x1136)
+(or (not x1477) x1238 x1196)
+(or (not x1475) x1476)
+(or (not x1461) (not x1193) x1196)
+(or (not x1475) x1473 x1133 x989)
+(or (not x1474) x1196)
+(or (not x1475) (not x1133) (not x989) x1473)
+(or (not x1196) x1474 x1193)
+(or (not x1473) (not x1133) x989)
+(or (not x1196) x1474 x1461)
+(or (not x1473) (not x989) x1133)
+(or (not x1460) (not x1187) x1474)
+(or (not x1473) x1475)
+(or (not x1472) x1474)
+(or (not x1473) x1471 x1131 x986)
+(or (not x1474) x1472 x1187)
+(or (not x1473) (not x1131) (not x986) x1471)
+(or (not x1474) x1472 x1460)
+(or (not x1471) (not x1131) x986)
+(or (not x1458) (not x1185) x1472)
+(or (not x1471) (not x986) x1131)
+(or (not x1458) x1472)
+(or (not x1471) x1473)
+(or (not x1472) x1458 x1185)
+(or (not x1471) x1470 x1128 x981)
+(or (not x1472) x1458)
+(or (not x1471) (not x1128) (not x981) x1470)
+(or (not x1456) (not x1182) x1458)
+(or (not x1470) (not x1128) x981)
+(or (not x1469) x1458)
+(or (not x1470) (not x981) x1128)
+(or (not x1458) x1469 x1182)
+(or (not x1470) x1471)
+(or (not x1458) x1469 x1456)
+(or (not x1451) (not x1113) (not x959))
+(or (not x1453) (not x1180) x1469)
+(or (not x1113) (not x959) x1450)
+(or (not x1468) x1469)
+(or (not x1451) (not x1111) (not x959) x95)
+(or (not x1469) x1468 x1180)
+(or (not x1111) (not x959) (not x95) x1451)
+(or (not x1469) x1468 x1453)
+(or (not x1450) (not x1111) (not x959))
+(or (not x651) x1468)
+(or (not x1451) (not x1109) (not x959) x94)
+(or (not x1468) x651)
+(or (not x1109) (not x959) (not x94) x1451)
+(or (not x1238) (not x1179) x1467)
+(or (not x1450) (not x1109) (not x959))
+(or (not x1179) x1467)
+(or (not x1451) (not x1108) (not x959) x92)
+(or (not x1467) x1179)
+(or (not x1108) (not x959) (not x92) x1451)
+(or (not x1467) x1238 x1179)
+(or (not x1450) (not x1108) (not x959))
+(or (not x1461) (not x1177) x1179)
+(or (not x1451) (not x1105) (not x959) x91)
+(or (not x1466) x1179)
+(or (not x1105) (not x959) (not x91) x1451)
+(or (not x1179) x1466 x1177)
+(or (not x1450) (not x1105) (not x959))
+(or (not x1179) x1466 x1461)
+(or (not x1451) (not x1113) (not x957) x89)
+(or (not x1460) (not x1175) x1466)
+(or (not x1113) (not x957) (not x89) x1451)
+(or (not x1465) x1466)
+(or (not x1450) (not x1113) (not x957))
+(or (not x1466) x1465 x1175)
+(or (not x1451) (not x1111) (not x957))
+(or (not x1466) x1465 x1460)
+(or (not x1111) (not x957) x1450)
+(or (not x1458) (not x1172) x1465)
+(or (not x1451) (not x1109) (not x957) x88)
+(or (not x1464) x1465)
+(or (not x1109) (not x957) (not x88) x1451)
+(or (not x1465) x1464 x1172)
+(or (not x1450) (not x1109) (not x957))
+(or (not x1465) x1464 x1458)
+(or (not x1451) (not x1108) (not x957) x87)
+(or (not x1456) (not x1170) x1464)
+(or (not x1108) (not x957) (not x87) x1451)
+(or (not x1456) x1464)
+(or (not x1450) (not x1108) (not x957))
+(or (not x1464) x1456 x1170)
+(or (not x1451) (not x1105) (not x957) x86)
+(or (not x1464) x1456)
+(or (not x1105) (not x957) (not x86) x1451)
+(or (not x1453) (not x1166) x1456)
+(or (not x1450) (not x1105) (not x957))
+(or (not x1463) x1456)
+(or (not x1451) (not x1113) (not x956) x82)
+(or (not x1456) x1463 x1166)
+(or (not x1113) (not x956) (not x82) x1451)
+(or (not x1456) x1463 x1453)
+(or (not x1450) (not x1113) (not x956))
+(or (not x650) x1463)
+(or (not x1451) (not x1111) (not x956) x81)
+(or (not x1463) x650)
+(or (not x1111) (not x956) (not x81) x1451)
+(or (not x1238) (not x1163) x1462)
+(or (not x1450) (not x1111) (not x956))
+(or (not x1163) x1462)
+(or (not x1451) (not x1109) (not x956))
+(or (not x1462) x1163)
+(or (not x1109) (not x956) x1450)
+(or (not x1462) x1238 x1163)
+(or (not x1451) (not x1108) (not x956) x79)
+(or (not x1461) (not x1158) x1163)
+(or (not x1108) (not x956) (not x79) x1451)
+(or (not x1459) x1163)
+(or (not x1450) (not x1108) (not x956))
+(or (not x1163) x1459 x1158)
+(or (not x1451) (not x1105) (not x956) x77)
+(or (not x1163) x1461 x1459)
+(or (not x1105) (not x956) (not x77) x1451)
+(or (not x1460) (not x1155) x1459)
+(or (not x1450) (not x1105) (not x956))
+(or (not x1457) x1459)
+(or (not x1451) (not x1113) (not x954) x73)
+(or (not x1459) x1457 x1155)
+(or (not x1113) (not x954) (not x73) x1451)
+(or (not x1459) x1460 x1457)
+(or (not x1450) (not x1113) (not x954))
+(or (not x1458) (not x1152) x1457)
+(or (not x1451) (not x1111) (not x954) x67)
+(or (not x1455) x1457)
+(or (not x1111) (not x954) (not x67) x1451)
+(or (not x1457) x1455 x1152)
+(or (not x1450) (not x1111) (not x954))
+(or (not x1457) x1458 x1455)
+(or (not x1451) (not x1109) (not x954) x66)
+(or (not x1456) (not x1149) x1455)
+(or (not x1109) (not x954) (not x66) x1451)
+(or (not x1454) x1455)
+(or (not x1450) (not x1109) (not x954))
+(or (not x1455) x1454 x1149)
+(or (not x1451) (not x1108) (not x954))
+(or (not x1455) x1456 x1454)
+(or (not x1108) (not x954) x1450)
+(or (not x1453) x1454)
+(or (not x1451) (not x1105) (not x954) x65)
+(or (not x1454) x1453)
+(or (not x1105) (not x954) (not x65) x1451)
+(or (not x1454) x1453)
+(or (not x1450) (not x1105) (not x954))
+(or (not x648) x1453)
+(or (not x1451) (not x1113) (not x948) x58)
+(or (not x1453) x648)
+(or (not x1113) (not x948) (not x58) x1451)
+(or (not x1413) (not x1238) x1452)
+(or (not x1450) (not x1113) (not x948))
+(or (not x1413) x1452)
+(or (not x1451) (not x1111) (not x948) x57)
+(or (not x1452) x1413 x1238)
+(or (not x1111) (not x948) (not x57) x1451)
+(or (not x1452) x1413)
+(or (not x1450) (not x1111) (not x948))
+(or (not x1234) (not x1218) x1413)
+(or (not x1451) (not x1109) (not x948) x56)
+(or (not x1234) x1413)
+(or (not x1109) (not x948) (not x56) x1451)
+(or (not x1413) x1234)
+(or (not x1450) (not x1109) (not x948))
+(or (not x1413) x1234 x1218)
+(or (not x1451) (not x1108) (not x948) x55)
+(or (not x1410) (not x1231) x1234)
+(or (not x1108) (not x948) (not x55) x1451)
+(or (not x1448) x1234)
+(or (not x1450) (not x1108) (not x948))
+(or (not x1234) x1448 x1231)
+(or (not x1451) (not x1105) (not x948))
+(or (not x1234) x1448 x1410)
+(or (not x1105) (not x948) x1450)
+(or (not x1409) (not x1228) x1448)
+(or (not x1449) (not x69) (not x9) x1446)
+(or (not x1447) x1448)
+(or (not x1446) (not x1428) (not x1396) x1441 x1435)
+(or (not x1448) x1447 x1228)
+(or (not x1446) (not x1396) x1430 x1428)
+(or (not x1448) x1447 x1409)
+(or (not x1446) x1397 x1396)
+(or (not x1407) (not x1224) x1447)
+(or (not x1435) (not x1428) (not x1396) x1446)
+(or (not x1445) x1447)
+(or (not x1441) (not x1428) (not x1396) x1446)
+(or (not x1447) x1445 x1224)
+(or (not x1430) (not x1396) x1446)
+(or (not x1447) x1445 x1407)
+(or (not x1397) x1446)
+(or (not x1404) (not x1221) x1445)
+(or (not x1441) (not x1435))
+(or (not x1444) x1445)
+(or (not x1021) x1441 x1090 x1388)
+(or (not x1445) x1444 x1221)
+(or (not x1441) (not x1021) (not x1388) x1090)
+(or (not x1445) x1444 x1404)
+(or (not x1441) (not x1090) x1021 x1388)
+(or (not x645) x1444)
+(or (not x1090) (not x1388) x1441 x1021)
+(or (not x1444) x645)
+(or (not x1019) x1441 x1089 x1388)
+(or (not x1413) (not x1220) x1443)
+(or (not x1441) (not x1019) (not x1388) x1089)
+(or (not x1442) x1443)
+(or (not x1441) (not x1089) x1019 x1388)
+(or (not x1443) x1442 x1220)
+(or (not x1089) (not x1388) x1441 x1019)
+(or (not x1443) x1442 x1413)
+(or (not x1017) x1441 x1087 x1388)
+(or (not x1218) x1442)
+(or (not x1441) (not x1017) (not x1388) x1087)
+(or (not x1218) x1442)
+(or (not x1441) (not x1087) x1017 x1388)
+(or (not x1442) x1218)
+(or (not x1087) (not x1388) x1441 x1017)
+(or (not x1442) x1218)
+(or (not x1015) x1441 x1085 x1388)
+(or (not x1410) (not x1216) x1218)
+(or (not x1441) (not x1015) (not x1388) x1085)
+(or (not x1440) x1218)
+(or (not x1441) (not x1085) x1015 x1388)
+(or (not x1218) x1440 x1216)
+(or (not x1085) (not x1388) x1441 x1015)
+(or (not x1218) x1440 x1410)
+(or (not x1012) x1441 x1084 x1388)
+(or (not x1409) (not x1215) x1440)
+(or (not x1441) (not x1012) (not x1388) x1084)
+(or (not x1439) x1440)
+(or (not x1441) (not x1084) x1012 x1388)
+(or (not x1440) x1439 x1215)
+(or (not x1084) (not x1388) x1441 x1012)
+(or (not x1440) x1439 x1409)
+(or (not x1089) (not x1019) x1435 x1090 x1021)
+(or (not x1407) (not x1213) x1439)
+(or (not x1087) (not x1017) x1435 x1089 x1019)
+(or (not x1438) x1439)
+(or (not x1085) (not x1015) x1435 x1087 x1017)
+(or (not x1439) x1438 x1213)
+(or (not x1084) (not x1012) x1435 x1085 x1015)
+(or (not x1439) x1438 x1407)
+(or x1435 x1084 x1012)
+(or (not x1404) (not x1210) x1438)
+(or (not x1090) (not x1021) x1435)
+(or (not x1438) x1210)
+(or (not x1435) (not x1090) x1021)
+(or (not x1438) x1404)
+(or (not x1435) (not x1021) x1090)
+(or (not x1413) (not x1209) x1437)
+(or (not x1435) (not x1089) x1019)
+(or (not x1436) x1437)
+(or (not x1435) (not x1019) x1089)
+(or (not x1437) x1436 x1209)
+(or (not x1435) (not x1087) x1017)
+(or (not x1437) x1436 x1413)
+(or (not x1435) (not x1017) x1087)
+(or (not x1218) (not x1207) x1436)
+(or (not x1435) (not x1085) x1015)
+(or (not x1207) x1436)
+(or (not x1435) (not x1015) x1085)
+(or (not x1436) x1207)
+(or (not x1435) (not x1084) x1012)
+(or (not x1436) x1218 x1207)
+(or (not x1435) (not x1012) x1084)
+(or (not x1410) (not x1205) x1207)
+(or (not x52) x1430 x1426 x1073)
+(or (not x1410) x1207)
+(or (not x1430) (not x1073) (not x52) x1426)
+(or (not x1207) x1410 x1205)
+(or (not x1430) x1426 x1073 x52)
+(or (not x1207) x1410)
+(or (not x1073) x1430 x1426 x52)
+(or (not x1409) (not x1203) x1410)
+(or (not x1426) (not x50) x1430 x1425 x1072)
+(or (not x1434) x1410)
+(or (not x1430) (not x1426) (not x1072) (not x50) x1425)
+(or (not x1410) x1434 x1203)
+(or (not x1430) (not x1426) x1425 x1072 x50)
+(or (not x1410) x1434 x1409)
+(or (not x1426) (not x1072) x1430 x1425 x50)
+(or (not x1407) (not x1202) x1434)
+(or (not x1425) (not x48) x1430 x1422 x1069)
+(or (not x1433) x1434)
+(or (not x1430) (not x1425) (not x1069) (not x48) x1422)
+(or (not x1434) x1433 x1202)
+(or (not x1430) (not x1425) x1422 x1069 x48)
+(or (not x1434) x1433 x1407)
+(or (not x1425) (not x1069) x1430 x1422 x48)
+(or (not x1404) (not x1198) x1433)
+(or (not x1422) (not x46) x1430 x1420 x1066)
+(or (not x1432) x1433)
+(or (not x1430) (not x1422) (not x1066) (not x46) x1420)
+(or (not x1433) x1432 x1198)
+(or (not x1430) (not x1422) x1420 x1066 x46)
+(or (not x1433) x1432 x1404)
+(or (not x1422) (not x1066) x1430 x1420 x46)
+(or (not x644) x1432)
+(or (not x1420) (not x44) x1430 x1418 x1062)
+(or (not x1432) x644)
+(or (not x1430) (not x1420) (not x1062) (not x44) x1418)
+(or (not x1413) (not x1196) x1431)
+(or (not x1430) (not x1420) x1418 x1062 x44)
+(or (not x1429) x1431)
+(or (not x1420) (not x1062) x1430 x1418 x44)
+(or (not x1431) x1429 x1196)
+(or (not x1418) (not x149) x1430 x1417 x1059)
+(or (not x1431) x1429 x1413)
+(or (not x1430) (not x1418) (not x1059) (not x149) x1417)
+(or (not x1218) (not x1193) x1429)
+(or (not x1430) (not x1418) x1417 x1059 x149)
+(or (not x1193) x1429)
+(or (not x1418) (not x1059) x1430 x1417 x149)
+(or (not x1429) x1193)
+(or (not x1430) (not x1428))
+(or (not x1429) x1218 x1193)
+(or (not x1417) x1428)
+(or (not x1410) (not x1187) x1193)
+(or (not x1428) x1417)
+(or (not x1427) x1193)
+(or x1426 x1073 x1000)
+(or (not x1193) x1427 x1187)
+(or (not x1073) (not x1000) x1426)
+(or (not x1193) x1427 x1410)
+(or (not x1426) (not x1073) x1000)
+(or (not x1409) (not x1185) x1427)
+(or (not x1426) (not x1000) x1073)
+(or (not x1409) x1427)
+(or (not x1426) x1425 x1072 x997)
+(or (not x1427) x1409 x1185)
+(or (not x1426) (not x1072) (not x997) x1425)
+(or (not x1427) x1409)
+(or (not x1425) (not x1072) x997)
+(or (not x1407) (not x1182) x1409)
+(or (not x1425) (not x997) x1072)
+(or (not x1424) x1409)
+(or (not x1425) x1426)
+(or (not x1409) x1424 x1182)
+(or (not x1425) x1422 x1069 x993)
+(or (not x1409) x1424 x1407)
+(or (not x1425) (not x1069) (not x993) x1422)
+(or (not x1404) (not x1180) x1424)
+(or (not x1422) (not x1069) x993)
+(or (not x1423) x1424)
+(or (not x1422) (not x993) x1069)
+(or (not x1424) x1423 x1180)
+(or (not x1422) x1425)
+(or (not x1424) x1423 x1404)
+(or (not x1422) x1420 x1066 x989)
+(or (not x643) x1423)
+(or (not x1422) (not x1066) (not x989) x1420)
+(or (not x1423) x643)
+(or (not x1420) (not x1066) x989)
+(or (not x1413) (not x1179) x1421)
+(or (not x1420) (not x989) x1066)
+(or (not x1419) x1421)
+(or (not x1420) x1422)
+(or (not x1421) x1419 x1179)
+(or (not x1420) x1418 x1062 x986)
+(or (not x1421) x1419 x1413)
+(or (not x1420) (not x1062) (not x986) x1418)
+(or (not x1218) (not x1177) x1419)
+(or (not x1418) (not x1062) x986)
+(or (not x1177) x1419)
+(or (not x1418) (not x986) x1062)
+(or (not x1419) x1177)
+(or (not x1418) x1420)
+(or (not x1419) x1218 x1177)
+(or (not x1418) x1417 x1059 x981)
+(or (not x1410) (not x1175) x1177)
+(or (not x1418) (not x1059) (not x981) x1417)
+(or (not x1416) x1177)
+(or (not x1417) (not x1059) x981)
+(or (not x1177) x1416 x1175)
+(or (not x1417) (not x981) x1059)
+(or (not x1177) x1416 x1410)
+(or (not x1417) x1418)
+(or (not x1409) (not x1172) x1416)
+(or (not x1397) (not x1045) (not x959))
+(or (not x1415) x1416)
+(or (not x1045) (not x959) x1396)
+(or (not x1416) x1415 x1172)
+(or (not x1397) (not x1043) (not x959) x95)
+(or (not x1416) x1415 x1409)
+(or (not x1043) (not x959) (not x95) x1397)
+(or (not x1407) (not x1170) x1415)
+(or (not x1396) (not x1043) (not x959))
+(or (not x1407) x1415)
+(or (not x1397) (not x1042) (not x959) x94)
+(or (not x1415) x1407 x1170)
+(or (not x1042) (not x959) (not x94) x1397)
+(or (not x1415) x1407)
+(or (not x1396) (not x1042) (not x959))
+(or (not x1404) (not x1166) x1407)
+(or (not x1397) (not x1040) (not x959) x92)
+(or (not x1414) x1407)
+(or (not x1040) (not x959) (not x92) x1397)
+(or (not x1407) x1414 x1166)
+(or (not x1396) (not x1040) (not x959))
+(or (not x1407) x1414 x1404)
+(or (not x1397) (not x1037) (not x959) x91)
+(or (not x642) x1414)
+(or (not x1037) (not x959) (not x91) x1397)
+(or (not x1414) x642)
+(or (not x1396) (not x1037) (not x959))
+(or (not x1413) (not x1163) x1412)
+(or (not x1397) (not x1045) (not x957) x89)
+(or (not x1411) x1412)
+(or (not x1045) (not x957) (not x89) x1397)
+(or (not x1412) x1411 x1163)
+(or (not x1396) (not x1045) (not x957))
+(or (not x1412) x1413 x1411)
+(or (not x1397) (not x1043) (not x957))
+(or (not x1218) (not x1158) x1411)
+(or (not x1043) (not x957) x1396)
+(or (not x1158) x1411)
+(or (not x1397) (not x1042) (not x957) x88)
+(or (not x1411) x1158)
+(or (not x1042) (not x957) (not x88) x1397)
+(or (not x1411) x1218 x1158)
+(or (not x1396) (not x1042) (not x957))
+(or (not x1410) (not x1155) x1158)
+(or (not x1397) (not x1040) (not x957) x87)
+(or (not x1408) x1158)
+(or (not x1040) (not x957) (not x87) x1397)
+(or (not x1158) x1408 x1155)
+(or (not x1396) (not x1040) (not x957))
+(or (not x1158) x1410 x1408)
+(or (not x1397) (not x1037) (not x957) x86)
+(or (not x1409) (not x1152) x1408)
+(or (not x1037) (not x957) (not x86) x1397)
+(or (not x1406) x1408)
+(or (not x1396) (not x1037) (not x957))
+(or (not x1408) x1406 x1152)
+(or (not x1397) (not x1045) (not x956) x82)
+(or (not x1408) x1409 x1406)
+(or (not x1045) (not x956) (not x82) x1397)
+(or (not x1407) (not x1149) x1406)
+(or (not x1396) (not x1045) (not x956))
+(or (not x1405) x1406)
+(or (not x1397) (not x1043) (not x956) x81)
+(or (not x1406) x1405 x1149)
+(or (not x1043) (not x956) (not x81) x1397)
+(or (not x1406) x1407 x1405)
+(or (not x1396) (not x1043) (not x956))
+(or (not x1404) x1405)
+(or (not x1397) (not x1042) (not x956))
+(or (not x1405) x1404)
+(or (not x1042) (not x956) x1396)
+(or (not x1405) x1404)
+(or (not x1397) (not x1040) (not x956) x79)
+(or (not x641) x1404)
+(or (not x1040) (not x956) (not x79) x1397)
+(or (not x1404) x641)
+(or (not x1396) (not x1040) (not x956))
+(or (not x1366) (not x1238) x1403)
+(or (not x1397) (not x1037) (not x956) x77)
+(or (not x1366) x1403)
+(or (not x1037) (not x956) (not x77) x1397)
+(or (not x1403) x1366 x1238)
+(or (not x1396) (not x1037) (not x956))
+(or (not x1403) x1366)
+(or (not x1397) (not x1045) (not x954) x73)
+(or (not x1362) (not x1234) x1366)
+(or (not x1045) (not x954) (not x73) x1397)
+(or (not x1402) x1366)
+(or (not x1396) (not x1045) (not x954))
+(or (not x1366) x1402 x1234)
+(or (not x1397) (not x1043) (not x954) x67)
+(or (not x1366) x1402 x1362)
+(or (not x1043) (not x954) (not x67) x1397)
+(or (not x1231) (not x1205) x1402)
+(or (not x1396) (not x1043) (not x954))
+(or (not x1231) x1402)
+(or (not x1397) (not x1042) (not x954) x66)
+(or (not x1402) x1231)
+(or (not x1042) (not x954) (not x66) x1397)
+(or (not x1402) x1231 x1205)
+(or (not x1396) (not x1042) (not x954))
+(or (not x1359) (not x1228) x1231)
+(or (not x1397) (not x1040) (not x954))
+(or (not x1401) x1231)
+(or (not x1040) (not x954) x1396)
+(or (not x1231) x1401 x1228)
+(or (not x1397) (not x1037) (not x954) x65)
+(or (not x1231) x1401 x1359)
+(or (not x1037) (not x954) (not x65) x1397)
+(or (not x1358) (not x1224) x1401)
+(or (not x1396) (not x1037) (not x954))
+(or (not x1400) x1401)
+(or (not x1397) (not x1045) (not x948) x58)
+(or (not x1401) x1400 x1224)
+(or (not x1045) (not x948) (not x58) x1397)
+(or (not x1401) x1400 x1358)
+(or (not x1396) (not x1045) (not x948))
+(or (not x1355) (not x1221) x1400)
+(or (not x1397) (not x1043) (not x948) x57)
+(or (not x1399) x1400)
+(or (not x1043) (not x948) (not x57) x1397)
+(or (not x1400) x1399 x1221)
+(or (not x1396) (not x1043) (not x948))
+(or (not x1400) x1399 x1355)
+(or (not x1397) (not x1042) (not x948) x56)
+(or (not x640) x1399)
+(or (not x1042) (not x948) (not x56) x1397)
+(or (not x1399) x640)
+(or (not x1396) (not x1042) (not x948))
+(or (not x1366) (not x1220) x1398)
+(or (not x1397) (not x1040) (not x948) x55)
+(or (not x1395) x1398)
+(or (not x1040) (not x948) (not x55) x1397)
+(or (not x1398) x1395 x1220)
+(or (not x1396) (not x1040) (not x948))
+(or (not x1398) x1395 x1366)
+(or (not x1397) (not x1037) (not x948))
+(or (not x1362) (not x1218) x1395)
+(or (not x1037) (not x948) x1396)
+(or (not x1362) x1395)
+(or (not x1394) (not x1376) (not x1345) x1389 x1383)
+(or (not x1395) x1362 x1218)
+(or (not x1394) (not x1345) x1378 x1376)
+(or (not x1395) x1362)
+(or (not x1394) x1346 x1345)
+(or (not x1216) (not x1205) x1362)
+(or (not x1383) (not x1376) (not x1345) x1394)
+(or (not x1216) x1362)
+(or (not x1389) (not x1376) (not x1345) x1394)
+(or (not x1362) x1216)
+(or (not x1378) (not x1345) x1394)
+(or (not x1362) x1216 x1205)
+(or (not x1346) x1394)
+(or (not x1359) (not x1215) x1216)
+(or (not x1389) (not x1383))
+(or (not x1393) x1216)
+(or (not x1021) x1389 x1020 x1388)
+(or (not x1216) x1393 x1215)
+(or (not x1389) (not x1021) (not x1388) x1020)
+(or (not x1216) x1393 x1359)
+(or (not x1389) (not x1020) x1021 x1388)
+(or (not x1358) (not x1213) x1393)
+(or (not x1020) (not x1388) x1389 x1021)
+(or (not x1392) x1393)
+(or (not x1019) x1389 x1018 x1388)
+(or (not x1393) x1392 x1213)
+(or (not x1389) (not x1019) (not x1388) x1018)
+(or (not x1393) x1392 x1358)
+(or (not x1389) (not x1018) x1019 x1388)
+(or (not x1355) (not x1210) x1392)
+(or (not x1018) (not x1388) x1389 x1019)
+(or (not x1391) x1392)
+(or (not x1017) x1389 x1016 x1388)
+(or (not x1392) x1391 x1210)
+(or (not x1389) (not x1017) (not x1388) x1016)
+(or (not x1392) x1391 x1355)
+(or (not x1389) (not x1016) x1017 x1388)
+(or (not x639) x1391)
+(or (not x1016) (not x1388) x1389 x1017)
+(or (not x1391) x639)
+(or (not x1015) x1389 x1014 x1388)
+(or (not x1366) (not x1209) x1390)
+(or (not x1389) (not x1015) (not x1388) x1014)
+(or (not x1387) x1390)
+(or (not x1389) (not x1014) x1015 x1388)
+(or (not x1390) x1387 x1209)
+(or (not x1014) (not x1388) x1389 x1015)
+(or (not x1390) x1387 x1366)
+(or (not x1012) x1389 x1011 x1388)
+(or (not x1362) (not x1207) x1387)
+(or (not x1389) (not x1012) (not x1388) x1011)
+(or (not x1386) x1387)
+(or (not x1389) (not x1011) x1012 x1388)
+(or (not x1387) x1386 x1207)
+(or (not x1011) (not x1388) x1389 x1012)
+(or (not x1387) x1386 x1362)
+(or (not x1019) (not x1018) x1383 x1021 x1020)
+(or (not x1205) x1386)
+(or (not x1017) (not x1016) x1383 x1019 x1018)
+(or (not x1205) x1386)
+(or (not x1015) (not x1014) x1383 x1017 x1016)
+(or (not x1386) x1205)
+(or (not x1012) (not x1011) x1383 x1015 x1014)
+(or (not x1386) x1205)
+(or x1383 x1012 x1011)
+(or (not x1359) (not x1203) x1205)
+(or (not x1021) (not x1020) x1383)
+(or (not x1385) x1205)
+(or (not x1383) (not x1020) x1021)
+(or (not x1205) x1385 x1203)
+(or (not x1383) (not x1021) x1020)
+(or (not x1205) x1385 x1359)
+(or (not x1383) (not x1018) x1019)
+(or (not x1358) (not x1202) x1385)
+(or (not x1383) (not x1019) x1018)
+(or (not x1384) x1385)
+(or (not x1383) (not x1016) x1017)
+(or (not x1385) x1384 x1202)
+(or (not x1383) (not x1017) x1016)
+(or (not x1385) x1384 x1358)
+(or (not x1383) (not x1014) x1015)
+(or (not x1355) (not x1198) x1384)
+(or (not x1383) (not x1015) x1014)
+(or (not x1384) x1198)
+(or (not x1383) (not x1011) x1012)
+(or (not x1384) x1355)
+(or (not x1383) (not x1012) x1011)
+(or (not x1366) (not x1196) x1382)
+(or (not x52) x1378 x1373 x999)
+(or (not x1381) x1382)
+(or (not x1378) (not x999) (not x52) x1373)
+(or (not x1382) x1381 x1196)
+(or (not x1378) x1373 x999 x52)
+(or (not x1382) x1381 x1366)
+(or (not x999) x1378 x1373 x52)
+(or (not x1362) (not x1193) x1381)
+(or (not x1373) (not x50) x1378 x1371 x996)
+(or (not x1380) x1381)
+(or (not x1378) (not x1373) (not x996) (not x50) x1371)
+(or (not x1381) x1380 x1193)
+(or (not x1378) (not x1373) x1371 x996 x50)
+(or (not x1381) x1380 x1362)
+(or (not x1373) (not x996) x1378 x1371 x50)
+(or (not x1205) (not x1187) x1380)
+(or (not x1371) (not x48) x1378 x1369 x992)
+(or (not x1187) x1380)
+(or (not x1378) (not x1371) (not x992) (not x48) x1369)
+(or (not x1380) x1187)
+(or (not x1378) (not x1371) x1369 x992 x48)
+(or (not x1380) x1205 x1187)
+(or (not x1371) (not x992) x1378 x1369 x48)
+(or (not x1359) (not x1185) x1187)
+(or (not x1369) (not x46) x1378 x1368 x988)
+(or (not x1359) x1187)
+(or (not x1378) (not x1369) (not x988) (not x46) x1368)
+(or (not x1187) x1359 x1185)
+(or (not x1378) (not x1369) x1368 x988 x46)
+(or (not x1187) x1359)
+(or (not x1369) (not x988) x1378 x1368 x46)
+(or (not x1358) (not x1182) x1359)
+(or (not x1368) (not x44) x1378 x1364 x985)
+(or (not x1379) x1359)
+(or (not x1378) (not x1368) (not x985) (not x44) x1364)
+(or (not x1359) x1379 x1182)
+(or (not x1378) (not x1368) x1364 x985 x44)
+(or (not x1359) x1379 x1358)
+(or (not x1368) (not x985) x1378 x1364 x44)
+(or (not x1355) (not x1180) x1379)
+(or (not x1364) (not x149) x1378 x1363 x980)
+(or (not x1377) x1379)
+(or (not x1378) (not x1364) (not x980) (not x149) x1363)
+(or (not x1379) x1377 x1180)
+(or (not x1378) (not x1364) x1363 x980 x149)
+(or (not x1379) x1377 x1355)
+(or (not x1364) (not x980) x1378 x1363 x149)
+(or (not x638) x1377)
+(or (not x1378) (not x1376))
+(or (not x1377) x638)
+(or (not x1363) x1376)
+(or (not x1366) (not x1179) x1375)
+(or (not x1376) x1363)
+(or (not x1374) x1375)
+(or x1373 x1000 x999)
+(or (not x1375) x1374 x1179)
+(or (not x1000) (not x999) x1373)
+(or (not x1375) x1374 x1366)
+(or (not x1373) (not x999) x1000)
+(or (not x1362) (not x1177) x1374)
+(or (not x1373) (not x1000) x999)
+(or (not x1372) x1374)
+(or (not x1373) x1371 x997 x996)
+(or (not x1374) x1372 x1177)
+(or (not x1373) (not x997) (not x996) x1371)
+(or (not x1374) x1372 x1362)
+(or (not x1371) (not x996) x997)
+(or (not x1205) (not x1175) x1372)
+(or (not x1371) (not x997) x996)
+(or (not x1175) x1372)
+(or (not x1371) x1373)
+(or (not x1372) x1175)
+(or (not x1371) x1369 x993 x992)
+(or (not x1372) x1205 x1175)
+(or (not x1371) (not x993) (not x992) x1369)
+(or (not x1359) (not x1172) x1175)
+(or (not x1369) (not x992) x993)
+(or (not x1370) x1175)
+(or (not x1369) (not x993) x992)
+(or (not x1175) x1370 x1172)
+(or (not x1369) x1371)
+(or (not x1175) x1370 x1359)
+(or (not x1369) x1368 x989 x988)
+(or (not x1358) (not x1170) x1370)
+(or (not x1369) (not x989) (not x988) x1368)
+(or (not x1358) x1370)
+(or (not x1368) (not x988) x989)
+(or (not x1370) x1358 x1170)
+(or (not x1368) (not x989) x988)
+(or (not x1370) x1358)
+(or (not x1368) x1369)
+(or (not x1355) (not x1166) x1358)
+(or (not x1368) x1364 x986 x985)
+(or (not x1367) x1358)
+(or (not x1368) (not x986) (not x985) x1364)
+(or (not x1358) x1367 x1166)
+(or (not x1364) (not x985) x986)
+(or (not x1358) x1367 x1355)
+(or (not x1364) (not x986) x985)
+(or (not x637) x1367)
+(or (not x1364) x1368)
+(or (not x1367) x637)
+(or (not x1364) x1363 x981 x980)
+(or (not x1366) (not x1163) x1365)
+(or (not x1364) (not x981) (not x980) x1363)
+(or (not x1361) x1365)
+(or (not x1363) (not x980) x981)
+(or (not x1365) x1361 x1163)
+(or (not x1363) (not x981) x980)
+(or (not x1365) x1366 x1361)
+(or (not x1363) x1364)
+(or (not x1362) (not x1158) x1361)
+(or (not x1346) (not x959) (not x974))
+(or (not x1360) x1361)
+(or (not x959) (not x974) x1345)
+(or (not x1361) x1360 x1158)
+(or (not x1346) (not x959) (not x970) x95)
+(or (not x1361) x1362 x1360)
+(or (not x959) (not x970) (not x95) x1346)
+(or (not x1205) (not x1155) x1360)
+(or (not x1345) (not x959) (not x970))
+(or (not x1155) x1360)
+(or (not x1346) (not x959) (not x967) x94)
+(or (not x1360) x1155)
+(or (not x959) (not x967) (not x94) x1346)
+(or (not x1360) x1205 x1155)
+(or (not x1345) (not x959) (not x967))
+(or (not x1359) (not x1152) x1155)
+(or (not x1346) (not x959) (not x962) x92)
+(or (not x1357) x1155)
+(or (not x959) (not x962) (not x92) x1346)
+(or (not x1155) x1357 x1152)
+(or (not x1345) (not x959) (not x962))
+(or (not x1155) x1359 x1357)
+(or (not x1346) (not x959) (not x949) x91)
+(or (not x1358) (not x1149) x1357)
+(or (not x959) (not x949) (not x91) x1346)
+(or (not x1356) x1357)
+(or (not x1345) (not x959) (not x949))
+(or (not x1357) x1356 x1149)
+(or (not x1346) (not x957) (not x974) x89)
+(or (not x1357) x1358 x1356)
+(or (not x957) (not x974) (not x89) x1346)
+(or (not x1355) x1356)
+(or (not x1345) (not x957) (not x974))
+(or (not x1356) x1355)
+(or (not x1346) (not x957) (not x970))
+(or (not x1356) x1355)
+(or (not x957) (not x970) x1345)
+(or (not x636) x1355)
+(or (not x1346) (not x957) (not x967) x88)
+(or (not x1355) x636)
+(or (not x957) (not x967) (not x88) x1346)
+(or (not x1314) (not x1238) x1354)
+(or (not x1345) (not x957) (not x967))
+(or (not x1314) x1354)
+(or (not x1346) (not x957) (not x962) x87)
+(or (not x1354) x1314 x1238)
+(or (not x957) (not x962) (not x87) x1346)
+(or (not x1354) x1314)
+(or (not x1345) (not x957) (not x962))
+(or (not x1310) (not x1234) x1314)
+(or (not x1346) (not x957) (not x949) x86)
+(or (not x1353) x1314)
+(or (not x957) (not x949) (not x86) x1346)
+(or (not x1314) x1353 x1234)
+(or (not x1345) (not x957) (not x949))
+(or (not x1314) x1353 x1310)
+(or (not x1346) (not x956) (not x974) x82)
+(or (not x1307) (not x1231) x1353)
+(or (not x956) (not x974) (not x82) x1346)
+(or (not x1352) x1353)
+(or (not x1345) (not x956) (not x974))
+(or (not x1353) x1352 x1231)
+(or (not x1346) (not x956) (not x970) x81)
+(or (not x1353) x1352 x1307)
+(or (not x956) (not x970) (not x81) x1346)
+(or (not x1228) (not x1185) x1352)
+(or (not x1345) (not x956) (not x970))
+(or (not x1228) x1352)
+(or (not x1346) (not x956) (not x967))
+(or (not x1352) x1228)
+(or (not x956) (not x967) x1345)
+(or (not x1352) x1228 x1185)
+(or (not x1346) (not x956) (not x962) x79)
+(or (not x1301) (not x1224) x1228)
+(or (not x956) (not x962) (not x79) x1346)
+(or (not x1351) x1228)
+(or (not x1345) (not x956) (not x962))
+(or (not x1228) x1351 x1224)
+(or (not x1346) (not x956) (not x949) x77)
+(or (not x1228) x1351 x1301)
+(or (not x956) (not x949) (not x77) x1346)
+(or (not x1296) (not x1221) x1351)
+(or (not x1345) (not x956) (not x949))
+(or (not x1350) x1351)
+(or (not x1346) (not x954) (not x974) x73)
+(or (not x1351) x1350 x1221)
+(or (not x954) (not x974) (not x73) x1346)
+(or (not x1351) x1350 x1296)
+(or (not x1345) (not x954) (not x974))
+(or (not x635) x1350)
+(or (not x1346) (not x954) (not x970) x67)
+(or (not x1350) x635)
+(or (not x954) (not x970) (not x67) x1346)
+(or (not x1314) (not x1220) x1349)
+(or (not x1345) (not x954) (not x970))
+(or (not x1348) x1349)
+(or (not x1346) (not x954) (not x967) x66)
+(or (not x1349) x1348 x1220)
+(or (not x954) (not x967) (not x66) x1346)
+(or (not x1349) x1348 x1314)
+(or (not x1345) (not x954) (not x967))
+(or (not x1310) (not x1218) x1348)
+(or (not x1346) (not x954) (not x962))
+(or (not x1310) x1348)
+(or (not x954) (not x962) x1345)
+(or (not x1348) x1310 x1218)
+(or (not x1346) (not x954) (not x949) x65)
+(or (not x1348) x1310)
+(or (not x954) (not x949) (not x65) x1346)
+(or (not x1307) (not x1216) x1310)
+(or (not x1345) (not x954) (not x949))
+(or (not x1347) x1310)
+(or (not x1346) (not x948) (not x974) x58)
+(or (not x1310) x1347 x1216)
+(or (not x948) (not x974) (not x58) x1346)
+(or (not x1310) x1347 x1307)
+(or (not x1345) (not x948) (not x974))
+(or (not x1215) (not x1185) x1347)
+(or (not x1346) (not x948) (not x970) x57)
+(or (not x1215) x1347)
+(or (not x948) (not x970) (not x57) x1346)
+(or (not x1347) x1215)
+(or (not x1345) (not x948) (not x970))
+(or (not x1347) x1215 x1185)
+(or (not x1346) (not x948) (not x967) x56)
+(or (not x1301) (not x1213) x1215)
+(or (not x948) (not x967) (not x56) x1346)
+(or (not x1344) x1215)
+(or (not x1345) (not x948) (not x967))
+(or (not x1215) x1344 x1213)
+(or (not x1346) (not x948) (not x962) x55)
+(or (not x1215) x1344 x1301)
+(or (not x948) (not x962) (not x55) x1346)
+(or (not x1296) (not x1210) x1344)
+(or (not x1345) (not x948) (not x962))
+(or (not x1343) x1344)
+(or (not x1346) (not x948) (not x949))
+(or (not x1344) x1343 x1210)
+(or (not x948) (not x949) x1345)
+(or (not x1344) x1343 x1296)
+(or (not x1341) (not x1319) (not x1277) x1337 x1327)
+(or (not x634) x1343)
+(or (not x1341) (not x1277) x1320 x1319)
+(or (not x1343) x634)
+(or (not x1341) x1278 x1277)
+(or (not x1314) (not x1209) x1342)
+(or (not x1327) (not x1319) (not x1277) x1341)
+(or (not x1340) x1342)
+(or (not x1337) (not x1319) (not x1277) x1341)
+(or (not x1342) x1340 x1209)
+(or (not x1320) (not x1277) x1341)
+(or (not x1342) x1340 x1314)
+(or (not x1278) x1341)
+(or (not x1310) (not x1207) x1340)
+(or (not x1337) (not x1327))
+(or (not x1339) x1340)
+(or (not x1020) x1337 x1334 x1023)
+(or (not x1340) x1339 x1207)
+(or (not x1337) (not x1020) (not x1023) x1334)
+(or (not x1340) x1339 x1310)
+(or (not x1337) (not x1334) x1020 x1023)
+(or (not x1307) (not x1205) x1339)
+(or (not x1334) (not x1023) x1337 x1020)
+(or (not x1307) x1339)
+(or (not x1018) x1337 x1332 x1023)
+(or (not x1339) x1307 x1205)
+(or (not x1337) (not x1018) (not x1023) x1332)
+(or (not x1339) x1307)
+(or (not x1337) (not x1332) x1018 x1023)
+(or (not x1203) (not x1185) x1307)
+(or (not x1332) (not x1023) x1337 x1018)
+(or (not x1203) x1307)
+(or (not x1016) x1337 x1331 x1023)
+(or (not x1307) x1203)
+(or (not x1337) (not x1016) (not x1023) x1331)
+(or (not x1307) x1203 x1185)
+(or (not x1337) (not x1331) x1016 x1023)
+(or (not x1301) (not x1202) x1203)
+(or (not x1331) (not x1023) x1337 x1016)
+(or (not x1338) x1203)
+(or (not x1014) x1337 x1329 x1023)
+(or (not x1203) x1338 x1202)
+(or (not x1337) (not x1014) (not x1023) x1329)
+(or (not x1203) x1338 x1301)
+(or (not x1337) (not x1329) x1014 x1023)
+(or (not x1296) (not x1198) x1338)
+(or (not x1329) (not x1023) x1337 x1014)
+(or (not x1336) x1338)
+(or (not x1011) x1337 x1328 x1023)
+(or (not x1338) x1336 x1198)
+(or (not x1337) (not x1011) (not x1023) x1328)
+(or (not x1338) x1336 x1296)
+(or (not x1337) (not x1328) x1011 x1023)
+(or (not x633) x1336)
+(or (not x1328) (not x1023) x1337 x1011)
+(or (not x1336) x633)
+(or (not x1332) (not x1018) x1327 x1334 x1020)
+(or (not x1314) (not x1196) x1335)
+(or (not x1331) (not x1016) x1327 x1332 x1018)
+(or (not x1333) x1335)
+(or (not x1329) (not x1014) x1327 x1331 x1016)
+(or (not x1335) x1333 x1196)
+(or (not x1328) (not x1011) x1327 x1329 x1014)
+(or (not x1335) x1333 x1314)
+(or x1327 x1328 x1011)
+(or (not x1310) (not x1193) x1333)
+(or (not x1334) (not x1020) x1327)
+(or (not x1330) x1333)
+(or (not x1327) (not x1334) x1020)
+(or (not x1333) x1330 x1193)
+(or (not x1327) (not x1020) x1334)
+(or (not x1333) x1330 x1310)
+(or (not x1327) (not x1332) x1018)
+(or (not x1307) (not x1187) x1330)
+(or (not x1327) (not x1018) x1332)
+(or (not x1326) x1330)
+(or (not x1327) (not x1331) x1016)
+(or (not x1330) x1326 x1187)
+(or (not x1327) (not x1016) x1331)
+(or (not x1330) x1326 x1307)
+(or (not x1327) (not x1329) x1014)
+(or (not x1185) x1326)
+(or (not x1327) (not x1014) x1329)
+(or (not x1185) x1326)
+(or (not x1327) (not x1328) x1011)
+(or (not x1326) x1185)
+(or (not x1327) (not x1011) x1328)
+(or (not x1326) x1185)
+(or (not x52) x1320 x1315 x1318)
+(or (not x1301) (not x1182) x1185)
+(or (not x1320) (not x1318) (not x52) x1315)
+(or (not x1325) x1185)
+(or (not x1320) x1315 x1318 x52)
+(or (not x1185) x1325 x1182)
+(or (not x1318) x1320 x1315 x52)
+(or (not x1185) x1325 x1301)
+(or (not x1315) (not x50) x1320 x1311 x1316)
+(or (not x1296) (not x1180) x1325)
+(or (not x1320) (not x1315) (not x1316) (not x50) x1311)
+(or (not x1325) x1180)
+(or (not x1320) (not x1315) x1311 x1316 x50)
+(or (not x1325) x1296)
+(or (not x1315) (not x1316) x1320 x1311 x50)
+(or (not x1314) (not x1179) x1324)
+(or (not x1311) (not x48) x1320 x1305 x1312)
+(or (not x1323) x1324)
+(or (not x1320) (not x1311) (not x1312) (not x48) x1305)
+(or (not x1324) x1323 x1179)
+(or (not x1320) (not x1311) x1305 x1312 x48)
+(or (not x1324) x1323 x1314)
+(or (not x1311) (not x1312) x1320 x1305 x48)
+(or (not x1310) (not x1177) x1323)
+(or (not x1305) (not x46) x1320 x1302 x1308)
+(or (not x1322) x1323)
+(or (not x1320) (not x1305) (not x1308) (not x46) x1302)
+(or (not x1323) x1322 x1177)
+(or (not x1320) (not x1305) x1302 x1308 x46)
+(or (not x1323) x1322 x1310)
+(or (not x1305) (not x1308) x1320 x1302 x46)
+(or (not x1307) (not x1175) x1322)
+(or (not x1302) (not x44) x1320 x1299 x1303)
+(or (not x1321) x1322)
+(or (not x1320) (not x1302) (not x1303) (not x44) x1299)
+(or (not x1322) x1321 x1175)
+(or (not x1320) (not x1302) x1299 x1303 x44)
+(or (not x1322) x1321 x1307)
+(or (not x1302) (not x1303) x1320 x1299 x44)
+(or (not x1185) (not x1172) x1321)
+(or (not x1299) (not x149) x1320 x1298 x1300)
+(or (not x1172) x1321)
+(or (not x1320) (not x1299) (not x1300) (not x149) x1298)
+(or (not x1321) x1172)
+(or (not x1320) (not x1299) x1298 x1300 x149)
+(or (not x1321) x1185 x1172)
+(or (not x1299) (not x1300) x1320 x1298 x149)
+(or (not x1301) (not x1170) x1172)
+(or (not x1320) (not x1319))
+(or (not x1301) x1172)
+(or (not x1298) x1319)
+(or (not x1172) x1301 x1170)
+(or (not x1319) x1298)
+(or (not x1172) x1301)
+(or x1315 x1318 x999)
+(or (not x1296) (not x1166) x1301)
+(or (not x1318) (not x999) x1315)
+(or (not x1317) x1301)
+(or (not x1315) (not x1318) x999)
+(or (not x1301) x1317 x1166)
+(or (not x1315) (not x999) x1318)
+(or (not x1301) x1317 x1296)
+(or (not x1315) x1311 x1316 x996)
+(or (not x632) x1317)
+(or (not x1315) (not x1316) (not x996) x1311)
+(or (not x1317) x632)
+(or (not x1311) (not x1316) x996)
+(or (not x1314) (not x1163) x1313)
+(or (not x1311) (not x996) x1316)
+(or (not x1309) x1313)
+(or (not x1311) x1315)
+(or (not x1313) x1309 x1163)
+(or (not x1311) x1305 x1312 x992)
+(or (not x1313) x1314 x1309)
+(or (not x1311) (not x1312) (not x992) x1305)
+(or (not x1310) (not x1158) x1309)
+(or (not x1305) (not x1312) x992)
+(or (not x1306) x1309)
+(or (not x1305) (not x992) x1312)
+(or (not x1309) x1306 x1158)
+(or (not x1305) x1311)
+(or (not x1309) x1310 x1306)
+(or (not x1305) x1302 x1308 x988)
+(or (not x1307) (not x1155) x1306)
+(or (not x1305) (not x1308) (not x988) x1302)
+(or (not x1304) x1306)
+(or (not x1302) (not x1308) x988)
+(or (not x1306) x1304 x1155)
+(or (not x1302) (not x988) x1308)
+(or (not x1306) x1307 x1304)
+(or (not x1302) x1305)
+(or (not x1185) (not x1152) x1304)
+(or (not x1302) x1299 x1303 x985)
+(or (not x1152) x1304)
+(or (not x1302) (not x1303) (not x985) x1299)
+(or (not x1304) x1152)
+(or (not x1299) (not x1303) x985)
+(or (not x1304) x1185 x1152)
+(or (not x1299) (not x985) x1303)
+(or (not x1301) (not x1149) x1152)
+(or (not x1299) x1302)
+(or (not x1297) x1152)
+(or (not x1299) x1298 x1300 x980)
+(or (not x1152) x1297 x1149)
+(or (not x1299) (not x1300) (not x980) x1298)
+(or (not x1152) x1301 x1297)
+(or (not x1298) (not x1300) x980)
+(or (not x1296) x1297)
+(or (not x1298) (not x980) x1300)
+(or (not x1297) x1296)
+(or (not x1298) x1299)
+(or (not x1297) x1296)
+(or (not x1278) (not x1284) (not x974))
+(or (not x631) x1296)
+(or (not x1284) (not x974) x1277)
+(or (not x1296) x631)
+(or (not x1278) (not x1283) (not x974) x95)
+(or (not x1255) (not x1238) x1295)
+(or (not x1283) (not x974) (not x95) x1278)
+(or (not x1255) x1295)
+(or (not x1277) (not x1283) (not x974))
+(or (not x1295) x1255 x1238)
+(or (not x1278) (not x1281) (not x974) x94)
+(or (not x1295) x1255)
+(or (not x1281) (not x974) (not x94) x1278)
+(or (not x1253) (not x1234) x1255)
+(or (not x1277) (not x1281) (not x974))
+(or (not x1294) x1255)
+(or (not x1278) (not x1279) (not x974) x92)
+(or (not x1255) x1294 x1234)
+(or (not x1279) (not x974) (not x92) x1278)
+(or (not x1255) x1294 x1253)
+(or (not x1277) (not x1279) (not x974))
+(or (not x1249) (not x1231) x1294)
+(or (not x1278) (not x1276) (not x974) x91)
+(or (not x1293) x1294)
+(or (not x1276) (not x974) (not x91) x1278)
+(or (not x1294) x1293 x1231)
+(or (not x1277) (not x1276) (not x974))
+(or (not x1294) x1293 x1249)
+(or (not x1278) (not x1284) (not x970) x89)
+(or (not x1246) (not x1228) x1293)
+(or (not x1284) (not x970) (not x89) x1278)
+(or (not x1292) x1293)
+(or (not x1277) (not x1284) (not x970))
+(or (not x1293) x1292 x1228)
+(or (not x1278) (not x1283) (not x970))
+(or (not x1293) x1292 x1246)
+(or (not x1283) (not x970) x1277)
+(or (not x1224) (not x1170) x1292)
+(or (not x1278) (not x1281) (not x970) x88)
+(or (not x1224) x1292)
+(or (not x1281) (not x970) (not x88) x1278)
+(or (not x1292) x1224)
+(or (not x1277) (not x1281) (not x970))
+(or (not x1292) x1224 x1170)
+(or (not x1278) (not x1279) (not x970) x87)
+(or (not x1240) (not x1221) x1224)
+(or (not x1279) (not x970) (not x87) x1278)
+(or (not x1291) x1224)
+(or (not x1277) (not x1279) (not x970))
+(or (not x1224) x1291 x1221)
+(or (not x1278) (not x1276) (not x970) x86)
+(or (not x1224) x1291 x1240)
+(or (not x1276) (not x970) (not x86) x1278)
+(or (not x630) x1291)
+(or (not x1277) (not x1276) (not x970))
+(or (not x1291) x630)
+(or (not x1278) (not x1284) (not x967) x82)
+(or (not x1255) (not x1220) x1290)
+(or (not x1284) (not x967) (not x82) x1278)
+(or (not x1289) x1290)
+(or (not x1277) (not x1284) (not x967))
+(or (not x1290) x1289 x1220)
+(or (not x1278) (not x1283) (not x967) x81)
+(or (not x1290) x1289 x1255)
+(or (not x1283) (not x967) (not x81) x1278)
+(or (not x1253) (not x1218) x1289)
+(or (not x1277) (not x1283) (not x967))
+(or (not x1253) x1289)
+(or (not x1278) (not x1281) (not x967))
+(or (not x1289) x1253 x1218)
+(or (not x1281) (not x967) x1277)
+(or (not x1289) x1253)
+(or (not x1278) (not x1279) (not x967) x79)
+(or (not x1249) (not x1216) x1253)
+(or (not x1279) (not x967) (not x79) x1278)
+(or (not x1288) x1253)
+(or (not x1277) (not x1279) (not x967))
+(or (not x1253) x1288 x1216)
+(or (not x1278) (not x1276) (not x967) x77)
+(or (not x1253) x1288 x1249)
+(or (not x1276) (not x967) (not x77) x1278)
+(or (not x1246) (not x1215) x1288)
+(or (not x1277) (not x1276) (not x967))
+(or (not x1287) x1288)
+(or (not x1278) (not x1284) (not x962) x73)
+(or (not x1288) x1287 x1215)
+(or (not x1284) (not x962) (not x73) x1278)
+(or (not x1288) x1287 x1246)
+(or (not x1277) (not x1284) (not x962))
+(or (not x1213) (not x1170) x1287)
+(or (not x1278) (not x1283) (not x962) x67)
+(or (not x1213) x1287)
+(or (not x1283) (not x962) (not x67) x1278)
+(or (not x1287) x1213)
+(or (not x1277) (not x1283) (not x962))
+(or (not x1287) x1213 x1170)
+(or (not x1278) (not x1281) (not x962) x66)
+(or (not x1240) (not x1210) x1213)
+(or (not x1281) (not x962) (not x66) x1278)
+(or (not x1286) x1213)
+(or (not x1277) (not x1281) (not x962))
+(or (not x1213) x1286 x1210)
+(or (not x1278) (not x1279) (not x962))
+(or (not x1213) x1286 x1240)
+(or (not x1279) (not x962) x1277)
+(or (not x629) x1286)
+(or (not x1278) (not x1276) (not x962) x65)
+(or (not x1286) x629)
+(or (not x1276) (not x962) (not x65) x1278)
+(or (not x1255) (not x1209) x1285)
+(or (not x1277) (not x1276) (not x962))
+(or (not x1282) x1285)
+(or (not x1278) (not x1284) (not x949) x58)
+(or (not x1285) x1282 x1209)
+(or (not x1284) (not x949) (not x58) x1278)
+(or (not x1285) x1282 x1255)
+(or (not x1277) (not x1284) (not x949))
+(or (not x1253) (not x1207) x1282)
+(or (not x1278) (not x1283) (not x949) x57)
+(or (not x1280) x1282)
+(or (not x1283) (not x949) (not x57) x1278)
+(or (not x1282) x1280 x1207)
+(or (not x1277) (not x1283) (not x949))
+(or (not x1282) x1280 x1253)
+(or (not x1278) (not x1281) (not x949) x56)
+(or (not x1249) (not x1205) x1280)
+(or (not x1281) (not x949) (not x56) x1278)
+(or (not x1249) x1280)
+(or (not x1277) (not x1281) (not x949))
+(or (not x1280) x1249 x1205)
+(or (not x1278) (not x1279) (not x949) x55)
+(or (not x1280) x1249)
+(or (not x1279) (not x949) (not x55) x1278)
+(or (not x1246) (not x1203) x1249)
+(or (not x1277) (not x1279) (not x949))
+(or (not x1275) x1249)
+(or (not x1278) (not x1276) (not x949))
+(or (not x1249) x1275 x1203)
+(or (not x1276) (not x949) x1277)
+(or (not x1249) x1275 x1246)
+(or (not x1274) (not x1250) (not x1189) x1268 x1260)
+(or (not x1202) (not x1170) x1275)
+(or (not x1274) (not x1189) x1251 x1250)
+(or (not x1202) x1275)
+(or (not x1274) x1190 x1189)
+(or (not x1275) x1202)
+(or (not x1260) (not x1250) (not x1189) x1274)
+(or (not x1275) x1202 x1170)
+(or (not x1268) (not x1250) (not x1189) x1274)
+(or (not x1240) (not x1198) x1202)
+(or (not x1251) (not x1189) x1274)
+(or (not x1273) x1202)
+(or (not x1190) x1274)
+(or (not x1202) x1273 x1198)
+(or (not x1268) (not x1260))
+(or (not x1202) x1273 x1240)
+(or (not x1020) x1268 x1267 x1023)
+(or (not x626) x1273)
+(or (not x1268) (not x1020) (not x1023) x1267)
+(or (not x1273) x626)
+(or (not x1268) (not x1267) x1020 x1023)
+(or (not x1255) (not x1196) x1272)
+(or (not x1267) (not x1023) x1268 x1020)
+(or (not x1271) x1272)
+(or (not x1018) x1268 x1265 x1023)
+(or (not x1272) x1271 x1196)
+(or (not x1268) (not x1018) (not x1023) x1265)
+(or (not x1272) x1271 x1255)
+(or (not x1268) (not x1265) x1018 x1023)
+(or (not x1253) (not x1193) x1271)
+(or (not x1265) (not x1023) x1268 x1018)
+(or (not x1270) x1271)
+(or (not x1016) x1268 x1264 x1023)
+(or (not x1271) x1270 x1193)
+(or (not x1268) (not x1016) (not x1023) x1264)
+(or (not x1271) x1270 x1253)
+(or (not x1268) (not x1264) x1016 x1023)
+(or (not x1249) (not x1187) x1270)
+(or (not x1264) (not x1023) x1268 x1016)
+(or (not x1269) x1270)
+(or (not x1014) x1268 x1262 x1023)
+(or (not x1270) x1269 x1187)
+(or (not x1268) (not x1014) (not x1023) x1262)
+(or (not x1270) x1269 x1249)
+(or (not x1268) (not x1262) x1014 x1023)
+(or (not x1246) (not x1185) x1269)
+(or (not x1262) (not x1023) x1268 x1014)
+(or (not x1246) x1269)
+(or (not x1011) x1268 x1261 x1023)
+(or (not x1269) x1246 x1185)
+(or (not x1268) (not x1011) (not x1023) x1261)
+(or (not x1269) x1246)
+(or (not x1268) (not x1261) x1011 x1023)
+(or (not x1182) (not x1170) x1246)
+(or (not x1261) (not x1023) x1268 x1011)
+(or (not x1182) x1246)
+(or (not x1265) (not x1018) x1260 x1267 x1020)
+(or (not x1246) x1182)
+(or (not x1264) (not x1016) x1260 x1265 x1018)
+(or (not x1246) x1182 x1170)
+(or (not x1262) (not x1014) x1260 x1264 x1016)
+(or (not x1240) (not x1180) x1182)
+(or (not x1261) (not x1011) x1260 x1262 x1014)
+(or (not x1266) x1182)
+(or x1260 x1261 x1011)
+(or (not x1182) x1266 x1180)
+(or (not x1267) (not x1020) x1260)
+(or (not x1182) x1266 x1240)
+(or (not x1260) (not x1267) x1020)
+(or (not x625) x1266)
+(or (not x1260) (not x1020) x1267)
+(or (not x1266) x625)
+(or (not x1260) (not x1265) x1018)
+(or (not x1255) (not x1179) x1263)
+(or (not x1260) (not x1018) x1265)
+(or (not x1259) x1263)
+(or (not x1260) (not x1264) x1016)
+(or (not x1263) x1259 x1179)
+(or (not x1260) (not x1016) x1264)
+(or (not x1263) x1259 x1255)
+(or (not x1260) (not x1262) x1014)
+(or (not x1253) (not x1177) x1259)
+(or (not x1260) (not x1014) x1262)
+(or (not x1258) x1259)
+(or (not x1260) (not x1261) x1011)
+(or (not x1259) x1258 x1177)
+(or (not x1260) (not x1011) x1261)
+(or (not x1259) x1258 x1253)
+(or (not x52) x1251 x1242 x1247)
+(or (not x1249) (not x1175) x1258)
+(or (not x1251) (not x1247) (not x52) x1242)
+(or (not x1257) x1258)
+(or (not x1251) x1242 x1247 x52)
+(or (not x1258) x1257 x1175)
+(or (not x1247) x1251 x1242 x52)
+(or (not x1258) x1257 x1249)
+(or (not x1242) (not x50) x1251 x1239 x1244)
+(or (not x1246) (not x1172) x1257)
+(or (not x1251) (not x1242) (not x1244) (not x50) x1239)
+(or (not x1256) x1257)
+(or (not x1251) (not x1242) x1239 x1244 x50)
+(or (not x1257) x1256 x1172)
+(or (not x1242) (not x1244) x1251 x1239 x50)
+(or (not x1257) x1256 x1246)
+(or (not x1239) (not x48) x1251 x1235 x1241)
+(or (not x1170) x1256)
+(or (not x1251) (not x1239) (not x1241) (not x48) x1235)
+(or (not x1170) x1256)
+(or (not x1251) (not x1239) x1235 x1241 x48)
+(or (not x1256) x1170)
+(or (not x1239) (not x1241) x1251 x1235 x48)
+(or (not x1256) x1170)
+(or (not x1235) (not x46) x1251 x1232 x1236)
+(or (not x1240) (not x1166) x1170)
+(or (not x1251) (not x1235) (not x1236) (not x46) x1232)
+(or (not x1170) x1166)
+(or (not x1251) (not x1235) x1232 x1236 x46)
+(or (not x1170) x1240)
+(or (not x1235) (not x1236) x1251 x1232 x46)
+(or (not x1255) (not x1163) x1254)
+(or (not x1232) (not x44) x1251 x1227 x1233)
+(or (not x1252) x1254)
+(or (not x1251) (not x1232) (not x1233) (not x44) x1227)
+(or (not x1254) x1252 x1163)
+(or (not x1251) (not x1232) x1227 x1233 x44)
+(or (not x1254) x1255 x1252)
+(or (not x1232) (not x1233) x1251 x1227 x44)
+(or (not x1253) (not x1158) x1252)
+(or (not x1227) (not x149) x1251 x1226 x1229)
+(or (not x1248) x1252)
+(or (not x1251) (not x1227) (not x1229) (not x149) x1226)
+(or (not x1252) x1248 x1158)
+(or (not x1251) (not x1227) x1226 x1229 x149)
+(or (not x1252) x1253 x1248)
+(or (not x1227) (not x1229) x1251 x1226 x149)
+(or (not x1249) (not x1155) x1248)
+(or (not x1251) (not x1250))
+(or (not x1245) x1248)
+(or (not x1226) x1250)
+(or (not x1248) x1245 x1155)
+(or (not x1250) x1226)
+(or (not x1248) x1249 x1245)
+(or x1242 x1247 x999)
+(or (not x1246) (not x1152) x1245)
+(or (not x1247) (not x999) x1242)
+(or (not x1243) x1245)
+(or (not x1242) (not x1247) x999)
+(or (not x1245) x1243 x1152)
+(or (not x1242) (not x999) x1247)
+(or (not x1245) x1246 x1243)
+(or (not x1242) x1239 x1244 x996)
+(or (not x1170) (not x1149) x1243)
+(or (not x1242) (not x1244) (not x996) x1239)
+(or (not x1149) x1243)
+(or (not x1239) (not x1244) x996)
+(or (not x1243) x1149)
+(or (not x1239) (not x996) x1244)
+(or (not x1243) x1170 x1149)
+(or (not x1239) x1242)
+(or (not x1240) x1149)
+(or (not x1239) x1235 x1241 x992)
+(or (not x1149) x1240)
+(or (not x1239) (not x1241) (not x992) x1235)
+(or (not x1149) x1240)
+(or (not x1235) (not x1241) x992)
+(or (not x623) x1240)
+(or (not x1235) (not x992) x1241)
+(or (not x1240) x623)
+(or (not x1235) x1239)
+(or (not x1238) (not x1162) x1237)
+(or (not x1235) x1232 x1236 x988)
+(or (not x1162) x1237)
+(or (not x1235) (not x1236) (not x988) x1232)
+(or (not x1237) x1238 x1162)
+(or (not x1232) (not x1236) x988)
+(or (not x1237) x1162)
+(or (not x1232) (not x988) x1236)
+(or (not x1234) (not x1157) x1162)
+(or (not x1232) x1235)
+(or (not x1230) x1162)
+(or (not x1232) x1227 x1233 x985)
+(or (not x1162) x1234 x1230)
+(or (not x1232) (not x1233) (not x985) x1227)
+(or (not x1162) x1230 x1157)
+(or (not x1227) (not x1233) x985)
+(or (not x1231) (not x1154) x1230)
+(or (not x1227) (not x985) x1233)
+(or (not x1225) x1230)
+(or (not x1227) x1232)
+(or (not x1230) x1231 x1225)
+(or (not x1227) x1226 x1229 x980)
+(or (not x1230) x1225 x1154)
+(or (not x1227) (not x1229) (not x980) x1226)
+(or (not x1228) (not x1151) x1225)
+(or (not x1226) (not x1229) x980)
+(or (not x1223) x1225)
+(or (not x1226) (not x980) x1229)
+(or (not x1225) x1228 x1223)
+(or (not x1226) x1227)
+(or (not x1225) x1223 x1151)
+(or (not x1190) (not x1199) (not x974))
+(or (not x1224) (not x1148) x1223)
+(or (not x1199) (not x974) x1189)
+(or (not x1222) x1223)
+(or (not x1190) (not x1197) (not x974) x95)
+(or (not x1223) x1224 x1222)
+(or (not x1197) (not x974) (not x95) x1190)
+(or (not x1223) x1222 x1148)
+(or (not x1189) (not x1197) (not x974))
+(or (not x1221) x1222)
+(or (not x1190) (not x1194) (not x974) x94)
+(or (not x1222) x1221)
+(or (not x1194) (not x974) (not x94) x1190)
+(or (not x1222) x1221)
+(or (not x1189) (not x1194) (not x974))
+(or (not x622) x1221)
+(or (not x1190) (not x1191) (not x974) x92)
+(or (not x1221) x622)
+(or (not x1191) (not x974) (not x92) x1190)
+(or (not x1220) (not x1162) x1219)
+(or (not x1189) (not x1191) (not x974))
+(or (not x1217) x1219)
+(or (not x1190) (not x1188) (not x974) x91)
+(or (not x1219) x1220 x1217)
+(or (not x1188) (not x974) (not x91) x1190)
+(or (not x1219) x1217 x1162)
+(or (not x1189) (not x1188) (not x974))
+(or (not x1218) (not x1157) x1217)
+(or (not x1190) (not x1199) (not x970) x89)
+(or (not x1157) x1217)
+(or (not x1199) (not x970) (not x89) x1190)
+(or (not x1217) x1218 x1157)
+(or (not x1189) (not x1199) (not x970))
+(or (not x1217) x1157)
+(or (not x1190) (not x1197) (not x970))
+(or (not x1216) (not x1154) x1157)
+(or (not x1197) (not x970) x1189)
+(or (not x1214) x1157)
+(or (not x1190) (not x1194) (not x970) x88)
+(or (not x1157) x1216 x1214)
+(or (not x1194) (not x970) (not x88) x1190)
+(or (not x1157) x1214 x1154)
+(or (not x1189) (not x1194) (not x970))
+(or (not x1215) (not x1151) x1214)
+(or (not x1190) (not x1191) (not x970) x87)
+(or (not x1212) x1214)
+(or (not x1191) (not x970) (not x87) x1190)
+(or (not x1214) x1215 x1212)
+(or (not x1189) (not x1191) (not x970))
+(or (not x1214) x1212 x1151)
+(or (not x1190) (not x1188) (not x970) x86)
+(or (not x1213) (not x1148) x1212)
+(or (not x1188) (not x970) (not x86) x1190)
+(or (not x1211) x1212)
+(or (not x1189) (not x1188) (not x970))
+(or (not x1212) x1213 x1211)
+(or (not x1190) (not x1199) (not x967) x82)
+(or (not x1212) x1211 x1148)
+(or (not x1199) (not x967) (not x82) x1190)
+(or (not x1210) x1211)
+(or (not x1189) (not x1199) (not x967))
+(or (not x1211) x1210)
+(or (not x1190) (not x1197) (not x967) x81)
+(or (not x1211) x1210)
+(or (not x1197) (not x967) (not x81) x1190)
+(or (not x621) x1210)
+(or (not x1189) (not x1197) (not x967))
+(or (not x1210) x621)
+(or (not x1190) (not x1194) (not x967))
+(or (not x1209) (not x1162) x1208)
+(or (not x1194) (not x967) x1189)
+(or (not x1206) x1208)
+(or (not x1190) (not x1191) (not x967) x79)
+(or (not x1208) x1209 x1206)
+(or (not x1191) (not x967) (not x79) x1190)
+(or (not x1208) x1206 x1162)
+(or (not x1189) (not x1191) (not x967))
+(or (not x1207) (not x1157) x1206)
+(or (not x1190) (not x1188) (not x967) x77)
+(or (not x1204) x1206)
+(or (not x1188) (not x967) (not x77) x1190)
+(or (not x1206) x1207 x1204)
+(or (not x1189) (not x1188) (not x967))
+(or (not x1206) x1204 x1157)
+(or (not x1190) (not x1199) (not x962) x73)
+(or (not x1205) (not x1154) x1204)
+(or (not x1199) (not x962) (not x73) x1190)
+(or (not x1154) x1204)
+(or (not x1189) (not x1199) (not x962))
+(or (not x1204) x1205 x1154)
+(or (not x1190) (not x1197) (not x962) x67)
+(or (not x1204) x1154)
+(or (not x1197) (not x962) (not x67) x1190)
+(or (not x1203) (not x1151) x1154)
+(or (not x1189) (not x1197) (not x962))
+(or (not x1201) x1154)
+(or (not x1190) (not x1194) (not x962) x66)
+(or (not x1154) x1203 x1201)
+(or (not x1194) (not x962) (not x66) x1190)
+(or (not x1154) x1201 x1151)
+(or (not x1189) (not x1194) (not x962))
+(or (not x1202) (not x1148) x1201)
+(or (not x1190) (not x1191) (not x962))
+(or (not x1200) x1201)
+(or (not x1191) (not x962) x1189)
+(or (not x1201) x1202 x1200)
+(or (not x1190) (not x1188) (not x962) x65)
+(or (not x1201) x1200 x1148)
+(or (not x1188) (not x962) (not x65) x1190)
+(or (not x1198) x1200)
+(or (not x1189) (not x1188) (not x962))
+(or (not x1200) x1198)
+(or (not x1190) (not x1199) (not x949) x58)
+(or (not x1200) x1198)
+(or (not x1199) (not x949) (not x58) x1190)
+(or (not x620) x1198)
+(or (not x1189) (not x1199) (not x949))
+(or (not x1198) x620)
+(or (not x1190) (not x1197) (not x949) x57)
+(or (not x1196) (not x1162) x1195)
+(or (not x1197) (not x949) (not x57) x1190)
+(or (not x1192) x1195)
+(or (not x1189) (not x1197) (not x949))
+(or (not x1195) x1196 x1192)
+(or (not x1190) (not x1194) (not x949) x56)
+(or (not x1195) x1192 x1162)
+(or (not x1194) (not x949) (not x56) x1190)
+(or (not x1193) (not x1157) x1192)
+(or (not x1189) (not x1194) (not x949))
+(or (not x1186) x1192)
+(or (not x1190) (not x1191) (not x949) x55)
+(or (not x1192) x1193 x1186)
+(or (not x1191) (not x949) (not x55) x1190)
+(or (not x1192) x1186 x1157)
+(or (not x1189) (not x1191) (not x949))
+(or (not x1187) (not x1154) x1186)
+(or (not x1190) (not x1188) (not x949))
+(or (not x1184) x1186)
+(or (not x1188) (not x949) x1189)
+(or (not x1186) x1187 x1184)
+(or (not x1183) (not x1143) (not x1106) x1173 x1159)
+(or (not x1186) x1184 x1154)
+(or (not x1183) (not x1106) x1145 x1143)
+(or (not x1185) (not x1151) x1184)
+(or (not x1183) x1107 x1106)
+(or (not x1151) x1184)
+(or (not x1159) (not x1143) (not x1106) x1183)
+(or (not x1184) x1185 x1151)
+(or (not x1173) (not x1143) (not x1106) x1183)
+(or (not x1184) x1151)
+(or (not x1145) (not x1106) x1183)
+(or (not x1182) (not x1148) x1151)
+(or (not x1107) x1183)
+(or (not x1181) x1151)
+(or (not x1173) (not x1159))
+(or (not x1151) x1182 x1181)
+(or (not x1020) x1173 x1168 x1023)
+(or (not x1151) x1181 x1148)
+(or (not x1173) (not x1020) (not x1023) x1168)
+(or (not x1180) x1181)
+(or (not x1173) (not x1168) x1020 x1023)
+(or (not x1181) x1180)
+(or (not x1168) (not x1023) x1173 x1020)
+(or (not x1181) x1180)
+(or (not x1018) x1173 x1167 x1023)
+(or (not x619) x1180)
+(or (not x1173) (not x1018) (not x1023) x1167)
+(or (not x1180) x619)
+(or (not x1173) (not x1167) x1018 x1023)
+(or (not x1179) (not x1162) x1178)
+(or (not x1167) (not x1023) x1173 x1018)
+(or (not x1176) x1178)
+(or (not x1016) x1173 x1165 x1023)
+(or (not x1178) x1179 x1176)
+(or (not x1173) (not x1016) (not x1023) x1165)
+(or (not x1178) x1176 x1162)
+(or (not x1173) (not x1165) x1016 x1023)
+(or (not x1177) (not x1157) x1176)
+(or (not x1165) (not x1023) x1173 x1016)
+(or (not x1174) x1176)
+(or (not x1014) x1173 x1164 x1023)
+(or (not x1176) x1177 x1174)
+(or (not x1173) (not x1014) (not x1023) x1164)
+(or (not x1176) x1174 x1157)
+(or (not x1173) (not x1164) x1014 x1023)
+(or (not x1175) (not x1154) x1174)
+(or (not x1164) (not x1023) x1173 x1014)
+(or (not x1171) x1174)
+(or (not x1011) x1173 x1160 x1023)
+(or (not x1174) x1175 x1171)
+(or (not x1173) (not x1011) (not x1023) x1160)
+(or (not x1174) x1171 x1154)
+(or (not x1173) (not x1160) x1011 x1023)
+(or (not x1172) (not x1151) x1171)
+(or (not x1160) (not x1023) x1173 x1011)
+(or (not x1169) x1171)
+(or (not x1167) (not x1018) x1159 x1168 x1020)
+(or (not x1171) x1172 x1169)
+(or (not x1165) (not x1016) x1159 x1167 x1018)
+(or (not x1171) x1169 x1151)
+(or (not x1164) (not x1014) x1159 x1165 x1016)
+(or (not x1170) (not x1148) x1169)
+(or (not x1160) (not x1011) x1159 x1164 x1014)
+(or (not x1148) x1169)
+(or x1159 x1160 x1011)
+(or (not x1169) x1170 x1148)
+(or (not x1168) (not x1020) x1159)
+(or (not x1169) x1148)
+(or (not x1159) (not x1168) x1020)
+(or (not x1166) x1148)
+(or (not x1159) (not x1020) x1168)
+(or (not x1148) x1166)
+(or (not x1159) (not x1167) x1018)
+(or (not x1148) x1166)
+(or (not x1159) (not x1018) x1167)
+(or (not x616) x1166)
+(or (not x1159) (not x1165) x1016)
+(or (not x1166) x616)
+(or (not x1159) (not x1016) x1165)
+(or (not x1163) (not x1162) x1161)
+(or (not x1159) (not x1164) x1014)
+(or (not x1156) x1161)
+(or (not x1159) (not x1014) x1164)
+(or (not x1161) x1163 x1156)
+(or (not x1159) (not x1160) x1011)
+(or (not x1161) x1162 x1156)
+(or (not x1159) (not x1011) x1160)
+(or (not x1158) (not x1157) x1156)
+(or (not x52) x1145 x1138 x1141)
+(or (not x1153) x1156)
+(or (not x1145) (not x1141) (not x52) x1138)
+(or (not x1156) x1158 x1153)
+(or (not x1145) x1138 x1141 x52)
+(or (not x1156) x1157 x1153)
+(or (not x1141) x1145 x1138 x52)
+(or (not x1155) (not x1154) x1153)
+(or (not x1138) (not x50) x1145 x1135 x1139)
+(or (not x1150) x1153)
+(or (not x1145) (not x1138) (not x1139) (not x50) x1135)
+(or (not x1153) x1155 x1150)
+(or (not x1145) (not x1138) x1135 x1139 x50)
+(or (not x1153) x1154 x1150)
+(or (not x1138) (not x1139) x1145 x1135 x50)
+(or (not x1152) (not x1151) x1150)
+(or (not x1135) (not x48) x1145 x1132 x1136)
+(or (not x1147) x1150)
+(or (not x1145) (not x1135) (not x1136) (not x48) x1132)
+(or (not x1150) x1152 x1147)
+(or (not x1145) (not x1135) x1132 x1136 x48)
+(or (not x1150) x1151 x1147)
+(or (not x1135) (not x1136) x1145 x1132 x48)
+(or (not x1149) (not x1148) x1147)
+(or (not x1132) (not x46) x1145 x1130 x1133)
+(or (not x1147) x1149)
+(or (not x1145) (not x1132) (not x1133) (not x46) x1130)
+(or (not x1147) x1148)
+(or (not x1145) (not x1132) x1130 x1133 x46)
+(or (not x816) x1146)
+(or (not x1132) (not x1133) x1145 x1130 x46)
+(or (not x816) x1146)
+(or (not x1130) (not x44) x1145 x1127 x1131)
+(or (not x1146) x816)
+(or (not x1145) (not x1130) (not x1131) (not x44) x1127)
+(or (not x1146) x816)
+(or (not x1145) (not x1130) x1127 x1131 x44)
+(or (not x1098) (not x814) x816)
+(or (not x1130) (not x1131) x1145 x1127 x44)
+(or (not x1144) x816)
+(or (not x1127) (not x149) x1145 x1126 x1128)
+(or (not x816) x1144 x814)
+(or (not x1145) (not x1127) (not x1128) (not x149) x1126)
+(or (not x816) x1144 x1098)
+(or (not x1145) (not x1127) x1126 x1128 x149)
+(or (not x1097) (not x812) x1144)
+(or (not x1127) (not x1128) x1145 x1126 x149)
+(or (not x1142) x1144)
+(or (not x1145) (not x1143))
+(or (not x1144) x1142 x812)
+(or (not x1126) x1143)
+(or (not x1144) x1142 x1097)
+(or (not x1143) x1126)
+(or (not x1094) (not x810) x1142)
+(or x1138 x1141 x999)
+(or (not x1140) x1142)
+(or (not x1141) (not x999) x1138)
+(or (not x1142) x1140 x810)
+(or (not x1138) (not x1141) x999)
+(or (not x1142) x1140 x1094)
+(or (not x1138) (not x999) x1141)
+(or (not x1092) (not x808) x1140)
+(or (not x1138) x1135 x1139 x996)
+(or (not x1137) x1140)
+(or (not x1138) (not x1139) (not x996) x1135)
+(or (not x1140) x1137 x808)
+(or (not x1135) (not x1139) x996)
+(or (not x1140) x1137 x1092)
+(or (not x1135) (not x996) x1139)
+(or (not x1086) (not x805) x1137)
+(or (not x1135) x1138)
+(or (not x1137) x805)
+(or (not x1135) x1132 x1136 x992)
+(or (not x1137) x1086)
+(or (not x1135) (not x1136) (not x992) x1132)
+(or (not x816) (not x804) x1134)
+(or (not x1132) (not x1136) x992)
+(or (not x804) x1134)
+(or (not x1132) (not x992) x1136)
+(or (not x1134) x804)
+(or (not x1132) x1135)
+(or (not x1134) x816 x804)
+(or (not x1132) x1130 x1133 x988)
+(or (not x1098) (not x802) x804)
+(or (not x1132) (not x1133) (not x988) x1130)
+(or (not x1098) x804)
+(or (not x1130) (not x1133) x988)
+(or (not x804) x1098 x802)
+(or (not x1130) (not x988) x1133)
+(or (not x804) x1098)
+(or (not x1130) x1132)
+(or (not x1097) (not x798) x1098)
+(or (not x1130) x1127 x1131 x985)
+(or (not x1129) x1098)
+(or (not x1130) (not x1131) (not x985) x1127)
+(or (not x1098) x1129 x798)
+(or (not x1127) (not x1131) x985)
+(or (not x1098) x1129 x1097)
+(or (not x1127) (not x985) x1131)
+(or (not x1094) (not x797) x1129)
+(or (not x1127) x1130)
+(or (not x1125) x1129)
+(or (not x1127) x1126 x1128 x980)
+(or (not x1129) x1125 x797)
+(or (not x1127) (not x1128) (not x980) x1126)
+(or (not x1129) x1125 x1094)
+(or (not x1126) (not x1128) x980)
+(or (not x1092) (not x794) x1125)
+(or (not x1126) (not x980) x1128)
+(or (not x1124) x1125)
+(or (not x1126) x1127)
+(or (not x1125) x1124 x794)
+(or (not x1107) (not x1113) (not x974))
+(or (not x1125) x1124 x1092)
+(or (not x1113) (not x974) x1106)
+(or (not x1086) (not x790) x1124)
+(or (not x1107) (not x1111) (not x974) x95)
+(or (not x1123) x1124)
+(or (not x1111) (not x974) (not x95) x1107)
+(or (not x1124) x1123 x790)
+(or (not x1106) (not x1111) (not x974))
+(or (not x1124) x1123 x1086)
+(or (not x1107) (not x1109) (not x974) x94)
+(or (not x615) x1123)
+(or (not x1109) (not x974) (not x94) x1107)
+(or (not x1123) x615)
+(or (not x1106) (not x1109) (not x974))
+(or (not x816) (not x789) x1122)
+(or (not x1107) (not x1108) (not x974) x92)
+(or (not x789) x1122)
+(or (not x1108) (not x974) (not x92) x1107)
+(or (not x1122) x789)
+(or (not x1106) (not x1108) (not x974))
+(or (not x1122) x816 x789)
+(or (not x1107) (not x1105) (not x974) x91)
+(or (not x1098) (not x786) x789)
+(or (not x1105) (not x974) (not x91) x1107)
+(or (not x1121) x789)
+(or (not x1106) (not x1105) (not x974))
+(or (not x789) x1121 x786)
+(or (not x1107) (not x1113) (not x970) x89)
+(or (not x789) x1121 x1098)
+(or (not x1113) (not x970) (not x89) x1107)
+(or (not x1097) (not x783) x1121)
+(or (not x1106) (not x1113) (not x970))
+(or (not x1097) x1121)
+(or (not x1107) (not x1111) (not x970))
+(or (not x1121) x1097 x783)
+(or (not x1111) (not x970) x1106)
+(or (not x1121) x1097)
+(or (not x1107) (not x1109) (not x970) x88)
+(or (not x1094) (not x779) x1097)
+(or (not x1109) (not x970) (not x88) x1107)
+(or (not x1120) x1097)
+(or (not x1106) (not x1109) (not x970))
+(or (not x1097) x1120 x779)
+(or (not x1107) (not x1108) (not x970) x87)
+(or (not x1097) x1120 x1094)
+(or (not x1108) (not x970) (not x87) x1107)
+(or (not x1092) (not x778) x1120)
+(or (not x1106) (not x1108) (not x970))
+(or (not x1119) x1120)
+(or (not x1107) (not x1105) (not x970) x86)
+(or (not x1120) x1119 x778)
+(or (not x1105) (not x970) (not x86) x1107)
+(or (not x1120) x1119 x1092)
+(or (not x1106) (not x1105) (not x970))
+(or (not x1086) (not x775) x1119)
+(or (not x1107) (not x1113) (not x967) x82)
+(or (not x1118) x1119)
+(or (not x1113) (not x967) (not x82) x1107)
+(or (not x1119) x1118 x775)
+(or (not x1106) (not x1113) (not x967))
+(or (not x1119) x1118 x1086)
+(or (not x1107) (not x1111) (not x967) x81)
+(or (not x614) x1118)
+(or (not x1111) (not x967) (not x81) x1107)
+(or (not x1118) x614)
+(or (not x1106) (not x1111) (not x967))
+(or (not x816) (not x774) x1117)
+(or (not x1107) (not x1109) (not x967))
+(or (not x774) x1117)
+(or (not x1109) (not x967) x1106)
+(or (not x1117) x774)
+(or (not x1107) (not x1108) (not x967) x79)
+(or (not x1117) x816 x774)
+(or (not x1108) (not x967) (not x79) x1107)
+(or (not x1098) (not x772) x774)
+(or (not x1106) (not x1108) (not x967))
+(or (not x1116) x774)
+(or (not x1107) (not x1105) (not x967) x77)
+(or (not x774) x1116 x772)
+(or (not x1105) (not x967) (not x77) x1107)
+(or (not x774) x1116 x1098)
+(or (not x1106) (not x1105) (not x967))
+(or (not x1097) (not x770) x1116)
+(or (not x1107) (not x1113) (not x962) x73)
+(or (not x1115) x1116)
+(or (not x1113) (not x962) (not x73) x1107)
+(or (not x1116) x1115 x770)
+(or (not x1106) (not x1113) (not x962))
+(or (not x1116) x1115 x1097)
+(or (not x1107) (not x1111) (not x962) x67)
+(or (not x1094) (not x768) x1115)
+(or (not x1111) (not x962) (not x67) x1107)
+(or (not x1094) x1115)
+(or (not x1106) (not x1111) (not x962))
+(or (not x1115) x1094 x768)
+(or (not x1107) (not x1109) (not x962) x66)
+(or (not x1115) x1094)
+(or (not x1109) (not x962) (not x66) x1107)
+(or (not x1092) (not x766) x1094)
+(or (not x1106) (not x1109) (not x962))
+(or (not x1114) x1094)
+(or (not x1107) (not x1108) (not x962))
+(or (not x1094) x1114 x766)
+(or (not x1108) (not x962) x1106)
+(or (not x1094) x1114 x1092)
+(or (not x1107) (not x1105) (not x962) x65)
+(or (not x1086) (not x764) x1114)
+(or (not x1105) (not x962) (not x65) x1107)
+(or (not x1112) x1114)
+(or (not x1106) (not x1105) (not x962))
+(or (not x1114) x1112 x764)
+(or (not x1107) (not x1113) (not x949) x58)
+(or (not x1114) x1112 x1086)
+(or (not x1113) (not x949) (not x58) x1107)
+(or (not x613) x1112)
+(or (not x1106) (not x1113) (not x949))
+(or (not x1112) x613)
+(or (not x1107) (not x1111) (not x949) x57)
+(or (not x816) (not x763) x1110)
+(or (not x1111) (not x949) (not x57) x1107)
+(or (not x763) x1110)
+(or (not x1106) (not x1111) (not x949))
+(or (not x1110) x763)
+(or (not x1107) (not x1109) (not x949) x56)
+(or (not x1110) x816 x763)
+(or (not x1109) (not x949) (not x56) x1107)
+(or (not x1098) (not x761) x763)
+(or (not x1106) (not x1109) (not x949))
+(or (not x1104) x763)
+(or (not x1107) (not x1108) (not x949) x55)
+(or (not x763) x1104 x761)
+(or (not x1108) (not x949) (not x55) x1107)
+(or (not x763) x1104 x1098)
+(or (not x1106) (not x1108) (not x949))
+(or (not x1097) (not x759) x1104)
+(or (not x1107) (not x1105) (not x949))
+(or (not x1103) x1104)
+(or (not x1105) (not x949) x1106)
+(or (not x1104) x1103 x759)
+(or (not x1102) (not x1075) (not x1038) x1095 x1083)
+(or (not x1104) x1103 x1097)
+(or (not x1102) (not x1038) x1077 x1075)
+(or (not x1094) (not x757) x1103)
+(or (not x1102) x1039 x1038)
+(or (not x1101) x1103)
+(or (not x1083) (not x1075) (not x1038) x1102)
+(or (not x1103) x1101 x757)
+(or (not x1095) (not x1075) (not x1038) x1102)
+(or (not x1103) x1101 x1094)
+(or (not x1077) (not x1038) x1102)
+(or (not x1092) (not x755) x1101)
+(or (not x1039) x1102)
+(or (not x1092) x1101)
+(or (not x1095) (not x1083))
+(or (not x1101) x1092 x755)
+(or (not x1020) x1095 x1090 x1023)
+(or (not x1101) x1092)
+(or (not x1095) (not x1020) (not x1023) x1090)
+(or (not x1086) (not x753) x1092)
+(or (not x1095) (not x1090) x1020 x1023)
+(or (not x1100) x1092)
+(or (not x1090) (not x1023) x1095 x1020)
+(or (not x1092) x1100 x753)
+(or (not x1018) x1095 x1089 x1023)
+(or (not x1092) x1100 x1086)
+(or (not x1095) (not x1018) (not x1023) x1089)
+(or (not x611) x1100)
+(or (not x1095) (not x1089) x1018 x1023)
+(or (not x1100) x611)
+(or (not x1089) (not x1023) x1095 x1018)
+(or (not x816) (not x752) x1099)
+(or (not x1016) x1095 x1087 x1023)
+(or (not x752) x1099)
+(or (not x1095) (not x1016) (not x1023) x1087)
+(or (not x1099) x752)
+(or (not x1095) (not x1087) x1016 x1023)
+(or (not x1099) x816 x752)
+(or (not x1087) (not x1023) x1095 x1016)
+(or (not x1098) (not x749) x752)
+(or (not x1014) x1095 x1085 x1023)
+(or (not x1096) x752)
+(or (not x1095) (not x1014) (not x1023) x1085)
+(or (not x752) x1096 x749)
+(or (not x1095) (not x1085) x1014 x1023)
+(or (not x752) x1098 x1096)
+(or (not x1085) (not x1023) x1095 x1014)
+(or (not x1097) (not x744) x1096)
+(or (not x1011) x1095 x1084 x1023)
+(or (not x1093) x1096)
+(or (not x1095) (not x1011) (not x1023) x1084)
+(or (not x1096) x1093 x744)
+(or (not x1095) (not x1084) x1011 x1023)
+(or (not x1096) x1097 x1093)
+(or (not x1084) (not x1023) x1095 x1011)
+(or (not x1094) (not x741) x1093)
+(or (not x1089) (not x1018) x1083 x1090 x1020)
+(or (not x1091) x1093)
+(or (not x1087) (not x1016) x1083 x1089 x1018)
+(or (not x1093) x1091 x741)
+(or (not x1085) (not x1014) x1083 x1087 x1016)
+(or (not x1093) x1094 x1091)
+(or (not x1084) (not x1011) x1083 x1085 x1014)
+(or (not x1092) (not x737) x1091)
+(or x1083 x1084 x1011)
+(or (not x1088) x1091)
+(or (not x1090) (not x1020) x1083)
+(or (not x1091) x1088 x737)
+(or (not x1083) (not x1090) x1020)
+(or (not x1091) x1092 x1088)
+(or (not x1083) (not x1020) x1090)
+(or (not x1086) x1088)
+(or (not x1083) (not x1089) x1018)
+(or (not x1088) x1086)
+(or (not x1083) (not x1018) x1089)
+(or (not x1088) x1086)
+(or (not x1083) (not x1087) x1016)
+(or (not x610) x1086)
+(or (not x1083) (not x1016) x1087)
+(or (not x1086) x610)
+(or (not x1083) (not x1085) x1014)
+(or (not x1036) (not x816) x1082)
+(or (not x1083) (not x1014) x1085)
+(or (not x1036) x1082)
+(or (not x1083) (not x1084) x1011)
+(or (not x1082) x1036 x816)
+(or (not x1083) (not x1011) x1084)
+(or (not x1082) x1036)
+(or (not x52) x1077 x1071 x1073)
+(or (not x814) (not x802) x1036)
+(or (not x1077) (not x1073) (not x52) x1071)
+(or (not x814) x1036)
+(or (not x1077) x1071 x1073 x52)
+(or (not x1036) x814)
+(or (not x1073) x1077 x1071 x52)
+(or (not x1036) x814 x802)
+(or (not x1071) (not x50) x1077 x1068 x1072)
+(or (not x1032) (not x812) x814)
+(or (not x1077) (not x1071) (not x1072) (not x50) x1068)
+(or (not x1081) x814)
+(or (not x1077) (not x1071) x1068 x1072 x50)
+(or (not x814) x1081 x812)
+(or (not x1071) (not x1072) x1077 x1068 x50)
+(or (not x814) x1081 x1032)
+(or (not x1068) (not x48) x1077 x1064 x1069)
+(or (not x1031) (not x810) x1081)
+(or (not x1077) (not x1068) (not x1069) (not x48) x1064)
+(or (not x1080) x1081)
+(or (not x1077) (not x1068) x1064 x1069 x48)
+(or (not x1081) x1080 x810)
+(or (not x1068) (not x1069) x1077 x1064 x48)
+(or (not x1081) x1080 x1031)
+(or (not x1064) (not x46) x1077 x1061 x1066)
+(or (not x1029) (not x808) x1080)
+(or (not x1077) (not x1064) (not x1066) (not x46) x1061)
+(or (not x1079) x1080)
+(or (not x1077) (not x1064) x1061 x1066 x46)
+(or (not x1080) x1079 x808)
+(or (not x1064) (not x1066) x1077 x1061 x46)
+(or (not x1080) x1079 x1029)
+(or (not x1061) (not x44) x1077 x1058 x1062)
+(or (not x1026) (not x805) x1079)
+(or (not x1077) (not x1061) (not x1062) (not x44) x1058)
+(or (not x1078) x1079)
+(or (not x1077) (not x1061) x1058 x1062 x44)
+(or (not x1079) x1078 x805)
+(or (not x1061) (not x1062) x1077 x1058 x44)
+(or (not x1079) x1078 x1026)
+(or (not x1058) (not x149) x1077 x1057 x1059)
+(or (not x609) x1078)
+(or (not x1077) (not x1058) (not x1059) (not x149) x1057)
+(or (not x1078) x609)
+(or (not x1077) (not x1058) x1057 x1059 x149)
+(or (not x1036) (not x804) x1076)
+(or (not x1058) (not x1059) x1077 x1057 x149)
+(or (not x1074) x1076)
+(or (not x1077) (not x1075))
+(or (not x1076) x1074 x804)
+(or (not x1057) x1075)
+(or (not x1076) x1074 x1036)
+(or (not x1075) x1057)
+(or (not x802) x1074)
+(or x1071 x1073 x999)
+(or (not x802) x1074)
+(or (not x1073) (not x999) x1071)
+(or (not x1074) x802)
+(or (not x1071) (not x1073) x999)
+(or (not x1074) x802)
+(or (not x1071) (not x999) x1073)
+(or (not x1032) (not x798) x802)
+(or (not x1071) x1068 x1072 x996)
+(or (not x1070) x802)
+(or (not x1071) (not x1072) (not x996) x1068)
+(or (not x802) x1070 x798)
+(or (not x1068) (not x1072) x996)
+(or (not x802) x1070 x1032)
+(or (not x1068) (not x996) x1072)
+(or (not x1031) (not x797) x1070)
+(or (not x1068) x1071)
+(or (not x1067) x1070)
+(or (not x1068) x1064 x1069 x992)
+(or (not x1070) x1067 x797)
+(or (not x1068) (not x1069) (not x992) x1064)
+(or (not x1070) x1067 x1031)
+(or (not x1064) (not x1069) x992)
+(or (not x1029) (not x794) x1067)
+(or (not x1064) (not x992) x1069)
+(or (not x1065) x1067)
+(or (not x1064) x1068)
+(or (not x1067) x1065 x794)
+(or (not x1064) x1061 x1066 x988)
+(or (not x1067) x1065 x1029)
+(or (not x1064) (not x1066) (not x988) x1061)
+(or (not x1026) (not x790) x1065)
+(or (not x1061) (not x1066) x988)
+(or (not x1065) x790)
+(or (not x1061) (not x988) x1066)
+(or (not x1065) x1026)
+(or (not x1061) x1064)
+(or (not x1036) (not x789) x1063)
+(or (not x1061) x1058 x1062 x985)
+(or (not x1060) x1063)
+(or (not x1061) (not x1062) (not x985) x1058)
+(or (not x1063) x1060 x789)
+(or (not x1058) (not x1062) x985)
+(or (not x1063) x1060 x1036)
+(or (not x1058) (not x985) x1062)
+(or (not x802) (not x786) x1060)
+(or (not x1058) x1061)
+(or (not x786) x1060)
+(or (not x1058) x1057 x1059 x980)
+(or (not x1060) x786)
+(or (not x1058) (not x1059) (not x980) x1057)
+(or (not x1060) x802 x786)
+(or (not x1057) (not x1059) x980)
+(or (not x1032) (not x783) x786)
+(or (not x1057) (not x980) x1059)
+(or (not x1032) x786)
+(or (not x1057) x1058)
+(or (not x786) x1032 x783)
+(or (not x1039) (not x1045) (not x974))
+(or (not x786) x1032)
+(or (not x1045) (not x974) x1038)
+(or (not x1031) (not x779) x1032)
+(or (not x1039) (not x1043) (not x974) x95)
+(or (not x1056) x1032)
+(or (not x1043) (not x974) (not x95) x1039)
+(or (not x1032) x1056 x779)
+(or (not x1038) (not x1043) (not x974))
+(or (not x1032) x1056 x1031)
+(or (not x1039) (not x1042) (not x974) x94)
+(or (not x1029) (not x778) x1056)
+(or (not x1042) (not x974) (not x94) x1039)
+(or (not x1055) x1056)
+(or (not x1038) (not x1042) (not x974))
+(or (not x1056) x1055 x778)
+(or (not x1039) (not x1040) (not x974) x92)
+(or (not x1056) x1055 x1029)
+(or (not x1040) (not x974) (not x92) x1039)
+(or (not x1026) (not x775) x1055)
+(or (not x1038) (not x1040) (not x974))
+(or (not x1054) x1055)
+(or (not x1039) (not x1037) (not x974) x91)
+(or (not x1055) x1054 x775)
+(or (not x1037) (not x974) (not x91) x1039)
+(or (not x1055) x1054 x1026)
+(or (not x1038) (not x1037) (not x974))
+(or (not x608) x1054)
+(or (not x1039) (not x1045) (not x970) x89)
+(or (not x1054) x608)
+(or (not x1045) (not x970) (not x89) x1039)
+(or (not x1036) (not x774) x1053)
+(or (not x1038) (not x1045) (not x970))
+(or (not x1052) x1053)
+(or (not x1039) (not x1043) (not x970))
+(or (not x1053) x1052 x774)
+(or (not x1043) (not x970) x1038)
+(or (not x1053) x1052 x1036)
+(or (not x1039) (not x1042) (not x970) x88)
+(or (not x802) (not x772) x1052)
+(or (not x1042) (not x970) (not x88) x1039)
+(or (not x772) x1052)
+(or (not x1038) (not x1042) (not x970))
+(or (not x1052) x772)
+(or (not x1039) (not x1040) (not x970) x87)
+(or (not x1052) x802 x772)
+(or (not x1040) (not x970) (not x87) x1039)
+(or (not x1032) (not x770) x772)
+(or (not x1038) (not x1040) (not x970))
+(or (not x1051) x772)
+(or (not x1039) (not x1037) (not x970) x86)
+(or (not x772) x1051 x770)
+(or (not x1037) (not x970) (not x86) x1039)
+(or (not x772) x1051 x1032)
+(or (not x1038) (not x1037) (not x970))
+(or (not x1031) (not x768) x1051)
+(or (not x1039) (not x1045) (not x967) x82)
+(or (not x1031) x1051)
+(or (not x1045) (not x967) (not x82) x1039)
+(or (not x1051) x1031 x768)
+(or (not x1038) (not x1045) (not x967))
+(or (not x1051) x1031)
+(or (not x1039) (not x1043) (not x967) x81)
+(or (not x1029) (not x766) x1031)
+(or (not x1043) (not x967) (not x81) x1039)
+(or (not x1050) x1031)
+(or (not x1038) (not x1043) (not x967))
+(or (not x1031) x1050 x766)
+(or (not x1039) (not x1042) (not x967))
+(or (not x1031) x1050 x1029)
+(or (not x1042) (not x967) x1038)
+(or (not x1026) (not x764) x1050)
+(or (not x1039) (not x1040) (not x967) x79)
+(or (not x1049) x1050)
+(or (not x1040) (not x967) (not x79) x1039)
+(or (not x1050) x1049 x764)
+(or (not x1038) (not x1040) (not x967))
+(or (not x1050) x1049 x1026)
+(or (not x1039) (not x1037) (not x967) x77)
+(or (not x607) x1049)
+(or (not x1037) (not x967) (not x77) x1039)
+(or (not x1049) x607)
+(or (not x1038) (not x1037) (not x967))
+(or (not x1036) (not x763) x1048)
+(or (not x1039) (not x1045) (not x962) x73)
+(or (not x1047) x1048)
+(or (not x1045) (not x962) (not x73) x1039)
+(or (not x1048) x1047 x763)
+(or (not x1038) (not x1045) (not x962))
+(or (not x1048) x1047 x1036)
+(or (not x1039) (not x1043) (not x962) x67)
+(or (not x802) (not x761) x1047)
+(or (not x1043) (not x962) (not x67) x1039)
+(or (not x761) x1047)
+(or (not x1038) (not x1043) (not x962))
+(or (not x1047) x761)
+(or (not x1039) (not x1042) (not x962) x66)
+(or (not x1047) x802 x761)
+(or (not x1042) (not x962) (not x66) x1039)
+(or (not x1032) (not x759) x761)
+(or (not x1038) (not x1042) (not x962))
+(or (not x1046) x761)
+(or (not x1039) (not x1040) (not x962))
+(or (not x761) x1046 x759)
+(or (not x1040) (not x962) x1038)
+(or (not x761) x1046 x1032)
+(or (not x1039) (not x1037) (not x962) x65)
+(or (not x1031) (not x757) x1046)
+(or (not x1037) (not x962) (not x65) x1039)
+(or (not x1044) x1046)
+(or (not x1038) (not x1037) (not x962))
+(or (not x1046) x1044 x757)
+(or (not x1039) (not x1045) (not x949) x58)
+(or (not x1046) x1044 x1031)
+(or (not x1045) (not x949) (not x58) x1039)
+(or (not x1029) (not x755) x1044)
+(or (not x1038) (not x1045) (not x949))
+(or (not x1029) x1044)
+(or (not x1039) (not x1043) (not x949) x57)
+(or (not x1044) x1029 x755)
+(or (not x1043) (not x949) (not x57) x1039)
+(or (not x1044) x1029)
+(or (not x1038) (not x1043) (not x949))
+(or (not x1026) (not x753) x1029)
+(or (not x1039) (not x1042) (not x949) x56)
+(or (not x1041) x1029)
+(or (not x1042) (not x949) (not x56) x1039)
+(or (not x1029) x1041 x753)
+(or (not x1038) (not x1042) (not x949))
+(or (not x1029) x1041 x1026)
+(or (not x1039) (not x1040) (not x949) x55)
+(or (not x606) x1041)
+(or (not x1040) (not x949) (not x55) x1039)
+(or (not x1041) x606)
+(or (not x1038) (not x1040) (not x949))
+(or (not x1036) (not x752) x1035)
+(or (not x1039) (not x1037) (not x949))
+(or (not x1034) x1035)
+(or (not x1037) (not x949) x1038)
+(or (not x1035) x1034 x752)
+(or (not x1033) (not x1003) (not x950) x1024 x1010)
+(or (not x1035) x1036 x1034)
+(or (not x1033) (not x950) x1004 x1003)
+(or (not x802) (not x749) x1034)
+(or (not x1033) x953 x950)
+(or (not x749) x1034)
+(or (not x1010) (not x1003) (not x950) x1033)
+(or (not x1034) x749)
+(or (not x1024) (not x1003) (not x950) x1033)
+(or (not x1034) x802 x749)
+(or (not x1004) (not x950) x1033)
+(or (not x1032) (not x744) x749)
+(or (not x953) x1033)
+(or (not x1030) x749)
+(or (not x1024) (not x1010))
+(or (not x749) x1030 x744)
+(or (not x1020) x1024 x1021 x1023)
+(or (not x749) x1032 x1030)
+(or (not x1024) (not x1020) (not x1023) x1021)
+(or (not x1031) (not x741) x1030)
+(or (not x1024) (not x1021) x1020 x1023)
+(or (not x1028) x1030)
+(or (not x1021) (not x1023) x1024 x1020)
+(or (not x1030) x1028 x741)
+(or (not x1018) x1024 x1019 x1023)
+(or (not x1030) x1031 x1028)
+(or (not x1024) (not x1018) (not x1023) x1019)
+(or (not x1029) (not x737) x1028)
+(or (not x1024) (not x1019) x1018 x1023)
+(or (not x1027) x1028)
+(or (not x1019) (not x1023) x1024 x1018)
+(or (not x1028) x1027 x737)
+(or (not x1016) x1024 x1017 x1023)
+(or (not x1028) x1029 x1027)
+(or (not x1024) (not x1016) (not x1023) x1017)
+(or (not x1026) x1027)
+(or (not x1024) (not x1017) x1016 x1023)
+(or (not x1027) x1026)
+(or (not x1017) (not x1023) x1024 x1016)
+(or (not x1027) x1026)
+(or (not x1014) x1024 x1015 x1023)
+(or (not x605) x1026)
+(or (not x1024) (not x1014) (not x1023) x1015)
+(or (not x1026) x605)
+(or (not x1024) (not x1015) x1014 x1023)
+(or (not x964) (not x816) x1025)
+(or (not x1015) (not x1023) x1024 x1014)
+(or (not x964) x1025)
+(or (not x1011) x1024 x1012 x1023)
+(or (not x1025) x964 x816)
+(or (not x1024) (not x1011) (not x1023) x1012)
+(or (not x1025) x964)
+(or (not x1024) (not x1012) x1011 x1023)
+(or (not x961) (not x814) x964)
+(or (not x1012) (not x1023) x1024 x1011)
+(or (not x1022) x964)
+(or (not x1019) (not x1018) x1010 x1021 x1020)
+(or (not x964) x1022 x814)
+(or (not x1017) (not x1016) x1010 x1019 x1018)
+(or (not x964) x1022 x961)
+(or (not x1015) (not x1014) x1010 x1017 x1016)
+(or (not x812) (not x783) x1022)
+(or (not x1012) (not x1011) x1010 x1015 x1014)
+(or (not x812) x1022)
+(or x1010 x1012 x1011)
+(or (not x1022) x812)
+(or (not x1021) (not x1020) x1010)
+(or (not x1022) x812 x783)
+(or (not x1010) (not x1021) x1020)
+(or (not x955) (not x810) x812)
+(or (not x1010) (not x1020) x1021)
+(or (not x1013) x812)
+(or (not x1010) (not x1019) x1018)
+(or (not x812) x1013 x810)
+(or (not x1010) (not x1018) x1019)
+(or (not x812) x1013 x955)
+(or (not x1010) (not x1017) x1016)
+(or (not x952) (not x808) x1013)
+(or (not x1010) (not x1016) x1017)
+(or (not x1009) x1013)
+(or (not x1010) (not x1015) x1014)
+(or (not x1013) x1009 x808)
+(or (not x1010) (not x1014) x1015)
+(or (not x1013) x1009 x952)
+(or (not x1010) (not x1012) x1011)
+(or (not x945) (not x805) x1009)
+(or (not x1010) (not x1011) x1012)
+(or (not x1008) x1009)
+(or (not x52) x1004 x995 x1000)
+(or (not x1009) x1008 x805)
+(or (not x1004) (not x1000) (not x52) x995)
+(or (not x1009) x1008 x945)
+(or (not x1004) x995 x1000 x52)
+(or (not x602) x1008)
+(or (not x1000) x1004 x995 x52)
+(or (not x1008) x602)
+(or (not x995) (not x50) x1004 x991 x997)
+(or (not x964) (not x804) x1007)
+(or (not x1004) (not x995) (not x997) (not x50) x991)
+(or (not x1006) x1007)
+(or (not x1004) (not x995) x991 x997 x50)
+(or (not x1007) x1006 x804)
+(or (not x995) (not x997) x1004 x991 x50)
+(or (not x1007) x1006 x964)
+(or (not x991) (not x48) x1004 x987 x993)
+(or (not x961) (not x802) x1006)
+(or (not x1004) (not x991) (not x993) (not x48) x987)
+(or (not x961) x1006)
+(or (not x1004) (not x991) x987 x993 x48)
+(or (not x1006) x961 x802)
+(or (not x991) (not x993) x1004 x987 x48)
+(or (not x1006) x961)
+(or (not x987) (not x46) x1004 x983 x989)
+(or (not x798) (not x783) x961)
+(or (not x1004) (not x987) (not x989) (not x46) x983)
+(or (not x798) x961)
+(or (not x1004) (not x987) x983 x989 x46)
+(or (not x961) x798)
+(or (not x987) (not x989) x1004 x983 x46)
+(or (not x961) x798 x783)
+(or (not x983) (not x44) x1004 x979 x986)
+(or (not x955) (not x797) x798)
+(or (not x1004) (not x983) (not x986) (not x44) x979)
+(or (not x1005) x798)
+(or (not x1004) (not x983) x979 x986 x44)
+(or (not x798) x1005 x797)
+(or (not x983) (not x986) x1004 x979 x44)
+(or (not x798) x1005 x955)
+(or (not x979) (not x149) x1004 x978 x981)
+(or (not x952) (not x794) x1005)
+(or (not x1004) (not x979) (not x981) (not x149) x978)
+(or (not x1002) x1005)
+(or (not x1004) (not x979) x978 x981 x149)
+(or (not x1005) x1002 x794)
+(or (not x979) (not x981) x1004 x978 x149)
+(or (not x1005) x1002 x952)
+(or (not x1004) (not x1003))
+(or (not x945) (not x790) x1002)
+(or (not x978) x1003)
+(or (not x1001) x1002)
+(or (not x1003) x978)
+(or (not x1002) x1001 x790)
+(or x995 x1000 x999)
+(or (not x1002) x1001 x945)
+(or (not x1000) (not x999) x995)
+(or (not x601) x1001)
+(or (not x995) (not x1000) x999)
+(or (not x1001) x601)
+(or (not x995) (not x999) x1000)
+(or (not x964) (not x789) x998)
+(or (not x995) x991 x997 x996)
+(or (not x994) x998)
+(or (not x995) (not x997) (not x996) x991)
+(or (not x998) x994 x789)
+(or (not x991) (not x997) x996)
+(or (not x998) x994 x964)
+(or (not x991) (not x996) x997)
+(or (not x961) (not x786) x994)
+(or (not x991) x995)
+(or (not x990) x994)
+(or (not x991) x987 x993 x992)
+(or (not x994) x990 x786)
+(or (not x991) (not x993) (not x992) x987)
+(or (not x994) x990 x961)
+(or (not x987) (not x993) x992)
+(or (not x783) x990)
+(or (not x987) (not x992) x993)
+(or (not x783) x990)
+(or (not x987) x991)
+(or (not x990) x783)
+(or (not x987) x983 x989 x988)
+(or (not x990) x783)
+(or (not x987) (not x989) (not x988) x983)
+(or (not x955) (not x779) x783)
+(or (not x983) (not x989) x988)
+(or (not x984) x783)
+(or (not x983) (not x988) x989)
+(or (not x783) x984 x779)
+(or (not x983) x987)
+(or (not x783) x984 x955)
+(or (not x983) x979 x986 x985)
+(or (not x952) (not x778) x984)
+(or (not x983) (not x986) (not x985) x979)
+(or (not x982) x984)
+(or (not x979) (not x986) x985)
+(or (not x984) x982 x778)
+(or (not x979) (not x985) x986)
+(or (not x984) x982 x952)
+(or (not x979) x983)
+(or (not x945) (not x775) x982)
+(or (not x979) x978 x981 x980)
+(or (not x982) x775)
+(or (not x979) (not x981) (not x980) x978)
+(or (not x982) x945)
+(or (not x978) (not x981) x980)
+(or (not x964) (not x774) x977)
+(or (not x978) (not x980) x981)
+(or (not x976) x977)
+(or (not x978) x979)
+(or (not x977) x976 x774)
+(or (not x953) (not x959) (not x974))
+(or (not x977) x976 x964)
+(or (not x959) (not x974) x950)
+(or (not x961) (not x772) x976)
+(or (not x953) (not x957) (not x974) x95)
+(or (not x975) x976)
+(or (not x957) (not x974) (not x95) x953)
+(or (not x976) x975 x772)
+(or (not x950) (not x957) (not x974))
+(or (not x976) x975 x961)
+(or (not x953) (not x956) (not x974) x94)
+(or (not x783) (not x770) x975)
+(or (not x956) (not x974) (not x94) x953)
+(or (not x770) x975)
+(or (not x950) (not x956) (not x974))
+(or (not x975) x770)
+(or (not x953) (not x954) (not x974) x92)
+(or (not x975) x783 x770)
+(or (not x954) (not x974) (not x92) x953)
+(or (not x955) (not x768) x770)
+(or (not x950) (not x954) (not x974))
+(or (not x955) x770)
+(or (not x953) (not x948) (not x974) x91)
+(or (not x770) x955 x768)
+(or (not x948) (not x974) (not x91) x953)
+(or (not x770) x955)
+(or (not x950) (not x948) (not x974))
+(or (not x952) (not x766) x955)
+(or (not x953) (not x959) (not x970) x89)
+(or (not x973) x955)
+(or (not x959) (not x970) (not x89) x953)
+(or (not x955) x973 x766)
+(or (not x950) (not x959) (not x970))
+(or (not x955) x973 x952)
+(or (not x953) (not x957) (not x970))
+(or (not x945) (not x764) x973)
+(or (not x957) (not x970) x950)
+(or (not x972) x973)
+(or (not x953) (not x956) (not x970) x88)
+(or (not x973) x972 x764)
+(or (not x956) (not x970) (not x88) x953)
+(or (not x973) x972 x945)
+(or (not x950) (not x956) (not x970))
+(or (not x599) x972)
+(or (not x953) (not x954) (not x970) x87)
+(or (not x972) x599)
+(or (not x954) (not x970) (not x87) x953)
+(or (not x964) (not x763) x971)
+(or (not x950) (not x954) (not x970))
+(or (not x969) x971)
+(or (not x953) (not x948) (not x970) x86)
+(or (not x971) x969 x763)
+(or (not x948) (not x970) (not x86) x953)
+(or (not x971) x969 x964)
+(or (not x950) (not x948) (not x970))
+(or (not x961) (not x761) x969)
+(or (not x953) (not x959) (not x967) x82)
+(or (not x968) x969)
+(or (not x959) (not x967) (not x82) x953)
+(or (not x969) x968 x761)
+(or (not x950) (not x959) (not x967))
+(or (not x969) x968 x961)
+(or (not x953) (not x957) (not x967) x81)
+(or (not x783) (not x759) x968)
+(or (not x957) (not x967) (not x81) x953)
+(or (not x759) x968)
+(or (not x950) (not x957) (not x967))
+(or (not x968) x759)
+(or (not x953) (not x956) (not x967))
+(or (not x968) x783 x759)
+(or (not x956) (not x967) x950)
+(or (not x955) (not x757) x759)
+(or (not x953) (not x954) (not x967) x79)
+(or (not x966) x759)
+(or (not x954) (not x967) (not x79) x953)
+(or (not x759) x966 x757)
+(or (not x950) (not x954) (not x967))
+(or (not x759) x966 x955)
+(or (not x953) (not x948) (not x967) x77)
+(or (not x952) (not x755) x966)
+(or (not x948) (not x967) (not x77) x953)
+(or (not x952) x966)
+(or (not x950) (not x948) (not x967))
+(or (not x966) x952 x755)
+(or (not x953) (not x959) (not x962) x73)
+(or (not x966) x952)
+(or (not x959) (not x962) (not x73) x953)
+(or (not x945) (not x753) x952)
+(or (not x950) (not x959) (not x962))
+(or (not x965) x952)
+(or (not x953) (not x957) (not x962) x67)
+(or (not x952) x965 x753)
+(or (not x957) (not x962) (not x67) x953)
+(or (not x952) x965 x945)
+(or (not x950) (not x957) (not x962))
+(or (not x598) x965)
+(or (not x953) (not x956) (not x962) x66)
+(or (not x965) x598)
+(or (not x956) (not x962) (not x66) x953)
+(or (not x964) (not x752) x963)
+(or (not x950) (not x956) (not x962))
+(or (not x960) x963)
+(or (not x953) (not x954) (not x962))
+(or (not x963) x960 x752)
+(or (not x954) (not x962) x950)
+(or (not x963) x964 x960)
+(or (not x953) (not x948) (not x962) x65)
+(or (not x961) (not x749) x960)
+(or (not x948) (not x962) (not x65) x953)
+(or (not x958) x960)
+(or (not x950) (not x948) (not x962))
+(or (not x960) x958 x749)
+(or (not x953) (not x959) (not x949) x58)
+(or (not x960) x961 x958)
+(or (not x959) (not x949) (not x58) x953)
+(or (not x783) (not x744) x958)
+(or (not x950) (not x959) (not x949))
+(or (not x744) x958)
+(or (not x953) (not x957) (not x949) x57)
+(or (not x958) x744)
+(or (not x957) (not x949) (not x57) x953)
+(or (not x958) x783 x744)
+(or (not x950) (not x957) (not x949))
+(or (not x955) (not x741) x744)
+(or (not x953) (not x956) (not x949) x56)
+(or (not x951) x744)
+(or (not x956) (not x949) (not x56) x953)
+(or (not x744) x951 x741)
+(or (not x950) (not x956) (not x949))
+(or (not x744) x955 x951)
+(or (not x953) (not x954) (not x949) x55)
+(or (not x952) (not x737) x951)
+(or (not x954) (not x949) (not x55) x953)
+(or (not x947) x951)
+(or (not x950) (not x954) (not x949))
+(or (not x951) x947 x737)
+(or (not x953) (not x948) (not x949))
+(or (not x951) x952 x947)
+(or (not x948) (not x949) x950)
+(or (not x945) x947)
+(or (not x946) (not x188) (not x40) x468)
+(or (not x947) x945)
+(or (not x946) (not x188) (not x41) x379)
+(or (not x947) x945)
+(or (not x946) (not x188) (not x42) x286)
+(or (not x596) x945)
+(or (not x946) (not x188) (not x43) x189)
+(or (not x945) x596)
+(or (not x944) (not x188) (not x39) x899)
+(or (not x874) (not x816) x943)
+(or (not x944) (not x188) (not x41) x897)
+(or (not x874) x943)
+(or (not x944) (not x188) (not x42) x913)
+(or (not x943) x874 x816)
+(or (not x944) (not x188) (not x43) x896)
+(or (not x943) x874)
+(or (not x942) (not x188) (not x39) x893)
+(or (not x872) (not x814) x874)
+(or (not x942) (not x188) (not x40) x891)
+(or (not x940) x874)
+(or (not x942) (not x188) (not x42) x925)
+(or (not x874) x940 x814)
+(or (not x942) (not x188) (not x43) x890)
+(or (not x874) x940 x872)
+(or (not x941) (not x188) (not x39) x910)
+(or (not x870) (not x812) x940)
+(or (not x941) (not x188) (not x40) x909)
+(or (not x938) x940)
+(or (not x941) (not x188) (not x41) x922)
+(or (not x940) x938 x812)
+(or (not x941) (not x188) (not x43) x908)
+(or (not x940) x938 x870)
+(or (not x939) (not x188) (not x39) x887)
+(or (not x810) (not x768) x938)
+(or (not x939) (not x188) (not x40) x885)
+(or (not x810) x938)
+(or (not x939) (not x188) (not x41) x884)
+(or (not x938) x810)
+(or (not x939) (not x188) (not x42) x906)
+(or (not x938) x810 x768)
+(or (not x937) (not x175) (not x33) x829)
+(or (not x866) (not x808) x810)
+(or (not x937) (not x175) (not x34) x738)
+(or (not x935) x810)
+(or (not x937) (not x175) (not x35) x679)
+(or (not x810) x935 x808)
+(or (not x937) (not x175) (not x36) x624)
+(or (not x810) x935 x866)
+(or (not x936) (not x175) (not x32) x60)
+(or (not x864) (not x805) x935)
+(or (not x936) (not x175) (not x34) x897)
+(or (not x934) x935)
+(or (not x936) (not x175) (not x35) x913)
+(or (not x935) x934 x805)
+(or (not x936) (not x175) (not x36) x896)
+(or (not x935) x934 x864)
+(or (not x933) (not x175) (not x32) x894)
+(or (not x594) x934)
+(or (not x933) (not x175) (not x33) x891)
+(or (not x934) x594)
+(or (not x933) (not x175) (not x35) x925)
+(or (not x874) (not x804) x932)
+(or (not x933) (not x175) (not x36) x890)
+(or (not x930) x932)
+(or (not x931) (not x175) (not x32) x911)
+(or (not x932) x930 x804)
+(or (not x931) (not x175) (not x33) x909)
+(or (not x932) x930 x874)
+(or (not x931) (not x175) (not x34) x922)
+(or (not x872) (not x802) x930)
+(or (not x931) (not x175) (not x36) x908)
+(or (not x872) x930)
+(or (not x929) (not x175) (not x32) x888)
+(or (not x930) x872 x802)
+(or (not x929) (not x175) (not x33) x885)
+(or (not x930) x872)
+(or (not x929) (not x175) (not x34) x884)
+(or (not x870) (not x798) x872)
+(or (not x929) (not x175) (not x35) x906)
+(or (not x927) x872)
+(or (not x928) (not x153) (not x28) x881)
+(or (not x872) x927 x798)
+(or (not x928) (not x153) (not x29) x738)
+(or (not x872) x927 x870)
+(or (not x928) (not x153) (not x30) x679)
+(or (not x797) (not x768) x927)
+(or (not x928) (not x153) (not x31) x624)
+(or (not x797) x927)
+(or (not x926) (not x153) (not x27) x562)
+(or (not x927) x797)
+(or (not x926) (not x153) (not x29) x379)
+(or (not x927) x797 x768)
+(or (not x926) (not x153) (not x30) x286)
+(or (not x866) (not x794) x797)
+(or (not x926) (not x153) (not x31) x189)
+(or (not x923) x797)
+(or (not x924) (not x153) (not x27) x894)
+(or (not x797) x923 x794)
+(or (not x924) (not x153) (not x28) x893)
+(or (not x797) x923 x866)
+(or (not x924) (not x153) (not x30) x925)
+(or (not x864) (not x790) x923)
+(or (not x924) (not x153) (not x31) x890)
+(or (not x920) x923)
+(or (not x921) (not x153) (not x27) x911)
+(or (not x923) x920 x790)
+(or (not x921) (not x153) (not x28) x910)
+(or (not x923) x920 x864)
+(or (not x921) (not x153) (not x29) x922)
+(or (not x592) x920)
+(or (not x921) (not x153) (not x31) x908)
+(or (not x920) x592)
+(or (not x919) (not x153) (not x27) x888)
+(or (not x874) (not x789) x918)
+(or (not x919) (not x153) (not x28) x887)
+(or (not x916) x918)
+(or (not x919) (not x153) (not x29) x884)
+(or (not x918) x916 x789)
+(or (not x919) (not x153) (not x30) x906)
+(or (not x918) x916 x874)
+(or (not x917) (not x131) (not x21) x881)
+(or (not x872) (not x786) x916)
+(or (not x917) (not x131) (not x22) x829)
+(or (not x914) x916)
+(or (not x917) (not x131) (not x23) x679)
+(or (not x916) x914 x786)
+(or (not x917) (not x131) (not x24) x624)
+(or (not x916) x914 x872)
+(or (not x915) (not x131) (not x20) x562)
+(or (not x870) (not x783) x914)
+(or (not x915) (not x131) (not x22) x468)
+(or (not x870) x914)
+(or (not x915) (not x131) (not x23) x286)
+(or (not x914) x870 x783)
+(or (not x915) (not x131) (not x24) x189)
+(or (not x914) x870)
+(or (not x912) (not x131) (not x20) x60)
+(or (not x779) (not x768) x870)
+(or (not x912) (not x131) (not x21) x899)
+(or (not x779) x870)
+(or (not x912) (not x131) (not x23) x913)
+(or (not x870) x779)
+(or (not x912) (not x131) (not x24) x896)
+(or (not x870) x779 x768)
+(or (not x907) (not x131) (not x20) x911)
+(or (not x866) (not x778) x779)
+(or (not x907) (not x131) (not x21) x910)
+(or (not x904) x779)
+(or (not x907) (not x131) (not x22) x909)
+(or (not x779) x904 x778)
+(or (not x907) (not x131) (not x24) x908)
+(or (not x779) x904 x866)
+(or (not x905) (not x131) (not x20) x888)
+(or (not x864) (not x775) x904)
+(or (not x905) (not x131) (not x21) x887)
+(or (not x903) x904)
+(or (not x905) (not x131) (not x22) x885)
+(or (not x904) x903 x775)
+(or (not x905) (not x131) (not x23) x906)
+(or (not x904) x903 x864)
+(or (not x902) (not x110) (not x14) x881)
+(or (not x589) x903)
+(or (not x902) (not x110) (not x15) x829)
+(or (not x903) x589)
+(or (not x902) (not x110) (not x16) x738)
+(or (not x874) (not x774) x901)
+(or (not x902) (not x110) (not x17) x624)
+(or (not x898) x901)
+(or (not x900) (not x110) (not x13) x562)
+(or (not x901) x898 x774)
+(or (not x900) (not x110) (not x15) x468)
+(or (not x901) x898 x874)
+(or (not x900) (not x110) (not x16) x379)
+(or (not x872) (not x772) x898)
+(or (not x900) (not x110) (not x17) x189)
+(or (not x892) x898)
+(or (not x895) (not x110) (not x13) x60)
+(or (not x898) x892 x772)
+(or (not x895) (not x110) (not x14) x899)
+(or (not x898) x892 x872)
+(or (not x895) (not x110) (not x16) x897)
+(or (not x870) (not x770) x892)
+(or (not x895) (not x110) (not x17) x896)
+(or (not x886) x892)
+(or (not x889) (not x110) (not x13) x894)
+(or (not x892) x886 x770)
+(or (not x889) (not x110) (not x14) x893)
+(or (not x892) x886 x870)
+(or (not x889) (not x110) (not x15) x891)
+(or (not x768) x886)
+(or (not x889) (not x110) (not x17) x890)
+(or (not x768) x886)
+(or (not x883) (not x110) (not x13) x888)
+(or (not x886) x768)
+(or (not x883) (not x110) (not x14) x887)
+(or (not x886) x768)
+(or (not x883) (not x110) (not x15) x885)
+(or (not x866) (not x766) x768)
+(or (not x883) (not x110) (not x16) x884)
+(or (not x882) x768)
+(or (not x682) (not x69) (not x7) x881)
+(or (not x768) x882 x766)
+(or (not x881) (not x860) (not x832) x876 x868)
+(or (not x768) x882 x866)
+(or (not x881) (not x832) x861 x860)
+(or (not x864) (not x764) x882)
+(or (not x881) x833 x832)
+(or (not x882) x764)
+(or (not x868) (not x860) (not x832) x881)
+(or (not x882) x864)
+(or (not x876) (not x860) (not x832) x881)
+(or (not x874) (not x763) x880)
+(or (not x861) (not x832) x881)
+(or (not x879) x880)
+(or (not x833) x881)
+(or (not x880) x879 x763)
+(or (not x876) (not x868))
+(or (not x880) x879 x874)
+(or (not x1) x876 x171 x617)
+(or (not x872) (not x761) x879)
+(or (not x876) (not x1) (not x617) x171)
+(or (not x878) x879)
+(or (not x876) (not x171) x1 x617)
+(or (not x879) x878 x761)
+(or (not x171) (not x617) x876 x1)
+(or (not x879) x878 x872)
+(or (not x25) x876 x169 x617)
+(or (not x870) (not x759) x878)
+(or (not x876) (not x25) (not x617) x169)
+(or (not x877) x878)
+(or (not x876) (not x169) x25 x617)
+(or (not x878) x877 x759)
+(or (not x169) (not x617) x876 x25)
+(or (not x878) x877 x870)
+(or (not x18) x876 x167 x617)
+(or (not x768) (not x757) x877)
+(or (not x876) (not x18) (not x617) x167)
+(or (not x757) x877)
+(or (not x876) (not x167) x18 x617)
+(or (not x877) x757)
+(or (not x167) (not x617) x876 x18)
+(or (not x877) x768 x757)
+(or (not x11) x876 x164 x617)
+(or (not x866) (not x755) x757)
+(or (not x876) (not x11) (not x617) x164)
+(or (not x866) x757)
+(or (not x876) (not x164) x11 x617)
+(or (not x757) x866 x755)
+(or (not x164) (not x617) x876 x11)
+(or (not x757) x866)
+(or (not x4) x876 x162 x617)
+(or (not x864) (not x753) x866)
+(or (not x876) (not x4) (not x617) x162)
+(or (not x875) x866)
+(or (not x876) (not x162) x4 x617)
+(or (not x866) x875 x753)
+(or (not x162) (not x617) x876 x4)
+(or (not x866) x875 x864)
+(or (not x25) (not x169) x868 x1 x171)
+(or (not x588) x875)
+(or (not x18) (not x167) x868 x25 x169)
+(or (not x875) x588)
+(or (not x11) (not x164) x868 x18 x167)
+(or (not x874) (not x752) x873)
+(or (not x4) (not x162) x868 x11 x164)
+(or (not x871) x873)
+(or x868 x4 x162)
+(or (not x873) x871 x752)
+(or (not x1) (not x171) x868)
+(or (not x873) x874 x871)
+(or (not x868) (not x171) x1)
+(or (not x872) (not x749) x871)
+(or (not x868) (not x1) x171)
+(or (not x869) x871)
+(or (not x868) (not x169) x25)
+(or (not x871) x869 x749)
+(or (not x868) (not x25) x169)
+(or (not x871) x872 x869)
+(or (not x868) (not x167) x18)
+(or (not x870) (not x744) x869)
+(or (not x868) (not x18) x167)
+(or (not x867) x869)
+(or (not x868) (not x164) x11)
+(or (not x869) x867 x744)
+(or (not x868) (not x11) x164)
+(or (not x869) x870 x867)
+(or (not x868) (not x162) x4)
+(or (not x768) (not x741) x867)
+(or (not x868) (not x4) x162)
+(or (not x741) x867)
+(or (not x52) x861 x857 x143)
+(or (not x867) x741)
+(or (not x861) (not x143) (not x52) x857)
+(or (not x867) x768 x741)
+(or (not x861) x857 x143 x52)
+(or (not x866) (not x737) x741)
+(or (not x143) x861 x857 x52)
+(or (not x865) x741)
+(or (not x857) (not x50) x861 x855 x139)
+(or (not x741) x865 x737)
+(or (not x861) (not x857) (not x139) (not x50) x855)
+(or (not x741) x866 x865)
+(or (not x861) (not x857) x855 x139 x50)
+(or (not x864) x865)
+(or (not x857) (not x139) x861 x855 x50)
+(or (not x865) x864)
+(or (not x855) (not x48) x861 x852 x133)
+(or (not x865) x864)
+(or (not x861) (not x855) (not x133) (not x48) x852)
+(or (not x587) x864)
+(or (not x861) (not x855) x852 x133 x48)
+(or (not x864) x587)
+(or (not x855) (not x133) x861 x852 x48)
+(or (not x827) (not x816) x863)
+(or (not x852) (not x46) x861 x851 x127)
+(or (not x827) x863)
+(or (not x861) (not x852) (not x127) (not x46) x851)
+(or (not x863) x827 x816)
+(or (not x861) (not x852) x851 x127 x46)
+(or (not x863) x827)
+(or (not x852) (not x127) x861 x851 x46)
+(or (not x825) (not x814) x827)
+(or (not x851) (not x44) x861 x849 x123)
+(or (not x862) x827)
+(or (not x861) (not x851) (not x123) (not x44) x849)
+(or (not x827) x862 x814)
+(or (not x861) (not x851) x849 x123 x44)
+(or (not x827) x862 x825)
+(or (not x851) (not x123) x861 x849 x44)
+(or (not x823) (not x812) x862)
+(or (not x849) (not x149) x861 x848 x118)
+(or (not x859) x862)
+(or (not x861) (not x849) (not x118) (not x149) x848)
+(or (not x862) x859 x812)
+(or (not x861) (not x849) x848 x118 x149)
+(or (not x862) x859 x823)
+(or (not x849) (not x118) x861 x848 x149)
+(or (not x821) (not x810) x859)
+(or (not x861) (not x860))
+(or (not x858) x859)
+(or (not x848) x860)
+(or (not x859) x858 x810)
+(or (not x860) x848)
+(or (not x859) x858 x821)
+(or x857 x530 x143)
+(or (not x808) (not x755) x858)
+(or (not x530) (not x143) x857)
+(or (not x808) x858)
+(or (not x857) (not x143) x530)
+(or (not x858) x808)
+(or (not x857) (not x530) x143)
+(or (not x858) x808 x755)
+(or (not x857) x855 x527 x139)
+(or (not x817) (not x805) x808)
+(or (not x857) (not x527) (not x139) x855)
+(or (not x856) x808)
+(or (not x855) (not x139) x527)
+(or (not x808) x856 x805)
+(or (not x855) (not x527) x139)
+(or (not x808) x856 x817)
+(or (not x855) x857)
+(or (not x586) x856)
+(or (not x855) x852 x523 x133)
+(or (not x856) x586)
+(or (not x855) (not x523) (not x133) x852)
+(or (not x827) (not x804) x854)
+(or (not x852) (not x133) x523)
+(or (not x853) x854)
+(or (not x852) (not x523) x133)
+(or (not x854) x853 x804)
+(or (not x852) x855)
+(or (not x854) x853 x827)
+(or (not x852) x851 x519 x127)
+(or (not x825) (not x802) x853)
+(or (not x852) (not x519) (not x127) x851)
+(or (not x825) x853)
+(or (not x851) (not x127) x519)
+(or (not x853) x825 x802)
+(or (not x851) (not x519) x127)
+(or (not x853) x825)
+(or (not x851) x852)
+(or (not x823) (not x798) x825)
+(or (not x851) x849 x514 x123)
+(or (not x850) x825)
+(or (not x851) (not x514) (not x123) x849)
+(or (not x825) x850 x798)
+(or (not x849) (not x123) x514)
+(or (not x825) x850 x823)
+(or (not x849) (not x514) x123)
+(or (not x821) (not x797) x850)
+(or (not x849) x851)
+(or (not x847) x850)
+(or (not x849) x848 x511 x118)
+(or (not x850) x847 x797)
+(or (not x849) (not x511) (not x118) x848)
+(or (not x850) x847 x821)
+(or (not x848) (not x118) x511)
+(or (not x794) (not x755) x847)
+(or (not x848) (not x511) x118)
+(or (not x794) x847)
+(or (not x848) x849)
+(or (not x847) x794)
+(or (not x833) (not x483) (not x107))
+(or (not x847) x794 x755)
+(or (not x483) (not x107) x832)
+(or (not x817) (not x790) x794)
+(or (not x833) (not x483) (not x101) x95)
+(or (not x846) x794)
+(or (not x483) (not x101) (not x95) x833)
+(or (not x794) x846 x790)
+(or (not x832) (not x483) (not x101))
+(or (not x794) x846 x817)
+(or (not x833) (not x483) (not x93) x94)
+(or (not x585) x846)
+(or (not x483) (not x93) (not x94) x833)
+(or (not x846) x585)
+(or (not x832) (not x483) (not x93))
+(or (not x827) (not x789) x845)
+(or (not x833) (not x483) (not x85) x92)
+(or (not x844) x845)
+(or (not x483) (not x85) (not x92) x833)
+(or (not x845) x844 x789)
+(or (not x832) (not x483) (not x85))
+(or (not x845) x844 x827)
+(or (not x833) (not x483) (not x70) x91)
+(or (not x825) (not x786) x844)
+(or (not x483) (not x70) (not x91) x833)
+(or (not x843) x844)
+(or (not x832) (not x483) (not x70))
+(or (not x844) x843 x786)
+(or (not x833) (not x481) (not x107) x89)
+(or (not x844) x843 x825)
+(or (not x481) (not x107) (not x89) x833)
+(or (not x823) (not x783) x843)
+(or (not x832) (not x481) (not x107))
+(or (not x823) x843)
+(or (not x833) (not x481) (not x101))
+(or (not x843) x823 x783)
+(or (not x481) (not x101) x832)
+(or (not x843) x823)
+(or (not x833) (not x481) (not x93) x88)
+(or (not x821) (not x779) x823)
+(or (not x481) (not x93) (not x88) x833)
+(or (not x842) x823)
+(or (not x832) (not x481) (not x93))
+(or (not x823) x842 x779)
+(or (not x833) (not x481) (not x85) x87)
+(or (not x823) x842 x821)
+(or (not x481) (not x85) (not x87) x833)
+(or (not x778) (not x755) x842)
+(or (not x832) (not x481) (not x85))
+(or (not x778) x842)
+(or (not x833) (not x481) (not x70) x86)
+(or (not x842) x778)
+(or (not x481) (not x70) (not x86) x833)
+(or (not x842) x778 x755)
+(or (not x832) (not x481) (not x70))
+(or (not x817) (not x775) x778)
+(or (not x833) (not x478) (not x107) x82)
+(or (not x841) x778)
+(or (not x478) (not x107) (not x82) x833)
+(or (not x778) x841 x775)
+(or (not x832) (not x478) (not x107))
+(or (not x778) x841 x817)
+(or (not x833) (not x478) (not x101) x81)
+(or (not x584) x841)
+(or (not x478) (not x101) (not x81) x833)
+(or (not x841) x584)
+(or (not x832) (not x478) (not x101))
+(or (not x827) (not x774) x840)
+(or (not x833) (not x478) (not x93))
+(or (not x839) x840)
+(or (not x478) (not x93) x832)
+(or (not x840) x839 x774)
+(or (not x833) (not x478) (not x85) x79)
+(or (not x840) x839 x827)
+(or (not x478) (not x85) (not x79) x833)
+(or (not x825) (not x772) x839)
+(or (not x832) (not x478) (not x85))
+(or (not x838) x839)
+(or (not x833) (not x478) (not x70) x77)
+(or (not x839) x838 x772)
+(or (not x478) (not x70) (not x77) x833)
+(or (not x839) x838 x825)
+(or (not x832) (not x478) (not x70))
+(or (not x823) (not x770) x838)
+(or (not x833) (not x476) (not x107) x73)
+(or (not x837) x838)
+(or (not x476) (not x107) (not x73) x833)
+(or (not x838) x837 x770)
+(or (not x832) (not x476) (not x107))
+(or (not x838) x837 x823)
+(or (not x833) (not x476) (not x101) x67)
+(or (not x821) (not x768) x837)
+(or (not x476) (not x101) (not x67) x833)
+(or (not x821) x837)
+(or (not x832) (not x476) (not x101))
+(or (not x837) x821 x768)
+(or (not x833) (not x476) (not x93) x66)
+(or (not x837) x821)
+(or (not x476) (not x93) (not x66) x833)
+(or (not x766) (not x755) x821)
+(or (not x832) (not x476) (not x93))
+(or (not x766) x821)
+(or (not x833) (not x476) (not x85))
+(or (not x821) x766)
+(or (not x476) (not x85) x832)
+(or (not x821) x766 x755)
+(or (not x833) (not x476) (not x70) x65)
+(or (not x817) (not x764) x766)
+(or (not x476) (not x70) (not x65) x833)
+(or (not x836) x766)
+(or (not x832) (not x476) (not x70))
+(or (not x766) x836 x764)
+(or (not x833) (not x473) (not x107) x58)
+(or (not x766) x836 x817)
+(or (not x473) (not x107) (not x58) x833)
+(or (not x583) x836)
+(or (not x832) (not x473) (not x107))
+(or (not x836) x583)
+(or (not x833) (not x473) (not x101) x57)
+(or (not x827) (not x763) x835)
+(or (not x473) (not x101) (not x57) x833)
+(or (not x834) x835)
+(or (not x832) (not x473) (not x101))
+(or (not x835) x834 x763)
+(or (not x833) (not x473) (not x93) x56)
+(or (not x835) x834 x827)
+(or (not x473) (not x93) (not x56) x833)
+(or (not x825) (not x761) x834)
+(or (not x832) (not x473) (not x93))
+(or (not x831) x834)
+(or (not x833) (not x473) (not x85) x55)
+(or (not x834) x831 x761)
+(or (not x473) (not x85) (not x55) x833)
+(or (not x834) x831 x825)
+(or (not x832) (not x473) (not x85))
+(or (not x823) (not x759) x831)
+(or (not x833) (not x473) (not x70))
+(or (not x830) x831)
+(or (not x473) (not x70) x832)
+(or (not x831) x830 x759)
+(or (not x682) (not x69) (not x8) x829)
+(or (not x831) x830 x823)
+(or (not x829) (not x799) (not x745) x819 x813)
+(or (not x821) (not x757) x830)
+(or (not x829) (not x745) x801 x799)
+(or (not x828) x830)
+(or (not x829) x748 x745)
+(or (not x830) x828 x757)
+(or (not x813) (not x799) (not x745) x829)
+(or (not x830) x828 x821)
+(or (not x819) (not x799) (not x745) x829)
+(or (not x755) x828)
+(or (not x801) (not x745) x829)
+(or (not x755) x828)
+(or (not x748) x829)
+(or (not x828) x755)
+(or (not x819) (not x813))
+(or (not x828) x755)
+(or (not x1) x819 x2 x617)
+(or (not x817) (not x753) x755)
+(or (not x819) (not x1) (not x617) x2)
+(or (not x755) x753)
+(or (not x819) (not x2) x1 x617)
+(or (not x755) x817)
+(or (not x2) (not x617) x819 x1)
+(or (not x827) (not x752) x826)
+(or (not x25) x819 x26 x617)
+(or (not x824) x826)
+(or (not x819) (not x25) (not x617) x26)
+(or (not x826) x824 x752)
+(or (not x819) (not x26) x25 x617)
+(or (not x826) x827 x824)
+(or (not x26) (not x617) x819 x25)
+(or (not x825) (not x749) x824)
+(or (not x18) x819 x19 x617)
+(or (not x822) x824)
+(or (not x819) (not x18) (not x617) x19)
+(or (not x824) x822 x749)
+(or (not x819) (not x19) x18 x617)
+(or (not x824) x825 x822)
+(or (not x19) (not x617) x819 x18)
+(or (not x823) (not x744) x822)
+(or (not x11) x819 x12 x617)
+(or (not x820) x822)
+(or (not x819) (not x11) (not x617) x12)
+(or (not x822) x820 x744)
+(or (not x819) (not x12) x11 x617)
+(or (not x822) x823 x820)
+(or (not x12) (not x617) x819 x11)
+(or (not x821) (not x741) x820)
+(or (not x4) x819 x5 x617)
+(or (not x818) x820)
+(or (not x819) (not x4) (not x617) x5)
+(or (not x820) x818 x741)
+(or (not x819) (not x5) x4 x617)
+(or (not x820) x821 x818)
+(or (not x5) (not x617) x819 x4)
+(or (not x755) (not x737) x818)
+(or (not x25) (not x26) x813 x1 x2)
+(or (not x737) x818)
+(or (not x18) (not x19) x813 x25 x26)
+(or (not x818) x737)
+(or (not x11) (not x12) x813 x18 x19)
+(or (not x818) x755 x737)
+(or (not x4) (not x5) x813 x11 x12)
+(or (not x817) x737)
+(or x813 x4 x5)
+(or (not x737) x817)
+(or (not x1) (not x2) x813)
+(or (not x737) x817)
+(or (not x813) (not x2) x1)
+(or (not x582) x817)
+(or (not x813) (not x1) x2)
+(or (not x817) x582)
+(or (not x813) (not x26) x25)
+(or (not x816) (not x751) x815)
+(or (not x813) (not x25) x26)
+(or (not x751) x815)
+(or (not x813) (not x19) x18)
+(or (not x815) x816 x751)
+(or (not x813) (not x18) x19)
+(or (not x815) x751)
+(or (not x813) (not x12) x11)
+(or (not x814) (not x747) x751)
+(or (not x813) (not x11) x12)
+(or (not x811) x751)
+(or (not x813) (not x5) x4)
+(or (not x751) x814 x811)
+(or (not x813) (not x4) x5)
+(or (not x751) x811 x747)
+(or (not x52) x801 x795 x439)
+(or (not x812) (not x743) x811)
+(or (not x801) (not x439) (not x52) x795)
+(or (not x809) x811)
+(or (not x801) x795 x439 x52)
+(or (not x811) x812 x809)
+(or (not x439) x801 x795 x52)
+(or (not x811) x809 x743)
+(or (not x795) (not x50) x801 x791 x434)
+(or (not x810) (not x740) x809)
+(or (not x801) (not x795) (not x434) (not x50) x791)
+(or (not x807) x809)
+(or (not x801) (not x795) x791 x434 x50)
+(or (not x809) x810 x807)
+(or (not x795) (not x434) x801 x791 x50)
+(or (not x809) x807 x740)
+(or (not x791) (not x48) x801 x788 x432)
+(or (not x808) (not x736) x807)
+(or (not x801) (not x791) (not x432) (not x48) x788)
+(or (not x806) x807)
+(or (not x801) (not x791) x788 x432 x48)
+(or (not x807) x808 x806)
+(or (not x791) (not x432) x801 x788 x48)
+(or (not x807) x806 x736)
+(or (not x788) (not x46) x801 x784 x429)
+(or (not x805) x806)
+(or (not x801) (not x788) (not x429) (not x46) x784)
+(or (not x806) x805)
+(or (not x801) (not x788) x784 x429 x46)
+(or (not x806) x805)
+(or (not x788) (not x429) x801 x784 x46)
+(or (not x581) x805)
+(or (not x784) (not x44) x801 x781 x424)
+(or (not x805) x581)
+(or (not x801) (not x784) (not x424) (not x44) x781)
+(or (not x804) (not x751) x803)
+(or (not x801) (not x784) x781 x424 x44)
+(or (not x800) x803)
+(or (not x784) (not x424) x801 x781 x44)
+(or (not x803) x804 x800)
+(or (not x781) (not x149) x801 x780 x420)
+(or (not x803) x800 x751)
+(or (not x801) (not x781) (not x420) (not x149) x780)
+(or (not x802) (not x747) x800)
+(or (not x801) (not x781) x780 x420 x149)
+(or (not x747) x800)
+(or (not x781) (not x420) x801 x780 x149)
+(or (not x800) x802 x747)
+(or (not x801) (not x799))
+(or (not x800) x747)
+(or (not x780) x799)
+(or (not x798) (not x743) x747)
+(or (not x799) x780)
+(or (not x796) x747)
+(or x795 x530 x439)
+(or (not x747) x798 x796)
+(or (not x530) (not x439) x795)
+(or (not x747) x796 x743)
+(or (not x795) (not x439) x530)
+(or (not x797) (not x740) x796)
+(or (not x795) (not x530) x439)
+(or (not x793) x796)
+(or (not x795) x791 x527 x434)
+(or (not x796) x797 x793)
+(or (not x795) (not x527) (not x434) x791)
+(or (not x796) x793 x740)
+(or (not x791) (not x434) x527)
+(or (not x794) (not x736) x793)
+(or (not x791) (not x527) x434)
+(or (not x792) x793)
+(or (not x791) x795)
+(or (not x793) x794 x792)
+(or (not x791) x788 x523 x432)
+(or (not x793) x792 x736)
+(or (not x791) (not x523) (not x432) x788)
+(or (not x790) x792)
+(or (not x788) (not x432) x523)
+(or (not x792) x790)
+(or (not x788) (not x523) x432)
+(or (not x792) x790)
+(or (not x788) x791)
+(or (not x580) x790)
+(or (not x788) x784 x519 x429)
+(or (not x790) x580)
+(or (not x788) (not x519) (not x429) x784)
+(or (not x789) (not x751) x787)
+(or (not x784) (not x429) x519)
+(or (not x785) x787)
+(or (not x784) (not x519) x429)
+(or (not x787) x789 x785)
+(or (not x784) x788)
+(or (not x787) x785 x751)
+(or (not x784) x781 x514 x424)
+(or (not x786) (not x747) x785)
+(or (not x784) (not x514) (not x424) x781)
+(or (not x782) x785)
+(or (not x781) (not x424) x514)
+(or (not x785) x786 x782)
+(or (not x781) (not x514) x424)
+(or (not x785) x782 x747)
+(or (not x781) x784)
+(or (not x783) (not x743) x782)
+(or (not x781) x780 x511 x420)
+(or (not x743) x782)
+(or (not x781) (not x511) (not x420) x780)
+(or (not x782) x783 x743)
+(or (not x780) (not x420) x511)
+(or (not x782) x743)
+(or (not x780) (not x511) x420)
+(or (not x779) (not x740) x743)
+(or (not x780) x781)
+(or (not x777) x743)
+(or (not x748) (not x483) (not x393))
+(or (not x743) x779 x777)
+(or (not x483) (not x393) x745)
+(or (not x743) x777 x740)
+(or (not x748) (not x483) (not x392) x95)
+(or (not x778) (not x736) x777)
+(or (not x483) (not x392) (not x95) x748)
+(or (not x776) x777)
+(or (not x745) (not x483) (not x392))
+(or (not x777) x778 x776)
+(or (not x748) (not x483) (not x390) x94)
+(or (not x777) x776 x736)
+(or (not x483) (not x390) (not x94) x748)
+(or (not x775) x776)
+(or (not x745) (not x483) (not x390))
+(or (not x776) x775)
+(or (not x748) (not x483) (not x387) x92)
+(or (not x776) x775)
+(or (not x483) (not x387) (not x92) x748)
+(or (not x579) x775)
+(or (not x745) (not x483) (not x387))
+(or (not x775) x579)
+(or (not x748) (not x483) (not x384) x91)
+(or (not x774) (not x751) x773)
+(or (not x483) (not x384) (not x91) x748)
+(or (not x771) x773)
+(or (not x745) (not x483) (not x384))
+(or (not x773) x774 x771)
+(or (not x748) (not x481) (not x393) x89)
+(or (not x773) x771 x751)
+(or (not x481) (not x393) (not x89) x748)
+(or (not x772) (not x747) x771)
+(or (not x745) (not x481) (not x393))
+(or (not x769) x771)
+(or (not x748) (not x481) (not x392))
+(or (not x771) x772 x769)
+(or (not x481) (not x392) x745)
+(or (not x771) x769 x747)
+(or (not x748) (not x481) (not x390) x88)
+(or (not x770) (not x743) x769)
+(or (not x481) (not x390) (not x88) x748)
+(or (not x767) x769)
+(or (not x745) (not x481) (not x390))
+(or (not x769) x770 x767)
+(or (not x748) (not x481) (not x387) x87)
+(or (not x769) x767 x743)
+(or (not x481) (not x387) (not x87) x748)
+(or (not x768) (not x740) x767)
+(or (not x745) (not x481) (not x387))
+(or (not x740) x767)
+(or (not x748) (not x481) (not x384) x86)
+(or (not x767) x768 x740)
+(or (not x481) (not x384) (not x86) x748)
+(or (not x767) x740)
+(or (not x745) (not x481) (not x384))
+(or (not x766) (not x736) x740)
+(or (not x748) (not x478) (not x393) x82)
+(or (not x765) x740)
+(or (not x478) (not x393) (not x82) x748)
+(or (not x740) x766 x765)
+(or (not x745) (not x478) (not x393))
+(or (not x740) x765 x736)
+(or (not x748) (not x478) (not x392) x81)
+(or (not x764) x765)
+(or (not x478) (not x392) (not x81) x748)
+(or (not x765) x764)
+(or (not x745) (not x478) (not x392))
+(or (not x765) x764)
+(or (not x748) (not x478) (not x390))
+(or (not x578) x764)
+(or (not x478) (not x390) x745)
+(or (not x764) x578)
+(or (not x748) (not x478) (not x387) x79)
+(or (not x763) (not x751) x762)
+(or (not x478) (not x387) (not x79) x748)
+(or (not x760) x762)
+(or (not x745) (not x478) (not x387))
+(or (not x762) x763 x760)
+(or (not x748) (not x478) (not x384) x77)
+(or (not x762) x760 x751)
+(or (not x478) (not x384) (not x77) x748)
+(or (not x761) (not x747) x760)
+(or (not x745) (not x478) (not x384))
+(or (not x758) x760)
+(or (not x748) (not x476) (not x393) x73)
+(or (not x760) x761 x758)
+(or (not x476) (not x393) (not x73) x748)
+(or (not x760) x758 x747)
+(or (not x745) (not x476) (not x393))
+(or (not x759) (not x743) x758)
+(or (not x748) (not x476) (not x392) x67)
+(or (not x756) x758)
+(or (not x476) (not x392) (not x67) x748)
+(or (not x758) x759 x756)
+(or (not x745) (not x476) (not x392))
+(or (not x758) x756 x743)
+(or (not x748) (not x476) (not x390) x66)
+(or (not x757) (not x740) x756)
+(or (not x476) (not x390) (not x66) x748)
+(or (not x754) x756)
+(or (not x745) (not x476) (not x390))
+(or (not x756) x757 x754)
+(or (not x748) (not x476) (not x387))
+(or (not x756) x754 x740)
+(or (not x476) (not x387) x745)
+(or (not x755) (not x736) x754)
+(or (not x748) (not x476) (not x384) x65)
+(or (not x736) x754)
+(or (not x476) (not x384) (not x65) x748)
+(or (not x754) x755 x736)
+(or (not x745) (not x476) (not x384))
+(or (not x754) x736)
+(or (not x748) (not x473) (not x393) x58)
+(or (not x753) x736)
+(or (not x473) (not x393) (not x58) x748)
+(or (not x736) x753)
+(or (not x745) (not x473) (not x393))
+(or (not x736) x753)
+(or (not x748) (not x473) (not x392) x57)
+(or (not x577) x753)
+(or (not x473) (not x392) (not x57) x748)
+(or (not x753) x577)
+(or (not x745) (not x473) (not x392))
+(or (not x752) (not x751) x750)
+(or (not x748) (not x473) (not x390) x56)
+(or (not x746) x750)
+(or (not x473) (not x390) (not x56) x748)
+(or (not x750) x752 x746)
+(or (not x745) (not x473) (not x390))
+(or (not x750) x751 x746)
+(or (not x748) (not x473) (not x387) x55)
+(or (not x749) (not x747) x746)
+(or (not x473) (not x387) (not x55) x748)
+(or (not x742) x746)
+(or (not x745) (not x473) (not x387))
+(or (not x746) x749 x742)
+(or (not x748) (not x473) (not x384))
+(or (not x746) x747 x742)
+(or (not x473) (not x384) x745)
+(or (not x744) (not x743) x742)
+(or (not x682) (not x69) (not x9) x738)
+(or (not x739) x742)
+(or (not x738) (not x716) (not x683) x730 x725)
+(or (not x742) x744 x739)
+(or (not x738) (not x683) x718 x716)
+(or (not x742) x743 x739)
+(or (not x738) x685 x683)
+(or (not x741) (not x740) x739)
+(or (not x725) (not x716) (not x683) x738)
+(or (not x735) x739)
+(or (not x730) (not x716) (not x683) x738)
+(or (not x739) x741 x735)
+(or (not x718) (not x683) x738)
+(or (not x739) x740 x735)
+(or (not x685) x738)
+(or (not x737) (not x736) x735)
+(or (not x730) (not x725))
+(or (not x735) x737)
+(or (not x1) x730 x366 x617)
+(or (not x735) x736)
+(or (not x730) (not x1) (not x617) x366)
+(or (not x188) (not x39) x734)
+(or (not x730) (not x366) x1 x617)
+(or (not x458) x734)
+(or (not x366) (not x617) x730 x1)
+(or (not x734) x458 x188)
+(or (not x25) x730 x363 x617)
+(or (not x734) x39)
+(or (not x730) (not x25) (not x617) x363)
+(or (not x188) (not x40) x733)
+(or (not x730) (not x363) x25 x617)
+(or (not x456) x733)
+(or (not x363) (not x617) x730 x25)
+(or (not x733) x456 x188)
+(or (not x18) x730 x362 x617)
+(or (not x733) x40)
+(or (not x730) (not x18) (not x617) x362)
+(or (not x188) (not x41) x732)
+(or (not x730) (not x362) x18 x617)
+(or (not x453) x732)
+(or (not x362) (not x617) x730 x18)
+(or (not x732) x453 x188)
+(or (not x11) x730 x361 x617)
+(or (not x732) x41)
+(or (not x730) (not x11) (not x617) x361)
+(or (not x188) (not x42) x731)
+(or (not x730) (not x361) x11 x617)
+(or (not x451) x731)
+(or (not x361) (not x617) x730 x11)
+(or (not x731) x451 x188)
+(or (not x4) x730 x360 x617)
+(or (not x731) x42)
+(or (not x730) (not x4) (not x617) x360)
+(or (not x188) (not x43) x729)
+(or (not x730) (not x360) x4 x617)
+(or (not x449) x729)
+(or (not x360) (not x617) x730 x4)
+(or (not x729) x449 x188)
+(or (not x25) (not x363) x725 x1 x366)
+(or (not x729) x43)
+(or (not x18) (not x362) x725 x25 x363)
+(or (not x175) (not x32) x728)
+(or (not x11) (not x361) x725 x18 x362)
+(or (not x447) x728)
+(or (not x4) (not x360) x725 x11 x361)
+(or (not x728) x447 x175)
+(or x725 x4 x360)
+(or (not x728) x32)
+(or (not x1) (not x366) x725)
+(or (not x175) (not x33) x727)
+(or (not x725) (not x366) x1)
+(or (not x445) x727)
+(or (not x725) (not x1) x366)
+(or (not x727) x445 x175)
+(or (not x725) (not x363) x25)
+(or (not x727) x33)
+(or (not x725) (not x25) x363)
+(or (not x175) (not x34) x726)
+(or (not x725) (not x362) x18)
+(or (not x441) x726)
+(or (not x725) (not x18) x362)
+(or (not x726) x441 x175)
+(or (not x725) (not x361) x11)
+(or (not x726) x34)
+(or (not x725) (not x11) x361)
+(or (not x175) (not x35) x724)
+(or (not x725) (not x360) x4)
+(or (not x438) x724)
+(or (not x725) (not x4) x360)
+(or (not x724) x438 x175)
+(or (not x52) x718 x713 x343)
+(or (not x724) x35)
+(or (not x718) (not x343) (not x52) x713)
+(or (not x175) (not x36) x723)
+(or (not x718) x713 x343 x52)
+(or (not x436) x723)
+(or (not x343) x718 x713 x52)
+(or (not x723) x436 x175)
+(or (not x713) (not x50) x718 x711 x341)
+(or (not x723) x36)
+(or (not x718) (not x713) (not x341) (not x50) x711)
+(or (not x153) (not x27) x722)
+(or (not x718) (not x713) x711 x341 x50)
+(or (not x430) x722)
+(or (not x713) (not x341) x718 x711 x50)
+(or (not x722) x430 x153)
+(or (not x711) (not x48) x718 x708 x337)
+(or (not x722) x27)
+(or (not x718) (not x711) (not x337) (not x48) x708)
+(or (not x153) (not x28) x721)
+(or (not x718) (not x711) x708 x337 x48)
+(or (not x428) x721)
+(or (not x711) (not x337) x718 x708 x48)
+(or (not x721) x428 x153)
+(or (not x708) (not x46) x718 x706 x331)
+(or (not x721) x28)
+(or (not x718) (not x708) (not x331) (not x46) x706)
+(or (not x153) (not x29) x720)
+(or (not x718) (not x708) x706 x331 x46)
+(or (not x422) x720)
+(or (not x708) (not x331) x718 x706 x46)
+(or (not x720) x422 x153)
+(or (not x706) (not x44) x718 x704 x329)
+(or (not x720) x29)
+(or (not x718) (not x706) (not x329) (not x44) x704)
+(or (not x153) (not x30) x719)
+(or (not x718) (not x706) x704 x329 x44)
+(or (not x417) x719)
+(or (not x706) (not x329) x718 x704 x44)
+(or (not x719) x417 x153)
+(or (not x704) (not x149) x718 x703 x326)
+(or (not x719) x30)
+(or (not x718) (not x704) (not x326) (not x149) x703)
+(or (not x153) (not x31) x717)
+(or (not x718) (not x704) x703 x326 x149)
+(or (not x415) x717)
+(or (not x704) (not x326) x718 x703 x149)
+(or (not x717) x415 x153)
+(or (not x718) (not x716))
+(or (not x717) x31)
+(or (not x703) x716)
+(or (not x131) (not x20) x715)
+(or (not x716) x703)
+(or (not x413) x715)
+(or x713 x530 x343)
+(or (not x715) x413 x131)
+(or (not x530) (not x343) x713)
+(or (not x715) x20)
+(or (not x713) (not x343) x530)
+(or (not x131) (not x21) x714)
+(or (not x713) (not x530) x343)
+(or (not x412) x714)
+(or (not x713) x711 x527 x341)
+(or (not x714) x412 x131)
+(or (not x713) (not x527) (not x341) x711)
+(or (not x714) x21)
+(or (not x711) (not x341) x527)
+(or (not x131) (not x22) x712)
+(or (not x711) (not x527) x341)
+(or (not x410) x712)
+(or (not x711) x713)
+(or (not x712) x410 x131)
+(or (not x711) x708 x523 x337)
+(or (not x712) x22)
+(or (not x711) (not x523) (not x337) x708)
+(or (not x131) (not x23) x710)
+(or (not x708) (not x337) x523)
+(or (not x407) x710)
+(or (not x708) (not x523) x337)
+(or (not x710) x407 x131)
+(or (not x708) x711)
+(or (not x710) x23)
+(or (not x708) x706 x519 x331)
+(or (not x131) (not x24) x709)
+(or (not x708) (not x519) (not x331) x706)
+(or (not x405) x709)
+(or (not x706) (not x331) x519)
+(or (not x709) x405 x131)
+(or (not x706) (not x519) x331)
+(or (not x709) x24)
+(or (not x706) x708)
+(or (not x110) (not x13) x707)
+(or (not x706) x704 x514 x329)
+(or (not x403) x707)
+(or (not x706) (not x514) (not x329) x704)
+(or (not x707) x403 x110)
+(or (not x704) (not x329) x514)
+(or (not x707) x13)
+(or (not x704) (not x514) x329)
+(or (not x110) (not x14) x705)
+(or (not x704) x706)
+(or (not x402) x705)
+(or (not x704) x703 x511 x326)
+(or (not x705) x402 x110)
+(or (not x704) (not x511) (not x326) x703)
+(or (not x705) x14)
+(or (not x703) (not x326) x511)
+(or (not x110) (not x15) x702)
+(or (not x703) (not x511) x326)
+(or (not x400) x702)
+(or (not x703) x704)
+(or (not x702) x400 x110)
+(or (not x685) (not x483) (not x299))
+(or (not x702) x15)
+(or (not x483) (not x299) x683)
+(or (not x110) (not x16) x701)
+(or (not x685) (not x483) (not x296) x95)
+(or (not x398) x701)
+(or (not x483) (not x296) (not x95) x685)
+(or (not x701) x398 x110)
+(or (not x683) (not x483) (not x296))
+(or (not x701) x16)
+(or (not x685) (not x483) (not x293) x94)
+(or (not x110) (not x17) x700)
+(or (not x483) (not x293) (not x94) x685)
+(or (not x395) x700)
+(or (not x683) (not x483) (not x293))
+(or (not x700) x395 x110)
+(or (not x685) (not x483) (not x291) x92)
+(or (not x700) x17)
+(or (not x483) (not x291) (not x92) x685)
+(or (not x69) (not x6) x699)
+(or (not x683) (not x483) (not x291))
+(or (not x391) x699)
+(or (not x685) (not x483) (not x288) x91)
+(or (not x699) x391 x69)
+(or (not x483) (not x288) (not x91) x685)
+(or (not x699) x6)
+(or (not x683) (not x483) (not x288))
+(or (not x69) (not x7) x698)
+(or (not x685) (not x481) (not x299) x89)
+(or (not x389) x698)
+(or (not x481) (not x299) (not x89) x685)
+(or (not x698) x389 x69)
+(or (not x683) (not x481) (not x299))
+(or (not x698) x7)
+(or (not x685) (not x481) (not x296))
+(or (not x69) (not x8) x697)
+(or (not x481) (not x296) x683)
+(or (not x383) x697)
+(or (not x685) (not x481) (not x293) x88)
+(or (not x697) x383 x69)
+(or (not x481) (not x293) (not x88) x685)
+(or (not x697) x8)
+(or (not x683) (not x481) (not x293))
+(or (not x69) (not x9) x696)
+(or (not x685) (not x481) (not x291) x87)
+(or (not x381) x696)
+(or (not x481) (not x291) (not x87) x685)
+(or (not x696) x381 x69)
+(or (not x683) (not x481) (not x291))
+(or (not x696) x9)
+(or (not x685) (not x481) (not x288) x86)
+(or (not x69) (not x10) x695)
+(or (not x481) (not x288) (not x86) x685)
+(or (not x378) x695)
+(or (not x683) (not x481) (not x288))
+(or (not x695) x378 x69)
+(or (not x685) (not x478) (not x299) x82)
+(or (not x695) x10)
+(or (not x478) (not x299) (not x82) x685)
+(or (not x188) (not x39) x694)
+(or (not x683) (not x478) (not x299))
+(or (not x375) x694)
+(or (not x685) (not x478) (not x296) x81)
+(or (not x694) x375 x188)
+(or (not x478) (not x296) (not x81) x685)
+(or (not x694) x39)
+(or (not x683) (not x478) (not x296))
+(or (not x188) (not x40) x693)
+(or (not x685) (not x478) (not x293))
+(or (not x373) x693)
+(or (not x478) (not x293) x683)
+(or (not x693) x373 x188)
+(or (not x685) (not x478) (not x291) x79)
+(or (not x693) x40)
+(or (not x478) (not x291) (not x79) x685)
+(or (not x188) (not x41) x692)
+(or (not x683) (not x478) (not x291))
+(or (not x370) x692)
+(or (not x685) (not x478) (not x288) x77)
+(or (not x692) x370 x188)
+(or (not x478) (not x288) (not x77) x685)
+(or (not x692) x41)
+(or (not x683) (not x478) (not x288))
+(or (not x188) (not x42) x691)
+(or (not x685) (not x476) (not x299) x73)
+(or (not x368) x691)
+(or (not x476) (not x299) (not x73) x685)
+(or (not x691) x368 x188)
+(or (not x683) (not x476) (not x299))
+(or (not x691) x42)
+(or (not x685) (not x476) (not x296) x67)
+(or (not x188) (not x43) x690)
+(or (not x476) (not x296) (not x67) x685)
+(or (not x365) x690)
+(or (not x683) (not x476) (not x296))
+(or (not x690) x365 x188)
+(or (not x685) (not x476) (not x293) x66)
+(or (not x690) x43)
+(or (not x476) (not x293) (not x66) x685)
+(or (not x175) (not x32) x689)
+(or (not x683) (not x476) (not x293))
+(or (not x358) x689)
+(or (not x685) (not x476) (not x291))
+(or (not x689) x358 x175)
+(or (not x476) (not x291) x683)
+(or (not x689) x32)
+(or (not x685) (not x476) (not x288) x65)
+(or (not x175) (not x33) x688)
+(or (not x476) (not x288) (not x65) x685)
+(or (not x356) x688)
+(or (not x683) (not x476) (not x288))
+(or (not x688) x356 x175)
+(or (not x685) (not x473) (not x299) x58)
+(or (not x688) x33)
+(or (not x473) (not x299) (not x58) x685)
+(or (not x175) (not x34) x687)
+(or (not x683) (not x473) (not x299))
+(or (not x354) x687)
+(or (not x685) (not x473) (not x296) x57)
+(or (not x687) x354 x175)
+(or (not x473) (not x296) (not x57) x685)
+(or (not x687) x34)
+(or (not x683) (not x473) (not x296))
+(or (not x175) (not x35) x686)
+(or (not x685) (not x473) (not x293) x56)
+(or (not x352) x686)
+(or (not x473) (not x293) (not x56) x685)
+(or (not x686) x352 x175)
+(or (not x683) (not x473) (not x293))
+(or (not x686) x35)
+(or (not x685) (not x473) (not x291) x55)
+(or (not x175) (not x36) x684)
+(or (not x473) (not x291) (not x55) x685)
+(or (not x350) x684)
+(or (not x683) (not x473) (not x291))
+(or (not x684) x350 x175)
+(or (not x685) (not x473) (not x288))
+(or (not x684) x36)
+(or (not x473) (not x288) x683)
+(or (not x153) (not x27) x681)
+(or (not x682) (not x69) (not x10) x679)
+(or (not x347) x681)
+(or (not x679) (not x659) (not x627) x673 x668)
+(or (not x681) x347 x153)
+(or (not x679) (not x627) x661 x659)
+(or (not x681) x27)
+(or (not x679) x628 x627)
+(or (not x153) (not x28) x680)
+(or (not x668) (not x659) (not x627) x679)
+(or (not x345) x680)
+(or (not x673) (not x659) (not x627) x679)
+(or (not x680) x345 x153)
+(or (not x661) (not x627) x679)
+(or (not x680) x28)
+(or (not x628) x679)
+(or (not x153) (not x29) x678)
+(or (not x673) (not x668))
+(or (not x339) x678)
+(or (not x1) x673 x272 x617)
+(or (not x678) x339 x153)
+(or (not x673) (not x1) (not x617) x272)
+(or (not x678) x29)
+(or (not x673) (not x272) x1 x617)
+(or (not x153) (not x30) x677)
+(or (not x272) (not x617) x673 x1)
+(or (not x335) x677)
+(or (not x25) x673 x269 x617)
+(or (not x677) x335 x153)
+(or (not x673) (not x25) (not x617) x269)
+(or (not x677) x30)
+(or (not x673) (not x269) x25 x617)
+(or (not x153) (not x31) x676)
+(or (not x269) (not x617) x673 x25)
+(or (not x333) x676)
+(or (not x18) x673 x268 x617)
+(or (not x676) x333 x153)
+(or (not x673) (not x18) (not x617) x268)
+(or (not x676) x31)
+(or (not x673) (not x268) x18 x617)
+(or (not x131) (not x20) x675)
+(or (not x268) (not x617) x673 x18)
+(or (not x327) x675)
+(or (not x11) x673 x265 x617)
+(or (not x675) x327 x131)
+(or (not x673) (not x11) (not x617) x265)
+(or (not x675) x20)
+(or (not x673) (not x265) x11 x617)
+(or (not x131) (not x21) x674)
+(or (not x265) (not x617) x673 x11)
+(or (not x323) x674)
+(or (not x4) x673 x264 x617)
+(or (not x674) x323 x131)
+(or (not x673) (not x4) (not x617) x264)
+(or (not x674) x21)
+(or (not x673) (not x264) x4 x617)
+(or (not x131) (not x22) x672)
+(or (not x264) (not x617) x673 x4)
+(or (not x321) x672)
+(or (not x25) (not x269) x668 x1 x272)
+(or (not x672) x321 x131)
+(or (not x18) (not x268) x668 x25 x269)
+(or (not x672) x22)
+(or (not x11) (not x265) x668 x18 x268)
+(or (not x131) (not x23) x671)
+(or (not x4) (not x264) x668 x11 x265)
+(or (not x318) x671)
+(or x668 x4 x264)
+(or (not x671) x318 x131)
+(or (not x1) (not x272) x668)
+(or (not x671) x23)
+(or (not x668) (not x272) x1)
+(or (not x131) (not x24) x670)
+(or (not x668) (not x1) x272)
+(or (not x316) x670)
+(or (not x668) (not x269) x25)
+(or (not x670) x316 x131)
+(or (not x668) (not x25) x269)
+(or (not x670) x24)
+(or (not x668) (not x268) x18)
+(or (not x110) (not x13) x669)
+(or (not x668) (not x18) x268)
+(or (not x314) x669)
+(or (not x668) (not x265) x11)
+(or (not x669) x314 x110)
+(or (not x668) (not x11) x265)
+(or (not x669) x13)
+(or (not x668) (not x264) x4)
+(or (not x110) (not x14) x667)
+(or (not x668) (not x4) x264)
+(or (not x313) x667)
+(or (not x52) x661 x656 x246)
+(or (not x667) x313 x110)
+(or (not x661) (not x246) (not x52) x656)
+(or (not x667) x14)
+(or (not x661) x656 x246 x52)
+(or (not x110) (not x15) x666)
+(or (not x246) x661 x656 x52)
+(or (not x311) x666)
+(or (not x656) (not x50) x661 x654 x245)
+(or (not x666) x311 x110)
+(or (not x661) (not x656) (not x245) (not x50) x654)
+(or (not x666) x15)
+(or (not x661) (not x656) x654 x245 x50)
+(or (not x110) (not x16) x665)
+(or (not x656) (not x245) x661 x654 x50)
+(or (not x309) x665)
+(or (not x654) (not x48) x661 x652 x242)
+(or (not x665) x309 x110)
+(or (not x661) (not x654) (not x242) (not x48) x652)
+(or (not x665) x16)
+(or (not x661) (not x654) x652 x242 x48)
+(or (not x110) (not x17) x664)
+(or (not x654) (not x242) x661 x652 x48)
+(or (not x306) x664)
+(or (not x652) (not x46) x661 x649 x238)
+(or (not x664) x306 x110)
+(or (not x661) (not x652) (not x238) (not x46) x649)
+(or (not x664) x17)
+(or (not x661) (not x652) x649 x238 x46)
+(or (not x69) (not x6) x663)
+(or (not x652) (not x238) x661 x649 x46)
+(or (not x304) x663)
+(or (not x649) (not x44) x661 x647 x233)
+(or (not x663) x304 x69)
+(or (not x661) (not x649) (not x233) (not x44) x647)
+(or (not x663) x6)
+(or (not x661) (not x649) x647 x233 x44)
+(or (not x69) (not x7) x662)
+(or (not x649) (not x233) x661 x647 x44)
+(or (not x303) x662)
+(or (not x647) (not x149) x661 x646 x229)
+(or (not x662) x303 x69)
+(or (not x661) (not x647) (not x229) (not x149) x646)
+(or (not x662) x7)
+(or (not x661) (not x647) x646 x229 x149)
+(or (not x69) (not x8) x660)
+(or (not x647) (not x229) x661 x646 x149)
+(or (not x301) x660)
+(or (not x661) (not x659))
+(or (not x660) x301 x69)
+(or (not x646) x659)
+(or (not x660) x8)
+(or (not x659) x646)
+(or (not x69) (not x9) x658)
+(or x656 x530 x246)
+(or (not x298) x658)
+(or (not x530) (not x246) x656)
+(or (not x658) x298 x69)
+(or (not x656) (not x246) x530)
+(or (not x658) x9)
+(or (not x656) (not x530) x246)
+(or (not x69) (not x10) x657)
+(or (not x656) x654 x527 x245)
+(or (not x295) x657)
+(or (not x656) (not x527) (not x245) x654)
+(or (not x657) x295 x69)
+(or (not x654) (not x245) x527)
+(or (not x657) x10)
+(or (not x654) (not x527) x245)
+(or (not x188) (not x39) x655)
+(or (not x654) x656)
+(or (not x285) x655)
+(or (not x654) x652 x523 x242)
+(or (not x655) x285 x188)
+(or (not x654) (not x523) (not x242) x652)
+(or (not x655) x39)
+(or (not x652) (not x242) x523)
+(or (not x188) (not x40) x653)
+(or (not x652) (not x523) x242)
+(or (not x283) x653)
+(or (not x652) x654)
+(or (not x653) x283 x188)
+(or (not x652) x649 x519 x238)
+(or (not x653) x40)
+(or (not x652) (not x519) (not x238) x649)
+(or (not x188) (not x41) x651)
+(or (not x649) (not x238) x519)
+(or (not x281) x651)
+(or (not x649) (not x519) x238)
+(or (not x651) x281 x188)
+(or (not x649) x652)
+(or (not x651) x41)
+(or (not x649) x647 x514 x233)
+(or (not x188) (not x42) x650)
+(or (not x649) (not x514) (not x233) x647)
+(or (not x279) x650)
+(or (not x647) (not x233) x514)
+(or (not x650) x279 x188)
+(or (not x647) (not x514) x233)
+(or (not x650) x42)
+(or (not x647) x649)
+(or (not x188) (not x43) x648)
+(or (not x647) x646 x511 x229)
+(or (not x277) x648)
+(or (not x647) (not x511) (not x229) x646)
+(or (not x648) x277 x188)
+(or (not x646) (not x229) x511)
+(or (not x648) x43)
+(or (not x646) (not x511) x229)
+(or (not x175) (not x32) x645)
+(or (not x646) x647)
+(or (not x274) x645)
+(or (not x628) (not x483) (not x204))
+(or (not x645) x274 x175)
+(or (not x483) (not x204) x627)
+(or (not x645) x32)
+(or (not x628) (not x483) (not x203) x95)
+(or (not x175) (not x33) x644)
+(or (not x483) (not x203) (not x95) x628)
+(or (not x271) x644)
+(or (not x627) (not x483) (not x203))
+(or (not x644) x271 x175)
+(or (not x628) (not x483) (not x200) x94)
+(or (not x644) x33)
+(or (not x483) (not x200) (not x94) x628)
+(or (not x175) (not x34) x643)
+(or (not x627) (not x483) (not x200))
+(or (not x267) x643)
+(or (not x628) (not x483) (not x197) x92)
+(or (not x643) x267 x175)
+(or (not x483) (not x197) (not x92) x628)
+(or (not x643) x34)
+(or (not x627) (not x483) (not x197))
+(or (not x175) (not x35) x642)
+(or (not x628) (not x483) (not x194) x91)
+(or (not x262) x642)
+(or (not x483) (not x194) (not x91) x628)
+(or (not x642) x262 x175)
+(or (not x627) (not x483) (not x194))
+(or (not x642) x35)
+(or (not x628) (not x481) (not x204) x89)
+(or (not x175) (not x36) x641)
+(or (not x481) (not x204) (not x89) x628)
+(or (not x260) x641)
+(or (not x627) (not x481) (not x204))
+(or (not x641) x260 x175)
+(or (not x628) (not x481) (not x203))
+(or (not x641) x36)
+(or (not x481) (not x203) x627)
+(or (not x153) (not x27) x640)
+(or (not x628) (not x481) (not x200) x88)
+(or (not x258) x640)
+(or (not x481) (not x200) (not x88) x628)
+(or (not x640) x258 x153)
+(or (not x627) (not x481) (not x200))
+(or (not x640) x27)
+(or (not x628) (not x481) (not x197) x87)
+(or (not x153) (not x28) x639)
+(or (not x481) (not x197) (not x87) x628)
+(or (not x257) x639)
+(or (not x627) (not x481) (not x197))
+(or (not x639) x257 x153)
+(or (not x628) (not x481) (not x194) x86)
+(or (not x639) x28)
+(or (not x481) (not x194) (not x86) x628)
+(or (not x153) (not x29) x638)
+(or (not x627) (not x481) (not x194))
+(or (not x254) x638)
+(or (not x628) (not x478) (not x204) x82)
+(or (not x638) x254 x153)
+(or (not x478) (not x204) (not x82) x628)
+(or (not x638) x29)
+(or (not x627) (not x478) (not x204))
+(or (not x153) (not x30) x637)
+(or (not x628) (not x478) (not x203) x81)
+(or (not x250) x637)
+(or (not x478) (not x203) (not x81) x628)
+(or (not x637) x250 x153)
+(or (not x627) (not x478) (not x203))
+(or (not x637) x30)
+(or (not x628) (not x478) (not x200))
+(or (not x153) (not x31) x636)
+(or (not x478) (not x200) x627)
+(or (not x248) x636)
+(or (not x628) (not x478) (not x197) x79)
+(or (not x636) x248 x153)
+(or (not x478) (not x197) (not x79) x628)
+(or (not x636) x31)
+(or (not x627) (not x478) (not x197))
+(or (not x131) (not x20) x635)
+(or (not x628) (not x478) (not x194) x77)
+(or (not x243) x635)
+(or (not x478) (not x194) (not x77) x628)
+(or (not x635) x243 x131)
+(or (not x627) (not x478) (not x194))
+(or (not x635) x20)
+(or (not x628) (not x476) (not x204) x73)
+(or (not x131) (not x21) x634)
+(or (not x476) (not x204) (not x73) x628)
+(or (not x240) x634)
+(or (not x627) (not x476) (not x204))
+(or (not x634) x240 x131)
+(or (not x628) (not x476) (not x203) x67)
+(or (not x634) x21)
+(or (not x476) (not x203) (not x67) x628)
+(or (not x131) (not x22) x633)
+(or (not x627) (not x476) (not x203))
+(or (not x237) x633)
+(or (not x628) (not x476) (not x200) x66)
+(or (not x633) x237 x131)
+(or (not x476) (not x200) (not x66) x628)
+(or (not x633) x22)
+(or (not x627) (not x476) (not x200))
+(or (not x131) (not x23) x632)
+(or (not x628) (not x476) (not x197))
+(or (not x231) x632)
+(or (not x476) (not x197) x627)
+(or (not x632) x231 x131)
+(or (not x628) (not x476) (not x194) x65)
+(or (not x632) x23)
+(or (not x476) (not x194) (not x65) x628)
+(or (not x131) (not x24) x631)
+(or (not x627) (not x476) (not x194))
+(or (not x228) x631)
+(or (not x628) (not x473) (not x204) x58)
+(or (not x631) x228 x131)
+(or (not x473) (not x204) (not x58) x628)
+(or (not x631) x24)
+(or (not x627) (not x473) (not x204))
+(or (not x110) (not x13) x630)
+(or (not x628) (not x473) (not x203) x57)
+(or (not x224) x630)
+(or (not x473) (not x203) (not x57) x628)
+(or (not x630) x224 x110)
+(or (not x627) (not x473) (not x203))
+(or (not x630) x13)
+(or (not x628) (not x473) (not x200) x56)
+(or (not x110) (not x14) x629)
+(or (not x473) (not x200) (not x56) x628)
+(or (not x223) x629)
+(or (not x627) (not x473) (not x200))
+(or (not x629) x223 x110)
+(or (not x628) (not x473) (not x197) x55)
+(or (not x629) x14)
+(or (not x473) (not x197) (not x55) x628)
+(or (not x110) (not x15) x626)
+(or (not x627) (not x473) (not x197))
+(or (not x221) x626)
+(or (not x628) (not x473) (not x194))
+(or (not x626) x221 x110)
+(or (not x473) (not x194) x627)
+(or (not x626) x15)
+(or (not x624) (not x603) (not x567) x618 x612)
+(or (not x110) (not x16) x625)
+(or (not x624) (not x567) x604 x603)
+(or (not x219) x625)
+(or (not x624) x569 x567)
+(or (not x625) x219 x110)
+(or (not x612) (not x603) (not x567) x624)
+(or (not x625) x16)
+(or (not x618) (not x603) (not x567) x624)
+(or (not x110) (not x17) x623)
+(or (not x604) (not x567) x624)
+(or (not x216) x623)
+(or (not x569) x624)
+(or (not x623) x216 x110)
+(or (not x618) (not x612))
+(or (not x623) x17)
+(or (not x1) x618 x172 x617)
+(or (not x69) (not x6) x622)
+(or (not x618) (not x1) (not x617) x172)
+(or (not x214) x622)
+(or (not x618) (not x172) x1 x617)
+(or (not x622) x214 x69)
+(or (not x172) (not x617) x618 x1)
+(or (not x622) x6)
+(or (not x25) x618 x170 x617)
+(or (not x69) (not x7) x621)
+(or (not x618) (not x25) (not x617) x170)
+(or (not x213) x621)
+(or (not x618) (not x170) x25 x617)
+(or (not x621) x213 x69)
+(or (not x170) (not x617) x618 x25)
+(or (not x621) x7)
+(or (not x18) x618 x168 x617)
+(or (not x69) (not x8) x620)
+(or (not x618) (not x18) (not x617) x168)
+(or (not x211) x620)
+(or (not x618) (not x168) x18 x617)
+(or (not x620) x211 x69)
+(or (not x168) (not x617) x618 x18)
+(or (not x620) x8)
+(or (not x11) x618 x165 x617)
+(or (not x69) (not x9) x619)
+(or (not x618) (not x11) (not x617) x165)
+(or (not x209) x619)
+(or (not x618) (not x165) x11 x617)
+(or (not x619) x209 x69)
+(or (not x165) (not x617) x618 x11)
+(or (not x619) x9)
+(or (not x4) x618 x163 x617)
+(or (not x69) (not x10) x616)
+(or (not x618) (not x4) (not x617) x163)
+(or (not x207) x616)
+(or (not x618) (not x163) x4 x617)
+(or (not x616) x207 x69)
+(or (not x163) (not x617) x618 x4)
+(or (not x616) x10)
+(or (not x25) (not x170) x612 x1 x172)
+(or (not x188) (not x39) x615)
+(or (not x18) (not x168) x612 x25 x170)
+(or (not x202) x615)
+(or (not x11) (not x165) x612 x18 x168)
+(or (not x615) x202 x188)
+(or (not x4) (not x163) x612 x11 x165)
+(or (not x615) x39)
+(or x612 x4 x163)
+(or (not x188) (not x40) x614)
+(or (not x1) (not x172) x612)
+(or (not x199) x614)
+(or (not x612) (not x172) x1)
+(or (not x614) x199 x188)
+(or (not x612) (not x1) x172)
+(or (not x614) x40)
+(or (not x612) (not x170) x25)
+(or (not x188) (not x41) x613)
+(or (not x612) (not x25) x170)
+(or (not x193) x613)
+(or (not x612) (not x168) x18)
+(or (not x613) x193 x188)
+(or (not x612) (not x18) x168)
+(or (not x613) x41)
+(or (not x612) (not x165) x11)
+(or (not x188) (not x42) x611)
+(or (not x612) (not x11) x165)
+(or (not x191) x611)
+(or (not x612) (not x163) x4)
+(or (not x611) x191 x188)
+(or (not x612) (not x4) x163)
+(or (not x611) x42)
+(or (not x52) x604 x600 x144)
+(or (not x188) (not x43) x610)
+(or (not x604) (not x144) (not x52) x600)
+(or (not x187) x610)
+(or (not x604) x600 x144 x52)
+(or (not x610) x187 x188)
+(or (not x144) x604 x600 x52)
+(or (not x610) x43)
+(or (not x600) (not x50) x604 x597 x140)
+(or (not x175) (not x32) x609)
+(or (not x604) (not x600) (not x140) (not x50) x597)
+(or (not x185) x609)
+(or (not x604) (not x600) x597 x140 x50)
+(or (not x609) x185 x175)
+(or (not x600) (not x140) x604 x597 x50)
+(or (not x609) x32)
+(or (not x597) (not x48) x604 x595 x134)
+(or (not x175) (not x33) x608)
+(or (not x604) (not x597) (not x134) (not x48) x595)
+(or (not x183) x608)
+(or (not x604) (not x597) x595 x134 x48)
+(or (not x608) x183 x175)
+(or (not x597) (not x134) x604 x595 x48)
+(or (not x608) x33)
+(or (not x595) (not x46) x604 x593 x128)
+(or (not x175) (not x34) x607)
+(or (not x604) (not x595) (not x128) (not x46) x593)
+(or (not x181) x607)
+(or (not x604) (not x595) x593 x128 x46)
+(or (not x607) x181 x175)
+(or (not x595) (not x128) x604 x593 x46)
+(or (not x607) x34)
+(or (not x593) (not x44) x604 x591 x124)
+(or (not x175) (not x35) x606)
+(or (not x604) (not x593) (not x124) (not x44) x591)
+(or (not x177) x606)
+(or (not x604) (not x593) x591 x124 x44)
+(or (not x606) x177 x175)
+(or (not x593) (not x124) x604 x591 x44)
+(or (not x606) x35)
+(or (not x591) (not x149) x604 x590 x119)
+(or (not x175) (not x36) x605)
+(or (not x604) (not x591) (not x119) (not x149) x590)
+(or (not x174) x605)
+(or (not x604) (not x591) x590 x119 x149)
+(or (not x605) x174 x175)
+(or (not x591) (not x119) x604 x590 x149)
+(or (not x605) x36)
+(or (not x604) (not x603))
+(or (not x153) (not x27) x602)
+(or (not x590) x603)
+(or (not x166) x602)
+(or (not x603) x590)
+(or (not x602) x166 x153)
+(or x600 x530 x144)
+(or (not x602) x27)
+(or (not x530) (not x144) x600)
+(or (not x153) (not x28) x601)
+(or (not x600) (not x144) x530)
+(or (not x160) x601)
+(or (not x600) (not x530) x144)
+(or (not x601) x160 x153)
+(or (not x600) x597 x527 x140)
+(or (not x601) x28)
+(or (not x600) (not x527) (not x140) x597)
+(or (not x153) (not x29) x599)
+(or (not x597) (not x140) x527)
+(or (not x157) x599)
+(or (not x597) (not x527) x140)
+(or (not x599) x157 x153)
+(or (not x597) x600)
+(or (not x599) x29)
+(or (not x597) x595 x523 x134)
+(or (not x153) (not x30) x598)
+(or (not x597) (not x523) (not x134) x595)
+(or (not x155) x598)
+(or (not x595) (not x134) x523)
+(or (not x598) x155 x153)
+(or (not x595) (not x523) x134)
+(or (not x598) x30)
+(or (not x595) x597)
+(or (not x153) (not x31) x596)
+(or (not x595) x593 x519 x128)
+(or (not x152) x596)
+(or (not x595) (not x519) (not x128) x593)
+(or (not x596) x152 x153)
+(or (not x593) (not x128) x519)
+(or (not x596) x31)
+(or (not x593) (not x519) x128)
+(or (not x131) (not x20) x594)
+(or (not x593) x595)
+(or (not x150) x594)
+(or (not x593) x591 x514 x124)
+(or (not x594) x150 x131)
+(or (not x593) (not x514) (not x124) x591)
+(or (not x594) x20)
+(or (not x591) (not x124) x514)
+(or (not x131) (not x21) x592)
+(or (not x591) (not x514) x124)
+(or (not x146) x592)
+(or (not x591) x593)
+(or (not x592) x146 x131)
+(or (not x591) x590 x511 x119)
+(or (not x592) x21)
+(or (not x591) (not x511) (not x119) x590)
+(or (not x131) (not x22) x589)
+(or (not x590) (not x119) x511)
+(or (not x142) x589)
+(or (not x590) (not x511) x119)
+(or (not x589) x142 x131)
+(or (not x590) x591)
+(or (not x589) x22)
+(or (not x569) (not x483) (not x83))
+(or (not x131) (not x23) x588)
+(or (not x483) (not x83) x567)
+(or (not x136) x588)
+(or (not x569) (not x483) (not x80) x95)
+(or (not x588) x136 x131)
+(or (not x483) (not x80) (not x95) x569)
+(or (not x588) x23)
+(or (not x567) (not x483) (not x80))
+(or (not x131) (not x24) x587)
+(or (not x569) (not x483) (not x78) x94)
+(or (not x130) x587)
+(or (not x483) (not x78) (not x94) x569)
+(or (not x587) x130 x131)
+(or (not x567) (not x483) (not x78))
+(or (not x587) x24)
+(or (not x569) (not x483) (not x75) x92)
+(or (not x110) (not x13) x586)
+(or (not x483) (not x75) (not x92) x569)
+(or (not x125) x586)
+(or (not x567) (not x483) (not x75))
+(or (not x586) x125 x110)
+(or (not x569) (not x483) (not x71) x91)
+(or (not x586) x13)
+(or (not x483) (not x71) (not x91) x569)
+(or (not x110) (not x14) x585)
+(or (not x567) (not x483) (not x71))
+(or (not x121) x585)
+(or (not x569) (not x481) (not x83) x89)
+(or (not x585) x121 x110)
+(or (not x481) (not x83) (not x89) x569)
+(or (not x585) x14)
+(or (not x567) (not x481) (not x83))
+(or (not x110) (not x15) x584)
+(or (not x569) (not x481) (not x80))
+(or (not x115) x584)
+(or (not x481) (not x80) x567)
+(or (not x584) x115 x110)
+(or (not x569) (not x481) (not x78) x88)
+(or (not x584) x15)
+(or (not x481) (not x78) (not x88) x569)
+(or (not x110) (not x16) x583)
+(or (not x567) (not x481) (not x78))
+(or (not x113) x583)
+(or (not x569) (not x481) (not x75) x87)
+(or (not x583) x113 x110)
+(or (not x481) (not x75) (not x87) x569)
+(or (not x583) x16)
+(or (not x567) (not x481) (not x75))
+(or (not x110) (not x17) x582)
+(or (not x569) (not x481) (not x71) x86)
+(or (not x109) x582)
+(or (not x481) (not x71) (not x86) x569)
+(or (not x582) x109 x110)
+(or (not x567) (not x481) (not x71))
+(or (not x582) x17)
+(or (not x569) (not x478) (not x83) x82)
+(or (not x69) (not x6) x581)
+(or (not x478) (not x83) (not x82) x569)
+(or (not x106) x581)
+(or (not x567) (not x478) (not x83))
+(or (not x581) x106 x69)
+(or (not x569) (not x478) (not x80) x81)
+(or (not x581) x6)
+(or (not x478) (not x80) (not x81) x569)
+(or (not x69) (not x7) x580)
+(or (not x567) (not x478) (not x80))
+(or (not x105) x580)
+(or (not x569) (not x478) (not x78))
+(or (not x580) x105 x69)
+(or (not x478) (not x78) x567)
+(or (not x580) x7)
+(or (not x569) (not x478) (not x75) x79)
+(or (not x69) (not x8) x579)
+(or (not x478) (not x75) (not x79) x569)
+(or (not x103) x579)
+(or (not x567) (not x478) (not x75))
+(or (not x579) x103 x69)
+(or (not x569) (not x478) (not x71) x77)
+(or (not x579) x8)
+(or (not x478) (not x71) (not x77) x569)
+(or (not x69) (not x9) x578)
+(or (not x567) (not x478) (not x71))
+(or (not x100) x578)
+(or (not x569) (not x476) (not x83) x73)
+(or (not x578) x100 x69)
+(or (not x476) (not x83) (not x73) x569)
+(or (not x578) x9)
+(or (not x567) (not x476) (not x83))
+(or (not x69) (not x10) x577)
+(or (not x569) (not x476) (not x80) x67)
+(or (not x98) x577)
+(or (not x476) (not x80) (not x67) x569)
+(or (not x577) x98 x69)
+(or (not x567) (not x476) (not x80))
+(or (not x577) x10)
+(or (not x569) (not x476) (not x78) x66)
+(or x576 x575 x574 x573 x572 x571 x570 x568 x566 x565 x564 x563 x561 x560 x559 x558 x557 x556 x555 x554 x552 x551 x550 x549 x548 x547 x546 x544 x543 x542)
+(or (not x476) (not x78) (not x66) x569)
+(or (not x567) (not x476) (not x78))
+(or (not x569) (not x476) (not x75))
+(or (not x576) x458)
+(or (not x476) (not x75) x567)
+(or (not x576) (not x375))
+(or (not x569) (not x476) (not x71) x65)
+(or (not x575) x456)
+(or (not x476) (not x71) (not x65) x569)
+(or (not x575) (not x373))
+(or (not x567) (not x476) (not x71))
+(or (not x574) x453)
+(or (not x569) (not x473) (not x83) x58)
+(or (not x574) (not x370))
+(or (not x473) (not x83) (not x58) x569)
+(or (not x573) x451)
+(or (not x567) (not x473) (not x83))
+(or (not x573) (not x368))
+(or (not x569) (not x473) (not x80) x57)
+(or (not x572) x449)
+(or (not x473) (not x80) (not x57) x569)
+(or (not x572) (not x365))
+(or (not x567) (not x473) (not x80))
+(or (not x571) x447)
+(or (not x569) (not x473) (not x78) x56)
+(or (not x571) (not x358))
+(or (not x473) (not x78) (not x56) x569)
+(or (not x567) (not x473) (not x78))
+(or (not x569) (not x473) (not x75) x55)
+(or (not x570) x445)
+(or (not x473) (not x75) (not x55) x569)
+(or (not x570) (not x356))
+(or (not x567) (not x473) (not x75))
+(or (not x568) x441)
+(or (not x569) (not x473) (not x71))
+(or (not x568) (not x354))
+(or (not x473) (not x71) x567)
+(or (not x566) x438)
+(or (not x287) (not x69) (not x6) x562)
+(or (not x566) (not x352))
+(or (not x562) (not x533) (not x474) x553 x545)
+(or (not x565) x436)
+(or (not x562) (not x474) x535 x533)
+(or (not x565) (not x350))
+(or (not x562) x475 x474)
+(or (not x564) x430)
+(or (not x545) (not x533) (not x474) x562)
+(or (not x564) (not x347))
+(or (not x553) (not x533) (not x474) x562)
+(or (not x563) x428)
+(or (not x535) (not x474) x562)
+(or (not x563) (not x345))
+(or (not x475) x562)
+(or (not x553) (not x545))
+(or (not x171) x553 x1 x178)
+(or (not x561) x422)
+(or (not x553) (not x171) (not x178) x1)
+(or (not x561) (not x339))
+(or (not x553) (not x1) x171 x178)
+(or (not x560) x417)
+(or (not x1) (not x178) x553 x171)
+(or (not x560) (not x335))
+(or (not x169) x553 x25 x178)
+(or (not x559) x415)
+(or (not x553) (not x169) (not x178) x25)
+(or (not x559) (not x333))
+(or (not x553) (not x25) x169 x178)
+(or (not x558) x413)
+(or (not x25) (not x178) x553 x169)
+(or (not x558) (not x327))
+(or (not x167) x553 x18 x178)
+(or (not x557) x412)
+(or (not x553) (not x167) (not x178) x18)
+(or (not x557) (not x323))
+(or (not x553) (not x18) x167 x178)
+(or (not x556) x410)
+(or (not x18) (not x178) x553 x167)
+(or (not x556) (not x321))
+(or (not x164) x553 x11 x178)
+(or (not x553) (not x164) (not x178) x11)
+(or (not x553) (not x11) x164 x178)
+(or (not x555) x407)
+(or (not x11) (not x178) x553 x164)
+(or (not x555) (not x318))
+(or (not x162) x553 x4 x178)
+(or (not x554) x405)
+(or (not x553) (not x162) (not x178) x4)
+(or (not x554) (not x316))
+(or (not x553) (not x4) x162 x178)
+(or (not x552) x403)
+(or (not x4) (not x178) x553 x162)
+(or (not x552) (not x314))
+(or (not x25) (not x169) x545 x1 x171)
+(or (not x551) x402)
+(or (not x18) (not x167) x545 x25 x169)
+(or (not x551) (not x313))
+(or (not x11) (not x164) x545 x18 x167)
+(or (not x550) x400)
+(or (not x4) (not x162) x545 x11 x164)
+(or (not x550) (not x311))
+(or x545 x4 x162)
+(or (not x549) x398)
+(or (not x1) (not x171) x545)
+(or (not x549) (not x309))
+(or (not x545) (not x1) x171)
+(or (not x545) (not x171) x1)
+(or (not x545) (not x25) x169)
+(or (not x548) x395)
+(or (not x545) (not x169) x25)
+(or (not x548) (not x306))
+(or (not x545) (not x18) x167)
+(or (not x547) x391)
+(or (not x545) (not x167) x18)
+(or (not x547) (not x304))
+(or (not x545) (not x11) x164)
+(or (not x546) x389)
+(or (not x545) (not x164) x11)
+(or (not x546) (not x303))
+(or (not x545) (not x4) x162)
+(or (not x544) x383)
+(or (not x545) (not x162) x4)
+(or (not x544) (not x301))
+(or (not x52) x535 x525 x530)
+(or (not x543) x381)
+(or (not x535) (not x530) (not x52) x525)
+(or (not x543) (not x298))
+(or (not x535) x525 x530 x52)
+(or (not x542) x378)
+(or (not x530) x535 x525 x52)
+(or (not x542) (not x295))
+(or (not x525) (not x50) x535 x522 x527)
+(or (not x535) (not x525) (not x527) (not x50) x522)
+(or (not x535) (not x525) x522 x527 x50)
+(or x541 x540 x539 x538 x537 x536 x534 x532 x531 x529 x528 x526 x524 x521 x520 x518 x516 x515 x512 x510 x507 x506 x505 x504 x503 x502 x501 x500 x499 x498)
+(or (not x525) (not x527) x535 x522 x50)
+(or (not x522) (not x48) x535 x517 x523)
+(or (not x535) (not x522) (not x523) (not x48) x517)
+(or (not x541) x375)
+(or (not x535) (not x522) x517 x523 x48)
+(or (not x541) (not x285))
+(or (not x522) (not x523) x535 x517 x48)
+(or (not x540) x373)
+(or (not x517) (not x46) x535 x513 x519)
+(or (not x540) (not x283))
+(or (not x535) (not x517) (not x519) (not x46) x513)
+(or (not x539) x370)
+(or (not x535) (not x517) x513 x519 x46)
+(or (not x539) (not x281))
+(or (not x517) (not x519) x535 x513 x46)
+(or (not x538) x368)
+(or (not x513) (not x44) x535 x509 x514)
+(or (not x538) (not x279))
+(or (not x535) (not x513) (not x514) (not x44) x509)
+(or (not x537) x365)
+(or (not x535) (not x513) x509 x514 x44)
+(or (not x537) (not x277))
+(or (not x513) (not x514) x535 x509 x44)
+(or (not x536) x358)
+(or (not x509) (not x149) x535 x508 x511)
+(or (not x536) (not x274))
+(or (not x535) (not x509) (not x511) (not x149) x508)
+(or (not x535) (not x509) x508 x511 x149)
+(or (not x509) (not x511) x535 x508 x149)
+(or (not x534) x356)
+(or (not x535) (not x533))
+(or (not x534) (not x271))
+(or (not x508) x533)
+(or (not x532) x354)
+(or (not x533) x508)
+(or (not x532) (not x267))
+(or x525 x530 x143)
+(or (not x531) x352)
+(or (not x530) (not x143) x525)
+(or (not x531) (not x262))
+(or (not x525) (not x530) x143)
+(or (not x529) x350)
+(or (not x525) (not x143) x530)
+(or (not x529) (not x260))
+(or (not x525) x522 x527 x139)
+(or (not x528) x347)
+(or (not x525) (not x527) (not x139) x522)
+(or (not x528) (not x258))
+(or (not x522) (not x527) x139)
+(or (not x526) x345)
+(or (not x522) (not x139) x527)
+(or (not x526) (not x257))
+(or (not x522) x525)
+(or (not x522) x517 x523 x133)
+(or (not x522) (not x523) (not x133) x517)
+(or (not x524) x339)
+(or (not x517) (not x523) x133)
+(or (not x524) (not x254))
+(or (not x517) (not x133) x523)
+(or (not x521) x335)
+(or (not x517) x522)
+(or (not x521) (not x250))
+(or (not x517) x513 x519 x127)
+(or (not x520) x333)
+(or (not x517) (not x519) (not x127) x513)
+(or (not x520) (not x248))
+(or (not x513) (not x519) x127)
+(or (not x518) x327)
+(or (not x513) (not x127) x519)
+(or (not x518) (not x243))
+(or (not x513) x517)
+(or (not x516) x323)
+(or (not x513) x509 x514 x123)
+(or (not x516) (not x240))
+(or (not x513) (not x514) (not x123) x509)
+(or (not x515) x321)
+(or (not x509) (not x514) x123)
+(or (not x515) (not x237))
+(or (not x509) (not x123) x514)
+(or (not x509) x513)
+(or (not x509) x508 x511 x118)
+(or (not x512) x318)
+(or (not x509) (not x511) (not x118) x508)
+(or (not x512) (not x231))
+(or (not x508) (not x511) x118)
+(or (not x510) x316)
+(or (not x508) (not x118) x511)
+(or (not x510) (not x228))
+(or (not x508) x509)
+(or (not x507) x314)
+(or (not x475) (not x483) (not x107))
+(or (not x507) (not x224))
+(or (not x483) (not x107) x474)
+(or (not x506) x313)
+(or (not x475) (not x481) (not x107) x95)
+(or (not x506) (not x223))
+(or (not x481) (not x107) (not x95) x475)
+(or (not x505) x311)
+(or (not x474) (not x481) (not x107))
+(or (not x505) (not x221))
+(or (not x475) (not x478) (not x107) x94)
+(or (not x504) x309)
+(or (not x478) (not x107) (not x94) x475)
+(or (not x504) (not x219))
+(or (not x474) (not x478) (not x107))
+(or (not x475) (not x476) (not x107) x92)
+(or (not x476) (not x107) (not x92) x475)
+(or (not x503) x306)
+(or (not x474) (not x476) (not x107))
+(or (not x503) (not x216))
+(or (not x475) (not x473) (not x107) x91)
+(or (not x502) x304)
+(or (not x473) (not x107) (not x91) x475)
+(or (not x502) (not x214))
+(or (not x474) (not x473) (not x107))
+(or (not x501) x303)
+(or (not x475) (not x483) (not x101) x89)
+(or (not x501) (not x213))
+(or (not x483) (not x101) (not x89) x475)
+(or (not x500) x301)
+(or (not x474) (not x483) (not x101))
+(or (not x500) (not x211))
+(or (not x475) (not x481) (not x101))
+(or (not x499) x298)
+(or (not x481) (not x101) x474)
+(or (not x499) (not x209))
+(or (not x475) (not x478) (not x101) x88)
+(or (not x498) x295)
+(or (not x478) (not x101) (not x88) x475)
+(or (not x498) (not x207))
+(or (not x474) (not x478) (not x101))
+(or (not x475) (not x476) (not x101) x87)
+(or (not x476) (not x101) (not x87) x475)
+(or x497 x496 x495 x494 x493 x492 x491 x490 x489 x488 x487 x486 x485 x484 x482 x480 x479 x477 x472 x471 x470 x469 x467 x466 x465 x464 x463 x462 x461 x460)
+(or (not x474) (not x476) (not x101))
+(or (not x475) (not x473) (not x101) x86)
+(or (not x473) (not x101) (not x86) x475)
+(or (not x497) x285)
+(or (not x474) (not x473) (not x101))
+(or (not x497) (not x202))
+(or (not x475) (not x483) (not x93) x82)
+(or (not x496) x283)
+(or (not x483) (not x93) (not x82) x475)
+(or (not x496) (not x199))
+(or (not x474) (not x483) (not x93))
+(or (not x495) x281)
+(or (not x475) (not x481) (not x93) x81)
+(or (not x495) (not x193))
+(or (not x481) (not x93) (not x81) x475)
+(or (not x494) x279)
+(or (not x474) (not x481) (not x93))
+(or (not x494) (not x191))
+(or (not x475) (not x478) (not x93))
+(or (not x493) x277)
+(or (not x478) (not x93) x474)
+(or (not x493) (not x187))
+(or (not x475) (not x476) (not x93) x79)
+(or (not x492) x274)
+(or (not x476) (not x93) (not x79) x475)
+(or (not x492) (not x185))
+(or (not x474) (not x476) (not x93))
+(or (not x475) (not x473) (not x93) x77)
+(or (not x473) (not x93) (not x77) x475)
+(or (not x491) x271)
+(or (not x474) (not x473) (not x93))
+(or (not x491) (not x183))
+(or (not x475) (not x483) (not x85) x73)
+(or (not x490) x267)
+(or (not x483) (not x85) (not x73) x475)
+(or (not x490) (not x181))
+(or (not x474) (not x483) (not x85))
+(or (not x489) x262)
+(or (not x475) (not x481) (not x85) x67)
+(or (not x489) (not x177))
+(or (not x481) (not x85) (not x67) x475)
+(or (not x488) x260)
+(or (not x474) (not x481) (not x85))
+(or (not x488) (not x174))
+(or (not x475) (not x478) (not x85) x66)
+(or (not x487) x258)
+(or (not x478) (not x85) (not x66) x475)
+(or (not x487) (not x166))
+(or (not x474) (not x478) (not x85))
+(or (not x486) x257)
+(or (not x475) (not x476) (not x85))
+(or (not x486) (not x160))
+(or (not x476) (not x85) x474)
+(or (not x475) (not x473) (not x85) x65)
+(or (not x473) (not x85) (not x65) x475)
+(or (not x485) x254)
+(or (not x474) (not x473) (not x85))
+(or (not x485) (not x157))
+(or (not x475) (not x483) (not x70) x58)
+(or (not x484) x250)
+(or (not x483) (not x70) (not x58) x475)
+(or (not x484) (not x155))
+(or (not x474) (not x483) (not x70))
+(or (not x482) x248)
+(or (not x475) (not x481) (not x70) x57)
+(or (not x482) (not x152))
+(or (not x481) (not x70) (not x57) x475)
+(or (not x480) x243)
+(or (not x474) (not x481) (not x70))
+(or (not x480) (not x150))
+(or (not x475) (not x478) (not x70) x56)
+(or (not x479) x240)
+(or (not x478) (not x70) (not x56) x475)
+(or (not x479) (not x146))
+(or (not x474) (not x478) (not x70))
+(or (not x477) x237)
+(or (not x475) (not x476) (not x70) x55)
+(or (not x477) (not x142))
+(or (not x476) (not x70) (not x55) x475)
+(or (not x474) (not x476) (not x70))
+(or (not x475) (not x473) (not x70))
+(or (not x472) x231)
+(or (not x473) (not x70) x474)
+(or (not x472) (not x136))
+(or (not x287) (not x69) (not x8) x468)
+(or (not x471) x228)
+(or (not x468) (not x442) (not x385) x459 x454)
+(or (not x471) (not x130))
+(or (not x468) (not x385) x443 x442)
+(or (not x470) x224)
+(or (not x468) x386 x385)
+(or (not x470) (not x125))
+(or (not x454) (not x442) (not x385) x468)
+(or (not x469) x223)
+(or (not x459) (not x442) (not x385) x468)
+(or (not x469) (not x121))
+(or (not x443) (not x385) x468)
+(or (not x467) x221)
+(or (not x386) x468)
+(or (not x467) (not x115))
+(or (not x459) (not x454))
+(or (not x466) x219)
+(or (not x171) x459 x2 x178)
+(or (not x466) (not x113))
+(or (not x459) (not x171) (not x178) x2)
+(or (not x459) (not x2) x171 x178)
+(or (not x2) (not x178) x459 x171)
+(or (not x465) x216)
+(or (not x169) x459 x26 x178)
+(or (not x465) (not x109))
+(or (not x459) (not x169) (not x178) x26)
+(or (not x464) x214)
+(or (not x459) (not x26) x169 x178)
+(or (not x464) (not x106))
+(or (not x26) (not x178) x459 x169)
+(or (not x463) x213)
+(or (not x167) x459 x19 x178)
+(or (not x463) (not x105))
+(or (not x459) (not x167) (not x178) x19)
+(or (not x462) x211)
+(or (not x459) (not x19) x167 x178)
+(or (not x462) (not x103))
+(or (not x19) (not x178) x459 x167)
+(or (not x461) x209)
+(or (not x164) x459 x12 x178)
+(or (not x461) (not x100))
+(or (not x459) (not x164) (not x178) x12)
+(or (not x460) x207)
+(or (not x459) (not x12) x164 x178)
+(or (not x460) (not x98))
+(or (not x12) (not x178) x459 x164)
+(or (not x162) x459 x5 x178)
+(or (not x459) (not x162) (not x178) x5)
+(or (not x459) (not x5) x162 x178)
+(or (not x458) (not x188))
+(or (not x5) (not x178) x459 x162)
+(or (not x456) (not x188))
+(or (not x169) (not x26) x454 x171 x2)
+(or (not x453) (not x188))
+(or (not x167) (not x19) x454 x169 x26)
+(or (not x451) (not x188))
+(or (not x164) (not x12) x454 x167 x19)
+(or (not x449) (not x188))
+(or (not x162) (not x5) x454 x164 x12)
+(or x454 x162 x5)
+(or x457 x188)
+(or (not x171) (not x2) x454)
+(or (not x458) (not x455) x188)
+(or (not x454) (not x2) x171)
+(or (not x458) x457 x455 x188)
+(or (not x454) (not x171) x2)
+(or (not x455) x458 x457 x188)
+(or (not x454) (not x26) x169)
+(or (not x457) x458 x455 x188)
+(or (not x454) (not x169) x26)
+(or (not x456) (not x452) x188)
+(or (not x454) (not x19) x167)
+(or (not x456) x455 x452 x188)
+(or (not x454) (not x167) x19)
+(or (not x452) x456 x455 x188)
+(or (not x454) (not x12) x164)
+(or (not x455) x456 x452 x188)
+(or (not x454) (not x164) x12)
+(or (not x453) (not x450) x188)
+(or (not x454) (not x5) x162)
+(or (not x453) x452 x450 x188)
+(or (not x454) (not x162) x5)
+(or (not x450) x453 x452 x188)
+(or (not x52) x443 x433 x439)
+(or (not x452) x453 x450 x188)
+(or (not x443) (not x439) (not x52) x433)
+(or (not x451) (not x448) x188)
+(or (not x443) x433 x439 x52)
+(or (not x451) x450 x448 x188)
+(or (not x439) x443 x433 x52)
+(or (not x448) x451 x450 x188)
+(or (not x433) (not x50) x443 x431 x434)
+(or (not x450) x451 x448 x188)
+(or (not x443) (not x433) (not x434) (not x50) x431)
+(or (not x449) x448 x188)
+(or (not x443) (not x433) x431 x434 x50)
+(or (not x448) x449 x188)
+(or (not x433) (not x434) x443 x431 x50)
+(or (not x447) (not x175))
+(or (not x431) (not x48) x443 x426 x432)
+(or (not x443) (not x431) (not x432) (not x48) x426)
+(or (not x445) (not x175))
+(or (not x443) (not x431) x426 x432 x48)
+(or (not x441) (not x175))
+(or (not x431) (not x432) x443 x426 x48)
+(or (not x438) (not x175))
+(or (not x426) (not x46) x443 x423 x429)
+(or (not x436) (not x175))
+(or (not x443) (not x426) (not x429) (not x46) x423)
+(or (not x447) (not x446) x175)
+(or (not x443) (not x426) x423 x429 x46)
+(or x447 x446 x175)
+(or (not x426) (not x429) x443 x423 x46)
+(or (not x423) (not x44) x443 x419 x424)
+(or (not x443) (not x423) (not x424) (not x44) x419)
+(or (not x444) x446 x175)
+(or (not x443) (not x423) x419 x424 x44)
+(or (not x446) x444 x175)
+(or (not x423) (not x424) x443 x419 x44)
+(or (not x445) (not x440) x175)
+(or (not x419) (not x149) x443 x418 x420)
+(or (not x445) x444 x440 x175)
+(or (not x443) (not x419) (not x420) (not x149) x418)
+(or (not x440) x445 x444 x175)
+(or (not x443) (not x419) x418 x420 x149)
+(or (not x444) x445 x440 x175)
+(or (not x419) (not x420) x443 x418 x149)
+(or (not x441) (not x437) x175)
+(or (not x443) (not x442))
+(or (not x441) x440 x437 x175)
+(or (not x418) x442)
+(or (not x437) x441 x440 x175)
+(or (not x442) x418)
+(or (not x440) x441 x437 x175)
+(or x433 x143 x439)
+(or (not x438) (not x435) x175)
+(or (not x143) (not x439) x433)
+(or (not x438) x437 x435 x175)
+(or (not x433) (not x439) x143)
+(or (not x435) x438 x437 x175)
+(or (not x433) (not x143) x439)
+(or (not x437) x438 x435 x175)
+(or (not x433) x431 x139 x434)
+(or (not x436) x435 x175)
+(or (not x433) (not x139) (not x434) x431)
+(or (not x435) x436 x175)
+(or (not x431) (not x434) x139)
+(or (not x430) (not x153))
+(or (not x431) (not x139) x434)
+(or (not x428) (not x153))
+(or (not x431) x433)
+(or (not x431) x426 x133 x432)
+(or (not x422) (not x153))
+(or (not x431) (not x133) (not x432) x426)
+(or (not x417) (not x153))
+(or (not x426) (not x432) x133)
+(or (not x415) (not x153))
+(or (not x426) (not x133) x432)
+(or (not x430) (not x427) x153)
+(or (not x426) x431)
+(or x430 x427 x153)
+(or (not x426) x423 x127 x429)
+(or (not x428) (not x425) x153)
+(or (not x426) (not x127) (not x429) x423)
+(or (not x428) x427 x425 x153)
+(or (not x423) (not x429) x127)
+(or (not x425) x428 x427 x153)
+(or (not x423) (not x127) x429)
+(or (not x427) x428 x425 x153)
+(or (not x423) x426)
+(or (not x423) x419 x123 x424)
+(or (not x423) (not x123) (not x424) x419)
+(or (not x421) x425 x153)
+(or (not x419) (not x424) x123)
+(or (not x425) x421 x153)
+(or (not x419) (not x123) x424)
+(or (not x422) (not x416) x153)
+(or (not x419) x423)
+(or (not x422) x421 x416 x153)
+(or (not x419) x418 x118 x420)
+(or (not x416) x422 x421 x153)
+(or (not x419) (not x118) (not x420) x418)
+(or (not x421) x422 x416 x153)
+(or (not x418) (not x420) x118)
+(or (not x417) (not x414) x153)
+(or (not x418) (not x118) x420)
+(or (not x417) x416 x414 x153)
+(or (not x418) x419)
+(or (not x414) x417 x416 x153)
+(or (not x386) (not x107) (not x393))
+(or (not x416) x417 x414 x153)
+(or (not x107) (not x393) x385)
+(or (not x415) x414 x153)
+(or (not x386) (not x107) (not x392) x95)
+(or (not x414) x415 x153)
+(or (not x107) (not x392) (not x95) x386)
+(or (not x413) (not x131))
+(or (not x385) (not x107) (not x392))
+(or (not x412) (not x131))
+(or (not x386) (not x107) (not x390) x94)
+(or (not x410) (not x131))
+(or (not x107) (not x390) (not x94) x386)
+(or (not x385) (not x107) (not x390))
+(or (not x407) (not x131))
+(or (not x386) (not x107) (not x387) x92)
+(or (not x405) (not x131))
+(or (not x107) (not x387) (not x92) x386)
+(or (not x413) (not x411) x131)
+(or (not x385) (not x107) (not x387))
+(or x413 x411 x131)
+(or (not x386) (not x107) (not x384) x91)
+(or (not x412) (not x409) x131)
+(or (not x107) (not x384) (not x91) x386)
+(or (not x412) x411 x409 x131)
+(or (not x385) (not x107) (not x384))
+(or (not x409) x412 x411 x131)
+(or (not x386) (not x101) (not x393) x89)
+(or (not x411) x412 x409 x131)
+(or (not x101) (not x393) (not x89) x386)
+(or (not x410) (not x408) x131)
+(or (not x385) (not x101) (not x393))
+(or (not x410) x409 x408 x131)
+(or (not x386) (not x101) (not x392))
+(or (not x408) x410 x409 x131)
+(or (not x101) (not x392) x385)
+(or (not x409) x410 x408 x131)
+(or (not x386) (not x101) (not x390) x88)
+(or (not x101) (not x390) (not x88) x386)
+(or (not x385) (not x101) (not x390))
+(or (not x406) x408 x131)
+(or (not x386) (not x101) (not x387) x87)
+(or (not x408) x406 x131)
+(or (not x101) (not x387) (not x87) x386)
+(or (not x407) (not x404) x131)
+(or (not x385) (not x101) (not x387))
+(or (not x407) x406 x404 x131)
+(or (not x386) (not x101) (not x384) x86)
+(or (not x404) x407 x406 x131)
+(or (not x101) (not x384) (not x86) x386)
+(or (not x406) x407 x404 x131)
+(or (not x385) (not x101) (not x384))
+(or (not x405) x404 x131)
+(or (not x386) (not x93) (not x393) x82)
+(or (not x404) x405 x131)
+(or (not x93) (not x393) (not x82) x386)
+(or (not x403) (not x110))
+(or (not x385) (not x93) (not x393))
+(or (not x402) (not x110))
+(or (not x386) (not x93) (not x392) x81)
+(or (not x400) (not x110))
+(or (not x93) (not x392) (not x81) x386)
+(or (not x398) (not x110))
+(or (not x385) (not x93) (not x392))
+(or (not x386) (not x93) (not x390))
+(or (not x395) (not x110))
+(or (not x93) (not x390) x385)
+(or (not x403) (not x401) x110)
+(or (not x386) (not x93) (not x387) x79)
+(or x403 x401 x110)
+(or (not x93) (not x387) (not x79) x386)
+(or (not x402) (not x399) x110)
+(or (not x385) (not x93) (not x387))
+(or (not x402) x401 x399 x110)
+(or (not x386) (not x93) (not x384) x77)
+(or (not x399) x402 x401 x110)
+(or (not x93) (not x384) (not x77) x386)
+(or (not x401) x402 x399 x110)
+(or (not x385) (not x93) (not x384))
+(or (not x400) (not x397) x110)
+(or (not x386) (not x85) (not x393) x73)
+(or (not x400) x399 x397 x110)
+(or (not x85) (not x393) (not x73) x386)
+(or (not x397) x400 x399 x110)
+(or (not x385) (not x85) (not x393))
+(or (not x399) x400 x397 x110)
+(or (not x386) (not x85) (not x392) x67)
+(or (not x398) (not x396) x110)
+(or (not x85) (not x392) (not x67) x386)
+(or (not x398) x397 x396 x110)
+(or (not x385) (not x85) (not x392))
+(or (not x396) x398 x397 x110)
+(or (not x386) (not x85) (not x390) x66)
+(or (not x397) x398 x396 x110)
+(or (not x85) (not x390) (not x66) x386)
+(or (not x385) (not x85) (not x390))
+(or (not x386) (not x85) (not x387))
+(or (not x394) x396 x110)
+(or (not x85) (not x387) x385)
+(or (not x396) x394 x110)
+(or (not x386) (not x85) (not x384) x65)
+(or (not x395) x394 x110)
+(or (not x85) (not x384) (not x65) x386)
+(or (not x394) x395 x110)
+(or (not x385) (not x85) (not x384))
+(or (not x391) (not x69))
+(or (not x386) (not x70) (not x393) x58)
+(or (not x389) (not x69))
+(or (not x70) (not x393) (not x58) x386)
+(or (not x383) (not x69))
+(or (not x385) (not x70) (not x393))
+(or (not x381) (not x69))
+(or (not x386) (not x70) (not x392) x57)
+(or (not x378) (not x69))
+(or (not x70) (not x392) (not x57) x386)
+(or (not x385) (not x70) (not x392))
+(or (not x391) (not x388) x69)
+(or (not x386) (not x70) (not x390) x56)
+(or x391 x388 x69)
+(or (not x70) (not x390) (not x56) x386)
+(or (not x389) (not x382) x69)
+(or (not x385) (not x70) (not x390))
+(or (not x389) x388 x382 x69)
+(or (not x386) (not x70) (not x387) x55)
+(or (not x382) x389 x388 x69)
+(or (not x70) (not x387) (not x55) x386)
+(or (not x388) x389 x382 x69)
+(or (not x385) (not x70) (not x387))
+(or (not x383) (not x380) x69)
+(or (not x386) (not x70) (not x384))
+(or (not x383) x382 x380 x69)
+(or (not x70) (not x384) x385)
+(or (not x380) x383 x382 x69)
+(or (not x287) (not x69) (not x9) x379)
+(or (not x382) x383 x380 x69)
+(or (not x379) (not x346) (not x289) x371 x359)
+(or (not x381) (not x377) x69)
+(or (not x379) (not x289) x348 x346)
+(or (not x381) x380 x377 x69)
+(or (not x379) x290 x289)
+(or (not x377) x381 x380 x69)
+(or (not x359) (not x346) (not x289) x379)
+(or (not x380) x381 x377 x69)
+(or (not x371) (not x346) (not x289) x379)
+(or (not x378) (not x376) x69)
+(or (not x348) (not x289) x379)
+(or (not x378) x377 x376 x69)
+(or (not x290) x379)
+(or (not x376) x378 x377 x69)
+(or (not x371) (not x359))
+(or (not x377) x378 x376 x69)
+(or (not x171) x371 x366 x178)
+(or (not x371) (not x171) (not x178) x366)
+(or (not x376) x69)
+(or (not x371) (not x366) x171 x178)
+(or (not x366) (not x178) x371 x171)
+(or (not x375) (not x188))
+(or (not x169) x371 x363 x178)
+(or (not x373) (not x188))
+(or (not x371) (not x169) (not x178) x363)
+(or (not x370) (not x188))
+(or (not x371) (not x363) x169 x178)
+(or (not x368) (not x188))
+(or (not x363) (not x178) x371 x169)
+(or (not x365) (not x188))
+(or (not x167) x371 x362 x178)
+(or (not x371) (not x167) (not x178) x362)
+(or x374 x188)
+(or (not x371) (not x362) x167 x178)
+(or (not x375) (not x372) x188)
+(or (not x362) (not x178) x371 x167)
+(or (not x375) x374 x372 x188)
+(or (not x164) x371 x361 x178)
+(or (not x372) x375 x374 x188)
+(or (not x371) (not x164) (not x178) x361)
+(or (not x374) x375 x372 x188)
+(or (not x371) (not x361) x164 x178)
+(or (not x373) (not x369) x188)
+(or (not x361) (not x178) x371 x164)
+(or (not x373) x372 x369 x188)
+(or (not x162) x371 x360 x178)
+(or (not x369) x373 x372 x188)
+(or (not x371) (not x162) (not x178) x360)
+(or (not x372) x373 x369 x188)
+(or (not x371) (not x360) x162 x178)
+(or (not x370) (not x367) x188)
+(or (not x360) (not x178) x371 x162)
+(or (not x370) x369 x367 x188)
+(or (not x169) (not x363) x359 x171 x366)
+(or (not x367) x370 x369 x188)
+(or (not x167) (not x362) x359 x169 x363)
+(or (not x369) x370 x367 x188)
+(or (not x164) (not x361) x359 x167 x362)
+(or (not x368) (not x364) x188)
+(or (not x162) (not x360) x359 x164 x361)
+(or (not x368) x367 x364 x188)
+(or x359 x162 x360)
+(or (not x364) x368 x367 x188)
+(or (not x171) (not x366) x359)
+(or (not x367) x368 x364 x188)
+(or (not x359) (not x366) x171)
+(or (not x365) x364 x188)
+(or (not x359) (not x171) x366)
+(or (not x364) x365 x188)
+(or (not x359) (not x363) x169)
+(or (not x358) (not x175))
+(or (not x359) (not x169) x363)
+(or (not x359) (not x362) x167)
+(or (not x356) (not x175))
+(or (not x359) (not x167) x362)
+(or (not x354) (not x175))
+(or (not x359) (not x361) x164)
+(or (not x352) (not x175))
+(or (not x359) (not x164) x361)
+(or (not x350) (not x175))
+(or (not x359) (not x360) x162)
+(or (not x358) (not x357) x175)
+(or (not x359) (not x162) x360)
+(or x358 x357 x175)
+(or (not x52) x348 x340 x343)
+(or (not x348) (not x343) (not x52) x340)
+(or (not x348) x340 x343 x52)
+(or (not x355) x357 x175)
+(or (not x343) x348 x340 x52)
+(or (not x357) x355 x175)
+(or (not x340) (not x50) x348 x336 x341)
+(or (not x356) (not x353) x175)
+(or (not x348) (not x340) (not x341) (not x50) x336)
+(or (not x356) x355 x353 x175)
+(or (not x348) (not x340) x336 x341 x50)
+(or (not x353) x356 x355 x175)
+(or (not x340) (not x341) x348 x336 x50)
+(or (not x355) x356 x353 x175)
+(or (not x336) (not x48) x348 x330 x337)
+(or (not x354) (not x351) x175)
+(or (not x348) (not x336) (not x337) (not x48) x330)
+(or (not x354) x353 x351 x175)
+(or (not x348) (not x336) x330 x337 x48)
+(or (not x351) x354 x353 x175)
+(or (not x336) (not x337) x348 x330 x48)
+(or (not x353) x354 x351 x175)
+(or (not x330) (not x46) x348 x328 x331)
+(or (not x352) (not x349) x175)
+(or (not x348) (not x330) (not x331) (not x46) x328)
+(or (not x352) x351 x349 x175)
+(or (not x348) (not x330) x328 x331 x46)
+(or (not x349) x352 x351 x175)
+(or (not x330) (not x331) x348 x328 x46)
+(or (not x351) x352 x349 x175)
+(or (not x328) (not x44) x348 x325 x329)
+(or (not x350) x349 x175)
+(or (not x348) (not x328) (not x329) (not x44) x325)
+(or (not x349) x350 x175)
+(or (not x348) (not x328) x325 x329 x44)
+(or (not x347) (not x153))
+(or (not x328) (not x329) x348 x325 x44)
+(or (not x345) (not x153))
+(or (not x325) (not x149) x348 x324 x326)
+(or (not x348) (not x325) (not x326) (not x149) x324)
+(or (not x339) (not x153))
+(or (not x348) (not x325) x324 x326 x149)
+(or (not x335) (not x153))
+(or (not x325) (not x326) x348 x324 x149)
+(or (not x333) (not x153))
+(or (not x348) (not x346))
+(or (not x347) (not x344) x153)
+(or (not x324) x346)
+(or x347 x344 x153)
+(or (not x346) x324)
+(or (not x345) (not x342) x153)
+(or x340 x143 x343)
+(or (not x345) x344 x342 x153)
+(or (not x143) (not x343) x340)
+(or (not x342) x345 x344 x153)
+(or (not x340) (not x343) x143)
+(or (not x344) x345 x342 x153)
+(or (not x340) (not x143) x343)
+(or (not x340) x336 x139 x341)
+(or (not x340) (not x139) (not x341) x336)
+(or (not x338) x342 x153)
+(or (not x336) (not x341) x139)
+(or (not x342) x338 x153)
+(or (not x336) (not x139) x341)
+(or (not x339) (not x334) x153)
+(or (not x336) x340)
+(or (not x339) x338 x334 x153)
+(or (not x336) x330 x133 x337)
+(or (not x334) x339 x338 x153)
+(or (not x336) (not x133) (not x337) x330)
+(or (not x338) x339 x334 x153)
+(or (not x330) (not x337) x133)
+(or (not x335) (not x332) x153)
+(or (not x330) (not x133) x337)
+(or (not x335) x334 x332 x153)
+(or (not x330) x336)
+(or (not x332) x335 x334 x153)
+(or (not x330) x328 x127 x331)
+(or (not x334) x335 x332 x153)
+(or (not x330) (not x127) (not x331) x328)
+(or (not x333) x332 x153)
+(or (not x328) (not x331) x127)
+(or (not x332) x333 x153)
+(or (not x328) (not x127) x331)
+(or (not x327) (not x131))
+(or (not x328) x330)
+(or (not x323) (not x131))
+(or (not x328) x325 x123 x329)
+(or (not x321) (not x131))
+(or (not x328) (not x123) (not x329) x325)
+(or (not x325) (not x329) x123)
+(or (not x318) (not x131))
+(or (not x325) (not x123) x329)
+(or (not x316) (not x131))
+(or (not x325) x328)
+(or (not x327) (not x322) x131)
+(or (not x325) x324 x118 x326)
+(or x327 x322 x131)
+(or (not x325) (not x118) (not x326) x324)
+(or (not x323) (not x320) x131)
+(or (not x324) (not x326) x118)
+(or (not x323) x322 x320 x131)
+(or (not x324) (not x118) x326)
+(or (not x320) x323 x322 x131)
+(or (not x324) x325)
+(or (not x322) x323 x320 x131)
+(or (not x290) (not x107) (not x299))
+(or (not x321) (not x319) x131)
+(or (not x107) (not x299) x289)
+(or (not x321) x320 x319 x131)
+(or (not x290) (not x107) (not x296) x95)
+(or (not x319) x321 x320 x131)
+(or (not x107) (not x296) (not x95) x290)
+(or (not x320) x321 x319 x131)
+(or (not x289) (not x107) (not x296))
+(or (not x290) (not x107) (not x293) x94)
+(or (not x107) (not x293) (not x94) x290)
+(or (not x317) x319 x131)
+(or (not x289) (not x107) (not x293))
+(or (not x319) x317 x131)
+(or (not x290) (not x107) (not x291) x92)
+(or (not x318) (not x315) x131)
+(or (not x107) (not x291) (not x92) x290)
+(or (not x318) x317 x315 x131)
+(or (not x289) (not x107) (not x291))
+(or (not x315) x318 x317 x131)
+(or (not x290) (not x107) (not x288) x91)
+(or (not x317) x318 x315 x131)
+(or (not x107) (not x288) (not x91) x290)
+(or (not x316) x315 x131)
+(or (not x289) (not x107) (not x288))
+(or (not x315) x316 x131)
+(or (not x290) (not x101) (not x299) x89)
+(or (not x314) (not x110))
+(or (not x101) (not x299) (not x89) x290)
+(or (not x313) (not x110))
+(or (not x289) (not x101) (not x299))
+(or (not x311) (not x110))
+(or (not x290) (not x101) (not x296))
+(or (not x309) (not x110))
+(or (not x101) (not x296) x289)
+(or (not x290) (not x101) (not x293) x88)
+(or (not x306) (not x110))
+(or (not x101) (not x293) (not x88) x290)
+(or (not x314) (not x312) x110)
+(or (not x289) (not x101) (not x293))
+(or x314 x312 x110)
+(or (not x290) (not x101) (not x291) x87)
+(or (not x313) (not x310) x110)
+(or (not x101) (not x291) (not x87) x290)
+(or (not x313) x312 x310 x110)
+(or (not x289) (not x101) (not x291))
+(or (not x310) x313 x312 x110)
+(or (not x290) (not x101) (not x288) x86)
+(or (not x312) x313 x310 x110)
+(or (not x101) (not x288) (not x86) x290)
+(or (not x311) (not x308) x110)
+(or (not x289) (not x101) (not x288))
+(or (not x311) x310 x308 x110)
+(or (not x290) (not x93) (not x299) x82)
+(or (not x308) x311 x310 x110)
+(or (not x93) (not x299) (not x82) x290)
+(or (not x310) x311 x308 x110)
+(or (not x289) (not x93) (not x299))
+(or (not x309) (not x307) x110)
+(or (not x290) (not x93) (not x296) x81)
+(or (not x309) x308 x307 x110)
+(or (not x93) (not x296) (not x81) x290)
+(or (not x307) x309 x308 x110)
+(or (not x289) (not x93) (not x296))
+(or (not x308) x309 x307 x110)
+(or (not x290) (not x93) (not x293))
+(or (not x93) (not x293) x289)
+(or (not x290) (not x93) (not x291) x79)
+(or (not x305) x307 x110)
+(or (not x93) (not x291) (not x79) x290)
+(or (not x307) x305 x110)
+(or (not x289) (not x93) (not x291))
+(or (not x306) x305 x110)
+(or (not x290) (not x93) (not x288) x77)
+(or (not x305) x306 x110)
+(or (not x93) (not x288) (not x77) x290)
+(or (not x304) (not x69))
+(or (not x289) (not x93) (not x288))
+(or (not x303) (not x69))
+(or (not x290) (not x85) (not x299) x73)
+(or (not x301) (not x69))
+(or (not x85) (not x299) (not x73) x290)
+(or (not x298) (not x69))
+(or (not x289) (not x85) (not x299))
+(or (not x295) (not x69))
+(or (not x290) (not x85) (not x296) x67)
+(or (not x85) (not x296) (not x67) x290)
+(or (not x304) (not x302) x69)
+(or (not x289) (not x85) (not x296))
+(or x304 x302 x69)
+(or (not x290) (not x85) (not x293) x66)
+(or (not x303) (not x300) x69)
+(or (not x85) (not x293) (not x66) x290)
+(or (not x303) x302 x300 x69)
+(or (not x289) (not x85) (not x293))
+(or (not x300) x303 x302 x69)
+(or (not x290) (not x85) (not x291))
+(or (not x302) x303 x300 x69)
+(or (not x85) (not x291) x289)
+(or (not x301) (not x297) x69)
+(or (not x290) (not x85) (not x288) x65)
+(or (not x301) x300 x297 x69)
+(or (not x85) (not x288) (not x65) x290)
+(or (not x297) x301 x300 x69)
+(or (not x289) (not x85) (not x288))
+(or (not x300) x301 x297 x69)
+(or (not x290) (not x70) (not x299) x58)
+(or (not x298) (not x294) x69)
+(or (not x70) (not x299) (not x58) x290)
+(or (not x298) x297 x294 x69)
+(or (not x289) (not x70) (not x299))
+(or (not x294) x298 x297 x69)
+(or (not x290) (not x70) (not x296) x57)
+(or (not x297) x298 x294 x69)
+(or (not x70) (not x296) (not x57) x290)
+(or (not x295) (not x292) x69)
+(or (not x289) (not x70) (not x296))
+(or (not x295) x294 x292 x69)
+(or (not x290) (not x70) (not x293) x56)
+(or (not x292) x295 x294 x69)
+(or (not x70) (not x293) (not x56) x290)
+(or (not x294) x295 x292 x69)
+(or (not x289) (not x70) (not x293))
+(or (not x290) (not x70) (not x291) x55)
+(or (not x292) x69)
+(or (not x70) (not x291) (not x55) x290)
+(or (not x289) (not x70) (not x291))
+(or (not x285) (not x188))
+(or (not x290) (not x70) (not x288))
+(or (not x283) (not x188))
+(or (not x70) (not x288) x289)
+(or (not x281) (not x188))
+(or (not x287) (not x69) (not x10) x286)
+(or (not x279) (not x188))
+(or (not x286) (not x251) (not x195) x275 x263)
+(or (not x277) (not x188))
+(or (not x286) (not x195) x252 x251)
+(or (not x286) x196 x195)
+(or x284 x188)
+(or (not x263) (not x251) (not x195) x286)
+(or (not x285) (not x282) x188)
+(or (not x275) (not x251) (not x195) x286)
+(or (not x285) x284 x282 x188)
+(or (not x252) (not x195) x286)
+(or (not x282) x285 x284 x188)
+(or (not x196) x286)
+(or (not x284) x285 x282 x188)
+(or (not x275) (not x263))
+(or (not x283) (not x280) x188)
+(or (not x171) x275 x272 x178)
+(or (not x283) x282 x280 x188)
+(or (not x275) (not x171) (not x178) x272)
+(or (not x280) x283 x282 x188)
+(or (not x275) (not x272) x171 x178)
+(or (not x282) x283 x280 x188)
+(or (not x272) (not x178) x275 x171)
+(or (not x281) (not x278) x188)
+(or (not x169) x275 x269 x178)
+(or (not x281) x280 x278 x188)
+(or (not x275) (not x169) (not x178) x269)
+(or (not x278) x281 x280 x188)
+(or (not x275) (not x269) x169 x178)
+(or (not x280) x281 x278 x188)
+(or (not x269) (not x178) x275 x169)
+(or (not x279) (not x276) x188)
+(or (not x167) x275 x268 x178)
+(or (not x279) x278 x276 x188)
+(or (not x275) (not x167) (not x178) x268)
+(or (not x276) x279 x278 x188)
+(or (not x275) (not x268) x167 x178)
+(or (not x278) x279 x276 x188)
+(or (not x268) (not x178) x275 x167)
+(or (not x277) x276 x188)
+(or (not x164) x275 x265 x178)
+(or (not x276) x277 x188)
+(or (not x275) (not x164) (not x178) x265)
+(or (not x274) (not x175))
+(or (not x275) (not x265) x164 x178)
+(or (not x265) (not x178) x275 x164)
+(or (not x271) (not x175))
+(or (not x162) x275 x264 x178)
+(or (not x267) (not x175))
+(or (not x275) (not x162) (not x178) x264)
+(or (not x262) (not x175))
+(or (not x275) (not x264) x162 x178)
+(or (not x260) (not x175))
+(or (not x264) (not x178) x275 x162)
+(or (not x274) (not x273) x175)
+(or (not x169) (not x269) x263 x171 x272)
+(or x274 x273 x175)
+(or (not x167) (not x268) x263 x169 x269)
+(or (not x164) (not x265) x263 x167 x268)
+(or (not x162) (not x264) x263 x164 x265)
+(or (not x270) x273 x175)
+(or x263 x162 x264)
+(or (not x273) x270 x175)
+(or (not x171) (not x272) x263)
+(or (not x271) (not x266) x175)
+(or (not x263) (not x272) x171)
+(or (not x271) x270 x266 x175)
+(or (not x263) (not x171) x272)
+(or (not x266) x271 x270 x175)
+(or (not x263) (not x269) x169)
+(or (not x270) x271 x266 x175)
+(or (not x263) (not x169) x269)
+(or (not x267) (not x261) x175)
+(or (not x263) (not x268) x167)
+(or (not x267) x266 x261 x175)
+(or (not x263) (not x167) x268)
+(or (not x261) x267 x266 x175)
+(or (not x263) (not x265) x164)
+(or (not x266) x267 x261 x175)
+(or (not x263) (not x164) x265)
+(or (not x262) (not x259) x175)
+(or (not x263) (not x264) x162)
+(or (not x262) x261 x259 x175)
+(or (not x263) (not x162) x264)
+(or (not x259) x262 x261 x175)
+(or (not x52) x252 x244 x246)
+(or (not x261) x262 x259 x175)
+(or (not x252) (not x246) (not x52) x244)
+(or (not x260) x259 x175)
+(or (not x252) x244 x246 x52)
+(or (not x259) x260 x175)
+(or (not x246) x252 x244 x52)
+(or (not x258) (not x153))
+(or (not x244) (not x50) x252 x241 x245)
+(or (not x257) (not x153))
+(or (not x252) (not x244) (not x245) (not x50) x241)
+(or (not x252) (not x244) x241 x245 x50)
+(or (not x254) (not x153))
+(or (not x244) (not x245) x252 x241 x50)
+(or (not x250) (not x153))
+(or (not x241) (not x48) x252 x235 x242)
+(or (not x248) (not x153))
+(or (not x252) (not x241) (not x242) (not x48) x235)
+(or (not x258) (not x256) x153)
+(or (not x252) (not x241) x235 x242 x48)
+(or x258 x256 x153)
+(or (not x241) (not x242) x252 x235 x48)
+(or (not x257) (not x255) x153)
+(or (not x235) (not x46) x252 x232 x238)
+(or (not x257) x256 x255 x153)
+(or (not x252) (not x235) (not x238) (not x46) x232)
+(or (not x255) x257 x256 x153)
+(or (not x252) (not x235) x232 x238 x46)
+(or (not x256) x257 x255 x153)
+(or (not x235) (not x238) x252 x232 x46)
+(or (not x232) (not x44) x252 x226 x233)
+(or (not x252) (not x232) (not x233) (not x44) x226)
+(or (not x253) x255 x153)
+(or (not x252) (not x232) x226 x233 x44)
+(or (not x255) x253 x153)
+(or (not x232) (not x233) x252 x226 x44)
+(or (not x254) (not x249) x153)
+(or (not x226) (not x149) x252 x225 x229)
+(or (not x254) x253 x249 x153)
+(or (not x252) (not x226) (not x229) (not x149) x225)
+(or (not x249) x254 x253 x153)
+(or (not x252) (not x226) x225 x229 x149)
+(or (not x253) x254 x249 x153)
+(or (not x226) (not x229) x252 x225 x149)
+(or (not x250) (not x247) x153)
+(or (not x252) (not x251))
+(or (not x250) x249 x247 x153)
+(or (not x225) x251)
+(or (not x247) x250 x249 x153)
+(or (not x251) x225)
+(or (not x249) x250 x247 x153)
+(or x244 x143 x246)
+(or (not x248) x247 x153)
+(or (not x143) (not x246) x244)
+(or (not x247) x248 x153)
+(or (not x244) (not x246) x143)
+(or (not x243) (not x131))
+(or (not x244) (not x143) x246)
+(or (not x240) (not x131))
+(or (not x244) x241 x139 x245)
+(or (not x237) (not x131))
+(or (not x244) (not x139) (not x245) x241)
+(or (not x241) (not x245) x139)
+(or (not x231) (not x131))
+(or (not x241) (not x139) x245)
+(or (not x228) (not x131))
+(or (not x241) x244)
+(or (not x243) (not x239) x131)
+(or (not x241) x235 x133 x242)
+(or x243 x239 x131)
+(or (not x241) (not x133) (not x242) x235)
+(or (not x240) (not x236) x131)
+(or (not x235) (not x242) x133)
+(or (not x240) x239 x236 x131)
+(or (not x235) (not x133) x242)
+(or (not x236) x240 x239 x131)
+(or (not x235) x241)
+(or (not x239) x240 x236 x131)
+(or (not x235) x232 x127 x238)
+(or (not x237) (not x234) x131)
+(or (not x235) (not x127) (not x238) x232)
+(or (not x237) x236 x234 x131)
+(or (not x232) (not x238) x127)
+(or (not x234) x237 x236 x131)
+(or (not x232) (not x127) x238)
+(or (not x236) x237 x234 x131)
+(or (not x232) x235)
+(or (not x232) x226 x123 x233)
+(or (not x232) (not x123) (not x233) x226)
+(or (not x230) x234 x131)
+(or (not x226) (not x233) x123)
+(or (not x234) x230 x131)
+(or (not x226) (not x123) x233)
+(or (not x231) (not x227) x131)
+(or (not x226) x232)
+(or (not x231) x230 x227 x131)
+(or (not x226) x225 x118 x229)
+(or (not x227) x231 x230 x131)
+(or (not x226) (not x118) (not x229) x225)
+(or (not x230) x231 x227 x131)
+(or (not x225) (not x229) x118)
+(or (not x228) x227 x131)
+(or (not x225) (not x118) x229)
+(or (not x227) x228 x131)
+(or (not x225) x226)
+(or (not x224) (not x110))
+(or (not x196) (not x107) (not x204))
+(or (not x223) (not x110))
+(or (not x107) (not x204) x195)
+(or (not x221) (not x110))
+(or (not x196) (not x107) (not x203) x95)
+(or (not x219) (not x110))
+(or (not x107) (not x203) (not x95) x196)
+(or (not x195) (not x107) (not x203))
+(or (not x216) (not x110))
+(or (not x196) (not x107) (not x200) x94)
+(or (not x224) (not x222) x110)
+(or (not x107) (not x200) (not x94) x196)
+(or x224 x222 x110)
+(or (not x195) (not x107) (not x200))
+(or (not x223) (not x220) x110)
+(or (not x196) (not x107) (not x197) x92)
+(or (not x223) x222 x220 x110)
+(or (not x107) (not x197) (not x92) x196)
+(or (not x220) x223 x222 x110)
+(or (not x195) (not x107) (not x197))
+(or (not x222) x223 x220 x110)
+(or (not x196) (not x107) (not x194) x91)
+(or (not x221) (not x218) x110)
+(or (not x107) (not x194) (not x91) x196)
+(or (not x221) x220 x218 x110)
+(or (not x195) (not x107) (not x194))
+(or (not x218) x221 x220 x110)
+(or (not x196) (not x101) (not x204) x89)
+(or (not x220) x221 x218 x110)
+(or (not x101) (not x204) (not x89) x196)
+(or (not x219) (not x217) x110)
+(or (not x195) (not x101) (not x204))
+(or (not x219) x218 x217 x110)
+(or (not x196) (not x101) (not x203))
+(or (not x217) x219 x218 x110)
+(or (not x101) (not x203) x195)
+(or (not x218) x219 x217 x110)
+(or (not x196) (not x101) (not x200) x88)
+(or (not x101) (not x200) (not x88) x196)
+(or (not x195) (not x101) (not x200))
+(or (not x215) x217 x110)
+(or (not x196) (not x101) (not x197) x87)
+(or (not x217) x215 x110)
+(or (not x101) (not x197) (not x87) x196)
+(or (not x216) x215 x110)
+(or (not x195) (not x101) (not x197))
+(or (not x215) x216 x110)
+(or (not x196) (not x101) (not x194) x86)
+(or (not x214) (not x69))
+(or (not x101) (not x194) (not x86) x196)
+(or (not x213) (not x69))
+(or (not x195) (not x101) (not x194))
+(or (not x211) (not x69))
+(or (not x196) (not x93) (not x204) x82)
+(or (not x209) (not x69))
+(or (not x93) (not x204) (not x82) x196)
+(or (not x207) (not x69))
+(or (not x195) (not x93) (not x204))
+(or (not x196) (not x93) (not x203) x81)
+(or (not x214) (not x212) x69)
+(or (not x93) (not x203) (not x81) x196)
+(or x214 x212 x69)
+(or (not x195) (not x93) (not x203))
+(or (not x213) (not x210) x69)
+(or (not x196) (not x93) (not x200))
+(or (not x213) x212 x210 x69)
+(or (not x93) (not x200) x195)
+(or (not x210) x213 x212 x69)
+(or (not x196) (not x93) (not x197) x79)
+(or (not x212) x213 x210 x69)
+(or (not x93) (not x197) (not x79) x196)
+(or (not x211) (not x208) x69)
+(or (not x195) (not x93) (not x197))
+(or (not x211) x210 x208 x69)
+(or (not x196) (not x93) (not x194) x77)
+(or (not x208) x211 x210 x69)
+(or (not x93) (not x194) (not x77) x196)
+(or (not x210) x211 x208 x69)
+(or (not x195) (not x93) (not x194))
+(or (not x209) (not x206) x69)
+(or (not x196) (not x85) (not x204) x73)
+(or (not x209) x208 x206 x69)
+(or (not x85) (not x204) (not x73) x196)
+(or (not x206) x209 x208 x69)
+(or (not x195) (not x85) (not x204))
+(or (not x208) x209 x206 x69)
+(or (not x196) (not x85) (not x203) x67)
+(or (not x207) (not x205) x69)
+(or (not x85) (not x203) (not x67) x196)
+(or (not x207) x206 x205 x69)
+(or (not x195) (not x85) (not x203))
+(or (not x205) x207 x206 x69)
+(or (not x196) (not x85) (not x200) x66)
+(or (not x206) x207 x205 x69)
+(or (not x85) (not x200) (not x66) x196)
+(or (not x195) (not x85) (not x200))
+(or (not x205) x69)
+(or (not x196) (not x85) (not x197))
+(or (not x85) (not x197) x195)
+(or (not x202) (not x188))
+(or (not x196) (not x85) (not x194) x65)
+(or (not x199) (not x188))
+(or (not x85) (not x194) (not x65) x196)
+(or (not x193) (not x188))
+(or (not x195) (not x85) (not x194))
+(or (not x191) (not x188))
+(or (not x196) (not x70) (not x204) x58)
+(or (not x187) (not x188))
+(or (not x70) (not x204) (not x58) x196)
+(or (not x195) (not x70) (not x204))
+(or x188 x201)
+(or (not x196) (not x70) (not x203) x57)
+(or (not x202) (not x198) x188)
+(or (not x70) (not x203) (not x57) x196)
+(or (not x202) x188 x201 x198)
+(or (not x195) (not x70) (not x203))
+(or (not x198) x202 x188 x201)
+(or (not x196) (not x70) (not x200) x56)
+(or (not x201) x202 x188 x198)
+(or (not x70) (not x200) (not x56) x196)
+(or (not x199) (not x192) x188)
+(or (not x195) (not x70) (not x200))
+(or (not x199) x188 x198 x192)
+(or (not x196) (not x70) (not x197) x55)
+(or (not x192) x199 x188 x198)
+(or (not x70) (not x197) (not x55) x196)
+(or (not x198) x199 x188 x192)
+(or (not x195) (not x70) (not x197))
+(or (not x193) (not x190) x188)
+(or (not x196) (not x70) (not x194))
+(or (not x193) x188 x192 x190)
+(or (not x70) (not x194) x195)
+(or (not x190) x193 x188 x192)
+(or (not x189) (not x147) (not x72) x179 x161)
+(or (not x192) x193 x188 x190)
+(or (not x189) (not x72) x148 x147)
+(or (not x191) (not x186) x188)
+(or (not x189) x74 x72)
+(or (not x191) x188 x190 x186)
+(or (not x161) (not x147) (not x72) x189)
+(or (not x186) x191 x188 x190)
+(or (not x179) (not x147) (not x72) x189)
+(or (not x190) x191 x188 x186)
+(or (not x148) (not x72) x189)
+(or (not x187) x188 x186)
+(or (not x74) x189)
+(or (not x186) x187 x188)
+(or (not x179) (not x161))
+(or (not x185) (not x175))
+(or (not x171) x179 x172 x178)
+(or (not x179) (not x171) (not x178) x172)
+(or (not x183) (not x175))
+(or (not x179) (not x172) x171 x178)
+(or (not x181) (not x175))
+(or (not x172) (not x178) x179 x171)
+(or (not x177) (not x175))
+(or (not x169) x179 x170 x178)
+(or (not x174) (not x175))
+(or (not x179) (not x169) (not x178) x170)
+(or (not x185) (not x184) x175)
+(or (not x179) (not x170) x169 x178)
+(or x185 x175 x184)
+(or (not x170) (not x178) x179 x169)
+(or (not x167) x179 x168 x178)
+(or (not x179) (not x167) (not x178) x168)
+(or (not x182) x175 x184)
+(or (not x179) (not x168) x167 x178)
+(or (not x184) x175 x182)
+(or (not x168) (not x178) x179 x167)
+(or (not x183) (not x180) x175)
+(or (not x164) x179 x165 x178)
+(or (not x183) x175 x182 x180)
+(or (not x179) (not x164) (not x178) x165)
+(or (not x180) x183 x175 x182)
+(or (not x179) (not x165) x164 x178)
+(or (not x182) x183 x175 x180)
+(or (not x165) (not x178) x179 x164)
+(or (not x181) (not x176) x175)
+(or (not x162) x179 x163 x178)
+(or (not x181) x175 x180 x176)
+(or (not x179) (not x162) (not x178) x163)
+(or (not x176) x181 x175 x180)
+(or (not x179) (not x163) x162 x178)
+(or (not x180) x181 x175 x176)
+(or (not x163) (not x178) x179 x162)
+(or (not x177) (not x173) x175)
+(or (not x169) (not x170) x161 x171 x172)
+(or (not x177) x175 x176 x173)
+(or (not x167) (not x168) x161 x169 x170)
+(or (not x173) x177 x175 x176)
+(or (not x164) (not x165) x161 x167 x168)
+(or (not x176) x177 x175 x173)
+(or (not x162) (not x163) x161 x164 x165)
+(or (not x174) x175 x173)
+(or x161 x162 x163)
+(or (not x173) x174 x175)
+(or (not x171) (not x172) x161)
+(or (not x166) (not x153))
+(or (not x161) (not x172) x171)
+(or (not x160) (not x153))
+(or (not x161) (not x171) x172)
+(or (not x161) (not x170) x169)
+(or (not x157) (not x153))
+(or (not x161) (not x169) x170)
+(or (not x155) (not x153))
+(or (not x161) (not x168) x167)
+(or (not x152) (not x153))
+(or (not x161) (not x167) x168)
+(or (not x166) (not x159) x153)
+(or (not x161) (not x165) x164)
+(or x166 x153 x159)
+(or (not x161) (not x164) x165)
+(or (not x160) (not x158) x153)
+(or (not x161) (not x163) x162)
+(or (not x160) x153 x159 x158)
+(or (not x161) (not x162) x163)
+(or (not x158) x160 x153 x159)
+(or (not x52) x148 x137 x144)
+(or (not x159) x160 x153 x158)
+(or (not x148) (not x144) (not x52) x137)
+(or (not x148) x137 x144 x52)
+(or (not x144) x148 x137 x52)
+(or (not x156) x153 x158)
+(or (not x137) (not x50) x148 x132 x140)
+(or (not x158) x153 x156)
+(or (not x148) (not x137) (not x140) (not x50) x132)
+(or (not x157) (not x154) x153)
+(or (not x148) (not x137) x132 x140 x50)
+(or (not x157) x153 x156 x154)
+(or (not x137) (not x140) x148 x132 x50)
+(or (not x154) x157 x153 x156)
+(or (not x132) (not x48) x148 x126 x134)
+(or (not x156) x157 x153 x154)
+(or (not x148) (not x132) (not x134) (not x48) x126)
+(or (not x155) (not x151) x153)
+(or (not x148) (not x132) x126 x134 x48)
+(or (not x155) x153 x154 x151)
+(or (not x132) (not x134) x148 x126 x48)
+(or (not x151) x155 x153 x154)
+(or (not x126) (not x46) x148 x122 x128)
+(or (not x154) x155 x153 x151)
+(or (not x148) (not x126) (not x128) (not x46) x122)
+(or (not x152) x153 x151)
+(or (not x148) (not x126) x122 x128 x46)
+(or (not x151) x152 x153)
+(or (not x126) (not x128) x148 x122 x46)
+(or (not x150) (not x131))
+(or (not x122) (not x44) x148 x117 x124)
+(or (not x146) (not x131))
+(or (not x148) (not x122) (not x124) (not x44) x117)
+(or (not x142) (not x131))
+(or (not x148) (not x122) x117 x124 x44)
+(or (not x122) (not x124) x148 x117 x44)
+(or (not x136) (not x131))
+(or (not x117) (not x149) x148 x116 x119)
+(or (not x130) (not x131))
+(or (not x148) (not x117) (not x119) (not x149) x116)
+(or (not x150) (not x145) x131)
+(or (not x148) (not x117) x116 x119 x149)
+(or x150 x131 x145)
+(or (not x117) (not x119) x148 x116 x149)
+(or (not x146) (not x141) x131)
+(or (not x148) (not x147))
+(or (not x146) x131 x145 x141)
+(or (not x116) x147)
+(or (not x141) x146 x131 x145)
+(or (not x147) x116)
+(or (not x145) x146 x131 x141)
+(or x137 x143 x144)
+(or (not x142) (not x138) x131)
+(or (not x143) (not x144) x137)
+(or (not x142) x131 x141 x138)
+(or (not x137) (not x144) x143)
+(or (not x138) x142 x131 x141)
+(or (not x137) (not x143) x144)
+(or (not x141) x142 x131 x138)
+(or (not x137) x132 x139 x140)
+(or (not x137) (not x139) (not x140) x132)
+(or (not x132) (not x140) x139)
+(or (not x135) x131 x138)
+(or (not x132) (not x139) x140)
+(or (not x138) x131 x135)
+(or (not x132) x137)
+(or (not x136) (not x129) x131)
+(or (not x132) x126 x133 x134)
+(or (not x136) x131 x135 x129)
+(or (not x132) (not x133) (not x134) x126)
+(or (not x129) x136 x131 x135)
+(or (not x126) (not x134) x133)
+(or (not x135) x136 x131 x129)
+(or (not x126) (not x133) x134)
+(or (not x130) x131 x129)
+(or (not x126) x132)
+(or (not x129) x130 x131)
+(or (not x126) x122 x127 x128)
+(or (not x125) (not x110))
+(or (not x126) (not x127) (not x128) x122)
+(or (not x121) (not x110))
+(or (not x122) (not x128) x127)
+(or (not x115) (not x110))
+(or (not x122) (not x127) x128)
+(or (not x113) (not x110))
+(or (not x122) x126)
+(or (not x122) x117 x123 x124)
+(or (not x109) (not x110))
+(or (not x122) (not x123) (not x124) x117)
+(or (not x125) (not x120) x110)
+(or (not x117) (not x124) x123)
+(or x125 x110 x120)
+(or (not x117) (not x123) x124)
+(or (not x121) (not x114) x110)
+(or (not x117) x122)
+(or (not x121) x110 x120 x114)
+(or (not x117) x116 x118 x119)
+(or (not x114) x121 x110 x120)
+(or (not x117) (not x118) (not x119) x116)
+(or (not x120) x121 x110 x114)
+(or (not x116) (not x119) x118)
+(or (not x115) (not x112) x110)
+(or (not x116) (not x118) x119)
+(or (not x115) x110 x114 x112)
+(or (not x116) x117)
+(or (not x112) x115 x110 x114)
+(or (not x74) (not x107) (not x83))
+(or (not x114) x115 x110 x112)
+(or (not x107) (not x83) x72)
+(or (not x113) (not x111) x110)
+(or (not x74) (not x107) (not x80) x95)
+(or (not x113) x110 x112 x111)
+(or (not x107) (not x80) (not x95) x74)
+(or (not x111) x113 x110 x112)
+(or (not x72) (not x107) (not x80))
+(or (not x112) x113 x110 x111)
+(or (not x74) (not x107) (not x78) x94)
+(or (not x107) (not x78) (not x94) x74)
+(or (not x72) (not x107) (not x78))
+(or (not x108) x110 x111)
+(or (not x74) (not x107) (not x75) x92)
+(or (not x111) x110 x108)
+(or (not x107) (not x75) (not x92) x74)
+(or (not x109) x110 x108)
+(or (not x72) (not x107) (not x75))
+(or (not x108) x109 x110)
+(or (not x74) (not x107) (not x71) x91)
+(or (not x106) (not x69))
+(or (not x107) (not x71) (not x91) x74)
+(or (not x105) (not x69))
+(or (not x72) (not x107) (not x71))
+(or (not x103) (not x69))
+(or (not x74) (not x101) (not x83) x89)
+(or (not x100) (not x69))
+(or (not x101) (not x83) (not x89) x74)
+(or (not x98) (not x69))
+(or (not x72) (not x101) (not x83))
+(or (not x74) (not x101) (not x80))
+(or (not x106) (not x104) x69)
+(or (not x101) (not x80) x72)
+(or x106 x69 x104)
+(or (not x74) (not x101) (not x78) x88)
+(or (not x105) (not x102) x69)
+(or (not x101) (not x78) (not x88) x74)
+(or (not x105) x69 x104 x102)
+(or (not x72) (not x101) (not x78))
+(or (not x102) x105 x69 x104)
+(or (not x74) (not x101) (not x75) x87)
+(or (not x104) x105 x69 x102)
+(or (not x101) (not x75) (not x87) x74)
+(or (not x103) (not x99) x69)
+(or (not x72) (not x101) (not x75))
+(or (not x103) x69 x102 x99)
+(or (not x74) (not x101) (not x71) x86)
+(or (not x99) x103 x69 x102)
+(or (not x101) (not x71) (not x86) x74)
+(or (not x102) x103 x69 x99)
+(or (not x72) (not x101) (not x71))
+(or (not x100) (not x97) x69)
+(or (not x74) (not x93) (not x83) x82)
+(or (not x100) x69 x99 x97)
+(or (not x93) (not x83) (not x82) x74)
+(or (not x97) x100 x69 x99)
+(or (not x72) (not x93) (not x83))
+(or (not x99) x100 x69 x97)
+(or (not x74) (not x93) (not x80) x81)
+(or (not x98) (not x96) x69)
+(or (not x93) (not x80) (not x81) x74)
+(or (not x98) x69 x97 x96)
+(or (not x72) (not x93) (not x80))
+(or (not x96) x98 x69 x97)
+(or (not x74) (not x93) (not x78))
+(or (not x97) x98 x69 x96)
+(or (not x93) (not x78) x72)
+(or (not x74) (not x93) (not x75) x79)
+(or (not x96) x69)
+(or (not x93) (not x75) (not x79) x74)
+(or (not x52) x95)
+(or (not x72) (not x93) (not x75))
+(or (not x95) x52)
+(or (not x74) (not x93) (not x71) x77)
+(or (not x52) x94)
+(or (not x93) (not x71) (not x77) x74)
+(or (not x94) x52)
+(or (not x72) (not x93) (not x71))
+(or (not x52) x92)
+(or (not x74) (not x85) (not x83) x73)
+(or (not x92) x52)
+(or (not x85) (not x83) (not x73) x74)
+(or (not x52) x91)
+(or (not x72) (not x85) (not x83))
+(or (not x91) x52)
+(or (not x74) (not x85) (not x80) x67)
+(or (not x52) x90)
+(or (not x85) (not x80) (not x67) x74)
+(or (not x90) x52)
+(or (not x72) (not x85) (not x80))
+(or x89 x52)
+(or (not x74) (not x85) (not x78) x66)
+(or (not x89) (not x52))
+(or (not x85) (not x78) (not x66) x74)
+(or (not x50) x88)
+(or (not x72) (not x85) (not x78))
+(or (not x88) x50)
+(or (not x74) (not x85) (not x75))
+(or (not x50) x87)
+(or (not x85) (not x75) x72)
+(or (not x87) x50)
+(or (not x74) (not x85) (not x71) x65)
+(or (not x50) x86)
+(or (not x85) (not x71) (not x65) x74)
+(or (not x86) x50)
+(or (not x72) (not x85) (not x71))
+(or (not x50) x84)
+(or (not x74) (not x70) (not x83) x58)
+(or (not x84) x50)
+(or (not x70) (not x83) (not x58) x74)
+(or x82 x52)
+(or (not x72) (not x70) (not x83))
+(or (not x82) (not x52))
+(or (not x74) (not x70) (not x80) x57)
+(or x81 x50)
+(or (not x70) (not x80) (not x57) x74)
+(or (not x81) (not x50))
+(or (not x72) (not x70) (not x80))
+(or (not x48) x79)
+(or (not x74) (not x70) (not x78) x56)
+(or (not x79) x48)
+(or (not x70) (not x78) (not x56) x74)
+(or (not x48) x77)
+(or (not x72) (not x70) (not x78))
+(or (not x77) x48)
+(or (not x74) (not x70) (not x75) x55)
+(or (not x48) x76)
+(or (not x70) (not x75) (not x55) x74)
+(or (not x76) x48)
+(or (not x72) (not x70) (not x75))
+(or x73 x52)
+(or (not x74) (not x70) (not x71))
+(or (not x73) (not x52))
+(or (not x70) (not x71) x72)
+(or x67 x50)
+(or (not x68) (not x69) (not x6) x60)
+(or (not x67) (not x50))
+(or (not x60) (not x64) (not x63) x38 x3)
+(or x66 x48)
+(or (not x60) (not x63) x62 x64)
+(or (not x66) (not x48))
+(or (not x60) x59 x63)
+(or (not x46) x65)
+(or (not x3) (not x64) (not x63) x60)
+(or (not x65) x46)
+(or (not x38) (not x64) (not x63) x60)
+(or (not x46) x61)
+(or (not x62) (not x63) x60)
+(or (not x61) x46)
+(or (not x59) x60)
+(or x58 x52)
+(or (not x38) (not x3))
+(or (not x58) (not x52))
+(or (not x2) x38 x1 x37)
+(or x57 x50)
+(or (not x38) (not x2) (not x37) x1)
+(or (not x57) (not x50))
+(or (not x38) (not x1) x2 x37)
+(or x56 x48)
+(or (not x1) (not x37) x38 x2)
+(or (not x56) (not x48))
+(or (not x26) x38 x25 x37)
+(or x55 x46)
+(or (not x38) (not x26) (not x37) x25)
+(or (not x55) (not x46))
+(or (not x38) (not x25) x26 x37)
+(or (not x44) x54)
+(or (not x25) (not x37) x38 x26)
+(or (not x54) x44)
+(or (not x19) x38 x18 x37)
+(or x52 x53)
+(or (not x38) (not x19) (not x37) x18)
+(or (not x52) (not x53))
+(or (not x38) (not x18) x19 x37)
+(or x50 x51)
+(or (not x18) (not x37) x38 x19)
+(or (not x50) (not x51))
+(or (not x12) x38 x11 x37)
+(or x48 x49)
+(or (not x38) (not x12) (not x37) x11)
+(or (not x48) (not x49))
+(or (not x38) (not x11) x12 x37)
+(or x46 x47)
+(or (not x11) (not x37) x38 x12)
+(or (not x46) (not x47))
+(or (not x5) x38 x4 x37)
+(or x44 x45)
+(or (not x38) (not x5) (not x37) x4)
+(or (not x44) (not x45))
+(or (not x38) (not x4) x5 x37)
+(or x39 x40 x41 x42 x43)
+(or (not x4) (not x37) x38 x5)
+(or x32 x33 x34 x35 x36)
+(or (not x25) (not x26) x3 x1 x2)
+(or x27 x28 x29 x30 x31)
+(or (not x18) (not x19) x3 x25 x26)
+(or x20 x21 x22 x23 x24)
+(or (not x11) (not x12) x3 x18 x19)
+(or x13 x14 x15 x16 x17)
+(or (not x4) (not x5) x3 x11 x12)
+(or x6 x7 x8 x9 x10)
+(or x3 x4 x5)
+(or (not x1) (not x2) x3)
+))
diff --git a/test/regress/regress3/hole9.cvc b/test/regress/regress3/hole9.cvc
new file mode 100644
index 0000000..e60839f
--- /dev/null
+++ b/test/regress/regress3/hole9.cvc
@@ -0,0 +1,509 @@
+% EXPECT: valid
+x_1 : BOOLEAN;
+x_2 : BOOLEAN;
+x_3 : BOOLEAN;
+x_4 : BOOLEAN;
+x_5 : BOOLEAN;
+x_6 : BOOLEAN;
+x_7 : BOOLEAN;
+x_8 : BOOLEAN;
+x_9 : BOOLEAN;
+x_10 : BOOLEAN;
+x_11 : BOOLEAN;
+x_12 : BOOLEAN;
+x_13 : BOOLEAN;
+x_14 : BOOLEAN;
+x_15 : BOOLEAN;
+x_16 : BOOLEAN;
+x_17 : BOOLEAN;
+x_18 : BOOLEAN;
+x_19 : BOOLEAN;
+x_20 : BOOLEAN;
+x_21 : BOOLEAN;
+x_22 : BOOLEAN;
+x_23 : BOOLEAN;
+x_24 : BOOLEAN;
+x_25 : BOOLEAN;
+x_26 : BOOLEAN;
+x_27 : BOOLEAN;
+x_28 : BOOLEAN;
+x_29 : BOOLEAN;
+x_30 : BOOLEAN;
+x_31 : BOOLEAN;
+x_32 : BOOLEAN;
+x_33 : BOOLEAN;
+x_34 : BOOLEAN;
+x_35 : BOOLEAN;
+x_36 : BOOLEAN;
+x_37 : BOOLEAN;
+x_38 : BOOLEAN;
+x_39 : BOOLEAN;
+x_40 : BOOLEAN;
+x_41 : BOOLEAN;
+x_42 : BOOLEAN;
+x_43 : BOOLEAN;
+x_44 : BOOLEAN;
+x_45 : BOOLEAN;
+x_46 : BOOLEAN;
+x_47 : BOOLEAN;
+x_48 : BOOLEAN;
+x_49 : BOOLEAN;
+x_50 : BOOLEAN;
+x_51 : BOOLEAN;
+x_52 : BOOLEAN;
+x_53 : BOOLEAN;
+x_54 : BOOLEAN;
+x_55 : BOOLEAN;
+x_56 : BOOLEAN;
+x_57 : BOOLEAN;
+x_58 : BOOLEAN;
+x_59 : BOOLEAN;
+x_60 : BOOLEAN;
+x_61 : BOOLEAN;
+x_62 : BOOLEAN;
+x_63 : BOOLEAN;
+x_64 : BOOLEAN;
+x_65 : BOOLEAN;
+x_66 : BOOLEAN;
+x_67 : BOOLEAN;
+x_68 : BOOLEAN;
+x_69 : BOOLEAN;
+x_70 : BOOLEAN;
+x_71 : BOOLEAN;
+x_72 : BOOLEAN;
+x_73 : BOOLEAN;
+x_74 : BOOLEAN;
+x_75 : BOOLEAN;
+x_76 : BOOLEAN;
+x_77 : BOOLEAN;
+x_78 : BOOLEAN;
+x_79 : BOOLEAN;
+x_80 : BOOLEAN;
+x_81 : BOOLEAN;
+x_82 : BOOLEAN;
+x_83 : BOOLEAN;
+x_84 : BOOLEAN;
+x_85 : BOOLEAN;
+x_86 : BOOLEAN;
+x_87 : BOOLEAN;
+x_88 : BOOLEAN;
+x_89 : BOOLEAN;
+x_90 : BOOLEAN;
+ASSERT NOT x_1 OR NOT x_10;
+ASSERT NOT x_1 OR NOT x_19;
+ASSERT NOT x_1 OR NOT x_28;
+ASSERT NOT x_1 OR NOT x_37;
+ASSERT NOT x_1 OR NOT x_46;
+ASSERT NOT x_1 OR NOT x_55;
+ASSERT NOT x_1 OR NOT x_64;
+ASSERT NOT x_1 OR NOT x_73;
+ASSERT NOT x_1 OR NOT x_82;
+ASSERT NOT x_10 OR NOT x_19;
+ASSERT NOT x_10 OR NOT x_28;
+ASSERT NOT x_10 OR NOT x_37;
+ASSERT NOT x_10 OR NOT x_46;
+ASSERT NOT x_10 OR NOT x_55;
+ASSERT NOT x_10 OR NOT x_64;
+ASSERT NOT x_10 OR NOT x_73;
+ASSERT NOT x_10 OR NOT x_82;
+ASSERT NOT x_19 OR NOT x_28;
+ASSERT NOT x_19 OR NOT x_37;
+ASSERT NOT x_19 OR NOT x_46;
+ASSERT NOT x_19 OR NOT x_55;
+ASSERT NOT x_19 OR NOT x_64;
+ASSERT NOT x_19 OR NOT x_73;
+ASSERT NOT x_19 OR NOT x_82;
+ASSERT NOT x_28 OR NOT x_37;
+ASSERT NOT x_28 OR NOT x_46;
+ASSERT NOT x_28 OR NOT x_55;
+ASSERT NOT x_28 OR NOT x_64;
+ASSERT NOT x_28 OR NOT x_73;
+ASSERT NOT x_28 OR NOT x_82;
+ASSERT NOT x_37 OR NOT x_46;
+ASSERT NOT x_37 OR NOT x_55;
+ASSERT NOT x_37 OR NOT x_64;
+ASSERT NOT x_37 OR NOT x_73;
+ASSERT NOT x_37 OR NOT x_82;
+ASSERT NOT x_46 OR NOT x_55;
+ASSERT NOT x_46 OR NOT x_64;
+ASSERT NOT x_46 OR NOT x_73;
+ASSERT NOT x_46 OR NOT x_82;
+ASSERT NOT x_55 OR NOT x_64;
+ASSERT NOT x_55 OR NOT x_73;
+ASSERT NOT x_55 OR NOT x_82;
+ASSERT NOT x_64 OR NOT x_73;
+ASSERT NOT x_64 OR NOT x_82;
+ASSERT NOT x_73 OR NOT x_82;
+ASSERT NOT x_2 OR NOT x_11;
+ASSERT NOT x_2 OR NOT x_20;
+ASSERT NOT x_2 OR NOT x_29;
+ASSERT NOT x_2 OR NOT x_38;
+ASSERT NOT x_2 OR NOT x_47;
+ASSERT NOT x_2 OR NOT x_56;
+ASSERT NOT x_2 OR NOT x_65;
+ASSERT NOT x_2 OR NOT x_74;
+ASSERT NOT x_2 OR NOT x_83;
+ASSERT NOT x_11 OR NOT x_20;
+ASSERT NOT x_11 OR NOT x_29;
+ASSERT NOT x_11 OR NOT x_38;
+ASSERT NOT x_11 OR NOT x_47;
+ASSERT NOT x_11 OR NOT x_56;
+ASSERT NOT x_11 OR NOT x_65;
+ASSERT NOT x_11 OR NOT x_74;
+ASSERT NOT x_11 OR NOT x_83;
+ASSERT NOT x_20 OR NOT x_29;
+ASSERT NOT x_20 OR NOT x_38;
+ASSERT NOT x_20 OR NOT x_47;
+ASSERT NOT x_20 OR NOT x_56;
+ASSERT NOT x_20 OR NOT x_65;
+ASSERT NOT x_20 OR NOT x_74;
+ASSERT NOT x_20 OR NOT x_83;
+ASSERT NOT x_29 OR NOT x_38;
+ASSERT NOT x_29 OR NOT x_47;
+ASSERT NOT x_29 OR NOT x_56;
+ASSERT NOT x_29 OR NOT x_65;
+ASSERT NOT x_29 OR NOT x_74;
+ASSERT NOT x_29 OR NOT x_83;
+ASSERT NOT x_38 OR NOT x_47;
+ASSERT NOT x_38 OR NOT x_56;
+ASSERT NOT x_38 OR NOT x_65;
+ASSERT NOT x_38 OR NOT x_74;
+ASSERT NOT x_38 OR NOT x_83;
+ASSERT NOT x_47 OR NOT x_56;
+ASSERT NOT x_47 OR NOT x_65;
+ASSERT NOT x_47 OR NOT x_74;
+ASSERT NOT x_47 OR NOT x_83;
+ASSERT NOT x_56 OR NOT x_65;
+ASSERT NOT x_56 OR NOT x_74;
+ASSERT NOT x_56 OR NOT x_83;
+ASSERT NOT x_65 OR NOT x_74;
+ASSERT NOT x_65 OR NOT x_83;
+ASSERT NOT x_74 OR NOT x_83;
+ASSERT NOT x_3 OR NOT x_12;
+ASSERT NOT x_3 OR NOT x_21;
+ASSERT NOT x_3 OR NOT x_30;
+ASSERT NOT x_3 OR NOT x_39;
+ASSERT NOT x_3 OR NOT x_48;
+ASSERT NOT x_3 OR NOT x_57;
+ASSERT NOT x_3 OR NOT x_66;
+ASSERT NOT x_3 OR NOT x_75;
+ASSERT NOT x_3 OR NOT x_84;
+ASSERT NOT x_12 OR NOT x_21;
+ASSERT NOT x_12 OR NOT x_30;
+ASSERT NOT x_12 OR NOT x_39;
+ASSERT NOT x_12 OR NOT x_48;
+ASSERT NOT x_12 OR NOT x_57;
+ASSERT NOT x_12 OR NOT x_66;
+ASSERT NOT x_12 OR NOT x_75;
+ASSERT NOT x_12 OR NOT x_84;
+ASSERT NOT x_21 OR NOT x_30;
+ASSERT NOT x_21 OR NOT x_39;
+ASSERT NOT x_21 OR NOT x_48;
+ASSERT NOT x_21 OR NOT x_57;
+ASSERT NOT x_21 OR NOT x_66;
+ASSERT NOT x_21 OR NOT x_75;
+ASSERT NOT x_21 OR NOT x_84;
+ASSERT NOT x_30 OR NOT x_39;
+ASSERT NOT x_30 OR NOT x_48;
+ASSERT NOT x_30 OR NOT x_57;
+ASSERT NOT x_30 OR NOT x_66;
+ASSERT NOT x_30 OR NOT x_75;
+ASSERT NOT x_30 OR NOT x_84;
+ASSERT NOT x_39 OR NOT x_48;
+ASSERT NOT x_39 OR NOT x_57;
+ASSERT NOT x_39 OR NOT x_66;
+ASSERT NOT x_39 OR NOT x_75;
+ASSERT NOT x_39 OR NOT x_84;
+ASSERT NOT x_48 OR NOT x_57;
+ASSERT NOT x_48 OR NOT x_66;
+ASSERT NOT x_48 OR NOT x_75;
+ASSERT NOT x_48 OR NOT x_84;
+ASSERT NOT x_57 OR NOT x_66;
+ASSERT NOT x_57 OR NOT x_75;
+ASSERT NOT x_57 OR NOT x_84;
+ASSERT NOT x_66 OR NOT x_75;
+ASSERT NOT x_66 OR NOT x_84;
+ASSERT NOT x_75 OR NOT x_84;
+ASSERT NOT x_4 OR NOT x_13;
+ASSERT NOT x_4 OR NOT x_22;
+ASSERT NOT x_4 OR NOT x_31;
+ASSERT NOT x_4 OR NOT x_40;
+ASSERT NOT x_4 OR NOT x_49;
+ASSERT NOT x_4 OR NOT x_58;
+ASSERT NOT x_4 OR NOT x_67;
+ASSERT NOT x_4 OR NOT x_76;
+ASSERT NOT x_4 OR NOT x_85;
+ASSERT NOT x_13 OR NOT x_22;
+ASSERT NOT x_13 OR NOT x_31;
+ASSERT NOT x_13 OR NOT x_40;
+ASSERT NOT x_13 OR NOT x_49;
+ASSERT NOT x_13 OR NOT x_58;
+ASSERT NOT x_13 OR NOT x_67;
+ASSERT NOT x_13 OR NOT x_76;
+ASSERT NOT x_13 OR NOT x_85;
+ASSERT NOT x_22 OR NOT x_31;
+ASSERT NOT x_22 OR NOT x_40;
+ASSERT NOT x_22 OR NOT x_49;
+ASSERT NOT x_22 OR NOT x_58;
+ASSERT NOT x_22 OR NOT x_67;
+ASSERT NOT x_22 OR NOT x_76;
+ASSERT NOT x_22 OR NOT x_85;
+ASSERT NOT x_31 OR NOT x_40;
+ASSERT NOT x_31 OR NOT x_49;
+ASSERT NOT x_31 OR NOT x_58;
+ASSERT NOT x_31 OR NOT x_67;
+ASSERT NOT x_31 OR NOT x_76;
+ASSERT NOT x_31 OR NOT x_85;
+ASSERT NOT x_40 OR NOT x_49;
+ASSERT NOT x_40 OR NOT x_58;
+ASSERT NOT x_40 OR NOT x_67;
+ASSERT NOT x_40 OR NOT x_76;
+ASSERT NOT x_40 OR NOT x_85;
+ASSERT NOT x_49 OR NOT x_58;
+ASSERT NOT x_49 OR NOT x_67;
+ASSERT NOT x_49 OR NOT x_76;
+ASSERT NOT x_49 OR NOT x_85;
+ASSERT NOT x_58 OR NOT x_67;
+ASSERT NOT x_58 OR NOT x_76;
+ASSERT NOT x_58 OR NOT x_85;
+ASSERT NOT x_67 OR NOT x_76;
+ASSERT NOT x_67 OR NOT x_85;
+ASSERT NOT x_76 OR NOT x_85;
+ASSERT NOT x_5 OR NOT x_14;
+ASSERT NOT x_5 OR NOT x_23;
+ASSERT NOT x_5 OR NOT x_32;
+ASSERT NOT x_5 OR NOT x_41;
+ASSERT NOT x_5 OR NOT x_50;
+ASSERT NOT x_5 OR NOT x_59;
+ASSERT NOT x_5 OR NOT x_68;
+ASSERT NOT x_5 OR NOT x_77;
+ASSERT NOT x_5 OR NOT x_86;
+ASSERT NOT x_14 OR NOT x_23;
+ASSERT NOT x_14 OR NOT x_32;
+ASSERT NOT x_14 OR NOT x_41;
+ASSERT NOT x_14 OR NOT x_50;
+ASSERT NOT x_14 OR NOT x_59;
+ASSERT NOT x_14 OR NOT x_68;
+ASSERT NOT x_14 OR NOT x_77;
+ASSERT NOT x_14 OR NOT x_86;
+ASSERT NOT x_23 OR NOT x_32;
+ASSERT NOT x_23 OR NOT x_41;
+ASSERT NOT x_23 OR NOT x_50;
+ASSERT NOT x_23 OR NOT x_59;
+ASSERT NOT x_23 OR NOT x_68;
+ASSERT NOT x_23 OR NOT x_77;
+ASSERT NOT x_23 OR NOT x_86;
+ASSERT NOT x_32 OR NOT x_41;
+ASSERT NOT x_32 OR NOT x_50;
+ASSERT NOT x_32 OR NOT x_59;
+ASSERT NOT x_32 OR NOT x_68;
+ASSERT NOT x_32 OR NOT x_77;
+ASSERT NOT x_32 OR NOT x_86;
+ASSERT NOT x_41 OR NOT x_50;
+ASSERT NOT x_41 OR NOT x_59;
+ASSERT NOT x_41 OR NOT x_68;
+ASSERT NOT x_41 OR NOT x_77;
+ASSERT NOT x_41 OR NOT x_86;
+ASSERT NOT x_50 OR NOT x_59;
+ASSERT NOT x_50 OR NOT x_68;
+ASSERT NOT x_50 OR NOT x_77;
+ASSERT NOT x_50 OR NOT x_86;
+ASSERT NOT x_59 OR NOT x_68;
+ASSERT NOT x_59 OR NOT x_77;
+ASSERT NOT x_59 OR NOT x_86;
+ASSERT NOT x_68 OR NOT x_77;
+ASSERT NOT x_68 OR NOT x_86;
+ASSERT NOT x_77 OR NOT x_86;
+ASSERT NOT x_6 OR NOT x_15;
+ASSERT NOT x_6 OR NOT x_24;
+ASSERT NOT x_6 OR NOT x_33;
+ASSERT NOT x_6 OR NOT x_42;
+ASSERT NOT x_6 OR NOT x_51;
+ASSERT NOT x_6 OR NOT x_60;
+ASSERT NOT x_6 OR NOT x_69;
+ASSERT NOT x_6 OR NOT x_78;
+ASSERT NOT x_6 OR NOT x_87;
+ASSERT NOT x_15 OR NOT x_24;
+ASSERT NOT x_15 OR NOT x_33;
+ASSERT NOT x_15 OR NOT x_42;
+ASSERT NOT x_15 OR NOT x_51;
+ASSERT NOT x_15 OR NOT x_60;
+ASSERT NOT x_15 OR NOT x_69;
+ASSERT NOT x_15 OR NOT x_78;
+ASSERT NOT x_15 OR NOT x_87;
+ASSERT NOT x_24 OR NOT x_33;
+ASSERT NOT x_24 OR NOT x_42;
+ASSERT NOT x_24 OR NOT x_51;
+ASSERT NOT x_24 OR NOT x_60;
+ASSERT NOT x_24 OR NOT x_69;
+ASSERT NOT x_24 OR NOT x_78;
+ASSERT NOT x_24 OR NOT x_87;
+ASSERT NOT x_33 OR NOT x_42;
+ASSERT NOT x_33 OR NOT x_51;
+ASSERT NOT x_33 OR NOT x_60;
+ASSERT NOT x_33 OR NOT x_69;
+ASSERT NOT x_33 OR NOT x_78;
+ASSERT NOT x_33 OR NOT x_87;
+ASSERT NOT x_42 OR NOT x_51;
+ASSERT NOT x_42 OR NOT x_60;
+ASSERT NOT x_42 OR NOT x_69;
+ASSERT NOT x_42 OR NOT x_78;
+ASSERT NOT x_42 OR NOT x_87;
+ASSERT NOT x_51 OR NOT x_60;
+ASSERT NOT x_51 OR NOT x_69;
+ASSERT NOT x_51 OR NOT x_78;
+ASSERT NOT x_51 OR NOT x_87;
+ASSERT NOT x_60 OR NOT x_69;
+ASSERT NOT x_60 OR NOT x_78;
+ASSERT NOT x_60 OR NOT x_87;
+ASSERT NOT x_69 OR NOT x_78;
+ASSERT NOT x_69 OR NOT x_87;
+ASSERT NOT x_78 OR NOT x_87;
+ASSERT NOT x_7 OR NOT x_16;
+ASSERT NOT x_7 OR NOT x_25;
+ASSERT NOT x_7 OR NOT x_34;
+ASSERT NOT x_7 OR NOT x_43;
+ASSERT NOT x_7 OR NOT x_52;
+ASSERT NOT x_7 OR NOT x_61;
+ASSERT NOT x_7 OR NOT x_70;
+ASSERT NOT x_7 OR NOT x_79;
+ASSERT NOT x_7 OR NOT x_88;
+ASSERT NOT x_16 OR NOT x_25;
+ASSERT NOT x_16 OR NOT x_34;
+ASSERT NOT x_16 OR NOT x_43;
+ASSERT NOT x_16 OR NOT x_52;
+ASSERT NOT x_16 OR NOT x_61;
+ASSERT NOT x_16 OR NOT x_70;
+ASSERT NOT x_16 OR NOT x_79;
+ASSERT NOT x_16 OR NOT x_88;
+ASSERT NOT x_25 OR NOT x_34;
+ASSERT NOT x_25 OR NOT x_43;
+ASSERT NOT x_25 OR NOT x_52;
+ASSERT NOT x_25 OR NOT x_61;
+ASSERT NOT x_25 OR NOT x_70;
+ASSERT NOT x_25 OR NOT x_79;
+ASSERT NOT x_25 OR NOT x_88;
+ASSERT NOT x_34 OR NOT x_43;
+ASSERT NOT x_34 OR NOT x_52;
+ASSERT NOT x_34 OR NOT x_61;
+ASSERT NOT x_34 OR NOT x_70;
+ASSERT NOT x_34 OR NOT x_79;
+ASSERT NOT x_34 OR NOT x_88;
+ASSERT NOT x_43 OR NOT x_52;
+ASSERT NOT x_43 OR NOT x_61;
+ASSERT NOT x_43 OR NOT x_70;
+ASSERT NOT x_43 OR NOT x_79;
+ASSERT NOT x_43 OR NOT x_88;
+ASSERT NOT x_52 OR NOT x_61;
+ASSERT NOT x_52 OR NOT x_70;
+ASSERT NOT x_52 OR NOT x_79;
+ASSERT NOT x_52 OR NOT x_88;
+ASSERT NOT x_61 OR NOT x_70;
+ASSERT NOT x_61 OR NOT x_79;
+ASSERT NOT x_61 OR NOT x_88;
+ASSERT NOT x_70 OR NOT x_79;
+ASSERT NOT x_70 OR NOT x_88;
+ASSERT NOT x_79 OR NOT x_88;
+ASSERT NOT x_8 OR NOT x_17;
+ASSERT NOT x_8 OR NOT x_26;
+ASSERT NOT x_8 OR NOT x_35;
+ASSERT NOT x_8 OR NOT x_44;
+ASSERT NOT x_8 OR NOT x_53;
+ASSERT NOT x_8 OR NOT x_62;
+ASSERT NOT x_8 OR NOT x_71;
+ASSERT NOT x_8 OR NOT x_80;
+ASSERT NOT x_8 OR NOT x_89;
+ASSERT NOT x_17 OR NOT x_26;
+ASSERT NOT x_17 OR NOT x_35;
+ASSERT NOT x_17 OR NOT x_44;
+ASSERT NOT x_17 OR NOT x_53;
+ASSERT NOT x_17 OR NOT x_62;
+ASSERT NOT x_17 OR NOT x_71;
+ASSERT NOT x_17 OR NOT x_80;
+ASSERT NOT x_17 OR NOT x_89;
+ASSERT NOT x_26 OR NOT x_35;
+ASSERT NOT x_26 OR NOT x_44;
+ASSERT NOT x_26 OR NOT x_53;
+ASSERT NOT x_26 OR NOT x_62;
+ASSERT NOT x_26 OR NOT x_71;
+ASSERT NOT x_26 OR NOT x_80;
+ASSERT NOT x_26 OR NOT x_89;
+ASSERT NOT x_35 OR NOT x_44;
+ASSERT NOT x_35 OR NOT x_53;
+ASSERT NOT x_35 OR NOT x_62;
+ASSERT NOT x_35 OR NOT x_71;
+ASSERT NOT x_35 OR NOT x_80;
+ASSERT NOT x_35 OR NOT x_89;
+ASSERT NOT x_44 OR NOT x_53;
+ASSERT NOT x_44 OR NOT x_62;
+ASSERT NOT x_44 OR NOT x_71;
+ASSERT NOT x_44 OR NOT x_80;
+ASSERT NOT x_44 OR NOT x_89;
+ASSERT NOT x_53 OR NOT x_62;
+ASSERT NOT x_53 OR NOT x_71;
+ASSERT NOT x_53 OR NOT x_80;
+ASSERT NOT x_53 OR NOT x_89;
+ASSERT NOT x_62 OR NOT x_71;
+ASSERT NOT x_62 OR NOT x_80;
+ASSERT NOT x_62 OR NOT x_89;
+ASSERT NOT x_71 OR NOT x_80;
+ASSERT NOT x_71 OR NOT x_89;
+ASSERT NOT x_80 OR NOT x_89;
+ASSERT NOT x_9 OR NOT x_18;
+ASSERT NOT x_9 OR NOT x_27;
+ASSERT NOT x_9 OR NOT x_36;
+ASSERT NOT x_9 OR NOT x_45;
+ASSERT NOT x_9 OR NOT x_54;
+ASSERT NOT x_9 OR NOT x_63;
+ASSERT NOT x_9 OR NOT x_72;
+ASSERT NOT x_9 OR NOT x_81;
+ASSERT NOT x_9 OR NOT x_90;
+ASSERT NOT x_18 OR NOT x_27;
+ASSERT NOT x_18 OR NOT x_36;
+ASSERT NOT x_18 OR NOT x_45;
+ASSERT NOT x_18 OR NOT x_54;
+ASSERT NOT x_18 OR NOT x_63;
+ASSERT NOT x_18 OR NOT x_72;
+ASSERT NOT x_18 OR NOT x_81;
+ASSERT NOT x_18 OR NOT x_90;
+ASSERT NOT x_27 OR NOT x_36;
+ASSERT NOT x_27 OR NOT x_45;
+ASSERT NOT x_27 OR NOT x_54;
+ASSERT NOT x_27 OR NOT x_63;
+ASSERT NOT x_27 OR NOT x_72;
+ASSERT NOT x_27 OR NOT x_81;
+ASSERT NOT x_27 OR NOT x_90;
+ASSERT NOT x_36 OR NOT x_45;
+ASSERT NOT x_36 OR NOT x_54;
+ASSERT NOT x_36 OR NOT x_63;
+ASSERT NOT x_36 OR NOT x_72;
+ASSERT NOT x_36 OR NOT x_81;
+ASSERT NOT x_36 OR NOT x_90;
+ASSERT NOT x_45 OR NOT x_54;
+ASSERT NOT x_45 OR NOT x_63;
+ASSERT NOT x_45 OR NOT x_72;
+ASSERT NOT x_45 OR NOT x_81;
+ASSERT NOT x_45 OR NOT x_90;
+ASSERT NOT x_54 OR NOT x_63;
+ASSERT NOT x_54 OR NOT x_72;
+ASSERT NOT x_54 OR NOT x_81;
+ASSERT NOT x_54 OR NOT x_90;
+ASSERT NOT x_63 OR NOT x_72;
+ASSERT NOT x_63 OR NOT x_81;
+ASSERT NOT x_63 OR NOT x_90;
+ASSERT NOT x_72 OR NOT x_81;
+ASSERT NOT x_72 OR NOT x_90;
+ASSERT NOT x_81 OR NOT x_90;
+ASSERT x_9 OR x_8 OR x_7 OR x_6 OR x_5 OR x_4 OR x_3 OR x_2 OR x_1;
+ASSERT x_18 OR x_17 OR x_16 OR x_15 OR x_14 OR x_13 OR x_12 OR x_11 OR x_10;
+ASSERT x_27 OR x_26 OR x_25 OR x_24 OR x_23 OR x_22 OR x_21 OR x_20 OR x_19;
+ASSERT x_36 OR x_35 OR x_34 OR x_33 OR x_32 OR x_31 OR x_30 OR x_29 OR x_28;
+ASSERT x_45 OR x_44 OR x_43 OR x_42 OR x_41 OR x_40 OR x_39 OR x_38 OR x_37;
+ASSERT x_54 OR x_53 OR x_52 OR x_51 OR x_50 OR x_49 OR x_48 OR x_47 OR x_46;
+ASSERT x_63 OR x_62 OR x_61 OR x_60 OR x_59 OR x_58 OR x_57 OR x_56 OR x_55;
+ASSERT x_72 OR x_71 OR x_70 OR x_69 OR x_68 OR x_67 OR x_66 OR x_65 OR x_64;
+ASSERT x_81 OR x_80 OR x_79 OR x_78 OR x_77 OR x_76 OR x_75 OR x_74 OR x_73;
+ASSERT x_90 OR x_89 OR x_88 OR x_87 OR x_86 OR x_85 OR x_84 OR x_83 OR x_82;
+
+
+QUERY FALSE;
diff --git a/test/regress/regress3/incorrect1.smt b/test/regress/regress3/incorrect1.smt
new file mode 100644
index 0000000..23425d4
--- /dev/null
+++ b/test/regress/regress3/incorrect1.smt
@@ -0,0 +1,2852 @@
+(benchmark fuzzsmt
+:logic QF_UFLRA
+:status sat
+:extrafuns ((f0 Real Real Real))
+:extrafuns ((f1 Real Real Real))
+:extrapreds ((p0 Real Real))
+:extrafuns ((v0 Real))
+:formula
+(let (?e1 6)
+(let (?e2 1)
+(let (?e3 7)
+(let (?e4 (f1 v0 v0))
+(let (?e5 (* ?e1 v0))
+(let (?e6 (/ ?e1 (~ ?e1)))
+(let (?e7 (/ ?e3 (~ ?e1)))
+(let (?e8 (* ?e5 ?e3))
+(let (?e9 (ite (p0 ?e6 ?e7) 1 0))
+(let (?e10 (+ ?e7 ?e5))
+(let (?e11 (/ ?e1 ?e1))
+(let (?e12 (+ ?e6 ?e9))
+(let (?e13 (+ ?e12 ?e4))
+(let (?e14 (/ ?e2 ?e1))
+(let (?e15 (~ ?e10))
+(let (?e16 (~ ?e9))
+(let (?e17 (/ ?e1 (~ ?e2)))
+(let (?e18 (+ ?e7 v0))
+(let (?e19 (+ ?e7 ?e18))
+(let (?e20 (- ?e7 ?e4))
+(let (?e21 (+ ?e12 ?e12))
+(let (?e22 (/ ?e3 ?e1))
+(let (?e23 (~ ?e7))
+(let (?e24 (f1 ?e17 ?e16))
+(let (?e25 (- ?e14 ?e19))
+(let (?e26 (/ ?e2 (~ ?e1)))
+(let (?e27 (/ ?e1 ?e1))
+(let (?e28 (* ?e1 ?e27))
+(let (?e29 (~ ?e23))
+(let (?e30 (* ?e1 ?e23))
+(let (?e31 (~ ?e30))
+(let (?e32 (+ ?e13 ?e27))
+(let (?e33 (/ ?e1 (~ ?e1)))
+(let (?e34 (ite (p0 ?e5 ?e31) 1 0))
+(let (?e35 (* (~ ?e2) ?e9))
+(let (?e36 (/ ?e2 ?e2))
+(let (?e37 (+ ?e5 ?e22))
+(let (?e38 (ite (p0 ?e22 ?e20) 1 0))
+(let (?e39 (* (~ ?e1) ?e21))
+(let (?e40 (- ?e5 ?e29))
+(let (?e41 (- ?e36 v0))
+(let (?e42 (~ ?e14))
+(let (?e43 (/ ?e1 (~ ?e3)))
+(let (?e44 (- ?e11 ?e5))
+(let (?e45 (ite (p0 ?e31 ?e15) 1 0))
+(let (?e46 (+ ?e12 ?e36))
+(let (?e47 (* ?e1 ?e27))
+(let (?e48 (~ v0))
+(let (?e49 (f0 ?e48 ?e35))
+(flet ($e50 (> ?e9 ?e17))
+(flet ($e51 (>= ?e35 ?e38))
+(flet ($e52 (> ?e48 ?e20))
+(flet ($e53 (distinct ?e6 ?e33))
+(flet ($e54 (= ?e19 ?e8))
+(flet ($e55 (p0 v0 ?e5))
+(flet ($e56 (> ?e11 ?e6))
+(flet ($e57 (= ?e17 ?e45))
+(flet ($e58 (>= ?e33 ?e41))
+(flet ($e59 (= ?e34 ?e49))
+(flet ($e60 (>= ?e22 ?e21))
+(flet ($e61 (> ?e30 ?e11))
+(flet ($e62 (= ?e8 ?e24))
+(flet ($e63 (distinct ?e40 ?e19))
+(flet ($e64 (p0 ?e43 ?e49))
+(flet ($e65 (<= ?e23 ?e19))
+(flet ($e66 (p0 ?e45 ?e22))
+(flet ($e67 (distinct ?e49 ?e30))
+(flet ($e68 (>= ?e26 ?e13))
+(flet ($e69 (>= ?e5 ?e40))
+(flet ($e70 (distinct ?e16 ?e10))
+(flet ($e71 (< ?e43 ?e6))
+(flet ($e72 (<= ?e12 ?e15))
+(flet ($e73 (>= ?e6 ?e15))
+(flet ($e74 (= ?e31 ?e43))
+(flet ($e75 (distinct ?e46 ?e24))
+(flet ($e76 (p0 ?e4 ?e26))
+(flet ($e77 (>= ?e48 ?e26))
+(flet ($e78 (> ?e26 ?e24))
+(flet ($e79 (distinct v0 ?e6))
+(flet ($e80 (> ?e12 ?e44))
+(flet ($e81 (< ?e47 ?e35))
+(flet ($e82 (<= ?e36 ?e8))
+(flet ($e83 (>= ?e36 ?e28))
+(flet ($e84 (<= ?e25 ?e37))
+(flet ($e85 (<= ?e34 ?e6))
+(flet ($e86 (distinct ?e46 ?e19))
+(flet ($e87 (> ?e32 ?e30))
+(flet ($e88 (>= ?e49 ?e18))
+(flet ($e89 (distinct v0 ?e33))
+(flet ($e90 (< ?e38 ?e45))
+(flet ($e91 (distinct ?e45 ?e19))
+(flet ($e92 (distinct ?e8 ?e34))
+(flet ($e93 (distinct ?e42 ?e27))
+(flet ($e94 (distinct ?e38 ?e33))
+(flet ($e95 (= ?e30 ?e25))
+(flet ($e96 (> ?e24 ?e29))
+(flet ($e97 (distinct ?e25 ?e30))
+(flet ($e98 (<= ?e9 ?e15))
+(flet ($e99 (= ?e44 ?e15))
+(flet ($e100 (>= ?e34 ?e8))
+(flet ($e101 (>= ?e30 ?e38))
+(flet ($e102 (= ?e37 ?e49))
+(flet ($e103 (<= v0 ?e38))
+(flet ($e104 (= ?e34 ?e47))
+(flet ($e105 (p0 ?e20 ?e22))
+(flet ($e106 (p0 ?e46 ?e28))
+(flet ($e107 (distinct ?e24 ?e33))
+(flet ($e108 (< ?e32 ?e12))
+(flet ($e109 (> ?e7 ?e31))
+(flet ($e110 (= v0 ?e13))
+(flet ($e111 (> ?e22 ?e32))
+(flet ($e112 (>= ?e36 ?e27))
+(flet ($e113 (> ?e31 ?e36))
+(flet ($e114 (<= ?e4 ?e5))
+(flet ($e115 (distinct ?e13 ?e4))
+(flet ($e116 (<= v0 ?e21))
+(flet ($e117 (p0 ?e31 ?e23))
+(flet ($e118 (< ?e26 ?e18))
+(flet ($e119 (<= ?e42 ?e47))
+(flet ($e120 (< ?e10 ?e24))
+(flet ($e121 (> ?e12 ?e20))
+(flet ($e122 (= ?e31 ?e31))
+(flet ($e123 (distinct ?e37 ?e7))
+(flet ($e124 (p0 ?e48 ?e30))
+(flet ($e125 (distinct ?e6 ?e34))
+(flet ($e126 (> ?e9 ?e21))
+(flet ($e127 (> ?e12 ?e27))
+(flet ($e128 (distinct ?e11 ?e16))
+(flet ($e129 (= ?e25 ?e48))
+(flet ($e130 (p0 ?e22 ?e22))
+(flet ($e131 (<= ?e32 ?e8))
+(flet ($e132 (>= ?e10 ?e21))
+(flet ($e133 (= ?e47 ?e16))
+(flet ($e134 (> ?e21 ?e28))
+(flet ($e135 (< ?e30 ?e17))
+(flet ($e136 (p0 v0 ?e5))
+(flet ($e137 (> ?e10 ?e25))
+(flet ($e138 (<= ?e43 ?e39))
+(flet ($e139 (> ?e4 ?e11))
+(flet ($e140 (= ?e24 ?e32))
+(flet ($e141 (< ?e44 ?e33))
+(flet ($e142 (>= ?e17 ?e22))
+(flet ($e143 (< ?e23 ?e28))
+(flet ($e144 (< ?e9 ?e44))
+(flet ($e145 (>= ?e19 ?e42))
+(flet ($e146 (= ?e18 ?e21))
+(flet ($e147 (p0 ?e45 ?e15))
+(flet ($e148 (> ?e23 ?e19))
+(flet ($e149 (= ?e24 ?e16))
+(flet ($e150 (< ?e7 ?e39))
+(flet ($e151 (>= ?e9 ?e11))
+(flet ($e152 (<= ?e45 ?e31))
+(flet ($e153 (<= ?e18 ?e42))
+(flet ($e154 (< ?e7 ?e21))
+(flet ($e155 (p0 ?e12 ?e42))
+(flet ($e156 (< ?e32 ?e36))
+(flet ($e157 (p0 ?e30 ?e13))
+(flet ($e158 (= ?e33 ?e45))
+(flet ($e159 (= ?e26 ?e19))
+(flet ($e160 (>= ?e17 ?e45))
+(flet ($e161 (> ?e9 ?e7))
+(flet ($e162 (<= ?e45 ?e12))
+(flet ($e163 (distinct ?e24 ?e32))
+(flet ($e164 (p0 ?e12 ?e4))
+(flet ($e165 (> ?e35 ?e30))
+(flet ($e166 (distinct ?e45 ?e18))
+(flet ($e167 (< ?e29 ?e22))
+(flet ($e168 (distinct ?e17 ?e38))
+(flet ($e169 (> ?e16 ?e36))
+(flet ($e170 (< ?e17 ?e38))
+(flet ($e171 (>= ?e39 ?e20))
+(flet ($e172 (distinct ?e46 ?e36))
+(flet ($e173 (p0 ?e9 ?e16))
+(flet ($e174 (= ?e24 ?e4))
+(flet ($e175 (p0 ?e9 ?e7))
+(flet ($e176 (>= ?e44 ?e49))
+(flet ($e177 (> ?e38 ?e27))
+(flet ($e178 (p0 ?e8 ?e12))
+(flet ($e179 (p0 ?e26 ?e8))
+(flet ($e180 (<= ?e26 ?e23))
+(flet ($e181 (distinct ?e34 ?e18))
+(flet ($e182 (>= ?e22 ?e48))
+(flet ($e183 (= ?e48 ?e6))
+(flet ($e184 (>= ?e39 ?e27))
+(flet ($e185 (< ?e37 ?e12))
+(flet ($e186 (>= ?e35 ?e15))
+(flet ($e187 (>= ?e8 ?e15))
+(flet ($e188 (<= ?e43 ?e30))
+(flet ($e189 (= ?e21 ?e12))
+(flet ($e190 (< ?e34 ?e41))
+(flet ($e191 (>= ?e39 ?e6))
+(flet ($e192 (<= ?e24 ?e40))
+(flet ($e193 (> ?e7 ?e5))
+(flet ($e194 (= ?e28 ?e25))
+(flet ($e195 (p0 ?e30 ?e16))
+(flet ($e196 (> ?e49 ?e41))
+(flet ($e197 (< ?e41 ?e44))
+(flet ($e198 (p0 v0 ?e26))
+(flet ($e199 (<= ?e46 ?e20))
+(flet ($e200 (= ?e46 ?e27))
+(flet ($e201 (>= ?e28 ?e4))
+(flet ($e202 (p0 ?e40 ?e45))
+(flet ($e203 (< ?e26 ?e5))
+(flet ($e204 (>= ?e44 ?e15))
+(flet ($e205 (= ?e26 ?e22))
+(flet ($e206 (<= ?e46 ?e9))
+(flet ($e207 (p0 ?e10 ?e37))
+(flet ($e208 (p0 ?e32 ?e13))
+(flet ($e209 (< ?e31 ?e29))
+(flet ($e210 (= ?e46 ?e9))
+(flet ($e211 (= ?e40 ?e14))
+(let (?e212 (ite $e170 ?e13 ?e6))
+(let (?e213 (ite $e55 ?e22 ?e29))
+(let (?e214 (ite $e169 ?e24 ?e31))
+(let (?e215 (ite $e70 ?e24 ?e42))
+(let (?e216 (ite $e86 ?e7 ?e39))
+(let (?e217 (ite $e155 ?e47 ?e14))
+(let (?e218 (ite $e53 ?e11 ?e34))
+(let (?e219 (ite $e124 ?e213 ?e24))
+(let (?e220 (ite $e211 ?e42 ?e28))
+(let (?e221 (ite $e84 ?e8 ?e16))
+(let (?e222 (ite $e78 ?e32 v0))
+(let (?e223 (ite $e153 ?e20 ?e40))
+(let (?e224 (ite $e59 ?e5 ?e13))
+(let (?e225 (ite $e110 ?e38 ?e221))
+(let (?e226 (ite $e82 ?e49 ?e31))
+(let (?e227 (ite $e169 ?e37 ?e49))
+(let (?e228 (ite $e163 ?e28 ?e224))
+(let (?e229 (ite $e192 ?e48 ?e218))
+(let (?e230 (ite $e56 ?e21 ?e227))
+(let (?e231 (ite $e130 ?e19 ?e40))
+(let (?e232 (ite $e140 ?e20 v0))
+(let (?e233 (ite $e144 ?e14 ?e232))
+(let (?e234 (ite $e88 ?e226 ?e223))
+(let (?e235 (ite $e69 ?e36 ?e31))
+(let (?e236 (ite $e204 ?e45 ?e24))
+(let (?e237 (ite $e102 ?e234 ?e28))
+(let (?e238 (ite $e208 ?e4 ?e224))
+(let (?e239 (ite $e137 ?e44 ?e9))
+(let (?e240 (ite $e187 ?e18 ?e35))
+(let (?e241 (ite $e154 ?e44 ?e4))
+(let (?e242 (ite $e176 ?e30 ?e37))
+(let (?e243 (ite $e106 ?e17 ?e16))
+(let (?e244 (ite $e100 ?e20 ?e226))
+(let (?e245 (ite $e118 ?e49 ?e4))
+(let (?e246 (ite $e109 ?e23 ?e229))
+(let (?e247 (ite $e105 ?e15 ?e36))
+(let (?e248 (ite $e138 ?e229 ?e26))
+(let (?e249 (ite $e50 ?e45 ?e10))
+(let (?e250 (ite $e141 v0 ?e228))
+(let (?e251 (ite $e144 ?e21 ?e46))
+(let (?e252 (ite $e154 ?e15 ?e13))
+(let (?e253 (ite $e175 ?e34 ?e29))
+(let (?e254 (ite $e201 ?e42 ?e5))
+(let (?e255 (ite $e139 ?e27 ?e35))
+(let (?e256 (ite $e158 ?e43 ?e214))
+(let (?e257 (ite $e147 ?e213 ?e31))
+(let (?e258 (ite $e178 ?e33 ?e48))
+(let (?e259 (ite $e73 ?e25 ?e8))
+(let (?e260 (ite $e103 ?e41 ?e249))
+(let (?e261 (ite $e86 ?e226 ?e44))
+(let (?e262 (ite $e119 ?e36 ?e26))
+(let (?e263 (ite $e96 ?e226 ?e256))
+(let (?e264 (ite $e115 ?e12 ?e37))
+(let (?e265 (ite $e55 ?e35 ?e8))
+(let (?e266 (ite $e62 ?e30 ?e11))
+(let (?e267 (ite $e75 ?e5 v0))
+(let (?e268 (ite $e95 ?e238 ?e214))
+(let (?e269 (ite $e196 ?e234 ?e224))
+(let (?e270 (ite $e57 ?e31 ?e29))
+(let (?e271 (ite $e129 ?e29 ?e268))
+(let (?e272 (ite $e160 ?e225 ?e40))
+(let (?e273 (ite $e183 ?e250 ?e13))
+(let (?e274 (ite $e119 ?e263 ?e238))
+(let (?e275 (ite $e153 ?e231 ?e36))
+(let (?e276 (ite $e83 ?e268 ?e26))
+(let (?e277 (ite $e158 ?e260 ?e37))
+(let (?e278 (ite $e68 ?e252 ?e260))
+(let (?e279 (ite $e123 ?e25 ?e267))
+(let (?e280 (ite $e183 ?e248 ?e44))
+(let (?e281 (ite $e118 ?e248 ?e23))
+(let (?e282 (ite $e137 ?e39 ?e258))
+(let (?e283 (ite $e117 ?e7 ?e18))
+(let (?e284 (ite $e193 ?e215 ?e240))
+(let (?e285 (ite $e155 ?e249 ?e228))
+(let (?e286 (ite $e54 ?e256 ?e34))
+(let (?e287 (ite $e177 ?e255 ?e8))
+(let (?e288 (ite $e64 ?e32 ?e255))
+(let (?e289 (ite $e152 ?e44 ?e271))
+(let (?e290 (ite $e121 ?e21 ?e212))
+(let (?e291 (ite $e127 ?e40 ?e281))
+(let (?e292 (ite $e198 ?e219 ?e4))
+(let (?e293 (ite $e181 ?e274 ?e240))
+(let (?e294 (ite $e85 ?e39 ?e230))
+(let (?e295 (ite $e201 ?e230 ?e36))
+(let (?e296 (ite $e58 ?e14 ?e248))
+(let (?e297 (ite $e126 ?e231 ?e279))
+(let (?e298 (ite $e128 ?e276 ?e33))
+(let (?e299 (ite $e61 ?e288 ?e34))
+(let (?e300 (ite $e116 ?e231 ?e233))
+(let (?e301 (ite $e60 ?e268 ?e10))
+(let (?e302 (ite $e184 ?e239 ?e291))
+(let (?e303 (ite $e88 ?e11 ?e271))
+(let (?e304 (ite $e134 ?e296 ?e20))
+(let (?e305 (ite $e165 ?e268 ?e243))
+(let (?e306 (ite $e123 ?e266 ?e42))
+(let (?e307 (ite $e79 ?e27 ?e263))
+(let (?e308 (ite $e126 ?e213 ?e42))
+(let (?e309 (ite $e58 ?e272 ?e246))
+(let (?e310 (ite $e192 ?e290 ?e227))
+(let (?e311 (ite $e145 ?e7 ?e40))
+(let (?e312 (ite $e71 ?e231 ?e12))
+(let (?e313 (ite $e93 ?e38 ?e302))
+(let (?e314 (ite $e185 ?e255 ?e233))
+(let (?e315 (ite $e164 ?e303 ?e257))
+(let (?e316 (ite $e61 ?e266 ?e305))
+(let (?e317 (ite $e65 ?e289 ?e300))
+(let (?e318 (ite $e191 ?e216 ?e317))
+(let (?e319 (ite $e167 ?e16 ?e212))
+(let (?e320 (ite $e188 ?e272 ?e221))
+(let (?e321 (ite $e197 ?e310 ?e222))
+(let (?e322 (ite $e182 ?e41 ?e262))
+(let (?e323 (ite $e52 ?e275 ?e320))
+(let (?e324 (ite $e92 ?e21 ?e39))
+(let (?e325 (ite $e77 ?e323 ?e321))
+(let (?e326 (ite $e202 ?e302 ?e315))
+(let (?e327 (ite $e99 ?e317 ?e231))
+(let (?e328 (ite $e159 ?e267 ?e272))
+(let (?e329 (ite $e174 ?e295 ?e258))
+(let (?e330 (ite $e148 ?e307 ?e295))
+(let (?e331 (ite $e195 ?e217 ?e315))
+(let (?e332 (ite $e98 ?e240 ?e301))
+(let (?e333 (ite $e81 ?e33 ?e213))
+(let (?e334 (ite $e196 ?e13 ?e250))
+(let (?e335 (ite $e113 ?e16 ?e276))
+(let (?e336 (ite $e149 ?e311 ?e46))
+(let (?e337 (ite $e60 ?e18 ?e235))
+(let (?e338 (ite $e189 ?e4 ?e4))
+(let (?e339 (ite $e97 ?e27 ?e278))
+(let (?e340 (ite $e168 ?e294 ?e327))
+(let (?e341 (ite $e194 ?e8 ?e311))
+(let (?e342 (ite $e162 ?e308 ?e310))
+(let (?e343 (ite $e205 ?e258 ?e13))
+(let (?e344 (ite $e66 ?e323 ?e309))
+(let (?e345 (ite $e77 ?e295 ?e46))
+(let (?e346 (ite $e179 ?e259 ?e340))
+(let (?e347 (ite $e157 ?e325 ?e312))
+(let (?e348 (ite $e184 ?e259 ?e32))
+(let (?e349 (ite $e156 ?e14 ?e347))
+(let (?e350 (ite $e90 ?e290 ?e255))
+(let (?e351 (ite $e199 ?e313 ?e16))
+(let (?e352 (ite $e180 ?e35 ?e220))
+(let (?e353 (ite $e184 ?e214 ?e42))
+(let (?e354 (ite $e190 ?e285 ?e352))
+(let (?e355 (ite $e132 ?e226 ?e254))
+(let (?e356 (ite $e171 ?e220 ?e275))
+(let (?e357 (ite $e78 ?e218 ?e339))
+(let (?e358 (ite $e142 ?e278 ?e335))
+(let (?e359 (ite $e83 ?e261 ?e49))
+(let (?e360 (ite $e89 ?e270 ?e293))
+(let (?e361 (ite $e143 ?e318 ?e10))
+(let (?e362 (ite $e133 ?e250 ?e307))
+(let (?e363 (ite $e58 ?e36 ?e296))
+(let (?e364 (ite $e62 ?e344 ?e43))
+(let (?e365 (ite $e149 ?e324 ?e263))
+(let (?e366 (ite $e187 ?e263 ?e281))
+(let (?e367 (ite $e122 ?e37 ?e256))
+(let (?e368 (ite $e156 ?e263 ?e259))
+(let (?e369 (ite $e104 ?e258 ?e219))
+(let (?e370 (ite $e102 ?e355 ?e270))
+(let (?e371 (ite $e123 ?e313 ?e345))
+(let (?e372 (ite $e206 ?e16 ?e273))
+(let (?e373 (ite $e203 ?e358 ?e29))
+(let (?e374 (ite $e209 ?e6 ?e325))
+(let (?e375 (ite $e114 ?e342 ?e236))
+(let (?e376 (ite $e125 ?e213 ?e292))
+(let (?e377 (ite $e95 ?e253 ?e363))
+(let (?e378 (ite $e107 ?e228 ?e377))
+(let (?e379 (ite $e74 ?e292 ?e335))
+(let (?e380 (ite $e98 ?e293 ?e352))
+(let (?e381 (ite $e60 ?e347 ?e309))
+(let (?e382 (ite $e210 ?e220 ?e265))
+(let (?e383 (ite $e52 ?e288 ?e266))
+(let (?e384 (ite $e116 ?e10 ?e311))
+(let (?e385 (ite $e69 ?e271 ?e13))
+(let (?e386 (ite $e186 ?e333 ?e256))
+(let (?e387 (ite $e139 ?e295 ?e305))
+(let (?e388 (ite $e59 ?e387 ?e325))
+(let (?e389 (ite $e67 ?e325 ?e358))
+(let (?e390 (ite $e179 ?e368 ?e344))
+(let (?e391 (ite $e142 ?e217 ?e31))
+(let (?e392 (ite $e108 ?e8 ?e18))
+(let (?e393 (ite $e91 ?e379 ?e281))
+(let (?e394 (ite $e137 ?e17 ?e237))
+(let (?e395 (ite $e72 ?e227 ?e315))
+(let (?e396 (ite $e70 ?e36 ?e260))
+(let (?e397 (ite $e208 ?e330 ?e359))
+(let (?e398 (ite $e115 ?e348 ?e42))
+(let (?e399 (ite $e146 ?e339 ?e22))
+(let (?e400 (ite $e172 ?e338 ?e24))
+(let (?e401 (ite $e151 ?e333 ?e359))
+(let (?e402 (ite $e116 ?e231 ?e30))
+(let (?e403 (ite $e62 ?e311 ?e216))
+(let (?e404 (ite $e171 ?e386 ?e265))
+(let (?e405 (ite $e58 ?e39 ?e369))
+(let (?e406 (ite $e112 ?e341 ?e355))
+(let (?e407 (ite $e166 ?e7 ?e270))
+(let (?e408 (ite $e76 ?e297 ?e293))
+(let (?e409 (ite $e146 ?e378 ?e33))
+(let (?e410 (ite $e120 ?e12 ?e261))
+(let (?e411 (ite $e161 ?e237 ?e290))
+(let (?e412 (ite $e123 ?e256 ?e222))
+(let (?e413 (ite $e80 ?e365 ?e303))
+(let (?e414 (ite $e94 ?e394 ?e351))
+(let (?e415 (ite $e136 ?e227 ?e233))
+(let (?e416 (ite $e193 ?e226 ?e408))
+(let (?e417 (ite $e103 ?e9 ?e376))
+(let (?e418 (ite $e162 ?e403 ?e415))
+(let (?e419 (ite $e87 ?e286 ?e260))
+(let (?e420 (ite $e207 ?e332 ?e304))
+(let (?e421 (ite $e135 ?e35 ?e268))
+(let (?e422 (ite $e178 ?e395 ?e329))
+(let (?e423 (ite $e198 ?e397 ?e215))
+(let (?e424 (ite $e198 ?e221 ?e45))
+(let (?e425 (ite $e172 ?e43 ?e212))
+(let (?e426 (ite $e131 ?e298 ?e422))
+(let (?e427 (ite $e188 ?e212 ?e416))
+(let (?e428 (ite $e200 ?e352 ?e357))
+(let (?e429 (ite $e150 ?e385 ?e288))
+(let (?e430 (ite $e143 ?e227 ?e214))
+(let (?e431 (ite $e118 ?e29 ?e381))
+(let (?e432 (ite $e102 ?e376 ?e247))
+(let (?e433 (ite $e51 ?e395 ?e270))
+(let (?e434 (ite $e111 ?e304 ?e28))
+(let (?e435 (ite $e63 ?e28 ?e224))
+(let (?e436 (ite $e134 ?e257 ?e33))
+(let (?e437 (ite $e81 ?e247 ?e385))
+(let (?e438 (ite $e101 ?e377 ?e349))
+(let (?e439 (ite $e173 ?e405 ?e342))
+(flet ($e440 (<= ?e34 ?e271))
+(flet ($e441 (= ?e6 ?e23))
+(flet ($e442 (p0 ?e292 ?e370))
+(flet ($e443 (= ?e298 ?e229))
+(flet ($e444 (>= ?e395 ?e280))
+(flet ($e445 (p0 ?e239 ?e343))
+(flet ($e446 (= ?e257 ?e386))
+(flet ($e447 (= ?e14 ?e433))
+(flet ($e448 (= ?e305 ?e240))
+(flet ($e449 (> ?e355 ?e260))
+(flet ($e450 (< ?e315 ?e326))
+(flet ($e451 (p0 ?e423 ?e218))
+(flet ($e452 (p0 ?e342 ?e386))
+(flet ($e453 (p0 ?e348 ?e24))
+(flet ($e454 (> ?e270 ?e427))
+(flet ($e455 (< ?e222 ?e301))
+(flet ($e456 (distinct ?e7 ?e243))
+(flet ($e457 (distinct ?e257 ?e338))
+(flet ($e458 (>= ?e12 ?e360))
+(flet ($e459 (<= ?e13 ?e268))
+(flet ($e460 (p0 ?e28 ?e288))
+(flet ($e461 (= ?e435 ?e298))
+(flet ($e462 (= ?e317 ?e420))
+(flet ($e463 (p0 ?e334 ?e22))
+(flet ($e464 (<= ?e360 ?e423))
+(flet ($e465 (= ?e40 ?e405))
+(flet ($e466 (>= ?e379 ?e262))
+(flet ($e467 (= ?e428 ?e35))
+(flet ($e468 (>= ?e336 ?e393))
+(flet ($e469 (>= ?e291 ?e364))
+(flet ($e470 (<= ?e323 ?e24))
+(flet ($e471 (> ?e47 ?e253))
+(flet ($e472 (= ?e227 ?e231))
+(flet ($e473 (< ?e287 ?e414))
+(flet ($e474 (>= ?e309 ?e406))
+(flet ($e475 (distinct ?e19 ?e33))
+(flet ($e476 (<= ?e423 ?e335))
+(flet ($e477 (distinct ?e329 ?e295))
+(flet ($e478 (= ?e37 ?e372))
+(flet ($e479 (>= ?e214 ?e289))
+(flet ($e480 (>= ?e229 ?e316))
+(flet ($e481 (<= ?e388 ?e295))
+(flet ($e482 (< ?e215 ?e296))
+(flet ($e483 (distinct ?e292 ?e26))
+(flet ($e484 (= ?e214 ?e14))
+(flet ($e485 (>= ?e342 ?e297))
+(flet ($e486 (> ?e391 ?e294))
+(flet ($e487 (distinct ?e253 ?e296))
+(flet ($e488 (>= ?e13 ?e434))
+(flet ($e489 (< ?e425 ?e256))
+(flet ($e490 (<= ?e348 ?e391))
+(flet ($e491 (> ?e368 ?e371))
+(flet ($e492 (p0 ?e305 ?e250))
+(flet ($e493 (p0 ?e366 ?e369))
+(flet ($e494 (< ?e285 ?e11))
+(flet ($e495 (<= ?e393 ?e304))
+(flet ($e496 (<= ?e295 ?e221))
+(flet ($e497 (> ?e266 ?e32))
+(flet ($e498 (<= ?e266 ?e7))
+(flet ($e499 (= ?e368 ?e287))
+(flet ($e500 (= ?e343 ?e354))
+(flet ($e501 (>= ?e273 ?e432))
+(flet ($e502 (> ?e240 ?e229))
+(flet ($e503 (>= ?e391 ?e368))
+(flet ($e504 (distinct ?e18 ?e360))
+(flet ($e505 (> ?e317 ?e339))
+(flet ($e506 (distinct ?e298 ?e403))
+(flet ($e507 (>= ?e23 ?e374))
+(flet ($e508 (= ?e232 ?e225))
+(flet ($e509 (p0 ?e259 ?e329))
+(flet ($e510 (p0 ?e390 ?e6))
+(flet ($e511 (> ?e361 ?e378))
+(flet ($e512 (>= ?e387 ?e435))
+(flet ($e513 (>= ?e218 ?e371))
+(flet ($e514 (<= ?e8 ?e423))
+(flet ($e515 (distinct ?e325 ?e25))
+(flet ($e516 (< ?e249 ?e327))
+(flet ($e517 (> ?e239 ?e331))
+(flet ($e518 (> ?e238 ?e220))
+(flet ($e519 (distinct ?e262 ?e370))
+(flet ($e520 (>= ?e327 ?e393))
+(flet ($e521 (> ?e49 ?e410))
+(flet ($e522 (distinct ?e359 ?e349))
+(flet ($e523 (p0 ?e264 ?e263))
+(flet ($e524 (> ?e39 ?e412))
+(flet ($e525 (< ?e356 ?e332))
+(flet ($e526 (distinct ?e35 ?e215))
+(flet ($e527 (< ?e439 ?e360))
+(flet ($e528 (> ?e379 ?e326))
+(flet ($e529 (= ?e389 ?e246))
+(flet ($e530 (distinct ?e312 ?e309))
+(flet ($e531 (p0 ?e213 ?e414))
+(flet ($e532 (<= ?e257 ?e261))
+(flet ($e533 (<= ?e41 ?e420))
+(flet ($e534 (<= ?e392 ?e35))
+(flet ($e535 (distinct ?e359 ?e219))
+(flet ($e536 (> ?e319 ?e429))
+(flet ($e537 (p0 ?e29 ?e418))
+(flet ($e538 (< ?e227 ?e274))
+(flet ($e539 (distinct ?e278 ?e337))
+(flet ($e540 (= ?e252 ?e4))
+(flet ($e541 (> ?e333 ?e431))
+(flet ($e542 (> ?e362 ?e327))
+(flet ($e543 (= ?e215 ?e326))
+(flet ($e544 (p0 ?e376 ?e301))
+(flet ($e545 (p0 ?e266 ?e317))
+(flet ($e546 (<= ?e22 ?e431))
+(flet ($e547 (p0 ?e293 ?e39))
+(flet ($e548 (> ?e49 ?e228))
+(flet ($e549 (>= ?e345 ?e24))
+(flet ($e550 (< ?e353 ?e247))
+(flet ($e551 (distinct ?e343 ?e320))
+(flet ($e552 (>= ?e395 ?e48))
+(flet ($e553 (p0 ?e328 ?e414))
+(flet ($e554 (= ?e344 ?e21))
+(flet ($e555 (>= ?e369 ?e430))
+(flet ($e556 (< ?e416 ?e395))
+(flet ($e557 (distinct ?e358 ?e352))
+(flet ($e558 (<= ?e430 ?e413))
+(flet ($e559 (= ?e217 ?e220))
+(flet ($e560 (distinct ?e267 ?e305))
+(flet ($e561 (< ?e43 ?e437))
+(flet ($e562 (<= ?e24 ?e6))
+(flet ($e563 (distinct ?e223 ?e296))
+(flet ($e564 (< ?e345 ?e29))
+(flet ($e565 (>= ?e282 ?e23))
+(flet ($e566 (> ?e238 ?e37))
+(flet ($e567 (> ?e424 ?e257))
+(flet ($e568 (>= ?e348 ?e350))
+(flet ($e569 (distinct ?e305 ?e260))
+(flet ($e570 (> ?e20 ?e326))
+(flet ($e571 (> v0 ?e425))
+(flet ($e572 (<= ?e331 ?e329))
+(flet ($e573 (<= ?e279 ?e226))
+(flet ($e574 (= ?e430 ?e328))
+(flet ($e575 (distinct ?e317 ?e267))
+(flet ($e576 (>= ?e283 ?e301))
+(flet ($e577 (> ?e344 ?e219))
+(flet ($e578 (= ?e342 ?e264))
+(flet ($e579 (p0 ?e37 ?e241))
+(flet ($e580 (>= ?e278 ?e213))
+(flet ($e581 (>= ?e341 ?e32))
+(flet ($e582 (distinct ?e316 ?e7))
+(flet ($e583 (p0 ?e356 ?e391))
+(flet ($e584 (p0 ?e402 ?e394))
+(flet ($e585 (= ?e299 ?e397))
+(flet ($e586 (>= ?e433 ?e313))
+(flet ($e587 (p0 ?e45 ?e357))
+(flet ($e588 (= ?e49 ?e249))
+(flet ($e589 (< ?e38 ?e270))
+(flet ($e590 (distinct ?e287 ?e399))
+(flet ($e591 (> ?e430 ?e433))
+(flet ($e592 (<= ?e422 ?e336))
+(flet ($e593 (> ?e236 ?e320))
+(flet ($e594 (>= ?e333 ?e306))
+(flet ($e595 (p0 ?e368 ?e403))
+(flet ($e596 (<= ?e49 ?e8))
+(flet ($e597 (p0 ?e403 ?e384))
+(flet ($e598 (>= ?e231 ?e240))
+(flet ($e599 (= ?e258 ?e358))
+(flet ($e600 (= ?e240 ?e45))
+(flet ($e601 (>= ?e252 ?e4))
+(flet ($e602 (distinct ?e274 ?e366))
+(flet ($e603 (> ?e215 ?e381))
+(flet ($e604 (distinct ?e358 ?e381))
+(flet ($e605 (<= ?e41 ?e41))
+(flet ($e606 (= ?e300 ?e400))
+(flet ($e607 (<= ?e330 ?e312))
+(flet ($e608 (p0 ?e33 ?e220))
+(flet ($e609 (< ?e20 ?e40))
+(flet ($e610 (p0 ?e391 ?e399))
+(flet ($e611 (= ?e383 ?e39))
+(flet ($e612 (< ?e49 ?e42))
+(flet ($e613 (>= ?e410 ?e341))
+(flet ($e614 (<= ?e322 ?e255))
+(flet ($e615 (>= ?e437 ?e251))
+(flet ($e616 (> ?e254 ?e327))
+(flet ($e617 (< ?e216 ?e229))
+(flet ($e618 (= ?e269 ?e300))
+(flet ($e619 (> ?e338 ?e410))
+(flet ($e620 (> ?e405 ?e319))
+(flet ($e621 (p0 ?e346 ?e370))
+(flet ($e622 (distinct ?e409 ?e415))
+(flet ($e623 (p0 ?e361 ?e313))
+(flet ($e624 (>= ?e323 ?e269))
+(flet ($e625 (p0 ?e233 ?e351))
+(flet ($e626 (>= ?e31 ?e334))
+(flet ($e627 (>= ?e346 ?e426))
+(flet ($e628 (> ?e389 ?e238))
+(flet ($e629 (>= ?e414 ?e320))
+(flet ($e630 (distinct ?e439 ?e403))
+(flet ($e631 (< ?e297 ?e40))
+(flet ($e632 (< ?e32 ?e21))
+(flet ($e633 (distinct ?e240 ?e269))
+(flet ($e634 (distinct ?e245 ?e298))
+(flet ($e635 (distinct ?e28 ?e267))
+(flet ($e636 (<= ?e371 ?e351))
+(flet ($e637 (> ?e39 ?e246))
+(flet ($e638 (<= ?e32 ?e280))
+(flet ($e639 (> ?e33 ?e328))
+(flet ($e640 (p0 ?e343 ?e377))
+(flet ($e641 (= ?e252 ?e342))
+(flet ($e642 (distinct ?e219 ?e342))
+(flet ($e643 (<= ?e328 ?e334))
+(flet ($e644 (= ?e364 ?e221))
+(flet ($e645 (> ?e389 ?e26))
+(flet ($e646 (distinct ?e387 ?e338))
+(flet ($e647 (= ?e246 ?e261))
+(flet ($e648 (p0 ?e416 ?e38))
+(flet ($e649 (distinct ?e380 ?e25))
+(flet ($e650 (<= ?e245 ?e21))
+(flet ($e651 (< ?e31 ?e220))
+(flet ($e652 (p0 ?e362 ?e278))
+(flet ($e653 (<= ?e422 ?e396))
+(flet ($e654 (> ?e352 ?e351))
+(flet ($e655 (= ?e28 ?e398))
+(flet ($e656 (distinct ?e345 ?e244))
+(flet ($e657 (>= ?e366 ?e336))
+(flet ($e658 (= ?e315 ?e389))
+(flet ($e659 (> ?e372 ?e218))
+(flet ($e660 (<= ?e427 ?e297))
+(flet ($e661 (< ?e364 ?e323))
+(flet ($e662 (distinct ?e403 ?e293))
+(flet ($e663 (> ?e308 ?e408))
+(flet ($e664 (p0 ?e403 ?e398))
+(flet ($e665 (= ?e393 ?e264))
+(flet ($e666 (distinct ?e379 ?e222))
+(flet ($e667 (< ?e44 ?e275))
+(flet ($e668 (= ?e375 ?e13))
+(flet ($e669 (> ?e321 ?e428))
+(flet ($e670 (distinct ?e417 ?e245))
+(flet ($e671 (= ?e351 ?e20))
+(flet ($e672 (> ?e363 ?e286))
+(flet ($e673 (= ?e276 ?e285))
+(flet ($e674 (>= ?e366 ?e341))
+(flet ($e675 (> ?e307 ?e420))
+(flet ($e676 (> ?e439 ?e349))
+(flet ($e677 (> ?e312 ?e4))
+(flet ($e678 (>= ?e314 ?e333))
+(flet ($e679 (distinct ?e241 ?e292))
+(flet ($e680 (= ?e289 ?e27))
+(flet ($e681 (= ?e304 ?e377))
+(flet ($e682 (< ?e432 ?e351))
+(flet ($e683 (p0 ?e247 ?e418))
+(flet ($e684 (>= ?e224 ?e323))
+(flet ($e685 (> ?e299 ?e303))
+(flet ($e686 (p0 ?e392 ?e396))
+(flet ($e687 (= ?e311 ?e17))
+(flet ($e688 (>= ?e272 ?e283))
+(flet ($e689 (p0 ?e216 ?e361))
+(flet ($e690 (= ?e400 ?e41))
+(flet ($e691 (= ?e37 ?e362))
+(flet ($e692 (p0 ?e283 ?e439))
+(flet ($e693 (>= ?e213 ?e337))
+(flet ($e694 (= ?e354 ?e395))
+(flet ($e695 (distinct ?e342 ?e374))
+(flet ($e696 (> ?e247 ?e256))
+(flet ($e697 (<= ?e292 ?e237))
+(flet ($e698 (distinct ?e400 ?e252))
+(flet ($e699 (= ?e14 ?e384))
+(flet ($e700 (distinct ?e391 ?e338))
+(flet ($e701 (< ?e10 ?e309))
+(flet ($e702 (> ?e364 ?e221))
+(flet ($e703 (p0 ?e17 ?e45))
+(flet ($e704 (p0 ?e39 ?e381))
+(flet ($e705 (<= ?e403 ?e233))
+(flet ($e706 (p0 ?e283 ?e344))
+(flet ($e707 (< ?e373 ?e34))
+(flet ($e708 (<= ?e47 ?e341))
+(flet ($e709 (<= ?e406 ?e336))
+(flet ($e710 (>= ?e230 ?e253))
+(flet ($e711 (>= ?e321 ?e382))
+(flet ($e712 (distinct ?e24 ?e274))
+(flet ($e713 (distinct ?e320 ?e424))
+(flet ($e714 (p0 ?e7 ?e337))
+(flet ($e715 (p0 ?e249 ?e290))
+(flet ($e716 (<= ?e42 ?e253))
+(flet ($e717 (> ?e262 ?e4))
+(flet ($e718 (distinct ?e305 ?e235))
+(flet ($e719 (= ?e423 ?e240))
+(flet ($e720 (>= ?e16 ?e277))
+(flet ($e721 (>= ?e44 ?e334))
+(flet ($e722 (<= ?e253 ?e277))
+(flet ($e723 (> ?e39 ?e239))
+(flet ($e724 (< ?e366 ?e259))
+(flet ($e725 (<= ?e21 ?e338))
+(flet ($e726 (>= ?e216 ?e431))
+(flet ($e727 (> ?e293 ?e376))
+(flet ($e728 (= ?e275 ?e384))
+(flet ($e729 (p0 ?e233 ?e328))
+(flet ($e730 (<= ?e425 ?e280))
+(flet ($e731 (<= ?e295 ?e269))
+(flet ($e732 (= ?e435 ?e47))
+(flet ($e733 (>= ?e232 ?e231))
+(flet ($e734 (>= ?e26 ?e272))
+(flet ($e735 (= ?e404 ?e390))
+(flet ($e736 (> ?e12 ?e15))
+(flet ($e737 (<= ?e49 ?e401))
+(flet ($e738 (>= ?e218 ?e268))
+(flet ($e739 (p0 ?e288 ?e340))
+(flet ($e740 (p0 ?e222 ?e218))
+(flet ($e741 (<= ?e435 ?e308))
+(flet ($e742 (> ?e32 ?e439))
+(flet ($e743 (p0 ?e35 ?e275))
+(flet ($e744 (distinct ?e433 ?e342))
+(flet ($e745 (<= ?e380 ?e379))
+(flet ($e746 (>= ?e410 ?e390))
+(flet ($e747 (>= ?e213 ?e398))
+(flet ($e748 (= ?e333 ?e305))
+(flet ($e749 (distinct ?e11 ?e271))
+(flet ($e750 (< ?e237 ?e215))
+(flet ($e751 (= ?e366 ?e320))
+(flet ($e752 (= ?e344 ?e352))
+(flet ($e753 (>= ?e352 ?e256))
+(flet ($e754 (<= ?e34 ?e339))
+(flet ($e755 (= ?e33 ?e330))
+(flet ($e756 (distinct ?e363 ?e436))
+(flet ($e757 (< ?e47 ?e262))
+(flet ($e758 (>= ?e338 ?e326))
+(flet ($e759 (p0 ?e236 ?e374))
+(flet ($e760 (<= ?e404 ?e10))
+(flet ($e761 (p0 ?e257 ?e247))
+(flet ($e762 (distinct ?e327 ?e391))
+(flet ($e763 (>= ?e213 ?e437))
+(flet ($e764 (> ?e429 ?e16))
+(flet ($e765 (>= ?e328 ?e303))
+(flet ($e766 (< ?e257 ?e287))
+(flet ($e767 (<= ?e5 ?e316))
+(flet ($e768 (= ?e304 ?e307))
+(flet ($e769 (> ?e329 ?e259))
+(flet ($e770 (>= ?e290 ?e238))
+(flet ($e771 (> ?e350 ?e35))
+(flet ($e772 (>= ?e412 ?e358))
+(flet ($e773 (distinct ?e238 ?e399))
+(flet ($e774 (= ?e326 ?e347))
+(flet ($e775 (<= ?e414 ?e20))
+(flet ($e776 (distinct ?e274 ?e222))
+(flet ($e777 (= ?e422 ?e430))
+(flet ($e778 (< ?e25 ?e219))
+(flet ($e779 (p0 ?e300 ?e268))
+(flet ($e780 (p0 ?e302 ?e257))
+(flet ($e781 (> ?e230 ?e414))
+(flet ($e782 (< ?e242 ?e261))
+(flet ($e783 (= ?e419 ?e335))
+(flet ($e784 (< ?e9 ?e340))
+(flet ($e785 (< ?e4 ?e379))
+(flet ($e786 (>= ?e257 ?e433))
+(flet ($e787 (< ?e277 ?e22))
+(flet ($e788 (< ?e403 ?e420))
+(flet ($e789 (p0 ?e10 ?e368))
+(flet ($e790 (distinct ?e267 ?e436))
+(flet ($e791 (>= ?e222 ?e409))
+(flet ($e792 (distinct ?e257 ?e401))
+(flet ($e793 (< ?e370 ?e366))
+(flet ($e794 (distinct ?e345 ?e244))
+(flet ($e795 (> ?e266 ?e221))
+(flet ($e796 (p0 ?e349 ?e434))
+(flet ($e797 (= ?e417 ?e299))
+(flet ($e798 (>= ?e371 ?e30))
+(flet ($e799 (p0 ?e402 ?e411))
+(flet ($e800 (> v0 ?e428))
+(flet ($e801 (distinct ?e303 ?e424))
+(flet ($e802 (< ?e288 ?e418))
+(flet ($e803 (> ?e29 ?e236))
+(flet ($e804 (<= ?e378 ?e38))
+(flet ($e805 (<= ?e336 ?e432))
+(flet ($e806 (> ?e226 ?e255))
+(flet ($e807 (p0 ?e229 ?e28))
+(flet ($e808 (distinct ?e404 ?e297))
+(flet ($e809 (p0 ?e330 ?e26))
+(flet ($e810 (<= ?e39 ?e332))
+(flet ($e811 (p0 ?e280 ?e394))
+(flet ($e812 (>= ?e230 ?e8))
+(flet ($e813 (distinct ?e297 ?e226))
+(flet ($e814 (< ?e432 ?e321))
+(flet ($e815 (< ?e259 ?e231))
+(flet ($e816 (= ?e428 ?e246))
+(flet ($e817 (p0 ?e380 ?e327))
+(flet ($e818 (> ?e375 ?e262))
+(flet ($e819 (> ?e364 ?e47))
+(flet ($e820 (<= ?e398 ?e305))
+(flet ($e821 (distinct ?e412 ?e299))
+(flet ($e822 (p0 ?e365 ?e320))
+(flet ($e823 (= ?e336 ?e380))
+(flet ($e824 (distinct ?e233 ?e350))
+(flet ($e825 (< ?e302 ?e10))
+(flet ($e826 (distinct ?e46 ?e385))
+(flet ($e827 (p0 ?e265 ?e215))
+(flet ($e828 (= ?e272 ?e28))
+(flet ($e829 (>= ?e7 ?e294))
+(flet ($e830 (p0 ?e35 ?e397))
+(flet ($e831 (< ?e419 ?e408))
+(flet ($e832 (< ?e369 ?e23))
+(flet ($e833 (>= ?e336 ?e419))
+(flet ($e834 (< ?e243 ?e303))
+(flet ($e835 (<= ?e254 ?e332))
+(flet ($e836 (p0 ?e20 ?e419))
+(flet ($e837 (>= ?e253 ?e222))
+(flet ($e838 (< ?e318 ?e291))
+(flet ($e839 (> ?e306 ?e235))
+(flet ($e840 (= ?e351 ?e424))
+(flet ($e841 (>= ?e286 ?e331))
+(flet ($e842 (distinct ?e437 ?e231))
+(flet ($e843 (= ?e439 ?e421))
+(flet ($e844 (p0 ?e339 ?e346))
+(flet ($e845 (< ?e396 ?e305))
+(flet ($e846 (p0 ?e212 ?e407))
+(flet ($e847 (< ?e326 ?e407))
+(flet ($e848 (p0 ?e26 ?e370))
+(flet ($e849 (p0 ?e354 ?e337))
+(flet ($e850 (= ?e329 ?e259))
+(flet ($e851 (< ?e350 ?e307))
+(flet ($e852 (<= ?e39 ?e228))
+(flet ($e853 (< ?e418 ?e323))
+(flet ($e854 (p0 ?e416 ?e280))
+(flet ($e855 (= ?e301 ?e288))
+(flet ($e856 (>= ?e388 ?e397))
+(flet ($e857 (<= ?e416 ?e322))
+(flet ($e858 (p0 ?e298 ?e329))
+(flet ($e859 (distinct ?e352 ?e371))
+(flet ($e860 (< ?e303 ?e218))
+(flet ($e861 (distinct ?e232 ?e311))
+(flet ($e862 (distinct ?e13 ?e224))
+(flet ($e863 (distinct ?e407 ?e295))
+(flet ($e864 (< ?e344 ?e254))
+(flet ($e865 (p0 ?e227 ?e35))
+(flet ($e866 (<= ?e320 ?e4))
+(flet ($e867 (> ?e397 ?e378))
+(flet ($e868 (>= ?e353 ?e403))
+(flet ($e869 (= ?e269 ?e16))
+(flet ($e870 (p0 ?e402 ?e381))
+(flet ($e871 (> ?e244 ?e333))
+(flet ($e872 (= ?e271 ?e375))
+(flet ($e873 (= ?e377 ?e313))
+(flet ($e874 (> ?e413 ?e47))
+(flet ($e875 (> ?e304 ?e325))
+(flet ($e876 (>= ?e238 ?e439))
+(flet ($e877 (< ?e219 ?e242))
+(flet ($e878 (< ?e229 ?e414))
+(flet ($e879 (>= ?e241 ?e297))
+(flet ($e880 (distinct ?e259 ?e434))
+(flet ($e881 (p0 ?e339 ?e270))
+(flet ($e882 (p0 ?e365 ?e317))
+(flet ($e883 (distinct v0 ?e341))
+(flet ($e884 (>= ?e283 ?e351))
+(flet ($e885 (= ?e235 ?e310))
+(flet ($e886 (p0 ?e402 ?e288))
+(flet ($e887 (<= ?e291 ?e226))
+(flet ($e888 (> ?e410 ?e345))
+(flet ($e889 (= ?e409 ?e415))
+(flet ($e890 (= ?e312 ?e430))
+(flet ($e891 (>= ?e34 ?e222))
+(flet ($e892 (distinct ?e24 ?e41))
+(flet ($e893 (p0 ?e260 ?e246))
+(flet ($e894 (p0 ?e439 ?e293))
+(flet ($e895 (>= ?e429 ?e411))
+(flet ($e896 (>= ?e283 ?e286))
+(flet ($e897 (distinct ?e297 ?e215))
+(flet ($e898 (< ?e328 ?e6))
+(flet ($e899 (<= ?e28 ?e290))
+(flet ($e900 (<= ?e380 ?e420))
+(flet ($e901 (distinct ?e255 ?e35))
+(flet ($e902 (>= ?e415 ?e38))
+(flet ($e903 (> ?e46 ?e275))
+(flet ($e904 (p0 ?e297 ?e296))
+(flet ($e905 (p0 ?e432 ?e243))
+(flet ($e906 (> ?e32 ?e404))
+(flet ($e907 (< ?e278 ?e379))
+(flet ($e908 (<= ?e270 ?e346))
+(flet ($e909 (>= ?e273 ?e14))
+(flet ($e910 (<= ?e23 ?e350))
+(flet ($e911 (< ?e214 ?e401))
+(flet ($e912 (distinct ?e30 ?e335))
+(flet ($e913 (= ?e253 ?e230))
+(flet ($e914 (> ?e329 ?e411))
+(flet ($e915 (= ?e265 ?e42))
+(flet ($e916 (distinct ?e344 ?e262))
+(flet ($e917 (> ?e262 ?e281))
+(flet ($e918 (<= ?e437 ?e12))
+(flet ($e919 (p0 ?e239 ?e335))
+(flet ($e920 (p0 ?e363 ?e278))
+(flet ($e921 (< ?e418 ?e36))
+(flet ($e922 (distinct ?e395 ?e297))
+(flet ($e923 (> ?e27 ?e367))
+(flet ($e924 (>= ?e229 ?e243))
+(flet ($e925 (= ?e388 ?e314))
+(flet ($e926 (p0 ?e320 ?e354))
+(flet ($e927 (= ?e326 ?e325))
+(flet ($e928 (<= ?e409 ?e222))
+(flet ($e929 (= ?e274 ?e213))
+(flet ($e930 (= ?e333 ?e233))
+(flet ($e931 (= ?e373 ?e425))
+(flet ($e932 (<= ?e249 ?e20))
+(flet ($e933 (<= ?e313 ?e429))
+(flet ($e934 (> ?e420 ?e258))
+(flet ($e935 (< ?e243 ?e366))
+(flet ($e936 (> ?e307 ?e301))
+(flet ($e937 (>= ?e316 ?e350))
+(flet ($e938 (= ?e214 ?e382))
+(flet ($e939 (<= ?e299 ?e288))
+(flet ($e940 (= ?e264 ?e223))
+(flet ($e941 (distinct ?e263 ?e308))
+(flet ($e942 (> ?e375 ?e276))
+(flet ($e943 (<= ?e411 ?e294))
+(flet ($e944 (distinct ?e309 ?e286))
+(flet ($e945 (>= ?e47 ?e364))
+(flet ($e946 (>= ?e428 ?e288))
+(flet ($e947 (< ?e329 ?e32))
+(flet ($e948 (< ?e368 ?e223))
+(flet ($e949 (> ?e270 ?e384))
+(flet ($e950 (<= ?e267 ?e304))
+(flet ($e951 (< ?e339 ?e352))
+(flet ($e952 (> ?e272 ?e294))
+(flet ($e953 (< ?e291 ?e315))
+(flet ($e954 (p0 ?e265 ?e282))
+(flet ($e955 (> ?e427 ?e333))
+(flet ($e956 (= ?e319 ?e323))
+(flet ($e957 (>= ?e342 ?e222))
+(flet ($e958 (<= ?e409 ?e222))
+(flet ($e959 (p0 ?e398 ?e362))
+(flet ($e960 (<= ?e271 ?e331))
+(flet ($e961 (= ?e361 ?e273))
+(flet ($e962 (> ?e249 ?e34))
+(flet ($e963 (distinct ?e27 ?e30))
+(flet ($e964 (> ?e435 ?e337))
+(flet ($e965 (>= ?e21 ?e301))
+(flet ($e966 (p0 ?e246 ?e342))
+(flet ($e967 (< v0 ?e46))
+(flet ($e968 (p0 ?e34 ?e363))
+(flet ($e969 (< ?e368 ?e367))
+(flet ($e970 (< ?e225 ?e248))
+(flet ($e971 (> ?e431 ?e37))
+(flet ($e972 (> ?e377 ?e371))
+(flet ($e973 (> ?e391 ?e16))
+(flet ($e974 (<= ?e47 ?e28))
+(flet ($e975 (>= ?e30 ?e226))
+(flet ($e976 (distinct ?e246 ?e366))
+(flet ($e977 (= ?e267 ?e318))
+(flet ($e978 (>= ?e332 ?e363))
+(flet ($e979 (p0 ?e264 ?e28))
+(flet ($e980 (> ?e341 ?e380))
+(flet ($e981 (>= ?e265 ?e225))
+(flet ($e982 (distinct ?e292 ?e255))
+(flet ($e983 (p0 ?e274 ?e35))
+(flet ($e984 (< ?e364 ?e343))
+(flet ($e985 (> ?e307 ?e431))
+(flet ($e986 (distinct ?e391 ?e410))
+(flet ($e987 (= ?e409 ?e274))
+(flet ($e988 (distinct ?e407 ?e258))
+(flet ($e989 (>= ?e432 ?e335))
+(flet ($e990 (< v0 ?e9))
+(flet ($e991 (distinct ?e350 ?e397))
+(flet ($e992 (< ?e424 ?e221))
+(flet ($e993 (> ?e290 ?e321))
+(flet ($e994 (> ?e400 ?e341))
+(flet ($e995 (< ?e391 ?e426))
+(flet ($e996 (< ?e336 ?e219))
+(flet ($e997 (>= ?e283 ?e400))
+(flet ($e998 (= ?e13 ?e350))
+(flet ($e999 (p0 ?e317 ?e359))
+(flet ($e1000 (< ?e336 ?e390))
+(flet ($e1001 (= ?e414 ?e47))
+(flet ($e1002 (< ?e39 ?e422))
+(flet ($e1003 (distinct ?e375 ?e402))
+(flet ($e1004 (>= ?e380 ?e280))
+(flet ($e1005 (= ?e259 ?e374))
+(flet ($e1006 (>= v0 ?e262))
+(flet ($e1007 (p0 ?e30 ?e22))
+(flet ($e1008 (<= ?e18 ?e269))
+(flet ($e1009 (p0 ?e255 ?e214))
+(flet ($e1010 (>= ?e393 ?e37))
+(flet ($e1011 (> ?e374 ?e386))
+(flet ($e1012 (<= ?e7 ?e312))
+(flet ($e1013 (distinct ?e355 ?e423))
+(flet ($e1014 (= ?e12 ?e334))
+(flet ($e1015 (distinct ?e427 ?e277))
+(flet ($e1016 (distinct ?e288 ?e414))
+(flet ($e1017 (>= ?e407 ?e361))
+(flet ($e1018 (= ?e382 ?e328))
+(flet ($e1019 (p0 ?e17 ?e230))
+(flet ($e1020 (p0 ?e298 ?e249))
+(flet ($e1021 (< ?e261 ?e360))
+(flet ($e1022 (> ?e293 ?e25))
+(flet ($e1023 (>= ?e332 ?e342))
+(flet ($e1024 (> ?e317 ?e39))
+(flet ($e1025 (< ?e17 ?e405))
+(flet ($e1026 (>= ?e245 ?e330))
+(flet ($e1027 (< ?e224 ?e424))
+(flet ($e1028 (>= ?e33 ?e412))
+(flet ($e1029 (p0 ?e31 ?e18))
+(flet ($e1030 (distinct ?e251 ?e5))
+(flet ($e1031 (< ?e407 ?e269))
+(flet ($e1032 (<= ?e215 ?e34))
+(flet ($e1033 (p0 ?e303 ?e417))
+(flet ($e1034 (>= ?e328 ?e353))
+(flet ($e1035 (= ?e230 ?e365))
+(flet ($e1036 (>= ?e253 ?e340))
+(flet ($e1037 (= ?e324 ?e363))
+(flet ($e1038 (= ?e220 ?e245))
+(flet ($e1039 (= ?e436 ?e397))
+(flet ($e1040 (= ?e385 ?e303))
+(flet ($e1041 (>= ?e245 ?e352))
+(flet ($e1042 (<= ?e390 ?e307))
+(flet ($e1043 (< ?e245 ?e248))
+(flet ($e1044 (p0 ?e252 ?e290))
+(flet ($e1045 (>= ?e392 ?e239))
+(flet ($e1046 (p0 ?e338 ?e416))
+(flet ($e1047 (> ?e269 ?e278))
+(flet ($e1048 (>= ?e263 ?e403))
+(flet ($e1049 (> ?e428 ?e331))
+(flet ($e1050 (= ?e24 ?e236))
+(flet ($e1051 (> ?e410 ?e391))
+(flet ($e1052 (distinct ?e46 ?e429))
+(flet ($e1053 (p0 ?e315 ?e421))
+(flet ($e1054 (< ?e282 ?e418))
+(flet ($e1055 (>= ?e433 ?e387))
+(flet ($e1056 (distinct ?e212 ?e5))
+(flet ($e1057 (<= ?e348 ?e431))
+(flet ($e1058 (> ?e258 ?e32))
+(flet ($e1059 (distinct ?e303 ?e347))
+(flet ($e1060 (= ?e348 ?e395))
+(flet ($e1061 (>= ?e26 ?e378))
+(flet ($e1062 (>= ?e309 ?e279))
+(flet ($e1063 (= ?e429 ?e403))
+(flet ($e1064 (< ?e341 ?e227))
+(flet ($e1065 (> ?e336 ?e394))
+(flet ($e1066 (>= ?e395 ?e275))
+(flet ($e1067 (p0 ?e240 ?e287))
+(flet ($e1068 (= ?e217 ?e313))
+(flet ($e1069 (<= ?e233 ?e31))
+(flet ($e1070 (p0 ?e283 ?e23))
+(flet ($e1071 (distinct ?e417 ?e15))
+(flet ($e1072 (> ?e280 ?e27))
+(flet ($e1073 (< ?e31 ?e391))
+(flet ($e1074 (> ?e275 ?e278))
+(flet ($e1075 (< ?e13 ?e27))
+(flet ($e1076 (> ?e365 ?e405))
+(flet ($e1077 (p0 ?e354 ?e290))
+(flet ($e1078 (distinct ?e37 ?e287))
+(flet ($e1079 (<= ?e221 ?e241))
+(flet ($e1080 (p0 ?e294 ?e340))
+(flet ($e1081 (>= ?e426 ?e247))
+(flet ($e1082 (> ?e18 ?e32))
+(flet ($e1083 (p0 ?e325 ?e402))
+(flet ($e1084 (p0 ?e298 ?e220))
+(flet ($e1085 (< ?e6 ?e365))
+(flet ($e1086 (<= ?e348 ?e414))
+(flet ($e1087 (<= ?e272 ?e327))
+(flet ($e1088 (> ?e411 ?e225))
+(flet ($e1089 (p0 ?e263 ?e290))
+(flet ($e1090 (< ?e308 ?e343))
+(flet ($e1091 (distinct ?e330 ?e226))
+(flet ($e1092 (= ?e232 ?e367))
+(flet ($e1093 (< ?e320 ?e368))
+(flet ($e1094 (> ?e368 ?e413))
+(flet ($e1095 (<= ?e402 ?e22))
+(flet ($e1096 (>= ?e414 ?e256))
+(flet ($e1097 (= ?e297 ?e377))
+(flet ($e1098 (> ?e35 ?e401))
+(flet ($e1099 (p0 ?e299 ?e432))
+(flet ($e1100 (distinct ?e267 ?e41))
+(flet ($e1101 (<= ?e33 ?e222))
+(flet ($e1102 (< ?e413 ?e280))
+(flet ($e1103 (>= ?e285 ?e38))
+(flet ($e1104 (<= ?e257 ?e390))
+(flet ($e1105 (distinct ?e242 ?e317))
+(flet ($e1106 (<= ?e43 ?e49))
+(flet ($e1107 (distinct ?e354 ?e25))
+(flet ($e1108 (>= ?e391 ?e299))
+(flet ($e1109 (distinct ?e265 ?e375))
+(flet ($e1110 (distinct ?e276 ?e399))
+(flet ($e1111 (= ?e342 ?e278))
+(flet ($e1112 (>= ?e356 ?e283))
+(flet ($e1113 (= ?e387 ?e374))
+(flet ($e1114 (>= ?e255 ?e226))
+(flet ($e1115 (>= ?e436 ?e215))
+(flet ($e1116 (>= ?e28 ?e292))
+(flet ($e1117 (p0 ?e265 ?e315))
+(flet ($e1118 (<= ?e336 ?e332))
+(flet ($e1119 (p0 ?e230 ?e391))
+(flet ($e1120 (> ?e220 ?e7))
+(flet ($e1121 (<= ?e373 ?e427))
+(flet ($e1122 (< v0 ?e317))
+(flet ($e1123 (distinct ?e255 ?e275))
+(flet ($e1124 (<= ?e408 ?e419))
+(flet ($e1125 (distinct ?e36 ?e394))
+(flet ($e1126 (< ?e407 ?e49))
+(flet ($e1127 (>= ?e224 ?e277))
+(flet ($e1128 (< ?e314 ?e235))
+(flet ($e1129 (> ?e41 ?e263))
+(flet ($e1130 (distinct ?e361 ?e14))
+(flet ($e1131 (> ?e42 ?e228))
+(flet ($e1132 (= ?e26 ?e6))
+(flet ($e1133 (= ?e231 ?e323))
+(flet ($e1134 (> ?e37 ?e282))
+(flet ($e1135 (> ?e406 ?e39))
+(flet ($e1136 (<= ?e380 ?e283))
+(flet ($e1137 (> ?e351 ?e325))
+(flet ($e1138 (p0 ?e31 ?e371))
+(flet ($e1139 (= ?e380 ?e388))
+(flet ($e1140 (= ?e356 ?e321))
+(flet ($e1141 (< ?e411 ?e270))
+(flet ($e1142 (< ?e343 ?e252))
+(flet ($e1143 (= ?e15 ?e273))
+(flet ($e1144 (= ?e392 ?e49))
+(flet ($e1145 (distinct ?e435 ?e365))
+(flet ($e1146 (= ?e297 ?e352))
+(flet ($e1147 (= ?e372 ?e15))
+(flet ($e1148 (<= ?e284 ?e241))
+(flet ($e1149 (<= ?e14 ?e305))
+(flet ($e1150 (>= ?e23 ?e365))
+(flet ($e1151 (p0 ?e420 ?e226))
+(flet ($e1152 (>= ?e40 ?e283))
+(flet ($e1153 (<= ?e225 ?e236))
+(flet ($e1154 (distinct ?e213 ?e239))
+(flet ($e1155 (= ?e289 ?e333))
+(flet ($e1156 (= ?e431 ?e49))
+(flet ($e1157 (> ?e346 ?e412))
+(flet ($e1158 (> ?e437 ?e49))
+(flet ($e1159 (>= ?e412 ?e318))
+(flet ($e1160 (< ?e317 ?e11))
+(flet ($e1161 (> ?e262 ?e24))
+(flet ($e1162 (>= ?e260 ?e317))
+(flet ($e1163 (>= ?e20 ?e410))
+(flet ($e1164 (= ?e397 ?e429))
+(flet ($e1165 (p0 ?e277 ?e436))
+(flet ($e1166 (distinct ?e425 ?e237))
+(flet ($e1167 (< ?e387 ?e45))
+(flet ($e1168 (>= v0 ?e437))
+(flet ($e1169 (= ?e355 ?e326))
+(flet ($e1170 (p0 ?e431 ?e10))
+(flet ($e1171 (distinct ?e328 ?e293))
+(flet ($e1172 (>= ?e325 ?e307))
+(flet ($e1173 (distinct ?e41 ?e277))
+(flet ($e1174 (= ?e302 ?e276))
+(flet ($e1175 (< ?e270 ?e356))
+(flet ($e1176 (> ?e219 ?e273))
+(flet ($e1177 (= ?e406 ?e214))
+(flet ($e1178 (<= ?e12 ?e17))
+(flet ($e1179 (= ?e277 ?e282))
+(flet ($e1180 (= ?e241 ?e409))
+(flet ($e1181 (= ?e325 ?e356))
+(flet ($e1182 (< ?e341 ?e385))
+(flet ($e1183 (< ?e225 ?e439))
+(flet ($e1184 (distinct ?e298 ?e293))
+(flet ($e1185 (> ?e430 ?e271))
+(flet ($e1186 (> ?e336 ?e47))
+(flet ($e1187 (<= ?e225 ?e357))
+(flet ($e1188 (< ?e227 ?e396))
+(flet ($e1189 (>= ?e412 ?e41))
+(flet ($e1190 (>= ?e277 ?e317))
+(flet ($e1191 (<= ?e25 ?e22))
+(flet ($e1192 (> ?e287 ?e43))
+(flet ($e1193 (= ?e31 ?e340))
+(flet ($e1194 (< ?e281 ?e228))
+(flet ($e1195 (>= ?e32 ?e21))
+(flet ($e1196 (distinct ?e306 ?e264))
+(flet ($e1197 (= ?e352 ?e272))
+(flet ($e1198 (< ?e298 ?e286))
+(flet ($e1199 (= ?e383 ?e380))
+(flet ($e1200 (> ?e335 ?e284))
+(flet ($e1201 (> ?e217 ?e319))
+(flet ($e1202 (< ?e241 ?e323))
+(flet ($e1203 (= ?e350 ?e250))
+(flet ($e1204 (< ?e362 ?e267))
+(flet ($e1205 (>= ?e240 ?e368))
+(flet ($e1206 (< ?e249 ?e324))
+(flet ($e1207 (distinct ?e317 ?e415))
+(flet ($e1208 (= ?e358 ?e214))
+(flet ($e1209 (= ?e434 ?e243))
+(flet ($e1210 (distinct ?e273 ?e306))
+(flet ($e1211 (>= ?e376 ?e36))
+(flet ($e1212 (< ?e235 ?e31))
+(flet ($e1213 (<= ?e48 ?e29))
+(flet ($e1214 (> ?e332 ?e407))
+(flet ($e1215 (<= ?e299 ?e317))
+(flet ($e1216 (> ?e303 ?e269))
+(flet ($e1217 (< ?e260 ?e375))
+(flet ($e1218 (<= ?e289 ?e262))
+(flet ($e1219 (<= ?e245 ?e330))
+(flet ($e1220 (= ?e271 ?e328))
+(flet ($e1221 (p0 ?e375 ?e413))
+(flet ($e1222 (>= ?e244 ?e297))
+(flet ($e1223 (> ?e295 ?e355))
+(flet ($e1224 (< ?e45 ?e36))
+(flet ($e1225 (< ?e378 ?e355))
+(flet ($e1226 (<= ?e308 ?e10))
+(flet ($e1227 (p0 ?e428 ?e275))
+(flet ($e1228 (distinct ?e375 ?e341))
+(flet ($e1229 (< ?e428 ?e249))
+(flet ($e1230 (p0 ?e336 ?e254))
+(flet ($e1231 (>= ?e334 ?e305))
+(flet ($e1232 (> ?e370 ?e430))
+(flet ($e1233 (> ?e226 ?e295))
+(flet ($e1234 (> ?e241 ?e431))
+(flet ($e1235 (>= ?e322 ?e341))
+(flet ($e1236 (distinct ?e220 ?e291))
+(flet ($e1237 (<= ?e342 ?e27))
+(flet ($e1238 (<= ?e417 ?e236))
+(flet ($e1239 (> ?e334 ?e362))
+(flet ($e1240 (> ?e397 ?e46))
+(flet ($e1241 (< ?e224 ?e216))
+(flet ($e1242 (>= ?e362 ?e253))
+(flet ($e1243 (p0 ?e317 ?e362))
+(flet ($e1244 (< ?e258 ?e292))
+(flet ($e1245 (p0 ?e421 ?e418))
+(flet ($e1246 (> ?e33 ?e381))
+(flet ($e1247 (< ?e399 ?e304))
+(flet ($e1248 (<= ?e395 ?e378))
+(flet ($e1249 (> ?e229 ?e390))
+(flet ($e1250 (<= ?e365 ?e335))
+(flet ($e1251 (p0 ?e420 ?e348))
+(flet ($e1252 (> ?e424 ?e13))
+(flet ($e1253 (= ?e275 ?e223))
+(flet ($e1254 (p0 ?e396 ?e352))
+(flet ($e1255 (>= ?e292 ?e438))
+(flet ($e1256 (> ?e222 ?e365))
+(flet ($e1257 (>= ?e248 ?e433))
+(flet ($e1258 (= ?e390 ?e239))
+(flet ($e1259 (p0 ?e349 ?e369))
+(flet ($e1260 (>= ?e368 ?e306))
+(flet ($e1261 (= ?e11 ?e298))
+(flet ($e1262 (< ?e395 ?e332))
+(flet ($e1263 (p0 ?e223 ?e268))
+(flet ($e1264 (distinct ?e254 ?e339))
+(flet ($e1265 (p0 ?e306 ?e246))
+(flet ($e1266 (distinct ?e317 ?e241))
+(flet ($e1267 (= ?e424 ?e256))
+(flet ($e1268 (distinct ?e40 ?e265))
+(flet ($e1269 (= ?e232 ?e284))
+(flet ($e1270 (>= ?e402 ?e400))
+(flet ($e1271 (distinct ?e318 ?e216))
+(flet ($e1272 (<= ?e267 ?e432))
+(flet ($e1273 (> ?e248 ?e307))
+(flet ($e1274 (<= ?e212 ?e399))
+(flet ($e1275 (< ?e357 ?e344))
+(flet ($e1276 (<= ?e14 ?e425))
+(flet ($e1277 (>= ?e255 ?e351))
+(flet ($e1278 (> ?e358 ?e39))
+(flet ($e1279 (p0 ?e422 ?e9))
+(flet ($e1280 (<= ?e411 ?e48))
+(flet ($e1281 (<= ?e37 ?e334))
+(flet ($e1282 (>= ?e390 ?e269))
+(flet ($e1283 (distinct ?e378 ?e393))
+(flet ($e1284 (< ?e355 ?e244))
+(flet ($e1285 (distinct ?e241 ?e439))
+(flet ($e1286 (p0 ?e291 ?e281))
+(flet ($e1287 (> ?e236 ?e348))
+(flet ($e1288 (<= ?e265 ?e385))
+(flet ($e1289 (distinct ?e333 ?e397))
+(flet ($e1290 (p0 ?e7 ?e417))
+(flet ($e1291 (>= ?e18 ?e13))
+(flet ($e1292 (> ?e21 ?e11))
+(flet ($e1293 (<= ?e367 ?e386))
+(flet ($e1294 (> ?e294 ?e279))
+(flet ($e1295 (= ?e352 ?e219))
+(flet ($e1296 (<= ?e293 ?e44))
+(flet ($e1297 (< ?e291 ?e293))
+(flet ($e1298 (= ?e374 ?e406))
+(flet ($e1299 (p0 ?e278 ?e49))
+(flet ($e1300 (= ?e315 ?e266))
+(flet ($e1301 (<= ?e221 ?e334))
+(flet ($e1302 (>= ?e296 ?e346))
+(flet ($e1303 (> ?e419 ?e436))
+(flet ($e1304 (< ?e377 ?e31))
+(flet ($e1305 (<= ?e24 ?e284))
+(flet ($e1306 (p0 ?e218 ?e378))
+(flet ($e1307 (>= ?e32 ?e33))
+(flet ($e1308 (> ?e326 ?e305))
+(flet ($e1309 (= ?e318 ?e257))
+(flet ($e1310 (< ?e25 ?e437))
+(flet ($e1311 (= ?e271 ?e439))
+(flet ($e1312 (= ?e215 ?e344))
+(flet ($e1313 (<= ?e300 ?e330))
+(flet ($e1314 (= ?e350 ?e255))
+(flet ($e1315 (distinct ?e345 ?e352))
+(flet ($e1316 (< ?e376 ?e289))
+(flet ($e1317 (< ?e436 ?e402))
+(flet ($e1318 (<= ?e303 ?e307))
+(flet ($e1319 (= ?e242 ?e253))
+(flet ($e1320 (p0 ?e48 ?e385))
+(flet ($e1321 (p0 ?e316 ?e363))
+(flet ($e1322 (< ?e373 ?e223))
+(flet ($e1323 (<= ?e304 ?e281))
+(flet ($e1324 (distinct ?e400 ?e393))
+(flet ($e1325 (>= ?e390 ?e36))
+(flet ($e1326 (<= ?e431 ?e39))
+(flet ($e1327 (< ?e41 ?e39))
+(flet ($e1328 (<= ?e272 ?e29))
+(flet ($e1329 (= ?e36 ?e43))
+(flet ($e1330 (<= ?e217 ?e340))
+(flet ($e1331 (= ?e435 ?e366))
+(flet ($e1332 (p0 ?e16 ?e225))
+(flet ($e1333 (p0 ?e224 ?e368))
+(flet ($e1334 (<= ?e348 ?e373))
+(flet ($e1335 (= ?e285 ?e251))
+(flet ($e1336 (distinct ?e237 ?e338))
+(flet ($e1337 (>= ?e14 ?e270))
+(flet ($e1338 (< ?e255 ?e215))
+(flet ($e1339 (<= ?e415 ?e287))
+(flet ($e1340 (distinct ?e370 ?e347))
+(flet ($e1341 (distinct ?e236 ?e18))
+(flet ($e1342 (< ?e334 ?e307))
+(flet ($e1343 (p0 ?e383 ?e233))
+(flet ($e1344 (<= ?e416 ?e272))
+(flet ($e1345 (<= ?e333 ?e235))
+(flet ($e1346 (<= ?e390 ?e254))
+(flet ($e1347 (distinct ?e344 ?e402))
+(flet ($e1348 (= ?e307 ?e293))
+(flet ($e1349 (p0 ?e10 ?e7))
+(flet ($e1350 (= ?e282 ?e303))
+(flet ($e1351 (> ?e218 ?e8))
+(flet ($e1352 (<= ?e416 ?e413))
+(flet ($e1353 (>= ?e230 ?e327))
+(flet ($e1354 (> ?e322 ?e248))
+(flet ($e1355 (p0 ?e297 ?e326))
+(flet ($e1356 (< ?e379 ?e395))
+(flet ($e1357 (>= ?e358 ?e17))
+(flet ($e1358 (< ?e223 ?e33))
+(flet ($e1359 (> ?e332 ?e356))
+(flet ($e1360 (< ?e408 ?e339))
+(flet ($e1361 (= ?e271 ?e214))
+(flet ($e1362 (p0 ?e21 ?e267))
+(flet ($e1363 (distinct ?e239 ?e233))
+(flet ($e1364 (<= ?e416 ?e268))
+(flet ($e1365 (= ?e330 ?e307))
+(flet ($e1366 (>= ?e437 ?e387))
+(flet ($e1367 (<= ?e314 ?e301))
+(flet ($e1368 (< ?e263 ?e44))
+(flet ($e1369 (= ?e299 ?e232))
+(flet ($e1370 (= v0 ?e378))
+(flet ($e1371 (distinct ?e410 ?e373))
+(flet ($e1372 (= ?e34 ?e316))
+(flet ($e1373 (< ?e282 ?e399))
+(flet ($e1374 (p0 ?e248 ?e399))
+(flet ($e1375 (<= ?e379 ?e397))
+(flet ($e1376 (p0 ?e272 ?e26))
+(flet ($e1377 (= ?e218 ?e232))
+(flet ($e1378 (< ?e419 ?e328))
+(flet ($e1379 (distinct ?e220 ?e307))
+(flet ($e1380 (> ?e333 ?e428))
+(flet ($e1381 (distinct ?e327 ?e44))
+(flet ($e1382 (= ?e346 ?e395))
+(flet ($e1383 (<= ?e415 ?e385))
+(flet ($e1384 (> ?e279 ?e290))
+(flet ($e1385 (> ?e265 ?e319))
+(flet ($e1386 (> ?e283 ?e36))
+(flet ($e1387 (<= ?e13 ?e6))
+(flet ($e1388 (<= ?e10 ?e416))
+(flet ($e1389 (distinct ?e415 ?e253))
+(flet ($e1390 (>= ?e45 ?e382))
+(flet ($e1391 (> ?e351 ?e277))
+(flet ($e1392 (>= ?e317 ?e37))
+(flet ($e1393 (> ?e371 ?e212))
+(flet ($e1394 (= ?e213 ?e232))
+(flet ($e1395 (= ?e222 ?e378))
+(flet ($e1396 (p0 ?e29 ?e359))
+(flet ($e1397 (distinct ?e300 ?e41))
+(flet ($e1398 (>= ?e397 ?e299))
+(flet ($e1399 (= ?e424 ?e267))
+(flet ($e1400 (distinct ?e251 ?e380))
+(flet ($e1401 (<= ?e247 ?e245))
+(flet ($e1402 (p0 ?e394 ?e30))
+(flet ($e1403 (<= ?e431 ?e231))
+(flet ($e1404 (>= ?e267 ?e230))
+(flet ($e1405 (>= ?e276 ?e266))
+(flet ($e1406 (<= ?e258 ?e282))
+(flet ($e1407 (<= ?e397 ?e310))
+(flet ($e1408 (= ?e27 ?e420))
+(flet ($e1409 (>= ?e294 ?e432))
+(flet ($e1410 (<= ?e435 ?e333))
+(flet ($e1411 (>= ?e32 ?e40))
+(flet ($e1412 (p0 ?e348 ?e233))
+(flet ($e1413 (> ?e258 ?e409))
+(flet ($e1414 (distinct ?e238 ?e31))
+(flet ($e1415 (distinct ?e218 ?e329))
+(flet ($e1416 (= ?e41 ?e212))
+(flet ($e1417 (< ?e31 ?e404))
+(flet ($e1418 (> ?e338 ?e360))
+(flet ($e1419 (<= ?e215 ?e393))
+(flet ($e1420 (= ?e378 ?e255))
+(flet ($e1421 (> ?e4 ?e273))
+(flet ($e1422 (>= ?e307 ?e226))
+(flet ($e1423 (>= ?e285 ?e436))
+(flet ($e1424 (>= ?e344 ?e249))
+(flet ($e1425 (>= ?e369 ?e212))
+(flet ($e1426 (< ?e264 ?e213))
+(flet ($e1427 (< ?e277 ?e317))
+(flet ($e1428 (p0 ?e24 ?e372))
+(flet ($e1429 (<= ?e290 ?e225))
+(flet ($e1430 (> ?e387 ?e407))
+(flet ($e1431 (p0 ?e263 ?e287))
+(flet ($e1432 (> ?e9 ?e428))
+(flet ($e1433 (> ?e321 ?e241))
+(flet ($e1434 (> ?e423 ?e37))
+(flet ($e1435 (distinct ?e402 ?e419))
+(flet ($e1436 (= ?e389 ?e34))
+(flet ($e1437 (> ?e339 ?e347))
+(flet ($e1438 (= ?e256 ?e232))
+(flet ($e1439 (<= ?e214 ?e225))
+(flet ($e1440 (distinct ?e261 ?e380))
+(flet ($e1441 (distinct ?e360 ?e249))
+(flet ($e1442 (<= ?e382 ?e302))
+(flet ($e1443 (<= ?e414 ?e220))
+(flet ($e1444 (>= ?e226 ?e407))
+(flet ($e1445 (<= ?e429 ?e252))
+(flet ($e1446 (<= ?e366 ?e427))
+(flet ($e1447 (>= ?e18 ?e333))
+(flet ($e1448 (<= ?e43 ?e273))
+(flet ($e1449 (>= ?e253 ?e45))
+(flet ($e1450 (distinct ?e324 ?e315))
+(flet ($e1451 (> ?e27 ?e218))
+(flet ($e1452 (< ?e31 ?e9))
+(flet ($e1453 (> ?e374 ?e299))
+(flet ($e1454 (> ?e409 ?e259))
+(flet ($e1455 (= ?e423 ?e410))
+(flet ($e1456 (distinct ?e270 ?e426))
+(flet ($e1457 (distinct ?e328 ?e31))
+(flet ($e1458 (< ?e426 ?e227))
+(flet ($e1459 (< ?e302 ?e21))
+(flet ($e1460 (p0 ?e352 ?e355))
+(flet ($e1461 (<= ?e430 ?e360))
+(flet ($e1462 (= ?e256 ?e269))
+(flet ($e1463 (<= ?e396 ?e28))
+(flet ($e1464 (> ?e372 ?e231))
+(flet ($e1465 (> ?e283 ?e413))
+(flet ($e1466 (>= ?e17 ?e265))
+(flet ($e1467 (>= ?e45 ?e275))
+(flet ($e1468 (= ?e275 ?e315))
+(flet ($e1469 (= ?e247 ?e430))
+(flet ($e1470 (> ?e240 ?e23))
+(flet ($e1471 (> ?e348 ?e262))
+(flet ($e1472 (p0 ?e274 ?e427))
+(flet ($e1473 (distinct ?e5 ?e292))
+(flet ($e1474 (> ?e35 ?e408))
+(flet ($e1475 (= ?e320 ?e217))
+(flet ($e1476 (> ?e256 ?e368))
+(flet ($e1477 (<= ?e380 ?e318))
+(flet ($e1478 (< ?e434 ?e427))
+(flet ($e1479 (distinct ?e369 ?e358))
+(flet ($e1480 (p0 ?e399 ?e225))
+(flet ($e1481 (p0 ?e340 ?e393))
+(flet ($e1482 (p0 ?e236 ?e264))
+(flet ($e1483 (<= ?e360 ?e14))
+(flet ($e1484 (= ?e327 ?e27))
+(flet ($e1485 (p0 ?e389 ?e258))
+(flet ($e1486 (>= ?e393 ?e384))
+(flet ($e1487 (p0 ?e413 ?e351))
+(flet ($e1488 (> ?e323 ?e387))
+(flet ($e1489 (= ?e4 ?e410))
+(flet ($e1490 (p0 ?e306 ?e44))
+(flet ($e1491 (p0 ?e412 ?e212))
+(flet ($e1492 (p0 ?e401 ?e342))
+(flet ($e1493 (> ?e313 ?e37))
+(flet ($e1494 (> ?e370 ?e329))
+(flet ($e1495 (>= ?e313 ?e316))
+(flet ($e1496 (> ?e217 ?e25))
+(flet ($e1497 (distinct ?e348 ?e6))
+(flet ($e1498 (> ?e355 ?e221))
+(flet ($e1499 (p0 ?e244 ?e396))
+(flet ($e1500 (distinct ?e39 ?e352))
+(flet ($e1501 (>= ?e242 ?e213))
+(flet ($e1502 (>= ?e397 ?e335))
+(flet ($e1503 (<= ?e307 ?e375))
+(flet ($e1504 (< ?e400 ?e261))
+(flet ($e1505 (>= ?e401 ?e281))
+(flet ($e1506 (< ?e29 ?e383))
+(flet ($e1507 (> ?e282 ?e344))
+(flet ($e1508 (= ?e346 ?e226))
+(flet ($e1509 (< ?e406 ?e12))
+(flet ($e1510 (distinct ?e381 ?e366))
+(flet ($e1511 (distinct ?e334 ?e310))
+(flet ($e1512 (<= ?e320 ?e298))
+(flet ($e1513 (p0 ?e10 ?e213))
+(flet ($e1514 (distinct ?e331 ?e19))
+(flet ($e1515 (p0 ?e370 ?e343))
+(flet ($e1516 (<= ?e411 ?e414))
+(flet ($e1517 (>= ?e6 ?e44))
+(flet ($e1518 (p0 ?e241 ?e371))
+(flet ($e1519 (p0 ?e298 ?e352))
+(flet ($e1520 (p0 ?e354 ?e348))
+(flet ($e1521 (= ?e368 ?e370))
+(flet ($e1522 (= ?e41 ?e372))
+(flet ($e1523 (<= ?e270 ?e402))
+(flet ($e1524 (= ?e337 ?e23))
+(flet ($e1525 (<= ?e257 ?e391))
+(flet ($e1526 (= ?e48 ?e414))
+(flet ($e1527 (= ?e8 ?e253))
+(flet ($e1528 (= ?e244 ?e308))
+(flet ($e1529 (<= ?e269 ?e349))
+(flet ($e1530 (distinct ?e11 ?e411))
+(flet ($e1531 (= ?e389 ?e403))
+(flet ($e1532 (distinct ?e228 ?e254))
+(flet ($e1533 (<= ?e251 ?e25))
+(flet ($e1534 (> ?e325 ?e370))
+(flet ($e1535 (>= ?e9 ?e28))
+(flet ($e1536 (> ?e218 ?e344))
+(flet ($e1537 (> ?e289 ?e403))
+(flet ($e1538 (>= ?e309 ?e46))
+(flet ($e1539 (= ?e225 ?e359))
+(flet ($e1540 (p0 ?e324 ?e260))
+(flet ($e1541 (p0 ?e386 ?e391))
+(flet ($e1542 (<= ?e14 ?e267))
+(flet ($e1543 (distinct ?e12 ?e244))
+(flet ($e1544 (>= ?e324 ?e402))
+(flet ($e1545 (< ?e362 ?e344))
+(flet ($e1546 (>= ?e310 ?e335))
+(flet ($e1547 (> ?e342 ?e313))
+(flet ($e1548 (>= ?e285 ?e329))
+(flet ($e1549 (<= ?e248 ?e395))
+(flet ($e1550 (> ?e406 ?e239))
+(flet ($e1551 (< ?e289 ?e404))
+(flet ($e1552 (<= ?e336 ?e44))
+(flet ($e1553 (> v0 ?e220))
+(flet ($e1554 (distinct ?e243 ?e359))
+(flet ($e1555 (p0 ?e400 ?e253))
+(flet ($e1556 (>= ?e22 ?e401))
+(flet ($e1557 (distinct ?e222 ?e301))
+(flet ($e1558 (< ?e316 ?e236))
+(flet ($e1559 (p0 ?e406 ?e432))
+(flet ($e1560 (< ?e364 ?e412))
+(flet ($e1561 (<= ?e434 ?e247))
+(flet ($e1562 (distinct ?e234 ?e333))
+(flet ($e1563 (implies $e1334 $e843))
+(flet ($e1564 (implies $e1430 $e1541))
+(flet ($e1565 (not $e663))
+(flet ($e1566 (implies $e523 $e1057))
+(flet ($e1567 (not $e593))
+(flet ($e1568 (and $e1274 $e1406))
+(flet ($e1569 (and $e891 $e1041))
+(flet ($e1570 (iff $e1512 $e713))
+(flet ($e1571 (xor $e1324 $e1193))
+(flet ($e1572 (if_then_else $e557 $e108 $e624))
+(flet ($e1573 (or $e88 $e166))
+(flet ($e1574 (if_then_else $e1008 $e1221 $e1452))
+(flet ($e1575 (if_then_else $e1376 $e729 $e1465))
+(flet ($e1576 (implies $e693 $e1366))
+(flet ($e1577 (if_then_else $e1344 $e1147 $e1486))
+(flet ($e1578 (if_then_else $e155 $e923 $e1019))
+(flet ($e1579 (xor $e909 $e653))
+(flet ($e1580 (iff $e1502 $e1382))
+(flet ($e1581 (iff $e731 $e531))
+(flet ($e1582 (not $e496))
+(flet ($e1583 (or $e1097 $e61))
+(flet ($e1584 (iff $e196 $e940))
+(flet ($e1585 (xor $e461 $e786))
+(flet ($e1586 (not $e1204))
+(flet ($e1587 (implies $e699 $e690))
+(flet ($e1588 (and $e502 $e1358))
+(flet ($e1589 (implies $e163 $e1095))
+(flet ($e1590 (if_then_else $e485 $e1555 $e640))
+(flet ($e1591 (implies $e1545 $e750))
+(flet ($e1592 (if_then_else $e1418 $e1296 $e988))
+(flet ($e1593 (not $e847))
+(flet ($e1594 (implies $e140 $e1021))
+(flet ($e1595 (xor $e1373 $e1306))
+(flet ($e1596 (or $e747 $e1516))
+(flet ($e1597 (xor $e107 $e1577))
+(flet ($e1598 (if_then_else $e697 $e589 $e1173))
+(flet ($e1599 (if_then_else $e536 $e1241 $e1138))
+(flet ($e1600 (iff $e452 $e627))
+(flet ($e1601 (not $e569))
+(flet ($e1602 (and $e893 $e815))
+(flet ($e1603 (xor $e1146 $e895))
+(flet ($e1604 (and $e852 $e1135))
+(flet ($e1605 (and $e1449 $e761))
+(flet ($e1606 (and $e479 $e580))
+(flet ($e1607 (xor $e851 $e127))
+(flet ($e1608 (and $e737 $e855))
+(flet ($e1609 (not $e1533))
+(flet ($e1610 (xor $e1379 $e543))
+(flet ($e1611 (or $e517 $e1422))
+(flet ($e1612 (implies $e1246 $e67))
+(flet ($e1613 (not $e1378))
+(flet ($e1614 (if_then_else $e1556 $e1308 $e1022))
+(flet ($e1615 (implies $e782 $e1170))
+(flet ($e1616 (if_then_else $e885 $e1047 $e642))
+(flet ($e1617 (xor $e1434 $e955))
+(flet ($e1618 (implies $e1461 $e1155))
+(flet ($e1619 (iff $e1415 $e656))
+(flet ($e1620 (xor $e480 $e198))
+(flet ($e1621 (and $e182 $e802))
+(flet ($e1622 (not $e562))
+(flet ($e1623 (not $e1093))
+(flet ($e1624 (if_then_else $e1196 $e1478 $e621))
+(flet ($e1625 (if_then_else $e1464 $e1623 $e1518))
+(flet ($e1626 (and $e1017 $e1320))
+(flet ($e1627 (iff $e1328 $e458))
+(flet ($e1628 (xor $e712 $e1293))
+(flet ($e1629 (not $e612))
+(flet ($e1630 (if_then_else $e767 $e472 $e494))
+(flet ($e1631 (iff $e841 $e868))
+(flet ($e1632 (xor $e714 $e839))
+(flet ($e1633 (not $e764))
+(flet ($e1634 (iff $e1423 $e760))
+(flet ($e1635 (if_then_else $e1408 $e1194 $e644))
+(flet ($e1636 (or $e703 $e1542))
+(flet ($e1637 (xor $e504 $e1055))
+(flet ($e1638 (xor $e947 $e174))
+(flet ($e1639 (implies $e1181 $e1399))
+(flet ($e1640 (if_then_else $e1053 $e1132 $e1548))
+(flet ($e1641 (or $e1578 $e749))
+(flet ($e1642 (iff $e1307 $e202))
+(flet ($e1643 (iff $e1475 $e1267))
+(flet ($e1644 (if_then_else $e766 $e692 $e1174))
+(flet ($e1645 (and $e1351 $e1450))
+(flet ($e1646 (implies $e1091 $e1231))
+(flet ($e1647 (iff $e1436 $e1554))
+(flet ($e1648 (iff $e1122 $e611))
+(flet ($e1649 (if_then_else $e1285 $e728 $e1330))
+(flet ($e1650 (not $e151))
+(flet ($e1651 (xor $e456 $e443))
+(flet ($e1652 (xor $e492 $e1574))
+(flet ($e1653 (or $e679 $e790))
+(flet ($e1654 (iff $e1050 $e628))
+(flet ($e1655 (implies $e967 $e1426))
+(flet ($e1656 (implies $e507 $e1367))
+(flet ($e1657 (xor $e591 $e969))
+(flet ($e1658 (and $e1142 $e187))
+(flet ($e1659 (not $e109))
+(flet ($e1660 (or $e1509 $e604))
+(flet ($e1661 (if_then_else $e570 $e1365 $e1006))
+(flet ($e1662 (iff $e1232 $e1263))
+(flet ($e1663 (iff $e937 $e104))
+(flet ($e1664 (and $e809 $e1002))
+(flet ($e1665 (not $e579))
+(flet ($e1666 (if_then_else $e121 $e553 $e1405))
+(flet ($e1667 (if_then_else $e918 $e865 $e451))
+(flet ($e1668 (implies $e1420 $e1664))
+(flet ($e1669 (or $e677 $e164))
+(flet ($e1670 (if_then_else $e120 $e1651 $e1144))
+(flet ($e1671 (not $e1633))
+(flet ($e1672 (not $e81))
+(flet ($e1673 (not $e184))
+(flet ($e1674 (xor $e1321 $e554))
+(flet ($e1675 (and $e1374 $e98))
+(flet ($e1676 (implies $e545 $e835))
+(flet ($e1677 (xor $e819 $e1514))
+(flet ($e1678 (or $e1284 $e1315))
+(flet ($e1679 (implies $e901 $e1333))
+(flet ($e1680 (iff $e1182 $e957))
+(flet ($e1681 (and $e783 $e482))
+(flet ($e1682 (iff $e1619 $e1569))
+(flet ($e1683 (or $e190 $e810))
+(flet ($e1684 (implies $e812 $e154))
+(flet ($e1685 (implies $e1145 $e206))
+(flet ($e1686 (xor $e1572 $e72))
+(flet ($e1687 (and $e1662 $e1297))
+(flet ($e1688 (iff $e635 $e486))
+(flet ($e1689 (xor $e1648 $e1253))
+(flet ($e1690 (not $e138))
+(flet ($e1691 (xor $e1101 $e1225))
+(flet ($e1692 (iff $e1402 $e1369))
+(flet ($e1693 (if_then_else $e595 $e911 $e1237))
+(flet ($e1694 (xor $e711 $e89))
+(flet ($e1695 (and $e1337 $e1207))
+(flet ($e1696 (or $e1030 $e675))
+(flet ($e1697 (implies $e1158 $e1506))
+(flet ($e1698 (and $e59 $e1179))
+(flet ($e1699 (and $e1326 $e57))
+(flet ($e1700 (implies $e943 $e1626))
+(flet ($e1701 (iff $e827 $e686))
+(flet ($e1702 (iff $e1083 $e683))
+(flet ($e1703 (iff $e625 $e1026))
+(flet ($e1704 (xor $e172 $e148))
+(flet ($e1705 (iff $e547 $e1558))
+(flet ($e1706 (or $e740 $e1036))
+(flet ($e1707 (iff $e1657 $e1044))
+(flet ($e1708 (not $e158))
+(flet ($e1709 (if_then_else $e1086 $e171 $e1001))
+(flet ($e1710 (iff $e854 $e550))
+(flet ($e1711 (implies $e1570 $e1230))
+(flet ($e1712 (not $e1265))
+(flet ($e1713 (iff $e1442 $e1260))
+(flet ($e1714 (or $e1085 $e921))
+(flet ($e1715 (xor $e892 $e146))
+(flet ($e1716 (and $e1084 $e1128))
+(flet ($e1717 (not $e1571))
+(flet ($e1718 (xor $e491 $e1404))
+(flet ($e1719 (iff $e1156 $e1257))
+(flet ($e1720 (not $e1717))
+(flet ($e1721 (iff $e139 $e649))
+(flet ($e1722 (implies $e1711 $e1005))
+(flet ($e1723 (if_then_else $e735 $e1696 $e1521))
+(flet ($e1724 (iff $e609 $e775))
+(flet ($e1725 (or $e600 $e1136))
+(flet ($e1726 (or $e548 $e1362))
+(flet ($e1727 (not $e1724))
+(flet ($e1728 (or $e53 $e886))
+(flet ($e1729 (or $e1562 $e1223))
+(flet ($e1730 (not $e1000))
+(flet ($e1731 (if_then_else $e1707 $e1718 $e1352))
+(flet ($e1732 (not $e1435))
+(flet ($e1733 (or $e1348 $e471))
+(flet ($e1734 (not $e1594))
+(flet ($e1735 (xor $e897 $e1325))
+(flet ($e1736 (or $e1733 $e1443))
+(flet ($e1737 (implies $e1524 $e1431))
+(flet ($e1738 (xor $e664 $e578))
+(flet ($e1739 (or $e1010 $e1550))
+(flet ($e1740 (iff $e1681 $e1215))
+(flet ($e1741 (if_then_else $e1375 $e129 $e1698))
+(flet ($e1742 (iff $e134 $e707))
+(flet ($e1743 (implies $e1039 $e1656))
+(flet ($e1744 (iff $e773 $e116))
+(flet ($e1745 (not $e1309))
+(flet ($e1746 (implies $e1543 $e1332))
+(flet ($e1747 (if_then_else $e204 $e1123 $e1611))
+(flet ($e1748 (implies $e1630 $e866))
+(flet ($e1749 (xor $e442 $e1048))
+(flet ($e1750 (not $e836))
+(flet ($e1751 (and $e1088 $e828))
+(flet ($e1752 (iff $e905 $e1682))
+(flet ($e1753 (xor $e1596 $e179))
+(flet ($e1754 (xor $e924 $e525))
+(flet ($e1755 (or $e60 $e488))
+(flet ($e1756 (and $e730 $e1536))
+(flet ($e1757 (iff $e1140 $e183))
+(flet ($e1758 (implies $e1713 $e903))
+(flet ($e1759 (iff $e481 $e475))
+(flet ($e1760 (and $e1090 $e648))
+(flet ($e1761 (or $e176 $e1412))
+(flet ($e1762 (iff $e1742 $e1339))
+(flet ($e1763 (iff $e71 $e1224))
+(flet ($e1764 (implies $e440 $e1705))
+(flet ($e1765 (if_then_else $e1667 $e1622 $e976))
+(flet ($e1766 (implies $e79 $e1178))
+(flet ($e1767 (if_then_else $e756 $e510 $e1300))
+(flet ($e1768 (and $e1190 $e1409))
+(flet ($e1769 (or $e516 $e762))
+(flet ($e1770 (implies $e1500 $e1169))
+(flet ($e1771 (iff $e1740 $e1255))
+(flet ($e1772 (iff $e704 $e1261))
+(flet ($e1773 (not $e1121))
+(flet ($e1774 (xor $e1143 $e1567))
+(flet ($e1775 (xor $e1134 $e1316))
+(flet ($e1776 (and $e1116 $e1185))
+(flet ($e1777 (not $e605))
+(flet ($e1778 (and $e953 $e1745))
+(flet ($e1779 (implies $e1256 $e62))
+(flet ($e1780 (implies $e56 $e1491))
+(flet ($e1781 (implies $e881 $e201))
+(flet ($e1782 (or $e1584 $e1130))
+(flet ($e1783 (iff $e596 $e709))
+(flet ($e1784 (xor $e1028 $e1032))
+(flet ($e1785 (iff $e130 $e1283))
+(flet ($e1786 (implies $e1560 $e945))
+(flet ($e1787 (and $e563 $e542))
+(flet ($e1788 (implies $e555 $e1699))
+(flet ($e1789 (iff $e193 $e654))
+(flet ($e1790 (implies $e1692 $e971))
+(flet ($e1791 (not $e1251))
+(flet ($e1792 (not $e1220))
+(flet ($e1793 (not $e1150))
+(flet ($e1794 (and $e1710 $e1552))
+(flet ($e1795 (not $e1599))
+(flet ($e1796 (not $e755))
+(flet ($e1797 (or $e1534 $e1602))
+(flet ($e1798 (iff $e774 $e1238))
+(flet ($e1799 (if_then_else $e1356 $e574 $e1322))
+(flet ($e1800 (or $e1004 $e200))
+(flet ($e1801 (iff $e1009 $e708))
+(flet ($e1802 (if_then_else $e1526 $e845 $e527))
+(flet ($e1803 (xor $e1485 $e725))
+(flet ($e1804 (iff $e1595 $e1748))
+(flet ($e1805 (or $e927 $e603))
+(flet ($e1806 (or $e178 $e446))
+(flet ($e1807 (implies $e626 $e1607))
+(flet ($e1808 (xor $e985 $e776))
+(flet ($e1809 (not $e1795))
+(flet ($e1810 (not $e904))
+(flet ($e1811 (if_then_else $e106 $e1803 $e114))
+(flet ($e1812 (if_then_else $e797 $e1113 $e102))
+(flet ($e1813 (not $e972))
+(flet ($e1814 (xor $e1678 $e1551))
+(flet ($e1815 (xor $e889 $e1259))
+(flet ($e1816 (and $e622 $e1149))
+(flet ($e1817 (implies $e1655 $e1693))
+(flet ($e1818 (not $e1597))
+(flet ($e1819 (implies $e1350 $e1761))
+(flet ($e1820 (xor $e157 $e1227))
+(flet ($e1821 (iff $e1233 $e73))
+(flet ($e1822 (not $e794))
+(flet ($e1823 (not $e798))
+(flet ($e1824 (and $e944 $e825))
+(flet ($e1825 (if_then_else $e1046 $e787 $e1244))
+(flet ($e1826 (and $e1646 $e181))
+(flet ($e1827 (xor $e1124 $e1016))
+(flet ($e1828 (if_then_else $e495 $e1822 $e863))
+(flet ($e1829 (not $e1034))
+(flet ($e1830 (and $e619 $e678))
+(flet ($e1831 (xor $e1480 $e87))
+(flet ($e1832 (implies $e128 $e1242))
+(flet ($e1833 (if_then_else $e1826 $e1537 $e1152))
+(flet ($e1834 (not $e188))
+(flet ($e1835 (xor $e514 $e962))
+(flet ($e1836 (not $e1625))
+(flet ($e1837 (if_then_else $e521 $e133 $e636))
+(flet ($e1838 (or $e597 $e814))
+(flet ($e1839 (or $e454 $e484))
+(flet ($e1840 (xor $e449 $e1802))
+(flet ($e1841 (if_then_else $e476 $e1612 $e1783))
+(flet ($e1842 (if_then_else $e1206 $e1808 $e987))
+(flet ($e1843 (not $e1620))
+(flet ($e1844 (if_then_else $e630 $e1775 $e1613))
+(flet ($e1845 (or $e846 $e739))
+(flet ($e1846 (xor $e142 $e1764))
+(flet ($e1847 (iff $e1738 $e84))
+(flet ($e1848 (implies $e1349 $e1492))
+(flet ($e1849 (or $e1062 $e1687))
+(flet ($e1850 (and $e468 $e160))
+(flet ($e1851 (iff $e912 $e52))
+(flet ($e1852 (or $e175 $e1840))
+(flet ($e1853 (xor $e853 $e1527))
+(flet ($e1854 (or $e1104 $e789))
+(flet ($e1855 (iff $e883 $e959))
+(flet ($e1856 (if_then_else $e1593 $e763 $e1689))
+(flet ($e1857 (implies $e922 $e1632))
+(flet ($e1858 (and $e1071 $e1118))
+(flet ($e1859 (if_then_else $e487 $e1007 $e520))
+(flet ($e1860 (implies $e1364 $e1785))
+(flet ($e1861 (iff $e844 $e1125))
+(flet ($e1862 (and $e1647 $e1319))
+(flet ($e1863 (xor $e1532 $e1154))
+(flet ($e1864 (and $e1015 $e1721))
+(flet ($e1865 (and $e808 $e807))
+(flet ($e1866 (not $e194))
+(flet ($e1867 (and $e186 $e1778))
+(flet ($e1868 (if_then_else $e925 $e122 $e1565))
+(flet ($e1869 (and $e584 $e1347))
+(flet ($e1870 (iff $e1226 $e117))
+(flet ($e1871 (or $e1561 $e1466))
+(flet ($e1872 (implies $e665 $e1771))
+(flet ($e1873 (implies $e1401 $e170))
+(flet ($e1874 (iff $e68 $e822))
+(flet ($e1875 (xor $e977 $e954))
+(flet ($e1876 (iff $e1077 $e1769))
+(flet ($e1877 (xor $e1068 $e153))
+(flet ($e1878 (or $e1218 $e658))
+(flet ($e1879 (if_then_else $e1427 $e1217 $e1360))
+(flet ($e1880 (xor $e1858 $e757))
+(flet ($e1881 (and $e1716 $e1559))
+(flet ($e1882 (implies $e1020 $e1484))
+(flet ($e1883 (if_then_else $e1239 $e862 $e1288))
+(flet ($e1884 (or $e1522 $e180))
+(flet ($e1885 (and $e1645 $e920))
+(flet ($e1886 (iff $e795 $e1074))
+(flet ($e1887 (not $e769))
+(flet ($e1888 (xor $e791 $e1616))
+(flet ($e1889 (if_then_else $e1766 $e620 $e1219))
+(flet ($e1890 (xor $e602 $e960))
+(flet ($e1891 (not $e721))
+(flet ($e1892 (not $e861))
+(flet ($e1893 (implies $e581 $e1750))
+(flet ($e1894 (and $e931 $e926))
+(flet ($e1895 (xor $e1751 $e165))
+(flet ($e1896 (and $e670 $e1445))
+(flet ($e1897 (if_then_else $e1666 $e169 $e983))
+(flet ($e1898 (xor $e1165 $e1070))
+(flet ($e1899 (xor $e902 $e1292))
+(flet ($e1900 (implies $e509 $e1162))
+(flet ($e1901 (implies $e1384 $e1477))
+(flet ($e1902 (implies $e587 $e1832))
+(flet ($e1903 (if_then_else $e751 $e813 $e1702))
+(flet ($e1904 (xor $e1159 $e894))
+(flet ($e1905 (xor $e447 $e1867))
+(flet ($e1906 (implies $e558 $e1392))
+(flet ($e1907 (implies $e650 $e538))
+(flet ($e1908 (and $e1510 $e674))
+(flet ($e1909 (if_then_else $e1317 $e1103 $e696))
+(flet ($e1910 (and $e1833 $e1793))
+(flet ($e1911 (not $e631))
+(flet ($e1912 (not $e1419))
+(flet ($e1913 (if_then_else $e1198 $e1031 $e1198))
+(flet ($e1914 (if_then_else $e1732 $e69 $e928))
+(flet ($e1915 (and $e1586 $e1734))
+(flet ($e1916 (and $e645 $e1786))
+(flet ($e1917 (iff $e477 $e669))
+(flet ($e1918 (if_then_else $e1823 $e1119 $e811))
+(flet ($e1919 (implies $e1013 $e1871))
+(flet ($e1920 (if_then_else $e1519 $e1462 $e1511))
+(flet ($e1921 (iff $e1659 $e1346))
+(flet ($e1922 (implies $e820 $e1388))
+(flet ($e1923 (if_then_else $e1792 $e1472 $e720))
+(flet ($e1924 (iff $e716 $e1779))
+(flet ($e1925 (implies $e1730 $e1397))
+(flet ($e1926 (not $e1157))
+(flet ($e1927 (or $e1609 $e914))
+(flet ($e1928 (xor $e752 $e1741))
+(flet ($e1929 (iff $e1394 $e1697))
+(flet ($e1930 (iff $e601 $e65))
+(flet ($e1931 (or $e1900 $e1092))
+(flet ($e1932 (not $e1275))
+(flet ($e1933 (implies $e1386 $e126))
+(flet ($e1934 (iff $e1294 $e1663))
+(flet ($e1935 (and $e641 $e1414))
+(flet ($e1936 (not $e698))
+(flet ($e1937 (if_then_else $e1563 $e192 $e1539))
+(flet ($e1938 (implies $e1859 $e1933))
+(flet ($e1939 (not $e453))
+(flet ($e1940 (if_then_else $e1385 $e1759 $e606))
+(flet ($e1941 (implies $e1258 $e159))
+(flet ($e1942 (xor $e1056 $e478))
+(flet ($e1943 (if_then_else $e1691 $e1746 $e210))
+(flet ($e1944 (if_then_else $e1726 $e1671 $e125))
+(flet ($e1945 (implies $e1370 $e1889))
+(flet ($e1946 (or $e1736 $e1168))
+(flet ($e1947 (iff $e1476 $e965))
+(flet ($e1948 (iff $e1248 $e1166))
+(flet ($e1949 (xor $e657 $e1387))
+(flet ($e1950 (or $e916 $e577))
+(flet ($e1951 (iff $e964 $e1501))
+(flet ($e1952 (implies $e1453 $e119))
+(flet ($e1953 (not $e842))
+(flet ($e1954 (and $e1094 $e1813))
+(flet ($e1955 (implies $e1566 $e1915))
+(flet ($e1956 (iff $e1735 $e1576))
+(flet ($e1957 (xor $e796 $e908))
+(flet ($e1958 (iff $e1148 $e54))
+(flet ($e1959 (iff $e1327 $e444))
+(flet ($e1960 (iff $e1298 $e1812))
+(flet ($e1961 (not $e1042))
+(flet ($e1962 (and $e1311 $e1818))
+(flet ($e1963 (and $e1743 $e1390))
+(flet ($e1964 (not $e101))
+(flet ($e1965 (or $e1490 $e1163))
+(flet ($e1966 (or $e1827 $e1018))
+(flet ($e1967 (if_then_else $e817 $e1497 $e500))
+(flet ($e1968 (and $e1072 $e1249))
+(flet ($e1969 (xor $e1914 $e982))
+(flet ($e1970 (and $e1389 $e732))
+(flet ($e1971 (implies $e74 $e1209))
+(flet ($e1972 (or $e1911 $e996))
+(flet ($e1973 (not $e1781))
+(flet ($e1974 (not $e1338))
+(flet ($e1975 (and $e1685 $e1825))
+(flet ($e1976 (not $e526))
+(flet ($e1977 (if_then_else $e1614 $e1482 $e483))
+(flet ($e1978 (implies $e1794 $e1879))
+(flet ($e1979 (implies $e1488 $e1355))
+(flet ($e1980 (implies $e1203 $e1669))
+(flet ($e1981 (or $e86 $e150))
+(flet ($e1982 (xor $e1127 $e981))
+(flet ($e1983 (or $e544 $e1585))
+(flet ($e1984 (if_then_else $e1904 $e576 $e132))
+(flet ($e1985 (or $e1038 $e1487))
+(flet ($e1986 (or $e1629 $e1187))
+(flet ($e1987 (and $e1305 $e1676))
+(flet ($e1988 (xor $e1451 $e1688))
+(flet ($e1989 (or $e1923 $e966))
+(flet ($e1990 (or $e1273 $e1208))
+(flet ($e1991 (iff $e1703 $e1383))
+(flet ($e1992 (implies $e898 $e1788))
+(flet ($e1993 (xor $e1129 $e1368))
+(flet ($e1994 (iff $e1172 $e933))
+(flet ($e1995 (or $e131 $e493))
+(flet ($e1996 (not $e1270))
+(flet ($e1997 (not $e1590))
+(flet ($e1998 (iff $e1964 $e124))
+(flet ($e1999 (not $e1739))
+(flet ($e2000 (not $e549))
+(flet ($e2001 (if_then_else $e1195 $e913 $e582))
+(flet ($e2002 (not $e1805))
+(flet ($e2003 (iff $e1323 $e533))
+(flet ($e2004 (and $e1815 $e1725))
+(flet ($e2005 (if_then_else $e1966 $e90 $e1636))
+(flet ($e2006 (if_then_else $e1457 $e1868 $e1988))
+(flet ($e2007 (and $e681 $e585))
+(flet ($e2008 (or $e1973 $e1893))
+(flet ($e2009 (and $e1535 $e1621))
+(flet ($e2010 (iff $e936 $e1819))
+(flet ($e2011 (and $e512 $e667))
+(flet ($e2012 (xor $e534 $e1846))
+(flet ($e2013 (iff $e989 $e726))
+(flet ($e2014 (iff $e942 $e1665))
+(flet ($e2015 (or $e1807 $e1234))
+(flet ($e2016 (iff $e167 $e143))
+(flet ($e2017 (implies $e1411 $e499))
+(flet ($e2018 (xor $e1709 $e556))
+(flet ($e2019 (not $e1313))
+(flet ($e2020 (if_then_else $e177 $e1568 $e95))
+(flet ($e2021 (not $e1838))
+(flet ($e2022 (and $e115 $e2015))
+(flet ($e2023 (iff $e1066 $e685))
+(flet ($e2024 (iff $e614 $e63))
+(flet ($e2025 (or $e505 $e1553))
+(flet ($e2026 (xor $e1440 $e2020))
+(flet ($e2027 (xor $e457 $e919))
+(flet ($e2028 (and $e748 $e1672))
+(flet ($e2029 (xor $e1455 $e610))
+(flet ($e2030 (and $e1922 $e1806))
+(flet ($e2031 (if_then_else $e875 $e78 $e1836))
+(flet ($e2032 (xor $e450 $e450))
+(flet ($e2033 (xor $e997 $e583))
+(flet ($e2034 (iff $e118 $e207))
+(flet ($e2035 (iff $e2027 $e1999))
+(flet ($e2036 (if_then_else $e85 $e2011 $e743))
+(flet ($e2037 (not $e780))
+(flet ($e2038 (and $e1413 $e1849))
+(flet ($e2039 (implies $e684 $e1952))
+(flet ($e2040 (if_then_else $e1329 $e1776 $e568))
+(flet ($e2041 (and $e1126 $e96))
+(flet ($e2042 (if_then_else $e530 $e1749 $e1433))
+(flet ($e2043 (and $e1841 $e1673))
+(flet ($e2044 (not $e858))
+(flet ($e2045 (xor $e1096 $e1557))
+(flet ($e2046 (if_then_else $e1398 $e1063 $e1027))
+(flet ($e2047 (iff $e2002 $e694))
+(flet ($e2048 (implies $e2017 $e145))
+(flet ($e2049 (implies $e1508 $e754))
+(flet ($e2050 (if_then_else $e2003 $e910 $e1340))
+(flet ($e2051 (implies $e1131 $e1432))
+(flet ($e2052 (implies $e1897 $e1014))
+(flet ($e2053 (or $e1731 $e687))
+(flet ($e2054 (iff $e1817 $e992))
+(flet ($e2055 (implies $e864 $e907))
+(flet ($e2056 (or $e1854 $e1932))
+(flet ($e2057 (if_then_else $e906 $e1582 $e1023))
+(flet ($e2058 (not $e984))
+(flet ($e2059 (and $e1371 $e832))
+(flet ($e2060 (xor $e513 $e941))
+(flet ($e2061 (implies $e1012 $e1372))
+(flet ($e2062 (xor $e719 $e1961))
+(flet ($e2063 (xor $e535 $e75))
+(flet ($e2064 (xor $e1845 $e1888))
+(flet ($e2065 (if_then_else $e1768 $e1345 $e1359))
+(flet ($e2066 (or $e58 $e1589))
+(flet ($e2067 (if_then_else $e1948 $e1737 $e1986))
+(flet ($e2068 (and $e1495 $e1928))
+(flet ($e2069 (or $e1228 $e1918))
+(flet ($e2070 (not $e93))
+(flet ($e2071 (or $e1099 $e1758))
+(flet ($e2072 (implies $e1865 $e2068))
+(flet ($e2073 (if_then_else $e1164 $e528 $e1974))
+(flet ($e2074 (or $e1266 $e1885))
+(flet ($e2075 (or $e803 $e1229))
+(flet ($e2076 (or $e830 $e1100))
+(flet ($e2077 (and $e753 $e2037))
+(flet ($e2078 (iff $e958 $e745))
+(flet ($e2079 (and $e211 $e970))
+(flet ($e2080 (implies $e1115 $e1920))
+(flet ($e2081 (and $e1581 $e1958))
+(flet ($e2082 (not $e2061))
+(flet ($e2083 (xor $e1087 $e652))
+(flet ($e2084 (or $e2009 $e209))
+(flet ($e2085 (iff $e1111 $e2067))
+(flet ($e2086 (iff $e1760 $e1800))
+(flet ($e2087 (xor $e1447 $e978))
+(flet ($e2088 (implies $e804 $e785))
+(flet ($e2089 (iff $e599 $e710))
+(flet ($e2090 (xor $e2069 $e1587))
+(flet ($e2091 (or $e634 $e1982))
+(flet ($e2092 (and $e1279 $e961))
+(flet ($e2093 (xor $e1881 $e1882))
+(flet ($e2094 (if_then_else $e1634 $e1078 $e1628))
+(flet ($e2095 (or $e647 $e1987))
+(flet ($e2096 (or $e1714 $e594))
+(flet ($e2097 (or $e986 $e2034))
+(flet ($e2098 (implies $e1816 $e659))
+(flet ($e2099 (or $e2064 $e629))
+(flet ($e2100 (or $e540 $e968))
+(flet ($e2101 (or $e501 $e1884))
+(flet ($e2102 (or $e1377 $e1712))
+(flet ($e2103 (and $e1520 $e1498))
+(flet ($e2104 (not $e639))
+(flet ($e2105 (implies $e2096 $e1421))
+(flet ($e2106 (or $e203 $e2075))
+(flet ($e2107 (not $e993))
+(flet ($e2108 (and $e1310 $e2004))
+(flet ($e2109 (xor $e445 $e1984))
+(flet ($e2110 (or $e1864 $e1917))
+(flet ($e2111 (not $e1043))
+(flet ($e2112 (xor $e1727 $e1528))
+(flet ($e2113 (not $e1925))
+(flet ($e2114 (if_then_else $e1471 $e1601 $e1089))
+(flet ($e2115 (if_then_else $e1895 $e1701 $e2043))
+(flet ($e2116 (or $e655 $e1444))
+(flet ($e2117 (and $e722 $e1424))
+(flet ($e2118 (or $e1811 $e1644))
+(flet ($e2119 (implies $e539 $e1151))
+(flet ($e2120 (or $e1067 $e565))
+(flet ($e2121 (iff $e746 $e1674))
+(flet ($e2122 (or $e1011 $e688))
+(flet ($e2123 (xor $e1658 $e618))
+(flet ($e2124 (and $e1891 $e1513))
+(flet ($e2125 (and $e1200 $e2080))
+(flet ($e2126 (if_then_else $e123 $e1243 $e1494))
+(flet ($e2127 (xor $e666 $e975))
+(flet ($e2128 (iff $e2106 $e859))
+(flet ($e2129 (or $e1496 $e2112))
+(flet ($e2130 (iff $e1114 $e1302))
+(flet ($e2131 (or $e1790 $e1171))
+(flet ($e2132 (if_then_else $e2001 $e2012 $e2130))
+(flet ($e2133 (and $e1753 $e2056))
+(flet ($e2134 (or $e1839 $e1855))
+(flet ($e2135 (not $e1481))
+(flet ($e2136 (xor $e1968 $e586))
+(flet ($e2137 (if_then_else $e2119 $e1642 $e50))
+(flet ($e2138 (and $e1604 $e1910))
+(flet ($e2139 (not $e1863))
+(flet ($e2140 (or $e1892 $e718))
+(flet ($e2141 (implies $e2042 $e489))
+(flet ($e2142 (implies $e2062 $e1765))
+(flet ($e2143 (and $e1065 $e2035))
+(flet ($e2144 (not $e2102))
+(flet ($e2145 (if_then_else $e110 $e2079 $e2005))
+(flet ($e2146 (not $e1439))
+(flet ($e2147 (or $e460 $e2060))
+(flet ($e2148 (xor $e1547 $e2116))
+(flet ($e2149 (and $e1649 $e856))
+(flet ($e2150 (and $e2026 $e2101))
+(flet ($e2151 (not $e1844))
+(flet ($e2152 (xor $e1271 $e1393))
+(flet ($e2153 (not $e1247))
+(flet ($e2154 (implies $e137 $e2113))
+(flet ($e2155 (implies $e189 $e2038))
+(flet ($e2156 (or $e1670 $e1744))
+(flet ($e2157 (implies $e2150 $e1029))
+(flet ($e2158 (implies $e1949 $e2125))
+(flet ($e2159 (or $e1058 $e741))
+(flet ($e2160 (iff $e1180 $e837))
+(flet ($e2161 (implies $e952 $e1950))
+(flet ($e2162 (implies $e2138 $e701))
+(flet ($e2163 (not $e2055))
+(flet ($e2164 (if_then_else $e105 $e792 $e1704))
+(flet ($e2165 (iff $e1583 $e1639))
+(flet ($e2166 (implies $e2083 $e2128))
+(flet ($e2167 (implies $e1254 $e1927))
+(flet ($e2168 (and $e2029 $e1899))
+(flet ($e2169 (or $e1720 $e2135))
+(flet ($e2170 (implies $e1448 $e2082))
+(flet ($e2171 (implies $e1870 $e1784))
+(flet ($e2172 (xor $e1605 $e2073))
+(flet ($e2173 (implies $e1777 $e1883))
+(flet ($e2174 (implies $e1504 $e103))
+(flet ($e2175 (implies $e1894 $e935))
+(flet ($e2176 (or $e1335 $e1898))
+(flet ($e2177 (or $e100 $e1544))
+(flet ($e2178 (if_then_else $e1336 $e1290 $e2019))
+(flet ($e2179 (or $e934 $e617))
+(flet ($e2180 (and $e1728 $e2157))
+(flet ($e2181 (xor $e633 $e723))
+(flet ($e2182 (iff $e506 $e939))
+(flet ($e2183 (if_then_else $e1213 $e1890 $e2145))
+(flet ($e2184 (xor $e1291 $e2013))
+(flet ($e2185 (and $e2099 $e1977))
+(flet ($e2186 (implies $e702 $e1575))
+(flet ($e2187 (or $e1318 $e1978))
+(flet ($e2188 (or $e879 $e2110))
+(flet ($e2189 (iff $e1282 $e1953))
+(flet ($e2190 (if_then_else $e888 $e1133 $e2089))
+(flet ($e2191 (xor $e1641 $e1963))
+(flet ($e2192 (if_then_else $e1236 $e2137 $e1468))
+(flet ($e2193 (not $e1183))
+(flet ($e2194 (implies $e1205 $e1110))
+(flet ($e2195 (if_then_else $e1624 $e1303 $e1212))
+(flet ($e2196 (and $e999 $e1886))
+(flet ($e2197 (xor $e1191 $e1035))
+(flet ($e2198 (or $e1796 $e1141))
+(flet ($e2199 (not $e1700))
+(flet ($e2200 (xor $e651 $e1003))
+(flet ($e2201 (if_then_else $e1546 $e616 $e1470))
+(flet ($e2202 (not $e2028))
+(flet ($e2203 (implies $e2059 $e1679))
+(flet ($e2204 (or $e1102 $e1167))
+(flet ($e2205 (xor $e860 $e1073))
+(flet ($e2206 (not $e994))
+(flet ($e2207 (iff $e838 $e195))
+(flet ($e2208 (implies $e672 $e1610))
+(flet ($e2209 (iff $e1814 $e1852))
+(flet ($e2210 (not $e2132))
+(flet ($e2211 (not $e1199))
+(flet ($e2212 (implies $e473 $e818))
+(flet ($e2213 (or $e1960 $e1997))
+(flet ($e2214 (not $e147))
+(flet ($e2215 (if_then_else $e1941 $e551 $e1862))
+(flet ($e2216 (if_then_else $e1804 $e1176 $e765))
+(flet ($e2217 (xor $e2171 $e82))
+(flet ($e2218 (or $e784 $e1467))
+(flet ($e2219 (and $e2183 $e1049))
+(flet ($e2220 (xor $e2058 $e1202))
+(flet ($e2221 (xor $e2153 $e1801))
+(flet ($e2222 (if_then_else $e1299 $e1272 $e1787))
+(flet ($e2223 (and $e1069 $e963))
+(flet ($e2224 (not $e2078))
+(flet ($e2225 (or $e1757 $e801))
+(flet ($e2226 (implies $e882 $e1079))
+(flet ($e2227 (or $e995 $e1896))
+(flet ($e2228 (or $e2041 $e2126))
+(flet ($e2229 (xor $e1931 $e2180))
+(flet ($e2230 (implies $e1945 $e561))
+(flet ($e2231 (xor $e691 $e1573))
+(flet ($e2232 (and $e1809 $e1993))
+(flet ($e2233 (if_then_else $e1579 $e1474 $e191))
+(flet ($e2234 (implies $e2169 $e734))
+(flet ($e2235 (iff $e208 $e2140))
+(flet ($e2236 (not $e2016))
+(flet ($e2237 (iff $e1951 $e1913))
+(flet ($e2238 (iff $e2164 $e884))
+(flet ($e2239 (or $e1847 $e1416))
+(flet ($e2240 (if_then_else $e2139 $e1998 $e705))
+(flet ($e2241 (iff $e1635 $e2118))
+(flet ($e2242 (xor $e1033 $e1677))
+(flet ($e2243 (not $e141))
+(flet ($e2244 (iff $e1214 $e205))
+(flet ($e2245 (xor $e1580 $e2129))
+(flet ($e2246 (xor $e717 $e1222))
+(flet ($e2247 (iff $e2232 $e2230))
+(flet ($e2248 (if_then_else $e1188 $e112 $e1799))
+(flet ($e2249 (not $e1906))
+(flet ($e2250 (and $e980 $e896))
+(flet ($e2251 (iff $e1210 $e2211))
+(flet ($e2252 (implies $e1994 $e1772))
+(flet ($e2253 (implies $e1456 $e511))
+(flet ($e2254 (iff $e829 $e2243))
+(flet ($e2255 (and $e2209 $e1618))
+(flet ($e2256 (implies $e455 $e646))
+(flet ($e2257 (iff $e1831 $e1851))
+(flet ($e2258 (xor $e2134 $e552))
+(flet ($e2259 (implies $e850 $e1281))
+(flet ($e2260 (xor $e1603 $e668))
+(flet ($e2261 (not $e1912))
+(flet ($e2262 (not $e1829))
+(flet ($e2263 (implies $e1934 $e2033))
+(flet ($e2264 (and $e2242 $e537))
+(flet ($e2265 (if_then_else $e1024 $e1592 $e1354))
+(flet ($e2266 (iff $e871 $e564))
+(flet ($e2267 (xor $e826 $e1919))
+(flet ($e2268 (iff $e1860 $e2237))
+(flet ($e2269 (or $e2155 $e2262))
+(flet ($e2270 (iff $e2006 $e2087))
+(flet ($e2271 (if_then_else $e1276 $e2246 $e1441))
+(flet ($e2272 (if_then_else $e2221 $e2074 $e623))
+(flet ($e2273 (iff $e2141 $e1493))
+(flet ($e2274 (if_then_else $e1391 $e2030 $e2198))
+(flet ($e2275 (or $e1694 $e2258))
+(flet ($e2276 (if_then_else $e524 $e917 $e1947))
+(flet ($e2277 (or $e2050 $e2098))
+(flet ($e2278 (if_then_else $e1661 $e1661 $e673))
+(flet ($e2279 (iff $e1853 $e1061))
+(flet ($e2280 (and $e742 $e632))
+(flet ($e2281 (xor $e2052 $e1650))
+(flet ($e2282 (or $e2278 $e867))
+(flet ($e2283 (if_then_else $e1153 $e1507 $e1887))
+(flet ($e2284 (not $e1719))
+(flet ($e2285 (iff $e2227 $e2107))
+(flet ($e2286 (or $e441 $e1109))
+(flet ($e2287 (xor $e1120 $e2148))
+(flet ($e2288 (and $e2104 $e929))
+(flet ($e2289 (implies $e2151 $e2181))
+(flet ($e2290 (implies $e2168 $e2162))
+(flet ($e2291 (xor $e1970 $e463))
+(flet ($e2292 (if_then_else $e869 $e2282 $e998))
+(flet ($e2293 (iff $e1856 $e1695))
+(flet ($e2294 (if_then_else $e474 $e949 $e1240))
+(flet ($e2295 (not $e607))
+(flet ($e2296 (if_then_else $e2266 $e1686 $e1082))
+(flet ($e2297 (xor $e2206 $e1235))
+(flet ($e2298 (if_then_else $e1752 $e1075 $e503))
+(flet ($e2299 (and $e2158 $e2196))
+(flet ($e2300 (xor $e1955 $e1250))
+(flet ($e2301 (if_then_else $e2192 $e1446 $e1780))
+(flet ($e2302 (xor $e2291 $e1051))
+(flet ($e2303 (iff $e2063 $e1873))
+(flet ($e2304 (if_then_else $e2217 $e915 $e772))
+(flet ($e2305 (implies $e2197 $e66))
+(flet ($e2306 (or $e1381 $e2122))
+(flet ($e2307 (if_then_else $e94 $e2100 $e1652))
+(flet ($e2308 (iff $e1866 $e768))
+(flet ($e2309 (iff $e1835 $e567))
+(flet ($e2310 (if_then_else $e466 $e2248 $e1280))
+(flet ($e2311 (implies $e2178 $e2172))
+(flet ($e2312 (xor $e2285 $e1277))
+(flet ($e2313 (and $e870 $e779))
+(flet ($e2314 (xor $e2247 $e1289))
+(flet ($e2315 (and $e51 $e469))
+(flet ($e2316 (xor $e1429 $e727))
+(flet ($e2317 (xor $e2187 $e2189))
+(flet ($e2318 (xor $e1437 $e2014))
+(flet ($e2319 (if_then_else $e1821 $e800 $e1479))
+(flet ($e2320 (xor $e2293 $e560))
+(flet ($e2321 (not $e1454))
+(flet ($e2322 (or $e1706 $e185))
+(flet ($e2323 (or $e515 $e2229))
+(flet ($e2324 (if_then_else $e1410 $e2241 $e144))
+(flet ($e2325 (xor $e76 $e1954))
+(flet ($e2326 (and $e1606 $e575))
+(flet ($e2327 (or $e529 $e974))
+(flet ($e2328 (implies $e199 $e2292))
+(flet ($e2329 (implies $e2166 $e823))
+(flet ($e2330 (if_then_else $e2277 $e1962 $e695))
+(flet ($e2331 (xor $e2294 $e2326))
+(flet ($e2332 (not $e2312))
+(flet ($e2333 (iff $e2228 $e758))
+(flet ($e2334 (if_then_else $e135 $e793 $e899))
+(flet ($e2335 (not $e2210))
+(flet ($e2336 (iff $e849 $e467))
+(flet ($e2337 (iff $e1729 $e1843))
+(flet ($e2338 (not $e1834))
+(flet ($e2339 (if_then_else $e1211 $e2264 $e566))
+(flet ($e2340 (or $e2299 $e680))
+(flet ($e2341 (not $e1216))
+(flet ($e2342 (not $e1797))
+(flet ($e2343 (implies $e2114 $e152))
+(flet ($e2344 (if_then_else $e1177 $e878 $e1517))
+(flet ($e2345 (and $e2091 $e1992))
+(flet ($e2346 (or $e2165 $e1810))
+(flet ($e2347 (xor $e1901 $e161))
+(flet ($e2348 (xor $e1969 $e2092))
+(flet ($e2349 (not $e2297))
+(flet ($e2350 (and $e1929 $e559))
+(flet ($e2351 (implies $e2344 $e2143))
+(flet ($e2352 (if_then_else $e77 $e2321 $e874))
+(flet ($e2353 (not $e2136))
+(flet ($e2354 (if_then_else $e1523 $e99 $e1530))
+(flet ($e2355 (xor $e1872 $e1684))
+(flet ($e2356 (not $e2273))
+(flet ($e2357 (implies $e1341 $e1791))
+(flet ($e2358 (implies $e1875 $e1600))
+(flet ($e2359 (xor $e2340 $e573))
+(flet ($e2360 (or $e2072 $e2216))
+(flet ($e2361 (not $e1407))
+(flet ($e2362 (if_then_else $e2021 $e2353 $e799))
+(flet ($e2363 (and $e572 $e2223))
+(flet ($e2364 (or $e1458 $e490))
+(flet ($e2365 (iff $e1357 $e156))
+(flet ($e2366 (implies $e2260 $e890))
+(flet ($e2367 (and $e1540 $e1059))
+(flet ($e2368 (xor $e2358 $e2081))
+(flet ($e2369 (if_then_else $e2195 $e660 $e1767))
+(flet ($e2370 (iff $e448 $e1861))
+(flet ($e2371 (and $e2170 $e1538))
+(flet ($e2372 (if_then_else $e2320 $e2337 $e777))
+(flet ($e2373 (if_then_else $e1874 $e1763 $e2356))
+(flet ($e2374 (iff $e136 $e1830))
+(flet ($e2375 (not $e2284))
+(flet ($e2376 (not $e1503))
+(flet ($e2377 (implies $e2097 $e877))
+(flet ($e2378 (not $e876))
+(flet ($e2379 (or $e1108 $e682))
+(flet ($e2380 (xor $e638 $e459))
+(flet ($e2381 (implies $e2322 $e2327))
+(flet ($e2382 (not $e2368))
+(flet ($e2383 (iff $e2047 $e2220))
+(flet ($e2384 (not $e2152))
+(flet ($e2385 (or $e2084 $e991))
+(flet ($e2386 (not $e824))
+(flet ($e2387 (xor $e498 $e2303))
+(flet ($e2388 (iff $e168 $e70))
+(flet ($e2389 (or $e1037 $e2288))
+(flet ($e2390 (or $e2256 $e2255))
+(flet ($e2391 (not $e1186))
+(flet ($e2392 (or $e2240 $e1564))
+(flet ($e2393 (iff $e2120 $e2146))
+(flet ($e2394 (iff $e1708 $e1877))
+(flet ($e2395 (iff $e2393 $e2032))
+(flet ($e2396 (not $e778))
+(flet ($e2397 (or $e2318 $e2018))
+(flet ($e2398 (xor $e1080 $e2295))
+(flet ($e2399 (xor $e2316 $e2384))
+(flet ($e2400 (implies $e1967 $e2244))
+(flet ($e2401 (implies $e2203 $e2385))
+(flet ($e2402 (if_then_else $e2233 $e816 $e2374))
+(flet ($e2403 (iff $e2057 $e173))
+(flet ($e2404 (implies $e2156 $e2039))
+(flet ($e2405 (and $e2371 $e900))
+(flet ($e2406 (iff $e2313 $e1175))
+(flet ($e2407 (iff $e2396 $e2044))
+(flet ($e2408 (and $e2117 $e930))
+(flet ($e2409 (xor $e2191 $e1363))
+(flet ($e2410 (or $e2300 $e1876))
+(flet ($e2411 (iff $e2355 $e2350))
+(flet ($e2412 (and $e97 $e571))
+(flet ($e2413 (if_then_else $e2331 $e834 $e1197))
+(flet ($e2414 (iff $e1990 $e2215))
+(flet ($e2415 (not $e1976))
+(flet ($e2416 (or $e781 $e2071))
+(flet ($e2417 (implies $e1060 $e1403))
+(flet ($e2418 (iff $e1295 $e2046))
+(flet ($e2419 (if_then_else $e2305 $e2053 $e1201))
+(flet ($e2420 (xor $e2414 $e1054))
+(flet ($e2421 (not $e1654))
+(flet ($e2422 (implies $e1989 $e2103))
+(flet ($e2423 (xor $e2086 $e2108))
+(flet ($e2424 (and $e2167 $e2193))
+(flet ($e2425 (if_then_else $e1979 $e588 $e2281))
+(flet ($e2426 (or $e948 $e1908))
+(flet ($e2427 (or $e1957 $e2314))
+(flet ($e2428 (and $e2338 $e1965))
+(flet ($e2429 (or $e2088 $e2328))
+(flet ($e2430 (or $e1837 $e2311))
+(flet ($e2431 (if_then_else $e2323 $e470 $e1076))
+(flet ($e2432 (or $e1722 $e2269))
+(flet ($e2433 (iff $e2065 $e2397))
+(flet ($e2434 (if_then_else $e1192 $e671 $e1909))
+(flet ($e2435 (not $e2279))
+(flet ($e2436 (implies $e1269 $e1287))
+(flet ($e2437 (iff $e946 $e2149))
+(flet ($e2438 (and $e1627 $e80))
+(flet ($e2439 (not $e1637))
+(flet ($e2440 (iff $e2335 $e2160))
+(flet ($e2441 (iff $e1747 $e2094))
+(flet ($e2442 (iff $e2404 $e2109))
+(flet ($e2443 (xor $e771 $e590))
+(flet ($e2444 (xor $e1869 $e149))
+(flet ($e2445 (implies $e2392 $e2408))
+(flet ($e2446 (and $e2179 $e1117))
+(flet ($e2447 (xor $e2301 $e706))
+(flet ($e2448 (if_then_else $e1107 $e2124 $e1361))
+(flet ($e2449 (if_then_else $e2207 $e2425 $e2401))
+(flet ($e2450 (xor $e806 $e2253))
+(flet ($e2451 (if_then_else $e1842 $e1312 $e1343))
+(flet ($e2452 (or $e2364 $e2443))
+(flet ($e2453 (not $e2308))
+(flet ($e2454 (implies $e2235 $e715))
+(flet ($e2455 (implies $e831 $e979))
+(flet ($e2456 (iff $e2365 $e2447))
+(flet ($e2457 (iff $e1425 $e2205))
+(flet ($e2458 (iff $e2304 $e2317))
+(flet ($e2459 (implies $e932 $e661))
+(flet ($e2460 (and $e2296 $e2348))
+(flet ($e2461 (implies $e2280 $e1262))
+(flet ($e2462 (and $e1824 $e1937))
+(flet ($e2463 (or $e522 $e1139))
+(flet ($e2464 (if_then_else $e2177 $e598 $e2163))
+(flet ($e2465 (implies $e2439 $e2008))
+(flet ($e2466 (iff $e1935 $e2144))
+(flet ($e2467 (iff $e2261 $e1438))
+(flet ($e2468 (iff $e2076 $e2267))
+(flet ($e2469 (implies $e1773 $e880))
+(flet ($e2470 (or $e2419 $e2466))
+(flet ($e2471 (not $e1160))
+(flet ($e2472 (xor $e2025 $e2383))
+(flet ($e2473 (if_then_else $e1245 $e643 $e2415))
+(flet ($e2474 (not $e2105))
+(flet ($e2475 (or $e1959 $e1762))
+(flet ($e2476 (if_then_else $e1459 $e2202 $e2436))
+(flet ($e2477 (implies $e615 $e2387))
+(flet ($e2478 (if_then_else $e770 $e2049 $e1715))
+(flet ($e2479 (implies $e2416 $e2430))
+(flet ($e2480 (or $e2250 $e2251))
+(flet ($e2481 (iff $e1880 $e2367))
+(flet ($e2482 (or $e736 $e1930))
+(flet ($e2483 (implies $e2252 $e951))
+(flet ($e2484 (not $e2283))
+(flet ($e2485 (implies $e1463 $e1052))
+(flet ($e2486 (or $e2478 $e2201))
+(flet ($e2487 (iff $e2336 $e2341))
+(flet ($e2488 (xor $e1081 $e2454))
+(flet ($e2489 (xor $e2467 $e2184))
+(flet ($e2490 (xor $e1770 $e2239))
+(flet ($e2491 (and $e2307 $e2411))
+(flet ($e2492 (implies $e1505 $e2433))
+(flet ($e2493 (and $e1025 $e2174))
+(flet ($e2494 (implies $e2131 $e1940))
+(flet ($e2495 (or $e2070 $e2224))
+(flet ($e2496 (not $e2395))
+(flet ($e2497 (not $e2051))
+(flet ($e2498 (and $e2024 $e2360))
+(flet ($e2499 (if_then_else $e1983 $e1395 $e1473))
+(flet ($e2500 (not $e2188))
+(flet ($e2501 (xor $e2486 $e2357))
+(flet ($e2502 (implies $e2330 $e759))
+(flet ($e2503 (or $e2407 $e1828))
+(flet ($e2504 (and $e2490 $e508))
+(flet ($e2505 (or $e2496 $e738))
+(flet ($e2506 (or $e1926 $e2010))
+(flet ($e2507 (if_then_else $e1981 $e2007 $e2270))
+(flet ($e2508 (if_then_else $e1268 $e1064 $e2090))
+(flet ($e2509 (implies $e2426 $e2500))
+(flet ($e2510 (and $e2483 $e1690))
+(flet ($e2511 (implies $e2333 $e1106))
+(flet ($e2512 (iff $e2462 $e592))
+(flet ($e2513 (not $e2406))
+(flet ($e2514 (if_then_else $e2309 $e2398 $e2185))
+(flet ($e2515 (xor $e2506 $e2031))
+(flet ($e2516 (iff $e1754 $e2085))
+(flet ($e2517 (or $e1798 $e2219))
+(flet ($e2518 (iff $e2492 $e1660))
+(flet ($e2519 (if_then_else $e2310 $e2222 $e724))
+(flet ($e2520 (and $e2442 $e2485))
+(flet ($e2521 (and $e2213 $e2417))
+(flet ($e2522 (iff $e1304 $e1591))
+(flet ($e2523 (if_then_else $e1515 $e2263 $e2491))
+(flet ($e2524 (and $e2459 $e2448))
+(flet ($e2525 (iff $e1683 $e1161))
+(flet ($e2526 (not $e2470))
+(flet ($e2527 (iff $e2488 $e2315))
+(flet ($e2528 (not $e2319))
+(flet ($e2529 (iff $e2457 $e2362))
+(flet ($e2530 (if_then_else $e1112 $e2377 $e689))
+(flet ($e2531 (not $e1916))
+(flet ($e2532 (and $e2380 $e2225))
+(flet ($e2533 (if_then_else $e2226 $e2460 $e2432))
+(flet ($e2534 (not $e788))
+(flet ($e2535 (iff $e1460 $e1483))
+(flet ($e2536 (xor $e2450 $e1942))
+(flet ($e2537 (or $e1975 $e2142))
+(flet ($e2538 (and $e2517 $e2231))
+(flet ($e2539 (implies $e2479 $e2452))
+(flet ($e2540 (and $e92 $e1936))
+(flet ($e2541 (not $e2514))
+(flet ($e2542 (if_then_else $e1820 $e83 $e2525))
+(flet ($e2543 (not $e2324))
+(flet ($e2544 (xor $e2077 $e2521))
+(flet ($e2545 (iff $e162 $e733))
+(flet ($e2546 (or $e2458 $e2510))
+(flet ($e2547 (or $e2257 $e2115))
+(flet ($e2548 (and $e2351 $e1588))
+(flet ($e2549 (or $e1396 $e2438))
+(flet ($e2550 (if_then_else $e2489 $e2306 $e2399))
+(flet ($e2551 (implies $e2218 $e2424))
+(flet ($e2552 (or $e2548 $e2427))
+(flet ($e2553 (not $e1137))
+(flet ($e2554 (if_then_else $e1428 $e2551 $e1944))
+(flet ($e2555 (iff $e2389 $e2390))
+(flet ($e2556 (if_then_else $e2507 $e2549 $e1105))
+(flet ($e2557 (not $e2023))
+(flet ($e2558 (not $e2530))
+(flet ($e2559 (or $e2526 $e1972))
+(flet ($e2560 (implies $e2095 $e2298))
+(flet ($e2561 (if_then_else $e2093 $e532 $e1905))
+(flet ($e2562 (and $e1638 $e2437))
+(flet ($e2563 (xor $e2123 $e2286))
+(flet ($e2564 (not $e1756))
+(flet ($e2565 (if_then_else $e1189 $e2066 $e2504))
+(flet ($e2566 (iff $e2036 $e676))
+(flet ($e2567 (implies $e1956 $e2527))
+(flet ($e2568 (iff $e2394 $e1531))
+(flet ($e2569 (if_then_else $e2372 $e2561 $e2493))
+(flet ($e2570 (and $e2127 $e2544))
+(flet ($e2571 (if_then_else $e2542 $e973 $e2339))
+(flet ($e2572 (iff $e197 $e2539))
+(flet ($e2573 (not $e113))
+(flet ($e2574 (not $e2272))
+(flet ($e2575 (not $e1400))
+(flet ($e2576 (xor $e662 $e1774))
+(flet ($e2577 (or $e2535 $e1184))
+(flet ($e2578 (xor $e2302 $e2376))
+(flet ($e2579 (or $e2541 $e2268))
+(flet ($e2580 (if_then_else $e1040 $e2545 $e1921))
+(flet ($e2581 (xor $e2413 $e2473))
+(flet ($e2582 (implies $e2147 $e2234))
+(flet ($e2583 (and $e541 $e1782))
+(flet ($e2584 (and $e2558 $e2245))
+(flet ($e2585 (and $e2584 $e2121))
+(flet ($e2586 (or $e91 $e1264))
+(flet ($e2587 (xor $e2382 $e1353))
+(flet ($e2588 (or $e2581 $e2429))
+(flet ($e2589 (implies $e1848 $e1789))
+(flet ($e2590 (and $e2565 $e2577))
+(flet ($e2591 (if_then_else $e613 $e2453 $e1643))
+(flet ($e2592 (implies $e2554 $e1631))
+(flet ($e2593 (or $e2386 $e2347))
+(flet ($e2594 (xor $e2370 $e1939))
+(flet ($e2595 (xor $e2487 $e546))
+(flet ($e2596 (implies $e2572 $e2420))
+(flet ($e2597 (and $e1617 $e2259))
+(flet ($e2598 (if_then_else $e2524 $e2578 $e2461))
+(flet ($e2599 (if_then_else $e2556 $e2325 $e2440))
+(flet ($e2600 (implies $e2212 $e1907))
+(flet ($e2601 (and $e1985 $e2594))
+(flet ($e2602 (implies $e1608 $e1996))
+(flet ($e2603 (xor $e2423 $e2361))
+(flet ($e2604 (and $e1668 $e2596))
+(flet ($e2605 (iff $e2593 $e2040))
+(flet ($e2606 (and $e2494 $e2332))
+(flet ($e2607 (and $e2477 $e2498))
+(flet ($e2608 (xor $e2474 $e2329))
+(flet ($e2609 (or $e2446 $e2435))
+(flet ($e2610 (iff $e2602 $e1045))
+(flet ($e2611 (not $e840))
+(flet ($e2612 (not $e2497))
+(flet ($e2613 (not $e2428))
+(flet ($e2614 (if_then_else $e2607 $e1971 $e2375))
+(flet ($e2615 (implies $e2605 $e938))
+(flet ($e2616 (and $e2403 $e2366))
+(flet ($e2617 (if_then_else $e872 $e2345 $e2000))
+(flet ($e2618 (or $e2410 $e1615))
+(flet ($e2619 (or $e1640 $e2569))
+(flet ($e2620 (not $e2342))
+(flet ($e2621 (if_then_else $e1301 $e2546 $e2441))
+(flet ($e2622 (or $e2537 $e2505))
+(flet ($e2623 (xor $e2472 $e2562))
+(flet ($e2624 (implies $e1252 $e2618))
+(flet ($e2625 (and $e2290 $e833))
+(flet ($e2626 (if_then_else $e2402 $e2334 $e2623))
+(flet ($e2627 (iff $e2373 $e2048))
+(flet ($e2628 (xor $e2533 $e2249))
+(flet ($e2629 (xor $e1469 $e2481))
+(flet ($e2630 (and $e2589 $e497))
+(flet ($e2631 (xor $e2573 $e1902))
+(flet ($e2632 (or $e1857 $e64))
+(flet ($e2633 (or $e2590 $e2482))
+(flet ($e2634 (xor $e2463 $e2543))
+(flet ($e2635 (iff $e2629 $e1980))
+(flet ($e2636 (iff $e2287 $e805))
+(flet ($e2637 (not $e2550))
+(flet ($e2638 (iff $e2400 $e2529))
+(flet ($e2639 (xor $e2391 $e2451))
+(flet ($e2640 (not $e1278))
+(flet ($e2641 (if_then_else $e2616 $e2583 $e2154))
+(flet ($e2642 (if_then_else $e2359 $e2208 $e2045))
+(flet ($e2643 (or $e2289 $e2620))
+(flet ($e2644 (iff $e1946 $e2471))
+(flet ($e2645 (iff $e2265 $e2627))
+(flet ($e2646 (and $e2434 $e2254))
+(flet ($e2647 (if_then_else $e2547 $e2540 $e2369))
+(flet ($e2648 (not $e821))
+(flet ($e2649 (xor $e2574 $e887))
+(flet ($e2650 (iff $e2632 $e2648))
+(flet ($e2651 (iff $e2054 $e55))
+(flet ($e2652 (or $e2538 $e2531))
+(flet ($e2653 (xor $e2204 $e2274))
+(flet ($e2654 (if_then_else $e2503 $e2626 $e2378))
+(flet ($e2655 (if_then_else $e2567 $e2519 $e1850))
+(flet ($e2656 (iff $e2522 $e2388))
+(flet ($e2657 (if_then_else $e2422 $e2513 $e2653))
+(flet ($e2658 (if_then_else $e465 $e2646 $e637))
+(flet ($e2659 (or $e462 $e2604))
+(flet ($e2660 (implies $e2651 $e2532))
+(flet ($e2661 (iff $e2579 $e1943))
+(flet ($e2662 (or $e2580 $e2412))
+(flet ($e2663 (implies $e873 $e2625))
+(flet ($e2664 (iff $e2511 $e1675))
+(flet ($e2665 (if_then_else $e2111 $e2418 $e2570))
+(flet ($e2666 (or $e2640 $e2552))
+(flet ($e2667 (not $e2613))
+(flet ($e2668 (or $e2611 $e111))
+(flet ($e2669 (and $e2657 $e2480))
+(flet ($e2670 (and $e1598 $e519))
+(flet ($e2671 (implies $e1938 $e1991))
+(flet ($e2672 (xor $e2499 $e2667))
+(flet ($e2673 (if_then_else $e848 $e2609 $e2659))
+(flet ($e2674 (implies $e2557 $e2621))
+(flet ($e2675 (iff $e1529 $e2617))
+(flet ($e2676 (or $e2236 $e2238))
+(flet ($e2677 (iff $e2559 $e2444))
+(flet ($e2678 (not $e2615))
+(flet ($e2679 (if_then_else $e2469 $e2619 $e1417))
+(flet ($e2680 (or $e2190 $e2520))
+(flet ($e2681 (xor $e2405 $e744))
+(flet ($e2682 (or $e2681 $e2663))
+(flet ($e2683 (if_then_else $e2523 $e1680 $e2182))
+(flet ($e2684 (and $e1995 $e2606))
+(flet ($e2685 (iff $e2612 $e2571))
+(flet ($e2686 (iff $e2518 $e2465))
+(flet ($e2687 (or $e2586 $e2603))
+(flet ($e2688 (if_then_else $e608 $e2675 $e2456))
+(flet ($e2689 (not $e1499))
+(flet ($e2690 (or $e2464 $e2652))
+(flet ($e2691 (implies $e1525 $e2647))
+(flet ($e2692 (and $e1549 $e2515))
+(flet ($e2693 (and $e2592 $e1331))
+(flet ($e2694 (xor $e2643 $e1755))
+(flet ($e2695 (iff $e2575 $e2159))
+(flet ($e2696 (if_then_else $e1342 $e2431 $e2553))
+(flet ($e2697 (xor $e2678 $e2352))
+(flet ($e2698 (or $e2682 $e1924))
+(flet ($e2699 (or $e2693 $e2676))
+(flet ($e2700 (not $e2568))
+(flet ($e2701 (xor $e2133 $e2679))
+(flet ($e2702 (xor $e2445 $e2669))
+(flet ($e2703 (and $e2680 $e1723))
+(flet ($e2704 (or $e1653 $e2271))
+(flet ($e2705 (if_then_else $e2694 $e2658 $e2688))
+(flet ($e2706 (iff $e2468 $e2595))
+(flet ($e2707 (and $e2379 $e2622))
+(flet ($e2708 (xor $e2343 $e2476))
+(flet ($e2709 (iff $e2665 $e2599))
+(flet ($e2710 (and $e2346 $e2703))
+(flet ($e2711 (or $e2666 $e2534))
+(flet ($e2712 (xor $e2421 $e2683))
+(flet ($e2713 (iff $e2635 $e2673))
+(flet ($e2714 (not $e2702))
+(flet ($e2715 (not $e2662))
+(flet ($e2716 (if_then_else $e1286 $e2512 $e2194))
+(flet ($e2717 (iff $e2349 $e2685))
+(flet ($e2718 (not $e990))
+(flet ($e2719 (not $e2161))
+(flet ($e2720 (or $e2687 $e2690))
+(flet ($e2721 (not $e2022))
+(flet ($e2722 (xor $e2598 $e2654))
+(flet ($e2723 (and $e2692 $e950))
+(flet ($e2724 (xor $e2668 $e2381))
+(flet ($e2725 (and $e2716 $e2689))
+(flet ($e2726 (not $e2175))
+(flet ($e2727 (implies $e2698 $e2173))
+(flet ($e2728 (and $e2495 $e2636))
+(flet ($e2729 (implies $e2660 $e2409))
+(flet ($e2730 (iff $e2555 $e2642))
+(flet ($e2731 (and $e464 $e2588))
+(flet ($e2732 (and $e2484 $e2686))
+(flet ($e2733 (if_then_else $e2276 $e2720 $e2199))
+(flet ($e2734 (or $e2728 $e2715))
+(flet ($e2735 (if_then_else $e2186 $e1878 $e2597))
+(flet ($e2736 (xor $e2712 $e2723))
+(flet ($e2737 (iff $e1903 $e2711))
+(flet ($e2738 (if_then_else $e2732 $e2624 $e2628))
+(flet ($e2739 (implies $e2705 $e2641))
+(flet ($e2740 (not $e2713))
+(flet ($e2741 (and $e2587 $e2214))
+(flet ($e2742 (not $e2737))
+(flet ($e2743 (implies $e2638 $e2725))
+(flet ($e2744 (and $e956 $e2509))
+(flet ($e2745 (if_then_else $e2564 $e2655 $e2528))
+(flet ($e2746 (implies $e2710 $e2731))
+(flet ($e2747 (implies $e2741 $e2691))
+(flet ($e2748 (or $e2738 $e2672))
+(flet ($e2749 (iff $e2475 $e2614))
+(flet ($e2750 (xor $e2644 $e2591))
+(flet ($e2751 (iff $e2449 $e2722))
+(flet ($e2752 (or $e2455 $e2516))
+(flet ($e2753 (and $e700 $e2501))
+(flet ($e2754 (implies $e2727 $e2200))
+(flet ($e2755 (or $e2677 $e2714))
+(flet ($e2756 (or $e2749 $e2634))
+(flet ($e2757 (iff $e2718 $e2176))
+(flet ($e2758 (iff $e2743 $e2354))
+(flet ($e2759 (and $e2757 $e2717))
+(flet ($e2760 (if_then_else $e2735 $e2363 $e2536))
+(flet ($e2761 (not $e1380))
+(flet ($e2762 (iff $e2700 $e2708))
+(flet ($e2763 (or $e2585 $e1489))
+(flet ($e2764 (and $e2608 $e2704))
+(flet ($e2765 (or $e2748 $e2601))
+(flet ($e2766 (and $e1314 $e2600))
+(flet ($e2767 (not $e2750))
+(flet ($e2768 (not $e2706))
+(flet ($e2769 (and $e2560 $e2758))
+(flet ($e2770 (if_then_else $e2721 $e2671 $e2724))
+(flet ($e2771 (and $e2756 $e2709))
+(flet ($e2772 (iff $e2502 $e2656))
+(flet ($e2773 (and $e2631 $e2719))
+(flet ($e2774 (not $e2753))
+(flet ($e2775 (if_then_else $e2726 $e2639 $e2707))
+(flet ($e2776 (not $e2754))
+(flet ($e2777 (if_then_else $e2701 $e2645 $e2684))
+(flet ($e2778 (implies $e857 $e2576))
+(flet ($e2779 (or $e2768 $e2772))
+(flet ($e2780 (or $e2767 $e518))
+(flet ($e2781 (not $e2751))
+(flet ($e2782 (xor $e2775 $e2781))
+(flet ($e2783 (not $e2770))
+(flet ($e2784 (and $e2730 $e2729))
+(flet ($e2785 (implies $e2633 $e2637))
+(flet ($e2786 (if_then_else $e2275 $e2766 $e2697))
+(flet ($e2787 (or $e2630 $e2780))
+(flet ($e2788 (xor $e2650 $e2779))
+(flet ($e2789 (xor $e2786 $e2733))
+(flet ($e2790 (implies $e2769 $e2783))
+(flet ($e2791 (implies $e2740 $e2610))
+(flet ($e2792 (implies $e2670 $e2649))
+(flet ($e2793 (if_then_else $e2736 $e2582 $e2788))
+(flet ($e2794 (implies $e2755 $e2752))
+(flet ($e2795 (or $e2763 $e2774))
+(flet ($e2796 (implies $e2773 $e2776))
+(flet ($e2797 (not $e2699))
+(flet ($e2798 (not $e2695))
+(flet ($e2799 (xor $e2508 $e2764))
+(flet ($e2800 (and $e2798 $e2778))
+(flet ($e2801 (if_then_else $e2796 $e2797 $e2696))
+(flet ($e2802 (iff $e2790 $e2762))
+(flet ($e2803 (or $e1098 $e2742))
+(flet ($e2804 (implies $e2563 $e2793))
+(flet ($e2805 (implies $e2799 $e2785))
+(flet ($e2806 (not $e2761))
+(flet ($e2807 (if_then_else $e2804 $e2801 $e2806))
+(flet ($e2808 (or $e2746 $e2782))
+(flet ($e2809 (and $e2794 $e2777))
+(flet ($e2810 (and $e2661 $e2566))
+(flet ($e2811 (or $e2805 $e2810))
+(flet ($e2812 (and $e2789 $e2789))
+(flet ($e2813 (and $e2739 $e2803))
+(flet ($e2814 (not $e2747))
+(flet ($e2815 (and $e2734 $e2759))
+(flet ($e2816 (and $e2664 $e2812))
+(flet ($e2817 (or $e2795 $e2760))
+(flet ($e2818 (not $e2744))
+(flet ($e2819 (implies $e2816 $e2816))
+(flet ($e2820 (not $e2811))
+(flet ($e2821 (xor $e2813 $e2802))
+(flet ($e2822 (not $e2815))
+(flet ($e2823 (and $e2817 $e2784))
+(flet ($e2824 (if_then_else $e2809 $e2819 $e2800))
+(flet ($e2825 (implies $e2808 $e2808))
+(flet ($e2826 (xor $e2824 $e2791))
+(flet ($e2827 (implies $e2825 $e2818))
+(flet ($e2828 (and $e2765 $e2787))
+(flet ($e2829 (implies $e2822 $e2828))
+(flet ($e2830 (or $e2674 $e2814))
+(flet ($e2831 (xor $e2826 $e2792))
+(flet ($e2832 (if_then_else $e2807 $e2820 $e2821))
+(flet ($e2833 (xor $e2832 $e2827))
+(flet ($e2834 (iff $e2745 $e2831))
+(flet ($e2835 (implies $e2830 $e2823))
+(flet ($e2836 (or $e2829 $e2829))
+(flet ($e2837 (implies $e2834 $e2833))
+(flet ($e2838 (and $e2835 $e2837))
+(flet ($e2839 (implies $e2771 $e2836))
+(flet ($e2840 (not $e2838))
+(flet ($e2841 (or $e2839 $e2840))
+$e2841
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) [...]
+
diff --git a/test/regress/regress3/incorrect2.smt b/test/regress/regress3/incorrect2.smt
new file mode 100644
index 0000000..23425d4
--- /dev/null
+++ b/test/regress/regress3/incorrect2.smt
@@ -0,0 +1,2852 @@
+(benchmark fuzzsmt
+:logic QF_UFLRA
+:status sat
+:extrafuns ((f0 Real Real Real))
+:extrafuns ((f1 Real Real Real))
+:extrapreds ((p0 Real Real))
+:extrafuns ((v0 Real))
+:formula
+(let (?e1 6)
+(let (?e2 1)
+(let (?e3 7)
+(let (?e4 (f1 v0 v0))
+(let (?e5 (* ?e1 v0))
+(let (?e6 (/ ?e1 (~ ?e1)))
+(let (?e7 (/ ?e3 (~ ?e1)))
+(let (?e8 (* ?e5 ?e3))
+(let (?e9 (ite (p0 ?e6 ?e7) 1 0))
+(let (?e10 (+ ?e7 ?e5))
+(let (?e11 (/ ?e1 ?e1))
+(let (?e12 (+ ?e6 ?e9))
+(let (?e13 (+ ?e12 ?e4))
+(let (?e14 (/ ?e2 ?e1))
+(let (?e15 (~ ?e10))
+(let (?e16 (~ ?e9))
+(let (?e17 (/ ?e1 (~ ?e2)))
+(let (?e18 (+ ?e7 v0))
+(let (?e19 (+ ?e7 ?e18))
+(let (?e20 (- ?e7 ?e4))
+(let (?e21 (+ ?e12 ?e12))
+(let (?e22 (/ ?e3 ?e1))
+(let (?e23 (~ ?e7))
+(let (?e24 (f1 ?e17 ?e16))
+(let (?e25 (- ?e14 ?e19))
+(let (?e26 (/ ?e2 (~ ?e1)))
+(let (?e27 (/ ?e1 ?e1))
+(let (?e28 (* ?e1 ?e27))
+(let (?e29 (~ ?e23))
+(let (?e30 (* ?e1 ?e23))
+(let (?e31 (~ ?e30))
+(let (?e32 (+ ?e13 ?e27))
+(let (?e33 (/ ?e1 (~ ?e1)))
+(let (?e34 (ite (p0 ?e5 ?e31) 1 0))
+(let (?e35 (* (~ ?e2) ?e9))
+(let (?e36 (/ ?e2 ?e2))
+(let (?e37 (+ ?e5 ?e22))
+(let (?e38 (ite (p0 ?e22 ?e20) 1 0))
+(let (?e39 (* (~ ?e1) ?e21))
+(let (?e40 (- ?e5 ?e29))
+(let (?e41 (- ?e36 v0))
+(let (?e42 (~ ?e14))
+(let (?e43 (/ ?e1 (~ ?e3)))
+(let (?e44 (- ?e11 ?e5))
+(let (?e45 (ite (p0 ?e31 ?e15) 1 0))
+(let (?e46 (+ ?e12 ?e36))
+(let (?e47 (* ?e1 ?e27))
+(let (?e48 (~ v0))
+(let (?e49 (f0 ?e48 ?e35))
+(flet ($e50 (> ?e9 ?e17))
+(flet ($e51 (>= ?e35 ?e38))
+(flet ($e52 (> ?e48 ?e20))
+(flet ($e53 (distinct ?e6 ?e33))
+(flet ($e54 (= ?e19 ?e8))
+(flet ($e55 (p0 v0 ?e5))
+(flet ($e56 (> ?e11 ?e6))
+(flet ($e57 (= ?e17 ?e45))
+(flet ($e58 (>= ?e33 ?e41))
+(flet ($e59 (= ?e34 ?e49))
+(flet ($e60 (>= ?e22 ?e21))
+(flet ($e61 (> ?e30 ?e11))
+(flet ($e62 (= ?e8 ?e24))
+(flet ($e63 (distinct ?e40 ?e19))
+(flet ($e64 (p0 ?e43 ?e49))
+(flet ($e65 (<= ?e23 ?e19))
+(flet ($e66 (p0 ?e45 ?e22))
+(flet ($e67 (distinct ?e49 ?e30))
+(flet ($e68 (>= ?e26 ?e13))
+(flet ($e69 (>= ?e5 ?e40))
+(flet ($e70 (distinct ?e16 ?e10))
+(flet ($e71 (< ?e43 ?e6))
+(flet ($e72 (<= ?e12 ?e15))
+(flet ($e73 (>= ?e6 ?e15))
+(flet ($e74 (= ?e31 ?e43))
+(flet ($e75 (distinct ?e46 ?e24))
+(flet ($e76 (p0 ?e4 ?e26))
+(flet ($e77 (>= ?e48 ?e26))
+(flet ($e78 (> ?e26 ?e24))
+(flet ($e79 (distinct v0 ?e6))
+(flet ($e80 (> ?e12 ?e44))
+(flet ($e81 (< ?e47 ?e35))
+(flet ($e82 (<= ?e36 ?e8))
+(flet ($e83 (>= ?e36 ?e28))
+(flet ($e84 (<= ?e25 ?e37))
+(flet ($e85 (<= ?e34 ?e6))
+(flet ($e86 (distinct ?e46 ?e19))
+(flet ($e87 (> ?e32 ?e30))
+(flet ($e88 (>= ?e49 ?e18))
+(flet ($e89 (distinct v0 ?e33))
+(flet ($e90 (< ?e38 ?e45))
+(flet ($e91 (distinct ?e45 ?e19))
+(flet ($e92 (distinct ?e8 ?e34))
+(flet ($e93 (distinct ?e42 ?e27))
+(flet ($e94 (distinct ?e38 ?e33))
+(flet ($e95 (= ?e30 ?e25))
+(flet ($e96 (> ?e24 ?e29))
+(flet ($e97 (distinct ?e25 ?e30))
+(flet ($e98 (<= ?e9 ?e15))
+(flet ($e99 (= ?e44 ?e15))
+(flet ($e100 (>= ?e34 ?e8))
+(flet ($e101 (>= ?e30 ?e38))
+(flet ($e102 (= ?e37 ?e49))
+(flet ($e103 (<= v0 ?e38))
+(flet ($e104 (= ?e34 ?e47))
+(flet ($e105 (p0 ?e20 ?e22))
+(flet ($e106 (p0 ?e46 ?e28))
+(flet ($e107 (distinct ?e24 ?e33))
+(flet ($e108 (< ?e32 ?e12))
+(flet ($e109 (> ?e7 ?e31))
+(flet ($e110 (= v0 ?e13))
+(flet ($e111 (> ?e22 ?e32))
+(flet ($e112 (>= ?e36 ?e27))
+(flet ($e113 (> ?e31 ?e36))
+(flet ($e114 (<= ?e4 ?e5))
+(flet ($e115 (distinct ?e13 ?e4))
+(flet ($e116 (<= v0 ?e21))
+(flet ($e117 (p0 ?e31 ?e23))
+(flet ($e118 (< ?e26 ?e18))
+(flet ($e119 (<= ?e42 ?e47))
+(flet ($e120 (< ?e10 ?e24))
+(flet ($e121 (> ?e12 ?e20))
+(flet ($e122 (= ?e31 ?e31))
+(flet ($e123 (distinct ?e37 ?e7))
+(flet ($e124 (p0 ?e48 ?e30))
+(flet ($e125 (distinct ?e6 ?e34))
+(flet ($e126 (> ?e9 ?e21))
+(flet ($e127 (> ?e12 ?e27))
+(flet ($e128 (distinct ?e11 ?e16))
+(flet ($e129 (= ?e25 ?e48))
+(flet ($e130 (p0 ?e22 ?e22))
+(flet ($e131 (<= ?e32 ?e8))
+(flet ($e132 (>= ?e10 ?e21))
+(flet ($e133 (= ?e47 ?e16))
+(flet ($e134 (> ?e21 ?e28))
+(flet ($e135 (< ?e30 ?e17))
+(flet ($e136 (p0 v0 ?e5))
+(flet ($e137 (> ?e10 ?e25))
+(flet ($e138 (<= ?e43 ?e39))
+(flet ($e139 (> ?e4 ?e11))
+(flet ($e140 (= ?e24 ?e32))
+(flet ($e141 (< ?e44 ?e33))
+(flet ($e142 (>= ?e17 ?e22))
+(flet ($e143 (< ?e23 ?e28))
+(flet ($e144 (< ?e9 ?e44))
+(flet ($e145 (>= ?e19 ?e42))
+(flet ($e146 (= ?e18 ?e21))
+(flet ($e147 (p0 ?e45 ?e15))
+(flet ($e148 (> ?e23 ?e19))
+(flet ($e149 (= ?e24 ?e16))
+(flet ($e150 (< ?e7 ?e39))
+(flet ($e151 (>= ?e9 ?e11))
+(flet ($e152 (<= ?e45 ?e31))
+(flet ($e153 (<= ?e18 ?e42))
+(flet ($e154 (< ?e7 ?e21))
+(flet ($e155 (p0 ?e12 ?e42))
+(flet ($e156 (< ?e32 ?e36))
+(flet ($e157 (p0 ?e30 ?e13))
+(flet ($e158 (= ?e33 ?e45))
+(flet ($e159 (= ?e26 ?e19))
+(flet ($e160 (>= ?e17 ?e45))
+(flet ($e161 (> ?e9 ?e7))
+(flet ($e162 (<= ?e45 ?e12))
+(flet ($e163 (distinct ?e24 ?e32))
+(flet ($e164 (p0 ?e12 ?e4))
+(flet ($e165 (> ?e35 ?e30))
+(flet ($e166 (distinct ?e45 ?e18))
+(flet ($e167 (< ?e29 ?e22))
+(flet ($e168 (distinct ?e17 ?e38))
+(flet ($e169 (> ?e16 ?e36))
+(flet ($e170 (< ?e17 ?e38))
+(flet ($e171 (>= ?e39 ?e20))
+(flet ($e172 (distinct ?e46 ?e36))
+(flet ($e173 (p0 ?e9 ?e16))
+(flet ($e174 (= ?e24 ?e4))
+(flet ($e175 (p0 ?e9 ?e7))
+(flet ($e176 (>= ?e44 ?e49))
+(flet ($e177 (> ?e38 ?e27))
+(flet ($e178 (p0 ?e8 ?e12))
+(flet ($e179 (p0 ?e26 ?e8))
+(flet ($e180 (<= ?e26 ?e23))
+(flet ($e181 (distinct ?e34 ?e18))
+(flet ($e182 (>= ?e22 ?e48))
+(flet ($e183 (= ?e48 ?e6))
+(flet ($e184 (>= ?e39 ?e27))
+(flet ($e185 (< ?e37 ?e12))
+(flet ($e186 (>= ?e35 ?e15))
+(flet ($e187 (>= ?e8 ?e15))
+(flet ($e188 (<= ?e43 ?e30))
+(flet ($e189 (= ?e21 ?e12))
+(flet ($e190 (< ?e34 ?e41))
+(flet ($e191 (>= ?e39 ?e6))
+(flet ($e192 (<= ?e24 ?e40))
+(flet ($e193 (> ?e7 ?e5))
+(flet ($e194 (= ?e28 ?e25))
+(flet ($e195 (p0 ?e30 ?e16))
+(flet ($e196 (> ?e49 ?e41))
+(flet ($e197 (< ?e41 ?e44))
+(flet ($e198 (p0 v0 ?e26))
+(flet ($e199 (<= ?e46 ?e20))
+(flet ($e200 (= ?e46 ?e27))
+(flet ($e201 (>= ?e28 ?e4))
+(flet ($e202 (p0 ?e40 ?e45))
+(flet ($e203 (< ?e26 ?e5))
+(flet ($e204 (>= ?e44 ?e15))
+(flet ($e205 (= ?e26 ?e22))
+(flet ($e206 (<= ?e46 ?e9))
+(flet ($e207 (p0 ?e10 ?e37))
+(flet ($e208 (p0 ?e32 ?e13))
+(flet ($e209 (< ?e31 ?e29))
+(flet ($e210 (= ?e46 ?e9))
+(flet ($e211 (= ?e40 ?e14))
+(let (?e212 (ite $e170 ?e13 ?e6))
+(let (?e213 (ite $e55 ?e22 ?e29))
+(let (?e214 (ite $e169 ?e24 ?e31))
+(let (?e215 (ite $e70 ?e24 ?e42))
+(let (?e216 (ite $e86 ?e7 ?e39))
+(let (?e217 (ite $e155 ?e47 ?e14))
+(let (?e218 (ite $e53 ?e11 ?e34))
+(let (?e219 (ite $e124 ?e213 ?e24))
+(let (?e220 (ite $e211 ?e42 ?e28))
+(let (?e221 (ite $e84 ?e8 ?e16))
+(let (?e222 (ite $e78 ?e32 v0))
+(let (?e223 (ite $e153 ?e20 ?e40))
+(let (?e224 (ite $e59 ?e5 ?e13))
+(let (?e225 (ite $e110 ?e38 ?e221))
+(let (?e226 (ite $e82 ?e49 ?e31))
+(let (?e227 (ite $e169 ?e37 ?e49))
+(let (?e228 (ite $e163 ?e28 ?e224))
+(let (?e229 (ite $e192 ?e48 ?e218))
+(let (?e230 (ite $e56 ?e21 ?e227))
+(let (?e231 (ite $e130 ?e19 ?e40))
+(let (?e232 (ite $e140 ?e20 v0))
+(let (?e233 (ite $e144 ?e14 ?e232))
+(let (?e234 (ite $e88 ?e226 ?e223))
+(let (?e235 (ite $e69 ?e36 ?e31))
+(let (?e236 (ite $e204 ?e45 ?e24))
+(let (?e237 (ite $e102 ?e234 ?e28))
+(let (?e238 (ite $e208 ?e4 ?e224))
+(let (?e239 (ite $e137 ?e44 ?e9))
+(let (?e240 (ite $e187 ?e18 ?e35))
+(let (?e241 (ite $e154 ?e44 ?e4))
+(let (?e242 (ite $e176 ?e30 ?e37))
+(let (?e243 (ite $e106 ?e17 ?e16))
+(let (?e244 (ite $e100 ?e20 ?e226))
+(let (?e245 (ite $e118 ?e49 ?e4))
+(let (?e246 (ite $e109 ?e23 ?e229))
+(let (?e247 (ite $e105 ?e15 ?e36))
+(let (?e248 (ite $e138 ?e229 ?e26))
+(let (?e249 (ite $e50 ?e45 ?e10))
+(let (?e250 (ite $e141 v0 ?e228))
+(let (?e251 (ite $e144 ?e21 ?e46))
+(let (?e252 (ite $e154 ?e15 ?e13))
+(let (?e253 (ite $e175 ?e34 ?e29))
+(let (?e254 (ite $e201 ?e42 ?e5))
+(let (?e255 (ite $e139 ?e27 ?e35))
+(let (?e256 (ite $e158 ?e43 ?e214))
+(let (?e257 (ite $e147 ?e213 ?e31))
+(let (?e258 (ite $e178 ?e33 ?e48))
+(let (?e259 (ite $e73 ?e25 ?e8))
+(let (?e260 (ite $e103 ?e41 ?e249))
+(let (?e261 (ite $e86 ?e226 ?e44))
+(let (?e262 (ite $e119 ?e36 ?e26))
+(let (?e263 (ite $e96 ?e226 ?e256))
+(let (?e264 (ite $e115 ?e12 ?e37))
+(let (?e265 (ite $e55 ?e35 ?e8))
+(let (?e266 (ite $e62 ?e30 ?e11))
+(let (?e267 (ite $e75 ?e5 v0))
+(let (?e268 (ite $e95 ?e238 ?e214))
+(let (?e269 (ite $e196 ?e234 ?e224))
+(let (?e270 (ite $e57 ?e31 ?e29))
+(let (?e271 (ite $e129 ?e29 ?e268))
+(let (?e272 (ite $e160 ?e225 ?e40))
+(let (?e273 (ite $e183 ?e250 ?e13))
+(let (?e274 (ite $e119 ?e263 ?e238))
+(let (?e275 (ite $e153 ?e231 ?e36))
+(let (?e276 (ite $e83 ?e268 ?e26))
+(let (?e277 (ite $e158 ?e260 ?e37))
+(let (?e278 (ite $e68 ?e252 ?e260))
+(let (?e279 (ite $e123 ?e25 ?e267))
+(let (?e280 (ite $e183 ?e248 ?e44))
+(let (?e281 (ite $e118 ?e248 ?e23))
+(let (?e282 (ite $e137 ?e39 ?e258))
+(let (?e283 (ite $e117 ?e7 ?e18))
+(let (?e284 (ite $e193 ?e215 ?e240))
+(let (?e285 (ite $e155 ?e249 ?e228))
+(let (?e286 (ite $e54 ?e256 ?e34))
+(let (?e287 (ite $e177 ?e255 ?e8))
+(let (?e288 (ite $e64 ?e32 ?e255))
+(let (?e289 (ite $e152 ?e44 ?e271))
+(let (?e290 (ite $e121 ?e21 ?e212))
+(let (?e291 (ite $e127 ?e40 ?e281))
+(let (?e292 (ite $e198 ?e219 ?e4))
+(let (?e293 (ite $e181 ?e274 ?e240))
+(let (?e294 (ite $e85 ?e39 ?e230))
+(let (?e295 (ite $e201 ?e230 ?e36))
+(let (?e296 (ite $e58 ?e14 ?e248))
+(let (?e297 (ite $e126 ?e231 ?e279))
+(let (?e298 (ite $e128 ?e276 ?e33))
+(let (?e299 (ite $e61 ?e288 ?e34))
+(let (?e300 (ite $e116 ?e231 ?e233))
+(let (?e301 (ite $e60 ?e268 ?e10))
+(let (?e302 (ite $e184 ?e239 ?e291))
+(let (?e303 (ite $e88 ?e11 ?e271))
+(let (?e304 (ite $e134 ?e296 ?e20))
+(let (?e305 (ite $e165 ?e268 ?e243))
+(let (?e306 (ite $e123 ?e266 ?e42))
+(let (?e307 (ite $e79 ?e27 ?e263))
+(let (?e308 (ite $e126 ?e213 ?e42))
+(let (?e309 (ite $e58 ?e272 ?e246))
+(let (?e310 (ite $e192 ?e290 ?e227))
+(let (?e311 (ite $e145 ?e7 ?e40))
+(let (?e312 (ite $e71 ?e231 ?e12))
+(let (?e313 (ite $e93 ?e38 ?e302))
+(let (?e314 (ite $e185 ?e255 ?e233))
+(let (?e315 (ite $e164 ?e303 ?e257))
+(let (?e316 (ite $e61 ?e266 ?e305))
+(let (?e317 (ite $e65 ?e289 ?e300))
+(let (?e318 (ite $e191 ?e216 ?e317))
+(let (?e319 (ite $e167 ?e16 ?e212))
+(let (?e320 (ite $e188 ?e272 ?e221))
+(let (?e321 (ite $e197 ?e310 ?e222))
+(let (?e322 (ite $e182 ?e41 ?e262))
+(let (?e323 (ite $e52 ?e275 ?e320))
+(let (?e324 (ite $e92 ?e21 ?e39))
+(let (?e325 (ite $e77 ?e323 ?e321))
+(let (?e326 (ite $e202 ?e302 ?e315))
+(let (?e327 (ite $e99 ?e317 ?e231))
+(let (?e328 (ite $e159 ?e267 ?e272))
+(let (?e329 (ite $e174 ?e295 ?e258))
+(let (?e330 (ite $e148 ?e307 ?e295))
+(let (?e331 (ite $e195 ?e217 ?e315))
+(let (?e332 (ite $e98 ?e240 ?e301))
+(let (?e333 (ite $e81 ?e33 ?e213))
+(let (?e334 (ite $e196 ?e13 ?e250))
+(let (?e335 (ite $e113 ?e16 ?e276))
+(let (?e336 (ite $e149 ?e311 ?e46))
+(let (?e337 (ite $e60 ?e18 ?e235))
+(let (?e338 (ite $e189 ?e4 ?e4))
+(let (?e339 (ite $e97 ?e27 ?e278))
+(let (?e340 (ite $e168 ?e294 ?e327))
+(let (?e341 (ite $e194 ?e8 ?e311))
+(let (?e342 (ite $e162 ?e308 ?e310))
+(let (?e343 (ite $e205 ?e258 ?e13))
+(let (?e344 (ite $e66 ?e323 ?e309))
+(let (?e345 (ite $e77 ?e295 ?e46))
+(let (?e346 (ite $e179 ?e259 ?e340))
+(let (?e347 (ite $e157 ?e325 ?e312))
+(let (?e348 (ite $e184 ?e259 ?e32))
+(let (?e349 (ite $e156 ?e14 ?e347))
+(let (?e350 (ite $e90 ?e290 ?e255))
+(let (?e351 (ite $e199 ?e313 ?e16))
+(let (?e352 (ite $e180 ?e35 ?e220))
+(let (?e353 (ite $e184 ?e214 ?e42))
+(let (?e354 (ite $e190 ?e285 ?e352))
+(let (?e355 (ite $e132 ?e226 ?e254))
+(let (?e356 (ite $e171 ?e220 ?e275))
+(let (?e357 (ite $e78 ?e218 ?e339))
+(let (?e358 (ite $e142 ?e278 ?e335))
+(let (?e359 (ite $e83 ?e261 ?e49))
+(let (?e360 (ite $e89 ?e270 ?e293))
+(let (?e361 (ite $e143 ?e318 ?e10))
+(let (?e362 (ite $e133 ?e250 ?e307))
+(let (?e363 (ite $e58 ?e36 ?e296))
+(let (?e364 (ite $e62 ?e344 ?e43))
+(let (?e365 (ite $e149 ?e324 ?e263))
+(let (?e366 (ite $e187 ?e263 ?e281))
+(let (?e367 (ite $e122 ?e37 ?e256))
+(let (?e368 (ite $e156 ?e263 ?e259))
+(let (?e369 (ite $e104 ?e258 ?e219))
+(let (?e370 (ite $e102 ?e355 ?e270))
+(let (?e371 (ite $e123 ?e313 ?e345))
+(let (?e372 (ite $e206 ?e16 ?e273))
+(let (?e373 (ite $e203 ?e358 ?e29))
+(let (?e374 (ite $e209 ?e6 ?e325))
+(let (?e375 (ite $e114 ?e342 ?e236))
+(let (?e376 (ite $e125 ?e213 ?e292))
+(let (?e377 (ite $e95 ?e253 ?e363))
+(let (?e378 (ite $e107 ?e228 ?e377))
+(let (?e379 (ite $e74 ?e292 ?e335))
+(let (?e380 (ite $e98 ?e293 ?e352))
+(let (?e381 (ite $e60 ?e347 ?e309))
+(let (?e382 (ite $e210 ?e220 ?e265))
+(let (?e383 (ite $e52 ?e288 ?e266))
+(let (?e384 (ite $e116 ?e10 ?e311))
+(let (?e385 (ite $e69 ?e271 ?e13))
+(let (?e386 (ite $e186 ?e333 ?e256))
+(let (?e387 (ite $e139 ?e295 ?e305))
+(let (?e388 (ite $e59 ?e387 ?e325))
+(let (?e389 (ite $e67 ?e325 ?e358))
+(let (?e390 (ite $e179 ?e368 ?e344))
+(let (?e391 (ite $e142 ?e217 ?e31))
+(let (?e392 (ite $e108 ?e8 ?e18))
+(let (?e393 (ite $e91 ?e379 ?e281))
+(let (?e394 (ite $e137 ?e17 ?e237))
+(let (?e395 (ite $e72 ?e227 ?e315))
+(let (?e396 (ite $e70 ?e36 ?e260))
+(let (?e397 (ite $e208 ?e330 ?e359))
+(let (?e398 (ite $e115 ?e348 ?e42))
+(let (?e399 (ite $e146 ?e339 ?e22))
+(let (?e400 (ite $e172 ?e338 ?e24))
+(let (?e401 (ite $e151 ?e333 ?e359))
+(let (?e402 (ite $e116 ?e231 ?e30))
+(let (?e403 (ite $e62 ?e311 ?e216))
+(let (?e404 (ite $e171 ?e386 ?e265))
+(let (?e405 (ite $e58 ?e39 ?e369))
+(let (?e406 (ite $e112 ?e341 ?e355))
+(let (?e407 (ite $e166 ?e7 ?e270))
+(let (?e408 (ite $e76 ?e297 ?e293))
+(let (?e409 (ite $e146 ?e378 ?e33))
+(let (?e410 (ite $e120 ?e12 ?e261))
+(let (?e411 (ite $e161 ?e237 ?e290))
+(let (?e412 (ite $e123 ?e256 ?e222))
+(let (?e413 (ite $e80 ?e365 ?e303))
+(let (?e414 (ite $e94 ?e394 ?e351))
+(let (?e415 (ite $e136 ?e227 ?e233))
+(let (?e416 (ite $e193 ?e226 ?e408))
+(let (?e417 (ite $e103 ?e9 ?e376))
+(let (?e418 (ite $e162 ?e403 ?e415))
+(let (?e419 (ite $e87 ?e286 ?e260))
+(let (?e420 (ite $e207 ?e332 ?e304))
+(let (?e421 (ite $e135 ?e35 ?e268))
+(let (?e422 (ite $e178 ?e395 ?e329))
+(let (?e423 (ite $e198 ?e397 ?e215))
+(let (?e424 (ite $e198 ?e221 ?e45))
+(let (?e425 (ite $e172 ?e43 ?e212))
+(let (?e426 (ite $e131 ?e298 ?e422))
+(let (?e427 (ite $e188 ?e212 ?e416))
+(let (?e428 (ite $e200 ?e352 ?e357))
+(let (?e429 (ite $e150 ?e385 ?e288))
+(let (?e430 (ite $e143 ?e227 ?e214))
+(let (?e431 (ite $e118 ?e29 ?e381))
+(let (?e432 (ite $e102 ?e376 ?e247))
+(let (?e433 (ite $e51 ?e395 ?e270))
+(let (?e434 (ite $e111 ?e304 ?e28))
+(let (?e435 (ite $e63 ?e28 ?e224))
+(let (?e436 (ite $e134 ?e257 ?e33))
+(let (?e437 (ite $e81 ?e247 ?e385))
+(let (?e438 (ite $e101 ?e377 ?e349))
+(let (?e439 (ite $e173 ?e405 ?e342))
+(flet ($e440 (<= ?e34 ?e271))
+(flet ($e441 (= ?e6 ?e23))
+(flet ($e442 (p0 ?e292 ?e370))
+(flet ($e443 (= ?e298 ?e229))
+(flet ($e444 (>= ?e395 ?e280))
+(flet ($e445 (p0 ?e239 ?e343))
+(flet ($e446 (= ?e257 ?e386))
+(flet ($e447 (= ?e14 ?e433))
+(flet ($e448 (= ?e305 ?e240))
+(flet ($e449 (> ?e355 ?e260))
+(flet ($e450 (< ?e315 ?e326))
+(flet ($e451 (p0 ?e423 ?e218))
+(flet ($e452 (p0 ?e342 ?e386))
+(flet ($e453 (p0 ?e348 ?e24))
+(flet ($e454 (> ?e270 ?e427))
+(flet ($e455 (< ?e222 ?e301))
+(flet ($e456 (distinct ?e7 ?e243))
+(flet ($e457 (distinct ?e257 ?e338))
+(flet ($e458 (>= ?e12 ?e360))
+(flet ($e459 (<= ?e13 ?e268))
+(flet ($e460 (p0 ?e28 ?e288))
+(flet ($e461 (= ?e435 ?e298))
+(flet ($e462 (= ?e317 ?e420))
+(flet ($e463 (p0 ?e334 ?e22))
+(flet ($e464 (<= ?e360 ?e423))
+(flet ($e465 (= ?e40 ?e405))
+(flet ($e466 (>= ?e379 ?e262))
+(flet ($e467 (= ?e428 ?e35))
+(flet ($e468 (>= ?e336 ?e393))
+(flet ($e469 (>= ?e291 ?e364))
+(flet ($e470 (<= ?e323 ?e24))
+(flet ($e471 (> ?e47 ?e253))
+(flet ($e472 (= ?e227 ?e231))
+(flet ($e473 (< ?e287 ?e414))
+(flet ($e474 (>= ?e309 ?e406))
+(flet ($e475 (distinct ?e19 ?e33))
+(flet ($e476 (<= ?e423 ?e335))
+(flet ($e477 (distinct ?e329 ?e295))
+(flet ($e478 (= ?e37 ?e372))
+(flet ($e479 (>= ?e214 ?e289))
+(flet ($e480 (>= ?e229 ?e316))
+(flet ($e481 (<= ?e388 ?e295))
+(flet ($e482 (< ?e215 ?e296))
+(flet ($e483 (distinct ?e292 ?e26))
+(flet ($e484 (= ?e214 ?e14))
+(flet ($e485 (>= ?e342 ?e297))
+(flet ($e486 (> ?e391 ?e294))
+(flet ($e487 (distinct ?e253 ?e296))
+(flet ($e488 (>= ?e13 ?e434))
+(flet ($e489 (< ?e425 ?e256))
+(flet ($e490 (<= ?e348 ?e391))
+(flet ($e491 (> ?e368 ?e371))
+(flet ($e492 (p0 ?e305 ?e250))
+(flet ($e493 (p0 ?e366 ?e369))
+(flet ($e494 (< ?e285 ?e11))
+(flet ($e495 (<= ?e393 ?e304))
+(flet ($e496 (<= ?e295 ?e221))
+(flet ($e497 (> ?e266 ?e32))
+(flet ($e498 (<= ?e266 ?e7))
+(flet ($e499 (= ?e368 ?e287))
+(flet ($e500 (= ?e343 ?e354))
+(flet ($e501 (>= ?e273 ?e432))
+(flet ($e502 (> ?e240 ?e229))
+(flet ($e503 (>= ?e391 ?e368))
+(flet ($e504 (distinct ?e18 ?e360))
+(flet ($e505 (> ?e317 ?e339))
+(flet ($e506 (distinct ?e298 ?e403))
+(flet ($e507 (>= ?e23 ?e374))
+(flet ($e508 (= ?e232 ?e225))
+(flet ($e509 (p0 ?e259 ?e329))
+(flet ($e510 (p0 ?e390 ?e6))
+(flet ($e511 (> ?e361 ?e378))
+(flet ($e512 (>= ?e387 ?e435))
+(flet ($e513 (>= ?e218 ?e371))
+(flet ($e514 (<= ?e8 ?e423))
+(flet ($e515 (distinct ?e325 ?e25))
+(flet ($e516 (< ?e249 ?e327))
+(flet ($e517 (> ?e239 ?e331))
+(flet ($e518 (> ?e238 ?e220))
+(flet ($e519 (distinct ?e262 ?e370))
+(flet ($e520 (>= ?e327 ?e393))
+(flet ($e521 (> ?e49 ?e410))
+(flet ($e522 (distinct ?e359 ?e349))
+(flet ($e523 (p0 ?e264 ?e263))
+(flet ($e524 (> ?e39 ?e412))
+(flet ($e525 (< ?e356 ?e332))
+(flet ($e526 (distinct ?e35 ?e215))
+(flet ($e527 (< ?e439 ?e360))
+(flet ($e528 (> ?e379 ?e326))
+(flet ($e529 (= ?e389 ?e246))
+(flet ($e530 (distinct ?e312 ?e309))
+(flet ($e531 (p0 ?e213 ?e414))
+(flet ($e532 (<= ?e257 ?e261))
+(flet ($e533 (<= ?e41 ?e420))
+(flet ($e534 (<= ?e392 ?e35))
+(flet ($e535 (distinct ?e359 ?e219))
+(flet ($e536 (> ?e319 ?e429))
+(flet ($e537 (p0 ?e29 ?e418))
+(flet ($e538 (< ?e227 ?e274))
+(flet ($e539 (distinct ?e278 ?e337))
+(flet ($e540 (= ?e252 ?e4))
+(flet ($e541 (> ?e333 ?e431))
+(flet ($e542 (> ?e362 ?e327))
+(flet ($e543 (= ?e215 ?e326))
+(flet ($e544 (p0 ?e376 ?e301))
+(flet ($e545 (p0 ?e266 ?e317))
+(flet ($e546 (<= ?e22 ?e431))
+(flet ($e547 (p0 ?e293 ?e39))
+(flet ($e548 (> ?e49 ?e228))
+(flet ($e549 (>= ?e345 ?e24))
+(flet ($e550 (< ?e353 ?e247))
+(flet ($e551 (distinct ?e343 ?e320))
+(flet ($e552 (>= ?e395 ?e48))
+(flet ($e553 (p0 ?e328 ?e414))
+(flet ($e554 (= ?e344 ?e21))
+(flet ($e555 (>= ?e369 ?e430))
+(flet ($e556 (< ?e416 ?e395))
+(flet ($e557 (distinct ?e358 ?e352))
+(flet ($e558 (<= ?e430 ?e413))
+(flet ($e559 (= ?e217 ?e220))
+(flet ($e560 (distinct ?e267 ?e305))
+(flet ($e561 (< ?e43 ?e437))
+(flet ($e562 (<= ?e24 ?e6))
+(flet ($e563 (distinct ?e223 ?e296))
+(flet ($e564 (< ?e345 ?e29))
+(flet ($e565 (>= ?e282 ?e23))
+(flet ($e566 (> ?e238 ?e37))
+(flet ($e567 (> ?e424 ?e257))
+(flet ($e568 (>= ?e348 ?e350))
+(flet ($e569 (distinct ?e305 ?e260))
+(flet ($e570 (> ?e20 ?e326))
+(flet ($e571 (> v0 ?e425))
+(flet ($e572 (<= ?e331 ?e329))
+(flet ($e573 (<= ?e279 ?e226))
+(flet ($e574 (= ?e430 ?e328))
+(flet ($e575 (distinct ?e317 ?e267))
+(flet ($e576 (>= ?e283 ?e301))
+(flet ($e577 (> ?e344 ?e219))
+(flet ($e578 (= ?e342 ?e264))
+(flet ($e579 (p0 ?e37 ?e241))
+(flet ($e580 (>= ?e278 ?e213))
+(flet ($e581 (>= ?e341 ?e32))
+(flet ($e582 (distinct ?e316 ?e7))
+(flet ($e583 (p0 ?e356 ?e391))
+(flet ($e584 (p0 ?e402 ?e394))
+(flet ($e585 (= ?e299 ?e397))
+(flet ($e586 (>= ?e433 ?e313))
+(flet ($e587 (p0 ?e45 ?e357))
+(flet ($e588 (= ?e49 ?e249))
+(flet ($e589 (< ?e38 ?e270))
+(flet ($e590 (distinct ?e287 ?e399))
+(flet ($e591 (> ?e430 ?e433))
+(flet ($e592 (<= ?e422 ?e336))
+(flet ($e593 (> ?e236 ?e320))
+(flet ($e594 (>= ?e333 ?e306))
+(flet ($e595 (p0 ?e368 ?e403))
+(flet ($e596 (<= ?e49 ?e8))
+(flet ($e597 (p0 ?e403 ?e384))
+(flet ($e598 (>= ?e231 ?e240))
+(flet ($e599 (= ?e258 ?e358))
+(flet ($e600 (= ?e240 ?e45))
+(flet ($e601 (>= ?e252 ?e4))
+(flet ($e602 (distinct ?e274 ?e366))
+(flet ($e603 (> ?e215 ?e381))
+(flet ($e604 (distinct ?e358 ?e381))
+(flet ($e605 (<= ?e41 ?e41))
+(flet ($e606 (= ?e300 ?e400))
+(flet ($e607 (<= ?e330 ?e312))
+(flet ($e608 (p0 ?e33 ?e220))
+(flet ($e609 (< ?e20 ?e40))
+(flet ($e610 (p0 ?e391 ?e399))
+(flet ($e611 (= ?e383 ?e39))
+(flet ($e612 (< ?e49 ?e42))
+(flet ($e613 (>= ?e410 ?e341))
+(flet ($e614 (<= ?e322 ?e255))
+(flet ($e615 (>= ?e437 ?e251))
+(flet ($e616 (> ?e254 ?e327))
+(flet ($e617 (< ?e216 ?e229))
+(flet ($e618 (= ?e269 ?e300))
+(flet ($e619 (> ?e338 ?e410))
+(flet ($e620 (> ?e405 ?e319))
+(flet ($e621 (p0 ?e346 ?e370))
+(flet ($e622 (distinct ?e409 ?e415))
+(flet ($e623 (p0 ?e361 ?e313))
+(flet ($e624 (>= ?e323 ?e269))
+(flet ($e625 (p0 ?e233 ?e351))
+(flet ($e626 (>= ?e31 ?e334))
+(flet ($e627 (>= ?e346 ?e426))
+(flet ($e628 (> ?e389 ?e238))
+(flet ($e629 (>= ?e414 ?e320))
+(flet ($e630 (distinct ?e439 ?e403))
+(flet ($e631 (< ?e297 ?e40))
+(flet ($e632 (< ?e32 ?e21))
+(flet ($e633 (distinct ?e240 ?e269))
+(flet ($e634 (distinct ?e245 ?e298))
+(flet ($e635 (distinct ?e28 ?e267))
+(flet ($e636 (<= ?e371 ?e351))
+(flet ($e637 (> ?e39 ?e246))
+(flet ($e638 (<= ?e32 ?e280))
+(flet ($e639 (> ?e33 ?e328))
+(flet ($e640 (p0 ?e343 ?e377))
+(flet ($e641 (= ?e252 ?e342))
+(flet ($e642 (distinct ?e219 ?e342))
+(flet ($e643 (<= ?e328 ?e334))
+(flet ($e644 (= ?e364 ?e221))
+(flet ($e645 (> ?e389 ?e26))
+(flet ($e646 (distinct ?e387 ?e338))
+(flet ($e647 (= ?e246 ?e261))
+(flet ($e648 (p0 ?e416 ?e38))
+(flet ($e649 (distinct ?e380 ?e25))
+(flet ($e650 (<= ?e245 ?e21))
+(flet ($e651 (< ?e31 ?e220))
+(flet ($e652 (p0 ?e362 ?e278))
+(flet ($e653 (<= ?e422 ?e396))
+(flet ($e654 (> ?e352 ?e351))
+(flet ($e655 (= ?e28 ?e398))
+(flet ($e656 (distinct ?e345 ?e244))
+(flet ($e657 (>= ?e366 ?e336))
+(flet ($e658 (= ?e315 ?e389))
+(flet ($e659 (> ?e372 ?e218))
+(flet ($e660 (<= ?e427 ?e297))
+(flet ($e661 (< ?e364 ?e323))
+(flet ($e662 (distinct ?e403 ?e293))
+(flet ($e663 (> ?e308 ?e408))
+(flet ($e664 (p0 ?e403 ?e398))
+(flet ($e665 (= ?e393 ?e264))
+(flet ($e666 (distinct ?e379 ?e222))
+(flet ($e667 (< ?e44 ?e275))
+(flet ($e668 (= ?e375 ?e13))
+(flet ($e669 (> ?e321 ?e428))
+(flet ($e670 (distinct ?e417 ?e245))
+(flet ($e671 (= ?e351 ?e20))
+(flet ($e672 (> ?e363 ?e286))
+(flet ($e673 (= ?e276 ?e285))
+(flet ($e674 (>= ?e366 ?e341))
+(flet ($e675 (> ?e307 ?e420))
+(flet ($e676 (> ?e439 ?e349))
+(flet ($e677 (> ?e312 ?e4))
+(flet ($e678 (>= ?e314 ?e333))
+(flet ($e679 (distinct ?e241 ?e292))
+(flet ($e680 (= ?e289 ?e27))
+(flet ($e681 (= ?e304 ?e377))
+(flet ($e682 (< ?e432 ?e351))
+(flet ($e683 (p0 ?e247 ?e418))
+(flet ($e684 (>= ?e224 ?e323))
+(flet ($e685 (> ?e299 ?e303))
+(flet ($e686 (p0 ?e392 ?e396))
+(flet ($e687 (= ?e311 ?e17))
+(flet ($e688 (>= ?e272 ?e283))
+(flet ($e689 (p0 ?e216 ?e361))
+(flet ($e690 (= ?e400 ?e41))
+(flet ($e691 (= ?e37 ?e362))
+(flet ($e692 (p0 ?e283 ?e439))
+(flet ($e693 (>= ?e213 ?e337))
+(flet ($e694 (= ?e354 ?e395))
+(flet ($e695 (distinct ?e342 ?e374))
+(flet ($e696 (> ?e247 ?e256))
+(flet ($e697 (<= ?e292 ?e237))
+(flet ($e698 (distinct ?e400 ?e252))
+(flet ($e699 (= ?e14 ?e384))
+(flet ($e700 (distinct ?e391 ?e338))
+(flet ($e701 (< ?e10 ?e309))
+(flet ($e702 (> ?e364 ?e221))
+(flet ($e703 (p0 ?e17 ?e45))
+(flet ($e704 (p0 ?e39 ?e381))
+(flet ($e705 (<= ?e403 ?e233))
+(flet ($e706 (p0 ?e283 ?e344))
+(flet ($e707 (< ?e373 ?e34))
+(flet ($e708 (<= ?e47 ?e341))
+(flet ($e709 (<= ?e406 ?e336))
+(flet ($e710 (>= ?e230 ?e253))
+(flet ($e711 (>= ?e321 ?e382))
+(flet ($e712 (distinct ?e24 ?e274))
+(flet ($e713 (distinct ?e320 ?e424))
+(flet ($e714 (p0 ?e7 ?e337))
+(flet ($e715 (p0 ?e249 ?e290))
+(flet ($e716 (<= ?e42 ?e253))
+(flet ($e717 (> ?e262 ?e4))
+(flet ($e718 (distinct ?e305 ?e235))
+(flet ($e719 (= ?e423 ?e240))
+(flet ($e720 (>= ?e16 ?e277))
+(flet ($e721 (>= ?e44 ?e334))
+(flet ($e722 (<= ?e253 ?e277))
+(flet ($e723 (> ?e39 ?e239))
+(flet ($e724 (< ?e366 ?e259))
+(flet ($e725 (<= ?e21 ?e338))
+(flet ($e726 (>= ?e216 ?e431))
+(flet ($e727 (> ?e293 ?e376))
+(flet ($e728 (= ?e275 ?e384))
+(flet ($e729 (p0 ?e233 ?e328))
+(flet ($e730 (<= ?e425 ?e280))
+(flet ($e731 (<= ?e295 ?e269))
+(flet ($e732 (= ?e435 ?e47))
+(flet ($e733 (>= ?e232 ?e231))
+(flet ($e734 (>= ?e26 ?e272))
+(flet ($e735 (= ?e404 ?e390))
+(flet ($e736 (> ?e12 ?e15))
+(flet ($e737 (<= ?e49 ?e401))
+(flet ($e738 (>= ?e218 ?e268))
+(flet ($e739 (p0 ?e288 ?e340))
+(flet ($e740 (p0 ?e222 ?e218))
+(flet ($e741 (<= ?e435 ?e308))
+(flet ($e742 (> ?e32 ?e439))
+(flet ($e743 (p0 ?e35 ?e275))
+(flet ($e744 (distinct ?e433 ?e342))
+(flet ($e745 (<= ?e380 ?e379))
+(flet ($e746 (>= ?e410 ?e390))
+(flet ($e747 (>= ?e213 ?e398))
+(flet ($e748 (= ?e333 ?e305))
+(flet ($e749 (distinct ?e11 ?e271))
+(flet ($e750 (< ?e237 ?e215))
+(flet ($e751 (= ?e366 ?e320))
+(flet ($e752 (= ?e344 ?e352))
+(flet ($e753 (>= ?e352 ?e256))
+(flet ($e754 (<= ?e34 ?e339))
+(flet ($e755 (= ?e33 ?e330))
+(flet ($e756 (distinct ?e363 ?e436))
+(flet ($e757 (< ?e47 ?e262))
+(flet ($e758 (>= ?e338 ?e326))
+(flet ($e759 (p0 ?e236 ?e374))
+(flet ($e760 (<= ?e404 ?e10))
+(flet ($e761 (p0 ?e257 ?e247))
+(flet ($e762 (distinct ?e327 ?e391))
+(flet ($e763 (>= ?e213 ?e437))
+(flet ($e764 (> ?e429 ?e16))
+(flet ($e765 (>= ?e328 ?e303))
+(flet ($e766 (< ?e257 ?e287))
+(flet ($e767 (<= ?e5 ?e316))
+(flet ($e768 (= ?e304 ?e307))
+(flet ($e769 (> ?e329 ?e259))
+(flet ($e770 (>= ?e290 ?e238))
+(flet ($e771 (> ?e350 ?e35))
+(flet ($e772 (>= ?e412 ?e358))
+(flet ($e773 (distinct ?e238 ?e399))
+(flet ($e774 (= ?e326 ?e347))
+(flet ($e775 (<= ?e414 ?e20))
+(flet ($e776 (distinct ?e274 ?e222))
+(flet ($e777 (= ?e422 ?e430))
+(flet ($e778 (< ?e25 ?e219))
+(flet ($e779 (p0 ?e300 ?e268))
+(flet ($e780 (p0 ?e302 ?e257))
+(flet ($e781 (> ?e230 ?e414))
+(flet ($e782 (< ?e242 ?e261))
+(flet ($e783 (= ?e419 ?e335))
+(flet ($e784 (< ?e9 ?e340))
+(flet ($e785 (< ?e4 ?e379))
+(flet ($e786 (>= ?e257 ?e433))
+(flet ($e787 (< ?e277 ?e22))
+(flet ($e788 (< ?e403 ?e420))
+(flet ($e789 (p0 ?e10 ?e368))
+(flet ($e790 (distinct ?e267 ?e436))
+(flet ($e791 (>= ?e222 ?e409))
+(flet ($e792 (distinct ?e257 ?e401))
+(flet ($e793 (< ?e370 ?e366))
+(flet ($e794 (distinct ?e345 ?e244))
+(flet ($e795 (> ?e266 ?e221))
+(flet ($e796 (p0 ?e349 ?e434))
+(flet ($e797 (= ?e417 ?e299))
+(flet ($e798 (>= ?e371 ?e30))
+(flet ($e799 (p0 ?e402 ?e411))
+(flet ($e800 (> v0 ?e428))
+(flet ($e801 (distinct ?e303 ?e424))
+(flet ($e802 (< ?e288 ?e418))
+(flet ($e803 (> ?e29 ?e236))
+(flet ($e804 (<= ?e378 ?e38))
+(flet ($e805 (<= ?e336 ?e432))
+(flet ($e806 (> ?e226 ?e255))
+(flet ($e807 (p0 ?e229 ?e28))
+(flet ($e808 (distinct ?e404 ?e297))
+(flet ($e809 (p0 ?e330 ?e26))
+(flet ($e810 (<= ?e39 ?e332))
+(flet ($e811 (p0 ?e280 ?e394))
+(flet ($e812 (>= ?e230 ?e8))
+(flet ($e813 (distinct ?e297 ?e226))
+(flet ($e814 (< ?e432 ?e321))
+(flet ($e815 (< ?e259 ?e231))
+(flet ($e816 (= ?e428 ?e246))
+(flet ($e817 (p0 ?e380 ?e327))
+(flet ($e818 (> ?e375 ?e262))
+(flet ($e819 (> ?e364 ?e47))
+(flet ($e820 (<= ?e398 ?e305))
+(flet ($e821 (distinct ?e412 ?e299))
+(flet ($e822 (p0 ?e365 ?e320))
+(flet ($e823 (= ?e336 ?e380))
+(flet ($e824 (distinct ?e233 ?e350))
+(flet ($e825 (< ?e302 ?e10))
+(flet ($e826 (distinct ?e46 ?e385))
+(flet ($e827 (p0 ?e265 ?e215))
+(flet ($e828 (= ?e272 ?e28))
+(flet ($e829 (>= ?e7 ?e294))
+(flet ($e830 (p0 ?e35 ?e397))
+(flet ($e831 (< ?e419 ?e408))
+(flet ($e832 (< ?e369 ?e23))
+(flet ($e833 (>= ?e336 ?e419))
+(flet ($e834 (< ?e243 ?e303))
+(flet ($e835 (<= ?e254 ?e332))
+(flet ($e836 (p0 ?e20 ?e419))
+(flet ($e837 (>= ?e253 ?e222))
+(flet ($e838 (< ?e318 ?e291))
+(flet ($e839 (> ?e306 ?e235))
+(flet ($e840 (= ?e351 ?e424))
+(flet ($e841 (>= ?e286 ?e331))
+(flet ($e842 (distinct ?e437 ?e231))
+(flet ($e843 (= ?e439 ?e421))
+(flet ($e844 (p0 ?e339 ?e346))
+(flet ($e845 (< ?e396 ?e305))
+(flet ($e846 (p0 ?e212 ?e407))
+(flet ($e847 (< ?e326 ?e407))
+(flet ($e848 (p0 ?e26 ?e370))
+(flet ($e849 (p0 ?e354 ?e337))
+(flet ($e850 (= ?e329 ?e259))
+(flet ($e851 (< ?e350 ?e307))
+(flet ($e852 (<= ?e39 ?e228))
+(flet ($e853 (< ?e418 ?e323))
+(flet ($e854 (p0 ?e416 ?e280))
+(flet ($e855 (= ?e301 ?e288))
+(flet ($e856 (>= ?e388 ?e397))
+(flet ($e857 (<= ?e416 ?e322))
+(flet ($e858 (p0 ?e298 ?e329))
+(flet ($e859 (distinct ?e352 ?e371))
+(flet ($e860 (< ?e303 ?e218))
+(flet ($e861 (distinct ?e232 ?e311))
+(flet ($e862 (distinct ?e13 ?e224))
+(flet ($e863 (distinct ?e407 ?e295))
+(flet ($e864 (< ?e344 ?e254))
+(flet ($e865 (p0 ?e227 ?e35))
+(flet ($e866 (<= ?e320 ?e4))
+(flet ($e867 (> ?e397 ?e378))
+(flet ($e868 (>= ?e353 ?e403))
+(flet ($e869 (= ?e269 ?e16))
+(flet ($e870 (p0 ?e402 ?e381))
+(flet ($e871 (> ?e244 ?e333))
+(flet ($e872 (= ?e271 ?e375))
+(flet ($e873 (= ?e377 ?e313))
+(flet ($e874 (> ?e413 ?e47))
+(flet ($e875 (> ?e304 ?e325))
+(flet ($e876 (>= ?e238 ?e439))
+(flet ($e877 (< ?e219 ?e242))
+(flet ($e878 (< ?e229 ?e414))
+(flet ($e879 (>= ?e241 ?e297))
+(flet ($e880 (distinct ?e259 ?e434))
+(flet ($e881 (p0 ?e339 ?e270))
+(flet ($e882 (p0 ?e365 ?e317))
+(flet ($e883 (distinct v0 ?e341))
+(flet ($e884 (>= ?e283 ?e351))
+(flet ($e885 (= ?e235 ?e310))
+(flet ($e886 (p0 ?e402 ?e288))
+(flet ($e887 (<= ?e291 ?e226))
+(flet ($e888 (> ?e410 ?e345))
+(flet ($e889 (= ?e409 ?e415))
+(flet ($e890 (= ?e312 ?e430))
+(flet ($e891 (>= ?e34 ?e222))
+(flet ($e892 (distinct ?e24 ?e41))
+(flet ($e893 (p0 ?e260 ?e246))
+(flet ($e894 (p0 ?e439 ?e293))
+(flet ($e895 (>= ?e429 ?e411))
+(flet ($e896 (>= ?e283 ?e286))
+(flet ($e897 (distinct ?e297 ?e215))
+(flet ($e898 (< ?e328 ?e6))
+(flet ($e899 (<= ?e28 ?e290))
+(flet ($e900 (<= ?e380 ?e420))
+(flet ($e901 (distinct ?e255 ?e35))
+(flet ($e902 (>= ?e415 ?e38))
+(flet ($e903 (> ?e46 ?e275))
+(flet ($e904 (p0 ?e297 ?e296))
+(flet ($e905 (p0 ?e432 ?e243))
+(flet ($e906 (> ?e32 ?e404))
+(flet ($e907 (< ?e278 ?e379))
+(flet ($e908 (<= ?e270 ?e346))
+(flet ($e909 (>= ?e273 ?e14))
+(flet ($e910 (<= ?e23 ?e350))
+(flet ($e911 (< ?e214 ?e401))
+(flet ($e912 (distinct ?e30 ?e335))
+(flet ($e913 (= ?e253 ?e230))
+(flet ($e914 (> ?e329 ?e411))
+(flet ($e915 (= ?e265 ?e42))
+(flet ($e916 (distinct ?e344 ?e262))
+(flet ($e917 (> ?e262 ?e281))
+(flet ($e918 (<= ?e437 ?e12))
+(flet ($e919 (p0 ?e239 ?e335))
+(flet ($e920 (p0 ?e363 ?e278))
+(flet ($e921 (< ?e418 ?e36))
+(flet ($e922 (distinct ?e395 ?e297))
+(flet ($e923 (> ?e27 ?e367))
+(flet ($e924 (>= ?e229 ?e243))
+(flet ($e925 (= ?e388 ?e314))
+(flet ($e926 (p0 ?e320 ?e354))
+(flet ($e927 (= ?e326 ?e325))
+(flet ($e928 (<= ?e409 ?e222))
+(flet ($e929 (= ?e274 ?e213))
+(flet ($e930 (= ?e333 ?e233))
+(flet ($e931 (= ?e373 ?e425))
+(flet ($e932 (<= ?e249 ?e20))
+(flet ($e933 (<= ?e313 ?e429))
+(flet ($e934 (> ?e420 ?e258))
+(flet ($e935 (< ?e243 ?e366))
+(flet ($e936 (> ?e307 ?e301))
+(flet ($e937 (>= ?e316 ?e350))
+(flet ($e938 (= ?e214 ?e382))
+(flet ($e939 (<= ?e299 ?e288))
+(flet ($e940 (= ?e264 ?e223))
+(flet ($e941 (distinct ?e263 ?e308))
+(flet ($e942 (> ?e375 ?e276))
+(flet ($e943 (<= ?e411 ?e294))
+(flet ($e944 (distinct ?e309 ?e286))
+(flet ($e945 (>= ?e47 ?e364))
+(flet ($e946 (>= ?e428 ?e288))
+(flet ($e947 (< ?e329 ?e32))
+(flet ($e948 (< ?e368 ?e223))
+(flet ($e949 (> ?e270 ?e384))
+(flet ($e950 (<= ?e267 ?e304))
+(flet ($e951 (< ?e339 ?e352))
+(flet ($e952 (> ?e272 ?e294))
+(flet ($e953 (< ?e291 ?e315))
+(flet ($e954 (p0 ?e265 ?e282))
+(flet ($e955 (> ?e427 ?e333))
+(flet ($e956 (= ?e319 ?e323))
+(flet ($e957 (>= ?e342 ?e222))
+(flet ($e958 (<= ?e409 ?e222))
+(flet ($e959 (p0 ?e398 ?e362))
+(flet ($e960 (<= ?e271 ?e331))
+(flet ($e961 (= ?e361 ?e273))
+(flet ($e962 (> ?e249 ?e34))
+(flet ($e963 (distinct ?e27 ?e30))
+(flet ($e964 (> ?e435 ?e337))
+(flet ($e965 (>= ?e21 ?e301))
+(flet ($e966 (p0 ?e246 ?e342))
+(flet ($e967 (< v0 ?e46))
+(flet ($e968 (p0 ?e34 ?e363))
+(flet ($e969 (< ?e368 ?e367))
+(flet ($e970 (< ?e225 ?e248))
+(flet ($e971 (> ?e431 ?e37))
+(flet ($e972 (> ?e377 ?e371))
+(flet ($e973 (> ?e391 ?e16))
+(flet ($e974 (<= ?e47 ?e28))
+(flet ($e975 (>= ?e30 ?e226))
+(flet ($e976 (distinct ?e246 ?e366))
+(flet ($e977 (= ?e267 ?e318))
+(flet ($e978 (>= ?e332 ?e363))
+(flet ($e979 (p0 ?e264 ?e28))
+(flet ($e980 (> ?e341 ?e380))
+(flet ($e981 (>= ?e265 ?e225))
+(flet ($e982 (distinct ?e292 ?e255))
+(flet ($e983 (p0 ?e274 ?e35))
+(flet ($e984 (< ?e364 ?e343))
+(flet ($e985 (> ?e307 ?e431))
+(flet ($e986 (distinct ?e391 ?e410))
+(flet ($e987 (= ?e409 ?e274))
+(flet ($e988 (distinct ?e407 ?e258))
+(flet ($e989 (>= ?e432 ?e335))
+(flet ($e990 (< v0 ?e9))
+(flet ($e991 (distinct ?e350 ?e397))
+(flet ($e992 (< ?e424 ?e221))
+(flet ($e993 (> ?e290 ?e321))
+(flet ($e994 (> ?e400 ?e341))
+(flet ($e995 (< ?e391 ?e426))
+(flet ($e996 (< ?e336 ?e219))
+(flet ($e997 (>= ?e283 ?e400))
+(flet ($e998 (= ?e13 ?e350))
+(flet ($e999 (p0 ?e317 ?e359))
+(flet ($e1000 (< ?e336 ?e390))
+(flet ($e1001 (= ?e414 ?e47))
+(flet ($e1002 (< ?e39 ?e422))
+(flet ($e1003 (distinct ?e375 ?e402))
+(flet ($e1004 (>= ?e380 ?e280))
+(flet ($e1005 (= ?e259 ?e374))
+(flet ($e1006 (>= v0 ?e262))
+(flet ($e1007 (p0 ?e30 ?e22))
+(flet ($e1008 (<= ?e18 ?e269))
+(flet ($e1009 (p0 ?e255 ?e214))
+(flet ($e1010 (>= ?e393 ?e37))
+(flet ($e1011 (> ?e374 ?e386))
+(flet ($e1012 (<= ?e7 ?e312))
+(flet ($e1013 (distinct ?e355 ?e423))
+(flet ($e1014 (= ?e12 ?e334))
+(flet ($e1015 (distinct ?e427 ?e277))
+(flet ($e1016 (distinct ?e288 ?e414))
+(flet ($e1017 (>= ?e407 ?e361))
+(flet ($e1018 (= ?e382 ?e328))
+(flet ($e1019 (p0 ?e17 ?e230))
+(flet ($e1020 (p0 ?e298 ?e249))
+(flet ($e1021 (< ?e261 ?e360))
+(flet ($e1022 (> ?e293 ?e25))
+(flet ($e1023 (>= ?e332 ?e342))
+(flet ($e1024 (> ?e317 ?e39))
+(flet ($e1025 (< ?e17 ?e405))
+(flet ($e1026 (>= ?e245 ?e330))
+(flet ($e1027 (< ?e224 ?e424))
+(flet ($e1028 (>= ?e33 ?e412))
+(flet ($e1029 (p0 ?e31 ?e18))
+(flet ($e1030 (distinct ?e251 ?e5))
+(flet ($e1031 (< ?e407 ?e269))
+(flet ($e1032 (<= ?e215 ?e34))
+(flet ($e1033 (p0 ?e303 ?e417))
+(flet ($e1034 (>= ?e328 ?e353))
+(flet ($e1035 (= ?e230 ?e365))
+(flet ($e1036 (>= ?e253 ?e340))
+(flet ($e1037 (= ?e324 ?e363))
+(flet ($e1038 (= ?e220 ?e245))
+(flet ($e1039 (= ?e436 ?e397))
+(flet ($e1040 (= ?e385 ?e303))
+(flet ($e1041 (>= ?e245 ?e352))
+(flet ($e1042 (<= ?e390 ?e307))
+(flet ($e1043 (< ?e245 ?e248))
+(flet ($e1044 (p0 ?e252 ?e290))
+(flet ($e1045 (>= ?e392 ?e239))
+(flet ($e1046 (p0 ?e338 ?e416))
+(flet ($e1047 (> ?e269 ?e278))
+(flet ($e1048 (>= ?e263 ?e403))
+(flet ($e1049 (> ?e428 ?e331))
+(flet ($e1050 (= ?e24 ?e236))
+(flet ($e1051 (> ?e410 ?e391))
+(flet ($e1052 (distinct ?e46 ?e429))
+(flet ($e1053 (p0 ?e315 ?e421))
+(flet ($e1054 (< ?e282 ?e418))
+(flet ($e1055 (>= ?e433 ?e387))
+(flet ($e1056 (distinct ?e212 ?e5))
+(flet ($e1057 (<= ?e348 ?e431))
+(flet ($e1058 (> ?e258 ?e32))
+(flet ($e1059 (distinct ?e303 ?e347))
+(flet ($e1060 (= ?e348 ?e395))
+(flet ($e1061 (>= ?e26 ?e378))
+(flet ($e1062 (>= ?e309 ?e279))
+(flet ($e1063 (= ?e429 ?e403))
+(flet ($e1064 (< ?e341 ?e227))
+(flet ($e1065 (> ?e336 ?e394))
+(flet ($e1066 (>= ?e395 ?e275))
+(flet ($e1067 (p0 ?e240 ?e287))
+(flet ($e1068 (= ?e217 ?e313))
+(flet ($e1069 (<= ?e233 ?e31))
+(flet ($e1070 (p0 ?e283 ?e23))
+(flet ($e1071 (distinct ?e417 ?e15))
+(flet ($e1072 (> ?e280 ?e27))
+(flet ($e1073 (< ?e31 ?e391))
+(flet ($e1074 (> ?e275 ?e278))
+(flet ($e1075 (< ?e13 ?e27))
+(flet ($e1076 (> ?e365 ?e405))
+(flet ($e1077 (p0 ?e354 ?e290))
+(flet ($e1078 (distinct ?e37 ?e287))
+(flet ($e1079 (<= ?e221 ?e241))
+(flet ($e1080 (p0 ?e294 ?e340))
+(flet ($e1081 (>= ?e426 ?e247))
+(flet ($e1082 (> ?e18 ?e32))
+(flet ($e1083 (p0 ?e325 ?e402))
+(flet ($e1084 (p0 ?e298 ?e220))
+(flet ($e1085 (< ?e6 ?e365))
+(flet ($e1086 (<= ?e348 ?e414))
+(flet ($e1087 (<= ?e272 ?e327))
+(flet ($e1088 (> ?e411 ?e225))
+(flet ($e1089 (p0 ?e263 ?e290))
+(flet ($e1090 (< ?e308 ?e343))
+(flet ($e1091 (distinct ?e330 ?e226))
+(flet ($e1092 (= ?e232 ?e367))
+(flet ($e1093 (< ?e320 ?e368))
+(flet ($e1094 (> ?e368 ?e413))
+(flet ($e1095 (<= ?e402 ?e22))
+(flet ($e1096 (>= ?e414 ?e256))
+(flet ($e1097 (= ?e297 ?e377))
+(flet ($e1098 (> ?e35 ?e401))
+(flet ($e1099 (p0 ?e299 ?e432))
+(flet ($e1100 (distinct ?e267 ?e41))
+(flet ($e1101 (<= ?e33 ?e222))
+(flet ($e1102 (< ?e413 ?e280))
+(flet ($e1103 (>= ?e285 ?e38))
+(flet ($e1104 (<= ?e257 ?e390))
+(flet ($e1105 (distinct ?e242 ?e317))
+(flet ($e1106 (<= ?e43 ?e49))
+(flet ($e1107 (distinct ?e354 ?e25))
+(flet ($e1108 (>= ?e391 ?e299))
+(flet ($e1109 (distinct ?e265 ?e375))
+(flet ($e1110 (distinct ?e276 ?e399))
+(flet ($e1111 (= ?e342 ?e278))
+(flet ($e1112 (>= ?e356 ?e283))
+(flet ($e1113 (= ?e387 ?e374))
+(flet ($e1114 (>= ?e255 ?e226))
+(flet ($e1115 (>= ?e436 ?e215))
+(flet ($e1116 (>= ?e28 ?e292))
+(flet ($e1117 (p0 ?e265 ?e315))
+(flet ($e1118 (<= ?e336 ?e332))
+(flet ($e1119 (p0 ?e230 ?e391))
+(flet ($e1120 (> ?e220 ?e7))
+(flet ($e1121 (<= ?e373 ?e427))
+(flet ($e1122 (< v0 ?e317))
+(flet ($e1123 (distinct ?e255 ?e275))
+(flet ($e1124 (<= ?e408 ?e419))
+(flet ($e1125 (distinct ?e36 ?e394))
+(flet ($e1126 (< ?e407 ?e49))
+(flet ($e1127 (>= ?e224 ?e277))
+(flet ($e1128 (< ?e314 ?e235))
+(flet ($e1129 (> ?e41 ?e263))
+(flet ($e1130 (distinct ?e361 ?e14))
+(flet ($e1131 (> ?e42 ?e228))
+(flet ($e1132 (= ?e26 ?e6))
+(flet ($e1133 (= ?e231 ?e323))
+(flet ($e1134 (> ?e37 ?e282))
+(flet ($e1135 (> ?e406 ?e39))
+(flet ($e1136 (<= ?e380 ?e283))
+(flet ($e1137 (> ?e351 ?e325))
+(flet ($e1138 (p0 ?e31 ?e371))
+(flet ($e1139 (= ?e380 ?e388))
+(flet ($e1140 (= ?e356 ?e321))
+(flet ($e1141 (< ?e411 ?e270))
+(flet ($e1142 (< ?e343 ?e252))
+(flet ($e1143 (= ?e15 ?e273))
+(flet ($e1144 (= ?e392 ?e49))
+(flet ($e1145 (distinct ?e435 ?e365))
+(flet ($e1146 (= ?e297 ?e352))
+(flet ($e1147 (= ?e372 ?e15))
+(flet ($e1148 (<= ?e284 ?e241))
+(flet ($e1149 (<= ?e14 ?e305))
+(flet ($e1150 (>= ?e23 ?e365))
+(flet ($e1151 (p0 ?e420 ?e226))
+(flet ($e1152 (>= ?e40 ?e283))
+(flet ($e1153 (<= ?e225 ?e236))
+(flet ($e1154 (distinct ?e213 ?e239))
+(flet ($e1155 (= ?e289 ?e333))
+(flet ($e1156 (= ?e431 ?e49))
+(flet ($e1157 (> ?e346 ?e412))
+(flet ($e1158 (> ?e437 ?e49))
+(flet ($e1159 (>= ?e412 ?e318))
+(flet ($e1160 (< ?e317 ?e11))
+(flet ($e1161 (> ?e262 ?e24))
+(flet ($e1162 (>= ?e260 ?e317))
+(flet ($e1163 (>= ?e20 ?e410))
+(flet ($e1164 (= ?e397 ?e429))
+(flet ($e1165 (p0 ?e277 ?e436))
+(flet ($e1166 (distinct ?e425 ?e237))
+(flet ($e1167 (< ?e387 ?e45))
+(flet ($e1168 (>= v0 ?e437))
+(flet ($e1169 (= ?e355 ?e326))
+(flet ($e1170 (p0 ?e431 ?e10))
+(flet ($e1171 (distinct ?e328 ?e293))
+(flet ($e1172 (>= ?e325 ?e307))
+(flet ($e1173 (distinct ?e41 ?e277))
+(flet ($e1174 (= ?e302 ?e276))
+(flet ($e1175 (< ?e270 ?e356))
+(flet ($e1176 (> ?e219 ?e273))
+(flet ($e1177 (= ?e406 ?e214))
+(flet ($e1178 (<= ?e12 ?e17))
+(flet ($e1179 (= ?e277 ?e282))
+(flet ($e1180 (= ?e241 ?e409))
+(flet ($e1181 (= ?e325 ?e356))
+(flet ($e1182 (< ?e341 ?e385))
+(flet ($e1183 (< ?e225 ?e439))
+(flet ($e1184 (distinct ?e298 ?e293))
+(flet ($e1185 (> ?e430 ?e271))
+(flet ($e1186 (> ?e336 ?e47))
+(flet ($e1187 (<= ?e225 ?e357))
+(flet ($e1188 (< ?e227 ?e396))
+(flet ($e1189 (>= ?e412 ?e41))
+(flet ($e1190 (>= ?e277 ?e317))
+(flet ($e1191 (<= ?e25 ?e22))
+(flet ($e1192 (> ?e287 ?e43))
+(flet ($e1193 (= ?e31 ?e340))
+(flet ($e1194 (< ?e281 ?e228))
+(flet ($e1195 (>= ?e32 ?e21))
+(flet ($e1196 (distinct ?e306 ?e264))
+(flet ($e1197 (= ?e352 ?e272))
+(flet ($e1198 (< ?e298 ?e286))
+(flet ($e1199 (= ?e383 ?e380))
+(flet ($e1200 (> ?e335 ?e284))
+(flet ($e1201 (> ?e217 ?e319))
+(flet ($e1202 (< ?e241 ?e323))
+(flet ($e1203 (= ?e350 ?e250))
+(flet ($e1204 (< ?e362 ?e267))
+(flet ($e1205 (>= ?e240 ?e368))
+(flet ($e1206 (< ?e249 ?e324))
+(flet ($e1207 (distinct ?e317 ?e415))
+(flet ($e1208 (= ?e358 ?e214))
+(flet ($e1209 (= ?e434 ?e243))
+(flet ($e1210 (distinct ?e273 ?e306))
+(flet ($e1211 (>= ?e376 ?e36))
+(flet ($e1212 (< ?e235 ?e31))
+(flet ($e1213 (<= ?e48 ?e29))
+(flet ($e1214 (> ?e332 ?e407))
+(flet ($e1215 (<= ?e299 ?e317))
+(flet ($e1216 (> ?e303 ?e269))
+(flet ($e1217 (< ?e260 ?e375))
+(flet ($e1218 (<= ?e289 ?e262))
+(flet ($e1219 (<= ?e245 ?e330))
+(flet ($e1220 (= ?e271 ?e328))
+(flet ($e1221 (p0 ?e375 ?e413))
+(flet ($e1222 (>= ?e244 ?e297))
+(flet ($e1223 (> ?e295 ?e355))
+(flet ($e1224 (< ?e45 ?e36))
+(flet ($e1225 (< ?e378 ?e355))
+(flet ($e1226 (<= ?e308 ?e10))
+(flet ($e1227 (p0 ?e428 ?e275))
+(flet ($e1228 (distinct ?e375 ?e341))
+(flet ($e1229 (< ?e428 ?e249))
+(flet ($e1230 (p0 ?e336 ?e254))
+(flet ($e1231 (>= ?e334 ?e305))
+(flet ($e1232 (> ?e370 ?e430))
+(flet ($e1233 (> ?e226 ?e295))
+(flet ($e1234 (> ?e241 ?e431))
+(flet ($e1235 (>= ?e322 ?e341))
+(flet ($e1236 (distinct ?e220 ?e291))
+(flet ($e1237 (<= ?e342 ?e27))
+(flet ($e1238 (<= ?e417 ?e236))
+(flet ($e1239 (> ?e334 ?e362))
+(flet ($e1240 (> ?e397 ?e46))
+(flet ($e1241 (< ?e224 ?e216))
+(flet ($e1242 (>= ?e362 ?e253))
+(flet ($e1243 (p0 ?e317 ?e362))
+(flet ($e1244 (< ?e258 ?e292))
+(flet ($e1245 (p0 ?e421 ?e418))
+(flet ($e1246 (> ?e33 ?e381))
+(flet ($e1247 (< ?e399 ?e304))
+(flet ($e1248 (<= ?e395 ?e378))
+(flet ($e1249 (> ?e229 ?e390))
+(flet ($e1250 (<= ?e365 ?e335))
+(flet ($e1251 (p0 ?e420 ?e348))
+(flet ($e1252 (> ?e424 ?e13))
+(flet ($e1253 (= ?e275 ?e223))
+(flet ($e1254 (p0 ?e396 ?e352))
+(flet ($e1255 (>= ?e292 ?e438))
+(flet ($e1256 (> ?e222 ?e365))
+(flet ($e1257 (>= ?e248 ?e433))
+(flet ($e1258 (= ?e390 ?e239))
+(flet ($e1259 (p0 ?e349 ?e369))
+(flet ($e1260 (>= ?e368 ?e306))
+(flet ($e1261 (= ?e11 ?e298))
+(flet ($e1262 (< ?e395 ?e332))
+(flet ($e1263 (p0 ?e223 ?e268))
+(flet ($e1264 (distinct ?e254 ?e339))
+(flet ($e1265 (p0 ?e306 ?e246))
+(flet ($e1266 (distinct ?e317 ?e241))
+(flet ($e1267 (= ?e424 ?e256))
+(flet ($e1268 (distinct ?e40 ?e265))
+(flet ($e1269 (= ?e232 ?e284))
+(flet ($e1270 (>= ?e402 ?e400))
+(flet ($e1271 (distinct ?e318 ?e216))
+(flet ($e1272 (<= ?e267 ?e432))
+(flet ($e1273 (> ?e248 ?e307))
+(flet ($e1274 (<= ?e212 ?e399))
+(flet ($e1275 (< ?e357 ?e344))
+(flet ($e1276 (<= ?e14 ?e425))
+(flet ($e1277 (>= ?e255 ?e351))
+(flet ($e1278 (> ?e358 ?e39))
+(flet ($e1279 (p0 ?e422 ?e9))
+(flet ($e1280 (<= ?e411 ?e48))
+(flet ($e1281 (<= ?e37 ?e334))
+(flet ($e1282 (>= ?e390 ?e269))
+(flet ($e1283 (distinct ?e378 ?e393))
+(flet ($e1284 (< ?e355 ?e244))
+(flet ($e1285 (distinct ?e241 ?e439))
+(flet ($e1286 (p0 ?e291 ?e281))
+(flet ($e1287 (> ?e236 ?e348))
+(flet ($e1288 (<= ?e265 ?e385))
+(flet ($e1289 (distinct ?e333 ?e397))
+(flet ($e1290 (p0 ?e7 ?e417))
+(flet ($e1291 (>= ?e18 ?e13))
+(flet ($e1292 (> ?e21 ?e11))
+(flet ($e1293 (<= ?e367 ?e386))
+(flet ($e1294 (> ?e294 ?e279))
+(flet ($e1295 (= ?e352 ?e219))
+(flet ($e1296 (<= ?e293 ?e44))
+(flet ($e1297 (< ?e291 ?e293))
+(flet ($e1298 (= ?e374 ?e406))
+(flet ($e1299 (p0 ?e278 ?e49))
+(flet ($e1300 (= ?e315 ?e266))
+(flet ($e1301 (<= ?e221 ?e334))
+(flet ($e1302 (>= ?e296 ?e346))
+(flet ($e1303 (> ?e419 ?e436))
+(flet ($e1304 (< ?e377 ?e31))
+(flet ($e1305 (<= ?e24 ?e284))
+(flet ($e1306 (p0 ?e218 ?e378))
+(flet ($e1307 (>= ?e32 ?e33))
+(flet ($e1308 (> ?e326 ?e305))
+(flet ($e1309 (= ?e318 ?e257))
+(flet ($e1310 (< ?e25 ?e437))
+(flet ($e1311 (= ?e271 ?e439))
+(flet ($e1312 (= ?e215 ?e344))
+(flet ($e1313 (<= ?e300 ?e330))
+(flet ($e1314 (= ?e350 ?e255))
+(flet ($e1315 (distinct ?e345 ?e352))
+(flet ($e1316 (< ?e376 ?e289))
+(flet ($e1317 (< ?e436 ?e402))
+(flet ($e1318 (<= ?e303 ?e307))
+(flet ($e1319 (= ?e242 ?e253))
+(flet ($e1320 (p0 ?e48 ?e385))
+(flet ($e1321 (p0 ?e316 ?e363))
+(flet ($e1322 (< ?e373 ?e223))
+(flet ($e1323 (<= ?e304 ?e281))
+(flet ($e1324 (distinct ?e400 ?e393))
+(flet ($e1325 (>= ?e390 ?e36))
+(flet ($e1326 (<= ?e431 ?e39))
+(flet ($e1327 (< ?e41 ?e39))
+(flet ($e1328 (<= ?e272 ?e29))
+(flet ($e1329 (= ?e36 ?e43))
+(flet ($e1330 (<= ?e217 ?e340))
+(flet ($e1331 (= ?e435 ?e366))
+(flet ($e1332 (p0 ?e16 ?e225))
+(flet ($e1333 (p0 ?e224 ?e368))
+(flet ($e1334 (<= ?e348 ?e373))
+(flet ($e1335 (= ?e285 ?e251))
+(flet ($e1336 (distinct ?e237 ?e338))
+(flet ($e1337 (>= ?e14 ?e270))
+(flet ($e1338 (< ?e255 ?e215))
+(flet ($e1339 (<= ?e415 ?e287))
+(flet ($e1340 (distinct ?e370 ?e347))
+(flet ($e1341 (distinct ?e236 ?e18))
+(flet ($e1342 (< ?e334 ?e307))
+(flet ($e1343 (p0 ?e383 ?e233))
+(flet ($e1344 (<= ?e416 ?e272))
+(flet ($e1345 (<= ?e333 ?e235))
+(flet ($e1346 (<= ?e390 ?e254))
+(flet ($e1347 (distinct ?e344 ?e402))
+(flet ($e1348 (= ?e307 ?e293))
+(flet ($e1349 (p0 ?e10 ?e7))
+(flet ($e1350 (= ?e282 ?e303))
+(flet ($e1351 (> ?e218 ?e8))
+(flet ($e1352 (<= ?e416 ?e413))
+(flet ($e1353 (>= ?e230 ?e327))
+(flet ($e1354 (> ?e322 ?e248))
+(flet ($e1355 (p0 ?e297 ?e326))
+(flet ($e1356 (< ?e379 ?e395))
+(flet ($e1357 (>= ?e358 ?e17))
+(flet ($e1358 (< ?e223 ?e33))
+(flet ($e1359 (> ?e332 ?e356))
+(flet ($e1360 (< ?e408 ?e339))
+(flet ($e1361 (= ?e271 ?e214))
+(flet ($e1362 (p0 ?e21 ?e267))
+(flet ($e1363 (distinct ?e239 ?e233))
+(flet ($e1364 (<= ?e416 ?e268))
+(flet ($e1365 (= ?e330 ?e307))
+(flet ($e1366 (>= ?e437 ?e387))
+(flet ($e1367 (<= ?e314 ?e301))
+(flet ($e1368 (< ?e263 ?e44))
+(flet ($e1369 (= ?e299 ?e232))
+(flet ($e1370 (= v0 ?e378))
+(flet ($e1371 (distinct ?e410 ?e373))
+(flet ($e1372 (= ?e34 ?e316))
+(flet ($e1373 (< ?e282 ?e399))
+(flet ($e1374 (p0 ?e248 ?e399))
+(flet ($e1375 (<= ?e379 ?e397))
+(flet ($e1376 (p0 ?e272 ?e26))
+(flet ($e1377 (= ?e218 ?e232))
+(flet ($e1378 (< ?e419 ?e328))
+(flet ($e1379 (distinct ?e220 ?e307))
+(flet ($e1380 (> ?e333 ?e428))
+(flet ($e1381 (distinct ?e327 ?e44))
+(flet ($e1382 (= ?e346 ?e395))
+(flet ($e1383 (<= ?e415 ?e385))
+(flet ($e1384 (> ?e279 ?e290))
+(flet ($e1385 (> ?e265 ?e319))
+(flet ($e1386 (> ?e283 ?e36))
+(flet ($e1387 (<= ?e13 ?e6))
+(flet ($e1388 (<= ?e10 ?e416))
+(flet ($e1389 (distinct ?e415 ?e253))
+(flet ($e1390 (>= ?e45 ?e382))
+(flet ($e1391 (> ?e351 ?e277))
+(flet ($e1392 (>= ?e317 ?e37))
+(flet ($e1393 (> ?e371 ?e212))
+(flet ($e1394 (= ?e213 ?e232))
+(flet ($e1395 (= ?e222 ?e378))
+(flet ($e1396 (p0 ?e29 ?e359))
+(flet ($e1397 (distinct ?e300 ?e41))
+(flet ($e1398 (>= ?e397 ?e299))
+(flet ($e1399 (= ?e424 ?e267))
+(flet ($e1400 (distinct ?e251 ?e380))
+(flet ($e1401 (<= ?e247 ?e245))
+(flet ($e1402 (p0 ?e394 ?e30))
+(flet ($e1403 (<= ?e431 ?e231))
+(flet ($e1404 (>= ?e267 ?e230))
+(flet ($e1405 (>= ?e276 ?e266))
+(flet ($e1406 (<= ?e258 ?e282))
+(flet ($e1407 (<= ?e397 ?e310))
+(flet ($e1408 (= ?e27 ?e420))
+(flet ($e1409 (>= ?e294 ?e432))
+(flet ($e1410 (<= ?e435 ?e333))
+(flet ($e1411 (>= ?e32 ?e40))
+(flet ($e1412 (p0 ?e348 ?e233))
+(flet ($e1413 (> ?e258 ?e409))
+(flet ($e1414 (distinct ?e238 ?e31))
+(flet ($e1415 (distinct ?e218 ?e329))
+(flet ($e1416 (= ?e41 ?e212))
+(flet ($e1417 (< ?e31 ?e404))
+(flet ($e1418 (> ?e338 ?e360))
+(flet ($e1419 (<= ?e215 ?e393))
+(flet ($e1420 (= ?e378 ?e255))
+(flet ($e1421 (> ?e4 ?e273))
+(flet ($e1422 (>= ?e307 ?e226))
+(flet ($e1423 (>= ?e285 ?e436))
+(flet ($e1424 (>= ?e344 ?e249))
+(flet ($e1425 (>= ?e369 ?e212))
+(flet ($e1426 (< ?e264 ?e213))
+(flet ($e1427 (< ?e277 ?e317))
+(flet ($e1428 (p0 ?e24 ?e372))
+(flet ($e1429 (<= ?e290 ?e225))
+(flet ($e1430 (> ?e387 ?e407))
+(flet ($e1431 (p0 ?e263 ?e287))
+(flet ($e1432 (> ?e9 ?e428))
+(flet ($e1433 (> ?e321 ?e241))
+(flet ($e1434 (> ?e423 ?e37))
+(flet ($e1435 (distinct ?e402 ?e419))
+(flet ($e1436 (= ?e389 ?e34))
+(flet ($e1437 (> ?e339 ?e347))
+(flet ($e1438 (= ?e256 ?e232))
+(flet ($e1439 (<= ?e214 ?e225))
+(flet ($e1440 (distinct ?e261 ?e380))
+(flet ($e1441 (distinct ?e360 ?e249))
+(flet ($e1442 (<= ?e382 ?e302))
+(flet ($e1443 (<= ?e414 ?e220))
+(flet ($e1444 (>= ?e226 ?e407))
+(flet ($e1445 (<= ?e429 ?e252))
+(flet ($e1446 (<= ?e366 ?e427))
+(flet ($e1447 (>= ?e18 ?e333))
+(flet ($e1448 (<= ?e43 ?e273))
+(flet ($e1449 (>= ?e253 ?e45))
+(flet ($e1450 (distinct ?e324 ?e315))
+(flet ($e1451 (> ?e27 ?e218))
+(flet ($e1452 (< ?e31 ?e9))
+(flet ($e1453 (> ?e374 ?e299))
+(flet ($e1454 (> ?e409 ?e259))
+(flet ($e1455 (= ?e423 ?e410))
+(flet ($e1456 (distinct ?e270 ?e426))
+(flet ($e1457 (distinct ?e328 ?e31))
+(flet ($e1458 (< ?e426 ?e227))
+(flet ($e1459 (< ?e302 ?e21))
+(flet ($e1460 (p0 ?e352 ?e355))
+(flet ($e1461 (<= ?e430 ?e360))
+(flet ($e1462 (= ?e256 ?e269))
+(flet ($e1463 (<= ?e396 ?e28))
+(flet ($e1464 (> ?e372 ?e231))
+(flet ($e1465 (> ?e283 ?e413))
+(flet ($e1466 (>= ?e17 ?e265))
+(flet ($e1467 (>= ?e45 ?e275))
+(flet ($e1468 (= ?e275 ?e315))
+(flet ($e1469 (= ?e247 ?e430))
+(flet ($e1470 (> ?e240 ?e23))
+(flet ($e1471 (> ?e348 ?e262))
+(flet ($e1472 (p0 ?e274 ?e427))
+(flet ($e1473 (distinct ?e5 ?e292))
+(flet ($e1474 (> ?e35 ?e408))
+(flet ($e1475 (= ?e320 ?e217))
+(flet ($e1476 (> ?e256 ?e368))
+(flet ($e1477 (<= ?e380 ?e318))
+(flet ($e1478 (< ?e434 ?e427))
+(flet ($e1479 (distinct ?e369 ?e358))
+(flet ($e1480 (p0 ?e399 ?e225))
+(flet ($e1481 (p0 ?e340 ?e393))
+(flet ($e1482 (p0 ?e236 ?e264))
+(flet ($e1483 (<= ?e360 ?e14))
+(flet ($e1484 (= ?e327 ?e27))
+(flet ($e1485 (p0 ?e389 ?e258))
+(flet ($e1486 (>= ?e393 ?e384))
+(flet ($e1487 (p0 ?e413 ?e351))
+(flet ($e1488 (> ?e323 ?e387))
+(flet ($e1489 (= ?e4 ?e410))
+(flet ($e1490 (p0 ?e306 ?e44))
+(flet ($e1491 (p0 ?e412 ?e212))
+(flet ($e1492 (p0 ?e401 ?e342))
+(flet ($e1493 (> ?e313 ?e37))
+(flet ($e1494 (> ?e370 ?e329))
+(flet ($e1495 (>= ?e313 ?e316))
+(flet ($e1496 (> ?e217 ?e25))
+(flet ($e1497 (distinct ?e348 ?e6))
+(flet ($e1498 (> ?e355 ?e221))
+(flet ($e1499 (p0 ?e244 ?e396))
+(flet ($e1500 (distinct ?e39 ?e352))
+(flet ($e1501 (>= ?e242 ?e213))
+(flet ($e1502 (>= ?e397 ?e335))
+(flet ($e1503 (<= ?e307 ?e375))
+(flet ($e1504 (< ?e400 ?e261))
+(flet ($e1505 (>= ?e401 ?e281))
+(flet ($e1506 (< ?e29 ?e383))
+(flet ($e1507 (> ?e282 ?e344))
+(flet ($e1508 (= ?e346 ?e226))
+(flet ($e1509 (< ?e406 ?e12))
+(flet ($e1510 (distinct ?e381 ?e366))
+(flet ($e1511 (distinct ?e334 ?e310))
+(flet ($e1512 (<= ?e320 ?e298))
+(flet ($e1513 (p0 ?e10 ?e213))
+(flet ($e1514 (distinct ?e331 ?e19))
+(flet ($e1515 (p0 ?e370 ?e343))
+(flet ($e1516 (<= ?e411 ?e414))
+(flet ($e1517 (>= ?e6 ?e44))
+(flet ($e1518 (p0 ?e241 ?e371))
+(flet ($e1519 (p0 ?e298 ?e352))
+(flet ($e1520 (p0 ?e354 ?e348))
+(flet ($e1521 (= ?e368 ?e370))
+(flet ($e1522 (= ?e41 ?e372))
+(flet ($e1523 (<= ?e270 ?e402))
+(flet ($e1524 (= ?e337 ?e23))
+(flet ($e1525 (<= ?e257 ?e391))
+(flet ($e1526 (= ?e48 ?e414))
+(flet ($e1527 (= ?e8 ?e253))
+(flet ($e1528 (= ?e244 ?e308))
+(flet ($e1529 (<= ?e269 ?e349))
+(flet ($e1530 (distinct ?e11 ?e411))
+(flet ($e1531 (= ?e389 ?e403))
+(flet ($e1532 (distinct ?e228 ?e254))
+(flet ($e1533 (<= ?e251 ?e25))
+(flet ($e1534 (> ?e325 ?e370))
+(flet ($e1535 (>= ?e9 ?e28))
+(flet ($e1536 (> ?e218 ?e344))
+(flet ($e1537 (> ?e289 ?e403))
+(flet ($e1538 (>= ?e309 ?e46))
+(flet ($e1539 (= ?e225 ?e359))
+(flet ($e1540 (p0 ?e324 ?e260))
+(flet ($e1541 (p0 ?e386 ?e391))
+(flet ($e1542 (<= ?e14 ?e267))
+(flet ($e1543 (distinct ?e12 ?e244))
+(flet ($e1544 (>= ?e324 ?e402))
+(flet ($e1545 (< ?e362 ?e344))
+(flet ($e1546 (>= ?e310 ?e335))
+(flet ($e1547 (> ?e342 ?e313))
+(flet ($e1548 (>= ?e285 ?e329))
+(flet ($e1549 (<= ?e248 ?e395))
+(flet ($e1550 (> ?e406 ?e239))
+(flet ($e1551 (< ?e289 ?e404))
+(flet ($e1552 (<= ?e336 ?e44))
+(flet ($e1553 (> v0 ?e220))
+(flet ($e1554 (distinct ?e243 ?e359))
+(flet ($e1555 (p0 ?e400 ?e253))
+(flet ($e1556 (>= ?e22 ?e401))
+(flet ($e1557 (distinct ?e222 ?e301))
+(flet ($e1558 (< ?e316 ?e236))
+(flet ($e1559 (p0 ?e406 ?e432))
+(flet ($e1560 (< ?e364 ?e412))
+(flet ($e1561 (<= ?e434 ?e247))
+(flet ($e1562 (distinct ?e234 ?e333))
+(flet ($e1563 (implies $e1334 $e843))
+(flet ($e1564 (implies $e1430 $e1541))
+(flet ($e1565 (not $e663))
+(flet ($e1566 (implies $e523 $e1057))
+(flet ($e1567 (not $e593))
+(flet ($e1568 (and $e1274 $e1406))
+(flet ($e1569 (and $e891 $e1041))
+(flet ($e1570 (iff $e1512 $e713))
+(flet ($e1571 (xor $e1324 $e1193))
+(flet ($e1572 (if_then_else $e557 $e108 $e624))
+(flet ($e1573 (or $e88 $e166))
+(flet ($e1574 (if_then_else $e1008 $e1221 $e1452))
+(flet ($e1575 (if_then_else $e1376 $e729 $e1465))
+(flet ($e1576 (implies $e693 $e1366))
+(flet ($e1577 (if_then_else $e1344 $e1147 $e1486))
+(flet ($e1578 (if_then_else $e155 $e923 $e1019))
+(flet ($e1579 (xor $e909 $e653))
+(flet ($e1580 (iff $e1502 $e1382))
+(flet ($e1581 (iff $e731 $e531))
+(flet ($e1582 (not $e496))
+(flet ($e1583 (or $e1097 $e61))
+(flet ($e1584 (iff $e196 $e940))
+(flet ($e1585 (xor $e461 $e786))
+(flet ($e1586 (not $e1204))
+(flet ($e1587 (implies $e699 $e690))
+(flet ($e1588 (and $e502 $e1358))
+(flet ($e1589 (implies $e163 $e1095))
+(flet ($e1590 (if_then_else $e485 $e1555 $e640))
+(flet ($e1591 (implies $e1545 $e750))
+(flet ($e1592 (if_then_else $e1418 $e1296 $e988))
+(flet ($e1593 (not $e847))
+(flet ($e1594 (implies $e140 $e1021))
+(flet ($e1595 (xor $e1373 $e1306))
+(flet ($e1596 (or $e747 $e1516))
+(flet ($e1597 (xor $e107 $e1577))
+(flet ($e1598 (if_then_else $e697 $e589 $e1173))
+(flet ($e1599 (if_then_else $e536 $e1241 $e1138))
+(flet ($e1600 (iff $e452 $e627))
+(flet ($e1601 (not $e569))
+(flet ($e1602 (and $e893 $e815))
+(flet ($e1603 (xor $e1146 $e895))
+(flet ($e1604 (and $e852 $e1135))
+(flet ($e1605 (and $e1449 $e761))
+(flet ($e1606 (and $e479 $e580))
+(flet ($e1607 (xor $e851 $e127))
+(flet ($e1608 (and $e737 $e855))
+(flet ($e1609 (not $e1533))
+(flet ($e1610 (xor $e1379 $e543))
+(flet ($e1611 (or $e517 $e1422))
+(flet ($e1612 (implies $e1246 $e67))
+(flet ($e1613 (not $e1378))
+(flet ($e1614 (if_then_else $e1556 $e1308 $e1022))
+(flet ($e1615 (implies $e782 $e1170))
+(flet ($e1616 (if_then_else $e885 $e1047 $e642))
+(flet ($e1617 (xor $e1434 $e955))
+(flet ($e1618 (implies $e1461 $e1155))
+(flet ($e1619 (iff $e1415 $e656))
+(flet ($e1620 (xor $e480 $e198))
+(flet ($e1621 (and $e182 $e802))
+(flet ($e1622 (not $e562))
+(flet ($e1623 (not $e1093))
+(flet ($e1624 (if_then_else $e1196 $e1478 $e621))
+(flet ($e1625 (if_then_else $e1464 $e1623 $e1518))
+(flet ($e1626 (and $e1017 $e1320))
+(flet ($e1627 (iff $e1328 $e458))
+(flet ($e1628 (xor $e712 $e1293))
+(flet ($e1629 (not $e612))
+(flet ($e1630 (if_then_else $e767 $e472 $e494))
+(flet ($e1631 (iff $e841 $e868))
+(flet ($e1632 (xor $e714 $e839))
+(flet ($e1633 (not $e764))
+(flet ($e1634 (iff $e1423 $e760))
+(flet ($e1635 (if_then_else $e1408 $e1194 $e644))
+(flet ($e1636 (or $e703 $e1542))
+(flet ($e1637 (xor $e504 $e1055))
+(flet ($e1638 (xor $e947 $e174))
+(flet ($e1639 (implies $e1181 $e1399))
+(flet ($e1640 (if_then_else $e1053 $e1132 $e1548))
+(flet ($e1641 (or $e1578 $e749))
+(flet ($e1642 (iff $e1307 $e202))
+(flet ($e1643 (iff $e1475 $e1267))
+(flet ($e1644 (if_then_else $e766 $e692 $e1174))
+(flet ($e1645 (and $e1351 $e1450))
+(flet ($e1646 (implies $e1091 $e1231))
+(flet ($e1647 (iff $e1436 $e1554))
+(flet ($e1648 (iff $e1122 $e611))
+(flet ($e1649 (if_then_else $e1285 $e728 $e1330))
+(flet ($e1650 (not $e151))
+(flet ($e1651 (xor $e456 $e443))
+(flet ($e1652 (xor $e492 $e1574))
+(flet ($e1653 (or $e679 $e790))
+(flet ($e1654 (iff $e1050 $e628))
+(flet ($e1655 (implies $e967 $e1426))
+(flet ($e1656 (implies $e507 $e1367))
+(flet ($e1657 (xor $e591 $e969))
+(flet ($e1658 (and $e1142 $e187))
+(flet ($e1659 (not $e109))
+(flet ($e1660 (or $e1509 $e604))
+(flet ($e1661 (if_then_else $e570 $e1365 $e1006))
+(flet ($e1662 (iff $e1232 $e1263))
+(flet ($e1663 (iff $e937 $e104))
+(flet ($e1664 (and $e809 $e1002))
+(flet ($e1665 (not $e579))
+(flet ($e1666 (if_then_else $e121 $e553 $e1405))
+(flet ($e1667 (if_then_else $e918 $e865 $e451))
+(flet ($e1668 (implies $e1420 $e1664))
+(flet ($e1669 (or $e677 $e164))
+(flet ($e1670 (if_then_else $e120 $e1651 $e1144))
+(flet ($e1671 (not $e1633))
+(flet ($e1672 (not $e81))
+(flet ($e1673 (not $e184))
+(flet ($e1674 (xor $e1321 $e554))
+(flet ($e1675 (and $e1374 $e98))
+(flet ($e1676 (implies $e545 $e835))
+(flet ($e1677 (xor $e819 $e1514))
+(flet ($e1678 (or $e1284 $e1315))
+(flet ($e1679 (implies $e901 $e1333))
+(flet ($e1680 (iff $e1182 $e957))
+(flet ($e1681 (and $e783 $e482))
+(flet ($e1682 (iff $e1619 $e1569))
+(flet ($e1683 (or $e190 $e810))
+(flet ($e1684 (implies $e812 $e154))
+(flet ($e1685 (implies $e1145 $e206))
+(flet ($e1686 (xor $e1572 $e72))
+(flet ($e1687 (and $e1662 $e1297))
+(flet ($e1688 (iff $e635 $e486))
+(flet ($e1689 (xor $e1648 $e1253))
+(flet ($e1690 (not $e138))
+(flet ($e1691 (xor $e1101 $e1225))
+(flet ($e1692 (iff $e1402 $e1369))
+(flet ($e1693 (if_then_else $e595 $e911 $e1237))
+(flet ($e1694 (xor $e711 $e89))
+(flet ($e1695 (and $e1337 $e1207))
+(flet ($e1696 (or $e1030 $e675))
+(flet ($e1697 (implies $e1158 $e1506))
+(flet ($e1698 (and $e59 $e1179))
+(flet ($e1699 (and $e1326 $e57))
+(flet ($e1700 (implies $e943 $e1626))
+(flet ($e1701 (iff $e827 $e686))
+(flet ($e1702 (iff $e1083 $e683))
+(flet ($e1703 (iff $e625 $e1026))
+(flet ($e1704 (xor $e172 $e148))
+(flet ($e1705 (iff $e547 $e1558))
+(flet ($e1706 (or $e740 $e1036))
+(flet ($e1707 (iff $e1657 $e1044))
+(flet ($e1708 (not $e158))
+(flet ($e1709 (if_then_else $e1086 $e171 $e1001))
+(flet ($e1710 (iff $e854 $e550))
+(flet ($e1711 (implies $e1570 $e1230))
+(flet ($e1712 (not $e1265))
+(flet ($e1713 (iff $e1442 $e1260))
+(flet ($e1714 (or $e1085 $e921))
+(flet ($e1715 (xor $e892 $e146))
+(flet ($e1716 (and $e1084 $e1128))
+(flet ($e1717 (not $e1571))
+(flet ($e1718 (xor $e491 $e1404))
+(flet ($e1719 (iff $e1156 $e1257))
+(flet ($e1720 (not $e1717))
+(flet ($e1721 (iff $e139 $e649))
+(flet ($e1722 (implies $e1711 $e1005))
+(flet ($e1723 (if_then_else $e735 $e1696 $e1521))
+(flet ($e1724 (iff $e609 $e775))
+(flet ($e1725 (or $e600 $e1136))
+(flet ($e1726 (or $e548 $e1362))
+(flet ($e1727 (not $e1724))
+(flet ($e1728 (or $e53 $e886))
+(flet ($e1729 (or $e1562 $e1223))
+(flet ($e1730 (not $e1000))
+(flet ($e1731 (if_then_else $e1707 $e1718 $e1352))
+(flet ($e1732 (not $e1435))
+(flet ($e1733 (or $e1348 $e471))
+(flet ($e1734 (not $e1594))
+(flet ($e1735 (xor $e897 $e1325))
+(flet ($e1736 (or $e1733 $e1443))
+(flet ($e1737 (implies $e1524 $e1431))
+(flet ($e1738 (xor $e664 $e578))
+(flet ($e1739 (or $e1010 $e1550))
+(flet ($e1740 (iff $e1681 $e1215))
+(flet ($e1741 (if_then_else $e1375 $e129 $e1698))
+(flet ($e1742 (iff $e134 $e707))
+(flet ($e1743 (implies $e1039 $e1656))
+(flet ($e1744 (iff $e773 $e116))
+(flet ($e1745 (not $e1309))
+(flet ($e1746 (implies $e1543 $e1332))
+(flet ($e1747 (if_then_else $e204 $e1123 $e1611))
+(flet ($e1748 (implies $e1630 $e866))
+(flet ($e1749 (xor $e442 $e1048))
+(flet ($e1750 (not $e836))
+(flet ($e1751 (and $e1088 $e828))
+(flet ($e1752 (iff $e905 $e1682))
+(flet ($e1753 (xor $e1596 $e179))
+(flet ($e1754 (xor $e924 $e525))
+(flet ($e1755 (or $e60 $e488))
+(flet ($e1756 (and $e730 $e1536))
+(flet ($e1757 (iff $e1140 $e183))
+(flet ($e1758 (implies $e1713 $e903))
+(flet ($e1759 (iff $e481 $e475))
+(flet ($e1760 (and $e1090 $e648))
+(flet ($e1761 (or $e176 $e1412))
+(flet ($e1762 (iff $e1742 $e1339))
+(flet ($e1763 (iff $e71 $e1224))
+(flet ($e1764 (implies $e440 $e1705))
+(flet ($e1765 (if_then_else $e1667 $e1622 $e976))
+(flet ($e1766 (implies $e79 $e1178))
+(flet ($e1767 (if_then_else $e756 $e510 $e1300))
+(flet ($e1768 (and $e1190 $e1409))
+(flet ($e1769 (or $e516 $e762))
+(flet ($e1770 (implies $e1500 $e1169))
+(flet ($e1771 (iff $e1740 $e1255))
+(flet ($e1772 (iff $e704 $e1261))
+(flet ($e1773 (not $e1121))
+(flet ($e1774 (xor $e1143 $e1567))
+(flet ($e1775 (xor $e1134 $e1316))
+(flet ($e1776 (and $e1116 $e1185))
+(flet ($e1777 (not $e605))
+(flet ($e1778 (and $e953 $e1745))
+(flet ($e1779 (implies $e1256 $e62))
+(flet ($e1780 (implies $e56 $e1491))
+(flet ($e1781 (implies $e881 $e201))
+(flet ($e1782 (or $e1584 $e1130))
+(flet ($e1783 (iff $e596 $e709))
+(flet ($e1784 (xor $e1028 $e1032))
+(flet ($e1785 (iff $e130 $e1283))
+(flet ($e1786 (implies $e1560 $e945))
+(flet ($e1787 (and $e563 $e542))
+(flet ($e1788 (implies $e555 $e1699))
+(flet ($e1789 (iff $e193 $e654))
+(flet ($e1790 (implies $e1692 $e971))
+(flet ($e1791 (not $e1251))
+(flet ($e1792 (not $e1220))
+(flet ($e1793 (not $e1150))
+(flet ($e1794 (and $e1710 $e1552))
+(flet ($e1795 (not $e1599))
+(flet ($e1796 (not $e755))
+(flet ($e1797 (or $e1534 $e1602))
+(flet ($e1798 (iff $e774 $e1238))
+(flet ($e1799 (if_then_else $e1356 $e574 $e1322))
+(flet ($e1800 (or $e1004 $e200))
+(flet ($e1801 (iff $e1009 $e708))
+(flet ($e1802 (if_then_else $e1526 $e845 $e527))
+(flet ($e1803 (xor $e1485 $e725))
+(flet ($e1804 (iff $e1595 $e1748))
+(flet ($e1805 (or $e927 $e603))
+(flet ($e1806 (or $e178 $e446))
+(flet ($e1807 (implies $e626 $e1607))
+(flet ($e1808 (xor $e985 $e776))
+(flet ($e1809 (not $e1795))
+(flet ($e1810 (not $e904))
+(flet ($e1811 (if_then_else $e106 $e1803 $e114))
+(flet ($e1812 (if_then_else $e797 $e1113 $e102))
+(flet ($e1813 (not $e972))
+(flet ($e1814 (xor $e1678 $e1551))
+(flet ($e1815 (xor $e889 $e1259))
+(flet ($e1816 (and $e622 $e1149))
+(flet ($e1817 (implies $e1655 $e1693))
+(flet ($e1818 (not $e1597))
+(flet ($e1819 (implies $e1350 $e1761))
+(flet ($e1820 (xor $e157 $e1227))
+(flet ($e1821 (iff $e1233 $e73))
+(flet ($e1822 (not $e794))
+(flet ($e1823 (not $e798))
+(flet ($e1824 (and $e944 $e825))
+(flet ($e1825 (if_then_else $e1046 $e787 $e1244))
+(flet ($e1826 (and $e1646 $e181))
+(flet ($e1827 (xor $e1124 $e1016))
+(flet ($e1828 (if_then_else $e495 $e1822 $e863))
+(flet ($e1829 (not $e1034))
+(flet ($e1830 (and $e619 $e678))
+(flet ($e1831 (xor $e1480 $e87))
+(flet ($e1832 (implies $e128 $e1242))
+(flet ($e1833 (if_then_else $e1826 $e1537 $e1152))
+(flet ($e1834 (not $e188))
+(flet ($e1835 (xor $e514 $e962))
+(flet ($e1836 (not $e1625))
+(flet ($e1837 (if_then_else $e521 $e133 $e636))
+(flet ($e1838 (or $e597 $e814))
+(flet ($e1839 (or $e454 $e484))
+(flet ($e1840 (xor $e449 $e1802))
+(flet ($e1841 (if_then_else $e476 $e1612 $e1783))
+(flet ($e1842 (if_then_else $e1206 $e1808 $e987))
+(flet ($e1843 (not $e1620))
+(flet ($e1844 (if_then_else $e630 $e1775 $e1613))
+(flet ($e1845 (or $e846 $e739))
+(flet ($e1846 (xor $e142 $e1764))
+(flet ($e1847 (iff $e1738 $e84))
+(flet ($e1848 (implies $e1349 $e1492))
+(flet ($e1849 (or $e1062 $e1687))
+(flet ($e1850 (and $e468 $e160))
+(flet ($e1851 (iff $e912 $e52))
+(flet ($e1852 (or $e175 $e1840))
+(flet ($e1853 (xor $e853 $e1527))
+(flet ($e1854 (or $e1104 $e789))
+(flet ($e1855 (iff $e883 $e959))
+(flet ($e1856 (if_then_else $e1593 $e763 $e1689))
+(flet ($e1857 (implies $e922 $e1632))
+(flet ($e1858 (and $e1071 $e1118))
+(flet ($e1859 (if_then_else $e487 $e1007 $e520))
+(flet ($e1860 (implies $e1364 $e1785))
+(flet ($e1861 (iff $e844 $e1125))
+(flet ($e1862 (and $e1647 $e1319))
+(flet ($e1863 (xor $e1532 $e1154))
+(flet ($e1864 (and $e1015 $e1721))
+(flet ($e1865 (and $e808 $e807))
+(flet ($e1866 (not $e194))
+(flet ($e1867 (and $e186 $e1778))
+(flet ($e1868 (if_then_else $e925 $e122 $e1565))
+(flet ($e1869 (and $e584 $e1347))
+(flet ($e1870 (iff $e1226 $e117))
+(flet ($e1871 (or $e1561 $e1466))
+(flet ($e1872 (implies $e665 $e1771))
+(flet ($e1873 (implies $e1401 $e170))
+(flet ($e1874 (iff $e68 $e822))
+(flet ($e1875 (xor $e977 $e954))
+(flet ($e1876 (iff $e1077 $e1769))
+(flet ($e1877 (xor $e1068 $e153))
+(flet ($e1878 (or $e1218 $e658))
+(flet ($e1879 (if_then_else $e1427 $e1217 $e1360))
+(flet ($e1880 (xor $e1858 $e757))
+(flet ($e1881 (and $e1716 $e1559))
+(flet ($e1882 (implies $e1020 $e1484))
+(flet ($e1883 (if_then_else $e1239 $e862 $e1288))
+(flet ($e1884 (or $e1522 $e180))
+(flet ($e1885 (and $e1645 $e920))
+(flet ($e1886 (iff $e795 $e1074))
+(flet ($e1887 (not $e769))
+(flet ($e1888 (xor $e791 $e1616))
+(flet ($e1889 (if_then_else $e1766 $e620 $e1219))
+(flet ($e1890 (xor $e602 $e960))
+(flet ($e1891 (not $e721))
+(flet ($e1892 (not $e861))
+(flet ($e1893 (implies $e581 $e1750))
+(flet ($e1894 (and $e931 $e926))
+(flet ($e1895 (xor $e1751 $e165))
+(flet ($e1896 (and $e670 $e1445))
+(flet ($e1897 (if_then_else $e1666 $e169 $e983))
+(flet ($e1898 (xor $e1165 $e1070))
+(flet ($e1899 (xor $e902 $e1292))
+(flet ($e1900 (implies $e509 $e1162))
+(flet ($e1901 (implies $e1384 $e1477))
+(flet ($e1902 (implies $e587 $e1832))
+(flet ($e1903 (if_then_else $e751 $e813 $e1702))
+(flet ($e1904 (xor $e1159 $e894))
+(flet ($e1905 (xor $e447 $e1867))
+(flet ($e1906 (implies $e558 $e1392))
+(flet ($e1907 (implies $e650 $e538))
+(flet ($e1908 (and $e1510 $e674))
+(flet ($e1909 (if_then_else $e1317 $e1103 $e696))
+(flet ($e1910 (and $e1833 $e1793))
+(flet ($e1911 (not $e631))
+(flet ($e1912 (not $e1419))
+(flet ($e1913 (if_then_else $e1198 $e1031 $e1198))
+(flet ($e1914 (if_then_else $e1732 $e69 $e928))
+(flet ($e1915 (and $e1586 $e1734))
+(flet ($e1916 (and $e645 $e1786))
+(flet ($e1917 (iff $e477 $e669))
+(flet ($e1918 (if_then_else $e1823 $e1119 $e811))
+(flet ($e1919 (implies $e1013 $e1871))
+(flet ($e1920 (if_then_else $e1519 $e1462 $e1511))
+(flet ($e1921 (iff $e1659 $e1346))
+(flet ($e1922 (implies $e820 $e1388))
+(flet ($e1923 (if_then_else $e1792 $e1472 $e720))
+(flet ($e1924 (iff $e716 $e1779))
+(flet ($e1925 (implies $e1730 $e1397))
+(flet ($e1926 (not $e1157))
+(flet ($e1927 (or $e1609 $e914))
+(flet ($e1928 (xor $e752 $e1741))
+(flet ($e1929 (iff $e1394 $e1697))
+(flet ($e1930 (iff $e601 $e65))
+(flet ($e1931 (or $e1900 $e1092))
+(flet ($e1932 (not $e1275))
+(flet ($e1933 (implies $e1386 $e126))
+(flet ($e1934 (iff $e1294 $e1663))
+(flet ($e1935 (and $e641 $e1414))
+(flet ($e1936 (not $e698))
+(flet ($e1937 (if_then_else $e1563 $e192 $e1539))
+(flet ($e1938 (implies $e1859 $e1933))
+(flet ($e1939 (not $e453))
+(flet ($e1940 (if_then_else $e1385 $e1759 $e606))
+(flet ($e1941 (implies $e1258 $e159))
+(flet ($e1942 (xor $e1056 $e478))
+(flet ($e1943 (if_then_else $e1691 $e1746 $e210))
+(flet ($e1944 (if_then_else $e1726 $e1671 $e125))
+(flet ($e1945 (implies $e1370 $e1889))
+(flet ($e1946 (or $e1736 $e1168))
+(flet ($e1947 (iff $e1476 $e965))
+(flet ($e1948 (iff $e1248 $e1166))
+(flet ($e1949 (xor $e657 $e1387))
+(flet ($e1950 (or $e916 $e577))
+(flet ($e1951 (iff $e964 $e1501))
+(flet ($e1952 (implies $e1453 $e119))
+(flet ($e1953 (not $e842))
+(flet ($e1954 (and $e1094 $e1813))
+(flet ($e1955 (implies $e1566 $e1915))
+(flet ($e1956 (iff $e1735 $e1576))
+(flet ($e1957 (xor $e796 $e908))
+(flet ($e1958 (iff $e1148 $e54))
+(flet ($e1959 (iff $e1327 $e444))
+(flet ($e1960 (iff $e1298 $e1812))
+(flet ($e1961 (not $e1042))
+(flet ($e1962 (and $e1311 $e1818))
+(flet ($e1963 (and $e1743 $e1390))
+(flet ($e1964 (not $e101))
+(flet ($e1965 (or $e1490 $e1163))
+(flet ($e1966 (or $e1827 $e1018))
+(flet ($e1967 (if_then_else $e817 $e1497 $e500))
+(flet ($e1968 (and $e1072 $e1249))
+(flet ($e1969 (xor $e1914 $e982))
+(flet ($e1970 (and $e1389 $e732))
+(flet ($e1971 (implies $e74 $e1209))
+(flet ($e1972 (or $e1911 $e996))
+(flet ($e1973 (not $e1781))
+(flet ($e1974 (not $e1338))
+(flet ($e1975 (and $e1685 $e1825))
+(flet ($e1976 (not $e526))
+(flet ($e1977 (if_then_else $e1614 $e1482 $e483))
+(flet ($e1978 (implies $e1794 $e1879))
+(flet ($e1979 (implies $e1488 $e1355))
+(flet ($e1980 (implies $e1203 $e1669))
+(flet ($e1981 (or $e86 $e150))
+(flet ($e1982 (xor $e1127 $e981))
+(flet ($e1983 (or $e544 $e1585))
+(flet ($e1984 (if_then_else $e1904 $e576 $e132))
+(flet ($e1985 (or $e1038 $e1487))
+(flet ($e1986 (or $e1629 $e1187))
+(flet ($e1987 (and $e1305 $e1676))
+(flet ($e1988 (xor $e1451 $e1688))
+(flet ($e1989 (or $e1923 $e966))
+(flet ($e1990 (or $e1273 $e1208))
+(flet ($e1991 (iff $e1703 $e1383))
+(flet ($e1992 (implies $e898 $e1788))
+(flet ($e1993 (xor $e1129 $e1368))
+(flet ($e1994 (iff $e1172 $e933))
+(flet ($e1995 (or $e131 $e493))
+(flet ($e1996 (not $e1270))
+(flet ($e1997 (not $e1590))
+(flet ($e1998 (iff $e1964 $e124))
+(flet ($e1999 (not $e1739))
+(flet ($e2000 (not $e549))
+(flet ($e2001 (if_then_else $e1195 $e913 $e582))
+(flet ($e2002 (not $e1805))
+(flet ($e2003 (iff $e1323 $e533))
+(flet ($e2004 (and $e1815 $e1725))
+(flet ($e2005 (if_then_else $e1966 $e90 $e1636))
+(flet ($e2006 (if_then_else $e1457 $e1868 $e1988))
+(flet ($e2007 (and $e681 $e585))
+(flet ($e2008 (or $e1973 $e1893))
+(flet ($e2009 (and $e1535 $e1621))
+(flet ($e2010 (iff $e936 $e1819))
+(flet ($e2011 (and $e512 $e667))
+(flet ($e2012 (xor $e534 $e1846))
+(flet ($e2013 (iff $e989 $e726))
+(flet ($e2014 (iff $e942 $e1665))
+(flet ($e2015 (or $e1807 $e1234))
+(flet ($e2016 (iff $e167 $e143))
+(flet ($e2017 (implies $e1411 $e499))
+(flet ($e2018 (xor $e1709 $e556))
+(flet ($e2019 (not $e1313))
+(flet ($e2020 (if_then_else $e177 $e1568 $e95))
+(flet ($e2021 (not $e1838))
+(flet ($e2022 (and $e115 $e2015))
+(flet ($e2023 (iff $e1066 $e685))
+(flet ($e2024 (iff $e614 $e63))
+(flet ($e2025 (or $e505 $e1553))
+(flet ($e2026 (xor $e1440 $e2020))
+(flet ($e2027 (xor $e457 $e919))
+(flet ($e2028 (and $e748 $e1672))
+(flet ($e2029 (xor $e1455 $e610))
+(flet ($e2030 (and $e1922 $e1806))
+(flet ($e2031 (if_then_else $e875 $e78 $e1836))
+(flet ($e2032 (xor $e450 $e450))
+(flet ($e2033 (xor $e997 $e583))
+(flet ($e2034 (iff $e118 $e207))
+(flet ($e2035 (iff $e2027 $e1999))
+(flet ($e2036 (if_then_else $e85 $e2011 $e743))
+(flet ($e2037 (not $e780))
+(flet ($e2038 (and $e1413 $e1849))
+(flet ($e2039 (implies $e684 $e1952))
+(flet ($e2040 (if_then_else $e1329 $e1776 $e568))
+(flet ($e2041 (and $e1126 $e96))
+(flet ($e2042 (if_then_else $e530 $e1749 $e1433))
+(flet ($e2043 (and $e1841 $e1673))
+(flet ($e2044 (not $e858))
+(flet ($e2045 (xor $e1096 $e1557))
+(flet ($e2046 (if_then_else $e1398 $e1063 $e1027))
+(flet ($e2047 (iff $e2002 $e694))
+(flet ($e2048 (implies $e2017 $e145))
+(flet ($e2049 (implies $e1508 $e754))
+(flet ($e2050 (if_then_else $e2003 $e910 $e1340))
+(flet ($e2051 (implies $e1131 $e1432))
+(flet ($e2052 (implies $e1897 $e1014))
+(flet ($e2053 (or $e1731 $e687))
+(flet ($e2054 (iff $e1817 $e992))
+(flet ($e2055 (implies $e864 $e907))
+(flet ($e2056 (or $e1854 $e1932))
+(flet ($e2057 (if_then_else $e906 $e1582 $e1023))
+(flet ($e2058 (not $e984))
+(flet ($e2059 (and $e1371 $e832))
+(flet ($e2060 (xor $e513 $e941))
+(flet ($e2061 (implies $e1012 $e1372))
+(flet ($e2062 (xor $e719 $e1961))
+(flet ($e2063 (xor $e535 $e75))
+(flet ($e2064 (xor $e1845 $e1888))
+(flet ($e2065 (if_then_else $e1768 $e1345 $e1359))
+(flet ($e2066 (or $e58 $e1589))
+(flet ($e2067 (if_then_else $e1948 $e1737 $e1986))
+(flet ($e2068 (and $e1495 $e1928))
+(flet ($e2069 (or $e1228 $e1918))
+(flet ($e2070 (not $e93))
+(flet ($e2071 (or $e1099 $e1758))
+(flet ($e2072 (implies $e1865 $e2068))
+(flet ($e2073 (if_then_else $e1164 $e528 $e1974))
+(flet ($e2074 (or $e1266 $e1885))
+(flet ($e2075 (or $e803 $e1229))
+(flet ($e2076 (or $e830 $e1100))
+(flet ($e2077 (and $e753 $e2037))
+(flet ($e2078 (iff $e958 $e745))
+(flet ($e2079 (and $e211 $e970))
+(flet ($e2080 (implies $e1115 $e1920))
+(flet ($e2081 (and $e1581 $e1958))
+(flet ($e2082 (not $e2061))
+(flet ($e2083 (xor $e1087 $e652))
+(flet ($e2084 (or $e2009 $e209))
+(flet ($e2085 (iff $e1111 $e2067))
+(flet ($e2086 (iff $e1760 $e1800))
+(flet ($e2087 (xor $e1447 $e978))
+(flet ($e2088 (implies $e804 $e785))
+(flet ($e2089 (iff $e599 $e710))
+(flet ($e2090 (xor $e2069 $e1587))
+(flet ($e2091 (or $e634 $e1982))
+(flet ($e2092 (and $e1279 $e961))
+(flet ($e2093 (xor $e1881 $e1882))
+(flet ($e2094 (if_then_else $e1634 $e1078 $e1628))
+(flet ($e2095 (or $e647 $e1987))
+(flet ($e2096 (or $e1714 $e594))
+(flet ($e2097 (or $e986 $e2034))
+(flet ($e2098 (implies $e1816 $e659))
+(flet ($e2099 (or $e2064 $e629))
+(flet ($e2100 (or $e540 $e968))
+(flet ($e2101 (or $e501 $e1884))
+(flet ($e2102 (or $e1377 $e1712))
+(flet ($e2103 (and $e1520 $e1498))
+(flet ($e2104 (not $e639))
+(flet ($e2105 (implies $e2096 $e1421))
+(flet ($e2106 (or $e203 $e2075))
+(flet ($e2107 (not $e993))
+(flet ($e2108 (and $e1310 $e2004))
+(flet ($e2109 (xor $e445 $e1984))
+(flet ($e2110 (or $e1864 $e1917))
+(flet ($e2111 (not $e1043))
+(flet ($e2112 (xor $e1727 $e1528))
+(flet ($e2113 (not $e1925))
+(flet ($e2114 (if_then_else $e1471 $e1601 $e1089))
+(flet ($e2115 (if_then_else $e1895 $e1701 $e2043))
+(flet ($e2116 (or $e655 $e1444))
+(flet ($e2117 (and $e722 $e1424))
+(flet ($e2118 (or $e1811 $e1644))
+(flet ($e2119 (implies $e539 $e1151))
+(flet ($e2120 (or $e1067 $e565))
+(flet ($e2121 (iff $e746 $e1674))
+(flet ($e2122 (or $e1011 $e688))
+(flet ($e2123 (xor $e1658 $e618))
+(flet ($e2124 (and $e1891 $e1513))
+(flet ($e2125 (and $e1200 $e2080))
+(flet ($e2126 (if_then_else $e123 $e1243 $e1494))
+(flet ($e2127 (xor $e666 $e975))
+(flet ($e2128 (iff $e2106 $e859))
+(flet ($e2129 (or $e1496 $e2112))
+(flet ($e2130 (iff $e1114 $e1302))
+(flet ($e2131 (or $e1790 $e1171))
+(flet ($e2132 (if_then_else $e2001 $e2012 $e2130))
+(flet ($e2133 (and $e1753 $e2056))
+(flet ($e2134 (or $e1839 $e1855))
+(flet ($e2135 (not $e1481))
+(flet ($e2136 (xor $e1968 $e586))
+(flet ($e2137 (if_then_else $e2119 $e1642 $e50))
+(flet ($e2138 (and $e1604 $e1910))
+(flet ($e2139 (not $e1863))
+(flet ($e2140 (or $e1892 $e718))
+(flet ($e2141 (implies $e2042 $e489))
+(flet ($e2142 (implies $e2062 $e1765))
+(flet ($e2143 (and $e1065 $e2035))
+(flet ($e2144 (not $e2102))
+(flet ($e2145 (if_then_else $e110 $e2079 $e2005))
+(flet ($e2146 (not $e1439))
+(flet ($e2147 (or $e460 $e2060))
+(flet ($e2148 (xor $e1547 $e2116))
+(flet ($e2149 (and $e1649 $e856))
+(flet ($e2150 (and $e2026 $e2101))
+(flet ($e2151 (not $e1844))
+(flet ($e2152 (xor $e1271 $e1393))
+(flet ($e2153 (not $e1247))
+(flet ($e2154 (implies $e137 $e2113))
+(flet ($e2155 (implies $e189 $e2038))
+(flet ($e2156 (or $e1670 $e1744))
+(flet ($e2157 (implies $e2150 $e1029))
+(flet ($e2158 (implies $e1949 $e2125))
+(flet ($e2159 (or $e1058 $e741))
+(flet ($e2160 (iff $e1180 $e837))
+(flet ($e2161 (implies $e952 $e1950))
+(flet ($e2162 (implies $e2138 $e701))
+(flet ($e2163 (not $e2055))
+(flet ($e2164 (if_then_else $e105 $e792 $e1704))
+(flet ($e2165 (iff $e1583 $e1639))
+(flet ($e2166 (implies $e2083 $e2128))
+(flet ($e2167 (implies $e1254 $e1927))
+(flet ($e2168 (and $e2029 $e1899))
+(flet ($e2169 (or $e1720 $e2135))
+(flet ($e2170 (implies $e1448 $e2082))
+(flet ($e2171 (implies $e1870 $e1784))
+(flet ($e2172 (xor $e1605 $e2073))
+(flet ($e2173 (implies $e1777 $e1883))
+(flet ($e2174 (implies $e1504 $e103))
+(flet ($e2175 (implies $e1894 $e935))
+(flet ($e2176 (or $e1335 $e1898))
+(flet ($e2177 (or $e100 $e1544))
+(flet ($e2178 (if_then_else $e1336 $e1290 $e2019))
+(flet ($e2179 (or $e934 $e617))
+(flet ($e2180 (and $e1728 $e2157))
+(flet ($e2181 (xor $e633 $e723))
+(flet ($e2182 (iff $e506 $e939))
+(flet ($e2183 (if_then_else $e1213 $e1890 $e2145))
+(flet ($e2184 (xor $e1291 $e2013))
+(flet ($e2185 (and $e2099 $e1977))
+(flet ($e2186 (implies $e702 $e1575))
+(flet ($e2187 (or $e1318 $e1978))
+(flet ($e2188 (or $e879 $e2110))
+(flet ($e2189 (iff $e1282 $e1953))
+(flet ($e2190 (if_then_else $e888 $e1133 $e2089))
+(flet ($e2191 (xor $e1641 $e1963))
+(flet ($e2192 (if_then_else $e1236 $e2137 $e1468))
+(flet ($e2193 (not $e1183))
+(flet ($e2194 (implies $e1205 $e1110))
+(flet ($e2195 (if_then_else $e1624 $e1303 $e1212))
+(flet ($e2196 (and $e999 $e1886))
+(flet ($e2197 (xor $e1191 $e1035))
+(flet ($e2198 (or $e1796 $e1141))
+(flet ($e2199 (not $e1700))
+(flet ($e2200 (xor $e651 $e1003))
+(flet ($e2201 (if_then_else $e1546 $e616 $e1470))
+(flet ($e2202 (not $e2028))
+(flet ($e2203 (implies $e2059 $e1679))
+(flet ($e2204 (or $e1102 $e1167))
+(flet ($e2205 (xor $e860 $e1073))
+(flet ($e2206 (not $e994))
+(flet ($e2207 (iff $e838 $e195))
+(flet ($e2208 (implies $e672 $e1610))
+(flet ($e2209 (iff $e1814 $e1852))
+(flet ($e2210 (not $e2132))
+(flet ($e2211 (not $e1199))
+(flet ($e2212 (implies $e473 $e818))
+(flet ($e2213 (or $e1960 $e1997))
+(flet ($e2214 (not $e147))
+(flet ($e2215 (if_then_else $e1941 $e551 $e1862))
+(flet ($e2216 (if_then_else $e1804 $e1176 $e765))
+(flet ($e2217 (xor $e2171 $e82))
+(flet ($e2218 (or $e784 $e1467))
+(flet ($e2219 (and $e2183 $e1049))
+(flet ($e2220 (xor $e2058 $e1202))
+(flet ($e2221 (xor $e2153 $e1801))
+(flet ($e2222 (if_then_else $e1299 $e1272 $e1787))
+(flet ($e2223 (and $e1069 $e963))
+(flet ($e2224 (not $e2078))
+(flet ($e2225 (or $e1757 $e801))
+(flet ($e2226 (implies $e882 $e1079))
+(flet ($e2227 (or $e995 $e1896))
+(flet ($e2228 (or $e2041 $e2126))
+(flet ($e2229 (xor $e1931 $e2180))
+(flet ($e2230 (implies $e1945 $e561))
+(flet ($e2231 (xor $e691 $e1573))
+(flet ($e2232 (and $e1809 $e1993))
+(flet ($e2233 (if_then_else $e1579 $e1474 $e191))
+(flet ($e2234 (implies $e2169 $e734))
+(flet ($e2235 (iff $e208 $e2140))
+(flet ($e2236 (not $e2016))
+(flet ($e2237 (iff $e1951 $e1913))
+(flet ($e2238 (iff $e2164 $e884))
+(flet ($e2239 (or $e1847 $e1416))
+(flet ($e2240 (if_then_else $e2139 $e1998 $e705))
+(flet ($e2241 (iff $e1635 $e2118))
+(flet ($e2242 (xor $e1033 $e1677))
+(flet ($e2243 (not $e141))
+(flet ($e2244 (iff $e1214 $e205))
+(flet ($e2245 (xor $e1580 $e2129))
+(flet ($e2246 (xor $e717 $e1222))
+(flet ($e2247 (iff $e2232 $e2230))
+(flet ($e2248 (if_then_else $e1188 $e112 $e1799))
+(flet ($e2249 (not $e1906))
+(flet ($e2250 (and $e980 $e896))
+(flet ($e2251 (iff $e1210 $e2211))
+(flet ($e2252 (implies $e1994 $e1772))
+(flet ($e2253 (implies $e1456 $e511))
+(flet ($e2254 (iff $e829 $e2243))
+(flet ($e2255 (and $e2209 $e1618))
+(flet ($e2256 (implies $e455 $e646))
+(flet ($e2257 (iff $e1831 $e1851))
+(flet ($e2258 (xor $e2134 $e552))
+(flet ($e2259 (implies $e850 $e1281))
+(flet ($e2260 (xor $e1603 $e668))
+(flet ($e2261 (not $e1912))
+(flet ($e2262 (not $e1829))
+(flet ($e2263 (implies $e1934 $e2033))
+(flet ($e2264 (and $e2242 $e537))
+(flet ($e2265 (if_then_else $e1024 $e1592 $e1354))
+(flet ($e2266 (iff $e871 $e564))
+(flet ($e2267 (xor $e826 $e1919))
+(flet ($e2268 (iff $e1860 $e2237))
+(flet ($e2269 (or $e2155 $e2262))
+(flet ($e2270 (iff $e2006 $e2087))
+(flet ($e2271 (if_then_else $e1276 $e2246 $e1441))
+(flet ($e2272 (if_then_else $e2221 $e2074 $e623))
+(flet ($e2273 (iff $e2141 $e1493))
+(flet ($e2274 (if_then_else $e1391 $e2030 $e2198))
+(flet ($e2275 (or $e1694 $e2258))
+(flet ($e2276 (if_then_else $e524 $e917 $e1947))
+(flet ($e2277 (or $e2050 $e2098))
+(flet ($e2278 (if_then_else $e1661 $e1661 $e673))
+(flet ($e2279 (iff $e1853 $e1061))
+(flet ($e2280 (and $e742 $e632))
+(flet ($e2281 (xor $e2052 $e1650))
+(flet ($e2282 (or $e2278 $e867))
+(flet ($e2283 (if_then_else $e1153 $e1507 $e1887))
+(flet ($e2284 (not $e1719))
+(flet ($e2285 (iff $e2227 $e2107))
+(flet ($e2286 (or $e441 $e1109))
+(flet ($e2287 (xor $e1120 $e2148))
+(flet ($e2288 (and $e2104 $e929))
+(flet ($e2289 (implies $e2151 $e2181))
+(flet ($e2290 (implies $e2168 $e2162))
+(flet ($e2291 (xor $e1970 $e463))
+(flet ($e2292 (if_then_else $e869 $e2282 $e998))
+(flet ($e2293 (iff $e1856 $e1695))
+(flet ($e2294 (if_then_else $e474 $e949 $e1240))
+(flet ($e2295 (not $e607))
+(flet ($e2296 (if_then_else $e2266 $e1686 $e1082))
+(flet ($e2297 (xor $e2206 $e1235))
+(flet ($e2298 (if_then_else $e1752 $e1075 $e503))
+(flet ($e2299 (and $e2158 $e2196))
+(flet ($e2300 (xor $e1955 $e1250))
+(flet ($e2301 (if_then_else $e2192 $e1446 $e1780))
+(flet ($e2302 (xor $e2291 $e1051))
+(flet ($e2303 (iff $e2063 $e1873))
+(flet ($e2304 (if_then_else $e2217 $e915 $e772))
+(flet ($e2305 (implies $e2197 $e66))
+(flet ($e2306 (or $e1381 $e2122))
+(flet ($e2307 (if_then_else $e94 $e2100 $e1652))
+(flet ($e2308 (iff $e1866 $e768))
+(flet ($e2309 (iff $e1835 $e567))
+(flet ($e2310 (if_then_else $e466 $e2248 $e1280))
+(flet ($e2311 (implies $e2178 $e2172))
+(flet ($e2312 (xor $e2285 $e1277))
+(flet ($e2313 (and $e870 $e779))
+(flet ($e2314 (xor $e2247 $e1289))
+(flet ($e2315 (and $e51 $e469))
+(flet ($e2316 (xor $e1429 $e727))
+(flet ($e2317 (xor $e2187 $e2189))
+(flet ($e2318 (xor $e1437 $e2014))
+(flet ($e2319 (if_then_else $e1821 $e800 $e1479))
+(flet ($e2320 (xor $e2293 $e560))
+(flet ($e2321 (not $e1454))
+(flet ($e2322 (or $e1706 $e185))
+(flet ($e2323 (or $e515 $e2229))
+(flet ($e2324 (if_then_else $e1410 $e2241 $e144))
+(flet ($e2325 (xor $e76 $e1954))
+(flet ($e2326 (and $e1606 $e575))
+(flet ($e2327 (or $e529 $e974))
+(flet ($e2328 (implies $e199 $e2292))
+(flet ($e2329 (implies $e2166 $e823))
+(flet ($e2330 (if_then_else $e2277 $e1962 $e695))
+(flet ($e2331 (xor $e2294 $e2326))
+(flet ($e2332 (not $e2312))
+(flet ($e2333 (iff $e2228 $e758))
+(flet ($e2334 (if_then_else $e135 $e793 $e899))
+(flet ($e2335 (not $e2210))
+(flet ($e2336 (iff $e849 $e467))
+(flet ($e2337 (iff $e1729 $e1843))
+(flet ($e2338 (not $e1834))
+(flet ($e2339 (if_then_else $e1211 $e2264 $e566))
+(flet ($e2340 (or $e2299 $e680))
+(flet ($e2341 (not $e1216))
+(flet ($e2342 (not $e1797))
+(flet ($e2343 (implies $e2114 $e152))
+(flet ($e2344 (if_then_else $e1177 $e878 $e1517))
+(flet ($e2345 (and $e2091 $e1992))
+(flet ($e2346 (or $e2165 $e1810))
+(flet ($e2347 (xor $e1901 $e161))
+(flet ($e2348 (xor $e1969 $e2092))
+(flet ($e2349 (not $e2297))
+(flet ($e2350 (and $e1929 $e559))
+(flet ($e2351 (implies $e2344 $e2143))
+(flet ($e2352 (if_then_else $e77 $e2321 $e874))
+(flet ($e2353 (not $e2136))
+(flet ($e2354 (if_then_else $e1523 $e99 $e1530))
+(flet ($e2355 (xor $e1872 $e1684))
+(flet ($e2356 (not $e2273))
+(flet ($e2357 (implies $e1341 $e1791))
+(flet ($e2358 (implies $e1875 $e1600))
+(flet ($e2359 (xor $e2340 $e573))
+(flet ($e2360 (or $e2072 $e2216))
+(flet ($e2361 (not $e1407))
+(flet ($e2362 (if_then_else $e2021 $e2353 $e799))
+(flet ($e2363 (and $e572 $e2223))
+(flet ($e2364 (or $e1458 $e490))
+(flet ($e2365 (iff $e1357 $e156))
+(flet ($e2366 (implies $e2260 $e890))
+(flet ($e2367 (and $e1540 $e1059))
+(flet ($e2368 (xor $e2358 $e2081))
+(flet ($e2369 (if_then_else $e2195 $e660 $e1767))
+(flet ($e2370 (iff $e448 $e1861))
+(flet ($e2371 (and $e2170 $e1538))
+(flet ($e2372 (if_then_else $e2320 $e2337 $e777))
+(flet ($e2373 (if_then_else $e1874 $e1763 $e2356))
+(flet ($e2374 (iff $e136 $e1830))
+(flet ($e2375 (not $e2284))
+(flet ($e2376 (not $e1503))
+(flet ($e2377 (implies $e2097 $e877))
+(flet ($e2378 (not $e876))
+(flet ($e2379 (or $e1108 $e682))
+(flet ($e2380 (xor $e638 $e459))
+(flet ($e2381 (implies $e2322 $e2327))
+(flet ($e2382 (not $e2368))
+(flet ($e2383 (iff $e2047 $e2220))
+(flet ($e2384 (not $e2152))
+(flet ($e2385 (or $e2084 $e991))
+(flet ($e2386 (not $e824))
+(flet ($e2387 (xor $e498 $e2303))
+(flet ($e2388 (iff $e168 $e70))
+(flet ($e2389 (or $e1037 $e2288))
+(flet ($e2390 (or $e2256 $e2255))
+(flet ($e2391 (not $e1186))
+(flet ($e2392 (or $e2240 $e1564))
+(flet ($e2393 (iff $e2120 $e2146))
+(flet ($e2394 (iff $e1708 $e1877))
+(flet ($e2395 (iff $e2393 $e2032))
+(flet ($e2396 (not $e778))
+(flet ($e2397 (or $e2318 $e2018))
+(flet ($e2398 (xor $e1080 $e2295))
+(flet ($e2399 (xor $e2316 $e2384))
+(flet ($e2400 (implies $e1967 $e2244))
+(flet ($e2401 (implies $e2203 $e2385))
+(flet ($e2402 (if_then_else $e2233 $e816 $e2374))
+(flet ($e2403 (iff $e2057 $e173))
+(flet ($e2404 (implies $e2156 $e2039))
+(flet ($e2405 (and $e2371 $e900))
+(flet ($e2406 (iff $e2313 $e1175))
+(flet ($e2407 (iff $e2396 $e2044))
+(flet ($e2408 (and $e2117 $e930))
+(flet ($e2409 (xor $e2191 $e1363))
+(flet ($e2410 (or $e2300 $e1876))
+(flet ($e2411 (iff $e2355 $e2350))
+(flet ($e2412 (and $e97 $e571))
+(flet ($e2413 (if_then_else $e2331 $e834 $e1197))
+(flet ($e2414 (iff $e1990 $e2215))
+(flet ($e2415 (not $e1976))
+(flet ($e2416 (or $e781 $e2071))
+(flet ($e2417 (implies $e1060 $e1403))
+(flet ($e2418 (iff $e1295 $e2046))
+(flet ($e2419 (if_then_else $e2305 $e2053 $e1201))
+(flet ($e2420 (xor $e2414 $e1054))
+(flet ($e2421 (not $e1654))
+(flet ($e2422 (implies $e1989 $e2103))
+(flet ($e2423 (xor $e2086 $e2108))
+(flet ($e2424 (and $e2167 $e2193))
+(flet ($e2425 (if_then_else $e1979 $e588 $e2281))
+(flet ($e2426 (or $e948 $e1908))
+(flet ($e2427 (or $e1957 $e2314))
+(flet ($e2428 (and $e2338 $e1965))
+(flet ($e2429 (or $e2088 $e2328))
+(flet ($e2430 (or $e1837 $e2311))
+(flet ($e2431 (if_then_else $e2323 $e470 $e1076))
+(flet ($e2432 (or $e1722 $e2269))
+(flet ($e2433 (iff $e2065 $e2397))
+(flet ($e2434 (if_then_else $e1192 $e671 $e1909))
+(flet ($e2435 (not $e2279))
+(flet ($e2436 (implies $e1269 $e1287))
+(flet ($e2437 (iff $e946 $e2149))
+(flet ($e2438 (and $e1627 $e80))
+(flet ($e2439 (not $e1637))
+(flet ($e2440 (iff $e2335 $e2160))
+(flet ($e2441 (iff $e1747 $e2094))
+(flet ($e2442 (iff $e2404 $e2109))
+(flet ($e2443 (xor $e771 $e590))
+(flet ($e2444 (xor $e1869 $e149))
+(flet ($e2445 (implies $e2392 $e2408))
+(flet ($e2446 (and $e2179 $e1117))
+(flet ($e2447 (xor $e2301 $e706))
+(flet ($e2448 (if_then_else $e1107 $e2124 $e1361))
+(flet ($e2449 (if_then_else $e2207 $e2425 $e2401))
+(flet ($e2450 (xor $e806 $e2253))
+(flet ($e2451 (if_then_else $e1842 $e1312 $e1343))
+(flet ($e2452 (or $e2364 $e2443))
+(flet ($e2453 (not $e2308))
+(flet ($e2454 (implies $e2235 $e715))
+(flet ($e2455 (implies $e831 $e979))
+(flet ($e2456 (iff $e2365 $e2447))
+(flet ($e2457 (iff $e1425 $e2205))
+(flet ($e2458 (iff $e2304 $e2317))
+(flet ($e2459 (implies $e932 $e661))
+(flet ($e2460 (and $e2296 $e2348))
+(flet ($e2461 (implies $e2280 $e1262))
+(flet ($e2462 (and $e1824 $e1937))
+(flet ($e2463 (or $e522 $e1139))
+(flet ($e2464 (if_then_else $e2177 $e598 $e2163))
+(flet ($e2465 (implies $e2439 $e2008))
+(flet ($e2466 (iff $e1935 $e2144))
+(flet ($e2467 (iff $e2261 $e1438))
+(flet ($e2468 (iff $e2076 $e2267))
+(flet ($e2469 (implies $e1773 $e880))
+(flet ($e2470 (or $e2419 $e2466))
+(flet ($e2471 (not $e1160))
+(flet ($e2472 (xor $e2025 $e2383))
+(flet ($e2473 (if_then_else $e1245 $e643 $e2415))
+(flet ($e2474 (not $e2105))
+(flet ($e2475 (or $e1959 $e1762))
+(flet ($e2476 (if_then_else $e1459 $e2202 $e2436))
+(flet ($e2477 (implies $e615 $e2387))
+(flet ($e2478 (if_then_else $e770 $e2049 $e1715))
+(flet ($e2479 (implies $e2416 $e2430))
+(flet ($e2480 (or $e2250 $e2251))
+(flet ($e2481 (iff $e1880 $e2367))
+(flet ($e2482 (or $e736 $e1930))
+(flet ($e2483 (implies $e2252 $e951))
+(flet ($e2484 (not $e2283))
+(flet ($e2485 (implies $e1463 $e1052))
+(flet ($e2486 (or $e2478 $e2201))
+(flet ($e2487 (iff $e2336 $e2341))
+(flet ($e2488 (xor $e1081 $e2454))
+(flet ($e2489 (xor $e2467 $e2184))
+(flet ($e2490 (xor $e1770 $e2239))
+(flet ($e2491 (and $e2307 $e2411))
+(flet ($e2492 (implies $e1505 $e2433))
+(flet ($e2493 (and $e1025 $e2174))
+(flet ($e2494 (implies $e2131 $e1940))
+(flet ($e2495 (or $e2070 $e2224))
+(flet ($e2496 (not $e2395))
+(flet ($e2497 (not $e2051))
+(flet ($e2498 (and $e2024 $e2360))
+(flet ($e2499 (if_then_else $e1983 $e1395 $e1473))
+(flet ($e2500 (not $e2188))
+(flet ($e2501 (xor $e2486 $e2357))
+(flet ($e2502 (implies $e2330 $e759))
+(flet ($e2503 (or $e2407 $e1828))
+(flet ($e2504 (and $e2490 $e508))
+(flet ($e2505 (or $e2496 $e738))
+(flet ($e2506 (or $e1926 $e2010))
+(flet ($e2507 (if_then_else $e1981 $e2007 $e2270))
+(flet ($e2508 (if_then_else $e1268 $e1064 $e2090))
+(flet ($e2509 (implies $e2426 $e2500))
+(flet ($e2510 (and $e2483 $e1690))
+(flet ($e2511 (implies $e2333 $e1106))
+(flet ($e2512 (iff $e2462 $e592))
+(flet ($e2513 (not $e2406))
+(flet ($e2514 (if_then_else $e2309 $e2398 $e2185))
+(flet ($e2515 (xor $e2506 $e2031))
+(flet ($e2516 (iff $e1754 $e2085))
+(flet ($e2517 (or $e1798 $e2219))
+(flet ($e2518 (iff $e2492 $e1660))
+(flet ($e2519 (if_then_else $e2310 $e2222 $e724))
+(flet ($e2520 (and $e2442 $e2485))
+(flet ($e2521 (and $e2213 $e2417))
+(flet ($e2522 (iff $e1304 $e1591))
+(flet ($e2523 (if_then_else $e1515 $e2263 $e2491))
+(flet ($e2524 (and $e2459 $e2448))
+(flet ($e2525 (iff $e1683 $e1161))
+(flet ($e2526 (not $e2470))
+(flet ($e2527 (iff $e2488 $e2315))
+(flet ($e2528 (not $e2319))
+(flet ($e2529 (iff $e2457 $e2362))
+(flet ($e2530 (if_then_else $e1112 $e2377 $e689))
+(flet ($e2531 (not $e1916))
+(flet ($e2532 (and $e2380 $e2225))
+(flet ($e2533 (if_then_else $e2226 $e2460 $e2432))
+(flet ($e2534 (not $e788))
+(flet ($e2535 (iff $e1460 $e1483))
+(flet ($e2536 (xor $e2450 $e1942))
+(flet ($e2537 (or $e1975 $e2142))
+(flet ($e2538 (and $e2517 $e2231))
+(flet ($e2539 (implies $e2479 $e2452))
+(flet ($e2540 (and $e92 $e1936))
+(flet ($e2541 (not $e2514))
+(flet ($e2542 (if_then_else $e1820 $e83 $e2525))
+(flet ($e2543 (not $e2324))
+(flet ($e2544 (xor $e2077 $e2521))
+(flet ($e2545 (iff $e162 $e733))
+(flet ($e2546 (or $e2458 $e2510))
+(flet ($e2547 (or $e2257 $e2115))
+(flet ($e2548 (and $e2351 $e1588))
+(flet ($e2549 (or $e1396 $e2438))
+(flet ($e2550 (if_then_else $e2489 $e2306 $e2399))
+(flet ($e2551 (implies $e2218 $e2424))
+(flet ($e2552 (or $e2548 $e2427))
+(flet ($e2553 (not $e1137))
+(flet ($e2554 (if_then_else $e1428 $e2551 $e1944))
+(flet ($e2555 (iff $e2389 $e2390))
+(flet ($e2556 (if_then_else $e2507 $e2549 $e1105))
+(flet ($e2557 (not $e2023))
+(flet ($e2558 (not $e2530))
+(flet ($e2559 (or $e2526 $e1972))
+(flet ($e2560 (implies $e2095 $e2298))
+(flet ($e2561 (if_then_else $e2093 $e532 $e1905))
+(flet ($e2562 (and $e1638 $e2437))
+(flet ($e2563 (xor $e2123 $e2286))
+(flet ($e2564 (not $e1756))
+(flet ($e2565 (if_then_else $e1189 $e2066 $e2504))
+(flet ($e2566 (iff $e2036 $e676))
+(flet ($e2567 (implies $e1956 $e2527))
+(flet ($e2568 (iff $e2394 $e1531))
+(flet ($e2569 (if_then_else $e2372 $e2561 $e2493))
+(flet ($e2570 (and $e2127 $e2544))
+(flet ($e2571 (if_then_else $e2542 $e973 $e2339))
+(flet ($e2572 (iff $e197 $e2539))
+(flet ($e2573 (not $e113))
+(flet ($e2574 (not $e2272))
+(flet ($e2575 (not $e1400))
+(flet ($e2576 (xor $e662 $e1774))
+(flet ($e2577 (or $e2535 $e1184))
+(flet ($e2578 (xor $e2302 $e2376))
+(flet ($e2579 (or $e2541 $e2268))
+(flet ($e2580 (if_then_else $e1040 $e2545 $e1921))
+(flet ($e2581 (xor $e2413 $e2473))
+(flet ($e2582 (implies $e2147 $e2234))
+(flet ($e2583 (and $e541 $e1782))
+(flet ($e2584 (and $e2558 $e2245))
+(flet ($e2585 (and $e2584 $e2121))
+(flet ($e2586 (or $e91 $e1264))
+(flet ($e2587 (xor $e2382 $e1353))
+(flet ($e2588 (or $e2581 $e2429))
+(flet ($e2589 (implies $e1848 $e1789))
+(flet ($e2590 (and $e2565 $e2577))
+(flet ($e2591 (if_then_else $e613 $e2453 $e1643))
+(flet ($e2592 (implies $e2554 $e1631))
+(flet ($e2593 (or $e2386 $e2347))
+(flet ($e2594 (xor $e2370 $e1939))
+(flet ($e2595 (xor $e2487 $e546))
+(flet ($e2596 (implies $e2572 $e2420))
+(flet ($e2597 (and $e1617 $e2259))
+(flet ($e2598 (if_then_else $e2524 $e2578 $e2461))
+(flet ($e2599 (if_then_else $e2556 $e2325 $e2440))
+(flet ($e2600 (implies $e2212 $e1907))
+(flet ($e2601 (and $e1985 $e2594))
+(flet ($e2602 (implies $e1608 $e1996))
+(flet ($e2603 (xor $e2423 $e2361))
+(flet ($e2604 (and $e1668 $e2596))
+(flet ($e2605 (iff $e2593 $e2040))
+(flet ($e2606 (and $e2494 $e2332))
+(flet ($e2607 (and $e2477 $e2498))
+(flet ($e2608 (xor $e2474 $e2329))
+(flet ($e2609 (or $e2446 $e2435))
+(flet ($e2610 (iff $e2602 $e1045))
+(flet ($e2611 (not $e840))
+(flet ($e2612 (not $e2497))
+(flet ($e2613 (not $e2428))
+(flet ($e2614 (if_then_else $e2607 $e1971 $e2375))
+(flet ($e2615 (implies $e2605 $e938))
+(flet ($e2616 (and $e2403 $e2366))
+(flet ($e2617 (if_then_else $e872 $e2345 $e2000))
+(flet ($e2618 (or $e2410 $e1615))
+(flet ($e2619 (or $e1640 $e2569))
+(flet ($e2620 (not $e2342))
+(flet ($e2621 (if_then_else $e1301 $e2546 $e2441))
+(flet ($e2622 (or $e2537 $e2505))
+(flet ($e2623 (xor $e2472 $e2562))
+(flet ($e2624 (implies $e1252 $e2618))
+(flet ($e2625 (and $e2290 $e833))
+(flet ($e2626 (if_then_else $e2402 $e2334 $e2623))
+(flet ($e2627 (iff $e2373 $e2048))
+(flet ($e2628 (xor $e2533 $e2249))
+(flet ($e2629 (xor $e1469 $e2481))
+(flet ($e2630 (and $e2589 $e497))
+(flet ($e2631 (xor $e2573 $e1902))
+(flet ($e2632 (or $e1857 $e64))
+(flet ($e2633 (or $e2590 $e2482))
+(flet ($e2634 (xor $e2463 $e2543))
+(flet ($e2635 (iff $e2629 $e1980))
+(flet ($e2636 (iff $e2287 $e805))
+(flet ($e2637 (not $e2550))
+(flet ($e2638 (iff $e2400 $e2529))
+(flet ($e2639 (xor $e2391 $e2451))
+(flet ($e2640 (not $e1278))
+(flet ($e2641 (if_then_else $e2616 $e2583 $e2154))
+(flet ($e2642 (if_then_else $e2359 $e2208 $e2045))
+(flet ($e2643 (or $e2289 $e2620))
+(flet ($e2644 (iff $e1946 $e2471))
+(flet ($e2645 (iff $e2265 $e2627))
+(flet ($e2646 (and $e2434 $e2254))
+(flet ($e2647 (if_then_else $e2547 $e2540 $e2369))
+(flet ($e2648 (not $e821))
+(flet ($e2649 (xor $e2574 $e887))
+(flet ($e2650 (iff $e2632 $e2648))
+(flet ($e2651 (iff $e2054 $e55))
+(flet ($e2652 (or $e2538 $e2531))
+(flet ($e2653 (xor $e2204 $e2274))
+(flet ($e2654 (if_then_else $e2503 $e2626 $e2378))
+(flet ($e2655 (if_then_else $e2567 $e2519 $e1850))
+(flet ($e2656 (iff $e2522 $e2388))
+(flet ($e2657 (if_then_else $e2422 $e2513 $e2653))
+(flet ($e2658 (if_then_else $e465 $e2646 $e637))
+(flet ($e2659 (or $e462 $e2604))
+(flet ($e2660 (implies $e2651 $e2532))
+(flet ($e2661 (iff $e2579 $e1943))
+(flet ($e2662 (or $e2580 $e2412))
+(flet ($e2663 (implies $e873 $e2625))
+(flet ($e2664 (iff $e2511 $e1675))
+(flet ($e2665 (if_then_else $e2111 $e2418 $e2570))
+(flet ($e2666 (or $e2640 $e2552))
+(flet ($e2667 (not $e2613))
+(flet ($e2668 (or $e2611 $e111))
+(flet ($e2669 (and $e2657 $e2480))
+(flet ($e2670 (and $e1598 $e519))
+(flet ($e2671 (implies $e1938 $e1991))
+(flet ($e2672 (xor $e2499 $e2667))
+(flet ($e2673 (if_then_else $e848 $e2609 $e2659))
+(flet ($e2674 (implies $e2557 $e2621))
+(flet ($e2675 (iff $e1529 $e2617))
+(flet ($e2676 (or $e2236 $e2238))
+(flet ($e2677 (iff $e2559 $e2444))
+(flet ($e2678 (not $e2615))
+(flet ($e2679 (if_then_else $e2469 $e2619 $e1417))
+(flet ($e2680 (or $e2190 $e2520))
+(flet ($e2681 (xor $e2405 $e744))
+(flet ($e2682 (or $e2681 $e2663))
+(flet ($e2683 (if_then_else $e2523 $e1680 $e2182))
+(flet ($e2684 (and $e1995 $e2606))
+(flet ($e2685 (iff $e2612 $e2571))
+(flet ($e2686 (iff $e2518 $e2465))
+(flet ($e2687 (or $e2586 $e2603))
+(flet ($e2688 (if_then_else $e608 $e2675 $e2456))
+(flet ($e2689 (not $e1499))
+(flet ($e2690 (or $e2464 $e2652))
+(flet ($e2691 (implies $e1525 $e2647))
+(flet ($e2692 (and $e1549 $e2515))
+(flet ($e2693 (and $e2592 $e1331))
+(flet ($e2694 (xor $e2643 $e1755))
+(flet ($e2695 (iff $e2575 $e2159))
+(flet ($e2696 (if_then_else $e1342 $e2431 $e2553))
+(flet ($e2697 (xor $e2678 $e2352))
+(flet ($e2698 (or $e2682 $e1924))
+(flet ($e2699 (or $e2693 $e2676))
+(flet ($e2700 (not $e2568))
+(flet ($e2701 (xor $e2133 $e2679))
+(flet ($e2702 (xor $e2445 $e2669))
+(flet ($e2703 (and $e2680 $e1723))
+(flet ($e2704 (or $e1653 $e2271))
+(flet ($e2705 (if_then_else $e2694 $e2658 $e2688))
+(flet ($e2706 (iff $e2468 $e2595))
+(flet ($e2707 (and $e2379 $e2622))
+(flet ($e2708 (xor $e2343 $e2476))
+(flet ($e2709 (iff $e2665 $e2599))
+(flet ($e2710 (and $e2346 $e2703))
+(flet ($e2711 (or $e2666 $e2534))
+(flet ($e2712 (xor $e2421 $e2683))
+(flet ($e2713 (iff $e2635 $e2673))
+(flet ($e2714 (not $e2702))
+(flet ($e2715 (not $e2662))
+(flet ($e2716 (if_then_else $e1286 $e2512 $e2194))
+(flet ($e2717 (iff $e2349 $e2685))
+(flet ($e2718 (not $e990))
+(flet ($e2719 (not $e2161))
+(flet ($e2720 (or $e2687 $e2690))
+(flet ($e2721 (not $e2022))
+(flet ($e2722 (xor $e2598 $e2654))
+(flet ($e2723 (and $e2692 $e950))
+(flet ($e2724 (xor $e2668 $e2381))
+(flet ($e2725 (and $e2716 $e2689))
+(flet ($e2726 (not $e2175))
+(flet ($e2727 (implies $e2698 $e2173))
+(flet ($e2728 (and $e2495 $e2636))
+(flet ($e2729 (implies $e2660 $e2409))
+(flet ($e2730 (iff $e2555 $e2642))
+(flet ($e2731 (and $e464 $e2588))
+(flet ($e2732 (and $e2484 $e2686))
+(flet ($e2733 (if_then_else $e2276 $e2720 $e2199))
+(flet ($e2734 (or $e2728 $e2715))
+(flet ($e2735 (if_then_else $e2186 $e1878 $e2597))
+(flet ($e2736 (xor $e2712 $e2723))
+(flet ($e2737 (iff $e1903 $e2711))
+(flet ($e2738 (if_then_else $e2732 $e2624 $e2628))
+(flet ($e2739 (implies $e2705 $e2641))
+(flet ($e2740 (not $e2713))
+(flet ($e2741 (and $e2587 $e2214))
+(flet ($e2742 (not $e2737))
+(flet ($e2743 (implies $e2638 $e2725))
+(flet ($e2744 (and $e956 $e2509))
+(flet ($e2745 (if_then_else $e2564 $e2655 $e2528))
+(flet ($e2746 (implies $e2710 $e2731))
+(flet ($e2747 (implies $e2741 $e2691))
+(flet ($e2748 (or $e2738 $e2672))
+(flet ($e2749 (iff $e2475 $e2614))
+(flet ($e2750 (xor $e2644 $e2591))
+(flet ($e2751 (iff $e2449 $e2722))
+(flet ($e2752 (or $e2455 $e2516))
+(flet ($e2753 (and $e700 $e2501))
+(flet ($e2754 (implies $e2727 $e2200))
+(flet ($e2755 (or $e2677 $e2714))
+(flet ($e2756 (or $e2749 $e2634))
+(flet ($e2757 (iff $e2718 $e2176))
+(flet ($e2758 (iff $e2743 $e2354))
+(flet ($e2759 (and $e2757 $e2717))
+(flet ($e2760 (if_then_else $e2735 $e2363 $e2536))
+(flet ($e2761 (not $e1380))
+(flet ($e2762 (iff $e2700 $e2708))
+(flet ($e2763 (or $e2585 $e1489))
+(flet ($e2764 (and $e2608 $e2704))
+(flet ($e2765 (or $e2748 $e2601))
+(flet ($e2766 (and $e1314 $e2600))
+(flet ($e2767 (not $e2750))
+(flet ($e2768 (not $e2706))
+(flet ($e2769 (and $e2560 $e2758))
+(flet ($e2770 (if_then_else $e2721 $e2671 $e2724))
+(flet ($e2771 (and $e2756 $e2709))
+(flet ($e2772 (iff $e2502 $e2656))
+(flet ($e2773 (and $e2631 $e2719))
+(flet ($e2774 (not $e2753))
+(flet ($e2775 (if_then_else $e2726 $e2639 $e2707))
+(flet ($e2776 (not $e2754))
+(flet ($e2777 (if_then_else $e2701 $e2645 $e2684))
+(flet ($e2778 (implies $e857 $e2576))
+(flet ($e2779 (or $e2768 $e2772))
+(flet ($e2780 (or $e2767 $e518))
+(flet ($e2781 (not $e2751))
+(flet ($e2782 (xor $e2775 $e2781))
+(flet ($e2783 (not $e2770))
+(flet ($e2784 (and $e2730 $e2729))
+(flet ($e2785 (implies $e2633 $e2637))
+(flet ($e2786 (if_then_else $e2275 $e2766 $e2697))
+(flet ($e2787 (or $e2630 $e2780))
+(flet ($e2788 (xor $e2650 $e2779))
+(flet ($e2789 (xor $e2786 $e2733))
+(flet ($e2790 (implies $e2769 $e2783))
+(flet ($e2791 (implies $e2740 $e2610))
+(flet ($e2792 (implies $e2670 $e2649))
+(flet ($e2793 (if_then_else $e2736 $e2582 $e2788))
+(flet ($e2794 (implies $e2755 $e2752))
+(flet ($e2795 (or $e2763 $e2774))
+(flet ($e2796 (implies $e2773 $e2776))
+(flet ($e2797 (not $e2699))
+(flet ($e2798 (not $e2695))
+(flet ($e2799 (xor $e2508 $e2764))
+(flet ($e2800 (and $e2798 $e2778))
+(flet ($e2801 (if_then_else $e2796 $e2797 $e2696))
+(flet ($e2802 (iff $e2790 $e2762))
+(flet ($e2803 (or $e1098 $e2742))
+(flet ($e2804 (implies $e2563 $e2793))
+(flet ($e2805 (implies $e2799 $e2785))
+(flet ($e2806 (not $e2761))
+(flet ($e2807 (if_then_else $e2804 $e2801 $e2806))
+(flet ($e2808 (or $e2746 $e2782))
+(flet ($e2809 (and $e2794 $e2777))
+(flet ($e2810 (and $e2661 $e2566))
+(flet ($e2811 (or $e2805 $e2810))
+(flet ($e2812 (and $e2789 $e2789))
+(flet ($e2813 (and $e2739 $e2803))
+(flet ($e2814 (not $e2747))
+(flet ($e2815 (and $e2734 $e2759))
+(flet ($e2816 (and $e2664 $e2812))
+(flet ($e2817 (or $e2795 $e2760))
+(flet ($e2818 (not $e2744))
+(flet ($e2819 (implies $e2816 $e2816))
+(flet ($e2820 (not $e2811))
+(flet ($e2821 (xor $e2813 $e2802))
+(flet ($e2822 (not $e2815))
+(flet ($e2823 (and $e2817 $e2784))
+(flet ($e2824 (if_then_else $e2809 $e2819 $e2800))
+(flet ($e2825 (implies $e2808 $e2808))
+(flet ($e2826 (xor $e2824 $e2791))
+(flet ($e2827 (implies $e2825 $e2818))
+(flet ($e2828 (and $e2765 $e2787))
+(flet ($e2829 (implies $e2822 $e2828))
+(flet ($e2830 (or $e2674 $e2814))
+(flet ($e2831 (xor $e2826 $e2792))
+(flet ($e2832 (if_then_else $e2807 $e2820 $e2821))
+(flet ($e2833 (xor $e2832 $e2827))
+(flet ($e2834 (iff $e2745 $e2831))
+(flet ($e2835 (implies $e2830 $e2823))
+(flet ($e2836 (or $e2829 $e2829))
+(flet ($e2837 (implies $e2834 $e2833))
+(flet ($e2838 (and $e2835 $e2837))
+(flet ($e2839 (implies $e2771 $e2836))
+(flet ($e2840 (not $e2838))
+(flet ($e2841 (or $e2839 $e2840))
+$e2841
+)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) [...]
+
diff --git a/test/regress/regress3/pp-regfile.smt b/test/regress/regress3/pp-regfile.smt
new file mode 100644
index 0000000..e60be05
--- /dev/null
+++ b/test/regress/regress3/pp-regfile.smt
@@ -0,0 +1,145 @@
+(benchmark pp_regfile.smt
+  :source {
+Translated from old SVC processor verification benchmarks.  Contact Clark
+Barrett at barrett at cs.nyu.edu for more information.
+
+This benchmark was automatically translated into SMT-LIB format from
+CVC format using CVC Lite
+}
+  :status unsat
+:category { industrial }
+:difficulty { 0 }
+  :logic QF_AUFLIA
+  :extrapreds ((CLOCK_INIT))
+  :extrapreds ((INSTRISLOAD_S2E_INIT))
+  :extrapreds ((INSTRISSTORE_S2E_INIT))
+  :extrapreds ((STALL_S2R_INIT))
+  :extrafuns ((BDEST_S2E_INIT Int))
+  :extrapreds ((PCDRVRESULT_S2E_INIT))
+  :extrafuns ((ADEST_S2E_INIT Int))
+  :extrafuns ((BOPCODE_S2E_INIT Int))
+  :extrapreds ((INSTRISLOAD_S2M_INIT))
+  :extrafuns ((DMEM_INIT Array))
+  :extrafuns ((STOREADDR_S2M_INIT Int))
+  :extrafuns ((CACHEDOUT_S2_INIT Int))
+  :extrafuns ((plus Int Int Int))
+  :extrafuns ((PC_S2I_INIT Int))
+  :extrafuns ((PC_PLUS_S2I_INIT Int))
+  :extrapreds ((ABUBBLE_S2R_INIT))
+  :extrapreds ((BBUBBLE_S2R_INIT))
+  :extrafuns ((SRC1_OF Int Int))
+  :extrafuns ((AINST_S2R_INIT Int))
+  :extrafuns ((SRC2_OF Int Int))
+  :extrafuns ((BINST_S2R_INIT Int))
+  :extrafuns ((OPCODE_OF Int Int))
+  :extrafuns ((IMEM_INIT Array))
+  :extrafuns ((DEST_OF Int Int))
+  :extrapreds ((NON_DET_STALL_INIT))
+  :extrapreds ((NONDET_MEMSTALL_S1_INIT))
+  :extrafuns ((BDEST_S2M_INIT Int))
+  :extrafuns ((BDEST_S1M_INIT Int))
+  :extrapreds ((BBUBBLE_S1E_INIT))
+  :extrafuns ((BDEST_S1E_INIT Int))
+  :extrapreds ((BBUBBLE_S1R_INIT))
+  :extrapreds ((STALL_S1R_INIT))
+  :extrafuns ((BINST_S1R_INIT Int))
+  :extrapreds ((TAKENBRANCH_S1M_INIT))
+  :extrapreds ((STALL_S1E_INIT))
+  :extrafuns ((AOPCODE_S1E_INIT Int))
+  :extrapreds ((BRANCH_CONDITION Int Int))
+  :extrafuns ((ASBYPASSSEL_S1E_INIT Int))
+  :extrafuns ((BDATA_S1M_INIT Int))
+  :extrafuns ((ADATA_S1M_INIT Int))
+  :extrapreds ((BWASLOAD_S1W_INIT))
+  :extrafuns ((BLOADDATA_S1W_INIT Int))
+  :extrafuns ((BDATA_S1W_INIT Int))
+  :extrafuns ((ADATA_S1W_INIT Int))
+  :extrafuns ((ASDATA_S1E_INIT Int))
+  :extrafuns ((ATBYPASSSEL_S1E_INIT Int))
+  :extrafuns ((ATDATA_S1E_INIT Int))
+  :extrafuns ((ATARGET_S1E_INIT Int))
+  :extrapreds ((TAKENBRANCH_S2E_INIT))
+  :extrafuns ((ADEST_S2M_INIT Int))
+  :extrafuns ((BSBUS_S2E_INIT Int))
+  :extrafuns ((BSRC2BUS_S2E_INIT Int))
+  :extrafuns ((ALU Int Int Int Int))
+  :extrafuns ((ALU_OP_OF Int Int))
+  :extrafuns ((PCPLUS_S2R_INIT Int))
+  :extrafuns ((AOPCODE_S2E_INIT Int))
+  :extrafuns ((ASBUS_S2E_INIT Int))
+  :extrafuns ((ASRC2BUS_S2E_INIT Int))
+  :extrafuns ((NO_VALUE0 Int))
+  :extrafuns ((BDATA_S2M_INIT Int))
+  :extrafuns ((ADATA_S2M_INIT Int))
+  :extrafuns ((REGFILE_INIT Array))
+  :extrafuns ((OFFSET_OF Int Int))
+  :extrafuns ((PC_CHAIN_S2R_INIT Int))
+  :extrafuns ((AINST_S1R_INIT Int))
+  :extrafuns ((ADEST_S1E_INIT Int))
+  :extrafuns ((ADEST_S1M_INIT Int))
+  :extrapreds ((INSTRISLOAD_S1E_INIT))
+  :extrapreds ((INSTRISSTORE_S1E_INIT))
+  :extrafuns ((BSBYPASSSEL_S1E_INIT Int))
+  :extrafuns ((BSDATA_S1E_INIT Int))
+  :extrapreds ((BUSEIMM_S1E_INIT))
+  :extrafuns ((BIMMBUS_S1E_INIT Int))
+  :extrafuns ((BTBYPASSSEL_S1E_INIT Int))
+  :extrafuns ((BTDATA_S1E_INIT Int))
+  :extrafuns ((BOPCODE_S1E_INIT Int))
+  :extrapreds ((PCDRVRESULT_S1E_INIT))
+  :extrafuns ((PCPLUS_S1R_INIT Int))
+  :extrapreds ((AUSEIMM_S1E_INIT))
+  :extrafuns ((AIMMBUS_S1E_INIT Int))
+  :extrapreds ((INSTRISLOAD_S1M_INIT))
+  :extrapreds ((INSTRISSTORE_S1M_INIT))
+  :extrafuns ((STOREADDR_S1M_INIT Int))
+  :extrafuns ((STOREDATA_S1M_INIT Int))
+  :extrafuns ((MEMADDR_S1M_INIT Int))
+  :extrafuns ((MISSADDR_S1W_INIT Int))
+  :extrafuns ((NO_VALUE1 Int))
+  :extrafuns ((BDEST_S1W_INIT Int))
+  :extrafuns ((ADEST_S1W_INIT Int))
+  :extrafuns ((PC_CHAIN_S1R_INIT Int))
+  :extrapreds ((NO_VALUE2))
+  :extrafuns ((SHORT_IMMED_OF Int Int))
+  :extrafuns ((STOREDATA_S2E_INIT Int))
+  :extrafuns ((NO_VALUE20 Int))
+  :extrapreds ((ABUBBLE_S1R_INIT))
+  :extrapreds ((NO_VALUE4))
+  :extrafuns ((NO_VALUE21 Int))
+  :extrapreds ((NO_VALUE22))
+  :extrafuns ((NO_VALUE23 Int))
+  :extrapreds ((NO_VALUE24))
+  :extrafuns ((NO_VALUE25 Int))
+  :extrapreds ((NO_VALUE26))
+  :extrafuns ((NO_VALUE27 Int))
+  :extrafuns ((NO_VALUE28 Int))
+  :extrafuns ((NO_VALUE29 Int))
+  :extrapreds ((NO_VALUE30))
+  :extrafuns ((NO_VALUE31 Int))
+  :extrapreds ((NO_VALUE32))
+  :extrafuns ((NO_VALUE33 Int))
+  :extrapreds ((NO_VALUE34))
+  :extrafuns ((NO_VALUE35 Int))
+  :extrapreds ((NO_VALUE36))
+  :extrafuns ((NO_VALUE37 Int))
+  :extrafuns ((ARB_ADDR Int))
+  :extrafuns ((NO_VALUE3 Int))
+  :extrafuns ((NO_VALUE5 Int))
+  :extrapreds ((NO_VALUE6))
+  :extrafuns ((NO_VALUE7 Int))
+  :extrapreds ((NO_VALUE8))
+  :extrafuns ((NO_VALUE9 Int))
+  :extrapreds ((NO_VALUE10))
+  :extrafuns ((NO_VALUE11 Int))
+  :extrapreds ((NO_VALUE12))
+  :extrafuns ((NO_VALUE13 Int))
+  :extrapreds ((NO_VALUE14))
+  :extrafuns ((NO_VALUE15 Int))
+  :extrapreds ((NO_VALUE16))
+  :extrafuns ((NO_VALUE17 Int))
+  :extrapreds ((NO_VALUE18))
+  :extrafuns ((NO_VALUE19 Int))
+  :formula
+(let (?cvcl_2 10) (let (?cvcl_4 11) (let (?cvcl_75 12) (let (?cvcl_76 13) (let (?cvcl_10 14) (let (?cvcl_77 15) (let (?cvcl_50 16) (let (?cvcl_52 17) (flet ($cvcl_0 (= BOPCODE_S2E_INIT ?cvcl_2)) (flet ($cvcl_1 (= BOPCODE_S2E_INIT ?cvcl_4)) (let (?cvcl_5 (plus 4 PC_S2I_INIT)) (let (?cvcl_216 (plus 4 ?cvcl_5)) (flet ($cvcl_199 (if_then_else BBUBBLE_S2R_INIT false true)) (let (?cvcl_98 (SRC1_OF AINST_S2R_INIT)) (flet ($cvcl_99 (= ?cvcl_98 BDEST_S2E_INIT)) (let (?cvcl_102 (SRC2_OF AINST_S2R_ [...]
+)
diff --git a/test/regress/regress3/pp-regfile.smt.expect b/test/regress/regress3/pp-regfile.smt.expect
new file mode 100644
index 0000000..7fd1d5a
--- /dev/null
+++ b/test/regress/regress3/pp-regfile.smt.expect
@@ -0,0 +1,2 @@
+% COMMAND-LINE: --decision=justification
+% EXPECT: unsat
diff --git a/test/regress/regress3/qwh.35.405.shuffled-as.sat03-1651.smt b/test/regress/regress3/qwh.35.405.shuffled-as.sat03-1651.smt
new file mode 100644
index 0000000..7c09b58
--- /dev/null
+++ b/test/regress/regress3/qwh.35.405.shuffled-as.sat03-1651.smt
@@ -0,0 +1,12265 @@
+;;; Taken from SAT-03 Competition Problems
+;;; http://www.satlib.org/Benchmarks/SAT/New/Competition-03/distrib-shuffled.tar.bz2
+;;; ./handmade/gomes/qwh/qwh.35.405.shuffled-as.sat03-1651.cnf.gz
+;;; Generated using dimacs_to_smt.pl
+
+(benchmark b
+:status sat
+:logic QF_UF
+:extrapreds ((x1))
+: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))
+:extrapreds ((x770))
+:extrapreds ((x771))
+:extrapreds ((x772))
+:extrapreds ((x773))
+:extrapreds ((x774))
+:extrapreds ((x775))
+:extrapreds ((x776))
+:extrapreds ((x777))
+:extrapreds ((x778))
+:extrapreds ((x779))
+:extrapreds ((x780))
+:extrapreds ((x781))
+:extrapreds ((x782))
+:extrapreds ((x783))
+:extrapreds ((x784))
+:extrapreds ((x785))
+:extrapreds ((x786))
+:extrapreds ((x787))
+:extrapreds ((x788))
+:extrapreds ((x789))
+:extrapreds ((x790))
+:extrapreds ((x791))
+:extrapreds ((x792))
+:extrapreds ((x793))
+:extrapreds ((x794))
+:extrapreds ((x795))
+:extrapreds ((x796))
+:extrapreds ((x797))
+:extrapreds ((x798))
+:extrapreds ((x799))
+:extrapreds ((x800))
+:extrapreds ((x801))
+:extrapreds ((x802))
+:extrapreds ((x803))
+:extrapreds ((x804))
+:extrapreds ((x805))
+:extrapreds ((x806))
+:extrapreds ((x807))
+:extrapreds ((x808))
+:extrapreds ((x809))
+:extrapreds ((x810))
+:extrapreds ((x811))
+:extrapreds ((x812))
+:extrapreds ((x813))
+:extrapreds ((x814))
+:extrapreds ((x815))
+:extrapreds ((x816))
+:extrapreds ((x817))
+:extrapreds ((x818))
+:extrapreds ((x819))
+:extrapreds ((x820))
+:extrapreds ((x821))
+:extrapreds ((x822))
+:extrapreds ((x823))
+:extrapreds ((x824))
+:extrapreds ((x825))
+:extrapreds ((x826))
+:extrapreds ((x827))
+:extrapreds ((x828))
+:extrapreds ((x829))
+:extrapreds ((x830))
+:extrapreds ((x831))
+:extrapreds ((x832))
+:extrapreds ((x833))
+:extrapreds ((x834))
+:extrapreds ((x835))
+:extrapreds ((x836))
+:extrapreds ((x837))
+:extrapreds ((x838))
+:extrapreds ((x839))
+:extrapreds ((x840))
+:extrapreds ((x841))
+:extrapreds ((x842))
+:extrapreds ((x843))
+:extrapreds ((x844))
+:extrapreds ((x845))
+:extrapreds ((x846))
+:extrapreds ((x847))
+:extrapreds ((x848))
+:extrapreds ((x849))
+:extrapreds ((x850))
+:extrapreds ((x851))
+:extrapreds ((x852))
+:extrapreds ((x853))
+:extrapreds ((x854))
+:extrapreds ((x855))
+:extrapreds ((x856))
+:extrapreds ((x857))
+:extrapreds ((x858))
+:extrapreds ((x859))
+:extrapreds ((x860))
+:extrapreds ((x861))
+:extrapreds ((x862))
+:extrapreds ((x863))
+:extrapreds ((x864))
+:extrapreds ((x865))
+:extrapreds ((x866))
+:extrapreds ((x867))
+:extrapreds ((x868))
+:extrapreds ((x869))
+:extrapreds ((x870))
+:extrapreds ((x871))
+:extrapreds ((x872))
+:extrapreds ((x873))
+:extrapreds ((x874))
+:extrapreds ((x875))
+:extrapreds ((x876))
+:extrapreds ((x877))
+:extrapreds ((x878))
+:extrapreds ((x879))
+:extrapreds ((x880))
+:extrapreds ((x881))
+:extrapreds ((x882))
+:extrapreds ((x883))
+:extrapreds ((x884))
+:extrapreds ((x885))
+:extrapreds ((x886))
+:extrapreds ((x887))
+:extrapreds ((x888))
+:extrapreds ((x889))
+:extrapreds ((x890))
+:extrapreds ((x891))
+:extrapreds ((x892))
+:extrapreds ((x893))
+:extrapreds ((x894))
+:extrapreds ((x895))
+:extrapreds ((x896))
+:extrapreds ((x897))
+:extrapreds ((x898))
+:extrapreds ((x899))
+:extrapreds ((x900))
+:extrapreds ((x901))
+:extrapreds ((x902))
+:extrapreds ((x903))
+:extrapreds ((x904))
+:extrapreds ((x905))
+:extrapreds ((x906))
+:extrapreds ((x907))
+:extrapreds ((x908))
+:extrapreds ((x909))
+:extrapreds ((x910))
+:extrapreds ((x911))
+:extrapreds ((x912))
+:extrapreds ((x913))
+:extrapreds ((x914))
+:extrapreds ((x915))
+:extrapreds ((x916))
+:extrapreds ((x917))
+:extrapreds ((x918))
+:extrapreds ((x919))
+:extrapreds ((x920))
+:extrapreds ((x921))
+:extrapreds ((x922))
+:extrapreds ((x923))
+:extrapreds ((x924))
+:extrapreds ((x925))
+:extrapreds ((x926))
+:extrapreds ((x927))
+:extrapreds ((x928))
+:extrapreds ((x929))
+:extrapreds ((x930))
+:extrapreds ((x931))
+:extrapreds ((x932))
+:extrapreds ((x933))
+:extrapreds ((x934))
+:extrapreds ((x935))
+:extrapreds ((x936))
+:extrapreds ((x937))
+:extrapreds ((x938))
+:extrapreds ((x939))
+:extrapreds ((x940))
+:extrapreds ((x941))
+:extrapreds ((x942))
+:extrapreds ((x943))
+:extrapreds ((x944))
+:extrapreds ((x945))
+:extrapreds ((x946))
+:extrapreds ((x947))
+:extrapreds ((x948))
+:extrapreds ((x949))
+:extrapreds ((x950))
+:extrapreds ((x951))
+:extrapreds ((x952))
+:extrapreds ((x953))
+:extrapreds ((x954))
+:extrapreds ((x955))
+:extrapreds ((x956))
+:extrapreds ((x957))
+:extrapreds ((x958))
+:extrapreds ((x959))
+:extrapreds ((x960))
+:extrapreds ((x961))
+:extrapreds ((x962))
+:extrapreds ((x963))
+:extrapreds ((x964))
+:extrapreds ((x965))
+:extrapreds ((x966))
+:extrapreds ((x967))
+:extrapreds ((x968))
+:extrapreds ((x969))
+:extrapreds ((x970))
+:extrapreds ((x971))
+:extrapreds ((x972))
+:extrapreds ((x973))
+:extrapreds ((x974))
+:extrapreds ((x975))
+:extrapreds ((x976))
+:extrapreds ((x977))
+:extrapreds ((x978))
+:extrapreds ((x979))
+:extrapreds ((x980))
+:extrapreds ((x981))
+:extrapreds ((x982))
+:extrapreds ((x983))
+:extrapreds ((x984))
+:extrapreds ((x985))
+:extrapreds ((x986))
+:extrapreds ((x987))
+:extrapreds ((x988))
+:extrapreds ((x989))
+:extrapreds ((x990))
+:extrapreds ((x991))
+:extrapreds ((x992))
+:extrapreds ((x993))
+:extrapreds ((x994))
+:extrapreds ((x995))
+:extrapreds ((x996))
+:extrapreds ((x997))
+:extrapreds ((x998))
+:extrapreds ((x999))
+:extrapreds ((x1000))
+:extrapreds ((x1001))
+:extrapreds ((x1002))
+:extrapreds ((x1003))
+:extrapreds ((x1004))
+:extrapreds ((x1005))
+:extrapreds ((x1006))
+:extrapreds ((x1007))
+:extrapreds ((x1008))
+:extrapreds ((x1009))
+:extrapreds ((x1010))
+:extrapreds ((x1011))
+:extrapreds ((x1012))
+:extrapreds ((x1013))
+:extrapreds ((x1014))
+:extrapreds ((x1015))
+:extrapreds ((x1016))
+:extrapreds ((x1017))
+:extrapreds ((x1018))
+:extrapreds ((x1019))
+:extrapreds ((x1020))
+:extrapreds ((x1021))
+:extrapreds ((x1022))
+:extrapreds ((x1023))
+:extrapreds ((x1024))
+:extrapreds ((x1025))
+:extrapreds ((x1026))
+:extrapreds ((x1027))
+:extrapreds ((x1028))
+:extrapreds ((x1029))
+:extrapreds ((x1030))
+:extrapreds ((x1031))
+:extrapreds ((x1032))
+:extrapreds ((x1033))
+:extrapreds ((x1034))
+:extrapreds ((x1035))
+:extrapreds ((x1036))
+:extrapreds ((x1037))
+:extrapreds ((x1038))
+:extrapreds ((x1039))
+:extrapreds ((x1040))
+:extrapreds ((x1041))
+:extrapreds ((x1042))
+:extrapreds ((x1043))
+:extrapreds ((x1044))
+:extrapreds ((x1045))
+:extrapreds ((x1046))
+:extrapreds ((x1047))
+:extrapreds ((x1048))
+:extrapreds ((x1049))
+:extrapreds ((x1050))
+:extrapreds ((x1051))
+:extrapreds ((x1052))
+:extrapreds ((x1053))
+:extrapreds ((x1054))
+:extrapreds ((x1055))
+:extrapreds ((x1056))
+:extrapreds ((x1057))
+:extrapreds ((x1058))
+:extrapreds ((x1059))
+:extrapreds ((x1060))
+:extrapreds ((x1061))
+:extrapreds ((x1062))
+:extrapreds ((x1063))
+:extrapreds ((x1064))
+:extrapreds ((x1065))
+:extrapreds ((x1066))
+:extrapreds ((x1067))
+:extrapreds ((x1068))
+:extrapreds ((x1069))
+:extrapreds ((x1070))
+:extrapreds ((x1071))
+:extrapreds ((x1072))
+:extrapreds ((x1073))
+:extrapreds ((x1074))
+:extrapreds ((x1075))
+:extrapreds ((x1076))
+:extrapreds ((x1077))
+:extrapreds ((x1078))
+:extrapreds ((x1079))
+:extrapreds ((x1080))
+:extrapreds ((x1081))
+:extrapreds ((x1082))
+:extrapreds ((x1083))
+:extrapreds ((x1084))
+:extrapreds ((x1085))
+:extrapreds ((x1086))
+:extrapreds ((x1087))
+:extrapreds ((x1088))
+:extrapreds ((x1089))
+:extrapreds ((x1090))
+:extrapreds ((x1091))
+:extrapreds ((x1092))
+:extrapreds ((x1093))
+:extrapreds ((x1094))
+:extrapreds ((x1095))
+:extrapreds ((x1096))
+:extrapreds ((x1097))
+:extrapreds ((x1098))
+:extrapreds ((x1099))
+:extrapreds ((x1100))
+:extrapreds ((x1101))
+:extrapreds ((x1102))
+:extrapreds ((x1103))
+:extrapreds ((x1104))
+:extrapreds ((x1105))
+:extrapreds ((x1106))
+:extrapreds ((x1107))
+:extrapreds ((x1108))
+:extrapreds ((x1109))
+:extrapreds ((x1110))
+:extrapreds ((x1111))
+:extrapreds ((x1112))
+:extrapreds ((x1113))
+:extrapreds ((x1114))
+:extrapreds ((x1115))
+:extrapreds ((x1116))
+:extrapreds ((x1117))
+:extrapreds ((x1118))
+:extrapreds ((x1119))
+:extrapreds ((x1120))
+:extrapreds ((x1121))
+:extrapreds ((x1122))
+:extrapreds ((x1123))
+:extrapreds ((x1124))
+:extrapreds ((x1125))
+:extrapreds ((x1126))
+:extrapreds ((x1127))
+:extrapreds ((x1128))
+:extrapreds ((x1129))
+:extrapreds ((x1130))
+:extrapreds ((x1131))
+:extrapreds ((x1132))
+:extrapreds ((x1133))
+:extrapreds ((x1134))
+:extrapreds ((x1135))
+:extrapreds ((x1136))
+:extrapreds ((x1137))
+:extrapreds ((x1138))
+:extrapreds ((x1139))
+:extrapreds ((x1140))
+:extrapreds ((x1141))
+:extrapreds ((x1142))
+:extrapreds ((x1143))
+:extrapreds ((x1144))
+:extrapreds ((x1145))
+:extrapreds ((x1146))
+:extrapreds ((x1147))
+:extrapreds ((x1148))
+:extrapreds ((x1149))
+:extrapreds ((x1150))
+:extrapreds ((x1151))
+:extrapreds ((x1152))
+:extrapreds ((x1153))
+:extrapreds ((x1154))
+:extrapreds ((x1155))
+:extrapreds ((x1156))
+:extrapreds ((x1157))
+:extrapreds ((x1158))
+:extrapreds ((x1159))
+:extrapreds ((x1160))
+:extrapreds ((x1161))
+:extrapreds ((x1162))
+:extrapreds ((x1163))
+:extrapreds ((x1164))
+:extrapreds ((x1165))
+:extrapreds ((x1166))
+:extrapreds ((x1167))
+:extrapreds ((x1168))
+:extrapreds ((x1169))
+:extrapreds ((x1170))
+:extrapreds ((x1171))
+:extrapreds ((x1172))
+:extrapreds ((x1173))
+:extrapreds ((x1174))
+:extrapreds ((x1175))
+:extrapreds ((x1176))
+:extrapreds ((x1177))
+:extrapreds ((x1178))
+:extrapreds ((x1179))
+:extrapreds ((x1180))
+:extrapreds ((x1181))
+:extrapreds ((x1182))
+:extrapreds ((x1183))
+:extrapreds ((x1184))
+:extrapreds ((x1185))
+:extrapreds ((x1186))
+:extrapreds ((x1187))
+:extrapreds ((x1188))
+:extrapreds ((x1189))
+:extrapreds ((x1190))
+:extrapreds ((x1191))
+:extrapreds ((x1192))
+:extrapreds ((x1193))
+:extrapreds ((x1194))
+:extrapreds ((x1195))
+:extrapreds ((x1196))
+:extrapreds ((x1197))
+:extrapreds ((x1198))
+:extrapreds ((x1199))
+:extrapreds ((x1200))
+:extrapreds ((x1201))
+:extrapreds ((x1202))
+:extrapreds ((x1203))
+:extrapreds ((x1204))
+:extrapreds ((x1205))
+:extrapreds ((x1206))
+:extrapreds ((x1207))
+:extrapreds ((x1208))
+:extrapreds ((x1209))
+:extrapreds ((x1210))
+:extrapreds ((x1211))
+:extrapreds ((x1212))
+:extrapreds ((x1213))
+:extrapreds ((x1214))
+:extrapreds ((x1215))
+:extrapreds ((x1216))
+:extrapreds ((x1217))
+:extrapreds ((x1218))
+:extrapreds ((x1219))
+:extrapreds ((x1220))
+:extrapreds ((x1221))
+:extrapreds ((x1222))
+:extrapreds ((x1223))
+:extrapreds ((x1224))
+:extrapreds ((x1225))
+:extrapreds ((x1226))
+:extrapreds ((x1227))
+:extrapreds ((x1228))
+:extrapreds ((x1229))
+:extrapreds ((x1230))
+:extrapreds ((x1231))
+:extrapreds ((x1232))
+:extrapreds ((x1233))
+:extrapreds ((x1234))
+:extrapreds ((x1235))
+:extrapreds ((x1236))
+:extrapreds ((x1237))
+:extrapreds ((x1238))
+:extrapreds ((x1239))
+:extrapreds ((x1240))
+:extrapreds ((x1241))
+:extrapreds ((x1242))
+:extrapreds ((x1243))
+:extrapreds ((x1244))
+:extrapreds ((x1245))
+:extrapreds ((x1246))
+:extrapreds ((x1247))
+:extrapreds ((x1248))
+:extrapreds ((x1249))
+:extrapreds ((x1250))
+:extrapreds ((x1251))
+:extrapreds ((x1252))
+:extrapreds ((x1253))
+:extrapreds ((x1254))
+:extrapreds ((x1255))
+:extrapreds ((x1256))
+:extrapreds ((x1257))
+:extrapreds ((x1258))
+:extrapreds ((x1259))
+:extrapreds ((x1260))
+:extrapreds ((x1261))
+:extrapreds ((x1262))
+:extrapreds ((x1263))
+:extrapreds ((x1264))
+:extrapreds ((x1265))
+:extrapreds ((x1266))
+:extrapreds ((x1267))
+:extrapreds ((x1268))
+:extrapreds ((x1269))
+:extrapreds ((x1270))
+:extrapreds ((x1271))
+:extrapreds ((x1272))
+:extrapreds ((x1273))
+:extrapreds ((x1274))
+:extrapreds ((x1275))
+:extrapreds ((x1276))
+:extrapreds ((x1277))
+:extrapreds ((x1278))
+:extrapreds ((x1279))
+:extrapreds ((x1280))
+:extrapreds ((x1281))
+:extrapreds ((x1282))
+:extrapreds ((x1283))
+:extrapreds ((x1284))
+:extrapreds ((x1285))
+:extrapreds ((x1286))
+:extrapreds ((x1287))
+:extrapreds ((x1288))
+:extrapreds ((x1289))
+:extrapreds ((x1290))
+:extrapreds ((x1291))
+:extrapreds ((x1292))
+:extrapreds ((x1293))
+:extrapreds ((x1294))
+:extrapreds ((x1295))
+:extrapreds ((x1296))
+:extrapreds ((x1297))
+:extrapreds ((x1298))
+:extrapreds ((x1299))
+:extrapreds ((x1300))
+:extrapreds ((x1301))
+:extrapreds ((x1302))
+:extrapreds ((x1303))
+:extrapreds ((x1304))
+:extrapreds ((x1305))
+:extrapreds ((x1306))
+:extrapreds ((x1307))
+:extrapreds ((x1308))
+:extrapreds ((x1309))
+:extrapreds ((x1310))
+:extrapreds ((x1311))
+:extrapreds ((x1312))
+:extrapreds ((x1313))
+:extrapreds ((x1314))
+:extrapreds ((x1315))
+:extrapreds ((x1316))
+:extrapreds ((x1317))
+:extrapreds ((x1318))
+:extrapreds ((x1319))
+:extrapreds ((x1320))
+:extrapreds ((x1321))
+:extrapreds ((x1322))
+:extrapreds ((x1323))
+:extrapreds ((x1324))
+:extrapreds ((x1325))
+:extrapreds ((x1326))
+:extrapreds ((x1327))
+:extrapreds ((x1328))
+:extrapreds ((x1329))
+:extrapreds ((x1330))
+:extrapreds ((x1331))
+:extrapreds ((x1332))
+:extrapreds ((x1333))
+:extrapreds ((x1334))
+:extrapreds ((x1335))
+:extrapreds ((x1336))
+:extrapreds ((x1337))
+:extrapreds ((x1338))
+:extrapreds ((x1339))
+:extrapreds ((x1340))
+:extrapreds ((x1341))
+:extrapreds ((x1342))
+:extrapreds ((x1343))
+:extrapreds ((x1344))
+:extrapreds ((x1345))
+:extrapreds ((x1346))
+:extrapreds ((x1347))
+:extrapreds ((x1348))
+:extrapreds ((x1349))
+:extrapreds ((x1350))
+:extrapreds ((x1351))
+:extrapreds ((x1352))
+:extrapreds ((x1353))
+:extrapreds ((x1354))
+:extrapreds ((x1355))
+:extrapreds ((x1356))
+:extrapreds ((x1357))
+:extrapreds ((x1358))
+:extrapreds ((x1359))
+:extrapreds ((x1360))
+:extrapreds ((x1361))
+:extrapreds ((x1362))
+:extrapreds ((x1363))
+:extrapreds ((x1364))
+:extrapreds ((x1365))
+:extrapreds ((x1366))
+:extrapreds ((x1367))
+:extrapreds ((x1368))
+:extrapreds ((x1369))
+:extrapreds ((x1370))
+:extrapreds ((x1371))
+:extrapreds ((x1372))
+:extrapreds ((x1373))
+:extrapreds ((x1374))
+:extrapreds ((x1375))
+:extrapreds ((x1376))
+:extrapreds ((x1377))
+:extrapreds ((x1378))
+:extrapreds ((x1379))
+:extrapreds ((x1380))
+:extrapreds ((x1381))
+:extrapreds ((x1382))
+:extrapreds ((x1383))
+:extrapreds ((x1384))
+:extrapreds ((x1385))
+:extrapreds ((x1386))
+:extrapreds ((x1387))
+:extrapreds ((x1388))
+:extrapreds ((x1389))
+:extrapreds ((x1390))
+:extrapreds ((x1391))
+:extrapreds ((x1392))
+:extrapreds ((x1393))
+:extrapreds ((x1394))
+:extrapreds ((x1395))
+:extrapreds ((x1396))
+:extrapreds ((x1397))
+:extrapreds ((x1398))
+:extrapreds ((x1399))
+:extrapreds ((x1400))
+:extrapreds ((x1401))
+:extrapreds ((x1402))
+:extrapreds ((x1403))
+:extrapreds ((x1404))
+:extrapreds ((x1405))
+:extrapreds ((x1406))
+:extrapreds ((x1407))
+:extrapreds ((x1408))
+:extrapreds ((x1409))
+:extrapreds ((x1410))
+:extrapreds ((x1411))
+:extrapreds ((x1412))
+:extrapreds ((x1413))
+:extrapreds ((x1414))
+:extrapreds ((x1415))
+:extrapreds ((x1416))
+:extrapreds ((x1417))
+:extrapreds ((x1418))
+:extrapreds ((x1419))
+:extrapreds ((x1420))
+:extrapreds ((x1421))
+:extrapreds ((x1422))
+:extrapreds ((x1423))
+:extrapreds ((x1424))
+:extrapreds ((x1425))
+:extrapreds ((x1426))
+:extrapreds ((x1427))
+:extrapreds ((x1428))
+:extrapreds ((x1429))
+:extrapreds ((x1430))
+:extrapreds ((x1431))
+:extrapreds ((x1432))
+:extrapreds ((x1433))
+:extrapreds ((x1434))
+:extrapreds ((x1435))
+:extrapreds ((x1436))
+:extrapreds ((x1437))
+:extrapreds ((x1438))
+:extrapreds ((x1439))
+:extrapreds ((x1440))
+:extrapreds ((x1441))
+:extrapreds ((x1442))
+:extrapreds ((x1443))
+:extrapreds ((x1444))
+:extrapreds ((x1445))
+:extrapreds ((x1446))
+:extrapreds ((x1447))
+:extrapreds ((x1448))
+:extrapreds ((x1449))
+:extrapreds ((x1450))
+:extrapreds ((x1451))
+:extrapreds ((x1452))
+:extrapreds ((x1453))
+:extrapreds ((x1454))
+:extrapreds ((x1455))
+:extrapreds ((x1456))
+:extrapreds ((x1457))
+:extrapreds ((x1458))
+:extrapreds ((x1459))
+:extrapreds ((x1460))
+:extrapreds ((x1461))
+:extrapreds ((x1462))
+:extrapreds ((x1463))
+:extrapreds ((x1464))
+:extrapreds ((x1465))
+:extrapreds ((x1466))
+:extrapreds ((x1467))
+:extrapreds ((x1468))
+:extrapreds ((x1469))
+:extrapreds ((x1470))
+:extrapreds ((x1471))
+:extrapreds ((x1472))
+:extrapreds ((x1473))
+:extrapreds ((x1474))
+:extrapreds ((x1475))
+:extrapreds ((x1476))
+:extrapreds ((x1477))
+:extrapreds ((x1478))
+:extrapreds ((x1479))
+:extrapreds ((x1480))
+:extrapreds ((x1481))
+:extrapreds ((x1482))
+:extrapreds ((x1483))
+:extrapreds ((x1484))
+:extrapreds ((x1485))
+:extrapreds ((x1486))
+:extrapreds ((x1487))
+:extrapreds ((x1488))
+:extrapreds ((x1489))
+:extrapreds ((x1490))
+:extrapreds ((x1491))
+:extrapreds ((x1492))
+:extrapreds ((x1493))
+:extrapreds ((x1494))
+:extrapreds ((x1495))
+:extrapreds ((x1496))
+:extrapreds ((x1497))
+:extrapreds ((x1498))
+:extrapreds ((x1499))
+:extrapreds ((x1500))
+:extrapreds ((x1501))
+:extrapreds ((x1502))
+:extrapreds ((x1503))
+:extrapreds ((x1504))
+:extrapreds ((x1505))
+:extrapreds ((x1506))
+:extrapreds ((x1507))
+:extrapreds ((x1508))
+:extrapreds ((x1509))
+:extrapreds ((x1510))
+:extrapreds ((x1511))
+:extrapreds ((x1512))
+:extrapreds ((x1513))
+:extrapreds ((x1514))
+:extrapreds ((x1515))
+:extrapreds ((x1516))
+:extrapreds ((x1517))
+:extrapreds ((x1518))
+:extrapreds ((x1519))
+:extrapreds ((x1520))
+:extrapreds ((x1521))
+:extrapreds ((x1522))
+:extrapreds ((x1523))
+:extrapreds ((x1524))
+:extrapreds ((x1525))
+:extrapreds ((x1526))
+:extrapreds ((x1527))
+:extrapreds ((x1528))
+:extrapreds ((x1529))
+:extrapreds ((x1530))
+:extrapreds ((x1531))
+:extrapreds ((x1532))
+:extrapreds ((x1533))
+:extrapreds ((x1534))
+:extrapreds ((x1535))
+:extrapreds ((x1536))
+:extrapreds ((x1537))
+:extrapreds ((x1538))
+:extrapreds ((x1539))
+:extrapreds ((x1540))
+:extrapreds ((x1541))
+:extrapreds ((x1542))
+:extrapreds ((x1543))
+:extrapreds ((x1544))
+:extrapreds ((x1545))
+:extrapreds ((x1546))
+:extrapreds ((x1547))
+:extrapreds ((x1548))
+:extrapreds ((x1549))
+:extrapreds ((x1550))
+:extrapreds ((x1551))
+:extrapreds ((x1552))
+:extrapreds ((x1553))
+:extrapreds ((x1554))
+:extrapreds ((x1555))
+:extrapreds ((x1556))
+:extrapreds ((x1557))
+:extrapreds ((x1558))
+:extrapreds ((x1559))
+:extrapreds ((x1560))
+:extrapreds ((x1561))
+:extrapreds ((x1562))
+:extrapreds ((x1563))
+:extrapreds ((x1564))
+:extrapreds ((x1565))
+:extrapreds ((x1566))
+:extrapreds ((x1567))
+:extrapreds ((x1568))
+:extrapreds ((x1569))
+:extrapreds ((x1570))
+:extrapreds ((x1571))
+:extrapreds ((x1572))
+:extrapreds ((x1573))
+:extrapreds ((x1574))
+:extrapreds ((x1575))
+:extrapreds ((x1576))
+:extrapreds ((x1577))
+:extrapreds ((x1578))
+:extrapreds ((x1579))
+:extrapreds ((x1580))
+:extrapreds ((x1581))
+:extrapreds ((x1582))
+:extrapreds ((x1583))
+:extrapreds ((x1584))
+:extrapreds ((x1585))
+:extrapreds ((x1586))
+:extrapreds ((x1587))
+:extrapreds ((x1588))
+:extrapreds ((x1589))
+:extrapreds ((x1590))
+:extrapreds ((x1591))
+:extrapreds ((x1592))
+:extrapreds ((x1593))
+:extrapreds ((x1594))
+:extrapreds ((x1595))
+:extrapreds ((x1596))
+:extrapreds ((x1597))
+:formula (and
+(or x575 x40)
+(or (not x18) (not x113) (not x269) (not x1527) (not x1398))
+(or x641 (not x466))
+(or (not x790) x96)
+(or x377 x1485)
+(or (not x259) x110)
+(or x196 (not x687))
+(or x470 (not x434))
+(or x1526 (not x20))
+(or x432 (not x1595))
+(or (not x1317) (not x1578))
+(or (not x1412) (not x634))
+(or x1206 x1441)
+(or x1539 (not x97) (not x359) x1558 x1327)
+(or x517 (not x355))
+(or x1136 x1150)
+(or (not x355) (not x350))
+(or (not x627) (not x1484))
+(or x1418 x693)
+(or x351 x1508)
+(or (not x1294) (not x376))
+(or x936 x206)
+(or x1242 x152)
+(or x1452 (not x645))
+(or x890 (not x308))
+(or (not x1258) x575)
+(or (not x989) (not x568))
+(or (not x165) x982)
+(or (not x657) x1485)
+(or (not x75) x1570)
+(or (not x726) x343 (not x97) (not x1545) x348)
+(or x1468 (not x49))
+(or (not x94) (not x1034))
+(or x1069 (not x1072))
+(or (not x1534) (not x773))
+(or (not x1237) x342)
+(or x257 x1085)
+(or x1163 x1461)
+(or (not x541) (not x910))
+(or (not x623) (not x483))
+(or x25 (not x1108))
+(or (not x439) x835)
+(or (not x1151) (not x903))
+(or x889 (not x503))
+(or x1168 (not x1347) x1575 x653 (not x501))
+(or (not x623) (not x979))
+(or (not x891) (not x1554))
+(or (not x542) x176)
+(or x499 x1395)
+(or x1187 (not x531))
+(or x92 (not x564))
+(or (not x86) x55)
+(or x1363 x626)
+(or (not x519) (not x448))
+(or (not x288) (not x550))
+(or (not x1539) (not x841))
+(or x1311 (not x537) (not x57))
+(or (not x451) (not x1440))
+(or (not x479) x1299 (not x346) x1047 x330 (not x1454) x374)
+(or x377 (not x457))
+(or (not x1359) (not x796))
+(or (not x1429) x1202)
+(or (not x942) (not x147))
+(or x210 (not x98))
+(or (not x1255) x575)
+(or x1403 (not x214))
+(or (not x858) x1574)
+(or x1594 (not x821))
+(or x1126 x1389)
+(or x1322 (not x645))
+(or (not x133) x689)
+(or (not x627) (not x440))
+(or (not x1124) x632)
+(or x1088 (not x219))
+(or (not x984) x1508)
+(or (not x965) (not x355))
+(or x837 (not x806))
+(or (not x1592) (not x1149))
+(or (not x663) x766)
+(or x521 x1029)
+(or (not x794) (not x138))
+(or (not x1267) x662)
+(or x309 x226)
+(or x1454 x517)
+(or (not x490) x642)
+(or (not x1101) x1240)
+(or (not x602) (not x789))
+(or x1032 (not x483))
+(or x314 (not x1260))
+(or (not x172) (not x656) (not x675) (not x292) (not x1165))
+(or (not x169) (not x1409))
+(or x489 x1525)
+(or (not x487) (not x244))
+(or (not x873) x1356)
+(or (not x860) x1126)
+(or x607 (not x1192))
+(or x1069 x966)
+(or (not x548) (not x71))
+(or (not x1210) (not x1281))
+(or (not x995) (not x125))
+(or (not x951) x988)
+(or (not x1167) (not x1017))
+(or (not x847) x591)
+(or (not x411) x947)
+(or x1126 x479)
+(or (not x863) (not x1364))
+(or (not x935) (not x43))
+(or (not x734) x1495)
+(or x517 x913)
+(or x496 (not x872))
+(or x603 (not x1412))
+(or (not x398) x318)
+(or (not x891) x1032)
+(or x1383 x1586)
+(or x281 (not x1107))
+(or (not x81) x605)
+(or x1548 x359)
+(or x206 (not x1258))
+(or x73 x978)
+(or (not x192) (not x1551))
+(or x1362 x346)
+(or x921 (not x1317))
+(or (not x1134) x321)
+(or x1237 (not x342) x1459 x188)
+(or x31 x218 x109)
+(or (not x138) (not x937))
+(or x344 (not x553))
+(or (not x862) x1272)
+(or (not x547) x1563)
+(or x769 x1499)
+(or (not x1525) (not x310) (not x1100) x950)
+(or (not x75) (not x964))
+(or (not x526) x359)
+(or x876 x1528 (not x675) (not x1145) x125)
+(or x1379 x58)
+(or (not x1483) (not x732))
+(or x685 (not x275))
+(or (not x738) (not x1406))
+(or x1485 x108)
+(or x1092 (not x1486))
+(or (not x456) (not x1267))
+(or (not x1281) x1115)
+(or (not x806) (not x49))
+(or x66 x180)
+(or (not x599) (not x840))
+(or (not x1532) x558)
+(or x1109 x1427)
+(or (not x180) x716 x1449 (not x66))
+(or x539 (not x239))
+(or (not x115) x426)
+(or (not x923) (not x1252))
+(or (not x862) x1433)
+(or x1579 x445)
+(or (not x909) (not x1567) (not x563) x1587 x322)
+(or (not x655) x1009)
+(or x1308 x1197)
+(or (not x4) (not x871))
+(or x739 (not x826))
+(or (not x353) (not x1463))
+(or x1572 (not x447))
+(or x1379 (not x1368))
+(or x924 (not x683))
+(or (not x28) (not x655))
+(or x445 x108)
+(or x205 x478)
+(or (not x1033) x1011)
+(or x1538 x1128)
+(or x883 x1094)
+(or x197 x1458)
+(or x432 x1088)
+(or (not x573) x1091)
+(or x1345 x682)
+(or x974 x1418)
+(or x1474 (not x1453))
+(or x521 (not x511))
+(or (not x107) (not x997))
+(or x281 (not x1568))
+(or x1295 (not x85))
+(or x985 (not x141))
+(or (not x212) (not x365) (not x200) x1114 x464 (not x1259))
+(or (not x1392) (not x1255))
+(or (not x1375) (not x333))
+(or x1316 x1450)
+(or (not x874) (not x63))
+(or x1438 (not x1314))
+(or (not x1345) x915 x1108 x566 x306)
+(or x828 (not x1493))
+(or (not x1252) (not x1553))
+(or x757 (not x623))
+(or (not x1551) x1266)
+(or (not x956) (not x999))
+(or x650 x1066)
+(or x501 (not x1354))
+(or x161 (not x1568))
+(or (not x1258) (not x1267))
+(or (not x479) x743 (not x1028) x417 (not x944) (not x625) x239)
+(or x84 (not x716))
+(or x195 x1061)
+(or (not x366) x240)
+(or (not x352) (not x277))
+(or x1331 x445)
+(or x1291 x166)
+(or x998 x202)
+(or x803 x325)
+(or x902 x875)
+(or (not x907) (not x1343))
+(or (not x1223) x1391)
+(or x1454 x479)
+(or (not x1016) x23)
+(or (not x789) (not x1314))
+(or x781 x1020)
+(or x1579 (not x600))
+(or (not x1314) x759)
+(or x39 x1452)
+(or x1356 (not x1146))
+(or x1199 (not x1125))
+(or x182 (not x764))
+(or x1289 (not x1098))
+(or x1316 (not x207))
+(or x1198 x501)
+(or (not x874) x1322)
+(or x757 (not x1154))
+(or x898 x17)
+(or x560 x1304)
+(or (not x1292) (not x1378))
+(or (not x1216) (not x337))
+(or x591 (not x497))
+(or (not x9) x174)
+(or x1058 x17)
+(or x1135 (not x317))
+(or (not x611) (not x103))
+(or x583 x870 (not x533) (not x686) x634)
+(or x537 x576)
+(or (not x852) x425)
+(or x1308 x30)
+(or (not x748) (not x118) (not x108))
+(or (not x28) x758)
+(or x392 (not x147))
+(or x1089 x714 (not x247) (not x387))
+(or x1418 x641)
+(or x144 (not x548))
+(or x1291 (not x469))
+(or x118 (not x1344))
+(or x1186 (not x1200))
+(or (not x1290) (not x493))
+(or x1030 (not x62))
+(or (not x877) (not x1223))
+(or x1260 x968 (not x314) x1364 (not x266))
+(or (not x202) (not x658) x956 x390 x999)
+(or x1308 (not x1033))
+(or (not x994) (not x1503))
+(or x206 (not x1407))
+(or (not x688) (not x522))
+(or x947 (not x538))
+(or (not x1535) x1327 (not x127) x548 x1432)
+(or x594 x1592 (not x875) (not x643) x440 (not x1295))
+(or x236 (not x404))
+(or x130 x792)
+(or (not x1211) x129)
+(or (not x1209) x659)
+(or (not x491) (not x237) x637 x1255)
+(or x276 x677)
+(or (not x77) x1538)
+(or x1266 x1338)
+(or (not x285) x1589)
+(or x477 (not x510))
+(or x1502 (not x1155))
+(or (not x155) (not x1025))
+(or x199 (not x1155))
+(or x366 x454 x1547 (not x268) (not x240))
+(or (not x265) x1537)
+(or (not x192) x584)
+(or x614 x534)
+(or x1152 x267)
+(or (not x621) (not x1595))
+(or x1169 (not x439))
+(or x880 x1102)
+(or x202 x592)
+(or (not x352) (not x1201))
+(or x283 (not x1297))
+(or (not x1536) x1338)
+(or (not x448) x1051)
+(or (not x815) (not x802))
+(or x508 (not x141))
+(or x1520 x809)
+(or x479 (not x1047))
+(or x200 x212)
+(or (not x256) x798)
+(or (not x520) (not x1306))
+(or (not x356) (not x923))
+(or x500 (not x862))
+(or (not x355) x162)
+(or x977 x1216 x337 x1095)
+(or (not x854) x185)
+(or x1100 x598)
+(or (not x1539) x359)
+(or (not x1138) x1148)
+(or x885 x44)
+(or (not x1108) (not x566))
+(or x635 (not x492))
+(or (not x1484) (not x930))
+(or x560 (not x1380))
+(or x711 (not x1490))
+(or x786 (not x1367))
+(or (not x462) x196)
+(or x1038 x1156)
+(or (not x352) (not x698))
+(or x1071 x865)
+(or x193 x1074)
+(or (not x1218) (not x621))
+(or (not x515) (not x822))
+(or x153 x1519)
+(or x279 x1213)
+(or x30 x230)
+(or (not x806) (not x302))
+(or x1587 (not x1423) (not x394) x1435)
+(or (not x923) x781)
+(or x1385 (not x832))
+(or (not x1381) x17)
+(or x1085 x1130)
+(or (not x1541) x778)
+(or (not x623) x1474)
+(or x1243 x1334)
+(or (not x688) (not x312))
+(or x398 (not x940) (not x1585) (not x230))
+(or (not x898) x345 x808 x980)
+(or (not x1381) x686)
+(or x950 (not x982) (not x578))
+(or x1079 (not x548))
+(or x1511 (not x186))
+(or x1300 x320 (not x829) (not x1085) (not x713) (not x1370) x754)
+(or x321 (not x239))
+(or x1029 x1264)
+(or (not x122) (not x476))
+(or (not x918) x707)
+(or (not x891) x344)
+(or x504 x1572)
+(or (not x374) x1264)
+(or (not x215) (not x435))
+(or x1427 (not x1157))
+(or x40 x981)
+(or (not x1141) (not x371))
+(or (not x1501) x941)
+(or (not x531) x607)
+(or x798 (not x157))
+(or x477 (not x251))
+(or (not x166) x551 (not x803) (not x238))
+(or x1228 (not x1230))
+(or (not x430) (not x1124))
+(or (not x968) x639)
+(or (not x962) x210)
+(or x280 x1042)
+(or x707 x1092)
+(or x24 x313)
+(or (not x1176) x756)
+(or x268 (not x372))
+(or x1420 (not x984))
+(or x1 x1056)
+(or x1076 x25)
+(or (not x1059) (not x1064))
+(or (not x410) x678)
+(or x1264 (not x611))
+(or (not x41) x2)
+(or x1511 (not x1496))
+(or (not x852) x1450)
+(or (not x380) x1521)
+(or x1597 x1511)
+(or x200 x365)
+(or x324 (not x1227))
+(or (not x181) x402)
+(or x894 x1495)
+(or x1013 x1550)
+(or x1113 (not x179))
+(or (not x1144) (not x1054))
+(or (not x387) (not x396) (not x1597) x511)
+(or (not x278) (not x1297))
+(or x679 (not x1494))
+(or (not x395) x112)
+(or x647 (not x117))
+(or (not x112) (not x419) x887 x395)
+(or (not x262) x1377 (not x339) x69 x964)
+(or (not x856) (not x1185))
+(or x813 x851)
+(or x1475 (not x505))
+(or (not x346) x663 x505 (not x557) (not x766) (not x530) x648 x692)
+(or x1024 (not x773))
+(or x113 x947)
+(or x491 (not x983))
+(or x1091 (not x1258))
+(or x675 (not x125))
+(or x786 (not x27))
+(or x453 x635)
+(or x506 (not x1411) (not x795) (not x1325))
+(or (not x1311) x1026)
+(or x373 (not x899) x1478 x1052)
+(or x619 (not x1523) (not x1401) (not x1480) x428 (not x534) (not x1136) (not x614))
+(or (not x618) (not x295))
+(or x504 x127)
+(or (not x231) x671)
+(or (not x852) x744)
+(or (not x1440) (not x552))
+(or x684 (not x1126) (not x479) (not x309) x1311 x76)
+(or x211 (not x141))
+(or (not x1364) x784)
+(or x1008 (not x650) x1267)
+(or (not x687) (not x408))
+(or x1117 (not x69))
+(or x875 (not x1483))
+(or x1119 (not x1528))
+(or (not x796) x835)
+(or x59 (not x868))
+(or x988 (not x1211))
+(or x39 (not x114))
+(or (not x932) x240)
+(or (not x227) x3)
+(or (not x1326) x313)
+(or x1466 x630)
+(or (not x1125) (not x1194))
+(or (not x1157) x753)
+(or x431 (not x974) x297)
+(or x1428 (not x317))
+(or x24 (not x1487))
+(or x292 (not x1463))
+(or x1396 x300)
+(or (not x1166) x123)
+(or (not x505) (not x1021))
+(or (not x694) x1421)
+(or x326 (not x983))
+(or (not x390) x168)
+(or (not x1014) (not x944) (not x1075) x959 (not x1039) (not x273))
+(or (not x814) (not x595))
+(or (not x1239) (not x406))
+(or x1418 x727)
+(or x894 x258)
+(or x1357 x1088)
+(or x1027 x206)
+(or (not x1187) (not x140) x531)
+(or x1408 (not x1146))
+(or (not x645) (not x1343))
+(or (not x516) (not x1463))
+(or x630 x182)
+(or (not x506) x1048)
+(or (not x637) x967)
+(or x638 x245)
+(or x767 (not x435))
+(or (not x1392) x848)
+(or (not x579) x27 (not x172) (not x1229) x802 x881 x995)
+(or (not x1360) (not x931))
+(or (not x1181) (not x541))
+(or x326 (not x1095))
+(or x1320 x1552)
+(or x1341 x1104)
+(or (not x404) (not x1490))
+(or x47 (not x290))
+(or x117 x244)
+(or x1356 (not x839))
+(or x1430 x331)
+(or (not x1394) (not x400))
+(or (not x1478) x1120)
+(or (not x1151) (not x447))
+(or x735 (not x1005))
+(or x807 (not x602))
+(or (not x388) x1008 (not x709))
+(or (not x1560) (not x259))
+(or x299 x1011)
+(or x262 (not x624))
+(or (not x49) (not x302))
+(or (not x133) x922)
+(or (not x493) x1304)
+(or (not x488) (not x1022))
+(or (not x1212) x1078)
+(or x503 x1446)
+(or (not x38) (not x1225))
+(or (not x532) x925)
+(or x769 x52 x382)
+(or x1433 (not x1025))
+(or x792 x589)
+(or x825 x782)
+(or (not x1067) (not x192))
+(or (not x1365) x1416)
+(or (not x1309) (not x434))
+(or x205 (not x561))
+(or (not x441) (not x775))
+(or x238 (not x551))
+(or (not x1195) x1139)
+(or x758 (not x554))
+(or (not x1328) x113)
+(or (not x586) x1034 x94 x561 (not x1425))
+(or (not x629) x105)
+(or (not x965) x711)
+(or (not x1183) (not x1057))
+(or x1229 x579)
+(or (not x611) (not x690))
+(or (not x447) (not x1539))
+(or x914 x422)
+(or (not x806) (not x741))
+(or x140 (not x1177))
+(or (not x304) x890)
+(or (not x907) x1027)
+(or (not x1543) (not x495))
+(or x838 x936)
+(or x948 (not x472))
+(or (not x910) x258)
+(or (not x142) (not x1225))
+(or x1162 (not x859))
+(or (not x774) (not x507))
+(or x1438 (not x708))
+(or x1058 (not x367))
+(or x7 x694 x1484 x930)
+(or x967 x1452)
+(or x1189 (not x1183))
+(or x310 (not x1235))
+(or (not x1203) x188 x1529)
+(or (not x648) x280)
+(or (not x38) x351)
+(or (not x1060) x560)
+(or (not x298) x1010)
+(or x1020 x1058)
+(or x850 (not x971))
+(or x849 x325)
+(or (not x525) (not x866))
+(or (not x335) (not x999))
+(or x243 x1475)
+(or (not x358) x1319)
+(or x92 x120)
+(or (not x209) x51)
+(or (not x69) x1204)
+(or (not x1124) (not x817))
+(or (not x1449) (not x319))
+(or (not x1268) x1202)
+(or x1319 x1362)
+(or (not x1263) x1500)
+(or x90 x185)
+(or (not x854) (not x1173))
+(or (not x416) x1184)
+(or (not x456) (not x1258))
+(or x213 (not x157))
+(or x1313 (not x745))
+(or (not x1572) (not x1437) x71 x1564 x181)
+(or x988 (not x617))
+(or x810 x135)
+(or (not x106) x1473)
+(or x697 x884)
+(or x1135 (not x516))
+(or x819 (not x364) (not x671) (not x638))
+(or (not x1434) x1113)
+(or (not x495) (not x267))
+(or x178 x857 (not x816))
+(or x723 x1550)
+(or (not x431) (not x1037))
+(or (not x1001) x1441)
+(or x1109 (not x962))
+(or x1014 (not x959))
+(or (not x634) (not x1223))
+(or (not x779) x952)
+(or x1558 (not x691) x1419)
+(or x821 (not x1399) x1275)
+(or (not x717) (not x1180))
+(or (not x1486) (not x9))
+(or (not x1229) x773 x1283 (not x742))
+(or (not x138) (not x319))
+(or (not x1157) x1550)
+(or (not x483) (not x772))
+(or x280 (not x189))
+(or (not x1350) x1266)
+(or x149 (not x1267))
+(or x1338 x1097)
+(or x223 (not x931))
+(or x925 x1012)
+(or (not x1547) x268)
+(or x1351 (not x1490))
+(or x813 x1480)
+(or (not x1375) (not x574))
+(or (not x523) x1079)
+(or (not x1324) (not x1191))
+(or x234 (not x590))
+(or (not x995) (not x979))
+(or x985 x232)
+(or x746 x384)
+(or x1481 (not x1021))
+(or (not x91) (not x335))
+(or x1078 (not x627))
+(or x334 x185)
+(or x896 x755)
+(or (not x1116) (not x189))
+(or (not x1168) (not x606))
+(or x249 (not x256))
+(or (not x222) x1097)
+(or x197 x1393)
+(or x941 (not x601))
+(or (not x1375) (not x954))
+(or x212 x1338)
+(or (not x1002) x813)
+(or x540 (not x691))
+(or x626 x1273)
+(or x1246 (not x665))
+(or x332 x1043)
+(or (not x856) (not x1125))
+(or (not x1486) (not x588))
+(or x1204 x1035)
+(or x1040 (not x1201))
+(or x1103 (not x1573))
+(or x432 (not x277))
+(or (not x449) x96)
+(or (not x417) (not x86))
+(or (not x1288) (not x551))
+(or (not x1034) x998)
+(or x797 x717 (not x685) (not x981))
+(or (not x1424) x1507)
+(or (not x177) x126)
+(or x727 x974)
+(or (not x322) (not x1587))
+(or (not x1391) x1488 (not x405))
+(or x265 (not x1537) (not x916) (not x273))
+(or x825 x1187)
+(or (not x1524) (not x806))
+(or (not x1152) (not x267))
+(or (not x1239) x1506)
+(or x835 x786)
+(or x448 x1492 x814 x856 x1185)
+(or (not x895) x1187)
+(or (not x962) (not x187))
+(or (not x1253) (not x590))
+(or (not x1443) x850)
+(or (not x1252) x1593)
+(or (not x154) x1403)
+(or (not x1384) x465)
+(or x1207 (not x243) (not x1475) x1412)
+(or (not x1299) x197)
+(or x1498 x1075)
+(or (not x718) (not x371))
+(or x919 x1565)
+(or (not x1114) x212)
+(or x1031 (not x1413))
+(or x193 (not x409))
+(or x176 x1585)
+(or (not x722) (not x438))
+(or (not x1302) x1234)
+(or x936 (not x1209))
+(or x1466 (not x1551))
+(or x1024 x788)
+(or (not x1309) x1271)
+(or (not x1302) (not x1218))
+(or (not x154) (not x1105))
+(or (not x921) x956 (not x499) x1317)
+(or (not x1306) x228)
+(or x561 (not x205) (not x828) (not x99) (not x1313) x1107 x1261)
+(or x682 x1011)
+(or x1550 (not x741))
+(or x1308 (not x423))
+(or (not x62) x80)
+(or (not x1504) x37)
+(or (not x24) (not x1221) x401 (not x223))
+(or x1430 (not x1431))
+(or (not x1392) (not x621))
+(or (not x1252) x1425)
+(or (not x224) x1396)
+(or x1467 x379)
+(or x368 (not x903))
+(or x1295 (not x386))
+(or (not x1196) (not x690))
+(or (not x428) (not x1218))
+(or (not x1376) (not x1461) x514 x469)
+(or (not x1478) x1013)
+(or x1104 x1035)
+(or x241 x674)
+(or x234 x1140)
+(or (not x1360) (not x619))
+(or x1046 (not x179))
+(or (not x1194) x924)
+(or x1044 x1471)
+(or x736 x1489)
+(or (not x365) x556 (not x924) (not x1049) x1194 x683)
+(or (not x1539) x878)
+(or x1313 x1103)
+(or x744 x397)
+(or x991 x112)
+(or x901 x570)
+(or (not x1274) (not x1447))
+(or x261 (not x926))
+(or x1363 x329)
+(or (not x937) (not x572))
+(or (not x604) x830)
+(or (not x860) (not x5))
+(or (not x649) (not x1127))
+(or x1345 (not x1108))
+(or x578 x982)
+(or (not x254) (not x1359))
+(or x274 x1546)
+(or x325 x1010)
+(or (not x91) (not x1463))
+(or (not x1041) x1481)
+(or x501 x748)
+(or x1080 (not x1424))
+(or (not x1157) x206)
+(or (not x1252) (not x1596))
+(or x1579 x1027)
+(or x234 x1518)
+(or (not x308) x427)
+(or x781 (not x652))
+(or (not x977) (not x1087))
+(or (not x431) (not x297))
+(or (not x1233) x1341)
+(or (not x1300) x1085)
+(or (not x1110) x807)
+(or x1179 x190 x1559)
+(or (not x1235) (not x1278))
+(or (not x1299) (not x374))
+(or (not x502) x1307)
+(or x1541 (not x414) (not x679) x27 x337 (not x1576) (not x786) x420 (not x1481))
+(or (not x1194) (not x862))
+(or (not x1285) (not x1288))
+(or x339 (not x298))
+(or (not x987) (not x1087))
+(or (not x619) x1401)
+(or x50 (not x253))
+(or (not x1173) x1430)
+(or x1387 (not x272))
+(or (not x1358) x30)
+(or (not x87) (not x462))
+(or x867 x1115)
+(or (not x76) x309)
+(or (not x1154) x1140)
+(or x770 x253 x173)
+(or (not x1365) x1249)
+(or x837 x967)
+(or x396 x1597)
+(or (not x1442) (not x16))
+(or (not x288) (not x624))
+(or (not x476) x1525)
+(or (not x1159) x1418)
+(or (not x1309) x1129)
+(or (not x1407) (not x62))
+(or (not x1300) (not x754))
+(or (not x1297) x92)
+(or x1433 x1238)
+(or x432 (not x1268))
+(or (not x1112) x1063)
+(or (not x1200) (not x1305))
+(or x1454 (not x1157))
+(or x280 x407)
+(or (not x183) x1544)
+(or (not x951) (not x994))
+(or (not x1460) (not x668))
+(or x15 (not x260))
+(or (not x483) x1544)
+(or (not x1512) x102)
+(or x1430 x827)
+(or x608 (not x1056))
+(or x1340 x642)
+(or (not x937) x1113)
+(or x1168 x858 (not x756))
+(or x682 (not x649))
+(or (not x89) x567)
+(or (not x750) x2)
+(or x132 x851)
+(or x1020 x1097)
+(or (not x1114) (not x469))
+(or (not x652) x1266)
+(or (not x541) (not x933))
+(or x521 (not x797))
+(or (not x860) x339)
+(or x228 (not x588))
+(or x1189 x1249)
+(or (not x1084) (not x194))
+(or (not x49) (not x805))
+(or (not x193) (not x1074) (not x867) x763)
+(or x1099 x1423)
+(or (not x895) (not x566))
+(or (not x63) (not x834))
+(or x354 x1082)
+(or x521 (not x808))
+(or (not x1216) (not x1041))
+(or x504 (not x714))
+(or (not x1582) x1446)
+(or x246 (not x1190))
+(or x727 (not x1472))
+(or x1042 (not x1164))
+(or x906 (not x1025))
+(or x850 (not x927))
+(or x842 (not x1528))
+(or (not x219) x23)
+(or x1409 x299)
+(or x332 x1208)
+(or (not x1591) (not x1373))
+(or x1038 (not x831))
+(or x389 x517)
+(or x261 (not x85))
+(or (not x1518) x565 x1154 x1484)
+(or x530 x346)
+(or (not x1415) (not x609))
+(or (not x1324) (not x937))
+(or x79 x359)
+(or (not x325) (not x992) (not x803) x708 x1292)
+(or (not x615) (not x75))
+(or x1346 x1063)
+(or x833 x589)
+(or (not x824) x1018)
+(or x744 x378)
+(or x271 (not x568))
+(or (not x741) x813)
+(or (not x1566) (not x191) x1554 (not x1186) (not x544))
+(or (not x1328) x453)
+(or (not x1388) (not x796))
+(or x1150 (not x466))
+(or x1235 x1278 x612)
+(or x1340 x705)
+(or x1398 x1527)
+(or x360 (not x1188))
+(or (not x959) (not x945))
+(or x1172 x723)
+(or x471 (not x887))
+(or x726 x261)
+(or (not x209) (not x255))
+(or x1099 x955)
+(or (not x306) (not x1108))
+(or (not x688) (not x406))
+(or (not x561) (not x1596))
+(or x786 (not x337))
+(or x1566 x96)
+(or (not x1008) (not x1267))
+(or x415 (not x296))
+(or (not x423) x230)
+(or x213 x442)
+(or (not x1182) x354)
+(or x1329 (not x821))
+(or (not x811) (not x996))
+(or x97 (not x1327))
+(or (not x804) x1390)
+(or x1240 (not x775))
+(or (not x1224) (not x259))
+(or (not x648) x309)
+(or x1428 (not x7))
+(or x1153 (not x222))
+(or x1518 (not x1484))
+(or (not x516) x299)
+(or (not x487) (not x789))
+(or (not x1407) x1240)
+(or (not x1515) (not x89))
+(or (not x648) (not x461))
+(or (not x986) x365)
+(or (not x1177) (not x680))
+(or (not x1059) x1035)
+(or (not x60) x898)
+(or x641 (not x452))
+(or (not x1435) (not x1122))
+(or (not x31) (not x111))
+(or x535 (not x139))
+(or (not x1127) (not x386))
+(or (not x143) (not x1268))
+(or x518 (not x1532))
+(or (not x595) x736)
+(or x1331 x450)
+(or x1130 x185)
+(or (not x464) x365)
+(or (not x714) (not x1089))
+(or (not x369) (not x1311))
+(or x1591 x599 (not x230) (not x917))
+(or x1236 (not x834))
+(or x1342 (not x1166))
+(or (not x1505) (not x617))
+(or x869 x1519)
+(or (not x294) x919)
+(or x1430 (not x1056))
+(or (not x1467) x382 (not x1049))
+(or (not x799) x1000 (not x801) (not x628) x1543 x490 x495)
+(or (not x366) x268)
+(or x1228 (not x395))
+(or x284 (not x1035) (not x1202) x1429)
+(or (not x1365) x957)
+(or (not x1588) (not x141))
+(or x521 (not x233))
+(or (not x1167) x1401)
+(or (not x299) (not x375) (not x940) (not x640))
+(or x801 x1079)
+(or (not x1141) (not x1149))
+(or x1024 (not x1534))
+(or x105 x993)
+(or (not x1302) x571)
+(or (not x1595) x445)
+(or x557 (not x5))
+(or x781 (not x1386))
+(or x721 (not x1116))
+(or x1347 (not x1575))
+(or x707 x116)
+(or x1473 (not x754))
+(or (not x482) (not x1564))
+(or x1039 x1075)
+(or (not x797) x685)
+(or x848 (not x1007))
+(or (not x682) x888 x1067 x409 x649 (not x1135))
+(or x321 x800)
+(or x1304 x1203)
+(or x15 (not x177))
+(or (not x553) (not x1177))
+(or (not x418) (not x209))
+(or (not x116) (not x478) x1064 (not x833) x1305 (not x544))
+(or (not x64) x1271)
+(or x518 (not x1290))
+(or (not x1116) (not x1578))
+(or x697 x1425)
+(or x1397 x793)
+(or (not x627) x334)
+(or x598 (not x1222))
+(or x682 (not x492))
+(or x593 x1202)
+(or x1061 (not x446))
+(or x1277 (not x38))
+(or (not x145) (not x912))
+(or x536 x809)
+(or (not x1378) (not x418))
+(or (not x350) x582)
+(or (not x550) x1074)
+(or (not x502) (not x488))
+(or x1414 x1373 x82)
+(or x1473 (not x355))
+(or (not x826) x659)
+(or x616 (not x239))
+(or x1545 (not x348))
+(or (not x541) x1349)
+(or x1500 (not x787))
+(or (not x1494) x1508)
+(or (not x452) x812)
+(or (not x1054) (not x192))
+(or (not x455) (not x923))
+(or x1009 x274)
+(or x963 x1473)
+(or (not x996) x1514)
+(or x453 (not x722))
+(or x442 x74)
+(or x626 x709)
+(or (not x203) x809)
+(or x616 (not x1188))
+(or (not x1105) x1100)
+(or (not x395) x293)
+(or (not x979) (not x956))
+(or x1321 x402)
+(or (not x770) x671)
+(or x99 x116)
+(or (not x1246) x284 (not x524) x316 x665)
+(or (not x298) (not x1419))
+(or (not x1256) x791)
+(or (not x1330) x1091)
+(or x580 x1137)
+(or (not x1560) x1371)
+(or x1262 (not x569))
+(or x1156 x377)
+(or x29 (not x821))
+(or (not x667) (not x545))
+(or x1132 (not x427) x52 x522 (not x1199) x308)
+(or (not x1361) (not x224))
+(or x1401 x248)
+(or x1338 x1020)
+(or x310 x1340)
+(or x1321 (not x181))
+(or (not x750) x744)
+(or (not x151) x813)
+(or (not x460) (not x246) x1190 (not x581) x871)
+(or (not x114) x938)
+(or (not x646) (not x190))
+(or x786 (not x1588))
+(or x379 x902)
+(or (not x1231) x442)
+(or x861 x670)
+(or (not x1543) (not x189))
+(or (not x390) (not x1260))
+(or (not x763) x1570)
+(or x693 x1150)
+(or (not x260) (not x418))
+(or (not x1328) x1563)
+(or x625 (not x239))
+(or (not x661) x498)
+(or (not x53) x1015)
+(or x396 (not x511))
+(or (not x862) x1338)
+(or x1213 x396)
+(or (not x417) (not x743))
+(or x686 (not x870))
+(or (not x880) (not x212) (not x1102) x1108 x615 x1245)
+(or (not x1317) x1544)
+(or x936 x913)
+(or (not x1230) x988)
+(or x1130 x460)
+(or (not x65) x632)
+(or x332 x711)
+(or (not x1477) x421)
+(or x625 x944)
+(or x921 (not x956))
+(or (not x505) (not x109))
+(or (not x1485) (not x1219) x657 x62 (not x108))
+(or (not x1384) (not x1195))
+(or x147 (not x760) (not x465))
+(or (not x1560) x110)
+(or x1242 x689)
+(or (not x303) x1589)
+(or x585 (not x836))
+(or x652 x455 x356 x923 (not x781))
+(or x670 x246)
+(or (not x319) (not x969))
+(or (not x374) x479)
+(or x193 (not x964))
+(or (not x1449) x851)
+(or x580 x334)
+(or (not x634) x533)
+(or (not x805) (not x1551))
+(or x1325 (not x506))
+(or x798 x34)
+(or x1150 (not x1350))
+(or (not x1317) x1371)
+(or x1032 x828)
+(or x283 (not x617))
+(or (not x143) x274)
+(or (not x983) (not x796))
+(or x58 x1262)
+(or (not x1536) x182)
+(or (not x532) x768)
+(or (not x542) (not x1373))
+(or x1570 (not x192))
+(or x1221 x1140)
+(or x659 (not x483))
+(or (not x1033) x286)
+(or (not x622) x938)
+(or x304 x1217 (not x329) (not x970))
+(or x904 (not x1429))
+(or x630 x1325)
+(or x370 x697)
+(or x1333 x591)
+(or x1009 (not x653))
+(or x643 (not x1367))
+(or (not x665) x1471)
+(or (not x7) x885)
+(or x271 (not x854))
+(or (not x853) x66)
+(or x837 x1092)
+(or (not x277) x1341)
+(or (not x584) (not x838) x1067 (not x245) x11 x192 x1191)
+(or (not x1434) (not x1083))
+(or (not x1167) x1234)
+(or (not x942) x1382)
+(or (not x88) x985)
+(or (not x220) x1070)
+(or (not x1588) (not x78))
+(or x1532 (not x586) x745 x1007 (not x558) (not x196) (not x1514))
+(or (not x87) (not x687))
+(or x1099 (not x54))
+(or x281 (not x217))
+(or x1498 (not x239))
+(or (not x215) x413)
+(or (not x451) x1535)
+(or (not x20) x1026)
+(or x1370 (not x1578))
+(or (not x561) (not x94))
+(or x509 (not x1531))
+(or (not x1426) x1117)
+(or x15 x512)
+(or (not x1312) x310)
+(or x421 (not x918))
+(or (not x511) x387)
+(or (not x590) x685)
+(or x1130 (not x943))
+(or x1066 x1086)
+(or (not x1413) x539)
+(or x1035 (not x366))
+(or x266 (not x968))
+(or x1109 x659)
+(or (not x77) (not x1005))
+(or (not x416) x1514)
+(or x1303 (not x1380))
+(or (not x492) x210)
+(or (not x360) (not x1405) x42)
+(or x1494 (not x1088) x962 (not x1251) (not x95))
+(or x397 (not x264))
+(or (not x45) x300)
+(or x100 (not x800))
+(or x1307 x1366)
+(or x835 (not x1388))
+(or x232 (not x390))
+(or x538 (not x992) (not x18))
+(or x247 x1213)
+(or x1323 (not x983))
+(or x241 (not x143))
+(or (not x954) (not x596))
+(or x715 (not x570) x1188)
+(or x311 (not x977))
+(or x1295 x641)
+(or x1469 x171)
+(or (not x600) x578)
+(or x101 (not x1066))
+(or (not x574) x1540)
+(or (not x696) (not x927))
+(or x521 (not x1089))
+(or (not x1167) (not x806))
+(or x1246 (not x769))
+(or (not x877) x751)
+(or x2 x766)
+(or x1291 (not x860))
+(or x869 x1418)
+(or (not x665) x725)
+(or (not x545) (not x1216))
+(or x1022 x1056 x1365 (not x957) (not x608) x858)
+(or x1111 (not x1306))
+(or (not x859) x1130)
+(or x1065 (not x19))
+(or x375 x1546)
+(or x775 x1101 (not x1240) x441)
+(or (not x968) x232)
+(or (not x14) x1077)
+(or x558 x586)
+(or x347 (not x22))
+(or x1480 x693)
+(or x978 x1579)
+(or x828 x1580)
+(or x952 (not x143))
+(or x878 x628)
+(or x670 (not x256))
+(or (not x1330) (not x692))
+(or (not x163) x33)
+(or x205 (not x1107))
+(or x286 (not x198))
+(or (not x1017) (not x138))
+(or (not x181) x1437)
+(or x102 x1561)
+(or (not x596) (not x1549))
+(or x289 x120)
+(or x24 (not x401))
+(or x1464 x749 (not x248) (not x1519))
+(or (not x1279) (not x927))
+(or x828 (not x1261))
+(or x33 x1535)
+(or (not x1499) x1571)
+(or (not x151) x1589)
+(or (not x753) (not x1214) x1255 (not x467) x989)
+(or (not x965) (not x754))
+(or (not x942) (not x820))
+(or (not x156) x1162)
+(or x1580 (not x811))
+(or x739 (not x734))
+(or (not x1178) x118)
+(or x1454 x136)
+(or (not x783) x1585)
+(or (not x958) (not x333))
+(or (not x910) x711)
+(or (not x1431) x1574)
+(or x1221 x757)
+(or (not x1330) (not x1258))
+(or x957 (not x328))
+(or (not x1515) x939)
+(or x1065 (not x1036))
+(or (not x1596) x1470)
+(or (not x1095) x729)
+(or (not x1021) x326)
+(or x240 (not x1547))
+(or x220 x1324 x1191 (not x1286))
+(or (not x296) x898)
+(or x678 (not x724))
+(or (not x227) (not x287))
+(or x504 (not x447))
+(or (not x91) x766)
+(or x900 (not x1182))
+(or (not x255) (not x104))
+(or x829 x1085)
+(or (not x1478) (not x561))
+(or (not x1378) (not x1072))
+(or (not x157) x1273)
+(or (not x218) (not x31))
+(or x1485 (not x1377))
+(or (not x722) (not x1237))
+(or x496 (not x1112))
+(or (not x1239) x1026)
+(or x261 (not x54))
+(or (not x219) x113)
+(or x347 x1099)
+(or (not x664) x519 (not x171) (not x691))
+(or (not x594) x875)
+(or (not x337) (not x977))
+(or (not x1073) x896)
+(or x81 x631)
+(or (not x1021) (not x109))
+(or x1269 x1385)
+(or x29 x659)
+(or x23 x347)
+(or (not x1360) (not x1125))
+(or x967 (not x668))
+(or (not x1181) x393)
+(or x1525 (not x787))
+(or (not x203) x1205)
+(or (not x320) x713)
+(or (not x750) x1030)
+(or x659 (not x821))
+(or (not x1122) (not x160))
+(or x467 (not x1095))
+(or (not x327) x1004)
+(or (not x603) x1596 (not x1452) x189 x1460 (not x1470) (not x1322) x645)
+(or x733 (not x514))
+(or x1510 x40)
+(or (not x218) (not x1155))
+(or (not x34) x1064 (not x92) x345 x1497 x1386)
+(or (not x362) x1303)
+(or x1009 x140)
+(or x1584 x723)
+(or x385 (not x151))
+(or x1374 (not x1127))
+(or (not x526) x1586)
+(or (not x1056) x957)
+(or (not x320) x1137)
+(or (not x1025) x630)
+(or x742 x1229)
+(or x271 x1137)
+(or x113 x23)
+(or (not x594) x491)
+(or (not x1570) x763 x357)
+(or x1050 (not x623))
+(or x96 (not x572))
+(or (not x556) x1586)
+(or x247 (not x661))
+(or x74 x791)
+(or (not x1294) x1075)
+(or x671 (not x227))
+(or (not x999) x658)
+(or x478 x544)
+(or (not x531) x1040)
+(or x535 x1130)
+(or x277 x1268 x316 (not x1555) x8 (not x432) (not x904) (not x1104) (not x1341))
+(or (not x1108) x1102)
+(or x458 x608)
+(or x364 x1103)
+(or (not x1478) (not x1596))
+(or x119 (not x156))
+(or x1473 x162)
+(or (not x1106) (not x875) x1483)
+(or (not x1549) x1032)
+(or x702 x562)
+(or (not x190) (not x1447))
+(or (not x217) (not x1568))
+(or x1411 (not x1575))
+(or x1095 x969 (not x729) (not x243))
+(or (not x1367) (not x1223))
+(or (not x526) (not x556))
+(or (not x1553) x955)
+(or x664 x849)
+(or x1516 x1113)
+(or x589 x1035)
+(or (not x811) x1566)
+(or (not x542) x1502)
+(or x1545 x726)
+(or (not x485) x1111)
+(or (not x490) (not x734))
+(or x756 (not x699))
+(or x309 x721)
+(or (not x492) (not x932))
+(or (not x1105) (not x328))
+(or x674 x955)
+(or x93 (not x1591))
+(or (not x481) x1437)
+(or (not x38) (not x1098))
+(or x1417 x3)
+(or x1153 (not x260))
+(or (not x667) (not x1005))
+(or (not x278) x1251)
+(or x990 (not x1282))
+(or (not x1016) x626)
+(or x1567 (not x128))
+(or x393 x879)
+(or (not x901) x1528 (not x842) (not x1556))
+(or x1379 (not x624))
+(or (not x1169) x615 (not x1266) x1350)
+(or (not x952) x1279 x927 (not x1576))
+(or (not x1274) x273)
+(or (not x1392) x162)
+(or (not x888) (not x1090))
+(or (not x613) x131)
+(or (not x1538) x1557 (not x1143))
+(or x73 (not x62))
+(or (not x621) x1331)
+(or (not x47) (not x837) (not x99) x1000 (not x1092) x806)
+(or x1076 x1203)
+(or x1506 x164)
+(or (not x565) (not x1484))
+(or (not x1219) x831 x1582)
+(or x936 x1027)
+(or x1169 (not x440))
+(or x215 x435 (not x767))
+(or (not x1354) (not x510))
+(or x842 x1556)
+(or x675 (not x1528))
+(or x1126 (not x76))
+(or (not x290) (not x989))
+(or x1043 (not x1278))
+(or (not x1434) x1436)
+(or x705 (not x159))
+(or x609 x1549 (not x702) (not x1594) x1415 (not x1109) (not x172))
+(or (not x548) x127)
+(or x169 (not x1210))
+(or (not x189) x326)
+(or (not x942) x578)
+(or (not x1315) x1118)
+(or x593 (not x1005))
+(or x818 (not x452))
+(or x757 (not x356))
+(or x677 x809)
+(or x1028 (not x743))
+(or x261 x1099)
+(or x1331 (not x362))
+(or (not x994) (not x928))
+(or (not x462) x636)
+(or (not x912) x84)
+(or (not x997) (not x1230))
+(or (not x623) x1221)
+(or (not x898) (not x164) (not x917) x783 x1557)
+(or (not x1084) x79)
+(or (not x357) x610)
+(or x1295 (not x440))
+(or x1508 x321)
+(or (not x1368) x326)
+(or (not x71) x1572)
+(or x269 x113)
+(or (not x1054) x1003)
+(or (not x783) x402)
+(or (not x653) (not x294))
+(or (not x1560) (not x840))
+(or (not x1490) (not x1152))
+(or (not x68) x981)
+(or (not x323) x279)
+(or x129 x647)
+(or x394 (not x1587))
+(or (not x572) x1113)
+(or x530 x73)
+(or x1443 x1484 (not x1329) (not x332) x1276 x627)
+(or x305 (not x863))
+(or (not x506) x176)
+(or x793 x985)
+(or x948 (not x53))
+(or x1562 (not x303))
+(or x517 x321)
+(or x289 x99)
+(or x210 (not x1448))
+(or x95 x1088)
+(or (not x106) x879)
+(or (not x1493) (not x1343))
+(or (not x1584) (not x1399) (not x236) (not x723) x404)
+(or (not x190) (not x1274))
+(or (not x520) x407)
+(or (not x110) x840 (not x1080) (not x460) x259 x1560 (not x630))
+(or x1014 (not x1568))
+(or x425 (not x750))
+(or (not x493) x560)
+(or (not x1312) x581)
+(or x988 x96)
+(or x1511 (not x447))
+(or x1583 (not x1590))
+(or (not x1288) (not x121))
+(or x51 x436)
+(or (not x516) x102)
+(or x1585 x70)
+(or x1204 x46)
+(or (not x1056) (not x858))
+(or x237 (not x1255))
+(or (not x525) x509)
+(or x50 x1508)
+(or x534 (not x1449))
+(or x782 x1061)
+(or (not x390) (not x303))
+(or (not x868) (not x933))
+(or x906 (not x1551))
+(or x924 x1058)
+(or (not x28) (not x1569))
+(or (not x1493) (not x826))
+(or (not x1060) x593)
+(or (not x928) (not x319))
+(or x1345 (not x915))
+(or (not x1037) x922)
+(or (not x1171) (not x1587))
+(or x48 x671)
+(or (not x1451) (not x490))
+(or x636 (not x935))
+(or x1374 x736)
+(or (not x903) (not x1166))
+(or x1148 x1011)
+(or x153 x237)
+(or (not x977) (not x1095))
+(or (not x67) x868 x933 x897 x333)
+(or (not x1543) x828)
+(or (not x252) x12)
+(or x352 x219 x277 x1201 x698)
+(or x1566 (not x996))
+(or (not x812) (not x1208) (not x641) x154 x930 x107 x452)
+(or (not x532) x377)
+(or x882 (not x1212))
+(or x1428 x1048)
+(or x1043 x394)
+(or x1556 (not x1487))
+(or (not x1553) (not x54))
+(or (not x1412) x902)
+(or x922 (not x1089))
+(or (not x1036) (not x937))
+(or (not x692) (not x1124))
+(or (not x355) (not x613))
+(or x44 x388)
+(or (not x150) (not x1101))
+(or (not x853) (not x1093))
+(or (not x287) (not x668))
+(or (not x976) x196)
+(or (not x853) (not x1503))
+(or x1169 x1266)
+(or x180 x403)
+(or x110 (not x278))
+(or x195 x208)
+(or (not x1422) x90)
+(or (not x1183) x1131)
+(or (not x159) x719)
+(or (not x122) (not x874))
+(or x50 x351)
+(or x46 (not x69))
+(or x1329 (not x627))
+(or x597 x948)
+(or x39 x1071)
+(or x466 (not x1150) (not x641) (not x693) (not x1082) (not x1418))
+(or (not x980) x1580)
+(or (not x601) x628)
+(or x929 (not x1183))
+(or x1033 (not x286) x622 (not x1011) (not x938))
+(or x347 x898)
+(or x95 x393)
+(or x1120 (not x275))
+(or (not x485) (not x179))
+(or x271 (not x10))
+(or (not x928) (not x21))
+(or x331 x974)
+(or (not x1412) x875)
+(or x443 x1391)
+(or (not x1323) x983 x1465 (not x1102) x1017)
+(or x116 x922)
+(or (not x583) (not x699))
+(or x360 x616)
+(or x1579 x785)
+(or x467 (not x1255))
+(or x828 (not x189))
+(or (not x1225) (not x9))
+(or (not x903) x589)
+(or x216 (not x935))
+(or x1078 (not x356))
+(or x238 x1461)
+(or (not x595) (not x722))
+(or (not x1472) (not x1424))
+(or x67 x1583)
+(or x377 (not x907))
+(or x571 (not x285))
+(or (not x1276) (not x515))
+(or (not x1404) (not x1497))
+(or x465 (not x147))
+(or (not x56) (not x994))
+(or x169 (not x1281))
+(or (not x761) x530)
+(or (not x683) x477)
+(or (not x111) (not x49))
+(or x662 x1319)
+(or (not x977) x1329)
+(or x1510 x120)
+(or x1584 (not x1326))
+(or (not x703) x1066)
+(or x1262 (not x1412))
+(or x766 x1030)
+(or x1280 (not x1595))
+(or (not x476) (not x942))
+(or (not x455) (not x943))
+(or (not x382) x1153)
+(or (not x323) x93)
+(or x886 x1526)
+(or x130 (not x820))
+(or (not x734) (not x1568))
+(or (not x729) x1167 x989 x186 (not x535) x167)
+(or (not x295) (not x255))
+(or x679 (not x4))
+(or x292 x1148)
+(or (not x1225) (not x1453))
+(or (not x284) (not x316))
+(or x1014 x1075)
+(or x1444 x1228)
+(or (not x1002) x1271)
+(or x1286 (not x502))
+(or x670 x1082)
+(or (not x965) x1473)
+(or x697 x929)
+(or x709 (not x456))
+(or (not x1134) (not x514))
+(or (not x1141) (not x452))
+(or (not x627) (not x1536))
+(or x632 x575)
+(or x34 (not x1515))
+(or x176 x135)
+(or (not x943) (not x452))
+(or (not x680) x397)
+(or x336 (not x995))
+(or x767 (not x215))
+(or (not x986) x381)
+(or (not x277) (not x1201))
+(or x941 x1316)
+(or x1004 x539)
+(or x1010 x166)
+(or x1581 (not x1564))
+(or (not x1073) x36)
+(or x504 (not x1364))
+(or x1511 x922)
+(or (not x7) x70)
+(or (not x469) x228)
+(or x151 (not x1589) x391 (not x978))
+(or (not x226) x633 (not x1226) x743)
+(or (not x5) x338)
+(or x1411 x1500)
+(or x530 x339)
+(or x844 x676)
+(or (not x1453) x236)
+(or (not x854) x1130)
+(or x425 (not x765))
+(or x1555 x1293)
+(or x499 (not x822))
+(or (not x573) x197)
+(or (not x76) (not x1311))
+(or (not x1362) (not x346) (not x1565))
+(or x936 x777)
+(or (not x20) (not x1463))
+(or x1347 x83)
+(or x871 x1350 x696 (not x250) (not x1150))
+(or (not x53) (not x1124))
+(or x972 (not x63))
+(or x1117 x442)
+(or x460 (not x871))
+(or (not x75) x1336)
+(or (not x1191) x830)
+(or x1455 (not x1282))
+(or (not x895) (not x316))
+(or x892 (not x1209))
+(or (not x1239) (not x889))
+(or x905 x1123)
+(or x833 x1071)
+(or x55 (not x1282))
+(or (not x687) (not x462))
+(or x676 x269)
+(or x1229 x172)
+(or (not x1378) x966)
+(or (not x1358) x1277)
+(or (not x1200) (not x1089))
+(or x130 (not x1384))
+(or (not x440) x379)
+(or x799 (not x11))
+(or x92 x1566)
+(or (not x649) x560)
+(or (not x1512) (not x516))
+(or (not x695) (not x1388))
+(or x581 (not x871))
+(or x1341 x616)
+(or (not x1588) x512)
+(or x1425 x586)
+(or (not x667) (not x730))
+(or (not x1462) x421)
+(or x1535 (not x163))
+(or (not x541) (not x447))
+(or x344 x36)
+(or x1396 (not x22))
+(or (not x1350) x1169)
+(or (not x1513) x713)
+(or (not x979) (not x1257))
+(or x1362 x1565)
+(or x454 x889 (not x1142))
+(or (not x1378) (not x260))
+(or x134 (not x714))
+(or (not x1499) x301)
+(or (not x1072) x174)
+(or (not x1098) (not x1231))
+(or x1236 (not x63))
+(or x901 x1206)
+(or x25 (not x298))
+(or (not x772) x762)
+(or x500 (not x572))
+(or (not x1127) x1366)
+(or x326 (not x796))
+(or (not x1505) (not x1231))
+(or x1480 (not x1404))
+(or x728 (not x543))
+(or (not x884) (not x415) x897)
+(or x74 x1352)
+(or (not x1350) (not x615))
+(or (not x43) x970)
+(or x803 (not x1292))
+(or (not x802) x579)
+(or (not x198) x375)
+(or (not x680) (not x1276))
+(or (not x1265) x954 x1375 (not x1162) x156 (not x1391))
+(or (not x1226) x959 x1413 (not x1389) (not x1126))
+(or x818 (not x455))
+(or (not x372) x883)
+(or x1409 x562)
+(or (not x1453) x1172)
+(or x880 (not x615))
+(or (not x1151) (not x965))
+(or (not x1034) x1425)
+(or (not x942) x489)
+(or x269 x1530)
+(or x1390 x299)
+(or x846 x1414 (not x1471) (not x1044) x1001)
+(or (not x468) x728)
+(or x1136 x1401)
+(or x894 (not x265))
+(or (not x1404) (not x156))
+(or x1594 x172)
+(or (not x29) (not x1337))
+(or x1120 (not x217))
+(or x388 (not x1008))
+(or (not x749) x833)
+(or (not x297) (not x428))
+(or x73 (not x1260))
+(or x702 x1409)
+(or (not x852) x938)
+(or (not x302) (not x21))
+(or x1579 (not x106))
+(or x1468 (not x1324))
+(or x380 x683 (not x1521) (not x477))
+(or (not x1377) (not x1052))
+(or x932 x595)
+(or x620 (not x765))
+(or (not x1002) (not x741))
+(or (not x1348) (not x64))
+(or (not x1332) (not x59) (not x83) (not x1347) x128)
+(or x793 x402)
+(or (not x730) (not x1045))
+(or x1482 x1135)
+(or (not x532) x1012)
+(or (not x889) x1142)
+(or x607 (not x98))
+(or x651 x576)
+(or x149 x321)
+(or (not x822) (not x623))
+(or x697 x1156)
+(or x578 (not x147))
+(or x118 (not x621))
+(or x1369 (not x841))
+(or (not x543) x39)
+(or (not x1127) (not x694))
+(or x1370 x1085)
+(or (not x943) x460)
+(or x62 x864 (not x206) x761 x1407 (not x530) (not x339) (not x73))
+(or x1382 (not x476))
+(or (not x573) x1066)
+(or x258 (not x201))
+(or x292 x172)
+(or x991 x293)
+(or (not x1344) (not x104))
+(or x341 (not x697) x1057)
+(or (not x556) (not x946))
+(or x884 (not x532))
+(or x176 x70)
+(or x1580 (not x252))
+(or x336 (not x125))
+(or (not x238) (not x1461) (not x1163))
+(or x664 x691)
+(or (not x125) (not x1001))
+(or (not x1054) (not x207))
+(or (not x204) x1012)
+(or (not x1016) x1099)
+(or (not x1215) x1401)
+(or (not x746) (not x421) (not x12) (not x384) x1477)
+(or x131 (not x1312))
+(or x211 x326)
+(or x376 (not x450))
+(or x1032 (not x724))
+(or (not x343) x74)
+(or x658 x1094)
+(or x1100 x310)
+(or (not x950) x1525)
+(or (not x1503) x66)
+(or x334 x1370)
+(or (not x772) (not x1258))
+(or x132 (not x1449))
+(or x307 (not x1358))
+(or (not x1487) x1028)
+(or (not x1160) (not x860))
+(or x46 x784)
+(or x1128 x1585)
+(or (not x1453) x242)
+(or x414 (not x1493))
+(or (not x597) (not x269) x1105 (not x1530) (not x948) (not x1318))
+(or x1013 x1006)
+(or (not x163) (not x863))
+(or x436 x1411)
+(or x1395 (not x372))
+(or x1544 (not x252))
+(or x1374 (not x694))
+(or x1391 x1265)
+(or (not x380) x1403)
+(or x1385 (not x349))
+(or (not x277) (not x1217))
+(or (not x889) x725)
+(or (not x696) x250)
+(or x524 (not x779))
+(or (not x288) (not x994))
+(or (not x203) (not x320))
+(or x1092 (not x9))
+(or x1086 (not x845))
+(or (not x513) (not x574))
+(or x888 (not x175) x1090 x547)
+(or (not x1309) (not x244))
+(or (not x103) x1265)
+(or x1069 (not x1292))
+(or (not x11) (not x482))
+(or (not x1375) (not x1456))
+(or x1081 x925)
+(or (not x105) (not x993) x764 (not x1444) (not x1228))
+(or (not x1177) (not x1268))
+(or x610 (not x542))
+(or x1572 x1438)
+(or x883 x1446)
+(or (not x520) (not x231))
+(or (not x456) (not x617))
+(or (not x730) (not x672))
+(or x1148 (not x722))
+(or x504 (not x115))
+(or (not x945) (not x1559))
+(or (not x787) (not x1263))
+(or (not x251) x842)
+(or (not x1128) (not x1585) x783 (not x176) x1224 (not x70))
+(or x42 (not x674))
+(or (not x1105) x597)
+(or (not x1268) x904)
+(or (not x455) x781)
+(or x1206 (not x720))
+(or (not x198) (not x1358))
+(or (not x987) (not x545))
+(or (not x1452) x468 x476 (not x39) x439 (not x491) x594)
+(or x883 (not x1110))
+(or x630 (not x854))
+(or (not x790) (not x1155))
+(or x346 x479)
+(or (not x437) x1277)
+(or (not x1282) x1337)
+(or x828 (not x561))
+(or x47 (not x1000))
+(or x1445 x1507)
+(or (not x398) x1585)
+(or x346 (not x648))
+(or x1247 x1139)
+(or x210 (not x28))
+(or (not x1378) (not x295))
+(or (not x657) x827)
+(or (not x14) (not x1299))
+(or (not x1505) x1214)
+(or x630 (not x1173))
+(or x266 x1213)
+(or (not x680) (not x353))
+(or (not x1575) (not x653))
+(or (not x1504) x974)
+(or x1487 (not x1476) (not x1264) x374)
+(or (not x1526) (not x886) x154 (not x1403))
+(or (not x1211) (not x996))
+(or x303 x390 x1260)
+(or x1338 (not x652))
+(or (not x462) (not x263))
+(or x56 x573 (not x197) (not x292) (not x336) x1299)
+(or x1006 (not x600))
+(or (not x969) (not x505))
+(or x914 x1445)
+(or (not x368) x1353 x32 (not x939))
+(or (not x220) (not x852))
+(or (not x1289) (not x777) x1098 (not x1393) x1231 x514)
+(or (not x787) x460)
+(or (not x315) x1393)
+(or (not x68) x445)
+(or x24 (not x1326))
+(or x1131 (not x1155))
+(or (not x158) x179 (not x1238))
+(or (not x967) x275 (not x1452) (not x205) x437)
+(or x847 (not x591) (not x15) x1493 (not x414) (not x1333))
+(or x803 x238)
+(or (not x224) x116)
+(or (not x107) x991)
+(or (not x1261) x603)
+(or x1044 x83)
+(or (not x1419) (not x312))
+(or (not x1164) (not x1041))
+(or x1068 (not x145))
+(or x196 (not x1532))
+(or (not x109) x1475)
+(or (not x1435) x719)
+(or (not x188) (not x1237))
+(or (not x687) (not x43))
+(or (not x1108) x1061)
+(or (not x88) x762)
+(or x1583 (not x1375))
+(or x429 x225 x1348 (not x500))
+(or (not x564) (not x996))
+(or x1550 x900)
+(or x1363 (not x1296))
+(or (not x437) (not x1157))
+(or x1112 (not x1085) (not x1208) (not x1340) (not x310) (not x705) x1312)
+(or (not x466) x1401)
+(or (not x128) (not x1513))
+(or x1023 (not x1354))
+(or x66 (not x1330))
+(or (not x332) (not x711) (not x1370) x613 (not x131) x1490 (not x642))
+(or x785 (not x633))
+(or (not x1260) x1038)
+(or x1079 (not x285))
+(or (not x1146) x682)
+(or (not x764) x1228)
+(or (not x819) (not x935))
+(or x1172 (not x1358))
+(or x1128 x176)
+(or (not x961) x1229)
+(or x1131 x988)
+(or x585 (not x615))
+(or (not x357) x1128)
+(or x1329 (not x1443))
+(or (not x1439) (not x737) (not x1121))
+(or (not x349) (not x973))
+(or x710 (not x1177))
+(or x1341 (not x1268))
+(or (not x1497) x567)
+(or (not x1041) (not x663))
+(or x1427 x1148)
+(or (not x1410) (not x949))
+(or (not x1106) x497 x870 (not x498) (not x247) x661)
+(or x813 (not x1083))
+(or x580 x1519)
+(or x191 x544)
+(or x509 (not x556))
+(or x1251 x1088)
+(or x65 x942 x820)
+(or (not x995) (not x956))
+(or x218 x1155 (not x807) (not x1502) x569)
+(or x589 x148)
+(or x1065 x1286)
+(or x970 (not x1016))
+(or (not x1260) (not x968))
+(or x911 x344)
+(or (not x564) x1566)
+(or x1323 (not x1141))
+(or x833 (not x1037))
+(or (not x447) x1079)
+(or x654 (not x659) x1209 (not x892))
+(or x293 x705)
+(or x1229 (not x881))
+(or (not x434) (not x525))
+(or (not x1194) (not x1302))
+(or (not x111) (not x302))
+(or x146 x892)
+(or (not x763) x1074)
+(or (not x786) (not x643) (not x326) (not x512) x189 (not x678) x1367 x1588)
+(or x1400 x679)
+(or x230 x1585)
+(or x801 (not x863))
+(or (not x1134) (not x1326))
+(or x231 x520 (not x407) (not x1417))
+(or (not x577) x1506)
+(or x140 (not x549))
+(or (not x252) x40)
+(or x433 x834 x63 (not x1236) x669)
+(or x1379 (not x975))
+(or (not x996) (not x1577))
+(or (not x663) (not x648))
+(or (not x98) (not x1192))
+(or x1519 (not x1464))
+(or x15 x673)
+(or (not x1542) (not x1185))
+(or x1221 x1050)
+(or x1452 (not x1460))
+(or x535 (not x167))
+(or (not x1512) (not x1463))
+(or (not x619) (not x1125))
+(or (not x1493) (not x847))
+(or (not x1524) (not x1478))
+(or x84 (not x1171))
+(or x963 (not x1151))
+(or (not x28) x1238)
+(or (not x673) (not x1561))
+(or (not x1447) x1439)
+(or x467 x211)
+(or (not x951) (not x451))
+(or x1495 x537)
+(or x1393 (not x1258))
+(or x1366 x584)
+(or (not x312) (not x1084))
+(or (not x1501) (not x601))
+(or (not x434) (not x150))
+(or x1079 (not x841))
+(or x1530 x597)
+(or (not x1257) x1441)
+(or x707 x1518)
+(or (not x772) x1088)
+(or (not x741) x1581)
+(or (not x1281) (not x1288))
+(or (not x1164) (not x732))
+(or (not x353) x397)
+(or x876 x873)
+(or (not x1444) x1218 (not x746) x1360)
+(or (not x715) (not x121))
+(or x570 (not x1353))
+(or (not x1185) (not x814))
+(or (not x779) x1337)
+(or x792 (not x1220))
+(or (not x870) x498)
+(or x1323 x580)
+(or (not x1375) x1574)
+(or x1476 x625)
+(or x1321 (not x1177))
+(or (not x183) x40)
+(or (not x595) (not x1239))
+(or x1150 (not x871))
+(or x299 x1135)
+(or (not x1059) x123)
+(or x812 x1208)
+(or x237 x413)
+(or (not x1270) x880)
+(or (not x1434) (not x139))
+(or (not x1448) (not x1361))
+(or x40 (not x564))
+(or (not x1582) (not x1501))
+(or (not x366) (not x454))
+(or (not x718) (not x369))
+(or (not x1016) (not x912))
+(or (not x1000) (not x806))
+(or (not x27) (not x1472))
+(or x1171 x1442 x16)
+(or x851 (not x780))
+(or x1502 (not x218))
+(or (not x295) (not x724))
+(or (not x291) x176)
+(or (not x207) (not x461))
+(or (not x285) x148)
+(or (not x35) x468 (not x728) x569 x1588 x78)
+(or x919 x559)
+(or (not x1394) (not x482))
+(or (not x457) x1248)
+(or x219 (not x402) (not x607) (not x344) (not x793) x42 x553 (not x1088) (not x36))
+(or x10 x852 (not x444) (not x682) x220)
+(or (not x987) (not x680))
+(or (not x617) x776)
+(or x1520 x557)
+(or x1003 (not x192))
+(or x407 (not x1144))
+(or x1489 (not x688))
+(or (not x652) (not x1536))
+(or (not x698) x616)
+(or (not x474) (not x1174))
+(or (not x133) x1162)
+(or (not x1195) (not x1237))
+(or x705 x719)
+(or x1518 (not x1154))
+(or (not x1497) (not x345))
+(or (not x1160) (not x5))
+(or (not x823) (not x263))
+(or x250 (not x294))
+(or (not x1487) x1145)
+(or (not x595) (not x932))
+(or x913 (not x143))
+(or x533 x843)
+(or (not x1210) x381)
+(or x500 (not x138))
+(or (not x887) x1086)
+(or (not x1282) (not x1456))
+(or x697 x592)
+(or x1332 x905)
+(or x1580 x508)
+(or (not x183) x90)
+(or (not x471) x65 (not x1091))
+(or x335 x553 (not x503) x549 (not x140) x1268 x1177)
+(or (not x596) x921)
+(or (not x1050) (not x421) x931 x918 x1462)
+(or x896 (not x1529))
+(or x127 x1213)
+(or (not x873) (not x876))
+(or (not x1459) x1287)
+(or x593 x560)
+(or (not x1426) (not x277))
+(or x1480 (not x619))
+(or x610 (not x1373))
+(or (not x824) x1265)
+(or (not x908) (not x1503))
+(or x678 x512)
+(or x620 (not x1315))
+(or (not x1146) (not x353))
+(or (not x1220) (not x372))
+(or (not x1575) x501)
+(or x563 x882)
+(or (not x1463) (not x1415))
+(or x917 x898)
+(or x48 x1277)
+(or x1022 (not x318) x502 x488)
+(or x1029 x1565)
+(or (not x1551) x1570)
+(or x1581 x1562)
+(or (not x189) (not x1493))
+(or x707 x185)
+(or (not x1021) (not x1095))
+(or x568 x514 x989 x1134 (not x733) (not x1436) (not x1510) (not x47) x290)
+(or (not x560) x649 x1127 (not x1366))
+(or x1266 (not x764))
+(or (not x595) (not x406))
+(or (not x32) x1533)
+(or (not x219) (not x277))
+(or (not x908) (not x480))
+(or (not x1017) (not x1465))
+(or x494 x460)
+(or (not x1292) (not x78))
+(or (not x154) (not x452))
+(or x838 (not x11))
+(or x318 (not x1022))
+(or x576 x829)
+(or (not x497) (not x661))
+(or (not x634) x686)
+(or x1559 x959 x945 (not x169) (not x30) x1453)
+(or x1042 (not x1176))
+(or x359 (not x480))
+(or x1026 (not x545))
+(or (not x514) x47)
+(or (not x399) x6)
+(or x880 x276)
+(or (not x692) (not x1258))
+(or x1086 x662)
+(or (not x897) (not x933))
+(or (not x1360) x746)
+(or x1075 (not x959))
+(or (not x302) (not x994))
+(or x1150 (not x1472))
+(or x640 x593)
+(or x1352 x424)
+(or x39 (not x439))
+(or (not x1380) (not x1517))
+(or x1474 (not x1210))
+(or x195 x1010)
+(or x37 x1389)
+(or (not x915) x334)
+(or (not x423) (not x1364))
+(or x1322 (not x1394))
+(or (not x132) x45 (not x534) (not x851) x1449)
+(or (not x6) x551 x1426 (not x844))
+(or x135 (not x506))
+(or x421 (not x931))
+(or x1368 (not x467) (not x211) x1021 (not x326) x1095)
+(or (not x1227) x1298)
+(or x47 x733)
+(or (not x69) x1246)
+(or (not x652) (not x356))
+(or x1325 (not x1155))
+(or x235 x1590)
+(or (not x732) (not x540))
+(or x1385 x365)
+(or (not x264) x1009)
+(or x1466 (not x805))
+(or x713 x496)
+(or x479 x944)
+(or x985 (not x483))
+(or x175 (not x888))
+(or (not x754) x110)
+(or x616 x539)
+(or (not x348) x97)
+(or (not x615) x1169)
+(or (not x718) (not x20))
+(or x677 (not x765))
+(or (not x142) (not x915))
+(or (not x391) (not x14))
+(or (not x337) (not x1095))
+(or (not x1125) x132)
+(or x991 x535)
+(or (not x1353) x1570)
+(or (not x882) x115 (not x1284) x291 (not x279))
+(or x758 x415)
+(or (not x1587) x563)
+(or x957 (not x1222))
+(or x1382 x478)
+(or x332 (not x613))
+(or x849 x191)
+(or (not x1422) (not x910))
+(or x1583 (not x1501))
+(or (not x1494) x95)
+(or x1333 x921)
+(or (not x979) (not x549))
+(or x310 x1208)
+(or (not x604) (not x646))
+(or (not x1031) x550 x121 x1413 x715)
+(or (not x19) (not x574))
+(or (not x1348) (not x881))
+(or (not x1152) x1346)
+(or x818 x276)
+(or x191 x798)
+(or (not x761) x206)
+(or (not x1369) (not x1077) (not x484))
+(or x344 (not x1554))
+(or (not x542) (not x255))
+(or x99 (not x224))
+(or (not x1288) (not x429))
+(or x1550 x136)
+(or x988 x1234)
+(or (not x1002) (not x288))
+(or (not x1413) (not x550))
+(or (not x511) (not x747))
+(or (not x1206) x720 x1414)
+(or x691 (not x1419))
+(or (not x1330) (not x814))
+(or x1371 (not x341))
+(or (not x1144) x1450)
+(or (not x555) x1376)
+(or (not x660) (not x220))
+(or (not x574) (not x474))
+(or x1398 (not x472))
+(or (not x822) (not x1116))
+(or (not x77) x593)
+(or x1272 (not x526))
+(or (not x871) x246)
+(or x1581 (not x863))
+(or x153 x90)
+(or (not x806) (not x111))
+(or (not x926) (not x1488))
+(or (not x251) (not x876))
+(or (not x745) x443)
+(or (not x409) (not x75))
+(or x1156 x202)
+(or (not x181) x885)
+(or x1249 (not x1036))
+(or x605 x1457)
+(or (not x487) (not x38))
+(or (not x204) x586)
+(or (not x404) x879)
+(or (not x706) (not x577))
+(or (not x1223) (not x1388))
+(or x152 x289)
+(or x389 x1331)
+(or x116 x130)
+(or (not x315) (not x312))
+(or x981 x685)
+(or x1450 (not x207))
+(or (not x71) (not x752))
+(or (not x1285) (not x624))
+(or x318 (not x488))
+(or (not x1200) x521)
+(or (not x1178) x282)
+(or x739 x1470)
+(or x1408 x1552)
+(or x92 x1445)
+(or (not x371) (not x438))
+(or x795 (not x506))
+(or x581 (not x1386))
+(or x728 (not x38))
+(or (not x1268) x503)
+(or x679 (not x826))
+(or x299 (not x1463))
+(or (not x972) x1459)
+(or x733 (not x1486))
+(or (not x688) (not x21))
+(or (not x977) x643)
+(or (not x1315) x342)
+(or x1038 x838)
+(or (not x1556) x1487 (not x83))
+(or (not x8) (not x1268))
+(or (not x1496) (not x186))
+(or (not x989) x729)
+(or (not x447) (not x841))
+(or (not x555) (not x1448))
+(or x1511 x733)
+(or (not x725) x665 x1185 x366 (not x890) (not x389))
+(or x1396 x1242)
+(or x1583 (not x1456))
+(or x227 x178)
+(or x710 x1119)
+(or x346 (not x692))
+(or x136 (not x654))
+(or (not x125) x1441)
+(or (not x139) x837)
+(or x833 (not x1380))
+(or x1319 (not x355))
+(or x905 x1269)
+(or (not x1212) x563)
+(or (not x474) x221)
+(or (not x930) x1208)
+(or (not x669) (not x63))
+(or x993 (not x994))
+(or x449 (not x1510) x1220 x9 (not x120))
+(or (not x661) (not x870))
+(or (not x1358) x1308)
+(or x1014 x309)
+(or x17 x924)
+(or x1589 x571)
+(or x1199 (not x21))
+(or (not x155) (not x1360))
+(or (not x343) (not x775))
+(or (not x474) x990)
+(or x230 x1308)
+(or x206 x73)
+(or (not x406) (not x1258))
+(or (not x220) (not x10))
+(or x853 x330 x814 x1531 x1330 x1503 (not x66))
+(or (not x822) (not x1225))
+(or (not x979) x37)
+(or (not x550) x1031)
+(or x421 x746)
+(or (not x75) x1420)
+(or x429 x1499)
+(or (not x806) (not x1083))
+(or (not x574) (not x1456))
+(or (not x91) x1304)
+(or x1357 x740)
+(or x771 x1489)
+(or x512 x643)
+(or (not x1055) x1586)
+(or x1186 (not x1479))
+(or (not x779) x771)
+(or x249 (not x1159))
+(or x799 (not x482))
+(or x1184 x1234)
+(or x1445 (not x789))
+(or x324 x1450)
+(or x1589 x592)
+(or x1405 x1050)
+(or (not x1002) (not x451))
+(or (not x482) x161)
+(or (not x1274) x1027)
+(or x575 x149)
+(or (not x101) x1145)
+(or (not x420) x786)
+(or (not x1159) x460)
+(or x99 x1092)
+(or (not x89) x558)
+(or (not x333) (not x897))
+(or x982 (not x1235))
+(or x1254 (not x536))
+(or x1035 (not x523))
+(or x1130 x837)
+(or (not x78) (not x468))
+(or x192 x75 x1054 (not x1570) x1551 (not x1003))
+(or (not x1578) x1329)
+(or x911 x1397)
+(or x273 (not x190))
+(or (not x42) x402)
+(or x509 x79)
+(or x988 (not x1577))
+(or x1572 x1213)
+(or x607 x402)
+(or x364 (not x1460))
+(or (not x1359) (not x1388))
+(or x1092 (not x806))
+(or x603 (not x1460))
+(or x589 x1342)
+(or (not x1543) (not x141))
+(or x728 (not x78))
+(or x282 x586)
+(or x465 x760)
+(or x678 x643)
+(or x1058 (not x1055))
+(or (not x1528) (not x1534))
+(or x963 (not x1451))
+(or (not x1159) x1085)
+(or (not x252) (not x815))
+(or (not x695) x1334)
+(or (not x485) x608)
+(or x512 (not x464))
+(or x884 (not x897))
+(or (not x356) x1175)
+(or x262 (not x975))
+(or (not x847) x1329)
+(or (not x822) (not x252))
+(or x1496 x1328 (not x342) (not x1349) (not x639))
+(or x1387 (not x601))
+(or (not x1081) (not x1219))
+(or (not x507) (not x77))
+(or x245 (not x10))
+(or (not x562) (not x300))
+(or (not x763) x867)
+(or (not x89) (not x254))
+(or (not x306) x1020)
+(or x1135 x682)
+(or (not x1551) (not x1025))
+(or x326 x786)
+(or x1544 x245)
+(or x1439 x273)
+(or x1015 x473)
+(or x1061 x1408)
+(or (not x85) x849)
+(or (not x1288) x18)
+(or x1340 x1208)
+(or x1111 (not x1122))
+(or (not x943) x1137)
+(or (not x45) (not x854))
+(or (not x406) (not x358))
+(or (not x1067) x1109)
+(or x685 (not x1462))
+(or (not x1173) x1466)
+(or (not x506) (not x481))
+(or (not x989) x753)
+(or x934 (not x284))
+(or (not x1160) (not x505))
+(or x924 x1273)
+(or x174 x90)
+(or x1433 (not x572))
+(or (not x194) (not x214))
+(or (not x1513) x1476)
+(or (not x1288) x30)
+(or x120 x1566)
+(or (not x749) (not x1380))
+(or x436 (not x699))
+(or x40 x1400)
+(or (not x601) x1006)
+(or (not x1547) (not x454))
+(or x681 x816)
+(or x755 (not x493))
+(or (not x1569) (not x1254))
+(or x1425 x929)
+(or x571 x282)
+(or (not x270) (not x263))
+(or (not x124) (not x444) (not x489))
+(or (not x1410) x113)
+(or x528 (not x872))
+(or x282 x1562)
+(or (not x1426) x777)
+(or (not x383) x1249)
+(or x236 x1271)
+(or x1147 x1165)
+(or x1514 (not x157))
+(or x414 (not x1541))
+(or (not x1083) x1249)
+(or (not x1308) x1410 (not x1197))
+(or x1242 x1586)
+(or (not x128) (not x1096))
+(or x480 x526 (not x359) x908 (not x137))
+(or (not x1531) (not x298))
+(or (not x483) x1357)
+(or x1509 x982)
+(or (not x1235) (not x612))
+(or x801 (not x490))
+(or x509 (not x1296))
+(or (not x1517) (not x493))
+(or (not x1539) x232)
+(or (not x1380) (not x493))
+(or (not x1037) x521)
+(or x1468 x1516)
+(or (not x633) x226)
+(or (not x854) (not x806))
+(or x673 (not x1415))
+(or (not x1434) (not x449))
+(or (not x18) (not x184) (not x426) x1288 x551 x352 (not x1571))
+(or (not x772) (not x76))
+(or (not x1596) x768)
+(or x262 x1053)
+(or x614 x1523)
+(or x131 x893)
+(or x1523 x1480)
+(or x1407 (not x760) x600)
+(or x477 (not x380))
+(or x642 (not x1490))
+(or (not x818) (not x705) (not x293))
+(or x1307 x228)
+(or (not x846) (not x566))
+(or x48 (not x1098))
+(or x197 (not x315))
+(or (not x1318) x480 (not x1383) x853 x1093)
+(or (not x1596) x392)
+(or (not x1108) (not x409))
+(or x919 x1336)
+(or x567 (not x133))
+(or (not x115) x795)
+(or (not x219) x344)
+(or x1470 (not x189))
+(or x710 x336)
+(or x711 (not x1151))
+(or x479 x625)
+(or (not x1235) (not x667))
+(or x1393 x1427)
+(or (not x1515) x558)
+(or x388 x709)
+(or x1391 (not x954))
+(or (not x583) x686)
+(or (not x1415) (not x987))
+(or x527 (not x1178))
+(or (not x302) (not x1449))
+(or (not x1297) x1131)
+(or (not x749) x731)
+(or x460 x1085)
+(or (not x568) x733)
+(or (not x496) x872 (not x528))
+(or (not x252) (not x826))
+(or x1427 (not x406))
+(or x875 (not x440))
+(or (not x1479) x922)
+(or (not x712) x972)
+(or (not x133) x99)
+(or (not x1394) (not x481))
+(or (not x270) x1259)
+(or (not x975) x166)
+(or (not x1311) x479)
+(or (not x632) (not x72) x1124 x430 x817)
+(or x1351 x1473)
+(or x1329 (not x822))
+(or (not x1224) x1540)
+(or x208 x1009)
+(or x1370 (not x1300))
+(or x1396 x922)
+(or (not x1557) (not x783))
+(or (not x1222) (not x488))
+(or (not x708) x325)
+(or (not x797) (not x717))
+(or x823 (not x529) (not x281))
+(or x261 x947)
+(or x50 x1436)
+(or x1337 x890)
+(or (not x1173) x331)
+(or x829 (not x754))
+(or (not x1284) (not x368) (not x127) (not x258))
+(or (not x1149) (not x1158))
+(or x686 x567)
+(or x1136 x906)
+(or (not x1407) x1091)
+(or (not x1157) (not x11))
+(or x213 x195)
+(or (not x609) x1061)
+(or x1254 x1569)
+(or (not x1435) x1352)
+(or x1495 x829)
+(or (not x1179) x1051)
+(or (not x684) x1075)
+(or x1460 (not x364) x668 (not x1103) (not x1313))
+(or (not x56) (not x1348))
+(or x673 x704)
+(or (not x83) x876 x251 (not x1044))
+(or x893 (not x356))
+(or x1295 (not x1388))
+(or (not x296) x344)
+(or (not x525) x470)
+(or x666 (not x448))
+(or x966 (not x430))
+(or (not x657) x1574)
+(or x249 (not x1190))
+(or x1184 x1379)
+(or x2 (not x91))
+(or (not x984) x570)
+(or (not x1352) (not x1273) (not x626) (not x424) (not x1363) (not x132))
+(or x1033 x1294 (not x1075) (not x1308))
+(or x742 x33)
+(or (not x1378) (not x802))
+(or (not x1381) (not x661))
+(or (not x82) (not x1373))
+(or (not x357) (not x77))
+(or x1581 (not x806))
+(or (not x1244) x106 x404 (not x879))
+(or (not x1531) x66)
+(or (not x133) (not x596))
+(or (not x650) x573 (not x1066))
+(or x508 x1389)
+(or (not x1388) x567)
+(or (not x383) x249)
+(or (not x1450) (not x486) (not x324) (not x766))
+(or (not x408) (not x322))
+(or (not x369) x1026)
+(or x607 (not x219))
+(or x1217 x254 (not x23))
+(or (not x192) x679)
+(or x120 (not x811))
+(or x1102 x212)
+(or (not x340) x84)
+(or (not x183) (not x1263))
+(or (not x52) (not x769))
+(or (not x1018) (not x1029) (not x521) x811 x808)
+(or x1469 (not x448))
+(or x713 x1476)
+(or x1538 x1143)
+(or (not x1261) (not x561))
+(or (not x1367) (not x418))
+(or x571 x785)
+(or x947 (not x1553))
+(or (not x1037) (not x1200))
+(or x803 (not x412))
+(or (not x428) x1523)
+(or (not x836) (not x4))
+(or (not x1255) (not x637))
+(or x1433 (not x1534))
+(or x24 x1584)
+(or x1467 (not x566))
+(or x981 (not x965))
+(or x310 x1525)
+(or (not x478) (not x205) x564 (not x1382) x797 x1007)
+(or x1529 (not x1421) x694 x493)
+(or x1376 (not x485))
+(or (not x1497) (not x1190))
+(or x1187 x782)
+(or x1175 (not x1152))
+(or x861 x293)
+(or (not x609) (not x1368))
+(or (not x1) x597)
+(or (not x156) x1540)
+(or (not x316) x904)
+(or (not x1375) x1391)
+(or x1027 x838)
+(or (not x312) (not x716))
+(or x681 x990)
+(or x528 (not x1181))
+(or x616 (not x979))
+(or x240 (not x949))
+(or x364 (not x826))
+(or (not x1464) (not x1149))
+(or x1401 (not x1017))
+(or x116 x120)
+(or x725 (not x1268))
+(or x894 (not x431))
+(or (not x657) (not x1431))
+(or (not x820) x478)
+(or (not x854) (not x449))
+(or (not x706) (not x177))
+(or (not x343) x726)
+(or x1336 (not x747))
+(or (not x968) x941)
+(or (not x1431) x713)
+(or (not x770) (not x287))
+(or (not x568) (not x754))
+(or x527 x848)
+(or x1053 x1571)
+(or x837 x900)
+(or (not x1098) x777)
+(or x86 (not x55))
+(or x121 x1288 x163 (not x30) x429)
+(or x817 (not x1086) (not x662) (not x1066) x703)
+(or (not x621) (not x819))
+(or (not x903) (not x541))
+(or x484 (not x1283))
+(or x992 (not x53))
+(or x1581 x801)
+(or x1349 (not x1496))
+(or (not x790) x1004)
+(or x1184 x1385)
+(or x17 x347)
+(or (not x596) x567)
+(or x1491 x1189)
+(or x346 x557)
+(or (not x82) (not x774))
+(or x919 (not x747))
+(or (not x1064) (not x1497))
+(or x1325 (not x1173))
+(or (not x406) x736)
+(or (not x1344) (not x1178))
+(or (not x438) x413)
+(or (not x1380) x1304)
+(or (not x551) x1571)
+(or (not x732) (not x369))
+(or (not x687) (not x71))
+(or (not x780) (not x631))
+(or (not x570) (not x901) (not x1570) x1353)
+(or (not x845) (not x663))
+(or (not x744) x1146 (not x1356) (not x546) (not x1193))
+(or x1129 (not x446))
+(or (not x590) x707)
+(or x592 x586)
+(or x33 (not x64))
+(or (not x526) x742)
+(or (not x448) (not x856))
+(or (not x1317) x499)
+(or x1104 (not x523))
+(or (not x1062) x1565)
+(or x51 (not x1344))
+(or x494 x1130)
+(or x598 (not x287))
+(or x1495 x563)
+(or (not x69) x262)
+(or x508 x37)
+(or x1324 x1440 x1036 (not x1243) x937)
+(or x1508 x570)
+(or (not x1241) (not x1292))
+(or x118 x518)
+(or x1540 (not x720))
+(or (not x590) x1198)
+(or x443 (not x1223))
+(or (not x720) (not x235))
+(or x1411 (not x1431))
+(or x828 x280)
+(or x1345 x1148)
+(or x697 (not x1057))
+(or x191 x470)
+(or x1136 x1433)
+(or x1273 (not x996))
+(or (not x409) x1135)
+(or (not x854) (not x1434))
+(or (not x1442) (not x1171))
+(or x1427 x1390)
+(or x1269 (not x839))
+(or x1203 (not x722))
+(or (not x410) x310)
+(or x442 x166)
+(or (not x1462) x1078)
+(or (not x797) (not x1037))
+(or (not x464) x200)
+(or (not x1233) (not x1257))
+(or (not x708) (not x1292))
+(or (not x538) (not x411))
+(or (not x168) (not x33) (not x1369) (not x742))
+(or x702 x1109)
+(or (not x569) (not x1155))
+(or (not x1494) x674)
+(or x1400 (not x696))
+(or (not x513) (not x808))
+(or x1003 x274)
+(or (not x1067) (not x962))
+(or (not x1311) x1126)
+(or x1035 x1118)
+(or x342 x1349)
+(or x1015 (not x438))
+(or (not x919) (not x559) x747 x690 (not x1336))
+(or x1349 (not x1501))
+(or (not x1001) x1044)
+(or x1442 (not x626) x1016 x912 (not x970))
+(or x795 x93)
+(or x274 (not x353))
+(or x1444 (not x376))
+(or (not x1588) (not x802))
+(or x321 (not x355))
+(or x715 x763 (not x1535))
+(or (not x1285) x238)
+(or (not x88) (not x1233))
+(or x816 (not x857))
+(or x898 x344)
+(or x966 x351)
+(or x333 (not x1574) x1375 (not x1249) x383)
+(or x50 x48)
+(or x849 x261)
+(or (not x694) (not x1529))
+(or (not x1171) x1142)
+(or (not x449) (not x806))
+(or x1031 x1259)
+(or x262 x166)
+(or (not x1572) (not x1438) x291)
+(or (not x1278) (not x1149))
+(or (not x87) x148)
+(or x242 x640)
+(or x911 x898)
+(or x1546 (not x353))
+(or (not x1037) x134)
+(or x1453 (not x1474) (not x236))
+(or (not x1415) (not x1512))
+(or x92 (not x1064))
+(or (not x163) (not x1288))
+(or x1247 (not x1105))
+(or (not x1532) x1514)
+(or x1172 (not x645))
+(or x397 x640)
+(or (not x154) x886)
+(or x1580 (not x596))
+(or x911 x798)
+(or (not x22) x1273)
+(or (not x1524) (not x302))
+(or (not x1180) (not x476))
+(or x229 (not x772))
+(or x607 (not x28))
+(or (not x297) x558)
+(or x1397 x123)
+(or (not x461) x281)
+(or x232 x168)
+(or (not x1017) x182)
+(or (not x482) (not x49))
+(or x248 (not x466))
+(or (not x1262) x109 x712 (not x199))
+(or (not x695) x1262)
+(or (not x564) x1382)
+(or x488 x434 x244 x1309)
+(or x58 x491)
+(or x1416 (not x270))
+(or x344 x1280)
+(or (not x1488) x363)
+(or x1296 x703 x1330)
+(or x1219 (not x62))
+(or x878 (not x1182))
+(or x116 x478)
+(or x108 (not x62))
+(or (not x1110) x914)
+(or (not x945) x867)
+(or (not x1414) (not x1001))
+(or x1481 (not x1541))
+(or x585 x1269)
+(or (not x1116) (not x1493))
+(or (not x737) x877 (not x664))
+(or (not x483) (not x979))
+(or x241 x955)
+(or (not x472) (not x104))
+(or x924 (not x556))
+(or (not x22) (not x1107))
+(or (not x320) (not x10))
+(or x227 (not x1417) (not x3))
+(or (not x1358) x1014)
+(or x292 x1076)
+(or x1272 (not x629))
+(or x50 x1357)
+(or x1099 (not x1192))
+(or x90 (not x1263))
+(or x855 x1555)
+(or x1397 (not x1328))
+(or x1507 x788)
+(or (not x1255) (not x183))
+(or x1428 x422)
+(or x1256 (not x719) (not x791) x98)
+(or (not x1096) (not x203))
+(or (not x1194) x1338)
+(or (not x1546) x672 (not x375))
+(or (not x492) (not x547))
+(or (not x596) x443)
+(or (not x752) (not x1310))
+(or x180 (not x304))
+(or x630 (not x1404))
+(or x1075 (not x159))
+(or x1028 (not x1257))
+(or (not x817) x1469)
+(or (not x203) x1520)
+(or (not x409) (not x964))
+(or x174 x421)
+(or x537 x829)
+(or x295 x618 x1378 x260 x418)
+(or (not x1052) (not x373))
+(or x432 x389)
+(or x301 x1571)
+(or x413 (not x864))
+(or x119 (not x151))
+(or x552 (not x1040) (not x97))
+(or x1470 (not x1460))
+(or x180 x229)
+(or x1250 (not x1289))
+(or x309 x479)
+(or x419 (not x1062))
+(or x389 (not x358))
+(or (not x1449) x180)
+(or x1131 (not x1404))
+(or (not x1531) x1548)
+(or (not x43) (not x71))
+(or x1298 x1379)
+(or (not x1291) x315 (not x1393) (not x80) (not x197))
+(or x1256 (not x536) (not x809))
+(or x501 x934)
+(or (not x1095) (not x1216))
+(or (not x1224) x1585)
+(or x1498 (not x1413))
+(or x1165 (not x353))
+(or x208 (not x655))
+(or (not x418) x751)
+(or (not x495) x628)
+(or (not x42) (not x553))
+(or x939 (not x1166))
+(or x701 x1039)
+(or (not x1595) x1331)
+(or x1357 x360)
+(or x1341 (not x1257))
+(or (not x290) x1510)
+(or (not x789) (not x1110))
+(or x1436 (not x139))
+(or (not x224) x120)
+(or (not x1513) (not x1344))
+(or x159 (not x829) (not x625) (not x1495) (not x537) (not x576) x734)
+(or (not x1217) (not x304))
+(or (not x291) (not x400))
+(or x509 x213)
+(or (not x1179) x944)
+(or x370 x929)
+(or x500 x1199)
+(or x1566 x191)
+(or x643 (not x189))
+(or x134 (not x254))
+(or x728 (not x645))
+(or x289 (not x133))
+(or x208 (not x294))
+(or (not x954) (not x1174))
+(or (not x343) (not x525))
+(or (not x815) (not x141))
+(or x642 x723)
+(or (not x217) (not x1116))
+(or (not x1306) x3)
+(or x1552 x1269)
+(or (not x1087) (not x847))
+(or x1030 (not x374))
+(or x1397 x240)
+(or x1398 x269)
+(or x1580 (not x141))
+(or (not x1494) x241)
+(or x893 (not x910))
+(or x1467 x1338)
+(or x372 (not x268) (not x123) x1059)
+(or (not x623) x1329)
+(or x795 x1398)
+(or x900 x967)
+(or (not x1464) (not x386))
+(or (not x969) (not x369))
+(or x929 (not x1252))
+(or (not x1588) (not x468))
+(or (not x683) x1049)
+(or x713 x1411)
+(or x116 (not x1305))
+(or (not x1400) x439 x1196 x927 x696)
+(or (not x184) (not x1320))
+(or (not x525) (not x150))
+(or x72 x1142)
+(or x960 x361)
+(or (not x1153) x773 x862 x382)
+(or x1244 x385)
+(or x1563 x36)
+(or (not x623) (not x1154))
+(or (not x1512) x656)
+(or x794 x1132)
+(or x90 (not x275))
+(or x370 x1175)
+(or (not x695) (not x209))
+(or x1091 x1240)
+(or x1480 x1334)
+(or x784 (not x423))
+(or (not x648) (not x302))
+(or (not x1358) (not x645))
+(or x67 x266)
+(or x534 (not x428))
+(or x184 (not x352))
+(or x993 (not x928))
+(or x1455 x1265)
+(or (not x1218) x746)
+(or x158 (not x179))
+(or x404 x1152 (not x1346) (not x587) x1490)
+(or x370 x1425)
+(or (not x1464) (not x371))
+(or x771 x1076)
+(or x650 (not x1424))
+(or (not x1554) x1280)
+(or x798 (not x926))
+(or x1345 (not x1146))
+(or x176 (not x400))
+(or (not x549) x673)
+(or x631 x780)
+(or x626 (not x997))
+(or (not x999) (not x1047))
+(or (not x275) (not x590))
+(or x1466 (not x854))
+(or (not x355) (not x754))
+(or x1069 x283)
+(or (not x1578) x90)
+(or x442 (not x986))
+(or (not x1290) (not x1305))
+(or (not x1381) x1058)
+(or (not x64) (not x14))
+(or (not x915) x1594)
+(or x569 x695 (not x1121) x122 x874 (not x1322) (not x1262))
+(or (not x1178) x592)
+(or x909 (not x295))
+(or (not x1210) x702)
+(or (not x595) x1148)
+(or (not x217) x1092)
+(or x353 (not x1147) x804 (not x1408) (not x1165) x1146)
+(or (not x1443) (not x1276))
+(or x1244 (not x950))
+(or (not x554) (not x655))
+(or x1383 x152)
+(or (not x1531) (not x1330))
+(or x129 x1298)
+(or x140 (not x335))
+(or x92 x1580)
+(or (not x1200) (not x1532))
+(or (not x1202) (not x1482) x1268 (not x725) x143)
+(or (not x352) x759)
+(or x289 x922)
+(or (not x1279) x1576)
+(or (not x1539) (not x1166))
+(or x953 (not x328))
+(or (not x237) (not x1323) (not x413) (not x248))
+(or (not x1116) x828)
+(or x1236 (not x669))
+(or x981 x733)
+(or x793 x607)
+(or x925 (not x872))
+(or x1399 (not x654))
+(or x673 (not x961))
+(or x1433 (not x1279))
+(or (not x289) (not x1396) x224 (not x99) x133 (not x1058) (not x116) (not x922) (not x120))
+(or x1296 x946 x556 (not x509) (not x1363) x856)
+(or (not x523) x636)
+(or x638 (not x183))
+(or x403 x771)
+(or x792 x707)
+(or (not x1447) (not x398))
+(or (not x306) (not x915))
+(or x1040 (not x390))
+(or (not x1254) (not x294))
+(or x693 (not x1388))
+(or (not x126) x661 x177 (not x15) x683)
+(or (not x937) x1199)
+(or (not x833) x1037 (not x558) x89 x1515 (not x567))
+(or (not x104) x848)
+(or x1226 (not x959))
+(or x1130 x257)
+(or x124 x909)
+(or (not x1306) (not x263))
+(or (not x1112) x705)
+(or x1507 x1024)
+(or x567 x693)
+(or (not x655) x1238)
+(or (not x1536) (not x1230))
+(or (not x1559) x30)
+(or (not x348) x26)
+(or (not x437) x981)
+(or (not x950) x982)
+(or (not x1529) x1247)
+(or x530 x1316)
+(or x1046 x427)
+(or x544 (not x1554))
+(or x516 x1512 (not x102) x353 (not x1482) (not x299) x1463 x1415 (not x1135))
+(or (not x987) (not x20))
+(or (not x588) x1597)
+(or x1423 (not x1587))
+(or (not x296) (not x60))
+(or x1148 x1076)
+(or (not x1496) x342)
+(or (not x159) (not x684))
+(or x677 (not x949))
+(or x1092 x1172)
+(or x1420 x208)
+(or x1485 x1219)
+(or x1208 (not x154))
+(or (not x1110) (not x602))
+(or (not x85) x664)
+(or x1145 (not x125))
+(or x1039 (not x487))
+(or x1172 (not x1343))
+(or x47 x1092)
+(or x283 x1510)
+(or x1461 x1162)
+(or (not x1116) (not x821))
+(or (not x554) (not x510))
+(or (not x1465) x1323)
+(or x1433 x906)
+(or x1087 (not x816) (not x1417))
+(or (not x43) (not x523))
+(or (not x910) x1078)
+(or (not x11) (not x49))
+(or x1298 x470)
+(or x824 (not x533) x1573)
+(or (not x476) x678)
+(or (not x1506) (not x1251) (not x240) x932)
+(or x807 (not x1394))
+(or (not x549) x985)
+(or x571 (not x1002))
+(or x280 (not x815))
+(or x1470 (not x490))
+(or x1500 (not x183))
+(or (not x1017) (not x764))
+(or x1325 x182)
+(or x1546 x397)
+(or (not x295) (not x418))
+(or x1147 (not x1276))
+(or x978 (not x600))
+(or x336 (not x76))
+(or x592 (not x303))
+(or (not x277) x784)
+(or (not x386) (not x694))
+(or (not x431) x368)
+(or x102 (not x553))
+(or x1339 x1563)
+(or x1169 x835)
+(or (not x622) x273)
+(or x1580 (not x724))
+(or (not x622) (not x1274))
+(or (not x483) (not x956))
+(or x1342 (not x903))
+(or (not x167) (not x1368))
+(or (not x1350) x818)
+(or x1520 x677)
+(or (not x1484) x332)
+(or (not x783) (not x1224))
+(or x1401 x199)
+(or (not x851) x780)
+(or x58 (not x78))
+(or (not x1330) (not x573))
+(or x730 x1045 (not x1100))
+(or x334 x1137)
+(or (not x1302) (not x428))
+(or x1473 x739)
+(or (not x617) (not x1577))
+(or x909 x1567)
+(or x201 x574 x19)
+(or (not x20) (not x1278))
+(or x169 (not x225))
+(or x1421 x736)
+(or (not x551) x184)
+(or x34 (not x1497))
+(or (not x373) x1044)
+(or (not x317) x1003)
+(or x778 (not x69))
+(or x1161 (not x187))
+(or x643 (not x987))
+(or x865 x39)
+(or (not x367) (not x22))
+(or x1214 x112)
+(or x378 (not x1138))
+(or (not x121) (not x550))
+(or x1375 x574 (not x1583) x1590 x1456)
+(or x327 x824 (not x559))
+(or x276 x1520)
+(or x899 (not x1034))
+(or (not x345) x898)
+(or (not x1224) x176)
+(or (not x1127) x560)
+(or x788 x283)
+(or (not x1112) x1340)
+(or (not x1529) (not x493))
+(or x848 (not x1072))
+(or (not x187) x1482)
+(or (not x183) (not x787))
+(or (not x684) x993)
+(or (not x720) (not x574))
+(or (not x613) x711)
+(or x1498 x1197)
+(or x971 (not x180) (not x771) (not x229) (not x1489) (not x403))
+(or (not x1424) (not x1025))
+(or x1032 x344)
+(or (not x437) x1452)
+(or x195 (not x434))
+(or (not x412) x72)
+(or x1181 (not x1349) x1501 x541)
+(or x263 x462 (not x200))
+(or x674 (not x28))
+(or x704 (not x549))
+(or x135 x807)
+(or (not x572) x1024)
+(or (not x474) (not x954))
+(or (not x349) x477)
+(or (not x494) x1422 x1431 (not x331) (not x1430) x1173)
+(or (not x961) x1580)
+(or (not x1062) (not x811))
+(or x242 x1023)
+(or x758 x955)
+(or x1030 x2)
+(or x746 x1444)
+(or x709 (not x602))
+(or x606 x117 x294 (not x486))
+(or x1243 (not x111))
+(or (not x564) (not x1072))
+(or x1273 (not x89))
+(or x211 (not x1543))
+(or (not x239) (not x417))
+(or x1525 x1382)
+(or (not x684) x1520)
+(or x411 (not x465))
+(or (not x619) x534)
+(or (not x19) (not x507))
+(or (not x192) x1508)
+(or x221 (not x667))
+(or (not x802) x788)
+(or x26 (not x1256))
+(or (not x968) x1079)
+(or x1393 x1289)
+(or x1313 x99)
+(or x334 x90)
+(or x250 (not x554))
+(or x124 (not x1235))
+(or x246 (not x256))
+(or x736 x1304)
+(or x261 x911)
+(or x1030 x1198)
+(or (not x401) x1147)
+(or (not x609) x172)
+(or x762 x1088)
+(or (not x290) (not x1067))
+(or x1421 x427)
+(or (not x811) x1018)
+(or (not x1415) x172)
+(or x1142 (not x522))
+(or x1020 (not x1479))
+(or x679 x1481)
+(or (not x4) (not x278))
+(or x1485 x925)
+(or x1131 (not x790))
+(or x960 (not x774))
+(or x909 (not x255))
+(or (not x45) (not x1083))
+(or x1120 x642)
+(or x1088 (not x483))
+(or (not x1378) (not x815))
+(or x784 (not x1499))
+(or (not x333) x67)
+(or x938 x242)
+(or x1562 x1079)
+(or (not x613) (not x1490))
+(or x132 x424)
+(or (not x1168) (not x1306))
+(or x1115 x1298)
+(or (not x955) x1494 (not x674) (not x758) x28 (not x241))
+(or x460 (not x1560))
+(or x1295 x835)
+(or (not x741) x900)
+(or x1495 (not x431))
+(or x132 x1363)
+(or (not x814) (not x1239))
+(or (not x1434) x1516)
+(or x432 (not x1209))
+(or x835 (not x1472))
+(or (not x1464) (not x1141))
+(or (not x1412) x491)
+(or x385 (not x859))
+(or (not x1021) (not x1041))
+(or x1023 (not x907))
+(or x1390 x48)
+(or (not x602) x1445)
+(or x917 x113)
+(or x878 (not x1166))
+(or x494 (not x1422))
+(or x1050 (not x931))
+(or x1566 x129)
+(or (not x550) (not x715))
+(or (not x1302) (not x752))
+(or (not x1554) x191)
+(or (not x1227) (not x475))
+(or (not x509) x525 x157 (not x213) (not x861) x775 x343)
+(or (not x495) x1068)
+(or x108 x118)
+(or x1519 x1418)
+(or x916 x830)
+(or x906 x570)
+(or x1396 x1273)
+(or x517 (not x350))
+(or x898 (not x808))
+(or x378 (not x114))
+(or (not x859) (not x383))
+(or x175 (not x1090))
+(or (not x355) x625)
+(or (not x31) (not x648))
+(or (not x467) x483 x252 x231 (not x1544) (not x679) (not x659) x826 (not x1109))
+(or x1552 x1546)
+(or x938 x425)
+(or (not x1554) x759)
+(or (not x1064) (not x1305))
+(or (not x859) x249)
+(or x229 x855)
+(or (not x255) x882)
+(or x620 x916)
+(or (not x1328) x1349)
+(or (not x1096) (not x320))
+(or x59 (not x858))
+(or x34 x92)
+(or x1129 (not x946))
+(or x1043 (not x1592))
+(or (not x549) (not x1177))
+(or (not x1404) (not x1083))
+(or (not x122) x1322)
+(or x1347 (not x1168))
+(or x658 (not x831))
+(or (not x743) (not x14))
+(or (not x89) x1396)
+(or (not x986) x213)
+(or x778 x952)
+(or (not x617) (not x38))
+(or (not x63) x473)
+(or (not x420) x241)
+(or (not x139) x957)
+(or x72 x632)
+(or (not x583) x533)
+(or x878 x1397)
+(or x1594 (not x142))
+(or x144 x610)
+(or (not x264) (not x1354))
+(or (not x415) x1553 x296)
+(or x1040 x607)
+(or (not x420) x673)
+(or x235 (not x1537))
+(or (not x391) x1584)
+(or x670 x1100)
+(or x228 (not x1434))
+(or x1019 x472 (not x948) (not x992) x53)
+(or x777 (not x514))
+(or x1369 x484)
+(or (not x1551) x1433)
+(or (not x1449) (not x928))
+(or (not x306) (not x224))
+(or (not x589) (not x1071) (not x833) x1380 x749)
+(or x660 x622 (not x1070) x220)
+(or (not x189) x678)
+(or x727 x579)
+(or x940 x1509)
+(or (not x1557) x1143)
+(or x1089 (not x686) x1261 x1381)
+(or x1454 (not x330))
+(or (not x1017) x1102)
+(or (not x1019) x473)
+(or (not x681) (not x405) x1285)
+(or x262 (not x475))
+(or (not x298) (not x5))
+(or x1457 (not x81))
+(or x414 x591)
+(or x748 x118)
+(or (not x1216) (not x369))
+(or (not x874) (not x411))
+(or (not x267) x1068)
+(or x295 x255 x1180 (not x909) x1045)
+(or x869 x1523)
+(or (not x1470) x490 x734 (not x739) (not x1340) (not x642))
+(or x943 x452 x455 (not x818) x1350 x1465)
+(or (not x698) x360)
+(or (not x187) (not x804))
+(or (not x946) (not x908))
+(or (not x507) x1538)
+(or (not x1101) (not x272))
+(or (not x1410) x677)
+(or (not x1192) (not x1122))
+(or (not x481) x135)
+(or x360 (not x42))
+(or (not x372) x1131)
+(or x1406 (not x408))
+(or (not x1305) x748)
+(or (not x568) x110)
+(or (not x446) (not x860))
+(or (not x152) x1326 (not x289) x1134)
+(or x1509 (not x774))
+(or x1393 x1291)
+(or x1502 (not x209))
+(or (not x1055) (not x45))
+(or (not x698) (not x219))
+(or (not x688) (not x716))
+(or (not x1451) x148)
+(or x1566 x384)
+(or (not x1299) (not x56))
+(or (not x986) (not x416))
+(or (not x520) (not x609))
+(or x1351 (not x320))
+(or (not x38) (not x789))
+(or (not x111) x61)
+(or (not x115) x882)
+(or x602 x1211 (not x988) x1577 (not x419) x617 x996)
+(or (not x930) x1247)
+(or (not x903) x1511)
+(or x567 x1018)
+(or (not x1449) (not x45))
+(or (not x986) (not x866))
+(or x1038 x978)
+(or x1423 (not x16))
+(or (not x255) (not x400))
+(or (not x745) x1514)
+(or x370 x131)
+(or x979 x1257 x1233 (not x1341) x76 (not x616))
+(or x529 x281)
+(or x424 (not x780))
+(or x656 x172)
+(or x1139 x837)
+(or (not x1551) (not x75))
+(or (not x295) x678)
+(or (not x1299) (not x573))
+(or (not x1504) x829)
+(or (not x1399) (not x361) x654)
+(or (not x1554) (not x1034))
+(or x880 (not x5))
+(or x1325 x1334)
+(or x1441 x901)
+(or x292 (not x1299))
+(or x1370 x829)
+(or x705 x1208)
+(or (not x278) x389)
+(or x753 x1393)
+(or x1214 x1234)
+(or (not x796) x1262)
+(or (not x1007) (not x564))
+(or x450 (not x1360))
+(or (not x587) x872)
+(or (not x975) (not x624))
+(or x992 (not x708))
+(or (not x750) x1520)
+(or (not x1300) (not x1149))
+(or x379 x212)
+(or x778 x585)
+(or x102 x1135)
+(or x1065 (not x265))
+(or (not x214) x1521)
+(or x1069 (not x1378))
+(or (not x75) x208)
+(or (not x1194) (not x629))
+(or x1248 x597)
+(or (not x39) (not x865) x543 (not x1071))
+(or (not x469) x1012)
+(or x865 x544)
+(or x1546 x546)
+(or (not x111) x1334)
+(or x102 x241)
+(or (not x186) (not x1167))
+(or x886 (not x371))
+(or (not x772) x753)
+(or (not x1549) (not x609))
+(or x1120 x370)
+(or (not x353) (not x1415))
+(or (not x1302) x776)
+(or (not x1494) (not x192))
+(or (not x192) (not x4))
+(or (not x683) x365)
+(or (not x1367) (not x954))
+(or x12 (not x1595))
+(or x432 x1357)
+(or x665 (not x1471) x973 x52)
+(or x1416 x1516)
+(or x1579 (not x601))
+(or (not x324) (not x865) (not x544))
+(or x1032 x1580)
+(or (not x1133) (not x789))
+(or (not x805) (not x317))
+(or x659 x892)
+(or x950 (not x1244) x1182 (not x385) (not x900))
+(or x1471 x223)
+(or (not x648) x281)
+(or x83 (not x251))
+(or x30 x6)
+(or x439 (not x835) (not x955) (not x786) (not x1169))
+(or x444 (not x220))
+(or (not x133) x1396)
+(or x878 x1387)
+(or (not x462) (not x408))
+(or (not x1359) x1295)
+(or x212 (not x464))
+(or x666 (not x877))
+(or (not x343) x213)
+(or x364 x1313)
+(or (not x1233) x916)
+(or x182 x1266)
+(or x651 (not x462))
+(or (not x874) x972)
+(or (not x1443) (not x590))
+(or x682 (not x10))
+(or x299 x640)
+(or (not x410) x124)
+(or x1399 x723)
+(or (not x1051) (not x152) x1179 x1542 x330)
+(or x640 (not x264))
+(or (not x1490) x1346)
+(or (not x418) x704)
+(or x197 x292)
+(or x142 (not x1147) x1361 (not x1594) x915 x401)
+(or x869 x795)
+(or x914 (not x789))
+(or (not x1395) (not x499) (not x1094))
+(or (not x836) (not x192))
+(or x1425 (not x94))
+(or x849 (not x926))
+(or x1491 (not x897))
+(or x1393 (not x1098))
+(or (not x160) x3)
+(or (not x860) (not x56))
+(or x1474 x236)
+(or x1510 (not x252))
+(or (not x928) (not x1536))
+(or (not x1282) (not x1209))
+(or (not x1381) x1020)
+(or x1593 (not x410))
+(or x1272 x1581)
+(or x1038 (not x964))
+(or (not x45) x1242)
+(or x1109 (not x826))
+(or x1339 x453)
+(or (not x1072) x632)
+(or (not x417) x479)
+(or (not x1183) (not x155))
+(or (not x372) (not x141))
+(or (not x1155) (not x111))
+(or (not x629) x906)
+(or x1203 (not x53))
+(or x762 x1357)
+(or x974 (not x431))
+(or (not x1501) x827)
+(or x884 x1123)
+(or x1525 (not x696))
+(or (not x1254) (not x1054))
+(or x1425 (not x561))
+(or (not x668) (not x1159))
+(or (not x1173) x1523)
+(or (not x995) (not x881))
+(or x1248 x886)
+(or x93 (not x31))
+(or (not x984) x906)
+(or (not x1096) x1356)
+(or x397 x593)
+(or x276 (not x764))
+(or (not x1105) x1530)
+(or x1183 x1057 (not x581) x1386)
+(or x1053 x363)
+(or x185 (not x1486))
+(or x470 x325)
+(or (not x601) x978)
+(or x788 x914)
+(or (not x968) (not x601))
+(or (not x667) (not x1415))
+(or (not x523) (not x935))
+(or (not x225) x500)
+(or (not x53) (not x315))
+(or x807 x1502)
+(or (not x796) x58)
+(or x1284 x127)
+(or (not x1235) (not x1005))
+(or x753 x413)
+(or x1198 x1500)
+(or x405 x1391)
+(or (not x158) x937)
+(or (not x858) (not x1022))
+(or x1161 x1482)
+(or x1485 (not x62))
+(or (not x1023) x907 x399 x1343)
+(or x158 x1238)
+(or x537 (not x159))
+(or x46 x1163)
+(or (not x111) x810)
+(or (not x722) (not x750))
+(or x839 (not x1567))
+(or (not x975) x426)
+(or (not x416) x776)
+(or x14 (not x1077) x64)
+(or x349 x373 (not x825) (not x1044))
+(or (not x1105) x670)
+(or (not x1314) (not x602))
+(or x1390 (not x1067))
+(or x116 (not x133))
+(or x393 x1397)
+(or (not x150) x1271)
+(or (not x1372) x560)
+(or x1466 x1516)
+(or (not x181) (not x8))
+(or (not x318) (not x48))
+(or (not x617) (not x1231))
+(or (not x76) (not x979))
+(or x1523 x534)
+(or (not x601) x878)
+(or (not x1090) (not x1429))
+(or x210 (not x1192))
+(or (not x772) x740)
+(or x430 (not x149))
+(or (not x1577) (not x1211))
+(or x1272 (not x451))
+(or x70 x1143)
+(or (not x209) (not x472))
+(or x1293 x229)
+(or x704 (not x667))
+(or (not x284) x1202)
+(or (not x1017) (not x652))
+(or (not x125) (not x1257))
+(or (not x88) x1446)
+(or x608 (not x1365))
+(or (not x976) x529)
+(or (not x69) (not x1377))
+(or x585 x1420)
+(or x584 x671)
+(or (not x141) (not x1220))
+(or (not x1231) x777)
+(or x753 (not x1160))
+(or (not x965) x733)
+(or x625 x1028)
+(or x1523 x1136)
+(or x503 (not x335))
+(or (not x1) (not x1056))
+(or x1039 x728)
+(or (not x864) x206)
+(or x489 x444)
+(or (not x1089) (not x797))
+(or x1444 x105)
+(or (not x104) x144)
+(or (not x808) x1029)
+(or (not x370) (not x131) (not x893) x356 (not x1175))
+(or (not x945) x30)
+(or (not x1212) (not x717))
+(or x1280 (not x1532))
+(or (not x730) x982)
+(or x1521 (not x683))
+(or (not x330) x1051)
+(or x641 x812)
+(or (not x987) (not x977))
+(or (not x26) x660 (not x1301))
+(or (not x231) x679)
+(or x1466 x1074)
+(or x1214 x991)
+(or (not x1132) x427)
+(or x1023 (not x399))
+(or x1572 x127)
+(or (not x805) (not x1324))
+(or (not x290) x1427)
+(or (not x1090) x1482)
+(or x1481 x280)
+(or x131 x332)
+(or x544 x833)
+(or (not x163) x504)
+(or (not x255) (not x1045))
+(or x1522 (not x1361))
+(or x739 (not x1157))
+(or x2 x130)
+(or x936 x517)
+(or x605 (not x1402))
+(or x309 (not x684))
+(or (not x1260) x978)
+(or (not x1146) x546)
+(or (not x69) x936)
+(or x1199 (not x138))
+(or x1291 x442)
+(or x1118 x425)
+(or x1082 x641)
+(or (not x1575) x1500)
+(or x1537 x916)
+(or (not x1460) (not x1596))
+(or x500 x1074)
+(or (not x430) (not x222))
+(or (not x456) x662)
+(or (not x1315) (not x949))
+(or x1474 (not x881))
+(or (not x945) (not x398))
+(or x580 x182)
+(or (not x1167) (not x319))
+(or x182 x1137)
+(or (not x1157) (not x1258))
+(or (not x1490) x1370)
+(or (not x1590) (not x1375))
+(or (not x962) x1088)
+(or x1518 (not x493))
+(or x1346 (not x404))
+(or x416 x204 x462 (not x636))
+(or x835 (not x1353))
+(or (not x540) (not x1216))
+(or (not x889) x503)
+(or (not x159) x625)
+(or x64 (not x236) x1002 (not x1271) (not x1226))
+(or (not x1451) x576)
+(or (not x1378) x499)
+(or (not x541) x894)
+(or x1313 x828)
+(or (not x815) x407)
+(or x1391 x1162)
+(or x729 x535)
+(or (not x225) (not x1279))
+(or x697 (not x1252))
+(or (not x649) x1135)
+(or x84 (not x408))
+(or x1334 (not x1083))
+(or x1594 x702)
+(or (not x156) x1265)
+(or x1135 (not x77))
+(or (not x367) (not x1283))
+(or x344 (not x1034))
+(or (not x997) (not x380))
+(or x1100 (not x730))
+(or (not x438) x597)
+(or (not x751) (not x666) x877)
+(or x1418 x1085)
+(or x1576 (not x1210))
+(or (not x959) (not x1453))
+(or x537 (not x1311))
+(or x273 x1014)
+(or x1069 (not x839))
+(or x1031 (not x860))
+(or (not x306) x781)
+(or (not x696) x812)
+(or x368 x134)
+(or (not x69) x339)
+(or x1502 (not x1335))
+(or x726 x210)
+(or (not x1532) x586)
+(or (not x1505) (not x973))
+(or (not x609) x1408)
+(or x679 x1576)
+(or x592 (not x204))
+(or (not x1239) (not x91))
+(or x1347 (not x128))
+(or (not x1413) x616)
+(or (not x1486) x922)
+(or (not x1509) x165 (not x982))
+(or x1425 x781)
+(or (not x438) (not x215))
+(or (not x1314) (not x1292))
+(or x535 (not x1465))
+(or (not x1060) x755)
+(or (not x321) (not x1357) (not x1508) (not x149) (not x50) (not x351))
+(or (not x428) x1136)
+(or (not x7) (not x930))
+(or (not x107) x641)
+(or (not x572) (not x138))
+(or x1226 (not x1002))
+(or x1119 (not x873))
+(or x1141 (not x580) (not x1323))
+(or (not x1232) x972)
+(or x273 x944)
+(or x1565 x1264)
+(or (not x1335) (not x1292))
+(or (not x877) x737)
+(or (not x20) (not x91))
+(or (not x1170) (not x513))
+(or (not x621) (not x68))
+(or x96 (not x1292))
+(or x828 x721)
+(or (not x1410) x23)
+(or x51 x1334)
+(or (not x1065) (not x1286) x1447)
+(or (not x437) (not x1392))
+(or x307 x603)
+(or x273 (not x1447))
+(or x1516 x1074)
+(or x786 x1576)
+(or x1163 (not x1426))
+(or (not x844) (not x1458) x194 x214)
+(or (not x1364) x1571)
+(or x940 (not x398))
+(or (not x684) x620)
+(or (not x285) (not x633))
+(or (not x485) (not x555))
+(or x1313 (not x1107))
+(or (not x1158) (not x1464))
+(or x1280 (not x1200))
+(or (not x935) x517)
+(or (not x8) (not x277))
+(or (not x178) x816)
+(or (not x1541) (not x1368))
+(or (not x1212) (not x1245))
+(or x861 x1082)
+(or (not x451) (not x550))
+(or x825 (not x349))
+(or x1071 (not x543))
+(or x867 x1271)
+(or x392 (not x122))
+(or x558 x1514)
+(or x1018 x443)
+(or (not x903) (not x1037))
+(or (not x790) x1416)
+(or (not x333) (not x933))
+(or (not x734) (not x159))
+(or (not x1426) x844)
+(or (not x866) x1271)
+(or x576 x625)
+(or (not x552) x137)
+(or (not x519) x1051)
+(or x1406 (not x209))
+(or (not x1116) x1120)
+(or (not x302) x1581)
+(or x313 x1172)
+(or x501 (not x1168))
+(or x269 x948)
+(or (not x1547) (not x619))
+(or (not x317) (not x680))
+(or x1123 (not x532))
+(or x1031 (not x624))
+(or x1543 (not x828) x1493 x189 (not x280) x1116 x826 (not x721))
+(or (not x4) x1400)
+(or (not x577) x1561)
+(or (not x1) x598)
+(or x1006 x1579)
+(or (not x1448) (not x485))
+(or x589 (not x749))
+(or x301 x269)
+(or (not x1279) (not x1534))
+(or (not x44) x8 (not x759) x181 (not x1321) (not x885) (not x402))
+(or x135 (not x752))
+(or x467 x1109)
+(or x679 x1544)
+(or x557 (not x648))
+(or (not x824) (not x1573))
+(or x283 x12)
+(or (not x428) x1401)
+(or (not x990) (not x1455) x1282 x1456)
+(or x1398 (not x1591))
+(or x719 x791)
+(or (not x822) x1580)
+(or x740 x1088)
+(or (not x264) x593)
+(or (not x1312) x705)
+(or x1481 x919)
+(or (not x437) (not x275))
+(or x1038 x1316)
+(or (not x722) (not x1195))
+(or x1473 x95)
+(or (not x367) x196)
+(or x591 x15)
+(or (not x734) x829)
+(or (not x1534) (not x27))
+(or x681 (not x474))
+(or x1473 (not x1112))
+(or x463 x123)
+(or x922 x120)
+(or (not x78) x35)
+(or x1457 (not x145))
+(or (not x353) x1147)
+(or x453 x113)
+(or (not x492) x677)
+(or (not x43) (not x752))
+(or x1363 (not x856))
+(or x23 x917)
+(or x1104 (not x8))
+(or (not x296) (not x1553))
+(or (not x447) x396)
+(or x535 (not x989))
+(or (not x897) x893)
+(or x1563 x1530)
+(or x620 x1075)
+(or x1106 (not x380))
+(or x1211 x866 x700 x525)
+(or x1340 (not x668))
+(or x909 (not x1587))
+(or (not x91) x1202)
+(or (not x1017) (not x319))
+(or (not x183) x110)
+(or x1259 x200)
+(or x792 x378)
+(or x738 x1018)
+(or (not x1547) x1303)
+(or x1520 (not x1033))
+(or (not x1306) x208)
+(or x1550 x226)
+(or x1428 x1128)
+(or (not x78) (not x538))
+(or x924 x1514)
+(or x180 x771)
+(or (not x1239) (not x335))
+(or x494 (not x328))
+(or x1161 x1522)
+(or x812 (not x1443))
+(or x209 (not x1406) x418 (not x751))
+(or x1435 (not x719))
+(or (not x1447) x1286)
+(or x854 (not x271) x568 (not x1130) (not x185))
+(or x1097 (not x260))
+(or x1094 x35)
+(or (not x1158) (not x371))
+(or x1113 x1046)
+(or x1091 (not x692))
+(or (not x1280) (not x1405) x1595 (not x1050))
+(or x1011 (not x1138))
+(or (not x373) x905)
+(or x40 (not x1392))
+(or x659 (not x654))
+(or (not x602) x914)
+(or x1341 x216)
+(or x767 x537)
+(or (not x434) (not x488))
+(or (not x56) x197)
+(or (not x945) x318)
+(or (not x507) (not x357))
+(or x234 x397)
+(or x1387 (not x841))
+(or (not x1440) x1243)
+(or (not x449) x746)
+(or x1004 (not x984))
+(or x283 (not x804))
+(or x768 x1123)
+(or x58 x849)
+(or x339 (not x1407))
+(or (not x1377) (not x964))
+(or (not x1305) x544)
+(or x662 x149)
+(or (not x170) (not x43))
+(or x1109 (not x252))
+(or (not x1057) x1395)
+(or x1058 (not x224))
+(or x1277 x47)
+(or x1583 x1053)
+(or x1150 x1082)
+(or x1150 x1418)
+(or (not x1187) (not x782) (not x934) (not x825))
+(or (not x27) x579)
+(or x861 x213)
+(or x739 x1340)
+(or (not x492) (not x1146))
+(or (not x75) (not x192))
+(or (not x811) x384)
+(or x1580 (not x815))
+(or (not x513) x1455)
+(or (not x568) (not x514))
+(or (not x1590) (not x574))
+(or (not x1378) (not x141))
+(or (not x139) (not x1222))
+(or (not x103) x1018)
+(or (not x1059) x1118)
+(or (not x505) (not x663))
+(or x1313 (not x668))
+(or (not x1297) x351)
+(or (not x672) x676)
+(or (not x618) (not x474))
+(or (not x1415) x1135)
+(or (not x1200) (not x1479))
+(or (not x1248) x457 (not x301))
+(or x1307 (not x409))
+(or (not x1302) x1228)
+(or x1405 (not x1595))
+(or (not x881) (not x1210))
+(or (not x186) (not x989))
+(or x900 (not x950))
+(or (not x969) (not x1419))
+(or (not x538) (not x874))
+(or (not x319) (not x505))
+(or x882 x1502)
+(or (not x870) x1106)
+(or (not x573) (not x1258))
+(or (not x1463) x1026)
+(or (not x252) (not x38))
+(or (not x1212) (not x708))
+(or (not x1285) x405)
+(or x902 (not x634))
+(or (not x8) x970)
+(or x1108 x409 (not x25) (not x1161) (not x1408) (not x1522) x609 (not x1061))
+(or x1356 x1193)
+(or x1436 x1510)
+(or x537 x625)
+(or (not x652) x1468)
+(or x307 x1042)
+(or x232 (not x181))
+(or x15 (not x1493))
+(or x777 x432)
+(or x610 x176)
+(or (not x1062) (not x218))
+(or x1322 (not x1596))
+(or (not x891) x757)
+(or x570 x1420)
+(or x908 x1503 (not x1129) x946 x1559)
+(or (not x1500) (not x713) x1431 (not x1411) x1575)
+(or x603 x843)
+(or (not x959) x1039)
+(or x1401 (not x138))
+(or (not x866) (not x951))
+(or x539 x1498)
+(or (not x1115) x1281 x1288 x1285 x288 x624)
+(or (not x423) x6)
+(or (not x629) x1259)
+(or x501 x486)
+(or (not x1200) x384)
+(or x1243 (not x1155))
+(or x74 (not x1231))
+(or (not x836) x1119)
+(or x1436 (not x290))
+(or (not x1360) (not x21))
+(or x1088 x344)
+(or x652 (not x1189) x1183 (not x929) (not x1468))
+(or (not x1176) (not x173))
+(or x199 (not x109))
+(or x499 x508)
+(or x358 (not x1331) (not x389) x406 (not x1251) x278 x1505)
+(or x1120 x723)
+(or x387 x243)
+(or x1566 x1580)
+(or (not x545) (not x612))
+(or x1555 (not x277))
+(or x1511 (not x588))
+(or (not x1372) (not x1060))
+(or (not x468) x40)
+(or x635 x1351)
+(or (not x1281) x855)
+(or x1035 (not x1372))
+(or (not x1008) (not x1224))
+(or (not x770) (not x227))
+(or x1009 (not x516))
+(or (not x296) x911)
+(or x948 (not x194))
+(or x896 x1563)
+(or x467 (not x483))
+(or x958 x333 x870 (not x1333))
+(or (not x21) (not x319))
+(or x1323 x413)
+(or (not x847) (not x380))
+(or x1506 x240)
+(or x379 x1338)
+(or (not x449) (not x1220))
+(or x361 x1399)
+(or x1370 x131)
+(or (not x290) (not x1361))
+(or (not x859) (not x1083))
+(or (not x821) (not x822))
+(or x844 (not x214))
+(or x331 x494)
+(or (not x386) (not x1380))
+(or x892 x776)
+(or (not x1350) (not x871))
+(or (not x56) (not x1503))
+(or x1555 x904)
+(or x12 x40)
+(or x1032 (not x995))
+(or (not x858) (not x1431))
+(or x922 x1186)
+(or (not x701) x1577)
+(or (not x296) x347)
+(or (not x814) (not x856))
+(or x180 x300)
+(or x885 (not x1154))
+(or (not x45) (not x1434))
+(or (not x1367) (not x634))
+(or x589 (not x1166))
+(or (not x520) x1307)
+(or (not x1258) x1454)
+(or x1329 x332)
+(or (not x968) x314)
+(or x47 x364)
+(or x1298 x58)
+(or (not x932) x635)
+(or (not x278) x268)
+(or (not x350) x1454)
+(or x766 x530)
+(or (not x1036) (not x1590))
+(or x721 (not x1493))
+(or x1397 (not x1539))
+(or (not x153) (not x1430) x1300 (not x1519) (not x580))
+(or x921 (not x151))
+(or x614 x1295)
+(or x785 (not x106))
+(or (not x189) (not x1596))
+(or x280 (not x1493))
+(or x99 (not x561))
+(or (not x331) (not x829) x1504 (not x974))
+(or x740 x1140)
+(or (not x64) x1077)
+(or x810 x1334)
+(or (not x1431) x494)
+(or (not x609) x381)
+(or (not x100) x1287)
+(or (not x1414) x1044)
+(or (not x265) x273)
+(or (not x94) (not x724))
+(or x199 x1234)
+(or x441 (not x1301))
+(or (not x1021) (not x1368))
+(or (not x1285) x1053)
+(or x1131 x1395)
+(or (not x1157) x309)
+(or x50 (not x270))
+(or (not x319) (not x1160))
+(or (not x1017) x1323)
+(or x351 x149)
+(or x500 (not x994))
+(or (not x345) x34)
+(or x146 (not x1310))
+(or x1104 (not x316))
+(or (not x897) x415)
+(or x1212 (not x1097))
+(or (not x1483) (not x977))
+(or (not x85) (not x796))
+(or x1548 x79)
+(or (not x959) x169)
+(or x1031 x193)
+(or (not x306) (not x1549))
+(or (not x423) x1571)
+(or (not x304) x329)
+(or (not x1146) (not x804))
+(or (not x551) (not x1426))
+(or (not x1465) (not x943))
+(or x1593 x1470)
+(or x321 x50)
+(or x262 (not x1377))
+(or (not x1207) (not x1412))
+(or (not x1227) x1379)
+(or (not x8) (not x170))
+(or x900 (not x668))
+(or (not x1551) x1003)
+(or (not x38) (not x1274))
+(or x1114 (not x1058) (not x1586) x1055)
+(or x1058 x289)
+(or x1579 x206)
+(or x281 (not x31))
+(or x234 x1147)
+(or x823 x263)
+(or x1186 (not x1037))
+(or (not x877) (not x1367))
+(or x164 x898)
+(or x1234 (not x1215))
+(or x605 (not x1294))
+(or x80 x1030)
+(or x1079 x232)
+(or x1320 x166)
+(or (not x568) x47)
+(or (not x76) (not x684))
+(or x389 x725)
+(or x1117 x1291)
+(or (not x203) x1351)
+(or (not x323) (not x1394))
+(or x1228 x132)
+(or (not x1054) x919)
+(or (not x935) (not x621))
+(or x1284 (not x115))
+(or (not x383) x1491)
+(or x1417 (not x1087))
+(or (not x609) x25)
+(or (not x1270) x213)
+(or (not x415) (not x758) x177 x706)
+(or (not x1568) x651)
+(or (not x73) x999 x1047)
+(or (not x624) x1010)
+(or x895 x1001 (not x899) (not x1187) x316)
+(or (not x175) (not x1530))
+(or (not x1419) (not x1558))
+(or x759 x1321)
+(or x1521 x442)
+(or (not x22) x738)
+(or (not x10) x1466)
+(or x1271 x1115)
+(or (not x1168) (not x653))
+(or x582 x313)
+(or (not x634) (not x877))
+(or (not x525) x861)
+(or (not x965) (not x68))
+(or x1061 x1522)
+(or (not x1361) (not x915))
+(or x571 (not x428))
+(or x276 (not x203))
+(or (not x287) x249)
+(or x597 x1318)
+(or (not x1138) x271)
+(or x884 (not x1252))
+(or (not x895) x757)
+(or (not x514) (not x1098))
+(or (not x572) (not x790))
+(or (not x840) x869)
+(or x1579 (not x654))
+(or x127 (not x1432))
+(or (not x1138) x1345)
+(or (not x1217) x329)
+(or (not x730) (not x1005))
+(or (not x428) x558)
+(or (not x858) (not x657))
+(or x245 (not x11))
+(or (not x622) x1070)
+(or (not x846) (not x1414))
+(or (not x1237) x453)
+(or x1322 x93)
+(or x766 x1450)
+(or x1172 x642)
+(or x131 x642)
+(or x162 (not x322))
+(or x1566 x544)
+(or (not x358) (not x604))
+(or (not x1305) x1280)
+(or x1010 x213)
+(or (not x1302) x282)
+(or (not x1223) (not x1460))
+(or x464 (not x381) x1541 x1368 x609 x520)
+(or (not x696) (not x1350))
+(or x944 (not x239))
+(or (not x637) x1525)
+(or x1051 (not x1542))
+(or (not x860) x381)
+(or x970 (not x1217))
+(or x425 (not x1517))
+(or (not x887) (not x692))
+(or (not x1541) (not x609))
+(or (not x154) x670)
+(or x419 (not x1577))
+(or x707 x130)
+(or x1508 x1357)
+(or x1010 x363)
+(or (not x476) (not x410))
+(or (not x270) x1031)
+(or (not x1578) (not x1422))
+(or x1470 x1423)
+(or (not x1270) (not x416))
+(or (not x569) x728)
+(or x721 (not x1568))
+(or x385 (not x383))
+(or (not x515) x914)
+(or (not x914) (not x788) (not x1069) (not x283) x515)
+(or (not x424) x780)
+(or (not x556) x1363)
+(or (not x1372) x1118)
+(or x280 (not x1041))
+(or x906 x105)
+(or x619 (not x1303) x1547)
+(or x1293 x855)
+(or x1315 (not x1118) (not x342) x88)
+(or (not x85) (not x1388))
+(or (not x995) x985)
+(or (not x63) (not x1384))
+(or (not x1392) (not x183))
+(or (not x1477) x1405)
+(or (not x997) x1428)
+(or x882 x279)
+(or x1584 x136)
+(or x1562 (not x1218))
+(or (not x864) x827)
+(or x734 (not x1014) (not x309) (not x721) x1568 (not x226))
+(or x684 (not x620) x159 (not x1075) (not x1498))
+(or x494 x1085)
+(or x943 (not x334) (not x580) (not x182) (not x1137))
+(or x25 x1522)
+(or x610 (not x669))
+(or x947 (not x874))
+(or x1429 (not x904) x1090)
+(or x389 x1251)
+(or (not x1154) (not x1073))
+(or x16 (not x35))
+(or x642 (not x1116))
+(or (not x392) x410 x122 (not x678) x476)
+(or (not x1004) (not x539) x790 (not x351) (not x966))
+(or (not x1453) (not x1559))
+(or (not x1578) (not x822))
+(or (not x814) (not x853))
+(or (not x1005) x982)
+(or (not x1067) (not x649))
+(or x173 (not x533) (not x843))
+(or (not x1381) (not x961))
+(or x928 x302 x21 x994 x1449 (not x993) x319)
+(or x837 x99)
+(or (not x1059) x589)
+(or (not x1278) x1526)
+(or x1433 x1113)
+(or (not x592) (not x282) x204 (not x586) x1178)
+(or (not x1543) (not x490))
+(or (not x272) x361)
+(or (not x959) x1389)
+(or x728 (not x789))
+(or (not x221) x420 x987 x549 x545 (not x673) (not x704) x1415 x667)
+(or (not x655) (not x294))
+(or (not x989) x1436)
+(or (not x525) x213)
+(or (not x1505) (not x278))
+(or (not x1314) (not x1110))
+(or x686 (not x1261))
+(or (not x420) (not x987))
+(or (not x49) (not x461))
+(or x728 (not x1588))
+(or (not x1160) x413)
+(or x810 x1243)
+(or (not x1059) (not x1372))
+(or x1332 (not x872))
+(or (not x1263) x489)
+(or (not x1277) (not x1027) x38 x1274 (not x1390) (not x48) x350 x1098)
+(or x99 (not x1261))
+(or (not x1490) x587)
+(or (not x255) (not x472))
+(or (not x1317) (not x1560))
+(or x377 (not x1052))
+(or x1030 x1304)
+(or (not x878) x1101 x1182 x150)
+(or x1169 x786)
+(or x247 (not x1089))
+(or (not x1415) x1109)
+(or (not x400) (not x481))
+(or x123 x268)
+(or (not x88) x342)
+(or x1527 x113)
+(or (not x648) (not x505))
+(or (not x663) x346)
+(or x1147 (not x1361))
+(or x1561 (not x54))
+(or (not x1447) x1065)
+(or (not x994) (not x1449))
+(or (not x1054) x1570)
+(or (not x420) x414)
+(or x460 x1418)
+(or x200 (not x263))
+(or (not x1306) (not x606))
+(or x421 x384)
+(or (not x1199) (not x1433) (not x1113) x862 x937 x572 (not x500) x138)
+(or (not x747) x559)
+(or x166 (not x551))
+(or x1566 x1186)
+(or x725 (not x143))
+(or (not x1296) (not x856))
+(or x1148 (not x750))
+(or (not x695) (not x1367))
+(or (not x565) x1518)
+(or x729 x243)
+(or x735 (not x482))
+(or (not x107) (not x154))
+(or (not x860) (not x298))
+(or x1193 x546)
+(or x1042 (not x461))
+(or (not x792) (not x1035) (not x589) x1372 x1059 (not x1118))
+(or (not x779) x890)
+(or (not x372) x123)
+(or x842 (not x554))
+(or x1214 (not x617))
+(or x185 (not x1578))
+(or (not x715) x1535)
+(or x1522 (not x1448))
+(or (not x38) x48)
+(or (not x903) (not x431))
+(or (not x525) (not x1211))
+(or (not x418) (not x596))
+(or (not x1576) (not x29) x1210 (not x702) (not x311) (not x1293))
+(or (not x345) (not x980))
+(or x669 x542 (not x610) x1591 (not x176) x1373)
+(or x603 x875)
+(or x1093 (not x896) (not x1247) x1529)
+(or x614 x1401)
+(or (not x31) (not x1394))
+(or x1533 x558)
+(or (not x519) x509)
+(or x15 (not x961))
+(or (not x1549) (not x961))
+(or (not x1067) x584)
+(or x678 x326)
+(or (not x728) (not x1439) x645 x543)
+(or x123 x34)
+(or x1205 x963)
+(or x1475 (not x1164))
+(or x230 (not x398))
+(or x30 (not x423))
+(or (not x520) x1417)
+(or (not x631) x1387)
+(or (not x1192) (not x28))
+(or x1052 x769 (not x1246) (not x1006))
+(or x1277 (not x826))
+(or (not x690) (not x653))
+(or (not x750) x1304)
+(or (not x542) (not x472))
+(or (not x519) x79)
+(or (not x980) (not x724))
+(or x1471 (not x52))
+(or x1028 x1537)
+(or (not x918) (not x1462))
+(or x1576 x1481)
+(or x909 x310)
+(or x326 x58)
+(or x33 (not x1348))
+(or x203 x320 (not x1351) x1096 (not x124))
+(or x1097 x212)
+(or (not x8) x759)
+(or x249 (not x1223))
+(or (not x572) x988)
+(or (not x350) x321)
+(or x856 x973 x1505 x1125)
+(or (not x1209) x913)
+(or x247 (not x497))
+(or (not x749) (not x1253))
+(or x363 x325)
+(or x504 x1213)
+(or x1145 x1028)
+(or x51 x1574)
+(or x1318 x948)
+(or (not x856) (not x1505))
+(or (not x16) x1099)
+(or (not x1179) x582)
+(or x1120 (not x1524))
+(or x1143 x896)
+(or x642 x1470)
+(or (not x225) (not x429))
+(or (not x1478) (not x1052))
+(or x392 (not x1252))
+(or x1156 x978)
+(or x63 x472 x874 (not x1398) (not x972))
+(or (not x483) x762)
+(or x47 (not x989))
+(or x188 x1517)
+(or (not x969) (not x718))
+(or x1384 (not x130))
+(or (not x183) (not x437))
+(or x365 (not x556))
+(or (not x895) (not x891))
+(or (not x937) x500)
+(or (not x1434) (not x806))
+(or (not x984) x674)
+(or (not x648) x530)
+(or (not x1267) (not x278))
+(or x120 (not x564))
+(or (not x873) x1269)
+(or (not x1297) (not x252))
+(or (not x1589) (not x592) x303)
+(or (not x1527) x480 (not x639))
+(or (not x1179) (not x190))
+(or (not x882) x1212 x717 x708 (not x563))
+(or x250 x208)
+(or (not x296) (not x1386))
+(or (not x862) x1153)
+(or (not x633) x576)
+(or (not x1143) (not x70))
+(or x1340 (not x490))
+(or x607 x726)
+(or x1229 x512)
+(or x226 x1226)
+(or (not x1596) x1452)
+(or (not x278) (not x406))
+(or (not x312) x171)
+(or (not x1138) (not x492))
+(or x1366 (not x1144))
+(or x1248 (not x1))
+(or (not x999) x202)
+(or (not x280) (not x281) x648 x461 (not x1042) x31)
+(or x1012 (not x1377))
+(or (not x774) (not x19))
+(or (not x187) x1427)
+(or x1082 (not x466))
+(or (not x543) x1439)
+(or x1510 (not x38))
+(or x1011 x1390)
+(or x1571 x426)
+(or (not x406) x389)
+(or x167 x1114 x588 (not x228) (not x1522) x469)
+(or x728 x701)
+(or (not x1095) (not x1368))
+(or x496 x1351)
+(or x786 x512)
+(or x677 (not x203))
+(or (not x1372) x792)
+(or (not x986) x193)
+(or x153 (not x183))
+(or x424 x626)
+(or (not x629) (not x862))
+(or x381 (not x1541))
+(or (not x787) x812)
+(or (not x1512) x1482)
+(or x15 (not x683))
+(or x73 (not x1047))
+(or (not x1108) (not x615))
+(or x865 x849)
+(or x403 (not x225))
+(or x22 (not x347) (not x1396) (not x1273) x89)
+(or (not x20) x1374)
+(or (not x1532) (not x1007))
+(or x882 (not x472))
+(or (not x1180) x848)
+(or (not x775) x509)
+(or (not x1191) (not x604))
+(or (not x1067) x1135)
+(or x199 x810)
+(or (not x784) (not x301) (not x1571) x1364 x423 x1499)
+(or x817 (not x171) (not x751) (not x1469))
+(or (not x265) x916)
+(or (not x41) (not x820))
+(or (not x596) x1333)
+(or (not x770) (not x253))
+(or x991 (not x637))
+(or (not x994) (not x319))
+(or (not x616) (not x539) x239 (not x1498) x1413)
+(or x988 (not x449))
+(or x1555 x890)
+(or x47 (not x437))
+(or x92 (not x811))
+(or (not x945) (not x1309))
+(or x307 (not x863))
+(or x1206 (not x1414))
+(or (not x1529) (not x1093))
+(or x1106 (not x1483))
+(or x905 x1012)
+(or x1586 x152)
+(or (not x1394) (not x1564))
+(or (not x596) x828)
+(or (not x1591) x795)
+(or (not x401) x1594)
+(or (not x775) (not x157))
+(or (not x72) (not x388))
+(or (not x143) x1003)
+(or (not x547) (not x60))
+(or (not x881) x1389)
+(or (not x474) (not x513))
+(or (not x455) (not x652))
+(or (not x987) x673)
+(or x500 (not x429))
+(or x1003 x593)
+(or (not x1531) (not x312))
+(or (not x367) (not x340))
+(or (not x1549) (not x980))
+(or (not x933) (not x910))
+(or x370 x587)
+(or (not x1557) x36)
+(or x1139 (not x328))
+(or x1120 x1092)
+(or (not x219) x917)
+(or x1205 (not x1451))
+(or (not x510) (not x868))
+(or (not x1447) (not x945))
+(or (not x255) (not x1180))
+(or (not x1442) (not x1016))
+(or (not x1301) x433)
+(or x221 x164)
+(or (not x1554) x1032)
+(or (not x133) x686)
+(or (not x163) (not x908))
+(or x837 (not x668))
+(or x424 x1273)
+(or x90 (not x590))
+(or x650 x1507)
+(or x1242 x66)
+(or x800 (not x100))
+(or x1522 x1408)
+(or x544 (not x1064))
+(or (not x864) x73)
+(or x1307 (not x270))
+(or (not x1180) x909)
+(or (not x908) (not x451))
+(or (not x1108) x1522)
+(or (not x187) x1109)
+(or (not x627) (not x452))
+(or x1382 (not x94))
+(or x938 x1023)
+(or x967 (not x787))
+(or (not x1007) (not x1392))
+(or x1284 (not x291))
+(or (not x1536) x1266)
+(or (not x1559) (not x190))
+(or (not x1200) x922)
+(or x1571 (not x475))
+(or x1481 x407)
+(or (not x1559) (not x1503))
+(or (not x291) x135)
+(or x702 x771)
+(or x25 x1061)
+(or x182 (not x943))
+(or x325 x171)
+(or (not x855) x1281)
+(or x1580 (not x564))
+(or (not x915) (not x1108))
+(or (not x708) (not x717))
+(or (not x1125) (not x973))
+(or (not x1459) x342)
+(or (not x1033) x938)
+(or x253 (not x360) (not x1004) x984)
+(or x1001 (not x1221) (not x1441) x1257 x125)
+(or x1266 (not x1025))
+(or x1286 (not x220))
+(or x978 (not x391))
+(or x1184 (not x986))
+(or x1506 x1561)
+(or (not x933) x894)
+(or x300 (not x304))
+(or (not x155) (not x21))
+(or (not x42) (not x219))
+(or (not x52) (not x382))
+(or (not x85) (not x1515))
+(or x1156 (not x1052))
+(or (not x461) x1450)
+(or (not x297) x148)
+(or (not x700) (not x525))
+(or x1161 x1408)
+(or (not x64) x236)
+(or x956 x995 x483 x623 (not x985) x979 x549 (not x1032) (not x1293))
+(or (not x903) (not x1547))
+(or (not x1486) x685)
+(or x875 (not x634))
+(or x1470 (not x645))
+(or (not x187) (not x779))
+(or x871 x4 x1025 x1424)
+(or x44 (not x181))
+(or (not x279) x323 x958)
+(or x1441 (not x1432))
+(or x1445 (not x372))
+(or x1086 x1362)
+(or (not x437) x364)
+(or x1527 x639)
+(or x1396 x289)
+(or (not x1173) (not x1422))
+(or x948 (not x1045))
+(or (not x618) x221)
+(or (not x1292) x992)
+(or (not x490) (not x1151))
+(or x812 (not x1158))
+(or (not x1144) x584)
+(or x581 x460)
+(or (not x1434) (not x1055))
+(or x792 x116)
+(or x1423 x394)
+(or x1050 (not x1595))
+(or (not x1124) x1091)
+(or (not x787) x90)
+(or x1259 (not x464))
+(or (not x76) x229)
+(or (not x165) x1509)
+(or x72 (not x1171))
+(or x1189 (not x897))
+(or x581 (not x455))
+(or x363 x849)
+(or (not x117) x419)
+(or (not x983) x58)
+(or (not x187) (not x1067))
+(or x1396 x99)
+(or (not x520) (not x1541))
+(or x249 x1391)
+(or x422 x1321)
+(or (not x350) x1027)
+(or (not x1069) x839 x1019)
+(or (not x888) x682)
+(or (not x459) x6)
+(or x57 x537)
+(or (not x654) x785)
+(or x913 x1508)
+(or (not x502) (not x1022))
+(or (not x475) x324)
+(or (not x183) x1400)
+(or (not x741) (not x49))
+(or x1347 x1332)
+(or x1439 x737)
+(or x793 (not x553))
+(or (not x549) (not x1268))
+(or (not x903) x148)
+(or x762 (not x1233))
+(or (not x692) (not x573))
+(or (not x187) x389)
+(or x1398 (not x115))
+(or x1319 x517)
+(or x365 x924)
+(or (not x1098) (not x350))
+(or x844 x1458)
+(or x92 (not x345))
+(or (not x1592) (not x410))
+(or (not x1315) x1205)
+(or (not x1149) x1043)
+(or x226 (not x1568))
+(or x389 (not x935))
+(or x208 x585)
+(or (not x568) x638)
+(or (not x291) x807)
+(or x614 (not x386))
+(or x1080 x650)
+(or x127 x368)
+(or x733 (not x68))
+(or (not x219) x36)
+(or (not x646) x137)
+(or (not x888) (not x1067))
+(or (not x233) x1336)
+(or x1389 x721)
+(or x324 x865)
+(or x1581 (not x111))
+(or x1251 x240)
+(or (not x1241) (not x1378))
+(or x562 (not x290))
+(or (not x1463) x1482)
+(or x1562 (not x548))
+(or (not x487) (not x398))
+(or x310 x1085)
+(or x337 x747)
+(or x205 x1452)
+(or x421 (not x822))
+(or x1272 x126)
+(or (not x1488) (not x256))
+(or x1053 x46)
+(or (not x603) (not x843) (not x307) (not x1042) (not x498) x1261)
+(or (not x1483) x387)
+(or x172 (not x27))
+(or (not x276) x1033 x765 (not x809) (not x1520) x203 (not x677))
+(or x582 x605)
+(or x213 x365)
+(or (not x86) x37)
+(or (not x749) x1519)
+(or x310 (not x950))
+(or x1215 (not x96) x288)
+(or (not x549) (not x553))
+(or (not x1541) (not x464))
+(or (not x802) (not x995))
+(or (not x1487) x1476)
+(or x128 (not x1567) x1096)
+(or (not x315) x80)
+(or (not x201) (not x574))
+(or x1586 x689)
+(or x90 x685)
+(or x90 x1500)
+(or (not x550) (not x994))
+(or (not x1158) x850)
+(or (not x956) x658)
+(or x785 (not x935))
+(or (not x1241) (not x412))
+(or x266 x314)
+(or (not x451) (not x288))
+(or (not x614) x386 x1464 (not x1295) (not x641))
+(or (not x805) x614)
+(or x307 x498)
+(or (not x648) (not x1157))
+(or (not x1190) x119)
+(or (not x142) x313)
+(or (not x179) x608)
+(or (not x224) x562)
+(or x1475 (not x1021))
+(or (not x1192) x23)
+(or x1474 (not x1116))
+(or x865 (not x538))
+(or (not x622) (not x220))
+(or (not x163) (not x1364))
+(or (not x1124) x72)
+(or x679 x1109)
+(or x1272 x1338)
+(or x1085 x1208)
+(or x1161 x778)
+(or (not x1292) x1566)
+(or (not x1181) (not x1501))
+(or x92 (not x1386))
+(or (not x827) x864 (not x1248))
+(or x804 x836 (not x740) (not x283))
+(or (not x841) (not x968))
+(or (not x755) x1073 (not x896) (not x1143))
+(or x344 (not x42))
+(or x162 (not x1513))
+(or (not x52) (not x308))
+(or x1400 (not x1255))
+(or (not x1055) (not x806))
+(or x1313 (not x1261))
+(or (not x217) x1172)
+(or x534 x132)
+(or (not x121) (not x1413))
+(or (not x588) (not x167))
+(or x1519 x1430)
+(or x691 (not x1558))
+(or x1516 x1307)
+(or (not x1178) (not x1513))
+(or (not x940) (not x1509) x77 (not x164) (not x221))
+(or (not x1306) (not x832))
+(or x485 (not x1111) x179 (not x608))
+(or (not x187) x936)
+(or (not x1072) (not x717))
+(or (not x353) x299)
+(or (not x382) (not x862))
+(or x1339 (not x438))
+(or (not x1448) x1376)
+(or x44 x503)
+(or (not x328) x1491)
+(or x401 x846 (not x675))
+(or x774 x398 x19 x507)
+(or (not x633) (not x297))
+(or (not x1326) (not x613))
+(or (not x1288) (not x352))
+(or x1086 (not x703))
+(or (not x325) x312 (not x171) x1084)
+(or (not x1000) (not x490))
+(or (not x1017) x1266)
+(or x276 (not x765))
+(or (not x819) x671)
+(or (not x1394) x61)
+(or (not x1285) (not x288))
+(or (not x1190) x581)
+(or x132 x1273)
+(or (not x504) (not x1572) (not x1213) x447 (not x127) (not x396))
+(or (not x1) x886)
+(or x1076 x1427)
+(or x403 x1489)
+(or (not x1496) (not x1220))
+(or x771 x562)
+(or x521 x922)
+(or (not x887) x709)
+(or (not x984) x559)
+(or x616 x1498)
+(or (not x290) x733)
+(or (not x1094) x831 (not x658))
+(or x939 x1082)
+(or (not x10) x1371)
+(or (not x441) (not x348))
+(or (not x1241) (not x1072))
+(or x533 (not x824))
+(or (not x1343) (not x1358))
+(or (not x887) x419)
+(or (not x1239) (not x1463))
+(or (not x438) x1203)
+(or (not x881) x681)
+(or x325 (not x1292))
+(or x703 x448 (not x1051) x519 (not x666) x646)
+(or (not x322) x1567)
+(or (not x275) (not x1443))
+(or x1120 x1172)
+(or (not x1132) (not x308))
+(or x1457 x1437)
+(or (not x714) x387)
+(or (not x932) x1251)
+(or x1014 x721)
+(or x1142 (not x412))
+(or (not x69) x784)
+(or x1284 x610)
+(or (not x1007) x205)
+(or (not x959) x30)
+(or (not x1543) x799)
+(or (not x461) (not x31))
+(or (not x804) x1147)
+(or (not x308) x1489)
+(or (not x779) (not x304))
+(or x162 x576)
+(or (not x946) x1363)
+(or (not x1177) x740)
+(or (not x1263) (not x10))
+(or x1405 (not x42))
+(or x1080 x110)
+(or (not x1216) x57)
+(or x890 (not x366))
+(or x1074 (not x1324))
+(or (not x1484) (not x1443))
+(or x1080 (not x1560))
+(or (not x554) (not x653))
+(or x1293 (not x979))
+(or (not x1158) x237)
+(or (not x609) x1522)
+(or (not x16) (not x1359))
+(or x1219 x1081)
+(or (not x863) x93)
+(or (not x107) (not x380))
+(or (not x1486) x711)
+(or (not x1558) (not x1539))
+(or x867 x1074)
+(or x1538 (not x1060))
+(or x632 (not x430))
+(or x963 x1351)
+(or (not x547) x210)
+(or (not x5) x25)
+(or (not x660) (not x622))
+(or x1454 x753)
+(or (not x1114) x200)
+(or x1404 (not x630) x155 x1025 (not x1131) x1183)
+(or (not x617) (not x1211))
+(or (not x316) x1555)
+(or x603 x1452)
+(or x136 x785)
+(or (not x194) (not x412))
+(or (not x480) (not x1093))
+(or (not x973) (not x52))
+(or (not x417) x1341)
+(or (not x1268) x1555)
+(or x1111 (not x531))
+(or x1301 x26)
+(or x725 x1202)
+(or (not x789) x1585)
+(or (not x1315) (not x88))
+(or (not x1022) (not x1056))
+(or x1227 x475 (not x647) (not x324))
+(or x1338 (not x1055))
+(or x674 x758)
+(or x12 (not x621))
+(or x107 (not x293) (not x991) (not x861))
+(or (not x996) x419)
+(or (not x13) (not x1122))
+(or (not x1164) (not x497))
+(or (not x1298) x700)
+(or (not x839) (not x1019))
+(or (not x78) (not x1314))
+(or (not x1022) x1065)
+(or x1303 x427)
+(or (not x156) (not x1497))
+(or (not x546) (not x286))
+(or (not x323) (not x1493))
+(or x232 (not x1201))
+(or x936 x46)
+(or (not x834) (not x433))
+(or x102 (not x577))
+(or x57 x508)
+(or (not x438) x731)
+(or x161 (not x217))
+(or (not x443) x745 (not x798) (not x1313))
+(or x1013 (not x741))
+(or (not x891) (not x1479))
+(or (not x5) (not x684))
+(or (not x167) (not x1114))
+(or (not x1154) x1221)
+(or (not x443) (not x738) x596 x1497 (not x1018) (not x567) (not x686) x133)
+(or x1482 (not x516))
+(or (not x38) x40)
+(or (not x814) x1489)
+(or x470 x849)
+(or x1030 x748)
+(or x810 x571)
+(or x537 (not x612))
+(or (not x852) (not x114))
+(or x825 x1347)
+(or (not x203) (not x1033))
+(or x1097 (not x340))
+(or x981 (not x1255))
+(or x1358 (not x307) (not x93) x863)
+(or (not x743) (not x391))
+(or (not x852) x682)
+(or x67 (not x657))
+(or x1063 (not x328))
+(or (not x1196) x1556)
+(or (not x1531) (not x814))
+(or (not x343) (not x157))
+(or (not x233) (not x975))
+(or x1286 (not x507))
+(or (not x400) (not x122))
+(or x1139 (not x859))
+(or (not x412) (not x1171))
+(or (not x987) (not x1278))
+(or x593 x1135)
+(or (not x1225) (not x789))
+(or (not x910) x685)
+(or (not x854) (not x568))
+(or x1103 (not x1460))
+(or (not x980) (not x961))
+(or x246 x354)
+(or (not x297) (not x32))
+(or x498 x305)
+(or (not x937) (not x1440))
+(or x445 x206)
+(or (not x787) x1418)
+(or x208 x1336)
+(or x1186 x544)
+(or (not x1374) x718 x928 x371 x971 x20)
+(or (not x1512) x1526)
+(or (not x252) x499)
+(or (not x1127) (not x805))
+(or x1491 x1063)
+(or (not x139) x1130)
+(or x710 x740)
+(or x810 x282)
+(or (not x996) (not x157))
+(or (not x622) x286)
+(or x1452 x491)
+(or x690 x1196 x653 (not x1556))
+(or x171 x691)
+(or (not x857) (not x178))
+(or (not x281) x1107 (not x161) x495 x1568 x217)
+(or (not x1211) (not x602))
+(or (not x708) x882)
+(or (not x1116) (not x1543))
+(or x1229 x15)
+(or x471 (not x1296))
+(or (not x284) (not x665))
+(or (not x288) (not x951))
+(or x710 (not x125))
+(or x651 (not x687))
+(or x1102 (not x1368))
+(or x339 (not x62))
+(or x508 x539)
+(or x509 x861)
+(or x236 x723)
+(or (not x797) (not x1479))
+(or x193 x381)
+(or (not x441) x1301)
+(or (not x1569) (not x655))
+(or (not x362) x518)
+(or (not x391) (not x1047))
+(or (not x1505) x892)
+(or x1265 x1018)
+(or x833 x116)
+(or x666 x689)
+(or x736 x1203)
+(or x1065 x458)
+(or (not x1407) (not x600))
+(or (not x1403) (not x1106) x847 x380)
+(or (not x1250) (not x459))
+(or (not x1524) x929)
+(or (not x1406) x340 x408 (not x84))
+(or x833 (not x1305))
+(or x2 x731)
+(or (not x684) x1126)
+(or (not x181) (not x390))
+(or x793 x344)
+(or x234 (not x918))
+(or x161 (not x1564))
+(or x970 (not x304))
+(or (not x1290) (not x1517))
+(or (not x367) (not x1107))
+(or x1562 (not x71))
+(or x614 (not x619))
+(or x1550 x1277)
+(or x280 (not x31))
+(or x761 x1419 x969 x369 x718)
+(or (not x971) x771)
+(or (not x5) x339)
+(or x336 (not x999))
+(or (not x1000) (not x495))
+(or (not x623) x985)
+(or (not x765) x1520)
+(or x534 (not x254))
+(or (not x1590) (not x235))
+(or x758 x414)
+(or x436 (not x1232))
+(or x1319 x1051)
+(or x1082 (not x1515))
+(or (not x1422) x1430)
+(or x174 x685)
+(or (not x629) x1338)
+(or (not x400) (not x834))
+(or (not x343) x1352)
+(or x679 (not x1541))
+(or x1316 x838)
+(or x738 x196)
+(or (not x594) x39)
+(or x681 (not x1174))
+(or x331 x829)
+(or x1507 x92)
+(or (not x1007) x478)
+(or x527 x118)
+(or (not x736) (not x1203) (not x1076) (not x1374) (not x1304))
+(or x378 (not x750))
+(or x307 x93)
+(or (not x350) x944)
+(or x494 (not x787))
+(or (not x541) x258)
+(or (not x522) x427)
+(or (not x177) (not x683))
+(or (not x695) (not x569))
+(or (not x323) (not x31))
+(or x815 x822 x802 x1378 (not x1580) x141 (not x499) x1588 (not x508) x252)
+(or x509 (not x946))
+(or (not x72) x1171 x412 x1241 (not x1142))
+(or x1425 (not x296))
+(or (not x1130) x1159 x787 x943 (not x1418) (not x494) (not x1085) (not x460) (not x257))
+(or (not x468) x35)
+(or (not x1083) (not x1167))
+(or (not x1098) x1277)
+(or x1199 (not x862))
+(or x1109 x1594)
+(or x1102 (not x167))
+(or x501 (not x264))
+(or (not x140) x516 x264 (not x1009))
+(or (not x21) (not x994))
+(or (not x1021) (not x1227))
+(or (not x420) (not x667))
+(or x793 (not x42))
+(or x1357 x321)
+(or x246 x581)
+(or (not x1174) x55)
+(or x226 (not x741))
+(or x61 x93)
+(or x389 (not x1209))
+(or (not x687) (not x912))
+(or (not x1005) x1003)
+(or x1340 x900)
+(or x1319 (not x101))
+(or x354 x195)
+(or (not x826) (not x483))
+(or x1371 x1038)
+(or x815 x218 (not x647) x1062 (not x419) x117)
+(or x307 (not x1261))
+(or x295 x667 x724 (not x678))
+(or x1212 x1479 (not x1078) x1245)
+(or (not x1582) x1204)
+(or (not x958) x1333)
+(or (not x596) x704)
+(or (not x1138) (not x1448))
+(or (not x1317) (not x1504))
+(or (not x27) (not x420))
+(or (not x1160) x1291)
+(or x1291 x339)
+(or x71 x548 (not x1562) x303 (not x1079))
+(or (not x330) (not x853))
+(or x144 x1284)
+(or (not x267) (not x87))
+(or x939 x368)
+(or (not x994) (not x860))
+(or x530 (not x1407))
+(or x110 (not x1267))
+(or (not x1497) (not x596))
+(or (not x21) x993)
+(or x1321 x710)
+(or x347 x344)
+(or (not x627) x757)
+(or (not x490) x628)
+(or x915 x356 x627 (not x1078) (not x334) (not x757))
+(or x731 (not x864))
+(or x297 x633 (not x576) (not x651) (not x216))
+(or (not x509) (not x1548) x1531 (not x359) x519 (not x79))
+(or x993 (not x319))
+(or (not x819) (not x1392))
+(or x1470 (not x1592))
+(or x24 x1028)
+(or x149 (not x1258))
+(or x1069 (not x1019))
+(or x1579 x838)
+(or (not x550) (not x790))
+(or (not x1036) (not x1440))
+(or (not x690) x1556)
+(or x733 x922)
+(or (not x417) x625)
+(or (not x456) x575)
+(or x1383 x1242)
+(or (not x1125) x1234)
+(or x778 x1117)
+(or x174 (not x822))
+(or x626 x132)
+(or x1322 x1121)
+(or (not x997) (not x7))
+(or (not x28) (not x1494))
+(or x1519 (not x1300))
+(or x1028 (not x239))
+(or x359 (not x1327))
+(or x193 x867)
+(or x491 x1262)
+(or x376 (not x1444))
+(or x465 x1015)
+(or x1519 x1523)
+(or x1544 x659)
+(or x934 x486)
+(or x1594 x1147)
+(or x702 (not x609))
+(or (not x270) (not x520))
+(or x105 (not x790))
+(or (not x371) (not x971))
+(or x947 x955)
+(or x1510 x47)
+(or (not x783) (not x1016))
+(or (not x1300) x829)
+(or x274 (not x836))
+(or (not x980) (not x618))
+(or (not x1299) (not x1047))
+(or (not x204) (not x1178))
+(or (not x1317) x579)
+(or x95 x635)
+(or x283 x914)
+(or x1079 x148)
+(or x546 x744)
+(or x1567 (not x1096))
+(or (not x606) (not x294))
+(or (not x823) (not x1144))
+(or x47 x739)
+(or (not x927) x952)
+(or x527 x1198)
+(or (not x652) (not x764))
+(or x361 x578)
+(or (not x87) x651)
+(or x299 x940)
+(or (not x927) x1400)
+(or (not x167) x228)
+(or (not x32) x148)
+(or (not x1241) x72)
+(or (not x839) x1567)
+(or (not x1015) (not x1240) (not x1091) x1407 (not x2))
+(or x1153 (not x1335))
+(or (not x954) x921)
+(or x499 x921)
+(or (not x1274) (not x604))
+(or x1070 x425)
+(or x232 (not x841))
+(or x941 (not x964))
+(or (not x1356) x1096)
+(or x1251 (not x406))
+(or x348 x441)
+(or x1246 x46)
+(or (not x1121) x433 (not x1243))
+(or x1058 (not x1114))
+(or x892 (not x1231))
+(or x273 x1039)
+(or (not x1413) x1389)
+(or x1086 (not x692))
+(or x1435 (not x1352) x1192 x1122 x555)
+(or (not x228) x485 x1434 (not x1436) x139)
+(or (not x1484) (not x694))
+(or x647 x1566)
+(or (not x752) x1514)
+(or x379 x512)
+(or x113 x18)
+(or x131 (not x1490))
+(or x478 (not x1305))
+(or (not x56) x33)
+(or (not x1190) (not x1404))
+(or x723 (not x404))
+(or x901 x842)
+(or x15 (not x464))
+(or (not x181) x168)
+(or x1400 (not x437))
+(or x1054 x294 (not x1481) x1254 (not x919))
+(or (not x669) (not x834))
+(or (not x1424) (not x1528))
+(or x245 x110)
+(or x900 x1013)
+(or (not x1254) x1481)
+(or x248 x1342)
+(or x1219 (not x831))
+(or x124 x444)
+(or x639 (not x447))
+(or x246 x463)
+(or (not x820) (not x590))
+(or (not x464) (not x1114))
+(or x765 x1237 (not x425) (not x1070))
+(or x1379 x262)
+(or x1018 x686)
+(or x148 x1342)
+(or x809 (not x1033))
+(or (not x734) x1014)
+(or x761 (not x314))
+(or x1205 (not x1151))
+(or (not x1355) x1170 x920)
+(or x1322 x1470)
+(or (not x374) x80)
+(or x580 x1430)
+(or (not x962) x95)
+(or (not x684) x479)
+(or x748 (not x918))
+(or x636 x1117)
+(or (not x951) x1234)
+(or (not x1549) (not x1415))
+(or (not x417) (not x1542))
+(or x1082 x1418)
+(or (not x270) (not x253))
+(or (not x198) x30)
+(or x1345 x276)
+(or (not x943) x1418)
+(or x664 x171)
+(or x829 x974)
+(or x1382 (not x724))
+(or (not x983) (not x1412))
+(or (not x215) (not x369))
+(or x1597 (not x1486))
+(or x1156 (not x1260))
+(or (not x1154) x1050)
+(or (not x1472) (not x1534))
+(or (not x1412) x58)
+(or x1384 (not x473) x63 (not x465) (not x1015))
+(or (not x260) (not x222))
+(or x1533 x148)
+(or x153 (not x1253))
+(or x835 (not x1359))
+(or x988 x132)
+(or (not x317) (not x987))
+(or (not x606) x3)
+(or x913 (not x4))
+(or x1561 (not x553))
+(or x137 (not x526))
+(or x929 (not x652))
+(or (not x1001) (not x895))
+(or x662 (not x703))
+(or x491 (not x637))
+(or x1385 x213)
+(or x1165 x1408)
+(or (not x1182) x385)
+(or (not x229) x76 x335 x772 x999 (not x336))
+(or (not x495) (not x1568))
+(or (not x27) x1229)
+(or (not x787) (not x1159))
+(or (not x32) (not x1353))
+(or (not x456) x149)
+(or (not x754) (not x320))
+(or (not x637) (not x787))
+(or x566 x846 (not x782) (not x524))
+(or (not x31) x61)
+(or x1355 (not x1170))
+(or (not x353) (not x1177))
+(or (not x954) x1265)
+(or x394 (not x1435))
+(or x675 x1145)
+(or x721 x57)
+(or x120 (not x996))
+(or x1555 x229)
+(or (not x1478) x768)
+(or x736 (not x21))
+(or x742 x1272)
+(or x47 (not x11))
+(or (not x315) (not x1124))
+(or (not x189) (not x826))
+(or x664 (not x519))
+(or x1208 (not x1592))
+(or x626 (not x1442))
+(or x329 (not x1185))
+(or x900 x628)
+(or x947 (not x1328))
+(or x801 (not x1000))
+(or (not x1040) x531 (not x607))
+(or x389 (not x1185))
+(or (not x472) (not x874))
+(or (not x989) (not x167))
+(or x724 x94 (not x1382))
+(or (not x1297) x1395)
+(or (not x542) (not x618))
+(or x878 (not x150))
+(or x570 (not x1188))
+(or x1329 (not x987))
+(or (not x204) (not x416))
+(or (not x464) x381)
+(or x1540 (not x345))
+(or (not x1033) (not x1294))
+(or (not x1041) x407)
+(or x1148 x1520)
+(or (not x1504) x721)
+(or x2 (not x1407))
+(or (not x1324) (not x1036))
+(or (not x122) x1262)
+(or (not x430) (not x817))
+(or (not x1458) (not x197))
+(or (not x1447) x318)
+(or (not x1330) (not x853))
+(or (not x1260) (not x1364))
+(or (not x433) x1243)
+(or x641 x693)
+(or (not x1564) x305)
+(or (not x1114) x1522)
+(or (not x976) (not x296))
+(or x1482 (not x353))
+(or x524 x1482)
+(or x766 (not x648))
+(or x878 x123)
+(or (not x192) x838)
+(or x809 (not x765))
+(or (not x1002) x500)
+(or x986 (not x193) x860 x446 x624 (not x381) (not x1031))
+(or (not x550) x906)
+(or (not x1087) x643)
+(or x593 (not x852))
+(or x1222 (not x257) (not x250) (not x354))
+(or x489 (not x476))
+(or (not x1159) x1130)
+(or x809 x276)
+(or x445 x1027)
+(or x807 (not x218))
+(or (not x179) x1238)
+(or (not x1453) x313)
+(or x755 x1143)
+(or (not x1515) x911)
+(or (not x1098) x6)
+(or x1073 x1154 (not x885))
+(or (not x1592) x1423)
+(or x966 (not x1072))
+(or (not x1048) (not x1428) x482 (not x735) (not x1128))
+(or x1172 (not x142))
+(or (not x60) x347)
+(or x739 (not x490))
+(or (not x352) x426)
+(or (not x77) x940)
+(or x971 (not x850) (not x311))
+(or x450 (not x1132))
+(or (not x256) (not x668))
+(or (not x137) x1440 x552)
+(or x1370 (not x613))
+(or x2 x1015)
+(or (not x862) x1113)
+(or (not x438) (not x864))
+(or x800 x582)
+(or (not x231) x584)
+(or (not x161) x912 x145 x687)
+(or (not x1196) (not x439))
+(or (not x983) (not x440))
+(or (not x600) x760)
+(or x381 (not x624))
+(or x221 x704)
+(or x1075 (not x1033))
+(or (not x692) x557)
+(or x981 (not x717))
+(or x900 x385)
+(or (not x186) x535)
+(or (not x1114) (not x588))
+(or (not x845) (not x1164))
+(or (not x1037) (not x1479))
+(or x1425 x884)
+(or x1164 (not x1042) (not x1475) x1176)
+(or x528 (not x1431))
+(or x403 (not x1503))
+(or (not x75) x193)
+(or x1242 x329)
+(or (not x968) x1204)
+(or (not x1292) x966)
+(or (not x1541) x1576)
+(or (not x1364) x301)
+(or (not x164) (not x1561) (not x102) (not x241) x577 (not x1506) x553)
+(or (not x41) x744)
+(or x565 x931 (not x223))
+(or x1374 (not x386))
+(or (not x1402) (not x699))
+(or (not x61) x1373)
+(or x1481 x414)
+(or x426 (not x1288))
+(or (not x455) (not x1350))
+(or x124 x310)
+(or (not x207) (not x341))
+(or (not x45) x534)
+(or (not x1207) x243)
+(or (not x27) (not x337))
+(or (not x1551) x1074)
+(or x339 (not x1160))
+(or x816 x1389)
+(or x701 (not x487))
+(or x716 (not x84) x1171 x1587)
+(or x127 x396)
+(or (not x954) x1333)
+(or x998 x757)
+(or (not x302) (not x741))
+(or (not x434) x1545)
+(or x1390 x1109)
+(or (not x430) x149)
+(or x1103 (not x770))
+(or x1234 x991)
+(or x1594 (not x1361))
+(or (not x763) x1535)
+(or (not x996) x384)
+(or x326 (not x1412))
+(or x535 (not x1167))
+(or x1526 (not x987))
+(or (not x522) (not x52))
+(or x758 (not x706))
+(or x250 (not x653))
+(or (not x1438) (not x759) x1314)
+(or x110 x1544)
+(or (not x1553) x415)
+(or (not x548) (not x1327))
+(or (not x369) (not x761))
+(or x1280 (not x1034))
+(or (not x1177) x1140)
+(or x988 (not x996))
+(or (not x1258) (not x1124))
+(or x1213 x305)
+(or (not x1157) x364)
+(or x305 x266)
+(or (not x1583) (not x1053) (not x46))
+(or x1400 x981)
+(or (not x547) (not x962))
+(or (not x629) (not x790))
+(or (not x8) x1321)
+(or (not x449) x120)
+(or (not x1000) (not x1220))
+(or x1289 x762)
+(or x1478 (not x1120) x1524 x1596 (not x768) x561)
+(or x585 (not x1541))
+(or (not x1327) x939)
+(or x136 (not x391))
+(or (not x1167) x729)
+(or x96 x1131)
+(or x379 (not x923))
+(or (not x1025) x1131)
+(or (not x476) x39)
+(or (not x841) x639)
+(or (not x1160) (not x969))
+(or x906 x1416)
+(or x1129 (not x1559))
+(or x25 (not x1160))
+(or x36 x793)
+(or x250 (not x1222))
+(or (not x797) (not x1200))
+(or x913 (not x836))
+(or x681 x1474)
+(or x471 (not x65))
+(or (not x1028) x1257 (not x1537))
+(or x1576 x1293)
+(or (not x379) (not x1020) (not x1467) (not x1338) (not x212) (not x1097))
+(or x869 x727)
+(or x1467 x1020)
+(or x1011 (not x622))
+(or x1044 x825)
+(or x778 (not x615))
+(or (not x75) x778)
+(or x80 x1393)
+(or x951 x866 x986 x946)
+(or (not x1002) x236)
+(or x612 (not x767) (not x537))
+(or x378 (not x1195))
+(or x1502 (not x1072))
+(or (not x1536) (not x1141))
+(or (not x1314) x129)
+(or x993 x1520)
+(or (not x173) x756)
+(or (not x644) (not x1122))
+(or (not x604) x662)
+(or (not x68) (not x1595))
+(or x254 x1359 (not x534) x89)
+(or (not x488) (not x1306))
+(or x1304 x1374)
+(or (not x820) (not x65))
+(or x491 (not x468))
+(or (not x316) (not x277))
+(or x174 (not x1443))
+(or (not x1154) (not x565))
+(or (not x356) (not x627))
+(or (not x296) x17)
+(or (not x894) x265 (not x331))
+(or (not x767) x1149 x1300)
+(or (not x180) (not x300) x304)
+(or (not x949) x1397)
+(or x286 x1011)
+(or x607 (not x42))
+(or (not x935) (not x1392))
+(or (not x577) (not x545))
+(or (not x420) (not x337))
+(or (not x910) (not x1462))
+(or x985 x1104)
+(or x575 x662)
+(or (not x1404) (not x155))
+(or x1550 x364)
+(or (not x1424) x1119)
+(or x385 x813)
+(or x719 (not x1256))
+(or (not x652) x182)
+(or x672 (not x676))
+(or (not x1132) (not x522))
+(or (not x1513) (not x322))
+(or (not x445) (not x1027) (not x838) (not x1579) (not x206) (not x936))
+(or (not x769) (not x1052))
+(or x205 x1313)
+(or x1385 x477)
+(or (not x810) x1344 (not x135) x104 (not x144))
+(or (not x808) (not x980))
+(or (not x472) (not x63))
+(or (not x251) x1123)
+(or (not x1577) x424)
+(or (not x493) x1421)
+(or x642 x1092)
+(or (not x54) x512)
+(or x813 (not x165))
+(or x840 x599)
+(or (not x894) x431 (not x1495))
+(or (not x316) (not x1268))
+(or (not x1287) x100 x376 x1294)
+(or (not x49) x1516)
+(or (not x477) (not x1385) x349)
+(or x37 x57)
+(or x791 x1352)
+(or x1269 x1356)
+(or (not x1209) x1337)
+(or x186 x1496 x1220 x1000 (not x1511) (not x792))
+(or x15 x414)
+(or (not x872) (not x1178))
+(or (not x526) (not x480))
+(or x1325 x1411)
+(or (not x54) x379)
+(or (not x1223) (not x926))
+(or x500 (not x550))
+(or x450 (not x931))
+(or x283 x40)
+(or x381 (not x520))
+(or x168 x1369)
+(or (not x472) x1502)
+(or x1325 x1466)
+(or (not x1447) (not x487))
+(or (not x566) x782)
+(or x1504 x1317 x1578 (not x579) (not x1544))
+(or x970 x329)
+(or (not x483) (not x1595))
+(or x1473 (not x1490))
+(or x1063 (not x383))
+(or x210 (not x13))
+(or (not x154) x641)
+(or (not x456) x892)
+(or x58 (not x538))
+(or x314 x396)
+(or (not x683) (not x380))
+(or x503 (not x553))
+(or (not x1097) x222 x340 (not x1153) x260)
+(or x230 (not x1591))
+(or (not x805) x1074)
+(or (not x1360) x1444)
+(or (not x541) x1511)
+(or (not x1034) (not x561))
+(or (not x275) x723)
+(or (not x423) (not x1499))
+(or (not x826) x280)
+(or x57 (not x979))
+(or x365 x1259)
+(or x955 x835)
+(or (not x715) (not x1413))
+(or x1075 x273)
+(or (not x371) (not x1149))
+(or x643 (not x594))
+(or x422 (not x1276))
+(or (not x1000) (not x1543))
+(or x608 x957)
+(or (not x1180) (not x942))
+(or (not x1231) x1214)
+(or x1482 x102)
+(or x79 (not x1531))
+(or (not x670) (not x598) (not x1100) x154 x1105)
+(or (not x688) (not x315))
+(or x879 x878)
+(or (not x1182) x1244)
+(or (not x926) (not x85))
+(or (not x730) (not x1512))
+(or (not x663) (not x1311))
+(or x338 x1197)
+(or (not x887) (not x456))
+(or (not x1310) x626)
+(or (not x1253) x731)
+(or (not x1153) x522 x1335)
+(or (not x394) (not x1043))
+(or (not x991) (not x1234) x700 (not x1214) (not x1184) (not x112))
+(or (not x881) (not x56))
+(or (not x666) (not x689))
+(or (not x319) (not x1215))
+(or x905 (not x204))
+(or x1069 x914)
+(or x1115 x129)
+(or x116 x544)
+(or (not x761) x339)
+(or x1508 x149)
+(or (not x1440) x1562)
+(or x1502 (not x1241))
+(or (not x316) x432)
+(or x1333 x704)
+(or x1199 (not x308))
+(or x478 (not x114))
+(or (not x565) (not x1492))
+(or x1026 (not x91))
+(or (not x871) (not x696))
+(or x682 (not x1067))
+(or (not x660) x1070)
+(or x213 (not x416))
+(or (not x31) x1322)
+(or (not x298) (not x1160))
+(or x748 x1198)
+(or x475 (not x1316) (not x530))
+(or (not x1380) x589)
+(or (not x1330) (not x1124))
+(or (not x1497) (not x1386))
+(or x886 (not x1141))
+(or x43 x687 x71 (not x135) x752)
+(or x110 x460)
+(or (not x645) (not x1460))
+(or (not x665) (not x52))
+(or x421 x1050)
+(or x1131 x746)
+(or (not x563) (not x711) x965 x1151 (not x1495))
+(or (not x440) x643)
+(or (not x22) x84)
+(or x242 x234)
+(or x124 (not x1096))
+(or (not x595) x1489)
+(or (not x655) (not x531))
+(or x1538 (not x888))
+(or x1450 (not x1060))
+(or x509 x359)
+(or x1510 x351)
+(or (not x1512) x1135)
+(or x283 x351)
+(or x508 (not x252))
+(or (not x871) (not x1424))
+(or x24 x223)
+(or (not x1067) (not x409))
+(or x1185 x1542 (not x329))
+(or x1118 x589)
+(or x1273 x347)
+(or x829 x713)
+(or (not x1479) (not x1212))
+(or (not x353) (not x1512))
+(or x1293 x29)
+(or (not x1270) x338)
+(or (not x111) x1322)
+(or x1519 x974)
+(or x1562 (not x451))
+(or (not x679) (not x913) x4 (not x1508) x192 x836 x1494 (not x1400))
+(or x1186 x191)
+(or (not x487) x728)
+(or (not x170) (not x1310))
+(or (not x340) (not x408))
+(or x193 (not x763))
+(or (not x1056) (not x1365))
+(or (not x965) x162)
+(or x1199 (not x619))
+(or (not x840) x460)
+(or (not x662) x358 (not x1319) x604)
+(or x886 x597)
+(or (not x896) (not x1530) (not x1563))
+(or (not x1381) x924)
+(or (not x859) (not x139))
+(or (not x1299) x336)
+(or (not x532) x1521)
+(or x301 (not x423))
+(or x799 (not x1372))
+(or x1147 (not x915))
+(or (not x461) x280)
+(or x212 (not x615))
+(or (not x946) (not x986))
+(or (not x54) (not x177))
+(or (not x783) x164)
+(or (not x1497) x738)
+(or (not x1134) (not x989))
+(or (not x170) x970)
+(or (not x1241) x966)
+(or (not x189) x512)
+(or x84 (not x1587))
+(or (not x1087) x1329)
+(or x74 x1521)
+(or (not x987) (not x549))
+(or (not x1543) x280)
+(or x165 (not x704))
+(or x1597 x729)
+(or x1085 x713)
+(or x1140 x757)
+(or (not x313) x350 x1179 (not x944) (not x582))
+(or x50 (not x231))
+(or (not x1443) (not x627))
+(or x1402 (not x605) x1232)
+(or x677 (not x98))
+(or (not x897) x67)
+(or (not x377) (not x1485) (not x1156) (not x760) x1052 x1377)
+(or (not x806) (not x45))
+(or (not x1101) x361)
+(or (not x1267) (not x1297))
+(or x77 x357 (not x1538) x507 (not x1128))
+(or x314 (not x1364))
+(or (not x622) (not x190))
+(or (not x369) (not x540))
+(or x973 (not x1049) x349)
+(or (not x644) (not x160))
+(or (not x424) x1577)
+(or x1085 (not x320))
+(or x1118 (not x1517))
+(or (not x239) x479)
+(or x279 x247)
+(or x1446 (not x454))
+(or (not x248) (not x1342) x796 (not x1401) x466)
+(or x1011 (not x142))
+(or x723 x900)
+(or (not x1181) (not x267))
+(or x392 (not x411))
+(or (not x807) x291 x400 x506 x1394 (not x135) (not x176) x481)
+(or x807 (not x400))
+(or (not x723) (not x900) (not x1013) (not x226) (not x1550) x741 (not x628))
+(or x381 x816)
+(or x339 x206)
+(or (not x406) x1331)
+(or (not x1368) (not x1160))
+(or (not x859) (not x133))
+(or (not x564) x478)
+(or (not x594) (not x1158))
+(or (not x712) x199)
+(or (not x255) x1502)
+(or (not x987) (not x847))
+(or (not x68) x1331)
+(or (not x487) (not x1211))
+(or (not x337) x1576)
+(or x1048 x1466)
+(or x679 x913)
+(or (not x703) (not x448))
+(or (not x46) x69 (not x1204) (not x1246) (not x936) (not x784))
+(or (not x672) x1546)
+(or x567 x558)
+(or (not x703) (not x1296))
+(or x108 x1219)
+(or (not x87) x1068)
+(or (not x1384) (not x1496))
+(or x99 (not x806))
+(or (not x931) x1331)
+(or (not x1450) x207 x461 (not x1316) x1054 x1144)
+(or x1249 x813)
+(or x711 x1495)
+(or x185 (not x1326))
+(or x57 x591)
+(or (not x1192) (not x555))
+(or x957 x1491)
+(or (not x1201) (not x163))
+(or (not x1209) (not x935))
+(or (not x13) (not x655))
+(or (not x1218) (not x1532))
+(or x311 x702)
+(or x582 (not x459))
+(or (not x1312) x1340)
+(or (not x322) x576)
+(or (not x1327) (not x1432))
+(or x1098 x399 (not x6) x459)
+(or x893 x370)
+(or x1121 (not x874))
+(or (not x550) x1416)
+(or (not x91) x593)
+(or x427 (not x362))
+(or (not x1007) x196)
+(or x810 x1562)
+(or x746 (not x1155))
+(or x44 (not x1110))
+(or x257 x250)
+(or x1561 (not x177))
+(or x342 x1118)
+(or x230 (not x1358))
+(or (not x1487) x1264)
+(or (not x466) x1342)
+(or x293 x791)
+(or (not x5) (not x1270))
+(or x384 (not x1532))
+(or (not x487) (not x1225))
+(or (not x687) x135)
+(or x473 (not x41))
+(or (not x1247) x930)
+(or x473 x1193)
+(or x1036 x265 x1590 (not x1065) (not x458))
+(or x120 x1580)
+(or x196 (not x408))
+(or (not x116) (not x378) (not x130) (not x707) (not x792))
+(or (not x633) (not x743))
+(or (not x1503) (not x1531))
+(or (not x400) x135)
+(or (not x1133) (not x645))
+(or (not x186) x792)
+(or x1050 x1140)
+(or x885 x70)
+(or (not x692) x530)
+(or (not x198) x1308)
+(or (not x1176) x1475)
+(or (not x1378) (not x1335))
+(or x261 (not x1553))
+(or (not x167) (not x186))
+(or (not x811) (not x808))
+(or (not x994) x403)
+(or (not x451) x33)
+(or (not x1442) (not x912))
+(or (not x538) x849)
+(or (not x734) x1470)
+(or (not x383) x494)
+(or (not x1435) (not x1587))
+(or (not x133) (not x224))
+(or (not x91) (not x750))
+(or x1136 (not x1472))
+(or x1031 (not x986))
+(or (not x776) (not x1514) x1302 x752 x416)
+(or x1340 x1470)
+(or x1533 (not x428))
+(or x112 x1184)
+(or (not x1055) (not x1167))
+(or (not x1278) (not x680))
+(or (not x1185) (not x448))
+(or x767 (not x612))
+(or x213 (not x298))
+(or (not x663) (not x215))
+(or x1458 x656)
+(or (not x956) x985)
+(or x1092 (not x1000))
+(or x1585 x940)
+(or (not x440) (not x452))
+(or (not x553) x1088)
+(or (not x22) (not x89))
+(or x598 (not x139))
+(or (not x53) (not x722))
+(or (not x971) x229)
+(or (not x1414) x1471)
+(or (not x308) (not x1279))
+(or x807 (not x1155))
+(or (not x1089) (not x1479))
+(or (not x73) x831 (not x978) x1260 (not x1156) (not x1038))
+(or (not x754) x638)
+(or (not x209) (not x542))
+(or (not x27) (not x1541))
+(or x184 x1571)
+(or (not x804) x1165)
+(or x180 x1489)
+(or x679 x1508)
+(or x368 (not x1037))
+(or x679 (not x420))
+(or (not x1048) x506 x259)
+(or (not x1367) x704)
+(or (not x656) (not x1458))
+(or (not x62) (not x657))
+(or (not x1201) x504)
+(or x677 (not x932))
+(or x1526 (not x672))
+(or x702 (not x1549))
+(or x61 x1322)
+(or (not x611) (not x920))
+(or x733 x1510)
+(or x901 x1556)
+(or x1395 x1445)
+(or (not x860) (not x1503))
+(or (not x1067) (not x11))
+(or x262 x1571)
+(or x389 (not x366))
+(or x786 x1481)
+(or (not x1446) (not x44) (not x658) (not x503))
+(or (not x962) x1251)
+(or x794 x1207 x712)
+(or (not x519) x666)
+(or x887 (not x1086) x692)
+(or x346 (not x505))
+(or x1133 x789 (not x1585) (not x1457))
+(or (not x995) (not x549))
+(or x375 (not x672))
+(or x1357 (not x772))
+(or (not x888) x1135)
+(or x1395 x92)
+(or (not x935) x432)
+(or (not x56) x292)
+(or (not x7) x422)
+(or x135 (not x1344))
+(or x1128 (not x783))
+(or x241 x274)
+(or (not x410) x1470)
+(or (not x655) (not x653))
+(or x1555 x432)
+(or x425 x378)
+(or x1544 (not x1504))
+(or (not x468) (not x564))
+(or (not x1283) x1229)
+(or (not x1134) x517)
+(or x175 (not x1512))
+(or (not x998) (not x202) x1034 (not x899))
+(or x266 x377)
+(or x869 x134)
+(or x1589 x978)
+(or (not x1553) x1099)
+(or (not x814) (not x21))
+(or (not x732) x243)
+(or (not x451) x1581)
+(or (not x975) (not x708))
+(or x1438 x426)
+(or x740 x432)
+(or x205 (not x1261))
+(or (not x515) x234)
+(or (not x764) x880)
+(or x991 (not x466))
+(or (not x995) x1229)
+(or (not x1101) (not x1182))
+(or (not x1137) x320 (not x271) x10 x1263)
+(or x1510 x12)
+(or x948 (not x1084))
+(or (not x819) x785)
+(or (not x1377) x1156)
+(or x473 x465)
+(or x1597 x922)
+(or (not x961) x512)
+(or (not x613) x625)
+(or (not x206) x1258 (not x1427) (not x753) (not x1454) (not x1393) x1157 x772 x406)
+(or x1478 (not x61) (not x1013))
+(or x922 x99)
+(or (not x1141) (not x1158))
+(or (not x840) x630)
+(or (not x278) (not x358))
+(or (not x284) x1035)
+(or x1416 (not x1434))
+(or (not x577) (not x553))
+(or x1491 (not x1312))
+(or x312 x1531 x298 x1419 (not x1240))
+(or (not x841) x801)
+(or (not x633) x1589)
+(or x578 (not x950))
+(or (not x20) (not x335))
+(or x777 x1163)
+(or (not x71) (not x181))
+(or x867 (not x502))
+(or x212 x1259)
+(or x1403 (not x847))
+(or x1450 x593)
+(or (not x220) x682)
+(or x837 x535)
+(or x1576 x952)
+(or x981 x575)
+(or x921 x704)
+(or (not x596) (not x724))
+(or (not x1177) x274)
+(or (not x484) x1283)
+(or (not x323) (not x1343))
+(or (not x114) (not x590))
+(or (not x628) (not x878) x601 (not x879) (not x1387) x285)
+(or x812 (not x154))
+(or (not x356) x334)
+(or x1322 (not x695))
+(or (not x272) x1236)
+(or x113 x1398)
+(or x746 x96)
+(or x1379 x1010)
+(or (not x1107) (not x217))
+(or (not x1442) x388)
+(or x134 (not x431))
+(or x816 (not x1087))
+(or (not x343) x97)
+(or (not x1451) (not x285))
+(or x746 (not x572))
+(or (not x549) x221)
+(or (not x918) (not x1305))
+(or (not x815) (not x218))
+(or (not x1343) (not x1133))
+(or (not x103) (not x824))
+(or x1438 (not x291))
+(or (not x895) x899)
+(or (not x735) (not x444) x1005)
+(or (not x275) x174)
+(or (not x395) x536)
+(or x709 (not x997))
+(or x228 x1436)
+(or (not x922) x797 x1089 x1037 (not x521) (not x1186) x1479 x1200)
+(or x311 (not x1087))
+(or (not x445) x621 x68 (not x12) x1595 (not x1331))
+(or (not x663) (not x369))
+(or x562 (not x1448))
+(or (not x1375) (not x383))
+(or x97 x726)
+(or x145 (not x1068) (not x484))
+(or (not x98) x719)
+(or (not x449) (not x1167))
+(or x1003 x1135)
+(or (not x1462) (not x68))
+(or x521 x1018)
+(or x1545 x97)
+(or x1408 x25)
+(or x1296 (not x709) x456 (not x471) x887)
+(or (not x1125) (not x155))
+(or (not x1524) x282)
+(or x1512 x730 x672 (not x1526))
+(or x1502 x1069)
+(or (not x345) (not x1386))
+(or (not x55) x1282 (not x1163) (not x46))
+(or (not x590) x478)
+(or x1332 x83)
+(or (not x819) (not x745))
+(or (not x1171) (not x716))
+(or x576 x216)
+(or (not x186) x729)
+(or (not x690) (not x103))
+(or (not x442) (not x1385) x986 (not x365) (not x1184) (not x213) x416 x1270)
+(or (not x926) x664)
+(or x1594 (not x1415))
+(or x478 (not x1064))
+(or (not x1448) (not x290))
+(or x777 x1393)
+(or (not x187) x524)
+(or (not x174) x1072 (not x40) x468 x564)
+(or x776 (not x1505))
+(or x535 (not x637))
+(or (not x846) x782)
+(or x1200 x68 x1462)
+(or (not x461) x799)
+(or (not x971) x1489)
+(or (not x446) (not x832))
+(or (not x1326) x289)
+(or x1513 x1178 (not x527) (not x118) x1344)
+(or (not x832) x195)
+(or (not x1326) (not x9))
+(or (not x430) x72)
+(or x230 x917)
+(or (not x669) (not x1591))
+(or (not x1365) (not x1173))
+(or (not x523) x1204)
+(or (not x146) x1310 (not x892))
+(or (not x495) (not x1107))
+(or x1071 x589)
+(or (not x590) x1518)
+(or x314 (not x1558))
+(or x97 (not x1539))
+(or (not x439) (not x594))
+(or x427 x1199)
+(or x880 (not x1245))
+(or x844 (not x194))
+(or (not x983) (not x923))
+(or x535 x1139)
+(or (not x754) x1085)
+(or (not x1083) x689)
+(or x212 x365)
+(or (not x189) x1452)
+(or (not x437) x205)
+(or x158 (not x552))
+(or x498 (not x1261))
+(or x1277 (not x1274))
+(or x1020 x379)
+(or (not x1045) (not x1180))
+(or x1331 (not x358))
+(or x1115 (not x624))
+(or (not x1168) x3)
+(or x830 x762)
+(or (not x1507) (not x650) (not x1080) x1424)
+(or x1333 (not x333))
+(or x1401 x1234)
+(or x1226 x1126)
+(or (not x1257) (not x1001))
+(or x354 x1545)
+(or (not x366) (not x1547))
+(or x144 x135)
+(or x97 x1040)
+(or x325 x992)
+(or (not x53) (not x716))
+(or x536 (not x1254))
+(or (not x881) x816)
+(or x1548 (not x644))
+(or x727 x1080)
+(or x1048 x1128)
+(or x1352 x1363)
+(or x1540 (not x599))
+(or (not x121) x1031)
+(or (not x77) x1509)
+(or (not x1255) x491)
+(or (not x1551) (not x1054))
+(or x592 x282)
+(or (not x449) (not x1155))
+(or (not x1328) x793)
+(or x72 (not x817))
+(or (not x65) (not x942))
+(or x75 (not x778) (not x1420) x1541 (not x585) x615 (not x1336) (not x208))
+(or x558 (not x1007))
+(or x205 x1382)
+(or x432 x1104)
+(or x1468 (not x1183))
+(or (not x1582) (not x831))
+(or (not x1361) (not x1326))
+(or x810 (not x104))
+(or x791 (not x1270))
+(or x538 x411 x874 (not x947))
+(or (not x490) x963)
+(or (not x858) (not x1365))
+(or (not x352) x855)
+(or (not x1065) x1022 x19)
+(or x1550 x628)
+(or (not x295) (not x1045))
+(or x403 x169)
+(or x1421 (not x1529))
+(or x354 x257)
+(or x1199 (not x52))
+(or (not x107) (not x930))
+(or x1032 x1280)
+(or x931 (not x450) x362 x1360 (not x1331))
+(or x1259 (not x1114))
+(or (not x62) (not x761))
+(or x18 x184)
+(or x1003 (not x420))
+(or x47 (not x806))
+(or x1380 x493 (not x1304) (not x560) x1517 x1290)
+(or x1135 (not x353))
+(or x233 x975 x1245 x588)
+(or (not x1017) (not x1215))
+(or x1523 (not x854))
+(or (not x1573) x533)
+(or x1018 (not x1497))
+(or x1104 (not x88))
+(or (not x603) x634 (not x875) (not x902) x1412)
+(or x917 (not x1410))
+(or (not x1543) (not x1493))
+(or (not x597) x1 (not x886) (not x1248))
+(or (not x762) x1595 (not x740) x772 (not x432) (not x1357) x483 (not x1088))
+(or (not x1496) x1383)
+(or x608 (not x1022))
+(or (not x1116) x1594)
+(or x47 x1436)
+(or (not x652) (not x1183))
+(or x1417 x816)
+(or (not x1380) x1533)
+(or x875 (not x1592))
+(or (not x464) x673)
+(or (not x915) x757)
+(or (not x253) (not x984))
+(or x183 (not x1400) (not x40) x1392 x1255 (not x981) x437 (not x575))
+(or (not x475) x1316)
+(or x216 (not x43))
+(or x781 (not x356))
+(or (not x734) x309)
+(or x1111 x3)
+(or x702 (not x1415))
+(or x377 (not x1377))
+(or (not x545) x673)
+(or x232 x793)
+(or (not x720) (not x1414))
+(or (not x1542) (not x1179))
+(or x890 x1489)
+(or (not x1292) (not x1072))
+(or x199 (not x319))
+(or (not x606) x407)
+(or x579 x1080)
+(or (not x796) x1342)
+(or x129 (not x244))
+(or (not x1254) x919)
+(or x511 x747)
+(or (not x1317) (not x956))
+(or (not x1241) (not x1110))
+(or (not x457) x301)
+(or (not x87) (not x408))
+(or x257 (not x1222))
+(or (not x831) x73)
+(or x1156 x73)
+(or (not x32) x939)
+(or x1049 x365)
+(or (not x166) (not x1379) (not x1320) x975 x624 (not x262) (not x1010))
+(or (not x1282) x46)
+(or (not x858) (not x1168))
+(or x1172 (not x1116))
+(or (not x219) (not x1410))
+(or (not x1566) (not x120) (not x1580) x811 (not x92) x996 x564 (not x384))
+(or x913 x1400)
+(or x1111 x608)
+(or x834 x147 (not x578) x942)
+(or (not x1464) x886)
+(or x1308 (not x1410))
+(or (not x980) x898)
+(or x1454 x206)
+(or x296 x60 (not x17) (not x898) (not x347) (not x344) (not x911))
+(or (not x695) x51)
+(or x1272 x1562)
+(or x992 (not x1019))
+(or x1391 (not x1488))
+(or x1466 (not x49))
+(or (not x1245) (not x588))
+(or x496 x963)
+(or (not x1167) (not x1215))
+(or (not x857) (not x160))
+(or (not x366) (not x523))
+(or x499 (not x1588))
+(or x1027 (not x1098))
+(or x681 (not x1285))
+(or (not x986) (not x446))
+(or x136 (not x1134))
+(or x216 (not x297))
+(or (not x951) (not x550))
+(or x1016 x783 (not x402))
+(or (not x1008) x650)
+(or (not x817) x662)
+(or (not x873) x788)
+(or x605 (not x1232))
+(or (not x1023) x1354)
+(or x147 x94 (not x392))
+(or (not x133) (not x1497))
+(or x3 (not x1222))
+(or (not x638) x1159)
+(or x353 x680 (not x397) (not x1546) x1177 (not x274))
+(or (not x1492) (not x448))
+(or x799 x628)
+(or (not x665) (not x366))
+(or (not x21) (not x406))
+(or (not x117) (not x218))
+(or x1161 x524)
+(or (not x1054) (not x294))
+(or x1308 (not x1294))
+(or x1448 x485 (not x1376) x555)
+(or (not x558) x32 x428 (not x1533) (not x148) x297)
+(or x1051 (not x101))
+(or (not x466) x693)
+(or (not x1558) x97)
+(or x1032 (not x1034))
+(or x161 (not x1394))
+(or (not x531) (not x13))
+(or x287 x227 x770 (not x671))
+(or x1544 x579)
+(or (not x335) (not x772))
+(or x867 x1286)
+(or x1280 x1405)
+(or x1251 (not x1494))
+(or x375 x940)
+(or x1476 x496)
+(or x721 (not x826))
+(or (not x1496) (not x1195))
+(or x393 (not x949))
+(or x1058 x120)
+(or (not x476) (not x439))
+(or x1292 x1335 x1378 (not x966) (not x1502) x1072 (not x1069) x1241)
+(or (not x1107) (not x976))
+(or x1137 x276)
+(or (not x1083) (not x449))
+(or x785 x1589)
+(or (not x995) (not x483))
+(or (not x466) (not x1465))
+(or x675 (not x846))
+(or (not x1210) x681)
+(or x1420 (not x270))
+(or (not x225) (not x1281))
+(or (not x270) x228)
+(or (not x1394) x93)
+(or x575 (not x65))
+(or x1186 (not x797))
+(or (not x566) x1345)
+(or x875 x643)
+(or (not x930) x641)
+(or (not x832) x1269)
+(or x512 x326)
+(or x966 (not x790))
+(or (not x192) x913)
+(or (not x799) (not x941) x1372)
+(or x1109 (not x483))
+(or x916 x1070)
+(or x1204 x1104)
+(or (not x468) (not x569))
+(or (not x870) x247)
+(or x523 x87 x1451 (not x1079) (not x148) x285)
+(or (not x183) (not x568))
+(or (not x252) x351)
+(or (not x1358) (not x1133))
+(or x992 x803)
+(or (not x927) (not x1196))
+(or x120 x99)
+(or x408 (not x651) x462 (not x196) x687 x87)
+(or (not x71) (not x303))
+(or (not x8) x885)
+(or (not x338) (not x880) x1270 x5)
+(or (not x79) (not x1318))
+(or x180 (not x716))
+(or x120 x384)
+(or (not x1207) (not x1402))
+(or (not x1515) x191)
+(or (not x551) x426)
+(or x1334 x813)
+(or x166 x1117)
+(or x524 (not x284))
+(or x955 (not x54))
+(or x938 x1011)
+(or x388 x72)
+(or x494 x1430)
+(or (not x832) x1347)
+(or x1198 x478)
+(or x1100 (not x154))
+(or (not x492) x1148)
+(or (not x315) (not x194))
+(or x325 (not x312))
+(or x799 x801)
+(or x1474 (not x1578))
+(or (not x615) x1420)
+(or x1450 x486)
+(or (not x950) x385)
+(or (not x408) x848)
+(or (not x883) x454 x1582 (not x1446))
+(or (not x1365) x1189)
+(or (not x42) x36)
+(or x238 x1163)
+(or (not x1197) (not x1498) x100 (not x338) (not x105))
+(or (not x20) (not x971))
+(or (not x98) (not x1256))
+(or x293 x1228)
+(or x185 x271)
+(or (not x832) x1061)
+(or x1026 (not x663))
+(or (not x1260) x266)
+(or (not x56) (not x64))
+(or (not x733) x1486 (not x1597) (not x922) (not x1511) x588)
+(or x1228 (not x951))
+(or x1485 x1332)
+(or x798 (not x1515))
+(or x221 (not x545))
+(or x272 x1101 x600 (not x960) (not x361) (not x578))
+(or x1322 (not x569))
+(or x35 (not x569))
+(or (not x966) x430 x222)
+(or (not x169) x225 x1210 x1281 (not x403))
+(or (not x1230) (not x928))
+(or x1408 x1147)
+(or (not x1367) x512)
+(or x721 x226)
+(or (not x1367) x921)
+(or x1076 (not x1463))
+(or (not x447) x1213)
+(or (not x907) (not x457))
+(or x1109 (not x231))
+(or (not x712) (not x794))
+(or x1229 (not x802))
+(or (not x703) (not x817))
+(or x1238 (not x1569))
+(or x403 x1126)
+(or (not x371) (not x215))
+(or x1222 x287 (not x598) x139 (not x957))
+(or (not x644) x66)
+(or x711 (not x1462))
+(or x778 x1420)
+(or x351 x539)
+(or x1161 (not x69))
+(or (not x45) x132)
+(or (not x963) x1490 x1112 (not x496) (not x1351) (not x1473))
+(or x1383 (not x1384))
+(or (not x1072) x40)
+(or (not x551) x6)
+(or x1352 (not x1192))
+(or (not x712) x1262)
+(or x1172 x1014)
+(or (not x1386) (not x1057))
+(or (not x864) (not x215))
+(or x1304 x731)
+(or x646 x604 (not x737))
+(or (not x492) (not x60))
+(or (not x1465) x1102)
+(or x1119 (not x27))
+(or x1244 x879)
+(or (not x699) (not x611))
+(or x283 (not x38))
+(or (not x633) x216)
+(or x1509 x960)
+(or (not x1494) (not x836))
+(or x810 (not x428))
+(or x1293 (not x956))
+(or x537 (not x734))
+(or (not x979) x985)
+(or x256 (not x861) x1182 (not x354) (not x1082) (not x246) (not x670))
+(or x807 (not x481))
+(or x1385 (not x986))
+(or x1389 (not x1504))
+(or (not x1583) (not x827) (not x67) x1501 x657)
+(or x1143 (not x1073))
+(or x1391 (not x1573))
+(or (not x953) (not x827) (not x1430) x1056)
+(or (not x695) (not x958))
+(or x584 x1516)
+(or x351 x1357)
+(or x1427 (not x1258))
+(or (not x457) x67)
+(or (not x805) (not x1536))
+(or x1352 x1273)
+(or x393 x240)
+(or x1079 (not x87))
+(or x44 (not x8))
+(or x567 x833)
+(or x83 (not x128))
+(or x882 (not x542))
+(or (not x335) (not x1268))
+(or x1342 x1401)
+(or x598 (not x1105))
+(or x18 x426)
+(or (not x1490) (not x1112))
+(or (not x78) x647)
+(or x788 x1165)
+(or x1370 x711)
+(or x228 x1522)
+(or x135 (not x104))
+(or x168 (not x125))
+(or (not x943) x818)
+(or (not x1338) x629 x862 (not x1272) x1194 x1055)
+(or (not x495) x161)
+(or x40 (not x437))
+(or (not x1549) x828)
+(or x628 (not x1543))
+(or (not x823) (not x606))
+(or (not x553) (not x1268))
+(or (not x495) x281)
+(or (not x122) (not x255))
+(or (not x163) x30)
+(or x24 (not x613))
+(or x1208 x1043)
+(or x1571 (not x352))
+(or (not x90) x590 x275 (not x174) (not x685) x1443)
+(or x1117 x1012)
+(or (not x1179) (not x1559))
+(or x947 x1563)
+(or (not x1117) x1426 (not x777) (not x1163))
+(or x172 x1165)
+(or (not x114) x489)
+(or (not x401) (not x915))
+(or x705 (not x203))
+(or (not x733) x965 x68 (not x981))
+(or (not x1362) (not x1086) x845)
+(or (not x1178) x925)
+(or x392 (not x94))
+(or (not x272) x960)
+(or (not x60) (not x1549))
+(or (not x1129) (not x1548) x644)
+(or (not x1101) x578)
+(or x396 (not x1558))
+(or (not x1484) (not x7))
+(or (not x684) x557)
+(or (not x522) x1469)
+(or x1307 (not x1306))
+(or (not x747) (not x337))
+(or (not x1047) x346)
+(or (not x568) (not x1134))
+(or (not x142) x242)
+(or x1341 x432)
+(or (not x253) x360)
+(or (not x1539) x1079)
+(or (not x996) x924)
+(or (not x557) x395 (not x536))
+(or (not x862) (not x937))
+(or (not x1413) x1226)
+(or (not x514) (not x469))
+(or (not x866) (not x1309))
+(or (not x447) x801)
+(or x582 x944)
+(or (not x542) (not x1591))
+(or (not x715) x1031)
+(or (not x461) (not x11))
+(or (not x821) (not x1275))
+(or (not x323) x768)
+(or x1009 (not x143))
+(or x1207 x1402)
+(or x403 (not x971))
+(or (not x547) x175)
+(or (not x82) x1013)
+(or x1161 (not x609))
+(or x1363 (not x644))
+(or (not x706) (not x497))
+(or x290 x1448 x1361 x224 (not x562) x1138 (not x1522))
+(or x1562 (not x428))
+(or x90 (not x1443))
+(or x230 x6)
+(or (not x1239) x736)
+(or x818 (not x764))
+(or x528 (not x858))
+(or x1439 (not x622))
+(or (not x926) (not x256))
+(or (not x517) x1542 x417)
+(or (not x224) (not x60))
+(or x771 x1409)
+(or x9 x1486 x1361 (not x707) (not x1092) x1326 (not x185))
+(or x799 (not x49))
+(or x1236 (not x1232))
+(or (not x1167) (not x989))
+(or (not x1182) (not x256))
+(or x998 x1120)
+(or x907 (not x266) (not x377) x457 (not x67))
+(or (not x846) (not x1001))
+(or x691 (not x540))
+(or x1398 x93)
+(or (not x907) (not x423))
+(or (not x624) (not x446))
+(or x351 x40)
+(or x740 x283)
+(or (not x383) x957)
+(or x707 x378)
+(or (not x1112) x1208)
+(or (not x502) x584)
+(or (not x1463) x25)
+(or x641 x1150)
+(or (not x1424) (not x1534))
+(or (not x290) x1390)
+(or x736 x1303)
+(or (not x373) x825)
+(or x482 x1394 x1133 (not x161) x1564)
+(or x47 (not x1157))
+(or x398 x945 (not x318) x1447 x487)
+(or x499 (not x956))
+(or x119 (not x1057))
+(or x629 x222 (not x1259))
+(or x607 x210)
+(or (not x1519) (not x1418) (not x727) (not x974) (not x1523) (not x869))
+(or x1286 (not x1191))
+(or x573 x1258 x692 x1124 (not x1091) x1330)
+(or x1439 x728)
+(or x1337 x952)
+(or x162 x776)
+(or (not x259) (not x1008))
+(or (not x329) x644 (not x66) (not x1242) (not x1363))
+(or x1593 x1423)
+(or x1500 x153)
+(or x509 (not x343))
+(or x1290 (not x518) x362)
+(or x25 x292)
+(or (not x1306) x195)
+(or x1346 x528)
+(or (not x814) (not x330))
+(or (not x996) (not x602))
+(or x1480 (not x1083))
+(or (not x53) (not x438))
+(or x902 (not x54))
+(or (not x1554) x1186)
+(or x1066 (not x101))
+(or x1469 (not x688))
+(or x1593 (not x1592))
+(or (not x27) (not x1528))
+(or x904 (not x1073))
+(or x680 (not x1526) x987 x1278 x317 x20)
+(or x1303 x1533)
+(or x1239 (not x1506) (not x725) x889)
+(or x116 (not x1064))
+(or x1140 x998)
+(or x740 (not x483))
+(or (not x388) (not x44) x1442 x1110)
+(or (not x1185) x890)
+(or x967 (not x437))
+(or (not x997) x422)
+(or x305 x1581)
+(or x557 (not x505))
+(or (not x320) x829)
+(or (not x355) (not x1134))
+(or x1320 (not x624))
+(or x1421 x1303)
+(or x532 (not x1012) (not x925))
+(or x1454 (not x1299))
+(or (not x167) (not x469))
+(or (not x1590) (not x1456))
+(or x779 (not x1409) (not x771) (not x562) (not x702))
+(or x838 (not x1191))
+(or (not x304) x1337)
+(or x1522 x562)
+(or x1027 x1277)
+(or x1437 (not x841))
+(or x1161 x1117)
+(or (not x852) x444)
+(or x1498 (not x100))
+(or x584 x838)
+(or (not x143) x1202)
+(or x1307 (not x75))
+(or x12 x746)
+(or (not x264) x486)
+(or x550 (not x906) (not x1416) x790 x629 (not x105))
+(or (not x1205) x203 x159 (not x719) (not x705))
+(or (not x89) (not x1037))
+(or x185 x1092)
+(or (not x987) (not x667))
+(or x639 x342)
+(or x1203 (not x1529))
+(or x948 x1530)
+(or x1466 x182)
+(or x614 x1136)
+(or (not x1244) x1112 (not x1063))
+(or (not x935) x936)
+(or (not x121) x30)
+(or (not x1365) (not x1022))
+(or x185 (not x1422))
+(or x1576 (not x27))
+(or x835 x1071)
+(or (not x43) x135)
+(or x906 x1508)
+(or (not x49) (not x1324))
+(or (not x872) x587)
+(or x152 (not x1542))
+(or x1011 (not x1146))
+(or x897 (not x1189) (not x893) (not x1491))
+(or x1383 x1139)
+(or (not x11) (not x1191))
+(or (not x398) (not x507))
+(or x1432 x1188 (not x1441))
+(or x1520 (not x722))
+(or x1026 (not x215))
+(or (not x1501) (not x541))
+(or x1152 (not x1175) x217)
+(or (not x1000) x799)
+(or x1044 (not x876))
+(or (not x826) (not x1116))
+(or x938 (not x750))
+(or (not x1433) x1025 (not x1266) (not x906) (not x1136) x1551)
+(or x603 x498)
+(or (not x1373) x61)
+(or (not x976) (not x367))
+(or x1507 x1395)
+(or (not x1312) x1593)
+(or x1058 x922)
+(or (not x1250) (not x1459))
+(or (not x969) (not x1095))
+(or (not x1588) x678)
+(or x957 (not x287))
+(or x15 x126)
+(or (not x770) (not x1573))
+(or (not x1231) (not x514))
+(or x1304 (not x1290))
+(or x985 x1032)
+(or (not x975) x1186)
+(or x1079 (not x1451))
+(or x1457 (not x789))
+(or x1199 (not x1360))
+(or x664 (not x877))
+(or x413 x248)
+(or x338 x1259)
+(or x905 (not x832))
+(or (not x1155) x988)
+(or x1097 x1153)
+(or (not x617) x351)
+(or (not x1297) x110)
+(or x1020 x924)
+(or (not x1167) (not x167))
+(or (not x1196) (not x653))
+(or x1053 (not x475))
+(or x643 (not x1592))
+(or x1120 x587)
+(or x498 x1106)
+(or x676 x184)
+(or (not x820) (not x1253))
+(or x144 (not x1344))
+(or (not x474) (not x720))
+(or x1104 x1446)
+(or (not x1101) (not x600))
+(or x374 x62 (not x1030) (not x80))
+(or x893 x1346)
+(or x647 x419)
+(or (not x1178) x1332)
+(or x524 (not x566))
+(or (not x291) x882)
+(or x1514 x1273)
+(or x1271 x1226)
+(or (not x1414) (not x1373))
+(or (not x594) (not x468))
+(or x245 (not x754))
+(or x1581 (not x1440))
+(or (not x408) x651)
+(or (not x568) x185)
+(or (not x520) x228)
+(or x938 x286)
+(or x136 (not x14))
+(or x445 x12)
+(or x239 (not x800) (not x321))
+(or (not x352) (not x1554))
+(or (not x1036) x1243)
+(or (not x543) x1023)
+(or x1189 (not x1036))
+(or (not x56) x336)
+(or x442 x365)
+(or (not x1059) x268)
+(or (not x775) x213)
+(or x498 (not x1343))
+(or x1584 x236)
+(or x873 x839 (not x1356) (not x1269))
+(or x559 (not x327))
+(or (not x492) x102)
+(or x299 x1482)
+(or (not x661) (not x683))
+(or (not x1119) x836 (not x274) (not x585))
+(or (not x1372) x941)
+(or (not x994) (not x451))
+(or (not x1191) (not x1067))
+(or x837 (not x1000))
+(or (not x377) x532 (not x1123) (not x884) (not x768))
+(or x1433 x1266)
+(or x578 x960)
+(or (not x340) (not x222))
+(or (not x306) (not x891))
+(or (not x1445) x789 x602 x1110 (not x807) (not x914) x1314)
+(or x900 x1244)
+(or x25 x1161)
+(or x1277 (not x1343))
+(or x377 x1123)
+(or x414 x842)
+(or (not x497) (not x732))
+(or x1473 x496)
+(or (not x856) (not x556))
+(or x1362 (not x845))
+(or (not x1315) (not x765))
+(or x1038 x941)
+(or x301 x784)
+(or x228 (not x263))
+(or x911 x17)
+(or x301 x1248)
+(or (not x764) x1444)
+(or x1120 (not x1596))
+(or x651 x216)
+(or (not x856) (not x973))
+(or x977 x718 x1483)
+(or x1214 x467)
+(or (not x999) x229)
+(or (not x752) (not x602))
+(or x140 (not x531))
+(or x798 (not x1488))
+(or x491 x326)
+(or x1208 (not x1149))
+(or (not x1046) (not x427))
+(or (not x282) (not x810) (not x1562) (not x571) x1302 x1218 x428)
+(or (not x13) x782)
+(or x1062 (not x919) (not x1565))
+(or x444 x735)
+(or (not x1101) x878)
+(or (not x943) (not x787))
+(or x245 x838)
+(or x527 (not x1007))
+(or (not x420) (not x545))
+(or x801 (not x495))
+(or x523 x366 (not x1035) (not x1104) (not x1204))
+(or x952 x890)
+(or x1528 x27 x1424 x1472 x1534 (not x1119))
+(or (not x1037) (not x1089))
+(or x827 x1583)
+(or x329 (not x644))
+(or x313 (not x1179))
+(or x639 x1349)
+(or (not x834) (not x942))
+(or (not x1486) (not x1326))
+(or (not x233) (not x588))
+(or x281 x161)
+(or (not x1276) x1140)
+(or x838 (not x1067))
+(or x838 x445)
+(or (not x1016) x347)
+(or x899 x1187)
+(or (not x406) (not x1505))
+(or (not x362) x736)
+(or (not x204) x636)
+(or (not x520) (not x464))
+(or (not x663) (not x1164))
+(or x1175 x131)
+(or (not x749) (not x1464))
+(or x917 (not x1591))
+(or (not x947) (not x261) (not x955) (not x1099) x54 x1553)
+(or x1526 (not x154))
+(or x73 (not x999))
+(or x785 (not x285))
+(or x228 (not x485))
+(or x338 x105)
+(or x807 x914)
+(or x1040 x232)
+(or (not x594) x850)
+(or (not x983) (not x1465))
+(or (not x411) (not x1252))
+(or x693 x1082)
+(or (not x1276) x1329)
+(or (not x9) x1510)
+(or (not x285) x878)
+(or x208 x1061)
+(or (not x426) (not x134) x714 (not x504) x115)
+(or (not x1391) (not x249) (not x443) x1573 x1223)
+(or (not x789) x807)
+(or (not x551) x803)
+(or x407 (not x1021))
+(or (not x1230) (not x107))
+(or (not x60) x17)
+(or x241 (not x553))
+(or x1535 (not x1327))
+(or x812 (not x594))
+(or (not x566) (not x915))
+(or (not x225) (not x1348))
+(or (not x1379) (not x1298) x1227 x1215 (not x58))
+(or (not x390) x658)
+(or (not x761) (not x1419))
+(or x710 x1165)
+(or x1224 x599 (not x1540) x345)
+(or x509 (not x157))
+(or (not x979) x1341)
+(or (not x805) (not x1230))
+(or (not x525) (not x157))
+(or (not x519) (not x1531))
+(or x1119 x1165)
+(or x587 x1346)
+(or (not x136) x391 x14 x743 (not x1584))
+(or (not x637) x237)
+(or x1032 (not x961))
+(or x414 x679)
+(or x1240 (not x441))
+(or (not x367) x1020)
+(or x1333 (not x1367))
+(or x1126 (not x56))
+(or x1354 (not x486) (not x501) (not x934) x264)
+(or (not x1083) (not x1055))
+(or x925 x80)
+(or x1545 x195)
+(or x478 x833)
+(or x2 x1091)
+(or (not x1176) x407)
+(or (not x319) (not x302))
+(or (not x1358) (not x423))
+(or x938 (not x543))
+(or x865 x58)
+(or (not x590) x39)
+(or x829 x625)
+(or x1119 x274)
+(or x1571 x784)
+(or x1474 x1329)
+(or x1436 (not x231))
+(or x719 x1205)
+(or (not x1309) x1115)
+(or x196 x558)
+(or (not x1182) x861)
+(or (not x1314) x914)
+(or (not x1546) (not x546) (not x1552))
+(or (not x440) (not x923))
+(or x1436 (not x568))
+(or x426 x504)
+(or x420 (not x274) (not x241) (not x1003) (not x1009) x143)
+(or (not x1353) x368)
+(or (not x502) (not x1144))
+(or (not x1245) (not x1479))
+(or (not x568) x1544)
+(or x151 (not x119) (not x921))
+(or (not x635) (not x1351))
+(or x324 x647)
+(or (not x774) (not x398))
+(or (not x253) x1004)
+(or x1053 x238)
+(or (not x923) x1169)
+(or (not x122) x1121)
+(or (not x445) (not x108))
+(or x1128 x735)
+(or (not x1220) (not x9))
+(or x1032 (not x980))
+(or (not x1296) x709)
+(or x879 (not x285))
+(or x1409 x169)
+(or x162 (not x819))
+(or x1119 x788)
+(or x392 (not x410))
+(or (not x1005) x444)
+(or x1522 (not x290))
+(or (not x995) x1293)
+(or x685 (not x717))
+(or x1202 x640)
+(or x792 (not x1000))
+(or x948 x992)
+(or (not x353) x102)
+(or x895 (not x757) x891)
+(or x241 (not x577))
+(or (not x437) (not x826))
+(or x1351 (not x1112))
+(or x1331 (not x1360))
+(or x533 (not x173))
+(or (not x871) (not x1025))
+(or (not x632) (not x848) x717 x1180 x1072)
+(or (not x1424) (not x4))
+(or (not x433) (not x63))
+(or x169 (not x945))
+(or x512 x902)
+(or x721 (not x734))
+(or (not x1450) x1372 (not x593) (not x560) x852 x1060)
+(or (not x1303) (not x1533) x386 x1380)
+(or (not x1463) (not x335))
+(or (not x1407) (not x761))
+(or (not x551) (not x352))
+(or (not x1201) x168)
+(or (not x366) x725)
+(or (not x606) (not x117))
+(or (not x101) (not x1299))
+(or (not x201) x610)
+(or x216 x636)
+(or (not x1158) (not x1253))
+(or (not x761) (not x969))
+(or (not x10) x444)
+(or x1243 (not x937))
+(or x1337 x29)
+(or x197 x1291)
+(or x1247 (not x1093))
+(or x140 (not x553))
+(or x1374 (not x928))
+(or x988 x746)
+(or x1264 (not x690))
+(or x137 x359)
+(or (not x1200) (not x1462))
+(or (not x1279) x1238)
+(or (not x20) (not x1239))
+(or (not x552) x458)
+(or (not x797) (not x1007))
+(or x917 (not x1557))
+(or x199 x1262)
+(or x66 x1363)
+(or (not x492) x453)
+(or x784 x1246)
+(or (not x418) x1333)
+(or (not x1381) (not x367))
+(or (not x646) (not x703))
+(or x1393 (not x1231))
+(or (not x71) x1437)
+(or (not x1564) (not x71))
+(or x675 (not x876))
+(or (not x69) x636)
+(or x1396 x120)
+(or x643 (not x847))
+(or x647 (not x1292))
+(or x375 x286)
+(or x393 x963)
+(or (not x505) x112)
+(or x1417 x407)
+(or (not x497) (not x870))
+(or (not x1531) (not x853))
+(or x1035 (not x1429))
+(or x339 (not x864))
+(or (not x995) (not x623))
+(or x739 x1277)
+(or (not x1155) (not x572))
+(or x1430 x953)
+(or x1047 x391)
+(or x257 (not x943))
+(or (not x1504) x331)
+(or (not x1431) (not x1422))
+(or x1175 x893)
+(or x890 x725)
+(or (not x961) (not x464))
+(or (not x409) (not x888))
+(or (not x1311) (not x215))
+(or (not x1177) (not x335))
+(or x1399 (not x821))
+(or (not x1188) (not x715))
+(or (not x695) x1121)
+(or x676 (not x198))
+(or x1091 x471)
+(or (not x68) (not x1200))
+(or (not x542) (not x104))
+(or (not x141) x499)
+(or (not x948) x1084 x1045 x194)
+(or (not x401) x1221)
+(or (not x1095) x211)
+(or (not x260) (not x464))
+(or x1433 x1199)
+(or (not x654) x892)
+(or (not x107) x293)
+(or (not x1386) (not x1064))
+(or x1029 x1018)
+(or x339 x73)
+(or x647 (not x1062))
+(or x1071 (not x1388))
+(or x593 (not x1372))
+(or (not x1245) x1078)
+(or (not x873) x1165)
+(or x1471 (not x1001))
+(or x742 x126)
+(or x759 (not x181))
+(or x1427 (not x772))
+(or x65 (not x575) (not x632))
+(or (not x748) x1305 x918 x1290)
+(or (not x495) x799)
+(or (not x1177) x397)
+(or x1530 x896)
+(or x205 x99)
+(or (not x263) x1307)
+(or x1203 (not x188))
+(or (not x789) x701)
+(or (not x1155) x96)
+(or x308 x225 x1279)
+(or (not x446) x193)
+(or (not x634) x603)
+(or x766 x486)
+(or (not x876) x83)
+(or x1221 (not x1001))
+(or x1506 x102)
+(or x793 x240)
+(or x359 (not x1531))
+(or (not x815) (not x822))
+(or (not x547) (not x1557))
+(or (not x604) x1319)
+(or (not x1578) x1594)
+(or (not x79) x1084 (not x670))
+(or (not x298) x1240)
+(or x957 x598)
+(or x1119 (not x1534))
+(or (not x927) (not x439))
+(or x1069 (not x1241))
+(or x1427 x1454)
+(or (not x600) x960)
+(or (not x1232) (not x712))
+(or (not x49) (not x1551))
+(or (not x613) x313)
+(or (not x1067) x1427)
+(or (not x1064) x34)
+(or (not x170) (not x1282))
+(or (not x1105) x1139)
+(or x1234 (not x1017))
+(or (not x446) x195)
+(or x168 x1040)
+(or (not x1448) (not x224))
+(or x974 x869)
+(or (not x1134) x152)
+(or (not x615) (not x1245))
+(or x1080 (not x840))
+(or (not x1305) x384)
+(or x25 x1148)
+(or (not x1146) x744)
+(or x607 x36)
+(or x1205 (not x159))
+(or (not x1378) (not x618))
+(or (not x522) (not x1335))
+(or (not x1090) x524)
+(or (not x722) (not x853))
+(or x1113 x1416)
+(or x1226 x236)
+(or x949 x1315 (not x1205))
+(or x1218 (not x518) x1532 (not x118) x621)
+(or (not x1431) x59)
+(or (not x77) x1128)
+(or (not x599) (not x345))
+(or (not x954) x704)
+(or (not x1198) x590 (not x39) x114 (not x478) x820 x1253)
+(or (not x703) x1051)
+(or x300 x1242)
+(or x1341 x1555)
+(or x1389 x681)
+(or (not x194) (not x1045))
+(or (not x863) (not x1358))
+(or x704 (not x165))
+(or (not x613) x1476)
+(or (not x272) (not x600))
+(or x1050 (not x918))
+(or x710 x168)
+(or (not x1595) x1088)
+(or x643 (not x1588))
+(or x344 x607)
+(or (not x644) x1242)
+(or x1369 x33)
+(or (not x21) (not x1125))
+(or (not x468) x174)
+(or (not x555) (not x1435))
+(or (not x811) x521)
+(or x884 x415)
+(or (not x1361) (not x1138))
+(or (not x114) (not x1253))
+(or (not x619) x1136)
+(or (not x1359) x1099)
+(or (not x804) (not x962))
+(or (not x358) x1469)
+(or x1317 x1560 (not x1371))
+(or x632 (not x717))
+(or x723 (not x1116))
+(or x1533 x518)
+(or (not x1297) x40)
+(or (not x523) x148)
+(or (not x1359) x1423)
+(or (not x554) (not x294))
+(or (not x649) x1366)
+(or (not x943) x1085)
+(or (not x1064) x833)
+(or (not x239) (not x1413))
+(or (not x91) (not x264))
+(or (not x1160) (not x167))
+(or (not x1132) (not x52))
+(or (not x790) x906)
+(or (not x446) x1031)
+(or (not x1134) x1454)
+(or x149 x1357)
+(or x1425 (not x976))
+(or x659 (not x231))
+(or (not x1030) (not x748) (not x1198) (not x501))
+(or (not x716) (not x1124))
+(or (not x409) x1061)
+(or (not x1536) (not x1017))
+(or x61 (not x323))
+(or x158 x458)
+(or x191 x911)
+(or x616 (not x76))
+(or x1184 (not x1368))
+(or x1498 x620)
+(or x1444 x993)
+(or (not x459) x605)
+(or x1398 (not x874))
+(or x580 (not x943))
+(or x436 (not x611))
+(or (not x520) (not x263))
+(or x427 (not x52))
+(or (not x680) x1546)
+(or x726 (not x98))
+(or x562 (not x1361))
+(or x1006 (not x769))
+(or x240 (not x1328))
+(or x387 (not x1089))
+(or x326 x467)
+(or x940 x230)
+(or x415 (not x706))
+(or x1474 (not x822))
+(or x168 x336)
+(or (not x741) (not x111))
+(or (not x694) (not x493))
+(or x1184 x213)
+(or x614 x1480)
+(or x135 (not x1394))
+(or x120 (not x1220))
+(or x1389 x1226)
+(or (not x117) (not x1062))
+(or (not x376) x1287)
+(or x1370 x90)
+(or (not x859) x693)
+(or (not x87) x196)
+(or x911 (not x60))
+(or x1156 (not x831))
+(or x635 x393)
+(or (not x602) x626)
+(or x112 x1475)
+(or x1455 (not x1456))
+(or x241 (not x28))
+(or (not x1309) (not x446))
+(or x964 (not x838) (not x1038) (not x1316) (not x941))
+(or (not x406) x206)
+(or (not x606) x486)
+(or (not x1302) (not x1125))
+(or x473 (not x1384))
+(or x48 x584)
+(or (not x1443) x685)
+(or (not x1446) (not x1104) (not x232) (not x793) x88 (not x985))
+(or x407 (not x823))
+(or (not x797) x922)
+(or (not x32) (not x548))
+(or x670 x598)
+(or x909 (not x1045))
+(or x1458 (not x194))
+(or x232 (not x1432))
+(or x648 (not x309) x302 x1157)
+(or (not x1569) x26)
+(or x1042 x603)
+(or x204 x1377 (not x1012) (not x905))
+(or x1172 (not x275))
+(or (not x459) (not x1098))
+(or (not x111) (not x323))
+(or (not x797) x1382)
+(or (not x1192) (not x1016))
+(or (not x700) x1298)
+(or x528 x1063)
+(or x1329 (not x1484))
+(or (not x1033) x677)
+(or x442 x1385)
+(or x146 x1355)
+(or x138 (not x1234) x319 x1017 (not x1401) x1167 (not x199) x1215)
+(or (not x1324) x1516)
+(or x620 (not x1233))
+(or (not x772) x1393)
+(or (not x1590) x458)
+(or (not x1093) x1383)
+(or x1308 x6)
+(or (not x267) x879)
+(or (not x1358) x6)
+(or (not x1190) (not x859))
+(or x957 x494)
+(or (not x330) x152)
+(or x1177 (not x1321) (not x710) (not x1140) (not x740))
+(or (not x1101) x960)
+(or (not x594) (not x1592))
+(or (not x669) (not x542))
+(or x208 (not x554))
+(or (not x1354) (not x554))
+(or x650 (not x1267))
+(or x1140 (not x623))
+(or x733 x1436)
+(or x413 (not x505))
+(or (not x4) x110)
+(or (not x459) (not x399))
+(or (not x1115) x1309 x945 (not x867) (not x1271) x866)
+(or (not x1484) (not x1276))
+(or (not x803) x315 x194 x412)
+(or (not x239) (not x743))
+(or x1594 (not x1549))
+(or x1050 x757)
+(or (not x804) (not x353))
+(or (not x435) (not x706))
+(or (not x452) x1208)
+(or x467 (not x1021))
+(or (not x392) x411 x1596 x1252)
+(or x659 x990)
+(or x702 x29)
+(or x1038 x73)
+(or x640 x1023)
+(or x171 x751)
+(or x384 x1580)
+(or (not x549) (not x420))
+(or x102 (not x1463))
+(or x1202 (not x264))
+(or x5 (not x993) x684 (not x1520) (not x557))
+(or x92 (not x372))
+(or (not x1460) (not x189))
+(or x639 x801)
+(or x1508 (not x4))
+(or x226 x1014)
+(or x1198 (not x114))
+(or x1548 x1129)
+(or (not x1000) x628)
+(or x1036 x1365 x1173 (not x1189) (not x1249))
+(or (not x583) x1574)
+(or x678 x786)
+(or (not x476) x392)
+(or x1088 x793)
+(or x1192 (not x210) (not x607) (not x726) x28 x98)
+(or (not x1281) (not x288))
+(or (not x1432) x1040)
+(or x311 x643)
+(or x1332 (not x128))
+(or x793 x1104)
+(or x1175 x529)
+(or (not x863) (not x1201))
+(or (not x1182) (not x150))
+(or x195 (not x298))
+(or (not x1578) x579)
+(or x508 (not x815))
+(or (not x962) (not x1494))
+(or (not x588) (not x975))
+(or x1510 (not x568))
+(or (not x946) (not x856))
+(or x360 (not x984))
+(or (not x866) (not x1211))
+(or (not x1314) x1445)
+(or (not x333) (not x870))
+(or (not x382) x1049)
+(or x637 x1465 x466 (not x991) (not x535))
+(or (not x1361) x1092)
+(or x581 (not x1057))
+(or x1121 (not x433))
+(or (not x564) (not x811))
+(or x245 x1048)
+(or x112 (not x1227))
+(or (not x908) x33)
+(or x1400 (not x1196))
+(or (not x1547) x589)
+(or x1042 x1475)
+(or x662 x1066)
+(or (not x117) (not x294))
+(or x1015 (not x722))
+(or (not x1324) x1243)
+(or x309 (not x302))
+(or (not x27) (not x881))
+(or (not x495) (not x217))
+(or (not x1276) x332)
+(or x1400 x1508)
+(or x269 x18)
+(or x1351 x124)
+(or x452 x1141 x1536 x627 x440)
+(or (not x439) x786)
+(or x226 x1013)
+(or x1306 (not x208) x446 (not x195) x832 (not x1061))
+(or x921 x119)
+(or x875 x1295)
+(or (not x732) x387)
+(or (not x1373) (not x669))
+(or (not x830) (not x762) (not x1289))
+(or x59 (not x657))
+(or x199 (not x1215))
+(or x1319 (not x350))
+(or (not x1386) x1425)
+(or (not x147) (not x834))
+(or (not x121) x1197)
+(or x405 (not x1488))
+(or (not x1595) (not x772))
+(or (not x595) (not x750))
+(or x1189 x893)
+(or (not x971) x180)
+(or (not x743) x479)
+(or (not x260) x512)
+(or x936 x784)
+(or (not x1047) (not x330))
+(or x1552 x546)
+(or (not x420) x704)
+(or x377 x67)
+(or x317 (not x1428) x1127 x805)
+(or (not x1410) (not x98))
+(or (not x284) (not x1429))
+(or (not x38) x1027)
+(or (not x690) x1336)
+(or x171 (not x817))
+(or x266 (not x907))
+(or (not x789) x1039)
+(or x1545 (not x531))
+(or x1130 (not x568))
+(or x1013 x628)
+(or (not x637) (not x1465))
+(or (not x3) x857 x160)
+(or x313 (not x350))
+(or x2 x1304)
+(or x400 (not x735))
+(or x1514 x776)
+(or (not x189) (not x1588))
+(or x140 (not x1268))
+(or (not x559) (not x674) x984)
+(or (not x1099) (not x1423) x16 x1359)
+(or (not x549) x1032)
+(or (not x958) x1334)
+(or x30 (not x429))
+(or x1010 x1320)
+(or x1269 x1408)
+(or (not x863) x504)
+(or (not x688) x736)
+(or x517 (not x1209))
+(or (not x182) (not x1523) (not x630) x854 (not x1325) (not x1466) x1173)
+(or x1585 x1457)
+(or x1307 x584)
+(or (not x601) x1204)
+(or x402 x1088)
+(or (not x1054) x1450)
+(or (not x106) (not x404))
+(or (not x847) x1333)
+(or (not x1288) (not x624))
+(or (not x923) (not x652))
+(or x785 (not x1392))
+(or x559 (not x690))
+(or (not x667) x673)
+(or x1320 x262)
+(or (not x1183) (not x1386))
+(or (not x82) x960)
+(or (not x1114) (not x1055))
+(or x638 x110)
+(or (not x1483) x243)
+(or (not x975) x1438)
+(or x647 (not x218))
+(or x1203 x1015)
+(or x739 (not x11))
+(or (not x1328) x639)
+(or (not x693) x1190 x383 (not x385) (not x249) x859)
+(or x1265 (not x1375))
+(or x344 (not x60))
+(or (not x1531) x1240)
+(or (not x815) (not x1021))
+(or (not x1278) x332)
+(or (not x515) x421)
+(or (not x1122) (not x655))
+(or (not x1479) (not x306))
+(or x1049 (not x349))
+(or (not x588) (not x469))
+(or x311 x1293)
+(or x166 (not x624))
+(or x1526 (not x680))
+(or (not x677) (not x635) x492 x932 (not x453))
+(or x513 (not x1265) (not x1455))
+(or (not x455) (not x356))
+(or x1403 (not x457))
+(or (not x1001) x899)
+(or (not x1564) x1437)
+(or x1334 (not x1404))
+(or (not x1297) x1445)
+(or x571 x813)
+(or x164 x241)
+(or x152 (not x1179))
+(or x36 (not x553))
+(or x263 x270 (not x1307) x1306 (not x228) x520)
+(or x1221 x24)
+(or x460 x257)
+(or x1535 (not x908))
+(or (not x594) (not x476))
+(or (not x945) (not x866))
+(or (not x975) x1320)
+(or (not x1209) (not x170))
+(or (not x288) x1074)
+(or (not x935) (not x187))
+(or (not x367) x738)
+(or x39 (not x468))
+(or (not x1056) x827)
+(or (not x53) (not x1019))
+(or x1065 (not x1590))
+(or x939 (not x1353))
+(or x1433 (not x138))
+(or x830 x1070)
+(or (not x1238) x28 x655 x1569)
+(or x591 (not x1041))
+(or (not x1197) x698 x121)
+(or (not x1593) x1312 (not x131))
+(or x402 x344)
+(or (not x1541) (not x337))
+(or (not x994) x1126)
+(or x200 (not x367))
+(or x26 (not x552))
+(or (not x1297) (not x4))
+(or (not x117) (not x244))
+(or (not x356) x370)
+(or x1371 x1048)
+(or (not x1105) x948)
+(or (not x489) x114 x1263)
+(or x1418 (not x466))
+(or (not x617) x892)
+(or x1142 (not x1241))
+(or (not x714) (not x115))
+(or x46 x55)
+(or (not x727) x1472)
+(or x960 (not x669))
+(or x843 x1103)
+(or x701 (not x38))
+(or x279 (not x933))
+(or (not x539) (not x508) (not x1039))
+(or x202 x697)
+(or x1295 x1071)
+(or x336 (not x772))
+(or x1370 x332)
+(or x1024 (not x1348))
+(or (not x454) (not x889))
+(or x760 x1485)
+(or (not x822) (not x9))
+(or x313 (not x1225))
+(or x48 x1027)
+(or (not x1108) (not x1245))
+(or x85 (not x849) x926 (not x664) (not x261))
+(or x1012 x166)
+(or (not x983) (not x1017))
+(or x271 (not x1263))
+(or (not x1330) (not x1503))
+(or x1565 x346)
+(or x1277 x364)
+(or x679 (not x252))
+(or (not x1534) (not x1348))
+(or (not x667) (not x295))
+(or x1376 x74)
+(or (not x1090) x1161)
+(or (not x648) (not x692))
+(or (not x761) (not x718))
+(or (not x159) x1495)
+(or x935 x43 (not x636) (not x216) x523)
+(or x1433 (not x937))
+(or x3 (not x488))
+(or (not x507) x1128)
+(or (not x518) (not x1533))
+(or x152 x1051)
+(or (not x1098) x1390)
+(or (not x1137) (not x1345) (not x276))
+(or x67 x827)
+(or (not x868) x67)
+(or (not x1267) x575)
+(or (not x89) x534)
+(or x1226 (not x743))
+(or (not x758) (not x842) (not x414) x554)
+(or (not x774) (not x150))
+(or (not x1292) x1502)
+(or x83 (not x1487))
+(or x310 x705)
+(or x736 x1076)
+(or x748 x108)
+(or x1128 (not x482))
+(or (not x1384) x1015)
+(or x281 x280)
+(or x1523 x630)
+(or x998 x899)
+(or x1544 x638)
+(or x1316 (not x1144))
+(or x579 x172)
+(or x1104 x232)
+(or x417 (not x1341) (not x216) x86)
+(or (not x1531) (not x330))
+(or (not x400) x735)
+(or (not x877) (not x695))
+(or (not x275) (not x217))
+(or (not x514) (not x290))
+(or x25 (not x860))
+(or x756 (not x583))
+(or x1248 (not x864))
+(or x560 x1450)
+(or x321 x351)
+(or x917 (not x783))
+(or x786 (not x1541))
+(or x1461 (not x514))
+(or (not x1575) (not x1168))
+(or (not x95) x106 (not x1473))
+(or x334 (not x943))
+(or (not x1191) (not x1274))
+(or x1338 (not x1017))
+(or (not x1358) x93)
+(or x457 x214 (not x1403))
+(or (not x1515) (not x1166))
+(or x436 x1236)
+(or x981 (not x183))
+(or x1078 (not x1486))
+(or (not x1210) x1389)
+(or x1012 x442)
+(or (not x926) (not x1460))
+(or x1187 (not x1001))
+(or (not x483) x1293)
+(or (not x497) x1106)
+(or (not x669) (not x433))
+(or x1482 (not x1268))
+(or x739 x162)
+(or (not x1180) x632)
+(or (not x488) (not x1168))
+(or x639 x232)
+(or (not x20) (not x928))
+(or x827 x1248)
+(or (not x961) (not x596))
+(or (not x1311) x309)
+(or (not x62) x206)
+(or (not x455) (not x1312))
+(or x1129 (not x857))
+(or (not x1108) x1408)
+(or (not x1124) (not x573))
+(or x169 (not x1453))
+(or (not x492) x1011)
+(or x164 (not x77))
+(or (not x1270) x293)
+(or (not x510) x1123)
+(or (not x577) x164)
+(or (not x410) x1423)
+(or (not x303) (not x548))
+(or x200 (not x340))
+(or (not x24) x1487 (not x1145) (not x1028))
+(or x126 x266)
+(or x1379 (not x1215))
+(or x528 x59)
+(or x1075 x1308)
+(or (not x436) (not x51) x1344 (not x1411))
+(or x470 (not x150))
+(or (not x86) x216)
+(or (not x1524) (not x1596))
+(or x339 (not x964))
+(or x1164 x663 x1041 x845)
+(or (not x565) (not x931))
+(or (not x572) (not x449))
+(or x584 x50)
+(or (not x1089) (not x1381))
+(or (not x480) x137)
+(or (not x629) (not x1055))
+(or (not x1004) x1477 x327)
+(or (not x154) (not x930))
+(or x851 x571)
+(or x414 (not x554))
+(or (not x553) (not x335))
+(or (not x714) x426)
+(or (not x1344) x527)
+(or (not x423) (not x198))
+(or x1325 (not x854))
+(or x92 x384)
+(or x1 (not x598))
+(or (not x1134) (not x350))
+(or (not x302) (not x1157))
+(or (not x736) (not x427) (not x1421) x362 (not x1303))
+(or x358 (not x1469) x448)
+(or x796 x983 (not x1262) (not x326) (not x491) (not x58) x1412)
+(or x1169 x379)
+(or x1525 (not x942))
+(or (not x1225) x242)
+(or x991 (not x700))
+(or (not x1397) (not x240) (not x793) x1328 (not x393) x949)
+(or x403 (not x1210))
+(or (not x287) (not x1159))
+(or x1003 (not x75))
+(or x174 (not x1225))
+(or x1524 (not x929) (not x282))
+(or (not x1227) (not x505))
+(or x1115 (not x288))
+(or (not x1302) (not x1230))
+(or (not x814) (not x688))
+(or (not x826) (not x231))
+(or x1379 (not x167))
+(or x720 x235)
+(or x777 (not x1209))
+(or (not x1220) x1510)
+(or x1044 (not x846))
+(or x236 x1399)
+(or x1321 x740)
+(or x880 x818)
+(or (not x506) (not x400))
+(or (not x5) x1291)
+(or x737 (not x646))
+(or (not x317) (not x1005))
+(or (not x32) x368)
+(or x726 (not x28))
+(or (not x198) x6)
+(or (not x151) (not x165))
+(or (not x570) (not x906) x984 (not x1420) (not x1508))
+(or x66 x329)
+(or (not x1045) (not x1084))
+(or x735 x1048)
+(or x1127 x386 x694 (not x1374))
+(or x1236 (not x433))
+(or (not x468) (not x439))
+(or x1481 (not x815))
+(or x607 (not x553))
+(or x671 x50)
+(or x1090 x779 (not x524) (not x1161) (not x1482) x187)
+(or (not x931) (not x1462))
+(or (not x1227) (not x109))
+(or (not x178) (not x227))
+(or x909 x563)
+(or (not x821) x1474)
+(or (not x1133) x1014)
+(or (not x1479) x521)
+(or x828 (not x724))
+(or (not x100) x338)
+(or x1466 (not x1324))
+(or x518 (not x621))
+(or x102 (not x962))
+(or x1466 x245)
+(or x731 (not x750))
+(or x269 x1527)
+(or x498 x768)
+(or (not x971) (not x718))
+(or (not x927) x1576)
+(or (not x275) x967)
+(or x882 x1284)
+(or x832 (not x1269) (not x1385) (not x905))
+(or (not x687) x161)
+(or (not x160) x394)
+(or x1117 x777)
+(or (not x1528) (not x1472))
+(or (not x653) x1556)
+(or (not x196) (not x738) x22 x1107 x976 x367)
+(or x292 x656)
+(or (not x482) x1428)
+(or (not x291) x279)
+(or x1204 x1246)
+(or x484 x1077)
+(or x211 (not x186))
+(or (not x979) (not x1233))
+(or x1525 x967)
+(or (not x1386) (not x976))
+(or x793 x393)
+(or x1184 (not x1270))
+(or (not x1227) (not x1215))
+(or x389 x913)
+(or (not x119) x156 x1190 x1497 x1404)
+(or (not x297) x974)
+(or x1069 (not x1335))
+(or (not x995) x172)
+(or (not x1435) x1423)
+(or x1572 x1437)
+(or (not x986) (not x1270))
+(or x1256 x348 (not x26) x1569)
+(or x748 (not x1290))
+(or x1455 x1355)
+(or (not x144) (not x1284) (not x610))
+(or x135 (not x71))
+(or x431 x903 (not x134) (not x368) x1037)
+(or (not x1151) x563)
+(or (not x57) (not x591) x1041 x545 x1216)
+(or x1561 x241)
+(or (not x581) (not x1491) x1312 x455)
+(or (not x38) x12)
+(or x66 (not x716))
+(or (not x397) x41 (not x234) (not x744))
+(or x1434 x45 x449 x806 x1083 x854 x1167 x1055)
+(or (not x862) (not x572))
+(or (not x1166) (not x1547))
+(or x105 x1197)
+(or (not x969) x243)
+(or x1352 (not x555))
+(or (not x1554) x855)
+(or (not x1072) (not x1180))
+(or x207 (not x1468) x341)
+(or x1489 (not x21))
+(or (not x1215) x1298)
+(or (not x312) (not x1124))
+(or (not x275) x1452)
+(or (not x590) x242)
+(or x614 (not x428))
+(or x1010 x849)
+(or x893 (not x1422))
+(or (not x192) x1400)
+(or (not x876) (not x125))
+(or (not x516) x782)
+(or x934 x1187)
+(or x579 (not x881))
+(or x289 x116)
+(or x432 x904)
+(or (not x1054) x1481)
+(or x196 x1514)
+(or (not x1196) x1500)
+(or x521 x1186)
+(or x1357 (not x698))
+(or x963 (not x267))
+(or x1526 x1403)
+(or (not x1297) (not x372))
+(or x414 (not x337))
+(or x1028 x944)
+(or (not x976) x781)
+(or x1511 (not x1220))
+(or x651 (not x297))
+(or x1384 (not x1139) x1195 (not x1383) x1496)
+(or (not x456) x1214)
+(or (not x695) (not x874))
+(or (not x657) x1219)
+(or (not x969) x753)
+(or (not x85) x939)
+(or x1417 (not x231))
+(or (not x1541) x1420)
+(or (not x76) x1341)
+(or (not x1449) (not x21))
+(or x1576 x702)
+(or (not x1578) x1544)
+(or (not x1263) x1137)
+(or (not x1233) x616)
+(or x711 x563)
+(or x116 x1058)
+(or x112 x419)
+(or x164 x102)
+(or x1184 x365)
+(or x940 x640)
+(or (not x1326) x1092)
+(or (not x1367) (not x189))
+(or x325 x191)
+(or (not x75) (not x1541))
+(or x586 (not x561))
+(or (not x350) x1390)
+(or (not x945) (not x1453))
+(or x859 (not x689) x1083 x133 (not x1162))
+(or x1103 (not x668))
+(or x640 x375)
+(or x1009 x250)
+(or (not x1496) x1139)
+(or x363 (not x1285))
+(or x563 (not x965))
+(or (not x1360) (not x362))
+(or x1150 (not x696))
+(or x1018 (not x133))
+(or x1519 x727)
+(or x413 (not x969))
+(or x1243 x1325)
+(or x508 (not x802))
+(or x432 (not x772))
+(or x1058 x99)
+(or x414 (not x27))
+(or (not x855) (not x1293) (not x229) (not x1555))
+(or (not x1279) x952)
+(or (not x872) x1485)
+(or (not x490) x1205)
+(or x1148 x682)
+(or (not x125) x1221)
+(or x2 (not x820))
+(or (not x843) (not x1103))
+(or (not x1218) x118)
+(or (not x1497) x443)
+(or x1370 (not x1422))
+(or (not x141) x883)
+(or x955 x261)
+(or x1063 x957)
+(or (not x386) x1303)
+(or (not x259) (not x506))
+(or (not x1146) x1148)
+(or (not x406) (not x772))
+(or x883 (not x1220))
+(or (not x468) (not x1072))
+(or x171 (not x519))
+(or x1193 (not x1019))
+(or (not x1505) x1331)
+(or (not x137) x190 x646)
+(or (not x804) x1427)
+(or (not x1108) x212)
+(or x890 x389)
+(or (not x627) (not x1276))
+(or x47 x99)
+(or (not x590) (not x918))
+(or x1466 x1371)
+(or x1242 (not x555))
+(or (not x660) x26)
+(or (not x928) x614)
+(or x957 (not x858))
+(or (not x1146) x1147)
+(or x1109 x1544)
+(or (not x252) x659)
+(or (not x214) (not x532))
+(or x768 (not x1343))
+(or x17 x1020)
+(or (not x1361) (not x9))
+(or x1507 (not x372))
+(or (not x545) x591)
+(or x828 (not x980))
+(or (not x961) x1058)
+(or x17 x1561)
+(or (not x1164) (not x1176))
+(or x721 (not x1543))
+(or x309 (not x1568))
+(or (not x852) (not x750))
+(or x245 (not x1067))
+(or x1318 x1530)
+(or (not x745) x798)
+(or x936 x389)
+(or (not x126) x526 (not x742) (not x1272))
+(or (not x502) x1516)
+(or x1385 x905)
+(or x1474 x1594)
+(or x15 (not x661))
+(or x1131 x92)
+(or (not x775) x471)
+(or x334 x182)
+(or x1042 (not x648))
+(or x69 (not x778) (not x636) (not x1117) (not x1161))
+(or x127 (not x1327))
+(or x500 x1113)
+(or (not x159) (not x203))
+(or (not x252) (not x1588))
+(or x508 (not x1504))
+(or x1026 (not x577))
+(or (not x395) (not x887))
+(or (not x609) x1594)
+(or (not x708) x1186)
+(or (not x987) x311)
+(or x1340 (not x734))
+(or (not x189) x603)
+(or (not x107) (not x452))
+(or (not x1002) (not x994))
+(or x1399 (not x404))
+(or x44 x759)
+(or (not x487) x318)
+(or x1495 x576)
+(or x1336 (not x1541))
+(or x1519 x248)
+(or (not x734) x226)
+(or (not x550) (not x629))
+(or (not x968) (not x1364))
+(or (not x1194) x1234)
+(or x585 x1119)
+(or x585 x274)
+(or (not x210) x1448 x13)
+(or (not x58) (not x849) x78 x538 (not x865))
+(or (not x850) x927)
+(or (not x862) (not x138))
+(or x1046 x1366)
+(or x1280 x1050)
+(or x1150 x835)
+(or x762 x432)
+(or (not x921) x1367 x418 (not x1333) (not x704) x596 x954)
+(or x1506 x1251)
+(or x1337 x1555)
+(or (not x1059) (not x372))
+(or x1142 (not x454))
+(or (not x1152) (not x217))
+(or x1027 (not x423))
+(or (not x187) (not x290))
+(or x153 x1430)
+(or (not x1513) x527)
+(or x326 x643)
+(or x1057 (not x1395) x1560 (not x119))
+(or x1544 (not x826))
+(or x560 (not x1517))
+(or (not x188) (not x1529))
+(or x257 (not x787))
+(or (not x8) x1555)
+(or x603 x1470)
+(or x498 (not x323))
+(or (not x910) (not x1275))
+(or (not x483) x432)
+(or (not x357) (not x201))
+(or (not x338) (not x1031) (not x1420) (not x1259) x270)
+(or x1109 (not x609))
+(or x77 x317 (not x1135) x1005 (not x1003) (not x593))
+(or x1085 x705)
+(or x1548 x195)
+(or x1097 x379)
+(or x1226 (not x633))
+(or x1507 x1131)
+(or x707 (not x1326))
+(or (not x256) (not x1159))
+(or x546 x1356)
+(or (not x1534) x1238)
+(or x191 x34)
+(or (not x416) x1385)
+(or x557 (not x395))
+(or (not x111) (not x1394))
+(or (not x1335) (not x1241))
+(or x108 (not x657))
+(or (not x1373) x176)
+(or x952 x913)
+(or (not x426) (not x1438) x975 x708 (not x1186))
+(or (not x819) x776)
+(or x250 (not x655))
+(or x136 (not x743))
+(or x848 x632)
+(or x1390 x1277)
+(or (not x142) x299)
+(or (not x94) (not x147))
+(or x210 x102)
+(or x967 x1340)
+(or (not x382) x1467)
+(or (not x291) (not x1394))
+(or (not x946) (not x1503))
+(or (not x437) x1550)
+(or (not x1173) x1189)
+(or (not x717) x848)
+(or (not x100) (not x376))
+(or (not x11) (not x192))
+(or x611 x690 x103 (not x1264))
+(or (not x461) (not x482))
+(or x96 (not x78))
+(or (not x577) (not x435))
+(or (not x573) x292)
+(or (not x265) x458)
+(or x29 x1576)
+(or (not x543) x865)
+(or x1510 (not x449))
+(or (not x1214) x1231 (not x892) x617 (not x776) x456 x1505)
+(or (not x1133) x1457)
+(or x955 x1169)
+(or x681 x381)
+(or x176 (not x481))
+(or x1259 (not x222))
+(or (not x1328) (not x1496))
+(or x944 x1075)
+(or (not x1465) (not x1350))
+(or (not x1594) x821 x1578 (not x1474) x623 x822 (not x1329) x1116)
+(or (not x920) x1236)
+(or (not x220) (not x1324))
+(or (not x482) (not x1133))
+(or (not x278) x1331)
+(or x1024 (not x802))
+(or x686 (not x1089))
+(or x1332 x925)
+(or (not x545) (not x549))
+(or x572 (not x988) (not x1131) (not x746) x790 x1155 x449 (not x96))
+(or (not x495) (not x87))
+(or x107 x997 x380 x1230)
+(or x499 (not x802))
+(or (not x1093) (not x1492))
+(or (not x490) (not x495))
+(or (not x45) x1396)
+(or x1197 (not x1410))
+(or (not x417) x1028)
+(or (not x601) (not x600))
+(or x491 (not x476))
+(or (not x745) x196)
+(or x1395 x1094)
+(or x1325 (not x111))
+(or x1161 (not x409))
+(or (not x219) x402)
+(or x272 x920 (not x1236))
+(or x688 (not x1142) (not x1469) x522)
+(or (not x1311) (not x684))
+(or (not x954) (not x156))
+(or x727 x1523)
+(or (not x1453) (not x142))
+(or (not x157) x924)
+(or (not x219) (not x1201))
+(or (not x815) x647)
+(or x579 (not x995))
+(or (not x1551) x1516)
+(or x50 x1416)
+(or x1310 x170)
+(or (not x355) x1476)
+(or x562 x300)
+(or x282 (not x204))
+(or (not x1173) (not x1431))
+(or (not x594) x1295)
+(or (not x138) x199)
+(or (not x968) (not x1539))
+(or x926 x1223 x1460)
+(or x1339 (not x435))
+(or x96 x647)
+(or (not x1141) x580)
+(or (not x1525) x476 x942 (not x1382) (not x489) x1180)
+(or x1370 x185)
+(or (not x521) x511 x233)
+(or (not x1578) (not x821))
+(or (not x1493) x498)
+(or x80 x1291)
+(or x1417 (not x227))
+(or (not x1378) x1502)
+(or x364 (not x11))
+(or (not x156) (not x1190))
+(or (not x11) (not x826))
+(or (not x549) (not x956))
+(or x1313 x798)
+(or x1408 (not x409))
+(or (not x831) (not x1260))
+(or (not x946) (not x1559))
+(or (not x1314) x807)
+(or x1495 (not x965))
+(or (not x291) (not x481))
+(or x904 x36)
+(or x1498 (not x159))
+(or (not x1348) (not x773))
+(or (not x488) (not x244))
+(or x1502 (not x569))
+(or x443 x798)
+(or (not x1224) (not x599))
+(or (not x1192) (not x1435))
+(or x248 x237)
+(or (not x1328) x1339)
+(or x332 (not x1443))
+(or (not x772) x1454)
+(or (not x1582) (not x601))
+(or (not x1151) x1495)
+(or x739 (not x355))
+(or (not x819) x638)
+(or x311 (not x971))
+(or x1291 x25)
+(or x208 (not x832))
+(or (not x264) x140)
+(or x1452 (not x468))
+(or (not x773) (not x382))
+(or x338 x1031)
+(or (not x1524) (not x741))
+(or x1400 (not x836))
+(or (not x619) (not x155))
+(or (not x1415) (not x549))
+(or x1510 (not x1297))
+(or (not x815) x419)
+(or x1400 (not x1494))
+(or x1015 x1091)
+(or x534 x851)
+(or x586 x1514)
+(or (not x1364) (not x1499))
+(or x282 x929)
+(or (not x43) (not x8))
+(or x1387 x1068)
+(or (not x420) (not x1415))
+(or (not x912) (not x22))
+(or x175 x1530)
+(or (not x1274) x48)
+(or x1352 (not x1122))
+(or (not x45) (not x555))
+(or (not x627) x332)
+(or x37 x721)
+(or (not x1428) x7 x997 (not x422))
+(or x309 x1126)
+(or (not x602) (not x617))
+(or x661 x1381 (not x902))
+(or x838 x206)
+(or x776 (not x456))
+(or (not x349) x1044)
+(or x272 (not x1387) x631 (not x1077))
+(or x269 x844)
+(or x208 (not x653))
+(or x508 x721)
+(or x530 (not x663))
+(or x1396 x347)
+(or (not x49) x1581)
+(or (not x522) x1199)
+(or x351 x12)
+(or x1566 (not x1314))
+(or (not x1464) x1295)
+(or x1176 (not x756) x173)
+(or (not x1359) x534)
+(or (not x428) x1480)
+(or (not x931) (not x918))
+(or x739 (not x437))
+(or x1547 (not x1342) x903 (not x148) x1166 (not x589))
+(or (not x506) (not x1394))
+(or x812 (not x107))
+(or (not x895) x1467)
+(or x262 x339)
+(or x1480 x1401)
+(or (not x75) x585)
+(or (not x288) (not x1288))
+(or x681 x405)
+(or (not x1407) x760)
+(or x911 x347)
+(or (not x1215) x58)
+(or (not x1359) x1071)
+(or (not x1314) x96)
+(or x792 (not x1496))
+(or (not x1474) (not x816) x1210 (not x1389) x881 (not x681) (not x381))
+(or x1346 (not x910))
+(or (not x362) (not x931))
+(or (not x60) x102)
+(or (not x959) (not x1413))
+(or x1287 (not x1294))
+(or x243 (not x1412))
+(or (not x1112) x1085)
+(or x1446 x985)
+(or (not x1528) (not x876))
+(or (not x9) (not x449))
+(or (not x1415) (not x545))
+(or (not x915) (not x356))
+(or (not x1328) x342)
+(or (not x1524) (not x561))
+(or x1039 x1014)
+(or x778 x1336)
+(or (not x1112) x963)
+(or x584 (not x11))
+(or (not x1375) x1162)
+(or x998 x1050)
+(or (not x1116) x1329)
+(or x913 (not x935))
+(or x1357 (not x1595))
+(or (not x288) (not x1215))
+(or (not x1573) x443)
+(or x801 x628)
+(or (not x1404) (not x1183))
+(or x105 x1498)
+(or x869 (not x254))
+(or x1393 (not x514))
+(or (not x106) x1550)
+(or x542 x618)
+(or (not x109) x112)
+(or (not x1178) x1485)
+(or x1388 x634 x695 x877 x1223 x1367)
+(or x628 (not x285))
+(or (not x1547) x148)
+(or x571 (not x1218))
+(or (not x316) x1246)
+(or (not x1593) (not x1470) (not x1423) x1592 x410)
+(or (not x770) (not x173))
+(or (not x142) x1409)
+(or x535 (not x466))
+(or (not x1425) x1386 x976 (not x781) x296)
+(or x1197 (not x100))
+(or x929 x1468)
+(or (not x1415) x704)
+(or x502 (not x867) (not x1286) x507)
+(or x392 x678)
+(or (not x651) x1568)
+(or (not x1478) x899)
+(or (not x599) x917)
+(or x1325 x810)
+(or (not x606) (not x1144))
+(or (not x749) x1071)
+(or x726 x911)
+(or x733 (not x989))
+(or x1570 x570)
+(or (not x804) (not x836))
+(or (not x506) x807)
+(or x784 x1204)
+(or (not x881) (not x64))
+(or (not x231) x1544)
+(or x1322 x603)
+(or x144 (not x32))
+(or x861 x991)
+(or x1181 (not x528) (not x1346) (not x1063))
+(or (not x1058) (not x17) x961 x367 x1381 (not x1020) (not x924))
+(or x1009 (not x420))
+(or x196 x586)
+(or x533 x686)
+(or (not x1364) x1527)
+(or x533 (not x870))
+(or x425 x744)
+(or x1244 (not x1112))
+(or x1251 (not x358))
+(or (not x1258) x753)
+(or x1203 x1374)
+(or x1264 (not x103))
+(or (not x1377) x339)
+(or x586 (not x1178))
+(or (not x543) x640)
+(or x1049 (not x1194))
+(or x572 x1335 (not x1024))
+(or (not x223) (not x1471))
+(or (not x1239) (not x21))
+(or (not x1173) x494)
+(or (not x623) x1594)
+(or x232 (not x447))
+(or x241 x758)
+(or x1574 (not x103))
+(or (not x147) x760)
+(or x393 (not x1328))
+(or (not x157) x34)
+(or x872 (not x1485) (not x925) x1178 (not x1332))
+(or x616 x1357)
+(or (not x1394) (not x1133))
+(or x1225 (not x174) x9 x822 x515 (not x421))
+(or x934 x782)
+(or (not x775) x861)
+(or (not x987) x221)
+(or (not x623) (not x1578))
+(or (not x1489) (not x890) x308)
+(or (not x1000) x99)
+(or x586 (not x1034))
+(or (not x371) (not x20))
+(or x953 x827)
+(or (not x65) x1091)
+(or (not x1195) x271)
+(or x456 x1258 (not x575) x1267 (not x149) (not x662))
+(or x174 (not x515))
+(or x378 x938)
+(or x482 x11 (not x799) x49 x461)
+(or x1142 (not x688))
+(or (not x449) (not x1055))
+(or x477 (not x868))
+(or (not x1443) (not x594))
+(or (not x863) x1527)
+(or x1338 (not x764))
+(or x184 x426)
+(or x658 x1446)
+(or (not x225) (not x1210))
+(or x315 x688 x312 x716 x53 x1124)
+(or (not x1260) (not x303))
+(or x311 (not x1210))
+(or x816 (not x1210))
+(or (not x1257) x1537)
+(or x1209 x1282 x170 (not x1337))
+(or (not x1253) x1198)
+(or x396 x387)
+(or x474 x954 x1174 (not x990) (not x681))
+(or x1593 x131)
+(or x1584 x313)
+(or (not x910) x894)
+(or x770 (not x1103) x1573)
+(or (not x268) x155 x278)
+(or x1502 x966)
+(or x384 (not x1477))
+(or x1265 x1162)
+(or x1322 (not x323))
+(or x678 (not x122))
+(or x1561 x164)
+(or (not x690) x919)
+(or x1051 x1362)
+(or (not x1026) x335 x91 x20 x1239 x1463)
+(or (not x822) (not x802))
+(or x216 (not x417))
+(or (not x505) x766)
+(or (not x905) (not x1332) x373 (not x1123))
+(or x332 (not x1490))
+(or x750 (not x1304) (not x766) x91 (not x731) (not x1030) (not x2))
+(or x489 x1382)
+(or (not x36) x1073 (not x904))
+(or (not x163) (not x121))
+(or x341 (not x1371) (not x1038))
+(or x982 (not x667))
+(or (not x614) x928 x1230 x1536 x805)
+(or x810 (not x1344))
+(or (not x683) (not x556))
+(or (not x335) x1026)
+(or x1329 x643)
+(or (not x362) x1421)
+(or x883 (not x454))
+(or (not x1432) (not x548))
+(or (not x821) x990)
+(or x641 (not x1464))
+(or x459 (not x582) (not x605) x1294)
+(or (not x1241) x883)
+(or (not x367) x17)
+(or (not x1545) x434 (not x354) (not x195) (not x1548))
+(or x611 x920)
+(or (not x645) x1014)
+(or x787 x183 (not x90) x1263 (not x153) (not x1500))
+(or (not x956) x1032)
+(or (not x1464) x248)
+(or x1544 x467)
+(or x1482 x1202)
+(or (not x541) (not x1151))
+(or x228 (not x1114))
+(or x39 x491)
+(or x998 x587)
+(or (not x986) (not x951))
+(or (not x425) (not x744) x114 (not x938) (not x378) x750 x852)
+(or x1131 x630)
+(or x1316 (not x1054))
+(or x879 x628)
+(or (not x1472) x1119)
+(or x1586 (not x1114))
+(or x73 (not x761))
+(or (not x649) x1076)
+(or x1123 (not x373))
+(or (not x626) (not x709) x1310 x752 x997 x602)
+(or (not x1206) (not x901) (not x1441))
+(or (not x446) (not x1306))
+(or (not x109) (not x712))
+(or x140 x1187)
+(or (not x122) (not x569))
+(or x129 (not x1292))
+(or (not x1297) x12)
+(or (not x1528) x1145)
+(or (not x259) x630)
+(or (not x317) (not x20))
+(or x1452 x1322)
+(or (not x549) (not x623))
+(or x845 x540)
+(or x34 x463)
+(or x1320 x1379)
+(or (not x869) x254 (not x134))
+(or x963 x879)
+(or (not x1582) (not x454))
+(or x1174 (not x37))
+(or (not x1328) (not x949))
+(or x944 (not x743))
+(or (not x555) x300)
+(or (not x796) x491)
+(or (not x1139) (not x1247) x328 x1105)
+(or x1006 (not x1052))
+(or x1039 (not x1225))
+(or (not x979) x1389)
+(or x1029 x289)
+(or (not x1557) x1538)
+(or (not x1288) x1571)
+(or (not x64) (not x1002))
+(or (not x1157) x1277)
+(or x1148 (not x1463))
+(or x119 x1395)
+(or x22 x912 (not x84))
+(or (not x1223) (not x1573))
+(or (not x1283) (not x773))
+(or (not x1144) (not x461))
+(or (not x1258) x662)
+(or x208 (not x1541))
+(or (not x548) x1535)
+(or (not x1554) x1566)
+(or x489 (not x1180))
+(or (not x162) (not x576) x322 x1513 x1451)
+(or x1348 (not x1024) x773 x1534)
+(or x713 (not x1300))
+(or x778 (not x143))
+(or (not x189) x721)
+(or x666 x1051)
+(or x229 x1489)
+(or (not x1101) (not x441))
+(or x1341 (not x316))
+(or x777 (not x187))
+(or (not x328) x1349)
+(or (not x815) (not x117))
+(or (not x801) x841 x968 x1539 (not x639) (not x1079) x447 (not x232))
+(or x746 (not x790))
+(or (not x1493) x768)
+(or x899 (not x1052))
+(or (not x374) x1454)
+(or x675 x1165)
+(or (not x1329) (not x643) x977 x847 x987 (not x311) x1087)
+(or x87 x495 x267 (not x1068))
+(or x377 x884)
+(or (not x401) (not x846))
+(or (not x526) (not x908))
+(or (not x937) x158)
+(or x861 (not x343))
+(or x118 (not x1513))
+(or (not x1222) (not x1168))
+(or x1549 x961 (not x1580) (not x1032) (not x828) x596 x980 x724)
+(or (not x1145) x101 x14 x1299)
+(or (not x932) x453)
+(or x916 x273)
+(or (not x1124) (not x688))
+(or (not x1386) x34)
+(or x385 x249)
+(or (not x77) (not x317))
+(or (not x390) (not x1432))
+(or x409 x964 (not x193) x75 (not x1307))
+(or x693 x385)
+(or (not x762) x88 x1233)
+(or x857 (not x1129) x446 x1309)
+(or (not x1578) (not x1504))
+(or (not x1296) (not x887))
+(or x1580 (not x1378))
+(or x48 (not x231))
+(or (not x106) x1244)
+(or x1363 x424)
+(or x559 x1336)
+(or x1513 (not x1476) (not x713) (not x496) x128)
+(or x381 x1389)
+(or (not x1483) (not x718))
+(or x240 x268)
+(or (not x1532) (not x621))
+(or x30 x169)
+(or x1234 (not x700))
+(or x739 x1550)
+(or (not x1231) x1521)
+(or (not x1255) x753)
+(or x421 (not x1225))
+(or (not x1177) x1546)
+(or x153 (not x1263))
+(or (not x609) (not x409))
+(or (not x257) x1575)
+(or (not x411) (not x1596))
+(or (not x1276) x234)
+(or (not x1211) (not x700))
+(or x199 x1325)
+(or x1082 x246)
+(or x595 x406 x688 (not x736) x814 x21 (not x1489) x1239)
+(or x1362 (not x101))
+(or (not x779) (not x1090))
+(or (not x304) x952)
+(or x184 (not x198))
+(or (not x1225) x728)
+(or (not x526) x126)
+(or (not x951) (not x1002))
+(or (not x1456) x990)
+(or x786 (not x189))
+(or (not x754) x162)
+(or (not x28) (not x98))
+(or (not x1344) x1411)
+(or (not x1447) (not x622))
+(or x1042 x843)
+(or (not x159) x829)
+(or x858 x657 (not x1574) (not x59) x1431 (not x528))
+(or (not x566) (not x306))
+(or x365 (not x1114))
+(or x1174 (not x55))
+(or (not x1381) x902)
+(or (not x1025) (not x1404))
+(or (not x506) x1411)
+(or (not x688) (not x53))
+(or x650 (not x573))
+(or (not x960) (not x1509) x774 x82)
+(or x1363 x1242)
+(or x786 x955)
+(or x208 (not x615))
+(or (not x1250) x1289)
+(or (not x837) (not x1130) x139 (not x1139) x859 (not x535))
+(or (not x596) x738)
+(or (not x22) x196)
+(or x539 (not x790))
+(or (not x853) (not x480))
+(or x6 x844)
+(or x1074 (not x49))
+(or (not x322) x848)
+(or x1266 (not x615))
+(or (not x805) x1428)
+(or (not x714) x307)
+(or (not x222) (not x629))
+(or (not x645) x1277)
+(or (not x75) (not x1054))
+(or x1470 x1452)
+(or x1521 (not x399))
+(or (not x1230) x1234)
+(or (not x314) (not x396) x1558)
+(or x1352 x626)
+(or x760 x377)
+(or (not x259) x1445)
+(or (not x698) (not x277))
+(or (not x868) (not x333))
+(or x364 x739)
+(or x812 (not x637))
+(or x1193 (not x1195))
+(or x1453 (not x242) (not x1172) x142 x1225 (not x313))
+(or (not x1281) (not x624))
+(or (not x1195) x1383)
+(or x1421 (not x565))
+(or (not x287) (not x139))
+(or x465 (not x63))
+(or x1566 (not x78))
+(or x39 x478)
+(or (not x1034) x202)
+(or x499 (not x815))
+(or (not x1288) x184)
+(or x1104 (not x1268))
+(or (not x167) x729)
+(or (not x1503) (not x814))
+(or (not x1368) (not x520))
+(or x1562 (not x1302))
+(or (not x420) x1576)
+(or x313 x242)
+(or (not x358) x662)
+(or x1439 (not x645))
+(or (not x1579) (not x785) (not x1550) x654 (not x136) x106)
+(or x479 (not x76))
+(or (not x1002) (not x550))
+(or (not x1460) x1313)
+(or (not x157) (not x1515))
+(or x1574 x1249)
+(or (not x1515) x567)
+(or x1104 x904)
+(or x1403 x1106)
+(or x1040 (not x181))
+(or x1518 (not x918))
+(or (not x1586) (not x689) (not x1242) (not x1383) (not x152))
+(or (not x173) (not x253))
+(or (not x273) x622 x1447 (not x1439) x1274 x190)
+(or (not x1029) (not x289))
+(or x1393 (not x406))
+(or x947 x1339)
+(or x1354 x554 x510)
+(or (not x1060) (not x888))
+(or x1079 (not x303))
+(or (not x847) x414)
+(or (not x27) (not x995))
+(or x1387 x879)
+(or (not x804) x740)
+(or (not x631) x1077)
+(or (not x928) (not x805))
+(or (not x350) x1277)
+(or (not x930) x812)
+(or (not x1429) (not x1060))
+(or (not x773) x1153)
+(or x571 (not x741))
+(or x899 (not x373))
+(or x1074 (not x451))
+(or x709 (not x752))
+(or (not x1253) x237)
+(or x651 x196)
+(or x403 x229)
+(or x1383 (not x853))
+(or (not x1133) x161)
+(or x1347 x501)
+(or x668 x1159 x287 (not x249) x256)
+(or (not x252) (not x231))
+(or (not x1575) (not x1431))
+(or x801 x232)
+(or (not x344) (not x1032) x1034 (not x1280) x1554 x891)
+(or x125 (not x168) x995 (not x336) (not x710))
+(or x403 (not x1281))
+(or x524 (not x665))
+(or (not x357) x1570)
+(or x1572 (not x181))
+(or x1383 x689)
+(or x247 x387)
+(or (not x1345) x1138 (not x1148) (not x1011) x1146 (not x682) x492)
+(or x1148 x771)
+(or x1109 (not x804))
+(or (not x367) x924)
+(or x759 x1438)
+(or (not x1270) x1385)
+(or x778 x913)
+(or x785 (not x621))
+(or (not x739) (not x1473) x355 (not x162) x965 x754)
+(or (not x251) (not x510))
+(or x1543 (not x211) (not x985) x141)
+(or (not x703) x666)
+(or x1540 x463)
+(or x1280 x384)
+(or (not x288) x96)
+(or x1548 (not x434))
+(or x656 x1165)
+(or x12 x1331)
+(or x258 (not x933))
+(or (not x700) x1214)
+(or (not x839) (not x873))
+(or x51 x1411)
+(or (not x275) (not x1116))
+(or (not x1451) (not x523))
+(or x1523 x1325)
+(or (not x256) (not x287))
+(or x191 x363)
+(or (not x1384) x1139)
+(or (not x455) (not x452))
+(or x1393 (not x1157))
+(or x245 (not x568))
+(or x487 x789 (not x701) x38 x1225 (not x728) (not x1039))
+(or x759 x855)
+(or x628 x226)
+(or x205 x967)
+(or (not x1056) x953)
+(or (not x660) x1301)
+(or (not x515) x283)
+(or x1332 x1123)
+(or (not x923) x1593)
+(or x1420 x1031)
+(or (not x1315) x1287)
+(or (not x320) x271)
+(or x1421 (not x1492))
+(or x587 (not x404))
+(or x1203 (not x853))
+(or (not x1270) x365)
+(or x324 x486)
+(or (not x463) x156 (not x1540))
+(or x35 (not x1241))
+(or (not x209) x751)
+(or x1074 (not x994))
+(or (not x115) x279)
+(or x126 (not x683))
+(or x1572 (not x291))
+(or x985 (not x1543))
+(or x261 x1397)
+(or x363 x470)
+(or x1080 x1507)
+(or x1319 x136)
+(or (not x420) x1481)
+(or (not x1336) x233)
+(or x978 (not x151))
+(or (not x1167) (not x45))
+(or x113 x1339)
+(or x944 x1039)
+(or (not x765) (not x1033))
+(or (not x609) (not x1108))
+(or (not x1463) x1427)
+(or (not x1118) x1517 (not x425))
+(or (not x1568) (not x1107))
+(or (not x1442) x970)
+(or (not x513) x1540)
+(or x713 (not x1575))
+(or (not x779) x1409)
+(or (not x440) (not x1141))
+(or (not x1407) x73)
+(or (not x1368) x211)
+(or x709 (not x1008))
+(or (not x56) (not x573))
+(or x1126 (not x1503))
+(or x861 (not x256))
+(or (not x1551) x1136)
+(or x1476 (not x128))
+(or (not x1076) x649)
+(or (not x366) x1104)
+(or x1274 x604 x1191 (not x830))
+(or (not x209) x1334)
+(or (not x297) x576)
+(or (not x511) (not x233))
+(or (not x1107) (not x1261))
+(or x1111 (not x13))
+(or (not x1462) x1050)
+(or x900 x226)
+(or x258 x368)
+(or (not x1421) x565 x1492)
+(or (not x775) (not x1101))
+(or (not x1486) (not x1361))
+(or (not x684) x1498)
+(or (not x612) (not x1278))
+(or (not x100) (not x1294))
+(or (not x43) x636)
+(or x1064 x1059)
+(or (not x1422) x334)
+(or (not x1505) (not x1125))
+(or x1106 x247)
+(or x699 (not x756) x583)
+(or (not x27) (not x802))
+(or x182 (not x854))
+(or x824 x103 (not x1265) (not x1018))
+(or (not x978) (not x1579) (not x1006) x601 x600)
+(or x440 x983 (not x379) (not x1169) x923)
+(or (not x951) (not x1230))
+(or (not x631) (not x81))
+(or (not x1539) x639)
+(or (not x1376) (not x74))
+(or x1383 (not x480))
+(or x1228 x105)
+(or (not x1327) (not x1539))
+(or x1550 (not x654))
+(or (not x1445) x1008 x1224 x259)
+(or (not x569) (not x874))
+(or x1077 x1369)
+(or (not x1207) x1475)
+(or (not x718) (not x1419))
+(or (not x186) x1342)
+(or x318 (not x502))
+(or x1570 x901)
+(or x504 x396)
+(or x59 (not x128))
+(or (not x1557) x164)
+(or (not x462) (not x416))
+(or x517 (not x187))
+(or (not x964) x1307)
+(or x998 x1221)
+(or x785 x776)
+(or (not x1549) x1580)
+(or (not x1096) x1351)
+(or x899 x202)
+(or x803 (not x315))
+(or (not x38) (not x1297))
+(or x354 (not x434))
+(or x185 (not x9))
+(or x467 x659)
+(or (not x285) (not x523))
+(or (not x399) (not x907))
+(or x881 x1348 x56 (not x33) x64)
+(or (not x1504) x579)
+(or (not x540) (not x845))
+(or x1363 x1273)
+(or (not x961) x1020)
+(or (not x1505) (not x456))
+(or x689 x1162)
+(or x639 (not x1496))
+(or x880 x338)
+(or (not x633) x651)
+(or x230 (not x599))
+(or x174 x40)
+(or x843 x307)
+(or (not x1134) x733)
+(or (not x847) x1106)
+(or x730 x1235 (not x982) x667 x1005)
+(or (not x1134) x47)
+(or (not x579) (not x727) (not x1080))
+(or (not x436) x611 x699)
+(or x1483 (not x387) x732 (not x243))
+(or x501 x1030)
+(or x47 x1550)
+(or (not x676) (not x269) (not x301) (not x844))
+(or (not x218) (not x569))
+(or x1406 (not x418))
+(or x336 x229)
+(or (not x442) x1231 (not x74) (not x1521))
+(or x1463 (not x25) (not x1427) (not x771) (not x1076) (not x292) (not x1148))
+(or x766 x1304)
+(or x726 (not x1192))
+(or x757 x334)
+(or (not x515) (not x9))
+(or x1204 x936)
+(or x1244 (not x404))
+(or (not x964) x838)
+(or (not x179) x1111)
+(or x731 (not x91))
+(or x911 x34)
+(or (not x371) x731)
+(or (not x989) x1214)
+(or x92 (not x1497))
+(or x1193 (not x1237))
+(or (not x765) x1070)
+(or x567 x443)
+(or x80 x1081)
+(or x1320 x184)
+(or (not x374) (not x1047))
+(or (not x1564) (not x181))
+(or x460 x630)
+(or x666 (not x646))
+(or (not x1223) (not x695))
+(or x241 x1009)
+(or (not x688) (not x595))
+(or (not x1159) (not x943))
+(or x1113 (not x138))
+(or x786 x643)
+(or x591 (not x1216))
+(or x1068 (not x841))
+(or x771 x292)
+(or (not x1348) (not x429))
+(or (not x416) x365)
+(or x1535 x127)
+(or (not x1365) (not x1036))
+(or (not x692) x766)
+(or (not x947) (not x453) (not x113) x1328 (not x1563) (not x1339))
+(or (not x1222) x1111)
+(or x193 (not x624))
+(or x145 x481 (not x1437) (not x1457))
+(or (not x224) (not x1549))
+(or (not x700) (not x866))
+(or x801 (not x1564))
+(or x359 (not x519))
+(or (not x13) (not x516))
+(or x1580 (not x802))
+(or (not x1216) (not x732))
+(or (not x891) x781)
+(or x1123 x477)
+(or x105 (not x550))
+(or (not x78) (not x569))
+(or (not x617) (not x996))
+(or (not x383) (not x328))
+(or (not x1225) x701)
+(or (not x1557) x898)
+(or x1491 (not x455))
+(or (not x613) x642)
+(or (not x813) (not x385) x165 x151)
+(or (not x1310) (not x997))
+(or x221 x673)
+(or x630 (not x1183))
+(or (not x1361) (not x142))
+(or x172 x675)
+(or x1147 (not x515))
+(or (not x779) x562)
+(or x793 (not x949))
+(or (not x860) x193)
+(or (not x734) x625)
+(or x1061 (not x1306))
+(or x803 x166)
+(or x810 (not x1155))
+(or x1318 x1383)
+(or (not x320) x1370)
+(or x1589 (not x391))
+(or (not x1549) (not x724))
+(or x1456 x1275)
+(or x413 (not x319))
+(or (not x1152) x587)
+(or (not x54) x17)
+(or (not x1207) (not x794))
+(or (not x797) x478)
+(or x240 (not x454))
+(or (not x802) (not x881))
+(or x1229 (not x773))
+(or (not x333) x1574)
+(or (not x505) x753)
+(or (not x440) (not x1536))
+(or (not x1427) x1067 x804 x187 (not x1109) x290 (not x1390) x962)
+(or (not x596) (not x980))
+(or x1166 (not x123) (not x878) (not x1397) x1539)
+(or (not x802) x172)
+(or x442 (not x1270))
+(or (not x730) x1526)
+(or (not x8) (not x316))
+(or x1102 (not x1160))
+(or (not x1245) (not x233))
+(or x484 x1068)
+(or x1445 (not x1224))
+(or x134 (not x903))
+(or (not x698) x1197)
+(or x758 (not x177))
+(or (not x822) (not x141))
+(or (not x653) x501)
+(or (not x773) (not x862))
+(or (not x979) x508)
+(or (not x26) (not x458) (not x158) x552)
+(or (not x201) (not x19))
+(or (not x358) (not x1505))
+(or x851 (not x741))
+(or (not x1052) x1485)
+(or (not x700) x1184)
+(or (not x265) (not x1036))
+(or x1474 x816)
+(or (not x752) x776)
+(or x166 (not x469))
+(or (not x1149) x886)
+(or x500 (not x288))
+(or (not x109) (not x218))
+(or x365 (not x1194))
+(or (not x401) x675)
+(or x18 (not x538))
+(or x880 (not x1108))
+(or x1436 (not x514))
+(or (not x350) (not x38))
+(or x1398 (not x63))
+(or (not x696) (not x439))
+(or (not x1046) (not x1113) x179)
+(or x641 x614)
+(or (not x1591) (not x115))
+(or (not x348) (not x1256))
+(or x99 (not x1107))
+(or (not x707) x918 x590 (not x242) (not x1518) (not x234))
+(or x1020 (not x891))
+(or (not x1218) x282)
+(or (not x330) x479)
+(or (not x708) x803)
+(or x172 (not x1549))
+(or x941 (not x1582))
+(or x823 x606 x1144 x1176 (not x407))
+(or (not x41) x397)
+(or x744 (not x114))
+(or (not x976) x738)
+(or (not x250) x294 (not x208) x655 x554 (not x1009) x653)
+(or x955 (not x1494))
+(or (not x1404) x119)
+(or (not x11) x1277)
+(or x80 x197)
+(or (not x1267) (not x4))
+(or (not x1196) (not x696))
+(or x346 (not x1299))
+(or x1416 (not x629))
+(or x1277 x1014)
+(or x415 (not x177))
+(or x614 (not x1464))
+(or x1040 (not x552))
+(or (not x1591) (not x599))
+(or (not x547) x102)
+(or (not x305) (not x126) (not x266) (not x1213))
+(or (not x42) x1088)
+(or (not x511) x1597)
+(or x1130 (not x787))
+(or x850 x311)
+(or (not x564) x384)
+(or x1085 (not x1312))
+(or (not x369) (not x1419))
+(or (not x448) (not x646))
+(or x1198 (not x820))
+(or (not x510) x1347)
+(or x1214 (not x1255))
+(or x1221 x223)
+(or (not x1205) x1451 x490 (not x963) x1151)
+(or (not x1500) (not x527) x1196 (not x1198))
+(or (not x850) x1443 x1158 x594 (not x812))
+(or (not x617) x40)
+(or x838 x941)
+(or x232 (not x88))
+(or (not x1241) x1094)
+(or x1140 x1147)
+(or (not x1463) x771)
+(or (not x252) (not x141))
+(or (not x694) (not x930))
+(or (not x312) x1240)
+(or x630 (not x1560))
+(or x286 x546)
+(or x274 x397)
+(or (not x128) x713)
+(or x47 x837)
+(or (not x1434) (not x485))
+(or (not x826) x828)
+(or (not x1563) (not x36) x547 x1557)
+(or x1548 x509)
+(or x1115 x470)
+(or x175 x656)
+(or x766 x731)
+(or x1100 (not x950))
+(or x528 x496)
+(or x124 x489)
+(or (not x1081) x412)
+(or (not x1582) x883)
+(or (not x251) (not x868))
+(or x1480 x567)
+(or x1229 x673)
+(or x788 x710)
+(or x686 (not x596))
+(or (not x330) (not x1179))
+(or x1403 x886)
+(or (not x1432) (not x181))
+(or (not x549) (not x667))
+(or (not x754) x1370)
+(or x1130 x1418)
+(or (not x885) x7 (not x70))
+(or x785 x1550)
+(or x1500 x527)
+(or x955 (not x28))
+(or x614 (not x1536))
+(or x1400 (not x1392))
+(or (not x1144) x1307)
+(or (not x295) (not x1180))
+(or (not x100) x105)
+(or (not x1486) x1511)
+(or (not x146) (not x471) x775)
+(or x1042 (not x31))
+(or (not x357) (not x763))
+(or (not x1162) (not x1461))
+(or x460 (not x1190))
+(or x673 x512)
+(or x445 x936)
+(or x914 x1321)
+(or x245 x1371)
+(or x150 x774 (not x1271))
+(or x576 (not x159))
+(or x597 x953)
+(or (not x962) x1427)
+(or (not x450) x1132)
+(or x57 (not x1311))
+(or x79 x670)
+(or (not x1274) (not x1098))
+(or x1401 (not x319))
+(or x1175 (not x217))
+(or x1522 (not x409))
+(or x784 (not x1217))
+(or (not x220) (not x1191))
+(or (not x252) x283)
+(or (not x254) x23)
+(or (not x322) (not x1451))
+(or x1139 x1130)
+(or x508 (not x822))
+(or x396 x1572)
+(or x1481 (not x294))
+(or x585 x1408)
+(or (not x272) x578)
+(or (not x1536) (not x452))
+(or (not x814) (not x1492))
+(or (not x462) x200)
+(or (not x1297) (not x617))
+(or (not x110) x4 x1267 x1297 x278)
+(or x326 x1262)
+(or x1436 x671)
+(or x326 (not x1367))
+(or (not x976) x1175)
+(or x221 x940)
+(or x1506 (not x932))
+(or x1522 (not x224))
+(or x1492 x1093)
+(or x1048 (not x10))
+(or x1236 (not x481))
+(or (not x564) x174)
+(or x636 x778)
+(or (not x1478) (not x373))
+(or (not x291) (not x506))
+(or x1184 x1102)
+(or x1272 (not x1055))
+(or (not x951) (not x1125))
+(or x1135 (not x1463))
+(or x1522 (not x469))
+(or x25 x339)
+(or x517 (not x1542))
+(or x357 (not x610) (not x1206) x201)
+(or x30 (not x1453))
+(or x944 (not x417))
+(or x1584 (not x613))
+(or (not x492) x1345)
+(or x1481 (not x27))
+(or (not x1052) x1246)
+(or (not x1054) (not x461))
+(or (not x961) x17)
+(or x242 (not x918))
+(or (not x1360) (not x1218))
+(or x1295 (not x796))
+(or x432 x517)
+(or x1579 x936)
+(or (not x856) x509)
+(or (not x621) x445)
+(or x923 (not x1593) x1252 x1553)
+(or (not x1245) x212)
+(or (not x946) (not x866))
+(or (not x1019) (not x472))
+(or x370 x884)
+(or (not x1388) (not x877))
+(or (not x1283) (not x340))
+(or (not x186) (not x1000))
+(or (not x1513) x496)
+(or x1213 x126)
+(or x1556 x83)
+(or (not x1007) x1514)
+(or (not x139) x228)
+(or x764 (not x880) (not x818) (not x276))
+(or (not x459) (not x1294))
+(or (not x1190) x385)
+(or x799 (not x490))
+(or (not x1274) (not x350))
+(or (not x316) x1187)
+(or x1237 x722 (not x453) (not x1193) x1195)
+(or (not x764) x105)
+(or x1584 (not x743))
+(or (not x915) (not x627))
+(or x907 x423 (not x1027))
+(or (not x1033) x276)
+(or (not x383) x1574)
+(or (not x714) x247)
+(or x26 x458)
+(or x686 x738)
+(or x810 x144)
+(or (not x1149) x332)
+(or x791 (not x395))
+(or (not x1493) x591)
+(or (not x1596) (not x645))
+(or (not x340) (not x260))
+(or x1214 x776)
+(or x707 x234)
+(or x720 x474 x574 (not x1540) x513)
+(or (not x187) (not x1090))
+(or x1246 x936)
+(or x693 (not x1190))
+(or (not x837) (not x1340) x668 (not x900) (not x967))
+(or x909 (not x1235))
+(or (not x808) x1018)
+(or (not x617) (not x252))
+(or x614 (not x1230))
+(or x1510 (not x989))
+(or x1121 x1243)
+(or (not x796) (not x1412))
+(or (not x983) x379)
+(or x110 (not x840))
+(or x1567 x563)
+(or (not x930) (not x452))
+(or x1145 (not x1299))
+(or x704 (not x545))
+(or x1243 x199)
+(or x488 x1168 x1306 (not x3) x1222 x606 (not x1111))
+(or x1374 (not x718))
+(or (not x1098) (not x399))
+(or (not x1588) (not x1378))
+(or x768 x377)
+(or (not x173) x843)
+(or x361 (not x654))
+(or x919 (not x1062))
+(or x655 (not x1545) x531 x13 (not x1111) x1122)
+(or (not x1154) (not x1484))
+(or x1522 (not x1138))
+(or (not x1587) x1567)
+(or (not x775) (not x525))
+(or (not x183) (not x754))
+(or (not x165) x385)
+(or x1049 x1467)
+(or x904 (not x8))
+(or (not x422) x680 x1276)
+(or (not x523) x216)
+(or (not x945) (not x487))
+(or (not x1296) (not x556))
+(or (not x285) x1387)
+(or x33 x168)
+(or (not x104) (not x408))
+(or x96 (not x1215))
+(or (not x605) (not x1457) x81)
+(or (not x840) (not x259))
+(or (not x1107) x828)
+(or (not x637) (not x466))
+(or (not x797) x981)
+(or x57 (not x545))
+(or (not x107) x861)
+(or x1333 (not x870))
+(or (not x1481) (not x407) x1041 (not x280) x815 x1021)
+(or (not x91) x640)
+(or (not x1296) (not x946))
+(or x791 (not x98))
+(or (not x1290) (not x1380))
+(or (not x348) (not x1569))
+(or (not x741) x723)
+(or (not x194) x803)
+(or (not x1144) (not x1176))
+(or (not x1299) (not x330))
+(or (not x115) (not x291))
+(or x530 x206)
+(or x503 (not x549))
+(or (not x975) (not x1245))
+(or x642 (not x217))
+(or (not x1588) (not x815))
+(or (not x1173) x182)
+(or x237 x491)
+(or x1334 x199)
+(or (not x350) (not x1179))
+(or (not x852) (not x1372))
+(or (not x1312) x1208)
+(or (not x1320) (not x1552))
+(or (not x1355) (not x146) (not x361))
+(or (not x1133) x1585)
+(or x1409 x1011)
+(or x1204 x941)
+(or (not x1564) x1572)
+(or (not x294) x1009)
+(or x978 x1006)
+(or x1277 x1172)
+(or x168 (not x1432))
+(or x766 x324)
+(or (not x492) (not x962))
+(or (not x1528) (not x125))
+(or (not x561) x1120)
+(or x527 (not x1392))
+(or (not x1524) x768)
+(or x1234 x132)
+(or (not x514) x1376)
+(or (not x1451) (not x87))
+(or (not x399) (not x1343))
+(or x1523 x182)
+(or x1015 (not x853))
+(or (not x933) x247)
+(or (not x77) x221)
+(or (not x912) x970)
+(or (not x1127) (not x317))
+(or x697 (not x341))
+(or (not x189) x1322)
+(or (not x488) (not x1309))
+(or x756 (not x1168))
+(or x66 (not x814))
+(or x882 (not x209))
+(or x867 (not x866))
+(or x1305 (not x1280) x1200 (not x384) x1532)
+(or (not x1138) (not x1146))
+(or x130 x378)
+(or (not x665) (not x973))
+(or x1582 x1501 (not x941) (not x1204) x968 x601)
+(or (not x9) x120)
+(or x1193 x744)
+(or x904 (not x1090))
+(or (not x864) (not x62))
+(or (not x366) (not x1185))
+(or (not x438) x953)
+(or (not x1274) x1439)
+(or (not x94) x586)
+(or (not x296) x781)
+(or (not x352) x18)
+(or x1078 x757)
+(or (not x814) (not x406))
+(or (not x1133) (not x1564))
+(or x443 x1313)
+(or x346 (not x330))
+(or x1550 (not x11))
+(or (not x1375) x1249)
+(or (not x370) (not x587) (not x998) (not x1120))
+(or x664 x261)
+(or (not x209) (not x104))
+(or (not x417) x517)
+(or (not x1146) x1165)
+(or x818 x705)
+(or (not x795) (not x869) x840)
+(or (not x1194) (not x951))
+(or (not x327) (not x1477))
+(or x963 (not x1181))
+(or (not x133) x738)
+(or x458 (not x1036))
+(or (not x995) x710)
+(or (not x1191) x584)
+(or (not x832) (not x510))
+(or (not x1230) (not x1194))
+(or (not x928) (not x371))
+(or x706 x577 x435)
+(or (not x633) x571)
+(or (not x1061) (not x782) x516 x13)
+(or (not x663) x557)
+(or x305 x801)
+(or (not x765) x1287)
+(or (not x649) (not x409))
+(or (not x1335) (not x572))
+(or (not x260) x673)
+(or x1066 (not x817))
+(or x1506 x725)
+(or x1184 (not x1160))
+(or x1081 (not x412))
+(or x1516 x1366)
+(or (not x951) (not x1302))
+(or x332 x642)
+(or (not x410) x909)
+(or x737 x1121)
+(or (not x1021) x112)
+(or (not x870) (not x958))
+(or (not x1377) (not x204))
+(or (not x1451) x162)
+(or x36 (not x547))
+(or (not x82) (not x1414))
+(or x477 x1521)
+(or (not x734) x642)
+(or x563 (not x708))
+(or (not x516) x1061)
+(or (not x464) (not x609))
+(or (not x1302) x1514)
+(or (not x406) x753)
+(or x786 x679)
+(or (not x601) x879)
+(or (not x91) x397)
+(or (not x1375) (not x156))
+(or x901 (not x1528))
+(or (not x1394) x176)
+(or (not x1057) (not x341))
+(or (not x507) (not x502))
+(or x1469 x751)
+(or (not x1239) x725)
+(or (not x1597) (not x729))
+(or (not x1170) (not x808))
+(or x136 x321)
+(or x726 (not x348))
+(or x560 x1366)
+(or x1026 (not x612))
+(or x214 (not x1521) x532 x399)
+(or x1341 x904)
+(or (not x1524) x1581)
+(or (not x483) x679)
+(or x1161 x1061)
+(or x861 (not x157))
+(or x17 (not x177))
+(or (not x1107) x161)
+(or x367 x1283 (not x200) x340)
+(or x378 (not x852))
+(or x882 (not x104))
+(or (not x253) x1416)
+(or x148 x558)
+(or x176 (not x783))
+(or (not x451) x500)
+(or x432 (not x8))
+(or (not x29) (not x659) x821 (not x990))
+(or (not x4) (not x1025))
+(or (not x968) (not x1582))
+(or x1523 x1466)
+(or x1507 (not x1297))
+(or (not x1451) (not x1151))
+(or x112 (not x700))
+(or (not x897) (not x868))
+(or (not x606) (not x1176))
+(or (not x951) x1074)
+(or (not x1194) (not x683))
+(or x961 (not x15) (not x512) x260 (not x1229) (not x673) x464)
+(or x221 (not x980))
+(or (not x244) (not x1211))
+(or x671 (not x287))
+(or x229 (not x335))
+(or x1266 x906)
+(or x1321 x885)
+(or (not x155) x1131)
+(or (not x401) x223)
+(or (not x272) (not x631))
+(or x1214 x753)
+(or (not x412) (not x315))
+(or (not x968) (not x447))
+(or x1537 x273)
+(or x280 x721)
+(or x742 (not x773))
+(or (not x1402) (not x1232))
+(or x1186 x426)
+(or (not x1036) (not x1173))
+(or (not x1525) x696 x787 (not x967) x637 (not x812))
+(or (not x805) x1468)
+(or x776 (not x1392))
+(or x504 x1527)
+(or (not x1456) (not x1275))
+(or (not x1022) (not x19))
+(or x1043 (not x1087))
+(or (not x139) x1139)
+(or (not x823) x529)
+(or (not x251) x1044)
+(or (not x380) (not x1230))
+(or x158 x26)
+(or x242 (not x543))
+(or (not x183) x575)
+(or (not x48) (not x1436) (not x50) (not x671) (not x584) x231)
+(or x1387 x1077)
+(or x725 x1482)
+(or (not x1559) x169)
+(or (not x935) x162)
+(or (not x1367) (not x1588))
+(or x208 x778)
+(or x922 (not x588))
+(or (not x270) x338)
+(or x992 (not x472))
+(or x1509 x221)
+(or x1525 (not x1180))
+(or x15 x1333)
+(or x1491 x581)
+(or (not x1237) x1070)
+(or x35 x728)
+(or (not x142) (not x401))
+(or (not x881) x172)
+(or (not x594) (not x440))
+(or (not x1502) x255 (not x882) x472 x542 x104 x209)
+(or x1389 x57)
+(or (not x1201) (not x698))
+(or x1102 x1379)
+(or (not x475) x647)
+(or (not x903) (not x447))
+(or x1474 x1389)
+(or (not x481) x436)
+(or x1370 x642)
+(or x534 x1401)
+(or (not x1378) (not x822))
+(or (not x258) x201)
+(or (not x964) x262)
+(or (not x2) x41 (not x130) x820)
+(or (not x835) x1472 (not x1136) (not x1150) x1353)
+(or (not x87) (not x523))
+(or (not x1478) x61)
+(or (not x155) (not x278))
+(or (not x1194) x1272)
+(or (not x851) (not x571) (not x813) x741 x1002)
+(or x558 x833)
+(or (not x472) (not x53))
+(or x1583 (not x574))
+(or x51 (not x583))
+(or x1356 x744)
+(or (not x1167) (not x1434))
+(or x1121 (not x569))
+(or (not x254) (not x1217))
+(or x1540 (not x474))
+(or (not x1479) x1078)
+(or x29 x311)
+(or x768 x1120)
+(or x795 x1325)
+(or x120 (not x133))
+(or (not x718) (not x928))
+(or x1088 x607)
+(or x1010 x262)
+(or x378 x116)
+(or (not x439) x1400)
+(or (not x1037) x558)
+(or (not x181) (not x1201))
+(or x494 x1418)
+(or (not x694) (not x7))
+(or x153 (not x787))
+(or x198 (not x184) (not x676))
+(or (not x1185) (not x665))
+(or (not x583) (not x870))
+(or x563 (not x717))
+(or x381 x1031)
+(or (not x855) x1554 x352 (not x759))
+(or (not x989) (not x514))
+(or (not x949) (not x98))
+(or x875 x1106)
+(or (not x1542) (not x330))
+(or (not x864) x530)
+(or (not x914) (not x422) (not x1321))
+(or x246 x861)
+(or (not x1486) (not x910))
+(or (not x645) x603)
+(or (not x45) x851)
+(or (not x1327) (not x1558))
+(or x338 x1420)
+(or (not x391) (not x151))
+(or (not x775) x146)
+(or (not x1241) (not x1171))
+(or (not x1300) x580)
+(or (not x1357) x1188 (not x360) (not x616) x698)
+(or (not x1492) (not x1185))
+(or x119 (not x1497))
+(or (not x1432) (not x1188))
+(or (not x1515) (not x1037))
+(or x1156 x760)
+(or x1076 x1374)
+(or x1130 x271)
+(or x1106 (not x661))
+(or x785 x162)
+(or (not x1536) (not x764))
+(or x544 x324)
+(or (not x1459) x972)
+(or x421 (not x9))
+(or x760 (not x1052))
+(or x1189 x929)
+(or x736 x427)
+(or x402 (not x1016))
+(or x371 x1464 (not x886) x1149 x1158 x1141)
+(or (not x348) (not x343))
+(or (not x623) x1032)
+(or (not x695) (not x634))
+(or x630 (not x155))
+(or (not x655) x1111)
+(or (not x1112) (not x1312))
+(or x658 x202)
+(or (not x859) x689)
+(or x1035 x1202)
+(or (not x1415) (not x516))
+(or x442 (not x416))
+(or (not x912) x161)
+(or x359 (not x908))
+(or (not x115) x134)
+(or (not x965) x739)
+(or x567 (not x1037))
+(or (not x323) x305)
+(or (not x371) x413)
+(or x321 x1319)
+(or x463 (not x156))
+(or x18 x1571)
+(or (not x1237) (not x1459))
+(or x1488 (not x463) (not x363))
+(or (not x1220) (not x186))
+(or (not x958) (not x323))
+(or (not x999) (not x772))
+(or x1518 x755)
+(or x751 (not x817))
+(or x205 (not x275))
+(or (not x1123) x251 x868 (not x477) x510)
+(or x677 x453)
+(or x496 (not x1490))
+(or (not x826) x47)
+(or x136 x517)
+(or (not x306) (not x60))
+(or x1533 (not x386))
+(or x171 (not x1084))
+(or (not x1308) (not x30) x198 (not x6) (not x230) x423 x1358)
+(or x1436 (not x1134))
+(or x1184 (not x167))
+(or (not x1019) x948)
+(or x509 x1363)
+(or x526 (not x1586) x556)
+(or x1346 (not x1275))
+(or x1125 (not x988) (not x1234) x1230 x951 (not x132) (not x1228) x1194 x1302)
+(or (not x891) (not x1034))
+(or (not x252) (not x1378))
+(or x289 (not x224))
+(or x941 x799)
+(or (not x259) x1080)
+(or x1395 (not x1560))
+(or (not x350) x136)
+(or x1580 (not x1588))
+(or (not x860) x403)
+(or x281 (not x823))
+(or x586 (not x745))
+(or (not x330) x66)
+(or (not x692) (not x663))
+(or (not x305) (not x768) x1343 x323 (not x498) x1493)
+(or (not x1253) x478)
+(or x679 (not x836))
+(or (not x695) (not x122))
+(or (not x561) x768)
+(or x354 x250)
+(or x691 (not x519))
+(or x1199 (not x1132))
+(or x422 (not x680))
+(or x784 (not x1426))
+(or (not x143) (not x420))
+(or (not x745) (not x1532))
+(or x338 x1498)
+(or x1058 x1586)
+(or x1092 x723)
+(or x1538 (not x357))
+(or x132 x1352)
+(or x1262 x1121)
+(or x788 x1069)
+(or (not x246) (not x463) (not x34) (not x123))
+(or (not x374) x1476)
+(or x97 (not x552))
+(or x534 x1136)
+(or x850 x812)
+(or x638 x671)
+(or x1259 x1420)
+(or x442 (not x469))
+(or (not x572) x1199)
+(or (not x345) (not x1064))
+(or (not x617) x1510)
+(or x1461 x1376)
+(or x738 x567)
+(or x1416 x105)
+(or x421 x12)
+(or x603 (not x1596))
+(or x888 (not x1538) x1060)
+(or x1219 (not x1582))
+(or (not x374) x346)
+(or (not x815) (not x1041))
+(or (not x858) x756)
+(or (not x646) x1051)
+(or (not x687) (not x752))
+(or (not x859) x535)
+(or (not x13) x1545)
+(or x713 x1370)
+(or x402 (not x8))
+(or x678 (not x1367))
+(or x268 (not x454))
+(or x425 (not x1237))
+(or (not x874) x1262)
+(or (not x1487) (not x374))
+(or x647 (not x1314))
+(or (not x688) (not x1239))
+(or (not x214) (not x457))
+(or x1206 (not x201))
+(or x992 x18)
+(or x211 x1342)
+(or (not x1367) (not x1388))
+(or (not x619) x1523)
+(or (not x701) x81)
+(or x1556 (not x1528))
+(or x676 x301)
+(or (not x1557) x1563)
+(or (not x405) x178)
+(or (not x1290) (not x918))
+(or (not x428) (not x619))
+(or (not x933) x1213)
+(or x825 (not x510))
+(or (not x1181) x1346)
+(or (not x155) x268)
+(or x1467 x1097)
+(or (not x315) x1291)
+(or (not x796) x1401)
+(or x443 x686)
+(or (not x519) (not x646))
+(or (not x958) x51)
+(or x1094 (not x1110))
+(or x310 (not x1112))
+(or (not x157) x911)
+(or x705 x1205)
+(or x95 (not x106))
+(or (not x1353) x1136)
+(or x1015 (not x1407))
+(or (not x265) (not x1590))
+(or (not x1412) x1475)
+(or (not x1222) x354)
+(or x1422 (not x1346) (not x893) x1275 x910)
+(or x1284 x368)
+(or (not x958) (not x209))
+(or (not x796) x1071)
+(or x1439 (not x190))
+(or x1032 (not x979))
+(or (not x935) x777)
+(or (not x1503) x1129)
+(or (not x672) (not x1512))
+(or (not x345) (not x808))
+(or x1293 x702)
+(or x670 x354)
+(or x1082 (not x1182))
+(or x1140 x1321)
+(or (not x1378) x508)
+(or (not x298) x1291)
+(or (not x4) (not x1494))
+(or (not x1499) (not x429))
+(or (not x569) x807)
+(or (not x617) x12)
+(or (not x665) x389)
+(or (not x1415) x1482)
+(or (not x637) (not x696))
+(or x199 (not x111))
+(or x1137 x1345)
+(or (not x1089) (not x1261))
+(or x1102 (not x1245))
+(or (not x1273) x996 x157 (not x1514) (not x924))
+(or (not x764) x993)
+(or (not x1552) (not x1269) (not x585) (not x1408))
+(or x460 x246)
+(or x1516 (not x1365))
+(or x738 (not x1107))
+(or (not x891) x1280)
+(or (not x1467) x895 x566)
+(or (not x515) x788)
+(or x896 x1247)
+(or (not x951) x500)
+(or x833 (not x89))
+(or (not x1499) (not x769))
+(or (not x977) (not x1216))
+(or (not x1573) x249)
+(or x44 x1446)
+(or (not x1274) x1390)
+(or (not x1094) (not x35) x1241 x1110 (not x883))
+(or (not x857) (not x1309))
+(or x102 x299)
+(or (not x1501) x67)
+(or x136 x1579)
+(or (not x451) (not x163))
+(or x1323 x248)
+(or x245 (not x192))
+(or x245 x584)
+(or x1249 x1334)
+(or x499 x1580)
+(or x1318 x79)
+(or (not x1369) (not x1437) x841)
+(or (not x1154) x998)
+(or (not x284) x1246)
+(or x250 x1150)
+(or (not x439) x955)
+(or (not x1407) (not x864))
+(or x766 x346)
+(or x467 (not x826))
+(or (not x207) x1468)
+(or x725 (not x1185))
+(or x1186 (not x1089))
+(or (not x791) (not x74) x343 (not x1352))
+(or x768 x305)
+(or (not x1144) (not x207))
+(or x351 x1004)
+(or (not x1122) x1545)
+(or x1240 x2)
+(or x828 x205)
+(or (not x239) x800)
+(or (not x973) x1049)
+(or (not x190) x137)
+(or (not x623) x1293)
+(or (not x1002) x851)
+(or x172 x1109)
+(or x146 x361)
+(or (not x335) (not x549))
+(or (not x765) (not x203))
+(or x1405 x360)
+(or x536 x557)
+(or (not x307) x714)
+(or (not x964) (not x69))
+(or x1035 x792)
+(or x18 (not x551))
+(or (not x1132) (not x794))
+(or (not x1588) x508)
+(or (not x754) x713)
+(or (not x779) x1161)
+(or x486 (not x1354))
+(or x1228 x1234)
+(or x425 (not x114))
+(or (not x961) x924)
+(or (not x551) x844)
+(or x1295 (not x1592))
+(or x630 x110)
+(or x1508 x1420)
+(or (not x1122) (not x531))
+(or x1489 (not x406))
+(or x1198 x39)
+(or x1266 x1136)
+(or x168 x742)
+(or x208 (not x446))
+(or (not x822) x1594)
+(or x765 (not x1287) x1315 (not x620))
+(or (not x1256) x809)
+(or (not x1493) x1333)
+(or x237 x1323)
+(or (not x800) (not x582))
+(or (not x615) x1336)
+(or x1080 x460)
+(or x1551 (not x1074) x805 x49 (not x1468) (not x1466) (not x1516) x1324)
+(or (not x634) (not x1388))
+(or (not x1194) (not x1055))
+(or x246 (not x1182))
+(or x250 (not x871))
+(or (not x983) x1262)
+(or x246 x34)
+(or (not x8) x1341)
+(or x1229 (not x260))
+(or x559 (not x824))
+(or x1003 x1570)
+(or (not x1222) (not x606))
+(or x1246 x1006)
+(or x256 x926 (not x798) x1488)
+(or (not x59) x868)
+(or (not x1188) x1357)
+(or (not x954) x1162)
+(or (not x602) (not x1577))
+(or (not x949) x1205)
+(or x991 (not x1465))
+(or x1454 (not x1047))
+(or (not x62) (not x374))
+(or (not x654) (not x1209))
+(or x1111 (not x488))
+(or x1003 (not x77))
+(or x55 x1163)
+(or (not x1225) (not x515))
+(or x85 (not x1082) x1515 (not x939) x1166)
+(or (not x1116) x1092)
+(or x1481 (not x337))
+(or x364 x671)
+(or (not x418) x921)
+(or x67 (not x907))
+(or x136 (not x355))
+(or (not x634) (not x870))
+(or (not x802) (not x252))
+(or (not x429) (not x163))
+(or x164 x917)
+(or x1170 x513 x808)
+(or (not x1443) (not x1158))
+(or (not x1125) x1228)
+(or x578 (not x834))
+(or x1145 x24)
+(or (not x1343) x1014)
+(or x405 (not x178))
+(or x909 (not x322))
+(or x674 (not x42))
+(or x990 (not x954))
+(or x127 (not x447))
+(or (not x371) x1374)
+(or x1009 (not x554))
+(or (not x515) x1069)
+(or (not x1021) x211)
+(or x673 x1561)
+(or (not x1159) x638)
+(or (not x502) x1366)
+(or x1583 (not x657))
+(or (not x802) x1507)
+(or (not x1224) (not x345))
+(or x947 (not x54))
+(or (not x1588) x326)
+(or (not x1134) x1319)
+(or (not x1174) x990)
+(or x129 x470)
+(or x1048 (not x482))
+(or x389 x777)
+(or x164 x1509)
+(or x269 x597)
+(or (not x698) (not x1188))
+(or x211 x985)
+(or (not x864) (not x371))
+(or x1048 (not x259))
+(or x1099 x947)
+(or x48 x1436)
+(or x132 (not x1230))
+(or x940 x164)
+(or (not x505) x530)
+(or (not x1501) (not x968))
+(or (not x1055) (not x862))
+(or x636 (not x416))
+(or (not x260) (not x295))
+(or x1193 (not x722))
+(or x1039 x508)
+(or x880 x212)
+(or x1393 x1454)
+(or x1160 x298 x860 x5 (not x25) (not x339) (not x1291))
+(or (not x513) (not x720))
+(or (not x1170) x960)
+(or x893 x1491)
+(or (not x82) x1509)
+(or x1468 x1466)
+(or x710 (not x873))
+(or (not x864) (not x761))
+(or x1020 x212)
+(or (not x755) x1429 x1060)
+(or (not x1157) (not x406))
+(or (not x823) (not x1176))
+(or x224 x306 x60 x1549)
+(or (not x356) x131)
+(or x1097 (not x1212))
+(or (not x317) x1526)
+(or (not x1057) (not x1560))
+(or (not x1059) x792)
+(or (not x1151) x1511)
+(or x1584 x1399)
+(or (not x264) x934)
+(or x153 (not x1158))
+(or (not x1257) x1221)
+(or (not x89) (not x1359))
+(or (not x1181) x879)
+(or x273 (not x959))
+(or x686 (not x1497))
+(or x475 (not x1053) (not x1571) (not x262))
+(or x109 (not x1475) x505 (not x112) x1021 x1227)
+(or (not x1218) x518)
+(or x361 (not x600))
+(or (not x1217) x23)
+(or (not x1350) (not x452))
+(or (not x821) (not x623))
+(or (not x1415) x299)
+(or x1094 (not x831))
+(or (not x19) (not x398))
+(or x707 x242)
+(or x952 x1555)
+(or (not x946) (not x951))
+(or (not x439) x1452)
+(or x1597 x733)
+(or (not x51) x103 x583 (not x1574))
+(or x1332 x59)
+(or x1004 x360)
+(or (not x1532) x118)
+(or (not x449) x1131)
+(or x758 x842)
+(or (not x316) x524)
+(or x737 x664)
+(or x1369 x1437)
+(or (not x845) (not x1041))
+(or x988 (not x602))
+(or x460 (not x259))
+(or (not x973) x1471)
+(or x1009 x1003)
+(or x1511 x792)
+(or x1193 (not x1146))
+(or (not x87) (not x285))
+(or (not x85) (not x1166))
+(or x988 (not x1125))
+(or (not x1448) (not x13))
+(or (not x661) (not x177))
+(or (not x1504) (not x979))
+(or (not x218) x419)
+(or x985 x1293)
+(or (not x464) x1229)
+(or x1390 (not x187))
+(or x589 (not x1372))
+(or (not x85) x835)
+(or x10 (not x1371) (not x1466) (not x1048) (not x245))
+(or x363 x463)
+(or (not x51) x695 x958 x209 (not x1334))
+(or x884 x929)
+(or x1136 x1480)
+(or (not x1051) x101 (not x1362) (not x1319))
+(or x935 x1392 x819 (not x776) (not x785) (not x162) x621)
+(or (not x912) x626)
+(or x632 (not x817))
+(or x245 (not x1191))
+(or (not x881) x381)
+(or x527 (not x1196))
+(or (not x244) (not x434))
+(or (not x428) x282)
+(or (not x1388) x1480)
+(or x1102 (not x983))
+(or (not x826) x1550)
+(or (not x1387) x841 (not x1068))
+(or x938 x744)
+(or (not x1477) x746)
+(or (not x956) (not x390))
+(or x1545 x1548)
+(or x1428 (not x1127))
+(or x383 (not x494) (not x1491) (not x957) x328 (not x1063))
+(or (not x316) (not x665))
+(or (not x290) (not x804))
+(or (not x1155) x1334)
+(or (not x76) (not x999))
+(or (not x943) (not x1350))
+(or x1136 x835)
+(or x1480 x1249)
+(or (not x644) x1129)
+(or (not x317) x593)
+(or (not x476) (not x468))
+(or x1316 (not x964))
+(or (not x549) x1293)
+(or x319 (not x413) (not x753) x1160 x505 x969)
+(or (not x1591) x610)
+(or x344 x17)
+(or (not x1201) (not x390))
+(or x1527 (not x480))
+(or (not x980) (not x474))
+(or (not x1513) x576)
+(or (not x795) (not x1398) x115 (not x93) x1591)
+(or x59 x1347)
+(or x548 (not x144) x32)
+(or x575 (not x437))
+(or (not x1008) x1445)
+(or x1525 x812)
+(or x1235 (not x909) x410 (not x310) (not x124))
+(or (not x769) (not x382))
+(or (not x928) (not x971))
+(or x962 x492 x60 (not x210) (not x102) x547)
+(or (not x1541) (not x615))
+(or (not x353) x1408)
+(or (not x488) (not x606))
+(or (not x320) x124)
+(or x245 (not x183))
+(or x1339 x953)
+(or (not x355) x1454)
+(or x591 (not x706))
+(or (not x113) x219 (not x23) (not x917) x1410)
+(or (not x653) x1347)
+(or x1233 (not x620) (not x916))
+(or (not x765) (not x1237))
+(or (not x121) (not x698))
+(or x293 x818)
+(or x1128 (not x1224))
+(or (not x734) x576)
+(or (not x852) (not x1060))
+(or (not x1222) (not x287))
+(or x1172 (not x1133))
+(or x140 (not x516))
+(or x1078 x685)
+(or (not x1440) (not x1324))
+(or (not x933) x67)
+(or x766 x557)
+(or (not x622) (not x1033))
+(or x419 x988)
+(or (not x1493) x305)
+(or (not x207) x529)
+(or (not x1188) x1441)
+(or x707 (not x9))
+(or x491 (not x439))
+(or x693 x249)
+(or (not x1451) (not x1513))
+(or x497 x706 (not x591))
+(or x1584 (not x404))
+(or x1446 x232)
+(or (not x857) (not x446))
+(or x830 x1289)
+(or x647 (not x1227))
+(or x1432 (not x1040) x181 (not x232) x390 x1201 (not x168))
+(or (not x1595) x762)
+(or x378 x271)
+(or (not x1002) x1074)
+(or (not x1592) (not x1278))
+(or x1439 x1121)
+(or (not x328) x1247)
+(or (not x1073) x885)
+(or (not x1261) x1042)
+(or (not x277) x1104)
+(or x432 x913)
+(or x1576 x311)
+(or (not x826) (not x1543))
+(or (not x76) (not x1233))
+(or (not x199) (not x1325) (not x1243) x111 (not x1334) x1155 (not x810))
+(or x388 (not x1110))
+(or x35 (not x16))
+(or (not x1274) x830)
+(or x967 x812)
+(or x1289 x777)
+(or (not x1504) x57)
+(or (not x85) x1082)
+(or (not x363) x1285 (not x1053) (not x238))
+(or (not x33) (not x1535) x163 x451 x908)
+(or (not x831) x978)
+(or (not x852) x560)
+(or (not x104) x1502)
+(or (not x1231) x776)
+(or x447 x903 (not x1511) x1151 x541)
+(or (not x22) (not x976))
+(or x1113 (not x1365))
+(or (not x1043) x1087)
+(or x970 x626)
+(or (not x1547) x1342)
+(or x136 (not x106))
+(or x1204 (not x1501))
+(or x670 (not x1182))
+(or (not x88) x1118)
+(or x453 x1563)
+(or x442 x1184)
+(or (not x1368) (not x464))
+(or x782 x524)
+(or (not x1462) (not x1486))
+(or x751 x666)
+(or x944 x313)
+(or (not x272) x1077)
+(or (not x330) (not x1330))
+(or x486 (not x294))
+(or (not x743) x625)
+(or (not x1232) (not x481))
+(or (not x811) x1029)
+(or x1396 x116)
+(or (not x45) (not x449))
+(or (not x411) x465)
+(or (not x383) (not x1190))
+(or (not x38) x1390)
+(or x723 x226)
+(or (not x317) (not x1278))
+(or (not x1299) x479)
+(or (not x854) (not x1083))
+(or x494 (not x943))
+(or (not x1305) (not x1532))
+(or (not x260) (not x961))
+(or (not x1046) (not x1366))
+(or x1154 (not x757) x623 (not x1221) (not x998) (not x1050) (not x1140))
+(or x1314 (not x1566) x78 (not x129) (not x96) x1292 (not x647))
+(or (not x1007) x586)
+(or x1017 (not x182) x1536 (not x1338) x764 x652 (not x1266))
+(or x1147 (not x142))
+(or x270 (not x1416) (not x50) x253)
+(or (not x596) x1032)
+(or x1545 (not x655))
+(or x1304 x1076)
+(or (not x1257) (not x76))
+(or (not x352) (not x219))
+(or (not x1275) x893)
+(or (not x395) (not x1270))
+(or x681 (not x954))
+(or x525 (not x470) x150 x434)
+(or (not x1517) (not x188))
+(or x1527 x18)
+(or x393 (not x267))
+(or x1078 (not x915))
+(or (not x1432) x1535)
+(or x36 x402)
+(or x1329 x311)
+(or (not x1026) x612 x545 x577)
+(or (not x634) (not x583))
+(or (not x473) x1019 (not x1193))
+(or (not x1029) (not x1565) (not x1264))
+(or (not x497) x498)
+(or (not x41) x234)
+(or x731 (not x215))
+(or (not x252) x467)
+(or x1135 (not x1005))
+(or (not x1364) x266)
+(or (not x1343) x1023)
+(or x152 x689)
+(or x1555 x1104)
+(or x585 x1336)
+(or (not x577) (not x612))
+(or (not x1368) x467)
+(or x33 (not x881))
+(or x786 x414)
+(or (not x997) (not x602))
+(or (not x1396) (not x1242) (not x300) x555 x45)
+(or x1030 (not x91))
+(or x1379 x166)
+(or x1510 (not x1134))
+(or x791 (not x343))
+(or x642 x739)
+(or (not x1477) x1004)
+(or x467 (not x231))
+(or x12 (not x68))
+(or x86 (not x37))
+(or (not x814) (not x448))
+(or x305 (not x1343))
+(or x732 x1164 x497)
+(or x807 x176)
+(or x426 x134)
+(or x1137 (not x10))
+(or x711 x131)
+(or (not x668) x249)
+(or (not x1084) x325)
+(or x241 x1506)
+(or (not x31) (not x109))
+(or x1126 (not x959))
+(or x35 x883)
+(or x1345 (not x306))
+(or (not x1549) x1109)
+(or x1369 x742)
+(or x1459 x1250 (not x1287))
+(or (not x968) x801)
+(or (not x80) (not x925) (not x1081))
+(or x305 x126)
+(or x1277 (not x1133))
+(or x713 x1500)
+(or x1341 (not x86))
+(or x238 x363)
+(or (not x155) x1199)
+(or x1337 (not x170))
+(or (not x997) (not x752))
+(or x346 x1454)
+(or x334 x1078)
+(or x375 x299)
+(or x643 x1295)
+(or x39 (not x1253))
+(or x113 x1563)
+(or (not x623) (not x1116))
+(or (not x285) (not x601))
+(or (not x275) x642)
+(or x1015 (not x63))
+(or (not x665) x890)
+(or x559 x674)
+(or x963 (not x1490))
+(or (not x1575) x257)
+(or (not x145) x1437)
+(or x407 (not x231))
+(or x146 x471)
+(or (not x1199) x21 x155 x1125 x1360 x619)
+(or x891 (not x1020) x306 x1479 (not x781))
+(or (not x969) x729)
+(or (not x1424) (not x27))
+(or x347 (not x1192))
+(or x347 (not x89))
+(or (not x1347) x832 x510 (not x825))
+(or (not x283) (not x40) (not x1510) (not x351) x38 x1297 x617 x252 (not x12))
+(or (not x826) (not x1157))
+(or x25 (not x409))
+(or (not x1578) x334)
+(or (not x1073) x755)
+(or (not x693) x1388 (not x1480) (not x567))
+(or x1117 x1163)
+(or (not x290) (not x1138))
+(or x1406 (not x340))
+(or x738 x443)
+(or (not x1335) (not x1072))
+(or (not x779) x1482)
+(or x1289 (not x1231))
+(or x1323 x1102)
+(or x934 x825)
+(or (not x1213) x933 (not x279) (not x247))
+(or x1039 (not x38))
+(or (not x156) x1391)
+(or (not x553) x402)
+(or (not x78) x849)
+(or x1406 x751)
+(or (not x483) (not x549))
+(or (not x854) (not x1167))
+(or x1390 (not x142))
+(or x414 x1576)
+(or (not x667) (not x724))
+(or x1028 x479)
+(or x1379 (not x1160))
+(or (not x1138) (not x1195))
+(or x1420 x906)
+(or x230 (not x198))
+(or (not x1183) x581)
+(or x266 (not x457))
+(or x777 x913)
+(or x148 (not x1166))
+(or (not x1256) (not x1569))
+(or (not x1122) (not x555))
+(or (not x277) (not x1268))
+(or (not x606) x1111)
+(or (not x790) x351)
+(or (not x213) x298 (not x195) (not x1010))
+(or (not x889) x1506)
+(or x83 x59)
+(or (not x1310) x709)
+(or x1232 (not x436) (not x1236) x481)
+(or (not x221) x618 x474 x980)
+(or (not x716) (not x1587))
+(or (not x1442) x44)
+(or x933 x910 (not x258) x541 (not x894))
+(or x768 x884)
+(or x206 x753)
+(or x196 (not x1107))
+(or (not x1190) (not x871))
+(or (not x1261) x843)
+(or x1436 (not x485))
+(or x584 x1436)
+(or (not x1302) (not x416))
+(or (not x60) x210)
+(or x132 (not x1194))
+(or (not x1431) x1500)
+(or x258 x127)
+(or x46 x1583)
+(or (not x117) x486)
+(or (not x920) (not x272))
+(or x739 (not x754))
+(or (not x1392) x981)
+(or (not x1359) (not x85))
+(or (not x1255) x40)
+(or (not x154) x598)
+(or (not x645) (not x189))
+(or (not x986) (not x860))
+(or x1291 x1012)
+(or x274 (not x420))
+(or x967 (not x696))
+(or (not x677) x949 x98 x1410)
+(or (not x313) (not x24) x613 x1326 (not x1584))
+(or (not x1183) (not x1025))
+(or (not x1541) (not x420))
+(or x453 (not x1195))
+(or x1287 (not x1250))
+(or (not x187) x432)
+(or (not x1294) x582)
+(or (not x1252) x370)
+(or x1195 x1138 (not x271) (not x378))
+(or x1278 x1149 (not x1043) x1592 (not x1208) (not x332))
+(or x834 x400 x122 x255)
+(or x801 (not x1543))
+(or (not x568) (not x290))
+(or (not x703) (not x519))
+(or x682 x444)
+(or (not x337) x679)
+(or (not x1465) x818)
+(or x1264 x1476)
+(or x484 (not x145))
+(or x867 (not x1309))
+(or x707 (not x1361))
+(or (not x857) x3)
+(or (not x1281) (not x1285))
+(or x776 (not x621))
+(or (not x590) x174)
+(or (not x739) (not x364) (not x1550) x437 x11 x826 x1157 (not x47) (not x1277))
+(or x185 (not x1361))
+(or x608 (not x858))
+(or x1078 x711)
+(or x585 x1552)
+(or x1082 (not x1166))
+(or (not x787) x1085)
+(or x129 (not x78))
+(or (not x1361) (not x401))
+(or (not x1000) x1511)
+(or x1555 (not x779))
+(or (not x1449) x993)
+(or x318 x48)
+(or x1322 x1262)
+(or (not x1422) x1346)
+(or (not x774) x1271)
+(or x436 (not x1344))
+(or (not x923) (not x1553))
+(or x1109 (not x290))
+(or x776 (not x935))
+(or (not x327) (not x824))
+(or x269 (not x1105))
+(or x771 x229)
+(or x18 x1398)
+(or (not x1201) (not x1364))
+(or (not x60) (not x962))
+(or (not x1093) x896)
+(or (not x481) (not x145))
+(or x693 (not x383))
+(or (not x214) (not x399))
+(or (not x322) (not x104))
+(or (not x721) (not x37) (not x57) x979 (not x508) (not x1389) x1504)
+(or x641 x1208)
+(or x1303 (not x619))
+(or (not x1171) (not x16))
+(or (not x375) x198 (not x286))
+(or (not x661) x902)
+(or x56 (not x403) x1503 x860 x994 (not x1126))
+(or (not x1224) x70)
+(or x487 x244 x1211 (not x129))
+(or (not x813) (not x1480) (not x1249) x1083 (not x1334) x1404)
+(or (not x1149) x767)
+(or (not x1310) x892)
+(or x1422 (not x90) x1578 (not x1370) (not x185) (not x334))
+(or x1234 x112)
+(or x1086 (not x817))
+(or (not x1517) x1304)
+(or (not x553) x1506)
+(or (not x1298) (not x1115) (not x470) (not x129))
+(or x1518 x242)
+(or x988 (not x790))
+(or (not x1377) x905)
+(or (not x483) (not x252))
+(or x257 x1418)
+(or (not x308) (not x225))
+(or (not x517) x355 (not x1319) (not x1454) x350 x1134 (not x136) (not x321))
+(or x924 x1049)
+(or (not x913) (not x778) (not x952) x143)
+(or x1468 (not x341))
+(or x384 x12)
+(or (not x1261) (not x1381))
+(or x283 (not x836))
+(or x172 x702)
+(or x1131 (not x572))
+(or (not x53) (not x312))
+(or (not x863) (not x1564))
+(or x1454 (not x406))
+(or x1329 x1594)
+(or x93 (not x115))
+(or x1131 x1445)
+(or x1208 (not x107))
+(or x134 x504)
+(or x571 x1562)
+(or (not x1001) (not x316))
+(or x496 (not x128))
+(or (not x109) x1262)
+(or x500 x1433)
+(or (not x888) (not x547))
+(or (not x687) (not x145))
+(or (not x859) x837)
+(or x1510 (not x514))
+(or (not x623) x998)
+(or x557 x530)
+(or (not x555) x1396)
+(or (not x846) x524)
+(or (not x1372) x1450)
+(or x123 x246)
+(or (not x809) x660)
+(or x1071 (not x1380))
+(or (not x1302) x132)
+(or (not x343) x1545)
+(or x29 (not x1210))
+(or x807 x1445)
+(or x1099 x23)
+(or x1198 (not x1196))
+(or (not x853) x1318)
+(or (not x1354) x934)
+(or x1228 (not x1194))
+(or x639 (not x480))
+(or x1340 x837)
+(or x387 x1597)
+(or x702 (not x779))
+(or x299 (not x1512))
+(or x292 x1165)
+(or (not x376) x450)
+(or (not x1172) (not x1014) x1133 x645 (not x1277) x1358 x1343)
+(or (not x522) x1153)
+(or (not x187) (not x1209))
+(or (not x802) (not x141))
+(or (not x1337) x304 (not x952) (not x890) x779 (not x1555))
+(or x499 x1094)
+(or (not x217) x723)
+(or x813 (not x1404))
+(or (not x111) (not x1524))
+(or x1156 x1485)
+(or x408 (not x848) x322 x104)
+(or x327 x811 x1062)
+(or (not x1405) x1477)
+(or x755 (not x1429))
+(or (not x373) (not x349))
+(or x289 (not x1134))
+(or x1293 (not x1210))
+(or x402 x759)
+(or (not x703) (not x1330))
+(or x450 (not x362))
+(or x126 (not x661))
+(or (not x448) (not x358))
+(or x810 (not x1218))
+(or x864 x438 (not x731) x371 x215 (not x413))
+(or (not x977) (not x847))
+(or x1544 (not x754))
+(or x419 (not x395))
+(or (not x1078) (not x711) (not x685) x1462 x1486 x910)
+(or x636 x1161)
+(or (not x432) (not x777) (not x389) x1209 x187 (not x936) (not x913) x935 (not x517))
+(or (not x1306) (not x1222))
+(or (not x1591) x176)
+(or x777 x517)
+(or (not x1476) x355 x613 (not x625))
+(or (not x962) (not x290))
+(or x1579 x1550)
+(or (not x716) (not x1449))
+(or (not x255) (not x834))
+(or x1024 (not x1335))
+(or (not x1255) (not x437))
+(or (not x476) x1452)
+(or x1382 (not x1007))
+(or x1100 (not x1045))
+(or x536 (not x1256))
+(or x592 x1156)
+(or x170 x8 (not x970) x43)
+(or x558 (not x32))
+(or x1349 (not x1181))
+(or (not x1170) (not x920))
+(or x792 x1118)
+(or (not x1170) (not x669))
+(or (not x840) x795)
+(or (not x1110) x35)
+(or (not x353) (not x516))
+(or (not x1282) x1163)
+(or x760 (not x1377))
+(or x463 (not x1488))
+(or x1332 (not x373))
+(or (not x1110) (not x1442))
+(or (not x860) (not x624))
+(or x301 x844)
+(or (not x49) (not x1524))
+(or (not x219) x793)
+(or x993 (not x5))
+(or x1027 x1390)
+(or (not x305) (not x1581) x863 (not x801) x1564)
+(or x160 x644 x1122)
+(or x129 (not x487))
+(or x639 x1079)
+(or x1376 (not x469))
+(or (not x772) (not x1157))
+(or (not x1275) (not x1422))
+(or (not x945) x1271)
+(or (not x335) (not x76))
+(or (not x887) x112)
+(or x735 x1428)
+(or (not x1503) (not x330))
+(or x1316 (not x461))
+(or x701 (not x81))
+(or x199 (not x1167))
+(or x223 (not x565))
+(or x723 x1013)
+(or (not x743) x226)
+(or (not x618) (not x418))
+(or x1208 (not x1278))
+(or (not x1494) x758)
+(or (not x956) x202)
+(or (not x327) (not x1062))
+(or (not x256) x1082)
+(or (not x745) x558)
+(or x1520 (not x5))
+(or (not x750) x766)
+(or x1293 x1032)
+(or x467 x753)
+(or (not x1290) (not x362))
+(or x1007 (not x527) x1392 (not x848))
+(or x206 x1393)
+(or x1355 x361)
+(or x162 (not x621))
+(or (not x187) x913)
+(or (not x1152) (not x404))
+(or x1321 x44)
+(or x58 (not x1227))
+(or x364 (not x668))
+(or (not x1350) x250)
+(or x1161 (not x1108))
+(or (not x1518) (not x755) x493)
+(or (not x950) (not x1182))
+(or (not x1134) (not x290))
+(or (not x1026) x1311 x663 x215 x369)
+(or x25 x771)
+(or x130 (not x41))
+(or x1252 (not x884) (not x1425) (not x929) (not x697) (not x370))
+(or x1452 (not x594))
+(or (not x1505) x1251)
+(or (not x1306) (not x270))
+(or (not x920) x1355)
+(or (not x1107) (not x561))
+(or (not x1460) x1322)
+(or x389 (not x1505))
+(or (not x143) x1482)
+(or (not x716) (not x315))
+(or (not x1455) (not x1355))
+(or (not x1472) (not x1353))
+(or x1339 x597)
+(or x1234 (not x138))
+(or x1226 (not x64))
+(or (not x1148) x595 x750 (not x1520) x722)
+(or (not x983) x1169)
+(or x168 (not x995))
+(or (not x1283) x742)
+(or (not x222) x966)
+(or x709 x471)
+(or x901 (not x1353))
+(or (not x1201) (not x1432))
+(or x781 (not x1479))
+(or (not x1138) x562)
+(or x25 x1427)
+(or x1042 x498)
+(or (not x1067) (not x804))
+(or x610 x1206)
+(or (not x830) (not x1070) (not x916))
+(or x469 (not x166) (not x1117) (not x442) (not x1291) (not x1012))
+(or x791 x1228)
+(or x1172 (not x1225))
+(or x1318 (not x1093))
+(or (not x584) (not x1366) (not x1307) x1144 x502 (not x1516))
+(or x453 x947)
+(or x1140 x710)
+(or (not x319) x1234)
+(or x1508 (not x836))
+(or x1172 x242)
+(or (not x1349) (not x953) x328)
+(or x966 x1004)
+(or (not x1562) x451 x1440 (not x1272) (not x1581))
+(or (not x394) x160)
+(or x54 x177 (not x1561) (not x17))
+(or x471 (not x456))
+(or x1520 (not x595))
+(or (not x977) (not x718))
+(or x731 x1030)
+(or x285 (not x1589) (not x785) (not x571) x633)
+(or (not x333) x1249)
+(or (not x429) (not x121))
+(or (not x85) x1071)
+(or (not x62) x530)
+(or x630 x1080)
+(or (not x327) (not x811))
+(or x148 (not x428))
+(or (not x297) x1533)
+(or (not x1235) (not x730))
+(or (not x1218) x1444)
+(or x1074 x1468)
+(or (not x652) x1189)
+(or x1013 x61)
+(or x1574 x59)
+(or x1441 x1221)
+(or (not x1270) x1228)
+(or (not x1516) x1365 (not x1416) (not x1113) x1434)
+(or (not x834) (not x122))
+(or (not x1595) x740)
+(or (not x1288) x1115)
+(or x1061 (not x13))
+(or (not x224) x922)
+(or (not x1559) (not x908))
+(or (not x1434) (not x1365))
+(or x1240 x1015)
+(or (not x14) (not x101))
+(or (not x690) (not x747))
+(or (not x902) x54 (not x512) (not x379))
+(or (not x556) (not x1194))
+(or x1058 x1396)
+(or x1228 x993)
+(or x1284 x279)
+(or (not x1207) (not x712))
+(or x1374 (not x971))
+(or (not x1577) x701)
+(or x426 (not x708))
+(or x1251 x95)
+(or (not x961) (not x724))
+(or (not x1083) (not x133))
+(or (not x608) (not x458))
+(or (not x588) x733)
+(or (not x553) (not x219))
+(or x828 x99)
+(or x397 x1202)
+(or x990 x29)
+(or x679 x467)
+(or x575 (not x1392))
+(or (not x1235) (not x410))
+(or (not x410) (not x122))
+(or x1527 (not x1201))
+(or (not x1017) x199)
+(or x867 (not x507))
+(or x819 x745)
+(or (not x290) (not x224))
+(or (not x745) (not x1007))
+(or (not x481) x1457)
+(or x1427 x771)
+(or x6 (not x1426))
+(or x628 x723)
+(or x1420 x1336)
+(or x197 x336)
+(or (not x1255) (not x989))
+(or x528 (not x657))
+(or (not x1492) (not x856))
+(or x1011 x1345)
+(or x48 (not x350))
+(or (not x1041) (not x545))
+(or x331 (not x265))
+(or (not x961) x828)
+(or x137 (not x908))
+(or (not x951) x132)
+(or x1454 x321)
+(or x370 x998)
+(or x902 x603)
+(or x44 x402)
+(or x898 (not x783))
+(or (not x1419) x1240)
+(or (not x596) (not x1367))
+(or x1111 (not x1168))
+(or x990 x1455)
+(or x1184 x1214)
+(or x1153 (not x340))
+(or x331 (not x1422))
+(or (not x204) (not x462))
+(or x221 (not x420))
+(or x15 (not x847))
+(or (not x1465) (not x452))
+(or x659 x679)
+(or (not x14) x1145)
+(or (not x1592) (not x440))
+(or x206 x1427)
+(or (not x1486) x707)
+(or x1265 (not x513))
+(or (not x214) x1458)
+(or x498 x843)
+(or x899 (not x316))
+(or x736 (not x814))
+(or x1401 x1523)
+(or (not x449) (not x790))
+(or x1049 (not x556))
+(or x50 x149)
+(or (not x1588) (not x822))
+(or (not x1368) x381)
+(or x628 (not x741))
+(or (not x1300) x1430)
+(or x269 x1318)
+(or x1301 (not x433))
+(or x1038 (not x341))
+(or x284 (not x934))
+(or x372 (not x1507) (not x1131) (not x1445) (not x1395) x1297 (not x92))
+(or (not x1071) x796 (not x1295) (not x835) x85 x1388 x1359)
+(or (not x10) (not x852))
+(or x1368 x167 (not x1379) (not x1102) x1160 (not x1184))
+(or x628 x1387)
+(or (not x796) (not x466))
+(or (not x866) x1115)
+(or x699 x1402)
+(or x1406 x84)
+(or x1390 (not x962))
+(or (not x660) x809)
+(or x1349 x953)
+(or x1489 (not x1239))
+(or (not x958) x279)
+(or x1461 (not x469))
+(or x311 (not x847))
+(or (not x114) (not x1263))
+(or (not x1553) x1593)
+(or (not x1191) (not x192))
+(or (not x1501) (not x657))
+(or x793 x1446)
+(or x737 (not x604))
+(or (not x188) (not x1459))
+(or (not x1105) x1318)
+(or (not x595) (not x21))
+(or x616 (not x1257))
+(or (not x1062) (not x815))
+(or x438 (not x953) (not x597) (not x1339))
+(or x894 x331)
+(or (not x1494) x1088)
+(or x435 (not x1339))
+(or x575 x1400)
+(or (not x783) x70)
+(or x1418 x1523)
+(or (not x1194) x988)
+(or x97 x359)
+(or (not x996) x1580)
+(or (not x133) x1058)
+(or x500 (not x1348))
+(or x936 x432)
+(or (not x564) (not x797))
+(or x992 (not x538))
+(or (not x437) (not x11))
+(or x91 (not x397) (not x640) x264 (not x593) (not x1202))
+(or (not x569) (not x1588))
+(or x191 x1010)
+(or (not x78) x865)
+(or x1115 (not x945))
+(or x1206 (not x357))
+(or (not x103) x51)
+(or x221 (not x1415))
+(or x314 (not x761))
+(or x36 x1088)
+(or x124 (not x203))
+(or x530 (not x475))
+(or (not x1335) x966)
+(or x991 x1184)
+(or x152 (not x1326))
+(or (not x772) x206)
+(or (not x820) (not x114))
+(or x740 x762)
+(or x111 x323 x1394 (not x1322) (not x61) x31 (not x93))
+(or x795 x1411)
+(or x37 (not x1174))
+(or x853 x438 (not x1203) x53 (not x1015) x722)
+(or x1128 x70)
+(or (not x320) (not x1300))
+(or (not x680) x274)
+(or x1333 x414)
+(or x1427 x292)
+(or x938 x640)
+(or x1085 x1340)
+(or (not x386) x641)
+(or x825 (not x832))
+(or (not x88) x793)
+(or (not x469) x1117)
+(or (not x1539) x123)
+(or x93 (not x111))
+(or x354 x1548)
+(or (not x133) x443)
+(or (not x1023) (not x242) (not x938) x543 (not x640))
+(or x354 (not x256))
+(or (not x979) x721)
+(or (not x82) x1006)
+(or x892 x1214)
+(or (not x854) (not x1055))
+(or (not x1227) x1475)
+(or (not x95) (not x635) (not x393))
+(or (not x138) (not x1215))
+(or x157 (not x191) (not x911) (not x34) (not x798) x1515)
+(or (not x667) x678)
+(or x102 (not x1415))
+(or x1525 x1100)
+(or (not x615) x1102)
+(or (not x583) (not x103))
+(or (not x32) (not x428))
+(or x66 (not x1449))
+(or (not x1125) (not x1230))
+(or (not x1159) x257)
+(or (not x692) (not x505))
+(or x1279 (not x1238) (not x1433) x1534)
+(or (not x320) (not x1263))
+(or (not x1539) x801)
+(or x381 x1474)
+(or x166 x238)
+(or (not x1181) x1063)
+(or x281 x1042)
+(or x1010 (not x975))
+(or (not x1431) x331)
+(or x528 x1574)
+(or (not x191) (not x1010) (not x363) (not x325) (not x849) (not x470))
+(or (not x1300) x767)
+(or x1537 (not x235))
+(or x419 (not x602))
+(or x1246 x524)
+(or x359 (not x1558))
+(or x251 (not x842))
+(or x494 x1491)
+(or (not x1158) x886)
+(or (not x1551) (not x1324))
+(or (not x1290) x560)
+(or (not x1542) x329)
+(or (not x1177) x503)
+(or (not x1231) (not x456))
+(or (not x543) (not x645))
+(or x1145 (not x876))
+(or (not x529) x207)
+(or x1555 (not x304))
+(or x1126 (not x1413))
+(or (not x53) (not x853))
+(or x1523 x974)
+(or (not x1465) (not x455))
+(or (not x1560) x119)
+(or x369 x540 x1216 x732)
+(or x470 x1010)
+(or x243 (not x1095))
+(or x292 x675)
+(or x498 x247)
+(or (not x1559) (not x959))
+(or (not x106) (not x654))
+(or (not x1041) x57)
+(or x141 (not x883) x372 x1220)
+(or (not x1324) x1286)
+(or x1232 x712 (not x972))
+(or x1545 x1111)
+(or x993 (not x302))
+(or x988 (not x1302))
+(or x1249 (not x1173))
+(or x459 x1250)
+(or (not x1404) x1249)
+(or (not x21) (not x619))
+(or x944 (not x959))
+(or x1289 (not x514))
+(or x212 x1467)
+(or x336 (not x573))
+(or (not x203) x719)
+(or x861 x354)
+(or x580 x153)
+(or x205 (not x564))
+(or (not x1496) (not x1000))
+(or x1427 x753)
+(or x1468 x1189)
+(or (not x302) (not x928))
+(or (not x157) x191)
+(or x1199 x1113)
+(or x802 (not x788) (not x1024) (not x1507))
+(or (not x987) x704)
+(or (not x1296) (not x456))
+(or x810 (not x1302))
+(or (not x888) (not x649))
+(or x41 (not x473))
+(or (not x996) x92)
+(or x744 x234)
+(or (not x293) x1270 (not x1228) (not x791) x395)
+(or (not x627) (not x1141))
+(or x140 x503)
+(or x1397 x726)
+(or x1287 x620)
+(or x670 (not x1084))
+(or x241 x1003)
+(or x1438 x1186)
+(or x1399 (not x1275))
+(or (not x299) (not x1011) (not x1409) x142 (not x1390))
+(or (not x529) x976 (not x1175))
+(or x49 x1524 x302 (not x1581) x806 x741 x111)
+(or (not x438) (not x853))
+(or (not x483) (not x231))
+(or (not x1397) (not x261) (not x726) (not x911))
+(or x275 (not x642) (not x1092) (not x1120) x217 (not x1172) x1116 (not x723))
+(or (not x596) x1018)
+(or (not x322) x563)
+(or x1079 (not x71))
+(or x658 x44)
+(or (not x617) x419)
+(or (not x715) (not x763))
+(or (not x961) (not x367))
+(or x682 (not x1138))
+(or x972 x1398)
+(or (not x717) x882)
+(or (not x1342) (not x211) x186)
+(or (not x752) (not x416))
+(or (not x188) x342)
+(or (not x1022) x957)
+(or x638 x364)
+(or x193 x1307)
+(or (not x275) x1092)
+(or x1313 (not x561))
+(or (not x1021) x280)
+(or x711 x685)
+(or x1251 x1331)
+(or x364 (not x819))
+(or x944 x1014)
+(or x1480 x534)
+(or x885 x402)
+(or x39 (not x820))
+(or x138 x794)
+(or (not x1296) (not x1330))
+(or (not x264) (not x516))
+(or x570 (not x715))
+(or x258 x1284)
+(or x1512 (not x656) (not x175))
+(or x494 x1063)
+(or (not x624) (not x986))
+(or x1454 x1319)
+(or x1123 (not x868))
+(or (not x1138) (not x224))
+(or x1193 x453)
+(or x1150 (not x1353))
+(or (not x750) (not x114))
+(or x1192 (not x1099) (not x23) x1016 (not x347))
+(or x12 (not x1477))
+(or (not x602) (not x1310))
+(or (not x1156) (not x592) (not x202) (not x697))
+(or x749 x1253 (not x731))
+(or (not x1285) x1115)
+(or x740 (not x836))
+(or (not x390) (not x999))
+(or x1142 x1469)
+(or (not x532) (not x399))
+(or (not x1006) x82 (not x1013))
+(or x1181 x267 (not x393) (not x963) (not x879))
+(or x419 (not x1211))
+(or (not x805) x1516)
+(or (not x366) x1204)
+(or (not x20) (not x680))
+(or (not x167) x1522)
+(or (not x1110) x1445)
+(or (not x752) x626)
+(or x904 (not x277))
+(or (not x588) x1522)
+(or (not x1440) x137)
+(or x885 x759)
+(or x205 (not x797))
+(or x913 (not x1494))
+(or (not x485) (not x139))
+(or (not x956) (not x623))
+(or x1406 x738)
+(or x1327 (not x939))
+(or x202 (not x390))
+(or x503 x658)
+(or x1162 (not x1083))
+(or x1039 x539)
+(or (not x804) x1408)
+(or x625 x1495)
+(or (not x908) x1129)
+(or x656 x675)
+(or (not x56) x403)
+(or (not x749) x248)
+(or (not x788) (not x1165) (not x1119) (not x710) x873)
+(or x1140 (not x515))
+(or x1244 x1063)
+(or x557 x993)
+(or (not x1283) x200)
+(or x292 x336)
+(or x754 (not x1544) (not x110) x183 (not x638) x568 (not x245))
+(or x1228 x988)
+(or x288 (not x1074) (not x500) x994 x1002 x550 x451 x951)
+(or x682 (not x409))
+(or (not x14) x1584)
+(or (not x846) x1471)
+(or (not x1588) x35)
+(or x176 (not x669))
+(or x1338 x182)
+(or x620 (not x159))
+(or (not x1419) (not x1531))
+(or x153 (not x1300))
+(or x413 x731)
+(or (not x145) x161)
+(or x277 x1426 (not x784) x1217)
+(or x1409 x1390)
+(or (not x618) (not x260))
+(or x1136 (not x1025))
+(or (not x308) (not x522))
+(or (not x1217) (not x1426))
+(or (not x374) (not x330))
+(or (not x1166) x1397)
+(or x1382 (not x1180))
+(or x1253 (not x153) x1158 (not x237))
+(or (not x960) x669 x1170)
+(or x711 x642)
+(or (not x446) x381)
+(or x1318 (not x480))
+(or x494 (not x1159))
+(or x257 x494)
+(or (not x954) (not x418))
+(or (not x1167) (not x138))
+(or (not x696) (not x787))
+(or (not x312) (not x298))
+(or x972 (not x472))
+(or x467 (not x989))
+(or x280 (not x1116))
+(or x1516 (not x1144))
+(or x249 x443)
+(or x635 x677)
+(or x332 (not x1592))
+(or (not x319) x753)
+(or x96 x129)
+(or x248 (not x796))
+(or (not x1515) x833)
+(or x1468 (not x1551))
+(or x539 x966)
+(or x863 x163 (not x504) (not x1527) x1364 x1201)
+(or (not x519) x1548)
+(or x1276 x515 (not x234) (not x1147) (not x1140))
+(or x1272 (not x1440))
+(or (not x383) (not x333))
+(or (not x553) x164)
+(or (not x27) x679)
+(or x1527 (not x163))
+(or (not x547) (not x1090))
+(or x336 (not x335))
+))
diff --git a/test/regress/regress4/C880mul.miter.shuffled-as.sat03-348.smt b/test/regress/regress4/C880mul.miter.shuffled-as.sat03-348.smt
new file mode 100644
index 0000000..0cce52b
--- /dev/null
+++ b/test/regress/regress4/C880mul.miter.shuffled-as.sat03-348.smt
@@ -0,0 +1,10995 @@
+;;; Taken from SAT-03 Competition Problems
+;;; http://www.satlib.org/Benchmarks/SAT/New/Competition-03/distrib-shuffled.tar.bz2
+;;; ./handmade/gomes/qwh/qwh.35.405.shuffled-as.sat03-1651.cnf.gz
+;;; Generated using dimacs_to_smt.pl
+
+(benchmark b
+:status unsat
+:logic QF_UF
+:extrapreds ((x1))
+: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))
+:extrapreds ((x770))
+:extrapreds ((x771))
+:extrapreds ((x772))
+:extrapreds ((x773))
+:extrapreds ((x774))
+:extrapreds ((x775))
+:extrapreds ((x776))
+:extrapreds ((x777))
+:extrapreds ((x778))
+:extrapreds ((x779))
+:extrapreds ((x780))
+:extrapreds ((x781))
+:extrapreds ((x782))
+:extrapreds ((x783))
+:extrapreds ((x784))
+:extrapreds ((x785))
+:extrapreds ((x786))
+:extrapreds ((x787))
+:extrapreds ((x788))
+:extrapreds ((x789))
+:extrapreds ((x790))
+:extrapreds ((x791))
+:extrapreds ((x792))
+:extrapreds ((x793))
+:extrapreds ((x794))
+:extrapreds ((x795))
+:extrapreds ((x796))
+:extrapreds ((x797))
+:extrapreds ((x798))
+:extrapreds ((x799))
+:extrapreds ((x800))
+:extrapreds ((x801))
+:extrapreds ((x802))
+:extrapreds ((x803))
+:extrapreds ((x804))
+:extrapreds ((x805))
+:extrapreds ((x806))
+:extrapreds ((x807))
+:extrapreds ((x808))
+:extrapreds ((x809))
+:extrapreds ((x810))
+:extrapreds ((x811))
+:extrapreds ((x812))
+:extrapreds ((x813))
+:extrapreds ((x814))
+:extrapreds ((x815))
+:extrapreds ((x816))
+:extrapreds ((x817))
+:extrapreds ((x818))
+:extrapreds ((x819))
+:extrapreds ((x820))
+:extrapreds ((x821))
+:extrapreds ((x822))
+:extrapreds ((x823))
+:extrapreds ((x824))
+:extrapreds ((x825))
+:extrapreds ((x826))
+:extrapreds ((x827))
+:extrapreds ((x828))
+:extrapreds ((x829))
+:extrapreds ((x830))
+:extrapreds ((x831))
+:extrapreds ((x832))
+:extrapreds ((x833))
+:extrapreds ((x834))
+:extrapreds ((x835))
+:extrapreds ((x836))
+:extrapreds ((x837))
+:extrapreds ((x838))
+:extrapreds ((x839))
+:extrapreds ((x840))
+:extrapreds ((x841))
+:extrapreds ((x842))
+:extrapreds ((x843))
+:extrapreds ((x844))
+:extrapreds ((x845))
+:extrapreds ((x846))
+:extrapreds ((x847))
+:extrapreds ((x848))
+:extrapreds ((x849))
+:extrapreds ((x850))
+:extrapreds ((x851))
+:extrapreds ((x852))
+:extrapreds ((x853))
+:extrapreds ((x854))
+:extrapreds ((x855))
+:extrapreds ((x856))
+:extrapreds ((x857))
+:extrapreds ((x858))
+:extrapreds ((x859))
+:extrapreds ((x860))
+:extrapreds ((x861))
+:extrapreds ((x862))
+:extrapreds ((x863))
+:extrapreds ((x864))
+:extrapreds ((x865))
+:extrapreds ((x866))
+:extrapreds ((x867))
+:extrapreds ((x868))
+:extrapreds ((x869))
+:extrapreds ((x870))
+:extrapreds ((x871))
+:extrapreds ((x872))
+:extrapreds ((x873))
+:extrapreds ((x874))
+:extrapreds ((x875))
+:extrapreds ((x876))
+:extrapreds ((x877))
+:extrapreds ((x878))
+:extrapreds ((x879))
+:extrapreds ((x880))
+:extrapreds ((x881))
+:extrapreds ((x882))
+:extrapreds ((x883))
+:extrapreds ((x884))
+:extrapreds ((x885))
+:extrapreds ((x886))
+:extrapreds ((x887))
+:extrapreds ((x888))
+:extrapreds ((x889))
+:extrapreds ((x890))
+:extrapreds ((x891))
+:extrapreds ((x892))
+:extrapreds ((x893))
+:extrapreds ((x894))
+:extrapreds ((x895))
+:extrapreds ((x896))
+:extrapreds ((x897))
+:extrapreds ((x898))
+:extrapreds ((x899))
+:extrapreds ((x900))
+:extrapreds ((x901))
+:extrapreds ((x902))
+:extrapreds ((x903))
+:extrapreds ((x904))
+:extrapreds ((x905))
+:extrapreds ((x906))
+:extrapreds ((x907))
+:extrapreds ((x908))
+:extrapreds ((x909))
+:extrapreds ((x910))
+:extrapreds ((x911))
+:extrapreds ((x912))
+:extrapreds ((x913))
+:extrapreds ((x914))
+:extrapreds ((x915))
+:extrapreds ((x916))
+:extrapreds ((x917))
+:extrapreds ((x918))
+:extrapreds ((x919))
+:extrapreds ((x920))
+:extrapreds ((x921))
+:extrapreds ((x922))
+:extrapreds ((x923))
+:extrapreds ((x924))
+:extrapreds ((x925))
+:extrapreds ((x926))
+:extrapreds ((x927))
+:extrapreds ((x928))
+:extrapreds ((x929))
+:extrapreds ((x930))
+:extrapreds ((x931))
+:extrapreds ((x932))
+:extrapreds ((x933))
+:extrapreds ((x934))
+:extrapreds ((x935))
+:extrapreds ((x936))
+:extrapreds ((x937))
+:extrapreds ((x938))
+:extrapreds ((x939))
+:extrapreds ((x940))
+:extrapreds ((x941))
+:extrapreds ((x942))
+:extrapreds ((x943))
+:extrapreds ((x944))
+:extrapreds ((x945))
+:extrapreds ((x946))
+:extrapreds ((x947))
+:extrapreds ((x948))
+:extrapreds ((x949))
+:extrapreds ((x950))
+:extrapreds ((x951))
+:extrapreds ((x952))
+:extrapreds ((x953))
+:extrapreds ((x954))
+:extrapreds ((x955))
+:extrapreds ((x956))
+:extrapreds ((x957))
+:extrapreds ((x958))
+:extrapreds ((x959))
+:extrapreds ((x960))
+:extrapreds ((x961))
+:extrapreds ((x962))
+:extrapreds ((x963))
+:extrapreds ((x964))
+:extrapreds ((x965))
+:extrapreds ((x966))
+:extrapreds ((x967))
+:extrapreds ((x968))
+:extrapreds ((x969))
+:extrapreds ((x970))
+:extrapreds ((x971))
+:extrapreds ((x972))
+:extrapreds ((x973))
+:extrapreds ((x974))
+:extrapreds ((x975))
+:extrapreds ((x976))
+:extrapreds ((x977))
+:extrapreds ((x978))
+:extrapreds ((x979))
+:extrapreds ((x980))
+:extrapreds ((x981))
+:extrapreds ((x982))
+:extrapreds ((x983))
+:extrapreds ((x984))
+:extrapreds ((x985))
+:extrapreds ((x986))
+:extrapreds ((x987))
+:extrapreds ((x988))
+:extrapreds ((x989))
+:extrapreds ((x990))
+:extrapreds ((x991))
+:extrapreds ((x992))
+:extrapreds ((x993))
+:extrapreds ((x994))
+:extrapreds ((x995))
+:extrapreds ((x996))
+:extrapreds ((x997))
+:extrapreds ((x998))
+:extrapreds ((x999))
+:extrapreds ((x1000))
+:extrapreds ((x1001))
+:extrapreds ((x1002))
+:extrapreds ((x1003))
+:extrapreds ((x1004))
+:extrapreds ((x1005))
+:extrapreds ((x1006))
+:extrapreds ((x1007))
+:extrapreds ((x1008))
+:extrapreds ((x1009))
+:extrapreds ((x1010))
+:extrapreds ((x1011))
+:extrapreds ((x1012))
+:extrapreds ((x1013))
+:extrapreds ((x1014))
+:extrapreds ((x1015))
+:extrapreds ((x1016))
+:extrapreds ((x1017))
+:extrapreds ((x1018))
+:extrapreds ((x1019))
+:extrapreds ((x1020))
+:extrapreds ((x1021))
+:extrapreds ((x1022))
+:extrapreds ((x1023))
+:extrapreds ((x1024))
+:extrapreds ((x1025))
+:extrapreds ((x1026))
+:extrapreds ((x1027))
+:extrapreds ((x1028))
+:extrapreds ((x1029))
+:extrapreds ((x1030))
+:extrapreds ((x1031))
+:extrapreds ((x1032))
+:extrapreds ((x1033))
+:extrapreds ((x1034))
+:extrapreds ((x1035))
+:extrapreds ((x1036))
+:extrapreds ((x1037))
+:extrapreds ((x1038))
+:extrapreds ((x1039))
+:extrapreds ((x1040))
+:extrapreds ((x1041))
+:extrapreds ((x1042))
+:extrapreds ((x1043))
+:extrapreds ((x1044))
+:extrapreds ((x1045))
+:extrapreds ((x1046))
+:extrapreds ((x1047))
+:extrapreds ((x1048))
+:extrapreds ((x1049))
+:extrapreds ((x1050))
+:extrapreds ((x1051))
+:extrapreds ((x1052))
+:extrapreds ((x1053))
+:extrapreds ((x1054))
+:extrapreds ((x1055))
+:extrapreds ((x1056))
+:extrapreds ((x1057))
+:extrapreds ((x1058))
+:extrapreds ((x1059))
+:extrapreds ((x1060))
+:extrapreds ((x1061))
+:extrapreds ((x1062))
+:extrapreds ((x1063))
+:extrapreds ((x1064))
+:extrapreds ((x1065))
+:extrapreds ((x1066))
+:extrapreds ((x1067))
+:extrapreds ((x1068))
+:extrapreds ((x1069))
+:extrapreds ((x1070))
+:extrapreds ((x1071))
+:extrapreds ((x1072))
+:extrapreds ((x1073))
+:extrapreds ((x1074))
+:extrapreds ((x1075))
+:extrapreds ((x1076))
+:extrapreds ((x1077))
+:extrapreds ((x1078))
+:extrapreds ((x1079))
+:extrapreds ((x1080))
+:extrapreds ((x1081))
+:extrapreds ((x1082))
+:extrapreds ((x1083))
+:extrapreds ((x1084))
+:extrapreds ((x1085))
+:extrapreds ((x1086))
+:extrapreds ((x1087))
+:extrapreds ((x1088))
+:extrapreds ((x1089))
+:extrapreds ((x1090))
+:extrapreds ((x1091))
+:extrapreds ((x1092))
+:extrapreds ((x1093))
+:extrapreds ((x1094))
+:extrapreds ((x1095))
+:extrapreds ((x1096))
+:extrapreds ((x1097))
+:extrapreds ((x1098))
+:extrapreds ((x1099))
+:extrapreds ((x1100))
+:extrapreds ((x1101))
+:extrapreds ((x1102))
+:extrapreds ((x1103))
+:extrapreds ((x1104))
+:extrapreds ((x1105))
+:extrapreds ((x1106))
+:extrapreds ((x1107))
+:extrapreds ((x1108))
+:extrapreds ((x1109))
+:extrapreds ((x1110))
+:extrapreds ((x1111))
+:extrapreds ((x1112))
+:extrapreds ((x1113))
+:extrapreds ((x1114))
+:extrapreds ((x1115))
+:extrapreds ((x1116))
+:extrapreds ((x1117))
+:extrapreds ((x1118))
+:extrapreds ((x1119))
+:extrapreds ((x1120))
+:extrapreds ((x1121))
+:extrapreds ((x1122))
+:extrapreds ((x1123))
+:extrapreds ((x1124))
+:extrapreds ((x1125))
+:extrapreds ((x1126))
+:extrapreds ((x1127))
+:extrapreds ((x1128))
+:extrapreds ((x1129))
+:extrapreds ((x1130))
+:extrapreds ((x1131))
+:extrapreds ((x1132))
+:extrapreds ((x1133))
+:extrapreds ((x1134))
+:extrapreds ((x1135))
+:extrapreds ((x1136))
+:extrapreds ((x1137))
+:extrapreds ((x1138))
+:extrapreds ((x1139))
+:extrapreds ((x1140))
+:extrapreds ((x1141))
+:extrapreds ((x1142))
+:extrapreds ((x1143))
+:extrapreds ((x1144))
+:extrapreds ((x1145))
+:extrapreds ((x1146))
+:extrapreds ((x1147))
+:extrapreds ((x1148))
+:extrapreds ((x1149))
+:extrapreds ((x1150))
+:extrapreds ((x1151))
+:extrapreds ((x1152))
+:extrapreds ((x1153))
+:extrapreds ((x1154))
+:extrapreds ((x1155))
+:extrapreds ((x1156))
+:extrapreds ((x1157))
+:extrapreds ((x1158))
+:extrapreds ((x1159))
+:extrapreds ((x1160))
+:extrapreds ((x1161))
+:extrapreds ((x1162))
+:extrapreds ((x1163))
+:extrapreds ((x1164))
+:extrapreds ((x1165))
+:extrapreds ((x1166))
+:extrapreds ((x1167))
+:extrapreds ((x1168))
+:extrapreds ((x1169))
+:extrapreds ((x1170))
+:extrapreds ((x1171))
+:extrapreds ((x1172))
+:extrapreds ((x1173))
+:extrapreds ((x1174))
+:extrapreds ((x1175))
+:extrapreds ((x1176))
+:extrapreds ((x1177))
+:extrapreds ((x1178))
+:extrapreds ((x1179))
+:extrapreds ((x1180))
+:extrapreds ((x1181))
+:extrapreds ((x1182))
+:extrapreds ((x1183))
+:extrapreds ((x1184))
+:extrapreds ((x1185))
+:extrapreds ((x1186))
+:extrapreds ((x1187))
+:extrapreds ((x1188))
+:extrapreds ((x1189))
+:extrapreds ((x1190))
+:extrapreds ((x1191))
+:extrapreds ((x1192))
+:extrapreds ((x1193))
+:extrapreds ((x1194))
+:extrapreds ((x1195))
+:extrapreds ((x1196))
+:extrapreds ((x1197))
+:extrapreds ((x1198))
+:extrapreds ((x1199))
+:extrapreds ((x1200))
+:extrapreds ((x1201))
+:extrapreds ((x1202))
+:extrapreds ((x1203))
+:extrapreds ((x1204))
+:extrapreds ((x1205))
+:extrapreds ((x1206))
+:extrapreds ((x1207))
+:extrapreds ((x1208))
+:extrapreds ((x1209))
+:extrapreds ((x1210))
+:extrapreds ((x1211))
+:extrapreds ((x1212))
+:extrapreds ((x1213))
+:extrapreds ((x1214))
+:extrapreds ((x1215))
+:extrapreds ((x1216))
+:extrapreds ((x1217))
+:extrapreds ((x1218))
+:extrapreds ((x1219))
+:extrapreds ((x1220))
+:extrapreds ((x1221))
+:extrapreds ((x1222))
+:extrapreds ((x1223))
+:extrapreds ((x1224))
+:extrapreds ((x1225))
+:extrapreds ((x1226))
+:extrapreds ((x1227))
+:extrapreds ((x1228))
+:extrapreds ((x1229))
+:extrapreds ((x1230))
+:extrapreds ((x1231))
+:extrapreds ((x1232))
+:extrapreds ((x1233))
+:extrapreds ((x1234))
+:extrapreds ((x1235))
+:extrapreds ((x1236))
+:extrapreds ((x1237))
+:extrapreds ((x1238))
+:extrapreds ((x1239))
+:extrapreds ((x1240))
+:extrapreds ((x1241))
+:extrapreds ((x1242))
+:extrapreds ((x1243))
+:extrapreds ((x1244))
+:extrapreds ((x1245))
+:extrapreds ((x1246))
+:extrapreds ((x1247))
+:extrapreds ((x1248))
+:extrapreds ((x1249))
+:extrapreds ((x1250))
+:extrapreds ((x1251))
+:extrapreds ((x1252))
+:extrapreds ((x1253))
+:extrapreds ((x1254))
+:extrapreds ((x1255))
+:extrapreds ((x1256))
+:extrapreds ((x1257))
+:extrapreds ((x1258))
+:extrapreds ((x1259))
+:extrapreds ((x1260))
+:extrapreds ((x1261))
+:extrapreds ((x1262))
+:extrapreds ((x1263))
+:extrapreds ((x1264))
+:extrapreds ((x1265))
+:extrapreds ((x1266))
+:extrapreds ((x1267))
+:extrapreds ((x1268))
+:extrapreds ((x1269))
+:extrapreds ((x1270))
+:extrapreds ((x1271))
+:extrapreds ((x1272))
+:extrapreds ((x1273))
+:extrapreds ((x1274))
+:extrapreds ((x1275))
+:extrapreds ((x1276))
+:extrapreds ((x1277))
+:extrapreds ((x1278))
+:extrapreds ((x1279))
+:extrapreds ((x1280))
+:extrapreds ((x1281))
+:extrapreds ((x1282))
+:extrapreds ((x1283))
+:extrapreds ((x1284))
+:extrapreds ((x1285))
+:extrapreds ((x1286))
+:extrapreds ((x1287))
+:extrapreds ((x1288))
+:extrapreds ((x1289))
+:extrapreds ((x1290))
+:extrapreds ((x1291))
+:extrapreds ((x1292))
+:extrapreds ((x1293))
+:extrapreds ((x1294))
+:extrapreds ((x1295))
+:extrapreds ((x1296))
+:extrapreds ((x1297))
+:extrapreds ((x1298))
+:extrapreds ((x1299))
+:extrapreds ((x1300))
+:extrapreds ((x1301))
+:extrapreds ((x1302))
+:extrapreds ((x1303))
+:extrapreds ((x1304))
+:extrapreds ((x1305))
+:extrapreds ((x1306))
+:extrapreds ((x1307))
+:extrapreds ((x1308))
+:extrapreds ((x1309))
+:extrapreds ((x1310))
+:extrapreds ((x1311))
+:extrapreds ((x1312))
+:extrapreds ((x1313))
+:extrapreds ((x1314))
+:extrapreds ((x1315))
+:extrapreds ((x1316))
+:extrapreds ((x1317))
+:extrapreds ((x1318))
+:extrapreds ((x1319))
+:extrapreds ((x1320))
+:extrapreds ((x1321))
+:extrapreds ((x1322))
+:extrapreds ((x1323))
+:extrapreds ((x1324))
+:extrapreds ((x1325))
+:extrapreds ((x1326))
+:extrapreds ((x1327))
+:extrapreds ((x1328))
+:extrapreds ((x1329))
+:extrapreds ((x1330))
+:extrapreds ((x1331))
+:extrapreds ((x1332))
+:extrapreds ((x1333))
+:extrapreds ((x1334))
+:extrapreds ((x1335))
+:extrapreds ((x1336))
+:extrapreds ((x1337))
+:extrapreds ((x1338))
+:extrapreds ((x1339))
+:extrapreds ((x1340))
+:extrapreds ((x1341))
+:extrapreds ((x1342))
+:extrapreds ((x1343))
+:extrapreds ((x1344))
+:extrapreds ((x1345))
+:extrapreds ((x1346))
+:extrapreds ((x1347))
+:extrapreds ((x1348))
+:extrapreds ((x1349))
+:extrapreds ((x1350))
+:extrapreds ((x1351))
+:extrapreds ((x1352))
+:extrapreds ((x1353))
+:extrapreds ((x1354))
+:extrapreds ((x1355))
+:extrapreds ((x1356))
+:extrapreds ((x1357))
+:extrapreds ((x1358))
+:extrapreds ((x1359))
+:extrapreds ((x1360))
+:extrapreds ((x1361))
+:extrapreds ((x1362))
+:extrapreds ((x1363))
+:extrapreds ((x1364))
+:extrapreds ((x1365))
+:extrapreds ((x1366))
+:extrapreds ((x1367))
+:extrapreds ((x1368))
+:extrapreds ((x1369))
+:extrapreds ((x1370))
+:extrapreds ((x1371))
+:extrapreds ((x1372))
+:extrapreds ((x1373))
+:extrapreds ((x1374))
+:extrapreds ((x1375))
+:extrapreds ((x1376))
+:extrapreds ((x1377))
+:extrapreds ((x1378))
+:extrapreds ((x1379))
+:extrapreds ((x1380))
+:extrapreds ((x1381))
+:extrapreds ((x1382))
+:extrapreds ((x1383))
+:extrapreds ((x1384))
+:extrapreds ((x1385))
+:extrapreds ((x1386))
+:extrapreds ((x1387))
+:extrapreds ((x1388))
+:extrapreds ((x1389))
+:extrapreds ((x1390))
+:extrapreds ((x1391))
+:extrapreds ((x1392))
+:extrapreds ((x1393))
+:extrapreds ((x1394))
+:extrapreds ((x1395))
+:extrapreds ((x1396))
+:extrapreds ((x1397))
+:extrapreds ((x1398))
+:extrapreds ((x1399))
+:extrapreds ((x1400))
+:extrapreds ((x1401))
+:extrapreds ((x1402))
+:extrapreds ((x1403))
+:extrapreds ((x1404))
+:extrapreds ((x1405))
+:extrapreds ((x1406))
+:extrapreds ((x1407))
+:extrapreds ((x1408))
+:extrapreds ((x1409))
+:extrapreds ((x1410))
+:extrapreds ((x1411))
+:extrapreds ((x1412))
+:extrapreds ((x1413))
+:extrapreds ((x1414))
+:extrapreds ((x1415))
+:extrapreds ((x1416))
+:extrapreds ((x1417))
+:extrapreds ((x1418))
+:extrapreds ((x1419))
+:extrapreds ((x1420))
+:extrapreds ((x1421))
+:extrapreds ((x1422))
+:extrapreds ((x1423))
+:extrapreds ((x1424))
+:extrapreds ((x1425))
+:extrapreds ((x1426))
+:extrapreds ((x1427))
+:extrapreds ((x1428))
+:extrapreds ((x1429))
+:extrapreds ((x1430))
+:extrapreds ((x1431))
+:extrapreds ((x1432))
+:extrapreds ((x1433))
+:extrapreds ((x1434))
+:extrapreds ((x1435))
+:extrapreds ((x1436))
+:extrapreds ((x1437))
+:extrapreds ((x1438))
+:extrapreds ((x1439))
+:extrapreds ((x1440))
+:extrapreds ((x1441))
+:extrapreds ((x1442))
+:extrapreds ((x1443))
+:extrapreds ((x1444))
+:extrapreds ((x1445))
+:extrapreds ((x1446))
+:extrapreds ((x1447))
+:extrapreds ((x1448))
+:extrapreds ((x1449))
+:extrapreds ((x1450))
+:extrapreds ((x1451))
+:extrapreds ((x1452))
+:extrapreds ((x1453))
+:extrapreds ((x1454))
+:extrapreds ((x1455))
+:extrapreds ((x1456))
+:extrapreds ((x1457))
+:extrapreds ((x1458))
+:extrapreds ((x1459))
+:extrapreds ((x1460))
+:extrapreds ((x1461))
+:extrapreds ((x1462))
+:extrapreds ((x1463))
+:extrapreds ((x1464))
+:extrapreds ((x1465))
+:extrapreds ((x1466))
+:extrapreds ((x1467))
+:extrapreds ((x1468))
+:extrapreds ((x1469))
+:extrapreds ((x1470))
+:extrapreds ((x1471))
+:extrapreds ((x1472))
+:extrapreds ((x1473))
+:extrapreds ((x1474))
+:extrapreds ((x1475))
+:extrapreds ((x1476))
+:extrapreds ((x1477))
+:extrapreds ((x1478))
+:extrapreds ((x1479))
+:extrapreds ((x1480))
+:extrapreds ((x1481))
+:extrapreds ((x1482))
+:extrapreds ((x1483))
+:extrapreds ((x1484))
+:extrapreds ((x1485))
+:extrapreds ((x1486))
+:extrapreds ((x1487))
+:extrapreds ((x1488))
+:extrapreds ((x1489))
+:extrapreds ((x1490))
+:extrapreds ((x1491))
+:extrapreds ((x1492))
+:extrapreds ((x1493))
+:extrapreds ((x1494))
+:extrapreds ((x1495))
+:extrapreds ((x1496))
+:extrapreds ((x1497))
+:extrapreds ((x1498))
+:extrapreds ((x1499))
+:extrapreds ((x1500))
+:extrapreds ((x1501))
+:extrapreds ((x1502))
+:extrapreds ((x1503))
+:extrapreds ((x1504))
+:extrapreds ((x1505))
+:extrapreds ((x1506))
+:extrapreds ((x1507))
+:extrapreds ((x1508))
+:extrapreds ((x1509))
+:extrapreds ((x1510))
+:extrapreds ((x1511))
+:extrapreds ((x1512))
+:extrapreds ((x1513))
+:extrapreds ((x1514))
+:extrapreds ((x1515))
+:extrapreds ((x1516))
+:extrapreds ((x1517))
+:extrapreds ((x1518))
+:extrapreds ((x1519))
+:extrapreds ((x1520))
+:extrapreds ((x1521))
+:extrapreds ((x1522))
+:extrapreds ((x1523))
+:extrapreds ((x1524))
+:extrapreds ((x1525))
+:extrapreds ((x1526))
+:extrapreds ((x1527))
+:extrapreds ((x1528))
+:extrapreds ((x1529))
+:extrapreds ((x1530))
+:extrapreds ((x1531))
+:extrapreds ((x1532))
+:extrapreds ((x1533))
+:extrapreds ((x1534))
+:extrapreds ((x1535))
+:extrapreds ((x1536))
+:extrapreds ((x1537))
+:extrapreds ((x1538))
+:extrapreds ((x1539))
+:extrapreds ((x1540))
+:extrapreds ((x1541))
+:extrapreds ((x1542))
+:extrapreds ((x1543))
+:extrapreds ((x1544))
+:extrapreds ((x1545))
+:extrapreds ((x1546))
+:extrapreds ((x1547))
+:extrapreds ((x1548))
+:extrapreds ((x1549))
+:extrapreds ((x1550))
+:extrapreds ((x1551))
+:extrapreds ((x1552))
+:extrapreds ((x1553))
+:extrapreds ((x1554))
+:extrapreds ((x1555))
+:extrapreds ((x1556))
+:extrapreds ((x1557))
+:extrapreds ((x1558))
+:extrapreds ((x1559))
+:extrapreds ((x1560))
+:extrapreds ((x1561))
+:extrapreds ((x1562))
+:extrapreds ((x1563))
+:extrapreds ((x1564))
+:extrapreds ((x1565))
+:extrapreds ((x1566))
+:extrapreds ((x1567))
+:extrapreds ((x1568))
+:extrapreds ((x1569))
+:extrapreds ((x1570))
+:extrapreds ((x1571))
+:extrapreds ((x1572))
+:extrapreds ((x1573))
+:extrapreds ((x1574))
+:extrapreds ((x1575))
+:extrapreds ((x1576))
+:extrapreds ((x1577))
+:extrapreds ((x1578))
+:extrapreds ((x1579))
+:extrapreds ((x1580))
+:extrapreds ((x1581))
+:extrapreds ((x1582))
+:extrapreds ((x1583))
+:extrapreds ((x1584))
+:extrapreds ((x1585))
+:extrapreds ((x1586))
+:extrapreds ((x1587))
+:extrapreds ((x1588))
+:extrapreds ((x1589))
+:extrapreds ((x1590))
+:extrapreds ((x1591))
+:extrapreds ((x1592))
+:extrapreds ((x1593))
+:extrapreds ((x1594))
+:extrapreds ((x1595))
+:extrapreds ((x1596))
+:extrapreds ((x1597))
+:extrapreds ((x1598))
+:extrapreds ((x1599))
+:extrapreds ((x1600))
+:extrapreds ((x1601))
+:extrapreds ((x1602))
+:extrapreds ((x1603))
+:extrapreds ((x1604))
+:extrapreds ((x1605))
+:extrapreds ((x1606))
+:extrapreds ((x1607))
+:extrapreds ((x1608))
+:extrapreds ((x1609))
+:extrapreds ((x1610))
+:extrapreds ((x1611))
+:extrapreds ((x1612))
+:formula (and
+(or x1560 x130 (not x624))
+(or x510 x12 (not x251) x1275 x238)
+(or (not x1430) x1311 (not x704) x1201 (not x1502))
+(or (not x387) (not x1187) (not x239))
+(or (not x309) (not x1181))
+(or x282 (not x707))
+(or x375 (not x1021))
+(or x21 x228 x846)
+(or x32 x1023 x942 x1343 (not x890))
+(or (not x519) (not x1275) (not x927))
+(or x1244 x1568)
+(or (not x516) x965 x397)
+(or x1172 (not x67) (not x1410) x1299 x1400)
+(or (not x1321) (not x760) (not x1188))
+(or x1397 x732 (not x257))
+(or x10 x961 (not x672) (not x45) x794)
+(or (not x659) (not x1466))
+(or (not x1005) x4)
+(or (not x1462) (not x124) x1393 x1318 x1402)
+(or x102 (not x1361))
+(or (not x1135) (not x927) x1322)
+(or x516 (not x1524) x1054 (not x1097) (not x709))
+(or (not x1048) x992)
+(or x366 x289 (not x463) (not x502) x840)
+(or (not x661) (not x918))
+(or (not x703) (not x316) x700)
+(or x456 x378 (not x471))
+(or (not x651) x1409 x838 (not x280) x530)
+(or (not x1310) (not x956) x193 x1072 (not x1456))
+(or x1194 (not x405) x297 x1519 (not x623))
+(or (not x1001) (not x243) (not x1193) x797 x349)
+(or x650 x578 x861 x234 (not x1397))
+(or (not x394) (not x1175) x442)
+(or x1499 x513 (not x48))
+(or x1483 (not x1611) x201)
+(or (not x197) (not x192))
+(or (not x803) (not x1531) (not x951))
+(or x493 (not x613))
+(or x449 x473 (not x681) (not x375) (not x570))
+(or (not x187) (not x533))
+(or (not x1591) (not x965) x278 (not x516) (not x709))
+(or x962 (not x1513) (not x733))
+(or x518 x1600 (not x1547) x1462 x547)
+(or x832 x1217)
+(or (not x1009) x1517 (not x557) (not x1298) x1254)
+(or x1179 (not x511) x674)
+(or (not x1353) x651 x895 (not x1053) x838)
+(or (not x116) (not x269))
+(or x690 (not x708) (not x574) (not x675) x1380)
+(or x869 x1570 (not x274) x791 (not x1031))
+(or x385 (not x556) x1446)
+(or x180 (not x1293) (not x909))
+(or x1599 x615 x173)
+(or x1142 (not x1307) (not x482) (not x525) x1021)
+(or (not x1268) x746 x120)
+(or x1154 x951 x941)
+(or x1328 x1077 (not x998))
+(or x703 x316 x700)
+(or (not x985) (not x973) (not x978))
+(or x647 (not x139) (not x69) (not x215) x235)
+(or x1543 x1476 x714 (not x1259) x1452)
+(or (not x185) (not x465))
+(or (not x1228) x120 x595)
+(or (not x1337) x258)
+(or (not x1092) x931 x1109 x1461 x446)
+(or x106 x1474 (not x24) (not x1248) (not x424))
+(or (not x104) (not x1059) x1010 x904 x462)
+(or x965 (not x1591) (not x709) x278 x516)
+(or (not x48) x59 (not x811))
+(or x920 (not x893) (not x223))
+(or x344 (not x88) x1444 x1314 x589)
+(or (not x121) (not x66) x189)
+(or x1050 x32 (not x756))
+(or (not x1264) (not x462) (not x636))
+(or x324 (not x115) (not x630))
+(or (not x811) x59 x178)
+(or x1344 x991)
+(or (not x643) (not x462))
+(or (not x1537) x448 (not x1263))
+(or x1010 x124 x462 x244 (not x1318))
+(or (not x840) x502 (not x289) x366 (not x463))
+(or (not x243) x1567 (not x349))
+(or (not x513) x537 (not x743))
+(or (not x745) (not x650) (not x1144) x1397 x1091)
+(or (not x1590) x487)
+(or (not x1189) x1111)
+(or (not x987) x1214)
+(or x969 x632 (not x1042))
+(or (not x1101) x530 (not x672) x280 (not x961))
+(or x990 x404)
+(or x802 (not x455) x287)
+(or (not x307) x158)
+(or x170 (not x1143) x140)
+(or (not x740) x503 x971)
+(or (not x303) x874 (not x135))
+(or x598 (not x787) x849 x643 (not x1327))
+(or (not x1372) (not x1012) (not x452))
+(or x293 (not x874) x1227)
+(or x448 (not x757) x18)
+(or (not x783) (not x1361) x893 (not x108) x268)
+(or (not x1118) (not x358))
+(or (not x823) x1279 x1382 x1184 (not x196))
+(or (not x415) (not x529) x710)
+(or (not x1591) (not x709) x1270 (not x965) (not x516))
+(or (not x893) (not x900) (not x268))
+(or (not x1356) x778 x695)
+(or x1408 x3)
+(or (not x443) (not x125) x1358 x1508 (not x184))
+(or x1106 x980 x685)
+(or x430 (not x958) (not x812))
+(or x750 x581 (not x1045) (not x210) x241)
+(or (not x638) (not x289) x538)
+(or (not x781) (not x961) x794)
+(or (not x781) x1264 x636 (not x462) (not x1010))
+(or (not x1599) x493 x634)
+(or (not x742) (not x1248) x482)
+(or x228 (not x1322))
+(or x628 (not x1279))
+(or (not x373) (not x539) x955)
+(or (not x1301) x123 (not x1146) x845 x65)
+(or (not x32) x1052 x775 (not x178) (not x538))
+(or x385 (not x1446) (not x691) x1364 x556)
+(or x216 (not x1147) (not x567))
+(or x510 (not x238) (not x1338))
+(or x425 (not x1243) (not x839) x997 (not x1517))
+(or (not x1094) x372 (not x1382) x656 (not x192))
+(or x461 (not x30))
+(or (not x1148) (not x411) (not x620))
+(or (not x1511) (not x1229) (not x321))
+(or (not x1459) x869 (not x1129))
+(or x714 x503 x868 x1552 x740)
+(or (not x701) (not x733) x349 x1001 (not x962))
+(or (not x594) x672)
+(or x1552 (not x1476) (not x1259))
+(or x1606 x1044)
+(or (not x432) x344)
+(or (not x6) x1245 (not x177))
+(or (not x214) (not x641) x246)
+(or x783 (not x1163) (not x1361))
+(or (not x236) x373 (not x539) x161 x603)
+(or x1142 (not x192) x1532)
+(or x399 (not x874) (not x74))
+(or (not x67) x1410 (not x1400))
+(or (not x436) (not x828) (not x1455))
+(or (not x1413) (not x506) (not x632))
+(or x1551 (not x665))
+(or x1425 x1442 (not x1404) (not x330) (not x1066))
+(or x442 (not x709) x1591)
+(or x1350 x814 x1418)
+(or x344 x3 (not x622))
+(or (not x1270) x965)
+(or (not x841) (not x341) x1290 (not x706) x988)
+(or (not x919) x592 x462)
+(or (not x844) (not x506) x1413 x1297 (not x1040))
+(or (not x1031) (not x1221) x1013)
+(or x265 (not x99) (not x1378))
+(or (not x722) (not x1008) x441)
+(or x29 x867 x1359)
+(or x960 x935)
+(or x75 (not x943))
+(or (not x840) x27)
+(or (not x381) x251)
+(or x355 (not x614))
+(or x1129 (not x1611) x1231)
+(or x551 x1361 (not x783))
+(or (not x328) (not x460) (not x1302))
+(or x770 x1119)
+(or (not x31) x465 (not x1206))
+(or (not x1115) (not x326) x478)
+(or x631 x1504)
+(or (not x822) x58 (not x1282))
+(or x569 (not x1271))
+(or x1359 x867 x1215)
+(or x491 x38 x1300 (not x525) x576)
+(or x1609 (not x588) (not x81))
+(or x774 (not x554))
+(or (not x981) x886 (not x819) (not x3) (not x346))
+(or (not x606) x163 (not x458))
+(or x343 x1493 (not x331))
+(or (not x842) (not x238) x1440 (not x927) x251)
+(or (not x832) x729 (not x1509))
+(or x1260 (not x312) x542)
+(or x277 (not x1177) (not x149))
+(or (not x471) (not x881) (not x660) (not x378) x1217)
+(or (not x471) x377)
+(or x236 x603 x14)
+(or x1341 x517)
+(or (not x794) (not x10) x961)
+(or (not x857) x232 (not x840))
+(or (not x56) x202 x1294 x379 (not x366))
+(or (not x372) (not x330) (not x1142) x656 x1307)
+(or (not x626) x657 x616 x553 (not x882))
+(or (not x540) x3)
+(or (not x1493) (not x331) (not x343))
+(or (not x604) (not x1096))
+(or x650 (not x1250) x1397)
+(or (not x820) x613 (not x493) (not x215) (not x1602))
+(or x566 x34)
+(or (not x1229) (not x1518) (not x321))
+(or x1088 (not x675) (not x690) x167 (not x699))
+(or (not x785) x532 x15 (not x1344) x527)
+(or x66 (not x1415) x1367)
+(or (not x189) (not x443) x66 (not x121) (not x1490))
+(or (not x532) (not x15) (not x785))
+(or (not x1264) x101 (not x781) x462 x1010)
+(or x930 x783 (not x803))
+(or x1223 x5)
+(or (not x707) x970 (not x518))
+(or x205 (not x303) x1204 (not x30) x1312)
+(or x965 (not x516) (not x1334))
+(or (not x1387) x1518 (not x877) (not x1288) (not x566))
+(or x1009 x1298 x839)
+(or x1010 (not x462) (not x389))
+(or x693 x382 x1205)
+(or x853 (not x382))
+(or (not x1321) x391 x1455)
+(or x1341 x913)
+(or x709 (not x773) x920)
+(or x1155 (not x1219))
+(or x386 x1506)
+(or x72 (not x1293) x976)
+(or x656 x372 x1066 (not x1307) x1142)
+(or x1365 (not x938) (not x922) x827 x441)
+(or (not x1317) x54)
+(or x200 x647 (not x1010))
+(or (not x1028) (not x399) (not x232) x1073 (not x851))
+(or (not x318) x1282 x822)
+(or x1561 x1365 (not x516) (not x709) (not x551))
+(or (not x272) x886)
+(or x645 (not x766))
+(or (not x904) (not x180) (not x895))
+(or (not x378) (not x660) x377)
+(or x957 (not x1103) (not x113) x151 (not x779))
+(or x64 (not x1275) x510)
+(or x951 (not x803) (not x1001) (not x349) (not x383))
+(or x577 (not x1353) x1597)
+(or (not x1054) x1188)
+(or x756 x1345 x181 x16 (not x745))
+(or (not x797) (not x1001) x676)
+(or (not x610) (not x816))
+(or x1151 x1278 (not x1271))
+(or x253 x1154)
+(or (not x192) x656 x372 (not x1094) (not x859))
+(or (not x1558) x1391)
+(or x185 (not x145) x1131)
+(or x418 x1554 (not x1350) x26 x814)
+(or (not x903) (not x1437))
+(or (not x291) x1325 (not x883))
+(or (not x650) (not x1403))
+(or (not x838) (not x280) (not x1409))
+(or (not x536) x1069 x90)
+(or x471 x378 (not x1158) (not x660) (not x881))
+(or x1587 (not x1607))
+(or (not x845) (not x65) (not x1146) (not x1273) x1301)
+(or x654 (not x805))
+(or (not x1420) (not x224) x765)
+(or x1345 x1057 (not x745))
+(or x1472 (not x1480) (not x1447))
+(or x1524 x709)
+(or (not x1600) (not x1050) x933)
+(or x1317 (not x347) x1269)
+(or (not x334) x457)
+(or x88 (not x1241))
+(or x603 x236 (not x1112))
+(or x600 x1609 (not x803))
+(or x1294 (not x1371) x889 (not x379) x919)
+(or x100 (not x608) x767)
+(or (not x1424) (not x106))
+(or (not x874) (not x1168) (not x505))
+(or x349 x1525 x1103)
+(or (not x840) x289 x538 x472 (not x1052))
+(or (not x189) (not x958) x1023)
+(or x1119 x1611)
+(or x775 (not x706) x587 x1213 x908)
+(or (not x831) (not x1241) (not x993) (not x148) x1416)
+(or (not x1229) x225 (not x944) x1511 x321)
+(or (not x1028) x1073 x209)
+(or x1209 (not x1534) x641 (not x130) (not x1441))
+(or x170 x1378)
+(or x685 x876 x640 (not x364) x514)
+(or (not x549) (not x294) (not x1482))
+(or (not x1527) (not x1323) (not x1604))
+(or x167 x561)
+(or x842 x488 (not x1271))
+(or (not x923) x1244)
+(or (not x1554) (not x418))
+(or x1554 (not x670))
+(or x659 (not x733) (not x1513))
+(or (not x527) (not x708))
+(or x1134 x1509 (not x404))
+(or (not x1342) x567 x565 x1171 (not x423))
+(or x1584 x1248 x742 x482 x279)
+(or (not x1330) x1444 (not x669) (not x795) (not x1405))
+(or x501 x650 x1397)
+(or x1001 (not x941))
+(or x1075 (not x75) (not x582))
+(or x1021 (not x251) x238 (not x117) x525)
+(or (not x253) x97 x296)
+(or (not x418) (not x1433) (not x1272) x1224 x1120)
+(or x1260 x1485 (not x1570))
+(or (not x1129) x647)
+(or x1007 x1439 x221)
+(or (not x1275) (not x251) (not x238) (not x510) x509)
+(or x1273 (not x1301))
+(or (not x280) x289 (not x1311))
+(or x283 (not x1115) (not x518))
+(or x1062 (not x1374) x72 (not x1542) x673)
+(or (not x163) (not x763) (not x208))
+(or x913 x780)
+(or x740 x1585 (not x750) x682 (not x503))
+(or x1387 x463)
+(or (not x1107) (not x1200) x491 x1175 x1161)
+(or (not x740) (not x155) x503)
+(or x155 (not x740) x275 (not x503) x49)
+(or (not x422) (not x435))
+(or (not x765) (not x224) x434 x1420 (not x1606))
+(or x1470 (not x458) x730)
+(or x508 (not x513) x236 x1214 x282)
+(or x206 x1196 (not x1267) (not x1418) x197)
+(or x1319 (not x968))
+(or x565 x567 (not x1342) x1305 x1171)
+(or x294 (not x894) x549 (not x288) (not x488))
+(or (not x559) x1371 (not x1052))
+(or (not x1241) (not x650))
+(or x588 (not x132) x1437 x1609 x52)
+(or x1158 x660)
+(or (not x184) (not x125) x1508 x1358 (not x189))
+(or x845 (not x65) (not x123))
+(or x791 (not x1570) x1031)
+(or x535 x95 x1478 (not x1289) (not x1216))
+(or x1264 x794)
+(or (not x1423) (not x436))
+(or x1285 (not x3) x843 (not x819) (not x1085))
+(or (not x886) (not x39) (not x981) x819 (not x3))
+(or x975 x786)
+(or x961 x280 x1262)
+(or x792 (not x801) x467)
+(or (not x803) (not x951) x1019 x1361 (not x783))
+(or x1136 (not x462) x1010)
+(or x650 x1109 x1397 x429 x1060)
+(or (not x641) x73)
+(or (not x438) (not x534))
+(or (not x10) x45)
+(or x723 x383 x957)
+(or x283 (not x1115) x258)
+(or (not x1071) x230 (not x937) x1605 (not x85))
+(or x1471 (not x819) (not x3))
+(or x67 (not x1400) x1172)
+(or (not x664) x1596 x1603)
+(or (not x580) x959 (not x788))
+(or (not x135) x232 (not x675))
+(or x63 (not x1155) x1219 (not x528) (not x1189))
+(or x179 x216)
+(or (not x1282) (not x822) x1263)
+(or x926 (not x189))
+(or (not x1091) x1144 x1308 (not x1050) x933)
+(or x1235 x327 x1413)
+(or (not x1003) x167)
+(or (not x433) (not x1516) x374 (not x1195) (not x534))
+(or x403 x1419 x864 (not x1170) x887)
+(or (not x471) (not x1001) x881 (not x349) x941)
+(or x398 x203 (not x105))
+(or x170 (not x53))
+(or (not x373) (not x338) (not x539))
+(or x1332 (not x931) x346)
+(or (not x398) (not x408))
+(or x69 x215)
+(or x538 (not x919) x1052)
+(or x433 (not x1516) x1195)
+(or x87 (not x862) x1247)
+(or (not x1091) (not x542))
+(or x769 x460 x140 (not x1378) (not x265))
+(or (not x1012) (not x1105) (not x956))
+(or x1082 (not x175))
+(or (not x81) (not x1609) x588)
+(or x1312 x874 x293 (not x1496) (not x135))
+(or (not x151) x1525)
+(or x440 x539 x1190)
+(or (not x815) (not x967) x1231)
+(or (not x946) x737)
+(or x1354 (not x61) x891)
+(or x796 x495 x494 x270 x1370)
+(or x510 x192 (not x64) (not x1094) x1275)
+(or x846 x349 x1242)
+(or x1594 (not x978))
+(or x781 (not x636))
+(or x243 x676)
+(or (not x1325) (not x291) x883)
+(or (not x1545) (not x533))
+(or (not x1043) (not x671))
+(or x814 (not x271) x1350)
+(or x151 x1490 (not x378))
+(or x1050 (not x111))
+(or x223 x701 x464)
+(or x177 (not x719) x1176)
+(or (not x942) (not x178) (not x1343) x1023 x890)
+(or x1593 x267 (not x1586))
+(or x248 x967 (not x867))
+(or (not x208) (not x838) x651)
+(or x314 (not x814) x1497 x1350 (not x1475))
+(or (not x1563) (not x1594) (not x1245) x144 x357)
+(or x1142 (not x482) (not x1021) x1307 (not x525))
+(or x348 (not x458) x730)
+(or (not x1041) x476)
+(or x293 (not x874) (not x287))
+(or x1001 (not x349) (not x347))
+(or x1010 (not x1137) x1328)
+(or x1397 (not x1053) (not x650) (not x1353) x1250)
+(or x1097 (not x516) x1008 x1054 (not x709))
+(or x1052 x840 x348)
+(or x1471 x649 x1587)
+(or (not x937) (not x1071) (not x1367))
+(or (not x207) x516 x1017)
+(or (not x854) x267 x1473)
+(or (not x202) x502)
+(or x631 (not x586))
+(or (not x1017) (not x168))
+(or x158 (not x843))
+(or x1214 (not x579))
+(or (not x1094) (not x1196) x737 (not x192) (not x1151))
+(or x1053 (not x104) (not x838))
+(or (not x396) x1049 (not x602) x813 (not x688))
+(or (not x650) (not x148) (not x1397))
+(or x814 x359)
+(or (not x299) (not x189) x759)
+(or (not x433) x374 x1516 x534 x1195)
+(or (not x780) x1560 x462 x1010 x1182)
+(or (not x236) x282 (not x1214))
+(or (not x819) (not x843) x1085 x529 x3)
+(or x840 (not x690) (not x289))
+(or x819 x3 (not x1157))
+(or (not x240) x972 (not x80))
+(or (not x863) x691 (not x556) x385 (not x1364))
+(or (not x151) x1071)
+(or x489 (not x619) x319)
+(or (not x876) (not x514))
+(or (not x51) x1283)
+(or x1358 (not x709) x1591)
+(or (not x883) x1435)
+(or (not x170) (not x455) x1073)
+(or (not x520) x1015 x571)
+(or x889 (not x1294) x919 (not x379) x1371)
+(or x1094 (not x306))
+(or x1380 (not x1329) (not x1073) x170 (not x1028))
+(or (not x1488) x1494 (not x1192) (not x713) x1369)
+(or x1166 (not x51) x324)
+(or x224 (not x893) (not x1044) (not x1606) (not x268))
+(or (not x998) (not x508) x1214)
+(or (not x513) x743 (not x1574) (not x282) x1255)
+(or (not x880) (not x692))
+(or x574 (not x1028))
+(or (not x1353) (not x1286))
+(or x554 x1078 (not x1422))
+(or (not x1474) x1020 (not x411) x1090 (not x1553))
+(or x1242 x1174 x1064)
+(or (not x145) (not x185) x1590 (not x487) x171)
+(or x135 x399 x690 x675 x232)
+(or (not x363) (not x1394))
+(or (not x1047) x797)
+(or x180 x1190 x373 (not x539) x1266)
+(or x1454 x47 x1012)
+(or x71 x1563 x257)
+(or (not x1487) (not x1216))
+(or (not x1397) (not x988) (not x650))
+(or x605 x1593)
+(or x224 (not x1420) (not x765))
+(or (not x471) x378 (not x1217))
+(or x451 x499 (not x1562) x1153 (not x872))
+(or x951 (not x803) (not x924) (not x325) x1373)
+(or (not x289) (not x538) (not x840) x1052 (not x573))
+(or x516 (not x965) (not x1334))
+(or x477 (not x259) (not x445) (not x815) (not x153))
+(or x1148 (not x1395) x922 x963 x441)
+(or x1252 x979)
+(or (not x1164) x59 (not x694))
+(or (not x889) x539 (not x607))
+(or (not x1326) x1015 (not x520))
+(or x833 x1480 x609)
+(or (not x1336) (not x305) x853)
+(or x1254 (not x1243))
+(or x249 x888 x983)
+(or (not x155) (not x1216))
+(or x533 x793 (not x160) x142 x1545)
+(or x557 (not x954))
+(or (not x878) x349 (not x1001) (not x228) (not x1242))
+(or (not x208) (not x651) (not x334))
+(or (not x812) (not x779) (not x151))
+(or x616 x1277)
+(or (not x469) (not x744) (not x450))
+(or x661 x629 x1010)
+(or x3 x1287 (not x819) x622 x432)
+(or (not x740) x146)
+(or (not x319) (not x489) (not x619))
+(or x740 x724 x503 x275 (not x49))
+(or x1568 x961 (not x672))
+(or x753 x1264 x1076 x335 x781)
+(or x1550 x1212 (not x1014))
+(or x1107 x1175 (not x1161) (not x38) (not x1200))
+(or x925 (not x1294) x379)
+(or (not x1239) (not x1336) (not x1495))
+(or (not x462) x867 x813)
+(or x1397 (not x559) (not x612) x988 (not x650))
+(or x18 x1283)
+(or (not x1416) x993 (not x148))
+(or x373 x539 (not x1266))
+(or (not x1024) (not x1015) (not x474) (not x1435) x291)
+(or x3 (not x511) x843)
+(or x424 x482 (not x1584) (not x279) (not x742))
+(or x1359 (not x358) x1522)
+(or (not x92) x576)
+(or x1596 (not x1043))
+(or (not x462) (not x1010) x1155 (not x1327) (not x1189))
+(or x651 (not x129) (not x838))
+(or x568 x1036)
+(or x1092 (not x1109))
+(or (not x21) x846 (not x726) (not x228) x1513)
+(or x719 x177 (not x1176))
+(or (not x264) (not x230) x545)
+(or x1138 (not x689) x497)
+(or (not x709) (not x1365) x551)
+(or x104 (not x895) x1190)
+(or x144 x1594 (not x1245) (not x1563) (not x357))
+(or x704 x1311 (not x1201))
+(or (not x414) (not x334) x32)
+(or x927 x488)
+(or (not x31) x171)
+(or x375 (not x1275) x510)
+(or (not x69) (not x539) x1333)
+(or (not x1531) (not x666) (not x1154))
+(or x79 (not x101))
+(or x471 x456 (not x378))
+(or x871 (not x111) (not x1342) x896 (not x834))
+(or (not x1308) x84)
+(or (not x1591) (not x965) (not x397) (not x709) (not x516))
+(or (not x728) x671 x1596 (not x1603) (not x1207))
+(or (not x730) (not x1052) x289 (not x840) x538)
+(or (not x868) x315 (not x971) (not x522) (not x166))
+(or (not x667) (not x683) x496)
+(or (not x1325) x905 x640 x1417 (not x364))
+(or x571 x1024)
+(or x1461 (not x1109) (not x446))
+(or (not x83) (not x771) (not x1220))
+(or (not x1164) (not x1599))
+(or x19 (not x364) (not x640))
+(or x100 (not x716) x767)
+(or x773 x516 x709 x168 x1017)
+(or (not x1120) (not x928))
+(or x202 x366 x439)
+(or x1275 (not x681) (not x1021))
+(or (not x241) (not x503) (not x682))
+(or (not x116) (not x808) x1292)
+(or x741 (not x118) x55 x805 (not x862))
+(or x592 (not x788) x1601 (not x1) (not x607))
+(or x505 (not x293) x1168 (not x851) (not x874))
+(or (not x413) x517)
+(or (not x123) x240 x137)
+(or x1283 x1051 (not x98))
+(or (not x677) (not x1236) (not x930))
+(or x1341 x1182 (not x137) (not x4) x780)
+(or x1126 (not x933))
+(or x1495 (not x693) x1199)
+(or (not x213) x650 x1397)
+(or x1212 x1582 x1550 x1592 (not x1451))
+(or (not x881) x349 (not x471) (not x1001) (not x1529))
+(or (not x225) (not x1288) (not x944))
+(or x525 (not x576))
+(or (not x357) (not x71) x974)
+(or (not x1267) x814)
+(or (not x1472) (not x285))
+(or x1005 x649)
+(or (not x402) (not x1167) (not x1317) x809 x512)
+(or x1010 (not x200) x647)
+(or x170 x610 (not x334))
+(or (not x240) (not x123) x913 (not x137) x1273)
+(or x90 x536 (not x960))
+(or x1031 x1099)
+(or x1036 x1606)
+(or x38 x525 (not x491))
+(or x1270 x1591 x709 x516 (not x965))
+(or (not x581) x210 x750)
+(or (not x1000) (not x1464) x563)
+(or (not x447) (not x828) (not x1423))
+(or (not x69) x1231)
+(or (not x1250) x650 (not x1353))
+(or x399 (not x675) (not x232) x135 x690)
+(or (not x1042) (not x571) (not x740) x697 (not x503))
+(or x213 x650 (not x1397) x732 (not x1116))
+(or (not x854) (not x267) x1586)
+(or (not x389) (not x469) (not x1389))
+(or x344 x819 x3)
+(or (not x789) (not x559))
+(or (not x293) (not x1312) x874)
+(or x265 x1168 (not x1356))
+(or x698 x930)
+(or (not x29) x1359 (not x867))
+(or (not x198) (not x494) x1370)
+(or x349 (not x1001) (not x828))
+(or x1390 x975)
+(or (not x471) x964)
+(or (not x1587) (not x1397) x650 x1005 x1607)
+(or x368 (not x785))
+(or (not x887) x864 (not x784))
+(or (not x661) (not x1251) x204)
+(or (not x662) x3 x192)
+(or (not x1019) (not x930) (not x698) x1236 (not x172))
+(or (not x4) x1294 x925)
+(or x1001 (not x349) (not x828))
+(or x268 (not x584))
+(or (not x23) x512 x639 (not x1528) (not x1317))
+(or x1257 (not x1079) x874)
+(or x145 x487 (not x31))
+(or (not x756) (not x181))
+(or (not x653) x1214)
+(or (not x68) x1094 x192)
+(or (not x911) (not x1410))
+(or x141 (not x1505) (not x1218))
+(or x1189 (not x1155) (not x1010) x643 x462)
+(or x471 x1529)
+(or (not x927) (not x1473) (not x687))
+(or (not x1361) (not x268) x720)
+(or x531 x1278 (not x1298) x1246 (not x569))
+(or x260 (not x186) (not x1210))
+(or (not x1446) (not x206) x536 x1234 x863)
+(or (not x783) x1361 (not x1022) x1466 (not x1561))
+(or x501 (not x650) (not x45))
+(or x660 (not x378) x881 x471 x459)
+(or (not x1011) x128 (not x763) x163 x208)
+(or (not x1417) (not x1125) x1186 (not x606) x663)
+(or x907 x229 (not x1506) (not x1556) x1077)
+(or (not x510) x64 x1275)
+(or x434 x1181 x1606 x765 x224)
+(or (not x236) (not x508))
+(or (not x1314) x88 x1444)
+(or (not x248) x867 (not x29) (not x1084) (not x312))
+(or x140 (not x1329) x170)
+(or x958 x395 (not x1023) (not x189) (not x443))
+(or x1129 x528 (not x914))
+(or x740 (not x155) (not x503))
+(or x749 (not x45) x672)
+(or x95 x1431)
+(or (not x565) x111)
+(or (not x893) x227 x1606)
+(or x627 (not x457))
+(or (not x848) x1193 (not x951))
+(or (not x252) x1102)
+(or x962 (not x828) x349)
+(or x1343 (not x530) x575)
+(or x1308 (not x1611) x1366 (not x542) (not x1485))
+(or x740 (not x1042) (not x520))
+(or x380 (not x461) (not x1152))
+(or (not x38) x491 x525)
+(or (not x451) (not x789) (not x1562))
+(or x627 (not x369) (not x546) x78 x799)
+(or x100 x648 x767 (not x975) x454)
+(or x629 x276)
+(or (not x937) x397)
+(or (not x843) (not x3) (not x529))
+(or x561 x400)
+(or (not x912) x1260 x1573 (not x642) x164)
+(or x1052 (not x840) (not x730) (not x289) (not x538))
+(or (not x926) x189 x299 (not x490) x443)
+(or x780 (not x552) (not x1538) (not x597) (not x1182))
+(or x1478 (not x870) x318)
+(or (not x1350) (not x188) (not x814) x1486 (not x882))
+(or x26 (not x1086))
+(or x1361 (not x252))
+(or x820 x859 (not x856))
+(or (not x622) x952 x432 (not x3) x819)
+(or (not x381) (not x1254))
+(or x814 x1184)
+(or x1536 x758 (not x644))
+(or x11 (not x260) x186 (not x1210) x28)
+(or x175 x1205)
+(or (not x1229) x182 x298)
+(or (not x270) (not x106))
+(or (not x644) x1148)
+(or x572 (not x499) (not x684) x612 (not x789))
+(or (not x111) x1342 (not x871))
+(or (not x803) (not x1174))
+(or x1350 (not x119) (not x814) (not x921) x880)
+(or x924 (not x951) (not x803))
+(or x611 x1005 (not x1471))
+(or x307 x1144 (not x1162) (not x1323) (not x309))
+(or (not x984) (not x460) (not x99) x328 x1302)
+(or x914 x1483)
+(or x881 x916 x471)
+(or x267 x842 x486)
+(or x539 x1082 x1535 (not x507) (not x373))
+(or x1001 (not x698) (not x336))
+(or (not x157) (not x1115) (not x1046))
+(or x662 x428 (not x776) x68 (not x654))
+(or x113 (not x957))
+(or x179 (not x1173) (not x672))
+(or (not x1204) (not x1312) (not x303) (not x205) (not x1507))
+(or x1012 x1072 x1105 (not x956) x1150)
+(or x1363 (not x1001) (not x349) x1103 x151)
+(or (not x1606) x534 x965 x1591 (not x224))
+(or x454 x1605)
+(or x539 x373 x598 x1013 (not x1111))
+(or x968 (not x470) (not x759))
+(or x1010 (not x1327) x1189 x462 x1155)
+(or (not x277) x96)
+(or x933 (not x542) (not x1144))
+(or x26 x642 (not x670))
+(or x732 x480 (not x1240))
+(or (not x262) (not x1361) x767 (not x783) (not x100))
+(or (not x1265) (not x1208))
+(or (not x327) x811 (not x1050))
+(or (not x1073) (not x675) x1520 x1028 x690)
+(or (not x795) (not x737) (not x1151))
+(or (not x596) (not x298) x1457)
+(or x45 x333 (not x543))
+(or (not x293) x874 (not x671))
+(or x732 x1244 x1316 x179 (not x1116))
+(or x509 x1133 x1026 (not x1338) (not x1030))
+(or x1119 x1366 x48)
+(or x1366 (not x1611) (not x1512) x914 x201)
+(or (not x46) (not x617) x392)
+(or x320 (not x609) x231)
+(or x1178 (not x836) x1191 x474 (not x792))
+(or x828 (not x733) x962 (not x349) (not x1001))
+(or (not x607) (not x1183))
+(or x143 (not x768) x281)
+(or (not x734) x1014 x1551 (not x1592) (not x1157))
+(or x1481 (not x747) (not x1085) x764 x1256)
+(or x560 x1017 (not x709) (not x516) (not x773))
+(or x1009 x997)
+(or x542 (not x312) x1308)
+(or x857 x734 x1014)
+(or x811 x1559)
+(or (not x1214) x653 (not x811) (not x1499) (not x48))
+(or (not x65) (not x1541) x293)
+(or (not x1516) (not x374) x438 x1195 x534)
+(or (not x1350) x195 x934 x370 (not x814))
+(or (not x1397) x917 (not x1424))
+(or (not x172) x930 (not x677))
+(or (not x107) x368 (not x1016))
+(or (not x70) x949 x1285 x219 x333)
+(or x274 (not x1129) x200)
+(or x1299 (not x373))
+(or (not x990) (not x100) x1361)
+(or (not x1079) x150 (not x1027))
+(or x222 (not x1269) (not x143))
+(or x1060 (not x850))
+(or x857 x840 (not x690))
+(or (not x740) x503 x571)
+(or (not x12) x238 (not x510))
+(or (not x1391) x52 x1609 x588 x1437)
+(or x814 x1350 (not x403))
+(or (not x1001) x881 (not x471) x711 (not x349))
+(or x1188 x1361 (not x1097) (not x783) x1465)
+(or (not x1203) x1186)
+(or (not x879) x951 (not x1158))
+(or (not x253) (not x1531) (not x1154))
+(or (not x1092) x931 (not x1060))
+(or (not x937) (not x1139) (not x1605) x42 (not x1319))
+(or x215 x139 x235)
+(or (not x1499) x17 x1281 x483 (not x605))
+(or (not x584) (not x893) x783)
+(or (not x186) x854 (not x1557))
+(or x697 x740 x1042 x520 x503)
+(or x419 (not x368) (not x532) x1402 (not x637))
+(or (not x1103) x660 x1071)
+(or (not x1202) x1533)
+(or x455 (not x209) (not x353) x287 x74)
+(or x1307 x1142 x1532)
+(or (not x929) (not x1075) x1476)
+(or x799 (not x980) x78)
+(or (not x1199) x705)
+(or (not x292) x776 x46)
+(or (not x511) x1179 x1274)
+(or x1319 x1525)
+(or (not x1397) (not x1060) x429 x650 x1109)
+(or (not x195) x1581 x1198)
+(or (not x974) (not x530))
+(or x150 (not x37))
+(or x601 (not x483) x679)
+(or (not x951) (not x803) (not x191))
+(or x1051 x98 (not x1283))
+(or (not x284) (not x713) x1141)
+(or x293 x845)
+(or x1086 (not x1260))
+(or x1606 (not x534))
+(or x1093 (not x1564) (not x1063))
+(or x819 (not x272) x3)
+(or x826 x335)
+(or x1043 (not x1596) x293 (not x1027) x874)
+(or x483 (not x653) (not x17))
+(or x517 x334 (not x780) x1005 x1587)
+(or x1022 (not x1423) (not x828))
+(or x1461 (not x1332))
+(or x1302 x1225 x237 (not x814) x1350)
+(or x1574 (not x1244))
+(or x944 (not x1511))
+(or x1094 (not x192) (not x819) x3 (not x1303))
+(or (not x647) x1129 x1010 x462 x200)
+(or (not x1311) (not x1430) x704 x1201 x1502)
+(or (not x1390) x1471)
+(or (not x1114) (not x100) x648 x767 x975)
+(or (not x1308) (not x867) x542 (not x29) (not x164))
+(or (not x1148) (not x620) x1090 (not x963) (not x718))
+(or (not x626) (not x1533))
+(or (not x441) x1008 (not x722))
+(or x373 (not x1496) (not x338))
+(or x32 x983)
+(or x1366 (not x867) x29 (not x1459) (not x1611))
+(or (not x1471) x1390 x3 (not x819) x755)
+(or (not x819) x1085 x621)
+(or x1459 (not x29))
+(or x1420 x434 x1606 x224 x765)
+(or (not x1473) x1094 (not x618) (not x943) x192)
+(or x1252 x1274 x441)
+(or x886 (not x3) (not x1553) (not x981) (not x819))
+(or x1500 x405 x623 (not x1194) x297)
+(or (not x136) (not x696) x1124)
+(or x1499 x653 (not x811) x48 (not x282))
+(or (not x1250) x1053)
+(or (not x594) (not x1147) x216 x1171 (not x1173))
+(or x50 x917)
+(or (not x1511) x704 x665)
+(or (not x1140) (not x293) x874)
+(or x814 (not x435) x1350)
+(or (not x976) x1538 x409 (not x72) x1379)
+(or (not x427) (not x946) (not x1521))
+(or x783 x172 (not x1361))
+(or x1413 (not x1331) x1040)
+(or x1010 (not x1328) x1316 (not x719) x462)
+(or x657 x626 x1486 (not x616) (not x553))
+(or x1244 x732 x179 (not x1116) x743)
+(or x1473 x927 (not x687))
+(or x787 (not x849))
+(or x1361 x720 (not x783))
+(or (not x943) (not x306) (not x1473))
+(or x1534 x1608)
+(or x461 x450)
+(or (not x1001) x349 (not x151) (not x906) (not x1103))
+(or (not x986) (not x156) x1284)
+(or x508 (not x1067) x860 (not x858) x1214)
+(or x917 (not x1370) (not x961))
+(or x298 x1457 x865)
+(or x100 (not x454) x975)
+(or (not x1260) (not x791) x912 x1468 x1485)
+(or x1162 x1610 (not x350))
+(or x861 x578 (not x234) x1397 (not x650))
+(or (not x568) (not x668) (not x1036) x900 x994)
+(or (not x373) (not x161))
+(or (not x225) (not x1518))
+(or x1059 x390)
+(or (not x840) x289 x134)
+(or x651 (not x1080) (not x838))
+(or x807 (not x747) x659)
+(or x912 (not x312))
+(or x965 (not x516) x523)
+(or (not x1354) (not x19) (not x526))
+(or (not x1151) x1021 (not x1405))
+(or x501 (not x650) (not x1397))
+(or (not x1368) x243 (not x660))
+(or x1401 (not x1142) x1307 (not x1094) (not x192))
+(or x1094 x197 (not x1151) (not x737) x192)
+(or (not x1567) (not x797) (not x1001) (not x349) x243)
+(or x954 (not x510))
+(or x740 (not x503) x581)
+(or x1509 x729 x832)
+(or x1377 x1165 (not x1483) x84 x1512)
+(or x1116 x480 x1540)
+(or x847 x1339 (not x173))
+(or x266 (not x689) x1334)
+(or (not x512) (not x902) x1047 x1317 x1256)
+(or x1343 x890 (not x530))
+(or (not x28) x1159 (not x1421))
+(or (not x197) x737)
+(or (not x224) (not x1606) (not x679) x783 x1361)
+(or (not x809) x512 x1317)
+(or (not x1001) (not x797) x1528 (not x349) x243)
+(or x1512 x914 x1611)
+(or x1522 x1165 (not x1359))
+(or (not x1244) x961 x179 x672 (not x1147))
+(or (not x513) (not x655))
+(or (not x870) (not x1289) x318 x58 x2)
+(or x1489 (not x458))
+(or x224 x227)
+(or (not x1537) x822)
+(or (not x790) (not x1381) x561)
+(or (not x648) x432 (not x1351))
+(or x1123 x1058 (not x1081))
+(or x795 (not x1444) (not x1330))
+(or x928 (not x1098) x875 x181 (not x1057))
+(or x807 (not x747) x1256)
+(or (not x333) (not x1285))
+(or (not x1133) x1026 x1338)
+(or x610 (not x1041) x816 x952 x1428)
+(or x1006 (not x237))
+(or (not x701) (not x760) x464)
+(or (not x672) x961 (not x494))
+(or (not x1083) x192 (not x251))
+(or x1328 (not x732) (not x179) (not x1116) x1244)
+(or x1289 x870)
+(or x1001 (not x471) x916)
+(or (not x1065) (not x1408) x480 (not x550) x1395)
+(or x1576 x979 (not x786))
+(or (not x1575) x548 (not x1117) (not x61) x33)
+(or x1 x1010 (not x1371))
+(or x1094 (not x1224))
+(or (not x400) x305)
+(or x296 (not x97) x253)
+(or (not x1390) x819 x649)
+(or x373 x539 x1034)
+(or (not x471) (not x660) (not x456) (not x378) (not x881))
+(or (not x616) (not x657) (not x553) (not x626) x1486)
+(or x683 x1606 x1361)
+(or (not x933) (not x756))
+(or x351 (not x1148) (not x1536) x963 x758)
+(or (not x254) (not x144))
+(or x334 (not x517) (not x1182) (not x1005) (not x1587))
+(or x965 (not x1591) (not x709) x516 x1334)
+(or (not x1577) (not x1282) x318 (not x425) x822)
+(or (not x1037) x820)
+(or x783 (not x1064) (not x1361))
+(or (not x474) x792 x1178)
+(or x621 x819 (not x1085))
+(or x1097 (not x1188) (not x783))
+(or (not x1555) x1001)
+(or (not x320) (not x231) (not x609))
+(or (not x1592) (not x1212) (not x1451))
+(or x334 (not x651) (not x763) (not x517) x838)
+(or (not x389) x462 (not x690))
+(or (not x849) (not x643))
+(or x1377 x1308 (not x542) (not x912) x1260)
+(or (not x1213) (not x706) (not x908))
+(or (not x216) (not x179) (not x1244) (not x672) (not x961))
+(or (not x823) (not x703) (not x1382) (not x1184) x1279)
+(or (not x737) (not x1151) (not x1521))
+(or (not x716) (not x479))
+(or x1522 x1414)
+(or x71 (not x257) x974 x213 (not x1563))
+(or (not x378) (not x459) (not x660))
+(or (not x11) (not x1406))
+(or x660 (not x243) (not x1047))
+(or (not x1404) (not x678))
+(or (not x381) (not x12) x557)
+(or (not x1027) x671 x1043 x874 x293)
+(or x223 (not x962) x733 x1321 (not x702))
+(or x962 x92 (not x1321) x733 x223)
+(or (not x1070) (not x804) x1458)
+(or x891 x1354 (not x210) x8 x33)
+(or x967 (not x312))
+(or (not x1361) x783 x100 x608 (not x767))
+(or x266 (not x709) (not x965) (not x1591) (not x516))
+(or (not x1356) x769)
+(or x880 (not x814) x1350 (not x921) x339)
+(or (not x799) (not x573))
+(or (not x535) x630 x1431)
+(or (not x1034) (not x373) (not x198) (not x495) x539)
+(or x535 (not x95) (not x1216) (not x1478) x1289)
+(or x1222 (not x1578) (not x604))
+(or x929 x678 (not x1259))
+(or x757 x36 (not x752))
+(or x1515 (not x1527) x1252)
+(or (not x787) (not x1327) (not x1177))
+(or (not x1561) (not x551) (not x709) x938 x516)
+(or x1225 (not x1514))
+(or x1544 (not x1362) (not x271))
+(or x408 x953 x398)
+(or (not x648) x1114 x767)
+(or (not x686) x999 x1420 x1092 x1546)
+(or (not x874) x293 (not x1033))
+(or (not x656) x1021 (not x372) (not x525) (not x798))
+(or (not x951) (not x35) x803 (not x1609) x600)
+(or x871 (not x565) x834)
+(or (not x1143) x67 (not x413) x462 x1010)
+(or (not x639) x112 (not x1436))
+(or x982 x667 x817)
+(or (not x909) (not x1198) (not x934))
+(or (not x392) x776 (not x46) (not x79) x617)
+(or x779 (not x113) (not x151) x1103 x812)
+(or x1239 x693)
+(or (not x999) (not x1092))
+(or x471 (not x1217) (not x378))
+(or x727 x1511 x704)
+(or (not x837) x1293)
+(or (not x709) (not x1591) x516 x965 (not x184))
+(or (not x208) x838 (not x651))
+(or x944 x220 x865)
+(or x826 x741)
+(or (not x1515) (not x1550))
+(or (not x215) (not x820) x1566)
+(or x528 x437 (not x1189))
+(or (not x1575) (not x1354))
+(or x662 x68 x392)
+(or x198 (not x1503) x495)
+(or x282 (not x1574) (not x515))
+(or (not x1455) (not x828) (not x1466))
+(or x842 x1195 (not x1142) (not x927) x1307)
+(or (not x1397) x50 (not x650))
+(or (not x512) x902 (not x1256))
+(or (not x289) (not x538) x1052 (not x1360) (not x840))
+(or (not x101) (not x462))
+(or (not x465) x145 x487)
+(or x1516 (not x965) x1591)
+(or x1378 x1299 x539)
+(or x420 (not x364))
+(or x413 x140)
+(or (not x1573) x542 (not x29))
+(or (not x330) x1404 x678 x1066 (not x1425))
+(or (not x959) x607)
+(or x1131 (not x1484) x1590)
+(or (not x349) x228)
+(or (not x1229) x1315 (not x993))
+(or (not x975) x464 (not x963))
+(or (not x1515) (not x549))
+(or x897 (not x191) x848 (not x242) x1135)
+(or x887 (not x1170) (not x864) (not x1419) x403)
+(or x489 (not x1589))
+(or x672 (not x923) (not x179))
+(or x1106 (not x78))
+(or x193 (not x485) x1477)
+(or x140 x1378 (not x99))
+(or (not x163) x208 x763)
+(or x1124 x292)
+(or (not x871) (not x111) x834 (not x896) x565)
+(or (not x291) x1024 (not x1015) (not x1435) (not x474))
+(or x1271 x5 x737 (not x1151) (not x1246))
+(or (not x1533) x539 x1176)
+(or (not x1320) (not x945) (not x1437))
+(or x1251 x661 x204)
+(or x1448 x1509)
+(or x760 x1321 (not x1188))
+(or x1531 (not x941) x803 (not x1450) (not x951))
+(or x260 (not x28) (not x1210))
+(or (not x1548) x867 x29)
+(or x4 (not x597) x919 x1341 x1371)
+(or x661 x860 x282)
+(or x221 x462 (not x494))
+(or (not x1134) x1081)
+(or x377 x1509)
+(or x29 x688 x1010)
+(or (not x555) x517 (not x178))
+(or (not x1018) x847 x558)
+(or x803 (not x1340))
+(or x1612 (not x1261) x716 x479 x278)
+(or (not x588) x1391)
+(or x148 (not x586) (not x1241) x831 x993)
+(or x658 (not x1587) x1471 x611 (not x649))
+(or x965 x442)
+(or x208 x1011 (not x128) (not x393) x763)
+(or (not x1010) x462 x1129 (not x647) (not x200))
+(or x1066 x1307 x656 (not x372) (not x1142))
+(or (not x161) (not x484) (not x62))
+(or (not x438) (not x1195))
+(or (not x612) (not x684) x789)
+(or x577 x585 (not x1053))
+(or (not x222) (not x512) x652)
+(or (not x1100) (not x1031) x1013)
+(or (not x580) x1213 (not x1589))
+(or (not x927) (not x500))
+(or x1350 x814 x1006)
+(or (not x106) x1248)
+(or x56 (not x202))
+(or x1161 x1200 x491 x1107 (not x1175))
+(or x838 x904 (not x1353) (not x1053) x651)
+(or x814 (not x1185) x856 (not x477) (not x1350))
+(or x674 (not x1085) x819)
+(or (not x819) x1390 x572)
+(or x212 x950 (not x86))
+(or x555 (not x32) x178 x334 x517)
+(or (not x953) x105)
+(or x874 x293 (not x1227) x505 x851)
+(or x419 (not x614) (not x651))
+(or x396 x373 x539)
+(or x874 x232 (not x399) x287 x293)
+(or (not x1120) (not x1224) (not x1433))
+(or x290 x1082 (not x1028))
+(or x1357 (not x1434) x1597)
+(or (not x411) (not x963))
+(or x1016 x637)
+(or (not x582) x1473)
+(or x1244 (not x1316) x1116)
+(or x938 (not x827))
+(or x959 x1108 (not x1025))
+(or x1412 x1557 x854 x186 (not x453))
+(or (not x651) x517 x334 x599 (not x838))
+(or x781 x211 (not x1264))
+(or (not x847) x173 x1339)
+(or (not x578) x568 (not x1460) (not x93) x1179)
+(or (not x227) x798 x1044 x712 x367)
+(or x1190 (not x909))
+(or (not x1574) x1316 (not x743) (not x1328) (not x1479))
+(or (not x899) (not x373) x603)
+(or (not x1450) (not x471) x1001)
+(or (not x29) x967)
+(or x661 x1375 x1407)
+(or x659 x1361 x764 x1455 x783)
+(or x819 (not x158) x1085 (not x3) x843)
+(or (not x620) (not x1252) x70 x718 (not x786))
+(or x400 x790)
+(or x743 (not x179) (not x1244) x732 x1116)
+(or (not x535) (not x1478) (not x1289))
+(or x1413 x1040 (not x969))
+(or (not x510) (not x927) (not x1434) x842 (not x1275))
+(or x760 x464 x701)
+(or x1317 x512 x1180 (not x562) x625)
+(or (not x951) x1200 x676)
+(or (not x449) (not x473))
+(or x1471 x3 x819)
+(or (not x1312) x30)
+(or (not x849) (not x149))
+(or x730 x458 (not x1489) (not x348) (not x1470))
+(or x1112 (not x1089) x14 x1211 x311)
+(or (not x136) (not x696) (not x1124))
+(or (not x1543) x1442 x1075)
+(or (not x1282) (not x1145) x466)
+(or x717 x1177 x849)
+(or x1487 x1216 x724 x155 x1595)
+(or x366 x439 x1033)
+(or x817 x1129 (not x48) (not x1119) x811)
+(or x1261 (not x1591) x709)
+(or x651 x530 (not x1080))
+(or x61 (not x8) x210 (not x1354) x891)
+(or x1153 x737)
+(or x809 x250 x829)
+(or (not x1506) (not x204) (not x772) (not x386) (not x590))
+(or (not x87) x373 x539 x866 (not x1265))
+(or x148 x821 x650 (not x1397) (not x88))
+(or (not x305) (not x1381) x400 (not x1350) x814)
+(or x1244 (not x179) x71)
+(or (not x1163) (not x54) x981)
+(or (not x1611) (not x406) (not x1366) (not x914) (not x201))
+(or (not x1513) x21 x846)
+(or (not x992) x614 (not x637) (not x651) (not x838))
+(or x517 (not x414))
+(or (not x1133) x748 (not x416) (not x427) x1396)
+(or x637 x651)
+(or (not x1090) (not x718) x620)
+(or x1202 x1137 (not x719) (not x177) (not x1176))
+(or x1024 (not x146) (not x520))
+(or (not x1473) (not x943) (not x999))
+(or (not x973) (not x1094) x1307)
+(or x473 x1384 x304 x1287 x992)
+(or (not x889) x405)
+(or x377 (not x803) x832)
+(or x609 (not x1104) (not x390) x320 (not x231))
+(or x147 (not x54) (not x1321) x223 (not x1351))
+(or x146 (not x520) x1326 (not x571) (not x1015))
+(or (not x1139) (not x926) x1571)
+(or (not x1397) x1091 (not x745) x1144 x650)
+(or (not x513) x537 (not x282))
+(or (not x819) (not x3) (not x1157))
+(or (not x165) x1098)
+(or (not x787) x643 x849 (not x598) x1327)
+(or (not x341) x841 x706)
+(or x1362 (not x1094) (not x251) x238 (not x192))
+(or x1114 (not x767) (not x100))
+(or (not x714) x1476 (not x1452))
+(or (not x479) (not x278))
+(or (not x994) x656 (not x842))
+(or x1600 x1547 (not x276) x661 (not x283))
+(or x124 x637 x301)
+(or x45 x438)
+(or (not x471) x378 (not x35))
+(or x1511 (not x665) x704)
+(or x1080 (not x651) x530 x280 (not x838))
+(or x863 x1446 (not x536))
+(or (not x827) (not x1386) x611)
+(or x1490 x1103)
+(or (not x1171) (not x1305))
+(or (not x410) (not x417) x239)
+(or (not x193) x1491 (not x162))
+(or x518 x1547 x1375)
+(or x1501 x1226 (not x771))
+(or x674 x1460)
+(or x1242 (not x1064) x761)
+(or x774 x243 (not x660))
+(or (not x9) (not x474) (not x1191) x1178 x836)
+(or (not x1111) (not x598) (not x539))
+(or (not x1465) x760 x701)
+(or (not x1137) (not x462))
+(or x214 (not x641) (not x246))
+(or (not x1102) x479 x725)
+(or x538 x1052 (not x290))
+(or x920 x773 (not x709))
+(or (not x203) x1048 x355 (not x1080) x1409)
+(or (not x838) x1353 (not x1053) x936 (not x651))
+(or (not x1415) (not x66) (not x1367))
+(or (not x1406) (not x1210) (not x186))
+(or (not x23) (not x349))
+(or x1533 (not x1479) (not x302) x626 (not x1277))
+(or (not x1353) x585)
+(or x265 (not x1227) x1168)
+(or x439 (not x1183) (not x1194))
+(or x60 x1458 x365)
+(or x240 (not x137) x123)
+(or (not x208) (not x517))
+(or (not x703) (not x263))
+(or x1418 (not x814) (not x1350))
+(or x181 (not x928) (not x1098) x875 x1057)
+(or (not x588) (not x903))
+(or (not x241) (not x8) (not x1045))
+(or (not x1294) (not x919) (not x1183))
+(or (not x276) (not x661) x1375 (not x800) (not x1407))
+(or (not x1032) (not x659))
+(or x293 (not x303))
+(or x867 x1084 x312)
+(or (not x874) x293 x1596)
+(or x893 (not x268) x659 (not x560) (not x168))
+(or x1244 (not x743) (not x179))
+(or (not x1525) (not x1074) (not x41) x906 (not x1319))
+(or (not x884) x929 x75)
+(or (not x436) x786 x648)
+(or (not x279) (not x1142) (not x1307))
+(or x1435 x1191)
+(or (not x919) x1301 (not x1149) x56 (not x1371))
+(or (not x814) x1272 x1350 x1554 (not x26))
+(or (not x192) x57)
+(or (not x88) x538 (not x290))
+(or (not x651) x334 x517 (not x457) (not x838))
+(or x1530 x1416 (not x631) x1253 x586)
+(or x512 x1317 (not x91))
+(or (not x5) x927 (not x894) (not x1271) (not x842))
+(or (not x1042) (not x740) x697 (not x503) x520)
+(or x703 x62 x263 (not x316) (not x196))
+(or (not x1321) x1121 (not x760))
+(or (not x962) x702 (not x1321))
+(or (not x434) x350)
+(or (not x294) x1365 (not x1515))
+(or (not x280) x530 x1253 (not x1052) (not x538))
+(or (not x709) x1591 (not x1270))
+(or x944 x855 x220)
+(or (not x1280) x1300 x336)
+(or x1437 (not x1609) x132)
+(or (not x879) x803)
+(or (not x1371) (not x1183))
+(or x349 (not x1001) x846)
+(or (not x739) (not x888) x861 x983 (not x421))
+(or x462 (not x1010) (not x1172))
+(or x439 x623)
+(or (not x733) (not x726))
+(or x761 x951)
+(or x1322 (not x228) x1513 (not x726) x846)
+(or x795 x1330 x1444 x669 (not x1405))
+(or x50 (not x1262) x1494)
+(or (not x855) x1539 (not x1061))
+(or x740 x503 x1487 x275 (not x49))
+(or (not x1120) x418 x1224)
+(or (not x1410) x140 x373)
+(or (not x540) (not x1249) x502)
+(or x21 (not x927))
+(or x551 (not x938))
+(or x1135 x842 (not x21))
+(or (not x1476) (not x1259) (not x1543) (not x1452) x714)
+(or (not x399) x874 x232 x293 (not x699))
+(or (not x648) (not x454))
+(or (not x14) (not x1089) (not x1211) x311 (not x1112))
+(or (not x3) (not x819) x684)
+(or x1010 (not x1392) (not x462))
+(or (not x709) x516 x920)
+(or x518 (not x970) (not x1462) x655 (not x707))
+(or x1146 x1301 (not x1273) (not x845) x65)
+(or (not x1284) x852 x254)
+(or x611 (not x1440))
+(or (not x372) (not x656) (not x823) (not x1094) x192)
+(or x826 x749 (not x1076))
+(or x1087 (not x462))
+(or x373 (not x691) x1043 x1027 (not x539))
+(or (not x140) (not x769) (not x265) (not x1378) x460)
+(or (not x1591) x442 x709)
+(or (not x651) (not x1353) (not x904))
+(or x1010 (not x1389) (not x675))
+(or (not x482) (not x424))
+(or (not x658) x1440 x827)
+(or x369 x546 x627)
+(or (not x636) (not x866) x1208 x101 (not x79))
+(or x650 (not x1551) x665 (not x857) (not x1397))
+(or x39 x981)
+(or x267 (not x943) (not x1586) (not x1473) x1412)
+(or x1075 (not x678) (not x1442) x1543 (not x929))
+(or x802 (not x353) x708 x527 x1056)
+(or x730 (not x1489) (not x348) x1203 (not x1470))
+(or (not x349) x1525 x1001)
+(or (not x944) (not x1229) x1324 (not x1315) x341)
+(or x83 (not x562) (not x91))
+(or (not x1521) x737 (not x5))
+(or (not x1260) x642 x164)
+(or (not x661) (not x276) x1010 x462 x1392)
+(or (not x963) (not x351))
+(or x1193 x951 (not x803) x191 x524)
+(or (not x397) x1114 x1605)
+(or x1350 x814 (not x428))
+(or (not x945) x262 (not x1238) x1320 (not x52))
+(or x1369 x713 (not x1192) (not x1494) (not x1488))
+(or x592 (not x1010) x462)
+(or x1604 (not x819) x3 (not x843) x1085)
+(or x1214 (not x743) x998 x508 x1574)
+(or x1244 x32 (not x739) (not x178) (not x179))
+(or x349 (not x1363) (not x1001))
+(or x1144 x1091 x1308 x1050 x933)
+(or (not x1414) (not x1359) (not x1118))
+(or x76 (not x412))
+(or x530 x334 (not x517) (not x280) x361)
+(or (not x268) (not x223) (not x893))
+(or x416 x766)
+(or x251 x238 x117)
+(or x811 (not x1355))
+(or x1442 (not x678) x1259 (not x1075) x929)
+(or (not x1291) x1325 (not x291))
+(or x1037 x1350 x477)
+(or x5 x1451 (not x1021))
+(or (not x819) x577 (not x3))
+(or x797 x23 (not x243) (not x1001) x349)
+(or (not x1370) x672)
+(or x1390 (not x577) (not x755) x819 (not x3))
+(or x697 (not x503) (not x1326))
+(or (not x1001) x151 (not x1313))
+(or (not x1543) x678)
+(or x25 (not x435) x618 x306 x1467)
+(or (not x1083) x853 (not x1336))
+(or x27 x34)
+(or x1219 (not x1522) (not x1118) x437 (not x826))
+(or (not x803) (not x783) (not x951) x1361 (not x930))
+(or x1418 x814 x664)
+(or (not x674) (not x1295) (not x1460) x511 (not x1274))
+(or (not x1467) (not x1394))
+(or (not x893) (not x1606) (not x268) x224 (not x1036))
+(or x361 (not x310) x793 x187 (not x1457))
+(or (not x848) x803)
+(or (not x1372) x193 (not x1491) (not x162) (not x452))
+(or (not x986) x149 (not x421) (not x249) (not x717))
+(or x1480 x412 x129)
+(or x409 (not x1379) x976)
+(or x349 (not x625) x881)
+(or (not x1244) x179 (not x1316))
+(or x1091 x542 x933 x1050 x1144)
+(or x2 x1282 x1577)
+(or x654 (not x1350) x233)
+(or x767 (not x783) (not x1039) x1361 x100)
+(or x1379 (not x1598) x180)
+(or x1142 x1021 (not x1307) (not x525) x279)
+(or (not x207) (not x268) (not x1321))
+(or (not x302) x553)
+(or (not x1251) x661 (not x204) x276 (not x515))
+(or x349 (not x524) x243)
+(or (not x394) (not x516) x965)
+(or x1399 x1352 x1124)
+(or x934 x370 (not x195) x1350 (not x814))
+(or (not x1453) (not x461) (not x359) x1152 (not x450))
+(or x32 x48 (not x7))
+(or x562 (not x1317))
+(or x1 x788)
+(or x349 (not x228) x878 x1001 (not x1242))
+(or (not x1113) (not x492) x22)
+(or (not x1174) x761 (not x1242) x1064 x102)
+(or x394 x516 (not x709) (not x1591) x965)
+(or x532 (not x1402))
+(or x334 (not x651) x517 (not x838) x996)
+(or (not x1253) x1052 (not x280))
+(or x1091 x542 (not x1144) (not x1050) (not x933))
+(or x3 x819 (not x1068))
+(or (not x1010) (not x1389) x675)
+(or (not x197) (not x1234) x1196)
+(or x820 x1566 x215)
+(or x1160 (not x429) x43)
+(or (not x3) x819 x1390 (not x755) x1249)
+(or x630 x261)
+(or x147 x512 x1317)
+(or x428 x68 x392)
+(or (not x653) (not x811) (not x508))
+(or (not x1033) (not x966))
+(or x3 (not x529) x819)
+(or (not x1502) (not x704) (not x1430) (not x1292) x1311)
+(or (not x1331) x844 x1413)
+(or (not x510) x238 (not x381))
+(or x1080 x203 x355)
+(or x629 (not x947))
+(or x1474 (not x1090))
+(or x78 (not x369) x546 (not x627) (not x799))
+(or x1214 (not x444) (not x1010))
+(or (not x1329) x574)
+(or x201 (not x1189) x1013 x1155 (not x914))
+(or (not x236) (not x1112) (not x1407))
+(or x1464 x563 x1000)
+(or (not x600) x951 (not x803) (not x35) (not x1609))
+(or x1520 (not x1356))
+(or x1524 x476 x922)
+(or (not x1042) (not x1331) (not x969))
+(or (not x1375) x1547 (not x518) (not x1600) x1462)
+(or x627 (not x980))
+(or (not x525) (not x656) x372 (not x1021) (not x712))
+(or x915 (not x119) (not x407))
+(or (not x1060) x1461)
+(or (not x42) x1319 x1605 (not x1139) (not x937))
+(or x1081 (not x1123) x1058)
+(or (not x864) x1419 x1170)
+(or (not x1336) x305 (not x853))
+(or (not x933) x48 (not x811) (not x834) (not x1050))
+(or x653 x811 (not x508))
+(or x712 x656)
+(or (not x460) x1378)
+(or (not x234) (not x861) x650)
+(or (not x653) (not x605))
+(or x1485 (not x1308))
+(or (not x1592) (not x1582))
+(or (not x781) x335 (not x211) (not x1076) (not x1264))
+(or (not x361) (not x280) (not x334))
+(or (not x1478) x1289 (not x1431) (not x95) (not x1216))
+(or (not x579) x1574 x508)
+(or (not x666) (not x226) (not x1578))
+(or x3 x39)
+(or x803 (not x600) x1609)
+(or x462 (not x1010) x67 (not x1143) x413)
+(or (not x1026) (not x748))
+(or (not x1360) (not x799) x472)
+(or (not x929) (not x1075) (not x1543))
+(or x944 x1324 x831)
+(or x1182 (not x780) x597 (not x976) (not x552))
+(or x1391 (not x1437))
+(or x1010 (not x780) (not x624) x462 x1182)
+(or (not x823) x1094 (not x656) x192 x372)
+(or (not x13) x937 x723)
+(or x1158 (not x378) x471)
+(or (not x919) x1)
+(or x1307 x481 x656 (not x1142) (not x372))
+(or x767 (not x1361) (not x783) x716 (not x100))
+(or x3 (not x819) x550 (not x886) x981)
+(or x555 (not x1539) x354 (not x746) x414)
+(or (not x52) (not x1609) (not x1391) x588 x1437)
+(or (not x767) (not x100) x945)
+(or (not x542) x933 (not x1050))
+(or x207 (not x1321) x268)
+(or (not x948) (not x1341) x1294 (not x4) (not x379))
+(or (not x794) (not x333))
+(or (not x74) x293)
+(or (not x1330) x589)
+(or (not x1426) x660)
+(or (not x1365) x1562)
+(or (not x525) (not x999) x943)
+(or x1535 x790)
+(or (not x811) x653 (not x513) (not x1499) (not x48))
+(or x176 (not x580) (not x498))
+(or (not x650) x1387 (not x502))
+(or (not x498) x1025 x580)
+(or x660 x1373 x881 x471 (not x378))
+(or x1007 (not x1439) (not x221))
+(or x1510 (not x123))
+(or x686 (not x999) x1420 (not x446) (not x1546))
+(or x378 x964 x660)
+(or x961 (not x672) (not x923))
+(or x79 x636 (not x866))
+(or (not x660) x902 (not x378) x797 (not x243))
+(or (not x1385) (not x373))
+(or x1422 (not x731))
+(or (not x567) (not x1305) x565)
+(or (not x1430) (not x665))
+(or (not x773) (not x1238) x1017 (not x516) (not x709))
+(or (not x235) (not x200))
+(or (not x650) (not x770) (not x1119) x817 x1397)
+(or (not x691) x863 x385)
+(or (not x709) x1334 (not x1591) (not x516) (not x965))
+(or (not x450) x359 x1152 (not x461) x1453)
+(or (not x798) x1044 (not x367))
+(or x7 x694 x1164 (not x770) x59)
+(or (not x933) x1144 (not x542))
+(or x1094 (not x973) (not x1307))
+(or x74 (not x293) (not x874) (not x399) (not x232))
+(or (not x372) (not x1237))
+(or (not x399) x505)
+(or (not x48) x811 (not x1119) (not x1611) x817)
+(or x778 x290 (not x1356))
+(or (not x727) x944 x225)
+(or (not x199) (not x519) x1434 x1357 (not x1597))
+(or (not x202) x462 x366 x1010 x385)
+(or x131 x179)
+(or (not x1257) x1079 (not x293) x874 (not x150))
+(or (not x135) x293 (not x1496) x874 (not x1204))
+(or x185 (not x171) (not x487) (not x1131) x145)
+(or x1355 x1413)
+(or (not x1186) x1417 (not x1125))
+(or (not x1238) x262 (not x945) x1437 x1320)
+(or (not x1021) (not x1307) x482)
+(or x651 (not x895) x1353)
+(or (not x327) x48 x811)
+(or x1232 x715 (not x1403))
+(or (not x828) x1455 x659 x1423 x436)
+(or x719 (not x462) x1010)
+(or (not x854) (not x1586) x267)
+(or (not x890) x178 (not x1343))
+(or x325 (not x378) (not x660) (not x881) (not x471))
+(or x1350 x80 (not x73))
+(or (not x1091) x650 x16 x1144 x1397)
+(or (not x650) x745 (not x1397))
+(or (not x50) x1424 (not x1192) (not x1101) (not x1262))
+(or x961 (not x1244) x131)
+(or x826 x1219 (not x437))
+(or (not x1343) (not x32))
+(or (not x777) x1199)
+(or (not x1093) (not x1564) (not x1232) (not x715) (not x1403))
+(or (not x473) x570 (not x681))
+(or (not x715) (not x1018) x263 x1063 (not x700))
+(or x650 x1286 x1353 x1053 x1397)
+(or (not x373) (not x539) (not x1601))
+(or (not x283) x258 (not x518) (not x646) x1462)
+(or x1116 (not x213) x650)
+(or x893 (not x268) (not x224) x1606 (not x227))
+(or x538 x730 x1052)
+(or (not x846) x1322 (not x228) x726 x1513)
+(or x224 (not x496) x783)
+(or x1277 (not x626))
+(or x1360 (not x799) x638)
+(or x48 x933 x834)
+(or x1366 x1512 x1611)
+(or (not x1160) (not x280))
+(or x139 (not x373) (not x1333) x1231 x539)
+(or x709 (not x1334))
+(or (not x60) (not x591) (not x494))
+(or x912 x542 x1308 x248 x1260)
+(or x216 x961 (not x1244))
+(or x783 (not x951) x803 x1361 x1064)
+(or (not x1575) (not x8))
+(or (not x770) (not x694) (not x59) x1164 x7)
+(or x1118 x1414 x1165 x358 (not x1359))
+(or (not x208) x651 x334)
+(or x1190 (not x1198) (not x180))
+(or x661 (not x1392))
+(or (not x501) (not x650) x45 (not x794) x1397)
+(or (not x1606) (not x900) x893)
+(or x356 x1350 (not x1497))
+(or (not x1265) (not x1247) (not x55) x87 (not x826))
+(or (not x1329) x610)
+(or x961 x781 x794 (not x45) (not x672))
+(or x1305 (not x635) (not x1585))
+(or (not x561) (not x1535) (not x167) x1082 x94)
+(or x783 x262)
+(or x139 (not x647) (not x69) (not x235) (not x215))
+(or (not x341) (not x587) (not x1290))
+(or (not x1069) (not x206) x863 x1234 (not x1446))
+(or (not x495) x1439 x198 x373 (not x539))
+(or x845 x1541)
+(or x107 (not x422) (not x431) (not x194) (not x633))
+(or x104 x818)
+(or (not x406) (not x867) (not x358))
+(or x494 x365 x270)
+(or (not x1050) x1109 x1060 x1547 x933)
+(or x1526 (not x1591) x709)
+(or (not x539) (not x373) (not x139))
+(or x332 (not x1370) (not x110))
+(or (not x517) x334 x1143)
+(or (not x748) (not x1396))
+(or x1065 (not x963) x441)
+(or (not x776) (not x292) (not x46))
+(or x1103 (not x660) x1071)
+(or x987 x1277)
+(or x256 (not x43) (not x387))
+(or x1060 (not x1092) (not x931) (not x446) (not x1461))
+(or x1094 (not x192) x662 x3 (not x819))
+(or x64 x1094)
+(or x214 x510 x1094 (not x1275) x192)
+(or (not x924) (not x401) (not x940))
+(or x1437 x588 x903 (not x52) (not x1609))
+(or x236 x14 x1407)
+(or x32 (not x129))
+(or (not x637) (not x1402) x368)
+(or (not x1416) x148 (not x993))
+(or x803 x1154)
+(or (not x368) x785 x527 (not x1344) (not x15))
+(or (not x412) x178)
+(or x691 (not x539) (not x373))
+(or x811 x200)
+(or (not x32) (not x775) (not x1052))
+(or (not x1504) (not x693) (not x777) (not x631) x1495)
+(or x1240 (not x712) (not x798) (not x227) (not x1044))
+(or x242 (not x1135) (not x191))
+(or (not x48) (not x280) x530 (not x1564) (not x811))
+(or x1292 (not x1276) (not x1201) (not x744) (not x808))
+(or (not x1030) x509 x1133 x1338 (not x1026))
+(or x855 x1061 x1539)
+(or x1509 x803)
+(or (not x1150) (not x1105))
+(or (not x1341) (not x517) x1005 (not x1587) (not x334))
+(or (not x1452) (not x678) (not x929))
+(or x78 x835)
+(or x571 (not x697))
+(or x1271 (not x1151) (not x531))
+(or x1259 x1552 x1476)
+(or (not x1010) (not x235) x462)
+(or x1581 (not x1598) (not x909) x934 x1198)
+(or (not x106) x1474 x24)
+(or x1483 x1165 x84 (not x1512) (not x1377))
+(or x682 x581)
+(or x1273 (not x65) x1146)
+(or (not x373) x1176)
+(or x1397 (not x650) x88 x821 x148)
+(or (not x158) x307 x1527 x979 (not x1604))
+(or x592 x607 x788)
+(or (not x1375) (not x276) x661 x918 x800)
+(or x1451 x1592 x1582 x1550 (not x1212))
+(or x497 (not x1138) x689)
+(or x1462 x970)
+(or x334 x651 x835)
+(or (not x365) (not x494) x270 x591 x110)
+(or (not x517) (not x334) (not x170) x53 (not x610))
+(or (not x316) (not x62) (not x263))
+(or (not x961) (not x10) x794)
+(or (not x81) (not x583) x1391)
+(or (not x1198) (not x1190) x180)
+(or x158 x819 (not x1085))
+(or x229 x332 (not x1506) x1077 (not x1556))
+(or x1371 (not x919) x1183 x379 x1294)
+(or (not x518) (not x544) (not x1462))
+(or x1073 (not x821))
+(or (not x927) (not x1271) x5 (not x894) (not x842))
+(or x1142 (not x1159) x1307)
+(or (not x1457) x310 x793 x361 (not x187))
+(or (not x1564) (not x1403) x1063 (not x1232) (not x1093))
+(or (not x1050) x933 (not x1345))
+(or x1397 (not x861) x650)
+(or x943 (not x1473) (not x75) x1586 x267)
+(or (not x449) (not x1008))
+(or (not x1350) (not x138) x73 (not x814) x80)
+(or (not x661) (not x933))
+(or (not x508) (not x579) (not x1574))
+(or x1120 x1098 x806)
+(or (not x721) x778 (not x1010) x290 x462)
+(or x112 (not x512) x23)
+(or x819 (not x1384) (not x432))
+(or (not x867) x358 x406 x29 x1215)
+(or (not x1277) (not x1533) x553)
+(or (not x222) (not x347))
+(or x987 (not x544) x302)
+(or (not x991) (not x1344) x413 x1143 x217)
+(or (not x840) x1052 (not x289) (not x1470) (not x538))
+(or (not x89) x404 x736)
+(or x508 x743 (not x1574) (not x1214) x579)
+(or (not x1457) (not x533) (not x361))
+(or x761 x878)
+(or x3 (not x819) x755 (not x684) x1390)
+(or x293 x699 (not x874))
+(or x178 (not x538) (not x908))
+(or (not x912) (not x1260) x791)
+(or (not x1187) (not x387) x239)
+(or x570 x718 x620 x1524 x1008)
+(or x981 (not x1020) x3 (not x819) (not x886))
+(or x1606 (not x1181) (not x434))
+(or (not x943) (not x582) x1586)
+(or x1249 x502 x540)
+(or x451 x872 (not x789))
+(or x1547 x518 (not x547))
+(or (not x832) x1134 (not x1509))
+(or (not x1345) x16 (not x181))
+(or x368 x1344 (not x15))
+(or x835 (not x996) (not x627) x457 x599)
+(or x1166 x752 x1283)
+(or x135 (not x338))
+(or x622 x344 (not x3))
+(or x1381 x790 x561 x1003 x1565)
+(or (not x673) x1374 (not x409) (not x1542) x1062)
+(or x1351 (not x1321) (not x147))
+(or (not x943) (not x1473) (not x322))
+(or x121 (not x66) (not x189))
+(or x1231 (not x967) x153)
+(or x123 x1273 (not x913) (not x1510) x137)
+(or x944 (not x993))
+(or x1290 x988 x841 (not x706) x341)
+(or (not x687) (not x350) (not x1610) (not x1162) (not x1181))
+(or x1460 (not x511) (not x1295))
+(or (not x1136) (not x1010) (not x290) (not x462) (not x778))
+(or x399 x851 x1073)
+(or x822 x1282 x58)
+(or (not x970) (not x858) (not x302) (not x987) (not x544))
+(or x159 x1361 (not x268) x893 x783)
+(or (not x471) (not x881) (not x660) (not x378) x402)
+(or x1406 x49 x1029)
+(or x312 (not x967) x29 (not x867) (not x248))
+(or x1282 (not x1145) (not x466))
+(or x747 x1481 x1085)
+(or x1172 (not x911) x1299)
+(or x1399 (not x762) (not x501) (not x1055) (not x371))
+(or (not x1308) x164 (not x542))
+(or (not x199) (not x1365))
+(or (not x277) (not x1401) (not x356))
+(or (not x131) (not x1568) x923 x506 (not x1122))
+(or x447 x1252 x975)
+(or (not x41) x1074 (not x299))
+(or (not x480) (not x1408) x550)
+(or x1346 (not x659) x223)
+(or (not x1007) (not x284) x1488)
+(or x855 (not x1229) x944)
+(or (not x660) x964 x881)
+(or (not x506) x632 x1413 (not x844) (not x1040))
+(or x517 (not x334) x780)
+(or (not x290) x778 x170 x1329 (not x217))
+(or (not x297) x966)
+(or (not x15) x413 (not x1143))
+(or (not x1235) (not x1559) (not x1355) (not x1413) x327)
+(or (not x923) (not x131) (not x506))
+(or x1473 x75 x267)
+(or x627 (not x1106) x78 (not x546) x799)
+(or (not x664) x728)
+(or (not x1234) (not x1196) x197)
+(or (not x99) (not x769))
+(or (not x757) x448 x1166)
+(or x36 x971)
+(or x1434 (not x1357) x1597)
+(or x539 x373 (not x1208))
+(or x844 (not x632))
+(or (not x909) (not x1379))
+(or (not x1146) x56 x919)
+(or x238 (not x1021) x754 (not x525) x251)
+(or (not x875) x1429 (not x317))
+(or x49 x329)
+(or (not x527) x368 (not x1344))
+(or x384 (not x1192) (not x1494))
+(or (not x1027) (not x366) x150)
+(or x719 x462 (not x1316))
+(or (not x477) (not x1350) x1037)
+(or x756 x1345 x1057)
+(or (not x608) (not x1463))
+(or x1258 (not x1260))
+(or x270 x1010 (not x1572))
+(or x559 (not x379) (not x1052) (not x538) x612)
+(or x542 (not x1468) (not x1611))
+(or (not x819) (not x3) (not x1249))
+(or (not x1017) (not x516) (not x560))
+(or (not x859) x1037 (not x820) x247 (not x856))
+(or x633 (not x532) (not x301))
+(or (not x633) x422 (not x107))
+(or (not x819) x1390 x810)
+(or (not x214) (not x510))
+(or x1413 (not x1297) x506)
+(or (not x50) x1397 (not x650) (not x106) (not x917))
+(or x672 x1122)
+(or (not x1114) x1605 x397)
+(or (not x1591) (not x266) x709)
+(or x164 x1258 x912)
+(or (not x1151) (not x1223) (not x737) (not x1271) (not x5))
+(or (not x74) (not x399) x874)
+(or x239 (not x376))
+(or x1283 (not x1166) (not x752))
+(or x1217 x471 x378 (not x660) (not x881))
+(or x439 (not x297) (not x1183))
+(or (not x1347) x673 x202 (not x366) (not x218))
+(or (not x508) x858 x1214)
+(or x527 x368 x1344)
+(or (not x1068) x886)
+(or (not x283) (not x1337) (not x539))
+(or (not x24) (not x1020) (not x411) (not x1090) x1553)
+(or (not x684) (not x572) (not x612))
+(or x192 (not x1382) (not x1094) (not x372) (not x656))
+(or (not x907) x1556)
+(or (not x499) (not x684) (not x559))
+(or (not x112) (not x1436) (not x639))
+(or (not x812) x113)
+(or x739 x983 x421)
+(or x716 x278 x1261 x479 (not x1612))
+(or x350 x1162 (not x1610))
+(or x420 x291 x1325 x1291 x883)
+(or (not x522) x18 x448)
+(or (not x243) x349 x1001 (not x797) (not x1567))
+(or x945 (not x783) (not x767))
+(or (not x190) (not x880) x939)
+(or (not x1080) (not x280))
+(or x1560 (not x1580) x1209 (not x955) (not x624))
+(or (not x1176) x6)
+(or (not x1478) (not x58) (not x2) (not x870) (not x318))
+(or x1265 x118 x87)
+(or x1169 x744 (not x469) x450 (not x380))
+(or x1229 x182 x220 x1348 (not x944))
+(or (not x1275) (not x525) x510 x681 (not x1021))
+(or x675 x857)
+(or x1138 (not x497) x689)
+(or x532 x633 x301)
+(or x33 x61 x548 x1575 (not x1117))
+(or x659 x1346 (not x223))
+(or x1010 x1189 x643 x1155 x462)
+(or x1034 x373 (not x198))
+(or (not x72) x1374 x673)
+(or x1055 (not x32) x961)
+(or x140 x769 (not x265) (not x1378) x984)
+(or x1147 x672 (not x961))
+(or (not x1361) x100 x1039)
+(or x797 x774)
+(or x904 x1353 (not x651) (not x838) (not x1053))
+(or x215 (not x1602) x493)
+(or x12 x932 x557)
+(or x1574 (not x1533))
+(or x857 (not x1551) (not x289) (not x232) (not x840))
+(or x1249 (not x819) x3 x1390 x755)
+(or (not x748) x766)
+(or (not x378) x151 (not x85))
+(or x778 (not x88) (not x1052) (not x821) (not x538))
+(or x660 x600 (not x881))
+(or (not x122) x352 x1443)
+(or x1611 x1366 (not x1308) x1468 x542)
+(or (not x1103) x151 x1363 x1001 x349)
+(or (not x516) x1261 x709)
+(or (not x349) x701)
+(or x85 x1367 (not x1071) x937 (not x1605))
+(or x1328 x1316 (not x1010) x1137 x462)
+(or x1321 (not x391) x1455)
+(or x233 (not x814) x805 x1350 x428)
+(or (not x275) (not x1595))
+(or x663 (not x1203) (not x458))
+(or (not x255) (not x830))
+(or x1268 (not x1534))
+(or x1404 x1425 x330 x1442 x1066)
+(or x860 (not x987))
+(or (not x244) x462 (not x1010))
+(or x634 (not x1566) x1164 x1599 (not x493))
+(or x231 x1447)
+(or x52 (not x262) x1320)
+(or x157 (not x403))
+(or x1218 (not x1505) (not x141))
+(or (not x1423) x962)
+(or x1317 x512 (not x1464) x402 x1167)
+(or x611 (not x114))
+(or x282 (not x1499))
+(or (not x944) (not x1229) (not x182) (not x865) x220)
+(or (not x154) (not x1500))
+(or x435 x1467 (not x306) (not x618) x25)
+(or (not x1571) x926 (not x1139))
+(or (not x1142) (not x842) (not x1195))
+(or x661 x513 (not x282) x276 (not x860))
+(or x321 x727 (not x944) (not x1229) x225)
+(or x1425 x656 x1307)
+(or x1298 (not x557) (not x1009) (not x1254) (not x997))
+(or x1093 x1063 x1232 x1564 (not x1403))
+(or (not x1159) (not x1307) (not x1142))
+(or x1184 x703 (not x1382))
+(or (not x1446) (not x691) (not x556) x1364 (not x385))
+(or (not x999) (not x686) x446)
+(or x794 x371 x1397 x650 (not x45))
+(or (not x468) (not x1105) (not x1310))
+(or x471 (not x881) (not x456) (not x660) x378)
+(or (not x1491) x162 (not x1150))
+(or (not x328) x460 x99 x1302 (not x984))
+(or x678 x1476)
+(or x886 x819 x1553)
+(or (not x1349) (not x814) (not x435))
+(or x1423 (not x1455) x828 x1466 x659)
+(or (not x440) x818 x390)
+(or (not x1282) (not x645) x1145 (not x466) (not x822))
+(or x1103 (not x957) x151)
+(or (not x168) x1455)
+(or (not x1293) x1198 (not x1190) (not x180) x1379)
+(or x802 (not x287) x455)
+(or x1464 x402 (not x512))
+(or (not x770) x59 x694 x7 x634)
+(or (not x565) (not x1038) x1342)
+(or (not x1429) x875 x1002)
+(or (not x1601) x889)
+(or x3 x843 (not x529))
+(or (not x1159) (not x1142) x372)
+(or x3 (not x819) (not x344) x432 x622)
+(or x906 x151 (not x1001))
+(or (not x934) (not x370))
+(or x1573 x539 x602 (not x164) x373)
+(or (not x819) (not x3) (not x272))
+(or (not x349) x760 x1001)
+(or x1115 (not x518) x1462 x258 (not x283))
+(or x859 x856 (not x247) (not x1602) x1037)
+(or (not x338) (not x469) x1389)
+(or (not x921) (not x190))
+(or x730 x1489 (not x1203))
+(or (not x1008) (not x1536) x669)
+(or (not x841) (not x612))
+(or (not x1155) (not x1013))
+(or x1026 (not x510))
+(or (not x1440) (not x238) (not x251))
+(or (not x1001) x803 x430)
+(or x737 (not x5) x1246)
+(or x675 (not x1073) x695)
+(or (not x660) (not x1103) x378 x151 x85)
+(or x502 x1249 x1482)
+(or (not x118) x862 (not x233) (not x55) (not x741))
+(or x1052 x840 x573)
+(or (not x982) (not x667) x817)
+(or x297 x1194 (not x1500))
+(or x1040 (not x1355) x1235)
+(or (not x181) (not x875))
+(or x56 (not x1294))
+(or x1400 (not x1127) x160)
+(or x281 x112)
+(or x1229 x298 (not x182))
+(or (not x462) (not x818) (not x904) (not x1010) (not x104))
+(or (not x1071) (not x230) x85)
+(or x425 x839 x1517 x997 x1243)
+(or (not x796) x672 (not x961))
+(or (not x840) x289 (not x366))
+(or x1464 (not x1000) (not x563))
+(or x1594 x177)
+(or x692 (not x921) (not x939))
+(or (not x293) (not x287) x874)
+(or x20 (not x1132) x583)
+(or x814 (not x1272))
+(or (not x516) (not x736) x1017 (not x773) (not x709))
+(or x1358 (not x516) x709)
+(or (not x1010) x1392 (not x462) x276 (not x661))
+(or x1502 (not x1430) x1292)
+(or x645 x308 (not x822))
+(or x1541 x1079 (not x150))
+(or (not x1062) (not x1374) (not x673) (not x409) x1542)
+(or x1149 (not x1294) (not x366))
+(or (not x777) x1416 x586 x1530 x1253)
+(or x755 (not x648) x975)
+(or x1417 x663 x1125)
+(or (not x686) x765 x1606 x224 x434)
+(or x1270 x454 (not x1114) (not x397) x937)
+(or x1018 (not x263))
+(or x349 (not x733) x828 x1001 (not x962))
+(or (not x267) x1586 x453)
+(or x1451 x1271)
+(or (not x326) (not x1046))
+(or x160 x1127 (not x1400))
+(or (not x1203) (not x458) x1125)
+(or x158 (not x819) x1085)
+(or x995 (not x305) x1083 (not x853) x382)
+(or x138 (not x73))
+(or (not x1021) x901 x1586)
+(or x685 x1130)
+(or x1451 (not x5) x1021)
+(or x334 x610 (not x170) x53 (not x517))
+(or x944 x1229 (not x831) (not x1324) (not x1315))
+(or (not x1531) x1450 x803)
+(or x1031 x1013 x1111 x1221 x1579)
+(or (not x332) (not x110) x1370)
+(or x1394 x398)
+(or (not x1073) x290 x778 x1028 (not x1535))
+(or x289 (not x538) (not x638))
+(or x289 (not x472) (not x538))
+(or x1421 x1307 x656)
+(or x1333 x445 (not x1231))
+(or x1025 (not x176) (not x580) x1589 (not x1213))
+(or (not x466) (not x1537) x1282)
+(or (not x588) x803)
+(or (not x716) x1261 (not x497))
+(or (not x687) (not x350) (not x309))
+(or (not x1074) (not x906) x1319)
+(or x1479 x1574 x1316)
+(or (not x958) x942 x189 (not x443) x395)
+(or x922 (not x722) x441)
+(or x1383 x504 x1427)
+(or x717 (not x849) (not x1177))
+(or (not x1340) x879 (not x1233))
+(or (not x1141) (not x1007) (not x915) x713 (not x284))
+(or (not x996) x838 x517)
+(or (not x1337) (not x373))
+(or x1504 x693)
+(or (not x923) x179 (not x672))
+(or (not x1016) x40 (not x539))
+(or (not x1313) (not x349))
+(or (not x1095) (not x953))
+(or x890 x178 x1343)
+(or (not x1542) (not x1347) (not x366) (not x218) x202)
+(or x1263 (not x822) x645)
+(or x48 x653 (not x811) x1499 x508)
+(or x951 (not x1174) x1361)
+(or x1603 (not x1027))
+(or x357 (not x974) (not x257) (not x213) (not x71))
+(or (not x503) (not x146) (not x697) x1042 x740)
+(or x55 x1247)
+(or (not x975) (not x454) (not x100))
+(or x601 (not x1361))
+(or x1459 x1366 x867)
+(or x580 x176 (not x1025) (not x1213) x498)
+(or x692 x907 (not x198))
+(or x1281 x1499 x605)
+(or (not x1159) x481 (not x1421) x28 (not x1237))
+(or x221 x284 (not x1572))
+(or (not x786) (not x82))
+(or x1366 x1483)
+(or (not x167) (not x1088) (not x690))
+(or (not x717) x421 (not x149) (not x249) x156)
+(or x462 (not x818) x1010 (not x104) x904)
+(or x289 x530 x1502 x280 x840)
+(or x1509 (not x832) (not x1463) x404 (not x1134))
+(or x159 (not x442) (not x108) (not x1161) x394)
+(or x698 x172)
+(or (not x639) (not x281) (not x112))
+(or (not x650) x1109 (not x850))
+(or (not x1182) x137)
+(or (not x94) x1565)
+(or x927 (not x1296) (not x1586) (not x842) x267)
+(or x268 (not x900) x893)
+(or (not x397) (not x1270) (not x1114) (not x454) (not x1605))
+(or (not x1214) (not x1010) x462 x508 x444)
+(or (not x540) (not x463))
+(or x251 (not x192) (not x1362))
+(or (not x232) (not x1551) (not x857) x840 x289)
+(or (not x199) x938 x620)
+(or x542 x1377 (not x912) (not x1260) (not x1308))
+(or (not x421) (not x149) x249 x717 x156)
+(or x165 x1272 (not x1224))
+(or x501 x794)
+(or x1096 x803 x604 (not x711) (not x951))
+(or (not x1075) x1583 (not x582) x75 x884)
+(or (not x1598) (not x1379) (not x180))
+(or (not x103) x123 (not x137))
+(or (not x666) (not x1531) x1154)
+(or (not x1311) (not x1201) (not x704))
+(or x1467 x1394 x152 x363 (not x295))
+(or (not x1433) x165)
+(or x280 (not x1126) x530 x1050 x933)
+(or (not x178) (not x672) (not x961) (not x32) (not x1055))
+(or (not x951) (not x803) (not x1107))
+(or x1213 x1589 (not x176) x580 x1025)
+(or x1205 x721 x1136)
+(or x8 (not x891) x1354 x210 x1575)
+(or (not x361) (not x530))
+(or (not x878) x102 x1174 (not x761) (not x1064))
+(or x1530 x538 x1052)
+(or x512 (not x1368) (not x1388) (not x147) (not x1317))
+(or x618 (not x1467) (not x306))
+(or x1361 x1606 x679)
+(or (not x1606) x679 (not x1361))
+(or x11 x1210 (not x1029))
+(or (not x667) (not x1119))
+(or x1535 (not x507) x373 (not x539) (not x1082))
+(or x1452 (not x714) (not x1476))
+(or x1071 x660 x378)
+(or x1438 x388 (not x286))
+(or (not x843) x1481)
+(or (not x178) (not x838) (not x32) x129 (not x651))
+(or (not x3) (not x192) (not x407))
+(or x1006 (not x1302) (not x814))
+(or (not x1062) (not x72))
+(or (not x459) (not x471))
+(or x538 (not x908) x1052)
+(or x1608 x814 (not x138))
+(or (not x1005) (not x1397) (not x1607))
+(or (not x730) (not x1470) (not x458))
+(or (not x358) x406 x867)
+(or x682 x750 x503)
+(or x1148 x1395 (not x922))
+(or x1144 x1162 (not x307) (not x309) x1323)
+(or x1473 (not x1412))
+(or (not x1608) (not x246) x73 x214 (not x1534))
+(or (not x814) (not x1500) (not x271))
+(or (not x1188) x783 x1465 (not x1097) x1361)
+(or x1292 x704)
+(or (not x1585) x750)
+(or x248 x1084)
+(or x1020 (not x411) (not x24) (not x1553) x1090)
+(or x486 (not x683) (not x496) x667 x1296)
+(or x944 (not x182) x1229 (not x855) (not x220))
+(or (not x1067) x276 (not x513))
+(or (not x700) x62 (not x196) x316 (not x703))
+(or x6 (not x1594) (not x177) x978 (not x1335))
+(or (not x1321) (not x1455) (not x391))
+(or x32 (not x1345))
+(or x1331 x969 (not x1042))
+(or (not x515) (not x276) (not x772))
+(or x987 (not x860) (not x1214) (not x1067) (not x508))
+(or x246 (not x1275) x510)
+(or (not x676) x1200 x951)
+(or (not x690) x1088 x94 (not x675) (not x699))
+(or x375 x525 x510)
+(or (not x1145) x822)
+(or x686 (not x765))
+(or x1577 x58)
+(or x1120 x1049 x165 x928 (not x806))
+(or (not x1462) (not x1115))
+(or (not x1333) (not x1231) x69 x373 (not x539))
+(or (not x4) x919 x597)
+(or (not x1515) x979)
+(or x275 (not x503) (not x1487))
+(or (not x180) (not x936) (not x895))
+(or x586 (not x1530) x777)
+(or (not x107) x1016 x301)
+(or x1361 (not x608))
+(or x163 x1125)
+(or (not x1364) x1010 x202)
+(or (not x1486) x882 x814 (not x1350) (not x985))
+(or x146 x520 x1024)
+(or (not x1455) x168 (not x560) (not x893) x268)
+(or x38 (not x1107) (not x1161))
+(or x442 x394 (not x108) x1175 (not x159))
+(or x1434 x927)
+(or x295 x363 x1394 x1467 (not x152))
+(or (not x1166) (not x522) (not x757) (not x448) x36)
+(or (not x1279) (not x814) (not x1350))
+(or (not x446) (not x1092) (not x1461) x1109 (not x931))
+(or x1496 (not x293) x303 x135 x874)
+(or x1241 x821 (not x1397) (not x88) x650)
+(or x1104 x320 x1447)
+(or x668 x900 x568)
+(or x376 x362 x1002)
+(or (not x1301) x919 (not x1149))
+(or x1431 x1051)
+(or (not x860) x513 x282 (not x661) (not x276))
+(or x360 x1100 x1497)
+(or (not x650) x745 x1144)
+(or x1123 x1081 (not x1058))
+(or x660 (not x881) x377)
+(or x1466 x551)
+(or (not x1318) (not x614))
+(or (not x1423) x1455 (not x1022) (not x659) x828)
+(or x437 x1118 (not x1247))
+(or (not x179) x1173 (not x672) (not x1244) (not x961))
+(or x196 x700)
+(or (not x502) x202 (not x289) x840 x463)
+(or (not x404) (not x832) (not x1128) (not x1509) x1463)
+(or (not x683) (not x1361) (not x783) x1606 (not x224))
+(or (not x854) (not x186) x1557)
+(or x1029 x186 x1210 x28 (not x11))
+(or x1265 x87 x55)
+(or (not x1349) (not x633))
+(or (not x321) (not x1288))
+(or x1009 (not x1517))
+(or (not x1216) x724 (not x1595))
+(or x373 x539 x507)
+(or (not x709) (not x1054) (not x1008))
+(or x1460 x1274)
+(or x1566 (not x1599))
+(or x1547 (not x282) x707 x1600 (not x513))
+(or (not x117) (not x816) x476)
+(or (not x21) x500 (not x1322) (not x1135) (not x842))
+(or x1587 (not x1471) (not x649))
+(or (not x351) x644 (not x1068) x1281 (not x39))
+(or x54 x147 (not x44))
+(or x178 (not x775))
+(or x1581 x934 x909 (not x1198) x1598)
+(or (not x385) x462 (not x366))
+(or (not x1062) (not x1140))
+(or x1142 x330 x1307)
+(or x478 (not x157))
+(or x985 x1486)
+(or (not x341) (not x988) (not x587))
+(or x910 (not x1396) x645)
+(or x864 x1094)
+(or (not x201) (not x1215))
+(or x1227 (not x505))
+(or x750 (not x503) (not x682))
+(or (not x366) (not x1257) (not x966))
+(or x857 x840 x232)
+(or (not x957) x383 (not x723) (not x1004) x1445)
+(or (not x1514) (not x57) (not x64))
+(or (not x441) x476)
+(or x431 x1016 (not x368))
+(or (not x1044) (not x367) x798)
+(or x1009 x569)
+(or x251 x1275 x954)
+(or (not x1260) (not x670) x164)
+(or (not x625) x1180 (not x512) x1317 x91)
+(or (not x87) x741 (not x1247))
+(or x328 x237 (not x984))
+(or x265 x1398)
+(or x1134 (not x1081) (not x1128))
+(or x1361 x945)
+(or (not x183) (not x1558) (not x1309))
+(or (not x403) x1170)
+(or (not x123) x1301 x65)
+(or (not x1554) x1350 (not x1272))
+(or x835 x838 (not x651))
+(or (not x267) (not x884))
+(or x1279 (not x703) x1184 (not x823) x1382)
+(or x502 (not x1079))
+(or x1371 x1294 (not x889))
+(or x844 x1122 (not x923))
+(or x435 (not x1467) x618)
+(or (not x153) x815 x477 (not x445) x259)
+(or x859 x820 x247)
+(or x983 x1244 x178)
+(or (not x485) x751 (not x77))
+(or (not x192) (not x737) x1196)
+(or (not x565) x1342 (not x635))
+(or x1362 x154 x271 (not x1108) (not x825))
+(or (not x280) x961 (not x1262) x530 (not x672))
+(or (not x1391) x1558 x81)
+(or (not x224) x1361 (not x1606) (not x601) x783)
+(or (not x1198) (not x180) (not x1379))
+(or (not x789) (not x1153))
+(or (not x1352) (not x762) x501)
+(or x298 (not x220))
+(or (not x229) (not x907) x1077)
+(or (not x1462) (not x977) (not x1600))
+(or (not x1325) x1435 x420)
+(or (not x1008) (not x1097))
+(or (not x410) (not x1126) x1160)
+(or (not x1142) (not x1237))
+(or x577 (not x3) x755)
+(or (not x205) (not x874) x135)
+(or (not x840) (not x1311))
+(or x328 (not x1302) x460)
+(or (not x863) (not x1234) x536 x1446 (not x206))
+(or x1417 x606)
+(or x709 x1008 (not x1054) x516 x1097)
+(or x1342 x1171 (not x1038))
+(or x1275 x375 (not x510))
+(or x672 (not x494) (not x961))
+(or x1084 x445 x1231)
+(or (not x1133) x1030)
+(or x592 (not x462) x919)
+(or (not x653) x282 (not x811))
+(or (not x338) (not x1169))
+(or (not x1508) x1358 x189)
+(or (not x498) (not x489) x1589)
+(or (not x531) x5)
+(or x486 (not x667) x683)
+(or x329 x1029 (not x275) x1406 (not x260))
+(or x1001 x349 (not x733) x1423 (not x962))
+(or (not x1560) x780)
+(or x556 x863)
+(or (not x539) (not x373) x1034)
+(or (not x1021) (not x1582))
+(or x485 x77 x751)
+(or x1262 x1494 x1101)
+(or (not x1260) (not x1377) (not x542))
+(or x179 x1122)
+(or x672 x1264 (not x961))
+(or x1031 (not x791) x1570)
+(or x11 x1406 x1210 (not x28) (not x186))
+(or (not x1259) (not x1442))
+(or (not x178) (not x762) x672)
+(or (not x811) x1050 x871)
+(or x869 x1579 (not x791))
+(or (not x279) (not x525) (not x1142))
+(or (not x217) x1344 x1143)
+(or x1576 (not x1524) (not x1550))
+(or (not x516) (not x965) (not x709) x394 (not x1591))
+(or x272 (not x1306) x1461)
+(or (not x360) (not x1100) x1497)
+(or (not x727) (not x321))
+(or (not x484) x1214 x462 x1010 x508)
+(or x349 (not x711))
+(or x178 x1055)
+(or x251 x117 x525)
+(or (not x951) (not x349) x383)
+(or (not x219) (not x786))
+(or (not x1039) x1102 (not x266))
+(or x1013 (not x1221) (not x1111))
+(or (not x1050) (not x178) x32 x756 x933)
+(or x1437 x945 x1238 x262 (not x1320))
+(or x379 x218 (not x1294))
+(or (not x1207) x1418)
+(or (not x866) x1265 x539)
+(or x1280 (not x336) x1300)
+(or x1087 (not x124))
+(or (not x1094) (not x1151) (not x197))
+(or x1496 x1204 x293)
+(or x894 x1271)
+(or (not x1473) x1412 x943 x1586 x267)
+(or x1580 x624 x1560 (not x955) x1209)
+(or (not x912) (not x273) x904)
+(or (not x1150) x1072 (not x680))
+(or (not x1355) x933 x48)
+(or x1396 (not x766) (not x1432) (not x466) x910)
+(or x1216 (not x1289) x261 (not x1478) (not x95))
+(or x366 x1542 x202)
+(or x19 x364 x685)
+(or (not x557) x1254 (not x1298) (not x1009) (not x997))
+(or x639 x1436)
+(or (not x344) x432 (not x622) x819 (not x3))
+(or (not x1194) x966)
+(or (not x1071) x660 (not x378) x1103 x151)
+(or x1125 (not x1186) (not x905) (not x663) (not x606))
+(or (not x530) x71 x1244)
+(or (not x315) x503 (not x1552))
+(or (not x1195) x927)
+(or x232 (not x840) x289)
+(or x1055 (not x371) x762 x501 x1352)
+(or x415 x1252)
+(or (not x379) x612 (not x538) x1052 (not x559))
+(or (not x140) (not x99) (not x1378))
+(or (not x644) (not x39) (not x1281))
+(or x1448 (not x183))
+(or x334 x651 (not x128))
+(or x790 x1082 x167)
+(or (not x318) x1577)
+(or (not x1546) x943)
+(or (not x1060) (not x931) x1092)
+(or x1059 x104 x1010)
+(or (not x888) (not x650))
+(or x757 x752 (not x522) (not x448) (not x36))
+(or x439 (not x1257))
+(or x1180 x1317 (not x512) (not x562) (not x625))
+(or (not x460) x265)
+(or x432 x819 x1157 (not x622) (not x3))
+(or x372 x330 (not x1142))
+(or (not x661) (not x1067))
+(or x738 x1588 x1449)
+(or (not x272) x1461 x1306)
+(or x452 x1456 x1372)
+(or x17 (not x483) (not x653))
+(or (not x838) x992 x637)
+(or x475 (not x192))
+(or (not x1279) x814 x311)
+(or (not x579) x1328 x998 (not x1077) (not x1316))
+(or x1110 x1156 (not x782))
+(or (not x523) x1526 (not x584) (not x720) (not x242))
+(or x398 (not x953) x408)
+(or x1028 x695)
+(or (not x1437) x1320 x945)
+(or (not x1234) x1418 x1196)
+(or x1451 x1212 (not x1582) x1014 (not x1550))
+(or (not x819) (not x577) x1390 x3 x755)
+(or x1591 x184)
+(or (not x76) (not x1472) x1480 (not x1447) (not x609))
+(or x1207 (not x1596) (not x728))
+(or (not x1109) x933 x276)
+(or x1271 (not x1151) x1223)
+(or (not x1155) (not x643) x1010)
+(or x1382 (not x192) (not x656))
+(or (not x1473) x475 (not x1094))
+(or x1054 x783 (not x1188) x1465 x1361)
+(or (not x372) x656 x859)
+(or (not x918) x1375)
+(or x1605 (not x1367))
+(or x1069 x1446)
+(or x1121 (not x223))
+(or x374 x927 (not x1307))
+(or x1227 x265 (not x1168))
+(or (not x1536) x1252 (not x82))
+(or x997 (not x1298) (not x1254))
+(or (not x709) x516 (not x168))
+(or (not x1255) (not x590) x537)
+(or (not x838) (not x996) (not x517))
+(or (not x814) (not x428) (not x1350))
+(or x532 (not x368) (not x1393) (not x637) (not x419))
+(or x1061 (not x1348) (not x855) (not x1539) (not x1607))
+(or (not x100) x767 (not x1361) (not x783) (not x945))
+(or x3 (not x1287) (not x622))
+(or x451 (not x499) (not x1153))
+(or (not x531) x1278 (not x1298) x569 (not x1246))
+(or (not x79) (not x776) x46 x292 (not x392))
+(or x338 x1385 x389 x1389 x1169)
+(or x203 (not x355) (not x1080))
+(or (not x951) (not x1445) (not x803))
+(or x883 (not x905) x640 x364 (not x1417))
+(or x711 x1222 x1096 (not x803) x951)
+(or x865 (not x944) x1229)
+(or (not x1108) (not x825) (not x1362) x271 (not x154))
+(or (not x1341) x218)
+(or x1066 (not x1442) (not x1404))
+(or x672 x961 (not x1264) x45 (not x794))
+(or x692 x880 (not x1503) (not x939) (not x190))
+(or (not x1120) x1272)
+(or (not x68) (not x392) x428 x662 x654)
+(or (not x1001) (not x349) (not x1529) (not x471) x881)
+(or x353 (not x527) x802)
+(or x418 x1554 (not x814) x1350 (not x26))
+(or (not x1208) x373 x87)
+(or (not x1462) (not x1046) (not x283) (not x258) (not x518))
+(or (not x432) x819 (not x1314))
+(or (not x603) (not x161))
+(or (not x1030) (not x1338) x1026 x748 x509)
+(or x951 (not x109) (not x554))
+(or x1475 (not x1221) (not x1100))
+(or (not x80) x814 (not x1608) (not x1350) x138)
+(or (not x1297) x969 x697)
+(or (not x551) (not x1365) x709)
+(or (not x932) x557 (not x12))
+(or (not x1288) (not x1229) x944)
+(or x912 (not x1260) x1468 x1485 x1570)
+(or x959 (not x1544) (not x580))
+(or x709 x516 (not x965) x1591 (not x1358))
+(or (not x127) (not x1369))
+(or (not x1604) x3 x819)
+(or x1271 (not x5) x1151 (not x737) (not x1246))
+(or x3 x621)
+(or (not x29) (not x358))
+(or x1015 (not x836) (not x291))
+(or (not x1210) x1412 x854)
+(or x1173 x567 x216 x594 x1147)
+(or x1013 (not x201) x914 x1189 x1155)
+(or (not x13) (not x723) (not x937))
+(or (not x441) (not x114))
+(or (not x836) (not x1015) x291)
+(or (not x1066) x1404 (not x1442))
+(or x451 x938)
+(or (not x979) (not x307) (not x1604))
+(or x943 x618)
+(or x1128 x1509)
+(or x471 (not x881) x1180 x1001 (not x349))
+(or x941 x1450 (not x1154) (not x951) (not x803))
+(or (not x1009) x1246 x531 x1278 (not x569))
+(or x1425 (not x1307) (not x656))
+(or x817 x650 x770)
+(or x796 x1370 (not x110))
+(or x27 (not x134) (not x313) (not x960) x566)
+(or (not x332) x692)
+(or (not x946) x1271 (not x1151))
+(or (not x644) (not x1536) (not x963))
+(or x394 (not x1161) x442 (not x159) (not x108))
+(or (not x1132) (not x583) (not x20))
+(or x510 x1021 x681 (not x525) x1275)
+(or (not x1093) x1397 (not x650) (not x653) x1499)
+(or x57 (not x1094) (not x1275))
+(or (not x557) (not x1298) (not x1243))
+(or x227 (not x367) x1044)
+(or x152 (not x105) x363 x1467 (not x295))
+(or (not x502) x1397 x650 x463 x877)
+(or x1294 (not x1183) x919)
+(or (not x1271) x1246)
+(or (not x835) x334 (not x838) x517 (not x651))
+(or (not x1350) x814 x271 (not x1500) (not x1519))
+(or (not x191) (not x803) (not x524))
+(or (not x955) (not x539) x913 (not x137) x373)
+(or (not x32) (not x412) x838)
+(or x715 x1093)
+(or (not x751) x77 (not x485))
+(or (not x44) x432)
+(or x1171 (not x565) (not x1342) (not x567) x635)
+(or x660 (not x378) x1047 x243 (not x797))
+(or x906 x1103)
+(or (not x903) x52 (not x1609))
+(or (not x323) x1605 x575)
+(or x135 (not x1312))
+(or x701 (not x733) (not x1001))
+(or x405 x1183 (not x966))
+(or (not x937) (not x968) (not x42))
+(or x503 x241 x740 (not x682) x1585)
+(or x219 x543 (not x949))
+(or x349 x1525 (not x1001))
+(or (not x52) (not x262) (not x1320) (not x1238) (not x945))
+(or x238 (not x1083) x251)
+(or x683 x224)
+(or x753 (not x1070) x211)
+(or (not x613) x69 (not x235))
+(or (not x967) (not x259))
+(or x1361 (not x108) (not x268) x783 x893)
+(or (not x1008) (not x1550))
+(or x961 (not x672) (not x796))
+(or x28 x1210 x260)
+(or (not x1496) (not x205))
+(or (not x790) (not x1381) x1003)
+(or (not x203) x105 x398)
+(or (not x643) (not x1189))
+(or x243 (not x1528) x349)
+(or x1242 (not x102))
+(or x1188 x1097 x783)
+(or (not x1235) (not x48) (not x811))
+(or x508 x462 x1010 x444 x1214)
+(or x1422 (not x1078) x554)
+(or (not x1357) (not x199) x1597)
+(or x1160 (not x530) x280 (not x933) (not x1050))
+(or x243 (not x1388))
+(or (not x1055) x371 x1399 x762 (not x501))
+(or (not x1052) (not x1294) (not x538))
+(or x1050 (not x867) (not x933))
+(or (not x1591) (not x709) x965 (not x523) x516)
+(or x339 x1141 x1303)
+(or x1023 x443)
+(or (not x1082) x790 (not x167))
+(or (not x810) x1353 (not x585) (not x1597) x577)
+(or x1360 x840 x1052)
+(or (not x412) x32 (not x838))
+(or x1496 (not x373) (not x338))
+(or x1361 x803 (not x102) (not x951) x783)
+(or (not x1163) x1321)
+(or (not x498) x580 (not x176))
+(or x591 (not x494) x270 x60 x110)
+(or x756 (not x1345) (not x16) (not x745) x181)
+(or (not x1217) x881)
+(or x1398 x1227 x769)
+(or (not x960) x34 (not x1069) (not x90) (not x536))
+(or x783 x803 x1361 (not x951) x1019)
+(or (not x728) x293)
+(or (not x1094) x251 (not x853) x192 (not x238))
+(or (not x1588) (not x1449) x738)
+(or (not x324) x115 (not x630))
+(or x1602 (not x856))
+(or (not x1018) (not x558) (not x22))
+(or (not x1141) x1488)
+(or x832 (not x1463) (not x1509) (not x1134) (not x404))
+(or x1192 x50)
+(or x797 x109 x378)
+(or (not x1462) (not x478) (not x283) (not x258) (not x518))
+(or (not x314) (not x277))
+(or x9 x474)
+(or (not x250) x829 (not x809))
+(or x642 (not x1573) x164)
+(or x702 (not x223))
+(or x630 (not x1431) x535)
+(or (not x1397) (not x1250) (not x650))
+(or x517 (not x1587) x780)
+(or (not x180) x1581 x1293)
+(or x924 (not x1373) (not x803))
+(or (not x1572) (not x221) x1034 (not x284) (not x1439))
+(or x908 x706 (not x1213))
+(or x895 (not x273) (not x1293))
+(or (not x992) (not x304))
+(or x723 (not x383) x1445)
+(or x566 (not x1387) x1288)
+(or (not x1564) x1232 x1403 (not x1093) (not x715))
+(or x1603 x1207)
+(or (not x1231) (not x815) x967)
+(or (not x798) x712 x1240 x227 (not x1044))
+(or x874 (not x293) x1227)
+(or x1397 x502 (not x1387) (not x463) (not x650))
+(or (not x428) (not x68) x392)
+(or x298 x944)
+(or x915 x339)
+(or (not x742) x965 (not x224) x1591 (not x1606))
+(or x612 x650 x841 x559 x1397)
+(or x858 x508 (not x1214))
+(or (not x823) x196 (not x1382))
+(or x1361 (not x100) x262)
+(or (not x1010) x462 x484)
+(or (not x1173) (not x961) x672)
+(or (not x658) x1471 x1587)
+(or (not x842) x1142 (not x374) x927 x1307)
+(or x1563 (not x213))
+(or x1456 (not x452) (not x1372))
+(or x992 (not x124))
+(or x1242 (not x1174) (not x1064))
+(or (not x951) x1107 x1567 x803 x676)
+(or x1293 x273 x936 x1379 x895)
+(or x215 (not x139) (not x235))
+(or (not x720) x1526 (not x897) (not x584) (not x523))
+(or x605 (not x1281) x17 (not x1499) x483)
+(or x1586 (not x267) x486)
+(or (not x7) x634 x694 x770 (not x59))
+(or (not x887) x1170)
+(or (not x1260) x273)
+(or (not x893) (not x268) x227)
+(or x1318 x301)
+(or x1060 (not x1600))
+(or x1468 x1260 x791)
+(or (not x8) (not x33))
+(or x961 x494 x672 (not x106) (not x917))
+(or x1197 x1523 x1436)
+(or x574 (not x170) x1073)
+(or (not x448) x51 (not x522) (not x36) x757)
+(or x562 (not x1180))
+(or (not x1062) x37 x925)
+(or (not x911) x160)
+(or x68 (not x662) (not x392) x654 (not x428))
+(or x965 x1261)
+(or (not x631) x693 x1199)
+(or x807 (not x1032) x648 x975 (not x755))
+(or x842 x374)
+(or (not x291) x1178 (not x1435) (not x1015) x1024)
+(or x713 x384)
+(or (not x1371) x612 x559 (not x1052) (not x538))
+(or x118 x1247)
+(or (not x925) x1374 x1140)
+(or (not x755) (not x1249) x3)
+(or (not x378) (not x1103) (not x151) (not x660) (not x1490))
+(or x1542 x1347)
+(or x1262 (not x50) x1494)
+(or x744 x1276 (not x1201))
+(or (not x1137) (not x1328) (not x1010))
+(or x1397 (not x148) x650)
+(or (not x132) x1058)
+(or (not x919) (not x1052) (not x538))
+(or (not x93) (not x994) x668 x1036 x900)
+(or x872 (not x499))
+(or x1455 x1481 x1361 x783 x659)
+(or (not x796) x917)
+(or x1087 (not x363))
+(or (not x462) x1189 x1327)
+(or x1315 (not x341))
+(or (not x672) (not x794) (not x961) (not x1264) (not x45))
+(or x1564 (not x280) x48)
+(or (not x471) (not x1373))
+(or x510 (not x192) x246)
+(or (not x189) (not x125) (not x1358) (not x184) (not x1508))
+(or x378 x660 (not x731))
+(or (not x1588) (not x738) x1449)
+(or (not x1531) x803 x951)
+(or x176 (not x908) (not x587))
+(or (not x826) (not x87) x55)
+(or (not x1410) x67 (not x1400))
+(or (not x1079) x150 x1541)
+(or (not x1314) x344 x88)
+(or (not x116) (not x1201))
+(or x606 (not x1125) (not x1186) (not x905) (not x663))
+(or x1016 (not x124))
+(or (not x987) (not x544) (not x970) (not x858) (not x1277))
+(or x1008 x441 x922 (not x1524) (not x476))
+(or (not x1148) (not x758) (not x351))
+(or x647 (not x462))
+(or x794 (not x1397) (not x371))
+(or x650 (not x770) (not x817) (not x1397) (not x1119))
+(or x1158 (not x951) x803 (not x401) x964)
+(or x758 x1365 (not x1562) (not x1536) (not x938))
+(or x1295 x511 x1460)
+(or x908 x538 x178 (not x1052) (not x32))
+(or x318 (not x2) x1289)
+(or x1448 (not x832) (not x1463))
+(or x1145 (not x757) x308)
+(or (not x42) x1139 (not x1319))
+(or (not x1434) x510 (not x927) x1275 (not x842))
+(or x1252 (not x70))
+(or x961 (not x672) x749)
+(or (not x510) (not x1338) x1275)
+(or (not x1317) x1180 (not x91))
+(or (not x1010) x1327 x462)
+(or x658 x1587 (not x1471))
+(or (not x934) x909 x1198)
+(or x550 x1540 (not x1065) (not x1395) (not x1408))
+(or x1149 (not x379))
+(or (not x201) x1512)
+(or x842 (not x872) (not x1151) (not x927) x737)
+(or (not x795) (not x737) x525)
+(or (not x1350) (not x1267) x1207)
+(or (not x1611) (not x1366) (not x201) (not x914) (not x1483))
+(or (not x555) x32)
+(or x778 x1052 (not x538) x821 (not x88))
+(or x1474 x1553)
+(or x647 (not x613))
+(or x832 x1463 x1128)
+(or (not x647) x139 x235 x69 x613)
+(or (not x754) x238 x1021)
+(or x781 (not x672) (not x794) (not x45) (not x961))
+(or x742 (not x965) (not x1606))
+(or (not x942) (not x958) (not x395))
+(or x529 x621 x982 (not x82) x415)
+(or (not x1028) (not x821) x1052)
+(or (not x88) (not x650) (not x148))
+(or x1050 x1060 (not x1547))
+(or (not x539) (not x373) (not x245))
+(or x951 (not x1019))
+(or (not x96) x1307 x192 x1142 x1094)
+(or x1562 x1536)
+(or (not x100) x648 x975 (not x125) x767)
+(or x289 (not x857) (not x1551) x840 x690)
+(or (not x244) (not x124) x462)
+(or (not x1229) x831 x944)
+(or (not x840) x150 x289)
+(or (not x1248) (not x279))
+(or x933 x1050 x1109 (not x1060) x661)
+(or (not x919) x612 x538)
+(or x1038 (not x1585) x1305)
+(or (not x1338) (not x510) x238)
+(or (not x648) x100 x975 (not x767) (not x125))
+(or (not x517) (not x53) (not x1329))
+(or x1124 (not x1399) (not x1352))
+(or x895 x904 (not x1190) x104 x936)
+(or x280 (not x530) (not x840) x1502 (not x289))
+(or x709 x773 (not x1320) x1017 x516)
+(or x312 x1260 (not x912) (not x542) x1308)
+(or (not x1592) (not x857) x1157 x734 (not x1014))
+(or (not x905) (not x883) (not x640))
+(or (not x1389) x338 (not x469))
+(or (not x349) (not x881) x1096)
+(or (not x192) (not x1094) (not x68))
+(or (not x318) (not x822) (not x1282))
+(or (not x1181) (not x765))
+(or x528 (not x200) x1129)
+(or (not x783) (not x764) x1361)
+(or (not x293) x205 x874 x135 x1496)
+(or (not x1183) x889 (not x439) (not x966) x1194)
+(or x819 (not x1428) (not x3) x432 (not x622))
+(or x568 x234 (not x1460) x1179 (not x93))
+(or x709 (not x938))
+(or (not x1034) x284 (not x1572))
+(or x1265 x749 x781)
+(or x973 (not x978) (not x1532))
+(or x1011 x517 x838)
+(or (not x1446) (not x863) (not x536))
+(or (not x759) (not x189) x299 (not x443) x490)
+(or x927 x872)
+(or x12 (not x1254) x954)
+(or x207 (not x773) (not x709) x516 (not x1017))
+(or x1567 x349 x243)
+(or x1133 (not x910))
+(or x790 (not x94))
+(or x1592 x857)
+(or x686 x446 (not x1420))
+(or (not x1050) x48 (not x933) (not x811) x896)
+(or (not x803) (not x951) x950)
+(or (not x26) x814 (not x418))
+(or x1234 (not x536) (not x863))
+(or x776 (not x662))
+(or (not x672) x917 x270 x961 x106)
+(or x1499 (not x483))
+(or (not x646) x1462 x283 (not x258) x518)
+(or (not x1227) (not x1168) (not x265) (not x1398) (not x1356))
+(or x1576 x1365 x1515 (not x938) x294)
+(or (not x938) x549 x1365 x1515 x1576)
+(or x192 x656 x859)
+(or (not x1335) (not x1245) (not x177) x6 x978)
+(or x9 (not x541) (not x548))
+(or x695 (not x1398))
+(or x1454 x1492 x126)
+(or (not x1326) x571 (not x1015) x146 x520)
+(or x1379 (not x1190) (not x1293) (not x180) (not x1581))
+(or x463 x150)
+(or (not x293) x232 x699)
+(or (not x1053) x1250 x1353 x650 (not x1397))
+(or (not x135) x1496 (not x293) (not x874) x205)
+(or (not x86) x803 x951)
+(or x828 x659 x1022)
+(or (not x465) (not x145) (not x487))
+(or x660 x456)
+(or (not x308) (not x757) (not x1145))
+(or x578 x1460)
+(or x981 (not x1068) (not x3))
+(or (not x293) (not x150) (not x874) (not x1079) x37)
+(or (not x430) (not x395) x898)
+(or x709 x1238)
+(or x979 (not x1604) (not x158) x1323 x1527)
+(or x1105 x468 (not x1310))
+(or x559 x1052 x1371)
+(or (not x1390) x810 x819)
+(or x1350 x814 (not x856))
+(or (not x4) x1182 x913)
+(or x672 (not x270))
+(or x464 (not x1148))
+(or (not x349) (not x881) x1529)
+(or (not x224) (not x1591) (not x1584))
+(or x106 x672 (not x796))
+(or x803 (not x774) (not x86))
+(or (not x1328) (not x1244))
+(or x8 x1354 (not x1117) (not x891) x210)
+(or (not x366) x439 (not x202))
+(or (not x276) x1547 (not x283) (not x1600) (not x661))
+(or x290 (not x1082) x1028 (not x778) x1073)
+(or (not x819) (not x3) x1428)
+(or x430 (not x803) (not x951))
+(or x1039 x1361 (not x100))
+(or (not x816) x754)
+(or x510 (not x1275) x251 x238 x932)
+(or x1321 x1121 x760)
+(or (not x1361) (not x496))
+(or x1096 x881 x349)
+(or (not x402) x660)
+(or x962 x702 x1321)
+(or x726 x733 x659 (not x1455) (not x962))
+(or (not x540) x755)
+(or x1361 x783 (not x1606) x496 (not x224))
+(or (not x276) (not x1547) x258)
+(or (not x349) (not x1001) (not x760) x962 (not x733))
+(or x358 (not x1414) x1165 x1359 x1118)
+(or (not x877) x502)
+(or x87 x1247 x741)
+(or x1274 (not x441) (not x922))
+(or (not x100) (not x252) (not x767))
+(or (not x1091) x1050 (not x1308))
+(or x34 x536 x935)
+(or x510 (not x381) (not x238))
+(or x938 (not x1357))
+(or (not x1275) (not x510) (not x238) (not x251) x1338)
+(or x1472 (not x833) x285)
+(or x1191 x1015)
+(or x12 x557 x381)
+(or (not x1389) (not x1169))
+(or x427 (not x1432) x416 (not x1133) (not x748))
+(or x543 x949 (not x1285))
+(or (not x1133) (not x1396) x427)
+(or x893 x1455)
+(or (not x919) (not x1371) x1341 (not x597) (not x4))
+(or (not x1247) (not x826) x749 (not x335) x10)
+(or x373 x873 (not x301) (not x539) x1016)
+(or (not x1185) x815)
+(or (not x516) x1238 (not x1017))
+(or (not x1077) (not x332) (not x1556))
+(or x927 (not x842) (not x1275) x519 x510)
+(or x1608 x80)
+(or (not x1043) x874 (not x293) x1027 (not x1603))
+(or (not x346) x1332 (not x272) (not x1461) (not x1306))
+(or x1485 (not x542) (not x1366))
+(or x137 (not x913) x123 x1273 x103)
+(or x242 x584)
+(or x294 x894 x288)
+(or (not x1399) x762 (not x371))
+(or x1052 (not x821) (not x778))
+(or x91 (not x83))
+(or x73 (not x138) x1350 (not x814) (not x80))
+(or (not x1003) (not x790) x1381 x1565 (not x561))
+(or (not x48) x896 (not x933) x811 x1050)
+(or (not x811) (not x327) (not x48))
+(or (not x727) (not x944) x1229)
+(or x903 x132 (not x1427))
+(or x192 x1094 (not x825) x238 x251)
+(or (not x1509) (not x404) (not x1463) x832 (not x729))
+(or (not x462) x624 (not x780))
+(or (not x1315) x944 x341 x1229 (not x1324))
+(or x1069 x206 x863)
+(or (not x1256) x1085)
+(or x488 (not x842) x1271)
+(or (not x271) x1108)
+(or x1032 x648 (not x975) (not x1390) (not x807))
+(or (not x1469) x1104 x322)
+(or x843 x3 (not x1604))
+(or (not x150) x1294 x1541)
+(or x668 x927 (not x372))
+(or x1543 (not x714) (not x1452))
+(or x621 x710)
+(or x723 (not x323) (not x937) (not x1605) x13)
+(or x48 x871 x811)
+(or x1057 x16)
+(or x960 (not x566) (not x134))
+(or x1083 x305 (not x995) x853 x1336)
+(or (not x292) x392)
+(or x660 (not x1167) (not x881))
+(or x210 x581 (not x750))
+(or (not x477) x445)
+(or x515 (not x513) x743 x1574 x282)
+(or x1278 (not x1246) x1009)
+(or x462 (not x290) x1136)
+(or (not x890) (not x13) (not x280) x1343 (not x575))
+(or x842 x894)
+(or (not x358) (not x1215))
+(or (not x1556) (not x579) x1328 (not x1316) x998)
+(or x134 (not x566) (not x313) (not x34) (not x27))
+(or (not x439) x889 x966 (not x623) x1183)
+(or x803 x1200)
+(or (not x282) (not x1600) x707 x513 x1547)
+(or (not x332) (not x190))
+(or (not x346) (not x1306) x931 (not x272) x1332)
+(or (not x127) x342 (not x136))
+(or x356 x814)
+(or x498 x1589 (not x489))
+(or x1291 (not x1435) x420 x883 x1325)
+(or (not x1457) x596 (not x298) x865 x133)
+(or x369 (not x627) (not x546))
+(or x1293 (not x1198))
+(or x1551 x289 (not x399))
+(or x188 x985 x978 (not x973) (not x1532))
+(or (not x1358) (not x184) x443)
+(or x204 x515)
+(or (not x236) x539 (not x161))
+(or x1031 x791 x274)
+(or (not x690) x399 (not x1496))
+(or (not x619) (not x1504) x1199)
+(or (not x1178) (not x1024))
+(or (not x702) x962 x223 (not x1321) x733)
+(or (not x1506) x1556 (not x332))
+(or (not x382) x1205 x1495 (not x1239) x1336)
+(or x145 (not x185) (not x1590))
+(or (not x1079) (not x293) (not x874) (not x150) (not x1257))
+(or (not x664) (not x1267))
+(or x1108 x580 x788 x1544 x959)
+(or x282 x603 x508 (not x513) x1214)
+(or x1275 (not x381) (not x510))
+(or x1152 x380 (not x1453))
+(or (not x1027) (not x728))
+(or (not x1560) (not x462))
+(or (not x442) (not x965) (not x709) (not x516) (not x1591))
+(or x1001 x698 (not x1280) x677 x349)
+(or x1562 x938 x758)
+(or (not x814) x461 x1507)
+(or (not x265) (not x140) (not x1378) (not x769) x984)
+(or (not x1521) x5 (not x737))
+(or (not x909) (not x195))
+(or x9 (not x836))
+(or x216 x672)
+(or x359 x1507)
+(or x121 x1490 (not x264))
+(or x1194 x1519 (not x297) (not x623) x405)
+(or x422 x194)
+(or x355 (not x1080) x340 x1048 x1409)
+(or x783 (not x1174) (not x1361))
+(or (not x1564) (not x1063) x1232)
+(or (not x1241) (not x821) (not x1397))
+(or x1561 (not x938) x516)
+(or (not x455) (not x1073) x170)
+(or (not x427) x1521 x946)
+(or x106 x24 (not x1248) (not x1474) x424)
+(or x1103 (not x349) (not x1001) (not x1525) x151)
+(or (not x1540) (not x1116) (not x367) (not x1240) x480)
+(or x674 x1085 (not x819))
+(or x811 (not x111))
+(or x516 (not x709) (not x1017) (not x736) (not x773))
+(or x796 (not x907) x591)
+(or (not x19) x364 (not x640) x876 (not x685))
+(or x87 x749 (not x10))
+(or (not x1443) (not x91) (not x562))
+(or (not x250) x459 x456 x1317 (not x512))
+(or (not x1417) (not x420) x640 (not x905) x364)
+(or x441 x938 x1365 x114 x922)
+(or (not x665) x1397 x650)
+(or x1316 (not x1574) x1533 (not x743) (not x1328))
+(or x1022 (not x659) (not x828))
+(or x126 x1477)
+(or x769 x99 x265 (not x140) x1378)
+(or x1473 (not x525) (not x943) x1021 x1546)
+(or (not x1399) x696)
+(or (not x518) x283 x646)
+(or x301 x419 x637)
+(or (not x649) (not x611) (not x1005) (not x1471) x658)
+(or x777 (not x1495) (not x1199) (not x631) (not x693))
+(or (not x212) x950 x86)
+(or (not x327) x933)
+(or (not x749) x1264 (not x10) (not x87) (not x781))
+(or x301 x40)
+(or (not x1108) (not x959) (not x1025))
+(or (not x476) x117 (not x816))
+(or x1586 (not x1557) (not x943))
+(or x1571 x1139 x926)
+(or x1168 x1356 x1398 (not x1227) (not x769))
+(or (not x234) (not x1189) x1244)
+(or x672 x1262)
+(or (not x429) (not x650))
+(or (not x838) (not x124) x651)
+(or (not x1396) x466)
+(or (not x1291) x364 x640)
+(or x502 (not x288))
+(or x764 (not x783) (not x1361) (not x659) x1455)
+(or (not x948) (not x1374) (not x37) x925 x1140)
+(or (not x1244) x983 (not x178))
+(or (not x1417) x905 (not x640) (not x1325) x364)
+(or (not x83) x771 x1220)
+(or x450 (not x1152))
+(or x1130 x876 x640)
+(or x964 (not x660) (not x378))
+(or x1506 (not x1556) (not x332))
+(or x1304 (not x1079))
+(or x933 (not x32) x1345 x1050 (not x178))
+(or x778 x1082)
+(or (not x758) (not x1148) x644 (not x963) x1536)
+(or x503 x275 (not x49) x740 x155)
+(or (not x399) (not x874) (not x699) (not x293) (not x232))
+(or x1027 x150 x366 (not x202) x1079)
+(or (not x1510) (not x138) x240 x103 x972)
+(or x137 x4 x1341)
+(or x45 (not x371))
+(or x424 x1248 (not x1474) x917 (not x24))
+(or (not x1235) x933)
+(or x517 x4 (not x1587))
+(or (not x334) (not x996))
+(or x1374 (not x673) x1062 (not x1542) x72)
+(or (not x1343) x280)
+(or (not x1054) x1524)
+(or (not x676) (not x797) (not x243) x349 x1001)
+(or x283 (not x539) x245 x373 (not x258))
+(or x811 x48 (not x896))
+(or (not x892) x1289 x95)
+(or x796 (not x270) (not x494) x198 (not x1370))
+(or (not x1070) (not x1458) x804)
+(or x1177 (not x277) x564 (not x717) (not x849))
+(or x512 x1317 (not x639))
+(or x1190 x180 x1598 (not x1379) (not x1293))
+(or x875 x1429 (not x317))
+(or x826 x1118)
+(or (not x1231) x153 x967)
+(or (not x1063) x715 (not x558))
+(or (not x1605) x1139 x1319)
+(or x1501 (not x1529))
+(or (not x1367) x1071 x937)
+(or x334 x280 (not x361))
+(or x3 x674)
+(or (not x762) x32)
+(or (not x472) x638 x573 (not x1360) x799)
+(or x124 (not x419) (not x1016) x1318 (not x637))
+(or (not x1271) x1151 (not x946))
+(or (not x315) (not x166) x522)
+(or x833 x1472 x285)
+(or x282 (not x1251) x1574 x743 (not x513))
+(or x1329 x290 (not x170) (not x217) x778)
+(or (not x15) (not x413) (not x991))
+(or x660 x1490)
+(or x575 (not x723) (not x323))
+(or x898 x113 x1103)
+(or (not x1297) x1040)
+(or (not x1397) x1053 (not x1286))
+(or x1441 (not x641))
+(or x16 x1091 x1144 x650 (not x1397))
+(or (not x148) x88 x650)
+(or (not x772) x590 x1506)
+(or (not x465) x171)
+(or x1215 (not x1611) x1366 x201 x914)
+(or (not x794) (not x45) (not x672) (not x749) (not x961))
+(or x28 (not x1406) x1210)
+(or x315 (not x1552) x740 (not x503) x714)
+(or x858 x860 (not x1214))
+(or x1094 (not x1083))
+(or (not x1459) x1548 x1129 (not x869) (not x200))
+(or x1250 x129 x1480)
+(or x192 (not x372) (not x1094) (not x859) (not x656))
+(or (not x1401) (not x1142) x192)
+(or x719 x1328)
+(or x857 (not x734) x1157)
+(or x1052 (not x289) (not x840) x1489 (not x538))
+(or (not x1003) x1082 x1535)
+(or (not x1010) (not x202) x385 (not x462) (not x366))
+(or x660 (not x378) x881 (not x377) x471)
+(or (not x1377) (not x1414))
+(or (not x1437) (not x1320) (not x1238))
+(or (not x1228) (not x120) x595)
+(or x424 (not x106) x1474)
+(or (not x507) (not x175) (not x1239) (not x721) x1136)
+(or x1566 x215 (not x613))
+(or (not x205) x1312 x1507)
+(or x1155 x1189 (not x201) (not x1111) x914)
+(or x253 x97 (not x296))
+(or (not x803) (not x1450) (not x1531))
+(or x848 (not x803) (not x1193) (not x951) x524)
+(or (not x1145) x645)
+(or (not x774) (not x951) (not x109) (not x803) x554)
+(or (not x236) x14 (not x603))
+(or x814 x654)
+(or x1558 (not x1309) x183)
+(or x154 (not x814) (not x1519) x1500 x1350)
+(or x992 (not x651) x838 x614 (not x637))
+(or (not x1052) x840 (not x289) (not x538) x1489)
+(or (not x945) x783 (not x1361) (not x767) x100)
+(or x1375 (not x1462))
+(or (not x1416) (not x993) x831)
+(or x799 x546 (not x78) x337 (not x627))
+(or x334 (not x1329) (not x517))
+(or x1265 x1208 (not x373) x539 x87)
+(or x1318 x518 x124)
+(or (not x1514) x64 x57)
+(or (not x399) (not x289) (not x1551))
+(or x1205 (not x1239) x1336 (not x382) (not x693))
+(or (not x1581) (not x934))
+(or (not x1103) (not x349) x1525)
+(or x1271 x5 (not x1582))
+(or x624 (not x955) (not x130) x1580 x1560)
+(or x441 x1008 (not x922) (not x476) x1524)
+(or x814 x119 x880)
+(or (not x1102) x252 x1039 x1334 (not x266))
+(or (not x444) (not x316) x899)
+(or x417 x410 x239)
+(or (not x732) (not x1316))
+(or (not x339) (not x880))
+(or (not x402) x471 (not x378))
+(or x309 x1610 x687 (not x350) x1181)
+(or x1407 (not x1089))
+(or (not x527) (not x1056) (not x353))
+(or x694 x817)
+(or (not x940) x401 x924)
+(or (not x1554) x642 x1086 x670 (not x1258))
+(or x218 (not x379) x1294)
+(or (not x650) (not x850) (not x1397))
+(or (not x611) x1587)
+(or (not x113) x1004 x1103 x779 (not x151))
+(or x403 (not x887) (not x784))
+(or (not x604) (not x711) (not x803))
+(or (not x1602) x856 (not x859) (not x1037) (not x247))
+(or x987 (not x1214) x1067 (not x860) x508)
+(or x513 x743 x1251)
+(or (not x983) x249 (not x888))
+(or x945 x783 x767)
+(or (not x794) x1397 (not x371))
+(or x1376 x1337)
+(or (not x887) (not x1586) (not x1094))
+(or (not x718) (not x70))
+(or x709 x1320 (not x516))
+(or x160 (not x1514))
+(or (not x917) (not x1370) x961)
+(or (not x649) (not x755) (not x3) (not x819) (not x1390))
+(or x690 x462 x675 x1010 x1389)
+(or (not x894) (not x1482))
+(or (not x404) (not x89) x608 (not x990) (not x736))
+(or (not x216) (not x1171))
+(or (not x1029) (not x1406) x49)
+(or (not x683) (not x1296) (not x1411) x496 (not x486))
+(or (not x248) (not x1260))
+(or (not x601) (not x483) x1593)
+(or (not x803) (not x941) x951 x1450 (not x1154))
+(or x597 (not x1371) x919)
+(or x558 x22)
+(or (not x1210) (not x28) (not x1406))
+(or (not x306) x295 (not x618) x435 x25)
+(or (not x515) x513)
+(or x518 (not x800))
+(or x720 x897)
+(or (not x490) x41)
+(or (not x895) (not x837) (not x936))
+(or (not x1012) (not x1491))
+(or (not x1096) (not x1222) x951)
+(or x1319 x1139 x42)
+(or (not x1528) (not x1001) x349)
+(or (not x843) (not x3) x949)
+(or x1410 x67 x1400 (not x1172) x1299)
+(or x1161 (not x159) (not x442))
+(or (not x982) (not x1119) (not x1411))
+(or x421 x888)
+(or x732 (not x1540))
+(or x357 x71 x974 (not x257) x213)
+(or x740 (not x520) (not x503))
+(or x179 x1328 x1244 x732 (not x1116))
+(or (not x298) (not x865) x1457)
+(or x1526 x523 x242)
+(or (not x1612) x783)
+(or (not x49) (not x329) (not x1029) x1406 x260)
+(or x1600 (not x977) x1462)
+(or x250 (not x512) (not x1317))
+(or (not x682) x503 x740 (not x750) x1585)
+(or x723 x1004)
+(or x1252 (not x975) (not x447))
+(or x1119 (not x1397) x694)
+(or x951 x803 (not x191))
+(or (not x819) x407 (not x3) x1094 x192)
+(or (not x1434) x199 (not x1357) (not x519) x585)
+(or (not x142) x1545 x533 (not x793) (not x160))
+(or x1072 x680 (not x1012) x956 x1150)
+(or (not x957) (not x779) (not x151))
+(or x399 x840 (not x289) (not x857) x1551)
+(or (not x1129) x1231 x1611)
+(or (not x1548) (not x1611) x867)
+(or (not x190) x907 (not x198))
+(or x1046 (not x258) x1462)
+(or x525 (not x38) x1300)
+(or (not x693) (not x1504) (not x631) (not x1495) x777)
+(or (not x819) (not x3) (not x1068))
+(or (not x210) x1575 x8 x891 x1354)
+(or (not x512) (not x23) x1528 x1317 (not x112))
+(or x219 x718 x786 x620 (not x1252))
+(or (not x1021) (not x238) (not x754))
+(or x1204 x1507 (not x205))
+(or x251 x238 (not x1362))
+(or x192 x372 (not x247) (not x656) x1094)
+(or x1130 (not x891) x514)
+(or x907 (not x110))
+(or x113 (not x1004) x1103)
+(or (not x413) x1143 (not x15))
+(or (not x54) (not x44) (not x223))
+(or x372 x859 (not x656))
+(or (not x175) x539 x1535)
+(or (not x838) (not x128) x651)
+(or (not x1174) x878)
+(or x443 x759)
+(or (not x495) x198 x1503 (not x332) (not x907))
+(or x238 (not x251) x510 x1338 x1275)
+(or (not x910) x466)
+(or x1322 x842)
+(or x605 x653 (not x483) x1281 (not x17))
+(or x453 (not x186))
+(or (not x963) (not x1306))
+(or (not x267) x1586 x1593)
+(or x1479 x302 x1533 x657 (not x1277))
+(or (not x1048) x203)
+(or x736 (not x990) (not x404) x89 (not x608))
+(or x1433 (not x165) x418 x1224 x1272)
+(or (not x1008) (not x620) x570 x1524 (not x718))
+(or (not x1405) x737)
+(or x419 x1318 x1016)
+(or (not x327) x1040)
+(or (not x1038) x565 (not x1342))
+(or x1499 (not x605) (not x1281))
+(or (not x1461) x446 (not x1109))
+(or (not x357) x257)
+(or x610 x1143)
+(or (not x794) (not x438) (not x543))
+(or x266 x689 (not x252) x1039 (not x1334))
+(or x282 (not x1255) (not x1574))
+(or (not x451) (not x872) (not x789))
+(or (not x70) x620 (not x786))
+(or x366 (not x218) x1347 x673 x202)
+(or (not x92) x962 (not x733))
+(or (not x340) x1048 (not x1409))
+(or (not x1480) x1472 (not x76))
+(or (not x768) (not x281) (not x143))
+(or x603 (not x236) (not x14) x1407 (not x918))
+(or (not x653) (not x1403))
+(or x891 x1117 x1354)
+(or x842 x238 (not x251) (not x927) x1440)
+(or (not x1583) (not x75) (not x884) (not x582) (not x929))
+(or (not x527) (not x802) (not x353))
+(or (not x791) x1031 (not x274))
+(or (not x814) x1469 (not x934))
+(or x660 x378 (not x459))
+(or (not x202) (not x966))
+(or (not x707) (not x513) (not x1600))
+(or x534 x433 (not x1516))
+(or x383 (not x1445) x723)
+(or x165 (not x1049) (not x1098) (not x1120) x806)
+(or (not x535) (not x1431) x892 (not x630) (not x261))
+(or x515 (not x772) x276)
+(or x179 x961 x923 x672 (not x1244))
+(or x1166 (not x448) x757)
+(or (not x560) x709)
+(or x1408 (not x1540))
+(or (not x1178) (not x291) x1435)
+(or x907 x190 x198 x332 x495)
+(or x437 (not x63))
+(or x1065 (not x1540))
+(or (not x2) (not x1282) x1577 (not x822) x425)
+(or (not x289) (not x1079) (not x463))
+(or x977 (not x1600) x1547 x1462 (not x518))
+(or (not x1333) (not x1231) x1084 x967 (not x445))
+(or x819 (not x3) (not x886) (not x981) (not x1553))
+(or (not x1317) x1269 x347)
+(or x1551 (not x857) x840 (not x675) (not x289))
+(or x137 x1580)
+(or (not x373) (not x539) (not x873))
+(or (not x166) (not x1552))
+(or (not x1001) x803 (not x1445))
+(or x425 x58 x822)
+(or (not x512) (not x1317) (not x91))
+(or (not x843) (not x764) x747)
+(or x3 (not x1314))
+(or x122 x1226 x1501)
+(or x1211 x1407)
+(or (not x775) (not x587) x908 (not x176) x706)
+(or (not x943) (not x475) x192 x1473 (not x1094))
+(or (not x941) (not x951) x1154)
+(or x1326 (not x503) x1042 x740 (not x697))
+(or (not x164) x1573 (not x670))
+(or (not x163) x458 x1186)
+(or (not x1569) (not x426) x680)
+(or x1593 (not x1021))
+(or x399 (not x1073) (not x851) (not x1028) x232)
+(or x660 (not x902))
+(or x951 x524 x1193 (not x803) x848)
+(or x1602 x247)
+(or x562 x83 (not x91))
+(or x773 x1238)
+(or x349 (not x803) (not x951) x1555 (not x1001))
+(or (not x1335) x1532 (not x188))
+(or x1580 (not x624) (not x1209))
+(or (not x552) x4)
+(or (not x1040) (not x969) (not x1413))
+(or x970 x544 (not x1277) x858 (not x987))
+(or x769 (not x1168))
+(or (not x373) (not x1208) (not x87))
+(or x541 (not x9) (not x548))
+(or (not x230) x264 (not x545))
+(or x1119 (not x1129))
+(or (not x1028) x690 x1073 (not x695) x675)
+(or (not x661) x462 x1010 (not x629) (not x276))
+(or x1350 x403 (not x157) (not x814) x326)
+(or (not x555) x517 (not x334))
+(or (not x334) (not x517) (not x178) x414 (not x32))
+(or x283 x1046)
+(or x603 (not x1089) (not x918))
+(or (not x833) x1230 x1472)
+(or x746 (not x414))
+(or (not x834) x871 x896 (not x111) x565)
+(or x1277 x858 (not x970))
+(or x907 (not x1077) (not x1506) (not x1556) (not x229))
+(or x274 (not x1548) (not x1129))
+(or x1117 (not x891) (not x1354))
+(or x232 x1551)
+(or x1001 (not x1103) x151 x1313 x349)
+(or (not x433) (not x543) x45)
+(or (not x682) (not x581) (not x503) (not x740) (not x1585))
+(or x249 x739)
+(or x867 (not x29) (not x1359) (not x1215) x406)
+(or x937 (not x1114) (not x1270) (not x397) (not x454))
+(or (not x856) x477)
+(or x1214 x811)
+(or (not x509) (not x1133))
+(or (not x64) (not x1225) x57 x1006 x1514)
+(or (not x842) x737 x872)
+(or (not x1291) (not x364) (not x1417))
+(or (not x1305) (not x1585) (not x1038))
+(or (not x840) (not x366) (not x502))
+(or (not x370) (not x1104) (not x322) (not x1469) (not x475))
+(or x270 x221)
+(or (not x1294) x559)
+(or (not x524) x797)
+(or (not x893) (not x268) (not x783) x1361 x159)
+(or (not x19) (not x514) x891 x1130 (not x526))
+(or (not x826) x1522 (not x1219) (not x437) (not x1118))
+(or x237 (not x460))
+(or x1503 (not x692) x921 x190 (not x939))
+(or x211 x1449 (not x753))
+(or x497 (not x278) (not x1261) (not x716) (not x1612))
+(or (not x840) (not x1079))
+(or x547 x1255 (not x537) x977 x386)
+(or x423 (not x1171))
+(or (not x1202) x1137 x6)
+(or (not x840) (not x399))
+(or x577 (not x1390))
+(or (not x783) (not x608) (not x767))
+(or x1378 (not x984))
+(or (not x826) (not x1076) (not x749))
+(or x30 x1204 x303)
+(or (not x701) (not x1465) (not x223))
+(or x739 x32 x179)
+(or x486 x927)
+(or (not x677) (not x336))
+(or x1456 (not x956) x1310)
+(or (not x845) x874 (not x293) (not x1304) (not x1541))
+(or (not x1569) x1456 (not x956) (not x1072) (not x193))
+(or x954 (not x238))
+(or x1204 (not x293) (not x1496))
+(or (not x599) x627 (not x996))
+(or x1143 x140 (not x170))
+(or (not x965) x184 x516)
+(or (not x272) x3 (not x981))
+(or x1382 x823 x196)
+(or x897 x500 (not x191) x848 (not x242))
+(or (not x944) (not x341) x1229)
+(or x153 (not x259) (not x1185))
+(or x1111 x539 (not x598))
+(or x290 (not x778) x170 (not x991) (not x1329))
+(or x1366 x29 x1548 (not x867) (not x1611))
+(or x1361 (not x764) (not x659))
+(or (not x267) x453 (not x1473))
+(or (not x650) (not x596) (not x1397))
+(or x76 x833)
+(or (not x963) x1515 (not x1332))
+(or x1057 x1098 x1429)
+(or x933 x871)
+(or x1236 (not x677) x930)
+(or x433 (not x794))
+(or (not x661) x1407 x276)
+(or x433 x543 x45)
+(or (not x1231) x445 (not x1084))
+(or (not x142) x911 (not x1514))
+(or x187 (not x596))
+(or (not x1323) x1091 x309)
+(or (not x1003) x1535 x94)
+(or (not x514) (not x685) (not x364))
+(or x464 x1121 x975 x648 x963)
+(or (not x45) (not x333) x433 (not x438) (not x543))
+(or (not x340) x398 x203)
+(or x1350 (not x1279) x814)
+(or (not x153) x1333 x1231 x967 (not x1084))
+(or (not x293) (not x1043) x728 x874 x1027)
+(or x48 (not x817) (not x1611) (not x811) (not x1119))
+(or x313 x134 x34)
+(or x1582 x1021 (not x1271) x5 (not x525))
+(or (not x1395) (not x1148) (not x922) x963 x441)
+(or x1474 x411 x1020)
+(or x1517 x839 x1577 x1243 x997)
+(or x1182 x1587)
+(or (not x928) (not x806) (not x165))
+(or x1474 (not x411) (not x1020))
+(or x874 (not x728) x1043)
+(or (not x1321) x920)
+(or (not x243) x349 x1001 (not x797) x347)
+(or x1459 x1129 x869)
+(or x238 (not x927) x1386)
+(or x734 x3)
+(or x1524 (not x758) (not x1330))
+(or (not x803) x951 x711 x1096 x604)
+(or x258 x661)
+(or x659 x962 x733 x1455 x1513)
+(or x1431 (not x1289) (not x1216))
+(or x1434 x842 x510)
+(or x1450 x1531 x951 (not x941) (not x803))
+(or x133 (not x53))
+(or (not x976) (not x409) (not x1379))
+(or x73 x246 x1534)
+(or x1398 (not x1520) (not x695) (not x290) x778)
+(or x469 (not x389) x1389 x338 (not x1385))
+(or (not x437) (not x528) x63 (not x1155) (not x1189))
+(or x276 x1109 (not x933))
+(or x542 (not x912) (not x248))
+(or x1324 x1229 (not x944) x1290 x1315)
+(or (not x496) (not x783) (not x224))
+(or x1379 x1293 x909 x180 (not x1190))
+(or x605 x483 x653 (not x1281) x17)
+(or x1089 (not x918) (not x603) (not x1407) x236)
+(or x1249 (not x463) x288)
+(or x884 (not x1586) (not x943) (not x1473) x267)
+(or (not x546) (not x799) x369)
+(or (not x1094) (not x214) (not x1275))
+(or x475 x943)
+(or x54 (not x1368))
+(or x507 (not x721) x1205)
+(or (not x1260) (not x164) x670 (not x912) (not x1573))
+(or (not x1219) x528)
+(or x1479 (not x302) x616)
+(or x288 (not x1249) x540 x1482 x463)
+(or x203 (not x398) x105 (not x1394) x340)
+(or (not x933) (not x48) x1559)
+(or (not x1606) x434 (not x350) (not x765) (not x224))
+(or (not x1110) (not x169) x144)
+(or x814 (not x428) x805)
+(or x889 x1183 (not x1194))
+(or x1024 (not x1326))
+(or x1244 (not x1173))
+(or (not x1524) (not x449) x620)
+(or x1206 (not x31) (not x465))
+(or (not x964) (not x881) x378 (not x660) x471)
+(or x422 x107 x633)
+(or x811 x653 x282)
+(or (not x1379) (not x837) (not x895))
+(or (not x1228) x1268 x1441)
+(or x1250 (not x1286) (not x1480) (not x129) x412)
+(or (not x538) (not x612) (not x1294))
+(or (not x22) x1018 (not x558))
+(or (not x1579) x1013 (not x1031) (not x1099) (not x1111))
+(or x43 (not x1160) x429)
+(or (not x707) x1600 x513)
+(or x1561 x1022)
+(or (not x1416) x777)
+(or (not x495) (not x270) x796)
+(or x503 x697 x740 x1326 x1042)
+(or x562 x512 (not x625))
+(or x542 (not x1377) x1260)
+(or x933 (not x867) (not x1050))
+(or x1063 (not x263) x700 x558 x715)
+(or x232 x1088)
+(or (not x1397) (not x1499) (not x1403))
+(or x1131 (not x1590) x1484)
+(or (not x1002) x362 (not x376))
+(or (not x395) (not x1555))
+(or x1548 x1611 x1366 x867 (not x29))
+(or (not x1001) (not x1096) (not x471) (not x349) x881)
+(or x478 x283)
+(or (not x495) (not x1439) x539)
+(or x150 x379 (not x1304) x1079 x1294)
+(or x48 (not x933) x327 (not x811) (not x1050))
+(or x1537 (not x757))
+(or x538 (not x908) (not x178))
+(or (not x251) x117 (not x238))
+(or x7 x48 (not x811) (not x178) (not x32))
+(or (not x1027) x1079 (not x150))
+(or (not x574) (not x1056))
+(or x137 x1510 (not x1273))
+(or x1214 (not x282) x513 x603 (not x508))
+(or x243 (not x23))
+(or x1027 x1043 x728 (not x874) (not x293))
+(or x476 (not x1524) (not x922))
+(or (not x1228) (not x746))
+(or x981 (not x989))
+(or x400 x1565 x1003)
+(or (not x429) (not x1060) x1397)
+(or x1040 (not x632))
+(or (not x934) (not x1598) (not x1198))
+(or (not x969) (not x1297) x1331 (not x697) x632)
+(or x233 x814 x428 (not x1350) (not x805))
+(or (not x241) (not x740))
+(or x1353 x1053 x104 x838 (not x651))
+(or x770 (not x650) (not x1397))
+(or x334 x4 (not x517))
+(or (not x532) x785 x15)
+(or (not x535) (not x1289) (not x95))
+(or x674 x1274 (not x1179) x1295 x511)
+(or x1524 (not x1550) (not x1576))
+(or x697 (not x1331))
+(or x1011 (not x163))
+(or (not x1001) (not x243) (not x676) x349 x797)
+(or x1393 (not x1402) x124 (not x518) (not x1318))
+(or x1260 (not x912) x248 (not x542) x1308)
+(or (not x951) x711 (not x803) (not x1096) x1222)
+(or (not x881) x471 (not x349) (not x916) x1001)
+(or (not x223) (not x92) x733)
+(or x157 x1046 (not x478) (not x646) (not x1115))
+(or x691 x1446)
+(or (not x705) x824 x521)
+(or (not x1038) (not x423) (not x682))
+(or (not x962) x733 (not x92))
+(or (not x1468) (not x1260) x791)
+(or (not x1301) x919 (not x1371))
+(or (not x349) (not x471) x1450 (not x1001) x881)
+(or x988 (not x841) x1290 (not x341) x587)
+(or (not x1208) x79)
+(or (not x292) x696 x1352)
+(or (not x292) x79)
+(or (not x1021) (not x999))
+(or x1001 (not x1103) x151 (not x1525) x349)
+(or (not x1005) x780)
+(or x356 x1475)
+(or x1407 (not x661) (not x1375))
+(or x1357 (not x1365) (not x938) (not x620) (not x718))
+(or (not x958) x1555 (not x430))
+(or x57 (not x1514) (not x1006))
+(or (not x814) x985 (not x1350))
+(or x811 x59 x48)
+(or x597 x1538)
+(or (not x1102) (not x725) (not x479))
+(or x301 x1016 x431)
+(or (not x980) (not x546))
+(or x435 x295 (not x25) x306 (not x618))
+(or (not x1313) (not x490) x1074)
+(or x1491 (not x1150) (not x162))
+(or (not x300) x595 (not x255))
+(or x336 x1300 (not x92))
+(or x902 x1256 x1047 x1317 x512)
+(or (not x748) (not x910) (not x416))
+(or (not x709) x773 (not x168))
+(or (not x1135) (not x897))
+(or x664 (not x1350) x1267 (not x1207) (not x814))
+(or (not x650) (not x861) (not x1397))
+(or x1359 (not x406))
+(or x270 (not x198))
+(or (not x291) x836 (not x1435) x1024 (not x1015))
+(or x1267 (not x1234))
+(or x650 x106 x1424 (not x917) (not x1397))
+(or (not x636) x462 (not x1010))
+(or (not x1094) x214 x1275 x510 x192)
+(or x1536 x786 (not x758) x1252 x82)
+(or x513 (not x1255))
+(or (not x870) (not x1577) (not x1282))
+(or x532 (not x368) (not x1016) (not x194) (not x301))
+(or x698 (not x336) (not x1001))
+(or x956 x1569 (not x1072))
+(or x961 x762 x672 x178 (not x32))
+(or (not x1377) x542 x1308)
+(or x79 x866 (not x636))
+(or (not x400) (not x561) (not x790) (not x1003) x1565)
+(or x1114 x1270 x397 (not x454) (not x1605))
+(or x1553 x981)
+(or (not x235) (not x462) x1129)
+(or (not x1397) x1061 (not x650))
+(or x454 (not x1270) (not x937))
+(or x124 (not x462) (not x244))
+(or x1396 x645 (not x910))
+(or x1530 x538 x530)
+(or (not x1560) x624 x130)
+(or (not x494) (not x672) (not x106))
+(or (not x86) x774 (not x803))
+(or (not x1068) x39 (not x1281))
+(or x499 (not x612))
+(or x694 (not x650))
+(or (not x1317) x147 x1368)
+(or x280 (not x974) (not x179))
+(or x526 (not x891))
+(or (not x1359) x1522 x358)
+(or (not x151) x906 x1001)
+(or (not x1397) (not x429) x1060)
+(or x1357 (not x585) (not x519))
+(or x1599 (not x615) x173)
+(or (not x1229) (not x831) x1324 (not x944) (not x1315))
+(or x1313 (not x1074) (not x490))
+(or (not x325) x660)
+(or x803 (not x1567) (not x1107))
+(or x19 (not x891) x1130)
+(or x2 x1478)
+(or x267 (not x1473) x1586 x884 x943)
+(or x35 x471 x378 (not x881) (not x660))
+(or x1376 (not x947) x256)
+(or x255 (not x595) (not x300))
+(or (not x129) x1480 (not x1250))
+(or (not x956) x1072 (not x680))
+(or (not x1587) (not x1005) x1607 x1397 x650)
+(or (not x398) x1095 x953)
+(or (not x1229) x182 (not x1348))
+(or (not x267) (not x1583) (not x1473))
+(or x368 x633)
+(or x644 (not x1148) x963 (not x1536) x758)
+(or (not x128) (not x163))
+(or (not x835) (not x996) x627)
+(or x596 x650 (not x1397) (not x610) x53)
+(or x141 x1505 x1218)
+(or x3 x684 (not x755))
+(or x1148 (not x1121) (not x464) x648 (not x975))
+(or (not x48) (not x811) (not x1050) (not x834) x933)
+(or (not x951) (not x803) (not x604))
+(or (not x340) (not x398) (not x105) (not x203) (not x1394))
+(or x1244 x914 (not x234))
+(or x588 x903 x1609 x52 x1437)
+(or x126 x47 (not x1456))
+(or x604 x1222 x296)
+(or (not x1403) x1499 x1397)
+(or x1043 (not x150) (not x202))
+(or (not x908) x706 x587 x775 (not x176))
+(or x343 x331 (not x1493))
+(or (not x1074) (not x41) (not x1525) x906 (not x42))
+(or x656 x823)
+(or (not x1079) (not x874) x1140 (not x150) (not x293))
+(or (not x1439) (not x198))
+(or (not x1312) x293 x1496)
+(or x358 (not x1414) x1165 (not x1522) x1359)
+(or x203 (not x1409))
+(or (not x1125) (not x606) x905)
+(or (not x270) (not x796) x494 x495 x1370)
+(or x227 (not x1606) x893)
+(or (not x838) (not x517) x1011)
+(or (not x264) x443 x121)
+(or x1359 (not x867) (not x1215))
+(or (not x1066) x372 (not x1142))
+(or (not x278) x516 (not x965))
+(or (not x914) x1155 x1111)
+(or x557 x1298 (not x1243))
+(or (not x520) (not x697))
+(or x1311 x289 x530 x280 x840)
+(or x48 x1214 (not x1499))
+(or x938 x718 x1365 x199 (not x620))
+(or x1473 x943 (not x322))
+(or (not x45) x543 (not x438) (not x433) x333)
+(or (not x290) x217 (not x170))
+(or x1506 x204 (not x772))
+(or (not x702) (not x1280) x336 x92 (not x576))
+(or x907 x198 (not x692) x495 x332)
+(or x1456 (not x162))
+(or (not x727) x1430 x1511 x665 x1498)
+(or (not x1488) (not x1192) (not x384) x1494 (not x713))
+(or x914 x1244 (not x179))
+(or x223 x1321 (not x54) (not x147) (not x1351))
+(or x1194 x439 x1183 (not x889) (not x966))
+(or (not x236) (not x1112) (not x603))
+(or x360 (not x1475) x1100 x1099 (not x1221))
+(or x1417 (not x663) (not x1125))
+(or (not x628) x14)
+(or (not x366) x1027 (not x150) (not x202) (not x1079))
+(or x658 x611 (not x1005) (not x649) x1471)
+(or (not x669) x589 (not x1405))
+(or x82 (not x529) (not x621) (not x710) x415)
+(or x71 (not x1244) x530)
+(or (not x1486) x553)
+(or x48 x200 x1119)
+(or (not x876) x1130 (not x640))
+(or x169 x1110)
+(or (not x1266) x390)
+(or x522 (not x51))
+(or x1077 x1316 x1328)
+(or x620 (not x219) (not x718))
+(or x855 (not x1348) x1539)
+(or (not x733) x702)
+(or x1286 x1480)
+(or (not x1591) (not x965) (not x1261) (not x709) (not x516))
+(or x989 (not x886) (not x147))
+(or (not x963) x648 (not x975))
+(or x192 x943 (not x306))
+(or x177 (not x1137))
+(or (not x8) (not x581) x241)
+(or (not x671) x293 x1027)
+(or x125 x767 x100)
+(or (not x63) (not x1189) (not x1219))
+(or x1051 (not x535) x261)
+(or x1095 (not x1230) (not x593))
+(or x1050 x280 x933 x1160 x530)
+(or x1038 x1585 (not x1305) (not x635) x423)
+(or x948 x4)
+(or x1166 x51 (not x752) (not x18) (not x1283))
+(or (not x1358) (not x1591) (not x965) (not x709) (not x516))
+(or x1287 (not x473) (not x992))
+(or (not x520) x1042 (not x740))
+(or (not x1363) (not x349) (not x1103))
+(or x33 x8 x210 (not x891) x1354)
+(or x1260 x1570 x1468 (not x1485) x912)
+(or x814 x1350 x1608)
+(or (not x709) x442 x516)
+(or (not x29) (not x867) x1084)
+(or (not x29) (not x933))
+(or (not x1163) x1361 (not x223))
+(or (not x1060) (not x1109) (not x276) (not x933) (not x1050))
+(or x1204 (not x874) x293)
+(or (not x887) (not x267))
+(or x869 x200)
+(or (not x459) (not x660) x881)
+(or x532 (not x1016) (not x368) (not x633) (not x301))
+(or (not x290) x1535)
+(or x1344 (not x1143) x217)
+(or x589 (not x795))
+(or (not x1343) (not x530) (not x575))
+(or x1496 (not x874) (not x135) (not x1204) (not x293))
+(or (not x340) x1080 x1409)
+(or x1068 (not x351) (not x17))
+(or (not x911) (not x1299) (not x1172))
+(or (not x1317) (not x1000))
+(or (not x819) (not x3) x949)
+(or x152 x1087 x873)
+(or (not x901) (not x1586) (not x1021) x267 (not x525))
+(or (not x1180) (not x91) x1317)
+(or (not x1307) (not x927) (not x374) (not x842) x1142)
+(or (not x1518) (not x1288) x566)
+(or (not x778) (not x1073) (not x290) (not x1028) (not x1082))
+(or x1358 x516 (not x709))
+(or x174 x269 (not x1549))
+(or (not x1598) (not x195))
+(or x729 x183 (not x1448))
+(or x267 x192 x1433 x1586 (not x1094))
+(or x539 (not x139) x373)
+(or (not x662) (not x1094))
+(or x315 (not x971) (not x36) x166 x868)
+(or x1583 x582 (not x1075) (not x75) x884)
+(or (not x687) x943)
+(or x151 x779 (not x812))
+(or (not x530) (not x48) x1232 x811 x280)
+(or (not x1438) (not x384))
+(or x697 x1042 (not x146) x503 x740)
+(or (not x472) x546 (not x1360) x638 x573)
+(or x1414 x1512 x84 x1377 (not x1483))
+(or (not x673) x1347 (not x366))
+(or (not x303) (not x1496))
+(or x445 (not x259) (not x1185))
+(or x21 (not x228) (not x846))
+(or (not x656) (not x994) x372)
+(or (not x809) x402)
+(or x589 x821 (not x344))
+(or x119 x915 x407)
+(or x572 (not x1390) x819)
+(or (not x1515) x294 (not x938) (not x1365) (not x1576))
+(or x336 x698 x349 x677 x1001)
+(or (not x712) x1021 (not x372) (not x525) (not x656))
+(or (not x156) x421 x717)
+(or (not x1142) (not x1404))
+(or (not x159) (not x893) x783)
+(or x884 x1583 (not x582) (not x929) x75)
+(or x1010 x462 x200 x1129 x235)
+(or (not x1314) x432 (not x819))
+(or (not x851) x874 x1168 (not x293) (not x505))
+(or (not x932) (not x1254))
+(or x675 (not x289) (not x1551))
+(or x1452 (not x1552) (not x1476) x1543 x1259)
+(or (not x932) (not x251) (not x1275))
+(or x132 (not x1058) x903)
+(or x116 (not x141) x1276)
+(or (not x349) (not x1423))
+(or x1402 x518 (not x1318))
+(or (not x1582) x1550 (not x1014))
+(or x419 x1393 x532)
+(or (not x815) x1084)
+(or (not x223) (not x659) (not x1346))
+(or (not x1111) x787)
+(or x1244 (not x1574) (not x1116) (not x179) (not x732))
+(or (not x1275) (not x1030) x251 x510 x238)
+(or (not x1271) (not x1521))
+(or (not x724) x503 (not x275))
+(or x457 x651)
+(or (not x672) x1244 x594 x961 (not x179))
+(or x1157 (not x1551) (not x1592))
+(or x1010 x781 (not x101))
+(or x1518 x1288 (not x1387) x877 x313)
+(or (not x1029) (not x28))
+(or (not x685) x369 x980 (not x337) (not x1106))
+(or (not x128) x393 (not x208))
+(or (not x192) (not x1473) x322 x943 (not x1094))
+(or x224 (not x350) x434 x1606 x765)
+(or (not x240) (not x913) x137 x123 x1273)
+(or x1446 (not x1364))
+(or x840 (not x1052) (not x289) (not x538) (not x348))
+(or x1361 x1236 (not x783))
+(or (not x814) x1475 (not x314))
+(or (not x1010) (not x462) (not x221) (not x270) (not x494))
+(or x1294 x948 x1341)
+(or (not x494) (not x495))
+(or (not x22) x1113 (not x492))
+(or (not x1586) (not x267) (not x1593) x1021 x525)
+(or x769 (not x1398) (not x1227))
+(or (not x13) x280 x890)
+(or x1191 x9 x1178)
+(or (not x881) (not x471) (not x378) (not x660) (not x1158))
+(or (not x701) x733 x349 (not x1001) (not x962))
+(or (not x684) (not x3) (not x755) x819 x1390)
+(or x354 x735)
+(or x1459 x1611)
+(or (not x1606) x350 x224)
+(or (not x25) (not x1467))
+(or (not x495) (not x1370))
+(or x341 x1290 (not x587))
+(or (not x1398) x290 (not x1520))
+(or x512 x1501 x1317)
+(or (not x1214) (not x603))
+(or x1116 (not x1328))
+(or x432 x1384 (not x622) x819 (not x3))
+(or x893 (not x224) (not x268) x900 x1606)
+(or (not x1329) x413 x1378)
+(or (not x861) (not x578))
+(or (not x650) (not x1397) x1093)
+(or (not x355) (not x340))
+(or x646 (not x1462))
+(or (not x362) x376 (not x1002))
+(or (not x1301) (not x56))
+(or x517 x1143 (not x334))
+(or (not x912) (not x904) x273)
+(or (not x29) (not x1010) x688)
+(or x656 x1159 x372 x1142 (not x1307))
+(or (not x1570) (not x1468))
+(or x189 x184)
+(or x484 (not x316) (not x444))
+(or x1407 (not x1112) x236)
+(or x933 (not x530) (not x1160))
+(or x711 x471 (not x349) (not x881) x1001)
+(or x1326 x520 x1015)
+(or (not x737) (not x5) x1271 (not x569) x1151)
+(or x192 (not x1586) x267 x1094 x887)
+(or x318 x1282 (not x822) (not x1577) x425)
+(or (not x807) x975 x755)
+(or (not x234) x1155)
+(or (not x170) (not x1378) x413 (not x1143) x1329)
+(or x330 x1142 (not x372))
+(or x778 (not x1329) x991)
+(or x274 (not x1459))
+(or (not x975) x807 x755)
+(or (not x783) (not x252) (not x767))
+(or x1295 x1252)
+(or x947 (not x1376) x256)
+(or x976 (not x780) (not x597))
+(or x1104 (not x609))
+(or x469 x808 x1169)
+(or (not x781) (not x753))
+(or x819 (not x1287) x3)
+(or x1397 (not x610) x133)
+(or (not x1052) (not x1470) x538 x289 (not x840))
+(or x1016 x194)
+(or (not x1311) (not x289) x280)
+(or x999 (not x1546) (not x446) (not x1420) (not x686))
+(or (not x1007) x1488 x915)
+(or (not x638) x840)
+(or (not x1410) (not x373) (not x539))
+(or x650 x1424 x106 x1397 x917)
+(or (not x1178) (not x836) x792)
+(or (not x1275) (not x57) x192 x1094 x510)
+(or (not x513) (not x282) (not x603))
+(or (not x1094) (not x1433) (not x1586))
+(or x258 x478 (not x1462))
+(or x687 (not x309) x350)
+(or x904 x180 (not x895) x936 (not x104))
+(or x1479 (not x1574) x743)
+(or x606 x1203 (not x458) (not x393) (not x163))
+(or (not x245) (not x373) (not x258))
+(or x1086 (not x1573))
+(or x1119 (not x710) x667 (not x1411) x982)
+(or (not x287) (not x293) x232)
+(or x1522 (not x1247))
+(or (not x210) (not x1575) (not x891))
+(or (not x1550) (not x1592))
+(or (not x53) x1143 (not x517))
+(or x874 x293 x1140 (not x1079) x150)
+(or (not x1600) x661 x283)
+(or x661 x513 x276 (not x282) x1067)
+(or x922 (not x827) x441)
+(or x109 x243)
+(or x1089 (not x311))
+(or (not x602) (not x539) x1573)
+(or x353 (not x455))
+(or x192 (not x372) (not x247) (not x656) (not x1094))
+(or (not x1293) x1538)
+(or (not x526) (not x640) (not x876))
+(or x1361 x951 x1236)
+(or x591 (not x1370))
+(or x690 (not x167) x1088)
+(or (not x640) (not x905) x420)
+(or (not x438) (not x433) x794 x333 x543)
+(or (not x1473) (not x1586) x267 (not x943) x582)
+(or (not x490) (not x1363))
+(or x189 x264 x121 (not x443) (not x1490))
+(or (not x47) x1477 (not x1150) x77 (not x1012))
+(or (not x819) (not x3) (not x550))
+(or (not x373) x787 (not x539))
+(or x418 x1120 (not x1272) x1433 (not x1224))
+(or x1146 (not x919) (not x1149) (not x1371) x56)
+(or x943 (not x1557) (not x1586))
+(or (not x51) x324 (not x18))
+(or (not x764) x1085)
+(or x951 x349 x383)
+(or x783 x1361 (not x1236) (not x951) x803)
+(or (not x888) (not x234))
+(or (not x462) (not x67))
+(or x690 (not x840) (not x289) x857 (not x1551))
+(or x1010 (not x1264) x462 (not x781) x636)
+(or (not x789) x1562 x451)
+(or (not x1081) x1134 x1128)
+(or x1224 (not x1272) x165)
+(or x178 x1343 (not x942))
+(or (not x839) x557 (not x1298) (not x1254) x1009)
+(or (not x1361) x989)
+(or x324 x18 x51)
+(or x1151 x737 x1246)
+(or x887 x1586 (not x1094) x267 x192)
+(or (not x1004) (not x779))
+(or x588 x132 (not x1609))
+(or (not x316) x161)
+(or x1530 (not x280))
+(or x1182 x334 x1005)
+(or x1530 (not x530) (not x538))
+(or x154 x1544)
+(or (not x994) (not x656) x842)
+(or (not x613) x235 (not x69))
+(or x706 (not x841) x341)
+(or x1237 (not x28))
+(or (not x329) (not x186))
+(or (not x1321) x1361 x223 x783 x1163)
+(or (not x512) x1388 x54)
+(or x573 x289)
+(or (not x737) (not x1151) x569)
+(or (not x1607) (not x650))
+(or (not x1378) x140 x769 (not x265) x328)
+(or (not x550) (not x480) x1408)
+(or (not x525) x737 (not x795))
+(or x452 (not x1012) x1372)
+(or (not x286) (not x1124))
+(or x353 (not x527) x1056)
+(or (not x1143) x991 x217 x15 (not x413))
+(or (not x675) (not x1380) (not x1056))
+(or x1190 (not x936))
+(or (not x515) x1574 (not x282))
+(or (not x529) (not x3) (not x819))
+(or (not x62) (not x196) (not x263))
+(or x482 (not x1142))
+(or x975 x44 x622)
+(or x1271 x1582 x525 x1021 (not x5))
+(or (not x1445) (not x1004) (not x383) x957 (not x323))
+(or x41 (not x42) x1525 x906 x1074)
+(or x821 (not x1052) (not x778))
+(or x1380 x1028 x1073 x1329 x170)
+(or (not x797) (not x1001) x1193)
+(or (not x3) (not x39) (not x819) (not x981) x886)
+(or x249 x421 (not x156))
+(or (not x1140) (not x925) (not x37) x948 (not x1374))
+(or x614 x651 x419)
+(or x1403 (not x1063))
+(or (not x567) x1147 (not x216))
+(or x146 (not x1042))
+(or x1472 x1447 x1480)
+(or (not x950) x803 (not x1426) (not x951) (not x731))
+(or x956 (not x680) (not x1072))
+(or (not x1079) x293 x1033 x150 x874)
+(or (not x456) x250)
+(or x1098 (not x1120) (not x806))
+(or (not x222) (not x652) x512)
+(or x1178 x836 x792)
+(or (not x912) (not x84) x1308 x1260 (not x542))
+(or x1408 (not x1065) (not x480))
+(or x911 x1514 x142 (not x1400) (not x1127))
+(or (not x1577) (not x1517))
+(or (not x982) (not x415))
+(or (not x207) x893 x223 x920 (not x268))
+(or (not x1209) x1441)
+(or x699 (not x675) (not x94))
+(or (not x223) x207)
+(or (not x427) (not x946) (not x885))
+(or x669 x1536 x1008)
+(or x1016 (not x107) (not x368))
+(or (not x1348) x944)
+(or x274 x1579)
+(or (not x1328) x1556)
+(or x154 x1108 (not x1362))
+(or x714 (not x166) (not x740))
+(or (not x1353) (not x104))
+(or (not x144) x1594 x357)
+(or (not x690) (not x1010) (not x462) x389 x675)
+(or x32 x890 (not x1023) x942 x1343)
+(or x1189 (not x1219) x63)
+(or x1401 x564 x314)
+(or x1576 (not x1515) (not x1332))
+(or x421 x861 (not x983))
+(or (not x32) (not x7) (not x48))
+(or (not x234) x201)
+(or (not x1177) x1327 (not x643))
+(or (not x819) x432 x734)
+(or x1314 x88 (not x1444))
+(or x530 (not x933) (not x1160))
+(or (not x1342) (not x565) x1305 (not x567) x1171)
+(or x1382 x1094)
+(or x238 x510 (not x954) (not x1275) x251)
+(or (not x921) (not x1350) (not x339))
+(or (not x1517) x1298 x1254)
+(or x1428 (not x432))
+(or (not x671) x1207)
+(or x201 x1111)
+(or (not x157) x1115 x1046)
+(or x1001 x524 x349 (not x797) (not x243))
+(or (not x1148) x922 x1395)
+(or x219 (not x718) x1252 (not x620) x786)
+(or (not x730) (not x458) (not x348))
+(or x1299 (not x539) (not x1378))
+(or (not x1357) (not x718) x1365)
+(or x737 x885 x1151)
+(or (not x884) x1473)
+(or x1506 (not x907))
+(or (not x129) (not x412) x1480)
+(or (not x622) (not x648) (not x975) x44 x1351)
+(or x838 (not x1409) x280)
+(or (not x145) x487 (not x171) x31 x185)
+(or x641 x1209 x1534 x130 (not x1268))
+(or (not x1456) (not x452) x1372 x162 x1491)
+(or (not x1275) (not x251) x1026)
+(or (not x1249) (not x1390))
+(or (not x650) (not x665) (not x1397))
+(or x125 x189)
+(or (not x873) x373 x301)
+(or x811 x513)
+(or x564 (not x356))
+(or x648 x454 x975 (not x100) x767)
+(or x495 (not x332) (not x1503))
+(or x164 x912 x1086)
+(or x960 x313)
+(or x1473 x475 x1094)
+(or x985 x882 (not x814))
+(or (not x1079) x379 (not x1294) (not x150) (not x1541))
+(or x568 (not x1179) x578)
+(or (not x657) (not x302))
+(or (not x236) (not x282) x1214)
+(or x23 (not x639))
+(or (not x1021) (not x279))
+(or x843 x764 x747 (not x1481) x1256)
+(or x335 (not x1247) (not x749))
+(or x1347 (not x4) x1341 (not x379) (not x1294))
+(or x916 x349)
+(or (not x1555) x430 (not x958))
+(or x1231 (not x200))
+(or x513 (not x282) x1574 (not x743) (not x1251))
+(or (not x354) x855 x1607)
+(or (not x267) x192 (not x1224))
+(or x474 (not x1024) (not x291))
+(or (not x382) x995 (not x1083))
+(or x894 (not x288) (not x294) (not x488) x549)
+(or x1361 (not x783) (not x1054))
+(or (not x1448) (not x404) x1463 (not x1509) (not x832))
+(or x1110 (not x1156) x782)
+(or x1440 x1386 x658 (not x827) x114)
+(or (not x1291) x1435)
+(or x299 (not x41) x1363 (not x1313) (not x1074))
+(or (not x584) (not x1361))
+(or (not x947) (not x1376) x1170 (not x256) (not x784))
+(or (not x1256) x747 (not x843))
+(or x919 (not x1341) (not x4) (not x1371) x552)
+(or x1606 x601)
+(or x1148 x620 (not x411))
+(or x1369 x384 x127)
+(or (not x813) (not x396) x602 x1049 (not x688))
+(or x1273 x1510 (not x137))
+(or (not x814) (not x1381) x305)
+(or (not x48) x1119 (not x817) (not x200) (not x811))
+(or x914 x179 (not x1244))
+(or (not x539) x1496 x373 (not x135) x338)
+(or x1181 x1610 x309 (not x687) x350)
+(or x1052 x1073 x538)
+(or x1434 (not x585))
+(or x373 (not x245) x539)
+(or x1371 (not x592) x462 x1010 x919)
+(or (not x2) x318 (not x58) (not x1478) x870)
+(or x1203 x458 x663)
+(or (not x222) (not x1317))
+(or x1379 (not x1190) (not x1581) x1293 x180)
+(or x776 (not x428))
+(or (not x915) (not x119) (not x339) x407 x1303)
+(or (not x681) (not x510))
+(or (not x1213) (not x775))
+(or (not x410) x43 (not x387))
+(or (not x201) x234 (not x179) x1244 (not x578))
+(or x150 x1257)
+(or x413 (not x1143) (not x217) (not x991) (not x1344))
+(or (not x164) (not x1573) x602 x373 (not x539))
+(or (not x224) x268 (not x1606) (not x893) (not x1044))
+(or (not x846) (not x726) (not x1322))
+(or (not x1208) (not x539) (not x373))
+(or (not x889) (not x1194) (not x1183))
+(or x388 (not x1438) x286)
+(or (not x387) (not x417))
+(or x987 (not x970) (not x302) x544 (not x858))
+(or (not x1049) x1098 (not x806))
+(or x647 (not x235) x215)
+(or x137 x913 (not x103))
+(or (not x875) x1057 x928)
+(or x1323 (not x1144) (not x1162))
+(or x637 x1393)
+(or x1298 (not x839) (not x1254) (not x1009) (not x557))
+(or x982 x82 (not x529) (not x621) x415)
+(or (not x291) (not x420))
+(or x448 x308)
+(or x1038 (not x567) (not x565) x1171 (not x1342))
+(or (not x1214) (not x858) (not x1067) (not x860) (not x508))
+(or x622 x1428 (not x3))
+(or (not x743) x1328 (not x1533))
+(or x752 (not x1166) (not x18) x51 (not x1283))
+(or (not x799) (not x546) x1106)
+(or (not x231) (not x322) x370)
+(or x683 (not x486) x1296 x667 x496)
+(or x378 x660 (not x1373))
+(or (not x1579) (not x869) (not x274) x1570 (not x791))
+(or x1193 x1001 x797)
+(or x808 x744 x1292 x1201 (not x1276))
+(or (not x1111) x1579 (not x1013) (not x1031) x1100)
+(or (not x981) (not x886) (not x3) x550 x819)
+(or x547 (not x1255) (not x590))
+(or x1091 (not x307))
+(or (not x429) (not x1109))
+(or (not x849) x598 x1327)
+(or (not x1440) (not x842) (not x251))
+(or (not x238) (not x251) (not x1083))
+(or (not x553) x1479 (not x1277) x302 x1533)
+(or (not x1389) (not x690))
+(or x1591 (not x278))
+(or x1340 (not x803) x325 x1373 (not x951))
+(or (not x34) x90)
+(or (not x1480) x833 (not x609))
+(or x1349 (not x25) (not x814) x422 x1350)
+(or x1321 (not x44))
+(or x297 (not x1519) x405)
+(or x1295 (not x922) (not x786))
+(or (not x1345) x1057 x745)
+(or x733 x1423 x349 (not x1001) (not x962))
+(or x974 x213 (not x71) x257 (not x1563))
+(or x283 (not x1547))
+(or (not x267) x1296)
+(or (not x189) (not x264))
+(or x675 (not x690) (not x232) (not x399) x1496)
+(or (not x57) x1514 x64 (not x1006) (not x1225))
+(or x1576 (not x1148) x963 x1332 x1515)
+(or (not x954) (not x1254) (not x12))
+(or (not x610) x334 x170)
+(or x584 x1526 x897)
+(or (not x393) x1125 x458)
+(or x283 x276)
+(or x626 x882)
+(or x1404 x1066 x678 x330 x1425)
+(or (not x410) (not x239) x417 (not x256) (not x43))
+(or (not x509) (not x1030) (not x748))
+(or (not x803) x1609 (not x951))
+(or x1221 (not x1100) (not x1497) (not x1099) x360)
+(or (not x842) (not x656) (not x372) x994 (not x927))
+(or x255 (not x1545) x830)
+(or (not x1033) (not x293) x874)
+(or (not x675) x690 (not x94))
+(or x666 x1531)
+(or x999 x1092 (not x1546) (not x1420) (not x686))
+(or x1001 (not x1423) x733)
+(or (not x1600) (not x547) (not x1547))
+(or (not x1112) x1211 (not x311))
+(or (not x1028) x1535)
+(or x281 (not x143) x768)
+(or (not x1370) (not x106))
+(or (not x1086) (not x1258) (not x642) x670 (not x1554))
+(or (not x493) (not x820) x1602 x613 x215)
+(or x828 x1423 x1022)
+(or (not x555) x1539 x735)
+(or (not x169) x357 (not x1563))
+(or x579 x1077)
+(or (not x1050) (not x896) x811)
+(or (not x1072) x1310)
+(or x767 (not x783) x1361 x100 x990)
+(or (not x1001) x349 (not x1103) (not x151) x1313)
+(or (not x892) (not x95) (not x1289))
+(or x320 x818 (not x1266))
+(or (not x1330) x1536)
+(or (not x647) (not x69) (not x235) x613 x139)
+(or (not x773) x709 x1320)
+(or (not x516) x184 x965)
+(or (not x648) (not x1148) (not x1121))
+(or x656 x1307 (not x1404))
+(or (not x1471) x649 x611 (not x1587) (not x658))
+(or x1053 (not x936) (not x838))
+(or x20 (not x583) x1132)
+(or (not x4) (not x379) x1341 (not x948) (not x1294))
+(or x1401 x564 (not x96))
+(or x1040 (not x1413) x1331 (not x506) x844)
+(or x1001 (not x797) x349 x23 (not x243))
+(or (not x441) x1274 (not x1252))
+(or x1207 x728 x1596)
+(or x1141 (not x407))
+(or (not x614) (not x1048) x650)
+(or (not x333) (not x219))
+(or (not x268) x1044 (not x224))
+(or x251 x1275 (not x932))
+(or x618 x1094 x1473)
+(or (not x198) x495 (not x939) (not x907) x332)
+(or (not x1424) x50 (not x1494) x1262 (not x1101))
+(or x1077 (not x1316) (not x1328))
+(or x1216 (not x892))
+(or x773 (not x920) x1017 x516 x709)
+(or x1043 (not x556) x539)
+(or (not x845) (not x293) x1304 (not x874) (not x1541))
+(or x672 (not x762) (not x961))
+(or (not x1312) (not x293) (not x1496))
+(or (not x503) x166 x1552 (not x714) (not x740))
+(or x1564 (not x1232) (not x1063))
+(or x742 (not x1591) x965)
+(or (not x614) x304 (not x1384))
+(or (not x28) (not x1159) x1421)
+(or x1125 x905 x606)
+(or (not x17) (not x644))
+(or x601 (not x224) (not x783))
+(or (not x478) (not x1046) x157 x1115 (not x646))
+(or x1229 x855 (not x944))
+(or x867 x933 x1091 x1050 x1144)
+(or x941 (not x881) (not x471) x349 (not x1001))
+(or x1421 (not x1142))
+(or x192 (not x1362) (not x251))
+(or (not x783) (not x951) (not x102) (not x803) x1361)
+(or (not x1598) x1293)
+(or (not x1101) (not x1424) x1192)
+(or x814 (not x73))
+(or x1179 (not x674) x511)
+(or (not x148) x586)
+(or (not x131) (not x672) (not x179) x961 x1244)
+(or x410 (not x429) (not x1126) x850 (not x1160))
+(or (not x681) x525)
+(or x18 (not x448) x522)
+(or (not x650) x234 (not x861))
+(or x714 (not x740) x971)
+(or x518 x970 x707)
+(or x1268 x130 (not x1209))
+(or x224 x268 x1036)
+(or (not x364) (not x883))
+(or (not x1329) x170 (not x1073) (not x1028) (not x209))
+(or x1256 x764 (not x1085) x747 (not x1481))
+(or (not x354) x1061)
+(or (not x1001) (not x803) x349 (not x383) (not x951))
+(or x1389 x690 (not x1010) (not x675) x462)
+(or x923 x131 (not x506))
+(or x1246 x1298 (not x531))
+(or x881 (not x1373) (not x660))
+(or x1415 x66 (not x1367))
+(or x1043 x1027 (not x539) x373 x556)
+(or (not x959) x580 x1108 (not x1544) (not x788))
+(or (not x299) x926 x443)
+(or x623 x966 (not x1183))
+(or x629 x1376 (not x1392))
+(or x30 (not x461) x1350 (not x814) (not x1507))
+(or x1149 x366 x1294)
+(or (not x25) (not x306) (not x295))
+(or x1370 x796 (not x198))
+(or x623 (not x1519))
+(or (not x1605) (not x85) (not x230))
+(or (not x334) (not x651) (not x128))
+(or x29 x867 x542 x1573 x1308)
+(or x1519 (not x271))
+(or (not x1517) x839 (not x425))
+(or (not x109) (not x86))
+(or x260 x275)
+(or x1330 (not x795) (not x1444))
+(or (not x51) (not x324) (not x752) (not x1166) x18)
+(or x807 (not x1455))
+(or (not x996) x651)
+(or (not x425) (not x870))
+(or (not x449) x1524 (not x620))
+(or x1601 (not x959) (not x592))
+(or x373 x1378 (not x1299) (not x140) (not x539))
+(or x124 (not x651) (not x838) (not x992) x614)
+(or x378 (not x243) (not x660) x902 (not x797))
+(or (not x629) x1376 x1392)
+(or x688 (not x867))
+(or (not x570) (not x1524))
+(or x289 (not x840) (not x1502))
+(or x1397 (not x1061) x1005 x1587 (not x650))
+(or x240 (not x137) (not x913))
+(or x175 x373 (not x1535) x539 (not x1082))
+(or (not x771) x1501 (not x1226))
+(or (not x1547) (not x707))
+(or (not x304) (not x473) x614 x1287 (not x1384))
+(or (not x961) (not x923) x672)
+(or (not x371) (not x650))
+(or x379 (not x366) x202 (not x1149) x1294)
+(or x19 x364 x640)
+(or x912 x837 (not x273) x104 (not x904))
+(or (not x1489) x1052 x840)
+(or x679 (not x783) x1361)
+(or (not x326) x646 (not x478))
+(or x773 (not x560))
+(or x1536 (not x351))
+(or (not x681) (not x449) x570 x304 x375)
+(or (not x1465) x1361 (not x1054))
+(or x1485 x1611)
+(or (not x556) (not x373))
+(or x1317 (not x459) x250)
+(or (not x539) (not x1190) x440)
+(or (not x462) (not x624) (not x1010) x1182 x780)
+(or (not x481) x11)
+(or (not x1217) (not x377) x951 (not x803) (not x1509))
+(or (not x192) (not x1094) (not x246) (not x1275) (not x510))
+(or x320 x390 x1447)
+(or x1473 (not x1094) x322 x192 (not x943))
+(or (not x1552) x971)
+(or (not x1268) (not x735) (not x1441) (not x120) (not x746))
+(or (not x424) (not x917))
+(or (not x1032) x1455 (not x747))
+(or (not x1267) (not x1196) (not x206))
+(or x1183 x1371 (not x379) x919 (not x1294))
+(or (not x270) (not x1572) (not x1010))
+(or (not x104) (not x912))
+(or x838 x651 (not x614) (not x992) (not x419))
+(or x650 (not x463) x877 (not x502) (not x1397))
+(or (not x755) x3 x577)
+(or x232 (not x1496) (not x399))
+(or x927 (not x1135) (not x1322) x500 (not x21))
+(or x1145 x1537 (not x308) (not x1263) (not x448))
+(or (not x4) x137 (not x1341))
+(or x1280 (not x698))
+(or (not x368) x15 x785 (not x527) x1344)
+(or (not x1377) x912)
+(or x342 x127 x136)
+(or x369 x876 x337)
+(or x150 x840 x502)
+(or (not x791) (not x1570) (not x1031) x869 x274)
+(or x1244 (not x32) (not x739) (not x178) x179)
+(or (not x795) (not x1021))
+(or (not x1) (not x607) x1601 x592 x959)
+(or (not x207) x773)
+(or x471 (not x941))
+(or (not x579) (not x743))
+(or (not x1010) x1155 (not x643))
+(or x548 x541 x9)
+(or x788 (not x607) (not x592))
+(or x238 (not x1094) x853)
+(or (not x951) (not x1361) (not x1174))
+(or x995 (not x1336))
+(or (not x1297) (not x506) (not x1413))
+(or x1575 x467)
+(or x741 x1265)
+(or x622 (not x3) (not x1157))
+(or x1196 x192 x737)
+(or x750 (not x1045) x241 x581 x8)
+(or (not x589) x344 x821)
+(or (not x1587) x1005 (not x1182) (not x334) (not x517))
+(or x695 x1356 x290 (not x778) (not x1520))
+(or x289 x1360)
+(or x145 (not x171) x185 x31 (not x487))
+(or (not x1453) (not x1151) (not x192) (not x1094) x737)
+(or (not x1010) x1214 (not x462) (not x484) (not x508))
+(or x1429 x928)
+(or x767 (not x1361) (not x100) (not x1039) (not x783))
+(or (not x971) x503 x714 x1552 x740)
+(or x916 (not x471) (not x881))
+(or x52 x945)
+(or x1507 x205 (not x1204))
+(or x944 (not x1290))
+(or x673 x409)
+(or x1283 x98 (not x1051))
+(or (not x106) x650 x50)
+(or (not x582) (not x267))
+(or x256 (not x1170))
+(or x1325 (not x364) (not x1417))
+(or x925 x1374 (not x1140))
+(or x1535 x778 x1073)
+(or (not x41) x1074 x42)
+(or (not x1474) x1090 (not x1553) x411 (not x1020))
+(or (not x251) x1275 x238 x509 x510)
+(or (not x996) x78)
+(or x1429 (not x1057) x181)
+(or (not x1350) x30 x359)
+(or x1350 x1184 x628)
+(or x143 x768 (not x281))
+(or x1551 (not x690))
+(or x624 x1010 (not x462))
+(or x1155 (not x1189) x437)
+(or x737 x525 x795 (not x1151) x1021)
+(or (not x659) (not x268) (not x893))
+(or (not x407) x1303 x915)
+(or x985 (not x1335))
+(or (not x5) x737 x569)
+(or x130 (not x1580))
+(or (not x1010) x818 x462)
+(or x755 x1032)
+(or x413 (not x15) x991)
+(or x755 x810)
+(or (not x522) (not x757) x36 x752 (not x448))
+(or x1574 (not x508) (not x1214) x998 x743)
+(or x258 (not x1600) (not x1547))
+(or (not x1244) x201)
+(or x106 x270 (not x672) (not x961) (not x917))
+(or x701 x1121)
+(or x690 (not x675) (not x1056))
+(or x648 x1390 (not x1032))
+(or x5 (not x946))
+(or x294 (not x549) x1482 x894 x488)
+(or (not x349) (not x951) (not x1555))
+(or (not x926) (not x1571) x1139)
+(or (not x1240) x1044)
+(or (not x1225) (not x64) (not x1127))
+(or x747 (not x1256) x807)
+(or x838 (not x992) x637)
+(or (not x899) x373 x539)
+(or x1170 (not x1419) x864)
+(or x710 x982 x1411 (not x817) (not x667))
+(or x573 x538)
+(or (not x82) x1536 (not x1252))
+(or (not x1021) x798)
+(or x546 x1106 x799)
+(or (not x1281) x351)
+(or x286 x696 x1124)
+(or (not x364) (not x640) (not x514))
+(or x1245 x1335)
+(or x87 (not x866))
+(or (not x1094) x1303 (not x819))
+(or x929 (not x884) x1583)
+(or (not x1155) x1189 x437)
+(or (not x1180) x1001 (not x471))
+(or x443 x184 x1358)
+(or (not x904) (not x104) (not x1260))
+(or (not x1576) x963 x1515 x1306 x1148)
+(or (not x1596) (not x664) x671)
+(or x1511 (not x321) x1229 x225 (not x944))
+(or x742 x224)
+(or (not x1061) (not x1539) x855 (not x1607) x1348)
+(or x736 x516 x1017)
+(or (not x737) x569 x5)
+(or (not x413) x1143 (not x140) x170 x1329)
+(or (not x409) (not x72) x1379 (not x1538) x976)
+(or (not x200) x201 (not x528) (not x1129) (not x914))
+(or (not x218) (not x1294) x1341 (not x379) (not x4))
+(or x518 (not x977))
+(or x1469 x814 x1350)
+(or (not x1390) (not x540) x819)
+(or x1497 (not x1475) (not x356) x1350 (not x814))
+(or x1037 x1602 (not x859))
+(or x1052 (not x472) x538)
+(or (not x968) x759 (not x470))
+(or (not x564) x849 x277 x149 x1177)
+(or x198 (not x907) (not x190))
+(or (not x1538) x976 x1293 (not x72) (not x409))
+(or (not x896) x1342)
+(or (not x560) (not x893) x659 x168 x268)
+(or (not x3) (not x1287) x622)
+(or (not x473) (not x1287) x1384 x614 x304)
+(or x238 (not x842) x927 x251 (not x1386))
+(or (not x743) (not x1214) (not x998))
+(or (not x1106) x685 (not x980))
+(or (not x1147) x594 (not x1171))
+(or x1204 x135)
+(or x629 (not x462))
+(or x516 (not x1261) x709 (not x965) x1591)
+(or (not x542) x29 (not x1573))
+(or (not x1362) x1094)
+(or (not x530) x672 x961 (not x1101) x280)
+(or x672 x1568 (not x961))
+(or (not x826) (not x1265) x862 (not x1247) x87)
+(or x1161 (not x38) x1175 (not x1200) (not x1107))
+(or x503 (not x571) x697 x1042 x740)
+(or (not x603) x236 (not x1407) (not x918) (not x1211))
+(or x530 x1101 x672)
+(or (not x379) (not x1294) x1341 (not x925) (not x4))
+(or x363 x105 (not x1467))
+(or (not x437) x63 x1189 x528 x1155)
+(or x737 x1278)
+(or (not x803) x430 x1001)
+(or x295 x105)
+(or x1605 (not x13))
+(or (not x1307) x192 (not x1094) x1142 x973)
+(or (not x11) (not x1210) (not x1029))
+(or x255 x1545 x830)
+(or x1452 (not x1075) x929 x1442 (not x678))
+(or (not x1566) (not x615) x634)
+(or x537 (not x977) x590 x1255 x547)
+(or (not x181) (not x1057) (not x928) x1098 (not x1429))
+(or x238 (not x509) (not x510))
+(or x1029 x11 x28 (not x1210) x186)
+(or x530 (not x538) x280 x1052 (not x1530))
+(or x1142 x1237 x1307 x372 (not x656))
+(or x88 (not x1028))
+(or (not x919) (not x1341) (not x552))
+(or x93 x900 x994)
+(or x3 x192 (not x407))
+(or x733 (not x828))
+(or x1153 x842)
+(or (not x258) (not x1115) (not x283))
+(or x1253 x1052 x280 (not x538) x530)
+(or (not x1145) x448)
+(or x1264 x749 x87)
+(or (not x320) (not x231) (not x1447) x1104 x390)
+(or (not x1336) x693)
+(or (not x192) (not x1224) x267)
+(or x1269 (not x1523) x222)
+(or x814 (not x921) (not x1350) (not x119) (not x880))
+(or (not x927) (not x372) (not x842) (not x668) (not x656))
+(or (not x975) x1114)
+(or (not x517) (not x334) x53 (not x610) x1329)
+(or x895 x904 (not x180))
+(or (not x517) x4 x1587)
+(or x793 x830)
+(or (not x1361) x930)
+(or x1294 x1079 (not x1304) (not x150) (not x379))
+(or x1321 x464)
+(or x1552 (not x503) (not x740) (not x714) (not x971))
+(or x951 x930)
+(or (not x603) x236 (not x918) (not x14) (not x1407))
+(or (not x287) (not x455) (not x74) (not x802) (not x209))
+(or x393 x663 (not x458))
+(or (not x1495) x382)
+(or (not x915) x284 x1141 x713 (not x1007))
+(or (not x35) (not x378) x471)
+(or (not x224) x686)
+(or (not x243) x378 (not x660) (not x797) x1426)
+(or x1193 (not x349))
+(or x300 x255 x595)
+(or (not x793) x187 x310)
+(or (not x1285) (not x843))
+(or (not x150) x502 (not x840) (not x289) (not x463))
+(or x1535 x561 x1082)
+(or (not x603) x373 (not x899))
+(or x955 x539 x373)
+(or (not x640) x905 (not x1417) x883 x364)
+(or x538 x379)
+(or x813 (not x396) (not x688) (not x602) x806)
+(or x152 (not x363) x105)
+(or (not x966) x623 x1183)
+(or x1144 (not x867) (not x933))
+(or x1010 x1318 x1087)
+(or (not x1143) (not x334) (not x610) x53 (not x517))
+(or (not x578) x1155 x179)
+(or x471 x1096)
+(or x1470 (not x1203))
+(or x91 (not x562) (not x1443))
+(or x1537 (not x1282) (not x645) (not x466) (not x822))
+(or x1454 x1477)
+(or (not x16) (not x650))
+(or (not x134) x34 (not x313))
+(or x87 x10 (not x749))
+(or x998 x1077 (not x1328))
+(or (not x1043) (not x874) x1603)
+(or x684 x755 (not x3))
+(or x1442 (not x1075) (not x678) x929 x1543)
+(or x650 x888 (not x1397) x234 x578)
+(or x1220 x83 (not x771))
+(or (not x1029) x275)
+(or x1028 x170 (not x209) x1329 x1073)
+(or (not x1392) (not x276) (not x462))
+(or (not x1156) x156)
+(or (not x1357) (not x1365) x718)
+(or x889 x1183 (not x297))
+(or x975 x622 (not x648))
+(or x206 (not x536))
+(or x562 (not x512) x625)
+(or (not x1405) x669 (not x589) x1330 x795)
+(or x1368 (not x243) (not x797) (not x660) x378)
+(or x693 (not x382) (not x1205))
+(or x1284 x852 (not x254))
+(or x379 (not x150) x1304)
+(or (not x44) x1351 x975 x648 (not x622))
+(or (not x603) (not x513) (not x508))
+(or x933 (not x1060) x1547 x1109 x1050)
+(or x511 x1179 (not x1274))
+(or (not x1011) x163 (not x208) x763 x128)
+(or (not x753) x335 (not x1264))
+(or (not x282) (not x1255) x1574)
+(or x467 x33 x1117)
+(or (not x1395) (not x550) (not x1540))
+(or (not x310) (not x187) (not x793))
+(or (not x1502) x1430 x1292)
+(or x77 x1150 (not x1477) x47 (not x1012))
+(or (not x818) x320 x1266)
+(or x1463 x1134)
+(or x916 (not x1226))
+(or x814 (not x995))
+(or (not x1329) x217)
+(or x1237 x1142 x656 (not x1307) x372)
+(or (not x345) x1187 (not x317))
+(or x1094 x859)
+(or x1411 (not x710) x667 (not x982) (not x817))
+(or x1010 (not x462) x484)
+(or (not x898) x1555 (not x430) x812 x395)
+(or x972 (not x123))
+(or x1397 (not x1286) (not x1053))
+(or (not x1298) (not x1243) (not x1009))
+(or (not x287) x399)
+(or (not x1570) (not x912))
+(or x652 (not x797) x1001 x349 (not x243))
+(or (not x1600) (not x933) x1109)
+(or (not x1100) x1031 (not x1013))
+(or x1395 x550 x1065 x1408 x480)
+(or x462 x202 (not x1010) x366 x1364)
+(or (not x670) x912)
+(or (not x566) (not x27) x134 (not x960) (not x313))
+(or (not x653) x513)
+(or (not x557) (not x932) (not x381) x12 x954)
+(or x897 x523)
+(or x1369 (not x384) x127)
+(or (not x819) (not x734) (not x432) (not x3) (not x622))
+(or (not x202) x366 x1364 x462 x1010)
+(or (not x781) x45)
+(or (not x268) (not x1361) x108)
+(or (not x793) x142 (not x1545))
+(or x185 (not x1590) x171)
+(or x512 (not x23) x112)
+(or x631 x1253 (not x1416))
+(or x1351 (not x223))
+(or x660 (not x1217))
+(or x1010 (not x67) x413)
+(or x1456 (not x1491))
+(or (not x1052) (not x538) (not x638))
+(or x256 x239)
+(or x803 x524 (not x191))
+(or (not x312) (not x1308) (not x542))
+(or x42 (not x41) x1525)
+(or x36 (not x868) x166)
+(or x261 (not x1431) x535 (not x1051) x892)
+(or (not x1207) x1350 (not x1267))
+(or x100 x1508 x975)
+(or x1216 x1289 x1431)
+(or x697 (not x632))
+(or x1442 x1259 x678 (not x929) (not x1075))
+(or (not x85) (not x230) x1071)
+(or (not x559) (not x1052) (not x612) x538 x919)
+(or (not x552) (not x597) (not x1182) x780 (not x976))
+(or (not x84) (not x1165))
+(or (not x78) x996 x457 (not x599) (not x835))
+(or x516 (not x1008) (not x709))
+(or (not x595) x300 (not x255))
+(or (not x1594) (not x144) (not x357))
+(or x605 x601)
+(or x1512 (not x1414) (not x84))
+(or (not x659) x168 x893)
+(or x575 x723 x323)
+(or (not x747) (not x902) (not x1317) (not x1047) x512)
+(or (not x65) x123 (not x1146) (not x845) x1301)
+(or x905 (not x883) x640)
+(or x191 (not x897) x500 x848 (not x242))
+(or x949 x3 x819)
+(or (not x179) x578 (not x234) (not x1244) x1189)
+(or (not x265) x1378 (not x328))
+(or x1271 x737 (not x569) x5 (not x1151))
+(or x748 (not x416) x1133 (not x766) x427)
+(or x1238 x52)
+(or (not x328) (not x1378) (not x140))
+(or x1184 (not x628) (not x1350))
+(or x543 x70)
+(or x164 x542 x1308)
+(or x797 (not x731))
+(or x933 x48 (not x111))
+(or (not x973) (not x978) x1532)
+(or (not x885) x946 (not x416) (not x1223) x1521)
+(or x462 x494 x1572 x270 (not x1010))
+(or x1496 (not x293) x1312 (not x135) (not x874))
+(or (not x907) (not x692) (not x198) x332 x495)
+(or x448 (not x522) x1166)
+(or (not x37) x874 (not x1079))
+(or x1296 x842)
+(or (not x1271) x488 (not x5))
+(or x702 x1280 x336 x92 (not x576))
+(or (not x749) (not x1265) x781 (not x1264) x10)
+(or (not x413) x1378 x1329)
+(or (not x589) (not x344) x1444 x1314 (not x821))
+(or x1462 x1600 (not x800))
+(or (not x886) x147 (not x989))
+(or (not x962) x733 (not x1513))
+(or x1064 x1242 (not x761))
+(or (not x1306) (not x1515))
+(or (not x1263) x645 x466 (not x1282) x822)
+(or (not x389) (not x675))
+(or (not x1252) (not x975) (not x648) (not x436) x447)
+(or x885 (not x1271))
+(or x1431 (not x630) x535 (not x261) (not x892))
+(or (not x135) x675 (not x232))
+(or (not x1350) x1554 (not x1272))
+(or (not x773) (not x516) x1017 (not x709) x207)
+(or (not x541) x548 (not x9))
+(or (not x662) (not x68) x392)
+(or (not x477) (not x815) x259)
+(or x771 (not x1501))
+(or x170 (not x574) x1073 x1028 x1329)
+(or x417 x1376 (not x1170))
+(or x118 (not x55) (not x741) (not x862) (not x233))
+(or (not x1350) x1302 (not x237) (not x814) x1225)
+(or x734 x622)
+(or (not x129) (not x651) x178)
+(or x805 (not x862) x118 (not x55) (not x741))
+(or x532 (not x107))
+(or x1397 x50 x650)
+(or x1155 (not x179) x578)
+(or (not x1288) x566 x1387)
+(or x1408 x981)
+(or x182 x855)
+(or (not x1603) (not x728) x664 x1596 x671)
+(or (not x1133) x766 x427)
+(or (not x928) (not x1049))
+(or x6 x1335 x1594)
+(or (not x1425) x1142 (not x656) x1307 x372)
+(or x1135 (not x21) x927 x1322 x500)
+(or (not x1014) (not x1551))
+(or (not x1222) (not x296))
+(or x530 x811 (not x1232))
+(or (not x1513) (not x726) x228 (not x21) (not x846))
+(or (not x955) (not x373) x137 x539 x913)
+(or x1151 (not x5) x946 x1271 (not x737))
+(or (not x1062) x948)
+(or (not x1164) (not x7))
+(or (not x205) x30)
+(or (not x530) (not x310) (not x517))
+(or x369 (not x1106) (not x876) x980 (not x337))
+(or (not x454) (not x767))
+(or x749 (not x672) x45)
+(or x1192 x1262)
+(or x1483 x1512 (not x1165))
+(or (not x874) (not x293) (not x851) x505 (not x1227))
+(or x95 (not x261))
+(or x1434 (not x1275) x510)
+(or x614 (not x650) (not x1048))
+(or x864 x267 (not x1586))
+(or (not x1373) (not x1340))
+(or x659 (not x828) x1455 x1423 x447)
+(or x708 (not x690) (not x574))
+(or (not x244) x152 x1087)
+(or x282 (not x1067))
+(or (not x82) (not x1536) (not x758))
+(or x193 x452 x1491 x162 (not x1372))
+(or x52 (not x1320) x262)
+(or (not x1189) (not x179) x1244)
+(or x939 (not x495) (not x198))
+(or x897 (not x500) x191)
+(or (not x1458) (not x60))
+(or (not x709) (not x89) x773)
+(or (not x1185) x259 (not x153))
+(or (not x1462) (not x800) (not x1600))
+(or x1008 x1515 x1212 x1524 x1576)
+(or (not x1013) x1099 (not x1579))
+(or (not x611) x114 x1386 x1440 (not x827))
+(or (not x1240) (not x712) x227)
+(or x832 (not x951) (not x803))
+(or x1050 (not x542) (not x933))
+(or x199 (not x519) (not x1434) (not x1357) (not x1597))
+(or (not x544) (not x655) (not x1462))
+(or (not x854) (not x943))
+(or (not x72) (not x673) (not x1374))
+(or (not x1348) (not x220))
+(or (not x1230) x833)
+(or (not x952) (not x610))
+(or (not x1301) x1371 (not x919))
+(or x481 x1159 (not x28))
+(or x1435 x474)
+(or (not x942) (not x958) x443)
+(or (not x1610) (not x943) (not x1473))
+(or x202 (not x1027))
+(or (not x1451) (not x1014))
+(or x224 (not x765) x350)
+(or x95 x1595 x1487)
+(or x517 x763 x838)
+(or x1420 (not x1546) (not x1092))
+(or (not x179) x732 (not x1328))
+(or (not x1535) (not x1003) (not x1082))
+(or x656 x372 x1404 x1142 (not x1307))
+(or x4 (not x1347))
+(or (not x1305) (not x565) x567)
+(or (not x847) (not x173) (not x1339))
+(or x546 x1106 x627)
+(or x1462 (not x1402))
+(or (not x278) (not x516) x965)
+(or x912 x642)
+(or (not x948) x925 (not x37) x1062 x1140)
+(or x659 x1455 x1423 (not x828) (not x1022))
+(or x1094 x1151 (not x1152))
+(or x893 x227 x268)
+(or (not x881) (not x1180) (not x471))
+(or x842 x1142 (not x1195))
+(or x1149 (not x1146))
+(or x1589 (not x498) (not x824))
+(or (not x103) (not x1273))
+(or (not x219) x718 (not x620))
+(or (not x1519) (not x814) x1350 x1500 x271)
+(or (not x252) x1334 (not x689))
+(or x368 (not x532) (not x301) (not x431) x1016)
+(or (not x903) (not x52) x1609)
+(or (not x1293) x1379 x273 x936 (not x895))
+(or x578 (not x179) x201)
+(or x232 x505 x1028)
+(or x784 x1419 (not x887) (not x864) (not x403))
+(or (not x1385) (not x1496))
+(or x542 (not x912) (not x1260) x312 (not x1308))
+(or x577 x3 x819)
+(or x1603 x293)
+(or x304 (not x681) (not x570) (not x375) x449)
+(or (not x1173) (not x567))
+(or (not x919) x597 x1371)
+(or x1260 (not x164) x642)
+(or (not x835) x651 x517 (not x334) x838)
+(or x233 x741)
+(or (not x387) (not x256) x43)
+(or x1001 (not x349) x1280)
+(or x453 (not x854) (not x1210))
+(or (not x89) x990 (not x1463))
+(or (not x733) (not x92) x223)
+(or (not x542) (not x248) x912)
+(or x185 (not x1590) (not x145))
+(or (not x718) (not x570) x1008)
+(or x1013 (not x373) x787)
+(or x218 (not x4) x1294)
+(or (not x933) (not x1547))
+(or x467 (not x792) x801)
+(or x259 (not x1185) (not x445))
+(or x413 (not x1172))
+(or (not x357) (not x974) x213)
+(or (not x965) (not x1584))
+(or x59 (not x634) (not x7))
+(or x494 (not x60) x591)
+(or x981 x1163 x54)
+(or x460 (not x99) (not x1302))
+(or x485 (not x751) (not x77))
+(or x703 x62 (not x196) (not x316) (not x700))
+(or (not x758) (not x644) (not x1536))
+(or (not x828) (not x447) (not x659))
+(or (not x958) (not x898))
+(or (not x477) x153)
+(or (not x410) x1126 x850)
+(or (not x1442) (not x1425))
+(or x235 x215 (not x647))
+(or (not x1135) x842 (not x500))
+(or (not x1131) (not x185) (not x487) x171 (not x145))
+(or (not x549) (not x1576) (not x938))
+(or x832 x951 x803)
+(or (not x61) (not x548) x1575)
+(or x1487 (not x503) (not x49) x740 (not x275))
+(or (not x1295) x1179)
+(or x144 x254 (not x169))
+(or x981 (not x3) (not x550))
+(or (not x206) x1069 (not x863))
+(or (not x861) x249)
+(or x151 x898)
+(or (not x1524) x669)
+(or (not x13) x530 x575 (not x1343) x890)
+(or x380 (not x744))
+(or x814 x188)
+(or x1229 (not x1315) (not x1290))
+(or x378 (not x325) (not x471))
+(or x76 (not x1286) x129)
+(or x764 (not x747) (not x843))
+(or x1083 (not x853) (not x1336))
+(or (not x505) x232 (not x1073) x399 (not x1028))
+(or (not x814) (not x311) (not x1279))
+(or (not x585) x519 (not x1357))
+(or (not x1235) x1413 (not x327))
+(or (not x373) (not x691) x539 x1043 (not x1027))
+(or (not x1193) x951 (not x848))
+(or (not x1333) (not x69) x539)
+(or (not x1479) (not x616) (not x302) x1533 (not x1277))
+(or x463 (not x502) x840 x1079 (not x289))
+(or x1553 x3)
+(or x571 (not x1042) x740)
+(or (not x1068) (not x981) x3)
+(or (not x862) x826)
+(or x1260 x912 (not x84) x542 x1308)
+(or x855 x1348 x354 (not x1607) (not x1061))
+(or x401 x803 x951)
+(or (not x809) (not x1317) x1167)
+(or (not x94) (not x690) x675)
+(or (not x373) (not x236) x899 (not x603) x539)
+(or x1562 x872 x789 x1153 (not x451))
+(or x1478 x1289 (not x535))
+(or (not x1078) (not x554) (not x1422))
+(or (not x412) x651)
+(or x921 x119)
+(or x464 (not x223) (not x701))
+(or x1604 x1527 (not x979) (not x158) x307)
+(or (not x168) (not x516) x709)
+(or x1126 (not x530))
+(or x659 (not x764) (not x1361))
+(or x1233 (not x1340) (not x879))
+(or x1547 (not x518) x800 (not x1462) x1600)
+(or x1559 (not x1235) x1413)
+(or x1597 (not x1053))
+(or (not x1041) x952 x816 x1428 x53)
+(or x340 (not x1394) (not x953))
+(or x1065 (not x480) (not x1408))
+(or x1457 (not x133))
+(or x466 x1432 (not x766))
+(or x705 x824 (not x521))
+(or (not x195) (not x1198) (not x1581))
+(or x1161 x38 x1107)
+(or (not x882) (not x553) (not x616) (not x626) (not x657))
+(or x1411 x1296 (not x683))
+(or (not x17) (not x1068) x351)
+(or x786 x922 x1295)
+(or (not x943) x1473 x1610 (not x842) (not x927))
+(or (not x1201) x1430)
+(or x649 (not x819) x1390)
+(or (not x904) x1059)
+(or x299 x490 x926)
+(or (not x927) x374 x1307)
+(or x918 x14)
+(or (not x366) x1149 (not x202))
+(or x1522 x437 x826)
+(or x1052 (not x289) (not x840) (not x348) (not x538))
+(or (not x942) (not x32))
+(or x1201 (not x744) x1276)
+(or (not x485) (not x1456))
+(or x1317 x1529 x1226 (not x916) (not x512))
+(or x474 x792 (not x1178))
+(or x539 x787 x373)
+(or (not x1572) x1007)
+(or x312 x29 (not x1084) (not x867) (not x248))
+(or (not x722) (not x1524))
+(or (not x523) (not x709) (not x965) (not x516) (not x1591))
+(or x904 (not x104) (not x837) x1260 (not x273))
+(or (not x525) x656 x798)
+(or (not x170) (not x413) (not x1329) (not x1378) (not x1143))
+(or x542 x1308 (not x1468))
+(or (not x1096) (not x1001) x349 (not x881) (not x471))
+(or (not x1160) (not x410) x1126)
+(or (not x45) (not x794) (not x501) x650 (not x1397))
+(or (not x767) (not x783) (not x716))
+(or x591 (not x332))
+(or x268 x1361 x108)
+(or x1536 (not x82) x758)
+(or x1576 (not x1515) (not x294))
+(or x1141 (not x1303) (not x339))
+(or (not x54) x1317 (not x1388) (not x512) x1368)
+(or (not x294) x1515 (not x1365))
+(or x687 x1162)
+(or x224 x1516)
+(or (not x1551) (not x675) (not x857) x289 x840)
+(or x787 x373 (not x1013))
+(or (not x578) x1244 (not x1155) (not x179) x234)
+(or x1130 (not x364))
+(or (not x322) x475 x1104)
+(or (not x510) x375 (not x525))
+(or (not x675) x1073 x695)
+(or (not x1287) (not x614) (not x1384))
+(or (not x290) (not x1356) (not x778))
+(or (not x3) x981 x1020)
+(or x280 x575)
+(or (not x279) x1584 (not x424))
+(or (not x1216) x1289 (not x1478) x892 (not x95))
+(or (not x709) x516 x1261)
+(or (not x74) x232)
+(or (not x599) (not x517))
+(or (not x4) x517 x334 x1587 x1005)
+(or x1246 x1298 x569)
+(or x814 x1350 x985)
+(or (not x169) x1563 (not x357))
+(or (not x251) (not x510) (not x238) x12 (not x1275))
+(or x90 x935 x1505)
+(or (not x660) (not x378) (not x1047))
+(or x834 (not x933) (not x48))
+(or x827 x1386 (not x1440) (not x114) x658)
+(or (not x1535) x507)
+(or x1556 (not x579) x1316)
+(or (not x1551) (not x1157) x1592)
+(or (not x394) (not x1175) (not x108))
+(or x1227 (not x293) x851)
+(or x1526 x709 (not x516))
+(or x814 (not x403) x326)
+(or x397 (not x965) x516)
+(or (not x992) x838 (not x1318))
+(or x1045 x682)
+(or (not x900) x668 x994 (not x1036) (not x568))
+(or (not x290) (not x538) x88)
+(or x1564 (not x1063) (not x1093))
+(or x929 x582)
+(or (not x538) x730 (not x1052))
+(or (not x194) x107 (not x1349))
+(or x1149 x366 x202)
+(or x1454 (not x126) (not x1492))
+(or x285 x408 x1035)
+(or (not x293) (not x671) (not x1027))
+(or x828 x1423 (not x447))
+(or x1391 (not x1609) x52)
+(or x1050 (not x1355))
+(or x1021 x510 x1275 (not x375) (not x525))
+(or (not x546) (not x337))
+(or x373 x598 x1013 (not x539) x1111)
+(or (not x140) (not x170) (not x413) (not x1329) (not x1143))
+(or x199 (not x1434) x1357 x585 x519)
+(or (not x1010) x1371 (not x919) (not x462) (not x592))
+(or x827 (not x658) x114)
+(or x1015 (not x146))
+(or x334 (not x555) (not x517))
+(or (not x1144) (not x29))
+(or x933 (not x48) (not x1050) x1355 (not x811))
+(or x943 (not x999) x1473)
+(or (not x113) x898 (not x1103))
+(or (not x572) x789 x499 (not x684) x559)
+(or x221 x462 (not x1010))
+(or x37 x1062 (not x925) x1140 (not x948))
+(or (not x953) x203)
+(or x1311 (not x1201) x1502)
+(or (not x943) x1021 (not x525) x1473 x999)
+(or (not x1427) x1383 (not x504))
+(or x765 (not x434) (not x1606) x224 (not x686))
+(or x346 (not x1306) x931 x272 (not x1332))
+(or (not x287) x353)
+(or x1386 (not x251))
+(or x1350 x664 (not x1418) (not x814) x1207)
+(or x1129 x1548 x274)
+(or x885 (not x737) (not x1151))
+(or (not x336) x576)
+(or (not x297) (not x405) (not x1519))
+(or x709 x523)
+(or x1295 (not x441))
+(or x662 x428 (not x68) (not x776) x654)
+(or x970 x1277 (not x544))
+(or x937 (not x230))
+(or x1350 x422 (not x814) x435 x1349)
+(or x285 (not x1035) (not x408))
+(or (not x1350) (not x403) (not x814))
+(or x823 x1279 x196)
+(or (not x1191) x792)
+(or (not x370) x814)
+(or (not x565) (not x1342) (not x423) (not x567) x1171)
+(or (not x379) x56 (not x366))
+(or (not x78) (not x980) (not x799))
+(or (not x951) (not x1217) x1509)
+(or (not x1211) x603 (not x1407) x236 x918)
+(or (not x975) (not x648) (not x436) x447 (not x786))
+(or x228 (not x878) x1001)
+(or x813 (not x806) x396)
+(or x1366 (not x48) (not x1119))
+(or (not x629) x1392 x947 x1337 x245)
+(or (not x472) (not x546) (not x573))
+(or x758 x786 (not x1252) (not x1536) (not x415))
+(or x1372 (not x1150))
+(or x842 x1386)
+(or x1221 x1100 (not x1497) (not x1099) (not x360))
+(or x231 (not x390) x609 (not x1104) (not x320))
+(or x1236 x698 x1019)
+(or x89 x990 x608 (not x736) x1463)
+(or (not x1010) (not x1318) x1087)
+(or x333 x794 (not x543) x438 (not x433))
+(or (not x290) (not x1520) x1356 x778 (not x695))
+(or x1275 x510 (not x251) (not x954) x238)
+(or x10 (not x1264) x749 (not x781) (not x87))
+(or (not x783) (not x1606) x496 x224 x1361)
+(or x443 x1358 x125)
+(or (not x534) x1591 x224)
+(or (not x267) x864 x192)
+(or (not x720) (not x523) (not x897) (not x1526) x584)
+(or x961 (not x672) (not x1173))
+(or x636 x101 (not x46))
+(or (not x447) (not x1455))
+(or (not x1217) (not x832) (not x377) (not x803) x951)
+(or (not x1121) (not x963))
+(or (not x105) (not x1467) (not x363) (not x295) (not x152))
+(or (not x1085) x843 (not x621) (not x819) (not x3))
+(or (not x513) x1067 x661 (not x282) (not x276))
+(or x1089 x1112 (not x14) (not x1211) x628)
+(or x132 (not x588) x1609)
+(or (not x1127) x57)
+(or x1451 x525)
+(or (not x1182) (not x1010) x1560 x462 (not x780))
+(or (not x151) (not x1103) (not x812))
+(or (not x1401) (not x314) x564)
+(or x209 (not x1329) x1028)
+(or x1251 (not x1574))
+(or x399 (not x232) x74 (not x293) x874)
+(or x618 (not x192))
+(or (not x1272) x26)
+(or x525 (not x279) x1142)
+(or x685 (not x980) x369)
+(or (not x1285) x1085 (not x819))
+(or x1296 x927 x1586)
+(or (not x660) x325 x471 (not x881) x378)
+(or x1296 x496 x683 (not x1411) (not x486))
+(or (not x737) x1405 x1151 (not x525) x1021)
+(or x842 (not x737) x872)
+(or (not x1092) x1546 (not x1420))
+(or x981 x346)
+(or x196 (not x1184))
+(or (not x780) (not x1341) (not x1182) (not x4) (not x913))
+(or x1111 x360)
+(or (not x328) (not x769))
+(or x365 x738 x60)
+(or (not x753) x1070)
+(or x786 x1252 x1527 (not x1515) (not x1576))
+(or (not x427) x1133 x766)
+(or x1454 (not x47) (not x1012))
+(or (not x1023) x189 (not x443) x395 (not x958))
+(or (not x1307) x1142 (not x1421) x372 x656)
+(or x956 x1105 x1150 (not x1012) x1072)
+(or x192 x510 (not x57) (not x1094) x1275)
+(or (not x664) (not x1596) (not x1603))
+(or (not x539) x373 x1183 x607 (not x889))
+(or x379 (not x612))
+(or (not x1094) x823 x372)
+(or x1361 (not x268) x783 x584 x893)
+(or x715 x1564)
+(or x364 x1417 (not x1291))
+(or (not x386) (not x547))
+(or (not x182) x944 x1229 (not x220) (not x865))
+(or (not x179) (not x961) (not x1147) (not x1244) (not x672))
+(or (not x174) x935)
+(or x1161 x442 x159)
+(or x819 x1085 x843 (not x949) (not x3))
+(or (not x63) (not x201) x1129 (not x200) (not x914))
+(or (not x943) x525 (not x999))
+(or x1050 x1126 (not x280))
+(or x612 x1294 x1052 (not x559) (not x538))
+(or x1190 (not x104) x895)
+(or x472 x638 x546 (not x1360) (not x573))
+(or x393 x208 x128)
+(or x517 (not x361))
+(or x881 (not x711) x471)
+(or (not x1350) x403 (not x157) x814 (not x326))
+(or (not x1267) x1196 (not x1418) x1234 x197)
+(or x373 x161 x236 x539 x603)
+(or (not x1454) (not x1492) x126)
+(or x819 (not x3) x843 (not x621) x1085)
+(or x718 (not x963) (not x1090))
+(or x1324 (not x341) x944)
+(or (not x1176) (not x1479) x1533 x539 x373)
+(or (not x180) (not x373) x539 x1266 x1190)
+(or x1244 x1116 (not x743))
+(or (not x660) x378 (not x881) x471 x402)
+(or x100 x945 x767)
+(or (not x251) x238 x510 x1275 (not x1026))
+(or x977 (not x386) x537)
+(or (not x280) (not x1232))
+(or x1586 x1094 (not x1433))
+(or (not x253) (not x1154) x1531)
+(or (not x540) (not x819) x1390)
+(or (not x817) x770 (not x650))
+(or x121 (not x151))
+(or (not x901) x605 x679)
+(or (not x659) (not x1481))
+(or (not x1364) (not x462))
+(or x1146 (not x1149) x919 (not x1371) (not x56))
+(or x340 (not x203) (not x105) x953 x1394)
+(or x923 x844 (not x1122))
+(or (not x1576) x1515 (not x1527))
+(or (not x1350) x880 (not x814) x339 x921)
+(or (not x142) x1514 (not x911))
+(or (not x473) x304 x1384 x992 (not x1287))
+(or (not x487) x145 (not x171) x1590 x185)
+(or (not x322) (not x370) x231 (not x1469) (not x475))
+(or x631 (not x1253) x1416)
+(or x108 (not x783) x1361)
+(or x803 x383)
+(or x178 (not x7))
+(or (not x889) (not x919))
+(or (not x1054) (not x1361) x783)
+(or (not x169) x1245 (not x1563))
+(or (not x332) x939 x495)
+(or (not x1153) (not x927) x1151 (not x737) (not x842))
+(or x1143 x1378)
+(or (not x890) x280 x13)
+(or (not x661) (not x772))
+(or (not x527) (not x532))
+(or (not x315) (not x740))
+(or (not x607) (not x539) x889)
+(or (not x1056) x675 (not x690))
+(or (not x1428) x432 (not x819) x622 x3)
+(or x842 (not x519))
+(or (not x1222) (not x711))
+(or x234 x914 (not x1244))
+(or (not x1536) x1365 x938 (not x758) (not x1562))
+(or x538 (not x778))
+(or x1379 x1598 (not x1293) (not x180) (not x1190))
+(or (not x16) (not x181) x1345)
+(or (not x814) x119 (not x880))
+(or x399 (not x505) (not x232) (not x1073) x1028)
+(or x862 (not x805))
+(or x441 x922 (not x786) (not x1295) (not x1252))
+(or (not x821) (not x148))
+(or (not x545) x230 (not x264))
+(or (not x716) x767 x783)
+(or x1131 x185 x171)
+(or (not x1004) x151)
+(or (not x1238) x516 (not x1017) (not x709) (not x773))
+(or x80 (not x1510) x103 x972 x240)
+(or (not x1548) (not x1366))
+(or x3 x649)
+(or (not x938) x620 x199 x718 x1365)
+(or x1535 (not x1082) (not x94) (not x561) (not x167))
+(or x292 x696 (not x1352))
+(or x889 x607 x539 x1183 x373)
+(or x323 x1605 (not x575) (not x937) (not x723))
+(or x359 x1152 (not x461) (not x380) x1453)
+(or x1 (not x959) x592)
+(or x1151 (not x1271) (not x531))
+(or (not x1261) x716 (not x497))
+(or x1470 (not x1052) (not x538))
+(or x330 (not x1404) (not x1442))
+(or (not x659) x560)
+(or x247 x372 (not x1094))
+(or (not x1251) x276 (not x515) x661 x772)
+(or x394 (not x1175) x108)
+(or x951 x1422 x1426)
+(or x817 (not x982) x710)
+(or (not x1052) x280 (not x1253))
+(or (not x1547) (not x655) (not x1600))
+(or x72 (not x1538) x1293 (not x409) (not x976))
+(or x637 (not x124) (not x301) (not x1318) (not x419))
+(or x939 x332 (not x495))
+(or x288 (not x894) (not x294))
+(or (not x1171) (not x1173) x594)
+(or x1200 x1567)
+(or (not x1611) x1308 x1468 (not x542) x1366)
+(or (not x1369) x384 x1438)
+(or (not x769) x140 (not x984))
+(or x539 x373 (not x338))
+(or x650 x257 (not x1116) x732 (not x1397))
+(or x1611 (not x201) x1483)
+(or (not x800) (not x1547))
+(or x41 (not x299) (not x1074))
+(or x1563 (not x144))
+(or (not x1129) x63 (not x201))
+(or (not x399) x857)
+(or (not x179) (not x1568) (not x961) (not x672) (not x1244))
+(or x461 x814 x1350)
+(or (not x1350) x814 (not x628) (not x311) x1279)
+(or x1329 (not x991) x170 (not x290) x778)
+(or (not x1245) x1594 x169 (not x357) (not x1563))
+(or (not x1221) x1111 (not x1013))
+(or (not x280) x1101)
+(or (not x260) x1210 (not x28) (not x186) x11)
+(or x549 (not x294) x894 x1482 (not x488))
+(or (not x5) x1271 (not x737) (not x885) x1151)
+(or x147 x1388)
+(or x749 x672 (not x961))
+(or (not x623) x297 (not x1500))
+(or (not x803) x1217 (not x1509) (not x951) (not x377))
+(or x956 x193 x1456 x1072 (not x1310))
+(or (not x1158) x401)
+(or (not x179) (not x961) x594 (not x672) (not x1244))
+(or x1612 (not x497))
+(or (not x80) (not x103))
+(or (not x685) x526 x640 (not x876) x364)
+(or x323 x383)
+(or (not x1091) (not x1323) (not x1162) (not x309) x307)
+(or (not x1190) x180 (not x1598))
+(or (not x889) x623)
+(or (not x1377) (not x1308) (not x542))
+(or (not x172) x1019 (not x698) (not x1236) (not x930))
+(or (not x542) x164 (not x867))
+(or x1515 (not x1148) x1306 x1576 x963)
+(or (not x210) x1117)
+(or (not x1172) (not x1143) (not x462))
+(or (not x157) x1419 (not x1350))
+(or x1330 (not x669) (not x1444))
+(or x229 x1556 x332 x1506 (not x1077))
+(or x349 x1103 (not x1363))
+(or x1516 (not x374) (not x438))
+(or x48 (not x1564) x530 x280 (not x811))
+(or (not x154) (not x1519) (not x1350))
+(or x521 (not x824) x705)
+(or x797 x1001 (not x23))
+(or (not x922) x1365 x441 x114 (not x938))
+(or (not x1561) (not x938) (not x516))
+(or (not x965) x742 x1591)
+(or x1021 x279 x525 x1307 (not x1142))
+(or x637 (not x368) (not x1402))
+(or (not x1457) (not x596) (not x865) x298 x133)
+(or x1574 (not x743) x1479)
+(or (not x1082) (not x167) x1565)
+(or x803 (not x554))
+(or (not x1130) (not x19) (not x891))
+(or x692 (not x907) x198)
+(or x1415 (not x725) x521 (not x345) (not x545) x226 x541 x342 x1123 (not x1078) (not x212) x1346 x1218 (not x1035) (not x1197) (not x1493) x829 x319 x804 (not x782) (not x1206) x1138 (not x300) (not x1484) x1339 x940 (not x362) (not x1220) (not x593) (not x352) x1309 x470 (not x97) (not x504) x768 (not x468) x801 (not x391) x563 x426 (not x751) x852 x20 (not x1492) (not x1233) (not x1571) x98 (not x115) x388 x492 x1549 (not x1588))
+(or (not x538) x1530 (not x1052))
+(or (not x690) (not x135))
+(or x54 x223 (not x44))
+(or (not x1024) (not x520) x146 x1326 (not x571))
+(or (not x1229) x220 (not x182) (not x298) (not x944))
+(or x117 (not x525) (not x251))
+(or (not x1085) (not x1604))
+(or x516 (not x965) (not x394))
+(or x933 (not x867) (not x1144))
+(or x60 (not x365) x1458)
+(or (not x1437) x132 x1609)
+(or x743 (not x1328) (not x1316) (not x1479) x1574)
+(or (not x16) (not x1144))
+(or (not x838) x334 x208 (not x651) x517)
+(or (not x1361) x1097)
+(or (not x773) (not x709) (not x1320) x1017 (not x516))
+(or (not x965) x1516 (not x1606))
+(or x270 x365 (not x110))
+(or (not x1034) x1572 (not x284) (not x1439) x221)
+(or x1505 (not x141) (not x1218))
+(or x504 (not x1427) (not x1383))
+(or (not x650) (not x257))
+(or x803 (not x604) x711)
+(or x1550 x1008 (not x1524) x1515 (not x1576))
+(or x48 (not x1129) x811)
+(or x545 x230 x264)
+(or (not x1235) x48 x811)
+(or (not x907) x110 (not x332) x796 (not x1370))
+(or (not x1466) (not x1022) x1361 (not x1561) x783)
+(or x1396 x645 (not x1432))
+(or x462 (not x1392) (not x1010))
+(or x406 x914)
+(or (not x238) (not x1094) (not x825) x251 x192)
+(or (not x192) x1303 (not x1094))
+(or (not x1167) x1464)
+(or x1211 (not x14) (not x311))
+(or (not x624) (not x955) x130)
+(or (not x293) (not x1596) x1027 (not x874) x1043)
+(or x1368 x243 (not x797) (not x378) x660)
+(or x1010 (not x413) (not x1143) x462 x1172)
+(or x614 (not x992) (not x651) (not x419) (not x838))
+(or x650 x1061 x1397)
+(or (not x1485) x791)
+(or (not x425) (not x1243) x839)
+(or (not x486) x842 (not x1586) (not x267) (not x927))
+(or x189 x1023 x958)
+(or x1175 (not x491) x1200)
+(or (not x1280) (not x336) (not x92) (not x1300) x702)
+(or (not x343) (not x1545))
+(or (not x661) (not x282) x860)
+(or (not x1167) (not x471))
+(or x1472 x1480 x76)
+(or x1542 (not x72))
+(or (not x966) (not x439) (not x405) (not x1183) x889)
+(or (not x935) x1505 x90)
+(or (not x762) (not x672) x961)
+(or (not x73) (not x246) x1534)
+(or (not x8) x1045 x241)
+(or (not x854) (not x1473) (not x267))
+(or (not x1226) (not x122))
+(or x1001 x383)
+(or x753 x211 x1449)
+(or x3 x1157 (not x819) x622 x432)
+(or (not x947) x417)
+(or x568 (not x994))
+(or (not x1395) (not x480))
+(or (not x946) x416)
+(or x591 x907 (not x796))
+(or (not x156) (not x421) (not x249))
+(or (not x62) x700)
+(or x1606 (not x1584))
+(or x208 (not x1011) x393)
+(or x842 x668)
+(or (not x251) x825)
+(or x14 (not x1407) (not x236))
+(or x522 x315 x166)
+(or x1289 (not x892) x1478)
+(or x1116 x1574)
+(or x471 x881 x660 x1167 (not x378))
+(or x1186 x393)
+(or (not x1378) (not x1410))
+(or (not x1278) (not x1246) (not x569) x531 (not x1009))
+(or (not x948) (not x925) x1374)
+(or x502 x1387 x650)
+(or x1587 (not x517) x780)
+(or (not x1318) (not x419) x1016)
+(or (not x998) (not x1214) x508)
+(or (not x1535) (not x167) x1082 x1003 x94)
+(or x844 (not x131))
+(or x58 x1289 (not x318))
+(or (not x96) (not x1094) x1142 (not x1307) x192)
+(or x1543 (not x1259) (not x1552) x1452 x1476)
+(or x645 (not x1537))
+(or (not x529) (not x982) (not x82))
+(or (not x604) (not x1578) (not x1222))
+(or x720 x1526 x242)
+(or x1046 x326 (not x646) (not x1115) (not x478))
+(or x180 x1190 x373 (not x440) (not x539))
+(or x1189 (not x914) (not x1013))
+(or x1263 x757 (not x308) x1145 (not x1537))
+(or x600 x378 x660)
+(or (not x814) x138 x1608)
+(or (not x192) (not x1094) x1083 x238 (not x251))
+(or (not x555) x414 (not x746) (not x1539) (not x354))
+(or (not x1001) (not x677) (not x349) (not x1280) x698)
+(or (not x1196) (not x1094) (not x737) x1151 x192)
+(or (not x2) (not x870) (not x1289) (not x318) (not x58))
+(or (not x927) x519 x510 x1275 (not x842))
+(or x1595 x155 x95)
+(or (not x881) (not x349) (not x625))
+(or x135 x1496 x373 x539 x1385)
+(or x1164 (not x1566) (not x634) x615 x493)
+(or x937 x1139)
+(or x1479 x539 x1202 (not x1533) (not x373))
+(or x618 (not x295))
+(or (not x443) (not x121) (not x264))
+(or x1260 x164 (not x1086) x1573 (not x912))
+(or x823 x1184 (not x1382) (not x1279) (not x196))
+(or (not x731) (not x243) x660)
+(or (not x120) (not x331) (not x1228))
+(or (not x1163) x223 (not x1361))
+(or x353 x785)
+(or (not x1398) (not x778))
+(or (not x1052) (not x538) (not x472))
+(or (not x1028) x538)
+(or x1021 x1300)
+(or (not x990) (not x767))
+(or (not x982) x621 (not x529))
+(or x642 x1554 (not x1086))
+(or x1148 (not x351) x758)
+(or x989 (not x223))
+(or x498 (not x1213) x1025 (not x176) (not x580))
+(or (not x1355) (not x1413) x1559 (not x327) x1235)
+(or (not x91) x625)
+(or x855 (not x220) (not x944))
+(or (not x1396) (not x645) x766 (not x1432) (not x910))
+(or x1275 x1030 x251)
+(or (not x1337) x283 x539)
+(or x747 x902)
+(or x179 x672 x961 (not x1244) (not x1568))
+(or x1508 (not x975) (not x100))
+(or x538 (not x1294) x1052)
+(or x217 (not x778))
+(or x517 (not x651) x334 (not x838) (not x1011))
+(or (not x1094) x1307 (not x1142) (not x1532) (not x192))
+(or (not x931) (not x346) x272)
+(or x1288 x566 x1518)
+(or x679 (not x1361) x783)
+(or x501 (not x1399))
+(or x1276 (not x1292))
+(or x1381 x814 x305)
+(or (not x743) (not x282) (not x537) x1574 x513)
+(or (not x843) (not x511) (not x3))
+(or x597 x976 x780)
+(or x843 x949 x3)
+(or (not x982) x529 x82)
+(or x1341 x334 x1005)
+(or (not x740) (not x868))
+(or x772 (not x386) x590 (not x1506) x204)
+(or (not x1399) x1055)
+(or (not x727) x1511 x665 (not x704) x1498)
+(or x740 (not x714) x971)
+(or x1041 (not x53))
+(or (not x43) (not x387) x410)
+(or (not x737) x5 x885)
+(or (not x1396) x416)
+(or x344 (not x821) x1314 x1444 x589)
+(or x1445 (not x349) x951 (not x803) (not x1001))
+(or x1502 x1311 (not x1292) (not x704) x1430)
+(or x187 (not x310) x533 x361 (not x1457))
+(or (not x66) x1490)
+(or x397 x1605 (not x1270))
+(or (not x1545) x160)
+(or (not x738) (not x365))
+(or (not x533) x830 (not x160))
+(or (not x1066) (not x656))
+(or x425 (not x318) x822)
+(or x1611 (not x811) (not x48))
+(or (not x258) x1337 x283 x373 (not x539))
+(or x195 x1598 x1198 x909 (not x1581))
+(or x1161 x108)
+(or (not x599) x651 (not x838))
+(or x1348 x1539 (not x855))
+(or (not x1401) x96 x564)
+(or x814 (not x1302) x237 (not x1006) (not x1350))
+(or (not x10) x335)
+(or x1182 x1538)
+(or (not x539) (not x1439) x495)
+(or (not x995) (not x1381))
+(or x34 (not x90) x1069 x536 x960)
+(or (not x1210) x11 x28 x1406 x186)
+(or x356 x96 (not x564) x1401 (not x314))
+(or (not x329) x1406 x275)
+(or (not x981) x989 (not x1163) x54 (not x147))
+(or (not x1282) (not x1577) x2)
+(or x574 x690 (not x1380) x1056 x675)
+(or (not x1413) (not x1331) (not x1040))
+(or x1573 x912 (not x164) x1260 (not x1086))
+(or (not x395) x189 x958 x443 x942)
+(or x305 x814 x1350)
+(or x100 x716 (not x1361) x783 (not x767))
+(or (not x32) x651 x129 x178 x838)
+(or (not x485) (not x1477) (not x47))
+(or x1169 (not x1385) x338 x1389 (not x389))
+(or (not x280) x1343 x890 (not x575) x13)
+(or x802 x455 (not x209))
+(or (not x1244) x179 (not x743))
+(or (not x1342) x565 (not x635))
+(or x534 x1516 x1195 x438 x374)
+(or (not x837) x895 x936)
+(or (not x1595) (not x155) x95)
+(or x1142 (not x481) x1307)
+(or (not x372) (not x1404))
+(or (not x361) (not x793))
+(or x513 (not x1499) x48)
+(or x1025 (not x788) x959 (not x1544) (not x1108))
+(or (not x1567) x676 (not x803) (not x1200) x951)
+(or (not x1301) x1149 (not x919))
+(or (not x1322) (not x1513))
+(or x461 (not x1350) (not x814))
+(or x557 x839 x1298)
+(or (not x1444) x589 (not x88) (not x344) (not x1314))
+(or x335 x749 x1247)
+(or x3 x158)
+(or (not x1146) x1273 x65)
+(or x1494 x1424)
+(or x854 (not x453) (not x1210))
+(or (not x1288) x1518 x313 (not x877) (not x1387))
+(or (not x1023) (not x32) (not x890))
+(or x430 x898 x1555 x958 x812)
+(or x223 x701 (not x1465))
+(or (not x28) (not x1159) (not x481))
+(or (not x192) (not x267) (not x1094) (not x864) (not x1586))
+(or (not x6) x1594 (not x1335))
+(or (not x1012) (not x162))
+(or x593 x1095 x1230)
+(or x293 (not x1140) (not x150))
+(or (not x273) (not x936))
+(or x396 x373 x164)
+(or (not x142) x1400 x911)
+(or x440 (not x180))
+(or x1542 x1374 x409)
+(or x463 (not x202) x289)
+(or x30 (not x1204) (not x303))
+(or x125 x1508 (not x443) (not x1358) x184)
+(or (not x1129) (not x1333))
+(or x871 x1342 x111)
+(or x1356 (not x1168) x265)
+(or x353 x209 x74)
+(or (not x267) x1583 x943 (not x1586) x1473)
+(or x1001 (not x349) (not x524))
+(or x1271 x1151 (not x1278) (not x737) (not x5))
+(or x434 (not x1606) (not x1181))
+(or (not x459) (not x1000))
+(or (not x140) x769 (not x460))
+(or (not x1130) x1354 x514 x19 (not x526))
+(or x325 x924)
+(or (not x499) x559 x789 (not x572) x684)
+(or (not x749) (not x794) x45 x961 x672)
+(or (not x951) (not x1158) (not x803) (not x964) x879)
+(or x1455 (not x560) (not x268))
+(or (not x463) (not x877) x1397)
+(or (not x651) x838 (not x599))
+(or x471 (not x1180) x881)
+(or x1135 (not x848) x242 x897 x191)
+(or x1021 x372 x712)
+(or x656 x372 (not x1425) x1142 (not x1307))
+(or x1413 x1331 (not x844) (not x1040) (not x506))
+(or x964 (not x879))
+(or (not x1361) (not x1481))
+(or (not x1098) x1429 (not x1057))
+(or x284 x1034 x1572)
+(or x1545 x343 (not x830))
+(or (not x1013) (not x1221) x1031)
+(or (not x944) (not x341) (not x1324))
+(or x632 x506 (not x1413) (not x844) (not x1040))
+(or x140 (not x170) x1329)
+(or (not x1396) x1133 (not x427))
+(or x100 x1361 (not x783) x767 x1612)
+(or (not x1496) (not x232) x399)
+(or x1461 x346)
+(or (not x1502) x840 (not x530))
+(or x1005 (not x1607) x1397)
+(or x1094 (not x68) x819)
+(or x299 x41 (not x1313) (not x1363) x1074)
+(or x573 x472 (not x546))
+(or x396 (not x1049))
+(or (not x297) x405 x1194 (not x623) x1500)
+(or x1189 (not x528) x437)
+(or x1434 x1275 (not x510))
+(or (not x289) x134 x840)
+(or x683 (not x1361) (not x1606))
+(or x1142 (not x1307) (not x1532) (not x1094) x192)
+(or (not x1000) (not x456) (not x512))
+(or x819 (not x1471) (not x755) x1390 (not x3))
+(or (not x464) x1121 (not x648) (not x975) x963)
+(or x1213 (not x498))
+(or x884 x929 (not x75))
+(or (not x192) (not x943) (not x322))
+(or (not x46) (not x101) (not x636))
+(or (not x1555) x349 x951)
+(or (not x390) x818 (not x1059) x1266 x440)
+(or (not x471) (not x881) (not x1450))
+(or x513 (not x603) x282)
+(or (not x322) x1094)
+(or (not x293) (not x1088) (not x399) (not x874) (not x232))
+(or x840 (not x472))
+(or (not x679) (not x483) (not x601))
+(or x992 x419)
+(or x1407 x800)
+(or (not x975) x648 (not x786) x436 x447)
+(or (not x509) (not x510) x1275)
+(or x783 (not x608) x767)
+(or (not x904) x1190)
+(or (not x1407) (not x603) x1112 x236 (not x918))
+(or (not x1239) (not x1136) x175 (not x721) (not x507))
+(or (not x1481) x783 (not x1455))
+(or (not x1244) x1122 x961)
+(or x1184 (not x311))
+(or (not x1182) x976 (not x780))
+(or (not x510) (not x519))
+(or x1534 (not x1441) x130 x1209 x641)
+(or x986 (not x1284))
+(or (not x1302) x984)
+(or (not x1150) (not x1012) (not x1072) x680 (not x956))
+(or x3 (not x819) x981 (not x886) x272)
+(or (not x1103) (not x113) x812 x151 (not x779))
+(or (not x1420) (not x434))
+(or (not x1247) (not x10) x826 x1076 (not x749))
+(or (not x373) (not x607))
+(or x803 (not x783) x951 (not x1361) x1064)
+(or (not x500) (not x848))
+(or x1129 (not x200) x274)
+(or x1030 (not x251) (not x1275))
+(or x1327 (not x462) x1010)
+(or (not x224) x1036 (not x268))
+(or (not x385) x1446 x556)
+(or (not x297) x1183 (not x439))
+(or x1223 (not x885) x946 (not x1521) (not x416))
+(or (not x880) (not x939) x190)
+(or x1397 (not x1119) x694)
+(or (not x642) (not x1573) (not x912) (not x1260) (not x164))
+(or (not x977) x590 (not x537) (not x547) (not x1255))
+(or x484 (not x508) x462)
+(or x234 x1397 x650 (not x578) x888)
+(or x814 (not x339))
+(or (not x1452) (not x1442))
+(or x378 (not x660) (not x797) x1388 (not x243))
+(or x346 x886 x819)
+(or x927 (not x1440))
+(or (not x169) (not x1594))
+(or (not x1290) x706)
+(or x1224 x1433 (not x1120))
+(or (not x1444) x1405)
+(or (not x1535) (not x175) (not x539))
+(or x471 (not x625))
+(or x961 (not x672) x1101)
+(or (not x213) (not x732))
+(or x1275 (not x251) x510 (not x1030) x238)
+(or x893 x268 (not x659))
+(or x81 x1437 x52 x1609 x588)
+(or (not x68) (not x654) x776)
+(or (not x94) (not x1535) x561)
+(or x655 x513 (not x1547) x282 x1600)
+(or x1127 x64 (not x57) (not x1006) (not x1225))
+(or (not x823) (not x1279) x196)
+(or x1320 (not x1017))
+(or (not x610) (not x413) x334)
+(or x807 x1390)
+(or (not x364) (not x1291) (not x640))
+(or x284 x1439)
+(or (not x414) (not x555) x735)
+(or x340 (not x203) x398)
+(or (not x656) x330)
+(or (not x261) x1478)
+(or (not x933) x1050 (not x1600))
+(or x370 x1104)
+(or x809 (not x512) x1167 (not x402) x1317)
+(or (not x283) (not x258) x646)
+(or x522 x971 x315)
+(or (not x944) x1229 x831)
+(or x302 x616 (not x1479))
+(or (not x1560) (not x624) x1580 x955 (not x130))
+(or x387 x1187)
+(or x1010 (not x462) x221)
+(or x817 x200)
+(or (not x1021) x117)
+(or (not x1259) x1075)
+(or (not x385) (not x1010) x462)
+(or x242 (not x1526) (not x523))
+(or x364 x1325 x640)
+(or x25 x814)
+(or (not x377) x803 x832)
+(or x1060 x661 x1109 (not x1050) x933)
+(or (not x714) (not x868))
+(or (not x755) (not x1032) (not x648) (not x807) (not x975))
+(or (not x1426) (not x378) (not x797))
+(or (not x874) x1088 x399)
+(or x1134 x1509 x832)
+(or (not x1317) x747 x1047)
+(or (not x515) (not x743))
+(or (not x52) x1391 x1609)
+(or (not x744) x808 x1276)
+(or x1500 x1519 (not x1350) x154 (not x814))
+(or x659 (not x1455) x1423 x828 x436)
+(or x1436 (not x1197) (not x1523))
+(or x651 x419 (not x838))
+(or (not x1317) x916 x1529 x512 (not x1501))
+(or x229 (not x1077) (not x907))
+(or x127 (not x136) (not x342))
+(or x71 (not x974) (not x357))
+(or (not x1474) (not x24) (not x106))
+(or (not x538) x1052 x472 (not x289) (not x840))
+(or (not x616) x882 x657)
+(or x374 (not x1516) (not x438))
+(or x1351 (not x648) (not x432) (not x975) x44)
+(or x874 x1596 (not x293))
+(or x192 x1094 (not x3) (not x819) x662)
+(or x364 x685 (not x514))
+(or (not x1288) x1229 (not x944))
+(or (not x1016) (not x301) (not x107))
+(or (not x378) (not x660) (not x1368))
+(or (not x672) x1264 x45)
+(or x484 (not x1214))
+(or (not x1072) (not x1105))
+(or (not x35) x660)
+(or (not x922) x441 x1008 x722 x1524)
+(or x935 x1069)
+(or (not x662) x819)
+(or (not x881) (not x941) (not x349))
+(or x460 x99 (not x984) (not x328) (not x237))
+(or (not x981) x272 (not x3) x819 (not x886))
+(or x32 x412 (not x651) (not x178) x838)
+(or x1277 (not x970) x544)
+(or (not x439) x202 x1257 x1033 (not x366))
+(or (not x913) (not x103) (not x137))
+(or x61 (not x1575) (not x548))
+(or (not x807) (not x1390) (not x1032) (not x648) (not x975))
+(or (not x110) (not x270) x591 (not x365) x494)
+(or (not x558) x1063 (not x715))
+(or (not x272) (not x3) x981)
+(or (not x618) (not x1467) x306)
+(or (not x1099) x1100 x1475)
+(or x808 (not x469) (not x1169))
+(or (not x1120) (not x1224) (not x418))
+(or (not x218) x379 x1341 x1294 x4)
+(or x955 x137 x373)
+(or x291 (not x1435) (not x836))
+(or (not x1406) x260 x49)
+(or (not x844) (not x1331) (not x1413))
+(or (not x1155) x578 x1244 x234 x179)
+(or (not x87) x55 (not x1265))
+(or (not x1477) (not x126) x47 x1456 x193)
+(or (not x3) x1303)
+(or (not x1160) x933 (not x1050))
+(or x40 x539 x1016)
+(or (not x1544) (not x788) x1025 x1108 (not x959))
+(or (not x1118) x1359 x1414)
+(or (not x1039) (not x689))
+(or x1148 x1065)
+(or x449 (not x304) x375)
+(or (not x89) (not x773) x709)
+(or (not x1237) x1307 x656)
+(or x465 (not x487) x185 x145 (not x171))
+(or x786 (not x1536) x758 x82 (not x1252))
+(or (not x1483) (not x84) x1414 (not x1512) x1377)
+(or (not x1060) (not x1050) (not x933) (not x1109) x1600)
+(or (not x224) x268 (not x893) x900 (not x1606))
+(or x876 (not x980))
+(or (not x1350) (not x814) x1006)
+(or (not x1053) x810)
+(or x266 x709 x1591 (not x965) x516)
+(or x817 (not x710) x982)
+(or (not x1482) (not x502) x288 x1249 (not x540))
+(or (not x967) x445)
+(or x944 (not x1288) x225)
+(or (not x1129) x528 x914)
+(or x251 (not x192) (not x1083))
+(or (not x73) x641 (not x214) x1608 (not x246))
+(or x3 (not x1249) x819)
+(or x265 (not x984))
+(or (not x756) (not x1057) x1345 (not x16) x745)
+(or x43 (not x850))
+(or (not x280) (not x179) x974 x1244 x530)
+(or x951 (not x803) (not x325) x1340 x1373)
+(or x1210 x186 (not x1406))
+(or (not x1163) (not x886))
+(or (not x1085) (not x529))
+(or x396 (not x164) (not x373))
+(or (not x1252) (not x1527) (not x1515))
+(or x576 x1280 (not x702))
+(or (not x467) x1117 (not x33) x61 (not x1575))
+(or x1462 (not x258) x478)
+(or (not x1226) (not x512) (not x1529))
+(or (not x1296) (not x667))
+(or x1455 x1466 x1423 x659 (not x828))
+(or x499 x684 (not x559))
+(or (not x517) x334 (not x310))
+(or (not x1350) (not x814) (not x856))
+(or x1488 (not x915) x1007)
+(or x1034 x198 (not x373))
+(or x1085 (not x843) x3 (not x819) x511)
+(or x887 (not x864) (not x784))
+(or x513 (not x276) (not x1067))
+(or x760 (not x1321) x223 (not x1121) (not x701))
+(or (not x453) x943 (not x267) x1473 (not x1586))
+(or (not x1089) (not x14) x628 (not x1211) (not x1112))
+(or x1588 (not x1449) (not x738))
+(or (not x1350) (not x814) x1469)
+(or x786 (not x1274) (not x441) x1252 x922)
+(or x460 x984 (not x237) x99 x328)
+(or (not x1115) x518 (not x283))
+(or (not x310) x530 x517)
+(or x29 (not x1050) x1144 x933 (not x1091))
+(or x961 (not x672) x1264)
+(or (not x330) (not x678) x1425)
+(or x224 x601 x783)
+(or (not x1287) (not x3) (not x819))
+(or x547 (not x977) x386 x537 x1255)
+(or x200 (not x1119) (not x48))
+(or (not x1188) (not x223))
+(or (not x448) x757 x18)
+(or (not x1010) x462 x813)
+(or (not x1052) (not x573) (not x538) (not x289) x840)
+(or x1046 x258 (not x1462))
+(or x1112 (not x628) (not x1089))
+(or (not x1574) x1244 (not x1116) x179 x732)
+(or x651 (not x599) x334)
+(or (not x563) (not x1464) x1000)
+(or x1326 (not x571) x520 (not x146) (not x1024))
+(or x656 x1382 (not x372))
+(or x1547 (not x655) x1600)
+(or (not x709) x516 (not x1270))
+(or (not x891) (not x1354) (not x61))
+(or (not x1445) x803 x951)
+(or (not x476) (not x754) (not x722) (not x117) x1041)
+(or x1541 x150 (not x1294))
+(or x1244 x1122 (not x961))
+(or x784 x947 (not x417) x1376 x1170)
+(or x495 x332 x1503 (not x198) (not x907))
+(or x63 x914)
+(or x798 x372 (not x656))
+(or (not x536) x90 x960)
+(or (not x645) x466 x1282 x1537 (not x822))
+(or x1028 (not x88) x821 (not x538) x1052)
+(or (not x222) x143)
+(or (not x750) (not x1045) x241 (not x581) (not x210))
+(or x63 x201 x1129)
+(or (not x1525) x1074 (not x1319) (not x906) (not x41))
+(or (not x618) x1473 (not x1094) (not x943) x192)
+(or x1379 (not x180) (not x1190) (not x1293) x909)
+(or x733 x760)
+(or x153 x1084)
+(or x463 (not x366))
+(or x1101 (not x672) (not x530))
+(or (not x1367) (not x85))
+(or x293 x1088)
+(or x1245 (not x177) (not x978))
+(or (not x1042) (not x1326))
+(or (not x1189) x234 (not x1244))
+(or x826 x118 x87)
+(or x451 x758 x1536)
+(or x737 x192 x1453)
+(or (not x1052) x88 x538 x821 (not x1073))
+(or (not x1195) x433 x1516)
+(or x46 x636 (not x1208) (not x866) (not x101))
+(or (not x819) (not x572) (not x3) (not x755) (not x1390))
+(or (not x1393) (not x532) x419 (not x637) (not x368))
+(or (not x1511) (not x225))
+(or x1609 (not x1437) (not x81))
+(or (not x1064) x1361 (not x783))
+(or x444 (not x899) (not x316))
+(or x410 (not x43) (not x239) (not x417) (not x256))
+(or (not x325) (not x378) x471)
+(or x1244 (not x983) (not x32) x179 (not x178))
+(or (not x1392) x462 x276)
+(or (not x890) x1343 (not x13) (not x575) x530)
+(or (not x372) x1421)
+(or x873 (not x1087) x244 (not x40) x363)
+(or (not x1249) (not x1482) x502)
+(or x1065 x963 (not x441))
+(or x1580 (not x373))
+(or x1507 (not x1312) x205)
+(or (not x8) (not x750))
+(or (not x1317) x250 x459)
+(or x371 (not x762) (not x1399))
+(or (not x799) (not x337) (not x78))
+(or (not x1032) (not x1256))
+(or (not x726) (not x659))
+(or x684 (not x1390))
+(or (not x648) x1252 x975)
+(or x1054 (not x516) (not x709) x1097 (not x1524))
+(or (not x569) x1298 (not x1246))
+(or x854 (not x1557) (not x1412) x453 x1210)
+(or (not x130) x1534 x1441)
+(or x803 x783 x1361 (not x761) (not x951))
+(or x1113 (not x615) x1599)
+(or x1523 (not x1436) (not x1197))
+(or (not x225) (not x727) (not x944))
+(or (not x673) (not x202))
+(or x379 (not x1294) (not x1183))
+(or (not x814) (not x856) (not x1185))
+(or (not x966) x297 x1183 (not x889) x439)
+(or (not x920) (not x223) x893)
+(or (not x950) (not x1426) x951 (not x803) x731)
+(or x1302 x1350 (not x1006) x237 (not x814))
+(or x487 (not x145) x465 x185 (not x171))
+(or x803 x377 (not x951) (not x832) (not x1217))
+(or x1397 x53 x610 x650 (not x133))
+(or (not x1008) x709 x1054)
+(or x1417 (not x883))
+(or (not x842) (not x488) x5 (not x1271) (not x927))
+(or (not x1131) (not x1484) (not x1590))
+(or (not x1442) (not x330) x1404)
+(or (not x509) (not x1275) x510)
+(or (not x363) (not x873))
+(or (not x1405) x1151 (not x1021))
+(or (not x1491) x162 (not x193))
+(or x193 (not x1569) x1456 x1072 x956)
+(or (not x51) x757 x36)
+(or (not x1137) (not x1316))
+(or x605 x901 (not x679))
+(or (not x3) x843 x1085 x1285 x819)
+(or x961 (not x1244) (not x594))
+(or x268 (not x783) x893 (not x720) (not x1361))
+(or (not x1142) x374)
+(or x105 x363 (not x152))
+(or x209 (not x170))
+(or (not x642) x1086 x1554)
+(or x1551 x1498 (not x1397))
+(or x814 (not x882) x985)
+(or x178 (not x1343) x942)
+(or (not x517) (not x128))
+(or x865 (not x220) (not x944))
+(or (not x178) x651 (not x129))
+(or x349 (not x1180))
+(or x1037 (not x1185))
+(or x345 x317 x1187)
+(or (not x1402) (not x637) (not x419))
+(or (not x1369) x1488)
+(or x1075 (not x1583))
+(or (not x1044) (not x798) x712 x227 x367)
+(or x1012 (not x680))
+(or x78 (not x337) x799)
+(or x378 (not x797) (not x109) (not x660) (not x243))
+(or x650 (not x1061) (not x1397) (not x1587) x1005)
+(or x1114 (not x937))
+(or x313 (not x27) (not x34) (not x134) (not x566))
+(or (not x1178) x1015 (not x291))
+(or x1231 (not x259) x1084)
+(or x224 x965 (not x1606) x1584 (not x1591))
+(or (not x414) (not x735) x1539 (not x354) x555)
+(or (not x508) (not x1214) x1574 x743 x579)
+(or x1396 (not x466) x766 x1432 x910)
+(or x353 (not x209) (not x74))
+(or x1099 x1111)
+(or x821 (not x1314))
+(or (not x375) x473 x449 x681 x570)
+(or x88 (not x344) x1314)
+(or (not x656) x1142 x1307 x372 x1404)
+(or (not x332) x1556 x1077)
+(or (not x192) x64 x510)
+(or x967 x1333 x1231 (not x1084) x259)
+(or (not x1017) (not x89))
+(or x835 (not x517))
+(or (not x229) (not x332))
+(or (not x672) (not x796) (not x106))
+(or (not x512) x1501 (not x1317))
+(or (not x1107) x1200 (not x491))
+(or (not x1050) x933 x276)
+(or (not x425) (not x997))
+(or (not x518) x1375 (not x1547))
+(or (not x1337) (not x629) x245 (not x1392) x947)
+(or x679 x224)
+(or (not x988) x1397 x650)
+(or x132 (not x52))
+(or (not x3) x1020 (not x819))
+(or x660 (not x243) (not x1368))
+(or (not x669) x1536 (not x1008) x1524 (not x758))
+(or (not x373) (not x1082) x507)
+(or (not x169) x1563 (not x1245))
+(or x1045 x740 (not x503))
+(or (not x1249) x540 (not x502) x1482 x288)
+(or (not x819) (not x886) x1553)
+(or (not x772) x1251)
+(or (not x743) (not x732))
+(or (not x117) (not x476) x754 x1041 x722)
+(or x229 (not x386) (not x204))
+(or (not x831) x586 (not x1241))
+(or (not x168) (not x659) (not x893))
+(or (not x465) x31 (not x1206))
+(or x1013 (not x1100) (not x1111))
+(or (not x1001) x878 x228)
+(or (not x1024) x1191 (not x291))
+(or x449 x570 (not x304))
+(or (not x161) x316 x899 x484 x444)
+(or (not x811) (not x327) x1050)
+(or (not x1155) x1327)
+(or x588 (not x803) (not x600) x35 (not x951))
+(or x1189 (not x1155) x1219 (not x528) (not x63))
+(or x1008 x449 x718 x620 x1524)
+(or (not x1499) x1093)
+(or x113 x1004 x779 (not x1103) (not x151))
+(or (not x1262) x1494 (not x1101))
+(or (not x1111) (not x914) x1189 (not x1155) (not x201))
+(or (not x378) (not x660) (not x1167))
+(or (not x912) x542 x84)
+(or (not x72) (not x976) (not x1293))
+(or x1125 x458 x1203)
+(or x34 (not x960) (not x1069) (not x536) (not x935))
+(or (not x1521) (not x885) x1223 x427 x946)
+(or (not x908) x32)
+(or x110 x332 x1370 (not x796) (not x907))
+(or (not x503) x740 x868 x714 (not x1552))
+(or x729 x1463)
+(or (not x561) (not x1565) x1003 (not x790) (not x400))
+(or (not x47) x1456 (not x193) x485 x1477)
+(or (not x690) x695 x675)
+(or x881 (not x35))
+(or (not x114) (not x938) x922)
+(or x660 x121 x378)
+(or (not x463) (not x1249) (not x288))
+(or (not x1001) x349 x760)
+(or x488 (not x294) (not x1482))
+(or (not x1178) (not x1435) x291)
+(or x838 x1053 (not x651) x936 x1353)
+(or x1129 (not x817) (not x811) (not x1119) x48)
+(or x802 x209 (not x455))
+(or (not x840) x134 (not x178))
+(or x924 x951 x803)
+(or (not x1591) (not x516) (not x965) (not x709) (not x1526))
+(or x378 (not x402) (not x471))
+(or x1057 x1429 (not x181))
+(or x1275 x238 x510 x381 (not x251))
+(or (not x151) (not x957) (not x1103))
+(or (not x559) x379 (not x1052))
+(or x1048 (not x992) (not x1397) x650 x614)
+(or x1001 (not x652) x797)
+(or x539 (not x440) x373 (not x1190) x180)
+(or (not x1192) (not x1424) (not x50) (not x1262) x1101)
+(or x651 (not x936))
+(or (not x462) (not x235) x1010)
+(or (not x754) (not x251))
+(or x543 x949 (not x219))
+(or (not x1612) (not x767))
+(or x637 (not x614))
+(or x355 (not x650))
+(or x38 (not x1300) x525)
+(or x324 x752)
+(or x1308 (not x542) x867 x1573 (not x29))
+(or (not x1027) (not x556))
+(or (not x962) (not x760) x1001 x349 (not x733))
+(or x699 x399)
+(or x819 (not x952) (not x432))
+(or (not x780) (not x1182) x552 (not x597) (not x1538))
+(or x1239 (not x1495) x1205)
+(or x248 x312 x867 (not x967) x29)
+(or (not x159) x268)
+(or (not x1352) (not x1055) x762)
+(or x334 (not x651) x996 (not x517) x838)
+(or x251 x1275 x1026)
+(or (not x201) (not x914) (not x1013))
+(or (not x1361) (not x783) x1612 x767 (not x100))
+(or (not x6) (not x1594) x1335 x978 (not x177))
+(or (not x961) (not x270) x917)
+(or (not x162) (not x1150) x452)
+(or x246 (not x73) x214 x641 (not x1608))
+(or (not x1236) x172 x677 (not x1019) x930)
+(or (not x752) x522)
+(or (not x11) (not x1237) (not x1421) (not x1159) x481)
+(or (not x256) (not x43) (not x410) x387 x417)
+(or (not x1244) (not x672) x923 (not x179) (not x961))
+(or x109 x951 x554 (not x803) (not x774))
+(or (not x61) (not x1117) (not x1575) x33 (not x467))
+(or x1419 x403 x887 x864 x784)
+(or (not x1448) (not x1509) (not x1463) x832 (not x404))
+(or (not x1094) (not x68) (not x819))
+(or (not x1183) (not x439) (not x966) x297 x889)
+(or x1181 x1610 (not x687) x350 (not x1162))
+(or x1030 x1338 x748 (not x509) x1026)
+(or (not x199) (not x718))
+(or (not x62) x316 x196 x263 x703)
+(or x302 x970)
+(or x329 (not x1210) x11 x28 x186)
+(or x760 (not x464) x223 (not x701) (not x1321))
+(or (not x1458) x1070 (not x804))
+(or x603 x1211 (not x918))
+(or (not x634) x1599 x493 x1164 (not x1566))
+(or x763 (not x838) (not x517))
+(or x278 (not x1612) x1261 x497 x716)
+(or x823 x703)
+(or x299 x926 (not x443))
+(or (not x241) (not x8) x581)
+(or x204 x276 (not x661))
+(or x1409 (not x340) (not x1048))
+(or (not x614) x1397 x1048 (not x650) (not x992))
+(or (not x1016) (not x873))
+(or (not x479) (not x1261) (not x1612))
+(or (not x462) x1010 x592)
+(or x1101 (not x50) (not x1262) (not x1424) (not x1494))
+(or (not x178) x412 (not x838) (not x651) (not x32))
+(or (not x840) (not x690) x289)
+(or x525 x482)
+(or x516 x523 (not x965))
+(or x721 (not x462))
+(or x452 (not x162) (not x193))
+(or x952 (not x622) (not x3) (not x432) (not x819))
+(or (not x473) x375)
+(or (not x634) (not x770) (not x59))
+(or x1397 (not x992) x355)
+(or (not x822) (not x1282) x308)
+(or (not x462) x688)
+(or (not x422) (not x107) (not x431) (not x194) x633)
+(or (not x1555) (not x430) (not x812) x958 x898)
+(or x538 (not x1253))
+(or x235 (not x1010) x200 (not x462) (not x1129))
+(or x1597 (not x577) x810 (not x585) x1353)
+(or (not x1315) x1229 (not x993))
+(or x483 x901 x1593 (not x679) x601)
+(or x811 (not x7))
+(or (not x905) x1325)
+(or (not x849) (not x598) (not x1327))
+(or x267 (not x1586) x453)
+(or x660 (not x1388))
+(or x517 x208 (not x334) x651 x838)
+(or x1054 (not x783) (not x1361) (not x1465) (not x1188))
+(or x382 (not x693) (not x1239) (not x1205) x1336)
+(or x243 (not x902))
+(or (not x807) x747 x1256 x1455 x659)
+(or x821 (not x1052) x290 x538 x88)
+(or x1557 (not x1210))
+(or x893 x1044)
+(or (not x1015) (not x1191) (not x1435) (not x1024) x291)
+(or x1091 (not x309) x1323)
+(or (not x813) (not x602) (not x1049))
+(or (not x1171) x1173 (not x594))
+(or (not x1464) (not x402) (not x512) x1167 x1317)
+(or (not x672) x1568 x179)
+(or (not x1263) x1145 (not x757))
+(or x471 (not x377) x378 (not x881) (not x660))
+(or x1454 (not x1150))
+(or x718 (not x219) x1252)
+(or x732 (not x367))
+(or x959 (not x592) (not x1601) x1 (not x607))
+(or (not x243) x349 x1001 (not x1193) (not x797))
+(or x1243 x1517 (not x839) (not x997) x1577)
+(or (not x1317) (not x916) x1501)
+(or (not x257) x1563 (not x71))
+(or (not x1486) x626 (not x657))
+(or x79 x392 x776 x46 x617)
+(or x1426 x950)
+(or x1600 (not x518) x1547 x977 (not x1462))
+(or (not x283) x1462 (not x1046) (not x518) x258)
+(or x1082 x1565 x167)
+(or (not x267) (not x1583) x1586)
+(or (not x800) (not x276) (not x918))
+(or x320 (not x390) (not x1447) (not x231) (not x1104))
+(or x557 (not x1517))
+(or x686 x1606 (not x434))
+(or (not x544) x707)
+(or x1068 x351 (not x39) x17 x644)
+(or x551 (not x1361) x783)
+(or (not x658) x1005)
+(or (not x755) x819 (not x3) x1390 x540)
+(or (not x421) (not x717) (not x156))
+(or x371 (not x1352))
+(or (not x747) x1256 (not x843))
+(or (not x1582) (not x1271) x525)
+(or (not x1321) (not x223) (not x1361) (not x783) x1163)
+(or x551 x1365 x516 x1561 x709)
+(or x189 x759 x299)
+(or x620 (not x1357) (not x718))
+(or (not x675) x695 x690)
+(or (not x1159) (not x372) x1142)
+(or (not x935) x174 x90)
+(or (not x1214) x508 (not x513) x236 (not x282))
+(or (not x1611) (not x1333) x200)
+(or (not x1505) (not x90))
+(or x1437 (not x1609) (not x81))
+(or (not x1244) x179 (not x1189))
+(or (not x660) x1071 (not x378))
+(or (not x272) x346 (not x931))
+(or (not x651) x838 (not x895))
+(or (not x29) x1308 (not x542) (not x164) x867)
+(or x749 (not x1076) (not x10))
+(or x822 x1282 x1263)
+(or (not x1049) x688)
+(or x572 (not x559))
+(or (not x293) x1541 (not x65))
+(or (not x1282) (not x308) x466 x645 x822)
+(or x709 (not x1591) x1358)
+(or (not x546) x1360)
+(or (not x48) (not x933) (not x1355))
+(or (not x1195) x1307 x1142)
+(or (not x1548) x1129 x200 x1459 (not x274))
+(or (not x650) (not x857) (not x665))
+(or x1231 (not x1366) (not x1611))
+(or x244 x152 (not x1087))
+(or x4 x218 (not x1294))
+(or (not x424) (not x1474) (not x106))
+(or x244 (not x1318) (not x124) (not x462) (not x1010))
+(or (not x1087) x124 x1318 x462 (not x1010))
+(or x1520 x1398 x778 x290 (not x695))
+(or x84 (not x1414) (not x1512))
+(or (not x349) (not x430) (not x951) x803 x1001)
+(or x188 x882)
+(or (not x115) x630 (not x324))
+(or (not x277) x849 (not x1177) (not x564) (not x717))
+(or x124 (not x1318) (not x637) (not x1016) x419)
+(or x1336 (not x1495) x1239)
+(or (not x913) x123 (not x1273) (not x137) (not x1510))
+(or (not x43) x850 (not x1126) x1160 x429)
+(or (not x803) x951 (not x349) x1555 (not x1001))
+(or x640 (not x685) (not x1130) (not x876) x364)
+(or x844 x1568 (not x923))
+(or x1001 (not x797) x1528 x349 (not x243))
+(or (not x429) x410 x1126 (not x850) x1160)
+(or x748 (not x1432) (not x427) (not x416) (not x1133))
+(or (not x427) x946 x885)
+(or (not x200) (not x914) (not x63) x201 (not x1129))
+(or x361 (not x533) x310)
+(or (not x874) x287 (not x293) (not x232) (not x399))
+(or x1104 x322 (not x475))
+(or x348 x289)
+(or x1579 (not x1570))
+(or x462 (not x1136) (not x778) x1010 x290)
+(or x779 (not x1103) (not x151) x113 (not x898))
+(or x3 x810)
+(or x490 (not x759) (not x443) x189 (not x299))
+(or (not x640) x364 (not x685) x876 (not x1130))
+(or x1581 x195 (not x1198) x1598 x909)
+(or (not x1585) x1045 x740)
+(or x1377 (not x1165) (not x1512))
+(or (not x1380) x708)
+(or (not x155) (not x724) (not x1487) (not x95) x1595)
+(or (not x462) (not x1572))
+(or x1193 x243)
+(or (not x480) (not x1540) x1116)
+(or (not x962) (not x349) x760)
+(or (not x1307) (not x1142) (not x1195))
+(or x1462 (not x1318))
+(or (not x166) x36 x868)
+(or x404 x729 (not x1509))
+(or x963 (not x1515) (not x1332))
+(or x1010 (not x1318) (not x1087) x124 x462)
+(or x1067 (not x987) (not x508))
+(or x1298 (not x1254) (not x1009) x1517 (not x557))
+(or (not x414) x334 (not x32))
+(or (not x517) (not x1587) (not x780) (not x334) x1005)
+(or x1216 (not x535))
+(or (not x1114) (not x767) (not x648) x100 x975)
+(or x1477 x47 (not x485))
+(or x557 x997)
+(or (not x833) (not x1447) x1480 (not x609) (not x76))
+(or x76 (not x129) x1286)
+(or x1264 (not x636) x462)
+(or x937 x575)
+(or (not x1285) x3)
+(or (not x1110) (not x169) (not x144))
+(or x404 (not x736) (not x608))
+(or (not x1578) x666 x226)
+(or x993 (not x1241) x1416 x831 x148)
+(or (not x491) (not x1161))
+(or x6 (not x1137) x1202)
+(or (not x1397) (not x877) x463)
+(or x1350 (not x30) x359)
+(or (not x1330) (not x1008))
+(or x564 (not x149))
+(or (not x981) (not x3) x819 (not x886) (not x1408))
+(or x1082 (not x1028) x1073)
+(or (not x532) (not x301) x194)
+(or x838 (not x936) (not x1053))
+(or (not x1149) x366 (not x202) x379 (not x1294))
+(or (not x1600) x1462 (not x518) x1547 x800)
+(or (not x740) x1045 x1585)
+(or (not x727) (not x1511) x704)
+(or (not x776) (not x617))
+(or x826 (not x55) (not x87) x1265 (not x1247))
+(or x1229 x321 (not x1518))
+(or x1350 x119 x814)
+(or x775 x908 x176)
+(or (not x841) x1397 (not x559))
+(or (not x568) (not x234))
+(or x881 x660 x471 (not x600) (not x378))
+(or x441 x963 (not x1065) (not x922) (not x1148))
+(or x575 (not x1605) x323)
+(or (not x933) (not x811) x48 (not x1559) (not x1050))
+(or x1552 x503 x740 x166 x714)
+(or (not x739) (not x983) x421)
+(or (not x535) (not x261) (not x1051) x892 (not x1431))
+(or x539 x873 x1016 (not x373) x301)
+(or x779 (not x113) x957 x1103 (not x151))
+(or (not x1253) x777)
+(or (not x116) (not x744))
+(or (not x1308) (not x1573))
+(or x612 x684 x789 (not x572) (not x499))
+(or (not x363) x244 x40)
+(or (not x420) (not x640) x905 x364 (not x1417))
+(or x3 x192 (not x1094) x819 x68)
+(or x1301 x56 x1371 x1149 x919)
+(or (not x511) x819 x3)
+(or (not x901) x1586 x267 (not x525) x1021)
+(or (not x654) x392)
+(or (not x1166) x757 x522 x448 x36)
+(or x192 (not x1142) x1532)
+(or (not x449) (not x375) (not x304))
+(or x41 x1319)
+(or x518 x655 (not x1462) x544 (not x707))
+(or x1473 (not x927) (not x943) x687 (not x842))
+(or (not x1345) (not x756) x1057)
+(or (not x1379) x1581)
+(or (not x62) (not x899))
+(or (not x1157) (not x622) x3)
+(or x202 x1257 x966 (not x366) x1033)
+(or x823 (not x372) x1094)
+(or (not x248) (not x1308))
+(or (not x1137) (not x6) (not x719) x1176 (not x1202))
+(or (not x269) x1549 x174)
+(or x1563 x1245 x357 x1594 x169)
+(or (not x142) x1127)
+(or x706 (not x988))
+(or (not x821) (not x88) x1028 (not x538) (not x1052))
+(or (not x714) x740 (not x166))
+(or x1031 x360)
+(or (not x504) (not x1383) x1427)
+(or x834 x1050)
+(or x250 (not x809) (not x829))
+(or (not x1171) (not x1038) (not x1342))
+(or (not x530) x1262)
+(or x857 (not x665) x650)
+(or x443 (not x1508))
+(or x840 x399 x289 (not x1551) (not x857))
+(or x817 x1366)
+(or (not x192) (not x3) (not x662))
+(or (not x758) x1536 (not x1365) (not x938) (not x451))
+(or x32 (not x178) x334 x414 (not x517))
+(or (not x1142) x372 (not x481))
+(or (not x1364) (not x366))
+(or x704 (not x1498))
+(or x1286 x412 (not x76) x129 x1250)
+(or x11 x1159 (not x1237))
+(or x1603 (not x1596) (not x728) x664 (not x671))
+(or x555 (not x517) (not x334) (not x178) (not x32))
+(or (not x813) (not x396) (not x806))
+(or x1475 x314 (not x1350) x814 x1497)
+(or (not x372) x1425)
+(or x495 x198 x939)
+(or (not x1325) x291 x420 (not x1291) (not x883))
+(or (not x259) x815 (not x477))
+(or (not x538) x1052 (not x840) (not x289) x638)
+(or x517 x170)
+(or x520 (not x571) x1015)
+(or (not x312) (not x542) (not x1260))
+(or x963 (not x1536) x1148 (not x758) x351)
+(or x905 (not x1417) x1291 x364 (not x640))
+(or x1213 (not x908) x706 x775 x587)
+(or x1435 x291 x1024 x836 x1015)
+(or x411 x24)
+(or (not x814) x326 (not x1419) x157 (not x1350))
+(or x1350 x30 (not x814) (not x359) (not x1507))
+(or (not x89) (not x990) x1463 x608 (not x736))
+(or x367 (not x1540) x1116)
+(or x1269 x652)
+(or (not x1608) x246 x214 (not x1534) (not x73))
+(or x576 (not x1280) x702)
+(or x1050 (not x1345) (not x933))
+(or x767 (not x100) (not x783) (not x1361) x608)
+(or x1397 x650 (not x850))
+(or (not x407) (not x915) (not x339) x119 (not x1303))
+(or x846 (not x349) x1001)
+(or (not x733) (not x1001) (not x1423))
+(or x870 (not x1282) (not x822) x425 x1577)
+(or x1471 x755 (not x3))
+(or (not x752) x1166 (not x324) (not x18) x51)
+(or x224 (not x601) (not x783) x1361 (not x1606))
+(or (not x293) (not x65) x874)
+(or x1275 x1094 x57)
+(or (not x1430) (not x727) (not x1498))
+(or x5 x1278)
+(or (not x748) (not x416) x1432)
+(or (not x1002) (not x875))
+(or x697 (not x969) x1297)
+(or x1275 (not x510) (not x12))
+(or (not x158) (not x1323) x1604)
+(or x462 (not x1010) (not x389))
+(or (not x418) x1350 x814)
+(or x651 (not x838) x835)
+(or x628 (not x814) x311 (not x1184) (not x1350))
+(or x1298 x997 x1254)
+(or x1094 (not x197) x1151)
+(or x103 x913 (not x123) x1273 (not x137))
+(or (not x100) (not x1361) (not x783) x767 x990)
+(or (not x969) (not x632) (not x1042))
+(or (not x179) (not x32) x739)
+(or x1074 (not x41) x1363 x490 x1313)
+(or (not x1060) (not x1050) (not x1547))
+(or x1136 (not x1010) x462)
+(or (not x889) (not x1183) (not x297))
+(or x94 (not x790) x1082 (not x1535) (not x167))
+(or x845 x1304 x874)
+(or x1360 (not x840) (not x1052))
+(or x721 (not x290))
+(or x229 (not x772))
+(or (not x1250) x76)
+(or (not x1611) (not x1485) x1308 (not x1366) x542)
+(or x538 x348)
+(or x1236 x783 (not x1361))
+(or (not x1549) (not x174) (not x269))
+(or x1211 (not x628))
+(or (not x382) x305)
+(or (not x202) (not x366) x1542)
+(or x1361 (not x1163) (not x783))
+(or x1174 x783 x803 (not x951) x1361)
+(or (not x172) x1236 (not x930) x677 (not x1019))
+(or x432 (not x3) (not x622) (not x734) x819)
+(or (not x27) (not x134) x960)
+(or x1293 (not x180) (not x909))
+(or x559 (not x1397) (not x841))
+(or x819 x886 x1408)
+(or x1172 x1410 (not x1299) x911 x67)
+(or x557 x1009 (not x1298) (not x1254) x1243)
+(or x462 (not x1010) x719)
+(or (not x650) (not x596) x53)
+(or (not x580) (not x1108))
+(or x268 x1044 x224)
+(or (not x413) (not x67) (not x1010))
+(or (not x786) x758 x415)
+(or x186 x1210 x260)
+(or x579 (not x1316) x1556)
+(or x552 x1538 x780)
+(or (not x720) (not x1526) x242)
+(or x451 x1536 x1365)
+(or x133 (not x650))
+(or x633 (not x194) (not x431) (not x107) x1349)
+(or (not x413) x610 (not x334))
+(or (not x1562) (not x1153) (not x451) (not x872) x499)
+(or x1161 (not x394))
+(or (not x1508) x767 x100 (not x975) x648)
+(or (not x744) (not x1169))
+(or (not x307) (not x1527))
+(or (not x1010) (not x101) (not x781))
+(or x546 x369 x799)
+(or (not x911) (not x67))
+(or (not x1473) x192 (not x475) x1094 (not x943))
+(or x1533 x553 x1277)
+(or x270 (not x796) (not x495))
+(or x1366 x1611 (not x1215))
+(or (not x159) x893 (not x783))
+(or x1001 x733 x701)
+(or x1137 x1010 x462 x1316 (not x1328))
+(or (not x1398) (not x290) x1520)
+(or x1371 (not x552))
+(or x920 x709 (not x516))
+(or x718 (not x620) (not x1090))
+(or (not x350) x1162 x1181)
+(or x74 x802)
+(or (not x1239) (not x1205) (not x1495))
+(or x771 x83 (not x1220))
+(or x1094 x246)
+(or (not x1450) x471 (not x1001))
+(or (not x914) (not x1366) (not x1483) x1611 x201)
+(or (not x36) (not x971) (not x868) (not x166) x315)
+(or (not x1606) x686 x434)
+(or x1176 x1479)
+(or (not x1341) (not x1005) x334 (not x517) (not x1587))
+(or (not x603) (not x1089) x918)
+(or (not x1536) (not x669) x1008 x1524 x758)
+(or (not x464) x701 (not x1321) (not x223) (not x760))
+(or (not x457) (not x78) (not x835) x599 x996)
+(or x122 (not x1443) x352)
+(or x661 (not x1010) (not x276) x462 (not x629))
+(or x199 x1357 x1597)
+(or x1223 x1521 x416)
+(or (not x159) x1175 (not x442) x108 (not x394))
+(or (not x418) x26 (not x814))
+(or x1455 x962 x733 x659 x726)
+(or x366 (not x385) (not x462))
+(or (not x657) x1479 (not x1533))
+(or (not x1381) x790 (not x1003))
+(or x1457 x298 x596)
+(or (not x1477) x1456 x47 x485 x193)
+(or x1382 x192 x656)
+(or (not x922) x938 (not x114))
+(or x1091 x1397 (not x16))
+(or x1300 (not x702))
+(or x314 (not x356) x1401 (not x96) x277)
+(or (not x1209) (not x1580) x624)
+(or (not x897) (not x500) (not x191))
+(or (not x1488) x1192 x384)
+(or x4 (not x913) (not x780) (not x1341) x1182)
+(or (not x1548) x869)
+(or x1010 (not x462) (not x244))
+(or (not x581) x503 x1585 x740 (not x682))
+(or x1341 (not x1347) x1294)
+(or x1010 (not x29) x867 x462 (not x813))
+(or (not x706) x176)
+(or x970 (not x655))
+(or (not x32) x840 (not x178) x289 (not x134))
+(or x660 (not x797) (not x378) x243 x731)
+(or (not x963) (not x441) (not x1148) x922 (not x1065))
+(or (not x910) (not x427) x416)
+(or x881 x456)
+(or x415 x1536)
+(or (not x266) x709 (not x516))
+(or x1276 (not x808) x744)
+(or x1042 x571 (not x740))
+(or (not x658) (not x1386))
+(or (not x494) x917)
+(or (not x192) x825)
+(or (not x378) x797 (not x109) (not x243) (not x660))
+(or (not x758) (not x415) (not x1252) (not x786) (not x1536))
+(or (not x1397) x650 (not x45) x371 (not x794))
+(or x1320 (not x709) x516)
+(or (not x602) x164)
+(or (not x639) (not x512) (not x1317))
+(or (not x481) (not x656))
+(or (not x422) (not x814) x1349 (not x25) (not x1350))
+(or x685 x980 (not x369))
+(or x238 x251 (not x1440))
+(or x1541 (not x379))
+(or (not x709) (not x773) (not x516) x168 x1017)
+(or (not x77) (not x1477) (not x1150))
+(or x150 x840 (not x289))
+(or x1282 (not x1263) (not x822) (not x645) x466)
+(or x1093 x1397 x650)
+(or (not x588) x35 x951)
+(or x1464 (not x1317))
+(or (not x635) x1342 x1171)
+(or x1000 (not x512) x1317 x456 x459)
+(or (not x408) (not x285) x1035)
+(or (not x85) x1103)
+(or (not x814) (not x271) (not x1350))
+(or x934 (not x1469) x1350 (not x814) (not x195))
+(or (not x1066) (not x678))
+(or (not x1266) (not x539) (not x373))
+(or (not x373) (not x1439))
+(or x293 (not x205))
+(or x1076 x753 (not x1264) (not x335) x781)
+(or x683 x783 (not x1361))
+(or x597 (not x1341))
+(or x803 x731 x950)
+(or x822 (not x1282) (not x1577) (not x425) (not x58))
+(or (not x321) x1518 x1229 (not x944) x225)
+(or x543 x45 (not x333))
+(or (not x1339) x847 x173)
+(or x1310 x1105 (not x468))
+(or x825 (not x1362) x1544)
+(or x444 x62 x484 x899 (not x161))
+(or (not x231) x1469)
+(or (not x323) x13 x937 (not x1605) (not x723))
+(or x366 x379 x56)
+(or x1516 (not x1591) x965)
+(or (not x1224) x267 (not x1586))
+(or (not x777) x1504 (not x1495))
+(or x275 x740 x1595 x503 (not x49))
+(or x737 x569 x1151)
+(or (not x1151) (not x737) x946 (not x1271) (not x5))
+(or x650 (not x1048) x1397)
+(or x47 x1477 (not x77))
+(or x1239 x721)
+(or (not x783) x761 x803)
+(or (not x1335) (not x973))
+(or x1457 (not x793))
+(or x1350 x1519 (not x154))
+(or x688 (not x813) (not x602) x396 x806)
+(or x251 (not x12))
+(or x965 (not x266))
+(or x1158 x881)
+(or x962 x760 x349)
+(or x943 x1473 (not x306))
+(or (not x838) x128 x334 x517 (not x651))
+(or (not x1495) x1199 x693)
+(or x978 x973 (not x985) x188 x1532)
+(or (not x787) (not x1013) x1111 x539 (not x373))
+(or x1045 x503 (not x740))
+(or x895 (not x104) (not x936) (not x904) x180)
+(or (not x590) x977)
+(or (not x927) x251 (not x842) (not x238) (not x1386))
+(or (not x753) (not x1076))
+(or x1239 x1136 x175)
+(or x92 x1300 (not x336))
+(or (not x53) (not x816) x952)
+(or x427 x1432 (not x416))
+(or (not x1221) x1497)
+(or (not x767) x1039)
+(or (not x724) x49)
+(or x792 x801 (not x467))
+(or (not x1252) x786 x1576 x1515 x1527)
+(or x386 x204 x229)
+(or (not x845) x65 (not x123))
+(or x899 x373 x603 (not x539) (not x236))
+(or (not x1328) x179 (not x732))
+(or x944 x1288 (not x225) x321 x1229)
+(or (not x737) (not x5) (not x1271) (not x1278) (not x1151))
+(or x686 (not x1092))
+(or (not x1060) x933 (not x276) x1109 x1050)
+(or (not x1612) (not x100) x1361)
+(or x518 x478)
+(or x3 x1020 x819)
+(or x484 x161 (not x62))
+(or x1263 (not x1145) (not x757))
+(or (not x928) (not x875) (not x1057))
+(or (not x974) (not x1244))
+(or x690 (not x399) (not x1496))
+(or x172 (not x783) x1361)
+(or (not x887) x1586 x1094)
+(or x1204 x874 (not x293))
+(or (not x1555) x803)
+(or (not x778) x991 (not x290))
+(or (not x153) (not x259) (not x815) (not x445) x1185)
+(or x75 (not x1473) (not x267))
+(or x43 x1126)
+(or (not x1406) x329 x275)
+(or x1405 (not x669) x1330 (not x589) x795)
+(or x419 (not x651) x838)
+(or (not x180) x1190 (not x1598))
+(or x1060 x276)
+(or (not x641) (not x246) (not x1608))
+(or (not x173) (not x1599))
+(or x1365 x938 x1515 x549 (not x1576))
+(or x1146 (not x123))
+(or (not x1490) (not x443) x66 x121 x189)
+(or x473 (not x1287) (not x992))
+(or x192 (not x322) x943)
+(or x539 (not x258) (not x283) x1337 x373)
+(or x915 (not x713))
+(or x40 (not x152) (not x1087) x873 (not x244))
+(or x405 (not x1183) x966)
+(or (not x322) x1469 x1104)
+(or (not x425) (not x822) (not x318))
+(or x1397 x650 x1387)
+(or (not x1307) (not x1142) x1532)
+(or (not x163) (not x1186) x1203 (not x393) (not x458))
+(or x1573 (not x1258) x912 x1260 (not x164))
+(or x851 (not x1168))
+(or x1166 x522 (not x448))
+(or (not x440) x320)
+(or x1243 (not x839) (not x425))
+(or x1075 (not x1452))
+(or (not x431) (not x1349) x194)
+(or (not x689) x252 (not x1334))
+(or x750 x8 (not x581) x1045 (not x241))
+(or x42 (not x906))
+(or (not x1597) (not x1353) (not x577))
+(or (not x388) (not x1438) (not x286))
+(or (not x1372) x452 x1150 x162 x1491)
+(or (not x658) (not x827) (not x114))
+(or x1050 x1060 (not x661))
+(or x470 (not x968) (not x759))
+(or x1050 (not x896) (not x811))
+(or x1001 (not x625))
+(or x838 (not x129) (not x651))
+(or x838 x992 x614 (not x651) x1318)
+(or (not x1200) (not x676) (not x951) (not x803) (not x1567))
+(or (not x635) (not x682))
+(or (not x267) x1586 (not x1224))
+(or x368 x194)
+(or x1001 x797 x676)
+(or x1037 (not x247) x859 (not x820) x856)
+(or (not x51) (not x36) (not x757))
+(or (not x1087) (not x873) x152)
+(or (not x677) x349 x1280)
+(or x1397 x614 x992 x650 (not x355))
+(or x176 (not x908) (not x775))
+(or x458 (not x1489) (not x730) x348 x1470)
+(or (not x1293) x409)
+(or (not x675) (not x1028) (not x1073) x1520 (not x690))
+(or (not x1209) (not x1268) (not x641) (not x130) x1534)
+(or x1432 (not x1396) x645)
+(or x1378 (not x328) x140)
+(or x39 x886 x819)
+(or x1544 (not x1025))
+(or (not x560) x1017 x516)
+(or (not x1027) x366 (not x150))
+(or x510 (not x1275) (not x381))
+(or (not x275) x503 (not x1487))
+(or (not x701) (not x1321) x223 x760 x1188)
+(or x109 (not x797) (not x378))
+(or (not x1271) (not x1151) (not x737) (not x5) x531)
+(or (not x1047) (not x1256))
+(or x648 (not x1148) x1121)
+(or (not x798) x656 x525 x372 x1021)
+(or (not x819) (not x1604) (not x3))
+(or (not x6) (not x1335) x177 (not x1245) (not x978))
+(or x1488 x1007 x284)
+(or (not x711) x471 (not x1001))
+(or (not x827) (not x441) (not x922))
+(or x1397 x857 (not x650) x665 (not x1551))
+(or x157 x1419 x1350)
+(or (not x222) (not x1523) x1269)
+(or (not x1466) (not x1361) (not x783) (not x551) x1022)
+(or x1457 x187 x533 (not x361) x310)
+(or (not x900) x568 (not x668))
+(or (not x1273) x123 (not x913) (not x972) (not x137))
+(or (not x1337) x1392 (not x947))
+(or (not x1147) x594 (not x216) x1173 x567)
+(or x1001 (not x906) x349 x151 (not x1103))
+(or (not x267) x75 x1586)
+(or x659 (not x747) x1032 x1256 (not x1455))
+(or (not x1591) (not x709) (not x184) (not x516) (not x965))
+(or x682 (not x241) x503)
+(or x616 (not x1533))
+(or (not x578) x201 x179)
+(or (not x805) x118 x55)
+(or x974 (not x213) (not x357))
+(or (not x525) (not x1271) (not x5) (not x1451) (not x1021))
+(or (not x309) (not x1610))
+(or x996 x627 x599)
+(or x1064 x102 x878)
+(or (not x190) x1503 (not x880))
+(or x240 x137 x913)
+(or (not x299) x926 (not x490))
+(or x85 x1071 (not x1605) x1367 (not x937))
+(or x983 (not x179) x1244)
+(or (not x1595) x95 (not x1487))
+(or (not x140) (not x373) (not x1410))
+(or (not x87) (not x1265) x118)
+(or (not x364) (not x19) x685 x640 x876)
+(or x192 x1401 (not x1307) x1142 (not x1094))
+(or (not x1558) x1309 x183)
+(or (not x378) (not x1373) (not x660))
+(or x105 x1467 (not x363))
+(or x337 (not x799) (not x627) x546 x78)
+(or x621 (not x843))
+(or x429 (not x410))
+(or (not x76) x412 x1250 (not x129) (not x1286))
+(or (not x1344) x785 (not x15) x532 x527)
+(or x505 (not x232) (not x1028))
+(or (not x582) (not x1586) x943)
+(or (not x361) (not x310) (not x533))
+(or x506 (not x1331))
+(or (not x1350) (not x814) x1608)
+(or x192 (not x510) x246)
+(or (not x803) x1001 (not x1445))
+(or (not x270) (not x60))
+(or (not x1165) (not x1359) (not x1414) (not x358) (not x1522))
+(or x192 (not x1094) x251 (not x238) x1362)
+(or (not x1324) (not x1290))
+(or x759 (not x490))
+(or x861 x888 (not x249) (not x983) (not x739))
+(or (not x1551) x1498 x1397)
+(or x1479 x626 (not x1277) x302 x1533)
+(or (not x822) x1282 x425 (not x1577) (not x2))
+(or x753 (not x1070) (not x211))
+(or x1023 (not x395))
+(or (not x617) x46 (not x392))
+(or x1350 x1267 x664 x1207 (not x814))
+(or (not x756) x178)
+(or x301 (not x368) (not x1016) (not x633) (not x532))
+(or x1210 x329 x28 (not x11) x186)
+(or (not x1330) x758 (not x1524))
+(or x590 x772 x204 (not x229) (not x386))
+(or (not x511) (not x1085))
+(or x537 x743 x513)
+(or x1595 (not x724) (not x1216))
+(or x881 (not x660) (not x1167))
+(or (not x1585) (not x241))
+(or (not x517) (not x610) x53 (not x334) x413)
+(or x1376 x629 x245)
+(or x1350 (not x882) (not x985) (not x814) (not x1486))
+(or x743 (not x1533) (not x1328))
+(or x1535 x1565)
+(or (not x1044) (not x367) (not x227))
+(or (not x253) (not x296) (not x97))
+(or (not x411) (not x718))
+(or (not x1362) (not x251) (not x238))
+(or (not x1244) (not x961) (not x1122) (not x672) (not x179))
+(or (not x1397) x992 x355)
+(or (not x1025) (not x1589))
+(or x1168 x1227 (not x1398) x1356 (not x265))
+(or x967 x867 (not x248))
+(or (not x442) x394 (not x1175))
+(or x494 x462 x1572 (not x270) x1010)
+(or x1529 (not x512) (not x1501) (not x916) x1317)
+(or x1386 x611 x827)
+(or (not x817) x811 x1611)
+(or x1312 x1204 (not x303) (not x1507) x205)
+(or x1499 (not x1397) x653 x1403 x650)
+(or x668 x994 (not x93) (not x1036) (not x900))
+(or x1136 (not x462) x290)
+(or (not x1466) x783 (not x551) x1361 (not x1022))
+(or x186 (not x453) (not x854) (not x1557) x1412)
+(or x221 x1572 (not x1439) (not x1007) (not x1034))
+(or x1579 x1099 x1013)
+(or x919 x1371 (not x1) x1010 x462)
+(or (not x471) x1158 x378)
+(or (not x1477) x1012 (not x47) (not x1454) x1150)
+(or x867 x358 x29 x1215 (not x406))
+(or (not x1183) x1294 (not x379))
+(or (not x913) x1580 (not x539))
+(or (not x1572) (not x494))
+(or (not x202) x366 (not x1033) x1257 (not x439))
+(or x529 x415 x710)
+(or (not x57) x1127 x1225 (not x1006) (not x64))
+(or (not x1266) (not x320) x1059 x440 (not x818))
+(or x453 (not x943))
+(or x455 (not x802) x209 x287 (not x74))
+(or x925 x948 x1374)
+(or x1535 x373 (not x1082) (not x539) x175)
+(or x624 x130 x955)
+(or x780 x624 x462)
+(or x130 x1268 (not x641))
+(or x1276 x116 x269)
+(or (not x267) (not x1094) (not x192) x1224 (not x1586))
+(or (not x926) (not x443) x189 x490 (not x299))
+(or (not x153) (not x967) (not x1231) x1333 (not x1084))
+(or (not x1177) x598)
+(or (not x713) (not x1494) x1488 x1192 (not x384))
+(or (not x803) x761 x783)
+(or (not x462) (not x444))
+(or (not x1577) (not x822) x1282 x870 x425)
+(or (not x1144) x309)
+(or x1028 (not x1380) (not x1073))
+(or (not x1041) (not x754) x722)
+(or x518 x1318 (not x1402))
+(or x530 x280 x310 (not x517) (not x334))
+(or x898 x430 x812 x395 x1555)
+(or x1009 (not x531))
+(or x1046 x326 x646 x1115 x478)
+(or x1032 (not x648) x1390)
+(or x740 (not x1595) (not x503))
+(or (not x1225) x814)
+(or x866 (not x46))
+(or x1267 x1196 (not x206))
+(or x1142 (not x1401) x1307)
+(or (not x263) x62 x316)
+(or (not x311) x1112 (not x1211))
+(or (not x1412) (not x267))
+(or x943 (not x1473) x267 x1586 x854)
+(or x1205 x721 (not x507))
+(or (not x721) x1010 x290 (not x778) x462)
+(or (not x1419) (not x784))
+(or x1574 x282 (not x513) x1255 x743)
+(or x1169 (not x450) x744 x469 (not x380))
+(or (not x320) x1447 (not x1104))
+(or (not x192) (not x306) (not x943))
+(or (not x678) (not x929) (not x1259))
+(or x1422 x803)
+(or (not x1119) x710)
+(or x1537 x448 x1263)
+(or x717 x986)
+(or x13 (not x530))
+(or x216 x1171 x1147 x594 x1173)
+(or x380 (not x359))
+(or (not x1203) (not x606))
+(or x1244 (not x594) (not x961))
+(or (not x1033) (not x366) x439)
+(or (not x1043) (not x539) (not x556))
+(or x1567 (not x1001) x349)
+(or x525 (not x1405))
+(or (not x1380) (not x170))
+(or x667 x1119 x1411 (not x710) (not x982))
+(or x1521 x1271 x1151 (not x737) (not x5))
+(or x365 x110 (not x270))
+(or (not x280) x1311 (not x289) x840 x530)
+(or x1433 x192 x267 x1094 (not x1586))
+(or x1075 (not x884))
+(or x147 (not x1317) (not x512))
+(or x975 (not x447) (not x1252) x648 (not x436))
+(or x426 x1569 x680)
+(or x1073 (not x1535) x1028 (not x778) x290)
+(or x1370 (not x917) (not x672) (not x961) x106)
+(or x366 x1294 (not x56) x202 (not x379))
+(or x914 (not x1189) (not x1013))
+(or (not x1052) (not x289) (not x1360) (not x538) x840)
+(or x933 (not x1109) (not x1600))
+(or (not x85) x660)
+(or (not x1409) x651)
+(or x1590 (not x1131) x1484)
+(or x546 (not x627) x980 (not x78) x799)
+(or x222 (not x143) x1269)
+(or (not x539) x236 (not x161))
+(or (not x290) (not x1052) (not x538))
+(or (not x1296) x683 x1411)
+(or x1147 x672 (not x179))
+(or (not x1455) x1321 x391)
+(or x1366 (not x1333))
+(or x120 x331)
+(or (not x1109) x1397 x850 (not x650) (not x1060))
+(or (not x251) x853)
+(or (not x462) (not x719) (not x1010) (not x1316) (not x1328))
+(or x138 (not x972))
+(or (not x1318) x518 (not x124))
+(or (not x1350) x814 x422 x435 (not x1349))
+(or (not x1194) (not x1519))
+(or (not x1240) (not x1116) (not x480) x1540 x367)
+(or x1183 (not x439) (not x1194))
+(or x1215 x29 (not x867) (not x1359) x406)
+(or (not x1265) (not x87) (not x826) (not x741) x1247)
+(or x970 x1277 (not x858))
+(or x1473 (not x1021) (not x1546))
+(or (not x516) (not x1017) x736)
+(or (not x610) x334 (not x53) x517 x1329)
+(or (not x1184) x1382 x703)
+(or (not x454) x1270 (not x937))
+(or (not x780) x1538 (not x552))
+(or x373 x507 x1082)
+(or (not x425) x2)
+(or x740 x724 (not x503) (not x275) (not x49))
+(or x184 x709)
+(or x1355 x327 (not x1040) x1235 (not x1559))
+(or (not x1271) (not x525) (not x1451) x5 x1021)
+(or x709 x736)
+(or x397 x709)
+(or x732 x213 x1397 x1116 (not x650))
+(or x786 (not x447))
+(or x838 (not x651) (not x904))
+(or (not x921) x939 (not x692))
+(or (not x435) (not x1350) (not x814))
+(or x71 x179 (not x1244))
+(or (not x266) (not x1334) (not x689))
+(or x1010 (not x1560) (not x1182))
+(or (not x803) x172)
+(or x510 (not x1338) (not x1275))
+(or (not x908) (not x538) (not x1052))
+(or (not x401) x924 x940)
+(or (not x151) (not x660) (not x378) (not x1103) x85)
+(or (not x1191) (not x1435) (not x1015) x1024 (not x291))
+(or (not x1277) (not x1533) (not x657))
+(or (not x1518) x944)
+(or x1180 x881 (not x349) (not x1001) (not x471))
+(or x1275 x192 (not x246) (not x1094) x510)
+(or (not x1466) (not x1423))
+(or x951 x731 (not x1422) (not x1426) (not x803))
+(or (not x512) (not x1317) x747)
+(or x844 x969 (not x1413) x1040 (not x506))
+(or (not x1085) x949)
+(or (not x953) (not x340) x1394)
+(or (not x1001) (not x803) (not x430) x951 (not x349))
+(or (not x276) (not x1251) x661 x772 x515)
+(or (not x418) x165)
+(or x817 (not x1411))
+(or x550 x1395 (not x1540))
+(or (not x100) (not x767) (not x716))
+(or x538 (not x530) x280 (not x1530) (not x1052))
+(or (not x213) (not x1116) (not x650))
+(or (not x846) (not x349) (not x1001) x1242 x878)
+(or (not x233) x1350 x654)
+(or x758 x1524 (not x1536) x1330 x1008)
+(or (not x1076) x1247)
+(or x530 (not x840) (not x1502))
+(or x656 x1159 x1307 (not x1142) (not x372))
+(or (not x1468) (not x1308) (not x542))
+(or (not x587) x841)
+(or (not x1183) (not x623) (not x966) (not x439) x889)
+(or (not x1424) (not x650))
+(or (not x1489) x289)
+(or x1610 x943 (not x927) x842 (not x1473))
+(or x406 x201 (not x1611))
+(or x393 (not x163) (not x1125) x458 (not x1203))
+(or x1017 (not x773) x89 (not x516) (not x709))
+(or (not x712) (not x367))
+(or (not x1300) (not x38) (not x525) (not x491) x576)
+(or (not x901) (not x483))
+(or x421 (not x149) (not x249) (not x717) (not x986))
+(or (not x455) (not x1028))
+(or (not x1262) x280 (not x672) x530 (not x961))
+(or x961 x917 (not x672) x1370 x106)
+(or (not x1604) x158 (not x1323))
+(or (not x10) x672)
+(or (not x637) (not x419) x301)
+(or x404 x1448)
+(or x1061 (not x1005))
+(or x681 (not x304))
+(or x914 (not x578))
+(or x955 (not x913))
+(or (not x71) (not x530) (not x179) x280 (not x1244))
+(or x1264 x1265)
+(or x912 x904 x104 x273 x837)
+(or x1591 (not x709) (not x266))
+(or (not x805) (not x741) (not x118))
+(or x736 (not x1463))
+(or (not x349) x677 x1280)
+(or x1606 x965 x742)
+(or (not x1586) x901 x1021)
+(or x148 (not x831) x1241 x993 (not x586))
+(or x1600 x1375 x1547)
+(or x1432 x910 x1396 (not x645) x766)
+(or (not x1380) x1028 (not x1329))
+(or x881 (not x1450) x471)
+(or (not x516) x709 x442)
+(or x431 x422)
+(or (not x1479) (not x1533) (not x539) x1202 x373)
+(or x282 (not x513) (not x537) x1574 x743)
+(or (not x273) x1293 (not x895))
+(or x1466 x1561 x783)
+(or x783 x803 x1361 (not x951) (not x172))
+(or x86 (not x950) x212)
+(or (not x918) (not x236) x1112 x603 x1407)
+(or (not x140) x539 (not x1378) x373 (not x1299))
+(or x537 x513 x282)
+(or x172 (not x930) (not x677))
+(or x1094 x819 x1303)
+(or (not x1100) (not x1579))
+(or x193 x1569 (not x1072))
+(or x1237 x11 (not x1159))
+(or (not x104) x651)
+(or x814 x1350 (not x314))
+(or x1344 (not x413))
+(or (not x331) (not x120) x1228)
+(or (not x1475) x1221 x360 (not x1099) (not x1100))
+(or x538 x612 (not x1294))
+(or (not x483) (not x1593) x601)
+(or x506 (not x969))
+(or x416 x885)
+(or (not x1179) (not x1460) (not x234))
+(or (not x1547) (not x977))
+(or x1512 (not x1611) (not x914))
+(or x1576 (not x1515) (not x1527))
+(or x1099 x1497)
+(or (not x1005) x1182 (not x334))
+(or x192 x1094 x251 x238 (not x853))
+(or (not x1515) x1008 (not x1212))
+(or (not x836) (not x1024))
+(or (not x282) (not x653) x1499 x811 (not x48))
+(or (not x614) x838 (not x992) x651 x124)
+(or x331 x1493 (not x343))
+(or x1556 (not x998))
+(or x37 x1374)
+(or x1264 x211 (not x781))
+(or x350 (not x224) x765)
+(or (not x840) (not x502) x150)
+(or (not x1433) (not x267))
+(or (not x1037) x1602 x859)
+(or x1544 (not x580) (not x959))
+(or x1319 x906 x1074)
+(or x471 (not x1180) (not x1001))
+(or (not x1361) x551 (not x1022))
+(or x923 (not x1568) x844)
+(or (not x713) (not x1369) (not x1494))
+(or x822 (not x645) x308)
+(or x1022 x1361 x551)
+(or x1045 x210)
+(or (not x432) (not x1157))
+(or (not x1410) x373 x539)
+(or x462 (not x1172) x1143)
+(or (not x1311) (not x1502) (not x1201))
+(or x293 x1227 (not x851))
+(or x46 (not x79) (not x617))
+(or x366 (not x966) x1257)
+(or x182 (not x298) (not x944) x1229 x220)
+(or x1055 x32 (not x961))
+(or (not x539) (not x373) (not x1202))
+(or (not x1401) x314 (not x96) x277 x356)
+(or x146 x503 (not x697))
+(or x818 x462 (not x904))
+(or x1309 x1558 (not x183))
+(or x745 (not x1144) x650)
+(or (not x315) (not x522) (not x868) x971 x166)
+(or x1091 (not x29) (not x1050))
+(or (not x238) (not x1275) (not x510) x381 (not x251))
+(or x805 (not x654) x1350 (not x814) x233)
+(or x1199 (not x705) x1504)
+(or x837 (not x273) x1260 (not x904) x104)
+(or (not x463) (not x1482))
+(or x1530 (not x586) x777)
+(or (not x1348) (not x182) x1229)
+(or x293 x1596 x1027)
+(or (not x1222) x1096 (not x951))
+(or (not x1456) x1569)
+(or (not x979) (not x1323))
+(or (not x405) (not x1500))
+(or (not x107) x194 (not x1349))
+(or x267 (not x1586) x486)
+(or x289 x463 (not x1079))
+(or x1263 (not x308) (not x448) x1145 (not x1537))
+(or (not x867) (not x1091))
+(or x1208 x636 x866 (not x79) x101)
+(or (not x1509) (not x404) (not x1463) x832 (not x1128))
+(or (not x676) (not x1107))
+(or (not x1397) (not x888) (not x578))
+(or x676 x1107 (not x803) (not x1567) x951)
+(or (not x149) (not x421) x986)
+(or x1198 x1598 (not x934))
+(or x1254 x839)
+(or (not x262) (not x1437))
+(or x431 x532)
+(or (not x512) (not x1317) (not x809))
+(or x824 x498)
+(or x1388 (not x660) x797 (not x378) (not x243))
+(or (not x202) (not x1043) x366 x1079 x150)
+(or x1586 (not x842) x267 (not x486) (not x927))
+(or (not x866) (not x539) (not x1265))
+(or (not x634) x770 x59)
+(or (not x679) (not x783) (not x224) x1606 (not x1361))
+(or (not x1577) (not x1243))
+(or (not x530) x1080 x280 x838 x651)
+(or (not x740) (not x1487))
+(or x567 (not x1038))
+(or x1422 x1078 (not x554))
+(or (not x1200) x1107 (not x491))
+(or x1148 (not x1332))
+(or x979 x1604 (not x307))
+(or (not x895) x1053)
+(or x732 (not x179) x1574)
+(or x38 x1021)
+(or (not x1188) x701)
+(or (not x1368) x797)
+(or x494 (not x591) x60 x270 x110)
+(or x886 (not x550))
+(or x378 (not x151) x1490)
+(or x1239 x507)
+(or x290 x778 x991)
+(or x1382 (not x656) x372)
+(or (not x893) x168 (not x268) x560 (not x1455))
+(or (not x178) (not x933) (not x1345))
+(or x1342 x423)
+(or (not x848) (not x191) (not x1135))
+(or x1455 x268 x560)
+(or x1516 (not x534) x433)
+(or x68 x654 x776)
+(or (not x494) (not x270) x365)
+(or x317 (not x1429))
+(or (not x539) x1265 x1208 x373 (not x87))
+(or x808 (not x1169) (not x380))
+(or x440 (not x818) x390)
+(or x1314 (not x622) x432 (not x3) x819)
+(or x513 (not x236))
+(or (not x1533) (not x553) x302 (not x1479) x1277)
+(or x670 x1260 x1573 (not x912) x164)
+(or (not x1338) (not x748) x1030)
+(or (not x740) (not x49) (not x155))
+(or (not x1602) x1566)
+(or (not x533) x1457 x361)
+(or (not x32) x1345 (not x1050) (not x933) x178)
+(or x961 (not x917) (not x270))
+(or (not x1576) (not x1515) (not x1148) x1332 (not x963))
+(or (not x22) (not x1113) x492)
+(or x324 x51 (not x1166))
+(or (not x315) (not x714))
+(or (not x493) (not x1599) (not x634))
+(or (not x1400) (not x142) (not x911))
+(or x1586 x267 x192 (not x1094) x1224)
+(or (not x46) (not x79) x292 x776 (not x392))
+(or (not x1109) (not x1461) x931)
+(or x1261 (not x278) (not x497))
+(or (not x590) x772 x1506)
+(or (not x1244) (not x1316) (not x1116))
+(or x1267 (not x1418) x197 x206 (not x1196))
+(or (not x705) x1199 (not x1504))
+(or (not x927) x842 (not x488) x1271 (not x5))
+(or x52 (not x1609) (not x132) (not x588) (not x1437))
+(or x131 x672)
+(or (not x896) (not x834) (not x565))
+(or (not x812) x1103 x151)
+(or (not x199) (not x585))
+(or x433 (not x374))
+(or (not x814) (not x1350) x305)
+(or x724 x95)
+(or (not x360) (not x1031) (not x1111) (not x1013) x1579)
+(or (not x70) x786 (not x620))
+(or x1582 (not x1550) (not x1014))
+(or (not x238) x1094 x825)
+(or x1091 x1162)
+(or x1038 x1305 (not x423) x682 x635)
+(or x1082 x94 (not x1565) (not x167) (not x1535))
+(or (not x687) x842)
+(or (not x130) x1268 x1209)
+(or x462 (not x1010) (not x1) x919 (not x1371))
+(or (not x1212) x1515 (not x1008))
+(or x1076 x781 x1264 (not x211) x335)
+(or x321 (not x1229) x1518 (not x944) x225)
+(or x1507 x303)
+(or x701 x962)
+(or x1363 (not x299) x41)
+(or (not x862) (not x87) (not x1247))
+(or x811 x1564)
+(or (not x502) (not x463) x202 x840 x289)
+(or (not x1128) (not x1134) (not x1383))
+(or x553 x1479 (not x1533))
+(or (not x1593) (not x901) (not x679) (not x601) (not x605))
+(or (not x814) x1418 (not x664))
+(or x975 x432)
+(or (not x938) x1365 x620 x718 x1357)
+(or x886 x1020)
+(or x894 (not x5) (not x927))
+(or (not x1133) (not x427) x910 (not x416) x748)
+(or (not x1210) (not x1412) (not x854))
+(or (not x510) (not x932))
+(or (not x1560) (not x1010) x1182)
+(or x370 (not x1469) x322 x231 (not x475))
+(or (not x1528) (not x349) x1001)
+(or (not x570) (not x473) x681)
+(or x1212 (not x1592) x1451)
+(or x735 x555 (not x1539))
+(or (not x1177) x717 x564)
+(or (not x1103) x378 (not x660) (not x121) x151)
+(or (not x1319) x1605 x1139)
+(or (not x1603) (not x874) x1043 x1027 (not x293))
+(or x176 x908 x587)
+(or (not x546) (not x638))
+(or (not x1084) x1231 x967 x1333 x815)
+(or x819 (not x649) x1390 (not x3) (not x755))
+(or x748 x416 x1432)
+(or (not x913) (not x1580) (not x137) x539 x373)
+(or x1496 x675 x232 x690 x399)
+(or x146 x697 (not x503))
+(or x516 x1524 x1097)
+(or x240 (not x1273))
+(or x1602 (not x1566) (not x613) (not x215) x820)
+(or (not x157) x646)
+(or (not x364) (not x640) x1325)
+(or (not x1088) x167 (not x699) (not x675) x690)
+(or (not x844) (not x1122) x131 (not x923) (not x1568))
+(or (not x230) x85 x1605)
+(or (not x1600) x1547 x1462 (not x518) x547)
+(or (not x1357) (not x620) x718)
+(or x950 x803 x951)
+(or (not x101) x1264)
+(or x380 (not x1152) x1453)
+(or x803 x951 (not x1107))
+(or (not x62) (not x444))
+(or (not x895) (not x838) x651)
+(or x1009 (not x1278) x1246)
+(or (not x1350) (not x80) (not x73))
+(or x81 (not x1609) (not x588) x52 (not x1437))
+(or (not x1547) x1600 x1462 x518 (not x1375))
+(or (not x1381) x790 (not x561))
+(or (not x1585) (not x423))
+(or x53 (not x1428) (not x952) (not x816) (not x1041))
+(or x1137 x1176 x1202 x719 (not x6))
+(or (not x267) x1586 x864)
+(or (not x1591) x224 x965 x534 (not x1606))
+(or x538 (not x289) x1470)
+(or (not x48) (not x508) (not x811))
+(or x758 x1536 x669)
+(or (not x1129) (not x200) (not x274) x1548 x1459)
+(or (not x47) (not x126) (not x1477) (not x1456) x193)
+(or (not x48) (not x811) x282)
+(or x1352 x1124 x617)
+(or x359 x450 (not x1453))
+(or x1400 x911 x1127 x1514 (not x160))
+(or x147 (not x1368) x1317)
+(or (not x748) x1338 (not x1030))
+(or x1586 (not x927) (not x842) (not x1296) x267)
+(or (not x949) x1285 x70 x333 x219)
+(or (not x192) x1453 (not x737))
+(or (not x1393) (not x124) x1462)
+(or x651 x614 (not x124))
+(or (not x1450) x349)
+(or x63 x200)
+(or (not x167) x699)
+(or x120 (not x746) x1268)
+(or x623 (not x1500) (not x297))
+(or (not x26) x1258 (not x642) x1086 (not x670))
+(or (not x1152) x737)
+(or x106 (not x961) x796 (not x917) (not x672))
+(or x1096 x1001)
+(or (not x933) x327 (not x48) x1050 x811)
+(or x165 x806 (not x928))
+(or (not x503) (not x1585) (not x1045) (not x740) (not x682))
+(or x1607 x1539)
+(or x843 x511 x819 (not x3) x1085)
+(or (not x61) (not x210))
+(or (not x535) x1289 x95)
+(or x616 x882 (not x657))
+(or x928 x1120 (not x165) x1049 x806)
+(or (not x1450) x1154)
+(or (not x865) x133 x187)
+(or x726 x21)
+(or (not x660) x151 x378 (not x1071) (not x1103))
+(or (not x32) (not x756) (not x1050))
+(or x1174 (not x761) (not x878) (not x102) x1064)
+(or x450 x1169 (not x380) (not x808) (not x469))
+(or (not x192) (not x656) x859)
+(or x76 x1447 (not x1480) (not x609) (not x1472))
+(or (not x1321) x893)
+(or (not x961) (not x672) (not x179) (not x131) (not x1244))
+(or x1010 x389 x690 x462 x675)
+(or x574 x1056 (not x690) (not x675) x1380)
+(or x715 (not x1232) x1403)
+(or x1046 x518)
+(or (not x1307) (not x481) (not x1142))
+(or x404 x1128)
+(or x368 (not x419) x637 (not x532) x1402)
+(or (not x1235) x1050 (not x811))
+(or (not x962) x1513 (not x659) (not x733) x1455)
+(or (not x1025) x788)
+(or (not x378) (not x660) (not x731))
+(or x179 (not x594))
+(or x1268 (not x1441) x746 (not x735) x1228)
+(or (not x1475) (not x814) (not x1350) (not x1497) (not x356))
+(or (not x1350) (not x664) (not x1418) x1207 x814)
+(or x1240 x480 x367 (not x732) x1540)
+(or (not x175) (not x373))
+(or x1173 x672 x179 x961 (not x1244))
+(or x1015 x474)
+(or (not x696) x1124 x286)
+(or (not x313) (not x1518))
+(or (not x1347) (not x1294) (not x1341))
+(or (not x694) (not x634))
+(or x819 (not x886) (not x346) (not x3) (not x981))
+(or (not x96) (not x564) x314 (not x1401) x356)
+(or (not x1294) x1304)
+(or x723 (not x383) (not x957))
+(or x811 (not x48) (not x59) (not x32) x178)
+(or (not x179) x1116 (not x1244) x1316 x732)
+(or (not x917) x1474)
+(or x952 x1041 x610 x816 (not x1428))
+(or (not x803) (not x1064))
+(or x669 (not x1444) (not x1330))
+(or (not x289) x538 (not x472))
+(or (not x612) x684 x572)
+(or x1094 (not x1401))
+(or x397 x1591)
+(or (not x1019) x803 (not x783))
+(or x834 x1342)
+(or x5 x1271 x488)
+(or (not x355) x1409 x1048 (not x203) x1080)
+(or x494 x106 (not x961) (not x917) (not x672))
+(or (not x1565) (not x1535) (not x1082) x94 x167)
+(or x951 (not x783) (not x1236) x803 (not x1361))
+(or (not x431) (not x1016) (not x368) x301 (not x532))
+(or x373 x1479 (not x1202))
+(or (not x944) x993 x1229 x1315 x1324)
+(or x488 x288)
+(or x650 (not x53) (not x596))
+(or x867 x29 (not x688) x462 (not x1010))
+(or x543 (not x794) x438)
+(or (not x1605) x42 (not x937) x968 (not x1319))
+(or (not x1442) (not x1075) x1476)
+(or (not x899) x236)
+(or (not x842) (not x510) x1434)
+(or (not x458) x1125 x393)
+(or x811 x48 x1611)
+(or (not x435) (not x1467) (not x618))
+(or (not x479) x725 x1102)
+(or (not x198) (not x495) (not x1503))
+(or (not x1478) (not x1289) (not x892))
+(or x819 (not x407))
+(or x660 (not x1373) (not x881))
+(or x503 (not x740) (not x520))
+(or x737 x1223)
+(or x120 x735)
+(or x1515 (not x1212) (not x1576))
+(or x25 (not x1349))
+(or x648 x432 x1351)
+(or (not x988) (not x612) x650)
+(or (not x1456) x1491 x452 (not x1372) x162)
+(or x1270 x1605 (not x397))
+(or x1298 (not x1243) x1009)
+(or (not x1452) x929 x678)
+(or (not x660) x600 x881)
+(or (not x1385) x135 (not x539))
+(or x655 (not x1462) (not x970) (not x518) x707)
+(or (not x1052) (not x538) x1073)
+(or (not x570) (not x1008) x718)
+(or (not x3) x819 (not x886) x1068 (not x981))
+(or (not x943) (not x1583))
+(or x1470 x840)
+(or (not x1365) x709 (not x516))
+(or x1358 x965)
+(or (not x36) x18)
+(or x1604 (not x1527) x979 x158 x1323)
+(or (not x951) (not x349) x803 x1445 x1001)
+(or x1320 (not x709) x773)
+(or (not x139) (not x613))
+(or (not x44) (not x54) (not x147))
+(or x373 x1231 (not x139))
+(or (not x36) (not x757) (not x752))
+(or (not x1294) x4 x925)
+(or x267 (not x192) x864)
+(or x1052 x908 (not x538) (not x178) (not x32))
+(or (not x171) (not x185) (not x1590))
+(or (not x982) x529 (not x621))
+(or (not x36) x1166)
+(or (not x388) x286 x1438)
+(or (not x813) (not x688) (not x806))
+(or x891 x210 (not x1575))
+(or (not x1361) (not x1054) x1465)
+(or x718 x963 x620 (not x1148) x411)
+(or (not x742) (not x424) x1584)
+(or x1073 (not x1520))
+(or x1348 (not x182) (not x1229) x220 (not x944))
+(or (not x530) x1564)
+(or (not x1151) (not x1094) (not x1152))
+(or (not x962) x92 (not x733) (not x1321) (not x223))
+(or x770 (not x1164))
+(or x838 (not x334) x517 x651 x128)
+(or (not x786) x1274)
+(or (not x951) x401 (not x803))
+(or x190 (not x198) x332 x495 (not x907))
+(or x1196 x1094)
+(or x368 (not x1344) x15)
+(or x346 x3)
+(or (not x1109) (not x661))
+(or (not x890) (not x530) (not x1343))
+(or x307 x309 (not x1091) x1323 (not x1162))
+(or x419 (not x1402) x637)
+(or (not x1301) (not x65) (not x123))
+(or (not x530) (not x811) (not x1232))
+(or (not x1236) x698 (not x1019))
+(or (not x734) (not x1014) x857)
+(or x1317 (not x1167) (not x809))
+(or (not x918) x800 x276)
+(or (not x1383) x1134 (not x1128))
+(or (not x532) x1344)
+(or x1113 x492 x22)
+(or x188 (not x1350) (not x1486))
+(or (not x20) x1132 x583)
+(or x1089 (not x1112) (not x628))
+(or (not x430) (not x958) x812)
+(or x1162 (not x1323) (not x1144))
+(or x951 (not x964) x1158 (not x803) x879)
+(or (not x1013) (not x598))
+(or (not x814) (not x1350) x119)
+(or (not x737) x1151 x1152 (not x1094) x192)
+(or x513 x1547 (not x1600) (not x282) x655)
+(or x1553 x24 x1020)
+(or x393 (not x763))
+(or (not x385) x202)
+(or x156 x1284 (not x986))
+(or (not x1210) (not x11) (not x329))
+(or (not x1316) (not x179) x1244)
+(or (not x1607) (not x354) (not x855))
+(or x1350 (not x1225) (not x237))
+(or (not x1322) x1135 (not x927))
+(or (not x334) (not x310) x517)
+(or x373 x198 x1439 x495 x539)
+(or x811 x834)
+(or x1021 (not x576) (not x491))
+(or x1151 x737 x872)
+(or (not x998) (not x1574))
+(or x1583 x267 x943 x1586 (not x1473))
+(or (not x1177) x1327 x787)
+(or (not x604) x951 x803)
+(or (not x708) x1056 (not x353) (not x785) (not x802))
+(or x1352 (not x696) x617 x292 x1399)
+(or x373 (not x1027) x691)
+(or (not x1053) x1353 x104 (not x838) (not x651))
+(or x27 (not x32) (not x289))
+(or (not x764) (not x747) x843 (not x1481) (not x1256))
+(or x1604 x843 (not x3) x819 x1085)
+(or (not x893) x108)
+(or x122 x1443 (not x352))
+(or (not x912) (not x837))
+(or (not x1455) x1022)
+(or (not x1255) (not x743))
+(or (not x224) (not x893) x268 (not x1606) (not x1036))
+(or (not x555) x746 x354)
+(or (not x525) (not x737) x1021 x1151 x795)
+(or x28 (not x1237) x1159 x1421 (not x481))
+(or (not x1202) (not x1479) (not x373))
+(or (not x506) (not x1040) (not x844) x1413 x969)
+(or x912 x84 (not x542))
+(or x842 x500 x1135)
+(or x366 (not x673) (not x1347))
+(or (not x192) x247)
+(or (not x701) (not x1121) (not x760) x1321 x223)
+(or (not x373) x1601 (not x889) (not x1183) x539)
+(or (not x394) x1591)
+(or x1043 (not x1079))
+(or x32 (not x178) (not x289) (not x27) x840)
+(or (not x276) x1407 x661)
+(or (not x3) (not x755) x819 x1390 (not x810))
+(or (not x1048) (not x1397) (not x650))
+(or x8 (not x1354) x1117)
+(or x289 (not x538) x730)
+(or (not x99) x1378 (not x265))
+(or (not x517) x780 x334)
+(or (not x904) x1053)
+(or x996 (not x599) (not x835) x457 (not x627))
+(or x783 x989 x1321)
+(or (not x886) x981 x1068 (not x819) x3)
+(or (not x615) x1566 (not x634))
+(or (not x949) (not x1285) (not x543) (not x70) (not x219))
+(or (not x1062) x409 x1374)
+(or x404 x1134 (not x1509))
+(or (not x867) (not x1573))
+(or (not x379) x1294 x925)
+(or (not x48) (not x817) (not x1366) x1119 (not x811))
+(or x1499 x1214 (not x48))
+(or (not x1455) x962 (not x726))
+(or (not x1263) x757 (not x1537) x308 (not x1145))
+(or (not x1004) (not x723) (not x1445) (not x383) x957)
+(or x1239 x1495 (not x1205) (not x1336) (not x382))
+(or (not x1244) (not x32) (not x983) x178 (not x179))
+(or x1324 (not x1229) (not x1315) (not x944) x993)
+(or (not x1109) (not x1547))
+(or x685 x337)
+(or (not x558) (not x263) (not x715))
+(or x1515 (not x1332) (not x1576))
+(or (not x1127) x1006)
+(or (not x1019) (not x1361))
+(or (not x1546) x525)
+(or x905 x640 (not x364) x1291 x1417)
+(or (not x1122) x131 (not x1568) x506 (not x923))
+(or (not x3) (not x68))
+(or (not x1010) x1371 x1)
+(or (not x767) x125 x648)
+(or x780 x1182 x976)
+(or x323 x1004 (not x1445))
+(or (not x951) x109 x86 x803 x774)
+(or (not x3) (not x843) (not x1604))
+(or x400 (not x1565) (not x1003))
+(or x1174 (not x1064) (not x761) x102 (not x1242))
+(or x878 (not x1064) (not x102))
+(or x381 x954 x1254 x932 (not x12))
+(or x1264 (not x335) (not x753))
+(or (not x949) x3 (not x819) (not x843) x1085)
+(or (not x1528) x797)
+(or x951 x803 x430)
+(or (not x933) (not x1308))
+(or (not x1393) x124 x1318 x1402 (not x1462))
+(or (not x1574) x537)
+(or (not x1232) x811 x48)
+(or (not x853) (not x305) (not x1083) x1336 (not x995))
+(or (not x680) x1150 (not x1072))
+(or x123 x1273 (not x972) x137 (not x913))
+(or x1317 (not x1528) (not x639))
+(or (not x1187) (not x317) x345)
+(or (not x1366) (not x1215) (not x1611))
+(or x262 (not x1361) x100)
+(or (not x862) x1265)
+(or x539 (not x1016) (not x301) (not x40) x373)
+(or (not x1228) (not x1268) (not x1441))
+(or x778 x1136)
+(or x471 x916 (not x1001))
+(or (not x53) (not x952) x1428)
+(or x582 x943 (not x1473) x267 x1586)
+(or (not x1372) x162 x452 x1491 x1012)
+(or (not x1512) (not x1483) (not x1165))
+(or (not x997) (not x1577) x839)
+(or (not x925) (not x37) (not x1062))
+(or x1150 x1477 (not x77))
+(or (not x1050) x1126 x280)
+(or (not x277) x356 x1401)
+(or (not x82) x710)
+(or x291 (not x1178) (not x1015))
+(or x1198 x180 (not x1379) x1190 (not x1293))
+(or (not x69) (not x373))
+(or (not x1314) x622)
+(or (not x1543) x1552)
+(or (not x828) (not x962) (not x349))
+(or x373 (not x1183) (not x1601))
+(or (not x943) x1546 (not x525) (not x1473) (not x1021))
+(or (not x612) x1371)
+(or (not x1380) x1073 (not x1028))
+(or (not x1076) (not x749) x10)
+(or (not x1361) (not x990) x100)
+(or (not x1033) x1079)
+(or (not x1290) x587 (not x988) (not x841) x341)
+(or x71 (not x280))
+(or x783 x1039)
+(or x1496 (not x135) (not x293) (not x874) x303)
+(or (not x29) (not x1091) x1050)
+(or (not x39) (not x1281) x1068)
+(or (not x229) x590 (not x204) x386 x772)
+(or (not x48) (not x933) (not x871) x1050 x811)
+(or (not x52) (not x81))
+(or x675 x289 x1551)
+(or (not x1362) (not x1544) (not x825) x271 (not x154))
+(or (not x1612) (not x1361) x100)
+(or (not x38) x576 (not x491) (not x1300) (not x1021))
+(or x462 x813 (not x867))
+(or x881 (not x402))
+(or x29 x164)
+(or x1424 x1101 x1192)
+(or x740 x49 (not x1595))
+(or (not x1050) (not x48) x933 (not x811) x111)
+(or (not x1104) (not x370) x1469 x322 x475)
+(or x416 x1432 (not x427))
+(or (not x740) x1585 x581)
+(or x513 x1251 x282)
+(or x1298 (not x1278))
+(or (not x154) x1362 x1108)
+(or (not x1049) x602 x813)
+(or (not x886) x39 (not x819))
+(or x1010 x494 (not x270) x462 (not x221))
+(or (not x1199) (not x1504) (not x619))
+(or (not x342) x136 (not x127))
+(or (not x334) x1011)
+(or x1552 (not x503) (not x315))
+(or (not x124) (not x614) (not x651))
+(or x1151 x737 x1196)
+(or (not x508) (not x444))
+(or (not x1237) (not x656) (not x1307))
+(or (not x1140) (not x874) x293)
+(or (not x827) x1365 (not x441))
+(or x1329 x991 (not x778))
+(or x803 (not x783) x102)
+(or (not x675) (not x1496))
+(or x1094 x1532)
+(or (not x189) (not x942))
+(or x788 (not x1601))
+(or x1481 (not x1455) x659 (not x783) x1361)
+(or (not x1247) x87 (not x118) (not x1265) (not x826))
+(or x1 (not x462))
+(or x301 x532 x194)
+(or (not x349) (not x652))
+(or x57 (not x510))
+(or x842 (not x1135) x21)
+(or (not x221) x1572 (not x1034) (not x1007) x1439)
+(or (not x275) (not x155))
+(or (not x226) x666 x1578)
+(or x713 x1494 (not x1369))
+(or (not x290) (not x821))
+(or (not x339) (not x1141) (not x119) x1303 x407)
+(or x53 x650 (not x1397) (not x133) (not x610))
+(or (not x1557) x1473)
+(or (not x1317) (not x1180) (not x625) x91 x512)
+(or (not x1219) x826 x437)
+(or x280 x1232 x48 x530 (not x811))
+(or (not x503) x971 x740)
+(or x1228 (not x595))
+(or (not x592) (not x1) (not x959))
+(or x1260 (not x670) (not x164))
+(or (not x393) (not x663) x1203 (not x458) (not x163))
+(or (not x874) x1304 x65 (not x1541) (not x293))
+(or x839 (not x557) (not x1298))
+(or x406 x1366)
+(or (not x349) x846 (not x1242))
+(or (not x257) x1116)
+(or x1059 (not x104) (not x1010))
+(or (not x81) (not x1391) x1558)
+(or x294 x549 (not x1482))
+(or (not x1611) x1129 (not x1366) x1333 (not x200))
+(or (not x530) (not x1409))
+(or (not x594) (not x567))
+(or (not x1390) (not x3) (not x755) (not x810) (not x819))
+(or (not x1308) (not x1050) x1091)
+(or x739 x178)
+(or x503 (not x682) x1585 x740 (not x1045))
+(or x566 x877)
+(or x816 (not x476) (not x754) (not x722) (not x117))
+(or x229 (not x590))
+(or x586 (not x993))
+(or (not x86) (not x950) (not x212))
+(or x448 (not x752))
+(or x1350 x921 (not x339))
+(or x844 (not x1297))
+(or x1384 (not x614) x1287)
+(or x650 (not x1397) (not x1119) (not x817) (not x694))
+(or x230 x85 (not x937) x1071 (not x1605))
+(or x191 (not x242) (not x1135))
+(or (not x1151) x1271 x5 (not x885) x737)
+(or (not x378) (not x902) (not x797))
+(or x1380 x675 (not x1056))
+(or (not x653) x1281 x17)
+(or x369 (not x78))
+(or x517 x1143 x53)
+(or (not x1583) (not x1586) x267)
+(or (not x1511) (not x1430))
+(or x692 (not x495))
+(or x218 (not x673))
+(or (not x318) x1289 x2)
+(or x826 x55 x87)
+(or (not x293) x1596 (not x1027))
+(or (not x323) x957 x1445 x1004 (not x383))
+(or x3 x684 x819)
+(or (not x1479) (not x626) x302)
+(or x622 (not x952))
+(or x927 x687 (not x842) (not x943) (not x1473))
+(or (not x661) x276 (not x1547) (not x258) x1600)
+(or (not x1200) (not x491) (not x1175))
+(or x660 x774 (not x243))
+(or x9 (not x1191) (not x1178))
+(or (not x234) x1179 x93)
+(or x1456 x126 (not x47))
+(or x1587 x1341)
+(or x427 (not x416) (not x910))
+(or x531 (not x5) (not x737) x1271 x1151)
+(or (not x525) (not x1582) x1271)
+(or (not x1401) x1142 (not x192))
+(or x45 x501 x650)
+(or (not x1229) x944 x865)
+(or x21 x1135 (not x1322) (not x842) (not x500))
+(or x249 x986)
+(or x1534 (not x214))
+(or (not x929) (not x678) x1075 (not x1442) (not x1476))
+(or (not x1052) (not x1028) x821)
+(or x1268 x735 (not x1228))
+(or x939 x880 x692 x1503 x190)
+(or x494 (not x1370) (not x198))
+(or (not x442) x516 (not x965) x709 x1591)
+(or x1353 (not x904) x651)
+(or (not x921) (not x1503))
+(or (not x1511) (not x665) x727 (not x704) x1498)
+(or (not x156) x986 x1156)
+(or x32 (not x538) x775 (not x1052) (not x178))
+(or (not x444) (not x1214) x1010)
+(or (not x1234) x1069)
+(or (not x778) x1535 (not x1073))
+(or (not x1352) (not x501) x762)
+(or x881 (not x325))
+(or x243 (not x1001) (not x349) x347 (not x797))
+(or (not x864) (not x1094) x1586 x267 x192)
+(or x462 (not x29) (not x688) x867 x1010)
+(or (not x811) x48 x653 x1499 (not x513))
+(or (not x1489) x538)
+(or (not x1353) (not x577) (not x810))
+(or (not x1478) (not x1431) (not x95) (not x1289) x1216)
+(or (not x1148) x975)
+(or (not x784) (not x403) x887)
+(or (not x690) x1028 (not x1520))
+(or (not x884) x943 (not x1586))
+(or x1235 (not x1559) x1413)
+(or x1298 x1243 (not x557) (not x1009) (not x1254))
+(or (not x559) x919 (not x538) x612 x1052)
+(or x107 x1349 x194 x431 x633)
+(or x1530 x631 (not x1253))
+(or (not x1595) (not x49) (not x740))
+(or (not x441) x1395)
+(or x786 (not x1576) x979)
+(or (not x951) (not x325) (not x1340))
+(or x404 x736 x608)
+(or x1133 x1432)
+(or x153 (not x1333))
+(or (not x33) x210 x891)
+(or (not x1080) (not x1409) (not x340))
+(or (not x307) (not x1323) (not x1144))
+(or (not x1389) (not x462))
+(or (not x170) x991)
+(or x777 x1504 x1495)
+(or x29 x1084 x867)
+(or x334 (not x517) (not x457) x838 (not x651))
+(or x865 x182)
+(or (not x334) x763)
+(or x783 x108 (not x1361))
+(or x1413 (not x632) x506)
+(or x1329 (not x1028) (not x1380))
+(or x87 (not x1247) (not x1265) (not x826) (not x741))
+(or x243 (not x347) x349)
+(or x827 (not x1365) (not x441) (not x938) x922)
+(or x613 x1602 (not x820) (not x1566) x215)
+(or x152 (not x40))
+(or x503 (not x697) (not x1326))
+(or x1278 (not x1151) x1271)
+(or (not x1350) x25 x422)
+(or x318 (not x58) x1289)
+(or (not x1130) (not x514) (not x891))
+(or (not x1526) (not x584) x897)
+(or (not x1269) x1523)
+(or x787 x1177 (not x643) (not x1327) (not x598))
+(or x1559 x1040)
+(or x162 (not x1150) (not x452))
+(or (not x1366) x29 x867 (not x1611) (not x1459))
+(or x810 x577 (not x1353))
+(or (not x783) x1361 (not x951) (not x761) (not x803))
+(or (not x652) x243)
+(or (not x415) x529 (not x621) (not x710) x82)
+(or (not x179) x1568 x672)
+(or (not x386) (not x977) (not x537))
+(or x745 (not x181))
+(or x7 (not x634) (not x59))
+(or (not x1528) x112)
+(or x48 x933 x1559)
+(or (not x1110) x1156 x782)
+(or (not x366) x1043)
+(or (not x313) (not x1288) x877)
+(or (not x336) (not x349))
+(or (not x1446) x1234 (not x863) x206 (not x1069))
+(or x1421 (not x1307) (not x656))
+(or x423 x635 x1305 x1585 (not x1038))
+(or (not x305) (not x995) (not x853) x382 (not x1083))
+(or x538 (not x289) x730)
+(or x1307 x1142 (not x1066))
+(or x1018 (not x700) (not x1063))
+(or x302 x858)
+(or (not x796) x198 (not x270) x1370 x494)
+(or x280 (not x530) x517 x334 x310)
+(or (not x87) x1265 x866 x373 (not x539))
+(or (not x1473) x1557 (not x1586) (not x943) x267)
+(or x863 x385 x1364)
+(or (not x187) x133 x865 x596 (not x298))
+(or (not x1587) x1061 (not x650))
+(or (not x280) (not x310))
+(or x1365 (not x1536) x758 (not x938) (not x451))
+(or (not x819) x1408 (not x886))
+(or (not x1186) x163 x1203 (not x393) x458)
+(or (not x800) x276 x661 (not x1375) (not x1407))
+(or x1463 x832 x1448)
+(or x1036 x893)
+(or x961 (not x917) (not x106) x672 x796)
+(or x1047 (not x660) (not x243) (not x797) x378)
+(or x1541 x65 x293 x874 x1304)
+(or x691 x373 x539)
+(or (not x755) x3 x1471)
+(or x861 (not x888) (not x249) (not x739) x983)
+(or x224 (not x900))
+(or x1037 x814)
+(or x284 (not x221) x1572)
+(or x228 x1242)
+(or x128 (not x393) x763 (not x208) (not x1011))
+(or (not x889) x379)
+(or (not x718) (not x449))
+(or x3 (not x981) x1020)
+(or x1393 x368)
+(or (not x814) (not x1350) (not x418))
+(or x93 (not x1036) x900)
+(or x1240 (not x480) x732)
+(or x265 x1378 x769 x328 (not x140))
+(or (not x548) (not x33))
+(or (not x534) (not x224) (not x1591))
+(or (not x936) (not x1353))
+(or x619 (not x319) x489)
+(or (not x94) (not x1535) (not x1003))
+(or x202 x1043 x150)
+(or (not x167) x675)
+(or (not x826) x1247 (not x1265) (not x87) x862)
+(or (not x859) x856 x820)
+(or (not x1350) (not x1037) (not x814) x477 x1185)
+(or (not x842) (not x737) x927 (not x1151) (not x1153))
+(or (not x86) (not x803) (not x951))
+(or (not x714) x1259)
+(or (not x933) (not x1160) x1050)
+(or (not x1463) x89 (not x990))
+(or (not x1384) x622)
+(or x543 x1285 (not x949))
+(or x1576 x1008 x1524 x1550 x1515)
+(or x690 (not x389) (not x462))
+(or x1075 (not x1543) x929)
+(or x1341 (not x919) (not x4) x552 (not x1371))
+(or x1235 (not x933) (not x811) x48 (not x1050))
+(or x293 (not x37))
+(or x1072 x1569 (not x956))
+(or x59 x811 (not x178))
+(or x1290 (not x944) x1324 (not x1315) (not x1229))
+(or x556 x373 x1027 x539 (not x1043))
+(or (not x74) x287 (not x353) x209 x455)
+(or (not x275) (not x260) (not x1406) x1029 (not x329))
+(or x1593 x525 x267)
+(or (not x43) (not x429) x850 (not x1126) (not x1160))
+(or (not x175) (not x1205) (not x1136) x507 x721)
+(or x1405 (not x737) (not x525) (not x1151) (not x1021))
+(or (not x46) x636 x1208)
+(or x348 (not x1052) (not x840))
+(or x149 (not x156))
+(or x1542 (not x218) x366)
+(or x1333 (not x139))
+(or x1028 x851)
+(or (not x1213) (not x587))
+(or (not x1165) x1359 x1522)
+(or x237 (not x328) x984)
+(or x831 x1241 x586)
+(or (not x531) x737)
+(or (not x1231) x373 (not x539) (not x1333) x139)
+(or x1317 x1528 x512 (not x112) x23)
+(or (not x135) (not x1385) x539)
+(or x512 x1317 x250)
+(or x917 (not x1474) x24 (not x1248) x424)
+(or (not x422) x1350 x25)
+(or (not x1173) x672 (not x179))
+(or x684 (not x612) (not x789))
+(or x882 x553 (not x616))
+(or (not x827) (not x1365) x441)
+(or x1535 x94 x561)
+(or (not x718) (not x570) x620)
+(or x811 x1366)
+(or x512 (not x402) x1464)
+(or x41 x42 (not x1525))
+(or (not x567) (not x1171) x1038 x1342 x565)
+(or x1510 x913)
+(or x366 (not x150) x1079 x202 (not x1043))
+(or x842 x656 (not x927) x372 x994)
+(or x247 x656)
+(or x1275 x1094 (not x214))
+(or (not x709) (not x773) x560 (not x1017) x516)
+(or (not x373) x440)
+(or (not x462) x813 x1010)
+(or (not x774) x378 (not x797) (not x243) (not x660))
+(or (not x16) (not x1091) (not x1397))
+(or x349 (not x1001) (not x347))
+(or x126 (not x193))
+(or x1353 (not x1397) x1286 (not x1053) x650)
+(or (not x257) (not x732) (not x1397))
+(or (not x1480) (not x1447) (not x76) x609 (not x833))
+(or x742 (not x424) (not x1584))
+(or (not x987) x508 (not x1067))
+(or x1041 (not x610) x1428)
+(or x1419 x814)
+(or x1566 x613 (not x215))
+(or (not x693) x631 x1199)
+(or x256 x947 (not x784))
+(or x35 (not x881) (not x378) (not x660) (not x471))
+(or x348 (not x1203))
+(or x808 (not x450))
+(or x1417 x1125 x1186)
+(or x1124 (not x1352) (not x617))
+(or x330 (not x1307) (not x1142))
+(or x1239 (not x175) (not x1136))
+(or x656 x668)
+(or x1573 x396)
+(or (not x521) (not x824) (not x705))
+(or (not x510) x192 x64)
+(or (not x1252) (not x1295) x786 x441 (not x922))
+(or x1591 (not x1334))
+(or x459 (not x881) x471 x378 (not x660))
+(or x1098 x1049 x806)
+(or x825 x1362 (not x271) (not x1544) (not x154))
+(or (not x534) (not x965))
+(or x510 (not x509) (not x238))
+(or (not x612) (not x919) (not x538))
+(or (not x1531) x941)
+(or x258 x1600 x1547)
+(or (not x811) (not x48) (not x1232))
+(or x1445 x323 (not x1004))
+(or (not x728) (not x874) (not x1043))
+(or x754 x251 x1021 (not x525) (not x238))
+(or x1216 x1289 (not x261))
+(or (not x1426) x378 x797)
+(or (not x1056) x353 (not x802) x708 x527)
+(or (not x547) (not x1462))
+(or x323 (not x13))
+(or (not x1610) (not x842) x943)
+(or (not x1345) (not x745) (not x1057) (not x16) x756)
+(or (not x514) (not x1354))
+(or (not x192) x306 x943 (not x1094) (not x1473))
+(or (not x635) (not x1171) (not x1342))
+(or (not x1499) (not x508))
+(or x373 (not x787) x1111 (not x539) x1013)
+(or x1351 x54)
+(or (not x407) (not x1094))
+(or (not x617) x696)
+(or x210 (not x1117) x891 (not x1354) (not x8))
+(or (not x31) (not x185))
+(or (not x869) x1579 x791)
+(or x559 (not x919))
+(or x4 x780 x137)
+(or (not x1013) x201 x914)
+(or x672 (not x781))
+(or x641 x1268 (not x130))
+(or (not x651) x838 (not x1080))
+(or (not x822) (not x1577) x1282 x425 (not x58))
+(or x1021 (not x525) (not x238) x251 (not x117))
+(or (not x227) (not x224) (not x893) (not x1606) x268)
+(or x913 (not x1580) (not x137) x373 (not x539))
+(or (not x819) x1094 x68 (not x192) x3)
+(or (not x914) (not x1366) x1611 (not x1512) x201)
+(or x276 x258 x1547)
+(or (not x1479) x553 x1533)
+(or (not x715) x700 x558 x263 (not x1063))
+(or x579 x998 x1328 x1316 (not x1556))
+(or (not x1292) (not x116) x808)
+(or x1221 x1100 x1475)
+(or (not x174) x269 x1549)
+(or x1399 x617 (not x1352) (not x292) (not x696))
+(or x779 (not x898) (not x151) (not x113) x1103)
+(or (not x1389) (not x1385) x389 (not x338) x469)
+(or x1469 x195)
+(or (not x38) (not x576) (not x1021) (not x1300) x491)
+(or x709 (not x516) (not x1008))
+(or x1412 (not x854) x1210 (not x453) (not x1557))
+(or x932 x1254 x381 x12 (not x954))
+(or x187 x865 (not x133))
+(or (not x1600) (not x1547) x1375)
+(or x163 x663)
+(or (not x1187) x317 (not x345))
+(or x650 (not x1397) (not x559) x612 x988)
+(or x1271 x737 x1521 x5 (not x1151))
+(or (not x648) x975 (not x963))
+(or x715 x1018)
+(or x1099 (not x1100) x1475)
+(or x384 (not x1192) x1488)
+(or x783 (not x1361) (not x764))
+(or (not x939) (not x907) (not x495) x198 (not x332))
+(or x293 x1257)
+(or x1611 x1129 x1333 x200 (not x1366))
+(or x306 x192 x1473 (not x943) (not x1094))
+(or x62 (not x263) x196)
+(or x378 (not x902) x797)
+(or (not x305) x1381 (not x814) x1350 x400)
+(or (not x783) (not x1466) x1561)
+(or (not x1023) x178)
+(or x1609 x35)
+(or (not x1266) x180 (not x373))
+(or x631 x1253 (not x1530))
+(or (not x11) x260)
+(or (not x1225) (not x1350) x237)
+(or x155 x1487 (not x1595) x1216 (not x724))
+(or x401 x803 (not x964))
+(or x1261 (not x709) x1591)
+(or (not x875) x1098)
+(or (not x1004) (not x1103) (not x113))
+(or (not x900) x1606 (not x893))
+(or x1397 (not x1499) x650 x653 x1403)
+(or (not x1361) x803 (not x172) x951 (not x783))
+(or x81 x583)
+(or x612 (not x988) (not x650))
+(or x72 (not x1379))
+(or x131 (not x961) x1244)
+(or (not x1313) x1103)
+(or x1533 x1277 (not x657))
+(or (not x1543) x1452 (not x714))
+(or (not x496) x1411)
+(or (not x484) x161 x62 x444 x899)
+(or (not x1225) (not x1302))
+(or x814 x1349 (not x435))
+(or (not x478) x1462 x258 (not x518) (not x283))
+(or (not x1524) x718 x449 (not x620) x1008)
+(or (not x1249) (not x3) x755)
+(or (not x3) x1085 x843 x819 (not x674))
+(or (not x426) (not x680) x1569)
+(or (not x651) x838 (not x128))
+(or (not x87) x118 (not x826))
+(or (not x944) (not x1324) x831)
+(or (not x242) (not x584) x720 x523 (not x1526))
+(or (not x1334) x1102)
+(or x432 (not x622) x819 x1287 (not x3))
+(or (not x92) x1321)
+(or (not x99) x237)
+(or (not x1360) (not x638) (not x799))
+(or x204 (not x276) x661)
+(or x1529 x349 x881)
+(or x1323 (not x1144) x307)
+(or (not x206) x1418)
+(or (not x659) (not x1513) x733)
+(or x1586 (not x943) (not x884))
+(or x1479 x302 (not x1277) (not x616) x1533)
+(or (not x279) x1307 x1142)
+(or x1524 (not x516) (not x1097))
+(or x729 (not x1132) (not x1448))
+(or (not x378) (not x660) x121)
+(or x1036 (not x900) x93)
+(or x660 x378 x774)
+(or x1244 (not x71) x530 x280 x179)
+(or (not x988) x559)
+(or (not x1137) x719 x6)
+(or x1131 (not x185) x145)
+(or (not x558) (not x700))
+(or (not x66) x1367 x1415)
+(or x1246 (not x737) (not x1151))
+(or (not x666) x1578 x226)
+(or (not x1416) x1241)
+(or x839 (not x1009) (not x1298))
+(or (not x1148) (not x1306) (not x1576))
+(or (not x231) x475)
+(or x1079 (not x1140))
+(or (not x1520) x675)
+(or x965 x1516 x1606)
+(or (not x18) (not x522) (not x757) (not x448) x36)
+(or x828 x1455 (not x1466))
+(or (not x610) (not x650) (not x53) x1397 x596)
+(or (not x1490) (not x121) (not x264))
+(or x1508 (not x648))
+(or (not x661) x860 x276)
+(or (not x1573) x539 (not x602))
+(or x842 (not x1610) (not x943))
+(or x178 (not x762) (not x672))
+(or (not x549) x1576 x938)
+(or x625 x349 (not x1001) (not x881) (not x471))
+(or (not x959) x788 (not x580))
+(or (not x905) (not x1291))
+(or (not x1318) (not x838) x992)
+(or x378 (not x797) (not x660) (not x243) x731)
+(or (not x1151) x1453 (not x737))
+(or x1245 (not x144))
+(or x1002 (not x376) (not x362))
+(or x298 x187)
+(or x754 (not x722) (not x1041))
+(or x746 x555 (not x354))
+(or (not x29) (not x1548) (not x867))
+(or (not x1016) x431 x368)
+(or (not x992) (not x1384))
+(or (not x1281) (not x17) (not x653))
+(or x1442 (not x678) x929 (not x1075) (not x1476))
+(or x522 x757 x448 x36 (not x18))
+(or x835 x627 x996)
+(or (not x740) (not x1595) x503)
+(or (not x764) (not x1455))
+(or (not x1408) (not x1065) (not x550) x1540 x1395)
+(or x417 (not x784))
+(or x715 (not x558) x263)
+(or (not x735) (not x1228) (not x1268))
+(or x783 x720 (not x1361))
+(or x1030 x509 (not x748))
+(or (not x1313) x1363 (not x41) x490 (not x1074))
+(or (not x1175) x159)
+(or x769 (not x140) (not x984))
+(or x915 (not x1488) x1141 (not x284) x1007)
+(or (not x805) (not x118) (not x55))
+(or x1030 (not x238))
+(or x147 x1321 x1351)
+(or (not x90) (not x935) x174)
+(or (not x732) (not x480) x1540 x367 (not x1240))
+(or (not x495) (not x190))
+(or (not x1397) x1387 (not x650))
+(or x837 x1379 x936 (not x895) (not x1293))
+(or (not x524) (not x848))
+(or (not x294) (not x1576) x1515)
+(or (not x869) x1031)
+(or (not x1244) x739)
+(or (not x678) (not x1425) x330)
+(or (not x660) x881 x377)
+(or x814 (not x271) x1500)
+(or (not x326) x1419)
+(or x192 x1151 x197 (not x737) (not x1094))
+(or (not x382) x1083 (not x995))
+(or x1393 (not x532) (not x419))
+(or x284 (not x1488) (not x1007) x1141 (not x915))
+(or x162 (not x452) (not x193))
+(or x49 (not x260) x1406)
+(or x906 (not x349))
+(or (not x274) (not x1579) x869 x1570 x791)
+(or (not x192) (not x1094) (not x510) (not x64) (not x1275))
+(or (not x748) x416 x427 x910 (not x1133))
+(or (not x782) (not x1110) (not x1156))
+(or (not x233) (not x428))
+(or x1529 x512 (not x1226))
+(or x1479 (not x302) (not x626))
+(or x75 x1075 x582)
+(or (not x224) (not x1420) x1606)
+(or x1085 (not x3) x529 x843 x819)
+(or (not x289) x840 x232)
+(or (not x543) (not x70) x949 x219 x1285)
+(or (not x1397) (not x1387) x650 (not x502) (not x463))
+(or x1227 x1356 (not x769) (not x1398) x1168)
+(or (not x1503) x907)
+(or x1192 (not x1369))
+(or x600 (not x588))
+(or x1315 x831)
+(or x881 (not x941) x349)
+(or x160 (not x793) (not x830) x142 (not x533))
+(or x451 (not x872) (not x1562) x789 x1153)
+(or (not x878) x846)
+(or (not x369) (not x876) (not x1106) x337 x980)
+(or (not x497) (not x1138) (not x689))
+(or (not x1547) (not x547) (not x518))
+(or x944 (not x1229) (not x727))
+(or (not x462) (not x636) x1010)
+(or x1362 (not x825) x1544)
+(or (not x1503) (not x495) x332)
+(or x691 (not x1043))
+(or (not x978) x973 x985)
+(or (not x922) (not x722) (not x441))
+(or x101 x46 x1208 (not x636) (not x866))
+(or (not x370) x322 (not x231))
+(or (not x1231) x967 (not x1333) x1084 x259)
+(or (not x803) x102 x783)
+(or (not x1033) x293 (not x150))
+(or (not x225) x321 x944 x1229 x727)
+(or x675 x699 x690 x94 x1088)
+(or x121 x1103 (not x660))
+(or (not x496) (not x667) x683)
+(or x408 (not x285) (not x1035))
+(or x1088 x874 (not x399))
+(or x289 (not x538) x1470)
+(or (not x814) (not x314) (not x1350))
+(or x32 x27 x289)
+(or x686 x999 x446)
+(or (not x747) (not x1481) x1085)
+(or (not x842) x486 (not x267))
+(or (not x899) (not x484) (not x444) (not x161) x316)
+(or (not x180) x895 x936)
+(or x1411 (not x1119) x982)
+(or (not x191) (not x1193))
+(or x610 (not x1397) x133)
+(or x1247 (not x1522) x1118 (not x437) x1219)
+(or x80 (not x972) x103 (not x240) (not x1510))
+(or (not x1595) x155 (not x724) x1487 (not x95))
+(or x973 x1307 x1094 x1142 x192)
+(or x232 x851 (not x399))
+(or x651 (not x1318))
+(or (not x162) (not x452) (not x1372) x1150 (not x1491))
+(or x814 (not x1507) x461)
+(or x61 x467 x33)
+(or (not x1586) x75 x267)
+(or x1317 (not x1388) x1368 (not x512) (not x147))
+(or x1155 (not x1244))
+(or x794 x749)
+(or x223 x1321 (not x701) (not x760) x1188)
+(or (not x524) x349 (not x1001))
+(or (not x1129) x528 x200)
+(or x1496 x1385 (not x135) x373 (not x539))
+(or (not x565) x834 x896)
+(or (not x1260) (not x837) (not x904))
+(or (not x931) (not x346) (not x1332))
+(or x3 (not x622) x1428)
+(or x747 (not x659) x807)
+(or x323 (not x957))
+(or (not x855) (not x1061) x354 x1607 x1348)
+(or x699 x874 (not x293))
+(or (not x660) (not x378) x774)
+(or (not x315) x36)
+(or (not x737) x1246 x5)
+(or (not x975) x648 x622)
+(or (not x1095) x593 (not x1230))
+(or x96 (not x192))
+(or x1244 x1147)
+(or x740 (not x1585) x581)
+(or x4 x913 (not x1182))
+(or x387 x256 x410 x417 x43)
+(or (not x743) (not x1244) (not x1116))
+(or x505 x1073)
+(or x663 (not x393) x458)
+(or x1305 x682 x423 x635 (not x1038))
+(or (not x960) x536 (not x1069) (not x935) (not x34))
+(or (not x192) (not x887))
+(or x474 x1024 x291)
+(or (not x1500) (not x297) (not x1194))
+(or x934 x814 x1469)
+(or (not x334) (not x4) (not x1587) x1005 (not x517))
+(or (not x530) (not x1253))
+(or (not x963) x975 (not x464))
+(or (not x1052) x573 (not x840))
+(or (not x1565) (not x1381))
+(or x1435 x1325 (not x420))
+(or x1461 (not x1109) (not x931))
+(or x890 (not x32) x1023)
+(or (not x1140) x150 (not x293))
+(or x1065 x922 x441)
+(or (not x836) (not x291) x1435)
+(or x1011 x651)
+(or x931 x1092 (not x446) (not x1461) x1060)
+(or x470 x759 x968)
+(or x373 x539 (not x1202))
+(or (not x261) x535 x1051)
+(or (not x902) (not x512) x1047 (not x747) x1317)
+(or (not x1060) (not x1050) (not x661))
+(or x1376 x1170 x947 (not x256) x784)
+(or x898 (not x779))
+(or (not x1258) x26 (not x642))
+(or (not x846) x878 x349 x1001 (not x1242))
+(or (not x924) x401 x940)
+(or x552 x976)
+(or (not x54) (not x147) x981)
+(or x803 x1193 x191 (not x951) (not x524))
+(or x561 (not x1535) (not x1082))
+(or (not x3) (not x511) (not x819))
+(or x822 x1282 x308)
+(or (not x1422) (not x803) (not x951) x1426 x731)
+(or (not x315) x522 (not x971))
+(or (not x503) x1595 x275 x49 (not x740))
+(or x648 x767 (not x100) (not x1508) x975)
+(or (not x369) (not x685) (not x980) x1106 (not x337))
+(or (not x805) (not x814) (not x428))
+(or x1397 x821 (not x1241))
+(or (not x1416) x993 (not x831))
+(or x989 (not x1321) (not x783))
+(or x1611 (not x200) (not x1333))
+(or (not x158) x843 (not x819) (not x1085) (not x3))
+(or x635 (not x1305) (not x1585))
+(or x517 x334 (not x610) (not x1143) (not x53))
+(or x696 x136)
+(or x920 (not x1017))
+(or (not x1554) (not x26) x1272 (not x1350) (not x814))
+(or x978 x1245 x177)
+(or x951 x1361 x172)
+(or (not x276) x1251 (not x204) (not x661) (not x515))
+(or x927 (not x1610))
+(or (not x1569) x426 (not x680))
+(or (not x1377) (not x1165) x1512)
+(or (not x413) (not x53))
+(or (not x48) x1564 x280)
+(or x607 (not x592) (not x788) x1601 (not x1))
+(or x914 x1111 (not x1155))
+(or (not x575) x723 (not x323) (not x1605) (not x937))
+(or (not x1468) x1485 (not x791) x1260 (not x912))
+(or x709 (not x394))
+(or (not x927) (not x842) (not x737) x1151 (not x872))
+(or x38 x1200)
+(or x803 (not x783) x1174 x951 (not x1361))
+(or (not x1361) x761)
+(or x1533 (not x539) x1176)
+(or (not x1226) (not x1317))
+(or (not x1323) x1604 x1527)
+(or (not x652) x1317 x347 (not x512) (not x1269))
+(or (not x1113) x615)
+(or (not x818) x320 (not x1059))
+(or (not x590) (not x537) x1255)
+(or (not x1252) (not x219) (not x718))
+(or (not x466) x308)
+(or (not x635) x567)
+(or x692 x1503 x190 x921 x939)
+(or (not x1212) (not x1014) (not x1550))
+(or x546 (not x627) x980 (not x799) x78)
+(or (not x1064) (not x951) (not x1361))
+(or x912 x791 x1260)
+(or (not x385) x863 (not x1364))
+(or (not x522) x36 x51 (not x757) (not x448))
+(or x125 x767 (not x648))
+(or (not x1324) (not x993))
+(or x514 (not x640) (not x685) x876 x364)
+(or x201 (not x914) x1215 (not x1366) x1611)
+(or (not x615) (not x1164) (not x634))
+(or x481 (not x1421) x1159 (not x11) x1237)
+(or x964 (not x881) x660)
+(or x802 x785 (not x708))
+(or (not x1386) x1440 x827 x114 (not x611))
+(or (not x1168) x874 x505)
+(or x624 (not x1182))
+(or (not x903) x1427)
+(or x1581 (not x1293) x180)
+(or (not x542) (not x1468) x1611)
+(or x876 (not x526) x640)
+(or x763 x651)
+(or (not x1081) (not x1058) (not x1123))
+(or (not x1325) x1291 (not x291))
+(or x1288 (not x877) (not x1518) (not x566) x1387)
+(or x138 x103 (not x240))
+(or (not x1168) x293)
+(or (not x254) (not x852) (not x1284))
+(or x1360 (not x638) x573 x472 x799)
+(or x961 (not x672) x1244 (not x179) (not x1122))
+(or x818 x1010 (not x462))
+(or (not x737) x1271 (not x1223) (not x5) x1151)
+(or (not x1256) (not x1317))
+(or (not x656) (not x1404) (not x1307))
+(or x939 x907)
+(or x871 x811 (not x1050))
+(or x825 x238 (not x1094))
+(or x179 (not x672) x1147)
+(or (not x513) x860)
+(or x811 x48 x282)
+(or x188 x1350 x1486)
+(or (not x1287) (not x432))
+(or (not x773) x709 (not x168))
+(or (not x1118) x1247 (not x1522) x1219 x437)
+(or (not x1179) (not x674) (not x511) (not x1274) x1295)
+(or x378 (not x1103) (not x1490) (not x660) x151)
+(or (not x1354) (not x33))
+(or x1055 x672)
+(or (not x33) (not x891) (not x210))
+(or (not x509) x251)
+(or (not x1031) (not x1111) (not x1013) (not x1099) x1579)
+(or (not x192) (not x1152))
+(or (not x1423) x1455 x828 x447 (not x659))
+(or x660 (not x1167) x378)
+(or x39 (not x17))
+(or (not x874) (not x293) (not x150) (not x1079) x1033)
+(or (not x238) x853 x1094)
+(or (not x462) x1316 x719)
+(or (not x1427) (not x132) x903)
+(or x223 (not x701) x760 (not x1321) x1465)
+(or (not x1233) (not x879) x1340)
+(or (not x810) x1053 (not x1597) (not x585) x577)
+(or (not x838) x517 (not x763) x334 (not x651))
+(or (not x261) (not x1216) (not x1289))
+(or x813 x688 (not x806))
+(or (not x1397) x650 (not x50) (not x917) x106)
+(or x70 x949 (not x333))
+(or (not x1379) (not x273))
+(or (not x1170) (not x1376) x784 x947 (not x417))
+(or (not x1142) (not x973))
+(or (not x1586) (not x1412) x943)
+(or (not x817) x811 (not x1129))
+(or x858 x1067)
+(or (not x498) (not x824) (not x1589))
+(or x1397 x745 x650)
+(or x1584 x424 x482 x742 x279)
+(or (not x778) x721 (not x1010))
+(or x905 x1186)
+(or x1027 x691 (not x373))
+(or (not x951) (not x924) x803 (not x325) (not x1373))
+(or x84 (not x1260))
+(or (not x1601) x539 x373)
+(or (not x1414) x1483)
+(or (not x797) x243 x660 (not x378) (not x774))
+(or (not x245) (not x1376) x1392 (not x1337) x629)
+(or x399 x851 (not x232))
+(or x1596 (not x664) (not x671))
+(or x1385 (not x469))
+(or (not x819) (not x886) x346)
+(or x935 (not x536) (not x34))
+(or x70 x620 x786 x718 (not x1252))
+(or x1587 x650 x1061)
+(or x518 (not x283) x646)
+(or (not x758) x786 x415)
+(or (not x268) x1361 (not x720) x783 x893)
+(or x1052 x538 x1470)
+(or (not x1073) x209 x1028)
+(or x745 (not x1091))
+(or x163 x458 (not x393) x606 x1203)
+(or (not x1520) x690 (not x1028))
+(or (not x620) x718 (not x570))
+(or x48 (not x811) x111 (not x933) (not x1050))
+(or x717 x1177 (not x564))
+(or (not x405) x966 (not x439) x1183 x889)
+(or x679 (not x601) (not x1593) (not x605) x901)
+(or x376 (not x387) (not x239))
+(or (not x1001) x1280 x349)
+(or x1248 (not x917) x24)
+(or (not x840) x675)
+(or (not x293) x1043 x1027 x671 (not x874))
+(or (not x195) (not x370) (not x1350))
+(or (not x1515) (not x1576) x1524 x1212 (not x1008))
+(or (not x133) x596 (not x298) (not x187) (not x865))
+(or x1318 (not x124) (not x518) x1393 x1402)
+(or x1497 x356 (not x1350))
+(or x862 x118 x233)
+(or (not x1379) x976 x1538)
+(or x1034 x495)
+(or x905 x640 x420)
+(or x1431 x1478)
+(or (not x1186) (not x663) (not x606) (not x1417) x1125)
+(or x538 x1371)
+(or (not x946) x885 x1521 x1223 x427)
+(or (not x1573) (not x164) (not x539) (not x396) x373)
+(or x1086 (not x1258) x642 x670 (not x26))
+(or x106 x672 (not x494))
+(or x652 x222 x1317 x512 x347)
+(or x948 x379)
+(or x1102 x479 (not x725))
+(or x1399 (not x1352) (not x1124) (not x292) x617)
+(or (not x589) x88)
+(or (not x259) (not x1231) (not x1084))
+(or x1034 x1007)
+(or (not x1479) x657 x1277 x302 (not x1533))
+(or x217 x413 x1143 (not x991) x15)
+(or x239 x43)
+(or (not x803) x1236)
+(or x821 (not x88) (not x538) (not x1073) x1052)
+(or (not x1543) (not x1442) (not x1075))
+(or x365 (not x591))
+(or x1030 (not x510))
+(or x395 (not x942) x958)
+(or x1321 x1361 x223 (not x783) (not x989))
+(or (not x8) x1354 x1117)
+(or (not x499) x1153 (not x451))
+(or x364 (not x514) x640)
+(or (not x1266) (not x1190))
+(or x293 (not x1312) (not x874))
+(or (not x781) (not x794) x961)
+(or (not x1026) (not x1275) x510 x251 x238)
+(or (not x874) (not x65) x293)
+(or x218 (not x202) x366 (not x1347) (not x1542))
+(or x581 x503 (not x740))
+(or (not x1560) (not x1209))
+(or (not x516) (not x773) (not x709) (not x920) x1017)
+(or x803 (not x783) x930)
+(or (not x1076) x1264 x211)
+(or x349 x430)
+(or x117 (not x1041))
+(or x1167 (not x881) (not x660) x378 x471)
+(or x119 x1141)
+(or (not x375) x525 (not x1275) x1021 (not x510))
+(or (not x278) x709)
+(or x423 x565 (not x567))
+(or x1573 x642 (not x164))
+(or (not x594) (not x1171) x1147)
+(or x808 x380 x1169)
+(or (not x164) (not x912) x1258)
+(or (not x314) (not x1497))
+(or (not x150) (not x293) x1079 x874 x37)
+(or x47 x1150 (not x1477) (not x1454) (not x1012))
+(or x720 (not x893))
+(or (not x1353) (not x651) (not x895))
+(or x378 (not x1368) x660)
+(or x675 x708)
+(or x115 x630 x324)
+(or (not x471) (not x711) x1001)
+(or x466 x1282 (not x645) (not x822) (not x308))
+(or x783 (not x803) (not x1019))
+(or (not x796) (not x1370) (not x198))
+(or (not x526) (not x364))
+(or x1011 x393 (not x208))
+(or x293 x699 (not x232))
+(or x1428 x3 x819)
+(or x700 (not x715) (not x1063) x263 (not x1018))
+(or x4 (not x1341) x1182 (not x780) (not x137))
+(or x685 (not x526))
+(or x873 (not x1087) x40 x363 (not x244))
+(or x818 x1059 x320)
+(or (not x888) x578 x1397)
+(or (not x1365) (not x549))
+(or x1010 (not x462) (not x385))
+(or x1554 x1258)
+(or (not x364) (not x685) x19)
+(or x150 x379 x1079 (not x1541) x1294)
+(or (not x814) (not x477) x1185 x1350 (not x1037))
+(or x712 x525)
+(or x319 x619 (not x489))
+(or (not x699) (not x94) x675)
+(or (not x974) x1563)
+(or x656 x798 (not x372))
+(or (not x295) (not x435))
+(or (not x1469) x814 (not x195) (not x934) (not x1350))
+(or x650 x1397 (not x821) x1241 (not x88))
+(or (not x449) (not x304) (not x570))
+(or (not x135) (not x399))
+(or x542 x1366 x1485)
+(or (not x690) x1380 (not x708) x574 (not x675))
+(or (not x447) x828 x659)
+(or (not x1351) x622)
+(or x1148 (not x648) x1121 (not x975) (not x464))
+(or x1249 x1482 (not x288) x540 x463)
+(or x1557 x1586 x943 x267 (not x1473))
+(or x817 x1611 (not x811))
+(or (not x378) (not x964) x881 x471 x660)
+(or (not x1584) (not x424) x279)
+(or (not x1001) (not x916) x881 (not x349) (not x471))
+(or x742 (not x482) (not x1248))
+(or (not x644) x1536 x963)
+(or x951 x102)
+(or (not x471) (not x711) (not x881))
+(or (not x335) x10 (not x749) (not x826) x1247)
+(or (not x671) x293 (not x874))
+(or (not x118) (not x862) x233)
+(or (not x9) x1191 (not x474) (not x1178) x836)
+(or x432 (not x819) (not x952))
+(or (not x32) (not x672) (not x961) x762 (not x178))
+(or x334 x53 x413 x610 (not x517))
+(or (not x414) x178)
+(or x8 (not x61) (not x1354))
+(or x1603 x874 x1043)
+(or (not x803) x950 (not x731))
+(or x708 x1056 (not x785) x802 (not x353))
+(or x1442 (not x1075) x1452 (not x929) x678)
+(or (not x373) x1183 (not x1601))
+(or x701 (not x1321) (not x223) x1465 (not x760))
+(or (not x1282) x466 (not x1537))
+(or (not x886) x54)
+(or (not x1340) x951 x325)
+(or (not x462) x1059)
+(or (not x289) (not x1502) x840)
+(or (not x1300) x336 x702 x1280 x92)
+(or x1462 x283 x518 x1115 (not x258))
+(or x1196 (not x737) (not x1151))
+(or (not x979) (not x1252) x1515 x786 x1576)
+(or (not x488) x294 (not x1482))
+(or (not x1582) (not x1271) (not x5))
+(or (not x840) (not x690) (not x857))
+(or x929 (not x1583) x884)
+(or (not x474) x1191 x836 (not x1178) (not x792))
+(or (not x503) x740 x571)
+(or (not x559) x612 x841 x650 (not x1397))
+(or x243 (not x731) (not x660))
+(or (not x749) (not x781) x1265)
+(or (not x517) x457 (not x838))
+(or x1569 (not x193) x1072)
+(or (not x266) x1039 x689 x252 x1334)
+(or (not x985) (not x1532) x1335 (not x188) x973)
+(or x1201 x116 (not x1292) (not x808) x744)
+(or (not x525) x267 (not x1593) x1021 x1586)
+(or x315 x503 x740 x714 x1552)
+(or (not x650) x1353 (not x1250))
+(or x1012 (not x77))
+(or (not x366) x1542 x218)
+(or (not x1317) x112)
+(or x526 (not x19) x1354 x514 (not x1130))
+(or x755 x572)
+(or x407 (not x1141) (not x119) (not x1303) x339)
+(or (not x282) (not x655) (not x1547))
+(or (not x1229) x1315 (not x1290))
+(or (not x1304) (not x874) x845)
+(or x349 (not x1445))
+(or (not x379) x1347 x1294 (not x1341) (not x4))
+(or (not x39) (not x1068) (not x351) x17 x644)
+(or (not x814) x1381 (not x1350) (not x400) x995)
+(or x1052 (not x638) x538)
+(or (not x870) x822)
+(or x302 x544 (not x987))
+(or (not x1073) x455 x1028 (not x170) x1329)
+(or (not x1536) x669 (not x758))
+(or x19 (not x876))
+(or (not x41) (not x299) (not x1363))
+(or x176 (not x1589))
+(or x377 x378 x660)
+(or (not x349) (not x471) x625 (not x1001) x881)
+(or (not x842) x1195 (not x927) (not x1307) x1142)
+(or (not x1136) x1205 (not x721))
+(or (not x124) (not x651) x838)
+(or (not x3) (not x819) x843 (not x674) (not x1085))
+(or x1580 x539 x913)
+(or (not x1378) x99 x140 x769 (not x265))
+(or x1148 (not x1306) x1576)
+(or (not x1533) (not x1176) (not x539) (not x1479) x373)
+(or x983 x421 (not x861))
+(or (not x1603) (not x1596) (not x1207) x671 x728)
+(or x151 (not x957) x779)
+(or x592 (not x1371))
+(or x19 x526 (not x1354))
+(or (not x1215) x1611 x914)
+(or (not x1208) (not x636) (not x46))
+(or (not x927) x668 x372)
+(or x657 (not x1486) (not x626))
+(or x1089 x603 x236 (not x1407) x918)
+(or x373 (not x873) x539)
+(or x1222 (not x604) x296)
+(or (not x4) x137 (not x780))
+(or x826 (not x118) (not x87) x1265 (not x1247))
+(or (not x252) x100 x767)
+(or x1410 x67 x1299 (not x1172) x911)
+(or (not x760) (not x701) (not x1465))
+(or x1321 (not x920) (not x893) x268 (not x207))
+(or x1341 x4 (not x925) x379 x1294)
+(or x830 x160 (not x142))
+(or (not x1413) (not x969) (not x844))
+(or (not x354) (not x1348))
+(or (not x1020) (not x3) (not x886) x819 (not x981))
+(or x451 (not x758) (not x1536))
+(or (not x1094) x192 x819 (not x1303) x3)
+(or x109 x660)
+(or x1079 (not x874) (not x37))
+(or x3 (not x952))
+(or (not x672) (not x1055) (not x178) x32 x961)
+(or (not x1235) x811 (not x1050))
+(or x1183 x373 x1601 (not x889) (not x539))
+(or x1131 x487)
+(or (not x250) (not x459) x456 (not x1317) x512)
+(or (not x769) x140 (not x460))
+(or (not x852) x1284 x254)
+(or (not x1611) (not x1366) x1512)
+(or (not x892) x1051)
+(or (not x30) (not x1507) (not x1350) (not x359) (not x814))
+(or x240 (not x972) (not x80))
+(or x1095 x398 x953)
+(or x170 x455 x1329 x1073 x1028)
+(or x1513 x21 (not x846))
+(or x178 (not x1345) x933)
+(or (not x819) (not x1384) x432)
+(or x1151 (not x1271) x1223)
+(or x840 (not x289) (not x366))
+(or (not x596) x610)
+(or (not x334) (not x1005) x1341)
+(or x124 x1393 x1462)
+(or (not x1103) x660 x121)
+(or (not x737) x192 (not x1151) x1094 x1152)
+(or (not x149) (not x277) x1177)
+(or (not x663) (not x1203) (not x163) x458 x393)
+(or (not x1214) x653 (not x811) x48 x1499)
+(or (not x803) x951 (not x35) x588 (not x600))
+(or (not x245) (not x283))
+(or x1013 x360 x1579)
+(or (not x502) x1079 x840 x289 (not x463))
+(or (not x61) x467 (not x33))
+(or x1328 x1479)
+(or (not x1391) (not x81) (not x583))
+(or (not x870) x1282 x1577)
+(or x820 x493)
+(or x134 x27 x960)
+(or x347 (not x652) x222 x1317 (not x512))
+(or x1547 (not x547) x1600)
+(or (not x203) (not x340) x953 (not x1394) (not x105))
+(or x1021 (not x1473) x943 x525 x999)
+(or (not x598) (not x373))
+(or x847 (not x1018) (not x558))
+(or (not x889) (not x1371) (not x1294))
+(or (not x1129) (not x811) x817)
+(or (not x833) (not x1472) x1230)
+(or (not x539) x1378 x373 (not x140) x1410)
+(or (not x620) (not x938) (not x199))
+(or (not x202) (not x1010) (not x1364))
+(or x1350 (not x814) x311 (not x1184) (not x628))
+(or x1289 (not x1478) (not x1216) (not x95) x261)
+(or (not x1033) x150 (not x293))
+(or (not x1157) (not x1592) x1014 (not x857) (not x734))
+(or (not x951) (not x1361) x172)
+(or (not x1397) x850 x1109 x650 (not x1060))
+(or x1379 x895 (not x837))
+(or (not x145) (not x31) (not x487))
+(or (not x1584) x224 x1591)
+(or x927 x1275 (not x519))
+(or x818 (not x320) x1266 (not x1059) x440)
+(or x471 (not x660) (not x881) x378 (not x600))
+(or x234 x1244 (not x914) x179 x578)
+(or x306 (not x295) x25)
+(or x823 (not x192))
+(or (not x1234) (not x1196) (not x1418))
+(or x1162 (not x1181) x350)
+(or x1006 (not x57) (not x1514))
+(or x712 (not x372) (not x1021))
+(or x517 (not x334) x4)
+(or x100 x783 (not x1361) (not x767) x252)
+(or x703 (not x1279))
+(or (not x844) x131 x1568 x1122 x923)
+(or (not x803) (not x1107) x1567)
+(or x476 (not x754) x816 x722 x117)
+(or x871 (not x811) (not x48))
+(or (not x1229) x944 (not x341))
+(or x542 x867 x164)
+(or x1017 x516 x1238)
+(or (not x186) (not x1412))
+(or x1579 x1100 x1111 x1031 x1013)
+(or x441 x1274 x922)
+(or (not x1142) x1425)
+(or (not x973) (not x192))
+(or (not x1307) x1094 x96)
+(or (not x54) (not x147) x886 (not x989) x1163)
+(or x1333 x69 x373 (not x1231) x539)
+(or (not x591) x332 (not x796) x1370 (not x907))
+(or (not x850) x650 (not x1109))
+(or (not x299) x1313)
+(or x1361 x720 x268)
+(or (not x951) (not x1426) x1422)
+(or x1265 (not x10))
+(or x141 (not x1276))
+(or x1476 x1442 x1075)
+(or x180 x1379 (not x1198))
+(or (not x1001) x524 (not x797) (not x349) x243)
+(or x1137 x1176 x719 x1202 (not x177))
+(or (not x1269) x512 (not x652) (not x1317) (not x347))
+(or x648 (not x975) x1252)
+(or (not x1551) x734)
+(or (not x32) (not x178) x840 x289 (not x27))
+(or (not x975) x755 x648)
+(or (not x268) (not x893) x584 x1361 (not x783))
+(or (not x767) x1508)
+(or x1076 x211 (not x1264))
+(or x592 (not x959) (not x1601))
+(or x516 (not x266) (not x709))
+(or x291 x1024 x1178 x1435 x1015)
+(or (not x1436) (not x1523) x1197)
+(or x1148 (not x1090))
+(or (not x1084) x815 (not x967) x1333 (not x1231))
+(or (not x1283) (not x98) (not x1051))
+(or (not x501) (not x371) (not x762) x1352 (not x1055))
+(or (not x1393) x518)
+(or (not x614) x473)
+(or (not x580) (not x1025) (not x498))
+(or x586 (not x1530) (not x1416) (not x631) (not x1253))
+(or (not x817) (not x1119) (not x811) x48 (not x200))
+(or x104 x904 (not x1260))
+(or x1492 (not x1454) (not x126))
+(or x672 x1264 (not x45))
+(or (not x1273) x137 x972)
+(or x1007 (not x713))
+(or x423 x567 (not x565))
+(or x32 x134)
+(or x87 x781)
+(or (not x1374) x409 x1062)
+(or (not x681) x1021 (not x1275))
+(or (not x1448) x183 (not x729))
+(or (not x1513) (not x1455))
+(or (not x125) x443 (not x1358))
+(or (not x1441) x746 (not x120) x1268 (not x735))
+(or x484 (not x462) x508)
+(or (not x1532) (not x1335) x188)
+(or x1039 x1102 x266)
+(or x1562 (not x499))
+(or (not x947) (not x245))
+(or (not x639) x1528 (not x1317))
+(or (not x933) x1050 x276)
+(or (not x1365) (not x114))
+(or x663 x905)
+(or x1257 (not x874) x1079)
+(or (not x1485) (not x1260) (not x1570))
+(or x767 (not x252) x783)
+(or (not x838) (not x992) x1318 x614 (not x651))
+(or x1606 x350 (not x224))
+(or x814 (not x154))
+(or (not x1001) (not x797) (not x652))
+(or x430 (not x898) (not x395))
+(or (not x1008) x722 (not x441) x922 x1524)
+(or x1163 x886 (not x54) x147 x989)
+(or x44 x648 (not x975) (not x432) (not x1351))
+(or x461 x380 x1152)
+(or (not x1329) (not x455))
+(or x78 x599 x457)
+(or x1333 (not x1231) (not x259))
+(or (not x15) (not x217))
+(or (not x775) x538)
+(or (not x23) (not x797) (not x1001))
+(or x1332 (not x1461) x1306 x272 (not x346))
+(or (not x60) x365 x738)
+(or x682 x740 (not x503) x1585 x241)
+(or x546 (not x627) x78 (not x1106) (not x799))
+(or x1567 x797)
+(or (not x557) x381 x932 x954 (not x12))
+(or x997 (not x1577) (not x839))
+(or (not x267) (not x1557))
+(or x630 (not x535) (not x892))
+(or x1608 x246 (not x641))
+(or x820 (not x859) (not x247))
+(or x814 (not x1475) (not x314))
+(or (not x578) (not x568) (not x1179) (not x1460) (not x93))
+(or (not x855) (not x182) (not x1229) (not x944) x220)
+(or (not x1428) x952 (not x53))
+(or (not x185) (not x171) x1131)
+(or x730 x840)
+(or (not x933) (not x48) (not x111))
+(or x211 (not x335))
+(or x734 (not x432) x819)
+(or x280 x361 (not x334) (not x517) x530)
+(or (not x1058) (not x903) x132)
+(or x660 (not x1047) x378)
+(or x1429 x1002 x875)
+(or x896 (not x1342) x111 (not x834) (not x871))
+(or (not x188) (not x978))
+(or x639 (not x112) (not x281))
+(or (not x61) x1354 (not x8))
+(or x190 (not x880) (not x1503))
+(or x633 x1016)
+(or (not x180) x104)
+(or x819 x3 (not x550))
+(or (not x1098) x1057 x181 (not x1429) (not x928))
+(or x1303 x1094 x192)
+(or x258 x539 x245 x283 (not x373))
+(or (not x301) x431 (not x1016))
+(or (not x1307) (not x1401) (not x1142))
+(or (not x1366) x48 (not x817) (not x1119) (not x811))
+(or x927 (not x994))
+(or (not x951) x109 (not x554))
+(or x1568 (not x506))
+(or (not x617) x79 (not x46))
+(or x1132 (not x729))
+(or (not x661) (not x1600) (not x276) x1547 (not x258))
+(or (not x197) (not x206))
+(or x1050 x1559)
+(or (not x1169) x1385 (not x389))
+(or x414 (not x354) (not x1539) (not x735) (not x555))
+(or x1091 (not x933) (not x1050) x867 (not x1144))
+(or (not x593) (not x1095) x1230)
+(or x609 x1472)
+(or (not x637) (not x301) x124 x419 (not x1318))
+(or (not x651) (not x334) (not x599))
+(or x1341 x919 (not x552))
+(or x516 (not x709) (not x1365))
+(or (not x1535) (not x790) x167 x94 (not x1082))
+(or x436 x1252)
+(or x283 (not x661) x1600)
+(or x627 (not x337))
+(or (not x1321) x1361 (not x989) x223 x783)
+(or x1137 (not x719) x6)
+(or x406 x1611 (not x201))
+(or x1421 x11)
+(or (not x1545) (not x142) x793)
+(or (not x1089) (not x236))
+(or x276 (not x800) (not x1375) x918 x661)
+(or x1533 x1328 x743 x1316 (not x1574))
+(or (not x648) x786 x436)
+(or x4 x597 (not x919))
+(or (not x32) (not x134) (not x289) (not x840) x178)
+(or (not x650) x1498)
+(or (not x737) (not x1094) x1151 x192 (not x1453))
+(or (not x1308) (not x1144))
+(or x1142 x656 (not x1307) x372 (not x330))
+(or (not x1209) x955)
+(or x1581 x1190)
+(or x709 (not x207))
+(or x1172 (not x462) (not x413) x1143 (not x1010))
+(or (not x660) x600 (not x378))
+(or (not x961) x1101 x672)
+(or (not x1059) (not x440) (not x390) x1266 (not x818))
+(or (not x48) (not x811) (not x178) x7 x32)
+(or (not x329) (not x49) x1029 (not x1406) (not x260))
+(or x983 x179 (not x1244))
+(or (not x1213) x580 (not x1589))
+(or (not x775) x1052 x32)
+(or (not x1020) x24 (not x1553))
+(or x634 x1566 x615 x493 (not x1164))
+(or x1273 (not x137) x972)
+(or x1179 x1460 (not x234))
+(or x1310 x956 (not x1456))
+(or (not x373) (not x1231) (not x139))
+(or (not x194) (not x1349) x431)
+(or x49 (not x1487))
+(or (not x778) x88)
+(or (not x677) x1019)
+(or x961 x1147 (not x672))
+(or (not x539) (not x373) x507)
+(or (not x615) (not x493))
+(or (not x674) x1295 (not x511) (not x1274) (not x1460))
+(or x1210 x11 (not x329))
+(or x797 x378 (not x1388))
+(or x1430 x727 x665 (not x1498) x1511)
+(or (not x1196) x1234 x1418 (not x1267) (not x197))
+(or (not x1151) (not x927) x1153)
+(or x327 (not x1235) (not x1040) (not x1559) (not x1355))
+(or (not x947) (not x1392) x1337)
+(or x822 x2)
+(or x986 x421 x149)
+(or (not x35) (not x588) (not x951))
+(or (not x553) x616 x882)
+(or (not x193) x1310)
+(or (not x608) (not x767) (not x100))
+(or (not x267) (not x525) x1593)
+(or x729 x1509 (not x404))
+(or (not x927) (not x1586) x1296)
+(or (not x861) (not x888) (not x983) (not x421) x739)
+(or x1229 (not x1511) x321)
+(or x1318 (not x244))
+(or (not x1444) x821)
+(or x225 x1288 (not x1229) x321 (not x944))
+(or (not x192) (not x1433))
+(or x1495 x693 x631 (not x1199) x777)
+(or x1116 x1540 (not x367))
+(or x797 (not x243) x1426 (not x660) (not x378))
+(or x786 x441 (not x922) (not x1274) (not x1252))
+(or x1591 x523)
+(or x943 x1473 (not x267) (not x75) (not x1586))
+(or (not x1248) (not x1584))
+(or (not x744) x450 x469)
+(or x423 (not x682) x1038)
+(or (not x1031) (not x360) (not x1579) (not x1111) x1013)
+(or (not x602) (not x373))
+(or x740 (not x503) (not x166))
+(or x604 x1578)
+(or x1462 x655 (not x544))
+(or (not x1135) x191 x848)
+(or x446 (not x1060))
+(or x726 (not x1322) x846)
+(or x107 (not x532) (not x301) x368 x1016)
+(or (not x767) x262)
+(or x1276 (not x141) (not x116))
+(or (not x243) (not x347) (not x349))
+(or (not x1350) (not x995) x400)
+(or (not x740) x750)
+(or x646 x258 x283)
+(or (not x742) x1584 x1248 (not x482) x279)
+(or x517 x1182)
+(or (not x316) x444 (not x484))
+(or x53 x517 (not x1329))
+(or (not x614) (not x304) x1384)
+(or (not x659) (not x436))
+(or (not x1611) (not x1215) (not x914))
+(or x676 (not x349))
+(or (not x895) (not x104) (not x1190) x904 x936)
+(or x1494 x1192 x384)
+(or (not x943) x1586 (not x1412))
+(or (not x88) (not x538) x290 x821 x1052)
+(or x1455 (not x783) (not x1481))
+(or (not x1157) x734 x857)
+(or x1070 x804 x1458)
+(or (not x214) (not x192))
+(or (not x974) x179 (not x280))
+(or x282 (not x655) x1547)
+(or x443 (not x121) x189 x1490 x264)
+(or (not x1366) (not x1468))
+(or (not x452) x162 x1372 x1012 x1491)
+(or (not x1142) (not x1066) (not x1307))
+(or (not x697) x632 x969 x1297 x1331)
+(or (not x1212) x1576 (not x1515))
+(or x700 x1063 x1018)
+(or (not x1338) (not x1026) (not x1133))
+(or x1478 x58)
+(or (not x385) (not x863) x1364 (not x691) (not x556))
+(or x1417 x420)
+(or (not x437) (not x1522) x826)
+(or (not x587) x988 x341)
+(or (not x1591) (not x397) x516 x965 (not x709))
+(or (not x243) (not x349) (not x524))
+(or (not x151) (not x1363))
+(or (not x1553) (not x1090) x24)
+(or (not x280) (not x1502))
+(or x1411 x486)
+(or x1370 (not x591) x907 x796 x332)
+(or x619 x1504)
+(or (not x379) x150 x1304)
+(or (not x1337) (not x1376) (not x629) x245 (not x1392))
+(or (not x395) (not x812))
+(or (not x1111) (not x1013) (not x1031) x1221 x1579)
+(or (not x1606) (not x1420) x224)
+(or x874 x399 (not x232) (not x293) (not x1088))
+(or (not x1390) (not x755) (not x3) x540 (not x819))
+(or x1231 x445 (not x1333))
+(or (not x334) x517 (not x1329))
+(or x1240 x1116)
+(or (not x469) x389 x1389)
+(or (not x1354) x1130)
+(or x528 (not x201))
+(or x1151 x737 (not x1521))
+(or (not x811) (not x48) (not x896))
+(or x568 x234 x1460 x93 (not x1179))
+(or (not x1126) (not x410) (not x850))
+(or (not x1261) x278 (not x497))
+(or (not x466) x1263)
+(or x1292 (not x1311))
+(or (not x378) (not x1388) (not x797))
+(or x122 (not x1501) x1226)
+(or (not x629) x1376 (not x245))
+(or (not x1189) (not x578))
+(or (not x653) x650 x1093)
+(or x1158 (not x951) (not x879))
+(or x223 (not x893) (not x920) x268 (not x207))
+(or x1170 x417 (not x1376))
+(or (not x603) x1211 x918)
+(or x1033 x966 x366 (not x1257) x202)
+(or x709 x773 x516 x89 x1017)
+(or x538 x638 x289 (not x840) (not x1052))
+(or x1317 (not x916) x1226 x512 (not x1529))
+(or (not x656) x798 x525)
+(or x1526 x516 (not x709))
+(or x1262 (not x280) (not x961))
+(or (not x568) x1179 x578)
+(or (not x1276) x269 x116)
+(or x972 x913)
+(or (not x32) x1050 (not x178) x756 x933)
+(or x1021 x491 x576)
+(or (not x1305) (not x682))
+(or x1459 x1548 (not x1129) (not x200) (not x869))
+(or (not x1473) (not x1094) x618)
+(or x1320 (not x1437) x1238)
+(or (not x94) (not x1088))
+(or x266 x1334 (not x1102) (not x1039) x252)
+(or (not x866) (not x373))
+(or (not x724) (not x740))
+(or (not x164) (not x912) x1086)
+(or x653 x1499 x650 (not x1397) (not x1093))
+(or x55 x233)
+(or (not x730) (not x1489) (not x1203))
+(or x1390 x819 (not x755) (not x572) (not x3))
+(or (not x794) (not x45) (not x961) x10 (not x672))
+(or x512 (not x1000) x456)
+(or (not x815) (not x1333))
+(or x853 (not x192))
+(or (not x294) x938)
+(or (not x349) (not x1528) (not x243))
+(or (not x1371) (not x559) x1052 (not x538) x612)
+(or x29 x813)
+(or x1203 (not x393) (not x1125) (not x458) (not x163))
+(or (not x1172) (not x1400) (not x67))
+(or (not x235) (not x1129) x462)
+(or x1567 (not x349) x1001)
+(or (not x1606) (not x434) x765 x1181 x224)
+(or (not x932) (not x238))
+(or (not x224) (not x1591) (not x965) (not x742) x1606)
+(or (not x329) (not x28))
+(or (not x348) x1489 (not x730) x1203 (not x1470))
+(or x1288 (not x877) (not x313))
+(or x334 (not x651) (not x517) (not x1011) x838)
+(or x891 x19 (not x526) (not x1130) x514)
+(or x90 x536 (not x1069))
+(or x1090 x24 x1553)
+(or x513 x508 (not x603))
+(or x512 (not x1388) x54)
+(or x1244 x280 x974 x179 x530)
+(or (not x564) (not x1177) x849 x149 (not x277))
+(or (not x814) x1350 (not x1486) (not x882) (not x188))
+(or x390 (not x609))
+(or x1292 x808 x116 x1201 x744)
+(or x1016 x373 (not x301) (not x40) (not x539))
+(or (not x369) (not x337) x876)
+(or x951 (not x1064) x1361)
+(or x1611 x1129 (not x1366) x200 (not x1231))
+(or x1455 x1256 x747 x659 x1032)
+(or x691 x863 (not x385))
+(or (not x536) (not x1234) x863)
+(or x462 (not x1189) x1327)
+(or x1076 (not x826) x749 x10 (not x1247))
+(or (not x951) (not x1361) x1236)
+(or (not x1413) (not x844) x1297 x506 (not x1040))
+(or x1510 x972 (not x240) (not x138) (not x103))
+(or (not x839) (not x425) x1517)
+(or (not x799) x1360 (not x472))
+(or (not x650) (not x1397) (not x213))
+(or (not x227) (not x1240) x712)
+(or (not x660) (not x1047) x243)
+(or (not x1298) (not x1517) (not x1254))
+(or x450 (not x1169) x380 (not x808) x469)
+(or x1049 (not x1098) (not x806) x165 x1120)
+(or x54 (not x223) x44 (not x1321) (not x147))
+(or x967 x1333 (not x445) (not x1084) x1231)
+(or (not x975) x125)
+(or x1544 x1362 x271)
+(or x1384 (not x819) (not x432) (not x3) (not x622))
+(or (not x986) x1156 (not x156))
+(or x446 x1420 (not x686))
+(or x677 (not x1001) x336 x349 (not x698))
+(or x1233 x1340 x879)
+(or (not x1052) x538 (not x612) (not x559) x1294)
+(or (not x816) x476 (not x722))
+(or x450 (not x359) x1453)
+(or x674 (not x843))
+(or (not x280) x530 (not x1050) x933 (not x1126))
+(or x634 (not x615) x1164)
+(or (not x896) x933)
+(or (not x1449) (not x211))
+(or (not x814) (not x326) (not x403))
+(or (not x518) x544 (not x707) x1462 (not x655))
+(or (not x238) x1026)
+(or (not x551) (not x709) (not x516) x1561 x938)
+(or x874 (not x205) (not x135))
+(or (not x1010) x462 x781 x101 (not x1264))
+(or x798 (not x1240))
+(or (not x103) x240 x138)
+(or (not x690) (not x1073) (not x1028) (not x675) (not x695))
+(or (not x947) x784 x256)
+(or (not x160) x142 x830)
+(or x1258 x26 x642)
+(or (not x420) (not x1325) x883 (not x1435) x1291)
+(or x755 x649)
+(or (not x1052) (not x1489) (not x840))
+(or x708 x574 x690)
+(or (not x817) x650 (not x694) x1397 x1119)
+(or x709 (not x516) (not x89))
+(or x1350 (not x995) (not x400))
+(or (not x54) x1388 x512 x1368 x1317)
+(or x951 x1609 x803)
+(or x1151 (not x795) x737)
+(or (not x1264) (not x1265) x749 (not x781) x10)
+(or (not x1559) (not x811) (not x1050) x933 (not x48))
+(or x943 (not x1586) (not x267) x854 x1473)
+(or (not x1477) (not x193) (not x485))
+(or x650 (not x1551) (not x857) (not x1397) (not x1498))
+(or x965 x1526)
+(or x1001 x1529)
+(or x1021 (not x1546) (not x1473))
+(or x42 x937 (not x968))
+(or x830 x343 x1545)
+(or x1417 x1325 x364)
+(or (not x840) (not x202))
+(or x1298 x531 (not x1246))
+(or x1381 x1350 (not x814) x400 x995)
+(or x811 (not x933) x1050 x1235 (not x48))
+(or x778 x721 x1010)
+(or x1282 (not x645) x466 x1145 (not x822))
+(or (not x931) x1306)
+(or (not x811) (not x48) (not x1129))
+(or (not x1573) (not x670) x164)
+(or (not x59) (not x1164) x694)
+(or x512 x747 x1317)
+(or (not x1304) (not x65))
+(or x178 (not x517) (not x555))
+(or x951 x1158 (not x964) (not x401) (not x803))
+(or (not x349) (not x1363) x1001)
+(or (not x1260) x837 x904)
+(or x1360 x538)
+(or x288 (not x549))
+(or (not x151) x378 (not x85))
+(or x964 (not x803) x401)
+(or x1255 (not x590) (not x547))
+(or (not x373) x396 (not x539))
+(or x1151 x1153 x927)
+(or x1244 (not x216) (not x179) x961 (not x672))
+(or x868 x522)
+(or x134 x566 x960)
+(or x1508 x189 (not x1358))
+(or x160 x533 x830)
+(or x493 (not x215) x1602)
+(or x1191 x1024 x291)
+(or (not x372) x247 x1094)
+(or (not x224) x1584 x1591 x965 (not x1606))
+(or x130 x1441 (not x1534))
+(or (not x160) (not x142) x533 (not x830) (not x793))
+(or x88 x1073 (not x538))
+(or (not x506) x1122)
+(or (not x186) (not x1029))
+(or x1211 (not x236))
+(or x3 x572)
+(or (not x47) (not x1477) (not x77))
+(or (not x334) x835 (not x651))
+(or x1111 (not x1100) (not x1013))
+(or x1372 (not x193))
+(or (not x1480) (not x1250) x129 (not x1286) (not x412))
+(or (not x716) x1361)
+(or (not x1001) x349 (not x243) x797 x652)
+(or x973 x1335 x1532 (not x985) x188)
+(or x1050 (not x1060) x1600 x1109 x933)
+(or (not x651) x280 (not x838) x530 x1409)
+(or (not x968) x1605)
+(or (not x981) x3 (not x550))
+(or x242 (not x500))
+(or x510 (not x12) (not x1275))
+(or (not x510) x246 x1275)
+(or (not x1159) (not x656))
+(or (not x1473) x267 (not x453) x1586 x943)
+(or (not x262) (not x783) x1361 x100 x767)
+(or (not x59) x48 (not x178) (not x811) (not x32))
+(or (not x443) x958 (not x942))
+(or x1510 (not x80))
+(or (not x1599) (not x615) x1113)
+(or (not x650) (not x1286))
+(or (not x1486) x616)
+(or (not x347) x797)
+(or x163 x1186 (not x458))
+(or (not x1116) (not x732) x257 x1397 x650)
+(or x93 (not x668))
+(or (not x1463) (not x832) x404 (not x729) x1509)
+(or (not x516) (not x207) (not x1017))
+(or x147 x223 (not x54) x44 (not x1321))
+(or (not x1223) (not x1521) x416)
+(or x1473 x267 x453)
+(or x915 x407 (not x1303))
+(or (not x42) x937 x968 (not x1605) (not x1319))
+(or x1499 (not x17))
+(or x1342 (not x1305))
+(or (not x122) (not x1443) (not x352))
+(or (not x620) x411 x718 x1148 x963)
+(or (not x1394) x295 x152)
+(or (not x1536) (not x1365) x451)
+(or x49 (not x155) x740)
+(or x773 x736)
+(or x1142 x1307 (not x1421) (not x656) x372)
+(or (not x1235) x1040 x1355)
+(or x562 x1443)
+(or x1312 x303 (not x30) (not x1204) x205)
+(or x355 x1080 (not x1048) (not x1409) x340)
+(or (not x461) x814 (not x1350) x30 x1507)
+(or (not x3) (not x819) x344)
+(or (not x1112) x918)
+(or (not x479) x1261 x1612)
+(or x1574 x179 (not x732))
+(or (not x51) x448)
+(or (not x1583) x267 x1473)
+(or (not x969) (not x1297) x1042 x1331 x632)
+(or (not x1053) (not x104) x838)
+(or x743 (not x513) x515 (not x1574) (not x282))
+(or x40 (not x373))
+(or (not x627) x1106 (not x546))
+(or x951 x1509 x1217)
+(or (not x88) x1073 x538)
+(or x405 x439)
+(or x737 x1151 x1453)
+(or x927 (not x656) x372 (not x668) (not x842))
+(or x1539 x746)
+(or (not x599) (not x457) x78)
+(or x1068 (not x351) x39 x1281 (not x644))
+(or x516 (not x709) (not x89))
+(or x708 x785 (not x802))
+(or x539 (not x1496) (not x135) x338 (not x373))
+(or (not x1374) x409 (not x1542))
+(or x1299 x140)
+(or x895 (not x936) (not x1293) (not x1379) x837)
+(or x14 (not x1211) (not x311))
+(or x1395 (not x963))
+(or x599 x838 x517 (not x334) x651)
+(or x1597 x519)
+(or (not x749) x87 (not x1264))
+(or x109 (not x774) x951 x86 (not x803))
+(or (not x1400) (not x1299))
+(or x814 x1006 x1302)
+(or x407 (not x819) x3 x1094 (not x192))
+(or (not x1270) (not x516) x709)
+(or x1133 x748 x427 (not x416) x1396)
+(or (not x1579) (not x1221))
+(or (not x1317) x1269 (not x512))
+(or x709 x516 (not x965) (not x1526) x1591)
+(or x565 (not x567) x635 (not x1171) x1342)
+(or (not x1010) (not x661) x629)
+(or (not x1331) (not x632) x1042 x969 (not x1297))
+(or x894 x927 x5)
+(or x929 x1476 x1075)
+(or (not x783) x1361 (not x1174))
+(or (not x1053) x1353 (not x838) x895 (not x651))
+(or x414 x735 x555)
+(or x1397 x650 x770)
+(or x1350 x311 (not x628) x1279 (not x814))
+(or (not x170) x1028 x1329 (not x574) (not x1073))
+(or x1591 (not x709) x1526)
+(or (not x736) x89 x404)
+(or (not x1361) (not x159))
+(or x293 (not x232) (not x287))
+(or (not x471) x600)
+(or (not x390) x1447 (not x320))
+(or (not x1347) x379)
+(or (not x683) (not x486) (not x667))
+(or (not x1008) x476)
+(or x164 (not x912) x1260 (not x1258) x1573)
+(or (not x496) x1606)
+(or (not x60) (not x110))
+(or (not x301) (not x373) (not x873))
+(or x1273 x845)
+(or x746 x1228 x735 x1441 (not x1268))
+(or (not x530) (not x1311))
+(or (not x532) (not x1016) x301 (not x194) (not x368))
+(or x925 (not x1341))
+(or (not x815) x153 x445 x259 x1185)
+(or (not x239) x387 x376)
+(or (not x241) x210)
+(or x138 x1510 x240)
+(or x893 x268 (not x223))
+(or x1244 x216 (not x961))
+(or x842 (not x1440) x251)
+(or x1307 x96 (not x1094))
+(or x1373 x924 x803)
+(or x26 (not x642) x670)
+(or (not x911) (not x1514) x142 (not x1127) x1400)
+(or (not x822) x58 (not x425))
+(or x1499 (not x653) (not x48) x811 x508)
+(or (not x952) (not x53) x816)
+(or (not x596) x650 x1397)
+(or (not x1124) (not x617) (not x1399) x1352 (not x292))
+(or x221 x494 (not x462))
+(or (not x1378) x265 (not x328))
+(or (not x713) x284 (not x1141))
+(or (not x1350) x805 (not x814) (not x233) (not x654))
+(or (not x994) (not x372) x656)
+(or (not x1094) x192 x1083 (not x238) x251)
+(or (not x1270) x709 (not x1591))
+(or x737 x885 (not x5))
+(or x1498 x857)
+(or (not x204) x772 x1506)
+(or x1251 (not x513) (not x282))
+(or x223 (not x1346) x659)
+(or (not x244) (not x40) (not x363))
+(or x1012 (not x1105) x956)
+(or x803 (not x1222))
+(or x1128 (not x1463) (not x832))
+(or (not x1117) (not x33) x467)
+(or (not x767) (not x100) x125)
+(or (not x806) x602)
+(or x54 x981 x147)
+(or x465 x1206 x31)
+(or (not x166) (not x740) x503)
+(or x275 (not x503) (not x724))
+(or (not x1175) x38)
+(or x648 x1114 (not x767))
+(or x1354 x210 (not x891) x8 x61)
+(or x1023 (not x890) x942 (not x178) x1343)
+(or (not x459) x660 (not x881))
+(or (not x1181) (not x224))
+(or x1591 x965 (not x224) (not x1516) (not x1606))
+(or x904 x818 (not x462))
+(or (not x3) (not x432) x1314 (not x622) (not x819))
+(or x948 (not x1341) (not x1294))
+(or (not x1536) (not x1524) x1330 x1008 (not x758))
+(or x3 (not x1384))
+(or x809 (not x250) (not x829))
+(or (not x100) x252 (not x783) (not x1361) x767)
+(or x1478 x870 (not x318))
+(or (not x137) (not x373) x955)
+(or x169 x144 x254)
+(or (not x965) (not x1516) (not x1591) (not x224) x1606)
+(or (not x1247) (not x1219))
+(or x389 (not x1169) (not x1385))
+(or (not x873) x1087 x40 x244 (not x152))
+(or x517 x457 x838)
+(or (not x372) (not x481) x1142)
+(or (not x1016) (not x368) x107 (not x532) x301)
+(or x1410 x539 (not x373) x140 x1378)
+(or x1052 x379 x559)
+(or (not x1610) x943 x1473)
+(or x27 x178)
+(or x326 (not x157) x1350 (not x814) (not x1419))
+(or (not x827) (not x658) (not x1440))
+(or (not x994) (not x900) x93)
+(or x840 x178 x134)
+(or (not x1127) x64 x1225)
+(or (not x637) x301 (not x124))
+(or (not x427) (not x416) x748 (not x1133) (not x766))
+(or x783 (not x990))
+(or (not x1455) x747 (not x1032))
+(or x137 (not x123) (not x103))
+(or (not x259) (not x1333) x1231)
+(or (not x962) (not x726) x1455)
+(or x954 (not x251) (not x1275))
+(or (not x998) x1214 x743)
+(or (not x1151) x872 (not x737))
+(or x1307 x482 x1021)
+(or x1245 x177 x6)
+(or (not x585) (not x577) (not x1053))
+(or (not x530) (not x1080) (not x651))
+(or (not x740) (not x1326))
+(or (not x601) x483 x679 x901 (not x1593))
+(or (not x877) (not x650))
+(or (not x645) x822 x1263)
+(or (not x12) (not x238) x510)
+(or x201 x200 x914 x1129 (not x528))
+(or (not x919) (not x1146) (not x56))
+(or (not x867) x1459 (not x1366))
+(or (not x313) x1387)
+(or x1231 x1611 x1366)
+(or (not x1281) x644 x39)
+(or (not x1524) (not x1212))
+(or (not x267) x901)
+(or (not x650) (not x841))
+(or x1550 x1014 x1451 (not x1212) x1582)
+(or x660 x151 (not x378) x1103 (not x121))
+(or (not x463) (not x289) (not x202))
+(or x1082 (not x1073) x1028)
+(or x1214 x858 (not x860))
+(or (not x758) (not x938) x1562)
+(or (not x476) x722 (not x816))
+(or (not x786) (not x1527))
+(or x717 x277)
+(or x120 x1441)
+(or (not x1365) (not x1561))
+(or x466 x766 (not x1432))
+(or (not x917) (not x1248) (not x24))
+(or x462 (not x1010) x624)
+(or (not x1397) x614 (not x992) (not x355) x650)
+(or x234 x578 x1189 x1244 x179)
+(or (not x1307) x372 x481 x656 x1142)
+(or (not x1465) x1321)
+(or (not x180) (not x1266) x373)
+(or (not x867) x1084 (not x312))
+(or x1479 (not x1574) (not x1316))
+(or x170 (not x1073) x574)
+(or x718 x620 x963 x1090 (not x1148))
+(or x1552 (not x503) (not x868))
+(or (not x902) x512 (not x1256))
+(or x1010 (not x462) (not x1172))
+(or x1251 (not x513) (not x743))
+(or (not x747) (not x807) (not x659) (not x1256) x1455)
+(or (not x548) x1117)
+(or (not x951) (not x930) x803 x1361 x783)
+(or x1106 x876)
+(or x916 x1317 x1501)
+(or x525 x901)
+(or x1091 x1144 x1050 x29 x933)
+(or x767 x1114 x100)
+(or (not x1453) x461 (not x380) x359 (not x1152))
+(or x518 x1462 (not x544))
+(or (not x276) x661 x860)
+(or x653 x1093 (not x650))
+(or x783 (not x224) (not x1606) x1361 (not x683))
+(or x1453 x1094)
+(or (not x436) x1455 x828)
+(or (not x881) (not x660) x471 x378 x1373)
+(or x1018 (not x847))
+(or x1000 (not x456) x459 x512 x1317)
+(or x48 x811 (not x508))
+(or (not x786) (not x1576) x1515 (not x1252) (not x979))
+(or x198 (not x539) (not x495) x373 (not x1034))
+(or (not x1066) x1142 (not x372))
+(or x1097 (not x1465))
+(or (not x110) (not x796) (not x1370))
+(or (not x23) x1317 x639 (not x512) x1528)
+(or x963 (not x1090) (not x718))
+(or (not x240) x138 (not x1510))
+(or (not x856) x814 x1185)
+(or x416 (not x910) x748)
+(or (not x565) (not x834) (not x871))
+(or (not x1579) x360 (not x1013))
+(or x50 (not x650) x106)
+(or x650 (not x857) x1397 (not x1498) x1551)
+(or (not x463) x840 x289 (not x150) (not x502))
+(or (not x1118) (not x1165))
+(or x48 (not x871) (not x811) (not x933) (not x1050))
+(or x1350 (not x814) x1185 x856 (not x477))
+(or x1386 (not x238) x927)
+(or x589 x669 x1405)
+(or x1397 (not x917) (not x1424))
+(or x1561 (not x1361))
+(or (not x1356) (not x695) (not x778))
+(or (not x1338) x251)
+(or (not x949) (not x333) (not x70))
+(or x364 (not x685) x526 (not x640) x876)
+(or (not x981) x989 x147 (not x54) x1163)
+(or x443 (not x66))
+(or x1433 (not x1272) (not x1224) x418 (not x165))
+(or (not x1047) x747 x1317)
+(or (not x1573) (not x396) (not x373) x164 x539)
+(or (not x922) x1065 (not x441))
+(or (not x1056) x785)
+(or (not x179) (not x914) x578 (not x1244) (not x234))
+(or (not x1255) (not x386))
+(or (not x1202) x177)
+(or x1310 (not x1105) x468)
+(or x170 x217 x290)
+(or (not x399) x851 (not x1073))
+(or x840 x502 (not x366))
+(or (not x1132) x729 x1448)
+(or (not x151) x1001 (not x1313))
+(or (not x1146) x1371)
+(or (not x1426) x243)
+(or x1115 (not x478) (not x326))
+(or (not x1573) x1258)
+(or x1450 (not x349) x471 (not x881) x1001)
+(or x1327 x1177 x643 (not x598) (not x787))
+(or x1269 x1317 x512)
+(or x234 (not x201) x179 x578 x1244)
+(or (not x1538) (not x1379) (not x976))
+(or x893 (not x584) (not x783))
+(or (not x1452) x1552)
+(or (not x867) (not x1548) x1611)
+(or (not x801) (not x467) (not x792))
+(or x911 x1514 (not x1127) (not x1400) (not x160))
+(or x96 (not x1142))
+(or (not x427) (not x1223))
+(or (not x370) x195 x1350)
+(or (not x1479) (not x657) x1533)
+(or x95 (not x1289) x1478 (not x1216) x892)
+(or x209 x1329 (not x1028))
+(or x819 (not x1285) (not x1085))
+(or x1005 (not x611) x1471)
+(or (not x1129) x200 (not x1611) x1366 (not x1231))
+(or (not x1059) x462 x104 (not x1010) x904)
+(or (not x606) x458 (not x163))
+(or x1128 x1383)
+(or x1108 x825)
+(or x741 x118 (not x805))
+(or (not x1428) (not x610) (not x1041))
+(or (not x295) (not x152) (not x1394))
+(or (not x1327) (not x1177) x643)
+(or x892 x630 x535)
+(or x1316 (not x1077) (not x998) (not x1328) (not x579))
+(or x1361 (not x783) x683)
+(or (not x646) x478 (not x326))
+(or x393 (not x606))
+(or x503 (not x1552) (not x868))
+(or x1055 (not x1352) (not x762))
+(or (not x813) (not x867) (not x29) (not x462) (not x1010))
+(or x886 (not x3) (not x1408) (not x819) (not x981))
+(or x1253 (not x777) x1416 (not x1530) (not x586))
+(or (not x67) x1143)
+(or (not x44) (not x975) x622)
+(or x578 x93)
+(or (not x1608) x1350 (not x814) (not x80) (not x138))
+(or (not x1597) x1053 (not x810) x585 (not x577))
+(or (not x904) (not x838) x651)
+(or x41 x42 (not x1074))
+(or (not x245) x373 x258)
+(or (not x1118) (not x437) (not x1247))
+(or x48 (not x1050) (not x933) (not x811) x1355)
+(or x1546 x446)
+(or (not x251) x510 x932 x238 x1275)
+(or x1014 x1592 x1157 x1551 (not x734))
+(or x99 (not x1302) (not x460))
+(or (not x360) x1475)
+(or x1498 x727 (not x1430))
+(or x384 x1369 x1438)
+(or (not x234) (not x93) (not x1179))
+(or (not x373) (not x899) (not x539))
+(or (not x406) x201 x1611 (not x1366) (not x914))
+(or (not x1533) (not x1316))
+(or x844 (not x969) x1413)
+(or x1297 (not x1042))
+(or x135 (not x303) (not x874))
+(or (not x754) x525)
+(or x1321 (not x268) x207 (not x893) (not x920))
+(or x1447 x833)
+(or x59 x32)
+(or x1136 (not x507) (not x721) (not x175) (not x1205))
+(or (not x94) (not x167) (not x1082) x1003 x1535)
+(or (not x290) x1028 x1082)
+))
diff --git a/test/regress/regress4/Makefile.am b/test/regress/regress4/Makefile.am
new file mode 100644
index 0000000..5a31fb2
--- /dev/null
+++ b/test/regress/regress4/Makefile.am
@@ -0,0 +1,48 @@
+SUBDIRS = .
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	bug143.smt \
+	C880mul.miter.shuffled-as.sat03-348.smt \
+	comb2.shuffled-as.sat03-420.smt \
+	hole10.cvc \
+	instance_1151.smt \
+	NEQ016_size5.smt
+
+EXTRA_DIST = $(TESTS)
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress4 test
+regress regress4 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress1 regress2 regress3
+regress0 regress1 regress2 regress3:
diff --git a/test/regress/regress4/Makefile.in b/test/regress/regress4/Makefile.in
new file mode 100644
index 0000000..adc4e6d
--- /dev/null
+++ b/test/regress/regress4/Makefile.in
@@ -0,0 +1,1216 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = test/regress/regress4
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+
+# old-style (pre-automake 1.12) test harness
+ at AUTOMAKE_1_11_TRUE@TESTS_ENVIRONMENT = \
+ at AUTOMAKE_1_11_TRUE@	$(LOG_COMPILER) \
+ at AUTOMAKE_1_11_TRUE@	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+SUBDIRS = .
+ at mk_empty@BINARY = cvc4
+LOG_COMPILER = @srcdir@/../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS = bug143.smt \
+	C880mul.miter.shuffled-as.sat03-348.smt \
+	comb2.shuffled-as.sat03-420.smt \
+	hole10.cvc \
+	instance_1151.smt \
+	NEQ016_size5.smt
+
+EXTRA_DIST = $(TESTS)
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress4/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/regress/regress4/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+bug143.smt.log: bug143.smt
+	@p='bug143.smt'; \
+	b='bug143.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+C880mul.miter.shuffled-as.sat03-348.smt.log: C880mul.miter.shuffled-as.sat03-348.smt
+	@p='C880mul.miter.shuffled-as.sat03-348.smt'; \
+	b='C880mul.miter.shuffled-as.sat03-348.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+comb2.shuffled-as.sat03-420.smt.log: comb2.shuffled-as.sat03-420.smt
+	@p='comb2.shuffled-as.sat03-420.smt'; \
+	b='comb2.shuffled-as.sat03-420.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+hole10.cvc.log: hole10.cvc
+	@p='hole10.cvc'; \
+	b='hole10.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+instance_1151.smt.log: instance_1151.smt
+	@p='instance_1151.smt'; \
+	b='instance_1151.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+NEQ016_size5.smt.log: NEQ016_size5.smt
+	@p='NEQ016_size5.smt'; \
+	b='NEQ016_size5.smt'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-TESTS check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags ctags-am distclean distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+end at mk_if@
+
+#if CVC4_BUILD_PROFILE_COMPETITION
+#else
+#TESTS += \
+#	error.cvc
+#endif
+#
+# and make sure to distribute it
+#EXTRA_DIST += \
+#	error.cvc
+
+# synonyms for "check" in this directory
+.PHONY: regress regress4 test
+regress regress4 test: check
+
+# do nothing in this subdir
+.PHONY: regress0 regress1 regress2 regress3
+regress0 regress1 regress2 regress3:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/regress/regress4/NEQ016_size5.smt b/test/regress/regress4/NEQ016_size5.smt
new file mode 100644
index 0000000..ec56385
--- /dev/null
+++ b/test/regress/regress4/NEQ016_size5.smt
@@ -0,0 +1,27 @@
+(benchmark NEQ016_size5.smt
+:source {
+CADE ATP System competition. See http://www.cs.miami.edu/~tptp/CASC
+ for more information. 
+
+This benchmark was obtained by trying to find a finite model of a first-order 
+formula (Albert Oliveras).
+}
+:status unsat
+:category { crafted }
+:difficulty { 0 }
+:logic QF_UF
+:extrapreds ((p2 U))
+:extrafuns ((f1 U U U))
+:extrapreds ((p4 U))
+:extrapreds ((p3 U))
+:extrafuns ((c6 U))
+:extrafuns ((c5 U))
+:extrafuns ((c7 U))
+:extrafuns ((c_0 U))
+:extrafuns ((c_1 U))
+:extrafuns ((c_2 U))
+:extrafuns ((c_3 U))
+:extrafuns ((c_4 U))
+:formula 
+( and 
+( distinct c_0 c_1 c_2 c_3 c_4 )(or (not (p2 c_0)) (not (p2 c_0)) (p4 (f1 c_0 c_0)) (p3 (f1 c_0 c_0)) )(or (not (p2 c_0)) (not (p2 c_1)) (p4 (f1 c_1 c_0)) (p3 (f1 c_1 c_0)) )(or (not (p2 c_0)) (not (p2 c_2)) (p4 (f1 c_2 c_0)) (p3 (f1 c_2 c_0)) )(or (not (p2 c_0)) (not (p2 c_3)) (p4 (f1 c_3 c_0)) (p3 (f1 c_3 c_0)) )(or (not (p2 c_0)) (not (p2 c_4)) (p4 (f1 c_4 c_0)) (p3 (f1 c_4 c_0)) )(or (not (p2 c_1)) (not (p2 c_0)) (p4 (f1 c_0 c_1)) (p3 (f1 c_0 c_1)) )(or (not (p2 c_1)) (not (p2 c_1))  [...]
diff --git a/test/regress/regress4/bug143.smt b/test/regress/regress4/bug143.smt
new file mode 100644
index 0000000..21c588a
--- /dev/null
+++ b/test/regress/regress4/bug143.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 at 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 ) (  [...]
+    ( <= ( + ( + ( * 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/regress4/comb2.shuffled-as.sat03-420.smt b/test/regress/regress4/comb2.shuffled-as.sat03-420.smt
new file mode 100644
index 0000000..b1d9309
--- /dev/null
+++ b/test/regress/regress4/comb2.shuffled-as.sat03-420.smt
@@ -0,0 +1,144405 @@
+;;; Taken from SAT-03 Competition Problems
+;;; http://www.satlib.org/Benchmarks/SAT/New/Competition-03/distrib-shuffled.tar.bz2
+;;; industrial/simon/sat02/comb2.shuffled-as.sat03-420.cnf.gz
+;;; smtlib file generated using a modified version of dimacs_to_smt.pl
+
+(benchmark b
+:status unsat
+:logic QF_UF
+:extrapreds ((x1))
+: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))
+:extrapreds ((x770))
+:extrapreds ((x771))
+:extrapreds ((x772))
+:extrapreds ((x773))
+:extrapreds ((x774))
+:extrapreds ((x775))
+:extrapreds ((x776))
+:extrapreds ((x777))
+:extrapreds ((x778))
+:extrapreds ((x779))
+:extrapreds ((x780))
+:extrapreds ((x781))
+:extrapreds ((x782))
+:extrapreds ((x783))
+:extrapreds ((x784))
+:extrapreds ((x785))
+:extrapreds ((x786))
+:extrapreds ((x787))
+:extrapreds ((x788))
+:extrapreds ((x789))
+:extrapreds ((x790))
+:extrapreds ((x791))
+:extrapreds ((x792))
+:extrapreds ((x793))
+:extrapreds ((x794))
+:extrapreds ((x795))
+:extrapreds ((x796))
+:extrapreds ((x797))
+:extrapreds ((x798))
+:extrapreds ((x799))
+:extrapreds ((x800))
+:extrapreds ((x801))
+:extrapreds ((x802))
+:extrapreds ((x803))
+:extrapreds ((x804))
+:extrapreds ((x805))
+:extrapreds ((x806))
+:extrapreds ((x807))
+:extrapreds ((x808))
+:extrapreds ((x809))
+:extrapreds ((x810))
+:extrapreds ((x811))
+:extrapreds ((x812))
+:extrapreds ((x813))
+:extrapreds ((x814))
+:extrapreds ((x815))
+:extrapreds ((x816))
+:extrapreds ((x817))
+:extrapreds ((x818))
+:extrapreds ((x819))
+:extrapreds ((x820))
+:extrapreds ((x821))
+:extrapreds ((x822))
+:extrapreds ((x823))
+:extrapreds ((x824))
+:extrapreds ((x825))
+:extrapreds ((x826))
+:extrapreds ((x827))
+:extrapreds ((x828))
+:extrapreds ((x829))
+:extrapreds ((x830))
+:extrapreds ((x831))
+:extrapreds ((x832))
+:extrapreds ((x833))
+:extrapreds ((x834))
+:extrapreds ((x835))
+:extrapreds ((x836))
+:extrapreds ((x837))
+:extrapreds ((x838))
+:extrapreds ((x839))
+:extrapreds ((x840))
+:extrapreds ((x841))
+:extrapreds ((x842))
+:extrapreds ((x843))
+:extrapreds ((x844))
+:extrapreds ((x845))
+:extrapreds ((x846))
+:extrapreds ((x847))
+:extrapreds ((x848))
+:extrapreds ((x849))
+:extrapreds ((x850))
+:extrapreds ((x851))
+:extrapreds ((x852))
+:extrapreds ((x853))
+:extrapreds ((x854))
+:extrapreds ((x855))
+:extrapreds ((x856))
+:extrapreds ((x857))
+:extrapreds ((x858))
+:extrapreds ((x859))
+:extrapreds ((x860))
+:extrapreds ((x861))
+:extrapreds ((x862))
+:extrapreds ((x863))
+:extrapreds ((x864))
+:extrapreds ((x865))
+:extrapreds ((x866))
+:extrapreds ((x867))
+:extrapreds ((x868))
+:extrapreds ((x869))
+:extrapreds ((x870))
+:extrapreds ((x871))
+:extrapreds ((x872))
+:extrapreds ((x873))
+:extrapreds ((x874))
+:extrapreds ((x875))
+:extrapreds ((x876))
+:extrapreds ((x877))
+:extrapreds ((x878))
+:extrapreds ((x879))
+:extrapreds ((x880))
+:extrapreds ((x881))
+:extrapreds ((x882))
+:extrapreds ((x883))
+:extrapreds ((x884))
+:extrapreds ((x885))
+:extrapreds ((x886))
+:extrapreds ((x887))
+:extrapreds ((x888))
+:extrapreds ((x889))
+:extrapreds ((x890))
+:extrapreds ((x891))
+:extrapreds ((x892))
+:extrapreds ((x893))
+:extrapreds ((x894))
+:extrapreds ((x895))
+:extrapreds ((x896))
+:extrapreds ((x897))
+:extrapreds ((x898))
+:extrapreds ((x899))
+:extrapreds ((x900))
+:extrapreds ((x901))
+:extrapreds ((x902))
+:extrapreds ((x903))
+:extrapreds ((x904))
+:extrapreds ((x905))
+:extrapreds ((x906))
+:extrapreds ((x907))
+:extrapreds ((x908))
+:extrapreds ((x909))
+:extrapreds ((x910))
+:extrapreds ((x911))
+:extrapreds ((x912))
+:extrapreds ((x913))
+:extrapreds ((x914))
+:extrapreds ((x915))
+:extrapreds ((x916))
+:extrapreds ((x917))
+:extrapreds ((x918))
+:extrapreds ((x919))
+:extrapreds ((x920))
+:extrapreds ((x921))
+:extrapreds ((x922))
+:extrapreds ((x923))
+:extrapreds ((x924))
+:extrapreds ((x925))
+:extrapreds ((x926))
+:extrapreds ((x927))
+:extrapreds ((x928))
+:extrapreds ((x929))
+:extrapreds ((x930))
+:extrapreds ((x931))
+:extrapreds ((x932))
+:extrapreds ((x933))
+:extrapreds ((x934))
+:extrapreds ((x935))
+:extrapreds ((x936))
+:extrapreds ((x937))
+:extrapreds ((x938))
+:extrapreds ((x939))
+:extrapreds ((x940))
+:extrapreds ((x941))
+:extrapreds ((x942))
+:extrapreds ((x943))
+:extrapreds ((x944))
+:extrapreds ((x945))
+:extrapreds ((x946))
+:extrapreds ((x947))
+:extrapreds ((x948))
+:extrapreds ((x949))
+:extrapreds ((x950))
+:extrapreds ((x951))
+:extrapreds ((x952))
+:extrapreds ((x953))
+:extrapreds ((x954))
+:extrapreds ((x955))
+:extrapreds ((x956))
+:extrapreds ((x957))
+:extrapreds ((x958))
+:extrapreds ((x959))
+:extrapreds ((x960))
+:extrapreds ((x961))
+:extrapreds ((x962))
+:extrapreds ((x963))
+:extrapreds ((x964))
+:extrapreds ((x965))
+:extrapreds ((x966))
+:extrapreds ((x967))
+:extrapreds ((x968))
+:extrapreds ((x969))
+:extrapreds ((x970))
+:extrapreds ((x971))
+:extrapreds ((x972))
+:extrapreds ((x973))
+:extrapreds ((x974))
+:extrapreds ((x975))
+:extrapreds ((x976))
+:extrapreds ((x977))
+:extrapreds ((x978))
+:extrapreds ((x979))
+:extrapreds ((x980))
+:extrapreds ((x981))
+:extrapreds ((x982))
+:extrapreds ((x983))
+:extrapreds ((x984))
+:extrapreds ((x985))
+:extrapreds ((x986))
+:extrapreds ((x987))
+:extrapreds ((x988))
+:extrapreds ((x989))
+:extrapreds ((x990))
+:extrapreds ((x991))
+:extrapreds ((x992))
+:extrapreds ((x993))
+:extrapreds ((x994))
+:extrapreds ((x995))
+:extrapreds ((x996))
+:extrapreds ((x997))
+:extrapreds ((x998))
+:extrapreds ((x999))
+:extrapreds ((x1000))
+:extrapreds ((x1001))
+:extrapreds ((x1002))
+:extrapreds ((x1003))
+:extrapreds ((x1004))
+:extrapreds ((x1005))
+:extrapreds ((x1006))
+:extrapreds ((x1007))
+:extrapreds ((x1008))
+:extrapreds ((x1009))
+:extrapreds ((x1010))
+:extrapreds ((x1011))
+:extrapreds ((x1012))
+:extrapreds ((x1013))
+:extrapreds ((x1014))
+:extrapreds ((x1015))
+:extrapreds ((x1016))
+:extrapreds ((x1017))
+:extrapreds ((x1018))
+:extrapreds ((x1019))
+:extrapreds ((x1020))
+:extrapreds ((x1021))
+:extrapreds ((x1022))
+:extrapreds ((x1023))
+:extrapreds ((x1024))
+:extrapreds ((x1025))
+:extrapreds ((x1026))
+:extrapreds ((x1027))
+:extrapreds ((x1028))
+:extrapreds ((x1029))
+:extrapreds ((x1030))
+:extrapreds ((x1031))
+:extrapreds ((x1032))
+:extrapreds ((x1033))
+:extrapreds ((x1034))
+:extrapreds ((x1035))
+:extrapreds ((x1036))
+:extrapreds ((x1037))
+:extrapreds ((x1038))
+:extrapreds ((x1039))
+:extrapreds ((x1040))
+:extrapreds ((x1041))
+:extrapreds ((x1042))
+:extrapreds ((x1043))
+:extrapreds ((x1044))
+:extrapreds ((x1045))
+:extrapreds ((x1046))
+:extrapreds ((x1047))
+:extrapreds ((x1048))
+:extrapreds ((x1049))
+:extrapreds ((x1050))
+:extrapreds ((x1051))
+:extrapreds ((x1052))
+:extrapreds ((x1053))
+:extrapreds ((x1054))
+:extrapreds ((x1055))
+:extrapreds ((x1056))
+:extrapreds ((x1057))
+:extrapreds ((x1058))
+:extrapreds ((x1059))
+:extrapreds ((x1060))
+:extrapreds ((x1061))
+:extrapreds ((x1062))
+:extrapreds ((x1063))
+:extrapreds ((x1064))
+:extrapreds ((x1065))
+:extrapreds ((x1066))
+:extrapreds ((x1067))
+:extrapreds ((x1068))
+:extrapreds ((x1069))
+:extrapreds ((x1070))
+:extrapreds ((x1071))
+:extrapreds ((x1072))
+:extrapreds ((x1073))
+:extrapreds ((x1074))
+:extrapreds ((x1075))
+:extrapreds ((x1076))
+:extrapreds ((x1077))
+:extrapreds ((x1078))
+:extrapreds ((x1079))
+:extrapreds ((x1080))
+:extrapreds ((x1081))
+:extrapreds ((x1082))
+:extrapreds ((x1083))
+:extrapreds ((x1084))
+:extrapreds ((x1085))
+:extrapreds ((x1086))
+:extrapreds ((x1087))
+:extrapreds ((x1088))
+:extrapreds ((x1089))
+:extrapreds ((x1090))
+:extrapreds ((x1091))
+:extrapreds ((x1092))
+:extrapreds ((x1093))
+:extrapreds ((x1094))
+:extrapreds ((x1095))
+:extrapreds ((x1096))
+:extrapreds ((x1097))
+:extrapreds ((x1098))
+:extrapreds ((x1099))
+:extrapreds ((x1100))
+:extrapreds ((x1101))
+:extrapreds ((x1102))
+:extrapreds ((x1103))
+:extrapreds ((x1104))
+:extrapreds ((x1105))
+:extrapreds ((x1106))
+:extrapreds ((x1107))
+:extrapreds ((x1108))
+:extrapreds ((x1109))
+:extrapreds ((x1110))
+:extrapreds ((x1111))
+:extrapreds ((x1112))
+:extrapreds ((x1113))
+:extrapreds ((x1114))
+:extrapreds ((x1115))
+:extrapreds ((x1116))
+:extrapreds ((x1117))
+:extrapreds ((x1118))
+:extrapreds ((x1119))
+:extrapreds ((x1120))
+:extrapreds ((x1121))
+:extrapreds ((x1122))
+:extrapreds ((x1123))
+:extrapreds ((x1124))
+:extrapreds ((x1125))
+:extrapreds ((x1126))
+:extrapreds ((x1127))
+:extrapreds ((x1128))
+:extrapreds ((x1129))
+:extrapreds ((x1130))
+:extrapreds ((x1131))
+:extrapreds ((x1132))
+:extrapreds ((x1133))
+:extrapreds ((x1134))
+:extrapreds ((x1135))
+:extrapreds ((x1136))
+:extrapreds ((x1137))
+:extrapreds ((x1138))
+:extrapreds ((x1139))
+:extrapreds ((x1140))
+:extrapreds ((x1141))
+:extrapreds ((x1142))
+:extrapreds ((x1143))
+:extrapreds ((x1144))
+:extrapreds ((x1145))
+:extrapreds ((x1146))
+:extrapreds ((x1147))
+:extrapreds ((x1148))
+:extrapreds ((x1149))
+:extrapreds ((x1150))
+:extrapreds ((x1151))
+:extrapreds ((x1152))
+:extrapreds ((x1153))
+:extrapreds ((x1154))
+:extrapreds ((x1155))
+:extrapreds ((x1156))
+:extrapreds ((x1157))
+:extrapreds ((x1158))
+:extrapreds ((x1159))
+:extrapreds ((x1160))
+:extrapreds ((x1161))
+:extrapreds ((x1162))
+:extrapreds ((x1163))
+:extrapreds ((x1164))
+:extrapreds ((x1165))
+:extrapreds ((x1166))
+:extrapreds ((x1167))
+:extrapreds ((x1168))
+:extrapreds ((x1169))
+:extrapreds ((x1170))
+:extrapreds ((x1171))
+:extrapreds ((x1172))
+:extrapreds ((x1173))
+:extrapreds ((x1174))
+:extrapreds ((x1175))
+:extrapreds ((x1176))
+:extrapreds ((x1177))
+:extrapreds ((x1178))
+:extrapreds ((x1179))
+:extrapreds ((x1180))
+:extrapreds ((x1181))
+:extrapreds ((x1182))
+:extrapreds ((x1183))
+:extrapreds ((x1184))
+:extrapreds ((x1185))
+:extrapreds ((x1186))
+:extrapreds ((x1187))
+:extrapreds ((x1188))
+:extrapreds ((x1189))
+:extrapreds ((x1190))
+:extrapreds ((x1191))
+:extrapreds ((x1192))
+:extrapreds ((x1193))
+:extrapreds ((x1194))
+:extrapreds ((x1195))
+:extrapreds ((x1196))
+:extrapreds ((x1197))
+:extrapreds ((x1198))
+:extrapreds ((x1199))
+:extrapreds ((x1200))
+:extrapreds ((x1201))
+:extrapreds ((x1202))
+:extrapreds ((x1203))
+:extrapreds ((x1204))
+:extrapreds ((x1205))
+:extrapreds ((x1206))
+:extrapreds ((x1207))
+:extrapreds ((x1208))
+:extrapreds ((x1209))
+:extrapreds ((x1210))
+:extrapreds ((x1211))
+:extrapreds ((x1212))
+:extrapreds ((x1213))
+:extrapreds ((x1214))
+:extrapreds ((x1215))
+:extrapreds ((x1216))
+:extrapreds ((x1217))
+:extrapreds ((x1218))
+:extrapreds ((x1219))
+:extrapreds ((x1220))
+:extrapreds ((x1221))
+:extrapreds ((x1222))
+:extrapreds ((x1223))
+:extrapreds ((x1224))
+:extrapreds ((x1225))
+:extrapreds ((x1226))
+:extrapreds ((x1227))
+:extrapreds ((x1228))
+:extrapreds ((x1229))
+:extrapreds ((x1230))
+:extrapreds ((x1231))
+:extrapreds ((x1232))
+:extrapreds ((x1233))
+:extrapreds ((x1234))
+:extrapreds ((x1235))
+:extrapreds ((x1236))
+:extrapreds ((x1237))
+:extrapreds ((x1238))
+:extrapreds ((x1239))
+:extrapreds ((x1240))
+:extrapreds ((x1241))
+:extrapreds ((x1242))
+:extrapreds ((x1243))
+:extrapreds ((x1244))
+:extrapreds ((x1245))
+:extrapreds ((x1246))
+:extrapreds ((x1247))
+:extrapreds ((x1248))
+:extrapreds ((x1249))
+:extrapreds ((x1250))
+:extrapreds ((x1251))
+:extrapreds ((x1252))
+:extrapreds ((x1253))
+:extrapreds ((x1254))
+:extrapreds ((x1255))
+:extrapreds ((x1256))
+:extrapreds ((x1257))
+:extrapreds ((x1258))
+:extrapreds ((x1259))
+:extrapreds ((x1260))
+:extrapreds ((x1261))
+:extrapreds ((x1262))
+:extrapreds ((x1263))
+:extrapreds ((x1264))
+:extrapreds ((x1265))
+:extrapreds ((x1266))
+:extrapreds ((x1267))
+:extrapreds ((x1268))
+:extrapreds ((x1269))
+:extrapreds ((x1270))
+:extrapreds ((x1271))
+:extrapreds ((x1272))
+:extrapreds ((x1273))
+:extrapreds ((x1274))
+:extrapreds ((x1275))
+:extrapreds ((x1276))
+:extrapreds ((x1277))
+:extrapreds ((x1278))
+:extrapreds ((x1279))
+:extrapreds ((x1280))
+:extrapreds ((x1281))
+:extrapreds ((x1282))
+:extrapreds ((x1283))
+:extrapreds ((x1284))
+:extrapreds ((x1285))
+:extrapreds ((x1286))
+:extrapreds ((x1287))
+:extrapreds ((x1288))
+:extrapreds ((x1289))
+:extrapreds ((x1290))
+:extrapreds ((x1291))
+:extrapreds ((x1292))
+:extrapreds ((x1293))
+:extrapreds ((x1294))
+:extrapreds ((x1295))
+:extrapreds ((x1296))
+:extrapreds ((x1297))
+:extrapreds ((x1298))
+:extrapreds ((x1299))
+:extrapreds ((x1300))
+:extrapreds ((x1301))
+:extrapreds ((x1302))
+:extrapreds ((x1303))
+:extrapreds ((x1304))
+:extrapreds ((x1305))
+:extrapreds ((x1306))
+:extrapreds ((x1307))
+:extrapreds ((x1308))
+:extrapreds ((x1309))
+:extrapreds ((x1310))
+:extrapreds ((x1311))
+:extrapreds ((x1312))
+:extrapreds ((x1313))
+:extrapreds ((x1314))
+:extrapreds ((x1315))
+:extrapreds ((x1316))
+:extrapreds ((x1317))
+:extrapreds ((x1318))
+:extrapreds ((x1319))
+:extrapreds ((x1320))
+:extrapreds ((x1321))
+:extrapreds ((x1322))
+:extrapreds ((x1323))
+:extrapreds ((x1324))
+:extrapreds ((x1325))
+:extrapreds ((x1326))
+:extrapreds ((x1327))
+:extrapreds ((x1328))
+:extrapreds ((x1329))
+:extrapreds ((x1330))
+:extrapreds ((x1331))
+:extrapreds ((x1332))
+:extrapreds ((x1333))
+:extrapreds ((x1334))
+:extrapreds ((x1335))
+:extrapreds ((x1336))
+:extrapreds ((x1337))
+:extrapreds ((x1338))
+:extrapreds ((x1339))
+:extrapreds ((x1340))
+:extrapreds ((x1341))
+:extrapreds ((x1342))
+:extrapreds ((x1343))
+:extrapreds ((x1344))
+:extrapreds ((x1345))
+:extrapreds ((x1346))
+:extrapreds ((x1347))
+:extrapreds ((x1348))
+:extrapreds ((x1349))
+:extrapreds ((x1350))
+:extrapreds ((x1351))
+:extrapreds ((x1352))
+:extrapreds ((x1353))
+:extrapreds ((x1354))
+:extrapreds ((x1355))
+:extrapreds ((x1356))
+:extrapreds ((x1357))
+:extrapreds ((x1358))
+:extrapreds ((x1359))
+:extrapreds ((x1360))
+:extrapreds ((x1361))
+:extrapreds ((x1362))
+:extrapreds ((x1363))
+:extrapreds ((x1364))
+:extrapreds ((x1365))
+:extrapreds ((x1366))
+:extrapreds ((x1367))
+:extrapreds ((x1368))
+:extrapreds ((x1369))
+:extrapreds ((x1370))
+:extrapreds ((x1371))
+:extrapreds ((x1372))
+:extrapreds ((x1373))
+:extrapreds ((x1374))
+:extrapreds ((x1375))
+:extrapreds ((x1376))
+:extrapreds ((x1377))
+:extrapreds ((x1378))
+:extrapreds ((x1379))
+:extrapreds ((x1380))
+:extrapreds ((x1381))
+:extrapreds ((x1382))
+:extrapreds ((x1383))
+:extrapreds ((x1384))
+:extrapreds ((x1385))
+:extrapreds ((x1386))
+:extrapreds ((x1387))
+:extrapreds ((x1388))
+:extrapreds ((x1389))
+:extrapreds ((x1390))
+:extrapreds ((x1391))
+:extrapreds ((x1392))
+:extrapreds ((x1393))
+:extrapreds ((x1394))
+:extrapreds ((x1395))
+:extrapreds ((x1396))
+:extrapreds ((x1397))
+:extrapreds ((x1398))
+:extrapreds ((x1399))
+:extrapreds ((x1400))
+:extrapreds ((x1401))
+:extrapreds ((x1402))
+:extrapreds ((x1403))
+:extrapreds ((x1404))
+:extrapreds ((x1405))
+:extrapreds ((x1406))
+:extrapreds ((x1407))
+:extrapreds ((x1408))
+:extrapreds ((x1409))
+:extrapreds ((x1410))
+:extrapreds ((x1411))
+:extrapreds ((x1412))
+:extrapreds ((x1413))
+:extrapreds ((x1414))
+:extrapreds ((x1415))
+:extrapreds ((x1416))
+:extrapreds ((x1417))
+:extrapreds ((x1418))
+:extrapreds ((x1419))
+:extrapreds ((x1420))
+:extrapreds ((x1421))
+:extrapreds ((x1422))
+:extrapreds ((x1423))
+:extrapreds ((x1424))
+:extrapreds ((x1425))
+:extrapreds ((x1426))
+:extrapreds ((x1427))
+:extrapreds ((x1428))
+:extrapreds ((x1429))
+:extrapreds ((x1430))
+:extrapreds ((x1431))
+:extrapreds ((x1432))
+:extrapreds ((x1433))
+:extrapreds ((x1434))
+:extrapreds ((x1435))
+:extrapreds ((x1436))
+:extrapreds ((x1437))
+:extrapreds ((x1438))
+:extrapreds ((x1439))
+:extrapreds ((x1440))
+:extrapreds ((x1441))
+:extrapreds ((x1442))
+:extrapreds ((x1443))
+:extrapreds ((x1444))
+:extrapreds ((x1445))
+:extrapreds ((x1446))
+:extrapreds ((x1447))
+:extrapreds ((x1448))
+:extrapreds ((x1449))
+:extrapreds ((x1450))
+:extrapreds ((x1451))
+:extrapreds ((x1452))
+:extrapreds ((x1453))
+:extrapreds ((x1454))
+:extrapreds ((x1455))
+:extrapreds ((x1456))
+:extrapreds ((x1457))
+:extrapreds ((x1458))
+:extrapreds ((x1459))
+:extrapreds ((x1460))
+:extrapreds ((x1461))
+:extrapreds ((x1462))
+:extrapreds ((x1463))
+:extrapreds ((x1464))
+:extrapreds ((x1465))
+:extrapreds ((x1466))
+:extrapreds ((x1467))
+:extrapreds ((x1468))
+:extrapreds ((x1469))
+:extrapreds ((x1470))
+:extrapreds ((x1471))
+:extrapreds ((x1472))
+:extrapreds ((x1473))
+:extrapreds ((x1474))
+:extrapreds ((x1475))
+:extrapreds ((x1476))
+:extrapreds ((x1477))
+:extrapreds ((x1478))
+:extrapreds ((x1479))
+:extrapreds ((x1480))
+:extrapreds ((x1481))
+:extrapreds ((x1482))
+:extrapreds ((x1483))
+:extrapreds ((x1484))
+:extrapreds ((x1485))
+:extrapreds ((x1486))
+:extrapreds ((x1487))
+:extrapreds ((x1488))
+:extrapreds ((x1489))
+:extrapreds ((x1490))
+:extrapreds ((x1491))
+:extrapreds ((x1492))
+:extrapreds ((x1493))
+:extrapreds ((x1494))
+:extrapreds ((x1495))
+:extrapreds ((x1496))
+:extrapreds ((x1497))
+:extrapreds ((x1498))
+:extrapreds ((x1499))
+:extrapreds ((x1500))
+:extrapreds ((x1501))
+:extrapreds ((x1502))
+:extrapreds ((x1503))
+:extrapreds ((x1504))
+:extrapreds ((x1505))
+:extrapreds ((x1506))
+:extrapreds ((x1507))
+:extrapreds ((x1508))
+:extrapreds ((x1509))
+:extrapreds ((x1510))
+:extrapreds ((x1511))
+:extrapreds ((x1512))
+:extrapreds ((x1513))
+:extrapreds ((x1514))
+:extrapreds ((x1515))
+:extrapreds ((x1516))
+:extrapreds ((x1517))
+:extrapreds ((x1518))
+:extrapreds ((x1519))
+:extrapreds ((x1520))
+:extrapreds ((x1521))
+:extrapreds ((x1522))
+:extrapreds ((x1523))
+:extrapreds ((x1524))
+:extrapreds ((x1525))
+:extrapreds ((x1526))
+:extrapreds ((x1527))
+:extrapreds ((x1528))
+:extrapreds ((x1529))
+:extrapreds ((x1530))
+:extrapreds ((x1531))
+:extrapreds ((x1532))
+:extrapreds ((x1533))
+:extrapreds ((x1534))
+:extrapreds ((x1535))
+:extrapreds ((x1536))
+:extrapreds ((x1537))
+:extrapreds ((x1538))
+:extrapreds ((x1539))
+:extrapreds ((x1540))
+:extrapreds ((x1541))
+:extrapreds ((x1542))
+:extrapreds ((x1543))
+:extrapreds ((x1544))
+:extrapreds ((x1545))
+:extrapreds ((x1546))
+:extrapreds ((x1547))
+:extrapreds ((x1548))
+:extrapreds ((x1549))
+:extrapreds ((x1550))
+:extrapreds ((x1551))
+:extrapreds ((x1552))
+:extrapreds ((x1553))
+:extrapreds ((x1554))
+:extrapreds ((x1555))
+:extrapreds ((x1556))
+:extrapreds ((x1557))
+:extrapreds ((x1558))
+:extrapreds ((x1559))
+:extrapreds ((x1560))
+:extrapreds ((x1561))
+:extrapreds ((x1562))
+:extrapreds ((x1563))
+:extrapreds ((x1564))
+:extrapreds ((x1565))
+:extrapreds ((x1566))
+:extrapreds ((x1567))
+:extrapreds ((x1568))
+:extrapreds ((x1569))
+:extrapreds ((x1570))
+:extrapreds ((x1571))
+:extrapreds ((x1572))
+:extrapreds ((x1573))
+:extrapreds ((x1574))
+:extrapreds ((x1575))
+:extrapreds ((x1576))
+:extrapreds ((x1577))
+:extrapreds ((x1578))
+:extrapreds ((x1579))
+:extrapreds ((x1580))
+:extrapreds ((x1581))
+:extrapreds ((x1582))
+:extrapreds ((x1583))
+:extrapreds ((x1584))
+:extrapreds ((x1585))
+:extrapreds ((x1586))
+:extrapreds ((x1587))
+:extrapreds ((x1588))
+:extrapreds ((x1589))
+:extrapreds ((x1590))
+:extrapreds ((x1591))
+:extrapreds ((x1592))
+:extrapreds ((x1593))
+:extrapreds ((x1594))
+:extrapreds ((x1595))
+:extrapreds ((x1596))
+:extrapreds ((x1597))
+:extrapreds ((x1598))
+:extrapreds ((x1599))
+:extrapreds ((x1600))
+:extrapreds ((x1601))
+:extrapreds ((x1602))
+:extrapreds ((x1603))
+:extrapreds ((x1604))
+:extrapreds ((x1605))
+:extrapreds ((x1606))
+:extrapreds ((x1607))
+:extrapreds ((x1608))
+:extrapreds ((x1609))
+:extrapreds ((x1610))
+:extrapreds ((x1611))
+:extrapreds ((x1612))
+:extrapreds ((x1613))
+:extrapreds ((x1614))
+:extrapreds ((x1615))
+:extrapreds ((x1616))
+:extrapreds ((x1617))
+:extrapreds ((x1618))
+:extrapreds ((x1619))
+:extrapreds ((x1620))
+:extrapreds ((x1621))
+:extrapreds ((x1622))
+:extrapreds ((x1623))
+:extrapreds ((x1624))
+:extrapreds ((x1625))
+:extrapreds ((x1626))
+:extrapreds ((x1627))
+:extrapreds ((x1628))
+:extrapreds ((x1629))
+:extrapreds ((x1630))
+:extrapreds ((x1631))
+:extrapreds ((x1632))
+:extrapreds ((x1633))
+:extrapreds ((x1634))
+:extrapreds ((x1635))
+:extrapreds ((x1636))
+:extrapreds ((x1637))
+:extrapreds ((x1638))
+:extrapreds ((x1639))
+:extrapreds ((x1640))
+:extrapreds ((x1641))
+:extrapreds ((x1642))
+:extrapreds ((x1643))
+:extrapreds ((x1644))
+:extrapreds ((x1645))
+:extrapreds ((x1646))
+:extrapreds ((x1647))
+:extrapreds ((x1648))
+:extrapreds ((x1649))
+:extrapreds ((x1650))
+:extrapreds ((x1651))
+:extrapreds ((x1652))
+:extrapreds ((x1653))
+:extrapreds ((x1654))
+:extrapreds ((x1655))
+:extrapreds ((x1656))
+:extrapreds ((x1657))
+:extrapreds ((x1658))
+:extrapreds ((x1659))
+:extrapreds ((x1660))
+:extrapreds ((x1661))
+:extrapreds ((x1662))
+:extrapreds ((x1663))
+:extrapreds ((x1664))
+:extrapreds ((x1665))
+:extrapreds ((x1666))
+:extrapreds ((x1667))
+:extrapreds ((x1668))
+:extrapreds ((x1669))
+:extrapreds ((x1670))
+:extrapreds ((x1671))
+:extrapreds ((x1672))
+:extrapreds ((x1673))
+:extrapreds ((x1674))
+:extrapreds ((x1675))
+:extrapreds ((x1676))
+:extrapreds ((x1677))
+:extrapreds ((x1678))
+:extrapreds ((x1679))
+:extrapreds ((x1680))
+:extrapreds ((x1681))
+:extrapreds ((x1682))
+:extrapreds ((x1683))
+:extrapreds ((x1684))
+:extrapreds ((x1685))
+:extrapreds ((x1686))
+:extrapreds ((x1687))
+:extrapreds ((x1688))
+:extrapreds ((x1689))
+:extrapreds ((x1690))
+:extrapreds ((x1691))
+:extrapreds ((x1692))
+:extrapreds ((x1693))
+:extrapreds ((x1694))
+:extrapreds ((x1695))
+:extrapreds ((x1696))
+:extrapreds ((x1697))
+:extrapreds ((x1698))
+:extrapreds ((x1699))
+:extrapreds ((x1700))
+:extrapreds ((x1701))
+:extrapreds ((x1702))
+:extrapreds ((x1703))
+:extrapreds ((x1704))
+:extrapreds ((x1705))
+:extrapreds ((x1706))
+:extrapreds ((x1707))
+:extrapreds ((x1708))
+:extrapreds ((x1709))
+:extrapreds ((x1710))
+:extrapreds ((x1711))
+:extrapreds ((x1712))
+:extrapreds ((x1713))
+:extrapreds ((x1714))
+:extrapreds ((x1715))
+:extrapreds ((x1716))
+:extrapreds ((x1717))
+:extrapreds ((x1718))
+:extrapreds ((x1719))
+:extrapreds ((x1720))
+:extrapreds ((x1721))
+:extrapreds ((x1722))
+:extrapreds ((x1723))
+:extrapreds ((x1724))
+:extrapreds ((x1725))
+:extrapreds ((x1726))
+:extrapreds ((x1727))
+:extrapreds ((x1728))
+:extrapreds ((x1729))
+:extrapreds ((x1730))
+:extrapreds ((x1731))
+:extrapreds ((x1732))
+:extrapreds ((x1733))
+:extrapreds ((x1734))
+:extrapreds ((x1735))
+:extrapreds ((x1736))
+:extrapreds ((x1737))
+:extrapreds ((x1738))
+:extrapreds ((x1739))
+:extrapreds ((x1740))
+:extrapreds ((x1741))
+:extrapreds ((x1742))
+:extrapreds ((x1743))
+:extrapreds ((x1744))
+:extrapreds ((x1745))
+:extrapreds ((x1746))
+:extrapreds ((x1747))
+:extrapreds ((x1748))
+:extrapreds ((x1749))
+:extrapreds ((x1750))
+:extrapreds ((x1751))
+:extrapreds ((x1752))
+:extrapreds ((x1753))
+:extrapreds ((x1754))
+:extrapreds ((x1755))
+:extrapreds ((x1756))
+:extrapreds ((x1757))
+:extrapreds ((x1758))
+:extrapreds ((x1759))
+:extrapreds ((x1760))
+:extrapreds ((x1761))
+:extrapreds ((x1762))
+:extrapreds ((x1763))
+:extrapreds ((x1764))
+:extrapreds ((x1765))
+:extrapreds ((x1766))
+:extrapreds ((x1767))
+:extrapreds ((x1768))
+:extrapreds ((x1769))
+:extrapreds ((x1770))
+:extrapreds ((x1771))
+:extrapreds ((x1772))
+:extrapreds ((x1773))
+:extrapreds ((x1774))
+:extrapreds ((x1775))
+:extrapreds ((x1776))
+:extrapreds ((x1777))
+:extrapreds ((x1778))
+:extrapreds ((x1779))
+:extrapreds ((x1780))
+:extrapreds ((x1781))
+:extrapreds ((x1782))
+:extrapreds ((x1783))
+:extrapreds ((x1784))
+:extrapreds ((x1785))
+:extrapreds ((x1786))
+:extrapreds ((x1787))
+:extrapreds ((x1788))
+:extrapreds ((x1789))
+:extrapreds ((x1790))
+:extrapreds ((x1791))
+:extrapreds ((x1792))
+:extrapreds ((x1793))
+:extrapreds ((x1794))
+:extrapreds ((x1795))
+:extrapreds ((x1796))
+:extrapreds ((x1797))
+:extrapreds ((x1798))
+:extrapreds ((x1799))
+:extrapreds ((x1800))
+:extrapreds ((x1801))
+:extrapreds ((x1802))
+:extrapreds ((x1803))
+:extrapreds ((x1804))
+:extrapreds ((x1805))
+:extrapreds ((x1806))
+:extrapreds ((x1807))
+:extrapreds ((x1808))
+:extrapreds ((x1809))
+:extrapreds ((x1810))
+:extrapreds ((x1811))
+:extrapreds ((x1812))
+:extrapreds ((x1813))
+:extrapreds ((x1814))
+:extrapreds ((x1815))
+:extrapreds ((x1816))
+:extrapreds ((x1817))
+:extrapreds ((x1818))
+:extrapreds ((x1819))
+:extrapreds ((x1820))
+:extrapreds ((x1821))
+:extrapreds ((x1822))
+:extrapreds ((x1823))
+:extrapreds ((x1824))
+:extrapreds ((x1825))
+:extrapreds ((x1826))
+:extrapreds ((x1827))
+:extrapreds ((x1828))
+:extrapreds ((x1829))
+:extrapreds ((x1830))
+:extrapreds ((x1831))
+:extrapreds ((x1832))
+:extrapreds ((x1833))
+:extrapreds ((x1834))
+:extrapreds ((x1835))
+:extrapreds ((x1836))
+:extrapreds ((x1837))
+:extrapreds ((x1838))
+:extrapreds ((x1839))
+:extrapreds ((x1840))
+:extrapreds ((x1841))
+:extrapreds ((x1842))
+:extrapreds ((x1843))
+:extrapreds ((x1844))
+:extrapreds ((x1845))
+:extrapreds ((x1846))
+:extrapreds ((x1847))
+:extrapreds ((x1848))
+:extrapreds ((x1849))
+:extrapreds ((x1850))
+:extrapreds ((x1851))
+:extrapreds ((x1852))
+:extrapreds ((x1853))
+:extrapreds ((x1854))
+:extrapreds ((x1855))
+:extrapreds ((x1856))
+:extrapreds ((x1857))
+:extrapreds ((x1858))
+:extrapreds ((x1859))
+:extrapreds ((x1860))
+:extrapreds ((x1861))
+:extrapreds ((x1862))
+:extrapreds ((x1863))
+:extrapreds ((x1864))
+:extrapreds ((x1865))
+:extrapreds ((x1866))
+:extrapreds ((x1867))
+:extrapreds ((x1868))
+:extrapreds ((x1869))
+:extrapreds ((x1870))
+:extrapreds ((x1871))
+:extrapreds ((x1872))
+:extrapreds ((x1873))
+:extrapreds ((x1874))
+:extrapreds ((x1875))
+:extrapreds ((x1876))
+:extrapreds ((x1877))
+:extrapreds ((x1878))
+:extrapreds ((x1879))
+:extrapreds ((x1880))
+:extrapreds ((x1881))
+:extrapreds ((x1882))
+:extrapreds ((x1883))
+:extrapreds ((x1884))
+:extrapreds ((x1885))
+:extrapreds ((x1886))
+:extrapreds ((x1887))
+:extrapreds ((x1888))
+:extrapreds ((x1889))
+:extrapreds ((x1890))
+:extrapreds ((x1891))
+:extrapreds ((x1892))
+:extrapreds ((x1893))
+:extrapreds ((x1894))
+:extrapreds ((x1895))
+:extrapreds ((x1896))
+:extrapreds ((x1897))
+:extrapreds ((x1898))
+:extrapreds ((x1899))
+:extrapreds ((x1900))
+:extrapreds ((x1901))
+:extrapreds ((x1902))
+:extrapreds ((x1903))
+:extrapreds ((x1904))
+:extrapreds ((x1905))
+:extrapreds ((x1906))
+:extrapreds ((x1907))
+:extrapreds ((x1908))
+:extrapreds ((x1909))
+:extrapreds ((x1910))
+:extrapreds ((x1911))
+:extrapreds ((x1912))
+:extrapreds ((x1913))
+:extrapreds ((x1914))
+:extrapreds ((x1915))
+:extrapreds ((x1916))
+:extrapreds ((x1917))
+:extrapreds ((x1918))
+:extrapreds ((x1919))
+:extrapreds ((x1920))
+:extrapreds ((x1921))
+:extrapreds ((x1922))
+:extrapreds ((x1923))
+:extrapreds ((x1924))
+:extrapreds ((x1925))
+:extrapreds ((x1926))
+:extrapreds ((x1927))
+:extrapreds ((x1928))
+:extrapreds ((x1929))
+:extrapreds ((x1930))
+:extrapreds ((x1931))
+:extrapreds ((x1932))
+:extrapreds ((x1933))
+:extrapreds ((x1934))
+:extrapreds ((x1935))
+:extrapreds ((x1936))
+:extrapreds ((x1937))
+:extrapreds ((x1938))
+:extrapreds ((x1939))
+:extrapreds ((x1940))
+:extrapreds ((x1941))
+:extrapreds ((x1942))
+:extrapreds ((x1943))
+:extrapreds ((x1944))
+:extrapreds ((x1945))
+:extrapreds ((x1946))
+:extrapreds ((x1947))
+:extrapreds ((x1948))
+:extrapreds ((x1949))
+:extrapreds ((x1950))
+:extrapreds ((x1951))
+:extrapreds ((x1952))
+:extrapreds ((x1953))
+:extrapreds ((x1954))
+:extrapreds ((x1955))
+:extrapreds ((x1956))
+:extrapreds ((x1957))
+:extrapreds ((x1958))
+:extrapreds ((x1959))
+:extrapreds ((x1960))
+:extrapreds ((x1961))
+:extrapreds ((x1962))
+:extrapreds ((x1963))
+:extrapreds ((x1964))
+:extrapreds ((x1965))
+:extrapreds ((x1966))
+:extrapreds ((x1967))
+:extrapreds ((x1968))
+:extrapreds ((x1969))
+:extrapreds ((x1970))
+:extrapreds ((x1971))
+:extrapreds ((x1972))
+:extrapreds ((x1973))
+:extrapreds ((x1974))
+:extrapreds ((x1975))
+:extrapreds ((x1976))
+:extrapreds ((x1977))
+:extrapreds ((x1978))
+:extrapreds ((x1979))
+:extrapreds ((x1980))
+:extrapreds ((x1981))
+:extrapreds ((x1982))
+:extrapreds ((x1983))
+:extrapreds ((x1984))
+:extrapreds ((x1985))
+:extrapreds ((x1986))
+:extrapreds ((x1987))
+:extrapreds ((x1988))
+:extrapreds ((x1989))
+:extrapreds ((x1990))
+:extrapreds ((x1991))
+:extrapreds ((x1992))
+:extrapreds ((x1993))
+:extrapreds ((x1994))
+:extrapreds ((x1995))
+:extrapreds ((x1996))
+:extrapreds ((x1997))
+:extrapreds ((x1998))
+:extrapreds ((x1999))
+:extrapreds ((x2000))
+:extrapreds ((x2001))
+:extrapreds ((x2002))
+:extrapreds ((x2003))
+:extrapreds ((x2004))
+:extrapreds ((x2005))
+:extrapreds ((x2006))
+:extrapreds ((x2007))
+:extrapreds ((x2008))
+:extrapreds ((x2009))
+:extrapreds ((x2010))
+:extrapreds ((x2011))
+:extrapreds ((x2012))
+:extrapreds ((x2013))
+:extrapreds ((x2014))
+:extrapreds ((x2015))
+:extrapreds ((x2016))
+:extrapreds ((x2017))
+:extrapreds ((x2018))
+:extrapreds ((x2019))
+:extrapreds ((x2020))
+:extrapreds ((x2021))
+:extrapreds ((x2022))
+:extrapreds ((x2023))
+:extrapreds ((x2024))
+:extrapreds ((x2025))
+:extrapreds ((x2026))
+:extrapreds ((x2027))
+:extrapreds ((x2028))
+:extrapreds ((x2029))
+:extrapreds ((x2030))
+:extrapreds ((x2031))
+:extrapreds ((x2032))
+:extrapreds ((x2033))
+:extrapreds ((x2034))
+:extrapreds ((x2035))
+:extrapreds ((x2036))
+:extrapreds ((x2037))
+:extrapreds ((x2038))
+:extrapreds ((x2039))
+:extrapreds ((x2040))
+:extrapreds ((x2041))
+:extrapreds ((x2042))
+:extrapreds ((x2043))
+:extrapreds ((x2044))
+:extrapreds ((x2045))
+:extrapreds ((x2046))
+:extrapreds ((x2047))
+:extrapreds ((x2048))
+:extrapreds ((x2049))
+:extrapreds ((x2050))
+:extrapreds ((x2051))
+:extrapreds ((x2052))
+:extrapreds ((x2053))
+:extrapreds ((x2054))
+:extrapreds ((x2055))
+:extrapreds ((x2056))
+:extrapreds ((x2057))
+:extrapreds ((x2058))
+:extrapreds ((x2059))
+:extrapreds ((x2060))
+:extrapreds ((x2061))
+:extrapreds ((x2062))
+:extrapreds ((x2063))
+:extrapreds ((x2064))
+:extrapreds ((x2065))
+:extrapreds ((x2066))
+:extrapreds ((x2067))
+:extrapreds ((x2068))
+:extrapreds ((x2069))
+:extrapreds ((x2070))
+:extrapreds ((x2071))
+:extrapreds ((x2072))
+:extrapreds ((x2073))
+:extrapreds ((x2074))
+:extrapreds ((x2075))
+:extrapreds ((x2076))
+:extrapreds ((x2077))
+:extrapreds ((x2078))
+:extrapreds ((x2079))
+:extrapreds ((x2080))
+:extrapreds ((x2081))
+:extrapreds ((x2082))
+:extrapreds ((x2083))
+:extrapreds ((x2084))
+:extrapreds ((x2085))
+:extrapreds ((x2086))
+:extrapreds ((x2087))
+:extrapreds ((x2088))
+:extrapreds ((x2089))
+:extrapreds ((x2090))
+:extrapreds ((x2091))
+:extrapreds ((x2092))
+:extrapreds ((x2093))
+:extrapreds ((x2094))
+:extrapreds ((x2095))
+:extrapreds ((x2096))
+:extrapreds ((x2097))
+:extrapreds ((x2098))
+:extrapreds ((x2099))
+:extrapreds ((x2100))
+:extrapreds ((x2101))
+:extrapreds ((x2102))
+:extrapreds ((x2103))
+:extrapreds ((x2104))
+:extrapreds ((x2105))
+:extrapreds ((x2106))
+:extrapreds ((x2107))
+:extrapreds ((x2108))
+:extrapreds ((x2109))
+:extrapreds ((x2110))
+:extrapreds ((x2111))
+:extrapreds ((x2112))
+:extrapreds ((x2113))
+:extrapreds ((x2114))
+:extrapreds ((x2115))
+:extrapreds ((x2116))
+:extrapreds ((x2117))
+:extrapreds ((x2118))
+:extrapreds ((x2119))
+:extrapreds ((x2120))
+:extrapreds ((x2121))
+:extrapreds ((x2122))
+:extrapreds ((x2123))
+:extrapreds ((x2124))
+:extrapreds ((x2125))
+:extrapreds ((x2126))
+:extrapreds ((x2127))
+:extrapreds ((x2128))
+:extrapreds ((x2129))
+:extrapreds ((x2130))
+:extrapreds ((x2131))
+:extrapreds ((x2132))
+:extrapreds ((x2133))
+:extrapreds ((x2134))
+:extrapreds ((x2135))
+:extrapreds ((x2136))
+:extrapreds ((x2137))
+:extrapreds ((x2138))
+:extrapreds ((x2139))
+:extrapreds ((x2140))
+:extrapreds ((x2141))
+:extrapreds ((x2142))
+:extrapreds ((x2143))
+:extrapreds ((x2144))
+:extrapreds ((x2145))
+:extrapreds ((x2146))
+:extrapreds ((x2147))
+:extrapreds ((x2148))
+:extrapreds ((x2149))
+:extrapreds ((x2150))
+:extrapreds ((x2151))
+:extrapreds ((x2152))
+:extrapreds ((x2153))
+:extrapreds ((x2154))
+:extrapreds ((x2155))
+:extrapreds ((x2156))
+:extrapreds ((x2157))
+:extrapreds ((x2158))
+:extrapreds ((x2159))
+:extrapreds ((x2160))
+:extrapreds ((x2161))
+:extrapreds ((x2162))
+:extrapreds ((x2163))
+:extrapreds ((x2164))
+:extrapreds ((x2165))
+:extrapreds ((x2166))
+:extrapreds ((x2167))
+:extrapreds ((x2168))
+:extrapreds ((x2169))
+:extrapreds ((x2170))
+:extrapreds ((x2171))
+:extrapreds ((x2172))
+:extrapreds ((x2173))
+:extrapreds ((x2174))
+:extrapreds ((x2175))
+:extrapreds ((x2176))
+:extrapreds ((x2177))
+:extrapreds ((x2178))
+:extrapreds ((x2179))
+:extrapreds ((x2180))
+:extrapreds ((x2181))
+:extrapreds ((x2182))
+:extrapreds ((x2183))
+:extrapreds ((x2184))
+:extrapreds ((x2185))
+:extrapreds ((x2186))
+:extrapreds ((x2187))
+:extrapreds ((x2188))
+:extrapreds ((x2189))
+:extrapreds ((x2190))
+:extrapreds ((x2191))
+:extrapreds ((x2192))
+:extrapreds ((x2193))
+:extrapreds ((x2194))
+:extrapreds ((x2195))
+:extrapreds ((x2196))
+:extrapreds ((x2197))
+:extrapreds ((x2198))
+:extrapreds ((x2199))
+:extrapreds ((x2200))
+:extrapreds ((x2201))
+:extrapreds ((x2202))
+:extrapreds ((x2203))
+:extrapreds ((x2204))
+:extrapreds ((x2205))
+:extrapreds ((x2206))
+:extrapreds ((x2207))
+:extrapreds ((x2208))
+:extrapreds ((x2209))
+:extrapreds ((x2210))
+:extrapreds ((x2211))
+:extrapreds ((x2212))
+:extrapreds ((x2213))
+:extrapreds ((x2214))
+:extrapreds ((x2215))
+:extrapreds ((x2216))
+:extrapreds ((x2217))
+:extrapreds ((x2218))
+:extrapreds ((x2219))
+:extrapreds ((x2220))
+:extrapreds ((x2221))
+:extrapreds ((x2222))
+:extrapreds ((x2223))
+:extrapreds ((x2224))
+:extrapreds ((x2225))
+:extrapreds ((x2226))
+:extrapreds ((x2227))
+:extrapreds ((x2228))
+:extrapreds ((x2229))
+:extrapreds ((x2230))
+:extrapreds ((x2231))
+:extrapreds ((x2232))
+:extrapreds ((x2233))
+:extrapreds ((x2234))
+:extrapreds ((x2235))
+:extrapreds ((x2236))
+:extrapreds ((x2237))
+:extrapreds ((x2238))
+:extrapreds ((x2239))
+:extrapreds ((x2240))
+:extrapreds ((x2241))
+:extrapreds ((x2242))
+:extrapreds ((x2243))
+:extrapreds ((x2244))
+:extrapreds ((x2245))
+:extrapreds ((x2246))
+:extrapreds ((x2247))
+:extrapreds ((x2248))
+:extrapreds ((x2249))
+:extrapreds ((x2250))
+:extrapreds ((x2251))
+:extrapreds ((x2252))
+:extrapreds ((x2253))
+:extrapreds ((x2254))
+:extrapreds ((x2255))
+:extrapreds ((x2256))
+:extrapreds ((x2257))
+:extrapreds ((x2258))
+:extrapreds ((x2259))
+:extrapreds ((x2260))
+:extrapreds ((x2261))
+:extrapreds ((x2262))
+:extrapreds ((x2263))
+:extrapreds ((x2264))
+:extrapreds ((x2265))
+:extrapreds ((x2266))
+:extrapreds ((x2267))
+:extrapreds ((x2268))
+:extrapreds ((x2269))
+:extrapreds ((x2270))
+:extrapreds ((x2271))
+:extrapreds ((x2272))
+:extrapreds ((x2273))
+:extrapreds ((x2274))
+:extrapreds ((x2275))
+:extrapreds ((x2276))
+:extrapreds ((x2277))
+:extrapreds ((x2278))
+:extrapreds ((x2279))
+:extrapreds ((x2280))
+:extrapreds ((x2281))
+:extrapreds ((x2282))
+:extrapreds ((x2283))
+:extrapreds ((x2284))
+:extrapreds ((x2285))
+:extrapreds ((x2286))
+:extrapreds ((x2287))
+:extrapreds ((x2288))
+:extrapreds ((x2289))
+:extrapreds ((x2290))
+:extrapreds ((x2291))
+:extrapreds ((x2292))
+:extrapreds ((x2293))
+:extrapreds ((x2294))
+:extrapreds ((x2295))
+:extrapreds ((x2296))
+:extrapreds ((x2297))
+:extrapreds ((x2298))
+:extrapreds ((x2299))
+:extrapreds ((x2300))
+:extrapreds ((x2301))
+:extrapreds ((x2302))
+:extrapreds ((x2303))
+:extrapreds ((x2304))
+:extrapreds ((x2305))
+:extrapreds ((x2306))
+:extrapreds ((x2307))
+:extrapreds ((x2308))
+:extrapreds ((x2309))
+:extrapreds ((x2310))
+:extrapreds ((x2311))
+:extrapreds ((x2312))
+:extrapreds ((x2313))
+:extrapreds ((x2314))
+:extrapreds ((x2315))
+:extrapreds ((x2316))
+:extrapreds ((x2317))
+:extrapreds ((x2318))
+:extrapreds ((x2319))
+:extrapreds ((x2320))
+:extrapreds ((x2321))
+:extrapreds ((x2322))
+:extrapreds ((x2323))
+:extrapreds ((x2324))
+:extrapreds ((x2325))
+:extrapreds ((x2326))
+:extrapreds ((x2327))
+:extrapreds ((x2328))
+:extrapreds ((x2329))
+:extrapreds ((x2330))
+:extrapreds ((x2331))
+:extrapreds ((x2332))
+:extrapreds ((x2333))
+:extrapreds ((x2334))
+:extrapreds ((x2335))
+:extrapreds ((x2336))
+:extrapreds ((x2337))
+:extrapreds ((x2338))
+:extrapreds ((x2339))
+:extrapreds ((x2340))
+:extrapreds ((x2341))
+:extrapreds ((x2342))
+:extrapreds ((x2343))
+:extrapreds ((x2344))
+:extrapreds ((x2345))
+:extrapreds ((x2346))
+:extrapreds ((x2347))
+:extrapreds ((x2348))
+:extrapreds ((x2349))
+:extrapreds ((x2350))
+:extrapreds ((x2351))
+:extrapreds ((x2352))
+:extrapreds ((x2353))
+:extrapreds ((x2354))
+:extrapreds ((x2355))
+:extrapreds ((x2356))
+:extrapreds ((x2357))
+:extrapreds ((x2358))
+:extrapreds ((x2359))
+:extrapreds ((x2360))
+:extrapreds ((x2361))
+:extrapreds ((x2362))
+:extrapreds ((x2363))
+:extrapreds ((x2364))
+:extrapreds ((x2365))
+:extrapreds ((x2366))
+:extrapreds ((x2367))
+:extrapreds ((x2368))
+:extrapreds ((x2369))
+:extrapreds ((x2370))
+:extrapreds ((x2371))
+:extrapreds ((x2372))
+:extrapreds ((x2373))
+:extrapreds ((x2374))
+:extrapreds ((x2375))
+:extrapreds ((x2376))
+:extrapreds ((x2377))
+:extrapreds ((x2378))
+:extrapreds ((x2379))
+:extrapreds ((x2380))
+:extrapreds ((x2381))
+:extrapreds ((x2382))
+:extrapreds ((x2383))
+:extrapreds ((x2384))
+:extrapreds ((x2385))
+:extrapreds ((x2386))
+:extrapreds ((x2387))
+:extrapreds ((x2388))
+:extrapreds ((x2389))
+:extrapreds ((x2390))
+:extrapreds ((x2391))
+:extrapreds ((x2392))
+:extrapreds ((x2393))
+:extrapreds ((x2394))
+:extrapreds ((x2395))
+:extrapreds ((x2396))
+:extrapreds ((x2397))
+:extrapreds ((x2398))
+:extrapreds ((x2399))
+:extrapreds ((x2400))
+:extrapreds ((x2401))
+:extrapreds ((x2402))
+:extrapreds ((x2403))
+:extrapreds ((x2404))
+:extrapreds ((x2405))
+:extrapreds ((x2406))
+:extrapreds ((x2407))
+:extrapreds ((x2408))
+:extrapreds ((x2409))
+:extrapreds ((x2410))
+:extrapreds ((x2411))
+:extrapreds ((x2412))
+:extrapreds ((x2413))
+:extrapreds ((x2414))
+:extrapreds ((x2415))
+:extrapreds ((x2416))
+:extrapreds ((x2417))
+:extrapreds ((x2418))
+:extrapreds ((x2419))
+:extrapreds ((x2420))
+:extrapreds ((x2421))
+:extrapreds ((x2422))
+:extrapreds ((x2423))
+:extrapreds ((x2424))
+:extrapreds ((x2425))
+:extrapreds ((x2426))
+:extrapreds ((x2427))
+:extrapreds ((x2428))
+:extrapreds ((x2429))
+:extrapreds ((x2430))
+:extrapreds ((x2431))
+:extrapreds ((x2432))
+:extrapreds ((x2433))
+:extrapreds ((x2434))
+:extrapreds ((x2435))
+:extrapreds ((x2436))
+:extrapreds ((x2437))
+:extrapreds ((x2438))
+:extrapreds ((x2439))
+:extrapreds ((x2440))
+:extrapreds ((x2441))
+:extrapreds ((x2442))
+:extrapreds ((x2443))
+:extrapreds ((x2444))
+:extrapreds ((x2445))
+:extrapreds ((x2446))
+:extrapreds ((x2447))
+:extrapreds ((x2448))
+:extrapreds ((x2449))
+:extrapreds ((x2450))
+:extrapreds ((x2451))
+:extrapreds ((x2452))
+:extrapreds ((x2453))
+:extrapreds ((x2454))
+:extrapreds ((x2455))
+:extrapreds ((x2456))
+:extrapreds ((x2457))
+:extrapreds ((x2458))
+:extrapreds ((x2459))
+:extrapreds ((x2460))
+:extrapreds ((x2461))
+:extrapreds ((x2462))
+:extrapreds ((x2463))
+:extrapreds ((x2464))
+:extrapreds ((x2465))
+:extrapreds ((x2466))
+:extrapreds ((x2467))
+:extrapreds ((x2468))
+:extrapreds ((x2469))
+:extrapreds ((x2470))
+:extrapreds ((x2471))
+:extrapreds ((x2472))
+:extrapreds ((x2473))
+:extrapreds ((x2474))
+:extrapreds ((x2475))
+:extrapreds ((x2476))
+:extrapreds ((x2477))
+:extrapreds ((x2478))
+:extrapreds ((x2479))
+:extrapreds ((x2480))
+:extrapreds ((x2481))
+:extrapreds ((x2482))
+:extrapreds ((x2483))
+:extrapreds ((x2484))
+:extrapreds ((x2485))
+:extrapreds ((x2486))
+:extrapreds ((x2487))
+:extrapreds ((x2488))
+:extrapreds ((x2489))
+:extrapreds ((x2490))
+:extrapreds ((x2491))
+:extrapreds ((x2492))
+:extrapreds ((x2493))
+:extrapreds ((x2494))
+:extrapreds ((x2495))
+:extrapreds ((x2496))
+:extrapreds ((x2497))
+:extrapreds ((x2498))
+:extrapreds ((x2499))
+:extrapreds ((x2500))
+:extrapreds ((x2501))
+:extrapreds ((x2502))
+:extrapreds ((x2503))
+:extrapreds ((x2504))
+:extrapreds ((x2505))
+:extrapreds ((x2506))
+:extrapreds ((x2507))
+:extrapreds ((x2508))
+:extrapreds ((x2509))
+:extrapreds ((x2510))
+:extrapreds ((x2511))
+:extrapreds ((x2512))
+:extrapreds ((x2513))
+:extrapreds ((x2514))
+:extrapreds ((x2515))
+:extrapreds ((x2516))
+:extrapreds ((x2517))
+:extrapreds ((x2518))
+:extrapreds ((x2519))
+:extrapreds ((x2520))
+:extrapreds ((x2521))
+:extrapreds ((x2522))
+:extrapreds ((x2523))
+:extrapreds ((x2524))
+:extrapreds ((x2525))
+:extrapreds ((x2526))
+:extrapreds ((x2527))
+:extrapreds ((x2528))
+:extrapreds ((x2529))
+:extrapreds ((x2530))
+:extrapreds ((x2531))
+:extrapreds ((x2532))
+:extrapreds ((x2533))
+:extrapreds ((x2534))
+:extrapreds ((x2535))
+:extrapreds ((x2536))
+:extrapreds ((x2537))
+:extrapreds ((x2538))
+:extrapreds ((x2539))
+:extrapreds ((x2540))
+:extrapreds ((x2541))
+:extrapreds ((x2542))
+:extrapreds ((x2543))
+:extrapreds ((x2544))
+:extrapreds ((x2545))
+:extrapreds ((x2546))
+:extrapreds ((x2547))
+:extrapreds ((x2548))
+:extrapreds ((x2549))
+:extrapreds ((x2550))
+:extrapreds ((x2551))
+:extrapreds ((x2552))
+:extrapreds ((x2553))
+:extrapreds ((x2554))
+:extrapreds ((x2555))
+:extrapreds ((x2556))
+:extrapreds ((x2557))
+:extrapreds ((x2558))
+:extrapreds ((x2559))
+:extrapreds ((x2560))
+:extrapreds ((x2561))
+:extrapreds ((x2562))
+:extrapreds ((x2563))
+:extrapreds ((x2564))
+:extrapreds ((x2565))
+:extrapreds ((x2566))
+:extrapreds ((x2567))
+:extrapreds ((x2568))
+:extrapreds ((x2569))
+:extrapreds ((x2570))
+:extrapreds ((x2571))
+:extrapreds ((x2572))
+:extrapreds ((x2573))
+:extrapreds ((x2574))
+:extrapreds ((x2575))
+:extrapreds ((x2576))
+:extrapreds ((x2577))
+:extrapreds ((x2578))
+:extrapreds ((x2579))
+:extrapreds ((x2580))
+:extrapreds ((x2581))
+:extrapreds ((x2582))
+:extrapreds ((x2583))
+:extrapreds ((x2584))
+:extrapreds ((x2585))
+:extrapreds ((x2586))
+:extrapreds ((x2587))
+:extrapreds ((x2588))
+:extrapreds ((x2589))
+:extrapreds ((x2590))
+:extrapreds ((x2591))
+:extrapreds ((x2592))
+:extrapreds ((x2593))
+:extrapreds ((x2594))
+:extrapreds ((x2595))
+:extrapreds ((x2596))
+:extrapreds ((x2597))
+:extrapreds ((x2598))
+:extrapreds ((x2599))
+:extrapreds ((x2600))
+:extrapreds ((x2601))
+:extrapreds ((x2602))
+:extrapreds ((x2603))
+:extrapreds ((x2604))
+:extrapreds ((x2605))
+:extrapreds ((x2606))
+:extrapreds ((x2607))
+:extrapreds ((x2608))
+:extrapreds ((x2609))
+:extrapreds ((x2610))
+:extrapreds ((x2611))
+:extrapreds ((x2612))
+:extrapreds ((x2613))
+:extrapreds ((x2614))
+:extrapreds ((x2615))
+:extrapreds ((x2616))
+:extrapreds ((x2617))
+:extrapreds ((x2618))
+:extrapreds ((x2619))
+:extrapreds ((x2620))
+:extrapreds ((x2621))
+:extrapreds ((x2622))
+:extrapreds ((x2623))
+:extrapreds ((x2624))
+:extrapreds ((x2625))
+:extrapreds ((x2626))
+:extrapreds ((x2627))
+:extrapreds ((x2628))
+:extrapreds ((x2629))
+:extrapreds ((x2630))
+:extrapreds ((x2631))
+:extrapreds ((x2632))
+:extrapreds ((x2633))
+:extrapreds ((x2634))
+:extrapreds ((x2635))
+:extrapreds ((x2636))
+:extrapreds ((x2637))
+:extrapreds ((x2638))
+:extrapreds ((x2639))
+:extrapreds ((x2640))
+:extrapreds ((x2641))
+:extrapreds ((x2642))
+:extrapreds ((x2643))
+:extrapreds ((x2644))
+:extrapreds ((x2645))
+:extrapreds ((x2646))
+:extrapreds ((x2647))
+:extrapreds ((x2648))
+:extrapreds ((x2649))
+:extrapreds ((x2650))
+:extrapreds ((x2651))
+:extrapreds ((x2652))
+:extrapreds ((x2653))
+:extrapreds ((x2654))
+:extrapreds ((x2655))
+:extrapreds ((x2656))
+:extrapreds ((x2657))
+:extrapreds ((x2658))
+:extrapreds ((x2659))
+:extrapreds ((x2660))
+:extrapreds ((x2661))
+:extrapreds ((x2662))
+:extrapreds ((x2663))
+:extrapreds ((x2664))
+:extrapreds ((x2665))
+:extrapreds ((x2666))
+:extrapreds ((x2667))
+:extrapreds ((x2668))
+:extrapreds ((x2669))
+:extrapreds ((x2670))
+:extrapreds ((x2671))
+:extrapreds ((x2672))
+:extrapreds ((x2673))
+:extrapreds ((x2674))
+:extrapreds ((x2675))
+:extrapreds ((x2676))
+:extrapreds ((x2677))
+:extrapreds ((x2678))
+:extrapreds ((x2679))
+:extrapreds ((x2680))
+:extrapreds ((x2681))
+:extrapreds ((x2682))
+:extrapreds ((x2683))
+:extrapreds ((x2684))
+:extrapreds ((x2685))
+:extrapreds ((x2686))
+:extrapreds ((x2687))
+:extrapreds ((x2688))
+:extrapreds ((x2689))
+:extrapreds ((x2690))
+:extrapreds ((x2691))
+:extrapreds ((x2692))
+:extrapreds ((x2693))
+:extrapreds ((x2694))
+:extrapreds ((x2695))
+:extrapreds ((x2696))
+:extrapreds ((x2697))
+:extrapreds ((x2698))
+:extrapreds ((x2699))
+:extrapreds ((x2700))
+:extrapreds ((x2701))
+:extrapreds ((x2702))
+:extrapreds ((x2703))
+:extrapreds ((x2704))
+:extrapreds ((x2705))
+:extrapreds ((x2706))
+:extrapreds ((x2707))
+:extrapreds ((x2708))
+:extrapreds ((x2709))
+:extrapreds ((x2710))
+:extrapreds ((x2711))
+:extrapreds ((x2712))
+:extrapreds ((x2713))
+:extrapreds ((x2714))
+:extrapreds ((x2715))
+:extrapreds ((x2716))
+:extrapreds ((x2717))
+:extrapreds ((x2718))
+:extrapreds ((x2719))
+:extrapreds ((x2720))
+:extrapreds ((x2721))
+:extrapreds ((x2722))
+:extrapreds ((x2723))
+:extrapreds ((x2724))
+:extrapreds ((x2725))
+:extrapreds ((x2726))
+:extrapreds ((x2727))
+:extrapreds ((x2728))
+:extrapreds ((x2729))
+:extrapreds ((x2730))
+:extrapreds ((x2731))
+:extrapreds ((x2732))
+:extrapreds ((x2733))
+:extrapreds ((x2734))
+:extrapreds ((x2735))
+:extrapreds ((x2736))
+:extrapreds ((x2737))
+:extrapreds ((x2738))
+:extrapreds ((x2739))
+:extrapreds ((x2740))
+:extrapreds ((x2741))
+:extrapreds ((x2742))
+:extrapreds ((x2743))
+:extrapreds ((x2744))
+:extrapreds ((x2745))
+:extrapreds ((x2746))
+:extrapreds ((x2747))
+:extrapreds ((x2748))
+:extrapreds ((x2749))
+:extrapreds ((x2750))
+:extrapreds ((x2751))
+:extrapreds ((x2752))
+:extrapreds ((x2753))
+:extrapreds ((x2754))
+:extrapreds ((x2755))
+:extrapreds ((x2756))
+:extrapreds ((x2757))
+:extrapreds ((x2758))
+:extrapreds ((x2759))
+:extrapreds ((x2760))
+:extrapreds ((x2761))
+:extrapreds ((x2762))
+:extrapreds ((x2763))
+:extrapreds ((x2764))
+:extrapreds ((x2765))
+:extrapreds ((x2766))
+:extrapreds ((x2767))
+:extrapreds ((x2768))
+:extrapreds ((x2769))
+:extrapreds ((x2770))
+:extrapreds ((x2771))
+:extrapreds ((x2772))
+:extrapreds ((x2773))
+:extrapreds ((x2774))
+:extrapreds ((x2775))
+:extrapreds ((x2776))
+:extrapreds ((x2777))
+:extrapreds ((x2778))
+:extrapreds ((x2779))
+:extrapreds ((x2780))
+:extrapreds ((x2781))
+:extrapreds ((x2782))
+:extrapreds ((x2783))
+:extrapreds ((x2784))
+:extrapreds ((x2785))
+:extrapreds ((x2786))
+:extrapreds ((x2787))
+:extrapreds ((x2788))
+:extrapreds ((x2789))
+:extrapreds ((x2790))
+:extrapreds ((x2791))
+:extrapreds ((x2792))
+:extrapreds ((x2793))
+:extrapreds ((x2794))
+:extrapreds ((x2795))
+:extrapreds ((x2796))
+:extrapreds ((x2797))
+:extrapreds ((x2798))
+:extrapreds ((x2799))
+:extrapreds ((x2800))
+:extrapreds ((x2801))
+:extrapreds ((x2802))
+:extrapreds ((x2803))
+:extrapreds ((x2804))
+:extrapreds ((x2805))
+:extrapreds ((x2806))
+:extrapreds ((x2807))
+:extrapreds ((x2808))
+:extrapreds ((x2809))
+:extrapreds ((x2810))
+:extrapreds ((x2811))
+:extrapreds ((x2812))
+:extrapreds ((x2813))
+:extrapreds ((x2814))
+:extrapreds ((x2815))
+:extrapreds ((x2816))
+:extrapreds ((x2817))
+:extrapreds ((x2818))
+:extrapreds ((x2819))
+:extrapreds ((x2820))
+:extrapreds ((x2821))
+:extrapreds ((x2822))
+:extrapreds ((x2823))
+:extrapreds ((x2824))
+:extrapreds ((x2825))
+:extrapreds ((x2826))
+:extrapreds ((x2827))
+:extrapreds ((x2828))
+:extrapreds ((x2829))
+:extrapreds ((x2830))
+:extrapreds ((x2831))
+:extrapreds ((x2832))
+:extrapreds ((x2833))
+:extrapreds ((x2834))
+:extrapreds ((x2835))
+:extrapreds ((x2836))
+:extrapreds ((x2837))
+:extrapreds ((x2838))
+:extrapreds ((x2839))
+:extrapreds ((x2840))
+:extrapreds ((x2841))
+:extrapreds ((x2842))
+:extrapreds ((x2843))
+:extrapreds ((x2844))
+:extrapreds ((x2845))
+:extrapreds ((x2846))
+:extrapreds ((x2847))
+:extrapreds ((x2848))
+:extrapreds ((x2849))
+:extrapreds ((x2850))
+:extrapreds ((x2851))
+:extrapreds ((x2852))
+:extrapreds ((x2853))
+:extrapreds ((x2854))
+:extrapreds ((x2855))
+:extrapreds ((x2856))
+:extrapreds ((x2857))
+:extrapreds ((x2858))
+:extrapreds ((x2859))
+:extrapreds ((x2860))
+:extrapreds ((x2861))
+:extrapreds ((x2862))
+:extrapreds ((x2863))
+:extrapreds ((x2864))
+:extrapreds ((x2865))
+:extrapreds ((x2866))
+:extrapreds ((x2867))
+:extrapreds ((x2868))
+:extrapreds ((x2869))
+:extrapreds ((x2870))
+:extrapreds ((x2871))
+:extrapreds ((x2872))
+:extrapreds ((x2873))
+:extrapreds ((x2874))
+:extrapreds ((x2875))
+:extrapreds ((x2876))
+:extrapreds ((x2877))
+:extrapreds ((x2878))
+:extrapreds ((x2879))
+:extrapreds ((x2880))
+:extrapreds ((x2881))
+:extrapreds ((x2882))
+:extrapreds ((x2883))
+:extrapreds ((x2884))
+:extrapreds ((x2885))
+:extrapreds ((x2886))
+:extrapreds ((x2887))
+:extrapreds ((x2888))
+:extrapreds ((x2889))
+:extrapreds ((x2890))
+:extrapreds ((x2891))
+:extrapreds ((x2892))
+:extrapreds ((x2893))
+:extrapreds ((x2894))
+:extrapreds ((x2895))
+:extrapreds ((x2896))
+:extrapreds ((x2897))
+:extrapreds ((x2898))
+:extrapreds ((x2899))
+:extrapreds ((x2900))
+:extrapreds ((x2901))
+:extrapreds ((x2902))
+:extrapreds ((x2903))
+:extrapreds ((x2904))
+:extrapreds ((x2905))
+:extrapreds ((x2906))
+:extrapreds ((x2907))
+:extrapreds ((x2908))
+:extrapreds ((x2909))
+:extrapreds ((x2910))
+:extrapreds ((x2911))
+:extrapreds ((x2912))
+:extrapreds ((x2913))
+:extrapreds ((x2914))
+:extrapreds ((x2915))
+:extrapreds ((x2916))
+:extrapreds ((x2917))
+:extrapreds ((x2918))
+:extrapreds ((x2919))
+:extrapreds ((x2920))
+:extrapreds ((x2921))
+:extrapreds ((x2922))
+:extrapreds ((x2923))
+:extrapreds ((x2924))
+:extrapreds ((x2925))
+:extrapreds ((x2926))
+:extrapreds ((x2927))
+:extrapreds ((x2928))
+:extrapreds ((x2929))
+:extrapreds ((x2930))
+:extrapreds ((x2931))
+:extrapreds ((x2932))
+:extrapreds ((x2933))
+:extrapreds ((x2934))
+:extrapreds ((x2935))
+:extrapreds ((x2936))
+:extrapreds ((x2937))
+:extrapreds ((x2938))
+:extrapreds ((x2939))
+:extrapreds ((x2940))
+:extrapreds ((x2941))
+:extrapreds ((x2942))
+:extrapreds ((x2943))
+:extrapreds ((x2944))
+:extrapreds ((x2945))
+:extrapreds ((x2946))
+:extrapreds ((x2947))
+:extrapreds ((x2948))
+:extrapreds ((x2949))
+:extrapreds ((x2950))
+:extrapreds ((x2951))
+:extrapreds ((x2952))
+:extrapreds ((x2953))
+:extrapreds ((x2954))
+:extrapreds ((x2955))
+:extrapreds ((x2956))
+:extrapreds ((x2957))
+:extrapreds ((x2958))
+:extrapreds ((x2959))
+:extrapreds ((x2960))
+:extrapreds ((x2961))
+:extrapreds ((x2962))
+:extrapreds ((x2963))
+:extrapreds ((x2964))
+:extrapreds ((x2965))
+:extrapreds ((x2966))
+:extrapreds ((x2967))
+:extrapreds ((x2968))
+:extrapreds ((x2969))
+:extrapreds ((x2970))
+:extrapreds ((x2971))
+:extrapreds ((x2972))
+:extrapreds ((x2973))
+:extrapreds ((x2974))
+:extrapreds ((x2975))
+:extrapreds ((x2976))
+:extrapreds ((x2977))
+:extrapreds ((x2978))
+:extrapreds ((x2979))
+:extrapreds ((x2980))
+:extrapreds ((x2981))
+:extrapreds ((x2982))
+:extrapreds ((x2983))
+:extrapreds ((x2984))
+:extrapreds ((x2985))
+:extrapreds ((x2986))
+:extrapreds ((x2987))
+:extrapreds ((x2988))
+:extrapreds ((x2989))
+:extrapreds ((x2990))
+:extrapreds ((x2991))
+:extrapreds ((x2992))
+:extrapreds ((x2993))
+:extrapreds ((x2994))
+:extrapreds ((x2995))
+:extrapreds ((x2996))
+:extrapreds ((x2997))
+:extrapreds ((x2998))
+:extrapreds ((x2999))
+:extrapreds ((x3000))
+:extrapreds ((x3001))
+:extrapreds ((x3002))
+:extrapreds ((x3003))
+:extrapreds ((x3004))
+:extrapreds ((x3005))
+:extrapreds ((x3006))
+:extrapreds ((x3007))
+:extrapreds ((x3008))
+:extrapreds ((x3009))
+:extrapreds ((x3010))
+:extrapreds ((x3011))
+:extrapreds ((x3012))
+:extrapreds ((x3013))
+:extrapreds ((x3014))
+:extrapreds ((x3015))
+:extrapreds ((x3016))
+:extrapreds ((x3017))
+:extrapreds ((x3018))
+:extrapreds ((x3019))
+:extrapreds ((x3020))
+:extrapreds ((x3021))
+:extrapreds ((x3022))
+:extrapreds ((x3023))
+:extrapreds ((x3024))
+:extrapreds ((x3025))
+:extrapreds ((x3026))
+:extrapreds ((x3027))
+:extrapreds ((x3028))
+:extrapreds ((x3029))
+:extrapreds ((x3030))
+:extrapreds ((x3031))
+:extrapreds ((x3032))
+:extrapreds ((x3033))
+:extrapreds ((x3034))
+:extrapreds ((x3035))
+:extrapreds ((x3036))
+:extrapreds ((x3037))
+:extrapreds ((x3038))
+:extrapreds ((x3039))
+:extrapreds ((x3040))
+:extrapreds ((x3041))
+:extrapreds ((x3042))
+:extrapreds ((x3043))
+:extrapreds ((x3044))
+:extrapreds ((x3045))
+:extrapreds ((x3046))
+:extrapreds ((x3047))
+:extrapreds ((x3048))
+:extrapreds ((x3049))
+:extrapreds ((x3050))
+:extrapreds ((x3051))
+:extrapreds ((x3052))
+:extrapreds ((x3053))
+:extrapreds ((x3054))
+:extrapreds ((x3055))
+:extrapreds ((x3056))
+:extrapreds ((x3057))
+:extrapreds ((x3058))
+:extrapreds ((x3059))
+:extrapreds ((x3060))
+:extrapreds ((x3061))
+:extrapreds ((x3062))
+:extrapreds ((x3063))
+:extrapreds ((x3064))
+:extrapreds ((x3065))
+:extrapreds ((x3066))
+:extrapreds ((x3067))
+:extrapreds ((x3068))
+:extrapreds ((x3069))
+:extrapreds ((x3070))
+:extrapreds ((x3071))
+:extrapreds ((x3072))
+:extrapreds ((x3073))
+:extrapreds ((x3074))
+:extrapreds ((x3075))
+:extrapreds ((x3076))
+:extrapreds ((x3077))
+:extrapreds ((x3078))
+:extrapreds ((x3079))
+:extrapreds ((x3080))
+:extrapreds ((x3081))
+:extrapreds ((x3082))
+:extrapreds ((x3083))
+:extrapreds ((x3084))
+:extrapreds ((x3085))
+:extrapreds ((x3086))
+:extrapreds ((x3087))
+:extrapreds ((x3088))
+:extrapreds ((x3089))
+:extrapreds ((x3090))
+:extrapreds ((x3091))
+:extrapreds ((x3092))
+:extrapreds ((x3093))
+:extrapreds ((x3094))
+:extrapreds ((x3095))
+:extrapreds ((x3096))
+:extrapreds ((x3097))
+:extrapreds ((x3098))
+:extrapreds ((x3099))
+:extrapreds ((x3100))
+:extrapreds ((x3101))
+:extrapreds ((x3102))
+:extrapreds ((x3103))
+:extrapreds ((x3104))
+:extrapreds ((x3105))
+:extrapreds ((x3106))
+:extrapreds ((x3107))
+:extrapreds ((x3108))
+:extrapreds ((x3109))
+:extrapreds ((x3110))
+:extrapreds ((x3111))
+:extrapreds ((x3112))
+:extrapreds ((x3113))
+:extrapreds ((x3114))
+:extrapreds ((x3115))
+:extrapreds ((x3116))
+:extrapreds ((x3117))
+:extrapreds ((x3118))
+:extrapreds ((x3119))
+:extrapreds ((x3120))
+:extrapreds ((x3121))
+:extrapreds ((x3122))
+:extrapreds ((x3123))
+:extrapreds ((x3124))
+:extrapreds ((x3125))
+:extrapreds ((x3126))
+:extrapreds ((x3127))
+:extrapreds ((x3128))
+:extrapreds ((x3129))
+:extrapreds ((x3130))
+:extrapreds ((x3131))
+:extrapreds ((x3132))
+:extrapreds ((x3133))
+:extrapreds ((x3134))
+:extrapreds ((x3135))
+:extrapreds ((x3136))
+:extrapreds ((x3137))
+:extrapreds ((x3138))
+:extrapreds ((x3139))
+:extrapreds ((x3140))
+:extrapreds ((x3141))
+:extrapreds ((x3142))
+:extrapreds ((x3143))
+:extrapreds ((x3144))
+:extrapreds ((x3145))
+:extrapreds ((x3146))
+:extrapreds ((x3147))
+:extrapreds ((x3148))
+:extrapreds ((x3149))
+:extrapreds ((x3150))
+:extrapreds ((x3151))
+:extrapreds ((x3152))
+:extrapreds ((x3153))
+:extrapreds ((x3154))
+:extrapreds ((x3155))
+:extrapreds ((x3156))
+:extrapreds ((x3157))
+:extrapreds ((x3158))
+:extrapreds ((x3159))
+:extrapreds ((x3160))
+:extrapreds ((x3161))
+:extrapreds ((x3162))
+:extrapreds ((x3163))
+:extrapreds ((x3164))
+:extrapreds ((x3165))
+:extrapreds ((x3166))
+:extrapreds ((x3167))
+:extrapreds ((x3168))
+:extrapreds ((x3169))
+:extrapreds ((x3170))
+:extrapreds ((x3171))
+:extrapreds ((x3172))
+:extrapreds ((x3173))
+:extrapreds ((x3174))
+:extrapreds ((x3175))
+:extrapreds ((x3176))
+:extrapreds ((x3177))
+:extrapreds ((x3178))
+:extrapreds ((x3179))
+:extrapreds ((x3180))
+:extrapreds ((x3181))
+:extrapreds ((x3182))
+:extrapreds ((x3183))
+:extrapreds ((x3184))
+:extrapreds ((x3185))
+:extrapreds ((x3186))
+:extrapreds ((x3187))
+:extrapreds ((x3188))
+:extrapreds ((x3189))
+:extrapreds ((x3190))
+:extrapreds ((x3191))
+:extrapreds ((x3192))
+:extrapreds ((x3193))
+:extrapreds ((x3194))
+:extrapreds ((x3195))
+:extrapreds ((x3196))
+:extrapreds ((x3197))
+:extrapreds ((x3198))
+:extrapreds ((x3199))
+:extrapreds ((x3200))
+:extrapreds ((x3201))
+:extrapreds ((x3202))
+:extrapreds ((x3203))
+:extrapreds ((x3204))
+:extrapreds ((x3205))
+:extrapreds ((x3206))
+:extrapreds ((x3207))
+:extrapreds ((x3208))
+:extrapreds ((x3209))
+:extrapreds ((x3210))
+:extrapreds ((x3211))
+:extrapreds ((x3212))
+:extrapreds ((x3213))
+:extrapreds ((x3214))
+:extrapreds ((x3215))
+:extrapreds ((x3216))
+:extrapreds ((x3217))
+:extrapreds ((x3218))
+:extrapreds ((x3219))
+:extrapreds ((x3220))
+:extrapreds ((x3221))
+:extrapreds ((x3222))
+:extrapreds ((x3223))
+:extrapreds ((x3224))
+:extrapreds ((x3225))
+:extrapreds ((x3226))
+:extrapreds ((x3227))
+:extrapreds ((x3228))
+:extrapreds ((x3229))
+:extrapreds ((x3230))
+:extrapreds ((x3231))
+:extrapreds ((x3232))
+:extrapreds ((x3233))
+:extrapreds ((x3234))
+:extrapreds ((x3235))
+:extrapreds ((x3236))
+:extrapreds ((x3237))
+:extrapreds ((x3238))
+:extrapreds ((x3239))
+:extrapreds ((x3240))
+:extrapreds ((x3241))
+:extrapreds ((x3242))
+:extrapreds ((x3243))
+:extrapreds ((x3244))
+:extrapreds ((x3245))
+:extrapreds ((x3246))
+:extrapreds ((x3247))
+:extrapreds ((x3248))
+:extrapreds ((x3249))
+:extrapreds ((x3250))
+:extrapreds ((x3251))
+:extrapreds ((x3252))
+:extrapreds ((x3253))
+:extrapreds ((x3254))
+:extrapreds ((x3255))
+:extrapreds ((x3256))
+:extrapreds ((x3257))
+:extrapreds ((x3258))
+:extrapreds ((x3259))
+:extrapreds ((x3260))
+:extrapreds ((x3261))
+:extrapreds ((x3262))
+:extrapreds ((x3263))
+:extrapreds ((x3264))
+:extrapreds ((x3265))
+:extrapreds ((x3266))
+:extrapreds ((x3267))
+:extrapreds ((x3268))
+:extrapreds ((x3269))
+:extrapreds ((x3270))
+:extrapreds ((x3271))
+:extrapreds ((x3272))
+:extrapreds ((x3273))
+:extrapreds ((x3274))
+:extrapreds ((x3275))
+:extrapreds ((x3276))
+:extrapreds ((x3277))
+:extrapreds ((x3278))
+:extrapreds ((x3279))
+:extrapreds ((x3280))
+:extrapreds ((x3281))
+:extrapreds ((x3282))
+:extrapreds ((x3283))
+:extrapreds ((x3284))
+:extrapreds ((x3285))
+:extrapreds ((x3286))
+:extrapreds ((x3287))
+:extrapreds ((x3288))
+:extrapreds ((x3289))
+:extrapreds ((x3290))
+:extrapreds ((x3291))
+:extrapreds ((x3292))
+:extrapreds ((x3293))
+:extrapreds ((x3294))
+:extrapreds ((x3295))
+:extrapreds ((x3296))
+:extrapreds ((x3297))
+:extrapreds ((x3298))
+:extrapreds ((x3299))
+:extrapreds ((x3300))
+:extrapreds ((x3301))
+:extrapreds ((x3302))
+:extrapreds ((x3303))
+:extrapreds ((x3304))
+:extrapreds ((x3305))
+:extrapreds ((x3306))
+:extrapreds ((x3307))
+:extrapreds ((x3308))
+:extrapreds ((x3309))
+:extrapreds ((x3310))
+:extrapreds ((x3311))
+:extrapreds ((x3312))
+:extrapreds ((x3313))
+:extrapreds ((x3314))
+:extrapreds ((x3315))
+:extrapreds ((x3316))
+:extrapreds ((x3317))
+:extrapreds ((x3318))
+:extrapreds ((x3319))
+:extrapreds ((x3320))
+:extrapreds ((x3321))
+:extrapreds ((x3322))
+:extrapreds ((x3323))
+:extrapreds ((x3324))
+:extrapreds ((x3325))
+:extrapreds ((x3326))
+:extrapreds ((x3327))
+:extrapreds ((x3328))
+:extrapreds ((x3329))
+:extrapreds ((x3330))
+:extrapreds ((x3331))
+:extrapreds ((x3332))
+:extrapreds ((x3333))
+:extrapreds ((x3334))
+:extrapreds ((x3335))
+:extrapreds ((x3336))
+:extrapreds ((x3337))
+:extrapreds ((x3338))
+:extrapreds ((x3339))
+:extrapreds ((x3340))
+:extrapreds ((x3341))
+:extrapreds ((x3342))
+:extrapreds ((x3343))
+:extrapreds ((x3344))
+:extrapreds ((x3345))
+:extrapreds ((x3346))
+:extrapreds ((x3347))
+:extrapreds ((x3348))
+:extrapreds ((x3349))
+:extrapreds ((x3350))
+:extrapreds ((x3351))
+:extrapreds ((x3352))
+:extrapreds ((x3353))
+:extrapreds ((x3354))
+:extrapreds ((x3355))
+:extrapreds ((x3356))
+:extrapreds ((x3357))
+:extrapreds ((x3358))
+:extrapreds ((x3359))
+:extrapreds ((x3360))
+:extrapreds ((x3361))
+:extrapreds ((x3362))
+:extrapreds ((x3363))
+:extrapreds ((x3364))
+:extrapreds ((x3365))
+:extrapreds ((x3366))
+:extrapreds ((x3367))
+:extrapreds ((x3368))
+:extrapreds ((x3369))
+:extrapreds ((x3370))
+:extrapreds ((x3371))
+:extrapreds ((x3372))
+:extrapreds ((x3373))
+:extrapreds ((x3374))
+:extrapreds ((x3375))
+:extrapreds ((x3376))
+:extrapreds ((x3377))
+:extrapreds ((x3378))
+:extrapreds ((x3379))
+:extrapreds ((x3380))
+:extrapreds ((x3381))
+:extrapreds ((x3382))
+:extrapreds ((x3383))
+:extrapreds ((x3384))
+:extrapreds ((x3385))
+:extrapreds ((x3386))
+:extrapreds ((x3387))
+:extrapreds ((x3388))
+:extrapreds ((x3389))
+:extrapreds ((x3390))
+:extrapreds ((x3391))
+:extrapreds ((x3392))
+:extrapreds ((x3393))
+:extrapreds ((x3394))
+:extrapreds ((x3395))
+:extrapreds ((x3396))
+:extrapreds ((x3397))
+:extrapreds ((x3398))
+:extrapreds ((x3399))
+:extrapreds ((x3400))
+:extrapreds ((x3401))
+:extrapreds ((x3402))
+:extrapreds ((x3403))
+:extrapreds ((x3404))
+:extrapreds ((x3405))
+:extrapreds ((x3406))
+:extrapreds ((x3407))
+:extrapreds ((x3408))
+:extrapreds ((x3409))
+:extrapreds ((x3410))
+:extrapreds ((x3411))
+:extrapreds ((x3412))
+:extrapreds ((x3413))
+:extrapreds ((x3414))
+:extrapreds ((x3415))
+:extrapreds ((x3416))
+:extrapreds ((x3417))
+:extrapreds ((x3418))
+:extrapreds ((x3419))
+:extrapreds ((x3420))
+:extrapreds ((x3421))
+:extrapreds ((x3422))
+:extrapreds ((x3423))
+:extrapreds ((x3424))
+:extrapreds ((x3425))
+:extrapreds ((x3426))
+:extrapreds ((x3427))
+:extrapreds ((x3428))
+:extrapreds ((x3429))
+:extrapreds ((x3430))
+:extrapreds ((x3431))
+:extrapreds ((x3432))
+:extrapreds ((x3433))
+:extrapreds ((x3434))
+:extrapreds ((x3435))
+:extrapreds ((x3436))
+:extrapreds ((x3437))
+:extrapreds ((x3438))
+:extrapreds ((x3439))
+:extrapreds ((x3440))
+:extrapreds ((x3441))
+:extrapreds ((x3442))
+:extrapreds ((x3443))
+:extrapreds ((x3444))
+:extrapreds ((x3445))
+:extrapreds ((x3446))
+:extrapreds ((x3447))
+:extrapreds ((x3448))
+:extrapreds ((x3449))
+:extrapreds ((x3450))
+:extrapreds ((x3451))
+:extrapreds ((x3452))
+:extrapreds ((x3453))
+:extrapreds ((x3454))
+:extrapreds ((x3455))
+:extrapreds ((x3456))
+:extrapreds ((x3457))
+:extrapreds ((x3458))
+:extrapreds ((x3459))
+:extrapreds ((x3460))
+:extrapreds ((x3461))
+:extrapreds ((x3462))
+:extrapreds ((x3463))
+:extrapreds ((x3464))
+:extrapreds ((x3465))
+:extrapreds ((x3466))
+:extrapreds ((x3467))
+:extrapreds ((x3468))
+:extrapreds ((x3469))
+:extrapreds ((x3470))
+:extrapreds ((x3471))
+:extrapreds ((x3472))
+:extrapreds ((x3473))
+:extrapreds ((x3474))
+:extrapreds ((x3475))
+:extrapreds ((x3476))
+:extrapreds ((x3477))
+:extrapreds ((x3478))
+:extrapreds ((x3479))
+:extrapreds ((x3480))
+:extrapreds ((x3481))
+:extrapreds ((x3482))
+:extrapreds ((x3483))
+:extrapreds ((x3484))
+:extrapreds ((x3485))
+:extrapreds ((x3486))
+:extrapreds ((x3487))
+:extrapreds ((x3488))
+:extrapreds ((x3489))
+:extrapreds ((x3490))
+:extrapreds ((x3491))
+:extrapreds ((x3492))
+:extrapreds ((x3493))
+:extrapreds ((x3494))
+:extrapreds ((x3495))
+:extrapreds ((x3496))
+:extrapreds ((x3497))
+:extrapreds ((x3498))
+:extrapreds ((x3499))
+:extrapreds ((x3500))
+:extrapreds ((x3501))
+:extrapreds ((x3502))
+:extrapreds ((x3503))
+:extrapreds ((x3504))
+:extrapreds ((x3505))
+:extrapreds ((x3506))
+:extrapreds ((x3507))
+:extrapreds ((x3508))
+:extrapreds ((x3509))
+:extrapreds ((x3510))
+:extrapreds ((x3511))
+:extrapreds ((x3512))
+:extrapreds ((x3513))
+:extrapreds ((x3514))
+:extrapreds ((x3515))
+:extrapreds ((x3516))
+:extrapreds ((x3517))
+:extrapreds ((x3518))
+:extrapreds ((x3519))
+:extrapreds ((x3520))
+:extrapreds ((x3521))
+:extrapreds ((x3522))
+:extrapreds ((x3523))
+:extrapreds ((x3524))
+:extrapreds ((x3525))
+:extrapreds ((x3526))
+:extrapreds ((x3527))
+:extrapreds ((x3528))
+:extrapreds ((x3529))
+:extrapreds ((x3530))
+:extrapreds ((x3531))
+:extrapreds ((x3532))
+:extrapreds ((x3533))
+:extrapreds ((x3534))
+:extrapreds ((x3535))
+:extrapreds ((x3536))
+:extrapreds ((x3537))
+:extrapreds ((x3538))
+:extrapreds ((x3539))
+:extrapreds ((x3540))
+:extrapreds ((x3541))
+:extrapreds ((x3542))
+:extrapreds ((x3543))
+:extrapreds ((x3544))
+:extrapreds ((x3545))
+:extrapreds ((x3546))
+:extrapreds ((x3547))
+:extrapreds ((x3548))
+:extrapreds ((x3549))
+:extrapreds ((x3550))
+:extrapreds ((x3551))
+:extrapreds ((x3552))
+:extrapreds ((x3553))
+:extrapreds ((x3554))
+:extrapreds ((x3555))
+:extrapreds ((x3556))
+:extrapreds ((x3557))
+:extrapreds ((x3558))
+:extrapreds ((x3559))
+:extrapreds ((x3560))
+:extrapreds ((x3561))
+:extrapreds ((x3562))
+:extrapreds ((x3563))
+:extrapreds ((x3564))
+:extrapreds ((x3565))
+:extrapreds ((x3566))
+:extrapreds ((x3567))
+:extrapreds ((x3568))
+:extrapreds ((x3569))
+:extrapreds ((x3570))
+:extrapreds ((x3571))
+:extrapreds ((x3572))
+:extrapreds ((x3573))
+:extrapreds ((x3574))
+:extrapreds ((x3575))
+:extrapreds ((x3576))
+:extrapreds ((x3577))
+:extrapreds ((x3578))
+:extrapreds ((x3579))
+:extrapreds ((x3580))
+:extrapreds ((x3581))
+:extrapreds ((x3582))
+:extrapreds ((x3583))
+:extrapreds ((x3584))
+:extrapreds ((x3585))
+:extrapreds ((x3586))
+:extrapreds ((x3587))
+:extrapreds ((x3588))
+:extrapreds ((x3589))
+:extrapreds ((x3590))
+:extrapreds ((x3591))
+:extrapreds ((x3592))
+:extrapreds ((x3593))
+:extrapreds ((x3594))
+:extrapreds ((x3595))
+:extrapreds ((x3596))
+:extrapreds ((x3597))
+:extrapreds ((x3598))
+:extrapreds ((x3599))
+:extrapreds ((x3600))
+:extrapreds ((x3601))
+:extrapreds ((x3602))
+:extrapreds ((x3603))
+:extrapreds ((x3604))
+:extrapreds ((x3605))
+:extrapreds ((x3606))
+:extrapreds ((x3607))
+:extrapreds ((x3608))
+:extrapreds ((x3609))
+:extrapreds ((x3610))
+:extrapreds ((x3611))
+:extrapreds ((x3612))
+:extrapreds ((x3613))
+:extrapreds ((x3614))
+:extrapreds ((x3615))
+:extrapreds ((x3616))
+:extrapreds ((x3617))
+:extrapreds ((x3618))
+:extrapreds ((x3619))
+:extrapreds ((x3620))
+:extrapreds ((x3621))
+:extrapreds ((x3622))
+:extrapreds ((x3623))
+:extrapreds ((x3624))
+:extrapreds ((x3625))
+:extrapreds ((x3626))
+:extrapreds ((x3627))
+:extrapreds ((x3628))
+:extrapreds ((x3629))
+:extrapreds ((x3630))
+:extrapreds ((x3631))
+:extrapreds ((x3632))
+:extrapreds ((x3633))
+:extrapreds ((x3634))
+:extrapreds ((x3635))
+:extrapreds ((x3636))
+:extrapreds ((x3637))
+:extrapreds ((x3638))
+:extrapreds ((x3639))
+:extrapreds ((x3640))
+:extrapreds ((x3641))
+:extrapreds ((x3642))
+:extrapreds ((x3643))
+:extrapreds ((x3644))
+:extrapreds ((x3645))
+:extrapreds ((x3646))
+:extrapreds ((x3647))
+:extrapreds ((x3648))
+:extrapreds ((x3649))
+:extrapreds ((x3650))
+:extrapreds ((x3651))
+:extrapreds ((x3652))
+:extrapreds ((x3653))
+:extrapreds ((x3654))
+:extrapreds ((x3655))
+:extrapreds ((x3656))
+:extrapreds ((x3657))
+:extrapreds ((x3658))
+:extrapreds ((x3659))
+:extrapreds ((x3660))
+:extrapreds ((x3661))
+:extrapreds ((x3662))
+:extrapreds ((x3663))
+:extrapreds ((x3664))
+:extrapreds ((x3665))
+:extrapreds ((x3666))
+:extrapreds ((x3667))
+:extrapreds ((x3668))
+:extrapreds ((x3669))
+:extrapreds ((x3670))
+:extrapreds ((x3671))
+:extrapreds ((x3672))
+:extrapreds ((x3673))
+:extrapreds ((x3674))
+:extrapreds ((x3675))
+:extrapreds ((x3676))
+:extrapreds ((x3677))
+:extrapreds ((x3678))
+:extrapreds ((x3679))
+:extrapreds ((x3680))
+:extrapreds ((x3681))
+:extrapreds ((x3682))
+:extrapreds ((x3683))
+:extrapreds ((x3684))
+:extrapreds ((x3685))
+:extrapreds ((x3686))
+:extrapreds ((x3687))
+:extrapreds ((x3688))
+:extrapreds ((x3689))
+:extrapreds ((x3690))
+:extrapreds ((x3691))
+:extrapreds ((x3692))
+:extrapreds ((x3693))
+:extrapreds ((x3694))
+:extrapreds ((x3695))
+:extrapreds ((x3696))
+:extrapreds ((x3697))
+:extrapreds ((x3698))
+:extrapreds ((x3699))
+:extrapreds ((x3700))
+:extrapreds ((x3701))
+:extrapreds ((x3702))
+:extrapreds ((x3703))
+:extrapreds ((x3704))
+:extrapreds ((x3705))
+:extrapreds ((x3706))
+:extrapreds ((x3707))
+:extrapreds ((x3708))
+:extrapreds ((x3709))
+:extrapreds ((x3710))
+:extrapreds ((x3711))
+:extrapreds ((x3712))
+:extrapreds ((x3713))
+:extrapreds ((x3714))
+:extrapreds ((x3715))
+:extrapreds ((x3716))
+:extrapreds ((x3717))
+:extrapreds ((x3718))
+:extrapreds ((x3719))
+:extrapreds ((x3720))
+:extrapreds ((x3721))
+:extrapreds ((x3722))
+:extrapreds ((x3723))
+:extrapreds ((x3724))
+:extrapreds ((x3725))
+:extrapreds ((x3726))
+:extrapreds ((x3727))
+:extrapreds ((x3728))
+:extrapreds ((x3729))
+:extrapreds ((x3730))
+:extrapreds ((x3731))
+:extrapreds ((x3732))
+:extrapreds ((x3733))
+:extrapreds ((x3734))
+:extrapreds ((x3735))
+:extrapreds ((x3736))
+:extrapreds ((x3737))
+:extrapreds ((x3738))
+:extrapreds ((x3739))
+:extrapreds ((x3740))
+:extrapreds ((x3741))
+:extrapreds ((x3742))
+:extrapreds ((x3743))
+:extrapreds ((x3744))
+:extrapreds ((x3745))
+:extrapreds ((x3746))
+:extrapreds ((x3747))
+:extrapreds ((x3748))
+:extrapreds ((x3749))
+:extrapreds ((x3750))
+:extrapreds ((x3751))
+:extrapreds ((x3752))
+:extrapreds ((x3753))
+:extrapreds ((x3754))
+:extrapreds ((x3755))
+:extrapreds ((x3756))
+:extrapreds ((x3757))
+:extrapreds ((x3758))
+:extrapreds ((x3759))
+:extrapreds ((x3760))
+:extrapreds ((x3761))
+:extrapreds ((x3762))
+:extrapreds ((x3763))
+:extrapreds ((x3764))
+:extrapreds ((x3765))
+:extrapreds ((x3766))
+:extrapreds ((x3767))
+:extrapreds ((x3768))
+:extrapreds ((x3769))
+:extrapreds ((x3770))
+:extrapreds ((x3771))
+:extrapreds ((x3772))
+:extrapreds ((x3773))
+:extrapreds ((x3774))
+:extrapreds ((x3775))
+:extrapreds ((x3776))
+:extrapreds ((x3777))
+:extrapreds ((x3778))
+:extrapreds ((x3779))
+:extrapreds ((x3780))
+:extrapreds ((x3781))
+:extrapreds ((x3782))
+:extrapreds ((x3783))
+:extrapreds ((x3784))
+:extrapreds ((x3785))
+:extrapreds ((x3786))
+:extrapreds ((x3787))
+:extrapreds ((x3788))
+:extrapreds ((x3789))
+:extrapreds ((x3790))
+:extrapreds ((x3791))
+:extrapreds ((x3792))
+:extrapreds ((x3793))
+:extrapreds ((x3794))
+:extrapreds ((x3795))
+:extrapreds ((x3796))
+:extrapreds ((x3797))
+:extrapreds ((x3798))
+:extrapreds ((x3799))
+:extrapreds ((x3800))
+:extrapreds ((x3801))
+:extrapreds ((x3802))
+:extrapreds ((x3803))
+:extrapreds ((x3804))
+:extrapreds ((x3805))
+:extrapreds ((x3806))
+:extrapreds ((x3807))
+:extrapreds ((x3808))
+:extrapreds ((x3809))
+:extrapreds ((x3810))
+:extrapreds ((x3811))
+:extrapreds ((x3812))
+:extrapreds ((x3813))
+:extrapreds ((x3814))
+:extrapreds ((x3815))
+:extrapreds ((x3816))
+:extrapreds ((x3817))
+:extrapreds ((x3818))
+:extrapreds ((x3819))
+:extrapreds ((x3820))
+:extrapreds ((x3821))
+:extrapreds ((x3822))
+:extrapreds ((x3823))
+:extrapreds ((x3824))
+:extrapreds ((x3825))
+:extrapreds ((x3826))
+:extrapreds ((x3827))
+:extrapreds ((x3828))
+:extrapreds ((x3829))
+:extrapreds ((x3830))
+:extrapreds ((x3831))
+:extrapreds ((x3832))
+:extrapreds ((x3833))
+:extrapreds ((x3834))
+:extrapreds ((x3835))
+:extrapreds ((x3836))
+:extrapreds ((x3837))
+:extrapreds ((x3838))
+:extrapreds ((x3839))
+:extrapreds ((x3840))
+:extrapreds ((x3841))
+:extrapreds ((x3842))
+:extrapreds ((x3843))
+:extrapreds ((x3844))
+:extrapreds ((x3845))
+:extrapreds ((x3846))
+:extrapreds ((x3847))
+:extrapreds ((x3848))
+:extrapreds ((x3849))
+:extrapreds ((x3850))
+:extrapreds ((x3851))
+:extrapreds ((x3852))
+:extrapreds ((x3853))
+:extrapreds ((x3854))
+:extrapreds ((x3855))
+:extrapreds ((x3856))
+:extrapreds ((x3857))
+:extrapreds ((x3858))
+:extrapreds ((x3859))
+:extrapreds ((x3860))
+:extrapreds ((x3861))
+:extrapreds ((x3862))
+:extrapreds ((x3863))
+:extrapreds ((x3864))
+:extrapreds ((x3865))
+:extrapreds ((x3866))
+:extrapreds ((x3867))
+:extrapreds ((x3868))
+:extrapreds ((x3869))
+:extrapreds ((x3870))
+:extrapreds ((x3871))
+:extrapreds ((x3872))
+:extrapreds ((x3873))
+:extrapreds ((x3874))
+:extrapreds ((x3875))
+:extrapreds ((x3876))
+:extrapreds ((x3877))
+:extrapreds ((x3878))
+:extrapreds ((x3879))
+:extrapreds ((x3880))
+:extrapreds ((x3881))
+:extrapreds ((x3882))
+:extrapreds ((x3883))
+:extrapreds ((x3884))
+:extrapreds ((x3885))
+:extrapreds ((x3886))
+:extrapreds ((x3887))
+:extrapreds ((x3888))
+:extrapreds ((x3889))
+:extrapreds ((x3890))
+:extrapreds ((x3891))
+:extrapreds ((x3892))
+:extrapreds ((x3893))
+:extrapreds ((x3894))
+:extrapreds ((x3895))
+:extrapreds ((x3896))
+:extrapreds ((x3897))
+:extrapreds ((x3898))
+:extrapreds ((x3899))
+:extrapreds ((x3900))
+:extrapreds ((x3901))
+:extrapreds ((x3902))
+:extrapreds ((x3903))
+:extrapreds ((x3904))
+:extrapreds ((x3905))
+:extrapreds ((x3906))
+:extrapreds ((x3907))
+:extrapreds ((x3908))
+:extrapreds ((x3909))
+:extrapreds ((x3910))
+:extrapreds ((x3911))
+:extrapreds ((x3912))
+:extrapreds ((x3913))
+:extrapreds ((x3914))
+:extrapreds ((x3915))
+:extrapreds ((x3916))
+:extrapreds ((x3917))
+:extrapreds ((x3918))
+:extrapreds ((x3919))
+:extrapreds ((x3920))
+:extrapreds ((x3921))
+:extrapreds ((x3922))
+:extrapreds ((x3923))
+:extrapreds ((x3924))
+:extrapreds ((x3925))
+:extrapreds ((x3926))
+:extrapreds ((x3927))
+:extrapreds ((x3928))
+:extrapreds ((x3929))
+:extrapreds ((x3930))
+:extrapreds ((x3931))
+:extrapreds ((x3932))
+:extrapreds ((x3933))
+:extrapreds ((x3934))
+:extrapreds ((x3935))
+:extrapreds ((x3936))
+:extrapreds ((x3937))
+:extrapreds ((x3938))
+:extrapreds ((x3939))
+:extrapreds ((x3940))
+:extrapreds ((x3941))
+:extrapreds ((x3942))
+:extrapreds ((x3943))
+:extrapreds ((x3944))
+:extrapreds ((x3945))
+:extrapreds ((x3946))
+:extrapreds ((x3947))
+:extrapreds ((x3948))
+:extrapreds ((x3949))
+:extrapreds ((x3950))
+:extrapreds ((x3951))
+:extrapreds ((x3952))
+:extrapreds ((x3953))
+:extrapreds ((x3954))
+:extrapreds ((x3955))
+:extrapreds ((x3956))
+:extrapreds ((x3957))
+:extrapreds ((x3958))
+:extrapreds ((x3959))
+:extrapreds ((x3960))
+:extrapreds ((x3961))
+:extrapreds ((x3962))
+:extrapreds ((x3963))
+:extrapreds ((x3964))
+:extrapreds ((x3965))
+:extrapreds ((x3966))
+:extrapreds ((x3967))
+:extrapreds ((x3968))
+:extrapreds ((x3969))
+:extrapreds ((x3970))
+:extrapreds ((x3971))
+:extrapreds ((x3972))
+:extrapreds ((x3973))
+:extrapreds ((x3974))
+:extrapreds ((x3975))
+:extrapreds ((x3976))
+:extrapreds ((x3977))
+:extrapreds ((x3978))
+:extrapreds ((x3979))
+:extrapreds ((x3980))
+:extrapreds ((x3981))
+:extrapreds ((x3982))
+:extrapreds ((x3983))
+:extrapreds ((x3984))
+:extrapreds ((x3985))
+:extrapreds ((x3986))
+:extrapreds ((x3987))
+:extrapreds ((x3988))
+:extrapreds ((x3989))
+:extrapreds ((x3990))
+:extrapreds ((x3991))
+:extrapreds ((x3992))
+:extrapreds ((x3993))
+:extrapreds ((x3994))
+:extrapreds ((x3995))
+:extrapreds ((x3996))
+:extrapreds ((x3997))
+:extrapreds ((x3998))
+:extrapreds ((x3999))
+:extrapreds ((x4000))
+:extrapreds ((x4001))
+:extrapreds ((x4002))
+:extrapreds ((x4003))
+:extrapreds ((x4004))
+:extrapreds ((x4005))
+:extrapreds ((x4006))
+:extrapreds ((x4007))
+:extrapreds ((x4008))
+:extrapreds ((x4009))
+:extrapreds ((x4010))
+:extrapreds ((x4011))
+:extrapreds ((x4012))
+:extrapreds ((x4013))
+:extrapreds ((x4014))
+:extrapreds ((x4015))
+:extrapreds ((x4016))
+:extrapreds ((x4017))
+:extrapreds ((x4018))
+:extrapreds ((x4019))
+:extrapreds ((x4020))
+:extrapreds ((x4021))
+:extrapreds ((x4022))
+:extrapreds ((x4023))
+:extrapreds ((x4024))
+:extrapreds ((x4025))
+:extrapreds ((x4026))
+:extrapreds ((x4027))
+:extrapreds ((x4028))
+:extrapreds ((x4029))
+:extrapreds ((x4030))
+:extrapreds ((x4031))
+:extrapreds ((x4032))
+:extrapreds ((x4033))
+:extrapreds ((x4034))
+:extrapreds ((x4035))
+:extrapreds ((x4036))
+:extrapreds ((x4037))
+:extrapreds ((x4038))
+:extrapreds ((x4039))
+:extrapreds ((x4040))
+:extrapreds ((x4041))
+:extrapreds ((x4042))
+:extrapreds ((x4043))
+:extrapreds ((x4044))
+:extrapreds ((x4045))
+:extrapreds ((x4046))
+:extrapreds ((x4047))
+:extrapreds ((x4048))
+:extrapreds ((x4049))
+:extrapreds ((x4050))
+:extrapreds ((x4051))
+:extrapreds ((x4052))
+:extrapreds ((x4053))
+:extrapreds ((x4054))
+:extrapreds ((x4055))
+:extrapreds ((x4056))
+:extrapreds ((x4057))
+:extrapreds ((x4058))
+:extrapreds ((x4059))
+:extrapreds ((x4060))
+:extrapreds ((x4061))
+:extrapreds ((x4062))
+:extrapreds ((x4063))
+:extrapreds ((x4064))
+:extrapreds ((x4065))
+:extrapreds ((x4066))
+:extrapreds ((x4067))
+:extrapreds ((x4068))
+:extrapreds ((x4069))
+:extrapreds ((x4070))
+:extrapreds ((x4071))
+:extrapreds ((x4072))
+:extrapreds ((x4073))
+:extrapreds ((x4074))
+:extrapreds ((x4075))
+:extrapreds ((x4076))
+:extrapreds ((x4077))
+:extrapreds ((x4078))
+:extrapreds ((x4079))
+:extrapreds ((x4080))
+:extrapreds ((x4081))
+:extrapreds ((x4082))
+:extrapreds ((x4083))
+:extrapreds ((x4084))
+:extrapreds ((x4085))
+:extrapreds ((x4086))
+:extrapreds ((x4087))
+:extrapreds ((x4088))
+:extrapreds ((x4089))
+:extrapreds ((x4090))
+:extrapreds ((x4091))
+:extrapreds ((x4092))
+:extrapreds ((x4093))
+:extrapreds ((x4094))
+:extrapreds ((x4095))
+:extrapreds ((x4096))
+:extrapreds ((x4097))
+:extrapreds ((x4098))
+:extrapreds ((x4099))
+:extrapreds ((x4100))
+:extrapreds ((x4101))
+:extrapreds ((x4102))
+:extrapreds ((x4103))
+:extrapreds ((x4104))
+:extrapreds ((x4105))
+:extrapreds ((x4106))
+:extrapreds ((x4107))
+:extrapreds ((x4108))
+:extrapreds ((x4109))
+:extrapreds ((x4110))
+:extrapreds ((x4111))
+:extrapreds ((x4112))
+:extrapreds ((x4113))
+:extrapreds ((x4114))
+:extrapreds ((x4115))
+:extrapreds ((x4116))
+:extrapreds ((x4117))
+:extrapreds ((x4118))
+:extrapreds ((x4119))
+:extrapreds ((x4120))
+:extrapreds ((x4121))
+:extrapreds ((x4122))
+:extrapreds ((x4123))
+:extrapreds ((x4124))
+:extrapreds ((x4125))
+:extrapreds ((x4126))
+:extrapreds ((x4127))
+:extrapreds ((x4128))
+:extrapreds ((x4129))
+:extrapreds ((x4130))
+:extrapreds ((x4131))
+:extrapreds ((x4132))
+:extrapreds ((x4133))
+:extrapreds ((x4134))
+:extrapreds ((x4135))
+:extrapreds ((x4136))
+:extrapreds ((x4137))
+:extrapreds ((x4138))
+:extrapreds ((x4139))
+:extrapreds ((x4140))
+:extrapreds ((x4141))
+:extrapreds ((x4142))
+:extrapreds ((x4143))
+:extrapreds ((x4144))
+:extrapreds ((x4145))
+:extrapreds ((x4146))
+:extrapreds ((x4147))
+:extrapreds ((x4148))
+:extrapreds ((x4149))
+:extrapreds ((x4150))
+:extrapreds ((x4151))
+:extrapreds ((x4152))
+:extrapreds ((x4153))
+:extrapreds ((x4154))
+:extrapreds ((x4155))
+:extrapreds ((x4156))
+:extrapreds ((x4157))
+:extrapreds ((x4158))
+:extrapreds ((x4159))
+:extrapreds ((x4160))
+:extrapreds ((x4161))
+:extrapreds ((x4162))
+:extrapreds ((x4163))
+:extrapreds ((x4164))
+:extrapreds ((x4165))
+:extrapreds ((x4166))
+:extrapreds ((x4167))
+:extrapreds ((x4168))
+:extrapreds ((x4169))
+:extrapreds ((x4170))
+:extrapreds ((x4171))
+:extrapreds ((x4172))
+:extrapreds ((x4173))
+:extrapreds ((x4174))
+:extrapreds ((x4175))
+:extrapreds ((x4176))
+:extrapreds ((x4177))
+:extrapreds ((x4178))
+:extrapreds ((x4179))
+:extrapreds ((x4180))
+:extrapreds ((x4181))
+:extrapreds ((x4182))
+:extrapreds ((x4183))
+:extrapreds ((x4184))
+:extrapreds ((x4185))
+:extrapreds ((x4186))
+:extrapreds ((x4187))
+:extrapreds ((x4188))
+:extrapreds ((x4189))
+:extrapreds ((x4190))
+:extrapreds ((x4191))
+:extrapreds ((x4192))
+:extrapreds ((x4193))
+:extrapreds ((x4194))
+:extrapreds ((x4195))
+:extrapreds ((x4196))
+:extrapreds ((x4197))
+:extrapreds ((x4198))
+:extrapreds ((x4199))
+:extrapreds ((x4200))
+:extrapreds ((x4201))
+:extrapreds ((x4202))
+:extrapreds ((x4203))
+:extrapreds ((x4204))
+:extrapreds ((x4205))
+:extrapreds ((x4206))
+:extrapreds ((x4207))
+:extrapreds ((x4208))
+:extrapreds ((x4209))
+:extrapreds ((x4210))
+:extrapreds ((x4211))
+:extrapreds ((x4212))
+:extrapreds ((x4213))
+:extrapreds ((x4214))
+:extrapreds ((x4215))
+:extrapreds ((x4216))
+:extrapreds ((x4217))
+:extrapreds ((x4218))
+:extrapreds ((x4219))
+:extrapreds ((x4220))
+:extrapreds ((x4221))
+:extrapreds ((x4222))
+:extrapreds ((x4223))
+:extrapreds ((x4224))
+:extrapreds ((x4225))
+:extrapreds ((x4226))
+:extrapreds ((x4227))
+:extrapreds ((x4228))
+:extrapreds ((x4229))
+:extrapreds ((x4230))
+:extrapreds ((x4231))
+:extrapreds ((x4232))
+:extrapreds ((x4233))
+:extrapreds ((x4234))
+:extrapreds ((x4235))
+:extrapreds ((x4236))
+:extrapreds ((x4237))
+:extrapreds ((x4238))
+:extrapreds ((x4239))
+:extrapreds ((x4240))
+:extrapreds ((x4241))
+:extrapreds ((x4242))
+:extrapreds ((x4243))
+:extrapreds ((x4244))
+:extrapreds ((x4245))
+:extrapreds ((x4246))
+:extrapreds ((x4247))
+:extrapreds ((x4248))
+:extrapreds ((x4249))
+:extrapreds ((x4250))
+:extrapreds ((x4251))
+:extrapreds ((x4252))
+:extrapreds ((x4253))
+:extrapreds ((x4254))
+:extrapreds ((x4255))
+:extrapreds ((x4256))
+:extrapreds ((x4257))
+:extrapreds ((x4258))
+:extrapreds ((x4259))
+:extrapreds ((x4260))
+:extrapreds ((x4261))
+:extrapreds ((x4262))
+:extrapreds ((x4263))
+:extrapreds ((x4264))
+:extrapreds ((x4265))
+:extrapreds ((x4266))
+:extrapreds ((x4267))
+:extrapreds ((x4268))
+:extrapreds ((x4269))
+:extrapreds ((x4270))
+:extrapreds ((x4271))
+:extrapreds ((x4272))
+:extrapreds ((x4273))
+:extrapreds ((x4274))
+:extrapreds ((x4275))
+:extrapreds ((x4276))
+:extrapreds ((x4277))
+:extrapreds ((x4278))
+:extrapreds ((x4279))
+:extrapreds ((x4280))
+:extrapreds ((x4281))
+:extrapreds ((x4282))
+:extrapreds ((x4283))
+:extrapreds ((x4284))
+:extrapreds ((x4285))
+:extrapreds ((x4286))
+:extrapreds ((x4287))
+:extrapreds ((x4288))
+:extrapreds ((x4289))
+:extrapreds ((x4290))
+:extrapreds ((x4291))
+:extrapreds ((x4292))
+:extrapreds ((x4293))
+:extrapreds ((x4294))
+:extrapreds ((x4295))
+:extrapreds ((x4296))
+:extrapreds ((x4297))
+:extrapreds ((x4298))
+:extrapreds ((x4299))
+:extrapreds ((x4300))
+:extrapreds ((x4301))
+:extrapreds ((x4302))
+:extrapreds ((x4303))
+:extrapreds ((x4304))
+:extrapreds ((x4305))
+:extrapreds ((x4306))
+:extrapreds ((x4307))
+:extrapreds ((x4308))
+:extrapreds ((x4309))
+:extrapreds ((x4310))
+:extrapreds ((x4311))
+:extrapreds ((x4312))
+:extrapreds ((x4313))
+:extrapreds ((x4314))
+:extrapreds ((x4315))
+:extrapreds ((x4316))
+:extrapreds ((x4317))
+:extrapreds ((x4318))
+:extrapreds ((x4319))
+:extrapreds ((x4320))
+:extrapreds ((x4321))
+:extrapreds ((x4322))
+:extrapreds ((x4323))
+:extrapreds ((x4324))
+:extrapreds ((x4325))
+:extrapreds ((x4326))
+:extrapreds ((x4327))
+:extrapreds ((x4328))
+:extrapreds ((x4329))
+:extrapreds ((x4330))
+:extrapreds ((x4331))
+:extrapreds ((x4332))
+:extrapreds ((x4333))
+:extrapreds ((x4334))
+:extrapreds ((x4335))
+:extrapreds ((x4336))
+:extrapreds ((x4337))
+:extrapreds ((x4338))
+:extrapreds ((x4339))
+:extrapreds ((x4340))
+:extrapreds ((x4341))
+:extrapreds ((x4342))
+:extrapreds ((x4343))
+:extrapreds ((x4344))
+:extrapreds ((x4345))
+:extrapreds ((x4346))
+:extrapreds ((x4347))
+:extrapreds ((x4348))
+:extrapreds ((x4349))
+:extrapreds ((x4350))
+:extrapreds ((x4351))
+:extrapreds ((x4352))
+:extrapreds ((x4353))
+:extrapreds ((x4354))
+:extrapreds ((x4355))
+:extrapreds ((x4356))
+:extrapreds ((x4357))
+:extrapreds ((x4358))
+:extrapreds ((x4359))
+:extrapreds ((x4360))
+:extrapreds ((x4361))
+:extrapreds ((x4362))
+:extrapreds ((x4363))
+:extrapreds ((x4364))
+:extrapreds ((x4365))
+:extrapreds ((x4366))
+:extrapreds ((x4367))
+:extrapreds ((x4368))
+:extrapreds ((x4369))
+:extrapreds ((x4370))
+:extrapreds ((x4371))
+:extrapreds ((x4372))
+:extrapreds ((x4373))
+:extrapreds ((x4374))
+:extrapreds ((x4375))
+:extrapreds ((x4376))
+:extrapreds ((x4377))
+:extrapreds ((x4378))
+:extrapreds ((x4379))
+:extrapreds ((x4380))
+:extrapreds ((x4381))
+:extrapreds ((x4382))
+:extrapreds ((x4383))
+:extrapreds ((x4384))
+:extrapreds ((x4385))
+:extrapreds ((x4386))
+:extrapreds ((x4387))
+:extrapreds ((x4388))
+:extrapreds ((x4389))
+:extrapreds ((x4390))
+:extrapreds ((x4391))
+:extrapreds ((x4392))
+:extrapreds ((x4393))
+:extrapreds ((x4394))
+:extrapreds ((x4395))
+:extrapreds ((x4396))
+:extrapreds ((x4397))
+:extrapreds ((x4398))
+:extrapreds ((x4399))
+:extrapreds ((x4400))
+:extrapreds ((x4401))
+:extrapreds ((x4402))
+:extrapreds ((x4403))
+:extrapreds ((x4404))
+:extrapreds ((x4405))
+:extrapreds ((x4406))
+:extrapreds ((x4407))
+:extrapreds ((x4408))
+:extrapreds ((x4409))
+:extrapreds ((x4410))
+:extrapreds ((x4411))
+:extrapreds ((x4412))
+:extrapreds ((x4413))
+:extrapreds ((x4414))
+:extrapreds ((x4415))
+:extrapreds ((x4416))
+:extrapreds ((x4417))
+:extrapreds ((x4418))
+:extrapreds ((x4419))
+:extrapreds ((x4420))
+:extrapreds ((x4421))
+:extrapreds ((x4422))
+:extrapreds ((x4423))
+:extrapreds ((x4424))
+:extrapreds ((x4425))
+:extrapreds ((x4426))
+:extrapreds ((x4427))
+:extrapreds ((x4428))
+:extrapreds ((x4429))
+:extrapreds ((x4430))
+:extrapreds ((x4431))
+:extrapreds ((x4432))
+:extrapreds ((x4433))
+:extrapreds ((x4434))
+:extrapreds ((x4435))
+:extrapreds ((x4436))
+:extrapreds ((x4437))
+:extrapreds ((x4438))
+:extrapreds ((x4439))
+:extrapreds ((x4440))
+:extrapreds ((x4441))
+:extrapreds ((x4442))
+:extrapreds ((x4443))
+:extrapreds ((x4444))
+:extrapreds ((x4445))
+:extrapreds ((x4446))
+:extrapreds ((x4447))
+:extrapreds ((x4448))
+:extrapreds ((x4449))
+:extrapreds ((x4450))
+:extrapreds ((x4451))
+:extrapreds ((x4452))
+:extrapreds ((x4453))
+:extrapreds ((x4454))
+:extrapreds ((x4455))
+:extrapreds ((x4456))
+:extrapreds ((x4457))
+:extrapreds ((x4458))
+:extrapreds ((x4459))
+:extrapreds ((x4460))
+:extrapreds ((x4461))
+:extrapreds ((x4462))
+:extrapreds ((x4463))
+:extrapreds ((x4464))
+:extrapreds ((x4465))
+:extrapreds ((x4466))
+:extrapreds ((x4467))
+:extrapreds ((x4468))
+:extrapreds ((x4469))
+:extrapreds ((x4470))
+:extrapreds ((x4471))
+:extrapreds ((x4472))
+:extrapreds ((x4473))
+:extrapreds ((x4474))
+:extrapreds ((x4475))
+:extrapreds ((x4476))
+:extrapreds ((x4477))
+:extrapreds ((x4478))
+:extrapreds ((x4479))
+:extrapreds ((x4480))
+:extrapreds ((x4481))
+:extrapreds ((x4482))
+:extrapreds ((x4483))
+:extrapreds ((x4484))
+:extrapreds ((x4485))
+:extrapreds ((x4486))
+:extrapreds ((x4487))
+:extrapreds ((x4488))
+:extrapreds ((x4489))
+:extrapreds ((x4490))
+:extrapreds ((x4491))
+:extrapreds ((x4492))
+:extrapreds ((x4493))
+:extrapreds ((x4494))
+:extrapreds ((x4495))
+:extrapreds ((x4496))
+:extrapreds ((x4497))
+:extrapreds ((x4498))
+:extrapreds ((x4499))
+:extrapreds ((x4500))
+:extrapreds ((x4501))
+:extrapreds ((x4502))
+:extrapreds ((x4503))
+:extrapreds ((x4504))
+:extrapreds ((x4505))
+:extrapreds ((x4506))
+:extrapreds ((x4507))
+:extrapreds ((x4508))
+:extrapreds ((x4509))
+:extrapreds ((x4510))
+:extrapreds ((x4511))
+:extrapreds ((x4512))
+:extrapreds ((x4513))
+:extrapreds ((x4514))
+:extrapreds ((x4515))
+:extrapreds ((x4516))
+:extrapreds ((x4517))
+:extrapreds ((x4518))
+:extrapreds ((x4519))
+:extrapreds ((x4520))
+:extrapreds ((x4521))
+:extrapreds ((x4522))
+:extrapreds ((x4523))
+:extrapreds ((x4524))
+:extrapreds ((x4525))
+:extrapreds ((x4526))
+:extrapreds ((x4527))
+:extrapreds ((x4528))
+:extrapreds ((x4529))
+:extrapreds ((x4530))
+:extrapreds ((x4531))
+:extrapreds ((x4532))
+:extrapreds ((x4533))
+:extrapreds ((x4534))
+:extrapreds ((x4535))
+:extrapreds ((x4536))
+:extrapreds ((x4537))
+:extrapreds ((x4538))
+:extrapreds ((x4539))
+:extrapreds ((x4540))
+:extrapreds ((x4541))
+:extrapreds ((x4542))
+:extrapreds ((x4543))
+:extrapreds ((x4544))
+:extrapreds ((x4545))
+:extrapreds ((x4546))
+:extrapreds ((x4547))
+:extrapreds ((x4548))
+:extrapreds ((x4549))
+:extrapreds ((x4550))
+:extrapreds ((x4551))
+:extrapreds ((x4552))
+:extrapreds ((x4553))
+:extrapreds ((x4554))
+:extrapreds ((x4555))
+:extrapreds ((x4556))
+:extrapreds ((x4557))
+:extrapreds ((x4558))
+:extrapreds ((x4559))
+:extrapreds ((x4560))
+:extrapreds ((x4561))
+:extrapreds ((x4562))
+:extrapreds ((x4563))
+:extrapreds ((x4564))
+:extrapreds ((x4565))
+:extrapreds ((x4566))
+:extrapreds ((x4567))
+:extrapreds ((x4568))
+:extrapreds ((x4569))
+:extrapreds ((x4570))
+:extrapreds ((x4571))
+:extrapreds ((x4572))
+:extrapreds ((x4573))
+:extrapreds ((x4574))
+:extrapreds ((x4575))
+:extrapreds ((x4576))
+:extrapreds ((x4577))
+:extrapreds ((x4578))
+:extrapreds ((x4579))
+:extrapreds ((x4580))
+:extrapreds ((x4581))
+:extrapreds ((x4582))
+:extrapreds ((x4583))
+:extrapreds ((x4584))
+:extrapreds ((x4585))
+:extrapreds ((x4586))
+:extrapreds ((x4587))
+:extrapreds ((x4588))
+:extrapreds ((x4589))
+:extrapreds ((x4590))
+:extrapreds ((x4591))
+:extrapreds ((x4592))
+:extrapreds ((x4593))
+:extrapreds ((x4594))
+:extrapreds ((x4595))
+:extrapreds ((x4596))
+:extrapreds ((x4597))
+:extrapreds ((x4598))
+:extrapreds ((x4599))
+:extrapreds ((x4600))
+:extrapreds ((x4601))
+:extrapreds ((x4602))
+:extrapreds ((x4603))
+:extrapreds ((x4604))
+:extrapreds ((x4605))
+:extrapreds ((x4606))
+:extrapreds ((x4607))
+:extrapreds ((x4608))
+:extrapreds ((x4609))
+:extrapreds ((x4610))
+:extrapreds ((x4611))
+:extrapreds ((x4612))
+:extrapreds ((x4613))
+:extrapreds ((x4614))
+:extrapreds ((x4615))
+:extrapreds ((x4616))
+:extrapreds ((x4617))
+:extrapreds ((x4618))
+:extrapreds ((x4619))
+:extrapreds ((x4620))
+:extrapreds ((x4621))
+:extrapreds ((x4622))
+:extrapreds ((x4623))
+:extrapreds ((x4624))
+:extrapreds ((x4625))
+:extrapreds ((x4626))
+:extrapreds ((x4627))
+:extrapreds ((x4628))
+:extrapreds ((x4629))
+:extrapreds ((x4630))
+:extrapreds ((x4631))
+:extrapreds ((x4632))
+:extrapreds ((x4633))
+:extrapreds ((x4634))
+:extrapreds ((x4635))
+:extrapreds ((x4636))
+:extrapreds ((x4637))
+:extrapreds ((x4638))
+:extrapreds ((x4639))
+:extrapreds ((x4640))
+:extrapreds ((x4641))
+:extrapreds ((x4642))
+:extrapreds ((x4643))
+:extrapreds ((x4644))
+:extrapreds ((x4645))
+:extrapreds ((x4646))
+:extrapreds ((x4647))
+:extrapreds ((x4648))
+:extrapreds ((x4649))
+:extrapreds ((x4650))
+:extrapreds ((x4651))
+:extrapreds ((x4652))
+:extrapreds ((x4653))
+:extrapreds ((x4654))
+:extrapreds ((x4655))
+:extrapreds ((x4656))
+:extrapreds ((x4657))
+:extrapreds ((x4658))
+:extrapreds ((x4659))
+:extrapreds ((x4660))
+:extrapreds ((x4661))
+:extrapreds ((x4662))
+:extrapreds ((x4663))
+:extrapreds ((x4664))
+:extrapreds ((x4665))
+:extrapreds ((x4666))
+:extrapreds ((x4667))
+:extrapreds ((x4668))
+:extrapreds ((x4669))
+:extrapreds ((x4670))
+:extrapreds ((x4671))
+:extrapreds ((x4672))
+:extrapreds ((x4673))
+:extrapreds ((x4674))
+:extrapreds ((x4675))
+:extrapreds ((x4676))
+:extrapreds ((x4677))
+:extrapreds ((x4678))
+:extrapreds ((x4679))
+:extrapreds ((x4680))
+:extrapreds ((x4681))
+:extrapreds ((x4682))
+:extrapreds ((x4683))
+:extrapreds ((x4684))
+:extrapreds ((x4685))
+:extrapreds ((x4686))
+:extrapreds ((x4687))
+:extrapreds ((x4688))
+:extrapreds ((x4689))
+:extrapreds ((x4690))
+:extrapreds ((x4691))
+:extrapreds ((x4692))
+:extrapreds ((x4693))
+:extrapreds ((x4694))
+:extrapreds ((x4695))
+:extrapreds ((x4696))
+:extrapreds ((x4697))
+:extrapreds ((x4698))
+:extrapreds ((x4699))
+:extrapreds ((x4700))
+:extrapreds ((x4701))
+:extrapreds ((x4702))
+:extrapreds ((x4703))
+:extrapreds ((x4704))
+:extrapreds ((x4705))
+:extrapreds ((x4706))
+:extrapreds ((x4707))
+:extrapreds ((x4708))
+:extrapreds ((x4709))
+:extrapreds ((x4710))
+:extrapreds ((x4711))
+:extrapreds ((x4712))
+:extrapreds ((x4713))
+:extrapreds ((x4714))
+:extrapreds ((x4715))
+:extrapreds ((x4716))
+:extrapreds ((x4717))
+:extrapreds ((x4718))
+:extrapreds ((x4719))
+:extrapreds ((x4720))
+:extrapreds ((x4721))
+:extrapreds ((x4722))
+:extrapreds ((x4723))
+:extrapreds ((x4724))
+:extrapreds ((x4725))
+:extrapreds ((x4726))
+:extrapreds ((x4727))
+:extrapreds ((x4728))
+:extrapreds ((x4729))
+:extrapreds ((x4730))
+:extrapreds ((x4731))
+:extrapreds ((x4732))
+:extrapreds ((x4733))
+:extrapreds ((x4734))
+:extrapreds ((x4735))
+:extrapreds ((x4736))
+:extrapreds ((x4737))
+:extrapreds ((x4738))
+:extrapreds ((x4739))
+:extrapreds ((x4740))
+:extrapreds ((x4741))
+:extrapreds ((x4742))
+:extrapreds ((x4743))
+:extrapreds ((x4744))
+:extrapreds ((x4745))
+:extrapreds ((x4746))
+:extrapreds ((x4747))
+:extrapreds ((x4748))
+:extrapreds ((x4749))
+:extrapreds ((x4750))
+:extrapreds ((x4751))
+:extrapreds ((x4752))
+:extrapreds ((x4753))
+:extrapreds ((x4754))
+:extrapreds ((x4755))
+:extrapreds ((x4756))
+:extrapreds ((x4757))
+:extrapreds ((x4758))
+:extrapreds ((x4759))
+:extrapreds ((x4760))
+:extrapreds ((x4761))
+:extrapreds ((x4762))
+:extrapreds ((x4763))
+:extrapreds ((x4764))
+:extrapreds ((x4765))
+:extrapreds ((x4766))
+:extrapreds ((x4767))
+:extrapreds ((x4768))
+:extrapreds ((x4769))
+:extrapreds ((x4770))
+:extrapreds ((x4771))
+:extrapreds ((x4772))
+:extrapreds ((x4773))
+:extrapreds ((x4774))
+:extrapreds ((x4775))
+:extrapreds ((x4776))
+:extrapreds ((x4777))
+:extrapreds ((x4778))
+:extrapreds ((x4779))
+:extrapreds ((x4780))
+:extrapreds ((x4781))
+:extrapreds ((x4782))
+:extrapreds ((x4783))
+:extrapreds ((x4784))
+:extrapreds ((x4785))
+:extrapreds ((x4786))
+:extrapreds ((x4787))
+:extrapreds ((x4788))
+:extrapreds ((x4789))
+:extrapreds ((x4790))
+:extrapreds ((x4791))
+:extrapreds ((x4792))
+:extrapreds ((x4793))
+:extrapreds ((x4794))
+:extrapreds ((x4795))
+:extrapreds ((x4796))
+:extrapreds ((x4797))
+:extrapreds ((x4798))
+:extrapreds ((x4799))
+:extrapreds ((x4800))
+:extrapreds ((x4801))
+:extrapreds ((x4802))
+:extrapreds ((x4803))
+:extrapreds ((x4804))
+:extrapreds ((x4805))
+:extrapreds ((x4806))
+:extrapreds ((x4807))
+:extrapreds ((x4808))
+:extrapreds ((x4809))
+:extrapreds ((x4810))
+:extrapreds ((x4811))
+:extrapreds ((x4812))
+:extrapreds ((x4813))
+:extrapreds ((x4814))
+:extrapreds ((x4815))
+:extrapreds ((x4816))
+:extrapreds ((x4817))
+:extrapreds ((x4818))
+:extrapreds ((x4819))
+:extrapreds ((x4820))
+:extrapreds ((x4821))
+:extrapreds ((x4822))
+:extrapreds ((x4823))
+:extrapreds ((x4824))
+:extrapreds ((x4825))
+:extrapreds ((x4826))
+:extrapreds ((x4827))
+:extrapreds ((x4828))
+:extrapreds ((x4829))
+:extrapreds ((x4830))
+:extrapreds ((x4831))
+:extrapreds ((x4832))
+:extrapreds ((x4833))
+:extrapreds ((x4834))
+:extrapreds ((x4835))
+:extrapreds ((x4836))
+:extrapreds ((x4837))
+:extrapreds ((x4838))
+:extrapreds ((x4839))
+:extrapreds ((x4840))
+:extrapreds ((x4841))
+:extrapreds ((x4842))
+:extrapreds ((x4843))
+:extrapreds ((x4844))
+:extrapreds ((x4845))
+:extrapreds ((x4846))
+:extrapreds ((x4847))
+:extrapreds ((x4848))
+:extrapreds ((x4849))
+:extrapreds ((x4850))
+:extrapreds ((x4851))
+:extrapreds ((x4852))
+:extrapreds ((x4853))
+:extrapreds ((x4854))
+:extrapreds ((x4855))
+:extrapreds ((x4856))
+:extrapreds ((x4857))
+:extrapreds ((x4858))
+:extrapreds ((x4859))
+:extrapreds ((x4860))
+:extrapreds ((x4861))
+:extrapreds ((x4862))
+:extrapreds ((x4863))
+:extrapreds ((x4864))
+:extrapreds ((x4865))
+:extrapreds ((x4866))
+:extrapreds ((x4867))
+:extrapreds ((x4868))
+:extrapreds ((x4869))
+:extrapreds ((x4870))
+:extrapreds ((x4871))
+:extrapreds ((x4872))
+:extrapreds ((x4873))
+:extrapreds ((x4874))
+:extrapreds ((x4875))
+:extrapreds ((x4876))
+:extrapreds ((x4877))
+:extrapreds ((x4878))
+:extrapreds ((x4879))
+:extrapreds ((x4880))
+:extrapreds ((x4881))
+:extrapreds ((x4882))
+:extrapreds ((x4883))
+:extrapreds ((x4884))
+:extrapreds ((x4885))
+:extrapreds ((x4886))
+:extrapreds ((x4887))
+:extrapreds ((x4888))
+:extrapreds ((x4889))
+:extrapreds ((x4890))
+:extrapreds ((x4891))
+:extrapreds ((x4892))
+:extrapreds ((x4893))
+:extrapreds ((x4894))
+:extrapreds ((x4895))
+:extrapreds ((x4896))
+:extrapreds ((x4897))
+:extrapreds ((x4898))
+:extrapreds ((x4899))
+:extrapreds ((x4900))
+:extrapreds ((x4901))
+:extrapreds ((x4902))
+:extrapreds ((x4903))
+:extrapreds ((x4904))
+:extrapreds ((x4905))
+:extrapreds ((x4906))
+:extrapreds ((x4907))
+:extrapreds ((x4908))
+:extrapreds ((x4909))
+:extrapreds ((x4910))
+:extrapreds ((x4911))
+:extrapreds ((x4912))
+:extrapreds ((x4913))
+:extrapreds ((x4914))
+:extrapreds ((x4915))
+:extrapreds ((x4916))
+:extrapreds ((x4917))
+:extrapreds ((x4918))
+:extrapreds ((x4919))
+:extrapreds ((x4920))
+:extrapreds ((x4921))
+:extrapreds ((x4922))
+:extrapreds ((x4923))
+:extrapreds ((x4924))
+:extrapreds ((x4925))
+:extrapreds ((x4926))
+:extrapreds ((x4927))
+:extrapreds ((x4928))
+:extrapreds ((x4929))
+:extrapreds ((x4930))
+:extrapreds ((x4931))
+:extrapreds ((x4932))
+:extrapreds ((x4933))
+:extrapreds ((x4934))
+:extrapreds ((x4935))
+:extrapreds ((x4936))
+:extrapreds ((x4937))
+:extrapreds ((x4938))
+:extrapreds ((x4939))
+:extrapreds ((x4940))
+:extrapreds ((x4941))
+:extrapreds ((x4942))
+:extrapreds ((x4943))
+:extrapreds ((x4944))
+:extrapreds ((x4945))
+:extrapreds ((x4946))
+:extrapreds ((x4947))
+:extrapreds ((x4948))
+:extrapreds ((x4949))
+:extrapreds ((x4950))
+:extrapreds ((x4951))
+:extrapreds ((x4952))
+:extrapreds ((x4953))
+:extrapreds ((x4954))
+:extrapreds ((x4955))
+:extrapreds ((x4956))
+:extrapreds ((x4957))
+:extrapreds ((x4958))
+:extrapreds ((x4959))
+:extrapreds ((x4960))
+:extrapreds ((x4961))
+:extrapreds ((x4962))
+:extrapreds ((x4963))
+:extrapreds ((x4964))
+:extrapreds ((x4965))
+:extrapreds ((x4966))
+:extrapreds ((x4967))
+:extrapreds ((x4968))
+:extrapreds ((x4969))
+:extrapreds ((x4970))
+:extrapreds ((x4971))
+:extrapreds ((x4972))
+:extrapreds ((x4973))
+:extrapreds ((x4974))
+:extrapreds ((x4975))
+:extrapreds ((x4976))
+:extrapreds ((x4977))
+:extrapreds ((x4978))
+:extrapreds ((x4979))
+:extrapreds ((x4980))
+:extrapreds ((x4981))
+:extrapreds ((x4982))
+:extrapreds ((x4983))
+:extrapreds ((x4984))
+:extrapreds ((x4985))
+:extrapreds ((x4986))
+:extrapreds ((x4987))
+:extrapreds ((x4988))
+:extrapreds ((x4989))
+:extrapreds ((x4990))
+:extrapreds ((x4991))
+:extrapreds ((x4992))
+:extrapreds ((x4993))
+:extrapreds ((x4994))
+:extrapreds ((x4995))
+:extrapreds ((x4996))
+:extrapreds ((x4997))
+:extrapreds ((x4998))
+:extrapreds ((x4999))
+:extrapreds ((x5000))
+:extrapreds ((x5001))
+:extrapreds ((x5002))
+:extrapreds ((x5003))
+:extrapreds ((x5004))
+:extrapreds ((x5005))
+:extrapreds ((x5006))
+:extrapreds ((x5007))
+:extrapreds ((x5008))
+:extrapreds ((x5009))
+:extrapreds ((x5010))
+:extrapreds ((x5011))
+:extrapreds ((x5012))
+:extrapreds ((x5013))
+:extrapreds ((x5014))
+:extrapreds ((x5015))
+:extrapreds ((x5016))
+:extrapreds ((x5017))
+:extrapreds ((x5018))
+:extrapreds ((x5019))
+:extrapreds ((x5020))
+:extrapreds ((x5021))
+:extrapreds ((x5022))
+:extrapreds ((x5023))
+:extrapreds ((x5024))
+:extrapreds ((x5025))
+:extrapreds ((x5026))
+:extrapreds ((x5027))
+:extrapreds ((x5028))
+:extrapreds ((x5029))
+:extrapreds ((x5030))
+:extrapreds ((x5031))
+:extrapreds ((x5032))
+:extrapreds ((x5033))
+:extrapreds ((x5034))
+:extrapreds ((x5035))
+:extrapreds ((x5036))
+:extrapreds ((x5037))
+:extrapreds ((x5038))
+:extrapreds ((x5039))
+:extrapreds ((x5040))
+:extrapreds ((x5041))
+:extrapreds ((x5042))
+:extrapreds ((x5043))
+:extrapreds ((x5044))
+:extrapreds ((x5045))
+:extrapreds ((x5046))
+:extrapreds ((x5047))
+:extrapreds ((x5048))
+:extrapreds ((x5049))
+:extrapreds ((x5050))
+:extrapreds ((x5051))
+:extrapreds ((x5052))
+:extrapreds ((x5053))
+:extrapreds ((x5054))
+:extrapreds ((x5055))
+:extrapreds ((x5056))
+:extrapreds ((x5057))
+:extrapreds ((x5058))
+:extrapreds ((x5059))
+:extrapreds ((x5060))
+:extrapreds ((x5061))
+:extrapreds ((x5062))
+:extrapreds ((x5063))
+:extrapreds ((x5064))
+:extrapreds ((x5065))
+:extrapreds ((x5066))
+:extrapreds ((x5067))
+:extrapreds ((x5068))
+:extrapreds ((x5069))
+:extrapreds ((x5070))
+:extrapreds ((x5071))
+:extrapreds ((x5072))
+:extrapreds ((x5073))
+:extrapreds ((x5074))
+:extrapreds ((x5075))
+:extrapreds ((x5076))
+:extrapreds ((x5077))
+:extrapreds ((x5078))
+:extrapreds ((x5079))
+:extrapreds ((x5080))
+:extrapreds ((x5081))
+:extrapreds ((x5082))
+:extrapreds ((x5083))
+:extrapreds ((x5084))
+:extrapreds ((x5085))
+:extrapreds ((x5086))
+:extrapreds ((x5087))
+:extrapreds ((x5088))
+:extrapreds ((x5089))
+:extrapreds ((x5090))
+:extrapreds ((x5091))
+:extrapreds ((x5092))
+:extrapreds ((x5093))
+:extrapreds ((x5094))
+:extrapreds ((x5095))
+:extrapreds ((x5096))
+:extrapreds ((x5097))
+:extrapreds ((x5098))
+:extrapreds ((x5099))
+:extrapreds ((x5100))
+:extrapreds ((x5101))
+:extrapreds ((x5102))
+:extrapreds ((x5103))
+:extrapreds ((x5104))
+:extrapreds ((x5105))
+:extrapreds ((x5106))
+:extrapreds ((x5107))
+:extrapreds ((x5108))
+:extrapreds ((x5109))
+:extrapreds ((x5110))
+:extrapreds ((x5111))
+:extrapreds ((x5112))
+:extrapreds ((x5113))
+:extrapreds ((x5114))
+:extrapreds ((x5115))
+:extrapreds ((x5116))
+:extrapreds ((x5117))
+:extrapreds ((x5118))
+:extrapreds ((x5119))
+:extrapreds ((x5120))
+:extrapreds ((x5121))
+:extrapreds ((x5122))
+:extrapreds ((x5123))
+:extrapreds ((x5124))
+:extrapreds ((x5125))
+:extrapreds ((x5126))
+:extrapreds ((x5127))
+:extrapreds ((x5128))
+:extrapreds ((x5129))
+:extrapreds ((x5130))
+:extrapreds ((x5131))
+:extrapreds ((x5132))
+:extrapreds ((x5133))
+:extrapreds ((x5134))
+:extrapreds ((x5135))
+:extrapreds ((x5136))
+:extrapreds ((x5137))
+:extrapreds ((x5138))
+:extrapreds ((x5139))
+:extrapreds ((x5140))
+:extrapreds ((x5141))
+:extrapreds ((x5142))
+:extrapreds ((x5143))
+:extrapreds ((x5144))
+:extrapreds ((x5145))
+:extrapreds ((x5146))
+:extrapreds ((x5147))
+:extrapreds ((x5148))
+:extrapreds ((x5149))
+:extrapreds ((x5150))
+:extrapreds ((x5151))
+:extrapreds ((x5152))
+:extrapreds ((x5153))
+:extrapreds ((x5154))
+:extrapreds ((x5155))
+:extrapreds ((x5156))
+:extrapreds ((x5157))
+:extrapreds ((x5158))
+:extrapreds ((x5159))
+:extrapreds ((x5160))
+:extrapreds ((x5161))
+:extrapreds ((x5162))
+:extrapreds ((x5163))
+:extrapreds ((x5164))
+:extrapreds ((x5165))
+:extrapreds ((x5166))
+:extrapreds ((x5167))
+:extrapreds ((x5168))
+:extrapreds ((x5169))
+:extrapreds ((x5170))
+:extrapreds ((x5171))
+:extrapreds ((x5172))
+:extrapreds ((x5173))
+:extrapreds ((x5174))
+:extrapreds ((x5175))
+:extrapreds ((x5176))
+:extrapreds ((x5177))
+:extrapreds ((x5178))
+:extrapreds ((x5179))
+:extrapreds ((x5180))
+:extrapreds ((x5181))
+:extrapreds ((x5182))
+:extrapreds ((x5183))
+:extrapreds ((x5184))
+:extrapreds ((x5185))
+:extrapreds ((x5186))
+:extrapreds ((x5187))
+:extrapreds ((x5188))
+:extrapreds ((x5189))
+:extrapreds ((x5190))
+:extrapreds ((x5191))
+:extrapreds ((x5192))
+:extrapreds ((x5193))
+:extrapreds ((x5194))
+:extrapreds ((x5195))
+:extrapreds ((x5196))
+:extrapreds ((x5197))
+:extrapreds ((x5198))
+:extrapreds ((x5199))
+:extrapreds ((x5200))
+:extrapreds ((x5201))
+:extrapreds ((x5202))
+:extrapreds ((x5203))
+:extrapreds ((x5204))
+:extrapreds ((x5205))
+:extrapreds ((x5206))
+:extrapreds ((x5207))
+:extrapreds ((x5208))
+:extrapreds ((x5209))
+:extrapreds ((x5210))
+:extrapreds ((x5211))
+:extrapreds ((x5212))
+:extrapreds ((x5213))
+:extrapreds ((x5214))
+:extrapreds ((x5215))
+:extrapreds ((x5216))
+:extrapreds ((x5217))
+:extrapreds ((x5218))
+:extrapreds ((x5219))
+:extrapreds ((x5220))
+:extrapreds ((x5221))
+:extrapreds ((x5222))
+:extrapreds ((x5223))
+:extrapreds ((x5224))
+:extrapreds ((x5225))
+:extrapreds ((x5226))
+:extrapreds ((x5227))
+:extrapreds ((x5228))
+:extrapreds ((x5229))
+:extrapreds ((x5230))
+:extrapreds ((x5231))
+:extrapreds ((x5232))
+:extrapreds ((x5233))
+:extrapreds ((x5234))
+:extrapreds ((x5235))
+:extrapreds ((x5236))
+:extrapreds ((x5237))
+:extrapreds ((x5238))
+:extrapreds ((x5239))
+:extrapreds ((x5240))
+:extrapreds ((x5241))
+:extrapreds ((x5242))
+:extrapreds ((x5243))
+:extrapreds ((x5244))
+:extrapreds ((x5245))
+:extrapreds ((x5246))
+:extrapreds ((x5247))
+:extrapreds ((x5248))
+:extrapreds ((x5249))
+:extrapreds ((x5250))
+:extrapreds ((x5251))
+:extrapreds ((x5252))
+:extrapreds ((x5253))
+:extrapreds ((x5254))
+:extrapreds ((x5255))
+:extrapreds ((x5256))
+:extrapreds ((x5257))
+:extrapreds ((x5258))
+:extrapreds ((x5259))
+:extrapreds ((x5260))
+:extrapreds ((x5261))
+:extrapreds ((x5262))
+:extrapreds ((x5263))
+:extrapreds ((x5264))
+:extrapreds ((x5265))
+:extrapreds ((x5266))
+:extrapreds ((x5267))
+:extrapreds ((x5268))
+:extrapreds ((x5269))
+:extrapreds ((x5270))
+:extrapreds ((x5271))
+:extrapreds ((x5272))
+:extrapreds ((x5273))
+:extrapreds ((x5274))
+:extrapreds ((x5275))
+:extrapreds ((x5276))
+:extrapreds ((x5277))
+:extrapreds ((x5278))
+:extrapreds ((x5279))
+:extrapreds ((x5280))
+:extrapreds ((x5281))
+:extrapreds ((x5282))
+:extrapreds ((x5283))
+:extrapreds ((x5284))
+:extrapreds ((x5285))
+:extrapreds ((x5286))
+:extrapreds ((x5287))
+:extrapreds ((x5288))
+:extrapreds ((x5289))
+:extrapreds ((x5290))
+:extrapreds ((x5291))
+:extrapreds ((x5292))
+:extrapreds ((x5293))
+:extrapreds ((x5294))
+:extrapreds ((x5295))
+:extrapreds ((x5296))
+:extrapreds ((x5297))
+:extrapreds ((x5298))
+:extrapreds ((x5299))
+:extrapreds ((x5300))
+:extrapreds ((x5301))
+:extrapreds ((x5302))
+:extrapreds ((x5303))
+:extrapreds ((x5304))
+:extrapreds ((x5305))
+:extrapreds ((x5306))
+:extrapreds ((x5307))
+:extrapreds ((x5308))
+:extrapreds ((x5309))
+:extrapreds ((x5310))
+:extrapreds ((x5311))
+:extrapreds ((x5312))
+:extrapreds ((x5313))
+:extrapreds ((x5314))
+:extrapreds ((x5315))
+:extrapreds ((x5316))
+:extrapreds ((x5317))
+:extrapreds ((x5318))
+:extrapreds ((x5319))
+:extrapreds ((x5320))
+:extrapreds ((x5321))
+:extrapreds ((x5322))
+:extrapreds ((x5323))
+:extrapreds ((x5324))
+:extrapreds ((x5325))
+:extrapreds ((x5326))
+:extrapreds ((x5327))
+:extrapreds ((x5328))
+:extrapreds ((x5329))
+:extrapreds ((x5330))
+:extrapreds ((x5331))
+:extrapreds ((x5332))
+:extrapreds ((x5333))
+:extrapreds ((x5334))
+:extrapreds ((x5335))
+:extrapreds ((x5336))
+:extrapreds ((x5337))
+:extrapreds ((x5338))
+:extrapreds ((x5339))
+:extrapreds ((x5340))
+:extrapreds ((x5341))
+:extrapreds ((x5342))
+:extrapreds ((x5343))
+:extrapreds ((x5344))
+:extrapreds ((x5345))
+:extrapreds ((x5346))
+:extrapreds ((x5347))
+:extrapreds ((x5348))
+:extrapreds ((x5349))
+:extrapreds ((x5350))
+:extrapreds ((x5351))
+:extrapreds ((x5352))
+:extrapreds ((x5353))
+:extrapreds ((x5354))
+:extrapreds ((x5355))
+:extrapreds ((x5356))
+:extrapreds ((x5357))
+:extrapreds ((x5358))
+:extrapreds ((x5359))
+:extrapreds ((x5360))
+:extrapreds ((x5361))
+:extrapreds ((x5362))
+:extrapreds ((x5363))
+:extrapreds ((x5364))
+:extrapreds ((x5365))
+:extrapreds ((x5366))
+:extrapreds ((x5367))
+:extrapreds ((x5368))
+:extrapreds ((x5369))
+:extrapreds ((x5370))
+:extrapreds ((x5371))
+:extrapreds ((x5372))
+:extrapreds ((x5373))
+:extrapreds ((x5374))
+:extrapreds ((x5375))
+:extrapreds ((x5376))
+:extrapreds ((x5377))
+:extrapreds ((x5378))
+:extrapreds ((x5379))
+:extrapreds ((x5380))
+:extrapreds ((x5381))
+:extrapreds ((x5382))
+:extrapreds ((x5383))
+:extrapreds ((x5384))
+:extrapreds ((x5385))
+:extrapreds ((x5386))
+:extrapreds ((x5387))
+:extrapreds ((x5388))
+:extrapreds ((x5389))
+:extrapreds ((x5390))
+:extrapreds ((x5391))
+:extrapreds ((x5392))
+:extrapreds ((x5393))
+:extrapreds ((x5394))
+:extrapreds ((x5395))
+:extrapreds ((x5396))
+:extrapreds ((x5397))
+:extrapreds ((x5398))
+:extrapreds ((x5399))
+:extrapreds ((x5400))
+:extrapreds ((x5401))
+:extrapreds ((x5402))
+:extrapreds ((x5403))
+:extrapreds ((x5404))
+:extrapreds ((x5405))
+:extrapreds ((x5406))
+:extrapreds ((x5407))
+:extrapreds ((x5408))
+:extrapreds ((x5409))
+:extrapreds ((x5410))
+:extrapreds ((x5411))
+:extrapreds ((x5412))
+:extrapreds ((x5413))
+:extrapreds ((x5414))
+:extrapreds ((x5415))
+:extrapreds ((x5416))
+:extrapreds ((x5417))
+:extrapreds ((x5418))
+:extrapreds ((x5419))
+:extrapreds ((x5420))
+:extrapreds ((x5421))
+:extrapreds ((x5422))
+:extrapreds ((x5423))
+:extrapreds ((x5424))
+:extrapreds ((x5425))
+:extrapreds ((x5426))
+:extrapreds ((x5427))
+:extrapreds ((x5428))
+:extrapreds ((x5429))
+:extrapreds ((x5430))
+:extrapreds ((x5431))
+:extrapreds ((x5432))
+:extrapreds ((x5433))
+:extrapreds ((x5434))
+:extrapreds ((x5435))
+:extrapreds ((x5436))
+:extrapreds ((x5437))
+:extrapreds ((x5438))
+:extrapreds ((x5439))
+:extrapreds ((x5440))
+:extrapreds ((x5441))
+:extrapreds ((x5442))
+:extrapreds ((x5443))
+:extrapreds ((x5444))
+:extrapreds ((x5445))
+:extrapreds ((x5446))
+:extrapreds ((x5447))
+:extrapreds ((x5448))
+:extrapreds ((x5449))
+:extrapreds ((x5450))
+:extrapreds ((x5451))
+:extrapreds ((x5452))
+:extrapreds ((x5453))
+:extrapreds ((x5454))
+:extrapreds ((x5455))
+:extrapreds ((x5456))
+:extrapreds ((x5457))
+:extrapreds ((x5458))
+:extrapreds ((x5459))
+:extrapreds ((x5460))
+:extrapreds ((x5461))
+:extrapreds ((x5462))
+:extrapreds ((x5463))
+:extrapreds ((x5464))
+:extrapreds ((x5465))
+:extrapreds ((x5466))
+:extrapreds ((x5467))
+:extrapreds ((x5468))
+:extrapreds ((x5469))
+:extrapreds ((x5470))
+:extrapreds ((x5471))
+:extrapreds ((x5472))
+:extrapreds ((x5473))
+:extrapreds ((x5474))
+:extrapreds ((x5475))
+:extrapreds ((x5476))
+:extrapreds ((x5477))
+:extrapreds ((x5478))
+:extrapreds ((x5479))
+:extrapreds ((x5480))
+:extrapreds ((x5481))
+:extrapreds ((x5482))
+:extrapreds ((x5483))
+:extrapreds ((x5484))
+:extrapreds ((x5485))
+:extrapreds ((x5486))
+:extrapreds ((x5487))
+:extrapreds ((x5488))
+:extrapreds ((x5489))
+:extrapreds ((x5490))
+:extrapreds ((x5491))
+:extrapreds ((x5492))
+:extrapreds ((x5493))
+:extrapreds ((x5494))
+:extrapreds ((x5495))
+:extrapreds ((x5496))
+:extrapreds ((x5497))
+:extrapreds ((x5498))
+:extrapreds ((x5499))
+:extrapreds ((x5500))
+:extrapreds ((x5501))
+:extrapreds ((x5502))
+:extrapreds ((x5503))
+:extrapreds ((x5504))
+:extrapreds ((x5505))
+:extrapreds ((x5506))
+:extrapreds ((x5507))
+:extrapreds ((x5508))
+:extrapreds ((x5509))
+:extrapreds ((x5510))
+:extrapreds ((x5511))
+:extrapreds ((x5512))
+:extrapreds ((x5513))
+:extrapreds ((x5514))
+:extrapreds ((x5515))
+:extrapreds ((x5516))
+:extrapreds ((x5517))
+:extrapreds ((x5518))
+:extrapreds ((x5519))
+:extrapreds ((x5520))
+:extrapreds ((x5521))
+:extrapreds ((x5522))
+:extrapreds ((x5523))
+:extrapreds ((x5524))
+:extrapreds ((x5525))
+:extrapreds ((x5526))
+:extrapreds ((x5527))
+:extrapreds ((x5528))
+:extrapreds ((x5529))
+:extrapreds ((x5530))
+:extrapreds ((x5531))
+:extrapreds ((x5532))
+:extrapreds ((x5533))
+:extrapreds ((x5534))
+:extrapreds ((x5535))
+:extrapreds ((x5536))
+:extrapreds ((x5537))
+:extrapreds ((x5538))
+:extrapreds ((x5539))
+:extrapreds ((x5540))
+:extrapreds ((x5541))
+:extrapreds ((x5542))
+:extrapreds ((x5543))
+:extrapreds ((x5544))
+:extrapreds ((x5545))
+:extrapreds ((x5546))
+:extrapreds ((x5547))
+:extrapreds ((x5548))
+:extrapreds ((x5549))
+:extrapreds ((x5550))
+:extrapreds ((x5551))
+:extrapreds ((x5552))
+:extrapreds ((x5553))
+:extrapreds ((x5554))
+:extrapreds ((x5555))
+:extrapreds ((x5556))
+:extrapreds ((x5557))
+:extrapreds ((x5558))
+:extrapreds ((x5559))
+:extrapreds ((x5560))
+:extrapreds ((x5561))
+:extrapreds ((x5562))
+:extrapreds ((x5563))
+:extrapreds ((x5564))
+:extrapreds ((x5565))
+:extrapreds ((x5566))
+:extrapreds ((x5567))
+:extrapreds ((x5568))
+:extrapreds ((x5569))
+:extrapreds ((x5570))
+:extrapreds ((x5571))
+:extrapreds ((x5572))
+:extrapreds ((x5573))
+:extrapreds ((x5574))
+:extrapreds ((x5575))
+:extrapreds ((x5576))
+:extrapreds ((x5577))
+:extrapreds ((x5578))
+:extrapreds ((x5579))
+:extrapreds ((x5580))
+:extrapreds ((x5581))
+:extrapreds ((x5582))
+:extrapreds ((x5583))
+:extrapreds ((x5584))
+:extrapreds ((x5585))
+:extrapreds ((x5586))
+:extrapreds ((x5587))
+:extrapreds ((x5588))
+:extrapreds ((x5589))
+:extrapreds ((x5590))
+:extrapreds ((x5591))
+:extrapreds ((x5592))
+:extrapreds ((x5593))
+:extrapreds ((x5594))
+:extrapreds ((x5595))
+:extrapreds ((x5596))
+:extrapreds ((x5597))
+:extrapreds ((x5598))
+:extrapreds ((x5599))
+:extrapreds ((x5600))
+:extrapreds ((x5601))
+:extrapreds ((x5602))
+:extrapreds ((x5603))
+:extrapreds ((x5604))
+:extrapreds ((x5605))
+:extrapreds ((x5606))
+:extrapreds ((x5607))
+:extrapreds ((x5608))
+:extrapreds ((x5609))
+:extrapreds ((x5610))
+:extrapreds ((x5611))
+:extrapreds ((x5612))
+:extrapreds ((x5613))
+:extrapreds ((x5614))
+:extrapreds ((x5615))
+:extrapreds ((x5616))
+:extrapreds ((x5617))
+:extrapreds ((x5618))
+:extrapreds ((x5619))
+:extrapreds ((x5620))
+:extrapreds ((x5621))
+:extrapreds ((x5622))
+:extrapreds ((x5623))
+:extrapreds ((x5624))
+:extrapreds ((x5625))
+:extrapreds ((x5626))
+:extrapreds ((x5627))
+:extrapreds ((x5628))
+:extrapreds ((x5629))
+:extrapreds ((x5630))
+:extrapreds ((x5631))
+:extrapreds ((x5632))
+:extrapreds ((x5633))
+:extrapreds ((x5634))
+:extrapreds ((x5635))
+:extrapreds ((x5636))
+:extrapreds ((x5637))
+:extrapreds ((x5638))
+:extrapreds ((x5639))
+:extrapreds ((x5640))
+:extrapreds ((x5641))
+:extrapreds ((x5642))
+:extrapreds ((x5643))
+:extrapreds ((x5644))
+:extrapreds ((x5645))
+:extrapreds ((x5646))
+:extrapreds ((x5647))
+:extrapreds ((x5648))
+:extrapreds ((x5649))
+:extrapreds ((x5650))
+:extrapreds ((x5651))
+:extrapreds ((x5652))
+:extrapreds ((x5653))
+:extrapreds ((x5654))
+:extrapreds ((x5655))
+:extrapreds ((x5656))
+:extrapreds ((x5657))
+:extrapreds ((x5658))
+:extrapreds ((x5659))
+:extrapreds ((x5660))
+:extrapreds ((x5661))
+:extrapreds ((x5662))
+:extrapreds ((x5663))
+:extrapreds ((x5664))
+:extrapreds ((x5665))
+:extrapreds ((x5666))
+:extrapreds ((x5667))
+:extrapreds ((x5668))
+:extrapreds ((x5669))
+:extrapreds ((x5670))
+:extrapreds ((x5671))
+:extrapreds ((x5672))
+:extrapreds ((x5673))
+:extrapreds ((x5674))
+:extrapreds ((x5675))
+:extrapreds ((x5676))
+:extrapreds ((x5677))
+:extrapreds ((x5678))
+:extrapreds ((x5679))
+:extrapreds ((x5680))
+:extrapreds ((x5681))
+:extrapreds ((x5682))
+:extrapreds ((x5683))
+:extrapreds ((x5684))
+:extrapreds ((x5685))
+:extrapreds ((x5686))
+:extrapreds ((x5687))
+:extrapreds ((x5688))
+:extrapreds ((x5689))
+:extrapreds ((x5690))
+:extrapreds ((x5691))
+:extrapreds ((x5692))
+:extrapreds ((x5693))
+:extrapreds ((x5694))
+:extrapreds ((x5695))
+:extrapreds ((x5696))
+:extrapreds ((x5697))
+:extrapreds ((x5698))
+:extrapreds ((x5699))
+:extrapreds ((x5700))
+:extrapreds ((x5701))
+:extrapreds ((x5702))
+:extrapreds ((x5703))
+:extrapreds ((x5704))
+:extrapreds ((x5705))
+:extrapreds ((x5706))
+:extrapreds ((x5707))
+:extrapreds ((x5708))
+:extrapreds ((x5709))
+:extrapreds ((x5710))
+:extrapreds ((x5711))
+:extrapreds ((x5712))
+:extrapreds ((x5713))
+:extrapreds ((x5714))
+:extrapreds ((x5715))
+:extrapreds ((x5716))
+:extrapreds ((x5717))
+:extrapreds ((x5718))
+:extrapreds ((x5719))
+:extrapreds ((x5720))
+:extrapreds ((x5721))
+:extrapreds ((x5722))
+:extrapreds ((x5723))
+:extrapreds ((x5724))
+:extrapreds ((x5725))
+:extrapreds ((x5726))
+:extrapreds ((x5727))
+:extrapreds ((x5728))
+:extrapreds ((x5729))
+:extrapreds ((x5730))
+:extrapreds ((x5731))
+:extrapreds ((x5732))
+:extrapreds ((x5733))
+:extrapreds ((x5734))
+:extrapreds ((x5735))
+:extrapreds ((x5736))
+:extrapreds ((x5737))
+:extrapreds ((x5738))
+:extrapreds ((x5739))
+:extrapreds ((x5740))
+:extrapreds ((x5741))
+:extrapreds ((x5742))
+:extrapreds ((x5743))
+:extrapreds ((x5744))
+:extrapreds ((x5745))
+:extrapreds ((x5746))
+:extrapreds ((x5747))
+:extrapreds ((x5748))
+:extrapreds ((x5749))
+:extrapreds ((x5750))
+:extrapreds ((x5751))
+:extrapreds ((x5752))
+:extrapreds ((x5753))
+:extrapreds ((x5754))
+:extrapreds ((x5755))
+:extrapreds ((x5756))
+:extrapreds ((x5757))
+:extrapreds ((x5758))
+:extrapreds ((x5759))
+:extrapreds ((x5760))
+:extrapreds ((x5761))
+:extrapreds ((x5762))
+:extrapreds ((x5763))
+:extrapreds ((x5764))
+:extrapreds ((x5765))
+:extrapreds ((x5766))
+:extrapreds ((x5767))
+:extrapreds ((x5768))
+:extrapreds ((x5769))
+:extrapreds ((x5770))
+:extrapreds ((x5771))
+:extrapreds ((x5772))
+:extrapreds ((x5773))
+:extrapreds ((x5774))
+:extrapreds ((x5775))
+:extrapreds ((x5776))
+:extrapreds ((x5777))
+:extrapreds ((x5778))
+:extrapreds ((x5779))
+:extrapreds ((x5780))
+:extrapreds ((x5781))
+:extrapreds ((x5782))
+:extrapreds ((x5783))
+:extrapreds ((x5784))
+:extrapreds ((x5785))
+:extrapreds ((x5786))
+:extrapreds ((x5787))
+:extrapreds ((x5788))
+:extrapreds ((x5789))
+:extrapreds ((x5790))
+:extrapreds ((x5791))
+:extrapreds ((x5792))
+:extrapreds ((x5793))
+:extrapreds ((x5794))
+:extrapreds ((x5795))
+:extrapreds ((x5796))
+:extrapreds ((x5797))
+:extrapreds ((x5798))
+:extrapreds ((x5799))
+:extrapreds ((x5800))
+:extrapreds ((x5801))
+:extrapreds ((x5802))
+:extrapreds ((x5803))
+:extrapreds ((x5804))
+:extrapreds ((x5805))
+:extrapreds ((x5806))
+:extrapreds ((x5807))
+:extrapreds ((x5808))
+:extrapreds ((x5809))
+:extrapreds ((x5810))
+:extrapreds ((x5811))
+:extrapreds ((x5812))
+:extrapreds ((x5813))
+:extrapreds ((x5814))
+:extrapreds ((x5815))
+:extrapreds ((x5816))
+:extrapreds ((x5817))
+:extrapreds ((x5818))
+:extrapreds ((x5819))
+:extrapreds ((x5820))
+:extrapreds ((x5821))
+:extrapreds ((x5822))
+:extrapreds ((x5823))
+:extrapreds ((x5824))
+:extrapreds ((x5825))
+:extrapreds ((x5826))
+:extrapreds ((x5827))
+:extrapreds ((x5828))
+:extrapreds ((x5829))
+:extrapreds ((x5830))
+:extrapreds ((x5831))
+:extrapreds ((x5832))
+:extrapreds ((x5833))
+:extrapreds ((x5834))
+:extrapreds ((x5835))
+:extrapreds ((x5836))
+:extrapreds ((x5837))
+:extrapreds ((x5838))
+:extrapreds ((x5839))
+:extrapreds ((x5840))
+:extrapreds ((x5841))
+:extrapreds ((x5842))
+:extrapreds ((x5843))
+:extrapreds ((x5844))
+:extrapreds ((x5845))
+:extrapreds ((x5846))
+:extrapreds ((x5847))
+:extrapreds ((x5848))
+:extrapreds ((x5849))
+:extrapreds ((x5850))
+:extrapreds ((x5851))
+:extrapreds ((x5852))
+:extrapreds ((x5853))
+:extrapreds ((x5854))
+:extrapreds ((x5855))
+:extrapreds ((x5856))
+:extrapreds ((x5857))
+:extrapreds ((x5858))
+:extrapreds ((x5859))
+:extrapreds ((x5860))
+:extrapreds ((x5861))
+:extrapreds ((x5862))
+:extrapreds ((x5863))
+:extrapreds ((x5864))
+:extrapreds ((x5865))
+:extrapreds ((x5866))
+:extrapreds ((x5867))
+:extrapreds ((x5868))
+:extrapreds ((x5869))
+:extrapreds ((x5870))
+:extrapreds ((x5871))
+:extrapreds ((x5872))
+:extrapreds ((x5873))
+:extrapreds ((x5874))
+:extrapreds ((x5875))
+:extrapreds ((x5876))
+:extrapreds ((x5877))
+:extrapreds ((x5878))
+:extrapreds ((x5879))
+:extrapreds ((x5880))
+:extrapreds ((x5881))
+:extrapreds ((x5882))
+:extrapreds ((x5883))
+:extrapreds ((x5884))
+:extrapreds ((x5885))
+:extrapreds ((x5886))
+:extrapreds ((x5887))
+:extrapreds ((x5888))
+:extrapreds ((x5889))
+:extrapreds ((x5890))
+:extrapreds ((x5891))
+:extrapreds ((x5892))
+:extrapreds ((x5893))
+:extrapreds ((x5894))
+:extrapreds ((x5895))
+:extrapreds ((x5896))
+:extrapreds ((x5897))
+:extrapreds ((x5898))
+:extrapreds ((x5899))
+:extrapreds ((x5900))
+:extrapreds ((x5901))
+:extrapreds ((x5902))
+:extrapreds ((x5903))
+:extrapreds ((x5904))
+:extrapreds ((x5905))
+:extrapreds ((x5906))
+:extrapreds ((x5907))
+:extrapreds ((x5908))
+:extrapreds ((x5909))
+:extrapreds ((x5910))
+:extrapreds ((x5911))
+:extrapreds ((x5912))
+:extrapreds ((x5913))
+:extrapreds ((x5914))
+:extrapreds ((x5915))
+:extrapreds ((x5916))
+:extrapreds ((x5917))
+:extrapreds ((x5918))
+:extrapreds ((x5919))
+:extrapreds ((x5920))
+:extrapreds ((x5921))
+:extrapreds ((x5922))
+:extrapreds ((x5923))
+:extrapreds ((x5924))
+:extrapreds ((x5925))
+:extrapreds ((x5926))
+:extrapreds ((x5927))
+:extrapreds ((x5928))
+:extrapreds ((x5929))
+:extrapreds ((x5930))
+:extrapreds ((x5931))
+:extrapreds ((x5932))
+:extrapreds ((x5933))
+:extrapreds ((x5934))
+:extrapreds ((x5935))
+:extrapreds ((x5936))
+:extrapreds ((x5937))
+:extrapreds ((x5938))
+:extrapreds ((x5939))
+:extrapreds ((x5940))
+:extrapreds ((x5941))
+:extrapreds ((x5942))
+:extrapreds ((x5943))
+:extrapreds ((x5944))
+:extrapreds ((x5945))
+:extrapreds ((x5946))
+:extrapreds ((x5947))
+:extrapreds ((x5948))
+:extrapreds ((x5949))
+:extrapreds ((x5950))
+:extrapreds ((x5951))
+:extrapreds ((x5952))
+:extrapreds ((x5953))
+:extrapreds ((x5954))
+:extrapreds ((x5955))
+:extrapreds ((x5956))
+:extrapreds ((x5957))
+:extrapreds ((x5958))
+:extrapreds ((x5959))
+:extrapreds ((x5960))
+:extrapreds ((x5961))
+:extrapreds ((x5962))
+:extrapreds ((x5963))
+:extrapreds ((x5964))
+:extrapreds ((x5965))
+:extrapreds ((x5966))
+:extrapreds ((x5967))
+:extrapreds ((x5968))
+:extrapreds ((x5969))
+:extrapreds ((x5970))
+:extrapreds ((x5971))
+:extrapreds ((x5972))
+:extrapreds ((x5973))
+:extrapreds ((x5974))
+:extrapreds ((x5975))
+:extrapreds ((x5976))
+:extrapreds ((x5977))
+:extrapreds ((x5978))
+:extrapreds ((x5979))
+:extrapreds ((x5980))
+:extrapreds ((x5981))
+:extrapreds ((x5982))
+:extrapreds ((x5983))
+:extrapreds ((x5984))
+:extrapreds ((x5985))
+:extrapreds ((x5986))
+:extrapreds ((x5987))
+:extrapreds ((x5988))
+:extrapreds ((x5989))
+:extrapreds ((x5990))
+:extrapreds ((x5991))
+:extrapreds ((x5992))
+:extrapreds ((x5993))
+:extrapreds ((x5994))
+:extrapreds ((x5995))
+:extrapreds ((x5996))
+:extrapreds ((x5997))
+:extrapreds ((x5998))
+:extrapreds ((x5999))
+:extrapreds ((x6000))
+:extrapreds ((x6001))
+:extrapreds ((x6002))
+:extrapreds ((x6003))
+:extrapreds ((x6004))
+:extrapreds ((x6005))
+:extrapreds ((x6006))
+:extrapreds ((x6007))
+:extrapreds ((x6008))
+:extrapreds ((x6009))
+:extrapreds ((x6010))
+:extrapreds ((x6011))
+:extrapreds ((x6012))
+:extrapreds ((x6013))
+:extrapreds ((x6014))
+:extrapreds ((x6015))
+:extrapreds ((x6016))
+:extrapreds ((x6017))
+:extrapreds ((x6018))
+:extrapreds ((x6019))
+:extrapreds ((x6020))
+:extrapreds ((x6021))
+:extrapreds ((x6022))
+:extrapreds ((x6023))
+:extrapreds ((x6024))
+:extrapreds ((x6025))
+:extrapreds ((x6026))
+:extrapreds ((x6027))
+:extrapreds ((x6028))
+:extrapreds ((x6029))
+:extrapreds ((x6030))
+:extrapreds ((x6031))
+:extrapreds ((x6032))
+:extrapreds ((x6033))
+:extrapreds ((x6034))
+:extrapreds ((x6035))
+:extrapreds ((x6036))
+:extrapreds ((x6037))
+:extrapreds ((x6038))
+:extrapreds ((x6039))
+:extrapreds ((x6040))
+:extrapreds ((x6041))
+:extrapreds ((x6042))
+:extrapreds ((x6043))
+:extrapreds ((x6044))
+:extrapreds ((x6045))
+:extrapreds ((x6046))
+:extrapreds ((x6047))
+:extrapreds ((x6048))
+:extrapreds ((x6049))
+:extrapreds ((x6050))
+:extrapreds ((x6051))
+:extrapreds ((x6052))
+:extrapreds ((x6053))
+:extrapreds ((x6054))
+:extrapreds ((x6055))
+:extrapreds ((x6056))
+:extrapreds ((x6057))
+:extrapreds ((x6058))
+:extrapreds ((x6059))
+:extrapreds ((x6060))
+:extrapreds ((x6061))
+:extrapreds ((x6062))
+:extrapreds ((x6063))
+:extrapreds ((x6064))
+:extrapreds ((x6065))
+:extrapreds ((x6066))
+:extrapreds ((x6067))
+:extrapreds ((x6068))
+:extrapreds ((x6069))
+:extrapreds ((x6070))
+:extrapreds ((x6071))
+:extrapreds ((x6072))
+:extrapreds ((x6073))
+:extrapreds ((x6074))
+:extrapreds ((x6075))
+:extrapreds ((x6076))
+:extrapreds ((x6077))
+:extrapreds ((x6078))
+:extrapreds ((x6079))
+:extrapreds ((x6080))
+:extrapreds ((x6081))
+:extrapreds ((x6082))
+:extrapreds ((x6083))
+:extrapreds ((x6084))
+:extrapreds ((x6085))
+:extrapreds ((x6086))
+:extrapreds ((x6087))
+:extrapreds ((x6088))
+:extrapreds ((x6089))
+:extrapreds ((x6090))
+:extrapreds ((x6091))
+:extrapreds ((x6092))
+:extrapreds ((x6093))
+:extrapreds ((x6094))
+:extrapreds ((x6095))
+:extrapreds ((x6096))
+:extrapreds ((x6097))
+:extrapreds ((x6098))
+:extrapreds ((x6099))
+:extrapreds ((x6100))
+:extrapreds ((x6101))
+:extrapreds ((x6102))
+:extrapreds ((x6103))
+:extrapreds ((x6104))
+:extrapreds ((x6105))
+:extrapreds ((x6106))
+:extrapreds ((x6107))
+:extrapreds ((x6108))
+:extrapreds ((x6109))
+:extrapreds ((x6110))
+:extrapreds ((x6111))
+:extrapreds ((x6112))
+:extrapreds ((x6113))
+:extrapreds ((x6114))
+:extrapreds ((x6115))
+:extrapreds ((x6116))
+:extrapreds ((x6117))
+:extrapreds ((x6118))
+:extrapreds ((x6119))
+:extrapreds ((x6120))
+:extrapreds ((x6121))
+:extrapreds ((x6122))
+:extrapreds ((x6123))
+:extrapreds ((x6124))
+:extrapreds ((x6125))
+:extrapreds ((x6126))
+:extrapreds ((x6127))
+:extrapreds ((x6128))
+:extrapreds ((x6129))
+:extrapreds ((x6130))
+:extrapreds ((x6131))
+:extrapreds ((x6132))
+:extrapreds ((x6133))
+:extrapreds ((x6134))
+:extrapreds ((x6135))
+:extrapreds ((x6136))
+:extrapreds ((x6137))
+:extrapreds ((x6138))
+:extrapreds ((x6139))
+:extrapreds ((x6140))
+:extrapreds ((x6141))
+:extrapreds ((x6142))
+:extrapreds ((x6143))
+:extrapreds ((x6144))
+:extrapreds ((x6145))
+:extrapreds ((x6146))
+:extrapreds ((x6147))
+:extrapreds ((x6148))
+:extrapreds ((x6149))
+:extrapreds ((x6150))
+:extrapreds ((x6151))
+:extrapreds ((x6152))
+:extrapreds ((x6153))
+:extrapreds ((x6154))
+:extrapreds ((x6155))
+:extrapreds ((x6156))
+:extrapreds ((x6157))
+:extrapreds ((x6158))
+:extrapreds ((x6159))
+:extrapreds ((x6160))
+:extrapreds ((x6161))
+:extrapreds ((x6162))
+:extrapreds ((x6163))
+:extrapreds ((x6164))
+:extrapreds ((x6165))
+:extrapreds ((x6166))
+:extrapreds ((x6167))
+:extrapreds ((x6168))
+:extrapreds ((x6169))
+:extrapreds ((x6170))
+:extrapreds ((x6171))
+:extrapreds ((x6172))
+:extrapreds ((x6173))
+:extrapreds ((x6174))
+:extrapreds ((x6175))
+:extrapreds ((x6176))
+:extrapreds ((x6177))
+:extrapreds ((x6178))
+:extrapreds ((x6179))
+:extrapreds ((x6180))
+:extrapreds ((x6181))
+:extrapreds ((x6182))
+:extrapreds ((x6183))
+:extrapreds ((x6184))
+:extrapreds ((x6185))
+:extrapreds ((x6186))
+:extrapreds ((x6187))
+:extrapreds ((x6188))
+:extrapreds ((x6189))
+:extrapreds ((x6190))
+:extrapreds ((x6191))
+:extrapreds ((x6192))
+:extrapreds ((x6193))
+:extrapreds ((x6194))
+:extrapreds ((x6195))
+:extrapreds ((x6196))
+:extrapreds ((x6197))
+:extrapreds ((x6198))
+:extrapreds ((x6199))
+:extrapreds ((x6200))
+:extrapreds ((x6201))
+:extrapreds ((x6202))
+:extrapreds ((x6203))
+:extrapreds ((x6204))
+:extrapreds ((x6205))
+:extrapreds ((x6206))
+:extrapreds ((x6207))
+:extrapreds ((x6208))
+:extrapreds ((x6209))
+:extrapreds ((x6210))
+:extrapreds ((x6211))
+:extrapreds ((x6212))
+:extrapreds ((x6213))
+:extrapreds ((x6214))
+:extrapreds ((x6215))
+:extrapreds ((x6216))
+:extrapreds ((x6217))
+:extrapreds ((x6218))
+:extrapreds ((x6219))
+:extrapreds ((x6220))
+:extrapreds ((x6221))
+:extrapreds ((x6222))
+:extrapreds ((x6223))
+:extrapreds ((x6224))
+:extrapreds ((x6225))
+:extrapreds ((x6226))
+:extrapreds ((x6227))
+:extrapreds ((x6228))
+:extrapreds ((x6229))
+:extrapreds ((x6230))
+:extrapreds ((x6231))
+:extrapreds ((x6232))
+:extrapreds ((x6233))
+:extrapreds ((x6234))
+:extrapreds ((x6235))
+:extrapreds ((x6236))
+:extrapreds ((x6237))
+:extrapreds ((x6238))
+:extrapreds ((x6239))
+:extrapreds ((x6240))
+:extrapreds ((x6241))
+:extrapreds ((x6242))
+:extrapreds ((x6243))
+:extrapreds ((x6244))
+:extrapreds ((x6245))
+:extrapreds ((x6246))
+:extrapreds ((x6247))
+:extrapreds ((x6248))
+:extrapreds ((x6249))
+:extrapreds ((x6250))
+:extrapreds ((x6251))
+:extrapreds ((x6252))
+:extrapreds ((x6253))
+:extrapreds ((x6254))
+:extrapreds ((x6255))
+:extrapreds ((x6256))
+:extrapreds ((x6257))
+:extrapreds ((x6258))
+:extrapreds ((x6259))
+:extrapreds ((x6260))
+:extrapreds ((x6261))
+:extrapreds ((x6262))
+:extrapreds ((x6263))
+:extrapreds ((x6264))
+:extrapreds ((x6265))
+:extrapreds ((x6266))
+:extrapreds ((x6267))
+:extrapreds ((x6268))
+:extrapreds ((x6269))
+:extrapreds ((x6270))
+:extrapreds ((x6271))
+:extrapreds ((x6272))
+:extrapreds ((x6273))
+:extrapreds ((x6274))
+:extrapreds ((x6275))
+:extrapreds ((x6276))
+:extrapreds ((x6277))
+:extrapreds ((x6278))
+:extrapreds ((x6279))
+:extrapreds ((x6280))
+:extrapreds ((x6281))
+:extrapreds ((x6282))
+:extrapreds ((x6283))
+:extrapreds ((x6284))
+:extrapreds ((x6285))
+:extrapreds ((x6286))
+:extrapreds ((x6287))
+:extrapreds ((x6288))
+:extrapreds ((x6289))
+:extrapreds ((x6290))
+:extrapreds ((x6291))
+:extrapreds ((x6292))
+:extrapreds ((x6293))
+:extrapreds ((x6294))
+:extrapreds ((x6295))
+:extrapreds ((x6296))
+:extrapreds ((x6297))
+:extrapreds ((x6298))
+:extrapreds ((x6299))
+:extrapreds ((x6300))
+:extrapreds ((x6301))
+:extrapreds ((x6302))
+:extrapreds ((x6303))
+:extrapreds ((x6304))
+:extrapreds ((x6305))
+:extrapreds ((x6306))
+:extrapreds ((x6307))
+:extrapreds ((x6308))
+:extrapreds ((x6309))
+:extrapreds ((x6310))
+:extrapreds ((x6311))
+:extrapreds ((x6312))
+:extrapreds ((x6313))
+:extrapreds ((x6314))
+:extrapreds ((x6315))
+:extrapreds ((x6316))
+:extrapreds ((x6317))
+:extrapreds ((x6318))
+:extrapreds ((x6319))
+:extrapreds ((x6320))
+:extrapreds ((x6321))
+:extrapreds ((x6322))
+:extrapreds ((x6323))
+:extrapreds ((x6324))
+:extrapreds ((x6325))
+:extrapreds ((x6326))
+:extrapreds ((x6327))
+:extrapreds ((x6328))
+:extrapreds ((x6329))
+:extrapreds ((x6330))
+:extrapreds ((x6331))
+:extrapreds ((x6332))
+:extrapreds ((x6333))
+:extrapreds ((x6334))
+:extrapreds ((x6335))
+:extrapreds ((x6336))
+:extrapreds ((x6337))
+:extrapreds ((x6338))
+:extrapreds ((x6339))
+:extrapreds ((x6340))
+:extrapreds ((x6341))
+:extrapreds ((x6342))
+:extrapreds ((x6343))
+:extrapreds ((x6344))
+:extrapreds ((x6345))
+:extrapreds ((x6346))
+:extrapreds ((x6347))
+:extrapreds ((x6348))
+:extrapreds ((x6349))
+:extrapreds ((x6350))
+:extrapreds ((x6351))
+:extrapreds ((x6352))
+:extrapreds ((x6353))
+:extrapreds ((x6354))
+:extrapreds ((x6355))
+:extrapreds ((x6356))
+:extrapreds ((x6357))
+:extrapreds ((x6358))
+:extrapreds ((x6359))
+:extrapreds ((x6360))
+:extrapreds ((x6361))
+:extrapreds ((x6362))
+:extrapreds ((x6363))
+:extrapreds ((x6364))
+:extrapreds ((x6365))
+:extrapreds ((x6366))
+:extrapreds ((x6367))
+:extrapreds ((x6368))
+:extrapreds ((x6369))
+:extrapreds ((x6370))
+:extrapreds ((x6371))
+:extrapreds ((x6372))
+:extrapreds ((x6373))
+:extrapreds ((x6374))
+:extrapreds ((x6375))
+:extrapreds ((x6376))
+:extrapreds ((x6377))
+:extrapreds ((x6378))
+:extrapreds ((x6379))
+:extrapreds ((x6380))
+:extrapreds ((x6381))
+:extrapreds ((x6382))
+:extrapreds ((x6383))
+:extrapreds ((x6384))
+:extrapreds ((x6385))
+:extrapreds ((x6386))
+:extrapreds ((x6387))
+:extrapreds ((x6388))
+:extrapreds ((x6389))
+:extrapreds ((x6390))
+:extrapreds ((x6391))
+:extrapreds ((x6392))
+:extrapreds ((x6393))
+:extrapreds ((x6394))
+:extrapreds ((x6395))
+:extrapreds ((x6396))
+:extrapreds ((x6397))
+:extrapreds ((x6398))
+:extrapreds ((x6399))
+:extrapreds ((x6400))
+:extrapreds ((x6401))
+:extrapreds ((x6402))
+:extrapreds ((x6403))
+:extrapreds ((x6404))
+:extrapreds ((x6405))
+:extrapreds ((x6406))
+:extrapreds ((x6407))
+:extrapreds ((x6408))
+:extrapreds ((x6409))
+:extrapreds ((x6410))
+:extrapreds ((x6411))
+:extrapreds ((x6412))
+:extrapreds ((x6413))
+:extrapreds ((x6414))
+:extrapreds ((x6415))
+:extrapreds ((x6416))
+:extrapreds ((x6417))
+:extrapreds ((x6418))
+:extrapreds ((x6419))
+:extrapreds ((x6420))
+:extrapreds ((x6421))
+:extrapreds ((x6422))
+:extrapreds ((x6423))
+:extrapreds ((x6424))
+:extrapreds ((x6425))
+:extrapreds ((x6426))
+:extrapreds ((x6427))
+:extrapreds ((x6428))
+:extrapreds ((x6429))
+:extrapreds ((x6430))
+:extrapreds ((x6431))
+:extrapreds ((x6432))
+:extrapreds ((x6433))
+:extrapreds ((x6434))
+:extrapreds ((x6435))
+:extrapreds ((x6436))
+:extrapreds ((x6437))
+:extrapreds ((x6438))
+:extrapreds ((x6439))
+:extrapreds ((x6440))
+:extrapreds ((x6441))
+:extrapreds ((x6442))
+:extrapreds ((x6443))
+:extrapreds ((x6444))
+:extrapreds ((x6445))
+:extrapreds ((x6446))
+:extrapreds ((x6447))
+:extrapreds ((x6448))
+:extrapreds ((x6449))
+:extrapreds ((x6450))
+:extrapreds ((x6451))
+:extrapreds ((x6452))
+:extrapreds ((x6453))
+:extrapreds ((x6454))
+:extrapreds ((x6455))
+:extrapreds ((x6456))
+:extrapreds ((x6457))
+:extrapreds ((x6458))
+:extrapreds ((x6459))
+:extrapreds ((x6460))
+:extrapreds ((x6461))
+:extrapreds ((x6462))
+:extrapreds ((x6463))
+:extrapreds ((x6464))
+:extrapreds ((x6465))
+:extrapreds ((x6466))
+:extrapreds ((x6467))
+:extrapreds ((x6468))
+:extrapreds ((x6469))
+:extrapreds ((x6470))
+:extrapreds ((x6471))
+:extrapreds ((x6472))
+:extrapreds ((x6473))
+:extrapreds ((x6474))
+:extrapreds ((x6475))
+:extrapreds ((x6476))
+:extrapreds ((x6477))
+:extrapreds ((x6478))
+:extrapreds ((x6479))
+:extrapreds ((x6480))
+:extrapreds ((x6481))
+:extrapreds ((x6482))
+:extrapreds ((x6483))
+:extrapreds ((x6484))
+:extrapreds ((x6485))
+:extrapreds ((x6486))
+:extrapreds ((x6487))
+:extrapreds ((x6488))
+:extrapreds ((x6489))
+:extrapreds ((x6490))
+:extrapreds ((x6491))
+:extrapreds ((x6492))
+:extrapreds ((x6493))
+:extrapreds ((x6494))
+:extrapreds ((x6495))
+:extrapreds ((x6496))
+:extrapreds ((x6497))
+:extrapreds ((x6498))
+:extrapreds ((x6499))
+:extrapreds ((x6500))
+:extrapreds ((x6501))
+:extrapreds ((x6502))
+:extrapreds ((x6503))
+:extrapreds ((x6504))
+:extrapreds ((x6505))
+:extrapreds ((x6506))
+:extrapreds ((x6507))
+:extrapreds ((x6508))
+:extrapreds ((x6509))
+:extrapreds ((x6510))
+:extrapreds ((x6511))
+:extrapreds ((x6512))
+:extrapreds ((x6513))
+:extrapreds ((x6514))
+:extrapreds ((x6515))
+:extrapreds ((x6516))
+:extrapreds ((x6517))
+:extrapreds ((x6518))
+:extrapreds ((x6519))
+:extrapreds ((x6520))
+:extrapreds ((x6521))
+:extrapreds ((x6522))
+:extrapreds ((x6523))
+:extrapreds ((x6524))
+:extrapreds ((x6525))
+:extrapreds ((x6526))
+:extrapreds ((x6527))
+:extrapreds ((x6528))
+:extrapreds ((x6529))
+:extrapreds ((x6530))
+:extrapreds ((x6531))
+:extrapreds ((x6532))
+:extrapreds ((x6533))
+:extrapreds ((x6534))
+:extrapreds ((x6535))
+:extrapreds ((x6536))
+:extrapreds ((x6537))
+:extrapreds ((x6538))
+:extrapreds ((x6539))
+:extrapreds ((x6540))
+:extrapreds ((x6541))
+:extrapreds ((x6542))
+:extrapreds ((x6543))
+:extrapreds ((x6544))
+:extrapreds ((x6545))
+:extrapreds ((x6546))
+:extrapreds ((x6547))
+:extrapreds ((x6548))
+:extrapreds ((x6549))
+:extrapreds ((x6550))
+:extrapreds ((x6551))
+:extrapreds ((x6552))
+:extrapreds ((x6553))
+:extrapreds ((x6554))
+:extrapreds ((x6555))
+:extrapreds ((x6556))
+:extrapreds ((x6557))
+:extrapreds ((x6558))
+:extrapreds ((x6559))
+:extrapreds ((x6560))
+:extrapreds ((x6561))
+:extrapreds ((x6562))
+:extrapreds ((x6563))
+:extrapreds ((x6564))
+:extrapreds ((x6565))
+:extrapreds ((x6566))
+:extrapreds ((x6567))
+:extrapreds ((x6568))
+:extrapreds ((x6569))
+:extrapreds ((x6570))
+:extrapreds ((x6571))
+:extrapreds ((x6572))
+:extrapreds ((x6573))
+:extrapreds ((x6574))
+:extrapreds ((x6575))
+:extrapreds ((x6576))
+:extrapreds ((x6577))
+:extrapreds ((x6578))
+:extrapreds ((x6579))
+:extrapreds ((x6580))
+:extrapreds ((x6581))
+:extrapreds ((x6582))
+:extrapreds ((x6583))
+:extrapreds ((x6584))
+:extrapreds ((x6585))
+:extrapreds ((x6586))
+:extrapreds ((x6587))
+:extrapreds ((x6588))
+:extrapreds ((x6589))
+:extrapreds ((x6590))
+:extrapreds ((x6591))
+:extrapreds ((x6592))
+:extrapreds ((x6593))
+:extrapreds ((x6594))
+:extrapreds ((x6595))
+:extrapreds ((x6596))
+:extrapreds ((x6597))
+:extrapreds ((x6598))
+:extrapreds ((x6599))
+:extrapreds ((x6600))
+:extrapreds ((x6601))
+:extrapreds ((x6602))
+:extrapreds ((x6603))
+:extrapreds ((x6604))
+:extrapreds ((x6605))
+:extrapreds ((x6606))
+:extrapreds ((x6607))
+:extrapreds ((x6608))
+:extrapreds ((x6609))
+:extrapreds ((x6610))
+:extrapreds ((x6611))
+:extrapreds ((x6612))
+:extrapreds ((x6613))
+:extrapreds ((x6614))
+:extrapreds ((x6615))
+:extrapreds ((x6616))
+:extrapreds ((x6617))
+:extrapreds ((x6618))
+:extrapreds ((x6619))
+:extrapreds ((x6620))
+:extrapreds ((x6621))
+:extrapreds ((x6622))
+:extrapreds ((x6623))
+:extrapreds ((x6624))
+:extrapreds ((x6625))
+:extrapreds ((x6626))
+:extrapreds ((x6627))
+:extrapreds ((x6628))
+:extrapreds ((x6629))
+:extrapreds ((x6630))
+:extrapreds ((x6631))
+:extrapreds ((x6632))
+:extrapreds ((x6633))
+:extrapreds ((x6634))
+:extrapreds ((x6635))
+:extrapreds ((x6636))
+:extrapreds ((x6637))
+:extrapreds ((x6638))
+:extrapreds ((x6639))
+:extrapreds ((x6640))
+:extrapreds ((x6641))
+:extrapreds ((x6642))
+:extrapreds ((x6643))
+:extrapreds ((x6644))
+:extrapreds ((x6645))
+:extrapreds ((x6646))
+:extrapreds ((x6647))
+:extrapreds ((x6648))
+:extrapreds ((x6649))
+:extrapreds ((x6650))
+:extrapreds ((x6651))
+:extrapreds ((x6652))
+:extrapreds ((x6653))
+:extrapreds ((x6654))
+:extrapreds ((x6655))
+:extrapreds ((x6656))
+:extrapreds ((x6657))
+:extrapreds ((x6658))
+:extrapreds ((x6659))
+:extrapreds ((x6660))
+:extrapreds ((x6661))
+:extrapreds ((x6662))
+:extrapreds ((x6663))
+:extrapreds ((x6664))
+:extrapreds ((x6665))
+:extrapreds ((x6666))
+:extrapreds ((x6667))
+:extrapreds ((x6668))
+:extrapreds ((x6669))
+:extrapreds ((x6670))
+:extrapreds ((x6671))
+:extrapreds ((x6672))
+:extrapreds ((x6673))
+:extrapreds ((x6674))
+:extrapreds ((x6675))
+:extrapreds ((x6676))
+:extrapreds ((x6677))
+:extrapreds ((x6678))
+:extrapreds ((x6679))
+:extrapreds ((x6680))
+:extrapreds ((x6681))
+:extrapreds ((x6682))
+:extrapreds ((x6683))
+:extrapreds ((x6684))
+:extrapreds ((x6685))
+:extrapreds ((x6686))
+:extrapreds ((x6687))
+:extrapreds ((x6688))
+:extrapreds ((x6689))
+:extrapreds ((x6690))
+:extrapreds ((x6691))
+:extrapreds ((x6692))
+:extrapreds ((x6693))
+:extrapreds ((x6694))
+:extrapreds ((x6695))
+:extrapreds ((x6696))
+:extrapreds ((x6697))
+:extrapreds ((x6698))
+:extrapreds ((x6699))
+:extrapreds ((x6700))
+:extrapreds ((x6701))
+:extrapreds ((x6702))
+:extrapreds ((x6703))
+:extrapreds ((x6704))
+:extrapreds ((x6705))
+:extrapreds ((x6706))
+:extrapreds ((x6707))
+:extrapreds ((x6708))
+:extrapreds ((x6709))
+:extrapreds ((x6710))
+:extrapreds ((x6711))
+:extrapreds ((x6712))
+:extrapreds ((x6713))
+:extrapreds ((x6714))
+:extrapreds ((x6715))
+:extrapreds ((x6716))
+:extrapreds ((x6717))
+:extrapreds ((x6718))
+:extrapreds ((x6719))
+:extrapreds ((x6720))
+:extrapreds ((x6721))
+:extrapreds ((x6722))
+:extrapreds ((x6723))
+:extrapreds ((x6724))
+:extrapreds ((x6725))
+:extrapreds ((x6726))
+:extrapreds ((x6727))
+:extrapreds ((x6728))
+:extrapreds ((x6729))
+:extrapreds ((x6730))
+:extrapreds ((x6731))
+:extrapreds ((x6732))
+:extrapreds ((x6733))
+:extrapreds ((x6734))
+:extrapreds ((x6735))
+:extrapreds ((x6736))
+:extrapreds ((x6737))
+:extrapreds ((x6738))
+:extrapreds ((x6739))
+:extrapreds ((x6740))
+:extrapreds ((x6741))
+:extrapreds ((x6742))
+:extrapreds ((x6743))
+:extrapreds ((x6744))
+:extrapreds ((x6745))
+:extrapreds ((x6746))
+:extrapreds ((x6747))
+:extrapreds ((x6748))
+:extrapreds ((x6749))
+:extrapreds ((x6750))
+:extrapreds ((x6751))
+:extrapreds ((x6752))
+:extrapreds ((x6753))
+:extrapreds ((x6754))
+:extrapreds ((x6755))
+:extrapreds ((x6756))
+:extrapreds ((x6757))
+:extrapreds ((x6758))
+:extrapreds ((x6759))
+:extrapreds ((x6760))
+:extrapreds ((x6761))
+:extrapreds ((x6762))
+:extrapreds ((x6763))
+:extrapreds ((x6764))
+:extrapreds ((x6765))
+:extrapreds ((x6766))
+:extrapreds ((x6767))
+:extrapreds ((x6768))
+:extrapreds ((x6769))
+:extrapreds ((x6770))
+:extrapreds ((x6771))
+:extrapreds ((x6772))
+:extrapreds ((x6773))
+:extrapreds ((x6774))
+:extrapreds ((x6775))
+:extrapreds ((x6776))
+:extrapreds ((x6777))
+:extrapreds ((x6778))
+:extrapreds ((x6779))
+:extrapreds ((x6780))
+:extrapreds ((x6781))
+:extrapreds ((x6782))
+:extrapreds ((x6783))
+:extrapreds ((x6784))
+:extrapreds ((x6785))
+:extrapreds ((x6786))
+:extrapreds ((x6787))
+:extrapreds ((x6788))
+:extrapreds ((x6789))
+:extrapreds ((x6790))
+:extrapreds ((x6791))
+:extrapreds ((x6792))
+:extrapreds ((x6793))
+:extrapreds ((x6794))
+:extrapreds ((x6795))
+:extrapreds ((x6796))
+:extrapreds ((x6797))
+:extrapreds ((x6798))
+:extrapreds ((x6799))
+:extrapreds ((x6800))
+:extrapreds ((x6801))
+:extrapreds ((x6802))
+:extrapreds ((x6803))
+:extrapreds ((x6804))
+:extrapreds ((x6805))
+:extrapreds ((x6806))
+:extrapreds ((x6807))
+:extrapreds ((x6808))
+:extrapreds ((x6809))
+:extrapreds ((x6810))
+:extrapreds ((x6811))
+:extrapreds ((x6812))
+:extrapreds ((x6813))
+:extrapreds ((x6814))
+:extrapreds ((x6815))
+:extrapreds ((x6816))
+:extrapreds ((x6817))
+:extrapreds ((x6818))
+:extrapreds ((x6819))
+:extrapreds ((x6820))
+:extrapreds ((x6821))
+:extrapreds ((x6822))
+:extrapreds ((x6823))
+:extrapreds ((x6824))
+:extrapreds ((x6825))
+:extrapreds ((x6826))
+:extrapreds ((x6827))
+:extrapreds ((x6828))
+:extrapreds ((x6829))
+:extrapreds ((x6830))
+:extrapreds ((x6831))
+:extrapreds ((x6832))
+:extrapreds ((x6833))
+:extrapreds ((x6834))
+:extrapreds ((x6835))
+:extrapreds ((x6836))
+:extrapreds ((x6837))
+:extrapreds ((x6838))
+:extrapreds ((x6839))
+:extrapreds ((x6840))
+:extrapreds ((x6841))
+:extrapreds ((x6842))
+:extrapreds ((x6843))
+:extrapreds ((x6844))
+:extrapreds ((x6845))
+:extrapreds ((x6846))
+:extrapreds ((x6847))
+:extrapreds ((x6848))
+:extrapreds ((x6849))
+:extrapreds ((x6850))
+:extrapreds ((x6851))
+:extrapreds ((x6852))
+:extrapreds ((x6853))
+:extrapreds ((x6854))
+:extrapreds ((x6855))
+:extrapreds ((x6856))
+:extrapreds ((x6857))
+:extrapreds ((x6858))
+:extrapreds ((x6859))
+:extrapreds ((x6860))
+:extrapreds ((x6861))
+:extrapreds ((x6862))
+:extrapreds ((x6863))
+:extrapreds ((x6864))
+:extrapreds ((x6865))
+:extrapreds ((x6866))
+:extrapreds ((x6867))
+:extrapreds ((x6868))
+:extrapreds ((x6869))
+:extrapreds ((x6870))
+:extrapreds ((x6871))
+:extrapreds ((x6872))
+:extrapreds ((x6873))
+:extrapreds ((x6874))
+:extrapreds ((x6875))
+:extrapreds ((x6876))
+:extrapreds ((x6877))
+:extrapreds ((x6878))
+:extrapreds ((x6879))
+:extrapreds ((x6880))
+:extrapreds ((x6881))
+:extrapreds ((x6882))
+:extrapreds ((x6883))
+:extrapreds ((x6884))
+:extrapreds ((x6885))
+:extrapreds ((x6886))
+:extrapreds ((x6887))
+:extrapreds ((x6888))
+:extrapreds ((x6889))
+:extrapreds ((x6890))
+:extrapreds ((x6891))
+:extrapreds ((x6892))
+:extrapreds ((x6893))
+:extrapreds ((x6894))
+:extrapreds ((x6895))
+:extrapreds ((x6896))
+:extrapreds ((x6897))
+:extrapreds ((x6898))
+:extrapreds ((x6899))
+:extrapreds ((x6900))
+:extrapreds ((x6901))
+:extrapreds ((x6902))
+:extrapreds ((x6903))
+:extrapreds ((x6904))
+:extrapreds ((x6905))
+:extrapreds ((x6906))
+:extrapreds ((x6907))
+:extrapreds ((x6908))
+:extrapreds ((x6909))
+:extrapreds ((x6910))
+:extrapreds ((x6911))
+:extrapreds ((x6912))
+:extrapreds ((x6913))
+:extrapreds ((x6914))
+:extrapreds ((x6915))
+:extrapreds ((x6916))
+:extrapreds ((x6917))
+:extrapreds ((x6918))
+:extrapreds ((x6919))
+:extrapreds ((x6920))
+:extrapreds ((x6921))
+:extrapreds ((x6922))
+:extrapreds ((x6923))
+:extrapreds ((x6924))
+:extrapreds ((x6925))
+:extrapreds ((x6926))
+:extrapreds ((x6927))
+:extrapreds ((x6928))
+:extrapreds ((x6929))
+:extrapreds ((x6930))
+:extrapreds ((x6931))
+:extrapreds ((x6932))
+:extrapreds ((x6933))
+:extrapreds ((x6934))
+:extrapreds ((x6935))
+:extrapreds ((x6936))
+:extrapreds ((x6937))
+:extrapreds ((x6938))
+:extrapreds ((x6939))
+:extrapreds ((x6940))
+:extrapreds ((x6941))
+:extrapreds ((x6942))
+:extrapreds ((x6943))
+:extrapreds ((x6944))
+:extrapreds ((x6945))
+:extrapreds ((x6946))
+:extrapreds ((x6947))
+:extrapreds ((x6948))
+:extrapreds ((x6949))
+:extrapreds ((x6950))
+:extrapreds ((x6951))
+:extrapreds ((x6952))
+:extrapreds ((x6953))
+:extrapreds ((x6954))
+:extrapreds ((x6955))
+:extrapreds ((x6956))
+:extrapreds ((x6957))
+:extrapreds ((x6958))
+:extrapreds ((x6959))
+:extrapreds ((x6960))
+:extrapreds ((x6961))
+:extrapreds ((x6962))
+:extrapreds ((x6963))
+:extrapreds ((x6964))
+:extrapreds ((x6965))
+:extrapreds ((x6966))
+:extrapreds ((x6967))
+:extrapreds ((x6968))
+:extrapreds ((x6969))
+:extrapreds ((x6970))
+:extrapreds ((x6971))
+:extrapreds ((x6972))
+:extrapreds ((x6973))
+:extrapreds ((x6974))
+:extrapreds ((x6975))
+:extrapreds ((x6976))
+:extrapreds ((x6977))
+:extrapreds ((x6978))
+:extrapreds ((x6979))
+:extrapreds ((x6980))
+:extrapreds ((x6981))
+:extrapreds ((x6982))
+:extrapreds ((x6983))
+:extrapreds ((x6984))
+:extrapreds ((x6985))
+:extrapreds ((x6986))
+:extrapreds ((x6987))
+:extrapreds ((x6988))
+:extrapreds ((x6989))
+:extrapreds ((x6990))
+:extrapreds ((x6991))
+:extrapreds ((x6992))
+:extrapreds ((x6993))
+:extrapreds ((x6994))
+:extrapreds ((x6995))
+:extrapreds ((x6996))
+:extrapreds ((x6997))
+:extrapreds ((x6998))
+:extrapreds ((x6999))
+:extrapreds ((x7000))
+:extrapreds ((x7001))
+:extrapreds ((x7002))
+:extrapreds ((x7003))
+:extrapreds ((x7004))
+:extrapreds ((x7005))
+:extrapreds ((x7006))
+:extrapreds ((x7007))
+:extrapreds ((x7008))
+:extrapreds ((x7009))
+:extrapreds ((x7010))
+:extrapreds ((x7011))
+:extrapreds ((x7012))
+:extrapreds ((x7013))
+:extrapreds ((x7014))
+:extrapreds ((x7015))
+:extrapreds ((x7016))
+:extrapreds ((x7017))
+:extrapreds ((x7018))
+:extrapreds ((x7019))
+:extrapreds ((x7020))
+:extrapreds ((x7021))
+:extrapreds ((x7022))
+:extrapreds ((x7023))
+:extrapreds ((x7024))
+:extrapreds ((x7025))
+:extrapreds ((x7026))
+:extrapreds ((x7027))
+:extrapreds ((x7028))
+:extrapreds ((x7029))
+:extrapreds ((x7030))
+:extrapreds ((x7031))
+:extrapreds ((x7032))
+:extrapreds ((x7033))
+:extrapreds ((x7034))
+:extrapreds ((x7035))
+:extrapreds ((x7036))
+:extrapreds ((x7037))
+:extrapreds ((x7038))
+:extrapreds ((x7039))
+:extrapreds ((x7040))
+:extrapreds ((x7041))
+:extrapreds ((x7042))
+:extrapreds ((x7043))
+:extrapreds ((x7044))
+:extrapreds ((x7045))
+:extrapreds ((x7046))
+:extrapreds ((x7047))
+:extrapreds ((x7048))
+:extrapreds ((x7049))
+:extrapreds ((x7050))
+:extrapreds ((x7051))
+:extrapreds ((x7052))
+:extrapreds ((x7053))
+:extrapreds ((x7054))
+:extrapreds ((x7055))
+:extrapreds ((x7056))
+:extrapreds ((x7057))
+:extrapreds ((x7058))
+:extrapreds ((x7059))
+:extrapreds ((x7060))
+:extrapreds ((x7061))
+:extrapreds ((x7062))
+:extrapreds ((x7063))
+:extrapreds ((x7064))
+:extrapreds ((x7065))
+:extrapreds ((x7066))
+:extrapreds ((x7067))
+:extrapreds ((x7068))
+:extrapreds ((x7069))
+:extrapreds ((x7070))
+:extrapreds ((x7071))
+:extrapreds ((x7072))
+:extrapreds ((x7073))
+:extrapreds ((x7074))
+:extrapreds ((x7075))
+:extrapreds ((x7076))
+:extrapreds ((x7077))
+:extrapreds ((x7078))
+:extrapreds ((x7079))
+:extrapreds ((x7080))
+:extrapreds ((x7081))
+:extrapreds ((x7082))
+:extrapreds ((x7083))
+:extrapreds ((x7084))
+:extrapreds ((x7085))
+:extrapreds ((x7086))
+:extrapreds ((x7087))
+:extrapreds ((x7088))
+:extrapreds ((x7089))
+:extrapreds ((x7090))
+:extrapreds ((x7091))
+:extrapreds ((x7092))
+:extrapreds ((x7093))
+:extrapreds ((x7094))
+:extrapreds ((x7095))
+:extrapreds ((x7096))
+:extrapreds ((x7097))
+:extrapreds ((x7098))
+:extrapreds ((x7099))
+:extrapreds ((x7100))
+:extrapreds ((x7101))
+:extrapreds ((x7102))
+:extrapreds ((x7103))
+:extrapreds ((x7104))
+:extrapreds ((x7105))
+:extrapreds ((x7106))
+:extrapreds ((x7107))
+:extrapreds ((x7108))
+:extrapreds ((x7109))
+:extrapreds ((x7110))
+:extrapreds ((x7111))
+:extrapreds ((x7112))
+:extrapreds ((x7113))
+:extrapreds ((x7114))
+:extrapreds ((x7115))
+:extrapreds ((x7116))
+:extrapreds ((x7117))
+:extrapreds ((x7118))
+:extrapreds ((x7119))
+:extrapreds ((x7120))
+:extrapreds ((x7121))
+:extrapreds ((x7122))
+:extrapreds ((x7123))
+:extrapreds ((x7124))
+:extrapreds ((x7125))
+:extrapreds ((x7126))
+:extrapreds ((x7127))
+:extrapreds ((x7128))
+:extrapreds ((x7129))
+:extrapreds ((x7130))
+:extrapreds ((x7131))
+:extrapreds ((x7132))
+:extrapreds ((x7133))
+:extrapreds ((x7134))
+:extrapreds ((x7135))
+:extrapreds ((x7136))
+:extrapreds ((x7137))
+:extrapreds ((x7138))
+:extrapreds ((x7139))
+:extrapreds ((x7140))
+:extrapreds ((x7141))
+:extrapreds ((x7142))
+:extrapreds ((x7143))
+:extrapreds ((x7144))
+:extrapreds ((x7145))
+:extrapreds ((x7146))
+:extrapreds ((x7147))
+:extrapreds ((x7148))
+:extrapreds ((x7149))
+:extrapreds ((x7150))
+:extrapreds ((x7151))
+:extrapreds ((x7152))
+:extrapreds ((x7153))
+:extrapreds ((x7154))
+:extrapreds ((x7155))
+:extrapreds ((x7156))
+:extrapreds ((x7157))
+:extrapreds ((x7158))
+:extrapreds ((x7159))
+:extrapreds ((x7160))
+:extrapreds ((x7161))
+:extrapreds ((x7162))
+:extrapreds ((x7163))
+:extrapreds ((x7164))
+:extrapreds ((x7165))
+:extrapreds ((x7166))
+:extrapreds ((x7167))
+:extrapreds ((x7168))
+:extrapreds ((x7169))
+:extrapreds ((x7170))
+:extrapreds ((x7171))
+:extrapreds ((x7172))
+:extrapreds ((x7173))
+:extrapreds ((x7174))
+:extrapreds ((x7175))
+:extrapreds ((x7176))
+:extrapreds ((x7177))
+:extrapreds ((x7178))
+:extrapreds ((x7179))
+:extrapreds ((x7180))
+:extrapreds ((x7181))
+:extrapreds ((x7182))
+:extrapreds ((x7183))
+:extrapreds ((x7184))
+:extrapreds ((x7185))
+:extrapreds ((x7186))
+:extrapreds ((x7187))
+:extrapreds ((x7188))
+:extrapreds ((x7189))
+:extrapreds ((x7190))
+:extrapreds ((x7191))
+:extrapreds ((x7192))
+:extrapreds ((x7193))
+:extrapreds ((x7194))
+:extrapreds ((x7195))
+:extrapreds ((x7196))
+:extrapreds ((x7197))
+:extrapreds ((x7198))
+:extrapreds ((x7199))
+:extrapreds ((x7200))
+:extrapreds ((x7201))
+:extrapreds ((x7202))
+:extrapreds ((x7203))
+:extrapreds ((x7204))
+:extrapreds ((x7205))
+:extrapreds ((x7206))
+:extrapreds ((x7207))
+:extrapreds ((x7208))
+:extrapreds ((x7209))
+:extrapreds ((x7210))
+:extrapreds ((x7211))
+:extrapreds ((x7212))
+:extrapreds ((x7213))
+:extrapreds ((x7214))
+:extrapreds ((x7215))
+:extrapreds ((x7216))
+:extrapreds ((x7217))
+:extrapreds ((x7218))
+:extrapreds ((x7219))
+:extrapreds ((x7220))
+:extrapreds ((x7221))
+:extrapreds ((x7222))
+:extrapreds ((x7223))
+:extrapreds ((x7224))
+:extrapreds ((x7225))
+:extrapreds ((x7226))
+:extrapreds ((x7227))
+:extrapreds ((x7228))
+:extrapreds ((x7229))
+:extrapreds ((x7230))
+:extrapreds ((x7231))
+:extrapreds ((x7232))
+:extrapreds ((x7233))
+:extrapreds ((x7234))
+:extrapreds ((x7235))
+:extrapreds ((x7236))
+:extrapreds ((x7237))
+:extrapreds ((x7238))
+:extrapreds ((x7239))
+:extrapreds ((x7240))
+:extrapreds ((x7241))
+:extrapreds ((x7242))
+:extrapreds ((x7243))
+:extrapreds ((x7244))
+:extrapreds ((x7245))
+:extrapreds ((x7246))
+:extrapreds ((x7247))
+:extrapreds ((x7248))
+:extrapreds ((x7249))
+:extrapreds ((x7250))
+:extrapreds ((x7251))
+:extrapreds ((x7252))
+:extrapreds ((x7253))
+:extrapreds ((x7254))
+:extrapreds ((x7255))
+:extrapreds ((x7256))
+:extrapreds ((x7257))
+:extrapreds ((x7258))
+:extrapreds ((x7259))
+:extrapreds ((x7260))
+:extrapreds ((x7261))
+:extrapreds ((x7262))
+:extrapreds ((x7263))
+:extrapreds ((x7264))
+:extrapreds ((x7265))
+:extrapreds ((x7266))
+:extrapreds ((x7267))
+:extrapreds ((x7268))
+:extrapreds ((x7269))
+:extrapreds ((x7270))
+:extrapreds ((x7271))
+:extrapreds ((x7272))
+:extrapreds ((x7273))
+:extrapreds ((x7274))
+:extrapreds ((x7275))
+:extrapreds ((x7276))
+:extrapreds ((x7277))
+:extrapreds ((x7278))
+:extrapreds ((x7279))
+:extrapreds ((x7280))
+:extrapreds ((x7281))
+:extrapreds ((x7282))
+:extrapreds ((x7283))
+:extrapreds ((x7284))
+:extrapreds ((x7285))
+:extrapreds ((x7286))
+:extrapreds ((x7287))
+:extrapreds ((x7288))
+:extrapreds ((x7289))
+:extrapreds ((x7290))
+:extrapreds ((x7291))
+:extrapreds ((x7292))
+:extrapreds ((x7293))
+:extrapreds ((x7294))
+:extrapreds ((x7295))
+:extrapreds ((x7296))
+:extrapreds ((x7297))
+:extrapreds ((x7298))
+:extrapreds ((x7299))
+:extrapreds ((x7300))
+:extrapreds ((x7301))
+:extrapreds ((x7302))
+:extrapreds ((x7303))
+:extrapreds ((x7304))
+:extrapreds ((x7305))
+:extrapreds ((x7306))
+:extrapreds ((x7307))
+:extrapreds ((x7308))
+:extrapreds ((x7309))
+:extrapreds ((x7310))
+:extrapreds ((x7311))
+:extrapreds ((x7312))
+:extrapreds ((x7313))
+:extrapreds ((x7314))
+:extrapreds ((x7315))
+:extrapreds ((x7316))
+:extrapreds ((x7317))
+:extrapreds ((x7318))
+:extrapreds ((x7319))
+:extrapreds ((x7320))
+:extrapreds ((x7321))
+:extrapreds ((x7322))
+:extrapreds ((x7323))
+:extrapreds ((x7324))
+:extrapreds ((x7325))
+:extrapreds ((x7326))
+:extrapreds ((x7327))
+:extrapreds ((x7328))
+:extrapreds ((x7329))
+:extrapreds ((x7330))
+:extrapreds ((x7331))
+:extrapreds ((x7332))
+:extrapreds ((x7333))
+:extrapreds ((x7334))
+:extrapreds ((x7335))
+:extrapreds ((x7336))
+:extrapreds ((x7337))
+:extrapreds ((x7338))
+:extrapreds ((x7339))
+:extrapreds ((x7340))
+:extrapreds ((x7341))
+:extrapreds ((x7342))
+:extrapreds ((x7343))
+:extrapreds ((x7344))
+:extrapreds ((x7345))
+:extrapreds ((x7346))
+:extrapreds ((x7347))
+:extrapreds ((x7348))
+:extrapreds ((x7349))
+:extrapreds ((x7350))
+:extrapreds ((x7351))
+:extrapreds ((x7352))
+:extrapreds ((x7353))
+:extrapreds ((x7354))
+:extrapreds ((x7355))
+:extrapreds ((x7356))
+:extrapreds ((x7357))
+:extrapreds ((x7358))
+:extrapreds ((x7359))
+:extrapreds ((x7360))
+:extrapreds ((x7361))
+:extrapreds ((x7362))
+:extrapreds ((x7363))
+:extrapreds ((x7364))
+:extrapreds ((x7365))
+:extrapreds ((x7366))
+:extrapreds ((x7367))
+:extrapreds ((x7368))
+:extrapreds ((x7369))
+:extrapreds ((x7370))
+:extrapreds ((x7371))
+:extrapreds ((x7372))
+:extrapreds ((x7373))
+:extrapreds ((x7374))
+:extrapreds ((x7375))
+:extrapreds ((x7376))
+:extrapreds ((x7377))
+:extrapreds ((x7378))
+:extrapreds ((x7379))
+:extrapreds ((x7380))
+:extrapreds ((x7381))
+:extrapreds ((x7382))
+:extrapreds ((x7383))
+:extrapreds ((x7384))
+:extrapreds ((x7385))
+:extrapreds ((x7386))
+:extrapreds ((x7387))
+:extrapreds ((x7388))
+:extrapreds ((x7389))
+:extrapreds ((x7390))
+:extrapreds ((x7391))
+:extrapreds ((x7392))
+:extrapreds ((x7393))
+:extrapreds ((x7394))
+:extrapreds ((x7395))
+:extrapreds ((x7396))
+:extrapreds ((x7397))
+:extrapreds ((x7398))
+:extrapreds ((x7399))
+:extrapreds ((x7400))
+:extrapreds ((x7401))
+:extrapreds ((x7402))
+:extrapreds ((x7403))
+:extrapreds ((x7404))
+:extrapreds ((x7405))
+:extrapreds ((x7406))
+:extrapreds ((x7407))
+:extrapreds ((x7408))
+:extrapreds ((x7409))
+:extrapreds ((x7410))
+:extrapreds ((x7411))
+:extrapreds ((x7412))
+:extrapreds ((x7413))
+:extrapreds ((x7414))
+:extrapreds ((x7415))
+:extrapreds ((x7416))
+:extrapreds ((x7417))
+:extrapreds ((x7418))
+:extrapreds ((x7419))
+:extrapreds ((x7420))
+:extrapreds ((x7421))
+:extrapreds ((x7422))
+:extrapreds ((x7423))
+:extrapreds ((x7424))
+:extrapreds ((x7425))
+:extrapreds ((x7426))
+:extrapreds ((x7427))
+:extrapreds ((x7428))
+:extrapreds ((x7429))
+:extrapreds ((x7430))
+:extrapreds ((x7431))
+:extrapreds ((x7432))
+:extrapreds ((x7433))
+:extrapreds ((x7434))
+:extrapreds ((x7435))
+:extrapreds ((x7436))
+:extrapreds ((x7437))
+:extrapreds ((x7438))
+:extrapreds ((x7439))
+:extrapreds ((x7440))
+:extrapreds ((x7441))
+:extrapreds ((x7442))
+:extrapreds ((x7443))
+:extrapreds ((x7444))
+:extrapreds ((x7445))
+:extrapreds ((x7446))
+:extrapreds ((x7447))
+:extrapreds ((x7448))
+:extrapreds ((x7449))
+:extrapreds ((x7450))
+:extrapreds ((x7451))
+:extrapreds ((x7452))
+:extrapreds ((x7453))
+:extrapreds ((x7454))
+:extrapreds ((x7455))
+:extrapreds ((x7456))
+:extrapreds ((x7457))
+:extrapreds ((x7458))
+:extrapreds ((x7459))
+:extrapreds ((x7460))
+:extrapreds ((x7461))
+:extrapreds ((x7462))
+:extrapreds ((x7463))
+:extrapreds ((x7464))
+:extrapreds ((x7465))
+:extrapreds ((x7466))
+:extrapreds ((x7467))
+:extrapreds ((x7468))
+:extrapreds ((x7469))
+:extrapreds ((x7470))
+:extrapreds ((x7471))
+:extrapreds ((x7472))
+:extrapreds ((x7473))
+:extrapreds ((x7474))
+:extrapreds ((x7475))
+:extrapreds ((x7476))
+:extrapreds ((x7477))
+:extrapreds ((x7478))
+:extrapreds ((x7479))
+:extrapreds ((x7480))
+:extrapreds ((x7481))
+:extrapreds ((x7482))
+:extrapreds ((x7483))
+:extrapreds ((x7484))
+:extrapreds ((x7485))
+:extrapreds ((x7486))
+:extrapreds ((x7487))
+:extrapreds ((x7488))
+:extrapreds ((x7489))
+:extrapreds ((x7490))
+:extrapreds ((x7491))
+:extrapreds ((x7492))
+:extrapreds ((x7493))
+:extrapreds ((x7494))
+:extrapreds ((x7495))
+:extrapreds ((x7496))
+:extrapreds ((x7497))
+:extrapreds ((x7498))
+:extrapreds ((x7499))
+:extrapreds ((x7500))
+:extrapreds ((x7501))
+:extrapreds ((x7502))
+:extrapreds ((x7503))
+:extrapreds ((x7504))
+:extrapreds ((x7505))
+:extrapreds ((x7506))
+:extrapreds ((x7507))
+:extrapreds ((x7508))
+:extrapreds ((x7509))
+:extrapreds ((x7510))
+:extrapreds ((x7511))
+:extrapreds ((x7512))
+:extrapreds ((x7513))
+:extrapreds ((x7514))
+:extrapreds ((x7515))
+:extrapreds ((x7516))
+:extrapreds ((x7517))
+:extrapreds ((x7518))
+:extrapreds ((x7519))
+:extrapreds ((x7520))
+:extrapreds ((x7521))
+:extrapreds ((x7522))
+:extrapreds ((x7523))
+:extrapreds ((x7524))
+:extrapreds ((x7525))
+:extrapreds ((x7526))
+:extrapreds ((x7527))
+:extrapreds ((x7528))
+:extrapreds ((x7529))
+:extrapreds ((x7530))
+:extrapreds ((x7531))
+:extrapreds ((x7532))
+:extrapreds ((x7533))
+:extrapreds ((x7534))
+:extrapreds ((x7535))
+:extrapreds ((x7536))
+:extrapreds ((x7537))
+:extrapreds ((x7538))
+:extrapreds ((x7539))
+:extrapreds ((x7540))
+:extrapreds ((x7541))
+:extrapreds ((x7542))
+:extrapreds ((x7543))
+:extrapreds ((x7544))
+:extrapreds ((x7545))
+:extrapreds ((x7546))
+:extrapreds ((x7547))
+:extrapreds ((x7548))
+:extrapreds ((x7549))
+:extrapreds ((x7550))
+:extrapreds ((x7551))
+:extrapreds ((x7552))
+:extrapreds ((x7553))
+:extrapreds ((x7554))
+:extrapreds ((x7555))
+:extrapreds ((x7556))
+:extrapreds ((x7557))
+:extrapreds ((x7558))
+:extrapreds ((x7559))
+:extrapreds ((x7560))
+:extrapreds ((x7561))
+:extrapreds ((x7562))
+:extrapreds ((x7563))
+:extrapreds ((x7564))
+:extrapreds ((x7565))
+:extrapreds ((x7566))
+:extrapreds ((x7567))
+:extrapreds ((x7568))
+:extrapreds ((x7569))
+:extrapreds ((x7570))
+:extrapreds ((x7571))
+:extrapreds ((x7572))
+:extrapreds ((x7573))
+:extrapreds ((x7574))
+:extrapreds ((x7575))
+:extrapreds ((x7576))
+:extrapreds ((x7577))
+:extrapreds ((x7578))
+:extrapreds ((x7579))
+:extrapreds ((x7580))
+:extrapreds ((x7581))
+:extrapreds ((x7582))
+:extrapreds ((x7583))
+:extrapreds ((x7584))
+:extrapreds ((x7585))
+:extrapreds ((x7586))
+:extrapreds ((x7587))
+:extrapreds ((x7588))
+:extrapreds ((x7589))
+:extrapreds ((x7590))
+:extrapreds ((x7591))
+:extrapreds ((x7592))
+:extrapreds ((x7593))
+:extrapreds ((x7594))
+:extrapreds ((x7595))
+:extrapreds ((x7596))
+:extrapreds ((x7597))
+:extrapreds ((x7598))
+:extrapreds ((x7599))
+:extrapreds ((x7600))
+:extrapreds ((x7601))
+:extrapreds ((x7602))
+:extrapreds ((x7603))
+:extrapreds ((x7604))
+:extrapreds ((x7605))
+:extrapreds ((x7606))
+:extrapreds ((x7607))
+:extrapreds ((x7608))
+:extrapreds ((x7609))
+:extrapreds ((x7610))
+:extrapreds ((x7611))
+:extrapreds ((x7612))
+:extrapreds ((x7613))
+:extrapreds ((x7614))
+:extrapreds ((x7615))
+:extrapreds ((x7616))
+:extrapreds ((x7617))
+:extrapreds ((x7618))
+:extrapreds ((x7619))
+:extrapreds ((x7620))
+:extrapreds ((x7621))
+:extrapreds ((x7622))
+:extrapreds ((x7623))
+:extrapreds ((x7624))
+:extrapreds ((x7625))
+:extrapreds ((x7626))
+:extrapreds ((x7627))
+:extrapreds ((x7628))
+:extrapreds ((x7629))
+:extrapreds ((x7630))
+:extrapreds ((x7631))
+:extrapreds ((x7632))
+:extrapreds ((x7633))
+:extrapreds ((x7634))
+:extrapreds ((x7635))
+:extrapreds ((x7636))
+:extrapreds ((x7637))
+:extrapreds ((x7638))
+:extrapreds ((x7639))
+:extrapreds ((x7640))
+:extrapreds ((x7641))
+:extrapreds ((x7642))
+:extrapreds ((x7643))
+:extrapreds ((x7644))
+:extrapreds ((x7645))
+:extrapreds ((x7646))
+:extrapreds ((x7647))
+:extrapreds ((x7648))
+:extrapreds ((x7649))
+:extrapreds ((x7650))
+:extrapreds ((x7651))
+:extrapreds ((x7652))
+:extrapreds ((x7653))
+:extrapreds ((x7654))
+:extrapreds ((x7655))
+:extrapreds ((x7656))
+:extrapreds ((x7657))
+:extrapreds ((x7658))
+:extrapreds ((x7659))
+:extrapreds ((x7660))
+:extrapreds ((x7661))
+:extrapreds ((x7662))
+:extrapreds ((x7663))
+:extrapreds ((x7664))
+:extrapreds ((x7665))
+:extrapreds ((x7666))
+:extrapreds ((x7667))
+:extrapreds ((x7668))
+:extrapreds ((x7669))
+:extrapreds ((x7670))
+:extrapreds ((x7671))
+:extrapreds ((x7672))
+:extrapreds ((x7673))
+:extrapreds ((x7674))
+:extrapreds ((x7675))
+:extrapreds ((x7676))
+:extrapreds ((x7677))
+:extrapreds ((x7678))
+:extrapreds ((x7679))
+:extrapreds ((x7680))
+:extrapreds ((x7681))
+:extrapreds ((x7682))
+:extrapreds ((x7683))
+:extrapreds ((x7684))
+:extrapreds ((x7685))
+:extrapreds ((x7686))
+:extrapreds ((x7687))
+:extrapreds ((x7688))
+:extrapreds ((x7689))
+:extrapreds ((x7690))
+:extrapreds ((x7691))
+:extrapreds ((x7692))
+:extrapreds ((x7693))
+:extrapreds ((x7694))
+:extrapreds ((x7695))
+:extrapreds ((x7696))
+:extrapreds ((x7697))
+:extrapreds ((x7698))
+:extrapreds ((x7699))
+:extrapreds ((x7700))
+:extrapreds ((x7701))
+:extrapreds ((x7702))
+:extrapreds ((x7703))
+:extrapreds ((x7704))
+:extrapreds ((x7705))
+:extrapreds ((x7706))
+:extrapreds ((x7707))
+:extrapreds ((x7708))
+:extrapreds ((x7709))
+:extrapreds ((x7710))
+:extrapreds ((x7711))
+:extrapreds ((x7712))
+:extrapreds ((x7713))
+:extrapreds ((x7714))
+:extrapreds ((x7715))
+:extrapreds ((x7716))
+:extrapreds ((x7717))
+:extrapreds ((x7718))
+:extrapreds ((x7719))
+:extrapreds ((x7720))
+:extrapreds ((x7721))
+:extrapreds ((x7722))
+:extrapreds ((x7723))
+:extrapreds ((x7724))
+:extrapreds ((x7725))
+:extrapreds ((x7726))
+:extrapreds ((x7727))
+:extrapreds ((x7728))
+:extrapreds ((x7729))
+:extrapreds ((x7730))
+:extrapreds ((x7731))
+:extrapreds ((x7732))
+:extrapreds ((x7733))
+:extrapreds ((x7734))
+:extrapreds ((x7735))
+:extrapreds ((x7736))
+:extrapreds ((x7737))
+:extrapreds ((x7738))
+:extrapreds ((x7739))
+:extrapreds ((x7740))
+:extrapreds ((x7741))
+:extrapreds ((x7742))
+:extrapreds ((x7743))
+:extrapreds ((x7744))
+:extrapreds ((x7745))
+:extrapreds ((x7746))
+:extrapreds ((x7747))
+:extrapreds ((x7748))
+:extrapreds ((x7749))
+:extrapreds ((x7750))
+:extrapreds ((x7751))
+:extrapreds ((x7752))
+:extrapreds ((x7753))
+:extrapreds ((x7754))
+:extrapreds ((x7755))
+:extrapreds ((x7756))
+:extrapreds ((x7757))
+:extrapreds ((x7758))
+:extrapreds ((x7759))
+:extrapreds ((x7760))
+:extrapreds ((x7761))
+:extrapreds ((x7762))
+:extrapreds ((x7763))
+:extrapreds ((x7764))
+:extrapreds ((x7765))
+:extrapreds ((x7766))
+:extrapreds ((x7767))
+:extrapreds ((x7768))
+:extrapreds ((x7769))
+:extrapreds ((x7770))
+:extrapreds ((x7771))
+:extrapreds ((x7772))
+:extrapreds ((x7773))
+:extrapreds ((x7774))
+:extrapreds ((x7775))
+:extrapreds ((x7776))
+:extrapreds ((x7777))
+:extrapreds ((x7778))
+:extrapreds ((x7779))
+:extrapreds ((x7780))
+:extrapreds ((x7781))
+:extrapreds ((x7782))
+:extrapreds ((x7783))
+:extrapreds ((x7784))
+:extrapreds ((x7785))
+:extrapreds ((x7786))
+:extrapreds ((x7787))
+:extrapreds ((x7788))
+:extrapreds ((x7789))
+:extrapreds ((x7790))
+:extrapreds ((x7791))
+:extrapreds ((x7792))
+:extrapreds ((x7793))
+:extrapreds ((x7794))
+:extrapreds ((x7795))
+:extrapreds ((x7796))
+:extrapreds ((x7797))
+:extrapreds ((x7798))
+:extrapreds ((x7799))
+:extrapreds ((x7800))
+:extrapreds ((x7801))
+:extrapreds ((x7802))
+:extrapreds ((x7803))
+:extrapreds ((x7804))
+:extrapreds ((x7805))
+:extrapreds ((x7806))
+:extrapreds ((x7807))
+:extrapreds ((x7808))
+:extrapreds ((x7809))
+:extrapreds ((x7810))
+:extrapreds ((x7811))
+:extrapreds ((x7812))
+:extrapreds ((x7813))
+:extrapreds ((x7814))
+:extrapreds ((x7815))
+:extrapreds ((x7816))
+:extrapreds ((x7817))
+:extrapreds ((x7818))
+:extrapreds ((x7819))
+:extrapreds ((x7820))
+:extrapreds ((x7821))
+:extrapreds ((x7822))
+:extrapreds ((x7823))
+:extrapreds ((x7824))
+:extrapreds ((x7825))
+:extrapreds ((x7826))
+:extrapreds ((x7827))
+:extrapreds ((x7828))
+:extrapreds ((x7829))
+:extrapreds ((x7830))
+:extrapreds ((x7831))
+:extrapreds ((x7832))
+:extrapreds ((x7833))
+:extrapreds ((x7834))
+:extrapreds ((x7835))
+:extrapreds ((x7836))
+:extrapreds ((x7837))
+:extrapreds ((x7838))
+:extrapreds ((x7839))
+:extrapreds ((x7840))
+:extrapreds ((x7841))
+:extrapreds ((x7842))
+:extrapreds ((x7843))
+:extrapreds ((x7844))
+:extrapreds ((x7845))
+:extrapreds ((x7846))
+:extrapreds ((x7847))
+:extrapreds ((x7848))
+:extrapreds ((x7849))
+:extrapreds ((x7850))
+:extrapreds ((x7851))
+:extrapreds ((x7852))
+:extrapreds ((x7853))
+:extrapreds ((x7854))
+:extrapreds ((x7855))
+:extrapreds ((x7856))
+:extrapreds ((x7857))
+:extrapreds ((x7858))
+:extrapreds ((x7859))
+:extrapreds ((x7860))
+:extrapreds ((x7861))
+:extrapreds ((x7862))
+:extrapreds ((x7863))
+:extrapreds ((x7864))
+:extrapreds ((x7865))
+:extrapreds ((x7866))
+:extrapreds ((x7867))
+:extrapreds ((x7868))
+:extrapreds ((x7869))
+:extrapreds ((x7870))
+:extrapreds ((x7871))
+:extrapreds ((x7872))
+:extrapreds ((x7873))
+:extrapreds ((x7874))
+:extrapreds ((x7875))
+:extrapreds ((x7876))
+:extrapreds ((x7877))
+:extrapreds ((x7878))
+:extrapreds ((x7879))
+:extrapreds ((x7880))
+:extrapreds ((x7881))
+:extrapreds ((x7882))
+:extrapreds ((x7883))
+:extrapreds ((x7884))
+:extrapreds ((x7885))
+:extrapreds ((x7886))
+:extrapreds ((x7887))
+:extrapreds ((x7888))
+:extrapreds ((x7889))
+:extrapreds ((x7890))
+:extrapreds ((x7891))
+:extrapreds ((x7892))
+:extrapreds ((x7893))
+:extrapreds ((x7894))
+:extrapreds ((x7895))
+:extrapreds ((x7896))
+:extrapreds ((x7897))
+:extrapreds ((x7898))
+:extrapreds ((x7899))
+:extrapreds ((x7900))
+:extrapreds ((x7901))
+:extrapreds ((x7902))
+:extrapreds ((x7903))
+:extrapreds ((x7904))
+:extrapreds ((x7905))
+:extrapreds ((x7906))
+:extrapreds ((x7907))
+:extrapreds ((x7908))
+:extrapreds ((x7909))
+:extrapreds ((x7910))
+:extrapreds ((x7911))
+:extrapreds ((x7912))
+:extrapreds ((x7913))
+:extrapreds ((x7914))
+:extrapreds ((x7915))
+:extrapreds ((x7916))
+:extrapreds ((x7917))
+:extrapreds ((x7918))
+:extrapreds ((x7919))
+:extrapreds ((x7920))
+:extrapreds ((x7921))
+:extrapreds ((x7922))
+:extrapreds ((x7923))
+:extrapreds ((x7924))
+:extrapreds ((x7925))
+:extrapreds ((x7926))
+:extrapreds ((x7927))
+:extrapreds ((x7928))
+:extrapreds ((x7929))
+:extrapreds ((x7930))
+:extrapreds ((x7931))
+:extrapreds ((x7932))
+:extrapreds ((x7933))
+:extrapreds ((x7934))
+:extrapreds ((x7935))
+:extrapreds ((x7936))
+:extrapreds ((x7937))
+:extrapreds ((x7938))
+:extrapreds ((x7939))
+:extrapreds ((x7940))
+:extrapreds ((x7941))
+:extrapreds ((x7942))
+:extrapreds ((x7943))
+:extrapreds ((x7944))
+:extrapreds ((x7945))
+:extrapreds ((x7946))
+:extrapreds ((x7947))
+:extrapreds ((x7948))
+:extrapreds ((x7949))
+:extrapreds ((x7950))
+:extrapreds ((x7951))
+:extrapreds ((x7952))
+:extrapreds ((x7953))
+:extrapreds ((x7954))
+:extrapreds ((x7955))
+:extrapreds ((x7956))
+:extrapreds ((x7957))
+:extrapreds ((x7958))
+:extrapreds ((x7959))
+:extrapreds ((x7960))
+:extrapreds ((x7961))
+:extrapreds ((x7962))
+:extrapreds ((x7963))
+:extrapreds ((x7964))
+:extrapreds ((x7965))
+:extrapreds ((x7966))
+:extrapreds ((x7967))
+:extrapreds ((x7968))
+:extrapreds ((x7969))
+:extrapreds ((x7970))
+:extrapreds ((x7971))
+:extrapreds ((x7972))
+:extrapreds ((x7973))
+:extrapreds ((x7974))
+:extrapreds ((x7975))
+:extrapreds ((x7976))
+:extrapreds ((x7977))
+:extrapreds ((x7978))
+:extrapreds ((x7979))
+:extrapreds ((x7980))
+:extrapreds ((x7981))
+:extrapreds ((x7982))
+:extrapreds ((x7983))
+:extrapreds ((x7984))
+:extrapreds ((x7985))
+:extrapreds ((x7986))
+:extrapreds ((x7987))
+:extrapreds ((x7988))
+:extrapreds ((x7989))
+:extrapreds ((x7990))
+:extrapreds ((x7991))
+:extrapreds ((x7992))
+:extrapreds ((x7993))
+:extrapreds ((x7994))
+:extrapreds ((x7995))
+:extrapreds ((x7996))
+:extrapreds ((x7997))
+:extrapreds ((x7998))
+:extrapreds ((x7999))
+:extrapreds ((x8000))
+:extrapreds ((x8001))
+:extrapreds ((x8002))
+:extrapreds ((x8003))
+:extrapreds ((x8004))
+:extrapreds ((x8005))
+:extrapreds ((x8006))
+:extrapreds ((x8007))
+:extrapreds ((x8008))
+:extrapreds ((x8009))
+:extrapreds ((x8010))
+:extrapreds ((x8011))
+:extrapreds ((x8012))
+:extrapreds ((x8013))
+:extrapreds ((x8014))
+:extrapreds ((x8015))
+:extrapreds ((x8016))
+:extrapreds ((x8017))
+:extrapreds ((x8018))
+:extrapreds ((x8019))
+:extrapreds ((x8020))
+:extrapreds ((x8021))
+:extrapreds ((x8022))
+:extrapreds ((x8023))
+:extrapreds ((x8024))
+:extrapreds ((x8025))
+:extrapreds ((x8026))
+:extrapreds ((x8027))
+:extrapreds ((x8028))
+:extrapreds ((x8029))
+:extrapreds ((x8030))
+:extrapreds ((x8031))
+:extrapreds ((x8032))
+:extrapreds ((x8033))
+:extrapreds ((x8034))
+:extrapreds ((x8035))
+:extrapreds ((x8036))
+:extrapreds ((x8037))
+:extrapreds ((x8038))
+:extrapreds ((x8039))
+:extrapreds ((x8040))
+:extrapreds ((x8041))
+:extrapreds ((x8042))
+:extrapreds ((x8043))
+:extrapreds ((x8044))
+:extrapreds ((x8045))
+:extrapreds ((x8046))
+:extrapreds ((x8047))
+:extrapreds ((x8048))
+:extrapreds ((x8049))
+:extrapreds ((x8050))
+:extrapreds ((x8051))
+:extrapreds ((x8052))
+:extrapreds ((x8053))
+:extrapreds ((x8054))
+:extrapreds ((x8055))
+:extrapreds ((x8056))
+:extrapreds ((x8057))
+:extrapreds ((x8058))
+:extrapreds ((x8059))
+:extrapreds ((x8060))
+:extrapreds ((x8061))
+:extrapreds ((x8062))
+:extrapreds ((x8063))
+:extrapreds ((x8064))
+:extrapreds ((x8065))
+:extrapreds ((x8066))
+:extrapreds ((x8067))
+:extrapreds ((x8068))
+:extrapreds ((x8069))
+:extrapreds ((x8070))
+:extrapreds ((x8071))
+:extrapreds ((x8072))
+:extrapreds ((x8073))
+:extrapreds ((x8074))
+:extrapreds ((x8075))
+:extrapreds ((x8076))
+:extrapreds ((x8077))
+:extrapreds ((x8078))
+:extrapreds ((x8079))
+:extrapreds ((x8080))
+:extrapreds ((x8081))
+:extrapreds ((x8082))
+:extrapreds ((x8083))
+:extrapreds ((x8084))
+:extrapreds ((x8085))
+:extrapreds ((x8086))
+:extrapreds ((x8087))
+:extrapreds ((x8088))
+:extrapreds ((x8089))
+:extrapreds ((x8090))
+:extrapreds ((x8091))
+:extrapreds ((x8092))
+:extrapreds ((x8093))
+:extrapreds ((x8094))
+:extrapreds ((x8095))
+:extrapreds ((x8096))
+:extrapreds ((x8097))
+:extrapreds ((x8098))
+:extrapreds ((x8099))
+:extrapreds ((x8100))
+:extrapreds ((x8101))
+:extrapreds ((x8102))
+:extrapreds ((x8103))
+:extrapreds ((x8104))
+:extrapreds ((x8105))
+:extrapreds ((x8106))
+:extrapreds ((x8107))
+:extrapreds ((x8108))
+:extrapreds ((x8109))
+:extrapreds ((x8110))
+:extrapreds ((x8111))
+:extrapreds ((x8112))
+:extrapreds ((x8113))
+:extrapreds ((x8114))
+:extrapreds ((x8115))
+:extrapreds ((x8116))
+:extrapreds ((x8117))
+:extrapreds ((x8118))
+:extrapreds ((x8119))
+:extrapreds ((x8120))
+:extrapreds ((x8121))
+:extrapreds ((x8122))
+:extrapreds ((x8123))
+:extrapreds ((x8124))
+:extrapreds ((x8125))
+:extrapreds ((x8126))
+:extrapreds ((x8127))
+:extrapreds ((x8128))
+:extrapreds ((x8129))
+:extrapreds ((x8130))
+:extrapreds ((x8131))
+:extrapreds ((x8132))
+:extrapreds ((x8133))
+:extrapreds ((x8134))
+:extrapreds ((x8135))
+:extrapreds ((x8136))
+:extrapreds ((x8137))
+:extrapreds ((x8138))
+:extrapreds ((x8139))
+:extrapreds ((x8140))
+:extrapreds ((x8141))
+:extrapreds ((x8142))
+:extrapreds ((x8143))
+:extrapreds ((x8144))
+:extrapreds ((x8145))
+:extrapreds ((x8146))
+:extrapreds ((x8147))
+:extrapreds ((x8148))
+:extrapreds ((x8149))
+:extrapreds ((x8150))
+:extrapreds ((x8151))
+:extrapreds ((x8152))
+:extrapreds ((x8153))
+:extrapreds ((x8154))
+:extrapreds ((x8155))
+:extrapreds ((x8156))
+:extrapreds ((x8157))
+:extrapreds ((x8158))
+:extrapreds ((x8159))
+:extrapreds ((x8160))
+:extrapreds ((x8161))
+:extrapreds ((x8162))
+:extrapreds ((x8163))
+:extrapreds ((x8164))
+:extrapreds ((x8165))
+:extrapreds ((x8166))
+:extrapreds ((x8167))
+:extrapreds ((x8168))
+:extrapreds ((x8169))
+:extrapreds ((x8170))
+:extrapreds ((x8171))
+:extrapreds ((x8172))
+:extrapreds ((x8173))
+:extrapreds ((x8174))
+:extrapreds ((x8175))
+:extrapreds ((x8176))
+:extrapreds ((x8177))
+:extrapreds ((x8178))
+:extrapreds ((x8179))
+:extrapreds ((x8180))
+:extrapreds ((x8181))
+:extrapreds ((x8182))
+:extrapreds ((x8183))
+:extrapreds ((x8184))
+:extrapreds ((x8185))
+:extrapreds ((x8186))
+:extrapreds ((x8187))
+:extrapreds ((x8188))
+:extrapreds ((x8189))
+:extrapreds ((x8190))
+:extrapreds ((x8191))
+:extrapreds ((x8192))
+:extrapreds ((x8193))
+:extrapreds ((x8194))
+:extrapreds ((x8195))
+:extrapreds ((x8196))
+:extrapreds ((x8197))
+:extrapreds ((x8198))
+:extrapreds ((x8199))
+:extrapreds ((x8200))
+:extrapreds ((x8201))
+:extrapreds ((x8202))
+:extrapreds ((x8203))
+:extrapreds ((x8204))
+:extrapreds ((x8205))
+:extrapreds ((x8206))
+:extrapreds ((x8207))
+:extrapreds ((x8208))
+:extrapreds ((x8209))
+:extrapreds ((x8210))
+:extrapreds ((x8211))
+:extrapreds ((x8212))
+:extrapreds ((x8213))
+:extrapreds ((x8214))
+:extrapreds ((x8215))
+:extrapreds ((x8216))
+:extrapreds ((x8217))
+:extrapreds ((x8218))
+:extrapreds ((x8219))
+:extrapreds ((x8220))
+:extrapreds ((x8221))
+:extrapreds ((x8222))
+:extrapreds ((x8223))
+:extrapreds ((x8224))
+:extrapreds ((x8225))
+:extrapreds ((x8226))
+:extrapreds ((x8227))
+:extrapreds ((x8228))
+:extrapreds ((x8229))
+:extrapreds ((x8230))
+:extrapreds ((x8231))
+:extrapreds ((x8232))
+:extrapreds ((x8233))
+:extrapreds ((x8234))
+:extrapreds ((x8235))
+:extrapreds ((x8236))
+:extrapreds ((x8237))
+:extrapreds ((x8238))
+:extrapreds ((x8239))
+:extrapreds ((x8240))
+:extrapreds ((x8241))
+:extrapreds ((x8242))
+:extrapreds ((x8243))
+:extrapreds ((x8244))
+:extrapreds ((x8245))
+:extrapreds ((x8246))
+:extrapreds ((x8247))
+:extrapreds ((x8248))
+:extrapreds ((x8249))
+:extrapreds ((x8250))
+:extrapreds ((x8251))
+:extrapreds ((x8252))
+:extrapreds ((x8253))
+:extrapreds ((x8254))
+:extrapreds ((x8255))
+:extrapreds ((x8256))
+:extrapreds ((x8257))
+:extrapreds ((x8258))
+:extrapreds ((x8259))
+:extrapreds ((x8260))
+:extrapreds ((x8261))
+:extrapreds ((x8262))
+:extrapreds ((x8263))
+:extrapreds ((x8264))
+:extrapreds ((x8265))
+:extrapreds ((x8266))
+:extrapreds ((x8267))
+:extrapreds ((x8268))
+:extrapreds ((x8269))
+:extrapreds ((x8270))
+:extrapreds ((x8271))
+:extrapreds ((x8272))
+:extrapreds ((x8273))
+:extrapreds ((x8274))
+:extrapreds ((x8275))
+:extrapreds ((x8276))
+:extrapreds ((x8277))
+:extrapreds ((x8278))
+:extrapreds ((x8279))
+:extrapreds ((x8280))
+:extrapreds ((x8281))
+:extrapreds ((x8282))
+:extrapreds ((x8283))
+:extrapreds ((x8284))
+:extrapreds ((x8285))
+:extrapreds ((x8286))
+:extrapreds ((x8287))
+:extrapreds ((x8288))
+:extrapreds ((x8289))
+:extrapreds ((x8290))
+:extrapreds ((x8291))
+:extrapreds ((x8292))
+:extrapreds ((x8293))
+:extrapreds ((x8294))
+:extrapreds ((x8295))
+:extrapreds ((x8296))
+:extrapreds ((x8297))
+:extrapreds ((x8298))
+:extrapreds ((x8299))
+:extrapreds ((x8300))
+:extrapreds ((x8301))
+:extrapreds ((x8302))
+:extrapreds ((x8303))
+:extrapreds ((x8304))
+:extrapreds ((x8305))
+:extrapreds ((x8306))
+:extrapreds ((x8307))
+:extrapreds ((x8308))
+:extrapreds ((x8309))
+:extrapreds ((x8310))
+:extrapreds ((x8311))
+:extrapreds ((x8312))
+:extrapreds ((x8313))
+:extrapreds ((x8314))
+:extrapreds ((x8315))
+:extrapreds ((x8316))
+:extrapreds ((x8317))
+:extrapreds ((x8318))
+:extrapreds ((x8319))
+:extrapreds ((x8320))
+:extrapreds ((x8321))
+:extrapreds ((x8322))
+:extrapreds ((x8323))
+:extrapreds ((x8324))
+:extrapreds ((x8325))
+:extrapreds ((x8326))
+:extrapreds ((x8327))
+:extrapreds ((x8328))
+:extrapreds ((x8329))
+:extrapreds ((x8330))
+:extrapreds ((x8331))
+:extrapreds ((x8332))
+:extrapreds ((x8333))
+:extrapreds ((x8334))
+:extrapreds ((x8335))
+:extrapreds ((x8336))
+:extrapreds ((x8337))
+:extrapreds ((x8338))
+:extrapreds ((x8339))
+:extrapreds ((x8340))
+:extrapreds ((x8341))
+:extrapreds ((x8342))
+:extrapreds ((x8343))
+:extrapreds ((x8344))
+:extrapreds ((x8345))
+:extrapreds ((x8346))
+:extrapreds ((x8347))
+:extrapreds ((x8348))
+:extrapreds ((x8349))
+:extrapreds ((x8350))
+:extrapreds ((x8351))
+:extrapreds ((x8352))
+:extrapreds ((x8353))
+:extrapreds ((x8354))
+:extrapreds ((x8355))
+:extrapreds ((x8356))
+:extrapreds ((x8357))
+:extrapreds ((x8358))
+:extrapreds ((x8359))
+:extrapreds ((x8360))
+:extrapreds ((x8361))
+:extrapreds ((x8362))
+:extrapreds ((x8363))
+:extrapreds ((x8364))
+:extrapreds ((x8365))
+:extrapreds ((x8366))
+:extrapreds ((x8367))
+:extrapreds ((x8368))
+:extrapreds ((x8369))
+:extrapreds ((x8370))
+:extrapreds ((x8371))
+:extrapreds ((x8372))
+:extrapreds ((x8373))
+:extrapreds ((x8374))
+:extrapreds ((x8375))
+:extrapreds ((x8376))
+:extrapreds ((x8377))
+:extrapreds ((x8378))
+:extrapreds ((x8379))
+:extrapreds ((x8380))
+:extrapreds ((x8381))
+:extrapreds ((x8382))
+:extrapreds ((x8383))
+:extrapreds ((x8384))
+:extrapreds ((x8385))
+:extrapreds ((x8386))
+:extrapreds ((x8387))
+:extrapreds ((x8388))
+:extrapreds ((x8389))
+:extrapreds ((x8390))
+:extrapreds ((x8391))
+:extrapreds ((x8392))
+:extrapreds ((x8393))
+:extrapreds ((x8394))
+:extrapreds ((x8395))
+:extrapreds ((x8396))
+:extrapreds ((x8397))
+:extrapreds ((x8398))
+:extrapreds ((x8399))
+:extrapreds ((x8400))
+:extrapreds ((x8401))
+:extrapreds ((x8402))
+:extrapreds ((x8403))
+:extrapreds ((x8404))
+:extrapreds ((x8405))
+:extrapreds ((x8406))
+:extrapreds ((x8407))
+:extrapreds ((x8408))
+:extrapreds ((x8409))
+:extrapreds ((x8410))
+:extrapreds ((x8411))
+:extrapreds ((x8412))
+:extrapreds ((x8413))
+:extrapreds ((x8414))
+:extrapreds ((x8415))
+:extrapreds ((x8416))
+:extrapreds ((x8417))
+:extrapreds ((x8418))
+:extrapreds ((x8419))
+:extrapreds ((x8420))
+:extrapreds ((x8421))
+:extrapreds ((x8422))
+:extrapreds ((x8423))
+:extrapreds ((x8424))
+:extrapreds ((x8425))
+:extrapreds ((x8426))
+:extrapreds ((x8427))
+:extrapreds ((x8428))
+:extrapreds ((x8429))
+:extrapreds ((x8430))
+:extrapreds ((x8431))
+:extrapreds ((x8432))
+:extrapreds ((x8433))
+:extrapreds ((x8434))
+:extrapreds ((x8435))
+:extrapreds ((x8436))
+:extrapreds ((x8437))
+:extrapreds ((x8438))
+:extrapreds ((x8439))
+:extrapreds ((x8440))
+:extrapreds ((x8441))
+:extrapreds ((x8442))
+:extrapreds ((x8443))
+:extrapreds ((x8444))
+:extrapreds ((x8445))
+:extrapreds ((x8446))
+:extrapreds ((x8447))
+:extrapreds ((x8448))
+:extrapreds ((x8449))
+:extrapreds ((x8450))
+:extrapreds ((x8451))
+:extrapreds ((x8452))
+:extrapreds ((x8453))
+:extrapreds ((x8454))
+:extrapreds ((x8455))
+:extrapreds ((x8456))
+:extrapreds ((x8457))
+:extrapreds ((x8458))
+:extrapreds ((x8459))
+:extrapreds ((x8460))
+:extrapreds ((x8461))
+:extrapreds ((x8462))
+:extrapreds ((x8463))
+:extrapreds ((x8464))
+:extrapreds ((x8465))
+:extrapreds ((x8466))
+:extrapreds ((x8467))
+:extrapreds ((x8468))
+:extrapreds ((x8469))
+:extrapreds ((x8470))
+:extrapreds ((x8471))
+:extrapreds ((x8472))
+:extrapreds ((x8473))
+:extrapreds ((x8474))
+:extrapreds ((x8475))
+:extrapreds ((x8476))
+:extrapreds ((x8477))
+:extrapreds ((x8478))
+:extrapreds ((x8479))
+:extrapreds ((x8480))
+:extrapreds ((x8481))
+:extrapreds ((x8482))
+:extrapreds ((x8483))
+:extrapreds ((x8484))
+:extrapreds ((x8485))
+:extrapreds ((x8486))
+:extrapreds ((x8487))
+:extrapreds ((x8488))
+:extrapreds ((x8489))
+:extrapreds ((x8490))
+:extrapreds ((x8491))
+:extrapreds ((x8492))
+:extrapreds ((x8493))
+:extrapreds ((x8494))
+:extrapreds ((x8495))
+:extrapreds ((x8496))
+:extrapreds ((x8497))
+:extrapreds ((x8498))
+:extrapreds ((x8499))
+:extrapreds ((x8500))
+:extrapreds ((x8501))
+:extrapreds ((x8502))
+:extrapreds ((x8503))
+:extrapreds ((x8504))
+:extrapreds ((x8505))
+:extrapreds ((x8506))
+:extrapreds ((x8507))
+:extrapreds ((x8508))
+:extrapreds ((x8509))
+:extrapreds ((x8510))
+:extrapreds ((x8511))
+:extrapreds ((x8512))
+:extrapreds ((x8513))
+:extrapreds ((x8514))
+:extrapreds ((x8515))
+:extrapreds ((x8516))
+:extrapreds ((x8517))
+:extrapreds ((x8518))
+:extrapreds ((x8519))
+:extrapreds ((x8520))
+:extrapreds ((x8521))
+:extrapreds ((x8522))
+:extrapreds ((x8523))
+:extrapreds ((x8524))
+:extrapreds ((x8525))
+:extrapreds ((x8526))
+:extrapreds ((x8527))
+:extrapreds ((x8528))
+:extrapreds ((x8529))
+:extrapreds ((x8530))
+:extrapreds ((x8531))
+:extrapreds ((x8532))
+:extrapreds ((x8533))
+:extrapreds ((x8534))
+:extrapreds ((x8535))
+:extrapreds ((x8536))
+:extrapreds ((x8537))
+:extrapreds ((x8538))
+:extrapreds ((x8539))
+:extrapreds ((x8540))
+:extrapreds ((x8541))
+:extrapreds ((x8542))
+:extrapreds ((x8543))
+:extrapreds ((x8544))
+:extrapreds ((x8545))
+:extrapreds ((x8546))
+:extrapreds ((x8547))
+:extrapreds ((x8548))
+:extrapreds ((x8549))
+:extrapreds ((x8550))
+:extrapreds ((x8551))
+:extrapreds ((x8552))
+:extrapreds ((x8553))
+:extrapreds ((x8554))
+:extrapreds ((x8555))
+:extrapreds ((x8556))
+:extrapreds ((x8557))
+:extrapreds ((x8558))
+:extrapreds ((x8559))
+:extrapreds ((x8560))
+:extrapreds ((x8561))
+:extrapreds ((x8562))
+:extrapreds ((x8563))
+:extrapreds ((x8564))
+:extrapreds ((x8565))
+:extrapreds ((x8566))
+:extrapreds ((x8567))
+:extrapreds ((x8568))
+:extrapreds ((x8569))
+:extrapreds ((x8570))
+:extrapreds ((x8571))
+:extrapreds ((x8572))
+:extrapreds ((x8573))
+:extrapreds ((x8574))
+:extrapreds ((x8575))
+:extrapreds ((x8576))
+:extrapreds ((x8577))
+:extrapreds ((x8578))
+:extrapreds ((x8579))
+:extrapreds ((x8580))
+:extrapreds ((x8581))
+:extrapreds ((x8582))
+:extrapreds ((x8583))
+:extrapreds ((x8584))
+:extrapreds ((x8585))
+:extrapreds ((x8586))
+:extrapreds ((x8587))
+:extrapreds ((x8588))
+:extrapreds ((x8589))
+:extrapreds ((x8590))
+:extrapreds ((x8591))
+:extrapreds ((x8592))
+:extrapreds ((x8593))
+:extrapreds ((x8594))
+:extrapreds ((x8595))
+:extrapreds ((x8596))
+:extrapreds ((x8597))
+:extrapreds ((x8598))
+:extrapreds ((x8599))
+:extrapreds ((x8600))
+:extrapreds ((x8601))
+:extrapreds ((x8602))
+:extrapreds ((x8603))
+:extrapreds ((x8604))
+:extrapreds ((x8605))
+:extrapreds ((x8606))
+:extrapreds ((x8607))
+:extrapreds ((x8608))
+:extrapreds ((x8609))
+:extrapreds ((x8610))
+:extrapreds ((x8611))
+:extrapreds ((x8612))
+:extrapreds ((x8613))
+:extrapreds ((x8614))
+:extrapreds ((x8615))
+:extrapreds ((x8616))
+:extrapreds ((x8617))
+:extrapreds ((x8618))
+:extrapreds ((x8619))
+:extrapreds ((x8620))
+:extrapreds ((x8621))
+:extrapreds ((x8622))
+:extrapreds ((x8623))
+:extrapreds ((x8624))
+:extrapreds ((x8625))
+:extrapreds ((x8626))
+:extrapreds ((x8627))
+:extrapreds ((x8628))
+:extrapreds ((x8629))
+:extrapreds ((x8630))
+:extrapreds ((x8631))
+:extrapreds ((x8632))
+:extrapreds ((x8633))
+:extrapreds ((x8634))
+:extrapreds ((x8635))
+:extrapreds ((x8636))
+:extrapreds ((x8637))
+:extrapreds ((x8638))
+:extrapreds ((x8639))
+:extrapreds ((x8640))
+:extrapreds ((x8641))
+:extrapreds ((x8642))
+:extrapreds ((x8643))
+:extrapreds ((x8644))
+:extrapreds ((x8645))
+:extrapreds ((x8646))
+:extrapreds ((x8647))
+:extrapreds ((x8648))
+:extrapreds ((x8649))
+:extrapreds ((x8650))
+:extrapreds ((x8651))
+:extrapreds ((x8652))
+:extrapreds ((x8653))
+:extrapreds ((x8654))
+:extrapreds ((x8655))
+:extrapreds ((x8656))
+:extrapreds ((x8657))
+:extrapreds ((x8658))
+:extrapreds ((x8659))
+:extrapreds ((x8660))
+:extrapreds ((x8661))
+:extrapreds ((x8662))
+:extrapreds ((x8663))
+:extrapreds ((x8664))
+:extrapreds ((x8665))
+:extrapreds ((x8666))
+:extrapreds ((x8667))
+:extrapreds ((x8668))
+:extrapreds ((x8669))
+:extrapreds ((x8670))
+:extrapreds ((x8671))
+:extrapreds ((x8672))
+:extrapreds ((x8673))
+:extrapreds ((x8674))
+:extrapreds ((x8675))
+:extrapreds ((x8676))
+:extrapreds ((x8677))
+:extrapreds ((x8678))
+:extrapreds ((x8679))
+:extrapreds ((x8680))
+:extrapreds ((x8681))
+:extrapreds ((x8682))
+:extrapreds ((x8683))
+:extrapreds ((x8684))
+:extrapreds ((x8685))
+:extrapreds ((x8686))
+:extrapreds ((x8687))
+:extrapreds ((x8688))
+:extrapreds ((x8689))
+:extrapreds ((x8690))
+:extrapreds ((x8691))
+:extrapreds ((x8692))
+:extrapreds ((x8693))
+:extrapreds ((x8694))
+:extrapreds ((x8695))
+:extrapreds ((x8696))
+:extrapreds ((x8697))
+:extrapreds ((x8698))
+:extrapreds ((x8699))
+:extrapreds ((x8700))
+:extrapreds ((x8701))
+:extrapreds ((x8702))
+:extrapreds ((x8703))
+:extrapreds ((x8704))
+:extrapreds ((x8705))
+:extrapreds ((x8706))
+:extrapreds ((x8707))
+:extrapreds ((x8708))
+:extrapreds ((x8709))
+:extrapreds ((x8710))
+:extrapreds ((x8711))
+:extrapreds ((x8712))
+:extrapreds ((x8713))
+:extrapreds ((x8714))
+:extrapreds ((x8715))
+:extrapreds ((x8716))
+:extrapreds ((x8717))
+:extrapreds ((x8718))
+:extrapreds ((x8719))
+:extrapreds ((x8720))
+:extrapreds ((x8721))
+:extrapreds ((x8722))
+:extrapreds ((x8723))
+:extrapreds ((x8724))
+:extrapreds ((x8725))
+:extrapreds ((x8726))
+:extrapreds ((x8727))
+:extrapreds ((x8728))
+:extrapreds ((x8729))
+:extrapreds ((x8730))
+:extrapreds ((x8731))
+:extrapreds ((x8732))
+:extrapreds ((x8733))
+:extrapreds ((x8734))
+:extrapreds ((x8735))
+:extrapreds ((x8736))
+:extrapreds ((x8737))
+:extrapreds ((x8738))
+:extrapreds ((x8739))
+:extrapreds ((x8740))
+:extrapreds ((x8741))
+:extrapreds ((x8742))
+:extrapreds ((x8743))
+:extrapreds ((x8744))
+:extrapreds ((x8745))
+:extrapreds ((x8746))
+:extrapreds ((x8747))
+:extrapreds ((x8748))
+:extrapreds ((x8749))
+:extrapreds ((x8750))
+:extrapreds ((x8751))
+:extrapreds ((x8752))
+:extrapreds ((x8753))
+:extrapreds ((x8754))
+:extrapreds ((x8755))
+:extrapreds ((x8756))
+:extrapreds ((x8757))
+:extrapreds ((x8758))
+:extrapreds ((x8759))
+:extrapreds ((x8760))
+:extrapreds ((x8761))
+:extrapreds ((x8762))
+:extrapreds ((x8763))
+:extrapreds ((x8764))
+:extrapreds ((x8765))
+:extrapreds ((x8766))
+:extrapreds ((x8767))
+:extrapreds ((x8768))
+:extrapreds ((x8769))
+:extrapreds ((x8770))
+:extrapreds ((x8771))
+:extrapreds ((x8772))
+:extrapreds ((x8773))
+:extrapreds ((x8774))
+:extrapreds ((x8775))
+:extrapreds ((x8776))
+:extrapreds ((x8777))
+:extrapreds ((x8778))
+:extrapreds ((x8779))
+:extrapreds ((x8780))
+:extrapreds ((x8781))
+:extrapreds ((x8782))
+:extrapreds ((x8783))
+:extrapreds ((x8784))
+:extrapreds ((x8785))
+:extrapreds ((x8786))
+:extrapreds ((x8787))
+:extrapreds ((x8788))
+:extrapreds ((x8789))
+:extrapreds ((x8790))
+:extrapreds ((x8791))
+:extrapreds ((x8792))
+:extrapreds ((x8793))
+:extrapreds ((x8794))
+:extrapreds ((x8795))
+:extrapreds ((x8796))
+:extrapreds ((x8797))
+:extrapreds ((x8798))
+:extrapreds ((x8799))
+:extrapreds ((x8800))
+:extrapreds ((x8801))
+:extrapreds ((x8802))
+:extrapreds ((x8803))
+:extrapreds ((x8804))
+:extrapreds ((x8805))
+:extrapreds ((x8806))
+:extrapreds ((x8807))
+:extrapreds ((x8808))
+:extrapreds ((x8809))
+:extrapreds ((x8810))
+:extrapreds ((x8811))
+:extrapreds ((x8812))
+:extrapreds ((x8813))
+:extrapreds ((x8814))
+:extrapreds ((x8815))
+:extrapreds ((x8816))
+:extrapreds ((x8817))
+:extrapreds ((x8818))
+:extrapreds ((x8819))
+:extrapreds ((x8820))
+:extrapreds ((x8821))
+:extrapreds ((x8822))
+:extrapreds ((x8823))
+:extrapreds ((x8824))
+:extrapreds ((x8825))
+:extrapreds ((x8826))
+:extrapreds ((x8827))
+:extrapreds ((x8828))
+:extrapreds ((x8829))
+:extrapreds ((x8830))
+:extrapreds ((x8831))
+:extrapreds ((x8832))
+:extrapreds ((x8833))
+:extrapreds ((x8834))
+:extrapreds ((x8835))
+:extrapreds ((x8836))
+:extrapreds ((x8837))
+:extrapreds ((x8838))
+:extrapreds ((x8839))
+:extrapreds ((x8840))
+:extrapreds ((x8841))
+:extrapreds ((x8842))
+:extrapreds ((x8843))
+:extrapreds ((x8844))
+:extrapreds ((x8845))
+:extrapreds ((x8846))
+:extrapreds ((x8847))
+:extrapreds ((x8848))
+:extrapreds ((x8849))
+:extrapreds ((x8850))
+:extrapreds ((x8851))
+:extrapreds ((x8852))
+:extrapreds ((x8853))
+:extrapreds ((x8854))
+:extrapreds ((x8855))
+:extrapreds ((x8856))
+:extrapreds ((x8857))
+:extrapreds ((x8858))
+:extrapreds ((x8859))
+:extrapreds ((x8860))
+:extrapreds ((x8861))
+:extrapreds ((x8862))
+:extrapreds ((x8863))
+:extrapreds ((x8864))
+:extrapreds ((x8865))
+:extrapreds ((x8866))
+:extrapreds ((x8867))
+:extrapreds ((x8868))
+:extrapreds ((x8869))
+:extrapreds ((x8870))
+:extrapreds ((x8871))
+:extrapreds ((x8872))
+:extrapreds ((x8873))
+:extrapreds ((x8874))
+:extrapreds ((x8875))
+:extrapreds ((x8876))
+:extrapreds ((x8877))
+:extrapreds ((x8878))
+:extrapreds ((x8879))
+:extrapreds ((x8880))
+:extrapreds ((x8881))
+:extrapreds ((x8882))
+:extrapreds ((x8883))
+:extrapreds ((x8884))
+:extrapreds ((x8885))
+:extrapreds ((x8886))
+:extrapreds ((x8887))
+:extrapreds ((x8888))
+:extrapreds ((x8889))
+:extrapreds ((x8890))
+:extrapreds ((x8891))
+:extrapreds ((x8892))
+:extrapreds ((x8893))
+:extrapreds ((x8894))
+:extrapreds ((x8895))
+:extrapreds ((x8896))
+:extrapreds ((x8897))
+:extrapreds ((x8898))
+:extrapreds ((x8899))
+:extrapreds ((x8900))
+:extrapreds ((x8901))
+:extrapreds ((x8902))
+:extrapreds ((x8903))
+:extrapreds ((x8904))
+:extrapreds ((x8905))
+:extrapreds ((x8906))
+:extrapreds ((x8907))
+:extrapreds ((x8908))
+:extrapreds ((x8909))
+:extrapreds ((x8910))
+:extrapreds ((x8911))
+:extrapreds ((x8912))
+:extrapreds ((x8913))
+:extrapreds ((x8914))
+:extrapreds ((x8915))
+:extrapreds ((x8916))
+:extrapreds ((x8917))
+:extrapreds ((x8918))
+:extrapreds ((x8919))
+:extrapreds ((x8920))
+:extrapreds ((x8921))
+:extrapreds ((x8922))
+:extrapreds ((x8923))
+:extrapreds ((x8924))
+:extrapreds ((x8925))
+:extrapreds ((x8926))
+:extrapreds ((x8927))
+:extrapreds ((x8928))
+:extrapreds ((x8929))
+:extrapreds ((x8930))
+:extrapreds ((x8931))
+:extrapreds ((x8932))
+:extrapreds ((x8933))
+:extrapreds ((x8934))
+:extrapreds ((x8935))
+:extrapreds ((x8936))
+:extrapreds ((x8937))
+:extrapreds ((x8938))
+:extrapreds ((x8939))
+:extrapreds ((x8940))
+:extrapreds ((x8941))
+:extrapreds ((x8942))
+:extrapreds ((x8943))
+:extrapreds ((x8944))
+:extrapreds ((x8945))
+:extrapreds ((x8946))
+:extrapreds ((x8947))
+:extrapreds ((x8948))
+:extrapreds ((x8949))
+:extrapreds ((x8950))
+:extrapreds ((x8951))
+:extrapreds ((x8952))
+:extrapreds ((x8953))
+:extrapreds ((x8954))
+:extrapreds ((x8955))
+:extrapreds ((x8956))
+:extrapreds ((x8957))
+:extrapreds ((x8958))
+:extrapreds ((x8959))
+:extrapreds ((x8960))
+:extrapreds ((x8961))
+:extrapreds ((x8962))
+:extrapreds ((x8963))
+:extrapreds ((x8964))
+:extrapreds ((x8965))
+:extrapreds ((x8966))
+:extrapreds ((x8967))
+:extrapreds ((x8968))
+:extrapreds ((x8969))
+:extrapreds ((x8970))
+:extrapreds ((x8971))
+:extrapreds ((x8972))
+:extrapreds ((x8973))
+:extrapreds ((x8974))
+:extrapreds ((x8975))
+:extrapreds ((x8976))
+:extrapreds ((x8977))
+:extrapreds ((x8978))
+:extrapreds ((x8979))
+:extrapreds ((x8980))
+:extrapreds ((x8981))
+:extrapreds ((x8982))
+:extrapreds ((x8983))
+:extrapreds ((x8984))
+:extrapreds ((x8985))
+:extrapreds ((x8986))
+:extrapreds ((x8987))
+:extrapreds ((x8988))
+:extrapreds ((x8989))
+:extrapreds ((x8990))
+:extrapreds ((x8991))
+:extrapreds ((x8992))
+:extrapreds ((x8993))
+:extrapreds ((x8994))
+:extrapreds ((x8995))
+:extrapreds ((x8996))
+:extrapreds ((x8997))
+:extrapreds ((x8998))
+:extrapreds ((x8999))
+:extrapreds ((x9000))
+:extrapreds ((x9001))
+:extrapreds ((x9002))
+:extrapreds ((x9003))
+:extrapreds ((x9004))
+:extrapreds ((x9005))
+:extrapreds ((x9006))
+:extrapreds ((x9007))
+:extrapreds ((x9008))
+:extrapreds ((x9009))
+:extrapreds ((x9010))
+:extrapreds ((x9011))
+:extrapreds ((x9012))
+:extrapreds ((x9013))
+:extrapreds ((x9014))
+:extrapreds ((x9015))
+:extrapreds ((x9016))
+:extrapreds ((x9017))
+:extrapreds ((x9018))
+:extrapreds ((x9019))
+:extrapreds ((x9020))
+:extrapreds ((x9021))
+:extrapreds ((x9022))
+:extrapreds ((x9023))
+:extrapreds ((x9024))
+:extrapreds ((x9025))
+:extrapreds ((x9026))
+:extrapreds ((x9027))
+:extrapreds ((x9028))
+:extrapreds ((x9029))
+:extrapreds ((x9030))
+:extrapreds ((x9031))
+:extrapreds ((x9032))
+:extrapreds ((x9033))
+:extrapreds ((x9034))
+:extrapreds ((x9035))
+:extrapreds ((x9036))
+:extrapreds ((x9037))
+:extrapreds ((x9038))
+:extrapreds ((x9039))
+:extrapreds ((x9040))
+:extrapreds ((x9041))
+:extrapreds ((x9042))
+:extrapreds ((x9043))
+:extrapreds ((x9044))
+:extrapreds ((x9045))
+:extrapreds ((x9046))
+:extrapreds ((x9047))
+:extrapreds ((x9048))
+:extrapreds ((x9049))
+:extrapreds ((x9050))
+:extrapreds ((x9051))
+:extrapreds ((x9052))
+:extrapreds ((x9053))
+:extrapreds ((x9054))
+:extrapreds ((x9055))
+:extrapreds ((x9056))
+:extrapreds ((x9057))
+:extrapreds ((x9058))
+:extrapreds ((x9059))
+:extrapreds ((x9060))
+:extrapreds ((x9061))
+:extrapreds ((x9062))
+:extrapreds ((x9063))
+:extrapreds ((x9064))
+:extrapreds ((x9065))
+:extrapreds ((x9066))
+:extrapreds ((x9067))
+:extrapreds ((x9068))
+:extrapreds ((x9069))
+:extrapreds ((x9070))
+:extrapreds ((x9071))
+:extrapreds ((x9072))
+:extrapreds ((x9073))
+:extrapreds ((x9074))
+:extrapreds ((x9075))
+:extrapreds ((x9076))
+:extrapreds ((x9077))
+:extrapreds ((x9078))
+:extrapreds ((x9079))
+:extrapreds ((x9080))
+:extrapreds ((x9081))
+:extrapreds ((x9082))
+:extrapreds ((x9083))
+:extrapreds ((x9084))
+:extrapreds ((x9085))
+:extrapreds ((x9086))
+:extrapreds ((x9087))
+:extrapreds ((x9088))
+:extrapreds ((x9089))
+:extrapreds ((x9090))
+:extrapreds ((x9091))
+:extrapreds ((x9092))
+:extrapreds ((x9093))
+:extrapreds ((x9094))
+:extrapreds ((x9095))
+:extrapreds ((x9096))
+:extrapreds ((x9097))
+:extrapreds ((x9098))
+:extrapreds ((x9099))
+:extrapreds ((x9100))
+:extrapreds ((x9101))
+:extrapreds ((x9102))
+:extrapreds ((x9103))
+:extrapreds ((x9104))
+:extrapreds ((x9105))
+:extrapreds ((x9106))
+:extrapreds ((x9107))
+:extrapreds ((x9108))
+:extrapreds ((x9109))
+:extrapreds ((x9110))
+:extrapreds ((x9111))
+:extrapreds ((x9112))
+:extrapreds ((x9113))
+:extrapreds ((x9114))
+:extrapreds ((x9115))
+:extrapreds ((x9116))
+:extrapreds ((x9117))
+:extrapreds ((x9118))
+:extrapreds ((x9119))
+:extrapreds ((x9120))
+:extrapreds ((x9121))
+:extrapreds ((x9122))
+:extrapreds ((x9123))
+:extrapreds ((x9124))
+:extrapreds ((x9125))
+:extrapreds ((x9126))
+:extrapreds ((x9127))
+:extrapreds ((x9128))
+:extrapreds ((x9129))
+:extrapreds ((x9130))
+:extrapreds ((x9131))
+:extrapreds ((x9132))
+:extrapreds ((x9133))
+:extrapreds ((x9134))
+:extrapreds ((x9135))
+:extrapreds ((x9136))
+:extrapreds ((x9137))
+:extrapreds ((x9138))
+:extrapreds ((x9139))
+:extrapreds ((x9140))
+:extrapreds ((x9141))
+:extrapreds ((x9142))
+:extrapreds ((x9143))
+:extrapreds ((x9144))
+:extrapreds ((x9145))
+:extrapreds ((x9146))
+:extrapreds ((x9147))
+:extrapreds ((x9148))
+:extrapreds ((x9149))
+:extrapreds ((x9150))
+:extrapreds ((x9151))
+:extrapreds ((x9152))
+:extrapreds ((x9153))
+:extrapreds ((x9154))
+:extrapreds ((x9155))
+:extrapreds ((x9156))
+:extrapreds ((x9157))
+:extrapreds ((x9158))
+:extrapreds ((x9159))
+:extrapreds ((x9160))
+:extrapreds ((x9161))
+:extrapreds ((x9162))
+:extrapreds ((x9163))
+:extrapreds ((x9164))
+:extrapreds ((x9165))
+:extrapreds ((x9166))
+:extrapreds ((x9167))
+:extrapreds ((x9168))
+:extrapreds ((x9169))
+:extrapreds ((x9170))
+:extrapreds ((x9171))
+:extrapreds ((x9172))
+:extrapreds ((x9173))
+:extrapreds ((x9174))
+:extrapreds ((x9175))
+:extrapreds ((x9176))
+:extrapreds ((x9177))
+:extrapreds ((x9178))
+:extrapreds ((x9179))
+:extrapreds ((x9180))
+:extrapreds ((x9181))
+:extrapreds ((x9182))
+:extrapreds ((x9183))
+:extrapreds ((x9184))
+:extrapreds ((x9185))
+:extrapreds ((x9186))
+:extrapreds ((x9187))
+:extrapreds ((x9188))
+:extrapreds ((x9189))
+:extrapreds ((x9190))
+:extrapreds ((x9191))
+:extrapreds ((x9192))
+:extrapreds ((x9193))
+:extrapreds ((x9194))
+:extrapreds ((x9195))
+:extrapreds ((x9196))
+:extrapreds ((x9197))
+:extrapreds ((x9198))
+:extrapreds ((x9199))
+:extrapreds ((x9200))
+:extrapreds ((x9201))
+:extrapreds ((x9202))
+:extrapreds ((x9203))
+:extrapreds ((x9204))
+:extrapreds ((x9205))
+:extrapreds ((x9206))
+:extrapreds ((x9207))
+:extrapreds ((x9208))
+:extrapreds ((x9209))
+:extrapreds ((x9210))
+:extrapreds ((x9211))
+:extrapreds ((x9212))
+:extrapreds ((x9213))
+:extrapreds ((x9214))
+:extrapreds ((x9215))
+:extrapreds ((x9216))
+:extrapreds ((x9217))
+:extrapreds ((x9218))
+:extrapreds ((x9219))
+:extrapreds ((x9220))
+:extrapreds ((x9221))
+:extrapreds ((x9222))
+:extrapreds ((x9223))
+:extrapreds ((x9224))
+:extrapreds ((x9225))
+:extrapreds ((x9226))
+:extrapreds ((x9227))
+:extrapreds ((x9228))
+:extrapreds ((x9229))
+:extrapreds ((x9230))
+:extrapreds ((x9231))
+:extrapreds ((x9232))
+:extrapreds ((x9233))
+:extrapreds ((x9234))
+:extrapreds ((x9235))
+:extrapreds ((x9236))
+:extrapreds ((x9237))
+:extrapreds ((x9238))
+:extrapreds ((x9239))
+:extrapreds ((x9240))
+:extrapreds ((x9241))
+:extrapreds ((x9242))
+:extrapreds ((x9243))
+:extrapreds ((x9244))
+:extrapreds ((x9245))
+:extrapreds ((x9246))
+:extrapreds ((x9247))
+:extrapreds ((x9248))
+:extrapreds ((x9249))
+:extrapreds ((x9250))
+:extrapreds ((x9251))
+:extrapreds ((x9252))
+:extrapreds ((x9253))
+:extrapreds ((x9254))
+:extrapreds ((x9255))
+:extrapreds ((x9256))
+:extrapreds ((x9257))
+:extrapreds ((x9258))
+:extrapreds ((x9259))
+:extrapreds ((x9260))
+:extrapreds ((x9261))
+:extrapreds ((x9262))
+:extrapreds ((x9263))
+:extrapreds ((x9264))
+:extrapreds ((x9265))
+:extrapreds ((x9266))
+:extrapreds ((x9267))
+:extrapreds ((x9268))
+:extrapreds ((x9269))
+:extrapreds ((x9270))
+:extrapreds ((x9271))
+:extrapreds ((x9272))
+:extrapreds ((x9273))
+:extrapreds ((x9274))
+:extrapreds ((x9275))
+:extrapreds ((x9276))
+:extrapreds ((x9277))
+:extrapreds ((x9278))
+:extrapreds ((x9279))
+:extrapreds ((x9280))
+:extrapreds ((x9281))
+:extrapreds ((x9282))
+:extrapreds ((x9283))
+:extrapreds ((x9284))
+:extrapreds ((x9285))
+:extrapreds ((x9286))
+:extrapreds ((x9287))
+:extrapreds ((x9288))
+:extrapreds ((x9289))
+:extrapreds ((x9290))
+:extrapreds ((x9291))
+:extrapreds ((x9292))
+:extrapreds ((x9293))
+:extrapreds ((x9294))
+:extrapreds ((x9295))
+:extrapreds ((x9296))
+:extrapreds ((x9297))
+:extrapreds ((x9298))
+:extrapreds ((x9299))
+:extrapreds ((x9300))
+:extrapreds ((x9301))
+:extrapreds ((x9302))
+:extrapreds ((x9303))
+:extrapreds ((x9304))
+:extrapreds ((x9305))
+:extrapreds ((x9306))
+:extrapreds ((x9307))
+:extrapreds ((x9308))
+:extrapreds ((x9309))
+:extrapreds ((x9310))
+:extrapreds ((x9311))
+:extrapreds ((x9312))
+:extrapreds ((x9313))
+:extrapreds ((x9314))
+:extrapreds ((x9315))
+:extrapreds ((x9316))
+:extrapreds ((x9317))
+:extrapreds ((x9318))
+:extrapreds ((x9319))
+:extrapreds ((x9320))
+:extrapreds ((x9321))
+:extrapreds ((x9322))
+:extrapreds ((x9323))
+:extrapreds ((x9324))
+:extrapreds ((x9325))
+:extrapreds ((x9326))
+:extrapreds ((x9327))
+:extrapreds ((x9328))
+:extrapreds ((x9329))
+:extrapreds ((x9330))
+:extrapreds ((x9331))
+:extrapreds ((x9332))
+:extrapreds ((x9333))
+:extrapreds ((x9334))
+:extrapreds ((x9335))
+:extrapreds ((x9336))
+:extrapreds ((x9337))
+:extrapreds ((x9338))
+:extrapreds ((x9339))
+:extrapreds ((x9340))
+:extrapreds ((x9341))
+:extrapreds ((x9342))
+:extrapreds ((x9343))
+:extrapreds ((x9344))
+:extrapreds ((x9345))
+:extrapreds ((x9346))
+:extrapreds ((x9347))
+:extrapreds ((x9348))
+:extrapreds ((x9349))
+:extrapreds ((x9350))
+:extrapreds ((x9351))
+:extrapreds ((x9352))
+:extrapreds ((x9353))
+:extrapreds ((x9354))
+:extrapreds ((x9355))
+:extrapreds ((x9356))
+:extrapreds ((x9357))
+:extrapreds ((x9358))
+:extrapreds ((x9359))
+:extrapreds ((x9360))
+:extrapreds ((x9361))
+:extrapreds ((x9362))
+:extrapreds ((x9363))
+:extrapreds ((x9364))
+:extrapreds ((x9365))
+:extrapreds ((x9366))
+:extrapreds ((x9367))
+:extrapreds ((x9368))
+:extrapreds ((x9369))
+:extrapreds ((x9370))
+:extrapreds ((x9371))
+:extrapreds ((x9372))
+:extrapreds ((x9373))
+:extrapreds ((x9374))
+:extrapreds ((x9375))
+:extrapreds ((x9376))
+:extrapreds ((x9377))
+:extrapreds ((x9378))
+:extrapreds ((x9379))
+:extrapreds ((x9380))
+:extrapreds ((x9381))
+:extrapreds ((x9382))
+:extrapreds ((x9383))
+:extrapreds ((x9384))
+:extrapreds ((x9385))
+:extrapreds ((x9386))
+:extrapreds ((x9387))
+:extrapreds ((x9388))
+:extrapreds ((x9389))
+:extrapreds ((x9390))
+:extrapreds ((x9391))
+:extrapreds ((x9392))
+:extrapreds ((x9393))
+:extrapreds ((x9394))
+:extrapreds ((x9395))
+:extrapreds ((x9396))
+:extrapreds ((x9397))
+:extrapreds ((x9398))
+:extrapreds ((x9399))
+:extrapreds ((x9400))
+:extrapreds ((x9401))
+:extrapreds ((x9402))
+:extrapreds ((x9403))
+:extrapreds ((x9404))
+:extrapreds ((x9405))
+:extrapreds ((x9406))
+:extrapreds ((x9407))
+:extrapreds ((x9408))
+:extrapreds ((x9409))
+:extrapreds ((x9410))
+:extrapreds ((x9411))
+:extrapreds ((x9412))
+:extrapreds ((x9413))
+:extrapreds ((x9414))
+:extrapreds ((x9415))
+:extrapreds ((x9416))
+:extrapreds ((x9417))
+:extrapreds ((x9418))
+:extrapreds ((x9419))
+:extrapreds ((x9420))
+:extrapreds ((x9421))
+:extrapreds ((x9422))
+:extrapreds ((x9423))
+:extrapreds ((x9424))
+:extrapreds ((x9425))
+:extrapreds ((x9426))
+:extrapreds ((x9427))
+:extrapreds ((x9428))
+:extrapreds ((x9429))
+:extrapreds ((x9430))
+:extrapreds ((x9431))
+:extrapreds ((x9432))
+:extrapreds ((x9433))
+:extrapreds ((x9434))
+:extrapreds ((x9435))
+:extrapreds ((x9436))
+:extrapreds ((x9437))
+:extrapreds ((x9438))
+:extrapreds ((x9439))
+:extrapreds ((x9440))
+:extrapreds ((x9441))
+:extrapreds ((x9442))
+:extrapreds ((x9443))
+:extrapreds ((x9444))
+:extrapreds ((x9445))
+:extrapreds ((x9446))
+:extrapreds ((x9447))
+:extrapreds ((x9448))
+:extrapreds ((x9449))
+:extrapreds ((x9450))
+:extrapreds ((x9451))
+:extrapreds ((x9452))
+:extrapreds ((x9453))
+:extrapreds ((x9454))
+:extrapreds ((x9455))
+:extrapreds ((x9456))
+:extrapreds ((x9457))
+:extrapreds ((x9458))
+:extrapreds ((x9459))
+:extrapreds ((x9460))
+:extrapreds ((x9461))
+:extrapreds ((x9462))
+:extrapreds ((x9463))
+:extrapreds ((x9464))
+:extrapreds ((x9465))
+:extrapreds ((x9466))
+:extrapreds ((x9467))
+:extrapreds ((x9468))
+:extrapreds ((x9469))
+:extrapreds ((x9470))
+:extrapreds ((x9471))
+:extrapreds ((x9472))
+:extrapreds ((x9473))
+:extrapreds ((x9474))
+:extrapreds ((x9475))
+:extrapreds ((x9476))
+:extrapreds ((x9477))
+:extrapreds ((x9478))
+:extrapreds ((x9479))
+:extrapreds ((x9480))
+:extrapreds ((x9481))
+:extrapreds ((x9482))
+:extrapreds ((x9483))
+:extrapreds ((x9484))
+:extrapreds ((x9485))
+:extrapreds ((x9486))
+:extrapreds ((x9487))
+:extrapreds ((x9488))
+:extrapreds ((x9489))
+:extrapreds ((x9490))
+:extrapreds ((x9491))
+:extrapreds ((x9492))
+:extrapreds ((x9493))
+:extrapreds ((x9494))
+:extrapreds ((x9495))
+:extrapreds ((x9496))
+:extrapreds ((x9497))
+:extrapreds ((x9498))
+:extrapreds ((x9499))
+:extrapreds ((x9500))
+:extrapreds ((x9501))
+:extrapreds ((x9502))
+:extrapreds ((x9503))
+:extrapreds ((x9504))
+:extrapreds ((x9505))
+:extrapreds ((x9506))
+:extrapreds ((x9507))
+:extrapreds ((x9508))
+:extrapreds ((x9509))
+:extrapreds ((x9510))
+:extrapreds ((x9511))
+:extrapreds ((x9512))
+:extrapreds ((x9513))
+:extrapreds ((x9514))
+:extrapreds ((x9515))
+:extrapreds ((x9516))
+:extrapreds ((x9517))
+:extrapreds ((x9518))
+:extrapreds ((x9519))
+:extrapreds ((x9520))
+:extrapreds ((x9521))
+:extrapreds ((x9522))
+:extrapreds ((x9523))
+:extrapreds ((x9524))
+:extrapreds ((x9525))
+:extrapreds ((x9526))
+:extrapreds ((x9527))
+:extrapreds ((x9528))
+:extrapreds ((x9529))
+:extrapreds ((x9530))
+:extrapreds ((x9531))
+:extrapreds ((x9532))
+:extrapreds ((x9533))
+:extrapreds ((x9534))
+:extrapreds ((x9535))
+:extrapreds ((x9536))
+:extrapreds ((x9537))
+:extrapreds ((x9538))
+:extrapreds ((x9539))
+:extrapreds ((x9540))
+:extrapreds ((x9541))
+:extrapreds ((x9542))
+:extrapreds ((x9543))
+:extrapreds ((x9544))
+:extrapreds ((x9545))
+:extrapreds ((x9546))
+:extrapreds ((x9547))
+:extrapreds ((x9548))
+:extrapreds ((x9549))
+:extrapreds ((x9550))
+:extrapreds ((x9551))
+:extrapreds ((x9552))
+:extrapreds ((x9553))
+:extrapreds ((x9554))
+:extrapreds ((x9555))
+:extrapreds ((x9556))
+:extrapreds ((x9557))
+:extrapreds ((x9558))
+:extrapreds ((x9559))
+:extrapreds ((x9560))
+:extrapreds ((x9561))
+:extrapreds ((x9562))
+:extrapreds ((x9563))
+:extrapreds ((x9564))
+:extrapreds ((x9565))
+:extrapreds ((x9566))
+:extrapreds ((x9567))
+:extrapreds ((x9568))
+:extrapreds ((x9569))
+:extrapreds ((x9570))
+:extrapreds ((x9571))
+:extrapreds ((x9572))
+:extrapreds ((x9573))
+:extrapreds ((x9574))
+:extrapreds ((x9575))
+:extrapreds ((x9576))
+:extrapreds ((x9577))
+:extrapreds ((x9578))
+:extrapreds ((x9579))
+:extrapreds ((x9580))
+:extrapreds ((x9581))
+:extrapreds ((x9582))
+:extrapreds ((x9583))
+:extrapreds ((x9584))
+:extrapreds ((x9585))
+:extrapreds ((x9586))
+:extrapreds ((x9587))
+:extrapreds ((x9588))
+:extrapreds ((x9589))
+:extrapreds ((x9590))
+:extrapreds ((x9591))
+:extrapreds ((x9592))
+:extrapreds ((x9593))
+:extrapreds ((x9594))
+:extrapreds ((x9595))
+:extrapreds ((x9596))
+:extrapreds ((x9597))
+:extrapreds ((x9598))
+:extrapreds ((x9599))
+:extrapreds ((x9600))
+:extrapreds ((x9601))
+:extrapreds ((x9602))
+:extrapreds ((x9603))
+:extrapreds ((x9604))
+:extrapreds ((x9605))
+:extrapreds ((x9606))
+:extrapreds ((x9607))
+:extrapreds ((x9608))
+:extrapreds ((x9609))
+:extrapreds ((x9610))
+:extrapreds ((x9611))
+:extrapreds ((x9612))
+:extrapreds ((x9613))
+:extrapreds ((x9614))
+:extrapreds ((x9615))
+:extrapreds ((x9616))
+:extrapreds ((x9617))
+:extrapreds ((x9618))
+:extrapreds ((x9619))
+:extrapreds ((x9620))
+:extrapreds ((x9621))
+:extrapreds ((x9622))
+:extrapreds ((x9623))
+:extrapreds ((x9624))
+:extrapreds ((x9625))
+:extrapreds ((x9626))
+:extrapreds ((x9627))
+:extrapreds ((x9628))
+:extrapreds ((x9629))
+:extrapreds ((x9630))
+:extrapreds ((x9631))
+:extrapreds ((x9632))
+:extrapreds ((x9633))
+:extrapreds ((x9634))
+:extrapreds ((x9635))
+:extrapreds ((x9636))
+:extrapreds ((x9637))
+:extrapreds ((x9638))
+:extrapreds ((x9639))
+:extrapreds ((x9640))
+:extrapreds ((x9641))
+:extrapreds ((x9642))
+:extrapreds ((x9643))
+:extrapreds ((x9644))
+:extrapreds ((x9645))
+:extrapreds ((x9646))
+:extrapreds ((x9647))
+:extrapreds ((x9648))
+:extrapreds ((x9649))
+:extrapreds ((x9650))
+:extrapreds ((x9651))
+:extrapreds ((x9652))
+:extrapreds ((x9653))
+:extrapreds ((x9654))
+:extrapreds ((x9655))
+:extrapreds ((x9656))
+:extrapreds ((x9657))
+:extrapreds ((x9658))
+:extrapreds ((x9659))
+:extrapreds ((x9660))
+:extrapreds ((x9661))
+:extrapreds ((x9662))
+:extrapreds ((x9663))
+:extrapreds ((x9664))
+:extrapreds ((x9665))
+:extrapreds ((x9666))
+:extrapreds ((x9667))
+:extrapreds ((x9668))
+:extrapreds ((x9669))
+:extrapreds ((x9670))
+:extrapreds ((x9671))
+:extrapreds ((x9672))
+:extrapreds ((x9673))
+:extrapreds ((x9674))
+:extrapreds ((x9675))
+:extrapreds ((x9676))
+:extrapreds ((x9677))
+:extrapreds ((x9678))
+:extrapreds ((x9679))
+:extrapreds ((x9680))
+:extrapreds ((x9681))
+:extrapreds ((x9682))
+:extrapreds ((x9683))
+:extrapreds ((x9684))
+:extrapreds ((x9685))
+:extrapreds ((x9686))
+:extrapreds ((x9687))
+:extrapreds ((x9688))
+:extrapreds ((x9689))
+:extrapreds ((x9690))
+:extrapreds ((x9691))
+:extrapreds ((x9692))
+:extrapreds ((x9693))
+:extrapreds ((x9694))
+:extrapreds ((x9695))
+:extrapreds ((x9696))
+:extrapreds ((x9697))
+:extrapreds ((x9698))
+:extrapreds ((x9699))
+:extrapreds ((x9700))
+:extrapreds ((x9701))
+:extrapreds ((x9702))
+:extrapreds ((x9703))
+:extrapreds ((x9704))
+:extrapreds ((x9705))
+:extrapreds ((x9706))
+:extrapreds ((x9707))
+:extrapreds ((x9708))
+:extrapreds ((x9709))
+:extrapreds ((x9710))
+:extrapreds ((x9711))
+:extrapreds ((x9712))
+:extrapreds ((x9713))
+:extrapreds ((x9714))
+:extrapreds ((x9715))
+:extrapreds ((x9716))
+:extrapreds ((x9717))
+:extrapreds ((x9718))
+:extrapreds ((x9719))
+:extrapreds ((x9720))
+:extrapreds ((x9721))
+:extrapreds ((x9722))
+:extrapreds ((x9723))
+:extrapreds ((x9724))
+:extrapreds ((x9725))
+:extrapreds ((x9726))
+:extrapreds ((x9727))
+:extrapreds ((x9728))
+:extrapreds ((x9729))
+:extrapreds ((x9730))
+:extrapreds ((x9731))
+:extrapreds ((x9732))
+:extrapreds ((x9733))
+:extrapreds ((x9734))
+:extrapreds ((x9735))
+:extrapreds ((x9736))
+:extrapreds ((x9737))
+:extrapreds ((x9738))
+:extrapreds ((x9739))
+:extrapreds ((x9740))
+:extrapreds ((x9741))
+:extrapreds ((x9742))
+:extrapreds ((x9743))
+:extrapreds ((x9744))
+:extrapreds ((x9745))
+:extrapreds ((x9746))
+:extrapreds ((x9747))
+:extrapreds ((x9748))
+:extrapreds ((x9749))
+:extrapreds ((x9750))
+:extrapreds ((x9751))
+:extrapreds ((x9752))
+:extrapreds ((x9753))
+:extrapreds ((x9754))
+:extrapreds ((x9755))
+:extrapreds ((x9756))
+:extrapreds ((x9757))
+:extrapreds ((x9758))
+:extrapreds ((x9759))
+:extrapreds ((x9760))
+:extrapreds ((x9761))
+:extrapreds ((x9762))
+:extrapreds ((x9763))
+:extrapreds ((x9764))
+:extrapreds ((x9765))
+:extrapreds ((x9766))
+:extrapreds ((x9767))
+:extrapreds ((x9768))
+:extrapreds ((x9769))
+:extrapreds ((x9770))
+:extrapreds ((x9771))
+:extrapreds ((x9772))
+:extrapreds ((x9773))
+:extrapreds ((x9774))
+:extrapreds ((x9775))
+:extrapreds ((x9776))
+:extrapreds ((x9777))
+:extrapreds ((x9778))
+:extrapreds ((x9779))
+:extrapreds ((x9780))
+:extrapreds ((x9781))
+:extrapreds ((x9782))
+:extrapreds ((x9783))
+:extrapreds ((x9784))
+:extrapreds ((x9785))
+:extrapreds ((x9786))
+:extrapreds ((x9787))
+:extrapreds ((x9788))
+:extrapreds ((x9789))
+:extrapreds ((x9790))
+:extrapreds ((x9791))
+:extrapreds ((x9792))
+:extrapreds ((x9793))
+:extrapreds ((x9794))
+:extrapreds ((x9795))
+:extrapreds ((x9796))
+:extrapreds ((x9797))
+:extrapreds ((x9798))
+:extrapreds ((x9799))
+:extrapreds ((x9800))
+:extrapreds ((x9801))
+:extrapreds ((x9802))
+:extrapreds ((x9803))
+:extrapreds ((x9804))
+:extrapreds ((x9805))
+:extrapreds ((x9806))
+:extrapreds ((x9807))
+:extrapreds ((x9808))
+:extrapreds ((x9809))
+:extrapreds ((x9810))
+:extrapreds ((x9811))
+:extrapreds ((x9812))
+:extrapreds ((x9813))
+:extrapreds ((x9814))
+:extrapreds ((x9815))
+:extrapreds ((x9816))
+:extrapreds ((x9817))
+:extrapreds ((x9818))
+:extrapreds ((x9819))
+:extrapreds ((x9820))
+:extrapreds ((x9821))
+:extrapreds ((x9822))
+:extrapreds ((x9823))
+:extrapreds ((x9824))
+:extrapreds ((x9825))
+:extrapreds ((x9826))
+:extrapreds ((x9827))
+:extrapreds ((x9828))
+:extrapreds ((x9829))
+:extrapreds ((x9830))
+:extrapreds ((x9831))
+:extrapreds ((x9832))
+:extrapreds ((x9833))
+:extrapreds ((x9834))
+:extrapreds ((x9835))
+:extrapreds ((x9836))
+:extrapreds ((x9837))
+:extrapreds ((x9838))
+:extrapreds ((x9839))
+:extrapreds ((x9840))
+:extrapreds ((x9841))
+:extrapreds ((x9842))
+:extrapreds ((x9843))
+:extrapreds ((x9844))
+:extrapreds ((x9845))
+:extrapreds ((x9846))
+:extrapreds ((x9847))
+:extrapreds ((x9848))
+:extrapreds ((x9849))
+:extrapreds ((x9850))
+:extrapreds ((x9851))
+:extrapreds ((x9852))
+:extrapreds ((x9853))
+:extrapreds ((x9854))
+:extrapreds ((x9855))
+:extrapreds ((x9856))
+:extrapreds ((x9857))
+:extrapreds ((x9858))
+:extrapreds ((x9859))
+:extrapreds ((x9860))
+:extrapreds ((x9861))
+:extrapreds ((x9862))
+:extrapreds ((x9863))
+:extrapreds ((x9864))
+:extrapreds ((x9865))
+:extrapreds ((x9866))
+:extrapreds ((x9867))
+:extrapreds ((x9868))
+:extrapreds ((x9869))
+:extrapreds ((x9870))
+:extrapreds ((x9871))
+:extrapreds ((x9872))
+:extrapreds ((x9873))
+:extrapreds ((x9874))
+:extrapreds ((x9875))
+:extrapreds ((x9876))
+:extrapreds ((x9877))
+:extrapreds ((x9878))
+:extrapreds ((x9879))
+:extrapreds ((x9880))
+:extrapreds ((x9881))
+:extrapreds ((x9882))
+:extrapreds ((x9883))
+:extrapreds ((x9884))
+:extrapreds ((x9885))
+:extrapreds ((x9886))
+:extrapreds ((x9887))
+:extrapreds ((x9888))
+:extrapreds ((x9889))
+:extrapreds ((x9890))
+:extrapreds ((x9891))
+:extrapreds ((x9892))
+:extrapreds ((x9893))
+:extrapreds ((x9894))
+:extrapreds ((x9895))
+:extrapreds ((x9896))
+:extrapreds ((x9897))
+:extrapreds ((x9898))
+:extrapreds ((x9899))
+:extrapreds ((x9900))
+:extrapreds ((x9901))
+:extrapreds ((x9902))
+:extrapreds ((x9903))
+:extrapreds ((x9904))
+:extrapreds ((x9905))
+:extrapreds ((x9906))
+:extrapreds ((x9907))
+:extrapreds ((x9908))
+:extrapreds ((x9909))
+:extrapreds ((x9910))
+:extrapreds ((x9911))
+:extrapreds ((x9912))
+:extrapreds ((x9913))
+:extrapreds ((x9914))
+:extrapreds ((x9915))
+:extrapreds ((x9916))
+:extrapreds ((x9917))
+:extrapreds ((x9918))
+:extrapreds ((x9919))
+:extrapreds ((x9920))
+:extrapreds ((x9921))
+:extrapreds ((x9922))
+:extrapreds ((x9923))
+:extrapreds ((x9924))
+:extrapreds ((x9925))
+:extrapreds ((x9926))
+:extrapreds ((x9927))
+:extrapreds ((x9928))
+:extrapreds ((x9929))
+:extrapreds ((x9930))
+:extrapreds ((x9931))
+:extrapreds ((x9932))
+:extrapreds ((x9933))
+:extrapreds ((x9934))
+:extrapreds ((x9935))
+:extrapreds ((x9936))
+:extrapreds ((x9937))
+:extrapreds ((x9938))
+:extrapreds ((x9939))
+:extrapreds ((x9940))
+:extrapreds ((x9941))
+:extrapreds ((x9942))
+:extrapreds ((x9943))
+:extrapreds ((x9944))
+:extrapreds ((x9945))
+:extrapreds ((x9946))
+:extrapreds ((x9947))
+:extrapreds ((x9948))
+:extrapreds ((x9949))
+:extrapreds ((x9950))
+:extrapreds ((x9951))
+:extrapreds ((x9952))
+:extrapreds ((x9953))
+:extrapreds ((x9954))
+:extrapreds ((x9955))
+:extrapreds ((x9956))
+:extrapreds ((x9957))
+:extrapreds ((x9958))
+:extrapreds ((x9959))
+:extrapreds ((x9960))
+:extrapreds ((x9961))
+:extrapreds ((x9962))
+:extrapreds ((x9963))
+:extrapreds ((x9964))
+:extrapreds ((x9965))
+:extrapreds ((x9966))
+:extrapreds ((x9967))
+:extrapreds ((x9968))
+:extrapreds ((x9969))
+:extrapreds ((x9970))
+:extrapreds ((x9971))
+:extrapreds ((x9972))
+:extrapreds ((x9973))
+:extrapreds ((x9974))
+:extrapreds ((x9975))
+:extrapreds ((x9976))
+:extrapreds ((x9977))
+:extrapreds ((x9978))
+:extrapreds ((x9979))
+:extrapreds ((x9980))
+:extrapreds ((x9981))
+:extrapreds ((x9982))
+:extrapreds ((x9983))
+:extrapreds ((x9984))
+:extrapreds ((x9985))
+:extrapreds ((x9986))
+:extrapreds ((x9987))
+:extrapreds ((x9988))
+:extrapreds ((x9989))
+:extrapreds ((x9990))
+:extrapreds ((x9991))
+:extrapreds ((x9992))
+:extrapreds ((x9993))
+:extrapreds ((x9994))
+:extrapreds ((x9995))
+:extrapreds ((x9996))
+:extrapreds ((x9997))
+:extrapreds ((x9998))
+:extrapreds ((x9999))
+:extrapreds ((x10000))
+:extrapreds ((x10001))
+:extrapreds ((x10002))
+:extrapreds ((x10003))
+:extrapreds ((x10004))
+:extrapreds ((x10005))
+:extrapreds ((x10006))
+:extrapreds ((x10007))
+:extrapreds ((x10008))
+:extrapreds ((x10009))
+:extrapreds ((x10010))
+:extrapreds ((x10011))
+:extrapreds ((x10012))
+:extrapreds ((x10013))
+:extrapreds ((x10014))
+:extrapreds ((x10015))
+:extrapreds ((x10016))
+:extrapreds ((x10017))
+:extrapreds ((x10018))
+:extrapreds ((x10019))
+:extrapreds ((x10020))
+:extrapreds ((x10021))
+:extrapreds ((x10022))
+:extrapreds ((x10023))
+:extrapreds ((x10024))
+:extrapreds ((x10025))
+:extrapreds ((x10026))
+:extrapreds ((x10027))
+:extrapreds ((x10028))
+:extrapreds ((x10029))
+:extrapreds ((x10030))
+:extrapreds ((x10031))
+:extrapreds ((x10032))
+:extrapreds ((x10033))
+:extrapreds ((x10034))
+:extrapreds ((x10035))
+:extrapreds ((x10036))
+:extrapreds ((x10037))
+:extrapreds ((x10038))
+:extrapreds ((x10039))
+:extrapreds ((x10040))
+:extrapreds ((x10041))
+:extrapreds ((x10042))
+:extrapreds ((x10043))
+:extrapreds ((x10044))
+:extrapreds ((x10045))
+:extrapreds ((x10046))
+:extrapreds ((x10047))
+:extrapreds ((x10048))
+:extrapreds ((x10049))
+:extrapreds ((x10050))
+:extrapreds ((x10051))
+:extrapreds ((x10052))
+:extrapreds ((x10053))
+:extrapreds ((x10054))
+:extrapreds ((x10055))
+:extrapreds ((x10056))
+:extrapreds ((x10057))
+:extrapreds ((x10058))
+:extrapreds ((x10059))
+:extrapreds ((x10060))
+:extrapreds ((x10061))
+:extrapreds ((x10062))
+:extrapreds ((x10063))
+:extrapreds ((x10064))
+:extrapreds ((x10065))
+:extrapreds ((x10066))
+:extrapreds ((x10067))
+:extrapreds ((x10068))
+:extrapreds ((x10069))
+:extrapreds ((x10070))
+:extrapreds ((x10071))
+:extrapreds ((x10072))
+:extrapreds ((x10073))
+:extrapreds ((x10074))
+:extrapreds ((x10075))
+:extrapreds ((x10076))
+:extrapreds ((x10077))
+:extrapreds ((x10078))
+:extrapreds ((x10079))
+:extrapreds ((x10080))
+:extrapreds ((x10081))
+:extrapreds ((x10082))
+:extrapreds ((x10083))
+:extrapreds ((x10084))
+:extrapreds ((x10085))
+:extrapreds ((x10086))
+:extrapreds ((x10087))
+:extrapreds ((x10088))
+:extrapreds ((x10089))
+:extrapreds ((x10090))
+:extrapreds ((x10091))
+:extrapreds ((x10092))
+:extrapreds ((x10093))
+:extrapreds ((x10094))
+:extrapreds ((x10095))
+:extrapreds ((x10096))
+:extrapreds ((x10097))
+:extrapreds ((x10098))
+:extrapreds ((x10099))
+:extrapreds ((x10100))
+:extrapreds ((x10101))
+:extrapreds ((x10102))
+:extrapreds ((x10103))
+:extrapreds ((x10104))
+:extrapreds ((x10105))
+:extrapreds ((x10106))
+:extrapreds ((x10107))
+:extrapreds ((x10108))
+:extrapreds ((x10109))
+:extrapreds ((x10110))
+:extrapreds ((x10111))
+:extrapreds ((x10112))
+:extrapreds ((x10113))
+:extrapreds ((x10114))
+:extrapreds ((x10115))
+:extrapreds ((x10116))
+:extrapreds ((x10117))
+:extrapreds ((x10118))
+:extrapreds ((x10119))
+:extrapreds ((x10120))
+:extrapreds ((x10121))
+:extrapreds ((x10122))
+:extrapreds ((x10123))
+:extrapreds ((x10124))
+:extrapreds ((x10125))
+:extrapreds ((x10126))
+:extrapreds ((x10127))
+:extrapreds ((x10128))
+:extrapreds ((x10129))
+:extrapreds ((x10130))
+:extrapreds ((x10131))
+:extrapreds ((x10132))
+:extrapreds ((x10133))
+:extrapreds ((x10134))
+:extrapreds ((x10135))
+:extrapreds ((x10136))
+:extrapreds ((x10137))
+:extrapreds ((x10138))
+:extrapreds ((x10139))
+:extrapreds ((x10140))
+:extrapreds ((x10141))
+:extrapreds ((x10142))
+:extrapreds ((x10143))
+:extrapreds ((x10144))
+:extrapreds ((x10145))
+:extrapreds ((x10146))
+:extrapreds ((x10147))
+:extrapreds ((x10148))
+:extrapreds ((x10149))
+:extrapreds ((x10150))
+:extrapreds ((x10151))
+:extrapreds ((x10152))
+:extrapreds ((x10153))
+:extrapreds ((x10154))
+:extrapreds ((x10155))
+:extrapreds ((x10156))
+:extrapreds ((x10157))
+:extrapreds ((x10158))
+:extrapreds ((x10159))
+:extrapreds ((x10160))
+:extrapreds ((x10161))
+:extrapreds ((x10162))
+:extrapreds ((x10163))
+:extrapreds ((x10164))
+:extrapreds ((x10165))
+:extrapreds ((x10166))
+:extrapreds ((x10167))
+:extrapreds ((x10168))
+:extrapreds ((x10169))
+:extrapreds ((x10170))
+:extrapreds ((x10171))
+:extrapreds ((x10172))
+:extrapreds ((x10173))
+:extrapreds ((x10174))
+:extrapreds ((x10175))
+:extrapreds ((x10176))
+:extrapreds ((x10177))
+:extrapreds ((x10178))
+:extrapreds ((x10179))
+:extrapreds ((x10180))
+:extrapreds ((x10181))
+:extrapreds ((x10182))
+:extrapreds ((x10183))
+:extrapreds ((x10184))
+:extrapreds ((x10185))
+:extrapreds ((x10186))
+:extrapreds ((x10187))
+:extrapreds ((x10188))
+:extrapreds ((x10189))
+:extrapreds ((x10190))
+:extrapreds ((x10191))
+:extrapreds ((x10192))
+:extrapreds ((x10193))
+:extrapreds ((x10194))
+:extrapreds ((x10195))
+:extrapreds ((x10196))
+:extrapreds ((x10197))
+:extrapreds ((x10198))
+:extrapreds ((x10199))
+:extrapreds ((x10200))
+:extrapreds ((x10201))
+:extrapreds ((x10202))
+:extrapreds ((x10203))
+:extrapreds ((x10204))
+:extrapreds ((x10205))
+:extrapreds ((x10206))
+:extrapreds ((x10207))
+:extrapreds ((x10208))
+:extrapreds ((x10209))
+:extrapreds ((x10210))
+:extrapreds ((x10211))
+:extrapreds ((x10212))
+:extrapreds ((x10213))
+:extrapreds ((x10214))
+:extrapreds ((x10215))
+:extrapreds ((x10216))
+:extrapreds ((x10217))
+:extrapreds ((x10218))
+:extrapreds ((x10219))
+:extrapreds ((x10220))
+:extrapreds ((x10221))
+:extrapreds ((x10222))
+:extrapreds ((x10223))
+:extrapreds ((x10224))
+:extrapreds ((x10225))
+:extrapreds ((x10226))
+:extrapreds ((x10227))
+:extrapreds ((x10228))
+:extrapreds ((x10229))
+:extrapreds ((x10230))
+:extrapreds ((x10231))
+:extrapreds ((x10232))
+:extrapreds ((x10233))
+:extrapreds ((x10234))
+:extrapreds ((x10235))
+:extrapreds ((x10236))
+:extrapreds ((x10237))
+:extrapreds ((x10238))
+:extrapreds ((x10239))
+:extrapreds ((x10240))
+:extrapreds ((x10241))
+:extrapreds ((x10242))
+:extrapreds ((x10243))
+:extrapreds ((x10244))
+:extrapreds ((x10245))
+:extrapreds ((x10246))
+:extrapreds ((x10247))
+:extrapreds ((x10248))
+:extrapreds ((x10249))
+:extrapreds ((x10250))
+:extrapreds ((x10251))
+:extrapreds ((x10252))
+:extrapreds ((x10253))
+:extrapreds ((x10254))
+:extrapreds ((x10255))
+:extrapreds ((x10256))
+:extrapreds ((x10257))
+:extrapreds ((x10258))
+:extrapreds ((x10259))
+:extrapreds ((x10260))
+:extrapreds ((x10261))
+:extrapreds ((x10262))
+:extrapreds ((x10263))
+:extrapreds ((x10264))
+:extrapreds ((x10265))
+:extrapreds ((x10266))
+:extrapreds ((x10267))
+:extrapreds ((x10268))
+:extrapreds ((x10269))
+:extrapreds ((x10270))
+:extrapreds ((x10271))
+:extrapreds ((x10272))
+:extrapreds ((x10273))
+:extrapreds ((x10274))
+:extrapreds ((x10275))
+:extrapreds ((x10276))
+:extrapreds ((x10277))
+:extrapreds ((x10278))
+:extrapreds ((x10279))
+:extrapreds ((x10280))
+:extrapreds ((x10281))
+:extrapreds ((x10282))
+:extrapreds ((x10283))
+:extrapreds ((x10284))
+:extrapreds ((x10285))
+:extrapreds ((x10286))
+:extrapreds ((x10287))
+:extrapreds ((x10288))
+:extrapreds ((x10289))
+:extrapreds ((x10290))
+:extrapreds ((x10291))
+:extrapreds ((x10292))
+:extrapreds ((x10293))
+:extrapreds ((x10294))
+:extrapreds ((x10295))
+:extrapreds ((x10296))
+:extrapreds ((x10297))
+:extrapreds ((x10298))
+:extrapreds ((x10299))
+:extrapreds ((x10300))
+:extrapreds ((x10301))
+:extrapreds ((x10302))
+:extrapreds ((x10303))
+:extrapreds ((x10304))
+:extrapreds ((x10305))
+:extrapreds ((x10306))
+:extrapreds ((x10307))
+:extrapreds ((x10308))
+:extrapreds ((x10309))
+:extrapreds ((x10310))
+:extrapreds ((x10311))
+:extrapreds ((x10312))
+:extrapreds ((x10313))
+:extrapreds ((x10314))
+:extrapreds ((x10315))
+:extrapreds ((x10316))
+:extrapreds ((x10317))
+:extrapreds ((x10318))
+:extrapreds ((x10319))
+:extrapreds ((x10320))
+:extrapreds ((x10321))
+:extrapreds ((x10322))
+:extrapreds ((x10323))
+:extrapreds ((x10324))
+:extrapreds ((x10325))
+:extrapreds ((x10326))
+:extrapreds ((x10327))
+:extrapreds ((x10328))
+:extrapreds ((x10329))
+:extrapreds ((x10330))
+:extrapreds ((x10331))
+:extrapreds ((x10332))
+:extrapreds ((x10333))
+:extrapreds ((x10334))
+:extrapreds ((x10335))
+:extrapreds ((x10336))
+:extrapreds ((x10337))
+:extrapreds ((x10338))
+:extrapreds ((x10339))
+:extrapreds ((x10340))
+:extrapreds ((x10341))
+:extrapreds ((x10342))
+:extrapreds ((x10343))
+:extrapreds ((x10344))
+:extrapreds ((x10345))
+:extrapreds ((x10346))
+:extrapreds ((x10347))
+:extrapreds ((x10348))
+:extrapreds ((x10349))
+:extrapreds ((x10350))
+:extrapreds ((x10351))
+:extrapreds ((x10352))
+:extrapreds ((x10353))
+:extrapreds ((x10354))
+:extrapreds ((x10355))
+:extrapreds ((x10356))
+:extrapreds ((x10357))
+:extrapreds ((x10358))
+:extrapreds ((x10359))
+:extrapreds ((x10360))
+:extrapreds ((x10361))
+:extrapreds ((x10362))
+:extrapreds ((x10363))
+:extrapreds ((x10364))
+:extrapreds ((x10365))
+:extrapreds ((x10366))
+:extrapreds ((x10367))
+:extrapreds ((x10368))
+:extrapreds ((x10369))
+:extrapreds ((x10370))
+:extrapreds ((x10371))
+:extrapreds ((x10372))
+:extrapreds ((x10373))
+:extrapreds ((x10374))
+:extrapreds ((x10375))
+:extrapreds ((x10376))
+:extrapreds ((x10377))
+:extrapreds ((x10378))
+:extrapreds ((x10379))
+:extrapreds ((x10380))
+:extrapreds ((x10381))
+:extrapreds ((x10382))
+:extrapreds ((x10383))
+:extrapreds ((x10384))
+:extrapreds ((x10385))
+:extrapreds ((x10386))
+:extrapreds ((x10387))
+:extrapreds ((x10388))
+:extrapreds ((x10389))
+:extrapreds ((x10390))
+:extrapreds ((x10391))
+:extrapreds ((x10392))
+:extrapreds ((x10393))
+:extrapreds ((x10394))
+:extrapreds ((x10395))
+:extrapreds ((x10396))
+:extrapreds ((x10397))
+:extrapreds ((x10398))
+:extrapreds ((x10399))
+:extrapreds ((x10400))
+:extrapreds ((x10401))
+:extrapreds ((x10402))
+:extrapreds ((x10403))
+:extrapreds ((x10404))
+:extrapreds ((x10405))
+:extrapreds ((x10406))
+:extrapreds ((x10407))
+:extrapreds ((x10408))
+:extrapreds ((x10409))
+:extrapreds ((x10410))
+:extrapreds ((x10411))
+:extrapreds ((x10412))
+:extrapreds ((x10413))
+:extrapreds ((x10414))
+:extrapreds ((x10415))
+:extrapreds ((x10416))
+:extrapreds ((x10417))
+:extrapreds ((x10418))
+:extrapreds ((x10419))
+:extrapreds ((x10420))
+:extrapreds ((x10421))
+:extrapreds ((x10422))
+:extrapreds ((x10423))
+:extrapreds ((x10424))
+:extrapreds ((x10425))
+:extrapreds ((x10426))
+:extrapreds ((x10427))
+:extrapreds ((x10428))
+:extrapreds ((x10429))
+:extrapreds ((x10430))
+:extrapreds ((x10431))
+:extrapreds ((x10432))
+:extrapreds ((x10433))
+:extrapreds ((x10434))
+:extrapreds ((x10435))
+:extrapreds ((x10436))
+:extrapreds ((x10437))
+:extrapreds ((x10438))
+:extrapreds ((x10439))
+:extrapreds ((x10440))
+:extrapreds ((x10441))
+:extrapreds ((x10442))
+:extrapreds ((x10443))
+:extrapreds ((x10444))
+:extrapreds ((x10445))
+:extrapreds ((x10446))
+:extrapreds ((x10447))
+:extrapreds ((x10448))
+:extrapreds ((x10449))
+:extrapreds ((x10450))
+:extrapreds ((x10451))
+:extrapreds ((x10452))
+:extrapreds ((x10453))
+:extrapreds ((x10454))
+:extrapreds ((x10455))
+:extrapreds ((x10456))
+:extrapreds ((x10457))
+:extrapreds ((x10458))
+:extrapreds ((x10459))
+:extrapreds ((x10460))
+:extrapreds ((x10461))
+:extrapreds ((x10462))
+:extrapreds ((x10463))
+:extrapreds ((x10464))
+:extrapreds ((x10465))
+:extrapreds ((x10466))
+:extrapreds ((x10467))
+:extrapreds ((x10468))
+:extrapreds ((x10469))
+:extrapreds ((x10470))
+:extrapreds ((x10471))
+:extrapreds ((x10472))
+:extrapreds ((x10473))
+:extrapreds ((x10474))
+:extrapreds ((x10475))
+:extrapreds ((x10476))
+:extrapreds ((x10477))
+:extrapreds ((x10478))
+:extrapreds ((x10479))
+:extrapreds ((x10480))
+:extrapreds ((x10481))
+:extrapreds ((x10482))
+:extrapreds ((x10483))
+:extrapreds ((x10484))
+:extrapreds ((x10485))
+:extrapreds ((x10486))
+:extrapreds ((x10487))
+:extrapreds ((x10488))
+:extrapreds ((x10489))
+:extrapreds ((x10490))
+:extrapreds ((x10491))
+:extrapreds ((x10492))
+:extrapreds ((x10493))
+:extrapreds ((x10494))
+:extrapreds ((x10495))
+:extrapreds ((x10496))
+:extrapreds ((x10497))
+:extrapreds ((x10498))
+:extrapreds ((x10499))
+:extrapreds ((x10500))
+:extrapreds ((x10501))
+:extrapreds ((x10502))
+:extrapreds ((x10503))
+:extrapreds ((x10504))
+:extrapreds ((x10505))
+:extrapreds ((x10506))
+:extrapreds ((x10507))
+:extrapreds ((x10508))
+:extrapreds ((x10509))
+:extrapreds ((x10510))
+:extrapreds ((x10511))
+:extrapreds ((x10512))
+:extrapreds ((x10513))
+:extrapreds ((x10514))
+:extrapreds ((x10515))
+:extrapreds ((x10516))
+:extrapreds ((x10517))
+:extrapreds ((x10518))
+:extrapreds ((x10519))
+:extrapreds ((x10520))
+:extrapreds ((x10521))
+:extrapreds ((x10522))
+:extrapreds ((x10523))
+:extrapreds ((x10524))
+:extrapreds ((x10525))
+:extrapreds ((x10526))
+:extrapreds ((x10527))
+:extrapreds ((x10528))
+:extrapreds ((x10529))
+:extrapreds ((x10530))
+:extrapreds ((x10531))
+:extrapreds ((x10532))
+:extrapreds ((x10533))
+:extrapreds ((x10534))
+:extrapreds ((x10535))
+:extrapreds ((x10536))
+:extrapreds ((x10537))
+:extrapreds ((x10538))
+:extrapreds ((x10539))
+:extrapreds ((x10540))
+:extrapreds ((x10541))
+:extrapreds ((x10542))
+:extrapreds ((x10543))
+:extrapreds ((x10544))
+:extrapreds ((x10545))
+:extrapreds ((x10546))
+:extrapreds ((x10547))
+:extrapreds ((x10548))
+:extrapreds ((x10549))
+:extrapreds ((x10550))
+:extrapreds ((x10551))
+:extrapreds ((x10552))
+:extrapreds ((x10553))
+:extrapreds ((x10554))
+:extrapreds ((x10555))
+:extrapreds ((x10556))
+:extrapreds ((x10557))
+:extrapreds ((x10558))
+:extrapreds ((x10559))
+:extrapreds ((x10560))
+:extrapreds ((x10561))
+:extrapreds ((x10562))
+:extrapreds ((x10563))
+:extrapreds ((x10564))
+:extrapreds ((x10565))
+:extrapreds ((x10566))
+:extrapreds ((x10567))
+:extrapreds ((x10568))
+:extrapreds ((x10569))
+:extrapreds ((x10570))
+:extrapreds ((x10571))
+:extrapreds ((x10572))
+:extrapreds ((x10573))
+:extrapreds ((x10574))
+:extrapreds ((x10575))
+:extrapreds ((x10576))
+:extrapreds ((x10577))
+:extrapreds ((x10578))
+:extrapreds ((x10579))
+:extrapreds ((x10580))
+:extrapreds ((x10581))
+:extrapreds ((x10582))
+:extrapreds ((x10583))
+:extrapreds ((x10584))
+:extrapreds ((x10585))
+:extrapreds ((x10586))
+:extrapreds ((x10587))
+:extrapreds ((x10588))
+:extrapreds ((x10589))
+:extrapreds ((x10590))
+:extrapreds ((x10591))
+:extrapreds ((x10592))
+:extrapreds ((x10593))
+:extrapreds ((x10594))
+:extrapreds ((x10595))
+:extrapreds ((x10596))
+:extrapreds ((x10597))
+:extrapreds ((x10598))
+:extrapreds ((x10599))
+:extrapreds ((x10600))
+:extrapreds ((x10601))
+:extrapreds ((x10602))
+:extrapreds ((x10603))
+:extrapreds ((x10604))
+:extrapreds ((x10605))
+:extrapreds ((x10606))
+:extrapreds ((x10607))
+:extrapreds ((x10608))
+:extrapreds ((x10609))
+:extrapreds ((x10610))
+:extrapreds ((x10611))
+:extrapreds ((x10612))
+:extrapreds ((x10613))
+:extrapreds ((x10614))
+:extrapreds ((x10615))
+:extrapreds ((x10616))
+:extrapreds ((x10617))
+:extrapreds ((x10618))
+:extrapreds ((x10619))
+:extrapreds ((x10620))
+:extrapreds ((x10621))
+:extrapreds ((x10622))
+:extrapreds ((x10623))
+:extrapreds ((x10624))
+:extrapreds ((x10625))
+:extrapreds ((x10626))
+:extrapreds ((x10627))
+:extrapreds ((x10628))
+:extrapreds ((x10629))
+:extrapreds ((x10630))
+:extrapreds ((x10631))
+:extrapreds ((x10632))
+:extrapreds ((x10633))
+:extrapreds ((x10634))
+:extrapreds ((x10635))
+:extrapreds ((x10636))
+:extrapreds ((x10637))
+:extrapreds ((x10638))
+:extrapreds ((x10639))
+:extrapreds ((x10640))
+:extrapreds ((x10641))
+:extrapreds ((x10642))
+:extrapreds ((x10643))
+:extrapreds ((x10644))
+:extrapreds ((x10645))
+:extrapreds ((x10646))
+:extrapreds ((x10647))
+:extrapreds ((x10648))
+:extrapreds ((x10649))
+:extrapreds ((x10650))
+:extrapreds ((x10651))
+:extrapreds ((x10652))
+:extrapreds ((x10653))
+:extrapreds ((x10654))
+:extrapreds ((x10655))
+:extrapreds ((x10656))
+:extrapreds ((x10657))
+:extrapreds ((x10658))
+:extrapreds ((x10659))
+:extrapreds ((x10660))
+:extrapreds ((x10661))
+:extrapreds ((x10662))
+:extrapreds ((x10663))
+:extrapreds ((x10664))
+:extrapreds ((x10665))
+:extrapreds ((x10666))
+:extrapreds ((x10667))
+:extrapreds ((x10668))
+:extrapreds ((x10669))
+:extrapreds ((x10670))
+:extrapreds ((x10671))
+:extrapreds ((x10672))
+:extrapreds ((x10673))
+:extrapreds ((x10674))
+:extrapreds ((x10675))
+:extrapreds ((x10676))
+:extrapreds ((x10677))
+:extrapreds ((x10678))
+:extrapreds ((x10679))
+:extrapreds ((x10680))
+:extrapreds ((x10681))
+:extrapreds ((x10682))
+:extrapreds ((x10683))
+:extrapreds ((x10684))
+:extrapreds ((x10685))
+:extrapreds ((x10686))
+:extrapreds ((x10687))
+:extrapreds ((x10688))
+:extrapreds ((x10689))
+:extrapreds ((x10690))
+:extrapreds ((x10691))
+:extrapreds ((x10692))
+:extrapreds ((x10693))
+:extrapreds ((x10694))
+:extrapreds ((x10695))
+:extrapreds ((x10696))
+:extrapreds ((x10697))
+:extrapreds ((x10698))
+:extrapreds ((x10699))
+:extrapreds ((x10700))
+:extrapreds ((x10701))
+:extrapreds ((x10702))
+:extrapreds ((x10703))
+:extrapreds ((x10704))
+:extrapreds ((x10705))
+:extrapreds ((x10706))
+:extrapreds ((x10707))
+:extrapreds ((x10708))
+:extrapreds ((x10709))
+:extrapreds ((x10710))
+:extrapreds ((x10711))
+:extrapreds ((x10712))
+:extrapreds ((x10713))
+:extrapreds ((x10714))
+:extrapreds ((x10715))
+:extrapreds ((x10716))
+:extrapreds ((x10717))
+:extrapreds ((x10718))
+:extrapreds ((x10719))
+:extrapreds ((x10720))
+:extrapreds ((x10721))
+:extrapreds ((x10722))
+:extrapreds ((x10723))
+:extrapreds ((x10724))
+:extrapreds ((x10725))
+:extrapreds ((x10726))
+:extrapreds ((x10727))
+:extrapreds ((x10728))
+:extrapreds ((x10729))
+:extrapreds ((x10730))
+:extrapreds ((x10731))
+:extrapreds ((x10732))
+:extrapreds ((x10733))
+:extrapreds ((x10734))
+:extrapreds ((x10735))
+:extrapreds ((x10736))
+:extrapreds ((x10737))
+:extrapreds ((x10738))
+:extrapreds ((x10739))
+:extrapreds ((x10740))
+:extrapreds ((x10741))
+:extrapreds ((x10742))
+:extrapreds ((x10743))
+:extrapreds ((x10744))
+:extrapreds ((x10745))
+:extrapreds ((x10746))
+:extrapreds ((x10747))
+:extrapreds ((x10748))
+:extrapreds ((x10749))
+:extrapreds ((x10750))
+:extrapreds ((x10751))
+:extrapreds ((x10752))
+:extrapreds ((x10753))
+:extrapreds ((x10754))
+:extrapreds ((x10755))
+:extrapreds ((x10756))
+:extrapreds ((x10757))
+:extrapreds ((x10758))
+:extrapreds ((x10759))
+:extrapreds ((x10760))
+:extrapreds ((x10761))
+:extrapreds ((x10762))
+:extrapreds ((x10763))
+:extrapreds ((x10764))
+:extrapreds ((x10765))
+:extrapreds ((x10766))
+:extrapreds ((x10767))
+:extrapreds ((x10768))
+:extrapreds ((x10769))
+:extrapreds ((x10770))
+:extrapreds ((x10771))
+:extrapreds ((x10772))
+:extrapreds ((x10773))
+:extrapreds ((x10774))
+:extrapreds ((x10775))
+:extrapreds ((x10776))
+:extrapreds ((x10777))
+:extrapreds ((x10778))
+:extrapreds ((x10779))
+:extrapreds ((x10780))
+:extrapreds ((x10781))
+:extrapreds ((x10782))
+:extrapreds ((x10783))
+:extrapreds ((x10784))
+:extrapreds ((x10785))
+:extrapreds ((x10786))
+:extrapreds ((x10787))
+:extrapreds ((x10788))
+:extrapreds ((x10789))
+:extrapreds ((x10790))
+:extrapreds ((x10791))
+:extrapreds ((x10792))
+:extrapreds ((x10793))
+:extrapreds ((x10794))
+:extrapreds ((x10795))
+:extrapreds ((x10796))
+:extrapreds ((x10797))
+:extrapreds ((x10798))
+:extrapreds ((x10799))
+:extrapreds ((x10800))
+:extrapreds ((x10801))
+:extrapreds ((x10802))
+:extrapreds ((x10803))
+:extrapreds ((x10804))
+:extrapreds ((x10805))
+:extrapreds ((x10806))
+:extrapreds ((x10807))
+:extrapreds ((x10808))
+:extrapreds ((x10809))
+:extrapreds ((x10810))
+:extrapreds ((x10811))
+:extrapreds ((x10812))
+:extrapreds ((x10813))
+:extrapreds ((x10814))
+:extrapreds ((x10815))
+:extrapreds ((x10816))
+:extrapreds ((x10817))
+:extrapreds ((x10818))
+:extrapreds ((x10819))
+:extrapreds ((x10820))
+:extrapreds ((x10821))
+:extrapreds ((x10822))
+:extrapreds ((x10823))
+:extrapreds ((x10824))
+:extrapreds ((x10825))
+:extrapreds ((x10826))
+:extrapreds ((x10827))
+:extrapreds ((x10828))
+:extrapreds ((x10829))
+:extrapreds ((x10830))
+:extrapreds ((x10831))
+:extrapreds ((x10832))
+:extrapreds ((x10833))
+:extrapreds ((x10834))
+:extrapreds ((x10835))
+:extrapreds ((x10836))
+:extrapreds ((x10837))
+:extrapreds ((x10838))
+:extrapreds ((x10839))
+:extrapreds ((x10840))
+:extrapreds ((x10841))
+:extrapreds ((x10842))
+:extrapreds ((x10843))
+:extrapreds ((x10844))
+:extrapreds ((x10845))
+:extrapreds ((x10846))
+:extrapreds ((x10847))
+:extrapreds ((x10848))
+:extrapreds ((x10849))
+:extrapreds ((x10850))
+:extrapreds ((x10851))
+:extrapreds ((x10852))
+:extrapreds ((x10853))
+:extrapreds ((x10854))
+:extrapreds ((x10855))
+:extrapreds ((x10856))
+:extrapreds ((x10857))
+:extrapreds ((x10858))
+:extrapreds ((x10859))
+:extrapreds ((x10860))
+:extrapreds ((x10861))
+:extrapreds ((x10862))
+:extrapreds ((x10863))
+:extrapreds ((x10864))
+:extrapreds ((x10865))
+:extrapreds ((x10866))
+:extrapreds ((x10867))
+:extrapreds ((x10868))
+:extrapreds ((x10869))
+:extrapreds ((x10870))
+:extrapreds ((x10871))
+:extrapreds ((x10872))
+:extrapreds ((x10873))
+:extrapreds ((x10874))
+:extrapreds ((x10875))
+:extrapreds ((x10876))
+:extrapreds ((x10877))
+:extrapreds ((x10878))
+:extrapreds ((x10879))
+:extrapreds ((x10880))
+:extrapreds ((x10881))
+:extrapreds ((x10882))
+:extrapreds ((x10883))
+:extrapreds ((x10884))
+:extrapreds ((x10885))
+:extrapreds ((x10886))
+:extrapreds ((x10887))
+:extrapreds ((x10888))
+:extrapreds ((x10889))
+:extrapreds ((x10890))
+:extrapreds ((x10891))
+:extrapreds ((x10892))
+:extrapreds ((x10893))
+:extrapreds ((x10894))
+:extrapreds ((x10895))
+:extrapreds ((x10896))
+:extrapreds ((x10897))
+:extrapreds ((x10898))
+:extrapreds ((x10899))
+:extrapreds ((x10900))
+:extrapreds ((x10901))
+:extrapreds ((x10902))
+:extrapreds ((x10903))
+:extrapreds ((x10904))
+:extrapreds ((x10905))
+:extrapreds ((x10906))
+:extrapreds ((x10907))
+:extrapreds ((x10908))
+:extrapreds ((x10909))
+:extrapreds ((x10910))
+:extrapreds ((x10911))
+:extrapreds ((x10912))
+:extrapreds ((x10913))
+:extrapreds ((x10914))
+:extrapreds ((x10915))
+:extrapreds ((x10916))
+:extrapreds ((x10917))
+:extrapreds ((x10918))
+:extrapreds ((x10919))
+:extrapreds ((x10920))
+:extrapreds ((x10921))
+:extrapreds ((x10922))
+:extrapreds ((x10923))
+:extrapreds ((x10924))
+:extrapreds ((x10925))
+:extrapreds ((x10926))
+:extrapreds ((x10927))
+:extrapreds ((x10928))
+:extrapreds ((x10929))
+:extrapreds ((x10930))
+:extrapreds ((x10931))
+:extrapreds ((x10932))
+:extrapreds ((x10933))
+:extrapreds ((x10934))
+:extrapreds ((x10935))
+:extrapreds ((x10936))
+:extrapreds ((x10937))
+:extrapreds ((x10938))
+:extrapreds ((x10939))
+:extrapreds ((x10940))
+:extrapreds ((x10941))
+:extrapreds ((x10942))
+:extrapreds ((x10943))
+:extrapreds ((x10944))
+:extrapreds ((x10945))
+:extrapreds ((x10946))
+:extrapreds ((x10947))
+:extrapreds ((x10948))
+:extrapreds ((x10949))
+:extrapreds ((x10950))
+:extrapreds ((x10951))
+:extrapreds ((x10952))
+:extrapreds ((x10953))
+:extrapreds ((x10954))
+:extrapreds ((x10955))
+:extrapreds ((x10956))
+:extrapreds ((x10957))
+:extrapreds ((x10958))
+:extrapreds ((x10959))
+:extrapreds ((x10960))
+:extrapreds ((x10961))
+:extrapreds ((x10962))
+:extrapreds ((x10963))
+:extrapreds ((x10964))
+:extrapreds ((x10965))
+:extrapreds ((x10966))
+:extrapreds ((x10967))
+:extrapreds ((x10968))
+:extrapreds ((x10969))
+:extrapreds ((x10970))
+:extrapreds ((x10971))
+:extrapreds ((x10972))
+:extrapreds ((x10973))
+:extrapreds ((x10974))
+:extrapreds ((x10975))
+:extrapreds ((x10976))
+:extrapreds ((x10977))
+:extrapreds ((x10978))
+:extrapreds ((x10979))
+:extrapreds ((x10980))
+:extrapreds ((x10981))
+:extrapreds ((x10982))
+:extrapreds ((x10983))
+:extrapreds ((x10984))
+:extrapreds ((x10985))
+:extrapreds ((x10986))
+:extrapreds ((x10987))
+:extrapreds ((x10988))
+:extrapreds ((x10989))
+:extrapreds ((x10990))
+:extrapreds ((x10991))
+:extrapreds ((x10992))
+:extrapreds ((x10993))
+:extrapreds ((x10994))
+:extrapreds ((x10995))
+:extrapreds ((x10996))
+:extrapreds ((x10997))
+:extrapreds ((x10998))
+:extrapreds ((x10999))
+:extrapreds ((x11000))
+:extrapreds ((x11001))
+:extrapreds ((x11002))
+:extrapreds ((x11003))
+:extrapreds ((x11004))
+:extrapreds ((x11005))
+:extrapreds ((x11006))
+:extrapreds ((x11007))
+:extrapreds ((x11008))
+:extrapreds ((x11009))
+:extrapreds ((x11010))
+:extrapreds ((x11011))
+:extrapreds ((x11012))
+:extrapreds ((x11013))
+:extrapreds ((x11014))
+:extrapreds ((x11015))
+:extrapreds ((x11016))
+:extrapreds ((x11017))
+:extrapreds ((x11018))
+:extrapreds ((x11019))
+:extrapreds ((x11020))
+:extrapreds ((x11021))
+:extrapreds ((x11022))
+:extrapreds ((x11023))
+:extrapreds ((x11024))
+:extrapreds ((x11025))
+:extrapreds ((x11026))
+:extrapreds ((x11027))
+:extrapreds ((x11028))
+:extrapreds ((x11029))
+:extrapreds ((x11030))
+:extrapreds ((x11031))
+:extrapreds ((x11032))
+:extrapreds ((x11033))
+:extrapreds ((x11034))
+:extrapreds ((x11035))
+:extrapreds ((x11036))
+:extrapreds ((x11037))
+:extrapreds ((x11038))
+:extrapreds ((x11039))
+:extrapreds ((x11040))
+:extrapreds ((x11041))
+:extrapreds ((x11042))
+:extrapreds ((x11043))
+:extrapreds ((x11044))
+:extrapreds ((x11045))
+:extrapreds ((x11046))
+:extrapreds ((x11047))
+:extrapreds ((x11048))
+:extrapreds ((x11049))
+:extrapreds ((x11050))
+:extrapreds ((x11051))
+:extrapreds ((x11052))
+:extrapreds ((x11053))
+:extrapreds ((x11054))
+:extrapreds ((x11055))
+:extrapreds ((x11056))
+:extrapreds ((x11057))
+:extrapreds ((x11058))
+:extrapreds ((x11059))
+:extrapreds ((x11060))
+:extrapreds ((x11061))
+:extrapreds ((x11062))
+:extrapreds ((x11063))
+:extrapreds ((x11064))
+:extrapreds ((x11065))
+:extrapreds ((x11066))
+:extrapreds ((x11067))
+:extrapreds ((x11068))
+:extrapreds ((x11069))
+:extrapreds ((x11070))
+:extrapreds ((x11071))
+:extrapreds ((x11072))
+:extrapreds ((x11073))
+:extrapreds ((x11074))
+:extrapreds ((x11075))
+:extrapreds ((x11076))
+:extrapreds ((x11077))
+:extrapreds ((x11078))
+:extrapreds ((x11079))
+:extrapreds ((x11080))
+:extrapreds ((x11081))
+:extrapreds ((x11082))
+:extrapreds ((x11083))
+:extrapreds ((x11084))
+:extrapreds ((x11085))
+:extrapreds ((x11086))
+:extrapreds ((x11087))
+:extrapreds ((x11088))
+:extrapreds ((x11089))
+:extrapreds ((x11090))
+:extrapreds ((x11091))
+:extrapreds ((x11092))
+:extrapreds ((x11093))
+:extrapreds ((x11094))
+:extrapreds ((x11095))
+:extrapreds ((x11096))
+:extrapreds ((x11097))
+:extrapreds ((x11098))
+:extrapreds ((x11099))
+:extrapreds ((x11100))
+:extrapreds ((x11101))
+:extrapreds ((x11102))
+:extrapreds ((x11103))
+:extrapreds ((x11104))
+:extrapreds ((x11105))
+:extrapreds ((x11106))
+:extrapreds ((x11107))
+:extrapreds ((x11108))
+:extrapreds ((x11109))
+:extrapreds ((x11110))
+:extrapreds ((x11111))
+:extrapreds ((x11112))
+:extrapreds ((x11113))
+:extrapreds ((x11114))
+:extrapreds ((x11115))
+:extrapreds ((x11116))
+:extrapreds ((x11117))
+:extrapreds ((x11118))
+:extrapreds ((x11119))
+:extrapreds ((x11120))
+:extrapreds ((x11121))
+:extrapreds ((x11122))
+:extrapreds ((x11123))
+:extrapreds ((x11124))
+:extrapreds ((x11125))
+:extrapreds ((x11126))
+:extrapreds ((x11127))
+:extrapreds ((x11128))
+:extrapreds ((x11129))
+:extrapreds ((x11130))
+:extrapreds ((x11131))
+:extrapreds ((x11132))
+:extrapreds ((x11133))
+:extrapreds ((x11134))
+:extrapreds ((x11135))
+:extrapreds ((x11136))
+:extrapreds ((x11137))
+:extrapreds ((x11138))
+:extrapreds ((x11139))
+:extrapreds ((x11140))
+:extrapreds ((x11141))
+:extrapreds ((x11142))
+:extrapreds ((x11143))
+:extrapreds ((x11144))
+:extrapreds ((x11145))
+:extrapreds ((x11146))
+:extrapreds ((x11147))
+:extrapreds ((x11148))
+:extrapreds ((x11149))
+:extrapreds ((x11150))
+:extrapreds ((x11151))
+:extrapreds ((x11152))
+:extrapreds ((x11153))
+:extrapreds ((x11154))
+:extrapreds ((x11155))
+:extrapreds ((x11156))
+:extrapreds ((x11157))
+:extrapreds ((x11158))
+:extrapreds ((x11159))
+:extrapreds ((x11160))
+:extrapreds ((x11161))
+:extrapreds ((x11162))
+:extrapreds ((x11163))
+:extrapreds ((x11164))
+:extrapreds ((x11165))
+:extrapreds ((x11166))
+:extrapreds ((x11167))
+:extrapreds ((x11168))
+:extrapreds ((x11169))
+:extrapreds ((x11170))
+:extrapreds ((x11171))
+:extrapreds ((x11172))
+:extrapreds ((x11173))
+:extrapreds ((x11174))
+:extrapreds ((x11175))
+:extrapreds ((x11176))
+:extrapreds ((x11177))
+:extrapreds ((x11178))
+:extrapreds ((x11179))
+:extrapreds ((x11180))
+:extrapreds ((x11181))
+:extrapreds ((x11182))
+:extrapreds ((x11183))
+:extrapreds ((x11184))
+:extrapreds ((x11185))
+:extrapreds ((x11186))
+:extrapreds ((x11187))
+:extrapreds ((x11188))
+:extrapreds ((x11189))
+:extrapreds ((x11190))
+:extrapreds ((x11191))
+:extrapreds ((x11192))
+:extrapreds ((x11193))
+:extrapreds ((x11194))
+:extrapreds ((x11195))
+:extrapreds ((x11196))
+:extrapreds ((x11197))
+:extrapreds ((x11198))
+:extrapreds ((x11199))
+:extrapreds ((x11200))
+:extrapreds ((x11201))
+:extrapreds ((x11202))
+:extrapreds ((x11203))
+:extrapreds ((x11204))
+:extrapreds ((x11205))
+:extrapreds ((x11206))
+:extrapreds ((x11207))
+:extrapreds ((x11208))
+:extrapreds ((x11209))
+:extrapreds ((x11210))
+:extrapreds ((x11211))
+:extrapreds ((x11212))
+:extrapreds ((x11213))
+:extrapreds ((x11214))
+:extrapreds ((x11215))
+:extrapreds ((x11216))
+:extrapreds ((x11217))
+:extrapreds ((x11218))
+:extrapreds ((x11219))
+:extrapreds ((x11220))
+:extrapreds ((x11221))
+:extrapreds ((x11222))
+:extrapreds ((x11223))
+:extrapreds ((x11224))
+:extrapreds ((x11225))
+:extrapreds ((x11226))
+:extrapreds ((x11227))
+:extrapreds ((x11228))
+:extrapreds ((x11229))
+:extrapreds ((x11230))
+:extrapreds ((x11231))
+:extrapreds ((x11232))
+:extrapreds ((x11233))
+:extrapreds ((x11234))
+:extrapreds ((x11235))
+:extrapreds ((x11236))
+:extrapreds ((x11237))
+:extrapreds ((x11238))
+:extrapreds ((x11239))
+:extrapreds ((x11240))
+:extrapreds ((x11241))
+:extrapreds ((x11242))
+:extrapreds ((x11243))
+:extrapreds ((x11244))
+:extrapreds ((x11245))
+:extrapreds ((x11246))
+:extrapreds ((x11247))
+:extrapreds ((x11248))
+:extrapreds ((x11249))
+:extrapreds ((x11250))
+:extrapreds ((x11251))
+:extrapreds ((x11252))
+:extrapreds ((x11253))
+:extrapreds ((x11254))
+:extrapreds ((x11255))
+:extrapreds ((x11256))
+:extrapreds ((x11257))
+:extrapreds ((x11258))
+:extrapreds ((x11259))
+:extrapreds ((x11260))
+:extrapreds ((x11261))
+:extrapreds ((x11262))
+:extrapreds ((x11263))
+:extrapreds ((x11264))
+:extrapreds ((x11265))
+:extrapreds ((x11266))
+:extrapreds ((x11267))
+:extrapreds ((x11268))
+:extrapreds ((x11269))
+:extrapreds ((x11270))
+:extrapreds ((x11271))
+:extrapreds ((x11272))
+:extrapreds ((x11273))
+:extrapreds ((x11274))
+:extrapreds ((x11275))
+:extrapreds ((x11276))
+:extrapreds ((x11277))
+:extrapreds ((x11278))
+:extrapreds ((x11279))
+:extrapreds ((x11280))
+:extrapreds ((x11281))
+:extrapreds ((x11282))
+:extrapreds ((x11283))
+:extrapreds ((x11284))
+:extrapreds ((x11285))
+:extrapreds ((x11286))
+:extrapreds ((x11287))
+:extrapreds ((x11288))
+:extrapreds ((x11289))
+:extrapreds ((x11290))
+:extrapreds ((x11291))
+:extrapreds ((x11292))
+:extrapreds ((x11293))
+:extrapreds ((x11294))
+:extrapreds ((x11295))
+:extrapreds ((x11296))
+:extrapreds ((x11297))
+:extrapreds ((x11298))
+:extrapreds ((x11299))
+:extrapreds ((x11300))
+:extrapreds ((x11301))
+:extrapreds ((x11302))
+:extrapreds ((x11303))
+:extrapreds ((x11304))
+:extrapreds ((x11305))
+:extrapreds ((x11306))
+:extrapreds ((x11307))
+:extrapreds ((x11308))
+:extrapreds ((x11309))
+:extrapreds ((x11310))
+:extrapreds ((x11311))
+:extrapreds ((x11312))
+:extrapreds ((x11313))
+:extrapreds ((x11314))
+:extrapreds ((x11315))
+:extrapreds ((x11316))
+:extrapreds ((x11317))
+:extrapreds ((x11318))
+:extrapreds ((x11319))
+:extrapreds ((x11320))
+:extrapreds ((x11321))
+:extrapreds ((x11322))
+:extrapreds ((x11323))
+:extrapreds ((x11324))
+:extrapreds ((x11325))
+:extrapreds ((x11326))
+:extrapreds ((x11327))
+:extrapreds ((x11328))
+:extrapreds ((x11329))
+:extrapreds ((x11330))
+:extrapreds ((x11331))
+:extrapreds ((x11332))
+:extrapreds ((x11333))
+:extrapreds ((x11334))
+:extrapreds ((x11335))
+:extrapreds ((x11336))
+:extrapreds ((x11337))
+:extrapreds ((x11338))
+:extrapreds ((x11339))
+:extrapreds ((x11340))
+:extrapreds ((x11341))
+:extrapreds ((x11342))
+:extrapreds ((x11343))
+:extrapreds ((x11344))
+:extrapreds ((x11345))
+:extrapreds ((x11346))
+:extrapreds ((x11347))
+:extrapreds ((x11348))
+:extrapreds ((x11349))
+:extrapreds ((x11350))
+:extrapreds ((x11351))
+:extrapreds ((x11352))
+:extrapreds ((x11353))
+:extrapreds ((x11354))
+:extrapreds ((x11355))
+:extrapreds ((x11356))
+:extrapreds ((x11357))
+:extrapreds ((x11358))
+:extrapreds ((x11359))
+:extrapreds ((x11360))
+:extrapreds ((x11361))
+:extrapreds ((x11362))
+:extrapreds ((x11363))
+:extrapreds ((x11364))
+:extrapreds ((x11365))
+:extrapreds ((x11366))
+:extrapreds ((x11367))
+:extrapreds ((x11368))
+:extrapreds ((x11369))
+:extrapreds ((x11370))
+:extrapreds ((x11371))
+:extrapreds ((x11372))
+:extrapreds ((x11373))
+:extrapreds ((x11374))
+:extrapreds ((x11375))
+:extrapreds ((x11376))
+:extrapreds ((x11377))
+:extrapreds ((x11378))
+:extrapreds ((x11379))
+:extrapreds ((x11380))
+:extrapreds ((x11381))
+:extrapreds ((x11382))
+:extrapreds ((x11383))
+:extrapreds ((x11384))
+:extrapreds ((x11385))
+:extrapreds ((x11386))
+:extrapreds ((x11387))
+:extrapreds ((x11388))
+:extrapreds ((x11389))
+:extrapreds ((x11390))
+:extrapreds ((x11391))
+:extrapreds ((x11392))
+:extrapreds ((x11393))
+:extrapreds ((x11394))
+:extrapreds ((x11395))
+:extrapreds ((x11396))
+:extrapreds ((x11397))
+:extrapreds ((x11398))
+:extrapreds ((x11399))
+:extrapreds ((x11400))
+:extrapreds ((x11401))
+:extrapreds ((x11402))
+:extrapreds ((x11403))
+:extrapreds ((x11404))
+:extrapreds ((x11405))
+:extrapreds ((x11406))
+:extrapreds ((x11407))
+:extrapreds ((x11408))
+:extrapreds ((x11409))
+:extrapreds ((x11410))
+:extrapreds ((x11411))
+:extrapreds ((x11412))
+:extrapreds ((x11413))
+:extrapreds ((x11414))
+:extrapreds ((x11415))
+:extrapreds ((x11416))
+:extrapreds ((x11417))
+:extrapreds ((x11418))
+:extrapreds ((x11419))
+:extrapreds ((x11420))
+:extrapreds ((x11421))
+:extrapreds ((x11422))
+:extrapreds ((x11423))
+:extrapreds ((x11424))
+:extrapreds ((x11425))
+:extrapreds ((x11426))
+:extrapreds ((x11427))
+:extrapreds ((x11428))
+:extrapreds ((x11429))
+:extrapreds ((x11430))
+:extrapreds ((x11431))
+:extrapreds ((x11432))
+:extrapreds ((x11433))
+:extrapreds ((x11434))
+:extrapreds ((x11435))
+:extrapreds ((x11436))
+:extrapreds ((x11437))
+:extrapreds ((x11438))
+:extrapreds ((x11439))
+:extrapreds ((x11440))
+:extrapreds ((x11441))
+:extrapreds ((x11442))
+:extrapreds ((x11443))
+:extrapreds ((x11444))
+:extrapreds ((x11445))
+:extrapreds ((x11446))
+:extrapreds ((x11447))
+:extrapreds ((x11448))
+:extrapreds ((x11449))
+:extrapreds ((x11450))
+:extrapreds ((x11451))
+:extrapreds ((x11452))
+:extrapreds ((x11453))
+:extrapreds ((x11454))
+:extrapreds ((x11455))
+:extrapreds ((x11456))
+:extrapreds ((x11457))
+:extrapreds ((x11458))
+:extrapreds ((x11459))
+:extrapreds ((x11460))
+:extrapreds ((x11461))
+:extrapreds ((x11462))
+:extrapreds ((x11463))
+:extrapreds ((x11464))
+:extrapreds ((x11465))
+:extrapreds ((x11466))
+:extrapreds ((x11467))
+:extrapreds ((x11468))
+:extrapreds ((x11469))
+:extrapreds ((x11470))
+:extrapreds ((x11471))
+:extrapreds ((x11472))
+:extrapreds ((x11473))
+:extrapreds ((x11474))
+:extrapreds ((x11475))
+:extrapreds ((x11476))
+:extrapreds ((x11477))
+:extrapreds ((x11478))
+:extrapreds ((x11479))
+:extrapreds ((x11480))
+:extrapreds ((x11481))
+:extrapreds ((x11482))
+:extrapreds ((x11483))
+:extrapreds ((x11484))
+:extrapreds ((x11485))
+:extrapreds ((x11486))
+:extrapreds ((x11487))
+:extrapreds ((x11488))
+:extrapreds ((x11489))
+:extrapreds ((x11490))
+:extrapreds ((x11491))
+:extrapreds ((x11492))
+:extrapreds ((x11493))
+:extrapreds ((x11494))
+:extrapreds ((x11495))
+:extrapreds ((x11496))
+:extrapreds ((x11497))
+:extrapreds ((x11498))
+:extrapreds ((x11499))
+:extrapreds ((x11500))
+:extrapreds ((x11501))
+:extrapreds ((x11502))
+:extrapreds ((x11503))
+:extrapreds ((x11504))
+:extrapreds ((x11505))
+:extrapreds ((x11506))
+:extrapreds ((x11507))
+:extrapreds ((x11508))
+:extrapreds ((x11509))
+:extrapreds ((x11510))
+:extrapreds ((x11511))
+:extrapreds ((x11512))
+:extrapreds ((x11513))
+:extrapreds ((x11514))
+:extrapreds ((x11515))
+:extrapreds ((x11516))
+:extrapreds ((x11517))
+:extrapreds ((x11518))
+:extrapreds ((x11519))
+:extrapreds ((x11520))
+:extrapreds ((x11521))
+:extrapreds ((x11522))
+:extrapreds ((x11523))
+:extrapreds ((x11524))
+:extrapreds ((x11525))
+:extrapreds ((x11526))
+:extrapreds ((x11527))
+:extrapreds ((x11528))
+:extrapreds ((x11529))
+:extrapreds ((x11530))
+:extrapreds ((x11531))
+:extrapreds ((x11532))
+:extrapreds ((x11533))
+:extrapreds ((x11534))
+:extrapreds ((x11535))
+:extrapreds ((x11536))
+:extrapreds ((x11537))
+:extrapreds ((x11538))
+:extrapreds ((x11539))
+:extrapreds ((x11540))
+:extrapreds ((x11541))
+:extrapreds ((x11542))
+:extrapreds ((x11543))
+:extrapreds ((x11544))
+:extrapreds ((x11545))
+:extrapreds ((x11546))
+:extrapreds ((x11547))
+:extrapreds ((x11548))
+:extrapreds ((x11549))
+:extrapreds ((x11550))
+:extrapreds ((x11551))
+:extrapreds ((x11552))
+:extrapreds ((x11553))
+:extrapreds ((x11554))
+:extrapreds ((x11555))
+:extrapreds ((x11556))
+:extrapreds ((x11557))
+:extrapreds ((x11558))
+:extrapreds ((x11559))
+:extrapreds ((x11560))
+:extrapreds ((x11561))
+:extrapreds ((x11562))
+:extrapreds ((x11563))
+:extrapreds ((x11564))
+:extrapreds ((x11565))
+:extrapreds ((x11566))
+:extrapreds ((x11567))
+:extrapreds ((x11568))
+:extrapreds ((x11569))
+:extrapreds ((x11570))
+:extrapreds ((x11571))
+:extrapreds ((x11572))
+:extrapreds ((x11573))
+:extrapreds ((x11574))
+:extrapreds ((x11575))
+:extrapreds ((x11576))
+:extrapreds ((x11577))
+:extrapreds ((x11578))
+:extrapreds ((x11579))
+:extrapreds ((x11580))
+:extrapreds ((x11581))
+:extrapreds ((x11582))
+:extrapreds ((x11583))
+:extrapreds ((x11584))
+:extrapreds ((x11585))
+:extrapreds ((x11586))
+:extrapreds ((x11587))
+:extrapreds ((x11588))
+:extrapreds ((x11589))
+:extrapreds ((x11590))
+:extrapreds ((x11591))
+:extrapreds ((x11592))
+:extrapreds ((x11593))
+:extrapreds ((x11594))
+:extrapreds ((x11595))
+:extrapreds ((x11596))
+:extrapreds ((x11597))
+:extrapreds ((x11598))
+:extrapreds ((x11599))
+:extrapreds ((x11600))
+:extrapreds ((x11601))
+:extrapreds ((x11602))
+:extrapreds ((x11603))
+:extrapreds ((x11604))
+:extrapreds ((x11605))
+:extrapreds ((x11606))
+:extrapreds ((x11607))
+:extrapreds ((x11608))
+:extrapreds ((x11609))
+:extrapreds ((x11610))
+:extrapreds ((x11611))
+:extrapreds ((x11612))
+:extrapreds ((x11613))
+:extrapreds ((x11614))
+:extrapreds ((x11615))
+:extrapreds ((x11616))
+:extrapreds ((x11617))
+:extrapreds ((x11618))
+:extrapreds ((x11619))
+:extrapreds ((x11620))
+:extrapreds ((x11621))
+:extrapreds ((x11622))
+:extrapreds ((x11623))
+:extrapreds ((x11624))
+:extrapreds ((x11625))
+:extrapreds ((x11626))
+:extrapreds ((x11627))
+:extrapreds ((x11628))
+:extrapreds ((x11629))
+:extrapreds ((x11630))
+:extrapreds ((x11631))
+:extrapreds ((x11632))
+:extrapreds ((x11633))
+:extrapreds ((x11634))
+:extrapreds ((x11635))
+:extrapreds ((x11636))
+:extrapreds ((x11637))
+:extrapreds ((x11638))
+:extrapreds ((x11639))
+:extrapreds ((x11640))
+:extrapreds ((x11641))
+:extrapreds ((x11642))
+:extrapreds ((x11643))
+:extrapreds ((x11644))
+:extrapreds ((x11645))
+:extrapreds ((x11646))
+:extrapreds ((x11647))
+:extrapreds ((x11648))
+:extrapreds ((x11649))
+:extrapreds ((x11650))
+:extrapreds ((x11651))
+:extrapreds ((x11652))
+:extrapreds ((x11653))
+:extrapreds ((x11654))
+:extrapreds ((x11655))
+:extrapreds ((x11656))
+:extrapreds ((x11657))
+:extrapreds ((x11658))
+:extrapreds ((x11659))
+:extrapreds ((x11660))
+:extrapreds ((x11661))
+:extrapreds ((x11662))
+:extrapreds ((x11663))
+:extrapreds ((x11664))
+:extrapreds ((x11665))
+:extrapreds ((x11666))
+:extrapreds ((x11667))
+:extrapreds ((x11668))
+:extrapreds ((x11669))
+:extrapreds ((x11670))
+:extrapreds ((x11671))
+:extrapreds ((x11672))
+:extrapreds ((x11673))
+:extrapreds ((x11674))
+:extrapreds ((x11675))
+:extrapreds ((x11676))
+:extrapreds ((x11677))
+:extrapreds ((x11678))
+:extrapreds ((x11679))
+:extrapreds ((x11680))
+:extrapreds ((x11681))
+:extrapreds ((x11682))
+:extrapreds ((x11683))
+:extrapreds ((x11684))
+:extrapreds ((x11685))
+:extrapreds ((x11686))
+:extrapreds ((x11687))
+:extrapreds ((x11688))
+:extrapreds ((x11689))
+:extrapreds ((x11690))
+:extrapreds ((x11691))
+:extrapreds ((x11692))
+:extrapreds ((x11693))
+:extrapreds ((x11694))
+:extrapreds ((x11695))
+:extrapreds ((x11696))
+:extrapreds ((x11697))
+:extrapreds ((x11698))
+:extrapreds ((x11699))
+:extrapreds ((x11700))
+:extrapreds ((x11701))
+:extrapreds ((x11702))
+:extrapreds ((x11703))
+:extrapreds ((x11704))
+:extrapreds ((x11705))
+:extrapreds ((x11706))
+:extrapreds ((x11707))
+:extrapreds ((x11708))
+:extrapreds ((x11709))
+:extrapreds ((x11710))
+:extrapreds ((x11711))
+:extrapreds ((x11712))
+:extrapreds ((x11713))
+:extrapreds ((x11714))
+:extrapreds ((x11715))
+:extrapreds ((x11716))
+:extrapreds ((x11717))
+:extrapreds ((x11718))
+:extrapreds ((x11719))
+:extrapreds ((x11720))
+:extrapreds ((x11721))
+:extrapreds ((x11722))
+:extrapreds ((x11723))
+:extrapreds ((x11724))
+:extrapreds ((x11725))
+:extrapreds ((x11726))
+:extrapreds ((x11727))
+:extrapreds ((x11728))
+:extrapreds ((x11729))
+:extrapreds ((x11730))
+:extrapreds ((x11731))
+:extrapreds ((x11732))
+:extrapreds ((x11733))
+:extrapreds ((x11734))
+:extrapreds ((x11735))
+:extrapreds ((x11736))
+:extrapreds ((x11737))
+:extrapreds ((x11738))
+:extrapreds ((x11739))
+:extrapreds ((x11740))
+:extrapreds ((x11741))
+:extrapreds ((x11742))
+:extrapreds ((x11743))
+:extrapreds ((x11744))
+:extrapreds ((x11745))
+:extrapreds ((x11746))
+:extrapreds ((x11747))
+:extrapreds ((x11748))
+:extrapreds ((x11749))
+:extrapreds ((x11750))
+:extrapreds ((x11751))
+:extrapreds ((x11752))
+:extrapreds ((x11753))
+:extrapreds ((x11754))
+:extrapreds ((x11755))
+:extrapreds ((x11756))
+:extrapreds ((x11757))
+:extrapreds ((x11758))
+:extrapreds ((x11759))
+:extrapreds ((x11760))
+:extrapreds ((x11761))
+:extrapreds ((x11762))
+:extrapreds ((x11763))
+:extrapreds ((x11764))
+:extrapreds ((x11765))
+:extrapreds ((x11766))
+:extrapreds ((x11767))
+:extrapreds ((x11768))
+:extrapreds ((x11769))
+:extrapreds ((x11770))
+:extrapreds ((x11771))
+:extrapreds ((x11772))
+:extrapreds ((x11773))
+:extrapreds ((x11774))
+:extrapreds ((x11775))
+:extrapreds ((x11776))
+:extrapreds ((x11777))
+:extrapreds ((x11778))
+:extrapreds ((x11779))
+:extrapreds ((x11780))
+:extrapreds ((x11781))
+:extrapreds ((x11782))
+:extrapreds ((x11783))
+:extrapreds ((x11784))
+:extrapreds ((x11785))
+:extrapreds ((x11786))
+:extrapreds ((x11787))
+:extrapreds ((x11788))
+:extrapreds ((x11789))
+:extrapreds ((x11790))
+:extrapreds ((x11791))
+:extrapreds ((x11792))
+:extrapreds ((x11793))
+:extrapreds ((x11794))
+:extrapreds ((x11795))
+:extrapreds ((x11796))
+:extrapreds ((x11797))
+:extrapreds ((x11798))
+:extrapreds ((x11799))
+:extrapreds ((x11800))
+:extrapreds ((x11801))
+:extrapreds ((x11802))
+:extrapreds ((x11803))
+:extrapreds ((x11804))
+:extrapreds ((x11805))
+:extrapreds ((x11806))
+:extrapreds ((x11807))
+:extrapreds ((x11808))
+:extrapreds ((x11809))
+:extrapreds ((x11810))
+:extrapreds ((x11811))
+:extrapreds ((x11812))
+:extrapreds ((x11813))
+:extrapreds ((x11814))
+:extrapreds ((x11815))
+:extrapreds ((x11816))
+:extrapreds ((x11817))
+:extrapreds ((x11818))
+:extrapreds ((x11819))
+:extrapreds ((x11820))
+:extrapreds ((x11821))
+:extrapreds ((x11822))
+:extrapreds ((x11823))
+:extrapreds ((x11824))
+:extrapreds ((x11825))
+:extrapreds ((x11826))
+:extrapreds ((x11827))
+:extrapreds ((x11828))
+:extrapreds ((x11829))
+:extrapreds ((x11830))
+:extrapreds ((x11831))
+:extrapreds ((x11832))
+:extrapreds ((x11833))
+:extrapreds ((x11834))
+:extrapreds ((x11835))
+:extrapreds ((x11836))
+:extrapreds ((x11837))
+:extrapreds ((x11838))
+:extrapreds ((x11839))
+:extrapreds ((x11840))
+:extrapreds ((x11841))
+:extrapreds ((x11842))
+:extrapreds ((x11843))
+:extrapreds ((x11844))
+:extrapreds ((x11845))
+:extrapreds ((x11846))
+:extrapreds ((x11847))
+:extrapreds ((x11848))
+:extrapreds ((x11849))
+:extrapreds ((x11850))
+:extrapreds ((x11851))
+:extrapreds ((x11852))
+:extrapreds ((x11853))
+:extrapreds ((x11854))
+:extrapreds ((x11855))
+:extrapreds ((x11856))
+:extrapreds ((x11857))
+:extrapreds ((x11858))
+:extrapreds ((x11859))
+:extrapreds ((x11860))
+:extrapreds ((x11861))
+:extrapreds ((x11862))
+:extrapreds ((x11863))
+:extrapreds ((x11864))
+:extrapreds ((x11865))
+:extrapreds ((x11866))
+:extrapreds ((x11867))
+:extrapreds ((x11868))
+:extrapreds ((x11869))
+:extrapreds ((x11870))
+:extrapreds ((x11871))
+:extrapreds ((x11872))
+:extrapreds ((x11873))
+:extrapreds ((x11874))
+:extrapreds ((x11875))
+:extrapreds ((x11876))
+:extrapreds ((x11877))
+:extrapreds ((x11878))
+:extrapreds ((x11879))
+:extrapreds ((x11880))
+:extrapreds ((x11881))
+:extrapreds ((x11882))
+:extrapreds ((x11883))
+:extrapreds ((x11884))
+:extrapreds ((x11885))
+:extrapreds ((x11886))
+:extrapreds ((x11887))
+:extrapreds ((x11888))
+:extrapreds ((x11889))
+:extrapreds ((x11890))
+:extrapreds ((x11891))
+:extrapreds ((x11892))
+:extrapreds ((x11893))
+:extrapreds ((x11894))
+:extrapreds ((x11895))
+:extrapreds ((x11896))
+:extrapreds ((x11897))
+:extrapreds ((x11898))
+:extrapreds ((x11899))
+:extrapreds ((x11900))
+:extrapreds ((x11901))
+:extrapreds ((x11902))
+:extrapreds ((x11903))
+:extrapreds ((x11904))
+:extrapreds ((x11905))
+:extrapreds ((x11906))
+:extrapreds ((x11907))
+:extrapreds ((x11908))
+:extrapreds ((x11909))
+:extrapreds ((x11910))
+:extrapreds ((x11911))
+:extrapreds ((x11912))
+:extrapreds ((x11913))
+:extrapreds ((x11914))
+:extrapreds ((x11915))
+:extrapreds ((x11916))
+:extrapreds ((x11917))
+:extrapreds ((x11918))
+:extrapreds ((x11919))
+:extrapreds ((x11920))
+:extrapreds ((x11921))
+:extrapreds ((x11922))
+:extrapreds ((x11923))
+:extrapreds ((x11924))
+:extrapreds ((x11925))
+:extrapreds ((x11926))
+:extrapreds ((x11927))
+:extrapreds ((x11928))
+:extrapreds ((x11929))
+:extrapreds ((x11930))
+:extrapreds ((x11931))
+:extrapreds ((x11932))
+:extrapreds ((x11933))
+:extrapreds ((x11934))
+:extrapreds ((x11935))
+:extrapreds ((x11936))
+:extrapreds ((x11937))
+:extrapreds ((x11938))
+:extrapreds ((x11939))
+:extrapreds ((x11940))
+:extrapreds ((x11941))
+:extrapreds ((x11942))
+:extrapreds ((x11943))
+:extrapreds ((x11944))
+:extrapreds ((x11945))
+:extrapreds ((x11946))
+:extrapreds ((x11947))
+:extrapreds ((x11948))
+:extrapreds ((x11949))
+:extrapreds ((x11950))
+:extrapreds ((x11951))
+:extrapreds ((x11952))
+:extrapreds ((x11953))
+:extrapreds ((x11954))
+:extrapreds ((x11955))
+:extrapreds ((x11956))
+:extrapreds ((x11957))
+:extrapreds ((x11958))
+:extrapreds ((x11959))
+:extrapreds ((x11960))
+:extrapreds ((x11961))
+:extrapreds ((x11962))
+:extrapreds ((x11963))
+:extrapreds ((x11964))
+:extrapreds ((x11965))
+:extrapreds ((x11966))
+:extrapreds ((x11967))
+:extrapreds ((x11968))
+:extrapreds ((x11969))
+:extrapreds ((x11970))
+:extrapreds ((x11971))
+:extrapreds ((x11972))
+:extrapreds ((x11973))
+:extrapreds ((x11974))
+:extrapreds ((x11975))
+:extrapreds ((x11976))
+:extrapreds ((x11977))
+:extrapreds ((x11978))
+:extrapreds ((x11979))
+:extrapreds ((x11980))
+:extrapreds ((x11981))
+:extrapreds ((x11982))
+:extrapreds ((x11983))
+:extrapreds ((x11984))
+:extrapreds ((x11985))
+:extrapreds ((x11986))
+:extrapreds ((x11987))
+:extrapreds ((x11988))
+:extrapreds ((x11989))
+:extrapreds ((x11990))
+:extrapreds ((x11991))
+:extrapreds ((x11992))
+:extrapreds ((x11993))
+:extrapreds ((x11994))
+:extrapreds ((x11995))
+:extrapreds ((x11996))
+:extrapreds ((x11997))
+:extrapreds ((x11998))
+:extrapreds ((x11999))
+:extrapreds ((x12000))
+:extrapreds ((x12001))
+:extrapreds ((x12002))
+:extrapreds ((x12003))
+:extrapreds ((x12004))
+:extrapreds ((x12005))
+:extrapreds ((x12006))
+:extrapreds ((x12007))
+:extrapreds ((x12008))
+:extrapreds ((x12009))
+:extrapreds ((x12010))
+:extrapreds ((x12011))
+:extrapreds ((x12012))
+:extrapreds ((x12013))
+:extrapreds ((x12014))
+:extrapreds ((x12015))
+:extrapreds ((x12016))
+:extrapreds ((x12017))
+:extrapreds ((x12018))
+:extrapreds ((x12019))
+:extrapreds ((x12020))
+:extrapreds ((x12021))
+:extrapreds ((x12022))
+:extrapreds ((x12023))
+:extrapreds ((x12024))
+:extrapreds ((x12025))
+:extrapreds ((x12026))
+:extrapreds ((x12027))
+:extrapreds ((x12028))
+:extrapreds ((x12029))
+:extrapreds ((x12030))
+:extrapreds ((x12031))
+:extrapreds ((x12032))
+:extrapreds ((x12033))
+:extrapreds ((x12034))
+:extrapreds ((x12035))
+:extrapreds ((x12036))
+:extrapreds ((x12037))
+:extrapreds ((x12038))
+:extrapreds ((x12039))
+:extrapreds ((x12040))
+:extrapreds ((x12041))
+:extrapreds ((x12042))
+:extrapreds ((x12043))
+:extrapreds ((x12044))
+:extrapreds ((x12045))
+:extrapreds ((x12046))
+:extrapreds ((x12047))
+:extrapreds ((x12048))
+:extrapreds ((x12049))
+:extrapreds ((x12050))
+:extrapreds ((x12051))
+:extrapreds ((x12052))
+:extrapreds ((x12053))
+:extrapreds ((x12054))
+:extrapreds ((x12055))
+:extrapreds ((x12056))
+:extrapreds ((x12057))
+:extrapreds ((x12058))
+:extrapreds ((x12059))
+:extrapreds ((x12060))
+:extrapreds ((x12061))
+:extrapreds ((x12062))
+:extrapreds ((x12063))
+:extrapreds ((x12064))
+:extrapreds ((x12065))
+:extrapreds ((x12066))
+:extrapreds ((x12067))
+:extrapreds ((x12068))
+:extrapreds ((x12069))
+:extrapreds ((x12070))
+:extrapreds ((x12071))
+:extrapreds ((x12072))
+:extrapreds ((x12073))
+:extrapreds ((x12074))
+:extrapreds ((x12075))
+:extrapreds ((x12076))
+:extrapreds ((x12077))
+:extrapreds ((x12078))
+:extrapreds ((x12079))
+:extrapreds ((x12080))
+:extrapreds ((x12081))
+:extrapreds ((x12082))
+:extrapreds ((x12083))
+:extrapreds ((x12084))
+:extrapreds ((x12085))
+:extrapreds ((x12086))
+:extrapreds ((x12087))
+:extrapreds ((x12088))
+:extrapreds ((x12089))
+:extrapreds ((x12090))
+:extrapreds ((x12091))
+:extrapreds ((x12092))
+:extrapreds ((x12093))
+:extrapreds ((x12094))
+:extrapreds ((x12095))
+:extrapreds ((x12096))
+:extrapreds ((x12097))
+:extrapreds ((x12098))
+:extrapreds ((x12099))
+:extrapreds ((x12100))
+:extrapreds ((x12101))
+:extrapreds ((x12102))
+:extrapreds ((x12103))
+:extrapreds ((x12104))
+:extrapreds ((x12105))
+:extrapreds ((x12106))
+:extrapreds ((x12107))
+:extrapreds ((x12108))
+:extrapreds ((x12109))
+:extrapreds ((x12110))
+:extrapreds ((x12111))
+:extrapreds ((x12112))
+:extrapreds ((x12113))
+:extrapreds ((x12114))
+:extrapreds ((x12115))
+:extrapreds ((x12116))
+:extrapreds ((x12117))
+:extrapreds ((x12118))
+:extrapreds ((x12119))
+:extrapreds ((x12120))
+:extrapreds ((x12121))
+:extrapreds ((x12122))
+:extrapreds ((x12123))
+:extrapreds ((x12124))
+:extrapreds ((x12125))
+:extrapreds ((x12126))
+:extrapreds ((x12127))
+:extrapreds ((x12128))
+:extrapreds ((x12129))
+:extrapreds ((x12130))
+:extrapreds ((x12131))
+:extrapreds ((x12132))
+:extrapreds ((x12133))
+:extrapreds ((x12134))
+:extrapreds ((x12135))
+:extrapreds ((x12136))
+:extrapreds ((x12137))
+:extrapreds ((x12138))
+:extrapreds ((x12139))
+:extrapreds ((x12140))
+:extrapreds ((x12141))
+:extrapreds ((x12142))
+:extrapreds ((x12143))
+:extrapreds ((x12144))
+:extrapreds ((x12145))
+:extrapreds ((x12146))
+:extrapreds ((x12147))
+:extrapreds ((x12148))
+:extrapreds ((x12149))
+:extrapreds ((x12150))
+:extrapreds ((x12151))
+:extrapreds ((x12152))
+:extrapreds ((x12153))
+:extrapreds ((x12154))
+:extrapreds ((x12155))
+:extrapreds ((x12156))
+:extrapreds ((x12157))
+:extrapreds ((x12158))
+:extrapreds ((x12159))
+:extrapreds ((x12160))
+:extrapreds ((x12161))
+:extrapreds ((x12162))
+:extrapreds ((x12163))
+:extrapreds ((x12164))
+:extrapreds ((x12165))
+:extrapreds ((x12166))
+:extrapreds ((x12167))
+:extrapreds ((x12168))
+:extrapreds ((x12169))
+:extrapreds ((x12170))
+:extrapreds ((x12171))
+:extrapreds ((x12172))
+:extrapreds ((x12173))
+:extrapreds ((x12174))
+:extrapreds ((x12175))
+:extrapreds ((x12176))
+:extrapreds ((x12177))
+:extrapreds ((x12178))
+:extrapreds ((x12179))
+:extrapreds ((x12180))
+:extrapreds ((x12181))
+:extrapreds ((x12182))
+:extrapreds ((x12183))
+:extrapreds ((x12184))
+:extrapreds ((x12185))
+:extrapreds ((x12186))
+:extrapreds ((x12187))
+:extrapreds ((x12188))
+:extrapreds ((x12189))
+:extrapreds ((x12190))
+:extrapreds ((x12191))
+:extrapreds ((x12192))
+:extrapreds ((x12193))
+:extrapreds ((x12194))
+:extrapreds ((x12195))
+:extrapreds ((x12196))
+:extrapreds ((x12197))
+:extrapreds ((x12198))
+:extrapreds ((x12199))
+:extrapreds ((x12200))
+:extrapreds ((x12201))
+:extrapreds ((x12202))
+:extrapreds ((x12203))
+:extrapreds ((x12204))
+:extrapreds ((x12205))
+:extrapreds ((x12206))
+:extrapreds ((x12207))
+:extrapreds ((x12208))
+:extrapreds ((x12209))
+:extrapreds ((x12210))
+:extrapreds ((x12211))
+:extrapreds ((x12212))
+:extrapreds ((x12213))
+:extrapreds ((x12214))
+:extrapreds ((x12215))
+:extrapreds ((x12216))
+:extrapreds ((x12217))
+:extrapreds ((x12218))
+:extrapreds ((x12219))
+:extrapreds ((x12220))
+:extrapreds ((x12221))
+:extrapreds ((x12222))
+:extrapreds ((x12223))
+:extrapreds ((x12224))
+:extrapreds ((x12225))
+:extrapreds ((x12226))
+:extrapreds ((x12227))
+:extrapreds ((x12228))
+:extrapreds ((x12229))
+:extrapreds ((x12230))
+:extrapreds ((x12231))
+:extrapreds ((x12232))
+:extrapreds ((x12233))
+:extrapreds ((x12234))
+:extrapreds ((x12235))
+:extrapreds ((x12236))
+:extrapreds ((x12237))
+:extrapreds ((x12238))
+:extrapreds ((x12239))
+:extrapreds ((x12240))
+:extrapreds ((x12241))
+:extrapreds ((x12242))
+:extrapreds ((x12243))
+:extrapreds ((x12244))
+:extrapreds ((x12245))
+:extrapreds ((x12246))
+:extrapreds ((x12247))
+:extrapreds ((x12248))
+:extrapreds ((x12249))
+:extrapreds ((x12250))
+:extrapreds ((x12251))
+:extrapreds ((x12252))
+:extrapreds ((x12253))
+:extrapreds ((x12254))
+:extrapreds ((x12255))
+:extrapreds ((x12256))
+:extrapreds ((x12257))
+:extrapreds ((x12258))
+:extrapreds ((x12259))
+:extrapreds ((x12260))
+:extrapreds ((x12261))
+:extrapreds ((x12262))
+:extrapreds ((x12263))
+:extrapreds ((x12264))
+:extrapreds ((x12265))
+:extrapreds ((x12266))
+:extrapreds ((x12267))
+:extrapreds ((x12268))
+:extrapreds ((x12269))
+:extrapreds ((x12270))
+:extrapreds ((x12271))
+:extrapreds ((x12272))
+:extrapreds ((x12273))
+:extrapreds ((x12274))
+:extrapreds ((x12275))
+:extrapreds ((x12276))
+:extrapreds ((x12277))
+:extrapreds ((x12278))
+:extrapreds ((x12279))
+:extrapreds ((x12280))
+:extrapreds ((x12281))
+:extrapreds ((x12282))
+:extrapreds ((x12283))
+:extrapreds ((x12284))
+:extrapreds ((x12285))
+:extrapreds ((x12286))
+:extrapreds ((x12287))
+:extrapreds ((x12288))
+:extrapreds ((x12289))
+:extrapreds ((x12290))
+:extrapreds ((x12291))
+:extrapreds ((x12292))
+:extrapreds ((x12293))
+:extrapreds ((x12294))
+:extrapreds ((x12295))
+:extrapreds ((x12296))
+:extrapreds ((x12297))
+:extrapreds ((x12298))
+:extrapreds ((x12299))
+:extrapreds ((x12300))
+:extrapreds ((x12301))
+:extrapreds ((x12302))
+:extrapreds ((x12303))
+:extrapreds ((x12304))
+:extrapreds ((x12305))
+:extrapreds ((x12306))
+:extrapreds ((x12307))
+:extrapreds ((x12308))
+:extrapreds ((x12309))
+:extrapreds ((x12310))
+:extrapreds ((x12311))
+:extrapreds ((x12312))
+:extrapreds ((x12313))
+:extrapreds ((x12314))
+:extrapreds ((x12315))
+:extrapreds ((x12316))
+:extrapreds ((x12317))
+:extrapreds ((x12318))
+:extrapreds ((x12319))
+:extrapreds ((x12320))
+:extrapreds ((x12321))
+:extrapreds ((x12322))
+:extrapreds ((x12323))
+:extrapreds ((x12324))
+:extrapreds ((x12325))
+:extrapreds ((x12326))
+:extrapreds ((x12327))
+:extrapreds ((x12328))
+:extrapreds ((x12329))
+:extrapreds ((x12330))
+:extrapreds ((x12331))
+:extrapreds ((x12332))
+:extrapreds ((x12333))
+:extrapreds ((x12334))
+:extrapreds ((x12335))
+:extrapreds ((x12336))
+:extrapreds ((x12337))
+:extrapreds ((x12338))
+:extrapreds ((x12339))
+:extrapreds ((x12340))
+:extrapreds ((x12341))
+:extrapreds ((x12342))
+:extrapreds ((x12343))
+:extrapreds ((x12344))
+:extrapreds ((x12345))
+:extrapreds ((x12346))
+:extrapreds ((x12347))
+:extrapreds ((x12348))
+:extrapreds ((x12349))
+:extrapreds ((x12350))
+:extrapreds ((x12351))
+:extrapreds ((x12352))
+:extrapreds ((x12353))
+:extrapreds ((x12354))
+:extrapreds ((x12355))
+:extrapreds ((x12356))
+:extrapreds ((x12357))
+:extrapreds ((x12358))
+:extrapreds ((x12359))
+:extrapreds ((x12360))
+:extrapreds ((x12361))
+:extrapreds ((x12362))
+:extrapreds ((x12363))
+:extrapreds ((x12364))
+:extrapreds ((x12365))
+:extrapreds ((x12366))
+:extrapreds ((x12367))
+:extrapreds ((x12368))
+:extrapreds ((x12369))
+:extrapreds ((x12370))
+:extrapreds ((x12371))
+:extrapreds ((x12372))
+:extrapreds ((x12373))
+:extrapreds ((x12374))
+:extrapreds ((x12375))
+:extrapreds ((x12376))
+:extrapreds ((x12377))
+:extrapreds ((x12378))
+:extrapreds ((x12379))
+:extrapreds ((x12380))
+:extrapreds ((x12381))
+:extrapreds ((x12382))
+:extrapreds ((x12383))
+:extrapreds ((x12384))
+:extrapreds ((x12385))
+:extrapreds ((x12386))
+:extrapreds ((x12387))
+:extrapreds ((x12388))
+:extrapreds ((x12389))
+:extrapreds ((x12390))
+:extrapreds ((x12391))
+:extrapreds ((x12392))
+:extrapreds ((x12393))
+:extrapreds ((x12394))
+:extrapreds ((x12395))
+:extrapreds ((x12396))
+:extrapreds ((x12397))
+:extrapreds ((x12398))
+:extrapreds ((x12399))
+:extrapreds ((x12400))
+:extrapreds ((x12401))
+:extrapreds ((x12402))
+:extrapreds ((x12403))
+:extrapreds ((x12404))
+:extrapreds ((x12405))
+:extrapreds ((x12406))
+:extrapreds ((x12407))
+:extrapreds ((x12408))
+:extrapreds ((x12409))
+:extrapreds ((x12410))
+:extrapreds ((x12411))
+:extrapreds ((x12412))
+:extrapreds ((x12413))
+:extrapreds ((x12414))
+:extrapreds ((x12415))
+:extrapreds ((x12416))
+:extrapreds ((x12417))
+:extrapreds ((x12418))
+:extrapreds ((x12419))
+:extrapreds ((x12420))
+:extrapreds ((x12421))
+:extrapreds ((x12422))
+:extrapreds ((x12423))
+:extrapreds ((x12424))
+:extrapreds ((x12425))
+:extrapreds ((x12426))
+:extrapreds ((x12427))
+:extrapreds ((x12428))
+:extrapreds ((x12429))
+:extrapreds ((x12430))
+:extrapreds ((x12431))
+:extrapreds ((x12432))
+:extrapreds ((x12433))
+:extrapreds ((x12434))
+:extrapreds ((x12435))
+:extrapreds ((x12436))
+:extrapreds ((x12437))
+:extrapreds ((x12438))
+:extrapreds ((x12439))
+:extrapreds ((x12440))
+:extrapreds ((x12441))
+:extrapreds ((x12442))
+:extrapreds ((x12443))
+:extrapreds ((x12444))
+:extrapreds ((x12445))
+:extrapreds ((x12446))
+:extrapreds ((x12447))
+:extrapreds ((x12448))
+:extrapreds ((x12449))
+:extrapreds ((x12450))
+:extrapreds ((x12451))
+:extrapreds ((x12452))
+:extrapreds ((x12453))
+:extrapreds ((x12454))
+:extrapreds ((x12455))
+:extrapreds ((x12456))
+:extrapreds ((x12457))
+:extrapreds ((x12458))
+:extrapreds ((x12459))
+:extrapreds ((x12460))
+:extrapreds ((x12461))
+:extrapreds ((x12462))
+:extrapreds ((x12463))
+:extrapreds ((x12464))
+:extrapreds ((x12465))
+:extrapreds ((x12466))
+:extrapreds ((x12467))
+:extrapreds ((x12468))
+:extrapreds ((x12469))
+:extrapreds ((x12470))
+:extrapreds ((x12471))
+:extrapreds ((x12472))
+:extrapreds ((x12473))
+:extrapreds ((x12474))
+:extrapreds ((x12475))
+:extrapreds ((x12476))
+:extrapreds ((x12477))
+:extrapreds ((x12478))
+:extrapreds ((x12479))
+:extrapreds ((x12480))
+:extrapreds ((x12481))
+:extrapreds ((x12482))
+:extrapreds ((x12483))
+:extrapreds ((x12484))
+:extrapreds ((x12485))
+:extrapreds ((x12486))
+:extrapreds ((x12487))
+:extrapreds ((x12488))
+:extrapreds ((x12489))
+:extrapreds ((x12490))
+:extrapreds ((x12491))
+:extrapreds ((x12492))
+:extrapreds ((x12493))
+:extrapreds ((x12494))
+:extrapreds ((x12495))
+:extrapreds ((x12496))
+:extrapreds ((x12497))
+:extrapreds ((x12498))
+:extrapreds ((x12499))
+:extrapreds ((x12500))
+:extrapreds ((x12501))
+:extrapreds ((x12502))
+:extrapreds ((x12503))
+:extrapreds ((x12504))
+:extrapreds ((x12505))
+:extrapreds ((x12506))
+:extrapreds ((x12507))
+:extrapreds ((x12508))
+:extrapreds ((x12509))
+:extrapreds ((x12510))
+:extrapreds ((x12511))
+:extrapreds ((x12512))
+:extrapreds ((x12513))
+:extrapreds ((x12514))
+:extrapreds ((x12515))
+:extrapreds ((x12516))
+:extrapreds ((x12517))
+:extrapreds ((x12518))
+:extrapreds ((x12519))
+:extrapreds ((x12520))
+:extrapreds ((x12521))
+:extrapreds ((x12522))
+:extrapreds ((x12523))
+:extrapreds ((x12524))
+:extrapreds ((x12525))
+:extrapreds ((x12526))
+:extrapreds ((x12527))
+:extrapreds ((x12528))
+:extrapreds ((x12529))
+:extrapreds ((x12530))
+:extrapreds ((x12531))
+:extrapreds ((x12532))
+:extrapreds ((x12533))
+:extrapreds ((x12534))
+:extrapreds ((x12535))
+:extrapreds ((x12536))
+:extrapreds ((x12537))
+:extrapreds ((x12538))
+:extrapreds ((x12539))
+:extrapreds ((x12540))
+:extrapreds ((x12541))
+:extrapreds ((x12542))
+:extrapreds ((x12543))
+:extrapreds ((x12544))
+:extrapreds ((x12545))
+:extrapreds ((x12546))
+:extrapreds ((x12547))
+:extrapreds ((x12548))
+:extrapreds ((x12549))
+:extrapreds ((x12550))
+:extrapreds ((x12551))
+:extrapreds ((x12552))
+:extrapreds ((x12553))
+:extrapreds ((x12554))
+:extrapreds ((x12555))
+:extrapreds ((x12556))
+:extrapreds ((x12557))
+:extrapreds ((x12558))
+:extrapreds ((x12559))
+:extrapreds ((x12560))
+:extrapreds ((x12561))
+:extrapreds ((x12562))
+:extrapreds ((x12563))
+:extrapreds ((x12564))
+:extrapreds ((x12565))
+:extrapreds ((x12566))
+:extrapreds ((x12567))
+:extrapreds ((x12568))
+:extrapreds ((x12569))
+:extrapreds ((x12570))
+:extrapreds ((x12571))
+:extrapreds ((x12572))
+:extrapreds ((x12573))
+:extrapreds ((x12574))
+:extrapreds ((x12575))
+:extrapreds ((x12576))
+:extrapreds ((x12577))
+:extrapreds ((x12578))
+:extrapreds ((x12579))
+:extrapreds ((x12580))
+:extrapreds ((x12581))
+:extrapreds ((x12582))
+:extrapreds ((x12583))
+:extrapreds ((x12584))
+:extrapreds ((x12585))
+:extrapreds ((x12586))
+:extrapreds ((x12587))
+:extrapreds ((x12588))
+:extrapreds ((x12589))
+:extrapreds ((x12590))
+:extrapreds ((x12591))
+:extrapreds ((x12592))
+:extrapreds ((x12593))
+:extrapreds ((x12594))
+:extrapreds ((x12595))
+:extrapreds ((x12596))
+:extrapreds ((x12597))
+:extrapreds ((x12598))
+:extrapreds ((x12599))
+:extrapreds ((x12600))
+:extrapreds ((x12601))
+:extrapreds ((x12602))
+:extrapreds ((x12603))
+:extrapreds ((x12604))
+:extrapreds ((x12605))
+:extrapreds ((x12606))
+:extrapreds ((x12607))
+:extrapreds ((x12608))
+:extrapreds ((x12609))
+:extrapreds ((x12610))
+:extrapreds ((x12611))
+:extrapreds ((x12612))
+:extrapreds ((x12613))
+:extrapreds ((x12614))
+:extrapreds ((x12615))
+:extrapreds ((x12616))
+:extrapreds ((x12617))
+:extrapreds ((x12618))
+:extrapreds ((x12619))
+:extrapreds ((x12620))
+:extrapreds ((x12621))
+:extrapreds ((x12622))
+:extrapreds ((x12623))
+:extrapreds ((x12624))
+:extrapreds ((x12625))
+:extrapreds ((x12626))
+:extrapreds ((x12627))
+:extrapreds ((x12628))
+:extrapreds ((x12629))
+:extrapreds ((x12630))
+:extrapreds ((x12631))
+:extrapreds ((x12632))
+:extrapreds ((x12633))
+:extrapreds ((x12634))
+:extrapreds ((x12635))
+:extrapreds ((x12636))
+:extrapreds ((x12637))
+:extrapreds ((x12638))
+:extrapreds ((x12639))
+:extrapreds ((x12640))
+:extrapreds ((x12641))
+:extrapreds ((x12642))
+:extrapreds ((x12643))
+:extrapreds ((x12644))
+:extrapreds ((x12645))
+:extrapreds ((x12646))
+:extrapreds ((x12647))
+:extrapreds ((x12648))
+:extrapreds ((x12649))
+:extrapreds ((x12650))
+:extrapreds ((x12651))
+:extrapreds ((x12652))
+:extrapreds ((x12653))
+:extrapreds ((x12654))
+:extrapreds ((x12655))
+:extrapreds ((x12656))
+:extrapreds ((x12657))
+:extrapreds ((x12658))
+:extrapreds ((x12659))
+:extrapreds ((x12660))
+:extrapreds ((x12661))
+:extrapreds ((x12662))
+:extrapreds ((x12663))
+:extrapreds ((x12664))
+:extrapreds ((x12665))
+:extrapreds ((x12666))
+:extrapreds ((x12667))
+:extrapreds ((x12668))
+:extrapreds ((x12669))
+:extrapreds ((x12670))
+:extrapreds ((x12671))
+:extrapreds ((x12672))
+:extrapreds ((x12673))
+:extrapreds ((x12674))
+:extrapreds ((x12675))
+:extrapreds ((x12676))
+:extrapreds ((x12677))
+:extrapreds ((x12678))
+:extrapreds ((x12679))
+:extrapreds ((x12680))
+:extrapreds ((x12681))
+:extrapreds ((x12682))
+:extrapreds ((x12683))
+:extrapreds ((x12684))
+:extrapreds ((x12685))
+:extrapreds ((x12686))
+:extrapreds ((x12687))
+:extrapreds ((x12688))
+:extrapreds ((x12689))
+:extrapreds ((x12690))
+:extrapreds ((x12691))
+:extrapreds ((x12692))
+:extrapreds ((x12693))
+:extrapreds ((x12694))
+:extrapreds ((x12695))
+:extrapreds ((x12696))
+:extrapreds ((x12697))
+:extrapreds ((x12698))
+:extrapreds ((x12699))
+:extrapreds ((x12700))
+:extrapreds ((x12701))
+:extrapreds ((x12702))
+:extrapreds ((x12703))
+:extrapreds ((x12704))
+:extrapreds ((x12705))
+:extrapreds ((x12706))
+:extrapreds ((x12707))
+:extrapreds ((x12708))
+:extrapreds ((x12709))
+:extrapreds ((x12710))
+:extrapreds ((x12711))
+:extrapreds ((x12712))
+:extrapreds ((x12713))
+:extrapreds ((x12714))
+:extrapreds ((x12715))
+:extrapreds ((x12716))
+:extrapreds ((x12717))
+:extrapreds ((x12718))
+:extrapreds ((x12719))
+:extrapreds ((x12720))
+:extrapreds ((x12721))
+:extrapreds ((x12722))
+:extrapreds ((x12723))
+:extrapreds ((x12724))
+:extrapreds ((x12725))
+:extrapreds ((x12726))
+:extrapreds ((x12727))
+:extrapreds ((x12728))
+:extrapreds ((x12729))
+:extrapreds ((x12730))
+:extrapreds ((x12731))
+:extrapreds ((x12732))
+:extrapreds ((x12733))
+:extrapreds ((x12734))
+:extrapreds ((x12735))
+:extrapreds ((x12736))
+:extrapreds ((x12737))
+:extrapreds ((x12738))
+:extrapreds ((x12739))
+:extrapreds ((x12740))
+:extrapreds ((x12741))
+:extrapreds ((x12742))
+:extrapreds ((x12743))
+:extrapreds ((x12744))
+:extrapreds ((x12745))
+:extrapreds ((x12746))
+:extrapreds ((x12747))
+:extrapreds ((x12748))
+:extrapreds ((x12749))
+:extrapreds ((x12750))
+:extrapreds ((x12751))
+:extrapreds ((x12752))
+:extrapreds ((x12753))
+:extrapreds ((x12754))
+:extrapreds ((x12755))
+:extrapreds ((x12756))
+:extrapreds ((x12757))
+:extrapreds ((x12758))
+:extrapreds ((x12759))
+:extrapreds ((x12760))
+:extrapreds ((x12761))
+:extrapreds ((x12762))
+:extrapreds ((x12763))
+:extrapreds ((x12764))
+:extrapreds ((x12765))
+:extrapreds ((x12766))
+:extrapreds ((x12767))
+:extrapreds ((x12768))
+:extrapreds ((x12769))
+:extrapreds ((x12770))
+:extrapreds ((x12771))
+:extrapreds ((x12772))
+:extrapreds ((x12773))
+:extrapreds ((x12774))
+:extrapreds ((x12775))
+:extrapreds ((x12776))
+:extrapreds ((x12777))
+:extrapreds ((x12778))
+:extrapreds ((x12779))
+:extrapreds ((x12780))
+:extrapreds ((x12781))
+:extrapreds ((x12782))
+:extrapreds ((x12783))
+:extrapreds ((x12784))
+:extrapreds ((x12785))
+:extrapreds ((x12786))
+:extrapreds ((x12787))
+:extrapreds ((x12788))
+:extrapreds ((x12789))
+:extrapreds ((x12790))
+:extrapreds ((x12791))
+:extrapreds ((x12792))
+:extrapreds ((x12793))
+:extrapreds ((x12794))
+:extrapreds ((x12795))
+:extrapreds ((x12796))
+:extrapreds ((x12797))
+:extrapreds ((x12798))
+:extrapreds ((x12799))
+:extrapreds ((x12800))
+:extrapreds ((x12801))
+:extrapreds ((x12802))
+:extrapreds ((x12803))
+:extrapreds ((x12804))
+:extrapreds ((x12805))
+:extrapreds ((x12806))
+:extrapreds ((x12807))
+:extrapreds ((x12808))
+:extrapreds ((x12809))
+:extrapreds ((x12810))
+:extrapreds ((x12811))
+:extrapreds ((x12812))
+:extrapreds ((x12813))
+:extrapreds ((x12814))
+:extrapreds ((x12815))
+:extrapreds ((x12816))
+:extrapreds ((x12817))
+:extrapreds ((x12818))
+:extrapreds ((x12819))
+:extrapreds ((x12820))
+:extrapreds ((x12821))
+:extrapreds ((x12822))
+:extrapreds ((x12823))
+:extrapreds ((x12824))
+:extrapreds ((x12825))
+:extrapreds ((x12826))
+:extrapreds ((x12827))
+:extrapreds ((x12828))
+:extrapreds ((x12829))
+:extrapreds ((x12830))
+:extrapreds ((x12831))
+:extrapreds ((x12832))
+:extrapreds ((x12833))
+:extrapreds ((x12834))
+:extrapreds ((x12835))
+:extrapreds ((x12836))
+:extrapreds ((x12837))
+:extrapreds ((x12838))
+:extrapreds ((x12839))
+:extrapreds ((x12840))
+:extrapreds ((x12841))
+:extrapreds ((x12842))
+:extrapreds ((x12843))
+:extrapreds ((x12844))
+:extrapreds ((x12845))
+:extrapreds ((x12846))
+:extrapreds ((x12847))
+:extrapreds ((x12848))
+:extrapreds ((x12849))
+:extrapreds ((x12850))
+:extrapreds ((x12851))
+:extrapreds ((x12852))
+:extrapreds ((x12853))
+:extrapreds ((x12854))
+:extrapreds ((x12855))
+:extrapreds ((x12856))
+:extrapreds ((x12857))
+:extrapreds ((x12858))
+:extrapreds ((x12859))
+:extrapreds ((x12860))
+:extrapreds ((x12861))
+:extrapreds ((x12862))
+:extrapreds ((x12863))
+:extrapreds ((x12864))
+:extrapreds ((x12865))
+:extrapreds ((x12866))
+:extrapreds ((x12867))
+:extrapreds ((x12868))
+:extrapreds ((x12869))
+:extrapreds ((x12870))
+:extrapreds ((x12871))
+:extrapreds ((x12872))
+:extrapreds ((x12873))
+:extrapreds ((x12874))
+:extrapreds ((x12875))
+:extrapreds ((x12876))
+:extrapreds ((x12877))
+:extrapreds ((x12878))
+:extrapreds ((x12879))
+:extrapreds ((x12880))
+:extrapreds ((x12881))
+:extrapreds ((x12882))
+:extrapreds ((x12883))
+:extrapreds ((x12884))
+:extrapreds ((x12885))
+:extrapreds ((x12886))
+:extrapreds ((x12887))
+:extrapreds ((x12888))
+:extrapreds ((x12889))
+:extrapreds ((x12890))
+:extrapreds ((x12891))
+:extrapreds ((x12892))
+:extrapreds ((x12893))
+:extrapreds ((x12894))
+:extrapreds ((x12895))
+:extrapreds ((x12896))
+:extrapreds ((x12897))
+:extrapreds ((x12898))
+:extrapreds ((x12899))
+:extrapreds ((x12900))
+:extrapreds ((x12901))
+:extrapreds ((x12902))
+:extrapreds ((x12903))
+:extrapreds ((x12904))
+:extrapreds ((x12905))
+:extrapreds ((x12906))
+:extrapreds ((x12907))
+:extrapreds ((x12908))
+:extrapreds ((x12909))
+:extrapreds ((x12910))
+:extrapreds ((x12911))
+:extrapreds ((x12912))
+:extrapreds ((x12913))
+:extrapreds ((x12914))
+:extrapreds ((x12915))
+:extrapreds ((x12916))
+:extrapreds ((x12917))
+:extrapreds ((x12918))
+:extrapreds ((x12919))
+:extrapreds ((x12920))
+:extrapreds ((x12921))
+:extrapreds ((x12922))
+:extrapreds ((x12923))
+:extrapreds ((x12924))
+:extrapreds ((x12925))
+:extrapreds ((x12926))
+:extrapreds ((x12927))
+:extrapreds ((x12928))
+:extrapreds ((x12929))
+:extrapreds ((x12930))
+:extrapreds ((x12931))
+:extrapreds ((x12932))
+:extrapreds ((x12933))
+:extrapreds ((x12934))
+:extrapreds ((x12935))
+:extrapreds ((x12936))
+:extrapreds ((x12937))
+:extrapreds ((x12938))
+:extrapreds ((x12939))
+:extrapreds ((x12940))
+:extrapreds ((x12941))
+:extrapreds ((x12942))
+:extrapreds ((x12943))
+:extrapreds ((x12944))
+:extrapreds ((x12945))
+:extrapreds ((x12946))
+:extrapreds ((x12947))
+:extrapreds ((x12948))
+:extrapreds ((x12949))
+:extrapreds ((x12950))
+:extrapreds ((x12951))
+:extrapreds ((x12952))
+:extrapreds ((x12953))
+:extrapreds ((x12954))
+:extrapreds ((x12955))
+:extrapreds ((x12956))
+:extrapreds ((x12957))
+:extrapreds ((x12958))
+:extrapreds ((x12959))
+:extrapreds ((x12960))
+:extrapreds ((x12961))
+:extrapreds ((x12962))
+:extrapreds ((x12963))
+:extrapreds ((x12964))
+:extrapreds ((x12965))
+:extrapreds ((x12966))
+:extrapreds ((x12967))
+:extrapreds ((x12968))
+:extrapreds ((x12969))
+:extrapreds ((x12970))
+:extrapreds ((x12971))
+:extrapreds ((x12972))
+:extrapreds ((x12973))
+:extrapreds ((x12974))
+:extrapreds ((x12975))
+:extrapreds ((x12976))
+:extrapreds ((x12977))
+:extrapreds ((x12978))
+:extrapreds ((x12979))
+:extrapreds ((x12980))
+:extrapreds ((x12981))
+:extrapreds ((x12982))
+:extrapreds ((x12983))
+:extrapreds ((x12984))
+:extrapreds ((x12985))
+:extrapreds ((x12986))
+:extrapreds ((x12987))
+:extrapreds ((x12988))
+:extrapreds ((x12989))
+:extrapreds ((x12990))
+:extrapreds ((x12991))
+:extrapreds ((x12992))
+:extrapreds ((x12993))
+:extrapreds ((x12994))
+:extrapreds ((x12995))
+:extrapreds ((x12996))
+:extrapreds ((x12997))
+:extrapreds ((x12998))
+:extrapreds ((x12999))
+:extrapreds ((x13000))
+:extrapreds ((x13001))
+:extrapreds ((x13002))
+:extrapreds ((x13003))
+:extrapreds ((x13004))
+:extrapreds ((x13005))
+:extrapreds ((x13006))
+:extrapreds ((x13007))
+:extrapreds ((x13008))
+:extrapreds ((x13009))
+:extrapreds ((x13010))
+:extrapreds ((x13011))
+:extrapreds ((x13012))
+:extrapreds ((x13013))
+:extrapreds ((x13014))
+:extrapreds ((x13015))
+:extrapreds ((x13016))
+:extrapreds ((x13017))
+:extrapreds ((x13018))
+:extrapreds ((x13019))
+:extrapreds ((x13020))
+:extrapreds ((x13021))
+:extrapreds ((x13022))
+:extrapreds ((x13023))
+:extrapreds ((x13024))
+:extrapreds ((x13025))
+:extrapreds ((x13026))
+:extrapreds ((x13027))
+:extrapreds ((x13028))
+:extrapreds ((x13029))
+:extrapreds ((x13030))
+:extrapreds ((x13031))
+:extrapreds ((x13032))
+:extrapreds ((x13033))
+:extrapreds ((x13034))
+:extrapreds ((x13035))
+:extrapreds ((x13036))
+:extrapreds ((x13037))
+:extrapreds ((x13038))
+:extrapreds ((x13039))
+:extrapreds ((x13040))
+:extrapreds ((x13041))
+:extrapreds ((x13042))
+:extrapreds ((x13043))
+:extrapreds ((x13044))
+:extrapreds ((x13045))
+:extrapreds ((x13046))
+:extrapreds ((x13047))
+:extrapreds ((x13048))
+:extrapreds ((x13049))
+:extrapreds ((x13050))
+:extrapreds ((x13051))
+:extrapreds ((x13052))
+:extrapreds ((x13053))
+:extrapreds ((x13054))
+:extrapreds ((x13055))
+:extrapreds ((x13056))
+:extrapreds ((x13057))
+:extrapreds ((x13058))
+:extrapreds ((x13059))
+:extrapreds ((x13060))
+:extrapreds ((x13061))
+:extrapreds ((x13062))
+:extrapreds ((x13063))
+:extrapreds ((x13064))
+:extrapreds ((x13065))
+:extrapreds ((x13066))
+:extrapreds ((x13067))
+:extrapreds ((x13068))
+:extrapreds ((x13069))
+:extrapreds ((x13070))
+:extrapreds ((x13071))
+:extrapreds ((x13072))
+:extrapreds ((x13073))
+:extrapreds ((x13074))
+:extrapreds ((x13075))
+:extrapreds ((x13076))
+:extrapreds ((x13077))
+:extrapreds ((x13078))
+:extrapreds ((x13079))
+:extrapreds ((x13080))
+:extrapreds ((x13081))
+:extrapreds ((x13082))
+:extrapreds ((x13083))
+:extrapreds ((x13084))
+:extrapreds ((x13085))
+:extrapreds ((x13086))
+:extrapreds ((x13087))
+:extrapreds ((x13088))
+:extrapreds ((x13089))
+:extrapreds ((x13090))
+:extrapreds ((x13091))
+:extrapreds ((x13092))
+:extrapreds ((x13093))
+:extrapreds ((x13094))
+:extrapreds ((x13095))
+:extrapreds ((x13096))
+:extrapreds ((x13097))
+:extrapreds ((x13098))
+:extrapreds ((x13099))
+:extrapreds ((x13100))
+:extrapreds ((x13101))
+:extrapreds ((x13102))
+:extrapreds ((x13103))
+:extrapreds ((x13104))
+:extrapreds ((x13105))
+:extrapreds ((x13106))
+:extrapreds ((x13107))
+:extrapreds ((x13108))
+:extrapreds ((x13109))
+:extrapreds ((x13110))
+:extrapreds ((x13111))
+:extrapreds ((x13112))
+:extrapreds ((x13113))
+:extrapreds ((x13114))
+:extrapreds ((x13115))
+:extrapreds ((x13116))
+:extrapreds ((x13117))
+:extrapreds ((x13118))
+:extrapreds ((x13119))
+:extrapreds ((x13120))
+:extrapreds ((x13121))
+:extrapreds ((x13122))
+:extrapreds ((x13123))
+:extrapreds ((x13124))
+:extrapreds ((x13125))
+:extrapreds ((x13126))
+:extrapreds ((x13127))
+:extrapreds ((x13128))
+:extrapreds ((x13129))
+:extrapreds ((x13130))
+:extrapreds ((x13131))
+:extrapreds ((x13132))
+:extrapreds ((x13133))
+:extrapreds ((x13134))
+:extrapreds ((x13135))
+:extrapreds ((x13136))
+:extrapreds ((x13137))
+:extrapreds ((x13138))
+:extrapreds ((x13139))
+:extrapreds ((x13140))
+:extrapreds ((x13141))
+:extrapreds ((x13142))
+:extrapreds ((x13143))
+:extrapreds ((x13144))
+:extrapreds ((x13145))
+:extrapreds ((x13146))
+:extrapreds ((x13147))
+:extrapreds ((x13148))
+:extrapreds ((x13149))
+:extrapreds ((x13150))
+:extrapreds ((x13151))
+:extrapreds ((x13152))
+:extrapreds ((x13153))
+:extrapreds ((x13154))
+:extrapreds ((x13155))
+:extrapreds ((x13156))
+:extrapreds ((x13157))
+:extrapreds ((x13158))
+:extrapreds ((x13159))
+:extrapreds ((x13160))
+:extrapreds ((x13161))
+:extrapreds ((x13162))
+:extrapreds ((x13163))
+:extrapreds ((x13164))
+:extrapreds ((x13165))
+:extrapreds ((x13166))
+:extrapreds ((x13167))
+:extrapreds ((x13168))
+:extrapreds ((x13169))
+:extrapreds ((x13170))
+:extrapreds ((x13171))
+:extrapreds ((x13172))
+:extrapreds ((x13173))
+:extrapreds ((x13174))
+:extrapreds ((x13175))
+:extrapreds ((x13176))
+:extrapreds ((x13177))
+:extrapreds ((x13178))
+:extrapreds ((x13179))
+:extrapreds ((x13180))
+:extrapreds ((x13181))
+:extrapreds ((x13182))
+:extrapreds ((x13183))
+:extrapreds ((x13184))
+:extrapreds ((x13185))
+:extrapreds ((x13186))
+:extrapreds ((x13187))
+:extrapreds ((x13188))
+:extrapreds ((x13189))
+:extrapreds ((x13190))
+:extrapreds ((x13191))
+:extrapreds ((x13192))
+:extrapreds ((x13193))
+:extrapreds ((x13194))
+:extrapreds ((x13195))
+:extrapreds ((x13196))
+:extrapreds ((x13197))
+:extrapreds ((x13198))
+:extrapreds ((x13199))
+:extrapreds ((x13200))
+:extrapreds ((x13201))
+:extrapreds ((x13202))
+:extrapreds ((x13203))
+:extrapreds ((x13204))
+:extrapreds ((x13205))
+:extrapreds ((x13206))
+:extrapreds ((x13207))
+:extrapreds ((x13208))
+:extrapreds ((x13209))
+:extrapreds ((x13210))
+:extrapreds ((x13211))
+:extrapreds ((x13212))
+:extrapreds ((x13213))
+:extrapreds ((x13214))
+:extrapreds ((x13215))
+:extrapreds ((x13216))
+:extrapreds ((x13217))
+:extrapreds ((x13218))
+:extrapreds ((x13219))
+:extrapreds ((x13220))
+:extrapreds ((x13221))
+:extrapreds ((x13222))
+:extrapreds ((x13223))
+:extrapreds ((x13224))
+:extrapreds ((x13225))
+:extrapreds ((x13226))
+:extrapreds ((x13227))
+:extrapreds ((x13228))
+:extrapreds ((x13229))
+:extrapreds ((x13230))
+:extrapreds ((x13231))
+:extrapreds ((x13232))
+:extrapreds ((x13233))
+:extrapreds ((x13234))
+:extrapreds ((x13235))
+:extrapreds ((x13236))
+:extrapreds ((x13237))
+:extrapreds ((x13238))
+:extrapreds ((x13239))
+:extrapreds ((x13240))
+:extrapreds ((x13241))
+:extrapreds ((x13242))
+:extrapreds ((x13243))
+:extrapreds ((x13244))
+:extrapreds ((x13245))
+:extrapreds ((x13246))
+:extrapreds ((x13247))
+:extrapreds ((x13248))
+:extrapreds ((x13249))
+:extrapreds ((x13250))
+:extrapreds ((x13251))
+:extrapreds ((x13252))
+:extrapreds ((x13253))
+:extrapreds ((x13254))
+:extrapreds ((x13255))
+:extrapreds ((x13256))
+:extrapreds ((x13257))
+:extrapreds ((x13258))
+:extrapreds ((x13259))
+:extrapreds ((x13260))
+:extrapreds ((x13261))
+:extrapreds ((x13262))
+:extrapreds ((x13263))
+:extrapreds ((x13264))
+:extrapreds ((x13265))
+:extrapreds ((x13266))
+:extrapreds ((x13267))
+:extrapreds ((x13268))
+:extrapreds ((x13269))
+:extrapreds ((x13270))
+:extrapreds ((x13271))
+:extrapreds ((x13272))
+:extrapreds ((x13273))
+:extrapreds ((x13274))
+:extrapreds ((x13275))
+:extrapreds ((x13276))
+:extrapreds ((x13277))
+:extrapreds ((x13278))
+:extrapreds ((x13279))
+:extrapreds ((x13280))
+:extrapreds ((x13281))
+:extrapreds ((x13282))
+:extrapreds ((x13283))
+:extrapreds ((x13284))
+:extrapreds ((x13285))
+:extrapreds ((x13286))
+:extrapreds ((x13287))
+:extrapreds ((x13288))
+:extrapreds ((x13289))
+:extrapreds ((x13290))
+:extrapreds ((x13291))
+:extrapreds ((x13292))
+:extrapreds ((x13293))
+:extrapreds ((x13294))
+:extrapreds ((x13295))
+:extrapreds ((x13296))
+:extrapreds ((x13297))
+:extrapreds ((x13298))
+:extrapreds ((x13299))
+:extrapreds ((x13300))
+:extrapreds ((x13301))
+:extrapreds ((x13302))
+:extrapreds ((x13303))
+:extrapreds ((x13304))
+:extrapreds ((x13305))
+:extrapreds ((x13306))
+:extrapreds ((x13307))
+:extrapreds ((x13308))
+:extrapreds ((x13309))
+:extrapreds ((x13310))
+:extrapreds ((x13311))
+:extrapreds ((x13312))
+:extrapreds ((x13313))
+:extrapreds ((x13314))
+:extrapreds ((x13315))
+:extrapreds ((x13316))
+:extrapreds ((x13317))
+:extrapreds ((x13318))
+:extrapreds ((x13319))
+:extrapreds ((x13320))
+:extrapreds ((x13321))
+:extrapreds ((x13322))
+:extrapreds ((x13323))
+:extrapreds ((x13324))
+:extrapreds ((x13325))
+:extrapreds ((x13326))
+:extrapreds ((x13327))
+:extrapreds ((x13328))
+:extrapreds ((x13329))
+:extrapreds ((x13330))
+:extrapreds ((x13331))
+:extrapreds ((x13332))
+:extrapreds ((x13333))
+:extrapreds ((x13334))
+:extrapreds ((x13335))
+:extrapreds ((x13336))
+:extrapreds ((x13337))
+:extrapreds ((x13338))
+:extrapreds ((x13339))
+:extrapreds ((x13340))
+:extrapreds ((x13341))
+:extrapreds ((x13342))
+:extrapreds ((x13343))
+:extrapreds ((x13344))
+:extrapreds ((x13345))
+:extrapreds ((x13346))
+:extrapreds ((x13347))
+:extrapreds ((x13348))
+:extrapreds ((x13349))
+:extrapreds ((x13350))
+:extrapreds ((x13351))
+:extrapreds ((x13352))
+:extrapreds ((x13353))
+:extrapreds ((x13354))
+:extrapreds ((x13355))
+:extrapreds ((x13356))
+:extrapreds ((x13357))
+:extrapreds ((x13358))
+:extrapreds ((x13359))
+:extrapreds ((x13360))
+:extrapreds ((x13361))
+:extrapreds ((x13362))
+:extrapreds ((x13363))
+:extrapreds ((x13364))
+:extrapreds ((x13365))
+:extrapreds ((x13366))
+:extrapreds ((x13367))
+:extrapreds ((x13368))
+:extrapreds ((x13369))
+:extrapreds ((x13370))
+:extrapreds ((x13371))
+:extrapreds ((x13372))
+:extrapreds ((x13373))
+:extrapreds ((x13374))
+:extrapreds ((x13375))
+:extrapreds ((x13376))
+:extrapreds ((x13377))
+:extrapreds ((x13378))
+:extrapreds ((x13379))
+:extrapreds ((x13380))
+:extrapreds ((x13381))
+:extrapreds ((x13382))
+:extrapreds ((x13383))
+:extrapreds ((x13384))
+:extrapreds ((x13385))
+:extrapreds ((x13386))
+:extrapreds ((x13387))
+:extrapreds ((x13388))
+:extrapreds ((x13389))
+:extrapreds ((x13390))
+:extrapreds ((x13391))
+:extrapreds ((x13392))
+:extrapreds ((x13393))
+:extrapreds ((x13394))
+:extrapreds ((x13395))
+:extrapreds ((x13396))
+:extrapreds ((x13397))
+:extrapreds ((x13398))
+:extrapreds ((x13399))
+:extrapreds ((x13400))
+:extrapreds ((x13401))
+:extrapreds ((x13402))
+:extrapreds ((x13403))
+:extrapreds ((x13404))
+:extrapreds ((x13405))
+:extrapreds ((x13406))
+:extrapreds ((x13407))
+:extrapreds ((x13408))
+:extrapreds ((x13409))
+:extrapreds ((x13410))
+:extrapreds ((x13411))
+:extrapreds ((x13412))
+:extrapreds ((x13413))
+:extrapreds ((x13414))
+:extrapreds ((x13415))
+:extrapreds ((x13416))
+:extrapreds ((x13417))
+:extrapreds ((x13418))
+:extrapreds ((x13419))
+:extrapreds ((x13420))
+:extrapreds ((x13421))
+:extrapreds ((x13422))
+:extrapreds ((x13423))
+:extrapreds ((x13424))
+:extrapreds ((x13425))
+:extrapreds ((x13426))
+:extrapreds ((x13427))
+:extrapreds ((x13428))
+:extrapreds ((x13429))
+:extrapreds ((x13430))
+:extrapreds ((x13431))
+:extrapreds ((x13432))
+:extrapreds ((x13433))
+:extrapreds ((x13434))
+:extrapreds ((x13435))
+:extrapreds ((x13436))
+:extrapreds ((x13437))
+:extrapreds ((x13438))
+:extrapreds ((x13439))
+:extrapreds ((x13440))
+:extrapreds ((x13441))
+:extrapreds ((x13442))
+:extrapreds ((x13443))
+:extrapreds ((x13444))
+:extrapreds ((x13445))
+:extrapreds ((x13446))
+:extrapreds ((x13447))
+:extrapreds ((x13448))
+:extrapreds ((x13449))
+:extrapreds ((x13450))
+:extrapreds ((x13451))
+:extrapreds ((x13452))
+:extrapreds ((x13453))
+:extrapreds ((x13454))
+:extrapreds ((x13455))
+:extrapreds ((x13456))
+:extrapreds ((x13457))
+:extrapreds ((x13458))
+:extrapreds ((x13459))
+:extrapreds ((x13460))
+:extrapreds ((x13461))
+:extrapreds ((x13462))
+:extrapreds ((x13463))
+:extrapreds ((x13464))
+:extrapreds ((x13465))
+:extrapreds ((x13466))
+:extrapreds ((x13467))
+:extrapreds ((x13468))
+:extrapreds ((x13469))
+:extrapreds ((x13470))
+:extrapreds ((x13471))
+:extrapreds ((x13472))
+:extrapreds ((x13473))
+:extrapreds ((x13474))
+:extrapreds ((x13475))
+:extrapreds ((x13476))
+:extrapreds ((x13477))
+:extrapreds ((x13478))
+:extrapreds ((x13479))
+:extrapreds ((x13480))
+:extrapreds ((x13481))
+:extrapreds ((x13482))
+:extrapreds ((x13483))
+:extrapreds ((x13484))
+:extrapreds ((x13485))
+:extrapreds ((x13486))
+:extrapreds ((x13487))
+:extrapreds ((x13488))
+:extrapreds ((x13489))
+:extrapreds ((x13490))
+:extrapreds ((x13491))
+:extrapreds ((x13492))
+:extrapreds ((x13493))
+:extrapreds ((x13494))
+:extrapreds ((x13495))
+:extrapreds ((x13496))
+:extrapreds ((x13497))
+:extrapreds ((x13498))
+:extrapreds ((x13499))
+:extrapreds ((x13500))
+:extrapreds ((x13501))
+:extrapreds ((x13502))
+:extrapreds ((x13503))
+:extrapreds ((x13504))
+:extrapreds ((x13505))
+:extrapreds ((x13506))
+:extrapreds ((x13507))
+:extrapreds ((x13508))
+:extrapreds ((x13509))
+:extrapreds ((x13510))
+:extrapreds ((x13511))
+:extrapreds ((x13512))
+:extrapreds ((x13513))
+:extrapreds ((x13514))
+:extrapreds ((x13515))
+:extrapreds ((x13516))
+:extrapreds ((x13517))
+:extrapreds ((x13518))
+:extrapreds ((x13519))
+:extrapreds ((x13520))
+:extrapreds ((x13521))
+:extrapreds ((x13522))
+:extrapreds ((x13523))
+:extrapreds ((x13524))
+:extrapreds ((x13525))
+:extrapreds ((x13526))
+:extrapreds ((x13527))
+:extrapreds ((x13528))
+:extrapreds ((x13529))
+:extrapreds ((x13530))
+:extrapreds ((x13531))
+:extrapreds ((x13532))
+:extrapreds ((x13533))
+:extrapreds ((x13534))
+:extrapreds ((x13535))
+:extrapreds ((x13536))
+:extrapreds ((x13537))
+:extrapreds ((x13538))
+:extrapreds ((x13539))
+:extrapreds ((x13540))
+:extrapreds ((x13541))
+:extrapreds ((x13542))
+:extrapreds ((x13543))
+:extrapreds ((x13544))
+:extrapreds ((x13545))
+:extrapreds ((x13546))
+:extrapreds ((x13547))
+:extrapreds ((x13548))
+:extrapreds ((x13549))
+:extrapreds ((x13550))
+:extrapreds ((x13551))
+:extrapreds ((x13552))
+:extrapreds ((x13553))
+:extrapreds ((x13554))
+:extrapreds ((x13555))
+:extrapreds ((x13556))
+:extrapreds ((x13557))
+:extrapreds ((x13558))
+:extrapreds ((x13559))
+:extrapreds ((x13560))
+:extrapreds ((x13561))
+:extrapreds ((x13562))
+:extrapreds ((x13563))
+:extrapreds ((x13564))
+:extrapreds ((x13565))
+:extrapreds ((x13566))
+:extrapreds ((x13567))
+:extrapreds ((x13568))
+:extrapreds ((x13569))
+:extrapreds ((x13570))
+:extrapreds ((x13571))
+:extrapreds ((x13572))
+:extrapreds ((x13573))
+:extrapreds ((x13574))
+:extrapreds ((x13575))
+:extrapreds ((x13576))
+:extrapreds ((x13577))
+:extrapreds ((x13578))
+:extrapreds ((x13579))
+:extrapreds ((x13580))
+:extrapreds ((x13581))
+:extrapreds ((x13582))
+:extrapreds ((x13583))
+:extrapreds ((x13584))
+:extrapreds ((x13585))
+:extrapreds ((x13586))
+:extrapreds ((x13587))
+:extrapreds ((x13588))
+:extrapreds ((x13589))
+:extrapreds ((x13590))
+:extrapreds ((x13591))
+:extrapreds ((x13592))
+:extrapreds ((x13593))
+:extrapreds ((x13594))
+:extrapreds ((x13595))
+:extrapreds ((x13596))
+:extrapreds ((x13597))
+:extrapreds ((x13598))
+:extrapreds ((x13599))
+:extrapreds ((x13600))
+:extrapreds ((x13601))
+:extrapreds ((x13602))
+:extrapreds ((x13603))
+:extrapreds ((x13604))
+:extrapreds ((x13605))
+:extrapreds ((x13606))
+:extrapreds ((x13607))
+:extrapreds ((x13608))
+:extrapreds ((x13609))
+:extrapreds ((x13610))
+:extrapreds ((x13611))
+:extrapreds ((x13612))
+:extrapreds ((x13613))
+:extrapreds ((x13614))
+:extrapreds ((x13615))
+:extrapreds ((x13616))
+:extrapreds ((x13617))
+:extrapreds ((x13618))
+:extrapreds ((x13619))
+:extrapreds ((x13620))
+:extrapreds ((x13621))
+:extrapreds ((x13622))
+:extrapreds ((x13623))
+:extrapreds ((x13624))
+:extrapreds ((x13625))
+:extrapreds ((x13626))
+:extrapreds ((x13627))
+:extrapreds ((x13628))
+:extrapreds ((x13629))
+:extrapreds ((x13630))
+:extrapreds ((x13631))
+:extrapreds ((x13632))
+:extrapreds ((x13633))
+:extrapreds ((x13634))
+:extrapreds ((x13635))
+:extrapreds ((x13636))
+:extrapreds ((x13637))
+:extrapreds ((x13638))
+:extrapreds ((x13639))
+:extrapreds ((x13640))
+:extrapreds ((x13641))
+:extrapreds ((x13642))
+:extrapreds ((x13643))
+:extrapreds ((x13644))
+:extrapreds ((x13645))
+:extrapreds ((x13646))
+:extrapreds ((x13647))
+:extrapreds ((x13648))
+:extrapreds ((x13649))
+:extrapreds ((x13650))
+:extrapreds ((x13651))
+:extrapreds ((x13652))
+:extrapreds ((x13653))
+:extrapreds ((x13654))
+:extrapreds ((x13655))
+:extrapreds ((x13656))
+:extrapreds ((x13657))
+:extrapreds ((x13658))
+:extrapreds ((x13659))
+:extrapreds ((x13660))
+:extrapreds ((x13661))
+:extrapreds ((x13662))
+:extrapreds ((x13663))
+:extrapreds ((x13664))
+:extrapreds ((x13665))
+:extrapreds ((x13666))
+:extrapreds ((x13667))
+:extrapreds ((x13668))
+:extrapreds ((x13669))
+:extrapreds ((x13670))
+:extrapreds ((x13671))
+:extrapreds ((x13672))
+:extrapreds ((x13673))
+:extrapreds ((x13674))
+:extrapreds ((x13675))
+:extrapreds ((x13676))
+:extrapreds ((x13677))
+:extrapreds ((x13678))
+:extrapreds ((x13679))
+:extrapreds ((x13680))
+:extrapreds ((x13681))
+:extrapreds ((x13682))
+:extrapreds ((x13683))
+:extrapreds ((x13684))
+:extrapreds ((x13685))
+:extrapreds ((x13686))
+:extrapreds ((x13687))
+:extrapreds ((x13688))
+:extrapreds ((x13689))
+:extrapreds ((x13690))
+:extrapreds ((x13691))
+:extrapreds ((x13692))
+:extrapreds ((x13693))
+:extrapreds ((x13694))
+:extrapreds ((x13695))
+:extrapreds ((x13696))
+:extrapreds ((x13697))
+:extrapreds ((x13698))
+:extrapreds ((x13699))
+:extrapreds ((x13700))
+:extrapreds ((x13701))
+:extrapreds ((x13702))
+:extrapreds ((x13703))
+:extrapreds ((x13704))
+:extrapreds ((x13705))
+:extrapreds ((x13706))
+:extrapreds ((x13707))
+:extrapreds ((x13708))
+:extrapreds ((x13709))
+:extrapreds ((x13710))
+:extrapreds ((x13711))
+:extrapreds ((x13712))
+:extrapreds ((x13713))
+:extrapreds ((x13714))
+:extrapreds ((x13715))
+:extrapreds ((x13716))
+:extrapreds ((x13717))
+:extrapreds ((x13718))
+:extrapreds ((x13719))
+:extrapreds ((x13720))
+:extrapreds ((x13721))
+:extrapreds ((x13722))
+:extrapreds ((x13723))
+:extrapreds ((x13724))
+:extrapreds ((x13725))
+:extrapreds ((x13726))
+:extrapreds ((x13727))
+:extrapreds ((x13728))
+:extrapreds ((x13729))
+:extrapreds ((x13730))
+:extrapreds ((x13731))
+:extrapreds ((x13732))
+:extrapreds ((x13733))
+:extrapreds ((x13734))
+:extrapreds ((x13735))
+:extrapreds ((x13736))
+:extrapreds ((x13737))
+:extrapreds ((x13738))
+:extrapreds ((x13739))
+:extrapreds ((x13740))
+:extrapreds ((x13741))
+:extrapreds ((x13742))
+:extrapreds ((x13743))
+:extrapreds ((x13744))
+:extrapreds ((x13745))
+:extrapreds ((x13746))
+:extrapreds ((x13747))
+:extrapreds ((x13748))
+:extrapreds ((x13749))
+:extrapreds ((x13750))
+:extrapreds ((x13751))
+:extrapreds ((x13752))
+:extrapreds ((x13753))
+:extrapreds ((x13754))
+:extrapreds ((x13755))
+:extrapreds ((x13756))
+:extrapreds ((x13757))
+:extrapreds ((x13758))
+:extrapreds ((x13759))
+:extrapreds ((x13760))
+:extrapreds ((x13761))
+:extrapreds ((x13762))
+:extrapreds ((x13763))
+:extrapreds ((x13764))
+:extrapreds ((x13765))
+:extrapreds ((x13766))
+:extrapreds ((x13767))
+:extrapreds ((x13768))
+:extrapreds ((x13769))
+:extrapreds ((x13770))
+:extrapreds ((x13771))
+:extrapreds ((x13772))
+:extrapreds ((x13773))
+:extrapreds ((x13774))
+:extrapreds ((x13775))
+:extrapreds ((x13776))
+:extrapreds ((x13777))
+:extrapreds ((x13778))
+:extrapreds ((x13779))
+:extrapreds ((x13780))
+:extrapreds ((x13781))
+:extrapreds ((x13782))
+:extrapreds ((x13783))
+:extrapreds ((x13784))
+:extrapreds ((x13785))
+:extrapreds ((x13786))
+:extrapreds ((x13787))
+:extrapreds ((x13788))
+:extrapreds ((x13789))
+:extrapreds ((x13790))
+:extrapreds ((x13791))
+:extrapreds ((x13792))
+:extrapreds ((x13793))
+:extrapreds ((x13794))
+:extrapreds ((x13795))
+:extrapreds ((x13796))
+:extrapreds ((x13797))
+:extrapreds ((x13798))
+:extrapreds ((x13799))
+:extrapreds ((x13800))
+:extrapreds ((x13801))
+:extrapreds ((x13802))
+:extrapreds ((x13803))
+:extrapreds ((x13804))
+:extrapreds ((x13805))
+:extrapreds ((x13806))
+:extrapreds ((x13807))
+:extrapreds ((x13808))
+:extrapreds ((x13809))
+:extrapreds ((x13810))
+:extrapreds ((x13811))
+:extrapreds ((x13812))
+:extrapreds ((x13813))
+:extrapreds ((x13814))
+:extrapreds ((x13815))
+:extrapreds ((x13816))
+:extrapreds ((x13817))
+:extrapreds ((x13818))
+:extrapreds ((x13819))
+:extrapreds ((x13820))
+:extrapreds ((x13821))
+:extrapreds ((x13822))
+:extrapreds ((x13823))
+:extrapreds ((x13824))
+:extrapreds ((x13825))
+:extrapreds ((x13826))
+:extrapreds ((x13827))
+:extrapreds ((x13828))
+:extrapreds ((x13829))
+:extrapreds ((x13830))
+:extrapreds ((x13831))
+:extrapreds ((x13832))
+:extrapreds ((x13833))
+:extrapreds ((x13834))
+:extrapreds ((x13835))
+:extrapreds ((x13836))
+:extrapreds ((x13837))
+:extrapreds ((x13838))
+:extrapreds ((x13839))
+:extrapreds ((x13840))
+:extrapreds ((x13841))
+:extrapreds ((x13842))
+:extrapreds ((x13843))
+:extrapreds ((x13844))
+:extrapreds ((x13845))
+:extrapreds ((x13846))
+:extrapreds ((x13847))
+:extrapreds ((x13848))
+:extrapreds ((x13849))
+:extrapreds ((x13850))
+:extrapreds ((x13851))
+:extrapreds ((x13852))
+:extrapreds ((x13853))
+:extrapreds ((x13854))
+:extrapreds ((x13855))
+:extrapreds ((x13856))
+:extrapreds ((x13857))
+:extrapreds ((x13858))
+:extrapreds ((x13859))
+:extrapreds ((x13860))
+:extrapreds ((x13861))
+:extrapreds ((x13862))
+:extrapreds ((x13863))
+:extrapreds ((x13864))
+:extrapreds ((x13865))
+:extrapreds ((x13866))
+:extrapreds ((x13867))
+:extrapreds ((x13868))
+:extrapreds ((x13869))
+:extrapreds ((x13870))
+:extrapreds ((x13871))
+:extrapreds ((x13872))
+:extrapreds ((x13873))
+:extrapreds ((x13874))
+:extrapreds ((x13875))
+:extrapreds ((x13876))
+:extrapreds ((x13877))
+:extrapreds ((x13878))
+:extrapreds ((x13879))
+:extrapreds ((x13880))
+:extrapreds ((x13881))
+:extrapreds ((x13882))
+:extrapreds ((x13883))
+:extrapreds ((x13884))
+:extrapreds ((x13885))
+:extrapreds ((x13886))
+:extrapreds ((x13887))
+:extrapreds ((x13888))
+:extrapreds ((x13889))
+:extrapreds ((x13890))
+:extrapreds ((x13891))
+:extrapreds ((x13892))
+:extrapreds ((x13893))
+:extrapreds ((x13894))
+:extrapreds ((x13895))
+:extrapreds ((x13896))
+:extrapreds ((x13897))
+:extrapreds ((x13898))
+:extrapreds ((x13899))
+:extrapreds ((x13900))
+:extrapreds ((x13901))
+:extrapreds ((x13902))
+:extrapreds ((x13903))
+:extrapreds ((x13904))
+:extrapreds ((x13905))
+:extrapreds ((x13906))
+:extrapreds ((x13907))
+:extrapreds ((x13908))
+:extrapreds ((x13909))
+:extrapreds ((x13910))
+:extrapreds ((x13911))
+:extrapreds ((x13912))
+:extrapreds ((x13913))
+:extrapreds ((x13914))
+:extrapreds ((x13915))
+:extrapreds ((x13916))
+:extrapreds ((x13917))
+:extrapreds ((x13918))
+:extrapreds ((x13919))
+:extrapreds ((x13920))
+:extrapreds ((x13921))
+:extrapreds ((x13922))
+:extrapreds ((x13923))
+:extrapreds ((x13924))
+:extrapreds ((x13925))
+:extrapreds ((x13926))
+:extrapreds ((x13927))
+:extrapreds ((x13928))
+:extrapreds ((x13929))
+:extrapreds ((x13930))
+:extrapreds ((x13931))
+:extrapreds ((x13932))
+:extrapreds ((x13933))
+:extrapreds ((x13934))
+:extrapreds ((x13935))
+:extrapreds ((x13936))
+:extrapreds ((x13937))
+:extrapreds ((x13938))
+:extrapreds ((x13939))
+:extrapreds ((x13940))
+:extrapreds ((x13941))
+:extrapreds ((x13942))
+:extrapreds ((x13943))
+:extrapreds ((x13944))
+:extrapreds ((x13945))
+:extrapreds ((x13946))
+:extrapreds ((x13947))
+:extrapreds ((x13948))
+:extrapreds ((x13949))
+:extrapreds ((x13950))
+:extrapreds ((x13951))
+:extrapreds ((x13952))
+:extrapreds ((x13953))
+:extrapreds ((x13954))
+:extrapreds ((x13955))
+:extrapreds ((x13956))
+:extrapreds ((x13957))
+:extrapreds ((x13958))
+:extrapreds ((x13959))
+:extrapreds ((x13960))
+:extrapreds ((x13961))
+:extrapreds ((x13962))
+:extrapreds ((x13963))
+:extrapreds ((x13964))
+:extrapreds ((x13965))
+:extrapreds ((x13966))
+:extrapreds ((x13967))
+:extrapreds ((x13968))
+:extrapreds ((x13969))
+:extrapreds ((x13970))
+:extrapreds ((x13971))
+:extrapreds ((x13972))
+:extrapreds ((x13973))
+:extrapreds ((x13974))
+:extrapreds ((x13975))
+:extrapreds ((x13976))
+:extrapreds ((x13977))
+:extrapreds ((x13978))
+:extrapreds ((x13979))
+:extrapreds ((x13980))
+:extrapreds ((x13981))
+:extrapreds ((x13982))
+:extrapreds ((x13983))
+:extrapreds ((x13984))
+:extrapreds ((x13985))
+:extrapreds ((x13986))
+:extrapreds ((x13987))
+:extrapreds ((x13988))
+:extrapreds ((x13989))
+:extrapreds ((x13990))
+:extrapreds ((x13991))
+:extrapreds ((x13992))
+:extrapreds ((x13993))
+:extrapreds ((x13994))
+:extrapreds ((x13995))
+:extrapreds ((x13996))
+:extrapreds ((x13997))
+:extrapreds ((x13998))
+:extrapreds ((x13999))
+:extrapreds ((x14000))
+:extrapreds ((x14001))
+:extrapreds ((x14002))
+:extrapreds ((x14003))
+:extrapreds ((x14004))
+:extrapreds ((x14005))
+:extrapreds ((x14006))
+:extrapreds ((x14007))
+:extrapreds ((x14008))
+:extrapreds ((x14009))
+:extrapreds ((x14010))
+:extrapreds ((x14011))
+:extrapreds ((x14012))
+:extrapreds ((x14013))
+:extrapreds ((x14014))
+:extrapreds ((x14015))
+:extrapreds ((x14016))
+:extrapreds ((x14017))
+:extrapreds ((x14018))
+:extrapreds ((x14019))
+:extrapreds ((x14020))
+:extrapreds ((x14021))
+:extrapreds ((x14022))
+:extrapreds ((x14023))
+:extrapreds ((x14024))
+:extrapreds ((x14025))
+:extrapreds ((x14026))
+:extrapreds ((x14027))
+:extrapreds ((x14028))
+:extrapreds ((x14029))
+:extrapreds ((x14030))
+:extrapreds ((x14031))
+:extrapreds ((x14032))
+:extrapreds ((x14033))
+:extrapreds ((x14034))
+:extrapreds ((x14035))
+:extrapreds ((x14036))
+:extrapreds ((x14037))
+:extrapreds ((x14038))
+:extrapreds ((x14039))
+:extrapreds ((x14040))
+:extrapreds ((x14041))
+:extrapreds ((x14042))
+:extrapreds ((x14043))
+:extrapreds ((x14044))
+:extrapreds ((x14045))
+:extrapreds ((x14046))
+:extrapreds ((x14047))
+:extrapreds ((x14048))
+:extrapreds ((x14049))
+:extrapreds ((x14050))
+:extrapreds ((x14051))
+:extrapreds ((x14052))
+:extrapreds ((x14053))
+:extrapreds ((x14054))
+:extrapreds ((x14055))
+:extrapreds ((x14056))
+:extrapreds ((x14057))
+:extrapreds ((x14058))
+:extrapreds ((x14059))
+:extrapreds ((x14060))
+:extrapreds ((x14061))
+:extrapreds ((x14062))
+:extrapreds ((x14063))
+:extrapreds ((x14064))
+:extrapreds ((x14065))
+:extrapreds ((x14066))
+:extrapreds ((x14067))
+:extrapreds ((x14068))
+:extrapreds ((x14069))
+:extrapreds ((x14070))
+:extrapreds ((x14071))
+:extrapreds ((x14072))
+:extrapreds ((x14073))
+:extrapreds ((x14074))
+:extrapreds ((x14075))
+:extrapreds ((x14076))
+:extrapreds ((x14077))
+:extrapreds ((x14078))
+:extrapreds ((x14079))
+:extrapreds ((x14080))
+:extrapreds ((x14081))
+:extrapreds ((x14082))
+:extrapreds ((x14083))
+:extrapreds ((x14084))
+:extrapreds ((x14085))
+:extrapreds ((x14086))
+:extrapreds ((x14087))
+:extrapreds ((x14088))
+:extrapreds ((x14089))
+:extrapreds ((x14090))
+:extrapreds ((x14091))
+:extrapreds ((x14092))
+:extrapreds ((x14093))
+:extrapreds ((x14094))
+:extrapreds ((x14095))
+:extrapreds ((x14096))
+:extrapreds ((x14097))
+:extrapreds ((x14098))
+:extrapreds ((x14099))
+:extrapreds ((x14100))
+:extrapreds ((x14101))
+:extrapreds ((x14102))
+:extrapreds ((x14103))
+:extrapreds ((x14104))
+:extrapreds ((x14105))
+:extrapreds ((x14106))
+:extrapreds ((x14107))
+:extrapreds ((x14108))
+:extrapreds ((x14109))
+:extrapreds ((x14110))
+:extrapreds ((x14111))
+:extrapreds ((x14112))
+:extrapreds ((x14113))
+:extrapreds ((x14114))
+:extrapreds ((x14115))
+:extrapreds ((x14116))
+:extrapreds ((x14117))
+:extrapreds ((x14118))
+:extrapreds ((x14119))
+:extrapreds ((x14120))
+:extrapreds ((x14121))
+:extrapreds ((x14122))
+:extrapreds ((x14123))
+:extrapreds ((x14124))
+:extrapreds ((x14125))
+:extrapreds ((x14126))
+:extrapreds ((x14127))
+:extrapreds ((x14128))
+:extrapreds ((x14129))
+:extrapreds ((x14130))
+:extrapreds ((x14131))
+:extrapreds ((x14132))
+:extrapreds ((x14133))
+:extrapreds ((x14134))
+:extrapreds ((x14135))
+:extrapreds ((x14136))
+:extrapreds ((x14137))
+:extrapreds ((x14138))
+:extrapreds ((x14139))
+:extrapreds ((x14140))
+:extrapreds ((x14141))
+:extrapreds ((x14142))
+:extrapreds ((x14143))
+:extrapreds ((x14144))
+:extrapreds ((x14145))
+:extrapreds ((x14146))
+:extrapreds ((x14147))
+:extrapreds ((x14148))
+:extrapreds ((x14149))
+:extrapreds ((x14150))
+:extrapreds ((x14151))
+:extrapreds ((x14152))
+:extrapreds ((x14153))
+:extrapreds ((x14154))
+:extrapreds ((x14155))
+:extrapreds ((x14156))
+:extrapreds ((x14157))
+:extrapreds ((x14158))
+:extrapreds ((x14159))
+:extrapreds ((x14160))
+:extrapreds ((x14161))
+:extrapreds ((x14162))
+:extrapreds ((x14163))
+:extrapreds ((x14164))
+:extrapreds ((x14165))
+:extrapreds ((x14166))
+:extrapreds ((x14167))
+:extrapreds ((x14168))
+:extrapreds ((x14169))
+:extrapreds ((x14170))
+:extrapreds ((x14171))
+:extrapreds ((x14172))
+:extrapreds ((x14173))
+:extrapreds ((x14174))
+:extrapreds ((x14175))
+:extrapreds ((x14176))
+:extrapreds ((x14177))
+:extrapreds ((x14178))
+:extrapreds ((x14179))
+:extrapreds ((x14180))
+:extrapreds ((x14181))
+:extrapreds ((x14182))
+:extrapreds ((x14183))
+:extrapreds ((x14184))
+:extrapreds ((x14185))
+:extrapreds ((x14186))
+:extrapreds ((x14187))
+:extrapreds ((x14188))
+:extrapreds ((x14189))
+:extrapreds ((x14190))
+:extrapreds ((x14191))
+:extrapreds ((x14192))
+:extrapreds ((x14193))
+:extrapreds ((x14194))
+:extrapreds ((x14195))
+:extrapreds ((x14196))
+:extrapreds ((x14197))
+:extrapreds ((x14198))
+:extrapreds ((x14199))
+:extrapreds ((x14200))
+:extrapreds ((x14201))
+:extrapreds ((x14202))
+:extrapreds ((x14203))
+:extrapreds ((x14204))
+:extrapreds ((x14205))
+:extrapreds ((x14206))
+:extrapreds ((x14207))
+:extrapreds ((x14208))
+:extrapreds ((x14209))
+:extrapreds ((x14210))
+:extrapreds ((x14211))
+:extrapreds ((x14212))
+:extrapreds ((x14213))
+:extrapreds ((x14214))
+:extrapreds ((x14215))
+:extrapreds ((x14216))
+:extrapreds ((x14217))
+:extrapreds ((x14218))
+:extrapreds ((x14219))
+:extrapreds ((x14220))
+:extrapreds ((x14221))
+:extrapreds ((x14222))
+:extrapreds ((x14223))
+:extrapreds ((x14224))
+:extrapreds ((x14225))
+:extrapreds ((x14226))
+:extrapreds ((x14227))
+:extrapreds ((x14228))
+:extrapreds ((x14229))
+:extrapreds ((x14230))
+:extrapreds ((x14231))
+:extrapreds ((x14232))
+:extrapreds ((x14233))
+:extrapreds ((x14234))
+:extrapreds ((x14235))
+:extrapreds ((x14236))
+:extrapreds ((x14237))
+:extrapreds ((x14238))
+:extrapreds ((x14239))
+:extrapreds ((x14240))
+:extrapreds ((x14241))
+:extrapreds ((x14242))
+:extrapreds ((x14243))
+:extrapreds ((x14244))
+:extrapreds ((x14245))
+:extrapreds ((x14246))
+:extrapreds ((x14247))
+:extrapreds ((x14248))
+:extrapreds ((x14249))
+:extrapreds ((x14250))
+:extrapreds ((x14251))
+:extrapreds ((x14252))
+:extrapreds ((x14253))
+:extrapreds ((x14254))
+:extrapreds ((x14255))
+:extrapreds ((x14256))
+:extrapreds ((x14257))
+:extrapreds ((x14258))
+:extrapreds ((x14259))
+:extrapreds ((x14260))
+:extrapreds ((x14261))
+:extrapreds ((x14262))
+:extrapreds ((x14263))
+:extrapreds ((x14264))
+:extrapreds ((x14265))
+:extrapreds ((x14266))
+:extrapreds ((x14267))
+:extrapreds ((x14268))
+:extrapreds ((x14269))
+:extrapreds ((x14270))
+:extrapreds ((x14271))
+:extrapreds ((x14272))
+:extrapreds ((x14273))
+:extrapreds ((x14274))
+:extrapreds ((x14275))
+:extrapreds ((x14276))
+:extrapreds ((x14277))
+:extrapreds ((x14278))
+:extrapreds ((x14279))
+:extrapreds ((x14280))
+:extrapreds ((x14281))
+:extrapreds ((x14282))
+:extrapreds ((x14283))
+:extrapreds ((x14284))
+:extrapreds ((x14285))
+:extrapreds ((x14286))
+:extrapreds ((x14287))
+:extrapreds ((x14288))
+:extrapreds ((x14289))
+:extrapreds ((x14290))
+:extrapreds ((x14291))
+:extrapreds ((x14292))
+:extrapreds ((x14293))
+:extrapreds ((x14294))
+:extrapreds ((x14295))
+:extrapreds ((x14296))
+:extrapreds ((x14297))
+:extrapreds ((x14298))
+:extrapreds ((x14299))
+:extrapreds ((x14300))
+:extrapreds ((x14301))
+:extrapreds ((x14302))
+:extrapreds ((x14303))
+:extrapreds ((x14304))
+:extrapreds ((x14305))
+:extrapreds ((x14306))
+:extrapreds ((x14307))
+:extrapreds ((x14308))
+:extrapreds ((x14309))
+:extrapreds ((x14310))
+:extrapreds ((x14311))
+:extrapreds ((x14312))
+:extrapreds ((x14313))
+:extrapreds ((x14314))
+:extrapreds ((x14315))
+:extrapreds ((x14316))
+:extrapreds ((x14317))
+:extrapreds ((x14318))
+:extrapreds ((x14319))
+:extrapreds ((x14320))
+:extrapreds ((x14321))
+:extrapreds ((x14322))
+:extrapreds ((x14323))
+:extrapreds ((x14324))
+:extrapreds ((x14325))
+:extrapreds ((x14326))
+:extrapreds ((x14327))
+:extrapreds ((x14328))
+:extrapreds ((x14329))
+:extrapreds ((x14330))
+:extrapreds ((x14331))
+:extrapreds ((x14332))
+:extrapreds ((x14333))
+:extrapreds ((x14334))
+:extrapreds ((x14335))
+:extrapreds ((x14336))
+:extrapreds ((x14337))
+:extrapreds ((x14338))
+:extrapreds ((x14339))
+:extrapreds ((x14340))
+:extrapreds ((x14341))
+:extrapreds ((x14342))
+:extrapreds ((x14343))
+:extrapreds ((x14344))
+:extrapreds ((x14345))
+:extrapreds ((x14346))
+:extrapreds ((x14347))
+:extrapreds ((x14348))
+:extrapreds ((x14349))
+:extrapreds ((x14350))
+:extrapreds ((x14351))
+:extrapreds ((x14352))
+:extrapreds ((x14353))
+:extrapreds ((x14354))
+:extrapreds ((x14355))
+:extrapreds ((x14356))
+:extrapreds ((x14357))
+:extrapreds ((x14358))
+:extrapreds ((x14359))
+:extrapreds ((x14360))
+:extrapreds ((x14361))
+:extrapreds ((x14362))
+:extrapreds ((x14363))
+:extrapreds ((x14364))
+:extrapreds ((x14365))
+:extrapreds ((x14366))
+:extrapreds ((x14367))
+:extrapreds ((x14368))
+:extrapreds ((x14369))
+:extrapreds ((x14370))
+:extrapreds ((x14371))
+:extrapreds ((x14372))
+:extrapreds ((x14373))
+:extrapreds ((x14374))
+:extrapreds ((x14375))
+:extrapreds ((x14376))
+:extrapreds ((x14377))
+:extrapreds ((x14378))
+:extrapreds ((x14379))
+:extrapreds ((x14380))
+:extrapreds ((x14381))
+:extrapreds ((x14382))
+:extrapreds ((x14383))
+:extrapreds ((x14384))
+:extrapreds ((x14385))
+:extrapreds ((x14386))
+:extrapreds ((x14387))
+:extrapreds ((x14388))
+:extrapreds ((x14389))
+:extrapreds ((x14390))
+:extrapreds ((x14391))
+:extrapreds ((x14392))
+:extrapreds ((x14393))
+:extrapreds ((x14394))
+:extrapreds ((x14395))
+:extrapreds ((x14396))
+:extrapreds ((x14397))
+:extrapreds ((x14398))
+:extrapreds ((x14399))
+:extrapreds ((x14400))
+:extrapreds ((x14401))
+:extrapreds ((x14402))
+:extrapreds ((x14403))
+:extrapreds ((x14404))
+:extrapreds ((x14405))
+:extrapreds ((x14406))
+:extrapreds ((x14407))
+:extrapreds ((x14408))
+:extrapreds ((x14409))
+:extrapreds ((x14410))
+:extrapreds ((x14411))
+:extrapreds ((x14412))
+:extrapreds ((x14413))
+:extrapreds ((x14414))
+:extrapreds ((x14415))
+:extrapreds ((x14416))
+:extrapreds ((x14417))
+:extrapreds ((x14418))
+:extrapreds ((x14419))
+:extrapreds ((x14420))
+:extrapreds ((x14421))
+:extrapreds ((x14422))
+:extrapreds ((x14423))
+:extrapreds ((x14424))
+:extrapreds ((x14425))
+:extrapreds ((x14426))
+:extrapreds ((x14427))
+:extrapreds ((x14428))
+:extrapreds ((x14429))
+:extrapreds ((x14430))
+:extrapreds ((x14431))
+:extrapreds ((x14432))
+:extrapreds ((x14433))
+:extrapreds ((x14434))
+:extrapreds ((x14435))
+:extrapreds ((x14436))
+:extrapreds ((x14437))
+:extrapreds ((x14438))
+:extrapreds ((x14439))
+:extrapreds ((x14440))
+:extrapreds ((x14441))
+:extrapreds ((x14442))
+:extrapreds ((x14443))
+:extrapreds ((x14444))
+:extrapreds ((x14445))
+:extrapreds ((x14446))
+:extrapreds ((x14447))
+:extrapreds ((x14448))
+:extrapreds ((x14449))
+:extrapreds ((x14450))
+:extrapreds ((x14451))
+:extrapreds ((x14452))
+:extrapreds ((x14453))
+:extrapreds ((x14454))
+:extrapreds ((x14455))
+:extrapreds ((x14456))
+:extrapreds ((x14457))
+:extrapreds ((x14458))
+:extrapreds ((x14459))
+:extrapreds ((x14460))
+:extrapreds ((x14461))
+:extrapreds ((x14462))
+:extrapreds ((x14463))
+:extrapreds ((x14464))
+:extrapreds ((x14465))
+:extrapreds ((x14466))
+:extrapreds ((x14467))
+:extrapreds ((x14468))
+:extrapreds ((x14469))
+:extrapreds ((x14470))
+:extrapreds ((x14471))
+:extrapreds ((x14472))
+:extrapreds ((x14473))
+:extrapreds ((x14474))
+:extrapreds ((x14475))
+:extrapreds ((x14476))
+:extrapreds ((x14477))
+:extrapreds ((x14478))
+:extrapreds ((x14479))
+:extrapreds ((x14480))
+:extrapreds ((x14481))
+:extrapreds ((x14482))
+:extrapreds ((x14483))
+:extrapreds ((x14484))
+:extrapreds ((x14485))
+:extrapreds ((x14486))
+:extrapreds ((x14487))
+:extrapreds ((x14488))
+:extrapreds ((x14489))
+:extrapreds ((x14490))
+:extrapreds ((x14491))
+:extrapreds ((x14492))
+:extrapreds ((x14493))
+:extrapreds ((x14494))
+:extrapreds ((x14495))
+:extrapreds ((x14496))
+:extrapreds ((x14497))
+:extrapreds ((x14498))
+:extrapreds ((x14499))
+:extrapreds ((x14500))
+:extrapreds ((x14501))
+:extrapreds ((x14502))
+:extrapreds ((x14503))
+:extrapreds ((x14504))
+:extrapreds ((x14505))
+:extrapreds ((x14506))
+:extrapreds ((x14507))
+:extrapreds ((x14508))
+:extrapreds ((x14509))
+:extrapreds ((x14510))
+:extrapreds ((x14511))
+:extrapreds ((x14512))
+:extrapreds ((x14513))
+:extrapreds ((x14514))
+:extrapreds ((x14515))
+:extrapreds ((x14516))
+:extrapreds ((x14517))
+:extrapreds ((x14518))
+:extrapreds ((x14519))
+:extrapreds ((x14520))
+:extrapreds ((x14521))
+:extrapreds ((x14522))
+:extrapreds ((x14523))
+:extrapreds ((x14524))
+:extrapreds ((x14525))
+:extrapreds ((x14526))
+:extrapreds ((x14527))
+:extrapreds ((x14528))
+:extrapreds ((x14529))
+:extrapreds ((x14530))
+:extrapreds ((x14531))
+:extrapreds ((x14532))
+:extrapreds ((x14533))
+:extrapreds ((x14534))
+:extrapreds ((x14535))
+:extrapreds ((x14536))
+:extrapreds ((x14537))
+:extrapreds ((x14538))
+:extrapreds ((x14539))
+:extrapreds ((x14540))
+:extrapreds ((x14541))
+:extrapreds ((x14542))
+:extrapreds ((x14543))
+:extrapreds ((x14544))
+:extrapreds ((x14545))
+:extrapreds ((x14546))
+:extrapreds ((x14547))
+:extrapreds ((x14548))
+:extrapreds ((x14549))
+:extrapreds ((x14550))
+:extrapreds ((x14551))
+:extrapreds ((x14552))
+:extrapreds ((x14553))
+:extrapreds ((x14554))
+:extrapreds ((x14555))
+:extrapreds ((x14556))
+:extrapreds ((x14557))
+:extrapreds ((x14558))
+:extrapreds ((x14559))
+:extrapreds ((x14560))
+:extrapreds ((x14561))
+:extrapreds ((x14562))
+:extrapreds ((x14563))
+:extrapreds ((x14564))
+:extrapreds ((x14565))
+:extrapreds ((x14566))
+:extrapreds ((x14567))
+:extrapreds ((x14568))
+:extrapreds ((x14569))
+:extrapreds ((x14570))
+:extrapreds ((x14571))
+:extrapreds ((x14572))
+:extrapreds ((x14573))
+:extrapreds ((x14574))
+:extrapreds ((x14575))
+:extrapreds ((x14576))
+:extrapreds ((x14577))
+:extrapreds ((x14578))
+:extrapreds ((x14579))
+:extrapreds ((x14580))
+:extrapreds ((x14581))
+:extrapreds ((x14582))
+:extrapreds ((x14583))
+:extrapreds ((x14584))
+:extrapreds ((x14585))
+:extrapreds ((x14586))
+:extrapreds ((x14587))
+:extrapreds ((x14588))
+:extrapreds ((x14589))
+:extrapreds ((x14590))
+:extrapreds ((x14591))
+:extrapreds ((x14592))
+:extrapreds ((x14593))
+:extrapreds ((x14594))
+:extrapreds ((x14595))
+:extrapreds ((x14596))
+:extrapreds ((x14597))
+:extrapreds ((x14598))
+:extrapreds ((x14599))
+:extrapreds ((x14600))
+:extrapreds ((x14601))
+:extrapreds ((x14602))
+:extrapreds ((x14603))
+:extrapreds ((x14604))
+:extrapreds ((x14605))
+:extrapreds ((x14606))
+:extrapreds ((x14607))
+:extrapreds ((x14608))
+:extrapreds ((x14609))
+:extrapreds ((x14610))
+:extrapreds ((x14611))
+:extrapreds ((x14612))
+:extrapreds ((x14613))
+:extrapreds ((x14614))
+:extrapreds ((x14615))
+:extrapreds ((x14616))
+:extrapreds ((x14617))
+:extrapreds ((x14618))
+:extrapreds ((x14619))
+:extrapreds ((x14620))
+:extrapreds ((x14621))
+:extrapreds ((x14622))
+:extrapreds ((x14623))
+:extrapreds ((x14624))
+:extrapreds ((x14625))
+:extrapreds ((x14626))
+:extrapreds ((x14627))
+:extrapreds ((x14628))
+:extrapreds ((x14629))
+:extrapreds ((x14630))
+:extrapreds ((x14631))
+:extrapreds ((x14632))
+:extrapreds ((x14633))
+:extrapreds ((x14634))
+:extrapreds ((x14635))
+:extrapreds ((x14636))
+:extrapreds ((x14637))
+:extrapreds ((x14638))
+:extrapreds ((x14639))
+:extrapreds ((x14640))
+:extrapreds ((x14641))
+:extrapreds ((x14642))
+:extrapreds ((x14643))
+:extrapreds ((x14644))
+:extrapreds ((x14645))
+:extrapreds ((x14646))
+:extrapreds ((x14647))
+:extrapreds ((x14648))
+:extrapreds ((x14649))
+:extrapreds ((x14650))
+:extrapreds ((x14651))
+:extrapreds ((x14652))
+:extrapreds ((x14653))
+:extrapreds ((x14654))
+:extrapreds ((x14655))
+:extrapreds ((x14656))
+:extrapreds ((x14657))
+:extrapreds ((x14658))
+:extrapreds ((x14659))
+:extrapreds ((x14660))
+:extrapreds ((x14661))
+:extrapreds ((x14662))
+:extrapreds ((x14663))
+:extrapreds ((x14664))
+:extrapreds ((x14665))
+:extrapreds ((x14666))
+:extrapreds ((x14667))
+:extrapreds ((x14668))
+:extrapreds ((x14669))
+:extrapreds ((x14670))
+:extrapreds ((x14671))
+:extrapreds ((x14672))
+:extrapreds ((x14673))
+:extrapreds ((x14674))
+:extrapreds ((x14675))
+:extrapreds ((x14676))
+:extrapreds ((x14677))
+:extrapreds ((x14678))
+:extrapreds ((x14679))
+:extrapreds ((x14680))
+:extrapreds ((x14681))
+:extrapreds ((x14682))
+:extrapreds ((x14683))
+:extrapreds ((x14684))
+:extrapreds ((x14685))
+:extrapreds ((x14686))
+:extrapreds ((x14687))
+:extrapreds ((x14688))
+:extrapreds ((x14689))
+:extrapreds ((x14690))
+:extrapreds ((x14691))
+:extrapreds ((x14692))
+:extrapreds ((x14693))
+:extrapreds ((x14694))
+:extrapreds ((x14695))
+:extrapreds ((x14696))
+:extrapreds ((x14697))
+:extrapreds ((x14698))
+:extrapreds ((x14699))
+:extrapreds ((x14700))
+:extrapreds ((x14701))
+:extrapreds ((x14702))
+:extrapreds ((x14703))
+:extrapreds ((x14704))
+:extrapreds ((x14705))
+:extrapreds ((x14706))
+:extrapreds ((x14707))
+:extrapreds ((x14708))
+:extrapreds ((x14709))
+:extrapreds ((x14710))
+:extrapreds ((x14711))
+:extrapreds ((x14712))
+:extrapreds ((x14713))
+:extrapreds ((x14714))
+:extrapreds ((x14715))
+:extrapreds ((x14716))
+:extrapreds ((x14717))
+:extrapreds ((x14718))
+:extrapreds ((x14719))
+:extrapreds ((x14720))
+:extrapreds ((x14721))
+:extrapreds ((x14722))
+:extrapreds ((x14723))
+:extrapreds ((x14724))
+:extrapreds ((x14725))
+:extrapreds ((x14726))
+:extrapreds ((x14727))
+:extrapreds ((x14728))
+:extrapreds ((x14729))
+:extrapreds ((x14730))
+:extrapreds ((x14731))
+:extrapreds ((x14732))
+:extrapreds ((x14733))
+:extrapreds ((x14734))
+:extrapreds ((x14735))
+:extrapreds ((x14736))
+:extrapreds ((x14737))
+:extrapreds ((x14738))
+:extrapreds ((x14739))
+:extrapreds ((x14740))
+:extrapreds ((x14741))
+:extrapreds ((x14742))
+:extrapreds ((x14743))
+:extrapreds ((x14744))
+:extrapreds ((x14745))
+:extrapreds ((x14746))
+:extrapreds ((x14747))
+:extrapreds ((x14748))
+:extrapreds ((x14749))
+:extrapreds ((x14750))
+:extrapreds ((x14751))
+:extrapreds ((x14752))
+:extrapreds ((x14753))
+:extrapreds ((x14754))
+:extrapreds ((x14755))
+:extrapreds ((x14756))
+:extrapreds ((x14757))
+:extrapreds ((x14758))
+:extrapreds ((x14759))
+:extrapreds ((x14760))
+:extrapreds ((x14761))
+:extrapreds ((x14762))
+:extrapreds ((x14763))
+:extrapreds ((x14764))
+:extrapreds ((x14765))
+:extrapreds ((x14766))
+:extrapreds ((x14767))
+:extrapreds ((x14768))
+:extrapreds ((x14769))
+:extrapreds ((x14770))
+:extrapreds ((x14771))
+:extrapreds ((x14772))
+:extrapreds ((x14773))
+:extrapreds ((x14774))
+:extrapreds ((x14775))
+:extrapreds ((x14776))
+:extrapreds ((x14777))
+:extrapreds ((x14778))
+:extrapreds ((x14779))
+:extrapreds ((x14780))
+:extrapreds ((x14781))
+:extrapreds ((x14782))
+:extrapreds ((x14783))
+:extrapreds ((x14784))
+:extrapreds ((x14785))
+:extrapreds ((x14786))
+:extrapreds ((x14787))
+:extrapreds ((x14788))
+:extrapreds ((x14789))
+:extrapreds ((x14790))
+:extrapreds ((x14791))
+:extrapreds ((x14792))
+:extrapreds ((x14793))
+:extrapreds ((x14794))
+:extrapreds ((x14795))
+:extrapreds ((x14796))
+:extrapreds ((x14797))
+:extrapreds ((x14798))
+:extrapreds ((x14799))
+:extrapreds ((x14800))
+:extrapreds ((x14801))
+:extrapreds ((x14802))
+:extrapreds ((x14803))
+:extrapreds ((x14804))
+:extrapreds ((x14805))
+:extrapreds ((x14806))
+:extrapreds ((x14807))
+:extrapreds ((x14808))
+:extrapreds ((x14809))
+:extrapreds ((x14810))
+:extrapreds ((x14811))
+:extrapreds ((x14812))
+:extrapreds ((x14813))
+:extrapreds ((x14814))
+:extrapreds ((x14815))
+:extrapreds ((x14816))
+:extrapreds ((x14817))
+:extrapreds ((x14818))
+:extrapreds ((x14819))
+:extrapreds ((x14820))
+:extrapreds ((x14821))
+:extrapreds ((x14822))
+:extrapreds ((x14823))
+:extrapreds ((x14824))
+:extrapreds ((x14825))
+:extrapreds ((x14826))
+:extrapreds ((x14827))
+:extrapreds ((x14828))
+:extrapreds ((x14829))
+:extrapreds ((x14830))
+:extrapreds ((x14831))
+:extrapreds ((x14832))
+:extrapreds ((x14833))
+:extrapreds ((x14834))
+:extrapreds ((x14835))
+:extrapreds ((x14836))
+:extrapreds ((x14837))
+:extrapreds ((x14838))
+:extrapreds ((x14839))
+:extrapreds ((x14840))
+:extrapreds ((x14841))
+:extrapreds ((x14842))
+:extrapreds ((x14843))
+:extrapreds ((x14844))
+:extrapreds ((x14845))
+:extrapreds ((x14846))
+:extrapreds ((x14847))
+:extrapreds ((x14848))
+:extrapreds ((x14849))
+:extrapreds ((x14850))
+:extrapreds ((x14851))
+:extrapreds ((x14852))
+:extrapreds ((x14853))
+:extrapreds ((x14854))
+:extrapreds ((x14855))
+:extrapreds ((x14856))
+:extrapreds ((x14857))
+:extrapreds ((x14858))
+:extrapreds ((x14859))
+:extrapreds ((x14860))
+:extrapreds ((x14861))
+:extrapreds ((x14862))
+:extrapreds ((x14863))
+:extrapreds ((x14864))
+:extrapreds ((x14865))
+:extrapreds ((x14866))
+:extrapreds ((x14867))
+:extrapreds ((x14868))
+:extrapreds ((x14869))
+:extrapreds ((x14870))
+:extrapreds ((x14871))
+:extrapreds ((x14872))
+:extrapreds ((x14873))
+:extrapreds ((x14874))
+:extrapreds ((x14875))
+:extrapreds ((x14876))
+:extrapreds ((x14877))
+:extrapreds ((x14878))
+:extrapreds ((x14879))
+:extrapreds ((x14880))
+:extrapreds ((x14881))
+:extrapreds ((x14882))
+:extrapreds ((x14883))
+:extrapreds ((x14884))
+:extrapreds ((x14885))
+:extrapreds ((x14886))
+:extrapreds ((x14887))
+:extrapreds ((x14888))
+:extrapreds ((x14889))
+:extrapreds ((x14890))
+:extrapreds ((x14891))
+:extrapreds ((x14892))
+:extrapreds ((x14893))
+:extrapreds ((x14894))
+:extrapreds ((x14895))
+:extrapreds ((x14896))
+:extrapreds ((x14897))
+:extrapreds ((x14898))
+:extrapreds ((x14899))
+:extrapreds ((x14900))
+:extrapreds ((x14901))
+:extrapreds ((x14902))
+:extrapreds ((x14903))
+:extrapreds ((x14904))
+:extrapreds ((x14905))
+:extrapreds ((x14906))
+:extrapreds ((x14907))
+:extrapreds ((x14908))
+:extrapreds ((x14909))
+:extrapreds ((x14910))
+:extrapreds ((x14911))
+:extrapreds ((x14912))
+:extrapreds ((x14913))
+:extrapreds ((x14914))
+:extrapreds ((x14915))
+:extrapreds ((x14916))
+:extrapreds ((x14917))
+:extrapreds ((x14918))
+:extrapreds ((x14919))
+:extrapreds ((x14920))
+:extrapreds ((x14921))
+:extrapreds ((x14922))
+:extrapreds ((x14923))
+:extrapreds ((x14924))
+:extrapreds ((x14925))
+:extrapreds ((x14926))
+:extrapreds ((x14927))
+:extrapreds ((x14928))
+:extrapreds ((x14929))
+:extrapreds ((x14930))
+:extrapreds ((x14931))
+:extrapreds ((x14932))
+:extrapreds ((x14933))
+:extrapreds ((x14934))
+:extrapreds ((x14935))
+:extrapreds ((x14936))
+:extrapreds ((x14937))
+:extrapreds ((x14938))
+:extrapreds ((x14939))
+:extrapreds ((x14940))
+:extrapreds ((x14941))
+:extrapreds ((x14942))
+:extrapreds ((x14943))
+:extrapreds ((x14944))
+:extrapreds ((x14945))
+:extrapreds ((x14946))
+:extrapreds ((x14947))
+:extrapreds ((x14948))
+:extrapreds ((x14949))
+:extrapreds ((x14950))
+:extrapreds ((x14951))
+:extrapreds ((x14952))
+:extrapreds ((x14953))
+:extrapreds ((x14954))
+:extrapreds ((x14955))
+:extrapreds ((x14956))
+:extrapreds ((x14957))
+:extrapreds ((x14958))
+:extrapreds ((x14959))
+:extrapreds ((x14960))
+:extrapreds ((x14961))
+:extrapreds ((x14962))
+:extrapreds ((x14963))
+:extrapreds ((x14964))
+:extrapreds ((x14965))
+:extrapreds ((x14966))
+:extrapreds ((x14967))
+:extrapreds ((x14968))
+:extrapreds ((x14969))
+:extrapreds ((x14970))
+:extrapreds ((x14971))
+:extrapreds ((x14972))
+:extrapreds ((x14973))
+:extrapreds ((x14974))
+:extrapreds ((x14975))
+:extrapreds ((x14976))
+:extrapreds ((x14977))
+:extrapreds ((x14978))
+:extrapreds ((x14979))
+:extrapreds ((x14980))
+:extrapreds ((x14981))
+:extrapreds ((x14982))
+:extrapreds ((x14983))
+:extrapreds ((x14984))
+:extrapreds ((x14985))
+:extrapreds ((x14986))
+:extrapreds ((x14987))
+:extrapreds ((x14988))
+:extrapreds ((x14989))
+:extrapreds ((x14990))
+:extrapreds ((x14991))
+:extrapreds ((x14992))
+:extrapreds ((x14993))
+:extrapreds ((x14994))
+:extrapreds ((x14995))
+:extrapreds ((x14996))
+:extrapreds ((x14997))
+:extrapreds ((x14998))
+:extrapreds ((x14999))
+:extrapreds ((x15000))
+:extrapreds ((x15001))
+:extrapreds ((x15002))
+:extrapreds ((x15003))
+:extrapreds ((x15004))
+:extrapreds ((x15005))
+:extrapreds ((x15006))
+:extrapreds ((x15007))
+:extrapreds ((x15008))
+:extrapreds ((x15009))
+:extrapreds ((x15010))
+:extrapreds ((x15011))
+:extrapreds ((x15012))
+:extrapreds ((x15013))
+:extrapreds ((x15014))
+:extrapreds ((x15015))
+:extrapreds ((x15016))
+:extrapreds ((x15017))
+:extrapreds ((x15018))
+:extrapreds ((x15019))
+:extrapreds ((x15020))
+:extrapreds ((x15021))
+:extrapreds ((x15022))
+:extrapreds ((x15023))
+:extrapreds ((x15024))
+:extrapreds ((x15025))
+:extrapreds ((x15026))
+:extrapreds ((x15027))
+:extrapreds ((x15028))
+:extrapreds ((x15029))
+:extrapreds ((x15030))
+:extrapreds ((x15031))
+:extrapreds ((x15032))
+:extrapreds ((x15033))
+:extrapreds ((x15034))
+:extrapreds ((x15035))
+:extrapreds ((x15036))
+:extrapreds ((x15037))
+:extrapreds ((x15038))
+:extrapreds ((x15039))
+:extrapreds ((x15040))
+:extrapreds ((x15041))
+:extrapreds ((x15042))
+:extrapreds ((x15043))
+:extrapreds ((x15044))
+:extrapreds ((x15045))
+:extrapreds ((x15046))
+:extrapreds ((x15047))
+:extrapreds ((x15048))
+:extrapreds ((x15049))
+:extrapreds ((x15050))
+:extrapreds ((x15051))
+:extrapreds ((x15052))
+:extrapreds ((x15053))
+:extrapreds ((x15054))
+:extrapreds ((x15055))
+:extrapreds ((x15056))
+:extrapreds ((x15057))
+:extrapreds ((x15058))
+:extrapreds ((x15059))
+:extrapreds ((x15060))
+:extrapreds ((x15061))
+:extrapreds ((x15062))
+:extrapreds ((x15063))
+:extrapreds ((x15064))
+:extrapreds ((x15065))
+:extrapreds ((x15066))
+:extrapreds ((x15067))
+:extrapreds ((x15068))
+:extrapreds ((x15069))
+:extrapreds ((x15070))
+:extrapreds ((x15071))
+:extrapreds ((x15072))
+:extrapreds ((x15073))
+:extrapreds ((x15074))
+:extrapreds ((x15075))
+:extrapreds ((x15076))
+:extrapreds ((x15077))
+:extrapreds ((x15078))
+:extrapreds ((x15079))
+:extrapreds ((x15080))
+:extrapreds ((x15081))
+:extrapreds ((x15082))
+:extrapreds ((x15083))
+:extrapreds ((x15084))
+:extrapreds ((x15085))
+:extrapreds ((x15086))
+:extrapreds ((x15087))
+:extrapreds ((x15088))
+:extrapreds ((x15089))
+:extrapreds ((x15090))
+:extrapreds ((x15091))
+:extrapreds ((x15092))
+:extrapreds ((x15093))
+:extrapreds ((x15094))
+:extrapreds ((x15095))
+:extrapreds ((x15096))
+:extrapreds ((x15097))
+:extrapreds ((x15098))
+:extrapreds ((x15099))
+:extrapreds ((x15100))
+:extrapreds ((x15101))
+:extrapreds ((x15102))
+:extrapreds ((x15103))
+:extrapreds ((x15104))
+:extrapreds ((x15105))
+:extrapreds ((x15106))
+:extrapreds ((x15107))
+:extrapreds ((x15108))
+:extrapreds ((x15109))
+:extrapreds ((x15110))
+:extrapreds ((x15111))
+:extrapreds ((x15112))
+:extrapreds ((x15113))
+:extrapreds ((x15114))
+:extrapreds ((x15115))
+:extrapreds ((x15116))
+:extrapreds ((x15117))
+:extrapreds ((x15118))
+:extrapreds ((x15119))
+:extrapreds ((x15120))
+:extrapreds ((x15121))
+:extrapreds ((x15122))
+:extrapreds ((x15123))
+:extrapreds ((x15124))
+:extrapreds ((x15125))
+:extrapreds ((x15126))
+:extrapreds ((x15127))
+:extrapreds ((x15128))
+:extrapreds ((x15129))
+:extrapreds ((x15130))
+:extrapreds ((x15131))
+:extrapreds ((x15132))
+:extrapreds ((x15133))
+:extrapreds ((x15134))
+:extrapreds ((x15135))
+:extrapreds ((x15136))
+:extrapreds ((x15137))
+:extrapreds ((x15138))
+:extrapreds ((x15139))
+:extrapreds ((x15140))
+:extrapreds ((x15141))
+:extrapreds ((x15142))
+:extrapreds ((x15143))
+:extrapreds ((x15144))
+:extrapreds ((x15145))
+:extrapreds ((x15146))
+:extrapreds ((x15147))
+:extrapreds ((x15148))
+:extrapreds ((x15149))
+:extrapreds ((x15150))
+:extrapreds ((x15151))
+:extrapreds ((x15152))
+:extrapreds ((x15153))
+:extrapreds ((x15154))
+:extrapreds ((x15155))
+:extrapreds ((x15156))
+:extrapreds ((x15157))
+:extrapreds ((x15158))
+:extrapreds ((x15159))
+:extrapreds ((x15160))
+:extrapreds ((x15161))
+:extrapreds ((x15162))
+:extrapreds ((x15163))
+:extrapreds ((x15164))
+:extrapreds ((x15165))
+:extrapreds ((x15166))
+:extrapreds ((x15167))
+:extrapreds ((x15168))
+:extrapreds ((x15169))
+:extrapreds ((x15170))
+:extrapreds ((x15171))
+:extrapreds ((x15172))
+:extrapreds ((x15173))
+:extrapreds ((x15174))
+:extrapreds ((x15175))
+:extrapreds ((x15176))
+:extrapreds ((x15177))
+:extrapreds ((x15178))
+:extrapreds ((x15179))
+:extrapreds ((x15180))
+:extrapreds ((x15181))
+:extrapreds ((x15182))
+:extrapreds ((x15183))
+:extrapreds ((x15184))
+:extrapreds ((x15185))
+:extrapreds ((x15186))
+:extrapreds ((x15187))
+:extrapreds ((x15188))
+:extrapreds ((x15189))
+:extrapreds ((x15190))
+:extrapreds ((x15191))
+:extrapreds ((x15192))
+:extrapreds ((x15193))
+:extrapreds ((x15194))
+:extrapreds ((x15195))
+:extrapreds ((x15196))
+:extrapreds ((x15197))
+:extrapreds ((x15198))
+:extrapreds ((x15199))
+:extrapreds ((x15200))
+:extrapreds ((x15201))
+:extrapreds ((x15202))
+:extrapreds ((x15203))
+:extrapreds ((x15204))
+:extrapreds ((x15205))
+:extrapreds ((x15206))
+:extrapreds ((x15207))
+:extrapreds ((x15208))
+:extrapreds ((x15209))
+:extrapreds ((x15210))
+:extrapreds ((x15211))
+:extrapreds ((x15212))
+:extrapreds ((x15213))
+:extrapreds ((x15214))
+:extrapreds ((x15215))
+:extrapreds ((x15216))
+:extrapreds ((x15217))
+:extrapreds ((x15218))
+:extrapreds ((x15219))
+:extrapreds ((x15220))
+:extrapreds ((x15221))
+:extrapreds ((x15222))
+:extrapreds ((x15223))
+:extrapreds ((x15224))
+:extrapreds ((x15225))
+:extrapreds ((x15226))
+:extrapreds ((x15227))
+:extrapreds ((x15228))
+:extrapreds ((x15229))
+:extrapreds ((x15230))
+:extrapreds ((x15231))
+:extrapreds ((x15232))
+:extrapreds ((x15233))
+:extrapreds ((x15234))
+:extrapreds ((x15235))
+:extrapreds ((x15236))
+:extrapreds ((x15237))
+:extrapreds ((x15238))
+:extrapreds ((x15239))
+:extrapreds ((x15240))
+:extrapreds ((x15241))
+:extrapreds ((x15242))
+:extrapreds ((x15243))
+:extrapreds ((x15244))
+:extrapreds ((x15245))
+:extrapreds ((x15246))
+:extrapreds ((x15247))
+:extrapreds ((x15248))
+:extrapreds ((x15249))
+:extrapreds ((x15250))
+:extrapreds ((x15251))
+:extrapreds ((x15252))
+:extrapreds ((x15253))
+:extrapreds ((x15254))
+:extrapreds ((x15255))
+:extrapreds ((x15256))
+:extrapreds ((x15257))
+:extrapreds ((x15258))
+:extrapreds ((x15259))
+:extrapreds ((x15260))
+:extrapreds ((x15261))
+:extrapreds ((x15262))
+:extrapreds ((x15263))
+:extrapreds ((x15264))
+:extrapreds ((x15265))
+:extrapreds ((x15266))
+:extrapreds ((x15267))
+:extrapreds ((x15268))
+:extrapreds ((x15269))
+:extrapreds ((x15270))
+:extrapreds ((x15271))
+:extrapreds ((x15272))
+:extrapreds ((x15273))
+:extrapreds ((x15274))
+:extrapreds ((x15275))
+:extrapreds ((x15276))
+:extrapreds ((x15277))
+:extrapreds ((x15278))
+:extrapreds ((x15279))
+:extrapreds ((x15280))
+:extrapreds ((x15281))
+:extrapreds ((x15282))
+:extrapreds ((x15283))
+:extrapreds ((x15284))
+:extrapreds ((x15285))
+:extrapreds ((x15286))
+:extrapreds ((x15287))
+:extrapreds ((x15288))
+:extrapreds ((x15289))
+:extrapreds ((x15290))
+:extrapreds ((x15291))
+:extrapreds ((x15292))
+:extrapreds ((x15293))
+:extrapreds ((x15294))
+:extrapreds ((x15295))
+:extrapreds ((x15296))
+:extrapreds ((x15297))
+:extrapreds ((x15298))
+:extrapreds ((x15299))
+:extrapreds ((x15300))
+:extrapreds ((x15301))
+:extrapreds ((x15302))
+:extrapreds ((x15303))
+:extrapreds ((x15304))
+:extrapreds ((x15305))
+:extrapreds ((x15306))
+:extrapreds ((x15307))
+:extrapreds ((x15308))
+:extrapreds ((x15309))
+:extrapreds ((x15310))
+:extrapreds ((x15311))
+:extrapreds ((x15312))
+:extrapreds ((x15313))
+:extrapreds ((x15314))
+:extrapreds ((x15315))
+:extrapreds ((x15316))
+:extrapreds ((x15317))
+:extrapreds ((x15318))
+:extrapreds ((x15319))
+:extrapreds ((x15320))
+:extrapreds ((x15321))
+:extrapreds ((x15322))
+:extrapreds ((x15323))
+:extrapreds ((x15324))
+:extrapreds ((x15325))
+:extrapreds ((x15326))
+:extrapreds ((x15327))
+:extrapreds ((x15328))
+:extrapreds ((x15329))
+:extrapreds ((x15330))
+:extrapreds ((x15331))
+:extrapreds ((x15332))
+:extrapreds ((x15333))
+:extrapreds ((x15334))
+:extrapreds ((x15335))
+:extrapreds ((x15336))
+:extrapreds ((x15337))
+:extrapreds ((x15338))
+:extrapreds ((x15339))
+:extrapreds ((x15340))
+:extrapreds ((x15341))
+:extrapreds ((x15342))
+:extrapreds ((x15343))
+:extrapreds ((x15344))
+:extrapreds ((x15345))
+:extrapreds ((x15346))
+:extrapreds ((x15347))
+:extrapreds ((x15348))
+:extrapreds ((x15349))
+:extrapreds ((x15350))
+:extrapreds ((x15351))
+:extrapreds ((x15352))
+:extrapreds ((x15353))
+:extrapreds ((x15354))
+:extrapreds ((x15355))
+:extrapreds ((x15356))
+:extrapreds ((x15357))
+:extrapreds ((x15358))
+:extrapreds ((x15359))
+:extrapreds ((x15360))
+:extrapreds ((x15361))
+:extrapreds ((x15362))
+:extrapreds ((x15363))
+:extrapreds ((x15364))
+:extrapreds ((x15365))
+:extrapreds ((x15366))
+:extrapreds ((x15367))
+:extrapreds ((x15368))
+:extrapreds ((x15369))
+:extrapreds ((x15370))
+:extrapreds ((x15371))
+:extrapreds ((x15372))
+:extrapreds ((x15373))
+:extrapreds ((x15374))
+:extrapreds ((x15375))
+:extrapreds ((x15376))
+:extrapreds ((x15377))
+:extrapreds ((x15378))
+:extrapreds ((x15379))
+:extrapreds ((x15380))
+:extrapreds ((x15381))
+:extrapreds ((x15382))
+:extrapreds ((x15383))
+:extrapreds ((x15384))
+:extrapreds ((x15385))
+:extrapreds ((x15386))
+:extrapreds ((x15387))
+:extrapreds ((x15388))
+:extrapreds ((x15389))
+:extrapreds ((x15390))
+:extrapreds ((x15391))
+:extrapreds ((x15392))
+:extrapreds ((x15393))
+:extrapreds ((x15394))
+:extrapreds ((x15395))
+:extrapreds ((x15396))
+:extrapreds ((x15397))
+:extrapreds ((x15398))
+:extrapreds ((x15399))
+:extrapreds ((x15400))
+:extrapreds ((x15401))
+:extrapreds ((x15402))
+:extrapreds ((x15403))
+:extrapreds ((x15404))
+:extrapreds ((x15405))
+:extrapreds ((x15406))
+:extrapreds ((x15407))
+:extrapreds ((x15408))
+:extrapreds ((x15409))
+:extrapreds ((x15410))
+:extrapreds ((x15411))
+:extrapreds ((x15412))
+:extrapreds ((x15413))
+:extrapreds ((x15414))
+:extrapreds ((x15415))
+:extrapreds ((x15416))
+:extrapreds ((x15417))
+:extrapreds ((x15418))
+:extrapreds ((x15419))
+:extrapreds ((x15420))
+:extrapreds ((x15421))
+:extrapreds ((x15422))
+:extrapreds ((x15423))
+:extrapreds ((x15424))
+:extrapreds ((x15425))
+:extrapreds ((x15426))
+:extrapreds ((x15427))
+:extrapreds ((x15428))
+:extrapreds ((x15429))
+:extrapreds ((x15430))
+:extrapreds ((x15431))
+:extrapreds ((x15432))
+:extrapreds ((x15433))
+:extrapreds ((x15434))
+:extrapreds ((x15435))
+:extrapreds ((x15436))
+:extrapreds ((x15437))
+:extrapreds ((x15438))
+:extrapreds ((x15439))
+:extrapreds ((x15440))
+:extrapreds ((x15441))
+:extrapreds ((x15442))
+:extrapreds ((x15443))
+:extrapreds ((x15444))
+:extrapreds ((x15445))
+:extrapreds ((x15446))
+:extrapreds ((x15447))
+:extrapreds ((x15448))
+:extrapreds ((x15449))
+:extrapreds ((x15450))
+:extrapreds ((x15451))
+:extrapreds ((x15452))
+:extrapreds ((x15453))
+:extrapreds ((x15454))
+:extrapreds ((x15455))
+:extrapreds ((x15456))
+:extrapreds ((x15457))
+:extrapreds ((x15458))
+:extrapreds ((x15459))
+:extrapreds ((x15460))
+:extrapreds ((x15461))
+:extrapreds ((x15462))
+:extrapreds ((x15463))
+:extrapreds ((x15464))
+:extrapreds ((x15465))
+:extrapreds ((x15466))
+:extrapreds ((x15467))
+:extrapreds ((x15468))
+:extrapreds ((x15469))
+:extrapreds ((x15470))
+:extrapreds ((x15471))
+:extrapreds ((x15472))
+:extrapreds ((x15473))
+:extrapreds ((x15474))
+:extrapreds ((x15475))
+:extrapreds ((x15476))
+:extrapreds ((x15477))
+:extrapreds ((x15478))
+:extrapreds ((x15479))
+:extrapreds ((x15480))
+:extrapreds ((x15481))
+:extrapreds ((x15482))
+:extrapreds ((x15483))
+:extrapreds ((x15484))
+:extrapreds ((x15485))
+:extrapreds ((x15486))
+:extrapreds ((x15487))
+:extrapreds ((x15488))
+:extrapreds ((x15489))
+:extrapreds ((x15490))
+:extrapreds ((x15491))
+:extrapreds ((x15492))
+:extrapreds ((x15493))
+:extrapreds ((x15494))
+:extrapreds ((x15495))
+:extrapreds ((x15496))
+:extrapreds ((x15497))
+:extrapreds ((x15498))
+:extrapreds ((x15499))
+:extrapreds ((x15500))
+:extrapreds ((x15501))
+:extrapreds ((x15502))
+:extrapreds ((x15503))
+:extrapreds ((x15504))
+:extrapreds ((x15505))
+:extrapreds ((x15506))
+:extrapreds ((x15507))
+:extrapreds ((x15508))
+:extrapreds ((x15509))
+:extrapreds ((x15510))
+:extrapreds ((x15511))
+:extrapreds ((x15512))
+:extrapreds ((x15513))
+:extrapreds ((x15514))
+:extrapreds ((x15515))
+:extrapreds ((x15516))
+:extrapreds ((x15517))
+:extrapreds ((x15518))
+:extrapreds ((x15519))
+:extrapreds ((x15520))
+:extrapreds ((x15521))
+:extrapreds ((x15522))
+:extrapreds ((x15523))
+:extrapreds ((x15524))
+:extrapreds ((x15525))
+:extrapreds ((x15526))
+:extrapreds ((x15527))
+:extrapreds ((x15528))
+:extrapreds ((x15529))
+:extrapreds ((x15530))
+:extrapreds ((x15531))
+:extrapreds ((x15532))
+:extrapreds ((x15533))
+:extrapreds ((x15534))
+:extrapreds ((x15535))
+:extrapreds ((x15536))
+:extrapreds ((x15537))
+:extrapreds ((x15538))
+:extrapreds ((x15539))
+:extrapreds ((x15540))
+:extrapreds ((x15541))
+:extrapreds ((x15542))
+:extrapreds ((x15543))
+:extrapreds ((x15544))
+:extrapreds ((x15545))
+:extrapreds ((x15546))
+:extrapreds ((x15547))
+:extrapreds ((x15548))
+:extrapreds ((x15549))
+:extrapreds ((x15550))
+:extrapreds ((x15551))
+:extrapreds ((x15552))
+:extrapreds ((x15553))
+:extrapreds ((x15554))
+:extrapreds ((x15555))
+:extrapreds ((x15556))
+:extrapreds ((x15557))
+:extrapreds ((x15558))
+:extrapreds ((x15559))
+:extrapreds ((x15560))
+:extrapreds ((x15561))
+:extrapreds ((x15562))
+:extrapreds ((x15563))
+:extrapreds ((x15564))
+:extrapreds ((x15565))
+:extrapreds ((x15566))
+:extrapreds ((x15567))
+:extrapreds ((x15568))
+:extrapreds ((x15569))
+:extrapreds ((x15570))
+:extrapreds ((x15571))
+:extrapreds ((x15572))
+:extrapreds ((x15573))
+:extrapreds ((x15574))
+:extrapreds ((x15575))
+:extrapreds ((x15576))
+:extrapreds ((x15577))
+:extrapreds ((x15578))
+:extrapreds ((x15579))
+:extrapreds ((x15580))
+:extrapreds ((x15581))
+:extrapreds ((x15582))
+:extrapreds ((x15583))
+:extrapreds ((x15584))
+:extrapreds ((x15585))
+:extrapreds ((x15586))
+:extrapreds ((x15587))
+:extrapreds ((x15588))
+:extrapreds ((x15589))
+:extrapreds ((x15590))
+:extrapreds ((x15591))
+:extrapreds ((x15592))
+:extrapreds ((x15593))
+:extrapreds ((x15594))
+:extrapreds ((x15595))
+:extrapreds ((x15596))
+:extrapreds ((x15597))
+:extrapreds ((x15598))
+:extrapreds ((x15599))
+:extrapreds ((x15600))
+:extrapreds ((x15601))
+:extrapreds ((x15602))
+:extrapreds ((x15603))
+:extrapreds ((x15604))
+:extrapreds ((x15605))
+:extrapreds ((x15606))
+:extrapreds ((x15607))
+:extrapreds ((x15608))
+:extrapreds ((x15609))
+:extrapreds ((x15610))
+:extrapreds ((x15611))
+:extrapreds ((x15612))
+:extrapreds ((x15613))
+:extrapreds ((x15614))
+:extrapreds ((x15615))
+:extrapreds ((x15616))
+:extrapreds ((x15617))
+:extrapreds ((x15618))
+:extrapreds ((x15619))
+:extrapreds ((x15620))
+:extrapreds ((x15621))
+:extrapreds ((x15622))
+:extrapreds ((x15623))
+:extrapreds ((x15624))
+:extrapreds ((x15625))
+:extrapreds ((x15626))
+:extrapreds ((x15627))
+:extrapreds ((x15628))
+:extrapreds ((x15629))
+:extrapreds ((x15630))
+:extrapreds ((x15631))
+:extrapreds ((x15632))
+:extrapreds ((x15633))
+:extrapreds ((x15634))
+:extrapreds ((x15635))
+:extrapreds ((x15636))
+:extrapreds ((x15637))
+:extrapreds ((x15638))
+:extrapreds ((x15639))
+:extrapreds ((x15640))
+:extrapreds ((x15641))
+:extrapreds ((x15642))
+:extrapreds ((x15643))
+:extrapreds ((x15644))
+:extrapreds ((x15645))
+:extrapreds ((x15646))
+:extrapreds ((x15647))
+:extrapreds ((x15648))
+:extrapreds ((x15649))
+:extrapreds ((x15650))
+:extrapreds ((x15651))
+:extrapreds ((x15652))
+:extrapreds ((x15653))
+:extrapreds ((x15654))
+:extrapreds ((x15655))
+:extrapreds ((x15656))
+:extrapreds ((x15657))
+:extrapreds ((x15658))
+:extrapreds ((x15659))
+:extrapreds ((x15660))
+:extrapreds ((x15661))
+:extrapreds ((x15662))
+:extrapreds ((x15663))
+:extrapreds ((x15664))
+:extrapreds ((x15665))
+:extrapreds ((x15666))
+:extrapreds ((x15667))
+:extrapreds ((x15668))
+:extrapreds ((x15669))
+:extrapreds ((x15670))
+:extrapreds ((x15671))
+:extrapreds ((x15672))
+:extrapreds ((x15673))
+:extrapreds ((x15674))
+:extrapreds ((x15675))
+:extrapreds ((x15676))
+:extrapreds ((x15677))
+:extrapreds ((x15678))
+:extrapreds ((x15679))
+:extrapreds ((x15680))
+:extrapreds ((x15681))
+:extrapreds ((x15682))
+:extrapreds ((x15683))
+:extrapreds ((x15684))
+:extrapreds ((x15685))
+:extrapreds ((x15686))
+:extrapreds ((x15687))
+:extrapreds ((x15688))
+:extrapreds ((x15689))
+:extrapreds ((x15690))
+:extrapreds ((x15691))
+:extrapreds ((x15692))
+:extrapreds ((x15693))
+:extrapreds ((x15694))
+:extrapreds ((x15695))
+:extrapreds ((x15696))
+:extrapreds ((x15697))
+:extrapreds ((x15698))
+:extrapreds ((x15699))
+:extrapreds ((x15700))
+:extrapreds ((x15701))
+:extrapreds ((x15702))
+:extrapreds ((x15703))
+:extrapreds ((x15704))
+:extrapreds ((x15705))
+:extrapreds ((x15706))
+:extrapreds ((x15707))
+:extrapreds ((x15708))
+:extrapreds ((x15709))
+:extrapreds ((x15710))
+:extrapreds ((x15711))
+:extrapreds ((x15712))
+:extrapreds ((x15713))
+:extrapreds ((x15714))
+:extrapreds ((x15715))
+:extrapreds ((x15716))
+:extrapreds ((x15717))
+:extrapreds ((x15718))
+:extrapreds ((x15719))
+:extrapreds ((x15720))
+:extrapreds ((x15721))
+:extrapreds ((x15722))
+:extrapreds ((x15723))
+:extrapreds ((x15724))
+:extrapreds ((x15725))
+:extrapreds ((x15726))
+:extrapreds ((x15727))
+:extrapreds ((x15728))
+:extrapreds ((x15729))
+:extrapreds ((x15730))
+:extrapreds ((x15731))
+:extrapreds ((x15732))
+:extrapreds ((x15733))
+:extrapreds ((x15734))
+:extrapreds ((x15735))
+:extrapreds ((x15736))
+:extrapreds ((x15737))
+:extrapreds ((x15738))
+:extrapreds ((x15739))
+:extrapreds ((x15740))
+:extrapreds ((x15741))
+:extrapreds ((x15742))
+:extrapreds ((x15743))
+:extrapreds ((x15744))
+:extrapreds ((x15745))
+:extrapreds ((x15746))
+:extrapreds ((x15747))
+:extrapreds ((x15748))
+:extrapreds ((x15749))
+:extrapreds ((x15750))
+:extrapreds ((x15751))
+:extrapreds ((x15752))
+:extrapreds ((x15753))
+:extrapreds ((x15754))
+:extrapreds ((x15755))
+:extrapreds ((x15756))
+:extrapreds ((x15757))
+:extrapreds ((x15758))
+:extrapreds ((x15759))
+:extrapreds ((x15760))
+:extrapreds ((x15761))
+:extrapreds ((x15762))
+:extrapreds ((x15763))
+:extrapreds ((x15764))
+:extrapreds ((x15765))
+:extrapreds ((x15766))
+:extrapreds ((x15767))
+:extrapreds ((x15768))
+:extrapreds ((x15769))
+:extrapreds ((x15770))
+:extrapreds ((x15771))
+:extrapreds ((x15772))
+:extrapreds ((x15773))
+:extrapreds ((x15774))
+:extrapreds ((x15775))
+:extrapreds ((x15776))
+:extrapreds ((x15777))
+:extrapreds ((x15778))
+:extrapreds ((x15779))
+:extrapreds ((x15780))
+:extrapreds ((x15781))
+:extrapreds ((x15782))
+:extrapreds ((x15783))
+:extrapreds ((x15784))
+:extrapreds ((x15785))
+:extrapreds ((x15786))
+:extrapreds ((x15787))
+:extrapreds ((x15788))
+:extrapreds ((x15789))
+:extrapreds ((x15790))
+:extrapreds ((x15791))
+:extrapreds ((x15792))
+:extrapreds ((x15793))
+:extrapreds ((x15794))
+:extrapreds ((x15795))
+:extrapreds ((x15796))
+:extrapreds ((x15797))
+:extrapreds ((x15798))
+:extrapreds ((x15799))
+:extrapreds ((x15800))
+:extrapreds ((x15801))
+:extrapreds ((x15802))
+:extrapreds ((x15803))
+:extrapreds ((x15804))
+:extrapreds ((x15805))
+:extrapreds ((x15806))
+:extrapreds ((x15807))
+:extrapreds ((x15808))
+:extrapreds ((x15809))
+:extrapreds ((x15810))
+:extrapreds ((x15811))
+:extrapreds ((x15812))
+:extrapreds ((x15813))
+:extrapreds ((x15814))
+:extrapreds ((x15815))
+:extrapreds ((x15816))
+:extrapreds ((x15817))
+:extrapreds ((x15818))
+:extrapreds ((x15819))
+:extrapreds ((x15820))
+:extrapreds ((x15821))
+:extrapreds ((x15822))
+:extrapreds ((x15823))
+:extrapreds ((x15824))
+:extrapreds ((x15825))
+:extrapreds ((x15826))
+:extrapreds ((x15827))
+:extrapreds ((x15828))
+:extrapreds ((x15829))
+:extrapreds ((x15830))
+:extrapreds ((x15831))
+:extrapreds ((x15832))
+:extrapreds ((x15833))
+:extrapreds ((x15834))
+:extrapreds ((x15835))
+:extrapreds ((x15836))
+:extrapreds ((x15837))
+:extrapreds ((x15838))
+:extrapreds ((x15839))
+:extrapreds ((x15840))
+:extrapreds ((x15841))
+:extrapreds ((x15842))
+:extrapreds ((x15843))
+:extrapreds ((x15844))
+:extrapreds ((x15845))
+:extrapreds ((x15846))
+:extrapreds ((x15847))
+:extrapreds ((x15848))
+:extrapreds ((x15849))
+:extrapreds ((x15850))
+:extrapreds ((x15851))
+:extrapreds ((x15852))
+:extrapreds ((x15853))
+:extrapreds ((x15854))
+:extrapreds ((x15855))
+:extrapreds ((x15856))
+:extrapreds ((x15857))
+:extrapreds ((x15858))
+:extrapreds ((x15859))
+:extrapreds ((x15860))
+:extrapreds ((x15861))
+:extrapreds ((x15862))
+:extrapreds ((x15863))
+:extrapreds ((x15864))
+:extrapreds ((x15865))
+:extrapreds ((x15866))
+:extrapreds ((x15867))
+:extrapreds ((x15868))
+:extrapreds ((x15869))
+:extrapreds ((x15870))
+:extrapreds ((x15871))
+:extrapreds ((x15872))
+:extrapreds ((x15873))
+:extrapreds ((x15874))
+:extrapreds ((x15875))
+:extrapreds ((x15876))
+:extrapreds ((x15877))
+:extrapreds ((x15878))
+:extrapreds ((x15879))
+:extrapreds ((x15880))
+:extrapreds ((x15881))
+:extrapreds ((x15882))
+:extrapreds ((x15883))
+:extrapreds ((x15884))
+:extrapreds ((x15885))
+:extrapreds ((x15886))
+:extrapreds ((x15887))
+:extrapreds ((x15888))
+:extrapreds ((x15889))
+:extrapreds ((x15890))
+:extrapreds ((x15891))
+:extrapreds ((x15892))
+:extrapreds ((x15893))
+:extrapreds ((x15894))
+:extrapreds ((x15895))
+:extrapreds ((x15896))
+:extrapreds ((x15897))
+:extrapreds ((x15898))
+:extrapreds ((x15899))
+:extrapreds ((x15900))
+:extrapreds ((x15901))
+:extrapreds ((x15902))
+:extrapreds ((x15903))
+:extrapreds ((x15904))
+:extrapreds ((x15905))
+:extrapreds ((x15906))
+:extrapreds ((x15907))
+:extrapreds ((x15908))
+:extrapreds ((x15909))
+:extrapreds ((x15910))
+:extrapreds ((x15911))
+:extrapreds ((x15912))
+:extrapreds ((x15913))
+:extrapreds ((x15914))
+:extrapreds ((x15915))
+:extrapreds ((x15916))
+:extrapreds ((x15917))
+:extrapreds ((x15918))
+:extrapreds ((x15919))
+:extrapreds ((x15920))
+:extrapreds ((x15921))
+:extrapreds ((x15922))
+:extrapreds ((x15923))
+:extrapreds ((x15924))
+:extrapreds ((x15925))
+:extrapreds ((x15926))
+:extrapreds ((x15927))
+:extrapreds ((x15928))
+:extrapreds ((x15929))
+:extrapreds ((x15930))
+:extrapreds ((x15931))
+:extrapreds ((x15932))
+:extrapreds ((x15933))
+:extrapreds ((x15934))
+:extrapreds ((x15935))
+:extrapreds ((x15936))
+:extrapreds ((x15937))
+:extrapreds ((x15938))
+:extrapreds ((x15939))
+:extrapreds ((x15940))
+:extrapreds ((x15941))
+:extrapreds ((x15942))
+:extrapreds ((x15943))
+:extrapreds ((x15944))
+:extrapreds ((x15945))
+:extrapreds ((x15946))
+:extrapreds ((x15947))
+:extrapreds ((x15948))
+:extrapreds ((x15949))
+:extrapreds ((x15950))
+:extrapreds ((x15951))
+:extrapreds ((x15952))
+:extrapreds ((x15953))
+:extrapreds ((x15954))
+:extrapreds ((x15955))
+:extrapreds ((x15956))
+:extrapreds ((x15957))
+:extrapreds ((x15958))
+:extrapreds ((x15959))
+:extrapreds ((x15960))
+:extrapreds ((x15961))
+:extrapreds ((x15962))
+:extrapreds ((x15963))
+:extrapreds ((x15964))
+:extrapreds ((x15965))
+:extrapreds ((x15966))
+:extrapreds ((x15967))
+:extrapreds ((x15968))
+:extrapreds ((x15969))
+:extrapreds ((x15970))
+:extrapreds ((x15971))
+:extrapreds ((x15972))
+:extrapreds ((x15973))
+:extrapreds ((x15974))
+:extrapreds ((x15975))
+:extrapreds ((x15976))
+:extrapreds ((x15977))
+:extrapreds ((x15978))
+:extrapreds ((x15979))
+:extrapreds ((x15980))
+:extrapreds ((x15981))
+:extrapreds ((x15982))
+:extrapreds ((x15983))
+:extrapreds ((x15984))
+:extrapreds ((x15985))
+:extrapreds ((x15986))
+:extrapreds ((x15987))
+:extrapreds ((x15988))
+:extrapreds ((x15989))
+:extrapreds ((x15990))
+:extrapreds ((x15991))
+:extrapreds ((x15992))
+:extrapreds ((x15993))
+:extrapreds ((x15994))
+:extrapreds ((x15995))
+:extrapreds ((x15996))
+:extrapreds ((x15997))
+:extrapreds ((x15998))
+:extrapreds ((x15999))
+:extrapreds ((x16000))
+:extrapreds ((x16001))
+:extrapreds ((x16002))
+:extrapreds ((x16003))
+:extrapreds ((x16004))
+:extrapreds ((x16005))
+:extrapreds ((x16006))
+:extrapreds ((x16007))
+:extrapreds ((x16008))
+:extrapreds ((x16009))
+:extrapreds ((x16010))
+:extrapreds ((x16011))
+:extrapreds ((x16012))
+:extrapreds ((x16013))
+:extrapreds ((x16014))
+:extrapreds ((x16015))
+:extrapreds ((x16016))
+:extrapreds ((x16017))
+:extrapreds ((x16018))
+:extrapreds ((x16019))
+:extrapreds ((x16020))
+:extrapreds ((x16021))
+:extrapreds ((x16022))
+:extrapreds ((x16023))
+:extrapreds ((x16024))
+:extrapreds ((x16025))
+:extrapreds ((x16026))
+:extrapreds ((x16027))
+:extrapreds ((x16028))
+:extrapreds ((x16029))
+:extrapreds ((x16030))
+:extrapreds ((x16031))
+:extrapreds ((x16032))
+:extrapreds ((x16033))
+:extrapreds ((x16034))
+:extrapreds ((x16035))
+:extrapreds ((x16036))
+:extrapreds ((x16037))
+:extrapreds ((x16038))
+:extrapreds ((x16039))
+:extrapreds ((x16040))
+:extrapreds ((x16041))
+:extrapreds ((x16042))
+:extrapreds ((x16043))
+:extrapreds ((x16044))
+:extrapreds ((x16045))
+:extrapreds ((x16046))
+:extrapreds ((x16047))
+:extrapreds ((x16048))
+:extrapreds ((x16049))
+:extrapreds ((x16050))
+:extrapreds ((x16051))
+:extrapreds ((x16052))
+:extrapreds ((x16053))
+:extrapreds ((x16054))
+:extrapreds ((x16055))
+:extrapreds ((x16056))
+:extrapreds ((x16057))
+:extrapreds ((x16058))
+:extrapreds ((x16059))
+:extrapreds ((x16060))
+:extrapreds ((x16061))
+:extrapreds ((x16062))
+:extrapreds ((x16063))
+:extrapreds ((x16064))
+:extrapreds ((x16065))
+:extrapreds ((x16066))
+:extrapreds ((x16067))
+:extrapreds ((x16068))
+:extrapreds ((x16069))
+:extrapreds ((x16070))
+:extrapreds ((x16071))
+:extrapreds ((x16072))
+:extrapreds ((x16073))
+:extrapreds ((x16074))
+:extrapreds ((x16075))
+:extrapreds ((x16076))
+:extrapreds ((x16077))
+:extrapreds ((x16078))
+:extrapreds ((x16079))
+:extrapreds ((x16080))
+:extrapreds ((x16081))
+:extrapreds ((x16082))
+:extrapreds ((x16083))
+:extrapreds ((x16084))
+:extrapreds ((x16085))
+:extrapreds ((x16086))
+:extrapreds ((x16087))
+:extrapreds ((x16088))
+:extrapreds ((x16089))
+:extrapreds ((x16090))
+:extrapreds ((x16091))
+:extrapreds ((x16092))
+:extrapreds ((x16093))
+:extrapreds ((x16094))
+:extrapreds ((x16095))
+:extrapreds ((x16096))
+:extrapreds ((x16097))
+:extrapreds ((x16098))
+:extrapreds ((x16099))
+:extrapreds ((x16100))
+:extrapreds ((x16101))
+:extrapreds ((x16102))
+:extrapreds ((x16103))
+:extrapreds ((x16104))
+:extrapreds ((x16105))
+:extrapreds ((x16106))
+:extrapreds ((x16107))
+:extrapreds ((x16108))
+:extrapreds ((x16109))
+:extrapreds ((x16110))
+:extrapreds ((x16111))
+:extrapreds ((x16112))
+:extrapreds ((x16113))
+:extrapreds ((x16114))
+:extrapreds ((x16115))
+:extrapreds ((x16116))
+:extrapreds ((x16117))
+:extrapreds ((x16118))
+:extrapreds ((x16119))
+:extrapreds ((x16120))
+:extrapreds ((x16121))
+:extrapreds ((x16122))
+:extrapreds ((x16123))
+:extrapreds ((x16124))
+:extrapreds ((x16125))
+:extrapreds ((x16126))
+:extrapreds ((x16127))
+:extrapreds ((x16128))
+:extrapreds ((x16129))
+:extrapreds ((x16130))
+:extrapreds ((x16131))
+:extrapreds ((x16132))
+:extrapreds ((x16133))
+:extrapreds ((x16134))
+:extrapreds ((x16135))
+:extrapreds ((x16136))
+:extrapreds ((x16137))
+:extrapreds ((x16138))
+:extrapreds ((x16139))
+:extrapreds ((x16140))
+:extrapreds ((x16141))
+:extrapreds ((x16142))
+:extrapreds ((x16143))
+:extrapreds ((x16144))
+:extrapreds ((x16145))
+:extrapreds ((x16146))
+:extrapreds ((x16147))
+:extrapreds ((x16148))
+:extrapreds ((x16149))
+:extrapreds ((x16150))
+:extrapreds ((x16151))
+:extrapreds ((x16152))
+:extrapreds ((x16153))
+:extrapreds ((x16154))
+:extrapreds ((x16155))
+:extrapreds ((x16156))
+:extrapreds ((x16157))
+:extrapreds ((x16158))
+:extrapreds ((x16159))
+:extrapreds ((x16160))
+:extrapreds ((x16161))
+:extrapreds ((x16162))
+:extrapreds ((x16163))
+:extrapreds ((x16164))
+:extrapreds ((x16165))
+:extrapreds ((x16166))
+:extrapreds ((x16167))
+:extrapreds ((x16168))
+:extrapreds ((x16169))
+:extrapreds ((x16170))
+:extrapreds ((x16171))
+:extrapreds ((x16172))
+:extrapreds ((x16173))
+:extrapreds ((x16174))
+:extrapreds ((x16175))
+:extrapreds ((x16176))
+:extrapreds ((x16177))
+:extrapreds ((x16178))
+:extrapreds ((x16179))
+:extrapreds ((x16180))
+:extrapreds ((x16181))
+:extrapreds ((x16182))
+:extrapreds ((x16183))
+:extrapreds ((x16184))
+:extrapreds ((x16185))
+:extrapreds ((x16186))
+:extrapreds ((x16187))
+:extrapreds ((x16188))
+:extrapreds ((x16189))
+:extrapreds ((x16190))
+:extrapreds ((x16191))
+:extrapreds ((x16192))
+:extrapreds ((x16193))
+:extrapreds ((x16194))
+:extrapreds ((x16195))
+:extrapreds ((x16196))
+:extrapreds ((x16197))
+:extrapreds ((x16198))
+:extrapreds ((x16199))
+:extrapreds ((x16200))
+:extrapreds ((x16201))
+:extrapreds ((x16202))
+:extrapreds ((x16203))
+:extrapreds ((x16204))
+:extrapreds ((x16205))
+:extrapreds ((x16206))
+:extrapreds ((x16207))
+:extrapreds ((x16208))
+:extrapreds ((x16209))
+:extrapreds ((x16210))
+:extrapreds ((x16211))
+:extrapreds ((x16212))
+:extrapreds ((x16213))
+:extrapreds ((x16214))
+:extrapreds ((x16215))
+:extrapreds ((x16216))
+:extrapreds ((x16217))
+:extrapreds ((x16218))
+:extrapreds ((x16219))
+:extrapreds ((x16220))
+:extrapreds ((x16221))
+:extrapreds ((x16222))
+:extrapreds ((x16223))
+:extrapreds ((x16224))
+:extrapreds ((x16225))
+:extrapreds ((x16226))
+:extrapreds ((x16227))
+:extrapreds ((x16228))
+:extrapreds ((x16229))
+:extrapreds ((x16230))
+:extrapreds ((x16231))
+:extrapreds ((x16232))
+:extrapreds ((x16233))
+:extrapreds ((x16234))
+:extrapreds ((x16235))
+:extrapreds ((x16236))
+:extrapreds ((x16237))
+:extrapreds ((x16238))
+:extrapreds ((x16239))
+:extrapreds ((x16240))
+:extrapreds ((x16241))
+:extrapreds ((x16242))
+:extrapreds ((x16243))
+:extrapreds ((x16244))
+:extrapreds ((x16245))
+:extrapreds ((x16246))
+:extrapreds ((x16247))
+:extrapreds ((x16248))
+:extrapreds ((x16249))
+:extrapreds ((x16250))
+:extrapreds ((x16251))
+:extrapreds ((x16252))
+:extrapreds ((x16253))
+:extrapreds ((x16254))
+:extrapreds ((x16255))
+:extrapreds ((x16256))
+:extrapreds ((x16257))
+:extrapreds ((x16258))
+:extrapreds ((x16259))
+:extrapreds ((x16260))
+:extrapreds ((x16261))
+:extrapreds ((x16262))
+:extrapreds ((x16263))
+:extrapreds ((x16264))
+:extrapreds ((x16265))
+:extrapreds ((x16266))
+:extrapreds ((x16267))
+:extrapreds ((x16268))
+:extrapreds ((x16269))
+:extrapreds ((x16270))
+:extrapreds ((x16271))
+:extrapreds ((x16272))
+:extrapreds ((x16273))
+:extrapreds ((x16274))
+:extrapreds ((x16275))
+:extrapreds ((x16276))
+:extrapreds ((x16277))
+:extrapreds ((x16278))
+:extrapreds ((x16279))
+:extrapreds ((x16280))
+:extrapreds ((x16281))
+:extrapreds ((x16282))
+:extrapreds ((x16283))
+:extrapreds ((x16284))
+:extrapreds ((x16285))
+:extrapreds ((x16286))
+:extrapreds ((x16287))
+:extrapreds ((x16288))
+:extrapreds ((x16289))
+:extrapreds ((x16290))
+:extrapreds ((x16291))
+:extrapreds ((x16292))
+:extrapreds ((x16293))
+:extrapreds ((x16294))
+:extrapreds ((x16295))
+:extrapreds ((x16296))
+:extrapreds ((x16297))
+:extrapreds ((x16298))
+:extrapreds ((x16299))
+:extrapreds ((x16300))
+:extrapreds ((x16301))
+:extrapreds ((x16302))
+:extrapreds ((x16303))
+:extrapreds ((x16304))
+:extrapreds ((x16305))
+:extrapreds ((x16306))
+:extrapreds ((x16307))
+:extrapreds ((x16308))
+:extrapreds ((x16309))
+:extrapreds ((x16310))
+:extrapreds ((x16311))
+:extrapreds ((x16312))
+:extrapreds ((x16313))
+:extrapreds ((x16314))
+:extrapreds ((x16315))
+:extrapreds ((x16316))
+:extrapreds ((x16317))
+:extrapreds ((x16318))
+:extrapreds ((x16319))
+:extrapreds ((x16320))
+:extrapreds ((x16321))
+:extrapreds ((x16322))
+:extrapreds ((x16323))
+:extrapreds ((x16324))
+:extrapreds ((x16325))
+:extrapreds ((x16326))
+:extrapreds ((x16327))
+:extrapreds ((x16328))
+:extrapreds ((x16329))
+:extrapreds ((x16330))
+:extrapreds ((x16331))
+:extrapreds ((x16332))
+:extrapreds ((x16333))
+:extrapreds ((x16334))
+:extrapreds ((x16335))
+:extrapreds ((x16336))
+:extrapreds ((x16337))
+:extrapreds ((x16338))
+:extrapreds ((x16339))
+:extrapreds ((x16340))
+:extrapreds ((x16341))
+:extrapreds ((x16342))
+:extrapreds ((x16343))
+:extrapreds ((x16344))
+:extrapreds ((x16345))
+:extrapreds ((x16346))
+:extrapreds ((x16347))
+:extrapreds ((x16348))
+:extrapreds ((x16349))
+:extrapreds ((x16350))
+:extrapreds ((x16351))
+:extrapreds ((x16352))
+:extrapreds ((x16353))
+:extrapreds ((x16354))
+:extrapreds ((x16355))
+:extrapreds ((x16356))
+:extrapreds ((x16357))
+:extrapreds ((x16358))
+:extrapreds ((x16359))
+:extrapreds ((x16360))
+:extrapreds ((x16361))
+:extrapreds ((x16362))
+:extrapreds ((x16363))
+:extrapreds ((x16364))
+:extrapreds ((x16365))
+:extrapreds ((x16366))
+:extrapreds ((x16367))
+:extrapreds ((x16368))
+:extrapreds ((x16369))
+:extrapreds ((x16370))
+:extrapreds ((x16371))
+:extrapreds ((x16372))
+:extrapreds ((x16373))
+:extrapreds ((x16374))
+:extrapreds ((x16375))
+:extrapreds ((x16376))
+:extrapreds ((x16377))
+:extrapreds ((x16378))
+:extrapreds ((x16379))
+:extrapreds ((x16380))
+:extrapreds ((x16381))
+:extrapreds ((x16382))
+:extrapreds ((x16383))
+:extrapreds ((x16384))
+:extrapreds ((x16385))
+:extrapreds ((x16386))
+:extrapreds ((x16387))
+:extrapreds ((x16388))
+:extrapreds ((x16389))
+:extrapreds ((x16390))
+:extrapreds ((x16391))
+:extrapreds ((x16392))
+:extrapreds ((x16393))
+:extrapreds ((x16394))
+:extrapreds ((x16395))
+:extrapreds ((x16396))
+:extrapreds ((x16397))
+:extrapreds ((x16398))
+:extrapreds ((x16399))
+:extrapreds ((x16400))
+:extrapreds ((x16401))
+:extrapreds ((x16402))
+:extrapreds ((x16403))
+:extrapreds ((x16404))
+:extrapreds ((x16405))
+:extrapreds ((x16406))
+:extrapreds ((x16407))
+:extrapreds ((x16408))
+:extrapreds ((x16409))
+:extrapreds ((x16410))
+:extrapreds ((x16411))
+:extrapreds ((x16412))
+:extrapreds ((x16413))
+:extrapreds ((x16414))
+:extrapreds ((x16415))
+:extrapreds ((x16416))
+:extrapreds ((x16417))
+:extrapreds ((x16418))
+:extrapreds ((x16419))
+:extrapreds ((x16420))
+:extrapreds ((x16421))
+:extrapreds ((x16422))
+:extrapreds ((x16423))
+:extrapreds ((x16424))
+:extrapreds ((x16425))
+:extrapreds ((x16426))
+:extrapreds ((x16427))
+:extrapreds ((x16428))
+:extrapreds ((x16429))
+:extrapreds ((x16430))
+:extrapreds ((x16431))
+:extrapreds ((x16432))
+:extrapreds ((x16433))
+:extrapreds ((x16434))
+:extrapreds ((x16435))
+:extrapreds ((x16436))
+:extrapreds ((x16437))
+:extrapreds ((x16438))
+:extrapreds ((x16439))
+:extrapreds ((x16440))
+:extrapreds ((x16441))
+:extrapreds ((x16442))
+:extrapreds ((x16443))
+:extrapreds ((x16444))
+:extrapreds ((x16445))
+:extrapreds ((x16446))
+:extrapreds ((x16447))
+:extrapreds ((x16448))
+:extrapreds ((x16449))
+:extrapreds ((x16450))
+:extrapreds ((x16451))
+:extrapreds ((x16452))
+:extrapreds ((x16453))
+:extrapreds ((x16454))
+:extrapreds ((x16455))
+:extrapreds ((x16456))
+:extrapreds ((x16457))
+:extrapreds ((x16458))
+:extrapreds ((x16459))
+:extrapreds ((x16460))
+:extrapreds ((x16461))
+:extrapreds ((x16462))
+:extrapreds ((x16463))
+:extrapreds ((x16464))
+:extrapreds ((x16465))
+:extrapreds ((x16466))
+:extrapreds ((x16467))
+:extrapreds ((x16468))
+:extrapreds ((x16469))
+:extrapreds ((x16470))
+:extrapreds ((x16471))
+:extrapreds ((x16472))
+:extrapreds ((x16473))
+:extrapreds ((x16474))
+:extrapreds ((x16475))
+:extrapreds ((x16476))
+:extrapreds ((x16477))
+:extrapreds ((x16478))
+:extrapreds ((x16479))
+:extrapreds ((x16480))
+:extrapreds ((x16481))
+:extrapreds ((x16482))
+:extrapreds ((x16483))
+:extrapreds ((x16484))
+:extrapreds ((x16485))
+:extrapreds ((x16486))
+:extrapreds ((x16487))
+:extrapreds ((x16488))
+:extrapreds ((x16489))
+:extrapreds ((x16490))
+:extrapreds ((x16491))
+:extrapreds ((x16492))
+:extrapreds ((x16493))
+:extrapreds ((x16494))
+:extrapreds ((x16495))
+:extrapreds ((x16496))
+:extrapreds ((x16497))
+:extrapreds ((x16498))
+:extrapreds ((x16499))
+:extrapreds ((x16500))
+:extrapreds ((x16501))
+:extrapreds ((x16502))
+:extrapreds ((x16503))
+:extrapreds ((x16504))
+:extrapreds ((x16505))
+:extrapreds ((x16506))
+:extrapreds ((x16507))
+:extrapreds ((x16508))
+:extrapreds ((x16509))
+:extrapreds ((x16510))
+:extrapreds ((x16511))
+:extrapreds ((x16512))
+:extrapreds ((x16513))
+:extrapreds ((x16514))
+:extrapreds ((x16515))
+:extrapreds ((x16516))
+:extrapreds ((x16517))
+:extrapreds ((x16518))
+:extrapreds ((x16519))
+:extrapreds ((x16520))
+:extrapreds ((x16521))
+:extrapreds ((x16522))
+:extrapreds ((x16523))
+:extrapreds ((x16524))
+:extrapreds ((x16525))
+:extrapreds ((x16526))
+:extrapreds ((x16527))
+:extrapreds ((x16528))
+:extrapreds ((x16529))
+:extrapreds ((x16530))
+:extrapreds ((x16531))
+:extrapreds ((x16532))
+:extrapreds ((x16533))
+:extrapreds ((x16534))
+:extrapreds ((x16535))
+:extrapreds ((x16536))
+:extrapreds ((x16537))
+:extrapreds ((x16538))
+:extrapreds ((x16539))
+:extrapreds ((x16540))
+:extrapreds ((x16541))
+:extrapreds ((x16542))
+:extrapreds ((x16543))
+:extrapreds ((x16544))
+:extrapreds ((x16545))
+:extrapreds ((x16546))
+:extrapreds ((x16547))
+:extrapreds ((x16548))
+:extrapreds ((x16549))
+:extrapreds ((x16550))
+:extrapreds ((x16551))
+:extrapreds ((x16552))
+:extrapreds ((x16553))
+:extrapreds ((x16554))
+:extrapreds ((x16555))
+:extrapreds ((x16556))
+:extrapreds ((x16557))
+:extrapreds ((x16558))
+:extrapreds ((x16559))
+:extrapreds ((x16560))
+:extrapreds ((x16561))
+:extrapreds ((x16562))
+:extrapreds ((x16563))
+:extrapreds ((x16564))
+:extrapreds ((x16565))
+:extrapreds ((x16566))
+:extrapreds ((x16567))
+:extrapreds ((x16568))
+:extrapreds ((x16569))
+:extrapreds ((x16570))
+:extrapreds ((x16571))
+:extrapreds ((x16572))
+:extrapreds ((x16573))
+:extrapreds ((x16574))
+:extrapreds ((x16575))
+:extrapreds ((x16576))
+:extrapreds ((x16577))
+:extrapreds ((x16578))
+:extrapreds ((x16579))
+:extrapreds ((x16580))
+:extrapreds ((x16581))
+:extrapreds ((x16582))
+:extrapreds ((x16583))
+:extrapreds ((x16584))
+:extrapreds ((x16585))
+:extrapreds ((x16586))
+:extrapreds ((x16587))
+:extrapreds ((x16588))
+:extrapreds ((x16589))
+:extrapreds ((x16590))
+:extrapreds ((x16591))
+:extrapreds ((x16592))
+:extrapreds ((x16593))
+:extrapreds ((x16594))
+:extrapreds ((x16595))
+:extrapreds ((x16596))
+:extrapreds ((x16597))
+:extrapreds ((x16598))
+:extrapreds ((x16599))
+:extrapreds ((x16600))
+:extrapreds ((x16601))
+:extrapreds ((x16602))
+:extrapreds ((x16603))
+:extrapreds ((x16604))
+:extrapreds ((x16605))
+:extrapreds ((x16606))
+:extrapreds ((x16607))
+:extrapreds ((x16608))
+:extrapreds ((x16609))
+:extrapreds ((x16610))
+:extrapreds ((x16611))
+:extrapreds ((x16612))
+:extrapreds ((x16613))
+:extrapreds ((x16614))
+:extrapreds ((x16615))
+:extrapreds ((x16616))
+:extrapreds ((x16617))
+:extrapreds ((x16618))
+:extrapreds ((x16619))
+:extrapreds ((x16620))
+:extrapreds ((x16621))
+:extrapreds ((x16622))
+:extrapreds ((x16623))
+:extrapreds ((x16624))
+:extrapreds ((x16625))
+:extrapreds ((x16626))
+:extrapreds ((x16627))
+:extrapreds ((x16628))
+:extrapreds ((x16629))
+:extrapreds ((x16630))
+:extrapreds ((x16631))
+:extrapreds ((x16632))
+:extrapreds ((x16633))
+:extrapreds ((x16634))
+:extrapreds ((x16635))
+:extrapreds ((x16636))
+:extrapreds ((x16637))
+:extrapreds ((x16638))
+:extrapreds ((x16639))
+:extrapreds ((x16640))
+:extrapreds ((x16641))
+:extrapreds ((x16642))
+:extrapreds ((x16643))
+:extrapreds ((x16644))
+:extrapreds ((x16645))
+:extrapreds ((x16646))
+:extrapreds ((x16647))
+:extrapreds ((x16648))
+:extrapreds ((x16649))
+:extrapreds ((x16650))
+:extrapreds ((x16651))
+:extrapreds ((x16652))
+:extrapreds ((x16653))
+:extrapreds ((x16654))
+:extrapreds ((x16655))
+:extrapreds ((x16656))
+:extrapreds ((x16657))
+:extrapreds ((x16658))
+:extrapreds ((x16659))
+:extrapreds ((x16660))
+:extrapreds ((x16661))
+:extrapreds ((x16662))
+:extrapreds ((x16663))
+:extrapreds ((x16664))
+:extrapreds ((x16665))
+:extrapreds ((x16666))
+:extrapreds ((x16667))
+:extrapreds ((x16668))
+:extrapreds ((x16669))
+:extrapreds ((x16670))
+:extrapreds ((x16671))
+:extrapreds ((x16672))
+:extrapreds ((x16673))
+:extrapreds ((x16674))
+:extrapreds ((x16675))
+:extrapreds ((x16676))
+:extrapreds ((x16677))
+:extrapreds ((x16678))
+:extrapreds ((x16679))
+:extrapreds ((x16680))
+:extrapreds ((x16681))
+:extrapreds ((x16682))
+:extrapreds ((x16683))
+:extrapreds ((x16684))
+:extrapreds ((x16685))
+:extrapreds ((x16686))
+:extrapreds ((x16687))
+:extrapreds ((x16688))
+:extrapreds ((x16689))
+:extrapreds ((x16690))
+:extrapreds ((x16691))
+:extrapreds ((x16692))
+:extrapreds ((x16693))
+:extrapreds ((x16694))
+:extrapreds ((x16695))
+:extrapreds ((x16696))
+:extrapreds ((x16697))
+:extrapreds ((x16698))
+:extrapreds ((x16699))
+:extrapreds ((x16700))
+:extrapreds ((x16701))
+:extrapreds ((x16702))
+:extrapreds ((x16703))
+:extrapreds ((x16704))
+:extrapreds ((x16705))
+:extrapreds ((x16706))
+:extrapreds ((x16707))
+:extrapreds ((x16708))
+:extrapreds ((x16709))
+:extrapreds ((x16710))
+:extrapreds ((x16711))
+:extrapreds ((x16712))
+:extrapreds ((x16713))
+:extrapreds ((x16714))
+:extrapreds ((x16715))
+:extrapreds ((x16716))
+:extrapreds ((x16717))
+:extrapreds ((x16718))
+:extrapreds ((x16719))
+:extrapreds ((x16720))
+:extrapreds ((x16721))
+:extrapreds ((x16722))
+:extrapreds ((x16723))
+:extrapreds ((x16724))
+:extrapreds ((x16725))
+:extrapreds ((x16726))
+:extrapreds ((x16727))
+:extrapreds ((x16728))
+:extrapreds ((x16729))
+:extrapreds ((x16730))
+:extrapreds ((x16731))
+:extrapreds ((x16732))
+:extrapreds ((x16733))
+:extrapreds ((x16734))
+:extrapreds ((x16735))
+:extrapreds ((x16736))
+:extrapreds ((x16737))
+:extrapreds ((x16738))
+:extrapreds ((x16739))
+:extrapreds ((x16740))
+:extrapreds ((x16741))
+:extrapreds ((x16742))
+:extrapreds ((x16743))
+:extrapreds ((x16744))
+:extrapreds ((x16745))
+:extrapreds ((x16746))
+:extrapreds ((x16747))
+:extrapreds ((x16748))
+:extrapreds ((x16749))
+:extrapreds ((x16750))
+:extrapreds ((x16751))
+:extrapreds ((x16752))
+:extrapreds ((x16753))
+:extrapreds ((x16754))
+:extrapreds ((x16755))
+:extrapreds ((x16756))
+:extrapreds ((x16757))
+:extrapreds ((x16758))
+:extrapreds ((x16759))
+:extrapreds ((x16760))
+:extrapreds ((x16761))
+:extrapreds ((x16762))
+:extrapreds ((x16763))
+:extrapreds ((x16764))
+:extrapreds ((x16765))
+:extrapreds ((x16766))
+:extrapreds ((x16767))
+:extrapreds ((x16768))
+:extrapreds ((x16769))
+:extrapreds ((x16770))
+:extrapreds ((x16771))
+:extrapreds ((x16772))
+:extrapreds ((x16773))
+:extrapreds ((x16774))
+:extrapreds ((x16775))
+:extrapreds ((x16776))
+:extrapreds ((x16777))
+:extrapreds ((x16778))
+:extrapreds ((x16779))
+:extrapreds ((x16780))
+:extrapreds ((x16781))
+:extrapreds ((x16782))
+:extrapreds ((x16783))
+:extrapreds ((x16784))
+:extrapreds ((x16785))
+:extrapreds ((x16786))
+:extrapreds ((x16787))
+:extrapreds ((x16788))
+:extrapreds ((x16789))
+:extrapreds ((x16790))
+:extrapreds ((x16791))
+:extrapreds ((x16792))
+:extrapreds ((x16793))
+:extrapreds ((x16794))
+:extrapreds ((x16795))
+:extrapreds ((x16796))
+:extrapreds ((x16797))
+:extrapreds ((x16798))
+:extrapreds ((x16799))
+:extrapreds ((x16800))
+:extrapreds ((x16801))
+:extrapreds ((x16802))
+:extrapreds ((x16803))
+:extrapreds ((x16804))
+:extrapreds ((x16805))
+:extrapreds ((x16806))
+:extrapreds ((x16807))
+:extrapreds ((x16808))
+:extrapreds ((x16809))
+:extrapreds ((x16810))
+:extrapreds ((x16811))
+:extrapreds ((x16812))
+:extrapreds ((x16813))
+:extrapreds ((x16814))
+:extrapreds ((x16815))
+:extrapreds ((x16816))
+:extrapreds ((x16817))
+:extrapreds ((x16818))
+:extrapreds ((x16819))
+:extrapreds ((x16820))
+:extrapreds ((x16821))
+:extrapreds ((x16822))
+:extrapreds ((x16823))
+:extrapreds ((x16824))
+:extrapreds ((x16825))
+:extrapreds ((x16826))
+:extrapreds ((x16827))
+:extrapreds ((x16828))
+:extrapreds ((x16829))
+:extrapreds ((x16830))
+:extrapreds ((x16831))
+:extrapreds ((x16832))
+:extrapreds ((x16833))
+:extrapreds ((x16834))
+:extrapreds ((x16835))
+:extrapreds ((x16836))
+:extrapreds ((x16837))
+:extrapreds ((x16838))
+:extrapreds ((x16839))
+:extrapreds ((x16840))
+:extrapreds ((x16841))
+:extrapreds ((x16842))
+:extrapreds ((x16843))
+:extrapreds ((x16844))
+:extrapreds ((x16845))
+:extrapreds ((x16846))
+:extrapreds ((x16847))
+:extrapreds ((x16848))
+:extrapreds ((x16849))
+:extrapreds ((x16850))
+:extrapreds ((x16851))
+:extrapreds ((x16852))
+:extrapreds ((x16853))
+:extrapreds ((x16854))
+:extrapreds ((x16855))
+:extrapreds ((x16856))
+:extrapreds ((x16857))
+:extrapreds ((x16858))
+:extrapreds ((x16859))
+:extrapreds ((x16860))
+:extrapreds ((x16861))
+:extrapreds ((x16862))
+:extrapreds ((x16863))
+:extrapreds ((x16864))
+:extrapreds ((x16865))
+:extrapreds ((x16866))
+:extrapreds ((x16867))
+:extrapreds ((x16868))
+:extrapreds ((x16869))
+:extrapreds ((x16870))
+:extrapreds ((x16871))
+:extrapreds ((x16872))
+:extrapreds ((x16873))
+:extrapreds ((x16874))
+:extrapreds ((x16875))
+:extrapreds ((x16876))
+:extrapreds ((x16877))
+:extrapreds ((x16878))
+:extrapreds ((x16879))
+:extrapreds ((x16880))
+:extrapreds ((x16881))
+:extrapreds ((x16882))
+:extrapreds ((x16883))
+:extrapreds ((x16884))
+:extrapreds ((x16885))
+:extrapreds ((x16886))
+:extrapreds ((x16887))
+:extrapreds ((x16888))
+:extrapreds ((x16889))
+:extrapreds ((x16890))
+:extrapreds ((x16891))
+:extrapreds ((x16892))
+:extrapreds ((x16893))
+:extrapreds ((x16894))
+:extrapreds ((x16895))
+:extrapreds ((x16896))
+:extrapreds ((x16897))
+:extrapreds ((x16898))
+:extrapreds ((x16899))
+:extrapreds ((x16900))
+:extrapreds ((x16901))
+:extrapreds ((x16902))
+:extrapreds ((x16903))
+:extrapreds ((x16904))
+:extrapreds ((x16905))
+:extrapreds ((x16906))
+:extrapreds ((x16907))
+:extrapreds ((x16908))
+:extrapreds ((x16909))
+:extrapreds ((x16910))
+:extrapreds ((x16911))
+:extrapreds ((x16912))
+:extrapreds ((x16913))
+:extrapreds ((x16914))
+:extrapreds ((x16915))
+:extrapreds ((x16916))
+:extrapreds ((x16917))
+:extrapreds ((x16918))
+:extrapreds ((x16919))
+:extrapreds ((x16920))
+:extrapreds ((x16921))
+:extrapreds ((x16922))
+:extrapreds ((x16923))
+:extrapreds ((x16924))
+:extrapreds ((x16925))
+:extrapreds ((x16926))
+:extrapreds ((x16927))
+:extrapreds ((x16928))
+:extrapreds ((x16929))
+:extrapreds ((x16930))
+:extrapreds ((x16931))
+:extrapreds ((x16932))
+:extrapreds ((x16933))
+:extrapreds ((x16934))
+:extrapreds ((x16935))
+:extrapreds ((x16936))
+:extrapreds ((x16937))
+:extrapreds ((x16938))
+:extrapreds ((x16939))
+:extrapreds ((x16940))
+:extrapreds ((x16941))
+:extrapreds ((x16942))
+:extrapreds ((x16943))
+:extrapreds ((x16944))
+:extrapreds ((x16945))
+:extrapreds ((x16946))
+:extrapreds ((x16947))
+:extrapreds ((x16948))
+:extrapreds ((x16949))
+:extrapreds ((x16950))
+:extrapreds ((x16951))
+:extrapreds ((x16952))
+:extrapreds ((x16953))
+:extrapreds ((x16954))
+:extrapreds ((x16955))
+:extrapreds ((x16956))
+:extrapreds ((x16957))
+:extrapreds ((x16958))
+:extrapreds ((x16959))
+:extrapreds ((x16960))
+:extrapreds ((x16961))
+:extrapreds ((x16962))
+:extrapreds ((x16963))
+:extrapreds ((x16964))
+:extrapreds ((x16965))
+:extrapreds ((x16966))
+:extrapreds ((x16967))
+:extrapreds ((x16968))
+:extrapreds ((x16969))
+:extrapreds ((x16970))
+:extrapreds ((x16971))
+:extrapreds ((x16972))
+:extrapreds ((x16973))
+:extrapreds ((x16974))
+:extrapreds ((x16975))
+:extrapreds ((x16976))
+:extrapreds ((x16977))
+:extrapreds ((x16978))
+:extrapreds ((x16979))
+:extrapreds ((x16980))
+:extrapreds ((x16981))
+:extrapreds ((x16982))
+:extrapreds ((x16983))
+:extrapreds ((x16984))
+:extrapreds ((x16985))
+:extrapreds ((x16986))
+:extrapreds ((x16987))
+:extrapreds ((x16988))
+:extrapreds ((x16989))
+:extrapreds ((x16990))
+:extrapreds ((x16991))
+:extrapreds ((x16992))
+:extrapreds ((x16993))
+:extrapreds ((x16994))
+:extrapreds ((x16995))
+:extrapreds ((x16996))
+:extrapreds ((x16997))
+:extrapreds ((x16998))
+:extrapreds ((x16999))
+:extrapreds ((x17000))
+:extrapreds ((x17001))
+:extrapreds ((x17002))
+:extrapreds ((x17003))
+:extrapreds ((x17004))
+:extrapreds ((x17005))
+:extrapreds ((x17006))
+:extrapreds ((x17007))
+:extrapreds ((x17008))
+:extrapreds ((x17009))
+:extrapreds ((x17010))
+:extrapreds ((x17011))
+:extrapreds ((x17012))
+:extrapreds ((x17013))
+:extrapreds ((x17014))
+:extrapreds ((x17015))
+:extrapreds ((x17016))
+:extrapreds ((x17017))
+:extrapreds ((x17018))
+:extrapreds ((x17019))
+:extrapreds ((x17020))
+:extrapreds ((x17021))
+:extrapreds ((x17022))
+:extrapreds ((x17023))
+:extrapreds ((x17024))
+:extrapreds ((x17025))
+:extrapreds ((x17026))
+:extrapreds ((x17027))
+:extrapreds ((x17028))
+:extrapreds ((x17029))
+:extrapreds ((x17030))
+:extrapreds ((x17031))
+:extrapreds ((x17032))
+:extrapreds ((x17033))
+:extrapreds ((x17034))
+:extrapreds ((x17035))
+:extrapreds ((x17036))
+:extrapreds ((x17037))
+:extrapreds ((x17038))
+:extrapreds ((x17039))
+:extrapreds ((x17040))
+:extrapreds ((x17041))
+:extrapreds ((x17042))
+:extrapreds ((x17043))
+:extrapreds ((x17044))
+:extrapreds ((x17045))
+:extrapreds ((x17046))
+:extrapreds ((x17047))
+:extrapreds ((x17048))
+:extrapreds ((x17049))
+:extrapreds ((x17050))
+:extrapreds ((x17051))
+:extrapreds ((x17052))
+:extrapreds ((x17053))
+:extrapreds ((x17054))
+:extrapreds ((x17055))
+:extrapreds ((x17056))
+:extrapreds ((x17057))
+:extrapreds ((x17058))
+:extrapreds ((x17059))
+:extrapreds ((x17060))
+:extrapreds ((x17061))
+:extrapreds ((x17062))
+:extrapreds ((x17063))
+:extrapreds ((x17064))
+:extrapreds ((x17065))
+:extrapreds ((x17066))
+:extrapreds ((x17067))
+:extrapreds ((x17068))
+:extrapreds ((x17069))
+:extrapreds ((x17070))
+:extrapreds ((x17071))
+:extrapreds ((x17072))
+:extrapreds ((x17073))
+:extrapreds ((x17074))
+:extrapreds ((x17075))
+:extrapreds ((x17076))
+:extrapreds ((x17077))
+:extrapreds ((x17078))
+:extrapreds ((x17079))
+:extrapreds ((x17080))
+:extrapreds ((x17081))
+:extrapreds ((x17082))
+:extrapreds ((x17083))
+:extrapreds ((x17084))
+:extrapreds ((x17085))
+:extrapreds ((x17086))
+:extrapreds ((x17087))
+:extrapreds ((x17088))
+:extrapreds ((x17089))
+:extrapreds ((x17090))
+:extrapreds ((x17091))
+:extrapreds ((x17092))
+:extrapreds ((x17093))
+:extrapreds ((x17094))
+:extrapreds ((x17095))
+:extrapreds ((x17096))
+:extrapreds ((x17097))
+:extrapreds ((x17098))
+:extrapreds ((x17099))
+:extrapreds ((x17100))
+:extrapreds ((x17101))
+:extrapreds ((x17102))
+:extrapreds ((x17103))
+:extrapreds ((x17104))
+:extrapreds ((x17105))
+:extrapreds ((x17106))
+:extrapreds ((x17107))
+:extrapreds ((x17108))
+:extrapreds ((x17109))
+:extrapreds ((x17110))
+:extrapreds ((x17111))
+:extrapreds ((x17112))
+:extrapreds ((x17113))
+:extrapreds ((x17114))
+:extrapreds ((x17115))
+:extrapreds ((x17116))
+:extrapreds ((x17117))
+:extrapreds ((x17118))
+:extrapreds ((x17119))
+:extrapreds ((x17120))
+:extrapreds ((x17121))
+:extrapreds ((x17122))
+:extrapreds ((x17123))
+:extrapreds ((x17124))
+:extrapreds ((x17125))
+:extrapreds ((x17126))
+:extrapreds ((x17127))
+:extrapreds ((x17128))
+:extrapreds ((x17129))
+:extrapreds ((x17130))
+:extrapreds ((x17131))
+:extrapreds ((x17132))
+:extrapreds ((x17133))
+:extrapreds ((x17134))
+:extrapreds ((x17135))
+:extrapreds ((x17136))
+:extrapreds ((x17137))
+:extrapreds ((x17138))
+:extrapreds ((x17139))
+:extrapreds ((x17140))
+:extrapreds ((x17141))
+:extrapreds ((x17142))
+:extrapreds ((x17143))
+:extrapreds ((x17144))
+:extrapreds ((x17145))
+:extrapreds ((x17146))
+:extrapreds ((x17147))
+:extrapreds ((x17148))
+:extrapreds ((x17149))
+:extrapreds ((x17150))
+:extrapreds ((x17151))
+:extrapreds ((x17152))
+:extrapreds ((x17153))
+:extrapreds ((x17154))
+:extrapreds ((x17155))
+:extrapreds ((x17156))
+:extrapreds ((x17157))
+:extrapreds ((x17158))
+:extrapreds ((x17159))
+:extrapreds ((x17160))
+:extrapreds ((x17161))
+:extrapreds ((x17162))
+:extrapreds ((x17163))
+:extrapreds ((x17164))
+:extrapreds ((x17165))
+:extrapreds ((x17166))
+:extrapreds ((x17167))
+:extrapreds ((x17168))
+:extrapreds ((x17169))
+:extrapreds ((x17170))
+:extrapreds ((x17171))
+:extrapreds ((x17172))
+:extrapreds ((x17173))
+:extrapreds ((x17174))
+:extrapreds ((x17175))
+:extrapreds ((x17176))
+:extrapreds ((x17177))
+:extrapreds ((x17178))
+:extrapreds ((x17179))
+:extrapreds ((x17180))
+:extrapreds ((x17181))
+:extrapreds ((x17182))
+:extrapreds ((x17183))
+:extrapreds ((x17184))
+:extrapreds ((x17185))
+:extrapreds ((x17186))
+:extrapreds ((x17187))
+:extrapreds ((x17188))
+:extrapreds ((x17189))
+:extrapreds ((x17190))
+:extrapreds ((x17191))
+:extrapreds ((x17192))
+:extrapreds ((x17193))
+:extrapreds ((x17194))
+:extrapreds ((x17195))
+:extrapreds ((x17196))
+:extrapreds ((x17197))
+:extrapreds ((x17198))
+:extrapreds ((x17199))
+:extrapreds ((x17200))
+:extrapreds ((x17201))
+:extrapreds ((x17202))
+:extrapreds ((x17203))
+:extrapreds ((x17204))
+:extrapreds ((x17205))
+:extrapreds ((x17206))
+:extrapreds ((x17207))
+:extrapreds ((x17208))
+:extrapreds ((x17209))
+:extrapreds ((x17210))
+:extrapreds ((x17211))
+:extrapreds ((x17212))
+:extrapreds ((x17213))
+:extrapreds ((x17214))
+:extrapreds ((x17215))
+:extrapreds ((x17216))
+:extrapreds ((x17217))
+:extrapreds ((x17218))
+:extrapreds ((x17219))
+:extrapreds ((x17220))
+:extrapreds ((x17221))
+:extrapreds ((x17222))
+:extrapreds ((x17223))
+:extrapreds ((x17224))
+:extrapreds ((x17225))
+:extrapreds ((x17226))
+:extrapreds ((x17227))
+:extrapreds ((x17228))
+:extrapreds ((x17229))
+:extrapreds ((x17230))
+:extrapreds ((x17231))
+:extrapreds ((x17232))
+:extrapreds ((x17233))
+:extrapreds ((x17234))
+:extrapreds ((x17235))
+:extrapreds ((x17236))
+:extrapreds ((x17237))
+:extrapreds ((x17238))
+:extrapreds ((x17239))
+:extrapreds ((x17240))
+:extrapreds ((x17241))
+:extrapreds ((x17242))
+:extrapreds ((x17243))
+:extrapreds ((x17244))
+:extrapreds ((x17245))
+:extrapreds ((x17246))
+:extrapreds ((x17247))
+:extrapreds ((x17248))
+:extrapreds ((x17249))
+:extrapreds ((x17250))
+:extrapreds ((x17251))
+:extrapreds ((x17252))
+:extrapreds ((x17253))
+:extrapreds ((x17254))
+:extrapreds ((x17255))
+:extrapreds ((x17256))
+:extrapreds ((x17257))
+:extrapreds ((x17258))
+:extrapreds ((x17259))
+:extrapreds ((x17260))
+:extrapreds ((x17261))
+:extrapreds ((x17262))
+:extrapreds ((x17263))
+:extrapreds ((x17264))
+:extrapreds ((x17265))
+:extrapreds ((x17266))
+:extrapreds ((x17267))
+:extrapreds ((x17268))
+:extrapreds ((x17269))
+:extrapreds ((x17270))
+:extrapreds ((x17271))
+:extrapreds ((x17272))
+:extrapreds ((x17273))
+:extrapreds ((x17274))
+:extrapreds ((x17275))
+:extrapreds ((x17276))
+:extrapreds ((x17277))
+:extrapreds ((x17278))
+:extrapreds ((x17279))
+:extrapreds ((x17280))
+:extrapreds ((x17281))
+:extrapreds ((x17282))
+:extrapreds ((x17283))
+:extrapreds ((x17284))
+:extrapreds ((x17285))
+:extrapreds ((x17286))
+:extrapreds ((x17287))
+:extrapreds ((x17288))
+:extrapreds ((x17289))
+:extrapreds ((x17290))
+:extrapreds ((x17291))
+:extrapreds ((x17292))
+:extrapreds ((x17293))
+:extrapreds ((x17294))
+:extrapreds ((x17295))
+:extrapreds ((x17296))
+:extrapreds ((x17297))
+:extrapreds ((x17298))
+:extrapreds ((x17299))
+:extrapreds ((x17300))
+:extrapreds ((x17301))
+:extrapreds ((x17302))
+:extrapreds ((x17303))
+:extrapreds ((x17304))
+:extrapreds ((x17305))
+:extrapreds ((x17306))
+:extrapreds ((x17307))
+:extrapreds ((x17308))
+:extrapreds ((x17309))
+:extrapreds ((x17310))
+:extrapreds ((x17311))
+:extrapreds ((x17312))
+:extrapreds ((x17313))
+:extrapreds ((x17314))
+:extrapreds ((x17315))
+:extrapreds ((x17316))
+:extrapreds ((x17317))
+:extrapreds ((x17318))
+:extrapreds ((x17319))
+:extrapreds ((x17320))
+:extrapreds ((x17321))
+:extrapreds ((x17322))
+:extrapreds ((x17323))
+:extrapreds ((x17324))
+:extrapreds ((x17325))
+:extrapreds ((x17326))
+:extrapreds ((x17327))
+:extrapreds ((x17328))
+:extrapreds ((x17329))
+:extrapreds ((x17330))
+:extrapreds ((x17331))
+:extrapreds ((x17332))
+:extrapreds ((x17333))
+:extrapreds ((x17334))
+:extrapreds ((x17335))
+:extrapreds ((x17336))
+:extrapreds ((x17337))
+:extrapreds ((x17338))
+:extrapreds ((x17339))
+:extrapreds ((x17340))
+:extrapreds ((x17341))
+:extrapreds ((x17342))
+:extrapreds ((x17343))
+:extrapreds ((x17344))
+:extrapreds ((x17345))
+:extrapreds ((x17346))
+:extrapreds ((x17347))
+:extrapreds ((x17348))
+:extrapreds ((x17349))
+:extrapreds ((x17350))
+:extrapreds ((x17351))
+:extrapreds ((x17352))
+:extrapreds ((x17353))
+:extrapreds ((x17354))
+:extrapreds ((x17355))
+:extrapreds ((x17356))
+:extrapreds ((x17357))
+:extrapreds ((x17358))
+:extrapreds ((x17359))
+:extrapreds ((x17360))
+:extrapreds ((x17361))
+:extrapreds ((x17362))
+:extrapreds ((x17363))
+:extrapreds ((x17364))
+:extrapreds ((x17365))
+:extrapreds ((x17366))
+:extrapreds ((x17367))
+:extrapreds ((x17368))
+:extrapreds ((x17369))
+:extrapreds ((x17370))
+:extrapreds ((x17371))
+:extrapreds ((x17372))
+:extrapreds ((x17373))
+:extrapreds ((x17374))
+:extrapreds ((x17375))
+:extrapreds ((x17376))
+:extrapreds ((x17377))
+:extrapreds ((x17378))
+:extrapreds ((x17379))
+:extrapreds ((x17380))
+:extrapreds ((x17381))
+:extrapreds ((x17382))
+:extrapreds ((x17383))
+:extrapreds ((x17384))
+:extrapreds ((x17385))
+:extrapreds ((x17386))
+:extrapreds ((x17387))
+:extrapreds ((x17388))
+:extrapreds ((x17389))
+:extrapreds ((x17390))
+:extrapreds ((x17391))
+:extrapreds ((x17392))
+:extrapreds ((x17393))
+:extrapreds ((x17394))
+:extrapreds ((x17395))
+:extrapreds ((x17396))
+:extrapreds ((x17397))
+:extrapreds ((x17398))
+:extrapreds ((x17399))
+:extrapreds ((x17400))
+:extrapreds ((x17401))
+:extrapreds ((x17402))
+:extrapreds ((x17403))
+:extrapreds ((x17404))
+:extrapreds ((x17405))
+:extrapreds ((x17406))
+:extrapreds ((x17407))
+:extrapreds ((x17408))
+:extrapreds ((x17409))
+:extrapreds ((x17410))
+:extrapreds ((x17411))
+:extrapreds ((x17412))
+:extrapreds ((x17413))
+:extrapreds ((x17414))
+:extrapreds ((x17415))
+:extrapreds ((x17416))
+:extrapreds ((x17417))
+:extrapreds ((x17418))
+:extrapreds ((x17419))
+:extrapreds ((x17420))
+:extrapreds ((x17421))
+:extrapreds ((x17422))
+:extrapreds ((x17423))
+:extrapreds ((x17424))
+:extrapreds ((x17425))
+:extrapreds ((x17426))
+:extrapreds ((x17427))
+:extrapreds ((x17428))
+:extrapreds ((x17429))
+:extrapreds ((x17430))
+:extrapreds ((x17431))
+:extrapreds ((x17432))
+:extrapreds ((x17433))
+:extrapreds ((x17434))
+:extrapreds ((x17435))
+:extrapreds ((x17436))
+:extrapreds ((x17437))
+:extrapreds ((x17438))
+:extrapreds ((x17439))
+:extrapreds ((x17440))
+:extrapreds ((x17441))
+:extrapreds ((x17442))
+:extrapreds ((x17443))
+:extrapreds ((x17444))
+:extrapreds ((x17445))
+:extrapreds ((x17446))
+:extrapreds ((x17447))
+:extrapreds ((x17448))
+:extrapreds ((x17449))
+:extrapreds ((x17450))
+:extrapreds ((x17451))
+:extrapreds ((x17452))
+:extrapreds ((x17453))
+:extrapreds ((x17454))
+:extrapreds ((x17455))
+:extrapreds ((x17456))
+:extrapreds ((x17457))
+:extrapreds ((x17458))
+:extrapreds ((x17459))
+:extrapreds ((x17460))
+:extrapreds ((x17461))
+:extrapreds ((x17462))
+:extrapreds ((x17463))
+:extrapreds ((x17464))
+:extrapreds ((x17465))
+:extrapreds ((x17466))
+:extrapreds ((x17467))
+:extrapreds ((x17468))
+:extrapreds ((x17469))
+:extrapreds ((x17470))
+:extrapreds ((x17471))
+:extrapreds ((x17472))
+:extrapreds ((x17473))
+:extrapreds ((x17474))
+:extrapreds ((x17475))
+:extrapreds ((x17476))
+:extrapreds ((x17477))
+:extrapreds ((x17478))
+:extrapreds ((x17479))
+:extrapreds ((x17480))
+:extrapreds ((x17481))
+:extrapreds ((x17482))
+:extrapreds ((x17483))
+:extrapreds ((x17484))
+:extrapreds ((x17485))
+:extrapreds ((x17486))
+:extrapreds ((x17487))
+:extrapreds ((x17488))
+:extrapreds ((x17489))
+:extrapreds ((x17490))
+:extrapreds ((x17491))
+:extrapreds ((x17492))
+:extrapreds ((x17493))
+:extrapreds ((x17494))
+:extrapreds ((x17495))
+:extrapreds ((x17496))
+:extrapreds ((x17497))
+:extrapreds ((x17498))
+:extrapreds ((x17499))
+:extrapreds ((x17500))
+:extrapreds ((x17501))
+:extrapreds ((x17502))
+:extrapreds ((x17503))
+:extrapreds ((x17504))
+:extrapreds ((x17505))
+:extrapreds ((x17506))
+:extrapreds ((x17507))
+:extrapreds ((x17508))
+:extrapreds ((x17509))
+:extrapreds ((x17510))
+:extrapreds ((x17511))
+:extrapreds ((x17512))
+:extrapreds ((x17513))
+:extrapreds ((x17514))
+:extrapreds ((x17515))
+:extrapreds ((x17516))
+:extrapreds ((x17517))
+:extrapreds ((x17518))
+:extrapreds ((x17519))
+:extrapreds ((x17520))
+:extrapreds ((x17521))
+:extrapreds ((x17522))
+:extrapreds ((x17523))
+:extrapreds ((x17524))
+:extrapreds ((x17525))
+:extrapreds ((x17526))
+:extrapreds ((x17527))
+:extrapreds ((x17528))
+:extrapreds ((x17529))
+:extrapreds ((x17530))
+:extrapreds ((x17531))
+:extrapreds ((x17532))
+:extrapreds ((x17533))
+:extrapreds ((x17534))
+:extrapreds ((x17535))
+:extrapreds ((x17536))
+:extrapreds ((x17537))
+:extrapreds ((x17538))
+:extrapreds ((x17539))
+:extrapreds ((x17540))
+:extrapreds ((x17541))
+:extrapreds ((x17542))
+:extrapreds ((x17543))
+:extrapreds ((x17544))
+:extrapreds ((x17545))
+:extrapreds ((x17546))
+:extrapreds ((x17547))
+:extrapreds ((x17548))
+:extrapreds ((x17549))
+:extrapreds ((x17550))
+:extrapreds ((x17551))
+:extrapreds ((x17552))
+:extrapreds ((x17553))
+:extrapreds ((x17554))
+:extrapreds ((x17555))
+:extrapreds ((x17556))
+:extrapreds ((x17557))
+:extrapreds ((x17558))
+:extrapreds ((x17559))
+:extrapreds ((x17560))
+:extrapreds ((x17561))
+:extrapreds ((x17562))
+:extrapreds ((x17563))
+:extrapreds ((x17564))
+:extrapreds ((x17565))
+:extrapreds ((x17566))
+:extrapreds ((x17567))
+:extrapreds ((x17568))
+:extrapreds ((x17569))
+:extrapreds ((x17570))
+:extrapreds ((x17571))
+:extrapreds ((x17572))
+:extrapreds ((x17573))
+:extrapreds ((x17574))
+:extrapreds ((x17575))
+:extrapreds ((x17576))
+:extrapreds ((x17577))
+:extrapreds ((x17578))
+:extrapreds ((x17579))
+:extrapreds ((x17580))
+:extrapreds ((x17581))
+:extrapreds ((x17582))
+:extrapreds ((x17583))
+:extrapreds ((x17584))
+:extrapreds ((x17585))
+:extrapreds ((x17586))
+:extrapreds ((x17587))
+:extrapreds ((x17588))
+:extrapreds ((x17589))
+:extrapreds ((x17590))
+:extrapreds ((x17591))
+:extrapreds ((x17592))
+:extrapreds ((x17593))
+:extrapreds ((x17594))
+:extrapreds ((x17595))
+:extrapreds ((x17596))
+:extrapreds ((x17597))
+:extrapreds ((x17598))
+:extrapreds ((x17599))
+:extrapreds ((x17600))
+:extrapreds ((x17601))
+:extrapreds ((x17602))
+:extrapreds ((x17603))
+:extrapreds ((x17604))
+:extrapreds ((x17605))
+:extrapreds ((x17606))
+:extrapreds ((x17607))
+:extrapreds ((x17608))
+:extrapreds ((x17609))
+:extrapreds ((x17610))
+:extrapreds ((x17611))
+:extrapreds ((x17612))
+:extrapreds ((x17613))
+:extrapreds ((x17614))
+:extrapreds ((x17615))
+:extrapreds ((x17616))
+:extrapreds ((x17617))
+:extrapreds ((x17618))
+:extrapreds ((x17619))
+:extrapreds ((x17620))
+:extrapreds ((x17621))
+:extrapreds ((x17622))
+:extrapreds ((x17623))
+:extrapreds ((x17624))
+:extrapreds ((x17625))
+:extrapreds ((x17626))
+:extrapreds ((x17627))
+:extrapreds ((x17628))
+:extrapreds ((x17629))
+:extrapreds ((x17630))
+:extrapreds ((x17631))
+:extrapreds ((x17632))
+:extrapreds ((x17633))
+:extrapreds ((x17634))
+:extrapreds ((x17635))
+:extrapreds ((x17636))
+:extrapreds ((x17637))
+:extrapreds ((x17638))
+:extrapreds ((x17639))
+:extrapreds ((x17640))
+:extrapreds ((x17641))
+:extrapreds ((x17642))
+:extrapreds ((x17643))
+:extrapreds ((x17644))
+:extrapreds ((x17645))
+:extrapreds ((x17646))
+:extrapreds ((x17647))
+:extrapreds ((x17648))
+:extrapreds ((x17649))
+:extrapreds ((x17650))
+:extrapreds ((x17651))
+:extrapreds ((x17652))
+:extrapreds ((x17653))
+:extrapreds ((x17654))
+:extrapreds ((x17655))
+:extrapreds ((x17656))
+:extrapreds ((x17657))
+:extrapreds ((x17658))
+:extrapreds ((x17659))
+:extrapreds ((x17660))
+:extrapreds ((x17661))
+:extrapreds ((x17662))
+:extrapreds ((x17663))
+:extrapreds ((x17664))
+:extrapreds ((x17665))
+:extrapreds ((x17666))
+:extrapreds ((x17667))
+:extrapreds ((x17668))
+:extrapreds ((x17669))
+:extrapreds ((x17670))
+:extrapreds ((x17671))
+:extrapreds ((x17672))
+:extrapreds ((x17673))
+:extrapreds ((x17674))
+:extrapreds ((x17675))
+:extrapreds ((x17676))
+:extrapreds ((x17677))
+:extrapreds ((x17678))
+:extrapreds ((x17679))
+:extrapreds ((x17680))
+:extrapreds ((x17681))
+:extrapreds ((x17682))
+:extrapreds ((x17683))
+:extrapreds ((x17684))
+:extrapreds ((x17685))
+:extrapreds ((x17686))
+:extrapreds ((x17687))
+:extrapreds ((x17688))
+:extrapreds ((x17689))
+:extrapreds ((x17690))
+:extrapreds ((x17691))
+:extrapreds ((x17692))
+:extrapreds ((x17693))
+:extrapreds ((x17694))
+:extrapreds ((x17695))
+:extrapreds ((x17696))
+:extrapreds ((x17697))
+:extrapreds ((x17698))
+:extrapreds ((x17699))
+:extrapreds ((x17700))
+:extrapreds ((x17701))
+:extrapreds ((x17702))
+:extrapreds ((x17703))
+:extrapreds ((x17704))
+:extrapreds ((x17705))
+:extrapreds ((x17706))
+:extrapreds ((x17707))
+:extrapreds ((x17708))
+:extrapreds ((x17709))
+:extrapreds ((x17710))
+:extrapreds ((x17711))
+:extrapreds ((x17712))
+:extrapreds ((x17713))
+:extrapreds ((x17714))
+:extrapreds ((x17715))
+:extrapreds ((x17716))
+:extrapreds ((x17717))
+:extrapreds ((x17718))
+:extrapreds ((x17719))
+:extrapreds ((x17720))
+:extrapreds ((x17721))
+:extrapreds ((x17722))
+:extrapreds ((x17723))
+:extrapreds ((x17724))
+:extrapreds ((x17725))
+:extrapreds ((x17726))
+:extrapreds ((x17727))
+:extrapreds ((x17728))
+:extrapreds ((x17729))
+:extrapreds ((x17730))
+:extrapreds ((x17731))
+:extrapreds ((x17732))
+:extrapreds ((x17733))
+:extrapreds ((x17734))
+:extrapreds ((x17735))
+:extrapreds ((x17736))
+:extrapreds ((x17737))
+:extrapreds ((x17738))
+:extrapreds ((x17739))
+:extrapreds ((x17740))
+:extrapreds ((x17741))
+:extrapreds ((x17742))
+:extrapreds ((x17743))
+:extrapreds ((x17744))
+:extrapreds ((x17745))
+:extrapreds ((x17746))
+:extrapreds ((x17747))
+:extrapreds ((x17748))
+:extrapreds ((x17749))
+:extrapreds ((x17750))
+:extrapreds ((x17751))
+:extrapreds ((x17752))
+:extrapreds ((x17753))
+:extrapreds ((x17754))
+:extrapreds ((x17755))
+:extrapreds ((x17756))
+:extrapreds ((x17757))
+:extrapreds ((x17758))
+:extrapreds ((x17759))
+:extrapreds ((x17760))
+:extrapreds ((x17761))
+:extrapreds ((x17762))
+:extrapreds ((x17763))
+:extrapreds ((x17764))
+:extrapreds ((x17765))
+:extrapreds ((x17766))
+:extrapreds ((x17767))
+:extrapreds ((x17768))
+:extrapreds ((x17769))
+:extrapreds ((x17770))
+:extrapreds ((x17771))
+:extrapreds ((x17772))
+:extrapreds ((x17773))
+:extrapreds ((x17774))
+:extrapreds ((x17775))
+:extrapreds ((x17776))
+:extrapreds ((x17777))
+:extrapreds ((x17778))
+:extrapreds ((x17779))
+:extrapreds ((x17780))
+:extrapreds ((x17781))
+:extrapreds ((x17782))
+:extrapreds ((x17783))
+:extrapreds ((x17784))
+:extrapreds ((x17785))
+:extrapreds ((x17786))
+:extrapreds ((x17787))
+:extrapreds ((x17788))
+:extrapreds ((x17789))
+:extrapreds ((x17790))
+:extrapreds ((x17791))
+:extrapreds ((x17792))
+:extrapreds ((x17793))
+:extrapreds ((x17794))
+:extrapreds ((x17795))
+:extrapreds ((x17796))
+:extrapreds ((x17797))
+:extrapreds ((x17798))
+:extrapreds ((x17799))
+:extrapreds ((x17800))
+:extrapreds ((x17801))
+:extrapreds ((x17802))
+:extrapreds ((x17803))
+:extrapreds ((x17804))
+:extrapreds ((x17805))
+:extrapreds ((x17806))
+:extrapreds ((x17807))
+:extrapreds ((x17808))
+:extrapreds ((x17809))
+:extrapreds ((x17810))
+:extrapreds ((x17811))
+:extrapreds ((x17812))
+:extrapreds ((x17813))
+:extrapreds ((x17814))
+:extrapreds ((x17815))
+:extrapreds ((x17816))
+:extrapreds ((x17817))
+:extrapreds ((x17818))
+:extrapreds ((x17819))
+:extrapreds ((x17820))
+:extrapreds ((x17821))
+:extrapreds ((x17822))
+:extrapreds ((x17823))
+:extrapreds ((x17824))
+:extrapreds ((x17825))
+:extrapreds ((x17826))
+:extrapreds ((x17827))
+:extrapreds ((x17828))
+:extrapreds ((x17829))
+:extrapreds ((x17830))
+:extrapreds ((x17831))
+:extrapreds ((x17832))
+:extrapreds ((x17833))
+:extrapreds ((x17834))
+:extrapreds ((x17835))
+:extrapreds ((x17836))
+:extrapreds ((x17837))
+:extrapreds ((x17838))
+:extrapreds ((x17839))
+:extrapreds ((x17840))
+:extrapreds ((x17841))
+:extrapreds ((x17842))
+:extrapreds ((x17843))
+:extrapreds ((x17844))
+:extrapreds ((x17845))
+:extrapreds ((x17846))
+:extrapreds ((x17847))
+:extrapreds ((x17848))
+:extrapreds ((x17849))
+:extrapreds ((x17850))
+:extrapreds ((x17851))
+:extrapreds ((x17852))
+:extrapreds ((x17853))
+:extrapreds ((x17854))
+:extrapreds ((x17855))
+:extrapreds ((x17856))
+:extrapreds ((x17857))
+:extrapreds ((x17858))
+:extrapreds ((x17859))
+:extrapreds ((x17860))
+:extrapreds ((x17861))
+:extrapreds ((x17862))
+:extrapreds ((x17863))
+:extrapreds ((x17864))
+:extrapreds ((x17865))
+:extrapreds ((x17866))
+:extrapreds ((x17867))
+:extrapreds ((x17868))
+:extrapreds ((x17869))
+:extrapreds ((x17870))
+:extrapreds ((x17871))
+:extrapreds ((x17872))
+:extrapreds ((x17873))
+:extrapreds ((x17874))
+:extrapreds ((x17875))
+:extrapreds ((x17876))
+:extrapreds ((x17877))
+:extrapreds ((x17878))
+:extrapreds ((x17879))
+:extrapreds ((x17880))
+:extrapreds ((x17881))
+:extrapreds ((x17882))
+:extrapreds ((x17883))
+:extrapreds ((x17884))
+:extrapreds ((x17885))
+:extrapreds ((x17886))
+:extrapreds ((x17887))
+:extrapreds ((x17888))
+:extrapreds ((x17889))
+:extrapreds ((x17890))
+:extrapreds ((x17891))
+:extrapreds ((x17892))
+:extrapreds ((x17893))
+:extrapreds ((x17894))
+:extrapreds ((x17895))
+:extrapreds ((x17896))
+:extrapreds ((x17897))
+:extrapreds ((x17898))
+:extrapreds ((x17899))
+:extrapreds ((x17900))
+:extrapreds ((x17901))
+:extrapreds ((x17902))
+:extrapreds ((x17903))
+:extrapreds ((x17904))
+:extrapreds ((x17905))
+:extrapreds ((x17906))
+:extrapreds ((x17907))
+:extrapreds ((x17908))
+:extrapreds ((x17909))
+:extrapreds ((x17910))
+:extrapreds ((x17911))
+:extrapreds ((x17912))
+:extrapreds ((x17913))
+:extrapreds ((x17914))
+:extrapreds ((x17915))
+:extrapreds ((x17916))
+:extrapreds ((x17917))
+:extrapreds ((x17918))
+:extrapreds ((x17919))
+:extrapreds ((x17920))
+:extrapreds ((x17921))
+:extrapreds ((x17922))
+:extrapreds ((x17923))
+:extrapreds ((x17924))
+:extrapreds ((x17925))
+:extrapreds ((x17926))
+:extrapreds ((x17927))
+:extrapreds ((x17928))
+:extrapreds ((x17929))
+:extrapreds ((x17930))
+:extrapreds ((x17931))
+:extrapreds ((x17932))
+:extrapreds ((x17933))
+:extrapreds ((x17934))
+:extrapreds ((x17935))
+:extrapreds ((x17936))
+:extrapreds ((x17937))
+:extrapreds ((x17938))
+:extrapreds ((x17939))
+:extrapreds ((x17940))
+:extrapreds ((x17941))
+:extrapreds ((x17942))
+:extrapreds ((x17943))
+:extrapreds ((x17944))
+:extrapreds ((x17945))
+:extrapreds ((x17946))
+:extrapreds ((x17947))
+:extrapreds ((x17948))
+:extrapreds ((x17949))
+:extrapreds ((x17950))
+:extrapreds ((x17951))
+:extrapreds ((x17952))
+:extrapreds ((x17953))
+:extrapreds ((x17954))
+:extrapreds ((x17955))
+:extrapreds ((x17956))
+:extrapreds ((x17957))
+:extrapreds ((x17958))
+:extrapreds ((x17959))
+:extrapreds ((x17960))
+:extrapreds ((x17961))
+:extrapreds ((x17962))
+:extrapreds ((x17963))
+:extrapreds ((x17964))
+:extrapreds ((x17965))
+:extrapreds ((x17966))
+:extrapreds ((x17967))
+:extrapreds ((x17968))
+:extrapreds ((x17969))
+:extrapreds ((x17970))
+:extrapreds ((x17971))
+:extrapreds ((x17972))
+:extrapreds ((x17973))
+:extrapreds ((x17974))
+:extrapreds ((x17975))
+:extrapreds ((x17976))
+:extrapreds ((x17977))
+:extrapreds ((x17978))
+:extrapreds ((x17979))
+:extrapreds ((x17980))
+:extrapreds ((x17981))
+:extrapreds ((x17982))
+:extrapreds ((x17983))
+:extrapreds ((x17984))
+:extrapreds ((x17985))
+:extrapreds ((x17986))
+:extrapreds ((x17987))
+:extrapreds ((x17988))
+:extrapreds ((x17989))
+:extrapreds ((x17990))
+:extrapreds ((x17991))
+:extrapreds ((x17992))
+:extrapreds ((x17993))
+:extrapreds ((x17994))
+:extrapreds ((x17995))
+:extrapreds ((x17996))
+:extrapreds ((x17997))
+:extrapreds ((x17998))
+:extrapreds ((x17999))
+:extrapreds ((x18000))
+:extrapreds ((x18001))
+:extrapreds ((x18002))
+:extrapreds ((x18003))
+:extrapreds ((x18004))
+:extrapreds ((x18005))
+:extrapreds ((x18006))
+:extrapreds ((x18007))
+:extrapreds ((x18008))
+:extrapreds ((x18009))
+:extrapreds ((x18010))
+:extrapreds ((x18011))
+:extrapreds ((x18012))
+:extrapreds ((x18013))
+:extrapreds ((x18014))
+:extrapreds ((x18015))
+:extrapreds ((x18016))
+:extrapreds ((x18017))
+:extrapreds ((x18018))
+:extrapreds ((x18019))
+:extrapreds ((x18020))
+:extrapreds ((x18021))
+:extrapreds ((x18022))
+:extrapreds ((x18023))
+:extrapreds ((x18024))
+:extrapreds ((x18025))
+:extrapreds ((x18026))
+:extrapreds ((x18027))
+:extrapreds ((x18028))
+:extrapreds ((x18029))
+:extrapreds ((x18030))
+:extrapreds ((x18031))
+:extrapreds ((x18032))
+:extrapreds ((x18033))
+:extrapreds ((x18034))
+:extrapreds ((x18035))
+:extrapreds ((x18036))
+:extrapreds ((x18037))
+:extrapreds ((x18038))
+:extrapreds ((x18039))
+:extrapreds ((x18040))
+:extrapreds ((x18041))
+:extrapreds ((x18042))
+:extrapreds ((x18043))
+:extrapreds ((x18044))
+:extrapreds ((x18045))
+:extrapreds ((x18046))
+:extrapreds ((x18047))
+:extrapreds ((x18048))
+:extrapreds ((x18049))
+:extrapreds ((x18050))
+:extrapreds ((x18051))
+:extrapreds ((x18052))
+:extrapreds ((x18053))
+:extrapreds ((x18054))
+:extrapreds ((x18055))
+:extrapreds ((x18056))
+:extrapreds ((x18057))
+:extrapreds ((x18058))
+:extrapreds ((x18059))
+:extrapreds ((x18060))
+:extrapreds ((x18061))
+:extrapreds ((x18062))
+:extrapreds ((x18063))
+:extrapreds ((x18064))
+:extrapreds ((x18065))
+:extrapreds ((x18066))
+:extrapreds ((x18067))
+:extrapreds ((x18068))
+:extrapreds ((x18069))
+:extrapreds ((x18070))
+:extrapreds ((x18071))
+:extrapreds ((x18072))
+:extrapreds ((x18073))
+:extrapreds ((x18074))
+:extrapreds ((x18075))
+:extrapreds ((x18076))
+:extrapreds ((x18077))
+:extrapreds ((x18078))
+:extrapreds ((x18079))
+:extrapreds ((x18080))
+:extrapreds ((x18081))
+:extrapreds ((x18082))
+:extrapreds ((x18083))
+:extrapreds ((x18084))
+:extrapreds ((x18085))
+:extrapreds ((x18086))
+:extrapreds ((x18087))
+:extrapreds ((x18088))
+:extrapreds ((x18089))
+:extrapreds ((x18090))
+:extrapreds ((x18091))
+:extrapreds ((x18092))
+:extrapreds ((x18093))
+:extrapreds ((x18094))
+:extrapreds ((x18095))
+:extrapreds ((x18096))
+:extrapreds ((x18097))
+:extrapreds ((x18098))
+:extrapreds ((x18099))
+:extrapreds ((x18100))
+:extrapreds ((x18101))
+:extrapreds ((x18102))
+:extrapreds ((x18103))
+:extrapreds ((x18104))
+:extrapreds ((x18105))
+:extrapreds ((x18106))
+:extrapreds ((x18107))
+:extrapreds ((x18108))
+:extrapreds ((x18109))
+:extrapreds ((x18110))
+:extrapreds ((x18111))
+:extrapreds ((x18112))
+:extrapreds ((x18113))
+:extrapreds ((x18114))
+:extrapreds ((x18115))
+:extrapreds ((x18116))
+:extrapreds ((x18117))
+:extrapreds ((x18118))
+:extrapreds ((x18119))
+:extrapreds ((x18120))
+:extrapreds ((x18121))
+:extrapreds ((x18122))
+:extrapreds ((x18123))
+:extrapreds ((x18124))
+:extrapreds ((x18125))
+:extrapreds ((x18126))
+:extrapreds ((x18127))
+:extrapreds ((x18128))
+:extrapreds ((x18129))
+:extrapreds ((x18130))
+:extrapreds ((x18131))
+:extrapreds ((x18132))
+:extrapreds ((x18133))
+:extrapreds ((x18134))
+:extrapreds ((x18135))
+:extrapreds ((x18136))
+:extrapreds ((x18137))
+:extrapreds ((x18138))
+:extrapreds ((x18139))
+:extrapreds ((x18140))
+:extrapreds ((x18141))
+:extrapreds ((x18142))
+:extrapreds ((x18143))
+:extrapreds ((x18144))
+:extrapreds ((x18145))
+:extrapreds ((x18146))
+:extrapreds ((x18147))
+:extrapreds ((x18148))
+:extrapreds ((x18149))
+:extrapreds ((x18150))
+:extrapreds ((x18151))
+:extrapreds ((x18152))
+:extrapreds ((x18153))
+:extrapreds ((x18154))
+:extrapreds ((x18155))
+:extrapreds ((x18156))
+:extrapreds ((x18157))
+:extrapreds ((x18158))
+:extrapreds ((x18159))
+:extrapreds ((x18160))
+:extrapreds ((x18161))
+:extrapreds ((x18162))
+:extrapreds ((x18163))
+:extrapreds ((x18164))
+:extrapreds ((x18165))
+:extrapreds ((x18166))
+:extrapreds ((x18167))
+:extrapreds ((x18168))
+:extrapreds ((x18169))
+:extrapreds ((x18170))
+:extrapreds ((x18171))
+:extrapreds ((x18172))
+:extrapreds ((x18173))
+:extrapreds ((x18174))
+:extrapreds ((x18175))
+:extrapreds ((x18176))
+:extrapreds ((x18177))
+:extrapreds ((x18178))
+:extrapreds ((x18179))
+:extrapreds ((x18180))
+:extrapreds ((x18181))
+:extrapreds ((x18182))
+:extrapreds ((x18183))
+:extrapreds ((x18184))
+:extrapreds ((x18185))
+:extrapreds ((x18186))
+:extrapreds ((x18187))
+:extrapreds ((x18188))
+:extrapreds ((x18189))
+:extrapreds ((x18190))
+:extrapreds ((x18191))
+:extrapreds ((x18192))
+:extrapreds ((x18193))
+:extrapreds ((x18194))
+:extrapreds ((x18195))
+:extrapreds ((x18196))
+:extrapreds ((x18197))
+:extrapreds ((x18198))
+:extrapreds ((x18199))
+:extrapreds ((x18200))
+:extrapreds ((x18201))
+:extrapreds ((x18202))
+:extrapreds ((x18203))
+:extrapreds ((x18204))
+:extrapreds ((x18205))
+:extrapreds ((x18206))
+:extrapreds ((x18207))
+:extrapreds ((x18208))
+:extrapreds ((x18209))
+:extrapreds ((x18210))
+:extrapreds ((x18211))
+:extrapreds ((x18212))
+:extrapreds ((x18213))
+:extrapreds ((x18214))
+:extrapreds ((x18215))
+:extrapreds ((x18216))
+:extrapreds ((x18217))
+:extrapreds ((x18218))
+:extrapreds ((x18219))
+:extrapreds ((x18220))
+:extrapreds ((x18221))
+:extrapreds ((x18222))
+:extrapreds ((x18223))
+:extrapreds ((x18224))
+:extrapreds ((x18225))
+:extrapreds ((x18226))
+:extrapreds ((x18227))
+:extrapreds ((x18228))
+:extrapreds ((x18229))
+:extrapreds ((x18230))
+:extrapreds ((x18231))
+:extrapreds ((x18232))
+:extrapreds ((x18233))
+:extrapreds ((x18234))
+:extrapreds ((x18235))
+:extrapreds ((x18236))
+:extrapreds ((x18237))
+:extrapreds ((x18238))
+:extrapreds ((x18239))
+:extrapreds ((x18240))
+:extrapreds ((x18241))
+:extrapreds ((x18242))
+:extrapreds ((x18243))
+:extrapreds ((x18244))
+:extrapreds ((x18245))
+:extrapreds ((x18246))
+:extrapreds ((x18247))
+:extrapreds ((x18248))
+:extrapreds ((x18249))
+:extrapreds ((x18250))
+:extrapreds ((x18251))
+:extrapreds ((x18252))
+:extrapreds ((x18253))
+:extrapreds ((x18254))
+:extrapreds ((x18255))
+:extrapreds ((x18256))
+:extrapreds ((x18257))
+:extrapreds ((x18258))
+:extrapreds ((x18259))
+:extrapreds ((x18260))
+:extrapreds ((x18261))
+:extrapreds ((x18262))
+:extrapreds ((x18263))
+:extrapreds ((x18264))
+:extrapreds ((x18265))
+:extrapreds ((x18266))
+:extrapreds ((x18267))
+:extrapreds ((x18268))
+:extrapreds ((x18269))
+:extrapreds ((x18270))
+:extrapreds ((x18271))
+:extrapreds ((x18272))
+:extrapreds ((x18273))
+:extrapreds ((x18274))
+:extrapreds ((x18275))
+:extrapreds ((x18276))
+:extrapreds ((x18277))
+:extrapreds ((x18278))
+:extrapreds ((x18279))
+:extrapreds ((x18280))
+:extrapreds ((x18281))
+:extrapreds ((x18282))
+:extrapreds ((x18283))
+:extrapreds ((x18284))
+:extrapreds ((x18285))
+:extrapreds ((x18286))
+:extrapreds ((x18287))
+:extrapreds ((x18288))
+:extrapreds ((x18289))
+:extrapreds ((x18290))
+:extrapreds ((x18291))
+:extrapreds ((x18292))
+:extrapreds ((x18293))
+:extrapreds ((x18294))
+:extrapreds ((x18295))
+:extrapreds ((x18296))
+:extrapreds ((x18297))
+:extrapreds ((x18298))
+:extrapreds ((x18299))
+:extrapreds ((x18300))
+:extrapreds ((x18301))
+:extrapreds ((x18302))
+:extrapreds ((x18303))
+:extrapreds ((x18304))
+:extrapreds ((x18305))
+:extrapreds ((x18306))
+:extrapreds ((x18307))
+:extrapreds ((x18308))
+:extrapreds ((x18309))
+:extrapreds ((x18310))
+:extrapreds ((x18311))
+:extrapreds ((x18312))
+:extrapreds ((x18313))
+:extrapreds ((x18314))
+:extrapreds ((x18315))
+:extrapreds ((x18316))
+:extrapreds ((x18317))
+:extrapreds ((x18318))
+:extrapreds ((x18319))
+:extrapreds ((x18320))
+:extrapreds ((x18321))
+:extrapreds ((x18322))
+:extrapreds ((x18323))
+:extrapreds ((x18324))
+:extrapreds ((x18325))
+:extrapreds ((x18326))
+:extrapreds ((x18327))
+:extrapreds ((x18328))
+:extrapreds ((x18329))
+:extrapreds ((x18330))
+:extrapreds ((x18331))
+:extrapreds ((x18332))
+:extrapreds ((x18333))
+:extrapreds ((x18334))
+:extrapreds ((x18335))
+:extrapreds ((x18336))
+:extrapreds ((x18337))
+:extrapreds ((x18338))
+:extrapreds ((x18339))
+:extrapreds ((x18340))
+:extrapreds ((x18341))
+:extrapreds ((x18342))
+:extrapreds ((x18343))
+:extrapreds ((x18344))
+:extrapreds ((x18345))
+:extrapreds ((x18346))
+:extrapreds ((x18347))
+:extrapreds ((x18348))
+:extrapreds ((x18349))
+:extrapreds ((x18350))
+:extrapreds ((x18351))
+:extrapreds ((x18352))
+:extrapreds ((x18353))
+:extrapreds ((x18354))
+:extrapreds ((x18355))
+:extrapreds ((x18356))
+:extrapreds ((x18357))
+:extrapreds ((x18358))
+:extrapreds ((x18359))
+:extrapreds ((x18360))
+:extrapreds ((x18361))
+:extrapreds ((x18362))
+:extrapreds ((x18363))
+:extrapreds ((x18364))
+:extrapreds ((x18365))
+:extrapreds ((x18366))
+:extrapreds ((x18367))
+:extrapreds ((x18368))
+:extrapreds ((x18369))
+:extrapreds ((x18370))
+:extrapreds ((x18371))
+:extrapreds ((x18372))
+:extrapreds ((x18373))
+:extrapreds ((x18374))
+:extrapreds ((x18375))
+:extrapreds ((x18376))
+:extrapreds ((x18377))
+:extrapreds ((x18378))
+:extrapreds ((x18379))
+:extrapreds ((x18380))
+:extrapreds ((x18381))
+:extrapreds ((x18382))
+:extrapreds ((x18383))
+:extrapreds ((x18384))
+:extrapreds ((x18385))
+:extrapreds ((x18386))
+:extrapreds ((x18387))
+:extrapreds ((x18388))
+:extrapreds ((x18389))
+:extrapreds ((x18390))
+:extrapreds ((x18391))
+:extrapreds ((x18392))
+:extrapreds ((x18393))
+:extrapreds ((x18394))
+:extrapreds ((x18395))
+:extrapreds ((x18396))
+:extrapreds ((x18397))
+:extrapreds ((x18398))
+:extrapreds ((x18399))
+:extrapreds ((x18400))
+:extrapreds ((x18401))
+:extrapreds ((x18402))
+:extrapreds ((x18403))
+:extrapreds ((x18404))
+:extrapreds ((x18405))
+:extrapreds ((x18406))
+:extrapreds ((x18407))
+:extrapreds ((x18408))
+:extrapreds ((x18409))
+:extrapreds ((x18410))
+:extrapreds ((x18411))
+:extrapreds ((x18412))
+:extrapreds ((x18413))
+:extrapreds ((x18414))
+:extrapreds ((x18415))
+:extrapreds ((x18416))
+:extrapreds ((x18417))
+:extrapreds ((x18418))
+:extrapreds ((x18419))
+:extrapreds ((x18420))
+:extrapreds ((x18421))
+:extrapreds ((x18422))
+:extrapreds ((x18423))
+:extrapreds ((x18424))
+:extrapreds ((x18425))
+:extrapreds ((x18426))
+:extrapreds ((x18427))
+:extrapreds ((x18428))
+:extrapreds ((x18429))
+:extrapreds ((x18430))
+:extrapreds ((x18431))
+:extrapreds ((x18432))
+:extrapreds ((x18433))
+:extrapreds ((x18434))
+:extrapreds ((x18435))
+:extrapreds ((x18436))
+:extrapreds ((x18437))
+:extrapreds ((x18438))
+:extrapreds ((x18439))
+:extrapreds ((x18440))
+:extrapreds ((x18441))
+:extrapreds ((x18442))
+:extrapreds ((x18443))
+:extrapreds ((x18444))
+:extrapreds ((x18445))
+:extrapreds ((x18446))
+:extrapreds ((x18447))
+:extrapreds ((x18448))
+:extrapreds ((x18449))
+:extrapreds ((x18450))
+:extrapreds ((x18451))
+:extrapreds ((x18452))
+:extrapreds ((x18453))
+:extrapreds ((x18454))
+:extrapreds ((x18455))
+:extrapreds ((x18456))
+:extrapreds ((x18457))
+:extrapreds ((x18458))
+:extrapreds ((x18459))
+:extrapreds ((x18460))
+:extrapreds ((x18461))
+:extrapreds ((x18462))
+:extrapreds ((x18463))
+:extrapreds ((x18464))
+:extrapreds ((x18465))
+:extrapreds ((x18466))
+:extrapreds ((x18467))
+:extrapreds ((x18468))
+:extrapreds ((x18469))
+:extrapreds ((x18470))
+:extrapreds ((x18471))
+:extrapreds ((x18472))
+:extrapreds ((x18473))
+:extrapreds ((x18474))
+:extrapreds ((x18475))
+:extrapreds ((x18476))
+:extrapreds ((x18477))
+:extrapreds ((x18478))
+:extrapreds ((x18479))
+:extrapreds ((x18480))
+:extrapreds ((x18481))
+:extrapreds ((x18482))
+:extrapreds ((x18483))
+:extrapreds ((x18484))
+:extrapreds ((x18485))
+:extrapreds ((x18486))
+:extrapreds ((x18487))
+:extrapreds ((x18488))
+:extrapreds ((x18489))
+:extrapreds ((x18490))
+:extrapreds ((x18491))
+:extrapreds ((x18492))
+:extrapreds ((x18493))
+:extrapreds ((x18494))
+:extrapreds ((x18495))
+:extrapreds ((x18496))
+:extrapreds ((x18497))
+:extrapreds ((x18498))
+:extrapreds ((x18499))
+:extrapreds ((x18500))
+:extrapreds ((x18501))
+:extrapreds ((x18502))
+:extrapreds ((x18503))
+:extrapreds ((x18504))
+:extrapreds ((x18505))
+:extrapreds ((x18506))
+:extrapreds ((x18507))
+:extrapreds ((x18508))
+:extrapreds ((x18509))
+:extrapreds ((x18510))
+:extrapreds ((x18511))
+:extrapreds ((x18512))
+:extrapreds ((x18513))
+:extrapreds ((x18514))
+:extrapreds ((x18515))
+:extrapreds ((x18516))
+:extrapreds ((x18517))
+:extrapreds ((x18518))
+:extrapreds ((x18519))
+:extrapreds ((x18520))
+:extrapreds ((x18521))
+:extrapreds ((x18522))
+:extrapreds ((x18523))
+:extrapreds ((x18524))
+:extrapreds ((x18525))
+:extrapreds ((x18526))
+:extrapreds ((x18527))
+:extrapreds ((x18528))
+:extrapreds ((x18529))
+:extrapreds ((x18530))
+:extrapreds ((x18531))
+:extrapreds ((x18532))
+:extrapreds ((x18533))
+:extrapreds ((x18534))
+:extrapreds ((x18535))
+:extrapreds ((x18536))
+:extrapreds ((x18537))
+:extrapreds ((x18538))
+:extrapreds ((x18539))
+:extrapreds ((x18540))
+:extrapreds ((x18541))
+:extrapreds ((x18542))
+:extrapreds ((x18543))
+:extrapreds ((x18544))
+:extrapreds ((x18545))
+:extrapreds ((x18546))
+:extrapreds ((x18547))
+:extrapreds ((x18548))
+:extrapreds ((x18549))
+:extrapreds ((x18550))
+:extrapreds ((x18551))
+:extrapreds ((x18552))
+:extrapreds ((x18553))
+:extrapreds ((x18554))
+:extrapreds ((x18555))
+:extrapreds ((x18556))
+:extrapreds ((x18557))
+:extrapreds ((x18558))
+:extrapreds ((x18559))
+:extrapreds ((x18560))
+:extrapreds ((x18561))
+:extrapreds ((x18562))
+:extrapreds ((x18563))
+:extrapreds ((x18564))
+:extrapreds ((x18565))
+:extrapreds ((x18566))
+:extrapreds ((x18567))
+:extrapreds ((x18568))
+:extrapreds ((x18569))
+:extrapreds ((x18570))
+:extrapreds ((x18571))
+:extrapreds ((x18572))
+:extrapreds ((x18573))
+:extrapreds ((x18574))
+:extrapreds ((x18575))
+:extrapreds ((x18576))
+:extrapreds ((x18577))
+:extrapreds ((x18578))
+:extrapreds ((x18579))
+:extrapreds ((x18580))
+:extrapreds ((x18581))
+:extrapreds ((x18582))
+:extrapreds ((x18583))
+:extrapreds ((x18584))
+:extrapreds ((x18585))
+:extrapreds ((x18586))
+:extrapreds ((x18587))
+:extrapreds ((x18588))
+:extrapreds ((x18589))
+:extrapreds ((x18590))
+:extrapreds ((x18591))
+:extrapreds ((x18592))
+:extrapreds ((x18593))
+:extrapreds ((x18594))
+:extrapreds ((x18595))
+:extrapreds ((x18596))
+:extrapreds ((x18597))
+:extrapreds ((x18598))
+:extrapreds ((x18599))
+:extrapreds ((x18600))
+:extrapreds ((x18601))
+:extrapreds ((x18602))
+:extrapreds ((x18603))
+:extrapreds ((x18604))
+:extrapreds ((x18605))
+:extrapreds ((x18606))
+:extrapreds ((x18607))
+:extrapreds ((x18608))
+:extrapreds ((x18609))
+:extrapreds ((x18610))
+:extrapreds ((x18611))
+:extrapreds ((x18612))
+:extrapreds ((x18613))
+:extrapreds ((x18614))
+:extrapreds ((x18615))
+:extrapreds ((x18616))
+:extrapreds ((x18617))
+:extrapreds ((x18618))
+:extrapreds ((x18619))
+:extrapreds ((x18620))
+:extrapreds ((x18621))
+:extrapreds ((x18622))
+:extrapreds ((x18623))
+:extrapreds ((x18624))
+:extrapreds ((x18625))
+:extrapreds ((x18626))
+:extrapreds ((x18627))
+:extrapreds ((x18628))
+:extrapreds ((x18629))
+:extrapreds ((x18630))
+:extrapreds ((x18631))
+:extrapreds ((x18632))
+:extrapreds ((x18633))
+:extrapreds ((x18634))
+:extrapreds ((x18635))
+:extrapreds ((x18636))
+:extrapreds ((x18637))
+:extrapreds ((x18638))
+:extrapreds ((x18639))
+:extrapreds ((x18640))
+:extrapreds ((x18641))
+:extrapreds ((x18642))
+:extrapreds ((x18643))
+:extrapreds ((x18644))
+:extrapreds ((x18645))
+:extrapreds ((x18646))
+:extrapreds ((x18647))
+:extrapreds ((x18648))
+:extrapreds ((x18649))
+:extrapreds ((x18650))
+:extrapreds ((x18651))
+:extrapreds ((x18652))
+:extrapreds ((x18653))
+:extrapreds ((x18654))
+:extrapreds ((x18655))
+:extrapreds ((x18656))
+:extrapreds ((x18657))
+:extrapreds ((x18658))
+:extrapreds ((x18659))
+:extrapreds ((x18660))
+:extrapreds ((x18661))
+:extrapreds ((x18662))
+:extrapreds ((x18663))
+:extrapreds ((x18664))
+:extrapreds ((x18665))
+:extrapreds ((x18666))
+:extrapreds ((x18667))
+:extrapreds ((x18668))
+:extrapreds ((x18669))
+:extrapreds ((x18670))
+:extrapreds ((x18671))
+:extrapreds ((x18672))
+:extrapreds ((x18673))
+:extrapreds ((x18674))
+:extrapreds ((x18675))
+:extrapreds ((x18676))
+:extrapreds ((x18677))
+:extrapreds ((x18678))
+:extrapreds ((x18679))
+:extrapreds ((x18680))
+:extrapreds ((x18681))
+:extrapreds ((x18682))
+:extrapreds ((x18683))
+:extrapreds ((x18684))
+:extrapreds ((x18685))
+:extrapreds ((x18686))
+:extrapreds ((x18687))
+:extrapreds ((x18688))
+:extrapreds ((x18689))
+:extrapreds ((x18690))
+:extrapreds ((x18691))
+:extrapreds ((x18692))
+:extrapreds ((x18693))
+:extrapreds ((x18694))
+:extrapreds ((x18695))
+:extrapreds ((x18696))
+:extrapreds ((x18697))
+:extrapreds ((x18698))
+:extrapreds ((x18699))
+:extrapreds ((x18700))
+:extrapreds ((x18701))
+:extrapreds ((x18702))
+:extrapreds ((x18703))
+:extrapreds ((x18704))
+:extrapreds ((x18705))
+:extrapreds ((x18706))
+:extrapreds ((x18707))
+:extrapreds ((x18708))
+:extrapreds ((x18709))
+:extrapreds ((x18710))
+:extrapreds ((x18711))
+:extrapreds ((x18712))
+:extrapreds ((x18713))
+:extrapreds ((x18714))
+:extrapreds ((x18715))
+:extrapreds ((x18716))
+:extrapreds ((x18717))
+:extrapreds ((x18718))
+:extrapreds ((x18719))
+:extrapreds ((x18720))
+:extrapreds ((x18721))
+:extrapreds ((x18722))
+:extrapreds ((x18723))
+:extrapreds ((x18724))
+:extrapreds ((x18725))
+:extrapreds ((x18726))
+:extrapreds ((x18727))
+:extrapreds ((x18728))
+:extrapreds ((x18729))
+:extrapreds ((x18730))
+:extrapreds ((x18731))
+:extrapreds ((x18732))
+:extrapreds ((x18733))
+:extrapreds ((x18734))
+:extrapreds ((x18735))
+:extrapreds ((x18736))
+:extrapreds ((x18737))
+:extrapreds ((x18738))
+:extrapreds ((x18739))
+:extrapreds ((x18740))
+:extrapreds ((x18741))
+:extrapreds ((x18742))
+:extrapreds ((x18743))
+:extrapreds ((x18744))
+:extrapreds ((x18745))
+:extrapreds ((x18746))
+:extrapreds ((x18747))
+:extrapreds ((x18748))
+:extrapreds ((x18749))
+:extrapreds ((x18750))
+:extrapreds ((x18751))
+:extrapreds ((x18752))
+:extrapreds ((x18753))
+:extrapreds ((x18754))
+:extrapreds ((x18755))
+:extrapreds ((x18756))
+:extrapreds ((x18757))
+:extrapreds ((x18758))
+:extrapreds ((x18759))
+:extrapreds ((x18760))
+:extrapreds ((x18761))
+:extrapreds ((x18762))
+:extrapreds ((x18763))
+:extrapreds ((x18764))
+:extrapreds ((x18765))
+:extrapreds ((x18766))
+:extrapreds ((x18767))
+:extrapreds ((x18768))
+:extrapreds ((x18769))
+:extrapreds ((x18770))
+:extrapreds ((x18771))
+:extrapreds ((x18772))
+:extrapreds ((x18773))
+:extrapreds ((x18774))
+:extrapreds ((x18775))
+:extrapreds ((x18776))
+:extrapreds ((x18777))
+:extrapreds ((x18778))
+:extrapreds ((x18779))
+:extrapreds ((x18780))
+:extrapreds ((x18781))
+:extrapreds ((x18782))
+:extrapreds ((x18783))
+:extrapreds ((x18784))
+:extrapreds ((x18785))
+:extrapreds ((x18786))
+:extrapreds ((x18787))
+:extrapreds ((x18788))
+:extrapreds ((x18789))
+:extrapreds ((x18790))
+:extrapreds ((x18791))
+:extrapreds ((x18792))
+:extrapreds ((x18793))
+:extrapreds ((x18794))
+:extrapreds ((x18795))
+:extrapreds ((x18796))
+:extrapreds ((x18797))
+:extrapreds ((x18798))
+:extrapreds ((x18799))
+:extrapreds ((x18800))
+:extrapreds ((x18801))
+:extrapreds ((x18802))
+:extrapreds ((x18803))
+:extrapreds ((x18804))
+:extrapreds ((x18805))
+:extrapreds ((x18806))
+:extrapreds ((x18807))
+:extrapreds ((x18808))
+:extrapreds ((x18809))
+:extrapreds ((x18810))
+:extrapreds ((x18811))
+:extrapreds ((x18812))
+:extrapreds ((x18813))
+:extrapreds ((x18814))
+:extrapreds ((x18815))
+:extrapreds ((x18816))
+:extrapreds ((x18817))
+:extrapreds ((x18818))
+:extrapreds ((x18819))
+:extrapreds ((x18820))
+:extrapreds ((x18821))
+:extrapreds ((x18822))
+:extrapreds ((x18823))
+:extrapreds ((x18824))
+:extrapreds ((x18825))
+:extrapreds ((x18826))
+:extrapreds ((x18827))
+:extrapreds ((x18828))
+:extrapreds ((x18829))
+:extrapreds ((x18830))
+:extrapreds ((x18831))
+:extrapreds ((x18832))
+:extrapreds ((x18833))
+:extrapreds ((x18834))
+:extrapreds ((x18835))
+:extrapreds ((x18836))
+:extrapreds ((x18837))
+:extrapreds ((x18838))
+:extrapreds ((x18839))
+:extrapreds ((x18840))
+:extrapreds ((x18841))
+:extrapreds ((x18842))
+:extrapreds ((x18843))
+:extrapreds ((x18844))
+:extrapreds ((x18845))
+:extrapreds ((x18846))
+:extrapreds ((x18847))
+:extrapreds ((x18848))
+:extrapreds ((x18849))
+:extrapreds ((x18850))
+:extrapreds ((x18851))
+:extrapreds ((x18852))
+:extrapreds ((x18853))
+:extrapreds ((x18854))
+:extrapreds ((x18855))
+:extrapreds ((x18856))
+:extrapreds ((x18857))
+:extrapreds ((x18858))
+:extrapreds ((x18859))
+:extrapreds ((x18860))
+:extrapreds ((x18861))
+:extrapreds ((x18862))
+:extrapreds ((x18863))
+:extrapreds ((x18864))
+:extrapreds ((x18865))
+:extrapreds ((x18866))
+:extrapreds ((x18867))
+:extrapreds ((x18868))
+:extrapreds ((x18869))
+:extrapreds ((x18870))
+:extrapreds ((x18871))
+:extrapreds ((x18872))
+:extrapreds ((x18873))
+:extrapreds ((x18874))
+:extrapreds ((x18875))
+:extrapreds ((x18876))
+:extrapreds ((x18877))
+:extrapreds ((x18878))
+:extrapreds ((x18879))
+:extrapreds ((x18880))
+:extrapreds ((x18881))
+:extrapreds ((x18882))
+:extrapreds ((x18883))
+:extrapreds ((x18884))
+:extrapreds ((x18885))
+:extrapreds ((x18886))
+:extrapreds ((x18887))
+:extrapreds ((x18888))
+:extrapreds ((x18889))
+:extrapreds ((x18890))
+:extrapreds ((x18891))
+:extrapreds ((x18892))
+:extrapreds ((x18893))
+:extrapreds ((x18894))
+:extrapreds ((x18895))
+:extrapreds ((x18896))
+:extrapreds ((x18897))
+:extrapreds ((x18898))
+:extrapreds ((x18899))
+:extrapreds ((x18900))
+:extrapreds ((x18901))
+:extrapreds ((x18902))
+:extrapreds ((x18903))
+:extrapreds ((x18904))
+:extrapreds ((x18905))
+:extrapreds ((x18906))
+:extrapreds ((x18907))
+:extrapreds ((x18908))
+:extrapreds ((x18909))
+:extrapreds ((x18910))
+:extrapreds ((x18911))
+:extrapreds ((x18912))
+:extrapreds ((x18913))
+:extrapreds ((x18914))
+:extrapreds ((x18915))
+:extrapreds ((x18916))
+:extrapreds ((x18917))
+:extrapreds ((x18918))
+:extrapreds ((x18919))
+:extrapreds ((x18920))
+:extrapreds ((x18921))
+:extrapreds ((x18922))
+:extrapreds ((x18923))
+:extrapreds ((x18924))
+:extrapreds ((x18925))
+:extrapreds ((x18926))
+:extrapreds ((x18927))
+:extrapreds ((x18928))
+:extrapreds ((x18929))
+:extrapreds ((x18930))
+:extrapreds ((x18931))
+:extrapreds ((x18932))
+:extrapreds ((x18933))
+:extrapreds ((x18934))
+:extrapreds ((x18935))
+:extrapreds ((x18936))
+:extrapreds ((x18937))
+:extrapreds ((x18938))
+:extrapreds ((x18939))
+:extrapreds ((x18940))
+:extrapreds ((x18941))
+:extrapreds ((x18942))
+:extrapreds ((x18943))
+:extrapreds ((x18944))
+:extrapreds ((x18945))
+:extrapreds ((x18946))
+:extrapreds ((x18947))
+:extrapreds ((x18948))
+:extrapreds ((x18949))
+:extrapreds ((x18950))
+:extrapreds ((x18951))
+:extrapreds ((x18952))
+:extrapreds ((x18953))
+:extrapreds ((x18954))
+:extrapreds ((x18955))
+:extrapreds ((x18956))
+:extrapreds ((x18957))
+:extrapreds ((x18958))
+:extrapreds ((x18959))
+:extrapreds ((x18960))
+:extrapreds ((x18961))
+:extrapreds ((x18962))
+:extrapreds ((x18963))
+:extrapreds ((x18964))
+:extrapreds ((x18965))
+:extrapreds ((x18966))
+:extrapreds ((x18967))
+:extrapreds ((x18968))
+:extrapreds ((x18969))
+:extrapreds ((x18970))
+:extrapreds ((x18971))
+:extrapreds ((x18972))
+:extrapreds ((x18973))
+:extrapreds ((x18974))
+:extrapreds ((x18975))
+:extrapreds ((x18976))
+:extrapreds ((x18977))
+:extrapreds ((x18978))
+:extrapreds ((x18979))
+:extrapreds ((x18980))
+:extrapreds ((x18981))
+:extrapreds ((x18982))
+:extrapreds ((x18983))
+:extrapreds ((x18984))
+:extrapreds ((x18985))
+:extrapreds ((x18986))
+:extrapreds ((x18987))
+:extrapreds ((x18988))
+:extrapreds ((x18989))
+:extrapreds ((x18990))
+:extrapreds ((x18991))
+:extrapreds ((x18992))
+:extrapreds ((x18993))
+:extrapreds ((x18994))
+:extrapreds ((x18995))
+:extrapreds ((x18996))
+:extrapreds ((x18997))
+:extrapreds ((x18998))
+:extrapreds ((x18999))
+:extrapreds ((x19000))
+:extrapreds ((x19001))
+:extrapreds ((x19002))
+:extrapreds ((x19003))
+:extrapreds ((x19004))
+:extrapreds ((x19005))
+:extrapreds ((x19006))
+:extrapreds ((x19007))
+:extrapreds ((x19008))
+:extrapreds ((x19009))
+:extrapreds ((x19010))
+:extrapreds ((x19011))
+:extrapreds ((x19012))
+:extrapreds ((x19013))
+:extrapreds ((x19014))
+:extrapreds ((x19015))
+:extrapreds ((x19016))
+:extrapreds ((x19017))
+:extrapreds ((x19018))
+:extrapreds ((x19019))
+:extrapreds ((x19020))
+:extrapreds ((x19021))
+:extrapreds ((x19022))
+:extrapreds ((x19023))
+:extrapreds ((x19024))
+:extrapreds ((x19025))
+:extrapreds ((x19026))
+:extrapreds ((x19027))
+:extrapreds ((x19028))
+:extrapreds ((x19029))
+:extrapreds ((x19030))
+:extrapreds ((x19031))
+:extrapreds ((x19032))
+:extrapreds ((x19033))
+:extrapreds ((x19034))
+:extrapreds ((x19035))
+:extrapreds ((x19036))
+:extrapreds ((x19037))
+:extrapreds ((x19038))
+:extrapreds ((x19039))
+:extrapreds ((x19040))
+:extrapreds ((x19041))
+:extrapreds ((x19042))
+:extrapreds ((x19043))
+:extrapreds ((x19044))
+:extrapreds ((x19045))
+:extrapreds ((x19046))
+:extrapreds ((x19047))
+:extrapreds ((x19048))
+:extrapreds ((x19049))
+:extrapreds ((x19050))
+:extrapreds ((x19051))
+:extrapreds ((x19052))
+:extrapreds ((x19053))
+:extrapreds ((x19054))
+:extrapreds ((x19055))
+:extrapreds ((x19056))
+:extrapreds ((x19057))
+:extrapreds ((x19058))
+:extrapreds ((x19059))
+:extrapreds ((x19060))
+:extrapreds ((x19061))
+:extrapreds ((x19062))
+:extrapreds ((x19063))
+:extrapreds ((x19064))
+:extrapreds ((x19065))
+:extrapreds ((x19066))
+:extrapreds ((x19067))
+:extrapreds ((x19068))
+:extrapreds ((x19069))
+:extrapreds ((x19070))
+:extrapreds ((x19071))
+:extrapreds ((x19072))
+:extrapreds ((x19073))
+:extrapreds ((x19074))
+:extrapreds ((x19075))
+:extrapreds ((x19076))
+:extrapreds ((x19077))
+:extrapreds ((x19078))
+:extrapreds ((x19079))
+:extrapreds ((x19080))
+:extrapreds ((x19081))
+:extrapreds ((x19082))
+:extrapreds ((x19083))
+:extrapreds ((x19084))
+:extrapreds ((x19085))
+:extrapreds ((x19086))
+:extrapreds ((x19087))
+:extrapreds ((x19088))
+:extrapreds ((x19089))
+:extrapreds ((x19090))
+:extrapreds ((x19091))
+:extrapreds ((x19092))
+:extrapreds ((x19093))
+:extrapreds ((x19094))
+:extrapreds ((x19095))
+:extrapreds ((x19096))
+:extrapreds ((x19097))
+:extrapreds ((x19098))
+:extrapreds ((x19099))
+:extrapreds ((x19100))
+:extrapreds ((x19101))
+:extrapreds ((x19102))
+:extrapreds ((x19103))
+:extrapreds ((x19104))
+:extrapreds ((x19105))
+:extrapreds ((x19106))
+:extrapreds ((x19107))
+:extrapreds ((x19108))
+:extrapreds ((x19109))
+:extrapreds ((x19110))
+:extrapreds ((x19111))
+:extrapreds ((x19112))
+:extrapreds ((x19113))
+:extrapreds ((x19114))
+:extrapreds ((x19115))
+:extrapreds ((x19116))
+:extrapreds ((x19117))
+:extrapreds ((x19118))
+:extrapreds ((x19119))
+:extrapreds ((x19120))
+:extrapreds ((x19121))
+:extrapreds ((x19122))
+:extrapreds ((x19123))
+:extrapreds ((x19124))
+:extrapreds ((x19125))
+:extrapreds ((x19126))
+:extrapreds ((x19127))
+:extrapreds ((x19128))
+:extrapreds ((x19129))
+:extrapreds ((x19130))
+:extrapreds ((x19131))
+:extrapreds ((x19132))
+:extrapreds ((x19133))
+:extrapreds ((x19134))
+:extrapreds ((x19135))
+:extrapreds ((x19136))
+:extrapreds ((x19137))
+:extrapreds ((x19138))
+:extrapreds ((x19139))
+:extrapreds ((x19140))
+:extrapreds ((x19141))
+:extrapreds ((x19142))
+:extrapreds ((x19143))
+:extrapreds ((x19144))
+:extrapreds ((x19145))
+:extrapreds ((x19146))
+:extrapreds ((x19147))
+:extrapreds ((x19148))
+:extrapreds ((x19149))
+:extrapreds ((x19150))
+:extrapreds ((x19151))
+:extrapreds ((x19152))
+:extrapreds ((x19153))
+:extrapreds ((x19154))
+:extrapreds ((x19155))
+:extrapreds ((x19156))
+:extrapreds ((x19157))
+:extrapreds ((x19158))
+:extrapreds ((x19159))
+:extrapreds ((x19160))
+:extrapreds ((x19161))
+:extrapreds ((x19162))
+:extrapreds ((x19163))
+:extrapreds ((x19164))
+:extrapreds ((x19165))
+:extrapreds ((x19166))
+:extrapreds ((x19167))
+:extrapreds ((x19168))
+:extrapreds ((x19169))
+:extrapreds ((x19170))
+:extrapreds ((x19171))
+:extrapreds ((x19172))
+:extrapreds ((x19173))
+:extrapreds ((x19174))
+:extrapreds ((x19175))
+:extrapreds ((x19176))
+:extrapreds ((x19177))
+:extrapreds ((x19178))
+:extrapreds ((x19179))
+:extrapreds ((x19180))
+:extrapreds ((x19181))
+:extrapreds ((x19182))
+:extrapreds ((x19183))
+:extrapreds ((x19184))
+:extrapreds ((x19185))
+:extrapreds ((x19186))
+:extrapreds ((x19187))
+:extrapreds ((x19188))
+:extrapreds ((x19189))
+:extrapreds ((x19190))
+:extrapreds ((x19191))
+:extrapreds ((x19192))
+:extrapreds ((x19193))
+:extrapreds ((x19194))
+:extrapreds ((x19195))
+:extrapreds ((x19196))
+:extrapreds ((x19197))
+:extrapreds ((x19198))
+:extrapreds ((x19199))
+:extrapreds ((x19200))
+:extrapreds ((x19201))
+:extrapreds ((x19202))
+:extrapreds ((x19203))
+:extrapreds ((x19204))
+:extrapreds ((x19205))
+:extrapreds ((x19206))
+:extrapreds ((x19207))
+:extrapreds ((x19208))
+:extrapreds ((x19209))
+:extrapreds ((x19210))
+:extrapreds ((x19211))
+:extrapreds ((x19212))
+:extrapreds ((x19213))
+:extrapreds ((x19214))
+:extrapreds ((x19215))
+:extrapreds ((x19216))
+:extrapreds ((x19217))
+:extrapreds ((x19218))
+:extrapreds ((x19219))
+:extrapreds ((x19220))
+:extrapreds ((x19221))
+:extrapreds ((x19222))
+:extrapreds ((x19223))
+:extrapreds ((x19224))
+:extrapreds ((x19225))
+:extrapreds ((x19226))
+:extrapreds ((x19227))
+:extrapreds ((x19228))
+:extrapreds ((x19229))
+:extrapreds ((x19230))
+:extrapreds ((x19231))
+:extrapreds ((x19232))
+:extrapreds ((x19233))
+:extrapreds ((x19234))
+:extrapreds ((x19235))
+:extrapreds ((x19236))
+:extrapreds ((x19237))
+:extrapreds ((x19238))
+:extrapreds ((x19239))
+:extrapreds ((x19240))
+:extrapreds ((x19241))
+:extrapreds ((x19242))
+:extrapreds ((x19243))
+:extrapreds ((x19244))
+:extrapreds ((x19245))
+:extrapreds ((x19246))
+:extrapreds ((x19247))
+:extrapreds ((x19248))
+:extrapreds ((x19249))
+:extrapreds ((x19250))
+:extrapreds ((x19251))
+:extrapreds ((x19252))
+:extrapreds ((x19253))
+:extrapreds ((x19254))
+:extrapreds ((x19255))
+:extrapreds ((x19256))
+:extrapreds ((x19257))
+:extrapreds ((x19258))
+:extrapreds ((x19259))
+:extrapreds ((x19260))
+:extrapreds ((x19261))
+:extrapreds ((x19262))
+:extrapreds ((x19263))
+:extrapreds ((x19264))
+:extrapreds ((x19265))
+:extrapreds ((x19266))
+:extrapreds ((x19267))
+:extrapreds ((x19268))
+:extrapreds ((x19269))
+:extrapreds ((x19270))
+:extrapreds ((x19271))
+:extrapreds ((x19272))
+:extrapreds ((x19273))
+:extrapreds ((x19274))
+:extrapreds ((x19275))
+:extrapreds ((x19276))
+:extrapreds ((x19277))
+:extrapreds ((x19278))
+:extrapreds ((x19279))
+:extrapreds ((x19280))
+:extrapreds ((x19281))
+:extrapreds ((x19282))
+:extrapreds ((x19283))
+:extrapreds ((x19284))
+:extrapreds ((x19285))
+:extrapreds ((x19286))
+:extrapreds ((x19287))
+:extrapreds ((x19288))
+:extrapreds ((x19289))
+:extrapreds ((x19290))
+:extrapreds ((x19291))
+:extrapreds ((x19292))
+:extrapreds ((x19293))
+:extrapreds ((x19294))
+:extrapreds ((x19295))
+:extrapreds ((x19296))
+:extrapreds ((x19297))
+:extrapreds ((x19298))
+:extrapreds ((x19299))
+:extrapreds ((x19300))
+:extrapreds ((x19301))
+:extrapreds ((x19302))
+:extrapreds ((x19303))
+:extrapreds ((x19304))
+:extrapreds ((x19305))
+:extrapreds ((x19306))
+:extrapreds ((x19307))
+:extrapreds ((x19308))
+:extrapreds ((x19309))
+:extrapreds ((x19310))
+:extrapreds ((x19311))
+:extrapreds ((x19312))
+:extrapreds ((x19313))
+:extrapreds ((x19314))
+:extrapreds ((x19315))
+:extrapreds ((x19316))
+:extrapreds ((x19317))
+:extrapreds ((x19318))
+:extrapreds ((x19319))
+:extrapreds ((x19320))
+:extrapreds ((x19321))
+:extrapreds ((x19322))
+:extrapreds ((x19323))
+:extrapreds ((x19324))
+:extrapreds ((x19325))
+:extrapreds ((x19326))
+:extrapreds ((x19327))
+:extrapreds ((x19328))
+:extrapreds ((x19329))
+:extrapreds ((x19330))
+:extrapreds ((x19331))
+:extrapreds ((x19332))
+:extrapreds ((x19333))
+:extrapreds ((x19334))
+:extrapreds ((x19335))
+:extrapreds ((x19336))
+:extrapreds ((x19337))
+:extrapreds ((x19338))
+:extrapreds ((x19339))
+:extrapreds ((x19340))
+:extrapreds ((x19341))
+:extrapreds ((x19342))
+:extrapreds ((x19343))
+:extrapreds ((x19344))
+:extrapreds ((x19345))
+:extrapreds ((x19346))
+:extrapreds ((x19347))
+:extrapreds ((x19348))
+:extrapreds ((x19349))
+:extrapreds ((x19350))
+:extrapreds ((x19351))
+:extrapreds ((x19352))
+:extrapreds ((x19353))
+:extrapreds ((x19354))
+:extrapreds ((x19355))
+:extrapreds ((x19356))
+:extrapreds ((x19357))
+:extrapreds ((x19358))
+:extrapreds ((x19359))
+:extrapreds ((x19360))
+:extrapreds ((x19361))
+:extrapreds ((x19362))
+:extrapreds ((x19363))
+:extrapreds ((x19364))
+:extrapreds ((x19365))
+:extrapreds ((x19366))
+:extrapreds ((x19367))
+:extrapreds ((x19368))
+:extrapreds ((x19369))
+:extrapreds ((x19370))
+:extrapreds ((x19371))
+:extrapreds ((x19372))
+:extrapreds ((x19373))
+:extrapreds ((x19374))
+:extrapreds ((x19375))
+:extrapreds ((x19376))
+:extrapreds ((x19377))
+:extrapreds ((x19378))
+:extrapreds ((x19379))
+:extrapreds ((x19380))
+:extrapreds ((x19381))
+:extrapreds ((x19382))
+:extrapreds ((x19383))
+:extrapreds ((x19384))
+:extrapreds ((x19385))
+:extrapreds ((x19386))
+:extrapreds ((x19387))
+:extrapreds ((x19388))
+:extrapreds ((x19389))
+:extrapreds ((x19390))
+:extrapreds ((x19391))
+:extrapreds ((x19392))
+:extrapreds ((x19393))
+:extrapreds ((x19394))
+:extrapreds ((x19395))
+:extrapreds ((x19396))
+:extrapreds ((x19397))
+:extrapreds ((x19398))
+:extrapreds ((x19399))
+:extrapreds ((x19400))
+:extrapreds ((x19401))
+:extrapreds ((x19402))
+:extrapreds ((x19403))
+:extrapreds ((x19404))
+:extrapreds ((x19405))
+:extrapreds ((x19406))
+:extrapreds ((x19407))
+:extrapreds ((x19408))
+:extrapreds ((x19409))
+:extrapreds ((x19410))
+:extrapreds ((x19411))
+:extrapreds ((x19412))
+:extrapreds ((x19413))
+:extrapreds ((x19414))
+:extrapreds ((x19415))
+:extrapreds ((x19416))
+:extrapreds ((x19417))
+:extrapreds ((x19418))
+:extrapreds ((x19419))
+:extrapreds ((x19420))
+:extrapreds ((x19421))
+:extrapreds ((x19422))
+:extrapreds ((x19423))
+:extrapreds ((x19424))
+:extrapreds ((x19425))
+:extrapreds ((x19426))
+:extrapreds ((x19427))
+:extrapreds ((x19428))
+:extrapreds ((x19429))
+:extrapreds ((x19430))
+:extrapreds ((x19431))
+:extrapreds ((x19432))
+:extrapreds ((x19433))
+:extrapreds ((x19434))
+:extrapreds ((x19435))
+:extrapreds ((x19436))
+:extrapreds ((x19437))
+:extrapreds ((x19438))
+:extrapreds ((x19439))
+:extrapreds ((x19440))
+:extrapreds ((x19441))
+:extrapreds ((x19442))
+:extrapreds ((x19443))
+:extrapreds ((x19444))
+:extrapreds ((x19445))
+:extrapreds ((x19446))
+:extrapreds ((x19447))
+:extrapreds ((x19448))
+:extrapreds ((x19449))
+:extrapreds ((x19450))
+:extrapreds ((x19451))
+:extrapreds ((x19452))
+:extrapreds ((x19453))
+:extrapreds ((x19454))
+:extrapreds ((x19455))
+:extrapreds ((x19456))
+:extrapreds ((x19457))
+:extrapreds ((x19458))
+:extrapreds ((x19459))
+:extrapreds ((x19460))
+:extrapreds ((x19461))
+:extrapreds ((x19462))
+:extrapreds ((x19463))
+:extrapreds ((x19464))
+:extrapreds ((x19465))
+:extrapreds ((x19466))
+:extrapreds ((x19467))
+:extrapreds ((x19468))
+:extrapreds ((x19469))
+:extrapreds ((x19470))
+:extrapreds ((x19471))
+:extrapreds ((x19472))
+:extrapreds ((x19473))
+:extrapreds ((x19474))
+:extrapreds ((x19475))
+:extrapreds ((x19476))
+:extrapreds ((x19477))
+:extrapreds ((x19478))
+:extrapreds ((x19479))
+:extrapreds ((x19480))
+:extrapreds ((x19481))
+:extrapreds ((x19482))
+:extrapreds ((x19483))
+:extrapreds ((x19484))
+:extrapreds ((x19485))
+:extrapreds ((x19486))
+:extrapreds ((x19487))
+:extrapreds ((x19488))
+:extrapreds ((x19489))
+:extrapreds ((x19490))
+:extrapreds ((x19491))
+:extrapreds ((x19492))
+:extrapreds ((x19493))
+:extrapreds ((x19494))
+:extrapreds ((x19495))
+:extrapreds ((x19496))
+:extrapreds ((x19497))
+:extrapreds ((x19498))
+:extrapreds ((x19499))
+:extrapreds ((x19500))
+:extrapreds ((x19501))
+:extrapreds ((x19502))
+:extrapreds ((x19503))
+:extrapreds ((x19504))
+:extrapreds ((x19505))
+:extrapreds ((x19506))
+:extrapreds ((x19507))
+:extrapreds ((x19508))
+:extrapreds ((x19509))
+:extrapreds ((x19510))
+:extrapreds ((x19511))
+:extrapreds ((x19512))
+:extrapreds ((x19513))
+:extrapreds ((x19514))
+:extrapreds ((x19515))
+:extrapreds ((x19516))
+:extrapreds ((x19517))
+:extrapreds ((x19518))
+:extrapreds ((x19519))
+:extrapreds ((x19520))
+:extrapreds ((x19521))
+:extrapreds ((x19522))
+:extrapreds ((x19523))
+:extrapreds ((x19524))
+:extrapreds ((x19525))
+:extrapreds ((x19526))
+:extrapreds ((x19527))
+:extrapreds ((x19528))
+:extrapreds ((x19529))
+:extrapreds ((x19530))
+:extrapreds ((x19531))
+:extrapreds ((x19532))
+:extrapreds ((x19533))
+:extrapreds ((x19534))
+:extrapreds ((x19535))
+:extrapreds ((x19536))
+:extrapreds ((x19537))
+:extrapreds ((x19538))
+:extrapreds ((x19539))
+:extrapreds ((x19540))
+:extrapreds ((x19541))
+:extrapreds ((x19542))
+:extrapreds ((x19543))
+:extrapreds ((x19544))
+:extrapreds ((x19545))
+:extrapreds ((x19546))
+:extrapreds ((x19547))
+:extrapreds ((x19548))
+:extrapreds ((x19549))
+:extrapreds ((x19550))
+:extrapreds ((x19551))
+:extrapreds ((x19552))
+:extrapreds ((x19553))
+:extrapreds ((x19554))
+:extrapreds ((x19555))
+:extrapreds ((x19556))
+:extrapreds ((x19557))
+:extrapreds ((x19558))
+:extrapreds ((x19559))
+:extrapreds ((x19560))
+:extrapreds ((x19561))
+:extrapreds ((x19562))
+:extrapreds ((x19563))
+:extrapreds ((x19564))
+:extrapreds ((x19565))
+:extrapreds ((x19566))
+:extrapreds ((x19567))
+:extrapreds ((x19568))
+:extrapreds ((x19569))
+:extrapreds ((x19570))
+:extrapreds ((x19571))
+:extrapreds ((x19572))
+:extrapreds ((x19573))
+:extrapreds ((x19574))
+:extrapreds ((x19575))
+:extrapreds ((x19576))
+:extrapreds ((x19577))
+:extrapreds ((x19578))
+:extrapreds ((x19579))
+:extrapreds ((x19580))
+:extrapreds ((x19581))
+:extrapreds ((x19582))
+:extrapreds ((x19583))
+:extrapreds ((x19584))
+:extrapreds ((x19585))
+:extrapreds ((x19586))
+:extrapreds ((x19587))
+:extrapreds ((x19588))
+:extrapreds ((x19589))
+:extrapreds ((x19590))
+:extrapreds ((x19591))
+:extrapreds ((x19592))
+:extrapreds ((x19593))
+:extrapreds ((x19594))
+:extrapreds ((x19595))
+:extrapreds ((x19596))
+:extrapreds ((x19597))
+:extrapreds ((x19598))
+:extrapreds ((x19599))
+:extrapreds ((x19600))
+:extrapreds ((x19601))
+:extrapreds ((x19602))
+:extrapreds ((x19603))
+:extrapreds ((x19604))
+:extrapreds ((x19605))
+:extrapreds ((x19606))
+:extrapreds ((x19607))
+:extrapreds ((x19608))
+:extrapreds ((x19609))
+:extrapreds ((x19610))
+:extrapreds ((x19611))
+:extrapreds ((x19612))
+:extrapreds ((x19613))
+:extrapreds ((x19614))
+:extrapreds ((x19615))
+:extrapreds ((x19616))
+:extrapreds ((x19617))
+:extrapreds ((x19618))
+:extrapreds ((x19619))
+:extrapreds ((x19620))
+:extrapreds ((x19621))
+:extrapreds ((x19622))
+:extrapreds ((x19623))
+:extrapreds ((x19624))
+:extrapreds ((x19625))
+:extrapreds ((x19626))
+:extrapreds ((x19627))
+:extrapreds ((x19628))
+:extrapreds ((x19629))
+:extrapreds ((x19630))
+:extrapreds ((x19631))
+:extrapreds ((x19632))
+:extrapreds ((x19633))
+:extrapreds ((x19634))
+:extrapreds ((x19635))
+:extrapreds ((x19636))
+:extrapreds ((x19637))
+:extrapreds ((x19638))
+:extrapreds ((x19639))
+:extrapreds ((x19640))
+:extrapreds ((x19641))
+:extrapreds ((x19642))
+:extrapreds ((x19643))
+:extrapreds ((x19644))
+:extrapreds ((x19645))
+:extrapreds ((x19646))
+:extrapreds ((x19647))
+:extrapreds ((x19648))
+:extrapreds ((x19649))
+:extrapreds ((x19650))
+:extrapreds ((x19651))
+:extrapreds ((x19652))
+:extrapreds ((x19653))
+:extrapreds ((x19654))
+:extrapreds ((x19655))
+:extrapreds ((x19656))
+:extrapreds ((x19657))
+:extrapreds ((x19658))
+:extrapreds ((x19659))
+:extrapreds ((x19660))
+:extrapreds ((x19661))
+:extrapreds ((x19662))
+:extrapreds ((x19663))
+:extrapreds ((x19664))
+:extrapreds ((x19665))
+:extrapreds ((x19666))
+:extrapreds ((x19667))
+:extrapreds ((x19668))
+:extrapreds ((x19669))
+:extrapreds ((x19670))
+:extrapreds ((x19671))
+:extrapreds ((x19672))
+:extrapreds ((x19673))
+:extrapreds ((x19674))
+:extrapreds ((x19675))
+:extrapreds ((x19676))
+:extrapreds ((x19677))
+:extrapreds ((x19678))
+:extrapreds ((x19679))
+:extrapreds ((x19680))
+:extrapreds ((x19681))
+:extrapreds ((x19682))
+:extrapreds ((x19683))
+:extrapreds ((x19684))
+:extrapreds ((x19685))
+:extrapreds ((x19686))
+:extrapreds ((x19687))
+:extrapreds ((x19688))
+:extrapreds ((x19689))
+:extrapreds ((x19690))
+:extrapreds ((x19691))
+:extrapreds ((x19692))
+:extrapreds ((x19693))
+:extrapreds ((x19694))
+:extrapreds ((x19695))
+:extrapreds ((x19696))
+:extrapreds ((x19697))
+:extrapreds ((x19698))
+:extrapreds ((x19699))
+:extrapreds ((x19700))
+:extrapreds ((x19701))
+:extrapreds ((x19702))
+:extrapreds ((x19703))
+:extrapreds ((x19704))
+:extrapreds ((x19705))
+:extrapreds ((x19706))
+:extrapreds ((x19707))
+:extrapreds ((x19708))
+:extrapreds ((x19709))
+:extrapreds ((x19710))
+:extrapreds ((x19711))
+:extrapreds ((x19712))
+:extrapreds ((x19713))
+:extrapreds ((x19714))
+:extrapreds ((x19715))
+:extrapreds ((x19716))
+:extrapreds ((x19717))
+:extrapreds ((x19718))
+:extrapreds ((x19719))
+:extrapreds ((x19720))
+:extrapreds ((x19721))
+:extrapreds ((x19722))
+:extrapreds ((x19723))
+:extrapreds ((x19724))
+:extrapreds ((x19725))
+:extrapreds ((x19726))
+:extrapreds ((x19727))
+:extrapreds ((x19728))
+:extrapreds ((x19729))
+:extrapreds ((x19730))
+:extrapreds ((x19731))
+:extrapreds ((x19732))
+:extrapreds ((x19733))
+:extrapreds ((x19734))
+:extrapreds ((x19735))
+:extrapreds ((x19736))
+:extrapreds ((x19737))
+:extrapreds ((x19738))
+:extrapreds ((x19739))
+:extrapreds ((x19740))
+:extrapreds ((x19741))
+:extrapreds ((x19742))
+:extrapreds ((x19743))
+:extrapreds ((x19744))
+:extrapreds ((x19745))
+:extrapreds ((x19746))
+:extrapreds ((x19747))
+:extrapreds ((x19748))
+:extrapreds ((x19749))
+:extrapreds ((x19750))
+:extrapreds ((x19751))
+:extrapreds ((x19752))
+:extrapreds ((x19753))
+:extrapreds ((x19754))
+:extrapreds ((x19755))
+:extrapreds ((x19756))
+:extrapreds ((x19757))
+:extrapreds ((x19758))
+:extrapreds ((x19759))
+:extrapreds ((x19760))
+:extrapreds ((x19761))
+:extrapreds ((x19762))
+:extrapreds ((x19763))
+:extrapreds ((x19764))
+:extrapreds ((x19765))
+:extrapreds ((x19766))
+:extrapreds ((x19767))
+:extrapreds ((x19768))
+:extrapreds ((x19769))
+:extrapreds ((x19770))
+:extrapreds ((x19771))
+:extrapreds ((x19772))
+:extrapreds ((x19773))
+:extrapreds ((x19774))
+:extrapreds ((x19775))
+:extrapreds ((x19776))
+:extrapreds ((x19777))
+:extrapreds ((x19778))
+:extrapreds ((x19779))
+:extrapreds ((x19780))
+:extrapreds ((x19781))
+:extrapreds ((x19782))
+:extrapreds ((x19783))
+:extrapreds ((x19784))
+:extrapreds ((x19785))
+:extrapreds ((x19786))
+:extrapreds ((x19787))
+:extrapreds ((x19788))
+:extrapreds ((x19789))
+:extrapreds ((x19790))
+:extrapreds ((x19791))
+:extrapreds ((x19792))
+:extrapreds ((x19793))
+:extrapreds ((x19794))
+:extrapreds ((x19795))
+:extrapreds ((x19796))
+:extrapreds ((x19797))
+:extrapreds ((x19798))
+:extrapreds ((x19799))
+:extrapreds ((x19800))
+:extrapreds ((x19801))
+:extrapreds ((x19802))
+:extrapreds ((x19803))
+:extrapreds ((x19804))
+:extrapreds ((x19805))
+:extrapreds ((x19806))
+:extrapreds ((x19807))
+:extrapreds ((x19808))
+:extrapreds ((x19809))
+:extrapreds ((x19810))
+:extrapreds ((x19811))
+:extrapreds ((x19812))
+:extrapreds ((x19813))
+:extrapreds ((x19814))
+:extrapreds ((x19815))
+:extrapreds ((x19816))
+:extrapreds ((x19817))
+:extrapreds ((x19818))
+:extrapreds ((x19819))
+:extrapreds ((x19820))
+:extrapreds ((x19821))
+:extrapreds ((x19822))
+:extrapreds ((x19823))
+:extrapreds ((x19824))
+:extrapreds ((x19825))
+:extrapreds ((x19826))
+:extrapreds ((x19827))
+:extrapreds ((x19828))
+:extrapreds ((x19829))
+:extrapreds ((x19830))
+:extrapreds ((x19831))
+:extrapreds ((x19832))
+:extrapreds ((x19833))
+:extrapreds ((x19834))
+:extrapreds ((x19835))
+:extrapreds ((x19836))
+:extrapreds ((x19837))
+:extrapreds ((x19838))
+:extrapreds ((x19839))
+:extrapreds ((x19840))
+:extrapreds ((x19841))
+:extrapreds ((x19842))
+:extrapreds ((x19843))
+:extrapreds ((x19844))
+:extrapreds ((x19845))
+:extrapreds ((x19846))
+:extrapreds ((x19847))
+:extrapreds ((x19848))
+:extrapreds ((x19849))
+:extrapreds ((x19850))
+:extrapreds ((x19851))
+:extrapreds ((x19852))
+:extrapreds ((x19853))
+:extrapreds ((x19854))
+:extrapreds ((x19855))
+:extrapreds ((x19856))
+:extrapreds ((x19857))
+:extrapreds ((x19858))
+:extrapreds ((x19859))
+:extrapreds ((x19860))
+:extrapreds ((x19861))
+:extrapreds ((x19862))
+:extrapreds ((x19863))
+:extrapreds ((x19864))
+:extrapreds ((x19865))
+:extrapreds ((x19866))
+:extrapreds ((x19867))
+:extrapreds ((x19868))
+:extrapreds ((x19869))
+:extrapreds ((x19870))
+:extrapreds ((x19871))
+:extrapreds ((x19872))
+:extrapreds ((x19873))
+:extrapreds ((x19874))
+:extrapreds ((x19875))
+:extrapreds ((x19876))
+:extrapreds ((x19877))
+:extrapreds ((x19878))
+:extrapreds ((x19879))
+:extrapreds ((x19880))
+:extrapreds ((x19881))
+:extrapreds ((x19882))
+:extrapreds ((x19883))
+:extrapreds ((x19884))
+:extrapreds ((x19885))
+:extrapreds ((x19886))
+:extrapreds ((x19887))
+:extrapreds ((x19888))
+:extrapreds ((x19889))
+:extrapreds ((x19890))
+:extrapreds ((x19891))
+:extrapreds ((x19892))
+:extrapreds ((x19893))
+:extrapreds ((x19894))
+:extrapreds ((x19895))
+:extrapreds ((x19896))
+:extrapreds ((x19897))
+:extrapreds ((x19898))
+:extrapreds ((x19899))
+:extrapreds ((x19900))
+:extrapreds ((x19901))
+:extrapreds ((x19902))
+:extrapreds ((x19903))
+:extrapreds ((x19904))
+:extrapreds ((x19905))
+:extrapreds ((x19906))
+:extrapreds ((x19907))
+:extrapreds ((x19908))
+:extrapreds ((x19909))
+:extrapreds ((x19910))
+:extrapreds ((x19911))
+:extrapreds ((x19912))
+:extrapreds ((x19913))
+:extrapreds ((x19914))
+:extrapreds ((x19915))
+:extrapreds ((x19916))
+:extrapreds ((x19917))
+:extrapreds ((x19918))
+:extrapreds ((x19919))
+:extrapreds ((x19920))
+:extrapreds ((x19921))
+:extrapreds ((x19922))
+:extrapreds ((x19923))
+:extrapreds ((x19924))
+:extrapreds ((x19925))
+:extrapreds ((x19926))
+:extrapreds ((x19927))
+:extrapreds ((x19928))
+:extrapreds ((x19929))
+:extrapreds ((x19930))
+:extrapreds ((x19931))
+:extrapreds ((x19932))
+:extrapreds ((x19933))
+:extrapreds ((x19934))
+:extrapreds ((x19935))
+:extrapreds ((x19936))
+:extrapreds ((x19937))
+:extrapreds ((x19938))
+:extrapreds ((x19939))
+:extrapreds ((x19940))
+:extrapreds ((x19941))
+:extrapreds ((x19942))
+:extrapreds ((x19943))
+:extrapreds ((x19944))
+:extrapreds ((x19945))
+:extrapreds ((x19946))
+:extrapreds ((x19947))
+:extrapreds ((x19948))
+:extrapreds ((x19949))
+:extrapreds ((x19950))
+:extrapreds ((x19951))
+:extrapreds ((x19952))
+:extrapreds ((x19953))
+:extrapreds ((x19954))
+:extrapreds ((x19955))
+:extrapreds ((x19956))
+:extrapreds ((x19957))
+:extrapreds ((x19958))
+:extrapreds ((x19959))
+:extrapreds ((x19960))
+:extrapreds ((x19961))
+:extrapreds ((x19962))
+:extrapreds ((x19963))
+:extrapreds ((x19964))
+:extrapreds ((x19965))
+:extrapreds ((x19966))
+:extrapreds ((x19967))
+:extrapreds ((x19968))
+:extrapreds ((x19969))
+:extrapreds ((x19970))
+:extrapreds ((x19971))
+:extrapreds ((x19972))
+:extrapreds ((x19973))
+:extrapreds ((x19974))
+:extrapreds ((x19975))
+:extrapreds ((x19976))
+:extrapreds ((x19977))
+:extrapreds ((x19978))
+:extrapreds ((x19979))
+:extrapreds ((x19980))
+:extrapreds ((x19981))
+:extrapreds ((x19982))
+:extrapreds ((x19983))
+:extrapreds ((x19984))
+:extrapreds ((x19985))
+:extrapreds ((x19986))
+:extrapreds ((x19987))
+:extrapreds ((x19988))
+:extrapreds ((x19989))
+:extrapreds ((x19990))
+:extrapreds ((x19991))
+:extrapreds ((x19992))
+:extrapreds ((x19993))
+:extrapreds ((x19994))
+:extrapreds ((x19995))
+:extrapreds ((x19996))
+:extrapreds ((x19997))
+:extrapreds ((x19998))
+:extrapreds ((x19999))
+:extrapreds ((x20000))
+:extrapreds ((x20001))
+:extrapreds ((x20002))
+:extrapreds ((x20003))
+:extrapreds ((x20004))
+:extrapreds ((x20005))
+:extrapreds ((x20006))
+:extrapreds ((x20007))
+:extrapreds ((x20008))
+:extrapreds ((x20009))
+:extrapreds ((x20010))
+:extrapreds ((x20011))
+:extrapreds ((x20012))
+:extrapreds ((x20013))
+:extrapreds ((x20014))
+:extrapreds ((x20015))
+:extrapreds ((x20016))
+:extrapreds ((x20017))
+:extrapreds ((x20018))
+:extrapreds ((x20019))
+:extrapreds ((x20020))
+:extrapreds ((x20021))
+:extrapreds ((x20022))
+:extrapreds ((x20023))
+:extrapreds ((x20024))
+:extrapreds ((x20025))
+:extrapreds ((x20026))
+:extrapreds ((x20027))
+:extrapreds ((x20028))
+:extrapreds ((x20029))
+:extrapreds ((x20030))
+:extrapreds ((x20031))
+:extrapreds ((x20032))
+:extrapreds ((x20033))
+:extrapreds ((x20034))
+:extrapreds ((x20035))
+:extrapreds ((x20036))
+:extrapreds ((x20037))
+:extrapreds ((x20038))
+:extrapreds ((x20039))
+:extrapreds ((x20040))
+:extrapreds ((x20041))
+:extrapreds ((x20042))
+:extrapreds ((x20043))
+:extrapreds ((x20044))
+:extrapreds ((x20045))
+:extrapreds ((x20046))
+:extrapreds ((x20047))
+:extrapreds ((x20048))
+:extrapreds ((x20049))
+:extrapreds ((x20050))
+:extrapreds ((x20051))
+:extrapreds ((x20052))
+:extrapreds ((x20053))
+:extrapreds ((x20054))
+:extrapreds ((x20055))
+:extrapreds ((x20056))
+:extrapreds ((x20057))
+:extrapreds ((x20058))
+:extrapreds ((x20059))
+:extrapreds ((x20060))
+:extrapreds ((x20061))
+:extrapreds ((x20062))
+:extrapreds ((x20063))
+:extrapreds ((x20064))
+:extrapreds ((x20065))
+:extrapreds ((x20066))
+:extrapreds ((x20067))
+:extrapreds ((x20068))
+:extrapreds ((x20069))
+:extrapreds ((x20070))
+:extrapreds ((x20071))
+:extrapreds ((x20072))
+:extrapreds ((x20073))
+:extrapreds ((x20074))
+:extrapreds ((x20075))
+:extrapreds ((x20076))
+:extrapreds ((x20077))
+:extrapreds ((x20078))
+:extrapreds ((x20079))
+:extrapreds ((x20080))
+:extrapreds ((x20081))
+:extrapreds ((x20082))
+:extrapreds ((x20083))
+:extrapreds ((x20084))
+:extrapreds ((x20085))
+:extrapreds ((x20086))
+:extrapreds ((x20087))
+:extrapreds ((x20088))
+:extrapreds ((x20089))
+:extrapreds ((x20090))
+:extrapreds ((x20091))
+:extrapreds ((x20092))
+:extrapreds ((x20093))
+:extrapreds ((x20094))
+:extrapreds ((x20095))
+:extrapreds ((x20096))
+:extrapreds ((x20097))
+:extrapreds ((x20098))
+:extrapreds ((x20099))
+:extrapreds ((x20100))
+:extrapreds ((x20101))
+:extrapreds ((x20102))
+:extrapreds ((x20103))
+:extrapreds ((x20104))
+:extrapreds ((x20105))
+:extrapreds ((x20106))
+:extrapreds ((x20107))
+:extrapreds ((x20108))
+:extrapreds ((x20109))
+:extrapreds ((x20110))
+:extrapreds ((x20111))
+:extrapreds ((x20112))
+:extrapreds ((x20113))
+:extrapreds ((x20114))
+:extrapreds ((x20115))
+:extrapreds ((x20116))
+:extrapreds ((x20117))
+:extrapreds ((x20118))
+:extrapreds ((x20119))
+:extrapreds ((x20120))
+:extrapreds ((x20121))
+:extrapreds ((x20122))
+:extrapreds ((x20123))
+:extrapreds ((x20124))
+:extrapreds ((x20125))
+:extrapreds ((x20126))
+:extrapreds ((x20127))
+:extrapreds ((x20128))
+:extrapreds ((x20129))
+:extrapreds ((x20130))
+:extrapreds ((x20131))
+:extrapreds ((x20132))
+:extrapreds ((x20133))
+:extrapreds ((x20134))
+:extrapreds ((x20135))
+:extrapreds ((x20136))
+:extrapreds ((x20137))
+:extrapreds ((x20138))
+:extrapreds ((x20139))
+:extrapreds ((x20140))
+:extrapreds ((x20141))
+:extrapreds ((x20142))
+:extrapreds ((x20143))
+:extrapreds ((x20144))
+:extrapreds ((x20145))
+:extrapreds ((x20146))
+:extrapreds ((x20147))
+:extrapreds ((x20148))
+:extrapreds ((x20149))
+:extrapreds ((x20150))
+:extrapreds ((x20151))
+:extrapreds ((x20152))
+:extrapreds ((x20153))
+:extrapreds ((x20154))
+:extrapreds ((x20155))
+:extrapreds ((x20156))
+:extrapreds ((x20157))
+:extrapreds ((x20158))
+:extrapreds ((x20159))
+:extrapreds ((x20160))
+:extrapreds ((x20161))
+:extrapreds ((x20162))
+:extrapreds ((x20163))
+:extrapreds ((x20164))
+:extrapreds ((x20165))
+:extrapreds ((x20166))
+:extrapreds ((x20167))
+:extrapreds ((x20168))
+:extrapreds ((x20169))
+:extrapreds ((x20170))
+:extrapreds ((x20171))
+:extrapreds ((x20172))
+:extrapreds ((x20173))
+:extrapreds ((x20174))
+:extrapreds ((x20175))
+:extrapreds ((x20176))
+:extrapreds ((x20177))
+:extrapreds ((x20178))
+:extrapreds ((x20179))
+:extrapreds ((x20180))
+:extrapreds ((x20181))
+:extrapreds ((x20182))
+:extrapreds ((x20183))
+:extrapreds ((x20184))
+:extrapreds ((x20185))
+:extrapreds ((x20186))
+:extrapreds ((x20187))
+:extrapreds ((x20188))
+:extrapreds ((x20189))
+:extrapreds ((x20190))
+:extrapreds ((x20191))
+:extrapreds ((x20192))
+:extrapreds ((x20193))
+:extrapreds ((x20194))
+:extrapreds ((x20195))
+:extrapreds ((x20196))
+:extrapreds ((x20197))
+:extrapreds ((x20198))
+:extrapreds ((x20199))
+:extrapreds ((x20200))
+:extrapreds ((x20201))
+:extrapreds ((x20202))
+:extrapreds ((x20203))
+:extrapreds ((x20204))
+:extrapreds ((x20205))
+:extrapreds ((x20206))
+:extrapreds ((x20207))
+:extrapreds ((x20208))
+:extrapreds ((x20209))
+:extrapreds ((x20210))
+:extrapreds ((x20211))
+:extrapreds ((x20212))
+:extrapreds ((x20213))
+:extrapreds ((x20214))
+:extrapreds ((x20215))
+:extrapreds ((x20216))
+:extrapreds ((x20217))
+:extrapreds ((x20218))
+:extrapreds ((x20219))
+:extrapreds ((x20220))
+:extrapreds ((x20221))
+:extrapreds ((x20222))
+:extrapreds ((x20223))
+:extrapreds ((x20224))
+:extrapreds ((x20225))
+:extrapreds ((x20226))
+:extrapreds ((x20227))
+:extrapreds ((x20228))
+:extrapreds ((x20229))
+:extrapreds ((x20230))
+:extrapreds ((x20231))
+:extrapreds ((x20232))
+:extrapreds ((x20233))
+:extrapreds ((x20234))
+:extrapreds ((x20235))
+:extrapreds ((x20236))
+:extrapreds ((x20237))
+:extrapreds ((x20238))
+:extrapreds ((x20239))
+:extrapreds ((x20240))
+:extrapreds ((x20241))
+:extrapreds ((x20242))
+:extrapreds ((x20243))
+:extrapreds ((x20244))
+:extrapreds ((x20245))
+:extrapreds ((x20246))
+:extrapreds ((x20247))
+:extrapreds ((x20248))
+:extrapreds ((x20249))
+:extrapreds ((x20250))
+:extrapreds ((x20251))
+:extrapreds ((x20252))
+:extrapreds ((x20253))
+:extrapreds ((x20254))
+:extrapreds ((x20255))
+:extrapreds ((x20256))
+:extrapreds ((x20257))
+:extrapreds ((x20258))
+:extrapreds ((x20259))
+:extrapreds ((x20260))
+:extrapreds ((x20261))
+:extrapreds ((x20262))
+:extrapreds ((x20263))
+:extrapreds ((x20264))
+:extrapreds ((x20265))
+:extrapreds ((x20266))
+:extrapreds ((x20267))
+:extrapreds ((x20268))
+:extrapreds ((x20269))
+:extrapreds ((x20270))
+:extrapreds ((x20271))
+:extrapreds ((x20272))
+:extrapreds ((x20273))
+:extrapreds ((x20274))
+:extrapreds ((x20275))
+:extrapreds ((x20276))
+:extrapreds ((x20277))
+:extrapreds ((x20278))
+:extrapreds ((x20279))
+:extrapreds ((x20280))
+:extrapreds ((x20281))
+:extrapreds ((x20282))
+:extrapreds ((x20283))
+:extrapreds ((x20284))
+:extrapreds ((x20285))
+:extrapreds ((x20286))
+:extrapreds ((x20287))
+:extrapreds ((x20288))
+:extrapreds ((x20289))
+:extrapreds ((x20290))
+:extrapreds ((x20291))
+:extrapreds ((x20292))
+:extrapreds ((x20293))
+:extrapreds ((x20294))
+:extrapreds ((x20295))
+:extrapreds ((x20296))
+:extrapreds ((x20297))
+:extrapreds ((x20298))
+:extrapreds ((x20299))
+:extrapreds ((x20300))
+:extrapreds ((x20301))
+:extrapreds ((x20302))
+:extrapreds ((x20303))
+:extrapreds ((x20304))
+:extrapreds ((x20305))
+:extrapreds ((x20306))
+:extrapreds ((x20307))
+:extrapreds ((x20308))
+:extrapreds ((x20309))
+:extrapreds ((x20310))
+:extrapreds ((x20311))
+:extrapreds ((x20312))
+:extrapreds ((x20313))
+:extrapreds ((x20314))
+:extrapreds ((x20315))
+:extrapreds ((x20316))
+:extrapreds ((x20317))
+:extrapreds ((x20318))
+:extrapreds ((x20319))
+:extrapreds ((x20320))
+:extrapreds ((x20321))
+:extrapreds ((x20322))
+:extrapreds ((x20323))
+:extrapreds ((x20324))
+:extrapreds ((x20325))
+:extrapreds ((x20326))
+:extrapreds ((x20327))
+:extrapreds ((x20328))
+:extrapreds ((x20329))
+:extrapreds ((x20330))
+:extrapreds ((x20331))
+:extrapreds ((x20332))
+:extrapreds ((x20333))
+:extrapreds ((x20334))
+:extrapreds ((x20335))
+:extrapreds ((x20336))
+:extrapreds ((x20337))
+:extrapreds ((x20338))
+:extrapreds ((x20339))
+:extrapreds ((x20340))
+:extrapreds ((x20341))
+:extrapreds ((x20342))
+:extrapreds ((x20343))
+:extrapreds ((x20344))
+:extrapreds ((x20345))
+:extrapreds ((x20346))
+:extrapreds ((x20347))
+:extrapreds ((x20348))
+:extrapreds ((x20349))
+:extrapreds ((x20350))
+:extrapreds ((x20351))
+:extrapreds ((x20352))
+:extrapreds ((x20353))
+:extrapreds ((x20354))
+:extrapreds ((x20355))
+:extrapreds ((x20356))
+:extrapreds ((x20357))
+:extrapreds ((x20358))
+:extrapreds ((x20359))
+:extrapreds ((x20360))
+:extrapreds ((x20361))
+:extrapreds ((x20362))
+:extrapreds ((x20363))
+:extrapreds ((x20364))
+:extrapreds ((x20365))
+:extrapreds ((x20366))
+:extrapreds ((x20367))
+:extrapreds ((x20368))
+:extrapreds ((x20369))
+:extrapreds ((x20370))
+:extrapreds ((x20371))
+:extrapreds ((x20372))
+:extrapreds ((x20373))
+:extrapreds ((x20374))
+:extrapreds ((x20375))
+:extrapreds ((x20376))
+:extrapreds ((x20377))
+:extrapreds ((x20378))
+:extrapreds ((x20379))
+:extrapreds ((x20380))
+:extrapreds ((x20381))
+:extrapreds ((x20382))
+:extrapreds ((x20383))
+:extrapreds ((x20384))
+:extrapreds ((x20385))
+:extrapreds ((x20386))
+:extrapreds ((x20387))
+:extrapreds ((x20388))
+:extrapreds ((x20389))
+:extrapreds ((x20390))
+:extrapreds ((x20391))
+:extrapreds ((x20392))
+:extrapreds ((x20393))
+:extrapreds ((x20394))
+:extrapreds ((x20395))
+:extrapreds ((x20396))
+:extrapreds ((x20397))
+:extrapreds ((x20398))
+:extrapreds ((x20399))
+:extrapreds ((x20400))
+:extrapreds ((x20401))
+:extrapreds ((x20402))
+:extrapreds ((x20403))
+:extrapreds ((x20404))
+:extrapreds ((x20405))
+:extrapreds ((x20406))
+:extrapreds ((x20407))
+:extrapreds ((x20408))
+:extrapreds ((x20409))
+:extrapreds ((x20410))
+:extrapreds ((x20411))
+:extrapreds ((x20412))
+:extrapreds ((x20413))
+:extrapreds ((x20414))
+:extrapreds ((x20415))
+:extrapreds ((x20416))
+:extrapreds ((x20417))
+:extrapreds ((x20418))
+:extrapreds ((x20419))
+:extrapreds ((x20420))
+:extrapreds ((x20421))
+:extrapreds ((x20422))
+:extrapreds ((x20423))
+:extrapreds ((x20424))
+:extrapreds ((x20425))
+:extrapreds ((x20426))
+:extrapreds ((x20427))
+:extrapreds ((x20428))
+:extrapreds ((x20429))
+:extrapreds ((x20430))
+:extrapreds ((x20431))
+:extrapreds ((x20432))
+:extrapreds ((x20433))
+:extrapreds ((x20434))
+:extrapreds ((x20435))
+:extrapreds ((x20436))
+:extrapreds ((x20437))
+:extrapreds ((x20438))
+:extrapreds ((x20439))
+:extrapreds ((x20440))
+:extrapreds ((x20441))
+:extrapreds ((x20442))
+:extrapreds ((x20443))
+:extrapreds ((x20444))
+:extrapreds ((x20445))
+:extrapreds ((x20446))
+:extrapreds ((x20447))
+:extrapreds ((x20448))
+:extrapreds ((x20449))
+:extrapreds ((x20450))
+:extrapreds ((x20451))
+:extrapreds ((x20452))
+:extrapreds ((x20453))
+:extrapreds ((x20454))
+:extrapreds ((x20455))
+:extrapreds ((x20456))
+:extrapreds ((x20457))
+:extrapreds ((x20458))
+:extrapreds ((x20459))
+:extrapreds ((x20460))
+:extrapreds ((x20461))
+:extrapreds ((x20462))
+:extrapreds ((x20463))
+:extrapreds ((x20464))
+:extrapreds ((x20465))
+:extrapreds ((x20466))
+:extrapreds ((x20467))
+:extrapreds ((x20468))
+:extrapreds ((x20469))
+:extrapreds ((x20470))
+:extrapreds ((x20471))
+:extrapreds ((x20472))
+:extrapreds ((x20473))
+:extrapreds ((x20474))
+:extrapreds ((x20475))
+:extrapreds ((x20476))
+:extrapreds ((x20477))
+:extrapreds ((x20478))
+:extrapreds ((x20479))
+:extrapreds ((x20480))
+:extrapreds ((x20481))
+:extrapreds ((x20482))
+:extrapreds ((x20483))
+:extrapreds ((x20484))
+:extrapreds ((x20485))
+:extrapreds ((x20486))
+:extrapreds ((x20487))
+:extrapreds ((x20488))
+:extrapreds ((x20489))
+:extrapreds ((x20490))
+:extrapreds ((x20491))
+:extrapreds ((x20492))
+:extrapreds ((x20493))
+:extrapreds ((x20494))
+:extrapreds ((x20495))
+:extrapreds ((x20496))
+:extrapreds ((x20497))
+:extrapreds ((x20498))
+:extrapreds ((x20499))
+:extrapreds ((x20500))
+:extrapreds ((x20501))
+:extrapreds ((x20502))
+:extrapreds ((x20503))
+:extrapreds ((x20504))
+:extrapreds ((x20505))
+:extrapreds ((x20506))
+:extrapreds ((x20507))
+:extrapreds ((x20508))
+:extrapreds ((x20509))
+:extrapreds ((x20510))
+:extrapreds ((x20511))
+:extrapreds ((x20512))
+:extrapreds ((x20513))
+:extrapreds ((x20514))
+:extrapreds ((x20515))
+:extrapreds ((x20516))
+:extrapreds ((x20517))
+:extrapreds ((x20518))
+:extrapreds ((x20519))
+:extrapreds ((x20520))
+:extrapreds ((x20521))
+:extrapreds ((x20522))
+:extrapreds ((x20523))
+:extrapreds ((x20524))
+:extrapreds ((x20525))
+:extrapreds ((x20526))
+:extrapreds ((x20527))
+:extrapreds ((x20528))
+:extrapreds ((x20529))
+:extrapreds ((x20530))
+:extrapreds ((x20531))
+:extrapreds ((x20532))
+:extrapreds ((x20533))
+:extrapreds ((x20534))
+:extrapreds ((x20535))
+:extrapreds ((x20536))
+:extrapreds ((x20537))
+:extrapreds ((x20538))
+:extrapreds ((x20539))
+:extrapreds ((x20540))
+:extrapreds ((x20541))
+:extrapreds ((x20542))
+:extrapreds ((x20543))
+:extrapreds ((x20544))
+:extrapreds ((x20545))
+:extrapreds ((x20546))
+:extrapreds ((x20547))
+:extrapreds ((x20548))
+:extrapreds ((x20549))
+:extrapreds ((x20550))
+:extrapreds ((x20551))
+:extrapreds ((x20552))
+:extrapreds ((x20553))
+:extrapreds ((x20554))
+:extrapreds ((x20555))
+:extrapreds ((x20556))
+:extrapreds ((x20557))
+:extrapreds ((x20558))
+:extrapreds ((x20559))
+:extrapreds ((x20560))
+:extrapreds ((x20561))
+:extrapreds ((x20562))
+:extrapreds ((x20563))
+:extrapreds ((x20564))
+:extrapreds ((x20565))
+:extrapreds ((x20566))
+:extrapreds ((x20567))
+:extrapreds ((x20568))
+:extrapreds ((x20569))
+:extrapreds ((x20570))
+:extrapreds ((x20571))
+:extrapreds ((x20572))
+:extrapreds ((x20573))
+:extrapreds ((x20574))
+:extrapreds ((x20575))
+:extrapreds ((x20576))
+:extrapreds ((x20577))
+:extrapreds ((x20578))
+:extrapreds ((x20579))
+:extrapreds ((x20580))
+:extrapreds ((x20581))
+:extrapreds ((x20582))
+:extrapreds ((x20583))
+:extrapreds ((x20584))
+:extrapreds ((x20585))
+:extrapreds ((x20586))
+:extrapreds ((x20587))
+:extrapreds ((x20588))
+:extrapreds ((x20589))
+:extrapreds ((x20590))
+:extrapreds ((x20591))
+:extrapreds ((x20592))
+:extrapreds ((x20593))
+:extrapreds ((x20594))
+:extrapreds ((x20595))
+:extrapreds ((x20596))
+:extrapreds ((x20597))
+:extrapreds ((x20598))
+:extrapreds ((x20599))
+:extrapreds ((x20600))
+:extrapreds ((x20601))
+:extrapreds ((x20602))
+:extrapreds ((x20603))
+:extrapreds ((x20604))
+:extrapreds ((x20605))
+:extrapreds ((x20606))
+:extrapreds ((x20607))
+:extrapreds ((x20608))
+:extrapreds ((x20609))
+:extrapreds ((x20610))
+:extrapreds ((x20611))
+:extrapreds ((x20612))
+:extrapreds ((x20613))
+:extrapreds ((x20614))
+:extrapreds ((x20615))
+:extrapreds ((x20616))
+:extrapreds ((x20617))
+:extrapreds ((x20618))
+:extrapreds ((x20619))
+:extrapreds ((x20620))
+:extrapreds ((x20621))
+:extrapreds ((x20622))
+:extrapreds ((x20623))
+:extrapreds ((x20624))
+:extrapreds ((x20625))
+:extrapreds ((x20626))
+:extrapreds ((x20627))
+:extrapreds ((x20628))
+:extrapreds ((x20629))
+:extrapreds ((x20630))
+:extrapreds ((x20631))
+:extrapreds ((x20632))
+:extrapreds ((x20633))
+:extrapreds ((x20634))
+:extrapreds ((x20635))
+:extrapreds ((x20636))
+:extrapreds ((x20637))
+:extrapreds ((x20638))
+:extrapreds ((x20639))
+:extrapreds ((x20640))
+:extrapreds ((x20641))
+:extrapreds ((x20642))
+:extrapreds ((x20643))
+:extrapreds ((x20644))
+:extrapreds ((x20645))
+:extrapreds ((x20646))
+:extrapreds ((x20647))
+:extrapreds ((x20648))
+:extrapreds ((x20649))
+:extrapreds ((x20650))
+:extrapreds ((x20651))
+:extrapreds ((x20652))
+:extrapreds ((x20653))
+:extrapreds ((x20654))
+:extrapreds ((x20655))
+:extrapreds ((x20656))
+:extrapreds ((x20657))
+:extrapreds ((x20658))
+:extrapreds ((x20659))
+:extrapreds ((x20660))
+:extrapreds ((x20661))
+:extrapreds ((x20662))
+:extrapreds ((x20663))
+:extrapreds ((x20664))
+:extrapreds ((x20665))
+:extrapreds ((x20666))
+:extrapreds ((x20667))
+:extrapreds ((x20668))
+:extrapreds ((x20669))
+:extrapreds ((x20670))
+:extrapreds ((x20671))
+:extrapreds ((x20672))
+:extrapreds ((x20673))
+:extrapreds ((x20674))
+:extrapreds ((x20675))
+:extrapreds ((x20676))
+:extrapreds ((x20677))
+:extrapreds ((x20678))
+:extrapreds ((x20679))
+:extrapreds ((x20680))
+:extrapreds ((x20681))
+:extrapreds ((x20682))
+:extrapreds ((x20683))
+:extrapreds ((x20684))
+:extrapreds ((x20685))
+:extrapreds ((x20686))
+:extrapreds ((x20687))
+:extrapreds ((x20688))
+:extrapreds ((x20689))
+:extrapreds ((x20690))
+:extrapreds ((x20691))
+:extrapreds ((x20692))
+:extrapreds ((x20693))
+:extrapreds ((x20694))
+:extrapreds ((x20695))
+:extrapreds ((x20696))
+:extrapreds ((x20697))
+:extrapreds ((x20698))
+:extrapreds ((x20699))
+:extrapreds ((x20700))
+:extrapreds ((x20701))
+:extrapreds ((x20702))
+:extrapreds ((x20703))
+:extrapreds ((x20704))
+:extrapreds ((x20705))
+:extrapreds ((x20706))
+:extrapreds ((x20707))
+:extrapreds ((x20708))
+:extrapreds ((x20709))
+:extrapreds ((x20710))
+:extrapreds ((x20711))
+:extrapreds ((x20712))
+:extrapreds ((x20713))
+:extrapreds ((x20714))
+:extrapreds ((x20715))
+:extrapreds ((x20716))
+:extrapreds ((x20717))
+:extrapreds ((x20718))
+:extrapreds ((x20719))
+:extrapreds ((x20720))
+:extrapreds ((x20721))
+:extrapreds ((x20722))
+:extrapreds ((x20723))
+:extrapreds ((x20724))
+:extrapreds ((x20725))
+:extrapreds ((x20726))
+:extrapreds ((x20727))
+:extrapreds ((x20728))
+:extrapreds ((x20729))
+:extrapreds ((x20730))
+:extrapreds ((x20731))
+:extrapreds ((x20732))
+:extrapreds ((x20733))
+:extrapreds ((x20734))
+:extrapreds ((x20735))
+:extrapreds ((x20736))
+:extrapreds ((x20737))
+:extrapreds ((x20738))
+:extrapreds ((x20739))
+:extrapreds ((x20740))
+:extrapreds ((x20741))
+:extrapreds ((x20742))
+:extrapreds ((x20743))
+:extrapreds ((x20744))
+:extrapreds ((x20745))
+:extrapreds ((x20746))
+:extrapreds ((x20747))
+:extrapreds ((x20748))
+:extrapreds ((x20749))
+:extrapreds ((x20750))
+:extrapreds ((x20751))
+:extrapreds ((x20752))
+:extrapreds ((x20753))
+:extrapreds ((x20754))
+:extrapreds ((x20755))
+:extrapreds ((x20756))
+:extrapreds ((x20757))
+:extrapreds ((x20758))
+:extrapreds ((x20759))
+:extrapreds ((x20760))
+:extrapreds ((x20761))
+:extrapreds ((x20762))
+:extrapreds ((x20763))
+:extrapreds ((x20764))
+:extrapreds ((x20765))
+:extrapreds ((x20766))
+:extrapreds ((x20767))
+:extrapreds ((x20768))
+:extrapreds ((x20769))
+:extrapreds ((x20770))
+:extrapreds ((x20771))
+:extrapreds ((x20772))
+:extrapreds ((x20773))
+:extrapreds ((x20774))
+:extrapreds ((x20775))
+:extrapreds ((x20776))
+:extrapreds ((x20777))
+:extrapreds ((x20778))
+:extrapreds ((x20779))
+:extrapreds ((x20780))
+:extrapreds ((x20781))
+:extrapreds ((x20782))
+:extrapreds ((x20783))
+:extrapreds ((x20784))
+:extrapreds ((x20785))
+:extrapreds ((x20786))
+:extrapreds ((x20787))
+:extrapreds ((x20788))
+:extrapreds ((x20789))
+:extrapreds ((x20790))
+:extrapreds ((x20791))
+:extrapreds ((x20792))
+:extrapreds ((x20793))
+:extrapreds ((x20794))
+:extrapreds ((x20795))
+:extrapreds ((x20796))
+:extrapreds ((x20797))
+:extrapreds ((x20798))
+:extrapreds ((x20799))
+:extrapreds ((x20800))
+:extrapreds ((x20801))
+:extrapreds ((x20802))
+:extrapreds ((x20803))
+:extrapreds ((x20804))
+:extrapreds ((x20805))
+:extrapreds ((x20806))
+:extrapreds ((x20807))
+:extrapreds ((x20808))
+:extrapreds ((x20809))
+:extrapreds ((x20810))
+:extrapreds ((x20811))
+:extrapreds ((x20812))
+:extrapreds ((x20813))
+:extrapreds ((x20814))
+:extrapreds ((x20815))
+:extrapreds ((x20816))
+:extrapreds ((x20817))
+:extrapreds ((x20818))
+:extrapreds ((x20819))
+:extrapreds ((x20820))
+:extrapreds ((x20821))
+:extrapreds ((x20822))
+:extrapreds ((x20823))
+:extrapreds ((x20824))
+:extrapreds ((x20825))
+:extrapreds ((x20826))
+:extrapreds ((x20827))
+:extrapreds ((x20828))
+:extrapreds ((x20829))
+:extrapreds ((x20830))
+:extrapreds ((x20831))
+:extrapreds ((x20832))
+:extrapreds ((x20833))
+:extrapreds ((x20834))
+:extrapreds ((x20835))
+:extrapreds ((x20836))
+:extrapreds ((x20837))
+:extrapreds ((x20838))
+:extrapreds ((x20839))
+:extrapreds ((x20840))
+:extrapreds ((x20841))
+:extrapreds ((x20842))
+:extrapreds ((x20843))
+:extrapreds ((x20844))
+:extrapreds ((x20845))
+:extrapreds ((x20846))
+:extrapreds ((x20847))
+:extrapreds ((x20848))
+:extrapreds ((x20849))
+:extrapreds ((x20850))
+:extrapreds ((x20851))
+:extrapreds ((x20852))
+:extrapreds ((x20853))
+:extrapreds ((x20854))
+:extrapreds ((x20855))
+:extrapreds ((x20856))
+:extrapreds ((x20857))
+:extrapreds ((x20858))
+:extrapreds ((x20859))
+:extrapreds ((x20860))
+:extrapreds ((x20861))
+:extrapreds ((x20862))
+:extrapreds ((x20863))
+:extrapreds ((x20864))
+:extrapreds ((x20865))
+:extrapreds ((x20866))
+:extrapreds ((x20867))
+:extrapreds ((x20868))
+:extrapreds ((x20869))
+:extrapreds ((x20870))
+:extrapreds ((x20871))
+:extrapreds ((x20872))
+:extrapreds ((x20873))
+:extrapreds ((x20874))
+:extrapreds ((x20875))
+:extrapreds ((x20876))
+:extrapreds ((x20877))
+:extrapreds ((x20878))
+:extrapreds ((x20879))
+:extrapreds ((x20880))
+:extrapreds ((x20881))
+:extrapreds ((x20882))
+:extrapreds ((x20883))
+:extrapreds ((x20884))
+:extrapreds ((x20885))
+:extrapreds ((x20886))
+:extrapreds ((x20887))
+:extrapreds ((x20888))
+:extrapreds ((x20889))
+:extrapreds ((x20890))
+:extrapreds ((x20891))
+:extrapreds ((x20892))
+:extrapreds ((x20893))
+:extrapreds ((x20894))
+:extrapreds ((x20895))
+:extrapreds ((x20896))
+:extrapreds ((x20897))
+:extrapreds ((x20898))
+:extrapreds ((x20899))
+:extrapreds ((x20900))
+:extrapreds ((x20901))
+:extrapreds ((x20902))
+:extrapreds ((x20903))
+:extrapreds ((x20904))
+:extrapreds ((x20905))
+:extrapreds ((x20906))
+:extrapreds ((x20907))
+:extrapreds ((x20908))
+:extrapreds ((x20909))
+:extrapreds ((x20910))
+:extrapreds ((x20911))
+:extrapreds ((x20912))
+:extrapreds ((x20913))
+:extrapreds ((x20914))
+:extrapreds ((x20915))
+:extrapreds ((x20916))
+:extrapreds ((x20917))
+:extrapreds ((x20918))
+:extrapreds ((x20919))
+:extrapreds ((x20920))
+:extrapreds ((x20921))
+:extrapreds ((x20922))
+:extrapreds ((x20923))
+:extrapreds ((x20924))
+:extrapreds ((x20925))
+:extrapreds ((x20926))
+:extrapreds ((x20927))
+:extrapreds ((x20928))
+:extrapreds ((x20929))
+:extrapreds ((x20930))
+:extrapreds ((x20931))
+:extrapreds ((x20932))
+:extrapreds ((x20933))
+:extrapreds ((x20934))
+:extrapreds ((x20935))
+:extrapreds ((x20936))
+:extrapreds ((x20937))
+:extrapreds ((x20938))
+:extrapreds ((x20939))
+:extrapreds ((x20940))
+:extrapreds ((x20941))
+:extrapreds ((x20942))
+:extrapreds ((x20943))
+:extrapreds ((x20944))
+:extrapreds ((x20945))
+:extrapreds ((x20946))
+:extrapreds ((x20947))
+:extrapreds ((x20948))
+:extrapreds ((x20949))
+:extrapreds ((x20950))
+:extrapreds ((x20951))
+:extrapreds ((x20952))
+:extrapreds ((x20953))
+:extrapreds ((x20954))
+:extrapreds ((x20955))
+:extrapreds ((x20956))
+:extrapreds ((x20957))
+:extrapreds ((x20958))
+:extrapreds ((x20959))
+:extrapreds ((x20960))
+:extrapreds ((x20961))
+:extrapreds ((x20962))
+:extrapreds ((x20963))
+:extrapreds ((x20964))
+:extrapreds ((x20965))
+:extrapreds ((x20966))
+:extrapreds ((x20967))
+:extrapreds ((x20968))
+:extrapreds ((x20969))
+:extrapreds ((x20970))
+:extrapreds ((x20971))
+:extrapreds ((x20972))
+:extrapreds ((x20973))
+:extrapreds ((x20974))
+:extrapreds ((x20975))
+:extrapreds ((x20976))
+:extrapreds ((x20977))
+:extrapreds ((x20978))
+:extrapreds ((x20979))
+:extrapreds ((x20980))
+:extrapreds ((x20981))
+:extrapreds ((x20982))
+:extrapreds ((x20983))
+:extrapreds ((x20984))
+:extrapreds ((x20985))
+:extrapreds ((x20986))
+:extrapreds ((x20987))
+:extrapreds ((x20988))
+:extrapreds ((x20989))
+:extrapreds ((x20990))
+:extrapreds ((x20991))
+:extrapreds ((x20992))
+:extrapreds ((x20993))
+:extrapreds ((x20994))
+:extrapreds ((x20995))
+:extrapreds ((x20996))
+:extrapreds ((x20997))
+:extrapreds ((x20998))
+:extrapreds ((x20999))
+:extrapreds ((x21000))
+:extrapreds ((x21001))
+:extrapreds ((x21002))
+:extrapreds ((x21003))
+:extrapreds ((x21004))
+:extrapreds ((x21005))
+:extrapreds ((x21006))
+:extrapreds ((x21007))
+:extrapreds ((x21008))
+:extrapreds ((x21009))
+:extrapreds ((x21010))
+:extrapreds ((x21011))
+:extrapreds ((x21012))
+:extrapreds ((x21013))
+:extrapreds ((x21014))
+:extrapreds ((x21015))
+:extrapreds ((x21016))
+:extrapreds ((x21017))
+:extrapreds ((x21018))
+:extrapreds ((x21019))
+:extrapreds ((x21020))
+:extrapreds ((x21021))
+:extrapreds ((x21022))
+:extrapreds ((x21023))
+:extrapreds ((x21024))
+:extrapreds ((x21025))
+:extrapreds ((x21026))
+:extrapreds ((x21027))
+:extrapreds ((x21028))
+:extrapreds ((x21029))
+:extrapreds ((x21030))
+:extrapreds ((x21031))
+:extrapreds ((x21032))
+:extrapreds ((x21033))
+:extrapreds ((x21034))
+:extrapreds ((x21035))
+:extrapreds ((x21036))
+:extrapreds ((x21037))
+:extrapreds ((x21038))
+:extrapreds ((x21039))
+:extrapreds ((x21040))
+:extrapreds ((x21041))
+:extrapreds ((x21042))
+:extrapreds ((x21043))
+:extrapreds ((x21044))
+:extrapreds ((x21045))
+:extrapreds ((x21046))
+:extrapreds ((x21047))
+:extrapreds ((x21048))
+:extrapreds ((x21049))
+:extrapreds ((x21050))
+:extrapreds ((x21051))
+:extrapreds ((x21052))
+:extrapreds ((x21053))
+:extrapreds ((x21054))
+:extrapreds ((x21055))
+:extrapreds ((x21056))
+:extrapreds ((x21057))
+:extrapreds ((x21058))
+:extrapreds ((x21059))
+:extrapreds ((x21060))
+:extrapreds ((x21061))
+:extrapreds ((x21062))
+:extrapreds ((x21063))
+:extrapreds ((x21064))
+:extrapreds ((x21065))
+:extrapreds ((x21066))
+:extrapreds ((x21067))
+:extrapreds ((x21068))
+:extrapreds ((x21069))
+:extrapreds ((x21070))
+:extrapreds ((x21071))
+:extrapreds ((x21072))
+:extrapreds ((x21073))
+:extrapreds ((x21074))
+:extrapreds ((x21075))
+:extrapreds ((x21076))
+:extrapreds ((x21077))
+:extrapreds ((x21078))
+:extrapreds ((x21079))
+:extrapreds ((x21080))
+:extrapreds ((x21081))
+:extrapreds ((x21082))
+:extrapreds ((x21083))
+:extrapreds ((x21084))
+:extrapreds ((x21085))
+:extrapreds ((x21086))
+:extrapreds ((x21087))
+:extrapreds ((x21088))
+:extrapreds ((x21089))
+:extrapreds ((x21090))
+:extrapreds ((x21091))
+:extrapreds ((x21092))
+:extrapreds ((x21093))
+:extrapreds ((x21094))
+:extrapreds ((x21095))
+:extrapreds ((x21096))
+:extrapreds ((x21097))
+:extrapreds ((x21098))
+:extrapreds ((x21099))
+:extrapreds ((x21100))
+:extrapreds ((x21101))
+:extrapreds ((x21102))
+:extrapreds ((x21103))
+:extrapreds ((x21104))
+:extrapreds ((x21105))
+:extrapreds ((x21106))
+:extrapreds ((x21107))
+:extrapreds ((x21108))
+:extrapreds ((x21109))
+:extrapreds ((x21110))
+:extrapreds ((x21111))
+:extrapreds ((x21112))
+:extrapreds ((x21113))
+:extrapreds ((x21114))
+:extrapreds ((x21115))
+:extrapreds ((x21116))
+:extrapreds ((x21117))
+:extrapreds ((x21118))
+:extrapreds ((x21119))
+:extrapreds ((x21120))
+:extrapreds ((x21121))
+:extrapreds ((x21122))
+:extrapreds ((x21123))
+:extrapreds ((x21124))
+:extrapreds ((x21125))
+:extrapreds ((x21126))
+:extrapreds ((x21127))
+:extrapreds ((x21128))
+:extrapreds ((x21129))
+:extrapreds ((x21130))
+:extrapreds ((x21131))
+:extrapreds ((x21132))
+:extrapreds ((x21133))
+:extrapreds ((x21134))
+:extrapreds ((x21135))
+:extrapreds ((x21136))
+:extrapreds ((x21137))
+:extrapreds ((x21138))
+:extrapreds ((x21139))
+:extrapreds ((x21140))
+:extrapreds ((x21141))
+:extrapreds ((x21142))
+:extrapreds ((x21143))
+:extrapreds ((x21144))
+:extrapreds ((x21145))
+:extrapreds ((x21146))
+:extrapreds ((x21147))
+:extrapreds ((x21148))
+:extrapreds ((x21149))
+:extrapreds ((x21150))
+:extrapreds ((x21151))
+:extrapreds ((x21152))
+:extrapreds ((x21153))
+:extrapreds ((x21154))
+:extrapreds ((x21155))
+:extrapreds ((x21156))
+:extrapreds ((x21157))
+:extrapreds ((x21158))
+:extrapreds ((x21159))
+:extrapreds ((x21160))
+:extrapreds ((x21161))
+:extrapreds ((x21162))
+:extrapreds ((x21163))
+:extrapreds ((x21164))
+:extrapreds ((x21165))
+:extrapreds ((x21166))
+:extrapreds ((x21167))
+:extrapreds ((x21168))
+:extrapreds ((x21169))
+:extrapreds ((x21170))
+:extrapreds ((x21171))
+:extrapreds ((x21172))
+:extrapreds ((x21173))
+:extrapreds ((x21174))
+:extrapreds ((x21175))
+:extrapreds ((x21176))
+:extrapreds ((x21177))
+:extrapreds ((x21178))
+:extrapreds ((x21179))
+:extrapreds ((x21180))
+:extrapreds ((x21181))
+:extrapreds ((x21182))
+:extrapreds ((x21183))
+:extrapreds ((x21184))
+:extrapreds ((x21185))
+:extrapreds ((x21186))
+:extrapreds ((x21187))
+:extrapreds ((x21188))
+:extrapreds ((x21189))
+:extrapreds ((x21190))
+:extrapreds ((x21191))
+:extrapreds ((x21192))
+:extrapreds ((x21193))
+:extrapreds ((x21194))
+:extrapreds ((x21195))
+:extrapreds ((x21196))
+:extrapreds ((x21197))
+:extrapreds ((x21198))
+:extrapreds ((x21199))
+:extrapreds ((x21200))
+:extrapreds ((x21201))
+:extrapreds ((x21202))
+:extrapreds ((x21203))
+:extrapreds ((x21204))
+:extrapreds ((x21205))
+:extrapreds ((x21206))
+:extrapreds ((x21207))
+:extrapreds ((x21208))
+:extrapreds ((x21209))
+:extrapreds ((x21210))
+:extrapreds ((x21211))
+:extrapreds ((x21212))
+:extrapreds ((x21213))
+:extrapreds ((x21214))
+:extrapreds ((x21215))
+:extrapreds ((x21216))
+:extrapreds ((x21217))
+:extrapreds ((x21218))
+:extrapreds ((x21219))
+:extrapreds ((x21220))
+:extrapreds ((x21221))
+:extrapreds ((x21222))
+:extrapreds ((x21223))
+:extrapreds ((x21224))
+:extrapreds ((x21225))
+:extrapreds ((x21226))
+:extrapreds ((x21227))
+:extrapreds ((x21228))
+:extrapreds ((x21229))
+:extrapreds ((x21230))
+:extrapreds ((x21231))
+:extrapreds ((x21232))
+:extrapreds ((x21233))
+:extrapreds ((x21234))
+:extrapreds ((x21235))
+:extrapreds ((x21236))
+:extrapreds ((x21237))
+:extrapreds ((x21238))
+:extrapreds ((x21239))
+:extrapreds ((x21240))
+:extrapreds ((x21241))
+:extrapreds ((x21242))
+:extrapreds ((x21243))
+:extrapreds ((x21244))
+:extrapreds ((x21245))
+:extrapreds ((x21246))
+:extrapreds ((x21247))
+:extrapreds ((x21248))
+:extrapreds ((x21249))
+:extrapreds ((x21250))
+:extrapreds ((x21251))
+:extrapreds ((x21252))
+:extrapreds ((x21253))
+:extrapreds ((x21254))
+:extrapreds ((x21255))
+:extrapreds ((x21256))
+:extrapreds ((x21257))
+:extrapreds ((x21258))
+:extrapreds ((x21259))
+:extrapreds ((x21260))
+:extrapreds ((x21261))
+:extrapreds ((x21262))
+:extrapreds ((x21263))
+:extrapreds ((x21264))
+:extrapreds ((x21265))
+:extrapreds ((x21266))
+:extrapreds ((x21267))
+:extrapreds ((x21268))
+:extrapreds ((x21269))
+:extrapreds ((x21270))
+:extrapreds ((x21271))
+:extrapreds ((x21272))
+:extrapreds ((x21273))
+:extrapreds ((x21274))
+:extrapreds ((x21275))
+:extrapreds ((x21276))
+:extrapreds ((x21277))
+:extrapreds ((x21278))
+:extrapreds ((x21279))
+:extrapreds ((x21280))
+:extrapreds ((x21281))
+:extrapreds ((x21282))
+:extrapreds ((x21283))
+:extrapreds ((x21284))
+:extrapreds ((x21285))
+:extrapreds ((x21286))
+:extrapreds ((x21287))
+:extrapreds ((x21288))
+:extrapreds ((x21289))
+:extrapreds ((x21290))
+:extrapreds ((x21291))
+:extrapreds ((x21292))
+:extrapreds ((x21293))
+:extrapreds ((x21294))
+:extrapreds ((x21295))
+:extrapreds ((x21296))
+:extrapreds ((x21297))
+:extrapreds ((x21298))
+:extrapreds ((x21299))
+:extrapreds ((x21300))
+:extrapreds ((x21301))
+:extrapreds ((x21302))
+:extrapreds ((x21303))
+:extrapreds ((x21304))
+:extrapreds ((x21305))
+:extrapreds ((x21306))
+:extrapreds ((x21307))
+:extrapreds ((x21308))
+:extrapreds ((x21309))
+:extrapreds ((x21310))
+:extrapreds ((x21311))
+:extrapreds ((x21312))
+:extrapreds ((x21313))
+:extrapreds ((x21314))
+:extrapreds ((x21315))
+:extrapreds ((x21316))
+:extrapreds ((x21317))
+:extrapreds ((x21318))
+:extrapreds ((x21319))
+:extrapreds ((x21320))
+:extrapreds ((x21321))
+:extrapreds ((x21322))
+:extrapreds ((x21323))
+:extrapreds ((x21324))
+:extrapreds ((x21325))
+:extrapreds ((x21326))
+:extrapreds ((x21327))
+:extrapreds ((x21328))
+:extrapreds ((x21329))
+:extrapreds ((x21330))
+:extrapreds ((x21331))
+:extrapreds ((x21332))
+:extrapreds ((x21333))
+:extrapreds ((x21334))
+:extrapreds ((x21335))
+:extrapreds ((x21336))
+:extrapreds ((x21337))
+:extrapreds ((x21338))
+:extrapreds ((x21339))
+:extrapreds ((x21340))
+:extrapreds ((x21341))
+:extrapreds ((x21342))
+:extrapreds ((x21343))
+:extrapreds ((x21344))
+:extrapreds ((x21345))
+:extrapreds ((x21346))
+:extrapreds ((x21347))
+:extrapreds ((x21348))
+:extrapreds ((x21349))
+:extrapreds ((x21350))
+:extrapreds ((x21351))
+:extrapreds ((x21352))
+:extrapreds ((x21353))
+:extrapreds ((x21354))
+:extrapreds ((x21355))
+:extrapreds ((x21356))
+:extrapreds ((x21357))
+:extrapreds ((x21358))
+:extrapreds ((x21359))
+:extrapreds ((x21360))
+:extrapreds ((x21361))
+:extrapreds ((x21362))
+:extrapreds ((x21363))
+:extrapreds ((x21364))
+:extrapreds ((x21365))
+:extrapreds ((x21366))
+:extrapreds ((x21367))
+:extrapreds ((x21368))
+:extrapreds ((x21369))
+:extrapreds ((x21370))
+:extrapreds ((x21371))
+:extrapreds ((x21372))
+:extrapreds ((x21373))
+:extrapreds ((x21374))
+:extrapreds ((x21375))
+:extrapreds ((x21376))
+:extrapreds ((x21377))
+:extrapreds ((x21378))
+:extrapreds ((x21379))
+:extrapreds ((x21380))
+:extrapreds ((x21381))
+:extrapreds ((x21382))
+:extrapreds ((x21383))
+:extrapreds ((x21384))
+:extrapreds ((x21385))
+:extrapreds ((x21386))
+:extrapreds ((x21387))
+:extrapreds ((x21388))
+:extrapreds ((x21389))
+:extrapreds ((x21390))
+:extrapreds ((x21391))
+:extrapreds ((x21392))
+:extrapreds ((x21393))
+:extrapreds ((x21394))
+:extrapreds ((x21395))
+:extrapreds ((x21396))
+:extrapreds ((x21397))
+:extrapreds ((x21398))
+:extrapreds ((x21399))
+:extrapreds ((x21400))
+:extrapreds ((x21401))
+:extrapreds ((x21402))
+:extrapreds ((x21403))
+:extrapreds ((x21404))
+:extrapreds ((x21405))
+:extrapreds ((x21406))
+:extrapreds ((x21407))
+:extrapreds ((x21408))
+:extrapreds ((x21409))
+:extrapreds ((x21410))
+:extrapreds ((x21411))
+:extrapreds ((x21412))
+:extrapreds ((x21413))
+:extrapreds ((x21414))
+:extrapreds ((x21415))
+:extrapreds ((x21416))
+:extrapreds ((x21417))
+:extrapreds ((x21418))
+:extrapreds ((x21419))
+:extrapreds ((x21420))
+:extrapreds ((x21421))
+:extrapreds ((x21422))
+:extrapreds ((x21423))
+:extrapreds ((x21424))
+:extrapreds ((x21425))
+:extrapreds ((x21426))
+:extrapreds ((x21427))
+:extrapreds ((x21428))
+:extrapreds ((x21429))
+:extrapreds ((x21430))
+:extrapreds ((x21431))
+:extrapreds ((x21432))
+:extrapreds ((x21433))
+:extrapreds ((x21434))
+:extrapreds ((x21435))
+:extrapreds ((x21436))
+:extrapreds ((x21437))
+:extrapreds ((x21438))
+:extrapreds ((x21439))
+:extrapreds ((x21440))
+:extrapreds ((x21441))
+:extrapreds ((x21442))
+:extrapreds ((x21443))
+:extrapreds ((x21444))
+:extrapreds ((x21445))
+:extrapreds ((x21446))
+:extrapreds ((x21447))
+:extrapreds ((x21448))
+:extrapreds ((x21449))
+:extrapreds ((x21450))
+:extrapreds ((x21451))
+:extrapreds ((x21452))
+:extrapreds ((x21453))
+:extrapreds ((x21454))
+:extrapreds ((x21455))
+:extrapreds ((x21456))
+:extrapreds ((x21457))
+:extrapreds ((x21458))
+:extrapreds ((x21459))
+:extrapreds ((x21460))
+:extrapreds ((x21461))
+:extrapreds ((x21462))
+:extrapreds ((x21463))
+:extrapreds ((x21464))
+:extrapreds ((x21465))
+:extrapreds ((x21466))
+:extrapreds ((x21467))
+:extrapreds ((x21468))
+:extrapreds ((x21469))
+:extrapreds ((x21470))
+:extrapreds ((x21471))
+:extrapreds ((x21472))
+:extrapreds ((x21473))
+:extrapreds ((x21474))
+:extrapreds ((x21475))
+:extrapreds ((x21476))
+:extrapreds ((x21477))
+:extrapreds ((x21478))
+:extrapreds ((x21479))
+:extrapreds ((x21480))
+:extrapreds ((x21481))
+:extrapreds ((x21482))
+:extrapreds ((x21483))
+:extrapreds ((x21484))
+:extrapreds ((x21485))
+:extrapreds ((x21486))
+:extrapreds ((x21487))
+:extrapreds ((x21488))
+:extrapreds ((x21489))
+:extrapreds ((x21490))
+:extrapreds ((x21491))
+:extrapreds ((x21492))
+:extrapreds ((x21493))
+:extrapreds ((x21494))
+:extrapreds ((x21495))
+:extrapreds ((x21496))
+:extrapreds ((x21497))
+:extrapreds ((x21498))
+:extrapreds ((x21499))
+:extrapreds ((x21500))
+:extrapreds ((x21501))
+:extrapreds ((x21502))
+:extrapreds ((x21503))
+:extrapreds ((x21504))
+:extrapreds ((x21505))
+:extrapreds ((x21506))
+:extrapreds ((x21507))
+:extrapreds ((x21508))
+:extrapreds ((x21509))
+:extrapreds ((x21510))
+:extrapreds ((x21511))
+:extrapreds ((x21512))
+:extrapreds ((x21513))
+:extrapreds ((x21514))
+:extrapreds ((x21515))
+:extrapreds ((x21516))
+:extrapreds ((x21517))
+:extrapreds ((x21518))
+:extrapreds ((x21519))
+:extrapreds ((x21520))
+:extrapreds ((x21521))
+:extrapreds ((x21522))
+:extrapreds ((x21523))
+:extrapreds ((x21524))
+:extrapreds ((x21525))
+:extrapreds ((x21526))
+:extrapreds ((x21527))
+:extrapreds ((x21528))
+:extrapreds ((x21529))
+:extrapreds ((x21530))
+:extrapreds ((x21531))
+:extrapreds ((x21532))
+:extrapreds ((x21533))
+:extrapreds ((x21534))
+:extrapreds ((x21535))
+:extrapreds ((x21536))
+:extrapreds ((x21537))
+:extrapreds ((x21538))
+:extrapreds ((x21539))
+:extrapreds ((x21540))
+:extrapreds ((x21541))
+:extrapreds ((x21542))
+:extrapreds ((x21543))
+:extrapreds ((x21544))
+:extrapreds ((x21545))
+:extrapreds ((x21546))
+:extrapreds ((x21547))
+:extrapreds ((x21548))
+:extrapreds ((x21549))
+:extrapreds ((x21550))
+:extrapreds ((x21551))
+:extrapreds ((x21552))
+:extrapreds ((x21553))
+:extrapreds ((x21554))
+:extrapreds ((x21555))
+:extrapreds ((x21556))
+:extrapreds ((x21557))
+:extrapreds ((x21558))
+:extrapreds ((x21559))
+:extrapreds ((x21560))
+:extrapreds ((x21561))
+:extrapreds ((x21562))
+:extrapreds ((x21563))
+:extrapreds ((x21564))
+:extrapreds ((x21565))
+:extrapreds ((x21566))
+:extrapreds ((x21567))
+:extrapreds ((x21568))
+:extrapreds ((x21569))
+:extrapreds ((x21570))
+:extrapreds ((x21571))
+:extrapreds ((x21572))
+:extrapreds ((x21573))
+:extrapreds ((x21574))
+:extrapreds ((x21575))
+:extrapreds ((x21576))
+:extrapreds ((x21577))
+:extrapreds ((x21578))
+:extrapreds ((x21579))
+:extrapreds ((x21580))
+:extrapreds ((x21581))
+:extrapreds ((x21582))
+:extrapreds ((x21583))
+:extrapreds ((x21584))
+:extrapreds ((x21585))
+:extrapreds ((x21586))
+:extrapreds ((x21587))
+:extrapreds ((x21588))
+:extrapreds ((x21589))
+:extrapreds ((x21590))
+:extrapreds ((x21591))
+:extrapreds ((x21592))
+:extrapreds ((x21593))
+:extrapreds ((x21594))
+:extrapreds ((x21595))
+:extrapreds ((x21596))
+:extrapreds ((x21597))
+:extrapreds ((x21598))
+:extrapreds ((x21599))
+:extrapreds ((x21600))
+:extrapreds ((x21601))
+:extrapreds ((x21602))
+:extrapreds ((x21603))
+:extrapreds ((x21604))
+:extrapreds ((x21605))
+:extrapreds ((x21606))
+:extrapreds ((x21607))
+:extrapreds ((x21608))
+:extrapreds ((x21609))
+:extrapreds ((x21610))
+:extrapreds ((x21611))
+:extrapreds ((x21612))
+:extrapreds ((x21613))
+:extrapreds ((x21614))
+:extrapreds ((x21615))
+:extrapreds ((x21616))
+:extrapreds ((x21617))
+:extrapreds ((x21618))
+:extrapreds ((x21619))
+:extrapreds ((x21620))
+:extrapreds ((x21621))
+:extrapreds ((x21622))
+:extrapreds ((x21623))
+:extrapreds ((x21624))
+:extrapreds ((x21625))
+:extrapreds ((x21626))
+:extrapreds ((x21627))
+:extrapreds ((x21628))
+:extrapreds ((x21629))
+:extrapreds ((x21630))
+:extrapreds ((x21631))
+:extrapreds ((x21632))
+:extrapreds ((x21633))
+:extrapreds ((x21634))
+:extrapreds ((x21635))
+:extrapreds ((x21636))
+:extrapreds ((x21637))
+:extrapreds ((x21638))
+:extrapreds ((x21639))
+:extrapreds ((x21640))
+:extrapreds ((x21641))
+:extrapreds ((x21642))
+:extrapreds ((x21643))
+:extrapreds ((x21644))
+:extrapreds ((x21645))
+:extrapreds ((x21646))
+:extrapreds ((x21647))
+:extrapreds ((x21648))
+:extrapreds ((x21649))
+:extrapreds ((x21650))
+:extrapreds ((x21651))
+:extrapreds ((x21652))
+:extrapreds ((x21653))
+:extrapreds ((x21654))
+:extrapreds ((x21655))
+:extrapreds ((x21656))
+:extrapreds ((x21657))
+:extrapreds ((x21658))
+:extrapreds ((x21659))
+:extrapreds ((x21660))
+:extrapreds ((x21661))
+:extrapreds ((x21662))
+:extrapreds ((x21663))
+:extrapreds ((x21664))
+:extrapreds ((x21665))
+:extrapreds ((x21666))
+:extrapreds ((x21667))
+:extrapreds ((x21668))
+:extrapreds ((x21669))
+:extrapreds ((x21670))
+:extrapreds ((x21671))
+:extrapreds ((x21672))
+:extrapreds ((x21673))
+:extrapreds ((x21674))
+:extrapreds ((x21675))
+:extrapreds ((x21676))
+:extrapreds ((x21677))
+:extrapreds ((x21678))
+:extrapreds ((x21679))
+:extrapreds ((x21680))
+:extrapreds ((x21681))
+:extrapreds ((x21682))
+:extrapreds ((x21683))
+:extrapreds ((x21684))
+:extrapreds ((x21685))
+:extrapreds ((x21686))
+:extrapreds ((x21687))
+:extrapreds ((x21688))
+:extrapreds ((x21689))
+:extrapreds ((x21690))
+:extrapreds ((x21691))
+:extrapreds ((x21692))
+:extrapreds ((x21693))
+:extrapreds ((x21694))
+:extrapreds ((x21695))
+:extrapreds ((x21696))
+:extrapreds ((x21697))
+:extrapreds ((x21698))
+:extrapreds ((x21699))
+:extrapreds ((x21700))
+:extrapreds ((x21701))
+:extrapreds ((x21702))
+:extrapreds ((x21703))
+:extrapreds ((x21704))
+:extrapreds ((x21705))
+:extrapreds ((x21706))
+:extrapreds ((x21707))
+:extrapreds ((x21708))
+:extrapreds ((x21709))
+:extrapreds ((x21710))
+:extrapreds ((x21711))
+:extrapreds ((x21712))
+:extrapreds ((x21713))
+:extrapreds ((x21714))
+:extrapreds ((x21715))
+:extrapreds ((x21716))
+:extrapreds ((x21717))
+:extrapreds ((x21718))
+:extrapreds ((x21719))
+:extrapreds ((x21720))
+:extrapreds ((x21721))
+:extrapreds ((x21722))
+:extrapreds ((x21723))
+:extrapreds ((x21724))
+:extrapreds ((x21725))
+:extrapreds ((x21726))
+:extrapreds ((x21727))
+:extrapreds ((x21728))
+:extrapreds ((x21729))
+:extrapreds ((x21730))
+:extrapreds ((x21731))
+:extrapreds ((x21732))
+:extrapreds ((x21733))
+:extrapreds ((x21734))
+:extrapreds ((x21735))
+:extrapreds ((x21736))
+:extrapreds ((x21737))
+:extrapreds ((x21738))
+:extrapreds ((x21739))
+:extrapreds ((x21740))
+:extrapreds ((x21741))
+:extrapreds ((x21742))
+:extrapreds ((x21743))
+:extrapreds ((x21744))
+:extrapreds ((x21745))
+:extrapreds ((x21746))
+:extrapreds ((x21747))
+:extrapreds ((x21748))
+:extrapreds ((x21749))
+:extrapreds ((x21750))
+:extrapreds ((x21751))
+:extrapreds ((x21752))
+:extrapreds ((x21753))
+:extrapreds ((x21754))
+:extrapreds ((x21755))
+:extrapreds ((x21756))
+:extrapreds ((x21757))
+:extrapreds ((x21758))
+:extrapreds ((x21759))
+:extrapreds ((x21760))
+:extrapreds ((x21761))
+:extrapreds ((x21762))
+:extrapreds ((x21763))
+:extrapreds ((x21764))
+:extrapreds ((x21765))
+:extrapreds ((x21766))
+:extrapreds ((x21767))
+:extrapreds ((x21768))
+:extrapreds ((x21769))
+:extrapreds ((x21770))
+:extrapreds ((x21771))
+:extrapreds ((x21772))
+:extrapreds ((x21773))
+:extrapreds ((x21774))
+:extrapreds ((x21775))
+:extrapreds ((x21776))
+:extrapreds ((x21777))
+:extrapreds ((x21778))
+:extrapreds ((x21779))
+:extrapreds ((x21780))
+:extrapreds ((x21781))
+:extrapreds ((x21782))
+:extrapreds ((x21783))
+:extrapreds ((x21784))
+:extrapreds ((x21785))
+:extrapreds ((x21786))
+:extrapreds ((x21787))
+:extrapreds ((x21788))
+:extrapreds ((x21789))
+:extrapreds ((x21790))
+:extrapreds ((x21791))
+:extrapreds ((x21792))
+:extrapreds ((x21793))
+:extrapreds ((x21794))
+:extrapreds ((x21795))
+:extrapreds ((x21796))
+:extrapreds ((x21797))
+:extrapreds ((x21798))
+:extrapreds ((x21799))
+:extrapreds ((x21800))
+:extrapreds ((x21801))
+:extrapreds ((x21802))
+:extrapreds ((x21803))
+:extrapreds ((x21804))
+:extrapreds ((x21805))
+:extrapreds ((x21806))
+:extrapreds ((x21807))
+:extrapreds ((x21808))
+:extrapreds ((x21809))
+:extrapreds ((x21810))
+:extrapreds ((x21811))
+:extrapreds ((x21812))
+:extrapreds ((x21813))
+:extrapreds ((x21814))
+:extrapreds ((x21815))
+:extrapreds ((x21816))
+:extrapreds ((x21817))
+:extrapreds ((x21818))
+:extrapreds ((x21819))
+:extrapreds ((x21820))
+:extrapreds ((x21821))
+:extrapreds ((x21822))
+:extrapreds ((x21823))
+:extrapreds ((x21824))
+:extrapreds ((x21825))
+:extrapreds ((x21826))
+:extrapreds ((x21827))
+:extrapreds ((x21828))
+:extrapreds ((x21829))
+:extrapreds ((x21830))
+:extrapreds ((x21831))
+:extrapreds ((x21832))
+:extrapreds ((x21833))
+:extrapreds ((x21834))
+:extrapreds ((x21835))
+:extrapreds ((x21836))
+:extrapreds ((x21837))
+:extrapreds ((x21838))
+:extrapreds ((x21839))
+:extrapreds ((x21840))
+:extrapreds ((x21841))
+:extrapreds ((x21842))
+:extrapreds ((x21843))
+:extrapreds ((x21844))
+:extrapreds ((x21845))
+:extrapreds ((x21846))
+:extrapreds ((x21847))
+:extrapreds ((x21848))
+:extrapreds ((x21849))
+:extrapreds ((x21850))
+:extrapreds ((x21851))
+:extrapreds ((x21852))
+:extrapreds ((x21853))
+:extrapreds ((x21854))
+:extrapreds ((x21855))
+:extrapreds ((x21856))
+:extrapreds ((x21857))
+:extrapreds ((x21858))
+:extrapreds ((x21859))
+:extrapreds ((x21860))
+:extrapreds ((x21861))
+:extrapreds ((x21862))
+:extrapreds ((x21863))
+:extrapreds ((x21864))
+:extrapreds ((x21865))
+:extrapreds ((x21866))
+:extrapreds ((x21867))
+:extrapreds ((x21868))
+:extrapreds ((x21869))
+:extrapreds ((x21870))
+:extrapreds ((x21871))
+:extrapreds ((x21872))
+:extrapreds ((x21873))
+:extrapreds ((x21874))
+:extrapreds ((x21875))
+:extrapreds ((x21876))
+:extrapreds ((x21877))
+:extrapreds ((x21878))
+:extrapreds ((x21879))
+:extrapreds ((x21880))
+:extrapreds ((x21881))
+:extrapreds ((x21882))
+:extrapreds ((x21883))
+:extrapreds ((x21884))
+:extrapreds ((x21885))
+:extrapreds ((x21886))
+:extrapreds ((x21887))
+:extrapreds ((x21888))
+:extrapreds ((x21889))
+:extrapreds ((x21890))
+:extrapreds ((x21891))
+:extrapreds ((x21892))
+:extrapreds ((x21893))
+:extrapreds ((x21894))
+:extrapreds ((x21895))
+:extrapreds ((x21896))
+:extrapreds ((x21897))
+:extrapreds ((x21898))
+:extrapreds ((x21899))
+:extrapreds ((x21900))
+:extrapreds ((x21901))
+:extrapreds ((x21902))
+:extrapreds ((x21903))
+:extrapreds ((x21904))
+:extrapreds ((x21905))
+:extrapreds ((x21906))
+:extrapreds ((x21907))
+:extrapreds ((x21908))
+:extrapreds ((x21909))
+:extrapreds ((x21910))
+:extrapreds ((x21911))
+:extrapreds ((x21912))
+:extrapreds ((x21913))
+:extrapreds ((x21914))
+:extrapreds ((x21915))
+:extrapreds ((x21916))
+:extrapreds ((x21917))
+:extrapreds ((x21918))
+:extrapreds ((x21919))
+:extrapreds ((x21920))
+:extrapreds ((x21921))
+:extrapreds ((x21922))
+:extrapreds ((x21923))
+:extrapreds ((x21924))
+:extrapreds ((x21925))
+:extrapreds ((x21926))
+:extrapreds ((x21927))
+:extrapreds ((x21928))
+:extrapreds ((x21929))
+:extrapreds ((x21930))
+:extrapreds ((x21931))
+:extrapreds ((x21932))
+:extrapreds ((x21933))
+:extrapreds ((x21934))
+:extrapreds ((x21935))
+:extrapreds ((x21936))
+:extrapreds ((x21937))
+:extrapreds ((x21938))
+:extrapreds ((x21939))
+:extrapreds ((x21940))
+:extrapreds ((x21941))
+:extrapreds ((x21942))
+:extrapreds ((x21943))
+:extrapreds ((x21944))
+:extrapreds ((x21945))
+:extrapreds ((x21946))
+:extrapreds ((x21947))
+:extrapreds ((x21948))
+:extrapreds ((x21949))
+:extrapreds ((x21950))
+:extrapreds ((x21951))
+:extrapreds ((x21952))
+:extrapreds ((x21953))
+:extrapreds ((x21954))
+:extrapreds ((x21955))
+:extrapreds ((x21956))
+:extrapreds ((x21957))
+:extrapreds ((x21958))
+:extrapreds ((x21959))
+:extrapreds ((x21960))
+:extrapreds ((x21961))
+:extrapreds ((x21962))
+:extrapreds ((x21963))
+:extrapreds ((x21964))
+:extrapreds ((x21965))
+:extrapreds ((x21966))
+:extrapreds ((x21967))
+:extrapreds ((x21968))
+:extrapreds ((x21969))
+:extrapreds ((x21970))
+:extrapreds ((x21971))
+:extrapreds ((x21972))
+:extrapreds ((x21973))
+:extrapreds ((x21974))
+:extrapreds ((x21975))
+:extrapreds ((x21976))
+:extrapreds ((x21977))
+:extrapreds ((x21978))
+:extrapreds ((x21979))
+:extrapreds ((x21980))
+:extrapreds ((x21981))
+:extrapreds ((x21982))
+:extrapreds ((x21983))
+:extrapreds ((x21984))
+:extrapreds ((x21985))
+:extrapreds ((x21986))
+:extrapreds ((x21987))
+:extrapreds ((x21988))
+:extrapreds ((x21989))
+:extrapreds ((x21990))
+:extrapreds ((x21991))
+:extrapreds ((x21992))
+:extrapreds ((x21993))
+:extrapreds ((x21994))
+:extrapreds ((x21995))
+:extrapreds ((x21996))
+:extrapreds ((x21997))
+:extrapreds ((x21998))
+:extrapreds ((x21999))
+:extrapreds ((x22000))
+:extrapreds ((x22001))
+:extrapreds ((x22002))
+:extrapreds ((x22003))
+:extrapreds ((x22004))
+:extrapreds ((x22005))
+:extrapreds ((x22006))
+:extrapreds ((x22007))
+:extrapreds ((x22008))
+:extrapreds ((x22009))
+:extrapreds ((x22010))
+:extrapreds ((x22011))
+:extrapreds ((x22012))
+:extrapreds ((x22013))
+:extrapreds ((x22014))
+:extrapreds ((x22015))
+:extrapreds ((x22016))
+:extrapreds ((x22017))
+:extrapreds ((x22018))
+:extrapreds ((x22019))
+:extrapreds ((x22020))
+:extrapreds ((x22021))
+:extrapreds ((x22022))
+:extrapreds ((x22023))
+:extrapreds ((x22024))
+:extrapreds ((x22025))
+:extrapreds ((x22026))
+:extrapreds ((x22027))
+:extrapreds ((x22028))
+:extrapreds ((x22029))
+:extrapreds ((x22030))
+:extrapreds ((x22031))
+:extrapreds ((x22032))
+:extrapreds ((x22033))
+:extrapreds ((x22034))
+:extrapreds ((x22035))
+:extrapreds ((x22036))
+:extrapreds ((x22037))
+:extrapreds ((x22038))
+:extrapreds ((x22039))
+:extrapreds ((x22040))
+:extrapreds ((x22041))
+:extrapreds ((x22042))
+:extrapreds ((x22043))
+:extrapreds ((x22044))
+:extrapreds ((x22045))
+:extrapreds ((x22046))
+:extrapreds ((x22047))
+:extrapreds ((x22048))
+:extrapreds ((x22049))
+:extrapreds ((x22050))
+:extrapreds ((x22051))
+:extrapreds ((x22052))
+:extrapreds ((x22053))
+:extrapreds ((x22054))
+:extrapreds ((x22055))
+:extrapreds ((x22056))
+:extrapreds ((x22057))
+:extrapreds ((x22058))
+:extrapreds ((x22059))
+:extrapreds ((x22060))
+:extrapreds ((x22061))
+:extrapreds ((x22062))
+:extrapreds ((x22063))
+:extrapreds ((x22064))
+:extrapreds ((x22065))
+:extrapreds ((x22066))
+:extrapreds ((x22067))
+:extrapreds ((x22068))
+:extrapreds ((x22069))
+:extrapreds ((x22070))
+:extrapreds ((x22071))
+:extrapreds ((x22072))
+:extrapreds ((x22073))
+:extrapreds ((x22074))
+:extrapreds ((x22075))
+:extrapreds ((x22076))
+:extrapreds ((x22077))
+:extrapreds ((x22078))
+:extrapreds ((x22079))
+:extrapreds ((x22080))
+:extrapreds ((x22081))
+:extrapreds ((x22082))
+:extrapreds ((x22083))
+:extrapreds ((x22084))
+:extrapreds ((x22085))
+:extrapreds ((x22086))
+:extrapreds ((x22087))
+:extrapreds ((x22088))
+:extrapreds ((x22089))
+:extrapreds ((x22090))
+:extrapreds ((x22091))
+:extrapreds ((x22092))
+:extrapreds ((x22093))
+:extrapreds ((x22094))
+:extrapreds ((x22095))
+:extrapreds ((x22096))
+:extrapreds ((x22097))
+:extrapreds ((x22098))
+:extrapreds ((x22099))
+:extrapreds ((x22100))
+:extrapreds ((x22101))
+:extrapreds ((x22102))
+:extrapreds ((x22103))
+:extrapreds ((x22104))
+:extrapreds ((x22105))
+:extrapreds ((x22106))
+:extrapreds ((x22107))
+:extrapreds ((x22108))
+:extrapreds ((x22109))
+:extrapreds ((x22110))
+:extrapreds ((x22111))
+:extrapreds ((x22112))
+:extrapreds ((x22113))
+:extrapreds ((x22114))
+:extrapreds ((x22115))
+:extrapreds ((x22116))
+:extrapreds ((x22117))
+:extrapreds ((x22118))
+:extrapreds ((x22119))
+:extrapreds ((x22120))
+:extrapreds ((x22121))
+:extrapreds ((x22122))
+:extrapreds ((x22123))
+:extrapreds ((x22124))
+:extrapreds ((x22125))
+:extrapreds ((x22126))
+:extrapreds ((x22127))
+:extrapreds ((x22128))
+:extrapreds ((x22129))
+:extrapreds ((x22130))
+:extrapreds ((x22131))
+:extrapreds ((x22132))
+:extrapreds ((x22133))
+:extrapreds ((x22134))
+:extrapreds ((x22135))
+:extrapreds ((x22136))
+:extrapreds ((x22137))
+:extrapreds ((x22138))
+:extrapreds ((x22139))
+:extrapreds ((x22140))
+:extrapreds ((x22141))
+:extrapreds ((x22142))
+:extrapreds ((x22143))
+:extrapreds ((x22144))
+:extrapreds ((x22145))
+:extrapreds ((x22146))
+:extrapreds ((x22147))
+:extrapreds ((x22148))
+:extrapreds ((x22149))
+:extrapreds ((x22150))
+:extrapreds ((x22151))
+:extrapreds ((x22152))
+:extrapreds ((x22153))
+:extrapreds ((x22154))
+:extrapreds ((x22155))
+:extrapreds ((x22156))
+:extrapreds ((x22157))
+:extrapreds ((x22158))
+:extrapreds ((x22159))
+:extrapreds ((x22160))
+:extrapreds ((x22161))
+:extrapreds ((x22162))
+:extrapreds ((x22163))
+:extrapreds ((x22164))
+:extrapreds ((x22165))
+:extrapreds ((x22166))
+:extrapreds ((x22167))
+:extrapreds ((x22168))
+:extrapreds ((x22169))
+:extrapreds ((x22170))
+:extrapreds ((x22171))
+:extrapreds ((x22172))
+:extrapreds ((x22173))
+:extrapreds ((x22174))
+:extrapreds ((x22175))
+:extrapreds ((x22176))
+:extrapreds ((x22177))
+:extrapreds ((x22178))
+:extrapreds ((x22179))
+:extrapreds ((x22180))
+:extrapreds ((x22181))
+:extrapreds ((x22182))
+:extrapreds ((x22183))
+:extrapreds ((x22184))
+:extrapreds ((x22185))
+:extrapreds ((x22186))
+:extrapreds ((x22187))
+:extrapreds ((x22188))
+:extrapreds ((x22189))
+:extrapreds ((x22190))
+:extrapreds ((x22191))
+:extrapreds ((x22192))
+:extrapreds ((x22193))
+:extrapreds ((x22194))
+:extrapreds ((x22195))
+:extrapreds ((x22196))
+:extrapreds ((x22197))
+:extrapreds ((x22198))
+:extrapreds ((x22199))
+:extrapreds ((x22200))
+:extrapreds ((x22201))
+:extrapreds ((x22202))
+:extrapreds ((x22203))
+:extrapreds ((x22204))
+:extrapreds ((x22205))
+:extrapreds ((x22206))
+:extrapreds ((x22207))
+:extrapreds ((x22208))
+:extrapreds ((x22209))
+:extrapreds ((x22210))
+:extrapreds ((x22211))
+:extrapreds ((x22212))
+:extrapreds ((x22213))
+:extrapreds ((x22214))
+:extrapreds ((x22215))
+:extrapreds ((x22216))
+:extrapreds ((x22217))
+:extrapreds ((x22218))
+:extrapreds ((x22219))
+:extrapreds ((x22220))
+:extrapreds ((x22221))
+:extrapreds ((x22222))
+:extrapreds ((x22223))
+:extrapreds ((x22224))
+:extrapreds ((x22225))
+:extrapreds ((x22226))
+:extrapreds ((x22227))
+:extrapreds ((x22228))
+:extrapreds ((x22229))
+:extrapreds ((x22230))
+:extrapreds ((x22231))
+:extrapreds ((x22232))
+:extrapreds ((x22233))
+:extrapreds ((x22234))
+:extrapreds ((x22235))
+:extrapreds ((x22236))
+:extrapreds ((x22237))
+:extrapreds ((x22238))
+:extrapreds ((x22239))
+:extrapreds ((x22240))
+:extrapreds ((x22241))
+:extrapreds ((x22242))
+:extrapreds ((x22243))
+:extrapreds ((x22244))
+:extrapreds ((x22245))
+:extrapreds ((x22246))
+:extrapreds ((x22247))
+:extrapreds ((x22248))
+:extrapreds ((x22249))
+:extrapreds ((x22250))
+:extrapreds ((x22251))
+:extrapreds ((x22252))
+:extrapreds ((x22253))
+:extrapreds ((x22254))
+:extrapreds ((x22255))
+:extrapreds ((x22256))
+:extrapreds ((x22257))
+:extrapreds ((x22258))
+:extrapreds ((x22259))
+:extrapreds ((x22260))
+:extrapreds ((x22261))
+:extrapreds ((x22262))
+:extrapreds ((x22263))
+:extrapreds ((x22264))
+:extrapreds ((x22265))
+:extrapreds ((x22266))
+:extrapreds ((x22267))
+:extrapreds ((x22268))
+:extrapreds ((x22269))
+:extrapreds ((x22270))
+:extrapreds ((x22271))
+:extrapreds ((x22272))
+:extrapreds ((x22273))
+:extrapreds ((x22274))
+:extrapreds ((x22275))
+:extrapreds ((x22276))
+:extrapreds ((x22277))
+:extrapreds ((x22278))
+:extrapreds ((x22279))
+:extrapreds ((x22280))
+:extrapreds ((x22281))
+:extrapreds ((x22282))
+:extrapreds ((x22283))
+:extrapreds ((x22284))
+:extrapreds ((x22285))
+:extrapreds ((x22286))
+:extrapreds ((x22287))
+:extrapreds ((x22288))
+:extrapreds ((x22289))
+:extrapreds ((x22290))
+:extrapreds ((x22291))
+:extrapreds ((x22292))
+:extrapreds ((x22293))
+:extrapreds ((x22294))
+:extrapreds ((x22295))
+:extrapreds ((x22296))
+:extrapreds ((x22297))
+:extrapreds ((x22298))
+:extrapreds ((x22299))
+:extrapreds ((x22300))
+:extrapreds ((x22301))
+:extrapreds ((x22302))
+:extrapreds ((x22303))
+:extrapreds ((x22304))
+:extrapreds ((x22305))
+:extrapreds ((x22306))
+:extrapreds ((x22307))
+:extrapreds ((x22308))
+:extrapreds ((x22309))
+:extrapreds ((x22310))
+:extrapreds ((x22311))
+:extrapreds ((x22312))
+:extrapreds ((x22313))
+:extrapreds ((x22314))
+:extrapreds ((x22315))
+:extrapreds ((x22316))
+:extrapreds ((x22317))
+:extrapreds ((x22318))
+:extrapreds ((x22319))
+:extrapreds ((x22320))
+:extrapreds ((x22321))
+:extrapreds ((x22322))
+:extrapreds ((x22323))
+:extrapreds ((x22324))
+:extrapreds ((x22325))
+:extrapreds ((x22326))
+:extrapreds ((x22327))
+:extrapreds ((x22328))
+:extrapreds ((x22329))
+:extrapreds ((x22330))
+:extrapreds ((x22331))
+:extrapreds ((x22332))
+:extrapreds ((x22333))
+:extrapreds ((x22334))
+:extrapreds ((x22335))
+:extrapreds ((x22336))
+:extrapreds ((x22337))
+:extrapreds ((x22338))
+:extrapreds ((x22339))
+:extrapreds ((x22340))
+:extrapreds ((x22341))
+:extrapreds ((x22342))
+:extrapreds ((x22343))
+:extrapreds ((x22344))
+:extrapreds ((x22345))
+:extrapreds ((x22346))
+:extrapreds ((x22347))
+:extrapreds ((x22348))
+:extrapreds ((x22349))
+:extrapreds ((x22350))
+:extrapreds ((x22351))
+:extrapreds ((x22352))
+:extrapreds ((x22353))
+:extrapreds ((x22354))
+:extrapreds ((x22355))
+:extrapreds ((x22356))
+:extrapreds ((x22357))
+:extrapreds ((x22358))
+:extrapreds ((x22359))
+:extrapreds ((x22360))
+:extrapreds ((x22361))
+:extrapreds ((x22362))
+:extrapreds ((x22363))
+:extrapreds ((x22364))
+:extrapreds ((x22365))
+:extrapreds ((x22366))
+:extrapreds ((x22367))
+:extrapreds ((x22368))
+:extrapreds ((x22369))
+:extrapreds ((x22370))
+:extrapreds ((x22371))
+:extrapreds ((x22372))
+:extrapreds ((x22373))
+:extrapreds ((x22374))
+:extrapreds ((x22375))
+:extrapreds ((x22376))
+:extrapreds ((x22377))
+:extrapreds ((x22378))
+:extrapreds ((x22379))
+:extrapreds ((x22380))
+:extrapreds ((x22381))
+:extrapreds ((x22382))
+:extrapreds ((x22383))
+:extrapreds ((x22384))
+:extrapreds ((x22385))
+:extrapreds ((x22386))
+:extrapreds ((x22387))
+:extrapreds ((x22388))
+:extrapreds ((x22389))
+:extrapreds ((x22390))
+:extrapreds ((x22391))
+:extrapreds ((x22392))
+:extrapreds ((x22393))
+:extrapreds ((x22394))
+:extrapreds ((x22395))
+:extrapreds ((x22396))
+:extrapreds ((x22397))
+:extrapreds ((x22398))
+:extrapreds ((x22399))
+:extrapreds ((x22400))
+:extrapreds ((x22401))
+:extrapreds ((x22402))
+:extrapreds ((x22403))
+:extrapreds ((x22404))
+:extrapreds ((x22405))
+:extrapreds ((x22406))
+:extrapreds ((x22407))
+:extrapreds ((x22408))
+:extrapreds ((x22409))
+:extrapreds ((x22410))
+:extrapreds ((x22411))
+:extrapreds ((x22412))
+:extrapreds ((x22413))
+:extrapreds ((x22414))
+:extrapreds ((x22415))
+:extrapreds ((x22416))
+:extrapreds ((x22417))
+:extrapreds ((x22418))
+:extrapreds ((x22419))
+:extrapreds ((x22420))
+:extrapreds ((x22421))
+:extrapreds ((x22422))
+:extrapreds ((x22423))
+:extrapreds ((x22424))
+:extrapreds ((x22425))
+:extrapreds ((x22426))
+:extrapreds ((x22427))
+:extrapreds ((x22428))
+:extrapreds ((x22429))
+:extrapreds ((x22430))
+:extrapreds ((x22431))
+:extrapreds ((x22432))
+:extrapreds ((x22433))
+:extrapreds ((x22434))
+:extrapreds ((x22435))
+:extrapreds ((x22436))
+:extrapreds ((x22437))
+:extrapreds ((x22438))
+:extrapreds ((x22439))
+:extrapreds ((x22440))
+:extrapreds ((x22441))
+:extrapreds ((x22442))
+:extrapreds ((x22443))
+:extrapreds ((x22444))
+:extrapreds ((x22445))
+:extrapreds ((x22446))
+:extrapreds ((x22447))
+:extrapreds ((x22448))
+:extrapreds ((x22449))
+:extrapreds ((x22450))
+:extrapreds ((x22451))
+:extrapreds ((x22452))
+:extrapreds ((x22453))
+:extrapreds ((x22454))
+:extrapreds ((x22455))
+:extrapreds ((x22456))
+:extrapreds ((x22457))
+:extrapreds ((x22458))
+:extrapreds ((x22459))
+:extrapreds ((x22460))
+:extrapreds ((x22461))
+:extrapreds ((x22462))
+:extrapreds ((x22463))
+:extrapreds ((x22464))
+:extrapreds ((x22465))
+:extrapreds ((x22466))
+:extrapreds ((x22467))
+:extrapreds ((x22468))
+:extrapreds ((x22469))
+:extrapreds ((x22470))
+:extrapreds ((x22471))
+:extrapreds ((x22472))
+:extrapreds ((x22473))
+:extrapreds ((x22474))
+:extrapreds ((x22475))
+:extrapreds ((x22476))
+:extrapreds ((x22477))
+:extrapreds ((x22478))
+:extrapreds ((x22479))
+:extrapreds ((x22480))
+:extrapreds ((x22481))
+:extrapreds ((x22482))
+:extrapreds ((x22483))
+:extrapreds ((x22484))
+:extrapreds ((x22485))
+:extrapreds ((x22486))
+:extrapreds ((x22487))
+:extrapreds ((x22488))
+:extrapreds ((x22489))
+:extrapreds ((x22490))
+:extrapreds ((x22491))
+:extrapreds ((x22492))
+:extrapreds ((x22493))
+:extrapreds ((x22494))
+:extrapreds ((x22495))
+:extrapreds ((x22496))
+:extrapreds ((x22497))
+:extrapreds ((x22498))
+:extrapreds ((x22499))
+:extrapreds ((x22500))
+:extrapreds ((x22501))
+:extrapreds ((x22502))
+:extrapreds ((x22503))
+:extrapreds ((x22504))
+:extrapreds ((x22505))
+:extrapreds ((x22506))
+:extrapreds ((x22507))
+:extrapreds ((x22508))
+:extrapreds ((x22509))
+:extrapreds ((x22510))
+:extrapreds ((x22511))
+:extrapreds ((x22512))
+:extrapreds ((x22513))
+:extrapreds ((x22514))
+:extrapreds ((x22515))
+:extrapreds ((x22516))
+:extrapreds ((x22517))
+:extrapreds ((x22518))
+:extrapreds ((x22519))
+:extrapreds ((x22520))
+:extrapreds ((x22521))
+:extrapreds ((x22522))
+:extrapreds ((x22523))
+:extrapreds ((x22524))
+:extrapreds ((x22525))
+:extrapreds ((x22526))
+:extrapreds ((x22527))
+:extrapreds ((x22528))
+:extrapreds ((x22529))
+:extrapreds ((x22530))
+:extrapreds ((x22531))
+:extrapreds ((x22532))
+:extrapreds ((x22533))
+:extrapreds ((x22534))
+:extrapreds ((x22535))
+:extrapreds ((x22536))
+:extrapreds ((x22537))
+:extrapreds ((x22538))
+:extrapreds ((x22539))
+:extrapreds ((x22540))
+:extrapreds ((x22541))
+:extrapreds ((x22542))
+:extrapreds ((x22543))
+:extrapreds ((x22544))
+:extrapreds ((x22545))
+:extrapreds ((x22546))
+:extrapreds ((x22547))
+:extrapreds ((x22548))
+:extrapreds ((x22549))
+:extrapreds ((x22550))
+:extrapreds ((x22551))
+:extrapreds ((x22552))
+:extrapreds ((x22553))
+:extrapreds ((x22554))
+:extrapreds ((x22555))
+:extrapreds ((x22556))
+:extrapreds ((x22557))
+:extrapreds ((x22558))
+:extrapreds ((x22559))
+:extrapreds ((x22560))
+:extrapreds ((x22561))
+:extrapreds ((x22562))
+:extrapreds ((x22563))
+:extrapreds ((x22564))
+:extrapreds ((x22565))
+:extrapreds ((x22566))
+:extrapreds ((x22567))
+:extrapreds ((x22568))
+:extrapreds ((x22569))
+:extrapreds ((x22570))
+:extrapreds ((x22571))
+:extrapreds ((x22572))
+:extrapreds ((x22573))
+:extrapreds ((x22574))
+:extrapreds ((x22575))
+:extrapreds ((x22576))
+:extrapreds ((x22577))
+:extrapreds ((x22578))
+:extrapreds ((x22579))
+:extrapreds ((x22580))
+:extrapreds ((x22581))
+:extrapreds ((x22582))
+:extrapreds ((x22583))
+:extrapreds ((x22584))
+:extrapreds ((x22585))
+:extrapreds ((x22586))
+:extrapreds ((x22587))
+:extrapreds ((x22588))
+:extrapreds ((x22589))
+:extrapreds ((x22590))
+:extrapreds ((x22591))
+:extrapreds ((x22592))
+:extrapreds ((x22593))
+:extrapreds ((x22594))
+:extrapreds ((x22595))
+:extrapreds ((x22596))
+:extrapreds ((x22597))
+:extrapreds ((x22598))
+:extrapreds ((x22599))
+:extrapreds ((x22600))
+:extrapreds ((x22601))
+:extrapreds ((x22602))
+:extrapreds ((x22603))
+:extrapreds ((x22604))
+:extrapreds ((x22605))
+:extrapreds ((x22606))
+:extrapreds ((x22607))
+:extrapreds ((x22608))
+:extrapreds ((x22609))
+:extrapreds ((x22610))
+:extrapreds ((x22611))
+:extrapreds ((x22612))
+:extrapreds ((x22613))
+:extrapreds ((x22614))
+:extrapreds ((x22615))
+:extrapreds ((x22616))
+:extrapreds ((x22617))
+:extrapreds ((x22618))
+:extrapreds ((x22619))
+:extrapreds ((x22620))
+:extrapreds ((x22621))
+:extrapreds ((x22622))
+:extrapreds ((x22623))
+:extrapreds ((x22624))
+:extrapreds ((x22625))
+:extrapreds ((x22626))
+:extrapreds ((x22627))
+:extrapreds ((x22628))
+:extrapreds ((x22629))
+:extrapreds ((x22630))
+:extrapreds ((x22631))
+:extrapreds ((x22632))
+:extrapreds ((x22633))
+:extrapreds ((x22634))
+:extrapreds ((x22635))
+:extrapreds ((x22636))
+:extrapreds ((x22637))
+:extrapreds ((x22638))
+:extrapreds ((x22639))
+:extrapreds ((x22640))
+:extrapreds ((x22641))
+:extrapreds ((x22642))
+:extrapreds ((x22643))
+:extrapreds ((x22644))
+:extrapreds ((x22645))
+:extrapreds ((x22646))
+:extrapreds ((x22647))
+:extrapreds ((x22648))
+:extrapreds ((x22649))
+:extrapreds ((x22650))
+:extrapreds ((x22651))
+:extrapreds ((x22652))
+:extrapreds ((x22653))
+:extrapreds ((x22654))
+:extrapreds ((x22655))
+:extrapreds ((x22656))
+:extrapreds ((x22657))
+:extrapreds ((x22658))
+:extrapreds ((x22659))
+:extrapreds ((x22660))
+:extrapreds ((x22661))
+:extrapreds ((x22662))
+:extrapreds ((x22663))
+:extrapreds ((x22664))
+:extrapreds ((x22665))
+:extrapreds ((x22666))
+:extrapreds ((x22667))
+:extrapreds ((x22668))
+:extrapreds ((x22669))
+:extrapreds ((x22670))
+:extrapreds ((x22671))
+:extrapreds ((x22672))
+:extrapreds ((x22673))
+:extrapreds ((x22674))
+:extrapreds ((x22675))
+:extrapreds ((x22676))
+:extrapreds ((x22677))
+:extrapreds ((x22678))
+:extrapreds ((x22679))
+:extrapreds ((x22680))
+:extrapreds ((x22681))
+:extrapreds ((x22682))
+:extrapreds ((x22683))
+:extrapreds ((x22684))
+:extrapreds ((x22685))
+:extrapreds ((x22686))
+:extrapreds ((x22687))
+:extrapreds ((x22688))
+:extrapreds ((x22689))
+:extrapreds ((x22690))
+:extrapreds ((x22691))
+:extrapreds ((x22692))
+:extrapreds ((x22693))
+:extrapreds ((x22694))
+:extrapreds ((x22695))
+:extrapreds ((x22696))
+:extrapreds ((x22697))
+:extrapreds ((x22698))
+:extrapreds ((x22699))
+:extrapreds ((x22700))
+:extrapreds ((x22701))
+:extrapreds ((x22702))
+:extrapreds ((x22703))
+:extrapreds ((x22704))
+:extrapreds ((x22705))
+:extrapreds ((x22706))
+:extrapreds ((x22707))
+:extrapreds ((x22708))
+:extrapreds ((x22709))
+:extrapreds ((x22710))
+:extrapreds ((x22711))
+:extrapreds ((x22712))
+:extrapreds ((x22713))
+:extrapreds ((x22714))
+:extrapreds ((x22715))
+:extrapreds ((x22716))
+:extrapreds ((x22717))
+:extrapreds ((x22718))
+:extrapreds ((x22719))
+:extrapreds ((x22720))
+:extrapreds ((x22721))
+:extrapreds ((x22722))
+:extrapreds ((x22723))
+:extrapreds ((x22724))
+:extrapreds ((x22725))
+:extrapreds ((x22726))
+:extrapreds ((x22727))
+:extrapreds ((x22728))
+:extrapreds ((x22729))
+:extrapreds ((x22730))
+:extrapreds ((x22731))
+:extrapreds ((x22732))
+:extrapreds ((x22733))
+:extrapreds ((x22734))
+:extrapreds ((x22735))
+:extrapreds ((x22736))
+:extrapreds ((x22737))
+:extrapreds ((x22738))
+:extrapreds ((x22739))
+:extrapreds ((x22740))
+:extrapreds ((x22741))
+:extrapreds ((x22742))
+:extrapreds ((x22743))
+:extrapreds ((x22744))
+:extrapreds ((x22745))
+:extrapreds ((x22746))
+:extrapreds ((x22747))
+:extrapreds ((x22748))
+:extrapreds ((x22749))
+:extrapreds ((x22750))
+:extrapreds ((x22751))
+:extrapreds ((x22752))
+:extrapreds ((x22753))
+:extrapreds ((x22754))
+:extrapreds ((x22755))
+:extrapreds ((x22756))
+:extrapreds ((x22757))
+:extrapreds ((x22758))
+:extrapreds ((x22759))
+:extrapreds ((x22760))
+:extrapreds ((x22761))
+:extrapreds ((x22762))
+:extrapreds ((x22763))
+:extrapreds ((x22764))
+:extrapreds ((x22765))
+:extrapreds ((x22766))
+:extrapreds ((x22767))
+:extrapreds ((x22768))
+:extrapreds ((x22769))
+:extrapreds ((x22770))
+:extrapreds ((x22771))
+:extrapreds ((x22772))
+:extrapreds ((x22773))
+:extrapreds ((x22774))
+:extrapreds ((x22775))
+:extrapreds ((x22776))
+:extrapreds ((x22777))
+:extrapreds ((x22778))
+:extrapreds ((x22779))
+:extrapreds ((x22780))
+:extrapreds ((x22781))
+:extrapreds ((x22782))
+:extrapreds ((x22783))
+:extrapreds ((x22784))
+:extrapreds ((x22785))
+:extrapreds ((x22786))
+:extrapreds ((x22787))
+:extrapreds ((x22788))
+:extrapreds ((x22789))
+:extrapreds ((x22790))
+:extrapreds ((x22791))
+:extrapreds ((x22792))
+:extrapreds ((x22793))
+:extrapreds ((x22794))
+:extrapreds ((x22795))
+:extrapreds ((x22796))
+:extrapreds ((x22797))
+:extrapreds ((x22798))
+:extrapreds ((x22799))
+:extrapreds ((x22800))
+:extrapreds ((x22801))
+:extrapreds ((x22802))
+:extrapreds ((x22803))
+:extrapreds ((x22804))
+:extrapreds ((x22805))
+:extrapreds ((x22806))
+:extrapreds ((x22807))
+:extrapreds ((x22808))
+:extrapreds ((x22809))
+:extrapreds ((x22810))
+:extrapreds ((x22811))
+:extrapreds ((x22812))
+:extrapreds ((x22813))
+:extrapreds ((x22814))
+:extrapreds ((x22815))
+:extrapreds ((x22816))
+:extrapreds ((x22817))
+:extrapreds ((x22818))
+:extrapreds ((x22819))
+:extrapreds ((x22820))
+:extrapreds ((x22821))
+:extrapreds ((x22822))
+:extrapreds ((x22823))
+:extrapreds ((x22824))
+:extrapreds ((x22825))
+:extrapreds ((x22826))
+:extrapreds ((x22827))
+:extrapreds ((x22828))
+:extrapreds ((x22829))
+:extrapreds ((x22830))
+:extrapreds ((x22831))
+:extrapreds ((x22832))
+:extrapreds ((x22833))
+:extrapreds ((x22834))
+:extrapreds ((x22835))
+:extrapreds ((x22836))
+:extrapreds ((x22837))
+:extrapreds ((x22838))
+:extrapreds ((x22839))
+:extrapreds ((x22840))
+:extrapreds ((x22841))
+:extrapreds ((x22842))
+:extrapreds ((x22843))
+:extrapreds ((x22844))
+:extrapreds ((x22845))
+:extrapreds ((x22846))
+:extrapreds ((x22847))
+:extrapreds ((x22848))
+:extrapreds ((x22849))
+:extrapreds ((x22850))
+:extrapreds ((x22851))
+:extrapreds ((x22852))
+:extrapreds ((x22853))
+:extrapreds ((x22854))
+:extrapreds ((x22855))
+:extrapreds ((x22856))
+:extrapreds ((x22857))
+:extrapreds ((x22858))
+:extrapreds ((x22859))
+:extrapreds ((x22860))
+:extrapreds ((x22861))
+:extrapreds ((x22862))
+:extrapreds ((x22863))
+:extrapreds ((x22864))
+:extrapreds ((x22865))
+:extrapreds ((x22866))
+:extrapreds ((x22867))
+:extrapreds ((x22868))
+:extrapreds ((x22869))
+:extrapreds ((x22870))
+:extrapreds ((x22871))
+:extrapreds ((x22872))
+:extrapreds ((x22873))
+:extrapreds ((x22874))
+:extrapreds ((x22875))
+:extrapreds ((x22876))
+:extrapreds ((x22877))
+:extrapreds ((x22878))
+:extrapreds ((x22879))
+:extrapreds ((x22880))
+:extrapreds ((x22881))
+:extrapreds ((x22882))
+:extrapreds ((x22883))
+:extrapreds ((x22884))
+:extrapreds ((x22885))
+:extrapreds ((x22886))
+:extrapreds ((x22887))
+:extrapreds ((x22888))
+:extrapreds ((x22889))
+:extrapreds ((x22890))
+:extrapreds ((x22891))
+:extrapreds ((x22892))
+:extrapreds ((x22893))
+:extrapreds ((x22894))
+:extrapreds ((x22895))
+:extrapreds ((x22896))
+:extrapreds ((x22897))
+:extrapreds ((x22898))
+:extrapreds ((x22899))
+:extrapreds ((x22900))
+:extrapreds ((x22901))
+:extrapreds ((x22902))
+:extrapreds ((x22903))
+:extrapreds ((x22904))
+:extrapreds ((x22905))
+:extrapreds ((x22906))
+:extrapreds ((x22907))
+:extrapreds ((x22908))
+:extrapreds ((x22909))
+:extrapreds ((x22910))
+:extrapreds ((x22911))
+:extrapreds ((x22912))
+:extrapreds ((x22913))
+:extrapreds ((x22914))
+:extrapreds ((x22915))
+:extrapreds ((x22916))
+:extrapreds ((x22917))
+:extrapreds ((x22918))
+:extrapreds ((x22919))
+:extrapreds ((x22920))
+:extrapreds ((x22921))
+:extrapreds ((x22922))
+:extrapreds ((x22923))
+:extrapreds ((x22924))
+:extrapreds ((x22925))
+:extrapreds ((x22926))
+:extrapreds ((x22927))
+:extrapreds ((x22928))
+:extrapreds ((x22929))
+:extrapreds ((x22930))
+:extrapreds ((x22931))
+:extrapreds ((x22932))
+:extrapreds ((x22933))
+:extrapreds ((x22934))
+:extrapreds ((x22935))
+:extrapreds ((x22936))
+:extrapreds ((x22937))
+:extrapreds ((x22938))
+:extrapreds ((x22939))
+:extrapreds ((x22940))
+:extrapreds ((x22941))
+:extrapreds ((x22942))
+:extrapreds ((x22943))
+:extrapreds ((x22944))
+:extrapreds ((x22945))
+:extrapreds ((x22946))
+:extrapreds ((x22947))
+:extrapreds ((x22948))
+:extrapreds ((x22949))
+:extrapreds ((x22950))
+:extrapreds ((x22951))
+:extrapreds ((x22952))
+:extrapreds ((x22953))
+:extrapreds ((x22954))
+:extrapreds ((x22955))
+:extrapreds ((x22956))
+:extrapreds ((x22957))
+:extrapreds ((x22958))
+:extrapreds ((x22959))
+:extrapreds ((x22960))
+:extrapreds ((x22961))
+:extrapreds ((x22962))
+:extrapreds ((x22963))
+:extrapreds ((x22964))
+:extrapreds ((x22965))
+:extrapreds ((x22966))
+:extrapreds ((x22967))
+:extrapreds ((x22968))
+:extrapreds ((x22969))
+:extrapreds ((x22970))
+:extrapreds ((x22971))
+:extrapreds ((x22972))
+:extrapreds ((x22973))
+:extrapreds ((x22974))
+:extrapreds ((x22975))
+:extrapreds ((x22976))
+:extrapreds ((x22977))
+:extrapreds ((x22978))
+:extrapreds ((x22979))
+:extrapreds ((x22980))
+:extrapreds ((x22981))
+:extrapreds ((x22982))
+:extrapreds ((x22983))
+:extrapreds ((x22984))
+:extrapreds ((x22985))
+:extrapreds ((x22986))
+:extrapreds ((x22987))
+:extrapreds ((x22988))
+:extrapreds ((x22989))
+:extrapreds ((x22990))
+:extrapreds ((x22991))
+:extrapreds ((x22992))
+:extrapreds ((x22993))
+:extrapreds ((x22994))
+:extrapreds ((x22995))
+:extrapreds ((x22996))
+:extrapreds ((x22997))
+:extrapreds ((x22998))
+:extrapreds ((x22999))
+:extrapreds ((x23000))
+:extrapreds ((x23001))
+:extrapreds ((x23002))
+:extrapreds ((x23003))
+:extrapreds ((x23004))
+:extrapreds ((x23005))
+:extrapreds ((x23006))
+:extrapreds ((x23007))
+:extrapreds ((x23008))
+:extrapreds ((x23009))
+:extrapreds ((x23010))
+:extrapreds ((x23011))
+:extrapreds ((x23012))
+:extrapreds ((x23013))
+:extrapreds ((x23014))
+:extrapreds ((x23015))
+:extrapreds ((x23016))
+:extrapreds ((x23017))
+:extrapreds ((x23018))
+:extrapreds ((x23019))
+:extrapreds ((x23020))
+:extrapreds ((x23021))
+:extrapreds ((x23022))
+:extrapreds ((x23023))
+:extrapreds ((x23024))
+:extrapreds ((x23025))
+:extrapreds ((x23026))
+:extrapreds ((x23027))
+:extrapreds ((x23028))
+:extrapreds ((x23029))
+:extrapreds ((x23030))
+:extrapreds ((x23031))
+:extrapreds ((x23032))
+:extrapreds ((x23033))
+:extrapreds ((x23034))
+:extrapreds ((x23035))
+:extrapreds ((x23036))
+:extrapreds ((x23037))
+:extrapreds ((x23038))
+:extrapreds ((x23039))
+:extrapreds ((x23040))
+:extrapreds ((x23041))
+:extrapreds ((x23042))
+:extrapreds ((x23043))
+:extrapreds ((x23044))
+:extrapreds ((x23045))
+:extrapreds ((x23046))
+:extrapreds ((x23047))
+:extrapreds ((x23048))
+:extrapreds ((x23049))
+:extrapreds ((x23050))
+:extrapreds ((x23051))
+:extrapreds ((x23052))
+:extrapreds ((x23053))
+:extrapreds ((x23054))
+:extrapreds ((x23055))
+:extrapreds ((x23056))
+:extrapreds ((x23057))
+:extrapreds ((x23058))
+:extrapreds ((x23059))
+:extrapreds ((x23060))
+:extrapreds ((x23061))
+:extrapreds ((x23062))
+:extrapreds ((x23063))
+:extrapreds ((x23064))
+:extrapreds ((x23065))
+:extrapreds ((x23066))
+:extrapreds ((x23067))
+:extrapreds ((x23068))
+:extrapreds ((x23069))
+:extrapreds ((x23070))
+:extrapreds ((x23071))
+:extrapreds ((x23072))
+:extrapreds ((x23073))
+:extrapreds ((x23074))
+:extrapreds ((x23075))
+:extrapreds ((x23076))
+:extrapreds ((x23077))
+:extrapreds ((x23078))
+:extrapreds ((x23079))
+:extrapreds ((x23080))
+:extrapreds ((x23081))
+:extrapreds ((x23082))
+:extrapreds ((x23083))
+:extrapreds ((x23084))
+:extrapreds ((x23085))
+:extrapreds ((x23086))
+:extrapreds ((x23087))
+:extrapreds ((x23088))
+:extrapreds ((x23089))
+:extrapreds ((x23090))
+:extrapreds ((x23091))
+:extrapreds ((x23092))
+:extrapreds ((x23093))
+:extrapreds ((x23094))
+:extrapreds ((x23095))
+:extrapreds ((x23096))
+:extrapreds ((x23097))
+:extrapreds ((x23098))
+:extrapreds ((x23099))
+:extrapreds ((x23100))
+:extrapreds ((x23101))
+:extrapreds ((x23102))
+:extrapreds ((x23103))
+:extrapreds ((x23104))
+:extrapreds ((x23105))
+:extrapreds ((x23106))
+:extrapreds ((x23107))
+:extrapreds ((x23108))
+:extrapreds ((x23109))
+:extrapreds ((x23110))
+:extrapreds ((x23111))
+:extrapreds ((x23112))
+:extrapreds ((x23113))
+:extrapreds ((x23114))
+:extrapreds ((x23115))
+:extrapreds ((x23116))
+:extrapreds ((x23117))
+:extrapreds ((x23118))
+:extrapreds ((x23119))
+:extrapreds ((x23120))
+:extrapreds ((x23121))
+:extrapreds ((x23122))
+:extrapreds ((x23123))
+:extrapreds ((x23124))
+:extrapreds ((x23125))
+:extrapreds ((x23126))
+:extrapreds ((x23127))
+:extrapreds ((x23128))
+:extrapreds ((x23129))
+:extrapreds ((x23130))
+:extrapreds ((x23131))
+:extrapreds ((x23132))
+:extrapreds ((x23133))
+:extrapreds ((x23134))
+:extrapreds ((x23135))
+:extrapreds ((x23136))
+:extrapreds ((x23137))
+:extrapreds ((x23138))
+:extrapreds ((x23139))
+:extrapreds ((x23140))
+:extrapreds ((x23141))
+:extrapreds ((x23142))
+:extrapreds ((x23143))
+:extrapreds ((x23144))
+:extrapreds ((x23145))
+:extrapreds ((x23146))
+:extrapreds ((x23147))
+:extrapreds ((x23148))
+:extrapreds ((x23149))
+:extrapreds ((x23150))
+:extrapreds ((x23151))
+:extrapreds ((x23152))
+:extrapreds ((x23153))
+:extrapreds ((x23154))
+:extrapreds ((x23155))
+:extrapreds ((x23156))
+:extrapreds ((x23157))
+:extrapreds ((x23158))
+:extrapreds ((x23159))
+:extrapreds ((x23160))
+:extrapreds ((x23161))
+:extrapreds ((x23162))
+:extrapreds ((x23163))
+:extrapreds ((x23164))
+:extrapreds ((x23165))
+:extrapreds ((x23166))
+:extrapreds ((x23167))
+:extrapreds ((x23168))
+:extrapreds ((x23169))
+:extrapreds ((x23170))
+:extrapreds ((x23171))
+:extrapreds ((x23172))
+:extrapreds ((x23173))
+:extrapreds ((x23174))
+:extrapreds ((x23175))
+:extrapreds ((x23176))
+:extrapreds ((x23177))
+:extrapreds ((x23178))
+:extrapreds ((x23179))
+:extrapreds ((x23180))
+:extrapreds ((x23181))
+:extrapreds ((x23182))
+:extrapreds ((x23183))
+:extrapreds ((x23184))
+:extrapreds ((x23185))
+:extrapreds ((x23186))
+:extrapreds ((x23187))
+:extrapreds ((x23188))
+:extrapreds ((x23189))
+:extrapreds ((x23190))
+:extrapreds ((x23191))
+:extrapreds ((x23192))
+:extrapreds ((x23193))
+:extrapreds ((x23194))
+:extrapreds ((x23195))
+:extrapreds ((x23196))
+:extrapreds ((x23197))
+:extrapreds ((x23198))
+:extrapreds ((x23199))
+:extrapreds ((x23200))
+:extrapreds ((x23201))
+:extrapreds ((x23202))
+:extrapreds ((x23203))
+:extrapreds ((x23204))
+:extrapreds ((x23205))
+:extrapreds ((x23206))
+:extrapreds ((x23207))
+:extrapreds ((x23208))
+:extrapreds ((x23209))
+:extrapreds ((x23210))
+:extrapreds ((x23211))
+:extrapreds ((x23212))
+:extrapreds ((x23213))
+:extrapreds ((x23214))
+:extrapreds ((x23215))
+:extrapreds ((x23216))
+:extrapreds ((x23217))
+:extrapreds ((x23218))
+:extrapreds ((x23219))
+:extrapreds ((x23220))
+:extrapreds ((x23221))
+:extrapreds ((x23222))
+:extrapreds ((x23223))
+:extrapreds ((x23224))
+:extrapreds ((x23225))
+:extrapreds ((x23226))
+:extrapreds ((x23227))
+:extrapreds ((x23228))
+:extrapreds ((x23229))
+:extrapreds ((x23230))
+:extrapreds ((x23231))
+:extrapreds ((x23232))
+:extrapreds ((x23233))
+:extrapreds ((x23234))
+:extrapreds ((x23235))
+:extrapreds ((x23236))
+:extrapreds ((x23237))
+:extrapreds ((x23238))
+:extrapreds ((x23239))
+:extrapreds ((x23240))
+:extrapreds ((x23241))
+:extrapreds ((x23242))
+:extrapreds ((x23243))
+:extrapreds ((x23244))
+:extrapreds ((x23245))
+:extrapreds ((x23246))
+:extrapreds ((x23247))
+:extrapreds ((x23248))
+:extrapreds ((x23249))
+:extrapreds ((x23250))
+:extrapreds ((x23251))
+:extrapreds ((x23252))
+:extrapreds ((x23253))
+:extrapreds ((x23254))
+:extrapreds ((x23255))
+:extrapreds ((x23256))
+:extrapreds ((x23257))
+:extrapreds ((x23258))
+:extrapreds ((x23259))
+:extrapreds ((x23260))
+:extrapreds ((x23261))
+:extrapreds ((x23262))
+:extrapreds ((x23263))
+:extrapreds ((x23264))
+:extrapreds ((x23265))
+:extrapreds ((x23266))
+:extrapreds ((x23267))
+:extrapreds ((x23268))
+:extrapreds ((x23269))
+:extrapreds ((x23270))
+:extrapreds ((x23271))
+:extrapreds ((x23272))
+:extrapreds ((x23273))
+:extrapreds ((x23274))
+:extrapreds ((x23275))
+:extrapreds ((x23276))
+:extrapreds ((x23277))
+:extrapreds ((x23278))
+:extrapreds ((x23279))
+:extrapreds ((x23280))
+:extrapreds ((x23281))
+:extrapreds ((x23282))
+:extrapreds ((x23283))
+:extrapreds ((x23284))
+:extrapreds ((x23285))
+:extrapreds ((x23286))
+:extrapreds ((x23287))
+:extrapreds ((x23288))
+:extrapreds ((x23289))
+:extrapreds ((x23290))
+:extrapreds ((x23291))
+:extrapreds ((x23292))
+:extrapreds ((x23293))
+:extrapreds ((x23294))
+:extrapreds ((x23295))
+:extrapreds ((x23296))
+:extrapreds ((x23297))
+:extrapreds ((x23298))
+:extrapreds ((x23299))
+:extrapreds ((x23300))
+:extrapreds ((x23301))
+:extrapreds ((x23302))
+:extrapreds ((x23303))
+:extrapreds ((x23304))
+:extrapreds ((x23305))
+:extrapreds ((x23306))
+:extrapreds ((x23307))
+:extrapreds ((x23308))
+:extrapreds ((x23309))
+:extrapreds ((x23310))
+:extrapreds ((x23311))
+:extrapreds ((x23312))
+:extrapreds ((x23313))
+:extrapreds ((x23314))
+:extrapreds ((x23315))
+:extrapreds ((x23316))
+:extrapreds ((x23317))
+:extrapreds ((x23318))
+:extrapreds ((x23319))
+:extrapreds ((x23320))
+:extrapreds ((x23321))
+:extrapreds ((x23322))
+:extrapreds ((x23323))
+:extrapreds ((x23324))
+:extrapreds ((x23325))
+:extrapreds ((x23326))
+:extrapreds ((x23327))
+:extrapreds ((x23328))
+:extrapreds ((x23329))
+:extrapreds ((x23330))
+:extrapreds ((x23331))
+:extrapreds ((x23332))
+:extrapreds ((x23333))
+:extrapreds ((x23334))
+:extrapreds ((x23335))
+:extrapreds ((x23336))
+:extrapreds ((x23337))
+:extrapreds ((x23338))
+:extrapreds ((x23339))
+:extrapreds ((x23340))
+:extrapreds ((x23341))
+:extrapreds ((x23342))
+:extrapreds ((x23343))
+:extrapreds ((x23344))
+:extrapreds ((x23345))
+:extrapreds ((x23346))
+:extrapreds ((x23347))
+:extrapreds ((x23348))
+:extrapreds ((x23349))
+:extrapreds ((x23350))
+:extrapreds ((x23351))
+:extrapreds ((x23352))
+:extrapreds ((x23353))
+:extrapreds ((x23354))
+:extrapreds ((x23355))
+:extrapreds ((x23356))
+:extrapreds ((x23357))
+:extrapreds ((x23358))
+:extrapreds ((x23359))
+:extrapreds ((x23360))
+:extrapreds ((x23361))
+:extrapreds ((x23362))
+:extrapreds ((x23363))
+:extrapreds ((x23364))
+:extrapreds ((x23365))
+:extrapreds ((x23366))
+:extrapreds ((x23367))
+:extrapreds ((x23368))
+:extrapreds ((x23369))
+:extrapreds ((x23370))
+:extrapreds ((x23371))
+:extrapreds ((x23372))
+:extrapreds ((x23373))
+:extrapreds ((x23374))
+:extrapreds ((x23375))
+:extrapreds ((x23376))
+:extrapreds ((x23377))
+:extrapreds ((x23378))
+:extrapreds ((x23379))
+:extrapreds ((x23380))
+:extrapreds ((x23381))
+:extrapreds ((x23382))
+:extrapreds ((x23383))
+:extrapreds ((x23384))
+:extrapreds ((x23385))
+:extrapreds ((x23386))
+:extrapreds ((x23387))
+:extrapreds ((x23388))
+:extrapreds ((x23389))
+:extrapreds ((x23390))
+:extrapreds ((x23391))
+:extrapreds ((x23392))
+:extrapreds ((x23393))
+:extrapreds ((x23394))
+:extrapreds ((x23395))
+:extrapreds ((x23396))
+:extrapreds ((x23397))
+:extrapreds ((x23398))
+:extrapreds ((x23399))
+:extrapreds ((x23400))
+:extrapreds ((x23401))
+:extrapreds ((x23402))
+:extrapreds ((x23403))
+:extrapreds ((x23404))
+:extrapreds ((x23405))
+:extrapreds ((x23406))
+:extrapreds ((x23407))
+:extrapreds ((x23408))
+:extrapreds ((x23409))
+:extrapreds ((x23410))
+:extrapreds ((x23411))
+:extrapreds ((x23412))
+:extrapreds ((x23413))
+:extrapreds ((x23414))
+:extrapreds ((x23415))
+:extrapreds ((x23416))
+:extrapreds ((x23417))
+:extrapreds ((x23418))
+:extrapreds ((x23419))
+:extrapreds ((x23420))
+:extrapreds ((x23421))
+:extrapreds ((x23422))
+:extrapreds ((x23423))
+:extrapreds ((x23424))
+:extrapreds ((x23425))
+:extrapreds ((x23426))
+:extrapreds ((x23427))
+:extrapreds ((x23428))
+:extrapreds ((x23429))
+:extrapreds ((x23430))
+:extrapreds ((x23431))
+:extrapreds ((x23432))
+:extrapreds ((x23433))
+:extrapreds ((x23434))
+:extrapreds ((x23435))
+:extrapreds ((x23436))
+:extrapreds ((x23437))
+:extrapreds ((x23438))
+:extrapreds ((x23439))
+:extrapreds ((x23440))
+:extrapreds ((x23441))
+:extrapreds ((x23442))
+:extrapreds ((x23443))
+:extrapreds ((x23444))
+:extrapreds ((x23445))
+:extrapreds ((x23446))
+:extrapreds ((x23447))
+:extrapreds ((x23448))
+:extrapreds ((x23449))
+:extrapreds ((x23450))
+:extrapreds ((x23451))
+:extrapreds ((x23452))
+:extrapreds ((x23453))
+:extrapreds ((x23454))
+:extrapreds ((x23455))
+:extrapreds ((x23456))
+:extrapreds ((x23457))
+:extrapreds ((x23458))
+:extrapreds ((x23459))
+:extrapreds ((x23460))
+:extrapreds ((x23461))
+:extrapreds ((x23462))
+:extrapreds ((x23463))
+:extrapreds ((x23464))
+:extrapreds ((x23465))
+:extrapreds ((x23466))
+:extrapreds ((x23467))
+:extrapreds ((x23468))
+:extrapreds ((x23469))
+:extrapreds ((x23470))
+:extrapreds ((x23471))
+:extrapreds ((x23472))
+:extrapreds ((x23473))
+:extrapreds ((x23474))
+:extrapreds ((x23475))
+:extrapreds ((x23476))
+:extrapreds ((x23477))
+:extrapreds ((x23478))
+:extrapreds ((x23479))
+:extrapreds ((x23480))
+:extrapreds ((x23481))
+:extrapreds ((x23482))
+:extrapreds ((x23483))
+:extrapreds ((x23484))
+:extrapreds ((x23485))
+:extrapreds ((x23486))
+:extrapreds ((x23487))
+:extrapreds ((x23488))
+:extrapreds ((x23489))
+:extrapreds ((x23490))
+:extrapreds ((x23491))
+:extrapreds ((x23492))
+:extrapreds ((x23493))
+:extrapreds ((x23494))
+:extrapreds ((x23495))
+:extrapreds ((x23496))
+:extrapreds ((x23497))
+:extrapreds ((x23498))
+:extrapreds ((x23499))
+:extrapreds ((x23500))
+:extrapreds ((x23501))
+:extrapreds ((x23502))
+:extrapreds ((x23503))
+:extrapreds ((x23504))
+:extrapreds ((x23505))
+:extrapreds ((x23506))
+:extrapreds ((x23507))
+:extrapreds ((x23508))
+:extrapreds ((x23509))
+:extrapreds ((x23510))
+:extrapreds ((x23511))
+:extrapreds ((x23512))
+:extrapreds ((x23513))
+:extrapreds ((x23514))
+:extrapreds ((x23515))
+:extrapreds ((x23516))
+:extrapreds ((x23517))
+:extrapreds ((x23518))
+:extrapreds ((x23519))
+:extrapreds ((x23520))
+:extrapreds ((x23521))
+:extrapreds ((x23522))
+:extrapreds ((x23523))
+:extrapreds ((x23524))
+:extrapreds ((x23525))
+:extrapreds ((x23526))
+:extrapreds ((x23527))
+:extrapreds ((x23528))
+:extrapreds ((x23529))
+:extrapreds ((x23530))
+:extrapreds ((x23531))
+:extrapreds ((x23532))
+:extrapreds ((x23533))
+:extrapreds ((x23534))
+:extrapreds ((x23535))
+:extrapreds ((x23536))
+:extrapreds ((x23537))
+:extrapreds ((x23538))
+:extrapreds ((x23539))
+:extrapreds ((x23540))
+:extrapreds ((x23541))
+:extrapreds ((x23542))
+:extrapreds ((x23543))
+:extrapreds ((x23544))
+:extrapreds ((x23545))
+:extrapreds ((x23546))
+:extrapreds ((x23547))
+:extrapreds ((x23548))
+:extrapreds ((x23549))
+:extrapreds ((x23550))
+:extrapreds ((x23551))
+:extrapreds ((x23552))
+:extrapreds ((x23553))
+:extrapreds ((x23554))
+:extrapreds ((x23555))
+:extrapreds ((x23556))
+:extrapreds ((x23557))
+:extrapreds ((x23558))
+:extrapreds ((x23559))
+:extrapreds ((x23560))
+:extrapreds ((x23561))
+:extrapreds ((x23562))
+:extrapreds ((x23563))
+:extrapreds ((x23564))
+:extrapreds ((x23565))
+:extrapreds ((x23566))
+:extrapreds ((x23567))
+:extrapreds ((x23568))
+:extrapreds ((x23569))
+:extrapreds ((x23570))
+:extrapreds ((x23571))
+:extrapreds ((x23572))
+:extrapreds ((x23573))
+:extrapreds ((x23574))
+:extrapreds ((x23575))
+:extrapreds ((x23576))
+:extrapreds ((x23577))
+:extrapreds ((x23578))
+:extrapreds ((x23579))
+:extrapreds ((x23580))
+:extrapreds ((x23581))
+:extrapreds ((x23582))
+:extrapreds ((x23583))
+:extrapreds ((x23584))
+:extrapreds ((x23585))
+:extrapreds ((x23586))
+:extrapreds ((x23587))
+:extrapreds ((x23588))
+:extrapreds ((x23589))
+:extrapreds ((x23590))
+:extrapreds ((x23591))
+:extrapreds ((x23592))
+:extrapreds ((x23593))
+:extrapreds ((x23594))
+:extrapreds ((x23595))
+:extrapreds ((x23596))
+:extrapreds ((x23597))
+:extrapreds ((x23598))
+:extrapreds ((x23599))
+:extrapreds ((x23600))
+:extrapreds ((x23601))
+:extrapreds ((x23602))
+:extrapreds ((x23603))
+:extrapreds ((x23604))
+:extrapreds ((x23605))
+:extrapreds ((x23606))
+:extrapreds ((x23607))
+:extrapreds ((x23608))
+:extrapreds ((x23609))
+:extrapreds ((x23610))
+:extrapreds ((x23611))
+:extrapreds ((x23612))
+:extrapreds ((x23613))
+:extrapreds ((x23614))
+:extrapreds ((x23615))
+:extrapreds ((x23616))
+:extrapreds ((x23617))
+:extrapreds ((x23618))
+:extrapreds ((x23619))
+:extrapreds ((x23620))
+:extrapreds ((x23621))
+:extrapreds ((x23622))
+:extrapreds ((x23623))
+:extrapreds ((x23624))
+:extrapreds ((x23625))
+:extrapreds ((x23626))
+:extrapreds ((x23627))
+:extrapreds ((x23628))
+:extrapreds ((x23629))
+:extrapreds ((x23630))
+:extrapreds ((x23631))
+:extrapreds ((x23632))
+:extrapreds ((x23633))
+:extrapreds ((x23634))
+:extrapreds ((x23635))
+:extrapreds ((x23636))
+:extrapreds ((x23637))
+:extrapreds ((x23638))
+:extrapreds ((x23639))
+:extrapreds ((x23640))
+:extrapreds ((x23641))
+:extrapreds ((x23642))
+:extrapreds ((x23643))
+:extrapreds ((x23644))
+:extrapreds ((x23645))
+:extrapreds ((x23646))
+:extrapreds ((x23647))
+:extrapreds ((x23648))
+:extrapreds ((x23649))
+:extrapreds ((x23650))
+:extrapreds ((x23651))
+:extrapreds ((x23652))
+:extrapreds ((x23653))
+:extrapreds ((x23654))
+:extrapreds ((x23655))
+:extrapreds ((x23656))
+:extrapreds ((x23657))
+:extrapreds ((x23658))
+:extrapreds ((x23659))
+:extrapreds ((x23660))
+:extrapreds ((x23661))
+:extrapreds ((x23662))
+:extrapreds ((x23663))
+:extrapreds ((x23664))
+:extrapreds ((x23665))
+:extrapreds ((x23666))
+:extrapreds ((x23667))
+:extrapreds ((x23668))
+:extrapreds ((x23669))
+:extrapreds ((x23670))
+:extrapreds ((x23671))
+:extrapreds ((x23672))
+:extrapreds ((x23673))
+:extrapreds ((x23674))
+:extrapreds ((x23675))
+:extrapreds ((x23676))
+:extrapreds ((x23677))
+:extrapreds ((x23678))
+:extrapreds ((x23679))
+:extrapreds ((x23680))
+:extrapreds ((x23681))
+:extrapreds ((x23682))
+:extrapreds ((x23683))
+:extrapreds ((x23684))
+:extrapreds ((x23685))
+:extrapreds ((x23686))
+:extrapreds ((x23687))
+:extrapreds ((x23688))
+:extrapreds ((x23689))
+:extrapreds ((x23690))
+:extrapreds ((x23691))
+:extrapreds ((x23692))
+:extrapreds ((x23693))
+:extrapreds ((x23694))
+:extrapreds ((x23695))
+:extrapreds ((x23696))
+:extrapreds ((x23697))
+:extrapreds ((x23698))
+:extrapreds ((x23699))
+:extrapreds ((x23700))
+:extrapreds ((x23701))
+:extrapreds ((x23702))
+:extrapreds ((x23703))
+:extrapreds ((x23704))
+:extrapreds ((x23705))
+:extrapreds ((x23706))
+:extrapreds ((x23707))
+:extrapreds ((x23708))
+:extrapreds ((x23709))
+:extrapreds ((x23710))
+:extrapreds ((x23711))
+:extrapreds ((x23712))
+:extrapreds ((x23713))
+:extrapreds ((x23714))
+:extrapreds ((x23715))
+:extrapreds ((x23716))
+:extrapreds ((x23717))
+:extrapreds ((x23718))
+:extrapreds ((x23719))
+:extrapreds ((x23720))
+:extrapreds ((x23721))
+:extrapreds ((x23722))
+:extrapreds ((x23723))
+:extrapreds ((x23724))
+:extrapreds ((x23725))
+:extrapreds ((x23726))
+:extrapreds ((x23727))
+:extrapreds ((x23728))
+:extrapreds ((x23729))
+:extrapreds ((x23730))
+:extrapreds ((x23731))
+:extrapreds ((x23732))
+:extrapreds ((x23733))
+:extrapreds ((x23734))
+:extrapreds ((x23735))
+:extrapreds ((x23736))
+:extrapreds ((x23737))
+:extrapreds ((x23738))
+:extrapreds ((x23739))
+:extrapreds ((x23740))
+:extrapreds ((x23741))
+:extrapreds ((x23742))
+:extrapreds ((x23743))
+:extrapreds ((x23744))
+:extrapreds ((x23745))
+:extrapreds ((x23746))
+:extrapreds ((x23747))
+:extrapreds ((x23748))
+:extrapreds ((x23749))
+:extrapreds ((x23750))
+:extrapreds ((x23751))
+:extrapreds ((x23752))
+:extrapreds ((x23753))
+:extrapreds ((x23754))
+:extrapreds ((x23755))
+:extrapreds ((x23756))
+:extrapreds ((x23757))
+:extrapreds ((x23758))
+:extrapreds ((x23759))
+:extrapreds ((x23760))
+:extrapreds ((x23761))
+:extrapreds ((x23762))
+:extrapreds ((x23763))
+:extrapreds ((x23764))
+:extrapreds ((x23765))
+:extrapreds ((x23766))
+:extrapreds ((x23767))
+:extrapreds ((x23768))
+:extrapreds ((x23769))
+:extrapreds ((x23770))
+:extrapreds ((x23771))
+:extrapreds ((x23772))
+:extrapreds ((x23773))
+:extrapreds ((x23774))
+:extrapreds ((x23775))
+:extrapreds ((x23776))
+:extrapreds ((x23777))
+:extrapreds ((x23778))
+:extrapreds ((x23779))
+:extrapreds ((x23780))
+:extrapreds ((x23781))
+:extrapreds ((x23782))
+:extrapreds ((x23783))
+:extrapreds ((x23784))
+:extrapreds ((x23785))
+:extrapreds ((x23786))
+:extrapreds ((x23787))
+:extrapreds ((x23788))
+:extrapreds ((x23789))
+:extrapreds ((x23790))
+:extrapreds ((x23791))
+:extrapreds ((x23792))
+:extrapreds ((x23793))
+:extrapreds ((x23794))
+:extrapreds ((x23795))
+:extrapreds ((x23796))
+:extrapreds ((x23797))
+:extrapreds ((x23798))
+:extrapreds ((x23799))
+:extrapreds ((x23800))
+:extrapreds ((x23801))
+:extrapreds ((x23802))
+:extrapreds ((x23803))
+:extrapreds ((x23804))
+:extrapreds ((x23805))
+:extrapreds ((x23806))
+:extrapreds ((x23807))
+:extrapreds ((x23808))
+:extrapreds ((x23809))
+:extrapreds ((x23810))
+:extrapreds ((x23811))
+:extrapreds ((x23812))
+:extrapreds ((x23813))
+:extrapreds ((x23814))
+:extrapreds ((x23815))
+:extrapreds ((x23816))
+:extrapreds ((x23817))
+:extrapreds ((x23818))
+:extrapreds ((x23819))
+:extrapreds ((x23820))
+:extrapreds ((x23821))
+:extrapreds ((x23822))
+:extrapreds ((x23823))
+:extrapreds ((x23824))
+:extrapreds ((x23825))
+:extrapreds ((x23826))
+:extrapreds ((x23827))
+:extrapreds ((x23828))
+:extrapreds ((x23829))
+:extrapreds ((x23830))
+:extrapreds ((x23831))
+:extrapreds ((x23832))
+:extrapreds ((x23833))
+:extrapreds ((x23834))
+:extrapreds ((x23835))
+:extrapreds ((x23836))
+:extrapreds ((x23837))
+:extrapreds ((x23838))
+:extrapreds ((x23839))
+:extrapreds ((x23840))
+:extrapreds ((x23841))
+:extrapreds ((x23842))
+:extrapreds ((x23843))
+:extrapreds ((x23844))
+:extrapreds ((x23845))
+:extrapreds ((x23846))
+:extrapreds ((x23847))
+:extrapreds ((x23848))
+:extrapreds ((x23849))
+:extrapreds ((x23850))
+:extrapreds ((x23851))
+:extrapreds ((x23852))
+:extrapreds ((x23853))
+:extrapreds ((x23854))
+:extrapreds ((x23855))
+:extrapreds ((x23856))
+:extrapreds ((x23857))
+:extrapreds ((x23858))
+:extrapreds ((x23859))
+:extrapreds ((x23860))
+:extrapreds ((x23861))
+:extrapreds ((x23862))
+:extrapreds ((x23863))
+:extrapreds ((x23864))
+:extrapreds ((x23865))
+:extrapreds ((x23866))
+:extrapreds ((x23867))
+:extrapreds ((x23868))
+:extrapreds ((x23869))
+:extrapreds ((x23870))
+:extrapreds ((x23871))
+:extrapreds ((x23872))
+:extrapreds ((x23873))
+:extrapreds ((x23874))
+:extrapreds ((x23875))
+:extrapreds ((x23876))
+:extrapreds ((x23877))
+:extrapreds ((x23878))
+:extrapreds ((x23879))
+:extrapreds ((x23880))
+:extrapreds ((x23881))
+:extrapreds ((x23882))
+:extrapreds ((x23883))
+:extrapreds ((x23884))
+:extrapreds ((x23885))
+:extrapreds ((x23886))
+:extrapreds ((x23887))
+:extrapreds ((x23888))
+:extrapreds ((x23889))
+:extrapreds ((x23890))
+:extrapreds ((x23891))
+:extrapreds ((x23892))
+:extrapreds ((x23893))
+:extrapreds ((x23894))
+:extrapreds ((x23895))
+:extrapreds ((x23896))
+:extrapreds ((x23897))
+:extrapreds ((x23898))
+:extrapreds ((x23899))
+:extrapreds ((x23900))
+:extrapreds ((x23901))
+:extrapreds ((x23902))
+:extrapreds ((x23903))
+:extrapreds ((x23904))
+:extrapreds ((x23905))
+:extrapreds ((x23906))
+:extrapreds ((x23907))
+:extrapreds ((x23908))
+:extrapreds ((x23909))
+:extrapreds ((x23910))
+:extrapreds ((x23911))
+:extrapreds ((x23912))
+:extrapreds ((x23913))
+:extrapreds ((x23914))
+:extrapreds ((x23915))
+:extrapreds ((x23916))
+:extrapreds ((x23917))
+:extrapreds ((x23918))
+:extrapreds ((x23919))
+:extrapreds ((x23920))
+:extrapreds ((x23921))
+:extrapreds ((x23922))
+:extrapreds ((x23923))
+:extrapreds ((x23924))
+:extrapreds ((x23925))
+:extrapreds ((x23926))
+:extrapreds ((x23927))
+:extrapreds ((x23928))
+:extrapreds ((x23929))
+:extrapreds ((x23930))
+:extrapreds ((x23931))
+:extrapreds ((x23932))
+:extrapreds ((x23933))
+:extrapreds ((x23934))
+:extrapreds ((x23935))
+:extrapreds ((x23936))
+:extrapreds ((x23937))
+:extrapreds ((x23938))
+:extrapreds ((x23939))
+:extrapreds ((x23940))
+:extrapreds ((x23941))
+:extrapreds ((x23942))
+:extrapreds ((x23943))
+:extrapreds ((x23944))
+:extrapreds ((x23945))
+:extrapreds ((x23946))
+:extrapreds ((x23947))
+:extrapreds ((x23948))
+:extrapreds ((x23949))
+:extrapreds ((x23950))
+:extrapreds ((x23951))
+:extrapreds ((x23952))
+:extrapreds ((x23953))
+:extrapreds ((x23954))
+:extrapreds ((x23955))
+:extrapreds ((x23956))
+:extrapreds ((x23957))
+:extrapreds ((x23958))
+:extrapreds ((x23959))
+:extrapreds ((x23960))
+:extrapreds ((x23961))
+:extrapreds ((x23962))
+:extrapreds ((x23963))
+:extrapreds ((x23964))
+:extrapreds ((x23965))
+:extrapreds ((x23966))
+:extrapreds ((x23967))
+:extrapreds ((x23968))
+:extrapreds ((x23969))
+:extrapreds ((x23970))
+:extrapreds ((x23971))
+:extrapreds ((x23972))
+:extrapreds ((x23973))
+:extrapreds ((x23974))
+:extrapreds ((x23975))
+:extrapreds ((x23976))
+:extrapreds ((x23977))
+:extrapreds ((x23978))
+:extrapreds ((x23979))
+:extrapreds ((x23980))
+:extrapreds ((x23981))
+:extrapreds ((x23982))
+:extrapreds ((x23983))
+:extrapreds ((x23984))
+:extrapreds ((x23985))
+:extrapreds ((x23986))
+:extrapreds ((x23987))
+:extrapreds ((x23988))
+:extrapreds ((x23989))
+:extrapreds ((x23990))
+:extrapreds ((x23991))
+:extrapreds ((x23992))
+:extrapreds ((x23993))
+:extrapreds ((x23994))
+:extrapreds ((x23995))
+:extrapreds ((x23996))
+:extrapreds ((x23997))
+:extrapreds ((x23998))
+:extrapreds ((x23999))
+:extrapreds ((x24000))
+:extrapreds ((x24001))
+:extrapreds ((x24002))
+:extrapreds ((x24003))
+:extrapreds ((x24004))
+:extrapreds ((x24005))
+:extrapreds ((x24006))
+:extrapreds ((x24007))
+:extrapreds ((x24008))
+:extrapreds ((x24009))
+:extrapreds ((x24010))
+:extrapreds ((x24011))
+:extrapreds ((x24012))
+:extrapreds ((x24013))
+:extrapreds ((x24014))
+:extrapreds ((x24015))
+:extrapreds ((x24016))
+:extrapreds ((x24017))
+:extrapreds ((x24018))
+:extrapreds ((x24019))
+:extrapreds ((x24020))
+:extrapreds ((x24021))
+:extrapreds ((x24022))
+:extrapreds ((x24023))
+:extrapreds ((x24024))
+:extrapreds ((x24025))
+:extrapreds ((x24026))
+:extrapreds ((x24027))
+:extrapreds ((x24028))
+:extrapreds ((x24029))
+:extrapreds ((x24030))
+:extrapreds ((x24031))
+:extrapreds ((x24032))
+:extrapreds ((x24033))
+:extrapreds ((x24034))
+:extrapreds ((x24035))
+:extrapreds ((x24036))
+:extrapreds ((x24037))
+:extrapreds ((x24038))
+:extrapreds ((x24039))
+:extrapreds ((x24040))
+:extrapreds ((x24041))
+:extrapreds ((x24042))
+:extrapreds ((x24043))
+:extrapreds ((x24044))
+:extrapreds ((x24045))
+:extrapreds ((x24046))
+:extrapreds ((x24047))
+:extrapreds ((x24048))
+:extrapreds ((x24049))
+:extrapreds ((x24050))
+:extrapreds ((x24051))
+:extrapreds ((x24052))
+:extrapreds ((x24053))
+:extrapreds ((x24054))
+:extrapreds ((x24055))
+:extrapreds ((x24056))
+:extrapreds ((x24057))
+:extrapreds ((x24058))
+:extrapreds ((x24059))
+:extrapreds ((x24060))
+:extrapreds ((x24061))
+:extrapreds ((x24062))
+:extrapreds ((x24063))
+:extrapreds ((x24064))
+:extrapreds ((x24065))
+:extrapreds ((x24066))
+:extrapreds ((x24067))
+:extrapreds ((x24068))
+:extrapreds ((x24069))
+:extrapreds ((x24070))
+:extrapreds ((x24071))
+:extrapreds ((x24072))
+:extrapreds ((x24073))
+:extrapreds ((x24074))
+:extrapreds ((x24075))
+:extrapreds ((x24076))
+:extrapreds ((x24077))
+:extrapreds ((x24078))
+:extrapreds ((x24079))
+:extrapreds ((x24080))
+:extrapreds ((x24081))
+:extrapreds ((x24082))
+:extrapreds ((x24083))
+:extrapreds ((x24084))
+:extrapreds ((x24085))
+:extrapreds ((x24086))
+:extrapreds ((x24087))
+:extrapreds ((x24088))
+:extrapreds ((x24089))
+:extrapreds ((x24090))
+:extrapreds ((x24091))
+:extrapreds ((x24092))
+:extrapreds ((x24093))
+:extrapreds ((x24094))
+:extrapreds ((x24095))
+:extrapreds ((x24096))
+:extrapreds ((x24097))
+:extrapreds ((x24098))
+:extrapreds ((x24099))
+:extrapreds ((x24100))
+:extrapreds ((x24101))
+:extrapreds ((x24102))
+:extrapreds ((x24103))
+:extrapreds ((x24104))
+:extrapreds ((x24105))
+:extrapreds ((x24106))
+:extrapreds ((x24107))
+:extrapreds ((x24108))
+:extrapreds ((x24109))
+:extrapreds ((x24110))
+:extrapreds ((x24111))
+:extrapreds ((x24112))
+:extrapreds ((x24113))
+:extrapreds ((x24114))
+:extrapreds ((x24115))
+:extrapreds ((x24116))
+:extrapreds ((x24117))
+:extrapreds ((x24118))
+:extrapreds ((x24119))
+:extrapreds ((x24120))
+:extrapreds ((x24121))
+:extrapreds ((x24122))
+:extrapreds ((x24123))
+:extrapreds ((x24124))
+:extrapreds ((x24125))
+:extrapreds ((x24126))
+:extrapreds ((x24127))
+:extrapreds ((x24128))
+:extrapreds ((x24129))
+:extrapreds ((x24130))
+:extrapreds ((x24131))
+:extrapreds ((x24132))
+:extrapreds ((x24133))
+:extrapreds ((x24134))
+:extrapreds ((x24135))
+:extrapreds ((x24136))
+:extrapreds ((x24137))
+:extrapreds ((x24138))
+:extrapreds ((x24139))
+:extrapreds ((x24140))
+:extrapreds ((x24141))
+:extrapreds ((x24142))
+:extrapreds ((x24143))
+:extrapreds ((x24144))
+:extrapreds ((x24145))
+:extrapreds ((x24146))
+:extrapreds ((x24147))
+:extrapreds ((x24148))
+:extrapreds ((x24149))
+:extrapreds ((x24150))
+:extrapreds ((x24151))
+:extrapreds ((x24152))
+:extrapreds ((x24153))
+:extrapreds ((x24154))
+:extrapreds ((x24155))
+:extrapreds ((x24156))
+:extrapreds ((x24157))
+:extrapreds ((x24158))
+:extrapreds ((x24159))
+:extrapreds ((x24160))
+:extrapreds ((x24161))
+:extrapreds ((x24162))
+:extrapreds ((x24163))
+:extrapreds ((x24164))
+:extrapreds ((x24165))
+:extrapreds ((x24166))
+:extrapreds ((x24167))
+:extrapreds ((x24168))
+:extrapreds ((x24169))
+:extrapreds ((x24170))
+:extrapreds ((x24171))
+:extrapreds ((x24172))
+:extrapreds ((x24173))
+:extrapreds ((x24174))
+:extrapreds ((x24175))
+:extrapreds ((x24176))
+:extrapreds ((x24177))
+:extrapreds ((x24178))
+:extrapreds ((x24179))
+:extrapreds ((x24180))
+:extrapreds ((x24181))
+:extrapreds ((x24182))
+:extrapreds ((x24183))
+:extrapreds ((x24184))
+:extrapreds ((x24185))
+:extrapreds ((x24186))
+:extrapreds ((x24187))
+:extrapreds ((x24188))
+:extrapreds ((x24189))
+:extrapreds ((x24190))
+:extrapreds ((x24191))
+:extrapreds ((x24192))
+:extrapreds ((x24193))
+:extrapreds ((x24194))
+:extrapreds ((x24195))
+:extrapreds ((x24196))
+:extrapreds ((x24197))
+:extrapreds ((x24198))
+:extrapreds ((x24199))
+:extrapreds ((x24200))
+:extrapreds ((x24201))
+:extrapreds ((x24202))
+:extrapreds ((x24203))
+:extrapreds ((x24204))
+:extrapreds ((x24205))
+:extrapreds ((x24206))
+:extrapreds ((x24207))
+:extrapreds ((x24208))
+:extrapreds ((x24209))
+:extrapreds ((x24210))
+:extrapreds ((x24211))
+:extrapreds ((x24212))
+:extrapreds ((x24213))
+:extrapreds ((x24214))
+:extrapreds ((x24215))
+:extrapreds ((x24216))
+:extrapreds ((x24217))
+:extrapreds ((x24218))
+:extrapreds ((x24219))
+:extrapreds ((x24220))
+:extrapreds ((x24221))
+:extrapreds ((x24222))
+:extrapreds ((x24223))
+:extrapreds ((x24224))
+:extrapreds ((x24225))
+:extrapreds ((x24226))
+:extrapreds ((x24227))
+:extrapreds ((x24228))
+:extrapreds ((x24229))
+:extrapreds ((x24230))
+:extrapreds ((x24231))
+:extrapreds ((x24232))
+:extrapreds ((x24233))
+:extrapreds ((x24234))
+:extrapreds ((x24235))
+:extrapreds ((x24236))
+:extrapreds ((x24237))
+:extrapreds ((x24238))
+:extrapreds ((x24239))
+:extrapreds ((x24240))
+:extrapreds ((x24241))
+:extrapreds ((x24242))
+:extrapreds ((x24243))
+:extrapreds ((x24244))
+:extrapreds ((x24245))
+:extrapreds ((x24246))
+:extrapreds ((x24247))
+:extrapreds ((x24248))
+:extrapreds ((x24249))
+:extrapreds ((x24250))
+:extrapreds ((x24251))
+:extrapreds ((x24252))
+:extrapreds ((x24253))
+:extrapreds ((x24254))
+:extrapreds ((x24255))
+:extrapreds ((x24256))
+:extrapreds ((x24257))
+:extrapreds ((x24258))
+:extrapreds ((x24259))
+:extrapreds ((x24260))
+:extrapreds ((x24261))
+:extrapreds ((x24262))
+:extrapreds ((x24263))
+:extrapreds ((x24264))
+:extrapreds ((x24265))
+:extrapreds ((x24266))
+:extrapreds ((x24267))
+:extrapreds ((x24268))
+:extrapreds ((x24269))
+:extrapreds ((x24270))
+:extrapreds ((x24271))
+:extrapreds ((x24272))
+:extrapreds ((x24273))
+:extrapreds ((x24274))
+:extrapreds ((x24275))
+:extrapreds ((x24276))
+:extrapreds ((x24277))
+:extrapreds ((x24278))
+:extrapreds ((x24279))
+:extrapreds ((x24280))
+:extrapreds ((x24281))
+:extrapreds ((x24282))
+:extrapreds ((x24283))
+:extrapreds ((x24284))
+:extrapreds ((x24285))
+:extrapreds ((x24286))
+:extrapreds ((x24287))
+:extrapreds ((x24288))
+:extrapreds ((x24289))
+:extrapreds ((x24290))
+:extrapreds ((x24291))
+:extrapreds ((x24292))
+:extrapreds ((x24293))
+:extrapreds ((x24294))
+:extrapreds ((x24295))
+:extrapreds ((x24296))
+:extrapreds ((x24297))
+:extrapreds ((x24298))
+:extrapreds ((x24299))
+:extrapreds ((x24300))
+:extrapreds ((x24301))
+:extrapreds ((x24302))
+:extrapreds ((x24303))
+:extrapreds ((x24304))
+:extrapreds ((x24305))
+:extrapreds ((x24306))
+:extrapreds ((x24307))
+:extrapreds ((x24308))
+:extrapreds ((x24309))
+:extrapreds ((x24310))
+:extrapreds ((x24311))
+:extrapreds ((x24312))
+:extrapreds ((x24313))
+:extrapreds ((x24314))
+:extrapreds ((x24315))
+:extrapreds ((x24316))
+:extrapreds ((x24317))
+:extrapreds ((x24318))
+:extrapreds ((x24319))
+:extrapreds ((x24320))
+:extrapreds ((x24321))
+:extrapreds ((x24322))
+:extrapreds ((x24323))
+:extrapreds ((x24324))
+:extrapreds ((x24325))
+:extrapreds ((x24326))
+:extrapreds ((x24327))
+:extrapreds ((x24328))
+:extrapreds ((x24329))
+:extrapreds ((x24330))
+:extrapreds ((x24331))
+:extrapreds ((x24332))
+:extrapreds ((x24333))
+:extrapreds ((x24334))
+:extrapreds ((x24335))
+:extrapreds ((x24336))
+:extrapreds ((x24337))
+:extrapreds ((x24338))
+:extrapreds ((x24339))
+:extrapreds ((x24340))
+:extrapreds ((x24341))
+:extrapreds ((x24342))
+:extrapreds ((x24343))
+:extrapreds ((x24344))
+:extrapreds ((x24345))
+:extrapreds ((x24346))
+:extrapreds ((x24347))
+:extrapreds ((x24348))
+:extrapreds ((x24349))
+:extrapreds ((x24350))
+:extrapreds ((x24351))
+:extrapreds ((x24352))
+:extrapreds ((x24353))
+:extrapreds ((x24354))
+:extrapreds ((x24355))
+:extrapreds ((x24356))
+:extrapreds ((x24357))
+:extrapreds ((x24358))
+:extrapreds ((x24359))
+:extrapreds ((x24360))
+:extrapreds ((x24361))
+:extrapreds ((x24362))
+:extrapreds ((x24363))
+:extrapreds ((x24364))
+:extrapreds ((x24365))
+:extrapreds ((x24366))
+:extrapreds ((x24367))
+:extrapreds ((x24368))
+:extrapreds ((x24369))
+:extrapreds ((x24370))
+:extrapreds ((x24371))
+:extrapreds ((x24372))
+:extrapreds ((x24373))
+:extrapreds ((x24374))
+:extrapreds ((x24375))
+:extrapreds ((x24376))
+:extrapreds ((x24377))
+:extrapreds ((x24378))
+:extrapreds ((x24379))
+:extrapreds ((x24380))
+:extrapreds ((x24381))
+:extrapreds ((x24382))
+:extrapreds ((x24383))
+:extrapreds ((x24384))
+:extrapreds ((x24385))
+:extrapreds ((x24386))
+:extrapreds ((x24387))
+:extrapreds ((x24388))
+:extrapreds ((x24389))
+:extrapreds ((x24390))
+:extrapreds ((x24391))
+:extrapreds ((x24392))
+:extrapreds ((x24393))
+:extrapreds ((x24394))
+:extrapreds ((x24395))
+:extrapreds ((x24396))
+:extrapreds ((x24397))
+:extrapreds ((x24398))
+:extrapreds ((x24399))
+:extrapreds ((x24400))
+:extrapreds ((x24401))
+:extrapreds ((x24402))
+:extrapreds ((x24403))
+:extrapreds ((x24404))
+:extrapreds ((x24405))
+:extrapreds ((x24406))
+:extrapreds ((x24407))
+:extrapreds ((x24408))
+:extrapreds ((x24409))
+:extrapreds ((x24410))
+:extrapreds ((x24411))
+:extrapreds ((x24412))
+:extrapreds ((x24413))
+:extrapreds ((x24414))
+:extrapreds ((x24415))
+:extrapreds ((x24416))
+:extrapreds ((x24417))
+:extrapreds ((x24418))
+:extrapreds ((x24419))
+:extrapreds ((x24420))
+:extrapreds ((x24421))
+:extrapreds ((x24422))
+:extrapreds ((x24423))
+:extrapreds ((x24424))
+:extrapreds ((x24425))
+:extrapreds ((x24426))
+:extrapreds ((x24427))
+:extrapreds ((x24428))
+:extrapreds ((x24429))
+:extrapreds ((x24430))
+:extrapreds ((x24431))
+:extrapreds ((x24432))
+:extrapreds ((x24433))
+:extrapreds ((x24434))
+:extrapreds ((x24435))
+:extrapreds ((x24436))
+:extrapreds ((x24437))
+:extrapreds ((x24438))
+:extrapreds ((x24439))
+:extrapreds ((x24440))
+:extrapreds ((x24441))
+:extrapreds ((x24442))
+:extrapreds ((x24443))
+:extrapreds ((x24444))
+:extrapreds ((x24445))
+:extrapreds ((x24446))
+:extrapreds ((x24447))
+:extrapreds ((x24448))
+:extrapreds ((x24449))
+:extrapreds ((x24450))
+:extrapreds ((x24451))
+:extrapreds ((x24452))
+:extrapreds ((x24453))
+:extrapreds ((x24454))
+:extrapreds ((x24455))
+:extrapreds ((x24456))
+:extrapreds ((x24457))
+:extrapreds ((x24458))
+:extrapreds ((x24459))
+:extrapreds ((x24460))
+:extrapreds ((x24461))
+:extrapreds ((x24462))
+:extrapreds ((x24463))
+:extrapreds ((x24464))
+:extrapreds ((x24465))
+:extrapreds ((x24466))
+:extrapreds ((x24467))
+:extrapreds ((x24468))
+:extrapreds ((x24469))
+:extrapreds ((x24470))
+:extrapreds ((x24471))
+:extrapreds ((x24472))
+:extrapreds ((x24473))
+:extrapreds ((x24474))
+:extrapreds ((x24475))
+:extrapreds ((x24476))
+:extrapreds ((x24477))
+:extrapreds ((x24478))
+:extrapreds ((x24479))
+:extrapreds ((x24480))
+:extrapreds ((x24481))
+:extrapreds ((x24482))
+:extrapreds ((x24483))
+:extrapreds ((x24484))
+:extrapreds ((x24485))
+:extrapreds ((x24486))
+:extrapreds ((x24487))
+:extrapreds ((x24488))
+:extrapreds ((x24489))
+:extrapreds ((x24490))
+:extrapreds ((x24491))
+:extrapreds ((x24492))
+:extrapreds ((x24493))
+:extrapreds ((x24494))
+:extrapreds ((x24495))
+:extrapreds ((x24496))
+:extrapreds ((x24497))
+:extrapreds ((x24498))
+:extrapreds ((x24499))
+:extrapreds ((x24500))
+:extrapreds ((x24501))
+:extrapreds ((x24502))
+:extrapreds ((x24503))
+:extrapreds ((x24504))
+:extrapreds ((x24505))
+:extrapreds ((x24506))
+:extrapreds ((x24507))
+:extrapreds ((x24508))
+:extrapreds ((x24509))
+:extrapreds ((x24510))
+:extrapreds ((x24511))
+:extrapreds ((x24512))
+:extrapreds ((x24513))
+:extrapreds ((x24514))
+:extrapreds ((x24515))
+:extrapreds ((x24516))
+:extrapreds ((x24517))
+:extrapreds ((x24518))
+:extrapreds ((x24519))
+:extrapreds ((x24520))
+:extrapreds ((x24521))
+:extrapreds ((x24522))
+:extrapreds ((x24523))
+:extrapreds ((x24524))
+:extrapreds ((x24525))
+:extrapreds ((x24526))
+:extrapreds ((x24527))
+:extrapreds ((x24528))
+:extrapreds ((x24529))
+:extrapreds ((x24530))
+:extrapreds ((x24531))
+:extrapreds ((x24532))
+:extrapreds ((x24533))
+:extrapreds ((x24534))
+:extrapreds ((x24535))
+:extrapreds ((x24536))
+:extrapreds ((x24537))
+:extrapreds ((x24538))
+:extrapreds ((x24539))
+:extrapreds ((x24540))
+:extrapreds ((x24541))
+:extrapreds ((x24542))
+:extrapreds ((x24543))
+:extrapreds ((x24544))
+:extrapreds ((x24545))
+:extrapreds ((x24546))
+:extrapreds ((x24547))
+:extrapreds ((x24548))
+:extrapreds ((x24549))
+:extrapreds ((x24550))
+:extrapreds ((x24551))
+:extrapreds ((x24552))
+:extrapreds ((x24553))
+:extrapreds ((x24554))
+:extrapreds ((x24555))
+:extrapreds ((x24556))
+:extrapreds ((x24557))
+:extrapreds ((x24558))
+:extrapreds ((x24559))
+:extrapreds ((x24560))
+:extrapreds ((x24561))
+:extrapreds ((x24562))
+:extrapreds ((x24563))
+:extrapreds ((x24564))
+:extrapreds ((x24565))
+:extrapreds ((x24566))
+:extrapreds ((x24567))
+:extrapreds ((x24568))
+:extrapreds ((x24569))
+:extrapreds ((x24570))
+:extrapreds ((x24571))
+:extrapreds ((x24572))
+:extrapreds ((x24573))
+:extrapreds ((x24574))
+:extrapreds ((x24575))
+:extrapreds ((x24576))
+:extrapreds ((x24577))
+:extrapreds ((x24578))
+:extrapreds ((x24579))
+:extrapreds ((x24580))
+:extrapreds ((x24581))
+:extrapreds ((x24582))
+:extrapreds ((x24583))
+:extrapreds ((x24584))
+:extrapreds ((x24585))
+:extrapreds ((x24586))
+:extrapreds ((x24587))
+:extrapreds ((x24588))
+:extrapreds ((x24589))
+:extrapreds ((x24590))
+:extrapreds ((x24591))
+:extrapreds ((x24592))
+:extrapreds ((x24593))
+:extrapreds ((x24594))
+:extrapreds ((x24595))
+:extrapreds ((x24596))
+:extrapreds ((x24597))
+:extrapreds ((x24598))
+:extrapreds ((x24599))
+:extrapreds ((x24600))
+:extrapreds ((x24601))
+:extrapreds ((x24602))
+:extrapreds ((x24603))
+:extrapreds ((x24604))
+:extrapreds ((x24605))
+:extrapreds ((x24606))
+:extrapreds ((x24607))
+:extrapreds ((x24608))
+:extrapreds ((x24609))
+:extrapreds ((x24610))
+:extrapreds ((x24611))
+:extrapreds ((x24612))
+:extrapreds ((x24613))
+:extrapreds ((x24614))
+:extrapreds ((x24615))
+:extrapreds ((x24616))
+:extrapreds ((x24617))
+:extrapreds ((x24618))
+:extrapreds ((x24619))
+:extrapreds ((x24620))
+:extrapreds ((x24621))
+:extrapreds ((x24622))
+:extrapreds ((x24623))
+:extrapreds ((x24624))
+:extrapreds ((x24625))
+:extrapreds ((x24626))
+:extrapreds ((x24627))
+:extrapreds ((x24628))
+:extrapreds ((x24629))
+:extrapreds ((x24630))
+:extrapreds ((x24631))
+:extrapreds ((x24632))
+:extrapreds ((x24633))
+:extrapreds ((x24634))
+:extrapreds ((x24635))
+:extrapreds ((x24636))
+:extrapreds ((x24637))
+:extrapreds ((x24638))
+:extrapreds ((x24639))
+:extrapreds ((x24640))
+:extrapreds ((x24641))
+:extrapreds ((x24642))
+:extrapreds ((x24643))
+:extrapreds ((x24644))
+:extrapreds ((x24645))
+:extrapreds ((x24646))
+:extrapreds ((x24647))
+:extrapreds ((x24648))
+:extrapreds ((x24649))
+:extrapreds ((x24650))
+:extrapreds ((x24651))
+:extrapreds ((x24652))
+:extrapreds ((x24653))
+:extrapreds ((x24654))
+:extrapreds ((x24655))
+:extrapreds ((x24656))
+:extrapreds ((x24657))
+:extrapreds ((x24658))
+:extrapreds ((x24659))
+:extrapreds ((x24660))
+:extrapreds ((x24661))
+:extrapreds ((x24662))
+:extrapreds ((x24663))
+:extrapreds ((x24664))
+:extrapreds ((x24665))
+:extrapreds ((x24666))
+:extrapreds ((x24667))
+:extrapreds ((x24668))
+:extrapreds ((x24669))
+:extrapreds ((x24670))
+:extrapreds ((x24671))
+:extrapreds ((x24672))
+:extrapreds ((x24673))
+:extrapreds ((x24674))
+:extrapreds ((x24675))
+:extrapreds ((x24676))
+:extrapreds ((x24677))
+:extrapreds ((x24678))
+:extrapreds ((x24679))
+:extrapreds ((x24680))
+:extrapreds ((x24681))
+:extrapreds ((x24682))
+:extrapreds ((x24683))
+:extrapreds ((x24684))
+:extrapreds ((x24685))
+:extrapreds ((x24686))
+:extrapreds ((x24687))
+:extrapreds ((x24688))
+:extrapreds ((x24689))
+:extrapreds ((x24690))
+:extrapreds ((x24691))
+:extrapreds ((x24692))
+:extrapreds ((x24693))
+:extrapreds ((x24694))
+:extrapreds ((x24695))
+:extrapreds ((x24696))
+:extrapreds ((x24697))
+:extrapreds ((x24698))
+:extrapreds ((x24699))
+:extrapreds ((x24700))
+:extrapreds ((x24701))
+:extrapreds ((x24702))
+:extrapreds ((x24703))
+:extrapreds ((x24704))
+:extrapreds ((x24705))
+:extrapreds ((x24706))
+:extrapreds ((x24707))
+:extrapreds ((x24708))
+:extrapreds ((x24709))
+:extrapreds ((x24710))
+:extrapreds ((x24711))
+:extrapreds ((x24712))
+:extrapreds ((x24713))
+:extrapreds ((x24714))
+:extrapreds ((x24715))
+:extrapreds ((x24716))
+:extrapreds ((x24717))
+:extrapreds ((x24718))
+:extrapreds ((x24719))
+:extrapreds ((x24720))
+:extrapreds ((x24721))
+:extrapreds ((x24722))
+:extrapreds ((x24723))
+:extrapreds ((x24724))
+:extrapreds ((x24725))
+:extrapreds ((x24726))
+:extrapreds ((x24727))
+:extrapreds ((x24728))
+:extrapreds ((x24729))
+:extrapreds ((x24730))
+:extrapreds ((x24731))
+:extrapreds ((x24732))
+:extrapreds ((x24733))
+:extrapreds ((x24734))
+:extrapreds ((x24735))
+:extrapreds ((x24736))
+:extrapreds ((x24737))
+:extrapreds ((x24738))
+:extrapreds ((x24739))
+:extrapreds ((x24740))
+:extrapreds ((x24741))
+:extrapreds ((x24742))
+:extrapreds ((x24743))
+:extrapreds ((x24744))
+:extrapreds ((x24745))
+:extrapreds ((x24746))
+:extrapreds ((x24747))
+:extrapreds ((x24748))
+:extrapreds ((x24749))
+:extrapreds ((x24750))
+:extrapreds ((x24751))
+:extrapreds ((x24752))
+:extrapreds ((x24753))
+:extrapreds ((x24754))
+:extrapreds ((x24755))
+:extrapreds ((x24756))
+:extrapreds ((x24757))
+:extrapreds ((x24758))
+:extrapreds ((x24759))
+:extrapreds ((x24760))
+:extrapreds ((x24761))
+:extrapreds ((x24762))
+:extrapreds ((x24763))
+:extrapreds ((x24764))
+:extrapreds ((x24765))
+:extrapreds ((x24766))
+:extrapreds ((x24767))
+:extrapreds ((x24768))
+:extrapreds ((x24769))
+:extrapreds ((x24770))
+:extrapreds ((x24771))
+:extrapreds ((x24772))
+:extrapreds ((x24773))
+:extrapreds ((x24774))
+:extrapreds ((x24775))
+:extrapreds ((x24776))
+:extrapreds ((x24777))
+:extrapreds ((x24778))
+:extrapreds ((x24779))
+:extrapreds ((x24780))
+:extrapreds ((x24781))
+:extrapreds ((x24782))
+:extrapreds ((x24783))
+:extrapreds ((x24784))
+:extrapreds ((x24785))
+:extrapreds ((x24786))
+:extrapreds ((x24787))
+:extrapreds ((x24788))
+:extrapreds ((x24789))
+:extrapreds ((x24790))
+:extrapreds ((x24791))
+:extrapreds ((x24792))
+:extrapreds ((x24793))
+:extrapreds ((x24794))
+:extrapreds ((x24795))
+:extrapreds ((x24796))
+:extrapreds ((x24797))
+:extrapreds ((x24798))
+:extrapreds ((x24799))
+:extrapreds ((x24800))
+:extrapreds ((x24801))
+:extrapreds ((x24802))
+:extrapreds ((x24803))
+:extrapreds ((x24804))
+:extrapreds ((x24805))
+:extrapreds ((x24806))
+:extrapreds ((x24807))
+:extrapreds ((x24808))
+:extrapreds ((x24809))
+:extrapreds ((x24810))
+:extrapreds ((x24811))
+:extrapreds ((x24812))
+:extrapreds ((x24813))
+:extrapreds ((x24814))
+:extrapreds ((x24815))
+:extrapreds ((x24816))
+:extrapreds ((x24817))
+:extrapreds ((x24818))
+:extrapreds ((x24819))
+:extrapreds ((x24820))
+:extrapreds ((x24821))
+:extrapreds ((x24822))
+:extrapreds ((x24823))
+:extrapreds ((x24824))
+:extrapreds ((x24825))
+:extrapreds ((x24826))
+:extrapreds ((x24827))
+:extrapreds ((x24828))
+:extrapreds ((x24829))
+:extrapreds ((x24830))
+:extrapreds ((x24831))
+:extrapreds ((x24832))
+:extrapreds ((x24833))
+:extrapreds ((x24834))
+:extrapreds ((x24835))
+:extrapreds ((x24836))
+:extrapreds ((x24837))
+:extrapreds ((x24838))
+:extrapreds ((x24839))
+:extrapreds ((x24840))
+:extrapreds ((x24841))
+:extrapreds ((x24842))
+:extrapreds ((x24843))
+:extrapreds ((x24844))
+:extrapreds ((x24845))
+:extrapreds ((x24846))
+:extrapreds ((x24847))
+:extrapreds ((x24848))
+:extrapreds ((x24849))
+:extrapreds ((x24850))
+:extrapreds ((x24851))
+:extrapreds ((x24852))
+:extrapreds ((x24853))
+:extrapreds ((x24854))
+:extrapreds ((x24855))
+:extrapreds ((x24856))
+:extrapreds ((x24857))
+:extrapreds ((x24858))
+:extrapreds ((x24859))
+:extrapreds ((x24860))
+:extrapreds ((x24861))
+:extrapreds ((x24862))
+:extrapreds ((x24863))
+:extrapreds ((x24864))
+:extrapreds ((x24865))
+:extrapreds ((x24866))
+:extrapreds ((x24867))
+:extrapreds ((x24868))
+:extrapreds ((x24869))
+:extrapreds ((x24870))
+:extrapreds ((x24871))
+:extrapreds ((x24872))
+:extrapreds ((x24873))
+:extrapreds ((x24874))
+:extrapreds ((x24875))
+:extrapreds ((x24876))
+:extrapreds ((x24877))
+:extrapreds ((x24878))
+:extrapreds ((x24879))
+:extrapreds ((x24880))
+:extrapreds ((x24881))
+:extrapreds ((x24882))
+:extrapreds ((x24883))
+:extrapreds ((x24884))
+:extrapreds ((x24885))
+:extrapreds ((x24886))
+:extrapreds ((x24887))
+:extrapreds ((x24888))
+:extrapreds ((x24889))
+:extrapreds ((x24890))
+:extrapreds ((x24891))
+:extrapreds ((x24892))
+:extrapreds ((x24893))
+:extrapreds ((x24894))
+:extrapreds ((x24895))
+:extrapreds ((x24896))
+:extrapreds ((x24897))
+:extrapreds ((x24898))
+:extrapreds ((x24899))
+:extrapreds ((x24900))
+:extrapreds ((x24901))
+:extrapreds ((x24902))
+:extrapreds ((x24903))
+:extrapreds ((x24904))
+:extrapreds ((x24905))
+:extrapreds ((x24906))
+:extrapreds ((x24907))
+:extrapreds ((x24908))
+:extrapreds ((x24909))
+:extrapreds ((x24910))
+:extrapreds ((x24911))
+:extrapreds ((x24912))
+:extrapreds ((x24913))
+:extrapreds ((x24914))
+:extrapreds ((x24915))
+:extrapreds ((x24916))
+:extrapreds ((x24917))
+:extrapreds ((x24918))
+:extrapreds ((x24919))
+:extrapreds ((x24920))
+:extrapreds ((x24921))
+:extrapreds ((x24922))
+:extrapreds ((x24923))
+:extrapreds ((x24924))
+:extrapreds ((x24925))
+:extrapreds ((x24926))
+:extrapreds ((x24927))
+:extrapreds ((x24928))
+:extrapreds ((x24929))
+:extrapreds ((x24930))
+:extrapreds ((x24931))
+:extrapreds ((x24932))
+:extrapreds ((x24933))
+:extrapreds ((x24934))
+:extrapreds ((x24935))
+:extrapreds ((x24936))
+:extrapreds ((x24937))
+:extrapreds ((x24938))
+:extrapreds ((x24939))
+:extrapreds ((x24940))
+:extrapreds ((x24941))
+:extrapreds ((x24942))
+:extrapreds ((x24943))
+:extrapreds ((x24944))
+:extrapreds ((x24945))
+:extrapreds ((x24946))
+:extrapreds ((x24947))
+:extrapreds ((x24948))
+:extrapreds ((x24949))
+:extrapreds ((x24950))
+:extrapreds ((x24951))
+:extrapreds ((x24952))
+:extrapreds ((x24953))
+:extrapreds ((x24954))
+:extrapreds ((x24955))
+:extrapreds ((x24956))
+:extrapreds ((x24957))
+:extrapreds ((x24958))
+:extrapreds ((x24959))
+:extrapreds ((x24960))
+:extrapreds ((x24961))
+:extrapreds ((x24962))
+:extrapreds ((x24963))
+:extrapreds ((x24964))
+:extrapreds ((x24965))
+:extrapreds ((x24966))
+:extrapreds ((x24967))
+:extrapreds ((x24968))
+:extrapreds ((x24969))
+:extrapreds ((x24970))
+:extrapreds ((x24971))
+:extrapreds ((x24972))
+:extrapreds ((x24973))
+:extrapreds ((x24974))
+:extrapreds ((x24975))
+:extrapreds ((x24976))
+:extrapreds ((x24977))
+:extrapreds ((x24978))
+:extrapreds ((x24979))
+:extrapreds ((x24980))
+:extrapreds ((x24981))
+:extrapreds ((x24982))
+:extrapreds ((x24983))
+:extrapreds ((x24984))
+:extrapreds ((x24985))
+:extrapreds ((x24986))
+:extrapreds ((x24987))
+:extrapreds ((x24988))
+:extrapreds ((x24989))
+:extrapreds ((x24990))
+:extrapreds ((x24991))
+:extrapreds ((x24992))
+:extrapreds ((x24993))
+:extrapreds ((x24994))
+:extrapreds ((x24995))
+:extrapreds ((x24996))
+:extrapreds ((x24997))
+:extrapreds ((x24998))
+:extrapreds ((x24999))
+:extrapreds ((x25000))
+:extrapreds ((x25001))
+:extrapreds ((x25002))
+:extrapreds ((x25003))
+:extrapreds ((x25004))
+:extrapreds ((x25005))
+:extrapreds ((x25006))
+:extrapreds ((x25007))
+:extrapreds ((x25008))
+:extrapreds ((x25009))
+:extrapreds ((x25010))
+:extrapreds ((x25011))
+:extrapreds ((x25012))
+:extrapreds ((x25013))
+:extrapreds ((x25014))
+:extrapreds ((x25015))
+:extrapreds ((x25016))
+:extrapreds ((x25017))
+:extrapreds ((x25018))
+:extrapreds ((x25019))
+:extrapreds ((x25020))
+:extrapreds ((x25021))
+:extrapreds ((x25022))
+:extrapreds ((x25023))
+:extrapreds ((x25024))
+:extrapreds ((x25025))
+:extrapreds ((x25026))
+:extrapreds ((x25027))
+:extrapreds ((x25028))
+:extrapreds ((x25029))
+:extrapreds ((x25030))
+:extrapreds ((x25031))
+:extrapreds ((x25032))
+:extrapreds ((x25033))
+:extrapreds ((x25034))
+:extrapreds ((x25035))
+:extrapreds ((x25036))
+:extrapreds ((x25037))
+:extrapreds ((x25038))
+:extrapreds ((x25039))
+:extrapreds ((x25040))
+:extrapreds ((x25041))
+:extrapreds ((x25042))
+:extrapreds ((x25043))
+:extrapreds ((x25044))
+:extrapreds ((x25045))
+:extrapreds ((x25046))
+:extrapreds ((x25047))
+:extrapreds ((x25048))
+:extrapreds ((x25049))
+:extrapreds ((x25050))
+:extrapreds ((x25051))
+:extrapreds ((x25052))
+:extrapreds ((x25053))
+:extrapreds ((x25054))
+:extrapreds ((x25055))
+:extrapreds ((x25056))
+:extrapreds ((x25057))
+:extrapreds ((x25058))
+:extrapreds ((x25059))
+:extrapreds ((x25060))
+:extrapreds ((x25061))
+:extrapreds ((x25062))
+:extrapreds ((x25063))
+:extrapreds ((x25064))
+:extrapreds ((x25065))
+:extrapreds ((x25066))
+:extrapreds ((x25067))
+:extrapreds ((x25068))
+:extrapreds ((x25069))
+:extrapreds ((x25070))
+:extrapreds ((x25071))
+:extrapreds ((x25072))
+:extrapreds ((x25073))
+:extrapreds ((x25074))
+:extrapreds ((x25075))
+:extrapreds ((x25076))
+:extrapreds ((x25077))
+:extrapreds ((x25078))
+:extrapreds ((x25079))
+:extrapreds ((x25080))
+:extrapreds ((x25081))
+:extrapreds ((x25082))
+:extrapreds ((x25083))
+:extrapreds ((x25084))
+:extrapreds ((x25085))
+:extrapreds ((x25086))
+:extrapreds ((x25087))
+:extrapreds ((x25088))
+:extrapreds ((x25089))
+:extrapreds ((x25090))
+:extrapreds ((x25091))
+:extrapreds ((x25092))
+:extrapreds ((x25093))
+:extrapreds ((x25094))
+:extrapreds ((x25095))
+:extrapreds ((x25096))
+:extrapreds ((x25097))
+:extrapreds ((x25098))
+:extrapreds ((x25099))
+:extrapreds ((x25100))
+:extrapreds ((x25101))
+:extrapreds ((x25102))
+:extrapreds ((x25103))
+:extrapreds ((x25104))
+:extrapreds ((x25105))
+:extrapreds ((x25106))
+:extrapreds ((x25107))
+:extrapreds ((x25108))
+:extrapreds ((x25109))
+:extrapreds ((x25110))
+:extrapreds ((x25111))
+:extrapreds ((x25112))
+:extrapreds ((x25113))
+:extrapreds ((x25114))
+:extrapreds ((x25115))
+:extrapreds ((x25116))
+:extrapreds ((x25117))
+:extrapreds ((x25118))
+:extrapreds ((x25119))
+:extrapreds ((x25120))
+:extrapreds ((x25121))
+:extrapreds ((x25122))
+:extrapreds ((x25123))
+:extrapreds ((x25124))
+:extrapreds ((x25125))
+:extrapreds ((x25126))
+:extrapreds ((x25127))
+:extrapreds ((x25128))
+:extrapreds ((x25129))
+:extrapreds ((x25130))
+:extrapreds ((x25131))
+:extrapreds ((x25132))
+:extrapreds ((x25133))
+:extrapreds ((x25134))
+:extrapreds ((x25135))
+:extrapreds ((x25136))
+:extrapreds ((x25137))
+:extrapreds ((x25138))
+:extrapreds ((x25139))
+:extrapreds ((x25140))
+:extrapreds ((x25141))
+:extrapreds ((x25142))
+:extrapreds ((x25143))
+:extrapreds ((x25144))
+:extrapreds ((x25145))
+:extrapreds ((x25146))
+:extrapreds ((x25147))
+:extrapreds ((x25148))
+:extrapreds ((x25149))
+:extrapreds ((x25150))
+:extrapreds ((x25151))
+:extrapreds ((x25152))
+:extrapreds ((x25153))
+:extrapreds ((x25154))
+:extrapreds ((x25155))
+:extrapreds ((x25156))
+:extrapreds ((x25157))
+:extrapreds ((x25158))
+:extrapreds ((x25159))
+:extrapreds ((x25160))
+:extrapreds ((x25161))
+:extrapreds ((x25162))
+:extrapreds ((x25163))
+:extrapreds ((x25164))
+:extrapreds ((x25165))
+:extrapreds ((x25166))
+:extrapreds ((x25167))
+:extrapreds ((x25168))
+:extrapreds ((x25169))
+:extrapreds ((x25170))
+:extrapreds ((x25171))
+:extrapreds ((x25172))
+:extrapreds ((x25173))
+:extrapreds ((x25174))
+:extrapreds ((x25175))
+:extrapreds ((x25176))
+:extrapreds ((x25177))
+:extrapreds ((x25178))
+:extrapreds ((x25179))
+:extrapreds ((x25180))
+:extrapreds ((x25181))
+:extrapreds ((x25182))
+:extrapreds ((x25183))
+:extrapreds ((x25184))
+:extrapreds ((x25185))
+:extrapreds ((x25186))
+:extrapreds ((x25187))
+:extrapreds ((x25188))
+:extrapreds ((x25189))
+:extrapreds ((x25190))
+:extrapreds ((x25191))
+:extrapreds ((x25192))
+:extrapreds ((x25193))
+:extrapreds ((x25194))
+:extrapreds ((x25195))
+:extrapreds ((x25196))
+:extrapreds ((x25197))
+:extrapreds ((x25198))
+:extrapreds ((x25199))
+:extrapreds ((x25200))
+:extrapreds ((x25201))
+:extrapreds ((x25202))
+:extrapreds ((x25203))
+:extrapreds ((x25204))
+:extrapreds ((x25205))
+:extrapreds ((x25206))
+:extrapreds ((x25207))
+:extrapreds ((x25208))
+:extrapreds ((x25209))
+:extrapreds ((x25210))
+:extrapreds ((x25211))
+:extrapreds ((x25212))
+:extrapreds ((x25213))
+:extrapreds ((x25214))
+:extrapreds ((x25215))
+:extrapreds ((x25216))
+:extrapreds ((x25217))
+:extrapreds ((x25218))
+:extrapreds ((x25219))
+:extrapreds ((x25220))
+:extrapreds ((x25221))
+:extrapreds ((x25222))
+:extrapreds ((x25223))
+:extrapreds ((x25224))
+:extrapreds ((x25225))
+:extrapreds ((x25226))
+:extrapreds ((x25227))
+:extrapreds ((x25228))
+:extrapreds ((x25229))
+:extrapreds ((x25230))
+:extrapreds ((x25231))
+:extrapreds ((x25232))
+:extrapreds ((x25233))
+:extrapreds ((x25234))
+:extrapreds ((x25235))
+:extrapreds ((x25236))
+:extrapreds ((x25237))
+:extrapreds ((x25238))
+:extrapreds ((x25239))
+:extrapreds ((x25240))
+:extrapreds ((x25241))
+:extrapreds ((x25242))
+:extrapreds ((x25243))
+:extrapreds ((x25244))
+:extrapreds ((x25245))
+:extrapreds ((x25246))
+:extrapreds ((x25247))
+:extrapreds ((x25248))
+:extrapreds ((x25249))
+:extrapreds ((x25250))
+:extrapreds ((x25251))
+:extrapreds ((x25252))
+:extrapreds ((x25253))
+:extrapreds ((x25254))
+:extrapreds ((x25255))
+:extrapreds ((x25256))
+:extrapreds ((x25257))
+:extrapreds ((x25258))
+:extrapreds ((x25259))
+:extrapreds ((x25260))
+:extrapreds ((x25261))
+:extrapreds ((x25262))
+:extrapreds ((x25263))
+:extrapreds ((x25264))
+:extrapreds ((x25265))
+:extrapreds ((x25266))
+:extrapreds ((x25267))
+:extrapreds ((x25268))
+:extrapreds ((x25269))
+:extrapreds ((x25270))
+:extrapreds ((x25271))
+:extrapreds ((x25272))
+:extrapreds ((x25273))
+:extrapreds ((x25274))
+:extrapreds ((x25275))
+:extrapreds ((x25276))
+:extrapreds ((x25277))
+:extrapreds ((x25278))
+:extrapreds ((x25279))
+:extrapreds ((x25280))
+:extrapreds ((x25281))
+:extrapreds ((x25282))
+:extrapreds ((x25283))
+:extrapreds ((x25284))
+:extrapreds ((x25285))
+:extrapreds ((x25286))
+:extrapreds ((x25287))
+:extrapreds ((x25288))
+:extrapreds ((x25289))
+:extrapreds ((x25290))
+:extrapreds ((x25291))
+:extrapreds ((x25292))
+:extrapreds ((x25293))
+:extrapreds ((x25294))
+:extrapreds ((x25295))
+:extrapreds ((x25296))
+:extrapreds ((x25297))
+:extrapreds ((x25298))
+:extrapreds ((x25299))
+:extrapreds ((x25300))
+:extrapreds ((x25301))
+:extrapreds ((x25302))
+:extrapreds ((x25303))
+:extrapreds ((x25304))
+:extrapreds ((x25305))
+:extrapreds ((x25306))
+:extrapreds ((x25307))
+:extrapreds ((x25308))
+:extrapreds ((x25309))
+:extrapreds ((x25310))
+:extrapreds ((x25311))
+:extrapreds ((x25312))
+:extrapreds ((x25313))
+:extrapreds ((x25314))
+:extrapreds ((x25315))
+:extrapreds ((x25316))
+:extrapreds ((x25317))
+:extrapreds ((x25318))
+:extrapreds ((x25319))
+:extrapreds ((x25320))
+:extrapreds ((x25321))
+:extrapreds ((x25322))
+:extrapreds ((x25323))
+:extrapreds ((x25324))
+:extrapreds ((x25325))
+:extrapreds ((x25326))
+:extrapreds ((x25327))
+:extrapreds ((x25328))
+:extrapreds ((x25329))
+:extrapreds ((x25330))
+:extrapreds ((x25331))
+:extrapreds ((x25332))
+:extrapreds ((x25333))
+:extrapreds ((x25334))
+:extrapreds ((x25335))
+:extrapreds ((x25336))
+:extrapreds ((x25337))
+:extrapreds ((x25338))
+:extrapreds ((x25339))
+:extrapreds ((x25340))
+:extrapreds ((x25341))
+:extrapreds ((x25342))
+:extrapreds ((x25343))
+:extrapreds ((x25344))
+:extrapreds ((x25345))
+:extrapreds ((x25346))
+:extrapreds ((x25347))
+:extrapreds ((x25348))
+:extrapreds ((x25349))
+:extrapreds ((x25350))
+:extrapreds ((x25351))
+:extrapreds ((x25352))
+:extrapreds ((x25353))
+:extrapreds ((x25354))
+:extrapreds ((x25355))
+:extrapreds ((x25356))
+:extrapreds ((x25357))
+:extrapreds ((x25358))
+:extrapreds ((x25359))
+:extrapreds ((x25360))
+:extrapreds ((x25361))
+:extrapreds ((x25362))
+:extrapreds ((x25363))
+:extrapreds ((x25364))
+:extrapreds ((x25365))
+:extrapreds ((x25366))
+:extrapreds ((x25367))
+:extrapreds ((x25368))
+:extrapreds ((x25369))
+:extrapreds ((x25370))
+:extrapreds ((x25371))
+:extrapreds ((x25372))
+:extrapreds ((x25373))
+:extrapreds ((x25374))
+:extrapreds ((x25375))
+:extrapreds ((x25376))
+:extrapreds ((x25377))
+:extrapreds ((x25378))
+:extrapreds ((x25379))
+:extrapreds ((x25380))
+:extrapreds ((x25381))
+:extrapreds ((x25382))
+:extrapreds ((x25383))
+:extrapreds ((x25384))
+:extrapreds ((x25385))
+:extrapreds ((x25386))
+:extrapreds ((x25387))
+:extrapreds ((x25388))
+:extrapreds ((x25389))
+:extrapreds ((x25390))
+:extrapreds ((x25391))
+:extrapreds ((x25392))
+:extrapreds ((x25393))
+:extrapreds ((x25394))
+:extrapreds ((x25395))
+:extrapreds ((x25396))
+:extrapreds ((x25397))
+:extrapreds ((x25398))
+:extrapreds ((x25399))
+:extrapreds ((x25400))
+:extrapreds ((x25401))
+:extrapreds ((x25402))
+:extrapreds ((x25403))
+:extrapreds ((x25404))
+:extrapreds ((x25405))
+:extrapreds ((x25406))
+:extrapreds ((x25407))
+:extrapreds ((x25408))
+:extrapreds ((x25409))
+:extrapreds ((x25410))
+:extrapreds ((x25411))
+:extrapreds ((x25412))
+:extrapreds ((x25413))
+:extrapreds ((x25414))
+:extrapreds ((x25415))
+:extrapreds ((x25416))
+:extrapreds ((x25417))
+:extrapreds ((x25418))
+:extrapreds ((x25419))
+:extrapreds ((x25420))
+:extrapreds ((x25421))
+:extrapreds ((x25422))
+:extrapreds ((x25423))
+:extrapreds ((x25424))
+:extrapreds ((x25425))
+:extrapreds ((x25426))
+:extrapreds ((x25427))
+:extrapreds ((x25428))
+:extrapreds ((x25429))
+:extrapreds ((x25430))
+:extrapreds ((x25431))
+:extrapreds ((x25432))
+:extrapreds ((x25433))
+:extrapreds ((x25434))
+:extrapreds ((x25435))
+:extrapreds ((x25436))
+:extrapreds ((x25437))
+:extrapreds ((x25438))
+:extrapreds ((x25439))
+:extrapreds ((x25440))
+:extrapreds ((x25441))
+:extrapreds ((x25442))
+:extrapreds ((x25443))
+:extrapreds ((x25444))
+:extrapreds ((x25445))
+:extrapreds ((x25446))
+:extrapreds ((x25447))
+:extrapreds ((x25448))
+:extrapreds ((x25449))
+:extrapreds ((x25450))
+:extrapreds ((x25451))
+:extrapreds ((x25452))
+:extrapreds ((x25453))
+:extrapreds ((x25454))
+:extrapreds ((x25455))
+:extrapreds ((x25456))
+:extrapreds ((x25457))
+:extrapreds ((x25458))
+:extrapreds ((x25459))
+:extrapreds ((x25460))
+:extrapreds ((x25461))
+:extrapreds ((x25462))
+:extrapreds ((x25463))
+:extrapreds ((x25464))
+:extrapreds ((x25465))
+:extrapreds ((x25466))
+:extrapreds ((x25467))
+:extrapreds ((x25468))
+:extrapreds ((x25469))
+:extrapreds ((x25470))
+:extrapreds ((x25471))
+:extrapreds ((x25472))
+:extrapreds ((x25473))
+:extrapreds ((x25474))
+:extrapreds ((x25475))
+:extrapreds ((x25476))
+:extrapreds ((x25477))
+:extrapreds ((x25478))
+:extrapreds ((x25479))
+:extrapreds ((x25480))
+:extrapreds ((x25481))
+:extrapreds ((x25482))
+:extrapreds ((x25483))
+:extrapreds ((x25484))
+:extrapreds ((x25485))
+:extrapreds ((x25486))
+:extrapreds ((x25487))
+:extrapreds ((x25488))
+:extrapreds ((x25489))
+:extrapreds ((x25490))
+:extrapreds ((x25491))
+:extrapreds ((x25492))
+:extrapreds ((x25493))
+:extrapreds ((x25494))
+:extrapreds ((x25495))
+:extrapreds ((x25496))
+:extrapreds ((x25497))
+:extrapreds ((x25498))
+:extrapreds ((x25499))
+:extrapreds ((x25500))
+:extrapreds ((x25501))
+:extrapreds ((x25502))
+:extrapreds ((x25503))
+:extrapreds ((x25504))
+:extrapreds ((x25505))
+:extrapreds ((x25506))
+:extrapreds ((x25507))
+:extrapreds ((x25508))
+:extrapreds ((x25509))
+:extrapreds ((x25510))
+:extrapreds ((x25511))
+:extrapreds ((x25512))
+:extrapreds ((x25513))
+:extrapreds ((x25514))
+:extrapreds ((x25515))
+:extrapreds ((x25516))
+:extrapreds ((x25517))
+:extrapreds ((x25518))
+:extrapreds ((x25519))
+:extrapreds ((x25520))
+:extrapreds ((x25521))
+:extrapreds ((x25522))
+:extrapreds ((x25523))
+:extrapreds ((x25524))
+:extrapreds ((x25525))
+:extrapreds ((x25526))
+:extrapreds ((x25527))
+:extrapreds ((x25528))
+:extrapreds ((x25529))
+:extrapreds ((x25530))
+:extrapreds ((x25531))
+:extrapreds ((x25532))
+:extrapreds ((x25533))
+:extrapreds ((x25534))
+:extrapreds ((x25535))
+:extrapreds ((x25536))
+:extrapreds ((x25537))
+:extrapreds ((x25538))
+:extrapreds ((x25539))
+:extrapreds ((x25540))
+:extrapreds ((x25541))
+:extrapreds ((x25542))
+:extrapreds ((x25543))
+:extrapreds ((x25544))
+:extrapreds ((x25545))
+:extrapreds ((x25546))
+:extrapreds ((x25547))
+:extrapreds ((x25548))
+:extrapreds ((x25549))
+:extrapreds ((x25550))
+:extrapreds ((x25551))
+:extrapreds ((x25552))
+:extrapreds ((x25553))
+:extrapreds ((x25554))
+:extrapreds ((x25555))
+:extrapreds ((x25556))
+:extrapreds ((x25557))
+:extrapreds ((x25558))
+:extrapreds ((x25559))
+:extrapreds ((x25560))
+:extrapreds ((x25561))
+:extrapreds ((x25562))
+:extrapreds ((x25563))
+:extrapreds ((x25564))
+:extrapreds ((x25565))
+:extrapreds ((x25566))
+:extrapreds ((x25567))
+:extrapreds ((x25568))
+:extrapreds ((x25569))
+:extrapreds ((x25570))
+:extrapreds ((x25571))
+:extrapreds ((x25572))
+:extrapreds ((x25573))
+:extrapreds ((x25574))
+:extrapreds ((x25575))
+:extrapreds ((x25576))
+:extrapreds ((x25577))
+:extrapreds ((x25578))
+:extrapreds ((x25579))
+:extrapreds ((x25580))
+:extrapreds ((x25581))
+:extrapreds ((x25582))
+:extrapreds ((x25583))
+:extrapreds ((x25584))
+:extrapreds ((x25585))
+:extrapreds ((x25586))
+:extrapreds ((x25587))
+:extrapreds ((x25588))
+:extrapreds ((x25589))
+:extrapreds ((x25590))
+:extrapreds ((x25591))
+:extrapreds ((x25592))
+:extrapreds ((x25593))
+:extrapreds ((x25594))
+:extrapreds ((x25595))
+:extrapreds ((x25596))
+:extrapreds ((x25597))
+:extrapreds ((x25598))
+:extrapreds ((x25599))
+:extrapreds ((x25600))
+:extrapreds ((x25601))
+:extrapreds ((x25602))
+:extrapreds ((x25603))
+:extrapreds ((x25604))
+:extrapreds ((x25605))
+:extrapreds ((x25606))
+:extrapreds ((x25607))
+:extrapreds ((x25608))
+:extrapreds ((x25609))
+:extrapreds ((x25610))
+:extrapreds ((x25611))
+:extrapreds ((x25612))
+:extrapreds ((x25613))
+:extrapreds ((x25614))
+:extrapreds ((x25615))
+:extrapreds ((x25616))
+:extrapreds ((x25617))
+:extrapreds ((x25618))
+:extrapreds ((x25619))
+:extrapreds ((x25620))
+:extrapreds ((x25621))
+:extrapreds ((x25622))
+:extrapreds ((x25623))
+:extrapreds ((x25624))
+:extrapreds ((x25625))
+:extrapreds ((x25626))
+:extrapreds ((x25627))
+:extrapreds ((x25628))
+:extrapreds ((x25629))
+:extrapreds ((x25630))
+:extrapreds ((x25631))
+:extrapreds ((x25632))
+:extrapreds ((x25633))
+:extrapreds ((x25634))
+:extrapreds ((x25635))
+:extrapreds ((x25636))
+:extrapreds ((x25637))
+:extrapreds ((x25638))
+:extrapreds ((x25639))
+:extrapreds ((x25640))
+:extrapreds ((x25641))
+:extrapreds ((x25642))
+:extrapreds ((x25643))
+:extrapreds ((x25644))
+:extrapreds ((x25645))
+:extrapreds ((x25646))
+:extrapreds ((x25647))
+:extrapreds ((x25648))
+:extrapreds ((x25649))
+:extrapreds ((x25650))
+:extrapreds ((x25651))
+:extrapreds ((x25652))
+:extrapreds ((x25653))
+:extrapreds ((x25654))
+:extrapreds ((x25655))
+:extrapreds ((x25656))
+:extrapreds ((x25657))
+:extrapreds ((x25658))
+:extrapreds ((x25659))
+:extrapreds ((x25660))
+:extrapreds ((x25661))
+:extrapreds ((x25662))
+:extrapreds ((x25663))
+:extrapreds ((x25664))
+:extrapreds ((x25665))
+:extrapreds ((x25666))
+:extrapreds ((x25667))
+:extrapreds ((x25668))
+:extrapreds ((x25669))
+:extrapreds ((x25670))
+:extrapreds ((x25671))
+:extrapreds ((x25672))
+:extrapreds ((x25673))
+:extrapreds ((x25674))
+:extrapreds ((x25675))
+:extrapreds ((x25676))
+:extrapreds ((x25677))
+:extrapreds ((x25678))
+:extrapreds ((x25679))
+:extrapreds ((x25680))
+:extrapreds ((x25681))
+:extrapreds ((x25682))
+:extrapreds ((x25683))
+:extrapreds ((x25684))
+:extrapreds ((x25685))
+:extrapreds ((x25686))
+:extrapreds ((x25687))
+:extrapreds ((x25688))
+:extrapreds ((x25689))
+:extrapreds ((x25690))
+:extrapreds ((x25691))
+:extrapreds ((x25692))
+:extrapreds ((x25693))
+:extrapreds ((x25694))
+:extrapreds ((x25695))
+:extrapreds ((x25696))
+:extrapreds ((x25697))
+:extrapreds ((x25698))
+:extrapreds ((x25699))
+:extrapreds ((x25700))
+:extrapreds ((x25701))
+:extrapreds ((x25702))
+:extrapreds ((x25703))
+:extrapreds ((x25704))
+:extrapreds ((x25705))
+:extrapreds ((x25706))
+:extrapreds ((x25707))
+:extrapreds ((x25708))
+:extrapreds ((x25709))
+:extrapreds ((x25710))
+:extrapreds ((x25711))
+:extrapreds ((x25712))
+:extrapreds ((x25713))
+:extrapreds ((x25714))
+:extrapreds ((x25715))
+:extrapreds ((x25716))
+:extrapreds ((x25717))
+:extrapreds ((x25718))
+:extrapreds ((x25719))
+:extrapreds ((x25720))
+:extrapreds ((x25721))
+:extrapreds ((x25722))
+:extrapreds ((x25723))
+:extrapreds ((x25724))
+:extrapreds ((x25725))
+:extrapreds ((x25726))
+:extrapreds ((x25727))
+:extrapreds ((x25728))
+:extrapreds ((x25729))
+:extrapreds ((x25730))
+:extrapreds ((x25731))
+:extrapreds ((x25732))
+:extrapreds ((x25733))
+:extrapreds ((x25734))
+:extrapreds ((x25735))
+:extrapreds ((x25736))
+:extrapreds ((x25737))
+:extrapreds ((x25738))
+:extrapreds ((x25739))
+:extrapreds ((x25740))
+:extrapreds ((x25741))
+:extrapreds ((x25742))
+:extrapreds ((x25743))
+:extrapreds ((x25744))
+:extrapreds ((x25745))
+:extrapreds ((x25746))
+:extrapreds ((x25747))
+:extrapreds ((x25748))
+:extrapreds ((x25749))
+:extrapreds ((x25750))
+:extrapreds ((x25751))
+:extrapreds ((x25752))
+:extrapreds ((x25753))
+:extrapreds ((x25754))
+:extrapreds ((x25755))
+:extrapreds ((x25756))
+:extrapreds ((x25757))
+:extrapreds ((x25758))
+:extrapreds ((x25759))
+:extrapreds ((x25760))
+:extrapreds ((x25761))
+:extrapreds ((x25762))
+:extrapreds ((x25763))
+:extrapreds ((x25764))
+:extrapreds ((x25765))
+:extrapreds ((x25766))
+:extrapreds ((x25767))
+:extrapreds ((x25768))
+:extrapreds ((x25769))
+:extrapreds ((x25770))
+:extrapreds ((x25771))
+:extrapreds ((x25772))
+:extrapreds ((x25773))
+:extrapreds ((x25774))
+:extrapreds ((x25775))
+:extrapreds ((x25776))
+:extrapreds ((x25777))
+:extrapreds ((x25778))
+:extrapreds ((x25779))
+:extrapreds ((x25780))
+:extrapreds ((x25781))
+:extrapreds ((x25782))
+:extrapreds ((x25783))
+:extrapreds ((x25784))
+:extrapreds ((x25785))
+:extrapreds ((x25786))
+:extrapreds ((x25787))
+:extrapreds ((x25788))
+:extrapreds ((x25789))
+:extrapreds ((x25790))
+:extrapreds ((x25791))
+:extrapreds ((x25792))
+:extrapreds ((x25793))
+:extrapreds ((x25794))
+:extrapreds ((x25795))
+:extrapreds ((x25796))
+:extrapreds ((x25797))
+:extrapreds ((x25798))
+:extrapreds ((x25799))
+:extrapreds ((x25800))
+:extrapreds ((x25801))
+:extrapreds ((x25802))
+:extrapreds ((x25803))
+:extrapreds ((x25804))
+:extrapreds ((x25805))
+:extrapreds ((x25806))
+:extrapreds ((x25807))
+:extrapreds ((x25808))
+:extrapreds ((x25809))
+:extrapreds ((x25810))
+:extrapreds ((x25811))
+:extrapreds ((x25812))
+:extrapreds ((x25813))
+:extrapreds ((x25814))
+:extrapreds ((x25815))
+:extrapreds ((x25816))
+:extrapreds ((x25817))
+:extrapreds ((x25818))
+:extrapreds ((x25819))
+:extrapreds ((x25820))
+:extrapreds ((x25821))
+:extrapreds ((x25822))
+:extrapreds ((x25823))
+:extrapreds ((x25824))
+:extrapreds ((x25825))
+:extrapreds ((x25826))
+:extrapreds ((x25827))
+:extrapreds ((x25828))
+:extrapreds ((x25829))
+:extrapreds ((x25830))
+:extrapreds ((x25831))
+:extrapreds ((x25832))
+:extrapreds ((x25833))
+:extrapreds ((x25834))
+:extrapreds ((x25835))
+:extrapreds ((x25836))
+:extrapreds ((x25837))
+:extrapreds ((x25838))
+:extrapreds ((x25839))
+:extrapreds ((x25840))
+:extrapreds ((x25841))
+:extrapreds ((x25842))
+:extrapreds ((x25843))
+:extrapreds ((x25844))
+:extrapreds ((x25845))
+:extrapreds ((x25846))
+:extrapreds ((x25847))
+:extrapreds ((x25848))
+:extrapreds ((x25849))
+:extrapreds ((x25850))
+:extrapreds ((x25851))
+:extrapreds ((x25852))
+:extrapreds ((x25853))
+:extrapreds ((x25854))
+:extrapreds ((x25855))
+:extrapreds ((x25856))
+:extrapreds ((x25857))
+:extrapreds ((x25858))
+:extrapreds ((x25859))
+:extrapreds ((x25860))
+:extrapreds ((x25861))
+:extrapreds ((x25862))
+:extrapreds ((x25863))
+:extrapreds ((x25864))
+:extrapreds ((x25865))
+:extrapreds ((x25866))
+:extrapreds ((x25867))
+:extrapreds ((x25868))
+:extrapreds ((x25869))
+:extrapreds ((x25870))
+:extrapreds ((x25871))
+:extrapreds ((x25872))
+:extrapreds ((x25873))
+:extrapreds ((x25874))
+:extrapreds ((x25875))
+:extrapreds ((x25876))
+:extrapreds ((x25877))
+:extrapreds ((x25878))
+:extrapreds ((x25879))
+:extrapreds ((x25880))
+:extrapreds ((x25881))
+:extrapreds ((x25882))
+:extrapreds ((x25883))
+:extrapreds ((x25884))
+:extrapreds ((x25885))
+:extrapreds ((x25886))
+:extrapreds ((x25887))
+:extrapreds ((x25888))
+:extrapreds ((x25889))
+:extrapreds ((x25890))
+:extrapreds ((x25891))
+:extrapreds ((x25892))
+:extrapreds ((x25893))
+:extrapreds ((x25894))
+:extrapreds ((x25895))
+:extrapreds ((x25896))
+:extrapreds ((x25897))
+:extrapreds ((x25898))
+:extrapreds ((x25899))
+:extrapreds ((x25900))
+:extrapreds ((x25901))
+:extrapreds ((x25902))
+:extrapreds ((x25903))
+:extrapreds ((x25904))
+:extrapreds ((x25905))
+:extrapreds ((x25906))
+:extrapreds ((x25907))
+:extrapreds ((x25908))
+:extrapreds ((x25909))
+:extrapreds ((x25910))
+:extrapreds ((x25911))
+:extrapreds ((x25912))
+:extrapreds ((x25913))
+:extrapreds ((x25914))
+:extrapreds ((x25915))
+:extrapreds ((x25916))
+:extrapreds ((x25917))
+:extrapreds ((x25918))
+:extrapreds ((x25919))
+:extrapreds ((x25920))
+:extrapreds ((x25921))
+:extrapreds ((x25922))
+:extrapreds ((x25923))
+:extrapreds ((x25924))
+:extrapreds ((x25925))
+:extrapreds ((x25926))
+:extrapreds ((x25927))
+:extrapreds ((x25928))
+:extrapreds ((x25929))
+:extrapreds ((x25930))
+:extrapreds ((x25931))
+:extrapreds ((x25932))
+:extrapreds ((x25933))
+:extrapreds ((x25934))
+:extrapreds ((x25935))
+:extrapreds ((x25936))
+:extrapreds ((x25937))
+:extrapreds ((x25938))
+:extrapreds ((x25939))
+:extrapreds ((x25940))
+:extrapreds ((x25941))
+:extrapreds ((x25942))
+:extrapreds ((x25943))
+:extrapreds ((x25944))
+:extrapreds ((x25945))
+:extrapreds ((x25946))
+:extrapreds ((x25947))
+:extrapreds ((x25948))
+:extrapreds ((x25949))
+:extrapreds ((x25950))
+:extrapreds ((x25951))
+:extrapreds ((x25952))
+:extrapreds ((x25953))
+:extrapreds ((x25954))
+:extrapreds ((x25955))
+:extrapreds ((x25956))
+:extrapreds ((x25957))
+:extrapreds ((x25958))
+:extrapreds ((x25959))
+:extrapreds ((x25960))
+:extrapreds ((x25961))
+:extrapreds ((x25962))
+:extrapreds ((x25963))
+:extrapreds ((x25964))
+:extrapreds ((x25965))
+:extrapreds ((x25966))
+:extrapreds ((x25967))
+:extrapreds ((x25968))
+:extrapreds ((x25969))
+:extrapreds ((x25970))
+:extrapreds ((x25971))
+:extrapreds ((x25972))
+:extrapreds ((x25973))
+:extrapreds ((x25974))
+:extrapreds ((x25975))
+:extrapreds ((x25976))
+:extrapreds ((x25977))
+:extrapreds ((x25978))
+:extrapreds ((x25979))
+:extrapreds ((x25980))
+:extrapreds ((x25981))
+:extrapreds ((x25982))
+:extrapreds ((x25983))
+:extrapreds ((x25984))
+:extrapreds ((x25985))
+:extrapreds ((x25986))
+:extrapreds ((x25987))
+:extrapreds ((x25988))
+:extrapreds ((x25989))
+:extrapreds ((x25990))
+:extrapreds ((x25991))
+:extrapreds ((x25992))
+:extrapreds ((x25993))
+:extrapreds ((x25994))
+:extrapreds ((x25995))
+:extrapreds ((x25996))
+:extrapreds ((x25997))
+:extrapreds ((x25998))
+:extrapreds ((x25999))
+:extrapreds ((x26000))
+:extrapreds ((x26001))
+:extrapreds ((x26002))
+:extrapreds ((x26003))
+:extrapreds ((x26004))
+:extrapreds ((x26005))
+:extrapreds ((x26006))
+:extrapreds ((x26007))
+:extrapreds ((x26008))
+:extrapreds ((x26009))
+:extrapreds ((x26010))
+:extrapreds ((x26011))
+:extrapreds ((x26012))
+:extrapreds ((x26013))
+:extrapreds ((x26014))
+:extrapreds ((x26015))
+:extrapreds ((x26016))
+:extrapreds ((x26017))
+:extrapreds ((x26018))
+:extrapreds ((x26019))
+:extrapreds ((x26020))
+:extrapreds ((x26021))
+:extrapreds ((x26022))
+:extrapreds ((x26023))
+:extrapreds ((x26024))
+:extrapreds ((x26025))
+:extrapreds ((x26026))
+:extrapreds ((x26027))
+:extrapreds ((x26028))
+:extrapreds ((x26029))
+:extrapreds ((x26030))
+:extrapreds ((x26031))
+:extrapreds ((x26032))
+:extrapreds ((x26033))
+:extrapreds ((x26034))
+:extrapreds ((x26035))
+:extrapreds ((x26036))
+:extrapreds ((x26037))
+:extrapreds ((x26038))
+:extrapreds ((x26039))
+:extrapreds ((x26040))
+:extrapreds ((x26041))
+:extrapreds ((x26042))
+:extrapreds ((x26043))
+:extrapreds ((x26044))
+:extrapreds ((x26045))
+:extrapreds ((x26046))
+:extrapreds ((x26047))
+:extrapreds ((x26048))
+:extrapreds ((x26049))
+:extrapreds ((x26050))
+:extrapreds ((x26051))
+:extrapreds ((x26052))
+:extrapreds ((x26053))
+:extrapreds ((x26054))
+:extrapreds ((x26055))
+:extrapreds ((x26056))
+:extrapreds ((x26057))
+:extrapreds ((x26058))
+:extrapreds ((x26059))
+:extrapreds ((x26060))
+:extrapreds ((x26061))
+:extrapreds ((x26062))
+:extrapreds ((x26063))
+:extrapreds ((x26064))
+:extrapreds ((x26065))
+:extrapreds ((x26066))
+:extrapreds ((x26067))
+:extrapreds ((x26068))
+:extrapreds ((x26069))
+:extrapreds ((x26070))
+:extrapreds ((x26071))
+:extrapreds ((x26072))
+:extrapreds ((x26073))
+:extrapreds ((x26074))
+:extrapreds ((x26075))
+:extrapreds ((x26076))
+:extrapreds ((x26077))
+:extrapreds ((x26078))
+:extrapreds ((x26079))
+:extrapreds ((x26080))
+:extrapreds ((x26081))
+:extrapreds ((x26082))
+:extrapreds ((x26083))
+:extrapreds ((x26084))
+:extrapreds ((x26085))
+:extrapreds ((x26086))
+:extrapreds ((x26087))
+:extrapreds ((x26088))
+:extrapreds ((x26089))
+:extrapreds ((x26090))
+:extrapreds ((x26091))
+:extrapreds ((x26092))
+:extrapreds ((x26093))
+:extrapreds ((x26094))
+:extrapreds ((x26095))
+:extrapreds ((x26096))
+:extrapreds ((x26097))
+:extrapreds ((x26098))
+:extrapreds ((x26099))
+:extrapreds ((x26100))
+:extrapreds ((x26101))
+:extrapreds ((x26102))
+:extrapreds ((x26103))
+:extrapreds ((x26104))
+:extrapreds ((x26105))
+:extrapreds ((x26106))
+:extrapreds ((x26107))
+:extrapreds ((x26108))
+:extrapreds ((x26109))
+:extrapreds ((x26110))
+:extrapreds ((x26111))
+:extrapreds ((x26112))
+:extrapreds ((x26113))
+:extrapreds ((x26114))
+:extrapreds ((x26115))
+:extrapreds ((x26116))
+:extrapreds ((x26117))
+:extrapreds ((x26118))
+:extrapreds ((x26119))
+:extrapreds ((x26120))
+:extrapreds ((x26121))
+:extrapreds ((x26122))
+:extrapreds ((x26123))
+:extrapreds ((x26124))
+:extrapreds ((x26125))
+:extrapreds ((x26126))
+:extrapreds ((x26127))
+:extrapreds ((x26128))
+:extrapreds ((x26129))
+:extrapreds ((x26130))
+:extrapreds ((x26131))
+:extrapreds ((x26132))
+:extrapreds ((x26133))
+:extrapreds ((x26134))
+:extrapreds ((x26135))
+:extrapreds ((x26136))
+:extrapreds ((x26137))
+:extrapreds ((x26138))
+:extrapreds ((x26139))
+:extrapreds ((x26140))
+:extrapreds ((x26141))
+:extrapreds ((x26142))
+:extrapreds ((x26143))
+:extrapreds ((x26144))
+:extrapreds ((x26145))
+:extrapreds ((x26146))
+:extrapreds ((x26147))
+:extrapreds ((x26148))
+:extrapreds ((x26149))
+:extrapreds ((x26150))
+:extrapreds ((x26151))
+:extrapreds ((x26152))
+:extrapreds ((x26153))
+:extrapreds ((x26154))
+:extrapreds ((x26155))
+:extrapreds ((x26156))
+:extrapreds ((x26157))
+:extrapreds ((x26158))
+:extrapreds ((x26159))
+:extrapreds ((x26160))
+:extrapreds ((x26161))
+:extrapreds ((x26162))
+:extrapreds ((x26163))
+:extrapreds ((x26164))
+:extrapreds ((x26165))
+:extrapreds ((x26166))
+:extrapreds ((x26167))
+:extrapreds ((x26168))
+:extrapreds ((x26169))
+:extrapreds ((x26170))
+:extrapreds ((x26171))
+:extrapreds ((x26172))
+:extrapreds ((x26173))
+:extrapreds ((x26174))
+:extrapreds ((x26175))
+:extrapreds ((x26176))
+:extrapreds ((x26177))
+:extrapreds ((x26178))
+:extrapreds ((x26179))
+:extrapreds ((x26180))
+:extrapreds ((x26181))
+:extrapreds ((x26182))
+:extrapreds ((x26183))
+:extrapreds ((x26184))
+:extrapreds ((x26185))
+:extrapreds ((x26186))
+:extrapreds ((x26187))
+:extrapreds ((x26188))
+:extrapreds ((x26189))
+:extrapreds ((x26190))
+:extrapreds ((x26191))
+:extrapreds ((x26192))
+:extrapreds ((x26193))
+:extrapreds ((x26194))
+:extrapreds ((x26195))
+:extrapreds ((x26196))
+:extrapreds ((x26197))
+:extrapreds ((x26198))
+:extrapreds ((x26199))
+:extrapreds ((x26200))
+:extrapreds ((x26201))
+:extrapreds ((x26202))
+:extrapreds ((x26203))
+:extrapreds ((x26204))
+:extrapreds ((x26205))
+:extrapreds ((x26206))
+:extrapreds ((x26207))
+:extrapreds ((x26208))
+:extrapreds ((x26209))
+:extrapreds ((x26210))
+:extrapreds ((x26211))
+:extrapreds ((x26212))
+:extrapreds ((x26213))
+:extrapreds ((x26214))
+:extrapreds ((x26215))
+:extrapreds ((x26216))
+:extrapreds ((x26217))
+:extrapreds ((x26218))
+:extrapreds ((x26219))
+:extrapreds ((x26220))
+:extrapreds ((x26221))
+:extrapreds ((x26222))
+:extrapreds ((x26223))
+:extrapreds ((x26224))
+:extrapreds ((x26225))
+:extrapreds ((x26226))
+:extrapreds ((x26227))
+:extrapreds ((x26228))
+:extrapreds ((x26229))
+:extrapreds ((x26230))
+:extrapreds ((x26231))
+:extrapreds ((x26232))
+:extrapreds ((x26233))
+:extrapreds ((x26234))
+:extrapreds ((x26235))
+:extrapreds ((x26236))
+:extrapreds ((x26237))
+:extrapreds ((x26238))
+:extrapreds ((x26239))
+:extrapreds ((x26240))
+:extrapreds ((x26241))
+:extrapreds ((x26242))
+:extrapreds ((x26243))
+:extrapreds ((x26244))
+:extrapreds ((x26245))
+:extrapreds ((x26246))
+:extrapreds ((x26247))
+:extrapreds ((x26248))
+:extrapreds ((x26249))
+:extrapreds ((x26250))
+:extrapreds ((x26251))
+:extrapreds ((x26252))
+:extrapreds ((x26253))
+:extrapreds ((x26254))
+:extrapreds ((x26255))
+:extrapreds ((x26256))
+:extrapreds ((x26257))
+:extrapreds ((x26258))
+:extrapreds ((x26259))
+:extrapreds ((x26260))
+:extrapreds ((x26261))
+:extrapreds ((x26262))
+:extrapreds ((x26263))
+:extrapreds ((x26264))
+:extrapreds ((x26265))
+:extrapreds ((x26266))
+:extrapreds ((x26267))
+:extrapreds ((x26268))
+:extrapreds ((x26269))
+:extrapreds ((x26270))
+:extrapreds ((x26271))
+:extrapreds ((x26272))
+:extrapreds ((x26273))
+:extrapreds ((x26274))
+:extrapreds ((x26275))
+:extrapreds ((x26276))
+:extrapreds ((x26277))
+:extrapreds ((x26278))
+:extrapreds ((x26279))
+:extrapreds ((x26280))
+:extrapreds ((x26281))
+:extrapreds ((x26282))
+:extrapreds ((x26283))
+:extrapreds ((x26284))
+:extrapreds ((x26285))
+:extrapreds ((x26286))
+:extrapreds ((x26287))
+:extrapreds ((x26288))
+:extrapreds ((x26289))
+:extrapreds ((x26290))
+:extrapreds ((x26291))
+:extrapreds ((x26292))
+:extrapreds ((x26293))
+:extrapreds ((x26294))
+:extrapreds ((x26295))
+:extrapreds ((x26296))
+:extrapreds ((x26297))
+:extrapreds ((x26298))
+:extrapreds ((x26299))
+:extrapreds ((x26300))
+:extrapreds ((x26301))
+:extrapreds ((x26302))
+:extrapreds ((x26303))
+:extrapreds ((x26304))
+:extrapreds ((x26305))
+:extrapreds ((x26306))
+:extrapreds ((x26307))
+:extrapreds ((x26308))
+:extrapreds ((x26309))
+:extrapreds ((x26310))
+:extrapreds ((x26311))
+:extrapreds ((x26312))
+:extrapreds ((x26313))
+:extrapreds ((x26314))
+:extrapreds ((x26315))
+:extrapreds ((x26316))
+:extrapreds ((x26317))
+:extrapreds ((x26318))
+:extrapreds ((x26319))
+:extrapreds ((x26320))
+:extrapreds ((x26321))
+:extrapreds ((x26322))
+:extrapreds ((x26323))
+:extrapreds ((x26324))
+:extrapreds ((x26325))
+:extrapreds ((x26326))
+:extrapreds ((x26327))
+:extrapreds ((x26328))
+:extrapreds ((x26329))
+:extrapreds ((x26330))
+:extrapreds ((x26331))
+:extrapreds ((x26332))
+:extrapreds ((x26333))
+:extrapreds ((x26334))
+:extrapreds ((x26335))
+:extrapreds ((x26336))
+:extrapreds ((x26337))
+:extrapreds ((x26338))
+:extrapreds ((x26339))
+:extrapreds ((x26340))
+:extrapreds ((x26341))
+:extrapreds ((x26342))
+:extrapreds ((x26343))
+:extrapreds ((x26344))
+:extrapreds ((x26345))
+:extrapreds ((x26346))
+:extrapreds ((x26347))
+:extrapreds ((x26348))
+:extrapreds ((x26349))
+:extrapreds ((x26350))
+:extrapreds ((x26351))
+:extrapreds ((x26352))
+:extrapreds ((x26353))
+:extrapreds ((x26354))
+:extrapreds ((x26355))
+:extrapreds ((x26356))
+:extrapreds ((x26357))
+:extrapreds ((x26358))
+:extrapreds ((x26359))
+:extrapreds ((x26360))
+:extrapreds ((x26361))
+:extrapreds ((x26362))
+:extrapreds ((x26363))
+:extrapreds ((x26364))
+:extrapreds ((x26365))
+:extrapreds ((x26366))
+:extrapreds ((x26367))
+:extrapreds ((x26368))
+:extrapreds ((x26369))
+:extrapreds ((x26370))
+:extrapreds ((x26371))
+:extrapreds ((x26372))
+:extrapreds ((x26373))
+:extrapreds ((x26374))
+:extrapreds ((x26375))
+:extrapreds ((x26376))
+:extrapreds ((x26377))
+:extrapreds ((x26378))
+:extrapreds ((x26379))
+:extrapreds ((x26380))
+:extrapreds ((x26381))
+:extrapreds ((x26382))
+:extrapreds ((x26383))
+:extrapreds ((x26384))
+:extrapreds ((x26385))
+:extrapreds ((x26386))
+:extrapreds ((x26387))
+:extrapreds ((x26388))
+:extrapreds ((x26389))
+:extrapreds ((x26390))
+:extrapreds ((x26391))
+:extrapreds ((x26392))
+:extrapreds ((x26393))
+:extrapreds ((x26394))
+:extrapreds ((x26395))
+:extrapreds ((x26396))
+:extrapreds ((x26397))
+:extrapreds ((x26398))
+:extrapreds ((x26399))
+:extrapreds ((x26400))
+:extrapreds ((x26401))
+:extrapreds ((x26402))
+:extrapreds ((x26403))
+:extrapreds ((x26404))
+:extrapreds ((x26405))
+:extrapreds ((x26406))
+:extrapreds ((x26407))
+:extrapreds ((x26408))
+:extrapreds ((x26409))
+:extrapreds ((x26410))
+:extrapreds ((x26411))
+:extrapreds ((x26412))
+:extrapreds ((x26413))
+:extrapreds ((x26414))
+:extrapreds ((x26415))
+:extrapreds ((x26416))
+:extrapreds ((x26417))
+:extrapreds ((x26418))
+:extrapreds ((x26419))
+:extrapreds ((x26420))
+:extrapreds ((x26421))
+:extrapreds ((x26422))
+:extrapreds ((x26423))
+:extrapreds ((x26424))
+:extrapreds ((x26425))
+:extrapreds ((x26426))
+:extrapreds ((x26427))
+:extrapreds ((x26428))
+:extrapreds ((x26429))
+:extrapreds ((x26430))
+:extrapreds ((x26431))
+:extrapreds ((x26432))
+:extrapreds ((x26433))
+:extrapreds ((x26434))
+:extrapreds ((x26435))
+:extrapreds ((x26436))
+:extrapreds ((x26437))
+:extrapreds ((x26438))
+:extrapreds ((x26439))
+:extrapreds ((x26440))
+:extrapreds ((x26441))
+:extrapreds ((x26442))
+:extrapreds ((x26443))
+:extrapreds ((x26444))
+:extrapreds ((x26445))
+:extrapreds ((x26446))
+:extrapreds ((x26447))
+:extrapreds ((x26448))
+:extrapreds ((x26449))
+:extrapreds ((x26450))
+:extrapreds ((x26451))
+:extrapreds ((x26452))
+:extrapreds ((x26453))
+:extrapreds ((x26454))
+:extrapreds ((x26455))
+:extrapreds ((x26456))
+:extrapreds ((x26457))
+:extrapreds ((x26458))
+:extrapreds ((x26459))
+:extrapreds ((x26460))
+:extrapreds ((x26461))
+:extrapreds ((x26462))
+:extrapreds ((x26463))
+:extrapreds ((x26464))
+:extrapreds ((x26465))
+:extrapreds ((x26466))
+:extrapreds ((x26467))
+:extrapreds ((x26468))
+:extrapreds ((x26469))
+:extrapreds ((x26470))
+:extrapreds ((x26471))
+:extrapreds ((x26472))
+:extrapreds ((x26473))
+:extrapreds ((x26474))
+:extrapreds ((x26475))
+:extrapreds ((x26476))
+:extrapreds ((x26477))
+:extrapreds ((x26478))
+:extrapreds ((x26479))
+:extrapreds ((x26480))
+:extrapreds ((x26481))
+:extrapreds ((x26482))
+:extrapreds ((x26483))
+:extrapreds ((x26484))
+:extrapreds ((x26485))
+:extrapreds ((x26486))
+:extrapreds ((x26487))
+:extrapreds ((x26488))
+:extrapreds ((x26489))
+:extrapreds ((x26490))
+:extrapreds ((x26491))
+:extrapreds ((x26492))
+:extrapreds ((x26493))
+:extrapreds ((x26494))
+:extrapreds ((x26495))
+:extrapreds ((x26496))
+:extrapreds ((x26497))
+:extrapreds ((x26498))
+:extrapreds ((x26499))
+:extrapreds ((x26500))
+:extrapreds ((x26501))
+:extrapreds ((x26502))
+:extrapreds ((x26503))
+:extrapreds ((x26504))
+:extrapreds ((x26505))
+:extrapreds ((x26506))
+:extrapreds ((x26507))
+:extrapreds ((x26508))
+:extrapreds ((x26509))
+:extrapreds ((x26510))
+:extrapreds ((x26511))
+:extrapreds ((x26512))
+:extrapreds ((x26513))
+:extrapreds ((x26514))
+:extrapreds ((x26515))
+:extrapreds ((x26516))
+:extrapreds ((x26517))
+:extrapreds ((x26518))
+:extrapreds ((x26519))
+:extrapreds ((x26520))
+:extrapreds ((x26521))
+:extrapreds ((x26522))
+:extrapreds ((x26523))
+:extrapreds ((x26524))
+:extrapreds ((x26525))
+:extrapreds ((x26526))
+:extrapreds ((x26527))
+:extrapreds ((x26528))
+:extrapreds ((x26529))
+:extrapreds ((x26530))
+:extrapreds ((x26531))
+:extrapreds ((x26532))
+:extrapreds ((x26533))
+:extrapreds ((x26534))
+:extrapreds ((x26535))
+:extrapreds ((x26536))
+:extrapreds ((x26537))
+:extrapreds ((x26538))
+:extrapreds ((x26539))
+:extrapreds ((x26540))
+:extrapreds ((x26541))
+:extrapreds ((x26542))
+:extrapreds ((x26543))
+:extrapreds ((x26544))
+:extrapreds ((x26545))
+:extrapreds ((x26546))
+:extrapreds ((x26547))
+:extrapreds ((x26548))
+:extrapreds ((x26549))
+:extrapreds ((x26550))
+:extrapreds ((x26551))
+:extrapreds ((x26552))
+:extrapreds ((x26553))
+:extrapreds ((x26554))
+:extrapreds ((x26555))
+:extrapreds ((x26556))
+:extrapreds ((x26557))
+:extrapreds ((x26558))
+:extrapreds ((x26559))
+:extrapreds ((x26560))
+:extrapreds ((x26561))
+:extrapreds ((x26562))
+:extrapreds ((x26563))
+:extrapreds ((x26564))
+:extrapreds ((x26565))
+:extrapreds ((x26566))
+:extrapreds ((x26567))
+:extrapreds ((x26568))
+:extrapreds ((x26569))
+:extrapreds ((x26570))
+:extrapreds ((x26571))
+:extrapreds ((x26572))
+:extrapreds ((x26573))
+:extrapreds ((x26574))
+:extrapreds ((x26575))
+:extrapreds ((x26576))
+:extrapreds ((x26577))
+:extrapreds ((x26578))
+:extrapreds ((x26579))
+:extrapreds ((x26580))
+:extrapreds ((x26581))
+:extrapreds ((x26582))
+:extrapreds ((x26583))
+:extrapreds ((x26584))
+:extrapreds ((x26585))
+:extrapreds ((x26586))
+:extrapreds ((x26587))
+:extrapreds ((x26588))
+:extrapreds ((x26589))
+:extrapreds ((x26590))
+:extrapreds ((x26591))
+:extrapreds ((x26592))
+:extrapreds ((x26593))
+:extrapreds ((x26594))
+:extrapreds ((x26595))
+:extrapreds ((x26596))
+:extrapreds ((x26597))
+:extrapreds ((x26598))
+:extrapreds ((x26599))
+:extrapreds ((x26600))
+:extrapreds ((x26601))
+:extrapreds ((x26602))
+:extrapreds ((x26603))
+:extrapreds ((x26604))
+:extrapreds ((x26605))
+:extrapreds ((x26606))
+:extrapreds ((x26607))
+:extrapreds ((x26608))
+:extrapreds ((x26609))
+:extrapreds ((x26610))
+:extrapreds ((x26611))
+:extrapreds ((x26612))
+:extrapreds ((x26613))
+:extrapreds ((x26614))
+:extrapreds ((x26615))
+:extrapreds ((x26616))
+:extrapreds ((x26617))
+:extrapreds ((x26618))
+:extrapreds ((x26619))
+:extrapreds ((x26620))
+:extrapreds ((x26621))
+:extrapreds ((x26622))
+:extrapreds ((x26623))
+:extrapreds ((x26624))
+:extrapreds ((x26625))
+:extrapreds ((x26626))
+:extrapreds ((x26627))
+:extrapreds ((x26628))
+:extrapreds ((x26629))
+:extrapreds ((x26630))
+:extrapreds ((x26631))
+:extrapreds ((x26632))
+:extrapreds ((x26633))
+:extrapreds ((x26634))
+:extrapreds ((x26635))
+:extrapreds ((x26636))
+:extrapreds ((x26637))
+:extrapreds ((x26638))
+:extrapreds ((x26639))
+:extrapreds ((x26640))
+:extrapreds ((x26641))
+:extrapreds ((x26642))
+:extrapreds ((x26643))
+:extrapreds ((x26644))
+:extrapreds ((x26645))
+:extrapreds ((x26646))
+:extrapreds ((x26647))
+:extrapreds ((x26648))
+:extrapreds ((x26649))
+:extrapreds ((x26650))
+:extrapreds ((x26651))
+:extrapreds ((x26652))
+:extrapreds ((x26653))
+:extrapreds ((x26654))
+:extrapreds ((x26655))
+:extrapreds ((x26656))
+:extrapreds ((x26657))
+:extrapreds ((x26658))
+:extrapreds ((x26659))
+:extrapreds ((x26660))
+:extrapreds ((x26661))
+:extrapreds ((x26662))
+:extrapreds ((x26663))
+:extrapreds ((x26664))
+:extrapreds ((x26665))
+:extrapreds ((x26666))
+:extrapreds ((x26667))
+:extrapreds ((x26668))
+:extrapreds ((x26669))
+:extrapreds ((x26670))
+:extrapreds ((x26671))
+:extrapreds ((x26672))
+:extrapreds ((x26673))
+:extrapreds ((x26674))
+:extrapreds ((x26675))
+:extrapreds ((x26676))
+:extrapreds ((x26677))
+:extrapreds ((x26678))
+:extrapreds ((x26679))
+:extrapreds ((x26680))
+:extrapreds ((x26681))
+:extrapreds ((x26682))
+:extrapreds ((x26683))
+:extrapreds ((x26684))
+:extrapreds ((x26685))
+:extrapreds ((x26686))
+:extrapreds ((x26687))
+:extrapreds ((x26688))
+:extrapreds ((x26689))
+:extrapreds ((x26690))
+:extrapreds ((x26691))
+:extrapreds ((x26692))
+:extrapreds ((x26693))
+:extrapreds ((x26694))
+:extrapreds ((x26695))
+:extrapreds ((x26696))
+:extrapreds ((x26697))
+:extrapreds ((x26698))
+:extrapreds ((x26699))
+:extrapreds ((x26700))
+:extrapreds ((x26701))
+:extrapreds ((x26702))
+:extrapreds ((x26703))
+:extrapreds ((x26704))
+:extrapreds ((x26705))
+:extrapreds ((x26706))
+:extrapreds ((x26707))
+:extrapreds ((x26708))
+:extrapreds ((x26709))
+:extrapreds ((x26710))
+:extrapreds ((x26711))
+:extrapreds ((x26712))
+:extrapreds ((x26713))
+:extrapreds ((x26714))
+:extrapreds ((x26715))
+:extrapreds ((x26716))
+:extrapreds ((x26717))
+:extrapreds ((x26718))
+:extrapreds ((x26719))
+:extrapreds ((x26720))
+:extrapreds ((x26721))
+:extrapreds ((x26722))
+:extrapreds ((x26723))
+:extrapreds ((x26724))
+:extrapreds ((x26725))
+:extrapreds ((x26726))
+:extrapreds ((x26727))
+:extrapreds ((x26728))
+:extrapreds ((x26729))
+:extrapreds ((x26730))
+:extrapreds ((x26731))
+:extrapreds ((x26732))
+:extrapreds ((x26733))
+:extrapreds ((x26734))
+:extrapreds ((x26735))
+:extrapreds ((x26736))
+:extrapreds ((x26737))
+:extrapreds ((x26738))
+:extrapreds ((x26739))
+:extrapreds ((x26740))
+:extrapreds ((x26741))
+:extrapreds ((x26742))
+:extrapreds ((x26743))
+:extrapreds ((x26744))
+:extrapreds ((x26745))
+:extrapreds ((x26746))
+:extrapreds ((x26747))
+:extrapreds ((x26748))
+:extrapreds ((x26749))
+:extrapreds ((x26750))
+:extrapreds ((x26751))
+:extrapreds ((x26752))
+:extrapreds ((x26753))
+:extrapreds ((x26754))
+:extrapreds ((x26755))
+:extrapreds ((x26756))
+:extrapreds ((x26757))
+:extrapreds ((x26758))
+:extrapreds ((x26759))
+:extrapreds ((x26760))
+:extrapreds ((x26761))
+:extrapreds ((x26762))
+:extrapreds ((x26763))
+:extrapreds ((x26764))
+:extrapreds ((x26765))
+:extrapreds ((x26766))
+:extrapreds ((x26767))
+:extrapreds ((x26768))
+:extrapreds ((x26769))
+:extrapreds ((x26770))
+:extrapreds ((x26771))
+:extrapreds ((x26772))
+:extrapreds ((x26773))
+:extrapreds ((x26774))
+:extrapreds ((x26775))
+:extrapreds ((x26776))
+:extrapreds ((x26777))
+:extrapreds ((x26778))
+:extrapreds ((x26779))
+:extrapreds ((x26780))
+:extrapreds ((x26781))
+:extrapreds ((x26782))
+:extrapreds ((x26783))
+:extrapreds ((x26784))
+:extrapreds ((x26785))
+:extrapreds ((x26786))
+:extrapreds ((x26787))
+:extrapreds ((x26788))
+:extrapreds ((x26789))
+:extrapreds ((x26790))
+:extrapreds ((x26791))
+:extrapreds ((x26792))
+:extrapreds ((x26793))
+:extrapreds ((x26794))
+:extrapreds ((x26795))
+:extrapreds ((x26796))
+:extrapreds ((x26797))
+:extrapreds ((x26798))
+:extrapreds ((x26799))
+:extrapreds ((x26800))
+:extrapreds ((x26801))
+:extrapreds ((x26802))
+:extrapreds ((x26803))
+:extrapreds ((x26804))
+:extrapreds ((x26805))
+:extrapreds ((x26806))
+:extrapreds ((x26807))
+:extrapreds ((x26808))
+:extrapreds ((x26809))
+:extrapreds ((x26810))
+:extrapreds ((x26811))
+:extrapreds ((x26812))
+:extrapreds ((x26813))
+:extrapreds ((x26814))
+:extrapreds ((x26815))
+:extrapreds ((x26816))
+:extrapreds ((x26817))
+:extrapreds ((x26818))
+:extrapreds ((x26819))
+:extrapreds ((x26820))
+:extrapreds ((x26821))
+:extrapreds ((x26822))
+:extrapreds ((x26823))
+:extrapreds ((x26824))
+:extrapreds ((x26825))
+:extrapreds ((x26826))
+:extrapreds ((x26827))
+:extrapreds ((x26828))
+:extrapreds ((x26829))
+:extrapreds ((x26830))
+:extrapreds ((x26831))
+:extrapreds ((x26832))
+:extrapreds ((x26833))
+:extrapreds ((x26834))
+:extrapreds ((x26835))
+:extrapreds ((x26836))
+:extrapreds ((x26837))
+:extrapreds ((x26838))
+:extrapreds ((x26839))
+:extrapreds ((x26840))
+:extrapreds ((x26841))
+:extrapreds ((x26842))
+:extrapreds ((x26843))
+:extrapreds ((x26844))
+:extrapreds ((x26845))
+:extrapreds ((x26846))
+:extrapreds ((x26847))
+:extrapreds ((x26848))
+:extrapreds ((x26849))
+:extrapreds ((x26850))
+:extrapreds ((x26851))
+:extrapreds ((x26852))
+:extrapreds ((x26853))
+:extrapreds ((x26854))
+:extrapreds ((x26855))
+:extrapreds ((x26856))
+:extrapreds ((x26857))
+:extrapreds ((x26858))
+:extrapreds ((x26859))
+:extrapreds ((x26860))
+:extrapreds ((x26861))
+:extrapreds ((x26862))
+:extrapreds ((x26863))
+:extrapreds ((x26864))
+:extrapreds ((x26865))
+:extrapreds ((x26866))
+:extrapreds ((x26867))
+:extrapreds ((x26868))
+:extrapreds ((x26869))
+:extrapreds ((x26870))
+:extrapreds ((x26871))
+:extrapreds ((x26872))
+:extrapreds ((x26873))
+:extrapreds ((x26874))
+:extrapreds ((x26875))
+:extrapreds ((x26876))
+:extrapreds ((x26877))
+:extrapreds ((x26878))
+:extrapreds ((x26879))
+:extrapreds ((x26880))
+:extrapreds ((x26881))
+:extrapreds ((x26882))
+:extrapreds ((x26883))
+:extrapreds ((x26884))
+:extrapreds ((x26885))
+:extrapreds ((x26886))
+:extrapreds ((x26887))
+:extrapreds ((x26888))
+:extrapreds ((x26889))
+:extrapreds ((x26890))
+:extrapreds ((x26891))
+:extrapreds ((x26892))
+:extrapreds ((x26893))
+:extrapreds ((x26894))
+:extrapreds ((x26895))
+:extrapreds ((x26896))
+:extrapreds ((x26897))
+:extrapreds ((x26898))
+:extrapreds ((x26899))
+:extrapreds ((x26900))
+:extrapreds ((x26901))
+:extrapreds ((x26902))
+:extrapreds ((x26903))
+:extrapreds ((x26904))
+:extrapreds ((x26905))
+:extrapreds ((x26906))
+:extrapreds ((x26907))
+:extrapreds ((x26908))
+:extrapreds ((x26909))
+:extrapreds ((x26910))
+:extrapreds ((x26911))
+:extrapreds ((x26912))
+:extrapreds ((x26913))
+:extrapreds ((x26914))
+:extrapreds ((x26915))
+:extrapreds ((x26916))
+:extrapreds ((x26917))
+:extrapreds ((x26918))
+:extrapreds ((x26919))
+:extrapreds ((x26920))
+:extrapreds ((x26921))
+:extrapreds ((x26922))
+:extrapreds ((x26923))
+:extrapreds ((x26924))
+:extrapreds ((x26925))
+:extrapreds ((x26926))
+:extrapreds ((x26927))
+:extrapreds ((x26928))
+:extrapreds ((x26929))
+:extrapreds ((x26930))
+:extrapreds ((x26931))
+:extrapreds ((x26932))
+:extrapreds ((x26933))
+:extrapreds ((x26934))
+:extrapreds ((x26935))
+:extrapreds ((x26936))
+:extrapreds ((x26937))
+:extrapreds ((x26938))
+:extrapreds ((x26939))
+:extrapreds ((x26940))
+:extrapreds ((x26941))
+:extrapreds ((x26942))
+:extrapreds ((x26943))
+:extrapreds ((x26944))
+:extrapreds ((x26945))
+:extrapreds ((x26946))
+:extrapreds ((x26947))
+:extrapreds ((x26948))
+:extrapreds ((x26949))
+:extrapreds ((x26950))
+:extrapreds ((x26951))
+:extrapreds ((x26952))
+:extrapreds ((x26953))
+:extrapreds ((x26954))
+:extrapreds ((x26955))
+:extrapreds ((x26956))
+:extrapreds ((x26957))
+:extrapreds ((x26958))
+:extrapreds ((x26959))
+:extrapreds ((x26960))
+:extrapreds ((x26961))
+:extrapreds ((x26962))
+:extrapreds ((x26963))
+:extrapreds ((x26964))
+:extrapreds ((x26965))
+:extrapreds ((x26966))
+:extrapreds ((x26967))
+:extrapreds ((x26968))
+:extrapreds ((x26969))
+:extrapreds ((x26970))
+:extrapreds ((x26971))
+:extrapreds ((x26972))
+:extrapreds ((x26973))
+:extrapreds ((x26974))
+:extrapreds ((x26975))
+:extrapreds ((x26976))
+:extrapreds ((x26977))
+:extrapreds ((x26978))
+:extrapreds ((x26979))
+:extrapreds ((x26980))
+:extrapreds ((x26981))
+:extrapreds ((x26982))
+:extrapreds ((x26983))
+:extrapreds ((x26984))
+:extrapreds ((x26985))
+:extrapreds ((x26986))
+:extrapreds ((x26987))
+:extrapreds ((x26988))
+:extrapreds ((x26989))
+:extrapreds ((x26990))
+:extrapreds ((x26991))
+:extrapreds ((x26992))
+:extrapreds ((x26993))
+:extrapreds ((x26994))
+:extrapreds ((x26995))
+:extrapreds ((x26996))
+:extrapreds ((x26997))
+:extrapreds ((x26998))
+:extrapreds ((x26999))
+:extrapreds ((x27000))
+:extrapreds ((x27001))
+:extrapreds ((x27002))
+:extrapreds ((x27003))
+:extrapreds ((x27004))
+:extrapreds ((x27005))
+:extrapreds ((x27006))
+:extrapreds ((x27007))
+:extrapreds ((x27008))
+:extrapreds ((x27009))
+:extrapreds ((x27010))
+:extrapreds ((x27011))
+:extrapreds ((x27012))
+:extrapreds ((x27013))
+:extrapreds ((x27014))
+:extrapreds ((x27015))
+:extrapreds ((x27016))
+:extrapreds ((x27017))
+:extrapreds ((x27018))
+:extrapreds ((x27019))
+:extrapreds ((x27020))
+:extrapreds ((x27021))
+:extrapreds ((x27022))
+:extrapreds ((x27023))
+:extrapreds ((x27024))
+:extrapreds ((x27025))
+:extrapreds ((x27026))
+:extrapreds ((x27027))
+:extrapreds ((x27028))
+:extrapreds ((x27029))
+:extrapreds ((x27030))
+:extrapreds ((x27031))
+:extrapreds ((x27032))
+:extrapreds ((x27033))
+:extrapreds ((x27034))
+:extrapreds ((x27035))
+:extrapreds ((x27036))
+:extrapreds ((x27037))
+:extrapreds ((x27038))
+:extrapreds ((x27039))
+:extrapreds ((x27040))
+:extrapreds ((x27041))
+:extrapreds ((x27042))
+:extrapreds ((x27043))
+:extrapreds ((x27044))
+:extrapreds ((x27045))
+:extrapreds ((x27046))
+:extrapreds ((x27047))
+:extrapreds ((x27048))
+:extrapreds ((x27049))
+:extrapreds ((x27050))
+:extrapreds ((x27051))
+:extrapreds ((x27052))
+:extrapreds ((x27053))
+:extrapreds ((x27054))
+:extrapreds ((x27055))
+:extrapreds ((x27056))
+:extrapreds ((x27057))
+:extrapreds ((x27058))
+:extrapreds ((x27059))
+:extrapreds ((x27060))
+:extrapreds ((x27061))
+:extrapreds ((x27062))
+:extrapreds ((x27063))
+:extrapreds ((x27064))
+:extrapreds ((x27065))
+:extrapreds ((x27066))
+:extrapreds ((x27067))
+:extrapreds ((x27068))
+:extrapreds ((x27069))
+:extrapreds ((x27070))
+:extrapreds ((x27071))
+:extrapreds ((x27072))
+:extrapreds ((x27073))
+:extrapreds ((x27074))
+:extrapreds ((x27075))
+:extrapreds ((x27076))
+:extrapreds ((x27077))
+:extrapreds ((x27078))
+:extrapreds ((x27079))
+:extrapreds ((x27080))
+:extrapreds ((x27081))
+:extrapreds ((x27082))
+:extrapreds ((x27083))
+:extrapreds ((x27084))
+:extrapreds ((x27085))
+:extrapreds ((x27086))
+:extrapreds ((x27087))
+:extrapreds ((x27088))
+:extrapreds ((x27089))
+:extrapreds ((x27090))
+:extrapreds ((x27091))
+:extrapreds ((x27092))
+:extrapreds ((x27093))
+:extrapreds ((x27094))
+:extrapreds ((x27095))
+:extrapreds ((x27096))
+:extrapreds ((x27097))
+:extrapreds ((x27098))
+:extrapreds ((x27099))
+:extrapreds ((x27100))
+:extrapreds ((x27101))
+:extrapreds ((x27102))
+:extrapreds ((x27103))
+:extrapreds ((x27104))
+:extrapreds ((x27105))
+:extrapreds ((x27106))
+:extrapreds ((x27107))
+:extrapreds ((x27108))
+:extrapreds ((x27109))
+:extrapreds ((x27110))
+:extrapreds ((x27111))
+:extrapreds ((x27112))
+:extrapreds ((x27113))
+:extrapreds ((x27114))
+:extrapreds ((x27115))
+:extrapreds ((x27116))
+:extrapreds ((x27117))
+:extrapreds ((x27118))
+:extrapreds ((x27119))
+:extrapreds ((x27120))
+:extrapreds ((x27121))
+:extrapreds ((x27122))
+:extrapreds ((x27123))
+:extrapreds ((x27124))
+:extrapreds ((x27125))
+:extrapreds ((x27126))
+:extrapreds ((x27127))
+:extrapreds ((x27128))
+:extrapreds ((x27129))
+:extrapreds ((x27130))
+:extrapreds ((x27131))
+:extrapreds ((x27132))
+:extrapreds ((x27133))
+:extrapreds ((x27134))
+:extrapreds ((x27135))
+:extrapreds ((x27136))
+:extrapreds ((x27137))
+:extrapreds ((x27138))
+:extrapreds ((x27139))
+:extrapreds ((x27140))
+:extrapreds ((x27141))
+:extrapreds ((x27142))
+:extrapreds ((x27143))
+:extrapreds ((x27144))
+:extrapreds ((x27145))
+:extrapreds ((x27146))
+:extrapreds ((x27147))
+:extrapreds ((x27148))
+:extrapreds ((x27149))
+:extrapreds ((x27150))
+:extrapreds ((x27151))
+:extrapreds ((x27152))
+:extrapreds ((x27153))
+:extrapreds ((x27154))
+:extrapreds ((x27155))
+:extrapreds ((x27156))
+:extrapreds ((x27157))
+:extrapreds ((x27158))
+:extrapreds ((x27159))
+:extrapreds ((x27160))
+:extrapreds ((x27161))
+:extrapreds ((x27162))
+:extrapreds ((x27163))
+:extrapreds ((x27164))
+:extrapreds ((x27165))
+:extrapreds ((x27166))
+:extrapreds ((x27167))
+:extrapreds ((x27168))
+:extrapreds ((x27169))
+:extrapreds ((x27170))
+:extrapreds ((x27171))
+:extrapreds ((x27172))
+:extrapreds ((x27173))
+:extrapreds ((x27174))
+:extrapreds ((x27175))
+:extrapreds ((x27176))
+:extrapreds ((x27177))
+:extrapreds ((x27178))
+:extrapreds ((x27179))
+:extrapreds ((x27180))
+:extrapreds ((x27181))
+:extrapreds ((x27182))
+:extrapreds ((x27183))
+:extrapreds ((x27184))
+:extrapreds ((x27185))
+:extrapreds ((x27186))
+:extrapreds ((x27187))
+:extrapreds ((x27188))
+:extrapreds ((x27189))
+:extrapreds ((x27190))
+:extrapreds ((x27191))
+:extrapreds ((x27192))
+:extrapreds ((x27193))
+:extrapreds ((x27194))
+:extrapreds ((x27195))
+:extrapreds ((x27196))
+:extrapreds ((x27197))
+:extrapreds ((x27198))
+:extrapreds ((x27199))
+:extrapreds ((x27200))
+:extrapreds ((x27201))
+:extrapreds ((x27202))
+:extrapreds ((x27203))
+:extrapreds ((x27204))
+:extrapreds ((x27205))
+:extrapreds ((x27206))
+:extrapreds ((x27207))
+:extrapreds ((x27208))
+:extrapreds ((x27209))
+:extrapreds ((x27210))
+:extrapreds ((x27211))
+:extrapreds ((x27212))
+:extrapreds ((x27213))
+:extrapreds ((x27214))
+:extrapreds ((x27215))
+:extrapreds ((x27216))
+:extrapreds ((x27217))
+:extrapreds ((x27218))
+:extrapreds ((x27219))
+:extrapreds ((x27220))
+:extrapreds ((x27221))
+:extrapreds ((x27222))
+:extrapreds ((x27223))
+:extrapreds ((x27224))
+:extrapreds ((x27225))
+:extrapreds ((x27226))
+:extrapreds ((x27227))
+:extrapreds ((x27228))
+:extrapreds ((x27229))
+:extrapreds ((x27230))
+:extrapreds ((x27231))
+:extrapreds ((x27232))
+:extrapreds ((x27233))
+:extrapreds ((x27234))
+:extrapreds ((x27235))
+:extrapreds ((x27236))
+:extrapreds ((x27237))
+:extrapreds ((x27238))
+:extrapreds ((x27239))
+:extrapreds ((x27240))
+:extrapreds ((x27241))
+:extrapreds ((x27242))
+:extrapreds ((x27243))
+:extrapreds ((x27244))
+:extrapreds ((x27245))
+:extrapreds ((x27246))
+:extrapreds ((x27247))
+:extrapreds ((x27248))
+:extrapreds ((x27249))
+:extrapreds ((x27250))
+:extrapreds ((x27251))
+:extrapreds ((x27252))
+:extrapreds ((x27253))
+:extrapreds ((x27254))
+:extrapreds ((x27255))
+:extrapreds ((x27256))
+:extrapreds ((x27257))
+:extrapreds ((x27258))
+:extrapreds ((x27259))
+:extrapreds ((x27260))
+:extrapreds ((x27261))
+:extrapreds ((x27262))
+:extrapreds ((x27263))
+:extrapreds ((x27264))
+:extrapreds ((x27265))
+:extrapreds ((x27266))
+:extrapreds ((x27267))
+:extrapreds ((x27268))
+:extrapreds ((x27269))
+:extrapreds ((x27270))
+:extrapreds ((x27271))
+:extrapreds ((x27272))
+:extrapreds ((x27273))
+:extrapreds ((x27274))
+:extrapreds ((x27275))
+:extrapreds ((x27276))
+:extrapreds ((x27277))
+:extrapreds ((x27278))
+:extrapreds ((x27279))
+:extrapreds ((x27280))
+:extrapreds ((x27281))
+:extrapreds ((x27282))
+:extrapreds ((x27283))
+:extrapreds ((x27284))
+:extrapreds ((x27285))
+:extrapreds ((x27286))
+:extrapreds ((x27287))
+:extrapreds ((x27288))
+:extrapreds ((x27289))
+:extrapreds ((x27290))
+:extrapreds ((x27291))
+:extrapreds ((x27292))
+:extrapreds ((x27293))
+:extrapreds ((x27294))
+:extrapreds ((x27295))
+:extrapreds ((x27296))
+:extrapreds ((x27297))
+:extrapreds ((x27298))
+:extrapreds ((x27299))
+:extrapreds ((x27300))
+:extrapreds ((x27301))
+:extrapreds ((x27302))
+:extrapreds ((x27303))
+:extrapreds ((x27304))
+:extrapreds ((x27305))
+:extrapreds ((x27306))
+:extrapreds ((x27307))
+:extrapreds ((x27308))
+:extrapreds ((x27309))
+:extrapreds ((x27310))
+:extrapreds ((x27311))
+:extrapreds ((x27312))
+:extrapreds ((x27313))
+:extrapreds ((x27314))
+:extrapreds ((x27315))
+:extrapreds ((x27316))
+:extrapreds ((x27317))
+:extrapreds ((x27318))
+:extrapreds ((x27319))
+:extrapreds ((x27320))
+:extrapreds ((x27321))
+:extrapreds ((x27322))
+:extrapreds ((x27323))
+:extrapreds ((x27324))
+:extrapreds ((x27325))
+:extrapreds ((x27326))
+:extrapreds ((x27327))
+:extrapreds ((x27328))
+:extrapreds ((x27329))
+:extrapreds ((x27330))
+:extrapreds ((x27331))
+:extrapreds ((x27332))
+:extrapreds ((x27333))
+:extrapreds ((x27334))
+:extrapreds ((x27335))
+:extrapreds ((x27336))
+:extrapreds ((x27337))
+:extrapreds ((x27338))
+:extrapreds ((x27339))
+:extrapreds ((x27340))
+:extrapreds ((x27341))
+:extrapreds ((x27342))
+:extrapreds ((x27343))
+:extrapreds ((x27344))
+:extrapreds ((x27345))
+:extrapreds ((x27346))
+:extrapreds ((x27347))
+:extrapreds ((x27348))
+:extrapreds ((x27349))
+:extrapreds ((x27350))
+:extrapreds ((x27351))
+:extrapreds ((x27352))
+:extrapreds ((x27353))
+:extrapreds ((x27354))
+:extrapreds ((x27355))
+:extrapreds ((x27356))
+:extrapreds ((x27357))
+:extrapreds ((x27358))
+:extrapreds ((x27359))
+:extrapreds ((x27360))
+:extrapreds ((x27361))
+:extrapreds ((x27362))
+:extrapreds ((x27363))
+:extrapreds ((x27364))
+:extrapreds ((x27365))
+:extrapreds ((x27366))
+:extrapreds ((x27367))
+:extrapreds ((x27368))
+:extrapreds ((x27369))
+:extrapreds ((x27370))
+:extrapreds ((x27371))
+:extrapreds ((x27372))
+:extrapreds ((x27373))
+:extrapreds ((x27374))
+:extrapreds ((x27375))
+:extrapreds ((x27376))
+:extrapreds ((x27377))
+:extrapreds ((x27378))
+:extrapreds ((x27379))
+:extrapreds ((x27380))
+:extrapreds ((x27381))
+:extrapreds ((x27382))
+:extrapreds ((x27383))
+:extrapreds ((x27384))
+:extrapreds ((x27385))
+:extrapreds ((x27386))
+:extrapreds ((x27387))
+:extrapreds ((x27388))
+:extrapreds ((x27389))
+:extrapreds ((x27390))
+:extrapreds ((x27391))
+:extrapreds ((x27392))
+:extrapreds ((x27393))
+:extrapreds ((x27394))
+:extrapreds ((x27395))
+:extrapreds ((x27396))
+:extrapreds ((x27397))
+:extrapreds ((x27398))
+:extrapreds ((x27399))
+:extrapreds ((x27400))
+:extrapreds ((x27401))
+:extrapreds ((x27402))
+:extrapreds ((x27403))
+:extrapreds ((x27404))
+:extrapreds ((x27405))
+:extrapreds ((x27406))
+:extrapreds ((x27407))
+:extrapreds ((x27408))
+:extrapreds ((x27409))
+:extrapreds ((x27410))
+:extrapreds ((x27411))
+:extrapreds ((x27412))
+:extrapreds ((x27413))
+:extrapreds ((x27414))
+:extrapreds ((x27415))
+:extrapreds ((x27416))
+:extrapreds ((x27417))
+:extrapreds ((x27418))
+:extrapreds ((x27419))
+:extrapreds ((x27420))
+:extrapreds ((x27421))
+:extrapreds ((x27422))
+:extrapreds ((x27423))
+:extrapreds ((x27424))
+:extrapreds ((x27425))
+:extrapreds ((x27426))
+:extrapreds ((x27427))
+:extrapreds ((x27428))
+:extrapreds ((x27429))
+:extrapreds ((x27430))
+:extrapreds ((x27431))
+:extrapreds ((x27432))
+:extrapreds ((x27433))
+:extrapreds ((x27434))
+:extrapreds ((x27435))
+:extrapreds ((x27436))
+:extrapreds ((x27437))
+:extrapreds ((x27438))
+:extrapreds ((x27439))
+:extrapreds ((x27440))
+:extrapreds ((x27441))
+:extrapreds ((x27442))
+:extrapreds ((x27443))
+:extrapreds ((x27444))
+:extrapreds ((x27445))
+:extrapreds ((x27446))
+:extrapreds ((x27447))
+:extrapreds ((x27448))
+:extrapreds ((x27449))
+:extrapreds ((x27450))
+:extrapreds ((x27451))
+:extrapreds ((x27452))
+:extrapreds ((x27453))
+:extrapreds ((x27454))
+:extrapreds ((x27455))
+:extrapreds ((x27456))
+:extrapreds ((x27457))
+:extrapreds ((x27458))
+:extrapreds ((x27459))
+:extrapreds ((x27460))
+:extrapreds ((x27461))
+:extrapreds ((x27462))
+:extrapreds ((x27463))
+:extrapreds ((x27464))
+:extrapreds ((x27465))
+:extrapreds ((x27466))
+:extrapreds ((x27467))
+:extrapreds ((x27468))
+:extrapreds ((x27469))
+:extrapreds ((x27470))
+:extrapreds ((x27471))
+:extrapreds ((x27472))
+:extrapreds ((x27473))
+:extrapreds ((x27474))
+:extrapreds ((x27475))
+:extrapreds ((x27476))
+:extrapreds ((x27477))
+:extrapreds ((x27478))
+:extrapreds ((x27479))
+:extrapreds ((x27480))
+:extrapreds ((x27481))
+:extrapreds ((x27482))
+:extrapreds ((x27483))
+:extrapreds ((x27484))
+:extrapreds ((x27485))
+:extrapreds ((x27486))
+:extrapreds ((x27487))
+:extrapreds ((x27488))
+:extrapreds ((x27489))
+:extrapreds ((x27490))
+:extrapreds ((x27491))
+:extrapreds ((x27492))
+:extrapreds ((x27493))
+:extrapreds ((x27494))
+:extrapreds ((x27495))
+:extrapreds ((x27496))
+:extrapreds ((x27497))
+:extrapreds ((x27498))
+:extrapreds ((x27499))
+:extrapreds ((x27500))
+:extrapreds ((x27501))
+:extrapreds ((x27502))
+:extrapreds ((x27503))
+:extrapreds ((x27504))
+:extrapreds ((x27505))
+:extrapreds ((x27506))
+:extrapreds ((x27507))
+:extrapreds ((x27508))
+:extrapreds ((x27509))
+:extrapreds ((x27510))
+:extrapreds ((x27511))
+:extrapreds ((x27512))
+:extrapreds ((x27513))
+:extrapreds ((x27514))
+:extrapreds ((x27515))
+:extrapreds ((x27516))
+:extrapreds ((x27517))
+:extrapreds ((x27518))
+:extrapreds ((x27519))
+:extrapreds ((x27520))
+:extrapreds ((x27521))
+:extrapreds ((x27522))
+:extrapreds ((x27523))
+:extrapreds ((x27524))
+:extrapreds ((x27525))
+:extrapreds ((x27526))
+:extrapreds ((x27527))
+:extrapreds ((x27528))
+:extrapreds ((x27529))
+:extrapreds ((x27530))
+:extrapreds ((x27531))
+:extrapreds ((x27532))
+:extrapreds ((x27533))
+:extrapreds ((x27534))
+:extrapreds ((x27535))
+:extrapreds ((x27536))
+:extrapreds ((x27537))
+:extrapreds ((x27538))
+:extrapreds ((x27539))
+:extrapreds ((x27540))
+:extrapreds ((x27541))
+:extrapreds ((x27542))
+:extrapreds ((x27543))
+:extrapreds ((x27544))
+:extrapreds ((x27545))
+:extrapreds ((x27546))
+:extrapreds ((x27547))
+:extrapreds ((x27548))
+:extrapreds ((x27549))
+:extrapreds ((x27550))
+:extrapreds ((x27551))
+:extrapreds ((x27552))
+:extrapreds ((x27553))
+:extrapreds ((x27554))
+:extrapreds ((x27555))
+:extrapreds ((x27556))
+:extrapreds ((x27557))
+:extrapreds ((x27558))
+:extrapreds ((x27559))
+:extrapreds ((x27560))
+:extrapreds ((x27561))
+:extrapreds ((x27562))
+:extrapreds ((x27563))
+:extrapreds ((x27564))
+:extrapreds ((x27565))
+:extrapreds ((x27566))
+:extrapreds ((x27567))
+:extrapreds ((x27568))
+:extrapreds ((x27569))
+:extrapreds ((x27570))
+:extrapreds ((x27571))
+:extrapreds ((x27572))
+:extrapreds ((x27573))
+:extrapreds ((x27574))
+:extrapreds ((x27575))
+:extrapreds ((x27576))
+:extrapreds ((x27577))
+:extrapreds ((x27578))
+:extrapreds ((x27579))
+:extrapreds ((x27580))
+:extrapreds ((x27581))
+:extrapreds ((x27582))
+:extrapreds ((x27583))
+:extrapreds ((x27584))
+:extrapreds ((x27585))
+:extrapreds ((x27586))
+:extrapreds ((x27587))
+:extrapreds ((x27588))
+:extrapreds ((x27589))
+:extrapreds ((x27590))
+:extrapreds ((x27591))
+:extrapreds ((x27592))
+:extrapreds ((x27593))
+:extrapreds ((x27594))
+:extrapreds ((x27595))
+:extrapreds ((x27596))
+:extrapreds ((x27597))
+:extrapreds ((x27598))
+:extrapreds ((x27599))
+:extrapreds ((x27600))
+:extrapreds ((x27601))
+:extrapreds ((x27602))
+:extrapreds ((x27603))
+:extrapreds ((x27604))
+:extrapreds ((x27605))
+:extrapreds ((x27606))
+:extrapreds ((x27607))
+:extrapreds ((x27608))
+:extrapreds ((x27609))
+:extrapreds ((x27610))
+:extrapreds ((x27611))
+:extrapreds ((x27612))
+:extrapreds ((x27613))
+:extrapreds ((x27614))
+:extrapreds ((x27615))
+:extrapreds ((x27616))
+:extrapreds ((x27617))
+:extrapreds ((x27618))
+:extrapreds ((x27619))
+:extrapreds ((x27620))
+:extrapreds ((x27621))
+:extrapreds ((x27622))
+:extrapreds ((x27623))
+:extrapreds ((x27624))
+:extrapreds ((x27625))
+:extrapreds ((x27626))
+:extrapreds ((x27627))
+:extrapreds ((x27628))
+:extrapreds ((x27629))
+:extrapreds ((x27630))
+:extrapreds ((x27631))
+:extrapreds ((x27632))
+:extrapreds ((x27633))
+:extrapreds ((x27634))
+:extrapreds ((x27635))
+:extrapreds ((x27636))
+:extrapreds ((x27637))
+:extrapreds ((x27638))
+:extrapreds ((x27639))
+:extrapreds ((x27640))
+:extrapreds ((x27641))
+:extrapreds ((x27642))
+:extrapreds ((x27643))
+:extrapreds ((x27644))
+:extrapreds ((x27645))
+:extrapreds ((x27646))
+:extrapreds ((x27647))
+:extrapreds ((x27648))
+:extrapreds ((x27649))
+:extrapreds ((x27650))
+:extrapreds ((x27651))
+:extrapreds ((x27652))
+:extrapreds ((x27653))
+:extrapreds ((x27654))
+:extrapreds ((x27655))
+:extrapreds ((x27656))
+:extrapreds ((x27657))
+:extrapreds ((x27658))
+:extrapreds ((x27659))
+:extrapreds ((x27660))
+:extrapreds ((x27661))
+:extrapreds ((x27662))
+:extrapreds ((x27663))
+:extrapreds ((x27664))
+:extrapreds ((x27665))
+:extrapreds ((x27666))
+:extrapreds ((x27667))
+:extrapreds ((x27668))
+:extrapreds ((x27669))
+:extrapreds ((x27670))
+:extrapreds ((x27671))
+:extrapreds ((x27672))
+:extrapreds ((x27673))
+:extrapreds ((x27674))
+:extrapreds ((x27675))
+:extrapreds ((x27676))
+:extrapreds ((x27677))
+:extrapreds ((x27678))
+:extrapreds ((x27679))
+:extrapreds ((x27680))
+:extrapreds ((x27681))
+:extrapreds ((x27682))
+:extrapreds ((x27683))
+:extrapreds ((x27684))
+:extrapreds ((x27685))
+:extrapreds ((x27686))
+:extrapreds ((x27687))
+:extrapreds ((x27688))
+:extrapreds ((x27689))
+:extrapreds ((x27690))
+:extrapreds ((x27691))
+:extrapreds ((x27692))
+:extrapreds ((x27693))
+:extrapreds ((x27694))
+:extrapreds ((x27695))
+:extrapreds ((x27696))
+:extrapreds ((x27697))
+:extrapreds ((x27698))
+:extrapreds ((x27699))
+:extrapreds ((x27700))
+:extrapreds ((x27701))
+:extrapreds ((x27702))
+:extrapreds ((x27703))
+:extrapreds ((x27704))
+:extrapreds ((x27705))
+:extrapreds ((x27706))
+:extrapreds ((x27707))
+:extrapreds ((x27708))
+:extrapreds ((x27709))
+:extrapreds ((x27710))
+:extrapreds ((x27711))
+:extrapreds ((x27712))
+:extrapreds ((x27713))
+:extrapreds ((x27714))
+:extrapreds ((x27715))
+:extrapreds ((x27716))
+:extrapreds ((x27717))
+:extrapreds ((x27718))
+:extrapreds ((x27719))
+:extrapreds ((x27720))
+:extrapreds ((x27721))
+:extrapreds ((x27722))
+:extrapreds ((x27723))
+:extrapreds ((x27724))
+:extrapreds ((x27725))
+:extrapreds ((x27726))
+:extrapreds ((x27727))
+:extrapreds ((x27728))
+:extrapreds ((x27729))
+:extrapreds ((x27730))
+:extrapreds ((x27731))
+:extrapreds ((x27732))
+:extrapreds ((x27733))
+:extrapreds ((x27734))
+:extrapreds ((x27735))
+:extrapreds ((x27736))
+:extrapreds ((x27737))
+:extrapreds ((x27738))
+:extrapreds ((x27739))
+:extrapreds ((x27740))
+:extrapreds ((x27741))
+:extrapreds ((x27742))
+:extrapreds ((x27743))
+:extrapreds ((x27744))
+:extrapreds ((x27745))
+:extrapreds ((x27746))
+:extrapreds ((x27747))
+:extrapreds ((x27748))
+:extrapreds ((x27749))
+:extrapreds ((x27750))
+:extrapreds ((x27751))
+:extrapreds ((x27752))
+:extrapreds ((x27753))
+:extrapreds ((x27754))
+:extrapreds ((x27755))
+:extrapreds ((x27756))
+:extrapreds ((x27757))
+:extrapreds ((x27758))
+:extrapreds ((x27759))
+:extrapreds ((x27760))
+:extrapreds ((x27761))
+:extrapreds ((x27762))
+:extrapreds ((x27763))
+:extrapreds ((x27764))
+:extrapreds ((x27765))
+:extrapreds ((x27766))
+:extrapreds ((x27767))
+:extrapreds ((x27768))
+:extrapreds ((x27769))
+:extrapreds ((x27770))
+:extrapreds ((x27771))
+:extrapreds ((x27772))
+:extrapreds ((x27773))
+:extrapreds ((x27774))
+:extrapreds ((x27775))
+:extrapreds ((x27776))
+:extrapreds ((x27777))
+:extrapreds ((x27778))
+:extrapreds ((x27779))
+:extrapreds ((x27780))
+:extrapreds ((x27781))
+:extrapreds ((x27782))
+:extrapreds ((x27783))
+:extrapreds ((x27784))
+:extrapreds ((x27785))
+:extrapreds ((x27786))
+:extrapreds ((x27787))
+:extrapreds ((x27788))
+:extrapreds ((x27789))
+:extrapreds ((x27790))
+:extrapreds ((x27791))
+:extrapreds ((x27792))
+:extrapreds ((x27793))
+:extrapreds ((x27794))
+:extrapreds ((x27795))
+:extrapreds ((x27796))
+:extrapreds ((x27797))
+:extrapreds ((x27798))
+:extrapreds ((x27799))
+:extrapreds ((x27800))
+:extrapreds ((x27801))
+:extrapreds ((x27802))
+:extrapreds ((x27803))
+:extrapreds ((x27804))
+:extrapreds ((x27805))
+:extrapreds ((x27806))
+:extrapreds ((x27807))
+:extrapreds ((x27808))
+:extrapreds ((x27809))
+:extrapreds ((x27810))
+:extrapreds ((x27811))
+:extrapreds ((x27812))
+:extrapreds ((x27813))
+:extrapreds ((x27814))
+:extrapreds ((x27815))
+:extrapreds ((x27816))
+:extrapreds ((x27817))
+:extrapreds ((x27818))
+:extrapreds ((x27819))
+:extrapreds ((x27820))
+:extrapreds ((x27821))
+:extrapreds ((x27822))
+:extrapreds ((x27823))
+:extrapreds ((x27824))
+:extrapreds ((x27825))
+:extrapreds ((x27826))
+:extrapreds ((x27827))
+:extrapreds ((x27828))
+:extrapreds ((x27829))
+:extrapreds ((x27830))
+:extrapreds ((x27831))
+:extrapreds ((x27832))
+:extrapreds ((x27833))
+:extrapreds ((x27834))
+:extrapreds ((x27835))
+:extrapreds ((x27836))
+:extrapreds ((x27837))
+:extrapreds ((x27838))
+:extrapreds ((x27839))
+:extrapreds ((x27840))
+:extrapreds ((x27841))
+:extrapreds ((x27842))
+:extrapreds ((x27843))
+:extrapreds ((x27844))
+:extrapreds ((x27845))
+:extrapreds ((x27846))
+:extrapreds ((x27847))
+:extrapreds ((x27848))
+:extrapreds ((x27849))
+:extrapreds ((x27850))
+:extrapreds ((x27851))
+:extrapreds ((x27852))
+:extrapreds ((x27853))
+:extrapreds ((x27854))
+:extrapreds ((x27855))
+:extrapreds ((x27856))
+:extrapreds ((x27857))
+:extrapreds ((x27858))
+:extrapreds ((x27859))
+:extrapreds ((x27860))
+:extrapreds ((x27861))
+:extrapreds ((x27862))
+:extrapreds ((x27863))
+:extrapreds ((x27864))
+:extrapreds ((x27865))
+:extrapreds ((x27866))
+:extrapreds ((x27867))
+:extrapreds ((x27868))
+:extrapreds ((x27869))
+:extrapreds ((x27870))
+:extrapreds ((x27871))
+:extrapreds ((x27872))
+:extrapreds ((x27873))
+:extrapreds ((x27874))
+:extrapreds ((x27875))
+:extrapreds ((x27876))
+:extrapreds ((x27877))
+:extrapreds ((x27878))
+:extrapreds ((x27879))
+:extrapreds ((x27880))
+:extrapreds ((x27881))
+:extrapreds ((x27882))
+:extrapreds ((x27883))
+:extrapreds ((x27884))
+:extrapreds ((x27885))
+:extrapreds ((x27886))
+:extrapreds ((x27887))
+:extrapreds ((x27888))
+:extrapreds ((x27889))
+:extrapreds ((x27890))
+:extrapreds ((x27891))
+:extrapreds ((x27892))
+:extrapreds ((x27893))
+:extrapreds ((x27894))
+:extrapreds ((x27895))
+:extrapreds ((x27896))
+:extrapreds ((x27897))
+:extrapreds ((x27898))
+:extrapreds ((x27899))
+:extrapreds ((x27900))
+:extrapreds ((x27901))
+:extrapreds ((x27902))
+:extrapreds ((x27903))
+:extrapreds ((x27904))
+:extrapreds ((x27905))
+:extrapreds ((x27906))
+:extrapreds ((x27907))
+:extrapreds ((x27908))
+:extrapreds ((x27909))
+:extrapreds ((x27910))
+:extrapreds ((x27911))
+:extrapreds ((x27912))
+:extrapreds ((x27913))
+:extrapreds ((x27914))
+:extrapreds ((x27915))
+:extrapreds ((x27916))
+:extrapreds ((x27917))
+:extrapreds ((x27918))
+:extrapreds ((x27919))
+:extrapreds ((x27920))
+:extrapreds ((x27921))
+:extrapreds ((x27922))
+:extrapreds ((x27923))
+:extrapreds ((x27924))
+:extrapreds ((x27925))
+:extrapreds ((x27926))
+:extrapreds ((x27927))
+:extrapreds ((x27928))
+:extrapreds ((x27929))
+:extrapreds ((x27930))
+:extrapreds ((x27931))
+:extrapreds ((x27932))
+:extrapreds ((x27933))
+:extrapreds ((x27934))
+:extrapreds ((x27935))
+:extrapreds ((x27936))
+:extrapreds ((x27937))
+:extrapreds ((x27938))
+:extrapreds ((x27939))
+:extrapreds ((x27940))
+:extrapreds ((x27941))
+:extrapreds ((x27942))
+:extrapreds ((x27943))
+:extrapreds ((x27944))
+:extrapreds ((x27945))
+:extrapreds ((x27946))
+:extrapreds ((x27947))
+:extrapreds ((x27948))
+:extrapreds ((x27949))
+:extrapreds ((x27950))
+:extrapreds ((x27951))
+:extrapreds ((x27952))
+:extrapreds ((x27953))
+:extrapreds ((x27954))
+:extrapreds ((x27955))
+:extrapreds ((x27956))
+:extrapreds ((x27957))
+:extrapreds ((x27958))
+:extrapreds ((x27959))
+:extrapreds ((x27960))
+:extrapreds ((x27961))
+:extrapreds ((x27962))
+:extrapreds ((x27963))
+:extrapreds ((x27964))
+:extrapreds ((x27965))
+:extrapreds ((x27966))
+:extrapreds ((x27967))
+:extrapreds ((x27968))
+:extrapreds ((x27969))
+:extrapreds ((x27970))
+:extrapreds ((x27971))
+:extrapreds ((x27972))
+:extrapreds ((x27973))
+:extrapreds ((x27974))
+:extrapreds ((x27975))
+:extrapreds ((x27976))
+:extrapreds ((x27977))
+:extrapreds ((x27978))
+:extrapreds ((x27979))
+:extrapreds ((x27980))
+:extrapreds ((x27981))
+:extrapreds ((x27982))
+:extrapreds ((x27983))
+:extrapreds ((x27984))
+:extrapreds ((x27985))
+:extrapreds ((x27986))
+:extrapreds ((x27987))
+:extrapreds ((x27988))
+:extrapreds ((x27989))
+:extrapreds ((x27990))
+:extrapreds ((x27991))
+:extrapreds ((x27992))
+:extrapreds ((x27993))
+:extrapreds ((x27994))
+:extrapreds ((x27995))
+:extrapreds ((x27996))
+:extrapreds ((x27997))
+:extrapreds ((x27998))
+:extrapreds ((x27999))
+:extrapreds ((x28000))
+:extrapreds ((x28001))
+:extrapreds ((x28002))
+:extrapreds ((x28003))
+:extrapreds ((x28004))
+:extrapreds ((x28005))
+:extrapreds ((x28006))
+:extrapreds ((x28007))
+:extrapreds ((x28008))
+:extrapreds ((x28009))
+:extrapreds ((x28010))
+:extrapreds ((x28011))
+:extrapreds ((x28012))
+:extrapreds ((x28013))
+:extrapreds ((x28014))
+:extrapreds ((x28015))
+:extrapreds ((x28016))
+:extrapreds ((x28017))
+:extrapreds ((x28018))
+:extrapreds ((x28019))
+:extrapreds ((x28020))
+:extrapreds ((x28021))
+:extrapreds ((x28022))
+:extrapreds ((x28023))
+:extrapreds ((x28024))
+:extrapreds ((x28025))
+:extrapreds ((x28026))
+:extrapreds ((x28027))
+:extrapreds ((x28028))
+:extrapreds ((x28029))
+:extrapreds ((x28030))
+:extrapreds ((x28031))
+:extrapreds ((x28032))
+:extrapreds ((x28033))
+:extrapreds ((x28034))
+:extrapreds ((x28035))
+:extrapreds ((x28036))
+:extrapreds ((x28037))
+:extrapreds ((x28038))
+:extrapreds ((x28039))
+:extrapreds ((x28040))
+:extrapreds ((x28041))
+:extrapreds ((x28042))
+:extrapreds ((x28043))
+:extrapreds ((x28044))
+:extrapreds ((x28045))
+:extrapreds ((x28046))
+:extrapreds ((x28047))
+:extrapreds ((x28048))
+:extrapreds ((x28049))
+:extrapreds ((x28050))
+:extrapreds ((x28051))
+:extrapreds ((x28052))
+:extrapreds ((x28053))
+:extrapreds ((x28054))
+:extrapreds ((x28055))
+:extrapreds ((x28056))
+:extrapreds ((x28057))
+:extrapreds ((x28058))
+:extrapreds ((x28059))
+:extrapreds ((x28060))
+:extrapreds ((x28061))
+:extrapreds ((x28062))
+:extrapreds ((x28063))
+:extrapreds ((x28064))
+:extrapreds ((x28065))
+:extrapreds ((x28066))
+:extrapreds ((x28067))
+:extrapreds ((x28068))
+:extrapreds ((x28069))
+:extrapreds ((x28070))
+:extrapreds ((x28071))
+:extrapreds ((x28072))
+:extrapreds ((x28073))
+:extrapreds ((x28074))
+:extrapreds ((x28075))
+:extrapreds ((x28076))
+:extrapreds ((x28077))
+:extrapreds ((x28078))
+:extrapreds ((x28079))
+:extrapreds ((x28080))
+:extrapreds ((x28081))
+:extrapreds ((x28082))
+:extrapreds ((x28083))
+:extrapreds ((x28084))
+:extrapreds ((x28085))
+:extrapreds ((x28086))
+:extrapreds ((x28087))
+:extrapreds ((x28088))
+:extrapreds ((x28089))
+:extrapreds ((x28090))
+:extrapreds ((x28091))
+:extrapreds ((x28092))
+:extrapreds ((x28093))
+:extrapreds ((x28094))
+:extrapreds ((x28095))
+:extrapreds ((x28096))
+:extrapreds ((x28097))
+:extrapreds ((x28098))
+:extrapreds ((x28099))
+:extrapreds ((x28100))
+:extrapreds ((x28101))
+:extrapreds ((x28102))
+:extrapreds ((x28103))
+:extrapreds ((x28104))
+:extrapreds ((x28105))
+:extrapreds ((x28106))
+:extrapreds ((x28107))
+:extrapreds ((x28108))
+:extrapreds ((x28109))
+:extrapreds ((x28110))
+:extrapreds ((x28111))
+:extrapreds ((x28112))
+:extrapreds ((x28113))
+:extrapreds ((x28114))
+:extrapreds ((x28115))
+:extrapreds ((x28116))
+:extrapreds ((x28117))
+:extrapreds ((x28118))
+:extrapreds ((x28119))
+:extrapreds ((x28120))
+:extrapreds ((x28121))
+:extrapreds ((x28122))
+:extrapreds ((x28123))
+:extrapreds ((x28124))
+:extrapreds ((x28125))
+:extrapreds ((x28126))
+:extrapreds ((x28127))
+:extrapreds ((x28128))
+:extrapreds ((x28129))
+:extrapreds ((x28130))
+:extrapreds ((x28131))
+:extrapreds ((x28132))
+:extrapreds ((x28133))
+:extrapreds ((x28134))
+:extrapreds ((x28135))
+:extrapreds ((x28136))
+:extrapreds ((x28137))
+:extrapreds ((x28138))
+:extrapreds ((x28139))
+:extrapreds ((x28140))
+:extrapreds ((x28141))
+:extrapreds ((x28142))
+:extrapreds ((x28143))
+:extrapreds ((x28144))
+:extrapreds ((x28145))
+:extrapreds ((x28146))
+:extrapreds ((x28147))
+:extrapreds ((x28148))
+:extrapreds ((x28149))
+:extrapreds ((x28150))
+:extrapreds ((x28151))
+:extrapreds ((x28152))
+:extrapreds ((x28153))
+:extrapreds ((x28154))
+:extrapreds ((x28155))
+:extrapreds ((x28156))
+:extrapreds ((x28157))
+:extrapreds ((x28158))
+:extrapreds ((x28159))
+:extrapreds ((x28160))
+:extrapreds ((x28161))
+:extrapreds ((x28162))
+:extrapreds ((x28163))
+:extrapreds ((x28164))
+:extrapreds ((x28165))
+:extrapreds ((x28166))
+:extrapreds ((x28167))
+:extrapreds ((x28168))
+:extrapreds ((x28169))
+:extrapreds ((x28170))
+:extrapreds ((x28171))
+:extrapreds ((x28172))
+:extrapreds ((x28173))
+:extrapreds ((x28174))
+:extrapreds ((x28175))
+:extrapreds ((x28176))
+:extrapreds ((x28177))
+:extrapreds ((x28178))
+:extrapreds ((x28179))
+:extrapreds ((x28180))
+:extrapreds ((x28181))
+:extrapreds ((x28182))
+:extrapreds ((x28183))
+:extrapreds ((x28184))
+:extrapreds ((x28185))
+:extrapreds ((x28186))
+:extrapreds ((x28187))
+:extrapreds ((x28188))
+:extrapreds ((x28189))
+:extrapreds ((x28190))
+:extrapreds ((x28191))
+:extrapreds ((x28192))
+:extrapreds ((x28193))
+:extrapreds ((x28194))
+:extrapreds ((x28195))
+:extrapreds ((x28196))
+:extrapreds ((x28197))
+:extrapreds ((x28198))
+:extrapreds ((x28199))
+:extrapreds ((x28200))
+:extrapreds ((x28201))
+:extrapreds ((x28202))
+:extrapreds ((x28203))
+:extrapreds ((x28204))
+:extrapreds ((x28205))
+:extrapreds ((x28206))
+:extrapreds ((x28207))
+:extrapreds ((x28208))
+:extrapreds ((x28209))
+:extrapreds ((x28210))
+:extrapreds ((x28211))
+:extrapreds ((x28212))
+:extrapreds ((x28213))
+:extrapreds ((x28214))
+:extrapreds ((x28215))
+:extrapreds ((x28216))
+:extrapreds ((x28217))
+:extrapreds ((x28218))
+:extrapreds ((x28219))
+:extrapreds ((x28220))
+:extrapreds ((x28221))
+:extrapreds ((x28222))
+:extrapreds ((x28223))
+:extrapreds ((x28224))
+:extrapreds ((x28225))
+:extrapreds ((x28226))
+:extrapreds ((x28227))
+:extrapreds ((x28228))
+:extrapreds ((x28229))
+:extrapreds ((x28230))
+:extrapreds ((x28231))
+:extrapreds ((x28232))
+:extrapreds ((x28233))
+:extrapreds ((x28234))
+:extrapreds ((x28235))
+:extrapreds ((x28236))
+:extrapreds ((x28237))
+:extrapreds ((x28238))
+:extrapreds ((x28239))
+:extrapreds ((x28240))
+:extrapreds ((x28241))
+:extrapreds ((x28242))
+:extrapreds ((x28243))
+:extrapreds ((x28244))
+:extrapreds ((x28245))
+:extrapreds ((x28246))
+:extrapreds ((x28247))
+:extrapreds ((x28248))
+:extrapreds ((x28249))
+:extrapreds ((x28250))
+:extrapreds ((x28251))
+:extrapreds ((x28252))
+:extrapreds ((x28253))
+:extrapreds ((x28254))
+:extrapreds ((x28255))
+:extrapreds ((x28256))
+:extrapreds ((x28257))
+:extrapreds ((x28258))
+:extrapreds ((x28259))
+:extrapreds ((x28260))
+:extrapreds ((x28261))
+:extrapreds ((x28262))
+:extrapreds ((x28263))
+:extrapreds ((x28264))
+:extrapreds ((x28265))
+:extrapreds ((x28266))
+:extrapreds ((x28267))
+:extrapreds ((x28268))
+:extrapreds ((x28269))
+:extrapreds ((x28270))
+:extrapreds ((x28271))
+:extrapreds ((x28272))
+:extrapreds ((x28273))
+:extrapreds ((x28274))
+:extrapreds ((x28275))
+:extrapreds ((x28276))
+:extrapreds ((x28277))
+:extrapreds ((x28278))
+:extrapreds ((x28279))
+:extrapreds ((x28280))
+:extrapreds ((x28281))
+:extrapreds ((x28282))
+:extrapreds ((x28283))
+:extrapreds ((x28284))
+:extrapreds ((x28285))
+:extrapreds ((x28286))
+:extrapreds ((x28287))
+:extrapreds ((x28288))
+:extrapreds ((x28289))
+:extrapreds ((x28290))
+:extrapreds ((x28291))
+:extrapreds ((x28292))
+:extrapreds ((x28293))
+:extrapreds ((x28294))
+:extrapreds ((x28295))
+:extrapreds ((x28296))
+:extrapreds ((x28297))
+:extrapreds ((x28298))
+:extrapreds ((x28299))
+:extrapreds ((x28300))
+:extrapreds ((x28301))
+:extrapreds ((x28302))
+:extrapreds ((x28303))
+:extrapreds ((x28304))
+:extrapreds ((x28305))
+:extrapreds ((x28306))
+:extrapreds ((x28307))
+:extrapreds ((x28308))
+:extrapreds ((x28309))
+:extrapreds ((x28310))
+:extrapreds ((x28311))
+:extrapreds ((x28312))
+:extrapreds ((x28313))
+:extrapreds ((x28314))
+:extrapreds ((x28315))
+:extrapreds ((x28316))
+:extrapreds ((x28317))
+:extrapreds ((x28318))
+:extrapreds ((x28319))
+:extrapreds ((x28320))
+:extrapreds ((x28321))
+:extrapreds ((x28322))
+:extrapreds ((x28323))
+:extrapreds ((x28324))
+:extrapreds ((x28325))
+:extrapreds ((x28326))
+:extrapreds ((x28327))
+:extrapreds ((x28328))
+:extrapreds ((x28329))
+:extrapreds ((x28330))
+:extrapreds ((x28331))
+:extrapreds ((x28332))
+:extrapreds ((x28333))
+:extrapreds ((x28334))
+:extrapreds ((x28335))
+:extrapreds ((x28336))
+:extrapreds ((x28337))
+:extrapreds ((x28338))
+:extrapreds ((x28339))
+:extrapreds ((x28340))
+:extrapreds ((x28341))
+:extrapreds ((x28342))
+:extrapreds ((x28343))
+:extrapreds ((x28344))
+:extrapreds ((x28345))
+:extrapreds ((x28346))
+:extrapreds ((x28347))
+:extrapreds ((x28348))
+:extrapreds ((x28349))
+:extrapreds ((x28350))
+:extrapreds ((x28351))
+:extrapreds ((x28352))
+:extrapreds ((x28353))
+:extrapreds ((x28354))
+:extrapreds ((x28355))
+:extrapreds ((x28356))
+:extrapreds ((x28357))
+:extrapreds ((x28358))
+:extrapreds ((x28359))
+:extrapreds ((x28360))
+:extrapreds ((x28361))
+:extrapreds ((x28362))
+:extrapreds ((x28363))
+:extrapreds ((x28364))
+:extrapreds ((x28365))
+:extrapreds ((x28366))
+:extrapreds ((x28367))
+:extrapreds ((x28368))
+:extrapreds ((x28369))
+:extrapreds ((x28370))
+:extrapreds ((x28371))
+:extrapreds ((x28372))
+:extrapreds ((x28373))
+:extrapreds ((x28374))
+:extrapreds ((x28375))
+:extrapreds ((x28376))
+:extrapreds ((x28377))
+:extrapreds ((x28378))
+:extrapreds ((x28379))
+:extrapreds ((x28380))
+:extrapreds ((x28381))
+:extrapreds ((x28382))
+:extrapreds ((x28383))
+:extrapreds ((x28384))
+:extrapreds ((x28385))
+:extrapreds ((x28386))
+:extrapreds ((x28387))
+:extrapreds ((x28388))
+:extrapreds ((x28389))
+:extrapreds ((x28390))
+:extrapreds ((x28391))
+:extrapreds ((x28392))
+:extrapreds ((x28393))
+:extrapreds ((x28394))
+:extrapreds ((x28395))
+:extrapreds ((x28396))
+:extrapreds ((x28397))
+:extrapreds ((x28398))
+:extrapreds ((x28399))
+:extrapreds ((x28400))
+:extrapreds ((x28401))
+:extrapreds ((x28402))
+:extrapreds ((x28403))
+:extrapreds ((x28404))
+:extrapreds ((x28405))
+:extrapreds ((x28406))
+:extrapreds ((x28407))
+:extrapreds ((x28408))
+:extrapreds ((x28409))
+:extrapreds ((x28410))
+:extrapreds ((x28411))
+:extrapreds ((x28412))
+:extrapreds ((x28413))
+:extrapreds ((x28414))
+:extrapreds ((x28415))
+:extrapreds ((x28416))
+:extrapreds ((x28417))
+:extrapreds ((x28418))
+:extrapreds ((x28419))
+:extrapreds ((x28420))
+:extrapreds ((x28421))
+:extrapreds ((x28422))
+:extrapreds ((x28423))
+:extrapreds ((x28424))
+:extrapreds ((x28425))
+:extrapreds ((x28426))
+:extrapreds ((x28427))
+:extrapreds ((x28428))
+:extrapreds ((x28429))
+:extrapreds ((x28430))
+:extrapreds ((x28431))
+:extrapreds ((x28432))
+:extrapreds ((x28433))
+:extrapreds ((x28434))
+:extrapreds ((x28435))
+:extrapreds ((x28436))
+:extrapreds ((x28437))
+:extrapreds ((x28438))
+:extrapreds ((x28439))
+:extrapreds ((x28440))
+:extrapreds ((x28441))
+:extrapreds ((x28442))
+:extrapreds ((x28443))
+:extrapreds ((x28444))
+:extrapreds ((x28445))
+:extrapreds ((x28446))
+:extrapreds ((x28447))
+:extrapreds ((x28448))
+:extrapreds ((x28449))
+:extrapreds ((x28450))
+:extrapreds ((x28451))
+:extrapreds ((x28452))
+:extrapreds ((x28453))
+:extrapreds ((x28454))
+:extrapreds ((x28455))
+:extrapreds ((x28456))
+:extrapreds ((x28457))
+:extrapreds ((x28458))
+:extrapreds ((x28459))
+:extrapreds ((x28460))
+:extrapreds ((x28461))
+:extrapreds ((x28462))
+:extrapreds ((x28463))
+:extrapreds ((x28464))
+:extrapreds ((x28465))
+:extrapreds ((x28466))
+:extrapreds ((x28467))
+:extrapreds ((x28468))
+:extrapreds ((x28469))
+:extrapreds ((x28470))
+:extrapreds ((x28471))
+:extrapreds ((x28472))
+:extrapreds ((x28473))
+:extrapreds ((x28474))
+:extrapreds ((x28475))
+:extrapreds ((x28476))
+:extrapreds ((x28477))
+:extrapreds ((x28478))
+:extrapreds ((x28479))
+:extrapreds ((x28480))
+:extrapreds ((x28481))
+:extrapreds ((x28482))
+:extrapreds ((x28483))
+:extrapreds ((x28484))
+:extrapreds ((x28485))
+:extrapreds ((x28486))
+:extrapreds ((x28487))
+:extrapreds ((x28488))
+:extrapreds ((x28489))
+:extrapreds ((x28490))
+:extrapreds ((x28491))
+:extrapreds ((x28492))
+:extrapreds ((x28493))
+:extrapreds ((x28494))
+:extrapreds ((x28495))
+:extrapreds ((x28496))
+:extrapreds ((x28497))
+:extrapreds ((x28498))
+:extrapreds ((x28499))
+:extrapreds ((x28500))
+:extrapreds ((x28501))
+:extrapreds ((x28502))
+:extrapreds ((x28503))
+:extrapreds ((x28504))
+:extrapreds ((x28505))
+:extrapreds ((x28506))
+:extrapreds ((x28507))
+:extrapreds ((x28508))
+:extrapreds ((x28509))
+:extrapreds ((x28510))
+:extrapreds ((x28511))
+:extrapreds ((x28512))
+:extrapreds ((x28513))
+:extrapreds ((x28514))
+:extrapreds ((x28515))
+:extrapreds ((x28516))
+:extrapreds ((x28517))
+:extrapreds ((x28518))
+:extrapreds ((x28519))
+:extrapreds ((x28520))
+:extrapreds ((x28521))
+:extrapreds ((x28522))
+:extrapreds ((x28523))
+:extrapreds ((x28524))
+:extrapreds ((x28525))
+:extrapreds ((x28526))
+:extrapreds ((x28527))
+:extrapreds ((x28528))
+:extrapreds ((x28529))
+:extrapreds ((x28530))
+:extrapreds ((x28531))
+:extrapreds ((x28532))
+:extrapreds ((x28533))
+:extrapreds ((x28534))
+:extrapreds ((x28535))
+:extrapreds ((x28536))
+:extrapreds ((x28537))
+:extrapreds ((x28538))
+:extrapreds ((x28539))
+:extrapreds ((x28540))
+:extrapreds ((x28541))
+:extrapreds ((x28542))
+:extrapreds ((x28543))
+:extrapreds ((x28544))
+:extrapreds ((x28545))
+:extrapreds ((x28546))
+:extrapreds ((x28547))
+:extrapreds ((x28548))
+:extrapreds ((x28549))
+:extrapreds ((x28550))
+:extrapreds ((x28551))
+:extrapreds ((x28552))
+:extrapreds ((x28553))
+:extrapreds ((x28554))
+:extrapreds ((x28555))
+:extrapreds ((x28556))
+:extrapreds ((x28557))
+:extrapreds ((x28558))
+:extrapreds ((x28559))
+:extrapreds ((x28560))
+:extrapreds ((x28561))
+:extrapreds ((x28562))
+:extrapreds ((x28563))
+:extrapreds ((x28564))
+:extrapreds ((x28565))
+:extrapreds ((x28566))
+:extrapreds ((x28567))
+:extrapreds ((x28568))
+:extrapreds ((x28569))
+:extrapreds ((x28570))
+:extrapreds ((x28571))
+:extrapreds ((x28572))
+:extrapreds ((x28573))
+:extrapreds ((x28574))
+:extrapreds ((x28575))
+:extrapreds ((x28576))
+:extrapreds ((x28577))
+:extrapreds ((x28578))
+:extrapreds ((x28579))
+:extrapreds ((x28580))
+:extrapreds ((x28581))
+:extrapreds ((x28582))
+:extrapreds ((x28583))
+:extrapreds ((x28584))
+:extrapreds ((x28585))
+:extrapreds ((x28586))
+:extrapreds ((x28587))
+:extrapreds ((x28588))
+:extrapreds ((x28589))
+:extrapreds ((x28590))
+:extrapreds ((x28591))
+:extrapreds ((x28592))
+:extrapreds ((x28593))
+:extrapreds ((x28594))
+:extrapreds ((x28595))
+:extrapreds ((x28596))
+:extrapreds ((x28597))
+:extrapreds ((x28598))
+:extrapreds ((x28599))
+:extrapreds ((x28600))
+:extrapreds ((x28601))
+:extrapreds ((x28602))
+:extrapreds ((x28603))
+:extrapreds ((x28604))
+:extrapreds ((x28605))
+:extrapreds ((x28606))
+:extrapreds ((x28607))
+:extrapreds ((x28608))
+:extrapreds ((x28609))
+:extrapreds ((x28610))
+:extrapreds ((x28611))
+:extrapreds ((x28612))
+:extrapreds ((x28613))
+:extrapreds ((x28614))
+:extrapreds ((x28615))
+:extrapreds ((x28616))
+:extrapreds ((x28617))
+:extrapreds ((x28618))
+:extrapreds ((x28619))
+:extrapreds ((x28620))
+:extrapreds ((x28621))
+:extrapreds ((x28622))
+:extrapreds ((x28623))
+:extrapreds ((x28624))
+:extrapreds ((x28625))
+:extrapreds ((x28626))
+:extrapreds ((x28627))
+:extrapreds ((x28628))
+:extrapreds ((x28629))
+:extrapreds ((x28630))
+:extrapreds ((x28631))
+:extrapreds ((x28632))
+:extrapreds ((x28633))
+:extrapreds ((x28634))
+:extrapreds ((x28635))
+:extrapreds ((x28636))
+:extrapreds ((x28637))
+:extrapreds ((x28638))
+:extrapreds ((x28639))
+:extrapreds ((x28640))
+:extrapreds ((x28641))
+:extrapreds ((x28642))
+:extrapreds ((x28643))
+:extrapreds ((x28644))
+:extrapreds ((x28645))
+:extrapreds ((x28646))
+:extrapreds ((x28647))
+:extrapreds ((x28648))
+:extrapreds ((x28649))
+:extrapreds ((x28650))
+:extrapreds ((x28651))
+:extrapreds ((x28652))
+:extrapreds ((x28653))
+:extrapreds ((x28654))
+:extrapreds ((x28655))
+:extrapreds ((x28656))
+:extrapreds ((x28657))
+:extrapreds ((x28658))
+:extrapreds ((x28659))
+:extrapreds ((x28660))
+:extrapreds ((x28661))
+:extrapreds ((x28662))
+:extrapreds ((x28663))
+:extrapreds ((x28664))
+:extrapreds ((x28665))
+:extrapreds ((x28666))
+:extrapreds ((x28667))
+:extrapreds ((x28668))
+:extrapreds ((x28669))
+:extrapreds ((x28670))
+:extrapreds ((x28671))
+:extrapreds ((x28672))
+:extrapreds ((x28673))
+:extrapreds ((x28674))
+:extrapreds ((x28675))
+:extrapreds ((x28676))
+:extrapreds ((x28677))
+:extrapreds ((x28678))
+:extrapreds ((x28679))
+:extrapreds ((x28680))
+:extrapreds ((x28681))
+:extrapreds ((x28682))
+:extrapreds ((x28683))
+:extrapreds ((x28684))
+:extrapreds ((x28685))
+:extrapreds ((x28686))
+:extrapreds ((x28687))
+:extrapreds ((x28688))
+:extrapreds ((x28689))
+:extrapreds ((x28690))
+:extrapreds ((x28691))
+:extrapreds ((x28692))
+:extrapreds ((x28693))
+:extrapreds ((x28694))
+:extrapreds ((x28695))
+:extrapreds ((x28696))
+:extrapreds ((x28697))
+:extrapreds ((x28698))
+:extrapreds ((x28699))
+:extrapreds ((x28700))
+:extrapreds ((x28701))
+:extrapreds ((x28702))
+:extrapreds ((x28703))
+:extrapreds ((x28704))
+:extrapreds ((x28705))
+:extrapreds ((x28706))
+:extrapreds ((x28707))
+:extrapreds ((x28708))
+:extrapreds ((x28709))
+:extrapreds ((x28710))
+:extrapreds ((x28711))
+:extrapreds ((x28712))
+:extrapreds ((x28713))
+:extrapreds ((x28714))
+:extrapreds ((x28715))
+:extrapreds ((x28716))
+:extrapreds ((x28717))
+:extrapreds ((x28718))
+:extrapreds ((x28719))
+:extrapreds ((x28720))
+:extrapreds ((x28721))
+:extrapreds ((x28722))
+:extrapreds ((x28723))
+:extrapreds ((x28724))
+:extrapreds ((x28725))
+:extrapreds ((x28726))
+:extrapreds ((x28727))
+:extrapreds ((x28728))
+:extrapreds ((x28729))
+:extrapreds ((x28730))
+:extrapreds ((x28731))
+:extrapreds ((x28732))
+:extrapreds ((x28733))
+:extrapreds ((x28734))
+:extrapreds ((x28735))
+:extrapreds ((x28736))
+:extrapreds ((x28737))
+:extrapreds ((x28738))
+:extrapreds ((x28739))
+:extrapreds ((x28740))
+:extrapreds ((x28741))
+:extrapreds ((x28742))
+:extrapreds ((x28743))
+:extrapreds ((x28744))
+:extrapreds ((x28745))
+:extrapreds ((x28746))
+:extrapreds ((x28747))
+:extrapreds ((x28748))
+:extrapreds ((x28749))
+:extrapreds ((x28750))
+:extrapreds ((x28751))
+:extrapreds ((x28752))
+:extrapreds ((x28753))
+:extrapreds ((x28754))
+:extrapreds ((x28755))
+:extrapreds ((x28756))
+:extrapreds ((x28757))
+:extrapreds ((x28758))
+:extrapreds ((x28759))
+:extrapreds ((x28760))
+:extrapreds ((x28761))
+:extrapreds ((x28762))
+:extrapreds ((x28763))
+:extrapreds ((x28764))
+:extrapreds ((x28765))
+:extrapreds ((x28766))
+:extrapreds ((x28767))
+:extrapreds ((x28768))
+:extrapreds ((x28769))
+:extrapreds ((x28770))
+:extrapreds ((x28771))
+:extrapreds ((x28772))
+:extrapreds ((x28773))
+:extrapreds ((x28774))
+:extrapreds ((x28775))
+:extrapreds ((x28776))
+:extrapreds ((x28777))
+:extrapreds ((x28778))
+:extrapreds ((x28779))
+:extrapreds ((x28780))
+:extrapreds ((x28781))
+:extrapreds ((x28782))
+:extrapreds ((x28783))
+:extrapreds ((x28784))
+:extrapreds ((x28785))
+:extrapreds ((x28786))
+:extrapreds ((x28787))
+:extrapreds ((x28788))
+:extrapreds ((x28789))
+:extrapreds ((x28790))
+:extrapreds ((x28791))
+:extrapreds ((x28792))
+:extrapreds ((x28793))
+:extrapreds ((x28794))
+:extrapreds ((x28795))
+:extrapreds ((x28796))
+:extrapreds ((x28797))
+:extrapreds ((x28798))
+:extrapreds ((x28799))
+:extrapreds ((x28800))
+:extrapreds ((x28801))
+:extrapreds ((x28802))
+:extrapreds ((x28803))
+:extrapreds ((x28804))
+:extrapreds ((x28805))
+:extrapreds ((x28806))
+:extrapreds ((x28807))
+:extrapreds ((x28808))
+:extrapreds ((x28809))
+:extrapreds ((x28810))
+:extrapreds ((x28811))
+:extrapreds ((x28812))
+:extrapreds ((x28813))
+:extrapreds ((x28814))
+:extrapreds ((x28815))
+:extrapreds ((x28816))
+:extrapreds ((x28817))
+:extrapreds ((x28818))
+:extrapreds ((x28819))
+:extrapreds ((x28820))
+:extrapreds ((x28821))
+:extrapreds ((x28822))
+:extrapreds ((x28823))
+:extrapreds ((x28824))
+:extrapreds ((x28825))
+:extrapreds ((x28826))
+:extrapreds ((x28827))
+:extrapreds ((x28828))
+:extrapreds ((x28829))
+:extrapreds ((x28830))
+:extrapreds ((x28831))
+:extrapreds ((x28832))
+:extrapreds ((x28833))
+:extrapreds ((x28834))
+:extrapreds ((x28835))
+:extrapreds ((x28836))
+:extrapreds ((x28837))
+:extrapreds ((x28838))
+:extrapreds ((x28839))
+:extrapreds ((x28840))
+:extrapreds ((x28841))
+:extrapreds ((x28842))
+:extrapreds ((x28843))
+:extrapreds ((x28844))
+:extrapreds ((x28845))
+:extrapreds ((x28846))
+:extrapreds ((x28847))
+:extrapreds ((x28848))
+:extrapreds ((x28849))
+:extrapreds ((x28850))
+:extrapreds ((x28851))
+:extrapreds ((x28852))
+:extrapreds ((x28853))
+:extrapreds ((x28854))
+:extrapreds ((x28855))
+:extrapreds ((x28856))
+:extrapreds ((x28857))
+:extrapreds ((x28858))
+:extrapreds ((x28859))
+:extrapreds ((x28860))
+:extrapreds ((x28861))
+:extrapreds ((x28862))
+:extrapreds ((x28863))
+:extrapreds ((x28864))
+:extrapreds ((x28865))
+:extrapreds ((x28866))
+:extrapreds ((x28867))
+:extrapreds ((x28868))
+:extrapreds ((x28869))
+:extrapreds ((x28870))
+:extrapreds ((x28871))
+:extrapreds ((x28872))
+:extrapreds ((x28873))
+:extrapreds ((x28874))
+:extrapreds ((x28875))
+:extrapreds ((x28876))
+:extrapreds ((x28877))
+:extrapreds ((x28878))
+:extrapreds ((x28879))
+:extrapreds ((x28880))
+:extrapreds ((x28881))
+:extrapreds ((x28882))
+:extrapreds ((x28883))
+:extrapreds ((x28884))
+:extrapreds ((x28885))
+:extrapreds ((x28886))
+:extrapreds ((x28887))
+:extrapreds ((x28888))
+:extrapreds ((x28889))
+:extrapreds ((x28890))
+:extrapreds ((x28891))
+:extrapreds ((x28892))
+:extrapreds ((x28893))
+:extrapreds ((x28894))
+:extrapreds ((x28895))
+:extrapreds ((x28896))
+:extrapreds ((x28897))
+:extrapreds ((x28898))
+:extrapreds ((x28899))
+:extrapreds ((x28900))
+:extrapreds ((x28901))
+:extrapreds ((x28902))
+:extrapreds ((x28903))
+:extrapreds ((x28904))
+:extrapreds ((x28905))
+:extrapreds ((x28906))
+:extrapreds ((x28907))
+:extrapreds ((x28908))
+:extrapreds ((x28909))
+:extrapreds ((x28910))
+:extrapreds ((x28911))
+:extrapreds ((x28912))
+:extrapreds ((x28913))
+:extrapreds ((x28914))
+:extrapreds ((x28915))
+:extrapreds ((x28916))
+:extrapreds ((x28917))
+:extrapreds ((x28918))
+:extrapreds ((x28919))
+:extrapreds ((x28920))
+:extrapreds ((x28921))
+:extrapreds ((x28922))
+:extrapreds ((x28923))
+:extrapreds ((x28924))
+:extrapreds ((x28925))
+:extrapreds ((x28926))
+:extrapreds ((x28927))
+:extrapreds ((x28928))
+:extrapreds ((x28929))
+:extrapreds ((x28930))
+:extrapreds ((x28931))
+:extrapreds ((x28932))
+:extrapreds ((x28933))
+:extrapreds ((x28934))
+:extrapreds ((x28935))
+:extrapreds ((x28936))
+:extrapreds ((x28937))
+:extrapreds ((x28938))
+:extrapreds ((x28939))
+:extrapreds ((x28940))
+:extrapreds ((x28941))
+:extrapreds ((x28942))
+:extrapreds ((x28943))
+:extrapreds ((x28944))
+:extrapreds ((x28945))
+:extrapreds ((x28946))
+:extrapreds ((x28947))
+:extrapreds ((x28948))
+:extrapreds ((x28949))
+:extrapreds ((x28950))
+:extrapreds ((x28951))
+:extrapreds ((x28952))
+:extrapreds ((x28953))
+:extrapreds ((x28954))
+:extrapreds ((x28955))
+:extrapreds ((x28956))
+:extrapreds ((x28957))
+:extrapreds ((x28958))
+:extrapreds ((x28959))
+:extrapreds ((x28960))
+:extrapreds ((x28961))
+:extrapreds ((x28962))
+:extrapreds ((x28963))
+:extrapreds ((x28964))
+:extrapreds ((x28965))
+:extrapreds ((x28966))
+:extrapreds ((x28967))
+:extrapreds ((x28968))
+:extrapreds ((x28969))
+:extrapreds ((x28970))
+:extrapreds ((x28971))
+:extrapreds ((x28972))
+:extrapreds ((x28973))
+:extrapreds ((x28974))
+:extrapreds ((x28975))
+:extrapreds ((x28976))
+:extrapreds ((x28977))
+:extrapreds ((x28978))
+:extrapreds ((x28979))
+:extrapreds ((x28980))
+:extrapreds ((x28981))
+:extrapreds ((x28982))
+:extrapreds ((x28983))
+:extrapreds ((x28984))
+:extrapreds ((x28985))
+:extrapreds ((x28986))
+:extrapreds ((x28987))
+:extrapreds ((x28988))
+:extrapreds ((x28989))
+:extrapreds ((x28990))
+:extrapreds ((x28991))
+:extrapreds ((x28992))
+:extrapreds ((x28993))
+:extrapreds ((x28994))
+:extrapreds ((x28995))
+:extrapreds ((x28996))
+:extrapreds ((x28997))
+:extrapreds ((x28998))
+:extrapreds ((x28999))
+:extrapreds ((x29000))
+:extrapreds ((x29001))
+:extrapreds ((x29002))
+:extrapreds ((x29003))
+:extrapreds ((x29004))
+:extrapreds ((x29005))
+:extrapreds ((x29006))
+:extrapreds ((x29007))
+:extrapreds ((x29008))
+:extrapreds ((x29009))
+:extrapreds ((x29010))
+:extrapreds ((x29011))
+:extrapreds ((x29012))
+:extrapreds ((x29013))
+:extrapreds ((x29014))
+:extrapreds ((x29015))
+:extrapreds ((x29016))
+:extrapreds ((x29017))
+:extrapreds ((x29018))
+:extrapreds ((x29019))
+:extrapreds ((x29020))
+:extrapreds ((x29021))
+:extrapreds ((x29022))
+:extrapreds ((x29023))
+:extrapreds ((x29024))
+:extrapreds ((x29025))
+:extrapreds ((x29026))
+:extrapreds ((x29027))
+:extrapreds ((x29028))
+:extrapreds ((x29029))
+:extrapreds ((x29030))
+:extrapreds ((x29031))
+:extrapreds ((x29032))
+:extrapreds ((x29033))
+:extrapreds ((x29034))
+:extrapreds ((x29035))
+:extrapreds ((x29036))
+:extrapreds ((x29037))
+:extrapreds ((x29038))
+:extrapreds ((x29039))
+:extrapreds ((x29040))
+:extrapreds ((x29041))
+:extrapreds ((x29042))
+:extrapreds ((x29043))
+:extrapreds ((x29044))
+:extrapreds ((x29045))
+:extrapreds ((x29046))
+:extrapreds ((x29047))
+:extrapreds ((x29048))
+:extrapreds ((x29049))
+:extrapreds ((x29050))
+:extrapreds ((x29051))
+:extrapreds ((x29052))
+:extrapreds ((x29053))
+:extrapreds ((x29054))
+:extrapreds ((x29055))
+:extrapreds ((x29056))
+:extrapreds ((x29057))
+:extrapreds ((x29058))
+:extrapreds ((x29059))
+:extrapreds ((x29060))
+:extrapreds ((x29061))
+:extrapreds ((x29062))
+:extrapreds ((x29063))
+:extrapreds ((x29064))
+:extrapreds ((x29065))
+:extrapreds ((x29066))
+:extrapreds ((x29067))
+:extrapreds ((x29068))
+:extrapreds ((x29069))
+:extrapreds ((x29070))
+:extrapreds ((x29071))
+:extrapreds ((x29072))
+:extrapreds ((x29073))
+:extrapreds ((x29074))
+:extrapreds ((x29075))
+:extrapreds ((x29076))
+:extrapreds ((x29077))
+:extrapreds ((x29078))
+:extrapreds ((x29079))
+:extrapreds ((x29080))
+:extrapreds ((x29081))
+:extrapreds ((x29082))
+:extrapreds ((x29083))
+:extrapreds ((x29084))
+:extrapreds ((x29085))
+:extrapreds ((x29086))
+:extrapreds ((x29087))
+:extrapreds ((x29088))
+:extrapreds ((x29089))
+:extrapreds ((x29090))
+:extrapreds ((x29091))
+:extrapreds ((x29092))
+:extrapreds ((x29093))
+:extrapreds ((x29094))
+:extrapreds ((x29095))
+:extrapreds ((x29096))
+:extrapreds ((x29097))
+:extrapreds ((x29098))
+:extrapreds ((x29099))
+:extrapreds ((x29100))
+:extrapreds ((x29101))
+:extrapreds ((x29102))
+:extrapreds ((x29103))
+:extrapreds ((x29104))
+:extrapreds ((x29105))
+:extrapreds ((x29106))
+:extrapreds ((x29107))
+:extrapreds ((x29108))
+:extrapreds ((x29109))
+:extrapreds ((x29110))
+:extrapreds ((x29111))
+:extrapreds ((x29112))
+:extrapreds ((x29113))
+:extrapreds ((x29114))
+:extrapreds ((x29115))
+:extrapreds ((x29116))
+:extrapreds ((x29117))
+:extrapreds ((x29118))
+:extrapreds ((x29119))
+:extrapreds ((x29120))
+:extrapreds ((x29121))
+:extrapreds ((x29122))
+:extrapreds ((x29123))
+:extrapreds ((x29124))
+:extrapreds ((x29125))
+:extrapreds ((x29126))
+:extrapreds ((x29127))
+:extrapreds ((x29128))
+:extrapreds ((x29129))
+:extrapreds ((x29130))
+:extrapreds ((x29131))
+:extrapreds ((x29132))
+:extrapreds ((x29133))
+:extrapreds ((x29134))
+:extrapreds ((x29135))
+:extrapreds ((x29136))
+:extrapreds ((x29137))
+:extrapreds ((x29138))
+:extrapreds ((x29139))
+:extrapreds ((x29140))
+:extrapreds ((x29141))
+:extrapreds ((x29142))
+:extrapreds ((x29143))
+:extrapreds ((x29144))
+:extrapreds ((x29145))
+:extrapreds ((x29146))
+:extrapreds ((x29147))
+:extrapreds ((x29148))
+:extrapreds ((x29149))
+:extrapreds ((x29150))
+:extrapreds ((x29151))
+:extrapreds ((x29152))
+:extrapreds ((x29153))
+:extrapreds ((x29154))
+:extrapreds ((x29155))
+:extrapreds ((x29156))
+:extrapreds ((x29157))
+:extrapreds ((x29158))
+:extrapreds ((x29159))
+:extrapreds ((x29160))
+:extrapreds ((x29161))
+:extrapreds ((x29162))
+:extrapreds ((x29163))
+:extrapreds ((x29164))
+:extrapreds ((x29165))
+:extrapreds ((x29166))
+:extrapreds ((x29167))
+:extrapreds ((x29168))
+:extrapreds ((x29169))
+:extrapreds ((x29170))
+:extrapreds ((x29171))
+:extrapreds ((x29172))
+:extrapreds ((x29173))
+:extrapreds ((x29174))
+:extrapreds ((x29175))
+:extrapreds ((x29176))
+:extrapreds ((x29177))
+:extrapreds ((x29178))
+:extrapreds ((x29179))
+:extrapreds ((x29180))
+:extrapreds ((x29181))
+:extrapreds ((x29182))
+:extrapreds ((x29183))
+:extrapreds ((x29184))
+:extrapreds ((x29185))
+:extrapreds ((x29186))
+:extrapreds ((x29187))
+:extrapreds ((x29188))
+:extrapreds ((x29189))
+:extrapreds ((x29190))
+:extrapreds ((x29191))
+:extrapreds ((x29192))
+:extrapreds ((x29193))
+:extrapreds ((x29194))
+:extrapreds ((x29195))
+:extrapreds ((x29196))
+:extrapreds ((x29197))
+:extrapreds ((x29198))
+:extrapreds ((x29199))
+:extrapreds ((x29200))
+:extrapreds ((x29201))
+:extrapreds ((x29202))
+:extrapreds ((x29203))
+:extrapreds ((x29204))
+:extrapreds ((x29205))
+:extrapreds ((x29206))
+:extrapreds ((x29207))
+:extrapreds ((x29208))
+:extrapreds ((x29209))
+:extrapreds ((x29210))
+:extrapreds ((x29211))
+:extrapreds ((x29212))
+:extrapreds ((x29213))
+:extrapreds ((x29214))
+:extrapreds ((x29215))
+:extrapreds ((x29216))
+:extrapreds ((x29217))
+:extrapreds ((x29218))
+:extrapreds ((x29219))
+:extrapreds ((x29220))
+:extrapreds ((x29221))
+:extrapreds ((x29222))
+:extrapreds ((x29223))
+:extrapreds ((x29224))
+:extrapreds ((x29225))
+:extrapreds ((x29226))
+:extrapreds ((x29227))
+:extrapreds ((x29228))
+:extrapreds ((x29229))
+:extrapreds ((x29230))
+:extrapreds ((x29231))
+:extrapreds ((x29232))
+:extrapreds ((x29233))
+:extrapreds ((x29234))
+:extrapreds ((x29235))
+:extrapreds ((x29236))
+:extrapreds ((x29237))
+:extrapreds ((x29238))
+:extrapreds ((x29239))
+:extrapreds ((x29240))
+:extrapreds ((x29241))
+:extrapreds ((x29242))
+:extrapreds ((x29243))
+:extrapreds ((x29244))
+:extrapreds ((x29245))
+:extrapreds ((x29246))
+:extrapreds ((x29247))
+:extrapreds ((x29248))
+:extrapreds ((x29249))
+:extrapreds ((x29250))
+:extrapreds ((x29251))
+:extrapreds ((x29252))
+:extrapreds ((x29253))
+:extrapreds ((x29254))
+:extrapreds ((x29255))
+:extrapreds ((x29256))
+:extrapreds ((x29257))
+:extrapreds ((x29258))
+:extrapreds ((x29259))
+:extrapreds ((x29260))
+:extrapreds ((x29261))
+:extrapreds ((x29262))
+:extrapreds ((x29263))
+:extrapreds ((x29264))
+:extrapreds ((x29265))
+:extrapreds ((x29266))
+:extrapreds ((x29267))
+:extrapreds ((x29268))
+:extrapreds ((x29269))
+:extrapreds ((x29270))
+:extrapreds ((x29271))
+:extrapreds ((x29272))
+:extrapreds ((x29273))
+:extrapreds ((x29274))
+:extrapreds ((x29275))
+:extrapreds ((x29276))
+:extrapreds ((x29277))
+:extrapreds ((x29278))
+:extrapreds ((x29279))
+:extrapreds ((x29280))
+:extrapreds ((x29281))
+:extrapreds ((x29282))
+:extrapreds ((x29283))
+:extrapreds ((x29284))
+:extrapreds ((x29285))
+:extrapreds ((x29286))
+:extrapreds ((x29287))
+:extrapreds ((x29288))
+:extrapreds ((x29289))
+:extrapreds ((x29290))
+:extrapreds ((x29291))
+:extrapreds ((x29292))
+:extrapreds ((x29293))
+:extrapreds ((x29294))
+:extrapreds ((x29295))
+:extrapreds ((x29296))
+:extrapreds ((x29297))
+:extrapreds ((x29298))
+:extrapreds ((x29299))
+:extrapreds ((x29300))
+:extrapreds ((x29301))
+:extrapreds ((x29302))
+:extrapreds ((x29303))
+:extrapreds ((x29304))
+:extrapreds ((x29305))
+:extrapreds ((x29306))
+:extrapreds ((x29307))
+:extrapreds ((x29308))
+:extrapreds ((x29309))
+:extrapreds ((x29310))
+:extrapreds ((x29311))
+:extrapreds ((x29312))
+:extrapreds ((x29313))
+:extrapreds ((x29314))
+:extrapreds ((x29315))
+:extrapreds ((x29316))
+:extrapreds ((x29317))
+:extrapreds ((x29318))
+:extrapreds ((x29319))
+:extrapreds ((x29320))
+:extrapreds ((x29321))
+:extrapreds ((x29322))
+:extrapreds ((x29323))
+:extrapreds ((x29324))
+:extrapreds ((x29325))
+:extrapreds ((x29326))
+:extrapreds ((x29327))
+:extrapreds ((x29328))
+:extrapreds ((x29329))
+:extrapreds ((x29330))
+:extrapreds ((x29331))
+:extrapreds ((x29332))
+:extrapreds ((x29333))
+:extrapreds ((x29334))
+:extrapreds ((x29335))
+:extrapreds ((x29336))
+:extrapreds ((x29337))
+:extrapreds ((x29338))
+:extrapreds ((x29339))
+:extrapreds ((x29340))
+:extrapreds ((x29341))
+:extrapreds ((x29342))
+:extrapreds ((x29343))
+:extrapreds ((x29344))
+:extrapreds ((x29345))
+:extrapreds ((x29346))
+:extrapreds ((x29347))
+:extrapreds ((x29348))
+:extrapreds ((x29349))
+:extrapreds ((x29350))
+:extrapreds ((x29351))
+:extrapreds ((x29352))
+:extrapreds ((x29353))
+:extrapreds ((x29354))
+:extrapreds ((x29355))
+:extrapreds ((x29356))
+:extrapreds ((x29357))
+:extrapreds ((x29358))
+:extrapreds ((x29359))
+:extrapreds ((x29360))
+:extrapreds ((x29361))
+:extrapreds ((x29362))
+:extrapreds ((x29363))
+:extrapreds ((x29364))
+:extrapreds ((x29365))
+:extrapreds ((x29366))
+:extrapreds ((x29367))
+:extrapreds ((x29368))
+:extrapreds ((x29369))
+:extrapreds ((x29370))
+:extrapreds ((x29371))
+:extrapreds ((x29372))
+:extrapreds ((x29373))
+:extrapreds ((x29374))
+:extrapreds ((x29375))
+:extrapreds ((x29376))
+:extrapreds ((x29377))
+:extrapreds ((x29378))
+:extrapreds ((x29379))
+:extrapreds ((x29380))
+:extrapreds ((x29381))
+:extrapreds ((x29382))
+:extrapreds ((x29383))
+:extrapreds ((x29384))
+:extrapreds ((x29385))
+:extrapreds ((x29386))
+:extrapreds ((x29387))
+:extrapreds ((x29388))
+:extrapreds ((x29389))
+:extrapreds ((x29390))
+:extrapreds ((x29391))
+:extrapreds ((x29392))
+:extrapreds ((x29393))
+:extrapreds ((x29394))
+:extrapreds ((x29395))
+:extrapreds ((x29396))
+:extrapreds ((x29397))
+:extrapreds ((x29398))
+:extrapreds ((x29399))
+:extrapreds ((x29400))
+:extrapreds ((x29401))
+:extrapreds ((x29402))
+:extrapreds ((x29403))
+:extrapreds ((x29404))
+:extrapreds ((x29405))
+:extrapreds ((x29406))
+:extrapreds ((x29407))
+:extrapreds ((x29408))
+:extrapreds ((x29409))
+:extrapreds ((x29410))
+:extrapreds ((x29411))
+:extrapreds ((x29412))
+:extrapreds ((x29413))
+:extrapreds ((x29414))
+:extrapreds ((x29415))
+:extrapreds ((x29416))
+:extrapreds ((x29417))
+:extrapreds ((x29418))
+:extrapreds ((x29419))
+:extrapreds ((x29420))
+:extrapreds ((x29421))
+:extrapreds ((x29422))
+:extrapreds ((x29423))
+:extrapreds ((x29424))
+:extrapreds ((x29425))
+:extrapreds ((x29426))
+:extrapreds ((x29427))
+:extrapreds ((x29428))
+:extrapreds ((x29429))
+:extrapreds ((x29430))
+:extrapreds ((x29431))
+:extrapreds ((x29432))
+:extrapreds ((x29433))
+:extrapreds ((x29434))
+:extrapreds ((x29435))
+:extrapreds ((x29436))
+:extrapreds ((x29437))
+:extrapreds ((x29438))
+:extrapreds ((x29439))
+:extrapreds ((x29440))
+:extrapreds ((x29441))
+:extrapreds ((x29442))
+:extrapreds ((x29443))
+:extrapreds ((x29444))
+:extrapreds ((x29445))
+:extrapreds ((x29446))
+:extrapreds ((x29447))
+:extrapreds ((x29448))
+:extrapreds ((x29449))
+:extrapreds ((x29450))
+:extrapreds ((x29451))
+:extrapreds ((x29452))
+:extrapreds ((x29453))
+:extrapreds ((x29454))
+:extrapreds ((x29455))
+:extrapreds ((x29456))
+:extrapreds ((x29457))
+:extrapreds ((x29458))
+:extrapreds ((x29459))
+:extrapreds ((x29460))
+:extrapreds ((x29461))
+:extrapreds ((x29462))
+:extrapreds ((x29463))
+:extrapreds ((x29464))
+:extrapreds ((x29465))
+:extrapreds ((x29466))
+:extrapreds ((x29467))
+:extrapreds ((x29468))
+:extrapreds ((x29469))
+:extrapreds ((x29470))
+:extrapreds ((x29471))
+:extrapreds ((x29472))
+:extrapreds ((x29473))
+:extrapreds ((x29474))
+:extrapreds ((x29475))
+:extrapreds ((x29476))
+:extrapreds ((x29477))
+:extrapreds ((x29478))
+:extrapreds ((x29479))
+:extrapreds ((x29480))
+:extrapreds ((x29481))
+:extrapreds ((x29482))
+:extrapreds ((x29483))
+:extrapreds ((x29484))
+:extrapreds ((x29485))
+:extrapreds ((x29486))
+:extrapreds ((x29487))
+:extrapreds ((x29488))
+:extrapreds ((x29489))
+:extrapreds ((x29490))
+:extrapreds ((x29491))
+:extrapreds ((x29492))
+:extrapreds ((x29493))
+:extrapreds ((x29494))
+:extrapreds ((x29495))
+:extrapreds ((x29496))
+:extrapreds ((x29497))
+:extrapreds ((x29498))
+:extrapreds ((x29499))
+:extrapreds ((x29500))
+:extrapreds ((x29501))
+:extrapreds ((x29502))
+:extrapreds ((x29503))
+:extrapreds ((x29504))
+:extrapreds ((x29505))
+:extrapreds ((x29506))
+:extrapreds ((x29507))
+:extrapreds ((x29508))
+:extrapreds ((x29509))
+:extrapreds ((x29510))
+:extrapreds ((x29511))
+:extrapreds ((x29512))
+:extrapreds ((x29513))
+:extrapreds ((x29514))
+:extrapreds ((x29515))
+:extrapreds ((x29516))
+:extrapreds ((x29517))
+:extrapreds ((x29518))
+:extrapreds ((x29519))
+:extrapreds ((x29520))
+:extrapreds ((x29521))
+:extrapreds ((x29522))
+:extrapreds ((x29523))
+:extrapreds ((x29524))
+:extrapreds ((x29525))
+:extrapreds ((x29526))
+:extrapreds ((x29527))
+:extrapreds ((x29528))
+:extrapreds ((x29529))
+:extrapreds ((x29530))
+:extrapreds ((x29531))
+:extrapreds ((x29532))
+:extrapreds ((x29533))
+:extrapreds ((x29534))
+:extrapreds ((x29535))
+:extrapreds ((x29536))
+:extrapreds ((x29537))
+:extrapreds ((x29538))
+:extrapreds ((x29539))
+:extrapreds ((x29540))
+:extrapreds ((x29541))
+:extrapreds ((x29542))
+:extrapreds ((x29543))
+:extrapreds ((x29544))
+:extrapreds ((x29545))
+:extrapreds ((x29546))
+:extrapreds ((x29547))
+:extrapreds ((x29548))
+:extrapreds ((x29549))
+:extrapreds ((x29550))
+:extrapreds ((x29551))
+:extrapreds ((x29552))
+:extrapreds ((x29553))
+:extrapreds ((x29554))
+:extrapreds ((x29555))
+:extrapreds ((x29556))
+:extrapreds ((x29557))
+:extrapreds ((x29558))
+:extrapreds ((x29559))
+:extrapreds ((x29560))
+:extrapreds ((x29561))
+:extrapreds ((x29562))
+:extrapreds ((x29563))
+:extrapreds ((x29564))
+:extrapreds ((x29565))
+:extrapreds ((x29566))
+:extrapreds ((x29567))
+:extrapreds ((x29568))
+:extrapreds ((x29569))
+:extrapreds ((x29570))
+:extrapreds ((x29571))
+:extrapreds ((x29572))
+:extrapreds ((x29573))
+:extrapreds ((x29574))
+:extrapreds ((x29575))
+:extrapreds ((x29576))
+:extrapreds ((x29577))
+:extrapreds ((x29578))
+:extrapreds ((x29579))
+:extrapreds ((x29580))
+:extrapreds ((x29581))
+:extrapreds ((x29582))
+:extrapreds ((x29583))
+:extrapreds ((x29584))
+:extrapreds ((x29585))
+:extrapreds ((x29586))
+:extrapreds ((x29587))
+:extrapreds ((x29588))
+:extrapreds ((x29589))
+:extrapreds ((x29590))
+:extrapreds ((x29591))
+:extrapreds ((x29592))
+:extrapreds ((x29593))
+:extrapreds ((x29594))
+:extrapreds ((x29595))
+:extrapreds ((x29596))
+:extrapreds ((x29597))
+:extrapreds ((x29598))
+:extrapreds ((x29599))
+:extrapreds ((x29600))
+:extrapreds ((x29601))
+:extrapreds ((x29602))
+:extrapreds ((x29603))
+:extrapreds ((x29604))
+:extrapreds ((x29605))
+:extrapreds ((x29606))
+:extrapreds ((x29607))
+:extrapreds ((x29608))
+:extrapreds ((x29609))
+:extrapreds ((x29610))
+:extrapreds ((x29611))
+:extrapreds ((x29612))
+:extrapreds ((x29613))
+:extrapreds ((x29614))
+:extrapreds ((x29615))
+:extrapreds ((x29616))
+:extrapreds ((x29617))
+:extrapreds ((x29618))
+:extrapreds ((x29619))
+:extrapreds ((x29620))
+:extrapreds ((x29621))
+:extrapreds ((x29622))
+:extrapreds ((x29623))
+:extrapreds ((x29624))
+:extrapreds ((x29625))
+:extrapreds ((x29626))
+:extrapreds ((x29627))
+:extrapreds ((x29628))
+:extrapreds ((x29629))
+:extrapreds ((x29630))
+:extrapreds ((x29631))
+:extrapreds ((x29632))
+:extrapreds ((x29633))
+:extrapreds ((x29634))
+:extrapreds ((x29635))
+:extrapreds ((x29636))
+:extrapreds ((x29637))
+:extrapreds ((x29638))
+:extrapreds ((x29639))
+:extrapreds ((x29640))
+:extrapreds ((x29641))
+:extrapreds ((x29642))
+:extrapreds ((x29643))
+:extrapreds ((x29644))
+:extrapreds ((x29645))
+:extrapreds ((x29646))
+:extrapreds ((x29647))
+:extrapreds ((x29648))
+:extrapreds ((x29649))
+:extrapreds ((x29650))
+:extrapreds ((x29651))
+:extrapreds ((x29652))
+:extrapreds ((x29653))
+:extrapreds ((x29654))
+:extrapreds ((x29655))
+:extrapreds ((x29656))
+:extrapreds ((x29657))
+:extrapreds ((x29658))
+:extrapreds ((x29659))
+:extrapreds ((x29660))
+:extrapreds ((x29661))
+:extrapreds ((x29662))
+:extrapreds ((x29663))
+:extrapreds ((x29664))
+:extrapreds ((x29665))
+:extrapreds ((x29666))
+:extrapreds ((x29667))
+:extrapreds ((x29668))
+:extrapreds ((x29669))
+:extrapreds ((x29670))
+:extrapreds ((x29671))
+:extrapreds ((x29672))
+:extrapreds ((x29673))
+:extrapreds ((x29674))
+:extrapreds ((x29675))
+:extrapreds ((x29676))
+:extrapreds ((x29677))
+:extrapreds ((x29678))
+:extrapreds ((x29679))
+:extrapreds ((x29680))
+:extrapreds ((x29681))
+:extrapreds ((x29682))
+:extrapreds ((x29683))
+:extrapreds ((x29684))
+:extrapreds ((x29685))
+:extrapreds ((x29686))
+:extrapreds ((x29687))
+:extrapreds ((x29688))
+:extrapreds ((x29689))
+:extrapreds ((x29690))
+:extrapreds ((x29691))
+:extrapreds ((x29692))
+:extrapreds ((x29693))
+:extrapreds ((x29694))
+:extrapreds ((x29695))
+:extrapreds ((x29696))
+:extrapreds ((x29697))
+:extrapreds ((x29698))
+:extrapreds ((x29699))
+:extrapreds ((x29700))
+:extrapreds ((x29701))
+:extrapreds ((x29702))
+:extrapreds ((x29703))
+:extrapreds ((x29704))
+:extrapreds ((x29705))
+:extrapreds ((x29706))
+:extrapreds ((x29707))
+:extrapreds ((x29708))
+:extrapreds ((x29709))
+:extrapreds ((x29710))
+:extrapreds ((x29711))
+:extrapreds ((x29712))
+:extrapreds ((x29713))
+:extrapreds ((x29714))
+:extrapreds ((x29715))
+:extrapreds ((x29716))
+:extrapreds ((x29717))
+:extrapreds ((x29718))
+:extrapreds ((x29719))
+:extrapreds ((x29720))
+:extrapreds ((x29721))
+:extrapreds ((x29722))
+:extrapreds ((x29723))
+:extrapreds ((x29724))
+:extrapreds ((x29725))
+:extrapreds ((x29726))
+:extrapreds ((x29727))
+:extrapreds ((x29728))
+:extrapreds ((x29729))
+:extrapreds ((x29730))
+:extrapreds ((x29731))
+:extrapreds ((x29732))
+:extrapreds ((x29733))
+:extrapreds ((x29734))
+:extrapreds ((x29735))
+:extrapreds ((x29736))
+:extrapreds ((x29737))
+:extrapreds ((x29738))
+:extrapreds ((x29739))
+:extrapreds ((x29740))
+:extrapreds ((x29741))
+:extrapreds ((x29742))
+:extrapreds ((x29743))
+:extrapreds ((x29744))
+:extrapreds ((x29745))
+:extrapreds ((x29746))
+:extrapreds ((x29747))
+:extrapreds ((x29748))
+:extrapreds ((x29749))
+:extrapreds ((x29750))
+:extrapreds ((x29751))
+:extrapreds ((x29752))
+:extrapreds ((x29753))
+:extrapreds ((x29754))
+:extrapreds ((x29755))
+:extrapreds ((x29756))
+:extrapreds ((x29757))
+:extrapreds ((x29758))
+:extrapreds ((x29759))
+:extrapreds ((x29760))
+:extrapreds ((x29761))
+:extrapreds ((x29762))
+:extrapreds ((x29763))
+:extrapreds ((x29764))
+:extrapreds ((x29765))
+:extrapreds ((x29766))
+:extrapreds ((x29767))
+:extrapreds ((x29768))
+:extrapreds ((x29769))
+:extrapreds ((x29770))
+:extrapreds ((x29771))
+:extrapreds ((x29772))
+:extrapreds ((x29773))
+:extrapreds ((x29774))
+:extrapreds ((x29775))
+:extrapreds ((x29776))
+:extrapreds ((x29777))
+:extrapreds ((x29778))
+:extrapreds ((x29779))
+:extrapreds ((x29780))
+:extrapreds ((x29781))
+:extrapreds ((x29782))
+:extrapreds ((x29783))
+:extrapreds ((x29784))
+:extrapreds ((x29785))
+:extrapreds ((x29786))
+:extrapreds ((x29787))
+:extrapreds ((x29788))
+:extrapreds ((x29789))
+:extrapreds ((x29790))
+:extrapreds ((x29791))
+:extrapreds ((x29792))
+:extrapreds ((x29793))
+:extrapreds ((x29794))
+:extrapreds ((x29795))
+:extrapreds ((x29796))
+:extrapreds ((x29797))
+:extrapreds ((x29798))
+:extrapreds ((x29799))
+:extrapreds ((x29800))
+:extrapreds ((x29801))
+:extrapreds ((x29802))
+:extrapreds ((x29803))
+:extrapreds ((x29804))
+:extrapreds ((x29805))
+:extrapreds ((x29806))
+:extrapreds ((x29807))
+:extrapreds ((x29808))
+:extrapreds ((x29809))
+:extrapreds ((x29810))
+:extrapreds ((x29811))
+:extrapreds ((x29812))
+:extrapreds ((x29813))
+:extrapreds ((x29814))
+:extrapreds ((x29815))
+:extrapreds ((x29816))
+:extrapreds ((x29817))
+:extrapreds ((x29818))
+:extrapreds ((x29819))
+:extrapreds ((x29820))
+:extrapreds ((x29821))
+:extrapreds ((x29822))
+:extrapreds ((x29823))
+:extrapreds ((x29824))
+:extrapreds ((x29825))
+:extrapreds ((x29826))
+:extrapreds ((x29827))
+:extrapreds ((x29828))
+:extrapreds ((x29829))
+:extrapreds ((x29830))
+:extrapreds ((x29831))
+:extrapreds ((x29832))
+:extrapreds ((x29833))
+:extrapreds ((x29834))
+:extrapreds ((x29835))
+:extrapreds ((x29836))
+:extrapreds ((x29837))
+:extrapreds ((x29838))
+:extrapreds ((x29839))
+:extrapreds ((x29840))
+:extrapreds ((x29841))
+:extrapreds ((x29842))
+:extrapreds ((x29843))
+:extrapreds ((x29844))
+:extrapreds ((x29845))
+:extrapreds ((x29846))
+:extrapreds ((x29847))
+:extrapreds ((x29848))
+:extrapreds ((x29849))
+:extrapreds ((x29850))
+:extrapreds ((x29851))
+:extrapreds ((x29852))
+:extrapreds ((x29853))
+:extrapreds ((x29854))
+:extrapreds ((x29855))
+:extrapreds ((x29856))
+:extrapreds ((x29857))
+:extrapreds ((x29858))
+:extrapreds ((x29859))
+:extrapreds ((x29860))
+:extrapreds ((x29861))
+:extrapreds ((x29862))
+:extrapreds ((x29863))
+:extrapreds ((x29864))
+:extrapreds ((x29865))
+:extrapreds ((x29866))
+:extrapreds ((x29867))
+:extrapreds ((x29868))
+:extrapreds ((x29869))
+:extrapreds ((x29870))
+:extrapreds ((x29871))
+:extrapreds ((x29872))
+:extrapreds ((x29873))
+:extrapreds ((x29874))
+:extrapreds ((x29875))
+:extrapreds ((x29876))
+:extrapreds ((x29877))
+:extrapreds ((x29878))
+:extrapreds ((x29879))
+:extrapreds ((x29880))
+:extrapreds ((x29881))
+:extrapreds ((x29882))
+:extrapreds ((x29883))
+:extrapreds ((x29884))
+:extrapreds ((x29885))
+:extrapreds ((x29886))
+:extrapreds ((x29887))
+:extrapreds ((x29888))
+:extrapreds ((x29889))
+:extrapreds ((x29890))
+:extrapreds ((x29891))
+:extrapreds ((x29892))
+:extrapreds ((x29893))
+:extrapreds ((x29894))
+:extrapreds ((x29895))
+:extrapreds ((x29896))
+:extrapreds ((x29897))
+:extrapreds ((x29898))
+:extrapreds ((x29899))
+:extrapreds ((x29900))
+:extrapreds ((x29901))
+:extrapreds ((x29902))
+:extrapreds ((x29903))
+:extrapreds ((x29904))
+:extrapreds ((x29905))
+:extrapreds ((x29906))
+:extrapreds ((x29907))
+:extrapreds ((x29908))
+:extrapreds ((x29909))
+:extrapreds ((x29910))
+:extrapreds ((x29911))
+:extrapreds ((x29912))
+:extrapreds ((x29913))
+:extrapreds ((x29914))
+:extrapreds ((x29915))
+:extrapreds ((x29916))
+:extrapreds ((x29917))
+:extrapreds ((x29918))
+:extrapreds ((x29919))
+:extrapreds ((x29920))
+:extrapreds ((x29921))
+:extrapreds ((x29922))
+:extrapreds ((x29923))
+:extrapreds ((x29924))
+:extrapreds ((x29925))
+:extrapreds ((x29926))
+:extrapreds ((x29927))
+:extrapreds ((x29928))
+:extrapreds ((x29929))
+:extrapreds ((x29930))
+:extrapreds ((x29931))
+:extrapreds ((x29932))
+:extrapreds ((x29933))
+:extrapreds ((x29934))
+:extrapreds ((x29935))
+:extrapreds ((x29936))
+:extrapreds ((x29937))
+:extrapreds ((x29938))
+:extrapreds ((x29939))
+:extrapreds ((x29940))
+:extrapreds ((x29941))
+:extrapreds ((x29942))
+:extrapreds ((x29943))
+:extrapreds ((x29944))
+:extrapreds ((x29945))
+:extrapreds ((x29946))
+:extrapreds ((x29947))
+:extrapreds ((x29948))
+:extrapreds ((x29949))
+:extrapreds ((x29950))
+:extrapreds ((x29951))
+:extrapreds ((x29952))
+:extrapreds ((x29953))
+:extrapreds ((x29954))
+:extrapreds ((x29955))
+:extrapreds ((x29956))
+:extrapreds ((x29957))
+:extrapreds ((x29958))
+:extrapreds ((x29959))
+:extrapreds ((x29960))
+:extrapreds ((x29961))
+:extrapreds ((x29962))
+:extrapreds ((x29963))
+:extrapreds ((x29964))
+:extrapreds ((x29965))
+:extrapreds ((x29966))
+:extrapreds ((x29967))
+:extrapreds ((x29968))
+:extrapreds ((x29969))
+:extrapreds ((x29970))
+:extrapreds ((x29971))
+:extrapreds ((x29972))
+:extrapreds ((x29973))
+:extrapreds ((x29974))
+:extrapreds ((x29975))
+:extrapreds ((x29976))
+:extrapreds ((x29977))
+:extrapreds ((x29978))
+:extrapreds ((x29979))
+:extrapreds ((x29980))
+:extrapreds ((x29981))
+:extrapreds ((x29982))
+:extrapreds ((x29983))
+:extrapreds ((x29984))
+:extrapreds ((x29985))
+:extrapreds ((x29986))
+:extrapreds ((x29987))
+:extrapreds ((x29988))
+:extrapreds ((x29989))
+:extrapreds ((x29990))
+:extrapreds ((x29991))
+:extrapreds ((x29992))
+:extrapreds ((x29993))
+:extrapreds ((x29994))
+:extrapreds ((x29995))
+:extrapreds ((x29996))
+:extrapreds ((x29997))
+:extrapreds ((x29998))
+:extrapreds ((x29999))
+:extrapreds ((x30000))
+:extrapreds ((x30001))
+:extrapreds ((x30002))
+:extrapreds ((x30003))
+:extrapreds ((x30004))
+:extrapreds ((x30005))
+:extrapreds ((x30006))
+:extrapreds ((x30007))
+:extrapreds ((x30008))
+:extrapreds ((x30009))
+:extrapreds ((x30010))
+:extrapreds ((x30011))
+:extrapreds ((x30012))
+:extrapreds ((x30013))
+:extrapreds ((x30014))
+:extrapreds ((x30015))
+:extrapreds ((x30016))
+:extrapreds ((x30017))
+:extrapreds ((x30018))
+:extrapreds ((x30019))
+:extrapreds ((x30020))
+:extrapreds ((x30021))
+:extrapreds ((x30022))
+:extrapreds ((x30023))
+:extrapreds ((x30024))
+:extrapreds ((x30025))
+:extrapreds ((x30026))
+:extrapreds ((x30027))
+:extrapreds ((x30028))
+:extrapreds ((x30029))
+:extrapreds ((x30030))
+:extrapreds ((x30031))
+:extrapreds ((x30032))
+:extrapreds ((x30033))
+:extrapreds ((x30034))
+:extrapreds ((x30035))
+:extrapreds ((x30036))
+:extrapreds ((x30037))
+:extrapreds ((x30038))
+:extrapreds ((x30039))
+:extrapreds ((x30040))
+:extrapreds ((x30041))
+:extrapreds ((x30042))
+:extrapreds ((x30043))
+:extrapreds ((x30044))
+:extrapreds ((x30045))
+:extrapreds ((x30046))
+:extrapreds ((x30047))
+:extrapreds ((x30048))
+:extrapreds ((x30049))
+:extrapreds ((x30050))
+:extrapreds ((x30051))
+:extrapreds ((x30052))
+:extrapreds ((x30053))
+:extrapreds ((x30054))
+:extrapreds ((x30055))
+:extrapreds ((x30056))
+:extrapreds ((x30057))
+:extrapreds ((x30058))
+:extrapreds ((x30059))
+:extrapreds ((x30060))
+:extrapreds ((x30061))
+:extrapreds ((x30062))
+:extrapreds ((x30063))
+:extrapreds ((x30064))
+:extrapreds ((x30065))
+:extrapreds ((x30066))
+:extrapreds ((x30067))
+:extrapreds ((x30068))
+:extrapreds ((x30069))
+:extrapreds ((x30070))
+:extrapreds ((x30071))
+:extrapreds ((x30072))
+:extrapreds ((x30073))
+:extrapreds ((x30074))
+:extrapreds ((x30075))
+:extrapreds ((x30076))
+:extrapreds ((x30077))
+:extrapreds ((x30078))
+:extrapreds ((x30079))
+:extrapreds ((x30080))
+:extrapreds ((x30081))
+:extrapreds ((x30082))
+:extrapreds ((x30083))
+:extrapreds ((x30084))
+:extrapreds ((x30085))
+:extrapreds ((x30086))
+:extrapreds ((x30087))
+:extrapreds ((x30088))
+:extrapreds ((x30089))
+:extrapreds ((x30090))
+:extrapreds ((x30091))
+:extrapreds ((x30092))
+:extrapreds ((x30093))
+:extrapreds ((x30094))
+:extrapreds ((x30095))
+:extrapreds ((x30096))
+:extrapreds ((x30097))
+:extrapreds ((x30098))
+:extrapreds ((x30099))
+:extrapreds ((x30100))
+:extrapreds ((x30101))
+:extrapreds ((x30102))
+:extrapreds ((x30103))
+:extrapreds ((x30104))
+:extrapreds ((x30105))
+:extrapreds ((x30106))
+:extrapreds ((x30107))
+:extrapreds ((x30108))
+:extrapreds ((x30109))
+:extrapreds ((x30110))
+:extrapreds ((x30111))
+:extrapreds ((x30112))
+:extrapreds ((x30113))
+:extrapreds ((x30114))
+:extrapreds ((x30115))
+:extrapreds ((x30116))
+:extrapreds ((x30117))
+:extrapreds ((x30118))
+:extrapreds ((x30119))
+:extrapreds ((x30120))
+:extrapreds ((x30121))
+:extrapreds ((x30122))
+:extrapreds ((x30123))
+:extrapreds ((x30124))
+:extrapreds ((x30125))
+:extrapreds ((x30126))
+:extrapreds ((x30127))
+:extrapreds ((x30128))
+:extrapreds ((x30129))
+:extrapreds ((x30130))
+:extrapreds ((x30131))
+:extrapreds ((x30132))
+:extrapreds ((x30133))
+:extrapreds ((x30134))
+:extrapreds ((x30135))
+:extrapreds ((x30136))
+:extrapreds ((x30137))
+:extrapreds ((x30138))
+:extrapreds ((x30139))
+:extrapreds ((x30140))
+:extrapreds ((x30141))
+:extrapreds ((x30142))
+:extrapreds ((x30143))
+:extrapreds ((x30144))
+:extrapreds ((x30145))
+:extrapreds ((x30146))
+:extrapreds ((x30147))
+:extrapreds ((x30148))
+:extrapreds ((x30149))
+:extrapreds ((x30150))
+:extrapreds ((x30151))
+:extrapreds ((x30152))
+:extrapreds ((x30153))
+:extrapreds ((x30154))
+:extrapreds ((x30155))
+:extrapreds ((x30156))
+:extrapreds ((x30157))
+:extrapreds ((x30158))
+:extrapreds ((x30159))
+:extrapreds ((x30160))
+:extrapreds ((x30161))
+:extrapreds ((x30162))
+:extrapreds ((x30163))
+:extrapreds ((x30164))
+:extrapreds ((x30165))
+:extrapreds ((x30166))
+:extrapreds ((x30167))
+:extrapreds ((x30168))
+:extrapreds ((x30169))
+:extrapreds ((x30170))
+:extrapreds ((x30171))
+:extrapreds ((x30172))
+:extrapreds ((x30173))
+:extrapreds ((x30174))
+:extrapreds ((x30175))
+:extrapreds ((x30176))
+:extrapreds ((x30177))
+:extrapreds ((x30178))
+:extrapreds ((x30179))
+:extrapreds ((x30180))
+:extrapreds ((x30181))
+:extrapreds ((x30182))
+:extrapreds ((x30183))
+:extrapreds ((x30184))
+:extrapreds ((x30185))
+:extrapreds ((x30186))
+:extrapreds ((x30187))
+:extrapreds ((x30188))
+:extrapreds ((x30189))
+:extrapreds ((x30190))
+:extrapreds ((x30191))
+:extrapreds ((x30192))
+:extrapreds ((x30193))
+:extrapreds ((x30194))
+:extrapreds ((x30195))
+:extrapreds ((x30196))
+:extrapreds ((x30197))
+:extrapreds ((x30198))
+:extrapreds ((x30199))
+:extrapreds ((x30200))
+:extrapreds ((x30201))
+:extrapreds ((x30202))
+:extrapreds ((x30203))
+:extrapreds ((x30204))
+:extrapreds ((x30205))
+:extrapreds ((x30206))
+:extrapreds ((x30207))
+:extrapreds ((x30208))
+:extrapreds ((x30209))
+:extrapreds ((x30210))
+:extrapreds ((x30211))
+:extrapreds ((x30212))
+:extrapreds ((x30213))
+:extrapreds ((x30214))
+:extrapreds ((x30215))
+:extrapreds ((x30216))
+:extrapreds ((x30217))
+:extrapreds ((x30218))
+:extrapreds ((x30219))
+:extrapreds ((x30220))
+:extrapreds ((x30221))
+:extrapreds ((x30222))
+:extrapreds ((x30223))
+:extrapreds ((x30224))
+:extrapreds ((x30225))
+:extrapreds ((x30226))
+:extrapreds ((x30227))
+:extrapreds ((x30228))
+:extrapreds ((x30229))
+:extrapreds ((x30230))
+:extrapreds ((x30231))
+:extrapreds ((x30232))
+:extrapreds ((x30233))
+:extrapreds ((x30234))
+:extrapreds ((x30235))
+:extrapreds ((x30236))
+:extrapreds ((x30237))
+:extrapreds ((x30238))
+:extrapreds ((x30239))
+:extrapreds ((x30240))
+:extrapreds ((x30241))
+:extrapreds ((x30242))
+:extrapreds ((x30243))
+:extrapreds ((x30244))
+:extrapreds ((x30245))
+:extrapreds ((x30246))
+:extrapreds ((x30247))
+:extrapreds ((x30248))
+:extrapreds ((x30249))
+:extrapreds ((x30250))
+:extrapreds ((x30251))
+:extrapreds ((x30252))
+:extrapreds ((x30253))
+:extrapreds ((x30254))
+:extrapreds ((x30255))
+:extrapreds ((x30256))
+:extrapreds ((x30257))
+:extrapreds ((x30258))
+:extrapreds ((x30259))
+:extrapreds ((x30260))
+:extrapreds ((x30261))
+:extrapreds ((x30262))
+:extrapreds ((x30263))
+:extrapreds ((x30264))
+:extrapreds ((x30265))
+:extrapreds ((x30266))
+:extrapreds ((x30267))
+:extrapreds ((x30268))
+:extrapreds ((x30269))
+:extrapreds ((x30270))
+:extrapreds ((x30271))
+:extrapreds ((x30272))
+:extrapreds ((x30273))
+:extrapreds ((x30274))
+:extrapreds ((x30275))
+:extrapreds ((x30276))
+:extrapreds ((x30277))
+:extrapreds ((x30278))
+:extrapreds ((x30279))
+:extrapreds ((x30280))
+:extrapreds ((x30281))
+:extrapreds ((x30282))
+:extrapreds ((x30283))
+:extrapreds ((x30284))
+:extrapreds ((x30285))
+:extrapreds ((x30286))
+:extrapreds ((x30287))
+:extrapreds ((x30288))
+:extrapreds ((x30289))
+:extrapreds ((x30290))
+:extrapreds ((x30291))
+:extrapreds ((x30292))
+:extrapreds ((x30293))
+:extrapreds ((x30294))
+:extrapreds ((x30295))
+:extrapreds ((x30296))
+:extrapreds ((x30297))
+:extrapreds ((x30298))
+:extrapreds ((x30299))
+:extrapreds ((x30300))
+:extrapreds ((x30301))
+:extrapreds ((x30302))
+:extrapreds ((x30303))
+:extrapreds ((x30304))
+:extrapreds ((x30305))
+:extrapreds ((x30306))
+:extrapreds ((x30307))
+:extrapreds ((x30308))
+:extrapreds ((x30309))
+:extrapreds ((x30310))
+:extrapreds ((x30311))
+:extrapreds ((x30312))
+:extrapreds ((x30313))
+:extrapreds ((x30314))
+:extrapreds ((x30315))
+:extrapreds ((x30316))
+:extrapreds ((x30317))
+:extrapreds ((x30318))
+:extrapreds ((x30319))
+:extrapreds ((x30320))
+:extrapreds ((x30321))
+:extrapreds ((x30322))
+:extrapreds ((x30323))
+:extrapreds ((x30324))
+:extrapreds ((x30325))
+:extrapreds ((x30326))
+:extrapreds ((x30327))
+:extrapreds ((x30328))
+:extrapreds ((x30329))
+:extrapreds ((x30330))
+:extrapreds ((x30331))
+:extrapreds ((x30332))
+:extrapreds ((x30333))
+:extrapreds ((x30334))
+:extrapreds ((x30335))
+:extrapreds ((x30336))
+:extrapreds ((x30337))
+:extrapreds ((x30338))
+:extrapreds ((x30339))
+:extrapreds ((x30340))
+:extrapreds ((x30341))
+:extrapreds ((x30342))
+:extrapreds ((x30343))
+:extrapreds ((x30344))
+:extrapreds ((x30345))
+:extrapreds ((x30346))
+:extrapreds ((x30347))
+:extrapreds ((x30348))
+:extrapreds ((x30349))
+:extrapreds ((x30350))
+:extrapreds ((x30351))
+:extrapreds ((x30352))
+:extrapreds ((x30353))
+:extrapreds ((x30354))
+:extrapreds ((x30355))
+:extrapreds ((x30356))
+:extrapreds ((x30357))
+:extrapreds ((x30358))
+:extrapreds ((x30359))
+:extrapreds ((x30360))
+:extrapreds ((x30361))
+:extrapreds ((x30362))
+:extrapreds ((x30363))
+:extrapreds ((x30364))
+:extrapreds ((x30365))
+:extrapreds ((x30366))
+:extrapreds ((x30367))
+:extrapreds ((x30368))
+:extrapreds ((x30369))
+:extrapreds ((x30370))
+:extrapreds ((x30371))
+:extrapreds ((x30372))
+:extrapreds ((x30373))
+:extrapreds ((x30374))
+:extrapreds ((x30375))
+:extrapreds ((x30376))
+:extrapreds ((x30377))
+:extrapreds ((x30378))
+:extrapreds ((x30379))
+:extrapreds ((x30380))
+:extrapreds ((x30381))
+:extrapreds ((x30382))
+:extrapreds ((x30383))
+:extrapreds ((x30384))
+:extrapreds ((x30385))
+:extrapreds ((x30386))
+:extrapreds ((x30387))
+:extrapreds ((x30388))
+:extrapreds ((x30389))
+:extrapreds ((x30390))
+:extrapreds ((x30391))
+:extrapreds ((x30392))
+:extrapreds ((x30393))
+:extrapreds ((x30394))
+:extrapreds ((x30395))
+:extrapreds ((x30396))
+:extrapreds ((x30397))
+:extrapreds ((x30398))
+:extrapreds ((x30399))
+:extrapreds ((x30400))
+:extrapreds ((x30401))
+:extrapreds ((x30402))
+:extrapreds ((x30403))
+:extrapreds ((x30404))
+:extrapreds ((x30405))
+:extrapreds ((x30406))
+:extrapreds ((x30407))
+:extrapreds ((x30408))
+:extrapreds ((x30409))
+:extrapreds ((x30410))
+:extrapreds ((x30411))
+:extrapreds ((x30412))
+:extrapreds ((x30413))
+:extrapreds ((x30414))
+:extrapreds ((x30415))
+:extrapreds ((x30416))
+:extrapreds ((x30417))
+:extrapreds ((x30418))
+:extrapreds ((x30419))
+:extrapreds ((x30420))
+:extrapreds ((x30421))
+:extrapreds ((x30422))
+:extrapreds ((x30423))
+:extrapreds ((x30424))
+:extrapreds ((x30425))
+:extrapreds ((x30426))
+:extrapreds ((x30427))
+:extrapreds ((x30428))
+:extrapreds ((x30429))
+:extrapreds ((x30430))
+:extrapreds ((x30431))
+:extrapreds ((x30432))
+:extrapreds ((x30433))
+:extrapreds ((x30434))
+:extrapreds ((x30435))
+:extrapreds ((x30436))
+:extrapreds ((x30437))
+:extrapreds ((x30438))
+:extrapreds ((x30439))
+:extrapreds ((x30440))
+:extrapreds ((x30441))
+:extrapreds ((x30442))
+:extrapreds ((x30443))
+:extrapreds ((x30444))
+:extrapreds ((x30445))
+:extrapreds ((x30446))
+:extrapreds ((x30447))
+:extrapreds ((x30448))
+:extrapreds ((x30449))
+:extrapreds ((x30450))
+:extrapreds ((x30451))
+:extrapreds ((x30452))
+:extrapreds ((x30453))
+:extrapreds ((x30454))
+:extrapreds ((x30455))
+:extrapreds ((x30456))
+:extrapreds ((x30457))
+:extrapreds ((x30458))
+:extrapreds ((x30459))
+:extrapreds ((x30460))
+:extrapreds ((x30461))
+:extrapreds ((x30462))
+:extrapreds ((x30463))
+:extrapreds ((x30464))
+:extrapreds ((x30465))
+:extrapreds ((x30466))
+:extrapreds ((x30467))
+:extrapreds ((x30468))
+:extrapreds ((x30469))
+:extrapreds ((x30470))
+:extrapreds ((x30471))
+:extrapreds ((x30472))
+:extrapreds ((x30473))
+:extrapreds ((x30474))
+:extrapreds ((x30475))
+:extrapreds ((x30476))
+:extrapreds ((x30477))
+:extrapreds ((x30478))
+:extrapreds ((x30479))
+:extrapreds ((x30480))
+:extrapreds ((x30481))
+:extrapreds ((x30482))
+:extrapreds ((x30483))
+:extrapreds ((x30484))
+:extrapreds ((x30485))
+:extrapreds ((x30486))
+:extrapreds ((x30487))
+:extrapreds ((x30488))
+:extrapreds ((x30489))
+:extrapreds ((x30490))
+:extrapreds ((x30491))
+:extrapreds ((x30492))
+:extrapreds ((x30493))
+:extrapreds ((x30494))
+:extrapreds ((x30495))
+:extrapreds ((x30496))
+:extrapreds ((x30497))
+:extrapreds ((x30498))
+:extrapreds ((x30499))
+:extrapreds ((x30500))
+:extrapreds ((x30501))
+:extrapreds ((x30502))
+:extrapreds ((x30503))
+:extrapreds ((x30504))
+:extrapreds ((x30505))
+:extrapreds ((x30506))
+:extrapreds ((x30507))
+:extrapreds ((x30508))
+:extrapreds ((x30509))
+:extrapreds ((x30510))
+:extrapreds ((x30511))
+:extrapreds ((x30512))
+:extrapreds ((x30513))
+:extrapreds ((x30514))
+:extrapreds ((x30515))
+:extrapreds ((x30516))
+:extrapreds ((x30517))
+:extrapreds ((x30518))
+:extrapreds ((x30519))
+:extrapreds ((x30520))
+:extrapreds ((x30521))
+:extrapreds ((x30522))
+:extrapreds ((x30523))
+:extrapreds ((x30524))
+:extrapreds ((x30525))
+:extrapreds ((x30526))
+:extrapreds ((x30527))
+:extrapreds ((x30528))
+:extrapreds ((x30529))
+:extrapreds ((x30530))
+:extrapreds ((x30531))
+:extrapreds ((x30532))
+:extrapreds ((x30533))
+:extrapreds ((x30534))
+:extrapreds ((x30535))
+:extrapreds ((x30536))
+:extrapreds ((x30537))
+:extrapreds ((x30538))
+:extrapreds ((x30539))
+:extrapreds ((x30540))
+:extrapreds ((x30541))
+:extrapreds ((x30542))
+:extrapreds ((x30543))
+:extrapreds ((x30544))
+:extrapreds ((x30545))
+:extrapreds ((x30546))
+:extrapreds ((x30547))
+:extrapreds ((x30548))
+:extrapreds ((x30549))
+:extrapreds ((x30550))
+:extrapreds ((x30551))
+:extrapreds ((x30552))
+:extrapreds ((x30553))
+:extrapreds ((x30554))
+:extrapreds ((x30555))
+:extrapreds ((x30556))
+:extrapreds ((x30557))
+:extrapreds ((x30558))
+:extrapreds ((x30559))
+:extrapreds ((x30560))
+:extrapreds ((x30561))
+:extrapreds ((x30562))
+:extrapreds ((x30563))
+:extrapreds ((x30564))
+:extrapreds ((x30565))
+:extrapreds ((x30566))
+:extrapreds ((x30567))
+:extrapreds ((x30568))
+:extrapreds ((x30569))
+:extrapreds ((x30570))
+:extrapreds ((x30571))
+:extrapreds ((x30572))
+:extrapreds ((x30573))
+:extrapreds ((x30574))
+:extrapreds ((x30575))
+:extrapreds ((x30576))
+:extrapreds ((x30577))
+:extrapreds ((x30578))
+:extrapreds ((x30579))
+:extrapreds ((x30580))
+:extrapreds ((x30581))
+:extrapreds ((x30582))
+:extrapreds ((x30583))
+:extrapreds ((x30584))
+:extrapreds ((x30585))
+:extrapreds ((x30586))
+:extrapreds ((x30587))
+:extrapreds ((x30588))
+:extrapreds ((x30589))
+:extrapreds ((x30590))
+:extrapreds ((x30591))
+:extrapreds ((x30592))
+:extrapreds ((x30593))
+:extrapreds ((x30594))
+:extrapreds ((x30595))
+:extrapreds ((x30596))
+:extrapreds ((x30597))
+:extrapreds ((x30598))
+:extrapreds ((x30599))
+:extrapreds ((x30600))
+:extrapreds ((x30601))
+:extrapreds ((x30602))
+:extrapreds ((x30603))
+:extrapreds ((x30604))
+:extrapreds ((x30605))
+:extrapreds ((x30606))
+:extrapreds ((x30607))
+:extrapreds ((x30608))
+:extrapreds ((x30609))
+:extrapreds ((x30610))
+:extrapreds ((x30611))
+:extrapreds ((x30612))
+:extrapreds ((x30613))
+:extrapreds ((x30614))
+:extrapreds ((x30615))
+:extrapreds ((x30616))
+:extrapreds ((x30617))
+:extrapreds ((x30618))
+:extrapreds ((x30619))
+:extrapreds ((x30620))
+:extrapreds ((x30621))
+:extrapreds ((x30622))
+:extrapreds ((x30623))
+:extrapreds ((x30624))
+:extrapreds ((x30625))
+:extrapreds ((x30626))
+:extrapreds ((x30627))
+:extrapreds ((x30628))
+:extrapreds ((x30629))
+:extrapreds ((x30630))
+:extrapreds ((x30631))
+:extrapreds ((x30632))
+:extrapreds ((x30633))
+:extrapreds ((x30634))
+:extrapreds ((x30635))
+:extrapreds ((x30636))
+:extrapreds ((x30637))
+:extrapreds ((x30638))
+:extrapreds ((x30639))
+:extrapreds ((x30640))
+:extrapreds ((x30641))
+:extrapreds ((x30642))
+:extrapreds ((x30643))
+:extrapreds ((x30644))
+:extrapreds ((x30645))
+:extrapreds ((x30646))
+:extrapreds ((x30647))
+:extrapreds ((x30648))
+:extrapreds ((x30649))
+:extrapreds ((x30650))
+:extrapreds ((x30651))
+:extrapreds ((x30652))
+:extrapreds ((x30653))
+:extrapreds ((x30654))
+:extrapreds ((x30655))
+:extrapreds ((x30656))
+:extrapreds ((x30657))
+:extrapreds ((x30658))
+:extrapreds ((x30659))
+:extrapreds ((x30660))
+:extrapreds ((x30661))
+:extrapreds ((x30662))
+:extrapreds ((x30663))
+:extrapreds ((x30664))
+:extrapreds ((x30665))
+:extrapreds ((x30666))
+:extrapreds ((x30667))
+:extrapreds ((x30668))
+:extrapreds ((x30669))
+:extrapreds ((x30670))
+:extrapreds ((x30671))
+:extrapreds ((x30672))
+:extrapreds ((x30673))
+:extrapreds ((x30674))
+:extrapreds ((x30675))
+:extrapreds ((x30676))
+:extrapreds ((x30677))
+:extrapreds ((x30678))
+:extrapreds ((x30679))
+:extrapreds ((x30680))
+:extrapreds ((x30681))
+:extrapreds ((x30682))
+:extrapreds ((x30683))
+:extrapreds ((x30684))
+:extrapreds ((x30685))
+:extrapreds ((x30686))
+:extrapreds ((x30687))
+:extrapreds ((x30688))
+:extrapreds ((x30689))
+:extrapreds ((x30690))
+:extrapreds ((x30691))
+:extrapreds ((x30692))
+:extrapreds ((x30693))
+:extrapreds ((x30694))
+:extrapreds ((x30695))
+:extrapreds ((x30696))
+:extrapreds ((x30697))
+:extrapreds ((x30698))
+:extrapreds ((x30699))
+:extrapreds ((x30700))
+:extrapreds ((x30701))
+:extrapreds ((x30702))
+:extrapreds ((x30703))
+:extrapreds ((x30704))
+:extrapreds ((x30705))
+:extrapreds ((x30706))
+:extrapreds ((x30707))
+:extrapreds ((x30708))
+:extrapreds ((x30709))
+:extrapreds ((x30710))
+:extrapreds ((x30711))
+:extrapreds ((x30712))
+:extrapreds ((x30713))
+:extrapreds ((x30714))
+:extrapreds ((x30715))
+:extrapreds ((x30716))
+:extrapreds ((x30717))
+:extrapreds ((x30718))
+:extrapreds ((x30719))
+:extrapreds ((x30720))
+:extrapreds ((x30721))
+:extrapreds ((x30722))
+:extrapreds ((x30723))
+:extrapreds ((x30724))
+:extrapreds ((x30725))
+:extrapreds ((x30726))
+:extrapreds ((x30727))
+:extrapreds ((x30728))
+:extrapreds ((x30729))
+:extrapreds ((x30730))
+:extrapreds ((x30731))
+:extrapreds ((x30732))
+:extrapreds ((x30733))
+:extrapreds ((x30734))
+:extrapreds ((x30735))
+:extrapreds ((x30736))
+:extrapreds ((x30737))
+:extrapreds ((x30738))
+:extrapreds ((x30739))
+:extrapreds ((x30740))
+:extrapreds ((x30741))
+:extrapreds ((x30742))
+:extrapreds ((x30743))
+:extrapreds ((x30744))
+:extrapreds ((x30745))
+:extrapreds ((x30746))
+:extrapreds ((x30747))
+:extrapreds ((x30748))
+:extrapreds ((x30749))
+:extrapreds ((x30750))
+:extrapreds ((x30751))
+:extrapreds ((x30752))
+:extrapreds ((x30753))
+:extrapreds ((x30754))
+:extrapreds ((x30755))
+:extrapreds ((x30756))
+:extrapreds ((x30757))
+:extrapreds ((x30758))
+:extrapreds ((x30759))
+:extrapreds ((x30760))
+:extrapreds ((x30761))
+:extrapreds ((x30762))
+:extrapreds ((x30763))
+:extrapreds ((x30764))
+:extrapreds ((x30765))
+:extrapreds ((x30766))
+:extrapreds ((x30767))
+:extrapreds ((x30768))
+:extrapreds ((x30769))
+:extrapreds ((x30770))
+:extrapreds ((x30771))
+:extrapreds ((x30772))
+:extrapreds ((x30773))
+:extrapreds ((x30774))
+:extrapreds ((x30775))
+:extrapreds ((x30776))
+:extrapreds ((x30777))
+:extrapreds ((x30778))
+:extrapreds ((x30779))
+:extrapreds ((x30780))
+:extrapreds ((x30781))
+:extrapreds ((x30782))
+:extrapreds ((x30783))
+:extrapreds ((x30784))
+:extrapreds ((x30785))
+:extrapreds ((x30786))
+:extrapreds ((x30787))
+:extrapreds ((x30788))
+:extrapreds ((x30789))
+:extrapreds ((x30790))
+:extrapreds ((x30791))
+:extrapreds ((x30792))
+:extrapreds ((x30793))
+:extrapreds ((x30794))
+:extrapreds ((x30795))
+:extrapreds ((x30796))
+:extrapreds ((x30797))
+:extrapreds ((x30798))
+:extrapreds ((x30799))
+:extrapreds ((x30800))
+:extrapreds ((x30801))
+:extrapreds ((x30802))
+:extrapreds ((x30803))
+:extrapreds ((x30804))
+:extrapreds ((x30805))
+:extrapreds ((x30806))
+:extrapreds ((x30807))
+:extrapreds ((x30808))
+:extrapreds ((x30809))
+:extrapreds ((x30810))
+:extrapreds ((x30811))
+:extrapreds ((x30812))
+:extrapreds ((x30813))
+:extrapreds ((x30814))
+:extrapreds ((x30815))
+:extrapreds ((x30816))
+:extrapreds ((x30817))
+:extrapreds ((x30818))
+:extrapreds ((x30819))
+:extrapreds ((x30820))
+:extrapreds ((x30821))
+:extrapreds ((x30822))
+:extrapreds ((x30823))
+:extrapreds ((x30824))
+:extrapreds ((x30825))
+:extrapreds ((x30826))
+:extrapreds ((x30827))
+:extrapreds ((x30828))
+:extrapreds ((x30829))
+:extrapreds ((x30830))
+:extrapreds ((x30831))
+:extrapreds ((x30832))
+:extrapreds ((x30833))
+:extrapreds ((x30834))
+:extrapreds ((x30835))
+:extrapreds ((x30836))
+:extrapreds ((x30837))
+:extrapreds ((x30838))
+:extrapreds ((x30839))
+:extrapreds ((x30840))
+:extrapreds ((x30841))
+:extrapreds ((x30842))
+:extrapreds ((x30843))
+:extrapreds ((x30844))
+:extrapreds ((x30845))
+:extrapreds ((x30846))
+:extrapreds ((x30847))
+:extrapreds ((x30848))
+:extrapreds ((x30849))
+:extrapreds ((x30850))
+:extrapreds ((x30851))
+:extrapreds ((x30852))
+:extrapreds ((x30853))
+:extrapreds ((x30854))
+:extrapreds ((x30855))
+:extrapreds ((x30856))
+:extrapreds ((x30857))
+:extrapreds ((x30858))
+:extrapreds ((x30859))
+:extrapreds ((x30860))
+:extrapreds ((x30861))
+:extrapreds ((x30862))
+:extrapreds ((x30863))
+:extrapreds ((x30864))
+:extrapreds ((x30865))
+:extrapreds ((x30866))
+:extrapreds ((x30867))
+:extrapreds ((x30868))
+:extrapreds ((x30869))
+:extrapreds ((x30870))
+:extrapreds ((x30871))
+:extrapreds ((x30872))
+:extrapreds ((x30873))
+:extrapreds ((x30874))
+:extrapreds ((x30875))
+:extrapreds ((x30876))
+:extrapreds ((x30877))
+:extrapreds ((x30878))
+:extrapreds ((x30879))
+:extrapreds ((x30880))
+:extrapreds ((x30881))
+:extrapreds ((x30882))
+:extrapreds ((x30883))
+:extrapreds ((x30884))
+:extrapreds ((x30885))
+:extrapreds ((x30886))
+:extrapreds ((x30887))
+:extrapreds ((x30888))
+:extrapreds ((x30889))
+:extrapreds ((x30890))
+:extrapreds ((x30891))
+:extrapreds ((x30892))
+:extrapreds ((x30893))
+:extrapreds ((x30894))
+:extrapreds ((x30895))
+:extrapreds ((x30896))
+:extrapreds ((x30897))
+:extrapreds ((x30898))
+:extrapreds ((x30899))
+:extrapreds ((x30900))
+:extrapreds ((x30901))
+:extrapreds ((x30902))
+:extrapreds ((x30903))
+:extrapreds ((x30904))
+:extrapreds ((x30905))
+:extrapreds ((x30906))
+:extrapreds ((x30907))
+:extrapreds ((x30908))
+:extrapreds ((x30909))
+:extrapreds ((x30910))
+:extrapreds ((x30911))
+:extrapreds ((x30912))
+:extrapreds ((x30913))
+:extrapreds ((x30914))
+:extrapreds ((x30915))
+:extrapreds ((x30916))
+:extrapreds ((x30917))
+:extrapreds ((x30918))
+:extrapreds ((x30919))
+:extrapreds ((x30920))
+:extrapreds ((x30921))
+:extrapreds ((x30922))
+:extrapreds ((x30923))
+:extrapreds ((x30924))
+:extrapreds ((x30925))
+:extrapreds ((x30926))
+:extrapreds ((x30927))
+:extrapreds ((x30928))
+:extrapreds ((x30929))
+:extrapreds ((x30930))
+:extrapreds ((x30931))
+:extrapreds ((x30932))
+:extrapreds ((x30933))
+:extrapreds ((x30934))
+:extrapreds ((x30935))
+:extrapreds ((x30936))
+:extrapreds ((x30937))
+:extrapreds ((x30938))
+:extrapreds ((x30939))
+:extrapreds ((x30940))
+:extrapreds ((x30941))
+:extrapreds ((x30942))
+:extrapreds ((x30943))
+:extrapreds ((x30944))
+:extrapreds ((x30945))
+:extrapreds ((x30946))
+:extrapreds ((x30947))
+:extrapreds ((x30948))
+:extrapreds ((x30949))
+:extrapreds ((x30950))
+:extrapreds ((x30951))
+:extrapreds ((x30952))
+:extrapreds ((x30953))
+:extrapreds ((x30954))
+:extrapreds ((x30955))
+:extrapreds ((x30956))
+:extrapreds ((x30957))
+:extrapreds ((x30958))
+:extrapreds ((x30959))
+:extrapreds ((x30960))
+:extrapreds ((x30961))
+:extrapreds ((x30962))
+:extrapreds ((x30963))
+:extrapreds ((x30964))
+:extrapreds ((x30965))
+:extrapreds ((x30966))
+:extrapreds ((x30967))
+:extrapreds ((x30968))
+:extrapreds ((x30969))
+:extrapreds ((x30970))
+:extrapreds ((x30971))
+:extrapreds ((x30972))
+:extrapreds ((x30973))
+:extrapreds ((x30974))
+:extrapreds ((x30975))
+:extrapreds ((x30976))
+:extrapreds ((x30977))
+:extrapreds ((x30978))
+:extrapreds ((x30979))
+:extrapreds ((x30980))
+:extrapreds ((x30981))
+:extrapreds ((x30982))
+:extrapreds ((x30983))
+:extrapreds ((x30984))
+:extrapreds ((x30985))
+:extrapreds ((x30986))
+:extrapreds ((x30987))
+:extrapreds ((x30988))
+:extrapreds ((x30989))
+:extrapreds ((x30990))
+:extrapreds ((x30991))
+:extrapreds ((x30992))
+:extrapreds ((x30993))
+:extrapreds ((x30994))
+:extrapreds ((x30995))
+:extrapreds ((x30996))
+:extrapreds ((x30997))
+:extrapreds ((x30998))
+:extrapreds ((x30999))
+:extrapreds ((x31000))
+:extrapreds ((x31001))
+:extrapreds ((x31002))
+:extrapreds ((x31003))
+:extrapreds ((x31004))
+:extrapreds ((x31005))
+:extrapreds ((x31006))
+:extrapreds ((x31007))
+:extrapreds ((x31008))
+:extrapreds ((x31009))
+:extrapreds ((x31010))
+:extrapreds ((x31011))
+:extrapreds ((x31012))
+:extrapreds ((x31013))
+:extrapreds ((x31014))
+:extrapreds ((x31015))
+:extrapreds ((x31016))
+:extrapreds ((x31017))
+:extrapreds ((x31018))
+:extrapreds ((x31019))
+:extrapreds ((x31020))
+:extrapreds ((x31021))
+:extrapreds ((x31022))
+:extrapreds ((x31023))
+:extrapreds ((x31024))
+:extrapreds ((x31025))
+:extrapreds ((x31026))
+:extrapreds ((x31027))
+:extrapreds ((x31028))
+:extrapreds ((x31029))
+:extrapreds ((x31030))
+:extrapreds ((x31031))
+:extrapreds ((x31032))
+:extrapreds ((x31033))
+:extrapreds ((x31034))
+:extrapreds ((x31035))
+:extrapreds ((x31036))
+:extrapreds ((x31037))
+:extrapreds ((x31038))
+:extrapreds ((x31039))
+:extrapreds ((x31040))
+:extrapreds ((x31041))
+:extrapreds ((x31042))
+:extrapreds ((x31043))
+:extrapreds ((x31044))
+:extrapreds ((x31045))
+:extrapreds ((x31046))
+:extrapreds ((x31047))
+:extrapreds ((x31048))
+:extrapreds ((x31049))
+:extrapreds ((x31050))
+:extrapreds ((x31051))
+:extrapreds ((x31052))
+:extrapreds ((x31053))
+:extrapreds ((x31054))
+:extrapreds ((x31055))
+:extrapreds ((x31056))
+:extrapreds ((x31057))
+:extrapreds ((x31058))
+:extrapreds ((x31059))
+:extrapreds ((x31060))
+:extrapreds ((x31061))
+:extrapreds ((x31062))
+:extrapreds ((x31063))
+:extrapreds ((x31064))
+:extrapreds ((x31065))
+:extrapreds ((x31066))
+:extrapreds ((x31067))
+:extrapreds ((x31068))
+:extrapreds ((x31069))
+:extrapreds ((x31070))
+:extrapreds ((x31071))
+:extrapreds ((x31072))
+:extrapreds ((x31073))
+:extrapreds ((x31074))
+:extrapreds ((x31075))
+:extrapreds ((x31076))
+:extrapreds ((x31077))
+:extrapreds ((x31078))
+:extrapreds ((x31079))
+:extrapreds ((x31080))
+:extrapreds ((x31081))
+:extrapreds ((x31082))
+:extrapreds ((x31083))
+:extrapreds ((x31084))
+:extrapreds ((x31085))
+:extrapreds ((x31086))
+:extrapreds ((x31087))
+:extrapreds ((x31088))
+:extrapreds ((x31089))
+:extrapreds ((x31090))
+:extrapreds ((x31091))
+:extrapreds ((x31092))
+:extrapreds ((x31093))
+:extrapreds ((x31094))
+:extrapreds ((x31095))
+:extrapreds ((x31096))
+:extrapreds ((x31097))
+:extrapreds ((x31098))
+:extrapreds ((x31099))
+:extrapreds ((x31100))
+:extrapreds ((x31101))
+:extrapreds ((x31102))
+:extrapreds ((x31103))
+:extrapreds ((x31104))
+:extrapreds ((x31105))
+:extrapreds ((x31106))
+:extrapreds ((x31107))
+:extrapreds ((x31108))
+:extrapreds ((x31109))
+:extrapreds ((x31110))
+:extrapreds ((x31111))
+:extrapreds ((x31112))
+:extrapreds ((x31113))
+:extrapreds ((x31114))
+:extrapreds ((x31115))
+:extrapreds ((x31116))
+:extrapreds ((x31117))
+:extrapreds ((x31118))
+:extrapreds ((x31119))
+:extrapreds ((x31120))
+:extrapreds ((x31121))
+:extrapreds ((x31122))
+:extrapreds ((x31123))
+:extrapreds ((x31124))
+:extrapreds ((x31125))
+:extrapreds ((x31126))
+:extrapreds ((x31127))
+:extrapreds ((x31128))
+:extrapreds ((x31129))
+:extrapreds ((x31130))
+:extrapreds ((x31131))
+:extrapreds ((x31132))
+:extrapreds ((x31133))
+:extrapreds ((x31134))
+:extrapreds ((x31135))
+:extrapreds ((x31136))
+:extrapreds ((x31137))
+:extrapreds ((x31138))
+:extrapreds ((x31139))
+:extrapreds ((x31140))
+:extrapreds ((x31141))
+:extrapreds ((x31142))
+:extrapreds ((x31143))
+:extrapreds ((x31144))
+:extrapreds ((x31145))
+:extrapreds ((x31146))
+:extrapreds ((x31147))
+:extrapreds ((x31148))
+:extrapreds ((x31149))
+:extrapreds ((x31150))
+:extrapreds ((x31151))
+:extrapreds ((x31152))
+:extrapreds ((x31153))
+:extrapreds ((x31154))
+:extrapreds ((x31155))
+:extrapreds ((x31156))
+:extrapreds ((x31157))
+:extrapreds ((x31158))
+:extrapreds ((x31159))
+:extrapreds ((x31160))
+:extrapreds ((x31161))
+:extrapreds ((x31162))
+:extrapreds ((x31163))
+:extrapreds ((x31164))
+:extrapreds ((x31165))
+:extrapreds ((x31166))
+:extrapreds ((x31167))
+:extrapreds ((x31168))
+:extrapreds ((x31169))
+:extrapreds ((x31170))
+:extrapreds ((x31171))
+:extrapreds ((x31172))
+:extrapreds ((x31173))
+:extrapreds ((x31174))
+:extrapreds ((x31175))
+:extrapreds ((x31176))
+:extrapreds ((x31177))
+:extrapreds ((x31178))
+:extrapreds ((x31179))
+:extrapreds ((x31180))
+:extrapreds ((x31181))
+:extrapreds ((x31182))
+:extrapreds ((x31183))
+:extrapreds ((x31184))
+:extrapreds ((x31185))
+:extrapreds ((x31186))
+:extrapreds ((x31187))
+:extrapreds ((x31188))
+:extrapreds ((x31189))
+:extrapreds ((x31190))
+:extrapreds ((x31191))
+:extrapreds ((x31192))
+:extrapreds ((x31193))
+:extrapreds ((x31194))
+:extrapreds ((x31195))
+:extrapreds ((x31196))
+:extrapreds ((x31197))
+:extrapreds ((x31198))
+:extrapreds ((x31199))
+:extrapreds ((x31200))
+:extrapreds ((x31201))
+:extrapreds ((x31202))
+:extrapreds ((x31203))
+:extrapreds ((x31204))
+:extrapreds ((x31205))
+:extrapreds ((x31206))
+:extrapreds ((x31207))
+:extrapreds ((x31208))
+:extrapreds ((x31209))
+:extrapreds ((x31210))
+:extrapreds ((x31211))
+:extrapreds ((x31212))
+:extrapreds ((x31213))
+:extrapreds ((x31214))
+:extrapreds ((x31215))
+:extrapreds ((x31216))
+:extrapreds ((x31217))
+:extrapreds ((x31218))
+:extrapreds ((x31219))
+:extrapreds ((x31220))
+:extrapreds ((x31221))
+:extrapreds ((x31222))
+:extrapreds ((x31223))
+:extrapreds ((x31224))
+:extrapreds ((x31225))
+:extrapreds ((x31226))
+:extrapreds ((x31227))
+:extrapreds ((x31228))
+:extrapreds ((x31229))
+:extrapreds ((x31230))
+:extrapreds ((x31231))
+:extrapreds ((x31232))
+:extrapreds ((x31233))
+:extrapreds ((x31234))
+:extrapreds ((x31235))
+:extrapreds ((x31236))
+:extrapreds ((x31237))
+:extrapreds ((x31238))
+:extrapreds ((x31239))
+:extrapreds ((x31240))
+:extrapreds ((x31241))
+:extrapreds ((x31242))
+:extrapreds ((x31243))
+:extrapreds ((x31244))
+:extrapreds ((x31245))
+:extrapreds ((x31246))
+:extrapreds ((x31247))
+:extrapreds ((x31248))
+:extrapreds ((x31249))
+:extrapreds ((x31250))
+:extrapreds ((x31251))
+:extrapreds ((x31252))
+:extrapreds ((x31253))
+:extrapreds ((x31254))
+:extrapreds ((x31255))
+:extrapreds ((x31256))
+:extrapreds ((x31257))
+:extrapreds ((x31258))
+:extrapreds ((x31259))
+:extrapreds ((x31260))
+:extrapreds ((x31261))
+:extrapreds ((x31262))
+:extrapreds ((x31263))
+:extrapreds ((x31264))
+:extrapreds ((x31265))
+:extrapreds ((x31266))
+:extrapreds ((x31267))
+:extrapreds ((x31268))
+:extrapreds ((x31269))
+:extrapreds ((x31270))
+:extrapreds ((x31271))
+:extrapreds ((x31272))
+:extrapreds ((x31273))
+:extrapreds ((x31274))
+:extrapreds ((x31275))
+:extrapreds ((x31276))
+:extrapreds ((x31277))
+:extrapreds ((x31278))
+:extrapreds ((x31279))
+:extrapreds ((x31280))
+:extrapreds ((x31281))
+:extrapreds ((x31282))
+:extrapreds ((x31283))
+:extrapreds ((x31284))
+:extrapreds ((x31285))
+:extrapreds ((x31286))
+:extrapreds ((x31287))
+:extrapreds ((x31288))
+:extrapreds ((x31289))
+:extrapreds ((x31290))
+:extrapreds ((x31291))
+:extrapreds ((x31292))
+:extrapreds ((x31293))
+:extrapreds ((x31294))
+:extrapreds ((x31295))
+:extrapreds ((x31296))
+:extrapreds ((x31297))
+:extrapreds ((x31298))
+:extrapreds ((x31299))
+:extrapreds ((x31300))
+:extrapreds ((x31301))
+:extrapreds ((x31302))
+:extrapreds ((x31303))
+:extrapreds ((x31304))
+:extrapreds ((x31305))
+:extrapreds ((x31306))
+:extrapreds ((x31307))
+:extrapreds ((x31308))
+:extrapreds ((x31309))
+:extrapreds ((x31310))
+:extrapreds ((x31311))
+:extrapreds ((x31312))
+:extrapreds ((x31313))
+:extrapreds ((x31314))
+:extrapreds ((x31315))
+:extrapreds ((x31316))
+:extrapreds ((x31317))
+:extrapreds ((x31318))
+:extrapreds ((x31319))
+:extrapreds ((x31320))
+:extrapreds ((x31321))
+:extrapreds ((x31322))
+:extrapreds ((x31323))
+:extrapreds ((x31324))
+:extrapreds ((x31325))
+:extrapreds ((x31326))
+:extrapreds ((x31327))
+:extrapreds ((x31328))
+:extrapreds ((x31329))
+:extrapreds ((x31330))
+:extrapreds ((x31331))
+:extrapreds ((x31332))
+:extrapreds ((x31333))
+:extrapreds ((x31334))
+:extrapreds ((x31335))
+:extrapreds ((x31336))
+:extrapreds ((x31337))
+:extrapreds ((x31338))
+:extrapreds ((x31339))
+:extrapreds ((x31340))
+:extrapreds ((x31341))
+:extrapreds ((x31342))
+:extrapreds ((x31343))
+:extrapreds ((x31344))
+:extrapreds ((x31345))
+:extrapreds ((x31346))
+:extrapreds ((x31347))
+:extrapreds ((x31348))
+:extrapreds ((x31349))
+:extrapreds ((x31350))
+:extrapreds ((x31351))
+:extrapreds ((x31352))
+:extrapreds ((x31353))
+:extrapreds ((x31354))
+:extrapreds ((x31355))
+:extrapreds ((x31356))
+:extrapreds ((x31357))
+:extrapreds ((x31358))
+:extrapreds ((x31359))
+:extrapreds ((x31360))
+:extrapreds ((x31361))
+:extrapreds ((x31362))
+:extrapreds ((x31363))
+:extrapreds ((x31364))
+:extrapreds ((x31365))
+:extrapreds ((x31366))
+:extrapreds ((x31367))
+:extrapreds ((x31368))
+:extrapreds ((x31369))
+:extrapreds ((x31370))
+:extrapreds ((x31371))
+:extrapreds ((x31372))
+:extrapreds ((x31373))
+:extrapreds ((x31374))
+:extrapreds ((x31375))
+:extrapreds ((x31376))
+:extrapreds ((x31377))
+:extrapreds ((x31378))
+:extrapreds ((x31379))
+:extrapreds ((x31380))
+:extrapreds ((x31381))
+:extrapreds ((x31382))
+:extrapreds ((x31383))
+:extrapreds ((x31384))
+:extrapreds ((x31385))
+:extrapreds ((x31386))
+:extrapreds ((x31387))
+:extrapreds ((x31388))
+:extrapreds ((x31389))
+:extrapreds ((x31390))
+:extrapreds ((x31391))
+:extrapreds ((x31392))
+:extrapreds ((x31393))
+:extrapreds ((x31394))
+:extrapreds ((x31395))
+:extrapreds ((x31396))
+:extrapreds ((x31397))
+:extrapreds ((x31398))
+:extrapreds ((x31399))
+:extrapreds ((x31400))
+:extrapreds ((x31401))
+:extrapreds ((x31402))
+:extrapreds ((x31403))
+:extrapreds ((x31404))
+:extrapreds ((x31405))
+:extrapreds ((x31406))
+:extrapreds ((x31407))
+:extrapreds ((x31408))
+:extrapreds ((x31409))
+:extrapreds ((x31410))
+:extrapreds ((x31411))
+:extrapreds ((x31412))
+:extrapreds ((x31413))
+:extrapreds ((x31414))
+:extrapreds ((x31415))
+:extrapreds ((x31416))
+:extrapreds ((x31417))
+:extrapreds ((x31418))
+:extrapreds ((x31419))
+:extrapreds ((x31420))
+:extrapreds ((x31421))
+:extrapreds ((x31422))
+:extrapreds ((x31423))
+:extrapreds ((x31424))
+:extrapreds ((x31425))
+:extrapreds ((x31426))
+:extrapreds ((x31427))
+:extrapreds ((x31428))
+:extrapreds ((x31429))
+:extrapreds ((x31430))
+:extrapreds ((x31431))
+:extrapreds ((x31432))
+:extrapreds ((x31433))
+:extrapreds ((x31434))
+:extrapreds ((x31435))
+:extrapreds ((x31436))
+:extrapreds ((x31437))
+:extrapreds ((x31438))
+:extrapreds ((x31439))
+:extrapreds ((x31440))
+:extrapreds ((x31441))
+:extrapreds ((x31442))
+:extrapreds ((x31443))
+:extrapreds ((x31444))
+:extrapreds ((x31445))
+:extrapreds ((x31446))
+:extrapreds ((x31447))
+:extrapreds ((x31448))
+:extrapreds ((x31449))
+:extrapreds ((x31450))
+:extrapreds ((x31451))
+:extrapreds ((x31452))
+:extrapreds ((x31453))
+:extrapreds ((x31454))
+:extrapreds ((x31455))
+:extrapreds ((x31456))
+:extrapreds ((x31457))
+:extrapreds ((x31458))
+:extrapreds ((x31459))
+:extrapreds ((x31460))
+:extrapreds ((x31461))
+:extrapreds ((x31462))
+:extrapreds ((x31463))
+:extrapreds ((x31464))
+:extrapreds ((x31465))
+:extrapreds ((x31466))
+:extrapreds ((x31467))
+:extrapreds ((x31468))
+:extrapreds ((x31469))
+:extrapreds ((x31470))
+:extrapreds ((x31471))
+:extrapreds ((x31472))
+:extrapreds ((x31473))
+:extrapreds ((x31474))
+:extrapreds ((x31475))
+:extrapreds ((x31476))
+:extrapreds ((x31477))
+:extrapreds ((x31478))
+:extrapreds ((x31479))
+:extrapreds ((x31480))
+:extrapreds ((x31481))
+:extrapreds ((x31482))
+:extrapreds ((x31483))
+:extrapreds ((x31484))
+:extrapreds ((x31485))
+:extrapreds ((x31486))
+:extrapreds ((x31487))
+:extrapreds ((x31488))
+:extrapreds ((x31489))
+:extrapreds ((x31490))
+:extrapreds ((x31491))
+:extrapreds ((x31492))
+:extrapreds ((x31493))
+:extrapreds ((x31494))
+:extrapreds ((x31495))
+:extrapreds ((x31496))
+:extrapreds ((x31497))
+:extrapreds ((x31498))
+:extrapreds ((x31499))
+:extrapreds ((x31500))
+:extrapreds ((x31501))
+:extrapreds ((x31502))
+:extrapreds ((x31503))
+:extrapreds ((x31504))
+:extrapreds ((x31505))
+:extrapreds ((x31506))
+:extrapreds ((x31507))
+:extrapreds ((x31508))
+:extrapreds ((x31509))
+:extrapreds ((x31510))
+:extrapreds ((x31511))
+:extrapreds ((x31512))
+:extrapreds ((x31513))
+:extrapreds ((x31514))
+:extrapreds ((x31515))
+:extrapreds ((x31516))
+:extrapreds ((x31517))
+:extrapreds ((x31518))
+:extrapreds ((x31519))
+:extrapreds ((x31520))
+:extrapreds ((x31521))
+:extrapreds ((x31522))
+:extrapreds ((x31523))
+:extrapreds ((x31524))
+:extrapreds ((x31525))
+:extrapreds ((x31526))
+:extrapreds ((x31527))
+:extrapreds ((x31528))
+:extrapreds ((x31529))
+:extrapreds ((x31530))
+:extrapreds ((x31531))
+:extrapreds ((x31532))
+:extrapreds ((x31533))
+:extrapreds ((x31534))
+:extrapreds ((x31535))
+:extrapreds ((x31536))
+:extrapreds ((x31537))
+:extrapreds ((x31538))
+:extrapreds ((x31539))
+:extrapreds ((x31540))
+:extrapreds ((x31541))
+:extrapreds ((x31542))
+:extrapreds ((x31543))
+:extrapreds ((x31544))
+:extrapreds ((x31545))
+:extrapreds ((x31546))
+:extrapreds ((x31547))
+:extrapreds ((x31548))
+:extrapreds ((x31549))
+:extrapreds ((x31550))
+:extrapreds ((x31551))
+:extrapreds ((x31552))
+:extrapreds ((x31553))
+:extrapreds ((x31554))
+:extrapreds ((x31555))
+:extrapreds ((x31556))
+:extrapreds ((x31557))
+:extrapreds ((x31558))
+:extrapreds ((x31559))
+:extrapreds ((x31560))
+:extrapreds ((x31561))
+:extrapreds ((x31562))
+:extrapreds ((x31563))
+:extrapreds ((x31564))
+:extrapreds ((x31565))
+:extrapreds ((x31566))
+:extrapreds ((x31567))
+:extrapreds ((x31568))
+:extrapreds ((x31569))
+:extrapreds ((x31570))
+:extrapreds ((x31571))
+:extrapreds ((x31572))
+:extrapreds ((x31573))
+:extrapreds ((x31574))
+:extrapreds ((x31575))
+:extrapreds ((x31576))
+:extrapreds ((x31577))
+:extrapreds ((x31578))
+:extrapreds ((x31579))
+:extrapreds ((x31580))
+:extrapreds ((x31581))
+:extrapreds ((x31582))
+:extrapreds ((x31583))
+:extrapreds ((x31584))
+:extrapreds ((x31585))
+:extrapreds ((x31586))
+:extrapreds ((x31587))
+:extrapreds ((x31588))
+:extrapreds ((x31589))
+:extrapreds ((x31590))
+:extrapreds ((x31591))
+:extrapreds ((x31592))
+:extrapreds ((x31593))
+:extrapreds ((x31594))
+:extrapreds ((x31595))
+:extrapreds ((x31596))
+:extrapreds ((x31597))
+:extrapreds ((x31598))
+:extrapreds ((x31599))
+:extrapreds ((x31600))
+:extrapreds ((x31601))
+:extrapreds ((x31602))
+:extrapreds ((x31603))
+:extrapreds ((x31604))
+:extrapreds ((x31605))
+:extrapreds ((x31606))
+:extrapreds ((x31607))
+:extrapreds ((x31608))
+:extrapreds ((x31609))
+:extrapreds ((x31610))
+:extrapreds ((x31611))
+:extrapreds ((x31612))
+:extrapreds ((x31613))
+:extrapreds ((x31614))
+:extrapreds ((x31615))
+:extrapreds ((x31616))
+:extrapreds ((x31617))
+:extrapreds ((x31618))
+:extrapreds ((x31619))
+:extrapreds ((x31620))
+:extrapreds ((x31621))
+:extrapreds ((x31622))
+:extrapreds ((x31623))
+:extrapreds ((x31624))
+:extrapreds ((x31625))
+:extrapreds ((x31626))
+:extrapreds ((x31627))
+:extrapreds ((x31628))
+:extrapreds ((x31629))
+:extrapreds ((x31630))
+:extrapreds ((x31631))
+:extrapreds ((x31632))
+:extrapreds ((x31633))
+:extrapreds ((x31634))
+:extrapreds ((x31635))
+:extrapreds ((x31636))
+:extrapreds ((x31637))
+:extrapreds ((x31638))
+:extrapreds ((x31639))
+:extrapreds ((x31640))
+:extrapreds ((x31641))
+:extrapreds ((x31642))
+:extrapreds ((x31643))
+:extrapreds ((x31644))
+:extrapreds ((x31645))
+:extrapreds ((x31646))
+:extrapreds ((x31647))
+:extrapreds ((x31648))
+:extrapreds ((x31649))
+:extrapreds ((x31650))
+:extrapreds ((x31651))
+:extrapreds ((x31652))
+:extrapreds ((x31653))
+:extrapreds ((x31654))
+:extrapreds ((x31655))
+:extrapreds ((x31656))
+:extrapreds ((x31657))
+:extrapreds ((x31658))
+:extrapreds ((x31659))
+:extrapreds ((x31660))
+:extrapreds ((x31661))
+:extrapreds ((x31662))
+:extrapreds ((x31663))
+:extrapreds ((x31664))
+:extrapreds ((x31665))
+:extrapreds ((x31666))
+:extrapreds ((x31667))
+:extrapreds ((x31668))
+:extrapreds ((x31669))
+:extrapreds ((x31670))
+:extrapreds ((x31671))
+:extrapreds ((x31672))
+:extrapreds ((x31673))
+:extrapreds ((x31674))
+:extrapreds ((x31675))
+:extrapreds ((x31676))
+:extrapreds ((x31677))
+:extrapreds ((x31678))
+:extrapreds ((x31679))
+:extrapreds ((x31680))
+:extrapreds ((x31681))
+:extrapreds ((x31682))
+:extrapreds ((x31683))
+:extrapreds ((x31684))
+:extrapreds ((x31685))
+:extrapreds ((x31686))
+:extrapreds ((x31687))
+:extrapreds ((x31688))
+:extrapreds ((x31689))
+:extrapreds ((x31690))
+:extrapreds ((x31691))
+:extrapreds ((x31692))
+:extrapreds ((x31693))
+:extrapreds ((x31694))
+:extrapreds ((x31695))
+:extrapreds ((x31696))
+:extrapreds ((x31697))
+:extrapreds ((x31698))
+:extrapreds ((x31699))
+:extrapreds ((x31700))
+:extrapreds ((x31701))
+:extrapreds ((x31702))
+:extrapreds ((x31703))
+:extrapreds ((x31704))
+:extrapreds ((x31705))
+:extrapreds ((x31706))
+:extrapreds ((x31707))
+:extrapreds ((x31708))
+:extrapreds ((x31709))
+:extrapreds ((x31710))
+:extrapreds ((x31711))
+:extrapreds ((x31712))
+:extrapreds ((x31713))
+:extrapreds ((x31714))
+:extrapreds ((x31715))
+:extrapreds ((x31716))
+:extrapreds ((x31717))
+:extrapreds ((x31718))
+:extrapreds ((x31719))
+:extrapreds ((x31720))
+:extrapreds ((x31721))
+:extrapreds ((x31722))
+:extrapreds ((x31723))
+:extrapreds ((x31724))
+:extrapreds ((x31725))
+:extrapreds ((x31726))
+:extrapreds ((x31727))
+:extrapreds ((x31728))
+:extrapreds ((x31729))
+:extrapreds ((x31730))
+:extrapreds ((x31731))
+:extrapreds ((x31732))
+:extrapreds ((x31733))
+:extrapreds ((x31734))
+:extrapreds ((x31735))
+:extrapreds ((x31736))
+:extrapreds ((x31737))
+:extrapreds ((x31738))
+:extrapreds ((x31739))
+:extrapreds ((x31740))
+:extrapreds ((x31741))
+:extrapreds ((x31742))
+:extrapreds ((x31743))
+:extrapreds ((x31744))
+:extrapreds ((x31745))
+:extrapreds ((x31746))
+:extrapreds ((x31747))
+:extrapreds ((x31748))
+:extrapreds ((x31749))
+:extrapreds ((x31750))
+:extrapreds ((x31751))
+:extrapreds ((x31752))
+:extrapreds ((x31753))
+:extrapreds ((x31754))
+:extrapreds ((x31755))
+:extrapreds ((x31756))
+:extrapreds ((x31757))
+:extrapreds ((x31758))
+:extrapreds ((x31759))
+:extrapreds ((x31760))
+:extrapreds ((x31761))
+:extrapreds ((x31762))
+:extrapreds ((x31763))
+:extrapreds ((x31764))
+:extrapreds ((x31765))
+:extrapreds ((x31766))
+:extrapreds ((x31767))
+:extrapreds ((x31768))
+:extrapreds ((x31769))
+:extrapreds ((x31770))
+:extrapreds ((x31771))
+:extrapreds ((x31772))
+:extrapreds ((x31773))
+:extrapreds ((x31774))
+:extrapreds ((x31775))
+:extrapreds ((x31776))
+:extrapreds ((x31777))
+:extrapreds ((x31778))
+:extrapreds ((x31779))
+:extrapreds ((x31780))
+:extrapreds ((x31781))
+:extrapreds ((x31782))
+:extrapreds ((x31783))
+:extrapreds ((x31784))
+:extrapreds ((x31785))
+:extrapreds ((x31786))
+:extrapreds ((x31787))
+:extrapreds ((x31788))
+:extrapreds ((x31789))
+:extrapreds ((x31790))
+:extrapreds ((x31791))
+:extrapreds ((x31792))
+:extrapreds ((x31793))
+:extrapreds ((x31794))
+:extrapreds ((x31795))
+:extrapreds ((x31796))
+:extrapreds ((x31797))
+:extrapreds ((x31798))
+:extrapreds ((x31799))
+:extrapreds ((x31800))
+:extrapreds ((x31801))
+:extrapreds ((x31802))
+:extrapreds ((x31803))
+:extrapreds ((x31804))
+:extrapreds ((x31805))
+:extrapreds ((x31806))
+:extrapreds ((x31807))
+:extrapreds ((x31808))
+:extrapreds ((x31809))
+:extrapreds ((x31810))
+:extrapreds ((x31811))
+:extrapreds ((x31812))
+:extrapreds ((x31813))
+:extrapreds ((x31814))
+:extrapreds ((x31815))
+:extrapreds ((x31816))
+:extrapreds ((x31817))
+:extrapreds ((x31818))
+:extrapreds ((x31819))
+:extrapreds ((x31820))
+:extrapreds ((x31821))
+:extrapreds ((x31822))
+:extrapreds ((x31823))
+:extrapreds ((x31824))
+:extrapreds ((x31825))
+:extrapreds ((x31826))
+:extrapreds ((x31827))
+:extrapreds ((x31828))
+:extrapreds ((x31829))
+:extrapreds ((x31830))
+:extrapreds ((x31831))
+:extrapreds ((x31832))
+:extrapreds ((x31833))
+:extrapreds ((x31834))
+:extrapreds ((x31835))
+:extrapreds ((x31836))
+:extrapreds ((x31837))
+:extrapreds ((x31838))
+:extrapreds ((x31839))
+:extrapreds ((x31840))
+:extrapreds ((x31841))
+:extrapreds ((x31842))
+:extrapreds ((x31843))
+:extrapreds ((x31844))
+:extrapreds ((x31845))
+:extrapreds ((x31846))
+:extrapreds ((x31847))
+:extrapreds ((x31848))
+:extrapreds ((x31849))
+:extrapreds ((x31850))
+:extrapreds ((x31851))
+:extrapreds ((x31852))
+:extrapreds ((x31853))
+:extrapreds ((x31854))
+:extrapreds ((x31855))
+:extrapreds ((x31856))
+:extrapreds ((x31857))
+:extrapreds ((x31858))
+:extrapreds ((x31859))
+:extrapreds ((x31860))
+:extrapreds ((x31861))
+:extrapreds ((x31862))
+:extrapreds ((x31863))
+:extrapreds ((x31864))
+:extrapreds ((x31865))
+:extrapreds ((x31866))
+:extrapreds ((x31867))
+:extrapreds ((x31868))
+:extrapreds ((x31869))
+:extrapreds ((x31870))
+:extrapreds ((x31871))
+:extrapreds ((x31872))
+:extrapreds ((x31873))
+:extrapreds ((x31874))
+:extrapreds ((x31875))
+:extrapreds ((x31876))
+:extrapreds ((x31877))
+:extrapreds ((x31878))
+:extrapreds ((x31879))
+:extrapreds ((x31880))
+:extrapreds ((x31881))
+:extrapreds ((x31882))
+:extrapreds ((x31883))
+:extrapreds ((x31884))
+:extrapreds ((x31885))
+:extrapreds ((x31886))
+:extrapreds ((x31887))
+:extrapreds ((x31888))
+:extrapreds ((x31889))
+:extrapreds ((x31890))
+:extrapreds ((x31891))
+:extrapreds ((x31892))
+:extrapreds ((x31893))
+:extrapreds ((x31894))
+:extrapreds ((x31895))
+:extrapreds ((x31896))
+:extrapreds ((x31897))
+:extrapreds ((x31898))
+:extrapreds ((x31899))
+:extrapreds ((x31900))
+:extrapreds ((x31901))
+:extrapreds ((x31902))
+:extrapreds ((x31903))
+:extrapreds ((x31904))
+:extrapreds ((x31905))
+:extrapreds ((x31906))
+:extrapreds ((x31907))
+:extrapreds ((x31908))
+:extrapreds ((x31909))
+:extrapreds ((x31910))
+:extrapreds ((x31911))
+:extrapreds ((x31912))
+:extrapreds ((x31913))
+:extrapreds ((x31914))
+:extrapreds ((x31915))
+:extrapreds ((x31916))
+:extrapreds ((x31917))
+:extrapreds ((x31918))
+:extrapreds ((x31919))
+:extrapreds ((x31920))
+:extrapreds ((x31921))
+:extrapreds ((x31922))
+:extrapreds ((x31923))
+:extrapreds ((x31924))
+:extrapreds ((x31925))
+:extrapreds ((x31926))
+:extrapreds ((x31927))
+:extrapreds ((x31928))
+:extrapreds ((x31929))
+:extrapreds ((x31930))
+:extrapreds ((x31931))
+:extrapreds ((x31932))
+:extrapreds ((x31933))
+:assumption (or (not x10709) x28312)
+:assumption (or x20755 (not x12870))
+:assumption (or x17359 x13856)
+:assumption (or x13362 x30113 x805)
+:assumption (or x14396 (not x26210))
+:assumption (or (not x2288) (not x579))
+:assumption (or x16025 x13897)
+:assumption (or x12242 x22872)
+:assumption (or x17060 x16767 (not x8853) (not x14634) (not x23504))
+:assumption (or (not x1233) (not x21120))
+:assumption (or (not x29240) x11735)
+:assumption (or (not x29499) (not x27537) x17038)
+:assumption (or x15430 x29236)
+:assumption (or (not x12919) (not x16266))
+:assumption (or x8883 (not x15012))
+:assumption (or x26036 (not x14201))
+:assumption (or x9098 (not x8002))
+:assumption (or x5989 x26035)
+:assumption (or x20960 (not x10953))
+:assumption (or (not x31083) (not x9282))
+:assumption (or (not x9770) x29292 (not x2817) x23050 (not x19094))
+:assumption (or (not x18236) x13756 x4838 (not x23877) (not x11712) (not x18693) x9008 x290)
+:assumption (or x28328 (not x24318) x3738)
+:assumption (or (not x1042) x24783)
+:assumption (or (not x16550) x16587)
+:assumption (or x20911 (not x14267))
+:assumption (or x28676 x8602 (not x11438))
+:assumption (or x6294 (not x5822))
+:assumption (or x16729 (not x8180))
+:assumption (or x22299 (not x21855))
+:assumption (or x16190 (not x31126) x8229 x11833 (not x6715) x14631 (not x2190) (not x18509) (not x29506))
+:assumption (or (not x2427) x10654)
+:assumption (or (not x28885) (not x4787))
+:assumption (or x28732 x27024)
+:assumption (or x827 x19796 x23777)
+:assumption (or (not x27666) (not x16880) x982 x12228 (not x21202) x5135)
+:assumption (or (not x10867) x8237)
+:assumption (or (not x18055) x13656)
+:assumption (or (not x9640) x7997)
+:assumption (or (not x17512) x7269)
+:assumption (or x15078 x23890)
+:assumption (or (not x21725) (not x10481))
+:assumption (or (not x7530) x972)
+:assumption (or (not x22166) x22604 x9175)
+:assumption (or x29301 x19112)
+:assumption (or x7871 (not x22839))
+:assumption (or (not x17809) (not x25713))
+:assumption (or x13576 x11343 (not x9531) (not x11732))
+:assumption (or (not x18782) x16910 (not x21831))
+:assumption (or (not x29716) x29611)
+:assumption (or x30554 x16025 x30954)
+:assumption (or x15149 (not x15230))
+:assumption (or (not x24592) x16591)
+:assumption (or (not x9177) x15643)
+:assumption (or (not x15795) (not x25130))
+:assumption (or (not x25350) (not x11042))
+:assumption (or (not x25659) (not x13121) x7099)
+:assumption (or x8221 x25659)
+:assumption (or (not x16265) (not x27032))
+:assumption (or x10117 (not x24932))
+:assumption (or (not x8783) x25943)
+:assumption (or x5528 (not x29068))
+:assumption (or (not x1722) (not x16781))
+:assumption (or x27514 x19428)
+:assumption (or x20631 (not x202))
+:assumption (or x10566 x21750)
+:assumption (or (not x4943) (not x8634) x1052)
+:assumption (or x17350 (not x11691))
+:assumption (or (not x6864) x23596)
+:assumption (or x7931 x28838)
+:assumption (or x15224 (not x15949))
+:assumption (or (not x20082) (not x20336) x13920)
+:assumption (or x20979 (not x21627) (not x30184) x15453)
+:assumption (or (not x30777) x8002)
+:assumption (or x1417 x21913)
+:assumption (or x17188 x12697)
+:assumption (or (not x17854) x27227 x22202 x12749 (not x8898) (not x10988))
+:assumption (or x1018 (not x1175))
+:assumption (or x2707 x5970 (not x18055) x5058 x21285 x23203)
+:assumption (or x3938 x15005)
+:assumption (or (not x24352) x20794)
+:assumption (or (not x16756) (not x27012))
+:assumption (or x14040 x5465)
+:assumption (or (not x30262) (not x22701) x7754 (not x27547) x5374)
+:assumption (or x16065 (not x21432))
+:assumption (or (not x20177) (not x7120))
+:assumption (or x24546 (not x27456))
+:assumption (or (not x31456) x4181)
+:assumption (or x5528 x10335 x1135)
+:assumption (or (not x18651) (not x23704))
+:assumption (or (not x28364) x8002 (not x29391))
+:assumption (or (not x12611) x10948)
+:assumption (or (not x24460) (not x702))
+:assumption (or (not x1261) (not x30230))
+:assumption (or x3392 (not x14652))
+:assumption (or (not x14689) (not x18694))
+:assumption (or x22852 (not x30364))
+:assumption (or (not x23718) x16160)
+:assumption (or x12564 (not x24163))
+:assumption (or (not x22256) (not x6399))
+:assumption (or (not x13669) (not x23507))
+:assumption (or (not x17467) (not x20087))
+:assumption (or (not x8631) (not x12408))
+:assumption (or x22013 x16270)
+:assumption (or (not x23377) x3254)
+:assumption (or x26750 (not x4203))
+:assumption (or x20573 x10951)
+:assumption (or x29188 x6408)
+:assumption (or x10119 (not x11009))
+:assumption (or (not x24450) x5886 (not x25804) x16618 (not x26920))
+:assumption (or x29422 x27128)
+:assumption (or (not x1535) x26479 x6609 x24828 (not x8710) x31903 x31392 x288)
+:assumption (or (not x17064) (not x15426))
+:assumption (or (not x4281) (not x614) x30138 x26897)
+:assumption (or (not x10639) (not x28598))
+:assumption (or (not x16304) x25366 (not x20307) x8660)
+:assumption (or x1393 x24876 x14870)
+:assumption (or (not x25800) x21272)
+:assumption (or x28973 (not x6497))
+:assumption (or x29482 (not x19633))
+:assumption (or (not x13282) (not x30887))
+:assumption (or (not x7096) (not x23610))
+:assumption (or x22147 x8043)
+:assumption (or (not x267) x17867)
+:assumption (or (not x13401) x7144 (not x12615))
+:assumption (or x23244 (not x3205))
+:assumption (or (not x9439) x6444 (not x28443))
+:assumption (or (not x27915) (not x5522))
+:assumption (or x5386 (not x12535))
+:assumption (or x30764 x17091 x31149 x11390 (not x10169) (not x31259) x17770 (not x16468) x2633 x31273 x5227 x18631)
+:assumption (or x14978 x19344 (not x7892) (not x26003) x3800 x15863 (not x8994) (not x20617) x30122 (not x20853) x29126 (not x3642))
+:assumption (or x28893 x3012)
+:assumption (or x13856 (not x26147))
+:assumption (or (not x29721) (not x8943))
+:assumption (or x8171 (not x13928))
+:assumption (or x28129 x4722 x11504 x230 (not x13076) (not x609))
+:assumption (or (not x13277) (not x4651))
+:assumption (or (not x21934) (not x9893))
+:assumption (or x14330 x422)
+:assumption (or (not x8002) x25299)
+:assumption (or (not x11077) (not x13437))
+:assumption (or (not x28912) x29649 x23886 (not x23939))
+:assumption (or x3341 x20037)
+:assumption (or x1098 x21546)
+:assumption (or x9842 x255)
+:assumption (or x11598 x18647)
+:assumption (or (not x8782) x8874)
+:assumption (or x29601 (not x30109))
+:assumption (or (not x18110) (not x19914))
+:assumption (or x13547 x27154)
+:assumption (or x21476 x18419)
+:assumption (or (not x27497) (not x14898))
+:assumption (or x7286 x11060)
+:assumption (or x4627 (not x10060) x30113)
+:assumption (or (not x18434) (not x23399) x24724)
+:assumption (or x8886 x9801)
+:assumption (or (not x9457) x1116)
+:assumption (or x2949 (not x7303))
+:assumption (or (not x17351) x19413)
+:assumption (or x30975 x17444)
+:assumption (or x29875 x10852)
+:assumption (or x7975 (not x27463))
+:assumption (or x13680 x12193)
+:assumption (or (not x11281) x17359 (not x4560) x25224 (not x17623))
+:assumption (or (not x1305) (not x31253) x24079 (not x174))
+:assumption (or (not x8711) (not x9881) (not x10350) x4132 x8002 x4929)
+:assumption (or (not x10389) (not x24090))
+:assumption (or x11690 x30918)
+:assumption (or (not x23399) x7340 (not x27624))
+:assumption (or x14509 (not x922))
+:assumption (or (not x17021) (not x22446))
+:assumption (or (not x17736) x18971 (not x6429) (not x27783) (not x12707))
+:assumption (or (not x13470) (not x14058))
+:assumption (or x506 (not x11866))
+:assumption (or x16378 x10037)
+:assumption (or (not x20655) (not x1547))
+:assumption (or (not x22299) (not x19834))
+:assumption (or (not x27059) x15170 (not x29987))
+:assumption (or (not x19992) x27390)
+:assumption (or (not x1719) (not x24387) x1821 x19464)
+:assumption (or x17396 (not x3453))
+:assumption (or (not x19162) (not x18859))
+:assumption (or (not x12569) x28161)
+:assumption (or x17845 x31138)
+:assumption (or x18500 x4398 (not x23737) (not x25083) (not x8393))
+:assumption (or (not x4301) x1863)
+:assumption (or (not x10615) (not x25280))
+:assumption (or x19065 x28503 x25659)
+:assumption (or x9433 x11228)
+:assumption (or x8550 (not x11034))
+:assumption (or (not x13728) x8933)
+:assumption (or (not x21684) x28236)
+:assumption (or x23244 (not x8827))
+:assumption (or (not x12511) (not x9612) x6752 x30609)
+:assumption (or (not x30703) x28753)
+:assumption (or (not x5590) (not x2975))
+:assumption (or x4684 x22840)
+:assumption (or (not x684) x27056)
+:assumption (or x13576 (not x20005))
+:assumption (or (not x18595) (not x25402))
+:assumption (or x344 x30818)
+:assumption (or (not x11251) (not x7033))
+:assumption (or x22199 x13333)
+:assumption (or (not x27837) (not x53))
+:assumption (or (not x14914) (not x7719))
+:assumption (or (not x14461) (not x134) (not x5558))
+:assumption (or x25366 (not x23842))
+:assumption (or (not x24244) (not x29471))
+:assumption (or (not x8450) (not x2129))
+:assumption (or (not x14236) x9285 x30469 x11728)
+:assumption (or x9605 (not x16370))
+:assumption (or x24504 (not x30751) x11948)
+:assumption (or x16741 (not x9025) x13027)
+:assumption (or x17866 (not x19387))
+:assumption (or (not x8173) x23653 x1992 x4401)
+:assumption (or x23464 (not x8331))
+:assumption (or x17342 (not x26337))
+:assumption (or x262 x10939)
+:assumption (or (not x5946) (not x9173))
+:assumption (or (not x10621) (not x9567))
+:assumption (or (not x15469) (not x9598))
+:assumption (or x23244 x24224)
+:assumption (or (not x1725) (not x22797))
+:assumption (or (not x12044) x11792)
+:assumption (or (not x992) x29925)
+:assumption (or (not x2188) x2342)
+:assumption (or x30189 x17109 x3155 x21021 x23823 x4660 x25301)
+:assumption (or x6607 x20023)
+:assumption (or (not x11947) (not x20258))
+:assumption (or (not x17513) (not x6171) (not x28973))
+:assumption (or (not x7778) (not x16743))
+:assumption (or (not x5898) (not x16907) x7597 x19086)
+:assumption (or (not x1105) (not x18946))
+:assumption (or x5238 x23932)
+:assumption (or x23890 x9878 x1582)
+:assumption (or x18487 x16865)
+:assumption (or (not x5220) (not x9061) (not x14556) (not x13125) (not x5996) (not x14138) x31029)
+:assumption (or (not x1854) (not x9453) x23091 x11580 x26227 (not x26782))
+:assumption (or (not x1176) x27559)
+:assumption (or x26058 (not x16333))
+:assumption (or x6320 (not x13997))
+:assumption (or (not x22168) (not x29518))
+:assumption (or x480 (not x24207) x27537 x21251)
+:assumption (or (not x7277) (not x17903))
+:assumption (or x2762 x12976)
+:assumption (or x408 (not x18860))
+:assumption (or (not x26015) x30559)
+:assumption (or x29718 (not x1400) (not x8002))
+:assumption (or x1751 x28051)
+:assumption (or (not x13796) (not x25229))
+:assumption (or (not x29917) (not x3558))
+:assumption (or x22855 (not x6620))
+:assumption (or x25151 x2417)
+:assumption (or (not x4810) x29798)
+:assumption (or x14206 x21365 (not x6525) x21644)
+:assumption (or (not x3961) (not x9800) (not x11154) x11391 x9187 x12528 (not x31339) (not x21225) (not x24260))
+:assumption (or (not x25955) x7711)
+:assumption (or x1501 (not x9384))
+:assumption (or x461 (not x5684))
+:assumption (or x21216 (not x14541))
+:assumption (or x1653 x27074)
+:assumption (or (not x16339) (not x8229))
+:assumption (or x6674 (not x15254))
+:assumption (or x26441 x16374)
+:assumption (or (not x5644) x17934)
+:assumption (or x27292 x1880)
+:assumption (or x21244 x23279 (not x23859) (not x26803))
+:assumption (or x1088 (not x26145))
+:assumption (or (not x17341) x22916)
+:assumption (or (not x25499) x797)
+:assumption (or (not x30305) (not x18795))
+:assumption (or x8173 (not x23653))
+:assumption (or x25659 x19992 x30432 x11723 (not x18042))
+:assumption (or x20527 x3956 (not x22792) x8586)
+:assumption (or (not x8150) x13467)
+:assumption (or x8446 (not x13399))
+:assumption (or (not x12931) (not x14971))
+:assumption (or (not x22830) x24207 (not x27537))
+:assumption (or x5129 x24200)
+:assumption (or x14455 x17798)
+:assumption (or x25739 (not x870))
+:assumption (or x18048 (not x16232))
+:assumption (or x12176 x10022)
+:assumption (or (not x782) x29959)
+:assumption (or (not x7670) x25932 x6265 (not x3617))
+:assumption (or x25151 (not x29933) x12275 x28885)
+:assumption (or (not x22621) (not x29312) (not x16247) (not x5366))
+:assumption (or x6122 (not x23244))
+:assumption (or x26534 x28611)
+:assumption (or (not x836) x2892)
+:assumption (or x9008 x12897)
+:assumption (or x20667 x24240)
+:assumption (or (not x5588) (not x23702))
+:assumption (or (not x11653) x9325)
+:assumption (or x5558 x3227)
+:assumption (or (not x16683) x3850)
+:assumption (or (not x5679) (not x21264))
+:assumption (or x20123 (not x16314))
+:assumption (or (not x3267) (not x10916))
+:assumption (or x20060 x4968 (not x22686) x23331)
+:assumption (or (not x4661) x8330)
+:assumption (or x26675 (not x16908) x21256 (not x28823) (not x19514))
+:assumption (or (not x25380) (not x8886))
+:assumption (or (not x15766) x28496)
+:assumption (or x22703 x8261)
+:assumption (or (not x16134) (not x19272))
+:assumption (or (not x8002) x10920)
+:assumption (or (not x10303) x8410)
+:assumption (or (not x11693) x5884)
+:assumption (or x12427 x20544)
+:assumption (or (not x29006) (not x3816) (not x16972) (not x21897) (not x25818) x17653)
+:assumption (or (not x6173) x22977)
+:assumption (or (not x6600) (not x22282))
+:assumption (or x7115 (not x31161))
+:assumption (or (not x8602) (not x6578))
+:assumption (or x25014 (not x16117) x1582 (not x28973))
+:assumption (or (not x21915) (not x4602))
+:assumption (or x24415 x4396)
+:assumption (or (not x18758) x21815)
+:assumption (or x26855 (not x17509) x13809 x16863 x631 (not x20472))
+:assumption (or (not x26257) x12657)
+:assumption (or x18522 (not x15162))
+:assumption (or (not x16562) (not x23332))
+:assumption (or (not x11522) (not x21599))
+:assumption (or (not x4199) (not x6783))
+:assumption (or x28996 (not x6596))
+:assumption (or (not x17556) x11633)
+:assumption (or x17572 (not x14922))
+:assumption (or (not x8043) (not x11547) x964 (not x18814) x26670 (not x14270))
+:assumption (or (not x3442) (not x18521))
+:assumption (or x16194 x5841)
+:assumption (or x1829 x5528)
+:assumption (or (not x1393) (not x7212) (not x23478))
+:assumption (or (not x10590) x21653)
+:assumption (or x29312 (not x31523))
+:assumption (or (not x22531) (not x21532) (not x2364))
+:assumption (or x9889 (not x222) x9295)
+:assumption (or (not x22722) x14369)
+:assumption (or (not x25404) x17597)
+:assumption (or x21348 x6474)
+:assumption (or (not x3102) (not x23244))
+:assumption (or (not x11627) (not x11291))
+:assumption (or (not x30609) (not x18274))
+:assumption (or (not x30809) (not x20514))
+:assumption (or x2202 (not x31158))
+:assumption (or x19948 (not x26041) (not x2616))
+:assumption (or (not x1318) x15079)
+:assumption (or x7835 (not x19795))
+:assumption (or x17741 (not x25934))
+:assumption (or (not x30603) (not x27386))
+:assumption (or x3000 (not x21387))
+:assumption (or (not x22664) x23513)
+:assumption (or (not x15520) x23398)
+:assumption (or x10700 x8957)
+:assumption (or x23244 (not x414))
+:assumption (or (not x7220) (not x1532) x13573 (not x1191) x14701)
+:assumption (or (not x10932) (not x289) x22049 x23374)
+:assumption (or (not x31027) (not x17856) (not x24640) (not x16929))
+:assumption (or (not x26201) (not x19711))
+:assumption (or (not x15786) x4416)
+:assumption (or x12703 (not x488))
+:assumption (or x13263 (not x23399))
+:assumption (or (not x5810) (not x29409))
+:assumption (or x26076 x1702)
+:assumption (or x16874 (not x14654))
+:assumption (or (not x3055) (not x2840))
+:assumption (or x30692 x14560)
+:assumption (or (not x27119) x24070)
+:assumption (or x15503 x15520)
+:assumption (or (not x24782) x29866)
+:assumption (or (not x23000) (not x22756))
+:assumption (or x15667 x17764)
+:assumption (or (not x10682) (not x8444) (not x30682) (not x14907) (not x17970))
+:assumption (or (not x27326) (not x21494) (not x25423))
+:assumption (or (not x7592) (not x16802))
+:assumption (or x6217 x10103)
+:assumption (or (not x6833) (not x6435) x9970 x5454)
+:assumption (or (not x23254) (not x18651))
+:assumption (or x25280 (not x14936))
+:assumption (or (not x16956) (not x13487) x30236)
+:assumption (or x29408 (not x8002))
+:assumption (or (not x7568) x16192)
+:assumption (or (not x15782) (not x31023))
+:assumption (or x26481 (not x16527))
+:assumption (or (not x30645) x13919)
+:assumption (or (not x30809) x20496)
+:assumption (or (not x12686) (not x22940))
+:assumption (or x4676 (not x15415))
+:assumption (or (not x4631) x5969)
+:assumption (or (not x3648) x17033)
+:assumption (or x20765 (not x25380))
+:assumption (or x20692 x30868)
+:assumption (or x24013 x23956)
+:assumption (or (not x16429) (not x22074))
+:assumption (or x2215 (not x11085))
+:assumption (or x29844 x3309)
+:assumption (or x13038 (not x14455))
+:assumption (or (not x10289) x26743)
+:assumption (or (not x10307) (not x4213))
+:assumption (or (not x10923) (not x9681))
+:assumption (or (not x7481) x2903)
+:assumption (or (not x31303) (not x28253) x9400 (not x15822) x31110 (not x5528))
+:assumption (or (not x8479) (not x7643))
+:assumption (or x2447 x1874)
+:assumption (or x6701 x20482)
+:assumption (or (not x8002) x27975)
+:assumption (or (not x364) x1869)
+:assumption (or (not x22632) (not x17273))
+:assumption (or x8219 x19107)
+:assumption (or x18316 (not x31114))
+:assumption (or (not x28457) x10874)
+:assumption (or (not x93) x13166)
+:assumption (or (not x4451) x21498)
+:assumption (or x30113 (not x26647) x15741)
+:assumption (or (not x5801) x2334 x25599)
+:assumption (or x16741 x2913)
+:assumption (or x4136 (not x18073) (not x10429))
+:assumption (or x24547 (not x25790))
+:assumption (or x13562 (not x19595) x27693 (not x8911))
+:assumption (or (not x12389) (not x23739) (not x6969))
+:assumption (or x18223 x735)
+:assumption (or (not x14059) x6149)
+:assumption (or x23872 x13322 x14042 (not x30886))
+:assumption (or (not x3488) (not x30257))
+:assumption (or x28749 (not x31825))
+:assumption (or x15683 x23106)
+:assumption (or x26622 x5279)
+:assumption (or (not x3214) x22246)
+:assumption (or x25139 (not x6984))
+:assumption (or (not x28697) (not x7915))
+:assumption (or x6161 (not x16))
+:assumption (or x25865 x22373)
+:assumption (or (not x20173) x30105)
+:assumption (or (not x5971) (not x17592))
+:assumption (or (not x2023) x22282)
+:assumption (or (not x6176) (not x17419))
+:assumption (or x30045 x11892 x12281)
+:assumption (or x26242 (not x10086))
+:assumption (or x23353 (not x17068))
+:assumption (or (not x18783) (not x935) (not x10193) x31693 x14550 x9008)
+:assumption (or (not x26293) x16394)
+:assumption (or (not x5210) x15796)
+:assumption (or x7357 (not x9654))
+:assumption (or (not x4559) (not x28318))
+:assumption (or (not x11301) x2862)
+:assumption (or (not x30654) (not x11306))
+:assumption (or x25346 x17650 x28594 x5744)
+:assumption (or (not x2133) x17441 x12375 (not x72) x26253 x24079)
+:assumption (or (not x21627) (not x29221))
+:assumption (or x4674 x18225)
+:assumption (or (not x7373) x23316)
+:assumption (or (not x16510) x25644)
+:assumption (or x25437 (not x6158))
+:assumption (or x22394 x27844)
+:assumption (or x23646 x17684 (not x3378) (not x5528) (not x30118) (not x18136))
+:assumption (or x26141 x27437 (not x21276) x20029 x28971 x3079 (not x18645))
+:assumption (or x25659 (not x28884))
+:assumption (or x26910 x10815)
+:assumption (or x1215 (not x4739))
+:assumption (or (not x28888) (not x16574))
+:assumption (or (not x13020) x13956)
+:assumption (or x3261 x3403)
+:assumption (or x19824 (not x5233))
+:assumption (or x2045 x4367)
+:assumption (or x29772 (not x24769))
+:assumption (or x25132 x22106)
+:assumption (or x9268 x13535)
+:assumption (or x26564 x18289)
+:assumption (or x30667 x434)
+:assumption (or x20550 x10262)
+:assumption (or (not x22227) x8846)
+:assumption (or x14816 x14553)
+:assumption (or (not x1464) x17189)
+:assumption (or x4995 (not x25121))
+:assumption (or (not x17511) x18567)
+:assumption (or (not x25294) (not x1436))
+:assumption (or x18094 (not x15377))
+:assumption (or x13691 (not x15229))
+:assumption (or x16894 x17913)
+:assumption (or (not x7055) (not x12953))
+:assumption (or (not x16210) x8207)
+:assumption (or x22828 (not x17302))
+:assumption (or (not x18742) (not x26449))
+:assumption (or (not x23753) x6467 (not x4630) (not x28364) (not x16553) x22501)
+:assumption (or x31847 (not x15236))
+:assumption (or (not x31187) (not x23905) (not x4648) (not x19173) x4033 x21253 (not x1818) x12923 (not x28919))
+:assumption (or (not x14952) (not x30870))
+:assumption (or x1365 (not x4571))
+:assumption (or (not x22290) (not x2261))
+:assumption (or (not x9329) x10188 x10874)
+:assumption (or x11837 (not x7132))
+:assumption (or x28089 (not x16858))
+:assumption (or (not x26797) x30292)
+:assumption (or x16621 (not x12747))
+:assumption (or (not x21522) x30633 x15060)
+:assumption (or (not x10434) x30254)
+:assumption (or x4553 x433)
+:assumption (or x7313 x1696)
+:assumption (or (not x13536) x28154 (not x14898))
+:assumption (or x9207 (not x7354))
+:assumption (or x17879 x9471)
+:assumption (or x18004 (not x18555))
+:assumption (or (not x23192) (not x12179))
+:assumption (or x21018 x16963)
+:assumption (or (not x970) x9008)
+:assumption (or x12498 (not x22846) x30213 (not x13501))
+:assumption (or x27589 x18042 x6167 (not x24722) x7181 x8555)
+:assumption (or x24683 (not x3736))
+:assumption (or (not x23425) (not x22))
+:assumption (or x29978 x9718)
+:assumption (or (not x26016) (not x26061))
+:assumption (or (not x14313) (not x16773))
+:assumption (or x22764 (not x23244))
+:assumption (or (not x25029) (not x1176) (not x21068) (not x10335) x12555)
+:assumption (or (not x25817) x13899)
+:assumption (or (not x9918) (not x6590))
+:assumption (or x26083 (not x26607))
+:assumption (or x7108 x4176 (not x30991) (not x20020) (not x23372))
+:assumption (or x30970 (not x28381))
+:assumption (or x20840 x23524)
+:assumption (or (not x24942) x11286)
+:assumption (or x31226 x22197)
+:assumption (or (not x10645) (not x1157))
+:assumption (or x19814 x29660)
+:assumption (or x25313 (not x20076))
+:assumption (or x11580 (not x11805))
+:assumption (or (not x13452) (not x19057))
+:assumption (or (not x10643) x23545)
+:assumption (or (not x31822) x31782 (not x31475) (not x21471))
+:assumption (or (not x3437) (not x20961))
+:assumption (or (not x13328) x28142)
+:assumption (or x5725 x12923)
+:assumption (or x3341 (not x929))
+:assumption (or x29184 x20748)
+:assumption (or x12793 x28827)
+:assumption (or (not x11907) (not x2064))
+:assumption (or (not x20109) (not x18213))
+:assumption (or (not x13956) x7619 (not x25008))
+:assumption (or x21923 x30222)
+:assumption (or (not x10870) (not x15203))
+:assumption (or (not x21698) x19131)
+:assumption (or (not x8124) (not x24723))
+:assumption (or (not x1597) (not x19105) x7828 x18915 x26434 (not x23244))
+:assumption (or x31339 (not x31349))
+:assumption (or (not x3494) x9559)
+:assumption (or (not x21292) x16510)
+:assumption (or x31447 (not x16453))
+:assumption (or (not x25756) x20992)
+:assumption (or x26872 (not x31076))
+:assumption (or x18709 x20402 x4300 (not x21527) (not x23136) (not x15879))
+:assumption (or (not x27954) (not x5394))
+:assumption (or (not x15728) x19680 x8120)
+:assumption (or x17647 x6143)
+:assumption (or x26571 x25624)
+:assumption (or x9453 x26601)
+:assumption (or (not x9531) (not x11429))
+:assumption (or (not x31437) (not x21298) (not x3467))
+:assumption (or (not x11031) (not x15547))
+:assumption (or (not x12691) (not x8602))
+:assumption (or (not x25) x4950)
+:assumption (or x813 x15974)
+:assumption (or x22660 (not x21831))
+:assumption (or (not x19310) (not x19751))
+:assumption (or (not x5217) (not x14576))
+:assumption (or x23465 (not x13138))
+:assumption (or x25035 x22981)
+:assumption (or (not x5301) (not x14206) x7403 (not x28871) x26940 (not x13004) (not x5805) (not x31283) (not x14764))
+:assumption (or (not x28169) (not x19163))
+:assumption (or (not x7090) x5528 (not x18500))
+:assumption (or (not x16783) x2118)
+:assumption (or (not x10015) (not x20347))
+:assumption (or (not x28988) x15985)
+:assumption (or x29996 x11665)
+:assumption (or (not x4479) (not x31252))
+:assumption (or (not x7106) (not x7149) (not x581))
+:assumption (or x29635 x16478)
+:assumption (or x30463 (not x12771))
+:assumption (or (not x26965) (not x13092))
+:assumption (or x22733 x22313)
+:assumption (or x27318 (not x23021))
+:assumption (or x20550 x26647 (not x6149) x25659 (not x7183))
+:assumption (or x5593 x20210)
+:assumption (or x11277 x19849)
+:assumption (or x7127 (not x9452) x499 (not x28077) (not x29737) x29182)
+:assumption (or (not x28817) (not x19681))
+:assumption (or (not x4571) (not x29027))
+:assumption (or (not x27597) (not x16498))
+:assumption (or (not x22101) (not x28422))
+:assumption (or (not x11485) (not x3611))
+:assumption (or x29682 x646 (not x25659))
+:assumption (or (not x20096) (not x23964))
+:assumption (or x16183 (not x15747))
+:assumption (or x19456 x685)
+:assumption (or (not x14695) (not x13956) (not x22021))
+:assumption (or (not x26269) (not x8610))
+:assumption (or x15659 (not x2433))
+:assumption (or x14526 x16191)
+:assumption (or x23217 x20482)
+:assumption (or (not x23608) (not x7834))
+:assumption (or x30575 x5019)
+:assumption (or (not x20159) x29964)
+:assumption (or (not x6811) x24570)
+:assumption (or x9989 x29844)
+:assumption (or x31681 (not x9916))
+:assumption (or x20546 x17176)
+:assumption (or (not x5628) (not x25277))
+:assumption (or x23883 x13018 (not x20563))
+:assumption (or (not x5250) x18212)
+:assumption (or x21033 (not x5098))
+:assumption (or (not x30026) x11377)
+:assumption (or (not x25343) (not x13260))
+:assumption (or x24265 (not x252))
+:assumption (or x202 (not x2395))
+:assumption (or (not x4090) x25659)
+:assumption (or x5894 (not x11134) x19730 (not x25534))
+:assumption (or (not x19616) (not x22160))
+:assumption (or (not x31484) (not x18252))
+:assumption (or x18273 (not x16025))
+:assumption (or (not x4108) x9731)
+:assumption (or (not x29861) x29194 x28516 (not x9631))
+:assumption (or x27192 x3687)
+:assumption (or x21711 x16609)
+:assumption (or (not x19593) (not x2363))
+:assumption (or x29589 (not x11811))
+:assumption (or (not x16436) (not x14031) x3626 x19553 x335 (not x8740) x5028)
+:assumption (or (not x20007) x14578)
+:assumption (or (not x9823) (not x11792))
+:assumption (or x4559 (not x20839))
+:assumption (or x15946 x2293)
+:assumption (or x3494 x18069 (not x2392) (not x28271))
+:assumption (or (not x9749) (not x30646) (not x14839))
+:assumption (or x4001 x14106)
+:assumption (or (not x25734) (not x23399))
+:assumption (or (not x19183) (not x18634))
+:assumption (or (not x4383) (not x3321))
+:assumption (or x17812 x10838)
+:assumption (or x30143 (not x17535))
+:assumption (or (not x4474) x6361)
+:assumption (or x16971 (not x23798))
+:assumption (or (not x24449) (not x17865))
+:assumption (or x9698 (not x11792))
+:assumption (or x17424 (not x3360) (not x30160) x5981 (not x23973) x12204 x8856 x10996)
+:assumption (or (not x10703) (not x23488))
+:assumption (or x6127 (not x26742))
+:assumption (or x13956 (not x20110) (not x514) (not x14695) x23244 x8002)
+:assumption (or x24076 x31697)
+:assumption (or x2329 (not x21373))
+:assumption (or (not x8470) (not x23351))
+:assumption (or x31575 (not x27299))
+:assumption (or x511 x14327)
+:assumption (or x17792 (not x31634))
+:assumption (or (not x14369) x22722)
+:assumption (or x1565 x3803 x26764 x7024 (not x20366))
+:assumption (or x16186 x25772)
+:assumption (or x30618 (not x21403))
+:assumption (or (not x25946) (not x10010))
+:assumption (or (not x8555) x9964)
+:assumption (or x736 (not x26450))
+:assumption (or x11013 x13276)
+:assumption (or x16510 (not x17541))
+:assumption (or (not x20740) x22608)
+:assumption (or (not x18475) x29538 (not x24756) x2057 x19522 (not x29508))
+:assumption (or x30662 (not x8002))
+:assumption (or x20783 (not x23230) x3782)
+:assumption (or (not x16293) x1004 (not x21632) (not x11450) x11482 x17897)
+:assumption (or x15281 (not x23099) x19692 x8048 x19779 x24042 x1236 (not x2113) x24813)
+:assumption (or x22131 (not x10858))
+:assumption (or x27274 (not x20520))
+:assumption (or (not x15205) x21956)
+:assumption (or x27776 (not x31161) (not x18949) x23976)
+:assumption (or x1889 (not x24075))
+:assumption (or x26712 (not x31592))
+:assumption (or (not x24150) x25861)
+:assumption (or x31553 (not x23878))
+:assumption (or x17605 x25486)
+:assumption (or (not x7814) (not x23790))
+:assumption (or x24004 x23701)
+:assumption (or (not x12414) x28844)
+:assumption (or (not x27682) (not x11281) x11804 x25659)
+:assumption (or (not x5442) (not x17457))
+:assumption (or x1984 (not x7783))
+:assumption (or x10550 x1343)
+:assumption (or (not x30871) x6666)
+:assumption (or (not x28699) (not x11721))
+:assumption (or x7802 x26421)
+:assumption (or (not x25980) x26354 (not x19030))
+:assumption (or (not x2979) (not x7012))
+:assumption (or (not x22367) x17075)
+:assumption (or (not x17891) x23593)
+:assumption (or x20210 x9928)
+:assumption (or x13512 (not x17845))
+:assumption (or (not x19371) x28153)
+:assumption (or (not x27109) x17302)
+:assumption (or x28260 x12643)
+:assumption (or (not x27151) (not x9211))
+:assumption (or (not x25255) x28624 x20782 x10223 (not x961) x128 x31836)
+:assumption (or (not x10251) x10060)
+:assumption (or x12019 x14455)
+:assumption (or x21419 x24849)
+:assumption (or (not x13892) (not x7937))
+:assumption (or (not x15959) (not x13434) x31734)
+:assumption (or (not x19177) (not x7602) x15917 x10064)
+:assumption (or x8382 x9007)
+:assumption (or x15819 x1702)
+:assumption (or (not x10143) x6169)
+:assumption (or (not x12979) x14431)
+:assumption (or (not x8770) (not x19512))
+:assumption (or (not x7204) (not x15399))
+:assumption (or x8831 x4977)
+:assumption (or (not x8002) x20613)
+:assumption (or x17379 x4024)
+:assumption (or x27226 (not x29409))
+:assumption (or x17473 (not x10904))
+:assumption (or x25334 x1766)
+:assumption (or (not x20421) x22850)
+:assumption (or (not x18438) (not x31765))
+:assumption (or x31062 x26091)
+:assumption (or (not x4333) (not x4509) x3670)
+:assumption (or x28073 (not x7325) x2495 (not x29604) (not x29623) (not x8351))
+:assumption (or (not x26647) (not x13956) x23232)
+:assumption (or (not x28342) x8802 x5528)
+:assumption (or x16827 x14193)
+:assumption (or (not x10457) (not x25415))
+:assumption (or x15656 (not x14619))
+:assumption (or (not x30615) x4926)
+:assumption (or x13139 x10763)
+:assumption (or (not x17804) x11177)
+:assumption (or x20020 x29922)
+:assumption (or x964 x169 x11835)
+:assumption (or (not x30713) x25659)
+:assumption (or x2621 x19864 (not x9538))
+:assumption (or x8002 x9011 x31440 x23244)
+:assumption (or (not x1374) x6427)
+:assumption (or (not x8675) x9615)
+:assumption (or x8002 x28729 x29125)
+:assumption (or (not x31077) x29582 (not x8698) (not x30870) (not x16212))
+:assumption (or x13403 x28074)
+:assumption (or x1353 x18117 x13747)
+:assumption (or (not x30557) x9299 x6546 x14435)
+:assumption (or x9008 x22932)
+:assumption (or x25420 x23186)
+:assumption (or (not x2902) (not x28347))
+:assumption (or (not x1181) x20389)
+:assumption (or x26256 (not x28796))
+:assumption (or (not x8919) x24677 x7334)
+:assumption (or x12295 x1393)
+:assumption (or (not x8404) (not x118))
+:assumption (or x11270 x15922 x15649)
+:assumption (or x1308 (not x14063))
+:assumption (or x30175 x1306)
+:assumption (or (not x3001) (not x884) x25224 (not x202))
+:assumption (or (not x2183) x18482)
+:assumption (or x7777 x17114)
+:assumption (or (not x8689) (not x19705))
+:assumption (or (not x14053) (not x20452))
+:assumption (or (not x17170) x9806)
+:assumption (or (not x4934) x20550)
+:assumption (or (not x22862) (not x11281) (not x10455) (not x25426))
+:assumption (or (not x11459) (not x25239))
+:assumption (or (not x19339) (not x15673))
+:assumption (or (not x20969) x9056)
+:assumption (or (not x11150) x30930)
+:assumption (or (not x31389) (not x3886))
+:assumption (or (not x2012) x23911)
+:assumption (or (not x21283) (not x293))
+:assumption (or x3248 x22131)
+:assumption (or x11690 (not x28361))
+:assumption (or x2817 x24243)
+:assumption (or x22495 (not x336))
+:assumption (or (not x10228) x28912)
+:assumption (or x17998 (not x11121))
+:assumption (or x18723 (not x13113))
+:assumption (or (not x12688) (not x20857) (not x19817) x8930 (not x22254) (not x7103) (not x28685) (not x18233))
+:assumption (or (not x27460) (not x14412))
+:assumption (or x8015 (not x14329))
+:assumption (or x7835 x26177)
+:assumption (or x8219 x27231 x8694)
+:assumption (or x9183 x3001)
+:assumption (or (not x16007) x29452)
+:assumption (or x7530 (not x270))
+:assumption (or x9008 (not x24646))
+:assumption (or x15410 x12826)
+:assumption (or (not x5463) x24297)
+:assumption (or x10260 x31851 x11754)
+:assumption (or x8747 x12718)
+:assumption (or (not x9914) x19599)
+:assumption (or x6849 x31299)
+:assumption (or (not x2808) x31799)
+:assumption (or x20220 (not x11519) x13934 (not x16710) x1500 x11855)
+:assumption (or (not x8294) (not x18266))
+:assumption (or x15795 x21134 x17088 (not x16304))
+:assumption (or (not x5938) x5790 x15731 x13428)
+:assumption (or x25495 x5401)
+:assumption (or x12880 x5649)
+:assumption (or (not x13120) x12604)
+:assumption (or x1542 x17666)
+:assumption (or (not x11593) x15234)
+:assumption (or x9084 x16924)
+:assumption (or (not x11384) (not x31887))
+:assumption (or x15938 (not x26834))
+:assumption (or x18859 x10347)
+:assumption (or x3899 (not x24813))
+:assumption (or (not x6136) (not x1892))
+:assumption (or x20836 (not x23244))
+:assumption (or (not x24495) (not x9018))
+:assumption (or x16073 x14871)
+:assumption (or x27961 (not x31829))
+:assumption (or (not x5761) (not x28043))
+:assumption (or x12332 x9531 (not x14424))
+:assumption (or x24644 x7389)
+:assumption (or (not x2347) x23438)
+:assumption (or (not x23244) (not x18812))
+:assumption (or (not x29145) (not x13465))
+:assumption (or x21985 x22171)
+:assumption (or x27701 x23244)
+:assumption (or x20470 (not x23555) x1897 x18561)
+:assumption (or (not x9008) x15362)
+:assumption (or (not x25659) x10940)
+:assumption (or (not x11485) x4957)
+:assumption (or x12501 x15861)
+:assumption (or (not x12552) x21907)
+:assumption (or x27880 x13318)
+:assumption (or (not x1886) (not x26247))
+:assumption (or (not x26845) x24102)
+:assumption (or (not x4474) x2165)
+:assumption (or (not x43) (not x9507))
+:assumption (or (not x10864) (not x18164))
+:assumption (or x12564 (not x6750))
+:assumption (or (not x1466) (not x6813))
+:assumption (or x7771 (not x15928))
+:assumption (or (not x26004) x25366)
+:assumption (or (not x22658) x13956)
+:assumption (or x6090 (not x8202))
+:assumption (or (not x15901) (not x4523))
+:assumption (or x15787 x29550)
+:assumption (or x6554 (not x11358))
+:assumption (or (not x93) x15139)
+:assumption (or x17298 x29723)
+:assumption (or (not x30879) x25989)
+:assumption (or (not x2646) x17727 (not x9371) (not x4393) (not x1911) x5017 x6222 x26644 x15868)
+:assumption (or (not x16039) x10488 (not x12426))
+:assumption (or x501 x4814)
+:assumption (or x25224 x25879)
+:assumption (or x19504 x15383)
+:assumption (or x14632 (not x17596))
+:assumption (or x10617 (not x11944) x23249 (not x13680) x15552 (not x8172) x24668 (not x25659))
+:assumption (or (not x27105) x24987)
+:assumption (or x6435 (not x349))
+:assumption (or x23244 (not x10864))
+:assumption (or (not x25192) (not x8580))
+:assumption (or x4328 x6200)
+:assumption (or (not x12732) (not x8069))
+:assumption (or x28739 (not x15111) x8002)
+:assumption (or (not x4761) x26868 x7098)
+:assumption (or (not x30900) (not x4376))
+:assumption (or x14670 x17870)
+:assumption (or (not x2334) x9648)
+:assumption (or (not x28459) x31691 (not x27301) (not x27149) (not x19528) x28703 x23413 (not x21658))
+:assumption (or x9012 x30895)
+:assumption (or x6859 x30344)
+:assumption (or x13113 (not x25506) (not x6128))
+:assumption (or (not x13965) (not x28175))
+:assumption (or x1103 (not x11049) (not x31388) x26354 x28906 x5 (not x19644))
+:assumption (or x12214 (not x7114) (not x21815))
+:assumption (or x14167 (not x29421) (not x21298))
+:assumption (or (not x21372) x21910)
+:assumption (or x31087 (not x15697))
+:assumption (or x30605 (not x27512))
+:assumption (or x1985 x9680)
+:assumption (or (not x30975) x26175)
+:assumption (or (not x4259) (not x6750) x13826)
+:assumption (or (not x3784) x29921)
+:assumption (or x1146 x31421 x8637 x438 (not x16388) (not x12526))
+:assumption (or (not x11805) (not x17635))
+:assumption (or x15178 x8591)
+:assumption (or (not x25435) (not x9008) (not x20547))
+:assumption (or (not x18730) (not x25142))
+:assumption (or (not x6528) (not x22053))
+:assumption (or x4287 (not x22655))
+:assumption (or x28807 x4812)
+:assumption (or x17623 x4560)
+:assumption (or x28119 x1580)
+:assumption (or x5440 (not x27007))
+:assumption (or x1545 (not x7657))
+:assumption (or (not x31800) x31829 (not x3910))
+:assumption (or x15930 (not x29900))
+:assumption (or x1853 x23654 x19903 x2479 x9398)
+:assumption (or (not x9556) (not x23966))
+:assumption (or x17420 x5789)
+:assumption (or x17003 (not x26801))
+:assumption (or (not x6911) (not x31643))
+:assumption (or (not x10029) (not x15918))
+:assumption (or (not x21864) (not x8279))
+:assumption (or (not x22291) x28524)
+:assumption (or (not x24229) (not x13576))
+:assumption (or x30891 (not x28245))
+:assumption (or (not x19345) x21013)
+:assumption (or x1045 (not x9928) x31268 (not x5593) x26166 (not x2855) x1683)
+:assumption (or x2787 (not x15793))
+:assumption (or (not x27793) x10523)
+:assumption (or (not x24963) (not x15465))
+:assumption (or (not x12526) x24536)
+:assumption (or (not x31581) (not x24088) x10303 (not x7551) x20756 x31481)
+:assumption (or x5841 (not x6714))
+:assumption (or (not x30037) x31212)
+:assumption (or (not x6470) (not x3964))
+:assumption (or (not x25819) (not x10844))
+:assumption (or x4462 x6351)
+:assumption (or x9647 (not x10600))
+:assumption (or (not x26897) (not x15108))
+:assumption (or (not x30138) x11275)
+:assumption (or x28973 (not x25014))
+:assumption (or (not x30346) (not x3736))
+:assumption (or x12749 x22202 (not x1605) (not x8898) x27227 (not x17515))
+:assumption (or (not x16328) x13986)
+:assumption (or (not x17142) (not x4103))
+:assumption (or x22211 x29312 (not x517) (not x24756))
+:assumption (or (not x23795) (not x23244))
+:assumption (or x4589 (not x22498))
+:assumption (or (not x7639) x23139)
+:assumption (or x24464 x13236)
+:assumption (or x14605 x21477)
+:assumption (or x17360 x13205)
+:assumption (or (not x8465) (not x23244))
+:assumption (or x21944 (not x1342))
+:assumption (or (not x11569) x22659 x31894 (not x25560) (not x26497) x5018 (not x20134) (not x9013) (not x17176) x18376 x5769)
+:assumption (or x25668 x17534)
+:assumption (or (not x2133) x31803)
+:assumption (or (not x13550) x25093)
+:assumption (or x4000 (not x19640))
+:assumption (or (not x20933) (not x3053))
+:assumption (or x21815 x29748)
+:assumption (or (not x19837) (not x14435))
+:assumption (or (not x3634) x6517)
+:assumption (or x6969 x26952)
+:assumption (or x27537 (not x7339) (not x17152))
+:assumption (or (not x4517) (not x8002) x24426)
+:assumption (or x14190 x15633)
+:assumption (or (not x15106) (not x16849))
+:assumption (or (not x18356) x2912)
+:assumption (or (not x3362) x7748)
+:assumption (or x365 x23892)
+:assumption (or (not x30236) (not x30141))
+:assumption (or (not x7521) (not x939))
+:assumption (or x24610 x2537)
+:assumption (or (not x918) (not x29180))
+:assumption (or (not x25296) (not x12569))
+:assumption (or (not x16278) x8961)
+:assumption (or (not x3572) x1393)
+:assumption (or (not x796) (not x24186))
+:assumption (or (not x14790) x14943 (not x19864))
+:assumption (or (not x21767) (not x15584) x657 x12094 (not x23698) (not x827) x29528 (not x14080))
+:assumption (or (not x18091) (not x23510))
+:assumption (or (not x18965) (not x6766))
+:assumption (or (not x29262) x31392)
+:assumption (or (not x13715) (not x10266))
+:assumption (or (not x13408) x11989)
+:assumption (or x10088 (not x964))
+:assumption (or (not x15902) x923)
+:assumption (or (not x21854) (not x8156))
+:assumption (or x19407 x28514)
+:assumption (or (not x25246) x22531)
+:assumption (or x22733 (not x23271))
+:assumption (or x13576 (not x20139))
+:assumption (or x30035 x31218)
+:assumption (or (not x6990) x28323)
+:assumption (or x30138 x18451)
+:assumption (or (not x9266) (not x28973))
+:assumption (or x19188 x7859 x24471)
+:assumption (or (not x22500) (not x3406) x6995 x22854 (not x17656) (not x14206) x4210 x14969 (not x29977))
+:assumption (or x11178 x28375)
+:assumption (or x4098 (not x10809))
+:assumption (or x1628 x6129)
+:assumption (or x6990 x16457)
+:assumption (or x1582 x3688)
+:assumption (or (not x11998) x11488 x9362)
+:assumption (or (not x22981) (not x9579))
+:assumption (or (not x5663) (not x8002))
+:assumption (or x21379 x252 (not x8382))
+:assumption (or x14187 x14528)
+:assumption (or (not x7925) x6006)
+:assumption (or (not x17160) x3365)
+:assumption (or x12672 x3522)
+:assumption (or x30219 (not x2087))
+:assumption (or (not x14582) x886)
+:assumption (or x22488 (not x17376))
+:assumption (or x23294 (not x21479))
+:assumption (or x5528 x29080)
+:assumption (or (not x21298) x20402 x8291 x6156)
+:assumption (or (not x25329) (not x24868))
+:assumption (or (not x14514) (not x10751))
+:assumption (or (not x20127) (not x13296))
+:assumption (or x23244 x24358)
+:assumption (or (not x2794) (not x15231))
+:assumption (or x18700 x30002)
+:assumption (or x6242 (not x7101))
+:assumption (or x26561 (not x15067))
+:assumption (or x16430 (not x4023))
+:assumption (or x18278 (not x14468))
+:assumption (or (not x4362) (not x750))
+:assumption (or x11876 (not x16251))
+:assumption (or x17992 x1276)
+:assumption (or x31257 x4451)
+:assumption (or (not x10356) (not x13068))
+:assumption (or x28973 x17513)
+:assumption (or x15204 x17534)
+:assumption (or (not x23633) (not x9405))
+:assumption (or (not x23958) x6694)
+:assumption (or x27669 x27590)
+:assumption (or x11810 x1255)
+:assumption (or x1539 (not x10890))
+:assumption (or x25633 x27256 (not x8680))
+:assumption (or x21577 (not x8379))
+:assumption (or x23742 x9531 (not x13338))
+:assumption (or x1829 x29445)
+:assumption (or x19183 x9288)
+:assumption (or x3263 (not x28890))
+:assumption (or x5485 (not x16668))
+:assumption (or x7113 (not x7995))
+:assumption (or (not x8002) (not x22584))
+:assumption (or x23905 (not x16257))
+:assumption (or x19530 x19587)
+:assumption (or (not x12420) (not x11923) x23244 x8002 x13956 (not x14649))
+:assumption (or x12225 x7404)
+:assumption (or (not x29994) (not x31193))
+:assumption (or x25991 (not x15621))
+:assumption (or x25364 (not x26667))
+:assumption (or (not x14173) x13143)
+:assumption (or (not x22942) x24662 x2574)
+:assumption (or x7275 (not x28377))
+:assumption (or x2129 x8450)
+:assumption (or x8055 (not x21662))
+:assumption (or (not x8333) x30487)
+:assumption (or (not x28973) x16113)
+:assumption (or x22011 x17448 (not x29727) x4397 x22186 x17689 x30855 x6518)
+:assumption (or (not x11950) (not x18519))
+:assumption (or x26229 x25659)
+:assumption (or (not x1254) x3019)
+:assumption (or (not x217) x26762 x13930)
+:assumption (or (not x21828) (not x15630))
+:assumption (or x8002 x19308 (not x29041) x23244)
+:assumption (or x21653 x17642)
+:assumption (or (not x16543) (not x30475))
+:assumption (or x18097 x2179)
+:assumption (or x6205 x31834)
+:assumption (or x2833 x6892)
+:assumption (or (not x17612) x4663)
+:assumption (or (not x11793) x26432)
+:assumption (or x14350 (not x16022))
+:assumption (or x3167 (not x8133) (not x16414) (not x3679) x26230)
+:assumption (or x27848 x2133)
+:assumption (or x14544 (not x30751) x28973)
+:assumption (or x19511 (not x12647))
+:assumption (or x17358 (not x18900))
+:assumption (or (not x8408) (not x30308))
+:assumption (or (not x20085) (not x9525))
+:assumption (or (not x19890) (not x3047))
+:assumption (or (not x2431) (not x27995))
+:assumption (or (not x31538) x22470)
+:assumption (or x23182 (not x30631))
+:assumption (or (not x16911) x6417)
+:assumption (or x25583 x2324)
+:assumption (or (not x25339) (not x29243))
+:assumption (or (not x18215) (not x20742))
+:assumption (or x16620 (not x25060))
+:assumption (or x8100 (not x21513))
+:assumption (or (not x27830) x1071)
+:assumption (or x741 (not x22732))
+:assumption (or x16439 (not x19413))
+:assumption (or x13047 x20823)
+:assumption (or (not x584) x8652)
+:assumption (or (not x9874) x17491)
+:assumption (or x18967 x15552)
+:assumption (or (not x14162) x20691)
+:assumption (or x10105 (not x715))
+:assumption (or x23085 x25252)
+:assumption (or x29312 x20306 x6805)
+:assumption (or x23633 (not x532) x30113)
+:assumption (or x25174 x19268)
+:assumption (or x4025 (not x5119) x22099 x17289 x29802)
+:assumption (or (not x26253) x28585)
+:assumption (or (not x19164) (not x7743))
+:assumption (or x31695 x1897)
+:assumption (or (not x30976) (not x16142))
+:assumption (or (not x16745) x6328)
+:assumption (or (not x7849) (not x19345))
+:assumption (or x30438 x19674)
+:assumption (or x26776 x12982)
+:assumption (or (not x12763) x16548)
+:assumption (or x3084 x31767)
+:assumption (or (not x8060) (not x24821))
+:assumption (or (not x617) x8570)
+:assumption (or x7260 (not x6598))
+:assumption (or x4709 x11850)
+:assumption (or x20103 (not x17813))
+:assumption (or x7883 x8730)
+:assumption (or x7557 (not x21653))
+:assumption (or (not x24622) (not x31134))
+:assumption (or (not x6116) (not x14455))
+:assumption (or (not x5422) (not x7606))
+:assumption (or x10691 (not x4082))
+:assumption (or (not x9115) x2488)
+:assumption (or (not x218) (not x6434))
+:assumption (or x2889 (not x6911))
+:assumption (or (not x14687) x21770 x2692)
+:assumption (or (not x18478) x5816)
+:assumption (or x23887 (not x5154))
+:assumption (or x24952 (not x7770))
+:assumption (or x10325 x9636 (not x29649) (not x28912))
+:assumption (or x5341 (not x15659))
+:assumption (or x7787 (not x23244))
+:assumption (or (not x9068) (not x29266))
+:assumption (or x24423 x13157)
+:assumption (or x27517 x223)
+:assumption (or x10874 x18087)
+:assumption (or (not x27026) (not x14705))
+:assumption (or (not x184) x29462)
+:assumption (or (not x6931) (not x23028))
+:assumption (or x19295 (not x12908) x18790 x3786 (not x31547))
+:assumption (or x14016 x23625)
+:assumption (or x21025 x7727 (not x10227) (not x17243))
+:assumption (or (not x16574) (not x8002))
+:assumption (or x6584 x5928)
+:assumption (or x5709 x30031 (not x26295))
+:assumption (or (not x16208) x5947)
+:assumption (or x227 x29161)
+:assumption (or x5136 x27941 (not x8517) x38)
+:assumption (or x20206 (not x9439))
+:assumption (or (not x29259) x29602 (not x1167))
+:assumption (or (not x17774) x24569)
+:assumption (or x23958 (not x23001) (not x4942))
+:assumption (or (not x21888) (not x30633) x16444)
+:assumption (or x30887 (not x17109) x6280)
+:assumption (or (not x24842) x15498)
+:assumption (or x12081 x20806)
+:assumption (or (not x8002) x28028)
+:assumption (or x13339 x1096)
+:assumption (or x27233 (not x10324) x20551 (not x21633))
+:assumption (or (not x24828) (not x26479))
+:assumption (or (not x24063) (not x13332))
+:assumption (or (not x20832) (not x13343))
+:assumption (or (not x6329) (not x29197))
+:assumption (or (not x7591) (not x9786))
+:assumption (or (not x11428) (not x17850))
+:assumption (or (not x3264) (not x11234))
+:assumption (or x31145 (not x12832) x27824 x17619 x28558 (not x117) x3606 x10884 x8578)
+:assumption (or x30723 (not x2365))
+:assumption (or x30062 x6303)
+:assumption (or (not x6243) (not x1385))
+:assumption (or (not x13533) x1455)
+:assumption (or x16078 x21815 (not x5170))
+:assumption (or x30590 x11918)
+:assumption (or x19289 (not x7349))
+:assumption (or (not x21240) x28892)
+:assumption (or x8904 (not x1212) x9500 (not x6616) (not x24013))
+:assumption (or x15068 x22458)
+:assumption (or (not x5367) x13511)
+:assumption (or x7844 (not x11519))
+:assumption (or (not x23679) (not x8002))
+:assumption (or (not x15064) x8120 x8492)
+:assumption (or (not x31605) (not x8251))
+:assumption (or x23760 x2195 x28076 x1499 x9497 x17075 x24916 (not x7886))
+:assumption (or x21068 (not x14422))
+:assumption (or x130 x17076)
+:assumption (or x23476 x6650)
+:assumption (or x4697 (not x3229))
+:assumption (or (not x30121) (not x15516))
+:assumption (or (not x11199) x21559)
+:assumption (or x30088 (not x9692))
+:assumption (or x4207 (not x27586))
+:assumption (or x5059 x14323)
+:assumption (or (not x24327) (not x9418))
+:assumption (or (not x15528) x8368)
+:assumption (or (not x20747) x8523)
+:assumption (or x8382 x252 x24925)
+:assumption (or (not x9008) (not x5988) x2638)
+:assumption (or (not x15257) x26713 x7319 (not x15381) x13872 (not x27970) x17426)
+:assumption (or x23100 x16117)
+:assumption (or (not x688) x13547)
+:assumption (or (not x2500) (not x3279))
+:assumption (or (not x5185) x26872)
+:assumption (or (not x21470) (not x16243))
+:assumption (or x27918 x8797)
+:assumption (or (not x11939) (not x16424))
+:assumption (or (not x4128) (not x7241))
+:assumption (or (not x26387) (not x13621))
+:assumption (or (not x25588) x14549)
+:assumption (or x17260 x13273)
+:assumption (or x4964 x24341)
+:assumption (or (not x5435) x30443 x30392 (not x30613) (not x19604) x26283 x7031 (not x2893) (not x8512))
+:assumption (or x202 x30687)
+:assumption (or (not x21307) x5360)
+:assumption (or x27674 x17725 x4227 (not x9406) (not x22983) (not x9585))
+:assumption (or (not x17149) (not x25472) (not x4558))
+:assumption (or (not x23097) x12541)
+:assumption (or (not x29161) (not x227) x21289 x6437)
+:assumption (or (not x11584) x2699)
+:assumption (or (not x17698) (not x20416))
+:assumption (or (not x2381) x3494)
+:assumption (or x2028 x13206)
+:assumption (or (not x12967) (not x17078))
+:assumption (or x21831 (not x22060))
+:assumption (or x13071 x8002)
+:assumption (or x4573 x22585)
+:assumption (or x23807 (not x27849) (not x29451) x7932 x22231)
+:assumption (or (not x4540) (not x25889))
+:assumption (or (not x23035) (not x608))
+:assumption (or (not x29432) (not x13956))
+:assumption (or x19869 (not x12976))
+:assumption (or (not x31244) x1700)
+:assumption (or x20325 (not x22076))
+:assumption (or (not x20842) (not x5443))
+:assumption (or x22183 x19829)
+:assumption (or x21597 x14553)
+:assumption (or x4965 (not x7237))
+:assumption (or x23804 (not x6121))
+:assumption (or x21903 x12536)
+:assumption (or x15034 x12807)
+:assumption (or (not x12744) x23291)
+:assumption (or x10324 x9515)
+:assumption (or x302 x3942)
+:assumption (or (not x11473) (not x27673))
+:assumption (or (not x19166) (not x17804))
+:assumption (or x6866 (not x16907))
+:assumption (or (not x22750) x2868)
+:assumption (or (not x6351) (not x14932) x4289)
+:assumption (or x13956 x23244 x507 x3516 x8530 x8002)
+:assumption (or x7680 (not x27795) (not x20291))
+:assumption (or x29676 x17464)
+:assumption (or (not x24015) (not x6969))
+:assumption (or x17075 (not x31109) (not x29060))
+:assumption (or (not x25820) x25207)
+:assumption (or (not x5673) x11441)
+:assumption (or x16332 x22716)
+:assumption (or (not x1230) x28541 x25659 x9315)
+:assumption (or (not x28932) (not x13684) x16580 x28404 (not x15783))
+:assumption (or x2042 (not x25366) x20409)
+:assumption (or x29592 x21155)
+:assumption (or x12668 x16650)
+:assumption (or (not x20892) x19959)
+:assumption (or (not x12242) x18303)
+:assumption (or x23400 (not x16059))
+:assumption (or x23665 (not x21843))
+:assumption (or (not x21762) (not x26926))
+:assumption (or (not x11792) x6041)
+:assumption (or (not x14901) (not x27169))
+:assumption (or x10630 x22325)
+:assumption (or x11979 x29305)
+:assumption (or (not x22844) x12736)
+:assumption (or x23167 x8565)
+:assumption (or (not x29312) (not x30162))
+:assumption (or x10115 x19143)
+:assumption (or x27429 x9614)
+:assumption (or x6001 (not x18071))
+:assumption (or (not x7859) x7418 x28990)
+:assumption (or x539 (not x16736))
+:assumption (or (not x16993) x23996)
+:assumption (or (not x26897) (not x1174))
+:assumption (or (not x16648) (not x16875))
+:assumption (or (not x12835) (not x10306))
+:assumption (or (not x30014) x9143 (not x20482))
+:assumption (or x10530 (not x9607))
+:assumption (or x21110 (not x15401))
+:assumption (or (not x8602) x30412)
+:assumption (or x25366 x23121)
+:assumption (or x10667 (not x18305))
+:assumption (or (not x11519) x29779)
+:assumption (or (not x467) (not x21043))
+:assumption (or x17981 x18937)
+:assumption (or (not x3176) (not x14053) x1462 (not x12260) x6019)
+:assumption (or x13875 (not x16711))
+:assumption (or (not x31246) (not x29797))
+:assumption (or x19211 (not x19335))
+:assumption (or x21523 x23514)
+:assumption (or (not x28628) (not x24620) (not x20459) x29952 x9049)
+:assumption (or (not x673) (not x27349))
+:assumption (or x15648 x2352)
+:assumption (or x9568 x6008 x12472 x69 (not x16759))
+:assumption (or (not x15532) x15280)
+:assumption (or (not x5081) (not x28189))
+:assumption (or (not x25278) x14578)
+:assumption (or (not x18417) x3901)
+:assumption (or x25334 (not x11369))
+:assumption (or x7696 (not x25270))
+:assumption (or (not x16900) (not x5128) (not x18436) x12476 (not x294))
+:assumption (or (not x19799) x25096 x5298)
+:assumption (or x3291 (not x4265))
+:assumption (or (not x16510) (not x10688))
+:assumption (or x12475 (not x22476) x5886)
+:assumption (or (not x25049) x19263)
+:assumption (or (not x17338) x8025)
+:assumption (or (not x13265) x27594)
+:assumption (or x16672 (not x15201))
+:assumption (or (not x12104) x13061 (not x10064))
+:assumption (or (not x24891) x17177)
+:assumption (or x6811 (not x24570))
+:assumption (or x12795 x28402)
+:assumption (or (not x22738) (not x13551))
+:assumption (or (not x20606) (not x21858))
+:assumption (or x638 x25008)
+:assumption (or x5855 x8115)
+:assumption (or x12723 (not x2288) x31648)
+:assumption (or (not x12031) (not x16600))
+:assumption (or x24840 (not x4586))
+:assumption (or x607 x28520)
+:assumption (or (not x15957) x26696)
+:assumption (or x6186 (not x10130))
+:assumption (or (not x5849) (not x12371))
+:assumption (or x3268 (not x7198))
+:assumption (or x4298 x24292)
+:assumption (or (not x15407) x1294)
+:assumption (or (not x17113) (not x5365))
+:assumption (or (not x27250) (not x180))
+:assumption (or (not x4190) x17206)
+:assumption (or x31733 x8363)
+:assumption (or (not x26222) (not x26148) (not x17637))
+:assumption (or (not x18069) (not x3494) (not x8977))
+:assumption (or (not x29442) x4412)
+:assumption (or (not x14644) (not x1916))
+:assumption (or x850 (not x1326))
+:assumption (or x16043 x22344)
+:assumption (or x25463 x3452)
+:assumption (or (not x5546) (not x26270))
+:assumption (or (not x15649) (not x15922))
+:assumption (or (not x1393) (not x20678))
+:assumption (or (not x4754) (not x4386) (not x2592) (not x1475) x12188 x11318 x8130)
+:assumption (or x20949 x5829)
+:assumption (or x1815 (not x13284))
+:assumption (or x19618 (not x10445))
+:assumption (or (not x12312) (not x17724))
+:assumption (or x415 x3697)
+:assumption (or (not x8146) (not x12342))
+:assumption (or (not x7423) (not x2287))
+:assumption (or (not x10225) x2798)
+:assumption (or (not x6063) (not x22052))
+:assumption (or (not x22689) x3983)
+:assumption (or (not x16003) x16360 (not x19132))
+:assumption (or x15975 x16910)
+:assumption (or x13778 (not x25423))
+:assumption (or x29543 (not x4408))
+:assumption (or (not x11432) (not x9008) x29608)
+:assumption (or (not x30409) x16510)
+:assumption (or x27896 (not x29704))
+:assumption (or x25694 (not x21639))
+:assumption (or x5647 (not x7542))
+:assumption (or x22719 (not x17160))
+:assumption (or (not x19494) (not x18554) x16193 (not x22939))
+:assumption (or x31724 x6588)
+:assumption (or x28242 (not x42))
+:assumption (or (not x24952) x3629 (not x12664))
+:assumption (or x15215 (not x15423))
+:assumption (or x18897 x8623)
+:assumption (or x10053 x6808)
+:assumption (or x30415 x5418)
+:assumption (or x15457 (not x28452) (not x21298))
+:assumption (or x6342 x106)
+:assumption (or x12181 x5688)
+:assumption (or x5925 x13111)
+:assumption (or (not x345) x453)
+:assumption (or x16741 (not x27868))
+:assumption (or (not x28242) (not x13509))
+:assumption (or (not x250) x17693 (not x26317) (not x1670) x18323 x3893 x26956 (not x656))
+:assumption (or x20949 (not x7716))
+:assumption (or x16907 (not x2741))
+:assumption (or (not x29606) x16730)
+:assumption (or (not x20581) x5047)
+:assumption (or x25797 (not x13193) x26259)
+:assumption (or (not x5197) x4702)
+:assumption (or x31128 (not x19274))
+:assumption (or (not x14121) x8107)
+:assumption (or (not x9465) (not x30906))
+:assumption (or x9701 x2550)
+:assumption (or (not x25180) x31931)
+:assumption (or (not x14069) x1126)
+:assumption (or x3298 x23328)
+:assumption (or (not x13280) (not x9370))
+:assumption (or x6735 (not x31494))
+:assumption (or x6543 x5394)
+:assumption (or x6999 (not x30111))
+:assumption (or x6920 (not x18796))
+:assumption (or x25222 x18211)
+:assumption (or (not x7720) (not x23883))
+:assumption (or (not x31672) x14517)
+:assumption (or (not x28641) x13650)
+:assumption (or (not x17302) (not x10224))
+:assumption (or (not x6541) x26735)
+:assumption (or (not x10257) x445)
+:assumption (or (not x26393) (not x17564))
+:assumption (or (not x934) x10741)
+:assumption (or x26673 (not x17930) x21298 (not x26116))
+:assumption (or x21661 x27059)
+:assumption (or x22738 (not x4638))
+:assumption (or (not x16898) (not x11929))
+:assumption (or x8623 (not x18521))
+:assumption (or (not x27589) x19774)
+:assumption (or x1312 x22885)
+:assumption (or x5334 x26948)
+:assumption (or x21883 (not x11803))
+:assumption (or x21777 x5905 x8159 (not x15078) (not x12329) x1582 x13057)
+:assumption (or x30184 (not x17662))
+:assumption (or (not x25404) (not x11849))
+:assumption (or (not x14884) x30582)
+:assumption (or x20735 x25564)
+:assumption (or (not x29786) (not x21436))
+:assumption (or (not x13956) x26747)
+:assumption (or (not x5709) x26295)
+:assumption (or x22531 (not x23839) (not x24315) x29674 x19003)
+:assumption (or (not x1386) (not x25784))
+:assumption (or (not x21361) (not x12717) (not x3835) (not x16182) x30486)
+:assumption (or (not x392) x15528)
+:assumption (or x28975 (not x26635))
+:assumption (or (not x19696) (not x24692))
+:assumption (or x380 (not x27939))
+:assumption (or (not x15630) x19764)
+:assumption (or x26206 x7088)
+:assumption (or x25180 x13477 x12026 x10655 (not x27983))
+:assumption (or x26998 (not x7824))
+:assumption (or x2334 (not x18226) (not x22820) x9796)
+:assumption (or x26666 x12701)
+:assumption (or x4286 (not x1568))
+:assumption (or x13377 (not x29305) x7229 x31429 x10076 x2975)
+:assumption (or (not x28797) x2974)
+:assumption (or (not x27424) (not x31654))
+:assumption (or (not x28078) (not x26835))
+:assumption (or (not x5247) (not x9008))
+:assumption (or x21998 (not x18567))
+:assumption (or x18870 (not x19990))
+:assumption (or (not x13503) (not x7703))
+:assumption (or x28973 x15001)
+:assumption (or x329 (not x8138) (not x28327) (not x29950))
+:assumption (or x360 (not x12417))
+:assumption (or (not x3449) (not x763))
+:assumption (or (not x10715) (not x14232))
+:assumption (or (not x5513) (not x13279))
+:assumption (or (not x13595) (not x29050))
+:assumption (or (not x3280) (not x23980))
+:assumption (or x7753 x25099)
+:assumption (or (not x6421) (not x184))
+:assumption (or x1719 (not x19464))
+:assumption (or (not x14963) (not x5533))
+:assumption (or x19819 x24513)
+:assumption (or (not x30254) (not x23402))
+:assumption (or (not x27346) (not x11281))
+:assumption (or x1588 (not x14121) (not x4594) (not x28368) x24474 x12632)
+:assumption (or x18147 x17141)
+:assumption (or x4422 (not x23491))
+:assumption (or (not x24610) x6969 x22225 x21211)
+:assumption (or (not x31873) x9929 x25886 (not x3869))
+:assumption (or x827 (not x22342))
+:assumption (or (not x25291) (not x24768))
+:assumption (or (not x27842) (not x19269))
+:assumption (or (not x27812) (not x1458) (not x29976))
+:assumption (or x18965 x6766 x3782)
+:assumption (or (not x17497) (not x26042))
+:assumption (or x6657 x11005)
+:assumption (or (not x23545) x21352)
+:assumption (or (not x23900) (not x31767))
+:assumption (or x7818 (not x7187))
+:assumption (or x27645 x10991)
+:assumption (or (not x19670) (not x30950))
+:assumption (or x16322 x13108)
+:assumption (or x25784 (not x25872))
+:assumption (or x19704 (not x6149))
+:assumption (or x13986 x18501)
+:assumption (or x9008 x15136)
+:assumption (or x25454 x12766)
+:assumption (or (not x17783) (not x31694))
+:assumption (or (not x20925) x1983)
+:assumption (or (not x463) (not x2807))
+:assumption (or x12425 (not x7205))
+:assumption (or x5265 x28019)
+:assumption (or x12307 (not x12062))
+:assumption (or x8975 (not x21333))
+:assumption (or x1199 x13896)
+:assumption (or x163 x14598)
+:assumption (or (not x24069) (not x13983))
+:assumption (or x28124 (not x19288))
+:assumption (or x30524 (not x11540))
+:assumption (or (not x18042) (not x27530) x18054 x24722)
+:assumption (or x21238 x8425)
+:assumption (or (not x1298) x13315)
+:assumption (or (not x14455) x14894)
+:assumption (or (not x310) (not x17771) (not x7817) (not x8772) x25700 x31504)
+:assumption (or x9686 x30745)
+:assumption (or x1210 x11694 (not x8599) x18064)
+:assumption (or x16870 x8532 x8060 x6589)
+:assumption (or x762 (not x3987) (not x21556))
+:assumption (or (not x7001) (not x11490))
+:assumption (or (not x29448) x28885)
+:assumption (or x7700 x30956)
+:assumption (or (not x13774) x19428)
+:assumption (or (not x27903) x25779)
+:assumption (or x14231 (not x30050) (not x19578) (not x31865))
+:assumption (or (not x30539) x9775)
+:assumption (or (not x20883) (not x225))
+:assumption (or x20404 x1393)
+:assumption (or (not x16377) (not x7522))
+:assumption (or x15505 (not x20722))
+:assumption (or x18859 (not x12425) x31788)
+:assumption (or x8189 x9659 (not x6142) x20589)
+:assumption (or (not x866) x27983 (not x20325) (not x12242))
+:assumption (or x14651 x13956)
+:assumption (or (not x8803) x29598)
+:assumption (or x18818 (not x17744) x22025 (not x8532))
+:assumption (or x2772 (not x6714))
+:assumption (or x15522 x31897)
+:assumption (or (not x21948) (not x25190))
+:assumption (or (not x21427) x3735)
+:assumption (or x24224 x11253)
+:assumption (or (not x7656) (not x31246))
+:assumption (or x2704 (not x25368))
+:assumption (or x8384 x29701)
+:assumption (or (not x29777) (not x25640))
+:assumption (or x17848 x3728)
+:assumption (or x13423 (not x13696))
+:assumption (or x13937 (not x21298))
+:assumption (or (not x30337) x30098)
+:assumption (or x31782 x30662)
+:assumption (or (not x15636) x6036)
+:assumption (or (not x17414) x15621)
+:assumption (or x16623 x5600)
+:assumption (or (not x27686) (not x10306) (not x1679) (not x2018) x14436 (not x21069) x13159)
+:assumption (or (not x25691) (not x18042))
+:assumption (or (not x13622) x23940)
+:assumption (or x31674 (not x24833))
+:assumption (or x20356 (not x14846))
+:assumption (or (not x6771) (not x5444))
+:assumption (or (not x4344) (not x14839))
+:assumption (or (not x19809) x10603)
+:assumption (or x18867 x24992 (not x4812) x628 x6381 (not x28807))
+:assumption (or (not x21036) x30930)
+:assumption (or x14839 (not x28423))
+:assumption (or x26897 (not x30998))
+:assumption (or (not x3718) (not x29439) (not x17436) x4512 x10753 x15929)
+:assumption (or x5039 (not x18254))
+:assumption (or (not x7461) (not x22046) (not x2795) (not x4878))
+:assumption (or (not x15226) x14480)
+:assumption (or x29559 x21298)
+:assumption (or (not x16442) (not x23386) x6863)
+:assumption (or x9388 (not x8011))
+:assumption (or (not x1474) x19150)
+:assumption (or x13434 (not x24188) (not x6746))
+:assumption (or x8244 (not x8382))
+:assumption (or x22288 x3130)
+:assumption (or x6951 x31910)
+:assumption (or x25795 x17440)
+:assumption (or (not x2343) (not x10354))
+:assumption (or (not x1393) x29434)
+:assumption (or (not x184) (not x28960))
+:assumption (or x2680 x17343)
+:assumption (or x27440 x31299)
+:assumption (or (not x6307) x10874 (not x4349) x20419 x7964 x2982)
+:assumption (or (not x24220) (not x24111))
+:assumption (or (not x20723) (not x20400))
+:assumption (or x18419 (not x12284))
+:assumption (or x16111 (not x15866))
+:assumption (or x7108 x31580)
+:assumption (or (not x17181) x2288)
+:assumption (or (not x13756) (not x23105))
+:assumption (or (not x15080) (not x3712))
+:assumption (or x30999 (not x9394) (not x2997) (not x31298) (not x21737) x10032)
+:assumption (or (not x10023) x846 x17670 (not x15768))
+:assumption (or (not x16954) x30817)
+:assumption (or (not x3474) (not x20576))
+:assumption (or x30949 (not x3490))
+:assumption (or x25929 (not x29268))
+:assumption (or (not x26063) x4906)
+:assumption (or x28548 x20325)
+:assumption (or x31134 (not x29606) (not x23278) x19838)
+:assumption (or (not x21831) x22060 (not x26107))
+:assumption (or x69 x454)
+:assumption (or (not x473) (not x13617))
+:assumption (or (not x11879) x10529)
+:assumption (or x9081 (not x14264))
+:assumption (or x28759 x24387)
+:assumption (or (not x8252) (not x15384))
+:assumption (or x13956 (not x6360))
+:assumption (or x24117 x10222)
+:assumption (or (not x16482) (not x9380) x24913 x6949 (not x29644) (not x18720))
+:assumption (or (not x11279) (not x8002))
+:assumption (or x4597 (not x145))
+:assumption (or x25857 (not x19705))
+:assumption (or (not x22671) x27826)
+:assumption (or (not x16477) x18850)
+:assumption (or x2133 x12324 (not x25169))
+:assumption (or x16755 (not x6651))
+:assumption (or (not x977) (not x17905))
+:assumption (or (not x17437) (not x1884))
+:assumption (or x27024 x3500)
+:assumption (or x18566 x31350 (not x19022) x13958 x29030)
+:assumption (or (not x31019) (not x29686))
+:assumption (or (not x21975) x1393 x6431 x14229 x25949 (not x14907) (not x16927) (not x2114))
+:assumption (or (not x24549) (not x29228) (not x24542))
+:assumption (or (not x30100) x16694 x31082)
+:assumption (or x5641 (not x1042) (not x19992))
+:assumption (or x6602 x21442)
+:assumption (or x8602 x28236)
+:assumption (or (not x27181) x8542)
+:assumption (or (not x12242) (not x28740))
+:assumption (or (not x31779) (not x13415))
+:assumption (or (not x20482) x4168 x8658 (not x14117))
+:assumption (or (not x18854) (not x184))
+:assumption (or (not x18435) (not x27350))
+:assumption (or x23762 (not x27358))
+:assumption (or x7887 (not x2954))
+:assumption (or (not x24041) (not x14131))
+:assumption (or x30081 x14616)
+:assumption (or x23836 x25167)
+:assumption (or x9778 x26649)
+:assumption (or x27298 (not x11374))
+:assumption (or (not x12915) (not x8400))
+:assumption (or (not x7763) (not x16698) (not x21298))
+:assumption (or x21039 (not x17606))
+:assumption (or x28026 (not x23120))
+:assumption (or (not x17781) x8756)
+:assumption (or x28887 x31638)
+:assumption (or x19666 (not x6203))
+:assumption (or (not x25818) x13786)
+:assumption (or (not x20541) x1966)
+:assumption (or (not x28660) (not x30834) (not x7653) x7642)
+:assumption (or x17542 (not x4504))
+:assumption (or x14808 x15404)
+:assumption (or x1086 (not x16802))
+:assumption (or (not x11634) (not x14287))
+:assumption (or (not x28926) (not x20658))
+:assumption (or x25659 (not x14504))
+:assumption (or x142 (not x24899))
+:assumption (or x15497 (not x26874))
+:assumption (or x6548 (not x11227))
+:assumption (or x17631 x2703)
+:assumption (or x22548 x12602 (not x18649))
+:assumption (or (not x27244) (not x13553))
+:assumption (or x24756 (not x12606))
+:assumption (or x26963 x30321)
+:assumption (or (not x3111) (not x11266))
+:assumption (or x17962 x3570)
+:assumption (or x26079 (not x16364))
+:assumption (or (not x4040) (not x6599))
+:assumption (or (not x11091) (not x10699) (not x31910) x11483 x25193)
+:assumption (or (not x19034) (not x2540))
+:assumption (or x24 (not x10741))
+:assumption (or (not x5856) (not x19755))
+:assumption (or (not x8002) (not x31348))
+:assumption (or (not x6401) x9008)
+:assumption (or (not x31699) x31142)
+:assumption (or (not x15560) (not x6219))
+:assumption (or x21353 x22019 (not x1736))
+:assumption (or (not x25791) (not x16764))
+:assumption (or x1984 (not x31240))
+:assumption (or x8435 (not x31750))
+:assumption (or (not x964) x169 x26189 (not x26087))
+:assumption (or x26081 (not x13956))
+:assumption (or x21734 (not x8468))
+:assumption (or (not x23533) x31278)
+:assumption (or (not x18707) x24142)
+:assumption (or (not x10887) (not x15583) x19831 (not x15293) x913 (not x827) (not x6853) x24726)
+:assumption (or x9810 x26410)
+:assumption (or (not x6885) (not x8027))
+:assumption (or x20590 x10632)
+:assumption (or (not x587) x11864 x15047 x6355)
+:assumption (or x28907 x14455)
+:assumption (or (not x26593) x24699 x8972 x30789 (not x24180) (not x24319) (not x19424))
+:assumption (or (not x5528) (not x9008) x29333 (not x16809) x11927)
+:assumption (or x6041 (not x27357))
+:assumption (or x19551 x24058)
+:assumption (or x2008 (not x31851))
+:assumption (or (not x24877) x10337)
+:assumption (or x27596 (not x950) x27986)
+:assumption (or (not x17580) (not x21477))
+:assumption (or (not x10294) x15736)
+:assumption (or (not x12179) x9812)
+:assumption (or x29142 x26252)
+:assumption (or (not x5931) x19500)
+:assumption (or x12208 x9855 x11799 x11052)
+:assumption (or x1009 (not x22337) (not x28298) (not x16555) x22482 (not x1972) (not x30574))
+:assumption (or (not x30158) x30689)
+:assumption (or (not x31909) x10583)
+:assumption (or x12619 (not x10342))
+:assumption (or (not x13813) (not x2043))
+:assumption (or (not x29444) (not x27104))
+:assumption (or (not x14206) (not x30650) x28100 (not x6449))
+:assumption (or (not x2711) x5788)
+:assumption (or x16984 (not x29520) x13580 (not x5574))
+:assumption (or (not x4620) x4470)
+:assumption (or x11783 x8052 x22485)
+:assumption (or (not x26849) x21298)
+:assumption (or x21650 (not x18942))
+:assumption (or (not x20766) (not x5810))
+:assumption (or x18369 x26452)
+:assumption (or (not x23396) x2334)
+:assumption (or (not x8623) x25844)
+:assumption (or (not x21815) x8373)
+:assumption (or (not x31399) x9804)
+:assumption (or x12508 x4026)
+:assumption (or (not x22421) x5760)
+:assumption (or x13874 x20584)
+:assumption (or x26591 x10522)
+:assumption (or (not x29442) x991)
+:assumption (or (not x3346) x24586 x7760 x3807 (not x23730) (not x20402))
+:assumption (or (not x9008) x7012 x2105 x12588 (not x5528))
+:assumption (or (not x6585) x27033)
+:assumption (or x26920 x24450)
+:assumption (or x28618 (not x353))
+:assumption (or x9328 (not x22528))
+:assumption (or x19696 x24692)
+:assumption (or x13096 x14849)
+:assumption (or x2586 (not x12389))
+:assumption (or x27613 x30072)
+:assumption (or (not x25055) x11383)
+:assumption (or x16025 x25917)
+:assumption (or x13978 x17898)
+:assumption (or x6122 (not x16809))
+:assumption (or (not x5666) (not x23397))
+:assumption (or (not x17225) x14912 (not x1088))
+:assumption (or (not x10020) (not x4682))
+:assumption (or (not x9694) x26879)
+:assumption (or x6064 (not x3671))
+:assumption (or (not x28949) x3098)
+:assumption (or (not x22996) (not x2536))
+:assumption (or x5468 x1768)
+:assumption (or (not x30476) x1743)
+:assumption (or x12391 (not x7002))
+:assumption (or (not x8002) x11715)
+:assumption (or (not x2592) (not x20011) (not x11462) (not x23897))
+:assumption (or (not x24722) (not x15360) x18042)
+:assumption (or x4940 (not x10944))
+:assumption (or (not x711) (not x24944))
+:assumption (or x5320 (not x4115))
+:assumption (or x4098 (not x5295))
+:assumption (or (not x825) x26219)
+:assumption (or (not x19486) x18579 x15336 x5860)
+:assumption (or x22252 x27608)
+:assumption (or x1620 (not x31845))
+:assumption (or (not x29761) (not x9623))
+:assumption (or x19573 x29099)
+:assumption (or (not x15600) x28216)
+:assumption (or x16502 (not x12907))
+:assumption (or x24051 x15019)
+:assumption (or (not x25898) (not x13079))
+:assumption (or (not x1659) x9432)
+:assumption (or x26189 x1007)
+:assumption (or x9527 (not x8367))
+:assumption (or x12557 x14206 x8)
+:assumption (or (not x29265) (not x27349) (not x11148))
+:assumption (or x12309 (not x15798) (not x22852))
+:assumption (or (not x5879) (not x1354))
+:assumption (or (not x13229) x1611)
+:assumption (or (not x8873) (not x29749))
+:assumption (or x30850 (not x18182) x13916 x5714 x18336)
+:assumption (or (not x14546) (not x17423))
+:assumption (or x25963 x30890)
+:assumption (or (not x16510) (not x3639))
+:assumption (or x7590 x13118)
+:assumption (or x17112 (not x5760))
+:assumption (or x8752 (not x6754) (not x29442) (not x3782))
+:assumption (or (not x25659) x16690)
+:assumption (or x2096 x9135)
+:assumption (or (not x20828) (not x16510))
+:assumption (or (not x27805) (not x23240) x2409 x658 (not x14945))
+:assumption (or x13885 x27608)
+:assumption (or x10723 (not x16629))
+:assumption (or x5845 x2194)
+:assumption (or x27907 x6448 (not x29254) (not x5528) (not x2066) (not x21413))
+:assumption (or (not x14373) x16025)
+:assumption (or x4524 x28992)
+:assumption (or (not x23311) (not x854) (not x10005) x15795 (not x31043) x26563)
+:assumption (or x17225 (not x9468) x4448 x31005)
+:assumption (or (not x10391) (not x8287))
+:assumption (or x23244 x6698 (not x10534))
+:assumption (or x17414 (not x10545) (not x15621) x27749)
+:assumption (or (not x21027) (not x23037))
+:assumption (or x23244 (not x9076) x13487)
+:assumption (or (not x17311) x20201)
+:assumption (or (not x7489) (not x27601))
+:assumption (or x27111 x276)
+:assumption (or (not x29343) x18746)
+:assumption (or x7251 (not x21029))
+:assumption (or x27939 x20319)
+:assumption (or x18499 (not x3715))
+:assumption (or x24330 x6212)
+:assumption (or (not x29685) (not x18334) x20153 (not x8359) x31694 (not x12969) (not x19092) (not x22986) x10684)
+:assumption (or (not x13350) x15237)
+:assumption (or (not x19130) x2213)
+:assumption (or x9588 x22248)
+:assumption (or x16173 x18022)
+:assumption (or x1640 (not x27899))
+:assumption (or x1875 (not x24717))
+:assumption (or x14585 (not x5160))
+:assumption (or x18367 x25164)
+:assumption (or x1082 (not x22855))
+:assumption (or (not x964) (not x30053))
+:assumption (or x653 (not x14517) (not x13956) x18240 x9466)
+:assumption (or x13674 x21534)
+:assumption (or (not x30031) (not x20134))
+:assumption (or (not x8602) (not x26351) x7206)
+:assumption (or x8996 (not x15811))
+:assumption (or x16234 x25748)
+:assumption (or (not x18719) (not x6378))
+:assumption (or (not x19760) x13956)
+:assumption (or (not x24205) x9777 (not x29076) x31251 x24244 (not x6666) x27355 (not x9923))
+:assumption (or x2924 x11915)
+:assumption (or (not x13320) x23911)
+:assumption (or x11427 x11036)
+:assumption (or (not x14510) x16320)
+:assumption (or (not x2698) x17440)
+:assumption (or (not x7784) (not x4783) (not x13546))
+:assumption (or x11783 x28577)
+:assumption (or x9042 (not x1809))
+:assumption (or (not x29187) x14068)
+:assumption (or x31802 x27040)
+:assumption (or (not x24853) (not x24962) x4809)
+:assumption (or x29305 x5793)
+:assumption (or x22797 x24118)
+:assumption (or (not x8599) x1478)
+:assumption (or (not x23235) x28440)
+:assumption (or (not x28890) x1478)
+:assumption (or (not x23468) x21469)
+:assumption (or (not x24552) x31209)
+:assumption (or (not x31221) (not x9747))
+:assumption (or x12316 (not x24251))
+:assumption (or x12171 x16419)
+:assumption (or (not x11678) x25756)
+:assumption (or (not x8764) x28395)
+:assumption (or (not x17576) (not x27791))
+:assumption (or x519 x13142)
+:assumption (or x29993 (not x24272))
+:assumption (or (not x14700) (not x26131))
+:assumption (or (not x9872) x4480 (not x22089) x2459 x16254 (not x12134))
+:assumption (or x14674 x9581)
+:assumption (or (not x481) x13534)
+:assumption (or (not x19323) (not x5484))
+:assumption (or (not x20890) (not x27647))
+:assumption (or (not x8938) (not x10428))
+:assumption (or (not x22138) x7653)
+:assumption (or (not x13823) x27826)
+:assumption (or x5242 x14492 x29327 (not x12407) x18911 (not x506) x19610 x17080 (not x13918))
+:assumption (or x3393 x218)
+:assumption (or (not x27736) x1629)
+:assumption (or x12628 (not x28875) (not x26961) x19178)
+:assumption (or (not x15546) (not x7264))
+:assumption (or x25315 x17946)
+:assumption (or x19973 x28540)
+:assumption (or (not x19403) x21729)
+:assumption (or (not x19044) x24854)
+:assumption (or (not x21996) x21413)
+:assumption (or x28392 (not x2457))
+:assumption (or x18768 x11833)
+:assumption (or x8051 (not x1139))
+:assumption (or (not x18293) (not x9274))
+:assumption (or (not x13424) (not x23943))
+:assumption (or x25334 x25865)
+:assumption (or x24193 (not x377))
+:assumption (or x21960 x15795)
+:assumption (or x1326 x15930 x25218 (not x15992) x27998 (not x21436) (not x850))
+:assumption (or x21822 (not x8002))
+:assumption (or (not x1759) x20539)
+:assumption (or x12928 (not x22519))
+:assumption (or (not x15360) x15643)
+:assumption (or x24534 x24)
+:assumption (or (not x22829) (not x15713))
+:assumption (or (not x27370) x25486)
+:assumption (or x24022 x24346)
+:assumption (or x8180 (not x13064) (not x16729) (not x10924) x28083)
+:assumption (or (not x8790) x1904 x29606 (not x10301) x18347)
+:assumption (or x9361 x10337)
+:assumption (or x17006 x29312)
+:assumption (or x15811 (not x25382))
+:assumption (or x10796 (not x12505))
+:assumption (or x15290 x9008)
+:assumption (or x25050 (not x9269) (not x13695) x6232)
+:assumption (or (not x26512) (not x10820))
+:assumption (or x15618 (not x23382) (not x21298))
+:assumption (or (not x31031) (not x20869))
+:assumption (or x21298 x2586)
+:assumption (or (not x7225) x10479 (not x25968))
+:assumption (or x769 x25030)
+:assumption (or x29885 x19974)
+:assumption (or (not x31403) x26599)
+:assumption (or (not x3417) (not x25125))
+:assumption (or x652 x13744 (not x21926) (not x18786) (not x12176) x22653)
+:assumption (or (not x9866) x9516)
+:assumption (or (not x10848) (not x21267))
+:assumption (or x3209 x5641)
+:assumption (or (not x24696) x24357)
+:assumption (or (not x22269) (not x24184))
+:assumption (or x16507 (not x813) (not x23511) (not x29061) (not x15974))
+:assumption (or x16819 (not x27286))
+:assumption (or (not x2062) x22898)
+:assumption (or x26910 (not x4875))
+:assumption (or x3184 x24650 x18859)
+:assumption (or x6721 (not x5434))
+:assumption (or x24802 (not x18941) x4089 (not x30235) x11184)
+:assumption (or x19074 (not x521))
+:assumption (or x8002 (not x24217) (not x8644))
+:assumption (or (not x9905) (not x688))
+:assumption (or (not x27186) x4546)
+:assumption (or (not x1181) x19139)
+:assumption (or (not x21838) (not x18859))
+:assumption (or x4330 (not x22504))
+:assumption (or x26723 (not x27639) (not x17359))
+:assumption (or x21026 (not x13687))
+:assumption (or x20065 x10901)
+:assumption (or x2261 x23955)
+:assumption (or (not x22123) x22495)
+:assumption (or x16708 (not x28657))
+:assumption (or (not x4919) (not x3753))
+:assumption (or (not x16207) x31334 x15606 (not x26460) x7591)
+:assumption (or x16373 x14839)
+:assumption (or (not x6764) x1547)
+:assumption (or x2222 x30227)
+:assumption (or (not x16510) (not x21209))
+:assumption (or x14839 x20643 x23908 (not x12412))
+:assumption (or x2288 (not x15227) (not x31649))
+:assumption (or x3848 (not x9555))
+:assumption (or x7181 x11841)
+:assumption (or x15682 x18288)
+:assumption (or x7117 x29116)
+:assumption (or (not x6246) (not x4916))
+:assumption (or x5768 x28328)
+:assumption (or (not x20828) (not x6707))
+:assumption (or (not x13658) (not x5654))
+:assumption (or (not x4214) (not x20505))
+:assumption (or x28328 (not x5148))
+:assumption (or (not x1688) x5791 x6969)
+:assumption (or (not x17152) (not x18983))
+:assumption (or (not x21026) x29295)
+:assumption (or (not x14548) (not x15585))
+:assumption (or (not x3597) x2238)
+:assumption (or (not x9924) x21565 (not x277) (not x10994))
+:assumption (or x28232 (not x26703))
+:assumption (or x6115 (not x26388))
+:assumption (or x3082 (not x16792) (not x28547) (not x20275) x17534)
+:assumption (or (not x7542) (not x9960))
+:assumption (or (not x3179) x26284 x8002 x11092 x23244)
+:assumption (or (not x15718) (not x16468))
+:assumption (or (not x19920) (not x4738))
+:assumption (or x30232 x30836)
+:assumption (or (not x15078) (not x23890))
+:assumption (or x14573 x30954)
+:assumption (or (not x892) (not x26495))
+:assumption (or (not x13573) (not x28428))
+:assumption (or x28898 x31579)
+:assumption (or (not x30945) (not x9499))
+:assumption (or x21126 x23779)
+:assumption (or x17380 (not x29726) (not x15896))
+:assumption (or (not x31734) (not x2596))
+:assumption (or (not x19636) (not x23701) x3782 (not x24004))
+:assumption (or x29606 (not x21023) x4291)
+:assumption (or (not x4356) (not x6344))
+:assumption (or x18302 (not x22251))
+:assumption (or x20078 x8264)
+:assumption (or x10483 x16233)
+:assumption (or x31762 x18315)
+:assumption (or (not x24754) x2704 x28663)
+:assumption (or x9751 (not x11734) (not x11484) (not x11813) x29250 x5834 (not x24271) x10498)
+:assumption (or x4925 (not x17758))
+:assumption (or x30511 (not x18270))
+:assumption (or (not x26112) (not x1193) (not x7084))
+:assumption (or x172 x5203)
+:assumption (or x31262 x13996)
+:assumption (or (not x9146) x30208)
+:assumption (or (not x25976) x24722)
+:assumption (or (not x2434) (not x19202) (not x2734) (not x17894) x9285)
+:assumption (or x20594 (not x3281))
+:assumption (or (not x17804) (not x15273))
+:assumption (or x2056 x27470)
+:assumption (or (not x24156) x14027)
+:assumption (or (not x18626) x27266)
+:assumption (or (not x8844) (not x15505) (not x15027) x11883 x809)
+:assumption (or (not x14401) (not x20814) x26136 x2607 x31745 x10512 (not x26842) (not x5218) x12241)
+:assumption (or x2628 x13172)
+:assumption (or x21802 x1342)
+:assumption (or x29542 (not x15200))
+:assumption (or x11557 x2537)
+:assumption (or x5445 x29333)
+:assumption (or x24820 (not x3583))
+:assumption (or (not x30407) x23094)
+:assumption (or (not x27681) (not x24346))
+:assumption (or (not x11754) (not x3714))
+:assumption (or (not x1101) x10397)
+:assumption (or x24415 x18519 x9394 (not x19711))
+:assumption (or (not x23705) (not x31024) (not x8069))
+:assumption (or (not x4481) x5279)
+:assumption (or (not x28926) x12315 x12523 x6330 (not x4844) (not x24523))
+:assumption (or x2235 x15974)
+:assumption (or x12795 (not x27965))
+:assumption (or x10879 x6504)
+:assumption (or x2660 (not x7933))
+:assumption (or x10121 (not x30113))
+:assumption (or x11741 (not x28771) (not x7859))
+:assumption (or (not x12429) x13962)
+:assumption (or (not x5962) (not x1491))
+:assumption (or x21690 (not x8746))
+:assumption (or (not x24911) (not x16379))
+:assumption (or x13301 x27908)
+:assumption (or (not x29369) (not x10640))
+:assumption (or (not x13178) (not x21287))
+:assumption (or x7713 (not x25665))
+:assumption (or x4829 x12242 (not x20325) (not x28171))
+:assumption (or (not x242) (not x18859) x15823)
+:assumption (or (not x25408) (not x8910))
+:assumption (or x19879 x10752)
+:assumption (or (not x21416) (not x951))
+:assumption (or x5394 (not x29198))
+:assumption (or x14320 (not x6292))
+:assumption (or x12669 x5460 x13165)
+:assumption (or (not x6686) (not x17737))
+:assumption (or x9668 x7265)
+:assumption (or (not x18505) (not x18501))
+:assumption (or (not x14418) (not x12013))
+:assumption (or x22529 x2316)
+:assumption (or (not x22742) x3826 (not x4853) (not x14087))
+:assumption (or (not x8002) x1471)
+:assumption (or x9423 x13250)
+:assumption (or (not x8002) x17491)
+:assumption (or (not x7929) (not x27207))
+:assumption (or (not x26945) x5425)
+:assumption (or (not x11646) x27238)
+:assumption (or (not x1948) (not x29078))
+:assumption (or (not x13444) x16745 x28448 x13790)
+:assumption (or (not x3845) (not x18629))
+:assumption (or x2564 x31734)
+:assumption (or (not x10479) (not x6942))
+:assumption (or x26810 (not x16283))
+:assumption (or x3356 x16374 x14455 x29191)
+:assumption (or (not x13956) (not x19501) x7012 (not x25132))
+:assumption (or (not x16886) (not x22092) (not x886) (not x26897) (not x16892) (not x8343))
+:assumption (or x27596 x16638)
+:assumption (or (not x18871) (not x10357))
+:assumption (or (not x5578) (not x22065))
+:assumption (or (not x10804) (not x5274) x23459)
+:assumption (or x31260 x15025)
+:assumption (or x28211 x29375)
+:assumption (or x19859 (not x12646))
+:assumption (or x1764 x31920)
+:assumption (or (not x17342) x11950)
+:assumption (or (not x15105) (not x23266))
+:assumption (or (not x9722) (not x13080))
+:assumption (or (not x20574) (not x13181))
+:assumption (or (not x29188) (not x24465) x8632 (not x15515) x20269 (not x11250))
+:assumption (or x23689 (not x23102))
+:assumption (or x5028 x22745 (not x5696) x19992 x25659)
+:assumption (or x4925 x326)
+:assumption (or x24613 x20550)
+:assumption (or (not x26800) (not x26673))
+:assumption (or (not x18553) (not x9839))
+:assumption (or (not x19616) (not x279))
+:assumption (or (not x3841) (not x18658))
+:assumption (or x24399 x12163)
+:assumption (or x19661 (not x8047))
+:assumption (or (not x25822) x19801 (not x30029) x5518 (not x9989))
+:assumption (or (not x14803) x12508)
+:assumption (or (not x15957) (not x7487) x21012 (not x23474) x12824 x27534 (not x19858) x1803 (not x3135))
+:assumption (or (not x30124) (not x14806))
+:assumption (or (not x6947) x5028)
+:assumption (or x26480 x21298)
+:assumption (or x21815 (not x29948))
+:assumption (or x25486 (not x14312))
+:assumption (or (not x556) x14105)
+:assumption (or (not x1030) (not x16374))
+:assumption (or x2498 x10091)
+:assumption (or x29661 (not x8574))
+:assumption (or x26675 (not x28302))
+:assumption (or x18824 (not x18231))
+:assumption (or x13721 x20909)
+:assumption (or x19729 x1516)
+:assumption (or x22476 x21202)
+:assumption (or x28973 x26167)
+:assumption (or (not x26263) (not x8997))
+:assumption (or x26783 x21936 (not x13010) (not x28231))
+:assumption (or (not x23244) x4145)
+:assumption (or (not x16809) (not x26748))
+:assumption (or (not x20039) x20666 (not x8819))
+:assumption (or x30667 x24644)
+:assumption (or (not x19082) x2774)
+:assumption (or x16106 (not x3409))
+:assumption (or x11277 x10427)
+:assumption (or x9989 x20701)
+:assumption (or (not x20584) x8378 (not x20700) x6395 (not x7978))
+:assumption (or (not x19167) x7210)
+:assumption (or x2980 x18349 x6128 (not x29511))
+:assumption (or x15029 x12723 x19365 x8382)
+:assumption (or (not x3270) x6795)
+:assumption (or x31785 (not x3715))
+:assumption (or (not x24650) (not x28330))
+:assumption (or x4206 x30188 x19171 x14035 x28283 (not x4086) (not x370))
+:assumption (or x6274 (not x9356))
+:assumption (or x16952 (not x7448))
+:assumption (or (not x25659) x17528)
+:assumption (or x14445 (not x15673))
+:assumption (or (not x15926) (not x21812))
+:assumption (or x27707 (not x13018) (not x23858) (not x20563))
+:assumption (or (not x12268) x29116)
+:assumption (or (not x21226) x7284)
+:assumption (or (not x16809) (not x20550) x14428)
+:assumption (or x30216 (not x28909) x8002)
+:assumption (or x23727 (not x12054))
+:assumption (or x1786 (not x7748))
+:assumption (or x21078 (not x16364))
+:assumption (or x17669 (not x13139))
+:assumption (or (not x7685) x4297)
+:assumption (or (not x14351) (not x21653))
+:assumption (or (not x17335) (not x26772))
+:assumption (or (not x25462) (not x30400))
+:assumption (or x9021 x31321)
+:assumption (or (not x6951) x5495)
+:assumption (or x10711 (not x9935))
+:assumption (or x5605 (not x23244))
+:assumption (or (not x16867) (not x13421))
+:assumption (or x8825 x15206)
+:assumption (or (not x442) (not x15489))
+:assumption (or (not x23690) (not x9570))
+:assumption (or (not x3410) x17970 x8270 (not x19123) x28195 x23299)
+:assumption (or (not x4903) x6545)
+:assumption (or (not x21189) (not x25157))
+:assumption (or x17301 x4614 x5484 x19323)
+:assumption (or x20519 (not x21931))
+:assumption (or (not x27341) (not x6381))
+:assumption (or x22092 (not x9116))
+:assumption (or (not x939) x15758)
+:assumption (or x13802 (not x12343))
+:assumption (or x22399 x18003)
+:assumption (or (not x28129) (not x22453))
+:assumption (or (not x2367) x17780)
+:assumption (or (not x12804) (not x8177))
+:assumption (or (not x949) x11997)
+:assumption (or x19252 (not x15621))
+:assumption (or x3718 (not x4512))
+:assumption (or (not x13802) (not x30415) x21183 (not x8002))
+:assumption (or x14351 (not x9807) x21653)
+:assumption (or x4113 (not x19214) x17918 x12536)
+:assumption (or (not x17752) x20503)
+:assumption (or x19347 (not x27061))
+:assumption (or x27233 (not x26960))
+:assumption (or (not x22431) (not x19439) (not x11374) x21549 (not x27541) x7434)
+:assumption (or x13319 x9043 x4693 x16588 x2783 (not x11176) x26176)
+:assumption (or (not x15961) (not x3846))
+:assumption (or (not x8586) (not x3956))
+:assumption (or (not x4119) (not x6141))
+:assumption (or (not x26183) (not x1170))
+:assumption (or (not x11641) x31803)
+:assumption (or x15301 x8065)
+:assumption (or (not x25766) x61)
+:assumption (or (not x19992) x13789)
+:assumption (or (not x22531) x9610)
+:assumption (or x5846 x19707)
+:assumption (or x19101 (not x8201))
+:assumption (or x31475 x4511)
+:assumption (or x21233 (not x1542))
+:assumption (or x9095 x21440 x5846)
+:assumption (or x3837 x2190)
+:assumption (or x5378 (not x10303))
+:assumption (or (not x27333) x4243)
+:assumption (or x6536 x14211)
+:assumption (or x31116 (not x432))
+:assumption (or x19075 (not x13546))
+:assumption (or (not x2717) x8527)
+:assumption (or (not x25376) (not x4043))
+:assumption (or x13956 (not x24058) (not x19551) x8002 x23244 (not x20794))
+:assumption (or x31617 x18462)
+:assumption (or x3717 x2502)
+:assumption (or x1533 (not x21004))
+:assumption (or x25511 x20006)
+:assumption (or x754 x29410)
+:assumption (or x27562 (not x15946) x27884)
+:assumption (or x12856 x17476 (not x11005) (not x6756))
+:assumption (or (not x9008) (not x28326))
+:assumption (or x2444 (not x1803))
+:assumption (or (not x8003) x26516)
+:assumption (or (not x17700) (not x827))
+:assumption (or (not x28646) (not x8158) (not x7638) (not x13323) x29289 x27921 (not x8193) (not x11081) x22450)
+:assumption (or x30646 x19931 x27477 (not x10120))
+:assumption (or x8241 (not x29369))
+:assumption (or x4794 x26844)
+:assumption (or (not x5528) (not x2047) (not x25008) (not x9008) x23633)
+:assumption (or x1460 x31806)
+:assumption (or x29653 x2601)
+:assumption (or (not x3103) (not x26896))
+:assumption (or (not x13641) x26909)
+:assumption (or (not x24492) x2918)
+:assumption (or (not x6403) (not x29258))
+:assumption (or x22448 (not x13477))
+:assumption (or (not x23244) (not x21804))
+:assumption (or (not x11162) (not x13321) x29476 x18666 x5711 (not x17388) (not x30719))
+:assumption (or (not x19678) (not x11429))
+:assumption (or (not x25756) x11678)
+:assumption (or x30937 (not x2444) (not x3135))
+:assumption (or x10849 (not x7511))
+:assumption (or (not x6168) x12683)
+:assumption (or x25622 (not x20914))
+:assumption (or x11285 (not x1480))
+:assumption (or (not x17171) (not x14833))
+:assumption (or (not x18856) x22715)
+:assumption (or x10905 x3863)
+:assumption (or (not x14500) x29799)
+:assumption (or (not x14067) x6792)
+:assumption (or (not x10104) x10646)
+:assumption (or x28998 x29462)
+:assumption (or x17084 (not x20047))
+:assumption (or (not x19562) (not x16713))
+:assumption (or (not x17804) x8411)
+:assumption (or (not x21587) (not x26487) (not x10823) (not x9002) x1090)
+:assumption (or (not x6088) x15284)
+:assumption (or (not x23560) (not x24853))
+:assumption (or x3133 (not x20762) x30245 x22668 (not x20087))
+:assumption (or x7756 x2469)
+:assumption (or x28118 (not x240))
+:assumption (or x28085 (not x11901))
+:assumption (or (not x2202) x31158)
+:assumption (or (not x10878) (not x25216))
+:assumption (or x4709 x19396)
+:assumption (or (not x25579) (not x16510) (not x21815) (not x18519) (not x288))
+:assumption (or (not x29771) (not x9356))
+:assumption (or (not x1873) (not x27481) x8002)
+:assumption (or (not x11614) x29848)
+:assumption (or x27742 x10909 x22819)
+:assumption (or x26487 (not x31335))
+:assumption (or x10572 (not x22923))
+:assumption (or x8002 x10785 x3784 (not x29921) (not x14663) x9036)
+:assumption (or x11015 x18274)
+:assumption (or (not x27780) x22986)
+:assumption (or (not x4759) x5206 (not x13956) x9804)
+:assumption (or x5045 (not x26192))
+:assumption (or x4743 (not x23244))
+:assumption (or x26359 (not x21768))
+:assumption (or x14802 (not x15972))
+:assumption (or (not x23187) (not x17200) (not x16304))
+:assumption (or (not x22457) (not x7780))
+:assumption (or x23399 (not x18530))
+:assumption (or x16105 x4400)
+:assumption (or (not x9804) (not x13956) (not x12036) x5206)
+:assumption (or (not x24166) (not x9896))
+:assumption (or x3555 x1636)
+:assumption (or x7652 x735)
+:assumption (or x14698 (not x25376) (not x10635))
+:assumption (or x2103 (not x2490))
+:assumption (or (not x9151) (not x9961))
+:assumption (or x28896 x25929 x18254 (not x31040) (not x14924) x18629 x29225 (not x27260))
+:assumption (or x3453 (not x26847))
+:assumption (or x11659 x22406 (not x22476) (not x21202))
+:assumption (or (not x3078) (not x6691) (not x18985) x9733 (not x11189) (not x6416))
+:assumption (or x13552 (not x19754))
+:assumption (or x24270 (not x27725))
+:assumption (or x2945 x16)
+:assumption (or x27366 x9000)
+:assumption (or (not x4069) (not x12899))
+:assumption (or x5472 (not x5886))
+:assumption (or x15007 x22729)
+:assumption (or (not x30652) (not x25443))
+:assumption (or x25580 x22465)
+:assumption (or (not x6569) x21432)
+:assumption (or x30258 (not x6652))
+:assumption (or (not x6022) (not x19246))
+:assumption (or x5085 (not x16745))
+:assumption (or x20799 x10051)
+:assumption (or x18771 (not x12049))
+:assumption (or x10735 (not x4386) x2012 x21690 (not x23911))
+:assumption (or x26432 (not x9545))
+:assumption (or x2135 x5445)
+:assumption (or x15033 (not x30110))
+:assumption (or x2191 x645)
+:assumption (or x3782 (not x1335))
+:assumption (or (not x14771) x5199)
+:assumption (or x15567 x10250)
+:assumption (or x20840 x9113)
+:assumption (or x26348 x14517)
+:assumption (or x23549 (not x16478))
+:assumption (or (not x4377) x15565)
+:assumption (or (not x2718) (not x15046))
+:assumption (or x11183 x9861)
+:assumption (or (not x3654) (not x16981))
+:assumption (or (not x27692) (not x25485))
+:assumption (or (not x2736) (not x16646))
+:assumption (or (not x12716) (not x18321))
+:assumption (or (not x1393) (not x13264) x11764)
+:assumption (or x16025 x5693)
+:assumption (or x3786 (not x27064))
+:assumption (or (not x21227) x5394)
+:assumption (or x8517 (not x2665))
+:assumption (or x11241 x4094)
+:assumption (or x17097 x11288 x15551 x10097)
+:assumption (or (not x6847) x17540 (not x8002))
+:assumption (or x26432 x13772 x6367)
+:assumption (or x190 (not x12235) x6743 (not x26050) (not x30517) x24484 x15053)
+:assumption (or (not x11759) x22124)
+:assumption (or x424 x13802)
+:assumption (or x4936 x19678)
+:assumption (or x12666 x12242)
+:assumption (or x30109 x29726)
+:assumption (or (not x31751) x13012)
+:assumption (or x4832 (not x1512))
+:assumption (or (not x21008) x5179)
+:assumption (or x6192 (not x10159))
+:assumption (or (not x18310) (not x20784))
+:assumption (or x7829 x11186)
+:assumption (or x21542 x11600)
+:assumption (or (not x5528) (not x26647) (not x1428) (not x9008) (not x28342))
+:assumption (or (not x667) (not x14928))
+:assumption (or x4039 x5234)
+:assumption (or x3224 (not x13914))
+:assumption (or x12978 x30377)
+:assumption (or x990 x12533)
+:assumption (or (not x5733) x15431)
+:assumption (or (not x9457) x27862)
+:assumption (or (not x25513) x2256)
+:assumption (or x19606 (not x19801))
+:assumption (or (not x25168) x7673)
+:assumption (or x3761 (not x6837))
+:assumption (or (not x18821) (not x22438))
+:assumption (or x17124 x10861)
+:assumption (or (not x17331) x7035)
+:assumption (or x28626 (not x30534) x20438 x21815 x18344 (not x21241))
+:assumption (or x9008 (not x30677))
+:assumption (or x29312 x775)
+:assumption (or (not x13669) (not x23245))
+:assumption (or (not x176) x1429)
+:assumption (or (not x27398) (not x7488))
+:assumption (or x17861 x455 (not x6988) x867)
+:assumption (or x6128 x10023)
+:assumption (or (not x17613) x19369)
+:assumption (or (not x13415) (not x9856))
+:assumption (or x7885 (not x11166))
+:assumption (or x16935 (not x25092))
+:assumption (or x3011 (not x19614))
+:assumption (or x5367 x1472)
+:assumption (or (not x31344) (not x9574))
+:assumption (or x24029 x1453)
+:assumption (or (not x10056) x13036)
+:assumption (or x12206 x6838)
+:assumption (or (not x30441) x2172)
+:assumption (or x22770 (not x3954))
+:assumption (or (not x15638) x16630)
+:assumption (or (not x24391) (not x8532) x22025 (not x28846))
+:assumption (or x24609 (not x5599))
+:assumption (or x8002 (not x21458) x284)
+:assumption (or x3453 (not x7277))
+:assumption (or x27941 x2040 (not x5009) (not x753) x27478 x22386)
+:assumption (or x7487 (not x4842))
+:assumption (or (not x3113) (not x30892))
+:assumption (or x7743 (not x8548))
+:assumption (or x30174 x12843)
+:assumption (or (not x31717) (not x21026))
+:assumption (or x18588 (not x26678))
+:assumption (or x26683 (not x9025) (not x6149))
+:assumption (or (not x29573) x10738)
+:assumption (or (not x17068) x918)
+:assumption (or (not x1864) x14203)
+:assumption (or x3880 (not x9374))
+:assumption (or (not x26379) x24598)
+:assumption (or (not x23495) x5898)
+:assumption (or x9349 (not x5547))
+:assumption (or (not x6254) (not x13562))
+:assumption (or x4189 (not x27911))
+:assumption (or (not x29531) x19414)
+:assumption (or (not x18567) x18436)
+:assumption (or x25189 x19223 x3600 (not x28743))
+:assumption (or x16390 x17075 x13720)
+:assumption (or (not x15795) x12493)
+:assumption (or (not x18403) x26253)
+:assumption (or x8499 x8779)
+:assumption (or (not x29693) x12390)
+:assumption (or x15914 x26517)
+:assumption (or (not x14987) x1805)
+:assumption (or (not x5383) (not x25886))
+:assumption (or x27570 x9993)
+:assumption (or (not x25123) (not x14918) (not x16025))
+:assumption (or x11295 (not x28005))
+:assumption (or x18859 x29078)
+:assumption (or x27486 (not x20544))
+:assumption (or (not x2355) (not x11524))
+:assumption (or x9795 (not x30100))
+:assumption (or (not x20575) (not x31286))
+:assumption (or x3610 x21850)
+:assumption (or (not x10247) x19183)
+:assumption (or x30082 (not x15971))
+:assumption (or (not x28174) (not x19752))
+:assumption (or (not x605) x28912 (not x13253) x13415 (not x29649) (not x30457))
+:assumption (or (not x27722) x8309)
+:assumption (or (not x30067) (not x17972))
+:assumption (or x28845 (not x2177))
+:assumption (or (not x6078) (not x16421))
+:assumption (or x19428 (not x2873))
+:assumption (or (not x13738) x20022)
+:assumption (or x14206 (not x25503) (not x30650) (not x6449))
+:assumption (or x31331 x6775)
+:assumption (or x18417 (not x2424))
+:assumption (or x25727 x20092)
+:assumption (or x6635 x2327)
+:assumption (or (not x31153) (not x6642))
+:assumption (or x12427 (not x18970))
+:assumption (or (not x5667) x4519 x14467 x19862)
+:assumption (or (not x5296) x7652)
+:assumption (or (not x28950) (not x1425) (not x1393))
+:assumption (or x22631 x11970)
+:assumption (or (not x17701) (not x26888))
+:assumption (or x12164 (not x169) (not x12353))
+:assumption (or (not x7180) x3710)
+:assumption (or x16663 x28252)
+:assumption (or x23244 x21742)
+:assumption (or (not x6328) x15861 x16745 x13444)
+:assumption (or (not x21174) x24632 x11338 (not x18570) (not x21361) (not x11263))
+:assumption (or (not x4378) x22547)
+:assumption (or x1855 (not x12671) x10226)
+:assumption (or (not x26354) (not x2550) (not x9701) x8475)
+:assumption (or x6637 x858)
+:assumption (or x7250 (not x17553) x5981)
+:assumption (or x31685 x4386)
+:assumption (or x8961 x4679)
+:assumption (or (not x20232) x17746 x7025 (not x15578))
+:assumption (or x14235 x29726)
+:assumption (or (not x13751) x4411)
+:assumption (or x26286 x20871)
+:assumption (or (not x3930) x669)
+:assumption (or (not x17348) x16118)
+:assumption (or (not x20970) (not x27832))
+:assumption (or x9303 (not x4788))
+:assumption (or x24913 x14493)
+:assumption (or x24332 x16473)
+:assumption (or x24651 x8002)
+:assumption (or x31159 (not x31461))
+:assumption (or x18112 (not x7201))
+:assumption (or x25341 (not x11487))
+:assumption (or (not x4432) (not x2800))
+:assumption (or x6681 (not x5121))
+:assumption (or x3185 (not x11897))
+:assumption (or x8195 x20529 x5882 x24766 (not x3614))
+:assumption (or (not x6125) (not x8307))
+:assumption (or x219 (not x13419))
+:assumption (or x4526 (not x13508))
+:assumption (or (not x11246) (not x16907) x30553)
+:assumption (or (not x8993) (not x5801))
+:assumption (or x29312 (not x23359))
+:assumption (or (not x13837) (not x20384))
+:assumption (or (not x27235) x28288)
+:assumption (or x3444 x13236)
+:assumption (or x19924 (not x1644))
+:assumption (or x8111 (not x12883))
+:assumption (or (not x5497) (not x30973) (not x15917) (not x10064))
+:assumption (or (not x25355) x18639)
+:assumption (or (not x30833) x18996)
+:assumption (or (not x20359) (not x2551))
+:assumption (or (not x29287) x8096 x5939)
+:assumption (or x30927 x1219)
+:assumption (or (not x450) (not x16230))
+:assumption (or (not x4251) (not x11181) (not x12766) (not x25918) x22073 x4939 x3949 x9352 (not x25454))
+:assumption (or (not x25686) (not x1613))
+:assumption (or (not x5367) x24553 x6053 x26645)
+:assumption (or x24697 x13287 x27479 (not x14083) (not x529))
+:assumption (or (not x16958) x16169)
+:assumption (or (not x14119) (not x23386))
+:assumption (or x18110 x29468)
+:assumption (or (not x12222) (not x14986))
+:assumption (or (not x4872) (not x8002))
+:assumption (or (not x25934) x27486)
+:assumption (or (not x31709) x26360)
+:assumption (or (not x645) x27478 x29224 (not x2191) x23679)
+:assumption (or (not x22180) x29629 (not x9938) x20308 x25641 x24309 (not x4282))
+:assumption (or (not x22276) (not x23082))
+:assumption (or x2776 x4005)
+:assumption (or x3244 x17654)
+:assumption (or (not x23151) (not x17105))
+:assumption (or x29872 x1458 x6653)
+:assumption (or (not x28784) x22637)
+:assumption (or x30181 x5066)
+:assumption (or (not x24367) (not x5535))
+:assumption (or x23018 x21056 x16802)
+:assumption (or (not x27233) x9084)
+:assumption (or (not x288) (not x24828))
+:assumption (or (not x6482) (not x17924))
+:assumption (or x18069 x3494 (not x18043))
+:assumption (or (not x26096) (not x24226))
+:assumption (or x24275 x5844)
+:assumption (or x14317 (not x631))
+:assumption (or x21946 x17860)
+:assumption (or x5528 x4108)
+:assumption (or (not x27517) x271)
+:assumption (or x729 (not x17008))
+:assumption (or x10604 x252 x22253)
+:assumption (or (not x22385) (not x18104))
+:assumption (or (not x25659) (not x2078))
+:assumption (or (not x27355) (not x31251))
+:assumption (or x14174 x5747 (not x218) x17075)
+:assumption (or (not x7229) (not x1360))
+:assumption (or (not x27091) (not x127))
+:assumption (or (not x31712) (not x22935))
+:assumption (or x16946 (not x31625))
+:assumption (or x6622 (not x7012) x19501 (not x5528) (not x9008))
+:assumption (or x18105 (not x19668))
+:assumption (or x25062 x30868)
+:assumption (or (not x4360) x17939)
+:assumption (or (not x12414) x22788)
+:assumption (or x23812 (not x6748))
+:assumption (or x9273 (not x23881))
+:assumption (or (not x30947) x13520)
+:assumption (or (not x27340) (not x8961))
+:assumption (or x23244 (not x8931))
+:assumption (or (not x26320) (not x25059))
+:assumption (or x24771 x28427)
+:assumption (or (not x16025) (not x25613))
+:assumption (or (not x11744) x8842)
+:assumption (or (not x26019) x20366)
+:assumption (or (not x23482) (not x29580))
+:assumption (or (not x69) (not x18517))
+:assumption (or (not x22830) (not x12217))
+:assumption (or (not x6411) (not x8518))
+:assumption (or (not x20887) (not x11754))
+:assumption (or x764 (not x7270))
+:assumption (or (not x11355) (not x26656) x21221)
+:assumption (or x7214 x25808)
+:assumption (or x21155 (not x24551))
+:assumption (or x17939 (not x1837))
+:assumption (or x12081 (not x7658))
+:assumption (or (not x14760) x20356)
+:assumption (or (not x13651) x20415)
+:assumption (or x10394 x1920)
+:assumption (or x31829 (not x2878) (not x21911))
+:assumption (or (not x23386) (not x21239) x5012 x3909)
+:assumption (or x31296 x28475)
+:assumption (or x14522 x22427)
+:assumption (or (not x19969) x25899 x27625 (not x28931))
+:assumption (or (not x157) x22549 x23849 x17543 x7835 x1119 x1948 x28724)
+:assumption (or (not x18621) x19747)
+:assumption (or x2949 (not x24689))
+:assumption (or (not x12211) x21254)
+:assumption (or x1485 (not x5518))
+:assumption (or x28596 (not x1393))
+:assumption (or (not x31374) (not x7438))
+:assumption (or (not x25386) x12981)
+:assumption (or (not x20421) x21348)
+:assumption (or (not x5007) x2427 (not x8236) (not x6882) x29499)
+:assumption (or (not x19696) x31782)
+:assumption (or x11312 x795)
+:assumption (or (not x7038) (not x19166))
+:assumption (or (not x22902) x16648 x31799 (not x8156))
+:assumption (or x12165 x6289)
+:assumption (or x14684 x23467)
+:assumption (or (not x6280) (not x30887))
+:assumption (or (not x20093) x4345)
+:assumption (or x28388 x16392)
+:assumption (or x18540 x18470)
+:assumption (or (not x7376) x11492)
+:assumption (or (not x28449) (not x7173) x18795 (not x3243))
+:assumption (or x13 x29442)
+:assumption (or (not x17064) (not x26587))
+:assumption (or (not x12842) x24772)
+:assumption (or (not x23077) x24901)
+:assumption (or (not x29811) (not x20827) (not x28224))
+:assumption (or (not x18915) x5084)
+:assumption (or x20571 x15166)
+:assumption (or x28198 (not x2309))
+:assumption (or (not x21416) (not x19619))
+:assumption (or (not x28747) x31653 x4848 (not x3025))
+:assumption (or x4378 (not x28305))
+:assumption (or (not x13963) (not x28415))
+:assumption (or (not x22709) x12150)
+:assumption (or x17128 (not x25438))
+:assumption (or (not x24940) (not x27173))
+:assumption (or x13602 x31520)
+:assumption (or x20004 x20872)
+:assumption (or (not x26034) (not x24853))
+:assumption (or (not x6243) x7577)
+:assumption (or (not x5580) (not x4889))
+:assumption (or (not x20409) x25366)
+:assumption (or x19205 x24206)
+:assumption (or (not x13018) x19870 x16991 (not x28143))
+:assumption (or (not x10224) (not x13895))
+:assumption (or x5103 x17701)
+:assumption (or x20967 (not x25587))
+:assumption (or x28288 (not x6961))
+:assumption (or x31537 x22407)
+:assumption (or (not x20599) x6)
+:assumption (or (not x4806) x19428)
+:assumption (or (not x14152) x14884)
+:assumption (or x17925 (not x18042))
+:assumption (or x151 x17391)
+:assumption (or x1307 (not x827))
+:assumption (or (not x23729) x27699)
+:assumption (or (not x24361) x26354)
+:assumption (or (not x9640) (not x24313))
+:assumption (or (not x19479) x20550)
+:assumption (or x18372 x10064)
+:assumption (or x15955 x15979)
+:assumption (or (not x15914) (not x18896) (not x22812) (not x24224) x14076)
+:assumption (or x9428 (not x13956))
+:assumption (or x14078 (not x917) x9240 (not x99))
+:assumption (or (not x28003) x23244)
+:assumption (or (not x9647) (not x31870))
+:assumption (or (not x24467) x11426)
+:assumption (or x24893 (not x3324))
+:assumption (or x17728 x5736 x16025)
+:assumption (or x9757 (not x5171))
+:assumption (or (not x20723) x25159)
+:assumption (or (not x12938) x18376)
+:assumption (or (not x27814) x20960)
+:assumption (or (not x21777) (not x8159))
+:assumption (or x1347 (not x8103))
+:assumption (or x17883 (not x28657))
+:assumption (or x25333 (not x9399))
+:assumption (or x7108 x25417)
+:assumption (or x30860 (not x1102))
+:assumption (or (not x21511) x8229 x19646)
+:assumption (or (not x20469) x7408)
+:assumption (or (not x31917) x25104)
+:assumption (or x3401 (not x23376))
+:assumption (or (not x15546) (not x12513))
+:assumption (or (not x25659) x14533 (not x11286))
+:assumption (or x16374 (not x27317))
+:assumption (or (not x11237) (not x692))
+:assumption (or x9388 (not x11853))
+:assumption (or (not x918) (not x24997))
+:assumption (or (not x7797) x9012)
+:assumption (or (not x5308) x3340)
+:assumption (or (not x13952) x10768)
+:assumption (or (not x25492) x2571)
+:assumption (or (not x23103) (not x29821))
+:assumption (or x6142 (not x4000))
+:assumption (or x9008 (not x30159))
+:assumption (or (not x24702) (not x8078))
+:assumption (or x10929 x27306)
+:assumption (or (not x26701) (not x28403))
+:assumption (or (not x11355) (not x12405))
+:assumption (or (not x26844) (not x5474))
+:assumption (or (not x13890) x3026)
+:assumption (or x24640 (not x28143))
+:assumption (or x21259 (not x1694))
+:assumption (or x6289 (not x4540))
+:assumption (or (not x10256) (not x18883))
+:assumption (or x27363 (not x20722))
+:assumption (or (not x27064) (not x8513))
+:assumption (or x23284 x9849)
+:assumption (or x30709 (not x31178))
+:assumption (or (not x27627) (not x190))
+:assumption (or (not x8002) x22064 (not x13175))
+:assumption (or (not x3657) (not x279))
+:assumption (or (not x13130) (not x21667))
+:assumption (or (not x29835) x28364)
+:assumption (or x2159 x18735)
+:assumption (or (not x25875) (not x21298) (not x21868))
+:assumption (or (not x15437) (not x5049))
+:assumption (or x20376 x12401)
+:assumption (or (not x21475) x9772)
+:assumption (or (not x734) x23009)
+:assumption (or x7490 (not x20883))
+:assumption (or (not x20374) (not x7942))
+:assumption (or x13956 x1630)
+:assumption (or (not x14597) x28730)
+:assumption (or (not x11819) x31266)
+:assumption (or x12520 (not x10156))
+:assumption (or (not x18914) (not x29479))
+:assumption (or (not x14712) (not x17618))
+:assumption (or (not x26767) x708)
+:assumption (or x1393 x10211)
+:assumption (or x1657 x28890 (not x4058) (not x21571) x7748)
+:assumption (or x28819 (not x29088))
+:assumption (or x27602 (not x27905) x1917)
+:assumption (or (not x19290) x8828)
+:assumption (or x28637 (not x10649))
+:assumption (or (not x29649) x16025 x22507)
+:assumption (or (not x9047) x9140)
+:assumption (or (not x21989) x19451)
+:assumption (or (not x31020) x121)
+:assumption (or (not x19588) (not x30996))
+:assumption (or (not x20265) x24756 x23003 x9825 x29312)
+:assumption (or (not x5579) (not x28276) (not x28543) x6594 (not x8377) (not x29122))
+:assumption (or x2090 (not x14167))
+:assumption (or (not x19029) (not x17251))
+:assumption (or (not x7231) (not x4595))
+:assumption (or (not x688) (not x3900))
+:assumption (or (not x29545) (not x11155))
+:assumption (or (not x20898) x2349)
+:assumption (or x9439 x8723)
+:assumption (or (not x22336) (not x20222))
+:assumption (or (not x17862) (not x7832))
+:assumption (or (not x15610) (not x16067))
+:assumption (or x28912 (not x8352))
+:assumption (or x909 x3714 x11754 (not x14890))
+:assumption (or x23725 (not x4652))
+:assumption (or x16802 x24790)
+:assumption (or x19719 (not x16068))
+:assumption (or (not x21098) x6496 (not x762) (not x5394))
+:assumption (or (not x31150) x12130)
+:assumption (or (not x29692) x15837 x8602)
+:assumption (or (not x11288) (not x23135))
+:assumption (or x23408 x17626)
+:assumption (or (not x9576) (not x15228))
+:assumption (or x30166 x1038)
+:assumption (or x2522 (not x2841))
+:assumption (or (not x23858) x28673 (not x8338) (not x13018))
+:assumption (or (not x16025) (not x24531))
+:assumption (or x21572 x27030)
+:assumption (or x16645 x23279)
+:assumption (or (not x26267) (not x25546))
+:assumption (or (not x24462) x11849 x26002 (not x17597))
+:assumption (or (not x1146) (not x4913))
+:assumption (or x17719 (not x27738))
+:assumption (or x11625 (not x10220))
+:assumption (or x12242 x20325 x19882)
+:assumption (or (not x31389) (not x3584))
+:assumption (or (not x13382) (not x7092))
+:assumption (or (not x4148) x29277)
+:assumption (or (not x18441) (not x5919))
+:assumption (or x10562 x31232)
+:assumption (or x18042 (not x27352))
+:assumption (or (not x10205) x7569)
+:assumption (or (not x3848) (not x22736))
+:assumption (or x9481 (not x16962))
+:assumption (or x17866 (not x11862))
+:assumption (or x1388 x18343)
+:assumption (or (not x10274) (not x29672))
+:assumption (or (not x14528) (not x14187))
+:assumption (or x5347 x7523)
+:assumption (or x8377 x19527)
+:assumption (or x19296 (not x13249))
+:assumption (or x9919 x8941)
+:assumption (or x30262 x22701)
+:assumption (or (not x21432) x14215 (not x1633) (not x20665))
+:assumption (or (not x18499) (not x3220) x1096 (not x27002) x3715 x9627)
+:assumption (or (not x13154) (not x14863))
+:assumption (or (not x28137) (not x30208))
+:assumption (or x16910 x21831 x12833)
+:assumption (or x11800 x12297)
+:assumption (or x5008 x16189)
+:assumption (or x12175 (not x9008))
+:assumption (or x83 (not x3207) (not x6732) x6984 x29587 x16341)
+:assumption (or x29839 x6438)
+:assumption (or (not x8756) x18859 x17781)
+:assumption (or x22630 x7835)
+:assumption (or x3264 (not x27657))
+:assumption (or x24155 x6746 (not x17397) x2500 (not x7854) (not x10656))
+:assumption (or (not x25730) (not x3494))
+:assumption (or (not x13760) (not x24193))
+:assumption (or (not x28446) (not x2692))
+:assumption (or x29647 x12329)
+:assumption (or (not x20202) (not x19028) (not x10098) x26432)
+:assumption (or (not x14390) x18603)
+:assumption (or (not x17762) (not x30259))
+:assumption (or (not x18706) (not x17918))
+:assumption (or x1090 (not x16371) (not x20571))
+:assumption (or (not x17116) (not x194))
+:assumption (or x18519 x4184 x602 (not x2182) x2072)
+:assumption (or (not x25916) x22360)
+:assumption (or x1483 x13160)
+:assumption (or x30247 x4618)
+:assumption (or (not x11443) (not x12075))
+:assumption (or (not x1308) x14063)
+:assumption (or (not x12786) (not x6877))
+:assumption (or (not x15014) (not x6873))
+:assumption (or x21502 x23244 x8002 (not x16426) x2551 x13956)
+:assumption (or (not x15112) (not x10144))
+:assumption (or (not x4164) (not x1621))
+:assumption (or (not x11808) x2298)
+:assumption (or (not x23244) (not x8530))
+:assumption (or x29312 (not x14400))
+:assumption (or x25860 x4595 (not x6186) (not x15644) (not x11304) (not x15331) x24449 (not x8996) (not x29733) x15811)
+:assumption (or x6923 (not x7648))
+:assumption (or x21225 x24260)
+:assumption (or (not x6969) x21031)
+:assumption (or x10986 x25013)
+:assumption (or x24174 x21554)
+:assumption (or x12247 (not x17328))
+:assumption (or (not x29139) x5165 (not x13956))
+:assumption (or (not x4123) (not x22776))
+:assumption (or (not x4903) (not x14752) x16354 x26716 (not x18081) (not x3976) x14736 x7358)
+:assumption (or x7121 x19889)
+:assumption (or x25030 (not x24104))
+:assumption (or x18814 (not x16222))
+:assumption (or x21451 (not x5346) (not x17701) x1456 x6436 x4580 x4377)
+:assumption (or x6969 x665 x17760)
+:assumption (or (not x28242) (not x31902))
+:assumption (or (not x10268) x13365)
+:assumption (or x10773 (not x18865) x13255)
+:assumption (or x17232 x3774)
+:assumption (or x21298 (not x20182))
+:assumption (or (not x671) (not x30714))
+:assumption (or (not x29699) (not x26974))
+:assumption (or (not x23409) (not x23801) x21988)
+:assumption (or x31436 (not x17338))
+:assumption (or x18293 (not x14233) (not x23662))
+:assumption (or (not x14558) x21680)
+:assumption (or (not x20001) (not x7605))
+:assumption (or x18441 x17302 (not x5420) x31256)
+:assumption (or x1751 x27077)
+:assumption (or (not x1310) x8804)
+:assumption (or (not x920) (not x17834))
+:assumption (or (not x13929) (not x7055))
+:assumption (or (not x22294) (not x11712))
+:assumption (or x497 x6893 x480)
+:assumption (or (not x30668) x30113)
+:assumption (or x458 (not x9519))
+:assumption (or (not x23455) (not x25970))
+:assumption (or x25327 x26608)
+:assumption (or (not x17589) x30768)
+:assumption (or (not x27930) x19441)
+:assumption (or x18705 (not x8693))
+:assumption (or (not x6457) x6415)
+:assumption (or x14839 (not x21296) (not x8010))
+:assumption (or (not x13854) x20550)
+:assumption (or (not x17818) x5030)
+:assumption (or (not x5616) (not x27306))
+:assumption (or (not x4438) x8002)
+:assumption (or x417 (not x12109))
+:assumption (or (not x13870) (not x4954) (not x10064))
+:assumption (or (not x31333) (not x30669))
+:assumption (or (not x19831) x21214)
+:assumption (or (not x1587) x25659)
+:assumption (or (not x29947) (not x15521))
+:assumption (or x18133 x27449)
+:assumption (or x9008 (not x9789))
+:assumption (or (not x11857) x5417)
+:assumption (or (not x31576) x7650)
+:assumption (or (not x17606) (not x20969))
+:assumption (or x27514 (not x5427))
+:assumption (or x26220 x28113)
+:assumption (or x14383 x20550)
+:assumption (or x1364 x25222)
+:assumption (or x5274 x24756 x6178)
+:assumption (or (not x30606) x10909)
+:assumption (or x5939 x21001)
+:assumption (or (not x17729) (not x11271))
+:assumption (or x21088 (not x18618) x20728 (not x1763) (not x28159) (not x22674) x9408 x25811)
+:assumption (or x4403 x20579)
+:assumption (or (not x8886) x7663)
+:assumption (or (not x12661) (not x8647))
+:assumption (or (not x16025) (not x22558))
+:assumption (or (not x24385) x27012 x13632 x17302 x18719 x6099 (not x4910))
+:assumption (or x4708 x22592)
+:assumption (or (not x27528) (not x18991))
+:assumption (or (not x15218) (not x24438))
+:assumption (or x25715 x12306)
+:assumption (or x11231 x18859)
+:assumption (or x24352 x13126)
+:assumption (or x18519 (not x15087) (not x7893))
+:assumption (or x2222 (not x13455))
+:assumption (or x29580 x23482)
+:assumption (or x7719 x14914)
+:assumption (or x29056 x29773)
+:assumption (or x6766 (not x6369))
+:assumption (or x8766 (not x9507))
+:assumption (or x7969 x23203)
+:assumption (or x9423 (not x1132))
+:assumption (or (not x582) (not x17645))
+:assumption (or x6238 (not x1562))
+:assumption (or (not x29758) x3516 x8002 x23244 x13956 (not x507))
+:assumption (or x15230 x4488 (not x11297) (not x15149) (not x31179))
+:assumption (or x24133 x28899)
+:assumption (or x2281 x28927 x30124 x16409)
+:assumption (or (not x26713) (not x12943))
+:assumption (or x6307 (not x6564))
+:assumption (or x27877 x19007)
+:assumption (or (not x24042) (not x22217))
+:assumption (or (not x5699) (not x13976) (not x10964) (not x1438))
+:assumption (or (not x7687) x30218)
+:assumption (or (not x10741) (not x24534) x11252)
+:assumption (or (not x25224) (not x22299) (not x29312) x26723 x24756 x13090)
+:assumption (or x425 x30202)
+:assumption (or (not x20084) x14816)
+:assumption (or (not x21205) x25659)
+:assumption (or (not x25324) x30124)
+:assumption (or x19863 (not x30038))
+:assumption (or (not x24213) (not x11437))
+:assumption (or (not x22689) (not x20131))
+:assumption (or (not x30562) x17474)
+:assumption (or (not x17021) (not x23799))
+:assumption (or x470 (not x842) x16659)
+:assumption (or (not x26863) x27194)
+:assumption (or x24557 x17279)
+:assumption (or x17074 x29975)
+:assumption (or (not x30067) x8524)
+:assumption (or (not x2186) x6729)
+:assumption (or (not x5212) (not x23243) x16025)
+:assumption (or x8864 x11824 x8213)
+:assumption (or x22937 x27361)
+:assumption (or x12302 (not x8561))
+:assumption (or (not x5528) (not x22654) x19082 (not x28637) (not x15168) (not x8414))
+:assumption (or (not x121) x14263)
+:assumption (or (not x13914) x24104)
+:assumption (or (not x21199) (not x20094))
+:assumption (or x13956 x31362)
+:assumption (or (not x24859) (not x902))
+:assumption (or (not x4428) (not x13622))
+:assumption (or x24126 x30135)
+:assumption (or (not x3555) (not x13466))
+:assumption (or x15830 x18444)
+:assumption (or x3131 (not x4140))
+:assumption (or x6307 (not x10322))
+:assumption (or x3514 x20906)
+:assumption (or (not x28541) x31829 x10727 (not x31099))
+:assumption (or x8113 (not x466))
+:assumption (or x11740 (not x25366))
+:assumption (or (not x19194) (not x25229))
+:assumption (or x10817 x11063)
+:assumption (or x25810 (not x29035))
+:assumption (or (not x17426) x15257)
+:assumption (or x3110 (not x29016))
+:assumption (or x20386 (not x9758))
+:assumption (or (not x1194) x6052)
+:assumption (or (not x31169) (not x12660))
+:assumption (or x21568 x2382)
+:assumption (or x7691 (not x27775))
+:assumption (or (not x11434) x10279)
+:assumption (or (not x8494) x9008)
+:assumption (or (not x4311) x25835)
+:assumption (or x15892 x12007 (not x31225) x24844 (not x106))
+:assumption (or (not x25055) (not x13914))
+:assumption (or (not x29009) x14706)
+:assumption (or x23499 (not x29338))
+:assumption (or (not x7166) x4838)
+:assumption (or x11281 x13335)
+:assumption (or (not x2325) (not x21167))
+:assumption (or x23035 (not x17069))
+:assumption (or (not x8797) x6296 (not x31866) x13671 x1436)
+:assumption (or (not x28279) x19771)
+:assumption (or x22985 x8936)
+:assumption (or (not x6714) (not x607))
+:assumption (or (not x24039) x9957)
+:assumption (or x14952 (not x21580))
+:assumption (or (not x1074) x11517)
+:assumption (or (not x7309) (not x10540))
+:assumption (or x494 x22160 x3657 x279)
+:assumption (or x14206 (not x10889) x28621 (not x30650))
+:assumption (or x27157 (not x15764))
+:assumption (or x19992 x4586)
+:assumption (or x13094 x28634)
+:assumption (or (not x13434) x11453)
+:assumption (or (not x31605) x11670)
+:assumption (or (not x16119) x18535)
+:assumption (or (not x25576) (not x19220))
+:assumption (or x22591 x26670)
+:assumption (or (not x24671) x24722)
+:assumption (or (not x4968) (not x1744))
+:assumption (or x9532 (not x30239))
+:assumption (or (not x19992) (not x4481))
+:assumption (or (not x5329) (not x30778))
+:assumption (or x19534 x12698)
+:assumption (or (not x24601) x2466)
+:assumption (or (not x17923) x25179)
+:assumption (or x27625 x7730 (not x17440) (not x25925) x10874 x6307)
+:assumption (or x16569 (not x20862))
+:assumption (or x20990 x14797)
+:assumption (or x7043 (not x25069))
+:assumption (or (not x10361) (not x30568))
+:assumption (or (not x19948) (not x31390))
+:assumption (or (not x4525) (not x18151))
+:assumption (or (not x15350) (not x1582))
+:assumption (or x3090 (not x28444))
+:assumption (or x27878 x19044)
+:assumption (or x7008 x9008 x12639)
+:assumption (or (not x28932) x16580 (not x21953) (not x13684) (not x29833))
+:assumption (or x17303 (not x14167))
+:assumption (or (not x23275) (not x29943))
+:assumption (or (not x7691) x12028)
+:assumption (or x21786 x3615)
+:assumption (or (not x6525) (not x18807))
+:assumption (or x26633 (not x24471) (not x27593))
+:assumption (or x7213 (not x366))
+:assumption (or x19562 x11502)
+:assumption (or (not x16741) x6955 (not x2133) (not x28422) (not x10417))
+:assumption (or x31276 (not x31756))
+:assumption (or (not x17148) x20485)
+:assumption (or (not x21213) x14685)
+:assumption (or x2091 (not x7853))
+:assumption (or (not x6627) x5347)
+:assumption (or (not x3287) x27520)
+:assumption (or x6010 x12665)
+:assumption (or x10747 x12038)
+:assumption (or x16572 x7300 x8002)
+:assumption (or x6107 (not x24478))
+:assumption (or x3710 (not x13571))
+:assumption (or x13575 x23056)
+:assumption (or x29941 (not x7065))
+:assumption (or (not x28903) (not x22886) x22980)
+:assumption (or (not x11466) (not x4384))
+:assumption (or x6678 x15246)
+:assumption (or (not x15691) x24434)
+:assumption (or (not x14465) x5441 (not x27939))
+:assumption (or x10066 x9014)
+:assumption (or x30760 x29360)
+:assumption (or x27394 (not x21801))
+:assumption (or x29957 x19774)
+:assumption (or x21419 (not x31794))
+:assumption (or (not x23878) x4776)
+:assumption (or (not x25560) x27176)
+:assumption (or x14791 (not x1924))
+:assumption (or x19473 (not x24657))
+:assumption (or x16855 (not x11175))
+:assumption (or x28479 x18866)
+:assumption (or (not x29329) (not x25001))
+:assumption (or x31783 (not x28751))
+:assumption (or x17482 x23441)
+:assumption (or (not x9880) (not x17603) (not x21432) x5668)
+:assumption (or x26148 x17637)
+:assumption (or (not x24762) x11792)
+:assumption (or (not x30392) x13807)
+:assumption (or x9249 (not x11464) x5835 (not x14814) x24628)
+:assumption (or (not x4129) (not x1748))
+:assumption (or (not x8002) x26081)
+:assumption (or (not x9106) (not x20408))
+:assumption (or x2404 x4112)
+:assumption (or (not x16802) (not x13530))
+:assumption (or (not x8688) (not x27778))
+:assumption (or x17921 x21768)
+:assumption (or (not x21622) x31319)
+:assumption (or (not x20539) (not x15846))
+:assumption (or x9232 x12242 (not x26957))
+:assumption (or x14121 x1588 (not x24474) x28368 x4594 (not x8107))
+:assumption (or x13256 x27142)
+:assumption (or x23660 x21606)
+:assumption (or x7861 x15744)
+:assumption (or x14628 (not x232))
+:assumption (or (not x10695) x7984)
+:assumption (or x11736 x9836)
+:assumption (or (not x1542) (not x9723))
+:assumption (or x5494 x22613)
+:assumption (or (not x2829) (not x30512))
+:assumption (or x25521 (not x26020))
+:assumption (or (not x4646) x31134)
+:assumption (or x12698 (not x8980))
+:assumption (or (not x3630) x16139 (not x902) (not x773) (not x2754) (not x5528))
+:assumption (or (not x22495) (not x3254))
+:assumption (or (not x17142) x2446 (not x2288))
+:assumption (or (not x27454) (not x6395))
+:assumption (or x5965 (not x30693))
+:assumption (or (not x3607) (not x11947))
+:assumption (or (not x24210) (not x18300))
+:assumption (or (not x29103) x9734)
+:assumption (or x12126 x319 (not x16784) (not x21324) x24757 x20693)
+:assumption (or (not x29759) (not x30448))
+:assumption (or x25327 (not x23881))
+:assumption (or (not x28723) (not x13338))
+:assumption (or x839 x14538)
+:assumption (or x5869 x3918)
+:assumption (or x17318 (not x5341))
+:assumption (or (not x23126) x29759 (not x10984) (not x5096) (not x6594))
+:assumption (or (not x24578) (not x5042))
+:assumption (or x10324 (not x20551))
+:assumption (or (not x9402) (not x25709))
+:assumption (or (not x12712) x10390)
+:assumption (or x10126 x131)
+:assumption (or x18285 x30751 (not x10510))
+:assumption (or (not x18934) x19398)
+:assumption (or (not x22864) x19864)
+:assumption (or x6728 x14839 x4114 x22006)
+:assumption (or (not x31076) x28577)
+:assumption (or x11345 (not x14766) x2686 x23101 x23279 x29801 (not x19391) (not x25128))
+:assumption (or x2392 x31709)
+:assumption (or (not x16568) (not x21955))
+:assumption (or x1622 (not x10342))
+:assumption (or (not x31777) x16381)
+:assumption (or x11510 (not x7533))
+:assumption (or x18003 x7759)
+:assumption (or (not x3807) x19601)
+:assumption (or x12083 x28762)
+:assumption (or x15088 x30885)
+:assumption (or x3150 (not x14740))
+:assumption (or x18183 (not x9531) (not x27650))
+:assumption (or (not x12578) (not x15559))
+:assumption (or x8963 (not x3892))
+:assumption (or (not x358) (not x17631) x11792 x19362 (not x14656))
+:assumption (or (not x27607) x26900)
+:assumption (or (not x5878) (not x8909))
+:assumption (or (not x23244) (not x8445))
+:assumption (or x17693 (not x656) (not x14600) (not x26317) x26956 x9008 (not x250) x3893)
+:assumption (or x29118 x22772)
+:assumption (or (not x30390) (not x27826) x4865 (not x1214))
+:assumption (or (not x28670) (not x17885) (not x11281))
+:assumption (or x27553 (not x22332))
+:assumption (or x21785 x9966 x26278 (not x17492))
+:assumption (or (not x20883) (not x19395))
+:assumption (or x10704 x3315)
+:assumption (or (not x21298) x18991)
+:assumption (or x10509 x30954)
+:assumption (or (not x13595) x1277)
+:assumption (or (not x3254) x23377)
+:assumption (or (not x8896) x24200 (not x28946))
+:assumption (or x873 x4745 (not x17652))
+:assumption (or (not x5326) (not x4495))
+:assumption (or (not x28579) (not x1415))
+:assumption (or x10669 x245 (not x9843) x11020 (not x21333) x3979)
+:assumption (or (not x1709) x28610)
+:assumption (or x5110 x31638)
+:assumption (or x1909 x24812)
+:assumption (or (not x25559) x14455)
+:assumption (or x15336 x751)
+:assumption (or x11153 (not x29741))
+:assumption (or x14153 x30136)
+:assumption (or (not x5025) x20949 (not x5940) (not x18825) x12045)
+:assumption (or x16094 x13907)
+:assumption (or (not x29158) x18783)
+:assumption (or (not x10816) (not x11379))
+:assumption (or x24792 x19618)
+:assumption (or (not x19020) (not x31645))
+:assumption (or x858 x30278)
+:assumption (or x20776 (not x21952))
+:assumption (or (not x447) (not x22483) x26029 x2530 x8078)
+:assumption (or (not x18051) (not x12097))
+:assumption (or x16989 x8397)
+:assumption (or x5528 x25718)
+:assumption (or (not x30935) (not x12841))
+:assumption (or (not x15866) (not x26061) x1413)
+:assumption (or (not x13580) x5574)
+:assumption (or (not x11418) (not x5377))
+:assumption (or x6660 (not x11489))
+:assumption (or (not x20682) (not x13443))
+:assumption (or x2246 (not x8876))
+:assumption (or x23491 (not x9398))
+:assumption (or (not x7443) (not x22979))
+:assumption (or (not x1176) x12555 x21373 (not x21068) x14422)
+:assumption (or (not x21204) (not x4504))
+:assumption (or x16927 x10682)
+:assumption (or (not x30815) x31115)
+:assumption (or (not x15402) (not x499) x30113)
+:assumption (or x13739 (not x11150))
+:assumption (or x1427 (not x9804) (not x26770) (not x8002))
+:assumption (or (not x18437) (not x27818))
+:assumption (or (not x21685) (not x27637))
+:assumption (or (not x5319) x7496)
+:assumption (or x1889 (not x6963))
+:assumption (or x17736 x6429)
+:assumption (or x9647 x6071)
+:assumption (or (not x11129) (not x13637))
+:assumption (or x16004 x6607)
+:assumption (or x15327 x28328 (not x16286) x18259)
+:assumption (or (not x17126) (not x31134))
+:assumption (or (not x17288) x19864 (not x28052))
+:assumption (or (not x29261) x9621)
+:assumption (or (not x27901) (not x17043) (not x29546))
+:assumption (or x24536 x30138)
+:assumption (or (not x26670) x21920)
+:assumption (or x6220 (not x9322))
+:assumption (or x20699 (not x26418))
+:assumption (or x27059 x26984)
+:assumption (or (not x13213) (not x18553) (not x1737))
+:assumption (or (not x25478) (not x23399))
+:assumption (or x23443 x10806)
+:assumption (or x3048 (not x24238))
+:assumption (or (not x2031) (not x29452))
+:assumption (or (not x27867) x2300)
+:assumption (or x18567 x17498 x11917 (not x19585) x17869 x23010)
+:assumption (or (not x14067) x17802)
+:assumption (or x1000 (not x1012) x12971 x21336 (not x30132) (not x14921) x18548)
+:assumption (or x23687 x25813)
+:assumption (or (not x25008) x25807 (not x15699) x648 x1087 x18918)
+:assumption (or (not x24132) x13181)
+:assumption (or (not x1700) (not x13956))
+:assumption (or x24537 (not x5079))
+:assumption (or (not x4730) x21955)
+:assumption (or (not x22177) x31426 (not x1488) (not x16741))
+:assumption (or x25380 x22125)
+:assumption (or x11432 x24735)
+:assumption (or x22472 (not x18494))
+:assumption (or x965 x17646)
+:assumption (or x1245 x30903 x20463 x26404 x29038 (not x28964) x24722)
+:assumption (or (not x9099) x27911)
+:assumption (or x17325 (not x14447))
+:assumption (or (not x28008) (not x24036))
+:assumption (or (not x11477) (not x809))
+:assumption (or (not x20362) x14456 (not x3455))
+:assumption (or x12209 (not x24962))
+:assumption (or (not x12491) (not x27915))
+:assumption (or x29653 x4452 (not x9647))
+:assumption (or x12685 x6645)
+:assumption (or (not x25619) (not x23633))
+:assumption (or (not x24680) x20188)
+:assumption (or (not x20353) (not x18040))
+:assumption (or x19447 (not x17075))
+:assumption (or (not x19869) (not x5628))
+:assumption (or (not x18792) (not x1930))
+:assumption (or x25019 (not x14687))
+:assumption (or x17248 (not x14402) x30866 x6587 x21026)
+:assumption (or (not x11608) (not x2457))
+:assumption (or x27111 (not x28426) x4504)
+:assumption (or (not x29312) (not x1494))
+:assumption (or (not x30129) x14449)
+:assumption (or (not x5969) x4631)
+:assumption (or x12871 x26829)
+:assumption (or x23838 (not x16475))
+:assumption (or x23231 (not x10928))
+:assumption (or (not x8330) x4661)
+:assumption (or x13870 x25241)
+:assumption (or (not x11980) x12063)
+:assumption (or x9426 x8602 (not x11776))
+:assumption (or (not x28275) (not x13562))
+:assumption (or x30712 x23858)
+:assumption (or (not x19420) x21638)
+:assumption (or x20306 (not x18067))
+:assumption (or (not x26471) x15944)
+:assumption (or (not x19029) (not x6074))
+:assumption (or (not x11918) x24853)
+:assumption (or x1197 x29959)
+:assumption (or (not x281) (not x11004))
+:assumption (or (not x13868) x15150)
+:assumption (or x13143 (not x24304))
+:assumption (or x16558 (not x7396))
+:assumption (or (not x17634) (not x19422))
+:assumption (or x26709 (not x24447))
+:assumption (or x24035 x13687 (not x21026))
+:assumption (or (not x19765) x4497)
+:assumption (or (not x10550) (not x23390))
+:assumption (or (not x4660) (not x21316))
+:assumption (or x324 x19994)
+:assumption (or x26128 (not x27955))
+:assumption (or x13732 x27568)
+:assumption (or (not x21796) x21760)
+:assumption (or x23077 (not x24901))
+:assumption (or (not x14638) (not x20325) x13161 x12242 (not x28548))
+:assumption (or (not x5350) x11783)
+:assumption (or x4349 (not x19897))
+:assumption (or (not x11585) x17321)
+:assumption (or x28541 x12771 (not x30463) x31696)
+:assumption (or x5520 (not x12738))
+:assumption (or x8002 x9609)
+:assumption (or (not x9269) (not x27195) (not x16384) (not x7034) x6274)
+:assumption (or (not x3302) (not x16510))
+:assumption (or (not x9387) x12786)
+:assumption (or (not x22737) (not x10723) x23826 (not x3455))
+:assumption (or (not x29165) (not x16333))
+:assumption (or x16289 x31540)
+:assumption (or (not x15795) (not x26088))
+:assumption (or (not x16849) x14383)
+:assumption (or x9490 (not x4537))
+:assumption (or (not x7653) (not x9156) x18731)
+:assumption (or x28788 (not x16604))
+:assumption (or (not x3530) x16950)
+:assumption (or x17802 (not x9531))
+:assumption (or x27172 x5727)
+:assumption (or (not x5039) (not x25531))
+:assumption (or x367 (not x27894) (not x9008))
+:assumption (or x13576 (not x9450))
+:assumption (or (not x2334) (not x3122))
+:assumption (or x19507 (not x6586))
+:assumption (or (not x8432) (not x8817))
+:assumption (or (not x10864) x660)
+:assumption (or (not x14819) (not x3958))
+:assumption (or (not x12797) (not x29799))
+:assumption (or x3523 x10697)
+:assumption (or x5528 (not x29367))
+:assumption (or (not x28885) x375)
+:assumption (or x5480 x9868)
+:assumption (or x12398 (not x14138) x30268)
+:assumption (or (not x7197) (not x27888))
+:assumption (or (not x19095) x1227 (not x3929) (not x6034) x7366 x16809)
+:assumption (or (not x7011) (not x31286))
+:assumption (or x10274 (not x16896))
+:assumption (or x16080 (not x16437))
+:assumption (or x16478 (not x2424))
+:assumption (or x2205 x22565 (not x25968))
+:assumption (or (not x29713) x31224)
+:assumption (or x10909 (not x20072))
+:assumption (or x5355 x11662)
+:assumption (or x24137 x2634 (not x27371) (not x13921))
+:assumption (or x12474 x18115 x856)
+:assumption (or (not x29003) (not x16678) x6432 x16401 (not x25149))
+:assumption (or (not x909) (not x5303))
+:assumption (or (not x27986) x950)
+:assumption (or x12561 (not x8229))
+:assumption (or x20402 (not x24192))
+:assumption (or (not x17490) x18602)
+:assumption (or (not x27261) (not x25994))
+:assumption (or (not x13622) (not x22234) (not x14788))
+:assumption (or x10194 x30679)
+:assumption (or (not x13188) x15227 x24757 x25334 x18364 x21824 (not x2278) (not x11693) (not x4491))
+:assumption (or (not x25444) (not x14899))
+:assumption (or (not x12435) (not x8056))
+:assumption (or x3914 x10328)
+:assumption (or (not x29367) (not x26810))
+:assumption (or (not x29508) (not x5107))
+:assumption (or x25493 x11867)
+:assumption (or (not x294) (not x30113) (not x23285) x9278)
+:assumption (or (not x28330) x9651)
+:assumption (or x21298 x12224)
+:assumption (or (not x22895) x14839 (not x17087))
+:assumption (or (not x321) x16071 x26670 (not x7507) x20211 x28982 (not x29875) x5975)
+:assumption (or x28082 (not x7997))
+:assumption (or (not x19018) (not x24722))
+:assumption (or x11088 (not x17779))
+:assumption (or x121 x10054)
+:assumption (or (not x27327) x26321)
+:assumption (or x9612 (not x2431) x5573 x9647 (not x3073))
+:assumption (or (not x24042) (not x16249))
+:assumption (or (not x20246) x17820)
+:assumption (or (not x7513) (not x14662))
+:assumption (or x6610 x25393 x14176)
+:assumption (or (not x15856) (not x2642))
+:assumption (or (not x1802) x13951)
+:assumption (or x16802 x24722 x23483)
+:assumption (or (not x27281) (not x16185))
+:assumption (or (not x27120) (not x29442))
+:assumption (or (not x29610) (not x15614))
+:assumption (or x23618 (not x27471))
+:assumption (or x2292 (not x22843))
+:assumption (or (not x614) (not x31794))
+:assumption (or x9129 x13576 x6951)
+:assumption (or x22314 (not x2914))
+:assumption (or x13458 (not x14416))
+:assumption (or (not x7659) (not x25659) x22218)
+:assumption (or x3202 (not x2959))
+:assumption (or x24353 x19563)
+:assumption (or x8980 (not x26802) (not x19534) x852 x27303)
+:assumption (or x19501 (not x19992) (not x6132))
+:assumption (or (not x30849) (not x20359))
+:assumption (or (not x7071) (not x22089))
+:assumption (or x28346 (not x28641))
+:assumption (or x2407 x13234)
+:assumption (or (not x20360) (not x9329))
+:assumption (or x21815 (not x1028))
+:assumption (or (not x22809) (not x28933))
+:assumption (or x12963 x4401)
+:assumption (or (not x21171) x23244)
+:assumption (or x26671 (not x8372) x23164 (not x1655) x14008)
+:assumption (or (not x8473) (not x3716))
+:assumption (or (not x23543) x30104)
+:assumption (or (not x21815) (not x2502))
+:assumption (or (not x24341) x21006)
+:assumption (or x4386 x31114 (not x30220))
+:assumption (or x29857 (not x5892) (not x8602))
+:assumption (or (not x22412) x17847)
+:assumption (or (not x7393) (not x25951) x18519 (not x29803))
+:assumption (or (not x7452) (not x6847))
+:assumption (or x18147 (not x21332))
+:assumption (or x17663 (not x25659))
+:assumption (or (not x21261) (not x3550))
+:assumption (or x19193 x25936 x17534 (not x6594))
+:assumption (or x31405 (not x26386))
+:assumption (or x7013 x918)
+:assumption (or x200 (not x31286))
+:assumption (or (not x7045) (not x26933))
+:assumption (or (not x20336) (not x10412))
+:assumption (or (not x24178) x23514 (not x29240) x7332 x11378 x4050 x31714 x15041 x11691)
+:assumption (or x20349 (not x20949) x29771 x12045)
+:assumption (or x405 x288)
+:assumption (or (not x9861) x17860)
+:assumption (or x24582 x26838)
+:assumption (or x23739 x6969)
+:assumption (or x19045 (not x29751))
+:assumption (or (not x8054) (not x16951))
+:assumption (or (not x24653) (not x28541) x5090)
+:assumption (or (not x10438) (not x12002))
+:assumption (or (not x26429) (not x6045) (not x2322) (not x4784) x24751 x14156)
+:assumption (or (not x92) x31547)
+:assumption (or x13723 x6444)
+:assumption (or x23244 x13932)
+:assumption (or x21827 (not x21040))
+:assumption (or (not x6942) x6509)
+:assumption (or x16114 x1987)
+:assumption (or (not x17666) (not x29439) (not x10350) x13783 x3405)
+:assumption (or x15025 (not x20902))
+:assumption (or x7012 (not x8322))
+:assumption (or x15315 x20444)
+:assumption (or x17534 (not x3582))
+:assumption (or (not x9752) (not x11506) (not x21202) (not x26947))
+:assumption (or x24756 (not x22887))
+:assumption (or x22494 x15989 x8116 (not x5249) (not x5026) x17292)
+:assumption (or x24344 x11258)
+:assumption (or x24636 x20576)
+:assumption (or (not x14475) x29365)
+:assumption (or x3158 x13094)
+:assumption (or x14802 (not x18358))
+:assumption (or (not x10740) x26810)
+:assumption (or x12291 x13816)
+:assumption (or (not x25206) x17831)
+:assumption (or x22412 x24972)
+:assumption (or (not x12222) x1897)
+:assumption (or x461 (not x21730))
+:assumption (or x10723 (not x29497))
+:assumption (or (not x11211) (not x15861))
+:assumption (or x11539 (not x26125))
+:assumption (or (not x19538) (not x28410))
+:assumption (or (not x10298) x22365)
+:assumption (or (not x7838) x6746)
+:assumption (or (not x22864) (not x22923))
+:assumption (or x13076 x6920)
+:assumption (or x21546 (not x18342))
+:assumption (or x25328 x10519)
+:assumption (or x24385 x5586)
+:assumption (or (not x8480) x10176)
+:assumption (or x14206 x13568)
+:assumption (or (not x8357) x3940)
+:assumption (or x13956 x5478)
+:assumption (or x17033 x13749 (not x24104) x25055 (not x25606) x28222)
+:assumption (or x5027 (not x16802))
+:assumption (or x6143 x15860)
+:assumption (or (not x20402) x10242 (not x13012) x31751)
+:assumption (or x28328 x22559)
+:assumption (or (not x21905) (not x13377))
+:assumption (or x12880 x28182)
+:assumption (or x28525 (not x17676) (not x3494))
+:assumption (or x8532 x8060 (not x14326) (not x3759))
+:assumption (or x21815 x25831)
+:assumption (or x15533 (not x3019))
+:assumption (or (not x24350) x31134 x18206)
+:assumption (or x28765 (not x18098))
+:assumption (or (not x15017) x13309)
+:assumption (or x9410 (not x28078))
+:assumption (or x923 (not x5480) (not x16932) (not x31090) x27061)
+:assumption (or x29513 x10237)
+:assumption (or (not x18385) x19919)
+:assumption (or (not x10226) (not x1855))
+:assumption (or (not x11369) (not x24757))
+:assumption (or x29650 x751)
+:assumption (or x24325 (not x21518))
+:assumption (or (not x30224) x25137 x30113)
+:assumption (or (not x17369) (not x19864))
+:assumption (or (not x23955) x13411 (not x22130) (not x27499))
+:assumption (or (not x18331) x21876)
+:assumption (or (not x4268) x6103)
+:assumption (or (not x25185) (not x27315))
+:assumption (or x24260 x27978)
+:assumption (or (not x2668) x18805)
+:assumption (or x4193 (not x2955))
+:assumption (or x25676 x619 x7859 x10336 (not x14452))
+:assumption (or (not x10740) x17930)
+:assumption (or (not x6745) x3877)
+:assumption (or (not x27656) x22531 x7476)
+:assumption (or (not x4984) (not x3432))
+:assumption (or x14858 x24207)
+:assumption (or x18333 x16310)
+:assumption (or x22830 (not x24207))
+:assumption (or (not x31488) (not x10369))
+:assumption (or x28876 (not x5708))
+:assumption (or (not x13480) x3728)
+:assumption (or (not x12037) x3009)
+:assumption (or x9546 (not x8002))
+:assumption (or x8961 (not x10869))
+:assumption (or (not x2251) x10548)
+:assumption (or x26858 (not x6370))
+:assumption (or x5702 (not x10195) x31147 (not x12873))
+:assumption (or (not x30821) x9986)
+:assumption (or x10288 (not x29030))
+:assumption (or (not x17048) (not x28095))
+:assumption (or (not x16472) (not x8029))
+:assumption (or x31296 (not x15302) (not x9008))
+:assumption (or (not x2722) (not x12921))
+:assumption (or (not x23720) x8941)
+:assumption (or (not x19558) (not x27597))
+:assumption (or x18863 (not x768) x10596 x31758 x6267)
+:assumption (or x29828 (not x10607))
+:assumption (or x9797 x14767)
+:assumption (or (not x22144) x25792)
+:assumption (or x14801 (not x28242))
+:assumption (or x18263 x10929)
+:assumption (or x22761 (not x5137) (not x27658) (not x3528))
+:assumption (or (not x8700) x6177)
+:assumption (or (not x12675) x31644)
+:assumption (or (not x18716) x23244)
+:assumption (or x11005 (not x17476))
+:assumption (or (not x21238) (not x8425) (not x5846))
+:assumption (or (not x26897) x26461 (not x23244))
+:assumption (or x22907 x2204 x7542)
+:assumption (or (not x8289) x25455)
+:assumption (or (not x14831) x20065)
+:assumption (or x8751 x8415 x1760 (not x14379) (not x18921) x12006 (not x24753) (not x18793))
+:assumption (or (not x9008) (not x23472))
+:assumption (or x16077 (not x1980))
+:assumption (or (not x29312) (not x25408))
+:assumption (or (not x31548) x15749)
+:assumption (or (not x4650) x6178)
+:assumption (or x31196 (not x22055))
+:assumption (or x10761 x11852)
+:assumption (or (not x28354) (not x7299))
+:assumption (or x15799 x24382)
+:assumption (or x27416 x24848)
+:assumption (or (not x6677) (not x15632))
+:assumption (or (not x29442) (not x18766) (not x3782) (not x10049))
+:assumption (or x9478 x6998)
+:assumption (or (not x25606) (not x22271))
+:assumption (or x4790 (not x927))
+:assumption (or x27537 (not x16994) x17685)
+:assumption (or (not x24041) (not x14802))
+:assumption (or x13157 x30432)
+:assumption (or x30890 (not x288))
+:assumption (or (not x15071) x23928 (not x27910) (not x18369))
+:assumption (or (not x2315) (not x5860))
+:assumption (or (not x1319) (not x15101))
+:assumption (or x22127 x13775)
+:assumption (or (not x17664) x22270)
+:assumption (or x23171 (not x26648))
+:assumption (or (not x5586) (not x27012))
+:assumption (or (not x26910) x9653)
+:assumption (or x22469 x8542)
+:assumption (or (not x17250) x29217)
+:assumption (or (not x3026) x13890)
+:assumption (or (not x22805) (not x8151) x2943)
+:assumption (or (not x15359) (not x17227) x22531 (not x21677) x16551)
+:assumption (or (not x14275) x25490)
+:assumption (or x8602 (not x3495) (not x19681))
+:assumption (or x22849 (not x9298) x2716 x16491 (not x8305) x28030)
+:assumption (or x28114 (not x12295) (not x1393))
+:assumption (or x27547 x30262)
+:assumption (or (not x24463) x20223)
+:assumption (or (not x2612) (not x14584))
+:assumption (or (not x5051) (not x3126))
+:assumption (or x11489 (not x4115) (not x9008) (not x5528) x18369)
+:assumption (or x21653 x30522)
+:assumption (or (not x25415) (not x28285))
+:assumption (or x31659 x29722)
+:assumption (or x28266 x3890)
+:assumption (or x28973 (not x14581) x1582)
+:assumption (or x2624 x1896)
+:assumption (or (not x6503) x23512)
+:assumption (or x15751 x8805)
+:assumption (or (not x20027) x18087)
+:assumption (or x19258 x24528)
+:assumption (or x16159 x20991 x22632 x9635 (not x16229) x13628 (not x15778) x21107)
+:assumption (or x2930 (not x11938))
+:assumption (or (not x398) x918)
+:assumption (or x28373 x26897)
+:assumption (or (not x16803) (not x26150))
+:assumption (or (not x468) x18002)
+:assumption (or x22550 x8703)
+:assumption (or (not x3782) x31518 (not x23230))
+:assumption (or x27650 (not x11154))
+:assumption (or x31894 (not x24905))
+:assumption (or (not x12377) x3704)
+:assumption (or (not x26020) (not x21128))
+:assumption (or x18219 x1732)
+:assumption (or (not x8812) x26528)
+:assumption (or x20696 (not x13557))
+:assumption (or (not x22109) (not x21330))
+:assumption (or (not x233) (not x20760))
+:assumption (or (not x18124) (not x25659))
+:assumption (or (not x8484) (not x2189))
+:assumption (or (not x31288) (not x16159))
+:assumption (or (not x14757) x9981)
+:assumption (or x12792 x13473)
+:assumption (or x28912 x29649 x13266 (not x1487))
+:assumption (or (not x15994) (not x2545))
+:assumption (or (not x19807) (not x29632))
+:assumption (or x31667 (not x29821))
+:assumption (or x22855 (not x23011) (not x31628))
+:assumption (or (not x28283) (not x9300))
+:assumption (or (not x11387) (not x7309))
+:assumption (or (not x8780) x23256)
+:assumption (or x29591 (not x10410))
+:assumption (or (not x12400) (not x28541))
+:assumption (or x20782 (not x16693))
+:assumption (or (not x7232) x24921)
+:assumption (or x6642 x1178 (not x20834) x23053 x27045 (not x11697) x31153)
+:assumption (or (not x29442) x19423)
+:assumption (or x26675 (not x18124))
+:assumption (or (not x5367) x27172)
+:assumption (or x29984 x8621 (not x1106) (not x25023) (not x27381))
+:assumption (or x18974 (not x2500))
+:assumption (or x20227 (not x581))
+:assumption (or (not x23399) x23831 (not x9931) x7537)
+:assumption (or (not x11784) (not x18759))
+:assumption (or x25260 x26633)
+:assumption (or (not x16328) x19840 x2876 (not x13605) (not x14034) x9064)
+:assumption (or (not x31240) (not x9130))
+:assumption (or (not x12673) x23750)
+:assumption (or (not x4884) x27589)
+:assumption (or (not x21125) x24606)
+:assumption (or (not x13879) (not x7754))
+:assumption (or x25745 x6978)
+:assumption (or (not x17852) x22849 x30725 (not x20496) x1105)
+:assumption (or x17742 x17530)
+:assumption (or x10125 x2095)
+:assumption (or (not x8227) (not x31046) x2133 x22282 (not x25517))
+:assumption (or x25356 (not x6246))
+:assumption (or x15026 (not x11935))
+:assumption (or x15840 (not x2072))
+:assumption (or (not x26178) x16061)
+:assumption (or (not x20128) (not x18406))
+:assumption (or (not x25162) (not x69))
+:assumption (or (not x18350) x20710)
+:assumption (or x7948 x15991)
+:assumption (or x24966 (not x29237))
+:assumption (or x18582 x2009 x509 x12232 (not x28788))
+:assumption (or (not x1046) (not x15234) (not x3435) (not x14455))
+:assumption (or (not x7815) x25496)
+:assumption (or (not x28623) (not x31098))
+:assumption (or x9487 x12999 (not x23363) (not x166) (not x7413))
+:assumption (or (not x17468) x12251)
+:assumption (or x13188 x24121)
+:assumption (or (not x3362) x3435)
+:assumption (or (not x20306) (not x16673))
+:assumption (or x29872 x6221)
+:assumption (or x23208 (not x24860))
+:assumption (or x23276 x9786)
+:assumption (or x27844 (not x21190))
+:assumption (or (not x6436) (not x1456))
+:assumption (or x1060 x15659)
+:assumption (or x6956 (not x14317) (not x26189) x21357 (not x7866))
+:assumption (or x19408 x23399 x20550 x16849 x25659)
+:assumption (or x27045 x11140 (not x26926))
+:assumption (or (not x30113) (not x5779))
+:assumption (or (not x11792) (not x30377))
+:assumption (or (not x11737) (not x2309))
+:assumption (or (not x15621) x26575 (not x16596) x14007)
+:assumption (or x7802 (not x14742) (not x22300) x15366)
+:assumption (or (not x4645) (not x25026))
+:assumption (or (not x3472) (not x5372))
+:assumption (or (not x3696) (not x13674))
+:assumption (or x11102 (not x10837))
+:assumption (or (not x3622) x9541)
+:assumption (or x26466 (not x29069))
+:assumption (or (not x28343) x19176)
+:assumption (or x17338 (not x28162))
+:assumption (or x9790 x31053)
+:assumption (or x622 (not x20700))
+:assumption (or (not x25550) x1302)
+:assumption (or x26952 x28623)
+:assumption (or x3213 (not x9109))
+:assumption (or (not x16375) (not x17270))
+:assumption (or x13780 (not x19374))
+:assumption (or x22091 (not x8782))
+:assumption (or x28335 (not x28541))
+:assumption (or (not x6719) x29606)
+:assumption (or (not x7866) (not x30032))
+:assumption (or x29312 x19117)
+:assumption (or x21927 x16123 x22473 (not x11939) x20080)
+:assumption (or x29070 (not x19790) (not x7969) (not x23203) x17407)
+:assumption (or x2174 (not x29793))
+:assumption (or x7332 x15591)
+:assumption (or (not x21638) x19420)
+:assumption (or x8765 (not x21749) (not x28216) x17349 (not x29249))
+:assumption (or x3690 x20871)
+:assumption (or (not x23902) (not x9269))
+:assumption (or (not x26944) (not x3346))
+:assumption (or x8286 x404)
+:assumption (or x16496 x8760)
+:assumption (or x6989 (not x6969) (not x24866))
+:assumption (or (not x31414) (not x29387))
+:assumption (or (not x11549) (not x13002) x8002)
+:assumption (or (not x9506) (not x2970))
+:assumption (or x5301 x22564)
+:assumption (or (not x19720) x26840)
+:assumption (or x11447 x28381 x30138 x22581 x26447 (not x30970) x21454 x16965)
+:assumption (or (not x26016) x28439)
+:assumption (or (not x1542) x669)
+:assumption (or x16003 (not x8675) (not x26889))
+:assumption (or (not x22604) (not x25770) x8668)
+:assumption (or x8002 (not x20677) x12035)
+:assumption (or (not x25116) (not x19431))
+:assumption (or x10909 (not x2392) x26897 (not x29026))
+:assumption (or (not x588) x8002)
+:assumption (or x23803 x21190)
+:assumption (or x30664 (not x20550))
+:assumption (or x833 (not x9907) (not x6138) (not x24344))
+:assumption (or (not x7755) x10163)
+:assumption (or x13506 x25616)
+:assumption (or x13075 (not x17273))
+:assumption (or (not x29284) x27720 (not x5845))
+:assumption (or (not x5032) x15685 x19371 x23726 (not x23244) x16958)
+:assumption (or (not x13043) (not x19992))
+:assumption (or (not x2250) (not x14441))
+:assumption (or x23675 (not x1620) x28912 x31845 x13716 x30452)
+:assumption (or x29306 (not x14520))
+:assumption (or (not x7028) x23776)
+:assumption (or (not x6626) x27011)
+:assumption (or (not x5996) x15267)
+:assumption (or x8574 x17711)
+:assumption (or x19992 x8456)
+:assumption (or (not x5931) x3134)
+:assumption (or (not x2678) x4978 (not x13205) (not x19453) (not x31807) (not x28508) (not x17360) (not x8577))
+:assumption (or (not x30729) (not x438))
+:assumption (or x31829 x5566)
+:assumption (or (not x4497) x16923 (not x29213) (not x8673) (not x553) (not x15877) (not x3031) x2672 (not x16683))
+:assumption (or x25785 (not x6149))
+:assumption (or (not x3368) (not x10909))
+:assumption (or (not x18959) x6030 (not x22232) (not x9466) x9391 x22081)
+:assumption (or (not x25295) (not x10707))
+:assumption (or (not x28081) x9729)
+:assumption (or x17860 (not x14578) (not x31068) (not x26700))
+:assumption (or (not x24660) (not x31921))
+:assumption (or (not x26168) (not x22295))
+:assumption (or x1639 x16937)
+:assumption (or x6111 (not x2024))
+:assumption (or (not x9422) (not x21298))
+:assumption (or x10305 (not x9585))
+:assumption (or x23244 (not x3337) (not x8002))
+:assumption (or (not x2240) (not x9238))
+:assumption (or (not x16688) (not x15886))
+:assumption (or (not x8425) x5866)
+:assumption (or x5239 x18327)
+:assumption (or (not x29918) x6951)
+:assumption (or x10696 x23531)
+:assumption (or (not x8784) (not x21298))
+:assumption (or x17402 x849)
+:assumption (or (not x25659) x29199)
+:assumption (or (not x21188) (not x30633) (not x2912) (not x2720))
+:assumption (or (not x17570) (not x23957))
+:assumption (or (not x24359) (not x13956))
+:assumption (or x23814 x6065)
+:assumption (or x2758 (not x25827) (not x8002))
+:assumption (or x16420 x11800)
+:assumption (or (not x22881) x26795)
+:assumption (or x5856 x11082 x12602)
+:assumption (or x1268 x13365)
+:assumption (or x441 (not x16692))
+:assumption (or (not x6746) x6665 x30891)
+:assumption (or x17899 x25358)
+:assumption (or (not x17139) (not x1622) (not x1739) x14446 (not x25803) x381)
+:assumption (or x18526 (not x31450))
+:assumption (or (not x8120) (not x17064))
+:assumption (or (not x17995) (not x21357))
+:assumption (or x22430 x7944)
+:assumption (or x12242 x1833 x5226)
+:assumption (or x23896 x4202)
+:assumption (or (not x9008) (not x14497))
+:assumption (or (not x2072) x11152)
+:assumption (or (not x18338) (not x17887))
+:assumption (or (not x29196) x18422)
+:assumption (or (not x5528) (not x30652))
+:assumption (or (not x9683) (not x9119) x25334)
+:assumption (or x19298 x16591 x23244 x8002 (not x13010))
+:assumption (or (not x16374) x31814)
+:assumption (or x18317 (not x6403))
+:assumption (or x10752 (not x16735))
+:assumption (or x28328 x25076)
+:assumption (or x8769 x27977)
+:assumption (or (not x18019) (not x3682))
+:assumption (or x18727 x10624 (not x31498) (not x7050) (not x28185) (not x23625) x15330 x3045)
+:assumption (or (not x27104) (not x20759))
+:assumption (or x31563 (not x24329))
+:assumption (or (not x2689) (not x16741) (not x25538))
+:assumption (or (not x648) x6202)
+:assumption (or x12768 (not x16003) (not x16360))
+:assumption (or (not x6261) (not x17578) (not x30208))
+:assumption (or (not x5886) (not x9544) x6876 (not x21396) x15115)
+:assumption (or x31708 x368)
+:assumption (or x2441 x27781)
+:assumption (or (not x7278) (not x23886))
+:assumption (or x25191 x2766)
+:assumption (or x29969 (not x21008))
+:assumption (or x27832 x20970)
+:assumption (or x21556 (not x19077))
+:assumption (or x16496 (not x24155))
+:assumption (or (not x3459) x24325)
+:assumption (or (not x10072) x19940 x9640 (not x28082) x7139 (not x28466))
+:assumption (or (not x19150) x1474 x11792 x6149)
+:assumption (or (not x29064) x22001)
+:assumption (or (not x23288) x28342 (not x3392) x14652 x9089 (not x30877))
+:assumption (or x20287 x27393)
+:assumption (or x884 x3001)
+:assumption (or (not x16140) x27747)
+:assumption (or (not x18199) x10901)
+:assumption (or (not x31556) x15389 (not x10081))
+:assumption (or x542 (not x11435))
+:assumption (or (not x16799) x14761)
+:assumption (or x5178 (not x5394))
+:assumption (or (not x385) x23516)
+:assumption (or (not x5978) x13444)
+:assumption (or x9964 (not x31495))
+:assumption (or x31829 x918 (not x9548) (not x27123))
+:assumption (or (not x7188) (not x26670) (not x25366) (not x9827))
+:assumption (or (not x9531) x23411 x13557)
+:assumption (or x7896 (not x27302))
+:assumption (or x18738 x11754)
+:assumption (or (not x16215) x10970)
+:assumption (or x20820 x25798)
+:assumption (or x6746 (not x30959))
+:assumption (or (not x25380) (not x22125))
+:assumption (or (not x23919) (not x3324))
+:assumption (or (not x1237) (not x7692))
+:assumption (or x6187 x21298)
+:assumption (or x15833 (not x19804))
+:assumption (or (not x27045) (not x2358))
+:assumption (or x21815 (not x13865) x12558)
+:assumption (or (not x25658) x25423)
+:assumption (or x4559 x13658)
+:assumption (or x9147 (not x2304))
+:assumption (or x2500 (not x3762) x23947)
+:assumption (or x17585 (not x30376))
+:assumption (or x27595 (not x21037))
+:assumption (or (not x28130) x19311)
+:assumption (or (not x26533) (not x17231) x22844)
+:assumption (or (not x27503) x13524)
+:assumption (or (not x16305) x26657)
+:assumption (or x25582 (not x17501))
+:assumption (or (not x17034) x2330)
+:assumption (or (not x7448) x964)
+:assumption (or (not x1784) (not x6342))
+:assumption (or (not x15863) x3642)
+:assumption (or (not x2345) x4323)
+:assumption (or x6951 (not x18517))
+:assumption (or x28655 x5028 x634)
+:assumption (or (not x12838) x8426)
+:assumption (or x27196 x27020)
+:assumption (or x18864 x10026)
+:assumption (or (not x24929) x13110)
+:assumption (or (not x30984) (not x18844))
+:assumption (or x23802 (not x19680))
+:assumption (or x30138 (not x12084))
+:assumption (or (not x6533) (not x24791))
+:assumption (or x1393 (not x15730))
+:assumption (or (not x11068) (not x16189) (not x8623) x11392 x17146 (not x9814))
+:assumption (or (not x1241) (not x21683))
+:assumption (or (not x11062) x11667)
+:assumption (or x30843 x1113)
+:assumption (or x23428 (not x9008))
+:assumption (or (not x21272) x25800)
+:assumption (or x13427 (not x4795))
+:assumption (or x1068 (not x13112))
+:assumption (or (not x19635) (not x31890))
+:assumption (or x15890 x21751)
+:assumption (or (not x4643) x2033)
+:assumption (or x12045 (not x29974))
+:assumption (or x17728 x21508)
+:assumption (or x11564 (not x28233))
+:assumption (or (not x15287) (not x1357))
+:assumption (or (not x30060) x15160)
+:assumption (or (not x5204) x30918)
+:assumption (or x257 x23244)
+:assumption (or x20702 (not x26864))
+:assumption (or x8454 x28954)
+:assumption (or (not x23391) (not x20990) x13139 (not x5746) x23310 x30996 x9663 (not x14797) (not x3375))
+:assumption (or x17399 (not x16802))
+:assumption (or x28449 (not x16374))
+:assumption (or x27393 x6895)
+:assumption (or (not x17672) x9008)
+:assumption (or x20241 x10310)
+:assumption (or (not x28003) x11622)
+:assumption (or x3435 (not x24907))
+:assumption (or (not x31306) (not x2018))
+:assumption (or (not x31621) x13040)
+:assumption (or (not x8606) (not x16126))
+:assumption (or x13956 (not x12976) (not x2762))
+:assumption (or x6108 x9403)
+:assumption (or (not x28088) (not x2281))
+:assumption (or (not x17281) x22444)
+:assumption (or x18861 x24104)
+:assumption (or (not x31628) (not x11720))
+:assumption (or (not x14253) x6873)
+:assumption (or x16479 (not x936) x5157 (not x10738) x13196 (not x22814) (not x19145) x3336)
+:assumption (or (not x12843) x8490)
+:assumption (or x4652 (not x3015))
+:assumption (or (not x10101) x31509)
+:assumption (or x57 (not x27876))
+:assumption (or x2224 (not x9984) (not x13622))
+:assumption (or x8031 (not x6190))
+:assumption (or (not x893) (not x29251))
+:assumption (or (not x12308) x1909)
+:assumption (or x22004 x31685)
+:assumption (or x19497 x15336)
+:assumption (or (not x25127) x97)
+:assumption (or (not x28585) (not x7835) x17441 x24079 x12375 x26253)
+:assumption (or x25032 x26807)
+:assumption (or x4115 x5528)
+:assumption (or x2981 x480)
+:assumption (or (not x20031) (not x15982))
+:assumption (or (not x2397) (not x29846))
+:assumption (or (not x31667) x7835 x29821)
+:assumption (or x10274 (not x421))
+:assumption (or x10799 x14729)
+:assumption (or (not x31165) (not x18859) x22336)
+:assumption (or (not x21919) x6969)
+:assumption (or x15470 (not x21894))
+:assumption (or (not x19156) x8887)
+:assumption (or (not x16071) x7507)
+:assumption (or (not x29190) x3385)
+:assumption (or x21747 (not x916))
+:assumption (or (not x23599) (not x27349))
+:assumption (or x4476 (not x10032))
+:assumption (or (not x15492) x10875)
+:assumption (or x3586 x1252)
+:assumption (or (not x2865) (not x22754))
+:assumption (or x15826 (not x6487))
+:assumption (or (not x19625) x23906)
+:assumption (or (not x27682) (not x7630))
+:assumption (or (not x13918) (not x1385))
+:assumption (or x18943 x5162 x1039 x15987 (not x14078))
+:assumption (or x5896 (not x1075))
+:assumption (or x7978 x20700)
+:assumption (or x4990 (not x25819))
+:assumption (or x16173 (not x13776))
+:assumption (or (not x24579) (not x12553))
+:assumption (or (not x9929) x31873)
+:assumption (or x9707 x9772)
+:assumption (or x21153 (not x18431) x645 x777 (not x8940) (not x16172))
+:assumption (or (not x325) x7349)
+:assumption (or x30540 (not x19097))
+:assumption (or x10222 x18647)
+:assumption (or x21606 x6087)
+:assumption (or x11 (not x24930))
+:assumption (or x15201 (not x16672) x29363 (not x2885))
+:assumption (or (not x23399) (not x21343))
+:assumption (or x6848 x22703 (not x8462))
+:assumption (or (not x23881) x31351)
+:assumption (or x1191 x27443)
+:assumption (or x801 (not x12775))
+:assumption (or x5528 (not x30159))
+:assumption (or x8002 x18094)
+:assumption (or (not x25359) x17390)
+:assumption (or (not x2757) (not x7835))
+:assumption (or (not x17855) (not x26107) (not x19531) x11963)
+:assumption (or (not x13365) x10268)
+:assumption (or x2932 (not x20697))
+:assumption (or x26487 (not x30212))
+:assumption (or (not x1644) x29864)
+:assumption (or x13394 x15548)
+:assumption (or (not x16712) (not x21298))
+:assumption (or x15193 x11324)
+:assumption (or x5709 x10407)
+:assumption (or x31657 (not x25659) x411)
+:assumption (or (not x18583) (not x911) (not x26518) x20383 x3860)
+:assumption (or x30635 (not x7063))
+:assumption (or (not x27890) (not x21772) x22390 x23700 (not x7091))
+:assumption (or x13885 (not x9442))
+:assumption (or (not x15085) x11783)
+:assumption (or x5584 x18852)
+:assumption (or x28933 x14941)
+:assumption (or (not x2158) x16833)
+:assumption (or (not x26919) x1286)
+:assumption (or (not x16375) x19848 (not x7948) (not x15991))
+:assumption (or (not x27120) x5028)
+:assumption (or x4612 (not x29199) x25659)
+:assumption (or x1001 x22960)
+:assumption (or x31237 x14035)
+:assumption (or x27217 x8133)
+:assumption (or (not x24829) (not x1628) x20588)
+:assumption (or x594 (not x16536))
+:assumption (or (not x9281) (not x23244))
+:assumption (or x28512 x29112)
+:assumption (or (not x29668) (not x7154))
+:assumption (or x13532 (not x3737))
+:assumption (or x25649 x11005)
+:assumption (or x1892 x21223)
+:assumption (or (not x5245) x3387)
+:assumption (or x9403 (not x26715))
+:assumption (or x9008 x30237)
+:assumption (or x5050 (not x7446))
+:assumption (or (not x23318) (not x31538))
+:assumption (or x7368 x437)
+:assumption (or x4723 (not x26697))
+:assumption (or (not x6273) (not x11517) (not x2370) x10127 x11059)
+:assumption (or x26128 x12146)
+:assumption (or x18335 x10079)
+:assumption (or (not x10548) x18216 x10341 (not x5127) x2251)
+:assumption (or (not x30891) (not x12345))
+:assumption (or x30907 (not x26120))
+:assumption (or (not x964) (not x17445))
+:assumption (or x3247 (not x7086))
+:assumption (or (not x26670) (not x16606) (not x23109) x964)
+:assumption (or x27618 (not x31519))
+:assumption (or (not x25546) x12052)
+:assumption (or (not x31168) (not x6307))
+:assumption (or (not x163) (not x30113))
+:assumption (or x20961 x20334)
+:assumption (or x3384 x15540)
+:assumption (or x30667 x28730)
+:assumption (or (not x5846) (not x9095))
+:assumption (or (not x25193) x10699)
+:assumption (or (not x16185) x8039)
+:assumption (or x6472 (not x3299))
+:assumption (or (not x21690) (not x22221))
+:assumption (or x11093 (not x18770))
+:assumption (or (not x11953) (not x29428))
+:assumption (or x5666 x23397 (not x22054) (not x24595))
+:assumption (or x27129 x16741 (not x2133))
+:assumption (or x8304 (not x31247))
+:assumption (or x14282 x21297)
+:assumption (or (not x8952) x18247)
+:assumption (or x21775 x6289)
+:assumption (or (not x19743) x25366)
+:assumption (or (not x21344) (not x19192))
+:assumption (or x5206 (not x15964))
+:assumption (or (not x28846) x7746)
+:assumption (or (not x19628) x5400 x22844)
+:assumption (or x23244 x8114)
+:assumption (or x4085 x18757)
+:assumption (or x19992 (not x29451) x20530 x11237)
+:assumption (or (not x455) x6988)
+:assumption (or x7084 x21608)
+:assumption (or (not x2963) (not x17101))
+:assumption (or (not x22294) x9008)
+:assumption (or x9531 x18945)
+:assumption (or (not x6797) x6911 (not x24065) (not x24952))
+:assumption (or (not x19214) x17918 x18706 (not x12536))
+:assumption (or (not x25327) x9996)
+:assumption (or x12922 (not x26597))
+:assumption (or x3488 x15197 (not x25839) x30257 (not x24226) (not x7145))
+:assumption (or x4476 (not x6307))
+:assumption (or x29165 x16333 (not x12312) x31265 x2239 x19180)
+:assumption (or (not x24695) (not x7643))
+:assumption (or x29849 (not x25294))
+:assumption (or x23604 (not x918))
+:assumption (or (not x11372) (not x23646))
+:assumption (or (not x11451) (not x1383))
+:assumption (or (not x20905) (not x3303))
+:assumption (or (not x18485) (not x30695))
+:assumption (or x10418 (not x19964))
+:assumption (or (not x451) x18275 x23752 (not x29662))
+:assumption (or (not x13386) x9852)
+:assumption (or (not x29312) (not x29809))
+:assumption (or (not x6604) (not x11757) (not x16067) x20737)
+:assumption (or (not x9410) x23476)
+:assumption (or (not x6322) (not x16096) x918)
+:assumption (or (not x384) x31281)
+:assumption (or x31237 (not x25376))
+:assumption (or x2144 (not x20503))
+:assumption (or x15015 (not x13576))
+:assumption (or (not x25539) (not x8078))
+:assumption (or (not x16741) (not x29948))
+:assumption (or (not x29851) x26256)
+:assumption (or x19645 x31458)
+:assumption (or (not x23244) (not x6620))
+:assumption (or x10323 (not x30816))
+:assumption (or x10075 (not x2108))
+:assumption (or (not x7365) (not x17690) x16881 x18140 (not x14995) (not x13278) x18948)
+:assumption (or (not x3826) (not x29668))
+:assumption (or (not x16559) (not x27692))
+:assumption (or (not x12148) (not x12971))
+:assumption (or x5830 (not x30808))
+:assumption (or (not x9880) (not x1714) x21432)
+:assumption (or (not x2138) x31781)
+:assumption (or (not x30498) x1217 x5984 x14839)
+:assumption (or x27594 (not x27187))
+:assumption (or (not x30964) (not x27696))
+:assumption (or (not x29201) (not x9789))
+:assumption (or x9624 x14819)
+:assumption (or (not x2402) (not x27268))
+:assumption (or (not x29775) x20700 x21653)
+:assumption (or x4178 x9127)
+:assumption (or x4782 (not x30) (not x21700) (not x26948) (not x7555))
+:assumption (or x27530 x23715 (not x29617) x18401)
+:assumption (or (not x11278) x19498)
+:assumption (or x16758 x12165)
+:assumption (or x30682 x21975)
+:assumption (or (not x29894) x2909)
+:assumption (or x14355 x19996)
+:assumption (or x2498 x25088)
+:assumption (or x16169 x14506)
+:assumption (or x11150 x20974)
+:assumption (or (not x13576) (not x5775))
+:assumption (or x18844 x27958 (not x27492))
+:assumption (or x31590 (not x14354))
+:assumption (or (not x21876) (not x6423))
+:assumption (or x2133 (not x12711))
+:assumption (or x8608 x26625)
+:assumption (or x19767 x6548 x26581 (not x29002))
+:assumption (or x13956 (not x18217))
+:assumption (or x21045 (not x25520))
+:assumption (or x27676 (not x7527))
+:assumption (or x29115 (not x21298) (not x17904))
+:assumption (or x29973 x13678)
+:assumption (or (not x6773) (not x46))
+:assumption (or x2473 x11358)
+:assumption (or (not x29868) (not x3732))
+:assumption (or x15212 x4100)
+:assumption (or (not x23934) (not x30629))
+:assumption (or (not x7903) (not x11168))
+:assumption (or x8002 x5075)
+:assumption (or x12719 x6969 (not x10948))
+:assumption (or (not x27789) (not x7201))
+:assumption (or x10952 x1218)
+:assumption (or (not x20555) (not x3000) x8995 x9008 (not x3498) x21387)
+:assumption (or x28810 (not x11096))
+:assumption (or x19829 (not x23458))
+:assumption (or x23508 (not x30189))
+:assumption (or (not x29562) x26890)
+:assumption (or (not x23572) (not x7964))
+:assumption (or x29960 x1196)
+:assumption (or x6190 x16744)
+:assumption (or x20808 (not x716))
+:assumption (or (not x17814) x28494)
+:assumption (or x3406 x445)
+:assumption (or x29399 (not x8454))
+:assumption (or (not x16386) (not x17302))
+:assumption (or x6569 (not x21432) (not x9880))
+:assumption (or (not x11477) x11009)
+:assumption (or x12362 (not x21815))
+:assumption (or (not x18511) (not x5240))
+:assumption (or x25251 (not x14899))
+:assumption (or x9025 x6470)
+:assumption (or x28771 (not x22922))
+:assumption (or x25606 (not x28222))
+:assumption (or x26146 (not x2973))
+:assumption (or x24445 (not x22981))
+:assumption (or x911 (not x19950))
+:assumption (or x5078 x23543)
+:assumption (or (not x22284) (not x29428))
+:assumption (or (not x24541) (not x300))
+:assumption (or (not x1833) (not x12242))
+:assumption (or (not x9566) x19212)
+:assumption (or x21980 x23244 (not x20402))
+:assumption (or x14455 (not x13590))
+:assumption (or x28215 (not x7346))
+:assumption (or (not x5037) x25687)
+:assumption (or x6559 x7402)
+:assumption (or x24839 x24872)
+:assumption (or x13911 x29677)
+:assumption (or x25818 (not x28351))
+:assumption (or x15519 (not x13771))
+:assumption (or (not x13581) (not x10908))
+:assumption (or (not x5582) (not x27915))
+:assumption (or (not x30032) (not x169))
+:assumption (or x9152 x28759)
+:assumption (or x4815 x24435 x19671 x7792)
+:assumption (or (not x17544) x11305)
+:assumption (or (not x29056) (not x21809))
+:assumption (or (not x21322) (not x16762))
+:assumption (or (not x130) x16502)
+:assumption (or (not x7180) (not x14331))
+:assumption (or x12082 (not x31407))
+:assumption (or (not x16280) (not x6307))
+:assumption (or (not x27648) x13111)
+:assumption (or (not x26736) x5862)
+:assumption (or x25325 (not x30348))
+:assumption (or (not x8002) (not x1999))
+:assumption (or (not x926) (not x24200))
+:assumption (or (not x25094) (not x20119) x28436)
+:assumption (or (not x25979) x30642)
+:assumption (or x16980 x25927 x11675)
+:assumption (or x18859 (not x12532))
+:assumption (or (not x21081) x26007)
+:assumption (or (not x18745) (not x10601))
+:assumption (or x7149 x581)
+:assumption (or (not x16029) x22495)
+:assumption (or (not x3873) x15492 x3435)
+:assumption (or (not x15936) x5162 x7308 x3365 (not x16185) (not x7620) x12747)
+:assumption (or x25350 x26365)
+:assumption (or (not x11591) x25355)
+:assumption (or (not x13190) x16025)
+:assumption (or (not x10589) x27729)
+:assumption (or x17967 (not x27796))
+:assumption (or x24830 (not x24471))
+:assumption (or x4395 x31363)
+:assumption (or (not x29051) x16827)
+:assumption (or x4763 (not x13428))
+:assumption (or (not x30751) (not x11792) (not x25842))
+:assumption (or x15311 (not x10726) (not x14171) x21335 x27535)
+:assumption (or (not x7658) x13228)
+:assumption (or x4470 (not x8462))
+:assumption (or (not x11191) (not x1011) (not x13062) x14839)
+:assumption (or x15621 (not x28405))
+:assumption (or (not x30718) (not x24290))
+:assumption (or (not x12032) (not x24630))
+:assumption (or (not x10657) x23244)
+:assumption (or (not x16875) x19889)
+:assumption (or (not x27986) (not x11772))
+:assumption (or x27336 (not x17378))
+:assumption (or x7167 (not x6780))
+:assumption (or (not x19061) x9701 x6965 (not x11119))
+:assumption (or (not x6649) (not x28469))
+:assumption (or x4255 x22753 x8382)
+:assumption (or (not x31359) (not x19945))
+:assumption (or (not x25812) x30188)
+:assumption (or (not x19843) (not x7992) x6215)
+:assumption (or x9008 x25436 (not x6842) (not x31491) (not x26621) (not x26470))
+:assumption (or x30224 x3056)
+:assumption (or (not x1843) x14541)
+:assumption (or (not x5702) (not x14308))
+:assumption (or x5229 (not x7197))
+:assumption (or (not x26914) (not x17448))
+:assumption (or x22135 x1723)
+:assumption (or (not x20568) x1450)
+:assumption (or x28296 (not x1524))
+:assumption (or x15072 x28383)
+:assumption (or x18063 x3986)
+:assumption (or x12917 x6077)
+:assumption (or x12934 (not x16057))
+:assumption (or (not x19251) x19117)
+:assumption (or x17040 (not x15887))
+:assumption (or x4659 (not x9697))
+:assumption (or x3487 (not x8002) (not x24651))
+:assumption (or x22288 (not x27617))
+:assumption (or x24225 x21438)
+:assumption (or (not x21507) x16816)
+:assumption (or (not x25065) x8357)
+:assumption (or (not x9008) x5869)
+:assumption (or x26816 x2778)
+:assumption (or (not x7824) (not x28703))
+:assumption (or (not x934) (not x24534))
+:assumption (or (not x16857) (not x30011))
+:assumption (or x17998 x20486)
+:assumption (or x31222 (not x21530))
+:assumption (or x106 x29305)
+:assumption (or (not x967) x16843 x26670 x16423)
+:assumption (or x17936 x15670 (not x827))
+:assumption (or (not x3102) (not x16163))
+:assumption (or (not x24085) (not x4688) x16991 x13018)
+:assumption (or x19273 x13359)
+:assumption (or x7735 x24807)
+:assumption (or x10184 (not x22208))
+:assumption (or x18446 x13472)
+:assumption (or (not x26124) x4704)
+:assumption (or x147 x529)
+:assumption (or (not x28555) (not x19899))
+:assumption (or x4684 (not x14155))
+:assumption (or x17083 (not x23114) x2587 x12410 x15422 x23906)
+:assumption (or (not x5209) (not x17757))
+:assumption (or x26172 x10596 (not x23830) x23386)
+:assumption (or x8630 x27920)
+:assumption (or (not x13839) x31589)
+:assumption (or x31278 (not x6311))
+:assumption (or x9531 (not x552) x25998)
+:assumption (or x17885 x17243)
+:assumption (or (not x15766) x9008)
+:assumption (or x20211 (not x321) x5975 x28982 (not x29875) (not x29052) x16071 x21291)
+:assumption (or (not x6911) x15358)
+:assumption (or (not x15634) x6855 (not x16268) (not x2964) (not x2135) (not x23244))
+:assumption (or x29331 x7691)
+:assumption (or (not x25303) (not x12251))
+:assumption (or x15922 x14476)
+:assumption (or (not x30871) x29076)
+:assumption (or x1959 (not x30255))
+:assumption (or x689 x21298)
+:assumption (or x2709 (not x15124))
+:assumption (or (not x23450) (not x6237))
+:assumption (or (not x9906) x28964)
+:assumption (or x7160 x2273)
+:assumption (or x5288 (not x18533))
+:assumption (or (not x4068) (not x8002))
+:assumption (or (not x15727) (not x24804) (not x11134) x19730)
+:assumption (or (not x9059) (not x20651))
+:assumption (or x2278 (not x11369))
+:assumption (or (not x17836) (not x12709))
+:assumption (or (not x8767) (not x28149) x21298 x25818)
+:assumption (or (not x14558) x6658)
+:assumption (or x20038 x29500)
+:assumption (or (not x27169) (not x19276))
+:assumption (or (not x26435) x28318)
+:assumption (or (not x3820) x24417)
+:assumption (or x9693 x13531)
+:assumption (or x12404 (not x29203))
+:assumption (or x4414 x5528)
+:assumption (or (not x18033) x1664)
+:assumption (or x20949 x11990 x25050)
+:assumption (or (not x2903) (not x11131) (not x25945) (not x24073) (not x22435))
+:assumption (or (not x18259) x28041)
+:assumption (or (not x28584) x13540)
+:assumption (or x16178 x18003)
+:assumption (or x12806 (not x15659))
+:assumption (or (not x8115) (not x28541) x31829 x6898)
+:assumption (or x6388 (not x1036))
+:assumption (or x2936 (not x27458))
+:assumption (or x5950 (not x20723))
+:assumption (or x25158 x8165)
+:assumption (or (not x23711) x18382)
+:assumption (or (not x19750) x25847 x14649 (not x9694) x14865)
+:assumption (or x28281 x18859)
+:assumption (or (not x9214) x21815)
+:assumption (or (not x4749) x19864)
+:assumption (or (not x8484) (not x7681))
+:assumption (or (not x2951) (not x27545))
+:assumption (or (not x3875) (not x18441))
+:assumption (or (not x28487) x9623 (not x11792) x6149 x15987 x25224)
+:assumption (or x20028 x24192)
+:assumption (or (not x17727) x24631)
+:assumption (or (not x15618) x23382)
+:assumption (or (not x18643) x31107)
+:assumption (or (not x21132) (not x9486))
+:assumption (or (not x13094) x15467 x30259 (not x3343) x29553)
+:assumption (or (not x5012) x22534)
+:assumption (or (not x20196) x725)
+:assumption (or x18924 (not x16437))
+:assumption (or (not x13614) x162)
+:assumption (or (not x14500) x5528)
+:assumption (or (not x27338) x19505)
+:assumption (or (not x27292) (not x1880) (not x8602))
+:assumption (or x12353 x12599)
+:assumption (or x5206 x23244 x4413 x24174 x8002)
+:assumption (or (not x15271) (not x9080) x14839)
+:assumption (or x5374 x13879 (not x10401) x5089 x25038 x30912)
+:assumption (or (not x5315) (not x28224))
+:assumption (or x26953 x5378)
+:assumption (or x21298 x29995)
+:assumption (or x9439 (not x17079))
+:assumption (or x23719 (not x14954))
+:assumption (or x288 (not x16554) x17624 (not x14549) x1590)
+:assumption (or (not x9828) x11327)
+:assumption (or (not x2859) (not x18400))
+:assumption (or (not x14927) (not x6596))
+:assumption (or (not x20060) x10360 x6351 x16652 x953 x28465)
+:assumption (or x2190 x3350)
+:assumption (or (not x29404) x22721)
+:assumption (or x25839 (not x1020))
+:assumption (or (not x30803) (not x18561))
+:assumption (or (not x14038) x12458 x12045 (not x20949))
+:assumption (or (not x11792) x29207)
+:assumption (or x30809 x17852)
+:assumption (or x30771 x24350)
+:assumption (or x2247 x22538)
+:assumption (or (not x30908) (not x1877))
+:assumption (or x11891 (not x9244))
+:assumption (or x13088 x14931)
+:assumption (or x12646 (not x6275) x20782 (not x19859))
+:assumption (or x1864 (not x23244) x14455)
+:assumption (or (not x10968) (not x19722))
+:assumption (or x7067 x23005)
+:assumption (or (not x5098) (not x29150))
+:assumption (or x31298 (not x10680))
+:assumption (or x24258 x31105)
+:assumption (or x27368 x13997)
+:assumption (or x123 (not x28436) (not x8461))
+:assumption (or x9313 x15917)
+:assumption (or x20325 (not x14154))
+:assumption (or x21479 (not x23294))
+:assumption (or (not x27891) (not x24756))
+:assumption (or (not x6096) x15293)
+:assumption (or x12238 x18191 (not x10235) x28995 (not x13945) (not x26737) x3557 x14755)
+:assumption (or x30612 (not x23826))
+:assumption (or x15696 x31911)
+:assumption (or (not x18473) (not x11281))
+:assumption (or x25272 x2854 x29440 (not x22444) (not x25666) x1372 x11857)
+:assumption (or (not x29376) (not x11109))
+:assumption (or (not x12539) x14662 (not x11201) (not x8111) (not x21726) (not x2343) x17506 x12883 (not x1426))
+:assumption (or (not x22909) (not x9339))
+:assumption (or (not x19366) x13956 x26578)
+:assumption (or x10988 (not x20056))
+:assumption (or (not x11545) x14371)
+:assumption (or (not x13472) (not x9423) (not x22933) (not x10338))
+:assumption (or (not x2172) x28308 (not x25659))
+:assumption (or (not x7847) x15120)
+:assumption (or x20847 x23179)
+:assumption (or x12181 x31855)
+:assumption (or (not x10276) x9627)
+:assumption (or x28722 x331 (not x9008))
+:assumption (or (not x4043) x31188)
+:assumption (or x28597 (not x13069))
+:assumption (or x90 (not x15931))
+:assumption (or x4067 (not x4366) x8454 (not x6661))
+:assumption (or (not x9308) x8602)
+:assumption (or x15059 x3503)
+:assumption (or (not x17021) x16926)
+:assumption (or x17346 (not x12779))
+:assumption (or (not x8723) x16555)
+:assumption (or x3304 x11639)
+:assumption (or (not x31696) (not x15617) x9820)
+:assumption (or x14938 x14982)
+:assumption (or x26654 (not x8091))
+:assumption (or x18489 x6540 (not x19473))
+:assumption (or (not x9356) x9269)
+:assumption (or x24544 x11796)
+:assumption (or (not x31753) (not x27926) (not x3283) (not x9440))
+:assumption (or x25705 (not x26576))
+:assumption (or (not x4265) x7176)
+:assumption (or (not x23202) (not x1070) x15117 (not x28094))
+:assumption (or (not x16849) (not x10384))
+:assumption (or (not x5394) (not x28512) x762 x3601)
+:assumption (or (not x1860) x29279)
+:assumption (or x7450 (not x14771))
+:assumption (or (not x3264) x21177)
+:assumption (or x23182 (not x3434))
+:assumption (or x31707 (not x26653))
+:assumption (or x14299 x19182)
+:assumption (or (not x10827) (not x29368))
+:assumption (or x7103 x2388)
+:assumption (or x18042 (not x1705))
+:assumption (or (not x20853) x6162)
+:assumption (or (not x24553) x25876)
+:assumption (or (not x14631) x18509)
+:assumption (or x3945 (not x17978))
+:assumption (or x28025 x7478)
+:assumption (or (not x6340) (not x681) x4107)
+:assumption (or x1727 x1400)
+:assumption (or x10510 (not x9650))
+:assumption (or x21815 (not x1047))
+:assumption (or x23244 x2729 x27359 x8002 (not x22554))
+:assumption (or (not x16910) (not x25510) (not x20119))
+:assumption (or x5794 x30296)
+:assumption (or x24356 x16619 (not x8602))
+:assumption (or (not x14594) (not x31313))
+:assumption (or (not x21298) (not x12078) (not x31302))
+:assumption (or (not x28089) x16858)
+:assumption (or (not x27250) x13018)
+:assumption (or x23562 (not x6710) x27925)
+:assumption (or x3562 (not x12160))
+:assumption (or x26162 (not x31409))
+:assumption (or (not x558) (not x25724))
+:assumption (or (not x31290) (not x26980))
+:assumption (or x20773 x16510)
+:assumption (or (not x519) (not x26088))
+:assumption (or (not x10655) (not x7414) x18272 (not x4259))
+:assumption (or x23801 x2943 (not x6475))
+:assumption (or x25477 x24421)
+:assumption (or (not x11977) (not x14832) (not x7542) x4130)
+:assumption (or x182 x8768)
+:assumption (or x935 (not x31693))
+:assumption (or x9288 (not x21690))
+:assumption (or x19177 (not x10064))
+:assumption (or (not x13629) x17901 x8020 x4548 x10087)
+:assumption (or x24700 x27636 (not x7425))
+:assumption (or (not x24495) x6325)
+:assumption (or x13576 x24327 x6951 x9418)
+:assumption (or x2585 (not x14831))
+:assumption (or x9804 (not x29585))
+:assumption (or (not x10881) x2482)
+:assumption (or x18734 x11992 x18859)
+:assumption (or x21501 x11539)
+:assumption (or x11369 (not x24504) (not x28917) x18364 x1379)
+:assumption (or (not x20813) (not x5398))
+:assumption (or (not x4903) (not x18081) (not x2140) x26716 (not x14752) (not x3976) x15885 x14736)
+:assumption (or (not x87) (not x4239))
+:assumption (or x30696 (not x17115))
+:assumption (or x3528 x24083)
+:assumption (or x30994 (not x24761))
+:assumption (or (not x31128) x8002 (not x26158))
+:assumption (or (not x9560) x9008)
+:assumption (or x4845 (not x20920) x26894 x26381 x18767 x9008)
+:assumption (or (not x8002) (not x22863) (not x1896) x5206)
+:assumption (or x22925 (not x7784) x22221)
+:assumption (or x3219 x17361)
+:assumption (or x1393 (not x3525) (not x23834))
+:assumption (or x827 x4489)
+:assumption (or x25737 x15549)
+:assumption (or x10859 (not x23428) (not x14349) (not x25928) (not x16070))
+:assumption (or x5281 x10664)
+:assumption (or (not x16025) x14918 x24469)
+:assumption (or (not x19900) (not x22855) x29567)
+:assumption (or x16952 (not x22028))
+:assumption (or x7462 x28026)
+:assumption (or x2220 x18637)
+:assumption (or x21669 x2870)
+:assumption (or (not x5034) x14595)
+:assumption (or (not x5722) (not x13862) (not x27537))
+:assumption (or x14224 x16907)
+:assumption (or (not x27998) (not x15527) (not x17571))
+:assumption (or x1393 (not x15502))
+:assumption (or (not x26192) (not x15511))
+:assumption (or x25216 x10878)
+:assumption (or x13253 (not x27653) (not x14323))
+:assumption (or (not x5625) (not x19200))
+:assumption (or (not x791) (not x25373))
+:assumption (or (not x30054) x18248)
+:assumption (or x29721 x17518)
+:assumption (or (not x29130) x26404)
+:assumption (or (not x17195) x4333)
+:assumption (or x13141 x5373)
+:assumption (or (not x31209) (not x23827))
+:assumption (or x3914 x23692)
+:assumption (or (not x27784) x19004)
+:assumption (or (not x11371) x28939)
+:assumption (or x12705 x11696)
+:assumption (or (not x31756) x16374 x14455 x31727)
+:assumption (or (not x2334) x19427)
+:assumption (or x529 x20172)
+:assumption (or x5528 (not x5840) x956)
+:assumption (or (not x25073) x19209)
+:assumption (or (not x16534) x8587)
+:assumption (or x11024 x13478)
+:assumption (or (not x16585) (not x19017))
+:assumption (or (not x28247) x1096)
+:assumption (or (not x28324) x21815)
+:assumption (or (not x9961) (not x3284))
+:assumption (or (not x16304) (not x10524))
+:assumption (or (not x27712) (not x1283))
+:assumption (or x12312 (not x29165))
+:assumption (or x11845 x21866)
+:assumption (or (not x24765) (not x56))
+:assumption (or x10237 (not x16025) x28587)
+:assumption (or x4026 (not x4825))
+:assumption (or x17132 x8678 (not x31402) (not x22407) (not x18340))
+:assumption (or (not x16510) (not x21754))
+:assumption (or x20631 (not x26723))
+:assumption (or x28924 (not x29607))
+:assumption (or (not x538) (not x376))
+:assumption (or x30899 (not x8163))
+:assumption (or (not x14960) (not x11201))
+:assumption (or x25490 x25234)
+:assumption (or x22946 x4402)
+:assumption (or (not x4110) (not x30266))
+:assumption (or x22561 (not x27846))
+:assumption (or x2256 (not x31252))
+:assumption (or x11938 (not x12890))
+:assumption (or x27723 x20978)
+:assumption (or (not x13892) (not x7179))
+:assumption (or (not x13111) x26107 (not x21472))
+:assumption (or x29484 x5628)
+:assumption (or (not x8707) (not x24906))
+:assumption (or x5886 x4944)
+:assumption (or (not x13707) x3215)
+:assumption (or x20662 x28674)
+:assumption (or (not x9089) (not x14652))
+:assumption (or x20617 x1476)
+:assumption (or (not x16504) x8713)
+:assumption (or x31556 x6808)
+:assumption (or (not x23676) x4715)
+:assumption (or x393 (not x2819))
+:assumption (or (not x22) (not x5541))
+:assumption (or (not x29655) (not x30380))
+:assumption (or x10454 x1268)
+:assumption (or x5091 (not x8002))
+:assumption (or x28242 (not x25346))
+:assumption (or x6813 (not x10990) x25670)
+:assumption (or (not x25784) x212)
+:assumption (or x19886 x18236)
+:assumption (or x7602 x24625)
+:assumption (or x3375 (not x19588))
+:assumption (or x10642 x1113)
+:assumption (or (not x15539) (not x5646))
+:assumption (or (not x14001) (not x9353))
+:assumption (or x25197 x5600)
+:assumption (or (not x17271) (not x25911))
+:assumption (or x15191 (not x30951))
+:assumption (or (not x21936) (not x26783))
+:assumption (or (not x11160) x18809)
+:assumption (or x30386 (not x17945))
+:assumption (or (not x21654) x1164 x1519 (not x21837) x3276 (not x24986) (not x11121) x18298 (not x8763) x9161 (not x7267) (not x22322))
+:assumption (or x16916 x31829)
+:assumption (or x10010 x25946 x21240 (not x17127) x30468)
+:assumption (or x31330 (not x7159) x28885)
+:assumption (or x29474 (not x15648) (not x18410) (not x5584) (not x18852))
+:assumption (or (not x4046) (not x19742))
+:assumption (or (not x26677) x4098)
+:assumption (or (not x25259) (not x17418))
+:assumption (or (not x19495) (not x15034))
+:assumption (or (not x29536) x18047)
+:assumption (or (not x17003) x23234)
+:assumption (or (not x26075) x15145)
+:assumption (or x10065 x31466)
+:assumption (or (not x6460) (not x25919))
+:assumption (or x13996 (not x29356))
+:assumption (or (not x16556) x7690 (not x12280))
+:assumption (or (not x4555) (not x24503))
+:assumption (or (not x6683) (not x30685))
+:assumption (or x26259 x9390)
+:assumption (or x24521 x13937)
+:assumption (or x9102 x29756)
+:assumption (or x14078 (not x23670))
+:assumption (or x28231 (not x19298))
+:assumption (or (not x13814) (not x3577))
+:assumption (or x21212 x15132)
+:assumption (or (not x28808) (not x8273))
+:assumption (or (not x13496) x11566)
+:assumption (or (not x29395) x9537)
+:assumption (or x25530 x25712)
+:assumption (or (not x24122) x29737)
+:assumption (or x9269 x30775)
+:assumption (or (not x6036) (not x31779))
+:assumption (or x27726 x20669 (not x10310) x4155 (not x3263))
+:assumption (or x3748 x1085)
+:assumption (or (not x4033) x15026)
+:assumption (or (not x30633) (not x25743))
+:assumption (or (not x31335) x10823)
+:assumption (or x7664 (not x16074) (not x7284) (not x21842))
+:assumption (or (not x8002) x21257)
+:assumption (or x17865 x24449)
+:assumption (or (not x11721) x20393)
+:assumption (or x15336 x12677)
+:assumption (or (not x13553) x27973 (not x2352) (not x3677) (not x15648) (not x18018))
+:assumption (or x6641 (not x4653))
+:assumption (or x9100 x10738)
+:assumption (or (not x3264) x20098)
+:assumption (or (not x21371) x28556)
+:assumption (or x25835 x20946)
+:assumption (or x27591 (not x12586))
+:assumption (or (not x12084) (not x9401))
+:assumption (or x15514 (not x15804))
+:assumption (or x6595 x10746)
+:assumption (or (not x18805) (not x20019) x10352 (not x5528) x27330 (not x26462))
+:assumption (or x5103 x5346)
+:assumption (or (not x23413) (not x21770))
+:assumption (or x21762 x26926)
+:assumption (or (not x10010) (not x2229))
+:assumption (or (not x31408) x3309)
+:assumption (or (not x14068) (not x23350))
+:assumption (or (not x20681) (not x3782))
+:assumption (or x23040 x31782)
+:assumption (or x23244 x18821 x22438)
+:assumption (or x26578 x9466 x25532 (not x9008) (not x5528))
+:assumption (or (not x21653) x25567 (not x6596))
+:assumption (or (not x13985) (not x29552))
+:assumption (or x28164 x19507)
+:assumption (or (not x21939) x19605 x6780 (not x8002))
+:assumption (or (not x1186) (not x4722))
+:assumption (or (not x19329) (not x21562))
+:assumption (or (not x27774) (not x9115))
+:assumption (or x6616 x24013)
+:assumption (or (not x22747) (not x31716))
+:assumption (or x31913 (not x17257) (not x26208) (not x2547) x5835)
+:assumption (or (not x6681) x4036)
+:assumption (or (not x10442) x30174)
+:assumption (or (not x14739) (not x1893))
+:assumption (or (not x2625) x16943)
+:assumption (or x13263 (not x4061))
+:assumption (or (not x18286) (not x4142))
+:assumption (or x30159 (not x5536))
+:assumption (or x26307 x2687)
+:assumption (or (not x31712) (not x29222))
+:assumption (or x5840 (not x956))
+:assumption (or x26294 x18525)
+:assumption (or (not x23253) (not x25748))
+:assumption (or x21382 (not x14768))
+:assumption (or x25119 x29644 x4741 x21295)
+:assumption (or x8002 x21260 x23244 (not x25206))
+:assumption (or x25281 (not x5041))
+:assumption (or x16510 (not x4046))
+:assumption (or (not x30247) (not x4618))
+:assumption (or x14407 (not x31048))
+:assumption (or x4930 x1335)
+:assumption (or (not x26649) (not x2197) (not x7560) (not x23178))
+:assumption (or (not x25839) (not x27990))
+:assumption (or x26052 (not x6404))
+:assumption (or (not x21015) x28329)
+:assumption (or x23408 (not x9747))
+:assumption (or (not x5662) (not x15759))
+:assumption (or (not x21263) (not x3695))
+:assumption (or x28634 (not x15467))
+:assumption (or (not x9234) (not x5240))
+:assumption (or (not x26843) (not x1809))
+:assumption (or (not x30423) x25548)
+:assumption (or (not x29066) (not x18132) (not x24141) (not x2291) (not x28438))
+:assumption (or x1446 (not x25376))
+:assumption (or x9651 (not x27603))
+:assumption (or (not x3931) x31531)
+:assumption (or (not x28736) (not x1331) (not x22495) (not x23312) (not x24152) x8122 x20469 x4260 x26721)
+:assumption (or x848 (not x26628))
+:assumption (or (not x28885) x29312 x12996 x24756)
+:assumption (or (not x21271) x28367)
+:assumption (or x2914 x1346)
+:assumption (or (not x22004) x22260 x29570 (not x18775))
+:assumption (or (not x24822) x29157)
+:assumption (or x14881 (not x7546))
+:assumption (or (not x24570) (not x26870))
+:assumption (or (not x19846) (not x10445))
+:assumption (or x29233 x6032)
+:assumption (or (not x6426) x8245 x27596 (not x4509))
+:assumption (or x28973 (not x19579))
+:assumption (or (not x16802) x17721)
+:assumption (or (not x28213) (not x4271))
+:assumption (or (not x15968) (not x4378))
+:assumption (or (not x9453) x12660 (not x380) x27939 (not x4451))
+:assumption (or x27741 x7042)
+:assumption (or (not x19316) x2714)
+:assumption (or x27091 x127 x29547 x24433)
+:assumption (or x31616 (not x21201))
+:assumption (or (not x6495) (not x14638))
+:assumption (or x6452 x20016)
+:assumption (or x10832 x9427)
+:assumption (or (not x1480) (not x12363))
+:assumption (or (not x26354) (not x24576))
+:assumption (or x16565 x21281)
+:assumption (or (not x7000) x22088)
+:assumption (or x11307 (not x27925))
+:assumption (or (not x23912) x28541)
+:assumption (or (not x27377) x4894)
+:assumption (or x2288 (not x22320))
+:assumption (or (not x15067) (not x1613))
+:assumption (or x4706 (not x23399))
+:assumption (or x21160 (not x8350))
+:assumption (or x19729 (not x27814))
+:assumption (or (not x27620) (not x2334) x2188 (not x26670) (not x2342) (not x21815) (not x16510))
+:assumption (or (not x20161) (not x29266))
+:assumption (or x7768 (not x7653))
+:assumption (or (not x29949) (not x17468))
+:assumption (or (not x8266) x8238)
+:assumption (or (not x25988) (not x15719))
+:assumption (or (not x9585) x23024)
+:assumption (or (not x20190) x7181 (not x14455) x16374)
+:assumption (or (not x28359) (not x31095))
+:assumption (or x9005 x17281)
+:assumption (or (not x31180) x19430)
+:assumption (or (not x14862) (not x6240))
+:assumption (or (not x11192) (not x6748))
+:assumption (or (not x30856) (not x18116))
+:assumption (or x5833 (not x28600))
+:assumption (or (not x2651) x6969)
+:assumption (or x21353 x9745)
+:assumption (or x9995 (not x3334))
+:assumption (or (not x5384) (not x6180))
+:assumption (or x630 x17962)
+:assumption (or x27628 (not x26911))
+:assumption (or x22589 x8318)
+:assumption (or (not x21728) x15980 x7606 x28977 x15274)
+:assumption (or (not x29553) x3343)
+:assumption (or (not x4597) (not x27831))
+:assumption (or x936 x19145)
+:assumption (or (not x23244) (not x31665))
+:assumption (or (not x12694) (not x8677) x17437 x1884 (not x27266) x952 x3652 (not x1580))
+:assumption (or (not x14839) x31813)
+:assumption (or x17482 x10276 x7731)
+:assumption (or x8002 x23244 x13956 x13883 (not x28364) (not x26892))
+:assumption (or x12918 x28283)
+:assumption (or (not x15201) (not x14276))
+:assumption (or (not x6862) x20014 (not x668) x28210)
+:assumption (or x1396 x18069 x23244)
+:assumption (or x14468 (not x20106))
+:assumption (or x95 (not x29657) (not x20282))
+:assumption (or (not x8002) (not x23574))
+:assumption (or x8532 (not x30358))
+:assumption (or x11780 (not x30441))
+:assumption (or (not x23167) x13187)
+:assumption (or x11501 (not x480))
+:assumption (or x5892 (not x29857))
+:assumption (or x10730 (not x12840))
+:assumption (or x28333 (not x14206))
+:assumption (or (not x24516) x16025)
+:assumption (or x8819 (not x28125) x2338)
+:assumption (or (not x30889) (not x10628))
+:assumption (or x10519 x3564)
+:assumption (or x18009 x20396)
+:assumption (or x27458 x10689)
+:assumption (or (not x12376) (not x1479))
+:assumption (or x14224 x30751)
+:assumption (or (not x13576) x20139 x26835)
+:assumption (or (not x6167) (not x11908))
+:assumption (or x17933 x25465)
+:assumption (or (not x4696) (not x10200))
+:assumption (or (not x11395) (not x23678))
+:assumption (or (not x17256) (not x15620) (not x25849) (not x7073) (not x4238))
+:assumption (or (not x17861) x18697)
+:assumption (or x18049 x19913)
+:assumption (or x1118 (not x12804))
+:assumption (or (not x7380) x18505 x12693 x18501)
+:assumption (or x11544 x21067)
+:assumption (or x15962 x1933)
+:assumption (or x9410 (not x19711) x8240 (not x4396) x28569)
+:assumption (or x1042 x25021)
+:assumption (or x13226 (not x28274))
+:assumption (or x21149 x27832)
+:assumption (or x16304 (not x31333))
+:assumption (or x5961 x2553)
+:assumption (or (not x12078) x21059)
+:assumption (or x27163 (not x25396))
+:assumption (or (not x18386) (not x30489))
+:assumption (or (not x13795) (not x20838))
+:assumption (or (not x12683) x2036)
+:assumption (or (not x11563) (not x14802) (not x23641))
+:assumption (or x26199 x19839)
+:assumption (or (not x21815) (not x21376))
+:assumption (or x23061 (not x27420))
+:assumption (or x18624 x530 x8002)
+:assumption (or x11853 x5558)
+:assumption (or (not x11058) (not x23604) x30428 x918)
+:assumption (or x22744 x18780)
+:assumption (or (not x10522) (not x14429) (not x14980) x10318 (not x10496) (not x22728) (not x15337) (not x4404) x8423 x11363)
+:assumption (or x27682 x4905)
+:assumption (or x7753 x25568)
+:assumption (or (not x3391) (not x15451))
+:assumption (or x17950 x5207)
+:assumption (or (not x4321) x6573)
+:assumption (or x26711 (not x7743))
+:assumption (or x13311 (not x24275))
+:assumption (or (not x18733) (not x13151) x19164 x1652 x115)
+:assumption (or (not x18859) x9071 x22387)
+:assumption (or (not x21815) x24230)
+:assumption (or x12999 x9487 (not x30899) x8568 (not x7413))
+:assumption (or x17921 x26852)
+:assumption (or x15917 x30973)
+:assumption (or (not x30520) x16718)
+:assumption (or x17984 (not x27949))
+:assumption (or (not x7571) (not x11093))
+:assumption (or x2140 (not x14736))
+:assumption (or x19638 x28094)
+:assumption (or (not x12379) (not x16916))
+:assumption (or x20342 x28528)
+:assumption (or x28917 (not x24757))
+:assumption (or x693 (not x18124))
+:assumption (or (not x4488) x15149)
+:assumption (or x9190 (not x1570))
+:assumption (or x11631 x19013)
+:assumption (or x1037 x22991)
+:assumption (or x11389 x14909)
+:assumption (or (not x22275) x28912)
+:assumption (or (not x30725) (not x30809))
+:assumption (or (not x13671) x27918)
+:assumption (or (not x6522) x6969)
+:assumption (or (not x4490) (not x5711))
+:assumption (or (not x18123) (not x6395))
+:assumption (or x17706 (not x19800) (not x15259))
+:assumption (or x23992 (not x24632))
+:assumption (or x1547 x8847)
+:assumption (or (not x22990) (not x13039))
+:assumption (or x14230 (not x5059))
+:assumption (or x15775 x17191)
+:assumption (or (not x15993) (not x22597))
+:assumption (or (not x12014) x21598)
+:assumption (or (not x4770) (not x25659))
+:assumption (or (not x17092) x22146)
+:assumption (or (not x2374) (not x10625))
+:assumption (or x12007 x19992 x8409 (not x6342))
+:assumption (or (not x14380) x13604 (not x4292) (not x29586) (not x9258))
+:assumption (or (not x7030) (not x6655))
+:assumption (or x9805 (not x19410) x21513 (not x14684))
+:assumption (or x22822 x27663)
+:assumption (or x29678 x5840)
+:assumption (or x8724 x5175 (not x23792) x21785 (not x21787))
+:assumption (or x17534 (not x11784))
+:assumption (or x19738 x14985)
+:assumption (or x14455 (not x31888))
+:assumption (or x28249 (not x1221) x18686 (not x27975))
+:assumption (or x101 x31644)
+:assumption (or (not x27028) (not x26469) x17825)
+:assumption (or x31822 (not x31782))
+:assumption (or x10271 (not x5947))
+:assumption (or x11114 (not x20037))
+:assumption (or x7081 (not x23206))
+:assumption (or x29812 x9934)
+:assumption (or (not x25659) (not x6043) (not x25585))
+:assumption (or (not x17855) (not x22795))
+:assumption (or x10177 (not x11996))
+:assumption (or x29058 x15835)
+:assumption (or x25172 (not x5307))
+:assumption (or (not x25017) x11281 x28435)
+:assumption (or (not x25659) (not x3545))
+:assumption (or x1051 x26008)
+:assumption (or (not x10932) (not x19864) x10809 (not x22693))
+:assumption (or x22295 x6703)
+:assumption (or x15385 (not x24689))
+:assumption (or (not x20201) (not x15323))
+:assumption (or x26670 x25831)
+:assumption (or x4903 x2140)
+:assumption (or (not x21012) (not x25062))
+:assumption (or x20835 x20878)
+:assumption (or (not x15753) (not x13971))
+:assumption (or x12329 (not x1891))
+:assumption (or x4378 x8761)
+:assumption (or (not x2349) x26498 (not x15990) x28193 (not x7210))
+:assumption (or (not x17272) (not x2695))
+:assumption (or (not x22093) (not x27674))
+:assumption (or x11541 x9008)
+:assumption (or x11098 x2553)
+:assumption (or x1637 (not x10139))
+:assumption (or (not x1030) (not x21593))
+:assumption (or x8002 (not x13859) x21394)
+:assumption (or (not x28912) (not x23049))
+:assumption (or (not x10639) x566 x21541 (not x18131) (not x28688))
+:assumption (or (not x8776) (not x6594))
+:assumption (or x18231 x24930 (not x18824) (not x5240) x25793)
+:assumption (or (not x7894) (not x31829))
+:assumption (or (not x18042) (not x10264))
+:assumption (or x4378 (not x1123))
+:assumption (or (not x16139) (not x31924))
+:assumption (or (not x6107) x24478)
+:assumption (or (not x18380) (not x21048))
+:assumption (or x17567 (not x5449))
+:assumption (or x8710 (not x26174))
+:assumption (or x28367 (not x13638))
+:assumption (or (not x10781) x20693 (not x11760))
+:assumption (or (not x19873) x4495)
+:assumption (or x22424 (not x31164))
+:assumption (or x31298 (not x30999))
+:assumption (or x19450 (not x17291))
+:assumption (or x6634 x22542 (not x27354) x19109 x20156)
+:assumption (or (not x1550) (not x5422))
+:assumption (or x2733 x26159 (not x27767) (not x28364))
+:assumption (or (not x15987) (not x21273))
+:assumption (or x14839 (not x13645))
+:assumption (or (not x12700) x29959)
+:assumption (or (not x11281) (not x5055))
+:assumption (or (not x24346) (not x3908))
+:assumption (or (not x17550) x6879 (not x19428) x1693 x18658)
+:assumption (or x16802 (not x25885) (not x24722))
+:assumption (or (not x13675) x2525 (not x20717) x18393 x13620 x28252 (not x10358) (not x15751))
+:assumption (or (not x23656) x1062)
+:assumption (or x26214 (not x31518))
+:assumption (or x19934 (not x27643))
+:assumption (or x11025 x31520)
+:assumption (or x9008 (not x26615))
+:assumption (or x16414 x3257)
+:assumption (or (not x5226) (not x1833))
+:assumption (or (not x4770) x15799)
+:assumption (or (not x10370) x16067)
+:assumption (or x11285 x28605)
+:assumption (or x24618 (not x15049))
+:assumption (or (not x25386) x14819 x30407 (not x13183))
+:assumption (or (not x21982) x18118)
+:assumption (or (not x22902) x14072)
+:assumption (or x16952 (not x16739))
+:assumption (or (not x10864) (not x22))
+:assumption (or x10756 x6123)
+:assumption (or x11281 x26195)
+:assumption (or x10178 (not x4605))
+:assumption (or x8069 x23705)
+:assumption (or x15337 (not x11363))
+:assumption (or (not x18528) x18146)
+:assumption (or x25751 x16510)
+:assumption (or (not x12656) (not x9008) (not x12502))
+:assumption (or x13956 x29175)
+:assumption (or x6672 (not x23567) x18590 x14839)
+:assumption (or (not x24655) (not x24413))
+:assumption (or x28314 x24148 x15084 x649 x1595)
+:assumption (or (not x19806) x52)
+:assumption (or (not x9594) (not x22491))
+:assumption (or (not x11621) x29501)
+:assumption (or (not x28826) (not x1151))
+:assumption (or x21086 (not x23257))
+:assumption (or x22057 x18160)
+:assumption (or x17999 (not x30966))
+:assumption (or x1393 x18454)
+:assumption (or (not x5662) (not x23222))
+:assumption (or x20769 (not x30485))
+:assumption (or (not x8457) x2334)
+:assumption (or (not x2500) (not x6147))
+:assumption (or x23059 x17116 (not x26173))
+:assumption (or (not x18454) x3319)
+:assumption (or (not x24476) x29255)
+:assumption (or x22317 x19118)
+:assumption (or x25197 (not x30167))
+:assumption (or x11771 (not x12776))
+:assumption (or (not x27998) x27349 x10943 x29900)
+:assumption (or (not x31251) (not x13344))
+:assumption (or (not x14893) (not x15562))
+:assumption (or x8002 x1963 x26147)
+:assumption (or x26134 (not x13743))
+:assumption (or x3830 (not x22588))
+:assumption (or x18623 (not x27652))
+:assumption (or x25941 (not x8973))
+:assumption (or x29606 (not x9206))
+:assumption (or x12928 (not x22920))
+:assumption (or (not x30484) x16086)
+:assumption (or (not x21826) (not x17521))
+:assumption (or (not x29824) x22381)
+:assumption (or (not x21318) (not x6283))
+:assumption (or (not x13118) (not x14897) x13917 (not x19062))
+:assumption (or x29962 (not x31522))
+:assumption (or (not x28) x13938)
+:assumption (or x17608 x15836)
+:assumption (or x165 x5160)
+:assumption (or x14360 x28541)
+:assumption (or x15134 (not x13825))
+:assumption (or (not x8028) x7752 x29796 (not x17908))
+:assumption (or (not x1307) (not x2398))
+:assumption (or x8088 (not x18598))
+:assumption (or (not x19607) (not x10689))
+:assumption (or x144 (not x10666))
+:assumption (or x25529 (not x22621))
+:assumption (or x25466 x11791 (not x218))
+:assumption (or (not x30369) (not x8799))
+:assumption (or (not x1624) x288)
+:assumption (or (not x6677) x21337)
+:assumption (or x7267 (not x22877))
+:assumption (or (not x26897) (not x4136) x19438 x30138 (not x11375) (not x28397))
+:assumption (or x28019 x4557)
+:assumption (or x957 x19483)
+:assumption (or (not x19711) (not x7899) x3730)
+:assumption (or x6262 x15423 (not x3782) (not x22121) (not x4224) x26214 (not x22057) (not x4095) (not x22187) (not x28054))
+:assumption (or x25062 (not x14687))
+:assumption (or x7164 (not x10657))
+:assumption (or x7308 x1304)
+:assumption (or (not x28564) (not x28708))
+:assumption (or (not x13434) x27141)
+:assumption (or (not x16304) x3610)
+:assumption (or x1803 x23988)
+:assumption (or x18371 (not x7518))
+:assumption (or x14294 (not x16044))
+:assumption (or (not x30174) (not x12843))
+:assumption (or x29959 (not x23805))
+:assumption (or x16935 (not x25659))
+:assumption (or x4223 (not x7573))
+:assumption (or x6787 x29312)
+:assumption (or x18724 (not x11745))
+:assumption (or x29442 (not x7979) x27068 x5028)
+:assumption (or (not x15899) (not x6508))
+:assumption (or (not x30804) (not x8951))
+:assumption (or x13692 x3085 (not x6370) x2283)
+:assumption (or x30649 (not x20810))
+:assumption (or (not x26671) x24144)
+:assumption (or (not x31340) (not x7213))
+:assumption (or x16802 x7592 (not x24827))
+:assumption (or x14000 (not x16985))
+:assumption (or (not x10067) (not x16704))
+:assumption (or x4296 (not x4906))
+:assumption (or (not x480) (not x17697) x6745)
+:assumption (or (not x21442) x9074)
+:assumption (or x3576 x6)
+:assumption (or (not x2569) x19065)
+:assumption (or x26622 (not x6133))
+:assumption (or (not x376) x14268)
+:assumption (or x3012 (not x5324))
+:assumption (or (not x20807) (not x12739))
+:assumption (or (not x31532) (not x9008))
+:assumption (or x14458 (not x15161) x3589)
+:assumption (or (not x18364) x24504)
+:assumption (or (not x13021) x9008 (not x28697))
+:assumption (or x25659 (not x27242) (not x21320))
+:assumption (or (not x26736) (not x7903))
+:assumption (or x20591 x13131)
+:assumption (or (not x2743) (not x29916))
+:assumption (or (not x7456) (not x25673))
+:assumption (or (not x2232) x4383)
+:assumption (or x30880 (not x9253))
+:assumption (or (not x25205) (not x25350) (not x6289))
+:assumption (or x30475 x27718)
+:assumption (or x22204 (not x965) (not x28438) (not x12294) x9790 (not x2145))
+:assumption (or (not x3876) x11250)
+:assumption (or (not x27031) (not x12079))
+:assumption (or x6561 (not x24861))
+:assumption (or x23954 (not x12045))
+:assumption (or (not x4912) (not x8179) (not x11493) (not x424))
+:assumption (or (not x23102) x7041)
+:assumption (or (not x3702) (not x4949))
+:assumption (or (not x24920) x25187)
+:assumption (or (not x16426) (not x6313))
+:assumption (or x1192 (not x12266))
+:assumption (or x1747 (not x1293))
+:assumption (or (not x10266) x27104)
+:assumption (or x18295 (not x304))
+:assumption (or (not x8079) x11009)
+:assumption (or x7537 (not x11305))
+:assumption (or x19234 x15055)
+:assumption (or x27116 x13437)
+:assumption (or (not x7172) (not x22860) x15395 x30352 (not x5642) (not x30972) (not x15069) x22670 x26887 (not x15134))
+:assumption (or (not x4321) (not x20975))
+:assumption (or (not x2623) (not x4641))
+:assumption (or x6149 x7193)
+:assumption (or (not x19339) (not x28752))
+:assumption (or x4387 x24406)
+:assumption (or (not x17460) (not x7732))
+:assumption (or (not x3309) x31408)
+:assumption (or (not x2199) x30751)
+:assumption (or (not x31760) (not x18507))
+:assumption (or (not x21398) (not x9008) (not x5880))
+:assumption (or x6503 (not x26973) x2718 (not x23512))
+:assumption (or (not x6197) x6422)
+:assumption (or (not x26703) x26000)
+:assumption (or (not x23244) x11924)
+:assumption (or (not x27593) x29317)
+:assumption (or x12244 x8608)
+:assumption (or x3582 (not x10963))
+:assumption (or x27838 x20379)
+:assumption (or x12336 x12027)
+:assumption (or (not x2501) x13611)
+:assumption (or x8781 x10939)
+:assumption (or (not x18424) x31928)
+:assumption (or (not x25444) x7107)
+:assumption (or x356 x1450)
+:assumption (or x9797 x20611)
+:assumption (or (not x3123) x28127)
+:assumption (or (not x25498) (not x20292))
+:assumption (or x18361 x28551)
+:assumption (or (not x14555) x21653)
+:assumption (or x6932 x12398)
+:assumption (or x15251 x30318)
+:assumption (or (not x4413) (not x8002))
+:assumption (or (not x9467) (not x22668))
+:assumption (or (not x1671) x14787)
+:assumption (or x18012 x27680 x29896 x505 x5398 x18187 (not x4715) x20813)
+:assumption (or x9518 (not x24094) (not x21537))
+:assumption (or x935 x19207)
+:assumption (or x26354 x24412)
+:assumption (or x7156 (not x25376) (not x17120))
+:assumption (or x16265 (not x26897))
+:assumption (or x6122 (not x1542))
+:assumption (or (not x26762) (not x2904))
+:assumption (or x5095 x31775 (not x918) x31829)
+:assumption (or (not x14898) (not x6006) x7925)
+:assumption (or (not x15387) x11769)
+:assumption (or x11343 x20309)
+:assumption (or x1891 x5101)
+:assumption (or (not x17840) (not x7492))
+:assumption (or x6937 (not x22592))
+:assumption (or x21999 (not x22036))
+:assumption (or (not x24722) x11649 x21878)
+:assumption (or x17372 x9407)
+:assumption (or (not x26484) x1234 x7363 x12179 (not x15795))
+:assumption (or (not x7880) x25366 x12242 (not x21894))
+:assumption (or x8853 x23504)
+:assumption (or x20697 x16912)
+:assumption (or x31379 x28328)
+:assumption (or (not x6969) (not x22003))
+:assumption (or (not x19638) (not x21084) (not x24996) (not x16344) x15117 x29364 (not x14618))
+:assumption (or x19816 x10204)
+:assumption (or (not x30864) x13845)
+:assumption (or (not x13956) (not x15676))
+:assumption (or x29337 (not x14641) (not x20402))
+:assumption (or (not x6969) (not x4409) (not x2798))
+:assumption (or (not x12363) x27526)
+:assumption (or (not x25902) (not x17362) x4059 x31641 x8979 x11193)
+:assumption (or x12689 (not x4239))
+:assumption (or x21593 (not x16374) (not x3038) x29297)
+:assumption (or (not x11361) (not x10862))
+:assumption (or x31737 x27090)
+:assumption (or (not x10361) x29445)
+:assumption (or (not x16666) (not x21709))
+:assumption (or (not x26280) (not x7135))
+:assumption (or (not x16025) (not x2669) x21614)
+:assumption (or (not x9606) x34)
+:assumption (or (not x9008) (not x17646))
+:assumption (or (not x18502) x5023)
+:assumption (or x21298 (not x29869))
+:assumption (or (not x29210) (not x16198))
+:assumption (or (not x15283) x14357 (not x20735))
+:assumption (or (not x14124) x13409)
+:assumption (or (not x9664) (not x21536))
+:assumption (or x22819 x1796 x6739)
+:assumption (or x14972 (not x5790))
+:assumption (or (not x18473) (not x11214))
+:assumption (or x25315 x19889 x16648 (not x3912))
+:assumption (or (not x18790) (not x92))
+:assumption (or (not x17985) (not x26161))
+:assumption (or (not x2157) x19824)
+:assumption (or x24701 (not x20021) (not x21026))
+:assumption (or (not x16455) (not x11976))
+:assumption (or x12200 x15827)
+:assumption (or (not x18333) x28638)
+:assumption (or (not x24155) x20361 (not x1937) (not x29335) x4858 x8760 (not x31766))
+:assumption (or x366 x4974 x30192)
+:assumption (or x22235 x12928)
+:assumption (or x480 (not x2526) x22855 (not x28068) (not x17790))
+:assumption (or (not x29966) x10752)
+:assumption (or (not x14965) (not x2133))
+:assumption (or x12118 (not x19073))
+:assumption (or (not x26614) (not x30891))
+:assumption (or (not x31769) (not x10209))
+:assumption (or x31153 (not x11697) x1178 x10386 (not x20834) x16424 x23053)
+:assumption (or (not x20173) x18372)
+:assumption (or (not x8002) (not x6083))
+:assumption (or (not x1657) x31089 x938 (not x21519) x23994 x25715)
+:assumption (or x6713 x25279)
+:assumption (or x13712 x28070 (not x10969) x19368)
+:assumption (or (not x4937) (not x25375))
+:assumption (or x15592 x28034)
+:assumption (or (not x1117) x23117)
+:assumption (or x3748 x150)
+:assumption (or x19659 x4955)
+:assumption (or (not x3266) x6115)
+:assumption (or (not x31063) (not x4646))
+:assumption (or (not x8137) (not x11976))
+:assumption (or x5633 x27029)
+:assumption (or x25861 (not x20504))
+:assumption (or (not x22239) x18836)
+:assumption (or x26091 x29098 x16632 (not x29382) (not x6377) x26740 x1283 x776)
+:assumption (or x27119 x273 x16090 (not x5028) (not x4320))
+:assumption (or (not x873) (not x4433) (not x3580))
+:assumption (or (not x2989) x16988 (not x17086))
+:assumption (or x13113 (not x14904))
+:assumption (or x7186 x1219 x23522 (not x15392) x9638 (not x19919))
+:assumption (or (not x27625) x25925)
+:assumption (or (not x5121) x29789)
+:assumption (or (not x24761) x19421 x28039)
+:assumption (or (not x3801) x30684)
+:assumption (or (not x7623) (not x12095) (not x25659))
+:assumption (or x13650 (not x23321))
+:assumption (or x18402 x5865 (not x20885) x4682 x1682 (not x1773))
+:assumption (or x17913 (not x6489))
+:assumption (or x6167 x11908)
+:assumption (or (not x4829) x9232 x10041)
+:assumption (or (not x29302) (not x14004))
+:assumption (or x21653 x13526 (not x12913))
+:assumption (or x24064 x24952)
+:assumption (or (not x26098) x17886)
+:assumption (or (not x26604) (not x19998) (not x21684) x26500 (not x4980) (not x20046) x2317 x30085)
+:assumption (or (not x18859) x29306)
+:assumption (or x1428 x28342)
+:assumption (or x23465 (not x31493))
+:assumption (or x24938 (not x11781) (not x3559) x5801 (not x18107))
+:assumption (or x2300 (not x13192))
+:assumption (or (not x25573) x15892)
+:assumption (or (not x20570) (not x19193))
+:assumption (or x21349 (not x218) x14775)
+:assumption (or (not x8368) x26311 x17008 (not x4577) (not x27651) x15528 (not x29820) (not x22211) x18811)
+:assumption (or (not x16482) (not x7732))
+:assumption (or (not x1380) (not x20782))
+:assumption (or x4279 x4847)
+:assumption (or (not x5917) x22583)
+:assumption (or x7012 x21298 x16118 (not x30988))
+:assumption (or (not x6647) x6213)
+:assumption (or x11817 x22548)
+:assumption (or (not x21942) x27473)
+:assumption (or x24756 x24168)
+:assumption (or (not x7216) x21310)
+:assumption (or x4547 (not x25659))
+:assumption (or (not x28305) (not x3994))
+:assumption (or (not x5444) x5102)
+:assumption (or x24589 x9756)
+:assumption (or x30664 (not x30432))
+:assumption (or (not x19548) x9008)
+:assumption (or x21070 (not x31887))
+:assumption (or x26481 x29394)
+:assumption (or (not x18564) x1867)
+:assumption (or x23260 x19761 x1393)
+:assumption (or (not x18551) x22981)
+:assumption (or (not x10464) x24388)
+:assumption (or x11083 (not x12111))
+:assumption (or (not x15977) x15477)
+:assumption (or x3306 (not x16671))
+:assumption (or (not x6439) x24067)
+:assumption (or (not x28181) x13606 x17786)
+:assumption (or (not x2693) (not x31782))
+:assumption (or x11090 (not x7996))
+:assumption (or (not x16773) x30846)
+:assumption (or x8002 (not x24583))
+:assumption (or x14763 x1757)
+:assumption (or (not x15711) (not x22227))
+:assumption (or (not x3001) (not x27969) x13428 (not x31459))
+:assumption (or x25434 x10292)
+:assumption (or (not x6307) x11791 (not x3233) (not x10874))
+:assumption (or x14282 x13622)
+:assumption (or x267 x21460 (not x30113) (not x17297))
+:assumption (or (not x5867) (not x21908))
+:assumption (or (not x27414) x25847 (not x19750) x22750 (not x9694))
+:assumption (or x25795 x13904)
+:assumption (or x9061 (not x14590))
+:assumption (or (not x27063) x16696)
+:assumption (or x5228 x6084)
+:assumption (or x18065 (not x31284))
+:assumption (or x16039 x29396)
+:assumption (or (not x23314) x15402)
+:assumption (or x5528 x26462)
+:assumption (or (not x9459) (not x5172))
+:assumption (or (not x21744) (not x20911))
+:assumption (or x26489 (not x16945))
+:assumption (or (not x1621) (not x3063) (not x21378))
+:assumption (or x16304 x13506)
+:assumption (or (not x6307) (not x10874) (not x25669))
+:assumption (or (not x11249) x19698 x13802 (not x16325) x18703 (not x28036))
+:assumption (or x22905 x22295)
+:assumption (or (not x2164) (not x20568))
+:assumption (or (not x5966) x11061)
+:assumption (or (not x3530) (not x3918))
+:assumption (or (not x7437) x2592)
+:assumption (or x4196 (not x7772))
+:assumption (or (not x6469) x7813)
+:assumption (or (not x16731) (not x25819))
+:assumption (or (not x11447) x28296)
+:assumption (or (not x2000) (not x28122))
+:assumption (or x29616 x17225)
+:assumption (or (not x21277) x23126)
+:assumption (or (not x5202) x17961)
+:assumption (or x2592 x12397 x2711)
+:assumption (or x967 x1598)
+:assumption (or x1010 x21633)
+:assumption (or (not x31372) x14827)
+:assumption (or (not x8757) x13956 x28364 x8002 (not x7965))
+:assumption (or (not x3795) x16251 (not x11876) (not x31484) (not x9466))
+:assumption (or x2524 x23207)
+:assumption (or (not x11154) x9531 x12528 (not x9800) x11391 (not x2806) (not x3961) (not x31339) x13576)
+:assumption (or x31837 x15105)
+:assumption (or (not x28161) (not x14546))
+:assumption (or (not x26202) x17162)
+:assumption (or (not x164) (not x8150))
+:assumption (or x14281 (not x6018))
+:assumption (or x21298 x17886)
+:assumption (or (not x22917) (not x9531))
+:assumption (or (not x16849) (not x25148))
+:assumption (or x6666 x29253)
+:assumption (or (not x10138) (not x22160))
+:assumption (or x26406 (not x21340) x28083 (not x12759))
+:assumption (or x28895 x17672)
+:assumption (or (not x26258) x24756)
+:assumption (or x7769 (not x24167))
+:assumption (or (not x22838) x23244)
+:assumption (or (not x26166) x508)
+:assumption (or (not x31282) x2744)
+:assumption (or x6594 (not x11784))
+:assumption (or x1730 (not x10518))
+:assumption (or (not x21372) x21089)
+:assumption (or x25337 x18660)
+:assumption (or (not x10144) x5945)
+:assumption (or x13048 (not x26483))
+:assumption (or x22544 x9748)
+:assumption (or x20287 (not x18233))
+:assumption (or (not x13968) (not x5753) x30962 x29257 x25610 (not x24485))
+:assumption (or x26144 (not x744))
+:assumption (or x15836 (not x2069))
+:assumption (or x13956 x10834)
+:assumption (or x20480 x13905)
+:assumption (or (not x16598) (not x18003))
+:assumption (or x31046 (not x6600))
+:assumption (or x30033 (not x15158) x18890 x10874 x4520 (not x10486))
+:assumption (or x29767 x21633)
+:assumption (or (not x29870) (not x8002))
+:assumption (or (not x16588) (not x13319))
+:assumption (or (not x1393) x20436 x13643)
+:assumption (or (not x22350) x9684)
+:assumption (or (not x28118) x28164)
+:assumption (or (not x13265) x16039)
+:assumption (or (not x21298) x3444)
+:assumption (or (not x4132) x24103)
+:assumption (or (not x5411) (not x22355))
+:assumption (or x207 (not x19203))
+:assumption (or x23432 x2739 (not x23186) x10930 x15243)
+:assumption (or x1752 x26964)
+:assumption (or (not x31352) (not x14967) x28496 (not x18266) x11968 (not x3708) (not x26023) (not x24652))
+:assumption (or (not x5223) (not x6433))
+:assumption (or x3930 (not x12581))
+:assumption (or x11175 (not x827) x28204)
+:assumption (or x25029 x10335)
+:assumption (or (not x7643) (not x27627))
+:assumption (or x20668 x15199)
+:assumption (or x21641 x28860)
+:assumption (or x2961 x16964)
+:assumption (or x26489 x20594)
+:assumption (or (not x14757) x26765)
+:assumption (or x5429 x216 x1393)
+:assumption (or x25917 (not x25918))
+:assumption (or x26897 (not x22532))
+:assumption (or (not x29231) x27314)
+:assumption (or x9329 x28814)
+:assumption (or (not x17359) (not x12497) (not x923))
+:assumption (or (not x10487) x20946)
+:assumption (or (not x5603) x480)
+:assumption (or (not x25288) x8002)
+:assumption (or (not x30547) x19111)
+:assumption (or x5528 (not x21407))
+:assumption (or x4801 x12984)
+:assumption (or (not x17073) (not x27696))
+:assumption (or (not x19494) x2574 x20632)
+:assumption (or (not x25499) x4806)
+:assumption (or (not x5510) (not x26740))
+:assumption (or x21019 (not x14200) (not x8757) x26674)
+:assumption (or (not x3806) (not x9560))
+:assumption (or (not x22163) (not x28896))
+:assumption (or (not x25584) x20679 (not x10839) x6671 x14609)
+:assumption (or x2019 (not x12463))
+:assumption (or x27687 x30)
+:assumption (or (not x31873) (not x3777))
+:assumption (or x338 (not x9607))
+:assumption (or (not x15494) (not x7571))
+:assumption (or (not x27998) x11468)
+:assumption (or (not x20713) (not x30261))
+:assumption (or x6875 x27036)
+:assumption (or x8573 (not x15275) (not x15059) (not x81))
+:assumption (or x10014 x19440)
+:assumption (or x23078 (not x23714) (not x11954) x20481)
+:assumption (or (not x18942) (not x20281))
+:assumption (or (not x15474) x10974 (not x9008))
+:assumption (or (not x8903) (not x8002))
+:assumption (or (not x16741) x2133 (not x5481) (not x6712))
+:assumption (or (not x15388) x17709)
+:assumption (or (not x27099) x26948)
+:assumption (or (not x17521) x200)
+:assumption (or x20664 (not x6307))
+:assumption (or (not x17225) x31501 (not x11076) x31005)
+:assumption (or (not x17897) x11450)
+:assumption (or (not x28463) x20232)
+:assumption (or x18334 (not x8944))
+:assumption (or (not x19907) (not x6582))
+:assumption (or (not x3467) (not x15210))
+:assumption (or (not x23967) x8349)
+:assumption (or x18949 (not x18369))
+:assumption (or (not x10962) x28451 x8002)
+:assumption (or (not x24863) (not x3546))
+:assumption (or x6827 (not x6131))
+:assumption (or x4784 x27449)
+:assumption (or (not x6024) (not x19215))
+:assumption (or x22016 (not x20143))
+:assumption (or (not x27766) x4360 x2752 (not x22002) x1837)
+:assumption (or (not x13971) (not x20248))
+:assumption (or (not x4348) x23677)
+:assumption (or (not x10319) x3264)
+:assumption (or x5271 x4898)
+:assumption (or x20282 x29657)
+:assumption (or (not x14296) x983 (not x31670) (not x3176) (not x6466) (not x24072))
+:assumption (or x1506 x5255 (not x23087) (not x10773) x7316 x3969 (not x18855) (not x18444))
+:assumption (or (not x6017) (not x1490))
+:assumption (or (not x22962) x14931)
+:assumption (or (not x31868) x29376)
+:assumption (or (not x3624) x18792)
+:assumption (or x5025 x30675)
+:assumption (or (not x31653) x17582)
+:assumption (or x6746 (not x717))
+:assumption (or x30471 x21758)
+:assumption (or (not x14935) (not x5367))
+:assumption (or (not x31839) x13674)
+:assumption (or x23244 (not x23652) x8002 (not x15785))
+:assumption (or (not x13161) (not x5238))
+:assumption (or (not x723) x21160)
+:assumption (or x9021 x30426)
+:assumption (or x31169 (not x2393))
+:assumption (or (not x14227) (not x142))
+:assumption (or (not x10869) x10309)
+:assumption (or (not x28890) x30675)
+:assumption (or x4298 x21499)
+:assumption (or x18806 x26946)
+:assumption (or (not x8871) x26989)
+:assumption (or (not x8734) (not x26327))
+:assumption (or x10530 (not x12638))
+:assumption (or (not x23340) x12458)
+:assumption (or (not x18466) (not x14658))
+:assumption (or (not x23244) x21852 x12704 x9828 x21171 (not x18602))
+:assumption (or x21815 x12963)
+:assumption (or (not x419) (not x27765))
+:assumption (or x6091 x5369)
+:assumption (or x31255 (not x12851))
+:assumption (or x9363 (not x30917))
+:assumption (or x277 (not x30124))
+:assumption (or (not x21695) x31931)
+:assumption (or x5528 (not x31618) (not x3719))
+:assumption (or x17932 (not x12070))
+:assumption (or x3946 (not x1365))
+:assumption (or (not x15982) (not x17253))
+:assumption (or (not x18565) (not x17322))
+:assumption (or (not x31360) x31465)
+:assumption (or (not x15880) (not x11653))
+:assumption (or x9544 (not x10136))
+:assumption (or x15621 (not x19454))
+:assumption (or x28297 (not x13172))
+:assumption (or x16684 x22057)
+:assumption (or x20814 x26842)
+:assumption (or x24452 (not x29841))
+:assumption (or x26583 (not x31140))
+:assumption (or x14840 (not x5528))
+:assumption (or (not x18182) x18577 x27082)
+:assumption (or (not x28698) x24465)
+:assumption (or (not x11358) x7755)
+:assumption (or (not x7941) x4021)
+:assumption (or (not x26432) x13537)
+:assumption (or (not x17451) x22855)
+:assumption (or (not x19656) (not x22767))
+:assumption (or (not x20064) (not x23234))
+:assumption (or x6635 x31387)
+:assumption (or (not x6992) (not x3732))
+:assumption (or x3602 x9820 x20983 (not x15576) x205 x28687 (not x186) x16897 (not x6325))
+:assumption (or (not x305) (not x2304))
+:assumption (or (not x11969) (not x11720))
+:assumption (or x23038 x15241)
+:assumption (or (not x31098) x20689)
+:assumption (or (not x16129) (not x17804))
+:assumption (or (not x24328) (not x20260) x18733)
+:assumption (or (not x6083) (not x23244))
+:assumption (or x19786 (not x18175))
+:assumption (or x3767 x16003)
+:assumption (or (not x28308) x2172)
+:assumption (or (not x21537) (not x8580))
+:assumption (or (not x29324) x3621)
+:assumption (or (not x14131) (not x17840))
+:assumption (or x21004 x14040)
+:assumption (or x1972 (not x11913))
+:assumption (or (not x30332) x23534)
+:assumption (or (not x26244) x30846)
+:assumption (or (not x16960) (not x30674))
+:assumption (or (not x15917) x23588)
+:assumption (or x16169 (not x19371))
+:assumption (or x7823 (not x23889))
+:assumption (or (not x5342) (not x8260))
+:assumption (or x3500 x26142)
+:assumption (or (not x14241) x29970)
+:assumption (or x19732 x15706)
+:assumption (or x5725 x5000)
+:assumption (or x13330 x7963)
+:assumption (or (not x26425) x28407)
+:assumption (or (not x28305) x11401)
+:assumption (or x3929 x10753)
+:assumption (or (not x11488) x20822)
+:assumption (or (not x30669) (not x18161) (not x9948) x14817 x16304)
+:assumption (or x5797 x1438)
+:assumption (or (not x511) (not x25606) x19183 (not x14327))
+:assumption (or x29480 (not x24722))
+:assumption (or x25703 (not x6647))
+:assumption (or x7142 x13956)
+:assumption (or x8251 x19181)
+:assumption (or x19769 (not x3311))
+:assumption (or x6735 x31042)
+:assumption (or (not x19318) (not x24571))
+:assumption (or x18305 (not x3085))
+:assumption (or x28068 x4979 (not x11926) (not x20797) (not x15372) x14800 x31816 (not x7509) x534)
+:assumption (or (not x21139) x10215 x24873 x22840 (not x30101) (not x14505) (not x3838) x10124 x25204)
+:assumption (or x23903 x5575)
+:assumption (or x21214 x3565)
+:assumption (or x1593 (not x25501))
+:assumption (or (not x25965) (not x15951))
+:assumption (or (not x31778) x17695)
+:assumption (or x22723 (not x4422) x7723)
+:assumption (or (not x7863) x22722)
+:assumption (or x12801 (not x4939))
+:assumption (or x13044 (not x9466))
+:assumption (or x14591 (not x4046))
+:assumption (or (not x28116) (not x6164) x973 (not x26191) (not x13905) (not x2543))
+:assumption (or x3416 (not x6284) (not x10708))
+:assumption (or (not x29988) (not x25334))
+:assumption (or (not x602) x11152)
+:assumption (or (not x2184) (not x29359))
+:assumption (or x10752 (not x29917))
+:assumption (or x5131 (not x14721))
+:assumption (or (not x23407) x1270)
+:assumption (or x7285 x9701)
+:assumption (or x25586 (not x30718))
+:assumption (or x23239 (not x208))
+:assumption (or x827 (not x266))
+:assumption (or (not x26343) (not x14885))
+:assumption (or (not x9008) x24292)
+:assumption (or (not x28969) (not x21760))
+:assumption (or (not x8229) x18509)
+:assumption (or (not x19254) x28290)
+:assumption (or x23346 x4378)
+:assumption (or x26481 x10723)
+:assumption (or x26167 (not x1547))
+:assumption (or (not x8863) (not x7677) x15399 x27202 x29489 (not x11412))
+:assumption (or (not x507) x7294)
+:assumption (or (not x20773) x11266 x6130 (not x18956) (not x797))
+:assumption (or x28871 x31283)
+:assumption (or x5347 x8038)
+:assumption (or (not x5545) (not x27036) x2074)
+:assumption (or x7596 x11592 (not x7393) x12135)
+:assumption (or x30113 (not x25632))
+:assumption (or x22553 (not x29442) x29535 (not x3782))
+:assumption (or x3078 (not x26837))
+:assumption (or (not x17855) (not x2424))
+:assumption (or (not x10382) (not x11529))
+:assumption (or (not x9912) (not x31581))
+:assumption (or (not x10064) (not x12249) (not x15917) (not x24079))
+:assumption (or x18180 x2125)
+:assumption (or x5801 (not x17590))
+:assumption (or x24778 x15439 x827)
+:assumption (or x12441 x11857)
+:assumption (or (not x12859) (not x19968) x16048 x4643 x16304 (not x22974) x2472 (not x11093))
+:assumption (or (not x486) (not x8195))
+:assumption (or (not x4334) (not x576))
+:assumption (or (not x24151) x10874)
+:assumption (or x5777 (not x12176))
+:assumption (or (not x23936) (not x27297))
+:assumption (or x6956 x17995 x21357 (not x7866) (not x964))
+:assumption (or (not x8197) x793)
+:assumption (or x6418 (not x19554))
+:assumption (or (not x18333) (not x20745))
+:assumption (or x14649 x11923)
+:assumption (or (not x23071) x15160)
+:assumption (or x31550 x6783)
+:assumption (or x9523 x16510)
+:assumption (or x17011 x7069)
+:assumption (or x10563 x30787)
+:assumption (or (not x25793) x11)
+:assumption (or x29530 x7229)
+:assumption (or (not x27596) x6426)
+:assumption (or x23668 (not x3746))
+:assumption (or (not x17264) (not x22399))
+:assumption (or x10490 x18171)
+:assumption (or (not x26) (not x1886))
+:assumption (or x25894 (not x4702))
+:assumption (or x3365 (not x7604) (not x25224) (not x6528) (not x22719))
+:assumption (or x22140 (not x16994))
+:assumption (or x18418 x4492)
+:assumption (or (not x25331) x2894)
+:assumption (or x14718 (not x19818))
+:assumption (or (not x22307) (not x17855))
+:assumption (or x11207 x25151)
+:assumption (or x12041 (not x25676))
+:assumption (or (not x11261) x15725 (not x21298))
+:assumption (or x20800 x16120)
+:assumption (or (not x15195) x22997)
+:assumption (or x11 (not x17563))
+:assumption (or (not x13420) x11343)
+:assumption (or (not x757) x24722)
+:assumption (or x10098 x19028)
+:assumption (or (not x8794) (not x7661))
+:assumption (or x8037 (not x9266))
+:assumption (or (not x17793) (not x5894))
+:assumption (or (not x23002) (not x12333) (not x23586) (not x25358) x20209)
+:assumption (or x26183 x21178 (not x21298) (not x12500))
+:assumption (or x1257 x11506 x13036)
+:assumption (or x29372 (not x12233))
+:assumption (or x14839 x10089 x5864)
+:assumption (or x14920 x9736)
+:assumption (or x4960 x17156)
+:assumption (or (not x23113) x11022)
+:assumption (or x809 (not x11009) (not x2316) x29834 x7762 x29218)
+:assumption (or x7133 x9657)
+:assumption (or (not x4114) (not x14839))
+:assumption (or (not x26786) x26638)
+:assumption (or x12321 (not x19827))
+:assumption (or x20949 (not x8448) (not x18251))
+:assumption (or (not x22324) (not x28292))
+:assumption (or x12353 x13405)
+:assumption (or (not x4480) x9872)
+:assumption (or x23464 x27224 (not x19644) x27512)
+:assumption (or x27418 x10940)
+:assumption (or x30633 (not x9739) (not x20789))
+:assumption (or x18677 x16674)
+:assumption (or (not x19386) x28050)
+:assumption (or (not x15500) (not x6223))
+:assumption (or (not x18339) x9399 x24722)
+:assumption (or (not x681) x17244 x6340)
+:assumption (or x19973 x10896)
+:assumption (or (not x31622) x10459)
+:assumption (or x29903 x23879)
+:assumption (or x16145 x13816)
+:assumption (or (not x8589) (not x29660))
+:assumption (or (not x30607) (not x8331))
+:assumption (or x3536 (not x3424))
+:assumption (or (not x9022) x17359)
+:assumption (or x25423 x19325)
+:assumption (or (not x16486) (not x21858))
+:assumption (or (not x10769) (not x4422))
+:assumption (or x7397 (not x28342))
+:assumption (or x9566 x30251)
+:assumption (or x14737 x1621)
+:assumption (or x28469 (not x15094) x21970 x13466)
+:assumption (or (not x9176) x7404)
+:assumption (or x12132 x29649)
+:assumption (or (not x19199) (not x30956))
+:assumption (or x16561 (not x28701))
+:assumption (or (not x907) x30320)
+:assumption (or (not x3773) x24756)
+:assumption (or (not x28299) x10376)
+:assumption (or (not x21229) x26804)
+:assumption (or (not x17444) (not x30975))
+:assumption (or (not x2541) (not x25512))
+:assumption (or x15576 x16675)
+:assumption (or x16025 x25613 (not x653))
+:assumption (or (not x26919) (not x6243))
+:assumption (or (not x3407) x1934)
+:assumption (or (not x13790) x11643)
+:assumption (or x4687 (not x13256) (not x805) x12034)
+:assumption (or x16802 x18154)
+:assumption (or (not x20653) (not x28973) (not x17588))
+:assumption (or (not x2395) x23488)
+:assumption (or (not x17991) x20984)
+:assumption (or x9942 (not x4228))
+:assumption (or (not x20023) (not x6415) x1709 (not x16004) x5523 x1692 x6457 (not x12887))
+:assumption (or x27890 x18581)
+:assumption (or (not x17464) (not x25870))
+:assumption (or x10959 (not x27307))
+:assumption (or (not x25577) (not x20947))
+:assumption (or x9307 x3859)
+:assumption (or (not x28048) (not x136))
+:assumption (or (not x15713) (not x16993))
+:assumption (or x11545 (not x14371) (not x20201) x18042)
+:assumption (or (not x7398) (not x9867))
+:assumption (or (not x5698) (not x25163))
+:assumption (or x16459 (not x4888))
+:assumption (or x8951 x30738)
+:assumption (or (not x12174) x3344 x1393)
+:assumption (or (not x17302) x22683 x24532)
+:assumption (or (not x30561) x18107)
+:assumption (or (not x8002) (not x17050))
+:assumption (or (not x18859) x25202 x12288)
+:assumption (or (not x22679) (not x6434))
+:assumption (or (not x6236) (not x13647))
+:assumption (or x26897 (not x27999) x30138 (not x18926))
+:assumption (or (not x3404) (not x12531))
+:assumption (or x27999 x18926)
+:assumption (or x27766 x16334)
+:assumption (or x1779 (not x19209))
+:assumption (or (not x3150) x7547)
+:assumption (or x18672 x5354)
+:assumption (or x1939 x23907)
+:assumption (or (not x5025) x13315 x26558)
+:assumption (or (not x19384) (not x30208) (not x4055))
+:assumption (or x14388 (not x18082))
+:assumption (or x30835 (not x7757))
+:assumption (or x2278 (not x25078))
+:assumption (or x26039 (not x16784))
+:assumption (or (not x19581) x13691)
+:assumption (or x13556 (not x10334))
+:assumption (or (not x24425) (not x16153))
+:assumption (or (not x13149) (not x30367))
+:assumption (or (not x10997) (not x7665))
+:assumption (or x3552 (not x8002))
+:assumption (or x3717 (not x1157))
+:assumption (or x24318 (not x28328))
+:assumption (or (not x9810) (not x2831) (not x25659))
+:assumption (or (not x10792) (not x27099))
+:assumption (or (not x27776) (not x18369))
+:assumption (or x10753 x17157)
+:assumption (or x1573 x29888)
+:assumption (or (not x3473) (not x17837))
+:assumption (or (not x17414) x10545)
+:assumption (or x27548 (not x31863) x21831)
+:assumption (or (not x29323) (not x19864))
+:assumption (or (not x30074) x3880)
+:assumption (or x23265 x480)
+:assumption (or x9008 x7136)
+:assumption (or x18186 (not x23146))
+:assumption (or x14271 x9764)
+:assumption (or (not x19910) x11536)
+:assumption (or x7194 (not x7359))
+:assumption (or (not x30706) (not x4498))
+:assumption (or x2595 (not x18933))
+:assumption (or x31368 (not x5831) (not x281))
+:assumption (or (not x16099) (not x3715))
+:assumption (or x25741 (not x17070))
+:assumption (or x19601 (not x7760))
+:assumption (or x7583 (not x19742))
+:assumption (or x6543 x9277)
+:assumption (or (not x23244) x31123)
+:assumption (or x4676 x22007)
+:assumption (or (not x8961) (not x15235))
+:assumption (or x13019 x29649)
+:assumption (or (not x14725) (not x12352))
+:assumption (or x13903 x10681)
+:assumption (or x12278 (not x8767))
+:assumption (or x4876 (not x23227))
+:assumption (or (not x14267) (not x16819))
+:assumption (or (not x5235) x25017)
+:assumption (or x19317 (not x25834))
+:assumption (or x31706 (not x23914))
+:assumption (or (not x23388) x6496 x27204 x6374 (not x25570) (not x22704) (not x640) x14853 x23569 x964 (not x23293))
+:assumption (or x4401 (not x24470))
+:assumption (or x6857 (not x4128))
+:assumption (or (not x10446) x11380)
+:assumption (or (not x24234) (not x4817))
+:assumption (or (not x10694) (not x20231))
+:assumption (or x22366 x158)
+:assumption (or x6696 (not x19553))
+:assumption (or (not x16580) x9209)
+:assumption (or x15974 x17908)
+:assumption (or x5986 (not x25659))
+:assumption (or (not x5597) (not x7058))
+:assumption (or x5206 (not x31610))
+:assumption (or (not x1090) (not x7289))
+:assumption (or x11356 (not x14856))
+:assumption (or (not x2733) (not x4239))
+:assumption (or (not x16510) x15887 (not x11281) (not x16778) (not x21815))
+:assumption (or (not x19587) (not x24369))
+:assumption (or (not x25802) x29136)
+:assumption (or (not x16657) x12574)
+:assumption (or x11890 x20885)
+:assumption (or x15400 x11629)
+:assumption (or x10176 x17579)
+:assumption (or (not x18047) x27564 x15382 (not x28721) x15906 (not x2128))
+:assumption (or x4323 x5348)
+:assumption (or (not x13956) (not x17050))
+:assumption (or (not x18983) x20845)
+:assumption (or (not x6305) (not x30858))
+:assumption (or (not x22663) (not x7515) (not x19428))
+:assumption (or x30672 x11143)
+:assumption (or (not x18203) x27223)
+:assumption (or (not x9402) x27306)
+:assumption (or (not x23532) x11750)
+:assumption (or x29897 (not x14057))
+:assumption (or (not x4325) (not x6151))
+:assumption (or x9423 (not x12459))
+:assumption (or (not x17274) x26487)
+:assumption (or x8586 (not x7480))
+:assumption (or x9189 (not x29312) x21659)
+:assumption (or (not x29012) (not x12449))
+:assumption (or x21403 (not x30618))
+:assumption (or (not x24320) (not x22727))
+:assumption (or (not x8555) (not x7181))
+:assumption (or (not x9603) x20390)
+:assumption (or x31217 (not x13376))
+:assumption (or (not x5273) x13956)
+:assumption (or (not x21298) (not x11575))
+:assumption (or (not x22123) (not x22306))
+:assumption (or (not x19359) (not x6074))
+:assumption (or (not x26067) x27132 (not x25401) x5074 x17289 x301 x26999)
+:assumption (or x24342 (not x9946))
+:assumption (or (not x22727) x3152)
+:assumption (or x13311 x23861)
+:assumption (or x21423 x28912)
+:assumption (or (not x18944) x5710)
+:assumption (or (not x31143) (not x16143))
+:assumption (or x18848 (not x24722))
+:assumption (or (not x23010) x13840)
+:assumption (or x280 (not x14473))
+:assumption (or x4097 (not x2530))
+:assumption (or x24585 x13128 x9008)
+:assumption (or (not x31431) (not x30440))
+:assumption (or (not x17609) x31116 x3579 x14449 (not x30846) x13871)
+:assumption (or x11696 (not x28269))
+:assumption (or x10091 x19545)
+:assumption (or (not x21503) (not x9008))
+:assumption (or (not x19397) (not x9563))
+:assumption (or (not x7537) x11305 x23244)
+:assumption (or x6880 x31465)
+:assumption (or (not x9497) x7491)
+:assumption (or x29281 x15621 x31290)
+:assumption (or x7048 x12055)
+:assumption (or x18041 (not x31483) x8319 x8464 (not x9670) x17224 (not x1638) (not x4353) x2654)
+:assumption (or x14556 x27060)
+:assumption (or (not x5902) x1369)
+:assumption (or (not x28512) (not x29112))
+:assumption (or x1212 x6363)
+:assumption (or (not x16487) x25590)
+:assumption (or x19681 x3495)
+:assumption (or x26892 (not x29835))
+:assumption (or (not x19179) x22512)
+:assumption (or (not x22035) (not x16936))
+:assumption (or x23194 x14315)
+:assumption (or (not x13767) x29683)
+:assumption (or (not x27202) x7677)
+:assumption (or x2760 (not x1582))
+:assumption (or (not x26309) (not x2461))
+:assumption (or x25280 (not x9661))
+:assumption (or x16103 x10530)
+:assumption (or (not x30352) x4116)
+:assumption (or (not x22294) x16787)
+:assumption (or (not x14994) (not x5992))
+:assumption (or x26672 (not x14219))
+:assumption (or (not x6496) (not x27734))
+:assumption (or (not x29318) x26188)
+:assumption (or (not x11038) x2543)
+:assumption (or x5922 (not x20633))
+:assumption (or x618 x26911)
+:assumption (or x14175 (not x21306))
+:assumption (or (not x24995) (not x9943))
+:assumption (or (not x7852) (not x22581))
+:assumption (or x21690 (not x25074))
+:assumption (or x2701 (not x14163))
+:assumption (or (not x4889) x353)
+:assumption (or x9288 (not x21625))
+:assumption (or x16130 x29016)
+:assumption (or (not x19899) x3782)
+:assumption (or x13160 x20440)
+:assumption (or (not x16498) (not x6154))
+:assumption (or x5851 (not x7888))
+:assumption (or x14839 x6802)
+:assumption (or x23987 (not x805))
+:assumption (or (not x17483) x20685)
+:assumption (or (not x16668) x16743)
+:assumption (or (not x14257) x21432)
+:assumption (or (not x16780) (not x8002))
+:assumption (or (not x6450) x2360)
+:assumption (or x20997 x11655)
+:assumption (or (not x15921) x28181 x11976 x27602 x16455)
+:assumption (or (not x3297) (not x1677))
+:assumption (or x8209 (not x18900))
+:assumption (or (not x26995) x27897)
+:assumption (or (not x6969) (not x12281))
+:assumption (or (not x8890) (not x17877) x8532)
+:assumption (or (not x13956) x4598)
+:assumption (or x889 (not x11545))
+:assumption (or (not x7637) x29195)
+:assumption (or (not x22442) x4812)
+:assumption (or (not x17060) (not x25283))
+:assumption (or x25398 (not x18859))
+:assumption (or (not x18694) x12884)
+:assumption (or x499 (not x7556))
+:assumption (or x21196 x12260)
+:assumption (or x491 (not x26620))
+:assumption (or x5575 x9492)
+:assumption (or x654 (not x2459))
+:assumption (or x11786 (not x16584))
+:assumption (or (not x18040) x2976)
+:assumption (or (not x14479) x19307)
+:assumption (or (not x21006) (not x5540) x24460 x4372 x24341)
+:assumption (or x413 x14303)
+:assumption (or x9584 x5562)
+:assumption (or (not x12246) x29780)
+:assumption (or x13281 x31134)
+:assumption (or (not x26892) x25187)
+:assumption (or (not x1393) (not x24370))
+:assumption (or (not x2526) x3201 (not x7154))
+:assumption (or x291 x30187)
+:assumption (or (not x19625) (not x601))
+:assumption (or (not x27205) (not x15872))
+:assumption (or x5501 (not x28960))
+:assumption (or (not x8532) x2763 (not x1477) x8060)
+:assumption (or x8724 x30820)
+:assumption (or x13956 (not x30263))
+:assumption (or (not x26734) x3344)
+:assumption (or x6525 (not x21893))
+:assumption (or (not x21580) x18371)
+:assumption (or (not x29753) (not x19102))
+:assumption (or (not x19467) (not x5156))
+:assumption (or x31765 (not x29389))
+:assumption (or x23077 (not x14576))
+:assumption (or x21790 x15541)
+:assumption (or (not x7156) (not x9062))
+:assumption (or (not x14514) (not x30365))
+:assumption (or x12318 (not x27358))
+:assumption (or (not x9471) x22742)
+:assumption (or x19287 x25704 x14568 (not x2269) x4195)
+:assumption (or (not x28640) x25442)
+:assumption (or x962 x8912)
+:assumption (or x24749 x21298 (not x13937) (not x1042))
+:assumption (or (not x25334) (not x16480))
+:assumption (or (not x10304) (not x28250))
+:assumption (or (not x24744) x3139)
+:assumption (or x25197 (not x27554))
+:assumption (or x11330 (not x10475))
+:assumption (or x27273 x20440)
+:assumption (or (not x23603) (not x14839))
+:assumption (or (not x16025) x2936)
+:assumption (or (not x9554) (not x26388))
+:assumption (or (not x3549) (not x10391))
+:assumption (or (not x5249) x12024 x9961 x8002 x23244 x13956)
+:assumption (or (not x17308) (not x8926) x21656 x8529 x31097 x29665 (not x8226))
+:assumption (or x18922 x29287)
+:assumption (or x26670 x16739 x964 (not x16952))
+:assumption (or (not x750) (not x30992))
+:assumption (or (not x7305) x31677)
+:assumption (or x3098 x9888)
+:assumption (or x5367 (not x9239) x2974)
+:assumption (or x15054 (not x27789))
+:assumption (or (not x5907) x17553)
+:assumption (or x14195 x6149)
+:assumption (or x6270 (not x25947))
+:assumption (or (not x3507) (not x30655))
+:assumption (or (not x9441) (not x18547))
+:assumption (or x4613 x26621)
+:assumption (or x25148 x19964)
+:assumption (or (not x18859) x10451 (not x31012))
+:assumption (or (not x10929) (not x18263))
+:assumption (or (not x28537) (not x8029) (not x26639))
+:assumption (or (not x30796) x13519)
+:assumption (or (not x5074) (not x29151))
+:assumption (or x28160 (not x14455))
+:assumption (or (not x15832) x8794)
+:assumption (or x8845 (not x30724))
+:assumption (or x15253 (not x7537))
+:assumption (or x17234 (not x14694) (not x2498))
+:assumption (or (not x30447) (not x13609))
+:assumption (or (not x1029) x11873)
+:assumption (or x3365 x16414)
+:assumption (or (not x27316) x11225)
+:assumption (or x387 (not x5562))
+:assumption (or (not x17204) (not x9089))
+:assumption (or x5528 (not x23573))
+:assumption (or x15637 (not x18070) x17351)
+:assumption (or (not x30360) x9112)
+:assumption (or x18699 (not x26719))
+:assumption (or (not x4039) (not x6414))
+:assumption (or x23810 (not x25282) (not x6880) x20112 (not x31465))
+:assumption (or (not x1740) x21022)
+:assumption (or x3215 x26897 x14364)
+:assumption (or x30774 (not x17373))
+:assumption (or (not x11116) (not x672))
+:assumption (or x20170 x14719 x14839 (not x25344))
+:assumption (or x8387 (not x9906))
+:assumption (or (not x25501) x16313)
+:assumption (or x2464 (not x29048))
+:assumption (or (not x8229) x790)
+:assumption (or x202 x17195)
+:assumption (or x6132 x16698)
+:assumption (or x29057 (not x14334))
+:assumption (or (not x24148) x19974 (not x23944))
+:assumption (or x27474 x11683 (not x24809) (not x12907))
+:assumption (or (not x23272) x19734)
+:assumption (or x17837 x15549)
+:assumption (or (not x7030) (not x21344))
+:assumption (or (not x14253) (not x27537))
+:assumption (or x20908 x8002)
+:assumption (or (not x29183) x26450 (not x3116) x4401 (not x11528) x22966 (not x6706) (not x25809))
+:assumption (or (not x13611) (not x14340) (not x14445) x19339 x28273)
+:assumption (or (not x22657) x22841)
+:assumption (or x29245 x5463)
+:assumption (or x14121 (not x13217))
+:assumption (or x13325 x24242)
+:assumption (or x16786 x19050)
+:assumption (or (not x26985) x17133)
+:assumption (or x4802 x7650)
+:assumption (or (not x10549) x23829)
+:assumption (or x9442 (not x8369) x18694)
+:assumption (or x13759 x17500)
+:assumption (or (not x30683) x5230)
+:assumption (or (not x14939) (not x31792))
+:assumption (or (not x21855) (not x26723))
+:assumption (or (not x23244) x8761)
+:assumption (or (not x29282) x17716)
+:assumption (or x2344 x16465 x31925)
+:assumption (or x30036 (not x18519))
+:assumption (or x15346 x17370)
+:assumption (or (not x29680) (not x25659))
+:assumption (or x20413 x25008)
+:assumption (or (not x10910) (not x8244))
+:assumption (or (not x17908) (not x19935))
+:assumption (or x22189 (not x17048) x18868 x18203 (not x27223) x11548 x3186 x25623 x8281)
+:assumption (or x16207 (not x18125))
+:assumption (or (not x15308) (not x29272))
+:assumption (or x24450 x26274)
+:assumption (or (not x3106) (not x21280))
+:assumption (or x1393 (not x21231))
+:assumption (or x25362 (not x5882))
+:assumption (or (not x2070) (not x15034))
+:assumption (or (not x23283) (not x21261))
+:assumption (or (not x5818) x19891)
+:assumption (or x6155 (not x21815) x30787 (not x26885) (not x16802) (not x142) (not x16510))
+:assumption (or x30991 x16426)
+:assumption (or (not x4187) (not x30229))
+:assumption (or x19861 (not x25715))
+:assumption (or x17353 x30124)
+:assumption (or x53 x27837)
+:assumption (or (not x13384) x28006)
+:assumption (or (not x21443) (not x22328))
+:assumption (or (not x288) x1624 (not x18872) (not x25366))
+:assumption (or (not x4250) (not x762) x27164)
+:assumption (or (not x22766) (not x28359) (not x11794))
+:assumption (or (not x13511) (not x1173))
+:assumption (or (not x997) x9398)
+:assumption (or x25797 x19510)
+:assumption (or x2168 (not x17201))
+:assumption (or (not x19265) x17913)
+:assumption (or (not x12217) x18677)
+:assumption (or (not x2250) (not x10637))
+:assumption (or x16263 (not x13175) (not x22162))
+:assumption (or x25049 x21815)
+:assumption (or (not x12907) x14435 x19837 (not x16003))
+:assumption (or (not x24743) (not x19901))
+:assumption (or x16433 x12952 x6969)
+:assumption (or x8284 x10877)
+:assumption (or x20004 x6871)
+:assumption (or x30678 x23005)
+:assumption (or (not x24441) x9291)
+:assumption (or (not x2697) (not x23851) (not x5367) (not x27011))
+:assumption (or x433 x12644)
+:assumption (or x24620 x21298)
+:assumption (or (not x19552) (not x22132))
+:assumption (or x30225 (not x28884))
+:assumption (or x31259 (not x4021))
+:assumption (or (not x24485) (not x5753) x25610 (not x13968) x23435 (not x15408))
+:assumption (or x8410 (not x31481))
+:assumption (or (not x22548) (not x23163) x21958)
+:assumption (or (not x16593) x5137)
+:assumption (or x30669 (not x1975))
+:assumption (or (not x8002) x10499)
+:assumption (or (not x28584) x29571)
+:assumption (or x15895 x12045 x20949 (not x26141))
+:assumption (or x17102 x10510)
+:assumption (or (not x22171) x22544)
+:assumption (or (not x6106) (not x29670) (not x4959))
+:assumption (or x25214 x26852)
+:assumption (or x27396 (not x7247))
+:assumption (or (not x30102) x15596)
+:assumption (or (not x8722) (not x6440))
+:assumption (or x25378 x30888)
+:assumption (or (not x24471) x5130 x5195 x813)
+:assumption (or x9008 (not x3040) (not x18471))
+:assumption (or (not x23878) (not x30751) (not x17855) x18144)
+:assumption (or (not x3474) x12292)
+:assumption (or (not x10055) (not x28683))
+:assumption (or (not x23415) x9445)
+:assumption (or x11126 (not x17504))
+:assumption (or x20060 x20244)
+:assumption (or x28754 x18169)
+:assumption (or x24228 (not x14909) x10097 x15551)
+:assumption (or (not x7698) (not x20081))
+:assumption (or x22532 x3215 (not x26897))
+:assumption (or x25568 (not x11096))
+:assumption (or (not x964) x16606)
+:assumption (or (not x16583) (not x13576) x17446 (not x3409) (not x6951))
+:assumption (or (not x19049) x22458)
+:assumption (or (not x28973) x16117 (not x1582) x23209)
+:assumption (or (not x3301) x8391)
+:assumption (or (not x10542) x6754 (not x23539) (not x13253) x26976 x19244)
+:assumption (or (not x11851) (not x8955) (not x9014))
+:assumption (or x24685 (not x18501) x23244)
+:assumption (or x702 x12888)
+:assumption (or x27527 (not x24954))
+:assumption (or x29737 x20367)
+:assumption (or (not x19730) x4178)
+:assumption (or x28809 (not x23269))
+:assumption (or (not x31616) x24134)
+:assumption (or (not x16025) (not x28243))
+:assumption (or x16866 (not x11986))
+:assumption (or (not x9008) (not x13887))
+:assumption (or (not x26663) x17007)
+:assumption (or x10689 x19607)
+:assumption (or x3238 (not x20227))
+:assumption (or (not x16897) x186)
+:assumption (or x16025 x18069 (not x1218))
+:assumption (or (not x13825) (not x30352))
+:assumption (or x19868 (not x20670))
+:assumption (or x14506 x28153)
+:assumption (or x9670 (not x18041))
+:assumption (or (not x30124) x22563)
+:assumption (or x13820 x31076 x13092)
+:assumption (or (not x27599) (not x17039))
+:assumption (or x1498 (not x14970))
+:assumption (or (not x24722) (not x5598))
+:assumption (or (not x22717) (not x202))
+:assumption (or x1630 x22472)
+:assumption (or x13680 x16312)
+:assumption (or (not x26432) x22746)
+:assumption (or (not x27200) (not x8011))
+:assumption (or (not x9075) x31539)
+:assumption (or x17953 x24971)
+:assumption (or (not x7859) (not x31132))
+:assumption (or x5240 (not x10909) x28151 (not x13822))
+:assumption (or (not x19883) (not x3180))
+:assumption (or (not x14839) x28107)
+:assumption (or (not x30105) (not x29698))
+:assumption (or x14435 x29084 x7901)
+:assumption (or (not x3561) (not x4285))
+:assumption (or x4873 (not x21038))
+:assumption (or x31441 x12064)
+:assumption (or (not x2503) x16528)
+:assumption (or x12789 x21036)
+:assumption (or x8677 (not x14197))
+:assumption (or x15020 (not x23273))
+:assumption (or (not x9) x6347)
+:assumption (or (not x20899) (not x1189))
+:assumption (or (not x1059) x16025 (not x24107))
+:assumption (or x10338 x22933)
+:assumption (or (not x14951) (not x9745) (not x6001) x16783 x9132)
+:assumption (or (not x13491) x3494)
+:assumption (or (not x18084) x31309)
+:assumption (or x28886 (not x6007))
+:assumption (or (not x30266) x19327)
+:assumption (or x24753 (not x22767))
+:assumption (or (not x13867) x7012 (not x30453) x18125 x15606 x9786)
+:assumption (or (not x23244) (not x18163))
+:assumption (or (not x29673) x4606)
+:assumption (or (not x14343) (not x11857))
+:assumption (or (not x25224) (not x20075))
+:assumption (or x7383 x24050)
+:assumption (or (not x560) x19214)
+:assumption (or (not x29340) (not x6842))
+:assumption (or (not x14321) x5480)
+:assumption (or (not x31593) (not x6512))
+:assumption (or x12578 (not x10985))
+:assumption (or x7638 (not x27921))
+:assumption (or x19922 x29778)
+:assumption (or x22894 (not x30700))
+:assumption (or (not x25674) (not x10503) x26090)
+:assumption (or (not x9542) x26112)
+:assumption (or (not x16720) (not x25355))
+:assumption (or (not x17499) x4905)
+:assumption (or (not x23072) x1909)
+:assumption (or (not x20211) x10852)
+:assumption (or x21172 x24756 x26403)
+:assumption (or x6852 x7339)
+:assumption (or x13576 x31034)
+:assumption (or (not x9380) (not x28780) (not x16482) (not x24913) (not x18720) x29644)
+:assumption (or x28773 x1492)
+:assumption (or (not x29851) (not x9802))
+:assumption (or x6761 (not x14647))
+:assumption (or (not x12029) x27442)
+:assumption (or x15016 x15036 x678)
+:assumption (or (not x7449) (not x16318))
+:assumption (or (not x13494) x15634)
+:assumption (or (not x24918) (not x27385))
+:assumption (or x16797 (not x21906) x18709 (not x29829))
+:assumption (or x27184 (not x5284))
+:assumption (or x163 (not x8757) x30113)
+:assumption (or (not x21992) x27251)
+:assumption (or x31395 x9820 x31696)
+:assumption (or (not x675) x4295)
+:assumption (or x4658 x6456)
+:assumption (or x14381 x18814)
+:assumption (or (not x18084) x13880)
+:assumption (or (not x31296) (not x28475))
+:assumption (or x17359 (not x21514))
+:assumption (or (not x22190) (not x8989))
+:assumption (or (not x13411) x897)
+:assumption (or (not x1778) (not x29971))
+:assumption (or (not x9596) x23973)
+:assumption (or (not x24275) (not x8011))
+:assumption (or x13 x28555)
+:assumption (or (not x13066) (not x12569))
+:assumption (or (not x762) (not x463))
+:assumption (or x13116 (not x8002))
+:assumption (or x27399 x15077)
+:assumption (or (not x28336) (not x8719))
+:assumption (or (not x21298) (not x9720) (not x15016))
+:assumption (or x8002 (not x31329) x25008 (not x18500) x23244 x13956)
+:assumption (or (not x11281) x9537)
+:assumption (or x1894 (not x14665))
+:assumption (or x28914 x25411)
+:assumption (or x12153 (not x17620))
+:assumption (or x3494 x8977)
+:assumption (or x1063 (not x1563) (not x6885))
+:assumption (or (not x18809) (not x264) x26495 x14658 x22664)
+:assumption (or (not x76) x6032)
+:assumption (or (not x17434) x28556)
+:assumption (or (not x19646) x21511)
+:assumption (or (not x5932) (not x26972))
+:assumption (or (not x7412) x9120)
+:assumption (or x8002 (not x27137) (not x17901) x9779)
+:assumption (or (not x9531) (not x24348))
+:assumption (or x5938 x4763)
+:assumption (or x15699 x14744)
+:assumption (or (not x27001) x23399)
+:assumption (or x6287 (not x23189))
+:assumption (or (not x31421) x14407)
+:assumption (or (not x17265) (not x26112) (not x7084))
+:assumption (or x10792 x16510)
+:assumption (or x17359 x28837)
+:assumption (or (not x17352) x11374)
+:assumption (or (not x16401) x7010)
+:assumption (or (not x17091) x25370)
+:assumption (or x24341 x22975)
+:assumption (or x28610 (not x1393))
+:assumption (or (not x6594) (not x24262))
+:assumption (or x1775 (not x21716) (not x16526))
+:assumption (or x5367 (not x14958))
+:assumption (or x14747 x19233)
+:assumption (or (not x20286) (not x31631))
+:assumption (or (not x30006) (not x12116))
+:assumption (or x13228 x30895)
+:assumption (or x31687 (not x26118))
+:assumption (or x19628 (not x5400))
+:assumption (or (not x7334) (not x13529))
+:assumption (or (not x1016) (not x245))
+:assumption (or x19508 (not x10837))
+:assumption (or (not x10336) (not x25376) (not x29399) x8454 (not x17908))
+:assumption (or (not x28367) x21271)
+:assumption (or x29485 x28421)
+:assumption (or x22674 (not x25569))
+:assumption (or (not x7835) x21340)
+:assumption (or x28545 x4927)
+:assumption (or (not x29224) (not x22386))
+:assumption (or x5312 (not x10134))
+:assumption (or x16787 (not x17268))
+:assumption (or x20155 x12023 (not x18729) (not x29803))
+:assumption (or (not x8956) x8874)
+:assumption (or x27140 x10358)
+:assumption (or x1214 (not x22671))
+:assumption (or x6356 x20291)
+:assumption (or x12635 (not x17075))
+:assumption (or (not x16551) x15359)
+:assumption (or (not x2900) (not x25315))
+:assumption (or (not x23958) (not x5553))
+:assumption (or x23562 (not x27631))
+:assumption (or (not x26931) (not x19406))
+:assumption (or (not x17359) (not x5891))
+:assumption (or (not x9244) x2683)
+:assumption (or (not x18102) (not x2803))
+:assumption (or x2853 x31442)
+:assumption (or x26006 (not x24161) (not x10991) (not x26312) x2753 x29174 x10029 x27507 x16761)
+:assumption (or x223 (not x10215))
+:assumption (or (not x22136) x27746)
+:assumption (or (not x31797) (not x9008))
+:assumption (or x21317 (not x5483))
+:assumption (or (not x2968) (not x23104))
+:assumption (or x2851 (not x17045) (not x8467) x18265 (not x202))
+:assumption (or x31096 x97)
+:assumption (or x20163 (not x23197))
+:assumption (or (not x16784) (not x17844))
+:assumption (or (not x26133) (not x1339))
+:assumption (or x10597 (not x4795))
+:assumption (or (not x2373) x15788)
+:assumption (or x16615 (not x22236))
+:assumption (or (not x13883) (not x13956))
+:assumption (or (not x6215) x7992)
+:assumption (or (not x14540) x10762)
+:assumption (or x16555 (not x26243))
+:assumption (or x11792 (not x15701))
+:assumption (or x29649 (not x2768))
+:assumption (or (not x10030) x11590)
+:assumption (or x12789 (not x24584))
+:assumption (or (not x29714) (not x20135))
+:assumption (or x27208 (not x3001))
+:assumption (or x23244 x6624 x18623 x13411 x8002 x13956)
+:assumption (or x28331 x11135 (not x28912))
+:assumption (or x2073 (not x16261))
+:assumption (or x23188 x21743)
+:assumption (or (not x9600) (not x5162))
+:assumption (or x25326 (not x8580))
+:assumption (or (not x25960) x15352)
+:assumption (or x30954 (not x20683))
+:assumption (or x21104 (not x12002))
+:assumption (or x1918 x20466)
+:assumption (or x10502 x12595 x1083 x5904 x3455 (not x10505) (not x4657) (not x25639) x28575)
+:assumption (or (not x21026) (not x23258))
+:assumption (or (not x9008) x12815)
+:assumption (or (not x6018) x28342)
+:assumption (or (not x16323) x9047)
+:assumption (or (not x19923) x27458)
+:assumption (or (not x9330) x27408)
+:assumption (or (not x7944) (not x6631))
+:assumption (or (not x6812) x5528)
+:assumption (or x11785 (not x16036))
+:assumption (or x9151 x14565)
+:assumption (or (not x6469) x31893)
+:assumption (or (not x16025) (not x23651))
+:assumption (or x3160 x3057)
+:assumption (or (not x10018) (not x14206))
+:assumption (or (not x21298) x17974 (not x1835))
+:assumption (or (not x12578) x23150)
+:assumption (or (not x9652) x28111)
+:assumption (or x14295 (not x27616))
+:assumption (or (not x26989) x25828)
+:assumption (or (not x202) (not x7669))
+:assumption (or (not x29128) x8229)
+:assumption (or (not x13016) (not x23545))
+:assumption (or x16904 x4988 (not x23454) (not x26892))
+:assumption (or x27504 x19952)
+:assumption (or (not x24042) x25098 x5441 x27939)
+:assumption (or (not x26053) x18397)
+:assumption (or x17793 x19730 x11134 x5894)
+:assumption (or x9968 (not x17611))
+:assumption (or (not x5528) x24058 (not x26284) (not x9008) x11627)
+:assumption (or x21950 x8944)
+:assumption (or x19303 x7111)
+:assumption (or (not x12137) (not x25528))
+:assumption (or (not x3725) x12913)
+:assumption (or x1393 (not x20436))
+:assumption (or (not x10450) (not x3915))
+:assumption (or x14591 x7062 (not x16379) x15795)
+:assumption (or x21432 x27251)
+:assumption (or x2663 x21462)
+:assumption (or x14053 (not x30566) (not x23219) (not x11095))
+:assumption (or x1786 x13415)
+:assumption (or x21027 (not x17622))
+:assumption (or x12496 x10924)
+:assumption (or (not x12662) x29141)
+:assumption (or (not x19758) x16510)
+:assumption (or x21649 x12557)
+:assumption (or (not x18387) x30678)
+:assumption (or (not x3435) (not x21913))
+:assumption (or (not x1076) x17075)
+:assumption (or (not x23562) (not x5829) (not x20949))
+:assumption (or x23301 (not x23075))
+:assumption (or (not x22095) (not x8258))
+:assumption (or (not x29552) x17365)
+:assumption (or x14694 (not x17234))
+:assumption (or (not x13956) (not x11979) (not x29305) x12176)
+:assumption (or x4333 x6426)
+:assumption (or (not x21297) (not x11611))
+:assumption (or x1302 x4435)
+:assumption (or x16163 x3102)
+:assumption (or (not x12061) x25677)
+:assumption (or x24988 (not x18557))
+:assumption (or (not x12588) x8002 x4788 x23244 (not x9303))
+:assumption (or x16146 x9701)
+:assumption (or (not x20326) x2088)
+:assumption (or (not x1152) (not x25273) (not x17334))
+:assumption (or (not x12752) (not x5020))
+:assumption (or (not x13214) (not x9587))
+:assumption (or x15795 (not x15463) (not x16705) x20874 x4970)
+:assumption (or x13076 x28408)
+:assumption (or (not x20063) x5819)
+:assumption (or x24028 (not x6201))
+:assumption (or (not x6686) (not x22068))
+:assumption (or (not x10679) x19909)
+:assumption (or (not x9849) (not x23284))
+:assumption (or (not x25151) x18679)
+:assumption (or x6969 x29409 (not x27098) (not x27226))
+:assumption (or (not x7997) x9640)
+:assumption (or (not x18578) x6269)
+:assumption (or x17679 x12017)
+:assumption (or x17551 (not x8328))
+:assumption (or (not x15301) (not x2022) (not x9690))
+:assumption (or (not x29872) (not x6221))
+:assumption (or x3500 x15352)
+:assumption (or (not x12103) x14967)
+:assumption (or (not x31767) x27526)
+:assumption (or x22176 (not x2595))
+:assumption (or (not x16741) x24383)
+:assumption (or x18076 (not x18875))
+:assumption (or (not x31334) (not x19406))
+:assumption (or x30389 (not x26806))
+:assumption (or x409 (not x29824))
+:assumption (or (not x29376) x31868 x24347)
+:assumption (or x25234 (not x6219))
+:assumption (or (not x1488) (not x5700) x16741 x21217)
+:assumption (or (not x10662) x27818)
+:assumption (or (not x10113) (not x7211))
+:assumption (or x10175 x31767)
+:assumption (or x7537 (not x15386))
+:assumption (or (not x28706) (not x14720))
+:assumption (or (not x29352) (not x14495))
+:assumption (or (not x115) x6171)
+:assumption (or (not x11180) (not x22995))
+:assumption (or x21034 x829)
+:assumption (or x14830 (not x10378))
+:assumption (or x1585 x12024 (not x15615) x26341)
+:assumption (or (not x16611) x6110)
+:assumption (or (not x29347) x9825)
+:assumption (or (not x6188) x23123)
+:assumption (or (not x14606) x12424)
+:assumption (or (not x28541) (not x15864))
+:assumption (or x9423 x18446)
+:assumption (or (not x20219) x5394)
+:assumption (or (not x10515) x924)
+:assumption (or (not x7261) (not x24852))
+:assumption (or (not x27203) (not x24156) x14981)
+:assumption (or x31878 (not x334))
+:assumption (or x8396 x30997)
+:assumption (or (not x31817) x5394)
+:assumption (or x14065 x1421)
+:assumption (or x15148 x9734)
+:assumption (or x15372 x16669)
+:assumption (or (not x23723) (not x22502))
+:assumption (or x14797 (not x9476))
+:assumption (or (not x17817) (not x21336))
+:assumption (or (not x6980) (not x16003) x15621 (not x26575))
+:assumption (or (not x21739) x25563)
+:assumption (or (not x25097) (not x27117))
+:assumption (or (not x31725) x24152)
+:assumption (or x14455 (not x637) (not x16846) (not x6685) x12924 (not x14894))
+:assumption (or (not x4838) x7166)
+:assumption (or (not x21230) (not x12242))
+:assumption (or x16510 (not x15810))
+:assumption (or x15749 (not x11159))
+:assumption (or (not x23279) (not x16645) (not x28885) x24904 x22852)
+:assumption (or x22324 (not x23399) (not x3103))
+:assumption (or x17240 x5028)
+:assumption (or x18859 (not x21032))
+:assumption (or x2775 x6396)
+:assumption (or (not x20471) x26544)
+:assumption (or x6833 x401)
+:assumption (or (not x4274) (not x15258) x25832 (not x9709) x1694 x27505 x22888)
+:assumption (or x18148 (not x23522))
+:assumption (or x30160 x1340)
+:assumption (or x11357 x26588)
+:assumption (or (not x11394) (not x9453) (not x15816))
+:assumption (or (not x20405) x21298 x22998 (not x22295))
+:assumption (or (not x27233) (not x1486) (not x23244) (not x7804))
+:assumption (or x6326 (not x12896))
+:assumption (or (not x16374) (not x324))
+:assumption (or (not x9905) (not x7441))
+:assumption (or x3146 (not x12883))
+:assumption (or x9531 x13070)
+:assumption (or x13085 (not x16783))
+:assumption (or x18371 x30169)
+:assumption (or x9699 x9037)
+:assumption (or x25544 x2052 x17706 x19245 x23751)
+:assumption (or (not x28940) (not x20351))
+:assumption (or (not x19740) x15920)
+:assumption (or x25888 (not x7959) (not x7297) x16774 (not x16842))
+:assumption (or (not x18542) (not x28364) (not x19992))
+:assumption (or x18136 (not x11372))
+:assumption (or x22980 x16541)
+:assumption (or x26417 (not x6951) x16510)
+:assumption (or (not x12830) x14442)
+:assumption (or (not x14455) x324 x16374 (not x29145))
+:assumption (or (not x16002) x29606)
+:assumption (or x12416 (not x15429))
+:assumption (or (not x9911) (not x28184))
+:assumption (or (not x13387) (not x12127))
+:assumption (or x21247 (not x1693))
+:assumption (or x20047 (not x912) x2582 x23221 (not x170) (not x26945))
+:assumption (or x8882 (not x26789))
+:assumption (or x18566 x14545)
+:assumption (or x16319 (not x11561) x8425 (not x24457) x15184 (not x24256) x27451 (not x5016) (not x159))
+:assumption (or x16642 x29373)
+:assumption (or x24167 x27870 (not x29418) (not x7769) x24907)
+:assumption (or (not x29084) (not x14435))
+:assumption (or x22254 x20857)
+:assumption (or (not x18947) x3063)
+:assumption (or x16427 x4672)
+:assumption (or (not x26400) x23258 x21026 (not x12118) x11666)
+:assumption (or x26384 x12275 (not x25151))
+:assumption (or x15714 (not x24482))
+:assumption (or x29871 x5266)
+:assumption (or x1920 x27178)
+:assumption (or x23043 x30916)
+:assumption (or (not x6332) (not x11877))
+:assumption (or (not x31752) x3264)
+:assumption (or (not x21183) x8002)
+:assumption (or (not x6517) x27169 x3634 x21298)
+:assumption (or x20220 x29779)
+:assumption (or (not x3235) x19403)
+:assumption (or (not x31570) (not x15745))
+:assumption (or x3463 x29678)
+:assumption (or (not x2390) (not x8602))
+:assumption (or (not x6825) (not x3631))
+:assumption (or (not x10711) x28274 x29324 (not x31242) (not x4863) (not x2946))
+:assumption (or x27963 (not x16485))
+:assumption (or x21118 x21293)
+:assumption (or x12936 x5313)
+:assumption (or x27160 x28525 (not x22841))
+:assumption (or x1687 (not x22357))
+:assumption (or (not x9008) x26559 (not x24396))
+:assumption (or x24346 (not x13855))
+:assumption (or x28860 (not x480))
+:assumption (or (not x11754) x10688 x16510)
+:assumption (or (not x16293) (not x17897) x21632 (not x1004) (not x5772) (not x11482))
+:assumption (or (not x23386) x29431 (not x7702) x31730)
+:assumption (or (not x18393) (not x28252))
+:assumption (or x20431 x2471)
+:assumption (or x29547 x10961)
+:assumption (or x6998 x20342)
+:assumption (or (not x2225) x8984)
+:assumption (or (not x13618) (not x19737))
+:assumption (or x29951 (not x22488))
+:assumption (or (not x19180) x2475)
+:assumption (or x16701 (not x2335))
+:assumption (or (not x9647) (not x8106))
+:assumption (or (not x30409) (not x7835))
+:assumption (or x11034 (not x8550))
+:assumption (or x18437 x27818 (not x5765) (not x9962))
+:assumption (or x27949 x14332)
+:assumption (or x2334 x6265 (not x20261))
+:assumption (or (not x17154) x30738)
+:assumption (or (not x27469) x25095)
+:assumption (or (not x19183) x9508)
+:assumption (or (not x25151) x21358)
+:assumption (or x9608 x30530 x28242 (not x491))
+:assumption (or x21664 (not x29657))
+:assumption (or (not x7195) (not x3846) x20598 x810 x31873 (not x14122) (not x19098) x15274)
+:assumption (or (not x30002) (not x20554))
+:assumption (or (not x23665) x21843 (not x11337))
+:assumption (or (not x16616) x30723)
+:assumption (or x5144 (not x23136))
+:assumption (or (not x9008) x13674 x15102 x3696 (not x5528))
+:assumption (or x10735 (not x23068))
+:assumption (or (not x9035) (not x26413))
+:assumption (or x19061 (not x22465))
+:assumption (or x27942 (not x9099))
+:assumption (or x11119 (not x20088))
+:assumption (or x6104 x1669)
+:assumption (or x9008 (not x21041))
+:assumption (or (not x13622) x9765)
+:assumption (or x12863 x5248)
+:assumption (or (not x19748) x15653)
+:assumption (or x20 (not x701))
+:assumption (or x23449 (not x5467))
+:assumption (or x25870 x25270)
+:assumption (or x1920 (not x5399))
+:assumption (or x4487 x13848)
+:assumption (or x1874 x24320 x701)
+:assumption (or x28756 (not x4504) (not x13131) x26906)
+:assumption (or x16217 (not x28260))
+:assumption (or (not x12897) (not x26894))
+:assumption (or x25355 x29015 x9818)
+:assumption (or x1613 x29006)
+:assumption (or (not x28652) (not x3708) (not x27117))
+:assumption (or (not x30644) x23943 (not x22461) x7946 x17905 (not x5528))
+:assumption (or (not x18684) x1046)
+:assumption (or (not x3530) x8601)
+:assumption (or (not x28444) (not x25275))
+:assumption (or x14512 (not x13011))
+:assumption (or x3435 x21950)
+:assumption (or x24508 (not x18837))
+:assumption (or (not x21593) x26456)
+:assumption (or (not x26061) x31787)
+:assumption (or (not x8139) x26007)
+:assumption (or x2978 x19960)
+:assumption (or x16350 x13576)
+:assumption (or x5208 (not x4365))
+:assumption (or x3001 (not x26502))
+:assumption (or x7113 x16920)
+:assumption (or x12872 x9795)
+:assumption (or x17930 x2793 (not x19590) x27531)
+:assumption (or (not x16143) x26146)
+:assumption (or (not x10254) (not x31048))
+:assumption (or x15774 (not x11511))
+:assumption (or (not x6368) (not x18475))
+:assumption (or (not x10365) (not x14509))
+:assumption (or x5980 x10995 x14365)
+:assumption (or (not x18257) (not x1474))
+:assumption (or (not x474) (not x19543))
+:assumption (or x7291 (not x24387) (not x268) x17107)
+:assumption (or (not x20796) x29834)
+:assumption (or x12320 x21298)
+:assumption (or (not x12491) (not x29442))
+:assumption (or x12112 x23097 x13374 x15614 (not x26565))
+:assumption (or (not x21298) x20850 x3050 x30943)
+:assumption (or x4259 (not x28866))
+:assumption (or (not x7447) (not x23222))
+:assumption (or (not x21313) x27537)
+:assumption (or (not x5905) x452)
+:assumption (or x480 x25458 x5020)
+:assumption (or x30749 (not x17748))
+:assumption (or (not x1883) (not x18731))
+:assumption (or (not x9015) x5528)
+:assumption (or (not x10926) (not x26187))
+:assumption (or (not x25458) x21127)
+:assumption (or x16510 x1806)
+:assumption (or x683 x26578)
+:assumption (or (not x31592) (not x29155))
+:assumption (or (not x18200) (not x16851))
+:assumption (or x7752 (not x1787) (not x14279) (not x17908))
+:assumption (or x1414 (not x29989))
+:assumption (or (not x5716) x11792)
+:assumption (or x10098 (not x13098))
+:assumption (or x5834 (not x28417))
+:assumption (or x21009 (not x2345))
+:assumption (or x519 x18215 x20742)
+:assumption (or (not x28557) (not x12675))
+:assumption (or (not x13934) (not x11855))
+:assumption (or (not x24073) (not x9958))
+:assumption (or x22383 x12186)
+:assumption (or (not x15707) x27906)
+:assumption (or (not x29493) x25829)
+:assumption (or (not x6548) x29002)
+:assumption (or x12822 (not x8002) x5658)
+:assumption (or x21400 x28218)
+:assumption (or (not x11539) x26125)
+:assumption (or (not x22046) x31802)
+:assumption (or x20779 x12538)
+:assumption (or x14578 x25198)
+:assumption (or x26593 x6772)
+:assumption (or x13329 (not x24761) x26698 (not x58) x7829 x30289)
+:assumption (or (not x22224) (not x2160))
+:assumption (or (not x1094) x22495)
+:assumption (or x29046 (not x315))
+:assumption (or x28648 x13904)
+:assumption (or x15795 x15486 (not x4129) x16304)
+:assumption (or (not x5894) x25534)
+:assumption (or x3944 (not x16849))
+:assumption (or x11684 x4214)
+:assumption (or (not x8602) (not x24802))
+:assumption (or x6270 (not x15021))
+:assumption (or (not x19080) x15868)
+:assumption (or x21815 (not x21181))
+:assumption (or x11910 (not x1184))
+:assumption (or (not x17246) (not x16741))
+:assumption (or x19577 (not x7525))
+:assumption (or x4373 (not x3838))
+:assumption (or x4145 x3795)
+:assumption (or (not x27823) (not x26665))
+:assumption (or (not x17945) (not x6652))
+:assumption (or (not x5057) (not x23519))
+:assumption (or x14425 x7268)
+:assumption (or (not x16003) x22982)
+:assumption (or (not x12507) x1995)
+:assumption (or (not x499) (not x27731))
+:assumption (or x13674 x14984)
+:assumption (or (not x15214) x28605)
+:assumption (or x24542 x28800)
+:assumption (or x30256 (not x8958) (not x15517))
+:assumption (or x30954 (not x21922))
+:assumption (or x29323 x18939 (not x4531) x31390 x285)
+:assumption (or (not x20151) x12532)
+:assumption (or (not x8961) (not x19342) (not x5886) x6955)
+:assumption (or x17223 x25521)
+:assumption (or (not x6019) x22824)
+:assumption (or (not x11069) x11388)
+:assumption (or (not x11952) (not x19640))
+:assumption (or (not x290) (not x13756))
+:assumption (or x13956 (not x27745))
+:assumption (or x20247 x24756)
+:assumption (or x13576 x17888)
+:assumption (or x7735 x25487 x2541 (not x21350) x5279 (not x9597) x18894 x27979)
+:assumption (or x31866 x27918)
+:assumption (or (not x17426) x30726)
+:assumption (or (not x10879) (not x6504))
+:assumption (or x10861 (not x23633))
+:assumption (or x21419 x9453)
+:assumption (or x5528 (not x20024))
+:assumption (or x17331 (not x7035) x20192 x13669 x621 (not x14250) (not x14225))
+:assumption (or x6866 (not x7597))
+:assumption (or x26232 x23633)
+:assumption (or x1744 x4968)
+:assumption (or (not x20012) x13893)
+:assumption (or (not x12060) x6297 x17351 (not x16439) (not x2380) x6871)
+:assumption (or x23208 x26637 x31364 x626)
+:assumption (or (not x13131) (not x1347) (not x25114) x25376)
+:assumption (or (not x28049) x26935)
+:assumption (or (not x3265) (not x28242))
+:assumption (or x25500 (not x31637))
+:assumption (or x16282 (not x14455))
+:assumption (or x6199 (not x20049))
+:assumption (or (not x21824) (not x18364))
+:assumption (or (not x30695) (not x5900))
+:assumption (or x23167 (not x23250))
+:assumption (or (not x18505) (not x13956))
+:assumption (or (not x21927) x2483)
+:assumption (or x4310 (not x13130))
+:assumption (or (not x15327) (not x18259))
+:assumption (or x28079 x3939)
+:assumption (or x19960 x1863)
+:assumption (or (not x21267) (not x28269))
+:assumption (or (not x13777) x10536)
+:assumption (or x23949 x30166)
+:assumption (or x15044 x29860)
+:assumption (or (not x31268) (not x23864))
+:assumption (or (not x5021) x6605)
+:assumption (or (not x21958) x13124)
+:assumption (or x21625 x19183 (not x2713))
+:assumption (or (not x18493) x16989)
+:assumption (or (not x8005) (not x31514))
+:assumption (or x8223 (not x10116))
+:assumption (or x20951 (not x5441))
+:assumption (or x28254 x14833)
+:assumption (or x16232 (not x18048))
+:assumption (or x12045 (not x24136) x16067 x20949)
+:assumption (or (not x27401) (not x12369))
+:assumption (or x18858 (not x528))
+:assumption (or x8900 x15398 (not x357) (not x19263) x28541 (not x22759))
+:assumption (or (not x25998) (not x23744))
+:assumption (or (not x25537) (not x27237))
+:assumption (or (not x11537) (not x22638))
+:assumption (or (not x74) (not x4199))
+:assumption (or (not x21543) (not x19888))
+:assumption (or x5003 (not x29606))
+:assumption (or x3355 (not x2478))
+:assumption (or (not x4537) x1296)
+:assumption (or x17837 x6457 (not x25340))
+:assumption (or (not x5882) (not x31157))
+:assumption (or x4258 x10008 (not x20576))
+:assumption (or x12608 (not x20306))
+:assumption (or (not x6133) (not x11491))
+:assumption (or (not x6934) x415)
+:assumption (or (not x21260) (not x8002))
+:assumption (or x9435 (not x20581) x24577 (not x27331) x30096 x19657 x5561)
+:assumption (or (not x3336) x2604)
+:assumption (or (not x24079) x12714 x22971)
+:assumption (or (not x25045) (not x22553) (not x16026))
+:assumption (or (not x2752) (not x1837))
+:assumption (or x4379 (not x12213))
+:assumption (or x13045 x23184 x1168 (not x18916) (not x15002) x5526 (not x11280) x30079 x14730)
+:assumption (or x23061 (not x10789))
+:assumption (or (not x31311) (not x24978))
+:assumption (or (not x30632) x11440)
+:assumption (or (not x4051) x2521)
+:assumption (or x11289 x28821)
+:assumption (or x3993 (not x8317) (not x1877))
+:assumption (or x13249 x30835)
+:assumption (or x16510 x18352)
+:assumption (or x5751 (not x18441))
+:assumption (or (not x9566) (not x16188))
+:assumption (or (not x15861) x22241 x12083)
+:assumption (or x11904 (not x26120))
+:assumption (or x21563 (not x860))
+:assumption (or x12193 (not x10617))
+:assumption (or (not x28662) (not x24752))
+:assumption (or (not x4026) x29517)
+:assumption (or x4503 (not x29305))
+:assumption (or x5528 (not x9682))
+:assumption (or (not x26011) x28109)
+:assumption (or x21661 x3264)
+:assumption (or (not x14338) x11470)
+:assumption (or x28133 (not x9423))
+:assumption (or x14344 x30318)
+:assumption (or x28155 x25366)
+:assumption (or x5409 (not x21653))
+:assumption (or x21520 (not x31773))
+:assumption (or (not x12242) x25696)
+:assumption (or (not x29800) x29168)
+:assumption (or (not x21351) (not x21234) x28885 (not x11488))
+:assumption (or (not x17738) x10866)
+:assumption (or (not x4504) x8965)
+:assumption (or (not x25492) (not x28009) x768)
+:assumption (or x29104 x27895)
+:assumption (or (not x12792) (not x10088) (not x21027) (not x2709) x964 (not x26681))
+:assumption (or x6791 (not x28066))
+:assumption (or (not x10230) (not x12042))
+:assumption (or x11045 (not x6245) (not x30559) x3453 (not x23055))
+:assumption (or x644 (not x8308))
+:assumption (or x13418 (not x26799))
+:assumption (or x9113 x10336)
+:assumption (or (not x27320) x15069)
+:assumption (or (not x142) x994)
+:assumption (or (not x18083) x25968)
+:assumption (or x12892 (not x25487))
+:assumption (or x11566 x28745)
+:assumption (or x1081 (not x25316))
+:assumption (or x12582 x24333)
+:assumption (or (not x21779) (not x10709))
+:assumption (or (not x12627) x16849)
+:assumption (or x21653 (not x12970))
+:assumption (or (not x16866) (not x14552))
+:assumption (or x9008 (not x8294))
+:assumption (or (not x17359) (not x6529))
+:assumption (or (not x17547) (not x5307) x8602)
+:assumption (or x12297 x21335)
+:assumption (or x9226 (not x18859))
+:assumption (or (not x21061) x17225 x18450 (not x11463))
+:assumption (or (not x25242) (not x2225))
+:assumption (or x13143 (not x832))
+:assumption (or (not x7576) x7719)
+:assumption (or x29184 x8783)
+:assumption (or (not x3740) x7643 x2961)
+:assumption (or (not x28558) (not x22411))
+:assumption (or x18839 x15072)
+:assumption (or (not x26989) x8871 x4451)
+:assumption (or (not x19785) x10236)
+:assumption (or (not x19616) x7135)
+:assumption (or (not x23782) x109)
+:assumption (or x1621 (not x18673) (not x5885) x18638 (not x11492) (not x28618) (not x3738))
+:assumption (or (not x8002) x25584)
+:assumption (or (not x15516) x29442)
+:assumption (or (not x17326) (not x11034))
+:assumption (or (not x21631) (not x5503))
+:assumption (or x24350 (not x31134))
+:assumption (or (not x25685) x19845 x25659)
+:assumption (or (not x23481) (not x26866))
+:assumption (or x11188 (not x6511))
+:assumption (or (not x28436) x16546)
+:assumption (or x2128 (not x15906))
+:assumption (or x1950 x24954 (not x10685) x25394 x30429 x13324 (not x15557) x16311)
+:assumption (or (not x13403) x13314)
+:assumption (or (not x2479) (not x1853))
+:assumption (or x509 (not x8581) x2549 (not x3508) (not x10366) (not x23678))
+:assumption (or (not x13680) x24668 (not x11944) (not x27242) x23249 (not x12193) x10617 x15552)
+:assumption (or x19245 (not x25604))
+:assumption (or x9145 x29476)
+:assumption (or x19992 x25659 x5696 x5028 x2933)
+:assumption (or x18227 x16510)
+:assumption (or (not x28500) (not x2827))
+:assumption (or (not x14340) (not x31048))
+:assumption (or x6381 x29241)
+:assumption (or (not x16646) (not x30977))
+:assumption (or (not x29553) x21159)
+:assumption (or (not x8407) (not x10992))
+:assumption (or (not x5986) (not x5801) x25659)
+:assumption (or x16289 (not x15328))
+:assumption (or (not x2562) x16991)
+:assumption (or (not x29714) (not x3001))
+:assumption (or (not x30043) x17571 x4907 x5755)
+:assumption (or x3494 (not x27232))
+:assumption (or (not x20815) (not x17499))
+:assumption (or x25137 (not x28149))
+:assumption (or x15962 (not x29220) (not x19428))
+:assumption (or (not x827) x11105 x25250)
+:assumption (or x1718 x13576 x2321)
+:assumption (or x21879 x11473 (not x18455) (not x7846) x27673)
+:assumption (or x9632 x17841)
+:assumption (or x31481 (not x7551) x20756 x10303 (not x8410) (not x5528))
+:assumption (or x486 (not x18491))
+:assumption (or x21074 (not x26832))
+:assumption (or x5620 x30407)
+:assumption (or x28689 x28749)
+:assumption (or (not x27824) (not x19941))
+:assumption (or x18771 x11230)
+:assumption (or x6381 x25650)
+:assumption (or x30881 x13036)
+:assumption (or (not x2395) (not x5274))
+:assumption (or (not x13965) (not x1842))
+:assumption (or (not x3960) x31081)
+:assumption (or (not x827) (not x6488))
+:assumption (or (not x26999) (not x29802))
+:assumption (or (not x2439) x18959)
+:assumption (or x15960 x22088)
+:assumption (or x4559 (not x27306) x8403 (not x10929))
+:assumption (or (not x29517) x30648 x4026)
+:assumption (or x28376 (not x22132))
+:assumption (or x16025 x23651 x28511)
+:assumption (or x9453 (not x4451) x9521)
+:assumption (or x12435 x8056)
+:assumption (or (not x21400) (not x336))
+:assumption (or (not x14695) (not x514) (not x9008) (not x5528) x2531)
+:assumption (or x21298 (not x27940))
+:assumption (or x28851 (not x142) x10199)
+:assumption (or x10180 (not x17115))
+:assumption (or x8002 (not x21002) x23244 x13956 (not x22295) (not x20291))
+:assumption (or x28973 x30384)
+:assumption (or (not x22855) x28860)
+:assumption (or (not x9027) (not x9354))
+:assumption (or x7395 (not x9049))
+:assumption (or x31764 x4518)
+:assumption (or (not x25490) x28513)
+:assumption (or x5912 (not x20173))
+:assumption (or (not x23078) (not x3494))
+:assumption (or x24887 (not x8002))
+:assumption (or (not x16316) x14361)
+:assumption (or (not x27175) x27386 (not x2799) (not x1750) x30603 (not x9951) (not x827) x27865)
+:assumption (or (not x12356) (not x27063))
+:assumption (or (not x24756) (not x11692))
+:assumption (or x31592 x28784 (not x19505) x29016 (not x19578) x29155)
+:assumption (or (not x4742) (not x9222))
+:assumption (or (not x17604) x20087)
+:assumption (or x18726 x5755)
+:assumption (or x5143 x18244)
+:assumption (or x27643 (not x3381))
+:assumption (or x23141 x6581)
+:assumption (or (not x27113) x21653)
+:assumption (or (not x28973) (not x26523) x288)
+:assumption (or x23370 x27598 (not x7743) (not x6171) (not x16117))
+:assumption (or (not x1227) x214)
+:assumption (or x134 (not x26338))
+:assumption (or (not x4244) (not x16156))
+:assumption (or x8204 (not x8759))
+:assumption (or x3896 (not x22381))
+:assumption (or (not x7998) (not x9531))
+:assumption (or x14839 x16990 x3981 (not x3699))
+:assumption (or x31818 x5339)
+:assumption (or x14433 (not x24633))
+:assumption (or x31189 (not x435) (not x26885) (not x22032))
+:assumption (or x10379 x18672)
+:assumption (or (not x2015) x817)
+:assumption (or x6214 (not x23901))
+:assumption (or (not x22988) x9175)
+:assumption (or (not x25659) (not x22800))
+:assumption (or x9012 x15294)
+:assumption (or x27733 x28552)
+:assumption (or (not x8002) (not x22970))
+:assumption (or (not x15725) x6916)
+:assumption (or (not x26190) x9987)
+:assumption (or x8896 (not x30019))
+:assumption (or (not x24483) x13651 x12277 x21665 (not x13697) (not x24194) x7554)
+:assumption (or x2185 (not x8552))
+:assumption (or (not x30871) x1721)
+:assumption (or (not x31177) x28745)
+:assumption (or x8610 x26269)
+:assumption (or x20798 x14580)
+:assumption (or (not x10546) x25883)
+:assumption (or (not x31146) (not x13411))
+:assumption (or (not x19365) x22751)
+:assumption (or x26412 x10074)
+:assumption (or (not x3264) (not x2154) x25784 x20490)
+:assumption (or x2334 x23708)
+:assumption (or x8816 (not x10914))
+:assumption (or x12615 x24638)
+:assumption (or x31290 x26980)
+:assumption (or (not x14689) x7422)
+:assumption (or (not x8002) x14547)
+:assumption (or (not x26656) x28089)
+:assumption (or (not x2156) x29550)
+:assumption (or (not x11020) (not x677))
+:assumption (or (not x6900) x19773)
+:assumption (or x23629 x30926)
+:assumption (or x6078 x21815 x17601)
+:assumption (or (not x28307) x5156)
+:assumption (or x6545 x20120)
+:assumption (or x31621 (not x16342))
+:assumption (or (not x2974) (not x5367))
+:assumption (or x410 (not x19407))
+:assumption (or x12396 (not x29730))
+:assumption (or x17039 (not x26919))
+:assumption (or x23122 (not x6380))
+:assumption (or x10317 (not x10552))
+:assumption (or x8002 (not x25999))
+:assumption (or x20022 (not x11089))
+:assumption (or x15126 x28732)
+:assumption (or x23281 x17020)
+:assumption (or (not x25542) (not x2966))
+:assumption (or (not x18343) x13304)
+:assumption (or x29257 (not x779))
+:assumption (or (not x7122) (not x2505))
+:assumption (or (not x8877) (not x18244) (not x23132) x28686 x1518 (not x16510))
+:assumption (or x28547 (not x3082))
+:assumption (or (not x13936) x18486)
+:assumption (or x29704 (not x27896))
+:assumption (or (not x8529) (not x24332))
+:assumption (or (not x10020) (not x18402))
+:assumption (or x9954 x23985)
+:assumption (or (not x5374) (not x30912))
+:assumption (or x858 (not x7120))
+:assumption (or (not x10099) x5059)
+:assumption (or (not x20290) x6737)
+:assumption (or (not x8908) x19327)
+:assumption (or (not x4735) (not x4052))
+:assumption (or x20415 x24483)
+:assumption (or x29628 x13397)
+:assumption (or x15333 x11807)
+:assumption (or (not x28479) (not x6406))
+:assumption (or (not x28242) (not x17301))
+:assumption (or x19720 x22946)
+:assumption (or (not x22150) x1316)
+:assumption (or (not x12660) x380)
+:assumption (or (not x29420) x1483)
+:assumption (or (not x28324) x16510)
+:assumption (or (not x13956) x10022)
+:assumption (or x2878 x21911)
+:assumption (or x91 (not x8277))
+:assumption (or (not x21647) x1798)
+:assumption (or (not x28077) (not x549))
+:assumption (or x25077 x29730 (not x18225) (not x557) x13833 (not x17374) x17310 (not x7893))
+:assumption (or x2946 (not x14441))
+:assumption (or (not x17772) x30563 (not x25226))
+:assumption (or x13865 x27554)
+:assumption (or x23666 (not x1832))
+:assumption (or x3844 (not x30762) (not x23702) x2001 x5097 x30828)
+:assumption (or x5584 (not x13553))
+:assumption (or (not x12247) x17328)
+:assumption (or x24235 (not x907))
+:assumption (or x8032 (not x29160))
+:assumption (or x30261 (not x10465) (not x22285))
+:assumption (or x9961 (not x20768) (not x15615) x23244 x8002)
+:assumption (or (not x14059) x15662)
+:assumption (or x8942 (not x31289))
+:assumption (or (not x26667) (not x15296))
+:assumption (or (not x16285) (not x14154))
+:assumption (or (not x30917) x7962)
+:assumption (or x12734 (not x23387))
+:assumption (or x17389 x3249)
+:assumption (or x9398 (not x21381))
+:assumption (or x17470 x12088)
+:assumption (or (not x8674) x10133)
+:assumption (or (not x21429) x649)
+:assumption (or x15803 (not x10720))
+:assumption (or x4398 x7350 (not x9383) (not x8393) (not x23737))
+:assumption (or (not x21653) x24921)
+:assumption (or (not x30148) (not x6236))
+:assumption (or x326 (not x27263))
+:assumption (or x29087 x3627)
+:assumption (or x24906 (not x29625))
+:assumption (or (not x30692) (not x14560) x12014)
+:assumption (or x20530 (not x27849) (not x21298) x11237)
+:assumption (or (not x20409) x9181)
+:assumption (or x11097 x7068)
+:assumption (or x21852 x17490 x12704 x8002 x9828 (not x18602))
+:assumption (or (not x485) (not x16185) (not x29932) (not x6636))
+:assumption (or x5191 x10490)
+:assumption (or x10037 (not x21648))
+:assumption (or x12895 x8371)
+:assumption (or (not x4332) x9449 x1393)
+:assumption (or (not x8002) x1481)
+:assumption (or (not x13667) x7998 (not x28991) (not x18559))
+:assumption (or x7525 (not x19577) x6783 x21298)
+:assumption (or (not x10990) x4616)
+:assumption (or x21437 x15746)
+:assumption (or (not x10162) x28656)
+:assumption (or (not x26943) x23571)
+:assumption (or (not x26588) (not x11357))
+:assumption (or (not x26378) x19667 x19552 (not x4911) (not x28376) x22132)
+:assumption (or (not x1393) x20785 x17197)
+:assumption (or x17015 x10343 x9008)
+:assumption (or (not x26534) (not x28611))
+:assumption (or x27552 x7453)
+:assumption (or x3985 x22596)
+:assumption (or (not x6416) (not x24321))
+:assumption (or (not x13381) (not x7666))
+:assumption (or (not x9753) (not x11059))
+:assumption (or (not x14839) (not x12709))
+:assumption (or x19935 x4043 x11215 x28536 x11674)
+:assumption (or (not x10844) (not x2761))
+:assumption (or (not x12636) x6050 (not x8541) x531 (not x17534) x29318 x30215 (not x6560))
+:assumption (or (not x18629) x27260)
+:assumption (or x9008 x30969)
+:assumption (or (not x7761) x3703)
+:assumption (or x9283 x19930)
+:assumption (or x11572 (not x13377))
+:assumption (or x22639 (not x8207))
+:assumption (or x6528 (not x2898))
+:assumption (or x8669 x11854)
+:assumption (or (not x3453) x4525 x18151)
+:assumption (or (not x21050) x14684)
+:assumption (or (not x29123) (not x14041))
+:assumption (or x21026 (not x7750))
+:assumption (or x5659 x23891)
+:assumption (or (not x13795) x15477)
+:assumption (or x17839 x23111)
+:assumption (or x23510 x21889)
+:assumption (or (not x27633) (not x21307))
+:assumption (or (not x14692) x27457)
+:assumption (or (not x27161) x1200)
+:assumption (or (not x3029) (not x11629))
+:assumption (or (not x7755) x11358 x14435 (not x6554))
+:assumption (or x6429 (not x18971))
+:assumption (or x13993 x19224)
+:assumption (or x4582 x11915)
+:assumption (or (not x19647) x5712)
+:assumption (or x20600 (not x8229))
+:assumption (or (not x31842) (not x27104))
+:assumption (or (not x12339) (not x12350))
+:assumption (or (not x8002) x23286)
+:assumption (or (not x6269) x19308 x18578 (not x8761))
+:assumption (or (not x14570) (not x1523))
+:assumption (or (not x21558) (not x30511))
+:assumption (or (not x16132) x2820)
+:assumption (or (not x11526) x24707)
+:assumption (or (not x28491) (not x17359) (not x23244))
+:assumption (or (not x16770) (not x8961))
+:assumption (or x11506 (not x19377))
+:assumption (or (not x14550) (not x28497))
+:assumption (or (not x15227) x29681)
+:assumption (or (not x28037) (not x6768))
+:assumption (or (not x29007) (not x5666) (not x14839))
+:assumption (or x3979 x8975)
+:assumption (or (not x24880) x27072)
+:assumption (or x321 x10852)
+:assumption (or x8341 (not x21170))
+:assumption (or x19521 (not x15119))
+:assumption (or (not x31137) x28749)
+:assumption (or (not x25312) (not x15795))
+:assumption (or (not x26338) (not x5558))
+:assumption (or (not x13623) (not x28698))
+:assumption (or (not x30989) (not x24443) x5876 (not x17710) (not x5528) (not x19952))
+:assumption (or x4903 x25729)
+:assumption (or x11239 (not x11667))
+:assumption (or x26931 (not x21319))
+:assumption (or (not x1925) (not x19691))
+:assumption (or (not x15875) x29285)
+:assumption (or x9367 x15787)
+:assumption (or (not x15795) x27280)
+:assumption (or (not x11783) x6801)
+:assumption (or x10950 (not x13224))
+:assumption (or (not x30802) x28692)
+:assumption (or x31387 x11050)
+:assumption (or x19971 x31813)
+:assumption (or x1828 x9398 (not x20060))
+:assumption (or x2556 x7940)
+:assumption (or x13404 x27377 x29955 x3400 (not x23244) x24254)
+:assumption (or x29699 (not x9531) (not x3193))
+:assumption (or (not x7629) (not x20147) x6149)
+:assumption (or x26309 x2461)
+:assumption (or x23537 x23740 x24367 x19472 (not x10333))
+:assumption (or (not x29408) (not x7366))
+:assumption (or (not x31490) x8002)
+:assumption (or (not x31160) (not x29014))
+:assumption (or (not x21583) x1779)
+:assumption (or (not x16910) x30954 (not x7636))
+:assumption (or (not x16025) (not x8110))
+:assumption (or x609 (not x27063))
+:assumption (or x20187 (not x31407))
+:assumption (or x12359 (not x8651))
+:assumption (or x19769 (not x741))
+:assumption (or x22031 (not x7553))
+:assumption (or x27075 x4559)
+:assumption (or (not x17539) (not x25479))
+:assumption (or (not x2890) (not x26061))
+:assumption (or (not x15616) (not x2412))
+:assumption (or (not x15470) x21894)
+:assumption (or (not x12411) x31546)
+:assumption (or (not x2942) x5226 (not x23076))
+:assumption (or x28782 (not x29333))
+:assumption (or (not x17524) x21878)
+:assumption (or x31734 x31597)
+:assumption (or (not x1884) x12694)
+:assumption (or x14097 (not x11359) (not x26933) (not x5241) (not x21162) (not x29600) x30433 (not x7081) x23206)
+:assumption (or (not x30138) (not x9191))
+:assumption (or x22275 x21637)
+:assumption (or x27887 x17779)
+:assumption (or x23593 (not x3264) x8342 x25784)
+:assumption (or x17359 x28894)
+:assumption (or (not x5815) (not x30619))
+:assumption (or (not x2565) x28937)
+:assumption (or (not x27343) (not x7456))
+:assumption (or x24805 (not x13214))
+:assumption (or x4653 (not x15366) x2463)
+:assumption (or x30828 (not x3496))
+:assumption (or (not x5840) x16917)
+:assumption (or (not x3050) (not x22789))
+:assumption (or (not x21013) x22748)
+:assumption (or (not x23899) x20601)
+:assumption (or x22856 x3782)
+:assumption (or (not x14415) (not x2308))
+:assumption (or x24250 (not x9409))
+:assumption (or (not x25430) (not x31368))
+:assumption (or x5528 (not x3707))
+:assumption (or (not x27042) x21400 x336 (not x22495))
+:assumption (or x29987 (not x31643))
+:assumption (or x30889 x10628)
+:assumption (or x7219 x6254)
+:assumption (or x29960 x17389)
+:assumption (or x18978 (not x31248))
+:assumption (or x15629 x30481)
+:assumption (or (not x20588) x20800)
+:assumption (or x8502 x24634)
+:assumption (or x24553 x31491)
+:assumption (or x29204 x28800)
+:assumption (or (not x11434) x19942)
+:assumption (or x11997 x16304)
+:assumption (or x9060 x24069)
+:assumption (or (not x7021) (not x24825) (not x23801) (not x25856))
+:assumption (or (not x4031) x4990)
+:assumption (or x15850 (not x1376))
+:assumption (or x3000 x3498)
+:assumption (or x7907 x7221)
+:assumption (or x24852 x7261)
+:assumption (or (not x12222) x16648)
+:assumption (or (not x3881) x25080)
+:assumption (or (not x22653) x122)
+:assumption (or (not x11232) x31326)
+:assumption (or x1393 x16226)
+:assumption (or (not x20093) x3519)
+:assumption (or x7497 (not x18513))
+:assumption (or (not x30181) (not x3880) x11943 x9374)
+:assumption (or (not x10756) x9647 x6453)
+:assumption (or (not x17015) (not x9008))
+:assumption (or (not x21771) (not x10537))
+:assumption (or x7521 x24416)
+:assumption (or (not x29771) (not x6693))
+:assumption (or (not x31521) x7604)
+:assumption (or x4810 (not x1587))
+:assumption (or (not x19935) x31188)
+:assumption (or x23647 x16374)
+:assumption (or x26393 x12083)
+:assumption (or x26649 (not x1419))
+:assumption (or (not x25631) (not x16205) x1248 (not x2342) (not x9648))
+:assumption (or (not x30034) (not x18714))
+:assumption (or x14195 (not x29761))
+:assumption (or (not x27104) x4982)
+:assumption (or (not x23244) x26759)
+:assumption (or x21794 (not x4372))
+:assumption (or (not x19704) x27114 (not x16106) x3409)
+:assumption (or (not x3868) x24787)
+:assumption (or x18699 (not x12045))
+:assumption (or x28987 (not x4153))
+:assumption (or x3093 x27752)
+:assumption (or (not x11590) (not x23345))
+:assumption (or (not x29838) x6004)
+:assumption (or x9008 (not x22247) (not x29530))
+:assumption (or (not x17962) x25608 x9204 x24977)
+:assumption (or (not x8982) x24742)
+:assumption (or x15965 x3782)
+:assumption (or x1052 x21646)
+:assumption (or x30336 (not x534))
+:assumption (or x27452 x31499 x16879 (not x21750) x18623 x18362)
+:assumption (or (not x5497) x20942)
+:assumption (or x229 x28808)
+:assumption (or x8439 (not x5756))
+:assumption (or (not x27911) x31262)
+:assumption (or (not x8026) x19152 x6966 (not x19529) x19676 (not x28636))
+:assumption (or x8087 (not x23347))
+:assumption (or (not x19302) (not x14517))
+:assumption (or x3007 x16003)
+:assumption (or (not x24677) x21954)
+:assumption (or x30219 x19373)
+:assumption (or (not x22531) (not x7476))
+:assumption (or x25148 x16849 x5528)
+:assumption (or x21810 (not x20593))
+:assumption (or x20118 x24293 x24061 x3706)
+:assumption (or x10126 (not x6969))
+:assumption (or (not x5621) (not x15083))
+:assumption (or x5702 x7724)
+:assumption (or x12393 x12672)
+:assumption (or (not x13622) (not x4198))
+:assumption (or (not x4793) x15447 (not x10157) x3414)
+:assumption (or x3548 (not x462))
+:assumption (or (not x10874) (not x9329) x16837)
+:assumption (or x7667 (not x7982))
+:assumption (or x16096 x5732)
+:assumption (or x10874 x25252)
+:assumption (or x15321 x3264 (not x20098))
+:assumption (or x15071 (not x16476))
+:assumption (or x17187 (not x11306))
+:assumption (or x14377 x9008 (not x347) (not x11382) x11630 x23472)
+:assumption (or x3010 x20929)
+:assumption (or x25659 x16014 x28292)
+:assumption (or x20229 x30208 x9085 (not x19))
+:assumption (or (not x16317) x13576)
+:assumption (or x15240 (not x6007))
+:assumption (or x5558 (not x10423))
+:assumption (or (not x9808) (not x2673))
+:assumption (or x23270 (not x6056))
+:assumption (or x790 x22358)
+:assumption (or x14996 (not x31807))
+:assumption (or x7827 x25657)
+:assumption (or (not x20450) x20794)
+:assumption (or x23539 x19149)
+:assumption (or (not x4845) (not x26448))
+:assumption (or (not x3914) (not x6085))
+:assumption (or (not x20766) x27226)
+:assumption (or (not x18792) x3624)
+:assumption (or (not x27282) (not x22477))
+:assumption (or x9684 x19336)
+:assumption (or x30339 (not x3628))
+:assumption (or (not x22661) (not x27801))
+:assumption (or (not x881) x30863)
+:assumption (or x28035 x20181)
+:assumption (or (not x24722) (not x16666))
+:assumption (or x5259 (not x31151))
+:assumption (or x1920 (not x18903) (not x20606))
+:assumption (or (not x3977) (not x26204) x1920 x26571)
+:assumption (or (not x26835) (not x11343) x17767 x12893 x13784 x6877 (not x9394))
+:assumption (or (not x26057) x11489)
+:assumption (or (not x23400) x16059)
+:assumption (or x25728 (not x2592) (not x4386) x24084)
+:assumption (or (not x6813) (not x25670))
+:assumption (or (not x14134) (not x13579))
+:assumption (or (not x19885) x30828)
+:assumption (or x15053 x4486)
+:assumption (or x22710 (not x1300))
+:assumption (or x17481 (not x10874) x9712 (not x20027) x16352)
+:assumption (or (not x27474) x12907)
+:assumption (or (not x14687) (not x9803))
+:assumption (or (not x8454) x19435)
+:assumption (or x6076 x19473)
+:assumption (or x28719 x6729)
+:assumption (or x3539 (not x11193))
+:assumption (or (not x8961) (not x5745) x20747)
+:assumption (or x6783 x23503)
+:assumption (or x21788 (not x18963))
+:assumption (or (not x4468) (not x6697))
+:assumption (or x26050 x12235)
+:assumption (or (not x1199) x19992)
+:assumption (or (not x16102) x22306 (not x29388) x22495)
+:assumption (or x29382 (not x29098))
+:assumption (or x26813 (not x21298) x8505 (not x14322))
+:assumption (or x936 (not x5157))
+:assumption (or (not x29139) (not x9008) x29340 (not x31180) (not x5528))
+:assumption (or (not x3950) (not x6989) (not x12993) x8308 x14353)
+:assumption (or (not x20577) (not x1264))
+:assumption (or x29959 x2281 x6594 x7865 (not x4136))
+:assumption (or x23175 x27106 x9743 (not x9322))
+:assumption (or (not x4478) x7070)
+:assumption (or (not x1864) (not x14455))
+:assumption (or x26165 (not x16459))
+:assumption (or (not x2140) x25674 x16354 (not x25729) (not x1304))
+:assumption (or (not x26391) x10259)
+:assumption (or (not x12299) x26690)
+:assumption (or x28376 x8234)
+:assumption (or (not x31084) x13157)
+:assumption (or (not x9153) (not x31907))
+:assumption (or x2260 x8002)
+:assumption (or (not x19992) (not x1705))
+:assumption (or x31159 x8002)
+:assumption (or x27104 x31842 (not x20606))
+:assumption (or x29845 (not x16067))
+:assumption (or x6122 (not x13956))
+:assumption (or x23703 (not x8080) x3531 x9256 (not x6809))
+:assumption (or (not x19375) (not x6489))
+:assumption (or x30095 (not x10430))
+:assumption (or x827 x843)
+:assumption (or (not x8002) (not x25476))
+:assumption (or x1688 x30597)
+:assumption (or x10442 (not x30174) x9008)
+:assumption (or x23305 (not x25968) x27179)
+:assumption (or (not x11369) x4491)
+:assumption (or x28541 (not x7175))
+:assumption (or (not x19789) (not x31829))
+:assumption (or (not x23244) x24246)
+:assumption (or x26234 (not x8995))
+:assumption (or (not x20174) (not x23244))
+:assumption (or (not x14053) (not x23110))
+:assumption (or x15778 x16229)
+:assumption (or x28855 (not x4032))
+:assumption (or x17465 (not x17606))
+:assumption (or (not x3167) x8133)
+:assumption (or x19152 x28636 x19529 (not x19676) x8026 (not x11255))
+:assumption (or (not x27792) x28874)
+:assumption (or x27359 x20042 (not x9008) x9560 (not x5528))
+:assumption (or (not x24721) x13446)
+:assumption (or x8283 (not x16661))
+:assumption (or (not x7630) (not x20428))
+:assumption (or (not x26447) x18822)
+:assumption (or (not x10441) x11705)
+:assumption (or x169 (not x27335))
+:assumption (or x5468 (not x20270))
+:assumption (or (not x29444) x30289)
+:assumption (or (not x30515) (not x6185))
+:assumption (or (not x8287) x30179)
+:assumption (or (not x8674) (not x5731))
+:assumption (or x29011 x1411)
+:assumption (or x23568 (not x30363))
+:assumption (or x6535 x15737)
+:assumption (or x30110 x29671)
+:assumption (or x21246 x10898 (not x5730))
+:assumption (or x14222 x12522)
+:assumption (or x8658 x13752)
+:assumption (or (not x1668) x11202)
+:assumption (or x25828 (not x8979) x21862)
+:assumption (or (not x6025) x21959)
+:assumption (or (not x26887) x15633)
+:assumption (or x26613 (not x17146))
+:assumption (or x11472 (not x2131))
+:assumption (or (not x3737) x25623)
+:assumption (or x11193 x29527)
+:assumption (or (not x25473) (not x19507) (not x5574))
+:assumption (or (not x24126) (not x25264))
+:assumption (or x6438 (not x18976))
+:assumption (or (not x22699) (not x10449))
+:assumption (or x31385 x13613)
+:assumption (or (not x15117) x16344)
+:assumption (or (not x17590) (not x4181))
+:assumption (or (not x23712) (not x16308))
+:assumption (or (not x29066) x20605)
+:assumption (or (not x22386) x2191)
+:assumption (or x24347 x29376 x21776)
+:assumption (or x19569 (not x20989))
+:assumption (or x12910 (not x5888))
+:assumption (or x9527 x3001)
+:assumption (or (not x14528) x30385)
+:assumption (or x3971 (not x597))
+:assumption (or (not x29098) x26704)
+:assumption (or x25527 (not x23091))
+:assumption (or x8986 x15873)
+:assumption (or x5185 (not x28793))
+:assumption (or x24869 x18045)
+:assumption (or (not x10056) (not x7554))
+:assumption (or (not x9378) x30457)
+:assumption (or x28973 (not x21326))
+:assumption (or x14292 (not x12851))
+:assumption (or (not x9989) (not x13598))
+:assumption (or x3782 x22187)
+:assumption (or x29037 x9008 x6272)
+:assumption (or x2300 x4822)
+:assumption (or x29219 (not x30208))
+:assumption (or x15822 (not x24935))
+:assumption (or (not x9531) (not x19897))
+:assumption (or (not x7368) x15102 x23791 (not x17720) x30833 x20525)
+:assumption (or x16838 (not x30753) x24823 x24722 (not x15736))
+:assumption (or (not x369) (not x6085))
+:assumption (or x11399 (not x7124))
+:assumption (or (not x19373) x10587 (not x30219))
+:assumption (or (not x7283) x14917)
+:assumption (or (not x817) x2015)
+:assumption (or x26029 x15548 x4097)
+:assumption (or x1634 x13218)
+:assumption (or (not x31407) (not x29312))
+:assumption (or (not x2040) (not x12926))
+:assumption (or x31236 x27977)
+:assumption (or x16449 x13733 x8002 (not x22777) (not x13178) x10778)
+:assumption (or (not x30207) x20550)
+:assumption (or x31021 (not x16362))
+:assumption (or (not x9807) x2143)
+:assumption (or x2007 (not x9895))
+:assumption (or (not x4788) (not x23244))
+:assumption (or (not x3172) x3453 x23347 x6394 (not x8087))
+:assumption (or x13477 (not x28212))
+:assumption (or x12152 (not x6824))
+:assumption (or (not x29442) x11984)
+:assumption (or x22321 (not x28413))
+:assumption (or x6551 x10473 x8880 x1775)
+:assumption (or (not x17033) (not x31643))
+:assumption (or x16379 (not x7062))
+:assumption (or (not x18178) (not x21298))
+:assumption (or (not x9890) (not x13876) x13791)
+:assumption (or x6560 x23566)
+:assumption (or x31113 (not x28023))
+:assumption (or x23185 x23335 (not x8602))
+:assumption (or x31084 x9819)
+:assumption (or x22808 x24305)
+:assumption (or (not x8602) (not x11776) (not x11172))
+:assumption (or (not x9008) x18471)
+:assumption (or x1278 x19484)
+:assumption (or x30929 (not x26479))
+:assumption (or (not x12436) (not x20918))
+:assumption (or x30391 x8540)
+:assumption (or x19564 (not x29196))
+:assumption (or (not x1054) (not x25168))
+:assumption (or x9468 (not x31005))
+:assumption (or x6105 x4899 (not x25801))
+:assumption (or (not x14084) x30992)
+:assumption (or (not x4450) x19706)
+:assumption (or x10063 (not x5095))
+:assumption (or (not x28361) x4259)
+:assumption (or (not x28570) (not x23913))
+:assumption (or x30113 x31226)
+:assumption (or x2322 (not x697))
+:assumption (or (not x22848) (not x23510))
+:assumption (or x5528 x21481)
+:assumption (or (not x23244) (not x20249))
+:assumption (or (not x14839) x16445 x24237)
+:assumption (or x14430 (not x6400) (not x16374) (not x13351))
+:assumption (or (not x16003) (not x15490))
+:assumption (or x13173 x2368)
+:assumption (or (not x5562) (not x9584))
+:assumption (or (not x20076) (not x21909))
+:assumption (or x941 (not x14064))
+:assumption (or x16199 x9446)
+:assumption (or (not x2288) x11916)
+:assumption (or (not x480) (not x2981) x6227)
+:assumption (or (not x573) (not x8511))
+:assumption (or (not x24454) x15680)
+:assumption (or x5979 (not x8765))
+:assumption (or x286 x13188)
+:assumption (or x20703 (not x21298))
+:assumption (or (not x24137) x13762)
+:assumption (or x8348 x15092)
+:assumption (or x11263 x12717)
+:assumption (or x294 (not x9278))
+:assumption (or x7415 x6594 x16025)
+:assumption (or x675 (not x25566))
+:assumption (or x16971 x21516)
+:assumption (or (not x17347) (not x31560) (not x3861))
+:assumption (or x19077 x3199)
+:assumption (or x3378 (not x11372))
+:assumption (or (not x10727) x31099)
+:assumption (or (not x30508) (not x2498))
+:assumption (or x6240 (not x13780) (not x8446) (not x10383) (not x2020))
+:assumption (or x5528 x17902)
+:assumption (or x16046 x11896)
+:assumption (or x17547 x18849)
+:assumption (or x5086 x2737)
+:assumption (or x29606 x18474)
+:assumption (or (not x25252) (not x10801) (not x23085) (not x24581))
+:assumption (or (not x6673) x18805)
+:assumption (or (not x1683) x2855)
+:assumption (or (not x11279) (not x23244))
+:assumption (or (not x29785) (not x28973))
+:assumption (or x10783 x7185)
+:assumption (or x12183 x20515)
+:assumption (or (not x19868) x20670)
+:assumption (or (not x14462) x2133)
+:assumption (or (not x22937) (not x2052))
+:assumption (or (not x12585) x31838)
+:assumption (or (not x25300) (not x3654) x7173)
+:assumption (or x31034 x2554)
+:assumption (or x5556 (not x26987))
+:assumption (or (not x29771) x23213)
+:assumption (or (not x9008) x22176)
+:assumption (or (not x10322) x23667)
+:assumption (or (not x8768) x10336)
+:assumption (or (not x11346) x30224)
+:assumption (or (not x25031) (not x12813))
+:assumption (or x23093 x28450)
+:assumption (or (not x2700) (not x25407))
+:assumption (or (not x24768) x15998)
+:assumption (or (not x29954) (not x13785))
+:assumption (or (not x19425) (not x24633))
+:assumption (or x25458 x11957)
+:assumption (or (not x18841) (not x21891))
+:assumption (or x25748 x22005)
+:assumption (or x3621 (not x17648))
+:assumption (or x10544 (not x23244))
+:assumption (or (not x25331) (not x21678))
+:assumption (or (not x3715) x7632)
+:assumption (or (not x13956) (not x12570) (not x22295))
+:assumption (or x5128 x16900)
+:assumption (or x16833 x17321)
+:assumption (or x20474 (not x21298))
+:assumption (or (not x12458) x471)
+:assumption (or (not x153) (not x8145))
+:assumption (or (not x23241) x6774)
+:assumption (or x9008 (not x24981))
+:assumption (or (not x15562) (not x24201))
+:assumption (or (not x31880) x26761)
+:assumption (or x1279 x14753)
+:assumption (or x5591 (not x16053) x25563)
+:assumption (or (not x879) x10632)
+:assumption (or x14381 x7286)
+:assumption (or (not x21483) x18603)
+:assumption (or (not x8802) (not x5528))
+:assumption (or x727 x20876)
+:assumption (or x24751 x10374 x14156 x2322 (not x4784) x6045)
+:assumption (or x26958 x17116)
+:assumption (or (not x10275) x26202 (not x5528) (not x28395) x8764 (not x30587))
+:assumption (or x6658 x21371)
+:assumption (or x20626 x11375)
+:assumption (or x7248 x2939)
+:assumption (or (not x809) x15027)
+:assumption (or x1845 (not x18137))
+:assumption (or x28642 (not x206))
+:assumption (or (not x20481) (not x15096))
+:assumption (or (not x6265) x20261)
+:assumption (or (not x28068) x14409 (not x26897))
+:assumption (or (not x868) (not x17694) x5886 (not x8961))
+:assumption (or x22855 (not x16845))
+:assumption (or (not x10406) (not x10631))
+:assumption (or (not x23958) (not x28040))
+:assumption (or (not x25753) x2186)
+:assumption (or x8132 (not x19077) (not x21559) (not x3199))
+:assumption (or x6744 (not x1362))
+:assumption (or (not x26766) (not x12779))
+:assumption (or x26009 (not x30807))
+:assumption (or (not x17799) (not x11896))
+:assumption (or x6870 x18351)
+:assumption (or x12578 x6777)
+:assumption (or x8789 x5528 x805)
+:assumption (or x6024 (not x12343))
+:assumption (or (not x24059) x11374)
+:assumption (or x18427 (not x18468))
+:assumption (or (not x16409) (not x28927))
+:assumption (or x31626 x29487 (not x6969))
+:assumption (or x805 (not x9019))
+:assumption (or (not x30252) (not x24756))
+:assumption (or (not x28179) (not x11020))
+:assumption (or (not x973) x13905)
+:assumption (or x6541 x30751)
+:assumption (or x21298 x24611)
+:assumption (or (not x19445) x1004)
+:assumption (or (not x4940) x13413)
+:assumption (or (not x26327) (not x14185))
+:assumption (or (not x12177) (not x14839))
+:assumption (or x14171 x30923)
+:assumption (or x24074 (not x21653))
+:assumption (or x15452 (not x8337))
+:assumption (or (not x1393) x11725 x17465)
+:assumption (or x21474 (not x15265))
+:assumption (or x27887 x26302)
+:assumption (or x17223 x29075)
+:assumption (or (not x13243) x27717)
+:assumption (or (not x31356) (not x15846))
+:assumption (or (not x3804) x8658)
+:assumption (or (not x7845) x21521)
+:assumption (or (not x488) x9809)
+:assumption (or x30667 x13956 x17050 x8002 x23244 (not x13411))
+:assumption (or x31040 (not x3845))
+:assumption (or x13297 x20896)
+:assumption (or x11752 x27552 x4377 (not x8363))
+:assumption (or x15520 (not x2737))
+:assumption (or x7289 x1090 (not x16192))
+:assumption (or x13750 x142)
+:assumption (or x1775 (not x19683))
+:assumption (or (not x26017) x23138 x18336 x13916 x30850)
+:assumption (or (not x10949) (not x24574))
+:assumption (or (not x9391) x7307)
+:assumption (or x8866 x9423 (not x29168) x30355)
+:assumption (or (not x4059) x3539)
+:assumption (or (not x20706) x30023)
+:assumption (or (not x22606) (not x387))
+:assumption (or x30235 (not x15806))
+:assumption (or x20019 (not x18747))
+:assumption (or x7109 x13079 (not x23431))
+:assumption (or (not x14938) (not x22243))
+:assumption (or (not x480) (not x9233))
+:assumption (or x23702 (not x2001))
+:assumption (or (not x8392) (not x6742))
+:assumption (or (not x4633) x17545)
+:assumption (or x4451 x1928)
+:assumption (or (not x16409) (not x22747))
+:assumption (or (not x7792) (not x4815))
+:assumption (or (not x17227) (not x31370))
+:assumption (or (not x3151) (not x30622))
+:assumption (or x25997 x23756)
+:assumption (or (not x12072) (not x27617))
+:assumption (or (not x16741) x15580)
+:assumption (or (not x27711) (not x18391) (not x16133) (not x21554) (not x24174))
+:assumption (or x31607 (not x6033))
+:assumption (or (not x25233) x21815)
+:assumption (or (not x8095) x23455)
+:assumption (or (not x11797) (not x5790))
+:assumption (or (not x27672) (not x29333))
+:assumption (or x8875 x26598)
+:assumption (or (not x3819) (not x23617))
+:assumption (or x8866 x31254 (not x13243) (not x9423))
+:assumption (or x6444 x10526)
+:assumption (or (not x14332) x28885 (not x27949))
+:assumption (or x19239 (not x31083))
+:assumption (or x31875 x17075 x25468)
+:assumption (or (not x24883) (not x9661))
+:assumption (or x17708 x964)
+:assumption (or (not x13013) x17283)
+:assumption (or x29727 (not x27376))
+:assumption (or (not x9979) (not x2258))
+:assumption (or (not x18859) (not x31404))
+:assumption (or x21860 x1877 x30908 (not x19380))
+:assumption (or (not x20978) (not x6198) (not x6160) (not x27723) x24605 x7200 x14141)
+:assumption (or (not x30686) (not x1110))
+:assumption (or x27911 (not x16736))
+:assumption (or x29614 x23759)
+:assumption (or (not x22272) (not x9779))
+:assumption (or x27128 (not x22598))
+:assumption (or x20797 x15372)
+:assumption (or (not x22022) (not x5875))
+:assumption (or (not x5568) (not x27895) x11698 x20401 (not x21701))
+:assumption (or x19026 x31617)
+:assumption (or (not x13586) (not x21647))
+:assumption (or x9882 x21311)
+:assumption (or (not x8043) x23031)
+:assumption (or (not x2183) x9031)
+:assumption (or (not x27583) (not x7741) (not x27228) (not x4094))
+:assumption (or x4320 (not x1275))
+:assumption (or x30608 x29098)
+:assumption (or x30923 (not x27535))
+:assumption (or (not x10378) x24464)
+:assumption (or x16539 x22088)
+:assumption (or x25332 x13434 x24155 (not x27911) (not x26354))
+:assumption (or (not x30452) (not x4051))
+:assumption (or x10244 (not x29204))
+:assumption (or (not x22588) x9804)
+:assumption (or x6786 (not x26922))
+:assumption (or x18117 (not x22138))
+:assumption (or x31046 (not x17757))
+:assumption (or x2783 (not x17026))
+:assumption (or (not x1503) (not x29902) (not x13528))
+:assumption (or x18326 (not x3969))
+:assumption (or x7296 x17183)
+:assumption (or (not x16266) x16025 x26980)
+:assumption (or (not x6089) (not x8002))
+:assumption (or x7460 (not x21688))
+:assumption (or x29260 x15872)
+:assumption (or (not x22609) (not x4301))
+:assumption (or (not x379) x29723)
+:assumption (or (not x12171) (not x19096) x9531 (not x13576) x14552)
+:assumption (or x3678 x29959)
+:assumption (or (not x6529) x7346)
+:assumption (or x22449 x2492)
+:assumption (or x4560 (not x29032))
+:assumption (or x22768 (not x23868))
+:assumption (or x13713 (not x18687) x23244 (not x7234) x28480)
+:assumption (or x27289 x2297)
+:assumption (or x4504 (not x28756))
+:assumption (or (not x640) (not x9587))
+:assumption (or x11335 x6691)
+:assumption (or x5154 (not x3738) (not x23887) x1621)
+:assumption (or x21400 (not x18938) x22495 (not x4180))
+:assumption (or (not x10452) (not x14298))
+:assumption (or x23446 x14455 x3356)
+:assumption (or x19491 (not x25182))
+:assumption (or x7688 (not x27454))
+:assumption (or (not x20401) x5568)
+:assumption (or x23986 x28288)
+:assumption (or (not x20524) (not x9647))
+:assumption (or (not x10609) x22011 x30855 x17448 x17689 x22186 (not x3277) (not x29727))
+:assumption (or x16545 x19273)
+:assumption (or (not x13749) x11383)
+:assumption (or (not x31770) x67)
+:assumption (or (not x25102) (not x25641))
+:assumption (or x9162 x26529)
+:assumption (or (not x30475) x14053 x23110 x23386 x14814)
+:assumption (or x13747 (not x9873))
+:assumption (or x31108 x25639)
+:assumption (or x9329 x28617)
+:assumption (or x26781 (not x14143))
+:assumption (or x27895 x26512)
+:assumption (or x23333 (not x1820))
+:assumption (or x4001 x2762 x23244)
+:assumption (or (not x26841) (not x4054))
+:assumption (or (not x27751) x27147)
+:assumption (or (not x7161) (not x14673))
+:assumption (or x2436 x21502 x13956)
+:assumption (or (not x22259) (not x836))
+:assumption (or x26988 x4678)
+:assumption (or x15211 x18722)
+:assumption (or (not x28568) x1547)
+:assumption (or (not x3245) x20084 (not x1841) (not x15988) x6484)
+:assumption (or x16510 x10493)
+:assumption (or (not x11289) (not x25770) x2526)
+:assumption (or x17922 (not x29792))
+:assumption (or x11566 (not x3302))
+:assumption (or (not x4560) x18909)
+:assumption (or (not x25339) (not x1676))
+:assumption (or x19243 (not x15217))
+:assumption (or (not x4546) x27186)
+:assumption (or (not x13961) (not x26644))
+:assumption (or (not x26999) (not x14836))
+:assumption (or (not x8400) x31559)
+:assumption (or (not x29442) x2007)
+:assumption (or (not x27825) (not x20782))
+:assumption (or x13487 x19763)
+:assumption (or x8609 (not x1034))
+:assumption (or (not x31328) x27655)
+:assumption (or x7220 (not x14701))
+:assumption (or x29402 x263)
+:assumption (or (not x3189) (not x7484))
+:assumption (or (not x21154) x31085)
+:assumption (or x22925 x2134)
+:assumption (or (not x4026) (not x3196))
+:assumption (or (not x13809) x17017)
+:assumption (or x27012 (not x29270))
+:assumption (or (not x1220) x22231)
+:assumption (or x27902 x2833)
+:assumption (or (not x16745) (not x13444) x29366)
+:assumption (or (not x28396) (not x17847) x24629 x22408 (not x30641))
+:assumption (or x21502 (not x13140))
+:assumption (or (not x31112) x12211)
+:assumption (or (not x29224) (not x2040))
+:assumption (or x14077 (not x4595))
+:assumption (or (not x10675) x6049)
+:assumption (or (not x19711) x19950)
+:assumption (or x6291 (not x19416))
+:assumption (or x1437 x3277)
+:assumption (or x5502 x22855)
+:assumption (or (not x30049) (not x21026))
+:assumption (or x23178 x2197)
+:assumption (or x1635 (not x22548))
+:assumption (or x23040 x9008)
+:assumption (or (not x12317) x25611)
+:assumption (or (not x14839) x17502)
+:assumption (or (not x12350) (not x4621))
+:assumption (or (not x5643) (not x2246) x22855)
+:assumption (or (not x15237) (not x17065) (not x12433) (not x22383) (not x22368) x14484)
+:assumption (or x12799 (not x17818))
+:assumption (or (not x8050) (not x31767))
+:assumption (or (not x7159) (not x22642) x23279)
+:assumption (or (not x18293) x23662)
+:assumption (or x4511 x21471)
+:assumption (or x5332 (not x23873))
+:assumption (or x3891 x29867)
+:assumption (or (not x4154) x24756)
+:assumption (or x10262 x6742)
+:assumption (or x23244 x16609)
+:assumption (or x9461 (not x22605))
+:assumption (or x12792 (not x15124))
+:assumption (or x24748 (not x2771))
+:assumption (or (not x6053) (not x24553))
+:assumption (or x4520 (not x10486) x30033 (not x16654) (not x12837) (not x15158))
+:assumption (or (not x14008) x24144)
+:assumption (or x2240 x30124 x16409 (not x7044))
+:assumption (or (not x12241) (not x31583))
+:assumption (or x24180 x6772)
+:assumption (or (not x4677) (not x23244))
+:assumption (or (not x5706) (not x16510))
+:assumption (or (not x9531) x24221 (not x13615))
+:assumption (or (not x24108) (not x3131) (not x17813))
+:assumption (or (not x12094) x22342)
+:assumption (or (not x30060) (not x14053))
+:assumption (or x30222 x21857)
+:assumption (or (not x31574) x12390)
+:assumption (or x10896 (not x17041))
+:assumption (or (not x15977) (not x21576))
+:assumption (or x20766 x5810 (not x26590) x29409)
+:assumption (or (not x11597) x19892)
+:assumption (or (not x19353) (not x5884) (not x9327) x11693 (not x10122))
+:assumption (or (not x8532) x6493)
+:assumption (or (not x18579) (not x15336))
+:assumption (or x6307 (not x26790) x31168)
+:assumption (or (not x5528) (not x18623) (not x10060) x18405 (not x9008))
+:assumption (or (not x16544) x176 (not x18960) (not x5332) (not x4190))
+:assumption (or x17230 (not x8002))
+:assumption (or (not x7057) (not x24185) x25659)
+:assumption (or x28379 (not x334))
+:assumption (or (not x15085) (not x2359))
+:assumption (or (not x11943) (not x4560))
+:assumption (or x17075 (not x28808))
+:assumption (or (not x6463) (not x23244))
+:assumption (or (not x12208) (not x14696))
+:assumption (or x31025 (not x7315) (not x21546) x17302)
+:assumption (or (not x10145) x91)
+:assumption (or (not x5528) x24981 x21502 x16426 (not x9008))
+:assumption (or x28321 (not x6323))
+:assumption (or x3007 (not x13487))
+:assumption (or x30820 (not x4050))
+:assumption (or (not x12625) x7296)
+:assumption (or (not x1725) (not x30335))
+:assumption (or x3611 x6937)
+:assumption (or (not x27397) x15866)
+:assumption (or x1788 x21356)
+:assumption (or (not x20394) (not x21298))
+:assumption (or x11281 x27403)
+:assumption (or (not x20250) x29999)
+:assumption (or (not x18450) x1961)
+:assumption (or x23374 x2621 (not x19864))
+:assumption (or (not x1796) (not x22819))
+:assumption (or (not x29085) (not x5596))
+:assumption (or (not x1062) (not x6798))
+:assumption (or (not x9009) (not x21676) (not x18919) (not x28912) (not x3194))
+:assumption (or (not x8352) (not x13324))
+:assumption (or x26291 x30290 x16907)
+:assumption (or x5507 x801)
+:assumption (or x3884 x28483)
+:assumption (or (not x27850) x25589 x30485 x25471 (not x2563))
+:assumption (or x10128 x22847 x22909 x9339 x54 (not x13704) x18424 x17322 x29200)
+:assumption (or (not x24992) (not x22442))
+:assumption (or x2133 x9377)
+:assumption (or (not x9008) (not x1019) x12727)
+:assumption (or x21202 (not x5356))
+:assumption (or x28508 x812)
+:assumption (or (not x15050) (not x23244))
+:assumption (or x14455 (not x4872))
+:assumption (or (not x29118) x20693)
+:assumption (or x12441 (not x14094))
+:assumption (or x28089 x11355)
+:assumption (or (not x21374) x31503)
+:assumption (or (not x26432) x26099 (not x8385))
+:assumption (or (not x26972) x14716)
+:assumption (or (not x9295) x222)
+:assumption (or x2374 (not x8229))
+:assumption (or x8513 (not x12233))
+:assumption (or x11702 x27180)
+:assumption (or x5349 (not x30697))
+:assumption (or (not x12245) (not x22775) x16304 (not x29344) (not x12591))
+:assumption (or x21581 x20128)
+:assumption (or (not x26566) x23548)
+:assumption (or x21952 (not x8602) (not x20776))
+:assumption (or (not x11281) (not x647))
+:assumption (or (not x1166) (not x27126))
+:assumption (or x18858 (not x11967))
+:assumption (or x29778 x12053)
+:assumption (or (not x8002) x9539)
+:assumption (or (not x2030) (not x19662))
+:assumption (or (not x15933) (not x16426))
+:assumption (or x1463 x10560)
+:assumption (or (not x9897) (not x28901))
+:assumption (or (not x7966) (not x20329))
+:assumption (or (not x26512) x4263)
+:assumption (or x30576 (not x23244) (not x30097))
+:assumption (or (not x8602) (not x9326) (not x5870))
+:assumption (or x9932 x11234 (not x7578) (not x20119) x21201)
+:assumption (or x2012 x12834)
+:assumption (or x1384 x25227)
+:assumption (or (not x8357) (not x18989) x28980 x19410 x28184 (not x4522))
+:assumption (or (not x9531) (not x25307))
+:assumption (or (not x23358) (not x4335))
+:assumption (or x27273 (not x28131))
+:assumption (or (not x5550) x10849)
+:assumption (or x27277 (not x30198))
+:assumption (or x11857 (not x29119))
+:assumption (or (not x8076) (not x28785) x31669)
+:assumption (or x6210 (not x4952))
+:assumption (or x3766 (not x30138))
+:assumption (or x26533 x28822)
+:assumption (or (not x20209) x12949)
+:assumption (or x8363 (not x14587))
+:assumption (or x11879 (not x775) (not x10529) x29879)
+:assumption (or x7218 (not x24630))
+:assumption (or (not x22210) x848)
+:assumption (or (not x31627) x4120)
+:assumption (or x21815 x19805)
+:assumption (or x28973 x22951)
+:assumption (or (not x17576) (not x26495))
+:assumption (or x21653 (not x5681))
+:assumption (or x10914 x9032)
+:assumption (or (not x22749) (not x5022))
+:assumption (or x31489 (not x8913))
+:assumption (or x10699 (not x31890))
+:assumption (or (not x12611) (not x25935))
+:assumption (or (not x22855) (not x6386))
+:assumption (or (not x18729) (not x18519) (not x25959) (not x7393))
+:assumption (or x8075 (not x8002))
+:assumption (or x13457 x6347)
+:assumption (or x21298 (not x483) x29772 (not x1578))
+:assumption (or x13215 x13661 (not x5427) x19428 (not x10213))
+:assumption (or x81 x30126)
+:assumption (or x12127 x30138 x27426)
+:assumption (or x16039 (not x1647))
+:assumption (or (not x30224) x21298 (not x3056) x23314)
+:assumption (or (not x2500) x3762)
+:assumption (or (not x5728) (not x17215) x16117 (not x3067) x7107)
+:assumption (or x7076 x28173)
+:assumption (or x7819 x23674)
+:assumption (or (not x16410) x1628)
+:assumption (or x13975 x10387)
+:assumption (or (not x25222) (not x18211))
+:assumption (or (not x4669) x8144)
+:assumption (or x17510 (not x3435) (not x14455))
+:assumption (or x31829 x29099)
+:assumption (or x23836 (not x2570))
+:assumption (or x30686 (not x17518) (not x9319) (not x23623) x21048)
+:assumption (or x14366 x15189 (not x30407))
+:assumption (or (not x24078) x8083)
+:assumption (or x21931 x1366 (not x20519) x14216 x18353 (not x23244))
+:assumption (or (not x5723) x12317)
+:assumption (or (not x11624) (not x8002))
+:assumption (or (not x16481) x1393 x13582)
+:assumption (or x16648 (not x5180))
+:assumption (or x14363 x16741)
+:assumption (or (not x265) (not x18179))
+:assumption (or (not x25376) x24882 (not x1680))
+:assumption (or (not x11270) (not x15922))
+:assumption (or x6988 x18697)
+:assumption (or x29338 (not x3494) (not x12514))
+:assumption (or (not x23157) x1336)
+:assumption (or x3475 (not x25120))
+:assumption (or x7396 (not x13956))
+:assumption (or x19992 (not x15799) x25659 x4770 (not x17534))
+:assumption (or x8902 (not x7279))
+:assumption (or (not x4059) (not x14261))
+:assumption (or x18916 (not x30079))
+:assumption (or (not x21558) x1393 (not x1656))
+:assumption (or (not x20768) (not x11302))
+:assumption (or x13086 x139 x19860 x15396 x13068)
+:assumption (or x26332 x2841)
+:assumption (or x20515 x11921)
+:assumption (or x1152 x25273)
+:assumption (or x6957 (not x23612))
+:assumption (or (not x24228) (not x7192))
+:assumption (or x17194 (not x16140))
+:assumption (or x26643 x5004)
+:assumption (or x22394 (not x5177))
+:assumption (or x3078 (not x26316))
+:assumption (or (not x15795) x27392)
+:assumption (or x21815 x10493)
+:assumption (or (not x10391) (not x27446))
+:assumption (or (not x11695) (not x3544))
+:assumption (or (not x21283) x5927 x218)
+:assumption (or (not x6547) x1755)
+:assumption (or (not x10794) (not x20524))
+:assumption (or x519 x24302)
+:assumption (or (not x22383) x4193)
+:assumption (or (not x24454) x8929)
+:assumption (or x25423 (not x8422))
+:assumption (or x23244 (not x16208))
+:assumption (or (not x15047) x17225)
+:assumption (or x1393 (not x14014) x24187)
+:assumption (or (not x18625) x22380)
+:assumption (or x23553 x15143)
+:assumption (or (not x29442) (not x8574) x26607 (not x3782))
+:assumption (or x20680 (not x9895))
+:assumption (or (not x3294) x14839)
+:assumption (or x26138 x2549)
+:assumption (or (not x4082) x22772)
+:assumption (or (not x31017) x16266 x21653)
+:assumption (or x20007 x4274)
+:assumption (or (not x11952) (not x4192) (not x25697) (not x26897) x8379)
+:assumption (or x5830 (not x26405))
+:assumption (or x11454 (not x5114))
+:assumption (or (not x5750) x20357)
+:assumption (or x16936 (not x22882))
+:assumption (or x21442 x22163)
+:assumption (or x11534 (not x31612) x23543 x27825 x5723 x20782 x25611 x3234 x11029)
+:assumption (or x11519 (not x6222))
+:assumption (or (not x17124) (not x13710) (not x21298))
+:assumption (or x22804 x27948)
+:assumption (or x30457 (not x19744))
+:assumption (or (not x23195) (not x25659) x11869)
+:assumption (or (not x8569) (not x3897))
+:assumption (or x27022 x46 (not x4676))
+:assumption (or x25325 (not x17075))
+:assumption (or (not x26550) x24722)
+:assumption (or (not x14117) (not x10425))
+:assumption (or (not x13936) x4566)
+:assumption (or x27039 x21883)
+:assumption (or x16433 (not x24554) (not x16202))
+:assumption (or (not x21829) x15621 x27749 x17049)
+:assumption (or x1450 (not x24441))
+:assumption (or x29305 (not x22741))
+:assumption (or x4907 x29265)
+:assumption (or x23818 x25784)
+:assumption (or (not x17336) x15563)
+:assumption (or (not x8002) x3599)
+:assumption (or x873 (not x10064) x15917 (not x30896))
+:assumption (or x6307 x7964 (not x10874) x20419 x7730 (not x14837))
+:assumption (or x3829 (not x28457))
+:assumption (or x1841 x21597)
+:assumption (or x8772 (not x29466))
+:assumption (or x480 (not x15284) x13636 x1434)
+:assumption (or (not x7131) (not x16834) x7087 x11543 (not x14477) (not x827) x21102 (not x23630))
+:assumption (or (not x584) x18594)
+:assumption (or x19745 x1995)
+:assumption (or x21080 (not x5286))
+:assumption (or x25099 (not x11096))
+:assumption (or (not x10391) x2582)
+:assumption (or (not x13408) (not x13864) (not x24720))
+:assumption (or x15485 (not x21207))
+:assumption (or x21069 (not x20557))
+:assumption (or (not x26442) (not x6167))
+:assumption (or (not x13042) x827)
+:assumption (or x3631 (not x28169) x17450 (not x25547) x7503 x16907 (not x5086) x17305 x31769)
+:assumption (or x28133 x10536)
+:assumption (or x10103 (not x25144))
+:assumption (or x13989 x25605)
+:assumption (or x31679 (not x2341))
+:assumption (or x15520 (not x19788))
+:assumption (or (not x25363) (not x16802))
+:assumption (or (not x23461) x27354)
+:assumption (or x15355 x1678 x28070 x9392)
+:assumption (or x9930 x31684)
+:assumption (or (not x11052) (not x27987))
+:assumption (or (not x7376) (not x15625))
+:assumption (or x21414 x137)
+:assumption (or x1472 x30495)
+:assumption (or (not x11350) x16979 (not x21026))
+:assumption (or x15382 x27564 x18584 x15906 x19463 (not x18047))
+:assumption (or (not x3540) x27201)
+:assumption (or (not x9557) x29960)
+:assumption (or (not x6386) (not x142))
+:assumption (or (not x17855) x29927)
+:assumption (or x11263 (not x30486))
+:assumption (or x12658 x9293)
+:assumption (or x27886 x1680)
+:assumption (or x13154 x15561 x31864 x4975 x14863 x28857 x11367 x30500)
+:assumption (or (not x16745) (not x26136) (not x25110) (not x31583))
+:assumption (or x29442 x864)
+:assumption (or x23083 (not x30593))
+:assumption (or x23547 (not x24968))
+:assumption (or x4531 (not x4259))
+:assumption (or (not x10201) x19490)
+:assumption (or x831 (not x17747))
+:assumption (or (not x6014) (not x15142))
+:assumption (or (not x9693) (not x11244) (not x12871) x11194 x1525)
+:assumption (or x252 (not x21722))
+:assumption (or (not x30144) x20325)
+:assumption (or (not x6300) (not x4110))
+:assumption (or x24002 x18997)
+:assumption (or (not x19703) x8412)
+:assumption (or x17855 x29635)
+:assumption (or (not x4924) (not x26007))
+:assumption (or x17062 (not x4000))
+:assumption (or x10689 x21653)
+:assumption (or (not x5302) x22636)
+:assumption (or (not x827) (not x23650))
+:assumption (or (not x28419) x6594)
+:assumption (or x14847 (not x31717))
+:assumption (or x13956 x17816)
+:assumption (or x5396 x30599)
+:assumption (or x31644 x18780)
+:assumption (or (not x15395) (not x26887))
+:assumption (or (not x6458) x6413)
+:assumption (or x827 (not x25136))
+:assumption (or (not x21712) (not x10334))
+:assumption (or (not x2463) x9343)
+:assumption (or x14916 x8840)
+:assumption (or x15891 (not x26666))
+:assumption (or x8002 x16023 x23244 x4384)
+:assumption (or x24787 (not x15818))
+:assumption (or (not x20699) x29464 x27852)
+:assumption (or (not x9703) (not x10474) x28633 (not x799) (not x29593))
+:assumption (or x11268 (not x13452))
+:assumption (or x21816 (not x18537))
+:assumption (or (not x27468) x10505)
+:assumption (or (not x16665) (not x5319))
+:assumption (or (not x18880) (not x14368))
+:assumption (or x1671 x23369)
+:assumption (or (not x26458) x25496)
+:assumption (or (not x20998) (not x17180))
+:assumption (or (not x18787) x2430)
+:assumption (or (not x30169) (not x22043))
+:assumption (or (not x8378) x13963)
+:assumption (or x7410 (not x30729))
+:assumption (or x6746 x24188)
+:assumption (or x26431 (not x22051))
+:assumption (or x19595 (not x17184))
+:assumption (or (not x13833) x4674)
+:assumption (or x21415 (not x7621) (not x22139) (not x21198) (not x31120) (not x7936) (not x24408) (not x8214) (not x9531))
+:assumption (or (not x13871) (not x21941))
+:assumption (or (not x18675) x10990)
+:assumption (or x22862 (not x28901))
+:assumption (or (not x23825) x4659)
+:assumption (or x3673 (not x29896))
+:assumption (or x9469 (not x4303))
+:assumption (or (not x15434) (not x6411))
+:assumption (or x12005 x6011)
+:assumption (or (not x19038) x8451)
+:assumption (or (not x15939) (not x28428))
+:assumption (or (not x28840) x3128)
+:assumption (or x18483 (not x8371))
+:assumption (or x15991 (not x2285))
+:assumption (or (not x16492) x11725)
+:assumption (or x28685 x18763)
+:assumption (or (not x16023) (not x4384))
+:assumption (or (not x27762) (not x25659) x16790)
+:assumption (or (not x17433) (not x13188) (not x16784))
+:assumption (or x10116 (not x8223) x22416)
+:assumption (or (not x30555) (not x2654))
+:assumption (or (not x10336) (not x8454) (not x17908) x14838 (not x25376))
+:assumption (or x13946 (not x9008) x30432 (not x5528) x17016)
+:assumption (or x20559 (not x19632))
+:assumption (or x18721 (not x11746))
+:assumption (or x1685 (not x12387))
+:assumption (or (not x29667) (not x15823))
+:assumption (or (not x29076) x6456)
+:assumption (or (not x23801) (not x24278))
+:assumption (or x1844 (not x31692))
+:assumption (or x6797 x24065)
+:assumption (or (not x3458) x2585)
+:assumption (or x11825 (not x552) x29370 (not x31681))
+:assumption (or x29315 (not x18038))
+:assumption (or x12567 (not x2779))
+:assumption (or x2754 (not x31924))
+:assumption (or (not x18664) x16741 (not x16510) (not x21815) (not x28242))
+:assumption (or (not x31200) (not x24922))
+:assumption (or (not x9934) x12264 x15846 (not x1789))
+:assumption (or (not x875) (not x30125))
+:assumption (or x27311 (not x23005) (not x7067) (not x5528) (not x30678) x13108)
+:assumption (or (not x16071) x3330)
+:assumption (or (not x19105) x7828 x18915 (not x29092) x26434 (not x5886))
+:assumption (or (not x7854) x30537 x2067)
+:assumption (or x10834 x3282)
+:assumption (or x13576 x11792 x9823)
+:assumption (or x25409 x27743)
+:assumption (or x17093 x1290)
+:assumption (or (not x13960) (not x23012))
+:assumption (or (not x6484) x1841)
+:assumption (or (not x21302) x10733)
+:assumption (or (not x24930) x18824)
+:assumption (or (not x7222) (not x984))
+:assumption (or x4319 (not x8953))
+:assumption (or (not x9297) (not x27295))
+:assumption (or (not x9813) (not x30573))
+:assumption (or (not x24080) (not x5329))
+:assumption (or (not x31030) (not x17067) (not x20832) (not x17254))
+:assumption (or x4465 x863)
+:assumption (or (not x23417) x20553 x7177)
+:assumption (or x19731 (not x290))
+:assumption (or x26204 (not x2383))
+:assumption (or x23161 (not x8918) (not x24012) x8120)
+:assumption (or (not x24655) (not x14464))
+:assumption (or (not x31814) (not x16510) x16374 (not x21815) (not x31134))
+:assumption (or (not x21568) (not x2382) x4451 (not x11399) x10730 x14510)
+:assumption (or (not x4919) (not x27502))
+:assumption (or x26592 x7802)
+:assumption (or x25804 x31228)
+:assumption (or (not x18556) x25194 x18476 x3169 (not x1875) (not x22666))
+:assumption (or x13143 x16043)
+:assumption (or (not x13956) (not x20934) (not x19462) (not x23244))
+:assumption (or x23233 (not x19864) (not x2529))
+:assumption (or (not x6585) x14087)
+:assumption (or x9809 (not x28850))
+:assumption (or x1554 x12298)
+:assumption (or (not x28478) (not x19477))
+:assumption (or x23089 x1817)
+:assumption (or (not x20680) x8002)
+:assumption (or x4086 (not x4206))
+:assumption (or (not x26432) (not x22432))
+:assumption (or x3001 (not x3504))
+:assumption (or x25434 x26505)
+:assumption (or (not x15739) (not x28574))
+:assumption (or x28314 (not x16969))
+:assumption (or x25517 (not x2133))
+:assumption (or (not x12570) (not x28928))
+:assumption (or x22304 x14839 x24056 (not x11845))
+:assumption (or (not x14475) x9211)
+:assumption (or x30711 (not x16951))
+:assumption (or x17479 (not x25798) x19286 (not x20820) (not x18133) (not x6923) x8935 x29312)
+:assumption (or x9610 (not x248))
+:assumption (or x16275 x11458 x25678 (not x17036))
+:assumption (or (not x30138) (not x31236) x15928)
+:assumption (or (not x6589) (not x25596))
+:assumption (or (not x27303) x26802)
+:assumption (or (not x3791) (not x2135))
+:assumption (or x22090 x26739)
+:assumption (or x4013 x9987)
+:assumption (or x7320 x31501)
+:assumption (or x27962 (not x13576))
+:assumption (or (not x1192) x8510)
+:assumption (or (not x17024) x5798)
+:assumption (or (not x3992) (not x16135))
+:assumption (or x24616 (not x17722))
+:assumption (or x417 x20992)
+:assumption (or (not x30321) (not x4857))
+:assumption (or (not x31923) x21923)
+:assumption (or x5694 x12850 x11506)
+:assumption (or x2297 x11466)
+:assumption (or x19064 (not x6365))
+:assumption (or (not x14591) (not x3477))
+:assumption (or x16654 x12302)
+:assumption (or x12518 (not x27556))
+:assumption (or (not x12231) x26686)
+:assumption (or (not x25490) (not x22803) x7232 x27304)
+:assumption (or x22545 (not x31899))
+:assumption (or (not x280) x6775)
+:assumption (or x19892 (not x21375))
+:assumption (or (not x2268) x28217)
+:assumption (or x31115 x23214)
+:assumption (or x12459 x9371)
+:assumption (or x7654 x516)
+:assumption (or (not x6967) (not x488))
+:assumption (or (not x2664) (not x13483))
+:assumption (or (not x3001) (not x19867))
+:assumption (or x29550 x9380)
+:assumption (or x16510 x3250)
+:assumption (or (not x1840) (not x23980))
+:assumption (or x4649 (not x1017))
+:assumption (or x22382 x805 x13956)
+:assumption (or (not x17636) x26578)
+:assumption (or x2581 x2002 x686 (not x30062) x17806 (not x26309) (not x24199) x5867 x14732)
+:assumption (or (not x4259) x12795)
+:assumption (or (not x7748) x10891)
+:assumption (or x25586 x4960)
+:assumption (or (not x12269) x8373)
+:assumption (or x12190 x16839)
+:assumption (or x4820 x2331)
+:assumption (or (not x3039) (not x19692))
+:assumption (or (not x10565) x28753)
+:assumption (or x7537 (not x23631))
+:assumption (or x2140 (not x26716))
+:assumption (or (not x6255) x13875)
+:assumption (or x3806 x9560)
+:assumption (or x22615 (not x12998))
+:assumption (or x15431 x1901 x11374)
+:assumption (or (not x14379) (not x1979))
+:assumption (or x7145 (not x4797))
+:assumption (or x5028 x11474)
+:assumption (or x19410 (not x9805))
+:assumption (or x31327 (not x5135))
+:assumption (or x7440 x1573)
+:assumption (or x28973 x18353 x21931 x14216 x30810 x1366)
+:assumption (or x2599 (not x28280))
+:assumption (or x2423 (not x6611))
+:assumption (or (not x28249) x23244 (not x18685))
+:assumption (or x3555 x30075 (not x8649) x13466)
+:assumption (or (not x15987) x30890)
+:assumption (or (not x1164) (not x22877))
+:assumption (or x8679 x27651)
+:assumption (or (not x20313) x16769)
+:assumption (or x5075 x28364)
+:assumption (or x6430 x30578)
+:assumption (or x24968 x23409)
+:assumption (or (not x1462) x14053)
+:assumption (or x21578 x11106)
+:assumption (or x18838 (not x21546))
+:assumption (or (not x28320) x13576)
+:assumption (or (not x30646) x14839 (not x6057))
+:assumption (or (not x21815) x21819)
+:assumption (or (not x14839) x26438)
+:assumption (or x18199 x20065 x1991)
+:assumption (or x18974 (not x17417))
+:assumption (or x3806 x26455)
+:assumption (or x21997 x8574)
+:assumption (or (not x9312) (not x15234))
+:assumption (or (not x28070) (not x1678))
+:assumption (or (not x9162) (not x5172))
+:assumption (or x29901 (not x23650))
+:assumption (or (not x12197) (not x22587))
+:assumption (or (not x14591) (not x17412))
+:assumption (or (not x12388) (not x25047))
+:assumption (or x8652 (not x13305) x6149)
+:assumption (or (not x20376) (not x28831) x14696)
+:assumption (or (not x26943) (not x1519))
+:assumption (or (not x1759) (not x10450))
+:assumption (or x1605 x4801)
+:assumption (or x25548 (not x29329))
+:assumption (or x8002 (not x28109) x11960 x5328 (not x14207) x26011)
+:assumption (or x16003 x15414)
+:assumption (or x21652 x6302 x1505 x18601 x9224)
+:assumption (or x25861 x14852)
+:assumption (or x9491 (not x26905))
+:assumption (or x4252 (not x21639))
+:assumption (or x23865 (not x10589))
+:assumption (or x1920 x22785)
+:assumption (or x4550 x22662)
+:assumption (or (not x2150) (not x9049))
+:assumption (or x12545 x30230)
+:assumption (or (not x18042) (not x11545))
+:assumption (or x22752 x5537 x13899 x21188 x13549 (not x446) (not x21509))
+:assumption (or x24757 x16784 x27998 x20693 x319 (not x252) (not x18810) x10604)
+:assumption (or (not x23338) x18859 x12288)
+:assumption (or x733 x20453)
+:assumption (or (not x27225) (not x17608) (not x15836))
+:assumption (or (not x13055) (not x19502))
+:assumption (or x2832 (not x20620) x24009 (not x22978))
+:assumption (or x26529 x3409)
+:assumption (or (not x289) (not x2529) x19864)
+:assumption (or x8614 (not x1344))
+:assumption (or (not x21298) (not x25850) x15825)
+:assumption (or x13337 x25163)
+:assumption (or (not x6350) (not x10412))
+:assumption (or x29486 (not x8719))
+:assumption (or (not x26855) (not x13809))
+:assumption (or (not x10182) (not x31616) x20391)
+:assumption (or x12858 (not x6973))
+:assumption (or x25882 x12756)
+:assumption (or x24179 (not x29702))
+:assumption (or x29384 x25835)
+:assumption (or (not x11582) x30706)
+:assumption (or (not x480) x4636 x1333)
+:assumption (or x5321 (not x5837))
+:assumption (or (not x17748) (not x27220))
+:assumption (or (not x7346) x31297)
+:assumption (or (not x22929) x5423)
+:assumption (or (not x17613) x9397)
+:assumption (or (not x1473) x24722)
+:assumption (or x8728 (not x5735))
+:assumption (or x8751 (not x18793) (not x24753) (not x18921) x2265 (not x14359) x1760 (not x14379))
+:assumption (or x27437 x18699)
+:assumption (or x29330 x4347)
+:assumption (or x23530 x13050)
+:assumption (or x10967 (not x16025) (not x26430))
+:assumption (or x16730 x18694)
+:assumption (or x28821 (not x8668))
+:assumption (or x26080 x18228 (not x13176) x20351 (not x16253))
+:assumption (or (not x14095) x25366 (not x17667))
+:assumption (or x31056 (not x11779))
+:assumption (or (not x5980) x15542)
+:assumption (or x14376 x21517)
+:assumption (or (not x18003) x16313)
+:assumption (or (not x10179) (not x19087))
+:assumption (or (not x11377) (not x19984) x30026)
+:assumption (or x31597 x21494)
+:assumption (or x29362 x30768)
+:assumption (or (not x25659) x3314 (not x16348))
+:assumption (or (not x22233) x3401)
+:assumption (or x18999 x9787)
+:assumption (or (not x23323) (not x20983))
+:assumption (or (not x23244) x21037)
+:assumption (or (not x1542) (not x28789))
+:assumption (or (not x13285) (not x9853))
+:assumption (or x15022 (not x2257))
+:assumption (or (not x10490) x22209)
+:assumption (or x13635 x31448)
+:assumption (or x26978 (not x11942))
+:assumption (or x7427 x16025)
+:assumption (or x16235 (not x28295))
+:assumption (or x27390 x29312)
+:assumption (or (not x6276) (not x9094))
+:assumption (or x27484 x19207)
+:assumption (or (not x15294) (not x507))
+:assumption (or (not x24712) (not x30357))
+:assumption (or (not x25659) (not x30552))
+:assumption (or (not x13981) x7964)
+:assumption (or x777 (not x8049))
+:assumption (or (not x22087) (not x16403))
+:assumption (or x12880 (not x18116))
+:assumption (or (not x23633) (not x20174))
+:assumption (or (not x9552) x14455)
+:assumption (or (not x16167) x3712)
+:assumption (or (not x30295) x5316)
+:assumption (or (not x24766) (not x9008))
+:assumption (or x5425 x912)
+:assumption (or (not x6668) x7918)
+:assumption (or (not x30145) (not x13629))
+:assumption (or x31029 x10965)
+:assumption (or (not x3772) (not x23786))
+:assumption (or x4946 x28364)
+:assumption (or (not x19378) (not x31331) x27383 (not x23009) x29020 x5890 x25562 x23144 (not x18869) (not x25100) x280 x30823)
+:assumption (or x26061 (not x1413))
+:assumption (or x9836 (not x25759))
+:assumption (or (not x8602) x10368)
+:assumption (or (not x7006) x1886 x25838)
+:assumption (or (not x20063) (not x19741))
+:assumption (or (not x12004) (not x3339) x14249)
+:assumption (or (not x14346) x15795)
+:assumption (or x19847 (not x5063))
+:assumption (or x11962 x31134 (not x27885))
+:assumption (or (not x25895) (not x20052))
+:assumption (or (not x14591) (not x23192))
+:assumption (or (not x27100) (not x24499))
+:assumption (or x299 x18105)
+:assumption (or (not x22743) (not x23145))
+:assumption (or x28973 (not x18037))
+:assumption (or (not x2103) x2490 (not x9764) x15482)
+:assumption (or (not x8578) x19025)
+:assumption (or x26167 (not x1582))
+:assumption (or (not x12686) (not x23244))
+:assumption (or (not x5044) x22630)
+:assumption (or x15319 x25967)
+:assumption (or x25659 (not x23925) (not x12748))
+:assumption (or (not x6546) (not x14435))
+:assumption (or x9442 x28208)
+:assumption (or x11053 (not x11822))
+:assumption (or (not x29964) x16625)
+:assumption (or x18814 x17182)
+:assumption (or (not x18874) (not x18003))
+:assumption (or x4873 (not x26055))
+:assumption (or x24631 (not x26644))
+:assumption (or (not x8340) (not x26117))
+:assumption (or x31679 (not x23420))
+:assumption (or x28471 x1007)
+:assumption (or (not x17990) (not x26160))
+:assumption (or (not x21298) (not x6070) (not x22696) x15146)
+:assumption (or (not x4339) (not x27289))
+:assumption (or x7555 x5334)
+:assumption (or x21298 x13753)
+:assumption (or (not x29695) x29304)
+:assumption (or x19520 x24958)
+:assumption (or (not x18295) x1670)
+:assumption (or x7024 (not x26636))
+:assumption (or (not x21145) (not x22097))
+:assumption (or x25367 (not x30653))
+:assumption (or x19452 (not x30097))
+:assumption (or (not x21293) x9764)
+:assumption (or (not x14435) x12907 (not x16502) (not x18243))
+:assumption (or (not x18920) (not x787))
+:assumption (or x13724 (not x21856))
+:assumption (or (not x14764) (not x5192))
+:assumption (or (not x25976) (not x29771))
+:assumption (or x964 (not x30751) (not x15529))
+:assumption (or (not x24798) x28876)
+:assumption (or (not x24425) x9324)
+:assumption (or (not x31885) x21933)
+:assumption (or x9713 (not x7235))
+:assumption (or x8002 (not x7889) (not x25008) x23244 (not x29091))
+:assumption (or x30567 x29724)
+:assumption (or x19992 (not x24514) (not x12948) (not x29708))
+:assumption (or (not x706) (not x12208))
+:assumption (or (not x30844) x31347)
+:assumption (or x9453 x25023)
+:assumption (or (not x16510) x2996 x29959 (not x21815) (not x20239) x6651 (not x169))
+:assumption (or x29061 x9465)
+:assumption (or x16510 (not x16205) (not x27620) (not x2334) x2188)
+:assumption (or (not x7462) (not x24138) (not x28026) (not x16925))
+:assumption (or (not x25003) (not x6149) x11792 x11214)
+:assumption (or (not x311) (not x16695) x6528)
+:assumption (or x28406 x5528)
+:assumption (or (not x27269) x16595)
+:assumption (or x9345 (not x9176))
+:assumption (or (not x30136) (not x14153))
+:assumption (or (not x25720) x7763)
+:assumption (or (not x23660) (not x6746) (not x13434))
+:assumption (or (not x27199) x4213)
+:assumption (or (not x11018) x9432)
+:assumption (or (not x6875) x13398 (not x27036))
+:assumption (or (not x9143) (not x20482) (not x30021))
+:assumption (or (not x12169) (not x18166))
+:assumption (or (not x22672) (not x22030))
+:assumption (or x9680 x10602)
+:assumption (or (not x24165) x18213 x26809 (not x17955) x26589)
+:assumption (or x19303 x18886)
+:assumption (or (not x6528) (not x2977) x11820)
+:assumption (or x25659 x29301)
+:assumption (or x21974 (not x22811))
+:assumption (or x18547 x19939 (not x7835))
+:assumption (or x16849 x30113 (not x3944))
+:assumption (or (not x30503) (not x24409))
+:assumption (or x1738 (not x19228))
+:assumption (or x17305 (not x28235))
+:assumption (or x15044 x3763)
+:assumption (or x9246 x15917 (not x9700) (not x9265) x24980 x15944 x12259)
+:assumption (or (not x4867) x26670)
+:assumption (or x10582 x10544)
+:assumption (or (not x22495) (not x3081))
+:assumption (or x24259 (not x19164))
+:assumption (or (not x5495) x4601)
+:assumption (or (not x12523) x24523)
+:assumption (or (not x24865) (not x17117))
+:assumption (or x174 x31253)
+:assumption (or (not x3659) x16559)
+:assumption (or (not x9912) (not x8002))
+:assumption (or (not x24219) x27685)
+:assumption (or (not x10867) (not x25485))
+:assumption (or x29310 x18121)
+:assumption (or (not x21422) x26640)
+:assumption (or (not x12187) (not x30033))
+:assumption (or (not x26910) (not x30200))
+:assumption (or x9818 (not x19428) (not x20771))
+:assumption (or (not x22217) (not x22142))
+:assumption (or (not x26675) x16530 (not x16802))
+:assumption (or x4773 x11241)
+:assumption (or x11488 x22010)
+:assumption (or x13959 (not x17243) (not x17885) (not x11510))
+:assumption (or (not x11792) (not x16068))
+:assumption (or x11923 (not x9694))
+:assumption (or x23668 (not x28166))
+:assumption (or (not x21862) (not x10973))
+:assumption (or x29520 x17075)
+:assumption (or x19390 x15664)
+:assumption (or (not x10150) x2386)
+:assumption (or (not x13194) x29445)
+:assumption (or (not x10071) (not x27725) x24132)
+:assumption (or (not x11688) x410)
+:assumption (or (not x16527) x2631)
+:assumption (or x7080 x1080)
+:assumption (or x3983 (not x825))
+:assumption (or (not x17651) x10562)
+:assumption (or (not x8106) (not x21093))
+:assumption (or (not x2254) (not x19522))
+:assumption (or x27250 x180)
+:assumption (or x13622 x10308)
+:assumption (or (not x16192) x7568 (not x1090))
+:assumption (or (not x26225) (not x29881))
+:assumption (or x13979 x4434)
+:assumption (or x1027 x29312)
+:assumption (or (not x17850) (not x31385))
+:assumption (or (not x26425) x19193 (not x26432) (not x17359))
+:assumption (or (not x31073) (not x29195) (not x9054) (not x19963) (not x23244))
+:assumption (or x10775 x16510 (not x13096) (not x17534) (not x14849))
+:assumption (or (not x29956) x1141 (not x8002))
+:assumption (or x28544 (not x15892))
+:assumption (or x5049 (not x30369))
+:assumption (or (not x2439) (not x13956))
+:assumption (or (not x20196) (not x2097))
+:assumption (or (not x25618) (not x28349))
+:assumption (or x28192 (not x24466))
+:assumption (or (not x14796) x28255)
+:assumption (or x11012 x4328)
+:assumption (or x8002 x25185 x23244 x27315)
+:assumption (or (not x26485) (not x3124))
+:assumption (or x3599 x28543)
+:assumption (or (not x6659) x22535)
+:assumption (or (not x13576) (not x20650))
+:assumption (or (not x3488) (not x15197))
+:assumption (or (not x14455) (not x20104) x8042)
+:assumption (or x16769 x2651 (not x6969))
+:assumption (or (not x30060) x2822)
+:assumption (or x17152 (not x27537))
+:assumption (or x630 (not x9204))
+:assumption (or x19567 x18244)
+:assumption (or x10102 x19204)
+:assumption (or (not x26771) x21833)
+:assumption (or (not x19877) x8776)
+:assumption (or (not x1092) x24922)
+:assumption (or x22947 x2284)
+:assumption (or (not x16001) (not x21897))
+:assumption (or x27682 x17949)
+:assumption (or x21563 x13040)
+:assumption (or (not x31324) x29298)
+:assumption (or (not x18393) (not x13620))
+:assumption (or x7782 (not x5016))
+:assumption (or (not x11862) x8633)
+:assumption (or x2111 (not x11418))
+:assumption (or (not x17803) (not x23942) (not x31829))
+:assumption (or x3401 (not x978))
+:assumption (or (not x963) (not x3745))
+:assumption (or (not x21675) (not x22765))
+:assumption (or (not x12984) x13388)
+:assumption (or (not x2281) (not x5167))
+:assumption (or (not x3145) (not x5563))
+:assumption (or (not x20187) x7007 (not x12512) (not x16536))
+:assumption (or (not x27804) (not x13956))
+:assumption (or (not x31259) x4021)
+:assumption (or x14361 x15775)
+:assumption (or (not x24330) (not x12987))
+:assumption (or x1458 (not x12726))
+:assumption (or (not x3706) (not x21142))
+:assumption (or x1291 (not x4454) x27749 (not x15621))
+:assumption (or x8265 x3080)
+:assumption (or (not x9363) (not x4073))
+:assumption (or x25224 x18004)
+:assumption (or (not x23530) x22536)
+:assumption (or x7011 x11540 x21826 x22606 x20575 x31081 x31286 (not x200))
+:assumption (or x10059 (not x13485))
+:assumption (or (not x26582) (not x4978))
+:assumption (or (not x26887) (not x30352))
+:assumption (or (not x20008) (not x674))
+:assumption (or x22135 (not x27025))
+:assumption (or x1035 x29929)
+:assumption (or x8821 x29108)
+:assumption (or (not x1114) (not x8337))
+:assumption (or x704 x14220)
+:assumption (or (not x6551) x6572)
+:assumption (or x5251 x31231)
+:assumption (or x6077 (not x25911))
+:assumption (or (not x27880) (not x12145) x23244)
+:assumption (or (not x23354) x16409)
+:assumption (or x15249 (not x6778))
+:assumption (or x26186 (not x8002))
+:assumption (or (not x24538) (not x12578) x16753 x18633 (not x23093))
+:assumption (or x15668 x30044)
+:assumption (or (not x23572) (not x30465))
+:assumption (or (not x16374) (not x13403) x11589)
+:assumption (or (not x20402) x31790)
+:assumption (or (not x29442) x22952 (not x15234) x3782)
+:assumption (or x22469 (not x22867))
+:assumption (or (not x21720) (not x28645))
+:assumption (or (not x20643) (not x30094))
+:assumption (or x7058 x25042)
+:assumption (or x24148 x23944)
+:assumption (or x7564 (not x26850))
+:assumption (or (not x27233) x3178)
+:assumption (or (not x13844) (not x30138))
+:assumption (or x2511 (not x12))
+:assumption (or x31747 (not x31019))
+:assumption (or (not x16066) (not x12301))
+:assumption (or (not x19419) (not x31911) (not x14065) (not x1421) (not x23492))
+:assumption (or x24788 (not x3893))
+:assumption (or (not x16965) (not x24288))
+:assumption (or (not x17896) (not x27200))
+:assumption (or (not x12346) (not x1967))
+:assumption (or (not x10629) (not x1393))
+:assumption (or x10309 x9114)
+:assumption (or (not x27048) x17647)
+:assumption (or (not x12175) x15751)
+:assumption (or (not x4301) x8566)
+:assumption (or x29645 x27493)
+:assumption (or (not x450) x11093)
+:assumption (or x23491 (not x5569))
+:assumption (or x20482 (not x28682) x5194)
+:assumption (or (not x24921) x7232)
+:assumption (or x31043 (not x8785))
+:assumption (or x14839 (not x17222) (not x8638) (not x16064))
+:assumption (or (not x21815) x16741 (not x31134) x13385 (not x16510))
+:assumption (or (not x20556) x22645)
+:assumption (or (not x12) (not x8695))
+:assumption (or (not x29584) x1922)
+:assumption (or x25416 x3621)
+:assumption (or (not x8002) (not x12838))
+:assumption (or x16250 (not x31921))
+:assumption (or x8002 (not x20877) (not x15394))
+:assumption (or (not x9191) x9401)
+:assumption (or x2256 (not x13472))
+:assumption (or x9139 x31487 x1354)
+:assumption (or (not x4075) x16023)
+:assumption (or (not x27923) x6100)
+:assumption (or x28375 x22264)
+:assumption (or (not x19867) x19108)
+:assumption (or (not x337) x8461)
+:assumption (or (not x6036) (not x15351))
+:assumption (or (not x29480) (not x7505))
+:assumption (or (not x9799) x31855)
+:assumption (or (not x5203) x9008)
+:assumption (or x4156 (not x23764))
+:assumption (or x5528 (not x3300))
+:assumption (or (not x31009) x25841)
+:assumption (or (not x14554) (not x18736))
+:assumption (or (not x2288) x3675 (not x27998) x3128)
+:assumption (or (not x31405) x26386)
+:assumption (or (not x11940) (not x27247) x16025)
+:assumption (or x31624 (not x8883))
+:assumption (or x29727 (not x26914))
+:assumption (or x7450 x18974)
+:assumption (or x25729 x14752)
+:assumption (or (not x17336) x3564)
+:assumption (or (not x25272) (not x930))
+:assumption (or (not x14243) x21561)
+:assumption (or (not x206) (not x9678))
+:assumption (or (not x26279) (not x9188))
+:assumption (or x16147 x27020)
+:assumption (or (not x24450) (not x31228) (not x31557) (not x25804) x16618)
+:assumption (or (not x31311) x5348)
+:assumption (or (not x20880) x4516)
+:assumption (or (not x30183) (not x19944))
+:assumption (or x9455 x9296)
+:assumption (or (not x1920) (not x16151) x20606)
+:assumption (or (not x28246) x28080)
+:assumption (or (not x4104) x9589)
+:assumption (or (not x11899) (not x2042))
+:assumption (or x5094 x169)
+:assumption (or x14508 (not x12357))
+:assumption (or (not x13698) (not x8598))
+:assumption (or (not x19383) x30935 (not x11443))
+:assumption (or (not x11803) x13477)
+:assumption (or (not x11874) x7835)
+:assumption (or x27941 x5395)
+:assumption (or x25746 (not x6644))
+:assumption (or x14630 (not x23909))
+:assumption (or (not x29068) (not x15989))
+:assumption (or (not x19204) (not x10102))
+:assumption (or x14228 x18388 (not x618) (not x26911) x12559 x15326 x18417 (not x17855) (not x11265))
+:assumption (or x28768 x30217)
+:assumption (or x14676 (not x12216))
+:assumption (or (not x26496) x3538)
+:assumption (or (not x23420) (not x30124))
+:assumption (or (not x27108) x18546)
+:assumption (or (not x27102) (not x8285))
+:assumption (or (not x12213) (not x18325))
+:assumption (or x24994 (not x10474) (not x9305) x11783)
+:assumption (or (not x28558) (not x4117))
+:assumption (or x8897 (not x26576))
+:assumption (or (not x21026) (not x26710) (not x27579))
+:assumption (or x29253 (not x31251))
+:assumption (or (not x25659) (not x1037) (not x22991))
+:assumption (or x27218 (not x17447))
+:assumption (or x3236 (not x20564))
+:assumption (or (not x11331) x16160)
+:assumption (or x9025 (not x3164))
+:assumption (or (not x31496) x25432)
+:assumption (or x6492 x25151)
+:assumption (or (not x1703) x16982)
+:assumption (or x24163 x24775 (not x3528) (not x24083))
+:assumption (or x13769 x28654)
+:assumption (or x30751 x12083 x1982)
+:assumption (or x29511 x29720)
+:assumption (or (not x673) x14141)
+:assumption (or x4726 (not x983))
+:assumption (or (not x3480) x29117)
+:assumption (or (not x22080) (not x7665))
+:assumption (or x9008 (not x28828))
+:assumption (or x17302 x26238)
+:assumption (or x9142 x13111)
+:assumption (or x13963 x28415)
+:assumption (or (not x20910) (not x26233))
+:assumption (or x9042 x13956)
+:assumption (or (not x8741) (not x8606))
+:assumption (or x27096 (not x24326))
+:assumption (or x16602 (not x16515))
+:assumption (or (not x16586) (not x14191))
+:assumption (or (not x30031) (not x9703))
+:assumption (or x4096 x13100)
+:assumption (or x29871 x26763)
+:assumption (or x29499 (not x17038))
+:assumption (or (not x28759) x28512 (not x9152))
+:assumption (or (not x14591) (not x24255) (not x9025))
+:assumption (or x21062 x28894)
+:assumption (or x11181 x25454)
+:assumption (or (not x5435) x18157)
+:assumption (or x27943 x11764)
+:assumption (or (not x31422) x29275)
+:assumption (or x10981 x5402)
+:assumption (or (not x24213) x29257)
+:assumption (or (not x25753) (not x2133))
+:assumption (or (not x19670) x418)
+:assumption (or (not x20266) (not x20847))
+:assumption (or x19479 (not x20550) (not x26647))
+:assumption (or (not x29296) x10915)
+:assumption (or (not x5528) x3656)
+:assumption (or x17738 (not x21484) (not x4503) x10825)
+:assumption (or x11583 x2823)
+:assumption (or x4435 (not x30503))
+:assumption (or (not x4739) x23452)
+:assumption (or (not x17594) x18806)
+:assumption (or x29225 x9472)
+:assumption (or (not x26636) x27537)
+:assumption (or (not x3499) (not x26931))
+:assumption (or (not x20012) x11224)
+:assumption (or (not x14687) (not x2137))
+:assumption (or x29853 x6444)
+:assumption (or (not x19560) (not x30173))
+:assumption (or x28194 x9064)
+:assumption (or x11898 x14841)
+:assumption (or (not x13749) (not x21201))
+:assumption (or (not x14622) x16003 (not x16360))
+:assumption (or x14140 (not x27936) x13956)
+:assumption (or (not x25232) (not x11966))
+:assumption (or x20034 (not x28964))
+:assumption (or x11386 (not x31162))
+:assumption (or (not x28264) (not x1222))
+:assumption (or x26568 (not x6461))
+:assumption (or x19861 (not x23994))
+:assumption (or (not x18477) (not x27297))
+:assumption (or (not x16502) x130)
+:assumption (or (not x31074) x15393)
+:assumption (or (not x21834) x14138 x9068 x29266)
+:assumption (or (not x23881) (not x12951))
+:assumption (or x10835 (not x3277))
+:assumption (or (not x27819) (not x23416))
+:assumption (or x9628 x26789 (not x119))
+:assumption (or (not x19875) x499)
+:assumption (or (not x12382) (not x4084))
+:assumption (or (not x21165) x19751)
+:assumption (or x3760 x326)
+:assumption (or (not x5606) (not x16025))
+:assumption (or (not x5673) (not x30434))
+:assumption (or (not x4297) x21817 (not x13956))
+:assumption (or (not x26629) x19453)
+:assumption (or x28198 (not x24015))
+:assumption (or (not x29376) x4084)
+:assumption (or x5664 x23173 (not x2311) x7602 x8285)
+:assumption (or (not x7764) (not x9034))
+:assumption (or (not x16025) (not x30396) (not x10237))
+:assumption (or x9215 x24058)
+:assumption (or (not x9204) x31625)
+:assumption (or (not x29141) (not x1771) (not x26432) (not x18374))
+:assumption (or (not x8080) (not x24290))
+:assumption (or x17849 x25455)
+:assumption (or (not x28624) (not x14213))
+:assumption (or x14261 x19570)
+:assumption (or (not x25583) (not x14674))
+:assumption (or (not x18832) (not x8979) x14170)
+:assumption (or (not x27433) (not x5528))
+:assumption (or x22415 x7869)
+:assumption (or (not x8864) x26791 x2991 x7161)
+:assumption (or x13084 (not x3657))
+:assumption (or x6785 (not x29242))
+:assumption (or x18520 x8002 x28157)
+:assumption (or (not x3920) (not x16566))
+:assumption (or x17763 x8710)
+:assumption (or x27424 x27182 x30530 x3253)
+:assumption (or (not x8916) (not x15566))
+:assumption (or (not x13952) (not x9531))
+:assumption (or (not x14687) x4652 (not x7286) x6341 (not x14522))
+:assumption (or x26525 (not x8056))
+:assumption (or (not x7893) (not x30064))
+:assumption (or (not x5033) x30560)
+:assumption (or x6594 (not x25936))
+:assumption (or (not x22103) (not x17193))
+:assumption (or (not x28587) (not x10237))
+:assumption (or (not x7595) x20)
+:assumption (or x25335 x13484)
+:assumption (or x15087 (not x18519))
+:assumption (or (not x1331) x11530)
+:assumption (or x23244 x11279 x8002 (not x499) (not x31244))
+:assumption (or (not x23616) (not x25507))
+:assumption (or (not x1068) (not x20325) x25711)
+:assumption (or x12789 (not x30229))
+:assumption (or x1617 (not x31320))
+:assumption (or x22696 x26106)
+:assumption (or x5066 (not x6352))
+:assumption (or x10194 (not x20895))
+:assumption (or x2749 (not x26779))
+:assumption (or (not x14098) x21421 x31767 x17338)
+:assumption (or (not x24766) (not x29823))
+:assumption (or x14606 (not x31681))
+:assumption (or x2858 x25878)
+:assumption (or (not x7633) (not x27554))
+:assumption (or (not x26790) (not x6608))
+:assumption (or (not x23541) (not x25096))
+:assumption (or x9093 (not x2705) x30224 (not x24071))
+:assumption (or x27808 (not x25784) x6911)
+:assumption (or x25081 (not x25032) x15861)
+:assumption (or (not x15606) (not x9786))
+:assumption (or (not x18684) (not x14455) (not x17766) (not x5961) (not x11098))
+:assumption (or x19307 x18964)
+:assumption (or x20700 (not x8378))
+:assumption (or x1393 (not x7148) (not x8061))
+:assumption (or (not x5366) (not x1039) (not x8167) (not x29111))
+:assumption (or (not x5216) x7913)
+:assumption (or x18051 x7418)
+:assumption (or (not x9018) (not x23323))
+:assumption (or (not x25196) x12818)
+:assumption (or (not x20087) (not x27831))
+:assumption (or (not x14861) (not x5004) (not x4800) x21186 (not x28520))
+:assumption (or x26776 (not x19037))
+:assumption (or (not x10804) x22492)
+:assumption (or x23710 x28346)
+:assumption (or (not x11952) x4000 (not x25697) x18308 x8379)
+:assumption (or x31093 x20134 x9678 (not x28642) (not x14074) x17539 (not x12192))
+:assumption (or x6098 (not x8378))
+:assumption (or x4980 x18506)
+:assumption (or x13718 x21011)
+:assumption (or (not x10634) (not x14243))
+:assumption (or x13281 (not x960))
+:assumption (or (not x7951) (not x3820))
+:assumption (or (not x7501) (not x3924))
+:assumption (or x25039 x4922)
+:assumption (or x7835 x18547 x9441)
+:assumption (or (not x6798) x5147)
+:assumption (or (not x8002) (not x22607))
+:assumption (or x10248 x27962)
+:assumption (or x20718 x12146)
+:assumption (or x548 (not x13000) x31119)
+:assumption (or (not x24089) x24587)
+:assumption (or (not x5301) (not x8084))
+:assumption (or x6153 (not x19820) x23079 x19400 x3683 (not x23386) (not x5312))
+:assumption (or x3217 (not x2515))
+:assumption (or (not x28665) x8329)
+:assumption (or (not x12327) (not x30074))
+:assumption (or x28713 (not x21678))
+:assumption (or (not x21298) (not x22341) x26396)
+:assumption (or (not x13956) x9466 x14490)
+:assumption (or x27500 x1447)
+:assumption (or x23931 (not x28885) (not x13162) (not x21524) (not x26916) (not x17951))
+:assumption (or (not x14189) (not x18441))
+:assumption (or x1611 x15641)
+:assumption (or (not x12852) (not x16637))
+:assumption (or x13411 (not x20957))
+:assumption (or x14138 (not x27445))
+:assumption (or (not x6155) x21815)
+:assumption (or x27871 x28354)
+:assumption (or (not x24340) x9630)
+:assumption (or x6784 x16910 (not x21455))
+:assumption (or (not x5435) (not x6139))
+:assumption (or x5028 (not x17060))
+:assumption (or (not x27537) x5256)
+:assumption (or (not x24870) x5124 (not x13262) x15717 (not x2847) x12119 x23360 x1029)
+:assumption (or (not x17226) (not x18042))
+:assumption (or (not x1760) (not x8415))
+:assumption (or x9078 (not x28304))
+:assumption (or x28298 (not x1009))
+:assumption (or (not x30192) x22088)
+:assumption (or (not x13492) (not x8002) (not x26152) x1542)
+:assumption (or (not x21148) (not x2493))
+:assumption (or (not x8822) (not x5528) (not x7401))
+:assumption (or (not x13363) x7342)
+:assumption (or x9706 x14517)
+:assumption (or x21616 (not x30923) (not x14455) x28941 (not x14171) x25760)
+:assumption (or x16460 x22531)
+:assumption (or x17466 x31664)
+:assumption (or x25659 x26325)
+:assumption (or (not x5693) x20700 (not x16025))
+:assumption (or (not x9322) (not x26140) (not x24948))
+:assumption (or x16096 (not x29505) x30282 (not x689) x27709)
+:assumption (or x22525 x16652)
+:assumption (or (not x2862) (not x20891) (not x16235) (not x25622) (not x25725) x28295 (not x24050) (not x25592))
+:assumption (or (not x29470) (not x19428))
+:assumption (or (not x17555) (not x28527) (not x9007) (not x22019))
+:assumption (or x10493 (not x10838))
+:assumption (or (not x11926) x17103)
+:assumption (or (not x30194) x1496)
+:assumption (or (not x27627) (not x6743))
+:assumption (or x28513 (not x6219))
+:assumption (or (not x25689) x1689)
+:assumption (or x6325 (not x6119))
+:assumption (or (not x30287) (not x18932))
+:assumption (or x27266 (not x1884))
+:assumption (or (not x24799) x137)
+:assumption (or (not x17307) x6662)
+:assumption (or (not x6236) x26575)
+:assumption (or (not x26069) x29911)
+:assumption (or x6961 (not x16709))
+:assumption (or x5528 (not x29147))
+:assumption (or (not x18757) (not x19929))
+:assumption (or x14751 x30701)
+:assumption (or (not x6553) (not x22042) x31892 (not x31091) x25721)
+:assumption (or x15525 (not x13043))
+:assumption (or x3268 (not x2416))
+:assumption (or (not x9008) (not x22295) (not x5528) (not x12588) (not x6703))
+:assumption (or x9531 x28931)
+:assumption (or x12061 (not x8310))
+:assumption (or (not x29075) x16653)
+:assumption (or x2739 (not x3999))
+:assumption (or x11488 x21234)
+:assumption (or x30369 (not x25707))
+:assumption (or x13755 (not x2905) x27452 x13871 x21941)
+:assumption (or x21413 x5528)
+:assumption (or (not x27854) x1298 (not x23580) (not x7083) (not x5432) x5025 (not x10555) (not x31634))
+:assumption (or x4302 (not x3197))
+:assumption (or x2943 (not x22243))
+:assumption (or x3736 x30346)
+:assumption (or x4333 x4509)
+:assumption (or x22400 (not x3633))
+:assumption (or (not x11643) x13790)
+:assumption (or (not x19591) (not x13633))
+:assumption (or (not x8217) x29785)
+:assumption (or x26946 x23406)
+:assumption (or x5821 x31829)
+:assumption (or (not x22762) (not x6594) x11057 x17534)
+:assumption (or x8002 x15209)
+:assumption (or x3880 x5066)
+:assumption (or (not x13749) (not x28222))
+:assumption (or (not x17220) x4635)
+:assumption (or (not x1896) x21732 x8002)
+:assumption (or x3318 x10919)
+:assumption (or x9008 x18819 (not x27520))
+:assumption (or (not x12949) x31412)
+:assumption (or (not x19781) x29495)
+:assumption (or (not x13603) (not x16741) x23259 (not x26657) (not x8661) (not x13942) x2413 x25087)
+:assumption (or x18217 x12679)
+:assumption (or x10139 x2745)
+:assumption (or (not x24661) x17534)
+:assumption (or x9025 x10808)
+:assumption (or x7793 (not x12957))
+:assumption (or x8961 x18238)
+:assumption (or (not x21489) x22474)
+:assumption (or (not x16560) x18818)
+:assumption (or x3726 (not x5587))
+:assumption (or x21668 x1168)
+:assumption (or (not x8862) x13691)
+:assumption (or (not x12020) x17944)
+:assumption (or (not x1042) (not x13956) (not x29175))
+:assumption (or (not x25343) (not x7337))
+:assumption (or (not x8002) (not x5107))
+:assumption (or (not x12393) (not x7256) (not x15900) (not x8778))
+:assumption (or x24434 (not x20189))
+:assumption (or x28314 x31464)
+:assumption (or (not x1582) x17893)
+:assumption (or x30301 (not x4845))
+:assumption (or (not x23244) (not x1396))
+:assumption (or x30702 x23691)
+:assumption (or x4237 (not x19229) x11452)
+:assumption (or x9958 x2903)
+:assumption (or x11813 x24271)
+:assumption (or x23675 (not x2521) (not x1620) x4051 x30452 x13716)
+:assumption (or (not x30974) (not x29883))
+:assumption (or x17447 (not x2249))
+:assumption (or (not x14957) x7694)
+:assumption (or x18873 (not x11281))
+:assumption (or x20575 x7011 x11540 (not x24679) x22606 x21826 (not x25659) (not x200))
+:assumption (or x10373 x8002)
+:assumption (or x21857 (not x20580) x17855 (not x12432))
+:assumption (or (not x8153) (not x15795))
+:assumption (or (not x5304) x4237)
+:assumption (or x28389 x29041 (not x24193) x377 (not x24028))
+:assumption (or (not x1540) x7588)
+:assumption (or (not x10352) (not x18747))
+:assumption (or x20366 x16811)
+:assumption (or x10179 (not x726) (not x31094) x20199)
+:assumption (or x20241 x3263)
+:assumption (or x22148 (not x30072) x9914 x24895 (not x19599))
+:assumption (or (not x9531) (not x4917))
+:assumption (or (not x9008) (not x1142))
+:assumption (or x20482 (not x2403))
+:assumption (or x6423 x18003 x19697)
+:assumption (or x9918 (not x21131))
+:assumption (or x30694 (not x5784))
+:assumption (or (not x10985) x14917)
+:assumption (or (not x6888) (not x3807))
+:assumption (or (not x31295) x16615)
+:assumption (or (not x22649) (not x29731))
+:assumption (or (not x25659) x7183)
+:assumption (or x11307 (not x29712))
+:assumption (or (not x24142) (not x8874) x8956 (not x9594) (not x22091) (not x12817))
+:assumption (or x11281 x17623)
+:assumption (or (not x5232) (not x20286))
+:assumption (or (not x40) x3025)
+:assumption (or x27695 x1015)
+:assumption (or x11277 x15021)
+:assumption (or (not x4014) x6295)
+:assumption (or (not x19786) x18175 x13848)
+:assumption (or x10967 x25099)
+:assumption (or x8961 x14092)
+:assumption (or (not x30844) x13177)
+:assumption (or (not x21333) x18130)
+:assumption (or (not x25927) (not x11667))
+:assumption (or (not x21972) x9546)
+:assumption (or x14608 x4833 x25507 x13728)
+:assumption (or (not x1456) (not x26863))
+:assumption (or (not x28035) x20199)
+:assumption (or x16107 (not x23028))
+:assumption (or (not x4168) x20482)
+:assumption (or (not x18817) (not x12573))
+:assumption (or (not x31927) x5275)
+:assumption (or x25659 x7769)
+:assumption (or (not x15268) x27074)
+:assumption (or (not x30718) (not x28383))
+:assumption (or (not x10315) x15861)
+:assumption (or x671 x24046)
+:assumption (or (not x16325) (not x15048) x8002 x19698 (not x11249) (not x28036))
+:assumption (or (not x21641) (not x28860))
+:assumption (or x762 (not x6843) x31817 (not x5394))
+:assumption (or (not x30986) x193)
+:assumption (or x1032 (not x3189) (not x27911))
+:assumption (or (not x20745) x22378)
+:assumption (or x5638 (not x20450))
+:assumption (or x28334 x19917)
+:assumption (or (not x20862) x17347)
+:assumption (or (not x17538) x27609)
+:assumption (or (not x11453) (not x8708))
+:assumption (or (not x5528) (not x26455) (not x5229) (not x3806) x27888 x4054)
+:assumption (or x3235 (not x18597))
+:assumption (or x18254 (not x2050) x2363)
+:assumption (or x17043 x28009)
+:assumption (or (not x21255) x29647)
+:assumption (or x16652 x23803)
+:assumption (or (not x7693) x25741)
+:assumption (or (not x9008) (not x27520) x3287)
+:assumption (or (not x4762) (not x8002) (not x3376))
+:assumption (or x28746 (not x6959))
+:assumption (or x4264 (not x9398))
+:assumption (or (not x18366) (not x31511))
+:assumption (or x7351 (not x24537))
+:assumption (or (not x23512) (not x21815) x30138 x13844 x16510 (not x19864) (not x31269))
+:assumption (or (not x21437) (not x327))
+:assumption (or (not x10921) (not x29157) (not x23279))
+:assumption (or x13576 x12198)
+:assumption (or (not x22075) x25679)
+:assumption (or x2793 (not x4125) (not x21298) (not x19590))
+:assumption (or (not x15140) (not x5528))
+:assumption (or x15817 (not x26431))
+:assumption (or x12143 (not x1582))
+:assumption (or (not x28190) (not x15749))
+:assumption (or x24704 (not x5954))
+:assumption (or (not x15843) x7835)
+:assumption (or (not x19992) (not x24164))
+:assumption (or (not x4897) (not x2744))
+:assumption (or x806 x22537)
+:assumption (or (not x28461) (not x2726) (not x20819) x23355 (not x25821))
+:assumption (or x16355 (not x8027))
+:assumption (or (not x20770) x11264)
+:assumption (or (not x30272) (not x29787))
+:assumption (or (not x9241) x27941)
+:assumption (or x3273 (not x23810))
+:assumption (or x28510 (not x12044))
+:assumption (or x25248 (not x331))
+:assumption (or x31433 x12242)
+:assumption (or (not x26832) x1393)
+:assumption (or (not x7028) x26971)
+:assumption (or x18237 (not x4088))
+:assumption (or x25745 (not x27626))
+:assumption (or (not x19822) (not x9117))
+:assumption (or (not x11131) (not x22435) x31829 x19789 (not x2903))
+:assumption (or (not x24155) x24089)
+:assumption (or (not x25468) (not x17075))
+:assumption (or x11315 (not x16782))
+:assumption (or x956 x27876)
+:assumption (or (not x20969) x20097)
+:assumption (or (not x475) (not x25659))
+:assumption (or x7660 (not x17940) x105 (not x6400))
+:assumption (or (not x9108) x22770)
+:assumption (or x5674 (not x17594))
+:assumption (or x6776 (not x1229))
+:assumption (or x28585 (not x17441))
+:assumption (or x918 x23847)
+:assumption (or x4685 x5564)
+:assumption (or x25659 x30191 (not x31881))
+:assumption (or x14780 (not x612))
+:assumption (or x30085 (not x30076))
+:assumption (or x13091 x15008)
+:assumption (or (not x17622) x26681)
+:assumption (or x735 (not x8382))
+:assumption (or x471 (not x5718))
+:assumption (or (not x29961) (not x6082))
+:assumption (or x13618 x20175)
+:assumption (or (not x13881) x21063)
+:assumption (or x21484 x19207 (not x5590) x25064 x31004 (not x12928))
+:assumption (or x2899 x30674)
+:assumption (or x10488 x16039 (not x27187))
+:assumption (or (not x8002) x25672)
+:assumption (or (not x7606) x7195)
+:assumption (or (not x20266) (not x12738))
+:assumption (or x10469 (not x18275))
+:assumption (or (not x30092) x23244 (not x3856))
+:assumption (or x6665 (not x21522))
+:assumption (or x9517 x19798)
+:assumption (or (not x17875) x9575)
+:assumption (or x19542 x7358)
+:assumption (or x17299 (not x20442))
+:assumption (or x19053 (not x27227))
+:assumption (or (not x23855) (not x13102))
+:assumption (or (not x2279) (not x7977))
+:assumption (or x30839 (not x27123))
+:assumption (or (not x16872) (not x8621))
+:assumption (or (not x6519) (not x27221) x28038 x24179)
+:assumption (or x28387 x14963 (not x11679))
+:assumption (or (not x28883) (not x26288))
+:assumption (or (not x3025) x19285)
+:assumption (or (not x17051) (not x12147))
+:assumption (or x27805 (not x5225))
+:assumption (or (not x231) x20669 x19662)
+:assumption (or x16594 (not x20402) (not x14641) (not x20929))
+:assumption (or (not x31239) (not x7059))
+:assumption (or (not x17242) x2233)
+:assumption (or (not x7956) (not x18325))
+:assumption (or (not x13502) x6904)
+:assumption (or x28962 x24707)
+:assumption (or (not x9453) (not x12902) x15108 (not x21419))
+:assumption (or x22607 x9154)
+:assumption (or x30393 x19460 (not x24342))
+:assumption (or x8951 x26262)
+:assumption (or x13665 (not x29211))
+:assumption (or (not x17063) (not x15607))
+:assumption (or (not x8002) (not x19978))
+:assumption (or x16455 (not x11786) (not x28814) (not x9329))
+:assumption (or (not x6337) (not x14981))
+:assumption (or x645 (not x8049))
+:assumption (or (not x1428) x26335)
+:assumption (or (not x23751) (not x11212))
+:assumption (or x11417 (not x12641))
+:assumption (or (not x14333) x9008)
+:assumption (or (not x2400) x15256)
+:assumption (or x23549 (not x15989))
+:assumption (or (not x30419) x12702)
+:assumption (or x27078 x25659 (not x2407))
+:assumption (or x23244 (not x24068))
+:assumption (or (not x31782) (not x13956) (not x10834))
+:assumption (or (not x27904) (not x3148))
+:assumption (or x18177 x23878 (not x17855) (not x31553))
+:assumption (or (not x3138) (not x18590))
+:assumption (or x17387 x397 x28055 x1900 x17116 (not x24991))
+:assumption (or x14269 x12939)
+:assumption (or x5746 (not x9476))
+:assumption (or x24591 x14863)
+:assumption (or x25584 x15570)
+:assumption (or (not x19971) (not x17199) x288 x5139)
+:assumption (or (not x24813) (not x2674))
+:assumption (or x17549 x9383)
+:assumption (or (not x23296) x943)
+:assumption (or (not x30866) x14402)
+:assumption (or (not x2133) x8670)
+:assumption (or (not x24016) (not x15774) x13069 x10837 (not x10044) x19989 x11511 (not x4111))
+:assumption (or (not x809) x8844)
+:assumption (or (not x14813) (not x27264))
+:assumption (or x15829 (not x21442))
+:assumption (or x20276 x5564)
+:assumption (or x27072 x16802)
+:assumption (or x26799 x27242)
+:assumption (or x25659 x23918)
+:assumption (or x15861 (not x23683))
+:assumption (or x17134 (not x15969))
+:assumption (or x16025 (not x24722) (not x27140))
+:assumption (or x24237 (not x5619) (not x15661) x7288)
+:assumption (or (not x14799) x10780)
+:assumption (or (not x10940) (not x31438))
+:assumption (or x5528 x20940 (not x10060))
+:assumption (or (not x7055) x17516)
+:assumption (or x14454 x28945)
+:assumption (or (not x21690) x9185)
+:assumption (or (not x2124) x30124 (not x24130))
+:assumption (or (not x11990) (not x25050))
+:assumption (or (not x24883) (not x9107))
+:assumption (or x25861 x25330)
+:assumption (or x7296 x22746)
+:assumption (or (not x24395) (not x8258))
+:assumption (or (not x22981) (not x12273))
+:assumption (or x19629 x15020 (not x11377))
+:assumption (or (not x4058) x5027)
+:assumption (or x16985 (not x14000))
+:assumption (or x6611 x13501)
+:assumption (or (not x27600) (not x28122))
+:assumption (or (not x27018) x20327)
+:assumption (or (not x15865) x7274 (not x1582))
+:assumption (or x10570 (not x4377))
+:assumption (or (not x5051) (not x5916))
+:assumption (or x18334 (not x20153))
+:assumption (or x26414 x25165)
+:assumption (or x15847 (not x30453))
+:assumption (or x29163 x21115)
+:assumption (or x10439 x3023)
+:assumption (or (not x22813) (not x17613))
+:assumption (or x9008 x12777 (not x29019))
+:assumption (or x11690 x25489)
+:assumption (or x6756 (not x17476))
+:assumption (or x6969 x5966)
+:assumption (or x21910 x3244 (not x21633) x27233)
+:assumption (or (not x1050) (not x20587))
+:assumption (or (not x6134) x8902)
+:assumption (or (not x11607) x14756)
+:assumption (or x5114 (not x11454))
+:assumption (or (not x14002) (not x14455))
+:assumption (or x19106 x21653)
+:assumption (or x1447 (not x27903))
+:assumption (or (not x60) (not x30240) x480 x31853)
+:assumption (or (not x6116) x24353)
+:assumption (or (not x14731) x5050)
+:assumption (or (not x31232) (not x13991))
+:assumption (or (not x4548) x8044)
+:assumption (or (not x4407) (not x10554))
+:assumption (or (not x4648) (not x15026) x11935 x16257)
+:assumption (or (not x3083) x28317)
+:assumption (or (not x5745) x26789 (not x17569) x10978)
+:assumption (or (not x10266) (not x2490))
+:assumption (or (not x17918) (not x4113))
+:assumption (or (not x18010) (not x28701))
+:assumption (or (not x10591) x13576)
+:assumption (or (not x6368) (not x28104))
+:assumption (or (not x11802) (not x19725))
+:assumption (or (not x8739) (not x26025) x18098 x18601 (not x28765))
+:assumption (or (not x15906) (not x2419))
+:assumption (or (not x21653) (not x18998))
+:assumption (or x26507 (not x20060) x15366)
+:assumption (or (not x9314) x15112 x29858 x23550)
+:assumption (or x26780 (not x17624))
+:assumption (or (not x480) x9735)
+:assumption (or (not x26587) x2469)
+:assumption (or (not x11662) (not x29404))
+:assumption (or (not x6458) (not x492))
+:assumption (or (not x499) x23542 (not x8002) x24362)
+:assumption (or (not x14839) (not x6311))
+:assumption (or x13145 x31734 x26703 (not x29831) (not x26692) (not x21839) (not x30633))
+:assumption (or (not x30886) x14042 (not x18121) (not x31609))
+:assumption (or x29877 (not x9439))
+:assumption (or (not x2449) (not x15789) x30667)
+:assumption (or x10387 x25568)
+:assumption (or x3378 x6822)
+:assumption (or x31051 x2954 x14239 (not x17065) (not x3729))
+:assumption (or x20325 (not x27166))
+:assumption (or (not x28759) (not x24387))
+:assumption (or (not x29057) (not x11301))
+:assumption (or (not x20394) x3830)
+:assumption (or (not x11936) x14591)
+:assumption (or x30371 x24430)
+:assumption (or x8163 (not x30899))
+:assumption (or (not x6626) (not x14065))
+:assumption (or (not x8058) (not x4420))
+:assumption (or x1592 (not x6579))
+:assumption (or x13750 (not x22855))
+:assumption (or (not x597) (not x31767))
+:assumption (or (not x20087) (not x15063))
+:assumption (or (not x28220) x29834)
+:assumption (or (not x3924) (not x17613))
+:assumption (or x9607 (not x10530) (not x338) x21432)
+:assumption (or (not x24720) x5492)
+:assumption (or (not x18638) x28618)
+:assumption (or x21016 (not x13415) x14011 (not x4793))
+:assumption (or (not x23585) (not x13956) x22658)
+:assumption (or x19628 (not x22844))
+:assumption (or x28462 (not x27737) x6969)
+:assumption (or x3407 (not x25280) (not x19356) x14936 (not x29546) (not x30303) x24883 (not x26836))
+:assumption (or (not x15243) (not x5054))
+:assumption (or (not x6549) (not x14256))
+:assumption (or (not x286) x577)
+:assumption (or (not x26638) x19064)
+:assumption (or x5251 x22334)
+:assumption (or (not x15496) (not x12258) x17440 x24744 x11658 (not x19555))
+:assumption (or x11805 (not x11580))
+:assumption (or x26892 (not x27169) (not x9008) (not x2745) (not x5528))
+:assumption (or x3633 (not x22400))
+:assumption (or x23876 (not x627))
+:assumption (or x16961 x30983)
+:assumption (or (not x27811) x10436)
+:assumption (or (not x2251) (not x18216))
+:assumption (or (not x18049) x662 x8656 x13102 (not x7653) x22138)
+:assumption (or x3301 (not x23112))
+:assumption (or x8049 (not x777) (not x21153) x18431 (not x645) (not x16172))
+:assumption (or (not x29440) x22444)
+:assumption (or x8002 (not x4606))
+:assumption (or x29296 x23244 x26878)
+:assumption (or (not x2630) (not x6634))
+:assumption (or (not x25968) (not x11282) x18083)
+:assumption (or x6750 (not x16099))
+:assumption (or x7737 x17432)
+:assumption (or (not x9394) x14581)
+:assumption (or (not x20209) (not x19072))
+:assumption (or (not x8002) x22146)
+:assumption (or (not x28991) x22131)
+:assumption (or x2861 (not x12906))
+:assumption (or (not x224) x27911 (not x30891))
+:assumption (or (not x25366) x17667)
+:assumption (or (not x18585) x26574)
+:assumption (or (not x16154) x3813)
+:assumption (or (not x31654) (not x7548))
+:assumption (or (not x4559) (not x10484) x17377)
+:assumption (or x3001 x11324)
+:assumption (or x11565 x28242)
+:assumption (or x13369 x5765)
+:assumption (or x3672 (not x22170))
+:assumption (or x8660 (not x18519) x25366 x22110)
+:assumption (or x6500 (not x27267))
+:assumption (or x29077 x16648 (not x17865))
+:assumption (or (not x9204) x9094)
+:assumption (or (not x6255) (not x2570))
+:assumption (or x18079 x4083)
+:assumption (or x9331 (not x1953) x22524)
+:assumption (or (not x1280) (not x26925))
+:assumption (or x26317 x24788)
+:assumption (or (not x22677) x14611 (not x9008))
+:assumption (or x14980 (not x11363))
+:assumption (or (not x27694) (not x12676))
+:assumption (or (not x30193) (not x15290))
+:assumption (or (not x21381) x13863)
+:assumption (or (not x29198) x762)
+:assumption (or (not x1131) x24231)
+:assumption (or (not x25762) (not x27233))
+:assumption (or (not x25309) x2201 (not x10047) x17042)
+:assumption (or (not x9022) x16952)
+:assumption (or x29232 (not x20478))
+:assumption (or x26174 (not x8710))
+:assumption (or x6299 x11257)
+:assumption (or (not x19166) (not x20010))
+:assumption (or x28973 x13289)
+:assumption (or x10123 x10595)
+:assumption (or (not x13732) (not x27568) (not x31134))
+:assumption (or x22734 (not x26892))
+:assumption (or (not x22113) x27915)
+:assumption (or (not x13993) (not x20622) (not x13018) (not x24963))
+:assumption (or x26897 x31383)
+:assumption (or (not x1465) x19386)
+:assumption (or (not x8934) x6069)
+:assumption (or (not x21087) x27911)
+:assumption (or x20489 (not x12920))
+:assumption (or x23276 x9008)
+:assumption (or x31315 (not x29415) x26575 x15621)
+:assumption (or (not x28180) (not x25315) x10510)
+:assumption (or x28582 x1892)
+:assumption (or (not x6448) x20645)
+:assumption (or (not x6805) (not x29312))
+:assumption (or x31368 x28943)
+:assumption (or (not x22855) (not x6500))
+:assumption (or (not x17409) (not x28586))
+:assumption (or (not x30551) x26454)
+:assumption (or (not x23844) x27941)
+:assumption (or (not x26193) (not x1968))
+:assumption (or (not x28824) (not x169))
+:assumption (or x23057 x9667)
+:assumption (or x26780 (not x1590))
+:assumption (or (not x14683) x8271)
+:assumption (or (not x27357) x6149 x11995 (not x29929) (not x25785) x11442 (not x19719))
+:assumption (or x22454 x4035 x14839 x15313)
+:assumption (or (not x24074) x21653 (not x28511))
+:assumption (or x28041 x17186)
+:assumption (or (not x16903) x16161)
+:assumption (or x27349 x7200 x673 x23622)
+:assumption (or x15727 x15617)
+:assumption (or (not x20201) x2565 (not x18198))
+:assumption (or (not x19331) x13180)
+:assumption (or x5050 x5624)
+:assumption (or (not x15964) x30591)
+:assumption (or (not x22295) (not x29436) (not x27795))
+:assumption (or x16745 (not x29366))
+:assumption (or x10147 (not x8559))
+:assumption (or (not x8405) x17225)
+:assumption (or (not x26986) (not x17024))
+:assumption (or (not x6220) x13814)
+:assumption (or (not x24970) x26007 (not x10541))
+:assumption (or (not x6363) x25355 x1064 x11043 (not x23956) x8904 (not x9647))
+:assumption (or (not x10304) x19751)
+:assumption (or x6306 (not x12822))
+:assumption (or (not x12725) x8961)
+:assumption (or x27067 x22041)
+:assumption (or (not x5866) (not x24200))
+:assumption (or x23620 x15641)
+:assumption (or (not x30683) (not x27095))
+:assumption (or x25020 (not x30210))
+:assumption (or x9971 x12183)
+:assumption (or x5083 x1524 (not x3453))
+:assumption (or (not x23795) x5063)
+:assumption (or (not x8886) (not x9801))
+:assumption (or x16874 x8851)
+:assumption (or (not x17225) (not x12092))
+:assumption (or (not x4504) x9062 (not x28283))
+:assumption (or x31064 (not x14869))
+:assumption (or x9664 x15185)
+:assumption (or (not x29539) x24838)
+:assumption (or (not x4605) x8158)
+:assumption (or x28173 x9531)
+:assumption (or (not x11301) (not x28295))
+:assumption (or x26479 (not x8710) x288 x31903 (not x2286) x6609 (not x1535) (not x30723) x16616)
+:assumption (or (not x25976) (not x15736))
+:assumption (or x30138 x161)
+:assumption (or (not x29043) (not x21743))
+:assumption (or (not x8961) x16278 x7254 (not x2464))
+:assumption (or (not x17075) (not x16115))
+:assumption (or (not x22720) (not x2913))
+:assumption (or x10859 (not x9864))
+:assumption (or x8356 x28675)
+:assumption (or (not x288) x22975)
+:assumption (or x11606 x562)
+:assumption (or x30570 (not x28076))
+:assumption (or (not x27708) x30902)
+:assumption (or x2291 x12294)
+:assumption (or x3127 x14778)
+:assumption (or (not x28607) (not x30836))
+:assumption (or x1850 x19365)
+:assumption (or x964 (not x1351))
+:assumption (or (not x6350) x20336 x26830 (not x15609) (not x25150))
+:assumption (or (not x26434) x5084)
+:assumption (or (not x29700) x3453)
+:assumption (or x2869 (not x5661))
+:assumption (or (not x30089) (not x29876))
+:assumption (or (not x10842) (not x28517))
+:assumption (or (not x20056) x11938)
+:assumption (or x3827 (not x11688))
+:assumption (or x8742 x21967)
+:assumption (or x31767 x8389 (not x20299) x22930)
+:assumption (or x11377 (not x8979) (not x22196))
+:assumption (or (not x11955) (not x19140))
+:assumption (or (not x31626) x19921)
+:assumption (or x22799 x28046)
+:assumption (or x296 x8549)
+:assumption (or (not x19059) (not x28912))
+:assumption (or x26445 (not x21251))
+:assumption (or x28955 x13879)
+:assumption (or (not x29576) x30334)
+:assumption (or x24634 x6338)
+:assumption (or (not x23560) (not x16271))
+:assumption (or x4266 (not x4871))
+:assumption (or (not x225) (not x25278))
+:assumption (or x23804 x30262)
+:assumption (or (not x23006) x25366)
+:assumption (or x5528 x8773)
+:assumption (or (not x5523) x6415)
+:assumption (or (not x9160) x15953 (not x18026) x28364 x20998 x26499)
+:assumption (or x15652 x30815)
+:assumption (or (not x4386) (not x7538) x30180 (not x28708))
+:assumption (or x13581 (not x9198))
+:assumption (or x1036 x13008)
+:assumption (or x21194 (not x21191))
+:assumption (or x10450 (not x20165) x4559)
+:assumption (or (not x5698) x4711)
+:assumption (or (not x13344) x20414 x21574)
+:assumption (or (not x2652) x9531)
+:assumption (or (not x28380) x17334)
+:assumption (or x13956 x6922)
+:assumption (or x16160 x3963)
+:assumption (or x28268 (not x21097))
+:assumption (or (not x22581) x18822)
+:assumption (or (not x10881) x6559)
+:assumption (or (not x29809) (not x17008))
+:assumption (or x13001 (not x30117))
+:assumption (or (not x12676) x31462)
+:assumption (or x19979 x16789)
+:assumption (or x20738 (not x9933))
+:assumption (or (not x5528) (not x13954) (not x11639) (not x23117) (not x24917) x22223)
+:assumption (or (not x17341) (not x15254))
+:assumption (or (not x20140) x6926)
+:assumption (or (not x12134) x12986 (not x4480) x2459 (not x16254) (not x22089))
+:assumption (or x16426 (not x10720) x5528)
+:assumption (or (not x18783) (not x17916))
+:assumption (or (not x9815) x5394 x7270)
+:assumption (or (not x27013) x28508)
+:assumption (or x29860 x12186)
+:assumption (or x21290 (not x6942) (not x1281))
+:assumption (or x5449 (not x13040) (not x17567))
+:assumption (or x26687 (not x3212))
+:assumption (or (not x746) (not x16464))
+:assumption (or (not x30408) (not x11494))
+:assumption (or (not x341) (not x24177))
+:assumption (or x3986 x30355)
+:assumption (or x1443 x29811)
+:assumption (or (not x18608) (not x19286))
+:assumption (or x24743 (not x16721) x1440)
+:assumption (or (not x25815) x17236)
+:assumption (or (not x31435) x23525)
+:assumption (or x17855 x6162)
+:assumption (or (not x3948) x26674 (not x30113) (not x14200))
+:assumption (or x11265 x3901)
+:assumption (or x26066 (not x26816))
+:assumption (or x14218 x28629)
+:assumption (or (not x28770) (not x18573))
+:assumption (or (not x18616) (not x21767))
+:assumption (or x31248 (not x18978))
+:assumption (or (not x11194) x332)
+:assumption (or x27751 (not x27147) (not x10723))
+:assumption (or x15366 x16687)
+:assumption (or (not x12509) (not x4225))
+:assumption (or (not x23535) x26740)
+:assumption (or x11647 (not x11451))
+:assumption (or (not x19451) x19879)
+:assumption (or (not x8769) x25726 (not x20719) (not x30138))
+:assumption (or (not x20928) (not x27005))
+:assumption (or x17174 x1268)
+:assumption (or (not x23571) x22877 (not x8763) x26943)
+:assumption (or x24963 x20622)
+:assumption (or (not x8287) x30875)
+:assumption (or x24037 (not x17171))
+:assumption (or (not x23244) (not x19190))
+:assumption (or x20236 x9226)
+:assumption (or (not x7732) x10355)
+:assumption (or (not x31482) (not x11971))
+:assumption (or (not x24980) (not x9246))
+:assumption (or x22472 x19358)
+:assumption (or x16934 (not x10775))
+:assumption (or (not x3078) (not x28313))
+:assumption (or (not x18985) x28120)
+:assumption (or x7258 (not x1588))
+:assumption (or x27431 x8155)
+:assumption (or (not x28980) x18989)
+:assumption (or (not x3457) (not x1741) x25009 x4070)
+:assumption (or x15463 (not x27392))
+:assumption (or x14724 x29767)
+:assumption (or (not x30113) (not x10807) (not x28628) (not x11115))
+:assumption (or x13742 x5737)
+:assumption (or x15623 (not x3469))
+:assumption (or (not x23936) (not x22754))
+:assumption (or x222 x31616)
+:assumption (or x29091 x7889)
+:assumption (or (not x16209) (not x19125))
+:assumption (or x31666 x8002)
+:assumption (or x26158 x31128)
+:assumption (or x26023 x29334)
+:assumption (or x28592 (not x31328))
+:assumption (or (not x17263) x14101)
+:assumption (or (not x23050) x8698)
+:assumption (or x1564 (not x964) x1651 x26670)
+:assumption (or (not x6594) x23290)
+:assumption (or x4966 x4698)
+:assumption (or x28019 x23829)
+:assumption (or (not x30822) x10439)
+:assumption (or x3653 x23692)
+:assumption (or (not x15034) x10706)
+:assumption (or (not x21782) x24343)
+:assumption (or x10158 (not x13421))
+:assumption (or x27038 x28843)
+:assumption (or x11775 (not x8229))
+:assumption (or (not x161) (not x30138) x9124)
+:assumption (or (not x15299) (not x30518))
+:assumption (or x11407 x17030 x24952 (not x16098))
+:assumption (or x27995 x11380)
+:assumption (or (not x23536) (not x11375))
+:assumption (or (not x1716) x7472)
+:assumption (or x9008 x20541 (not x1966))
+:assumption (or x21815 x4706)
+:assumption (or (not x7703) (not x25276))
+:assumption (or x2246 x20237)
+:assumption (or x28566 x8271)
+:assumption (or x4689 x27223)
+:assumption (or x24920 (not x25187))
+:assumption (or (not x29680) (not x28242))
+:assumption (or (not x6338) (not x3224) x13953)
+:assumption (or (not x21651) x18803)
+:assumption (or x6045 (not x24751) x14156 x4784 x9222 x2322)
+:assumption (or (not x26465) x17583)
+:assumption (or x20489 (not x5333))
+:assumption (or (not x26825) x9548)
+:assumption (or (not x18212) x5250)
+:assumption (or (not x30700) x9027 x25603 (not x4079))
+:assumption (or (not x6487) (not x5367))
+:assumption (or x17355 x13583 (not x16446))
+:assumption (or x6594 (not x23301) (not x11671) x22009 x18789)
+:assumption (or (not x9051) x16432)
+:assumption (or x31030 x7835)
+:assumption (or x10687 (not x19523))
+:assumption (or x4639 x10967)
+:assumption (or x11875 (not x16038))
+:assumption (or (not x22806) (not x1535))
+:assumption (or x2347 x20550)
+:assumption (or (not x25659) (not x30441))
+:assumption (or (not x7306) x22534)
+:assumption (or x28229 x20834)
+:assumption (or x1621 (not x23558) (not x4126))
+:assumption (or (not x3404) (not x851))
+:assumption (or x5316 (not x16976))
+:assumption (or x6104 x9302)
+:assumption (or (not x4276) (not x22698))
+:assumption (or (not x15075) x1090 x8514 (not x7625) (not x9120) x7412 x3520 (not x18309))
+:assumption (or (not x28134) x5044 (not x29606) x31134)
+:assumption (or (not x30110) (not x19292))
+:assumption (or x27911 (not x1279) (not x13793) x17299 (not x1371) x25543 x6382)
+:assumption (or (not x26677) x31884)
+:assumption (or (not x9439) x11913)
+:assumption (or x25539 x26029)
+:assumption (or x14452 x25528)
+:assumption (or (not x12083) (not x26107) (not x26393))
+:assumption (or x11697 (not x6642))
+:assumption (or x29598 x11048)
+:assumption (or x30334 x10678)
+:assumption (or x26198 x24372)
+:assumption (or x5818 (not x19891))
+:assumption (or (not x29804) (not x6969))
+:assumption (or (not x10212) x27532)
+:assumption (or x28167 (not x21298) x30932 x8572)
+:assumption (or x15795 (not x306))
+:assumption (or x11714 x25659)
+:assumption (or (not x6391) (not x20516))
+:assumption (or x3632 x116)
+:assumption (or (not x10909) (not x26897) x26648 (not x15804))
+:assumption (or x23263 (not x4121))
+:assumption (or (not x4859) x27345)
+:assumption (or x21613 x1102)
+:assumption (or x29184 x16295)
+:assumption (or x12687 x14437)
+:assumption (or x15659 (not x25571))
+:assumption (or (not x27566) (not x26894))
+:assumption (or x11406 (not x18715) (not x6898) (not x2430) x6507)
+:assumption (or (not x18069) x10599 x27068)
+:assumption (or x22971 (not x20118))
+:assumption (or x2949 (not x18084))
+:assumption (or x15943 x30280)
+:assumption (or x24271 x8233)
+:assumption (or x5412 x15233)
+:assumption (or (not x30293) (not x14522))
+:assumption (or (not x13569) x11197)
+:assumption (or (not x28912) (not x20145))
+:assumption (or x2288 x30383)
+:assumption (or x19302 x31308)
+:assumption (or x14743 (not x6826))
+:assumption (or x19583 x19187)
+:assumption (or x12694 (not x7057))
+:assumption (or (not x1128) x7817)
+:assumption (or (not x23244) x12046 x20854 (not x13956) (not x21633))
+:assumption (or (not x9119) (not x5625))
+:assumption (or x22032 x23400)
+:assumption (or (not x22670) (not x26887))
+:assumption (or (not x26671) x18021)
+:assumption (or (not x21210) x20325)
+:assumption (or x13018 x15544)
+:assumption (or (not x18490) (not x27295))
+:assumption (or (not x17910) (not x9189))
+:assumption (or (not x7148) x27706)
+:assumption (or (not x1200) x2038 (not x9537) (not x6128))
+:assumption (or x11911 (not x6207))
+:assumption (or x5274 (not x23459))
+:assumption (or x12199 x14963 x28035 (not x20199) x24387)
+:assumption (or (not x20304) x14214 x24422)
+:assumption (or x10731 (not x10598))
+:assumption (or x6133 x21924)
+:assumption (or x28682 (not x7438))
+:assumption (or (not x26642) (not x21323))
+:assumption (or x20853 (not x9482))
+:assumption (or x10934 (not x29811))
+:assumption (or (not x27715) x19095)
+:assumption (or x9008 (not x3426))
+:assumption (or (not x16273) (not x26638))
+:assumption (or (not x23422) (not x24487) (not x19711) x17051 x12147)
+:assumption (or (not x24722) x2770)
+:assumption (or x1637 (not x29251))
+:assumption (or (not x30053) x169)
+:assumption (or (not x14455) (not x984))
+:assumption (or x28041 x26687)
+:assumption (or (not x6002) x21298 (not x24131) x22829)
+:assumption (or (not x711) (not x17319))
+:assumption (or x21457 x27455)
+:assumption (or (not x23487) (not x21228))
+:assumption (or (not x9820) (not x15480) (not x31696))
+:assumption (or (not x28231) (not x9961) x8002 x13956 x23244 x19298)
+:assumption (or (not x24242) x7313 (not x10382))
+:assumption (or x13300 (not x2086))
+:assumption (or (not x13327) x17075)
+:assumption (or (not x8363) (not x4377) x22440 x18625)
+:assumption (or (not x3217) (not x16409) x23407 x23354 x10777)
+:assumption (or (not x16267) (not x28389))
+:assumption (or (not x12924) x15501)
+:assumption (or x8877 (not x13604))
+:assumption (or x21551 (not x15216))
+:assumption (or x21298 (not x19324))
+:assumption (or x21396 x5886)
+:assumption (or (not x14620) (not x3721))
+:assumption (or (not x9087) (not x21886))
+:assumption (or x26237 x27517)
+:assumption (or x25290 x10372)
+:assumption (or (not x9918) (not x19477))
+:assumption (or (not x7387) x7188)
+:assumption (or (not x17798) (not x15986) (not x19662))
+:assumption (or (not x1355) x827)
+:assumption (or (not x25659) x6512)
+:assumption (or (not x7823) x15961 x1671)
+:assumption (or x4720 x22010)
+:assumption (or (not x25465) x14279)
+:assumption (or x173 x29841)
+:assumption (or x7656 (not x19107))
+:assumption (or x10738 x8313)
+:assumption (or x15061 x1457)
+:assumption (or x31829 (not x15186))
+:assumption (or x18531 (not x10361))
+:assumption (or (not x24301) x1620)
+:assumption (or (not x21242) (not x11792) x6149 x24973)
+:assumption (or (not x16374) x13136)
+:assumption (or x13498 (not x927))
+:assumption (or (not x27814) x25659)
+:assumption (or (not x29370) (not x13576))
+:assumption (or x9609 (not x30255))
+:assumption (or x17798 x4058)
+:assumption (or x27864 (not x26677))
+:assumption (or (not x23550) x9314)
+:assumption (or (not x30113) (not x4627))
+:assumption (or x964 x14381)
+:assumption (or (not x21026) x17841)
+:assumption (or (not x30144) (not x19948))
+:assumption (or x23126 x24170)
+:assumption (or (not x9979) x3832 (not x16387) (not x30099) (not x1919) x3316 x26667 x19350 x7764)
+:assumption (or x2171 x2594)
+:assumption (or (not x19788) (not x16907))
+:assumption (or x31365 x25064)
+:assumption (or x30786 x30422)
+:assumption (or (not x5639) x25792)
+:assumption (or x18269 x17033 (not x7499))
+:assumption (or x4543 x21687)
+:assumption (or (not x3677) x17668)
+:assumption (or x7686 x23244)
+:assumption (or x30277 (not x20930))
+:assumption (or (not x2682) x27872 x31468)
+:assumption (or x6865 (not x19633))
+:assumption (or (not x20427) (not x6722))
+:assumption (or x6825 x17305 (not x2408) x7503 x31769 x3631 (not x5086) (not x28169) (not x25547))
+:assumption (or (not x1434) x4837)
+:assumption (or (not x23548) (not x19428))
+:assumption (or (not x13766) x3755)
+:assumption (or (not x10024) (not x25988))
+:assumption (or x6381 (not x8617))
+:assumption (or (not x2932) (not x11759))
+:assumption (or x19640 x11952)
+:assumption (or x15777 (not x5886) x3671)
+:assumption (or x22802 x27047)
+:assumption (or x17331 x24424 x12256)
+:assumption (or x28592 x11158)
+:assumption (or (not x14929) x26078)
+:assumption (or (not x1712) (not x14412))
+:assumption (or x12936 x26466)
+:assumption (or (not x13632) (not x6099))
+:assumption (or (not x24500) x15882)
+:assumption (or x6993 x14254)
+:assumption (or x28789 x1542 (not x15380) x18172)
+:assumption (or x29831 x14822)
+:assumption (or x7958 x20811)
+:assumption (or (not x31628) x10349)
+:assumption (or (not x20040) (not x19501))
+:assumption (or (not x10783) (not x22584))
+:assumption (or x26099 (not x5029))
+:assumption (or (not x30230) (not x12545))
+:assumption (or (not x20818) (not x7087))
+:assumption (or (not x9199) (not x19881))
+:assumption (or (not x16655) (not x7867))
+:assumption (or x10973 x31837)
+:assumption (or x18042 (not x19192))
+:assumption (or x6444 x25289)
+:assumption (or (not x1761) (not x20679))
+:assumption (or x9913 (not x762) (not x28512) x5394)
+:assumption (or x30345 (not x24098) x14118 (not x5609))
+:assumption (or (not x7585) (not x11113))
+:assumption (or x28619 (not x7815))
+:assumption (or x23244 (not x15795) x13463)
+:assumption (or (not x14012) (not x28639))
+:assumption (or x23244 x8002 x2062 x4677)
+:assumption (or (not x22241) x15861)
+:assumption (or (not x25366) x17129)
+:assumption (or x19702 (not x26941))
+:assumption (or x2473 x10571)
+:assumption (or (not x25274) (not x7357) x1722)
+:assumption (or (not x28974) (not x4030))
+:assumption (or (not x18840) x8019)
+:assumption (or (not x29033) x28755 (not x11401) x28305 x26149 (not x4378))
+:assumption (or (not x10151) (not x13956))
+:assumption (or x31155 x17075 x22768 x24486 (not x6794))
+:assumption (or x9025 x10563)
+:assumption (or (not x4434) (not x7913) (not x4064) x18871 (not x10375) x12939 (not x24284) (not x30047))
+:assumption (or x21815 x17466)
+:assumption (or (not x21478) (not x14446) x2673 (not x19358) x1537)
+:assumption (or (not x17891) (not x19416))
+:assumption (or x19905 x8002 x28104)
+:assumption (or (not x1791) x21546)
+:assumption (or x18500 (not x27576))
+:assumption (or x30058 (not x26897))
+:assumption (or (not x18859) (not x8089))
+:assumption (or x26122 x28643 x29702 (not x24179) x8693)
+:assumption (or x22678 (not x22227))
+:assumption (or x16768 (not x13244))
+:assumption (or (not x28186) x7809 (not x9008))
+:assumption (or (not x10155) (not x30185))
+:assumption (or (not x31294) (not x4809))
+:assumption (or (not x28071) (not x28244))
+:assumption (or (not x17534) x25659 x19992 x15799 (not x22305))
+:assumption (or x288 (not x18040))
+:assumption (or x4669 x26367)
+:assumption (or (not x3579) (not x14313))
+:assumption (or (not x1502) (not x26757))
+:assumption (or x21902 x16174)
+:assumption (or x26505 (not x2276))
+:assumption (or x1612 x22746)
+:assumption (or (not x6984) x12115)
+:assumption (or x3663 x5938)
+:assumption (or (not x2437) x14102 x4375 (not x3221) x31573 (not x24609))
+:assumption (or (not x13401) x20584)
+:assumption (or x14888 x10368)
+:assumption (or x17832 x25277)
+:assumption (or x30947 (not x17974))
+:assumption (or x4725 x20282)
+:assumption (or (not x6969) x14370)
+:assumption (or x29563 x11857 (not x24067) x7655)
+:assumption (or (not x17303) x14167)
+:assumption (or x14848 (not x4352))
+:assumption (or x11482 x8901)
+:assumption (or x18026 x8358)
+:assumption (or (not x7851) x29611)
+:assumption (or (not x8372) x13467)
+:assumption (or x1169 (not x24658))
+:assumption (or (not x23244) x8179)
+:assumption (or x6358 (not x22001))
+:assumption (or x692 (not x21298))
+:assumption (or x26325 x8531)
+:assumption (or x31325 x13079)
+:assumption (or (not x7631) (not x25500) (not x31066) x16953 x16215 (not x9355) (not x12206) x31637 x20484)
+:assumption (or (not x5367) (not x15786))
+:assumption (or (not x22446) (not x27083))
+:assumption (or (not x10167) x6154)
+:assumption (or (not x26121) x1654)
+:assumption (or (not x24367) (not x18594))
+:assumption (or (not x9925) x26103)
+:assumption (or (not x18378) x20672)
+:assumption (or x5364 (not x4371))
+:assumption (or (not x7012) x23236)
+:assumption (or (not x15836) x26601)
+:assumption (or x1630 (not x3852))
+:assumption (or (not x9008) (not x11315) (not x17122))
+:assumption (or (not x25451) (not x14833))
+:assumption (or x7609 x12934)
+:assumption (or x27935 x2408)
+:assumption (or (not x21515) x21877)
+:assumption (or (not x2606) (not x5214))
+:assumption (or x18859 (not x11353))
+:assumption (or x22518 x26829)
+:assumption (or (not x10897) (not x8692) x25914 (not x3080) (not x8265) (not x28093))
+:assumption (or x18859 (not x25446))
+:assumption (or x22020 x22103)
+:assumption (or x8335 x16884)
+:assumption (or (not x641) (not x10721))
+:assumption (or x26087 x964)
+:assumption (or (not x4300) x21906)
+:assumption (or x6294 x16279)
+:assumption (or x15427 x4312)
+:assumption (or (not x7172) (not x5642) (not x22860) x15395 x30352 (not x4116) (not x15069) (not x7519) (not x15134))
+:assumption (or (not x1248) x2342)
+:assumption (or x480 x16878)
+:assumption (or x2703 x6149)
+:assumption (or x5245 (not x10584) (not x17667) (not x3387))
+:assumption (or (not x10666) (not x2389))
+:assumption (or (not x13522) x23836)
+:assumption (or (not x3674) (not x30675) (not x5025) x28890)
+:assumption (or x9647 (not x8904))
+:assumption (or (not x24537) (not x25178))
+:assumption (or (not x7198) x20417)
+:assumption (or x20691 x28412)
+:assumption (or (not x133) (not x5452))
+:assumption (or x22637 (not x21371))
+:assumption (or (not x28038) (not x24179))
+:assumption (or (not x3001) (not x6795) x15894 x7687 (not x23609))
+:assumption (or (not x3262) (not x16108))
+:assumption (or (not x27095) x22177)
+:assumption (or (not x11116) x16355)
+:assumption (or x7563 (not x21815))
+:assumption (or x21202 (not x17161) x28959)
+:assumption (or x12330 x16662)
+:assumption (or (not x13043) x25720)
+:assumption (or x27086 (not x9713))
+:assumption (or x964 (not x16637))
+:assumption (or x9002 (not x1090))
+:assumption (or (not x1440) x16721)
+:assumption (or (not x20511) x21969)
+:assumption (or x23841 x28890 (not x6902) (not x5025))
+:assumption (or (not x13956) x3388 x27359)
+:assumption (or x11989 (not x5093))
+:assumption (or (not x24282) x92 (not x188) x24399 (not x11783) (not x12908) x25841)
+:assumption (or (not x22534) (not x22776))
+:assumption (or (not x30437) (not x17016))
+:assumption (or x23240 x23453)
+:assumption (or (not x26036) x28802 (not x13213) (not x18498))
+:assumption (or (not x3494) x19836 (not x18069) x22963)
+:assumption (or (not x2024) (not x29114))
+:assumption (or (not x18330) (not x545))
+:assumption (or x25856 x1329)
+:assumption (or (not x22421) x28600)
+:assumption (or x30590 x20342)
+:assumption (or x27805 (not x16723))
+:assumption (or x9910 x9181)
+:assumption (or x27832 x21795)
+:assumption (or (not x18290) (not x13671))
+:assumption (or (not x4383) (not x27726))
+:assumption (or x13247 (not x24207))
+:assumption (or x8235 x13956)
+:assumption (or x7589 x10577)
+:assumption (or x10593 x22915)
+:assumption (or (not x31052) (not x8900))
+:assumption (or (not x27156) (not x17294) x8002)
+:assumption (or x14559 x16801)
+:assumption (or x19804 (not x5181))
+:assumption (or x26893 (not x17288) (not x29400) x8246 x22505)
+:assumption (or (not x14688) x22685)
+:assumption (or (not x9181) (not x10284))
+:assumption (or x31110 x4232)
+:assumption (or (not x6556) (not x23806))
+:assumption (or (not x28655) (not x634))
+:assumption (or (not x11562) (not x30963))
+:assumption (or (not x1402) (not x10040))
+:assumption (or x27928 x26744)
+:assumption (or (not x26397) (not x25073))
+:assumption (or (not x23377) x13915)
+:assumption (or x3782 (not x26292) x20781)
+:assumption (or x11813 (not x18942))
+:assumption (or (not x23068) x22395)
+:assumption (or x27537 x27768)
+:assumption (or (not x13633) x21011)
+:assumption (or x15453 (not x131) x17662 (not x23401))
+:assumption (or (not x23244) (not x18460))
+:assumption (or (not x21312) (not x10189))
+:assumption (or x29916 x1393)
+:assumption (or x10431 (not x9345) (not x23244) x9176 (not x20396))
+:assumption (or x518 x16682)
+:assumption (or x923 x7990 x8636)
+:assumption (or x28973 x3688)
+:assumption (or (not x27725) (not x27487))
+:assumption (or x10169 x29516)
+:assumption (or x4759 (not x13122))
+:assumption (or (not x21592) x22390)
+:assumption (or x12782 x6933)
+:assumption (or (not x1393) (not x3175))
+:assumption (or x28885 (not x12996))
+:assumption (or (not x20326) x19678)
+:assumption (or x628 x9886)
+:assumption (or x31302 x21298)
+:assumption (or x26629 x5845 x27013 (not x13205) (not x23769))
+:assumption (or x30657 x23193)
+:assumption (or x11512 x4955)
+:assumption (or (not x5509) (not x28967))
+:assumption (or (not x25110) x24746)
+:assumption (or (not x29148) x827 x27992)
+:assumption (or (not x4277) x1255)
+:assumption (or (not x17906) x26200)
+:assumption (or x24067 x6523)
+:assumption (or x26307 x13732)
+:assumption (or (not x15846) (not x29072))
+:assumption (or (not x30790) x26136)
+:assumption (or (not x7357) (not x12380))
+:assumption (or (not x26031) x24283)
+:assumption (or (not x31501) (not x30357))
+:assumption (or (not x19538) x26816)
+:assumption (or x13479 x22534)
+:assumption (or x23367 (not x26674))
+:assumption (or x20262 x905)
+:assumption (or x5628 (not x21633) x25277 x19869)
+:assumption (or x16310 (not x3728))
+:assumption (or (not x1352) x22012 x8002)
+:assumption (or (not x9192) x30356)
+:assumption (or x3252 x4640)
+:assumption (or (not x9188) (not x17281))
+:assumption (or (not x8451) (not x22573))
+:assumption (or (not x16680) x24655)
+:assumption (or (not x9970) x6435)
+:assumption (or x30168 (not x27296))
+:assumption (or x12056 (not x18372))
+:assumption (or x60 x21766)
+:assumption (or x31477 (not x16455) x7537 x23399 x31557)
+:assumption (or x18316 x25835)
+:assumption (or (not x13056) (not x12008))
+:assumption (or x21190 (not x25461))
+:assumption (or x2392 x26357 (not x2327))
+:assumption (or (not x2236) (not x9507))
+:assumption (or x28296 x12127)
+:assumption (or x1042 x29175)
+:assumption (or (not x7761) x26365)
+:assumption (or x11249 (not x8395))
+:assumption (or (not x4320) x16090 x19992 (not x24070) x27119)
+:assumption (or (not x11488) x30934)
+:assumption (or x14839 x1557 (not x16505))
+:assumption (or (not x31110) (not x9400))
+:assumption (or (not x31736) (not x28973))
+:assumption (or (not x4631) x28914)
+:assumption (or x19190 x26107)
+:assumption (or x7615 x15925)
+:assumption (or x4603 x2912)
+:assumption (or (not x29995) (not x21298) x12255)
+:assumption (or (not x13782) (not x21601))
+:assumption (or x181 (not x18990))
+:assumption (or (not x10214) (not x29909))
+:assumption (or x30452 (not x1620) x23675 (not x28912) (not x2521) x24734)
+:assumption (or x25659 (not x5913) x12892)
+:assumption (or (not x30649) (not x24417) x7951 x3820 x23118 x13832 x6641)
+:assumption (or x20071 x3494)
+:assumption (or x6288 (not x24655))
+:assumption (or x26312 (not x2753))
+:assumption (or x24679 x2863)
+:assumption (or (not x920) x3151)
+:assumption (or (not x5952) x23897)
+:assumption (or x9520 x26585)
+:assumption (or x20843 (not x27783))
+:assumption (or (not x13970) x6388)
+:assumption (or x23677 x8209)
+:assumption (or (not x1590) (not x4964))
+:assumption (or (not x10730) (not x7124))
+:assumption (or (not x29066) (not x12282))
+:assumption (or x15410 (not x27708))
+:assumption (or (not x9591) x2077)
+:assumption (or x6543 (not x23330))
+:assumption (or (not x9411) x30654)
+:assumption (or x4217 x13196 x5157 (not x19145) (not x22814) (not x10738) (not x9100) x3336)
+:assumption (or x2129 (not x233) x13839 x5924 x889 (not x31589) (not x23863))
+:assumption (or (not x14028) x1702)
+:assumption (or x18042 (not x14197))
+:assumption (or (not x734) x9918)
+:assumption (or x28885 (not x13646))
+:assumption (or x2294 (not x13957))
+:assumption (or x5649 (not x26038))
+:assumption (or (not x17058) x2358 x27045)
+:assumption (or x30048 (not x5314))
+:assumption (or (not x3859) (not x9307))
+:assumption (or x12076 (not x4686))
+:assumption (or x6530 (not x13763))
+:assumption (or x19266 x24180)
+:assumption (or (not x17853) x14416 (not x10758) x7180 x13571)
+:assumption (or x24471 x29317)
+:assumption (or x23686 (not x6093))
+:assumption (or x16098 (not x24952))
+:assumption (or x10346 x27559)
+:assumption (or x2273 (not x5025))
+:assumption (or (not x19258) x31170 (not x1547))
+:assumption (or x17022 (not x55))
+:assumption (or (not x1626) x15921)
+:assumption (or x4570 (not x586))
+:assumption (or x27381 (not x4451))
+:assumption (or x5558 (not x16231))
+:assumption (or x19858 x20152)
+:assumption (or (not x29631) x17365)
+:assumption (or x10555 (not x17421))
+:assumption (or x18289 x11555 (not x4822) (not x31849))
+:assumption (or (not x22367) x16510)
+:assumption (or (not x18514) x1503)
+:assumption (or (not x9439) (not x26020))
+:assumption (or x25099 x13192)
+:assumption (or (not x4336) (not x19944))
+:assumption (or (not x7286) (not x29159) x28456)
+:assumption (or x21710 x8587)
+:assumption (or x8198 x16350)
+:assumption (or x5968 (not x13431))
+:assumption (or (not x28525) (not x22657))
+:assumption (or x28364 x27275 x8002)
+:assumption (or x20221 (not x30842))
+:assumption (or (not x15074) x9794)
+:assumption (or x13956 x5840 x23244 (not x18698) x23318 x8002)
+:assumption (or x5748 (not x15546))
+:assumption (or x6191 (not x521))
+:assumption (or (not x14287) x26628)
+:assumption (or x4238 x26611)
+:assumption (or x27537 x18533 (not x5288))
+:assumption (or x4675 (not x26221))
+:assumption (or x12172 x15735)
+:assumption (or x13941 (not x15184))
+:assumption (or (not x31026) x20775)
+:assumption (or (not x3396) x31256)
+:assumption (or (not x27553) (not x19298))
+:assumption (or (not x9008) (not x26239))
+:assumption (or (not x7281) (not x18837))
+:assumption (or x16137 (not x26129))
+:assumption (or x12580 (not x30928))
+:assumption (or x9112 (not x6383))
+:assumption (or x11278 (not x29228) (not x17691) x14805)
+:assumption (or x28596 x7212)
+:assumption (or (not x4069) (not x22339))
+:assumption (or (not x11446) (not x29815))
+:assumption (or (not x6735) (not x7718) x17291 (not x8819))
+:assumption (or (not x11754) x25751)
+:assumption (or (not x30824) (not x2230))
+:assumption (or (not x22720) x26565)
+:assumption (or (not x29869) (not x7954))
+:assumption (or x29649 (not x4219))
+:assumption (or x17908 (not x18200))
+:assumption (or (not x30436) x26220)
+:assumption (or (not x28656) (not x29403))
+:assumption (or (not x15542) x5980 (not x12446))
+:assumption (or (not x31888) (not x3356))
+:assumption (or (not x21985) (not x22171))
+:assumption (or (not x8487) (not x21882))
+:assumption (or x27187 (not x10488))
+:assumption (or (not x18527) x5634)
+:assumption (or (not x5116) x15141)
+:assumption (or (not x2565) (not x4730))
+:assumption (or x18901 (not x18524))
+:assumption (or x10114 x17302)
+:assumption (or (not x8002) x2561)
+:assumption (or (not x3435) (not x1865))
+:assumption (or x10043 (not x11317))
+:assumption (or x4725 (not x8596))
+:assumption (or (not x16510) (not x3744))
+:assumption (or x16375 (not x14852) x14821 (not x12593) x20504 (not x25330) (not x15445))
+:assumption (or x9366 x8484)
+:assumption (or x2545 (not x22463))
+:assumption (or (not x13562) x22062)
+:assumption (or (not x17478) (not x14718))
+:assumption (or x12041 x7859)
+:assumption (or (not x23171) x18930)
+:assumption (or x18871 (not x28781))
+:assumption (or (not x12679) (not x18217))
+:assumption (or (not x13298) x23869)
+:assumption (or (not x1617) x24475)
+:assumption (or x20687 x30042)
+:assumption (or x23274 (not x26524) x29218 x11914)
+:assumption (or x15728 x24761)
+:assumption (or x31430 x8986)
+:assumption (or (not x1582) (not x18675))
+:assumption (or x24580 x17434)
+:assumption (or x3492 (not x1847))
+:assumption (or x26687 x10949)
+:assumption (or x27584 x10254)
+:assumption (or (not x30113) (not x12237))
+:assumption (or (not x6649) x3756)
+:assumption (or (not x16025) (not x18942) (not x23663))
+:assumption (or x7497 x23317)
+:assumption (or x23502 x13254)
+:assumption (or x27962 (not x9794))
+:assumption (or (not x6594) (not x14574))
+:assumption (or (not x1665) (not x31684))
+:assumption (or (not x31903) (not x24828))
+:assumption (or x20233 x30208)
+:assumption (or x16946 x5440)
+:assumption (or (not x9025) (not x2334) (not x13900))
+:assumption (or (not x9350) (not x16654))
+:assumption (or x3145 x8758)
+:assumption (or (not x4078) (not x1313))
+:assumption (or x13039 x15358)
+:assumption (or (not x601) x10439)
+:assumption (or x14324 x3736 (not x21196) x12631 x21899)
+:assumption (or (not x24859) x5528)
+:assumption (or (not x24508) (not x20552))
+:assumption (or x16240 x28825)
+:assumption (or (not x9008) (not x4378) (not x5528) x25818 (not x28406))
+:assumption (or x19740 x16686 (not x15920) (not x6335))
+:assumption (or (not x16085) x11662 x1684 (not x22721) (not x89) x12136)
+:assumption (or x656 x1670)
+:assumption (or (not x13430) (not x16335))
+:assumption (or (not x25653) (not x17288))
+:assumption (or (not x12856) (not x14182))
+:assumption (or (not x28885) x31619)
+:assumption (or (not x30403) (not x30113) (not x18131) (not x5431))
+:assumption (or (not x28719) x6712)
+:assumption (or (not x29809) (not x19721))
+:assumption (or x26408 x16910)
+:assumption (or x26892 (not x3422))
+:assumption (or (not x7128) (not x14522) (not x24329))
+:assumption (or (not x4972) (not x23521))
+:assumption (or x19985 (not x10081) (not x28979))
+:assumption (or x4263 x26670)
+:assumption (or x5528 x16995)
+:assumption (or x16510 (not x29959) (not x7010) x31466 (not x6606) (not x21815) x6432)
+:assumption (or x7895 x8531)
+:assumption (or (not x5394) (not x14693))
+:assumption (or x1814 (not x7176))
+:assumption (or (not x30224) (not x13956) x8275)
+:assumption (or (not x3583) (not x5728))
+:assumption (or (not x25492) x19979)
+:assumption (or (not x31489) (not x8054))
+:assumption (or (not x10092) x26746)
+:assumption (or x16648 (not x14077))
+:assumption (or (not x30192) (not x4974))
+:assumption (or x1053 (not x30523))
+:assumption (or x31094 (not x1407))
+:assumption (or (not x18847) (not x13411))
+:assumption (or (not x4523) x13331)
+:assumption (or (not x4363) (not x3516))
+:assumption (or (not x11457) x21687)
+:assumption (or (not x2044) (not x26086))
+:assumption (or (not x15799) x24795)
+:assumption (or x6450 x1001)
+:assumption (or (not x20741) (not x27866) x26279 x24900)
+:assumption (or x8491 (not x3001))
+:assumption (or (not x31393) (not x19815))
+:assumption (or x24756 x21765)
+:assumption (or (not x16872) (not x380))
+:assumption (or x15668 (not x27943) (not x9491) x26905 x12518 (not x23579) (not x24406) x25960)
+:assumption (or x8790 x19067)
+:assumption (or (not x27286) x6942)
+:assumption (or (not x2669) (not x590))
+:assumption (or (not x23661) x22302)
+:assumption (or (not x10841) (not x17258))
+:assumption (or (not x13717) (not x26817))
+:assumption (or x5675 x13184 x10226 (not x10379) (not x17382))
+:assumption (or x9284 x18001)
+:assumption (or (not x31624) (not x6951) x24327 (not x13576))
+:assumption (or (not x12935) x10553)
+:assumption (or x30210 (not x514))
+:assumption (or x14380 (not x13604))
+:assumption (or x13956 x13411 (not x20195))
+:assumption (or x14462 x3074)
+:assumption (or (not x29711) x15852)
+:assumption (or x19391 x14766)
+:assumption (or x3514 (not x3706))
+:assumption (or (not x26802) x29861)
+:assumption (or (not x10242) (not x31751))
+:assumption (or (not x8002) (not x12584))
+:assumption (or (not x28441) (not x23051))
+:assumption (or x25820 x28328 (not x5613) (not x25207))
+:assumption (or (not x28607) x5667)
+:assumption (or x19786 x9046)
+:assumption (or x6003 (not x7331) x30311)
+:assumption (or (not x14707) x19432)
+:assumption (or (not x30907) x21298)
+:assumption (or (not x14357) (not x21058))
+:assumption (or (not x7522) x29649)
+:assumption (or (not x10796) (not x8602) x12505)
+:assumption (or x27784 (not x16185))
+:assumption (or x22812 x15914)
+:assumption (or x21685 x7759)
+:assumption (or x8002 x13089)
+:assumption (or (not x28682) (not x16736))
+:assumption (or x5309 (not x22844))
+:assumption (or x12676 (not x26374))
+:assumption (or (not x25929) x29268)
+:assumption (or x16606 (not x5921))
+:assumption (or (not x27636) (not x28254) x28778)
+:assumption (or (not x4654) x26233 (not x27047) (not x22802))
+:assumption (or (not x827) (not x9040))
+:assumption (or (not x7914) (not x5343) (not x12205) (not x20215) (not x23846) (not x27930) x10281 x31591)
+:assumption (or x27015 (not x1036))
+:assumption (or (not x7860) x30751)
+:assumption (or (not x5225) x23240)
+:assumption (or (not x6149) (not x25147))
+:assumption (or x14839 x21121)
+:assumption (or x3183 x28651)
+:assumption (or x19696 (not x31782) (not x8002) x17610)
+:assumption (or (not x30113) x30286)
+:assumption (or x14168 (not x11638))
+:assumption (or (not x3645) (not x4375))
+:assumption (or (not x19258) (not x2921))
+:assumption (or (not x8560) x9008 (not x17312))
+:assumption (or x17993 x31916)
+:assumption (or (not x15083) x25221)
+:assumption (or x23877 x19886)
+:assumption (or x7254 (not x29487))
+:assumption (or x941 (not x14471) x3732 (not x23493) (not x16087))
+:assumption (or (not x13640) (not x7971) x14839)
+:assumption (or x27671 x14743)
+:assumption (or x8033 x8002)
+:assumption (or (not x9804) (not x7970))
+:assumption (or (not x13245) x28328 (not x30110) x30694)
+:assumption (or (not x8120) x15728)
+:assumption (or x20502 (not x27233) (not x21633) (not x15016))
+:assumption (or x25701 (not x30265))
+:assumption (or (not x31917) (not x22917))
+:assumption (or (not x31435) x10854)
+:assumption (or x24035 x3798)
+:assumption (or (not x29484) (not x5628))
+:assumption (or (not x21773) (not x11371) (not x31682))
+:assumption (or (not x4536) (not x8477) x9008)
+:assumption (or (not x16624) (not x10473))
+:assumption (or (not x3276) (not x22877))
+:assumption (or x16100 x7771)
+:assumption (or x27867 (not x26564) (not x18289) (not x4822))
+:assumption (or x23381 (not x2166))
+:assumption (or (not x3996) x10037)
+:assumption (or (not x29388) x18893)
+:assumption (or (not x19188) (not x24471))
+:assumption (or (not x8480) x8137)
+:assumption (or (not x1275) (not x26396))
+:assumption (or (not x13832) (not x3820))
+:assumption (or x3910 x31800)
+:assumption (or x24181 (not x27577))
+:assumption (or (not x27468) x25639)
+:assumption (or (not x21543) (not x9883))
+:assumption (or x22091 (not x15556))
+:assumption (or (not x25276) (not x27652))
+:assumption (or x1859 x23825 (not x4659) x14619 x22873 x17116 x9697)
+:assumption (or (not x18817) (not x21633))
+:assumption (or (not x31806) x22333)
+:assumption (or x23085 x24581)
+:assumption (or (not x1700) x31244)
+:assumption (or (not x4976) x28830)
+:assumption (or x27597 x19558 x12923 x21624)
+:assumption (or x20236 x18982)
+:assumption (or (not x31611) x2131)
+:assumption (or x7177 x13088 (not x30348))
+:assumption (or x3689 (not x7515) x19428)
+:assumption (or x28855 (not x28470))
+:assumption (or (not x29643) (not x5170))
+:assumption (or (not x2204) x3357)
+:assumption (or x18975 (not x26376))
+:assumption (or x6664 (not x12589))
+:assumption (or x16025 x5838 (not x24756))
+:assumption (or x18208 (not x576))
+:assumption (or x12753 x5857)
+:assumption (or x11474 (not x18971))
+:assumption (or (not x16910) x16410 (not x24756))
+:assumption (or x19641 x4721 x9008)
+:assumption (or (not x846) x10023)
+:assumption (or x28130 x17359 (not x26432) (not x1504))
+:assumption (or (not x805) (not x5528) x9019 (not x28342) (not x9008))
+:assumption (or x19528 (not x23413))
+:assumption (or x13415 (not x23970))
+:assumption (or x21002 (not x5202))
+:assumption (or (not x31748) x28138)
+:assumption (or x29385 x14455)
+:assumption (or (not x9820) x15617)
+:assumption (or x9383 x23737)
+:assumption (or (not x26065) (not x30267))
+:assumption (or (not x5933) x16367)
+:assumption (or (not x14334) (not x1838))
+:assumption (or (not x22920) x7511)
+:assumption (or (not x1542) x3358)
+:assumption (or x2707 (not x6644))
+:assumption (or x22444 (not x1372))
+:assumption (or (not x18042) x15471 (not x9647) x13336)
+:assumption (or x12524 x13450 (not x7318) (not x3761))
+:assumption (or x28242 x28551)
+:assumption (or x789 x30113)
+:assumption (or x18420 (not x6216))
+:assumption (or (not x10874) (not x16280))
+:assumption (or (not x2882) x5966)
+:assumption (or (not x25713) x30131)
+:assumption (or x4981 (not x29312))
+:assumption (or x4080 (not x30381))
+:assumption (or x1287 (not x13277))
+:assumption (or (not x24048) x30138 (not x26897))
+:assumption (or x28462 x31550)
+:assumption (or (not x27915) (not x26014) (not x6289))
+:assumption (or x15598 (not x17960))
+:assumption (or (not x20141) (not x18841))
+:assumption (or (not x4547) (not x26420) x25659)
+:assumption (or (not x21279) x30239)
+:assumption (or x15883 x5436)
+:assumption (or x10673 x3687)
+:assumption (or x24414 x18836)
+:assumption (or x14846 (not x23322))
+:assumption (or x14252 (not x22335) (not x25659))
+:assumption (or x17587 (not x11276))
+:assumption (or x15250 (not x28437))
+:assumption (or x6115 x4695)
+:assumption (or (not x10874) x2208)
+:assumption (or x16191 (not x5028))
+:assumption (or (not x22741) (not x5528))
+:assumption (or x27471 x5684)
+:assumption (or x8194 x10348)
+:assumption (or x13672 x16809 (not x10083) x24937 x11168)
+:assumption (or x20362 (not x14456))
+:assumption (or x18132 x2145)
+:assumption (or (not x30659) (not x12219))
+:assumption (or x5056 (not x20782) (not x30763) x27517)
+:assumption (or x8643 x22309)
+:assumption (or x13724 x16025)
+:assumption (or x25580 x10001)
+:assumption (or x9918 (not x25100) x29020 (not x31331) (not x6775) x23144 x30823 x25562 x280 x5890)
+:assumption (or (not x4143) x25142 x18730)
+:assumption (or x17012 (not x23343) (not x19672) (not x22893) (not x11155))
+:assumption (or x10450 (not x15097))
+:assumption (or (not x18345) x13905)
+:assumption (or x17929 (not x1818))
+:assumption (or (not x28602) x26682 x7903 x11168)
+:assumption (or x23986 x7921)
+:assumption (or x30146 x16745)
+:assumption (or (not x12213) (not x3359))
+:assumption (or (not x725) x16025 x10163)
+:assumption (or (not x6742) x21813 (not x27781) (not x3001) (not x22808) (not x2441))
+:assumption (or x20571 x16371)
+:assumption (or (not x27563) x18160)
+:assumption (or x21450 x18042 (not x24722) (not x11562))
+:assumption (or (not x17410) x16510)
+:assumption (or (not x3324) (not x6753))
+:assumption (or x12812 (not x28044))
+:assumption (or (not x15603) x29192)
+:assumption (or (not x26269) (not x16362) x2661 (not x7909) x21790)
+:assumption (or x2353 x16510)
+:assumption (or x29101 x19074)
+:assumption (or (not x18767) (not x10931))
+:assumption (or x22495 x3373)
+:assumption (or (not x9505) x14847)
+:assumption (or x2133 (not x7741) (not x27228) x7835 (not x16335) x12651 x20173)
+:assumption (or x25135 x24739)
+:assumption (or (not x26002) (not x4902))
+:assumption (or (not x664) x22064)
+:assumption (or x26661 (not x18333))
+:assumption (or x8361 (not x6870) x17257)
+:assumption (or x15796 (not x1393))
+:assumption (or (not x6947) x9715)
+:assumption (or x11192 (not x23812) (not x30113) x22833)
+:assumption (or x25035 (not x24836))
+:assumption (or x19707 x159)
+:assumption (or (not x26670) x11547)
+:assumption (or x30393 (not x7580))
+:assumption (or x5913 (not x12892))
+:assumption (or x21728 (not x28977))
+:assumption (or x20257 x28476)
+:assumption (or x7631 x10892)
+:assumption (or (not x6874) x10184)
+:assumption (or (not x918) x8690 x398 x31829)
+:assumption (or (not x16510) (not x21815) (not x3435) x28912 (not x1806))
+:assumption (or (not x12716) x20028)
+:assumption (or x26934 (not x19399))
+:assumption (or (not x12612) (not x13655))
+:assumption (or (not x31693) x24923)
+:assumption (or (not x26908) x1643)
+:assumption (or (not x10105) x7191)
+:assumption (or (not x29476) x28550)
+:assumption (or x22674 (not x1065))
+:assumption (or (not x15824) (not x14620))
+:assumption (or x1258 (not x6605) x31282 (not x30492) x22340 (not x2744) (not x20062) x24379 (not x10208) x20748)
+:assumption (or (not x13026) x13407)
+:assumption (or (not x30827) x31167)
+:assumption (or x1547 (not x17075) x4661 (not x218))
+:assumption (or (not x34) x9606)
+:assumption (or (not x27333) (not x25249))
+:assumption (or (not x29312) (not x15892) (not x17006))
+:assumption (or x28242 (not x26620))
+:assumption (or (not x4316) (not x26998))
+:assumption (or (not x50) (not x20343))
+:assumption (or x28496 (not x29334) (not x14967) (not x24652) x9008 (not x18266) (not x26023) (not x31352))
+:assumption (or x5322 (not x3671))
+:assumption (or (not x6563) (not x3771))
+:assumption (or x7681 (not x14670))
+:assumption (or (not x29536) (not x15382))
+:assumption (or x4364 x7810)
+:assumption (or x11088 (not x28715))
+:assumption (or (not x8865) (not x4882))
+:assumption (or (not x29745) (not x14347) x17214)
+:assumption (or x28885 x22852 (not x24332) (not x16473))
+:assumption (or x7249 x4305)
+:assumption (or x5538 (not x20915))
+:assumption (or (not x7626) x27203)
+:assumption (or x6329 x13775)
+:assumption (or (not x21158) (not x73))
+:assumption (or x11364 x6294)
+:assumption (or x2357 (not x31056))
+:assumption (or x25519 x7743)
+:assumption (or x18042 x19402)
+:assumption (or x23027 (not x27955))
+:assumption (or x18537 x6566 x6969 (not x16974))
+:assumption (or (not x22582) (not x1503))
+:assumption (or (not x24904) (not x31479))
+:assumption (or x31860 (not x13923))
+:assumption (or (not x11281) (not x7169))
+:assumption (or (not x23036) (not x27783))
+:assumption (or x12533 x25659)
+:assumption (or (not x27192) (not x24376))
+:assumption (or (not x29620) (not x29439))
+:assumption (or (not x30257) x24525)
+:assumption (or x23980 (not x7884))
+:assumption (or x15161 x6076)
+:assumption (or x16559 x10867 (not x6562) (not x8237) (not x15256))
+:assumption (or (not x18690) x28290)
+:assumption (or x9320 x2772)
+:assumption (or x916 (not x21747))
+:assumption (or (not x21905) (not x5590))
+:assumption (or x29188 (not x20269))
+:assumption (or (not x9840) (not x22857))
+:assumption (or x22184 (not x15979))
+:assumption (or (not x18566) (not x31350))
+:assumption (or (not x15947) (not x26890) (not x23244) x29562)
+:assumption (or (not x30732) (not x31098))
+:assumption (or (not x13624) x14055)
+:assumption (or x19228 x13630)
+:assumption (or (not x6193) (not x11112))
+:assumption (or (not x9801) x4349 (not x7730))
+:assumption (or x2943 (not x18358))
+:assumption (or x27863 x8402)
+:assumption (or (not x29959) (not x30127) x14339 x29638 (not x23564))
+:assumption (or x25649 x3782)
+:assumption (or x24979 (not x12312) (not x1253) (not x17177) x16333 x2239)
+:assumption (or x4594 x10080)
+:assumption (or (not x28975) (not x5679) (not x5785) x30547 (not x8101) x22170 x25561 (not x19111))
+:assumption (or (not x27870) x29499)
+:assumption (or (not x20208) x27135)
+:assumption (or x16201 (not x7201))
+:assumption (or (not x13189) (not x4744))
+:assumption (or x10536 (not x2005))
+:assumption (or x10361 x23633 (not x18531) x30568 (not x15263) (not x29445))
+:assumption (or (not x18519) (not x24415))
+:assumption (or x15555 (not x13799))
+:assumption (or (not x17289) (not x27132))
+:assumption (or (not x25430) x20328)
+:assumption (or (not x25472) (not x23754))
+:assumption (or (not x15336) (not x27010) (not x751))
+:assumption (or x11478 (not x14386))
+:assumption (or (not x9622) x27214)
+:assumption (or (not x24725) x4421)
+:assumption (or (not x4448) (not x6258))
+:assumption (or x30928 (not x13153))
+:assumption (or x26959 x17751)
+:assumption (or (not x2240) x22327)
+:assumption (or (not x4741) (not x29644))
+:assumption (or x29465 (not x28437))
+:assumption (or (not x6075) x4421)
+:assumption (or (not x17183) (not x14537) x16304 (not x8347))
+:assumption (or (not x11092) (not x23244))
+:assumption (or (not x24973) x11792)
+:assumption (or (not x17367) x19428)
+:assumption (or (not x15129) x30842)
+:assumption (or x25649 x2334)
+:assumption (or x14517 (not x5669))
+:assumption (or x22472 (not x11577))
+:assumption (or x8692 (not x28093) x8265 (not x7074) x10897 (not x25914))
+:assumption (or (not x8953) x2598)
+:assumption (or (not x31502) (not x2372))
+:assumption (or (not x27061) x31090)
+:assumption (or x996 x7808)
+:assumption (or (not x3635) x8727)
+:assumption (or (not x17446) x7159)
+:assumption (or x5351 x16939 (not x3494))
+:assumption (or x21921 x11774)
+:assumption (or (not x12017) x16890)
+:assumption (or x18963 x12355)
+:assumption (or (not x25878) x16015)
+:assumption (or (not x6405) x218)
+:assumption (or x19484 x17797 x25659)
+:assumption (or (not x22355) x8832)
+:assumption (or x10563 (not x3494))
+:assumption (or (not x25689) x8418)
+:assumption (or x1393 (not x23437))
+:assumption (or (not x10236) x13224 (not x8875) x25942 (not x31635))
+:assumption (or x9656 x10559)
+:assumption (or (not x11073) (not x22816))
+:assumption (or x17359 (not x21794))
+:assumption (or x26564 x4822)
+:assumption (or x20156 (not x30674) (not x17169) (not x27972) x14992)
+:assumption (or x18165 x3373)
+:assumption (or x19122 (not x18764))
+:assumption (or (not x30647) x29645)
+:assumption (or x17955 x21820)
+:assumption (or (not x27182) (not x31654))
+:assumption (or x20053 x21824)
+:assumption (or (not x10064) x1479 x20968)
+:assumption (or (not x11631) (not x19013))
+:assumption (or (not x5788) x26255)
+:assumption (or x18623 (not x22716))
+:assumption (or (not x18152) (not x14251))
+:assumption (or (not x13515) x24505)
+:assumption (or (not x24319) x30789 (not x26593) x30019 (not x24180) (not x6772) x8972)
+:assumption (or x29289 (not x2741))
+:assumption (or (not x23522) x6060)
+:assumption (or (not x26185) x23105)
+:assumption (or (not x601) (not x12189))
+:assumption (or x20978 x6198)
+:assumption (or x6837 x22912 (not x17487) x3789 (not x31871) (not x3761) (not x24346))
+:assumption (or x8866 x13250)
+:assumption (or x29257 (not x8314))
+:assumption (or (not x13960) (not x22550) (not x25911) x16463)
+:assumption (or x24224 x31206)
+:assumption (or x29305 x10035 (not x29312) x25659 x20550)
+:assumption (or x25617 x5589)
+:assumption (or x29298 x11679)
+:assumption (or (not x28588) x4451 (not x24253) (not x1866) (not x203) x25950)
+:assumption (or (not x13047) (not x20823) x17804)
+:assumption (or (not x11678) (not x7896))
+:assumption (or x3759 (not x23848))
+:assumption (or (not x25272) (not x22428))
+:assumption (or (not x11491) (not x996))
+:assumption (or x11294 (not x5146) (not x14150))
+:assumption (or (not x14311) x27788 x21815)
+:assumption (or x28094 x23202)
+:assumption (or (not x620) (not x26037))
+:assumption (or (not x29589) x20620)
+:assumption (or (not x29606) x8686)
+:assumption (or (not x21418) x27702)
+:assumption (or (not x29196) (not x23693))
+:assumption (or (not x2670) x15795 (not x16304) x8208)
+:assumption (or (not x480) x6472)
+:assumption (or x20728 x3489 x1741)
+:assumption (or x5528 (not x18405))
+:assumption (or (not x6106) (not x8002) x20339)
+:assumption (or (not x11990) (not x6232))
+:assumption (or (not x22829) x8646)
+:assumption (or x12039 (not x2245))
+:assumption (or (not x18373) (not x19159))
+:assumption (or x21415 (not x31003))
+:assumption (or (not x11137) x14687)
+:assumption (or (not x15181) (not x31615))
+:assumption (or (not x8002) (not x1130))
+:assumption (or x26432 x2117)
+:assumption (or (not x4007) x10455)
+:assumption (or (not x29936) x15661)
+:assumption (or (not x13572) (not x12083) x15861)
+:assumption (or (not x4098) (not x2259))
+:assumption (or x28653 (not x827) (not x9846))
+:assumption (or (not x31166) (not x29144))
+:assumption (or x9197 (not x12151))
+:assumption (or (not x11520) x6746 x26354)
+:assumption (or (not x6969) (not x3454))
+:assumption (or (not x27622) x12486)
+:assumption (or x22973 (not x8007))
+:assumption (or (not x28188) (not x4601) (not x6951) (not x537) x3906 x28293 x7664 x21226 (not x15192))
+:assumption (or (not x27653) x7748 (not x12367))
+:assumption (or x5367 (not x29482))
+:assumption (or x19685 (not x10464))
+:assumption (or (not x30432) x25659 (not x6512) x20550 (not x288))
+:assumption (or x16117 x18636)
+:assumption (or x1621 x21378)
+:assumption (or (not x20552) x31860)
+:assumption (or (not x14580) x20958)
+:assumption (or x27315 (not x10033) (not x31743) x18628)
+:assumption (or (not x11516) (not x28459))
+:assumption (or x21653 x23848 x17728)
+:assumption (or x15795 (not x17458))
+:assumption (or x18313 (not x21983))
+:assumption (or (not x13774) (not x4433))
+:assumption (or (not x6551) (not x23399))
+:assumption (or (not x25703) x6647 x30100)
+:assumption (or x11818 x7200 x2278)
+:assumption (or x5935 x10909)
+:assumption (or (not x23399) x6346)
+:assumption (or (not x23243) x2284)
+:assumption (or x3439 (not x7542))
+:assumption (or (not x4506) (not x6683))
+:assumption (or (not x27104) x22439)
+:assumption (or x23624 x1042)
+:assumption (or (not x2701) x16003 (not x25572))
+:assumption (or x16676 x27462 x25899 (not x3840))
+:assumption (or x9424 x124)
+:assumption (or x26247 x24313 x1886 x26 x7139)
+:assumption (or (not x19674) x21765)
+:assumption (or x14293 (not x16794))
+:assumption (or x26752 (not x5804))
+:assumption (or x31470 x15951 x2503 (not x9970) (not x31455) x30482)
+:assumption (or (not x23086) x1718)
+:assumption (or (not x1159) x9423)
+:assumption (or (not x21178) (not x1170))
+:assumption (or (not x30472) x17846)
+:assumption (or (not x6563) (not x30518))
+:assumption (or (not x27425) (not x30715) x377 (not x6717))
+:assumption (or (not x17320) x7482)
+:assumption (or (not x3183) (not x30905))
+:assumption (or x1903 (not x11394))
+:assumption (or x482 x4705)
+:assumption (or (not x21035) (not x25028))
+:assumption (or x28579 (not x25303))
+:assumption (or (not x28328) x13574)
+:assumption (or (not x29835) x15953)
+:assumption (or x3195 (not x13948))
+:assumption (or (not x18286) x5564)
+:assumption (or (not x2542) x20465)
+:assumption (or (not x29991) x827)
+:assumption (or x27807 (not x11451))
+:assumption (or x21544 (not x31617) x29050 (not x19026))
+:assumption (or x17075 (not x27500) (not x12635))
+:assumption (or (not x17713) x6427)
+:assumption (or (not x28117) x16355)
+:assumption (or x9690 x15301)
+:assumption (or x25617 (not x151))
+:assumption (or x21815 x19444)
+:assumption (or (not x27465) (not x18832))
+:assumption (or x25314 (not x2701))
+:assumption (or x4000 (not x10998))
+:assumption (or (not x15065) (not x12242))
+:assumption (or (not x30574) x11913)
+:assumption (or x27253 (not x4915))
+:assumption (or (not x11994) (not x10492))
+:assumption (or (not x22831) x23503)
+:assumption (or (not x19056) (not x29874))
+:assumption (or x30577 (not x8326))
+:assumption (or x5239 (not x20577))
+:assumption (or x28327 x16739)
+:assumption (or x31354 x13846)
+:assumption (or x6001 (not x9132))
+:assumption (or (not x29731) (not x5206))
+:assumption (or x18839 (not x822))
+:assumption (or (not x25745) x30030)
+:assumption (or x17459 (not x9989))
+:assumption (or x23244 (not x21037) x964)
+:assumption (or x16880 x31327)
+:assumption (or (not x25748) x28709)
+:assumption (or x12795 x8583)
+:assumption (or (not x4732) (not x18719))
+:assumption (or (not x2323) x15652)
+:assumption (or x12578 (not x27405))
+:assumption (or (not x27948) x2199)
+:assumption (or x15936 (not x5162))
+:assumption (or (not x3506) x573)
+:assumption (or x2091 (not x8792))
+:assumption (or x27919 (not x15407))
+:assumption (or x24601 (not x3568))
+:assumption (or (not x12773) x13035 (not x21517) (not x14376) (not x10979))
+:assumption (or (not x31220) (not x20377))
+:assumption (or x30236 (not x23714) (not x28386))
+:assumption (or x25844 (not x26897))
+:assumption (or x9151 x9961 (not x13956))
+:assumption (or x24334 (not x30799))
+:assumption (or (not x23162) x18733 x17327 x31620)
+:assumption (or (not x12171) x22250)
+:assumption (or x29603 x3306)
+:assumption (or (not x590) (not x16025))
+:assumption (or x28736 (not x26721))
+:assumption (or (not x19575) x13325)
+:assumption (or x14860 x7964)
+:assumption (or (not x15799) x4737)
+:assumption (or (not x18185) x8030)
+:assumption (or x25256 (not x28668))
+:assumption (or (not x16582) x27206)
+:assumption (or (not x10919) (not x22031))
+:assumption (or (not x27110) (not x2786))
+:assumption (or (not x23545) x7788)
+:assumption (or (not x13692) x14691)
+:assumption (or (not x10915) x27573)
+:assumption (or (not x18981) x2270)
+:assumption (or (not x20734) (not x3289))
+:assumption (or x29758 (not x16416))
+:assumption (or x15035 (not x20064))
+:assumption (or (not x25659) x12757)
+:assumption (or x8262 (not x9198))
+:assumption (or (not x21585) x17176)
+:assumption (or x17333 (not x28011))
+:assumption (or (not x23049) x31628)
+:assumption (or x16802 x10294 (not x15736) x16838 (not x30753))
+:assumption (or (not x11139) x13956)
+:assumption (or x26666 x14501)
+:assumption (or x5528 (not x13522))
+:assumption (or x17075 x24533 (not x6521) x4840 x14037 (not x15916) x29097 x30982)
+:assumption (or x16063 (not x16849))
+:assumption (or x27288 (not x12781))
+:assumption (or x12397 (not x3264) x10319)
+:assumption (or (not x9275) (not x20063))
+:assumption (or x29649 x10325 (not x22718) x28912)
+:assumption (or (not x14741) (not x20598))
+:assumption (or x20271 x1982)
+:assumption (or x7101 (not x6242))
+:assumption (or (not x30903) x24781)
+:assumption (or (not x28980) x2312)
+:assumption (or (not x24579) x3941)
+:assumption (or x23846 (not x31906))
+:assumption (or x16910 (not x2708))
+:assumption (or (not x9086) (not x1052) x23334 x24716 (not x22587) x28328 x4744)
+:assumption (or x24138 x9649)
+:assumption (or x2404 (not x872))
+:assumption (or (not x26806) x14316)
+:assumption (or (not x4069) x10714)
+:assumption (or x8583 x1038)
+:assumption (or x20635 x23134)
+:assumption (or x14696 x12401)
+:assumption (or (not x15486) x2000 x28122)
+:assumption (or (not x29381) x9870)
+:assumption (or x16534 (not x24858) (not x9242) (not x21710) (not x19501))
+:assumption (or x8002 x15901 x4523)
+:assumption (or x12458 (not x1840))
+:assumption (or x23174 x31266)
+:assumption (or x7106 (not x18149) (not x581))
+:assumption (or (not x10071) x23508)
+:assumption (or (not x24331) (not x29601))
+:assumption (or x21653 x15776 (not x21013))
+:assumption (or (not x30549) (not x31745))
+:assumption (or (not x31887) x9531)
+:assumption (or x18390 (not x31045) (not x1393))
+:assumption (or (not x13273) x26357)
+:assumption (or (not x5294) x17782 (not x14839))
+:assumption (or (not x22844) (not x1977))
+:assumption (or x30688 x3069)
+:assumption (or (not x827) x19286 x17479 (not x6923) (not x25798) (not x18133) x8935 x7648)
+:assumption (or x10711 x18853)
+:assumption (or x1115 x23641)
+:assumption (or (not x16297) (not x9821))
+:assumption (or x29495 (not x29997))
+:assumption (or (not x9653) x12176)
+:assumption (or (not x10822) (not x24718))
+:assumption (or (not x21456) (not x14250))
+:assumption (or (not x10286) x9247)
+:assumption (or (not x7097) x8007)
+:assumption (or (not x1651) x18742)
+:assumption (or x3408 (not x24615) x19667)
+:assumption (or x14995 (not x28564))
+:assumption (or x18875 (not x18076))
+:assumption (or x16955 (not x18762))
+:assumption (or (not x31137) x23914 x31767)
+:assumption (or (not x21438) (not x712))
+:assumption (or (not x8002) (not x19308))
+:assumption (or x9142 (not x15861))
+:assumption (or x29629 x25641 x14530 x20308 (not x4282) x26125 x24309)
+:assumption (or x22721 (not x12610))
+:assumption (or (not x21815) (not x576))
+:assumption (or (not x8838) x1582)
+:assumption (or x22506 (not x22198))
+:assumption (or x28912 (not x1028))
+:assumption (or (not x4352) x16874)
+:assumption (or (not x20102) (not x21824))
+:assumption (or (not x15707) x1322)
+:assumption (or x6504 (not x13365) x25665 x28260 (not x17174) x256 (not x10454) x2829 (not x7713))
+:assumption (or (not x29442) x5100)
+:assumption (or x28590 (not x70))
+:assumption (or (not x13438) (not x17356))
+:assumption (or (not x19827) x15347)
+:assumption (or (not x21036) (not x7046))
+:assumption (or (not x7948) x25232 x19848 x16375)
+:assumption (or (not x4089) x22504)
+:assumption (or (not x22508) x22391)
+:assumption (or x17158 x5528)
+:assumption (or x30343 x181)
+:assumption (or (not x25315) (not x18443) x20119)
+:assumption (or x9546 (not x5319))
+:assumption (or (not x20523) x10960)
+:assumption (or x2394 (not x21298))
+:assumption (or (not x8810) x6287)
+:assumption (or x16269 x10632)
+:assumption (or (not x26126) (not x31447))
+:assumption (or x20314 x27608)
+:assumption (or (not x24511) x13676)
+:assumption (or x7223 x24912)
+:assumption (or x15312 (not x10459) (not x3221) (not x31774))
+:assumption (or (not x15130) x827 x15288)
+:assumption (or (not x24186) x23903)
+:assumption (or (not x15551) x14909)
+:assumption (or (not x28670) (not x569))
+:assumption (or x24364 (not x20162))
+:assumption (or x2500 x31326)
+:assumption (or (not x31330) x4943)
+:assumption (or x20074 x26878)
+:assumption (or (not x27482) (not x11104))
+:assumption (or (not x18631) (not x30764))
+:assumption (or (not x8461) x337 (not x16310) x20745 x29278)
+:assumption (or x16471 x9219)
+:assumption (or x9427 x412)
+:assumption (or x2215 x20588)
+:assumption (or x23048 x6767)
+:assumption (or x1271 (not x13917))
+:assumption (or (not x9008) x2748 x5062)
+:assumption (or x8574 x11525)
+:assumption (or x29121 (not x10385) x11980 (not x14180) (not x9724) (not x13795) x20859 (not x21801))
+:assumption (or x8620 (not x3831))
+:assumption (or (not x12069) x14178)
+:assumption (or x26842 (not x30549))
+:assumption (or x17307 (not x6662))
+:assumption (or x22487 (not x29403))
+:assumption (or x3480 (not x9008) (not x5504))
+:assumption (or x5103 (not x6436))
+:assumption (or (not x14628) x16843 (not x17526) (not x1598))
+:assumption (or x15279 x13355)
+:assumption (or x29090 x24585)
+:assumption (or x4451 x25690 x18899 (not x10416))
+:assumption (or (not x2498) x6159 (not x9318))
+:assumption (or (not x12592) (not x1625))
+:assumption (or x2498 (not x20352))
+:assumption (or (not x4384) (not x23244))
+:assumption (or (not x2781) (not x647))
+:assumption (or x1077 (not x29024) x7188)
+:assumption (or x16435 (not x29732))
+:assumption (or x7494 (not x11431))
+:assumption (or x27905 (not x27602))
+:assumption (or (not x16784) x20206)
+:assumption (or (not x1032) x3189)
+:assumption (or (not x28302) (not x19827))
+:assumption (or (not x10715) (not x31182))
+:assumption (or x24478 (not x31405))
+:assumption (or (not x11765) (not x6641))
+:assumption (or x13059 x24482)
+:assumption (or x2828 x19442)
+:assumption (or x14315 (not x7200) (not x17819))
+:assumption (or (not x5852) x13710)
+:assumption (or x203 x12341)
+:assumption (or x6407 (not x14513))
+:assumption (or (not x30266) (not x25522))
+:assumption (or (not x31248) x24735)
+:assumption (or (not x16578) x26627)
+:assumption (or (not x8731) (not x18885))
+:assumption (or (not x27711) x1799)
+:assumption (or (not x29214) x7203)
+:assumption (or x10781 x1502)
+:assumption (or (not x29649) (not x29054))
+:assumption (or x15917 x17086)
+:assumption (or (not x12058) (not x15012))
+:assumption (or (not x19864) x10185 x3293 x22188)
+:assumption (or (not x26311) x8368)
+:assumption (or (not x2340) x24811 (not x26959) (not x17751))
+:assumption (or (not x2645) x22153 (not x1411))
+:assumption (or (not x5835) (not x9249))
+:assumption (or x21994 (not x30563) (not x25226))
+:assumption (or (not x31457) (not x22711))
+:assumption (or (not x9102) (not x12063))
+:assumption (or x16643 (not x23710))
+:assumption (or x22029 (not x8002))
+:assumption (or (not x20819) x17011)
+:assumption (or x27523 (not x20885))
+:assumption (or x29312 x3608 (not x9890))
+:assumption (or (not x17121) (not x24029))
+:assumption (or (not x25347) x19428)
+:assumption (or (not x27542) x30273)
+:assumption (or (not x17393) x22713)
+:assumption (or x15063 x1564)
+:assumption (or x7988 x6754)
+:assumption (or x22005 x2831)
+:assumption (or x27837 (not x142))
+:assumption (or x8819 x25861)
+:assumption (or (not x24137) x6079)
+:assumption (or (not x19090) (not x18957))
+:assumption (or x18624 (not x4893))
+:assumption (or x28773 x31275)
+:assumption (or (not x25659) (not x21426))
+:assumption (or (not x30992) x17018 x8586 (not x1735))
+:assumption (or (not x30430) (not x26432))
+:assumption (or x30465 x14860)
+:assumption (or (not x10387) (not x13975))
+:assumption (or x14054 x3808)
+:assumption (or (not x23245) (not x621))
+:assumption (or x809 (not x29834) (not x29218) (not x7762) x20796 x11009)
+:assumption (or (not x26042) x20393)
+:assumption (or x13956 (not x22102))
+:assumption (or (not x15153) x23047)
+:assumption (or (not x27939) x1007)
+:assumption (or x28665 (not x8329))
+:assumption (or x21087 x13793)
+:assumption (or (not x56) (not x13653))
+:assumption (or x5028 (not x15594))
+:assumption (or (not x4520) x12837)
+:assumption (or (not x8577) x25667)
+:assumption (or (not x24010) (not x21295))
+:assumption (or x4861 x29494)
+:assumption (or x2926 (not x25473))
+:assumption (or (not x26301) (not x1116))
+:assumption (or x9745 x15178)
+:assumption (or x7266 (not x12135))
+:assumption (or x4109 (not x4217))
+:assumption (or x17438 (not x1891))
+:assumption (or x55 x31581 x24183)
+:assumption (or x965 x18132)
+:assumption (or x31318 x27810)
+:assumption (or (not x8205) x55)
+:assumption (or x18547 x30663)
+:assumption (or (not x31126) x20235)
+:assumption (or x24827 (not x7592))
+:assumption (or x9367 x7962)
+:assumption (or x376 (not x4216))
+:assumption (or x21451 x2930)
+:assumption (or (not x10200) x29804)
+:assumption (or x12607 x25491 (not x26647) x22283)
+:assumption (or x3508 (not x509))
+:assumption (or x18750 (not x16025) x16869)
+:assumption (or (not x24370) (not x3802))
+:assumption (or (not x554) (not x23244))
+:assumption (or x20811 x63)
+:assumption (or (not x14492) x506)
+:assumption (or (not x1562) (not x27719))
+:assumption (or (not x974) x6253)
+:assumption (or (not x6341) x14687)
+:assumption (or (not x6643) x25722)
+:assumption (or x5914 (not x15647))
+:assumption (or x11792 x21889)
+:assumption (or (not x2165) x21916)
+:assumption (or x17487 (not x13450))
+:assumption (or (not x31021) (not x20910))
+:assumption (or x3233 x6307)
+:assumption (or (not x31006) x11367)
+:assumption (or (not x5394) x25617)
+:assumption (or x31283 x16798)
+:assumption (or x23954 x13973)
+:assumption (or x21707 x20201)
+:assumption (or x19967 x31838)
+:assumption (or (not x2751) (not x5464))
+:assumption (or (not x4557) (not x6804))
+:assumption (or (not x15310) x23293)
+:assumption (or x22732 x480 (not x28860) x22855)
+:assumption (or x4259 (not x13030))
+:assumption (or (not x19484) (not x17797))
+:assumption (or (not x30224) x10818)
+:assumption (or (not x1905) x20271 x17855 x23878)
+:assumption (or x8002 (not x23959))
+:assumption (or (not x30888) x22731)
+:assumption (or (not x7180) x613)
+:assumption (or x1285 x15142)
+:assumption (or (not x7754) x30262)
+:assumption (or (not x5227) (not x30764))
+:assumption (or x13576 (not x29918))
+:assumption (or (not x16790) x27762)
+:assumption (or (not x4423) x4009)
+:assumption (or x29469 (not x6778))
+:assumption (or x14208 (not x6914))
+:assumption (or x1393 x18230 x29754)
+:assumption (or x10559 x24846)
+:assumption (or (not x4560) x30093)
+:assumption (or (not x27421) (not x4809))
+:assumption (or (not x2299) x14588 x22531 (not x19648))
+:assumption (or x12451 (not x18193) x26357 x10802 (not x863))
+:assumption (or x13085 x6001)
+:assumption (or x683 x19918)
+:assumption (or x28689 (not x3308))
+:assumption (or x9541 (not x17302))
+:assumption (or (not x30294) x13993)
+:assumption (or x1697 (not x480))
+:assumption (or (not x22561) (not x28839))
+:assumption (or x29506 x3837)
+:assumption (or x20632 x10713)
+:assumption (or (not x8676) (not x19982))
+:assumption (or (not x20712) x21298)
+:assumption (or x30169 x30575)
+:assumption (or (not x10953) (not x3839))
+:assumption (or (not x13905) (not x28350) x18345 x27502 (not x20480))
+:assumption (or x23324 (not x26886))
+:assumption (or x12099 (not x5883))
+:assumption (or (not x6939) (not x29876) x142)
+:assumption (or (not x7623) x21367)
+:assumption (or x13576 x9531 x19897)
+:assumption (or (not x8096) x29287)
+:assumption (or (not x14526) (not x16191))
+:assumption (or x2931 x24148)
+:assumption (or (not x22048) x17302)
+:assumption (or x687 (not x2227))
+:assumption (or x3925 x8978)
+:assumption (or x18978 (not x5528))
+:assumption (or (not x17348) x19501 x30113)
+:assumption (or x26647 (not x20550) x30207 (not x6149) x25659)
+:assumption (or x18915 x12445)
+:assumption (or x1613 (not x11259))
+:assumption (or x19669 x218)
+:assumption (or x31129 (not x15418) x24509 x30695 (not x18759))
+:assumption (or x28827 (not x9802))
+:assumption (or x21114 (not x201))
+:assumption (or x23716 (not x14554))
+:assumption (or (not x12866) (not x16847))
+:assumption (or (not x20177) x30314)
+:assumption (or x29195 x31073)
+:assumption (or x15408 x23636)
+:assumption (or (not x29052) (not x29626))
+:assumption (or x21439 (not x29907))
+:assumption (or (not x27720) (not x3257))
+:assumption (or (not x22144) (not x25939))
+:assumption (or (not x15702) x9858)
+:assumption (or (not x26311) x729)
+:assumption (or (not x9053) (not x24335))
+:assumption (or x1455 x6452)
+:assumption (or x30138 (not x23952))
+:assumption (or (not x12741) (not x7676))
+:assumption (or x13576 x29370 x25998)
+:assumption (or (not x11145) (not x8690))
+:assumption (or x18162 x14435 (not x29045))
+:assumption (or x22495 (not x24707) x11526)
+:assumption (or x25449 (not x12671))
+:assumption (or x8602 (not x23228))
+:assumption (or x27794 x8445 x20204 x5955)
+:assumption (or (not x14455) (not x8611))
+:assumption (or (not x20767) x8002 x23244 (not x25672))
+:assumption (or x26354 x8125)
+:assumption (or (not x15795) (not x8732))
+:assumption (or (not x9740) x9531)
+:assumption (or x28968 (not x25107))
+:assumption (or x11289 (not x2526))
+:assumption (or (not x13393) (not x19797))
+:assumption (or (not x28973) (not x1842))
+:assumption (or x5394 x10584)
+:assumption (or (not x19057) x9496)
+:assumption (or (not x20051) (not x9008))
+:assumption (or x15484 (not x7938))
+:assumption (or x31820 x29028)
+:assumption (or x20131 (not x3983) x22689 (not x31810))
+:assumption (or x13752 (not x22843))
+:assumption (or (not x15873) x21633)
+:assumption (or (not x28097) (not x21596))
+:assumption (or (not x30394) x11598 (not x21202) (not x4026))
+:assumption (or (not x13312) (not x29442) (not x15234))
+:assumption (or (not x5214) x17429 (not x9181))
+:assumption (or x288 (not x13854))
+:assumption (or (not x23583) x1267)
+:assumption (or (not x24339) (not x24907))
+:assumption (or x29931 x22376)
+:assumption (or x2129 x889 x20201 (not x23863) (not x233) x13839 (not x1689))
+:assumption (or x12378 x25642)
+:assumption (or x22799 (not x11857))
+:assumption (or x8650 (not x30901))
+:assumption (or x28954 x15234 x17671)
+:assumption (or (not x22083) x10655)
+:assumption (or (not x3791) (not x2941))
+:assumption (or x17164 x23980)
+:assumption (or x17454 (not x22909))
+:assumption (or (not x8002) (not x3542) (not x16261))
+:assumption (or x17106 (not x11577))
+:assumption (or (not x19374) x8446)
+:assumption (or (not x3343) x651)
+:assumption (or (not x25587) x25659)
+:assumption (or (not x23626) (not x24756))
+:assumption (or (not x23706) (not x30604) x14839)
+:assumption (or (not x3359) x17349)
+:assumption (or x10272 x11670 x13576)
+:assumption (or (not x16060) x16853)
+:assumption (or (not x31718) x23244 x8002 (not x16809) (not x13270))
+:assumption (or x31228 x24450)
+:assumption (or (not x46) (not x13346))
+:assumption (or (not x16498) x1367)
+:assumption (or x25033 (not x29896))
+:assumption (or x16312 (not x14591))
+:assumption (or x9024 (not x15316))
+:assumption (or x21574 x24171)
+:assumption (or (not x29778) (not x19922))
+:assumption (or x14123 x916 (not x16860) (not x15597) x8669 x5960 x27916)
+:assumption (or x14136 x24756)
+:assumption (or (not x9398) x14244)
+:assumption (or (not x13637) (not x16047))
+:assumption (or (not x27502) x28748)
+:assumption (or (not x20678) (not x10164))
+:assumption (or (not x29435) x3103)
+:assumption (or x8575 x10285)
+:assumption (or x30025 x8002)
+:assumption (or (not x30486) x3835)
+:assumption (or x23769 x2678)
+:assumption (or x21218 (not x6383))
+:assumption (or x22288 x16950 x9340 (not x3918) x10851 (not x12072))
+:assumption (or (not x2131) x24555)
+:assumption (or x900 x6146)
+:assumption (or x862 (not x19230))
+:assumption (or x25080 x25586)
+:assumption (or x31408 (not x9989))
+:assumption (or x23399 x25659 (not x20550) (not x16849) x9637)
+:assumption (or x4557 (not x29989))
+:assumption (or x570 (not x25218))
+:assumption (or (not x6016) x20356)
+:assumption (or (not x31860) x13354 (not x20335) x26606 (not x61))
+:assumption (or (not x28511) (not x22691))
+:assumption (or x25315 (not x29377))
+:assumption (or x22277 (not x18493))
+:assumption (or (not x16510) x18758 x18694 (not x15917) (not x21815))
+:assumption (or x2138 x13059)
+:assumption (or x10137 (not x7530) x8002 x23244 (not x17546))
+:assumption (or (not x15036) (not x951))
+:assumption (or (not x6592) (not x29280))
+:assumption (or x21733 x21758)
+:assumption (or x15331 (not x26245) x22035 x9148 x21769)
+:assumption (or (not x15186) x17342)
+:assumption (or x21364 (not x12209))
+:assumption (or (not x18001) x24062)
+:assumption (or x18947 (not x18935))
+:assumption (or (not x2205) x25968)
+:assumption (or x29331 (not x20086))
+:assumption (or x7393 x25959)
+:assumption (or (not x31134) x29606 (not x13281) x960)
+:assumption (or (not x20748) (not x21306))
+:assumption (or x17085 x22841)
+:assumption (or x20275 x1985)
+:assumption (or (not x21967) (not x16222))
+:assumption (or (not x10472) (not x6951))
+:assumption (or (not x28740) x1068)
+:assumption (or x21842 (not x6149))
+:assumption (or x14470 (not x17144))
+:assumption (or (not x4386) x15582)
+:assumption (or (not x27834) (not x5686))
+:assumption (or (not x8854) x480)
+:assumption (or (not x1733) x13410)
+:assumption (or (not x7998) x7820)
+:assumption (or x1400 (not x29718))
+:assumption (or (not x24436) x9750)
+:assumption (or x11244 x8837)
+:assumption (or x28961 (not x23244))
+:assumption (or (not x28847) (not x31805))
+:assumption (or (not x20095) x21653)
+:assumption (or (not x18894) (not x25512))
+:assumption (or (not x30860) (not x25793))
+:assumption (or (not x873) (not x11858))
+:assumption (or (not x27552) x8363)
+:assumption (or (not x30787) x15449)
+:assumption (or x9008 x24441 x1665 (not x356) (not x27283) x20568)
+:assumption (or (not x21574) (not x24205) (not x9923) x24244 (not x29076) (not x29253) (not x6666) x31251)
+:assumption (or x16636 x14175)
+:assumption (or (not x10686) (not x9957) x24039 (not x25092) (not x20337) x20660 (not x25659) (not x5155))
+:assumption (or (not x17909) (not x22806))
+:assumption (or x8866 x9423 x27676)
+:assumption (or x8586 (not x21552))
+:assumption (or (not x4819) (not x3765) x15160)
+:assumption (or (not x15201) x12172)
+:assumption (or (not x11490) x5528)
+:assumption (or (not x15293) (not x25136))
+:assumption (or x6165 x17310)
+:assumption (or (not x8411) (not x29574))
+:assumption (or (not x28376) (not x20759))
+:assumption (or x27741 x19104)
+:assumption (or (not x19543) x27497)
+:assumption (or (not x20833) x14926)
+:assumption (or (not x19054) (not x29772))
+:assumption (or (not x6697) (not x29450))
+:assumption (or (not x4830) x16781)
+:assumption (or (not x23637) x16802)
+:assumption (or x14948 (not x7565) (not x4093))
+:assumption (or x12581 (not x17436) (not x24711) x9370 x25249)
+:assumption (or x25212 (not x31057))
+:assumption (or (not x27435) (not x4927))
+:assumption (or (not x25616) (not x16722))
+:assumption (or x9807 (not x14303))
+:assumption (or (not x5364) x24524 x15276 x4371)
+:assumption (or (not x844) x29305)
+:assumption (or (not x21707) x6615)
+:assumption (or x26861 (not x11068))
+:assumption (or (not x29428) (not x9604))
+:assumption (or x6230 (not x19146))
+:assumption (or x21612 x8553)
+:assumption (or (not x14480) (not x5911))
+:assumption (or x19864 (not x23233))
+:assumption (or (not x17200) (not x5720) x16304)
+:assumption (or x24756 (not x22028))
+:assumption (or x5689 x15071)
+:assumption (or (not x25266) x18797)
+:assumption (or (not x18516) (not x12148))
+:assumption (or (not x3340) x20367)
+:assumption (or (not x22387) x18859)
+:assumption (or (not x31070) (not x26270))
+:assumption (or x9303 x25874)
+:assumption (or (not x25818) (not x12803))
+:assumption (or x991 (not x4327))
+:assumption (or x4977 x24837)
+:assumption (or x1889 x23876)
+:assumption (or x14931 (not x22788))
+:assumption (or x20384 (not x12597))
+:assumption (or (not x19217) x31785)
+:assumption (or x24095 x3569)
+:assumption (or (not x10528) x8251 (not x25463) x20322 (not x3814) x13576 (not x829) (not x4952) x8198)
+:assumption (or (not x17252) x18735 (not x25659))
+:assumption (or x12474 x8194 x12003)
+:assumption (or x4217 x2604 (not x24364) x26817)
+:assumption (or (not x11895) (not x31161))
+:assumption (or (not x13297) (not x31900))
+:assumption (or x20433 (not x1646))
+:assumption (or x16070 (not x3842))
+:assumption (or (not x26757) x4667)
+:assumption (or x7881 (not x21561))
+:assumption (or x4064 (not x5216))
+:assumption (or (not x25757) x13956)
+:assumption (or x8129 (not x20468))
+:assumption (or (not x27012) (not x24522))
+:assumption (or x10242 (not x8820) (not x13012) x20402)
+:assumption (or x13124 (not x10064))
+:assumption (or (not x15561) (not x9728))
+:assumption (or x13032 x17833)
+:assumption (or x17374 (not x17310))
+:assumption (or (not x27793) (not x12812))
+:assumption (or x3976 x25729)
+:assumption (or (not x7016) (not x9763))
+:assumption (or x13993 x25207)
+:assumption (or (not x17359) (not x29532))
+:assumption (or x29166 (not x10290))
+:assumption (or (not x12484) x6230)
+:assumption (or (not x4608) x11840 x18690 x19254)
+:assumption (or (not x27350) x5635 (not x6555) (not x6205))
+:assumption (or (not x14839) x12196)
+:assumption (or x850 (not x25218))
+:assumption (or (not x7829) (not x16472))
+:assumption (or (not x12583) (not x15795))
+:assumption (or x10006 x1260)
+:assumption (or x25069 (not x30382))
+:assumption (or (not x5031) (not x1458))
+:assumption (or x14032 (not x10353))
+:assumption (or x1582 (not x17324))
+:assumption (or x21202 (not x982))
+:assumption (or x27998 x29853)
+:assumption (or (not x21292) (not x7835))
+:assumption (or x2628 x10743)
+:assumption (or (not x21298) x14283)
+:assumption (or (not x21374) (not x4102))
+:assumption (or (not x15184) x24256)
+:assumption (or (not x4022) x14839 x21627)
+:assumption (or x31526 (not x23903) x7930)
+:assumption (or (not x14067) x25095)
+:assumption (or (not x31569) (not x6044))
+:assumption (or (not x1033) x18859)
+:assumption (or x25659 x25585)
+:assumption (or x23983 x23886 (not x4504))
+:assumption (or x19015 x26297)
+:assumption (or x6606 (not x29512) x23957 (not x20495))
+:assumption (or (not x27091) x10961)
+:assumption (or (not x5944) x31535)
+:assumption (or x17147 x24171)
+:assumption (or (not x8461) x6406)
+:assumption (or (not x2231) (not x12539))
+:assumption (or x6969 x10225 (not x2798))
+:assumption (or x5579 x3599)
+:assumption (or (not x12800) (not x22743))
+:assumption (or x13036 x6974)
+:assumption (or x5594 x6307)
+:assumption (or (not x4058) (not x23637))
+:assumption (or (not x24467) (not x18594))
+:assumption (or x3072 (not x12533) (not x25617) (not x990) x555)
+:assumption (or x18022 x19013)
+:assumption (or (not x16741) (not x11210))
+:assumption (or (not x29272) x6307 x10874 x9968)
+:assumption (or x13439 x1393)
+:assumption (or (not x23032) x16080)
+:assumption (or x5378 x7551)
+:assumption (or x30402 x19280)
+:assumption (or (not x12791) (not x1619))
+:assumption (or x8564 (not x18500) (not x13956))
+:assumption (or x24756 (not x155) x31574 x29312 (not x12888))
+:assumption (or (not x28302) (not x8804))
+:assumption (or x8961 x15842)
+:assumption (or x3448 (not x27942))
+:assumption (or (not x534) x20797)
+:assumption (or (not x16510) (not x2049))
+:assumption (or x5584 (not x2352))
+:assumption (or x481 (not x13534))
+:assumption (or x6400 (not x14430))
+:assumption (or x15248 (not x9880) x21432 (not x10045))
+:assumption (or (not x13571) x21222)
+:assumption (or (not x15780) x11436)
+:assumption (or (not x8120) (not x11387))
+:assumption (or (not x27740) (not x30604))
+:assumption (or x8371 x24446)
+:assumption (or (not x18378) (not x4722))
+:assumption (or (not x4195) (not x21806))
+:assumption (or x19288 (not x8120) (not x26217) (not x28124))
+:assumption (or (not x12755) x19416 x27657 x10683 x10067)
+:assumption (or (not x26268) (not x23305))
+:assumption (or x26897 x2240 x6506)
+:assumption (or x27631 x20949 (not x23562))
+:assumption (or (not x4940) x21427)
+:assumption (or x12869 (not x2321))
+:assumption (or (not x24602) x11332 (not x4254) (not x1601))
+:assumption (or x6991 x30208 (not x18028))
+:assumption (or x1019 x9008)
+:assumption (or x5394 (not x21559) x11199 (not x19077))
+:assumption (or x16491 x30583)
+:assumption (or (not x18694) x23746 (not x29606))
+:assumption (or (not x125) x25659 (not x25174))
+:assumption (or x3162 (not x7473))
+:assumption (or (not x4993) (not x8002) x2941)
+:assumption (or x6754 x705)
+:assumption (or x27053 (not x15260))
+:assumption (or x26749 (not x16838))
+:assumption (or x24264 (not x25659))
+:assumption (or x28601 x26892)
+:assumption (or x24400 x13300 (not x21844) x22531)
+:assumption (or (not x29175) x27836)
+:assumption (or (not x17951) (not x29396) (not x13162) (not x26916) x23279 (not x21524))
+:assumption (or (not x20962) x13956)
+:assumption (or x11695 x21087 (not x27911))
+:assumption (or (not x13992) (not x25366))
+:assumption (or x19685 (not x16936) x8716 (not x18963) (not x12355) x10214)
+:assumption (or x6350 x10412)
+:assumption (or x19531 x17855)
+:assumption (or (not x8002) x15541)
+:assumption (or x12627 (not x5528) (not x16849) x22829 (not x9008))
+:assumption (or x19878 (not x19992))
+:assumption (or (not x4223) x30741)
+:assumption (or (not x5704) (not x20963))
+:assumption (or (not x2288) x28282)
+:assumption (or (not x21450) (not x3440) (not x21968) x18274 x6752)
+:assumption (or x18736 x14554)
+:assumption (or (not x13731) x28334)
+:assumption (or x6227 (not x940))
+:assumption (or x30990 x18836)
+:assumption (or x20274 x29333)
+:assumption (or (not x30850) (not x15228))
+:assumption (or (not x19085) (not x12369))
+:assumption (or x5967 (not x31287) x17616 (not x13904))
+:assumption (or (not x26652) x16529)
+:assumption (or (not x21970) x8649)
+:assumption (or (not x21757) x31010)
+:assumption (or x21775 (not x9272))
+:assumption (or (not x16802) (not x30558))
+:assumption (or (not x11683) x16591)
+:assumption (or (not x12129) x1309)
+:assumption (or x21298 x6975)
+:assumption (or (not x8860) x13)
+:assumption (or x11252 x24466)
+:assumption (or x16951 (not x30711))
+:assumption (or x7099 x9780)
+:assumption (or x3199 (not x8132))
+:assumption (or x15048 (not x8002))
+:assumption (or (not x17109) x14578 (not x24761) (not x16337) (not x8120))
+:assumption (or (not x23092) x6079)
+:assumption (or (not x2884) x17951)
+:assumption (or x9657 (not x25919))
+:assumption (or (not x5361) (not x29414))
+:assumption (or (not x2051) x16758)
+:assumption (or (not x31353) x19798)
+:assumption (or x12894 x23244 x8002 x25438)
+:assumption (or (not x2880) x6103)
+:assumption (or (not x18241) x2826)
+:assumption (or x16642 x27270)
+:assumption (or x10046 (not x18622))
+:assumption (or x7118 (not x18773) x10679 (not x12142) (not x31138) (not x655) (not x19909))
+:assumption (or x8368 x27651)
+:assumption (or (not x17315) x7918)
+:assumption (or x19604 x19029)
+:assumption (or (not x4792) (not x8961) x5886 x21066)
+:assumption (or x24920 x7842 (not x21298))
+:assumption (or (not x964) (not x21062) (not x26670) x16627)
+:assumption (or (not x2280) (not x1295))
+:assumption (or x21543 (not x22257) (not x24550) x9883)
+:assumption (or x13575 x12820)
+:assumption (or (not x3739) (not x14223))
+:assumption (or x25727 (not x795))
+:assumption (or (not x3941) x24579)
+:assumption (or (not x22730) x19202)
+:assumption (or x21845 (not x1505))
+:assumption (or x26815 x370)
+:assumption (or (not x20521) (not x15039))
+:assumption (or x22452 x30190)
+:assumption (or x24946 (not x1256))
+:assumption (or (not x1881) (not x18042) x26848)
+:assumption (or (not x24339) x7769)
+:assumption (or x26315 x17365)
+:assumption (or (not x13442) (not x30917))
+:assumption (or (not x10077) (not x8602))
+:assumption (or (not x29870) x19770)
+:assumption (or x4050 x17914)
+:assumption (or x25399 x26781)
+:assumption (or (not x5528) (not x11156))
+:assumption (or x9625 (not x4585))
+:assumption (or (not x7740) (not x14580))
+:assumption (or (not x7224) x16012)
+:assumption (or (not x29508) x29799 x29538 (not x18475) x19522 x2254)
+:assumption (or (not x29178) (not x18360))
+:assumption (or x21864 x8279)
+:assumption (or (not x8160) x7684)
+:assumption (or (not x8221) (not x30304))
+:assumption (or x28541 x9140)
+:assumption (or x435 x26885)
+:assumption (or x30843 x12045)
+:assumption (or x16910 x30117)
+:assumption (or x28364 (not x30652))
+:assumption (or x11574 (not x6082))
+:assumption (or (not x3230) x861 (not x21151) (not x1623) (not x16641) x30856 (not x18138))
+:assumption (or x7368 x1213)
+:assumption (or (not x3097) x27210)
+:assumption (or x26717 (not x13912))
+:assumption (or x29104 x21701)
+:assumption (or (not x6393) (not x28956))
+:assumption (or x23062 (not x22190))
+:assumption (or x9613 (not x12505))
+:assumption (or x17410 x5334)
+:assumption (or x19410 (not x4522) (not x28980) x28184 x8357 (not x3940))
+:assumption (or x3898 x11389)
+:assumption (or x252 (not x6483) (not x7200))
+:assumption (or x12378 (not x24150))
+:assumption (or (not x19174) x26401)
+:assumption (or (not x8050) (not x17338))
+:assumption (or (not x329) x7448)
+:assumption (or x4414 x29489)
+:assumption (or (not x16849) (not x636))
+:assumption (or (not x1084) x30801)
+:assumption (or (not x5844) (not x24275))
+:assumption (or (not x31645) (not x9862) x18414 (not x26777))
+:assumption (or (not x26710) (not x30958) (not x23431) (not x12546))
+:assumption (or x24756 (not x14988))
+:assumption (or x18939 (not x27439))
+:assumption (or (not x28815) x22472)
+:assumption (or x25010 (not x4383) x9236 (not x23712))
+:assumption (or (not x11087) (not x22323))
+:assumption (or (not x22224) (not x28574))
+:assumption (or (not x3492) (not x22003))
+:assumption (or x23688 (not x23886))
+:assumption (or (not x24155) (not x1401))
+:assumption (or (not x3653) (not x23692) (not x3914))
+:assumption (or x4880 x27348)
+:assumption (or (not x272) (not x9008))
+:assumption (or (not x27748) (not x232))
+:assumption (or x5235 (not x11281) (not x25017))
+:assumption (or x5370 x11530)
+:assumption (or (not x14003) x14976)
+:assumption (or x26933 x7282)
+:assumption (or (not x9342) (not x19833))
+:assumption (or x22538 x10860)
+:assumption (or x21298 (not x29458))
+:assumption (or x8339 (not x25209))
+:assumption (or (not x16003) x26889)
+:assumption (or (not x20707) x27760)
+:assumption (or (not x16334) x20206)
+:assumption (or x25224 (not x17160))
+:assumption (or (not x21204) x12326)
+:assumption (or (not x1116) x1824)
+:assumption (or x26810 x26483 x9115 x11330 x27774 (not x7064))
+:assumption (or x3677 (not x27973) x13553 (not x18018) (not x5584) x2352)
+:assumption (or x26029 x12412)
+:assumption (or (not x29568) (not x9615) (not x14632) x8675)
+:assumption (or (not x6969) x6418)
+:assumption (or (not x28853) (not x17655))
+:assumption (or x827 x15583)
+:assumption (or x25048 (not x16793) (not x14147))
+:assumption (or x12512 x16536)
+:assumption (or (not x26947) x28549)
+:assumption (or (not x25574) x17998)
+:assumption (or (not x6206) x22238)
+:assumption (or x31422 (not x29275))
+:assumption (or x23336 x15000)
+:assumption (or x21159 x88)
+:assumption (or (not x30987) (not x9079) x11800 (not x16392) (not x28388) x21335)
+:assumption (or (not x18322) x22358 x2739 x29787 x16143 (not x8873) (not x29031) x9144 x2973)
+:assumption (or x5772 x1004)
+:assumption (or x3435 x25893)
+:assumption (or x8640 x15078)
+:assumption (or x3266 x10187 (not x8576))
+:assumption (or (not x8871) (not x4451) (not x1928))
+:assumption (or (not x8428) (not x16025))
+:assumption (or (not x29264) x26331)
+:assumption (or x28704 (not x12675))
+:assumption (or x28237 x22566 x9008)
+:assumption (or x10947 (not x2761))
+:assumption (or (not x19334) x8485)
+:assumption (or (not x14763) (not x17618) (not x18685) x11164)
+:assumption (or (not x5607) x4983)
+:assumption (or (not x6911) (not x3225))
+:assumption (or (not x21394) (not x757))
+:assumption (or (not x30429) x16010)
+:assumption (or (not x10983) (not x11053))
+:assumption (or (not x964) (not x22147) (not x26670) (not x8043))
+:assumption (or (not x9347) (not x8002))
+:assumption (or (not x29243) x21607)
+:assumption (or (not x13212) (not x23244))
+:assumption (or (not x28328) (not x20144))
+:assumption (or (not x9952) x30601 (not x10880) x26638 x30963)
+:assumption (or (not x11802) x25474)
+:assumption (or (not x30954) (not x4257))
+:assumption (or x29606 (not x11295) x28984 x19987 x11251)
+:assumption (or (not x22084) (not x11857))
+:assumption (or (not x27544) x12767)
+:assumption (or x10856 (not x10917))
+:assumption (or (not x26027) x912)
+:assumption (or (not x20402) (not x18737))
+:assumption (or x14441 x20977 (not x13521) (not x2946) x22244)
+:assumption (or (not x19599) x25600 x20354 x18292)
+:assumption (or (not x20923) x30110 (not x6086) x14272)
+:assumption (or x9008 x20648 (not x5858) x15268 (not x1653) (not x9673))
+:assumption (or (not x8366) x11480)
+:assumption (or x5971 x30203)
+:assumption (or (not x27917) x25889)
+:assumption (or (not x3973) x7515)
+:assumption (or (not x5679) (not x13525) (not x24956))
+:assumption (or x27802 x19547)
+:assumption (or x4894 (not x13404))
+:assumption (or x21205 (not x25659) x24847)
+:assumption (or (not x31480) (not x8120))
+:assumption (or (not x10478) (not x18657))
+:assumption (or x11462 x20011)
+:assumption (or (not x12310) (not x13180) x21815 (not x19815) (not x16166) x23045)
+:assumption (or x9269 (not x6232))
+:assumption (or (not x15095) x31058)
+:assumption (or (not x8002) (not x19905))
+:assumption (or x27915 x28087 x26061)
+:assumption (or (not x25402) (not x28980))
+:assumption (or (not x26110) (not x17148))
+:assumption (or (not x9368) (not x17302) x19832)
+:assumption (or x18563 x150)
+:assumption (or x5985 (not x17294))
+:assumption (or x15917 (not x24491))
+:assumption (or (not x18042) (not x30873))
+:assumption (or x9338 (not x1753))
+:assumption (or (not x18219) (not x4651))
+:assumption (or (not x1401) x169)
+:assumption (or (not x24400) (not x22531))
+:assumption (or x8503 x19221)
+:assumption (or (not x11597) (not x21690) x16369)
+:assumption (or (not x25130) (not x14591))
+:assumption (or (not x12213) (not x5743))
+:assumption (or (not x13701) (not x2137))
+:assumption (or x6747 (not x16812))
+:assumption (or (not x2223) x16716)
+:assumption (or (not x2208) x28221)
+:assumption (or (not x1710) x5394)
+:assumption (or x10990 (not x14285))
+:assumption (or (not x10360) (not x16652))
+:assumption (or (not x28207) (not x30216))
+:assumption (or x10473 (not x6572) x16624)
+:assumption (or x480 (not x20969))
+:assumption (or (not x18066) x5727)
+:assumption (or x16910 (not x27040) (not x4040))
+:assumption (or x744 x15257)
+:assumption (or (not x15947) x9358 x30297 x14724 (not x29484))
+:assumption (or x22641 x16441)
+:assumption (or (not x27158) (not x10148))
+:assumption (or (not x14158) (not x22849))
+:assumption (or x4767 (not x6289) x16758)
+:assumption (or x9008 (not x2638))
+:assumption (or (not x827) (not x18678) (not x28090))
+:assumption (or (not x24900) (not x26279))
+:assumption (or x14738 (not x17225))
+:assumption (or (not x18066) (not x29645))
+:assumption (or (not x31162) x20061)
+:assumption (or (not x9116) x886)
+:assumption (or x28857 (not x4500))
+:assumption (or (not x15036) (not x21633) (not x9121) (not x27233))
+:assumption (or (not x19063) x107)
+:assumption (or x2437 (not x4375) x13202 x3221 (not x24609) (not x14102))
+:assumption (or x26072 (not x16003) (not x28682))
+:assumption (or (not x5062) (not x2748))
+:assumption (or (not x23993) x24840 (not x21298))
+:assumption (or x27741 x7458)
+:assumption (or x20751 (not x20995))
+:assumption (or (not x29139) x5528 x11596)
+:assumption (or (not x29553) (not x17810))
+:assumption (or x9909 x8197)
+:assumption (or x30714 x1211 (not x25659))
+:assumption (or (not x18950) x4928)
+:assumption (or x17855 x18177 (not x10716))
+:assumption (or (not x26868) (not x10220) x4761)
+:assumption (or x9329 (not x4169))
+:assumption (or (not x338) x15504)
+:assumption (or (not x4141) (not x29830))
+:assumption (or (not x3067) x25664 (not x16117) x7107 (not x17215))
+:assumption (or x25659 x9517 x246)
+:assumption (or x25205 x18016)
+:assumption (or x22859 x7296)
+:assumption (or (not x1320) x14840)
+:assumption (or (not x3317) (not x26354) (not x147) (not x21082) x24155 (not x20172) x27479)
+:assumption (or x25774 x17239)
+:assumption (or (not x27370) (not x7545))
+:assumption (or x31911 x1421)
+:assumption (or x7196 (not x15542) (not x8002))
+:assumption (or x23178 x7560)
+:assumption (or (not x21687) (not x6872) (not x5206) x11457)
+:assumption (or (not x8048) (not x2674))
+:assumption (or (not x26110) (not x10610))
+:assumption (or x28877 (not x15889))
+:assumption (or (not x1059) x17696)
+:assumption (or x28102 x13545)
+:assumption (or x23475 (not x31323))
+:assumption (or (not x17843) (not x10490) (not x1978) (not x5191))
+:assumption (or (not x9370) (not x27333))
+:assumption (or x9008 x13462)
+:assumption (or x26440 x1393)
+:assumption (or (not x27115) x15366 (not x6539) (not x23118))
+:assumption (or (not x17462) (not x13802) x28658 (not x8002))
+:assumption (or x11 (not x18231))
+:assumption (or (not x7180) x13458)
+:assumption (or x15857 (not x3753))
+:assumption (or x7645 (not x6023))
+:assumption (or x19297 x2163)
+:assumption (or x14586 (not x30793) x18290 (not x4560) (not x27918) (not x31866))
+:assumption (or x8823 x9907)
+:assumption (or x28796 (not x6718))
+:assumption (or x20911 x21214)
+:assumption (or x26978 x626 (not x16451) x26637)
+:assumption (or x31419 x2770)
+:assumption (or x23244 (not x19587) (not x19530) x8002)
+:assumption (or (not x27770) x14021)
+:assumption (or (not x17745) x24480)
+:assumption (or (not x10205) (not x13751))
+:assumption (or x23930 x1901)
+:assumption (or x3923 x20901)
+:assumption (or (not x6969) (not x31247))
+:assumption (or x22613 x17359 (not x15526))
+:assumption (or (not x27548) (not x21831))
+:assumption (or (not x12018) x5538)
+:assumption (or (not x17382) x25449)
+:assumption (or (not x218) (not x18059))
+:assumption (or x30108 x16692)
+:assumption (or x4945 (not x29393))
+:assumption (or x14264 (not x15090))
+:assumption (or x27941 x5478)
+:assumption (or (not x14706) (not x13622) x1419 (not x10013) (not x18534) (not x9778) (not x7560))
+:assumption (or (not x24934) (not x15400))
+:assumption (or x13956 (not x28777))
+:assumption (or x3599 x9821)
+:assumption (or x17109 x8434)
+:assumption (or (not x28885) (not x20557))
+:assumption (or x15991 (not x19848))
+:assumption (or (not x4550) (not x22662))
+:assumption (or (not x21860) x18069)
+:assumption (or (not x29649) (not x12132) (not x23244))
+:assumption (or x4561 x16348)
+:assumption (or x16181 x6926)
+:assumption (or x14656 x29187)
+:assumption (or (not x25910) x26354 x8475)
+:assumption (or x644 (not x14353))
+:assumption (or x16245 (not x30977))
+:assumption (or (not x15654) x17229)
+:assumption (or x27214 (not x30045))
+:assumption (or (not x12054) x11731)
+:assumption (or (not x8603) x29495)
+:assumption (or (not x24041) (not x2914))
+:assumption (or x4711 (not x26059))
+:assumption (or x23036 x12707)
+:assumption (or (not x24828) x1535)
+:assumption (or (not x28058) (not x1692))
+:assumption (or x26823 (not x17375))
+:assumption (or (not x17225) (not x625) (not x22194))
+:assumption (or x5109 (not x29442))
+:assumption (or (not x7157) (not x17855) (not x16478) (not x22947))
+:assumption (or (not x13973) (not x22968) (not x16067))
+:assumption (or (not x25659) x1644 (not x29864))
+:assumption (or x20584 (not x25155))
+:assumption (or x9371 x24631)
+:assumption (or x16925 x7492)
+:assumption (or x7368 x17720)
+:assumption (or x18911 x29327 x17080 x6243 x5242 (not x12407) (not x506) (not x13918) x14607)
+:assumption (or x20484 x6288)
+:assumption (or x8080 x1528 (not x13382))
+:assumption (or (not x27169) x1204)
+:assumption (or x4609 (not x17428))
+:assumption (or x30083 x19044)
+:assumption (or (not x31466) (not x16401))
+:assumption (or x22310 (not x28200))
+:assumption (or x31388 x19644)
+:assumption (or x7078 (not x23279) x28328)
+:assumption (or (not x15568) x13102)
+:assumption (or x13177 x23339)
+:assumption (or x19026 (not x13595))
+:assumption (or x15346 (not x25119))
+:assumption (or x6613 (not x830) x4377 x3624)
+:assumption (or x16841 (not x17261))
+:assumption (or x16378 (not x28657))
+:assumption (or (not x29095) (not x10935) x17427)
+:assumption (or (not x18773) (not x18383))
+:assumption (or x19095 x11000)
+:assumption (or (not x19362) x358)
+:assumption (or (not x10196) (not x8696))
+:assumption (or x2992 x31044)
+:assumption (or x9155 x12596 (not x27944) (not x21501) x2458 (not x3370) (not x23732) x24880)
+:assumption (or x7096 x23610)
+:assumption (or x6892 (not x19830))
+:assumption (or (not x6710) (not x7868))
+:assumption (or x24373 x1920)
+:assumption (or x31583 x12241)
+:assumption (or x30798 x2392)
+:assumption (or x13874 (not x8378))
+:assumption (or x11837 x24067)
+:assumption (or x20525 (not x25228))
+:assumption (or x8565 x12329)
+:assumption (or (not x17042) x9269)
+:assumption (or x29310 (not x23872))
+:assumption (or (not x6510) x30411)
+:assumption (or x1863 x26469)
+:assumption (or x25659 (not x7852))
+:assumption (or x20061 (not x11938) x4377 (not x15565))
+:assumption (or (not x29537) (not x23145) (not x16654) (not x107))
+:assumption (or x21124 x27314)
+:assumption (or x13380 x19160)
+:assumption (or (not x15558) (not x860))
+:assumption (or (not x19086) x27921)
+:assumption (or x28440 (not x30138))
+:assumption (or (not x14692) x4768)
+:assumption (or (not x22323) (not x31372))
+:assumption (or (not x20470) x6910)
+:assumption (or x13412 (not x23980))
+:assumption (or x9439 (not x24890) x7200)
+:assumption (or x753 x2191)
+:assumption (or x9577 (not x4620))
+:assumption (or (not x4956) (not x22419))
+:assumption (or x14367 (not x3567))
+:assumption (or x18306 (not x29016))
+:assumption (or (not x13374) (not x22720))
+:assumption (or x27280 x22963)
+:assumption (or x8002 x21838)
+:assumption (or x26237 (not x28499))
+:assumption (or (not x10336) (not x27688))
+:assumption (or (not x15422) (not x2587))
+:assumption (or (not x3006) (not x24207))
+:assumption (or x18256 (not x13956))
+:assumption (or x4819 x3765)
+:assumption (or x7686 x22416)
+:assumption (or x24754 (not x28663))
+:assumption (or x9336 x16632 x22973)
+:assumption (or (not x18815) (not x3212) (not x12052))
+:assumption (or x15511 x15794 (not x15251) (not x18189) x26192 (not x14344) (not x6615) x20201 (not x5045))
+:assumption (or x18241 (not x18859) (not x2826))
+:assumption (or x23285 x294)
+:assumption (or x24829 (not x7206))
+:assumption (or (not x30530) (not x15678))
+:assumption (or x2947 (not x5328))
+:assumption (or (not x24722) (not x31567))
+:assumption (or (not x3342) x30563 x25226)
+:assumption (or x13922 (not x24625))
+:assumption (or x9106 x20408)
+:assumption (or x11000 x6034)
+:assumption (or x8407 (not x17613))
+:assumption (or (not x3876) (not x18139))
+:assumption (or (not x4222) x11006)
+:assumption (or x3942 x24110)
+:assumption (or x10660 x23055)
+:assumption (or (not x30215) x8541)
+:assumption (or x16476 (not x25651))
+:assumption (or (not x4672) (not x4664))
+:assumption (or x5953 x24553)
+:assumption (or (not x3372) (not x23365))
+:assumption (or (not x23564) x6594 x14339 x29638 (not x21498))
+:assumption (or (not x8364) (not x14116))
+:assumption (or x17105 x12474 x10695)
+:assumption (or x31016 (not x11013))
+:assumption (or x10852 x2289)
+:assumption (or (not x10867) (not x16559))
+:assumption (or (not x2976) (not x30788))
+:assumption (or x1455 (not x5931))
+:assumption (or (not x21298) (not x19810) x26216 (not x16511))
+:assumption (or (not x9164) (not x8602))
+:assumption (or (not x25487) x21924)
+:assumption (or x9617 (not x5608))
+:assumption (or (not x12415) (not x5713) x18512 x28859 x30401 (not x5685))
+:assumption (or x20240 (not x6289) (not x21775) x259)
+:assumption (or (not x1213) x23962 (not x17720) (not x18996) (not x437))
+:assumption (or x11177 x14575)
+:assumption (or x20829 (not x26483))
+:assumption (or (not x29296) (not x23244))
+:assumption (or x22926 x30954 x23244)
+:assumption (or (not x10844) (not x11028))
+:assumption (or (not x20325) x29279)
+:assumption (or (not x11351) (not x1072))
+:assumption (or x13956 x4501)
+:assumption (or (not x31260) x14839)
+:assumption (or x22378 (not x29278))
+:assumption (or (not x15525) (not x30920))
+:assumption (or (not x18720) (not x26212))
+:assumption (or (not x3453) (not x1843))
+:assumption (or (not x25615) x22564)
+:assumption (or (not x25659) x11360)
+:assumption (or x29659 x25141)
+:assumption (or (not x21115) x21298 (not x23403) x14812 x24173 x2325 x2041 (not x12422) (not x15952))
+:assumption (or x8024 x31134)
+:assumption (or x30818 x16039)
+:assumption (or (not x21753) (not x595))
+:assumption (or x6594 (not x14944))
+:assumption (or x9531 (not x23744) (not x20134) x13576)
+:assumption (or x10140 (not x8087))
+:assumption (or x19883 x3180)
+:assumption (or (not x26138) x11384 x27509)
+:assumption (or x1794 x24628)
+:assumption (or (not x955) x28242)
+:assumption (or x15134 x13054)
+:assumption (or x27724 x9612)
+:assumption (or x20223 (not x782))
+:assumption (or x22931 x2466)
+:assumption (or x17571 x15527)
+:assumption (or (not x1091) x13094)
+:assumption (or x14171 (not x25760))
+:assumption (or x8646 x2457)
+:assumption (or x29503 (not x10082))
+:assumption (or x10874 x15477)
+:assumption (or (not x18875) (not x21432))
+:assumption (or (not x8312) x10153 (not x21815))
+:assumption (or x3349 (not x15514) (not x2082) (not x26897) (not x22836))
+:assumption (or (not x19313) (not x30912))
+:assumption (or x26942 (not x2340) (not x17751) x7163)
+:assumption (or (not x20133) (not x21510))
+:assumption (or x12175 (not x15751))
+:assumption (or x24604 (not x17646))
+:assumption (or (not x7330) (not x22116))
+:assumption (or x17225 x1961)
+:assumption (or (not x878) (not x12860))
+:assumption (or (not x8935) x20820)
+:assumption (or (not x1320) x31056)
+:assumption (or (not x4131) (not x6560))
+:assumption (or (not x14735) (not x12280) x16028 (not x1073))
+:assumption (or (not x16756) (not x30879))
+:assumption (or x4496 (not x6871))
+:assumption (or (not x12290) x28449)
+:assumption (or (not x7986) x21937)
+:assumption (or x15583 x6853)
+:assumption (or x19290 (not x13401) x27006)
+:assumption (or x22846 (not x30213))
+:assumption (or x9563 (not x16407))
+:assumption (or x31634 (not x17792))
+:assumption (or x16579 x9324)
+:assumption (or (not x28733) (not x24274))
+:assumption (or x24356 x30242)
+:assumption (or (not x6648) x12073)
+:assumption (or (not x7909) x24703)
+:assumption (or (not x16534) (not x17639) (not x24374) x2440)
+:assumption (or x3617 (not x25932))
+:assumption (or x6562 (not x10064) (not x15917) (not x14056))
+:assumption (or x14080 (not x2381))
+:assumption (or x964 (not x14546))
+:assumption (or x17662 (not x28242) (not x30184) (not x23401))
+:assumption (or x29820 x23359)
+:assumption (or x9760 x12994)
+:assumption (or (not x17161) (not x14592))
+:assumption (or (not x9790) x13956 x24359)
+:assumption (or (not x82) x27879)
+:assumption (or x4377 x7968)
+:assumption (or x30826 (not x5612))
+:assumption (or (not x7363) x17412)
+:assumption (or x12262 (not x4377))
+:assumption (or (not x23654) (not x11321))
+:assumption (or x30547 (not x13042))
+:assumption (or (not x5698) x21446)
+:assumption (or (not x22743) (not x16654))
+:assumption (or x13200 (not x2334))
+:assumption (or x21929 (not x18721))
+:assumption (or x16025 x1319 x22154)
+:assumption (or (not x4135) (not x12462))
+:assumption (or (not x19472) (not x5535))
+:assumption (or x31901 x5367)
+:assumption (or x25414 (not x28606))
+:assumption (or x19992 (not x9780))
+:assumption (or x21116 (not x31613))
+:assumption (or (not x3281) x11622)
+:assumption (or x18009 x13956 (not x29799))
+:assumption (or x22661 x7596 x18519)
+:assumption (or x13956 (not x8401) x8002 (not x30224) (not x25818) x23244)
+:assumption (or (not x12046) (not x29522))
+:assumption (or (not x23107) (not x4104) x18335)
+:assumption (or x30681 (not x29499) (not x3435))
+:assumption (or x1978 (not x16676))
+:assumption (or x29983 (not x5597))
+:assumption (or x6045 (not x23722))
+:assumption (or x29249 x11489)
+:assumption (or x8602 (not x23666))
+:assumption (or x12797 (not x2947) (not x20220) (not x28109) x12077)
+:assumption (or (not x28558) (not x10884))
+:assumption (or (not x31231) (not x5251) (not x22334) (not x19183) x21690 (not x12088) (not x8482))
+:assumption (or (not x25659) x28336)
+:assumption (or (not x11466) x12706)
+:assumption (or (not x12594) x21690)
+:assumption (or x22017 (not x31521) x8830 (not x198) (not x22071) (not x25224))
+:assumption (or (not x25612) x23014)
+:assumption (or x17302 (not x9103) x12250 x18317 (not x9541))
+:assumption (or (not x24751) (not x6571))
+:assumption (or x24133 (not x22914) (not x16808))
+:assumption (or x28726 (not x13989))
+:assumption (or x14341 (not x14201))
+:assumption (or (not x14127) x16674)
+:assumption (or (not x27941) (not x27478))
+:assumption (or x1879 (not x15341))
+:assumption (or (not x27670) x11217)
+:assumption (or (not x8002) (not x9281))
+:assumption (or (not x841) (not x14078))
+:assumption (or (not x19887) x29645)
+:assumption (or x2775 (not x8120))
+:assumption (or (not x23244) (not x25476))
+:assumption (or (not x7798) (not x13586) x27349 (not x24605))
+:assumption (or (not x7200) x27782)
+:assumption (or (not x27928) x20898)
+:assumption (or (not x29971) x22532)
+:assumption (or (not x18703) x11249)
+:assumption (or x23008 x8002 x15519 x31581)
+:assumption (or x19033 (not x21034))
+:assumption (or x5753 (not x30962))
+:assumption (or (not x31909) (not x28012))
+:assumption (or (not x29311) (not x22050))
+:assumption (or (not x30740) (not x14623))
+:assumption (or x28326 (not x21683))
+:assumption (or x6196 x20055)
+:assumption (or (not x19149) (not x20949))
+:assumption (or (not x27998) x11651)
+:assumption (or x28541 x8115)
+:assumption (or x5422 (not x26130) x6635)
+:assumption (or x24394 (not x26723))
+:assumption (or (not x13581) x19557 x10722)
+:assumption (or (not x21922) (not x18100))
+:assumption (or x19793 (not x30183))
+:assumption (or x4698 x31719)
+:assumption (or (not x827) (not x2580))
+:assumption (or x27104 x3083 (not x2922) x14347)
+:assumption (or x1487 (not x14468) x27229 x27384 x20300)
+:assumption (or (not x16648) x26963)
+:assumption (or (not x16141) x203)
+:assumption (or (not x8441) x3455 (not x18589))
+:assumption (or x15205 (not x21956))
+:assumption (or x22019 x9007)
+:assumption (or x21230 x26240)
+:assumption (or x25743 (not x15978))
+:assumption (or (not x13573) x5683)
+:assumption (or x18042 x24722 (not x26638) x17226)
+:assumption (or x22717 (not x1529))
+:assumption (or x12293 x25994)
+:assumption (or (not x5595) (not x26994))
+:assumption (or x11341 (not x24583))
+:assumption (or (not x1052) x8634)
+:assumption (or x5573 (not x20942))
+:assumption (or x5071 (not x4144))
+:assumption (or x3139 (not x15226))
+:assumption (or x24287 x23177)
+:assumption (or x16929 x17856)
+:assumption (or x4528 x16495 (not x704) x6593)
+:assumption (or (not x11764) (not x27943))
+:assumption (or x20257 x6372)
+:assumption (or (not x19571) x12631)
+:assumption (or x3518 x458)
+:assumption (or (not x20076) x10424)
+:assumption (or (not x12700) x9921)
+:assumption (or x17286 (not x20060) (not x8435) x31750 x26065 (not x10069) (not x25679))
+:assumption (or x20074 (not x23244))
+:assumption (or x19396 (not x25366))
+:assumption (or (not x29597) x15987)
+:assumption (or (not x21284) x1295 x8602)
+:assumption (or x23243 (not x24516))
+:assumption (or (not x7742) x11182)
+:assumption (or x17703 (not x18253))
+:assumption (or (not x13016) (not x6243))
+:assumption (or (not x21429) (not x5287))
+:assumption (or x1178 (not x2358))
+:assumption (or x24688 (not x14241))
+:assumption (or (not x30638) (not x19645))
+:assumption (or x8439 x17967)
+:assumption (or (not x14693) x21815)
+:assumption (or (not x8602) x10186 (not x10174))
+:assumption (or x21875 (not x30519))
+:assumption (or x15009 x13040)
+:assumption (or x18042 x16611 x6447 x15897 (not x20403) x19885 (not x9231) (not x4284))
+:assumption (or x23480 x18859)
+:assumption (or (not x29431) (not x13240))
+:assumption (or (not x27498) (not x22286))
+:assumption (or x17649 x14877)
+:assumption (or (not x14335) (not x23244))
+:assumption (or x15353 (not x21653) (not x1566))
+:assumption (or (not x14395) (not x1312) x10515 x26334 x11607 (not x30399) x11576)
+:assumption (or x12033 x26441)
+:assumption (or x12738 (not x26666) (not x16510) x20847 x4376 (not x14501))
+:assumption (or x30466 x13956)
+:assumption (or x22343 x1057)
+:assumption (or (not x13956) (not x25484) (not x7530) x20704)
+:assumption (or (not x27932) x19734)
+:assumption (or (not x21613) (not x18226) (not x1102) (not x14045))
+:assumption (or (not x10848) x11929)
+:assumption (or x28490 (not x3167))
+:assumption (or (not x7955) x16409)
+:assumption (or (not x487) x1393)
+:assumption (or (not x30842) x19212)
+:assumption (or x26578 x7586 x5528)
+:assumption (or x4244 x16156)
+:assumption (or x29815 (not x11857) x14717)
+:assumption (or (not x25260) (not x26633))
+:assumption (or x2379 x592)
+:assumption (or (not x8961) (not x14708))
+:assumption (or x7367 x27400)
+:assumption (or (not x3326) (not x22599))
+:assumption (or (not x9698) x25282)
+:assumption (or (not x19110) (not x17080))
+:assumption (or (not x25494) (not x18040))
+:assumption (or (not x18749) (not x14318))
+:assumption (or x1035 (not x11995))
+:assumption (or x30230 (not x25285) x1261)
+:assumption (or x17186 (not x26143))
+:assumption (or x10615 x25280)
+:assumption (or (not x22803) (not x14179) (not x13759) x25490)
+:assumption (or (not x7900) x17027)
+:assumption (or (not x16025) (not x17728) (not x21508))
+:assumption (or (not x12067) (not x10347))
+:assumption (or (not x17149) x8575)
+:assumption (or (not x25606) x4386 (not x29156))
+:assumption (or (not x29412) (not x29634))
+:assumption (or x23319 x11795)
+:assumption (or (not x14270) (not x26048))
+:assumption (or x31441 x10060)
+:assumption (or (not x19808) x6594)
+:assumption (or (not x14714) (not x2767))
+:assumption (or (not x26762) (not x14347) (not x28062) (not x6204))
+:assumption (or (not x24432) (not x9203))
+:assumption (or x16446 x5531)
+:assumption (or x23625 (not x25171))
+:assumption (or (not x19992) x29898)
+:assumption (or x29326 x1390)
+:assumption (or (not x31448) x7757 x2289 (not x30835) (not x13249) (not x5803))
+:assumption (or (not x23244) (not x26203) x18069)
+:assumption (or (not x13438) x21981)
+:assumption (or x27526 x946)
+:assumption (or x22070 x16999)
+:assumption (or (not x25955) (not x14814))
+:assumption (or x29998 x16025)
+:assumption (or (not x31908) x3186)
+:assumption (or x16496 (not x7854))
+:assumption (or x13018 x257)
+:assumption (or x26814 x1771)
+:assumption (or x7249 x12642)
+:assumption (or (not x22921) x20685)
+:assumption (or x22135 x30585)
+:assumption (or x17177 x22352)
+:assumption (or x16907 (not x8201))
+:assumption (or (not x23480) x23399 x22829 (not x18859) x19992)
+:assumption (or (not x12729) (not x16525))
+:assumption (or (not x24204) x10534)
+:assumption (or x3731 (not x9981))
+:assumption (or x10741 (not x11252))
+:assumption (or x4526 x14509)
+:assumption (or x21815 x15965)
+:assumption (or (not x4316) (not x5734))
+:assumption (or (not x24081) (not x3542))
+:assumption (or (not x6031) x4961)
+:assumption (or (not x26178) (not x27036))
+:assumption (or x13564 x18642)
+:assumption (or x26434 x7828 x18915 (not x5084) (not x19105) x8002)
+:assumption (or x21718 (not x6315))
+:assumption (or (not x18707) x8874)
+:assumption (or (not x6381) (not x13022))
+:assumption (or (not x27954) (not x3726))
+:assumption (or x1305 x174)
+:assumption (or x15576 (not x23323))
+:assumption (or x15633 (not x1153) (not x21653))
+:assumption (or x8087 x3402)
+:assumption (or x5105 (not x17814))
+:assumption (or x1507 (not x24480) (not x5261) (not x7343) x11915)
+:assumption (or (not x31541) (not x7835))
+:assumption (or x22161 (not x11325))
+:assumption (or (not x31619) (not x14436))
+:assumption (or x21974 (not x21322))
+:assumption (or x18166 (not x19956))
+:assumption (or x25496 (not x17021))
+:assumption (or (not x22959) (not x29239) (not x25865) x23096 (not x31275))
+:assumption (or (not x3977) x19813)
+:assumption (or (not x22972) (not x5018))
+:assumption (or x15830 (not x7316))
+:assumption (or x11033 (not x22482))
+:assumption (or x8264 (not x10995))
+:assumption (or (not x8534) x7912 (not x6381) (not x28541))
+:assumption (or (not x1811) (not x6006))
+:assumption (or x4726 x24072)
+:assumption (or (not x24744) x12258)
+:assumption (or (not x13563) (not x22260))
+:assumption (or (not x26397) (not x18781))
+:assumption (or x4991 x202)
+:assumption (or x8961 x11080)
+:assumption (or (not x18597) x20291)
+:assumption (or x14069 x9902)
+:assumption (or x7921 (not x6016))
+:assumption (or (not x12241) x20814)
+:assumption (or x9597 (not x2541))
+:assumption (or (not x11377) (not x23273))
+:assumption (or x21572 (not x1393))
+:assumption (or x15403 x27305)
+:assumption (or x9236 (not x21977))
+:assumption (or (not x9081) x17597)
+:assumption (or x5315 x28224)
+:assumption (or x3356 x25654)
+:assumption (or (not x18383) x31681)
+:assumption (or (not x11456) x8863)
+:assumption (or x27503 (not x10380))
+:assumption (or (not x12504) (not x20952))
+:assumption (or x26782 (not x8219))
+:assumption (or (not x20854) (not x12046))
+:assumption (or (not x20501) (not x8529))
+:assumption (or x21254 x19004)
+:assumption (or (not x14759) (not x6008))
+:assumption (or x28952 (not x8976))
+:assumption (or (not x16378) x3996 (not x17883) x1228 x29325 (not x16708) (not x18592) x21648)
+:assumption (or x6926 (not x25659))
+:assumption (or x2288 (not x4428))
+:assumption (or x26471 (not x15944))
+:assumption (or (not x29432) (not x5249))
+:assumption (or (not x2738) x7956 (not x17349) (not x9971) x3359 x12213)
+:assumption (or (not x21298) (not x6872) (not x21687) (not x2319))
+:assumption (or (not x1900) (not x16018))
+:assumption (or (not x30110) (not x1448))
+:assumption (or (not x2471) x7381)
+:assumption (or x6066 (not x8724) x13956)
+:assumption (or x19667 (not x21259))
+:assumption (or x27577 x8222)
+:assumption (or x22178 x20458)
+:assumption (or (not x5896) (not x29808))
+:assumption (or (not x29197) (not x21967))
+:assumption (or (not x28935) x15359)
+:assumption (or (not x5528) x4172)
+:assumption (or x5352 (not x14670) x30913)
+:assumption (or x23572 x6307 (not x10874) x7964)
+:assumption (or x7937 x12830 x7179 (not x14442) (not x17302) x2842 x20604)
+:assumption (or (not x16161) x16903)
+:assumption (or (not x15745) x3264 x2592 (not x14519) x13749 x21201 (not x31616) (not x14395))
+:assumption (or (not x17723) x7063)
+:assumption (or (not x11245) (not x12515))
+:assumption (or (not x8466) (not x27674))
+:assumption (or x9008 x11878)
+:assumption (or x28953 (not x18042))
+:assumption (or (not x11331) x21672)
+:assumption (or (not x19556) (not x23278))
+:assumption (or (not x635) (not x12625))
+:assumption (or (not x10374) (not x2322))
+:assumption (or x27915 x31688)
+:assumption (or x12398 x28990 x14138 (not x15267))
+:assumption (or (not x16415) x31669)
+:assumption (or (not x31129) x2986)
+:assumption (or (not x29947) (not x4937))
+:assumption (or (not x20420) x20473)
+:assumption (or x11181 x20217)
+:assumption (or (not x10064) (not x16109) x15917 (not x5209))
+:assumption (or x27659 (not x1887))
+:assumption (or (not x14598) (not x18178))
+:assumption (or (not x13041) (not x9014))
+:assumption (or (not x17277) (not x1666))
+:assumption (or x16510 (not x17884))
+:assumption (or x23725 x25523)
+:assumption (or (not x7286) x23196)
+:assumption (or (not x14928) (not x24880))
+:assumption (or x17609 (not x25578))
+:assumption (or x22630 x2133)
+:assumption (or (not x6482) (not x1393) x24709)
+:assumption (or (not x21532) (not x21677) (not x17227) x28935 (not x15359))
+:assumption (or (not x5262) x20350)
+:assumption (or x29850 x2133)
+:assumption (or x2905 x10060)
+:assumption (or (not x3763) x3891 (not x19210) (not x15044) (not x12930) (not x29860))
+:assumption (or x7974 (not x21082))
+:assumption (or x26971 (not x15799))
+:assumption (or x937 x30224)
+:assumption (or (not x12002) (not x11736))
+:assumption (or (not x30842) (not x23463))
+:assumption (or (not x23155) x31483)
+:assumption (or x31462 (not x22978))
+:assumption (or x9247 (not x27063))
+:assumption (or (not x30751) (not x12083) x4083)
+:assumption (or (not x11246) x13323)
+:assumption (or x13576 (not x5327))
+:assumption (or x20218 (not x30113))
+:assumption (or (not x207) x19203)
+:assumption (or x31430 (not x20929))
+:assumption (or x16613 x30751)
+:assumption (or (not x5999) (not x15270))
+:assumption (or x21432 x30140 (not x1633) (not x20665))
+:assumption (or x5344 (not x675) (not x8120))
+:assumption (or x7589 (not x8143))
+:assumption (or x26398 (not x27233))
+:assumption (or (not x29051) (not x8788))
+:assumption (or x4459 (not x28743))
+:assumption (or (not x12889) (not x9567))
+:assumption (or x28780 x16482)
+:assumption (or x2868 x25911 (not x5987) x4622)
+:assumption (or x20723 x7348)
+:assumption (or (not x12831) (not x14138) (not x10516))
+:assumption (or (not x11936) x15463)
+:assumption (or x21616 x25093)
+:assumption (or x6739 (not x14409))
+:assumption (or (not x12278) (not x28764) (not x25818) x24481)
+:assumption (or (not x30954) (not x23548))
+:assumption (or x15176 (not x2723))
+:assumption (or (not x13956) (not x7637) x1542 x6780)
+:assumption (or (not x4741) x15346)
+:assumption (or (not x18711) x24130)
+:assumption (or (not x27274) x17571 x27998)
+:assumption (or (not x26432) (not x19434))
+:assumption (or (not x18777) x6896)
+:assumption (or x24465 x6408)
+:assumption (or x23322 (not x8602) x14538)
+:assumption (or (not x28571) x6425)
+:assumption (or (not x10325) x16456)
+:assumption (or x142 x22855 (not x12697) x28890)
+:assumption (or (not x25969) x15161)
+:assumption (or (not x22515) x29333)
+:assumption (or x20402 (not x14641) (not x31790) (not x20929))
+:assumption (or x27999 x20285 x3987)
+:assumption (or (not x27359) (not x24684))
+:assumption (or (not x5943) (not x14347))
+:assumption (or (not x8002) x20074)
+:assumption (or (not x20036) (not x14839))
+:assumption (or x7044 (not x16409))
+:assumption (or x3239 (not x29902))
+:assumption (or x16510 x12653)
+:assumption (or x10344 (not x5146))
+:assumption (or x5884 (not x1359))
+:assumption (or (not x22248) (not x11783))
+:assumption (or (not x22016) (not x27171))
+:assumption (or x11423 x27911)
+:assumption (or x16684 (not x15423))
+:assumption (or (not x14946) (not x23923))
+:assumption (or x25430 (not x10029))
+:assumption (or (not x16656) (not x17850))
+:assumption (or x14014 (not x27842))
+:assumption (or x22232 x18959)
+:assumption (or x4385 (not x23696))
+:assumption (or x9325 (not x12713))
+:assumption (or x26425 x26432)
+:assumption (or (not x11980) (not x13738))
+:assumption (or x28224 x20827)
+:assumption (or x11719 x5054)
+:assumption (or x17833 x29233)
+:assumption (or x1668 (not x5133))
+:assumption (or x9429 x4904 (not x2127))
+:assumption (or (not x8048) x12941)
+:assumption (or (not x23900) (not x31687))
+:assumption (or x7249 x12917)
+:assumption (or x4773 x19925)
+:assumption (or x13658 x29985)
+:assumption (or x30826 (not x14878) x10261 x30208)
+:assumption (or (not x12238) x23140)
+:assumption (or (not x9158) (not x7061))
+:assumption (or x24273 (not x15996))
+:assumption (or (not x22339) (not x22825))
+:assumption (or (not x7310) x28199)
+:assumption (or (not x3404) x16469)
+:assumption (or (not x1269) x19550)
+:assumption (or (not x9610) (not x21537) x17201 (not x31001))
+:assumption (or (not x24370) (not x7000))
+:assumption (or (not x27369) (not x9152))
+:assumption (or x13531 (not x1525))
+:assumption (or (not x24771) (not x10067))
+:assumption (or (not x20425) (not x6361))
+:assumption (or x6243 x27599 x5933)
+:assumption (or (not x10665) (not x21295))
+:assumption (or x8229 (not x22733) x28870)
+:assumption (or x29167 (not x27349))
+:assumption (or (not x6263) (not x1354))
+:assumption (or (not x28221) (not x9350))
+:assumption (or (not x7231) x26245)
+:assumption (or x31274 (not x11184))
+:assumption (or x15492 (not x28981) (not x18831))
+:assumption (or x28580 x21484)
+:assumption (or (not x16601) (not x2330))
+:assumption (or (not x15386) x16455)
+:assumption (or (not x1807) (not x19246))
+:assumption (or x30261 (not x30979))
+:assumption (or (not x587) (not x2229))
+:assumption (or x9465 x5195 (not x7752) (not x24471) x30906)
+:assumption (or (not x13883) x28364)
+:assumption (or (not x11357) (not x1042))
+:assumption (or (not x13844) (not x16510))
+:assumption (or x30583 (not x22849))
+:assumption (or x23343 x19672)
+:assumption (or x25659 (not x23433))
+:assumption (or (not x27531) x19590)
+:assumption (or x7425 (not x12768))
+:assumption (or (not x25121) x24042)
+:assumption (or x25620 x5713)
+:assumption (or (not x3121) x532)
+:assumption (or (not x9153) (not x13446))
+:assumption (or x8136 x12578)
+:assumption (or x1719 (not x28453))
+:assumption (or (not x18385) x18148)
+:assumption (or (not x8974) (not x24748))
+:assumption (or x15856 x2642 x26293 (not x27581))
+:assumption (or x16921 (not x17359))
+:assumption (or x14307 x7250)
+:assumption (or x6779 x4804)
+:assumption (or (not x23244) x1221)
+:assumption (or x18984 x19332)
+:assumption (or (not x29150) (not x20160))
+:assumption (or (not x31359) (not x25533))
+:assumption (or x14738 (not x15007))
+:assumption (or x15484 (not x15589))
+:assumption (or x30292 (not x25341))
+:assumption (or x25659 x12934)
+:assumption (or x5827 (not x6783))
+:assumption (or (not x14508) x25973)
+:assumption (or (not x3313) x16025 (not x28511))
+:assumption (or x768 (not x18863))
+:assumption (or (not x18096) (not x10855))
+:assumption (or x28135 (not x8709))
+:assumption (or x104 (not x4168))
+:assumption (or x5352 (not x5627))
+:assumption (or (not x25192) x5778)
+:assumption (or x18420 x6629)
+:assumption (or x2163 (not x21424))
+:assumption (or (not x19716) x16802)
+:assumption (or (not x10203) x11664)
+:assumption (or x22686 (not x23331))
+:assumption (or x6251 x18188 (not x17024))
+:assumption (or x7949 (not x22360))
+:assumption (or (not x9805) x8100)
+:assumption (or x1761 x18995)
+:assumption (or x11328 x20949)
+:assumption (or x30113 x21392)
+:assumption (or (not x24857) x7129)
+:assumption (or x14870 x12813 (not x1393))
+:assumption (or x29387 x13612)
+:assumption (or (not x21349) x22289)
+:assumption (or x24951 x172)
+:assumption (or x21951 x5849)
+:assumption (or (not x6196) x31248 (not x3403) (not x3261) x6961 (not x28804) x27235 (not x10704))
+:assumption (or (not x12199) (not x27892))
+:assumption (or x15044 x19210)
+:assumption (or x30073 (not x5279) (not x14591))
+:assumption (or (not x20325) (not x19882))
+:assumption (or (not x15072) (not x30838))
+:assumption (or x23512 (not x15159))
+:assumption (or (not x5791) x11480)
+:assumption (or (not x8479) (not x9448))
+:assumption (or x26557 x14938)
+:assumption (or (not x8198) (not x16350))
+:assumption (or (not x15917) x17329)
+:assumption (or (not x14995) (not x30180))
+:assumption (or (not x21581) x3105)
+:assumption (or (not x19667) (not x9478))
+:assumption (or x4786 x807)
+:assumption (or (not x12397) (not x785))
+:assumption (or x31589 (not x2129))
+:assumption (or (not x2347) (not x20550) (not x27941))
+:assumption (or x9029 (not x1288) x4781 (not x1649) (not x6166))
+:assumption (or (not x9897) (not x5235))
+:assumption (or (not x28410) (not x12796))
+:assumption (or x10874 x10458)
+:assumption (or (not x1492) x25334)
+:assumption (or x13538 x25374 (not x30124))
+:assumption (or (not x4394) x31109)
+:assumption (or (not x25315) x5129)
+:assumption (or (not x29908) (not x23244))
+:assumption (or x10336 (not x27445))
+:assumption (or (not x1479) x12473)
+:assumption (or (not x5929) x3262 x16108 (not x29312))
+:assumption (or (not x26859) x14655)
+:assumption (or (not x22128) (not x19343))
+:assumption (or (not x86) x25518 x11062 x25927 (not x10071) x13181)
+:assumption (or x18779 x6370 x23672)
+:assumption (or (not x30490) (not x16654))
+:assumption (or x14741 (not x1671))
+:assumption (or x19799 (not x23541))
+:assumption (or x21169 x27407 (not x28912))
+:assumption (or (not x9008) (not x2730))
+:assumption (or x23244 (not x6888))
+:assumption (or x21616 (not x30923) x28941 (not x13956) x25760 x27535)
+:assumption (or (not x29606) (not x28016))
+:assumption (or x2448 x23712)
+:assumption (or x23294 x19756)
+:assumption (or x7545 x14312 x17937 x21743 (not x25486) (not x26162))
+:assumption (or (not x28083) x12496)
+:assumption (or (not x772) x142)
+:assumption (or (not x11440) (not x18573) x29127 x13639 x27125)
+:assumption (or x21815 x16622)
+:assumption (or x19822 (not x24034) x22604 (not x28357))
+:assumption (or (not x19682) x17266)
+:assumption (or x24862 (not x11550))
+:assumption (or x4050 x15591)
+:assumption (or (not x3053) (not x2785))
+:assumption (or x5528 x23986 (not x11267))
+:assumption (or (not x27814) x11046)
+:assumption (or (not x311) x19119)
+:assumption (or (not x24371) x26655)
+:assumption (or (not x8002) x2077)
+:assumption (or (not x29902) (not x22687))
+:assumption (or (not x3372) (not x17325))
+:assumption (or (not x3389) (not x10337) x8002 (not x9361) (not x30591) x31716)
+:assumption (or x16003 (not x6765) (not x10510))
+:assumption (or x2649 x26817 (not x4217))
+:assumption (or (not x2304) (not x12715))
+:assumption (or (not x23244) (not x8559))
+:assumption (or (not x21763) (not x29903))
+:assumption (or x11414 x18744)
+:assumption (or x15977 x2907)
+:assumption (or (not x10002) x20846)
+:assumption (or (not x12698) x22829 x8980 (not x14974))
+:assumption (or (not x5148) x18788)
+:assumption (or (not x987) (not x23480))
+:assumption (or x27682 x21518 (not x28242))
+:assumption (or x18772 x21740)
+:assumption (or (not x16562) (not x28007))
+:assumption (or x12151 (not x9197))
+:assumption (or x12373 x8583)
+:assumption (or x23701 (not x10048))
+:assumption (or (not x21154) x24643)
+:assumption (or (not x849) (not x20312))
+:assumption (or (not x25315) (not x14071))
+:assumption (or x18360 (not x11454) (not x3884))
+:assumption (or (not x26944) x21298)
+:assumption (or (not x30177) x25952 x6788 x23978)
+:assumption (or x13554 x3354)
+:assumption (or (not x14628) x20059)
+:assumption (or (not x23244) (not x28524) (not x24862))
+:assumption (or x6746 (not x15487))
+:assumption (or x20503 (not x2144) x25659)
+:assumption (or (not x116) x19158)
+:assumption (or (not x5242) x4875)
+:assumption (or x417 (not x7071))
+:assumption (or x15887 x26299)
+:assumption (or x13831 x849)
+:assumption (or x18757 x31722)
+:assumption (or x10422 x16937)
+:assumption (or x26012 (not x21812))
+:assumption (or (not x3103) x9852)
+:assumption (or (not x13741) x6579)
+:assumption (or x23305 x26268 x25366)
+:assumption (or x16876 x4560)
+:assumption (or (not x16967) x4067 x16197 (not x1397) x24534)
+:assumption (or (not x11920) (not x31782) (not x19992))
+:assumption (or x26051 (not x30517))
+:assumption (or x2916 (not x30483))
+:assumption (or x2864 x24401)
+:assumption (or (not x7546) x27271 (not x25423))
+:assumption (or (not x19992) x6803)
+:assumption (or (not x9254) (not x26589))
+:assumption (or (not x29508) (not x18475) x8002 x21100 x19522 x29538)
+:assumption (or (not x5859) x10655)
+:assumption (or (not x25153) (not x9004))
+:assumption (or (not x20484) x10970)
+:assumption (or x21850 (not x16565))
+:assumption (or (not x18450) (not x5015))
+:assumption (or x11572 (not x31429))
+:assumption (or x10061 (not x14981) x27203)
+:assumption (or x10327 x8187)
+:assumption (or x2582 x17084)
+:assumption (or x8002 x21957 x22151 x21782)
+:assumption (or (not x1986) (not x21195))
+:assumption (or x14407 x27584)
+:assumption (or (not x13526) x12913)
+:assumption (or x31710 (not x8623))
+:assumption (or x2271 (not x24564))
+:assumption (or x18880 x14368 (not x18069) x8527 x23289)
+:assumption (or (not x8532) x4117)
+:assumption (or (not x24726) (not x6096))
+:assumption (or (not x27269) x21756)
+:assumption (or x17878 (not x10974))
+:assumption (or (not x13385) (not x16741))
+:assumption (or (not x21744) (not x4691))
+:assumption (or x20060 x24051 x17116 x14931 x12938)
+:assumption (or (not x31507) (not x29413))
+:assumption (or (not x26566) (not x2873))
+:assumption (or (not x16689) (not x23263))
+:assumption (or (not x21880) x28477)
+:assumption (or x20560 (not x30130))
+:assumption (or (not x10737) x10874)
+:assumption (or (not x26230) x3257)
+:assumption (or (not x92) (not x19295))
+:assumption (or x29301 x12068)
+:assumption (or (not x10578) x30914)
+:assumption (or (not x25525) (not x20134))
+:assumption (or x14920 x20845)
+:assumption (or (not x13516) x3435)
+:assumption (or (not x29270) x7478)
+:assumption (or (not x10490) (not x19226))
+:assumption (or x21704 (not x21537))
+:assumption (or x3008 (not x26018))
+:assumption (or x26890 x15947)
+:assumption (or x3322 (not x31363) x24306 x8674 (not x10133) x14561 x21443 (not x2471))
+:assumption (or x13367 x9393)
+:assumption (or x28875 x1398)
+:assumption (or x9487 (not x26322))
+:assumption (or (not x30326) x8536)
+:assumption (or x9218 (not x21306))
+:assumption (or (not x14941) (not x28933))
+:assumption (or (not x5368) x1477)
+:assumption (or (not x918) (not x31261))
+:assumption (or (not x5782) (not x25630))
+:assumption (or x26263 x8997)
+:assumption (or x20713 x16575 x7710 x30261)
+:assumption (or (not x9832) (not x23307))
+:assumption (or x24128 x13426)
+:assumption (or x3722 (not x13576))
+:assumption (or x169 x29112)
+:assumption (or x24524 x31524)
+:assumption (or x16516 x19183 (not x21935) (not x28708))
+:assumption (or x10964 (not x30597))
+:assumption (or (not x5190) (not x25614))
+:assumption (or (not x9453) (not x7133))
+:assumption (or x17436 x3718)
+:assumption (or x6193 (not x3033))
+:assumption (or x10814 (not x21450))
+:assumption (or x6074 x19359 x2893 x16907)
+:assumption (or (not x4645) (not x29053))
+:assumption (or (not x2562) x16025 (not x28364))
+:assumption (or (not x397) (not x2366))
+:assumption (or (not x20422) (not x28541))
+:assumption (or x11792 x16625)
+:assumption (or (not x10515) x14756)
+:assumption (or x29922 x6818)
+:assumption (or (not x25659) x2144)
+:assumption (or (not x26895) x26824)
+:assumption (or x20949 (not x15871))
+:assumption (or x5660 (not x5127) (not x4081))
+:assumption (or (not x13706) (not x9922))
+:assumption (or (not x16131) (not x19830))
+:assumption (or x5142 x15202 x142)
+:assumption (or (not x6153) (not x3683))
+:assumption (or x27003 (not x7337))
+:assumption (or (not x16815) x28644)
+:assumption (or x22550 x13960)
+:assumption (or (not x10859) x16070)
+:assumption (or x18877 (not x13049))
+:assumption (or x31288 x22518)
+:assumption (or (not x15506) x1000)
+:assumption (or (not x29764) x20592)
+:assumption (or (not x6183) (not x4720))
+:assumption (or x12598 x19820)
+:assumption (or (not x501) (not x4814))
+:assumption (or x13956 x22493)
+:assumption (or x21870 (not x24356))
+:assumption (or (not x23146) (not x16341))
+:assumption (or (not x1348) x25629)
+:assumption (or x26324 (not x20086))
+:assumption (or x19049 (not x1393) (not x22458))
+:assumption (or x7697 x8586 (not x24641) x30112)
+:assumption (or (not x21298) x2465 (not x28353))
+:assumption (or x20441 (not x21181))
+:assumption (or (not x15009) x12488 x860 (not x30475))
+:assumption (or (not x14910) (not x9453))
+:assumption (or x19081 (not x10895))
+:assumption (or (not x23868) (not x15916))
+:assumption (or (not x29149) x5528)
+:assumption (or (not x3511) x1790 (not x26670) x25366)
+:assumption (or (not x16594) x20929)
+:assumption (or x12073 (not x21140))
+:assumption (or (not x29903) (not x23879) (not x13810))
+:assumption (or (not x23251) (not x26731))
+:assumption (or x18623 x5024)
+:assumption (or x4914 x18300)
+:assumption (or (not x16286) x10180 x6327)
+:assumption (or (not x12725) (not x17211))
+:assumption (or (not x14049) (not x15664))
+:assumption (or x2343 x10354)
+:assumption (or x14675 (not x23990))
+:assumption (or x9008 x12968)
+:assumption (or (not x8085) x2369)
+:assumption (or x26036 x17948)
+:assumption (or x4844 (not x2058))
+:assumption (or (not x24826) x19981)
+:assumption (or x6441 x13131)
+:assumption (or (not x25297) x5874)
+:assumption (or x21066 x27538)
+:assumption (or (not x26432) x7603)
+:assumption (or (not x11272) (not x13679))
+:assumption (or x26897 x24048)
+:assumption (or (not x14395) (not x28708) x31069)
+:assumption (or (not x26127) x3264 (not x27059))
+:assumption (or x15891 (not x28732))
+:assumption (or x18069 (not x19495))
+:assumption (or x1229 x10742 (not x31264) x22648 (not x12482))
+:assumption (or (not x2) (not x4484))
+:assumption (or x20087 x25445 x24756 (not x923))
+:assumption (or x11857 (not x22890))
+:assumption (or x13438 (not x8188))
+:assumption (or (not x26659) (not x19326))
+:assumption (or x3494 x11954)
+:assumption (or (not x21377) x16876)
+:assumption (or x31527 (not x8602) (not x11438))
+:assumption (or x3195 (not x9748))
+:assumption (or (not x4681) (not x31628) (not x29442) x25878 x3782)
+:assumption (or x18257 x1474)
+:assumption (or (not x26936) x17671)
+:assumption (or x25809 x11528)
+:assumption (or (not x23466) x15515)
+:assumption (or x13346 x2133)
+:assumption (or x22820 (not x8858))
+:assumption (or (not x142) (not x22855) x5340)
+:assumption (or (not x17257) x22478)
+:assumption (or x8013 (not x6021))
+:assumption (or x12294 x24141)
+:assumption (or x16583 (not x13846))
+:assumption (or x26638 (not x30873))
+:assumption (or (not x17351) (not x15637))
+:assumption (or x6148 x16777)
+:assumption (or x6678 x8080)
+:assumption (or (not x24725) x2981)
+:assumption (or x22855 (not x17062))
+:assumption (or (not x14607) (not x6243))
+:assumption (or x30360 (not x8504) (not x11606) x27546 (not x6149))
+:assumption (or x7274 (not x8938))
+:assumption (or (not x5974) (not x6969))
+:assumption (or x26293 (not x16497))
+:assumption (or (not x30832) x31680)
+:assumption (or x10773 x23087)
+:assumption (or (not x20585) x25011)
+:assumption (or x23509 x25244)
+:assumption (or (not x12670) (not x11433))
+:assumption (or x30403 (not x21541))
+:assumption (or (not x21817) x4297)
+:assumption (or x2727 x21298)
+:assumption (or x2050 (not x2363))
+:assumption (or (not x15968) (not x13956))
+:assumption (or x25376 x23494)
+:assumption (or x27797 x3048)
+:assumption (or (not x30702) x17439)
+:assumption (or (not x10081) x18496)
+:assumption (or x10369 x792)
+:assumption (or (not x681) x26090)
+:assumption (or (not x746) x3173)
+:assumption (or x21144 x19992)
+:assumption (or x19877 x27778)
+:assumption (or x19388 x28431)
+:assumption (or x30672 (not x17826))
+:assumption (or x644 x31454)
+:assumption (or (not x29759) (not x21277))
+:assumption (or x7514 (not x6666))
+:assumption (or (not x20751) x20995)
+:assumption (or (not x27773) (not x27440))
+:assumption (or (not x25820) x26660)
+:assumption (or x31375 (not x26061))
+:assumption (or x18609 (not x29606))
+:assumption (or x29244 (not x647))
+:assumption (or x15332 (not x5624))
+:assumption (or x13230 x9)
+:assumption (or x13310 (not x7786))
+:assumption (or (not x9001) x1909)
+:assumption (or x7224 (not x20618))
+:assumption (or x15861 x2701 (not x25314))
+:assumption (or x24924 x27666)
+:assumption (or x3758 x6346)
+:assumption (or (not x19428) x2198)
+:assumption (or x24235 (not x27852))
+:assumption (or x30422 (not x14389))
+:assumption (or (not x1367) (not x4694))
+:assumption (or x20627 (not x26375))
+:assumption (or x24679 x200)
+:assumption (or x3152 (not x28956))
+:assumption (or x21419 (not x15850))
+:assumption (or x17893 x15865)
+:assumption (or x10648 x3134)
+:assumption (or (not x28682) x2292)
+:assumption (or x15048 (not x19698))
+:assumption (or x24595 (not x19136))
+:assumption (or x19462 x13956)
+:assumption (or (not x18524) x3454 x18224 (not x15890))
+:assumption (or x454 (not x22308))
+:assumption (or (not x8772) x30006 x12116 (not x17771) (not x310) x31504)
+:assumption (or (not x15629) (not x30481) (not x21298))
+:assumption (or (not x31014) x13621 (not x8412) x26387 (not x12783) (not x15942))
+:assumption (or (not x966) x24604)
+:assumption (or (not x6445) (not x4809))
+:assumption (or x20711 x31377)
+:assumption (or (not x6952) (not x5698))
+:assumption (or x17241 (not x26835))
+:assumption (or (not x1393) x9072)
+:assumption (or x10958 x13348)
+:assumption (or x25322 (not x4559))
+:assumption (or (not x6804) x4269)
+:assumption (or (not x3573) x4092)
+:assumption (or x19591 x19390)
+:assumption (or (not x30975) x20030)
+:assumption (or (not x1718) (not x16018))
+:assumption (or x5500 x12052)
+:assumption (or x14880 (not x23804) (not x5692) (not x5183) (not x26489))
+:assumption (or x2498 x18889)
+:assumption (or x6205 x15030)
+:assumption (or (not x26897) x20752)
+:assumption (or (not x5875) (not x4374))
+:assumption (or x16802 (not x17524))
+:assumption (or x16017 (not x6885))
+:assumption (or (not x22236) x6750)
+:assumption (or x6761 (not x19791))
+:assumption (or x8032 (not x7830))
+:assumption (or x23110 (not x9249))
+:assumption (or (not x13337) (not x25163))
+:assumption (or (not x18069) (not x9063))
+:assumption (or (not x5206) x12036)
+:assumption (or x10874 x13602)
+:assumption (or (not x26424) x20871)
+:assumption (or x11172 (not x8324))
+:assumption (or (not x31829) x28541 (not x14872))
+:assumption (or (not x24537) x5079)
+:assumption (or x27123 (not x24997))
+:assumption (or x6204 (not x5207))
+:assumption (or (not x22484) (not x6331))
+:assumption (or (not x2442) x26578 (not x16464) (not x8002))
+:assumption (or (not x10645) (not x18227))
+:assumption (or (not x30397) (not x19767))
+:assumption (or x6738 (not x23244))
+:assumption (or (not x7537) (not x14443) x23244)
+:assumption (or x22662 x23216)
+:assumption (or x9258 (not x3878))
+:assumption (or (not x17572) (not x11514))
+:assumption (or (not x16047) x7108)
+:assumption (or x12798 (not x5695))
+:assumption (or (not x7854) (not x2360))
+:assumption (or x14918 (not x21653) (not x21052))
+:assumption (or x2484 (not x28777))
+:assumption (or (not x23741) x3763)
+:assumption (or x13388 x24731)
+:assumption (or (not x31095) x3516)
+:assumption (or (not x10064) (not x22548) x15917 (not x26990) (not x24079) x16988)
+:assumption (or (not x10007) x3094)
+:assumption (or (not x3073) (not x21990))
+:assumption (or (not x28714) (not x27463))
+:assumption (or x18371 (not x4215))
+:assumption (or x21516 (not x20809))
+:assumption (or (not x30299) x10046)
+:assumption (or x10117 x7854)
+:assumption (or x5938 x5138)
+:assumption (or (not x23350) x28973 x288)
+:assumption (or (not x31487) (not x5872))
+:assumption (or (not x25125) x24756)
+:assumption (or x22163 x25531)
+:assumption (or (not x28852) (not x13988))
+:assumption (or (not x12477) x30375)
+:assumption (or (not x11035) x11256)
+:assumption (or (not x29154) (not x20795) x30645 (not x23244) x9515 (not x13919) x13355 (not x25455))
+:assumption (or (not x7839) x4718)
+:assumption (or x24816 (not x14591) x22269 (not x24211) x18934)
+:assumption (or (not x23165) (not x4560))
+:assumption (or (not x5886) (not x8523))
+:assumption (or (not x18501) x7380)
+:assumption (or x25090 x244)
+:assumption (or (not x11426) (not x29244) x647 x11281 x2781)
+:assumption (or x10993 (not x20526))
+:assumption (or (not x5355) (not x5387))
+:assumption (or (not x11098) (not x18684) (not x2553) (not x3435) (not x5961))
+:assumption (or (not x6065) x14757 (not x21756) (not x9245))
+:assumption (or (not x1403) (not x27018))
+:assumption (or x31127 (not x11521))
+:assumption (or x22026 (not x29502) x31700 (not x27003) x3801)
+:assumption (or (not x26279) x195)
+:assumption (or x3668 (not x10896))
+:assumption (or x15570 x30661)
+:assumption (or (not x6103) (not x4058) x4268 x18825 x2880 (not x15749))
+:assumption (or x16745 (not x13444) x5978)
+:assumption (or (not x6314) (not x8648))
+:assumption (or (not x19288) x6451)
+:assumption (or (not x15150) x13868)
+:assumption (or x16934 x16510)
+:assumption (or (not x14313) x22235)
+:assumption (or (not x12812) x21786)
+:assumption (or x30696 (not x6183))
+:assumption (or (not x7192) x4259)
+:assumption (or x13413 x25470)
+:assumption (or x13396 x24799)
+:assumption (or x7640 x28033)
+:assumption (or (not x21815) (not x22954))
+:assumption (or x28324 (not x20438))
+:assumption (or (not x11579) (not x11809))
+:assumption (or (not x8286) x30063)
+:assumption (or (not x7986) x24558)
+:assumption (or x25369 (not x1171))
+:assumption (or (not x31571) (not x21712))
+:assumption (or x11838 x26713 (not x26354))
+:assumption (or (not x3015) (not x14687))
+:assumption (or (not x31903) (not x16616))
+:assumption (or x21506 (not x14653))
+:assumption (or (not x3132) x17177)
+:assumption (or x25439 (not x5410))
+:assumption (or (not x21778) (not x10480))
+:assumption (or x6522 (not x6969) (not x27459))
+:assumption (or (not x398) (not x20625))
+:assumption (or (not x5585) x1393 (not x2788))
+:assumption (or (not x18674) x7130)
+:assumption (or (not x18141) (not x22749))
+:assumption (or (not x27821) (not x16823))
+:assumption (or x20949 (not x28484))
+:assumption (or x609 (not x230))
+:assumption (or x14138 x28990 (not x18167) (not x14590))
+:assumption (or (not x5826) x553)
+:assumption (or (not x28141) (not x25838))
+:assumption (or (not x27233) (not x8950))
+:assumption (or x72 x2133)
+:assumption (or (not x12673) (not x28183))
+:assumption (or x14703 x13519)
+:assumption (or x6512 (not x20550))
+:assumption (or x18500 x21679)
+:assumption (or (not x31877) (not x24877))
+:assumption (or x27233 (not x2680))
+:assumption (or x21850 x12934)
+:assumption (or (not x15917) (not x14925))
+:assumption (or x16300 x12555)
+:assumption (or x18916 (not x26939))
+:assumption (or x13012 x10242 (not x28272))
+:assumption (or (not x22491) (not x8874))
+:assumption (or x10885 (not x4651))
+:assumption (or x8638 (not x5470))
+:assumption (or (not x18608) x18133)
+:assumption (or x21535 (not x31696))
+:assumption (or (not x26788) (not x6733))
+:assumption (or x2498 (not x30594) (not x5895))
+:assumption (or x25974 x30070 (not x19316) x16654)
+:assumption (or (not x16092) (not x30092))
+:assumption (or x1214 x30390)
+:assumption (or (not x24284) x12939 (not x18238) (not x4434) (not x7913) (not x4064) (not x30047) (not x8961))
+:assumption (or (not x30827) (not x27903))
+:assumption (or x6279 (not x22308) x69)
+:assumption (or x13804 x3423)
+:assumption (or (not x9596) (not x8856))
+:assumption (or (not x4132) (not x3405))
+:assumption (or x987 x23480)
+:assumption (or x22184 x27998)
+:assumption (or (not x13462) x8863)
+:assumption (or (not x22766) x24392)
+:assumption (or x17330 x14591)
+:assumption (or x19745 x3160)
+:assumption (or (not x19041) x27085)
+:assumption (or x7080 x16832)
+:assumption (or (not x13814) x6220)
+:assumption (or x22427 x20087)
+:assumption (or x6062 (not x13716) (not x28912))
+:assumption (or (not x28403) x5146)
+:assumption (or (not x17187) x3325 (not x3686))
+:assumption (or x30062 (not x14732))
+:assumption (or (not x544) x24118)
+:assumption (or x12076 (not x5302))
+:assumption (or x26670 x22147)
+:assumption (or x23836 x31399)
+:assumption (or (not x30935) (not x12548))
+:assumption (or x15817 (not x26267))
+:assumption (or x8863 (not x7204))
+:assumption (or x9008 x30833 x20525 (not x7368) x23791 (not x437))
+:assumption (or x15049 x26918)
+:assumption (or x28913 (not x2404))
+:assumption (or (not x24038) (not x27749))
+:assumption (or (not x31815) (not x2618))
+:assumption (or (not x2070) (not x17487))
+:assumption (or x6715 (not x20600))
+:assumption (or (not x19214) x7978)
+:assumption (or x28931 (not x16676))
+:assumption (or x12637 x2416)
+:assumption (or (not x8508) (not x4336) x11643 x19803 x19227 x11736 x13554 (not x21104) x14798 (not x20917))
+:assumption (or (not x1528) x13382)
+:assumption (or (not x15576) (not x16675))
+:assumption (or (not x4204) x31586 (not x369))
+:assumption (or x12955 x14488)
+:assumption (or (not x5801) (not x24938))
+:assumption (or x7696 (not x20160))
+:assumption (or (not x9027) x14667)
+:assumption (or x24830 (not x31201))
+:assumption (or x1091 x20350 x21159)
+:assumption (or x29087 x28892)
+:assumption (or x16910 x7593)
+:assumption (or (not x15212) x6149 (not x5495) x6951)
+:assumption (or (not x24989) x12486)
+:assumption (or x12253 (not x7689))
+:assumption (or x16436 (not x335))
+:assumption (or (not x20777) (not x7429))
+:assumption (or x7409 (not x18237))
+:assumption (or x17841 x23865)
+:assumption (or (not x12610) (not x12136))
+:assumption (or x24589 (not x17903))
+:assumption (or (not x2623) x22335)
+:assumption (or (not x17138) x31338)
+:assumption (or x15795 x17600 (not x13173) (not x23731) (not x25317))
+:assumption (or (not x14528) x18967)
+:assumption (or x5906 (not x15869))
+:assumption (or (not x14136) (not x30264))
+:assumption (or (not x26653) (not x20240))
+:assumption (or (not x24363) (not x7352))
+:assumption (or (not x24896) x12552)
+:assumption (or (not x26820) x31430)
+:assumption (or (not x21910) (not x20720))
+:assumption (or (not x31777) (not x31497))
+:assumption (or x13972 (not x27493))
+:assumption (or x22854 (not x445) x18807 x10257)
+:assumption (or (not x5749) (not x31215))
+:assumption (or x22704 (not x2853))
+:assumption (or (not x3435) (not x24993))
+:assumption (or (not x3848) x21076)
+:assumption (or (not x26179) x5708)
+:assumption (or (not x8667) (not x9925))
+:assumption (or x17075 (not x7444))
+:assumption (or (not x31537) (not x11708))
+:assumption (or x15932 (not x11074))
+:assumption (or x6570 x19386 x9102)
+:assumption (or x19604 x14615)
+:assumption (or (not x31256) x3396)
+:assumption (or x3385 (not x27022))
+:assumption (or x24401 (not x16483))
+:assumption (or (not x3629) x12664)
+:assumption (or x17855 x17150)
+:assumption (or (not x3184) x17989)
+:assumption (or x11219 x7073)
+:assumption (or (not x1784) x3484)
+:assumption (or (not x26721) x28163)
+:assumption (or (not x4785) x8740)
+:assumption (or (not x10952) x31572 (not x21439))
+:assumption (or (not x9611) (not x9453) x22551 x2287)
+:assumption (or x1154 (not x20651))
+:assumption (or (not x28456) x29159)
+:assumption (or (not x6373) x31165)
+:assumption (or x30994 x26698)
+:assumption (or (not x14839) (not x10048))
+:assumption (or (not x6888) (not x24586))
+:assumption (or (not x28387) (not x8231))
+:assumption (or x18182 x9284)
+:assumption (or (not x20706) (not x24665) (not x26297))
+:assumption (or (not x26202) x933)
+:assumption (or (not x6090) x5002)
+:assumption (or (not x17839) (not x23111))
+:assumption (or (not x29959) x6852)
+:assumption (or (not x204) (not x12728))
+:assumption (or x8609 x29208)
+:assumption (or x6149 (not x2318))
+:assumption (or (not x16633) (not x11111))
+:assumption (or (not x2790) (not x21217))
+:assumption (or x19754 (not x13552))
+:assumption (or (not x24851) (not x6806))
+:assumption (or (not x16652) (not x26986))
+:assumption (or x1083 x11143)
+:assumption (or (not x13003) x26578)
+:assumption (or x17423 x8043 (not x2406))
+:assumption (or (not x9024) (not x17591))
+:assumption (or (not x4735) (not x8002))
+:assumption (or (not x89) x27844)
+:assumption (or (not x13799) x21653)
+:assumption (or (not x20571) (not x15166))
+:assumption (or x12958 (not x23043))
+:assumption (or (not x16560) (not x6749))
+:assumption (or x27862 (not x4730))
+:assumption (or (not x26054) (not x4351) (not x25224))
+:assumption (or x30341 x12530)
+:assumption (or x18859 x10507)
+:assumption (or x18623 x6705)
+:assumption (or x26271 x12467 x9651 (not x28138) (not x11904))
+:assumption (or (not x4041) (not x9083))
+:assumption (or x25911 (not x8109))
+:assumption (or (not x26206) x7386)
+:assumption (or x19320 x17855)
+:assumption (or x29763 x14472)
+:assumption (or x14385 (not x11644))
+:assumption (or (not x23041) (not x28328))
+:assumption (or x25545 x30650)
+:assumption (or x19107 x27231)
+:assumption (or x5528 (not x11287) x5206)
+:assumption (or x5837 (not x9390))
+:assumption (or (not x10488) (not x24507))
+:assumption (or (not x364) (not x8841))
+:assumption (or (not x24566) (not x9132))
+:assumption (or (not x19018) x15256)
+:assumption (or (not x22364) (not x20402))
+:assumption (or (not x8741) (not x20686))
+:assumption (or x218 x24063 x32)
+:assumption (or x16635 x26617)
+:assumption (or (not x31152) (not x29318))
+:assumption (or (not x3707) x7530)
+:assumption (or (not x26574) (not x13576) x18585)
+:assumption (or (not x7563) x21815 (not x20441))
+:assumption (or (not x31928) (not x24817) (not x17454) x22909 x18565)
+:assumption (or x14123 x31555 (not x5848) (not x18121))
+:assumption (or x25224 x3517)
+:assumption (or (not x20962) (not x28023))
+:assumption (or x13923 (not x14508) (not x61) x9662 x20552 x25766 (not x21367) (not x21487))
+:assumption (or x1801 x6171)
+:assumption (or x19747 x28952)
+:assumption (or (not x2551) (not x13956))
+:assumption (or (not x22170) x17523)
+:assumption (or (not x19323) (not x17301))
+:assumption (or (not x9329) (not x5079) (not x16455) (not x28617))
+:assumption (or x14236 x24693)
+:assumption (or x514 x25040 x5528)
+:assumption (or x19731 x8594)
+:assumption (or x827 (not x16198) x9040)
+:assumption (or (not x4044) x18446)
+:assumption (or (not x17604) (not x25226))
+:assumption (or (not x19310) (not x12122))
+:assumption (or x17527 x26443)
+:assumption (or x7453 x10927)
+:assumption (or (not x1595) (not x30892))
+:assumption (or x61 (not x9662))
+:assumption (or x21371 x31073)
+:assumption (or (not x142) x7279 x27740 x28172)
+:assumption (or x28732 (not x16510) (not x21815) (not x30900) x6951)
+:assumption (or (not x8168) (not x3001))
+:assumption (or (not x2385) (not x23386))
+:assumption (or (not x14358) x17860 x1808 (not x1970))
+:assumption (or x4560 x30074 (not x5066) (not x30181) x6149 (not x4814))
+:assumption (or (not x24411) (not x17543))
+:assumption (or (not x5599) x3221)
+:assumption (or (not x250) x3893 (not x19589) x17693 (not x16503) x26956 (not x656) (not x26317))
+:assumption (or x19981 x15764)
+:assumption (or (not x9082) x28924)
+:assumption (or (not x29770) x24677)
+:assumption (or (not x12012) (not x23324))
+:assumption (or (not x29456) (not x7730))
+:assumption (or x25368 (not x2704))
+:assumption (or x16025 (not x18607))
+:assumption (or x3787 (not x22538) x13137 (not x10860))
+:assumption (or (not x27952) (not x24512))
+:assumption (or x439 x3235)
+:assumption (or x27268 x29399)
+:assumption (or x1073 x18694)
+:assumption (or (not x26358) x19730)
+:assumption (or x12096 x25974 (not x29055) x12114 x5391)
+:assumption (or x23399 (not x10380))
+:assumption (or x13900 x4003)
+:assumption (or (not x21408) (not x22963))
+:assumption (or (not x22531) (not x4700))
+:assumption (or x31718 (not x7587))
+:assumption (or (not x27386) x9951)
+:assumption (or x25595 (not x13545) (not x28102))
+:assumption (or x1183 x8127)
+:assumption (or (not x29443) (not x17840))
+:assumption (or x8499 (not x12356))
+:assumption (or (not x10413) (not x30874))
+:assumption (or (not x4568) (not x12901))
+:assumption (or (not x20724) x17833)
+:assumption (or (not x9826) (not x5803))
+:assumption (or (not x8631) x27746)
+:assumption (or (not x17075) (not x18291))
+:assumption (or x25659 x12484)
+:assumption (or (not x26810) (not x17574))
+:assumption (or (not x30255) (not x14500))
+:assumption (or x475 x10523)
+:assumption (or x21832 x29226)
+:assumption (or x9880 x2095)
+:assumption (or (not x3678) x4867 (not x26260) x6908 x28884)
+:assumption (or x665 x30732 x4426 x28623)
+:assumption (or x5531 x31274)
+:assumption (or (not x19109) (not x6634))
+:assumption (or (not x1952) x30707)
+:assumption (or x30142 x9008)
+:assumption (or x61 x21367)
+:assumption (or (not x28462) (not x9041))
+:assumption (or (not x7595) (not x22835))
+:assumption (or (not x21055) x7948)
+:assumption (or (not x15678) x491)
+:assumption (or (not x16872) x25023)
+:assumption (or x16710 x7844)
+:assumption (or (not x17540) (not x14207))
+:assumption (or x31030 x20832)
+:assumption (or x6983 (not x25782) x8002)
+:assumption (or x29227 (not x28890))
+:assumption (or x10850 x724)
+:assumption (or x9008 x7246)
+:assumption (or x11253 x15914)
+:assumption (or x19319 x21039)
+:assumption (or x26729 (not x7530))
+:assumption (or x16013 (not x29796))
+:assumption (or x4829 (not x23468))
+:assumption (or x22900 x10157)
+:assumption (or x9221 (not x14206))
+:assumption (or x8578 (not x30497))
+:assumption (or (not x9205) (not x11343))
+:assumption (or x6636 x485)
+:assumption (or x31910 x29761)
+:assumption (or x21465 (not x5703))
+:assumption (or (not x24445) (not x894))
+:assumption (or x8106 (not x12))
+:assumption (or (not x6135) (not x10917) x3782 (not x4058))
+:assumption (or x2282 (not x4390) x12159 (not x3264))
+:assumption (or (not x23823) (not x25301))
+:assumption (or (not x7214) x16910 (not x2701))
+:assumption (or x16131 (not x23103))
+:assumption (or (not x24177) (not x13092))
+:assumption (or x800 (not x4032))
+:assumption (or (not x28687) (not x16897))
+:assumption (or (not x26897) x24789)
+:assumption (or x2133 x27243 (not x5481))
+:assumption (or x26872 x16652)
+:assumption (or x6628 x3438)
+:assumption (or (not x22727) x3319)
+:assumption (or x20222 x16432)
+:assumption (or x805 (not x6834))
+:assumption (or x30625 x30786)
+:assumption (or (not x16907) (not x5898) x2741 (not x11882))
+:assumption (or (not x23425) (not x18164))
+:assumption (or x5057 x9008 x5247)
+:assumption (or x4998 (not x8212))
+:assumption (or x507 x29758)
+:assumption (or x9049 x2150 x6969)
+:assumption (or x15091 x15140)
+:assumption (or x8842 (not x23798))
+:assumption (or x1920 (not x7930))
+:assumption (or x25037 x29201)
+:assumption (or (not x10282) (not x28636))
+:assumption (or x31505 (not x19217) (not x11288))
+:assumption (or x17562 (not x15799))
+:assumption (or (not x362) (not x25715))
+:assumption (or (not x17705) x7716)
+:assumption (or (not x12827) (not x26232) x7956 (not x3345) (not x18786))
+:assumption (or x4429 x31481)
+:assumption (or (not x18917) (not x31149))
+:assumption (or (not x15913) x24502)
+:assumption (or (not x21678) (not x7926))
+:assumption (or x11583 x13670)
+:assumption (or (not x29431) x23386)
+:assumption (or x7623 x12095)
+:assumption (or x19098 (not x15980))
+:assumption (or (not x20498) (not x27295))
+:assumption (or x440 (not x10371))
+:assumption (or (not x28564) (not x18140))
+:assumption (or (not x6035) (not x13176))
+:assumption (or (not x30658) (not x26976))
+:assumption (or x5664 x23173 x10064 (not x13124) x8285)
+:assumption (or x6005 (not x28663))
+:assumption (or (not x18527) (not x31846))
+:assumption (or x7823 (not x15961))
+:assumption (or x9317 (not x18399))
+:assumption (or (not x7815) (not x23799))
+:assumption (or x17244 (not x11636))
+:assumption (or x28624 (not x961) x22871 x21325 (not x25255) x128 x10223)
+:assumption (or (not x17684) x5528)
+:assumption (or x24971 (not x25659))
+:assumption (or x15890 x18524)
+:assumption (or x11300 (not x10000) x18566)
+:assumption (or x18481 x9647)
+:assumption (or x23148 (not x3782))
+:assumption (or x18794 (not x11761))
+:assumption (or (not x344) (not x3692))
+:assumption (or x20615 (not x1012) (not x14921) (not x23279) x18548 x21336 (not x30132))
+:assumption (or x6110 (not x15897))
+:assumption (or x605 x13253)
+:assumption (or (not x2091) (not x28176))
+:assumption (or x11460 x5209 x22038)
+:assumption (or (not x54) x24817)
+:assumption (or x29313 x27107)
+:assumption (or (not x6632) x28528)
+:assumption (or (not x9983) x11348)
+:assumption (or (not x2357) x15709)
+:assumption (or (not x824) x10790)
+:assumption (or x6066 x7134)
+:assumption (or (not x28221) x2208)
+:assumption (or x10723 x2631)
+:assumption (or x25912 x31094)
+:assumption (or x13895 (not x18342))
+:assumption (or (not x12618) (not x6307) x1231)
+:assumption (or (not x22954) x27391)
+:assumption (or x9948 (not x14817))
+:assumption (or x8531 x24372)
+:assumption (or x14761 (not x6241))
+:assumption (or x26112 x7013)
+:assumption (or x29398 x18441)
+:assumption (or (not x17601) (not x21815))
+:assumption (or (not x490) x1455)
+:assumption (or (not x8578) (not x10884))
+:assumption (or (not x8774) (not x31130))
+:assumption (or x13622 x14246)
+:assumption (or (not x27884) x15946)
+:assumption (or (not x4464) (not x13444) (not x16745) x28448)
+:assumption (or (not x6523) (not x22444) x17281 x930)
+:assumption (or x19539 (not x16442) x15040)
+:assumption (or (not x14519) (not x12594))
+:assumption (or x19868 x7643)
+:assumption (or (not x19860) (not x3982))
+:assumption (or (not x5487) x9939)
+:assumption (or (not x18472) (not x9253))
+:assumption (or x20238 x7908)
+:assumption (or (not x6951) (not x15012))
+:assumption (or (not x18892) x28242 x7715)
+:assumption (or x20381 x3004)
+:assumption (or (not x27444) x3435 (not x8963))
+:assumption (or (not x14530) (not x24309))
+:assumption (or (not x9212) x26586)
+:assumption (or (not x5977) x22938)
+:assumption (or x7692 (not x30299))
+:assumption (or x21042 x22555 (not x11488))
+:assumption (or x19269 x11497)
+:assumption (or (not x6956) x14947)
+:assumption (or (not x31500) (not x6687))
+:assumption (or (not x3588) x18279)
+:assumption (or x10624 x14809)
+:assumption (or x13317 x27705)
+:assumption (or (not x11686) x12698)
+:assumption (or x15100 x16025)
+:assumption (or (not x25949) x10682)
+:assumption (or x23476 (not x18519))
+:assumption (or (not x23244) x838)
+:assumption (or (not x4671) x5633)
+:assumption (or x5659 (not x2585) (not x9008))
+:assumption (or x30110 x12550)
+:assumption (or x9040 x28412)
+:assumption (or (not x29312) (not x18962) x13791)
+:assumption (or (not x15201) (not x29363))
+:assumption (or x14895 (not x19766))
+:assumption (or x6324 x30812)
+:assumption (or (not x12340) x30793)
+:assumption (or x5841 x18514)
+:assumption (or (not x22385) x27118)
+:assumption (or (not x14488) (not x12955))
+:assumption (or x10956 (not x2972))
+:assumption (or (not x7410) x7371)
+:assumption (or x22692 x1721)
+:assumption (or x20753 x9423)
+:assumption (or (not x31538) x14169 (not x23756) x13251 x5840)
+:assumption (or (not x13064) x9377)
+:assumption (or (not x22495) (not x21308))
+:assumption (or x3403 x28804)
+:assumption (or x17359 (not x2171) x8999)
+:assumption (or x28885 (not x4807))
+:assumption (or (not x15029) (not x8382))
+:assumption (or (not x6668) x14557)
+:assumption (or (not x10024) x3468)
+:assumption (or x28436 (not x22167))
+:assumption (or (not x5825) x26907)
+:assumption (or x529 (not x13287))
+:assumption (or (not x23279) (not x19929) (not x3063))
+:assumption (or (not x24955) x29714 (not x26777) (not x20956))
+:assumption (or x8002 x1603)
+:assumption (or x7702 (not x27123))
+:assumption (or (not x19295) (not x20134))
+:assumption (or (not x27619) x15768)
+:assumption (or (not x19906) (not x8602))
+:assumption (or x3846 (not x15274))
+:assumption (or (not x4594) (not x1125) (not x10080) x71 x16208)
+:assumption (or x8602 (not x8709))
+:assumption (or x31352 x29334)
+:assumption (or x24650 x28330)
+:assumption (or (not x2374) x7158 x8229 (not x16003))
+:assumption (or (not x7842) x21298)
+:assumption (or (not x26616) x8598 x18694 x24129)
+:assumption (or x29571 (not x9435))
+:assumption (or (not x28777) (not x1392))
+:assumption (or x5996 (not x20200))
+:assumption (or (not x152) (not x18630) (not x22527) (not x8431) x18859 (not x16852) (not x3863) x23337)
+:assumption (or x25505 (not x1643))
+:assumption (or x30726 (not x24234))
+:assumption (or x28057 x6237)
+:assumption (or x4333 (not x8245))
+:assumption (or (not x17920) x27104)
+:assumption (or x21139 x223)
+:assumption (or x16698 x7763)
+:assumption (or x25033 x4715)
+:assumption (or (not x3344) x26734)
+:assumption (or x22983 (not x3451))
+:assumption (or x480 x16722)
+:assumption (or x147 (not x24697))
+:assumption (or x23876 x12678)
+:assumption (or x26529 x21696)
+:assumption (or x8902 (not x2241))
+:assumption (or x25167 (not x25298))
+:assumption (or x12127 (not x23745))
+:assumption (or (not x15056) (not x18119))
+:assumption (or x21984 (not x19408))
+:assumption (or x24897 (not x963))
+:assumption (or x29025 (not x9686))
+:assumption (or (not x28332) x23244 x31819)
+:assumption (or x29383 x11798)
+:assumption (or (not x8210) x4559)
+:assumption (or x5015 x18450 (not x17225))
+:assumption (or x31100 (not x29984))
+:assumption (or (not x25458) (not x5020))
+:assumption (or (not x20641) x4422 x14289 (not x5434))
+:assumption (or x22863 (not x5206))
+:assumption (or (not x22113) x2740)
+:assumption (or (not x29157) x13726)
+:assumption (or x15245 x8165)
+:assumption (or (not x19368) (not x28070))
+:assumption (or (not x6370) (not x18779))
+:assumption (or x23244 x8458 (not x29649))
+:assumption (or (not x26447) x28296)
+:assumption (or (not x2955) x18953)
+:assumption (or x30172 x31191)
+:assumption (or x19062 x20995)
+:assumption (or (not x12262) x28084)
+:assumption (or (not x4522) x2312)
+:assumption (or x3248 (not x11169))
+:assumption (or x4075 (not x805))
+:assumption (or (not x1360) x5528)
+:assumption (or x16724 (not x15915) (not x6317) x19348)
+:assumption (or (not x2911) x23247 x29305 (not x24322))
+:assumption (or x615 x539)
+:assumption (or (not x4054) (not x7197))
+:assumption (or (not x11849) x4832)
+:assumption (or x8961 x5745)
+:assumption (or x11847 x27915 (not x14096))
+:assumption (or (not x30731) x24632 x2266)
+:assumption (or x4566 x8713)
+:assumption (or (not x16958) x5032)
+:assumption (or x17105 x5231 (not x3001))
+:assumption (or x27934 (not x12944))
+:assumption (or (not x27069) x9008)
+:assumption (or (not x18659) x15271)
+:assumption (or x1477 x4117)
+:assumption (or (not x11790) (not x28428))
+:assumption (or x22666 x2875 (not x1875) (not x18476) x25194 x3169)
+:assumption (or (not x606) (not x21856) x16025)
+:assumption (or (not x12944) x16228)
+:assumption (or (not x3299) x13302)
+:assumption (or x2916 (not x17407))
+:assumption (or (not x17548) (not x24756))
+:assumption (or (not x20248) (not x1362))
+:assumption (or x23852 x4949)
+:assumption (or x29778 (not x23497))
+:assumption (or x15443 x26175)
+:assumption (or x3763 x7397)
+:assumption (or x25681 x25081)
+:assumption (or x18715 x10744)
+:assumption (or (not x8277) x10145 x22069)
+:assumption (or x8148 x10781)
+:assumption (or (not x22621) x14903)
+:assumption (or x25366 x24092)
+:assumption (or (not x4555) (not x7837))
+:assumption (or (not x3319) x18454)
+:assumption (or (not x10939) x13774 (not x29957) (not x19428))
+:assumption (or (not x10431) x21311)
+:assumption (or x29642 x13694)
+:assumption (or x15018 (not x28912))
+:assumption (or x18909 (not x27918))
+:assumption (or x14031 x23857)
+:assumption (or x6014 (not x5528))
+:assumption (or x15163 x6905)
+:assumption (or (not x1891) (not x19140))
+:assumption (or (not x11694) (not x17014))
+:assumption (or (not x17480) x9913)
+:assumption (or (not x23244) x29758)
+:assumption (or x29803 (not x13041))
+:assumption (or (not x7671) x19102)
+:assumption (or x22526 x21674)
+:assumption (or (not x26867) x18500)
+:assumption (or x7921 x22585)
+:assumption (or (not x3419) x5223)
+:assumption (or x3884 (not x28361))
+:assumption (or (not x20907) (not x29584))
+:assumption (or x13305 (not x8652))
+:assumption (or x26616 (not x8598))
+:assumption (or x26547 (not x7072))
+:assumption (or (not x852) x14974)
+:assumption (or x5861 x25882)
+:assumption (or (not x17380) (not x29726) (not x30109))
+:assumption (or x23614 (not x14819))
+:assumption (or x15593 x12435)
+:assumption (or x14470 x20292)
+:assumption (or x17617 x26664)
+:assumption (or x21006 (not x29204))
+:assumption (or x7282 x8372)
+:assumption (or (not x22747) x30591)
+:assumption (or x20517 x1766)
+:assumption (or (not x13847) x28573)
+:assumption (or x5836 (not x22212))
+:assumption (or x31930 x28033)
+:assumption (or x21815 x10592)
+:assumption (or x8216 x10655)
+:assumption (or (not x22875) (not x28436))
+:assumption (or x12662 (not x12965))
+:assumption (or (not x13447) x14655)
+:assumption (or x21136 x15476 x20130 (not x26586) x9212)
+:assumption (or x24142 (not x15556))
+:assumption (or x10610 (not x27046) (not x7497) x26110 x17148 (not x6912) x10672 x918)
+:assumption (or x7928 (not x14691))
+:assumption (or x28785 (not x29449) x12003 x5337)
+:assumption (or x11281 x17885)
+:assumption (or (not x17714) (not x1348))
+:assumption (or (not x9636) (not x10325))
+:assumption (or x4098 x9325)
+:assumption (or x5678 x6594)
+:assumption (or (not x8982) x25894)
+:assumption (or (not x31270) (not x18141))
+:assumption (or (not x25618) x19258)
+:assumption (or x19596 x7729)
+:assumption (or x12680 x28928)
+:assumption (or (not x35) (not x28893) (not x14062) x18654 (not x31507) x4901 x5324)
+:assumption (or x1582 (not x21496))
+:assumption (or x22550 (not x9791))
+:assumption (or (not x20657) x20973)
+:assumption (or x25987 x29555)
+:assumption (or x15965 (not x19742))
+:assumption (or x30636 x29247 x10219 (not x13460) (not x5886))
+:assumption (or (not x1920) (not x18365))
+:assumption (or x11581 x12296)
+:assumption (or x31134 (not x13414))
+:assumption (or x22404 x23423)
+:assumption (or x23534 x21033)
+:assumption (or x16590 (not x30499))
+:assumption (or x23558 x28885 (not x16864))
+:assumption (or x21981 x17442)
+:assumption (or x8786 (not x5212))
+:assumption (or x6771 (not x23727))
+:assumption (or x30891 (not x7838))
+:assumption (or (not x11988) (not x12014))
+:assumption (or x5458 x2540 x23244)
+:assumption (or x11682 x14344)
+:assumption (or (not x6155) x16510)
+:assumption (or x27758 x1411)
+:assumption (or (not x25608) (not x24977))
+:assumption (or (not x14076) x26517)
+:assumption (or x5840 x28711)
+:assumption (or x21303 (not x8002) x23244)
+:assumption (or x15366 x4563)
+:assumption (or x27915 x11525)
+:assumption (or (not x4212) (not x11570) (not x19391) x24030 (not x29316))
+:assumption (or x25553 (not x31309) (not x22158) x18084 (not x3004))
+:assumption (or x6097 (not x15981))
+:assumption (or (not x28072) x3483)
+:assumption (or x22403 (not x4576))
+:assumption (or x5681 (not x16266) (not x21653))
+:assumption (or (not x22715) x16827)
+:assumption (or (not x26145) (not x10967))
+:assumption (or x30566 x20272)
+:assumption (or (not x15566) (not x17408))
+:assumption (or (not x12998) x31127)
+:assumption (or x14664 x14560)
+:assumption (or (not x6179) x21971)
+:assumption (or x17075 (not x7391))
+:assumption (or x13268 x14382)
+:assumption (or x7566 (not x14259))
+:assumption (or (not x7874) (not x27948))
+:assumption (or x6897 (not x19637) (not x14541) (not x20743) (not x31564))
+:assumption (or x5528 x21579)
+:assumption (or (not x25658) (not x27276))
+:assumption (or (not x6443) (not x3494))
+:assumption (or (not x7606) (not x810))
+:assumption (or (not x17057) x25907)
+:assumption (or x22077 x808)
+:assumption (or x29169 x17999 (not x20344))
+:assumption (or x16070 x12620)
+:assumption (or (not x4516) (not x8105))
+:assumption (or x24599 (not x28172))
+:assumption (or x24310 (not x21224))
+:assumption (or x5528 x15136)
+:assumption (or (not x23880) x27154)
+:assumption (or (not x28352) x1613)
+:assumption (or x30968 x7069)
+:assumption (or x30675 x3674)
+:assumption (or (not x6632) x30590)
+:assumption (or (not x24727) x11610)
+:assumption (or x30639 x25809)
+:assumption (or x9166 x28631 x4548 (not x8044))
+:assumption (or x18429 (not x13324))
+:assumption (or x6075 x24725 x480 (not x4421))
+:assumption (or (not x28957) x26897)
+:assumption (or (not x4259) (not x8216) (not x18284) (not x10655))
+:assumption (or (not x19711) (not x22838))
+:assumption (or (not x28645) x27150)
+:assumption (or (not x7972) x11831)
+:assumption (or (not x17108) (not x9008))
+:assumption (or (not x3022) (not x15948))
+:assumption (or x21298 (not x28482))
+:assumption (or x28352 x17653 (not x3816) (not x21897) (not x16972) x8002)
+:assumption (or x28524 x24862)
+:assumption (or x16025 x19711 x23033)
+:assumption (or x31100 x27381)
+:assumption (or x17144 (not x1852))
+:assumption (or x4931 (not x10666))
+:assumption (or x25989 (not x1747))
+:assumption (or (not x13372) x25526)
+:assumption (or (not x3435) x19863 x29499)
+:assumption (or (not x21744) (not x14399))
+:assumption (or x23244 (not x11303))
+:assumption (or x25858 x3482)
+:assumption (or x17921 x16377)
+:assumption (or x13956 x15518)
+:assumption (or x16510 (not x1138))
+:assumption (or (not x28201) x21824 x20102)
+:assumption (or x30987 x12297)
+:assumption (or (not x20949) x5940)
+:assumption (or (not x27703) (not x8903))
+:assumption (or x19824 (not x8002))
+:assumption (or (not x22520) x20357 x27464)
+:assumption (or (not x4537) (not x7854) x10466)
+:assumption (or x2498 x12499)
+:assumption (or x21774 x9516)
+:assumption (or (not x9008) x11400 (not x28616))
+:assumption (or (not x7537) x28025)
+:assumption (or x1290 x17359)
+:assumption (or x3988 x12311)
+:assumption (or (not x4386) (not x5013))
+:assumption (or (not x11488) x12470)
+:assumption (or (not x3532) (not x25261))
+:assumption (or (not x23967) x23066)
+:assumption (or x17714 x1348 (not x21465))
+:assumption (or (not x10729) (not x1143))
+:assumption (or (not x26432) x699)
+:assumption (or (not x6640) (not x30113))
+:assumption (or x21028 (not x4220) x10049)
+:assumption (or x12150 (not x6490))
+:assumption (or (not x29838) x7537)
+:assumption (or x23616 x6057)
+:assumption (or x16229 (not x2498) x13983 (not x5895) x19595)
+:assumption (or (not x9805) (not x21050))
+:assumption (or x5528 x20723 (not x23147))
+:assumption (or (not x17783) x12969)
+:assumption (or (not x16399) x1393 (not x1916))
+:assumption (or x5948 x4098)
+:assumption (or x5101 x21585)
+:assumption (or (not x18709) x21527)
+:assumption (or (not x9878) (not x23890))
+:assumption (or x10804 x3001 (not x19966) (not x202))
+:assumption (or x12669 (not x27548))
+:assumption (or x15773 (not x12936) x30198 x30010 x31669 x29069 x7904 (not x5277))
+:assumption (or x13275 (not x17580) x12159 (not x26095))
+:assumption (or x15413 (not x21716))
+:assumption (or x27810 (not x5226))
+:assumption (or (not x26789) x14982)
+:assumption (or x11149 (not x4442))
+:assumption (or (not x7250) x13432)
+:assumption (or (not x3182) (not x20529))
+:assumption (or x1984 x6149)
+:assumption (or (not x22770) x3954 (not x26104) (not x28674) x9108 x31773)
+:assumption (or x4942 (not x28559))
+:assumption (or x8584 (not x5656) x6969 (not x9842))
+:assumption (or x1487 x9592)
+:assumption (or (not x443) x9247)
+:assumption (or x30080 (not x10732))
+:assumption (or x15372 x8887)
+:assumption (or (not x23788) x4485)
+:assumption (or (not x8262) (not x13581) (not x29683) x28309 x9198)
+:assumption (or (not x4555) (not x20007))
+:assumption (or (not x30218) x15894 x3270 (not x7620))
+:assumption (or x19428 (not x25530) (not x30954) x14854)
+:assumption (or (not x5197) (not x6243))
+:assumption (or x25510 x20119)
+:assumption (or (not x16747) x7410)
+:assumption (or x9439 x29009)
+:assumption (or x9985 x11063)
+:assumption (or (not x4761) (not x26868) (not x6935))
+:assumption (or x24405 x31451)
+:assumption (or (not x15067) (not x7362))
+:assumption (or (not x19343) (not x27863))
+:assumption (or (not x3497) x2269)
+:assumption (or x11770 (not x30533))
+:assumption (or (not x11649) x24722)
+:assumption (or (not x18564) x27911)
+:assumption (or (not x7582) (not x5679))
+:assumption (or (not x16108) x25224)
+:assumption (or (not x23289) x21275)
+:assumption (or (not x15160) x15554)
+:assumption (or x16885 x18423 (not x21815))
+:assumption (or x21815 (not x15810))
+:assumption (or x27029 (not x24871))
+:assumption (or (not x23079) x14119)
+:assumption (or x11297 x3129)
+:assumption (or x3827 x8746)
+:assumption (or x15557 (not x8352))
+:assumption (or (not x29777) (not x1162))
+:assumption (or x8728 (not x30734) x21840)
+:assumption (or x25266 x28684)
+:assumption (or (not x11783) x6476 (not x23611))
+:assumption (or (not x29676) x18428)
+:assumption (or x10144 x14196)
+:assumption (or x5796 x5776)
+:assumption (or x26332 (not x23439))
+:assumption (or (not x6744) x1362)
+:assumption (or x2579 x19030)
+:assumption (or x1230 (not x26216))
+:assumption (or x26526 x19441)
+:assumption (or (not x26833) (not x16347))
+:assumption (or (not x28049) (not x23000))
+:assumption (or (not x20788) (not x22510) (not x31831) x12331 (not x20048) x2743 x17352 (not x11374))
+:assumption (or x14695 (not x14008))
+:assumption (or x20060 x6387 (not x22686) x16219)
+:assumption (or x25309 (not x7034))
+:assumption (or x6064 x16342)
+:assumption (or x19578 x31865)
+:assumption (or (not x13993) x5278)
+:assumption (or x26475 x27933)
+:assumption (or (not x3643) x20454)
+:assumption (or x3598 (not x26234))
+:assumption (or (not x4058) x12805)
+:assumption (or x31284 (not x11558))
+:assumption (or x11469 x22402)
+:assumption (or x21272 x17375 (not x21815))
+:assumption (or (not x8919) (not x30382))
+:assumption (or x7817 (not x25700))
+:assumption (or (not x18762) (not x13435))
+:assumption (or x17153 (not x24882))
+:assumption (or (not x21502) x26394)
+:assumption (or (not x10148) (not x16426))
+:assumption (or (not x24699) x19424)
+:assumption (or x26187 x10926)
+:assumption (or (not x27563) (not x20290))
+:assumption (or x31823 (not x585))
+:assumption (or x23485 x2334)
+:assumption (or (not x14423) x21790)
+:assumption (or x28463 (not x22518))
+:assumption (or (not x3561) (not x20734))
+:assumption (or x24341 (not x14883))
+:assumption (or x16806 (not x7803))
+:assumption (or x18022 (not x16418))
+:assumption (or (not x37) x13821)
+:assumption (or x12676 (not x18185))
+:assumption (or x27500 x12635)
+:assumption (or x2218 (not x2303))
+:assumption (or x4637 (not x22318))
+:assumption (or (not x25018) x16025 (not x2669))
+:assumption (or (not x9692) x904)
+:assumption (or (not x4026) (not x20630))
+:assumption (or (not x28867) (not x18769))
+:assumption (or x9333 (not x7858))
+:assumption (or x6524 x13881)
+:assumption (or (not x20193) (not x31906))
+:assumption (or x21706 x25277)
+:assumption (or x8455 x3021)
+:assumption (or x19998 (not x18720))
+:assumption (or (not x15944) x30470)
+:assumption (or (not x3007) (not x16003) x13487)
+:assumption (or x21237 (not x7527))
+:assumption (or x1746 x27811)
+:assumption (or x23949 (not x26041))
+:assumption (or (not x26432) x12653)
+:assumption (or x23122 x21969)
+:assumption (or x29298 (not x3223))
+:assumption (or (not x16019) (not x14887) x26619 (not x18208) x25948)
+:assumption (or x8293 x24835)
+:assumption (or (not x12901) (not x13095) x5367 (not x29645))
+:assumption (or (not x4240) x739)
+:assumption (or x25498 (not x255) (not x5656) x20292)
+:assumption (or (not x19832) x9368)
+:assumption (or (not x6965) x25424)
+:assumption (or (not x24069) (not x24801) x4400 (not x3272) (not x16229) x19545)
+:assumption (or x14591 (not x29628) x14612 (not x12242))
+:assumption (or x13163 x22595)
+:assumption (or x3824 (not x27971))
+:assumption (or (not x4473) x2690 x9328 x12733 (not x12333) (not x1369))
+:assumption (or x3782 (not x29535))
+:assumption (or (not x8250) (not x29070))
+:assumption (or x15775 x4822)
+:assumption (or (not x27177) (not x19889))
+:assumption (or (not x12839) (not x30626) x1393)
+:assumption (or (not x31413) x23643)
+:assumption (or x5774 (not x2989))
+:assumption (or x16037 x20996)
+:assumption (or x12207 x18247)
+:assumption (or x24086 (not x11693) x28584)
+:assumption (or (not x8669) x7537 (not x23399) x21747)
+:assumption (or (not x28806) x15268)
+:assumption (or x1544 x28967)
+:assumption (or (not x13468) x691)
+:assumption (or x7073 x17256)
+:assumption (or x5657 x4529)
+:assumption (or (not x10535) (not x9945))
+:assumption (or (not x499) (not x19992) x19875)
+:assumption (or x5972 (not x7687))
+:assumption (or (not x25826) x13640)
+:assumption (or x19682 x1434 (not x17266) (not x8336))
+:assumption (or (not x18627) (not x7473))
+:assumption (or (not x24585) (not x13128))
+:assumption (or x15454 (not x30152))
+:assumption (or x136 x28048 x6969)
+:assumption (or (not x9585) x28769)
+:assumption (or (not x827) x4304)
+:assumption (or (not x15147) x27324)
+:assumption (or (not x26499) (not x4896))
+:assumption (or x11996 (not x14839) (not x10177))
+:assumption (or x21427 (not x3001))
+:assumption (or x1364 x20462)
+:assumption (or (not x29606) x31134 x2470 (not x7602))
+:assumption (or (not x10202) x20527)
+:assumption (or x24853 (not x6632))
+:assumption (or (not x20332) (not x22948) (not x21298))
+:assumption (or (not x20338) x686)
+:assumption (or (not x6371) (not x7151))
+:assumption (or (not x16025) (not x16681))
+:assumption (or (not x18859) x20499)
+:assumption (or (not x18859) x30570)
+:assumption (or (not x30575) (not x5019) x21872 x4215 (not x30169) x7518 x1877 (not x727))
+:assumption (or (not x4950) x3463 (not x10832) (not x18050) (not x9427))
+:assumption (or x4261 (not x25490) (not x13759))
+:assumption (or (not x25659) (not x6516))
+:assumption (or (not x16562) x29326)
+:assumption (or (not x312) (not x24658))
+:assumption (or (not x20240) x6289)
+:assumption (or (not x31768) x13576 x9531 (not x20134))
+:assumption (or (not x23125) (not x16409))
+:assumption (or x18855 x18326)
+:assumption (or (not x22652) x21973)
+:assumption (or (not x7767) (not x26307) x1646 (not x3654) x19928)
+:assumption (or (not x30275) x8777)
+:assumption (or x8628 x29312 x31131)
+:assumption (or x27334 x15719 (not x11806) x25988 (not x3468))
+:assumption (or (not x10458) (not x30530))
+:assumption (or (not x13956) x24887)
+:assumption (or (not x31070) x8191)
+:assumption (or x21300 (not x22766))
+:assumption (or (not x11474) x23143 (not x8774) (not x6429))
+:assumption (or x23284 x19509 (not x18323))
+:assumption (or x1266 (not x22472))
+:assumption (or x7407 (not x3655))
+:assumption (or (not x5580) (not x11492))
+:assumption (or (not x20355) (not x8002) x21782)
+:assumption (or x16374 (not x31086) x15903 x15323)
+:assumption (or (not x6860) (not x21111))
+:assumption (or x1656 x21558)
+:assumption (or x1382 (not x9996) x12669)
+:assumption (or (not x18362) x2905)
+:assumption (or x24506 (not x2075))
+:assumption (or x15163 (not x22496))
+:assumption (or (not x19505) x31427)
+:assumption (or (not x30681) x15378)
+:assumption (or x9025 x8820)
+:assumption (or x17553 (not x7250))
+:assumption (or (not x15518) (not x9391))
+:assumption (or x10776 x12307)
+:assumption (or x1059 x24107)
+:assumption (or x923 (not x285))
+:assumption (or x8002 x12809)
+:assumption (or (not x7591) (not x18125))
+:assumption (or x287 (not x12680) x4788 (not x16749))
+:assumption (or (not x2421) (not x8120))
+:assumption (or (not x9476) x3375)
+:assumption (or (not x9950) x24526)
+:assumption (or (not x17410) (not x23399))
+:assumption (or (not x16362) x21579)
+:assumption (or x27268 (not x24673) (not x182) (not x8454) x14829 (not x5707))
+:assumption (or (not x228) (not x12703) (not x4576) x488 x24054 (not x9809))
+:assumption (or (not x8002) x17753)
+:assumption (or x8506 (not x30113))
+:assumption (or x26665 x10187)
+:assumption (or (not x4344) x9065)
+:assumption (or (not x2785) (not x5363))
+:assumption (or (not x7794) x22091)
+:assumption (or (not x14404) x4337)
+:assumption (or (not x6021) (not x25163))
+:assumption (or x6077 x9230)
+:assumption (or x19333 x16301)
+:assumption (or (not x17039) x19816 x30556 x7471 (not x9939) (not x1286) x30271 (not x29944) x22936)
+:assumption (or x14839 x22708 (not x25958) (not x27772))
+:assumption (or x16117 (not x28723))
+:assumption (or (not x20861) x15649)
+:assumption (or x29957 x15784)
+:assumption (or (not x2328) (not x252) (not x7200))
+:assumption (or x113 x27761)
+:assumption (or (not x3376) x11778)
+:assumption (or (not x2309) x8800)
+:assumption (or x26579 x10245)
+:assumption (or x9569 x25610 (not x24485) (not x5753) (not x8987) (not x13968))
+:assumption (or x30487 (not x20270))
+:assumption (or x14363 (not x19612))
+:assumption (or x19797 x19366)
+:assumption (or (not x23363) (not x26322))
+:assumption (or (not x22367) (not x15769))
+:assumption (or (not x30452) (not x28225))
+:assumption (or x7493 (not x26045))
+:assumption (or x11872 (not x8574))
+:assumption (or (not x13090) (not x26723))
+:assumption (or x19690 x15795 (not x5115))
+:assumption (or x10291 x6594)
+:assumption (or (not x17727) (not x10016))
+:assumption (or (not x20722) x2297)
+:assumption (or x5382 (not x23704))
+:assumption (or (not x11576) x5493)
+:assumption (or x10909 (not x9659))
+:assumption (or (not x5517) (not x978))
+:assumption (or x3001 x17673)
+:assumption (or (not x17217) (not x5702))
+:assumption (or x30237 x5528)
+:assumption (or x12301 x16066)
+:assumption (or x27170 (not x4))
+:assumption (or x24988 (not x1393) x11603)
+:assumption (or (not x7831) x9416)
+:assumption (or x22495 x19664)
+:assumption (or x13436 x12738)
+:assumption (or (not x16648) x29416 (not x19889))
+:assumption (or (not x13161) x31586)
+:assumption (or (not x10257) (not x18807))
+:assumption (or x31734 (not x12899) x18574 x7854)
+:assumption (or x9876 x19992)
+:assumption (or (not x20201) (not x27516) (not x14128) x18042)
+:assumption (or x25659 x16565)
+:assumption (or (not x3322) x10133)
+:assumption (or x8002 (not x24020) x21673)
+:assumption (or x10895 x649)
+:assumption (or x29442 (not x10856))
+:assumption (or x25798 x21187)
+:assumption (or (not x13553) (not x2815))
+:assumption (or (not x26691) x5162)
+:assumption (or x31628 x14052)
+:assumption (or (not x24342) (not x7580))
+:assumption (or x30925 x21306 x23827 x20748)
+:assumption (or x3461 x18694 (not x29606))
+:assumption (or (not x7150) x5886)
+:assumption (or x9466 x3552)
+:assumption (or x3657 (not x20592) (not x22560) (not x21638) x29764 (not x12765))
+:assumption (or x27082 (not x27654))
+:assumption (or x10231 (not x26040))
+:assumption (or x15333 x870)
+:assumption (or x24504 (not x4249))
+:assumption (or (not x24792) x29556)
+:assumption (or (not x15950) (not x8002))
+:assumption (or x21455 x3740)
+:assumption (or (not x3074) x15904 (not x28719) x360 x2133)
+:assumption (or x20567 x21527)
+:assumption (or (not x4447) (not x14132))
+:assumption (or (not x9008) (not x11893))
+:assumption (or (not x24428) x9366)
+:assumption (or x13576 x30151 (not x20965))
+:assumption (or x29157 (not x12981))
+:assumption (or (not x21963) (not x5349) (not x25659))
+:assumption (or x5191 x9531)
+:assumption (or (not x23052) x23244)
+:assumption (or x18320 x19600)
+:assumption (or x27649 (not x19301))
+:assumption (or x21951 x3703)
+:assumption (or (not x6381) (not x15821))
+:assumption (or x2695 x17272)
+:assumption (or (not x11773) x17161)
+:assumption (or x1667 (not x21864) (not x962) (not x19040) x918 x22562 (not x8912) (not x969) x2004)
+:assumption (or x9008 x27846 (not x22561))
+:assumption (or x21579 x9008)
+:assumption (or (not x20725) (not x5272))
+:assumption (or (not x15861) (not x15097))
+:assumption (or x9649 x19739)
+:assumption (or (not x18519) (not x14734))
+:assumption (or x19951 (not x27106))
+:assumption (or x7258 (not x21335))
+:assumption (or (not x30872) (not x31591))
+:assumption (or x5922 x15659)
+:assumption (or x28682 (not x2292) (not x20482))
+:assumption (or (not x30485) (not x12645))
+:assumption (or x1857 x17351)
+:assumption (or x9008 x25056)
+:assumption (or (not x21391) (not x31343))
+:assumption (or x8817 x16374 (not x10285) (not x24240) x8432 x17296 (not x7429))
+:assumption (or (not x23206) (not x30433))
+:assumption (or (not x10898) x19256)
+:assumption (or (not x24028) x6201)
+:assumption (or (not x27468) (not x28575))
+:assumption (or (not x4209) (not x8969))
+:assumption (or x29137 x20955)
+:assumption (or x1621 x29157 (not x13726))
+:assumption (or x14625 (not x3844))
+:assumption (or (not x8189) (not x26897))
+:assumption (or (not x27070) (not x28375))
+:assumption (or x24328 x20260)
+:assumption (or (not x6673) (not x514))
+:assumption (or (not x29437) (not x23234))
+:assumption (or (not x30751) (not x30840) x3212)
+:assumption (or x12634 (not x5536))
+:assumption (or x20176 (not x16538))
+:assumption (or x8416 x31640)
+:assumption (or (not x15987) (not x27784) x485 x15500 x16185)
+:assumption (or x30663 (not x26511))
+:assumption (or x6692 x29729 x16997)
+:assumption (or (not x2176) (not x20585))
+:assumption (or x16590 x29953)
+:assumption (or x25099 x11555)
+:assumption (or (not x25659) x20659)
+:assumption (or (not x4896) x9160)
+:assumption (or (not x7062) (not x14591))
+:assumption (or (not x29380) (not x28068) x26897)
+:assumption (or x7622 x12637)
+:assumption (or (not x25522) x5528)
+:assumption (or (not x8970) (not x24603))
+:assumption (or x17307 x26452)
+:assumption (or (not x24099) x27116)
+:assumption (or (not x25833) (not x17932))
+:assumption (or x13188 x6335)
+:assumption (or (not x13096) x10775 x26705 x19043)
+:assumption (or (not x26897) x19609)
+:assumption (or x6544 x24130)
+:assumption (or (not x7765) (not x22858))
+:assumption (or (not x8002) x28711)
+:assumption (or (not x26244) (not x14313))
+:assumption (or x31302 x2793)
+:assumption (or x23801 x20365)
+:assumption (or x21090 x19984)
+:assumption (or x6601 x28780)
+:assumption (or x28475 (not x18933))
+:assumption (or x16802 x17044)
+:assumption (or x21724 (not x949) x13834)
+:assumption (or (not x13104) (not x8549) (not x26859))
+:assumption (or (not x12672) (not x16487) (not x15444))
+:assumption (or (not x25789) x21104)
+:assumption (or (not x7819) x5770)
+:assumption (or x15517 x8958)
+:assumption (or (not x23635) x17931 (not x20580) (not x17855))
+:assumption (or x13576 x6381 x20732)
+:assumption (or x3494 x17085)
+:assumption (or x18786 (not x22653))
+:assumption (or x21328 x13811)
+:assumption (or x31418 (not x11148))
+:assumption (or x6891 x27754)
+:assumption (or x28297 x13990)
+:assumption (or x28705 (not x20391))
+:assumption (or (not x19257) x2326)
+:assumption (or (not x8177) x11178)
+:assumption (or x22238 (not x8190))
+:assumption (or (not x22231) x15771 (not x6307))
+:assumption (or (not x31592) x3000)
+:assumption (or (not x22022) x30987)
+:assumption (or x10183 x23972)
+:assumption (or (not x6472) (not x17790) (not x5502) x16683 (not x3850))
+:assumption (or x20376 x28831)
+:assumption (or x17127 (not x22816))
+:assumption (or x29794 (not x13340))
+:assumption (or x568 (not x4854))
+:assumption (or (not x18882) (not x30632))
+:assumption (or (not x29488) x10047)
+:assumption (or (not x24495) x8326)
+:assumption (or (not x591) x16368)
+:assumption (or (not x400) x9000)
+:assumption (or (not x17925) x24722 x18042)
+:assumption (or (not x28397) (not x25912) x19087 (not x726))
+:assumption (or (not x21370) x2246)
+:assumption (or (not x7843) (not x29361) x26646 x16220 x4512)
+:assumption (or x22371 x6149)
+:assumption (or (not x5886) (not x28210))
+:assumption (or (not x12647) x2387)
+:assumption (or x13357 (not x20725))
+:assumption (or x11297 x15149)
+:assumption (or x10639 x28688)
+:assumption (or x8325 x30327)
+:assumption (or (not x21732) x1896)
+:assumption (or x20974 x10530)
+:assumption (or (not x16626) x1637)
+:assumption (or x186 (not x24495))
+:assumption (or x5497 x30973)
+:assumption (or (not x16798) (not x14206))
+:assumption (or x22521 (not x18567))
+:assumption (or (not x15867) (not x555))
+:assumption (or (not x14124) (not x23797))
+:assumption (or (not x13716) (not x31845))
+:assumption (or x15300 x2822 x14053 x12825 x8927 (not x12149))
+:assumption (or (not x23550) x2422)
+:assumption (or (not x21895) x27499)
+:assumption (or x14518 x27090)
+:assumption (or (not x14313) x30880)
+:assumption (or (not x17869) x18035)
+:assumption (or (not x22069) x8277)
+:assumption (or (not x26288) x23561)
+:assumption (or (not x26320) x20036)
+:assumption (or (not x10873) (not x23894))
+:assumption (or x30094 x23908 (not x5294) x20643)
+:assumption (or x12886 (not x12029))
+:assumption (or (not x31529) (not x18333))
+:assumption (or x5589 (not x3072))
+:assumption (or x27666 x23707)
+:assumption (or x8002 (not x1691))
+:assumption (or (not x5878) (not x29262))
+:assumption (or x20646 x14435)
+:assumption (or x17104 x31872)
+:assumption (or (not x14013) (not x10089))
+:assumption (or x7080 x27121)
+:assumption (or x18131 x30113)
+:assumption (or x15875 (not x15458))
+:assumption (or x10527 (not x14103))
+:assumption (or x27143 x1856)
+:assumption (or x19360 (not x28428))
+:assumption (or (not x5897) x29967)
+:assumption (or (not x20788) x4177)
+:assumption (or x26859 x24558)
+:assumption (or (not x16717) x17964 x16131)
+:assumption (or x8961 (not x11145))
+:assumption (or (not x19365) (not x1850))
+:assumption (or (not x27731) (not x13956))
+:assumption (or x17116 x19482)
+:assumption (or x23510 x18829)
+:assumption (or (not x16612) (not x17142))
+:assumption (or x27660 x827 x17587)
+:assumption (or x5528 (not x29216))
+:assumption (or (not x15347) x25659)
+:assumption (or x2500 x16034)
+:assumption (or (not x28756) (not x26906))
+:assumption (or x6149 x24007)
+:assumption (or (not x22954) (not x7470))
+:assumption (or x12588 (not x14866) (not x25440) (not x27897) x26995 x12571)
+:assumption (or (not x111) (not x14657) x8819)
+:assumption (or (not x27618) x6606 x31519 (not x1390) (not x9975) x16562 x3456 x13913)
+:assumption (or (not x5540) x26153)
+:assumption (or (not x19898) (not x9937))
+:assumption (or (not x15296) x16387)
+:assumption (or x27616 x17035)
+:assumption (or (not x1793) x543)
+:assumption (or (not x1264) x18327)
+:assumption (or x20929 x6757 (not x1104))
+:assumption (or x16430 x16003)
+:assumption (or (not x24717) x26688)
+:assumption (or (not x10702) (not x30400))
+:assumption (or x21324 (not x20693))
+:assumption (or x22370 x7711)
+:assumption (or x9407 (not x26670))
+:assumption (or x18069 (not x27232))
+:assumption (or (not x27828) x9623 x20075 x29761 (not x14195))
+:assumption (or x17302 x5915)
+:assumption (or x24513 (not x3122))
+:assumption (or x5631 x14720)
+:assumption (or x26923 (not x17047))
+:assumption (or x17176 (not x22659))
+:assumption (or (not x29964) x26348)
+:assumption (or (not x13709) (not x17210))
+:assumption (or (not x15488) (not x14003))
+:assumption (or (not x11552) x23168 x17075)
+:assumption (or (not x10663) x29369)
+:assumption (or x24104 x1952 x769 x17117 x31759 (not x7178) x24865)
+:assumption (or (not x2821) (not x18694))
+:assumption (or x17744 (not x9776))
+:assumption (or x8574 (not x19433) x14048)
+:assumption (or x8016 (not x9008))
+:assumption (or x21685 (not x19015))
+:assumption (or (not x1885) x7191)
+:assumption (or (not x2361) (not x22042))
+:assumption (or (not x16714) (not x31394))
+:assumption (or x25484 x27074)
+:assumption (or x11697 (not x16424))
+:assumption (or (not x7440) (not x7264))
+:assumption (or x8682 (not x18553))
+:assumption (or x25580 (not x20858))
+:assumption (or (not x31920) (not x1764) x14591 (not x24402) x23368)
+:assumption (or (not x11442) (not x16068))
+:assumption (or x754 (not x10040))
+:assumption (or (not x28869) x12127)
+:assumption (or x19025 (not x27824))
+:assumption (or x16253 (not x26080))
+:assumption (or x3967 (not x25736))
+:assumption (or (not x23305) x253)
+:assumption (or (not x28724) x16225)
+:assumption (or x28985 (not x2009))
+:assumption (or (not x19892) (not x410) x11688 (not x29825))
+:assumption (or (not x21592) (not x23919))
+:assumption (or (not x6866) x11081)
+:assumption (or (not x29365) x10326)
+:assumption (or (not x8628) x26082)
+:assumption (or (not x23448) (not x8151))
+:assumption (or (not x18041) x30974)
+:assumption (or x16652 x6713)
+:assumption (or x2074 x27036 x23098)
+:assumption (or (not x11351) x28394)
+:assumption (or (not x9953) x20742)
+:assumption (or (not x19876) (not x14570))
+:assumption (or x17304 (not x23621))
+:assumption (or x2909 (not x3782))
+:assumption (or (not x15918) (not x29174))
+:assumption (or (not x8002) x593)
+:assumption (or x17105 (not x22110))
+:assumption (or x23801 x23409)
+:assumption (or x22109 x14463)
+:assumption (or (not x15167) (not x11020))
+:assumption (or (not x25948) x16019)
+:assumption (or x4008 x21229)
+:assumption (or x447 x22483)
+:assumption (or x30613 x8512)
+:assumption (or x19028 (not x26432))
+:assumption (or (not x30297) x15935)
+:assumption (or x30450 x14395 (not x28161))
+:assumption (or x23537 (not x19306) (not x21377) x3670 x330 x5535)
+:assumption (or (not x19234) (not x20146) x24155 (not x26354))
+:assumption (or x23333 x1269)
+:assumption (or (not x4813) x28695)
+:assumption (or x19386 (not x12063))
+:assumption (or (not x28712) (not x7747))
+:assumption (or x17787 x6952)
+:assumption (or (not x28641) (not x14918))
+:assumption (or x3460 (not x14347))
+:assumption (or (not x24365) (not x11462))
+:assumption (or x9230 x7249)
+:assumption (or (not x26388) (not x20124))
+:assumption (or x24217 (not x8002))
+:assumption (or x8120 x6592 (not x4628) (not x2775))
+:assumption (or x9558 (not x27213) x21242 x7061 x1924 x249)
+:assumption (or (not x19428) (not x10495))
+:assumption (or x24815 x964)
+:assumption (or (not x17359) (not x26432) x11793)
+:assumption (or (not x9647) (not x11123) (not x18042) x11299)
+:assumption (or x7012 (not x11216) (not x19992))
+:assumption (or (not x2001) x30762)
+:assumption (or (not x16224) (not x28859))
+:assumption (or (not x7054) x4517)
+:assumption (or (not x4930) (not x12068) x3183 x2546 x19650)
+:assumption (or (not x14718) (not x3222))
+:assumption (or x27862 (not x21922))
+:assumption (or (not x15927) x5053)
+:assumption (or (not x4372) x10244)
+:assumption (or (not x23305) (not x27179))
+:assumption (or (not x6504) x1268)
+:assumption (or x28521 (not x8648))
+:assumption (or (not x16493) x4625)
+:assumption (or (not x10082) (not x242))
+:assumption (or (not x12649) (not x1064))
+:assumption (or x2354 (not x414))
+:assumption (or x13268 x9262)
+:assumption (or (not x3616) (not x3538))
+:assumption (or (not x4673) (not x15795))
+:assumption (or x22373 x31275)
+:assumption (or (not x13089) (not x29541))
+:assumption (or (not x4549) (not x27615))
+:assumption (or (not x1393) x13306)
+:assumption (or (not x14422) (not x21373))
+:assumption (or (not x20183) (not x22546))
+:assumption (or (not x10757) (not x9459))
+:assumption (or x18971 (not x17736) (not x12707) (not x29442) x23143)
+:assumption (or x1009 x9439 (not x16555) x22482 (not x22337) (not x11033) (not x1972))
+:assumption (or x23275 x29943)
+:assumption (or x20054 x20938)
+:assumption (or (not x28234) (not x27010))
+:assumption (or x17583 (not x29847))
+:assumption (or (not x13600) (not x19997))
+:assumption (or (not x6936) x6409)
+:assumption (or (not x13088) (not x14931))
+:assumption (or x7668 x8498)
+:assumption (or x21991 (not x28221))
+:assumption (or x15935 (not x21633))
+:assumption (or x24079 (not x13585))
+:assumption (or x21928 (not x19659) x29222 x23595 x22935 (not x5651) (not x4955) (not x11512) (not x25739))
+:assumption (or x24640 (not x24198))
+:assumption (or (not x2038) (not x31536))
+:assumption (or x21072 (not x19869))
+:assumption (or (not x8002) (not x9470))
+:assumption (or (not x28328) (not x23279) x5148)
+:assumption (or (not x6373) x918)
+:assumption (or x21797 x10652)
+:assumption (or x12708 x21764)
+:assumption (or (not x30324) (not x2422) x29858 (not x11336) x22803 (not x12758) x13673 x20176 (not x8323))
+:assumption (or (not x17050) (not x28888))
+:assumption (or (not x29200) (not x22909))
+:assumption (or (not x21109) (not x19468) x3455)
+:assumption (or x21241 (not x21815))
+:assumption (or (not x31134) (not x2470))
+:assumption (or (not x9008) x27453)
+:assumption (or (not x23968) (not x19415))
+:assumption (or (not x21334) x22295)
+:assumption (or x2394 (not x30667))
+:assumption (or (not x12900) x27725)
+:assumption (or x3231 (not x31268))
+:assumption (or (not x16415) x3453)
+:assumption (or (not x21815) x6606 x27322 (not x784) x16510 (not x26389) (not x10632))
+:assumption (or x7231 x22035 (not x8996) x16936)
+:assumption (or x2048 (not x1539))
+:assumption (or (not x17139) x12619)
+:assumption (or x29126 (not x18144))
+:assumption (or x10598 (not x9751))
+:assumption (or x12182 x45)
+:assumption (or (not x25656) (not x21762))
+:assumption (or (not x19157) (not x16744))
+:assumption (or x9588 (not x4506))
+:assumption (or x17907 x1625 x7542)
+:assumption (or (not x16136) x7857)
+:assumption (or (not x9653) (not x16025))
+:assumption (or (not x17594) (not x25478))
+:assumption (or x24985 x18003)
+:assumption (or x31802 (not x15404))
+:assumption (or x7544 (not x18924) x16437)
+:assumption (or x5191 (not x27462))
+:assumption (or x25302 (not x7253))
+:assumption (or x15261 (not x5696))
+:assumption (or x3024 (not x15987) x4367)
+:assumption (or x18120 x4289)
+:assumption (or x28465 x24540)
+:assumption (or (not x16529) x2133)
+:assumption (or (not x14515) x6783 x23244 x8002 (not x5403))
+:assumption (or x22133 x16743)
+:assumption (or x30885 x21168)
+:assumption (or (not x17402) (not x849))
+:assumption (or x25842 x11792)
+:assumption (or (not x10102) (not x5528))
+:assumption (or (not x15846) x24990)
+:assumption (or x24680 x10194)
+:assumption (or (not x27936) (not x18599))
+:assumption (or x5693 (not x4020))
+:assumption (or x11281 (not x30703))
+:assumption (or x25659 (not x8355))
+:assumption (or x14456 (not x15041))
+:assumption (or x11381 x20651)
+:assumption (or x6149 x26236)
+:assumption (or x30581 (not x18768) (not x8229) (not x20627))
+:assumption (or x14402 x7814)
+:assumption (or (not x10353) x30539)
+:assumption (or (not x6527) x9536)
+:assumption (or x6780 (not x27023))
+:assumption (or x29199 (not x30970))
+:assumption (or (not x15234) x21847)
+:assumption (or (not x12610) (not x22394))
+:assumption (or (not x11659) (not x12475))
+:assumption (or x18433 x3324 (not x7091) x23919 (not x27890) (not x9834) x23700 x26290 x6753 (not x11056) (not x15454) x23682)
+:assumption (or (not x14141) x20978)
+:assumption (or x29649 (not x3647))
+:assumption (or (not x14767) (not x9797))
+:assumption (or x14764 x22564)
+:assumption (or (not x16631) x18921)
+:assumption (or (not x17740) (not x701))
+:assumption (or (not x23324) x24160 (not x12935) (not x22845) (not x11581) (not x26026))
+:assumption (or (not x29364) (not x15117))
+:assumption (or (not x8002) x6836)
+:assumption (or x31554 (not x16527))
+:assumption (or (not x23296) (not x6711))
+:assumption (or x13433 (not x16407))
+:assumption (or x24165 x16510)
+:assumption (or (not x7829) (not x16512))
+:assumption (or (not x26812) (not x9008) x5325)
+:assumption (or x9235 x27027)
+:assumption (or x22226 (not x17121))
+:assumption (or x5501 (not x29570))
+:assumption (or (not x27240) (not x15285))
+:assumption (or x12397 (not x29768) x30747)
+:assumption (or (not x23144) x18869)
+:assumption (or x12463 x30930)
+:assumption (or (not x18630) (not x3863) (not x22527) (not x152) x3001 (not x16852) (not x8431) (not x297))
+:assumption (or (not x10456) x2769)
+:assumption (or x8002 (not x2967))
+:assumption (or x7076 (not x30950))
+:assumption (or (not x29573) x22814)
+:assumption (or x24067 x17695)
+:assumption (or (not x6558) (not x13075))
+:assumption (or x4284 (not x6751))
+:assumption (or (not x22975) x14549)
+:assumption (or (not x22145) (not x20325))
+:assumption (or x25782 (not x8002))
+:assumption (or (not x31734) x28334)
+:assumption (or (not x6528) x22195)
+:assumption (or (not x16909) x18859 x14828)
+:assumption (or x1487 (not x16177))
+:assumption (or (not x22058) x9008)
+:assumption (or x21815 (not x20828))
+:assumption (or x2445 (not x22440))
+:assumption (or (not x700) (not x28323))
+:assumption (or x14710 x31899)
+:assumption (or (not x19236) (not x22503) (not x21432) (not x13908))
+:assumption (or (not x31921) (not x26446))
+:assumption (or x23478 x1393)
+:assumption (or x26692 (not x9067))
+:assumption (or (not x11093) (not x28903) (not x19968) x4643 (not x12859) x18770 x16048 x2472)
+:assumption (or (not x25919) x10297)
+:assumption (or x10107 x14830)
+:assumption (or (not x23305) x11173)
+:assumption (or (not x14517) x7689)
+:assumption (or (not x17511) (not x29994))
+:assumption (or (not x21951) x25878 x14997)
+:assumption (or x23244 x8715)
+:assumption (or (not x21406) (not x25988))
+:assumption (or (not x21105) (not x1393) x15502)
+:assumption (or x4256 x4351)
+:assumption (or (not x237) x3494)
+:assumption (or x14120 x23403)
+:assumption (or (not x4386) (not x31685) x22260 (not x22004))
+:assumption (or x29757 (not x7830))
+:assumption (or x8278 (not x31789))
+:assumption (or x21064 x28982)
+:assumption (or x29107 x23244)
+:assumption (or x2611 (not x5090))
+:assumption (or (not x18587) x791 x27200 (not x9388) x24275 x8011 (not x23861))
+:assumption (or x14890 (not x3714))
+:assumption (or (not x7643) x8608)
+:assumption (or x30414 (not x6944))
+:assumption (or (not x7009) (not x23831))
+:assumption (or x8594 x18236)
+:assumption (or x3751 (not x14542))
+:assumption (or x17236 x30584)
+:assumption (or (not x9459) x16832)
+:assumption (or (not x24655) x16680)
+:assumption (or x8006 x17868)
+:assumption (or (not x15861) (not x28004))
+:assumption (or (not x21973) (not x9531) (not x5191) x27462)
+:assumption (or x18112 x17463)
+:assumption (or (not x30525) x2893)
+:assumption (or x29772 (not x3429))
+:assumption (or (not x29474) (not x13553))
+:assumption (or (not x18800) x14980)
+:assumption (or x4287 x3857)
+:assumption (or (not x24580) (not x17434) x21682 x9723 x1142)
+:assumption (or (not x7521) x16240)
+:assumption (or (not x21716) x23351 (not x1775))
+:assumption (or (not x5706) (not x16741))
+:assumption (or x10536 x22817 (not x9423) (not x16910))
+:assumption (or (not x11493) (not x19215))
+:assumption (or (not x27165) x7172)
+:assumption (or x9709 (not x25832))
+:assumption (or x13956 (not x21979))
+:assumption (or x20506 x16510)
+:assumption (or (not x31734) (not x22825))
+:assumption (or x9245 (not x26594))
+:assumption (or (not x1214) (not x10466))
+:assumption (or x10510 x16003 x8878)
+:assumption (or x31847 (not x9702))
+:assumption (or (not x20486) (not x18330) x5553 x23958)
+:assumption (or x9570 x31889 (not x381) x24068)
+:assumption (or (not x714) (not x20340))
+:assumption (or (not x9459) (not x25546))
+:assumption (or x8471 x9357 x2632 (not x28549) x18539 x26947 x28307)
+:assumption (or (not x5528) (not x7607))
+:assumption (or (not x16418) (not x20921))
+:assumption (or (not x29291) x29269)
+:assumption (or x317 x30431)
+:assumption (or (not x6481) x10185 x31221 x19864)
+:assumption (or (not x4434) (not x24284) (not x7913) x12939 (not x13979) (not x4064) (not x30047) x30771)
+:assumption (or x14018 (not x13744))
+:assumption (or x18659 (not x19636) (not x15271) (not x23701))
+:assumption (or (not x1916) (not x1393) x8171)
+:assumption (or x19606 x20949)
+:assumption (or (not x17352) (not x12331))
+:assumption (or (not x16239) x22544)
+:assumption (or (not x4466) x7756)
+:assumption (or (not x20939) x25659 x5028 (not x20550) (not x9779))
+:assumption (or x15280 (not x8002) (not x14941) x9466)
+:assumption (or x24060 x29598)
+:assumption (or (not x3981) (not x18530))
+:assumption (or (not x18800) x22728)
+:assumption (or (not x7351) x9542 (not x10556) (not x1193))
+:assumption (or x7782 x30642)
+:assumption (or x31179 (not x7889) (not x17130) (not x20413))
+:assumption (or (not x18926) (not x23728))
+:assumption (or x675 (not x4295) x8120)
+:assumption (or x29805 x5785)
+:assumption (or (not x5440) x8658 x11785 x6276)
+:assumption (or x2944 (not x24155))
+:assumption (or (not x14492) (not x18911))
+:assumption (or (not x22474) (not x15596))
+:assumption (or x5674 x25659 x18218)
+:assumption (or x5138 x18598)
+:assumption (or (not x10343) x12392)
+:assumption (or x9531 (not x4460))
+:assumption (or x22635 x13576)
+:assumption (or x13053 (not x31083) (not x27816))
+:assumption (or x17426 x13872 (not x30726) x24234 x7319 (not x27970) (not x15381))
+:assumption (or x24829 x1628)
+:assumption (or x31931 x23838)
+:assumption (or x581 (not x20227))
+:assumption (or (not x14553) x3420)
+:assumption (or (not x25282) x11792 x31360 x23810 (not x31465))
+:assumption (or x8002 x5950)
+:assumption (or (not x22480) x20741)
+:assumption (or x12774 x27548 x22046 (not x29509) (not x30471) (not x12669))
+:assumption (or (not x10398) (not x16933))
+:assumption (or (not x15829) x12365 x21442)
+:assumption (or x21008 x17642)
+:assumption (or (not x28289) x6969)
+:assumption (or x29217 (not x18470))
+:assumption (or (not x1393) x3529)
+:assumption (or x20405 x24611)
+:assumption (or (not x12267) x28767)
+:assumption (or x11920 x19992)
+:assumption (or (not x15052) x20937)
+:assumption (or x29866 (not x29501))
+:assumption (or x25749 (not x21235) (not x13136) x801)
+:assumption (or (not x24884) (not x16085))
+:assumption (or (not x17525) (not x21909))
+:assumption (or x3029 x11629)
+:assumption (or x14613 (not x17494))
+:assumption (or (not x27059) (not x26754))
+:assumption (or x12840 (not x10730))
+:assumption (or (not x21753) (not x10209))
+:assumption (or (not x13273) (not x10909))
+:assumption (or (not x24426) x8002)
+:assumption (or (not x13156) x3450 (not x16116) x13928 (not x23523) x2250 x14441 x21074)
+:assumption (or x3038 x14002)
+:assumption (or x16861 x27579)
+:assumption (or (not x6163) (not x8533) x27915)
+:assumption (or x23801 x25856)
+:assumption (or x20328 (not x17205))
+:assumption (or x12760 (not x26102))
+:assumption (or x22295 x22192)
+:assumption (or x21786 x1284)
+:assumption (or (not x8892) (not x12611) x1650 (not x23634))
+:assumption (or (not x4068) x10105)
+:assumption (or x1887 (not x28374) (not x12119))
+:assumption (or (not x7760) x23730)
+:assumption (or x14037 (not x25466))
+:assumption (or x9052 (not x26767))
+:assumption (or x22124 (not x21812))
+:assumption (or x27679 (not x19225))
+:assumption (or x3192 x16802)
+:assumption (or (not x7522) (not x10534))
+:assumption (or x31365 (not x11493))
+:assumption (or (not x31876) x20047)
+:assumption (or x10879 x17225)
+:assumption (or x3370 (not x14928))
+:assumption (or x13083 x1513)
+:assumption (or x13274 (not x26511))
+:assumption (or x21815 x16934)
+:assumption (or (not x16054) x19055)
+:assumption (or x14307 x23973)
+:assumption (or (not x23893) x25784)
+:assumption (or (not x4872) (not x13550))
+:assumption (or x1959 x8002)
+:assumption (or x15782 x31052 (not x22759) (not x23469) x31023)
+:assumption (or (not x8726) (not x23244))
+:assumption (or x15252 (not x2013))
+:assumption (or (not x2666) x27858)
+:assumption (or (not x27903) (not x21399))
+:assumption (or (not x485) x31459)
+:assumption (or (not x6825) (not x21753))
+:assumption (or (not x18519) x26201 x19711)
+:assumption (or x2705 x27786)
+:assumption (or (not x23825) (not x16800))
+:assumption (or (not x15951) x31455)
+:assumption (or (not x8120) (not x11213))
+:assumption (or (not x2391) x16802 (not x8638) (not x17222))
+:assumption (or x16003 (not x19983) x2701)
+:assumption (or (not x3603) x23059)
+:assumption (or (not x6623) (not x14486))
+:assumption (or x14585 (not x27654))
+:assumption (or (not x4157) (not x27220))
+:assumption (or x15171 (not x6125))
+:assumption (or x20026 x30278 (not x21678))
+:assumption (or (not x11377) x22196)
+:assumption (or x25572 (not x16003))
+:assumption (or x2174 (not x27829))
+:assumption (or x23874 (not x10392))
+:assumption (or x25659 (not x12621))
+:assumption (or x1303 (not x9351))
+:assumption (or x972 x7494)
+:assumption (or (not x1393) x4699)
+:assumption (or (not x7754) (not x5089))
+:assumption (or x541 x30876)
+:assumption (or (not x30868) (not x13654))
+:assumption (or x6060 (not x9638))
+:assumption (or (not x3829) (not x18307))
+:assumption (or x9530 x13250)
+:assumption (or (not x22829) (not x28976))
+:assumption (or x18131 x30403)
+:assumption (or (not x27725) (not x1054))
+:assumption (or x18327 x19139)
+:assumption (or x23875 x21026 x7584 x13735)
+:assumption (or x23244 (not x17359) (not x13856))
+:assumption (or x9122 (not x288))
+:assumption (or (not x28650) (not x29100))
+:assumption (or x11606 x9112)
+:assumption (or x23067 (not x14631))
+:assumption (or x11987 x4289)
+:assumption (or (not x10893) x19730)
+:assumption (or x2736 x13308 x7628 x30977 x7553 x25294)
+:assumption (or (not x13803) x28369)
+:assumption (or x8184 (not x9489))
+:assumption (or (not x14) (not x11930))
+:assumption (or (not x9887) (not x249))
+:assumption (or x23701 (not x18659))
+:assumption (or x13040 (not x13379))
+:assumption (or x20332 x15164)
+:assumption (or x2299 (not x22531))
+:assumption (or (not x16355) (not x8601) (not x1409) x28117 (not x10430) (not x3025))
+:assumption (or x31878 x31354)
+:assumption (or (not x1855) x12671)
+:assumption (or x5117 (not x10831))
+:assumption (or (not x11960) x2947)
+:assumption (or x16784 x13188 x21165)
+:assumption (or x31925 (not x20542))
+:assumption (or (not x7394) x21819)
+:assumption (or x20949 (not x5963))
+:assumption (or (not x1381) (not x30729))
+:assumption (or (not x28669) (not x26796))
+:assumption (or x2879 x25747)
+:assumption (or (not x1311) x21949)
+:assumption (or x21653 x1153)
+:assumption (or (not x2129) x1689)
+:assumption (or x674 (not x31675))
+:assumption (or (not x4816) (not x25684))
+:assumption (or x28751 (not x31783))
+:assumption (or (not x6863) (not x5198))
+:assumption (or x9989 (not x31891))
+:assumption (or x7622 x13258)
+:assumption (or x8985 (not x4408))
+:assumption (or x20693 x12126 (not x27998) x319 x24757 (not x26039) x16784)
+:assumption (or x30138 (not x22181))
+:assumption (or (not x28529) (not x13796))
+:assumption (or (not x18607) x24206)
+:assumption (or x10043 x25376)
+:assumption (or x10876 x16921)
+:assumption (or (not x713) x15882)
+:assumption (or x4957 x7712)
+:assumption (or (not x24412) x22078)
+:assumption (or (not x29606) x7033)
+:assumption (or (not x22296) (not x21663))
+:assumption (or (not x670) x28071)
+:assumption (or x30987 (not x7832))
+:assumption (or (not x24080) x5400)
+:assumption (or x14824 (not x18859))
+:assumption (or x28344 x29361)
+:assumption (or (not x28053) x7530)
+:assumption (or (not x26255) (not x24233) x2127 x20682)
+:assumption (or x18775 (not x22260))
+:assumption (or x19353 (not x1359))
+:assumption (or (not x10889) x11828)
+:assumption (or (not x10096) x10987 (not x13529))
+:assumption (or (not x9326) (not x27236))
+:assumption (or x27958 (not x11398))
+:assumption (or x27163 x4989 (not x4574) (not x12293))
+:assumption (or x21372 (not x21910) x22360)
+:assumption (or x3126 x10429)
+:assumption (or (not x28239) (not x3455))
+:assumption (or (not x423) x9817)
+:assumption (or x19061 (not x2320))
+:assumption (or (not x12338) x6606 x21863 (not x30578) (not x4768) (not x27457) x3951 (not x7627))
+:assumption (or x14839 (not x31416))
+:assumption (or x1907 x22247)
+:assumption (or (not x23019) x22371)
+:assumption (or x6242 x29101)
+:assumption (or (not x8814) (not x31255))
+:assumption (or x20808 (not x21653) (not x16036))
+:assumption (or x165 (not x16743))
+:assumption (or (not x19214) x23636)
+:assumption (or x21174 x12717)
+:assumption (or (not x10403) (not x4222))
+:assumption (or (not x22620) x923 x16952)
+:assumption (or x28754 (not x18519))
+:assumption (or (not x8961) (not x7475))
+:assumption (or x8602 x18849)
+:assumption (or x14844 x16734)
+:assumption (or x654 (not x22089))
+:assumption (or x23636 (not x5753))
+:assumption (or x5527 (not x10043))
+:assumption (or x5206 (not x970))
+:assumption (or x13760 x6083 x20400 x24193)
+:assumption (or (not x11307) x28947)
+:assumption (or (not x485) x19542)
+:assumption (or (not x24388) (not x24740))
+:assumption (or (not x9432) x12099 (not x9731) x21545 x1819 (not x5528))
+:assumption (or (not x25239) x6121)
+:assumption (or (not x827) (not x19157) (not x2608))
+:assumption (or x19478 x632)
+:assumption (or (not x28682) x30751 (not x24845))
+:assumption (or x24789 x13911)
+:assumption (or x21505 (not x9008))
+:assumption (or x28888 x19880)
+:assumption (or x14839 (not x10734) (not x19746) x4841)
+:assumption (or (not x17614) x14031)
+:assumption (or x29649 x31633 (not x6228) (not x1398) (not x30946) (not x28875))
+:assumption (or x12941 (not x24042) x13455 x27939)
+:assumption (or (not x31846) (not x12279))
+:assumption (or x7355 x2740)
+:assumption (or (not x27325) (not x30224))
+:assumption (or (not x9554) x4425)
+:assumption (or (not x21815) (not x19444) x30904)
+:assumption (or (not x21815) x5394 (not x1364) x14693 (not x16510) (not x4401) x20171)
+:assumption (or x4382 (not x26358))
+:assumption (or (not x21298) x5655 x14867 (not x27859))
+:assumption (or x19626 (not x7104))
+:assumption (or (not x26184) (not x15795))
+:assumption (or x28406 (not x25818))
+:assumption (or (not x10944) x12563)
+:assumption (or x2947 x14207)
+:assumption (or (not x3302) x4401)
+:assumption (or (not x37) (not x3274))
+:assumption (or (not x14304) x9008)
+:assumption (or x27097 x725)
+:assumption (or x17626 x18003 x1564)
+:assumption (or x31389 x31113)
+:assumption (or (not x14386) (not x14963))
+:assumption (or (not x16703) x8002)
+:assumption (or x23941 (not x24079))
+:assumption (or (not x2118) x24770)
+:assumption (or x20608 (not x24756))
+:assumption (or (not x19863) x3435)
+:assumption (or x15110 x16949)
+:assumption (or (not x21077) (not x10230))
+:assumption (or (not x5110) (not x9008))
+:assumption (or (not x16612) x11616)
+:assumption (or x30190 (not x28242))
+:assumption (or x23080 x12362)
+:assumption (or x26903 (not x3782))
+:assumption (or x15649 x5644)
+:assumption (or (not x24262) (not x15418))
+:assumption (or x22511 x23280 (not x17855))
+:assumption (or (not x21875) x8002 x30519)
+:assumption (or x22451 (not x8002))
+:assumption (or x827 x27237 (not x21551))
+:assumption (or x30707 (not x769))
+:assumption (or x5542 x8146)
+:assumption (or (not x18376) x20546)
+:assumption (or (not x31797) (not x26995))
+:assumption (or (not x27689) (not x10960) (not x14552) (not x18068) (not x2557))
+:assumption (or x3014 (not x19473))
+:assumption (or (not x30425) x25642)
+:assumption (or (not x29945) (not x29034))
+:assumption (or x5940 x18825)
+:assumption (or (not x26119) x29364 x19781 (not x30277) x20930 x8603 x29997)
+:assumption (or x19827 (not x15347))
+:assumption (or x323 x21218)
+:assumption (or x18865 (not x261))
+:assumption (or x30508 x10938)
+:assumption (or x25659 x22592 (not x6937))
+:assumption (or x4674 (not x29730))
+:assumption (or (not x14839) x28666)
+:assumption (or (not x1393) (not x28273))
+:assumption (or (not x25452) (not x17302) (not x12139))
+:assumption (or (not x1393) x4634 (not x4717))
+:assumption (or x20949 x10421)
+:assumption (or x25830 (not x29697))
+:assumption (or x30478 x24199)
+:assumption (or (not x15516) (not x31201))
+:assumption (or (not x18688) x366)
+:assumption (or x9419 (not x19841))
+:assumption (or (not x8924) x6741)
+:assumption (or x23510 x25138)
+:assumption (or x9748 (not x1244))
+:assumption (or x21917 (not x25606))
+:assumption (or (not x13648) (not x13400) (not x24581) (not x11896) x29590)
+:assumption (or x16021 (not x3637))
+:assumption (or (not x23633) (not x7247))
+:assumption (or x2912 (not x15487))
+:assumption (or (not x5156) (not x11506))
+:assumption (or x14406 x16623)
+:assumption (or (not x23336) x14237)
+:assumption (or x6310 (not x17299))
+:assumption (or (not x7253) x27366)
+:assumption (or (not x4890) x16416)
+:assumption (or (not x18967) (not x15552))
+:assumption (or (not x14569) (not x8188))
+:assumption (or x29836 (not x19422) (not x2507))
+:assumption (or x22177 x31534)
+:assumption (or x5651 (not x14273))
+:assumption (or x24467 x2897 x647 x18594)
+:assumption (or (not x5696) x26928)
+:assumption (or (not x2822) (not x29336))
+:assumption (or (not x31525) x7402)
+:assumption (or (not x1772) (not x24932))
+:assumption (or (not x14616) (not x25357))
+:assumption (or x25757 (not x13956) (not x3322))
+:assumption (or x26303 x22855)
+:assumption (or (not x2029) (not x5394) x11203)
+:assumption (or x7269 x4660)
+:assumption (or (not x25481) x3746)
+:assumption (or (not x26434) x4182)
+:assumption (or (not x494) x20087)
+:assumption (or x5417 (not x2769))
+:assumption (or (not x27703) x20331 x19525 (not x31865) x1133)
+:assumption (or x16716 x29271)
+:assumption (or (not x8343) (not x31490))
+:assumption (or (not x2078) (not x7099))
+:assumption (or x2388 x19817)
+:assumption (or (not x21015) x20134 x31009 (not x25841))
+:assumption (or (not x2589) x11792 (not x13576))
+:assumption (or (not x3868) (not x17571))
+:assumption (or x6596 (not x21653) x5945)
+:assumption (or x22771 (not x6302))
+:assumption (or (not x827) (not x21937))
+:assumption (or x14939 x10964)
+:assumption (or (not x31643) (not x13749))
+:assumption (or x17617 x4515)
+:assumption (or (not x12409) (not x9014))
+:assumption (or (not x24751) x29833)
+:assumption (or x19561 x13956 (not x18500))
+:assumption (or x27980 (not x1393) (not x26440))
+:assumption (or x3863 x297)
+:assumption (or x6290 x27276)
+:assumption (or (not x3531) x8080)
+:assumption (or (not x21432) (not x5889))
+:assumption (or (not x8574) x10253)
+:assumption (or (not x18948) (not x16881))
+:assumption (or (not x22752) x21509)
+:assumption (or x332 x11244)
+:assumption (or (not x27293) x15917)
+:assumption (or x7422 x2228)
+:assumption (or (not x11899) x16741)
+:assumption (or x14839 (not x1092))
+:assumption (or x10987 (not x15187))
+:assumption (or (not x468) x14053)
+:assumption (or x25261 x3532 (not x30194) (not x9963) (not x26075) x30593 x28049 (not x12905) x22756)
+:assumption (or x24896 (not x8264) (not x12552) x8095 (not x22878))
+:assumption (or (not x5528) x6783 (not x21679) (not x18500) (not x9008))
+:assumption (or x24636 (not x8843))
+:assumption (or (not x18224) (not x16801))
+:assumption (or (not x2495) x7325)
+:assumption (or (not x2792) x11202)
+:assumption (or x1915 (not x8002))
+:assumption (or x16120 x9028)
+:assumption (or x6794 x30501 (not x22357) x19730)
+:assumption (or (not x13741) (not x22360) (not x21910))
+:assumption (or (not x12140) x23801)
+:assumption (or x19486 (not x15336))
+:assumption (or x26810 x29564)
+:assumption (or x17279 x29932)
+:assumption (or x22025 (not x17267))
+:assumption (or (not x24972) (not x18749) x18859)
+:assumption (or x24649 x8361)
+:assumption (or (not x29462) (not x28998))
+:assumption (or (not x7224) x20618)
+:assumption (or x4850 (not x5675))
+:assumption (or x254 (not x15186))
+:assumption (or (not x6496) (not x23569))
+:assumption (or x10542 (not x19244))
+:assumption (or x27169 x29627 x5528)
+:assumption (or x4759 x13956)
+:assumption (or (not x6528) x16695)
+:assumption (or (not x8423) (not x11363))
+:assumption (or x736 x6706)
+:assumption (or x21349 (not x7899) x14161)
+:assumption (or x3902 (not x23244))
+:assumption (or (not x28726) (not x3617))
+:assumption (or (not x12836) (not x28620))
+:assumption (or (not x4859) (not x29461))
+:assumption (or x21265 (not x20579))
+:assumption (or (not x7413) x14280 (not x18169) x9487 x12999)
+:assumption (or (not x10469) x18275 x5394 x8132)
+:assumption (or (not x15889) (not x22495))
+:assumption (or (not x12741) (not x2907) (not x11791))
+:assumption (or x14685 (not x8002) x9591)
+:assumption (or x3587 x27562)
+:assumption (or x22348 (not x25524))
+:assumption (or x2625 (not x18774))
+:assumption (or x21586 (not x29980))
+:assumption (or (not x27342) x8602)
+:assumption (or x13576 (not x30985) x26778 x23157 x975)
+:assumption (or (not x20813) x16869)
+:assumption (or (not x6759) x8002)
+:assumption (or (not x22267) (not x22295))
+:assumption (or (not x9298) (not x26668))
+:assumption (or x11063 x2165)
+:assumption (or (not x21123) (not x6489))
+:assumption (or (not x22244) x2946)
+:assumption (or x4726 x14296)
+:assumption (or (not x14671) (not x8794) (not x28890))
+:assumption (or x9531 (not x9616))
+:assumption (or (not x29772) (not x25027))
+:assumption (or (not x9204) x3570)
+:assumption (or (not x23244) (not x2768))
+:assumption (or (not x24140) (not x6951))
+:assumption (or (not x7291) (not x14132))
+:assumption (or x13583 (not x24297) (not x8002))
+:assumption (or (not x5804) (not x914))
+:assumption (or (not x28890) x21571)
+:assumption (or (not x30946) (not x21808))
+:assumption (or x21095 x8209)
+:assumption (or (not x6590) (not x11239))
+:assumption (or (not x3692) x27594)
+:assumption (or x26324 x18187)
+:assumption (or (not x10372) (not x25290))
+:assumption (or (not x17022) (not x13444))
+:assumption (or x23867 (not x8615) (not x11307))
+:assumption (or (not x25659) (not x6742) x21813 (not x2441) (not x12236) (not x22808))
+:assumption (or (not x31015) (not x10643))
+:assumption (or x29761 (not x11483))
+:assumption (or (not x1871) x1467)
+:assumption (or (not x12218) (not x24316))
+:assumption (or (not x20072) x16510)
+:assumption (or (not x17406) x18536 x29688 (not x8498))
+:assumption (or (not x3488) x25839)
+:assumption (or (not x11225) x1315)
+:assumption (or x3680 x676)
+:assumption (or (not x6000) x16660)
+:assumption (or (not x29968) x7951)
+:assumption (or x6307 (not x15771))
+:assumption (or x5476 (not x5528))
+:assumption (or x4009 (not x13653))
+:assumption (or x22754 (not x27721) (not x12876) x8496 x27297)
+:assumption (or (not x27261) (not x25659))
+:assumption (or x27356 (not x8484))
+:assumption (or x18318 (not x18284))
+:assumption (or x9790 (not x7821))
+:assumption (or x7286 (not x6556))
+:assumption (or x24711 x17436)
+:assumption (or x28104 (not x29799) (not x8002) x6368)
+:assumption (or x14054 (not x24952))
+:assumption (or x15341 (not x2676) (not x17463))
+:assumption (or (not x18042) x14148)
+:assumption (or x22778 x29534)
+:assumption (or x6455 (not x31748))
+:assumption (or x25659 (not x31370))
+:assumption (or x17656 (not x4578))
+:assumption (or x22400 (not x23947))
+:assumption (or (not x19239) x11280)
+:assumption (or (not x6529) x11281)
+:assumption (or (not x25415) x28629)
+:assumption (or x27849 (not x11237))
+:assumption (or x26284 (not x24314))
+:assumption (or (not x25298) (not x18471))
+:assumption (or (not x11298) (not x7986))
+:assumption (or (not x15108) x9453)
+:assumption (or (not x7229) (not x29530))
+:assumption (or x17422 (not x5160))
+:assumption (or (not x30057) x374)
+:assumption (or x8852 (not x21633))
+:assumption (or (not x25387) x13619)
+:assumption (or (not x10775) (not x28820))
+:assumption (or x4483 (not x28506))
+:assumption (or x20380 x8729)
+:assumption (or (not x12395) x19589 x5528)
+:assumption (or (not x31451) x1320)
+:assumption (or x20281 (not x16025) x18942)
+:assumption (or (not x18463) x18959)
+:assumption (or x21050 x15357 x4317 x31111 (not x23467) (not x8100) (not x6012) x10958 x9805)
+:assumption (or x26126 x920 x15802 x17834 x25116 (not x3151) x12613 x6821)
+:assumption (or x16775 x26850)
+:assumption (or x4757 (not x28295))
+:assumption (or x27374 x26783)
+:assumption (or (not x17493) x16945)
+:assumption (or x28912 (not x24301))
+:assumption (or x1 x31772)
+:assumption (or x21219 (not x26892))
+:assumption (or x14783 x8039)
+:assumption (or x21579 (not x24144))
+:assumption (or (not x16137) x26129)
+:assumption (or (not x16011) x22794)
+:assumption (or (not x11751) x7496)
+:assumption (or (not x14658) x11355)
+:assumption (or (not x12700) (not x9152))
+:assumption (or x21967 (not x21210))
+:assumption (or (not x29712) (not x18550))
+:assumption (or (not x8347) (not x10888))
+:assumption (or (not x20642) x21815 x25648)
+:assumption (or (not x23604) (not x7973) x1503 x22582)
+:assumption (or x14043 x18578)
+:assumption (or x10057 x30002)
+:assumption (or x8128 x30954)
+:assumption (or (not x10703) (not x27643))
+:assumption (or x29423 x30007)
+:assumption (or (not x11469) x29525)
+:assumption (or (not x31065) x19992)
+:assumption (or (not x22855) x23011)
+:assumption (or (not x5867) x30478)
+:assumption (or x31644 (not x20739))
+:assumption (or x5680 (not x8532) x17618)
+:assumption (or x21819 (not x24741))
+:assumption (or (not x24806) (not x12365))
+:assumption (or x30113 (not x8308))
+:assumption (or x13508 (not x18951))
+:assumption (or (not x21291) x2289)
+:assumption (or x31629 x7749)
+:assumption (or x25716 (not x16000))
+:assumption (or x12063 x9102 (not x19386))
+:assumption (or x453 x29260)
+:assumption (or x13323 (not x4605))
+:assumption (or x19276 (not x19992) x27169)
+:assumption (or (not x10890) (not x12006) (not x14359))
+:assumption (or x15526 (not x22613))
+:assumption (or (not x28816) (not x24952))
+:assumption (or x17185 x9008)
+:assumption (or (not x19440) x7671 (not x17728) x13238 (not x29011))
+:assumption (or (not x25831) x480 (not x16510) (not x21815) (not x26670))
+:assumption (or (not x16512) (not x8029))
+:assumption (or (not x8736) (not x15725))
+:assumption (or (not x17295) x24050)
+:assumption (or (not x26789) (not x2812))
+:assumption (or x827 x15658)
+:assumption (or (not x5581) x14325)
+:assumption (or x31129 (not x23570))
+:assumption (or x27184 x17973)
+:assumption (or x17395 x27800)
+:assumption (or (not x24906) (not x28337))
+:assumption (or (not x18800) x31156)
+:assumption (or (not x15170) (not x25055))
+:assumption (or (not x1469) x3298)
+:assumption (or x28161 (not x28140) x9595)
+:assumption (or x11062 (not x11667))
+:assumption (or x8006 x14431)
+:assumption (or (not x20700) (not x11348) (not x21653))
+:assumption (or (not x22190) x19242)
+:assumption (or x11763 (not x27275))
+:assumption (or x20954 (not x13138))
+:assumption (or x23422 x30577)
+:assumption (or x6891 x15245)
+:assumption (or (not x5528) (not x20723) (not x9008) (not x4378) (not x15791))
+:assumption (or (not x19068) (not x31767))
+:assumption (or x23133 x17934)
+:assumption (or (not x18185) (not x11329))
+:assumption (or x27736 (not x1730) x11284)
+:assumption (or (not x5861) x16757)
+:assumption (or (not x5371) (not x4651))
+:assumption (or (not x20402) (not x18709))
+:assumption (or x30255 x19938)
+:assumption (or (not x23314) x3056)
+:assumption (or x719 (not x26596) (not x24632))
+:assumption (or (not x18060) x12495)
+:assumption (or x3481 x20029)
+:assumption (or (not x19741) x22758 x5757)
+:assumption (or (not x10165) x4262)
+:assumption (or x7883 (not x20060))
+:assumption (or x22861 (not x30691) x10632)
+:assumption (or x7938 (not x15484))
+:assumption (or (not x23608) x24364)
+:assumption (or x5741 x3155)
+:assumption (or (not x3316) (not x3832))
+:assumption (or x27606 x24079)
+:assumption (or (not x15440) x24085)
+:assumption (or (not x27998) x18810)
+:assumption (or x29630 (not x12178))
+:assumption (or x30432 (not x13020))
+:assumption (or x17768 (not x15953))
+:assumption (or (not x1393) (not x4074))
+:assumption (or x8896 x28307)
+:assumption (or x18451 x16379)
+:assumption (or x29906 x13126)
+:assumption (or (not x17359) (not x899))
+:assumption (or x17440 x5508)
+:assumption (or x24884 x16085)
+:assumption (or x4140 (not x3131))
+:assumption (or (not x22481) x8954)
+:assumption (or x30372 x14839 x14964 (not x20901))
+:assumption (or (not x16984) x610)
+:assumption (or (not x381) (not x25803) (not x17139) (not x1739) (not x14446) x31606)
+:assumption (or x13956 x6780 (not x1542) x8002 (not x20107))
+:assumption (or x19550 (not x19948))
+:assumption (or x16261 (not x8325))
+:assumption (or (not x7160) x5025 (not x2273))
+:assumption (or (not x13040) x18304)
+:assumption (or (not x11862) (not x22355))
+:assumption (or x19208 x10776)
+:assumption (or (not x17551) (not x1825))
+:assumption (or x26824 (not x17033) x3648)
+:assumption (or x9721 x27965 (not x8583) (not x30166) (not x28402) x26041 (not x31729) (not x23949))
+:assumption (or x24615 (not x3408))
+:assumption (or x23634 x13453)
+:assumption (or (not x11541) (not x9008) x22566)
+:assumption (or x10468 x25135)
+:assumption (or x27306 x28436 x8210 (not x4559))
+:assumption (or (not x1621) x353)
+:assumption (or (not x31725) (not x20469))
+:assumption (or (not x17908) x17982)
+:assumption (or x20288 (not x23558))
+:assumption (or (not x9098) x8002 x6424)
+:assumption (or x13067 x30605)
+:assumption (or x89 (not x12610))
+:assumption (or x31829 (not x3474))
+:assumption (or (not x30299) (not x3191))
+:assumption (or x10577 x10034)
+:assumption (or (not x563) (not x8586))
+:assumption (or (not x278) x7949)
+:assumption (or (not x29274) x7460)
+:assumption (or x260 (not x3970))
+:assumption (or (not x7934) (not x1271) (not x7590) (not x24696) (not x31476) (not x14897) (not x7879) (not x13663) (not x30616))
+:assumption (or x16481 (not x13582))
+:assumption (or x31133 x17134)
+:assumption (or (not x20522) x2133)
+:assumption (or x30737 x4809)
+:assumption (or (not x14008) x18021)
+:assumption (or x24019 x15970)
+:assumption (or (not x13984) (not x31134))
+:assumption (or x20006 (not x11019))
+:assumption (or (not x3926) x12442)
+:assumption (or (not x26240) (not x21230))
+:assumption (or (not x12414) (not x22962))
+:assumption (or (not x25397) x7854)
+:assumption (or x28576 (not x22531))
+:assumption (or x19261 x12286)
+:assumption (or (not x6908) (not x3235))
+:assumption (or x8816 x22855)
+:assumption (or (not x17447) x26687)
+:assumption (or x18584 (not x7192))
+:assumption (or (not x8730) (not x24051) (not x18020))
+:assumption (or x4361 x22477)
+:assumption (or (not x24101) x611)
+:assumption (or x9786 (not x30453) (not x13867) (not x5528) x18125 (not x26460))
+:assumption (or (not x3772) (not x10286))
+:assumption (or (not x17769) (not x30020))
+:assumption (or x1201 (not x964))
+:assumption (or (not x7) (not x11554))
+:assumption (or (not x10288) (not x29865))
+:assumption (or x22486 x19681)
+:assumption (or x27486 x18069)
+:assumption (or x14357 x28902)
+:assumption (or (not x15928) x30138)
+:assumption (or (not x17442) (not x1647))
+:assumption (or x25366 x20388)
+:assumption (or x3016 (not x3860))
+:assumption (or (not x29020) x18869)
+:assumption (or x25084 (not x22359))
+:assumption (or x5028 (not x15132))
+:assumption (or x1564 x22145 x20325)
+:assumption (or (not x14588) x2299)
+:assumption (or (not x30054) (not x2160))
+:assumption (or (not x20796) x22529)
+:assumption (or (not x9379) (not x30254))
+:assumption (or x18293 x31087)
+:assumption (or x10556 x7351)
+:assumption (or (not x15895) x3079)
+:assumption (or (not x8312) (not x23869) x21815)
+:assumption (or x12920 (not x14963))
+:assumption (or (not x18714) x28799 x14447 x10463 x21699 x19415 x6788 (not x6844) x26584)
+:assumption (or x773 (not x29093))
+:assumption (or x5447 x22419)
+:assumption (or (not x9394) (not x7175))
+:assumption (or x14401 (not x25786))
+:assumption (or (not x13844) (not x14523))
+:assumption (or (not x14066) x14407)
+:assumption (or (not x29665) (not x20501))
+:assumption (or (not x22202) (not x20056))
+:assumption (or x841 (not x11840))
+:assumption (or (not x17996) x10081)
+:assumption (or x23947 (not x11520))
+:assumption (or (not x5360) (not x1205))
+:assumption (or x17109 (not x7837))
+:assumption (or x20156 x2630)
+:assumption (or x2747 x21298 x15799 (not x17562))
+:assumption (or (not x21260) x25206)
+:assumption (or (not x9584) x3782)
+:assumption (or (not x2060) (not x20128))
+:assumption (or (not x23370) (not x1652))
+:assumption (or (not x6540) (not x18489))
+:assumption (or x10924 (not x9524))
+:assumption (or x8031 (not x25577))
+:assumption (or (not x22866) x23413)
+:assumption (or x31174 x19103)
+:assumption (or (not x28867) (not x24654))
+:assumption (or x16117 x23999 (not x1836) (not x24259) (not x7293) (not x13151))
+:assumption (or x17499 x20815 (not x17585) x25008)
+:assumption (or x16284 (not x11691))
+:assumption (or x14243 (not x21561) x10053)
+:assumption (or x873 (not x4433) (not x17779) x16552 (not x21955))
+:assumption (or x19786 x28242 x9994 (not x10874))
+:assumption (or x12761 x28021)
+:assumption (or x29532 (not x27161))
+:assumption (or (not x24818) x16926)
+:assumption (or (not x26776) (not x30799) (not x30857) x20754 (not x12982))
+:assumption (or (not x16640) (not x29196))
+:assumption (or x11489 (not x30740))
+:assumption (or (not x23244) x6269)
+:assumption (or (not x7655) (not x29563))
+:assumption (or x28242 (not x26845))
+:assumption (or (not x6072) x20275)
+:assumption (or (not x9018) (not x8040) (not x17247))
+:assumption (or (not x22996) (not x15917))
+:assumption (or (not x24922) (not x19195))
+:assumption (or (not x719) (not x23922))
+:assumption (or (not x29672) x8002)
+:assumption (or (not x2030) (not x10741))
+:assumption (or (not x21174) (not x31933))
+:assumption (or (not x17702) (not x212))
+:assumption (or x3776 x181)
+:assumption (or x8002 (not x4502))
+:assumption (or x18479 (not x8862))
+:assumption (or x2921 (not x28541) (not x21911))
+:assumption (or x20482 x14314)
+:assumption (or (not x12412) x26364 (not x26029) x30094)
+:assumption (or x22787 (not x7046))
+:assumption (or (not x27502) (not x14880))
+:assumption (or (not x8630) x15838)
+:assumption (or x13101 x12942)
+:assumption (or (not x17607) (not x25582))
+:assumption (or x8002 x786)
+:assumption (or x3614 x21309)
+:assumption (or (not x4981) x21629 x13646)
+:assumption (or (not x2496) (not x17444) (not x20030) x8983 x15853 (not x28346) x22571 (not x13650))
+:assumption (or x20401 x16901)
+:assumption (or (not x19469) (not x23368))
+:assumption (or x8779 (not x10286))
+:assumption (or x22164 (not x8228))
+:assumption (or x9902 x19787)
+:assumption (or (not x4686) (not x17591))
+:assumption (or x23420 x4276 x22698 x2341)
+:assumption (or (not x26129) x24200 (not x16003))
+:assumption (or x17281 x10240 x26279 x24294 x9188 (not x9314))
+:assumption (or x17804 x22016)
+:assumption (or x28875 x6228)
+:assumption (or (not x3589) (not x14458))
+:assumption (or x4711 (not x30128))
+:assumption (or (not x9771) (not x16254))
+:assumption (or x15729 (not x11535))
+:assumption (or x419 x27859)
+:assumption (or x20620 x22978)
+:assumption (or x30580 (not x6067))
+:assumption (or (not x13956) x27975)
+:assumption (or x29782 x17359)
+:assumption (or (not x14518) x1953 x27722 x31324 x3223)
+:assumption (or (not x830) x27074)
+:assumption (or x18766 x29442)
+:assumption (or x7814 (not x18268))
+:assumption (or (not x28038) x6519)
+:assumption (or (not x28753) (not x22862) (not x10455) x5717)
+:assumption (or x27198 x27550 (not x21827) (not x24149) x9884 x10481 x21725)
+:assumption (or x2547 x11464)
+:assumption (or (not x21815) x23418)
+:assumption (or (not x6621) x24635)
+:assumption (or (not x25759) (not x16944))
+:assumption (or x21896 (not x28269))
+:assumption (or (not x8733) (not x24432))
+:assumption (or x9700 x12438)
+:assumption (or x22495 x16702)
+:assumption (or x22855 x31508)
+:assumption (or (not x24691) x10687)
+:assumption (or (not x29360) (not x29018))
+:assumption (or x18117 x19913)
+:assumption (or (not x1336) (not x13576))
+:assumption (or (not x4407) (not x13832))
+:assumption (or x31326 (not x31734))
+:assumption (or (not x12781) x29825)
+:assumption (or (not x9440) x19888 (not x12805) (not x12173))
+:assumption (or (not x12883) (not x7513))
+:assumption (or x17550 (not x6879))
+:assumption (or (not x22360) x4694)
+:assumption (or (not x18835) x25489)
+:assumption (or x25911 x23779)
+:assumption (or (not x21215) (not x17088) (not x27240))
+:assumption (or (not x762) x21556)
+:assumption (or x18222 x5454 x349)
+:assumption (or x1593 x7935)
+:assumption (or (not x27171) (not x22033))
+:assumption (or x6038 x20478 x8503 x20651 x15691 (not x29232) (not x26528))
+:assumption (or (not x20947) x7205)
+:assumption (or (not x8476) (not x29393))
+:assumption (or x8480 x15921 (not x16789) (not x25286) (not x8137) (not x10176))
+:assumption (or (not x4522) (not x31700))
+:assumption (or x11368 x9008 (not x7810))
+:assumption (or x5619 (not x21873))
+:assumption (or (not x9990) x6809)
+:assumption (or (not x22715) x2136)
+:assumption (or (not x9008) (not x23034))
+:assumption (or x11830 x21120)
+:assumption (or x26473 x5686)
+:assumption (or (not x12854) (not x23244))
+:assumption (or (not x4822) (not x13931))
+:assumption (or (not x19217) x15551 x10097 x14403)
+:assumption (or (not x26978) (not x26637))
+:assumption (or (not x2361) x16910)
+:assumption (or x17921 (not x15207))
+:assumption (or (not x15940) x2041)
+:assumption (or x28240 (not x8811))
+:assumption (or (not x26209) x25273)
+:assumption (or (not x28799) (not x6788))
+:assumption (or x430 (not x19767))
+:assumption (or x4177 x1393)
+:assumption (or x28024 x11594)
+:assumption (or (not x2214) (not x18973))
+:assumption (or (not x31829) (not x10893))
+:assumption (or (not x25627) (not x4438))
+:assumption (or (not x26669) (not x31691))
+:assumption (or (not x13895) (not x31181))
+:assumption (or (not x27330) x2179)
+:assumption (or (not x30376) (not x17499))
+:assumption (or (not x27812) (not x12860))
+:assumption (or (not x22520) (not x6263))
+:assumption (or x27111 (not x13158))
+:assumption (or x6037 x26325)
+:assumption (or (not x1671) x20101 x12267)
+:assumption (or (not x16951) (not x27335))
+:assumption (or (not x23244) (not x2440))
+:assumption (or (not x2482) x18322)
+:assumption (or (not x11660) x31289)
+:assumption (or x31759 (not x9841))
+:assumption (or (not x627) x4827)
+:assumption (or x22558 x31581 x16025)
+:assumption (or (not x5854) x2091)
+:assumption (or x27132 (not x14347) (not x30002) x26999 (not x5119) (not x26067) (not x25401))
+:assumption (or (not x14662) x8111)
+:assumption (or (not x5640) x10985 (not x14917) (not x8702) x17342)
+:assumption (or (not x30804) x10858)
+:assumption (or (not x27454) (not x18593))
+:assumption (or x1975 (not x30669) x4000 (not x18161) x14817)
+:assumption (or x28487 x14195)
+:assumption (or (not x29528) x23698)
+:assumption (or x711 x25138)
+:assumption (or (not x26272) (not x18250))
+:assumption (or x20038 (not x10949))
+:assumption (or x22509 (not x23146))
+:assumption (or x24457 x19707)
+:assumption (or (not x3684) (not x12210))
+:assumption (or x19592 x22190)
+:assumption (or (not x19530) x12997 (not x31015) x4779)
+:assumption (or (not x16620) x16019)
+:assumption (or (not x17884) x7296)
+:assumption (or (not x25012) x18222)
+:assumption (or x18593 (not x9782) x24249 x14183 x22128 x27863)
+:assumption (or (not x19487) (not x19048))
+:assumption (or (not x19988) x25818)
+:assumption (or (not x4066) (not x539))
+:assumption (or x6892 x13676)
+:assumption (or (not x13487) (not x22879))
+:assumption (or x6810 (not x499))
+:assumption (or (not x7352) (not x18003))
+:assumption (or x28657 (not x18249) (not x10037) (not x20875) x1228)
+:assumption (or (not x11962) x9469)
+:assumption (or (not x16541) x21793)
+:assumption (or (not x5083) (not x9681))
+:assumption (or (not x8372) x6150)
+:assumption (or x23958 (not x20833))
+:assumption (or (not x19526) x27199 x17734 x24035)
+:assumption (or (not x31134) x18609)
+:assumption (or x21778 (not x16741) (not x23219) (not x20272))
+:assumption (or x2004 (not x19040) (not x969) (not x8912) (not x20576) x11420 x22562 (not x21864) x1667)
+:assumption (or x28838 x23789)
+:assumption (or x11711 (not x19513))
+:assumption (or x11309 x14666 (not x21881) (not x683))
+:assumption (or x27515 x8512)
+:assumption (or (not x184) (not x29570))
+:assumption (or (not x2841) (not x4716))
+:assumption (or (not x3549) (not x26950))
+:assumption (or (not x6097) (not x25680))
+:assumption (or (not x17483) x13530)
+:assumption (or (not x19928) x7767)
+:assumption (or x28729 (not x3784))
+:assumption (or x25134 x26286)
+:assumption (or x15139 x24948)
+:assumption (or (not x10742) x12482)
+:assumption (or x10969 (not x15355))
+:assumption (or (not x2897) x11426)
+:assumption (or x12596 (not x9641))
+:assumption (or (not x27863) x30869)
+:assumption (or x12618 (not x1231))
+:assumption (or x11619 x15537)
+:assumption (or (not x2960) x12666)
+:assumption (or x29546 x23534)
+:assumption (or x2372 (not x29312) x31502)
+:assumption (or (not x18042) x21450 (not x24722) x14507)
+:assumption (or (not x27051) (not x23831) x30434)
+:assumption (or (not x14681) x21971)
+:assumption (or (not x9400) (not x6554))
+:assumption (or (not x23167) (not x10769))
+:assumption (or (not x29442) x2906 x10856)
+:assumption (or x2553 x18684)
+:assumption (or (not x27537) (not x7924) x26636)
+:assumption (or (not x11465) x26637)
+:assumption (or (not x16716) (not x21514))
+:assumption (or x1566 (not x11769))
+:assumption (or (not x8837) (not x19916))
+:assumption (or x6513 (not x28492))
+:assumption (or (not x24348) (not x5217))
+:assumption (or (not x1582) x25644)
+:assumption (or x7741 x22346)
+:assumption (or x22220 (not x10794))
+:assumption (or x14839 x24554 (not x14047))
+:assumption (or (not x1953) (not x6886) x13718)
+:assumption (or x17855 x30313)
+:assumption (or (not x8002) (not x13231))
+:assumption (or x23880 (not x29354) x8175 x83 (not x27154))
+:assumption (or x10806 (not x30015))
+:assumption (or (not x3879) (not x22869) x27295 (not x12045))
+:assumption (or x8081 (not x14362))
+:assumption (or x9194 x30856)
+:assumption (or x28364 (not x13956) x15734 x26892)
+:assumption (or x18248 x5868)
+:assumption (or x28843 (not x8267))
+:assumption (or x79 x16304)
+:assumption (or x16930 x11027)
+:assumption (or x26360 (not x25684))
+:assumption (or (not x21861) (not x15499) (not x8521) x10881 x2917)
+:assumption (or x1128 x17771)
+:assumption (or x30903 (not x30558))
+:assumption (or x28630 x30256)
+:assumption (or x218 (not x21349) (not x10644))
+:assumption (or x6650 (not x15194))
+:assumption (or x17842 x16025 (not x18942))
+:assumption (or x22508 x10967)
+:assumption (or x1325 (not x10874))
+:assumption (or x27537 (not x7893) x197)
+:assumption (or (not x7542) (not x21429))
+:assumption (or x10482 (not x27803))
+:assumption (or x5886 (not x20293))
+:assumption (or (not x21072) x23244)
+:assumption (or (not x13916) (not x23138))
+:assumption (or x10655 x16383)
+:assumption (or (not x23963) (not x10029))
+:assumption (or (not x10631) (not x31344))
+:assumption (or x19303 (not x7815))
+:assumption (or x9914 x21026 x25600 x24895 x22148)
+:assumption (or x4702 x7501)
+:assumption (or x17603 (not x5668))
+:assumption (or x10401 (not x7754))
+:assumption (or (not x24504) (not x11948))
+:assumption (or x3111 (not x20773) x25499 (not x15769) x26376 (not x16510))
+:assumption (or x25315 x5367 x27011 (not x7311))
+:assumption (or x25212 x3918)
+:assumption (or x234 (not x15043) (not x29670))
+:assumption (or x13013 (not x25366) x26182)
+:assumption (or x9093 x3056)
+:assumption (or x19386 (not x24324))
+:assumption (or x27612 x26107)
+:assumption (or (not x25117) x15032)
+:assumption (or x13676 (not x16717))
+:assumption (or (not x14240) x23244)
+:assumption (or x27869 (not x31134))
+:assumption (or x24361 (not x31926))
+:assumption (or x19132 x16003)
+:assumption (or (not x16743) (not x26773))
+:assumption (or x30138 x29363 x6692)
+:assumption (or x27973 x18410)
+:assumption (or x26051 (not x3224))
+:assumption (or x10775 (not x16510) (not x13096) (not x17534) x13516 (not x21815) (not x3435))
+:assumption (or x25911 (not x17394) (not x22550) x23964)
+:assumption (or x18226 x1102)
+:assumption (or x26572 x17593)
+:assumption (or (not x18640) x11115)
+:assumption (or (not x18584) x17980)
+:assumption (or x20889 (not x12045))
+:assumption (or (not x28935) x22488)
+:assumption (or (not x21042) x2686)
+:assumption (or (not x14567) x22227 x20971 x20243 (not x16742))
+:assumption (or x1984 (not x12272))
+:assumption (or (not x19896) (not x7135))
+:assumption (or (not x1901) (not x29458))
+:assumption (or x16613 x3212)
+:assumption (or (not x22579) x31267)
+:assumption (or (not x12952) (not x21895))
+:assumption (or x3299 x22855 (not x2526) (not x6472) x480)
+:assumption (or x26670 x23319)
+:assumption (or (not x4139) x827 x6488)
+:assumption (or x19057 (not x3492) x20740 x1847)
+:assumption (or (not x4286) (not x9008))
+:assumption (or (not x31682) x15917 x21010)
+:assumption (or (not x31240) x23738)
+:assumption (or x14544 (not x10187))
+:assumption (or (not x20255) (not x1743))
+:assumption (or (not x19130) x21422 x14877 (not x2170) x14164 (not x16329) (not x26640))
+:assumption (or x18721 (not x21929))
+:assumption (or (not x220) x7643)
+:assumption (or (not x28973) x17287)
+:assumption (or (not x1016) x23244)
+:assumption (or x29515 (not x29649))
+:assumption (or (not x9439) x11033)
+:assumption (or x4283 (not x13415))
+:assumption (or (not x23249) x8172)
+:assumption (or (not x3657) (not x19677) (not x12048))
+:assumption (or (not x25699) (not x15366) (not x25930) (not x16687))
+:assumption (or (not x11407) (not x10963))
+:assumption (or x27728 x29170)
+:assumption (or (not x29442) x8698)
+:assumption (or x23633 x27186 x13495 x23244 x8002)
+:assumption (or (not x10065) x19864 (not x9025))
+:assumption (or x9416 x30564)
+:assumption (or x2352 (not x4063))
+:assumption (or x11583 (not x26193))
+:assumption (or (not x895) (not x15762) (not x26104))
+:assumption (or (not x31563) x24329)
+:assumption (or (not x18741) (not x28973) (not x16185))
+:assumption (or (not x6992) x23493)
+:assumption (or (not x26624) x12994)
+:assumption (or x11359 (not x29998))
+:assumption (or x19263 x22759)
+:assumption (or x9004 x25153)
+:assumption (or x29312 x15045)
+:assumption (or x13957 x13548)
+:assumption (or x4845 x26448)
+:assumption (or x10815 (not x12407))
+:assumption (or x19342 x8961)
+:assumption (or (not x20638) (not x20325) x19193 x12242)
+:assumption (or x14277 (not x31581))
+:assumption (or x22774 x1420)
+:assumption (or (not x10684) (not x28338))
+:assumption (or (not x9751) x21650)
+:assumption (or (not x8527) x24835)
+:assumption (or x18901 x1011)
+:assumption (or x9271 (not x2334))
+:assumption (or (not x7093) x10612)
+:assumption (or (not x2730) (not x3392))
+:assumption (or x10586 (not x14138) x4027)
+:assumption (or x9423 (not x29741))
+:assumption (or (not x29931) (not x20929) x20028)
+:assumption (or x17515 (not x22202))
+:assumption (or x4921 x5666)
+:assumption (or (not x3595) x31076 (not x13576))
+:assumption (or x13326 (not x9213))
+:assumption (or x31592 x3110)
+:assumption (or (not x30224) (not x16639))
+:assumption (or (not x15568) (not x7653))
+:assumption (or x5202 (not x17475))
+:assumption (or (not x12481) (not x17151))
+:assumption (or (not x26428) x10115)
+:assumption (or x19501 x13956 x17664)
+:assumption (or x8673 x4497)
+:assumption (or x25237 x10874 (not x28242))
+:assumption (or (not x21039) x20969 (not x15139) (not x6127) (not x13166))
+:assumption (or (not x2845) x30256)
+:assumption (or x9881 (not x3405))
+:assumption (or x25624 (not x27104))
+:assumption (or (not x20264) x3417 x24632 (not x4098) x1552)
+:assumption (or x6969 x7938)
+:assumption (or x12619 (not x25803))
+:assumption (or (not x28749) x10782 (not x13577) (not x16893) x3308 (not x4874) x16049 (not x28689) x18439)
+:assumption (or x29368 x23048)
+:assumption (or (not x10702) (not x21208))
+:assumption (or x30475 x16366)
+:assumption (or (not x21648) (not x28657))
+:assumption (or (not x22818) x20434)
+:assumption (or x21815 x7774)
+:assumption (or (not x10920) (not x21416))
+:assumption (or (not x28830) (not x5268))
+:assumption (or (not x20435) x8281)
+:assumption (or (not x11788) x27911)
+:assumption (or (not x13056) (not x15022) x1036 (not x27015))
+:assumption (or (not x30756) x8470)
+:assumption (or x12913 x8353)
+:assumption (or (not x5528) x13318)
+:assumption (or (not x7126) (not x2397))
+:assumption (or x20249 x23244 (not x14695) x8002 x514 x13956)
+:assumption (or x25031 x8713)
+:assumption (or x10937 (not x17196))
+:assumption (or x20134 x25998 x11825)
+:assumption (or x30241 (not x12474))
+:assumption (or x30532 x14381)
+:assumption (or (not x18459) (not x5995))
+:assumption (or x30760 x2657)
+:assumption (or (not x26976) (not x30736))
+:assumption (or (not x10992) (not x22080))
+:assumption (or (not x4165) (not x23598))
+:assumption (or x11026 x15755)
+:assumption (or x12006 (not x23619))
+:assumption (or x13117 x27872)
+:assumption (or x6540 (not x8939) x10909)
+:assumption (or x28165 x16570)
+:assumption (or x12465 (not x14653))
+:assumption (or (not x25656) x24705)
+:assumption (or (not x1120) (not x6930))
+:assumption (or x10609 (not x17689))
+:assumption (or (not x26001) x31581)
+:assumption (or (not x13956) x16809 x29333 (not x14046))
+:assumption (or x21434 (not x13956))
+:assumption (or x6235 x4532)
+:assumption (or x27242 x25675)
+:assumption (or x15995 x6593 x24150 (not x12378) (not x25642) x17335)
+:assumption (or x2288 x17573)
+:assumption (or (not x23086) (not x20066))
+:assumption (or (not x30563) x3342)
+:assumption (or x24227 (not x23386))
+:assumption (or x11100 x26842)
+:assumption (or (not x4280) (not x19614))
+:assumption (or x14687 (not x31900))
+:assumption (or x23512 x14810)
+:assumption (or x5224 (not x10464))
+:assumption (or (not x16364) (not x21307))
+:assumption (or x940 (not x25843) x22855)
+:assumption (or (not x15990) x23054)
+:assumption (or x31338 (not x25182))
+:assumption (or (not x8002) (not x18520))
+:assumption (or (not x14138) x22695)
+:assumption (or x23244 (not x25778) x31161)
+:assumption (or x23153 (not x12047))
+:assumption (or x24157 x8744)
+:assumption (or x26774 (not x2659))
+:assumption (or (not x9456) x15917)
+:assumption (or x30885 x17913)
+:assumption (or (not x1267) (not x17172) x3839 (not x3077) x23583)
+:assumption (or x30935 (not x12450) x27441)
+:assumption (or x5462 (not x23412))
+:assumption (or x25754 x19916)
+:assumption (or x5906 x29566)
+:assumption (or (not x18730) x4143)
+:assumption (or (not x96) (not x25350))
+:assumption (or x14640 (not x25366))
+:assumption (or x8615 (not x22055))
+:assumption (or (not x3416) (not x15227))
+:assumption (or (not x8398) x23958)
+:assumption (or x5997 x30935)
+:assumption (or x760 x6690)
+:assumption (or (not x9414) (not x24077))
+:assumption (or x10759 x28195)
+:assumption (or x24990 x2637)
+:assumption (or x12925 (not x28682))
+:assumption (or (not x10582) x20860)
+:assumption (or x398 x20625)
+:assumption (or x17433 x21538)
+:assumption (or x26879 x13956)
+:assumption (or (not x15917) (not x7456))
+:assumption (or (not x2709) x27671)
+:assumption (or (not x18946) (not x30725))
+:assumption (or (not x12002) (not x20392))
+:assumption (or x7849 (not x23049))
+:assumption (or x29090 (not x8027))
+:assumption (or x15215 x22057)
+:assumption (or (not x4046) (not x6168))
+:assumption (or (not x6418) x19554)
+:assumption (or (not x11542) x16707)
+:assumption (or x11139 (not x13956) (not x7012) (not x12588))
+:assumption (or x1098 x20636)
+:assumption (or x8317 x5809)
+:assumption (or x8276 x22424)
+:assumption (or (not x11966) (not x26443) (not x13890) x30461 (not x2285) x4528 (not x20925) x29524 (not x14220))
+:assumption (or (not x4338) x20852)
+:assumption (or (not x16304) x1404)
+:assumption (or x15362 (not x26626))
+:assumption (or x29129 x8729)
+:assumption (or x7414 (not x28866))
+:assumption (or (not x1877) x5809)
+:assumption (or (not x18624) (not x530))
+:assumption (or (not x6216) (not x18910))
+:assumption (or (not x12860) x9074)
+:assumption (or (not x24573) (not x1601))
+:assumption (or x8616 (not x7272))
+:assumption (or (not x18928) (not x9754))
+:assumption (or (not x15412) (not x17571) x27998)
+:assumption (or (not x30925) x25863)
+:assumption (or x28241 x25277)
+:assumption (or x28955 (not x23139))
+:assumption (or (not x5528) x10677)
+:assumption (or (not x27790) (not x6631))
+:assumption (or (not x13061) (not x12249))
+:assumption (or (not x26551) x23641)
+:assumption (or (not x3429) x18095)
+:assumption (or (not x9362) x22642)
+:assumption (or (not x6222) x4393)
+:assumption (or (not x3845) x14924)
+:assumption (or x10642 x7609)
+:assumption (or (not x3435) (not x15722))
+:assumption (or (not x8830) x31521)
+:assumption (or x30070 (not x21298) x12114 (not x19316))
+:assumption (or (not x8641) x27853)
+:assumption (or x13236 (not x29945))
+:assumption (or x6068 (not x6789))
+:assumption (or (not x8253) x15521)
+:assumption (or (not x7292) (not x18449))
+:assumption (or x9064 (not x11650))
+:assumption (or x13622 (not x3329) (not x2288) x4428)
+:assumption (or (not x25048) x16398)
+:assumption (or (not x23080) x21815 (not x12362))
+:assumption (or (not x24887) x9882)
+:assumption (or (not x2026) (not x169))
+:assumption (or (not x14839) (not x14308))
+:assumption (or x16025 x15269 (not x13576))
+:assumption (or x23504 (not x25283))
+:assumption (or x19572 x7111)
+:assumption (or x20907 x5258)
+:assumption (or (not x11040) x7230)
+:assumption (or (not x31317) x7762)
+:assumption (or (not x4865) x16034)
+:assumption (or (not x21591) (not x22117))
+:assumption (or (not x29848) x23691 (not x9008))
+:assumption (or x5969 x4166 (not x18859))
+:assumption (or (not x21696) x16832)
+:assumption (or x6289 (not x18235))
+:assumption (or x20118 (not x22971))
+:assumption (or x3453 x18701 x7240 x4552 (not x11403))
+:assumption (or (not x5467) (not x24386))
+:assumption (or x10037 x17883)
+:assumption (or (not x4057) x16304)
+:assumption (or x16781 x1722)
+:assumption (or (not x1582) x22425)
+:assumption (or (not x25315) (not x13579))
+:assumption (or x3657 x12048)
+:assumption (or (not x19276) (not x12255))
+:assumption (or x27581 (not x16394))
+:assumption (or x11331 (not x30290))
+:assumption (or x6857 x8967)
+:assumption (or x30647 x482)
+:assumption (or x4252 x23286)
+:assumption (or (not x7835) (not x5187))
+:assumption (or (not x7124) (not x14510))
+:assumption (or (not x3820) (not x23118))
+:assumption (or x21815 (not x22996))
+:assumption (or x5243 (not x24039))
+:assumption (or (not x25616) (not x16304) (not x13506) (not x15795))
+:assumption (or (not x22823) (not x11575))
+:assumption (or (not x11007) x23244)
+:assumption (or x13602 x6747)
+:assumption (or x11124 x9821)
+:assumption (or (not x3453) x16561)
+:assumption (or x4380 (not x16275))
+:assumption (or (not x30349) x451)
+:assumption (or (not x26601) x11399)
+:assumption (or x288 x31038)
+:assumption (or (not x4597) x145)
+:assumption (or x30512 x2829)
+:assumption (or (not x28072) x14083)
+:assumption (or x22254 x14823)
+:assumption (or x25834 (not x27349))
+:assumption (or x8214 x27518)
+:assumption (or x1045 x1052 (not x20210) x26166 (not x2855) (not x9928) (not x5593))
+:assumption (or x13233 x203)
+:assumption (or (not x6969) (not x16433))
+:assumption (or (not x5791) x2742)
+:assumption (or x24194 (not x2396))
+:assumption (or x7537 (not x18579))
+:assumption (or x7687 x3270 x202 (not x23609) (not x6795))
+:assumption (or x6865 (not x2681))
+:assumption (or (not x9430) x27688 x10336)
+:assumption (or (not x781) (not x27872))
+:assumption (or x25376 (not x11847) (not x18808))
+:assumption (or (not x30627) (not x17807))
+:assumption (or (not x16556) x18694 (not x31104))
+:assumption (or (not x22644) (not x1519))
+:assumption (or (not x10934) x31219 (not x15025) x6149)
+:assumption (or (not x422) x27573)
+:assumption (or x20475 (not x30157))
+:assumption (or x27877 (not x30933))
+:assumption (or (not x6384) (not x688))
+:assumption (or x25406 (not x208))
+:assumption (or (not x26945) (not x30476))
+:assumption (or x6710 x28856 (not x24722))
+:assumption (or x20576 x26172 x18863 (not x23830))
+:assumption (or x19932 x18698)
+:assumption (or x26917 (not x29771))
+:assumption (or (not x27108) (not x4893))
+:assumption (or x27960 x25395)
+:assumption (or x14818 (not x18750))
+:assumption (or x17381 (not x3501))
+:assumption (or x28043 x615)
+:assumption (or x14206 (not x24444))
+:assumption (or x4388 (not x18612))
+:assumption (or (not x7313) (not x466))
+:assumption (or (not x16588) (not x9043))
+:assumption (or (not x30153) (not x5890))
+:assumption (or (not x26836) x9661 (not x30303) x768 x3407 (not x25280) (not x19356) x24883)
+:assumption (or x6541 (not x26735))
+:assumption (or (not x21365) (not x29977))
+:assumption (or (not x4908) x20562)
+:assumption (or x15745 (not x9932))
+:assumption (or (not x14422) (not x5898))
+:assumption (or (not x10740) x9008)
+:assumption (or (not x9529) (not x25143))
+:assumption (or (not x25874) (not x9303))
+:assumption (or (not x30377) (not x12978))
+:assumption (or x5366 x29312)
+:assumption (or (not x8602) x22749 x5022)
+:assumption (or x30052 x25315)
+:assumption (or (not x15013) (not x3168))
+:assumption (or x30303 (not x9661))
+:assumption (or x14122 (not x15274))
+:assumption (or x5951 (not x24376))
+:assumption (or x26132 x28571)
+:assumption (or (not x18254) (not x2363))
+:assumption (or (not x24411) (not x28724))
+:assumption (or x12933 (not x5467))
+:assumption (or (not x12431) x31664)
+:assumption (or (not x13111) (not x26107) (not x29842))
+:assumption (or (not x14423) (not x27630))
+:assumption (or x17102 (not x26352))
+:assumption (or (not x9008) x10198)
+:assumption (or (not x27719) x7203)
+:assumption (or x7158 (not x28091))
+:assumption (or (not x3645) (not x8063))
+:assumption (or x6141 x4119)
+:assumption (or x30131 (not x13257))
+:assumption (or x30281 x5528)
+:assumption (or (not x1706) (not x29842))
+:assumption (or x17739 (not x5648))
+:assumption (or x26222 (not x17126))
+:assumption (or x3110 (not x30257))
+:assumption (or x1767 x21267 x19140 (not x17438) (not x11929) x17489 (not x15221))
+:assumption (or (not x12009) (not x22802))
+:assumption (or (not x7559) x15362)
+:assumption (or x23579 x15352)
+:assumption (or (not x31833) x8097)
+:assumption (or x22514 x11937)
+:assumption (or x16865 (not x18378))
+:assumption (or x18662 (not x24954))
+:assumption (or (not x2510) x18335)
+:assumption (or x3379 (not x16585))
+:assumption (or (not x20850) (not x22789))
+:assumption (or x3242 (not x16975) x14839)
+:assumption (or x27472 x3263)
+:assumption (or (not x6606) (not x30045))
+:assumption (or x16120 (not x10373))
+:assumption (or x16185 (not x14397))
+:assumption (or x23888 x23291)
+:assumption (or x19526 x29478)
+:assumption (or (not x27577) (not x16599))
+:assumption (or (not x20979) x21627)
+:assumption (or (not x29257) x11437 x24213 (not x15749))
+:assumption (or (not x13948) (not x7029))
+:assumption (or x5025 (not x9150) (not x27444) x3892)
+:assumption (or x11857 x14959 x18692)
+:assumption (or (not x3743) (not x29649))
+:assumption (or (not x7934) x25703)
+:assumption (or (not x27233) (not x31414))
+:assumption (or (not x30002) (not x24280) (not x14347) (not x21588))
+:assumption (or (not x7370) x25966)
+:assumption (or (not x15561) (not x2845))
+:assumption (or (not x15012) x363)
+:assumption (or x23591 x13956)
+:assumption (or x10644 (not x27634))
+:assumption (or (not x11970) x6999)
+:assumption (or x21822 (not x16892))
+:assumption (or x14552 x13576 x15247)
+:assumption (or x10729 x18016)
+:assumption (or (not x6385) x25532)
+:assumption (or (not x9008) x10719)
+:assumption (or x21837 (not x22877))
+:assumption (or (not x6171) x18319)
+:assumption (or (not x23828) (not x17750))
+:assumption (or x28734 (not x18800))
+:assumption (or x2578 x30337)
+:assumption (or (not x9004) x30407 x27524 x21932 (not x643) (not x15461) (not x21459))
+:assumption (or x6943 (not x18159))
+:assumption (or x8002 x13175)
+:assumption (or (not x9010) x21653)
+:assumption (or x10646 (not x12493))
+:assumption (or x15937 (not x26499))
+:assumption (or (not x17179) (not x29450))
+:assumption (or (not x25063) x23381)
+:assumption (or (not x29039) (not x407))
+:assumption (or x23917 (not x22737))
+:assumption (or (not x14578) x6161)
+:assumption (or x10258 (not x28146))
+:assumption (or (not x20535) (not x6344))
+:assumption (or x17797 x3797)
+:assumption (or (not x25659) (not x1705))
+:assumption (or x6171 (not x28973) x12950)
+:assumption (or (not x11855) x11519)
+:assumption (or x24163 (not x18496) x24775 x28469)
+:assumption (or (not x18003) x6423 (not x29339))
+:assumption (or x16500 x12039)
+:assumption (or x8570 x11224)
+:assumption (or (not x5886) (not x29304) x24423 x5686 (not x12456) x29695)
+:assumption (or x5709 (not x19411))
+:assumption (or (not x14449) x13871 x16773 (not x30846) (not x31116) (not x17609))
+:assumption (or (not x10874) (not x19476))
+:assumption (or x18466 (not x23513) x11160 x26495 x20934 x892 x5691 x17576)
+:assumption (or x13175 x22162)
+:assumption (or x7463 (not x29918))
+:assumption (or (not x13035) x9835)
+:assumption (or (not x17861) (not x26435))
+:assumption (or (not x26792) x23772)
+:assumption (or x29157 x13227)
+:assumption (or x9909 x18572)
+:assumption (or x21391 x31343)
+:assumption (or x22461 (not x29572))
+:assumption (or (not x27139) (not x19226))
+:assumption (or x16024 (not x3454))
+:assumption (or (not x7719) (not x28342) (not x30374))
+:assumption (or (not x22716) (not x16332))
+:assumption (or x2198 (not x3009))
+:assumption (or x22645 x3466)
+:assumption (or x18507 x23747 (not x7176) x877 (not x28541) x31760 (not x7345) x13683 x1444)
+:assumption (or (not x22374) (not x19911))
+:assumption (or x19992 x25659 x12898 (not x12176) (not x29312))
+:assumption (or x16795 (not x22762))
+:assumption (or (not x31907) (not x10621))
+:assumption (or x5752 x24853)
+:assumption (or x25384 x23363 x13835 x23142)
+:assumption (or x3541 (not x4257))
+:assumption (or x10711 x13226)
+:assumption (or x19297 x22311)
+:assumption (or (not x12910) (not x7894))
+:assumption (or x14953 (not x13747))
+:assumption (or x28978 (not x20625) (not x8690) (not x20924) (not x5941))
+:assumption (or (not x5965) x28461)
+:assumption (or (not x2105) (not x7012))
+:assumption (or (not x18238) (not x13979) (not x10375) x5216 (not x6960))
+:assumption (or (not x8715) (not x22855) (not x23244))
+:assumption (or x26769 (not x2152))
+:assumption (or (not x830) (not x4377) x11678 x7896)
+:assumption (or x29295 x14890)
+:assumption (or (not x11518) (not x21815) (not x29760) x16304 x142 x16510 (not x9065))
+:assumption (or x31429 x1907)
+:assumption (or (not x31220) x14714)
+:assumption (or x1192 (not x7150))
+:assumption (or (not x30064) x18519)
+:assumption (or x29693 x8167)
+:assumption (or (not x10632) (not x18072))
+:assumption (or (not x18912) (not x19428))
+:assumption (or (not x15939) (not x18769))
+:assumption (or (not x8132) (not x31698))
+:assumption (or x31829 (not x3041))
+:assumption (or x6341 (not x9977))
+:assumption (or (not x14081) x12108)
+:assumption (or (not x806) x12045 (not x22537))
+:assumption (or x8024 x15640)
+:assumption (or x6688 (not x11269))
+:assumption (or x11188 x5941)
+:assumption (or (not x30887) (not x29151) (not x24761))
+:assumption (or (not x31032) (not x27284))
+:assumption (or (not x21193) x23189)
+:assumption (or x14828 x157)
+:assumption (or (not x24461) (not x21449))
+:assumption (or x30521 x19705 x8689 x23757 x13131 (not x6830) (not x11017))
+:assumption (or x31180 x28509)
+:assumption (or (not x17699) x26750)
+:assumption (or x6374 x24008)
+:assumption (or (not x10874) (not x2982))
+:assumption (or x22918 (not x495))
+:assumption (or (not x1282) (not x9758))
+:assumption (or x15373 (not x15574) x1393)
+:assumption (or x29870 (not x16625) (not x2543) x11038 (not x26348))
+:assumption (or x13197 (not x18942) (not x21653))
+:assumption (or (not x22844) x24296)
+:assumption (or (not x27034) (not x2716) x8305 x9298 x22849 (not x16491))
+:assumption (or (not x5057) (not x5247))
+:assumption (or x1582 (not x17588) (not x13117))
+:assumption (or (not x5098) (not x30332))
+:assumption (or x4008 x3763)
+:assumption (or x10200 x31927 x6969 x4696)
+:assumption (or (not x947) (not x21492))
+:assumption (or (not x31739) (not x23715))
+:assumption (or (not x12268) x29052)
+:assumption (or x13616 (not x8002))
+:assumption (or (not x982) x27666)
+:assumption (or (not x16203) x4505)
+:assumption (or (not x17193) x26265)
+:assumption (or x2960 x21368 (not x22615) x12998)
+:assumption (or x2035 x1547 x9531 (not x19241))
+:assumption (or (not x27479) (not x13287))
+:assumption (or x20706 (not x28132))
+:assumption (or x14429 (not x18800))
+:assumption (or x11414 x9008 (not x998))
+:assumption (or x26982 (not x22740))
+:assumption (or x17092 (not x4513) x6089 (not x22146))
+:assumption (or (not x19830) x31253)
+:assumption (or (not x1207) x10158)
+:assumption (or x16510 x28139)
+:assumption (or x29525 (not x11249))
+:assumption (or (not x27167) (not x11768))
+:assumption (or x7493 x21075 x28708)
+:assumption (or (not x367) (not x30160))
+:assumption (or (not x6664) x12589)
+:assumption (or x1592 x12923)
+:assumption (or x9694 x22764)
+:assumption (or x20686 x8731 (not x3042) (not x3729) x10780 (not x7887))
+:assumption (or x31777 x27096)
+:assumption (or (not x27303) x12698)
+:assumption (or x2726 x16041)
+:assumption (or x8002 x13157)
+:assumption (or (not x2592) (not x9553))
+:assumption (or (not x7481) (not x16604))
+:assumption (or (not x1023) x9339)
+:assumption (or (not x31829) x29215)
+:assumption (or x725 (not x12851))
+:assumption (or x14465 (not x5441))
+:assumption (or x6001 (not x30945))
+:assumption (or (not x2303) x16185 x27281 x12783 x6528)
+:assumption (or x3373 x4728)
+:assumption (or (not x30467) (not x29774))
+:assumption (or x31896 (not x520))
+:assumption (or x19204 (not x9008) (not x30969))
+:assumption (or (not x8586) (not x25682))
+:assumption (or x12110 x25008)
+:assumption (or (not x12480) (not x23022))
+:assumption (or x19984 (not x30026))
+:assumption (or (not x14316) x9317)
+:assumption (or x24412 (not x22078))
+:assumption (or x873 x17773 x19314)
+:assumption (or (not x269) (not x28248))
+:assumption (or x9074 x13614)
+:assumption (or x31893 (not x24799))
+:assumption (or (not x7518) x14983)
+:assumption (or (not x4642) x30186)
+:assumption (or x23307 x9832)
+:assumption (or x30226 x29459)
+:assumption (or (not x1448) x30393)
+:assumption (or x15016 x21167)
+:assumption (or (not x16092) (not x8002))
+:assumption (or (not x21073) x8871 (not x7776) (not x15105) (not x21223) (not x10973) x4635 (not x5708))
+:assumption (or (not x1505) x15744)
+:assumption (or (not x11389) x19701)
+:assumption (or x4343 (not x12747))
+:assumption (or (not x30982) (not x19048))
+:assumption (or x16510 x13947)
+:assumption (or (not x18814) (not x19864) x18003 x7352 x1820 (not x7286))
+:assumption (or x7835 x6071)
+:assumption (or (not x8294) (not x18827))
+:assumption (or (not x10748) (not x18335) x21173)
+:assumption (or (not x1308) (not x24031))
+:assumption (or (not x20706) x28132 x26432)
+:assumption (or (not x19184) x24121)
+:assumption (or x20223 x7219)
+:assumption (or x29976 (not x5031))
+:assumption (or x29191 x15356)
+:assumption (or (not x19629) x11377)
+:assumption (or x12517 x26058)
+:assumption (or x27547 (not x5089))
+:assumption (or (not x178) (not x20263))
+:assumption (or (not x17280) x827 x5292)
+:assumption (or x9531 (not x21415) x31003 x1547)
+:assumption (or x30240 x3201)
+:assumption (or x29279 x21368)
+:assumption (or x26451 (not x29033) (not x11401) x28755 x26149 (not x5528))
+:assumption (or x28919 (not x16257))
+:assumption (or (not x11892) (not x30045))
+:assumption (or x14872 x3860)
+:assumption (or x21799 (not x18910))
+:assumption (or x29442 x5491)
+:assumption (or x25366 (not x48))
+:assumption (or x27489 x21298)
+:assumption (or (not x30219) (not x4855))
+:assumption (or x6940 x25784)
+:assumption (or (not x14856) (not x4909))
+:assumption (or (not x12971) (not x1000))
+:assumption (or x4399 x25151)
+:assumption (or (not x29297) x16374)
+:assumption (or x26102 x14019)
+:assumption (or x24879 (not x17394))
+:assumption (or (not x30443) (not x13406))
+:assumption (or (not x27636) x30499)
+:assumption (or (not x13899) x25817)
+:assumption (or (not x11723) x25240)
+:assumption (or x9503 x3494)
+:assumption (or (not x984) x21060)
+:assumption (or (not x10240) x5396)
+:assumption (or x25659 (not x30542) x12354)
+:assumption (or x14481 (not x18590))
+:assumption (or (not x25423) (not x20461))
+:assumption (or (not x27226) (not x13601))
+:assumption (or (not x26852) x14547)
+:assumption (or x27851 (not x9334))
+:assumption (or x19595 (not x13562))
+:assumption (or (not x31094) x1407)
+:assumption (or (not x10166) (not x24395))
+:assumption (or x30222 (not x22795))
+:assumption (or x16199 x25037)
+:assumption (or (not x21561) (not x17285))
+:assumption (or (not x1514) x16641)
+:assumption (or (not x9906) (not x1245))
+:assumption (or x17589 x3678)
+:assumption (or (not x25903) (not x25177))
+:assumption (or x30596 (not x2567))
+:assumption (or x22011 x17689 x30855 (not x29727) (not x30515) x26914 x22186 x17448)
+:assumption (or (not x1709) x6607)
+:assumption (or x25053 (not x7846))
+:assumption (or x30791 x27388)
+:assumption (or x29135 x543)
+:assumption (or (not x30194) (not x23083))
+:assumption (or x27696 x17073 x2592)
+:assumption (or x31326 (not x7598))
+:assumption (or x19992 x9620)
+:assumption (or x9231 x16919)
+:assumption (or x22913 (not x10939) x24172 x12973)
+:assumption (or x24364 (not x27497))
+:assumption (or x14786 (not x5840))
+:assumption (or (not x4217) (not x4352))
+:assumption (or (not x8563) (not x24454))
+:assumption (or (not x12950) (not x6171))
+:assumption (or (not x17290) x9273)
+:assumption (or x16648 (not x6514) x9216 x31799)
+:assumption (or (not x620) (not x15029))
+:assumption (or (not x15050) (not x1392))
+:assumption (or (not x28145) x12494)
+:assumption (or x20985 x1621)
+:assumption (or (not x7179) x14442)
+:assumption (or x30856 (not x28891))
+:assumption (or (not x12621) (not x19334))
+:assumption (or (not x22223) x3304)
+:assumption (or (not x11783) (not x2123))
+:assumption (or (not x479) (not x24584))
+:assumption (or x12592 (not x5166))
+:assumption (or (not x13215) x14854)
+:assumption (or x13279 (not x25659) x5513)
+:assumption (or x30941 x13018)
+:assumption (or x11042 (not x21796) x25878)
+:assumption (or x12088 x5251)
+:assumption (or (not x21298) x29163)
+:assumption (or x10874 x3233)
+:assumption (or x17889 x21972 x11751 x29649 x5319 (not x7496))
+:assumption (or x21641 x7862 x4551 x480 (not x19946) (not x3228))
+:assumption (or x31628 x12019)
+:assumption (or x11539 x10817)
+:assumption (or x28958 (not x11488))
+:assumption (or (not x2241) (not x19012))
+:assumption (or x23244 x30620)
+:assumption (or (not x827) x10420)
+:assumption (or (not x22614) (not x6967))
+:assumption (or (not x27928) (not x26744))
+:assumption (or x722 (not x2375) x22599 (not x16510) (not x4449) (not x26787))
+:assumption (or x22343 (not x14591))
+:assumption (or (not x6871) (not x20649))
+:assumption (or (not x31551) x23134)
+:assumption (or (not x20977) x13156)
+:assumption (or x14996 x7106)
+:assumption (or x8977 (not x26648))
+:assumption (or x18334 x29685)
+:assumption (or (not x29320) (not x28885))
+:assumption (or x31871 (not x13450))
+:assumption (or (not x28196) x12038)
+:assumption (or x28703 (not x27149) (not x28459) x7824 (not x27301) x31691 (not x26998) (not x21658))
+:assumption (or x10017 (not x5537))
+:assumption (or x17177 (not x24979))
+:assumption (or (not x20968) x10064)
+:assumption (or x6867 x29489)
+:assumption (or x6128 x7409)
+:assumption (or (not x5523) x28610)
+:assumption (or x24138 (not x16857))
+:assumption (or (not x24174) (not x4413))
+:assumption (or (not x10916) x22666)
+:assumption (or x27380 x6594)
+:assumption (or (not x17308) x30338)
+:assumption (or x9621 (not x6010))
+:assumption (or x26782 (not x23091))
+:assumption (or x10072 (not x29742))
+:assumption (or x26565 x12541)
+:assumption (or x31489 (not x169) x27335 (not x2508) x16951 x12852 (not x16610))
+:assumption (or x439 (not x29959))
+:assumption (or (not x14611) x1061)
+:assumption (or x9881 x10350)
+:assumption (or (not x23763) (not x22207))
+:assumption (or x24155 (not x2944) x8899 x1401)
+:assumption (or (not x24914) x17312)
+:assumption (or x8081 (not x23573))
+:assumption (or x15708 (not x29959))
+:assumption (or (not x23193) x22064 x16263)
+:assumption (or (not x27265) (not x27926) x31419)
+:assumption (or (not x11597) (not x11688))
+:assumption (or x19120 x23370)
+:assumption (or x13316 (not x23316) (not x16809) x7373)
+:assumption (or (not x23143) (not x18971))
+:assumption (or (not x25013) (not x13123))
+:assumption (or (not x30805) (not x23970))
+:assumption (or x8030 x29058)
+:assumption (or (not x11200) (not x29368) (not x6767))
+:assumption (or (not x4933) (not x16304) x3589)
+:assumption (or x27495 x31548 (not x15749))
+:assumption (or (not x24776) x29011)
+:assumption (or (not x18508) x2924)
+:assumption (or x5906 x5394)
+:assumption (or x20134 (not x22659))
+:assumption (or (not x6275) x15113)
+:assumption (or (not x14455) (not x18195))
+:assumption (or x5886 x19011)
+:assumption (or x16910 x26871)
+:assumption (or (not x1089) (not x22791))
+:assumption (or (not x1117) x11639)
+:assumption (or x10113 x7211)
+:assumption (or x9008 x2748 (not x15976))
+:assumption (or x27908 x25659)
+:assumption (or x24145 x22649)
+:assumption (or (not x26853) (not x14027))
+:assumption (or x4465 (not x12451))
+:assumption (or x15493 x23586)
+:assumption (or x27266 x1095)
+:assumption (or (not x6548) x2418)
+:assumption (or (not x26175) x22069)
+:assumption (or x8602 x19436)
+:assumption (or x7428 (not x3516))
+:assumption (or (not x24155) (not x16736))
+:assumption (or (not x20840) (not x3136))
+:assumption (or (not x25674) x1304)
+:assumption (or x14307 x3360)
+:assumption (or (not x12601) x17396)
+:assumption (or (not x801) x15361)
+:assumption (or x11225 x4033 (not x28919) (not x31187) (not x1818) (not x12923) (not x23905) (not x19173) (not x15026))
+:assumption (or x26403 (not x17548))
+:assumption (or x29900 (not x15930))
+:assumption (or x5528 (not x970))
+:assumption (or (not x11486) (not x2950))
+:assumption (or x15241 x816)
+:assumption (or (not x12298) x2456)
+:assumption (or (not x12456) x24423 (not x5437) x5686 (not x29304) x30432)
+:assumption (or x28649 x30303)
+:assumption (or x10740 (not x19082))
+:assumption (or (not x22169) x10365 (not x21298))
+:assumption (or x13725 x19176)
+:assumption (or x15009 x30475)
+:assumption (or (not x19580) x13120)
+:assumption (or x27785 (not x4824))
+:assumption (or x16802 (not x20828))
+:assumption (or (not x12264) x21609)
+:assumption (or x14793 (not x29649) (not x9664))
+:assumption (or x8438 x31682)
+:assumption (or (not x28830) x17541 x30124 (not x16510) (not x8493) x169 (not x21815))
+:assumption (or x5386 (not x20447))
+:assumption (or x23244 (not x29023) (not x391))
+:assumption (or (not x17806) (not x14732))
+:assumption (or (not x16025) x22508)
+:assumption (or (not x15795) (not x3311))
+:assumption (or (not x5819) x9275 (not x9436) x9255 x28886 x11197 x26789)
+:assumption (or (not x19595) x17184 x21431)
+:assumption (or (not x10146) (not x18859))
+:assumption (or x3697 x25968)
+:assumption (or (not x17635) x14262)
+:assumption (or (not x19643) x6133)
+:assumption (or (not x349) (not x24765))
+:assumption (or (not x3760) (not x28130))
+:assumption (or x28263 (not x31829))
+:assumption (or (not x4666) (not x19330))
+:assumption (or (not x1920) x18903)
+:assumption (or x18910 (not x18420) (not x21799) (not x3343))
+:assumption (or (not x10599) (not x22841))
+:assumption (or (not x16910) x25036)
+:assumption (or (not x16224) (not x7286))
+:assumption (or (not x20183) (not x19037) (not x18852) x12798 x28965 (not x1789))
+:assumption (or x10604 (not x5305))
+:assumption (or (not x12232) (not x2549))
+:assumption (or (not x15357) x14684)
+:assumption (or x23687 (not x18129) x31248)
+:assumption (or (not x22857) (not x24311))
+:assumption (or x5165 (not x20767))
+:assumption (or x7807 x1452)
+:assumption (or (not x5037) (not x17994))
+:assumption (or (not x21937) x7986)
+:assumption (or (not x8376) x24609)
+:assumption (or (not x9008) (not x1931))
+:assumption (or x13278 (not x23268))
+:assumption (or x11281 (not x5661))
+:assumption (or x30088 x22548)
+:assumption (or (not x1671) (not x7068) (not x7379))
+:assumption (or x19818 x6321 x12716 x25353 x18207)
+:assumption (or x18085 x4829)
+:assumption (or (not x9531) x30602)
+:assumption (or x19211 x8002)
+:assumption (or x24735 x23687)
+:assumption (or x24855 x22326)
+:assumption (or x30492 (not x8035))
+:assumption (or (not x21649) (not x16025))
+:assumption (or (not x30226) x25606)
+:assumption (or (not x21101) (not x4479))
+:assumption (or (not x19428) (not x20121))
+:assumption (or (not x5938) (not x3663) (not x17673) x17131)
+:assumption (or (not x24024) x10874 (not x5594) (not x6381) (not x3236) x15977 x13795 (not x6307))
+:assumption (or (not x12098) x6351)
+:assumption (or x28637 x2774)
+:assumption (or (not x3478) x25236)
+:assumption (or (not x21706) (not x21633) (not x25277) x16734)
+:assumption (or (not x7392) (not x9458))
+:assumption (or x3421 (not x21099))
+:assumption (or x9008 (not x12731))
+:assumption (or x6898 (not x30950))
+:assumption (or (not x28048) (not x6969))
+:assumption (or (not x9049) x20459)
+:assumption (or x10135 (not x8494))
+:assumption (or x2193 (not x26897))
+:assumption (or x24296 (not x15363))
+:assumption (or (not x18464) (not x8799) x5528)
+:assumption (or (not x4303) x10509)
+:assumption (or x19072 x5874 (not x12949) x1169 (not x15493) (not x17899) (not x23586) x13079)
+:assumption (or (not x13671) x30793)
+:assumption (or (not x15643) (not x18912))
+:assumption (or (not x12807) (not x6837))
+:assumption (or (not x25407) (not x10266))
+:assumption (or x1612 x22859)
+:assumption (or (not x28626) (not x22434))
+:assumption (or x10864 x23425 (not x6358) x3979 x5541)
+:assumption (or x17362 x20205)
+:assumption (or x30530 x27424 (not x28242) x30748)
+:assumption (or x9248 (not x8345))
+:assumption (or (not x16409) x24885)
+:assumption (or x28244 x20550)
+:assumption (or x18132 (not x22204))
+:assumption (or x17901 x9428)
+:assumption (or (not x9962) x22944)
+:assumption (or x30839 x6019)
+:assumption (or (not x18613) (not x2401))
+:assumption (or x1853 (not x24540) (not x28465) (not x12972))
+:assumption (or (not x9892) (not x6445))
+:assumption (or (not x15266) x9611)
+:assumption (or x5182 x24372)
+:assumption (or x23563 (not x7796) (not x12934) (not x25659) (not x21850) x16057 (not x1113) x26605)
+:assumption (or (not x2918) x24492 (not x6243))
+:assumption (or x27434 x22451)
+:assumption (or x23753 (not x31317))
+:assumption (or (not x12242) (not x20186))
+:assumption (or x26761 x7374)
+:assumption (or x3725 (not x27259))
+:assumption (or x13011 (not x1393))
+:assumption (or x28930 x4241)
+:assumption (or x15361 x24869)
+:assumption (or (not x1436) x30793)
+:assumption (or x11443 (not x24803))
+:assumption (or x7307 (not x6030))
+:assumption (or (not x18778) (not x14868))
+:assumption (or (not x29128) x22733)
+:assumption (or (not x15621) x29299)
+:assumption (or x9672 (not x1880))
+:assumption (or (not x10251) (not x23244))
+:assumption (or x5528 x13954)
+:assumption (or x9112 (not x11792))
+:assumption (or x15905 x16785)
+:assumption (or x4811 (not x4649))
+:assumption (or (not x15698) x16013 (not x17933) (not x2235) (not x7752) (not x17908) (not x15974))
+:assumption (or x3042 (not x14239))
+:assumption (or (not x3597) x12708)
+:assumption (or (not x22879) x23244)
+:assumption (or x14594 x875 (not x5394) (not x30284) x31313)
+:assumption (or x12242 x19523)
+:assumption (or x20291 (not x26800))
+:assumption (or x18224 (not x21751) (not x16024) x16801)
+:assumption (or x10401 (not x22183) (not x22120) (not x7535) x21035)
+:assumption (or (not x16039) x31453)
+:assumption (or x2349 x7210)
+:assumption (or (not x22896) (not x25138))
+:assumption (or x23358 (not x8823) (not x9907) (not x11258) x17789)
+:assumption (or (not x16245) (not x846))
+:assumption (or x8825 x10862 x11361)
+:assumption (or x1688 (not x6969))
+:assumption (or (not x13421) x24547)
+:assumption (or (not x5125) (not x17088) (not x9138) (not x10646) (not x14378) x20085)
+:assumption (or x5528 (not x14333))
+:assumption (or x5408 x5605)
+:assumption (or (not x24663) (not x24008) (not x6374) x8481)
+:assumption (or x28912 x2121 x24207)
+:assumption (or (not x19371) x5032)
+:assumption (or (not x7995) (not x8151))
+:assumption (or x4655 x17857)
+:assumption (or x23295 x29978)
+:assumption (or x18183 x2802)
+:assumption (or (not x11856) (not x1449))
+:assumption (or (not x16871) x27455)
+:assumption (or (not x15440) x13018)
+:assumption (or x20325 (not x19237))
+:assumption (or (not x22177) x30683 (not x1488) x27095)
+:assumption (or x29193 (not x19822))
+:assumption (or (not x15237) (not x30139))
+:assumption (or (not x12804) x896)
+:assumption (or x4576 (not x7906))
+:assumption (or x27872 x20410)
+:assumption (or (not x15396) x27332)
+:assumption (or x16392 x20069)
+:assumption (or x5430 x3560)
+:assumption (or (not x31694) (not x27780))
+:assumption (or x31926 (not x24361))
+:assumption (or (not x22916) x25659 x21674)
+:assumption (or (not x26427) x218)
+:assumption (or (not x26501) (not x9011))
+:assumption (or (not x480) (not x26791))
+:assumption (or x15333 (not x11039))
+:assumption (or (not x7541) (not x18127))
+:assumption (or (not x25278) (not x24477))
+:assumption (or (not x18164) (not x5541))
+:assumption (or (not x21913) x7857)
+:assumption (or x20491 x28219)
+:assumption (or x10323 x22277)
+:assumption (or (not x1032) x27911)
+:assumption (or (not x23016) (not x23244) x218)
+:assumption (or (not x24330) (not x6212))
+:assumption (or x24087 x12618)
+:assumption (or x8385 (not x26998))
+:assumption (or (not x28354) (not x27871))
+:assumption (or (not x30206) (not x31717))
+:assumption (or (not x5995) (not x5886))
+:assumption (or x7853 (not x8002))
+:assumption (or (not x27225) (not x18702) x15795)
+:assumption (or (not x16721) x19550)
+:assumption (or x27639 (not x26723))
+:assumption (or (not x7184) (not x8602))
+:assumption (or x26539 (not x8979))
+:assumption (or (not x16745) (not x13790))
+:assumption (or (not x25790) x10158)
+:assumption (or x1092 (not x24922))
+:assumption (or x28932 (not x26223))
+:assumption (or x22247 (not x22741))
+:assumption (or x16286 (not x6327))
+:assumption (or x12742 x13179)
+:assumption (or (not x4417) (not x21815) (not x16510) x3001 (not x18519))
+:assumption (or x24346 (not x18930) x974 x27681 (not x6957))
+:assumption (or x8478 x19071)
+:assumption (or (not x29290) x24499 x8079 (not x28521) (not x11009))
+:assumption (or x31873 x9850)
+:assumption (or x30406 x10587)
+:assumption (or x2302 x20903 x19008)
+:assumption (or (not x3551) x24422)
+:assumption (or x10064 (not x16359) (not x23244))
+:assumption (or (not x20849) x7672 x7548)
+:assumption (or x3527 (not x3563))
+:assumption (or x7743 x1801)
+:assumption (or (not x12199) x15537 x13313)
+:assumption (or x29953 (not x11573))
+:assumption (or (not x9016) x30445)
+:assumption (or x9453 x380)
+:assumption (or (not x1876) x14218)
+:assumption (or (not x4615) x25784)
+:assumption (or (not x7590) (not x16694))
+:assumption (or x17338 x12027)
+:assumption (or (not x18585) (not x1946))
+:assumption (or x12419 (not x31840))
+:assumption (or (not x30033) (not x18890))
+:assumption (or x7483 x17369)
+:assumption (or x5528 (not x3656) x1542)
+:assumption (or x29939 x21677)
+:assumption (or x15824 x20725 (not x20710) x9008 (not x18453) (not x20714) (not x7902) x14620)
+:assumption (or (not x15326) x3130)
+:assumption (or x19225 (not x20482) x12626)
+:assumption (or x26846 (not x4407))
+:assumption (or (not x29027) (not x23853))
+:assumption (or (not x25291) (not x3188))
+:assumption (or (not x1264) (not x16236))
+:assumption (or (not x13223) (not x7749) (not x26954) (not x31036) (not x7125) (not x20476) x4234)
+:assumption (or x8711 (not x3405))
+:assumption (or x9969 (not x3592))
+:assumption (or x8472 (not x11409))
+:assumption (or (not x104) (not x20607))
+:assumption (or (not x22151) x5704)
+:assumption (or x25126 (not x18348))
+:assumption (or x3037 x11999)
+:assumption (or (not x9134) (not x13095))
+:assumption (or x24824 (not x13092))
+:assumption (or x11069 (not x17260) x3188 (not x15034) (not x11388) x26357)
+:assumption (or (not x30145) x13956)
+:assumption (or x25958 x4153)
+:assumption (or x9531 x7998 (not x7820))
+:assumption (or x18471 x25298)
+:assumption (or (not x7036) (not x21255))
+:assumption (or x17787 x13451)
+:assumption (or x17608 x27225)
+:assumption (or (not x3176) x20399)
+:assumption (or x31266 x5528)
+:assumption (or x21743 x29043)
+:assumption (or (not x29799) (not x17699))
+:assumption (or x5349 x29348)
+:assumption (or x3002 (not x16648))
+:assumption (or (not x9008) x23105)
+:assumption (or (not x6193) x3033)
+:assumption (or x4816 x13007)
+:assumption (or (not x13936) x25031)
+:assumption (or (not x10256) x25706)
+:assumption (or x15920 (not x13188))
+:assumption (or (not x6913) x4260)
+:assumption (or x12045 (not x28484))
+:assumption (or (not x12199) x24211)
+:assumption (or (not x12052) x7907)
+:assumption (or (not x9635) (not x17143))
+:assumption (or x10812 (not x27779))
+:assumption (or x23505 x10674)
+:assumption (or (not x16087) x5472)
+:assumption (or x5009 x2191)
+:assumption (or (not x13217) x24474)
+:assumption (or (not x965) (not x9972) (not x2145) (not x12294) x22204 (not x24141))
+:assumption (or x1605 x17515)
+:assumption (or (not x30954) x7636)
+:assumption (or (not x9329) (not x11786) x16584 (not x16455))
+:assumption (or x8293 (not x20543))
+:assumption (or (not x30751) x12925)
+:assumption (or x12240 x30149 (not x10335) x6917 (not x5373) x20471)
+:assumption (or x10083 (not x26682))
+:assumption (or x748 x14057 x28414)
+:assumption (or x24457 x13941)
+:assumption (or x16792 x1985)
+:assumption (or (not x11618) x24756 (not x20715))
+:assumption (or (not x10909) x20094 x13664)
+:assumption (or x5387 (not x22525) x8513 (not x16652) x26846 (not x25279) x31072 x17024)
+:assumption (or x23246 x11903 (not x29923) (not x2518) (not x18825))
+:assumption (or (not x23550) x25490)
+:assumption (or x8455 (not x7382))
+:assumption (or (not x15143) x8848)
+:assumption (or (not x11488) (not x13292))
+:assumption (or x22017 x7454)
+:assumption (or x12783 x1616)
+:assumption (or x26315 (not x7832))
+:assumption (or (not x27825) (not x23543))
+:assumption (or (not x30371) x181)
+:assumption (or (not x798) x28670)
+:assumption (or x13185 (not x26054))
+:assumption (or (not x25444) (not x16604))
+:assumption (or x4361 x14522)
+:assumption (or (not x13532) x6630)
+:assumption (or x22295 x25874)
+:assumption (or x30138 x12963)
+:assumption (or x19428 (not x29325) x7265)
+:assumption (or x8006 x25676)
+:assumption (or (not x24114) x30856)
+:assumption (or x26603 x7978)
+:assumption (or x10311 (not x14203) x8002)
+:assumption (or x21350 x26901)
+:assumption (or x19062 x14897)
+:assumption (or x30712 x13018)
+:assumption (or (not x13815) (not x19062))
+:assumption (or (not x27880) (not x14663) x3784 x10785 x9036 x7982)
+:assumption (or (not x22258) (not x19834))
+:assumption (or x20646 (not x3465))
+:assumption (or x16042 (not x21298))
+:assumption (or x30805 x23970)
+:assumption (or x3077 (not x4700))
+:assumption (or (not x20500) (not x27911))
+:assumption (or (not x7922) (not x11347))
+:assumption (or (not x9531) (not x25079))
+:assumption (or x2774 (not x12935))
+:assumption (or (not x5579) (not x30519))
+:assumption (or x3477 x14591 x9152 x15795)
+:assumption (or (not x5206) x8235)
+:assumption (or x11439 (not x22260))
+:assumption (or (not x8002) (not x19936))
+:assumption (or x29449 (not x25366))
+:assumption (or (not x8002) x14405)
+:assumption (or x5684 x13993)
+:assumption (or x9772 x8837 x19916)
+:assumption (or (not x18694) (not x21570))
+:assumption (or (not x982) x31265)
+:assumption (or x12422 x29163)
+:assumption (or x8256 x12068)
+:assumption (or x26517 x24224)
+:assumption (or (not x896) (not x25075))
+:assumption (or (not x13735) (not x14572))
+:assumption (or (not x2112) (not x20726))
+:assumption (or x19572 x25186)
+:assumption (or (not x2127) x23031)
+:assumption (or x688 x11073 (not x9020) (not x2627) x7441 (not x17856))
+:assumption (or x23801 (not x16700))
+:assumption (or x10610 (not x21143))
+:assumption (or (not x19039) x5482)
+:assumption (or x15173 x25865)
+:assumption (or x5425 x2582)
+:assumption (or x28110 x8461)
+:assumption (or (not x28895) (not x30255) (not x19938) (not x22361) (not x24690) x21601)
+:assumption (or x9904 x16766)
+:assumption (or (not x26017) x5567)
+:assumption (or x15215 (not x6262))
+:assumption (or x22712 (not x6022))
+:assumption (or x29621 (not x9175))
+:assumption (or x28539 (not x16117))
+:assumption (or x30010 (not x11640))
+:assumption (or (not x30997) (not x8396))
+:assumption (or (not x15414) (not x26278) (not x16003))
+:assumption (or (not x762) x4591 x8422)
+:assumption (or (not x19472) x10333)
+:assumption (or x29264 (not x26331))
+:assumption (or (not x11483) x6951)
+:assumption (or (not x10771) x22724)
+:assumption (or x8165 (not x31524) (not x22981))
+:assumption (or (not x19049) x1393)
+:assumption (or (not x20837) (not x10277))
+:assumption (or (not x7375) (not x11792))
+:assumption (or (not x29937) (not x29717))
+:assumption (or x8184 (not x28092))
+:assumption (or x9134 (not x2701))
+:assumption (or x30500 x31835)
+:assumption (or x17813 x3131)
+:assumption (or (not x16249) (not x30138))
+:assumption (or (not x30562) x25350)
+:assumption (or x11522 x12958)
+:assumption (or (not x12877) (not x41))
+:assumption (or x11410 x16741)
+:assumption (or x22228 x3050)
+:assumption (or (not x24760) (not x23102))
+:assumption (or x26859 x13104)
+:assumption (or x16179 x22512)
+:assumption (or (not x19755) (not x21438))
+:assumption (or (not x10724) x11647)
+:assumption (or (not x29630) x12178 (not x28165))
+:assumption (or (not x1443) (not x31492) x5315 (not x29811) x3301)
+:assumption (or (not x24806) x21442)
+:assumption (or (not x24755) x13100 (not x22278) (not x17332) (not x12155) (not x16825) x26702)
+:assumption (or (not x1315) x11225)
+:assumption (or x7131 (not x20818))
+:assumption (or x4337 (not x23142))
+:assumption (or (not x27233) (not x19884))
+:assumption (or (not x17095) (not x14839))
+:assumption (or (not x20888) (not x8112) x28840 (not x31763) x2288 (not x4667) x29493)
+:assumption (or x27624 (not x7340))
+:assumption (or x20396 x21311)
+:assumption (or (not x28325) x4566)
+:assumption (or (not x9864) x27350)
+:assumption (or x28701 x28303)
+:assumption (or x14583 (not x19621))
+:assumption (or (not x31328) (not x30637))
+:assumption (or x17660 x5756)
+:assumption (or (not x27094) x21815 x12214)
+:assumption (or x22478 x8361)
+:assumption (or (not x31516) x10558)
+:assumption (or x30792 x20005)
+:assumption (or x27851 (not x12046))
+:assumption (or (not x20223) (not x7219) x26897 x30138)
+:assumption (or x14149 (not x29541))
+:assumption (or x20067 x2767)
+:assumption (or x15369 x5528)
+:assumption (or (not x8970) x30274)
+:assumption (or x21189 (not x218) x25157)
+:assumption (or (not x12495) x20081 x7698 x26190 (not x4013) (not x29179) (not x17504))
+:assumption (or x15732 x9451 (not x16696) (not x29975) x27126)
+:assumption (or x29716 x7851 x8247 (not x14517) x8315 (not x28510))
+:assumption (or (not x480) (not x29473) (not x8183))
+:assumption (or (not x27802) x29776 x25144 (not x19547))
+:assumption (or x1532 (not x28428))
+:assumption (or (not x9439) x6252 x16784)
+:assumption (or x17440 x12910 (not x3553))
+:assumption (or x27241 x25429 (not x1633) x21432)
+:assumption (or (not x16215) (not x31637))
+:assumption (or (not x21199) x1790)
+:assumption (or (not x805) (not x30693))
+:assumption (or (not x22679) x1184 x28748 (not x28350) x14880 (not x4919))
+:assumption (or (not x25681) (not x25081))
+:assumption (or (not x31118) (not x22322))
+:assumption (or (not x7418) x7859)
+:assumption (or (not x9464) (not x8002))
+:assumption (or x11845 (not x2609))
+:assumption (or (not x19232) (not x31442))
+:assumption (or x27167 x15183)
+:assumption (or (not x8579) x1125)
+:assumption (or (not x21387) x8773)
+:assumption (or x22529 (not x11477))
+:assumption (or (not x30787) (not x19299))
+:assumption (or (not x22028) (not x16932))
+:assumption (or x7743 x8413)
+:assumption (or (not x11704) x9633 x31392 (not x199))
+:assumption (or (not x6149) (not x15355))
+:assumption (or (not x29109) (not x26746))
+:assumption (or x14025 x10655 (not x20325) (not x12242))
+:assumption (or (not x6619) x10751)
+:assumption (or (not x7296) x13907 x12625 x1612)
+:assumption (or x218 (not x13580))
+:assumption (or (not x9204) x20317)
+:assumption (or x2215 x17778)
+:assumption (or (not x624) x9283)
+:assumption (or x26021 (not x12489))
+:assumption (or (not x22855) x142 x10676)
+:assumption (or (not x17369) (not x25748))
+:assumption (or x16304 (not x25684))
+:assumption (or (not x14145) (not x9008))
+:assumption (or (not x24722) x26917)
+:assumption (or (not x25923) x12895)
+:assumption (or (not x20515) (not x10918) (not x15788) x23043 x29481 (not x11522))
+:assumption (or (not x19465) (not x25130))
+:assumption (or x18907 (not x20360))
+:assumption (or (not x24050) x8618)
+:assumption (or (not x9644) (not x2236))
+:assumption (or x27461 (not x11829))
+:assumption (or x9671 x16544)
+:assumption (or (not x29541) (not x28416))
+:assumption (or (not x30044) (not x1393) x3813)
+:assumption (or (not x17218) (not x20885))
+:assumption (or x17199 (not x5139))
+:assumption (or x27090 (not x608) x14963)
+:assumption (or (not x28912) x6693 x29771 (not x29649))
+:assumption (or x19936 x8002 (not x4269))
+:assumption (or x1870 x18544)
+:assumption (or x8882 x21360)
+:assumption (or x26643 x18753)
+:assumption (or x16096 (not x918) x5442)
+:assumption (or (not x6244) x19849)
+:assumption (or (not x1621) x5184 x28066)
+:assumption (or x24537 (not x7351) x25178)
+:assumption (or x29905 (not x29994))
+:assumption (or (not x30313) x10496)
+:assumption (or (not x27415) (not x11674))
+:assumption (or (not x6360) x18972)
+:assumption (or (not x31138) (not x655) (not x31681) x7118 (not x18773) (not x30720) x10679)
+:assumption (or (not x27222) x19487)
+:assumption (or (not x27953) (not x14968) x19003 (not x26482))
+:assumption (or x3609 (not x26927) (not x18859))
+:assumption (or (not x16194) x6714 (not x9320) x607)
+:assumption (or (not x22954) (not x12614))
+:assumption (or (not x20060) x30610 (not x8169))
+:assumption (or (not x205) (not x6119))
+:assumption (or x20006 (not x11210))
+:assumption (or (not x20130) (not x31095))
+:assumption (or x5024 x30770)
+:assumption (or x20441 x7563)
+:assumption (or (not x29665) x8226)
+:assumption (or (not x20243) (not x10758))
+:assumption (or (not x5630) (not x22890))
+:assumption (or x29965 (not x1452) (not x16648))
+:assumption (or (not x28973) (not x14482))
+:assumption (or (not x30871) (not x31251))
+:assumption (or x29524 (not x13890) (not x704) x30461 (not x11966) (not x16375) (not x26443) (not x14220) (not x2285))
+:assumption (or (not x26333) x15150 x18151 (not x25238) x24025)
+:assumption (or x17228 x1414)
+:assumption (or x11356 (not x4442))
+:assumption (or (not x3636) (not x17534))
+:assumption (or (not x21062) x17534 (not x6594) x24170)
+:assumption (or x12640 (not x29357))
+:assumption (or x16970 (not x15492))
+:assumption (or x14975 x9531)
+:assumption (or x26993 x7876)
+:assumption (or x15868 (not x29741))
+:assumption (or (not x24489) x9387)
+:assumption (or (not x22949) (not x23982))
+:assumption (or (not x22787) x20974)
+:assumption (or (not x8810) (not x26919))
+:assumption (or x9749 x14839)
+:assumption (or (not x4048) x26965)
+:assumption (or x21685 x23358 x27637)
+:assumption (or x9859 x10094)
+:assumption (or (not x25954) x15666 (not x9008))
+:assumption (or x7123 x23623)
+:assumption (or x9012 x11022)
+:assumption (or x3613 (not x29366))
+:assumption (or x10414 (not x24722))
+:assumption (or x16227 (not x30767))
+:assumption (or (not x29604) x7032 x31478 x2495 (not x8351) (not x29623))
+:assumption (or x7084 x10556)
+:assumption (or x9972 (not x13584))
+:assumption (or (not x13844) x19864)
+:assumption (or x27716 x28532)
+:assumption (or x23244 (not x12077))
+:assumption (or (not x25240) (not x3394))
+:assumption (or (not x18003) (not x18862))
+:assumption (or x591 x3519 (not x29561))
+:assumption (or x6841 x25746)
+:assumption (or x11335 x28975)
+:assumption (or (not x20407) (not x15620))
+:assumption (or x30977 x7553 x2736 (not x17471) x9374 x13308)
+:assumption (or x6412 x19992)
+:assumption (or (not x21298) (not x29688))
+:assumption (or x24511 (not x6892) (not x14222) (not x8600) (not x2833) (not x22116) (not x27902) x6365)
+:assumption (or (not x202) (not x18257))
+:assumption (or (not x13956) x21502 (not x26394) (not x9585))
+:assumption (or (not x19194) (not x31391))
+:assumption (or (not x10723) x1121)
+:assumption (or (not x292) x912)
+:assumption (or x3453 (not x9756) (not x22999) x3754 (not x11430))
+:assumption (or (not x13578) x11484 x6938)
+:assumption (or (not x11069) (not x29026))
+:assumption (or x5685 x4197)
+:assumption (or x385 x6620)
+:assumption (or x18326 (not x1506))
+:assumption (or (not x9295) x15358)
+:assumption (or (not x3540) (not x2967))
+:assumption (or x24690 (not x13782))
+:assumption (or (not x4765) (not x21343))
+:assumption (or x5348 x21009)
+:assumption (or x14725 (not x4026) (not x24117) x10289 (not x770) (not x10283) (not x21202))
+:assumption (or x21869 x8229)
+:assumption (or (not x14746) (not x3909))
+:assumption (or (not x8736) (not x18864))
+:assumption (or (not x2768) (not x3310))
+:assumption (or x2536 (not x17336))
+:assumption (or x18238 x30047)
+:assumption (or x24215 x8002)
+:assumption (or x10114 x2842)
+:assumption (or x3435 (not x9592) (not x1487) (not x14455) x4220)
+:assumption (or (not x920) (not x15802))
+:assumption (or x8740 (not x17614))
+:assumption (or (not x1393) (not x4972))
+:assumption (or x30043 (not x4907))
+:assumption (or x3615 (not x10322))
+:assumption (or x27158 (not x4176))
+:assumption (or x9008 x27130 x17815)
+:assumption (or x23703 (not x21728) x9990 (not x9332))
+:assumption (or x21815 (not x5623))
+:assumption (or (not x14919) (not x3706))
+:assumption (or (not x25659) x13459 x26117)
+:assumption (or (not x29226) (not x21832))
+:assumption (or x1393 (not x29120) (not x30442))
+:assumption (or x9181 (not x17429))
+:assumption (or x18673 x15077)
+:assumption (or x2088 x28973 (not x16291))
+:assumption (or x9428 x22472)
+:assumption (or (not x31028) x5544)
+:assumption (or x5848 x23399)
+:assumption (or x5351 x24308 x8861 x7778)
+:assumption (or (not x3638) x4927 x14485)
+:assumption (or x9547 (not x8685))
+:assumption (or (not x22045) x23229)
+:assumption (or (not x26261) x8304)
+:assumption (or (not x27604) (not x12577))
+:assumption (or x26313 (not x29437))
+:assumption (or (not x12399) x12086)
+:assumption (or x19501 (not x11498) (not x13956))
+:assumption (or (not x12728) (not x4451))
+:assumption (or (not x28879) x8361)
+:assumption (or x19141 x15191)
+:assumption (or x23244 (not x18088))
+:assumption (or (not x17929) x1818)
+:assumption (or x26385 x22065 x24518 (not x7191))
+:assumption (or x25388 (not x4485))
+:assumption (or (not x10181) (not x14467))
+:assumption (or x9995 (not x5121))
+:assumption (or (not x3561) (not x18541))
+:assumption (or x844 (not x4743) (not x10022) x10866)
+:assumption (or (not x8043) x7003)
+:assumption (or x12610 x29404 (not x20754) x1684 x5560)
+:assumption (or (not x8298) x14687)
+:assumption (or (not x15781) (not x7800))
+:assumption (or (not x10661) (not x18859) x3328)
+:assumption (or (not x9737) x725 x21653)
+:assumption (or x409 x1341)
+:assumption (or (not x7771) (not x6040) x25726 (not x27853))
+:assumption (or (not x22599) x24230)
+:assumption (or x20030 x25213 (not x16643))
+:assumption (or (not x5690) (not x28652))
+:assumption (or x20857 x18233)
+:assumption (or (not x15864) (not x31292))
+:assumption (or x21253 x316)
+:assumption (or (not x12543) x31217)
+:assumption (or x6730 x20153)
+:assumption (or (not x4078) x10026)
+:assumption (or x13367 x18174)
+:assumption (or x26061 (not x22113))
+:assumption (or (not x19826) x760)
+:assumption (or (not x866) x17716)
+:assumption (or (not x29010) (not x26275))
+:assumption (or x16305 (not x13548) x697 (not x2322) x23259)
+:assumption (or x8552 (not x20482))
+:assumption (or (not x26597) x7968)
+:assumption (or (not x21169) x19673)
+:assumption (or x17445 x28352 (not x1613) (not x8857) (not x29006))
+:assumption (or x15762 x895)
+:assumption (or (not x26361) x26977)
+:assumption (or x31491 (not x9008))
+:assumption (or x13417 (not x25480))
+:assumption (or (not x9520) (not x23415))
+:assumption (or x18598 (not x15731))
+:assumption (or x4507 x10152)
+:assumption (or (not x23026) x21221)
+:assumption (or x11499 (not x6723))
+:assumption (or x12772 x8888)
+:assumption (or x19711 (not x2583) x20981 x11459 x5385 x12029)
+:assumption (or x27076 (not x9453))
+:assumption (or x29249 x5320)
+:assumption (or (not x8697) x27508)
+:assumption (or x12235 (not x6743))
+:assumption (or x10852 (not x28982))
+:assumption (or x8002 (not x17928))
+:assumption (or (not x7147) x4451 (not x24053))
+:assumption (or x4918 (not x15687))
+:assumption (or x12636 (not x31152))
+:assumption (or x22285 x23872)
+:assumption (or (not x14977) (not x6442))
+:assumption (or (not x6097) x29124)
+:assumption (or (not x2835) (not x18632))
+:assumption (or (not x17146) (not x11001))
+:assumption (or x2133 (not x10827))
+:assumption (or (not x1072) (not x9008))
+:assumption (or x5525 x26663 x30349)
+:assumption (or x20715 (not x30110))
+:assumption (or (not x14525) (not x7917))
+:assumption (or x7460 (not x1582))
+:assumption (or x20491 (not x13591))
+:assumption (or (not x8856) (not x17424))
+:assumption (or (not x21524) (not x23402))
+:assumption (or x17853 x21853)
+:assumption (or (not x24761) (not x29444))
+:assumption (or (not x24515) x30475)
+:assumption (or x4531 (not x18939))
+:assumption (or x20961 (not x29278))
+:assumption (or x3538 (not x28458) x18929)
+:assumption (or x21565 x10576 (not x16409) x11170 x1247)
+:assumption (or x2706 (not x25019))
+:assumption (or (not x10909) x27600)
+:assumption (or x15917 (not x18758))
+:assumption (or (not x18539) x837)
+:assumption (or x11472 (not x13199))
+:assumption (or x30342 (not x20723))
+:assumption (or x19084 (not x12880))
+:assumption (or x11708 x29772 x21298 (not x27255))
+:assumption (or x20283 (not x11978))
+:assumption (or (not x29312) (not x18803))
+:assumption (or (not x15861) x7746 x3224)
+:assumption (or (not x29419) (not x15236))
+:assumption (or (not x16025) x17304)
+:assumption (or x2460 x18432 x12045 x26922 x6266)
+:assumption (or x16977 (not x31048))
+:assumption (or x21102 (not x26043))
+:assumption (or (not x26969) (not x19537))
+:assumption (or x30653 (not x25020) x31819 x1926 (not x31211))
+:assumption (or x4030 (not x31876))
+:assumption (or x20651 (not x6007))
+:assumption (or x13922 (not x5064))
+:assumption (or x10034 (not x14455))
+:assumption (or (not x697) x13603)
+:assumption (or x29059 (not x18441))
+:assumption (or (not x27261) (not x20550))
+:assumption (or x22616 (not x23244))
+:assumption (or (not x18005) x13956)
+:assumption (or (not x21694) x5206)
+:assumption (or x662 (not x18049) x13102 x8656 (not x24346) x23855)
+:assumption (or x8777 x31775)
+:assumption (or (not x16648) (not x1897) x5754)
+:assumption (or (not x8079) x31033)
+:assumption (or (not x4352) x28707)
+:assumption (or (not x19183) (not x30226))
+:assumption (or (not x4218) (not x288))
+:assumption (or x9463 (not x21899))
+:assumption (or x23748 (not x24907))
+:assumption (or (not x827) x6112)
+:assumption (or (not x4353) (not x31720))
+:assumption (or x5593 (not x29448))
+:assumption (or (not x30238) (not x10702))
+:assumption (or x20828 x19299 x6155 x6707 (not x8671))
+:assumption (or (not x1179) x18236)
+:assumption (or (not x18694) (not x7710))
+:assumption (or (not x288) x17909 (not x405))
+:assumption (or x20107 (not x13956))
+:assumption (or (not x23812) (not x18092))
+:assumption (or (not x29393) (not x17591))
+:assumption (or (not x26285) (not x25594))
+:assumption (or (not x16025) (not x13432))
+:assumption (or (not x12502) x12265 x9008)
+:assumption (or x4659 (not x20765))
+:assumption (or x8051 x26670)
+:assumption (or (not x13816) x27867)
+:assumption (or (not x30219) x24618)
+:assumption (or x6712 x16741)
+:assumption (or (not x12877) x15537 x21047)
+:assumption (or (not x31829) (not x21608))
+:assumption (or x21352 (not x663))
+:assumption (or x9007 (not x16216))
+:assumption (or (not x14114) x8657)
+:assumption (or x8545 x14687)
+:assumption (or (not x27285) (not x28897))
+:assumption (or (not x19445) (not x11482))
+:assumption (or (not x26589) (not x18213))
+:assumption (or x29099 (not x3821))
+:assumption (or x13576 (not x20973) x20657)
+:assumption (or x29037 (not x30822))
+:assumption (or (not x10419) (not x27338))
+:assumption (or (not x17132) (not x13077))
+:assumption (or x6717 (not x28389))
+:assumption (or (not x6316) (not x7471))
+:assumption (or x25046 (not x26161))
+:assumption (or x3950 x2106)
+:assumption (or x20316 (not x31532))
+:assumption (or (not x16025) x108)
+:assumption (or (not x4559) x16047 x13637 (not x7108))
+:assumption (or (not x22103) (not x7573))
+:assumption (or x16705 (not x8979))
+:assumption (or (not x10995) x8791)
+:assumption (or x4203 x29799)
+:assumption (or (not x27622) x17812)
+:assumption (or x10735 x25765)
+:assumption (or x15432 (not x8602))
+:assumption (or x19224 x2883)
+:assumption (or x18026 x9160)
+:assumption (or x3366 (not x8129))
+:assumption (or (not x24250) (not x28983))
+:assumption (or x27012 (not x5676))
+:assumption (or x13749 (not x5952))
+:assumption (or x12160 x16003)
+:assumption (or (not x11216) x11945)
+:assumption (or x11484 (not x8233))
+:assumption (or x14590 (not x9061))
+:assumption (or x23207 x4202)
+:assumption (or (not x31525) x25977)
+:assumption (or x22124 x8825)
+:assumption (or x28996 (not x23806))
+:assumption (or x23065 (not x22834))
+:assumption (or (not x31730) x23386)
+:assumption (or x400 (not x9000) (not x3453))
+:assumption (or (not x21653) (not x17728) (not x749))
+:assumption (or x31373 (not x30553))
+:assumption (or x22701 x25038)
+:assumption (or x27039 x20706)
+:assumption (or (not x28912) x4755)
+:assumption (or x11647 (not x7377))
+:assumption (or x8573 x30378)
+:assumption (or (not x23244) x26804)
+:assumption (or x15982 x17253 (not x3671))
+:assumption (or x891 x7047)
+:assumption (or (not x7034) (not x2201))
+:assumption (or (not x7642) (not x1748))
+:assumption (or (not x26864) x8002)
+:assumption (or x7147 (not x14910))
+:assumption (or (not x2501) (not x19339))
+:assumption (or (not x953) (not x1122) x6351)
+:assumption (or (not x25034) (not x12242))
+:assumption (or x30178 x1920)
+:assumption (or x31299 (not x12526))
+:assumption (or x18716 (not x23244) (not x7537))
+:assumption (or (not x684) (not x25659))
+:assumption (or (not x31114) x8160)
+:assumption (or x24036 (not x25119))
+:assumption (or x719 x23922 x12242)
+:assumption (or (not x13563) x6911)
+:assumption (or (not x30754) (not x28428))
+:assumption (or x22583 x30187)
+:assumption (or x5858 x3707)
+:assumption (or (not x1660) (not x3295))
+:assumption (or (not x28748) (not x13003))
+:assumption (or x7205 (not x12425))
+:assumption (or x1042 (not x13956) (not x26647) x11357)
+:assumption (or (not x20557) (not x3872))
+:assumption (or (not x24418) x11394 (not x24387) (not x23072))
+:assumption (or x10386 (not x7798) x4056)
+:assumption (or (not x24422) x23655)
+:assumption (or x12619 x1739)
+:assumption (or x7402 x26579)
+:assumption (or (not x22634) x28120)
+:assumption (or (not x27) x21815)
+:assumption (or (not x5665) x25424 (not x539) (not x615) (not x18343) (not x28043))
+:assumption (or x9648 x26670)
+:assumption (or (not x4621) (not x22937))
+:assumption (or x21158 (not x1225))
+:assumption (or x24634 (not x13451))
+:assumption (or x3235 x29494 (not x25659))
+:assumption (or (not x12969) (not x4329))
+:assumption (or (not x28717) x25288 (not x23244) (not x8002))
+:assumption (or x3040 x11287)
+:assumption (or x22782 x9284)
+:assumption (or x15391 (not x24387))
+:assumption (or x30951 (not x25425))
+:assumption (or (not x2058) (not x13441))
+:assumption (or (not x5528) (not x12588) (not x9008) x22295 x26168)
+:assumption (or (not x18126) (not x16510))
+:assumption (or (not x30612) (not x28883))
+:assumption (or (not x7071) (not x18792))
+:assumption (or (not x20277) x2131 (not x14072) x14713 x7259 (not x18396) x8156 x7807 x13199)
+:assumption (or x20454 x23462)
+:assumption (or (not x16274) x16413 (not x18997))
+:assumption (or x22593 (not x13181))
+:assumption (or x29832 x29885)
+:assumption (or (not x2484) x28777)
+:assumption (or x20546 x11569)
+:assumption (or (not x827) (not x8356) (not x16571))
+:assumption (or (not x24934) x11412)
+:assumption (or (not x10045) (not x5532))
+:assumption (or x14130 (not x18365))
+:assumption (or x8435 x20060)
+:assumption (or x7067 (not x17902))
+:assumption (or (not x9337) (not x15427) (not x27602))
+:assumption (or (not x16361) (not x27624) (not x3503))
+:assumption (or x10277 x22281)
+:assumption (or (not x3738) x825 (not x3983) x18031)
+:assumption (or x8759 (not x24919) (not x5118) (not x10313) (not x20628) x12628 x12537 x30238)
+:assumption (or (not x17837) (not x2835))
+:assumption (or x7985 (not x21378))
+:assumption (or (not x25308) (not x12012))
+:assumption (or x30113 (not x15859))
+:assumption (or (not x27303) x14974)
+:assumption (or x20871 x10819)
+:assumption (or (not x8173) (not x3099))
+:assumption (or (not x9521) x4451)
+:assumption (or (not x5738) x30274)
+:assumption (or x21522 (not x6665))
+:assumption (or x13187 (not x12155))
+:assumption (or (not x1621) x6194)
+:assumption (or (not x12290) (not x20190))
+:assumption (or (not x21146) x11132 x11019 (not x20006))
+:assumption (or (not x20406) (not x21281) x25659)
+:assumption (or (not x15717) (not x25482))
+:assumption (or (not x21449) x11411)
+:assumption (or (not x23269) (not x29177))
+:assumption (or x8790 x24670)
+:assumption (or (not x31022) x18533 x10632)
+:assumption (or x1763 x18377)
+:assumption (or (not x7188) x18559)
+:assumption (or x9008 (not x30090) (not x10725))
+:assumption (or x23002 (not x23431))
+:assumption (or (not x29836) x14049)
+:assumption (or (not x11941) x18323 x19509)
+:assumption (or (not x27231) x17866)
+:assumption (or x23185 x26881)
+:assumption (or x12719 x16304 x25935)
+:assumption (or x13956 (not x18240))
+:assumption (or x29286 x23038)
+:assumption (or (not x21787) (not x10151))
+:assumption (or x25659 x14954 (not x23719))
+:assumption (or (not x13441) (not x4110))
+:assumption (or (not x14969) (not x22854))
+:assumption (or (not x30138) (not x20593))
+:assumption (or (not x21306) (not x31209))
+:assumption (or (not x28063) (not x5853))
+:assumption (or x30997 (not x12458))
+:assumption (or (not x15903) (not x24959))
+:assumption (or x14455 x6630)
+:assumption (or x6823 x1570)
+:assumption (or x27854 x29152)
+:assumption (or (not x2541) (not x17943))
+:assumption (or (not x13576) x13070)
+:assumption (or x10603 x16082 x22295 x16749 x10640)
+:assumption (or (not x13956) (not x6662) (not x11489) x18369)
+:assumption (or x6212 (not x8602))
+:assumption (or x31355 x21722)
+:assumption (or x19768 x11527)
+:assumption (or x13096 x20948)
+:assumption (or x10029 x2753 (not x10991) x23963 x27507 x29174 (not x31368) (not x24161) x26006)
+:assumption (or x12457 x25366)
+:assumption (or x3001 x25659 x25470 x8168)
+:assumption (or (not x10438) (not x4063))
+:assumption (or x27231 (not x17723))
+:assumption (or x21948 x21599 x2373 x29481 (not x12958))
+:assumption (or x29657 (not x27025))
+:assumption (or (not x22012) (not x8002))
+:assumption (or (not x7792) (not x16150))
+:assumption (or x5696 (not x28366))
+:assumption (or x12053 (not x18209))
+:assumption (or x16440 x2449)
+:assumption (or (not x30257) (not x1020))
+:assumption (or x16510 x18738)
+:assumption (or (not x30449) x3453)
+:assumption (or x9703 (not x23507))
+:assumption (or x3557 x11541)
+:assumption (or x5870 x9326)
+:assumption (or x4678 (not x11586))
+:assumption (or x8574 x14923)
+:assumption (or (not x461) x27471 (not x5232) (not x2883) x21730)
+:assumption (or x28465 x22466)
+:assumption (or x23919 (not x31460))
+:assumption (or x17422 (not x27654))
+:assumption (or x3680 x16917)
+:assumption (or (not x2409) (not x16723))
+:assumption (or x9005 x10240)
+:assumption (or (not x31290) (not x29281))
+:assumption (or (not x23395) (not x21298) x16118)
+:assumption (or (not x14708) x31588)
+:assumption (or (not x6856) (not x15269))
+:assumption (or (not x16346) (not x30633))
+:assumption (or (not x15863) x7892)
+:assumption (or (not x28203) (not x21197))
+:assumption (or x4584 (not x8816))
+:assumption (or x9458 (not x24157) x19428 (not x6530))
+:assumption (or x22716 (not x18623) x13956)
+:assumption (or x6969 x6807)
+:assumption (or x26349 (not x13105))
+:assumption (or (not x8002) (not x20249))
+:assumption (or x26296 (not x7482))
+:assumption (or x20995 x16025)
+:assumption (or (not x23301) (not x11671) x21062 x22009 x23075)
+:assumption (or (not x8292) x24327)
+:assumption (or (not x22858) x18563)
+:assumption (or (not x4089) (not x23069))
+:assumption (or x31716 x31877 (not x3389) (not x23244) (not x9361) (not x30591))
+:assumption (or (not x21410) (not x13247))
+:assumption (or x26762 (not x24814))
+:assumption (or (not x9008) (not x14529) (not x4424))
+:assumption (or x23624 x17419)
+:assumption (or x6430 x4768)
+:assumption (or x12552 x10739)
+:assumption (or (not x14712) x5739)
+:assumption (or (not x22912) x7898)
+:assumption (or (not x21959) x18859 x22056)
+:assumption (or (not x3323) (not x17047))
+:assumption (or (not x9178) x19374)
+:assumption (or x2177 x29953)
+:assumption (or x23076 x2942)
+:assumption (or x4410 x29406)
+:assumption (or (not x11447) (not x3114))
+:assumption (or x26647 (not x12607))
+:assumption (or x10886 (not x22297))
+:assumption (or x23131 x5785)
+:assumption (or (not x16311) (not x8352))
+:assumption (or (not x26308) x30584)
+:assumption (or (not x3727) (not x3976))
+:assumption (or (not x18686) x15174)
+:assumption (or x21298 (not x17830))
+:assumption (or (not x8335) (not x17604))
+:assumption (or x16025 (not x24469))
+:assumption (or (not x18643) (not x30514))
+:assumption (or x31066 (not x31637))
+:assumption (or x1500 x7844)
+:assumption (or (not x21821) (not x6526))
+:assumption (or x5213 x17597)
+:assumption (or (not x31581) (not x22558))
+:assumption (or (not x8206) (not x12389) x6969)
+:assumption (or (not x21690) x24371)
+:assumption (or (not x28794) (not x22472))
+:assumption (or x14591 (not x13925))
+:assumption (or (not x14109) (not x30797))
+:assumption (or (not x13509) (not x13400))
+:assumption (or x8002 (not x28863) (not x17785))
+:assumption (or x3713 x801)
+:assumption (or x5520 (not x18452))
+:assumption (or (not x8602) x19642 (not x6277))
+:assumption (or x26909 x29383)
+:assumption (or x23689 (not x4645))
+:assumption (or x24582 (not x21161))
+:assumption (or x691 x30914 (not x13956) x25484)
+:assumption (or (not x23498) x29442)
+:assumption (or x10229 x16861)
+:assumption (or x30271 x11211 x6243 x15861)
+:assumption (or x25615 (not x5192))
+:assumption (or x26950 (not x2582) (not x30179) (not x30875) x10391)
+:assumption (or x9772 x24455)
+:assumption (or x25659 (not x15498) x17954)
+:assumption (or x31871 x21108)
+:assumption (or (not x27545) (not x12544))
+:assumption (or (not x18450) x11463)
+:assumption (or x5486 (not x7327))
+:assumption (or x12623 (not x15046))
+:assumption (or x15830 (not x5255))
+:assumption (or x8992 x30056)
+:assumption (or (not x27991) x24796)
+:assumption (or x137 x29886)
+:assumption (or x9896 x17663)
+:assumption (or x12166 (not x24039))
+:assumption (or x4345 x27245)
+:assumption (or (not x29333) (not x15277))
+:assumption (or (not x5128) (not x21298) (not x23285) x9278)
+:assumption (or x23726 x19371 x2540 x15685 x16958 x11958)
+:assumption (or (not x21824) (not x2296))
+:assumption (or x18196 (not x27723))
+:assumption (or x1947 x2133)
+:assumption (or (not x10132) x15720)
+:assumption (or (not x96) (not x26061))
+:assumption (or x21708 x5668)
+:assumption (or (not x7891) x31232)
+:assumption (or (not x20247) (not x20087) (not x24756) (not x25039))
+:assumption (or (not x29896) (not x20813))
+:assumption (or x29486 (not x19512))
+:assumption (or x2086 (not x13300))
+:assumption (or x9444 (not x1328))
+:assumption (or x23244 x28546)
+:assumption (or x25357 x27236)
+:assumption (or x10699 (not x6951))
+:assumption (or x24297 (not x13583))
+:assumption (or (not x1987) (not x16114))
+:assumption (or x12045 x22859)
+:assumption (or x14967 x13163)
+:assumption (or (not x28269) x17438)
+:assumption (or x1615 (not x1827))
+:assumption (or x13568 x6525)
+:assumption (or x9110 x15572 (not x14881) (not x31535) (not x27276) x5944 x3921 x27911)
+:assumption (or x119 (not x9628))
+:assumption (or (not x27577) (not x8222))
+:assumption (or (not x21569) x31767)
+:assumption (or x23480 (not x19992))
+:assumption (or x5549 (not x15720))
+:assumption (or x20531 (not x9863) x12682 (not x21250) (not x24307) x28912 (not x18858))
+:assumption (or (not x24719) x16025 x20700)
+:assumption (or (not x12351) x21085)
+:assumption (or (not x6507) x2430)
+:assumption (or (not x24638) x13019)
+:assumption (or x3464 x2494)
+:assumption (or x4228 x12397 x7019)
+:assumption (or x9978 (not x2064))
+:assumption (or (not x15086) (not x29096))
+:assumption (or (not x16004) x1709 (not x17837) x5523 x1692 (not x12887) (not x20023) (not x6607))
+:assumption (or x25659 x17252)
+:assumption (or (not x4828) (not x18134))
+:assumption (or (not x4136) x4246)
+:assumption (or (not x15115) x14092)
+:assumption (or x22386 x2040 (not x753) (not x5009) (not x23244) x29224)
+:assumption (or (not x19467) (not x12847))
+:assumption (or (not x18942) (not x598))
+:assumption (or x354 (not x17463))
+:assumption (or (not x23189) x21193)
+:assumption (or (not x697) x8661)
+:assumption (or x21114 (not x20637))
+:assumption (or (not x20197) x23657)
+:assumption (or (not x9267) x3574)
+:assumption (or x4792 (not x14708))
+:assumption (or x24702 (not x22483) (not x24139) x8305)
+:assumption (or x13425 (not x25592))
+:assumption (or (not x31869) x27043)
+:assumption (or x24150 (not x30425))
+:assumption (or (not x17534) (not x24262))
+:assumption (or x12201 (not x10093))
+:assumption (or (not x9531) (not x11956))
+:assumption (or (not x25223) (not x9697))
+:assumption (or x20906 x20148 (not x30671))
+:assumption (or (not x4537) (not x23325))
+:assumption (or x12633 x18426)
+:assumption (or x1713 (not x1427))
+:assumption (or x29388 (not x18893))
+:assumption (or (not x19197) (not x11531))
+:assumption (or (not x31829) x4133)
+:assumption (or x1134 (not x13808))
+:assumption (or x7897 (not x15389))
+:assumption (or x30582 x23977)
+:assumption (or x1471 (not x18546))
+:assumption (or x23399 x16500 x7537 x19839)
+:assumption (or x20482 x7872)
+:assumption (or (not x2851) x202)
+:assumption (or (not x24463) (not x1501))
+:assumption (or x24941 (not x26621))
+:assumption (or x24927 x27707)
+:assumption (or x23958 x22644)
+:assumption (or x31411 (not x3173) (not x11910) x17170 x1184)
+:assumption (or x18063 (not x639))
+:assumption (or (not x16994) (not x12785))
+:assumption (or x27036 (not x7981))
+:assumption (or x11203 (not x31106) x23706)
+:assumption (or (not x19902) x6754)
+:assumption (or x30138 (not x9025) (not x26530))
+:assumption (or (not x21298) (not x689) x25475 (not x15848))
+:assumption (or (not x30113) (not x4698) (not x4966) (not x31719))
+:assumption (or (not x12643) x17174)
+:assumption (or (not x2984) x9091 x26042 x21639 (not x23286))
+:assumption (or x5105 x6350)
+:assumption (or x5528 x23276)
+:assumption (or x31615 x1826)
+:assumption (or (not x10707) x18399)
+:assumption (or (not x30514) x15089)
+:assumption (or (not x5044) x28134)
+:assumption (or x18127 x7541)
+:assumption (or x1035 x19719)
+:assumption (or (not x2386) (not x9045) (not x9681))
+:assumption (or (not x29714) x26777)
+:assumption (or (not x8585) (not x31577) (not x19084) (not x11371))
+:assumption (or (not x10341) (not x2251))
+:assumption (or (not x8527) (not x20543))
+:assumption (or (not x25421) x3468)
+:assumption (or x18333 (not x2383) x25927 (not x22378) x20745 x3728)
+:assumption (or (not x26) x14053)
+:assumption (or x1104 (not x919))
+:assumption (or (not x27941) (not x23134) (not x8002) x31551)
+:assumption (or x23792 (not x13099))
+:assumption (or x21518 (not x24325))
+:assumption (or x18859 x10146 x30782 (not x30572) (not x23353) (not x19958) (not x20222) x9051)
+:assumption (or (not x6717) (not x5696) (not x24193) (not x24028) x28389)
+:assumption (or x21345 x18003 x18862)
+:assumption (or x1139 x25765)
+:assumption (or (not x23244) (not x14491))
+:assumption (or x14976 x25008)
+:assumption (or x28107 x30428)
+:assumption (or x5498 (not x28691))
+:assumption (or x17492 (not x26278))
+:assumption (or x24388 x2719)
+:assumption (or (not x54) (not x27272))
+:assumption (or (not x11557) x4864 x22225 x21211)
+:assumption (or x16970 x3435)
+:assumption (or (not x19135) x28712)
+:assumption (or x21653 x11940 (not x3505))
+:assumption (or (not x2601) (not x27883) (not x101) x20739 (not x18780) (not x22548) x13430 x12675)
+:assumption (or x29311 x22050 x18698 (not x2591) x8631 x20805)
+:assumption (or x483 x23987)
+:assumption (or x26061 (not x26771))
+:assumption (or x16315 (not x16685) x14950 (not x5195))
+:assumption (or (not x23247) (not x29206))
+:assumption (or (not x22448) (not x19864) x18003 x13477)
+:assumption (or x24422 x28086 (not x5524))
+:assumption (or x14720 x20898 x28706)
+:assumption (or x1442 (not x14959))
+:assumption (or x16914 (not x4991))
+:assumption (or (not x9342) x15388)
+:assumption (or (not x14890) (not x24701))
+:assumption (or x3343 (not x15467))
+:assumption (or (not x27206) x16582)
+:assumption (or x5020 x12752 x19249 (not x16144))
+:assumption (or (not x29930) (not x14417))
+:assumption (or (not x12856) (not x27605))
+:assumption (or (not x6113) (not x6582))
+:assumption (or (not x13188) (not x24121) x19184)
+:assumption (or (not x22388) (not x18046))
+:assumption (or (not x1304) (not x4903) (not x14752) (not x3976) (not x7308) x14736 (not x18081) x26716)
+:assumption (or x20232 x3922 (not x13075))
+:assumption (or x31681 (not x17845))
+:assumption (or x22279 (not x30138))
+:assumption (or x13521 x23523)
+:assumption (or x1389 x16825)
+:assumption (or (not x16117) (not x22589) x17215)
+:assumption (or x12676 (not x31462) x22978)
+:assumption (or x5528 x19932)
+:assumption (or x14045 x1102)
+:assumption (or (not x26354) (not x3483))
+:assumption (or x4444 x1067 x10874)
+:assumption (or x24507 (not x30393) (not x24342))
+:assumption (or (not x6894) (not x17089) (not x19470) x393 (not x2863))
+:assumption (or x2521 (not x24734))
+:assumption (or x11758 x28238)
+:assumption (or (not x16537) (not x5528))
+:assumption (or (not x17738) x21484)
+:assumption (or x15237 x8490)
+:assumption (or (not x20863) (not x24094) x18338 (not x25326) x3035 x5813 x25192 (not x5778))
+:assumption (or (not x25659) (not x12991) x13386)
+:assumption (or x6767 x1869)
+:assumption (or (not x4413) (not x3788))
+:assumption (or x147 (not x27479))
+:assumption (or (not x8002) (not x22416) (not x23244) (not x7686))
+:assumption (or (not x4034) x6289 (not x14048))
+:assumption (or (not x30084) x21298)
+:assumption (or (not x8529) (not x12100))
+:assumption (or (not x6487) (not x28127))
+:assumption (or (not x16717) (not x5682) (not x23762) (not x12318))
+:assumption (or x10999 (not x25683))
+:assumption (or x24469 x30837)
+:assumption (or x25364 x16387)
+:assumption (or x25008 (not x7619))
+:assumption (or (not x29532) x27161)
+:assumption (or (not x25573) (not x25659))
+:assumption (or x2534 x25212)
+:assumption (or (not x16583) x8202 x11281 (not x17359))
+:assumption (or (not x10576) x10994)
+:assumption (or (not x15573) (not x14285))
+:assumption (or (not x11457) (not x5710))
+:assumption (or (not x6573) (not x7732))
+:assumption (or (not x3715) x31312)
+:assumption (or (not x6038) (not x20478))
+:assumption (or x13520 x30113)
+:assumption (or (not x9664) x26013)
+:assumption (or x11196 (not x23244))
+:assumption (or (not x26632) (not x29877) x9439 (not x25334))
+:assumption (or (not x5723) (not x16693))
+:assumption (or x827 (not x1878))
+:assumption (or (not x7278) x440)
+:assumption (or x10723 x27751 x5529)
+:assumption (or (not x11644) x2945)
+:assumption (or x3668 (not x28639))
+:assumption (or x89 (not x24884))
+:assumption (or x12657 (not x20564))
+:assumption (or (not x26634) (not x27948) (not x16413))
+:assumption (or (not x10698) (not x22829))
+:assumption (or x1004 x11158)
+:assumption (or x9944 x27725)
+:assumption (or x23399 x253)
+:assumption (or x7482 (not x26296))
+:assumption (or (not x20838) x14774)
+:assumption (or (not x20402) x13164)
+:assumption (or (not x9008) x17768)
+:assumption (or (not x9505) x8961)
+:assumption (or x6732 x3651)
+:assumption (or (not x17109) (not x13977))
+:assumption (or x26017 (not x17484) x20589 (not x18182) x7977)
+:assumption (or (not x1682) (not x18402))
+:assumption (or (not x4373) x3838)
+:assumption (or (not x31641) x20533)
+:assumption (or x22300 x14742)
+:assumption (or (not x17696) x1059)
+:assumption (or (not x11009) (not x20796))
+:assumption (or x30664 (not x25659))
+:assumption (or x2912 (not x1728))
+:assumption (or x29424 (not x26319))
+:assumption (or (not x18561) x3984)
+:assumption (or x15822 (not x9400))
+:assumption (or (not x1413) x15866)
+:assumption (or (not x21994) x30563)
+:assumption (or x17454 x31928)
+:assumption (or x7086 (not x3247) x16003)
+:assumption (or x12648 x18032)
+:assumption (or (not x11826) (not x3652))
+:assumption (or (not x24922) x16547)
+:assumption (or x24821 x8060)
+:assumption (or (not x10536) (not x22817))
+:assumption (or x3250 (not x21322))
+:assumption (or x16385 (not x2631) x16527 x24448 x21 (not x29394) (not x3019))
+:assumption (or (not x27633) x20873 (not x1621) x28885 x30110 (not x15033))
+:assumption (or x8501 x142)
+:assumption (or x23744 x20134)
+:assumption (or x8659 x2498)
+:assumption (or x649 x13845)
+:assumption (or (not x472) (not x19682))
+:assumption (or (not x9474) x23333)
+:assumption (or x25968 x12374)
+:assumption (or (not x5713) (not x25620))
+:assumption (or x31293 x21298)
+:assumption (or x23641 (not x13838))
+:assumption (or x21653 (not x6068) x27084)
+:assumption (or x20216 (not x7992))
+:assumption (or x25631 (not x16510))
+:assumption (or x11349 (not x7237))
+:assumption (or x31743 (not x18628))
+:assumption (or x5753 x12678)
+:assumption (or (not x287) (not x13956))
+:assumption (or (not x9802) x21637)
+:assumption (or x13340 x13426)
+:assumption (or x19711 (not x23244) x22838)
+:assumption (or (not x8280) (not x20473) (not x14168) (not x14933))
+:assumption (or (not x30490) (not x25329))
+:assumption (or x8898 (not x20056))
+:assumption (or x1131 (not x24231))
+:assumption (or (not x29485) (not x28421))
+:assumption (or x3733 x11091)
+:assumption (or (not x26668) x17110)
+:assumption (or (not x21949) x2494)
+:assumption (or (not x15643) (not x2023))
+:assumption (or x805 (not x21369) (not x10033) x23244 x8002)
+:assumption (or x24655 (not x21560))
+:assumption (or (not x12796) x20258)
+:assumption (or x23244 x16332 x13411 x8002 (not x24593))
+:assumption (or x24551 (not x28819) x29088)
+:assumption (or x7584 x13735 (not x19357) (not x18536))
+:assumption (or x29869 x7954 (not x3125) (not x21298))
+:assumption (or x15626 x23337 (not x10905) x13375 (not x297))
+:assumption (or (not x30429) (not x25394))
+:assumption (or (not x4107) x5738)
+:assumption (or x24414 x2215)
+:assumption (or x23386 x10404)
+:assumption (or (not x5769) x20546)
+:assumption (or (not x827) (not x31655))
+:assumption (or x24716 (not x6835))
+:assumption (or x25459 (not x11579))
+:assumption (or (not x22955) x16727)
+:assumption (or x22352 x16333)
+:assumption (or x6559 x25977)
+:assumption (or x25728 (not x2881))
+:assumption (or x28747 x31905)
+:assumption (or x15435 x20921 x27614 x9803 (not x18022))
+:assumption (or (not x4386) x9264)
+:assumption (or (not x28544) (not x29312) x15892)
+:assumption (or (not x739) x29365 (not x10326) (not x3619) x17154)
+:assumption (or x7193 (not x1582))
+:assumption (or x7517 x9901)
+:assumption (or x12078 x4971)
+:assumption (or (not x18356) (not x21509))
+:assumption (or x8530 x16416 (not x7294) (not x29758))
+:assumption (or x16658 (not x14819))
+:assumption (or (not x26914) (not x22011))
+:assumption (or x14635 (not x24010))
+:assumption (or (not x28413) x8952)
+:assumption (or x30095 (not x17083))
+:assumption (or x26768 (not x23771))
+:assumption (or (not x20885) (not x12243))
+:assumption (or (not x4651) x7126)
+:assumption (or (not x18907) x28617)
+:assumption (or (not x27636) x12115)
+:assumption (or x15704 x2941)
+:assumption (or x3805 x18980)
+:assumption (or x1721 x29253)
+:assumption (or x26101 x7854)
+:assumption (or (not x13812) (not x16747))
+:assumption (or x9008 x27367)
+:assumption (or (not x2618) (not x25953) (not x13622))
+:assumption (or (not x495) (not x11931))
+:assumption (or x27741 (not x21714))
+:assumption (or x4982 x29442)
+:assumption (or (not x4308) x15353)
+:assumption (or (not x24675) (not x28468))
+:assumption (or (not x583) x15795 (not x3177) (not x17820) x21117)
+:assumption (or x3355 x29832)
+:assumption (or (not x20223) x30124 x26599 x16409)
+:assumption (or (not x1121) x35)
+:assumption (or (not x15969) x15836)
+:assumption (or x4898 (not x30505))
+:assumption (or x5269 x27415)
+:assumption (or x30100 (not x30616) (not x24696) (not x13118) (not x7590) (not x13663) (not x7879) (not x7934) (not x31476))
+:assumption (or x8048 x2674 x19692 (not x2113) (not x13455) x24813 x15281 x1236 x19779)
+:assumption (or x30971 (not x24201))
+:assumption (or (not x28420) (not x9593))
+:assumption (or x8717 (not x14309))
+:assumption (or (not x21815) x13865)
+:assumption (or x16198 (not x9040))
+:assumption (or (not x10633) x4714)
+:assumption (or (not x8042) x14455)
+:assumption (or x5261 (not x11915))
+:assumption (or (not x31036) x15004)
+:assumption (or x29058 (not x14864))
+:assumption (or (not x8078) x22483)
+:assumption (or x20124 x26388)
+:assumption (or (not x30632) x29773)
+:assumption (or (not x23827) x28203)
+:assumption (or (not x13120) (not x17873))
+:assumption (or x31534 x28948)
+:assumption (or (not x29619) (not x17999))
+:assumption (or x9497 x27996)
+:assumption (or x12324 (not x9177))
+:assumption (or (not x18460) (not x8002))
+:assumption (or (not x27405) x19866)
+:assumption (or (not x25113) (not x9270))
+:assumption (or (not x4898) x30505 (not x11333) (not x20520) x5942 x18980 (not x20831))
+:assumption (or (not x7997) x16850)
+:assumption (or x12668 x13642)
+:assumption (or (not x2158) (not x11558))
+:assumption (or x18198 x20201)
+:assumption (or x12474 x2784 x10150)
+:assumption (or x23451 (not x6411))
+:assumption (or (not x27349) x9327)
+:assumption (or x7825 (not x19443))
+:assumption (or x10095 x13549)
+:assumption (or x30884 (not x20935))
+:assumption (or x1230 (not x25659) (not x28662))
+:assumption (or x31524 x22981)
+:assumption (or (not x25615) x17668)
+:assumption (or (not x754) x30606 x10040 (not x29410))
+:assumption (or x12647 x25911 x13754 x28974)
+:assumption (or (not x27638) (not x9762))
+:assumption (or x6449 (not x28100))
+:assumption (or (not x17158) (not x27907))
+:assumption (or x16097 (not x16542) x10874 x3829 x18307)
+:assumption (or (not x6591) x31378)
+:assumption (or x1197 x16994)
+:assumption (or x3078 (not x11846))
+:assumption (or x8983 (not x25213))
+:assumption (or x13523 (not x24163))
+:assumption (or (not x15315) (not x8943))
+:assumption (or x27839 (not x5471))
+:assumption (or (not x17493) x11249)
+:assumption (or (not x13022) x7345)
+:assumption (or x25296 x12569)
+:assumption (or (not x21759) x16802)
+:assumption (or x1090 x15575)
+:assumption (or (not x6128) (not x2980))
+:assumption (or (not x24353) x4084 x12382 x7222)
+:assumption (or x23580 x29152)
+:assumption (or (not x22240) (not x15291))
+:assumption (or (not x31132) x23562)
+:assumption (or x6150 (not x12923))
+:assumption (or x29443 x17840 x14131)
+:assumption (or x9178 (not x19374))
+:assumption (or (not x30120) x87 x2733 x4239 (not x28601))
+:assumption (or x2040 x12926)
+:assumption (or (not x6149) x21889)
+:assumption (or (not x13510) (not x5028))
+:assumption (or (not x16997) (not x29729))
+:assumption (or x16237 x29256 (not x3552) x3795)
+:assumption (or (not x18525) (not x26294))
+:assumption (or (not x31167) (not x32))
+:assumption (or x8019 x7085 x12420 x14337 x26254)
+:assumption (or (not x13359) (not x19273))
+:assumption (or x3440 x12511)
+:assumption (or x24712 (not x6355))
+:assumption (or (not x18965) (not x17874))
+:assumption (or x1756 x21321)
+:assumption (or (not x22413) x13173)
+:assumption (or (not x8532) x31613 x22025)
+:assumption (or x16185 (not x14535))
+:assumption (or (not x10665) (not x4741))
+:assumption (or (not x29196) x4085)
+:assumption (or (not x2682) (not x781))
+:assumption (or (not x10207) x26417)
+:assumption (or (not x3001) x25368)
+:assumption (or x26036 x21611)
+:assumption (or x2377 x25659)
+:assumption (or (not x27146) (not x23520))
+:assumption (or x16494 (not x14864))
+:assumption (or (not x5352) x16621)
+:assumption (or x29777 x21330 x25640 x20256)
+:assumption (or x31711 (not x25294))
+:assumption (or (not x29644) (not x25119))
+:assumption (or (not x31075) x16304)
+:assumption (or (not x15540) (not x26154))
+:assumption (or x22245 (not x24722))
+:assumption (or x26617 (not x9502))
+:assumption (or (not x26136) x20814)
+:assumption (or x4843 (not x25366))
+:assumption (or x16070 x17096)
+:assumption (or (not x18032) x22265 (not x5528) (not x14288))
+:assumption (or (not x15188) (not x23863))
+:assumption (or (not x10737) (not x11506))
+:assumption (or x18832 (not x14170))
+:assumption (or (not x15552) x12193)
+:assumption (or x18370 (not x26677))
+:assumption (or (not x20379) (not x27838))
+:assumption (or x8583 x10154)
+:assumption (or x25989 (not x1601))
+:assumption (or x12030 (not x21298))
+:assumption (or (not x2619) (not x14628))
+:assumption (or (not x7911) (not x8344) x11538 x14100)
+:assumption (or (not x24557) (not x29785))
+:assumption (or (not x19154) x17207)
+:assumption (or (not x20343) (not x31294))
+:assumption (or x20651 (not x19284))
+:assumption (or (not x31179) x20413)
+:assumption (or x10108 x18730)
+:assumption (or (not x5467) x9727)
+:assumption (or x18959 x7307)
+:assumption (or (not x17599) x7693)
+:assumption (or x14678 (not x5554))
+:assumption (or x17037 (not x9191))
+:assumption (or (not x4082) (not x9024))
+:assumption (or x23624 (not x23244))
+:assumption (or x30733 x7263)
+:assumption (or x15359 x2520)
+:assumption (or x24107 x26312)
+:assumption (or x11529 x10382)
+:assumption (or (not x19797) (not x19366))
+:assumption (or (not x14499) (not x23815))
+:assumption (or x18310 (not x21245))
+:assumption (or (not x14680) x29443)
+:assumption (or (not x21421) x2362)
+:assumption (or (not x27163) x12293)
+:assumption (or (not x583) (not x17820) x23915 x14591 x21117)
+:assumption (or (not x27199) x19526)
+:assumption (or (not x21653) (not x17642) (not x21008))
+:assumption (or x28538 x9768)
+:assumption (or (not x25511) (not x20006))
+:assumption (or x25853 (not x23942))
+:assumption (or x13576 x8119 x20650)
+:assumption (or (not x14416) (not x14331))
+:assumption (or (not x1720) (not x9351))
+:assumption (or (not x21015) (not x22075))
+:assumption (or x3948 (not x136))
+:assumption (or x9126 x23038)
+:assumption (or (not x8066) x17671)
+:assumption (or (not x23569) (not x964))
+:assumption (or x24230 x26787)
+:assumption (or x28660 x10527)
+:assumption (or x16790 (not x15809))
+:assumption (or x4151 x8602)
+:assumption (or x28832 (not x1241))
+:assumption (or (not x10401) x22120)
+:assumption (or x4646 x11992)
+:assumption (or x9531 x4953 x18183)
+:assumption (or x6787 x29305)
+:assumption (or (not x14399) x13326)
+:assumption (or (not x3782) x5419)
+:assumption (or (not x2960) (not x26794))
+:assumption (or x258 x8992)
+:assumption (or (not x20911) x28494)
+:assumption (or (not x25620) x11288)
+:assumption (or (not x28553) (not x29649))
+:assumption (or (not x3) x26810)
+:assumption (or (not x29606) x28005)
+:assumption (or x1167 (not x23715))
+:assumption (or (not x14742) x27062)
+:assumption (or (not x20706) (not x26297) (not x27039))
+:assumption (or (not x9423) x979)
+:assumption (or x10694 x20231)
+:assumption (or (not x5665) (not x18343) x21366 x25424 (not x9701) (not x1388) (not x539))
+:assumption (or x8577 x13205)
+:assumption (or x146 (not x30386))
+:assumption (or (not x5775) x12403)
+:assumption (or x21653 x18562)
+:assumption (or (not x30653) x16362 x23244 x8002 x18460)
+:assumption (or x15420 (not x15999))
+:assumption (or (not x30208) (not x12655))
+:assumption (or (not x27250) (not x26284))
+:assumption (or (not x30725) x13138)
+:assumption (or (not x18686) (not x23244))
+:assumption (or x7008 (not x31499))
+:assumption (or (not x31829) (not x12383) x20585)
+:assumption (or (not x23726) x28153)
+:assumption (or (not x3892) (not x25557))
+:assumption (or x1984 (not x2064))
+:assumption (or (not x14517) (not x18252))
+:assumption (or (not x23710) x20030)
+:assumption (or x18029 (not x28885))
+:assumption (or x5038 x15670)
+:assumption (or x17577 x22712)
+:assumption (or x17611 x10874 (not x8914) (not x7918) x17315 (not x14557))
+:assumption (or (not x10100) x5367 (not x5873))
+:assumption (or x30917 x4073 (not x15787) (not x20324) (not x9367))
+:assumption (or x6780 x24105)
+:assumption (or x23941 x17972)
+:assumption (or (not x7653) (not x3071))
+:assumption (or x18427 (not x25384))
+:assumption (or x15596 x30116 x22474)
+:assumption (or x3736 (not x10380))
+:assumption (or (not x11788) (not x21525))
+:assumption (or (not x11228) x23386 x28242 (not x9433))
+:assumption (or x18180 (not x3232))
+:assumption (or x990 (not x555))
+:assumption (or (not x6911) (not x27808))
+:assumption (or x6594 (not x26857))
+:assumption (or (not x22643) x8961)
+:assumption (or (not x27161) x9537)
+:assumption (or (not x24011) x15610 (not x29845) (not x30861) x16067)
+:assumption (or (not x1900) x24991)
+:assumption (or (not x27537) x15695 (not x4239))
+:assumption (or x23736 (not x13001))
+:assumption (or x28276 x3599)
+:assumption (or x201 (not x3011) (not x28056))
+:assumption (or x30591 (not x22863))
+:assumption (or (not x23040) (not x11917))
+:assumption (or x8507 x26305)
+:assumption (or (not x9754) (not x6955))
+:assumption (or x30192 (not x26182))
+:assumption (or (not x9375) x12225)
+:assumption (or x18241 (not x23760))
+:assumption (or x1042 (not x18478))
+:assumption (or (not x25315) x8755)
+:assumption (or (not x23337) (not x18859))
+:assumption (or (not x30456) (not x9871))
+:assumption (or (not x14411) x10427)
+:assumption (or x21551 (not x27237))
+:assumption (or x7000 x29453 x21182 x1393 x24370 x3802 (not x16539) (not x15960))
+:assumption (or (not x884) (not x10767))
+:assumption (or x8088 x31392)
+:assumption (or x11901 (not x28085))
+:assumption (or x9444 x7049)
+:assumption (or (not x14804) x31819)
+:assumption (or (not x9019) (not x23288))
+:assumption (or x19882 (not x20169))
+:assumption (or (not x18092) (not x21298))
+:assumption (or (not x11790) (not x18769))
+:assumption (or x9242 x21710)
+:assumption (or x6052 (not x4735))
+:assumption (or (not x5759) (not x1487))
+:assumption (or (not x17070) (not x3684))
+:assumption (or (not x13177) x29378)
+:assumption (or (not x24578) (not x5528))
+:assumption (or x24093 (not x20173) (not x7181))
+:assumption (or x8570 x13893)
+:assumption (or x23904 x25659)
+:assumption (or x18416 (not x3793))
+:assumption (or (not x5618) x5265)
+:assumption (or x28732 x10592)
+:assumption (or x17247 x8040)
+:assumption (or x19529 (not x25956))
+:assumption (or x30653 (not x28934))
+:assumption (or (not x3388) x13956)
+:assumption (or x26052 (not x29919))
+:assumption (or (not x18412) x7439)
+:assumption (or (not x2647) x29888)
+:assumption (or (not x1462) (not x14296))
+:assumption (or (not x10874) x6564 (not x6307) (not x29272))
+:assumption (or (not x25659) (not x18015))
+:assumption (or (not x7052) (not x12848))
+:assumption (or (not x27174) x19864 x26678)
+:assumption (or x25136 (not x28267) (not x827))
+:assumption (or x29193 x8277)
+:assumption (or (not x24216) (not x3647))
+:assumption (or x15531 (not x24850))
+:assumption (or x20399 x31829)
+:assumption (or x21439 (not x211) x3182 x20529 x486 x31157 x29823 (not x25362))
+:assumption (or x19428 x26231)
+:assumption (or (not x29912) x10561)
+:assumption (or x14055 x30805 x4544)
+:assumption (or x28685 x3216)
+:assumption (or (not x23569) x23293)
+:assumption (or x7938 x14647)
+:assumption (or (not x7090) x19641)
+:assumption (or (not x12780) x19328)
+:assumption (or (not x20325) (not x15898))
+:assumption (or x27216 x11508 (not x25080) x30718 x18604 (not x29113) (not x4960) (not x2059))
+:assumption (or x15671 x28343)
+:assumption (or x25236 (not x14931) x20060 x11755)
+:assumption (or (not x29442) (not x7822) (not x8120) (not x5028))
+:assumption (or x10692 x28340)
+:assumption (or (not x3629) x24952)
+:assumption (or (not x11196) x23244 x31300)
+:assumption (or x26713 x28792)
+:assumption (or x3114 (not x4612))
+:assumption (or x17178 x18105)
+:assumption (or x9008 (not x5229) x26841 (not x3806) x4054 x27888)
+:assumption (or (not x24206) (not x21513))
+:assumption (or x12438 x9265)
+:assumption (or (not x6151) (not x5282))
+:assumption (or (not x29082) x30752)
+:assumption (or x20354 (not x20818))
+:assumption (or (not x6095) (not x4642))
+:assumption (or (not x26241) (not x25562))
+:assumption (or x8229 (not x3836))
+:assumption (or x2025 (not x11555))
+:assumption (or x24307 (not x528))
+:assumption (or (not x5528) x23223 (not x23372) (not x27158) (not x29922) (not x2089))
+:assumption (or x16679 x1913 (not x25659))
+:assumption (or x16408 (not x11534))
+:assumption (or (not x4285) (not x10440))
+:assumption (or (not x5408) x20962)
+:assumption (or x19025 (not x28558))
+:assumption (or (not x2477) (not x10668))
+:assumption (or (not x14839) (not x17087) x31416)
+:assumption (or x15769 (not x6130))
+:assumption (or x7076 x3462)
+:assumption (or x14095 x17667)
+:assumption (or (not x27560) (not x23073))
+:assumption (or x3607 (not x6670))
+:assumption (or (not x3782) (not x27959))
+:assumption (or x29018 x29360)
+:assumption (or x13416 x17609)
+:assumption (or x25489 x3884)
+:assumption (or x13634 (not x8662))
+:assumption (or x15579 x9008)
+:assumption (or (not x22490) x8807 x30926)
+:assumption (or x24058 x27433 x5528)
+:assumption (or x28056 x18103)
+:assumption (or (not x24248) x21424)
+:assumption (or (not x23221) (not x20047))
+:assumption (or x27004 x11910)
+:assumption (or (not x19354) x25818 x20050 x16942)
+:assumption (or x7617 (not x19521))
+:assumption (or x25345 x9025)
+:assumption (or x7082 (not x7801))
+:assumption (or x6936 (not x6409) (not x8532))
+:assumption (or x26718 x2573)
+:assumption (or x23850 (not x7080))
+:assumption (or x12861 x28487)
+:assumption (or x5696 (not x26928) (not x19992))
+:assumption (or x21274 (not x16014))
+:assumption (or (not x17635) x14694)
+:assumption (or (not x14304) x5528)
+:assumption (or (not x2580) (not x13942))
+:assumption (or x31700 (not x14603) (not x17530) x4522)
+:assumption (or x30003 x15849)
+:assumption (or x22147 x964)
+:assumption (or x7894 (not x5451))
+:assumption (or x18456 (not x4418) x5068)
+:assumption (or (not x13956) (not x7294) x507 x23244 x8002)
+:assumption (or x5133 (not x1668))
+:assumption (or (not x5876) x27504)
+:assumption (or x31664 (not x1424))
+:assumption (or x23706 (not x24599))
+:assumption (or x29812 x1431)
+:assumption (or (not x28969) x28477)
+:assumption (or (not x18069) x19282)
+:assumption (or (not x16451) (not x8847))
+:assumption (or x7518 (not x3993))
+:assumption (or x6856 x15269)
+:assumption (or (not x19711) x11791 x7878)
+:assumption (or (not x19501) x21425)
+:assumption (or (not x9930) (not x11895))
+:assumption (or x20802 x5638)
+:assumption (or x1393 x11985 x9719)
+:assumption (or (not x13586) x12287 x4056)
+:assumption (or x12923 (not x22600))
+:assumption (or x26670 x15217 x22681)
+:assumption (or (not x24311) x85)
+:assumption (or (not x2961) (not x16964))
+:assumption (or x6638 x8002 (not x23766))
+:assumption (or (not x8047) x20909)
+:assumption (or (not x25646) (not x30110))
+:assumption (or (not x19136) (not x3693))
+:assumption (or (not x123) x2079)
+:assumption (or x29960 x17641)
+:assumption (or (not x27012) (not x2629))
+:assumption (or x30971 x9097)
+:assumption (or (not x1061) x15430)
+:assumption (or x16345 (not x23958))
+:assumption (or x4998 (not x23244))
+:assumption (or x11618 x20715)
+:assumption (or x14918 (not x24106))
+:assumption (or (not x9974) (not x19191))
+:assumption (or (not x30980) x22781)
+:assumption (or x19970 (not x31081))
+:assumption (or (not x29548) x30349)
+:assumption (or x25934 (not x19836))
+:assumption (or (not x1312) x31279)
+:assumption (or (not x22528) (not x3397))
+:assumption (or x9041 (not x13244))
+:assumption (or (not x7137) x14108 x29625 x16758)
+:assumption (or (not x29275) (not x2943))
+:assumption (or (not x13179) (not x19477))
+:assumption (or (not x15137) x6514)
+:assumption (or (not x21298) (not x31719) (not x4966) x20313)
+:assumption (or (not x26737) x3557 x28995 (not x13550) (not x10235) x18191 x15716 x12238)
+:assumption (or x8002 (not x4892))
+:assumption (or x12472 x6008 x9568 x31240 x9130)
+:assumption (or x25816 (not x30672))
+:assumption (or x22043 (not x1420) (not x1877))
+:assumption (or (not x22225) x11557)
+:assumption (or x18070 (not x18301))
+:assumption (or (not x19975) x19870)
+:assumption (or x5886 x10136)
+:assumption (or x28991 (not x7998))
+:assumption (or x8660 (not x4401) x25366 (not x4900))
+:assumption (or x5176 (not x7942))
+:assumption (or x22550 (not x25911) (not x27461) x11829)
+:assumption (or (not x16779) x21355 x582)
+:assumption (or (not x25766) (not x26606))
+:assumption (or x25442 x16715)
+:assumption (or (not x12301) x23399)
+:assumption (or (not x8745) (not x10946) (not x18069))
+:assumption (or (not x26064) (not x25315))
+:assumption (or (not x1634) (not x31777) (not x13218))
+:assumption (or (not x20813) (not x27680))
+:assumption (or (not x22513) x28219)
+:assumption (or x8331 x30114 (not x17917))
+:assumption (or x17964 (not x5811))
+:assumption (or x28798 (not x4222))
+:assumption (or x22470 (not x9427))
+:assumption (or x10868 x6898)
+:assumption (or x9270 (not x1661))
+:assumption (or (not x21866) (not x11845) x18519 x24056)
+:assumption (or (not x24756) x11599)
+:assumption (or x7730 (not x11395))
+:assumption (or (not x22421) x14329)
+:assumption (or x25299 x7789)
+:assumption (or (not x19651) (not x3265))
+:assumption (or (not x14138) (not x18167) x26951)
+:assumption (or x30911 (not x24849))
+:assumption (or (not x3529) x30780)
+:assumption (or x20949 x6710 (not x14151))
+:assumption (or x5886 (not x30285) x3671)
+:assumption (or (not x19915) x27077)
+:assumption (or (not x22959) (not x25750) (not x15173) x4579 (not x577) (not x28773) (not x22373))
+:assumption (or (not x6413) x873)
+:assumption (or (not x24436) (not x24617))
+:assumption (or x6149 x9698)
+:assumption (or x25176 (not x15262) x18859)
+:assumption (or x20961 x15426 (not x18419) (not x21476) x12284 (not x7756) (not x7309))
+:assumption (or x28519 (not x10132))
+:assumption (or x3063 (not x21623))
+:assumption (or x14221 x19634)
+:assumption (or (not x14073) (not x3519))
+:assumption (or (not x16329) x28372)
+:assumption (or (not x23912) x31829)
+:assumption (or (not x12093) x25339)
+:assumption (or x5947 x10080)
+:assumption (or x2177 (not x31675))
+:assumption (or x31011 (not x28466))
+:assumption (or x3592 x873)
+:assumption (or x1631 x18105)
+:assumption (or x31396 x8002)
+:assumption (or x5281 (not x19304))
+:assumption (or x873 x2054)
+:assumption (or x10392 x4794)
+:assumption (or (not x279) (not x16877))
+:assumption (or (not x17651) x30203)
+:assumption (or (not x12410) (not x2587))
+:assumption (or x20786 x26906)
+:assumption (or x8959 (not x4544))
+:assumption (or x17855 x4776)
+:assumption (or x27140 x24722)
+:assumption (or (not x9063) x24692)
+:assumption (or (not x29548) x762)
+:assumption (or (not x18694) x27752)
+:assumption (or (not x7683) (not x26354))
+:assumption (or x17853 (not x14331))
+:assumption (or x22194 x625)
+:assumption (or (not x22412) (not x22408))
+:assumption (or (not x20108) (not x27557))
+:assumption (or x31688 x31632)
+:assumption (or (not x20209) (not x5874))
+:assumption (or x437 (not x23962))
+:assumption (or x30423 (not x25548))
+:assumption (or (not x28183) (not x11814))
+:assumption (or x29229 x23234 x5709)
+:assumption (or x17284 x30242 (not x16448))
+:assumption (or x16094 (not x142))
+:assumption (or x25423 x27271 (not x3256))
+:assumption (or x24441 (not x9291))
+:assumption (or x28077 x26186)
+:assumption (or (not x30408) x28498)
+:assumption (or x29675 x16449)
+:assumption (or x25183 x11475)
+:assumption (or x6904 (not x6272))
+:assumption (or (not x22791) (not x13155))
+:assumption (or (not x2661) (not x21790))
+:assumption (or x19936 x1414)
+:assumption (or (not x3597) (not x14056))
+:assumption (or (not x16758) (not x14108))
+:assumption (or x9317 (not x8658))
+:assumption (or (not x17214) (not x5943))
+:assumption (or x8116 x22494 (not x23549) x15989 (not x29489) (not x5026))
+:assumption (or x789 (not x5861))
+:assumption (or (not x13753) x11993 (not x23095) (not x21298))
+:assumption (or (not x8163) x9025)
+:assumption (or (not x12923) (not x30186))
+:assumption (or (not x17498) (not x25460))
+:assumption (or x30673 (not x16822))
+:assumption (or (not x29744) (not x11668))
+:assumption (or x9585 x26394)
+:assumption (or x26032 x29442)
+:assumption (or x6200 x29341)
+:assumption (or x23162 x7082)
+:assumption (or (not x31163) (not x21815))
+:assumption (or x12480 (not x3126) x23022)
+:assumption (or (not x4378) x6358)
+:assumption (or x22707 (not x339))
+:assumption (or x23845 (not x7990))
+:assumption (or x8925 x9310)
+:assumption (or (not x19992) (not x14772))
+:assumption (or (not x25955) x3176)
+:assumption (or (not x29360) (not x30760) (not x2657) x953)
+:assumption (or (not x758) x28805)
+:assumption (or x6594 (not x9404))
+:assumption (or x13793 x13539)
+:assumption (or (not x964) x17629 x5394 x20185)
+:assumption (or x17392 (not x20461))
+:assumption (or x18099 x24097)
+:assumption (or (not x27831) x10138)
+:assumption (or x25693 (not x27119))
+:assumption (or (not x1925) (not x26273))
+:assumption (or x23474 x2444)
+:assumption (or x9526 (not x9273))
+:assumption (or (not x23244) (not x7669))
+:assumption (or (not x8917) x29057)
+:assumption (or x22846 x6611)
+:assumption (or x3891 (not x23741))
+:assumption (or (not x27555) (not x19864))
+:assumption (or (not x18302) x22251 (not x26441) (not x3590))
+:assumption (or x9420 (not x22018))
+:assumption (or x14874 x8963)
+:assumption (or (not x17636) (not x23244))
+:assumption (or x18479 (not x15229))
+:assumption (or (not x31872) x27691)
+:assumption (or x23886 x18247)
+:assumption (or (not x25965) x26332)
+:assumption (or x3615 (not x27793))
+:assumption (or x19992 x30561 x6659 (not x11781))
+:assumption (or (not x12575) x7859)
+:assumption (or x30402 (not x9824))
+:assumption (or x27961 x20625)
+:assumption (or x11512 (not x31712))
+:assumption (or (not x17121) (not x1529))
+:assumption (or x5839 x20812)
+:assumption (or (not x15820) x9254)
+:assumption (or (not x9008) (not x21236))
+:assumption (or (not x19364) (not x1508))
+:assumption (or x7174 (not x29046))
+:assumption (or (not x7684) x8160)
+:assumption (or x22277 (not x17016))
+:assumption (or x21583 (not x25871))
+:assumption (or x3219 x264)
+:assumption (or (not x22961) x2288 x15227)
+:assumption (or (not x20914) (not x12865) x24050)
+:assumption (or (not x1049) x25139)
+:assumption (or x11475 (not x1668))
+:assumption (or x3943 x8069)
+:assumption (or (not x20119) (not x22880))
+:assumption (or x10625 x2374)
+:assumption (or x23244 x13902)
+:assumption (or x3615 x14298)
+:assumption (or x14863 (not x31006))
+:assumption (or x699 x15522)
+:assumption (or x1280 (not x964) x26925)
+:assumption (or (not x5317) x11609)
+:assumption (or x7271 (not x13694))
+:assumption (or (not x27358) (not x31560))
+:assumption (or (not x26684) x13169 x15536 x25756 x7071 x18792 x3153 (not x417) (not x4377))
+:assumption (or (not x23572) (not x6307))
+:assumption (or x1615 (not x23907))
+:assumption (or x16010 x5639)
+:assumption (or x22677 (not x30276))
+:assumption (or x3155 x21021 (not x23508) (not x24761) x23823 x4660 x30189)
+:assumption (or x24255 (not x291))
+:assumption (or (not x19787) x16963 (not x13694) (not x29642) x22531)
+:assumption (or x16819 (not x26110))
+:assumption (or x23843 (not x5213))
+:assumption (or (not x26810) (not x27108))
+:assumption (or x29999 (not x2160))
+:assumption (or (not x8163) (not x11374))
+:assumption (or x10675 (not x17189) (not x28732))
+:assumption (or (not x21836) x26718)
+:assumption (or x27349 x11293 x1359 (not x9327))
+:assumption (or (not x20250) x1297)
+:assumption (or x12675 x30940)
+:assumption (or x1393 (not x19623))
+:assumption (or x20516 (not x10046) x3191 (not x11852) (not x382) (not x8532) (not x10761) (not x7324) (not x7692))
+:assumption (or x2739 x790)
+:assumption (or x14080 x21515)
+:assumption (or x14781 x13921)
+:assumption (or x12373 x18360)
+:assumption (or (not x7658) x9012)
+:assumption (or (not x26266) (not x25680))
+:assumption (or (not x12911) x17286)
+:assumption (or (not x4746) (not x24615) (not x19667))
+:assumption (or (not x29049) x5740 (not x11938))
+:assumption (or x9866 (not x21774) x28608 (not x6771))
+:assumption (or (not x8530) (not x3516))
+:assumption (or (not x22781) (not x12529))
+:assumption (or x28838 x28484)
+:assumption (or (not x11484) (not x10598))
+:assumption (or (not x16497) x21298)
+:assumption (or (not x13956) (not x7685))
+:assumption (or (not x20944) x9352)
+:assumption (or (not x20937) x24181)
+:assumption (or (not x18069) x13727)
+:assumption (or (not x20325) x19237 (not x12242))
+:assumption (or (not x8366) x1097)
+:assumption (or (not x23253) x5742)
+:assumption (or x26191 x6164 x677 (not x2543) (not x13905) (not x28116))
+:assumption (or x21009 (not x24978))
+:assumption (or x6913 (not x4260))
+:assumption (or (not x27617) (not x10851))
+:assumption (or x23506 (not x11260))
+:assumption (or (not x20444) x26897)
+:assumption (or (not x27469) (not x12198))
+:assumption (or x10509 (not x15700))
+:assumption (or x13147 x30296)
+:assumption (or (not x3804) (not x22273))
+:assumption (or x22495 (not x2702))
+:assumption (or (not x18582) (not x11384))
+:assumption (or (not x8433) (not x1582))
+:assumption (or (not x6278) (not x17380))
+:assumption (or (not x16043) x17166 x9008 x14173 (not x14705) (not x31638) (not x13143) x832)
+:assumption (or (not x10059) (not x29606))
+:assumption (or (not x23823) x23508)
+:assumption (or x22819 x29380)
+:assumption (or (not x19) x20229 x14192 (not x30208))
+:assumption (or x14068 (not x8272))
+:assumption (or x30113 (not x1418))
+:assumption (or (not x3993) x1877)
+:assumption (or x25364 (not x3832))
+:assumption (or (not x13971) x30135)
+:assumption (or x20163 (not x15396))
+:assumption (or x14945 (not x2539))
+:assumption (or (not x9333) x19992 x7858 (not x5742))
+:assumption (or (not x3987) (not x31383) (not x26897) (not x30138))
+:assumption (or x23384 (not x17503))
+:assumption (or x2694 (not x29442) x19757)
+:assumption (or (not x13956) (not x18252))
+:assumption (or x11566 x12963)
+:assumption (or (not x12672) x24440 (not x12393) (not x3522))
+:assumption (or x13682 (not x1393))
+:assumption (or (not x9453) x20951)
+:assumption (or x4539 x30261)
+:assumption (or x31204 (not x22756))
+:assumption (or (not x13011) (not x30280) x1393)
+:assumption (or x827 (not x15203) (not x1065))
+:assumption (or x23219 (not x21778))
+:assumption (or (not x6351) (not x20687))
+:assumption (or (not x16648) x8869)
+:assumption (or x28885 x13505)
+:assumption (or x31645 (not x29347))
+:assumption (or x10214 (not x8716) (not x21788) x18963 x16936 (not x19685))
+:assumption (or x6594 (not x30959))
+:assumption (or (not x20567) (not x21910))
+:assumption (or (not x5812) x17236)
+:assumption (or x19673 (not x24948))
+:assumption (or x20283 x16834)
+:assumption (or x2943 x31397)
+:assumption (or (not x5992) (not x25659) (not x11209))
+:assumption (or (not x30530) (not x9608))
+:assumption (or (not x21659) x29312)
+:assumption (or (not x24299) (not x26456) x30243 x21593)
+:assumption (or x16412 (not x11871))
+:assumption (or x18831 x28981)
+:assumption (or x15434 (not x11624))
+:assumption (or x21298 (not x12962))
+:assumption (or x31865 x27703)
+:assumption (or (not x18144) x30751)
+:assumption (or (not x3494) x28271)
+:assumption (or (not x25659) x30542)
+:assumption (or x9531 x23404)
+:assumption (or (not x11956) x7056)
+:assumption (or x16741 x31534)
+:assumption (or (not x126) (not x16484) (not x27941) x12449 x30491 x11810)
+:assumption (or (not x12083) x13034)
+:assumption (or x21298 x11686)
+:assumption (or (not x1071) x27830)
+:assumption (or (not x6619) x17100)
+:assumption (or (not x170) x18180)
+:assumption (or x17997 (not x16836))
+:assumption (or x12440 (not x119))
+:assumption (or x6086 (not x30110))
+:assumption (or (not x27310) (not x13260))
+:assumption (or (not x28984) (not x29606))
+:assumption (or x6939 x29876)
+:assumption (or (not x11928) x24079)
+:assumption (or (not x18584) (not x989) (not x15649))
+:assumption (or (not x21253) (not x316))
+:assumption (or (not x330) (not x23740))
+:assumption (or (not x23244) x20860)
+:assumption (or x8670 x7835)
+:assumption (or x10762 (not x29886) (not x24473) (not x31893) x6469 x18859 (not x23198) x24799)
+:assumption (or x22868 (not x27132))
+:assumption (or (not x7485) (not x11125))
+:assumption (or (not x13956) (not x18009))
+:assumption (or (not x20330) (not x15621))
+:assumption (or (not x17274) x21587)
+:assumption (or x1405 (not x8344) (not x14839))
+:assumption (or x20135 (not x840))
+:assumption (or x1655 (not x28818))
+:assumption (or x19900 (not x21766))
+:assumption (or (not x2271) x24564)
+:assumption (or x15651 (not x18097))
+:assumption (or (not x11935) x4648)
+:assumption (or x19796 x7131)
+:assumption (or (not x2036) x26128)
+:assumption (or x6561 (not x1890))
+:assumption (or (not x1742) (not x13493))
+:assumption (or (not x11201) (not x30727))
+:assumption (or (not x31150) (not x11274))
+:assumption (or (not x3169) (not x30632))
+:assumption (or (not x21988) x6286)
+:assumption (or (not x2115) x17466)
+:assumption (or (not x15835) (not x31035) (not x20606) x14864 x30821 (not x29058) (not x18721))
+:assumption (or x10500 x12144)
+:assumption (or (not x9269) x9989 (not x6274) (not x7034) x15199 (not x17459) (not x7734))
+:assumption (or x27777 (not x6149) (not x21651) x11792)
+:assumption (or x8713 (not x2432))
+:assumption (or (not x21008) (not x22280))
+:assumption (or (not x26985) (not x28541))
+:assumption (or (not x24076) (not x25425))
+:assumption (or (not x29293) x12270)
+:assumption (or (not x2624) (not x1896))
+:assumption (or x30163 (not x17498))
+:assumption (or x2018 (not x4245))
+:assumption (or x20949 x22155)
+:assumption (or (not x28724) x8243)
+:assumption (or x25290 x8551)
+:assumption (or x17452 x1961)
+:assumption (or x3529 (not x30780))
+:assumption (or x21470 x16243)
+:assumption (or x15004 x24720)
+:assumption (or x11239 x11062 x13181 x6590 (not x10071) (not x86))
+:assumption (or x4516 (not x14241))
+:assumption (or x24652 (not x11968))
+:assumption (or x2145 (not x1048))
+:assumption (or (not x8517) (not x30113) x38 x2665)
+:assumption (or x2106 x12993)
+:assumption (or (not x31911) x623)
+:assumption (or (not x17613) (not x6243))
+:assumption (or x17359 (not x26432) (not x4120) x31627)
+:assumption (or (not x29809) x4577)
+:assumption (or x7850 (not x499) x24840 x21298)
+:assumption (or (not x6844) x21699 x19415 x28799 (not x18714) x8658 x14447 (not x30177) x10463)
+:assumption (or x16064 x8638)
+:assumption (or (not x17075) (not x2461))
+:assumption (or x6592 x29280 x12752 (not x480))
+:assumption (or (not x23854) (not x26982))
+:assumption (or x4859 x8602 (not x27345))
+:assumption (or x21328 x4545)
+:assumption (or x24034 (not x19822))
+:assumption (or (not x21020) x24880)
+:assumption (or x21425 x15799)
+:assumption (or x12591 (not x24503))
+:assumption (or x9213 (not x25569))
+:assumption (or (not x31918) x9713 (not x30208) x12966)
+:assumption (or x13031 (not x27225))
+:assumption (or x1826 x20052)
+:assumption (or x19231 x4533)
+:assumption (or x14003 x19006 x19992 x15488)
+:assumption (or x30947 x10060 (not x28989) x25276)
+:assumption (or (not x22556) x15180 x19501 x21298)
+:assumption (or (not x4508) (not x6724))
+:assumption (or (not x12107) x5478)
+:assumption (or x9934 (not x4604))
+:assumption (or x31873 (not x30908))
+:assumption (or (not x12812) x15126)
+:assumption (or x9595 x150)
+:assumption (or (not x22926) x31512)
+:assumption (or (not x14039) (not x13472))
+:assumption (or (not x10446) x28632)
+:assumption (or x19473 x15349)
+:assumption (or (not x22531) (not x27656) x5196)
+:assumption (or (not x15081) (not x29312) (not x30375))
+:assumption (or (not x16409) (not x10938) (not x6588))
+:assumption (or (not x23244) x30580)
+:assumption (or x8620 x13083)
+:assumption (or x30009 (not x9008) (not x13746))
+:assumption (or x2474 x20703)
+:assumption (or x27532 x28301)
+:assumption (or x8091 x14107)
+:assumption (or (not x16039) (not x30818) x24886)
+:assumption (or x24457 x24256)
+:assumption (or x29457 (not x9977))
+:assumption (or (not x8002) (not x17835))
+:assumption (or x9665 x23244)
+:assumption (or x28120 (not x7986))
+:assumption (or x20495 x1223)
+:assumption (or (not x13603) (not x26657) (not x8661) x23865 (not x13942) x2413 x697 x25087)
+:assumption (or (not x26755) (not x22030) (not x3782))
+:assumption (or x8842 (not x29142))
+:assumption (or (not x23308) (not x7051))
+:assumption (or x17534 (not x11756))
+:assumption (or x22306 (not x16102) (not x22495) x22123)
+:assumption (or (not x24473) (not x3328))
+:assumption (or x13416 (not x30770))
+:assumption (or (not x15429) (not x24471))
+:assumption (or x28477 (not x14452))
+:assumption (or x1213 (not x30833))
+:assumption (or x9804 x7970 (not x16892) (not x8343) (not x22092) (not x886))
+:assumption (or x17996 (not x27230) (not x10081))
+:assumption (or x3667 (not x19712))
+:assumption (or x16638 x10339)
+:assumption (or x8314 x26074)
+:assumption (or x6862 (not x17503))
+:assumption (or x10242 x915 x589)
+:assumption (or (not x19731) x24285 (not x4091) (not x6601) x1181 (not x23298))
+:assumption (or x17855 (not x31854))
+:assumption (or (not x6649) (not x2706))
+:assumption (or x9087 (not x1156))
+:assumption (or (not x28699) (not x20262))
+:assumption (or x28661 (not x27911))
+:assumption (or (not x5613) x25820 (not x14715) x22689)
+:assumption (or (not x2381) (not x657))
+:assumption (or (not x19667) x4846 (not x14347))
+:assumption (or x16510 (not x1395))
+:assumption (or (not x3453) (not x11507) (not x31564))
+:assumption (or x28962 (not x22306))
+:assumption (or x15503 (not x9159))
+:assumption (or (not x26419) (not x16048))
+:assumption (or x25659 (not x12787))
+:assumption (or (not x18500) (not x17949) (not x17585) x17499)
+:assumption (or x26570 (not x26627))
+:assumption (or (not x26073) (not x4652))
+:assumption (or x1650 x21121)
+:assumption (or (not x23527) x28023 x8002 x25548 x23244)
+:assumption (or (not x26507) x20641)
+:assumption (or (not x29518) (not x13285))
+:assumption (or x17066 x15992)
+:assumption (or x8613 x9536)
+:assumption (or x3135 (not x21012))
+:assumption (or (not x23934) x29286)
+:assumption (or (not x26713) x7854 x2360)
+:assumption (or (not x25333) (not x24722))
+:assumption (or x19519 (not x2839))
+:assumption (or x17778 x18836)
+:assumption (or x16185 x533 (not x18594))
+:assumption (or x17810 x403)
+:assumption (or (not x17814) x2971)
+:assumption (or x18266 (not x12103))
+:assumption (or (not x6302) (not x18601))
+:assumption (or x29709 x11159)
+:assumption (or x5244 x18801)
+:assumption (or x17338 (not x3867))
+:assumption (or (not x28496) (not x12103))
+:assumption (or (not x30547) x3672)
+:assumption (or (not x2796) x24451)
+:assumption (or (not x22855) (not x16592))
+:assumption (or (not x27861) x11714)
+:assumption (or x29813 (not x7027))
+:assumption (or (not x9851) (not x19786) x19651)
+:assumption (or (not x2204) x30022)
+:assumption (or (not x1744) x31777)
+:assumption (or x14695 x21579)
+:assumption (or x20717 x8805)
+:assumption (or (not x9029) x6166)
+:assumption (or x4555 (not x23498))
+:assumption (or x27340 (not x15115))
+:assumption (or x30009 (not x5476))
+:assumption (or (not x918) (not x30567) (not x14659))
+:assumption (or x29588 (not x22997))
+:assumption (or x21831 (not x15738))
+:assumption (or (not x23765) x18794)
+:assumption (or (not x9208) (not x30113) (not x29784) x6829)
+:assumption (or (not x14515) (not x19161))
+:assumption (or (not x27063) x8779)
+:assumption (or (not x2334) x23396 x13487)
+:assumption (or x27561 x1042)
+:assumption (or x31140 (not x26583))
+:assumption (or x7736 (not x16654))
+:assumption (or (not x9612) x3073)
+:assumption (or (not x13120) (not x4445))
+:assumption (or (not x16920) (not x16661))
+:assumption (or x10874 (not x2698))
+:assumption (or (not x29849) (not x13308))
+:assumption (or (not x9587) x964)
+:assumption (or x26803 (not x20259))
+:assumption (or x20671 x2097)
+:assumption (or x9838 (not x13057))
+:assumption (or x16821 x21298)
+:assumption (or x10560 (not x8255))
+:assumption (or (not x19820) x25082)
+:assumption (or (not x6149) (not x22945) (not x18859) (not x1042) x19992)
+:assumption (or (not x30137) x11963)
+:assumption (or x14699 (not x11258))
+:assumption (or x20606 x5575)
+:assumption (or (not x27326) (not x13872))
+:assumption (or (not x9006) (not x22154))
+:assumption (or x28200 (not x22310))
+:assumption (or (not x14889) x1954)
+:assumption (or (not x29111) (not x29693) (not x22621) (not x16247))
+:assumption (or x13557 x15015)
+:assumption (or x19886 x19731)
+:assumption (or (not x12135) x7393)
+:assumption (or x28541 (not x13332))
+:assumption (or (not x6031) (not x3311))
+:assumption (or (not x17489) x17438)
+:assumption (or x15854 (not x11281) x10805)
+:assumption (or x23636 (not x8987))
+:assumption (or (not x3712) (not x21653) x20095)
+:assumption (or x8043 x11547)
+:assumption (or x144 x26161)
+:assumption (or x15587 (not x31786))
+:assumption (or x3790 (not x1441))
+:assumption (or x31863 (not x21831))
+:assumption (or (not x25919) x22815)
+:assumption (or (not x263) (not x29402))
+:assumption (or x3505 (not x1827))
+:assumption (or x27542 (not x8002) (not x30273))
+:assumption (or x19549 x24959 x16374)
+:assumption (or (not x13576) (not x14851))
+:assumption (or (not x22679) (not x4432))
+:assumption (or (not x5408) (not x19688))
+:assumption (or x4217 x3523)
+:assumption (or x30762 x2217)
+:assumption (or (not x12874) x11445)
+:assumption (or x18018 x5584)
+:assumption (or x20500 (not x31239))
+:assumption (or x1920 x19427)
+:assumption (or x1297 x31185)
+:assumption (or x18352 x8902)
+:assumption (or (not x23188) (not x7545))
+:assumption (or (not x716) (not x9635))
+:assumption (or x23279 x25151 x6102 x9626)
+:assumption (or (not x6031) (not x3908))
+:assumption (or (not x6764) (not x6381))
+:assumption (or x1899 x21953 (not x26223))
+:assumption (or (not x10294) x30753)
+:assumption (or x4613 x6842)
+:assumption (or x5261 (not x27530))
+:assumption (or x6243 (not x23007))
+:assumption (or (not x22477) x19701)
+:assumption (or x15127 x20595)
+:assumption (or (not x26692) (not x21839) x31734 x26703 (not x14822) (not x29831) (not x25859))
+:assumption (or x725 (not x13190))
+:assumption (or (not x27467) (not x13576))
+:assumption (or x28459 (not x7824))
+:assumption (or (not x9531) x16223)
+:assumption (or (not x17912) x19843)
+:assumption (or (not x24756) x14791)
+:assumption (or x11404 (not x30110))
+:assumption (or x2191 (not x2040))
+:assumption (or x4134 x8875)
+:assumption (or (not x20729) x31898 x29676)
+:assumption (or (not x20225) x1393)
+:assumption (or (not x24584) (not x5186))
+:assumption (or (not x17411) (not x754) x6538)
+:assumption (or (not x14553) x16547)
+:assumption (or x8947 (not x21278))
+:assumption (or x3682 x1543 x9008)
+:assumption (or (not x1473) x28566)
+:assumption (or x8181 (not x15918))
+:assumption (or (not x6143) (not x15860) (not x17647) (not x30113))
+:assumption (or (not x8645) x23681)
+:assumption (or (not x25366) x9372 (not x19216))
+:assumption (or x24111 (not x23244))
+:assumption (or (not x5813) x5778)
+:assumption (or x9025 (not x29234))
+:assumption (or x13474 x2951)
+:assumption (or (not x24834) x22397)
+:assumption (or (not x26723) (not x18555) (not x25852))
+:assumption (or (not x31063) (not x25188) (not x25659))
+:assumption (or (not x26551) x12113)
+:assumption (or (not x11070) x656)
+:assumption (or x29346 x2101)
+:assumption (or x8577 (not x3238) x20227)
+:assumption (or x15409 (not x10181))
+:assumption (or (not x27928) (not x14720))
+:assumption (or x30724 x25349)
+:assumption (or x8328 x14552 x31829 x28541)
+:assumption (or (not x9008) x6822)
+:assumption (or x20089 (not x1445))
+:assumption (or (not x25615) (not x14206) (not x30650) x5192)
+:assumption (or (not x25659) x26622)
+:assumption (or (not x12921) x31689)
+:assumption (or x3198 (not x26833))
+:assumption (or (not x3910) (not x17059) x5936 (not x12291))
+:assumption (or (not x28698) x11204)
+:assumption (or (not x6898) (not x27591) x5855 x12586 x9047)
+:assumption (or x24050 x1271 x30100 (not x16604) (not x12872) x30931)
+:assumption (or x1393 (not x24988))
+:assumption (or x13780 (not x13399))
+:assumption (or (not x13956) (not x12024))
+:assumption (or x26947 x9752)
+:assumption (or x5528 (not x30693))
+:assumption (or x5016 x13941)
+:assumption (or x15492 (not x10875) (not x28981))
+:assumption (or (not x11173) x918)
+:assumption (or (not x13453) (not x23634) x14839 x1650)
+:assumption (or (not x16230) (not x18770))
+:assumption (or x29137 (not x4774))
+:assumption (or (not x11240) x27464)
+:assumption (or x21276 (not x26141))
+:assumption (or (not x22736) (not x3690))
+:assumption (or (not x4970) (not x11936))
+:assumption (or (not x25892) (not x2568) (not x21095) x19138 (not x23677) x7220 x31531 x18900 (not x8209) x19277)
+:assumption (or (not x22990) x19183 (not x24872))
+:assumption (or x10112 x22445)
+:assumption (or x1364 x13700)
+:assumption (or x14686 x18255)
+:assumption (or x21633 x5413)
+:assumption (or x28835 (not x5528) (not x10393) (not x1643) x2603 x3377)
+:assumption (or x30633 x4865 (not x22610))
+:assumption (or x12788 x4507)
+:assumption (or x21633 (not x5628))
+:assumption (or x22508 (not x22391))
+:assumption (or (not x23088) (not x23753))
+:assumption (or x26394 (not x28695))
+:assumption (or (not x11766) x21310)
+:assumption (or (not x5770) (not x13956))
+:assumption (or x7205 (not x27603))
+:assumption (or (not x7970) x22092)
+:assumption (or (not x31183) (not x4411) x6716 x8602 x1832 (not x3691) x10205 (not x15432))
+:assumption (or (not x18882) (not x27138))
+:assumption (or x28812 x21202)
+:assumption (or (not x27170) (not x26975) x4450 (not x19318) x15051 (not x15101) x4 (not x28219) x13591)
+:assumption (or x26552 x1111)
+:assumption (or x2257 x1036 (not x15022) x16374)
+:assumption (or (not x5311) (not x12924))
+:assumption (or (not x31134) x29667 (not x31063))
+:assumption (or (not x5363) (not x20933))
+:assumption (or (not x12470) x4385)
+:assumption (or (not x10397) (not x8803))
+:assumption (or (not x3291) x8104)
+:assumption (or x2080 (not x25052) x25659)
+:assumption (or x11074 x26872)
+:assumption (or x26570 x16578 (not x23907) (not x19645) x7466 x29496 (not x2493) (not x30234) (not x31458))
+:assumption (or x11470 x1250)
+:assumption (or (not x28154) (not x16165))
+:assumption (or x22956 x29863)
+:assumption (or x15018 x8531)
+:assumption (or (not x1263) (not x2125))
+:assumption (or x22472 x24382)
+:assumption (or (not x15395) x5455)
+:assumption (or x25964 x3327 x1225 x15843)
+:assumption (or (not x23530) (not x30655))
+:assumption (or x16754 (not x20887))
+:assumption (or (not x14578) x30742 (not x11724) x8120)
+:assumption (or x21269 (not x10914) (not x23291) x3435 x27899 x12744 x30457)
+:assumption (or x26245 (not x22035))
+:assumption (or (not x16802) x29143)
+:assumption (or (not x17074) (not x2617))
+:assumption (or x18990 (not x9555))
+:assumption (or (not x31093) x14074)
+:assumption (or x9804 x14287 x21014 x11634)
+:assumption (or (not x20619) x19)
+:assumption (or x13956 x10112)
+:assumption (or x16043 x28887)
+:assumption (or (not x19711) (not x14348))
+:assumption (or (not x7537) (not x25734))
+:assumption (or x28973 (not x16866))
+:assumption (or (not x4713) (not x11896))
+:assumption (or x4908 x20344 (not x17999))
+:assumption (or x2843 (not x14839))
+:assumption (or (not x5814) x19142)
+:assumption (or (not x22829) (not x24831))
+:assumption (or (not x11059) x24333)
+:assumption (or (not x14687) x23988)
+:assumption (or (not x28852) (not x8658))
+:assumption (or (not x30677) (not x22829))
+:assumption (or (not x23867) x8615)
+:assumption (or (not x9772) (not x11194))
+:assumption (or (not x16241) (not x24814))
+:assumption (or x15179 x29442)
+:assumption (or (not x24146) (not x14206))
+:assumption (or x20937 (not x31482) x16117 x10490 (not x20770))
+:assumption (or x20619 (not x21670))
+:assumption (or (not x4796) x5700)
+:assumption (or x20402 x30759)
+:assumption (or x9322 (not x27106))
+:assumption (or x9338 (not x4319))
+:assumption (or (not x16025) (not x24106))
+:assumption (or x29180 x918 (not x12946))
+:assumption (or (not x26943) (not x18298))
+:assumption (or x13018 x14654)
+:assumption (or x6874 x11419)
+:assumption (or (not x9404) (not x17334))
+:assumption (or x24705 x24566)
+:assumption (or (not x31249) x23701)
+:assumption (or (not x30815) x11798)
+:assumption (or x12578 (not x7283))
+:assumption (or (not x8689) (not x29660))
+:assumption (or x7056 (not x16255))
+:assumption (or (not x29959) x17570 x22006 x6728)
+:assumption (or (not x10104) (not x20085))
+:assumption (or (not x4702) x22080 x10992 x6243)
+:assumption (or x24664 (not x28708))
+:assumption (or x23555 x6910)
+:assumption (or x21652 (not x15744) (not x10659) (not x22771) (not x19428) (not x21845))
+:assumption (or (not x11377) (not x2572))
+:assumption (or (not x13439) (not x1393) x13582)
+:assumption (or (not x17890) (not x19260))
+:assumption (or (not x14591) x17458 (not x15795))
+:assumption (or (not x5865) x295)
+:assumption (or x4125 (not x2793))
+:assumption (or x6239 x11048)
+:assumption (or (not x13819) (not x17511))
+:assumption (or x22569 (not x25895))
+:assumption (or (not x19488) (not x13579))
+:assumption (or (not x22760) (not x16802))
+:assumption (or (not x28541) x18227)
+:assumption (or x25392 (not x24756))
+:assumption (or x17251 (not x13406) x6074 (not x16907))
+:assumption (or x5126 x9701)
+:assumption (or (not x14705) (not x16298) x832 (not x31638) (not x16043) (not x28887) x14173 x17166)
+:assumption (or x11794 x22766)
+:assumption (or (not x15577) (not x11050) x28821)
+:assumption (or (not x23377) (not x22421))
+:assumption (or (not x21314) (not x17534))
+:assumption (or x25312 x16304 (not x13417) x15795)
+:assumption (or x4669 (not x9470))
+:assumption (or (not x1712) x7490)
+:assumption (or x19212 (not x2356))
+:assumption (or (not x29923) (not x2518) (not x19563) x23246 x1872)
+:assumption (or x8002 x31103 (not x8985) x2800 (not x25419) (not x29543))
+:assumption (or (not x21198) (not x4460))
+:assumption (or (not x10444) (not x3657))
+:assumption (or (not x281) (not x8539) (not x31368))
+:assumption (or (not x21112) (not x19090))
+:assumption (or (not x8944) (not x14455) (not x3435) x7222 x6036 x15351 (not x24353))
+:assumption (or (not x17223) (not x29075))
+:assumption (or x21897 x8857)
+:assumption (or x16195 x16510)
+:assumption (or x28684 (not x2876))
+:assumption (or (not x28322) x25716)
+:assumption (or x27239 x11098)
+:assumption (or x7171 x29627)
+:assumption (or x31142 x12506)
+:assumption (or (not x30721) (not x7264))
+:assumption (or x21322 x22811 (not x21974) x11754 x19007 x29419)
+:assumption (or (not x26762) (not x17561))
+:assumption (or (not x15378) x30681)
+:assumption (or x4093 x14814)
+:assumption (or x26815 (not x30188))
+:assumption (or x1798 x28768)
+:assumption (or x29478 x4213)
+:assumption (or x11478 (not x8303))
+:assumption (or (not x819) (not x18859))
+:assumption (or (not x17042) (not x2263))
+:assumption (or x4570 x18190)
+:assumption (or (not x148) (not x30569))
+:assumption (or x26159 x87 (not x27767) (not x21298))
+:assumption (or x14591 x2161)
+:assumption (or x25429 (not x30418))
+:assumption (or x3676 x1393)
+:assumption (or (not x23676) (not x505))
+:assumption (or x23029 (not x5120))
+:assumption (or (not x16588) x11176)
+:assumption (or (not x6458) (not x23326))
+:assumption (or (not x4785) x10633)
+:assumption (or x12868 (not x10411))
+:assumption (or (not x19171) (not x15674))
+:assumption (or (not x15886) (not x15082))
+:assumption (or (not x16510) x5797)
+:assumption (or x9264 x7365)
+:assumption (or (not x4899) x25801)
+:assumption (or (not x13622) x3834)
+:assumption (or x21417 x24137)
+:assumption (or (not x30934) x11488 x22555)
+:assumption (or x22275 (not x28912) x23018 (not x29649))
+:assumption (or (not x667) (not x9155))
+:assumption (or (not x8514) (not x7412))
+:assumption (or x13309 (not x2411))
+:assumption (or (not x31536) x1200)
+:assumption (or (not x1344) x6521)
+:assumption (or x20272 x14979)
+:assumption (or x14654 x11763)
+:assumption (or (not x29442) (not x6741))
+:assumption (or (not x1582) x7651)
+:assumption (or (not x24818) x19303)
+:assumption (or x19599 (not x22148))
+:assumption (or (not x8477) x16467)
+:assumption (or (not x11842) x19570)
+:assumption (or x21163 (not x29275))
+:assumption (or x10954 (not x26764))
+:assumption (or (not x7893) (not x18519) (not x24279))
+:assumption (or (not x16944) x14798)
+:assumption (or x14982 (not x21360))
+:assumption (or x55 (not x31715) (not x18500))
+:assumption (or (not x9474) (not x28358))
+:assumption (or (not x16938) x31387)
+:assumption (or x25554 x20651)
+:assumption (or (not x29645) (not x27830))
+:assumption (or x5886 x4679)
+:assumption (or (not x31907) (not x29437))
+:assumption (or x6348 x11530)
+:assumption (or (not x25506) (not x18349))
+:assumption (or (not x13174) x50)
+:assumption (or x31035 (not x11746))
+:assumption (or (not x1393) x26458)
+:assumption (or (not x19715) (not x25914))
+:assumption (or (not x10414) x9952)
+:assumption (or (not x7858) (not x19992))
+:assumption (or (not x21016) x3435)
+:assumption (or (not x2068) (not x29772))
+:assumption (or (not x11030) x23244 (not x10981))
+:assumption (or x16168 (not x23013))
+:assumption (or (not x24900) x11857)
+:assumption (or (not x31195) x561)
+:assumption (or x15566 x17408)
+:assumption (or x18941 (not x4089))
+:assumption (or (not x23017) x14191 (not x27320))
+:assumption (or x14053 x983 (not x14296) x2017 (not x24072) (not x6466))
+:assumption (or (not x5276) (not x25726))
+:assumption (or (not x12576) x12101)
+:assumption (or x10722 (not x14814))
+:assumption (or (not x5534) x1257)
+:assumption (or x20474 (not x5431))
+:assumption (or (not x21104) x25789)
+:assumption (or (not x17225) x9468)
+:assumption (or x18456 x27447)
+:assumption (or x23945 (not x5546))
+:assumption (or (not x16237) (not x23244))
+:assumption (or x30138 x29856)
+:assumption (or (not x16162) (not x23118))
+:assumption (or (not x11563) (not x30789))
+:assumption (or x2098 x12834)
+:assumption (or (not x3130) (not x618) (not x22288) (not x3901))
+:assumption (or (not x26589) x7421)
+:assumption (or x14512 (not x6151))
+:assumption (or x4520 x19517)
+:assumption (or x8093 x5028)
+:assumption (or (not x22065) (not x10105))
+:assumption (or (not x12829) x13622)
+:assumption (or (not x4386) x28506 (not x1139) (not x12834) x16155 (not x31929) x30353)
+:assumption (or (not x30664) x17791)
+:assumption (or (not x26571) x26204)
+:assumption (or (not x11197) (not x20063))
+:assumption (or x26058 (not x31265))
+:assumption (or (not x16547) (not x16741) (not x29345) x24922)
+:assumption (or x20808 x20382)
+:assumption (or (not x20390) x27856)
+:assumption (or x22133 (not x5896))
+:assumption (or (not x5136) x26293)
+:assumption (or x12858 (not x9008))
+:assumption (or x19932 (not x5840))
+:assumption (or x10218 x21588)
+:assumption (or (not x30751) (not x15138) x12083)
+:assumption (or (not x3123) x17535)
+:assumption (or x25461 (not x21190) (not x23803) (not x15932) (not x19874))
+:assumption (or (not x988) x20727)
+:assumption (or x27913 (not x1224))
+:assumption (or x17502 (not x7004))
+:assumption (or (not x12350) x1845)
+:assumption (or x24050 (not x24218))
+:assumption (or (not x8425) x24256)
+:assumption (or (not x17674) x11713)
+:assumption (or (not x22297) (not x21653))
+:assumption (or x9610 (not x5060))
+:assumption (or x17499 (not x17585) (not x4905) x20550)
+:assumption (or x12388 x25047)
+:assumption (or (not x29402) (not x6766) x16493 (not x17874) (not x25887))
+:assumption (or (not x19699) x12769)
+:assumption (or x22856 x30121)
+:assumption (or (not x7387) (not x20402))
+:assumption (or x20901 (not x19639))
+:assumption (or x29014 (not x21295))
+:assumption (or x21815 x12653)
+:assumption (or x29568 (not x20794))
+:assumption (or (not x31539) (not x8961))
+:assumption (or x26662 (not x2538))
+:assumption (or x16448 x17284 (not x16006))
+:assumption (or x12827 (not x22653))
+:assumption (or (not x6500) (not x142))
+:assumption (or (not x24242) x18057)
+:assumption (or x7201 x27789 (not x827))
+:assumption (or (not x15308) x20891)
+:assumption (or x17695 (not x7132))
+:assumption (or x18069 (not x885) (not x3494))
+:assumption (or x31050 x14023)
+:assumption (or (not x29160) x3988)
+:assumption (or (not x7100) (not x5528))
+:assumption (or x16872 (not x31100) x4451 x24380 (not x27381) x2393)
+:assumption (or x26250 x27300 x10657 x27023 (not x11654))
+:assumption (or x10455 (not x15854))
+:assumption (or x14476 (not x30485))
+:assumption (or x29021 (not x10449))
+:assumption (or (not x22969) x19497)
+:assumption (or (not x9809) (not x11632))
+:assumption (or x4983 x19584)
+:assumption (or (not x21319) x31484)
+:assumption (or (not x22336) x18859)
+:assumption (or (not x22821) (not x10904) (not x283) x19992)
+:assumption (or x1209 x21631)
+:assumption (or x30005 x20102 (not x2752))
+:assumption (or x16004 x28610)
+:assumption (or x8360 x28919)
+:assumption (or x5617 (not x31693))
+:assumption (or x8002 (not x30415) x14825)
+:assumption (or (not x12121) x14349)
+:assumption (or (not x24720) (not x12040) (not x3059) x30031 x9703 x31072 x20134)
+:assumption (or (not x7613) (not x4629))
+:assumption (or (not x817) x26527)
+:assumption (or x29767 x25277)
+:assumption (or x14968 x26482)
+:assumption (or (not x7286) x26512 (not x964) (not x26670) (not x4263))
+:assumption (or (not x21508) (not x2679))
+:assumption (or x10344 (not x22046))
+:assumption (or (not x20243) (not x22227))
+:assumption (or (not x30411) (not x3339) x6510)
+:assumption (or (not x20221) x4441 x23463 (not x19212) x16188)
+:assumption (or (not x8573) x22488 (not x30378))
+:assumption (or x23582 x30897)
+:assumption (or x1042 x9912 x31581 x13956 x8002)
+:assumption (or x16751 (not x10335))
+:assumption (or (not x30540) x19097 x9053 (not x27543) (not x18908) x17016)
+:assumption (or (not x30901) (not x22154))
+:assumption (or (not x28242) (not x30534) x16363 x20438 x18344 x28626)
+:assumption (or (not x18497) (not x7792))
+:assumption (or (not x7810) (not x30421))
+:assumption (or x27835 x4401)
+:assumption (or (not x3289) (not x18504))
+:assumption (or x16528 x30482)
+:assumption (or x3962 x30520 (not x16741))
+:assumption (or x21533 (not x24747) (not x4296) (not x20916) (not x31382))
+:assumption (or (not x13522) (not x16711))
+:assumption (or x30398 (not x19072))
+:assumption (or x6740 x9701)
+:assumption (or (not x28155) (not x25366) (not x22087))
+:assumption (or (not x14992) x25312)
+:assumption (or x27629 (not x22055) x16067)
+:assumption (or (not x12965) x1096)
+:assumption (or (not x8002) (not x2487))
+:assumption (or x25659 (not x30714))
+:assumption (or (not x25659) (not x13150) (not x19798) x5662 x15809 x7447 x19334 x12621)
+:assumption (or x10823 (not x30805))
+:assumption (or x29825 (not x21375))
+:assumption (or (not x15375) x6281)
+:assumption (or (not x4063) (not x3613))
+:assumption (or x4727 x30298)
+:assumption (or x26933 x7045)
+:assumption (or (not x6671) (not x26646))
+:assumption (or (not x36) x9395)
+:assumption (or (not x26901) (not x21350))
+:assumption (or x21309 x15924)
+:assumption (or (not x9958) (not x2903))
+:assumption (or (not x11601) (not x19549))
+:assumption (or x9965 (not x384))
+:assumption (or x19993 x29628)
+:assumption (or (not x15971) x15605)
+:assumption (or x136 (not x8907) x21019 (not x23367) (not x3948))
+:assumption (or (not x8159) x15078)
+:assumption (or x29060 x31109)
+:assumption (or (not x4879) (not x4600))
+:assumption (or x14226 x16304)
+:assumption (or x22086 (not x29959) x3600)
+:assumption (or (not x8419) (not x31540))
+:assumption (or (not x442) x4773)
+:assumption (or x27943 x15352)
+:assumption (or x14257 (not x8063))
+:assumption (or x18328 (not x22512))
+:assumption (or (not x25310) x17435)
+:assumption (or x10672 (not x6912) x1393 (not x7497) x17148 (not x27046) x10610 (not x23317))
+:assumption (or x5681 x31122)
+:assumption (or x26050 (not x27627))
+:assumption (or (not x28883) x10723)
+:assumption (or x28069 x18694)
+:assumption (or x24589 x19982)
+:assumption (or x8657 (not x8862))
+:assumption (or (not x15247) (not x14552))
+:assumption (or (not x11023) (not x12578))
+:assumption (or x12565 (not x18741))
+:assumption (or x22096 x16398)
+:assumption (or x27264 x14813)
+:assumption (or x1104 (not x6557))
+:assumption (or (not x2097) x29081)
+:assumption (or (not x19154) x15411)
+:assumption (or (not x31280) x23475 (not x3953) (not x7348) (not x15118))
+:assumption (or x31766 (not x20361))
+:assumption (or x13484 (not x11843))
+:assumption (or (not x12398) (not x30268))
+:assumption (or x29003 x16678)
+:assumption (or (not x26494) x25432)
+:assumption (or x14361 x24171)
+:assumption (or (not x4005) (not x8002))
+:assumption (or x8112 (not x2288))
+:assumption (or (not x26621) (not x5528) (not x4613) x25436 (not x6842) (not x26470))
+:assumption (or x15680 x4268)
+:assumption (or x5094 (not x871))
+:assumption (or x20283 (not x21102))
+:assumption (or x20370 x23076)
+:assumption (or (not x19540) x1013)
+:assumption (or (not x15659) (not x28816))
+:assumption (or (not x19657) x13540)
+:assumption (or (not x8467) x22338)
+:assumption (or x2997 (not x30999))
+:assumption (or x26537 x9473 (not x9268))
+:assumption (or (not x16727) x25962)
+:assumption (or (not x8002) (not x26066) (not x25361) (not x4378))
+:assumption (or (not x4664) x29442)
+:assumption (or x27815 x3807)
+:assumption (or x7621 x21198)
+:assumption (or x30284 (not x30125))
+:assumption (or (not x13653) x16642)
+:assumption (or (not x19912) x14870)
+:assumption (or x19316 (not x12096))
+:assumption (or x98 (not x26354))
+:assumption (or (not x14531) x16222)
+:assumption (or (not x1865) (not x1692))
+:assumption (or x24514 x23346)
+:assumption (or x18475 x6368)
+:assumption (or (not x4735) x20594)
+:assumption (or x23137 (not x14533))
+:assumption (or (not x10915) (not x13272))
+:assumption (or (not x26185) (not x17416))
+:assumption (or (not x827) x6354 x30398)
+:assumption (or x29196 x31747)
+:assumption (or (not x4193) x23244 x2955)
+:assumption (or (not x28949) (not x6623))
+:assumption (or (not x25390) (not x15384))
+:assumption (or (not x30944) (not x4756))
+:assumption (or (not x29178) x14977)
+:assumption (or x7542 (not x10524))
+:assumption (or (not x18187) (not x4436))
+:assumption (or x30852 x21764)
+:assumption (or (not x28885) x12981 (not x29157))
+:assumption (or (not x2492) x18500)
+:assumption (or (not x11148) x27349 (not x18726))
+:assumption (or x13658 x5654)
+:assumption (or (not x1785) x16825)
+:assumption (or (not x144) (not x28242) x26320 x10666)
+:assumption (or x28519 (not x2081))
+:assumption (or x24253 (not x4451))
+:assumption (or x12340 (not x5878))
+:assumption (or x9531 (not x20408) (not x28737))
+:assumption (or x2177 x3145)
+:assumption (or x19565 (not x16604))
+:assumption (or x24670 (not x1904))
+:assumption (or x30699 x25830)
+:assumption (or (not x22825) (not x7854))
+:assumption (or (not x10788) (not x19954))
+:assumption (or (not x11922) (not x13685))
+:assumption (or x4666 (not x7573))
+:assumption (or x28371 (not x20403))
+:assumption (or (not x17455) (not x2274))
+:assumption (or (not x31439) (not x1771) (not x26814) x26432)
+:assumption (or x11452 x16859)
+:assumption (or x5935 x22836)
+:assumption (or (not x14598) x22650)
+:assumption (or x17621 x30314)
+:assumption (or (not x5670) x9008)
+:assumption (or (not x96) (not x15450))
+:assumption (or (not x9372) x19216)
+:assumption (or (not x22721) (not x30253))
+:assumption (or x30915 (not x2934))
+:assumption (or x12375 x2552)
+:assumption (or x13268 x25091)
+:assumption (or (not x9008) x4277 (not x1255))
+:assumption (or x2450 (not x29138))
+:assumption (or x7779 x18197 x3611 (not x25659) x11485 (not x9904) (not x4957) x3305)
+:assumption (or (not x23734) x27915)
+:assumption (or (not x4777) x7250)
+:assumption (or x7346 (not x112))
+:assumption (or (not x2398) x26686)
+:assumption (or (not x1614) x16025)
+:assumption (or (not x14596) x17316)
+:assumption (or x27177 x19889)
+:assumption (or (not x1155) (not x28912))
+:assumption (or (not x26469) (not x1128))
+:assumption (or x22472 (not x30145))
+:assumption (or (not x18369) (not x3854))
+:assumption (or x22548 x17086)
+:assumption (or x2828 (not x17876) x26685 (not x11673) (not x16802))
+:assumption (or (not x25606) (not x12885))
+:assumption (or (not x8812) (not x6038))
+:assumption (or x26354 (not x24697))
+:assumption (or x7546 (not x27271))
+:assumption (or x25581 (not x8837))
+:assumption (or x23363 (not x17300))
+:assumption (or x8601 (not x40))
+:assumption (or x20677 (not x16238))
+:assumption (or x1288 (not x29215))
+:assumption (or x27941 x126)
+:assumption (or (not x4896) (not x26892))
+:assumption (or (not x28351) (not x24040))
+:assumption (or (not x7835) x3713)
+:assumption (or (not x23637) (not x19888))
+:assumption (or (not x18441) (not x11072))
+:assumption (or (not x26769) (not x1520))
+:assumption (or x16345 x20486)
+:assumption (or (not x1542) (not x26748))
+:assumption (or x23399 x11896 x21343 x7537)
+:assumption (or x26064 (not x20039))
+:assumption (or x9847 x13623 (not x11204) (not x12435) x16375 x30130 (not x20560))
+:assumption (or x8127 (not x4431))
+:assumption (or x754 (not x19954))
+:assumption (or (not x20120) x25258)
+:assumption (or x17034 x9842)
+:assumption (or (not x16758) x16276 x25889 x2051 (not x30373))
+:assumption (or (not x22458) x28706)
+:assumption (or (not x18001) (not x20932))
+:assumption (or x21235 (not x27530))
+:assumption (or x15575 x8514)
+:assumption (or (not x12946) (not x19850))
+:assumption (or x14839 (not x26306))
+:assumption (or (not x25781) x13786)
+:assumption (or (not x4571) x13713)
+:assumption (or (not x24314) (not x20486))
+:assumption (or x23211 x7597)
+:assumption (or (not x4524) x23428)
+:assumption (or (not x16649) x28228)
+:assumption (or x13329 x8029 x16512 x16472 (not x30924))
+:assumption (or x28181 (not x25867))
+:assumption (or (not x16211) x31823)
+:assumption (or (not x6351) (not x2802))
+:assumption (or x4662 (not x18151))
+:assumption (or (not x23070) (not x6951))
+:assumption (or (not x21895) x23955)
+:assumption (or x19009 (not x24304))
+:assumption (or (not x15972) x2914)
+:assumption (or (not x4004) (not x15661) (not x5619) x10632)
+:assumption (or x29834 x29260)
+:assumption (or x3441 x2133)
+:assumption (or x6876 x19342)
+:assumption (or x13560 x12349)
+:assumption (or x18186 (not x20008))
+:assumption (or x25037 x29657)
+:assumption (or x5339 x4515)
+:assumption (or (not x16988) x26990)
+:assumption (or x4224 x27959)
+:assumption (or x25366 (not x4733))
+:assumption (or x28162 (not x28485))
+:assumption (or (not x17359) (not x17136))
+:assumption (or x22333 (not x31402))
+:assumption (or x6002 x24131)
+:assumption (or (not x827) (not x24658))
+:assumption (or (not x15523) x16262 (not x25659))
+:assumption (or x11783 (not x30685))
+:assumption (or x16225 x157)
+:assumption (or x22531 (not x17089) x393 x4439 (not x6894))
+:assumption (or x17039 x29944)
+:assumption (or x18081 x1304)
+:assumption (or (not x19362) x14656)
+:assumption (or (not x13895) x14420)
+:assumption (or x27721 (not x2865))
+:assumption (or x16073 (not x9050))
+:assumption (or (not x28890) (not x23841))
+:assumption (or (not x26501) (not x19918) x14666 x16823 (not x24710))
+:assumption (or (not x22103) (not x27154) x10779 x24977 (not x28310) x26265)
+:assumption (or (not x5537) (not x22752))
+:assumption (or x16375 (not x30750) x17270)
+:assumption (or x24722 (not x3102))
+:assumption (or (not x12938) (not x20060))
+:assumption (or x10411 (not x26771))
+:assumption (or (not x26892) x2745)
+:assumption (or x28588 (not x16141))
+:assumption (or (not x6624) (not x13956))
+:assumption (or x21478 (not x22393))
+:assumption (or x31793 x6594)
+:assumption (or (not x5712) (not x25903))
+:assumption (or x13342 (not x1237))
+:assumption (or x12294 x28438)
+:assumption (or (not x9008) (not x9291))
+:assumption (or x1263 x2125)
+:assumption (or x28192 x9269)
+:assumption (or x12389 x28433)
+:assumption (or (not x4089) (not x27956))
+:assumption (or (not x17112) x5760)
+:assumption (or x1100 (not x11777))
+:assumption (or x17302 (not x17823))
+:assumption (or (not x5985) x17294)
+:assumption (or (not x27125) (not x29127))
+:assumption (or (not x12455) (not x3571))
+:assumption (or x25072 x18420)
+:assumption (or x17466 x12045)
+:assumption (or x18042 (not x13370) (not x21707) (not x20201))
+:assumption (or (not x23864) (not x1045))
+:assumption (or (not x25818) (not x14892))
+:assumption (or (not x1872) x31891 x772 x5037)
+:assumption (or (not x30765) (not x17322))
+:assumption (or x5875 (not x28805) x22022 (not x30161) x26315 x17862)
+:assumption (or x4499 x17918)
+:assumption (or x7002 x18181)
+:assumption (or (not x593) (not x30015))
+:assumption (or x6586 (not x19507))
+:assumption (or (not x1395) x6149)
+:assumption (or (not x12151) x28823)
+:assumption (or (not x8002) (not x23037))
+:assumption (or (not x23078) x28561)
+:assumption (or x30327 x30779)
+:assumption (or (not x27972) x2735)
+:assumption (or (not x8716) (not x11127))
+:assumption (or (not x138) x5508)
+:assumption (or (not x30618) (not x22408))
+:assumption (or x16374 (not x20477))
+:assumption (or (not x9008) (not x9646))
+:assumption (or (not x5925) (not x13111) (not x16003))
+:assumption (or x23957 x9025 (not x8012) (not x20495))
+:assumption (or (not x26187) x3700)
+:assumption (or x28751 (not x7815))
+:assumption (or x8550 (not x28656) (not x687) x14502 (not x17192) x31359)
+:assumption (or (not x2414) (not x7585))
+:assumption (or x1031 x21078)
+:assumption (or (not x28242) (not x31654))
+:assumption (or (not x4640) (not x19759) x22711 x24079 x31457)
+:assumption (or x16511 (not x26216))
+:assumption (or (not x18321) (not x19818))
+:assumption (or x10054 (not x26413))
+:assumption (or x19514 (not x12151))
+:assumption (or (not x15745) x8620)
+:assumption (or (not x10212) x30310)
+:assumption (or x2826 x27996)
+:assumption (or x5528 x9585 x31064)
+:assumption (or (not x30143) x17535)
+:assumption (or x16795 (not x5677))
+:assumption (or x27537 x21018)
+:assumption (or x10850 x21122)
+:assumption (or (not x9591) (not x14685))
+:assumption (or (not x9142) x15861 (not x13111))
+:assumption (or (not x26434) x1597)
+:assumption (or x29054 x19661)
+:assumption (or x22495 (not x5370) (not x18448) (not x25051))
+:assumption (or (not x23003) (not x17402))
+:assumption (or (not x14275) x25739)
+:assumption (or (not x12105) x20114)
+:assumption (or (not x19183) x2713)
+:assumption (or (not x28185) (not x20840) x15330 (not x7050) x10624 (not x23524) (not x23625) x18727)
+:assumption (or x17899 x12853)
+:assumption (or x3851 x30567)
+:assumption (or x29546 (not x1327) x19393)
+:assumption (or x1453 x29594)
+:assumption (or (not x14918) x5134)
+:assumption (or (not x7990) (not x8636))
+:assumption (or (not x1395) (not x28256))
+:assumption (or (not x13350) (not x12843))
+:assumption (or x12032 (not x65))
+:assumption (or (not x30633) x9815)
+:assumption (or x29312 x9158)
+:assumption (or x9848 x4386)
+:assumption (or (not x31337) (not x19864) (not x17514))
+:assumption (or (not x19626) x7104 (not x3399))
+:assumption (or (not x8245) (not x27596))
+:assumption (or (not x2246) (not x3435) (not x14455) (not x25893))
+:assumption (or (not x31272) (not x8002))
+:assumption (or x5805 x22564)
+:assumption (or (not x3738) (not x21172))
+:assumption (or (not x16038) x26756)
+:assumption (or (not x1322) x15707)
+:assumption (or (not x15812) (not x20949) (not x23244))
+:assumption (or (not x20647) x5558 x10206 x9985)
+:assumption (or x28841 x9680)
+:assumption (or (not x860) x25867)
+:assumption (or x14306 x29906)
+:assumption (or (not x2088) (not x16898))
+:assumption (or (not x24082) (not x3510))
+:assumption (or (not x25404) x11320)
+:assumption (or x137 (not x10762))
+:assumption (or x28203 (not x30925))
+:assumption (or x2421 (not x675) x8120)
+:assumption (or x7587 x13956 x29333)
+:assumption (or x12036 x13134)
+:assumption (or (not x13435) (not x19437))
+:assumption (or (not x1259) (not x16568))
+:assumption (or (not x16409) x24612)
+:assumption (or (not x2725) x3051 (not x1393))
+:assumption (or (not x516) (not x9989))
+:assumption (or x27591 x6898)
+:assumption (or (not x131) x6969 (not x10126))
+:assumption (or x26565 (not x12112))
+:assumption (or (not x29566) x14567)
+:assumption (or (not x24392) x22766 (not x13144) (not x18056))
+:assumption (or (not x1709) x6415)
+:assumption (or x3774 (not x19283))
+:assumption (or x20264 (not x3417))
+:assumption (or x16350 x13254)
+:assumption (or (not x13855) x8948)
+:assumption (or (not x25899) (not x27462))
+:assumption (or (not x15260) x19622)
+:assumption (or (not x10224) x14802)
+:assumption (or (not x25286) x2504)
+:assumption (or x15339 x1134)
+:assumption (or (not x16867) (not x25790))
+:assumption (or (not x7263) x29251 x10139 x9008 x16626 (not x1637))
+:assumption (or (not x26254) (not x27306))
+:assumption (or (not x4900) x14095)
+:assumption (or x30405 x776)
+:assumption (or (not x21606) (not x2912) (not x30633) (not x6087))
+:assumption (or x1393 (not x28950) (not x6883))
+:assumption (or (not x2442) x8002 x1823)
+:assumption (or x17561 x8259)
+:assumption (or (not x11450) x19445 (not x5772) (not x8901) x20599)
+:assumption (or x13189 x4744 (not x22587) x484 x24716 x8334 x23334)
+:assumption (or x15659 (not x31210))
+:assumption (or x19650 x30449 x30905 (not x15491))
+:assumption (or x13046 (not x2789))
+:assumption (or (not x26103) (not x19573) (not x29099))
+:assumption (or (not x4406) x19426)
+:assumption (or x21815 (not x12073) x21140)
+:assumption (or x1377 (not x23210) x13970 x14859)
+:assumption (or (not x21298) (not x12085) (not x8203))
+:assumption (or (not x26648) (not x8953) (not x265))
+:assumption (or x10273 (not x22414))
+:assumption (or x16010 (not x13324))
+:assumption (or (not x26151) (not x14848))
+:assumption (or x7937 x5420)
+:assumption (or (not x9784) x12520)
+:assumption (or (not x9008) (not x20535))
+:assumption (or (not x21306) x21130)
+:assumption (or x20111 x11462)
+:assumption (or (not x16047) (not x12766))
+:assumption (or (not x30000) x2034)
+:assumption (or x18496 (not x24775))
+:assumption (or x26797 (not x9600))
+:assumption (or x8482 x8885)
+:assumption (or (not x10647) x25853)
+:assumption (or x6528 (not x28501))
+:assumption (or x21298 (not x30943))
+:assumption (or (not x19376) (not x15535))
+:assumption (or (not x17871) (not x30751) x23958 x20486)
+:assumption (or (not x16789) (not x17579) (not x25286) (not x28181) (not x8137) (not x10176))
+:assumption (or x19567 (not x28686))
+:assumption (or (not x13585) (not x15917))
+:assumption (or x8560 x2722)
+:assumption (or (not x16530) x28873)
+:assumption (or (not x16075) x25214)
+:assumption (or x30954 x20173 (not x24926))
+:assumption (or (not x5663) (not x13956))
+:assumption (or x18425 x3675)
+:assumption (or x15211 x2943)
+:assumption (or x12951 (not x6380))
+:assumption (or (not x16780) x2512)
+:assumption (or x26436 x28063 (not x28073) (not x14819) x31478)
+:assumption (or (not x24312) x6530)
+:assumption (or (not x27409) x15430)
+:assumption (or x14955 (not x31770))
+:assumption (or x26277 (not x31032))
+:assumption (or (not x23188) (not x21743) (not x23244))
+:assumption (or (not x6330) (not x31004))
+:assumption (or (not x8285) x13124)
+:assumption (or (not x3777) (not x11201))
+:assumption (or (not x135) x20004)
+:assumption (or (not x27987) (not x12208))
+:assumption (or x22186 x25248)
+:assumption (or x18864 (not x1313))
+:assumption (or x23244 (not x30050) (not x27703))
+:assumption (or x21635 x8602)
+:assumption (or x14664 x1387)
+:assumption (or x20030 (not x15853))
+:assumption (or (not x1558) (not x18399))
+:assumption (or (not x25393) x31047 (not x6610))
+:assumption (or x29651 x29461)
+:assumption (or x29757 x2516)
+:assumption (or x27975 x20042)
+:assumption (or x29649 x5787 (not x29762))
+:assumption (or x18694 x13485 x11617 x16028)
+:assumption (or x19170 x12119 x28425)
+:assumption (or (not x6114) x17552 (not x16741) x13600)
+:assumption (or (not x28358) x15143)
+:assumption (or x9008 x18538 x15354)
+:assumption (or (not x15863) x8994)
+:assumption (or (not x14018) x9008)
+:assumption (or (not x29979) x18290)
+:assumption (or x8002 (not x24843) (not x9539))
+:assumption (or x22853 (not x14792))
+:assumption (or (not x25204) x14505)
+:assumption (or x26511 x16474 (not x21298) (not x13274))
+:assumption (or x6611 (not x2423))
+:assumption (or x3961 x16223)
+:assumption (or (not x11590) x13762)
+:assumption (or (not x14683) (not x1473))
+:assumption (or (not x5367) (not x23102))
+:assumption (or (not x30419) (not x17737))
+:assumption (or x28951 (not x29283))
+:assumption (or (not x24633) x2716)
+:assumption (or (not x12769) x19699 x827)
+:assumption (or x13843 (not x9163))
+:assumption (or (not x29055) (not x30113) (not x19316) x30070)
+:assumption (or x27978 (not x13499))
+:assumption (or x6381 (not x7912))
+:assumption (or x12028 (not x22918))
+:assumption (or x9466 (not x16251))
+:assumption (or (not x10047) x18905 x19656 (not x16411) x29488)
+:assumption (or x16455 x992)
+:assumption (or (not x5840) (not x13251))
+:assumption (or x9444 (not x31909))
+:assumption (or x25441 x9000)
+:assumption (or (not x13621) x31014)
+:assumption (or x10192 (not x5109))
+:assumption (or (not x23887) x18673)
+:assumption (or x30557 x20646)
+:assumption (or (not x21690) (not x10247))
+:assumption (or (not x1606) (not x12626))
+:assumption (or x26567 (not x1758))
+:assumption (or (not x19180) x4099)
+:assumption (or x14258 (not x27541))
+:assumption (or x22431 (not x29748))
+:assumption (or (not x28973) x23350)
+:assumption (or (not x21005) x480)
+:assumption (or x28695 (not x26394))
+:assumption (or x31427 (not x28784))
+:assumption (or x26670 x3925)
+:assumption (or x4296 (not x26824))
+:assumption (or (not x27561) x22025)
+:assumption (or x27537 (not x31007) x5394 x5710)
+:assumption (or x23440 (not x25063))
+:assumption (or x1799 x499)
+:assumption (or x13092 x7674)
+:assumption (or x762 x23244 (not x29938))
+:assumption (or (not x28503) (not x28200))
+:assumption (or (not x28454) (not x16841))
+:assumption (or (not x20132) (not x964))
+:assumption (or x31354 x30292)
+:assumption (or x17339 (not x30912))
+:assumption (or x15990 x23796)
+:assumption (or (not x29087) x25425 (not x25716) (not x28892))
+:assumption (or (not x26839) (not x31769))
+:assumption (or x1845 x22892)
+:assumption (or x11343 x14482)
+:assumption (or (not x25659) (not x30970) x11447 x7852 x26447 x16965 x22581 x21454)
+:assumption (or (not x5858) (not x27074) (not x25484) x15268 (not x9673) (not x1653))
+:assumption (or x11446 x2669 x21653)
+:assumption (or x9150 (not x5025))
+:assumption (or x11800 (not x25012))
+:assumption (or x22531 (not x31651) x3140)
+:assumption (or x29071 (not x1393) x1084)
+:assumption (or (not x30018) x3230)
+:assumption (or x8347 x26251)
+:assumption (or x1149 (not x22655))
+:assumption (or x5843 (not x21822) x8002)
+:assumption (or x30634 (not x16632))
+:assumption (or x19533 x24632)
+:assumption (or x2674 x22622 (not x23099) x24316)
+:assumption (or x6736 x27265)
+:assumption (or (not x24697) x20172)
+:assumption (or (not x30502) (not x6149))
+:assumption (or x15961 x3846)
+:assumption (or (not x27446) x30875)
+:assumption (or (not x26307) (not x13732) (not x2687) (not x1635))
+:assumption (or (not x20728) (not x3489))
+:assumption (or x578 x22855)
+:assumption (or (not x22283) x9669)
+:assumption (or (not x4474) (not x667))
+:assumption (or x8002 (not x13340))
+:assumption (or (not x25762) x21633)
+:assumption (or x19865 x7634)
+:assumption (or (not x10810) x10632)
+:assumption (or x6282 (not x4250) (not x24826))
+:assumption (or (not x6090) (not x24944))
+:assumption (or (not x21025) x17243)
+:assumption (or x3203 x4693)
+:assumption (or (not x18167) x5582)
+:assumption (or (not x25751) (not x4334))
+:assumption (or (not x11348) x9983)
+:assumption (or x10909 (not x29766) x3655 (not x23773))
+:assumption (or (not x23029) x5120)
+:assumption (or x29630 x22422)
+:assumption (or x3015 (not x5104))
+:assumption (or x21986 x23627)
+:assumption (or x9404 x17334 (not x6594) (not x29959))
+:assumption (or x28609 (not x2331))
+:assumption (or (not x12506) x4246)
+:assumption (or x7534 x4378 (not x13956) x20723)
+:assumption (or (not x30655) x9833)
+:assumption (or x11830 (not x8002))
+:assumption (or (not x23812) (not x13411) x17715 x11192)
+:assumption (or x17263 x16910)
+:assumption (or x20128 x27372)
+:assumption (or x22602 (not x31612))
+:assumption (or (not x3325) x3686)
+:assumption (or (not x29941) (not x12233))
+:assumption (or x29493 (not x25829))
+:assumption (or x19952 x26971)
+:assumption (or (not x23095) x11993 (not x22295) (not x22192))
+:assumption (or (not x21516) x6628 x20809 (not x6440) x11744 x23798 x24968)
+:assumption (or (not x30457) x24671)
+:assumption (or (not x6511) (not x27503))
+:assumption (or x22829 x10849)
+:assumption (or x30516 x25659 (not x4940))
+:assumption (or x22350 x25350)
+:assumption (or (not x2500) x11731)
+:assumption (or x18547 x25659 (not x16429))
+:assumption (or x31558 x14514 x10751)
+:assumption (or x19419 (not x4564))
+:assumption (or (not x18992) (not x3776) (not x181) x2326 (not x24927) x30371 x23858 (not x7720) (not x30343))
+:assumption (or (not x30266) (not x2058))
+:assumption (or x10907 x23017 x13054)
+:assumption (or x24701 x14890)
+:assumption (or (not x7060) x14455)
+:assumption (or x28422 (not x10426) x28234)
+:assumption (or (not x917) x26935 x9240 (not x14078))
+:assumption (or (not x1876) (not x25415))
+:assumption (or x27647 (not x25919))
+:assumption (or x17786 x16789)
+:assumption (or x25607 x23214)
+:assumption (or x6014 (not x11489))
+:assumption (or x28282 (not x12122))
+:assumption (or (not x1474) x31536 x29395 x27161 x10876 x2038)
+:assumption (or x21900 (not x22401))
+:assumption (or (not x21294) x11727)
+:assumption (or (not x27609) (not x24722) (not x19442) x16802)
+:assumption (or x11040 x21401)
+:assumption (or x14079 (not x8013))
+:assumption (or (not x13598) x19801)
+:assumption (or (not x2503) (not x15951))
+:assumption (or x26097 (not x28242) (not x7510))
+:assumption (or (not x7584) x19357)
+:assumption (or (not x8120) (not x650))
+:assumption (or (not x13411) x9876)
+:assumption (or x15744 (not x6302))
+:assumption (or x13676 x31253)
+:assumption (or x9705 x9712)
+:assumption (or x26857 x29959 (not x14963) x9453 (not x6594))
+:assumption (or x4955 x28805)
+:assumption (or x28242 (not x25237))
+:assumption (or (not x16045) (not x23558))
+:assumption (or (not x27307) (not x31464))
+:assumption (or (not x31797) x25440)
+:assumption (or (not x10129) (not x17361))
+:assumption (or x23730 x17139)
+:assumption (or (not x1393) x11419)
+:assumption (or (not x18236) x1274)
+:assumption (or (not x31906) x27930)
+:assumption (or (not x31842) x20606)
+:assumption (or x24536 x13005)
+:assumption (or x6594 x17534 x14574)
+:assumption (or (not x8607) (not x13772))
+:assumption (or (not x21231) (not x16447))
+:assumption (or (not x28885) x31061)
+:assumption (or (not x18522) (not x2201))
+:assumption (or x18529 (not x27231))
+:assumption (or x22916 x29739)
+:assumption (or (not x10124) x223)
+:assumption (or x7294 (not x8002))
+:assumption (or x27644 (not x11688))
+:assumption (or x23244 (not x1603) (not x8002))
+:assumption (or (not x9589) (not x9772))
+:assumption (or (not x22449) (not x21480) x20550 x9787)
+:assumption (or (not x5249) (not x22085))
+:assumption (or (not x16732) x18129)
+:assumption (or (not x20173) x21071)
+:assumption (or (not x8609) (not x14132) x5133)
+:assumption (or (not x5846) x26252)
+:assumption (or (not x26748) x5528)
+:assumption (or x2123 x21302 x12578 x11783 (not x24381))
+:assumption (or (not x16816) (not x1230))
+:assumption (or (not x15788) (not x17475))
+:assumption (or (not x19702) x17314 x26941 x11601)
+:assumption (or (not x20949) (not x15895))
+:assumption (or x15388 (not x27998))
+:assumption (or x5301 x28871)
+:assumption (or (not x26343) x21432)
+:assumption (or x8807 x22827)
+:assumption (or (not x24903) (not x9192))
+:assumption (or x17044 (not x27944))
+:assumption (or (not x26737) (not x31000))
+:assumption (or (not x28744) (not x29887))
+:assumption (or x7779 x12492)
+:assumption (or x27611 (not x19617))
+:assumption (or x14092 x6019)
+:assumption (or (not x26280) (not x6944))
+:assumption (or (not x5013) x3264)
+:assumption (or x20735 (not x11023))
+:assumption (or (not x1674) (not x14508))
+:assumption (or x11866 (not x506))
+:assumption (or x14720 x12457)
+:assumption (or (not x22416) x18005)
+:assumption (or (not x4767) x6289)
+:assumption (or x18698 x31071)
+:assumption (or x13875 (not x25298))
+:assumption (or x7043 x9941)
+:assumption (or (not x18127) (not x6004) (not x8002))
+:assumption (or (not x17281) x10240 (not x9314) x24294 (not x26279) (not x27065))
+:assumption (or x21738 x7327 (not x29959))
+:assumption (or (not x16665) (not x21972))
+:assumption (or x1334 x22309)
+:assumption (or (not x16025) x29740)
+:assumption (or (not x1890) (not x29887))
+:assumption (or (not x4504) (not x1914))
+:assumption (or (not x10089) x28146)
+:assumption (or (not x3175) x13850)
+:assumption (or x21867 x24793)
+:assumption (or (not x3414) x4793)
+:assumption (or x2184 x27537)
+:assumption (or (not x25769) (not x19156))
+:assumption (or x340 x15397)
+:assumption (or x27093 (not x21485))
+:assumption (or (not x7237) x10914)
+:assumption (or x16440 x8002)
+:assumption (or (not x8114) x25486)
+:assumption (or x23399 x24026)
+:assumption (or (not x25659) x23847)
+:assumption (or (not x10822) (not x2796))
+:assumption (or x22154 x20488 x21298 x1454)
+:assumption (or (not x27400) x7537)
+:assumption (or (not x4988) x25235)
+:assumption (or (not x27749) x25991)
+:assumption (or (not x20112) (not x11340))
+:assumption (or x18757 x19929)
+:assumption (or x29089 x14720)
+:assumption (or x19986 x26190)
+:assumption (or x16721 x16794)
+:assumption (or x11488 (not x1489) (not x12470))
+:assumption (or x7916 (not x7603))
+:assumption (or (not x5762) x16329 x6437)
+:assumption (or x17927 x14445)
+:assumption (or (not x8876) x25836)
+:assumption (or (not x17016) (not x9470))
+:assumption (or (not x20114) (not x2782))
+:assumption (or (not x11569) x5769 (not x9013) (not x17176) x18376 x5101 (not x25560) x5018 (not x26497) (not x20546) x31894)
+:assumption (or (not x25557) x9150)
+:assumption (or (not x30161) x28546)
+:assumption (or x29372 (not x13927))
+:assumption (or x29923 (not x3934))
+:assumption (or (not x19183) (not x5286))
+:assumption (or (not x5206) x18256)
+:assumption (or (not x13765) (not x22154))
+:assumption (or x12932 (not x4044))
+:assumption (or (not x4098) (not x3582))
+:assumption (or x7074 x25914)
+:assumption (or x25315 (not x10510) x9742)
+:assumption (or x5528 (not x7329))
+:assumption (or (not x30925) (not x20748))
+:assumption (or (not x18905) (not x19345))
+:assumption (or x13913 (not x29326) x31519 x16562 x3456 (not x18553) (not x9975) (not x1390))
+:assumption (or (not x11010) (not x5766))
+:assumption (or x1769 (not x20236))
+:assumption (or (not x28990) x14590)
+:assumption (or x21653 x16443 x19062)
+:assumption (or x31860 x20335)
+:assumption (or (not x14981) x5794)
+:assumption (or x29671 (not x1621))
+:assumption (or x4822 x29580 x12784 x17769)
+:assumption (or (not x8002) x11560)
+:assumption (or x13663 x13118)
+:assumption (or x9725 x3001 x29932 (not x202))
+:assumption (or x30197 (not x14266))
+:assumption (or x23058 (not x23779) (not x25911))
+:assumption (or x12669 x6380 (not x23122))
+:assumption (or x18616 x21767)
+:assumption (or (not x29570) (not x12885))
+:assumption (or (not x25942) x26598)
+:assumption (or (not x22918) x2102)
+:assumption (or (not x6497) x17803)
+:assumption (or (not x3144) x12199)
+:assumption (or (not x26179) x21073)
+:assumption (or x9382 x19492 x25659)
+:assumption (or x13879 x3021)
+:assumption (or (not x15147) (not x5761))
+:assumption (or (not x16260) (not x5110))
+:assumption (or (not x24232) (not x4044) x25513 x16157 x31252 x21101 x4479 x14086 (not x10106))
+:assumption (or x6385 (not x25532))
+:assumption (or (not x29785) (not x288))
+:assumption (or (not x8602) x4183)
+:assumption (or x4709 (not x20468))
+:assumption (or (not x10828) (not x672))
+:assumption (or x28801 (not x30825))
+:assumption (or (not x9531) x26412 x13576 (not x15015))
+:assumption (or x24488 (not x27769) x26810 (not x22140))
+:assumption (or x7900 (not x1662) x28362 x28797 x14417 x1173 (not x4416) (not x17027) (not x8220))
+:assumption (or x16329 (not x12144))
+:assumption (or x17359 (not x15752))
+:assumption (or (not x2619) x19099)
+:assumption (or x25570 (not x27734))
+:assumption (or (not x29429) (not x30269))
+:assumption (or (not x16188) (not x2356))
+:assumption (or (not x5499) x9579)
+:assumption (or (not x9118) (not x25923))
+:assumption (or x18715 x22289)
+:assumption (or (not x18859) x14354)
+:assumption (or x30179 x11405)
+:assumption (or x8022 (not x6706))
+:assumption (or (not x24295) (not x6378))
+:assumption (or (not x7440) x20274)
+:assumption (or (not x18234) (not x11822))
+:assumption (or (not x18584) (not x4259) x28721 x24228 x7192)
+:assumption (or x26107 x13250)
+:assumption (or x7107 (not x8318) (not x30551))
+:assumption (or x10189 x4451)
+:assumption (or (not x9425) (not x17930))
+:assumption (or (not x4061) x25554)
+:assumption (or (not x26675) x16908)
+:assumption (or x5948 x22693)
+:assumption (or x11613 x31498)
+:assumption (or x21658 (not x7824))
+:assumption (or x3148 x18033 (not x18953) x2955 x15255)
+:assumption (or x27272 x54)
+:assumption (or (not x30408) x13028)
+:assumption (or x25659 x7623)
+:assumption (or (not x28541) (not x7894))
+:assumption (or x11430 x24589)
+:assumption (or (not x26026) (not x16933))
+:assumption (or (not x9193) (not x24079))
+:assumption (or (not x9172) (not x15270))
+:assumption (or (not x16488) x4723)
+:assumption (or x30933 (not x27877) x21815)
+:assumption (or x5611 (not x3570))
+:assumption (or x11869 (not x15383) x25659)
+:assumption (or x16274 (not x16413))
+:assumption (or (not x18369) (not x29725))
+:assumption (or (not x22200) x24355)
+:assumption (or (not x31408) (not x29649) x9989 (not x28912))
+:assumption (or (not x13910) x27366)
+:assumption (or (not x29570) (not x29826) (not x4386))
+:assumption (or x15627 x9070)
+:assumption (or x10259 x7080)
+:assumption (or x29066 x2291)
+:assumption (or (not x2305) (not x5597))
+:assumption (or (not x14792) x2534)
+:assumption (or (not x11737) (not x9417))
+:assumption (or x5964 (not x17956))
+:assumption (or x18449 x7292)
+:assumption (or (not x7755) x22573 (not x14435))
+:assumption (or (not x17359) x22779 x31890 (not x11281))
+:assumption (or (not x13518) (not x642))
+:assumption (or x24835 (not x23289))
+:assumption (or (not x30288) x6802)
+:assumption (or x20217 (not x7108))
+:assumption (or (not x23109) (not x31125))
+:assumption (or (not x4318) x31828)
+:assumption (or x31850 (not x22837))
+:assumption (or (not x6848) (not x3485) (not x8462))
+:assumption (or x11071 x24775)
+:assumption (or x18439 x3084)
+:assumption (or (not x15688) (not x27364))
+:assumption (or (not x22845) (not x12012))
+:assumption (or (not x14839) (not x6802) x30597)
+:assumption (or x8329 (not x21612))
+:assumption (or (not x16741) (not x9463))
+:assumption (or x904 (not x29477))
+:assumption (or (not x21298) (not x9341))
+:assumption (or (not x10318) (not x18800))
+:assumption (or (not x4279) (not x3700) (not x4847) (not x4156))
+:assumption (or x8961 x10063)
+:assumption (or (not x23355) (not x19312))
+:assumption (or x5199 x30379)
+:assumption (or x19927 x24138)
+:assumption (or (not x23958) x23001)
+:assumption (or x17300 (not x23363) (not x30899))
+:assumption (or x6401 (not x14173))
+:assumption (or (not x27529) x24002 (not x23244) (not x8002))
+:assumption (or x4136 (not x1152))
+:assumption (or x1309 x30190)
+:assumption (or (not x27468) (not x12595))
+:assumption (or x5667 x10959)
+:assumption (or (not x16481) x321)
+:assumption (or x28771 x11872)
+:assumption (or x7296 x16608)
+:assumption (or (not x3059) (not x13218))
+:assumption (or x15988 x14816)
+:assumption (or (not x30042) (not x6353) x9398 x4167 (not x30893))
+:assumption (or x237 x15486 (not x18069) (not x3494))
+:assumption (or (not x636) x19992)
+:assumption (or (not x1536) (not x30482))
+:assumption (or (not x25955) (not x16252))
+:assumption (or (not x31411) x27004)
+:assumption (or x31261 x28108)
+:assumption (or (not x9911) (not x23114))
+:assumption (or (not x14070) (not x7065))
+:assumption (or x28410 x20251)
+:assumption (or x15661 x4004)
+:assumption (or x31094 (not x19087))
+:assumption (or x25893 x14455)
+:assumption (or x26876 (not x29287) (not x18922) x11433 (not x2100))
+:assumption (or (not x7529) (not x30439) (not x11977) (not x14832))
+:assumption (or x14663 x16238)
+:assumption (or (not x19443) x9423)
+:assumption (or x17838 x11686)
+:assumption (or (not x25304) x6289)
+:assumption (or (not x7134) x7485 (not x27359) x11125 (not x17092))
+:assumption (or (not x14123) (not x5960))
+:assumption (or (not x30386) x6652 x22467 (not x10060))
+:assumption (or x7814 x23790 (not x28991))
+:assumption (or x4501 x30432)
+:assumption (or x14204 x11718)
+:assumption (or (not x23035) x8516)
+:assumption (or (not x29257) (not x15749) x11159 x15925)
+:assumption (or (not x8208) x31594)
+:assumption (or x10841 x16327 (not x8602))
+:assumption (or x27054 (not x31074))
+:assumption (or (not x6876) x21396)
+:assumption (or (not x15861) (not x25540))
+:assumption (or x1343 (not x24857))
+:assumption (or x20169 (not x23626))
+:assumption (or x8613 x8002)
+:assumption (or x7885 (not x27321))
+:assumption (or (not x27301) (not x22866))
+:assumption (or x5268 x28830)
+:assumption (or (not x31015) (not x12729))
+:assumption (or (not x791) x13311)
+:assumption (or (not x18159) x16121)
+:assumption (or x22850 (not x11489))
+:assumption (or x6951 (not x3409) x27467 x13576)
+:assumption (or (not x29312) (not x22697))
+:assumption (or x23158 (not x26022))
+:assumption (or x16728 x23257)
+:assumption (or (not x29612) (not x28927))
+:assumption (or (not x28563) (not x6857) x5822 x18 x7241 x28612 (not x6294))
+:assumption (or x30138 x10058)
+:assumption (or (not x27475) (not x3771))
+:assumption (or x23975 (not x14097))
+:assumption (or x6623 x11112 (not x27875) x28949 x14486)
+:assumption (or x2073 (not x31829) (not x23244))
+:assumption (or (not x19062) x22297 x21653)
+:assumption (or (not x4992) (not x26859))
+:assumption (or x20733 (not x24351))
+:assumption (or (not x23258) x12118)
+:assumption (or x183 x19485 (not x20621) (not x7612) (not x17709) x27998)
+:assumption (or (not x27485) (not x9255))
+:assumption (or (not x19804) (not x15866) x5181)
+:assumption (or (not x5886) (not x16770))
+:assumption (or x20498 (not x3879) x9272 x27295)
+:assumption (or x5178 x762)
+:assumption (or (not x20695) x21653 (not x2669))
+:assumption (or x24227 (not x4258))
+:assumption (or (not x499) (not x26866))
+:assumption (or (not x1948) (not x24411))
+:assumption (or x17834 (not x30859))
+:assumption (or x23877 (not x1179))
+:assumption (or (not x30609) x9612)
+:assumption (or x22821 x6494)
+:assumption (or (not x3390) x17065)
+:assumption (or x6691 x11189)
+:assumption (or (not x7491) (not x19117) x19251 x2195 (not x30570))
+:assumption (or (not x5488) x28764)
+:assumption (or (not x24928) (not x22848))
+:assumption (or (not x25659) x17353)
+:assumption (or x1421 x19419)
+:assumption (or x7103 (not x7248))
+:assumption (or x4684 x20782)
+:assumption (or (not x1993) x17017)
+:assumption (or x8773 (not x8995))
+:assumption (or (not x20484) (not x6288))
+:assumption (or x16428 (not x16369))
+:assumption (or (not x4573) (not x22585))
+:assumption (or x21298 (not x25008) (not x8003) (not x20474))
+:assumption (or x9957 x20337)
+:assumption (or x10797 (not x2133))
+:assumption (or x14901 (not x3148))
+:assumption (or x29182 x4881 (not x20367) (not x26186) x3340)
+:assumption (or (not x11841) x31134)
+:assumption (or (not x21833) (not x26016))
+:assumption (or (not x21818) x13788)
+:assumption (or (not x13848) x6249)
+:assumption (or (not x16812) (not x10874) (not x6307) x12741)
+:assumption (or x10261 (not x30208) x9201)
+:assumption (or (not x27770) x16379)
+:assumption (or x7303 (not x4355))
+:assumption (or (not x4130) x14832)
+:assumption (or x15168 x8414)
+:assumption (or x2789 (not x13046))
+:assumption (or x16538 (not x22803) x1416 x25490)
+:assumption (or (not x17594) x23406)
+:assumption (or x4417 x16510)
+:assumption (or x16809 x17082)
+:assumption (or x4763 (not x3001))
+:assumption (or x5528 x2291)
+:assumption (or x20163 (not x13086))
+:assumption (or (not x1116) x19508)
+:assumption (or (not x6625) x10585)
+:assumption (or x16409 (not x23244) x11007)
+:assumption (or (not x28742) (not x29016))
+:assumption (or (not x14817) (not x1975))
+:assumption (or (not x12582) x1393)
+:assumption (or (not x15323) (not x15903))
+:assumption (or (not x6910) x22554)
+:assumption (or (not x5483) x3009)
+:assumption (or x28732 (not x20266))
+:assumption (or x30570 (not x19251))
+:assumption (or (not x20735) x21634 (not x14357))
+:assumption (or (not x11630) x27846)
+:assumption (or (not x27494) x31835)
+:assumption (or x11382 x2105)
+:assumption (or (not x19172) x25659)
+:assumption (or (not x9186) x1107)
+:assumption (or x12124 x4822)
+:assumption (or x21026 (not x20684) (not x25267) x28266 (not x8981))
+:assumption (or (not x18985) x12257)
+:assumption (or (not x1027) x11879 (not x29312) x27134)
+:assumption (or (not x26628) (not x10690))
+:assumption (or (not x19884) (not x12046))
+:assumption (or (not x17117) (not x18861))
+:assumption (or (not x29952) x11115)
+:assumption (or x1983 (not x21653))
+:assumption (or x13860 x27636 (not x2177) (not x14875))
+:assumption (or (not x25816) x30672)
+:assumption (or x7539 x13058)
+:assumption (or x19092 (not x27780))
+:assumption (or x27950 (not x21997))
+:assumption (or x8873 x29749)
+:assumption (or x22454 (not x13170))
+:assumption (or x23163 (not x21958))
+:assumption (or (not x24632) (not x27864) (not x25523) (not x18370) (not x19005) (not x31884))
+:assumption (or (not x9182) x17150)
+:assumption (or x10077 x9296)
+:assumption (or (not x16910) (not x14949) x13111)
+:assumption (or (not x30319) x20823)
+:assumption (or (not x28255) x1066 (not x13945))
+:assumption (or x29734 (not x16826))
+:assumption (or x12606 x28104)
+:assumption (or x2298 (not x22127))
+:assumption (or (not x29035) x9074)
+:assumption (or x21091 (not x13709))
+:assumption (or x29632 (not x16025))
+:assumption (or x22232 x21740)
+:assumption (or x7539 x31293)
+:assumption (or x15263 (not x13194))
+:assumption (or x26789 (not x7420))
+:assumption (or x16741 x6229)
+:assumption (or x869 (not x753))
+:assumption (or (not x25993) (not x17290))
+:assumption (or x10383 x8446)
+:assumption (or (not x4248) x17209)
+:assumption (or (not x22206) (not x12488))
+:assumption (or x9324 x5112)
+:assumption (or x11885 (not x2156))
+:assumption (or (not x6009) (not x1515))
+:assumption (or (not x16315) (not x10700))
+:assumption (or (not x11205) x3121 (not x21298))
+:assumption (or (not x20478) x20903)
+:assumption (or (not x29864) x25112)
+:assumption (or (not x26702) x10769)
+:assumption (or (not x28957) (not x28471))
+:assumption (or (not x10774) x15702)
+:assumption (or (not x17359) (not x19434))
+:assumption (or x21298 x10400 (not x17082) (not x16809))
+:assumption (or (not x25092) (not x5155) x20660 x24039 x12087 (not x18694) (not x10686) (not x20337))
+:assumption (or (not x3738) (not x16968))
+:assumption (or x11556 (not x11628) (not x27104) (not x4233))
+:assumption (or x25385 (not x23982))
+:assumption (or x9483 (not x1393))
+:assumption (or x6307 (not x10680) x26835 x10874)
+:assumption (or x22427 x16721)
+:assumption (or (not x31366) x3904)
+:assumption (or (not x17278) x23865)
+:assumption (or x28621 x5805)
+:assumption (or x16949 (not x964))
+:assumption (or x6969 x31626 (not x29048))
+:assumption (or x13956 (not x9281))
+:assumption (or (not x9733) (not x14267))
+:assumption (or (not x14113) (not x5252))
+:assumption (or x6353 (not x7459))
+:assumption (or x29965 (not x2428))
+:assumption (or (not x28416) x8002)
+:assumption (or x4229 (not x17538))
+:assumption (or x16609 x22956)
+:assumption (or x827 x14027 x21187)
+:assumption (or (not x8586) (not x5034))
+:assumption (or (not x27169) (not x10425))
+:assumption (or x13372 (not x9855))
+:assumption (or x29708 (not x27242))
+:assumption (or (not x21360) x31397)
+:assumption (or (not x11076) x13980)
+:assumption (or (not x24109) x21115)
+:assumption (or x29575 (not x1393) (not x31213))
+:assumption (or x23302 x30587)
+:assumption (or x31652 x14121)
+:assumption (or (not x10786) (not x3453))
+:assumption (or x5118 x20628)
+:assumption (or x17075 (not x9214))
+:assumption (or x2208 (not x23244))
+:assumption (or (not x6702) x13654)
+:assumption (or (not x22757) (not x16363))
+:assumption (or (not x14410) (not x7272))
+:assumption (or x11826 x25659)
+:assumption (or x15213 (not x18868))
+:assumption (or x7385 (not x27472))
+:assumption (or x10666 (not x4931))
+:assumption (or x26678 x14943 (not x25904) (not x18588))
+:assumption (or x8443 x16345)
+:assumption (or (not x12587) x29259)
+:assumption (or x16779 x3671)
+:assumption (or (not x15638) x2402 (not x2467) (not x22793) (not x24673))
+:assumption (or (not x2848) (not x17388))
+:assumption (or x5278 (not x8021))
+:assumption (or x2559 x3782)
+:assumption (or (not x13978) x20561)
+:assumption (or (not x19381) (not x29501))
+:assumption (or x5298 x6027)
+:assumption (or (not x4227) (not x22093))
+:assumption (or x27015 x15022)
+:assumption (or x7868 x14455 x3435)
+:assumption (or x27628 (not x17855))
+:assumption (or (not x10222) x8274)
+:assumption (or x11938 x15565)
+:assumption (or (not x9025) x29234 (not x17075))
+:assumption (or x24644 (not x12127))
+:assumption (or x25659 x15291)
+:assumption (or (not x6072) x9680)
+:assumption (or (not x25659) x2767 x4090)
+:assumption (or x18618 (not x4304))
+:assumption (or x21072 x25277)
+:assumption (or x27913 x25354)
+:assumption (or (not x7655) x2854)
+:assumption (or x21326 x17909)
+:assumption (or (not x22055) x30728)
+:assumption (or x7411 x16288)
+:assumption (or (not x7286) x25620 (not x11288) (not x1816) x5685)
+:assumption (or (not x26912) x8322 (not x5928) x12854)
+:assumption (or (not x28784) (not x10663))
+:assumption (or x6822 (not x24226))
+:assumption (or (not x14143) (not x23244))
+:assumption (or (not x29518) x19973)
+:assumption (or (not x16318) (not x25597))
+:assumption (or (not x2692) x14136)
+:assumption (or x11317 (not x28067))
+:assumption (or x30399 (not x1060))
+:assumption (or x25138 x22896)
+:assumption (or x29241 x27799)
+:assumption (or x5462 (not x3632) (not x5360) x7302 (not x1031) (not x21078) x16364)
+:assumption (or (not x29179) (not x12495) (not x4013) x14591 x26190 x18060 x20081)
+:assumption (or (not x17143) (not x21107))
+:assumption (or x28019 (not x499))
+:assumption (or (not x19612) x20090)
+:assumption (or x30271 (not x2350))
+:assumption (or x13610 x1826)
+:assumption (or x13902 (not x27167))
+:assumption (or x13149 x11149)
+:assumption (or (not x13764) (not x29312) (not x4024))
+:assumption (or x25854 x22235)
+:assumption (or x17730 (not x10464))
+:assumption (or x14932 (not x4289))
+:assumption (or x827 x9519)
+:assumption (or x1038 x31729)
+:assumption (or (not x1393) (not x20404) (not x15574))
+:assumption (or (not x398) (not x8690))
+:assumption (or x15740 (not x27037))
+:assumption (or x8521 (not x2482))
+:assumption (or x21298 x27169 (not x1204) x24920)
+:assumption (or (not x14927) (not x29526))
+:assumption (or x12353 (not x19654))
+:assumption (or x28565 x827 (not x31771))
+:assumption (or (not x13458) (not x18986))
+:assumption (or (not x20750) x14747)
+:assumption (or (not x11864) x29774)
+:assumption (or (not x9935) x26781)
+:assumption (or (not x7223) x209 (not x29047) (not x7469) x10877)
+:assumption (or x15826 x8616)
+:assumption (or (not x26096) x9971)
+:assumption (or x25813 (not x27235))
+:assumption (or x2893 x14615)
+:assumption (or (not x719) x26596)
+:assumption (or x26913 x22080)
+:assumption (or (not x24627) (not x12668))
+:assumption (or (not x18519) (not x6982))
+:assumption (or (not x9531) x3452)
+:assumption (or (not x26525) (not x22731))
+:assumption (or x2027 (not x28591))
+:assumption (or x30887 x175)
+:assumption (or x31847 x3250)
+:assumption (or (not x11540) (not x17521))
+:assumption (or x30211 (not x22188))
+:assumption (or x21179 (not x10741))
+:assumption (or x20651 x15309)
+:assumption (or x6240 x19374 x14862 x13399 x2500 x22960)
+:assumption (or x25293 x6411 (not x24105) x22419 (not x27756))
+:assumption (or x2246 x25893)
+:assumption (or x21112 x13137 (not x2119))
+:assumption (or (not x22282) (not x17757))
+:assumption (or x4940 (not x5729))
+:assumption (or x21423 (not x30452))
+:assumption (or x20794 x24951)
+:assumption (or (not x6783) x25389)
+:assumption (or x24201 (not x30971) x15562)
+:assumption (or (not x13442) x22229)
+:assumption (or (not x3929) (not x10753) (not x11000) x27715 x3205)
+:assumption (or (not x18258) (not x12489))
+:assumption (or (not x4836) x8464)
+:assumption (or (not x9373) (not x766) x10482)
+:assumption (or (not x14455) (not x31628) (not x3435) (not x12019))
+:assumption (or x18039 x27249)
+:assumption (or (not x10844) x17270)
+:assumption (or x20990 (not x9663))
+:assumption (or (not x5709) (not x16910) (not x26408))
+:assumption (or x5214 (not x5443))
+:assumption (or (not x14496) (not x13854))
+:assumption (or x30667 (not x25191))
+:assumption (or (not x25514) (not x14053))
+:assumption (or x26877 x1909)
+:assumption (or x17996 x10705)
+:assumption (or x21723 x9008)
+:assumption (or x15082 x18047)
+:assumption (or (not x1976) (not x449) (not x3150) x7715)
+:assumption (or (not x12802) x6295)
+:assumption (or x8286 (not x16599))
+:assumption (or x13383 x1918)
+:assumption (or (not x1216) (not x6294) x12156)
+:assumption (or (not x18859) (not x260) x3970)
+:assumption (or x10776 (not x8457))
+:assumption (or (not x30113) x25220)
+:assumption (or x6781 (not x17945))
+:assumption (or (not x12066) (not x6549))
+:assumption (or (not x10675) (not x27234))
+:assumption (or x8115 (not x6898))
+:assumption (or (not x6090) x8202)
+:assumption (or x30138 (not x8769) (not x27853) x18798)
+:assumption (or x5134 x28346)
+:assumption (or (not x8837) x30564)
+:assumption (or (not x27145) (not x19761))
+:assumption (or (not x6969) x5656)
+:assumption (or (not x7145) (not x26096))
+:assumption (or x20005 (not x10652) x9531 (not x13576))
+:assumption (or (not x21140) (not x13180))
+:assumption (or x2066 (not x31322))
+:assumption (or x15024 (not x4504))
+:assumption (or x21695 x11579 x25180 (not x23838) (not x31931) x4602)
+:assumption (or x29312 x24756 (not x15987) x29597)
+:assumption (or x26140 x9322)
+:assumption (or (not x15861) x6328)
+:assumption (or (not x8301) x27043)
+:assumption (or x23604 (not x30428))
+:assumption (or x21502 (not x9008) (not x16426) (not x5528) x10793)
+:assumption (or (not x2126) x12916)
+:assumption (or x16974 (not x24866))
+:assumption (or x31063 x25662)
+:assumption (or (not x23546) (not x29544))
+:assumption (or (not x29130) x5807)
+:assumption (or (not x27660) (not x17587))
+:assumption (or (not x7173) x25300)
+:assumption (or (not x26887) x15134)
+:assumption (or x3452 (not x8198))
+:assumption (or (not x30236) (not x28360))
+:assumption (or x1046 x3435)
+:assumption (or (not x1665) (not x3741))
+:assumption (or x28209 x27076)
+:assumption (or x16025 (not x11792) x15103)
+:assumption (or (not x7878) x19711)
+:assumption (or (not x4756) (not x9785))
+:assumption (or (not x12178) x4138)
+:assumption (or (not x17369) (not x27537))
+:assumption (or x23578 x7515)
+:assumption (or x4755 x20531)
+:assumption (or x16656 (not x6919) x8602 (not x2519) x18595 x24330 x31385 x11428)
+:assumption (or x5938 (not x15731))
+:assumption (or x27725 x7673)
+:assumption (or (not x30764) (not x11390))
+:assumption (or x12806 (not x22004))
+:assumption (or x6889 x519)
+:assumption (or (not x25659) (not x3285))
+:assumption (or x26897 x2367)
+:assumption (or (not x776) x26704)
+:assumption (or (not x465) x24091)
+:assumption (or x7854 x16034)
+:assumption (or (not x22661) x7676)
+:assumption (or x19358 (not x9808))
+:assumption (or (not x9409) (not x11636))
+:assumption (or (not x14787) x19682 (not x8336) x480)
+:assumption (or (not x266) (not x15493))
+:assumption (or x16377 x7522)
+:assumption (or (not x12856) (not x17476))
+:assumption (or (not x29730) x18086)
+:assumption (or (not x19299) x26885)
+:assumption (or (not x2133) x24649)
+:assumption (or (not x3068) x28972)
+:assumption (or (not x26224) x18051)
+:assumption (or x12985 (not x17653))
+:assumption (or x15099 (not x30718))
+:assumption (or (not x830) x20992)
+:assumption (or x11718 x27993)
+:assumption (or (not x3945) x27128)
+:assumption (or x12336 (not x9507))
+:assumption (or (not x21914) (not x6969))
+:assumption (or (not x8584) x5656)
+:assumption (or x22812 x18896)
+:assumption (or x1142 x10821 (not x15628) x9008 (not x6973) x7678)
+:assumption (or (not x26800) (not x30113))
+:assumption (or (not x27291) (not x12279))
+:assumption (or x15995 (not x29909))
+:assumption (or (not x15142) (not x9008) (not x2684))
+:assumption (or (not x23899) x21815 x22567 x4334 x4795 x576)
+:assumption (or (not x13347) x16217)
+:assumption (or (not x3280) (not x23246))
+:assumption (or x10757 (not x23202))
+:assumption (or x13325 (not x5282))
+:assumption (or (not x234) x31661)
+:assumption (or (not x25334) (not x28773) x4579 (not x15173) (not x31275) (not x22373) x13188)
+:assumption (or x25772 x4012)
+:assumption (or x30157 (not x16654))
+:assumption (or x6929 x9167)
+:assumption (or (not x20651) x25195)
+:assumption (or (not x31376) (not x6520))
+:assumption (or (not x20366) (not x16811) x26764 x3453 x7024)
+:assumption (or (not x12794) (not x11963))
+:assumption (or (not x10784) (not x4898))
+:assumption (or (not x17327) (not x18733))
+:assumption (or (not x9991) x21951)
+:assumption (or (not x22964) x6771 x2579 (not x15706) x31926 (not x20894) (not x16531))
+:assumption (or (not x30074) x30181)
+:assumption (or (not x5925) (not x4535))
+:assumption (or (not x16002) (not x18694))
+:assumption (or (not x26245) (not x16875))
+:assumption (or x20597 x24233)
+:assumption (or (not x23593) x3264)
+:assumption (or x11489 (not x27910) (not x15071) x378)
+:assumption (or x21525 x11788)
+:assumption (or (not x9275) (not x1154))
+:assumption (or x10013 (not x23940))
+:assumption (or x3914 (not x15967))
+:assumption (or x21409 x30534)
+:assumption (or x30319 (not x22033))
+:assumption (or (not x12385) x13188)
+:assumption (or (not x16041) x9008 x19312 (not x25821) x5965 x21497)
+:assumption (or x11750 x2937)
+:assumption (or x29139 (not x31316))
+:assumption (or x29568 (not x17596))
+:assumption (or (not x784) x27322 x16510 (not x6606) (not x30876))
+:assumption (or x28548 x14638)
+:assumption (or x27818 (not x22944) (not x14839))
+:assumption (or (not x13794) (not x19236) (not x21432))
+:assumption (or x2833 (not x24511))
+:assumption (or (not x7776) (not x5708) (not x10973) (not x15105) x4635 (not x21073) (not x31837) (not x4451))
+:assumption (or x15799 x23244 (not x17639) x13956 (not x19501) x8002)
+:assumption (or (not x10908) (not x5886))
+:assumption (or (not x9883) x22257)
+:assumption (or x1393 (not x29071))
+:assumption (or x964 (not x6085))
+:assumption (or x12432 x2957)
+:assumption (or (not x31829) x13332 (not x28541))
+:assumption (or x29124 x24072)
+:assumption (or x19137 x14208)
+:assumption (or x13652 (not x889))
+:assumption (or x30460 x9157)
+:assumption (or x9035 (not x121) x19992 x987 x26413 (not x10501))
+:assumption (or x30098 (not x7376))
+:assumption (or x31298 x27764)
+:assumption (or (not x17608) (not x10103) (not x18702) (not x13389) (not x6217))
+:assumption (or x12033 x31888)
+:assumption (or (not x22089) (not x1930))
+:assumption (or x5544 x21835 x3150)
+:assumption (or (not x3527) x701)
+:assumption (or x29464 x26163 (not x27852))
+:assumption (or (not x12795) x27965 x4259 (not x31729) (not x30166) (not x28402) (not x8583) x9721)
+:assumption (or x22602 x28348)
+:assumption (or x2985 (not x3212))
+:assumption (or (not x14525) x4983)
+:assumption (or (not x30212) x9002)
+:assumption (or (not x1801) (not x23999))
+:assumption (or x31407 (not x12082) (not x12512) x27506)
+:assumption (or (not x7876) x7372)
+:assumption (or x15965 x1057)
+:assumption (or (not x31089) (not x25715))
+:assumption (or x29312 x30420)
+:assumption (or (not x27941) x29290)
+:assumption (or (not x23375) x8724)
+:assumption (or (not x22513) (not x4450))
+:assumption (or (not x3001) x16622)
+:assumption (or (not x28978) x27961)
+:assumption (or x5269 (not x28716))
+:assumption (or x28973 x7730 (not x1582) x9186)
+:assumption (or (not x29287) x31813)
+:assumption (or (not x23318) (not x23244))
+:assumption (or x2791 x10997)
+:assumption (or x26011 x5328 x11960 x12797 (not x14207) x29799)
+:assumption (or x22676 (not x21186))
+:assumption (or (not x25307) (not x8870))
+:assumption (or x28397 (not x20791))
+:assumption (or x17936 (not x22634))
+:assumption (or x22190 (not x4813))
+:assumption (or x21815 x31562 x30016)
+:assumption (or (not x18894) x27078)
+:assumption (or (not x26434) (not x24176))
+:assumption (or x11411 x10313)
+:assumption (or (not x27941) x17822 (not x19992))
+:assumption (or x22975 (not x28973))
+:assumption (or (not x3111) x20773)
+:assumption (or x24999 x31782)
+:assumption (or (not x10718) x8418)
+:assumption (or (not x10793) x16426)
+:assumption (or x26435 x25450 x8310 x14091 x30744 x18263 (not x25709) (not x15688) (not x18697) (not x6988))
+:assumption (or x27753 x2836)
+:assumption (or x9748 (not x2481))
+:assumption (or (not x25364) x15296 x3316 x24474)
+:assumption (or x23414 x13561)
+:assumption (or (not x26233) x12679)
+:assumption (or (not x17068) x30572)
+:assumption (or x20756 x24561)
+:assumption (or (not x27227) x15465)
+:assumption (or x9396 (not x20949))
+:assumption (or x9767 (not x5839))
+:assumption (or x6446 x13142)
+:assumption (or (not x30065) x6594)
+:assumption (or x8658 (not x13849) x14117)
+:assumption (or (not x6396) (not x4628) x29280 x12752)
+:assumption (or x19279 (not x10750))
+:assumption (or (not x12779) (not x26001))
+:assumption (or (not x8027) (not x18404))
+:assumption (or x27858 x22766)
+:assumption (or x19590 x4125)
+:assumption (or x30185 (not x20884) (not x14424))
+:assumption (or x5722 (not x31311))
+:assumption (or (not x28682) (not x9679))
+:assumption (or (not x17768) (not x8358) x17180 (not x18026) x4896)
+:assumption (or x3752 x17173)
+:assumption (or x4078 (not x4378) (not x19262) (not x18864))
+:assumption (or (not x15419) x9978)
+:assumption (or (not x7488) x26637)
+:assumption (or (not x7783) x9978)
+:assumption (or (not x29351) (not x2133))
+:assumption (or (not x8678) x31402)
+:assumption (or x8334 (not x6835))
+:assumption (or (not x29117) x3480)
+:assumption (or (not x15907) x22943)
+:assumption (or (not x13580) x24057)
+:assumption (or x4971 x17930)
+:assumption (or (not x119) x23448)
+:assumption (or x4628 (not x12752))
+:assumption (or x16618 (not x25804) (not x24450) (not x26274) x8961)
+:assumption (or x26556 (not x26571))
+:assumption (or (not x1681) (not x17838))
+:assumption (or x11186 (not x24761))
+:assumption (or x21815 (not x16957))
+:assumption (or x31386 x26432)
+:assumption (or (not x9193) (not x24551))
+:assumption (or x17393 (not x5528))
+:assumption (or x20087 (not x16510) (not x22583) x12242 (not x30187) (not x291) (not x21815))
+:assumption (or x24937 x26382)
+:assumption (or x19659 (not x31712))
+:assumption (or x6077 x12642)
+:assumption (or x3975 (not x8581))
+:assumption (or (not x18397) (not x27796))
+:assumption (or (not x9740) x7056)
+:assumption (or (not x5225) x29216)
+:assumption (or (not x14795) (not x26727))
+:assumption (or (not x24522) (not x22901))
+:assumption (or (not x2158) (not x7465))
+:assumption (or (not x4841) (not x29619))
+:assumption (or x22531 (not x27163) (not x2272))
+:assumption (or x19723 x8835)
+:assumption (or x6184 (not x388))
+:assumption (or (not x12045) (not x15895))
+:assumption (or x7962 x13442 x31357 x1196 x4073 x9363)
+:assumption (or x5706 x16741 x16510)
+:assumption (or x19326 x17432 x22074 x21026 x13301)
+:assumption (or x24023 (not x279))
+:assumption (or (not x13036) x16386 x17302 (not x20009))
+:assumption (or (not x23073) (not x2094))
+:assumption (or (not x27431) x9423 x8866 (not x8155))
+:assumption (or x16176 x9531 x30185)
+:assumption (or x12382 (not x15351))
+:assumption (or (not x21882) (not x11351))
+:assumption (or (not x11484) x28417 (not x13578))
+:assumption (or (not x5457) (not x25659))
+:assumption (or x15562 x14893 x6307)
+:assumption (or x11484 x1287)
+:assumption (or (not x20076) x4030)
+:assumption (or x17227 (not x16551))
+:assumption (or x19136 (not x22054) x6969 x15135)
+:assumption (or x7145 (not x11608))
+:assumption (or x9174 (not x5827))
+:assumption (or x5307 (not x8602))
+:assumption (or x21311 (not x26924))
+:assumption (or x25277 x13956 (not x24189) (not x3037))
+:assumption (or (not x30114) (not x31734))
+:assumption (or x28251 x18694 x29606)
+:assumption (or (not x25010) (not x9236))
+:assumption (or (not x25659) x13052 (not x22231))
+:assumption (or (not x18673) (not x30098) (not x11492) x1621 (not x28618) x7376 (not x5885))
+:assumption (or x27472 (not x4155))
+:assumption (or (not x2533) x19144)
+:assumption (or (not x4950) x28711)
+:assumption (or x31718 x13270)
+:assumption (or x25355 (not x8635) (not x30856) x21450)
+:assumption (or (not x13240) x24997)
+:assumption (or (not x23138) (not x18336))
+:assumption (or (not x21451) x5103)
+:assumption (or x21157 x19821)
+:assumption (or x22729 (not x20767))
+:assumption (or (not x7104) (not x2584))
+:assumption (or x23985 x22769 (not x14839))
+:assumption (or (not x27215) x5497)
+:assumption (or x28402 x18272)
+:assumption (or x21973 (not x13360))
+:assumption (or (not x24761) x11811 (not x8687))
+:assumption (or (not x7198) (not x12649))
+:assumption (or (not x14734) x12910)
+:assumption (or (not x668) (not x13471))
+:assumption (or x28142 (not x23242))
+:assumption (or (not x2920) (not x13421))
+:assumption (or (not x11043) (not x4150))
+:assumption (or x25745 (not x30076))
+:assumption (or (not x17171) x23106)
+:assumption (or (not x1582) (not x10990) x14285)
+:assumption (or x3362 x6402)
+:assumption (or x28461 x805)
+:assumption (or x30948 x23401)
+:assumption (or (not x1444) x7912)
+:assumption (or (not x8002) (not x24215) x6858)
+:assumption (or (not x11774) (not x21921))
+:assumption (or (not x5865) (not x13838))
+:assumption (or (not x8666) (not x11021) x3043 x28026 x5438)
+:assumption (or x19182 (not x14839))
+:assumption (or (not x14343) x6478)
+:assumption (or x16320 (not x591))
+:assumption (or x3001 x7969)
+:assumption (or (not x5296) x7200 x14315)
+:assumption (or x30171 x8421)
+:assumption (or x22393 (not x7102))
+:assumption (or x1000 (not x17366))
+:assumption (or x1065 (not x22674))
+:assumption (or (not x15231) (not x26998) x24728)
+:assumption (or x10570 (not x7146))
+:assumption (or x9423 (not x13777))
+:assumption (or (not x17985) (not x28765))
+:assumption (or x18865 (not x13255))
+:assumption (or (not x6928) (not x11644))
+:assumption (or (not x11281) (not x14486))
+:assumption (or (not x29284) (not x10096))
+:assumption (or x17763 x12565)
+:assumption (or x16510 x11583)
+:assumption (or (not x22456) x30369)
+:assumption (or (not x17315) x8914)
+:assumption (or x14420 (not x18441))
+:assumption (or (not x28328) (not x6183))
+:assumption (or (not x28151) x13822)
+:assumption (or (not x15885) (not x13634))
+:assumption (or x16016 x31076)
+:assumption (or (not x28463) x13075)
+:assumption (or x10984 x5096)
+:assumption (or (not x273) (not x16090))
+:assumption (or (not x26453) x16431)
+:assumption (or x21924 (not x7735))
+:assumption (or x2831 x9810)
+:assumption (or x27719 (not x24639) x1562 x191 (not x7203))
+:assumption (or x15680 x17364)
+:assumption (or (not x12999) x166)
+:assumption (or (not x15733) (not x13655))
+:assumption (or x28662 (not x1230))
+:assumption (or (not x28698) (not x30130))
+:assumption (or x10203 (not x17674))
+:assumption (or x4865 x24810)
+:assumption (or x12697 (not x142))
+:assumption (or x142 x28429)
+:assumption (or (not x20432) x31269)
+:assumption (or (not x21405) (not x15632))
+:assumption (or x23685 (not x22269))
+:assumption (or x17238 x15520)
+:assumption (or (not x28912) x22718)
+:assumption (or (not x16375) (not x9109) (not x21582) x17565)
+:assumption (or x17302 x5586 (not x31922) x27012)
+:assumption (or x4158 (not x14832) (not x7349) (not x11977))
+:assumption (or x13576 x16813 (not x20582))
+:assumption (or x25330 (not x13132))
+:assumption (or x12038 x162)
+:assumption (or x30912 x22701)
+:assumption (or x12492 (not x22592))
+:assumption (or x8962 x24722)
+:assumption (or (not x9042) (not x13956) x2762)
+:assumption (or x26237 x4599)
+:assumption (or x17908 (not x27755))
+:assumption (or (not x23981) x17537)
+:assumption (or x20651 (not x19115) (not x22883) (not x13036))
+:assumption (or (not x10060) x7787)
+:assumption (or (not x230) (not x4722))
+:assumption (or x18141 x22749)
+:assumption (or (not x13212) (not x13956))
+:assumption (or (not x23594) (not x998))
+:assumption (or (not x22485) (not x8052))
+:assumption (or x1912 (not x9110))
+:assumption (or (not x578) (not x31628) (not x22855))
+:assumption (or (not x16913) (not x30339) (not x18563) x22858 x6968 (not x3748) x7765)
+:assumption (or x25184 x19825)
+:assumption (or x1951 (not x12612))
+:assumption (or (not x11847) (not x19066))
+:assumption (or (not x5249) (not x24935))
+:assumption (or (not x20301) (not x15618))
+:assumption (or (not x6911) (not x232))
+:assumption (or (not x16648) (not x31611))
+:assumption (or (not x24632) (not x20186))
+:assumption (or (not x23526) x10909)
+:assumption (or x9563 x19397)
+:assumption (or (not x16304) (not x8153))
+:assumption (or (not x12453) x26165)
+:assumption (or x25395 (not x17290))
+:assumption (or x9008 (not x7599) x31367)
+:assumption (or x6828 x28328)
+:assumption (or x21559 (not x5525))
+:assumption (or (not x13762) (not x14029) (not x23092) x24137)
+:assumption (or x26245 x16875)
+:assumption (or x14617 (not x10655))
+:assumption (or (not x7992) x14522 (not x24632) x30293 (not x6750))
+:assumption (or (not x26119) x12372)
+:assumption (or x31852 x6969 x21640)
+:assumption (or (not x11604) (not x8631))
+:assumption (or x2574 x5926 x18206)
+:assumption (or (not x27249) (not x24198))
+:assumption (or x20137 (not x5886) (not x3671))
+:assumption (or x30231 (not x17437))
+:assumption (or x18043 (not x18069))
+:assumption (or x16259 x2425)
+:assumption (or x4039 (not x25242))
+:assumption (or x9938 x25319)
+:assumption (or (not x13802) (not x13674) (not x5528) (not x28497) (not x9008))
+:assumption (or x16271 (not x24853) (not x1920) x11918)
+:assumption (or (not x12544) x469)
+:assumption (or x18566 x19142 (not x13559))
+:assumption (or x6094 (not x5709))
+:assumption (or x25610 x31002)
+:assumption (or x26897 (not x14409))
+:assumption (or x7602 x13008)
+:assumption (or (not x16714) (not x27655))
+:assumption (or (not x9453) (not x28758) x23927)
+:assumption (or x13504 (not x25308))
+:assumption (or x24483 (not x10056))
+:assumption (or (not x14997) x21951)
+:assumption (or x8933 (not x19568))
+:assumption (or x19802 x25433)
+:assumption (or (not x21363) (not x2270) x15363 x17231 x28822 x18981 x27800)
+:assumption (or x21444 (not x9572))
+:assumption (or (not x7435) (not x18450))
+:assumption (or (not x30665) x11078)
+:assumption (or x29122 (not x6594))
+:assumption (or (not x5658) x8002)
+:assumption (or x29934 (not x13857) (not x17339) x2938 (not x4596) (not x23244))
+:assumption (or (not x5754) x1897)
+:assumption (or x11471 x26012)
+:assumption (or (not x27992) x7020)
+:assumption (or (not x26417) x10207)
+:assumption (or (not x21161) x13415 x1967 (not x23307) x17163 (not x317))
+:assumption (or (not x7196) x12446)
+:assumption (or (not x11272) x4208)
+:assumption (or x18077 (not x5452))
+:assumption (or x28670 x17885)
+:assumption (or x2842 (not x19832) x13892 x20604 x7937 x12830 x7179)
+:assumption (or x7132 (not x16549) (not x26600) x31778 x17282 (not x12823) x7262)
+:assumption (or (not x13649) x993 (not x5609))
+:assumption (or x4936 x30792)
+:assumption (or x31396 x26331)
+:assumption (or (not x5767) (not x7416))
+:assumption (or x641 x16602)
+:assumption (or (not x6382) x13793)
+:assumption (or x16394 (not x27581))
+:assumption (or x12031 (not x30328))
+:assumption (or (not x7058) (not x25042))
+:assumption (or x30927 x7186)
+:assumption (or (not x29873) (not x22855) x16025)
+:assumption (or x4442 (not x14116))
+:assumption (or (not x25480) (not x2334))
+:assumption (or x875 (not x29013))
+:assumption (or (not x25948) (not x6416))
+:assumption (or (not x9531) x1978)
+:assumption (or x26464 x21653 (not x23328))
+:assumption (or (not x2353) (not x5554))
+:assumption (or (not x15831) (not x10547))
+:assumption (or (not x18608) x25798)
+:assumption (or (not x16583) (not x11281) x17359 (not x27403))
+:assumption (or x16170 (not x24731))
+:assumption (or (not x28281) x16506)
+:assumption (or x18026 (not x28364))
+:assumption (or x10486 x12837)
+:assumption (or x8229 (not x5683))
+:assumption (or (not x21159) (not x19654))
+:assumption (or x16508 (not x6381))
+:assumption (or (not x22406) (not x12475))
+:assumption (or (not x17872) (not x3669))
+:assumption (or (not x19513) x5176)
+:assumption (or (not x2264) (not x727))
+:assumption (or (not x1781) (not x21653))
+:assumption (or (not x13189) (not x23334))
+:assumption (or x9033 x22829)
+:assumption (or x29057 (not x6846))
+:assumption (or (not x23452) x7625)
+:assumption (or x1615 x16745)
+:assumption (or x12891 (not x28859))
+:assumption (or (not x18123) x20584)
+:assumption (or (not x20302) x10843)
+:assumption (or x28033 (not x11535))
+:assumption (or x30446 (not x26668))
+:assumption (or x13278 x28708 x8370)
+:assumption (or (not x4399) x9704)
+:assumption (or x18253 (not x28966) x15491)
+:assumption (or (not x23020) (not x4504))
+:assumption (or x11393 (not x24641))
+:assumption (or (not x29761) (not x6951) (not x10363) x13576 x31890 x11483 (not x3733))
+:assumption (or (not x29649) x4219 x1487)
+:assumption (or (not x17539) (not x31093))
+:assumption (or (not x22889) (not x8178))
+:assumption (or x25262 (not x8002) (not x2762) (not x25277))
+:assumption (or x22808 x10262)
+:assumption (or x8002 x29772 (not x14172) x25027 x23244)
+:assumption (or x24827 x24071)
+:assumption (or (not x28725) (not x25366))
+:assumption (or x19934 (not x26221))
+:assumption (or (not x15487) x25543)
+:assumption (or x29166 (not x13993) (not x13018) (not x28217))
+:assumption (or (not x24690) x1321 x21601 x9008 (not x22361) (not x28895))
+:assumption (or x29321 x11911)
+:assumption (or x10062 (not x25659))
+:assumption (or x18107 (not x5801))
+:assumption (or x27306 (not x12061))
+:assumption (or x21959 (not x22056))
+:assumption (or (not x20497) (not x23468))
+:assumption (or x20530 x6145)
+:assumption (or x16891 (not x17460))
+:assumption (or (not x23661) (not x20242))
+:assumption (or (not x5367) (not x1445))
+:assumption (or x14349 (not x11179))
+:assumption (or x12789 (not x16295))
+:assumption (or x13357 x20714)
+:assumption (or (not x8473) x19122)
+:assumption (or (not x10640) (not x16082))
+:assumption (or (not x22855) (not x16722) (not x480))
+:assumption (or x21119 x29628)
+:assumption (or x3134 x6452)
+:assumption (or x17769 x24171)
+:assumption (or (not x26404) (not x20463))
+:assumption (or (not x17461) (not x27760) (not x5528))
+:assumption (or (not x8532) x17619 (not x12832) (not x117) x8578 x22411 x27824 x28558 x3606)
+:assumption (or x26041 (not x24691))
+:assumption (or x27243 x28948)
+:assumption (or (not x3782) x21536)
+:assumption (or (not x28187) (not x20811) (not x4383) (not x27058))
+:assumption (or x11292 (not x19310))
+:assumption (or x918 x23951 x3913 x20576)
+:assumption (or x29296 x13393 (not x10915) x19197)
+:assumption (or x7683 x26354 x26713)
+:assumption (or (not x28939) x15917 x11371 (not x10064))
+:assumption (or x14382 (not x14204))
+:assumption (or x7251 (not x25407))
+:assumption (or x2731 (not x4421) (not x28372) x16329)
+:assumption (or (not x5806) x18317 (not x29258) x1560 x12250 (not x18712) (not x9103))
+:assumption (or (not x13207) (not x8481))
+:assumption (or x5879 x9139 (not x22553) (not x25794))
+:assumption (or x19646 x2568)
+:assumption (or x11488 (not x17115))
+:assumption (or x9538 x5830)
+:assumption (or x13379 (not x15009) x15558 (not x21563) (not x13040))
+:assumption (or (not x21697) (not x27169))
+:assumption (or (not x3394) (not x8734))
+:assumption (or x12404 (not x3179))
+:assumption (or x18091 x9605 x23510)
+:assumption (or (not x22595) (not x14061))
+:assumption (or (not x3001) x14459)
+:assumption (or x21837 (not x16345))
+:assumption (or x21786 x25659)
+:assumption (or (not x18668) x19271)
+:assumption (or (not x11603) (not x24988))
+:assumption (or x4504 x30295 x1914)
+:assumption (or x3338 (not x23244))
+:assumption (or (not x23222) (not x169))
+:assumption (or (not x21298) x8366 x6959 (not x1097))
+:assumption (or (not x6594) (not x782))
+:assumption (or x623 (not x30039))
+:assumption (or (not x18233) (not x8553) (not x21612))
+:assumption (or (not x15041) (not x28239))
+:assumption (or (not x2840) x24982)
+:assumption (or x18081 x2140)
+:assumption (or x19237 (not x31129))
+:assumption (or (not x16510) (not x4976))
+:assumption (or x19874 (not x11074))
+:assumption (or (not x13597) (not x16922))
+:assumption (or x31159 x23766)
+:assumption (or (not x7071) (not x25756))
+:assumption (or x21298 x9341 x31581 x14873)
+:assumption (or x4422 x1389)
+:assumption (or (not x5130) (not x813))
+:assumption (or x25037 x18482)
+:assumption (or (not x16409) x25324 (not x30124))
+:assumption (or (not x10738) x29573 (not x19145) (not x24364) x13196 x5157 x3336 (not x22814))
+:assumption (or (not x1758) x26810)
+:assumption (or x12458 x29442 (not x3990) x3782)
+:assumption (or x10213 (not x19428))
+:assumption (or (not x10884) x117)
+:assumption (or (not x9397) x12195)
+:assumption (or (not x18359) (not x3266))
+:assumption (or (not x20923) x29671)
+:assumption (or (not x19122) (not x7640) x8337 x15647 x3716 (not x17302) (not x17401))
+:assumption (or x3690 (not x23021))
+:assumption (or (not x24454) (not x16889) (not x14294))
+:assumption (or (not x6373) x16096)
+:assumption (or x8819 x2248)
+:assumption (or (not x6176) x26588)
+:assumption (or (not x10677) x5528 x5249)
+:assumption (or x21910 (not x14255) (not x22360))
+:assumption (or x9537 x6128)
+:assumption (or (not x23974) (not x15312))
+:assumption (or x17630 (not x6537))
+:assumption (or x17284 x7860)
+:assumption (or x23852 x24974)
+:assumption (or (not x23244) (not x20450))
+:assumption (or x25426 x11281)
+:assumption (or (not x18369) x8945 (not x21692) (not x12874))
+:assumption (or x8344 (not x13688))
+:assumption (or (not x16568) (not x12906))
+:assumption (or x14711 (not x8213))
+:assumption (or x14777 x14747)
+:assumption (or x31914 x4560)
+:assumption (or x6227 x26084 x21304)
+:assumption (or (not x8510) (not x18704))
+:assumption (or (not x16338) x13229 x8002)
+:assumption (or (not x5604) x10421)
+:assumption (or x7971 x22266)
+:assumption (or x30028 x8919)
+:assumption (or x16924 (not x29843))
+:assumption (or (not x25336) (not x31100))
+:assumption (or x11839 (not x1872))
+:assumption (or x26726 x24952 (not x5788))
+:assumption (or (not x25795) (not x17440) x17616 (not x13904))
+:assumption (or (not x1559) x22013 (not x26659))
+:assumption (or (not x19513) (not x20374))
+:assumption (or x24006 x26409)
+:assumption (or (not x31825) (not x31767))
+:assumption (or (not x29581) x10261)
+:assumption (or (not x9453) x11394 (not x15131))
+:assumption (or (not x28981) x30477)
+:assumption (or x19501 x16025 x12808)
+:assumption (or (not x26180) x3028)
+:assumption (or x29472 x15772)
+:assumption (or (not x20949) x28467 x23244)
+:assumption (or x21648 x10507)
+:assumption (or x29076 x29253)
+:assumption (or x6274 (not x23950))
+:assumption (or x22846 (not x612))
+:assumption (or x29333 x29510)
+:assumption (or x31155 (not x2155) (not x1711) (not x29060))
+:assumption (or (not x20682) x20597)
+:assumption (or x7820 x13667)
+:assumption (or x10942 (not x16570) (not x28165) x26566 x15700)
+:assumption (or (not x938) (not x11588))
+:assumption (or x12554 x30667 x21298 x2465)
+:assumption (or (not x31306) x6397)
+:assumption (or (not x12054) (not x11689))
+:assumption (or (not x26356) x16352 x9712 (not x20027) (not x28242))
+:assumption (or x16927 x30682)
+:assumption (or x31275 (not x4579))
+:assumption (or (not x5455) (not x14191))
+:assumption (or (not x680) x674)
+:assumption (or x24049 x4255)
+:assumption (or (not x2186) x2133 (not x16741) x12417)
+:assumption (or x23401 x30184)
+:assumption (or x21653 (not x11828))
+:assumption (or (not x27349) x15316 x4907 x5755)
+:assumption (or x11022 x13228)
+:assumption (or (not x29588) x22997)
+:assumption (or x2709 (not x27671))
+:assumption (or x25522 (not x5528) x30266 x13441 x8908 x6300)
+:assumption (or (not x8373) x12269)
+:assumption (or x6952 (not x4711) (not x2313) x15182 x6021 (not x8013) x8973 x25163)
+:assumption (or x7609 x30843)
+:assumption (or x1162 (not x9884) x25640 (not x9508) x9619)
+:assumption (or (not x11074) (not x25461))
+:assumption (or x23244 x27180)
+:assumption (or (not x3906) x25147)
+:assumption (or (not x17359) x9639)
+:assumption (or (not x12406) x30410)
+:assumption (or (not x31368) (not x25243))
+:assumption (or (not x20398) x29782)
+:assumption (or x31194 x8455)
+:assumption (or x17221 x17989 x18859 x20214 (not x6011) (not x7205) (not x8341) x18748)
+:assumption (or (not x29523) x14126)
+:assumption (or x12292 x4101)
+:assumption (or (not x16968) (not x26403))
+:assumption (or x16809 (not x13599))
+:assumption (or (not x1393) x11149)
+:assumption (or (not x24701) x20021)
+:assumption (or x21638 x30013)
+:assumption (or (not x9102) (not x29756))
+:assumption (or x4778 (not x14790))
+:assumption (or x19165 x24115)
+:assumption (or x17854 (not x27227))
+:assumption (or x23899 x18906)
+:assumption (or (not x2575) (not x25315))
+:assumption (or (not x19908) x23510)
+:assumption (or (not x1393) (not x5877) x27710)
+:assumption (or x29111 x1039)
+:assumption (or (not x25520) (not x20993))
+:assumption (or x13498 x23244)
+:assumption (or (not x1393) (not x2644))
+:assumption (or x20417 x24529)
+:assumption (or x30506 (not x12436))
+:assumption (or (not x12045) (not x27127) (not x10909) x2115 (not x16510) (not x21815) x20072)
+:assumption (or x15591 (not x3455))
+:assumption (or (not x30113) x25790 (not x24547) x1207)
+:assumption (or x24260 x3961)
+:assumption (or (not x19428) x21132)
+:assumption (or (not x25226) x3342)
+:assumption (or (not x27631) (not x20949))
+:assumption (or x23568 (not x24129))
+:assumption (or x31148 x28541 (not x8534))
+:assumption (or (not x2629) x1747)
+:assumption (or x18952 (not x8667))
+:assumption (or x9414 (not x20201) x24077)
+:assumption (or x2376 x20929)
+:assumption (or x14307 x2323)
+:assumption (or x20336 x26706 x13920)
+:assumption (or (not x9008) (not x30655))
+:assumption (or (not x15745) (not x25245))
+:assumption (or x10880 (not x9524))
+:assumption (or x8780 x17705 x22047 x25535 (not x1417))
+:assumption (or (not x7270) x9815)
+:assumption (or (not x9644) (not x31767))
+:assumption (or x762 x27157)
+:assumption (or (not x1359) x22015)
+:assumption (or x15240 (not x13569))
+:assumption (or x18516 x21336 (not x1012) x18548 (not x30132) (not x14921) (not x25151))
+:assumption (or x27573 x7069)
+:assumption (or (not x19465) x27695)
+:assumption (or x23210 (not x18518))
+:assumption (or x20598 x14741)
+:assumption (or (not x25366) x10348)
+:assumption (or (not x4217) x25880 (not x30354))
+:assumption (or (not x13077) (not x8678))
+:assumption (or x26434 x24176)
+:assumption (or (not x24818) (not x23799))
+:assumption (or (not x7628) (not x13308))
+:assumption (or (not x11616) (not x19686) x16612 x18170 x18619 x17400 x22287)
+:assumption (or x7200 x17819)
+:assumption (or x855 (not x16307))
+:assumption (or (not x20824) (not x19339))
+:assumption (or x22098 (not x6941))
+:assumption (or x28277 x2849)
+:assumption (or x25424 (not x1780))
+:assumption (or (not x23885) x10826)
+:assumption (or x30954 x26514)
+:assumption (or (not x15536) (not x1930))
+:assumption (or (not x30734) (not x16129))
+:assumption (or x10534 (not x10819) (not x20871) (not x26286) x26424 x6344 x24384 (not x27318))
+:assumption (or (not x19957) x12222)
+:assumption (or (not x4909) x13149)
+:assumption (or x4045 x6652)
+:assumption (or x744 x27053)
+:assumption (or (not x22094) x11012)
+:assumption (or x13230 x29227)
+:assumption (or (not x27334) (not x21406))
+:assumption (or x20616 (not x24079))
+:assumption (or (not x8755) x25315 (not x24504))
+:assumption (or (not x6046) (not x9649) (not x19927) x16857 (not x7462) (not x7492) (not x19602))
+:assumption (or (not x31762) (not x13349))
+:assumption (or x14863 (not x4500))
+:assumption (or x3822 (not x9896))
+:assumption (or x11476 (not x16431) (not x20234) x26453)
+:assumption (or x26486 (not x1621))
+:assumption (or (not x31712) (not x15333))
+:assumption (or (not x5707) x27268 x17908 (not x182) x14829 (not x22793))
+:assumption (or x14578 x11724)
+:assumption (or x19367 (not x22447))
+:assumption (or (not x10559) (not x9656))
+:assumption (or x17554 x7174)
+:assumption (or (not x17939) (not x5323) x4360 x17019 x13622 (not x2288) (not x19474))
+:assumption (or x30596 x28996)
+:assumption (or x25584 (not x1761))
+:assumption (or (not x12405) (not x16213))
+:assumption (or (not x12740) (not x13674) x5528)
+:assumption (or x20033 x18173)
+:assumption (or (not x25659) x30385)
+:assumption (or x22635 x3409)
+:assumption (or x28212 x11044 (not x4386) x18862)
+:assumption (or x24182 x30208)
+:assumption (or x247 x17506)
+:assumption (or x9872 (not x16254))
+:assumption (or (not x27602) x992)
+:assumption (or (not x12794) x7012 (not x2449))
+:assumption (or x22596 (not x9673))
+:assumption (or (not x19289) x19671 x7349)
+:assumption (or x16093 x27491)
+:assumption (or x10024 x11806)
+:assumption (or x24639 (not x25800))
+:assumption (or x1597 x777)
+:assumption (or (not x11330) x20829)
+:assumption (or (not x8867) (not x6490))
+:assumption (or (not x12666) (not x31127) x12998 x11521)
+:assumption (or x15644 (not x6208))
+:assumption (or x16328 (not x13986) x24685 (not x3946))
+:assumption (or (not x11367) (not x2845))
+:assumption (or (not x20402) x29163)
+:assumption (or (not x20971) x26977)
+:assumption (or (not x14229) x30682)
+:assumption (or (not x12941) (not x27939))
+:assumption (or x9423 (not x6073))
+:assumption (or x14496 x13854)
+:assumption (or x15305 x26352 x16745)
+:assumption (or (not x17987) (not x2133))
+:assumption (or (not x1582) x13394)
+:assumption (or x17628 (not x3313))
+:assumption (or (not x16383) (not x21695))
+:assumption (or x15993 (not x15333) (not x12123) (not x25490))
+:assumption (or (not x21298) x17046)
+:assumption (or x3173 (not x1184))
+:assumption (or (not x10825) (not x20390))
+:assumption (or x4300 (not x29829) (not x21527) (not x23136) (not x21910) (not x15879))
+:assumption (or (not x10340) x25913)
+:assumption (or (not x6580) x18003)
+:assumption (or x9008 (not x9731) (not x9432) x1659 x1819 x12099)
+:assumption (or x18606 (not x29747) x4318)
+:assumption (or (not x24049) x12122)
+:assumption (or x24853 x2426 (not x16427) (not x1942))
+:assumption (or (not x16664) x8183)
+:assumption (or x4608 x10987)
+:assumption (or (not x24129) x21464)
+:assumption (or x25861 (not x14821))
+:assumption (or (not x12245) (not x2969))
+:assumption (or (not x7015) (not x25960))
+:assumption (or x11379 x5287 x7542 x21429 (not x12091) x23984)
+:assumption (or x13036 x8274)
+:assumption (or x2301 x8002)
+:assumption (or x11454 x3884)
+:assumption (or (not x527) x4938)
+:assumption (or x31673 (not x20868))
+:assumption (or (not x11372) (not x24226))
+:assumption (or (not x18953) x22383 x27904 (not x4193))
+:assumption (or (not x7085) (not x28103))
+:assumption (or (not x16444) x17250)
+:assumption (or x21207 x17225)
+:assumption (or x14286 (not x8382))
+:assumption (or (not x10091) (not x19545))
+:assumption (or (not x14018) (not x23633))
+:assumption (or (not x29193) x19822 (not x28314) (not x28357))
+:assumption (or (not x23638) (not x327))
+:assumption (or (not x17289) (not x4025))
+:assumption (or (not x23096) x25865)
+:assumption (or x3200 (not x1957) (not x21298))
+:assumption (or (not x2122) x8211)
+:assumption (or x12895 x4202)
+:assumption (or (not x9643) x21430)
+:assumption (or x13539 (not x25543))
+:assumption (or x183 (not x252) (not x20621) (not x23991) (not x17709) x19485)
+:assumption (or x4116 x7172)
+:assumption (or x17975 x843)
+:assumption (or x29312 x29879 x9189)
+:assumption (or (not x11052) x13372)
+:assumption (or x6065 (not x27938))
+:assumption (or (not x14939) (not x10964) (not x30288) x30597)
+:assumption (or (not x888) (not x10828))
+:assumption (or (not x1644) x28052)
+:assumption (or (not x21516) (not x12140))
+:assumption (or (not x31025) (not x9835))
+:assumption (or (not x22538) x18182 x389 x11385 (not x2247) (not x4000))
+:assumption (or (not x10795) x20954)
+:assumption (or x13057 x11705)
+:assumption (or (not x20685) x14642 x17483 x22921)
+:assumption (or x6477 (not x4527) (not x29556) x24792)
+:assumption (or (not x24351) x9617)
+:assumption (or (not x20693) x29118 (not x9132))
+:assumption (or (not x5458) (not x23244))
+:assumption (or (not x2154) x6291)
+:assumption (or x19995 (not x15934))
+:assumption (or (not x29062) (not x23680))
+:assumption (or (not x9502) (not x31852))
+:assumption (or x827 x31044)
+:assumption (or x12298 x27029)
+:assumption (or (not x1078) x26945)
+:assumption (or x23442 x18069 x22331 x6723 (not x25593))
+:assumption (or x15381 x30726)
+:assumption (or (not x827) (not x8528) (not x4437))
+:assumption (or (not x23857) (not x14031))
+:assumption (or x23214 (not x17707))
+:assumption (or (not x441) (not x6959))
+:assumption (or x18974 x5199)
+:assumption (or (not x25628) x13495 x20174 x9603)
+:assumption (or (not x3736) x9463 x2133 x16741)
+:assumption (or (not x17867) x21694 x30435 (not x2029) x21460)
+:assumption (or x20949 (not x6786))
+:assumption (or x6452 (not x28743))
+:assumption (or x6312 (not x7511))
+:assumption (or x762 x15244 x16577 (not x5394))
+:assumption (or (not x4441) x20221)
+:assumption (or x7142 x29245)
+:assumption (or (not x27498) x6633)
+:assumption (or x27364 x4559 x30366)
+:assumption (or x9662 (not x333))
+:assumption (or x5827 (not x9174))
+:assumption (or x23836 x13875)
+:assumption (or x15643 x31432 (not x19428) x30954)
+:assumption (or x28912 (not x6693))
+:assumption (or x1837 (not x19474) x17019 (not x16334) (not x15109) (not x17939) (not x5323))
+:assumption (or x12109 x4377)
+:assumption (or (not x25684) x31742)
+:assumption (or x19173 x6285)
+:assumption (or (not x29957) x2656 (not x19774) (not x29300))
+:assumption (or x18445 x16510 x28732)
+:assumption (or x4112 (not x22072))
+:assumption (or x13570 (not x6594))
+:assumption (or (not x21280) x30208 x12464 (not x19))
+:assumption (or (not x22616) x23244 x11493)
+:assumption (or (not x24737) (not x8002))
+:assumption (or x20586 (not x8002))
+:assumption (or (not x14391) (not x22377))
+:assumption (or (not x26522) (not x94))
+:assumption (or x5845 (not x29284) x6576)
+:assumption (or x5195 (not x14950))
+:assumption (or x8351 x26436)
+:assumption (or x3138 (not x14839))
+:assumption (or x31748 x19992 x26120 (not x28138))
+:assumption (or (not x12268) (not x3051))
+:assumption (or x262 (not x19428))
+:assumption (or (not x13956) (not x27169) x30667 (not x31154))
+:assumption (or x288 x29490)
+:assumption (or x15234 (not x22952))
+:assumption (or (not x23597) x23377 x16791 (not x5760) (not x28600) (not x4541) (not x9026) (not x19052) x18408 x22421 x19128 (not x14329))
+:assumption (or x12423 x6486)
+:assumption (or (not x12458) (not x21676) (not x18919) (not x9009) x1840)
+:assumption (or (not x1246) x15224 x28469)
+:assumption (or x10434 x24904)
+:assumption (or (not x30082) x15971 x14432 x2533)
+:assumption (or x13611 x10909)
+:assumption (or (not x14576) x16830)
+:assumption (or (not x8788) (not x3649))
+:assumption (or x26996 (not x15379))
+:assumption (or (not x1828) x20060)
+:assumption (or x357 x23469)
+:assumption (or (not x20396) (not x9345) (not x9882) x14868 (not x21311) x10431 x26924)
+:assumption (or (not x18671) (not x17368))
+:assumption (or x30086 (not x16745))
+:assumption (or (not x8602) x13470 x3240)
+:assumption (or x19784 x29364)
+:assumption (or (not x6180) x7962)
+:assumption (or x1184 x20480)
+:assumption (or x28707 (not x8672))
+:assumption (or x15790 x4259)
+:assumption (or x23452 (not x7625))
+:assumption (or x28590 x8491)
+:assumption (or x9008 x20987)
+:assumption (or (not x23013) x804)
+:assumption (or x15724 x30751)
+:assumption (or x7366 x29408)
+:assumption (or (not x24628) (not x31913))
+:assumption (or (not x14726) x3723 (not x15622) x15564)
+:assumption (or x14062 (not x4901))
+:assumption (or (not x6518) x29727)
+:assumption (or (not x18594) x6528 (not x19119) (not x1678))
+:assumption (or x21225 (not x11987))
+:assumption (or x23809 x26432 (not x16062))
+:assumption (or (not x25930) x15405 (not x6307))
+:assumption (or (not x26716) x1304)
+:assumption (or x14212 x6524)
+:assumption (or x18552 x15795)
+:assumption (or x11394 x26993)
+:assumption (or (not x25443) (not x23088))
+:assumption (or x20990 (not x23310))
+:assumption (or (not x6174) x21524)
+:assumption (or x23833 x169)
+:assumption (or x9975 x29326)
+:assumption (or (not x65) x27594)
+:assumption (or x9014 x8955)
+:assumption (or x28342 x20609)
+:assumption (or (not x4163) x26672)
+:assumption (or (not x7654) x15070)
+:assumption (or (not x10261) (not x25883))
+:assumption (or x25676 x15472)
+:assumption (or (not x15000) (not x15250) x31880 (not x15899) x17592 (not x29465) x11281 (not x7374))
+:assumption (or (not x3509) x5394)
+:assumption (or (not x19992) (not x30432) x9780)
+:assumption (or (not x9525) x18182)
+:assumption (or (not x12474) (not x10695))
+:assumption (or (not x28972) x1431 x10450 (not x4559))
+:assumption (or (not x24669) x1011)
+:assumption (or (not x3024) x13440)
+:assumption (or (not x9008) (not x20648))
+:assumption (or x7050 (not x3045))
+:assumption (or (not x30044) (not x15668))
+:assumption (or x7766 (not x31557))
+:assumption (or x12586 (not x10727))
+:assumption (or x2818 x22860)
+:assumption (or x7796 x12934)
+:assumption (or x14022 x6679)
+:assumption (or (not x13013) (not x26182))
+:assumption (or (not x21128) x28299 x30488 x1081 (not x2278) x2308 x27646 x29075)
+:assumption (or x9008 x11229 (not x10719))
+:assumption (or x12902 x9453)
+:assumption (or (not x18364) x11693)
+:assumption (or (not x15954) (not x14906))
+:assumption (or x18042 (not x15188))
+:assumption (or (not x21017) (not x20162))
+:assumption (or x18873 x16959)
+:assumption (or x3297 (not x16031) (not x14410) (not x5367))
+:assumption (or (not x9008) (not x19915))
+:assumption (or (not x19700) (not x29913))
+:assumption (or x17027 x1662)
+:assumption (or x3265 x1601 (not x27411) (not x9851))
+:assumption (or x27570 (not x31279) x14395 x15659)
+:assumption (or x2682 x18752 (not x27872))
+:assumption (or (not x31750) x28329)
+:assumption (or x6054 x10789)
+:assumption (or (not x27258) x27581)
+:assumption (or x7164 (not x27023))
+:assumption (or x9898 x3584 (not x27941) x31389)
+:assumption (or x21253 x25846)
+:assumption (or x26868 x17895)
+:assumption (or (not x20809) (not x23798))
+:assumption (or (not x10138) x27831)
+:assumption (or x7464 x169)
+:assumption (or (not x3212) (not x23211))
+:assumption (or x21337 x118)
+:assumption (or x16161 (not x28082))
+:assumption (or (not x14613) x11016)
+:assumption (or (not x12090) x3158)
+:assumption (or x16235 x25592)
+:assumption (or (not x26501) (not x17636))
+:assumption (or (not x21218) (not x11606) x27546 x30360 (not x323))
+:assumption (or x13640 x7971)
+:assumption (or (not x15288) x15130)
+:assumption (or (not x12463) (not x30930) x21432 (not x17245) (not x3818) (not x7983) x18076 (not x3817) x11150)
+:assumption (or x14882 (not x27860))
+:assumption (or x21466 (not x24896))
+:assumption (or (not x28885) x28872)
+:assumption (or x918 (not x9754))
+:assumption (or (not x13886) x17929)
+:assumption (or x17186 x15625)
+:assumption (or x8979 x29527)
+:assumption (or (not x10942) x10509)
+:assumption (or x15906 (not x7192))
+:assumption (or (not x1313) x30113)
+:assumption (or x21815 (not x29028) (not x27173))
+:assumption (or (not x2122) x21631 x5503)
+:assumption (or (not x31022) x28503)
+:assumption (or x13046 x8866 x19379 x9423)
+:assumption (or x31134 x17126 (not x26222))
+:assumption (or (not x23368) (not x2485))
+:assumption (or x149 (not x8002))
+:assumption (or x26802 x19534)
+:assumption (or (not x25275) x28120)
+:assumption (or x15426 x20334)
+:assumption (or x14161 x8778 x3730 x4775)
+:assumption (or x5885 (not x18638))
+:assumption (or x8687 (not x12239))
+:assumption (or (not x31081) x16035)
+:assumption (or (not x25757) x11702)
+:assumption (or (not x24135) x3435)
+:assumption (or x2313 (not x5698))
+:assumption (or (not x30219) (not x25088) (not x2498))
+:assumption (or (not x15892) x25573 x25659)
+:assumption (or (not x18648) (not x23244))
+:assumption (or (not x7554) x13697)
+:assumption (or x27406 (not x8002) x4456)
+:assumption (or x31725 (not x28163) x30482 (not x28736))
+:assumption (or x16918 (not x19428))
+:assumption (or (not x15098) (not x4958))
+:assumption (or (not x25852) (not x7308))
+:assumption (or x20451 x23598)
+:assumption (or (not x7170) x24749)
+:assumption (or x15883 x25411)
+:assumption (or (not x8304) x31247 (not x15484) x6969)
+:assumption (or x5665 (not x28474) (not x10108) x10470 (not x2139))
+:assumption (or x10823 x947)
+:assumption (or (not x18859) (not x5168) x6410)
+:assumption (or (not x6422) x7343)
+:assumption (or x17242 x30111 (not x24304) (not x31445) x18941 x5796)
+:assumption (or (not x827) x26635)
+:assumption (or x25027 (not x9033) (not x18210) (not x27533))
+:assumption (or x7403 x25503)
+:assumption (or (not x30259) x26171)
+:assumption (or x16247 (not x26724))
+:assumption (or x13457 (not x28177))
+:assumption (or x26037 (not x15157))
+:assumption (or x13002 x22523)
+:assumption (or (not x10622) x20538)
+:assumption (or x12083 x30751 x30046)
+:assumption (or x1841 x3420)
+:assumption (or (not x11864) x24626)
+:assumption (or x16899 x20606 x1920)
+:assumption (or x4589 x8987)
+:assumption (or x23133 (not x19864))
+:assumption (or (not x25155) (not x10712))
+:assumption (or x8288 (not x13850))
+:assumption (or (not x25485) (not x5353) x19947)
+:assumption (or x21148 x16745 x22298)
+:assumption (or (not x2851) x8467)
+:assumption (or (not x21456) x21190)
+:assumption (or x20139 x17235)
+:assumption (or x30219 x20716)
+:assumption (or x18455 x26423)
+:assumption (or (not x24539) x23633 (not x13956))
+:assumption (or x20634 x30217)
+:assumption (or (not x20586) x14811)
+:assumption (or x30328 x10517 (not x12031))
+:assumption (or x18859 x13396)
+:assumption (or x29439 (not x13783))
+:assumption (or x26193 x5554 (not x2823) x6307 (not x14678) (not x12269))
+:assumption (or x25809 x4419)
+:assumption (or (not x9972) (not x13195))
+:assumption (or x16701 x1660)
+:assumption (or (not x26575) (not x14007))
+:assumption (or x18207 x18886)
+:assumption (or x13895 (not x5919))
+:assumption (or (not x14122) x11097)
+:assumption (or (not x1920) (not x24853) x6998 (not x24373))
+:assumption (or x26930 x22952)
+:assumption (or x23771 (not x27108))
+:assumption (or (not x873) (not x1507))
+:assumption (or x22457 x7780)
+:assumption (or x26280 x21506)
+:assumption (or (not x25669) (not x31099))
+:assumption (or (not x17767) (not x13784))
+:assumption (or x13795 x4289 x18977)
+:assumption (or (not x5904) (not x28575))
+:assumption (or (not x9579) x16624)
+:assumption (or x24540 x11851)
+:assumption (or x2100 x18922)
+:assumption (or (not x8426) (not x9279))
+:assumption (or (not x17796) (not x531))
+:assumption (or (not x11271) x9919)
+:assumption (or (not x2748) x15976)
+:assumption (or (not x18163) (not x27711))
+:assumption (or x13244 (not x9041))
+:assumption (or (not x12880) x24722 x18042 (not x28953))
+:assumption (or (not x29924) (not x9684) x30981 x18515)
+:assumption (or (not x19752) (not x8895))
+:assumption (or (not x12849) (not x21815) (not x4967))
+:assumption (or x14841 (not x7585))
+:assumption (or x16910 (not x22817))
+:assumption (or x24891 (not x31265) (not x17177))
+:assumption (or (not x28063) (not x19883))
+:assumption (or (not x7931) x20587 (not x4081) (not x23789))
+:assumption (or (not x2860) x28747)
+:assumption (or x27214 x15222)
+:assumption (or x31444 x21069)
+:assumption (or (not x9402) (not x4559))
+:assumption (or (not x7939) (not x26426))
+:assumption (or x4873 (not x27244))
+:assumption (or x29651 x14126)
+:assumption (or x25785 (not x1663))
+:assumption (or (not x1587) x20045)
+:assumption (or (not x15479) (not x1660))
+:assumption (or x23362 x27911)
+:assumption (or x17444 (not x23321))
+:assumption (or x30224 (not x24174) (not x16133) (not x18391) x12418)
+:assumption (or (not x11402) x17950)
+:assumption (or (not x16010) x13324 x16985 (not x15557) x30429 x28912 x16311 (not x5639) x24954)
+:assumption (or (not x3103) (not x12579))
+:assumption (or x23024 x5528)
+:assumption (or (not x29495) (not x30277) (not x29958) (not x14758))
+:assumption (or (not x28802) x21611)
+:assumption (or x9491 x3500)
+:assumption (or (not x22546) (not x28645))
+:assumption (or (not x8807) (not x30926) (not x22827))
+:assumption (or x107 x16654)
+:assumption (or x830 (not x11678))
+:assumption (or x24171 x12366)
+:assumption (or (not x28541) x26521)
+:assumption (or (not x2917) (not x6324))
+:assumption (or x5925 x16003)
+:assumption (or x8855 x25806)
+:assumption (or x25233 (not x21815) x31562)
+:assumption (or x26325 x23436)
+:assumption (or x8853 (not x16767))
+:assumption (or (not x30566) x21778 (not x20272) (not x18310))
+:assumption (or (not x2449) x23398 x19501)
+:assumption (or (not x17776) (not x16437))
+:assumption (or (not x5883) x9008)
+:assumption (or (not x23732) x29143)
+:assumption (or x14017 x27073 x1393)
+:assumption (or x15179 x3782)
+:assumption (or x22746 (not x16510))
+:assumption (or x721 x28394)
+:assumption (or x21176 (not x7447))
+:assumption (or x25308 (not x20819) x7944 (not x27088) x6631 x27790)
+:assumption (or x16025 x25123)
+:assumption (or (not x10566) (not x21750))
+:assumption (or (not x26702) x22278)
+:assumption (or x1116 x22611)
+:assumption (or x962 (not x18289))
+:assumption (or x28740 x12242 (not x1068))
+:assumption (or (not x9715) (not x11771) (not x17057) x355 x3926 x12776 (not x28530))
+:assumption (or x6941 (not x29959) (not x22098) x14839)
+:assumption (or (not x19992) (not x22965))
+:assumption (or (not x19716) (not x16510))
+:assumption (or (not x31904) x22894)
+:assumption (or (not x20057) x9674)
+:assumption (or (not x16025) (not x1319))
+:assumption (or (not x22404) (not x23423))
+:assumption (or (not x20374) (not x8465))
+:assumption (or (not x519) (not x6446) (not x13142))
+:assumption (or (not x23958) (not x17960))
+:assumption (or x24593 (not x8002))
+:assumption (or x14894 x16846)
+:assumption (or x2471 (not x5731))
+:assumption (or x30113 x29055)
+:assumption (or x16655 x8602 (not x20207))
+:assumption (or (not x10410) (not x8662) x3727)
+:assumption (or (not x31755) (not x10911))
+:assumption (or (not x14210) x23417)
+:assumption (or (not x19411) x28315)
+:assumption (or (not x4128) (not x18))
+:assumption (or x16511 (not x29421))
+:assumption (or (not x15459) (not x31470) (not x28689) x31825)
+:assumption (or (not x6562) x29850)
+:assumption (or x24067 (not x14343))
+:assumption (or x25276 (not x8784))
+:assumption (or (not x22722) x29606 (not x19238))
+:assumption (or (not x23575) (not x15610))
+:assumption (or (not x10064) x17086)
+:assumption (or (not x20768) (not x20385))
+:assumption (or (not x27941) (not x5528) (not x30322) (not x30432) (not x9008))
+:assumption (or x21556 x3987)
+:assumption (or (not x8002) (not x21334))
+:assumption (or (not x3758) x26211)
+:assumption (or x17795 x30042)
+:assumption (or (not x22122) x15795)
+:assumption (or x6273 (not x10127))
+:assumption (or x8109 x20749)
+:assumption (or x10314 x24171)
+:assumption (or x3905 x31627)
+:assumption (or (not x19828) (not x4549) (not x31207))
+:assumption (or (not x23583) (not x29052))
+:assumption (or (not x4253) (not x11580))
+:assumption (or x7939 x30641)
+:assumption (or x14074 (not x25479))
+:assumption (or (not x3188) x30998)
+:assumption (or (not x14651) (not x15476))
+:assumption (or x1393 x2576)
+:assumption (or x563 (not x28322))
+:assumption (or (not x28571) (not x9199) x12371 (not x2813) (not x8626) x17968 (not x13561))
+:assumption (or (not x24005) (not x21277))
+:assumption (or x27785 x11857)
+:assumption (or x30805 (not x20856))
+:assumption (or x23240 (not x16723))
+:assumption (or x18552 x30219)
+:assumption (or x4710 x7217)
+:assumption (or (not x15016) x21298 (not x21167))
+:assumption (or (not x706) (not x11052))
+:assumption (or (not x28594) (not x21355))
+:assumption (or x21202 x8896)
+:assumption (or x31426 x17246 x12844 x27095)
+:assumption (or x1520 x26769)
+:assumption (or (not x19171) (not x12918))
+:assumption (or (not x1382) x12568)
+:assumption (or x3452 x10528)
+:assumption (or x27640 x21329)
+:assumption (or x11367 x18594 x15561 x4975 x31864 x2845 x28857 x30500)
+:assumption (or (not x5705) (not x28403))
+:assumption (or x26487 (not x8959))
+:assumption (or (not x20594) x23804)
+:assumption (or x29089 x20898)
+:assumption (or x30541 x4747)
+:assumption (or (not x13188) x29239)
+:assumption (or (not x19478) x8176 (not x25652) x3150 x12685 (not x7875) (not x124) (not x16321))
+:assumption (or (not x1393) (not x13894) (not x31340))
+:assumption (or (not x10968) x5146)
+:assumption (or (not x13027) x4649)
+:assumption (or (not x1092) (not x19222))
+:assumption (or x29864 (not x25112))
+:assumption (or (not x18663) x26126)
+:assumption (or (not x5860) x4765)
+:assumption (or (not x27564) (not x2419))
+:assumption (or x15034 x30761)
+:assumption (or (not x19860) (not x15396))
+:assumption (or (not x12413) (not x20260))
+:assumption (or (not x3657) (not x29764))
+:assumption (or (not x28398) x1945)
+:assumption (or (not x25837) (not x3738))
+:assumption (or (not x18544) (not x1870) x10410)
+:assumption (or (not x14757) (not x27938))
+:assumption (or (not x16807) (not x19609) x19748 (not x10058))
+:assumption (or x30560 (not x1704))
+:assumption (or x1920 (not x1387))
+:assumption (or x19 (not x9085))
+:assumption (or (not x25492) x17579)
+:assumption (or (not x17136) x21651)
+:assumption (or (not x24900) (not x8460))
+:assumption (or (not x9531) (not x3462))
+:assumption (or (not x26247) (not x19940))
+:assumption (or x28488 x28079)
+:assumption (or (not x16935) x25092)
+:assumption (or (not x20889) x4220)
+:assumption (or x3889 (not x26685))
+:assumption (or x11049 (not x27224))
+:assumption (or (not x29875) x13439)
+:assumption (or (not x14482) (not x11343))
+:assumption (or (not x29907) x5528 (not x3322))
+:assumption (or (not x16721) x23553)
+:assumption (or (not x14570) x27093)
+:assumption (or x19677 (not x10444))
+:assumption (or (not x15900) x24440 (not x16117) (not x7256))
+:assumption (or (not x10423) (not x22180))
+:assumption (or (not x13189) (not x24716))
+:assumption (or x13576 (not x6331))
+:assumption (or x9686 (not x29025))
+:assumption (or x28242 (not x25269))
+:assumption (or x15890 (not x17075))
+:assumption (or x25431 (not x18311))
+:assumption (or x18942 x16025 x5800)
+:assumption (or x6916 x4378)
+:assumption (or x20650 x4917 (not x15019) (not x24051))
+:assumption (or (not x5058) (not x21846))
+:assumption (or (not x22463) (not x8002))
+:assumption (or (not x9008) x29093)
+:assumption (or x31782 x20972)
+:assumption (or (not x17217) x12873)
+:assumption (or (not x4288) x14524)
+:assumption (or (not x26563) x10005)
+:assumption (or x10841 (not x17679))
+:assumption (or x9443 x13270)
+:assumption (or (not x26658) (not x29493))
+:assumption (or (not x27932) x5123)
+:assumption (or x6307 x12348)
+:assumption (or x22957 x548)
+:assumption (or x17106 (not x21315))
+:assumption (or x2386 x8386)
+:assumption (or x1566 (not x31706) x21653)
+:assumption (or x23559 x17919 x24067)
+:assumption (or (not x16479) (not x13717))
+:assumption (or (not x30562) (not x6289))
+:assumption (or x14190 (not x16025))
+:assumption (or x4680 (not x16339))
+:assumption (or (not x25210) x23244)
+:assumption (or x16929 (not x7242))
+:assumption (or x725 (not x10163))
+:assumption (or x26489 (not x21711))
+:assumption (or (not x6777) (not x12578) (not x30348))
+:assumption (or (not x31519) (not x28007))
+:assumption (or x7484 x3189)
+:assumption (or (not x21466) x8095 (not x23455) x8602 (not x15023) (not x20078) x29652 (not x21595))
+:assumption (or (not x6423) x29339)
+:assumption (or x29442 (not x815))
+:assumption (or (not x24010) (not x25119))
+:assumption (or (not x25832) x4274)
+:assumption (or x31763 (not x4986))
+:assumption (or (not x6307) (not x9381))
+:assumption (or (not x12975) (not x14408))
+:assumption (or (not x14173) (not x29618))
+:assumption (or (not x13956) (not x1630) x9779 (not x22472))
+:assumption (or x25083 x8393)
+:assumption (or x18852 x15648)
+:assumption (or (not x2649) (not x22814))
+:assumption (or x23312 x28736)
+:assumption (or x29577 (not x19555))
+:assumption (or (not x10225) (not x14667))
+:assumption (or (not x22076) (not x9232))
+:assumption (or (not x2477) (not x23198))
+:assumption (or x5947 (not x71))
+:assumption (or x30168 (not x7433))
+:assumption (or (not x16304) (not x25312))
+:assumption (or x26878 (not x19351))
+:assumption (or x31689 (not x7472))
+:assumption (or (not x29023) x13195 x9972 (not x16822) x15174)
+:assumption (or x6530 (not x9458))
+:assumption (or x9689 x5963)
+:assumption (or x9866 x19559 (not x9516))
+:assumption (or (not x17490) (not x9828))
+:assumption (or (not x10614) x17658 x15260)
+:assumption (or x27051 x23831)
+:assumption (or (not x14491) (not x7276))
+:assumption (or (not x12760) x9738 x27985)
+:assumption (or x544 (not x14335))
+:assumption (or (not x24331) x9008)
+:assumption (or (not x4262) (not x9198))
+:assumption (or (not x14495) x288)
+:assumption (or (not x13752) (not x8658) x22843)
+:assumption (or (not x21943) x11274)
+:assumption (or (not x761) x22981)
+:assumption (or (not x10918) x11522 (not x23043) x2373 (not x15788) (not x20515))
+:assumption (or x19204 (not x2175) x9008)
+:assumption (or (not x18859) (not x13396) x10668)
+:assumption (or (not x29865) (not x861))
+:assumption (or (not x31771) x10357)
+:assumption (or (not x28885) (not x30337) (not x2578))
+:assumption (or x26624 x15323 x20201 (not x9760))
+:assumption (or (not x31672) (not x30255))
+:assumption (or x31085 (not x3394))
+:assumption (or x31709 x16304)
+:assumption (or (not x9008) x20198)
+:assumption (or x23244 x8611 x14455)
+:assumption (or x984 (not x21950) x15351 (not x12382) x6116)
+:assumption (or (not x9008) x24058 (not x5528) x29021 x26284)
+:assumption (or (not x8169) (not x10658))
+:assumption (or (not x4762) x8002 (not x5250))
+:assumption (or (not x27202) (not x15399))
+:assumption (or (not x30019) x6772)
+:assumption (or x29283 x28364)
+:assumption (or (not x15146) x434)
+:assumption (or (not x9188) x3207)
+:assumption (or x4386 x29826)
+:assumption (or (not x26155) (not x21397) x27450)
+:assumption (or x8313 (not x3336))
+:assumption (or x27635 x30875)
+:assumption (or (not x23695) x21815)
+:assumption (or (not x480) x17790)
+:assumption (or x23064 x17716)
+:assumption (or (not x8219) (not x8694))
+:assumption (or x12329 x18683)
+:assumption (or (not x30253) x89)
+:assumption (or (not x440) x7129)
+:assumption (or x9324 x30451)
+:assumption (or x21633 x11222)
+:assumption (or (not x142) (not x10676))
+:assumption (or x20388 (not x30126))
+:assumption (or (not x11085) x408)
+:assumption (or (not x9531) (not x27159))
+:assumption (or (not x29500) (not x9128))
+:assumption (or x21298 x15481 x22154 x9006)
+:assumption (or (not x23427) x24930)
+:assumption (or x21026 (not x28518))
+:assumption (or (not x5970) x26262)
+:assumption (or (not x10405) x9008)
+:assumption (or (not x7593) x527)
+:assumption (or x4252 (not x9091))
+:assumption (or x30499 (not x16590))
+:assumption (or x18964 x13956)
+:assumption (or x28950 x6883)
+:assumption (or x9440 x3283)
+:assumption (or x15145 (not x25294))
+:assumption (or x28471 (not x16409) (not x2515) x30124)
+:assumption (or (not x25972) (not x9531))
+:assumption (or x14869 (not x31064))
+:assumption (or (not x11723) (not x30432))
+:assumption (or (not x9008) (not x3458))
+:assumption (or (not x12260) x22824)
+:assumption (or (not x26451) x11401)
+:assumption (or (not x10600) (not x101))
+:assumption (or x4758 x17577)
+:assumption (or x9290 x11846 (not x12257) x28313 (not x11189))
+:assumption (or x7589 x11654)
+:assumption (or x25014 (not x23371))
+:assumption (or x23570 (not x24756) (not x20087) x3417 (not x31129))
+:assumption (or (not x10272) (not x11670))
+:assumption (or x16490 x13622)
+:assumption (or x5958 (not x8346))
+:assumption (or x12372 x6720)
+:assumption (or x30217 (not x24031))
+:assumption (or (not x8026) (not x18036))
+:assumption (or x17057 (not x18903))
+:assumption (or x23902 x9269 x20375)
+:assumption (or (not x26685) x9069)
+:assumption (or x20620 x2859)
+:assumption (or (not x29440) (not x930))
+:assumption (or x22665 (not x9008))
+:assumption (or x1041 (not x13899))
+:assumption (or (not x2185) x8552)
+:assumption (or (not x14840) x1320)
+:assumption (or x22529 (not x11660))
+:assumption (or (not x8502) (not x21446) x4935 (not x15182))
+:assumption (or x24268 x1511)
+:assumption (or x26383 (not x19876))
+:assumption (or (not x17395) (not x27800))
+:assumption (or x15123 x16891)
+:assumption (or (not x679) (not x29607))
+:assumption (or x14775 (not x686))
+:assumption (or x29027 (not x17739))
+:assumption (or x29271 (not x26432))
+:assumption (or x11288 (not x1816) (not x7286) x23135 x5685)
+:assumption (or x17700 x9975)
+:assumption (or (not x11140) x26926)
+:assumption (or x18399 x4836 (not x8658) (not x2509))
+:assumption (or (not x15274) x7195)
+:assumption (or x20911 x31932)
+:assumption (or x26594 (not x23814) x27938 (not x9245) (not x9981) (not x22191) x22185 (not x26765) x23958)
+:assumption (or (not x23244) x16300)
+:assumption (or x3827 x19892)
+:assumption (or x18155 x21721)
+:assumption (or x31835 x18594)
+:assumption (or (not x22103) x13547)
+:assumption (or x31764 (not x17823))
+:assumption (or (not x18694) (not x3461))
+:assumption (or (not x5601) (not x8505))
+:assumption (or x19647 x14963 x31724 x5123)
+:assumption (or x9008 x4429)
+:assumption (or (not x12696) (not x20354))
+:assumption (or (not x30786) x25310 (not x30422) x24164 (not x30625))
+:assumption (or (not x22767) x11307)
+:assumption (or x6043 (not x19736))
+:assumption (or x20606 (not x9986))
+:assumption (or x24654 x22733)
+:assumption (or x7835 x3775 (not x18382))
+:assumption (or (not x8344) x14839 x13688)
+:assumption (or (not x9008) (not x27846))
+:assumption (or (not x25806) (not x7649))
+:assumption (or x13956 x30781)
+:assumption (or x1438 x10964)
+:assumption (or (not x24210) (not x28912))
+:assumption (or x1070 x23202)
+:assumption (or (not x17693) x1670)
+:assumption (or x28169 (not x17450))
+:assumption (or x28338 x2906)
+:assumption (or (not x20722) x21996 x15905 x12612 (not x8844) (not x5176))
+:assumption (or x10717 x27799)
+:assumption (or (not x20013) x12402)
+:assumption (or (not x14125) x10164)
+:assumption (or x7659 x13588)
+:assumption (or (not x13924) x25659)
+:assumption (or x13956 x22584 x23244 (not x31180) x8002 x29139)
+:assumption (or x1269 (not x3618))
+:assumption (or x11201 x30727)
+:assumption (or x7238 x20931)
+:assumption (or x10741 x2030 (not x231))
+:assumption (or x28686 x1806)
+:assumption (or (not x9715) (not x27120))
+:assumption (or (not x26475) x22689)
+:assumption (or (not x23978) (not x18139) x21836 (not x2573) (not x26718) x6582)
+:assumption (or x15002 x596)
+:assumption (or x23956 (not x11511))
+:assumption (or (not x3159) x27101)
+:assumption (or (not x528) x9863)
+:assumption (or x26347 x12271)
+:assumption (or x3513 (not x14377))
+:assumption (or x12329 (not x24360))
+:assumption (or x16155 (not x12834) x23911 x28506 x30353 (not x2098) (not x1139))
+:assumption (or x2871 x8454)
+:assumption (or (not x9301) x13290 x20482)
+:assumption (or (not x28671) (not x1523))
+:assumption (or (not x11314) x17655)
+:assumption (or (not x27699) x23729)
+:assumption (or x10849 x20614)
+:assumption (or (not x2441) (not x8168))
+:assumption (or x23842 (not x13720))
+:assumption (or x29754 x16927)
+:assumption (or x23585 (not x22658))
+:assumption (or x23816 x30687)
+:assumption (or x16121 (not x21679))
+:assumption (or x10253 (not x11036))
+:assumption (or (not x13896) (not x1199))
+:assumption (or x13968 (not x23435))
+:assumption (or x26038 (not x30814))
+:assumption (or x28859 x30401 (not x1816) (not x5713) (not x12891) x18512)
+:assumption (or (not x28283) (not x5956))
+:assumption (or (not x2750) x21428 (not x4559) x15101)
+:assumption (or (not x11007) (not x5701))
+:assumption (or x13532 (not x6630) (not x2054) x11589 (not x28074))
+:assumption (or x9034 x14818)
+:assumption (or x13205 x28508)
+:assumption (or x6150 (not x8150))
+:assumption (or x26892 (not x5528) (not x9008) x8383 (not x28364))
+:assumption (or (not x6133) x5797)
+:assumption (or (not x10159) x3038)
+:assumption (or (not x2960) (not x11521))
+:assumption (or x18827 x14457)
+:assumption (or x19468 x29775)
+:assumption (or (not x2162) (not x3225))
+:assumption (or (not x3064) x4504)
+:assumption (or (not x21832) (not x30275))
+:assumption (or (not x29860) (not x19210) x3891 x12930 (not x3734) x3763)
+:assumption (or x26452 x25548)
+:assumption (or (not x2952) (not x3050))
+:assumption (or x18495 (not x20344) x8447 (not x2516) x20562)
+:assumption (or x6837 (not x31871) x22912 (not x17487) (not x8953) x13450 x3789)
+:assumption (or (not x7370) (not x17829))
+:assumption (or (not x6105) (not x4899))
+:assumption (or x26432 x1504)
+:assumption (or (not x28971) x30068)
+:assumption (or (not x14658) (not x17576))
+:assumption (or x1552 (not x2619))
+:assumption (or x11260 x14413)
+:assumption (or x16715 (not x5345))
+:assumption (or (not x12339) (not x10482))
+:assumption (or x6381 (not x7993) (not x13576))
+:assumption (or x2577 x21826)
+:assumption (or (not x11506) x18539 (not x21202) (not x28812) x2632 x8471 x9357)
+:assumption (or (not x438) (not x16747))
+:assumption (or x31180 x24941)
+:assumption (or x7570 (not x30734))
+:assumption (or x31347 (not x23415))
+:assumption (or x6689 x2006)
+:assumption (or x30113 (not x25187) x26892)
+:assumption (or (not x6951) x11091)
+:assumption (or (not x19220) x6684)
+:assumption (or x28378 (not x1344))
+:assumption (or x28314 x10959)
+:assumption (or x28892 (not x25946))
+:assumption (or x26696 x12824)
+:assumption (or (not x25069) x20799)
+:assumption (or (not x16203) (not x3150))
+:assumption (or x5316 x959)
+:assumption (or x31713 (not x13016))
+:assumption (or x15525 x320)
+:assumption (or x18881 (not x2542))
+:assumption (or (not x19048) x17075)
+:assumption (or (not x12902) (not x24849) x30138 x31794 x15850)
+:assumption (or x31475 x17602)
+:assumption (or x21 (not x30471) (not x31554) x16385 (not x29394) x24448 x16527)
+:assumption (or (not x17938) x27702)
+:assumption (or x25294 x8909 x5878)
+:assumption (or (not x9571) x23698)
+:assumption (or x7275 (not x9572))
+:assumption (or (not x17020) x26713)
+:assumption (or x28310 (not x688))
+:assumption (or x9466 x17636 x23244 (not x26578) x13956 x8002)
+:assumption (or x23316 (not x15859))
+:assumption (or x3864 (not x29003))
+:assumption (or (not x30300) (not x16246))
+:assumption (or (not x23119) x8153)
+:assumption (or (not x27941) (not x5136))
+:assumption (or x31409 (not x23244))
+:assumption (or x24581 x13648)
+:assumption (or x29219 x22834)
+:assumption (or x26693 x870)
+:assumption (or x10712 x12162)
+:assumption (or x14591 x9900 x15795)
+:assumption (or (not x29465) x15658)
+:assumption (or x4791 (not x8006) x22881 (not x17868))
+:assumption (or (not x2177) x11500)
+:assumption (or x25845 (not x31781) x19183)
+:assumption (or (not x12119) x7536)
+:assumption (or (not x13886) (not x6285))
+:assumption (or (not x31671) (not x24758))
+:assumption (or x13005 (not x24354))
+:assumption (or x16679 (not x29730))
+:assumption (or x15989 (not x22085))
+:assumption (or x8532 (not x2763))
+:assumption (or (not x3781) (not x11565))
+:assumption (or x30615 x15962 x12973)
+:assumption (or x13318 x25393)
+:assumption (or x606 (not x26291))
+:assumption (or (not x15973) x20587 (not x28838) x1050 x12045)
+:assumption (or x19528 x27301)
+:assumption (or x14297 (not x15565))
+:assumption (or (not x25966) x4650 x29312)
+:assumption (or x10956 (not x28063))
+:assumption (or (not x14701) x1532)
+:assumption (or x5753 (not x23636))
+:assumption (or (not x4160) x25315 x10510)
+:assumption (or (not x16622) (not x18344))
+:assumption (or (not x29203) (not x4890))
+:assumption (or x16041 (not x23355))
+:assumption (or (not x5726) x24546)
+:assumption (or (not x8429) x18656)
+:assumption (or (not x28419) x10408)
+:assumption (or x28396 x3798)
+:assumption (or (not x18170) (not x16612))
+:assumption (or (not x18948) x13278)
+:assumption (or x4331 (not x355))
+:assumption (or (not x24625) x29606 (not x7602) (not x31134))
+:assumption (or x8440 (not x23696))
+:assumption (or (not x30113) x1708)
+:assumption (or x8316 (not x8315))
+:assumption (or (not x22472) x30145 (not x13956))
+:assumption (or x11370 x24778)
+:assumption (or (not x20669) x15986)
+:assumption (or x17890 x19260 x26007)
+:assumption (or x21705 x30203)
+:assumption (or x10465 x22285)
+:assumption (or (not x19195) (not x14839))
+:assumption (or (not x13303) (not x8520))
+:assumption (or x4754 x13481)
+:assumption (or (not x7012) x8495)
+:assumption (or x9103 x9541)
+:assumption (or (not x9166) x8044)
+:assumption (or (not x24735) (not x11432))
+:assumption (or (not x5767) (not x17344))
+:assumption (or x217 (not x26762))
+:assumption (or x17849 (not x9515))
+:assumption (or x31580 x4559)
+:assumption (or x27438 (not x20885))
+:assumption (or (not x12049) (not x26753))
+:assumption (or x5528 x29763)
+:assumption (or x26975 (not x22513))
+:assumption (or x8252 x2597)
+:assumption (or (not x19830) (not x24511))
+:assumption (or (not x29001) x3118)
+:assumption (or (not x29044) x7509)
+:assumption (or x16801 (not x14867))
+:assumption (or x1106 x2378)
+:assumption (or (not x7537) x23399 (not x24949))
+:assumption (or (not x7984) x23765 x18270)
+:assumption (or x22034 x3455)
+:assumption (or (not x12248) (not x16365))
+:assumption (or x18825 x23980 (not x9883) x13730 (not x1872))
+:assumption (or x29517 (not x30648))
+:assumption (or (not x7231) (not x21769))
+:assumption (or x26897 (not x7407))
+:assumption (or (not x4468) (not x1849))
+:assumption (or (not x15333) x25490 (not x26693) (not x870))
+:assumption (or x19306 (not x24367))
+:assumption (or x22799 (not x10671))
+:assumption (or x5155 x12166)
+:assumption (or x16207 (not x31334))
+:assumption (or (not x26897) (not x13273))
+:assumption (or (not x14219) (not x6379))
+:assumption (or x29022 x27850)
+:assumption (or (not x19078) (not x25000) x4902 x104 x26002)
+:assumption (or x31114 x31258)
+:assumption (or x16338 (not x13229))
+:assumption (or (not x17872) x1920)
+:assumption (or x23047 x27518)
+:assumption (or (not x19133) (not x21964))
+:assumption (or (not x20543) (not x20156))
+:assumption (or (not x23471) x27911 x20500)
+:assumption (or x964 (not x1651))
+:assumption (or x3459 (not x24325) x18859)
+:assumption (or (not x24756) x11605)
+:assumption (or (not x10537) x12065)
+:assumption (or x24126 (not x15753))
+:assumption (or x28778 (not x14622))
+:assumption (or (not x16952) x24756 x20087 x9868)
+:assumption (or x13956 x2085)
+:assumption (or x26223 (not x21953))
+:assumption (or (not x26428) x8727)
+:assumption (or x10829 (not x25796) x7711)
+:assumption (or (not x3434) (not x14677))
+:assumption (or x17817 x21336)
+:assumption (or x11829 x27483)
+:assumption (or (not x7745) x29374)
+:assumption (or x10368 x19159)
+:assumption (or x24518 x10105 x23244)
+:assumption (or x12999 (not x17300))
+:assumption (or (not x20436) (not x13643))
+:assumption (or x5688 (not x7707))
+:assumption (or x16769 x19136 x23397 x15135)
+:assumption (or (not x27339) (not x31274))
+:assumption (or x3177 x17820)
+:assumption (or x17625 x22729)
+:assumption (or x4542 x2789 (not x3986) x22623 (not x28898) (not x31579) (not x17633) x18573 x9196 x7825)
+:assumption (or x4828 x18134)
+:assumption (or x5709 (not x16910) x31530)
+:assumption (or x5343 x27930)
+:assumption (or (not x9008) x15937 (not x10461))
+:assumption (or (not x22325) x25925)
+:assumption (or (not x23417) x25779)
+:assumption (or x22492 x7007)
+:assumption (or (not x1024) (not x8002))
+:assumption (or (not x16972) (not x20848))
+:assumption (or x22911 x23028)
+:assumption (or x7645 x17031)
+:assumption (or (not x25475) (not x30282))
+:assumption (or (not x11968) x18266)
+:assumption (or x5166 (not x23123) (not x20852) (not x1822) x4338)
+:assumption (or (not x25027) (not x23244))
+:assumption (or x31590 x2494)
+:assumption (or x22521 (not x14778))
+:assumption (or (not x29558) x5159)
+:assumption (or (not x20601) x23899)
+:assumption (or x6780 x21298 x27765 (not x15512))
+:assumption (or x30745 x4223)
+:assumption (or (not x18293) (not x20484) (not x4461) x12481)
+:assumption (or (not x9147) (not x31715))
+:assumption (or (not x31470) (not x8748))
+:assumption (or (not x22754) (not x26734))
+:assumption (or (not x24722) (not x30558))
+:assumption (or (not x24346) x4999)
+:assumption (or (not x11846) (not x9290))
+:assumption (or x15659 x22109)
+:assumption (or x9455 x985)
+:assumption (or (not x29094) (not x20780))
+:assumption (or (not x9457) (not x1259))
+:assumption (or (not x21976) x2013 (not x1721) (not x27728) x31267 x20363 x16252 (not x6905) (not x15163) (not x24878))
+:assumption (or (not x26224) x713)
+:assumption (or x16967 x29405)
+:assumption (or (not x25623) x3737)
+:assumption (or (not x14827) (not x4389))
+:assumption (or (not x24818) (not x1393))
+:assumption (or (not x18859) (not x13944))
+:assumption (or x28712 x12634)
+:assumption (or x9318 (not x6159))
+:assumption (or x17347 x12318)
+:assumption (or x30332 (not x8470) x29150 x20160 (not x21033) x1775 x28868 (not x7696))
+:assumption (or x18859 (not x2494) x8733 x21949 x12864 (not x31590) x6271 x9203)
+:assumption (or x22246 (not x2478))
+:assumption (or (not x9844) x8088)
+:assumption (or (not x407) (not x6908))
+:assumption (or (not x1518) x30862)
+:assumption (or (not x20567) (not x21298))
+:assumption (or (not x25726) x6506)
+:assumption (or (not x15807) (not x26713))
+:assumption (or (not x16025) x606)
+:assumption (or (not x20087) (not x23626))
+:assumption (or (not x2041) (not x19619))
+:assumption (or (not x14611) x9008)
+:assumption (or x7200 x13478 x15227)
+:assumption (or x19261 (not x4669))
+:assumption (or x16901 x20276)
+:assumption (or (not x10016) (not x15868) (not x9423) (not x20058))
+:assumption (or x16458 (not x9432))
+:assumption (or x2089 x15933)
+:assumption (or (not x10843) (not x14087))
+:assumption (or (not x6027) (not x5298) (not x1457) x24958 x2620 (not x29443))
+:assumption (or x16341 x29354)
+:assumption (or (not x26897) x7219)
+:assumption (or (not x12968) (not x8606))
+:assumption (or x241 (not x16690))
+:assumption (or (not x4865) x22960 x14862 x13399 x19374 (not x8446))
+:assumption (or x2364 x21532)
+:assumption (or (not x18003) (not x27555))
+:assumption (or (not x13068) x20163)
+:assumption (or (not x6969) (not x6311))
+:assumption (or (not x21823) x29125)
+:assumption (or x15996 x23244 (not x26810) x8002 x8445)
+:assumption (or x22209 x28541)
+:assumption (or (not x929) (not x18215))
+:assumption (or x19187 x12320)
+:assumption (or (not x2810) x3001 (not x3663))
+:assumption (or x4711 x25941)
+:assumption (or x26751 x1348)
+:assumption (or x2135 (not x31348))
+:assumption (or x23379 (not x6485))
+:assumption (or x1139 x31929)
+:assumption (or x21482 (not x16122) (not x23017) (not x14697))
+:assumption (or (not x19748) x16807)
+:assumption (or x3687 (not x21669))
+:assumption (or x28044 (not x25659) x27375)
+:assumption (or x20845 (not x14201))
+:assumption (or (not x15813) (not x1625))
+:assumption (or x20942 (not x12880))
+:assumption (or x9531 (not x1467) x26991)
+:assumption (or (not x31238) (not x27636) x27840)
+:assumption (or x7886 x19117)
+:assumption (or (not x15654) x2242)
+:assumption (or (not x8002) (not x23244) x10833)
+:assumption (or (not x31004) (not x19207))
+:assumption (or x23633 x7247 (not x27396) x4963)
+:assumption (or x6969 (not x4663) (not x19554) x17612)
+:assumption (or x17342 (not x11950))
+:assumption (or x27691 (not x8170))
+:assumption (or (not x2731) x60)
+:assumption (or x16652 (not x15559))
+:assumption (or (not x18769) (not x25365))
+:assumption (or x7386 x3799)
+:assumption (or x3427 x31287)
+:assumption (or x19667 x14347 x9478)
+:assumption (or x13845 (not x12515))
+:assumption (or (not x19756) x7102 x9008)
+:assumption (or (not x14425) (not x5345))
+:assumption (or x12027 (not x2236))
+:assumption (or x10642 x806)
+:assumption (or x13651 x17302 x12277 (not x24483) x7554 (not x13036) x10056)
+:assumption (or (not x31898) x20729)
+:assumption (or x29397 x24837)
+:assumption (or (not x24327) x28390)
+:assumption (or (not x824) x9008)
+:assumption (or x2221 x30509)
+:assumption (or x26469 (not x12677) (not x15336))
+:assumption (or (not x17590) (not x13489))
+:assumption (or (not x11382) (not x2105))
+:assumption (or (not x15973) x23213)
+:assumption (or (not x25436) x31491)
+:assumption (or x7728 x28120)
+:assumption (or x10874 (not x8232))
+:assumption (or x26968 (not x7893))
+:assumption (or (not x6586) x12171)
+:assumption (or x10414 x18042)
+:assumption (or x11150 x18076 (not x12463) (not x17245) (not x7983) x10530 (not x13739) (not x3818) (not x3817))
+:assumption (or x8002 x26359)
+:assumption (or (not x973) x28116)
+:assumption (or x6780 x17081 x30113)
+:assumption (or x10088 x21027)
+:assumption (or (not x15264) x21341)
+:assumption (or (not x22152) (not x29442) (not x24898) x5028)
+:assumption (or (not x17085) (not x3494) (not x22841))
+:assumption (or (not x631) (not x26855))
+:assumption (or (not x27502) x13905)
+:assumption (or (not x7000) (not x13894))
+:assumption (or x24958 (not x13941) x27451 (not x159) x15184 (not x11561) (not x5016) x16319 (not x24457))
+:assumption (or x20832 x17067)
+:assumption (or (not x21824) x28201)
+:assumption (or (not x17322) x31928)
+:assumption (or x15441 x10340)
+:assumption (or (not x8469) x9423)
+:assumption (or (not x8883) x29664 x13576 (not x363) (not x9716))
+:assumption (or x1487 (not x31132))
+:assumption (or (not x31420) x23733)
+:assumption (or (not x15892) (not x24236) x29312)
+:assumption (or x15346 (not x21295))
+:assumption (or x12406 (not x30410))
+:assumption (or (not x21546) (not x16657) x20651 x9059)
+:assumption (or x190 x10182)
+:assumption (or (not x24352) (not x13126))
+:assumption (or (not x3978) (not x20134))
+:assumption (or (not x13961) x2646)
+:assumption (or x16087 x2133 x20784)
+:assumption (or (not x11162) x31068)
+:assumption (or x6338 (not x4935))
+:assumption (or (not x13282) x13487)
+:assumption (or x25872 (not x12664))
+:assumption (or x3312 (not x21724) (not x22855))
+:assumption (or (not x2989) (not x23576))
+:assumption (or x2498 (not x31558))
+:assumption (or x15445 x14852)
+:assumption (or x27611 (not x2126))
+:assumption (or x16956 x14347)
+:assumption (or (not x23793) x18122 x18859)
+:assumption (or x30157 (not x13956))
+:assumption (or (not x21087) (not x11695))
+:assumption (or x10779 x19764)
+:assumption (or (not x7828) x5084)
+:assumption (or x2450 (not x7240))
+:assumption (or (not x1336) (not x9387))
+:assumption (or (not x7528) x24110)
+:assumption (or (not x21840) x30734)
+:assumption (or x9666 (not x22628))
+:assumption (or (not x7595) x21924)
+:assumption (or (not x20660) (not x12087))
+:assumption (or x10748 (not x14030))
+:assumption (or x31732 x17842)
+:assumption (or (not x16732) (not x16709))
+:assumption (or (not x21729) x19403)
+:assumption (or x6307 x15881)
+:assumption (or x25484 x30704)
+:assumption (or x2022 (not x12233))
+:assumption (or (not x29902) x16194)
+:assumption (or x13017 (not x17367))
+:assumption (or (not x9840) x25663)
+:assumption (or (not x15160) x6166)
+:assumption (or (not x25496) x26458)
+:assumption (or (not x30010) (not x14104))
+:assumption (or x11956 x9531 x25764 (not x7056))
+:assumption (or (not x23775) (not x2234))
+:assumption (or x6131 x24722 x4383 (not x16802))
+:assumption (or (not x7027) (not x15649))
+:assumption (or (not x20961) (not x31480))
+:assumption (or (not x15390) x13945 (not x28255))
+:assumption (or x13662 (not x3576))
+:assumption (or x29581 x7719)
+:assumption (or (not x9299) x5539 (not x14435) x30637 (not x27655) x1729 (not x31205) (not x21805) (not x28592))
+:assumption (or (not x25368) x3001 (not x9025))
+:assumption (or x20104 x25924)
+:assumption (or (not x7059) (not x30935))
+:assumption (or (not x28597) x13069 x19989 (not x4111) x13120 x10837 (not x24016) (not x15774))
+:assumption (or (not x11103) x13036)
+:assumption (or (not x4484) x28885)
+:assumption (or (not x9729) x19297)
+:assumption (or (not x15815) (not x16418))
+:assumption (or (not x27536) (not x26897))
+:assumption (or (not x22982) x5652)
+:assumption (or (not x6969) (not x10662))
+:assumption (or (not x21690) x26957)
+:assumption (or x30327 x31434)
+:assumption (or x27415 (not x27915) (not x31188) (not x14707) x8834 x22460 (not x7261) x11674)
+:assumption (or x26787 (not x18664))
+:assumption (or (not x17590) x20960)
+:assumption (or (not x9177) (not x765))
+:assumption (or x22356 (not x142))
+:assumption (or x23824 x30955 x8602)
+:assumption (or (not x29219) (not x22834))
+:assumption (or (not x24162) (not x5023))
+:assumption (or x28364 x26674 (not x23367) (not x14200))
+:assumption (or x8744 (not x30954) x28165)
+:assumption (or (not x30758) x5)
+:assumption (or x22460 (not x14707) x27415 x8834 (not x7261) x11847 x11215 (not x31188))
+:assumption (or x31141 (not x7678))
+:assumption (or (not x15071) (not x30113) (not x27910) (not x5689))
+:assumption (or (not x27259) x31858 (not x15314) (not x23958))
+:assumption (or (not x16510) x14849)
+:assumption (or x12196 (not x26546))
+:assumption (or x9729 (not x19297))
+:assumption (or x9737 (not x725))
+:assumption (or x29139 (not x10783) x21800 x8932 (not x11787))
+:assumption (or x4292 (not x19409))
+:assumption (or x13576 x4346)
+:assumption (or (not x20821) (not x26722))
+:assumption (or (not x25507) (not x13728))
+:assumption (or (not x8675) x14632)
+:assumption (or x25433 x3500)
+:assumption (or (not x28348) (not x29350))
+:assumption (or x2170 x26640)
+:assumption (or (not x12718) (not x8747))
+:assumption (or (not x5862) (not x23854))
+:assumption (or x13402 x30891)
+:assumption (or (not x5135) x24924)
+:assumption (or (not x19703) x15942)
+:assumption (or x11475 (not x2792))
+:assumption (or x11831 x13410)
+:assumption (or x8166 (not x25471))
+:assumption (or (not x23134) x13221 x8002)
+:assumption (or x4543 x9804)
+:assumption (or (not x11256) x11035)
+:assumption (or (not x18859) (not x21354))
+:assumption (or (not x589) (not x25221))
+:assumption (or (not x6697) x28412)
+:assumption (or x12176 x23989)
+:assumption (or x18271 x29129)
+:assumption (or (not x25481) (not x26192))
+:assumption (or (not x28503) (not x19065))
+:assumption (or x15805 x6277)
+:assumption (or (not x15150) x25238)
+:assumption (or (not x11359) x29998)
+:assumption (or (not x30606) (not x1402))
+:assumption (or x7411 x21018)
+:assumption (or x5354 (not x5675))
+:assumption (or (not x31636) (not x25423))
+:assumption (or x2669 x7885)
+:assumption (or (not x18737) (not x25366))
+:assumption (or (not x612) x13501)
+:assumption (or x10993 x8407)
+:assumption (or (not x31576) x27941)
+:assumption (or x23281 x5259)
+:assumption (or (not x10658) x26725)
+:assumption (or (not x5596) (not x2333))
+:assumption (or x5241 (not x11546))
+:assumption (or (not x12022) x7158)
+:assumption (or x28027 x7854)
+:assumption (or (not x21026) x7750 (not x18249))
+:assumption (or x10830 x21349)
+:assumption (or (not x11281) (not x8202))
+:assumption (or (not x13434) (not x25332))
+:assumption (or x6196 x28288)
+:assumption (or x6486 (not x1537))
+:assumption (or (not x17572) x14922)
+:assumption (or (not x12907) x2852)
+:assumption (or x2442 x457)
+:assumption (or x17070 x31874)
+:assumption (or x12176 x13630)
+:assumption (or (not x26056) x12659)
+:assumption (or x21655 (not x4966))
+:assumption (or (not x16740) x15574)
+:assumption (or (not x31180) x5528 (not x28509))
+:assumption (or x27852 x26281)
+:assumption (or x19487 x6351 (not x13267))
+:assumption (or x28708 (not x21080) x4370)
+:assumption (or x4981 x9811)
+:assumption (or x31734 x6371 x7151 x7854)
+:assumption (or (not x8525) x18470 x17250 x9903 (not x1015) (not x793) x19465 (not x27695))
+:assumption (or (not x7699) x18475)
+:assumption (or x29611 x23244)
+:assumption (or x6135 x4058)
+:assumption (or x22362 x1226)
+:assumption (or x20182 x12607 x15814 x8800 (not x9669))
+:assumption (or x21281 x20406)
+:assumption (or (not x24058) (not x15328))
+:assumption (or x8002 x6336 x15686 x23244)
+:assumption (or x1830 x30806)
+:assumption (or x28187 (not x27183))
+:assumption (or x30875 (not x28))
+:assumption (or x23513 (not x14658))
+:assumption (or x5528 x28583)
+:assumption (or (not x14175) (not x16636))
+:assumption (or (not x17905) (not x29572))
+:assumption (or x29771 (not x16802) (not x24722) x25976)
+:assumption (or x24504 x15724)
+:assumption (or x17485 x5205)
+:assumption (or (not x22992) x18694 x4011)
+:assumption (or x15425 x10901)
+:assumption (or (not x24312) (not x7392))
+:assumption (or x13246 x17190)
+:assumption (or (not x8028) x23511)
+:assumption (or (not x19718) (not x14965))
+:assumption (or (not x5810) (not x14839) x22437)
+:assumption (or x25224 x18148)
+:assumption (or x11677 (not x27011) (not x9239) (not x5367))
+:assumption (or x26987 (not x24114))
+:assumption (or x13781 x12967)
+:assumption (or (not x19452) (not x13018))
+:assumption (or x19334 (not x8485))
+:assumption (or (not x5962) (not x31504))
+:assumption (or x31333 x30669)
+:assumption (or x23244 (not x20949) (not x10421) (not x8002) (not x27054))
+:assumption (or (not x14406) x22640)
+:assumption (or (not x9932) x31616)
+:assumption (or (not x9434) (not x4633))
+:assumption (or x19132 x8758)
+:assumption (or x29358 (not x20629))
+:assumption (or x12466 x9614 (not x24323) x2146 (not x5198))
+:assumption (or (not x6783) x13542)
+:assumption (or (not x23386) (not x10596))
+:assumption (or (not x17273) (not x16159))
+:assumption (or (not x8785) x854)
+:assumption (or (not x21615) x1582)
+:assumption (or (not x6211) (not x14172))
+:assumption (or x5735 (not x8361))
+:assumption (or (not x28881) x15483)
+:assumption (or x23524 x9732)
+:assumption (or (not x30215) x17534)
+:assumption (or x12928 x28580)
+:assumption (or (not x18431) x11327)
+:assumption (or x13979 x24284)
+:assumption (or x31561 x9741)
+:assumption (or (not x11875) (not x2488) x27774 (not x13048) (not x20829))
+:assumption (or x1637 x7263)
+:assumption (or x16809 (not x11927))
+:assumption (or x12922 x11752)
+:assumption (or x18929 x9013)
+:assumption (or x6716 x10205 (not x3691) (not x4411) (not x31183) x22162 (not x7569) x1832)
+:assumption (or (not x25410) (not x18563))
+:assumption (or x22312 (not x16384))
+:assumption (or x14758 (not x19781))
+:assumption (or (not x21627) x4022)
+:assumption (or (not x25479) (not x3059))
+:assumption (or (not x23696) (not x15270))
+:assumption (or x31832 x21046)
+:assumption (or x3419 x20651 (not x2346) x18777 x16256)
+:assumption (or x8184 x22114)
+:assumption (or (not x23233) x2529)
+:assumption (or x6750 x11060)
+:assumption (or x24202 (not x6909))
+:assumption (or (not x18883) (not x743))
+:assumption (or x23816 x21889)
+:assumption (or x9323 x30340 x8602)
+:assumption (or x4204 x1351 (not x964))
+:assumption (or x29288 x1750)
+:assumption (or (not x22531) (not x23436) x1289)
+:assumption (or x15283 (not x2463))
+:assumption (or x2619 (not x19099))
+:assumption (or (not x17928) x12379)
+:assumption (or (not x23435) x23876)
+:assumption (or (not x26742) x31448)
+:assumption (or (not x25911) (not x16910) (not x2868) (not x11664))
+:assumption (or (not x15199) x17459)
+:assumption (or (not x26235) x27264)
+:assumption (or x3835 x16182)
+:assumption (or x5643 x2246)
+:assumption (or x16375 x4031)
+:assumption (or x30480 x15913)
+:assumption (or x26909 (not x3069))
+:assumption (or x15168 x22654)
+:assumption (or (not x13430) x18780)
+:assumption (or (not x1776) (not x17051))
+:assumption (or x15738 x26600)
+:assumption (or (not x14863) (not x2851))
+:assumption (or (not x27847) (not x12244))
+:assumption (or (not x15325) (not x8002))
+:assumption (or x26402 x3636)
+:assumption (or (not x19946) x25448)
+:assumption (or x16460 x13023)
+:assumption (or x780 x16543)
+:assumption (or x19499 x24143)
+:assumption (or x25857 x6830)
+:assumption (or x17671 (not x1155))
+:assumption (or (not x2734) (not x24693) (not x17894) (not x19202) (not x14236))
+:assumption (or (not x18975) (not x21815))
+:assumption (or x12396 (not x13833))
+:assumption (or x11581 (not x26886))
+:assumption (or x28689 x4874)
+:assumption (or (not x18631) (not x27191))
+:assumption (or x6501 x15068)
+:assumption (or x5636 (not x14624))
+:assumption (or x28135 (not x13938))
+:assumption (or x9008 (not x16639))
+:assumption (or (not x4734) x18441)
+:assumption (or (not x5132) (not x14752))
+:assumption (or x20278 x6587 x17248 x30866 x15626)
+:assumption (or (not x30219) x22646)
+:assumption (or x17458 (not x20223))
+:assumption (or (not x21071) x31134 x29606)
+:assumption (or x15450 (not x28571) (not x21951) (not x26132))
+:assumption (or x10844 (not x17270))
+:assumption (or (not x1467) (not x8045))
+:assumption (or (not x17599) (not x19152))
+:assumption (or (not x4360) (not x2752))
+:assumption (or x2449 x1606)
+:assumption (or x20534 x18356 (not x2912) (not x30633))
+:assumption (or (not x1509) (not x21105) x1393)
+:assumption (or x20763 (not x27083) (not x1393))
+:assumption (or x17571 (not x7709))
+:assumption (or (not x10816) x12091)
+:assumption (or (not x26905) x27024)
+:assumption (or x16235 x25725)
+:assumption (or (not x24749) x7170)
+:assumption (or (not x21537) (not x23770))
+:assumption (or x15358 x31616)
+:assumption (or (not x6754) (not x2890))
+:assumption (or (not x12351) (not x5796))
+:assumption (or x10650 x2850)
+:assumption (or x23244 (not x84))
+:assumption (or (not x28853) x15053)
+:assumption (or x16648 (not x31677) (not x13618))
+:assumption (or x8377 x29122)
+:assumption (or (not x6591) x22590)
+:assumption (or (not x1652) x18733)
+:assumption (or x23087 (not x3969))
+:assumption (or (not x21549) x19439)
+:assumption (or x6123 (not x22548))
+:assumption (or (not x20056) (not x29316))
+:assumption (or x8309 x14518)
+:assumption (or (not x7606) x3846)
+:assumption (or (not x14605) (not x4076))
+:assumption (or (not x17863) x20626)
+:assumption (or (not x7512) (not x11700))
+:assumption (or (not x12762) x30887)
+:assumption (or x29040 x16603)
+:assumption (or (not x27248) (not x20242) (not x13225))
+:assumption (or x28115 x8692 x25403 x2777 x17352)
+:assumption (or x15987 x25224 (not x14195) x11792 (not x28487) (not x6149))
+:assumption (or (not x8002) x9759)
+:assumption (or x13956 (not x6029))
+:assumption (or x16802 (not x25976))
+:assumption (or x16301 x17036)
+:assumption (or x4929 x26152)
+:assumption (or (not x12345) (not x9110))
+:assumption (or (not x1564) (not x22145))
+:assumption (or x9998 x29442)
+:assumption (or x12137 x25528)
+:assumption (or x29269 x14527)
+:assumption (or x8501 (not x5142))
+:assumption (or x6816 (not x2278))
+:assumption (or x29141 x18374)
+:assumption (or (not x18762) (not x19303))
+:assumption (or x13528 x1503)
+:assumption (or (not x22422) (not x14455))
+:assumption (or x23630 x14477)
+:assumption (or x25240 (not x31085) x19992 x26327 x8734 x14185)
+:assumption (or (not x30221) (not x16153))
+:assumption (or (not x25445) x923)
+:assumption (or (not x6869) (not x27114))
+:assumption (or x18063 (not x1500))
+:assumption (or x16909 (not x29083))
+:assumption (or x25941 x2313)
+:assumption (or x28732 x19036)
+:assumption (or x10874 (not x25897) (not x6307) (not x29272))
+:assumption (or (not x4042) x152)
+:assumption (or (not x27948) (not x22804) x16413)
+:assumption (or x8205 (not x55))
+:assumption (or x22347 x26592)
+:assumption (or x500 x26897)
+:assumption (or x1230 x28604)
+:assumption (or x22007 (not x16741))
+:assumption (or (not x13571) x13458)
+:assumption (or (not x3817) (not x22787) (not x7983) x11150 (not x3818) x7046 x18076 (not x17245) (not x12463))
+:assumption (or (not x2642) x14148)
+:assumption (or (not x20416) (not x23842))
+:assumption (or (not x30732) (not x4426))
+:assumption (or (not x11028) x10947)
+:assumption (or (not x17611) x21605)
+:assumption (or x12433 x29510)
+:assumption (or x10465 x8242)
+:assumption (or (not x17882) x6331 x22848 x23510)
+:assumption (or (not x15089) (not x6542) x6149 x19368)
+:assumption (or (not x2994) x11371)
+:assumption (or x14937 x9807)
+:assumption (or x23244 x1486)
+:assumption (or x19864 (not x31390))
+:assumption (or (not x12223) x28468 (not x14841) x2414 x5059 x11113 x7585 x29307)
+:assumption (or x26181 (not x23829))
+:assumption (or (not x766) (not x23258))
+:assumption (or (not x27297) (not x26734))
+:assumption (or (not x20895) (not x3355))
+:assumption (or (not x2890) (not x26922))
+:assumption (or x29442 x11593 (not x15234))
+:assumption (or (not x2815) x29212)
+:assumption (or x10383 (not x6240))
+:assumption (or (not x16129) x19771)
+:assumption (or x10052 (not x18804) (not x26164) (not x252))
+:assumption (or (not x16019) x16620)
+:assumption (or x26781 (not x26121) (not x12573) x25229 x13796 x28529)
+:assumption (or x17633 x28898)
+:assumption (or x18267 (not x29959))
+:assumption (or x13214 (not x26997))
+:assumption (or x26260 (not x6908))
+:assumption (or x31077 x29442)
+:assumption (or (not x18002) (not x1794) x14814)
+:assumption (or x5848 x18121)
+:assumption (or x11158 x21805)
+:assumption (or (not x4957) x19999)
+:assumption (or (not x6444) (not x13723) (not x4491))
+:assumption (or (not x7327) (not x31793))
+:assumption (or x23217 x31310)
+:assumption (or (not x23097) (not x11633))
+:assumption (or (not x10857) x22623)
+:assumption (or x1125 x29176)
+:assumption (or (not x20019) x10725)
+:assumption (or x31593 x6512)
+:assumption (or x27240 x21215)
+:assumption (or x20999 (not x17652))
+:assumption (or (not x26768) x23771)
+:assumption (or (not x3390) x12433)
+:assumption (or (not x20416) x100)
+:assumption (or x26584 (not x30312))
+:assumption (or (not x1633) (not x15312))
+:assumption (or (not x1977) x30692)
+:assumption (or (not x12835) (not x27071))
+:assumption (or (not x21298) (not x24832))
+:assumption (or x11027 (not x5547))
+:assumption (or x1568 (not x4286))
+:assumption (or x3109 x3640)
+:assumption (or (not x8961) x22643 (not x22366) (not x18603))
+:assumption (or x5429 (not x1393) (not x6815))
+:assumption (or x14135 (not x21686))
+:assumption (or x12144 x14578 (not x16329) (not x14130))
+:assumption (or x3485 (not x11554))
+:assumption (or x5852 (not x19475))
+:assumption (or (not x29971) x19116)
+:assumption (or (not x16087) (not x17211) x1917)
+:assumption (or x2513 x21559)
+:assumption (or x14317 (not x6956))
+:assumption (or x11121 (not x22877))
+:assumption (or (not x8002) x28909)
+:assumption (or x26710 x21026)
+:assumption (or (not x31357) x9367)
+:assumption (or (not x7403) x28871)
+:assumption (or (not x4053) x24621)
+:assumption (or x27270 (not x56))
+:assumption (or x23571 x8763)
+:assumption (or x27749 x15621 (not x25991))
+:assumption (or x14766 x11570)
+:assumption (or (not x26905) x15352)
+:assumption (or x11666 x2962)
+:assumption (or x11366 x16183)
+:assumption (or x4208 (not x10853))
+:assumption (or x28761 (not x4685))
+:assumption (or (not x17295) (not x25725))
+:assumption (or (not x17318) x5341)
+:assumption (or (not x1950) (not x8352))
+:assumption (or x19960 x31705)
+:assumption (or x14034 x28194)
+:assumption (or (not x28784) (not x29155))
+:assumption (or x24266 (not x20526))
+:assumption (or (not x25664) x16117)
+:assumption (or (not x30744) x6988)
+:assumption (or (not x24375) (not x827))
+:assumption (or x12165 x16276)
+:assumption (or (not x4342) x5768)
+:assumption (or (not x3480) x5504)
+:assumption (or x15027 x21996)
+:assumption (or (not x21916) x2165)
+:assumption (or (not x480) (not x6088))
+:assumption (or (not x1692) x6415)
+:assumption (or (not x11630) (not x18857))
+:assumption (or x26725 (not x12414))
+:assumption (or x31658 (not x21432))
+:assumption (or (not x21439) (not x20529))
+:assumption (or (not x30439) x8619)
+:assumption (or x28029 x25416)
+:assumption (or (not x14526) (not x15594))
+:assumption (or (not x11112) x18469)
+:assumption (or (not x12951) x26608)
+:assumption (or (not x22047) (not x25535))
+:assumption (or (not x20651) (not x20772))
+:assumption (or x2384 (not x4878) x2251)
+:assumption (or (not x20990) x18904 x9476 x19588)
+:assumption (or (not x27562) (not x22045))
+:assumption (or x10309 (not x723))
+:assumption (or x26432 x1301)
+:assumption (or (not x551) (not x4603) (not x2912))
+:assumption (or (not x4382) (not x7175))
+:assumption (or (not x31207) (not x15874))
+:assumption (or x13542 (not x18500))
+:assumption (or x3792 (not x21298) (not x29640))
+:assumption (or (not x26265) (not x20607))
+:assumption (or (not x18375) x12895)
+:assumption (or (not x30756) (not x30332))
+:assumption (or x27986 x11772 x14249 x6510)
+:assumption (or (not x82) x11880)
+:assumption (or (not x7374) (not x2174) (not x15899) (not x15000) x29793 (not x29465) x31880 (not x15250))
+:assumption (or (not x10854) x9732)
+:assumption (or (not x3295) (not x27401))
+:assumption (or (not x17576) x18809)
+:assumption (or x22341 x21298)
+:assumption (or (not x9353) x2965)
+:assumption (or x14687 (not x14293) x9803 x16418 (not x20099) (not x821) (not x19013) (not x16173))
+:assumption (or x704 x16375)
+:assumption (or (not x1662) (not x29377))
+:assumption (or x27327 (not x26321))
+:assumption (or x2368 (not x20085))
+:assumption (or x12480 (not x13818))
+:assumption (or x31796 x14516)
+:assumption (or x26675 x27041)
+:assumption (or x27218 (not x3212))
+:assumption (or x5350 x31614)
+:assumption (or x21329 (not x30887))
+:assumption (or x19487 (not x25321))
+:assumption (or x820 x22811)
+:assumption (or x31071 (not x5528))
+:assumption (or x23773 (not x19090))
+:assumption (or (not x9788) x26022)
+:assumption (or (not x8988) (not x14042))
+:assumption (or (not x20774) x27128)
+:assumption (or x16976 x23525)
+:assumption (or (not x22809) x26191)
+:assumption (or x16817 x489)
+:assumption (or x9774 (not x1760))
+:assumption (or (not x17488) x8229)
+:assumption (or x20501 x21656 x29665 (not x28885) x8529 (not x8926) x31097)
+:assumption (or (not x14796) (not x18191))
+:assumption (or (not x7220) x14676)
+:assumption (or x10010 x21618 (not x11124) x13384 (not x9821) (not x587))
+:assumption (or x9315 (not x25520))
+:assumption (or (not x17867) (not x17297) x267 (not x9804))
+:assumption (or x9008 x2684)
+:assumption (or (not x13973) x12045 (not x23954))
+:assumption (or (not x11376) x13487)
+:assumption (or (not x29312) (not x14883))
+:assumption (or x31610 (not x9773))
+:assumption (or x22792 x11701)
+:assumption (or (not x2784) (not x10150))
+:assumption (or (not x20971) (not x22227))
+:assumption (or x13956 (not x29269) x10151)
+:assumption (or (not x10361) x15263)
+:assumption (or x15887 (not x27670))
+:assumption (or x13048 (not x11330))
+:assumption (or (not x25397) x2500)
+:assumption (or (not x8487) x29302)
+:assumption (or (not x28339) x20058)
+:assumption (or x17662 x10126)
+:assumption (or x7931 x9989)
+:assumption (or (not x6838) x31637 (not x10970) x26561)
+:assumption (or (not x6351) (not x25321))
+:assumption (or x2886 x28118)
+:assumption (or x31427 x29016)
+:assumption (or (not x21209) (not x23399))
+:assumption (or (not x21272) x21815)
+:assumption (or (not x10759) x22570 (not x19123) x23380 x2187)
+:assumption (or x9531 x7217)
+:assumption (or (not x192) x26883)
+:assumption (or x20308 x30766)
+:assumption (or x12684 (not x14334))
+:assumption (or (not x22573) x14435)
+:assumption (or x23851 x27011)
+:assumption (or x9567 (not x12974))
+:assumption (or x27725 (not x23161))
+:assumption (or (not x7341) (not x14861) (not x607) (not x19802) (not x11978) (not x22676))
+:assumption (or (not x12549) x18077)
+:assumption (or (not x3354) (not x13554))
+:assumption (or (not x16721) x10594)
+:assumption (or (not x29312) x5189 (not x24756))
+:assumption (or (not x27111) (not x4504) (not x276))
+:assumption (or x29780 (not x13284))
+:assumption (or x13378 (not x31063))
+:assumption (or x8069 (not x31024) (not x5814))
+:assumption (or (not x27883) (not x31870))
+:assumption (or x20244 x16652)
+:assumption (or (not x2278) x7200 x15433)
+:assumption (or x17792 x5025)
+:assumption (or x31710 (not x10587))
+:assumption (or (not x8878) x27511)
+:assumption (or (not x12851) x9504)
+:assumption (or x17169 x30674)
+:assumption (or (not x13914) (not x13749))
+:assumption (or (not x25689) (not x24045))
+:assumption (or x796 x11844)
+:assumption (or x17577 (not x20443))
+:assumption (or x9696 x22303)
+:assumption (or (not x16084) x28334)
+:assumption (or (not x8586) x24556 (not x30992) (not x1556))
+:assumption (or x14852 (not x14387))
+:assumption (or x12139 (not x15452))
+:assumption (or (not x17311) (not x14344))
+:assumption (or (not x31005) x10243)
+:assumption (or x14591 x29160 (not x12311) (not x8032) x7845 (not x20559))
+:assumption (or x22510 x29637)
+:assumption (or x8556 x15203)
+:assumption (or (not x25639) (not x17826))
+:assumption (or x865 x28344 x26646 (not x3698) x8170 x6671)
+:assumption (or (not x23208) (not x31364))
+:assumption (or (not x24295) (not x4732))
+:assumption (or x726 (not x20199))
+:assumption (or x189 x28519)
+:assumption (or (not x5382) x12303)
+:assumption (or x11682 x15251)
+:assumption (or x20205 x15497)
+:assumption (or (not x462) (not x12116))
+:assumption (or x29503 x14682)
+:assumption (or x19711 x20203)
+:assumption (or x5617 x10193)
+:assumption (or x9265 (not x24980))
+:assumption (or (not x1676) x8524)
+:assumption (or x17515 (not x12749))
+:assumption (or x27889 x27620)
+:assumption (or (not x25659) (not x25675) (not x27242))
+:assumption (or (not x10724) (not x1383))
+:assumption (or (not x22013) x1559)
+:assumption (or (not x3331) x15018)
+:assumption (or x7804 (not x25483))
+:assumption (or (not x19853) (not x16741) (not x2133) (not x22722))
+:assumption (or (not x21270) (not x8658))
+:assumption (or (not x16063) x1726 x13082 (not x107) x19063)
+:assumption (or x26019 x4401)
+:assumption (or (not x2503) (not x11127))
+:assumption (or (not x19109) (not x22542))
+:assumption (or (not x16008) (not x16748))
+:assumption (or x13434 x10327)
+:assumption (or (not x1964) x9625)
+:assumption (or x5528 x4429)
+:assumption (or x3494 x16602)
+:assumption (or x16359 x4762)
+:assumption (or x11942 (not x26978))
+:assumption (or (not x21958) x2311)
+:assumption (or (not x22224) (not x10497))
+:assumption (or x16025 (not x12588) x8428)
+:assumption (or x28759 (not x28512))
+:assumption (or (not x25608) (not x14990))
+:assumption (or (not x19056) x31310)
+:assumption (or x28937 x5512)
+:assumption (or (not x24019) x21039)
+:assumption (or x1393 (not x3563) (not x3858))
+:assumption (or x7246 x19312)
+:assumption (or (not x24552) (not x11964))
+:assumption (or (not x7486) (not x17118))
+:assumption (or (not x29359) (not x13692))
+:assumption (or x14897 x13663)
+:assumption (or (not x29908) x16417)
+:assumption (or x7835 x12496)
+:assumption (or (not x4779) x31015)
+:assumption (or x27751 (not x15414))
+:assumption (or x15530 x10171)
+:assumption (or (not x8261) (not x24721))
+:assumption (or (not x7596) (not x22661))
+:assumption (or x15905 (not x14652))
+:assumption (or (not x8924) x8002 (not x13494))
+:assumption (or (not x1460) (not x27473) (not x30909) x29819)
+:assumption (or (not x9147) x305 x2304 (not x14206))
+:assumption (or (not x1829) (not x5528) (not x18531) (not x15263) (not x29445) x30568)
+:assumption (or x1173 x13511)
+:assumption (or x21653 (not x28339))
+:assumption (or x6823 x15945)
+:assumption (or (not x22618) x29795 (not x8602))
+:assumption (or (not x30751) x5228)
+:assumption (or x1172 (not x26808))
+:assumption (or (not x20854) x13956)
+:assumption (or (not x9734) x29103)
+:assumption (or (not x27452) (not x16879))
+:assumption (or x30734 x17857)
+:assumption (or (not x29646) x14641)
+:assumption (or (not x9481) (not x12870) x6127 x29429 (not x16977) x16962)
+:assumption (or (not x2389) x31469)
+:assumption (or (not x18686) x20042)
+:assumption (or x1397 (not x24534))
+:assumption (or (not x9771) (not x4480))
+:assumption (or (not x6864) (not x24768))
+:assumption (or (not x6502) (not x24129))
+:assumption (or (not x14696) x25526)
+:assumption (or (not x18571) x20167)
+:assumption (or x29332 x23871)
+:assumption (or (not x13936) x21879)
+:assumption (or (not x22567) x10597)
+:assumption (or x9694 (not x26879) (not x11923) x14648)
+:assumption (or x12394 x9124)
+:assumption (or (not x6789) x6514)
+:assumption (or x19289 (not x19337))
+:assumption (or (not x927) x21594)
+:assumption (or (not x16072) (not x18095) (not x16023) x14281 (not x18628))
+:assumption (or x6059 x2814)
+:assumption (or (not x12177) x20549)
+:assumption (or x27423 x20675)
+:assumption (or x26585 (not x8602))
+:assumption (or x22154 x29027 x30901 (not x13956))
+:assumption (or x31126 x23067)
+:assumption (or (not x20042) x15635 (not x9008) x27359 (not x5528))
+:assumption (or (not x28715) (not x25075))
+:assumption (or x18556 (not x18476))
+:assumption (or x6391 x8532)
+:assumption (or x26380 x10513)
+:assumption (or (not x10197) x24471)
+:assumption (or (not x25659) x27136 x19845)
+:assumption (or x1294 x11711)
+:assumption (or (not x7071) (not x3153))
+:assumption (or (not x3344) x12174)
+:assumption (or (not x23820) x5217)
+:assumption (or (not x24363) x17182)
+:assumption (or x23545 (not x12729))
+:assumption (or (not x30124) x22543)
+:assumption (or (not x8927) x25158)
+:assumption (or x16854 x11519)
+:assumption (or x6969 x9027 x9354 (not x14667))
+:assumption (or x8532 (not x30497))
+:assumption (or x10445 (not x24792) (not x19618))
+:assumption (or x29266 (not x13829))
+:assumption (or x519 (not x13487) x8098 x2334)
+:assumption (or x24109 (not x14120) x19619 (not x23403) (not x29163))
+:assumption (or (not x20755) x3878 (not x14380) x12870)
+:assumption (or (not x4450) x20491)
+:assumption (or x21906 x23136)
+:assumption (or (not x21295) x24036)
+:assumption (or (not x21407) (not x31581))
+:assumption (or (not x7940) (not x24257) x31617)
+:assumption (or x26194 (not x27495))
+:assumption (or x13956 (not x10217))
+:assumption (or x24364 (not x16165))
+:assumption (or (not x6840) x23244)
+:assumption (or (not x6600) x7835)
+:assumption (or x9944 (not x3486))
+:assumption (or (not x11773) x7113)
+:assumption (or (not x23509) x10909 (not x21815) (not x4983) x14525 (not x480) (not x16510))
+:assumption (or x201 x3011 (not x21114))
+:assumption (or x357 (not x31052))
+:assumption (or x27127 x23721)
+:assumption (or (not x31855) (not x11981))
+:assumption (or (not x17299) (not x6382))
+:assumption (or x29604 (not x9624))
+:assumption (or x29026 x2392)
+:assumption (or (not x5274) (not x23070))
+:assumption (or (not x3636) (not x4204))
+:assumption (or (not x5526) x6669)
+:assumption (or (not x4623) x8236)
+:assumption (or x19664 x11937)
+:assumption (or (not x10448) x9961)
+:assumption (or (not x1078) (not x170))
+:assumption (or x7859 (not x20345))
+:assumption (or (not x8757) x4420 (not x15585) x8002)
+:assumption (or (not x6552) x13842)
+:assumption (or x12578 x15705)
+:assumption (or x19562 (not x25761))
+:assumption (or x15327 (not x22036))
+:assumption (or x7275 x15102)
+:assumption (or (not x25602) x19529)
+:assumption (or x7815 x17021 x24818 (not x18886) (not x19303))
+:assumption (or (not x17452) x28006)
+:assumption (or (not x1621) (not x15506))
+:assumption (or (not x22706) (not x31127))
+:assumption (or (not x23012) x31561)
+:assumption (or x20550 (not x18859) (not x27208) (not x9930) x3001)
+:assumption (or x15338 x26756)
+:assumption (or (not x9015) x9008)
+:assumption (or x26103 (not x31829))
+:assumption (or (not x12578) x3443)
+:assumption (or (not x19) (not x359))
+:assumption (or (not x26149) (not x24945))
+:assumption (or x945 (not x21474))
+:assumption (or (not x183) (not x29853))
+:assumption (or (not x5924) x31589)
+:assumption (or x25673 x27343 (not x26124) (not x3621) x13861 x17648 x1393 (not x25416))
+:assumption (or (not x11444) x10068)
+:assumption (or (not x8134) x30235)
+:assumption (or x10868 (not x31099))
+:assumption (or x8602 x6277)
+:assumption (or x12471 (not x25788))
+:assumption (or (not x13988) (not x30555))
+:assumption (or x2831 x4671)
+:assumption (or x18032 x19089)
+:assumption (or x19428 (not x6819))
+:assumption (or x26681 x26228)
+:assumption (or x31913 x24628 (not x11464) x9249 (not x30475))
+:assumption (or x24504 x8755)
+:assumption (or (not x1575) x3141)
+:assumption (or x20291 (not x21059))
+:assumption (or x12899 (not x18574))
+:assumption (or x24161 (not x23963))
+:assumption (or x1832 (not x23666))
+:assumption (or x24951 (not x28499))
+:assumption (or x14591 x15795 x9453 (not x7423))
+:assumption (or x9717 x17779)
+:assumption (or (not x3001) x19966)
+:assumption (or x12260 (not x1462))
+:assumption (or (not x30797) x16124)
+:assumption (or (not x30477) (not x14455) (not x22851))
+:assumption (or x5397 x15303)
+:assumption (or x31755 x4378)
+:assumption (or x15891 x6951)
+:assumption (or x406 (not x15408))
+:assumption (or (not x13108) (not x16322))
+:assumption (or x26818 x16083)
+:assumption (or x19573 x26103)
+:assumption (or x18209 (not x25613))
+:assumption (or (not x30772) x7859 (not x23606) x31132 x16177)
+:assumption (or x4844 x24523)
+:assumption (or (not x7349) x24435 x16150 x7792)
+:assumption (or x14839 (not x11892) x27432)
+:assumption (or x13840 (not x11917))
+:assumption (or (not x31121) (not x12770))
+:assumption (or (not x5483) x19754)
+:assumption (or x21202 (not x24573))
+:assumption (or (not x11352) x10788)
+:assumption (or x21933 x9008)
+:assumption (or (not x4488) (not x12110))
+:assumption (or x24113 (not x9703))
+:assumption (or (not x29489) x2329 (not x13956))
+:assumption (or (not x29488) x21013)
+:assumption (or (not x12279) x11217)
+:assumption (or x6374 (not x12454) (not x964) (not x169))
+:assumption (or x22914 x16808)
+:assumption (or (not x20025) (not x28579))
+:assumption (or x7796 x30843)
+:assumption (or x8229 x18768)
+:assumption (or x23736 x6243)
+:assumption (or x30218 x6795)
+:assumption (or x31782 x24273)
+:assumption (or (not x1157) x16824)
+:assumption (or (not x12585) x21284)
+:assumption (or x9657 x4451 x22216 x25690)
+:assumption (or x18121 (not x351) x23872)
+:assumption (or (not x3749) x21953)
+:assumption (or x14595 (not x25946))
+:assumption (or x28320 x12741)
+:assumption (or (not x646) (not x29682))
+:assumption (or (not x29230) (not x26628) x30084 x14287 (not x30123))
+:assumption (or x9691 x9881)
+:assumption (or x19084 x25982)
+:assumption (or x21298 x24846)
+:assumption (or (not x20308) (not x30766))
+:assumption (or x22126 (not x6271))
+:assumption (or (not x9064) x13605)
+:assumption (or (not x18505) (not x23244))
+:assumption (or (not x12593) x20504 (not x19488) x14821 x13132 (not x25330) (not x14852))
+:assumption (or x7563 x24989)
+:assumption (or x8783 (not x25943))
+:assumption (or (not x4883) x16796)
+:assumption (or (not x9) (not x13230) (not x5025) x28890)
+:assumption (or (not x25955) x20363)
+:assumption (or x9412 (not x9093))
+:assumption (or x30957 x25842)
+:assumption (or (not x504) (not x19621))
+:assumption (or x28045 x8002)
+:assumption (or x10209 (not x2408) x17305 x31769 (not x16907) (not x25547) (not x5086) (not x28169) x7503)
+:assumption (or x7805 (not x9257))
+:assumption (or (not x474) (not x7834))
+:assumption (or x4685 (not x28761))
+:assumption (or (not x31102) x24471)
+:assumption (or x8478 (not x5954) x754 x26762)
+:assumption (or x8557 x13606)
+:assumption (or x16405 (not x16510))
+:assumption (or x29585 x20127)
+:assumption (or x26124 (not x7456))
+:assumption (or x19265 (not x15225))
+:assumption (or (not x22115) x16757)
+:assumption (or (not x12351) (not x23995))
+:assumption (or x11771 x17057)
+:assumption (or (not x20240) (not x12045))
+:assumption (or (not x3281) x14728)
+:assumption (or x24555 x18396)
+:assumption (or x18300 (not x13829))
+:assumption (or (not x26426) x918)
+:assumption (or (not x16190) x23067)
+:assumption (or (not x2345) (not x31311))
+:assumption (or x31777 (not x4885) (not x12578))
+:assumption (or x4501 (not x6336))
+:assumption (or x2475 x17177)
+:assumption (or (not x1568) x15362)
+:assumption (or (not x11017) x25114)
+:assumption (or x28392 (not x27533))
+:assumption (or x4587 x6133)
+:assumption (or (not x2399) x19839)
+:assumption (or x7734 (not x31089))
+:assumption (or x10503 (not x16646))
+:assumption (or (not x23529) x30271)
+:assumption (or (not x9901) (not x7517) x14593 x3958 (not x21459))
+:assumption (or (not x12105) x23313)
+:assumption (or (not x4780) (not x17420))
+:assumption (or x2631 (not x16385))
+:assumption (or (not x19501) x17348)
+:assumption (or x18472 x6211 x11434 x9253)
+:assumption (or x17398 x31263 (not x8519) x29095)
+:assumption (or x12421 (not x2005))
+:assumption (or x25048 (not x10808))
+:assumption (or x26780 x8919)
+:assumption (or x6836 (not x19501))
+:assumption (or (not x2500) x4471)
+:assumption (or x23019 (not x22371))
+:assumption (or (not x17483) (not x5759))
+:assumption (or x9008 (not x3054))
+:assumption (or (not x24973) x21242)
+:assumption (or x4829 (not x2455))
+:assumption (or (not x9833) x13021)
+:assumption (or x23298 (not x15384))
+:assumption (or (not x805) (not x4339))
+:assumption (or x1950 (not x27527))
+:assumption (or x12017 x2180)
+:assumption (or x9314 (not x29858))
+:assumption (or (not x21792) x15838)
+:assumption (or (not x29115) x17904)
+:assumption (or x10648 x1455)
+:assumption (or x2364 x22488)
+:assumption (or (not x12881) x16741)
+:assumption (or x1280 x7960)
+:assumption (or (not x8470) x28868 x30332 x27123 (not x6955) (not x23534) x29150 (not x21033) (not x7696))
+:assumption (or x17233 x12750 x8602)
+:assumption (or x9008 x14454)
+:assumption (or x20076 x31876 x17525 (not x20047))
+:assumption (or x12923 x27597 (not x1367) x16498)
+:assumption (or (not x1668) (not x29441))
+:assumption (or x13802 (not x21183))
+:assumption (or (not x19948) x28548)
+:assumption (or (not x14066) (not x10254))
+:assumption (or x28473 x13841)
+:assumption (or x2498 (not x22574) x30219)
+:assumption (or (not x14736) x25729)
+:assumption (or x17795 (not x6351))
+:assumption (or x4224 x15215)
+:assumption (or (not x24214) x10503 (not x25674))
+:assumption (or (not x17075) (not x1995) (not x3160) (not x3057))
+:assumption (or x2719 x17730)
+:assumption (or (not x20667) x26987)
+:assumption (or x27193 (not x3576))
+:assumption (or (not x4107) x681)
+:assumption (or (not x29086) (not x6398))
+:assumption (or (not x31689) x7472)
+:assumption (or x20291 (not x7680))
+:assumption (or (not x23206) x21162)
+:assumption (or x13423 (not x21298) x27940 x2844)
+:assumption (or x7040 x784)
+:assumption (or x8025 x31767)
+:assumption (or (not x14395) (not x5825))
+:assumption (or (not x19624) x10783)
+:assumption (or (not x10162) (not x31359))
+:assumption (or (not x29412) x15867)
+:assumption (or x1734 (not x8738) (not x9701) (not x6740) (not x30617) (not x17392) x15147)
+:assumption (or (not x31581) (not x15317))
+:assumption (or (not x29732) x5240 x3437)
+:assumption (or (not x21475) (not x204))
+:assumption (or x19998 (not x30085))
+:assumption (or (not x21137) x7542)
+:assumption (or x30048 x11533)
+:assumption (or (not x5222) (not x23925))
+:assumption (or x5025 (not x24456))
+:assumption (or (not x6967) (not x28850))
+:assumption (or x15829 (not x12365))
+:assumption (or (not x357) x30708)
+:assumption (or x17077 (not x9536))
+:assumption (or x11696 x23457)
+:assumption (or x27024 x24406)
+:assumption (or (not x648) x14744)
+:assumption (or x5032 x23244)
+:assumption (or x8439 x10768)
+:assumption (or x3442 x23784 (not x21803) x9921 (not x9152))
+:assumption (or (not x13306) (not x20750))
+:assumption (or x10804 (not x23459))
+:assumption (or (not x23244) x31757)
+:assumption (or (not x30406) (not x7335) x26354 x15839)
+:assumption (or (not x21209) x29028)
+:assumption (or x14208 x11656)
+:assumption (or (not x22495) x11530)
+:assumption (or (not x17226) x26638)
+:assumption (or (not x4838) (not x1179))
+:assumption (or (not x18701) (not x10445))
+:assumption (or x27019 x24582)
+:assumption (or x17611 (not x9968))
+:assumption (or (not x14825) (not x8002))
+:assumption (or x31086 x21235)
+:assumption (or (not x5028) x5549)
+:assumption (or x5297 (not x11889))
+:assumption (or x5777 (not x19228))
+:assumption (or x19855 x9956)
+:assumption (or (not x4207) x27586)
+:assumption (or (not x10884) (not x17619))
+:assumption (or x16314 (not x20123))
+:assumption (or (not x24471) (not x7859) x20345)
+:assumption (or (not x16304) (not x26088))
+:assumption (or (not x5666) x24595)
+:assumption (or x4927 x28609)
+:assumption (or x24330 x11428 x25402 (not x2519) x18595 (not x12205) x31385 x16656)
+:assumption (or x15246 (not x17156))
+:assumption (or x25366 (not x11282) (not x4843))
+:assumption (or (not x23048) x10480 (not x1206) x21778)
+:assumption (or (not x23544) x19558)
+:assumption (or x19071 (not x19954))
+:assumption (or (not x2458) x27072)
+:assumption (or (not x23569) (not x14853))
+:assumption (or (not x21374) (not x6676) x13438 x17356 x17447)
+:assumption (or x14733 x16091)
+:assumption (or x3577 x20097)
+:assumption (or (not x22499) x6146)
+:assumption (or x827 (not x28204))
+:assumption (or (not x12990) (not x8002) x1691)
+:assumption (or x29473 x27750)
+:assumption (or x1393 (not x6169) x23315 (not x9180) x23601 x23884 (not x6831) (not x7422))
+:assumption (or x20047 (not x20076))
+:assumption (or (not x3111) (not x19805))
+:assumption (or x28682 (not x26072))
+:assumption (or (not x16680) (not x1064))
+:assumption (or (not x8002) x23084)
+:assumption (or x13976 x14939)
+:assumption (or x13397 x27450)
+:assumption (or (not x29027) x26478)
+:assumption (or (not x3124) x10909)
+:assumption (or x12536 (not x12162) (not x19214) x28415)
+:assumption (or (not x14215) (not x29914))
+:assumption (or (not x4655) (not x16129))
+:assumption (or x13488 (not x5372))
+:assumption (or x15900 (not x30535))
+:assumption (or (not x21815) (not x21079) x6724)
+:assumption (or x5844 x5558)
+:assumption (or (not x20482) x19236 (not x10750) x21432)
+:assumption (or x15566 x16306 x4259 x2056 (not x28018))
+:assumption (or (not x11689) (not x7233))
+:assumption (or (not x9255) (not x27379))
+:assumption (or (not x13383) (not x23657) (not x20466) x22699 (not x31858))
+:assumption (or (not x29772) x3429 (not x18628) (not x18095) x14281)
+:assumption (or x243 x15053)
+:assumption (or (not x15107) (not x10283))
+:assumption (or (not x17255) x12866)
+:assumption (or (not x4779) x30914)
+:assumption (or x19133 x11304)
+:assumption (or x12268 x3051)
+:assumption (or x28679 (not x2459))
+:assumption (or (not x1393) (not x11761))
+:assumption (or (not x4019) x10883 x25606)
+:assumption (or x5550 x10418)
+:assumption (or x22388 x13239 x6361 x27111)
+:assumption (or x9465 x2267)
+:assumption (or (not x18619) x7200 (not x567) (not x17571))
+:assumption (or (not x17860) (not x1808))
+:assumption (or x26743 x10222)
+:assumption (or x29661 x31632)
+:assumption (or x27752 x6663)
+:assumption (or x23795 x23244 (not x5063))
+:assumption (or x29692 x30936)
+:assumption (or x31498 (not x13239))
+:assumption (or x711 x17319 (not x23510))
+:assumption (or x7674 (not x2359))
+:assumption (or (not x10632) (not x31075))
+:assumption (or x23739 (not x29507))
+:assumption (or x14591 (not x7209))
+:assumption (or x25652 (not x19539))
+:assumption (or x27436 x23244 x7442)
+:assumption (or x29649 (not x10568) x29771)
+:assumption (or (not x28504) x631)
+:assumption (or x3107 (not x11864))
+:assumption (or (not x1496) x30194)
+:assumption (or (not x3491) x29375)
+:assumption (or (not x3001) x9351 x1720)
+:assumption (or (not x6794) (not x15401))
+:assumption (or x18614 x21955 (not x27862))
+:assumption (or x8002 x26152)
+:assumption (or (not x29147) x22295)
+:assumption (or (not x3631) (not x6701))
+:assumption (or x11634 (not x10060) x21014 (not x30123))
+:assumption (or (not x12694) x7057)
+:assumption (or x17308 (not x6194))
+:assumption (or x30025 (not x9413))
+:assumption (or (not x19773) (not x13576) x6900 x9531)
+:assumption (or (not x6951) (not x25509))
+:assumption (or x12891 (not x18512))
+:assumption (or x17946 x8002)
+:assumption (or x24162 x5023)
+:assumption (or (not x19785) (not x25942))
+:assumption (or (not x28313) x18985)
+:assumption (or x2677 x3218)
+:assumption (or (not x24095) (not x3569))
+:assumption (or x10037 x18592)
+:assumption (or x27895 (not x20401))
+:assumption (or (not x21298) (not x13706) (not x17203))
+:assumption (or (not x30976) (not x3685))
+:assumption (or (not x30599) (not x20583))
+:assumption (or x16080 (not x24732))
+:assumption (or (not x18220) x10285)
+:assumption (or x22655 x27267 (not x13708) (not x3857) (not x22855))
+:assumption (or x20757 (not x9531))
+:assumption (or x30275 (not x22981) (not x27843) (not x25035))
+:assumption (or x6594 x10984)
+:assumption (or x2916 (not x29070))
+:assumption (or (not x23801) (not x20365) (not x4026))
+:assumption (or x827 (not x29805))
+:assumption (or (not x7675) (not x21032))
+:assumption (or x28487 x5957)
+:assumption (or x9509 x10714)
+:assumption (or x5528 x15168)
+:assumption (or x1433 (not x1110))
+:assumption (or x1798 (not x24031))
+:assumption (or x17428 (not x4609))
+:assumption (or (not x19186) (not x12055))
+:assumption (or (not x4242) (not x11737))
+:assumption (or (not x16447) x5375)
+:assumption (or (not x14165) (not x25616))
+:assumption (or x14435 x5517)
+:assumption (or (not x15196) (not x8307) x5528)
+:assumption (or (not x30592) x10955)
+:assumption (or (not x15101) (not x21129))
+:assumption (or x12880 x5497 (not x20942))
+:assumption (or x3074 (not x2210))
+:assumption (or x30343 x30941)
+:assumption (or (not x9622) (not x24758))
+:assumption (or x202 x2527)
+:assumption (or (not x24120) (not x25735))
+:assumption (or x28242 (not x17645))
+:assumption (or x31277 x2701 x25315)
+:assumption (or x9113 x26061)
+:assumption (or x30219 x24932 (not x26101))
+:assumption (or (not x25713) (not x30809))
+:assumption (or x29980 x1393 x2940)
+:assumption (or (not x29486) x31651 x8770 (not x16821))
+:assumption (or x16541 (not x21793) x1393)
+:assumption (or x22531 (not x15122))
+:assumption (or (not x2975) x29305)
+:assumption (or (not x24171) (not x15775) x16316 (not x21574))
+:assumption (or x10558 x19321)
+:assumption (or x28868 (not x19683))
+:assumption (or (not x6017) x24612)
+:assumption (or (not x23463) (not x9566))
+:assumption (or x24267 x21612)
+:assumption (or x21298 x24681)
+:assumption (or x5622 x6969 x2882)
+:assumption (or (not x21147) x23244)
+:assumption (or x16174 x827)
+:assumption (or (not x24676) x27425 (not x26953) (not x2418) x21948 x6548)
+:assumption (or (not x7799) x25221)
+:assumption (or x17560 x14554 (not x24506) x2075 x7394 x29312)
+:assumption (or (not x8404) (not x28739))
+:assumption (or x21279 x9645)
+:assumption (or x11868 x16741)
+:assumption (or (not x17016) x30540)
+:assumption (or x13548 (not x25087))
+:assumption (or x6399 (not x28682))
+:assumption (or (not x7468) (not x1521) x1618 (not x6287))
+:assumption (or x17986 x15705)
+:assumption (or x14188 x23244)
+:assumption (or (not x20089) x8616)
+:assumption (or x28672 x26839)
+:assumption (or x6973 (not x9723))
+:assumption (or x1043 x6656)
+:assumption (or (not x27772) x3470)
+:assumption (or (not x28370) (not x3233))
+:assumption (or (not x15267) x5996)
+:assumption (or (not x27155) x14266)
+:assumption (or (not x1230) (not x30897))
+:assumption (or x12279 (not x27351) (not x18055) x27670 x18527)
+:assumption (or x12994 (not x25749))
+:assumption (or x8724 (not x7211))
+:assumption (or (not x8045) (not x13576))
+:assumption (or (not x29247) (not x24836))
+:assumption (or (not x15145) x26075)
+:assumption (or x30973 (not x11536))
+:assumption (or x27260 (not x18254))
+:assumption (or (not x16969) x28821)
+:assumption (or x12261 (not x25841))
+:assumption (or x9441 (not x7436))
+:assumption (or x17487 x7318)
+:assumption (or x22806 x1535)
+:assumption (or (not x15084) x822)
+:assumption (or (not x981) x13093)
+:assumption (or x4688 x10936)
+:assumption (or x14324 x21899 x12631 x4174 x16741)
+:assumption (or (not x4432) (not x31103))
+:assumption (or x25348 x14839)
+:assumption (or (not x23713) x30683)
+:assumption (or (not x19428) x10021)
+:assumption (or x25659 (not x11485))
+:assumption (or x21153 (not x27834))
+:assumption (or x20926 x9008 x22468)
+:assumption (or x18482 (not x29744))
+:assumption (or (not x19087) x23263)
+:assumption (or x17008 (not x2372))
+:assumption (or x3861 x23554)
+:assumption (or (not x10853) x8602)
+:assumption (or (not x26498) x14253)
+:assumption (or x9818 (not x8128) (not x30954))
+:assumption (or (not x11024) x7812)
+:assumption (or x22628 x29599)
+:assumption (or x23479 (not x31899) (not x4803) (not x31651))
+:assumption (or x27971 (not x3824))
+:assumption (or (not x15315) (not x20444))
+:assumption (or (not x11743) x28812)
+:assumption (or x24504 (not x1379))
+:assumption (or (not x11353) x6081)
+:assumption (or x11223 (not x10064) x11460)
+:assumption (or (not x10705) (not x17996))
+:assumption (or (not x9008) x29334)
+:assumption (or (not x1259) x2861)
+:assumption (or (not x20460) (not x3741))
+:assumption (or (not x12994) x15903 (not x31086) x26624)
+:assumption (or (not x20511) (not x25395) x12669 (not x26608) x25993 (not x9273) (not x31351) x12951 (not x25327))
+:assumption (or x21966 (not x2692))
+:assumption (or (not x7488) x6307)
+:assumption (or (not x23475) x10950)
+:assumption (or (not x3930) x13280 x27333 (not x10156) x9370 (not x23244))
+:assumption (or (not x20087) (not x22583) (not x16510) x25034 x12242 (not x21815) (not x291))
+:assumption (or (not x15825) (not x29905))
+:assumption (or (not x13581) (not x20912))
+:assumption (or (not x13641) x16376)
+:assumption (or (not x5609) x11647)
+:assumption (or x27193 x7708)
+:assumption (or (not x25541) (not x9008) x7449)
+:assumption (or (not x6966) x28636)
+:assumption (or x25659 x30986 (not x193))
+:assumption (or x22531 x24794)
+:assumption (or (not x23244) (not x25504))
+:assumption (or x28316 (not x18525))
+:assumption (or x3134 (not x490))
+:assumption (or x17813 x24108)
+:assumption (or x25405 x29534)
+:assumption (or x9138 x5125)
+:assumption (or x8602 x19642 (not x11187))
+:assumption (or x20192 (not x31808))
+:assumption (or (not x20460) (not x22920))
+:assumption (or x11421 (not x24995))
+:assumption (or x9837 x28006)
+:assumption (or (not x23244) x18881)
+:assumption (or (not x3849) x23223)
+:assumption (or (not x28128) (not x3494))
+:assumption (or x16383 x21695)
+:assumption (or (not x6856) x20193 (not x23788))
+:assumption (or x23261 (not x8442) x15843 (not x7835) (not x21158))
+:assumption (or (not x2287) x9611)
+:assumption (or x29798 (not x24143))
+:assumption (or (not x26168) x26995)
+:assumption (or x6297 x28455)
+:assumption (or x13947 x8001)
+:assumption (or (not x146) x30386)
+:assumption (or (not x8002) x17546)
+:assumption (or x26644 (not x3278))
+:assumption (or x14991 x5528)
+:assumption (or x582 (not x16837))
+:assumption (or (not x16936) x21788)
+:assumption (or (not x10850) (not x23827))
+:assumption (or x27633 x15033)
+:assumption (or (not x10790) x16650)
+:assumption (or (not x2159) x1580)
+:assumption (or (not x24075) (not x627))
+:assumption (or (not x27706) (not x15491))
+:assumption (or (not x10266) x22329)
+:assumption (or (not x12212) (not x3295))
+:assumption (or (not x26994) x22981)
+:assumption (or x23834 (not x1393))
+:assumption (or x15792 (not x6043) x25659)
+:assumption (or (not x30228) x7670)
+:assumption (or (not x8746) (not x8588))
+:assumption (or (not x10640) (not x22295))
+:assumption (or (not x20550) x29027 x27476)
+:assumption (or (not x23029) x24722)
+:assumption (or x502 (not x5427) x13215 (not x7616) x13661)
+:assumption (or (not x22055) (not x26089) (not x11757) (not x6604))
+:assumption (or (not x4497) x19765)
+:assumption (or x404 x10490)
+:assumption (or (not x14360) x17133)
+:assumption (or (not x2468) (not x19006))
+:assumption (or x23995 x12790)
+:assumption (or x27887 (not x9461))
+:assumption (or (not x31319) (not x11059))
+:assumption (or (not x6656) (not x1043))
+:assumption (or (not x25599) x5801)
+:assumption (or x30029 x1485)
+:assumption (or x18084 (not x15155))
+:assumption (or (not x6120) x13245)
+:assumption (or x31724 x3490 x14963 (not x30949))
+:assumption (or x10205 x19213)
+:assumption (or x26885 (not x20828))
+:assumption (or (not x26107) x7399)
+:assumption (or x5765 x6657)
+:assumption (or (not x5115) (not x19373))
+:assumption (or (not x6434) x8985)
+:assumption (or x19486 (not x2315))
+:assumption (or (not x10909) x25244)
+:assumption (or x3976 x3727)
+:assumption (or x6068 (not x21854) (not x16025))
+:assumption (or (not x29398) (not x19115))
+:assumption (or x11033 x16555)
+:assumption (or (not x26598) (not x2658))
+:assumption (or (not x11213) (not x9892))
+:assumption (or x135 (not x20004) (not x20872))
+:assumption (or x10366 (not x12232))
+:assumption (or (not x20812) (not x30096))
+:assumption (or (not x6969) x27845)
+:assumption (or (not x12669) x5527 (not x31863) x28283 x12774 x22046 (not x30471))
+:assumption (or (not x10898) x5730)
+:assumption (or x20550 x28782)
+:assumption (or (not x19237) x31129)
+:assumption (or (not x1546) (not x14107) x12325 (not x8091) x202 (not x2093))
+:assumption (or (not x14781) (not x2169))
+:assumption (or (not x29216) x5225)
+:assumption (or x17864 x28531)
+:assumption (or (not x11506) x20764 x22901 x18441)
+:assumption (or (not x16754) (not x18734))
+:assumption (or x22443 x14209)
+:assumption (or x11207 x15334)
+:assumption (or x5536 (not x30159))
+:assumption (or x2280 x1675)
+:assumption (or (not x7238) (not x22961))
+:assumption (or x25502 x27445)
+:assumption (or x3385 x3371)
+:assumption (or (not x29711) (not x15799))
+:assumption (or x20393 x12251)
+:assumption (or (not x11792) (not x562))
+:assumption (or x3453 (not x2283))
+:assumption (or x21220 x26049 x827)
+:assumption (or x20960 x24642)
+:assumption (or (not x11461) x13130 (not x4310) x21667 (not x20325))
+:assumption (or x10033 (not x18628))
+:assumption (or x29586 x14380)
+:assumption (or x26220 x29100 (not x29613))
+:assumption (or (not x12832) x14326)
+:assumption (or (not x31724) (not x3490))
+:assumption (or x11587 (not x9153))
+:assumption (or (not x8143) x17157)
+:assumption (or x13674 x424)
+:assumption (or x7581 x26360)
+:assumption (or x25628 (not x13495))
+:assumption (or x21447 (not x18541))
+:assumption (or (not x23719) x12338)
+:assumption (or x30941 x3776)
+:assumption (or x10245 (not x9008) x9263)
+:assumption (or (not x28708) (not x1085))
+:assumption (or (not x13404) (not x31650))
+:assumption (or x9008 x1048)
+:assumption (or x1494 x15500 (not x11594) x66)
+:assumption (or x8868 (not x11995))
+:assumption (or (not x6763) x12676)
+:assumption (or (not x24108) (not x13991))
+:assumption (or x25212 (not x17439))
+:assumption (or x22737 (not x23826))
+:assumption (or (not x10851) x18418)
+:assumption (or (not x19324) x16820)
+:assumption (or (not x4729) x13956)
+:assumption (or (not x2010) x19704)
+:assumption (or (not x18207) (not x12716))
+:assumption (or (not x14451) (not x15966) x20050 (not x20893) (not x20492))
+:assumption (or (not x31653) x3025)
+:assumption (or (not x22301) (not x26730))
+:assumption (or x7888 (not x4451) x12199 x13233 x15537)
+:assumption (or (not x25911) x8109 x20751 x12647)
+:assumption (or (not x13278) x23268)
+:assumption (or (not x31622) x27241)
+:assumption (or x8658 x14264 (not x9081) x14117)
+:assumption (or x13412 x21676)
+:assumption (or x959 (not x12041))
+:assumption (or x9890 (not x26724))
+:assumption (or x25434 (not x5629))
+:assumption (or x30617 x6740)
+:assumption (or (not x30904) x19444)
+:assumption (or x2553 x15749)
+:assumption (or x5433 x14916)
+:assumption (or (not x31777) x7663)
+:assumption (or (not x22832) x3782)
+:assumption (or x26595 x8321)
+:assumption (or x18380 (not x26897) (not x23623) (not x7123) x26915 (not x29721))
+:assumption (or (not x27358) x5682)
+:assumption (or (not x15771) x2172)
+:assumption (or x6951 x31624)
+:assumption (or x25965 (not x16528) x15951 x1536 x8748)
+:assumption (or x3756 (not x1096) x4137 (not x4507) (not x10015) (not x10152))
+:assumption (or (not x2321) (not x13576))
+:assumption (or (not x6827) x10447)
+:assumption (or x710 x10789)
+:assumption (or x9398 x11364)
+:assumption (or x14855 (not x16374))
+:assumption (or (not x6149) x21418 (not x14783) x2318 x17938)
+:assumption (or x24256 (not x27451))
+:assumption (or x25514 (not x8927))
+:assumption (or x218 (not x31686))
+:assumption (or (not x24513) x1596 (not x4279))
+:assumption (or (not x120) (not x1589))
+:assumption (or (not x8002) x9227)
+:assumption (or x9798 x24514)
+:assumption (or x7534 (not x10419))
+:assumption (or (not x8297) x7936)
+:assumption (or x30160 (not x17424))
+:assumption (or (not x7471) x23529)
+:assumption (or x12524 x8698)
+:assumption (or (not x11494) (not x12921))
+:assumption (or x19296 x5803)
+:assumption (or (not x2994) x12106)
+:assumption (or (not x3207) x16341 x8175 x6732 x6984 (not x29587))
+:assumption (or (not x4867) x26260)
+:assumption (or (not x10129) (not x29962))
+:assumption (or (not x23425) (not x8002))
+:assumption (or x10576 x20866)
+:assumption (or (not x27586) x5171 x9008)
+:assumption (or (not x18765) x4438)
+:assumption (or x26947 x6475)
+:assumption (or x18484 x4865)
+:assumption (or x28910 (not x2487))
+:assumption (or x28712 x7747)
+:assumption (or x13948 x29228 (not x3195) (not x29204) (not x485))
+:assumption (or x18640 x12588)
+:assumption (or x125 x16011)
+:assumption (or x4309 x29418)
+:assumption (or x13118 x19062)
+:assumption (or (not x14367) (not x17317))
+:assumption (or (not x7542) x9225)
+:assumption (or (not x21349) (not x218) (not x10830))
+:assumption (or x7771 x25414)
+:assumption (or x31742 x26184)
+:assumption (or x10853 (not x4208) (not x8602))
+:assumption (or x19993 (not x6969))
+:assumption (or x4368 x12888)
+:assumption (or (not x29472) x13702 x9437 x11582 (not x12672) (not x8872) (not x25590) (not x28367))
+:assumption (or x29606 x20912 (not x18694) x13581)
+:assumption (or x23986 (not x13956) x18005)
+:assumption (or (not x24237) (not x16445))
+:assumption (or x14931 (not x30199) (not x31681))
+:assumption (or x23203 x23937)
+:assumption (or x8808 x21233)
+:assumption (or x8814 (not x30496) x10064 (not x27589) (not x15917) x873 (not x11241))
+:assumption (or (not x7001) x8795 x629 (not x22798) x11489 (not x14623))
+:assumption (or x11202 x25281)
+:assumption (or x2331 (not x28609))
+:assumption (or x28274 x18853)
+:assumption (or (not x21796) (not x31587) x17495)
+:assumption (or (not x8535) x11017)
+:assumption (or (not x20735) x12578 x6351 (not x17116) x11023)
+:assumption (or x10360 x19914 (not x20244) x18110)
+:assumption (or x6957 x5720)
+:assumption (or x3026 x7948)
+:assumption (or x5309 (not x15682))
+:assumption (or (not x14387) (not x8819) (not x111))
+:assumption (or (not x3781) x12816)
+:assumption (or (not x14591) (not x306))
+:assumption (or (not x10762) x18945)
+:assumption (or (not x3404) (not x21784))
+:assumption (or (not x3286) (not x5085) x16745)
+:assumption (or (not x13115) x4686)
+:assumption (or (not x13217) x23945)
+:assumption (or (not x29236) (not x25714))
+:assumption (or (not x11968) (not x28496))
+:assumption (or x10106 (not x4479))
+:assumption (or (not x31353) (not x5662))
+:assumption (or x9643 (not x8011))
+:assumption (or x30027 (not x29606))
+:assumption (or x20700 x5414)
+:assumption (or x4958 x15098 x24104)
+:assumption (or x11792 (not x8320) x6149 x28997)
+:assumption (or x27350 (not x5635))
+:assumption (or (not x3536) x7115)
+:assumption (or x4964 x1590)
+:assumption (or x13726 (not x1621))
+:assumption (or (not x14498) (not x8342))
+:assumption (or x9693 x27920)
+:assumption (or (not x11057) x22762)
+:assumption (or (not x5204) (not x24967) x26280)
+:assumption (or x13166 x20097)
+:assumption (or x1063 (not x6298))
+:assumption (or x11481 x169)
+:assumption (or x10658 (not x15424) x9583 (not x25236) (not x16184) x12414 (not x9854))
+:assumption (or x10545 (not x12912))
+:assumption (or x26485 (not x23526))
+:assumption (or x5243 x10686)
+:assumption (or (not x28390) x9890)
+:assumption (or x27072 x3370)
+:assumption (or x9008 (not x11972))
+:assumption (or x3499 x9792 x19406 (not x18772) x29082)
+:assumption (or (not x14638) (not x9467))
+:assumption (or x5528 x24095 x7012)
+:assumption (or x23320 (not x1229))
+:assumption (or x24627 x3372 x8658 x12668)
+:assumption (or x996 x17703)
+:assumption (or (not x773) x31924 x29269 (not x902) x16139 (not x2754))
+:assumption (or x28898 (not x1500))
+:assumption (or x9984 x23552)
+:assumption (or x10830 x218)
+:assumption (or x16752 (not x10949))
+:assumption (or x3037 x24189)
+:assumption (or (not x7725) (not x2832))
+:assumption (or x7499 x5469)
+:assumption (or x11866 x26910)
+:assumption (or x25677 (not x22167))
+:assumption (or (not x19501) (not x6622))
+:assumption (or x422 (not x13272))
+:assumption (or (not x22909) (not x17322))
+:assumption (or x17687 (not x853))
+:assumption (or x16247 x5366)
+:assumption (or (not x23229) x3255 x1393)
+:assumption (or (not x14904) x202)
+:assumption (or (not x17018) x30992)
+:assumption (or (not x8002) x29758)
+:assumption (or x17920 (not x19953) (not x26204) x2383 (not x26556))
+:assumption (or x8282 (not x25659))
+:assumption (or x19469 (not x14591))
+:assumption (or x14347 x13801)
+:assumption (or x3998 (not x27577))
+:assumption (or x21376 x21815)
+:assumption (or (not x22610) (not x12899))
+:assumption (or (not x23244) (not x21980))
+:assumption (or (not x240) x18254)
+:assumption (or x10323 x27578)
+:assumption (or (not x2451) (not x6095))
+:assumption (or x11529 (not x12597))
+:assumption (or x9008 x25954)
+:assumption (or x21418 x11792 (not x27702) (not x14783) x17938)
+:assumption (or (not x10546) x30921)
+:assumption (or (not x24892) x15380)
+:assumption (or (not x18859) x4042)
+:assumption (or x9804 (not x970))
+:assumption (or x13742 x23610)
+:assumption (or (not x7443) (not x11308) x14411)
+:assumption (or (not x21176) (not x246))
+:assumption (or (not x21226) x7187)
+:assumption (or (not x5097) (not x23680))
+:assumption (or (not x14609) (not x17930))
+:assumption (or x19464 x28453 x26874 (not x15497))
+:assumption (or (not x7602) (not x26514))
+:assumption (or (not x5028) (not x29442) x4805 (not x17860))
+:assumption (or (not x8125) x3317)
+:assumption (or x614 (not x30138))
+:assumption (or x2098 (not x23911))
+:assumption (or (not x16855) x827 x11175)
+:assumption (or (not x18830) x1230)
+:assumption (or x17027 (not x28797))
+:assumption (or x16083 (not x16304))
+:assumption (or (not x17170) (not x746))
+:assumption (or x26904 x24110)
+:assumption (or (not x22871) (not x21325))
+:assumption (or (not x7177) (not x20212))
+:assumption (or x25937 x3886 (not x12080) x3584 x2824)
+:assumption (or (not x17220) x8979)
+:assumption (or x4372 (not x10244) x24460 (not x5540) (not x17359))
+:assumption (or x21546 (not x10020))
+:assumption (or (not x3224) x16546)
+:assumption (or x13957 (not x12444))
+:assumption (or x11373 (not x21298))
+:assumption (or (not x4670) (not x6069))
+:assumption (or x27029 (not x17607))
+:assumption (or x20402 (not x22201))
+:assumption (or (not x11589) x13403)
+:assumption (or x31873 (not x23889))
+:assumption (or (not x25818) x8767)
+:assumption (or x31231 x19075)
+:assumption (or x4174 (not x21196) x17987 (not x12260))
+:assumption (or x31171 x1621)
+:assumption (or (not x31699) x2378)
+:assumption (or x12006 (not x9528))
+:assumption (or x19989 x31212)
+:assumption (or x13171 x17855)
+:assumption (or x3070 x19791 (not x2902) (not x30113))
+:assumption (or (not x11826) (not x25659) (not x29895))
+:assumption (or (not x5105) x26830 (not x6350) (not x25150) x13920)
+:assumption (or x21917 (not x2592))
+:assumption (or x11877 x6332 x16028 (not x18694))
+:assumption (or (not x27728) (not x29170))
+:assumption (or (not x4608) (not x28290) (not x10987))
+:assumption (or x16683 (not x5430) (not x27033) (not x3560))
+:assumption (or x24337 (not x27309))
+:assumption (or x18003 x1860 x29893)
+:assumption (or (not x23244) (not x12650) (not x27004) x746 (not x9806) x31411)
+:assumption (or (not x9880) x20897)
+:assumption (or x27186 x4503)
+:assumption (or (not x20189) (not x19221) x20885)
+:assumption (or (not x29343) x1005)
+:assumption (or x31233 (not x5082))
+:assumption (or (not x8826) (not x1177))
+:assumption (or x13302 (not x7424))
+:assumption (or x25366 x22939)
+:assumption (or (not x20500) x23471)
+:assumption (or (not x22565) x8215)
+:assumption (or (not x27458) (not x15504))
+:assumption (or (not x19831) x15583)
+:assumption (or x18615 x363)
+:assumption (or (not x27103) x25597)
+:assumption (or (not x10617) x8172)
+:assumption (or x25897 (not x10874))
+:assumption (or x20430 (not x7964))
+:assumption (or x20705 (not x23150))
+:assumption (or (not x8800) x9669)
+:assumption (or (not x18590) (not x29691))
+:assumption (or (not x18172) x14082)
+:assumption (or x28242 (not x30748))
+:assumption (or (not x30433) (not x22024))
+:assumption (or x12660 (not x22193))
+:assumption (or (not x30180) x4386)
+:assumption (or x21043 (not x23429))
+:assumption (or (not x29466) (not x31504))
+:assumption (or x8624 x8729)
+:assumption (or x1501 x30244)
+:assumption (or (not x11305) x17544)
+:assumption (or (not x31151) x23496)
+:assumption (or (not x4306) (not x24433))
+:assumption (or (not x17453) (not x14240))
+:assumption (or (not x19352) (not x9570))
+:assumption (or (not x24808) (not x13791))
+:assumption (or x31015 x13468 (not x25484) x10643 x16450)
+:assumption (or x30198 (not x27277))
+:assumption (or (not x16304) (not x15795) (not x14103) x15486)
+:assumption (or (not x762) x20996)
+:assumption (or (not x22829) (not x16605))
+:assumption (or x19992 x18090)
+:assumption (or (not x12345) (not x15572))
+:assumption (or x2663 (not x13126))
+:assumption (or (not x3707) (not x25484))
+:assumption (or (not x4835) x29847 (not x9460) (not x6836))
+:assumption (or (not x22197) (not x26617) (not x21298) (not x16738))
+:assumption (or (not x27629) x22055)
+:assumption (or (not x10064) (not x16607))
+:assumption (or (not x3409) (not x27114))
+:assumption (or (not x14558) (not x31797))
+:assumption (or x11261 x4078)
+:assumption (or x18630 (not x13375))
+:assumption (or (not x18077) x12549)
+:assumption (or x6729 (not x360))
+:assumption (or x26142 (not x25960))
+:assumption (or (not x24127) (not x19032))
+:assumption (or (not x21365) x6525)
+:assumption (or (not x31342) x10355)
+:assumption (or x30014 (not x3573))
+:assumption (or x16195 x3494)
+:assumption (or x27866 x27827)
+:assumption (or (not x14174) x218)
+:assumption (or (not x26578) x19366)
+:assumption (or x9403 (not x9298))
+:assumption (or (not x23958) (not x2968))
+:assumption (or x29983 x129)
+:assumption (or (not x14843) x1074)
+:assumption (or x21331 x8628)
+:assumption (or (not x28732) x20305)
+:assumption (or (not x2545) x15385)
+:assumption (or x23863 x1689)
+:assumption (or (not x14035) (not x15674))
+:assumption (or x8002 (not x29731))
+:assumption (or x22863 (not x30591))
+:assumption (or (not x6265) x3617)
+:assumption (or x17343 x23244 (not x6412))
+:assumption (or (not x25425) (not x16000))
+:assumption (or x8953 (not x18043))
+:assumption (or (not x5336) x21099)
+:assumption (or x14522 x24329)
+:assumption (or x22173 (not x7775))
+:assumption (or x9453 x15131)
+:assumption (or x21815 x10961)
+:assumption (or (not x6103) x17364 x28190 x560)
+:assumption (or x10554 x5798)
+:assumption (or x17692 x23689)
+:assumption (or x16897 x9018 x6119 x23323 x24495)
+:assumption (or (not x12369) x4049)
+:assumption (or (not x6856) x2965)
+:assumption (or x8002 (not x6847) (not x17477))
+:assumption (or x21298 (not x20313))
+:assumption (or (not x22849) (not x30725))
+:assumption (or (not x18014) (not x29670))
+:assumption (or (not x31556) x10081 (not x2567))
+:assumption (or x13915 (not x1922))
+:assumption (or (not x5028) x5100)
+:assumption (or x17047 x3323 x21653)
+:assumption (or (not x16409) (not x2341))
+:assumption (or (not x3332) x13987)
+:assumption (or (not x14159) x20448)
+:assumption (or x26018 (not x3008))
+:assumption (or x27166 x27027)
+:assumption (or x2180 (not x16950))
+:assumption (or (not x2490) (not x2700))
+:assumption (or x19892 x410)
+:assumption (or (not x15537) (not x2498) (not x11619) (not x27939) (not x20199))
+:assumption (or (not x30229) (not x11259))
+:assumption (or (not x6180) x10506)
+:assumption (or (not x28994) x22820)
+:assumption (or (not x984) x8944)
+:assumption (or x6415 x5803)
+:assumption (or x12477 (not x30375) x1621)
+:assumption (or (not x2755) (not x21164))
+:assumption (or (not x15594) (not x16743))
+:assumption (or x23850 (not x7446))
+:assumption (or x1025 x2028)
+:assumption (or (not x11353) (not x23353))
+:assumption (or (not x491) (not x28242) x26620 x27182)
+:assumption (or (not x27735) (not x20094))
+:assumption (or x25651 x666)
+:assumption (or (not x25276) x8784)
+:assumption (or (not x31485) (not x14076))
+:assumption (or x27618 (not x3456))
+:assumption (or x19290 (not x4499))
+:assumption (or (not x29909) x24150)
+:assumption (or x18069 (not x23244) x19274)
+:assumption (or (not x29752) (not x13638))
+:assumption (or (not x12325) x1691)
+:assumption (or (not x20278) x7814)
+:assumption (or x19948 (not x29197))
+:assumption (or (not x1897) (not x18561))
+:assumption (or (not x31297) x12673 x30502 x6528)
+:assumption (or x2880 (not x7624) (not x8448) x31857 (not x19267))
+:assumption (or (not x16378) x21648 (not x16741) x3996 (not x17883) x28657 (not x16708) (not x18592))
+:assumption (or (not x6609) (not x16616))
+:assumption (or x10287 (not x6188))
+:assumption (or x26880 x29791)
+:assumption (or x18849 (not x10941))
+:assumption (or x1540 x18566)
+:assumption (or x27463 (not x7975))
+:assumption (or (not x389) (not x24657))
+:assumption (or (not x9360) x18623)
+:assumption (or (not x11437) (not x49))
+:assumption (or x10685 x3018)
+:assumption (or (not x2305) x12588)
+:assumption (or x28523 (not x5710))
+:assumption (or (not x24619) (not x17332))
+:assumption (or (not x14104) (not x30198))
+:assumption (or (not x17250) x27695)
+:assumption (or x31550 (not x1925))
+:assumption (or (not x29588) (not x17047))
+:assumption (or x15420 x20623)
+:assumption (or x7505 x27111 (not x7165) x16802)
+:assumption (or x228 (not x28850))
+:assumption (or x26735 (not x20864) (not x16745))
+:assumption (or x6537 x18150)
+:assumption (or (not x20003) (not x27012))
+:assumption (or x7537 x2245 (not x12039))
+:assumption (or x22964 x16531)
+:assumption (or x24742 x24637)
+:assumption (or (not x24411) (not x1119))
+:assumption (or x24018 x8979)
+:assumption (or x9287 (not x21467))
+:assumption (or x19428 x20771)
+:assumption (or x15164 (not x30113) x11953 (not x20938))
+:assumption (or (not x21203) (not x11768))
+:assumption (or (not x17698) (not x19428))
+:assumption (or x2891 x13236)
+:assumption (or (not x12158) x18859)
+:assumption (or x25859 x26000)
+:assumption (or x24422 (not x24714) x18571 x9179)
+:assumption (or x8071 (not x17971))
+:assumption (or x18131 x5431)
+:assumption (or (not x21573) (not x11812))
+:assumption (or (not x18597) x19590)
+:assumption (or (not x30265) (not x19894))
+:assumption (or (not x28131) x7287)
+:assumption (or (not x24250) x11636 x8970 x9409 x3588 x5738 x12658 x10503)
+:assumption (or (not x17335) x11124)
+:assumption (or (not x26591) (not x6315))
+:assumption (or (not x4960) (not x17156))
+:assumption (or (not x23234) (not x29229))
+:assumption (or (not x13956) x5273 (not x28364))
+:assumption (or x1261 (not x29062))
+:assumption (or (not x14089) x9551)
+:assumption (or x9312 x15234)
+:assumption (or (not x26670) x17423 (not x22591))
+:assumption (or (not x20312) x29312)
+:assumption (or x6349 (not x22325))
+:assumption (or x5892 (not x10422))
+:assumption (or (not x10282) x19676)
+:assumption (or (not x2239) (not x29165))
+:assumption (or x17326 x10404)
+:assumption (or (not x5130) x24471)
+:assumption (or x27943 x9491)
+:assumption (or (not x18694) x31104)
+:assumption (or (not x12941) (not x13455))
+:assumption (or x27565 x30751)
+:assumption (or x21523 x4050)
+:assumption (or x27150 (not x6677))
+:assumption (or (not x13660) x17439)
+:assumption (or x15889 (not x18408))
+:assumption (or x20627 (not x31126) x16190 x14631 (not x29506) (not x23067) (not x6715) x11833 (not x2190))
+:assumption (or x30098 x15077)
+:assumption (or x1812 x20877)
+:assumption (or x25702 (not x9008))
+:assumption (or (not x10874) x15938)
+:assumption (or (not x13037) (not x11566) (not x28745) x31177)
+:assumption (or x27123 x17776 (not x26825) x23032 x24732)
+:assumption (or x9269 x13695)
+:assumption (or (not x8728) (not x21840))
+:assumption (or (not x15164) (not x9604))
+:assumption (or (not x2881) (not x5469))
+:assumption (or (not x26212) (not x16482))
+:assumption (or (not x8335) x30241)
+:assumption (or (not x5206) x9522)
+:assumption (or (not x479) (not x12059))
+:assumption (or (not x31025) x21546)
+:assumption (or (not x13153) x29496)
+:assumption (or (not x23129) x18071)
+:assumption (or x12108 (not x3453))
+:assumption (or x18499 (not x19217))
+:assumption (or x25286 x17579)
+:assumption (or (not x13657) (not x22787))
+:assumption (or (not x15654) (not x9789))
+:assumption (or x28123 x27526)
+:assumption (or x30313 x12086)
+:assumption (or (not x30381) (not x9050))
+:assumption (or (not x13006) (not x16025))
+:assumption (or (not x6770) (not x22344))
+:assumption (or x8623 x9814)
+:assumption (or (not x2578) (not x19721) x26520 x29958 (not x23279))
+:assumption (or x28433 x29507)
+:assumption (or (not x17769) x14)
+:assumption (or x31737 x11394)
+:assumption (or x10816 x22993 x21429 x7328 (not x649))
+:assumption (or (not x13589) (not x16903))
+:assumption (or x31414 (not x21633) x27233 (not x20702))
+:assumption (or x18330 (not x5553))
+:assumption (or x125 (not x25659))
+:assumption (or (not x26647) (not x5528) (not x12772) (not x9008) x28342)
+:assumption (or x31525 (not x18099) (not x31092) x9008 (not x26579) x3076 (not x25004) (not x1461))
+:assumption (or (not x14526) (not x26773))
+:assumption (or (not x1393) (not x21622))
+:assumption (or (not x3958) (not x25386))
+:assumption (or x24385 (not x31642))
+:assumption (or x31616 (not x11234))
+:assumption (or (not x4813) (not x20458))
+:assumption (or x25203 (not x16025))
+:assumption (or (not x19487) x13267)
+:assumption (or (not x25784) x20946)
+:assumption (or x3853 x30955)
+:assumption (or x1361 x20585)
+:assumption (or x515 x23408)
+:assumption (or x14196 x25490)
+:assumption (or x31722 x29196)
+:assumption (or x29912 (not x10967))
+:assumption (or (not x4677) (not x8002))
+:assumption (or x24128 (not x26862))
+:assumption (or (not x1511) (not x24268))
+:assumption (or x6771 x21774)
+:assumption (or x109 x2511)
+:assumption (or (not x18297) x8002 (not x23584))
+:assumption (or x24017 x6392)
+:assumption (or (not x8002) x4835)
+:assumption (or x4743 x12176)
+:assumption (or (not x51) x1714)
+:assumption (or x24693 x22389 x1055 x20602)
+:assumption (or (not x11378) x24178)
+:assumption (or x24422 x7531)
+:assumption (or (not x23279) x26803)
+:assumption (or (not x20485) x26110 (not x16819) (not x23317) x27286)
+:assumption (or (not x18380) x25938)
+:assumption (or x15338 (not x23982))
+:assumption (or x9775 x25266)
+:assumption (or x18993 x202)
+:assumption (or (not x10652) x12566)
+:assumption (or x8711 (not x9630))
+:assumption (or (not x29443) x30011)
+:assumption (or x19043 x20948)
+:assumption (or (not x16386) x20009)
+:assumption (or (not x21931) (not x15394))
+:assumption (or (not x31594) (not x21049))
+:assumption (or (not x27752) (not x3093))
+:assumption (or (not x17291) x4718)
+:assumption (or x2200 (not x17249))
+:assumption (or (not x13674) (not x13071) x28451 (not x8002))
+:assumption (or x15072 x2931)
+:assumption (or (not x23137) x6779)
+:assumption (or (not x28658) x17462)
+:assumption (or x25334 (not x22530))
+:assumption (or x30991 x29922)
+:assumption (or x17971 (not x21206))
+:assumption (or (not x27870) (not x24339))
+:assumption (or (not x25224) x17623)
+:assumption (or x16279 (not x24326))
+:assumption (or (not x17225) x30512)
+:assumption (or (not x13998) x3409)
+:assumption (or x12588 (not x8428))
+:assumption (or (not x8402) (not x16067) (not x16453))
+:assumption (or x31764 x28202)
+:assumption (or x9936 x16044 (not x24779) (not x14294) (not x13457))
+:assumption (or x8813 x30293)
+:assumption (or (not x14522) (not x24632) (not x7992) x31798 (not x6750))
+:assumption (or (not x6915) x5185)
+:assumption (or (not x5895) (not x20285))
+:assumption (or x12650 x9223)
+:assumption (or (not x18361) (not x2153))
+:assumption (or x24663 x30138)
+:assumption (or (not x27860) x19678)
+:assumption (or x5223 x6896)
+:assumption (or (not x31628) (not x3782) x5522 x25878 x29442)
+:assumption (or x21954 (not x13529))
+:assumption (or (not x21481) x21926)
+:assumption (or x10734 (not x29619))
+:assumption (or (not x27661) (not x28403))
+:assumption (or (not x21578) (not x27668) x21449 (not x24698))
+:assumption (or (not x31451) (not x24405))
+:assumption (or x16817 (not x23470))
+:assumption (or x20431 (not x8674))
+:assumption (or x18276 (not x8680))
+:assumption (or (not x7299) (not x16479))
+:assumption (or x24982 (not x14177))
+:assumption (or x18013 x1116)
+:assumption (or (not x26901) x2407)
+:assumption (or (not x15892) (not x24844))
+:assumption (or x20220 x2947)
+:assumption (or (not x19828) (not x17809))
+:assumption (or (not x7025) x20232)
+:assumption (or x16160 (not x3029))
+:assumption (or (not x12600) (not x30307))
+:assumption (or x4433 x3580)
+:assumption (or x19707 x5016)
+:assumption (or x28023 (not x11489) x8002 x23574 x23244 x13956)
+:assumption (or x23566 (not x29318))
+:assumption (or (not x20602) (not x14299))
+:assumption (or (not x23244) (not x8207) (not x8002) (not x13448))
+:assumption (or x26544 x5373)
+:assumption (or x10967 (not x21467))
+:assumption (or x2334 (not x24513) x3122)
+:assumption (or x20129 x12242)
+:assumption (or x8188 (not x13438) (not x22471))
+:assumption (or (not x13086) (not x19860))
+:assumption (or x17534 (not x17030))
+:assumption (or (not x16480) (not x9104))
+:assumption (or x3335 (not x20325) x4204 (not x12242))
+:assumption (or (not x25318) (not x25803))
+:assumption (or (not x3077) (not x17172) x4700 x22531 (not x1267))
+:assumption (or (not x10046) x18622)
+:assumption (or x8002 (not x13956) x23244 x10251 (not x10060))
+:assumption (or x14166 (not x25078))
+:assumption (or (not x5554) (not x1968))
+:assumption (or (not x24386) x16412)
+:assumption (or (not x10785) (not x7982))
+:assumption (or x21693 (not x28278))
+:assumption (or (not x16588) (not x26176))
+:assumption (or x11016 x1858)
+:assumption (or (not x21779) x13079)
+:assumption (or (not x3087) (not x14760))
+:assumption (or (not x21152) x30954)
+:assumption (or x6988 (not x14091))
+:assumption (or x2178 x1517)
+:assumption (or (not x23335) x8602)
+:assumption (or (not x5197) (not x23426))
+:assumption (or x10922 x7582)
+:assumption (or (not x30207) x6149)
+:assumption (or x1954 x24392)
+:assumption (or (not x18353) x20519)
+:assumption (or (not x564) (not x28836))
+:assumption (or x13956 (not x12989) x26284)
+:assumption (or (not x13156) x13928 (not x13521) x21074 (not x16116) x3450 (not x23523) x1393)
+:assumption (or (not x25770) x16969 (not x28314))
+:assumption (or (not x1721) x24965 x30871 (not x29253) x27355)
+:assumption (or (not x16664) x4753)
+:assumption (or x8368 x29820)
+:assumption (or x16149 x21923)
+:assumption (or x14166 x5111)
+:assumption (or x29599 x15034)
+:assumption (or (not x4501) (not x30432) (not x13956))
+:assumption (or x21626 x13898)
+:assumption (or x1384 x10896)
+:assumption (or (not x1256) (not x827))
+:assumption (or (not x5163) (not x28691))
+:assumption (or (not x18439) x22558)
+:assumption (or (not x17570) x29959)
+:assumption (or x25501 x5494)
+:assumption (or x30110 x2275)
+:assumption (or x7964 x25699)
+:assumption (or x6361 x11539)
+:assumption (or (not x18367) (not x21298) (not x25164))
+:assumption (or x24069 x3272)
+:assumption (or x16827 x2280)
+:assumption (or x14596 (not x2592))
+:assumption (or (not x3354) x16745 (not x13444) (not x20652))
+:assumption (or (not x3572) (not x19500))
+:assumption (or (not x12153) (not x22512) (not x16179))
+:assumption (or (not x1865) x5803)
+:assumption (or (not x5257) (not x9008) x18214)
+:assumption (or (not x18069) (not x28001))
+:assumption (or x9008 (not x16054))
+:assumption (or (not x2773) (not x12075))
+:assumption (or (not x1448) (not x4342))
+:assumption (or (not x14100) x13688)
+:assumption (or (not x4753) x16664 x9477)
+:assumption (or x12415 x5713)
+:assumption (or (not x27788) x14311)
+:assumption (or (not x11141) x2453)
+:assumption (or x6342 x1784)
+:assumption (or (not x20077) x12189 (not x10439) x19625 (not x23906))
+:assumption (or (not x31815) (not x15844))
+:assumption (or (not x11968) x22595)
+:assumption (or x283 x10904)
+:assumption (or (not x2150) x3242)
+:assumption (or x19363 (not x25748))
+:assumption (or (not x6596) x24921)
+:assumption (or x29569 (not x25796))
+:assumption (or x1341 x17821)
+:assumption (or (not x12867) x16510)
+:assumption (or x18077 (not x29389))
+:assumption (or (not x20675) (not x6594))
+:assumption (or x31771 (not x10357))
+:assumption (or x30027 (not x31134))
+:assumption (or x14848 (not x8672))
+:assumption (or x11837 x12823)
+:assumption (or x26432 (not x29248))
+:assumption (or (not x6909) x12522 (not x5811))
+:assumption (or (not x17805) x3585)
+:assumption (or x24134 x24484)
+:assumption (or x8419 x27433)
+:assumption (or x11666 x19073 (not x20254) (not x26400) (not x12118))
+:assumption (or x28601 (not x4239))
+:assumption (or x19679 (not x28314))
+:assumption (or x21774 (not x169))
+:assumption (or (not x6092) (not x22870))
+:assumption (or (not x24476) x996)
+:assumption (or x19973 x15133)
+:assumption (or (not x17409) x17359 x26432)
+:assumption (or (not x450) x12859)
+:assumption (or (not x17359) (not x29782) (not x23358))
+:assumption (or (not x13715) (not x2700))
+:assumption (or x31394 x14435 (not x30557) x16714)
+:assumption (or (not x26169) (not x25061))
+:assumption (or (not x9202) (not x29243))
+:assumption (or (not x31392) x199)
+:assumption (or x9025 (not x8295))
+:assumption (or (not x31770) (not x30856))
+:assumption (or x15621 (not x13139) x9513 x31122)
+:assumption (or x30892 (not x20544) x3113 (not x18970))
+:assumption (or (not x18233) x6895)
+:assumption (or (not x11001) (not x15049))
+:assumption (or x27579 x30958)
+:assumption (or (not x23906) (not x2587))
+:assumption (or (not x13956) (not x31496))
+:assumption (or (not x10575) x28619)
+:assumption (or x19992 (not x5310))
+:assumption (or (not x1626) (not x28181))
+:assumption (or (not x17338) (not x14686))
+:assumption (or x28285 x4638 (not x14218) (not x28629) x15421 x2334 x4391 x1876 x15289)
+:assumption (or (not x26177) x1217 (not x14111) x3591)
+:assumption (or x15118 x19335)
+:assumption (or x1640 x10914)
+:assumption (or (not x20087) (not x24756) (not x26156))
+:assumption (or (not x29333) x17346)
+:assumption (or (not x1351) (not x21469))
+:assumption (or (not x23870) x27399)
+:assumption (or x31616 x20391 (not x28705))
+:assumption (or x18467 x4491)
+:assumption (or (not x30568) x13288)
+:assumption (or (not x13142) (not x3469))
+:assumption (or (not x527) (not x12202))
+:assumption (or x28254 (not x28778))
+:assumption (or x20494 x24354 x12526 (not x31299) (not x24536))
+:assumption (or x4190 (not x7976))
+:assumption (or (not x7743) (not x6171) (not x23370) (not x1801) (not x16117))
+:assumption (or (not x11823) (not x2592))
+:assumption (or (not x31020) (not x22829))
+:assumption (or (not x9612) (not x27995))
+:assumption (or (not x15600) x29249)
+:assumption (or (not x8002) x5605)
+:assumption (or (not x7032) x8351)
+:assumption (or x10682 (not x14229))
+:assumption (or x16818 (not x1621))
+:assumption (or (not x13411) (not x17210))
+:assumption (or x17330 (not x15795))
+:assumption (or x14582 x9804)
+:assumption (or x5978 (not x20392))
+:assumption (or (not x23884) x2228)
+:assumption (or x29649 (not x27609) x25939)
+:assumption (or (not x24575) (not x5767))
+:assumption (or (not x97) (not x24686))
+:assumption (or x3503 x25366 x19404 x7835)
+:assumption (or (not x24823) (not x16838))
+:assumption (or x12755 (not x16704))
+:assumption (or x24931 (not x11819))
+:assumption (or (not x1103) (not x14748))
+:assumption (or (not x1992) (not x9055))
+:assumption (or x5655 (not x27859) (not x6780) (not x14559))
+:assumption (or (not x17008) x8368)
+:assumption (or (not x13916) x20226)
+:assumption (or x3811 (not x13330))
+:assumption (or (not x29138) x12396)
+:assumption (or (not x10624) x14016)
+:assumption (or x9008 x30444)
+:assumption (or (not x19078) x13849)
+:assumption (or (not x9920) x10935 (not x29095))
+:assumption (or (not x11522) x15466)
+:assumption (or x8773 (not x31592))
+:assumption (or x31887 x11384 x5726 x27456)
+:assumption (or (not x30122) (not x9482))
+:assumption (or (not x25863) x31209 (not x14175) (not x9218) x10850 x23827 (not x28203))
+:assumption (or x13417 (not x25312))
+:assumption (or (not x24840) (not x7850))
+:assumption (or x1224 x14687 x9977 (not x27020) (not x25354) (not x16147))
+:assumption (or (not x7048) (not x12055))
+:assumption (or (not x27740) (not x6134))
+:assumption (or (not x19541) x27662)
+:assumption (or x9105 x1372)
+:assumption (or x19139 (not x31450))
+:assumption (or x1286 (not x6316))
+:assumption (or (not x16552) x28715)
+:assumption (or x4856 (not x3063))
+:assumption (or x25427 (not x4148))
+:assumption (or x2441 x12236)
+:assumption (or x7285 (not x25423))
+:assumption (or x24722 x7505 (not x15472) x27111)
+:assumption (or x11484 (not x10980))
+:assumption (or (not x17855) x23686 (not x13737))
+:assumption (or x2735 x16304)
+:assumption (or x8317 x18150)
+:assumption (or (not x9521) (not x9453))
+:assumption (or (not x23787) (not x12386))
+:assumption (or (not x25700) (not x1491))
+:assumption (or x16653 (not x9431))
+:assumption (or (not x22179) x28139)
+:assumption (or (not x25659) (not x12892))
+:assumption (or (not x7509) x14085)
+:assumption (or (not x10292) x6939)
+:assumption (or x11315 x24795)
+:assumption (or (not x27661) (not x10968))
+:assumption (or (not x8602) x18958 x21934)
+:assumption (or (not x15016) (not x30623))
+:assumption (or x27761 (not x3817))
+:assumption (or (not x22304) (not x14839))
+:assumption (or x30316 (not x15780) x19931 x6969)
+:assumption (or x16225 (not x27285))
+:assumption (or x3946 x9174)
+:assumption (or (not x5155) x10489)
+:assumption (or (not x4072) x21620)
+:assumption (or x9056 x15139)
+:assumption (or x18989 (not x28184))
+:assumption (or x23468 (not x18085) (not x4829) x2455)
+:assumption (or x28936 x28973)
+:assumption (or x142 x4287)
+:assumption (or x3619 (not x12131))
+:assumption (or (not x139) (not x10356))
+:assumption (or x30051 (not x14906))
+:assumption (or (not x30067) x8831)
+:assumption (or x12365 (not x31381))
+:assumption (or (not x5509) (not x12967))
+:assumption (or x7286 (not x26073))
+:assumption (or (not x30149) x29080)
+:assumption (or x2002 (not x23168))
+:assumption (or x12070 x30175)
+:assumption (or (not x28387) x26857)
+:assumption (or (not x26234) x8995)
+:assumption (or (not x12016) (not x14073))
+:assumption (or (not x18735) (not x2159))
+:assumption (or x23462 (not x16829))
+:assumption (or x15656 (not x1859))
+:assumption (or (not x12559) x3130)
+:assumption (or x9690 x2860)
+:assumption (or x16591 (not x27474))
+:assumption (or x19005 x24632)
+:assumption (or x18519 (not x30036) (not x19711) x14552)
+:assumption (or (not x9387) x4184 x2072 x602 x24489)
+:assumption (or (not x16338) x15641)
+:assumption (or (not x26739) x20626)
+:assumption (or (not x24777) x20159 (not x8002))
+:assumption (or x29204 x22544)
+:assumption (or (not x16777) (not x26348) x29964 (not x19770) (not x31308) (not x14517))
+:assumption (or (not x16618) x26920)
+:assumption (or x12528 x11391 (not x16223) (not x11154) x9187 (not x9800) (not x31339) (not x3961) x9531)
+:assumption (or (not x25967) (not x9769))
+:assumption (or x11875 x2488)
+:assumption (or x5849 x12371)
+:assumption (or (not x4857) x16025 (not x6068))
+:assumption (or x20402 (not x30777))
+:assumption (or (not x9008) (not x25714))
+:assumption (or x11009 (not x24499))
+:assumption (or x9815 (not x5394))
+:assumption (or x30947 x25276 (not x13520) (not x30113))
+:assumption (or x14477 x16834)
+:assumption (or (not x1310) x25659)
+:assumption (or x20741 x10671)
+:assumption (or (not x28769) x9585 x6417 x8002 x23244)
+:assumption (or x14393 (not x12875) x1393)
+:assumption (or x16152 (not x2523))
+:assumption (or x25093 x556)
+:assumption (or x9833 (not x24769))
+:assumption (or (not x30962) x24485)
+:assumption (or x25659 (not x28889))
+:assumption (or (not x31867) (not x16510))
+:assumption (or (not x8110) x10338)
+:assumption (or x24529 (not x30896))
+:assumption (or (not x18564) x30891)
+:assumption (or (not x5265) (not x1414) (not x4557) (not x28280) x499 (not x28019))
+:assumption (or (not x14774) x24559 x3794 x22572 (not x4289))
+:assumption (or x7577 (not x23545))
+:assumption (or (not x2381) x21767)
+:assumption (or x10103 x1531)
+:assumption (or x25376 x1680)
+:assumption (or x11694 x18064 (not x25921) x28890)
+:assumption (or (not x17327) (not x7801))
+:assumption (or (not x18694) (not x11416) (not x29871))
+:assumption (or (not x18584) x31090)
+:assumption (or x15537 x5297)
+:assumption (or x9182 x3130)
+:assumption (or x24017 x22929 x19591 x23392 (not x1953) (not x9547) x15664 (not x21011) x13633)
+:assumption (or x30218 (not x24341))
+:assumption (or x4142 x1177)
+:assumption (or x26215 (not x18596))
+:assumption (or x21723 x5528)
+:assumption (or x2075 x17560 x14554 (not x24032) (not x11281) x7394)
+:assumption (or x15064 x4982)
+:assumption (or x1111 x23244)
+:assumption (or (not x18201) x11011)
+:assumption (or (not x12720) (not x25266))
+:assumption (or (not x7785) x19921)
+:assumption (or x16742 x10758)
+:assumption (or (not x8602) (not x2243) x17505)
+:assumption (or x4865 (not x9178))
+:assumption (or x12620 x23428)
+:assumption (or x3257 x3679)
+:assumption (or x4252 x6527)
+:assumption (or x8778 x26492)
+:assumption (or (not x6385) (not x17805))
+:assumption (or x12102 x28361 (not x25161) x18835 (not x4259) (not x11690) (not x4118) x31463)
+:assumption (or x5600 (not x7633))
+:assumption (or x21815 (not x26028) x21409)
+:assumption (or (not x7740) (not x17890))
+:assumption (or x8286 (not x30063))
+:assumption (or x28506 (not x4483) (not x21690) x16155 x30353 (not x12834) (not x1139))
+:assumption (or (not x27969) x5790 x3001 (not x14972))
+:assumption (or x8341 (not x20947))
+:assumption (or (not x26477) (not x8002) (not x21875) (not x30224))
+:assumption (or x9588 x14051)
+:assumption (or x6974 x24483)
+:assumption (or (not x15796) x13156)
+:assumption (or x28933 x927 (not x13498) (not x9413) (not x23244) (not x20015))
+:assumption (or (not x18050) (not x9427) x8081 (not x412) (not x4950))
+:assumption (or x8044 (not x7028) (not x9375) (not x25306) x7404 x31552)
+:assumption (or (not x28873) x16530)
+:assumption (or (not x24978) x4323)
+:assumption (or (not x28515) x15254)
+:assumption (or (not x14575) (not x5991) (not x19771) x17257 (not x11177) x7038 x4655 x20010)
+:assumption (or x23244 (not x9376))
+:assumption (or (not x17900) x18448)
+:assumption (or (not x30476) x30796)
+:assumption (or (not x17291) x31042)
+:assumption (or x15405 (not x16687) (not x10874))
+:assumption (or x17359 (not x8272))
+:assumption (or (not x24289) x7422)
+:assumption (or x17075 x14438)
+:assumption (or (not x7892) (not x26003) (not x15337) x9482 x14978 (not x3642) (not x20853) x30122 x19344 x3800)
+:assumption (or (not x20003) x11506)
+:assumption (or x25366 x17105 x23151)
+:assumption (or x16567 (not x806))
+:assumption (or x6594 (not x11407))
+:assumption (or (not x11588) x7734)
+:assumption (or (not x28457) (not x28242))
+:assumption (or (not x16796) (not x14771))
+:assumption (or x1789 x9934)
+:assumption (or (not x25761) (not x6594))
+:assumption (or x19262 (not x4078))
+:assumption (or x13696 (not x12064) (not x21298))
+:assumption (or x3989 x13173)
+:assumption (or x9850 (not x1426))
+:assumption (or (not x19838) (not x31134))
+:assumption (or x15568 (not x13102))
+:assumption (or (not x20708) x27169 (not x18052) (not x7389))
+:assumption (or x14986 (not x23755))
+:assumption (or (not x6679) (not x14022))
+:assumption (or x24341 (not x21003))
+:assumption (or (not x15377) x29673 (not x13956) x8895 (not x3306) x19752 x28174)
+:assumption (or (not x26442) (not x18042))
+:assumption (or x20980 (not x29821))
+:assumption (or x4839 x23399)
+:assumption (or (not x15305) x20224)
+:assumption (or x7733 (not x9372))
+:assumption (or (not x16872) (not x29984))
+:assumption (or x1804 (not x1393) (not x2293))
+:assumption (or x26019 (not x20366))
+:assumption (or x31756 (not x31276))
+:assumption (or x965 x24141)
+:assumption (or (not x29447) x16861)
+:assumption (or x21553 x3674)
+:assumption (or (not x20927) x7691 (not x2102) (not x12028))
+:assumption (or (not x29983) (not x129))
+:assumption (or x30439 x14087 x10843)
+:assumption (or (not x8140) x29752)
+:assumption (or (not x7859) (not x22922))
+:assumption (or x25286 (not x31401))
+:assumption (or x7907 x3212)
+:assumption (or (not x5626) x21464)
+:assumption (or x18781 x26397 x15366 (not x19209) x13939)
+:assumption (or (not x24467) (not x2781))
+:assumption (or (not x10874) x25925)
+:assumption (or (not x16335) x31644)
+:assumption (or x2289 (not x9826))
+:assumption (or x14716 x28079)
+:assumption (or (not x19803) (not x4464))
+:assumption (or (not x3001) x16200)
+:assumption (or (not x25988) (not x25542))
+:assumption (or x12175 x25626)
+:assumption (or x11255 (not x19529))
+:assumption (or x22334 x17470)
+:assumption (or x25420 (not x15243))
+:assumption (or x19105 x4182)
+:assumption (or (not x12676) x9498)
+:assumption (or (not x6680) x13956)
+:assumption (or (not x27622) (not x21807))
+:assumption (or (not x4256) (not x26568) x29312 x6461)
+:assumption (or x30751 (not x12083) (not x28762))
+:assumption (or x31076 x9311 x7384 (not x17681) x25855)
+:assumption (or (not x12095) (not x6026))
+:assumption (or x6289 x26014)
+:assumption (or x22864 (not x19864) x22923)
+:assumption (or (not x13180) x20141 (not x16166) (not x19815) (not x12310) (not x16510))
+:assumption (or x24390 (not x23886))
+:assumption (or (not x631) (not x17995))
+:assumption (or (not x16955) x12146 (not x2036) (not x9973) (not x1430) x771)
+:assumption (or x12022 x16533)
+:assumption (or x30110 x16170)
+:assumption (or (not x27205) x13956)
+:assumption (or x10525 (not x6929) x18859)
+:assumption (or (not x30265) x9262)
+:assumption (or x19585 (not x11917))
+:assumption (or (not x4866) (not x14237))
+:assumption (or x19782 (not x8390))
+:assumption (or (not x11277) (not x15021))
+:assumption (or (not x27240) x12493)
+:assumption (or (not x6243) (not x21193))
+:assumption (or x23244 x26623)
+:assumption (or x21298 (not x24784))
+:assumption (or x21789 (not x23163))
+:assumption (or (not x27536) (not x4962))
+:assumption (or x10758 (not x20971))
+:assumption (or (not x29894) (not x28956))
+:assumption (or (not x2187) x20778)
+:assumption (or (not x23194) (not x24787))
+:assumption (or x8996 x11304)
+:assumption (or x4155 x29257 (not x27472) (not x20241) (not x26074) (not x444) (not x29709) (not x14999))
+:assumption (or x3105 (not x18406))
+:assumption (or (not x7434) (not x31163))
+:assumption (or x14169 (not x14093))
+:assumption (or x2371 x5394)
+:assumption (or x30575 (not x7518))
+:assumption (or (not x30434) x27051)
+:assumption (or x6573 (not x15123) x13725 (not x6633) x1040 (not x10355) x27498 x17460)
+:assumption (or (not x14347) x22143)
+:assumption (or x16535 x28242)
+:assumption (or (not x28435) x25017)
+:assumption (or x2809 (not x29312))
+:assumption (or (not x22426) x12193)
+:assumption (or x402 x7584)
+:assumption (or (not x21382) (not x17748))
+:assumption (or (not x252) x2278 (not x3805) (not x5942))
+:assumption (or x9092 (not x22190))
+:assumption (or (not x22188) (not x3293))
+:assumption (or x31136 x10400)
+:assumption (or x2983 (not x20804))
+:assumption (or (not x20051) (not x8116))
+:assumption (or x1582 (not x23209))
+:assumption (or (not x21735) (not x12668))
+:assumption (or x3063 x4410 x28885 x28096)
+:assumption (or x797 x15769)
+:assumption (or (not x5405) (not x25946))
+:assumption (or x21581 (not x31829))
+:assumption (or (not x22531) (not x14127))
+:assumption (or x16134 x20482)
+:assumption (or x19254 x18690 (not x28290) x15987)
+:assumption (or (not x21597) (not x1841) (not x14553))
+:assumption (or x19086 (not x27921))
+:assumption (or x16025 (not x4191) x29442)
+:assumption (or x30208 x16862)
+:assumption (or (not x4647) x10160)
+:assumption (or x1393 (not x22000))
+:assumption (or (not x21298) (not x22743))
+:assumption (or x8470 (not x20160))
+:assumption (or (not x22815) x15131)
+:assumption (or x18085 (not x20497))
+:assumption (or (not x10537) (not x20885))
+:assumption (or x28160 x10049)
+:assumption (or (not x30155) (not x11083) (not x16374) x12111)
+:assumption (or (not x30354) (not x4109) x4217 (not x24364))
+:assumption (or (not x23801) x6475)
+:assumption (or x18391 x21554)
+:assumption (or x1980 (not x16077) (not x20402))
+:assumption (or x20908 x29649)
+:assumption (or (not x23528) x8896)
+:assumption (or x26713 (not x16034) x4865 (not x2500) (not x7854))
+:assumption (or (not x7353) x16833)
+:assumption (or x27410 (not x21208))
+:assumption (or (not x10471) (not x31352))
+:assumption (or x827 (not x30398))
+:assumption (or x3918 x19271)
+:assumption (or (not x809) x10119)
+:assumption (or (not x1480) x7987)
+:assumption (or x7984 x18270 (not x30511))
+:assumption (or x28747 (not x12254))
+:assumption (or (not x22383) x18953)
+:assumption (or (not x7143) x142)
+:assumption (or (not x18567) x13518 (not x14247) x26722 x31656 x642)
+:assumption (or x11119 (not x10001))
+:assumption (or x24148 (not x19974) (not x29885))
+:assumption (or x28924 (not x14927))
+:assumption (or (not x3820) x30649)
+:assumption (or (not x16741) (not x4174))
+:assumption (or (not x827) x10922 x13042)
+:assumption (or (not x1061) (not x21882))
+:assumption (or (not x24073) x3685)
+:assumption (or x25958 (not x22708))
+:assumption (or x610 x29520)
+:assumption (or (not x15561) x28630)
+:assumption (or (not x4259) (not x16688))
+:assumption (or (not x5347) x6627 x9008)
+:assumption (or (not x15795) x9549)
+:assumption (or x26005 (not x22068))
+:assumption (or x1367 x4694)
+:assumption (or (not x13350) x18681)
+:assumption (or (not x11738) (not x9008))
+:assumption (or (not x22584) (not x29139))
+:assumption (or (not x11857) (not x28591) (not x8468) (not x22136))
+:assumption (or (not x24945) x25818)
+:assumption (or x7829 (not x58) x30289 (not x30887) x16472 x26698)
+:assumption (or x22903 (not x8557) (not x10))
+:assumption (or (not x15164) (not x11953))
+:assumption (or (not x23357) (not x26432))
+:assumption (or (not x13212) (not x14778))
+:assumption (or (not x20137) x7268)
+:assumption (or x29389 x31162 x5452 x12134)
+:assumption (or x4378 x28406)
+:assumption (or x11328 x23244)
+:assumption (or (not x26107) x21718)
+:assumption (or (not x28550) x27104)
+:assumption (or x27547 (not x30912))
+:assumption (or (not x13895) x5919 x18342)
+:assumption (or (not x8002) x8026 x25483)
+:assumption (or x30287 x724)
+:assumption (or x17010 x11026)
+:assumption (or (not x10874) x7964 x6307 x20419 (not x4349) (not x774))
+:assumption (or (not x18174) (not x13367))
+:assumption (or x21676 (not x1840))
+:assumption (or (not x7244) (not x18265))
+:assumption (or (not x31602) (not x15797))
+:assumption (or (not x16807) (not x28453))
+:assumption (or x11229 x1135)
+:assumption (or x29011 x10014)
+:assumption (or (not x16106) x2010 (not x12978) x6869 (not x1474))
+:assumption (or x30952 (not x22684) x30110)
+:assumption (or x23228 x14193)
+:assumption (or (not x1184) (not x17170))
+:assumption (or x20389 x18327)
+:assumption (or (not x28908) (not x20752))
+:assumption (or (not x30523) (not x23047))
+:assumption (or (not x1813) x22281)
+:assumption (or (not x21418) (not x2318))
+:assumption (or x31809 (not x20689))
+:assumption (or (not x2017) x24072)
+:assumption (or x25002 x14138)
+:assumption (or x16540 (not x23244))
+:assumption (or (not x30787) (not x20828))
+:assumption (or (not x18652) x11669)
+:assumption (or x26337 x31829 (not x17342))
+:assumption (or (not x7430) x21026)
+:assumption (or x29457 x27020)
+:assumption (or x2523 (not x23450))
+:assumption (or x6351 x8261 x24721)
+:assumption (or x27208 (not x20550))
+:assumption (or (not x20747) x17569)
+:assumption (or x11282 (not x24947))
+:assumption (or (not x8002) x1542 (not x24843) (not x669))
+:assumption (or x5432 x23580)
+:assumption (or x30219 x10587 (not x31710) x8623 (not x811))
+:assumption (or x1554 x5633)
+:assumption (or x15879 x29829)
+:assumption (or (not x20346) x390)
+:assumption (or x16584 x13556)
+:assumption (or (not x8500) x14687 (not x27534) (not x30868))
+:assumption (or (not x9211) x20943)
+:assumption (or x9450 (not x11792) (not x13576))
+:assumption (or (not x14602) x27763)
+:assumption (or x13592 (not x7760))
+:assumption (or (not x19603) (not x28731) (not x25266) (not x28684) (not x30539) x28952)
+:assumption (or (not x2498) x14020)
+:assumption (or (not x26475) (not x28328))
+:assumption (or x22548 x23163)
+:assumption (or x13576 x20134 x3978)
+:assumption (or (not x17116) x29029)
+:assumption (or x28812 (not x8471))
+:assumption (or x15193 (not x15701))
+:assumption (or (not x14586) x8909)
+:assumption (or x11755 (not x9583))
+:assumption (or (not x20068) (not x9897))
+:assumption (or x609 (not x11504) (not x4722) x13076 x23532 x28129)
+:assumption (or (not x15551) x3898)
+:assumption (or (not x4159) (not x1868))
+:assumption (or x1200 (not x29395))
+:assumption (or (not x5896) x12427)
+:assumption (or (not x3063) x31444)
+:assumption (or x23924 x17990)
+:assumption (or x16695 (not x3238))
+:assumption (or (not x22111) (not x16808) (not x6790))
+:assumption (or (not x4708) (not x22592))
+:assumption (or x3007 x5730)
+:assumption (or x16517 (not x3981))
+:assumption (or (not x1991) x4424)
+:assumption (or (not x10653) x27233)
+:assumption (or (not x5734) (not x26821) (not x964) (not x26670))
+:assumption (or x20597 x26726)
+:assumption (or x30895 x5528)
+:assumption (or (not x6386) x12487)
+:assumption (or (not x17336) x16510)
+:assumption (or (not x30274) x12658 x6340 x8970 x5738 (not x24250) x3588 x11636)
+:assumption (or x27962 (not x3303))
+:assumption (or (not x8002) x30791)
+:assumption (or (not x6983) x25782)
+:assumption (or x25659 (not x29494))
+:assumption (or (not x29684) x13792)
+:assumption (or x10427 x4324)
+:assumption (or (not x7832) x5875)
+:assumption (or (not x26068) x6199)
+:assumption (or x5528 x10835 (not x23585))
+:assumption (or (not x14822) (not x30607) (not x26000) x13145 (not x31202))
+:assumption (or (not x2440) x16534)
+:assumption (or x3160 x12194)
+:assumption (or x25411 x16861)
+:assumption (or (not x11215) x14707)
+:assumption (or (not x12486) x25263 x27622 (not x17812) x28683)
+:assumption (or (not x1552) x25033)
+:assumption (or (not x13237) (not x26017) (not x25495))
+:assumption (or (not x5886) (not x4679) (not x22722) (not x8961))
+:assumption (or x19111 x5785)
+:assumption (or (not x6540) (not x3014))
+:assumption (or (not x8577) x3238 x29192)
+:assumption (or (not x19230) x14063 x13622 (not x4491))
+:assumption (or x20200 (not x5996) (not x14556) (not x3363) (not x9061) (not x13125) x31029)
+:assumption (or x6231 (not x8002))
+:assumption (or (not x13956) x19551)
+:assumption (or x17229 (not x9008))
+:assumption (or x25197 (not x21815))
+:assumption (or x11118 (not x4262))
+:assumption (or (not x12189) x25230)
+:assumption (or x5691 (not x6578))
+:assumption (or (not x28571) x7761 (not x3703) (not x21951))
+:assumption (or (not x25901) (not x22617))
+:assumption (or x28006 (not x9514))
+:assumption (or x13941 x159)
+:assumption (or (not x18623) (not x5528) x3054 (not x9008) x10060)
+:assumption (or (not x8419) (not x565))
+:assumption (or (not x26275) (not x5034))
+:assumption (or x19060 x9923)
+:assumption (or (not x16703) (not x11311))
+:assumption (or x4953 x3961)
+:assumption (or x25001 (not x17307) (not x25548) (not x26452) (not x18369))
+:assumption (or (not x26576) x14891)
+:assumption (or x13326 x26031)
+:assumption (or (not x19830) x8600)
+:assumption (or (not x24039) (not x12087))
+:assumption (or (not x13253) x19244 x26976 x31190 (not x23539) (not x20949))
+:assumption (or x24524 x8165 (not x7570) x15276)
+:assumption (or x28613 (not x8002))
+:assumption (or x27821 (not x9466))
+:assumption (or x26640 x16329)
+:assumption (or (not x1491) (not x3671) (not x30315))
+:assumption (or (not x26670) (not x23533))
+:assumption (or (not x23244) x19880)
+:assumption (or x3107 (not x15047))
+:assumption (or x16510 x18906)
+:assumption (or (not x1178) (not x6642))
+:assumption (or x30244 (not x13294))
+:assumption (or x13368 (not x24379))
+:assumption (or x21331 (not x29312))
+:assumption (or (not x1072) x10024)
+:assumption (or (not x25648) (not x17425))
+:assumption (or (not x20065) (not x1991))
+:assumption (or (not x11715) (not x23244) x8002 x29562)
+:assumption (or (not x21408) x14673)
+:assumption (or x23244 x2779)
+:assumption (or x12788 (not x12662))
+:assumption (or (not x12829) (not x15917))
+:assumption (or (not x23621) (not x15345))
+:assumption (or (not x7960) (not x964) x6374 x169)
+:assumption (or x2019 x21432)
+:assumption (or (not x9940) x21298)
+:assumption (or x25362 x1543)
+:assumption (or x1134 (not x30075))
+:assumption (or x31222 x21907)
+:assumption (or (not x23751) (not x15259))
+:assumption (or x7566 x29425)
+:assumption (or (not x16056) x25659)
+:assumption (or x13159 (not x2018) x28885 (not x21069) x14436 (not x31444) x3063)
+:assumption (or (not x31354) x334 x25341 (not x202) (not x31878))
+:assumption (or x1061 x27409 (not x721) x11351 (not x2540) x8487 (not x29236) x21882)
+:assumption (or (not x20743) (not x1394))
+:assumption (or x19702 (not x25749))
+:assumption (or (not x30124) (not x1526) (not x10938))
+:assumption (or (not x10415) x28132 (not x27039) (not x21883))
+:assumption (or (not x18519) x11592 (not x7266))
+:assumption (or x127 (not x10254))
+:assumption (or (not x21738) x1091)
+:assumption (or x29418 x23748)
+:assumption (or x29480 x7505)
+:assumption (or x660 (not x23489))
+:assumption (or x2473 (not x19038))
+:assumption (or x16840 (not x26126))
+:assumption (or x17627 x24169)
+:assumption (or (not x759) (not x7127))
+:assumption (or x29502 x31117)
+:assumption (or x2386 x24431)
+:assumption (or x17154 (not x14475))
+:assumption (or (not x19591) x5423)
+:assumption (or (not x12720) x30539)
+:assumption (or x11243 (not x21633))
+:assumption (or (not x13108) x28022)
+:assumption (or (not x1926) x31211)
+:assumption (or x18099 x7402)
+:assumption (or (not x23613) (not x19193))
+:assumption (or x3398 (not x20966))
+:assumption (or (not x8819) x28760)
+:assumption (or x7299 (not x10697))
+:assumption (or (not x5769) (not x22659))
+:assumption (or x23962 (not x10915) (not x7069) (not x8515) x26779 x422)
+:assumption (or x59 x27396)
+:assumption (or (not x8002) (not x21804))
+:assumption (or (not x25303) x26042)
+:assumption (or (not x20054) (not x20938))
+:assumption (or (not x22626) x20335)
+:assumption (or x25528 x10336)
+:assumption (or x29442 x28338)
+:assumption (or x14429 (not x11363))
+:assumption (or x31774 (not x5964))
+:assumption (or (not x2537) x25348)
+:assumption (or x25229 x25399)
+:assumption (or x29982 (not x11302))
+:assumption (or x26540 (not x30763))
+:assumption (or x31001 x21537)
+:assumption (or x3840 x28931)
+:assumption (or (not x15814) (not x8800))
+:assumption (or x28385 (not x25372))
+:assumption (or (not x16591) x13010)
+:assumption (or (not x28434) (not x28573))
+:assumption (or x4580 (not x31804))
+:assumption (or x7213 x31340)
+:assumption (or (not x915) (not x10242))
+:assumption (or x27523 x9123)
+:assumption (or x9008 (not x23853))
+:assumption (or x9034 x7764)
+:assumption (or x6740 (not x28043))
+:assumption (or x6248 x14137)
+:assumption (or x28710 x16252)
+:assumption (or (not x24296) x27800 x28822 x22844 (not x2270) (not x21363) x15363)
+:assumption (or (not x29300) x30978 (not x19428) x2656)
+:assumption (or x14925 (not x12846) x13910 x11709 (not x10435) x7253 x31438 x15917)
+:assumption (or (not x23120) (not x9514))
+:assumption (or (not x898) x11506)
+:assumption (or x4810 (not x29798))
+:assumption (or (not x15308) x25725)
+:assumption (or (not x22201) (not x5415))
+:assumption (or (not x2081) (not x28900))
+:assumption (or (not x30261) (not x10978))
+:assumption (or x13262 (not x12953))
+:assumption (or (not x25742) x22531)
+:assumption (or (not x6622) x9008)
+:assumption (or (not x14998) (not x7439))
+:assumption (or x28192 (not x20994))
+:assumption (or (not x8944) x6116 x14455 (not x24353) x3435 x7222 x6036)
+:assumption (or (not x26079) (not x3063))
+:assumption (or x3631 x17238)
+:assumption (or x2412 (not x2943))
+:assumption (or (not x13640) x26650 x25826 x22266)
+:assumption (or x9147 x28333)
+:assumption (or (not x26324) (not x29331) (not x18187) x5295)
+:assumption (or (not x26897) (not x11161))
+:assumption (or x4477 x13295 x8602)
+:assumption (or (not x31898) x17464)
+:assumption (or (not x12405) x26656)
+:assumption (or (not x17359) x26153)
+:assumption (or x23251 x21633 x26731 x9334 x5581)
+:assumption (or x20762 (not x3133))
+:assumption (or (not x22963) (not x11273))
+:assumption (or (not x24695) (not x14101))
+:assumption (or x13162 (not x16645))
+:assumption (or x25811 (not x18618) x21088 (not x5781) x17075 x9408 (not x1763) (not x22674))
+:assumption (or (not x3893) (not x25954))
+:assumption (or (not x38) (not x2665))
+:assumption (or (not x16535) (not x28242) (not x16542) x16097 x3829)
+:assumption (or x1654 x10711)
+:assumption (or (not x27263) (not x7992))
+:assumption (or (not x5898) (not x17159))
+:assumption (or (not x20355) x28910)
+:assumption (or x8639 (not x4644))
+:assumption (or (not x7096) x7968)
+:assumption (or (not x26041) (not x18576))
+:assumption (or (not x18356) x30633)
+:assumption (or (not x764) x762)
+:assumption (or (not x21381) (not x21294))
+:assumption (or x5780 (not x14839))
+:assumption (or x28155 x22087)
+:assumption (or (not x4073) (not x7962))
+:assumption (or (not x28544) (not x5168))
+:assumption (or (not x11717) x4980)
+:assumption (or (not x21298) x23127)
+:assumption (or (not x6507) x18715)
+:assumption (or (not x6923) x18608 x17479 x19286 x8935 (not x27203) (not x18133) (not x25798))
+:assumption (or (not x7760) (not x6888))
+:assumption (or x14181 x30751)
+:assumption (or x15676 (not x31300) (not x26463) (not x22384))
+:assumption (or x13406 x16907)
+:assumption (or x23531 x18057)
+:assumption (or x28066 (not x14900))
+:assumption (or (not x2035) (not x22139))
+:assumption (or (not x6222) x2646)
+:assumption (or x3554 x1789 x19037 (not x12798) x20183 (not x18852))
+:assumption (or x16525 x16450 x12729 x13468 x31015)
+:assumption (or x14835 x21043 (not x9008))
+:assumption (or x5507 (not x6655))
+:assumption (or (not x14839) x16064)
+:assumption (or (not x6062) x28912)
+:assumption (or x31638 x13143)
+:assumption (or (not x31549) x24617)
+:assumption (or (not x77) (not x12116))
+:assumption (or x27695 x793)
+:assumption (or x14924 x27260)
+:assumption (or (not x26334) (not x11576))
+:assumption (or x24416 (not x29266))
+:assumption (or x29311 x7329 (not x2591) x8631 x20805 (not x5528))
+:assumption (or x3103 (not x22324))
+:assumption (or (not x14683) x12674)
+:assumption (or x14230 (not x28401))
+:assumption (or (not x14926) x6970)
+:assumption (or x29827 x1759 x10450 (not x4559))
+:assumption (or x13956 (not x9428) (not x22472))
+:assumption (or (not x24932) (not x29349))
+:assumption (or (not x24588) (not x6969))
+:assumption (or (not x3325) (not x30299))
+:assumption (or x3616 (not x15876))
+:assumption (or x3042 x3729)
+:assumption (or (not x2334) x14218)
+:assumption (or (not x26432) (not x15200))
+:assumption (or (not x5687) x142)
+:assumption (or (not x9671) x4190)
+:assumption (or (not x18818) (not x22025))
+:assumption (or (not x30864) (not x4870))
+:assumption (or (not x3985) (not x22596) (not x9008))
+:assumption (or x24226 (not x3488))
+:assumption (or (not x16910) x21455)
+:assumption (or (not x15537) (not x13313))
+:assumption (or x6719 (not x502))
+:assumption (or (not x17764) x25446 (not x18859))
+:assumption (or (not x5188) x28614)
+:assumption (or (not x8363) (not x13742) (not x4377) (not x5737))
+:assumption (or (not x27677) (not x7012))
+:assumption (or (not x8492) (not x8120))
+:assumption (or x16741 (not x16835))
+:assumption (or (not x19615) x186)
+:assumption (or (not x23603) x8196)
+:assumption (or (not x18069) x2717 x3494 (not x13417))
+:assumption (or x31452 (not x31273))
+:assumption (or x12124 (not x16145))
+:assumption (or x23994 (not x15832))
+:assumption (or (not x1676) (not x17972))
+:assumption (or x10224 x9535 x17302 x13895)
+:assumption (or (not x5703) (not x15978))
+:assumption (or x15871 x31779 (not x30926) (not x30223) x9856)
+:assumption (or (not x9398) (not x28813))
+:assumption (or x4009 x27270)
+:assumption (or x7542 (not x4130))
+:assumption (or x19040 x27988)
+:assumption (or (not x30243) (not x21593))
+:assumption (or x20043 (not x1952))
+:assumption (or x15411 x16707)
+:assumption (or (not x1894) x4237 x23742 (not x14975))
+:assumption (or (not x3300) x5858)
+:assumption (or x24167 (not x3453) x29700)
+:assumption (or x12402 (not x12543))
+:assumption (or (not x5528) (not x13395))
+:assumption (or (not x26301) x29648)
+:assumption (or x27083 (not x20763))
+:assumption (or x14680 x2302 (not x29443))
+:assumption (or (not x30344) x252 x25334)
+:assumption (or x16510 x31814)
+:assumption (or (not x14834) x6383)
+:assumption (or (not x12914) (not x264))
+:assumption (or x24205 (not x30871))
+:assumption (or (not x1621) x1052 x5005)
+:assumption (or x11857 (not x23505) x14094)
+:assumption (or x30513 (not x13168))
+:assumption (or (not x15765) (not x19005) x26677 (not x23725) x4652)
+:assumption (or (not x847) x6785)
+:assumption (or x30271 (not x21193))
+:assumption (or x12552 (not x8095))
+:assumption (or (not x3289) (not x4285))
+:assumption (or (not x22531) x2814)
+:assumption (or (not x27731) (not x23244))
+:assumption (or x21850 x10642)
+:assumption (or (not x24456) x8199)
+:assumption (or (not x30630) (not x13837))
+:assumption (or x24220 x24111)
+:assumption (or (not x14973) (not x25307))
+:assumption (or (not x31328) x3465)
+:assumption (or (not x20452) (not x29606))
+:assumption (or x16715 (not x3909))
+:assumption (or x6420 (not x29181) (not x1909) (not x24812) (not x26877) x9001 (not x28097) x23072 (not x22995))
+:assumption (or (not x6917) (not x932))
+:assumption (or (not x15749) (not x779))
+:assumption (or x15051 (not x15808))
+:assumption (or (not x8029) (not x13329))
+:assumption (or (not x11812) (not x22101))
+:assumption (or (not x4127) (not x29075))
+:assumption (or (not x15716) (not x12238))
+:assumption (or (not x3803) (not x7024))
+:assumption (or x21917 (not x23897))
+:assumption (or (not x17862) (not x22022))
+:assumption (or (not x8714) x16379 (not x13073))
+:assumption (or x12263 x7200)
+:assumption (or (not x15756) x8083)
+:assumption (or x7924 (not x3711))
+:assumption (or (not x7464) x246)
+:assumption (or (not x15861) x22353)
+:assumption (or (not x8144) x23244 x4669)
+:assumption (or (not x27530) (not x11043) x20999)
+:assumption (or (not x27012) x17732)
+:assumption (or x2992 (not x5812))
+:assumption (or x18694 x5108 x11877 x7710)
+:assumption (or (not x21830) (not x21872))
+:assumption (or x27237 x4554 (not x827))
+:assumption (or x25696 (not x27983))
+:assumption (or x31471 (not x31734) x13434)
+:assumption (or x15697 (not x2158))
+:assumption (or x11905 x11869)
+:assumption (or x13635 x7757)
+:assumption (or x23584 x18297)
+:assumption (or (not x6841) x20333 (not x25746) x28663 (not x7451))
+:assumption (or x522 (not x15788))
+:assumption (or x3756 x4137 (not x4507) (not x12788) (not x10015) x12662)
+:assumption (or (not x19620) (not x8724))
+:assumption (or (not x17846) x7600 x30472 (not x30113))
+:assumption (or (not x22844) x8592)
+:assumption (or (not x28248) (not x14206))
+:assumption (or (not x9721) x1038)
+:assumption (or x19785 (not x4134) (not x23244) (not x10236) x24800 (not x26598))
+:assumption (or (not x13141) (not x10335))
+:assumption (or (not x28399) x228)
+:assumption (or (not x11449) (not x17116))
+:assumption (or (not x24006) (not x16044))
+:assumption (or (not x19725) x13092)
+:assumption (or (not x2743) (not x2777))
+:assumption (or (not x20855) x23627)
+:assumption (or x7541 (not x19829) (not x17016) (not x2157) x25028 x21035)
+:assumption (or x31767 (not x12282))
+:assumption (or (not x6969) x27378 x26293)
+:assumption (or x28968 (not x23254))
+:assumption (or x12836 (not x26385) (not x4170) (not x27982) x3994 x5519)
+:assumption (or x23084 x9804)
+:assumption (or (not x18948) x14995)
+:assumption (or x13635 x13249)
+:assumption (or (not x16696) (not x15008))
+:assumption (or x21030 (not x1582))
+:assumption (or (not x5052) x9995)
+:assumption (or (not x9696) (not x5491) (not x29442))
+:assumption (or x25198 x22888)
+:assumption (or (not x31368) x5831)
+:assumption (or (not x1393) (not x4751))
+:assumption (or x12080 (not x31389))
+:assumption (or x20665 x15100)
+:assumption (or x31434 x21711)
+:assumption (or x18618 (not x25569))
+:assumption (or (not x8602) x23252)
+:assumption (or (not x10874) x20315)
+:assumption (or (not x25830) x12895)
+:assumption (or (not x15747) (not x8089))
+:assumption (or x18069 (not x2717))
+:assumption (or x28861 x12207)
+:assumption (or x23061 (not x18573))
+:assumption (or (not x14384) x30887)
+:assumption (or x31040 (not x6602))
+:assumption (or (not x8359) x2181)
+:assumption (or x3290 (not x24655) (not x16025))
+:assumption (or x6351 (not x19328))
+:assumption (or x8461 (not x9321) (not x16910))
+:assumption (or x5082 (not x18421) x21116 x18843 x17187)
+:assumption (or (not x5994) x26670)
+:assumption (or x6594 (not x23805))
+:assumption (or x8085 x23536 x11375)
+:assumption (or (not x21384) x1610 x17361 (not x15499) x264 x3614)
+:assumption (or (not x8653) (not x27113))
+:assumption (or x8928 (not x8440))
+:assumption (or (not x14548) x16514)
+:assumption (or x22501 x25718)
+:assumption (or x12116 x31203)
+:assumption (or x10754 x29575 x1393)
+:assumption (or (not x16624) (not x8880))
+:assumption (or x28436 (not x123))
+:assumption (or x29985 x1435)
+:assumption (or x6427 x4891)
+:assumption (or x15027 x20722)
+:assumption (or (not x29051) x23664)
+:assumption (or (not x6327) x28041)
+:assumption (or (not x8970) x2415)
+:assumption (or (not x25577) (not x17221))
+:assumption (or (not x14762) (not x15929))
+:assumption (or x16154 (not x3813))
+:assumption (or x222 (not x9889))
+:assumption (or (not x1102) (not x5506))
+:assumption (or x19604 x27515)
+:assumption (or x25180 x23130)
+:assumption (or (not x903) x16824)
+:assumption (or (not x8473) (not x26964))
+:assumption (or x17074 (not x15732))
+:assumption (or x9884 x9508)
+:assumption (or x12948 x3104)
+:assumption (or (not x5605) x23244 (not x5408) x8002)
+:assumption (or (not x12915) x7827)
+:assumption (or x827 (not x14604) x12437)
+:assumption (or x20099 (not x20921))
+:assumption (or (not x9980) x26256)
+:assumption (or (not x29913) x14005)
+:assumption (or (not x15032) x25117)
+:assumption (or (not x6657) (not x9962) x30124 (not x5765))
+:assumption (or x7565 (not x29689) (not x5198))
+:assumption (or x13956 x6662)
+:assumption (or x1222 x23342)
+:assumption (or (not x13825) (not x23017))
+:assumption (or (not x1396) (not x18069))
+:assumption (or (not x1134) x13808 (not x15339) x21261 x12242)
+:assumption (or x11236 x14135)
+:assumption (or (not x8002) (not x26810) x530 (not x26768))
+:assumption (or (not x20177) x6637)
+:assumption (or (not x6414) (not x24724))
+:assumption (or x13825 x26887 (not x2818) (not x15633) (not x4116))
+:assumption (or (not x21599) x23043)
+:assumption (or x801 (not x24045))
+:assumption (or x31475 x31822)
+:assumption (or x17537 x16025)
+:assumption (or x13248 (not x20119))
+:assumption (or (not x22251) (not x12810))
+:assumption (or (not x14623) x629 (not x11032) x9008 (not x22798) (not x7001))
+:assumption (or (not x15740) x30002 x5140 x20606)
+:assumption (or x5054 (not x31885) (not x25420) x22332 x9961 (not x23186))
+:assumption (or (not x8002) x21180)
+:assumption (or x21312 x23717 x204 x12728 (not x11008) x4451)
+:assumption (or (not x28522) x9008)
+:assumption (or (not x28418) (not x5614))
+:assumption (or (not x28929) x3105)
+:assumption (or x20140 x5300 x20915 x12018 x27325)
+:assumption (or (not x6949) x29644)
+:assumption (or (not x7613) x23441)
+:assumption (or x4232 x9008)
+:assumption (or (not x19713) (not x24774))
+:assumption (or (not x13956) x24189)
+:assumption (or (not x25204) x21139)
+:assumption (or x7304 (not x31361))
+:assumption (or (not x24740) (not x16648))
+:assumption (or x31829 x23942)
+:assumption (or (not x23201) (not x18587))
+:assumption (or (not x15426) (not x4466))
+:assumption (or x28364 x29491)
+:assumption (or (not x28987) (not x17385))
+:assumption (or (not x27041) (not x25659) (not x26675))
+:assumption (or (not x31718) (not x13655))
+:assumption (or x3021 (not x23139))
+:assumption (or x22411 x18963 x10884 (not x19025))
+:assumption (or (not x14548) x26982)
+:assumption (or (not x1110) (not x28645))
+:assumption (or x9850 (not x4533))
+:assumption (or x28786 (not x26531))
+:assumption (or (not x7764) (not x15296))
+:assumption (or (not x28631) x8044)
+:assumption (or (not x27479) x26354)
+:assumption (or x8946 x12560 x21432)
+:assumption (or (not x26670) (not x964) (not x16952) x7448)
+:assumption (or x28889 (not x21813))
+:assumption (or x20445 (not x23973))
+:assumption (or x7835 (not x19718) (not x21340))
+:assumption (or (not x918) x25449)
+:assumption (or (not x9116) x16892)
+:assumption (or (not x8602) (not x28135) x8709)
+:assumption (or (not x189) (not x5028))
+:assumption (or (not x30229) x6977)
+:assumption (or (not x382) (not x30358))
+:assumption (or (not x19233) (not x2940))
+:assumption (or x20472 (not x28758))
+:assumption (or x16648 x21468 (not x1897))
+:assumption (or x14102 (not x5599))
+:assumption (or (not x23510) x17882)
+:assumption (or x17148 x21290 (not x20485) (not x7497) x10610 x10672 (not x27046) (not x6912))
+:assumption (or x11240 x12234)
+:assumption (or x29109 (not x21388))
+:assumption (or x5544 x7013)
+:assumption (or x29442 x7822)
+:assumption (or x28946 (not x30019))
+:assumption (or (not x19709) (not x25182))
+:assumption (or (not x874) (not x2798))
+:assumption (or (not x7907) (not x7221))
+:assumption (or (not x7119) x29592)
+:assumption (or (not x12199) x12920)
+:assumption (or (not x1848) (not x10435))
+:assumption (or (not x14144) (not x5554))
+:assumption (or (not x21620) (not x16741) (not x11410))
+:assumption (or x6047 (not x31248) (not x23687))
+:assumption (or (not x2798) (not x1170))
+:assumption (or x27116 (not x2612))
+:assumption (or (not x6381) x5968 (not x16604))
+:assumption (or x6208 (not x15644))
+:assumption (or x20651 (not x9349))
+:assumption (or (not x29266) x27993)
+:assumption (or (not x23039) x10752)
+:assumption (or x12523 x29862 (not x28926) x6330 (not x12315) x4844)
+:assumption (or x11990 x6232 x12045)
+:assumption (or x7954 x3445)
+:assumption (or x23244 x13919)
+:assumption (or x7175 x4382)
+:assumption (or (not x8002) (not x29989))
+:assumption (or x10375 x6960)
+:assumption (or (not x9282) x539)
+:assumption (or x665 x5689)
+:assumption (or (not x17222) x22175 (not x8638) x11448)
+:assumption (or (not x2627) (not x3900))
+:assumption (or x30887 (not x227) x18135)
+:assumption (or (not x28912) (not x29649) (not x9312))
+:assumption (or x5847 x19241)
+:assumption (or x29009 (not x13622))
+:assumption (or (not x23801) (not x119) (not x3396))
+:assumption (or x18940 (not x28973))
+:assumption (or x7620 (not x3270))
+:assumption (or (not x3506) x3411)
+:assumption (or x6233 (not x8141))
+:assumption (or (not x28604) (not x16511) x19992 (not x19810))
+:assumption (or (not x8602) x5949)
+:assumption (or (not x30208) x13269)
+:assumption (or x10412 (not x13920) x20336)
+:assumption (or (not x28242) (not x29948))
+:assumption (or x5378 x1042)
+:assumption (or (not x97) (not x2253) x14266)
+:assumption (or x29745 x13715)
+:assumption (or (not x23877) (not x17268))
+:assumption (or (not x30124) x1160 x16409)
+:assumption (or x5627 x21791)
+:assumption (or x15003 (not x10009))
+:assumption (or (not x5560) (not x12136))
+:assumption (or x27725 x22593)
+:assumption (or (not x24346) (not x3311))
+:assumption (or (not x30138) x17752)
+:assumption (or x5707 x2467)
+:assumption (or x15680 (not x22685))
+:assumption (or x17211 x12590)
+:assumption (or (not x31189) (not x2499))
+:assumption (or (not x15312) x3221)
+:assumption (or (not x5021) x20062)
+:assumption (or x19708 x549 (not x8002))
+:assumption (or (not x2240) x19877 x9885)
+:assumption (or (not x17098) (not x18643))
+:assumption (or (not x14869) x9008 (not x16322))
+:assumption (or x22676 (not x11978) x7341 (not x28520) (not x607) (not x19802))
+:assumption (or (not x26065) (not x22075))
+:assumption (or x17588 x13117)
+:assumption (or x8450 x18042)
+:assumption (or (not x15067) (not x24294))
+:assumption (or (not x8274) x5356 x21022)
+:assumption (or (not x6978) (not x18506) (not x19998) x18720 x7184)
+:assumption (or (not x3493) x20582)
+:assumption (or x23503 (not x17967))
+:assumption (or x21508 x2679)
+:assumption (or (not x25481) x30318)
+:assumption (or (not x27216) x2059)
+:assumption (or (not x27232) x16939)
+:assumption (or x19775 x19183)
+:assumption (or (not x10082) x1746)
+:assumption (or x30216 (not x8002) (not x7537) (not x15750))
+:assumption (or (not x27964) (not x7331))
+:assumption (or x28116 x29611)
+:assumption (or (not x19069) x5001)
+:assumption (or (not x17210) x20316)
+:assumption (or x4095 x16684)
+:assumption (or x7624 (not x12045))
+:assumption (or (not x26450) (not x4547))
+:assumption (or (not x21948) (not x21599))
+:assumption (or (not x26206) (not x2777))
+:assumption (or x29442 x1522)
+:assumption (or x7134 (not x11125))
+:assumption (or x11427 x9262)
+:assumption (or (not x19041) (not x30667))
+:assumption (or x13576 (not x6951) x10581)
+:assumption (or x4372 (not x21794))
+:assumption (or (not x11302) (not x10346))
+:assumption (or (not x26381) (not x4845))
+:assumption (or (not x29243) (not x17972))
+:assumption (or x17534 (not x5998))
+:assumption (or (not x12700) x6594)
+:assumption (or x8228 x1393)
+:assumption (or x31574 x21003 (not x24341) (not x29312) (not x24756))
+:assumption (or (not x27740) (not x7279))
+:assumption (or x8928 x11488)
+:assumption (or x5950 x19201)
+:assumption (or x12612 x15027)
+:assumption (or x11750 (not x8376))
+:assumption (or x3284 x18299)
+:assumption (or x4549 x19828)
+:assumption (or (not x28209) (not x23192))
+:assumption (or (not x13301) (not x27908))
+:assumption (or (not x3494) (not x16743) x27232 (not x18069))
+:assumption (or x4657 (not x27468))
+:assumption (or x25294 (not x6248) (not x31711) x29328)
+:assumption (or (not x29424) x3785 (not x10909) x3655)
+:assumption (or (not x13622) x26377)
+:assumption (or x27886 (not x25376) (not x1003) x14427 x22881 (not x14431) (not x26795))
+:assumption (or x16375 (not x8819) x8056 (not x26525))
+:assumption (or x26047 x21180)
+:assumption (or x23505 (not x14094))
+:assumption (or (not x2465) x28353)
+:assumption (or x5367 x6626 (not x27011))
+:assumption (or x23083 (not x14078) (not x917) x30194)
+:assumption (or (not x13636) (not x1434))
+:assumption (or (not x16304) (not x30665))
+:assumption (or x28023 (not x30270))
+:assumption (or x18802 (not x7790))
+:assumption (or (not x26832) x28304)
+:assumption (or x27915 x10253)
+:assumption (or (not x13286) x16329)
+:assumption (or x26264 (not x31873))
+:assumption (or x14560 (not x26242))
+:assumption (or (not x21298) x8645 (not x23681))
+:assumption (or (not x24079) x22899)
+:assumption (or x24655 x21653 (not x6288))
+:assumption (or (not x24910) x6381 x1604)
+:assumption (or (not x15392) x7963)
+:assumption (or (not x11847) (not x2109))
+:assumption (or x440 (not x7129))
+:assumption (or (not x12737) x12125)
+:assumption (or (not x16252) (not x25881))
+:assumption (or (not x24904) x2884)
+:assumption (or (not x28647) x26690)
+:assumption (or x14584 x2612)
+:assumption (or x24656 x3089)
+:assumption (or x8499 (not x4760))
+:assumption (or (not x9605) x16370)
+:assumption (or x10022 x29305)
+:assumption (or x24291 x892)
+:assumption (or x5998 (not x17534) x6594 x19193)
+:assumption (or (not x30113) x25833)
+:assumption (or x23298 x4091)
+:assumption (or x4449 x24230)
+:assumption (or (not x22597) (not x6596))
+:assumption (or (not x11993) x13753)
+:assumption (or x6428 (not x10075))
+:assumption (or x8737 (not x14683))
+:assumption (or (not x29918) x23220)
+:assumption (or (not x1378) (not x29732))
+:assumption (or (not x14277) (not x12955) x31581 (not x18146))
+:assumption (or (not x2232) (not x7222))
+:assumption (or x11682 (not x25481))
+:assumption (or x6458 (not x6413))
+:assumption (or x790 (not x17628))
+:assumption (or (not x9905) (not x17856))
+:assumption (or (not x1074) x2370)
+:assumption (or x12314 (not x23243))
+:assumption (or x19716 (not x16802) x16510)
+:assumption (or (not x3649) x10609)
+:assumption (or x27105 x122 (not x9008))
+:assumption (or x10484 x9510)
+:assumption (or (not x13238) x10014)
+:assumption (or (not x29950) x19677)
+:assumption (or (not x13555) (not x12983))
+:assumption (or (not x28185) (not x23625) x15330 x17908 x18727 (not x14016) x10624 (not x7050))
+:assumption (or (not x17482) x7632 x7731)
+:assumption (or (not x9532) (not x13922) x31134 (not x25342) (not x7312))
+:assumption (or x31085 (not x10264))
+:assumption (or x12396 (not x25077))
+:assumption (or (not x25659) (not x8485))
+:assumption (or (not x18453) (not x5783))
+:assumption (or x12440 (not x7537))
+:assumption (or (not x14347) x5074 x29802 x27132 (not x25401) (not x26067) x26999)
+:assumption (or (not x18502) (not x11402))
+:assumption (or x2874 (not x22442))
+:assumption (or x28328 x16326 (not x12984) (not x484))
+:assumption (or (not x731) (not x1393))
+:assumption (or x16285 x20918 x18331 (not x17485) x14154 (not x20325))
+:assumption (or (not x30616) x13917 (not x7590) (not x30100) (not x7879) (not x24696) (not x7934) (not x31476) (not x1271))
+:assumption (or (not x29538) (not x21100))
+:assumption (or (not x22915) (not x14571))
+:assumption (or (not x29289) (not x4605))
+:assumption (or (not x3185) x4153 (not x28987))
+:assumption (or x20703 x29246)
+:assumption (or x8002 x20723 x5696 x20400 x23244 x13956)
+:assumption (or x15411 x11166)
+:assumption (or (not x30917) x15787)
+:assumption (or x8382 x21175)
+:assumption (or x18003 x17182)
+:assumption (or x4703 x19259)
+:assumption (or (not x21048) x7123)
+:assumption (or x11172 x11776)
+:assumption (or (not x17376) x8573)
+:assumption (or (not x28602) (not x10083) x23244)
+:assumption (or x23151 (not x7984) x10695 x5231)
+:assumption (or (not x28374) x13262)
+:assumption (or x7468 (not x26332) x25965 (not x26863) (not x2841) x23439)
+:assumption (or (not x16266) x11202)
+:assumption (or (not x7019) (not x12397))
+:assumption (or x19008 x14982)
+:assumption (or x21635 x30078)
+:assumption (or x1997 (not x24311))
+:assumption (or x20803 (not x11676))
+:assumption (or (not x4141) (not x20426) x5557 (not x24756) (not x3641))
+:assumption (or (not x1621) (not x12477))
+:assumption (or (not x23862) x16496)
+:assumption (or x21973 (not x26991))
+:assumption (or x31674 x3769 (not x8002) (not x23244))
+:assumption (or x656 x24788)
+:assumption (or (not x27971) x9759)
+:assumption (or x14078 (not x18943))
+:assumption (or x21250 x24307)
+:assumption (or x5524 (not x28086))
+:assumption (or x16258 (not x23165))
+:assumption (or x6674 (not x19992))
+:assumption (or x31685 (not x22260))
+:assumption (or x8576 (not x11037))
+:assumption (or x1290 (not x25265))
+:assumption (or x575 (not x19732))
+:assumption (or (not x12394) x26897)
+:assumption (or x21632 x11450)
+:assumption (or (not x3002) x21138 x16648 x8653)
+:assumption (or (not x23446) x29687)
+:assumption (or (not x23430) x3112)
+:assumption (or (not x18860) x2215)
+:assumption (or (not x8866) (not x13046))
+:assumption (or (not x27774) (not x11330))
+:assumption (or x20651 (not x22522) x23768 (not x21202))
+:assumption (or x23207 (not x16365))
+:assumption (or x28177 x30675)
+:assumption (or x8528 x16270)
+:assumption (or x27396 x31623)
+:assumption (or x22861 x513 (not x23454) (not x25235) (not x21392))
+:assumption (or (not x7811) x1621 (not x11488))
+:assumption (or (not x18627) x19211)
+:assumption (or x26617 x16738)
+:assumption (or x6979 (not x3152))
+:assumption (or (not x18126) (not x30933))
+:assumption (or (not x30191) x3259)
+:assumption (or x13326 (not x11219))
+:assumption (or x30255 x4203)
+:assumption (or (not x18826) (not x11418))
+:assumption (or x13018 (not x30368))
+:assumption (or x9938 x22180)
+:assumption (or x4991 (not x28997))
+:assumption (or (not x31889) x16931)
+:assumption (or (not x15184) x19707)
+:assumption (or x20128 x31608 x2060)
+:assumption (or x3130 x26911)
+:assumption (or (not x1648) (not x12921))
+:assumption (or x24824 x26497)
+:assumption (or (not x31676) (not x29020))
+:assumption (or x30891 (not x18549))
+:assumption (or (not x13860) x14875)
+:assumption (or x22009 x3681)
+:assumption (or x15759 x5662)
+:assumption (or x22119 x13434 x4888)
+:assumption (or x31086 x10636)
+:assumption (or x3127 (not x3282))
+:assumption (or x8077 x7512)
+:assumption (or x13956 (not x26810) x3)
+:assumption (or x21298 (not x31755) (not x4378) x3593)
+:assumption (or (not x8002) (not x16525) (not x921) (not x23244))
+:assumption (or (not x27838) x24837)
+:assumption (or (not x13030) (not x24228))
+:assumption (or (not x30251) x26680 (not x21815))
+:assumption (or x23498 (not x2694))
+:assumption (or x13914 (not x3224) x31643 (not x11383) x28222)
+:assumption (or (not x6284) (not x16454))
+:assumption (or x26586 (not x21136))
+:assumption (or x27520 (not x18819))
+:assumption (or (not x8586) x3101 x2258 (not x14818))
+:assumption (or (not x1393) x25209 (not x12903))
+:assumption (or x14503 x13795)
+:assumption (or x6074 x17251 x19029 x16907)
+:assumption (or (not x17190) (not x29894))
+:assumption (or (not x11329) x25208)
+:assumption (or (not x317) x4047)
+:assumption (or (not x2993) (not x20025))
+:assumption (or (not x19749) (not x27998))
+:assumption (or x24915 x13103)
+:assumption (or (not x25889) x27917)
+:assumption (or (not x22816) (not x25946))
+:assumption (or (not x17075) (not x2307))
+:assumption (or x158 x18603)
+:assumption (or x12072 (not x1476) x15863 x9482)
+:assumption (or (not x8002) (not x1585))
+:assumption (or x1249 (not x17855))
+:assumption (or x22471 (not x14569))
+:assumption (or x6041 x30080)
+:assumption (or x18864 x19262)
+:assumption (or (not x8118) (not x9055) x14839)
+:assumption (or x14088 x28912)
+:assumption (or x3482 (not x27038) (not x8453))
+:assumption (or x20266 (not x14501) x18452 (not x5520) (not x12701))
+:assumption (or (not x2811) x16145 (not x18155) x18551 x30413)
+:assumption (or (not x30685) x17141)
+:assumption (or x12516 x13544)
+:assumption (or x13422 (not x17846))
+:assumption (or x24126 x9058)
+:assumption (or (not x17483) (not x29625))
+:assumption (or x3435 (not x2246) x14455 x23888)
+:assumption (or (not x2622) (not x14635))
+:assumption (or (not x24113) x14225)
+:assumption (or (not x14882) x31608 (not x19678) (not x13576) x20128 x27860 (not x30792))
+:assumption (or (not x1786) (not x13415) (not x26899) x7748 x27019)
+:assumption (or (not x13634) x7358)
+:assumption (or (not x4506) x31614)
+:assumption (or x14455 (not x17510))
+:assumption (or x21815 x28420 (not x28904))
+:assumption (or x14198 x26483)
+:assumption (or (not x15764) (not x19981))
+:assumption (or x847 (not x30637))
+:assumption (or (not x14140) x30466)
+:assumption (or x6887 (not x24133) x16808)
+:assumption (or x18742 x17372 (not x1564) (not x1014) x26449)
+:assumption (or (not x24345) (not x8786))
+:assumption (or (not x16591) x24592)
+:assumption (or (not x1343) (not x10550))
+:assumption (or (not x1278) (not x19484))
+:assumption (or x10916 x20963 (not x30620) (not x22666) x2487)
+:assumption (or (not x13283) x30895)
+:assumption (or (not x22745) x16090)
+:assumption (or x5917 x25034 (not x30187) (not x12692) x25369)
+:assumption (or (not x7925) (not x27497))
+:assumption (or x27581 x14148)
+:assumption (or (not x312) (not x25297))
+:assumption (or x30475 x8718 x18234)
+:assumption (or (not x4869) x24101 x3782 (not x4058))
+:assumption (or (not x22108) x2753)
+:assumption (or x3172 (not x23347))
+:assumption (or (not x24352) (not x13956))
+:assumption (or x27371 (not x24137))
+:assumption (or (not x23357) (not x17359))
+:assumption (or (not x25640) x9884)
+:assumption (or x20622 x13018)
+:assumption (or x21815 (not x3302))
+:assumption (or x17376 x11646)
+:assumption (or (not x11489) (not x15535))
+:assumption (or (not x9542) (not x918))
+:assumption (or x14444 (not x3307))
+:assumption (or (not x14368) (not x8527))
+:assumption (or x5097 (not x30828) (not x2217) x23702 (not x30762) x3844)
+:assumption (or x4257 x22826 x383 x11721 x28699)
+:assumption (or x14541 (not x21216))
+:assumption (or (not x7835) (not x1460) x21942 (not x31806))
+:assumption (or x29048 (not x2464))
+:assumption (or (not x20868) (not x6104) (not x16719) (not x1669))
+:assumption (or (not x13832) x29968)
+:assumption (or x10051 x24785)
+:assumption (or (not x8417) (not x23244))
+:assumption (or x4026 (not x24573))
+:assumption (or x27329 x31013 x27045)
+:assumption (or (not x22914) (not x29549))
+:assumption (or x2547 x23386)
+:assumption (or x22883 (not x2346))
+:assumption (or x8462 (not x22703))
+:assumption (or (not x6054) (not x10789) x18456)
+:assumption (or x20140 (not x8894))
+:assumption (or x23085 (not x17823))
+:assumption (or (not x12741) (not x31443))
+:assumption (or (not x20055) x5719)
+:assumption (or (not x22152) (not x16151))
+:assumption (or (not x31513) (not x23250))
+:assumption (or (not x6594) x11657)
+:assumption (or x3908 x24346 (not x4961) x3311)
+:assumption (or x12382 (not x984))
+:assumption (or (not x30435) x17297)
+:assumption (or x15583 x10887)
+:assumption (or x21638 x2648)
+:assumption (or (not x24635) x7042)
+:assumption (or x28112 x24130)
+:assumption (or x12624 (not x21877))
+:assumption (or x21999 (not x17101))
+:assumption (or (not x11451) x29928)
+:assumption (or x4378 (not x28595))
+:assumption (or (not x6910) x23244 (not x23555))
+:assumption (or (not x29832) x18179 (not x20188))
+:assumption (or x16004 x6415)
+:assumption (or (not x3389) (not x30591) x31716 x22747 (not x9361) x16409)
+:assumption (or x10023 (not x27619))
+:assumption (or (not x22405) x15089)
+:assumption (or (not x3455) (not x5904))
+:assumption (or (not x7417) (not x30283) x13434)
+:assumption (or (not x23015) (not x31708))
+:assumption (or (not x16957) (not x27391))
+:assumption (or (not x1906) (not x24185))
+:assumption (or x26284 (not x16441) (not x24058) (not x13956))
+:assumption (or x28586 x17409)
+:assumption (or (not x17615) (not x12383))
+:assumption (or (not x17383) x27349 x6039 x13622)
+:assumption (or x11742 x10287)
+:assumption (or (not x7983) (not x9607))
+:assumption (or x903 x6225 (not x15156) x1157 (not x16824))
+:assumption (or (not x12202) (not x14005))
+:assumption (or x29978 (not x12984))
+:assumption (or x10304 x28250)
+:assumption (or x4380 (not x30138))
+:assumption (or x27071 (not x16588))
+:assumption (or x2527 x9351)
+:assumption (or x9586 x8602 (not x23252) (not x5949))
+:assumption (or (not x29811) (not x696))
+:assumption (or (not x6496) (not x29878))
+:assumption (or x12213 x31789 x5743 (not x4379))
+:assumption (or (not x13674) x23030 x13802 (not x5528) (not x9008))
+:assumption (or (not x25405) x3410)
+:assumption (or (not x1729) (not x5539))
+:assumption (or (not x21602) (not x10208))
+:assumption (or x29076 (not x24965))
+:assumption (or x13898 x28584 x11693)
+:assumption (or x25173 (not x17967))
+:assumption (or x30927 (not x23364))
+:assumption (or (not x173) (not x11808))
+:assumption (or x8914 (not x1825))
+:assumption (or (not x26789) (not x10978))
+:assumption (or (not x7853) x23244 x8002)
+:assumption (or (not x9210) (not x9558))
+:assumption (or x25325 x1995)
+:assumption (or (not x24067) (not x17919))
+:assumption (or x20917 x8508)
+:assumption (or x20752 x28908)
+:assumption (or (not x30943) (not x3050))
+:assumption (or x16571 x8356)
+:assumption (or (not x17728) (not x29632) x16025)
+:assumption (or x11665 x2676)
+:assumption (or x2571 (not x768))
+:assumption (or x24458 (not x24637))
+:assumption (or x17419 x7005 x23244)
+:assumption (or (not x26243) x25334)
+:assumption (or (not x22268) x9147)
+:assumption (or (not x30138) x26897 x28471 (not x26131))
+:assumption (or x5286 (not x7765))
+:assumption (or x9406 (not x3451))
+:assumption (or (not x12566) x10652 (not x2088))
+:assumption (or x9192 (not x30356))
+:assumption (or x9061 x27060)
+:assumption (or (not x29595) x26315)
+:assumption (or (not x12031) (not x3947))
+:assumption (or (not x18318) (not x19948))
+:assumption (or x6415 x20023)
+:assumption (or x18409 x15634)
+:assumption (or x17538 (not x4229))
+:assumption (or (not x24077) x12906)
+:assumption (or (not x3161) (not x16417))
+:assumption (or (not x2133) (not x24021))
+:assumption (or (not x227) x724)
+:assumption (or (not x6818) x22910)
+:assumption (or (not x21740) (not x19406))
+:assumption (or (not x8002) x16206)
+:assumption (or (not x5739) x26549)
+:assumption (or x21881 x683)
+:assumption (or x35 x3012)
+:assumption (or (not x26759) x23244 x21790)
+:assumption (or x25718 x8757)
+:assumption (or (not x14362) x3680)
+:assumption (or (not x16753) (not x18633))
+:assumption (or (not x22899) x24079 x6009)
+:assumption (or x14133 (not x8888))
+:assumption (or (not x26045) (not x28611))
+:assumption (or (not x16048) (not x450))
+:assumption (or x14981 (not x10061))
+:assumption (or x13603 x13797)
+:assumption (or (not x14943) x14790)
+:assumption (or x12517 (not x28691))
+:assumption (or x14474 (not x8188))
+:assumption (or (not x28034) x9562)
+:assumption (or x10142 x953)
+:assumption (or (not x9700) x8604)
+:assumption (or (not x23884) x9180)
+:assumption (or x26386 (not x31217) x21745 (not x16227) (not x12402) (not x15233) x12543 x148)
+:assumption (or x28436 (not x20897) x21432 x9880)
+:assumption (or (not x30395) (not x26391))
+:assumption (or x1621 (not x26486) (not x3738) x30098)
+:assumption (or x243 (not x17655))
+:assumption (or x5360 x1205)
+:assumption (or (not x10612) x7093)
+:assumption (or (not x27641) (not x30393))
+:assumption (or x16214 x28191)
+:assumption (or x29603 x15377)
+:assumption (or (not x31462) (not x30341))
+:assumption (or (not x6813) (not x18891))
+:assumption (or (not x20325) x18545)
+:assumption (or (not x6149) (not x1230) (not x22371))
+:assumption (or (not x24533) (not x30982))
+:assumption (or (not x13145) x30607)
+:assumption (or x24722 (not x27215))
+:assumption (or x7644 x13848)
+:assumption (or (not x29360) (not x18188))
+:assumption (or (not x25678) x19333)
+:assumption (or x15805 x9016 (not x19388) (not x28431) x8602 x7378 (not x15171) (not x3061))
+:assumption (or (not x18557) x6452)
+:assumption (or x21481 (not x21926))
+:assumption (or x3119 x31076 x13576)
+:assumption (or (not x26750) x4203)
+:assumption (or (not x13956) (not x25008) x18500 (not x14940))
+:assumption (or x21975 x14907)
+:assumption (or x4691 x8391)
+:assumption (or (not x3229) (not x14721))
+:assumption (or (not x30907) (not x13896))
+:assumption (or (not x1663) (not x19835))
+:assumption (or (not x24419) x7528)
+:assumption (or x13126 (not x8081) x8002 (not x2663) x23244)
+:assumption (or x15265 x15861)
+:assumption (or x23628 x17976 (not x12923))
+:assumption (or x26377 (not x5323))
+:assumption (or x19800 x15259)
+:assumption (or (not x6387) x22686)
+:assumption (or (not x8002) (not x1823))
+:assumption (or (not x20482) x27935 (not x3212))
+:assumption (or (not x1429) (not x15460) (not x18960) x23873)
+:assumption (or (not x21298) (not x2492))
+:assumption (or (not x8460) x14717)
+:assumption (or x25891 (not x25781))
+:assumption (or (not x1100) x11777)
+:assumption (or (not x9476) (not x30996))
+:assumption (or (not x30111) x19009)
+:assumption (or x18113 (not x5044) x15875)
+:assumption (or (not x28849) x9025)
+:assumption (or x7823 x23369)
+:assumption (or (not x31088) x7161 x14673)
+:assumption (or (not x9871) (not x4577))
+:assumption (or x30990 x408)
+:assumption (or x20060 (not x19914))
+:assumption (or x19992 (not x13966) (not x13789) x31921)
+:assumption (or (not x29065) (not x6108))
+:assumption (or (not x5826) x4497)
+:assumption (or (not x24155) (not x26614))
+:assumption (or (not x4535) (not x14435) (not x16110))
+:assumption (or (not x26162) (not x25486) x17937 x27370 x7545 (not x8002))
+:assumption (or x3358 x24937)
+:assumption (or (not x6188) x29213)
+:assumption (or x26489 x6121)
+:assumption (or x4574 x25994)
+:assumption (or x5884 (not x6444))
+:assumption (or x26730 (not x4167))
+:assumption (or (not x30079) (not x13045))
+:assumption (or (not x22282) x25517)
+:assumption (or x8461 x5532)
+:assumption (or x28255 (not x13945) (not x8629))
+:assumption (or (not x5238) (not x14687))
+:assumption (or (not x21026) x15626 x18268)
+:assumption (or x24146 (not x15017))
+:assumption (or x25008 x20474)
+:assumption (or (not x21298) x21315 (not x17106))
+:assumption (or (not x21432) x27761)
+:assumption (or x18335 (not x5333))
+:assumption (or (not x5528) x25216)
+:assumption (or (not x2931) (not x18839) (not x13845) x11245 (not x15072))
+:assumption (or (not x16784) (not x28727))
+:assumption (or x4860 (not x28973))
+:assumption (or x22793 (not x27268))
+:assumption (or x6449 x25503)
+:assumption (or (not x25978) (not x12420) x5528)
+:assumption (or (not x8658) (not x4168))
+:assumption (or (not x31211) x22021)
+:assumption (or x9407 (not x1860))
+:assumption (or (not x11459) (not x20596))
+:assumption (or x21815 x15891)
+:assumption (or x5718 x864)
+:assumption (or x14942 (not x205))
+:assumption (or (not x16153) x5112)
+:assumption (or (not x14886) (not x14927))
+:assumption (or x18805 x2179)
+:assumption (or x19321 x16185)
+:assumption (or x18759 x11784)
+:assumption (or (not x23015) (not x8002))
+:assumption (or (not x13339) x3220)
+:assumption (or (not x7342) x15629)
+:assumption (or (not x27068) (not x20545))
+:assumption (or (not x16881) (not x28564))
+:assumption (or x28290 x10987)
+:assumption (or (not x16244) x16470)
+:assumption (or x2586 (not x23247))
+:assumption (or x14844 x2762 x13956)
+:assumption (or x5325 x7105 x9008)
+:assumption (or (not x12578) (not x1744))
+:assumption (or x5343 (not x31591))
+:assumption (or x6965 x20088 (not x25424) x2320 x11532)
+:assumption (or (not x28861) (not x4006))
+:assumption (or (not x28349) x9304)
+:assumption (or (not x28536) (not x17892))
+:assumption (or x25434 x19104)
+:assumption (or x25796 (not x8424))
+:assumption (or x29062 x18038 x19069 (not x29315) (not x25285))
+:assumption (or (not x30073) (not x16262))
+:assumption (or x10315 (not x29985))
+:assumption (or x20544 (not x30892))
+:assumption (or (not x5758) x252 x1484 (not x23056))
+:assumption (or (not x6714) (not x15782))
+:assumption (or x5521 (not x24348))
+:assumption (or (not x7504) x17812)
+:assumption (or (not x17836) x14396)
+:assumption (or (not x8462) x9577)
+:assumption (or (not x5834) x21650)
+:assumption (or x26952 (not x665))
+:assumption (or (not x28161) x22591)
+:assumption (or x10866 x4503)
+:assumption (or (not x24807) x16262 x25659)
+:assumption (or (not x21475) (not x21312))
+:assumption (or x2410 x9135)
+:assumption (or (not x20498) (not x17908))
+:assumption (or (not x11967) x24307)
+:assumption (or x5202 x11257)
+:assumption (or x6969 (not x14370) (not x16900))
+:assumption (or x28163 (not x30482))
+:assumption (or x12661 x8919)
+:assumption (or (not x21057) (not x27958))
+:assumption (or x18249 (not x7750))
+:assumption (or (not x26774) (not x315))
+:assumption (or (not x21432) (not x8946))
+:assumption (or x13894 x7000)
+:assumption (or (not x15636) x6177)
+:assumption (or (not x31581) x4429)
+:assumption (or (not x3081) (not x29129))
+:assumption (or (not x22332) (not x10930))
+:assumption (or x24557 x288 x29785 x28973)
+:assumption (or (not x15919) (not x15440))
+:assumption (or x26776 x30857)
+:assumption (or (not x29489) (not x11302))
+:assumption (or (not x14626) x3738)
+:assumption (or x1495 (not x16040))
+:assumption (or x18206 x100)
+:assumption (or (not x24132) x10071)
+:assumption (or x23370 x1801)
+:assumption (or (not x8002) x17639)
+:assumption (or (not x652) x12827)
+:assumption (or x1056 (not x28037))
+:assumption (or x26106 (not x15146))
+:assumption (or x28438 x965)
+:assumption (or (not x30990) (not x27110) x22239 (not x408) (not x17778) (not x24414) x8602 x18860)
+:assumption (or (not x7351) x995)
+:assumption (or (not x13223) x4234 (not x26954) x4222 (not x7749) (not x11006) (not x20476))
+:assumption (or (not x26939) (not x14730))
+:assumption (or x20491 (not x12798))
+:assumption (or x22666 (not x21473))
+:assumption (or (not x28425) x15717)
+:assumption (or x31060 (not x24354))
+:assumption (or x31200 (not x16547) x14553 x19195)
+:assumption (or (not x3614) (not x15499) (not x264) (not x21309) x1610 x17361)
+:assumption (or x26431 x5006)
+:assumption (or (not x30919) (not x28434))
+:assumption (or x5084 (not x8002))
+:assumption (or (not x31466) (not x10065))
+:assumption (or (not x19605) x21389)
+:assumption (or (not x9531) x2294)
+:assumption (or x26603 x20584)
+:assumption (or x21061 x5129)
+:assumption (or (not x28303) (not x28701))
+:assumption (or x26578 x6385 (not x3585) (not x16127) x17805 (not x29722))
+:assumption (or x27787 x900)
+:assumption (or (not x4395) x19256)
+:assumption (or (not x22784) x8902)
+:assumption (or x4916 x4923 (not x25356) x6246)
+:assumption (or x13605 (not x19840))
+:assumption (or (not x27664) x9531)
+:assumption (or x23903 (not x23708) (not x2334) (not x13487))
+:assumption (or x17109 (not x26289))
+:assumption (or x14582 x8002)
+:assumption (or (not x26762) x17950)
+:assumption (or (not x1572) x18934)
+:assumption (or x16403 x22087)
+:assumption (or x19993 (not x14839))
+:assumption (or (not x1323) (not x5226))
+:assumption (or x26709 x4104)
+:assumption (or (not x418) x31099)
+:assumption (or (not x9875) (not x7972))
+:assumption (or x18002 x1794)
+:assumption (or (not x7181) x20190)
+:assumption (or (not x13280) (not x9539))
+:assumption (or x9458 x7392 (not x18245) x24312)
+:assumption (or x6686 x6013 x25911 x4305)
+:assumption (or (not x19101) (not x15400) (not x11051) x16907)
+:assumption (or (not x27836) (not x24368))
+:assumption (or x21348 (not x8002))
+:assumption (or x26681 (not x15365))
+:assumption (or (not x11286) x25659 x24942)
+:assumption (or (not x20014) (not x8843))
+:assumption (or x12563 (not x23248))
+:assumption (or x24079 x27684)
+:assumption (or x9313 x25328)
+:assumption (or (not x9332) x315 x9256 x9990)
+:assumption (or x14764 x28871)
+:assumption (or (not x25339) (not x14543))
+:assumption (or x2154 (not x20490))
+:assumption (or x9989 (not x22855) (not x26303) (not x142))
+:assumption (or x9854 (not x22962))
+:assumption (or x9557 x5257)
+:assumption (or x19272 x23843)
+:assumption (or (not x17026) (not x13438))
+:assumption (or x28092 x19337 (not x8184))
+:assumption (or x9346 x21085)
+:assumption (or x10957 (not x24724))
+:assumption (or (not x3709) x22696)
+:assumption (or x31747 x28063)
+:assumption (or (not x163) x8757)
+:assumption (or (not x28387) (not x15475))
+:assumption (or (not x218) x25931)
+:assumption (or x1756 (not x306))
+:assumption (or x15735 x5297)
+:assumption (or x2063 (not x13485))
+:assumption (or x9133 (not x7217))
+:assumption (or x29929 (not x12722))
+:assumption (or (not x27395) x25748)
+:assumption (or x22855 (not x8876))
+:assumption (or (not x17069) (not x11008))
+:assumption (or x13311 (not x27200))
+:assumption (or x18498 (not x14201))
+:assumption (or (not x21732) (not x9361))
+:assumption (or (not x548) x21276)
+:assumption (or x19705 x30521 (not x25376) x23757 (not x6830) (not x25857) (not x11017))
+:assumption (or (not x4026) (not x21022) (not x3048) x10330)
+:assumption (or (not x16907) x26839)
+:assumption (or x4031 (not x4990))
+:assumption (or x25645 (not x27012))
+:assumption (or (not x18769) (not x7220))
+:assumption (or x17965 x1393)
+:assumption (or (not x27774) x11875)
+:assumption (or (not x9586) (not x8602))
+:assumption (or (not x918) x21166)
+:assumption (or x10092 (not x26746))
+:assumption (or x1393 (not x27842))
+:assumption (or (not x1393) (not x25403))
+:assumption (or x13191 (not x17269))
+:assumption (or x6261 x17578)
+:assumption (or x19802 x29866)
+:assumption (or x14195 (not x15987))
+:assumption (or (not x25041) (not x20151))
+:assumption (or (not x23325) (not x18785))
+:assumption (or (not x31004) (not x21484))
+:assumption (or x5326 x10659)
+:assumption (or (not x22099) (not x27132))
+:assumption (or (not x5096) (not x25936))
+:assumption (or (not x16848) (not x25740))
+:assumption (or x11938 x21962 x26888)
+:assumption (or (not x22976) (not x24052))
+:assumption (or x28321 x6281)
+:assumption (or x8996 x15644)
+:assumption (or x11200 x29368)
+:assumption (or x3230 x1623)
+:assumption (or (not x29) x17075 x27634 (not x20937))
+:assumption (or x28873 x31510)
+:assumption (or x31232 x10933)
+:assumption (or (not x12411) (not x24985))
+:assumption (or x31731 x18212)
+:assumption (or (not x6050) (not x17796))
+:assumption (or x537 x21842)
+:assumption (or (not x20957) x28888)
+:assumption (or x29004 x14186 (not x25659))
+:assumption (or x13870 x4954)
+:assumption (or x9503 x25593)
+:assumption (or x3594 x18114)
+:assumption (or (not x16448) x30865 x6759)
+:assumption (or (not x11060) (not x6750) (not x7286))
+:assumption (or (not x13359) x20119 x16910)
+:assumption (or (not x1943) x19387)
+:assumption (or x9744 x16275)
+:assumption (or x11884 (not x23772))
+:assumption (or x27227 x25315 (not x27771))
+:assumption (or (not x28264) x16937)
+:assumption (or x2711 (not x5788))
+:assumption (or x30624 x1673)
+:assumption (or (not x7559) (not x12960))
+:assumption (or (not x2787) x23946)
+:assumption (or x21160 x18118)
+:assumption (or (not x4606) x29673)
+:assumption (or (not x1547) (not x31003))
+:assumption (or (not x12888) (not x17359) (not x702) x11281)
+:assumption (or x12458 x3782 (not x29442) (not x471))
+:assumption (or (not x31829) x16122)
+:assumption (or x14088 (not x6036))
+:assumption (or (not x27257) x13956)
+:assumption (or x7419 x18859)
+:assumption (or (not x18586) x2719)
+:assumption (or (not x22855) (not x2167))
+:assumption (or (not x5528) x7689)
+:assumption (or (not x30171) x27256)
+:assumption (or (not x27256) x9992)
+:assumption (or (not x30836) (not x27893))
+:assumption (or x8152 x8513)
+:assumption (or x1941 (not x16651) x19677)
+:assumption (or (not x20058) x28339)
+:assumption (or (not x21589) (not x23180))
+:assumption (or (not x21791) (not x5627))
+:assumption (or x2740 (not x23837))
+:assumption (or x22666 (not x20963))
+:assumption (or (not x25713) (not x1577))
+:assumption (or x23367 (not x28364))
+:assumption (or x27954 x3726)
+:assumption (or (not x13881) (not x6524))
+:assumption (or x18972 (not x26341) (not x14565) (not x16591) x27474)
+:assumption (or x23547 (not x11744))
+:assumption (or (not x17552) (not x19997))
+:assumption (or (not x5547) x20230)
+:assumption (or (not x24603) x25674)
+:assumption (or x13956 x1233)
+:assumption (or (not x18570) x20692)
+:assumption (or x18287 (not x1094))
+:assumption (or (not x24757) x11468)
+:assumption (or x17854 (not x22202))
+:assumption (or (not x10364) (not x25645) (not x18672))
+:assumption (or (not x4266) x4871)
+:assumption (or (not x21026) x23341)
+:assumption (or (not x24907) (not x22240))
+:assumption (or (not x20153) (not x6730))
+:assumption (or (not x2603) (not x11522))
+:assumption (or x3297 x1677)
+:assumption (or (not x18838) x7537 x21546 (not x23399) x19839)
+:assumption (or x23382 (not x19875))
+:assumption (or (not x10512) (not x30549))
+:assumption (or x17753 x22)
+:assumption (or (not x8889) x29501)
+:assumption (or (not x25102) (not x24309))
+:assumption (or x5386 x13727)
+:assumption (or x24906 x29649 (not x28912) x6718)
+:assumption (or x2036 x9973)
+:assumption (or (not x30925) x9218)
+:assumption (or (not x7302) x25076)
+:assumption (or x19797 (not x25536))
+:assumption (or x25744 x30224)
+:assumption (or x25418 (not x20722))
+:assumption (or x29278 (not x20961) (not x22378) x3728 x25927 (not x18333) (not x2383))
+:assumption (or (not x10246) x9643 (not x21430))
+:assumption (or x19686 (not x25292))
+:assumption (or (not x21062) (not x30448))
+:assumption (or x14550 (not x13802) x31693 (not x10193) (not x18783) x29158)
+:assumption (or x14347 x7251)
+:assumption (or x14682 (not x13609))
+:assumption (or (not x23571) (not x14061))
+:assumption (or x21281 (not x464))
+:assumption (or (not x3556) x21017)
+:assumption (or x31710 (not x16189))
+:assumption (or (not x14676) (not x5997) (not x25360) (not x27314) x7220)
+:assumption (or x17643 (not x17359))
+:assumption (or (not x10947) (not x31285))
+:assumption (or x4203 x9008)
+:assumption (or (not x8961) x752)
+:assumption (or (not x1146) x21268)
+:assumption (or (not x30503) (not x29677))
+:assumption (or x11568 x28435 (not x10455) x15854)
+:assumption (or x14904 x1423 (not x26934) (not x13113))
+:assumption (or x5050 (not x2751))
+:assumption (or (not x25719) (not x20566))
+:assumption (or x30550 x31851 (not x296))
+:assumption (or x16671 (not x1549))
+:assumption (or (not x12426) x3174)
+:assumption (or x24962 x24853)
+:assumption (or x18859 (not x1576))
+:assumption (or (not x26008) x13358)
+:assumption (or x25351 (not x11751))
+:assumption (or (not x5082) x18421)
+:assumption (or x13524 x7367)
+:assumption (or (not x28047) (not x18657))
+:assumption (or x15234 x13312)
+:assumption (or x6513 (not x21496))
+:assumption (or (not x760) x12815)
+:assumption (or (not x13715) (not x29745))
+:assumption (or x18031 x20131 (not x30110) x825)
+:assumption (or (not x9335) (not x18880))
+:assumption (or (not x16693) (not x23543))
+:assumption (or x23244 x18474)
+:assumption (or x12171 x1600)
+:assumption (or x22604 (not x30848))
+:assumption (or (not x513) x28364)
+:assumption (or x2140 (not x15885))
+:assumption (or x9430 (not x8768))
+:assumption (or x21063 x1743)
+:assumption (or (not x17034) (not x6969))
+:assumption (or (not x25659) (not x19492))
+:assumption (or x1862 x22604)
+:assumption (or x24202 (not x6655))
+:assumption (or x23589 (not x24847))
+:assumption (or (not x6490) x1747)
+:assumption (or (not x27537) x10161)
+:assumption (or x26764 (not x10954))
+:assumption (or (not x18518) (not x14450))
+:assumption (or x3543 (not x12736))
+:assumption (or x26900 (not x7926))
+:assumption (or x7604 x6528)
+:assumption (or x13574 (not x4744))
+:assumption (or (not x31589) x25689 (not x13652) (not x1689))
+:assumption (or x29737 (not x4881))
+:assumption (or (not x8184) x18497)
+:assumption (or x7760 x26342)
+:assumption (or (not x4604) (not x15846))
+:assumption (or (not x11466) (not x27289) x25432 (not x805) (not x25418))
+:assumption (or (not x8568) (not x12999))
+:assumption (or (not x974) (not x2435))
+:assumption (or (not x20727) x6307 x988)
+:assumption (or x28930 x27054 x23244)
+:assumption (or (not x25456) (not x5185))
+:assumption (or x24673 x182)
+:assumption (or (not x30880) x25854 (not x20460) x7511 x14313 x9253)
+:assumption (or x2805 x23136)
+:assumption (or x13536 x14898)
+:assumption (or (not x18266) (not x24652) x28496 (not x26023) (not x1392) (not x14967) (not x31352) (not x13163))
+:assumption (or x7539 (not x3855))
+:assumption (or (not x9633) (not x8652))
+:assumption (or (not x16362) x4172)
+:assumption (or x18676 (not x7451) (not x25746) x25704 x20333)
+:assumption (or (not x21618) (not x4633))
+:assumption (or (not x23391) (not x9513))
+:assumption (or (not x3916) x19283 (not x8002) (not x29649))
+:assumption (or (not x6514) x6789)
+:assumption (or x28680 (not x29576))
+:assumption (or x7252 (not x2130))
+:assumption (or (not x6203) x8992)
+:assumption (or x13956 (not x6840))
+:assumption (or x5634 (not x27670))
+:assumption (or (not x19428) x18100 (not x21305) (not x30954))
+:assumption (or (not x26178) (not x13398))
+:assumption (or (not x20564) (not x9127))
+:assumption (or x15861 (not x11055) x25032)
+:assumption (or (not x29337) x20402)
+:assumption (or x20119 (not x5280) x25315)
+:assumption (or (not x742) (not x3329))
+:assumption (or (not x13617) (not x11488))
+:assumption (or (not x4314) x14487)
+:assumption (or x11527 x23972)
+:assumption (or (not x10596) x23830)
+:assumption (or x14401 (not x30549))
+:assumption (or x18876 x30078)
+:assumption (or (not x9988) (not x21784))
+:assumption (or x1056 x31675)
+:assumption (or x8537 x10800)
+:assumption (or (not x8002) (not x14892))
+:assumption (or (not x13293) (not x24204))
+:assumption (or (not x18917) (not x11390))
+:assumption (or x13879 (not x7382))
+:assumption (or x1417 (not x22047))
+:assumption (or (not x31782) (not x8375) x9622 x24758)
+:assumption (or x2688 x22154)
+:assumption (or (not x26648) (not x27254))
+:assumption (or x23442 x17099)
+:assumption (or x2999 x21843)
+:assumption (or x30879 x17533 (not x1601))
+:assumption (or x23524 (not x10624))
+:assumption (or (not x26851) x19814)
+:assumption (or x13330 (not x3811))
+:assumption (or x26670 x23806 (not x18814) x964 x6556 (not x7286))
+:assumption (or (not x6552) x8002)
+:assumption (or (not x7690) x1358)
+:assumption (or x18984 x31767)
+:assumption (or (not x19625) (not x30193))
+:assumption (or (not x17075) (not x22768) x23868)
+:assumption (or (not x17908) x7752 x75 (not x2216))
+:assumption (or (not x8002) x1125)
+:assumption (or x29640 x12276)
+:assumption (or x23244 x7452)
+:assumption (or (not x22708) x27869)
+:assumption (or (not x2687) (not x27568) x29606)
+:assumption (or x31635 (not x13224))
+:assumption (or (not x15159) (not x18637))
+:assumption (or (not x12215) x29001 (not x8602))
+:assumption (or (not x17163) (not x1967))
+:assumption (or (not x8166) (not x27680))
+:assumption (or (not x21545) (not x12099))
+:assumption (or x16913 (not x22858))
+:assumption (or (not x20001) x3952 x10)
+:assumption (or x19629 (not x6734) x29707 x26713)
+:assumption (or (not x10351) (not x25146))
+:assumption (or x18096 x17164)
+:assumption (or (not x30813) (not x8654))
+:assumption (or (not x20391) (not x27572))
+:assumption (or (not x27464) x11240)
+:assumption (or (not x10289) x18647)
+:assumption (or x2055 x14524)
+:assumption (or (not x14374) (not x12800))
+:assumption (or x4305 x16443)
+:assumption (or (not x10779) x28310)
+:assumption (or (not x24850) (not x16560))
+:assumption (or (not x16315) (not x24763))
+:assumption (or x25632 (not x30113) (not x3125) x7954)
+:assumption (or x13487 (not x17895) x16025)
+:assumption (or x27727 x119)
+:assumption (or (not x9936) x14294)
+:assumption (or x31799 (not x26841))
+:assumption (or (not x18700) (not x30002) (not x25787) x30887)
+:assumption (or (not x691) (not x30914))
+:assumption (or x26938 x7406)
+:assumption (or x26686 (not x29450))
+:assumption (or (not x26007) x10541)
+:assumption (or x28747 (not x13558))
+:assumption (or (not x15744) (not x7861))
+:assumption (or (not x24342) (not x9172))
+:assumption (or (not x26531) (not x20494))
+:assumption (or x2707 (not x18676))
+:assumption (or (not x3807) x13592)
+:assumption (or x16801 (not x10467))
+:assumption (or x22844 x14338 (not x11470))
+:assumption (or x4984 (not x6133) x27809 x19643)
+:assumption (or (not x13004) x25545)
+:assumption (or (not x28242) (not x10749))
+:assumption (or x28256 (not x23463))
+:assumption (or (not x5687) (not x6036))
+:assumption (or (not x24276) x26304)
+:assumption (or (not x30851) (not x17109))
+:assumption (or x21164 (not x9423))
+:assumption (or x23244 (not x16416) x7235)
+:assumption (or (not x26107) (not x5597) (not x27612) x14435)
+:assumption (or (not x8677) (not x27112))
+:assumption (or (not x5850) (not x8827))
+:assumption (or (not x25666) x4092)
+:assumption (or (not x28977) (not x20598))
+:assumption (or x1878 (not x25087))
+:assumption (or (not x21543) x23961)
+:assumption (or (not x18608) (not x8935))
+:assumption (or (not x2691) x335)
+:assumption (or x15888 x20328)
+:assumption (or (not x28102) (not x27044))
+:assumption (or (not x13576) x31910)
+:assumption (or x21815 x25649)
+:assumption (or x10070 (not x18586))
+:assumption (or x4493 (not x23309))
+:assumption (or x12107 x15303)
+:assumption (or (not x28986) (not x8002) x23244)
+:assumption (or x28279 (not x19771))
+:assumption (or (not x30486) (not x11338))
+:assumption (or x20737 (not x26089) x13852 x8700)
+:assumption (or x827 (not x15031))
+:assumption (or (not x17607) x16234)
+:assumption (or (not x29562) x11715)
+:assumption (or (not x23947) x3762)
+:assumption (or (not x23244) (not x12024))
+:assumption (or (not x17686) x19677)
+:assumption (or (not x26557) (not x14938))
+:assumption (or x9355 x6838)
+:assumption (or x28973 (not x31608) (not x1410))
+:assumption (or x2424 (not x16478) x17855 (not x22947))
+:assumption (or (not x31059) x25926)
+:assumption (or (not x11211) (not x30271))
+:assumption (or (not x12439) (not x22818) x25659)
+:assumption (or x3940 (not x13442))
+:assumption (or x3977 x19953)
+:assumption (or (not x23244) x29867)
+:assumption (or (not x9629) x8796)
+:assumption (or x6885 (not x29090) x11142 x672 x18404 x888 x17680 x8027)
+:assumption (or (not x6576) x29284)
+:assumption (or x24451 x11422)
+:assumption (or (not x23536) x12016)
+:assumption (or (not x22528) x31599)
+:assumption (or (not x15120) (not x16648) x26411 (not x17730) (not x2719) (not x5224) (not x8017) x18586 (not x24388))
+:assumption (or x16288 x11209)
+:assumption (or (not x24168) (not x30245))
+:assumption (or x2724 (not x23837))
+:assumption (or (not x22440) x4377)
+:assumption (or x8602 x2910 (not x10011))
+:assumption (or x19843 x20216)
+:assumption (or (not x15242) (not x7474))
+:assumption (or (not x1393) (not x14843))
+:assumption (or (not x4138) x12178)
+:assumption (or x27491 x28122)
+:assumption (or (not x20282) (not x4725))
+:assumption (or (not x11119) x10001)
+:assumption (or (not x5374) (not x13879))
+:assumption (or (not x29435) (not x11014))
+:assumption (or (not x23580) (not x3895) (not x7083) (not x31634) x1298 (not x10555) (not x27854) (not x22520))
+:assumption (or x8225 (not x18323))
+:assumption (or (not x28490) x3167 x6296 (not x14019) (not x23170))
+:assumption (or x31291 (not x17302))
+:assumption (or (not x20214) (not x25722))
+:assumption (or (not x21051) x9531)
+:assumption (or (not x4494) x1521)
+:assumption (or x28985 (not x13904))
+:assumption (or x3135 (not x27534))
+:assumption (or (not x4532) (not x9165))
+:assumption (or x8420 x3053)
+:assumption (or (not x15368) (not x25557))
+:assumption (or x13921 (not x24137))
+:assumption (or (not x20564) x13987)
+:assumption (or (not x1370) (not x30138) x31852)
+:assumption (or (not x21735) x8658)
+:assumption (or x31716 (not x30591) (not x3389) (not x9361) x15964 (not x5206))
+:assumption (or x18006 (not x24952) x11314)
+:assumption (or (not x29695) (not x24423))
+:assumption (or (not x12873) (not x22037))
+:assumption (or (not x30432) x8002 x23244 (not x3028) x26180)
+:assumption (or (not x10693) (not x31274))
+:assumption (or x19651 (not x9994))
+:assumption (or (not x19511) (not x25933) x25911 x12647)
+:assumption (or x24947 x4709)
+:assumption (or (not x23985) (not x9954) x9066 (not x17413))
+:assumption (or (not x29333) x25799)
+:assumption (or x24079 x633)
+:assumption (or (not x28755) x6627)
+:assumption (or (not x19155) x18806)
+:assumption (or (not x7521) (not x29669))
+:assumption (or x17978 (not x3945))
+:assumption (or (not x10874) (not x4444))
+:assumption (or x25925 x17440)
+:assumption (or x17146 (not x11068) x11392 (not x16189) (not x10587) x11001)
+:assumption (or (not x20060) x14244)
+:assumption (or x485 (not x6223))
+:assumption (or (not x11242) (not x5850))
+:assumption (or (not x27914) (not x1602))
+:assumption (or (not x11602) (not x26354))
+:assumption (or x25224 x21954)
+:assumption (or x14781 (not x2634))
+:assumption (or x11637 (not x22244))
+:assumption (or x31264 x25152)
+:assumption (or x28682 (not x5194))
+:assumption (or (not x14393) (not x1393))
+:assumption (or x12045 (not x31779))
+:assumption (or x25770 (not x16969))
+:assumption (or (not x18278) x29649 x1487)
+:assumption (or (not x23264) (not x16587))
+:assumption (or (not x7672) x20849)
+:assumption (or x23699 x26217 (not x11642))
+:assumption (or (not x30239) (not x19594))
+:assumption (or x2806 (not x9531))
+:assumption (or x16610 (not x8054))
+:assumption (or (not x20585) x25095)
+:assumption (or x1790 (not x19223))
+:assumption (or x13307 (not x24851))
+:assumption (or (not x12526) (not x438) x1146 x8637 (not x16089) x16388)
+:assumption (or (not x855) x11166 (not x14580))
+:assumption (or x20123 x1690 (not x21298))
+:assumption (or x31787 x350)
+:assumption (or x30918 x25161)
+:assumption (or (not x23958) x19125)
+:assumption (or (not x8971) x27233)
+:assumption (or x21897 x16001)
+:assumption (or x2727 (not x16692))
+:assumption (or x28232 x31734 (not x30633) (not x20789))
+:assumption (or (not x6622) x7012)
+:assumption (or x27371 (not x15795))
+:assumption (or x8283 (not x2943))
+:assumption (or x3090 (not x10799))
+:assumption (or (not x10495) x29300)
+:assumption (or (not x24878) x31267 (not x16252) (not x1721) x22496 (not x15163) x16342 x2013 x20363 (not x27728))
+:assumption (or x26670 x29008 x14391)
+:assumption (or x27518 x31120)
+:assumption (or x8658 (not x30974))
+:assumption (or (not x7525) (not x6783))
+:assumption (or x11620 (not x3126) (not x10429))
+:assumption (or (not x13760) (not x23244))
+:assumption (or (not x21227) (not x14853))
+:assumption (or x28880 (not x9389))
+:assumption (or x437 (not x9008))
+:assumption (or x12560 x19923)
+:assumption (or (not x30508) x16409)
+:assumption (or (not x20395) x6054)
+:assumption (or x23244 (not x1042) x21229 x8002 (not x26804))
+:assumption (or (not x30609) x21968)
+:assumption (or x10997 (not x17613))
+:assumption (or (not x28260) (not x10268) (not x20166) x17225)
+:assumption (or x13716 (not x8023))
+:assumption (or (not x5673) x5555)
+:assumption (or (not x24046) x19992 (not x671) (not x8397) (not x29352) x18493)
+:assumption (or x21853 (not x14416))
+:assumption (or (not x4840) (not x834))
+:assumption (or x10874 (not x23254))
+:assumption (or (not x25088) x28097)
+:assumption (or x29734 (not x22633))
+:assumption (or x4136 (not x19438))
+:assumption (or x8575 (not x17296))
+:assumption (or x29500 x16752)
+:assumption (or x14455 (not x21913))
+:assumption (or (not x9105) x2185 x24067)
+:assumption (or (not x19526) (not x13687))
+:assumption (or (not x9531) (not x21034))
+:assumption (or x24719 x8441)
+:assumption (or (not x827) (not x8906) x266)
+:assumption (or x15215 x28054)
+:assumption (or x18859 x27313 (not x17660))
+:assumption (or x31526 (not x11376))
+:assumption (or (not x4186) x13407)
+:assumption (or (not x13351) x14839 x7660 x14430)
+:assumption (or x13097 (not x31777) x15547 (not x13615))
+:assumption (or (not x14839) (not x18427) (not x14404))
+:assumption (or x10261 x6996 x2787 x30208)
+:assumption (or x9703 x10474)
+:assumption (or x22696 x434)
+:assumption (or x16626 x18708)
+:assumption (or x8133 x26758)
+:assumption (or x30825 (not x14902))
+:assumption (or (not x23192) (not x7363))
+:assumption (or x7621 x22139)
+:assumption (or x22471 x7985)
+:assumption (or (not x13956) x19100)
+:assumption (or (not x25934) x19836)
+:assumption (or (not x25100) (not x18030))
+:assumption (or (not x20350) x5262)
+:assumption (or (not x9743) x19951)
+:assumption (or x22379 x17092)
+:assumption (or (not x288) (not x707))
+:assumption (or x24539 x13956)
+:assumption (or x30007 x29277 (not x3964))
+:assumption (or (not x9147) (not x14206) x22268)
+:assumption (or x2191 x29606)
+:assumption (or (not x15861) x11055)
+:assumption (or (not x16509) x17916 (not x9008))
+:assumption (or (not x31376) (not x20117))
+:assumption (or (not x12126) x21324)
+:assumption (or x11506 (not x27744))
+:assumption (or (not x14845) x30921)
+:assumption (or (not x373) (not x5376))
+:assumption (or x30834 x10527)
+:assumption (or (not x10867) x15256)
+:assumption (or (not x30113) (not x15058))
+:assumption (or (not x11792) x14643 (not x6149))
+:assumption (or (not x12578) x10985 x7283 (not x13289))
+:assumption (or (not x22459) x14591)
+:assumption (or (not x821) (not x20099) x16721 (not x19013) (not x16173) x20921 (not x14293) x16418)
+:assumption (or x19910 x9692 x30814 (not x904))
+:assumption (or x5465 x15449)
+:assumption (or (not x28540) (not x14145))
+:assumption (or x11455 (not x22579))
+:assumption (or x8065 x13558)
+:assumption (or x3022 x15948)
+:assumption (or (not x25851) x14638)
+:assumption (or x7706 (not x7346) (not x202))
+:assumption (or (not x4043) x14707)
+:assumption (or (not x29954) (not x31784))
+:assumption (or (not x27079) x20782)
+:assumption (or x29681 x319)
+:assumption (or (not x30891) x28144 x20858)
+:assumption (or x28600 (not x25783))
+:assumption (or (not x17778) x2243)
+:assumption (or x29312 (not x9702))
+:assumption (or (not x2503) x12355)
+:assumption (or x28724 x17543 x23849 x18547 (not x157) x1119 x28261 x1948)
+:assumption (or x4537 x23325 (not x9490) (not x1296) (not x3547))
+:assumption (or x20047 (not x1078))
+:assumption (or (not x8888) (not x12772))
+:assumption (or (not x2611) x28541)
+:assumption (or x24730 (not x13622))
+:assumption (or (not x3435) x3873)
+:assumption (or x5205 (not x20918))
+:assumption (or x10068 x15175)
+:assumption (or (not x1968) (not x21815))
+:assumption (or (not x6873) x19167)
+:assumption (or x23674 (not x8002))
+:assumption (or x22190 (not x9092) (not x14206) x3991)
+:assumption (or (not x30365) (not x31558))
+:assumption (or (not x21946) (not x20961) (not x17860))
+:assumption (or x10531 x22003 x6969)
+:assumption (or (not x4257) (not x11721))
+:assumption (or (not x17305) (not x6825))
+:assumption (or x428 x21354)
+:assumption (or x16009 (not x8651))
+:assumption (or (not x28237) (not x22566))
+:assumption (or x11187 (not x19642))
+:assumption (or (not x8484) x13893)
+:assumption (or x31234 (not x14395))
+:assumption (or x27195 x18522)
+:assumption (or x24142 (not x8268))
+:assumption (or x23253 x7858 (not x10977) (not x28709) x25748)
+:assumption (or x14735 (not x18694))
+:assumption (or (not x26061) x28681)
+:assumption (or x14628 x4098 (not x20059))
+:assumption (or x25777 x24220)
+:assumption (or x12556 (not x19787))
+:assumption (or x29770 x25224 x11281 x17359 x8919)
+:assumption (or (not x6594) (not x17408) x4259 x17534)
+:assumption (or (not x22334) (not x31231) x21690 (not x8482) x12384 (not x12088) (not x19075))
+:assumption (or x3869 (not x480))
+:assumption (or (not x1933) x30954 x7181)
+:assumption (or x9284 (not x5485))
+:assumption (or x26720 (not x25143))
+:assumption (or x5346 (not x28270))
+:assumption (or x13188 (not x2262))
+:assumption (or (not x26353) x9173 x3724 (not x2277) (not x3543) (not x9722) x5329 (not x5400) x24080)
+:assumption (or x20464 (not x22551))
+:assumption (or x26825 x16080)
+:assumption (or x26638 x11015)
+:assumption (or (not x6659) x11781)
+:assumption (or x26802 (not x852))
+:assumption (or x24504 (not x11369))
+:assumption (or x29523 (not x14916) (not x29651) (not x15011) (not x20052))
+:assumption (or (not x3144) (not x24387))
+:assumption (or (not x15006) x8241)
+:assumption (or (not x1519) x8763)
+:assumption (or (not x19796) (not x23777))
+:assumption (or x30785 x19645)
+:assumption (or x21265 (not x3909))
+:assumption (or x8055 x7305)
+:assumption (or (not x18220) (not x14455) (not x3237))
+:assumption (or x11996 x12767)
+:assumption (or x15784 (not x27589))
+:assumption (or (not x22310) (not x879))
+:assumption (or x14650 (not x15050))
+:assumption (or (not x30111) (not x19250))
+:assumption (or x5280 (not x17029))
+:assumption (or (not x30333) x4386)
+:assumption (or (not x19021) (not x22835))
+:assumption (or x21435 (not x13933))
+:assumption (or (not x29881) x28973)
+:assumption (or (not x23313) (not x30430))
+:assumption (or x24632 x31546)
+:assumption (or x23858 (not x19257))
+:assumption (or (not x29511) x18723)
+:assumption (or (not x30793) x12340)
+:assumption (or x23289 x18880 x20156 x8527 x20543)
+:assumption (or (not x2691) x5028)
+:assumption (or (not x2458) x16802 (not x17721))
+:assumption (or (not x15013) x1547)
+:assumption (or (not x4767) (not x16758))
+:assumption (or (not x28314) x18839)
+:assumption (or (not x21545) x12647)
+:assumption (or (not x17738) (not x23244))
+:assumption (or (not x14183) (not x19343))
+:assumption (or x31814 x31134)
+:assumption (or x4970 (not x9238))
+:assumption (or (not x13430) (not x12675))
+:assumption (or x6814 (not x14597))
+:assumption (or x24368 x27836 x8002)
+:assumption (or x23613 x17534 x6594 x19193)
+:assumption (or x25607 (not x15515))
+:assumption (or (not x16096) x689)
+:assumption (or x14839 (not x21483) (not x5810))
+:assumption (or (not x26091) (not x6547))
+:assumption (or x10198 (not x10235))
+:assumption (or (not x19561) x14515)
+:assumption (or x7256 (not x26492))
+:assumption (or x5025 x24006 (not x6347) (not x7647) x28177 (not x12940) x9936 x5335)
+:assumption (or x9779 (not x20550) x17755)
+:assumption (or (not x21998) x18567 x30113)
+:assumption (or x4735 x4052 (not x6052) (not x14728) (not x11622) x8002)
+:assumption (or (not x12290) (not x18795))
+:assumption (or (not x14517) (not x27971) (not x22603) (not x9706) x31300)
+:assumption (or (not x20538) (not x209))
+:assumption (or (not x19572) x17476)
+:assumption (or (not x8447) x2516)
+:assumption (or (not x29933) (not x26176))
+:assumption (or x31590 (not x24432))
+:assumption (or (not x5298) (not x25096))
+:assumption (or (not x25760) (not x15311))
+:assumption (or x729 (not x19721))
+:assumption (or x29312 x23159)
+:assumption (or x31448 (not x16962))
+:assumption (or x31329 (not x23244))
+:assumption (or x30932 x28167 (not x11094) x22472)
+:assumption (or (not x30078) (not x18876) x8602)
+:assumption (or (not x9654) (not x23763))
+:assumption (or x18164 x22 x22001 x8002 (not x660) x23425)
+:assumption (or x16956 x13487)
+:assumption (or (not x9275) (not x27485))
+:assumption (or x27568 x1635)
+:assumption (or (not x1474) (not x31890) (not x10409))
+:assumption (or (not x20089) x6865)
+:assumption (or (not x5299) (not x1332))
+:assumption (or x21439 (not x28442) (not x10952))
+:assumption (or x14336 x3649)
+:assumption (or x17666 x9881)
+:assumption (or x28397 (not x19438))
+:assumption (or x20853 (not x6162))
+:assumption (or (not x9905) x9020)
+:assumption (or (not x30143) x10237)
+:assumption (or x8002 x3162 x5749 x18765 (not x15118) (not x19335))
+:assumption (or (not x10560) (not x1463))
+:assumption (or x27741 (not x817))
+:assumption (or x23493 x12725)
+:assumption (or (not x30379) (not x18974) x14771 x8121)
+:assumption (or x23057 x9890)
+:assumption (or x288 (not x25515))
+:assumption (or x21623 x10306)
+:assumption (or (not x4257) (not x20262))
+:assumption (or x17803 x17342 x30233)
+:assumption (or (not x787) x9324)
+:assumption (or x22173 (not x13408))
+:assumption (or x11327 (not x21852))
+:assumption (or x11817 (not x27568))
+:assumption (or x12653 x12045)
+:assumption (or (not x983) (not x22824))
+:assumption (or (not x721) x11351 x27409 x9008 (not x29236) x8487 x1072 x1061)
+:assumption (or x19094 x24243)
+:assumption (or x4379 x8278)
+:assumption (or x5154 x1762)
+:assumption (or (not x27825) (not x25611))
+:assumption (or x2058 x25522 (not x4844) (not x19327) x4110)
+:assumption (or x6912 x23317)
+:assumption (or (not x5633) x4671)
+:assumption (or (not x28851) x5643)
+:assumption (or (not x8586) (not x4736))
+:assumption (or (not x21815) x21700)
+:assumption (or x12136 (not x16085) x22394 (not x89) (not x22721) x12610)
+:assumption (or x31446 (not x28912) x29649 (not x603))
+:assumption (or x6294 (not x26040))
+:assumption (or x26996 (not x7950))
+:assumption (or (not x13105) (not x11163))
+:assumption (or x23220 x19189 x23816)
+:assumption (or (not x20821) (not x7303))
+:assumption (or x15634 (not x31348))
+:assumption (or x14655 (not x22182))
+:assumption (or (not x9906) (not x16802))
+:assumption (or x29226 (not x918))
+:assumption (or (not x4466) x7309)
+:assumption (or (not x819) (not x9071))
+:assumption (or x8100 x14684)
+:assumption (or (not x7412) (not x21008))
+:assumption (or (not x2031) x3232)
+:assumption (or x31377 x12546)
+:assumption (or (not x29032) x5535)
+:assumption (or x2135 x2964)
+:assumption (or (not x15174) x23244 x8002 x18686 (not x20042))
+:assumption (or x15284 (not x19480))
+:assumption (or (not x29371) (not x8602))
+:assumption (or (not x20168) (not x6969))
+:assumption (or x25794 (not x31487))
+:assumption (or (not x954) x25188)
+:assumption (or x8002 x13956 (not x29269) x23244 x8724 x19620)
+:assumption (or (not x22854) (not x6995))
+:assumption (or x25169 (not x661))
+:assumption (or x27190 x26654)
+:assumption (or (not x1228) x18249)
+:assumption (or x21013 (not x22748) x16025)
+:assumption (or (not x17560) x21819)
+:assumption (or (not x29949) x10950)
+:assumption (or (not x13546) x5251)
+:assumption (or x3111 (not x15769) x25499 x19428 x6130 x26376)
+:assumption (or x21671 x28715 (not x9461) (not x28136) (not x11088) x17779)
+:assumption (or (not x2491) x9492)
+:assumption (or x15257 x15381)
+:assumption (or x31829 (not x20707))
+:assumption (or (not x26061) (not x350) x27410)
+:assumption (or (not x12324) (not x15643) x9177)
+:assumption (or x27019 (not x18663))
+:assumption (or (not x8582) (not x16455))
+:assumption (or x13009 x12622)
+:assumption (or x2022 x3651)
+:assumption (or x29004 (not x11540))
+:assumption (or x4617 (not x9787))
+:assumption (or x1851 (not x14839))
+:assumption (or x4496 (not x30278))
+:assumption (or (not x28023) (not x18739) x20538 (not x7223) (not x16961) (not x24912))
+:assumption (or (not x31392) x617)
+:assumption (or x27612 x5597)
+:assumption (or (not x9152) (not x3477))
+:assumption (or (not x28188) (not x887))
+:assumption (or (not x4549) x16697)
+:assumption (or x30083 (not x31140))
+:assumption (or x1375 (not x3482))
+:assumption (or (not x30429) (not x8352))
+:assumption (or (not x19535) x23023 x22834 (not x2425) (not x16259) x21670 x4750 x3106 (not x12464))
+:assumption (or (not x17221) (not x20214))
+:assumption (or (not x30976) (not x3666))
+:assumption (or (not x22930) x9280)
+:assumption (or (not x16030) (not x18630))
+:assumption (or (not x5967) x13904)
+:assumption (or x28124 x8120)
+:assumption (or (not x11377) x16836)
+:assumption (or (not x5539) (not x31328))
+:assumption (or x9052 x171)
+:assumption (or (not x4304) x24389 x827)
+:assumption (or (not x4031) (not x21582) (not x30750) (not x16375))
+:assumption (or x485 x15021 (not x6270))
+:assumption (or x30886 (not x351))
+:assumption (or x22855 (not x5037))
+:assumption (or x25357 x11428 x31385 x16656 x17850 (not x2519) x18595 x24330)
+:assumption (or (not x30884) x6444)
+:assumption (or x6882 x10654)
+:assumption (or (not x12174) (not x1393) (not x10093))
+:assumption (or x6643 (not x18859) x12005)
+:assumption (or x14348 x11791 x19711)
+:assumption (or x19632 (not x12311) x7845 x21815 (not x20559) x29160)
+:assumption (or (not x1283) (not x5510))
+:assumption (or x7134 x8002 (not x29269) (not x6738) x23244)
+:assumption (or x15423 (not x22121) (not x22214))
+:assumption (or (not x29513) (not x16031))
+:assumption (or x10670 x30175)
+:assumption (or x27597 (not x12923) (not x30598))
+:assumption (or x14716 x1582)
+:assumption (or (not x2554) x3443)
+:assumption (or (not x11683) x26341)
+:assumption (or x11238 (not x14946))
+:assumption (or (not x27601) (not x18379))
+:assumption (or (not x27092) (not x12264))
+:assumption (or x788 (not x30734) (not x17857))
+:assumption (or x16185 x28973 (not x4860))
+:assumption (or x16003 x13111 (not x8094))
+:assumption (or x30994 (not x27104))
+:assumption (or (not x18990) x25913)
+:assumption (or x3783 x1561)
+:assumption (or x13469 x3455)
+:assumption (or x22666 x30620)
+:assumption (or (not x20134) (not x31497))
+:assumption (or x31498 (not x27087))
+:assumption (or (not x6267) x768)
+:assumption (or x4612 x27426)
+:assumption (or x20893 x21298)
+:assumption (or x23243 x5212)
+:assumption (or (not x9008) (not x5528) (not x8081) x23573 x20794)
+:assumption (or (not x11264) x20770)
+:assumption (or x9025 x986)
+:assumption (or x21870 (not x8602))
+:assumption (or x20939 (not x25659))
+:assumption (or x11512 (not x14275))
+:assumption (or x6528 (not x11820))
+:assumption (or x17735 (not x52))
+:assumption (or x30924 x58)
+:assumption (or (not x19428) x16786 (not x26231))
+:assumption (or (not x3377) (not x2603))
+:assumption (or (not x15564) x15622)
+:assumption (or (not x19065) (not x25659))
+:assumption (or (not x16721) (not x15815) x29235)
+:assumption (or (not x21066) (not x5886))
+:assumption (or (not x29987) (not x25074))
+:assumption (or x19527 (not x30224))
+:assumption (or x23099 (not x15281))
+:assumption (or (not x29581) (not x8757) (not x7719))
+:assumption (or x6615 x11682)
+:assumption (or (not x26350) x2593 x27012 (not x25645))
+:assumption (or x20336 x20082)
+:assumption (or x9096 x10336)
+:assumption (or (not x5482) x19039 (not x15537))
+:assumption (or (not x14010) (not x28639))
+:assumption (or (not x24648) (not x13956))
+:assumption (or (not x1164) x8763)
+:assumption (or (not x31517) (not x1901))
+:assumption (or x16604 x8413)
+:assumption (or (not x649) x4870)
+:assumption (or (not x9783) x30199)
+:assumption (or x16025 (not x20281))
+:assumption (or (not x14699) (not x19864) x18003 (not x23358))
+:assumption (or x21161 x30431)
+:assumption (or x10072 (not x7139))
+:assumption (or (not x10282) x19529)
+:assumption (or x25366 (not x19175))
+:assumption (or (not x17264) (not x26405))
+:assumption (or x4379 (not x29091))
+:assumption (or x30577 (not x18519))
+:assumption (or (not x31882) x895)
+:assumption (or x14565 (not x27474))
+:assumption (or x11185 x6317)
+:assumption (or (not x10302) (not x6022))
+:assumption (or (not x27073) (not x14017))
+:assumption (or x9074 (not x13933))
+:assumption (or (not x11338) x4556)
+:assumption (or x25796 (not x27089))
+:assumption (or (not x30621) (not x11355))
+:assumption (or (not x23244) (not x11792) x14637)
+:assumption (or (not x6321) (not x18321))
+:assumption (or x31665 x18627)
+:assumption (or (not x18465) x13242)
+:assumption (or (not x23184) (not x30079))
+:assumption (or x15941 (not x29408) x8002)
+:assumption (or (not x29595) (not x29552))
+:assumption (or x2317 (not x4980) (not x21684) (not x20046) (not x26604) (not x18506) x13725 x26500)
+:assumption (or (not x13290) (not x8263))
+:assumption (or (not x12914) x1610)
+:assumption (or x15827 x25775)
+:assumption (or (not x5761) x8738)
+:assumption (or (not x22263) x23748)
+:assumption (or x27884 x8339)
+:assumption (or (not x16374) (not x8817))
+:assumption (or x26001 (not x31581) x12779 x28833)
+:assumption (or (not x17075) (not x23168))
+:assumption (or (not x24765) (not x13366))
+:assumption (or (not x27612) (not x21927))
+:assumption (or x17897 x3401)
+:assumption (or x26529 x23279)
+:assumption (or x16840 (not x19656))
+:assumption (or (not x1506) x23087)
+:assumption (or x11438 x30531)
+:assumption (or x22778 x10632)
+:assumption (or x19035 (not x3825) x7800 (not x30670) x31304 x12802 (not x25085) (not x15037) (not x130) (not x16581) (not x6295) x4014)
+:assumption (or (not x918) x5275)
+:assumption (or (not x9008) (not x2409))
+:assumption (or x27835 (not x29534))
+:assumption (or (not x20873) (not x29110))
+:assumption (or x15077 (not x15625))
+:assumption (or (not x10909) (not x18511))
+:assumption (or x27543 (not x24335))
+:assumption (or x19466 (not x19545))
+:assumption (or x16941 x12671)
+:assumption (or (not x10586) (not x4027))
+:assumption (or x21669 (not x9416) (not x11377) (not x10673) (not x27192) (not x30564))
+:assumption (or x18184 x14272)
+:assumption (or (not x22607) (not x9154))
+:assumption (or (not x8473) x28033)
+:assumption (or (not x7852) (not x16965))
+:assumption (or x8602 (not x10811) (not x23026))
+:assumption (or x10288 x30018 x29865 (not x1623))
+:assumption (or x26198 x3285)
+:assumption (or (not x16924) x29843)
+:assumption (or (not x16689) (not x25950))
+:assumption (or (not x14052) (not x6274) x426 x23049 x19536)
+:assumption (or (not x16725) x30891)
+:assumption (or x28363 (not x31392) (not x26174) (not x288))
+:assumption (or (not x1741) (not x3489))
+:assumption (or (not x19375) (not x25659) x22210)
+:assumption (or (not x8229) (not x28870))
+:assumption (or x17821 (not x19714))
+:assumption (or x14083 x3317)
+:assumption (or (not x13946) (not x17016))
+:assumption (or (not x4169) x16455)
+:assumption (or x11151 (not x15462) (not x6969))
+:assumption (or x21636 x26010)
+:assumption (or (not x29453) (not x27881))
+:assumption (or x6198 (not x29167))
+:assumption (or x1542 x29137)
+:assumption (or x26263 x14784)
+:assumption (or x27415 x8834 x19935 x17908 (not x14707) (not x7261) x22460 (not x31188))
+:assumption (or x17075 (not x21399))
+:assumption (or x24854 (not x2132))
+:assumption (or x12785 (not x6964) x16994 (not x22140) x11934)
+:assumption (or (not x17807) x20808 (not x16025))
+:assumption (or x9678 x31777 (not x28642) (not x14074) x8622 x17539 x20134)
+:assumption (or (not x48) x30771)
+:assumption (or (not x21409) (not x21815))
+:assumption (or x8544 x23244 x23274)
+:assumption (or (not x1168) (not x30079))
+:assumption (or (not x17855) x19776 (not x20580) (not x13171))
+:assumption (or (not x1683) x5593)
+:assumption (or (not x16130) x28784 x31592 (not x29016) (not x19505) x19578)
+:assumption (or (not x31347) x30320)
+:assumption (or x16158 (not x7857))
+:assumption (or (not x20460) x27283)
+:assumption (or (not x26064) x20039)
+:assumption (or x2140 x14752)
+:assumption (or (not x15313) (not x4035))
+:assumption (or x5493 (not x20508))
+:assumption (or x26860 x22886)
+:assumption (or x5878 x29262)
+:assumption (or x3193 (not x12872))
+:assumption (or (not x30115) (not x11556))
+:assumption (or (not x218) x30069)
+:assumption (or (not x14531) x2298)
+:assumption (or x13050 (not x29772))
+:assumption (or x8119 (not x15019) x6351)
+:assumption (or (not x10364) (not x16770))
+:assumption (or (not x13297) (not x27614))
+:assumption (or x26052 (not x8360))
+:assumption (or x24756 (not x5137) x24468 x16593 (not x13705))
+:assumption (or x9639 x7916)
+:assumption (or x26055 x2206)
+:assumption (or (not x14525) x16510)
+:assumption (or x18303 x20325)
+:assumption (or (not x27636) (not x20284) (not x7425))
+:assumption (or x499 x6175)
+:assumption (or x22044 x19992)
+:assumption (or x7693 x23148)
+:assumption (or (not x7643) x5396)
+:assumption (or (not x23244) (not x427))
+:assumption (or x28152 (not x4285))
+:assumption (or (not x17826) (not x17572))
+:assumption (or x15727 x24804)
+:assumption (or x20844 x29854)
+:assumption (or x29542 x23515)
+:assumption (or (not x11693) (not x28917) x21824 (not x28562) x24757)
+:assumption (or x25084 x7744)
+:assumption (or x1093 (not x23120))
+:assumption (or x313 (not x827))
+:assumption (or x5957 (not x28973))
+:assumption (or (not x22531) x31358)
+:assumption (or x26656 (not x11342))
+:assumption (or (not x20680) (not x29333))
+:assumption (or x24355 x20884)
+:assumption (or x8002 (not x21287))
+:assumption (or (not x3711) x16304)
+:assumption (or (not x31551) x27941)
+:assumption (or (not x3783) (not x29005))
+:assumption (or (not x12850) x9357)
+:assumption (or x12988 x27721)
+:assumption (or x30910 (not x26107))
+:assumption (or (not x25701) (not x25091) (not x7859) (not x9262) (not x14382) x19894 x30265)
+:assumption (or x30910 x3907)
+:assumption (or (not x28840) x8112)
+:assumption (or x30138 (not x5167))
+:assumption (or (not x11973) (not x20949))
+:assumption (or (not x11385) (not x13995))
+:assumption (or x2701 (not x9134) x16910)
+:assumption (or x18767 (not x10906) x4845 (not x20920) x5696 x26894)
+:assumption (or (not x29771) x994)
+:assumption (or x10238 x31053)
+:assumption (or (not x22084) (not x29815))
+:assumption (or (not x1115) (not x24699))
+:assumption (or (not x5693) x4020)
+:assumption (or (not x20177) x19386)
+:assumption (or (not x24382) x23015 (not x8020) x19576)
+:assumption (or (not x6898) (not x10868) x31099)
+:assumption (or x31830 x31782)
+:assumption (or x2277 (not x24080))
+:assumption (or x11731 x4225)
+:assumption (or x3361 (not x17834))
+:assumption (or x26469 (not x17825))
+:assumption (or x3455 x3012)
+:assumption (or x3464 x30656)
+:assumption (or (not x14839) (not x22582))
+:assumption (or x26594 (not x22191) (not x26765) (not x9981) (not x1802) x14757 x27938 x22185 (not x23814))
+:assumption (or (not x24624) x7817)
+:assumption (or (not x15998) x25291 (not x11388) x24768)
+:assumption (or (not x21066) x4792)
+:assumption (or x13449 x14917)
+:assumption (or (not x11675) (not x25927))
+:assumption (or (not x6917) x29080)
+:assumption (or x4987 x20325)
+:assumption (or x17298 (not x25355))
+:assumption (or (not x2784) x10810)
+:assumption (or x22181 (not x17036) x24409 (not x7943))
+:assumption (or x21091 x20316)
+:assumption (or x19524 x11064)
+:assumption (or x7535 (not x7541))
+:assumption (or (not x8737) x14683)
+:assumption (or (not x28248) (not x22190))
+:assumption (or (not x8989) x14206)
+:assumption (or x22471 (not x23990))
+:assumption (or x14531 x9454 (not x21967) (not x8742) x22127 x11808)
+:assumption (or (not x6941) x31278)
+:assumption (or (not x3827) x11597 x16428 x12781 x21375 (not x27644) (not x19892))
+:assumption (or x17706 (not x25604))
+:assumption (or x10491 x1091 (not x21159))
+:assumption (or x27177 (not x55))
+:assumption (or (not x25602) (not x4294))
+:assumption (or (not x5902) x2690)
+:assumption (or x9060 (not x26371))
+:assumption (or x18731 x1883)
+:assumption (or x31582 x10969)
+:assumption (or (not x1264) x3853)
+:assumption (or x8731 x18885 (not x8587) (not x9242))
+:assumption (or x5430 x27033)
+:assumption (or (not x10921) (not x13245))
+:assumption (or x19076 (not x8961))
+:assumption (or (not x9623) (not x15987))
+:assumption (or x25659 (not x646))
+:assumption (or x6658 (not x29369))
+:assumption (or (not x27878) (not x24854) x11710 x28593 x2132)
+:assumption (or (not x16044) x12940)
+:assumption (or x4483 x12834)
+:assumption (or (not x26738) x29304)
+:assumption (or (not x3357) x14832)
+:assumption (or (not x21771) (not x18311))
+:assumption (or (not x3058) x10500)
+:assumption (or x15217 x17708)
+:assumption (or (not x10533) (not x2061))
+:assumption (or (not x14452) x10336 (not x12041) (not x7859) x25676)
+:assumption (or x24484 x190 (not x20041) (not x26050) (not x30517) x6743 (not x28702))
+:assumption (or (not x19069) (not x21807))
+:assumption (or x21540 (not x17083))
+:assumption (or (not x1989) (not x9897))
+:assumption (or (not x27619) (not x17670))
+:assumption (or x11938 x29049)
+:assumption (or (not x23244) x29859)
+:assumption (or x10034 x15175)
+:assumption (or (not x19992) (not x9035))
+:assumption (or (not x11538) x12196)
+:assumption (or x695 (not x2122))
+:assumption (or (not x19487) (not x23093) x18633 (not x2566) (not x24538))
+:assumption (or x29679 (not x27941))
+:assumption (or x21452 x24305)
+:assumption (or (not x21836) (not x12543))
+:assumption (or (not x28682) (not x9282))
+:assumption (or x23671 x5025)
+:assumption (or x13956 x30325)
+:assumption (or (not x22451) x7064)
+:assumption (or (not x16408) x23965)
+:assumption (or x23132 (not x30960))
+:assumption (or x11793 (not x21099))
+:assumption (or x30163 (not x23010))
+:assumption (or x26058 x1253)
+:assumption (or (not x26058) x16333 (not x12312) (not x1253) x2239 x31265)
+:assumption (or x1863 (not x25905))
+:assumption (or x13838 x16365 x5865 x4682 x18402 (not x1773))
+:assumption (or x24092 (not x14718))
+:assumption (or (not x21060) (not x21977))
+:assumption (or x23482 (not x16316))
+:assumption (or x25667 x11281)
+:assumption (or (not x19558) (not x12923))
+:assumption (or x9058 (not x13971))
+:assumption (or x10045 (not x14257))
+:assumption (or x8002 (not x12990) x13935)
+:assumption (or (not x24238) (not x1457))
+:assumption (or x25846 x8345)
+:assumption (or (not x16802) (not x31753) x31419)
+:assumption (or x12397 (not x4390) x13275 x2282)
+:assumption (or (not x11579) (not x16475))
+:assumption (or x8174 x19724 (not x801))
+:assumption (or (not x8903) (not x23244))
+:assumption (or x18716 (not x11610))
+:assumption (or x15382 (not x16688))
+:assumption (or x4789 (not x13626))
+:assumption (or (not x15745) x1513)
+:assumption (or x22615 (not x6505))
+:assumption (or (not x4504) (not x26771))
+:assumption (or (not x31749) x2517)
+:assumption (or (not x5352) (not x26326))
+:assumption (or (not x12176) x6029 (not x23633) (not x13956))
+:assumption (or (not x14698) x27886 (not x26795) x14427 (not x1003) (not x14431) x4791)
+:assumption (or (not x6241) x23718)
+:assumption (or (not x4960) (not x2059) (not x13382) (not x15099) (not x25080) x30718 x18604 (not x29113))
+:assumption (or x17520 (not x10389))
+:assumption (or (not x20460) x22235)
+:assumption (or x3770 x16966)
+:assumption (or (not x20132) x16037)
+:assumption (or (not x31808) (not x16548))
+:assumption (or x30838 x29113)
+:assumption (or (not x4617) x18500 (not x22449) x9787)
+:assumption (or (not x2592) x7437 (not x27059))
+:assumption (or x3399 (not x6332))
+:assumption (or (not x20049) (not x1523))
+:assumption (or (not x24722) (not x1571))
+:assumption (or (not x13956) x20586)
+:assumption (or x26329 x10903)
+:assumption (or x18991 x7826)
+:assumption (or (not x22233) x23518)
+:assumption (or (not x21949) x22126)
+:assumption (or (not x11073) x17856)
+:assumption (or x6210 (not x9531))
+:assumption (or (not x18165) (not x17112) x17213 (not x22495))
+:assumption (or (not x31098) x11374)
+:assumption (or x27116 x15393)
+:assumption (or (not x17689) (not x26914))
+:assumption (or (not x29597) (not x24756))
+:assumption (or x31386 x20169)
+:assumption (or x25784 (not x24839) x21690)
+:assumption (or (not x5188) (not x27932))
+:assumption (or (not x13911) x15795 x22459 (not x14591))
+:assumption (or (not x12345) (not x24234))
+:assumption (or x16227 (not x19083))
+:assumption (or (not x18905) x28126)
+:assumption (or x13651 x12277 (not x6974) x21665 (not x24483) x7554 (not x13036))
+:assumption (or (not x25997) x13956)
+:assumption (or x11467 (not x6906) (not x26640) (not x7614))
+:assumption (or (not x26696) (not x12824))
+:assumption (or x19428 x376 (not x2198) x25659)
+:assumption (or (not x13961) (not x17727))
+:assumption (or (not x18676) x25746)
+:assumption (or (not x29049) x11386)
+:assumption (or x15785 x23652)
+:assumption (or x14341 (not x29959))
+:assumption (or (not x20177) (not x16061))
+:assumption (or x27766 x17939)
+:assumption (or x21441 x30459)
+:assumption (or (not x28590) x70 (not x8491) (not x9527))
+:assumption (or x5651 x4955)
+:assumption (or x31341 (not x25178) (not x5650) (not x26689))
+:assumption (or x15836 x11193 x31641 x4059 (not x3539) (not x17362))
+:assumption (or x6135 x10917)
+:assumption (or (not x31588) x14708)
+:assumption (or x16374 x29385)
+:assumption (or (not x22160) (not x3657))
+:assumption (or (not x12257) x9733 x18985 x6416 x3078 x6691)
+:assumption (or x22968 x16067)
+:assumption (or (not x22534) (not x22552))
+:assumption (or (not x9011) (not x31440))
+:assumption (or x1418 x21633)
+:assumption (or x30053 (not x1026))
+:assumption (or (not x19326) (not x22074))
+:assumption (or x11506 (not x837))
+:assumption (or (not x6828) x23279 (not x28328))
+:assumption (or (not x24968) (not x20809))
+:assumption (or (not x20365) (not x7701))
+:assumption (or (not x5160) x9284)
+:assumption (or x310 x77)
+:assumption (or x7469 x24912)
+:assumption (or (not x25171) x28185)
+:assumption (or x428 x16183)
+:assumption (or (not x22513) (not x13591))
+:assumption (or x4534 (not x19992) (not x10060))
+:assumption (or (not x3969) (not x15588))
+:assumption (or (not x3474) x9057)
+:assumption (or x9055 x1992)
+:assumption (or (not x24471) x21847)
+:assumption (or (not x13141) x9008)
+:assumption (or (not x20232) (not x6558))
+:assumption (or (not x31421) x16388)
+:assumption (or x10586 x20161 x29266 x14138)
+:assumption (or (not x15525) (not x21314))
+:assumption (or x15065 (not x21967) (not x9235) x21210)
+:assumption (or (not x6794) x24124)
+:assumption (or (not x10166) x22218)
+:assumption (or (not x17167) x4560 x31392)
+:assumption (or x20363 x6064)
+:assumption (or (not x24447) (not x27920) (not x13531) x24767 (not x332) (not x26336) x1525 (not x18335))
+:assumption (or (not x13956) x28231)
+:assumption (or x1657 x12306)
+:assumption (or (not x19882) x20169)
+:assumption (or (not x990) x15122 (not x22531))
+:assumption (or (not x29312) (not x10732))
+:assumption (or x23244 (not x15319))
+:assumption (or (not x16915) (not x17359))
+:assumption (or (not x3937) (not x19992))
+:assumption (or (not x9623) (not x6149))
+:assumption (or x3017 x21582)
+:assumption (or (not x12853) (not x827))
+:assumption (or x27537 x7411 (not x12556) x20087)
+:assumption (or x25768 (not x27311))
+:assumption (or x23511 x813)
+:assumption (or x202 x31878)
+:assumption (or (not x19144) (not x20477))
+:assumption (or x1781 (not x27458) x21653)
+:assumption (or (not x16025) (not x1470))
+:assumption (or (not x9420) x20576 x6891)
+:assumption (or x2111 x142)
+:assumption (or x5214 x9181 (not x3379))
+:assumption (or x31303 (not x9400))
+:assumption (or (not x23115) x22096)
+:assumption (or (not x4887) x5931 (not x10648) x490 (not x6452))
+:assumption (or x4108 (not x9731))
+:assumption (or (not x2454) (not x13828))
+:assumption (or (not x2839) (not x12684))
+:assumption (or x22055 x26089)
+:assumption (or (not x16275) x24663)
+:assumption (or x20342 (not x30783))
+:assumption (or x10995 (not x8264) (not x20078) (not x21595) (not x15023) (not x21466) x29652 (not x23455))
+:assumption (or x8380 (not x21298) (not x3830))
+:assumption (or (not x11420) (not x2004))
+:assumption (or (not x17534) (not x4629) (not x6594) x369)
+:assumption (or x25877 (not x10869))
+:assumption (or (not x24996) x19784)
+:assumption (or (not x21931) x24667)
+:assumption (or (not x14395) (not x26226))
+:assumption (or x5822 x16076 x4128 (not x8967))
+:assumption (or (not x11975) (not x3460))
+:assumption (or x4309 (not x24907))
+:assumption (or x6482 (not x24709))
+:assumption (or (not x29606) (not x4150))
+:assumption (or (not x20325) (not x23064) (not x17716))
+:assumption (or (not x23644) x27934)
+:assumption (or x30740 (not x9008) x28023 (not x11489) (not x5528))
+:assumption (or x8409 (not x31225) (not x6780) (not x6342))
+:assumption (or x16944 (not x14798))
+:assumption (or x8804 x19827 (not x27861) (not x167) (not x641) x16515 (not x11067) (not x25659))
+:assumption (or x17862 (not x5875) x28805 x7832 x30161 (not x26315))
+:assumption (or x10638 (not x5028))
+:assumption (or (not x6969) x22333)
+:assumption (or x22495 x17112)
+:assumption (or x30178 (not x26762))
+:assumption (or (not x6149) x6041)
+:assumption (or x16510 (not x28020))
+:assumption (or (not x25732) x25287 (not x25135) x700 (not x5278) x13993)
+:assumption (or x16234 (not x24871))
+:assumption (or (not x7012) (not x715))
+:assumption (or (not x11482) x23067)
+:assumption (or (not x30307) (not x23237))
+:assumption (or (not x8732) (not x14591))
+:assumption (or x20852 x17907)
+:assumption (or (not x30035) x218 (not x31218) (not x17075))
+:assumption (or x22855 x16722)
+:assumption (or x2288 x4986)
+:assumption (or (not x1168) x17714)
+:assumption (or x20885 (not x7432))
+:assumption (or (not x169) (not x27770))
+:assumption (or x16132 (not x18912))
+:assumption (or x16850 x16903 x13589)
+:assumption (or (not x12045) (not x7188) (not x27735) (not x25366))
+:assumption (or (not x18041) (not x30555))
+:assumption (or x21128 x16653)
+:assumption (or (not x29920) x28538)
+:assumption (or (not x4357) (not x29185) (not x22645) (not x21690) (not x5362) x12594 (not x26655))
+:assumption (or x19031 x29723)
+:assumption (or x6289 (not x24471) x23886 x31102)
+:assumption (or x9067 x21522)
+:assumption (or x15799 (not x2449) (not x14110))
+:assumption (or (not x14895) x28742 x29016 x3581 (not x18306))
+:assumption (or x31864 x30500 (not x711) x11367 (not x28630) x28857 x15561 x4975)
+:assumption (or (not x19183) x21935)
+:assumption (or x8493 (not x5901))
+:assumption (or x14963 x31801)
+:assumption (or x6177 x22857 x9840)
+:assumption (or x13270 (not x23244))
+:assumption (or x5395 (not x13956))
+:assumption (or (not x2906) (not x8034))
+:assumption (or x23363 x26322 (not x30899))
+:assumption (or (not x8262) x29606 x28309 (not x29683) (not x5003))
+:assumption (or x1188 x10292)
+:assumption (or x19402 x9504)
+:assumption (or x15652 (not x10851))
+:assumption (or (not x1334) (not x22309) x14117 (not x8658))
+:assumption (or x23896 (not x18375))
+:assumption (or (not x15909) x22000 (not x1393))
+:assumption (or (not x3534) (not x16792))
+:assumption (or x26648 x26491)
+:assumption (or (not x23399) (not x9637))
+:assumption (or x9957 x25092)
+:assumption (or (not x4683) (not x9788))
+:assumption (or x31430 x29624)
+:assumption (or x19282 (not x3299))
+:assumption (or x7068 x7379)
+:assumption (or x6253 (not x16304))
+:assumption (or x20651 (not x24851))
+:assumption (or (not x26517) x30273)
+:assumption (or x13935 x1546)
+:assumption (or (not x24415) (not x9394))
+:assumption (or x13789 x13966)
+:assumption (or (not x18504) (not x3561))
+:assumption (or x25672 (not x23244))
+:assumption (or (not x3247) (not x16003) (not x16430))
+:assumption (or x24110 (not x19135))
+:assumption (or x15210 (not x16567) x30667 x29519)
+:assumption (or (not x23794) (not x5048))
+:assumption (or (not x21708) (not x5668))
+:assumption (or x26562 (not x2499))
+:assumption (or x23555 (not x23244))
+:assumption (or (not x20901) x16505)
+:assumption (or (not x26611) (not x4238))
+:assumption (or (not x29618) (not x24304))
+:assumption (or (not x11263) (not x18570) x16721 x30486 (not x21174) x11338)
+:assumption (or (not x22851) x16802 x8737)
+:assumption (or (not x24751) (not x10374))
+:assumption (or x2164 x9008)
+:assumption (or (not x28973) x24394)
+:assumption (or x16802 (not x8949))
+:assumption (or x28793 x6915 (not x5185))
+:assumption (or x5466 (not x19920))
+:assumption (or x19293 (not x22632))
+:assumption (or (not x4963) x27188)
+:assumption (or x14079 (not x4904))
+:assumption (or x4353 (not x28852))
+:assumption (or x3224 x18202)
+:assumption (or x9565 (not x413))
+:assumption (or x31083 (not x5918) x596)
+:assumption (or (not x14815) x23564)
+:assumption (or x966 (not x22204))
+:assumption (or x7039 (not x10249))
+:assumption (or x29116 x4843)
+:assumption (or (not x15420) x15795 (not x20623))
+:assumption (or x26158 (not x8002))
+:assumption (or (not x27965) x16340)
+:assumption (or x10654 x1882)
+:assumption (or (not x1403) x1632)
+:assumption (or (not x26381) (not x9008))
+:assumption (or (not x30183) (not x28441))
+:assumption (or x19439 (not x22179))
+:assumption (or x20746 x21815)
+:assumption (or x23465 x15216)
+:assumption (or (not x15020) x23273)
+:assumption (or (not x12313) (not x634))
+:assumption (or (not x21256) (not x26675))
+:assumption (or (not x15713) x19992)
+:assumption (or (not x11420) x20576)
+:assumption (or x12578 x24258)
+:assumption (or x24377 x10979)
+:assumption (or (not x29441) (not x13818))
+:assumption (or (not x28283) x31863)
+:assumption (or (not x31114) x19278 (not x15659))
+:assumption (or (not x5528) (not x20618))
+:assumption (or x11390 x19129)
+:assumption (or x16741 (not x3326))
+:assumption (or x29284 (not x27720))
+:assumption (or x11815 x8002)
+:assumption (or (not x30224) (not x13956) x499 (not x937))
+:assumption (or (not x31028) x7084)
+:assumption (or (not x27970) x2564)
+:assumption (or x15866 (not x25171))
+:assumption (or x10385 (not x13738))
+:assumption (or (not x827) x20348 x15446)
+:assumption (or (not x1002) x11506)
+:assumption (or x27345 (not x16465))
+:assumption (or (not x13362) (not x805))
+:assumption (or (not x5993) (not x21152))
+:assumption (or (not x14315) x17819)
+:assumption (or x13038 (not x16025))
+:assumption (or (not x20433) x1646)
+:assumption (or (not x16093) (not x27491))
+:assumption (or x23244 (not x9370))
+:assumption (or (not x16000) x21610)
+:assumption (or x28440 (not x13206))
+:assumption (or (not x13664) x10909)
+:assumption (or (not x11150) (not x20974))
+:assumption (or (not x23058) x26157)
+:assumption (or (not x18480) x11281)
+:assumption (or (not x7731) (not x10276))
+:assumption (or x19627 x6881)
+:assumption (or x11365 x21298)
+:assumption (or (not x8002) (not x13566))
+:assumption (or x8515 x27573)
+:assumption (or x27841 x19004)
+:assumption (or (not x8507) (not x7835) (not x16053))
+:assumption (or x28391 x6056)
+:assumption (or (not x9595) x28140)
+:assumption (or (not x16990) x3699)
+:assumption (or (not x4130) x11977)
+:assumption (or (not x6447) (not x19885))
+:assumption (or x30393 (not x24507))
+:assumption (or x2678 (not x26629))
+:assumption (or x19802 x4800)
+:assumption (or (not x13956) (not x21327))
+:assumption (or (not x13596) (not x18343))
+:assumption (or x26023 (not x12103))
+:assumption (or x31561 x30799)
+:assumption (or x24480 (not x6422))
+:assumption (or (not x15686) (not x8002))
+:assumption (or (not x21015) x8435)
+:assumption (or x30155 x2600)
+:assumption (or x16366 (not x31678))
+:assumption (or x2110 x19649)
+:assumption (or x30203 x22937)
+:assumption (or x31754 x18524 x14839)
+:assumption (or (not x14790) (not x27174) (not x25904))
+:assumption (or (not x9008) x25821)
+:assumption (or (not x4771) x15795)
+:assumption (or x6925 x20001)
+:assumption (or x16201 (not x827))
+:assumption (or (not x6760) (not x19992))
+:assumption (or (not x25243) x24363)
+:assumption (or (not x18456) x6054)
+:assumption (or x12045 (not x16136))
+:assumption (or x18021 x1655)
+:assumption (or (not x15584) x657 (not x21767) x12094 x29528 x29926 (not x16193) (not x14080))
+:assumption (or (not x5207) (not x19382) x11402 x18502 (not x13930) (not x31158) (not x5023))
+:assumption (or x6746 x25776 x12544)
+:assumption (or (not x28624) (not x31836))
+:assumption (or x12751 (not x6944))
+:assumption (or x16532 x10445)
+:assumption (or x27561 (not x22025))
+:assumption (or x21587 (not x8959))
+:assumption (or x15009 (not x860))
+:assumption (or x22311 (not x11777))
+:assumption (or x1960 x17181)
+:assumption (or (not x30730) x13606)
+:assumption (or (not x18406) (not x9385))
+:assumption (or x12975 (not x27981) x12628)
+:assumption (or (not x4867) (not x23832))
+:assumption (or (not x844) (not x23244))
+:assumption (or x8993 (not x13186))
+:assumption (or x1285 (not x9008))
+:assumption (or (not x5886) x29569)
+:assumption (or (not x340) (not x13216))
+:assumption (or (not x22057) x6262 x15423 (not x10192) (not x28054) (not x22121) (not x4095) (not x15215) x26214 (not x4224))
+:assumption (or (not x2791) x20526 (not x10993) x17613)
+:assumption (or (not x29960) x6010 (not x17641) (not x17389) x24127 x9557 x9757 x29261)
+:assumption (or x16240 x14489)
+:assumption (or x5182 x31657)
+:assumption (or (not x1602) x17971)
+:assumption (or x10348 x12045)
+:assumption (or x6523 (not x1372))
+:assumption (or (not x21358) x30132)
+:assumption (or x6351 x27096)
+:assumption (or x16710 x29779)
+:assumption (or x26487 (not x22553))
+:assumption (or x16489 (not x2794) (not x23413))
+:assumption (or x12633 x13674)
+:assumption (or x14533 (not x23137))
+:assumption (or (not x14455) x13008)
+:assumption (or (not x4367) (not x2045))
+:assumption (or x24305 x6742)
+:assumption (or (not x7105) (not x5325))
+:assumption (or (not x25773) (not x12113))
+:assumption (or x27192 x25581)
+:assumption (or (not x20147) x27984 x11792)
+:assumption (or (not x26265) (not x4902))
+:assumption (or (not x23876) x23435 (not x12678) x30962 x9569)
+:assumption (or x8145 x3927)
+:assumption (or x3217 x7153)
+:assumption (or (not x28910) x5704 x10916 x17359 x3267 (not x19385))
+:assumption (or (not x20994) (not x5782) x18522 x2263 x30614 x17042 x2780 (not x9269) x6141)
+:assumption (or (not x29961) (not x1658))
+:assumption (or (not x1473) (not x21709))
+:assumption (or (not x17839) (not x16003))
+:assumption (or x19386 x27592)
+:assumption (or (not x15275) (not x25366) (not x30126))
+:assumption (or (not x11589) (not x13532))
+:assumption (or x26307 x7767)
+:assumption (or x30834 x7653)
+:assumption (or (not x7995) x17161)
+:assumption (or x14939 x31792)
+:assumption (or x1621 x11488 x29406)
+:assumption (or (not x12146) (not x16955) x2036 x771 (not x27294) (not x1430))
+:assumption (or x7603 (not x7916))
+:assumption (or (not x15999) (not x16304))
+:assumption (or x10571 x7048)
+:assumption (or x9008 (not x4647))
+:assumption (or (not x21776) (not x24347))
+:assumption (or (not x29858) x11336)
+:assumption (or (not x12725) (not x23493))
+:assumption (or x964 (not x169) x30711 (not x1756))
+:assumption (or (not x21298) (not x15539))
+:assumption (or x1962 (not x10804))
+:assumption (or x31437 x3467)
+:assumption (or (not x30004) (not x12397))
+:assumption (or (not x12923) (not x8360))
+:assumption (or x10686 (not x12270))
+:assumption (or (not x22874) x29996)
+:assumption (or (not x2601) (not x29653))
+:assumption (or (not x5226) x29837)
+:assumption (or (not x24436) (not x25659))
+:assumption (or x23631 (not x7478) (not x7537))
+:assumption (or x23288 (not x29455))
+:assumption (or (not x18965) (not x3782))
+:assumption (or (not x23244) (not x1725))
+:assumption (or x30885 x4723)
+:assumption (or x5213 x24462)
+:assumption (or (not x30565) (not x23190))
+:assumption (or x21739 (not x25563))
+:assumption (or (not x29744) x2437)
+:assumption (or (not x18638) (not x1621))
+:assumption (or x22265 x18476 x29238 (not x19089))
+:assumption (or x10966 x1918)
+:assumption (or (not x5305) (not x8257))
+:assumption (or (not x19215) (not x11165))
+:assumption (or x24722 x20034)
+:assumption (or (not x20137) x3671)
+:assumption (or x969 x962)
+:assumption (or (not x8775) (not x23017) x10907)
+:assumption (or (not x13956) x24526 x5381)
+:assumption (or (not x19384) x19535)
+:assumption (or x18700 (not x21598))
+:assumption (or x14043 x19505)
+:assumption (or x26302 x3580)
+:assumption (or x23244 (not x20402) x12927)
+:assumption (or (not x19706) x4450)
+:assumption (or x20661 (not x13152))
+:assumption (or x19230 (not x862))
+:assumption (or (not x2811) (not x12116) x894 (not x5595))
+:assumption (or (not x6404) x21653)
+:assumption (or (not x23973) x10996 x12204 (not x30160) x9008 (not x3360) x8856 x9596)
+:assumption (or (not x17936) x22634)
+:assumption (or x12177 x14839 x26062)
+:assumption (or (not x28405) (not x22107))
+:assumption (or x24961 x7519 x23017)
+:assumption (or x28431 x30445)
+:assumption (or x16971 (not x6628))
+:assumption (or x3330 x29875)
+:assumption (or x9393 (not x5608))
+:assumption (or (not x6069) x14839 (not x1300))
+:assumption (or (not x17405) (not x27959))
+:assumption (or x14906 (not x23148) x28900 x3782)
+:assumption (or (not x12242) (not x20136))
+:assumption (or x10435 x25441)
+:assumption (or (not x27437) x2662)
+:assumption (or x31921 x24660 (not x21298) (not x13966))
+:assumption (or x8819 x14387)
+:assumption (or (not x5339) (not x31818))
+:assumption (or (not x10399) x26513)
+:assumption (or (not x21862) (not x25828))
+:assumption (or (not x1192) x14300 x7537 (not x16455) x23399)
+:assumption (or x4999 x26017)
+:assumption (or x9908 (not x9162))
+:assumption (or (not x20810) (not x23118))
+:assumption (or (not x5826) (not x16923))
+:assumption (or (not x19937) x18713 (not x1548) (not x31235) x693)
+:assumption (or (not x2674) (not x19692))
+:assumption (or (not x18157) x5435)
+:assumption (or x16003 x24200 (not x12227))
+:assumption (or x30941 x18992)
+:assumption (or x13697 x24483)
+:assumption (or x17212 (not x9220))
+:assumption (or x9191 (not x17037))
+:assumption (or (not x15366) x15656)
+:assumption (or (not x23244) (not x14648))
+:assumption (or x16205 (not x2188))
+:assumption (or (not x27605) (not x3782))
+:assumption (or (not x18296) (not x3507))
+:assumption (or (not x27334) (not x15719))
+:assumption (or x25160 (not x31812) (not x2022))
+:assumption (or (not x8602) x10811)
+:assumption (or x9008 (not x31141))
+:assumption (or (not x13779) x4347)
+:assumption (or (not x10257) (not x22854))
+:assumption (or (not x14544) x30751)
+:assumption (or (not x818) x19253)
+:assumption (or (not x28055) (not x16018))
+:assumption (or (not x202) x1962)
+:assumption (or (not x9325) (not x4098) x6811 x11653 x19099 x12713)
+:assumption (or (not x22211) x517)
+:assumption (or (not x11116) (not x11142))
+:assumption (or (not x27479) (not x24155))
+:assumption (or x23010 (not x467))
+:assumption (or x3490 (not x24303))
+:assumption (or (not x6720) x5853)
+:assumption (or (not x245) (not x19663))
+:assumption (or (not x10685) (not x3018))
+:assumption (or (not x29709) (not x26074) (not x20241) (not x444) (not x15749) (not x10310) (not x27472) (not x14999))
+:assumption (or (not x5979) (not x20044))
+:assumption (or x16487 x15444)
+:assumption (or (not x1462) x3176)
+:assumption (or (not x28677) x30331)
+:assumption (or (not x25150) x26830 (not x2971) (not x6350) (not x16824))
+:assumption (or (not x8788) x13610)
+:assumption (or (not x30082) x11699)
+:assumption (or (not x28378) x27252)
+:assumption (or x25635 x16298)
+:assumption (or x24714 x11307)
+:assumption (or x30895 x12081)
+:assumption (or (not x9426) x11776)
+:assumption (or (not x27359) x19047)
+:assumption (or (not x21815) (not x6606) x31466 x16401 (not x16510) (not x29959) (not x7010))
+:assumption (or x21667 x4985)
+:assumption (or x18244 x25211)
+:assumption (or (not x29848) x11614)
+:assumption (or (not x4877) (not x3695) x25911)
+:assumption (or (not x4218) (not x1474))
+:assumption (or x3652 x952 x18694 (not x30231) (not x12694) (not x27266) (not x8677) x17437)
+:assumption (or x17324 x3605 (not x30735) x1107 (not x1582))
+:assumption (or (not x5701) (not x29463))
+:assumption (or (not x9450) x11792)
+:assumption (or (not x20840) (not x31498) x15833)
+:assumption (or x10397 x25299)
+:assumption (or x24779 x7647)
+:assumption (or x25924 x5664)
+:assumption (or (not x6307) (not x24151))
+:assumption (or x23167 (not x1785))
+:assumption (or x22826 (not x18369) (not x9289) x20262 (not x3541) (not x4270))
+:assumption (or (not x29784) x28366 (not x9208) (not x5696))
+:assumption (or (not x5074) (not x17289))
+:assumption (or x13484 x23298)
+:assumption (or (not x29791) (not x26880))
+:assumption (or x3160 (not x19669))
+:assumption (or x15395 (not x5455))
+:assumption (or x14128 x27516)
+:assumption (or (not x17891) x12755)
+:assumption (or (not x30962) x13968)
+:assumption (or (not x4724) (not x23244))
+:assumption (or (not x8602) (not x17517))
+:assumption (or (not x16984) (not x3862))
+:assumption (or x21020 (not x24880))
+:assumption (or x11926 x8887)
+:assumption (or (not x9952) x10414)
+:assumption (or x31040 x14503)
+:assumption (or (not x6826) (not x23244))
+:assumption (or x24270 x25168)
+:assumption (or (not x18629) (not x26932))
+:assumption (or (not x1731) (not x7537))
+:assumption (or (not x3642) x1905)
+:assumption (or x30691 (not x10632))
+:assumption (or x12856 (not x20372))
+:assumption (or x8130 (not x17073))
+:assumption (or (not x8535) (not x19705))
+:assumption (or x28528 (not x17872))
+:assumption (or x15447 (not x3435) x6471 (not x25774))
+:assumption (or x23762 x16717)
+:assumption (or (not x21482) (not x28541))
+:assumption (or x29562 (not x26843))
+:assumption (or x28563 (not x5822))
+:assumption (or (not x23244) (not x5663))
+:assumption (or x5786 x9425 x3400 x28344 (not x4894))
+:assumption (or x13739 x17245)
+:assumption (or (not x19620) (not x23244))
+:assumption (or (not x16400) (not x2866) (not x15570) x20679 (not x23244) x1761)
+:assumption (or x5028 x831)
+:assumption (or x14815 x6594)
+:assumption (or x19505 (not x31592) x28784 x19578 (not x31427) (not x29016))
+:assumption (or x20170 (not x22769))
+:assumption (or (not x7748) x3362 (not x3435) (not x14455) (not x4058))
+:assumption (or (not x7107) x30551)
+:assumption (or (not x24115) (not x12961))
+:assumption (or x2377 (not x12354))
+:assumption (or (not x31622) (not x15312))
+:assumption (or (not x17061) (not x23244))
+:assumption (or (not x11509) x23799)
+:assumption (or x26464 (not x6768))
+:assumption (or (not x3041) (not x11896))
+:assumption (or (not x2860) (not x31653))
+:assumption (or (not x15856) x27581)
+:assumption (or (not x25077) x18086)
+:assumption (or x15391 x17509)
+:assumption (or (not x11393) (not x4772) x24076 x28322 x7975 (not x25716) (not x3627) (not x22667) x16000 (not x30951) (not x17581) (not x7908))
+:assumption (or x16910 x13248)
+:assumption (or x15734 x16514)
+:assumption (or x21895 (not x23955) (not x30113) (not x27499))
+:assumption (or x13539 (not x3936))
+:assumption (or x10309 x18118)
+:assumption (or x31791 x17235)
+:assumption (or (not x15636) (not x21060))
+:assumption (or (not x25221) x7799 x15083 (not x25772))
+:assumption (or x10047 x25309)
+:assumption (or x27322 (not x784) x6606 (not x16510) (not x21815) (not x10632) x15810)
+:assumption (or (not x9504) (not x13051))
+:assumption (or x25592 (not x13425))
+:assumption (or (not x22855) (not x15570) (not x2866) (not x10839) (not x16400) x1761)
+:assumption (or (not x13956) (not x12997))
+:assumption (or (not x3166) (not x17302))
+:assumption (or x16738 x22197)
+:assumption (or x11042 x25350)
+:assumption (or x17930 (not x11949))
+:assumption (or (not x24548) (not x7993))
+:assumption (or x16871 x2081 (not x21457) (not x28519) (not x5028) (not x15720))
+:assumption (or (not x206) x14074)
+:assumption (or x28732 x900)
+:assumption (or (not x19833) (not x20621))
+:assumption (or (not x14206) x17668)
+:assumption (or (not x7537) x4839)
+:assumption (or x20788 (not x25403))
+:assumption (or (not x12591) (not x29990) (not x12245) (not x22775) x24503)
+:assumption (or x31439 x26814)
+:assumption (or (not x5093) (not x24123))
+:assumption (or (not x5164) x6138)
+:assumption (or x24094 x6757 x919 x24300 x6557)
+:assumption (or (not x15734) (not x28364))
+:assumption (or x25810 x6221)
+:assumption (or (not x23833) (not x27219) (not x20239) (not x16755) (not x17000))
+:assumption (or x17897 (not x11482) (not x16293) (not x8901) x1004 x21632)
+:assumption (or (not x20470) (not x30803))
+:assumption (or x22151 (not x5704))
+:assumption (or x3272 (not x26371))
+:assumption (or x26798 (not x9928))
+:assumption (or x21880 (not x17495))
+:assumption (or (not x1661) (not x19298))
+:assumption (or x6889 (not x8213))
+:assumption (or (not x18147) x4048 (not x9588) (not x17141) x21332 x3471 (not x31614))
+:assumption (or x827 x6354 x12853)
+:assumption (or x18942 x23663)
+:assumption (or (not x27189) (not x30001))
+:assumption (or (not x24882) x1680)
+:assumption (or (not x16882) x17794)
+:assumption (or x28147 x10815)
+:assumption (or x26514 x19428)
+:assumption (or x25659 (not x5279) x6133 (not x26622))
+:assumption (or x27525 (not x1150))
+:assumption (or x20819 x25821)
+:assumption (or (not x4871) x19957 (not x3190) (not x28538) (not x10538) x21662 x4609 x26865 (not x9768) x29920 (not x9038) (not x7305))
+:assumption (or x4443 x15031 (not x827))
+:assumption (or x13920 (not x22643))
+:assumption (or x30863 x4570)
+:assumption (or x3453 x6531)
+:assumption (or (not x12149) x15300 (not x9777) x29336 x8927 x2822)
+:assumption (or x31495 (not x9964) x26442 x8555 (not x4071))
+:assumption (or (not x29629) (not x14530))
+:assumption (or x452 (not x19140))
+:assumption (or x28538 (not x19957))
+:assumption (or (not x29243) x976)
+:assumption (or (not x14591) x31920)
+:assumption (or x17771 (not x25700))
+:assumption (or (not x8189) (not x28908))
+:assumption (or x1955 (not x17861))
+:assumption (or (not x22569) x623)
+:assumption (or (not x26535) (not x18385))
+:assumption (or x30581 x22691)
+:assumption (or x8002 (not x5386) x12535 x31372 x13997 x13842)
+:assumption (or (not x18728) (not x26835))
+:assumption (or x23477 (not x12669))
+:assumption (or (not x20810) x24417)
+:assumption (or x26039 (not x319))
+:assumption (or x4416 x9582)
+:assumption (or x29312 (not x12898))
+:assumption (or (not x15710) (not x23712))
+:assumption (or x9152 x5394 (not x23761) (not x762))
+:assumption (or x12335 (not x3943) (not x4582) (not x8069))
+:assumption (or x18728 (not x8240))
+:assumption (or x19402 (not x18401))
+:assumption (or (not x29765) x10097)
+:assumption (or x16628 (not x23232))
+:assumption (or x16456 x22921)
+:assumption (or x26089 x6604)
+:assumption (or x12322 x20845)
+:assumption (or x18328 (not x12153))
+:assumption (or x5701 x11007)
+:assumption (or x7776 x31837)
+:assumption (or (not x20738) (not x11489))
+:assumption (or x30222 (not x18379))
+:assumption (or x2580 (not x20816) x827)
+:assumption (or (not x26822) x21298)
+:assumption (or (not x26922) x9396)
+:assumption (or x17339 x23244)
+:assumption (or (not x6873) (not x17511))
+:assumption (or (not x1201) (not x13235) (not x14602) (not x28227))
+:assumption (or x19087 (not x23263) x10179 (not x31094))
+:assumption (or (not x1620) x14356)
+:assumption (or (not x2) (not x22684))
+:assumption (or x22499 (not x6146))
+:assumption (or (not x26548) (not x1736))
+:assumption (or (not x22802) (not x22600))
+:assumption (or x27783 (not x20578))
+:assumption (or x26834 (not x15938))
+:assumption (or (not x8202) x16583)
+:assumption (or x26670 x2342)
+:assumption (or x25852 x7308)
+:assumption (or x23399 (not x27400))
+:assumption (or (not x16025) x16949)
+:assumption (or (not x5249) x21434)
+:assumption (or x10701 (not x6262))
+:assumption (or (not x5052) x6681)
+:assumption (or x24731 (not x16170))
+:assumption (or x27196 (not x7286))
+:assumption (or x15680 x2880)
+:assumption (or (not x18369) x4115)
+:assumption (or x13457 x7647)
+:assumption (or (not x5393) (not x26562))
+:assumption (or x10846 (not x1880) x8602)
+:assumption (or x14291 (not x28253))
+:assumption (or (not x29466) x310)
+:assumption (or x16349 (not x1871))
+:assumption (or (not x23831) x16352 (not x20027) (not x23600) x9712)
+:assumption (or (not x22531) x8818 x3096)
+:assumption (or x31332 x10057)
+:assumption (or x499 (not x11279))
+:assumption (or (not x2808) x5229)
+:assumption (or (not x6968) (not x3628))
+:assumption (or (not x4721) (not x9008))
+:assumption (or (not x8146) (not x5542))
+:assumption (or (not x15727) x11134 x2602)
+:assumption (or x26631 x11188)
+:assumption (or (not x10651) x6813)
+:assumption (or (not x14106) (not x24648))
+:assumption (or x22652 (not x21973) x26991 x13360)
+:assumption (or x23607 x11140)
+:assumption (or (not x10076) (not x21642))
+:assumption (or (not x9008) x16054 x12452)
+:assumption (or x1438 x9310)
+:assumption (or (not x776) (not x6547))
+:assumption (or (not x1057) (not x19742) x6168 (not x12683))
+:assumption (or (not x8778) (not x3730))
+:assumption (or (not x29257) x15749 x26345 x779)
+:assumption (or (not x17707) (not x24465))
+:assumption (or x25760 x6491)
+:assumption (or (not x5790) x7706)
+:assumption (or (not x1289) x23436)
+:assumption (or (not x27537) (not x31738))
+:assumption (or x4238 (not x16248))
+:assumption (or (not x19920) x14320 (not x25464))
+:assumption (or (not x2953) x14567)
+:assumption (or (not x15955) (not x15979) (not x20298) x16273)
+:assumption (or (not x25131) (not x22551))
+:assumption (or x15605 (not x14432))
+:assumption (or x18052 (not x2394))
+:assumption (or x1895 x25824)
+:assumption (or x26655 (not x12594))
+:assumption (or (not x9935) x26121)
+:assumption (or x8093 (not x3299))
+:assumption (or (not x26694) (not x21671))
+:assumption (or (not x21049) x28801)
+:assumption (or (not x27174) (not x14790) (not x15677))
+:assumption (or (not x18360) x31067)
+:assumption (or x19263 x23469)
+:assumption (or x21828 (not x19305))
+:assumption (or (not x24745) x27704)
+:assumption (or x22144 (not x28912) (not x25792))
+:assumption (or (not x24079) x4786)
+:assumption (or (not x16423) x17526)
+:assumption (or x13255 (not x29696))
+:assumption (or x15486 (not x26773))
+:assumption (or x22067 x18782)
+:assumption (or (not x26284) (not x14651) (not x13956) x3516)
+:assumption (or (not x20866) (not x10576))
+:assumption (or (not x2322) (not x9222))
+:assumption (or (not x1881) (not x15794))
+:assumption (or x8757 x345)
+:assumption (or (not x10766) (not x29546) x1934)
+:assumption (or (not x7092) (not x30279))
+:assumption (or x18671 x17368)
+:assumption (or x25998 x23744)
+:assumption (or (not x4446) (not x21678))
+:assumption (or x4689 (not x31024))
+:assumption (or (not x13366) x27270)
+:assumption (or (not x4130) x19361)
+:assumption (or (not x28225) (not x13324))
+:assumption (or (not x19522) (not x21100))
+:assumption (or x5781 x1763)
+:assumption (or (not x25523) (not x2266))
+:assumption (or x25317 (not x20085))
+:assumption (or (not x23272) x3433)
+:assumption (or x17025 x8004)
+:assumption (or x31265 x17177 x17724)
+:assumption (or x29176 x10080)
+:assumption (or (not x10826) (not x18944))
+:assumption (or (not x8770) (not x12504))
+:assumption (or x19150 (not x6149))
+:assumption (or (not x11050) (not x28821) x30727)
+:assumption (or x10021 x30954)
+:assumption (or x16325 (not x18703))
+:assumption (or x7240 (not x31738))
+:assumption (or x2045 x21254)
+:assumption (or (not x31334) (not x9792))
+:assumption (or (not x11487) (not x323))
+:assumption (or x3289 x6307 (not x28152) x18504 x3561 x10440 x8092 (not x21447))
+:assumption (or x7203 (not x19108))
+:assumption (or x6493 (not x6936))
+:assumption (or x19740 x21824 x2296)
+:assumption (or x17214 (not x30147))
+:assumption (or (not x6051) (not x21892))
+:assumption (or x26897 x28775)
+:assumption (or x1972 (not x26243))
+:assumption (or (not x15025) (not x31260))
+:assumption (or x14338 x2277)
+:assumption (or (not x288) x22497)
+:assumption (or x6159 x11502)
+:assumption (or (not x24335) x18908)
+:assumption (or x8642 (not x18690))
+:assumption (or x16994 x27768)
+:assumption (or (not x11506) (not x15056))
+:assumption (or (not x75) x17908)
+:assumption (or (not x20007) (not x4274))
+:assumption (or (not x11341) x4362 x750)
+:assumption (or x25459 x23838)
+:assumption (or (not x22549) (not x17543))
+:assumption (or x22942 (not x24662))
+:assumption (or x17459 x7034)
+:assumption (or x3045 x25171 (not x14016) (not x23524) (not x9732))
+:assumption (or x19794 x5929)
+:assumption (or (not x16743) (not x14960))
+:assumption (or x20782 (not x12317))
+:assumption (or x14455 (not x10636))
+:assumption (or (not x30138) (not x28512) x26897 x18641)
+:assumption (or (not x27537) x6189 (not x12127))
+:assumption (or (not x19784) (not x18935) (not x29364) (not x29196))
+:assumption (or x25659 x19375)
+:assumption (or (not x12501) (not x28972))
+:assumption (or x9263 x9008 (not x31542))
+:assumption (or x21601 (not x11626))
+:assumption (or (not x26821) x7945)
+:assumption (or x14455 (not x20477))
+:assumption (or (not x25659) x16429)
+:assumption (or x1078 (not x5425) x20744 x23221 (not x17084))
+:assumption (or x181 (not x23858))
+:assumption (or x29935 x13576)
+:assumption (or (not x26554) x25366)
+:assumption (or x21580 (not x14952))
+:assumption (or (not x6567) (not x19270))
+:assumption (or (not x21369) x28392)
+:assumption (or (not x24512) x29095)
+:assumption (or x19946 x1082)
+:assumption (or x24245 (not x3409) x12082)
+:assumption (or (not x17242) x24304)
+:assumption (or x22734 x16904)
+:assumption (or x27368 x7520)
+:assumption (or (not x27313) x17660)
+:assumption (or x15956 (not x30837))
+:assumption (or (not x29157) x23279 x24822)
+:assumption (or (not x20338) x2581)
+:assumption (or x25296 x20946)
+:assumption (or x860 (not x1649) x15558 x12488 (not x11896))
+:assumption (or (not x12410) (not x9911))
+:assumption (or x2590 (not x10626))
+:assumption (or x18995 (not x8002))
+:assumption (or x13253 x13866)
+:assumption (or x8477 (not x5219))
+:assumption (or x31813 x17199)
+:assumption (or x1908 x18950 (not x20489) (not x4928) (not x20181) x24387)
+:assumption (or x24843 x669)
+:assumption (or (not x9803) x821)
+:assumption (or (not x17042) x10047)
+:assumption (or x21257 (not x5063))
+:assumption (or (not x15273) (not x4655))
+:assumption (or x7989 (not x156))
+:assumption (or (not x14441) (not x13928))
+:assumption (or x12458 (not x31195))
+:assumption (or x3376 x4762)
+:assumption (or (not x7262) x16549)
+:assumption (or (not x24865) (not x31759))
+:assumption (or x2563 x20769)
+:assumption (or (not x30490) (not x30113))
+:assumption (or (not x9387) (not x16027))
+:assumption (or x4801 x16765)
+:assumption (or x16420 (not x16763))
+:assumption (or (not x19701) x7295 (not x10053) x27282)
+:assumption (or x4734 (not x1560))
+:assumption (or (not x4259) x9030 (not x6594) (not x17534))
+:assumption (or (not x8720) (not x4214))
+:assumption (or x23839 (not x28119))
+:assumption (or (not x22635) x5505 x17446 (not x7159) x13998)
+:assumption (or (not x15051) (not x22513))
+:assumption (or x11294 x26256)
+:assumption (or x14772 x30479 x23481 x19992)
+:assumption (or x22648 (not x25152) x15307 (not x918) (not x23320) (not x6776))
+:assumption (or x20714 (not x3721))
+:assumption (or x26373 x3909 (not x21239) x5345 x20579 x9075 (not x25442) (not x2274) (not x16715) x19506 (not x352))
+:assumption (or (not x14066) x154)
+:assumption (or x4138 x30856 (not x28375) x179 (not x25485))
+:assumption (or (not x29265) (not x4907))
+:assumption (or x16446 (not x13583))
+:assumption (or x16072 x16023)
+:assumption (or (not x12536) (not x19214) (not x21903) x24572)
+:assumption (or x31391 x21851 x25277 x2675 x13722)
+:assumption (or (not x407) (not x4867))
+:assumption (or (not x29329) x17307)
+:assumption (or (not x9494) x6250)
+:assumption (or (not x12983) x25406)
+:assumption (or x12437 (not x827) x21755)
+:assumption (or x7755 (not x10163))
+:assumption (or x7209 (not x1234))
+:assumption (or (not x10871) (not x14891))
+:assumption (or (not x16025) (not x3211))
+:assumption (or x21122 x1920)
+:assumption (or (not x21648) x20875)
+:assumption (or (not x26896) (not x19121))
+:assumption (or (not x10106) x1145)
+:assumption (or (not x20535) (not x24384))
+:assumption (or (not x27911) x18834 x31734)
+:assumption (or x17288 (not x19268) (not x19864))
+:assumption (or x23731 (not x3742))
+:assumption (or (not x24339) (not x10062))
+:assumption (or x164 x8150)
+:assumption (or x20511 x26608)
+:assumption (or x7973 x11058)
+:assumption (or x16156 (not x30113))
+:assumption (or (not x14183) (not x18593))
+:assumption (or x382 x26549)
+:assumption (or x4491 (not x9200))
+:assumption (or (not x12503) x13036)
+:assumption (or x7868 x6710)
+:assumption (or x8726 x4950 (not x28711) (not x17230))
+:assumption (or x8286 x24181)
+:assumption (or x15520 (not x28918))
+:assumption (or x7839 (not x4718))
+:assumption (or (not x25670) x28079)
+:assumption (or x22839 (not x2607))
+:assumption (or (not x358) (not x20154))
+:assumption (or (not x15832) (not x28890))
+:assumption (or x9336 x30634)
+:assumption (or x26549 x7692)
+:assumption (or (not x6868) x23122)
+:assumption (or x11487 (not x25341))
+:assumption (or (not x6434) (not x31103))
+:assumption (or (not x27469) x17802)
+:assumption (or (not x14337) (not x26254))
+:assumption (or x20594 (not x23804) (not x30262) x21711 x6121 x16945)
+:assumption (or (not x22639) (not x24651) (not x6784))
+:assumption (or (not x3949) (not x31580))
+:assumption (or (not x16095) (not x14542))
+:assumption (or x11619 x2498)
+:assumption (or x12373 x28402)
+:assumption (or x4079 x30700)
+:assumption (or (not x17359) (not x15509))
+:assumption (or x14379 (not x8415))
+:assumption (or x3831 (not x17580) (not x8620) (not x13083))
+:assumption (or x11944 x8172)
+:assumption (or (not x11171) x10632)
+:assumption (or (not x16360) x412)
+:assumption (or x4121 (not x26371) (not x23263))
+:assumption (or x19602 x7462)
+:assumption (or (not x7271) x27537 (not x7411))
+:assumption (or x29779 x13934)
+:assumption (or x26556 x19667)
+:assumption (or x5528 (not x20411))
+:assumption (or (not x3365) x7604)
+:assumption (or (not x9769) (not x3816))
+:assumption (or x21574 (not x16316))
+:assumption (or x10257 (not x30815) x15690 x2323 (not x4492) (not x23214))
+:assumption (or (not x252) x29853)
+:assumption (or x29758 (not x13956))
+:assumption (or (not x13415) x30223)
+:assumption (or x16374 (not x28578) (not x13056) x13970)
+:assumption (or (not x25603) x14667)
+:assumption (or (not x23086) (not x13576))
+:assumption (or x22444 x25666)
+:assumption (or (not x823) (not x3094))
+:assumption (or (not x7107) (not x25664))
+:assumption (or (not x1844) x4399)
+:assumption (or (not x9930) x12226)
+:assumption (or x1987 x18623)
+:assumption (or (not x28444) (not x22634))
+:assumption (or x24097 x6559)
+:assumption (or (not x23940) x13622 x8683 (not x9439))
+:assumption (or x503 (not x6956))
+:assumption (or (not x11372) (not x26810))
+:assumption (or (not x18021) x23164 x28818 (not x15367) (not x24144) (not x5528))
+:assumption (or x28565 x7913)
+:assumption (or (not x20486) (not x4165))
+:assumption (or (not x11298) (not x18985))
+:assumption (or (not x28099) x9874)
+:assumption (or x10704 x25813)
+:assumption (or x30928 x10265)
+:assumption (or x29951 x26124)
+:assumption (or (not x29312) x30456 x23287)
+:assumption (or x2830 (not x19121))
+:assumption (or x8348 x17947)
+:assumption (or x15557 x21423)
+:assumption (or (not x23805) x17234)
+:assumption (or (not x22087) (not x15887) (not x11310))
+:assumption (or x5336 x11527)
+:assumption (or (not x11946) (not x30114))
+:assumption (or (not x8399) (not x4434))
+:assumption (or (not x22576) x13415)
+:assumption (or (not x18356) (not x20534))
+:assumption (or x26897 (not x14248))
+:assumption (or x3771 (not x29027) x30518 x6563)
+:assumption (or x16147 (not x9977))
+:assumption (or x21504 (not x24756))
+:assumption (or x26670 (not x15902))
+:assumption (or (not x5528) (not x23817))
+:assumption (or (not x1178) (not x16424))
+:assumption (or (not x17930) x5073 (not x19992))
+:assumption (or x26638 x29865 (not x16641) (not x3230) (not x18138) x861 (not x21151))
+:assumption (or (not x16304) x11518)
+:assumption (or (not x14905) (not x24035))
+:assumption (or (not x13920) x20082)
+:assumption (or (not x10881) (not x4230))
+:assumption (or x13487 (not x25480))
+:assumption (or (not x28381) (not x30138))
+:assumption (or x9008 (not x22135) (not x30585))
+:assumption (or x27563 (not x10406) (not x4224) x26214 (not x17874) x12603 (not x4095) (not x18160) (not x28054) x3411 (not x22057) (not x6737) (not x13253))
+:assumption (or (not x10549) x27310)
+:assumption (or x28348 x5078)
+:assumption (or x24853 (not x13480))
+:assumption (or (not x6444) (not x3868))
+:assumption (or x21119 (not x14839))
+:assumption (or (not x29341) x19063)
+:assumption (or (not x18422) x29196 (not x28063))
+:assumption (or (not x8189) (not x20589))
+:assumption (or x22124 x319)
+:assumption (or (not x11626) (not x9008))
+:assumption (or (not x3148) x18953)
+:assumption (or x24346 (not x23855))
+:assumption (or (not x16303) (not x14113))
+:assumption (or (not x31643) x24104)
+:assumption (or x24051 (not x4917))
+:assumption (or x25701 x13268)
+:assumption (or (not x20471) x18465)
+:assumption (or (not x337) (not x3728))
+:assumption (or (not x7828) x29092)
+:assumption (or (not x22199) (not x15065))
+:assumption (or x14053 x26076)
+:assumption (or x4766 x11380)
+:assumption (or (not x4504) x8381)
+:assumption (or (not x15912) x17557)
+:assumption (or x161 (not x9124))
+:assumption (or x30909 (not x21942))
+:assumption (or (not x3348) (not x7308))
+:assumption (or x29260 x23244)
+:assumption (or x4318 (not x29312) (not x15642))
+:assumption (or (not x16998) (not x22599))
+:assumption (or x18237 x6994)
+:assumption (or x6163 x8533)
+:assumption (or (not x31690) (not x23635))
+:assumption (or (not x4195) (not x25704))
+:assumption (or (not x27200) (not x25373))
+:assumption (or x9095 x24319)
+:assumption (or x31185 x27963)
+:assumption (or (not x28529) (not x10282))
+:assumption (or (not x28881) (not x28708))
+:assumption (or (not x15962) (not x1933))
+:assumption (or x31617 (not x29050))
+:assumption (or (not x22596) x9673)
+:assumption (or (not x29062) (not x21807))
+:assumption (or x15795 (not x22413) x16304 x3299)
+:assumption (or (not x5955) (not x8002))
+:assumption (or x202 x884)
+:assumption (or x12905 (not x23000))
+:assumption (or x21896 x29647)
+:assumption (or x485 x21985)
+:assumption (or x9562 x10252)
+:assumption (or x23279 x2884)
+:assumption (or (not x15785) (not x11924) (not x12555) (not x16300))
+:assumption (or x16116 (not x20977))
+:assumption (or x15698 x15974)
+:assumption (or (not x10064) (not x6413))
+:assumption (or (not x10286) x609)
+:assumption (or x7533 x13959 x11281)
+:assumption (or (not x19243) x8043 x15217)
+:assumption (or x14106 x13956 x24648)
+:assumption (or (not x761) (not x24524))
+:assumption (or (not x18348) (not x31675))
+:assumption (or x7298 (not x7600))
+:assumption (or (not x3662) x10959)
+:assumption (or x30124 x28905)
+:assumption (or x6127 x21039)
+:assumption (or (not x22433) (not x9531))
+:assumption (or x18337 (not x3235))
+:assumption (or (not x5106) x31439)
+:assumption (or x14512 x20718)
+:assumption (or x2468 (not x21298))
+:assumption (or x13111 x26039)
+:assumption (or x24387 x2498 x9561)
+:assumption (or (not x16831) (not x3482))
+:assumption (or x30136 (not x25659))
+:assumption (or (not x8020) (not x28631))
+:assumption (or (not x8760) x13304)
+:assumption (or x17621 (not x7120))
+:assumption (or (not x23598) x20870)
+:assumption (or x15057 (not x25614))
+:assumption (or (not x24372) (not x8531) (not x6037) x3331 x24207 x31862 (not x5182) (not x26198))
+:assumption (or (not x23201) (not x26061))
+:assumption (or (not x28462) (not x23592))
+:assumption (or x2749 x14330)
+:assumption (or x26272 (not x17889))
+:assumption (or x8259 (not x2700))
+:assumption (or (not x14196) x30324)
+:assumption (or x31585 (not x8002))
+:assumption (or x15113 x21653 x15633)
+:assumption (or x16312 (not x23249))
+:assumption (or x9677 (not x13500))
+:assumption (or x1147 x17951)
+:assumption (or x9260 x22855)
+:assumption (or x15745 x29904)
+:assumption (or (not x5192) x30650)
+:assumption (or (not x22472) x30113 x28815)
+:assumption (or (not x9930) x24578 x5528)
+:assumption (or x15805 (not x30445) (not x3061) (not x28431) (not x15171) x7378 x9016 x26056)
+:assumption (or x7646 x9930)
+:assumption (or (not x6075) (not x26506))
+:assumption (or x28885 (not x23931))
+:assumption (or x3560 (not x2000))
+:assumption (or x29708 x24514)
+:assumption (or (not x4616) x10990)
+:assumption (or (not x10358) (not x20180))
+:assumption (or (not x24471) (not x15516))
+:assumption (or x12482 x31264)
+:assumption (or (not x6598) (not x25557))
+:assumption (or x7542 x9960 x13487)
+:assumption (or (not x9082) (not x6596))
+:assumption (or (not x8403) (not x20839))
+:assumption (or (not x21653) x3472 (not x28511))
+:assumption (or (not x24155) (not x25397))
+:assumption (or (not x30686) x9319)
+:assumption (or x23672 x3418)
+:assumption (or x1834 (not x10477) x1348)
+:assumption (or x9697 (not x19446))
+:assumption (or (not x22949) x13178)
+:assumption (or x28668 (not x22355))
+:assumption (or (not x11707) (not x8832))
+:assumption (or (not x7575) (not x23120))
+:assumption (or x7214 x2701)
+:assumption (or (not x1393) (not x30956) (not x7700))
+:assumption (or x21633 x18817)
+:assumption (or (not x28141) x1886)
+:assumption (or x31511 x18366)
+:assumption (or x1312 x14756)
+:assumption (or (not x12878) x16321)
+:assumption (or x21298 x14322)
+:assumption (or (not x22795) (not x31690))
+:assumption (or (not x17601) (not x23132))
+:assumption (or x15620 x1498)
+:assumption (or x28842 (not x20354) x415)
+:assumption (or x18463 x13956)
+:assumption (or (not x13502) (not x16681))
+:assumption (or x26222 x14075)
+:assumption (or x7233 x3883)
+:assumption (or x7333 (not x23244))
+:assumption (or x16850 (not x24208))
+:assumption (or (not x31925) (not x16465))
+:assumption (or x18737 x827)
+:assumption (or x15492 x19014)
+:assumption (or x13614 x11524 x12910)
+:assumption (or x9025 (not x18517))
+:assumption (or x24437 (not x5299))
+:assumption (or (not x28840) (not x26757))
+:assumption (or (not x31562) (not x30016))
+:assumption (or x26349 (not x1831))
+:assumption (or (not x15568) x24346)
+:assumption (or x8108 x25659)
+:assumption (or x27239 x5961)
+:assumption (or (not x24688) (not x17416))
+:assumption (or x28355 (not x1888))
+:assumption (or x26808 x25315)
+:assumption (or (not x16947) x8002)
+:assumption (or (not x22669) (not x23415))
+:assumption (or x1393 x24517)
+:assumption (or (not x17729) x1810)
+:assumption (or x12902 (not x31794))
+:assumption (or (not x13873) (not x31467))
+:assumption (or x1850 x25334)
+:assumption (or x19401 x28895)
+:assumption (or x21384 (not x264))
+:assumption (or (not x5586) (not x17302))
+:assumption (or x25224 (not x22008))
+:assumption (or (not x5206) (not x499) x31610 (not x13956))
+:assumption (or (not x15795) (not x23244) x22122)
+:assumption (or (not x17672) x5528)
+:assumption (or x11131 (not x7481))
+:assumption (or x20317 (not x25608))
+:assumption (or (not x27415) (not x5269))
+:assumption (or x22363 (not x25652) (not x1629) (not x9424) x19539)
+:assumption (or x20063 x27485 (not x28105) x19741 (not x9436))
+:assumption (or (not x27869) (not x25958) (not x4921) (not x4153))
+:assumption (or x8644 x24217)
+:assumption (or (not x23244) (not x4413))
+:assumption (or (not x7384) (not x16162))
+:assumption (or (not x2745) (not x10139))
+:assumption (or x11547 (not x1139))
+:assumption (or (not x18110) (not x10360))
+:assumption (or (not x16126) (not x19055))
+:assumption (or (not x28837) x28753)
+:assumption (or x5528 (not x15635))
+:assumption (or x17908 x2101)
+:assumption (or (not x13576) (not x418))
+:assumption (or (not x9066) (not x23060))
+:assumption (or (not x28673) x13018)
+:assumption (or (not x1393) (not x20494))
+:assumption (or x4565 (not x30569))
+:assumption (or (not x23794) (not x1767))
+:assumption (or x14508 (not x12761))
+:assumption (or x2624 (not x16409))
+:assumption (or (not x16745) (not x30146) (not x20652))
+:assumption (or (not x15894) x3001)
+:assumption (or x421 (not x6156) (not x1567))
+:assumption (or x23046 (not x19750))
+:assumption (or (not x14168) x11638 (not x8280) x11281)
+:assumption (or x6601 x28679)
+:assumption (or (not x18859) (not x2477))
+:assumption (or x21321 x10587)
+:assumption (or (not x26191) (not x677))
+:assumption (or x19062 (not x22297))
+:assumption (or (not x18182) (not x9284) (not x22782) x27654 x5485 x5160)
+:assumption (or (not x29016) x14895)
+:assumption (or (not x4441) (not x16188))
+:assumption (or (not x15137) (not x31799))
+:assumption (or x9930 (not x27776))
+:assumption (or (not x30113) (not x21401))
+:assumption (or (not x1130) x10346)
+:assumption (or x10694 x28732 x25659 x22231)
+:assumption (or x6245 (not x26015))
+:assumption (or (not x10129) (not x2769))
+:assumption (or x8313 (not x13196))
+:assumption (or x12558 (not x21815) x10372)
+:assumption (or (not x28766) (not x502))
+:assumption (or x18508 x4582)
+:assumption (or (not x17664) (not x19501))
+:assumption (or (not x31353) x13150)
+:assumption (or x14785 (not x22590))
+:assumption (or x4278 (not x9453))
+:assumption (or (not x15247) (not x13576))
+:assumption (or (not x20588) x9028)
+:assumption (or (not x6744) (not x22154))
+:assumption (or (not x8322) (not x22270))
+:assumption (or x20863 (not x17887))
+:assumption (or (not x22163) (not x21442) (not x25531))
+:assumption (or (not x9269) x15162 (not x7034) (not x16384) (not x6274))
+:assumption (or x461 x19224)
+:assumption (or (not x25482) (not x1029))
+:assumption (or (not x26493) (not x23325))
+:assumption (or (not x30052) x21983)
+:assumption (or (not x20302) (not x23709) x3560)
+:assumption (or (not x25232) (not x19848))
+:assumption (or (not x6963) x7885)
+:assumption (or (not x758) (not x30161))
+:assumption (or x20702 x20402 x1698 (not x2091) (not x17168) (not x25556))
+:assumption (or x25277 x6235)
+:assumption (or x17981 x19711)
+:assumption (or (not x26855) x20472)
+:assumption (or x26780 x14549)
+:assumption (or (not x4938) x3625)
+:assumption (or x17865 (not x16648))
+:assumption (or x13697 (not x21665))
+:assumption (or x22540 (not x6594))
+:assumption (or (not x18457) (not x29974))
+:assumption (or x21214 x10887)
+:assumption (or (not x27506) x12082)
+:assumption (or x22070 x17293)
+:assumption (or x21026 (not x18268))
+:assumption (or (not x25171) (not x15330))
+:assumption (or x16082 x14460)
+:assumption (or x16977 (not x14066))
+:assumption (or x17808 x27540)
+:assumption (or (not x23813) x31930)
+:assumption (or x14837 (not x20419))
+:assumption (or x3918 (not x9340))
+:assumption (or (not x11970) (not x6667))
+:assumption (or (not x22453) x11750)
+:assumption (or x18519 x22911)
+:assumption (or x9337 x15427)
+:assumption (or x18500 (not x26516))
+:assumption (or (not x7308) x16200)
+:assumption (or (not x23287) x26311)
+:assumption (or x15866 x17384)
+:assumption (or x13411 (not x2449) (not x897))
+:assumption (or x31723 (not x26354) x30758 (not x9701))
+:assumption (or x2334 x31873 x18389 (not x10457))
+:assumption (or (not x734) x19378)
+:assumption (or x1409 x28197)
+:assumption (or (not x2334) (not x3423) (not x13804))
+:assumption (or (not x18942) x31096)
+:assumption (or x16175 (not x15450))
+:assumption (or (not x17671) (not x29442) (not x8511))
+:assumption (or x19428 (not x20407))
+:assumption (or (not x26155) (not x25337))
+:assumption (or (not x25659) (not x25013) (not x10986))
+:assumption (or x1107 (not x28445) x28973 (not x30735) x3605)
+:assumption (or x12578 (not x16018))
+:assumption (or (not x30483) (not x7700) x1393)
+:assumption (or x18329 x7675)
+:assumption (or x16732 x16709 (not x9008))
+:assumption (or (not x12578) (not x26965))
+:assumption (or x22360 (not x11035))
+:assumption (or x20075 (not x11792) x24557 x25224 x6149 x15987)
+:assumption (or x28377 (not x13736))
+:assumption (or x4364 (not x29254))
+:assumption (or (not x18039) x16929)
+:assumption (or (not x7466) x30785)
+:assumption (or x13561 (not x17968))
+:assumption (or (not x26661) x24853 (not x16329) (not x14347) x18333)
+:assumption (or x14171 (not x21616))
+:assumption (or (not x27169) x26892 x8002 x23244 x9976 x13956)
+:assumption (or x19027 (not x29102) (not x14208) x31478)
+:assumption (or (not x12026) (not x13477))
+:assumption (or (not x31734) (not x27911) (not x11423))
+:assumption (or (not x18224) x21751)
+:assumption (or (not x75) x2216)
+:assumption (or x6374 x16146)
+:assumption (or x20782 (not x4373) x27517 (not x30763))
+:assumption (or (not x27879) x82)
+:assumption (or x20346 x25809)
+:assumption (or x24205 (not x24965))
+:assumption (or (not x5217) (not x21190) x23820)
+:assumption (or x20057 (not x31195))
+:assumption (or (not x23174) (not x24931) x16849 x5550 (not x20614) x11819)
+:assumption (or x31731 (not x2993))
+:assumption (or x19775 (not x25845))
+:assumption (or x25659 (not x21176))
+:assumption (or x10970 x7631)
+:assumption (or (not x11733) (not x20989) (not x10336))
+:assumption (or x16827 (not x8602))
+:assumption (or x13306 (not x13743))
+:assumption (or (not x8423) (not x18800))
+:assumption (or (not x3299) x2193)
+:assumption (or x29318 (not x26188))
+:assumption (or x6872 (not x11457))
+:assumption (or x11237 x7932 x16654 x20530)
+:assumption (or (not x23158) x26022)
+:assumption (or (not x24536) (not x27440) (not x5766) (not x31060) (not x6849) (not x30138) (not x13005) x26531)
+:assumption (or x27636 (not x30499) (not x22842))
+:assumption (or (not x30405) x20412 (not x9008))
+:assumption (or x13858 (not x31620))
+:assumption (or (not x198) (not x11820))
+:assumption (or x665 (not x6969) (not x26952))
+:assumption (or x24978 (not x21486))
+:assumption (or (not x27920) (not x8630))
+:assumption (or x15435 x27758)
+:assumption (or x25224 (not x8830))
+:assumption (or x18999 (not x13903))
+:assumption (or x29656 x16871 (not x15720) (not x21457) (not x28519) x21815)
+:assumption (or (not x5459) (not x23244))
+:assumption (or x24408 x7621)
+:assumption (or x4212 (not x11345))
+:assumption (or x22495 x13252)
+:assumption (or (not x24492) x9480)
+:assumption (or (not x14088) (not x28912) x29649)
+:assumption (or x26810 (not x5955))
+:assumption (or x20344 (not x13482))
+:assumption (or x8532 (not x17267))
+:assumption (or x26125 x30766)
+:assumption (or (not x478) (not x20881))
+:assumption (or (not x12448) (not x13927))
+:assumption (or (not x30047) x12769)
+:assumption (or x7753 x28649)
+:assumption (or (not x7647) x31119 (not x12940) x16044 x28177 x24006 x5335 (not x6347))
+:assumption (or (not x16753) x12578)
+:assumption (or (not x25310) (not x14389))
+:assumption (or x14591 (not x11919) (not x4345))
+:assumption (or (not x7510) x9540)
+:assumption (or x14485 x3275)
+:assumption (or x4662 (not x19504))
+:assumption (or (not x25452) (not x3716))
+:assumption (or (not x11226) x9612 (not x27610))
+:assumption (or (not x24785) (not x30028) (not x20799) (not x7043) (not x3933))
+:assumption (or (not x18042) x12486)
+:assumption (or x20776 (not x18014))
+:assumption (or x14430 (not x5477))
+:assumption (or x18003 (not x16952) x31390 x4259 (not x19864) x19948)
+:assumption (or (not x26406) (not x3775))
+:assumption (or (not x15382) (not x19463))
+:assumption (or (not x12731) (not x29375))
+:assumption (or (not x21325) (not x128))
+:assumption (or (not x25257) (not x19611))
+:assumption (or x30872 x10281 (not x7914) (not x27930) (not x23846) x31591 x9008 (not x20215))
+:assumption (or (not x25659) x13588)
+:assumption (or x19000 (not x28418))
+:assumption (or (not x9661) x19356)
+:assumption (or (not x22823) x22044)
+:assumption (or x1873 (not x22777))
+:assumption (or x9727 (not x20862))
+:assumption (or x13317 (not x12150) (not x1747) x1293)
+:assumption (or x8528 (not x28148))
+:assumption (or x10693 x31274)
+:assumption (or (not x10819) (not x17777))
+:assumption (or x27564 x15382 (not x18047) x24228 x15906 x29536)
+:assumption (or x6152 x12688)
+:assumption (or (not x8782) x24142)
+:assumption (or (not x13646) x9811)
+:assumption (or (not x26789) (not x22243))
+:assumption (or x24155 x25142 (not x28072) (not x6771))
+:assumption (or x22098 (not x10972))
+:assumption (or (not x16510) x23504)
+:assumption (or (not x24756) (not x25408))
+:assumption (or x10874 (not x2153))
+:assumption (or (not x21863) x27457)
+:assumption (or x26949 x17649)
+:assumption (or x3422 x14548 x20446 (not x26982))
+:assumption (or x30974 (not x8658) x29883)
+:assumption (or x13956 x31154)
+:assumption (or (not x30460) (not x9157))
+:assumption (or (not x3008) x4343)
+:assumption (or x11005 (not x18437))
+:assumption (or x20135 x3001 x29714 (not x28590))
+:assumption (or x27263 (not x326) x11748 x17359 x17758)
+:assumption (or (not x12985) (not x25818))
+:assumption (or (not x12045) (not x4909))
+:assumption (or (not x18807) (not x14969))
+:assumption (or x14455 x16025 (not x13038))
+:assumption (or (not x3842) x23428)
+:assumption (or (not x26646) (not x28344))
+:assumption (or x6969 x11151 (not x6418))
+:assumption (or x8264 x23455)
+:assumption (or x10510 (not x22316))
+:assumption (or (not x21064) x3051 x1393)
+:assumption (or x15326 x17150)
+:assumption (or (not x25784) x4615 x21690)
+:assumption (or x6911 (not x15714) (not x28967) (not x19183))
+:assumption (or x26660 x13993)
+:assumption (or x345 (not x13956))
+:assumption (or (not x28499) x17815)
+:assumption (or (not x16604) (not x8991))
+:assumption (or x27393 (not x25509))
+:assumption (or (not x16808) x2112)
+:assumption (or (not x18913) x8571)
+:assumption (or (not x30137) x12086)
+:assumption (or (not x23284) (not x19509))
+:assumption (or (not x5014) x24277)
+:assumption (or x5057 x23519 (not x9008))
+:assumption (or (not x21326) (not x17909))
+:assumption (or x30138 (not x3987) x26897 (not x3766))
+:assumption (or x8577 x4267)
+:assumption (or x15744 (not x21652))
+:assumption (or (not x22567) x13427)
+:assumption (or (not x18859) (not x21200))
+:assumption (or x23457 (not x5434))
+:assumption (or (not x2943) x22805)
+:assumption (or (not x21661) (not x27059) (not x3264))
+:assumption (or x2137 x13701)
+:assumption (or (not x27300) (not x8002))
+:assumption (or x27859 (not x10467))
+:assumption (or (not x2858) (not x5807))
+:assumption (or x31357 (not x30917))
+:assumption (or (not x30849) (not x23244))
+:assumption (or x22778 x5697)
+:assumption (or x26891 (not x24608))
+:assumption (or x4600 (not x13131) (not x4504) (not x12416))
+:assumption (or x27944 (not x14928))
+:assumption (or (not x24800) x10236)
+:assumption (or x27169 x26884 x30113)
+:assumption (or (not x20291) x11257)
+:assumption (or (not x18859) x3001 (not x9714) x9930 x20550)
+:assumption (or (not x23113) (not x7658))
+:assumption (or x21062 (not x22887))
+:assumption (or (not x12830) (not x13892))
+:assumption (or x4106 (not x16087))
+:assumption (or x1915 x28573)
+:assumption (or (not x10982) (not x20892))
+:assumption (or x14968 (not x19003))
+:assumption (or (not x29034) x24464)
+:assumption (or x1583 x22538)
+:assumption (or (not x4761) x10220)
+:assumption (or (not x18338) (not x8580))
+:assumption (or (not x7667) x13956 x27804)
+:assumption (or (not x15987) (not x28175))
+:assumption (or (not x23879) (not x13679) x8627)
+:assumption (or x6610 x31703 (not x25393))
+:assumption (or (not x3589) x12821)
+:assumption (or (not x24643) (not x21298) (not x16821))
+:assumption (or x7633 (not x8551) (not x5600) (not x25197) (not x16623))
+:assumption (or (not x31312) x9627 x3715 x4259 (not x3220) (not x27002))
+:assumption (or (not x7037) x29519)
+:assumption (or (not x3255) (not x1393))
+:assumption (or (not x6260) (not x18327))
+:assumption (or (not x22689) x26475 x28328)
+:assumption (or x19933 x7178)
+:assumption (or x8149 x16510)
+:assumption (or (not x21024) (not x8002))
+:assumption (or (not x7486) (not x23399))
+:assumption (or (not x12400) (not x21294))
+:assumption (or x12442 x29442)
+:assumption (or (not x21330) x9508)
+:assumption (or x15471 x12933)
+:assumption (or x18946 x2055)
+:assumption (or (not x16544) x4365 x176 (not x5332) (not x1429))
+:assumption (or x7270 (not x762) (not x10824))
+:assumption (or (not x6600) (not x5209))
+:assumption (or (not x27772) (not x4921) x22708 (not x5666))
+:assumption (or (not x438) (not x7094))
+:assumption (or x25214 (not x17232))
+:assumption (or (not x30332) (not x20160))
+:assumption (or x22964 (not x6771))
+:assumption (or x16700 (not x2943) (not x23801))
+:assumption (or x8239 x12875)
+:assumption (or x25995 x20091)
+:assumption (or x21847 x26930)
+:assumption (or (not x8002) x23584)
+:assumption (or (not x29587) (not x83))
+:assumption (or (not x29256) (not x24710))
+:assumption (or (not x29846) x1732)
+:assumption (or (not x3318) x25294)
+:assumption (or (not x30195) x2912)
+:assumption (or x5247 x26470)
+:assumption (or x18014 (not x20776))
+:assumption (or x18384 x20794)
+:assumption (or x7067 x28022)
+:assumption (or x8126 (not x5509))
+:assumption (or (not x30631) x31338)
+:assumption (or (not x10975) x21824)
+:assumption (or x24296 (not x28822))
+:assumption (or x24853 x26034 (not x24427))
+:assumption (or x1082 (not x4551))
+:assumption (or x8886 (not x31076) x20765 x31777 (not x7663))
+:assumption (or x16820 x21998)
+:assumption (or (not x17879) (not x9471))
+:assumption (or x26055 (not x4873))
+:assumption (or (not x11298) (not x25275))
+:assumption (or x31043 (not x3075))
+:assumption (or (not x18253) x15491 x27706)
+:assumption (or (not x23449) x5467 (not x16569) (not x13336) x24386 (not x5592) (not x9727) (not x12933) x11871)
+:assumption (or (not x14069) x14009)
+:assumption (or x8002 (not x26331) x19978)
+:assumption (or (not x27697) (not x10436) x18859)
+:assumption (or (not x15579) (not x8982))
+:assumption (or (not x24357) x24696)
+:assumption (or x31134 (not x7709))
+:assumption (or x11731 (not x7233))
+:assumption (or (not x8002) (not x2354) (not x30330))
+:assumption (or (not x21653) (not x14328) (not x10967))
+:assumption (or (not x14658) x264)
+:assumption (or (not x7530) (not x9585) x23244 (not x2561) x13956 x8002)
+:assumption (or x18647 x10283)
+:assumption (or x13956 x5479)
+:assumption (or x18945 x24473)
+:assumption (or x7200 x18196)
+:assumption (or (not x16009) x26897)
+:assumption (or x3194 (not x23980))
+:assumption (or x17066 x27349)
+:assumption (or x12260 x3176 (not x15819))
+:assumption (or (not x10188) (not x10874))
+:assumption (or (not x1697) (not x5383) x26017 x480)
+:assumption (or x26032 (not x9696))
+:assumption (or x166 x7413)
+:assumption (or (not x13535) (not x9268))
+:assumption (or (not x15875) (not x1225))
+:assumption (or (not x11408) (not x12846))
+:assumption (or x25490 x11807)
+:assumption (or (not x7729) (not x25667) x8577 x4665 x10241)
+:assumption (or x9084 x21633)
+:assumption (or x17161 (not x29697))
+:assumption (or (not x18158) x22292)
+:assumption (or x2497 (not x11406))
+:assumption (or (not x448) (not x12441))
+:assumption (or x3599 x8377)
+:assumption (or (not x19758) x8493)
+:assumption (or x6226 (not x846))
+:assumption (or x8961 x18459 x17218)
+:assumption (or (not x12161) x252)
+:assumption (or x22782 x13836)
+:assumption (or (not x27636) x19707)
+:assumption (or x8305 x30583)
+:assumption (or x21023 (not x4291))
+:assumption (or (not x6976) x9077)
+:assumption (or x15836 x24596)
+:assumption (or x29546 (not x5098))
+:assumption (or x9008 x30071 (not x22461) x17905 x7946 x23943)
+:assumption (or (not x5663) x9212)
+:assumption (or x21501 x27111 x27087 x22388)
+:assumption (or x26660 (not x20873))
+:assumption (or (not x3927) (not x8145))
+:assumption (or (not x246) x7464)
+:assumption (or (not x6013) (not x4305))
+:assumption (or (not x20033) x6476 (not x18173) x27819)
+:assumption (or (not x7363) x26484)
+:assumption (or (not x8623) (not x30774))
+:assumption (or x5940 (not x12045))
+:assumption (or (not x9530) x21237)
+:assumption (or (not x30782) x16432)
+:assumption (or (not x11433) x17963)
+:assumption (or (not x378) x27910)
+:assumption (or x21578 x24698)
+:assumption (or x6307 (not x23979) (not x30465))
+:assumption (or x17593 x1393)
+:assumption (or (not x31189) x26885)
+:assumption (or (not x8899) (not x24155))
+:assumption (or (not x21201) (not x2592))
+:assumption (or x22785 (not x11644))
+:assumption (or (not x31138) (not x17845))
+:assumption (or x17400 x567)
+:assumption (or (not x3490) x24303)
+:assumption (or x22855 x13708)
+:assumption (or x7340 x2122 (not x16361) (not x695))
+:assumption (or (not x13059) (not x2138) x12967 x28967 (not x24482) x13039 (not x8126))
+:assumption (or (not x11422) x2796 (not x7349) x10822 x24718)
+:assumption (or (not x25540) (not x10510))
+:assumption (or x8101 x15031)
+:assumption (or (not x2655) (not x31829))
+:assumption (or (not x16857) x16925)
+:assumption (or x13951 (not x26765))
+:assumption (or (not x3588) x2415)
+:assumption (or x891 (not x25485))
+:assumption (or x18410 x18018)
+:assumption (or (not x21197) (not x10850))
+:assumption (or (not x10657) (not x1137))
+:assumption (or (not x5348) x7840)
+:assumption (or (not x29174) x26312)
+:assumption (or (not x5240) x13491 x10802 (not x4465))
+:assumption (or (not x9570) x16931)
+:assumption (or (not x28642) x12460)
+:assumption (or (not x21821) (not x21298))
+:assumption (or x3964 x25427)
+:assumption (or x3752 x3938)
+:assumption (or x8002 x18380 (not x7123) (not x29721) x21048 x26915)
+:assumption (or (not x4864) (not x28289))
+:assumption (or x18778 (not x7404) x9176 (not x21311))
+:assumption (or x25659 (not x28308))
+:assumption (or x9888 (not x9419) (not x21815))
+:assumption (or x5144 (not x4758))
+:assumption (or (not x9590) x5394 x7411)
+:assumption (or x20022 x9724)
+:assumption (or x20910 (not x23811) (not x12679) (not x27630) x26233)
+:assumption (or x15916 (not x24533))
+:assumption (or x2536 x18109)
+:assumption (or (not x13323) x5898 (not x11081) (not x8193) (not x28646) x27921 x17159 x29289 (not x8158))
+:assumption (or x16510 (not x19287))
+:assumption (or (not x7344) (not x2540))
+:assumption (or x17108 x9008 x19051)
+:assumption (or x2157 x22120)
+:assumption (or (not x12012) x12935)
+:assumption (or (not x14912) x256)
+:assumption (or (not x25647) x12628)
+:assumption (or x27636 (not x5448))
+:assumption (or x31833 (not x25659))
+:assumption (or (not x24099) (not x15797))
+:assumption (or x3621 x26124)
+:assumption (or (not x28220) x8058)
+:assumption (or (not x5293) (not x27401))
+:assumption (or x1656 (not x25763))
+:assumption (or (not x2739) (not x10930))
+:assumption (or (not x16473) (not x13227))
+:assumption (or (not x26330) x9878)
+:assumption (or x6149 x9136)
+:assumption (or (not x11587) (not x7))
+:assumption (or (not x22258) x3517)
+:assumption (or x24387 x18710)
+:assumption (or x6498 x13726)
+:assumption (or x29725 (not x8002) x18369 (not x31512))
+:assumption (or x17435 (not x24164))
+:assumption (or x11573 (not x16590) x1049 x8562 x14875 x24541 (not x25139))
+:assumption (or x27560 x2094 (not x2925) (not x215))
+:assumption (or (not x22136) x15963 (not x714) (not x11857))
+:assumption (or x20696 (not x13576))
+:assumption (or (not x18354) (not x11799))
+:assumption (or x30395 x7080)
+:assumption (or (not x17776) (not x27123))
+:assumption (or (not x11326) x2133 (not x1192))
+:assumption (or x7948 x21395)
+:assumption (or x14198 x22810)
+:assumption (or x24280 x30002)
+:assumption (or (not x10768) (not x18982) (not x20236) (not x21192) x15887 (not x29263) (not x28834) x5756)
+:assumption (or x3964 x15464)
+:assumption (or (not x1239) x1860)
+:assumption (or (not x17619) (not x22411))
+:assumption (or (not x5281) (not x30922))
+:assumption (or x16510 x2342)
+:assumption (or x443 (not x9247))
+:assumption (or x2168 x31078)
+:assumption (or x13795 x6684)
+:assumption (or (not x2290) (not x25227) x29518 (not x15133) x9008 (not x28540) (not x1384) x9853)
+:assumption (or x17137 x21953)
+:assumption (or (not x10106) (not x2256) x25513 x31252 x13472 x14086 x16157 (not x24232) x21101)
+:assumption (or (not x12129) x22452)
+:assumption (or x8590 (not x8092))
+:assumption (or (not x8817) (not x17296))
+:assumption (or x15102 x17071)
+:assumption (or (not x23720) (not x11271))
+:assumption (or (not x29427) x28510)
+:assumption (or x25597 x16318 x13502)
+:assumption (or (not x5677) x11057)
+:assumption (or (not x4422) (not x14289))
+:assumption (or (not x15165) (not x25659))
+:assumption (or (not x31679) x8688 x23420 x30124 (not x20572))
+:assumption (or x9008 x29601 (not x21106))
+:assumption (or (not x8563) x17364)
+:assumption (or (not x23963) (not x29174))
+:assumption (or (not x11608) (not x27533))
+:assumption (or x392 x29312 x31502)
+:assumption (or x21815 x2913)
+:assumption (or (not x6763) (not x20343))
+:assumption (or (not x12733) (not x19689))
+:assumption (or x11779 (not x23021))
+:assumption (or x29501 x16253)
+:assumption (or (not x9811) (not x28885) (not x4981) x29312)
+:assumption (or (not x19971) (not x17199) x14434 x28862)
+:assumption (or x29600 x23975)
+:assumption (or (not x27261) x16849)
+:assumption (or (not x24365) (not x25784))
+:assumption (or (not x4320) x1275 x16090 x27119 (not x25659))
+:assumption (or (not x29471) (not x21574) x20414)
+:assumption (or (not x14457) (not x28652))
+:assumption (or x25325 (not x293))
+:assumption (or x1001 (not x4865))
+:assumption (or (not x12458) x23340)
+:assumption (or (not x1693) (not x26707))
+:assumption (or x5655 (not x29305) x10467 (not x27859))
+:assumption (or (not x17967) x13454)
+:assumption (or x5940 (not x18251))
+:assumption (or (not x16234) (not x9261) (not x1554) (not x27029) (not x6250))
+:assumption (or (not x3279) x24155)
+:assumption (or (not x15606) x30453)
+:assumption (or (not x24694) (not x19425))
+:assumption (or x3264 (not x27288))
+:assumption (or x26440 (not x27980))
+:assumption (or x8577 (not x29192))
+:assumption (or (not x9853) x19973)
+:assumption (or x1414 (not x5618))
+:assumption (or (not x21615) x13180)
+:assumption (or (not x4161) (not x3332))
+:assumption (or x28211 x31689)
+:assumption (or x16464 x2442)
+:assumption (or (not x30939) x254)
+:assumption (or (not x23244) (not x8200))
+:assumption (or (not x25065) (not x6856))
+:assumption (or (not x21306) x28203)
+:assumption (or (not x12954) x31194)
+:assumption (or x4146 x18594)
+:assumption (or (not x19037) (not x22546))
+:assumption (or x2550 x26354)
+:assumption (or (not x20516) x11852)
+:assumption (or x851 (not x15760) x6749 x31037 (not x16469) x12531 (not x15531) x16560 (not x22025))
+:assumption (or (not x5355) (not x11662))
+:assumption (or (not x12578) (not x12051) (not x31777))
+:assumption (or x23244 x20829)
+:assumption (or x460 x31905)
+:assumption (or x14455 (not x7602) (not x13008))
+:assumption (or x29557 x13443)
+:assumption (or (not x23711) x30462)
+:assumption (or x19701 x10053)
+:assumption (or (not x25512) (not x7735))
+:assumption (or x6423 x28247)
+:assumption (or x978 x5517)
+:assumption (or x1356 (not x18369))
+:assumption (or (not x20503) x17752)
+:assumption (or (not x20890) x10416)
+:assumption (or x16119 x8252 (not x12185) (not x18535) x28026)
+:assumption (or (not x2489) x9829)
+:assumption (or (not x28818) (not x23164))
+:assumption (or (not x23399) (not x9579))
+:assumption (or (not x11052) (not x26851))
+:assumption (or (not x23102) (not x31615))
+:assumption (or (not x23617) (not x5025))
+:assumption (or x3494 x8527 (not x24835) x23289 x18880)
+:assumption (or x22158 x5985)
+:assumption (or (not x2251) x9606)
+:assumption (or (not x20393) (not x12251) x28579 x11721 x24597 x26042)
+:assumption (or (not x12648) x31474)
+:assumption (or x18670 (not x20838))
+:assumption (or x14053 (not x8232))
+:assumption (or (not x11933) x6537 (not x7322))
+:assumption (or x29623 x23614)
+:assumption (or (not x16741) x9276)
+:assumption (or x9453 (not x31169))
+:assumption (or x24204 x23244 (not x10534))
+:assumption (or x119 (not x20779) (not x26510) (not x12440))
+:assumption (or (not x29588) x16025)
+:assumption (or (not x23858) x3942)
+:assumption (or x21607 (not x30067))
+:assumption (or (not x21851) (not x31391))
+:assumption (or (not x15753) x9064)
+:assumption (or (not x31678) (not x8582))
+:assumption (or x17466 x27127)
+:assumption (or x28077 x20367)
+:assumption (or x14834 x6128 (not x6383))
+:assumption (or x2206 x13572)
+:assumption (or x18018 x26181)
+:assumption (or (not x28682) (not x29713))
+:assumption (or (not x15451) (not x21887))
+:assumption (or x18552 x30138)
+:assumption (or (not x20293) (not x10995))
+:assumption (or (not x9008) x6202)
+:assumption (or (not x15029) (not x12723))
+:assumption (or (not x31085) (not x1705))
+:assumption (or x30529 (not x9008))
+:assumption (or (not x4358) (not x8363) (not x4377) x14587)
+:assumption (or x7260 x14874)
+:assumption (or x29288 (not x19560))
+:assumption (or x4300 (not x588))
+:assumption (or (not x8400) (not x10353))
+:assumption (or (not x12554) (not x22696))
+:assumption (or (not x7537) (not x21343))
+:assumption (or x860 (not x25867))
+:assumption (or x27247 (not x3027))
+:assumption (or x9779 x30932 x22272 x28167)
+:assumption (or (not x1117) x24917)
+:assumption (or x17749 (not x5161))
+:assumption (or (not x11379) (not x21429))
+:assumption (or (not x6513) x11971 (not x28973))
+:assumption (or x17276 (not x27321))
+:assumption (or x15226 (not x19555) (not x14480) (not x15496) x11658 (not x12258))
+:assumption (or x8354 (not x3646))
+:assumption (or (not x15748) x25784 x24952 x24365)
+:assumption (or x6697 (not x20691) (not x18753) (not x26686) x1849)
+:assumption (or x750 x30992 x24583)
+:assumption (or (not x18036) (not x19529))
+:assumption (or x2218 x4141)
+:assumption (or x14527 x5528)
+:assumption (or (not x14116) x16230)
+:assumption (or (not x16075) (not x21530))
+:assumption (or x23891 (not x12960))
+:assumption (or (not x25659) x16035)
+:assumption (or (not x28161) x30172)
+:assumption (or x31577 x11371)
+:assumption (or (not x9130) x26031)
+:assumption (or x28505 (not x23958) x13729)
+:assumption (or x10439 x25230)
+:assumption (or (not x16254) x25727)
+:assumption (or x25294 x3670 (not x4611))
+:assumption (or x30059 (not x20084))
+:assumption (or x18169 (not x22436))
+:assumption (or x30584 x2992)
+:assumption (or (not x16375) x20560)
+:assumption (or x17215 x5728)
+:assumption (or x22829 x28976 x16849 x8002 x13956 x23244)
+:assumption (or x8978 x21278)
+:assumption (or (not x21107) (not x17273))
+:assumption (or (not x17575) (not x4026))
+:assumption (or (not x9525) x9138)
+:assumption (or (not x14455) (not x17705) x3435 (not x11086))
+:assumption (or (not x25379) x28748 x13003 x3052 (not x28297))
+:assumption (or x8836 x4886)
+:assumption (or (not x4132) x10350)
+:assumption (or x7308 x15723)
+:assumption (or x6980 (not x15621))
+:assumption (or (not x23244) x4946)
+:assumption (or (not x20669) (not x4155))
+:assumption (or x18214 (not x12665) x9008)
+:assumption (or (not x12966) (not x9713))
+:assumption (or (not x17855) (not x30807))
+:assumption (or x14455 x1046)
+:assumption (or (not x27387) x4986)
+:assumption (or (not x14053) (not x9777) (not x21557))
+:assumption (or (not x19876) (not x21282))
+:assumption (or (not x2960) x2942)
+:assumption (or (not x6864) x23984)
+:assumption (or x6479 x16666 x14642 x11649)
+:assumption (or (not x16655) (not x816))
+:assumption (or (not x17079) (not x27646))
+:assumption (or x827 x26218)
+:assumption (or x18858 x3647)
+:assumption (or (not x19960) (not x2978))
+:assumption (or x28589 (not x3974) (not x5352))
+:assumption (or (not x26573) (not x220))
+:assumption (or x29681 (not x9104))
+:assumption (or x8953 x7898 (not x24346))
+:assumption (or (not x9619) x9884)
+:assumption (or (not x5911) (not x15496))
+:assumption (or x24664 (not x17690))
+:assumption (or x4822 x25199)
+:assumption (or x18576 (not x7414))
+:assumption (or (not x21878) (not x6479))
+:assumption (or x5528 x20663)
+:assumption (or (not x21653) x2143)
+:assumption (or x9760 x16374)
+:assumption (or (not x19671) x19289)
+:assumption (or x2899 (not x16304))
+:assumption (or (not x7643) x20041)
+:assumption (or (not x5021) (not x22340))
+:assumption (or (not x16168) (not x25979))
+:assumption (or x21298 (not x29237))
+:assumption (or (not x15111) (not x21405))
+:assumption (or (not x15128) x6307)
+:assumption (or x27941 x238)
+:assumption (or (not x12045) x24136)
+:assumption (or x5578 (not x11139))
+:assumption (or (not x8631) (not x22050))
+:assumption (or x9008 (not x1956))
+:assumption (or x16930 x1791)
+:assumption (or (not x5694) (not x12850))
+:assumption (or (not x2431) x4766)
+:assumption (or (not x31089) (not x938))
+:assumption (or x15909 (not x10923))
+:assumption (or x5233 x8002 (not x19824))
+:assumption (or x27772 x27869)
+:assumption (or x2791 (not x3924))
+:assumption (or (not x13057) (not x8159))
+:assumption (or x9269 (not x25050))
+:assumption (or (not x3427) x8922)
+:assumption (or x19116 (not x15201))
+:assumption (or x23643 (not x8676))
+:assumption (or (not x4221) (not x5034))
+:assumption (or (not x17161) (not x28409))
+:assumption (or (not x12489) x8058)
+:assumption (or x26616 x3137)
+:assumption (or (not x2990) (not x8002))
+:assumption (or x30473 (not x23124))
+:assumption (or (not x25366) x18034)
+:assumption (or x19711 x30036)
+:assumption (or (not x25708) (not x3197))
+:assumption (or x21361 x11263)
+:assumption (or x30417 (not x31767) x22930)
+:assumption (or x17520 x10229)
+:assumption (or x16864 (not x28885))
+:assumption (or x11489 (not x22029) (not x24269) x23244 x8002)
+:assumption (or (not x2636) x8891)
+:assumption (or x10064 x12249)
+:assumption (or (not x20042) (not x20470))
+:assumption (or x14469 x17802)
+:assumption (or (not x24686) x10483)
+:assumption (or x760 (not x27519))
+:assumption (or (not x16119) (not x28026))
+:assumption (or x21062 (not x27008))
+:assumption (or (not x13024) (not x29674))
+:assumption (or (not x10782) x15459)
+:assumption (or (not x12785) (not x24488))
+:assumption (or (not x5528) x6304)
+:assumption (or (not x8961) (not x14847) x9505 x30206)
+:assumption (or (not x16025) x23410)
+:assumption (or x3163 (not x28643))
+:assumption (or x5846 x19266)
+:assumption (or (not x22128) x30869)
+:assumption (or x12036 x9804)
+:assumption (or x30208 x9713 x14473 (not x27511))
+:assumption (or x26284 (not x25504))
+:assumption (or x31872 x26010)
+:assumption (or (not x9943) (not x23160))
+:assumption (or (not x13956) (not x21334))
+:assumption (or x19224 x16479)
+:assumption (or x23547 (not x6628))
+:assumption (or x15609 (not x17814))
+:assumption (or (not x13984) (not x11043))
+:assumption (or (not x28560) (not x6921))
+:assumption (or (not x9460) (not x8322))
+:assumption (or x21831 (not x24750))
+:assumption (or (not x20002) (not x3782) (not x3109) (not x29442))
+:assumption (or x24250 (not x24603))
+:assumption (or (not x3634) (not x26094))
+:assumption (or x27195 x7034)
+:assumption (or (not x124) (not x8843) (not x7875) (not x9424) (not x16321) x12685 x8176 (not x19478))
+:assumption (or x27072 x27944)
+:assumption (or (not x22073) x25454)
+:assumption (or x7095 (not x3717) x21815 x10645 x23500 x903)
+:assumption (or (not x23931) x21524)
+:assumption (or x14385 (not x18222))
+:assumption (or (not x30945) (not x16783))
+:assumption (or (not x14479) (not x5528))
+:assumption (or (not x4486) x17655 (not x24952) x16727)
+:assumption (or (not x18037) (not x288))
+:assumption (or x20482 (not x26805))
+:assumption (or (not x28834) x5756 x9531 (not x20236) (not x29263) (not x21192) (not x10768) x13952)
+:assumption (or (not x17337) (not x27537) x9736)
+:assumption (or (not x11940) (not x16025) x24746)
+:assumption (or (not x24348) x18346)
+:assumption (or x23116 x5528)
+:assumption (or (not x12747) (not x4830))
+:assumption (or x15630 (not x19103) x9875 (not x19764) (not x11831) x15397 x26921 x13216 x1733)
+:assumption (or x31 (not x4248))
+:assumption (or x27642 x25431)
+:assumption (or (not x6969) (not x16828))
+:assumption (or (not x28949) (not x6193))
+:assumption (or x18042 x20862 x11871 x24386 (not x12933) (not x16569) (not x13336) (not x9727) (not x23449))
+:assumption (or (not x10653) (not x4294))
+:assumption (or x26452 (not x25001))
+:assumption (or (not x4354) x2943)
+:assumption (or (not x24791) x29312)
+:assumption (or x16809 (not x8705))
+:assumption (or x10404 x30475)
+:assumption (or (not x4003) (not x16767))
+:assumption (or x24643 x29486)
+:assumption (or x30295 (not x29972))
+:assumption (or (not x11306) x21827)
+:assumption (or (not x19983) (not x16596))
+:assumption (or (not x19992) (not x23987) x805)
+:assumption (or x22074 x16429)
+:assumption (or x9773 (not x31610))
+:assumption (or (not x24042) x16100)
+:assumption (or (not x19062) (not x16443))
+:assumption (or (not x18000) (not x6796))
+:assumption (or (not x27204) (not x24805))
+:assumption (or (not x29984) x27939)
+:assumption (or x15795 x5422 x12821)
+:assumption (or x29425 (not x8931))
+:assumption (or x14998 (not x24826) x6496)
+:assumption (or (not x29422) (not x15067))
+:assumption (or x15026 x1818)
+:assumption (or (not x30751) (not x30046))
+:assumption (or (not x21435) x21442 x878 (not x25810) (not x9074))
+:assumption (or (not x27815) x8002 x5415)
+:assumption (or x15244 (not x16292))
+:assumption (or x27357 x1035)
+:assumption (or (not x16741) (not x3074) (not x28719) x2210 x360)
+:assumption (or (not x24123) x31777)
+:assumption (or x18443 (not x20119))
+:assumption (or x26755 x3782)
+:assumption (or (not x10425) x7719)
+:assumption (or (not x15188) (not x24722))
+:assumption (or x20359 (not x16911))
+:assumption (or x23991 x252)
+:assumption (or x30717 (not x25376) (not x8839) x7189)
+:assumption (or (not x23199) x27156)
+:assumption (or x26578 (not x10743) (not x8002) (not x2628))
+:assumption (or x6709 x30271)
+:assumption (or x7925 (not x24364) x14898 x27497)
+:assumption (or (not x9535) (not x18358))
+:assumption (or x1552 x23992)
+:assumption (or x18486 x8713)
+:assumption (or (not x25151) (not x6102))
+:assumption (or x23809 (not x19782) (not x16716))
+:assumption (or x27638 x28717 x9762)
+:assumption (or (not x20675) x30504)
+:assumption (or x22396 (not x1413))
+:assumption (or (not x30408) (not x9008))
+:assumption (or x18845 x24722)
+:assumption (or (not x1029) (not x12953))
+:assumption (or x17751 x27718)
+:assumption (or (not x30633) x22610)
+:assumption (or (not x29029) (not x1859))
+:assumption (or (not x8002) (not x12024))
+:assumption (or x23607 (not x21762))
+:assumption (or x9398 (not x4264) x24861 x1890 x28744)
+:assumption (or x1348 (not x25629) (not x11590))
+:assumption (or x16106 x1474)
+:assumption (or (not x29925) (not x13606) x22903)
+:assumption (or (not x3758) x23600)
+:assumption (or (not x23109) x26670 x15581 (not x964))
+:assumption (or x2822 x8927 x15160 x15300 (not x12149) (not x25158))
+:assumption (or x30659 x12219)
+:assumption (or x7064 x13048)
+:assumption (or (not x9591) x28491)
+:assumption (or x29956 (not x5716))
+:assumption (or (not x15729) x11535 (not x28033))
+:assumption (or (not x7832) (not x30161))
+:assumption (or x17275 x4378)
+:assumption (or x17724 x12312)
+:assumption (or (not x19992) (not x22745))
+:assumption (or x25068 x9244)
+:assumption (or x11024 (not x13188) x2262)
+:assumption (or (not x28534) (not x16025))
+:assumption (or (not x27426) (not x4612))
+:assumption (or x30228 (not x7670) (not x20261))
+:assumption (or (not x2294) x9531 x9372)
+:assumption (or x31176 x13407)
+:assumption (or (not x18917) x10169)
+:assumption (or (not x202) (not x4991) x28997)
+:assumption (or (not x16870) (not x117))
+:assumption (or x21076 (not x15719))
+:assumption (or x29124 x6019)
+:assumption (or x30261 (not x8523))
+:assumption (or (not x21802) (not x1342))
+:assumption (or x14223 x3739)
+:assumption (or (not x28818) x6812)
+:assumption (or x25818 x31065 (not x19992))
+:assumption (or (not x7056) x16255)
+:assumption (or (not x29269) (not x9008) (not x8724) (not x5528) x14304)
+:assumption (or (not x21066) x8961)
+:assumption (or x25440 x27897)
+:assumption (or (not x22893) x21123 (not x4723) (not x17913) (not x21168))
+:assumption (or x1222 (not x9817) x423)
+:assumption (or (not x4681) x12491 x5522 (not x9998) x27915)
+:assumption (or (not x6292) x13487)
+:assumption (or (not x25288) x28717)
+:assumption (or (not x29442) x21536)
+:assumption (or x19998 (not x2317))
+:assumption (or x27533 (not x25027))
+:assumption (or (not x25278) (not x10601))
+:assumption (or x26925 (not x16146) (not x20320) (not x9701))
+:assumption (or x31830 x18136)
+:assumption (or x20949 x15812)
+:assumption (or (not x73) (not x7835))
+:assumption (or x14513 x21529 (not x9703))
+:assumption (or x11033 (not x1009))
+:assumption (or (not x24736) x432 (not x31116) (not x3127))
+:assumption (or x25366 x10709 (not x28312))
+:assumption (or x20906 (not x14919))
+:assumption (or (not x827) x1878 (not x17280))
+:assumption (or x7944 x11767 x28434 x19688)
+:assumption (or x6243 (not x18332) (not x12195))
+:assumption (or (not x5872) (not x6274) x14455)
+:assumption (or (not x18987) x10004)
+:assumption (or x17406 (not x16987))
+:assumption (or (not x26615) x672)
+:assumption (or x14031 (not x4785))
+:assumption (or (not x6455) x31748)
+:assumption (or (not x21026) (not x5483))
+:assumption (or (not x13167) (not x20087))
+:assumption (or (not x25224) (not x21954) x24677)
+:assumption (or (not x188) (not x14660))
+:assumption (or x23307 (not x1967))
+:assumption (or x6429 x27783)
+:assumption (or x19527 x28276)
+:assumption (or (not x21298) (not x7850))
+:assumption (or x31112 x15987 x3024)
+:assumption (or x23265 x5182)
+:assumption (or (not x3327) x25066)
+:assumption (or x14779 x4942)
+:assumption (or x13029 x7846)
+:assumption (or x27190 x9609)
+:assumption (or (not x12974) (not x8261))
+:assumption (or (not x30221) (not x18920))
+:assumption (or (not x3764) (not x2697))
+:assumption (or x31186 x12577 x344 x22276 (not x27594) (not x12032) (not x3174) x27604 x21374)
+:assumption (or x15899 x26761)
+:assumption (or (not x31101) x4238)
+:assumption (or x6446 (not x23300))
+:assumption (or x29183 x2080)
+:assumption (or x4182 (not x18915))
+:assumption (or x30573 (not x4347) x8818 (not x6457))
+:assumption (or x805 (not x13956) (not x4075))
+:assumption (or x21796 (not x31587) x31488)
+:assumption (or (not x16809) x3929)
+:assumption (or (not x24162) (not x11397))
+:assumption (or (not x23218) x4220)
+:assumption (or x19861 x7734)
+:assumption (or x6421 (not x19183) x28960 (not x5501) x18854 (not x29459) (not x29462))
+:assumption (or x12221 x7537 x5392)
+:assumption (or (not x7956) x12827)
+:assumption (or (not x10715) x23528)
+:assumption (or x8498 (not x16987))
+:assumption (or (not x25197) x27554 x30167 x21815 (not x25290) (not x14406))
+:assumption (or (not x26573) (not x20966))
+:assumption (or (not x827) (not x24116) (not x14419))
+:assumption (or x20506 x21815)
+:assumption (or x17534 x9965)
+:assumption (or x25376 (not x19461))
+:assumption (or x31696 (not x30755))
+:assumption (or x11091 x13576)
+:assumption (or x18438 x31765)
+:assumption (or x20133 (not x31371) (not x16437))
+:assumption (or x248 x5060 x22426 x17201 (not x2168))
+:assumption (or (not x14934) (not x10172))
+:assumption (or (not x25366) x16884)
+:assumption (or (not x12726) x29035)
+:assumption (or x29774 (not x6355))
+:assumption (or x24745 (not x26159))
+:assumption (or (not x9008) x29530)
+:assumption (or (not x7383) (not x27832) (not x24050))
+:assumption (or x16766 (not x4756))
+:assumption (or (not x27532) x247)
+:assumption (or x19361 (not x30908))
+:assumption (or x5528 x23040)
+:assumption (or (not x7182) x18533)
+:assumption (or (not x25942) (not x13224))
+:assumption (or (not x29954) (not x2987))
+:assumption (or (not x7863) (not x5886))
+:assumption (or x4574 x8801)
+:assumption (or x24375 x15584)
+:assumption (or (not x47) x2957)
+:assumption (or x15882 x11991)
+:assumption (or x3985 (not x28053))
+:assumption (or (not x18059) (not x21349))
+:assumption (or (not x19864) x25575)
+:assumption (or (not x28776) (not x16659))
+:assumption (or x21939 (not x19605))
+:assumption (or x7683 (not x27287))
+:assumption (or x19509 (not x31618))
+:assumption (or x6525 x17725 x3451 x925 x22093)
+:assumption (or x1476 x8994)
+:assumption (or x24442 (not x16052))
+:assumption (or x3220 x31785)
+:assumption (or x10935 (not x17427))
+:assumption (or x23623 (not x30686))
+:assumption (or (not x10775) (not x13516))
+:assumption (or x2705 x4941)
+:assumption (or (not x14229) x14907)
+:assumption (or (not x29068) (not x16478))
+:assumption (or (not x17700) x24116)
+:assumption (or (not x22993) x18179)
+:assumption (or x23170 (not x1244))
+:assumption (or x11789 x15366)
+:assumption (or (not x28977) (not x810))
+:assumption (or x26165 (not x9701))
+:assumption (or (not x29836) x19422 x17634)
+:assumption (or (not x20134) (not x14660))
+:assumption (or x9421 x16914)
+:assumption (or (not x2287) x20464)
+:assumption (or x14314 (not x20959))
+:assumption (or x3430 x21844)
+:assumption (or x719 (not x20186))
+:assumption (or (not x8001) x9310)
+:assumption (or x14706 x26649)
+:assumption (or (not x31621) (not x17567))
+:assumption (or (not x28316) (not x21699))
+:assumption (or (not x13956) x27585 (not x14649) x12420)
+:assumption (or x11065 x15250)
+:assumption (or x8870 x3393)
+:assumption (or x11281 (not x17243) (not x2032) x7727)
+:assumption (or (not x5860) (not x15336))
+:assumption (or x14266 (not x24686))
+:assumption (or (not x26254) (not x12420))
+:assumption (or x11368 (not x6448))
+:assumption (or (not x18677) x14127 x1289 (not x16674))
+:assumption (or (not x5886) (not x30751) x20293)
+:assumption (or x20535 (not x20871) x23021 (not x3690) x4356)
+:assumption (or (not x23720) x1810)
+:assumption (or x18949 (not x9930))
+:assumption (or x18786 (not x7956))
+:assumption (or (not x16147) (not x27913) x16761 (not x29457) (not x27196))
+:assumption (or x23178 x26649)
+:assumption (or x28023 (not x11914))
+:assumption (or x21815 (not x20121))
+:assumption (or x24756 x22427)
+:assumption (or x4031 x30750)
+:assumption (or (not x21886) (not x1610))
+:assumption (or (not x30185) (not x23673))
+:assumption (or (not x1506) (not x10588))
+:assumption (or (not x13914) x6911)
+:assumption (or (not x1870) (not x10410) x3066)
+:assumption (or x29000 x30138)
+:assumption (or x17228 x4557)
+:assumption (or (not x24374) x23244 x6584 x8002)
+:assumption (or (not x19770) (not x9292))
+:assumption (or x22416 (not x18005))
+:assumption (or (not x4231) (not x21829))
+:assumption (or x7854 (not x30537))
+:assumption (or x14956 x24718)
+:assumption (or (not x27050) x26054)
+:assumption (or x17090 x26990)
+:assumption (or (not x18747) (not x14695))
+:assumption (or x3151 x30622)
+:assumption (or (not x18204) (not x26699) x202 (not x8002))
+:assumption (or x17391 (not x25659))
+:assumption (or x4378 x22001 (not x6358) x22 (not x660) x18164)
+:assumption (or (not x25927) (not x25518))
+:assumption (or x15208 (not x15869))
+:assumption (or x20794 (not x13956) (not x16372) x24058)
+:assumption (or x22295 x15076)
+:assumption (or x4955 (not x29222))
+:assumption (or x27438 x21771)
+:assumption (or (not x14055) (not x21492))
+:assumption (or x6833 x12589)
+:assumption (or x31535 (not x24234))
+:assumption (or (not x25263) (not x27622))
+:assumption (or x18966 x7627)
+:assumption (or (not x4746) x4911)
+:assumption (or x31925 (not x2344) x9672)
+:assumption (or x18859 (not x12005))
+:assumption (or x30843 x21850)
+:assumption (or (not x10495) (not x30615))
+:assumption (or x25693 (not x5696))
+:assumption (or x14839 x25908)
+:assumption (or x10326 x739)
+:assumption (or x25659 (not x20140) (not x27055))
+:assumption (or x13916 x18336 (not x20226) x30850 (not x20589))
+:assumption (or (not x26629) (not x5845))
+:assumption (or (not x6329) x1339 x31933)
+:assumption (or x14262 (not x9453))
+:assumption (or (not x27225) (not x13389) (not x14591))
+:assumption (or (not x11804) x27682)
+:assumption (or x3782 (not x31518))
+:assumption (or (not x5886) x14727)
+:assumption (or x26335 (not x28944))
+:assumption (or x22551 x2287 x15795 x25131)
+:assumption (or (not x5818) (not x4932))
+:assumption (or (not x16044) (not x31119))
+:assumption (or (not x16025) x23236)
+:assumption (or x242 (not x15823))
+:assumption (or (not x4311) (not x26532))
+:assumption (or x5516 (not x24761))
+:assumption (or (not x13993) (not x27471) (not x13018) (not x5684))
+:assumption (or (not x18003) (not x4778) x14090)
+:assumption (or x7745 (not x29374))
+:assumption (or x4274 x6161)
+:assumption (or (not x10302) (not x1807))
+:assumption (or x12116 x2811)
+:assumption (or x30192 x17283)
+:assumption (or (not x4291) x21832 x14251 x24836 (not x25035) (not x8777))
+:assumption (or (not x5095) x25905 (not x19960) x4301 (not x1863))
+:assumption (or x25904 x18588)
+:assumption (or x1757 x17237)
+:assumption (or (not x16907) (not x5898) (not x19153))
+:assumption (or (not x31840) x7714)
+:assumption (or x11603 x25044)
+:assumption (or x29379 (not x16437))
+:assumption (or x20277 (not x2131))
+:assumption (or x31318 (not x1323))
+:assumption (or (not x1182) (not x16713))
+:assumption (or (not x3502) x26527)
+:assumption (or (not x28653) (not x1763))
+:assumption (or (not x25072) x19717)
+:assumption (or (not x23259) x13942)
+:assumption (or (not x31532) (not x13709))
+:assumption (or (not x15707) x20943)
+:assumption (or (not x11600) x18416)
+:assumption (or x23732 (not x14928))
+:assumption (or (not x7534) (not x4378))
+:assumption (or x25765 (not x16155))
+:assumption (or (not x8398) (not x19305))
+:assumption (or (not x28482) (not x19121))
+:assumption (or x6594 x23244 (not x24246))
+:assumption (or (not x26693) (not x5576))
+:assumption (or x26973 (not x15046))
+:assumption (or (not x9786) x16207)
+:assumption (or x13216 x9875 x26921 x1733 x15397 x15630 (not x11831) x23958 x7972)
+:assumption (or x23 x256 (not x10454) (not x1268) (not x17174) (not x7713) x6504 x2829 (not x13365))
+:assumption (or x9334 (not x14325) x5581 x23251 x13956)
+:assumption (or (not x15119) (not x6351))
+:assumption (or x14600 x656)
+:assumption (or (not x6062) x13716)
+:assumption (or x19677 (not x25671))
+:assumption (or (not x29514) (not x30432))
+:assumption (or x16755 (not x2996))
+:assumption (or (not x7287) (not x27273) (not x169) (not x13160) x10092 x10164 (not x1483) (not x22164))
+:assumption (or x24488 (not x23966))
+:assumption (or x28299 (not x9439) (not x21128) x29075 x27646 x17079 x2308 x1081)
+:assumption (or (not x16413) x18997)
+:assumption (or (not x25659) x23832 (not x17589) x407 (not x30225) (not x7072) x28884 x16434)
+:assumption (or (not x3042) x6810)
+:assumption (or x31278 x4293 (not x3779))
+:assumption (or (not x9008) (not x6818))
+:assumption (or (not x9790) (not x2617))
+:assumption (or (not x14870) x19912)
+:assumption (or (not x26817) (not x2604))
+:assumption (or (not x13385) x16510)
+:assumption (or x16510 (not x23695))
+:assumption (or (not x15866) (not x23837))
+:assumption (or x207 x14206)
+:assumption (or x10571 x17944)
+:assumption (or x14614 x9025)
+:assumption (or x18623 x12030)
+:assumption (or x30432 (not x8663))
+:assumption (or x18277 x1192)
+:assumption (or (not x474) (not x2666))
+:assumption (or (not x24169) (not x14190))
+:assumption (or x30786 (not x17830))
+:assumption (or x5260 (not x16349) x9531)
+:assumption (or (not x31868) (not x24347))
+:assumption (or (not x2195) (not x9497))
+:assumption (or x6071 x22548)
+:assumption (or (not x29644) x14493)
+:assumption (or x13388 (not x2))
+:assumption (or (not x11043) x17898)
+:assumption (or x26189 x30124 (not x16409) x1270)
+:assumption (or (not x13826) (not x7731))
+:assumption (or (not x20155) x29803)
+:assumption (or (not x3959) x15366 (not x31681))
+:assumption (or (not x9222) (not x14156))
+:assumption (or (not x9830) (not x31598) (not x30317) x13107)
+:assumption (or x16729 x13064)
+:assumption (or x31455 (not x29584))
+:assumption (or x6126 (not x1120))
+:assumption (or (not x18587) x17896)
+:assumption (or x10352 (not x2531))
+:assumption (or (not x7228) (not x17551))
+:assumption (or (not x8695) (not x6655))
+:assumption (or (not x17964) x16717)
+:assumption (or (not x11367) x28630)
+:assumption (or (not x2288) x31649)
+:assumption (or (not x13522) (not x25298))
+:assumption (or (not x3671) (not x3815))
+:assumption (or x2253 (not x14266))
+:assumption (or (not x22438) x972)
+:assumption (or x5552 (not x27372))
+:assumption (or x23705 x1151)
+:assumption (or x19671 x8939)
+:assumption (or x19501 (not x23276) x7012 (not x9008) (not x5528))
+:assumption (or x1996 (not x20937) (not x19096) (not x1600) x21051)
+:assumption (or x15917 (not x13343))
+:assumption (or x13340 (not x8002) (not x29794))
+:assumption (or x19447 x218)
+:assumption (or (not x11073) (not x7441))
+:assumption (or x4077 x18154)
+:assumption (or x22070 x10500)
+:assumption (or x4572 (not x7748) x3097)
+:assumption (or (not x19876) (not x20550))
+:assumption (or x17550 (not x1693))
+:assumption (or x7836 x4401 x856)
+:assumption (or x19129 x8586)
+:assumption (or (not x19099) x5548)
+:assumption (or x18158 (not x4122))
+:assumption (or (not x22244) (not x13928))
+:assumption (or (not x22943) (not x23886))
+:assumption (or x7961 x30086)
+:assumption (or x8757 (not x4420))
+:assumption (or x25735 x16845)
+:assumption (or x3145 x5563)
+:assumption (or (not x15101) (not x15808))
+:assumption (or (not x8848) (not x19948) x25780)
+:assumption (or (not x24816) x22459)
+:assumption (or (not x8410) (not x26953) x28599 (not x5378) (not x24088))
+:assumption (or x9171 (not x19864) (not x22395) x10395)
+:assumption (or x12006 x4637 (not x14359))
+:assumption (or x25366 x856 (not x3418))
+:assumption (or (not x21980) x20402)
+:assumption (or x19088 (not x14331))
+:assumption (or x7536 x31521)
+:assumption (or (not x27467) x3409)
+:assumption (or (not x21497) x28461)
+:assumption (or x9382 (not x27298))
+:assumption (or x8606 x19055 x16126 (not x5528) (not x12200) (not x25775))
+:assumption (or (not x24975) x10128)
+:assumption (or (not x22442) (not x18867))
+:assumption (or (not x26970) (not x16459))
+:assumption (or (not x10064) x21344 x9456 (not x15917))
+:assumption (or (not x19992) (not x13068))
+:assumption (or x416 x25166)
+:assumption (or x26116 x17930)
+:assumption (or x7349 (not x16150))
+:assumption (or (not x17534) x25659 (not x25668) (not x20550) (not x19501))
+:assumption (or x18246 x19541 (not x26906) x19617 x12326 (not x12916) (not x4879))
+:assumption (or x27614 (not x20099) (not x14293) (not x16173) x13297 x16418 (not x821) (not x19013))
+:assumption (or (not x12964) (not x8002))
+:assumption (or (not x23601) (not x24289))
+:assumption (or x14133 (not x20507))
+:assumption (or (not x3160) x19669)
+:assumption (or (not x26543) x14703)
+:assumption (or x4399 x1663)
+:assumption (or (not x17481) (not x3758))
+:assumption (or x9272 x27295 x12045 (not x25268))
+:assumption (or x25716 x30951)
+:assumption (or (not x27676) (not x8866))
+:assumption (or x17886 (not x16519))
+:assumption (or x2177 (not x28845) x26329)
+:assumption (or (not x21763) x8002)
+:assumption (or (not x14004) (not x9044))
+:assumption (or (not x24675) x14841)
+:assumption (or (not x657) (not x29926))
+:assumption (or (not x20075) (not x24557))
+:assumption (or (not x2010) (not x27114))
+:assumption (or x2885 (not x15201))
+:assumption (or x28640 (not x25442))
+:assumption (or (not x20739) (not x13430))
+:assumption (or (not x8102) x27896)
+:assumption (or x5528 (not x26867))
+:assumption (or x26100 x3435 (not x31628) x14455)
+:assumption (or (not x4239) (not x10909) (not x29348))
+:assumption (or (not x9008) (not x4737) x19501 x15799 (not x5528))
+:assumption (or x11131 (not x19789))
+:assumption (or (not x22979) x2045)
+:assumption (or (not x2080) x25052)
+:assumption (or x20755 x29586)
+:assumption (or x3339 (not x14249))
+:assumption (or (not x4405) x30360)
+:assumption (or (not x25289) (not x6444) x9439)
+:assumption (or (not x2218) x5557 x16218 x2303)
+:assumption (or x26118 (not x31687))
+:assumption (or x27169 (not x9976))
+:assumption (or (not x20904) (not x8658))
+:assumption (or (not x30175) (not x1306) (not x30113) (not x26567))
+:assumption (or (not x13159) (not x4245))
+:assumption (or (not x23244) x1713)
+:assumption (or (not x2503) (not x8748))
+:assumption (or x31686 (not x218) x8330)
+:assumption (or (not x28481) (not x18003))
+:assumption (or x24471 (not x20345))
+:assumption (or x26165 (not x8187))
+:assumption (or x6840 (not x28941))
+:assumption (or x15420 x10706)
+:assumption (or (not x834) (not x13608))
+:assumption (or x16185 x6636)
+:assumption (or x12611 x8892)
+:assumption (or (not x22441) (not x13811) (not x18580) x25467)
+:assumption (or x5852 (not x13710))
+:assumption (or (not x14593) (not x21932))
+:assumption (or x3709 (not x30113) (not x22696) x15146)
+:assumption (or (not x11451) x6925)
+:assumption (or x2300 (not x18289))
+:assumption (or (not x9051) (not x10146))
+:assumption (or x7104 x3875 x5886)
+:assumption (or x11860 (not x9423) x5511)
+:assumption (or x1025 (not x29856))
+:assumption (or x4357 x31915)
+:assumption (or x1535 x17763)
+:assumption (or (not x6394) x3402)
+:assumption (or (not x566) x30403)
+:assumption (or (not x288) x17287)
+:assumption (or (not x1269) (not x23333) (not x20358) x26280 (not x15143) x9474)
+:assumption (or (not x3275) x11994 (not x4927) x10492 (not x2331))
+:assumption (or (not x805) x10033)
+:assumption (or x10847 (not x22797) x1701 x544 (not x19046) (not x24118) (not x28199))
+:assumption (or x19759 (not x22711))
+:assumption (or (not x20614) (not x23174) x11819 (not x31266) (not x5528) x5550)
+:assumption (or x2225 x25242 (not x4039) x8961 (not x5886))
+:assumption (or x27901 (not x26836))
+:assumption (or (not x25721) (not x7577))
+:assumption (or (not x29723) (not x23668) x28166 (not x6365) (not x28803) (not x5934))
+:assumption (or (not x23722) x24751)
+:assumption (or x5896 (not x10320))
+:assumption (or (not x10536) (not x31821))
+:assumption (or x24008 (not x13207))
+:assumption (or (not x13485) (not x20713))
+:assumption (or x28167 x30932 x19992 (not x6674))
+:assumption (or (not x5025) x21461)
+:assumption (or x5323 x27766)
+:assumption (or x500 (not x11959))
+:assumption (or x13879 x22701)
+:assumption (or x643 x21459)
+:assumption (or (not x10159) (not x21593))
+:assumption (or x24000 (not x23149))
+:assumption (or x22937 x5971 (not x17651) x4742 (not x12350) (not x22079))
+:assumption (or (not x30124) (not x21815) (not x16510) x6133 (not x1438) (not x13947) (not x8925))
+:assumption (or (not x29777) x9508)
+:assumption (or (not x23398) (not x19501))
+:assumption (or (not x15619) (not x18172))
+:assumption (or x22407 x31402)
+:assumption (or (not x8602) (not x10846))
+:assumption (or x3245 x14816)
+:assumption (or (not x30543) (not x2009))
+:assumption (or (not x13846) (not x202))
+:assumption (or x12186 x17065)
+:assumption (or (not x26645) (not x6053))
+:assumption (or x5121 x5052 x10858 (not x22131) x11169)
+:assumption (or (not x28546) (not x23244) (not x31043))
+:assumption (or x5025 x26558 (not x17421))
+:assumption (or x18392 x9945 x2251)
+:assumption (or x50 x20343)
+:assumption (or (not x18920) x6301)
+:assumption (or x17780 (not x8189))
+:assumption (or (not x13158) (not x4504))
+:assumption (or (not x3823) (not x22070) (not x17293) (not x10500) (not x30308) (not x27580) x14130)
+:assumption (or x6912 (not x23501))
+:assumption (or (not x8660) (not x10810))
+:assumption (or (not x15753) (not x30624))
+:assumption (or x6164 (not x15073))
+:assumption (or x25659 x239)
+:assumption (or x288 (not x5957) (not x28487) x28973)
+:assumption (or x22564 (not x26940))
+:assumption (or x25084 x24665)
+:assumption (or x25771 x22345)
+:assumption (or x14071 x25315 (not x10261) x30208)
+:assumption (or (not x30468) (not x22816))
+:assumption (or x21298 (not x14374))
+:assumption (or (not x20361) x1937)
+:assumption (or x14400 x12271)
+:assumption (or (not x17779) x28585)
+:assumption (or (not x31829) (not x10255))
+:assumption (or x3969 x1506 x5255 (not x18444) x7316 (not x15830) x13255 (not x18855))
+:assumption (or (not x9668) x10507)
+:assumption (or x9147 (not x10018))
+:assumption (or (not x5186) x11935)
+:assumption (or x31828 x29157)
+:assumption (or x28940 x20351)
+:assumption (or (not x2605) x8141)
+:assumption (or x10720 (not x16426))
+:assumption (or x11088 (not x896))
+:assumption (or (not x30513) x13168)
+:assumption (or (not x31675) (not x1056))
+:assumption (or (not x13956) x3358)
+:assumption (or (not x12037) (not x27203))
+:assumption (or x15696 (not x1071))
+:assumption (or x7460 (not x24601))
+:assumption (or x21787 x10151)
+:assumption (or (not x15641) x10298 (not x23620) (not x23649))
+:assumption (or (not x6827) (not x2232))
+:assumption (or x15845 x27550)
+:assumption (or (not x20206) x16334)
+:assumption (or x21353 x15663)
+:assumption (or (not x23466) x13675)
+:assumption (or x4284 x26366)
+:assumption (or x1165 x29429)
+:assumption (or x22277 x29352)
+:assumption (or (not x27632) x20258)
+:assumption (or x27184 x5239)
+:assumption (or x13232 x20689)
+:assumption (or (not x6399) x16003 x28682)
+:assumption (or x16910 (not x16382))
+:assumption (or x964 (not x8899))
+:assumption (or x14284 x24220)
+:assumption (or x21298 (not x19691))
+:assumption (or (not x21736) (not x16474))
+:assumption (or x16825 x21643)
+:assumption (or x23244 x10271)
+:assumption (or x9997 (not x14892))
+:assumption (or x47 x21923)
+:assumption (or (not x14947) (not x964))
+:assumption (or (not x485) x29228 x29204 (not x21985) x13948)
+:assumption (or (not x2990) x25001)
+:assumption (or x23630 (not x20818))
+:assumption (or x13907 x17884 (not x16510) (not x21815) x12045 (not x7296) x26432)
+:assumption (or x8532 (not x5680))
+:assumption (or (not x27108) x26756)
+:assumption (or x19294 (not x10773) (not x13255))
+:assumption (or (not x3640) x16685)
+:assumption (or x11881 x806 (not x12045))
+:assumption (or (not x9721) (not x15790))
+:assumption (or x31529 (not x1403))
+:assumption (or x16372 (not x14306))
+:assumption (or x27233 x11222)
+:assumption (or (not x7779) x16766)
+:assumption (or x2225 (not x2133) (not x13346))
+:assumption (or x480 x25244)
+:assumption (or x11239 x9955)
+:assumption (or (not x28117) x10430)
+:assumption (or x15098 (not x24104) (not x18861))
+:assumption (or x21633 (not x20854))
+:assumption (or x12839 x14114)
+:assumption (or x18925 (not x11711) (not x1294) (not x27919) x22351)
+:assumption (or x14587 (not x26597))
+:assumption (or x26175 (not x22069))
+:assumption (or x22791 x1089)
+:assumption (or (not x4259) x15082 x15886)
+:assumption (or (not x26230) (not x18612))
+:assumption (or (not x21352) (not x787))
+:assumption (or (not x15621) (not x10958) (not x10692) (not x28340))
+:assumption (or x18455 (not x13691) (not x18479) (not x8657) (not x8288))
+:assumption (or x1732 (not x30256))
+:assumption (or (not x3762) x7450)
+:assumption (or (not x15621) x14684)
+:assumption (or x20917 (not x14798))
+:assumption (or (not x3072) (not x14994))
+:assumption (or x29603 (not x29673))
+:assumption (or x975 x4346)
+:assumption (or (not x15178) (not x13085) x16783 (not x2118) x18071 x8595 x30945 x252)
+:assumption (or x7866 x30032)
+:assumption (or x7282 (not x3894))
+:assumption (or x4491 x29433)
+:assumption (or (not x14383) x16849 (not x20550))
+:assumption (or (not x11452) (not x24653) (not x16859) (not x26711))
+:assumption (or (not x11037) (not x28432))
+:assumption (or x17363 x14814)
+:assumption (or (not x24952) (not x24064) x82)
+:assumption (or (not x18859) (not x22056))
+:assumption (or x22054 (not x19136))
+:assumption (or x17211 x8961 x14064 x5886)
+:assumption (or x5761 (not x30617) (not x21366) x1734 (not x17392) x15147 (not x8738))
+:assumption (or x15114 x9008 x23297)
+:assumption (or (not x14331) (not x13571))
+:assumption (or (not x29980) (not x13241))
+:assumption (or (not x31829) x18152)
+:assumption (or x7604 x25224)
+:assumption (or (not x12960) (not x1568))
+:assumption (or (not x26674) x3948)
+:assumption (or x1545 (not x26619))
+:assumption (or x736 (not x22966))
+:assumption (or x8343 (not x7970))
+:assumption (or x7786 (not x9423) (not x27138))
+:assumption (or (not x19189) (not x23816))
+:assumption (or (not x4858) x28507)
+:assumption (or (not x11214) (not x18037))
+:assumption (or x19998 x20046)
+:assumption (or x21298 (not x26122))
+:assumption (or x9008 (not x26844) (not x30487) (not x10392) x8333 (not x5468))
+:assumption (or (not x14591) x12583 x15795)
+:assumption (or (not x21986) (not x25819))
+:assumption (or (not x24504) (not x10216))
+:assumption (or x18161 x9948)
+:assumption (or (not x5600) (not x8391) (not x31492) x3301 x5315)
+:assumption (or (not x23021) (not x6344))
+:assumption (or x25200 (not x15302))
+:assumption (or x3860 x25107)
+:assumption (or x4566 x26733)
+:assumption (or x21938 x30796)
+:assumption (or (not x7904) x12936)
+:assumption (or (not x18092) (not x18791))
+:assumption (or (not x5591) x7039)
+:assumption (or (not x21255) x12705)
+:assumption (or x21914 x28198)
+:assumption (or (not x6675) (not x13929))
+:assumption (or (not x4050) (not x11735) (not x3455) x4020)
+:assumption (or x1371 x13539)
+:assumption (or x9383 (not x4398))
+:assumption (or (not x1508) (not x27672))
+:assumption (or (not x25194) x18556)
+:assumption (or (not x31903) (not x3521))
+:assumption (or x1033 (not x30447))
+:assumption (or x28066 x31503)
+:assumption (or x8002 (not x8081) x13956 x23244 x20794 (not x10925))
+:assumption (or x120 (not x4529) x22242 x10612 (not x17917) x5237 x13805)
+:assumption (or (not x8002) x10925)
+:assumption (or x17569 (not x5886))
+:assumption (or x29991 (not x827) x23777)
+:assumption (or (not x29085) (not x18842))
+:assumption (or (not x8002) x8401)
+:assumption (or (not x24867) (not x9930))
+:assumption (or (not x1416) x8884)
+:assumption (or (not x13417) x25480)
+:assumption (or x23775 (not x13437) x2612 x2234 (not x16413) x24099 x31602 (not x15393))
+:assumption (or x16025 x21854)
+:assumption (or x17583 x22065 x10105 x5578 x1885)
+:assumption (or (not x14963) (not x11503))
+:assumption (or x29269 (not x10151))
+:assumption (or (not x25905) (not x22609))
+:assumption (or x26121 x15935)
+:assumption (or (not x16254) x10368)
+:assumption (or x27612 (not x14435))
+:assumption (or (not x10154) x10655)
+:assumption (or x17691 x27031)
+:assumption (or (not x3248) x16699 (not x6681) (not x9995) x11169 (not x29789) x11276 x7814)
+:assumption (or (not x6996) (not x10261))
+:assumption (or x17366 (not x1000) (not x25151))
+:assumption (or (not x22640) x14406)
+:assumption (or (not x1568) x8540)
+:assumption (or x28401 (not x29376) x11898)
+:assumption (or x30689 x24695)
+:assumption (or x23099 (not x24813))
+:assumption (or (not x30702) x15110)
+:assumption (or (not x3554) x12798)
+:assumption (or x10113 x28828 (not x9008))
+:assumption (or x17459 x9269)
+:assumption (or (not x27012) (not x26789) x29270)
+:assumption (or x827 (not x13719))
+:assumption (or (not x8124) (not x29276) (not x29520) (not x17075) (not x610) (not x12929) (not x24057))
+:assumption (or x13136 x19702)
+:assumption (or (not x26339) (not x17508))
+:assumption (or (not x13319) x3533)
+:assumption (or (not x21499) (not x22011))
+:assumption (or x10503 (not x29040) x25674)
+:assumption (or (not x2593) (not x8961))
+:assumption (or (not x2017) (not x983))
+:assumption (or x5574 x29520)
+:assumption (or (not x22976) x16332)
+:assumption (or (not x20780) x15640)
+:assumption (or (not x23413) (not x1332))
+:assumption (or x29312 x15642)
+:assumption (or x6771 (not x12687))
+:assumption (or (not x16590) x11573 x1049 (not x12115) x27636 x24541 x8562)
+:assumption (or x4567 x20585)
+:assumption (or (not x18571) x34)
+:assumption (or (not x20585) (not x29132))
+:assumption (or (not x23321) (not x14918))
+:assumption (or (not x22151) (not x21782))
+:assumption (or (not x11867) x28436)
+:assumption (or x6771 (not x18564))
+:assumption (or x20460 x29882 x3741 (not x27283) (not x1450))
+:assumption (or (not x12810) x16374)
+:assumption (or (not x23244) (not x2484) (not x10006) (not x8002))
+:assumption (or x18419 (not x20961))
+:assumption (or (not x25875) (not x11634))
+:assumption (or x3615 x15126)
+:assumption (or x29876 x30089)
+:assumption (or x28810 x13192)
+:assumption (or (not x24247) (not x31544))
+:assumption (or (not x25061) (not x5102) x11689 x12054 x7233 (not x14437) (not x22027))
+:assumption (or x12605 (not x29391))
+:assumption (or (not x27059) (not x31643))
+:assumption (or x30475 (not x13032))
+:assumption (or (not x15551) (not x17097))
+:assumption (or (not x22881) (not x27886))
+:assumption (or x4932 (not x24897) x2108 x6848)
+:assumption (or x7082 x29414)
+:assumption (or (not x17352) (not x2743))
+:assumption (or x31661 x25172)
+:assumption (or x1160 (not x16379))
+:assumption (or x17002 (not x13631))
+:assumption (or x394 (not x9768))
+:assumption (or x9571 (not x30489))
+:assumption (or x30679 (not x29817))
+:assumption (or x15214 x4299 (not x946) (not x28605) (not x7987) (not x29066) x12363 (not x28123) (not x11285))
+:assumption (or (not x16434) (not x6908))
+:assumption (or x2615 x3191)
+:assumption (or (not x16937) (not x10422))
+:assumption (or (not x20368) (not x396))
+:assumption (or x24035 x12947)
+:assumption (or x18632 x25366 x2835)
+:assumption (or (not x1155) (not x29649))
+:assumption (or (not x3968) x12218 x24316)
+:assumption (or (not x24900) x5630)
+:assumption (or (not x4785) (not x335))
+:assumption (or (not x21717) (not x30920))
+:assumption (or x20705 (not x7202) (not x9531))
+:assumption (or (not x24894) (not x29017))
+:assumption (or x28197 x25172)
+:assumption (or (not x23128) (not x7835) (not x15875) (not x2133))
+:assumption (or x10259 (not x21696))
+:assumption (or (not x28107) (not x29819) x14839)
+:assumption (or x9194 x9818)
+:assumption (or (not x21651) (not x2897))
+:assumption (or x25376 x29399)
+:assumption (or x30918 (not x31463))
+:assumption (or (not x13999) x11526)
+:assumption (or x31222 (not x23797))
+:assumption (or x22095 (not x24272))
+:assumption (or x22403 (not x6750))
+:assumption (or x15310 (not x964))
+:assumption (or (not x21290) x20485)
+:assumption (or (not x27632) x21333)
+:assumption (or x1984 (not x15419))
+:assumption (or x26363 x10661)
+:assumption (or (not x23190) (not x12238))
+:assumption (or (not x27988) (not x23951))
+:assumption (or x15437 x5272)
+:assumption (or (not x17586) (not x2602))
+:assumption (or (not x6594) (not x27380) (not x16795))
+:assumption (or (not x8002) x7905)
+:assumption (or (not x26689) (not x10912) x5886)
+:assumption (or (not x9423) (not x27431) x10857)
+:assumption (or x18489 (not x8939) x10618 (not x19671))
+:assumption (or x7370 x17829 x16673 (not x25966))
+:assumption (or (not x5854) (not x21298))
+:assumption (or x31628 (not x26100))
+:assumption (or (not x21462) x29568)
+:assumption (or (not x17659) (not x6955))
+:assumption (or x18339 x12536)
+:assumption (or (not x20996) (not x16037))
+:assumption (or x8403 x22880)
+:assumption (or (not x14435) (not x2696) x5597 x23518)
+:assumption (or x5908 x25048)
+:assumption (or x13036 x18924)
+:assumption (or x30751 x23211 x3212)
+:assumption (or (not x119) (not x1609))
+:assumption (or (not x11394) (not x17529))
+:assumption (or x31458 x30234)
+:assumption (or x15660 x3150)
+:assumption (or x23237 x23244 (not x31538))
+:assumption (or x11274 (not x19812))
+:assumption (or (not x11281) (not x17313))
+:assumption (or (not x31419) x27926)
+:assumption (or (not x16936) (not x11127))
+:assumption (or (not x4344) (not x1992))
+:assumption (or x12316 (not x6969))
+:assumption (or (not x30751) (not x19592) (not x22190) (not x14206))
+:assumption (or x26434 x7828 (not x4182) (not x19105) x18915 x30432)
+:assumption (or x617 (not x8570))
+:assumption (or x27294 (not x2036))
+:assumption (or (not x13956) x3284 (not x19298) x9961)
+:assumption (or (not x9484) (not x9787))
+:assumption (or (not x27403) x4275)
+:assumption (or x30313 (not x10496))
+:assumption (or x17852 x18946)
+:assumption (or (not x24474) (not x16868))
+:assumption (or x21481 (not x23633))
+:assumption (or x6217 x27225)
+:assumption (or x3233 (not x11791))
+:assumption (or x23311 (not x8785))
+:assumption (or x22256 (not x28091))
+:assumption (or (not x16374) (not x16957))
+:assumption (or (not x15495) x5944)
+:assumption (or (not x5072) x30751)
+:assumption (or x3181 x17368)
+:assumption (or x12705 x12329)
+:assumption (or (not x15429) x14138)
+:assumption (or (not x18844) x27958 x21057)
+:assumption (or (not x18880) x24835)
+:assumption (or x30874 x10413)
+:assumption (or (not x9290) x20496)
+:assumption (or x5766 x24536)
+:assumption (or (not x17525) x20749)
+:assumption (or x28624 (not x3651) (not x2022) x10223 x128 (not x961) (not x25255))
+:assumption (or x3114 x11447)
+:assumption (or x25945 x2903)
+:assumption (or (not x6351) (not x7))
+:assumption (or x7849 x14052)
+:assumption (or (not x13465) x15917 x10064)
+:assumption (or (not x2980) x29511)
+:assumption (or x12907 x14435 x10377 x7634)
+:assumption (or x8230 (not x8827))
+:assumption (or (not x9803) (not x15435))
+:assumption (or x25334 (not x9831))
+:assumption (or (not x27293) x10064)
+:assumption (or x20763 x19532)
+:assumption (or (not x21870) x29286)
+:assumption (or (not x8602) x20389)
+:assumption (or x20691 (not x2398))
+:assumption (or x5965 x19312 (not x2726) (not x16041) (not x5528) x21497)
+:assumption (or (not x5868) x15601)
+:assumption (or x16025 x16869 x13276)
+:assumption (or x7919 (not x23934))
+:assumption (or (not x10229) x10564)
+:assumption (or x7121 (not x29733))
+:assumption (or (not x1463) (not x22360) x30751)
+:assumption (or x28989 (not x30947))
+:assumption (or x20857 x25219)
+:assumption (or x10644 x21349)
+:assumption (or (not x17728) x11901)
+:assumption (or (not x8597) x27111 (not x4504))
+:assumption (or (not x18744) (not x28023))
+:assumption (or x12734 x19351 x8002 x23244 x26578)
+:assumption (or (not x31520) x10863 (not x12741) (not x6747) x28370)
+:assumption (or (not x5623) (not x26670))
+:assumption (or (not x31890) x30384)
+:assumption (or x8002 x16461)
+:assumption (or (not x31602) x27116)
+:assumption (or (not x12695) (not x21093))
+:assumption (or x16262 x30073)
+:assumption (or (not x21041) (not x29305))
+:assumption (or (not x25972) x2799)
+:assumption (or (not x19647) (not x5123))
+:assumption (or (not x273) x4320)
+:assumption (or (not x22035) (not x21769))
+:assumption (or x218 x24817)
+:assumption (or x13237 x25495)
+:assumption (or x29266 (not x10516) (not x24416) x14138)
+:assumption (or (not x12673) (not x6528))
+:assumption (or (not x2873) (not x10942))
+:assumption (or (not x10448) x5528)
+:assumption (or (not x25937) (not x3886))
+:assumption (or (not x9343) x24417)
+:assumption (or (not x22897) x8825)
+:assumption (or (not x7180) (not x15913))
+:assumption (or x22601 (not x23244) x8002)
+:assumption (or x28987 x17385)
+:assumption (or x31339 x2806)
+:assumption (or x12652 (not x18893) x11041 x18287 (not x8624) x14754 x6933 x20907 (not x8729) (not x29129) x13999 (not x20380))
+:assumption (or x29101 (not x17903))
+:assumption (or x7835 (not x7579))
+:assumption (or (not x22411) (not x27824))
+:assumption (or (not x2732) x16975)
+:assumption (or x4323 (not x18151))
+:assumption (or x21109 (not x3455))
+:assumption (or x5451 (not x7894))
+:assumption (or x22975 (not x14549))
+:assumption (or x16575 x13485 (not x18694) x5108)
+:assumption (or x13109 (not x2303))
+:assumption (or x6324 x18326)
+:assumption (or (not x13267) (not x24861))
+:assumption (or x27012 (not x12879))
+:assumption (or (not x30238) (not x26016))
+:assumption (or (not x748) (not x14057))
+:assumption (or x15607 x17063)
+:assumption (or (not x6089) (not x17092))
+:assumption (or (not x5017) x24631)
+:assumption (or x12414 (not x22788))
+:assumption (or (not x18403) x2133)
+:assumption (or (not x21307) x1031)
+:assumption (or (not x28708) (not x21080) x5286 x19183)
+:assumption (or x6324 x23087)
+:assumption (or x16085 (not x12610))
+:assumption (or x6179 (not x4702) (not x21971) (not x6243))
+:assumption (or x21002 (not x8002))
+:assumption (or x14474 x22471)
+:assumption (or x11883 x20722 (not x12612) (not x21996) (not x5176) (not x15905))
+:assumption (or (not x27731) (not x5206))
+:assumption (or x17691 (not x24780))
+:assumption (or (not x15117) x23202)
+:assumption (or x8711 (not x13783))
+:assumption (or x1313 (not x18864) x4078 (not x30113))
+:assumption (or x18786 (not x13744))
+:assumption (or (not x14394) x22886)
+:assumption (or x23606 x1487)
+:assumption (or x5099 (not x12620))
+:assumption (or x15947 (not x6235))
+:assumption (or (not x1582) (not x28269))
+:assumption (or (not x3217) x23407 x10777 (not x7153) (not x26189))
+:assumption (or x29694 x18042)
+:assumption (or x21935 (not x16516))
+:assumption (or x20685 (not x14642))
+:assumption (or (not x3454) x18524)
+:assumption (or x792 (not x21880))
+:assumption (or x16488 (not x16894) x6489 x26697 (not x142) (not x30885) x19265 (not x17913))
+:assumption (or x2682 (not x16599))
+:assumption (or (not x15894) (not x7687))
+:assumption (or x14165 (not x28314))
+:assumption (or (not x1897) x12222 x14986 (not x16648))
+:assumption (or (not x16003) (not x12160) x10510)
+:assumption (or x3928 x26226)
+:assumption (or x1973 x7602 x20104)
+:assumption (or x8891 (not x26639))
+:assumption (or (not x6887) x24133)
+:assumption (or (not x5893) x4802)
+:assumption (or x13312 x29442)
+:assumption (or x1670 x26317)
+:assumption (or x8124 x29520)
+:assumption (or (not x10848) (not x19140))
+:assumption (or (not x15870) (not x17837) x6457)
+:assumption (or (not x29428) x1338)
+:assumption (or (not x6395) x26603)
+:assumption (or x29616 (not x15007))
+:assumption (or (not x5362) (not x30747))
+:assumption (or (not x29542) x15200)
+:assumption (or (not x855) x16307)
+:assumption (or x14977 (not x5114) (not x31067) x18360)
+:assumption (or (not x23741) x11413)
+:assumption (or (not x17460) x6633)
+:assumption (or x21767 x23698)
+:assumption (or x29325 (not x3320))
+:assumption (or x26676 (not x3516))
+:assumption (or (not x26810) (not x7360) (not x13956))
+:assumption (or x21783 (not x6340) (not x12337))
+:assumption (or (not x996) (not x17703) x25366)
+:assumption (or x5282 (not x12133))
+:assumption (or x27998 x26039)
+:assumption (or (not x2301) (not x3537))
+:assumption (or x653 (not x25262))
+:assumption (or x11994 x28545)
+:assumption (or (not x21004) (not x26361))
+:assumption (or (not x9270) (not x26123))
+:assumption (or x12901 x29645)
+:assumption (or (not x17619) x2763)
+:assumption (or (not x10255) (not x9029))
+:assumption (or x16025 (not x19011) (not x5886))
+:assumption (or (not x18303) (not x27748))
+:assumption (or (not x26396) (not x273))
+:assumption (or x26118 x21653)
+:assumption (or (not x16939) (not x5351))
+:assumption (or (not x8011) (not x791))
+:assumption (or (not x24771) (not x28427))
+:assumption (or (not x27258) x14434)
+:assumption (or (not x1627) x19679)
+:assumption (or x382 x30358)
+:assumption (or x15798 x5464)
+:assumption (or x11332 x26789 (not x19520))
+:assumption (or (not x21108) (not x31871))
+:assumption (or x25657 (not x8400))
+:assumption (or x30753 (not x26917))
+:assumption (or (not x3572) x27206)
+:assumption (or (not x15180) x30746)
+:assumption (or (not x4149) x12046)
+:assumption (or (not x16326) x1605)
+:assumption (or (not x7857) x21913 x3435 (not x14455))
+:assumption (or (not x25938) x18380)
+:assumption (or x11177 (not x17257))
+:assumption (or x31777 x13218)
+:assumption (or x22461 (not x13424))
+:assumption (or (not x7450) x3762)
+:assumption (or x25406 (not x22989))
+:assumption (or (not x20482) (not x17864))
+:assumption (or x20774 x15206)
+:assumption (or (not x12121) x16070)
+:assumption (or (not x519) (not x26882))
+:assumption (or (not x22953) x4533)
+:assumption (or (not x26073) x1224)
+:assumption (or (not x14646) (not x4816))
+:assumption (or x23278 x19556)
+:assumption (or x30405 (not x20412))
+:assumption (or (not x16311) x16010)
+:assumption (or (not x31702) (not x18994))
+:assumption (or x25073 x18781 (not x5387))
+:assumption (or x4326 x5363 (not x3218) x20933 x3053 (not x2278))
+:assumption (or x2927 x15921)
+:assumption (or x29959 (not x27574))
+:assumption (or x27682 (not x30376))
+:assumption (or (not x16848) x27941 (not x12349) (not x12107) (not x13560))
+:assumption (or (not x15887) (not x8486))
+:assumption (or (not x20550) x21228)
+:assumption (or x23961 x22257)
+:assumption (or x8781 x29957)
+:assumption (or x5501 (not x18854))
+:assumption (or x8131 x20259)
+:assumption (or (not x29103) x5245)
+:assumption (or x2334 (not x999))
+:assumption (or x16873 x9637)
+:assumption (or (not x879) x20045)
+:assumption (or x14411 x8088)
+:assumption (or (not x2540) (not x5458))
+:assumption (or (not x29259) x12587)
+:assumption (or x14665 (not x13338) (not x1894))
+:assumption (or x12500 (not x2798))
+:assumption (or x9008 x17122)
+:assumption (or x10759 (not x17970))
+:assumption (or (not x3250) x19007 x29419 x22811 (not x16510) x21322)
+:assumption (or x6195 x24039)
+:assumption (or x19428 x14573)
+:assumption (or (not x10413) (not x26505) (not x19104) (not x10292) (not x24976) x5629 x21714 (not x6534) (not x1188))
+:assumption (or (not x24306) x10133)
+:assumption (or x28694 x29442)
+:assumption (or (not x6594) x10963 x11407)
+:assumption (or (not x28729) x3784)
+:assumption (or x19711 x1857)
+:assumption (or x27143 (not x5722) x4401)
+:assumption (or (not x16032) x28763)
+:assumption (or (not x27512) (not x28906))
+:assumption (or (not x20378) x2765)
+:assumption (or (not x8503) x24434)
+:assumption (or (not x20921) x821)
+:assumption (or (not x5506) x1402)
+:assumption (or x5147 x29114)
+:assumption (or (not x16367) x5933)
+:assumption (or (not x12862) x20636)
+:assumption (or x2983 x9987)
+:assumption (or (not x18392) (not x9945))
+:assumption (or (not x10543) (not x20723))
+:assumption (or x22586 (not x1174))
+:assumption (or (not x7783) (not x11907))
+:assumption (or x7018 x19278)
+:assumption (or x25945 x24073)
+:assumption (or (not x22351) (not x13009))
+:assumption (or x12870 (not x6127) (not x9481) x30269 (not x16977) x29429)
+:assumption (or (not x25266) x8144)
+:assumption (or x11281 (not x899))
+:assumption (or x1012 (not x12971))
+:assumption (or (not x6527) (not x4252))
+:assumption (or x18262 (not x27367))
+:assumption (or x23172 (not x17773))
+:assumption (or (not x19406) x26912)
+:assumption (or x3700 (not x16093))
+:assumption (or x3448 (not x15795))
+:assumption (or (not x3844) x9726)
+:assumption (or (not x30729) (not x27030))
+:assumption (or x244 (not x1151))
+:assumption (or x23244 x31731)
+:assumption (or (not x7626) x14981)
+:assumption (or x9114 x13525)
+:assumption (or x8081 (not x13956) (not x14194) (not x20794))
+:assumption (or x15094 (not x28469))
+:assumption (or x12312 (not x24979))
+:assumption (or x7125 x22390)
+:assumption (or (not x21229) (not x4008) x16628 x7780 (not x10582))
+:assumption (or (not x31740) x7924)
+:assumption (or x13794 x19236)
+:assumption (or x15349 x2796)
+:assumption (or x9814 (not x11392))
+:assumption (or (not x8535) x2872)
+:assumption (or (not x21634) x6539)
+:assumption (or x3370 x11539)
+:assumption (or x31083 (not x20295))
+:assumption (or x28053 (not x7530) x5528)
+:assumption (or x8848 (not x25780))
+:assumption (or x9240 (not x4611))
+:assumption (or (not x26403) x17548)
+:assumption (or x14467 x21918 (not x6635) x4519)
+:assumption (or x4505 (not x9710))
+:assumption (or (not x7377) (not x1383))
+:assumption (or (not x19527) (not x5579) (not x28276) (not x28543) x30224 (not x8377))
+:assumption (or (not x24285) (not x14060))
+:assumption (or x2590 (not x25911))
+:assumption (or x14426 x13848)
+:assumption (or (not x31342) (not x17380))
+:assumption (or (not x14801) x31557)
+:assumption (or x10588 x1506)
+:assumption (or (not x22495) (not x3373) (not x18165) (not x4728))
+:assumption (or x15799 x11861)
+:assumption (or x4173 x8002)
+:assumption (or (not x12230) x27496)
+:assumption (or x2442 (not x1823))
+:assumption (or (not x11792) (not x4405))
+:assumption (or (not x22703) (not x6848))
+:assumption (or x7886 (not x2195))
+:assumption (or x6329 (not x31933))
+:assumption (or (not x6387) (not x16219))
+:assumption (or (not x24802) x8324)
+:assumption (or x3816 x8857)
+:assumption (or x1019 (not x12727))
+:assumption (or (not x6168) x15965)
+:assumption (or (not x2946) x13226)
+:assumption (or (not x13450) (not x22912))
+:assumption (or (not x12785) x27769)
+:assumption (or (not x21928) x4955)
+:assumption (or x8002 (not x19696))
+:assumption (or (not x14384) (not x754))
+:assumption (or (not x15740) (not x4295))
+:assumption (or (not x2571) (not x10766))
+:assumption (or x798 (not x2869) (not x18242) x17313)
+:assumption (or x31099 (not x11727))
+:assumption (or (not x7188) x29024)
+:assumption (or x1845 x13017)
+:assumption (or (not x1105) x30809)
+:assumption (or (not x10234) x24722)
+:assumption (or x3398 (not x9448) x25490 (not x30599) (not x29874) x23378 x26819)
+:assumption (or x25168 (not x12900))
+:assumption (or x29938 (not x23542))
+:assumption (or (not x9008) x13519)
+:assumption (or x19788 x25547)
+:assumption (or x25499 (not x4806))
+:assumption (or x7354 (not x9207))
+:assumption (or (not x1665) x1450)
+:assumption (or (not x24469) (not x14918))
+:assumption (or x2906 x2448)
+:assumption (or (not x7537) x29701)
+:assumption (or (not x31829) (not x28929))
+:assumption (or (not x9637) (not x16873))
+:assumption (or (not x29139) x2867)
+:assumption (or x28198 (not x4242))
+:assumption (or x24967 x5204)
+:assumption (or (not x23103) (not x2133))
+:assumption (or (not x1241) x30796)
+:assumption (or (not x78) (not x8695))
+:assumption (or (not x15343) x19686)
+:assumption (or x6621 (not x23011))
+:assumption (or x13509 x28242 x1649 x10874)
+:assumption (or x12616 x27593)
+:assumption (or x15050 x1392 x23244)
+:assumption (or x26068 x11283)
+:assumption (or (not x28526) x95)
+:assumption (or x21563 (not x12488))
+:assumption (or (not x30148) (not x12699))
+:assumption (or x9415 x17507)
+:assumption (or (not x5186) (not x30229))
+:assumption (or x3858 (not x1393))
+:assumption (or x21794 (not x24341) x11281 (not x17359))
+:assumption (or x8686 x11962)
+:assumption (or (not x14568) (not x3497))
+:assumption (or (not x13791) x13876)
+:assumption (or (not x16025) (not x19080))
+:assumption (or x396 x17665 x16138 (not x9283))
+:assumption (or x19902 x9009)
+:assumption (or (not x16800) x12578)
+:assumption (or (not x27786) (not x23314))
+:assumption (or x13594 (not x26354))
+:assumption (or x20933 (not x19184) (not x3206) x2785 x6971)
+:assumption (or x10514 (not x19329))
+:assumption (or x14471 (not x941))
+:assumption (or x24706 x14617)
+:assumption (or (not x3917) x10763)
+:assumption (or x28110 (not x15861))
+:assumption (or (not x14032) x9008 (not x7827) (not x31559) (not x17788) x8400)
+:assumption (or (not x6116) (not x3435))
+:assumption (or x30639 (not x22966))
+:assumption (or x25659 x17306)
+:assumption (or (not x25150) x20082)
+:assumption (or x20647 (not x9985))
+:assumption (or (not x30527) (not x18412))
+:assumption (or x16583 (not x6945))
+:assumption (or (not x16025) (not x20565))
+:assumption (or x29048 (not x31626))
+:assumption (or (not x13111) x16003 x19865)
+:assumption (or x31059 x18569 (not x21298))
+:assumption (or (not x19760) x15006)
+:assumption (or x24820 x30250)
+:assumption (or (not x31838) x12585 x21781)
+:assumption (or x21981 x24364)
+:assumption (or x16710 x9843)
+:assumption (or x24073 (not x28973) x5473)
+:assumption (or (not x7470) x8024)
+:assumption (or (not x10255) (not x15160))
+:assumption (or (not x3992) x30865 (not x8192))
+:assumption (or (not x5528) (not x11596))
+:assumption (or x5528 (not x19988))
+:assumption (or (not x6125) x28431)
+:assumption (or x24731 (not x4484))
+:assumption (or x14753 (not x3936))
+:assumption (or x28708 (not x7014))
+:assumption (or (not x13956) x20413)
+:assumption (or x24722 (not x16802) x21759)
+:assumption (or x3995 (not x5737))
+:assumption (or (not x6423) (not x28247) x25039)
+:assumption (or (not x25900) x19992)
+:assumption (or x9025 (not x31776))
+:assumption (or x2695 x25840)
+:assumption (or (not x24261) (not x18065))
+:assumption (or x608 (not x27090))
+:assumption (or x30834 (not x1748))
+:assumption (or (not x1581) (not x17837))
+:assumption (or (not x386) (not x18884))
+:assumption (or x14451 (not x20050))
+:assumption (or (not x31163) (not x21549))
+:assumption (or (not x26659) x16309)
+:assumption (or x30475 (not x11822))
+:assumption (or x784 x3966)
+:assumption (or x16876 (not x3670))
+:assumption (or x6320 x5386)
+:assumption (or (not x20351) (not x8889))
+:assumption (or (not x14593) x643)
+:assumption (or x25973 (not x10911))
+:assumption (or (not x12092) (not x13060))
+:assumption (or x7369 (not x7113) x11773 x21546 x27967 (not x1935) x17743)
+:assumption (or x8300 x12053)
+:assumption (or (not x17559) (not x17940) (not x7959))
+:assumption (or (not x11169) (not x11276))
+:assumption (or (not x14076) x11253)
+:assumption (or (not x2898) x31014)
+:assumption (or x24256 (not x16319))
+:assumption (or x9084 (not x20795))
+:assumption (or (not x762) x16788)
+:assumption (or x13164 x21298)
+:assumption (or x22157 (not x25767))
+:assumption (or x23002 (not x1169))
+:assumption (or (not x23324) (not x20957))
+:assumption (or x14094 (not x25018))
+:assumption (or (not x8364) (not x23721))
+:assumption (or x6724 x4508 x21815)
+:assumption (or x13956 x26892 (not x21898))
+:assumption (or (not x16959) x13129 x6969 (not x24397))
+:assumption (or (not x26280) (not x27831))
+:assumption (or (not x14301) (not x20509))
+:assumption (or (not x28446) x17485)
+:assumption (or (not x4589) x24485)
+:assumption (or (not x25909) x10909)
+:assumption (or x16643 (not x25213))
+:assumption (or x9367 (not x13442))
+:assumption (or (not x23014) (not x10068) x11444 x4918 x8002 (not x15175))
+:assumption (or x12800 x21298 x16654 x22743)
+:assumption (or x5432 x7083)
+:assumption (or x18814 (not x24452))
+:assumption (or (not x12005) (not x6011))
+:assumption (or x25701 x22922)
+:assumption (or x986 (not x31269))
+:assumption (or (not x5886) (not x15694))
+:assumption (or (not x746) x11910)
+:assumption (or x23511 x9465)
+:assumption (or x12116 (not x15336) (not x3768))
+:assumption (or x8684 x20808)
+:assumption (or x27558 x26900)
+:assumption (or x31292 (not x14109))
+:assumption (or x8762 x16379)
+:assumption (or (not x5881) x15835)
+:assumption (or x17925 (not x24722))
+:assumption (or x12869 (not x8253))
+:assumption (or x10997 x10993)
+:assumption (or (not x1848) x25659)
+:assumption (or x7787 (not x8002))
+:assumption (or x2981 (not x6227))
+:assumption (or x23724 (not x24128) (not x5283) x28099 (not x15929))
+:assumption (or (not x11618) (not x20312))
+:assumption (or (not x20022) (not x1315))
+:assumption (or (not x4716) (not x23439))
+:assumption (or x27983 x11809)
+:assumption (or (not x4782) x26948)
+:assumption (or x21815 x11870)
+:assumption (or (not x7316) x23087)
+:assumption (or x22611 (not x873))
+:assumption (or (not x22748) x5511)
+:assumption (or x20098 x8502)
+:assumption (or x3994 x12296)
+:assumption (or x3435 (not x2246) x11863 x14455)
+:assumption (or x9181 (not x11899))
+:assumption (or (not x18307) x16542)
+:assumption (or (not x10987) x28880)
+:assumption (or x29379 (not x24732))
+:assumption (or x10620 (not x4389))
+:assumption (or x10617 (not x646))
+:assumption (or x10073 x25923 (not x12992) (not x16888))
+:assumption (or (not x24208) x12116)
+:assumption (or x7073 x4238)
+:assumption (or (not x13868) (not x27537))
+:assumption (or (not x30778) x4336)
+:assumption (or x17822 (not x20941))
+:assumption (or (not x14935) x29053)
+:assumption (or x21064 (not x3051))
+:assumption (or x21631 x27279)
+:assumption (or x16266 (not x28502))
+:assumption (or x4409 x6969)
+:assumption (or (not x8664) (not x18719))
+:assumption (or (not x22404) (not x9564))
+:assumption (or x18035 (not x11917))
+:assumption (or (not x16646) (not x7553))
+:assumption (or (not x8814) (not x10064))
+:assumption (or (not x31270) x23785)
+:assumption (or (not x10239) (not x10278))
+:assumption (or (not x24379) (not x31282))
+:assumption (or x5146 x6181)
+:assumption (or x16320 x11399)
+:assumption (or (not x7734) (not x22312))
+:assumption (or x20550 (not x14428))
+:assumption (or x19123 (not x28195))
+:assumption (or (not x16493) x16684)
+:assumption (or x3094 x823 (not x22040) (not x3180) (not x31528) (not x6015) x19695)
+:assumption (or x16904 x4988 (not x21392) (not x30113))
+:assumption (or (not x28812) (not x28549) (not x31844) x1002 x11743)
+:assumption (or (not x20640) x30987)
+:assumption (or (not x5621) x20502)
+:assumption (or (not x15276) x12273)
+:assumption (or x7123 (not x26770))
+:assumption (or x4588 (not x3209))
+:assumption (or x3083 (not x30178))
+:assumption (or (not x3581) x18262)
+:assumption (or (not x31456) x25659)
+:assumption (or (not x27179) x25968)
+:assumption (or (not x5950) (not x8002) x20723 (not x19201))
+:assumption (or (not x23135) x1816)
+:assumption (or (not x2587) x23114)
+:assumption (or (not x4482) (not x13350))
+:assumption (or (not x6184) x5950)
+:assumption (or x23234 (not x5709) x19411)
+:assumption (or x10064 x25924)
+:assumption (or x17127 (not x28892))
+:assumption (or x24758 x30668 (not x30113) (not x8375))
+:assumption (or x15034 x5028 (not x5100) x9576 x5896 x29442 x6635)
+:assumption (or x16658 x21932)
+:assumption (or (not x24722) x3102 x23244)
+:assumption (or (not x21097) (not x16455))
+:assumption (or x17943 x2541)
+:assumption (or x7921 (not x14846))
+:assumption (or (not x14347) x2922)
+:assumption (or (not x12319) (not x17942))
+:assumption (or (not x3223) (not x26249))
+:assumption (or (not x17070) (not x31874) (not x5778) x17887 x8580)
+:assumption (or x3631 x6701)
+:assumption (or (not x13525) x7364)
+:assumption (or (not x4480) x15362)
+:assumption (or x15108 x26897 x31794 (not x24849) x15850)
+:assumption (or (not x17796) x12636)
+:assumption (or (not x11017) (not x2872) x8535 x30521 x23757 x19705 (not x6830))
+:assumption (or (not x8408) (not x14578))
+:assumption (or (not x19982) x4550)
+:assumption (or (not x1312) (not x14756) x26334 x11607 (not x30399) x10515 x22129)
+:assumption (or x1787 (not x7752))
+:assumption (or x4353 x9670)
+:assumption (or x23634 x8892)
+:assumption (or (not x4375) x14102 (not x2437) x3221 (not x24609) (not x31216))
+:assumption (or x13030 (not x12645))
+:assumption (or (not x13828) x4527)
+:assumption (or (not x26673) (not x20712))
+:assumption (or x25810 (not x13933))
+:assumption (or (not x6635) (not x19098) x810 (not x14122) x15980 (not x7195) x20598 (not x3846))
+:assumption (or x23618 x25315 (not x27227))
+:assumption (or (not x19225) (not x12626))
+:assumption (or x12299 x6256)
+:assumption (or (not x12286) x28028)
+:assumption (or x20173 x26340)
+:assumption (or (not x12602) (not x22548))
+:assumption (or x30238 (not x5118) x12537 x22891 x8759 (not x10313) x5795 (not x24919))
+:assumption (or (not x18369) (not x7649))
+:assumption (or x11190 x1549)
+:assumption (or (not x26899) x11206)
+:assumption (or (not x18670) (not x3352))
+:assumption (or (not x9008) (not x10335) (not x5528) (not x30237) (not x29489))
+:assumption (or (not x1541) (not x1393))
+:assumption (or x3361 x30926)
+:assumption (or x203 (not x16689))
+:assumption (or x24822 x6473)
+:assumption (or (not x20550) x15726 (not x9930))
+:assumption (or (not x18643) x132)
+:assumption (or (not x6148) x80)
+:assumption (or x25273 (not x28373) (not x26897))
+:assumption (or (not x31468) (not x4498))
+:assumption (or (not x11804) x11281)
+:assumption (or x31508 x25843)
+:assumption (or (not x10261) (not x30826))
+:assumption (or x13988 (not x9670) x28852 x30555)
+:assumption (or (not x24729) x2667)
+:assumption (or (not x21671) (not x9717))
+:assumption (or x19644 x11049)
+:assumption (or x22556 (not x19501))
+:assumption (or (not x12629) (not x29519))
+:assumption (or (not x763) x2762)
+:assumption (or x3736 (not x9206))
+:assumption (or x17051 x18519 (not x23422) (not x30577) (not x24487))
+:assumption (or (not x1393) x10595)
+:assumption (or (not x16952) (not x10291))
+:assumption (or (not x21394) x13859)
+:assumption (or x10546 (not x25883))
+:assumption (or (not x8689) x6830)
+:assumption (or (not x8068) (not x10814))
+:assumption (or (not x10146) x30572)
+:assumption (or (not x14586) x8797)
+:assumption (or (not x2785) (not x4326))
+:assumption (or x17146 (not x16189) x11392 (not x11068) (not x24618) x30219)
+:assumption (or (not x22531) (not x3140))
+:assumption (or x6856 (not x20193) x6309)
+:assumption (or (not x24697) x3317)
+:assumption (or x2563 x14476)
+:assumption (or x7653 x28660)
+:assumption (or (not x20116) (not x11075))
+:assumption (or (not x26318) (not x23160))
+:assumption (or (not x2280) (not x14193) x22715 x8602 (not x19124) (not x2104) (not x9893) (not x16827))
+:assumption (or (not x1767) (not x10848))
+:assumption (or (not x152) x4042)
+:assumption (or (not x1393) x6979)
+:assumption (or (not x5425) (not x2582) x170 (not x20047) x26945 (not x912))
+:assumption (or (not x29352) (not x671) x30816 x288 x18493 (not x8397))
+:assumption (or (not x2004) x962)
+:assumption (or x4091 (not x24285))
+:assumption (or (not x11678) x4377)
+:assumption (or (not x20306) (not x17829))
+:assumption (or x876 x26670)
+:assumption (or x24155 (not x13211))
+:assumption (or x20027 x23600)
+:assumption (or x960 (not x29986))
+:assumption (or (not x26061) x9396)
+:assumption (or (not x17987) (not x21899))
+:assumption (or x26367 (not x8002))
+:assumption (or (not x6594) (not x29555))
+:assumption (or (not x23594) (not x8079))
+:assumption (or x22563 x11170)
+:assumption (or (not x3671) x1491 (not x18176))
+:assumption (or (not x9733) (not x28313))
+:assumption (or x18026 (not x20998))
+:assumption (or (not x12291) (not x18289) (not x12124) (not x4822) x16145)
+:assumption (or x850 x15992)
+:assumption (or x21815 x9523)
+:assumption (or (not x8836) x18518 (not x4886))
+:assumption (or x1738 (not x19992))
+:assumption (or (not x3684) x2836)
+:assumption (or x9990 x10585 x3531 (not x9332))
+:assumption (or (not x28573) (not x19688))
+:assumption (or x21618 (not x2229))
+:assumption (or x27913 (not x16761))
+:assumption (or x24155 (not x20361))
+:assumption (or (not x2619) x4098)
+:assumption (or (not x13995) (not x18182))
+:assumption (or (not x4401) (not x9025) (not x27835))
+:assumption (or (not x5344) x4152)
+:assumption (or (not x30760) x27197)
+:assumption (or (not x29392) (not x11277) x485 x11623 (not x4324) x6244)
+:assumption (or (not x3090) x10799)
+:assumption (or x6438 (not x12960))
+:assumption (or (not x6022) x4758)
+:assumption (or (not x8588) (not x28922))
+:assumption (or x202 x7244)
+:assumption (or x25326 x31874)
+:assumption (or x23556 x5899)
+:assumption (or (not x3706) (not x24061))
+:assumption (or (not x11600) (not x19864))
+:assumption (or x1047 x28625)
+:assumption (or x3614 (not x8195))
+:assumption (or x9703 x799)
+:assumption (or x22079 x21705)
+:assumption (or (not x23447) x20482 (not x23520))
+:assumption (or (not x23994) x15832)
+:assumption (or (not x3562) x13269)
+:assumption (or x27076 (not x4451))
+:assumption (or (not x12267) x14741)
+:assumption (or (not x25468) (not x31875))
+:assumption (or (not x2344) (not x21961) (not x15671))
+:assumption (or x11876 x5669)
+:assumption (or (not x8053) (not x28696))
+:assumption (or x26371 (not x4121))
+:assumption (or x10038 x8979)
+:assumption (or x17004 x10911 x4378 x25781)
+:assumption (or (not x27349) (not x24014))
+:assumption (or (not x12045) (not x20949) (not x23562) (not x1487) (not x23606))
+:assumption (or (not x3166) x1560)
+:assumption (or (not x16483) x3596)
+:assumption (or (not x27092) (not x15846))
+:assumption (or (not x29257) x29969)
+:assumption (or (not x23886) x2276)
+:assumption (or x30926 (not x15871))
+:assumption (or x19474 x27766)
+:assumption (or (not x19752) x3306)
+:assumption (or x11206 x23307)
+:assumption (or (not x27881) (not x7000))
+:assumption (or (not x149) x30912 x756 x19313 (not x17339))
+:assumption (or (not x4997) x9439)
+:assumption (or (not x10433) (not x31552))
+:assumption (or x27756 x27035)
+:assumption (or (not x2834) x19145)
+:assumption (or (not x19656) (not x29488))
+:assumption (or (not x20881) x22925 x4906 (not x20916) x17033 x1044)
+:assumption (or (not x28976) (not x16849))
+:assumption (or x16896 (not x1567) (not x21298))
+:assumption (or x30007 x15464)
+:assumption (or x31166 x29144)
+:assumption (or x20952 x12504)
+:assumption (or (not x8355) (not x27682))
+:assumption (or (not x5871) (not x27911))
+:assumption (or x27729 (not x8089))
+:assumption (or (not x24521) (not x13937))
+:assumption (or (not x5351) (not x8861))
+:assumption (or (not x14819) x12031 (not x7922) x12462)
+:assumption (or (not x9153) x15035)
+:assumption (or (not x18042) x8585)
+:assumption (or x12799 (not x28426))
+:assumption (or (not x23884) x24709)
+:assumption (or x7452 x6847)
+:assumption (or (not x9008) (not x7008))
+:assumption (or (not x31573) x2437)
+:assumption (or x15669 (not x13039))
+:assumption (or (not x5417) (not x27946) x17361 x10129)
+:assumption (or x1080 (not x27399))
+:assumption (or (not x11506) x6234)
+:assumption (or x28159 x1763)
+:assumption (or (not x13713) x4571)
+:assumption (or (not x27973) x31458)
+:assumption (or x12507 x13768 (not x1995) x6861)
+:assumption (or x28460 x28173)
+:assumption (or x6956 x21357 (not x7866) (not x503) x169)
+:assumption (or x15599 (not x8774))
+:assumption (or x5087 (not x29670))
+:assumption (or x16031 x29513)
+:assumption (or x30236 x30141)
+:assumption (or (not x17595) (not x6107))
+:assumption (or (not x20501) (not x31097))
+:assumption (or (not x1225) (not x23261))
+:assumption (or (not x21732) (not x8002))
+:assumption (or (not x4876) x29011)
+:assumption (or x8002 x14984)
+:assumption (or (not x26835) x3688)
+:assumption (or (not x16304) x9948)
+:assumption (or x28709 x5742)
+:assumption (or x10096 (not x10987))
+:assumption (or (not x11596) x29139)
+:assumption (or (not x480) (not x7862))
+:assumption (or (not x2108) (not x6848))
+:assumption (or x14051 x31614)
+:assumption (or (not x18727) x14016)
+:assumption (or x7053 x28721)
+:assumption (or (not x12083) x6027)
+:assumption (or x23524 (not x15330))
+:assumption (or (not x25436) x19430)
+:assumption (or (not x28541) x9047 (not x9140) x12586 x5855)
+:assumption (or (not x1977) (not x11975))
+:assumption (or (not x9785) x30563)
+:assumption (or (not x6309) x26526)
+:assumption (or (not x11476) x22516)
+:assumption (or (not x14455) (not x29191))
+:assumption (or x25357 (not x23694) (not x2333))
+:assumption (or x19093 (not x3167))
+:assumption (or (not x21099) x18003 x19864 x5336)
+:assumption (or x23349 (not x24983))
+:assumption (or x23244 x17738 (not x10866))
+:assumption (or (not x16552) x21955)
+:assumption (or x9713 x30208 (not x27086))
+:assumption (or x2584 x7104)
+:assumption (or (not x12081) (not x20806))
+:assumption (or x2193 x18957)
+:assumption (or x15887 x5208)
+:assumption (or x25902 x17362)
+:assumption (or x2434 x22730)
+:assumption (or x4519 (not x26679))
+:assumption (or x18675 x1466 x25670 (not x28079))
+:assumption (or x3299 x26897 (not x2193))
+:assumption (or x5849 x28571)
+:assumption (or x18859 (not x2826) (not x27996))
+:assumption (or x15169 x2028)
+:assumption (or x16272 (not x26467))
+:assumption (or x25037 (not x16649))
+:assumption (or x2005 x8509)
+:assumption (or x17652 (not x20999))
+:assumption (or x10111 x23220)
+:assumption (or (not x13920) (not x26706))
+:assumption (or x10329 x21380)
+:assumption (or x29396 x17951)
+:assumption (or (not x17618) x2615)
+:assumption (or (not x29435) x29755)
+:assumption (or x31196 (not x9236))
+:assumption (or (not x9724) x11089 (not x20022) x1465 x13738)
+:assumption (or (not x22460) x23734)
+:assumption (or (not x15227) (not x1379))
+:assumption (or x10247 x8482)
+:assumption (or x14794 (not x2002))
+:assumption (or (not x15041) x24178)
+:assumption (or x575 x29164)
+:assumption (or x5886 x1089)
+:assumption (or x22841 x24678)
+:assumption (or x2259 (not x30731))
+:assumption (or (not x13053) x27816)
+:assumption (or x6299 x522)
+:assumption (or (not x28017) (not x13411))
+:assumption (or x21063 x28832)
+:assumption (or (not x26067) x21715)
+:assumption (or x19992 x10911 x1674 x25781)
+:assumption (or (not x13584) (not x5528))
+:assumption (or x24269 x11895 x20518 x9930 x31161)
+:assumption (or (not x28885) (not x1762))
+:assumption (or (not x31328) x1004)
+:assumption (or x30110 x6473 (not x16948))
+:assumption (or (not x31193) (not x6873))
+:assumption (or (not x5028) (not x22745))
+:assumption (or x20060 x9583 (not x14931) x10658 (not x9854) (not x28844) x12414)
+:assumption (or (not x55) (not x24183))
+:assumption (or (not x25557) (not x16499))
+:assumption (or (not x1049) x27840)
+:assumption (or (not x11368) (not x9008))
+:assumption (or x10024 x28394)
+:assumption (or x12741 (not x10863))
+:assumption (or x10887 x31932)
+:assumption (or (not x24873) x223)
+:assumption (or (not x10318) (not x11363))
+:assumption (or x9414 x18614)
+:assumption (or (not x2393) x27381)
+:assumption (or (not x28933) x4790)
+:assumption (or (not x8066) x31201)
+:assumption (or (not x9136) (not x6149) x1230)
+:assumption (or x5705 x10968 x19722 x27661 x26701 x21900 (not x9228))
+:assumption (or (not x22344) (not x16043))
+:assumption (or x2809 (not x28024))
+:assumption (or (not x17115) (not x2963))
+:assumption (or x326 (not x15911))
+:assumption (or (not x1107) x9186)
+:assumption (or x16025 (not x4951))
+:assumption (or x23278 x8569)
+:assumption (or (not x8930) x20857)
+:assumption (or x26885 x15449)
+:assumption (or (not x22325) x12348)
+:assumption (or (not x1502) x8112)
+:assumption (or x24808 x13791)
+:assumption (or x10356 x4588)
+:assumption (or (not x8749) x8260)
+:assumption (or x10094 x16357)
+:assumption (or x8671 x26885)
+:assumption (or x5220 x14556)
+:assumption (or (not x12458) (not x18725))
+:assumption (or (not x15367) x16943)
+:assumption (or (not x14839) x5393 x26562)
+:assumption (or x4327 x29442 (not x991) (not x5028))
+:assumption (or (not x16915) (not x16258))
+:assumption (or (not x29094) (not x22954))
+:assumption (or (not x16365) (not x13838))
+:assumption (or (not x1972) x11913)
+:assumption (or x5420 (not x18441))
+:assumption (or x28918 (not x16907) (not x15520))
+:assumption (or (not x5577) x26269)
+:assumption (or (not x25732) x12434)
+:assumption (or (not x26858) (not x4381))
+:assumption (or x15025 (not x696))
+:assumption (or (not x3435) x19930)
+:assumption (or x19319 x15139)
+:assumption (or x16815 (not x28644))
+:assumption (or x3445 (not x15934))
+:assumption (or x15360 (not x15643))
+:assumption (or x15743 (not x24645) x6969)
+:assumption (or x20013 (not x9008))
+:assumption (or (not x11783) x22485 (not x31428) x20134)
+:assumption (or (not x31582) (not x10804))
+:assumption (or x1755 x5528 (not x18978))
+:assumption (or (not x4708) (not x142))
+:assumption (or x11852 (not x3191))
+:assumption (or (not x30186) (not x27597))
+:assumption (or (not x10343) (not x17015))
+:assumption (or (not x7865) (not x29959))
+:assumption (or (not x21502) x23024)
+:assumption (or (not x20861) x4259)
+:assumption (or x24261 x18065)
+:assumption (or x2288 (not x4360))
+:assumption (or (not x20068) x25017)
+:assumption (or x15917 x20173 (not x10064) (not x18372))
+:assumption (or (not x20127) (not x39))
+:assumption (or x9531 x13615)
+:assumption (or (not x7772) (not x5846))
+:assumption (or x7979 (not x27068))
+:assumption (or x23295 x13388)
+:assumption (or x12908 x188)
+:assumption (or x21813 (not x28889))
+:assumption (or x4190 x18960)
+:assumption (or x29624 (not x26937))
+:assumption (or (not x9311) (not x25855))
+:assumption (or (not x24974) (not x4949) (not x6594) (not x21299) x28259)
+:assumption (or (not x11402) (not x217))
+:assumption (or (not x19959) (not x15508))
+:assumption (or (not x23767) (not x13518))
+:assumption (or (not x872) (not x12931))
+:assumption (or x219 x828)
+:assumption (or x19076 (not x4549))
+:assumption (or x22137 x20152 x30868 x14687)
+:assumption (or x30649 (not x27115))
+:assumption (or x25865 (not x4579))
+:assumption (or x19044 (not x8147))
+:assumption (or x1510 x27002)
+:assumption (or (not x3970) x1717)
+:assumption (or (not x14841) (not x11898))
+:assumption (or x17430 (not x3712))
+:assumption (or x17963 (not x25914))
+:assumption (or x30824 x2230)
+:assumption (or (not x5696) x10906)
+:assumption (or x28951 (not x22505))
+:assumption (or (not x30653) (not x1926))
+:assumption (or x30085 x8161)
+:assumption (or (not x7537) x7644)
+:assumption (or (not x20076) x20749)
+:assumption (or (not x6825) x5086)
+:assumption (or x3560 (not x694))
+:assumption (or x27358 (not x5173) (not x5682) (not x3861))
+:assumption (or (not x17150) (not x16478) x9182 (not x17855))
+:assumption (or (not x26561) x6977)
+:assumption (or x12701 (not x21815))
+:assumption (or (not x8002) x11774 (not x23244) (not x9950))
+:assumption (or (not x20700) x24719)
+:assumption (or x21749 (not x15600))
+:assumption (or x24715 x19193)
+:assumption (or x14961 x2366 x1718 x16018 (not x24991))
+:assumption (or x19881 x9199)
+:assumption (or x18100 (not x23916))
+:assumption (or x31681 x30720)
+:assumption (or (not x21544) (not x13595))
+:assumption (or (not x19803) (not x12002))
+:assumption (or (not x24943) x2955)
+:assumption (or x16184 x30041)
+:assumption (or x29683 (not x9198))
+:assumption (or (not x26998) x7739)
+:assumption (or x13652 x23863)
+:assumption (or x4295 (not x8120))
+:assumption (or x2768 x3310)
+:assumption (or x1758 (not x26567) (not x30175) (not x26810))
+:assumption (or x16086 x15802)
+:assumption (or x10331 x9257 (not x25911) (not x9230) (not x12642) x3108 (not x4305) (not x12917) (not x7249))
+:assumption (or (not x12617) (not x1267))
+:assumption (or x30503 (not x22279) x30138)
+:assumption (or x31473 x1393)
+:assumption (or x16251 (not x26931) x21319 (not x4145))
+:assumption (or x16651 x12102)
+:assumption (or x19960 (not x22609))
+:assumption (or (not x14578) x25278 x24477 x19395 (not x7490) x225 x8120)
+:assumption (or x29643 x5170)
+:assumption (or x28242 (not x21815) x29948 x16741 (not x16510))
+:assumption (or (not x24904) x14184)
+:assumption (or x21452 x10262)
+:assumption (or x9891 x1792)
+:assumption (or x7762 (not x5820))
+:assumption (or (not x10422) (not x8602))
+:assumption (or x19764 (not x1733))
+:assumption (or x26897 (not x19640))
+:assumption (or (not x23462) x16829 x3643 x29772)
+:assumption (or x19184 (not x2785))
+:assumption (or x11566 x3296)
+:assumption (or (not x13757) (not x10051))
+:assumption (or (not x20604) (not x9368))
+:assumption (or x18469 (not x16778))
+:assumption (or x13228 (not x15479))
+:assumption (or (not x18347) (not x1904))
+:assumption (or x6553 x26688)
+:assumption (or x27979 x15523)
+:assumption (or (not x25753) (not x1488))
+:assumption (or x18404 x17680 x30560 x10828 (not x29090) x672 x11142 x888)
+:assumption (or (not x9076) (not x22810))
+:assumption (or x22635 (not x323))
+:assumption (or (not x1459) x9008 (not x12815))
+:assumption (or (not x23617) (not x16232))
+:assumption (or (not x2100) (not x8096))
+:assumption (or x8535 x29660 (not x25857) x8689)
+:assumption (or x11619 (not x6345))
+:assumption (or (not x23782) x19959)
+:assumption (or (not x3394) (not x14185))
+:assumption (or (not x29044) x11926)
+:assumption (or (not x25906) x23513)
+:assumption (or x1949 x5468)
+:assumption (or (not x10194) (not x30679) (not x24680) x23440 x20895 (not x314) x8520 (not x9077) x18179)
+:assumption (or x26432 (not x24005) x17359 x19434)
+:assumption (or x26789 x5914 (not x10036) x17302)
+:assumption (or x2485 (not x24402) x23368 x28512 (not x1764))
+:assumption (or x26892 (not x14901))
+:assumption (or x5403 (not x8002))
+:assumption (or x20790 x26897)
+:assumption (or (not x23138) x26017)
+:assumption (or (not x24107) (not x17906))
+:assumption (or x5799 (not x8002))
+:assumption (or (not x21748) x15887)
+:assumption (or (not x9008) x2641)
+:assumption (or x2722 (not x28211) (not x13028) (not x29375) (not x31689) (not x28498) x1648 (not x25393))
+:assumption (or (not x19671) (not x4815))
+:assumption (or x4936 x22301)
+:assumption (or (not x17964) x5811)
+:assumption (or x24691 x26992 (not x26041) (not x3790))
+:assumption (or (not x16268) x4993)
+:assumption (or (not x28209) x26484)
+:assumption (or (not x30103) x20605)
+:assumption (or (not x29703) x21758)
+:assumption (or x22005 x6606)
+:assumption (or x507 (not x9012) x23113 (not x12081) x13283 x7658)
+:assumption (or (not x31387) (not x6635) x16938)
+:assumption (or x4028 x17130)
+:assumption (or (not x6407) x14513)
+:assumption (or x272 (not x14033) x9008)
+:assumption (or x13956 (not x2693))
+:assumption (or x10017 x21509)
+:assumption (or (not x30415) (not x5418))
+:assumption (or (not x9870) x5256)
+:assumption (or x19298 (not x10930))
+:assumption (or (not x16478) (not x17292))
+:assumption (or x24557 x17882)
+:assumption (or x4116 (not x15395))
+:assumption (or (not x11644) x21122)
+:assumption (or x13415 (not x20949) x12045 x6036 x9856)
+:assumption (or (not x31797) (not x12571))
+:assumption (or (not x11907) (not x31240))
+:assumption (or x9648 x21815)
+:assumption (or x21400 (not x6281) x22495 x15375)
+:assumption (or (not x25366) (not x19404))
+:assumption (or (not x22101) x21239)
+:assumption (or (not x21362) x19711)
+:assumption (or (not x19925) (not x31255) x12851 (not x9504) x2097 (not x30496) (not x11241) (not x14292) x442)
+:assumption (or x297 x152)
+:assumption (or (not x31853) x2728)
+:assumption (or (not x10416) (not x15816))
+:assumption (or x5394 (not x16577))
+:assumption (or (not x27471) (not x21730))
+:assumption (or (not x13079) x23586)
+:assumption (or (not x27505) x26300)
+:assumption (or (not x11047) x5005)
+:assumption (or x5163 (not x13309) (not x5498) (not x7947) (not x19203) x15017 x5200 x2411 (not x269) (not x2801) (not x20536) (not x25196))
+:assumption (or (not x6907) x10986)
+:assumption (or x26348 x31308)
+:assumption (or (not x30270) x13956)
+:assumption (or (not x7732) x29726)
+:assumption (or (not x5965) x2726)
+:assumption (or x23786 x19807)
+:assumption (or x27798 x10277 x7060 x20837 (not x7445))
+:assumption (or (not x25555) x30221)
+:assumption (or (not x11377) x1185 (not x28718))
+:assumption (or (not x8810) x29944)
+:assumption (or (not x26432) x17519)
+:assumption (or x1546 (not x1016))
+:assumption (or (not x29385) (not x17296))
+:assumption (or (not x24435) (not x4815))
+:assumption (or (not x15662) x3752)
+:assumption (or x2670 (not x15795))
+:assumption (or x13271 x26043 (not x827))
+:assumption (or (not x8002) x2599)
+:assumption (or x18626 (not x25659))
+:assumption (or (not x28973) (not x17342) (not x1582) x6459)
+:assumption (or x13056 x5610)
+:assumption (or (not x20550) x11425)
+:assumption (or x16741 x2927)
+:assumption (or x25008 (not x11684))
+:assumption (or (not x6759) x8192)
+:assumption (or x21815 (not x31393))
+:assumption (or (not x9993) (not x3264))
+:assumption (or x17643 x14068)
+:assumption (or (not x20134) x2182)
+:assumption (or x10557 (not x6245))
+:assumption (or (not x11401) x22547)
+:assumption (or x30305 (not x7181) x29698 (not x3243) x12290)
+:assumption (or (not x23246) x13730)
+:assumption (or (not x30636) (not x29247))
+:assumption (or x22793 x15638)
+:assumption (or (not x8501) x5142 (not x142))
+:assumption (or x15621 x27623)
+:assumption (or x6496 x3177)
+:assumption (or (not x25719) x29424)
+:assumption (or x11174 x10453)
+:assumption (or x24897 (not x23308))
+:assumption (or (not x28196) (not x24860))
+:assumption (or (not x11374) x14258)
+:assumption (or (not x29120) (not x17148))
+:assumption (or (not x11470) x16771)
+:assumption (or x20354 (not x28842))
+:assumption (or x25376 (not x22881))
+:assumption (or (not x17971) (not x25215))
+:assumption (or x16304 x1754)
+:assumption (or x24740 (not x26411))
+:assumption (or (not x31278) (not x4293))
+:assumption (or x5606 (not x7871))
+:assumption (or x14126 x14916)
+:assumption (or x24683 x13460)
+:assumption (or x3782 x10250)
+:assumption (or x19698 (not x23244) x17493 (not x11249) (not x28036) (not x16325))
+:assumption (or x17245 x30930)
+:assumption (or x27609 (not x25939))
+:assumption (or x25376 x25857)
+:assumption (or x6951 x5520)
+:assumption (or (not x26551) (not x18402))
+:assumption (or x5088 x13577)
+:assumption (or (not x2212) x1845)
+:assumption (or (not x18357) x13075)
+:assumption (or (not x25606) (not x29282))
+:assumption (or (not x21418) x24762)
+:assumption (or (not x20864) (not x23051))
+:assumption (or x24826 x7153)
+:assumption (or x12956 (not x7146))
+:assumption (or x14830 x25803)
+:assumption (or x27573 x2749)
+:assumption (or x25315 x9252 (not x18450) (not x17225))
+:assumption (or x19253 x22529)
+:assumption (or (not x31767) (not x28162))
+:assumption (or (not x7303) (not x15038))
+:assumption (or (not x7512) x7089)
+:assumption (or x4270 (not x383))
+:assumption (or (not x6836) x13956 x19501 (not x7012) x23244 x8002)
+:assumption (or (not x26069) (not x24722) x12458)
+:assumption (or (not x20913) x15221 x1582)
+:assumption (or x17421 (not x5025))
+:assumption (or (not x16230) x2220)
+:assumption (or (not x14395) x31279)
+:assumption (or x6532 x9373)
+:assumption (or (not x7399) x26107 x28682)
+:assumption (or x27843 (not x21832))
+:assumption (or x12819 (not x23244))
+:assumption (or (not x12189) (not x30822))
+:assumption (or (not x31421) (not x8637))
+:assumption (or x29650 (not x7351) (not x17005))
+:assumption (or (not x18179) (not x22246) x3214 x2478)
+:assumption (or x22949 x10778 (not x25385) x23982 x361)
+:assumption (or x19428 x22126)
+:assumption (or (not x13844) x31269)
+:assumption (or (not x15917) x18372)
+:assumption (or x6498 x28872)
+:assumption (or x27682 x2295)
+:assumption (or (not x15194) (not x12060))
+:assumption (or x24666 (not x2838))
+:assumption (or x21575 x26444 x9008)
+:assumption (or (not x23490) (not x6298))
+:assumption (or (not x23558) x22786)
+:assumption (or (not x6824) (not x25151))
+:assumption (or x16088 (not x3736) x10874 (not x28242))
+:assumption (or x17551 (not x31292) (not x14552) x1825 x30797)
+:assumption (or (not x21712) x4350)
+:assumption (or x19630 (not x31007))
+:assumption (or (not x20525) x437)
+:assumption (or x9975 (not x23332))
+:assumption (or x2664 x6899 (not x9008))
+:assumption (or (not x31127) x14977 (not x5114) (not x30362))
+:assumption (or (not x19035) (not x14010))
+:assumption (or x5025 (not x6902) x28890 (not x26409))
+:assumption (or (not x12540) x23646)
+:assumption (or (not x9531) (not x2035))
+:assumption (or (not x9105) (not x1372))
+:assumption (or x29649 (not x20145))
+:assumption (or (not x31370) x6663)
+:assumption (or (not x9829) x2489)
+:assumption (or (not x18108) (not x10510))
+:assumption (or x17855 x17931 (not x20580) (not x7489))
+:assumption (or x16942 (not x19354) (not x15966) x4378)
+:assumption (or x22595 x29334)
+:assumption (or (not x8232) (not x18892))
+:assumption (or (not x16153) x30451)
+:assumption (or x26628 (not x848) (not x26432))
+:assumption (or (not x4100) x537)
+:assumption (or (not x15659) x924 (not x22129))
+:assumption (or (not x17030) (not x24952))
+:assumption (or x7384 x30602)
+:assumption (or (not x26995) (not x9682))
+:assumption (or x2806 x9800)
+:assumption (or (not x20977) (not x21074))
+:assumption (or x7144 (not x13253) (not x24638))
+:assumption (or x445 x22500)
+:assumption (or (not x13946) x5528)
+:assumption (or (not x5796) (not x19944))
+:assumption (or (not x28852) (not x2654))
+:assumption (or x132 x3586)
+:assumption (or (not x5260) x3840)
+:assumption (or x31872 x15338)
+:assumption (or (not x22364) (not x21298))
+:assumption (or (not x17042) (not x6141))
+:assumption (or (not x1702) x14028 x14053)
+:assumption (or (not x19834) (not x917))
+:assumption (or x14695 x22021)
+:assumption (or (not x23244) x24060)
+:assumption (or (not x23741) x12930)
+:assumption (or x28216 (not x9008))
+:assumption (or x8811 (not x28240))
+:assumption (or x14273 (not x5651))
+:assumption (or x9477 x19206)
+:assumption (or x23997 x22942)
+:assumption (or x30241 (not x25226))
+:assumption (or (not x29622) (not x4267))
+:assumption (or x18097 (not x6673))
+:assumption (or x11377 (not x16836))
+:assumption (or (not x19003) x24315)
+:assumption (or (not x13956) (not x29679) x27941 x28023)
+:assumption (or (not x4073) (not x1196))
+:assumption (or (not x20501) (not x16286))
+:assumption (or (not x490) x20016)
+:assumption (or (not x12240) (not x1633))
+:assumption (or x26737 (not x15716))
+:assumption (or (not x9782) x22128 (not x16067) (not x7688) x14183 x27863)
+:assumption (or (not x16648) x31799 x15137 (not x6514))
+:assumption (or (not x13812) (not x30729))
+:assumption (or x5585 (not x18833))
+:assumption (or (not x13576) (not x13998))
+:assumption (or x30101 x14373)
+:assumption (or x31743 x29772)
+:assumption (or (not x22160) x22987)
+:assumption (or (not x17096) x3842 x12121 (not x23428) x4524 x9008 (not x12620) (not x10971))
+:assumption (or x17633 x29800)
+:assumption (or x7957 x20929 (not x4764))
+:assumption (or (not x7049) (not x21943))
+:assumption (or x18074 x31911 x7138)
+:assumption (or x5621 x21416 (not x4012) (not x16186) (not x25413) x21657 x7799 (not x30867))
+:assumption (or (not x6969) x29639)
+:assumption (or x29690 x14774)
+:assumption (or (not x26007) x3361)
+:assumption (or (not x12356) (not x10286))
+:assumption (or (not x13524) (not x28181) (not x26631) x6511)
+:assumption (or x17399 (not x13131))
+:assumption (or (not x18518) x12011)
+:assumption (or x8034 (not x14455) x2906)
+:assumption (or (not x16379) x13073)
+:assumption (or x31283 x17668)
+:assumption (or (not x22110) (not x25366))
+:assumption (or (not x140) (not x16374))
+:assumption (or (not x18698) (not x22050))
+:assumption (or (not x12431) x27127)
+:assumption (or (not x11996) (not x23669))
+:assumption (or (not x13517) (not x18146) (not x21298) (not x12955))
+:assumption (or x11518 x9065)
+:assumption (or x18136 (not x17684))
+:assumption (or x3441 x16335)
+:assumption (or (not x30214) (not x25690))
+:assumption (or x8205 (not x23244))
+:assumption (or x18801 x1724)
+:assumption (or (not x307) (not x22520))
+:assumption (or x25418 x805)
+:assumption (or (not x22829) (not x8980))
+:assumption (or x15927 (not x5053))
+:assumption (or x18093 (not x23711))
+:assumption (or x16794 (not x13701))
+:assumption (or (not x21323) (not x12518) x2237)
+:assumption (or (not x22355) (not x19387))
+:assumption (or (not x18919) x11079)
+:assumption (or x13463 (not x18969))
+:assumption (or (not x4422) x13187)
+:assumption (or x27189 x30001)
+:assumption (or (not x10374) (not x4742))
+:assumption (or (not x23101) x19391)
+:assumption (or (not x24493) (not x4893))
+:assumption (or (not x13826) x6750)
+:assumption (or x22466 (not x19521))
+:assumption (or x4300 x19811)
+:assumption (or (not x13037) x12963)
+:assumption (or x5880 (not x18979))
+:assumption (or (not x13599) (not x15941))
+:assumption (or (not x27432) (not x14839))
+:assumption (or (not x28633) (not x12578))
+:assumption (or (not x22937) (not x27361) (not x17651) (not x5971) x4742 (not x12350))
+:assumption (or x9390 x25797)
+:assumption (or (not x9008) (not x18281))
+:assumption (or (not x17436) x4512 (not x29439) (not x10753) (not x17157) (not x15929))
+:assumption (or x30945 x9499)
+:assumption (or (not x11965) (not x12734))
+:assumption (or x4044 (not x9423) (not x18446) (not x13472))
+:assumption (or x2529 (not x8306))
+:assumption (or (not x2570) (not x19210))
+:assumption (or (not x21895) x30113)
+:assumption (or (not x9128) x2578)
+:assumption (or (not x2366) (not x17387))
+:assumption (or (not x29453) x22088)
+:assumption (or x30705 (not x28245))
+:assumption (or (not x1884) x1580)
+:assumption (or x22449 x4617)
+:assumption (or (not x19928) (not x31859))
+:assumption (or (not x29544) (not x2605))
+:assumption (or (not x13951) x26765)
+:assumption (or (not x7513) (not x27458))
+:assumption (or x6122 (not x8002))
+:assumption (or x4146 (not x8919))
+:assumption (or (not x920) (not x26007))
+:assumption (or x1582 x21731)
+:assumption (or (not x21407) x1042)
+:assumption (or x2932 (not x319))
+:assumption (or (not x17287) (not x17624))
+:assumption (or x21088 (not x18377) x9408 (not x18618) x1741 (not x22674) x25811 (not x1763))
+:assumption (or x19606 (not x5518))
+:assumption (or (not x31811) (not x21689))
+:assumption (or (not x11720) x28555)
+:assumption (or (not x18709) x15879)
+:assumption (or x6695 (not x30204))
+:assumption (or (not x26671) (not x9008))
+:assumption (or (not x3001) x18555 (not x202) (not x22338))
+:assumption (or (not x1217) x14111)
+:assumption (or (not x28225) (not x16985))
+:assumption (or x5206 x29596 (not x8002) x29731)
+:assumption (or x7906 x4259 x26512)
+:assumption (or (not x31166) (not x22359))
+:assumption (or (not x16087) (not x14979))
+:assumption (or (not x3714) (not x909))
+:assumption (or x6049 (not x18872) (not x25366) (not x18694))
+:assumption (or (not x8002) x7877)
+:assumption (or x27450 (not x14612))
+:assumption (or x6290 (not x24234))
+:assumption (or x7800 x15781)
+:assumption (or x16025 x13411 (not x16844))
+:assumption (or (not x13056) (not x16374) (not x15022) (not x5610))
+:assumption (or (not x28663) x6841)
+:assumption (or x10673 x19675)
+:assumption (or x20989 (not x13597))
+:assumption (or x30292 (not x334))
+:assumption (or x14983 (not x15409))
+:assumption (or (not x21683) (not x30476))
+:assumption (or x29080 (not x1633))
+:assumption (or x6614 x25659)
+:assumption (or (not x11233) (not x474))
+:assumption (or x31500 x286)
+:assumption (or (not x5577) (not x21790))
+:assumption (or (not x13712) x1252)
+:assumption (or x9718 x13388)
+:assumption (or x8120 x11213 x18333 x9892)
+:assumption (or x17610 x1396)
+:assumption (or x20309 (not x20260))
+:assumption (or x1034 (not x8609))
+:assumption (or x5656 x9842)
+:assumption (or (not x4256) x27050 (not x4351))
+:assumption (or (not x30850) x20226)
+:assumption (or x25750 x22959)
+:assumption (or x19285 (not x10430))
+:assumption (or (not x3416) x10708)
+:assumption (or x9779 (not x2673))
+:assumption (or x28343 (not x19176))
+:assumption (or (not x18461) (not x4325))
+:assumption (or (not x24600) (not x28918))
+:assumption (or (not x29754) (not x1393))
+:assumption (or x2701 x8809)
+:assumption (or x29009 (not x14706))
+:assumption (or (not x15007) (not x11104))
+:assumption (or (not x10511) x5497)
+:assumption (or (not x18505) (not x22154))
+:assumption (or (not x29534) (not x16304) (not x11268) x10632 (not x21815) x18072 (not x16510))
+:assumption (or (not x16424) (not x31153))
+:assumption (or (not x15670) (not x5038))
+:assumption (or (not x29442) x18409)
+:assumption (or x9766 (not x16557))
+:assumption (or x21214 (not x913))
+:assumption (or (not x15492) (not x19014))
+:assumption (or x23678 (not x8991))
+:assumption (or x4098 x3582 (not x6594) (not x17534))
+:assumption (or x17837 x15870)
+:assumption (or (not x8002) (not x13221))
+:assumption (or (not x1878) x17280)
+:assumption (or (not x28821) x15577)
+:assumption (or x2498 x23805 (not x6594) (not x29959))
+:assumption (or (not x20907) (not x5258))
+:assumption (or x5010 (not x19545))
+:assumption (or (not x29932) (not x20242) x25224 x13757 x8919)
+:assumption (or x4942 x21219)
+:assumption (or (not x25332) x27911)
+:assumption (or (not x5186) x21036)
+:assumption (or x11513 x4198 x13622 x27349)
+:assumption (or (not x14414) (not x15915) x14839)
+:assumption (or (not x23726) (not x21993))
+:assumption (or x24558 (not x22634))
+:assumption (or (not x30794) x28635 x15719 (not x3690) (not x3848) (not x18990))
+:assumption (or x2523 (not x21919))
+:assumption (or x22472 (not x9248))
+:assumption (or (not x4833) (not x23616))
+:assumption (or x12373 (not x27965))
+:assumption (or x15138 (not x12083))
+:assumption (or x16048 (not x2033) x4643 (not x11093) x1393 (not x12859) x2472 (not x19968))
+:assumption (or x18358 x10224 (not x14420) x31181 (not x14802))
+:assumption (or x20135 (not x3001) (not x7022) (not x9183))
+:assumption (or (not x3517) x19834 x917)
+:assumption (or (not x23734) x6163)
+:assumption (or (not x17754) x22302)
+:assumption (or (not x14411) x11340)
+:assumption (or x19529 (not x1439))
+:assumption (or (not x12300) x20087)
+:assumption (or (not x30743) (not x11488))
+:assumption (or (not x27715) (not x8002))
+:assumption (or x4961 (not x24346))
+:assumption (or (not x4562) (not x3847))
+:assumption (or (not x599) x4280)
+:assumption (or x28357 x29193)
+:assumption (or x25355 (not x17486))
+:assumption (or x11067 (not x16515))
+:assumption (or x26977 (not x30489))
+:assumption (or (not x28892) (not x14595) x22816 x5405 x25946 (not x8374))
+:assumption (or (not x12169) x20577)
+:assumption (or (not x31906) x20215)
+:assumption (or x16422 x22695)
+:assumption (or (not x17832) (not x13722))
+:assumption (or (not x25465) (not x17933))
+:assumption (or x17645 x582 (not x28242))
+:assumption (or (not x10064) x16359)
+:assumption (or (not x8002) x30255 (not x6233) (not x1959))
+:assumption (or (not x13072) x1605)
+:assumption (or x9879 x27753)
+:assumption (or x27919 (not x9008))
+:assumption (or (not x4504) (not x9300))
+:assumption (or x19597 x17774)
+:assumption (or x10877 (not x31323))
+:assumption (or x30891 (not x31734) (not x31597))
+:assumption (or x10054 (not x987))
+:assumption (or x3257 x8133)
+:assumption (or (not x22640) (not x16510) (not x918) (not x21815) (not x8961))
+:assumption (or x27671 (not x8002))
+:assumption (or (not x8198) (not x20322))
+:assumption (or x6124 x1393)
+:assumption (or x4946 (not x8002))
+:assumption (or (not x25005) (not x16626))
+:assumption (or x20798 x3782)
+:assumption (or (not x19850) x3150 (not x31829))
+:assumption (or x23639 (not x20524))
+:assumption (or (not x19183) x10247 x21690 x17784)
+:assumption (or (not x30374) (not x14134))
+:assumption (or (not x23675) (not x4051))
+:assumption (or (not x20789) x7838)
+:assumption (or (not x26107) (not x24750))
+:assumption (or (not x16335) x28704)
+:assumption (or x8278 x6029)
+:assumption (or (not x19503) x19992)
+:assumption (or (not x7089) (not x28732) (not x19648) x14588)
+:assumption (or (not x19864) x16313)
+:assumption (or x5440 (not x3804))
+:assumption (or (not x18075) x15621 x1291)
+:assumption (or (not x30276) (not x9008))
+:assumption (or (not x994) x142 x22855 x29771)
+:assumption (or (not x26822) (not x16025))
+:assumption (or (not x30773) (not x12900))
+:assumption (or (not x31820) x27687)
+:assumption (or x6362 (not x16510))
+:assumption (or x27646 (not x21128) x1081 x2308 (not x8382) x28299 x4127 x29075)
+:assumption (or x9742 (not x18028))
+:assumption (or (not x31725) (not x11937))
+:assumption (or (not x7239) x27998 (not x11651))
+:assumption (or x25820 (not x5613) x20873 (not x26660))
+:assumption (or x25893 x21269)
+:assumption (or x250 x24788)
+:assumption (or (not x30856) (not x11874))
+:assumption (or x19080 (not x15868))
+:assumption (or x27866 (not x10381))
+:assumption (or x2494 (not x6271))
+:assumption (or x21298 x27578)
+:assumption (or (not x27068) (not x10599))
+:assumption (or (not x9531) (not x29791) x20585 (not x25011) x28257 (not x2221))
+:assumption (or (not x17935) x18952)
+:assumption (or x9840 (not x10047) x18905 (not x25663) (not x16411))
+:assumption (or x4737 (not x19501))
+:assumption (or x29147 x10275)
+:assumption (or (not x29606) (not x3736) x9206)
+:assumption (or x5609 (not x25105) x13649)
+:assumption (or (not x5859) x1014)
+:assumption (or (not x27297) (not x8496))
+:assumption (or x21293 (not x9764))
+:assumption (or x24756 (not x14791) x9558 x7061 x1924 x249)
+:assumption (or (not x1393) x6581)
+:assumption (or x29959 (not x15708) (not x27423) (not x14024) x30527 (not x10408))
+:assumption (or (not x24722) x24439)
+:assumption (or x20787 x2133)
+:assumption (or (not x28051) (not x2846))
+:assumption (or x25928 (not x6003))
+:assumption (or (not x29516) (not x10169))
+:assumption (or x8244 x10910)
+:assumption (or (not x28869) x30138)
+:assumption (or x24209 (not x23244))
+:assumption (or x26226 (not x14519) x14395)
+:assumption (or (not x28193) x6430)
+:assumption (or x26918 (not x31721))
+:assumption (or (not x18412) x14024)
+:assumption (or x19535 (not x18689))
+:assumption (or (not x11182) x7742)
+:assumption (or (not x19700) (not x31901))
+:assumption (or x10661 (not x3328))
+:assumption (or x5215 (not x30660))
+:assumption (or (not x3186) x31908)
+:assumption (or x7705 (not x2177) (not x25126) x18348)
+:assumption (or (not x5970) (not x30173))
+:assumption (or x19992 (not x18494))
+:assumption (or x30153 x5890)
+:assumption (or (not x21062) (not x20087) x22887 (not x14522) (not x24756))
+:assumption (or x366 (not x7213) (not x30192))
+:assumption (or (not x1234) x26484)
+:assumption (or (not x21173) x10748)
+:assumption (or x6347 (not x9936))
+:assumption (or x14963 (not x8248))
+:assumption (or (not x14312) (not x7545))
+:assumption (or (not x16424) (not x23053))
+:assumption (or (not x1202) x22090)
+:assumption (or x11272 x13679 (not x31772))
+:assumption (or (not x22188) (not x12681))
+:assumption (or x1509 x21105)
+:assumption (or (not x2954) x17065)
+:assumption (or x25080 (not x24290))
+:assumption (or (not x26183) (not x874))
+:assumption (or x25784 x2592 x25606 (not x3264) (not x21917))
+:assumption (or x17199 (not x28862))
+:assumption (or x24770 (not x13622))
+:assumption (or (not x9661) (not x768))
+:assumption (or x9531 (not x9088))
+:assumption (or (not x28835) x15466)
+:assumption (or (not x30255) x3824)
+:assumption (or (not x22528) x11337)
+:assumption (or x25702 (not x12170))
+:assumption (or x28924 (not x8394))
+:assumption (or (not x11543) (not x10420))
+:assumption (or x31656 x26722 (not x23244) x15038 (not x14247) x13518)
+:assumption (or (not x28117) x8601)
+:assumption (or x26990 x4766)
+:assumption (or x29074 x8602)
+:assumption (or x25766 x9662 x13923 (not x21487) x13354 (not x25659) (not x21367) x20552)
+:assumption (or x11978 x28520)
+:assumption (or x1582 x15645)
+:assumption (or x66 (not x4560) (not x28024))
+:assumption (or (not x19338) x3046)
+:assumption (or x9708 x20606)
+:assumption (or (not x31029) x27060)
+:assumption (or (not x11351) x15430)
+:assumption (or (not x629) x11032)
+:assumption (or (not x18777) (not x3419))
+:assumption (or (not x10702) x1657)
+:assumption (or (not x9644) (not x43))
+:assumption (or x24534 (not x11252))
+:assumption (or (not x8154) x636)
+:assumption (or x23989 x2911)
+:assumption (or (not x23299) (not x27881))
+:assumption (or x23289 (not x21275))
+:assumption (or x30311 (not x4018))
+:assumption (or (not x24889) x5393)
+:assumption (or x29145 (not x324))
+:assumption (or x25089 (not x1599))
+:assumption (or x5528 (not x16126))
+:assumption (or (not x5609) (not x19996))
+:assumption (or (not x10967) x21653 x21467)
+:assumption (or x4228 (not x20540))
+:assumption (or x16259 x23065)
+:assumption (or (not x3210) (not x17536))
+:assumption (or (not x9360) (not x4824))
+:assumption (or (not x4939) x25454)
+:assumption (or x10117 (not x15795))
+:assumption (or (not x10899) x9663)
+:assumption (or (not x24084) x4386)
+:assumption (or x30138 x11458 (not x24008) x13207)
+:assumption (or x9448 (not x26819))
+:assumption (or (not x23212) (not x5886))
+:assumption (or (not x27026) x9008)
+:assumption (or x20181 (not x5333))
+:assumption (or (not x20604) (not x13892))
+:assumption (or x29163 (not x2041))
+:assumption (or (not x16479) x21730 (not x19224) x17056)
+:assumption (or x737 x10451)
+:assumption (or (not x2097) (not x12851))
+:assumption (or (not x27185) (not x28542))
+:assumption (or x3999 (not x2973))
+:assumption (or (not x8762) (not x6594) (not x16379) x29959)
+:assumption (or (not x15282) (not x13198))
+:assumption (or (not x26720) (not x20524))
+:assumption (or x7691 x14534)
+:assumption (or (not x3654) (not x21152))
+:assumption (or (not x23363) (not x25384))
+:assumption (or (not x30741) x23958 x1172 (not x4942))
+:assumption (or x16185 x18741)
+:assumption (or (not x3538) (not x18929))
+:assumption (or (not x11703) (not x16067))
+:assumption (or x16003 x26129)
+:assumption (or (not x27999) (not x20285))
+:assumption (or (not x25606) (not x5456))
+:assumption (or (not x13993) x14889)
+:assumption (or x26323 x3722)
+:assumption (or x6866 (not x11081))
+:assumption (or (not x23244) (not x15676))
+:assumption (or (not x7277) x19982)
+:assumption (or (not x306) (not x12495))
+:assumption (or x31085 x1705)
+:assumption (or (not x20625) (not x20924) x28978 x31829 (not x27961))
+:assumption (or x18481 (not x21093))
+:assumption (or (not x14403) x11389)
+:assumption (or (not x23584) (not x12704))
+:assumption (or (not x26419) (not x1393) x15494)
+:assumption (or (not x27657) x14199)
+:assumption (or (not x21614) x2669)
+:assumption (or (not x20603) x3434)
+:assumption (or (not x16141) (not x25950))
+:assumption (or (not x6969) x6700)
+:assumption (or x13618 x19737)
+:assumption (or (not x24768) x7542 x18179 (not x5647) (not x12013))
+:assumption (or (not x4025) x5119)
+:assumption (or x28692 x574)
+:assumption (or x2496 (not x826))
+:assumption (or (not x4679) (not x10219))
+:assumption (or x18054 (not x18401))
+:assumption (or (not x1657) x17276)
+:assumption (or (not x30383) (not x2288) x2278)
+:assumption (or (not x11052) (not x11195))
+:assumption (or x26824 x478 x17033)
+:assumption (or x12593 x15445)
+:assumption (or (not x4555) x25198)
+:assumption (or (not x29881) (not x288))
+:assumption (or x24039 (not x5155) (not x20337) (not x5243) (not x25092) (not x6663) (not x10686) x20660)
+:assumption (or (not x21349) (not x6507))
+:assumption (or x3224 x3046)
+:assumption (or (not x8699) (not x1393) x13814)
+:assumption (or (not x30113) (not x18705) x29702 (not x3163))
+:assumption (or x4651 (not x10171) (not x1287) (not x19634) (not x11484))
+:assumption (or (not x31857) (not x5025))
+:assumption (or x1438 x13947)
+:assumption (or x26897 x18552)
+:assumption (or (not x6488) x29528)
+:assumption (or x5131 (not x26157))
+:assumption (or x5169 x5792)
+:assumption (or (not x2679) (not x10286))
+:assumption (or (not x24498) x31500)
+:assumption (or x17304 (not x12913))
+:assumption (or x8156 x22902)
+:assumption (or x31520 (not x10863))
+:assumption (or (not x19864) x289)
+:assumption (or x687 x14026)
+:assumption (or (not x7854) (not x20900))
+:assumption (or (not x31734) (not x30891) x4865 x25423 (not x2564))
+:assumption (or (not x25494) (not x24545))
+:assumption (or (not x14397) (not x6951))
+:assumption (or (not x16004) x10606)
+:assumption (or (not x30963) (not x10894))
+:assumption (or x30820 x902)
+:assumption (or (not x12095) x25659 x24623)
+:assumption (or (not x11322) (not x5385))
+:assumption (or x17939 x22002)
+:assumption (or x3263 x26074)
+:assumption (or (not x3348) (not x28430))
+:assumption (or (not x12519) x17359)
+:assumption (or (not x23244) x16178)
+:assumption (or x1434 x19682 (not x480) (not x10012))
+:assumption (or (not x11847) x23494)
+:assumption (or (not x31254) (not x8866))
+:assumption (or (not x15917) x11821)
+:assumption (or (not x9334) x14325)
+:assumption (or (not x686) (not x14732))
+:assumption (or x30209 (not x25006))
+:assumption (or (not x19431) (not x12613))
+:assumption (or (not x14473) (not x9713))
+:assumption (or (not x23399) (not x253) x23305)
+:assumption (or x14861 x5004)
+:assumption (or (not x28912) (not x3647))
+:assumption (or x26490 (not x26061))
+:assumption (or x11497 x11174)
+:assumption (or x18251 x8448)
+:assumption (or x27911 (not x13211))
+:assumption (or (not x5846) (not x4196) x8806)
+:assumption (or (not x16612) (not x17400))
+:assumption (or (not x18652) x18180)
+:assumption (or (not x9462) (not x17121))
+:assumption (or (not x16239) (not x24549))
+:assumption (or (not x19990) (not x1132))
+:assumption (or (not x2988) (not x18000))
+:assumption (or (not x31669) x27416)
+:assumption (or (not x1420) (not x22774))
+:assumption (or x1927 (not x9903))
+:assumption (or (not x13023) (not x20377))
+:assumption (or x21955 x5512 x7431 x1259 x16568 x12906)
+:assumption (or x9008 (not x22085))
+:assumption (or x16654 (not x13956) x17016 (not x15183))
+:assumption (or (not x8119) (not x4462))
+:assumption (or x31590 x30656)
+:assumption (or x11809 (not x13477))
+:assumption (or x21636 (not x44))
+:assumption (or x5437 (not x30432))
+:assumption (or (not x9056) (not x20097) x9322 x17606 x24019 (not x19319) (not x21039) x93)
+:assumption (or x1957 (not x3200))
+:assumption (or (not x3029) x21103)
+:assumption (or (not x22924) (not x11580))
+:assumption (or (not x11768) x14811)
+:assumption (or (not x24055) x29871)
+:assumption (or x18152 (not x4291))
+:assumption (or (not x18069) (not x28068) x3494 x3941)
+:assumption (or x8985 x25419)
+:assumption (or x9174 x13986)
+:assumption (or x31134 x24670)
+:assumption (or x26648 (not x24346) x21108)
+:assumption (or (not x1866) (not x7888) (not x203) x25950 (not x12341) (not x28588))
+:assumption (or x15364 x1582)
+:assumption (or (not x3876) (not x2573))
+:assumption (or (not x25387) (not x5081))
+:assumption (or x5447 (not x24274))
+:assumption (or (not x31707) (not x23385) (not x12045))
+:assumption (or (not x10396) x10655 x21347)
+:assumption (or (not x28217) x2268)
+:assumption (or x31538 (not x23237))
+:assumption (or (not x20780) x16510)
+:assumption (or x3453 x19206)
+:assumption (or (not x9025) x8295 x28541)
+:assumption (or x31635 (not x24800))
+:assumption (or (not x20455) x2559)
+:assumption (or x26951 x14556)
+:assumption (or x9901 (not x27524))
+:assumption (or x14591 (not x19469) (not x28512) x15795)
+:assumption (or x26198 x23265)
+:assumption (or (not x25064) x19215 (not x31365) (not x22616))
+:assumption (or (not x4559) x10929)
+:assumption (or (not x10475) x27434)
+:assumption (or (not x8944) (not x27780))
+:assumption (or (not x30208) (not x3295))
+:assumption (or x25847 (not x27585))
+:assumption (or (not x27833) x9930)
+:assumption (or x23917 (not x16003) x26278)
+:assumption (or x24756 (not x14440) (not x14638) (not x20087))
+:assumption (or (not x18547) x27908)
+:assumption (or (not x20740) (not x13452))
+:assumption (or x3453 x19146 x13168 (not x6230) x10149)
+:assumption (or x6843 x24048)
+:assumption (or (not x31261) (not x6955))
+:assumption (or x15007 x27482 x17225 (not x14738))
+:assumption (or (not x13901) x13642)
+:assumption (or (not x14550) x24923)
+:assumption (or x20095 (not x6348))
+:assumption (or x16989 x671)
+:assumption (or (not x9697) (not x16800))
+:assumption (or x25274 (not x14834))
+:assumption (or x8554 (not x16632))
+:assumption (or (not x31452) x31273)
+:assumption (or (not x22337) x11760)
+:assumption (or (not x26432) x16062)
+:assumption (or x11204 x20560)
+:assumption (or (not x2568) x10625 (not x22735) x19138 (not x23677) x31531 (not x21095) x19277 x18900 (not x25892) x4348 (not x16533))
+:assumption (or (not x6732) x29354)
+:assumption (or x20311 x20276 (not x18187))
+:assumption (or x18180 (not x4585))
+:assumption (or (not x4518) (not x31764))
+:assumption (or (not x29027) (not x19977))
+:assumption (or (not x10909) (not x1424))
+:assumption (or x2498 x17017)
+:assumption (or x4570 (not x25181))
+:assumption (or (not x13466) (not x28469))
+:assumption (or x11599 (not x20087))
+:assumption (or (not x12045) x22746)
+:assumption (or (not x14687) x26696)
+:assumption (or (not x14530) x4282)
+:assumption (or (not x18363) x15537 x16807)
+:assumption (or x10269 (not x23244))
+:assumption (or x13956 (not x30901))
+:assumption (or x1124 (not x17699))
+:assumption (or (not x3783) (not x1561))
+:assumption (or (not x28206) x17047)
+:assumption (or x1873 (not x8002))
+:assumption (or x3911 x9008)
+:assumption (or (not x29546) (not x19393))
+:assumption (or (not x561) (not x5718) x3782 (not x20057) (not x5419))
+:assumption (or (not x5840) x9015 (not x9008) (not x8081) (not x5528))
+:assumption (or (not x3692) x17442)
+:assumption (or x19301 (not x27649))
+:assumption (or x8682 x8348)
+:assumption (or x24156 (not x14027))
+:assumption (or (not x7200) (not x15227) (not x1079))
+:assumption (or x16025 x10064 (not x14235))
+:assumption (or (not x88) (not x10141))
+:assumption (or (not x288) (not x31736))
+:assumption (or x4933 x16304)
+:assumption (or (not x14786) x18050)
+:assumption (or (not x30999) x9394)
+:assumption (or (not x9064) (not x30135) x20248 (not x9058) x15753)
+:assumption (or x8929 x16192)
+:assumption (or x31306 x2018)
+:assumption (or x29583 (not x20955))
+:assumption (or (not x28977) x14122)
+:assumption (or x13089 x23244)
+:assumption (or x4707 x2221)
+:assumption (or x20087 (not x13571))
+:assumption (or (not x28114) x16287)
+:assumption (or x7617 x18110)
+:assumption (or x3703 x28571)
+:assumption (or (not x16428) x16369)
+:assumption (or (not x16745) (not x11100))
+:assumption (or x6993 (not x9108))
+:assumption (or (not x13644) x23633)
+:assumption (or (not x7099) (not x9780))
+:assumption (or (not x27537) (not x29672))
+:assumption (or (not x12723) x22320 x2446)
+:assumption (or x2592 (not x25872))
+:assumption (or x9309 (not x22825))
+:assumption (or (not x31552) (not x13593))
+:assumption (or x7010 x16678)
+:assumption (or x4283 (not x9399))
+:assumption (or x11210 x16835 x9329 (not x3371))
+:assumption (or (not x9189) (not x29879))
+:assumption (or x19084 (not x24195))
+:assumption (or x7258 x11800)
+:assumption (or (not x26386) (not x12543))
+:assumption (or (not x6087) x446)
+:assumption (or (not x28603) (not x6909))
+:assumption (or (not x25487) x9597)
+:assumption (or (not x23087) (not x15830) (not x18326) (not x30812) (not x6324))
+:assumption (or (not x7301) x5103)
+:assumption (or (not x5134) x28641 x23321 x15853 x14918)
+:assumption (or x14171 x14455)
+:assumption (or (not x15242) (not x2548))
+:assumption (or (not x15109) x10308)
+:assumption (or (not x14740) (not x23951))
+:assumption (or (not x5358) (not x10284))
+:assumption (or x5772 x11482)
+:assumption (or x1129 (not x21874))
+:assumption (or x10587 x15795 x13925 (not x14591))
+:assumption (or (not x27059) (not x7014))
+:assumption (or x8002 x26862 (not x4994) (not x9874) (not x13426) x28099)
+:assumption (or x24781 x8387)
+:assumption (or (not x28849) x15917)
+:assumption (or (not x19604) x30443 (not x5435) x7031 (not x27515) x26283 x16907 x30392 (not x8512))
+:assumption (or (not x10433) x7028)
+:assumption (or (not x25291) (not x26897))
+:assumption (or x11177 x5991)
+:assumption (or x28829 (not x2996))
+:assumption (or (not x8002) x20846)
+:assumption (or (not x2557) (not x26433))
+:assumption (or (not x10624) (not x14809))
+:assumption (or (not x30686) (not x6677) x11856 (not x24877) x28645 x1433)
+:assumption (or (not x14851) (not x21070))
+:assumption (or x26824 x1044 (not x4296) x28213 (not x20881) x4906)
+:assumption (or (not x12115) (not x29953) x6984 (not x25139))
+:assumption (or x15861 (not x22930) (not x6664) x31767)
+:assumption (or x17941 (not x18760))
+:assumption (or x15544 x8002)
+:assumption (or (not x2166) x24148)
+:assumption (or x14308 x14839 (not x12873) x5702)
+:assumption (or (not x9800) (not x23684))
+:assumption (or (not x17860) x14358)
+:assumption (or (not x19342) (not x6876))
+:assumption (or (not x22796) (not x30882))
+:assumption (or (not x5671) (not x11603))
+:assumption (or x30949 x27360)
+:assumption (or x15141 x13601 (not x6969))
+:assumption (or (not x24595) x11754 x19136 x15135)
+:assumption (or (not x276) (not x15086))
+:assumption (or x9978 (not x31240))
+:assumption (or x6750 (not x22620))
+:assumption (or (not x29649) (not x13412) (not x9009) (not x18919) (not x21676))
+:assumption (or (not x16174) (not x8935))
+:assumption (or (not x7751) x21756)
+:assumption (or x8002 x1130 (not x21373) x23244)
+:assumption (or x16567 (not x15210))
+:assumption (or x13576 (not x23100) (not x16117))
+:assumption (or (not x14172) x16605)
+:assumption (or x187 (not x25635))
+:assumption (or (not x17007) x27999)
+:assumption (or x29099 (not x9925))
+:assumption (or (not x21991) (not x29934))
+:assumption (or (not x3735) x21427)
+:assumption (or (not x26907) (not x21661))
+:assumption (or (not x4229) x26013)
+:assumption (or (not x9948) (not x2478) x1975 (not x28060))
+:assumption (or x30092 x3856)
+:assumption (or (not x26227) (not x14262))
+:assumption (or (not x28457) x22722)
+:assumption (or (not x1172) x30741)
+:assumption (or x3774 (not x8002))
+:assumption (or (not x29133) (not x13912))
+:assumption (or x9025 (not x30853))
+:assumption (or (not x20192) (not x23507))
+:assumption (or (not x15167) x26191)
+:assumption (or (not x9253) (not x6211))
+:assumption (or x29159 x3810)
+:assumption (or x3612 (not x17302))
+:assumption (or (not x11865) (not x5927))
+:assumption (or x24369 x19587)
+:assumption (or (not x31477) x16455)
+:assumption (or x2204 (not x7542) (not x3357))
+:assumption (or x31192 (not x8002) (not x23244) (not x4362))
+:assumption (or x12817 (not x18707))
+:assumption (or x655 x19909)
+:assumption (or x27775 x19777)
+:assumption (or (not x7180) x21222)
+:assumption (or x18721 x29058)
+:assumption (or x24632 x20692)
+:assumption (or x20325 x22066)
+:assumption (or x4430 (not x28885) x30328 x29312)
+:assumption (or x30341 (not x21197))
+:assumption (or (not x28952) x9775)
+:assumption (or x5176 x4731)
+:assumption (or x29001 (not x3118) x8602)
+:assumption (or x27871 x28364)
+:assumption (or x20393 (not x29949))
+:assumption (or x8515 (not x26779))
+:assumption (or x2274 x13479)
+:assumption (or x25092 x5243)
+:assumption (or x23867 x906)
+:assumption (or x6969 (not x8697) x29804)
+:assumption (or (not x30119) x29959 x6594 x17334)
+:assumption (or x12317 (not x25611) x12646 (not x20782))
+:assumption (or (not x28864) (not x31333))
+:assumption (or (not x5025) (not x17792) (not x11240))
+:assumption (or x721 (not x21882))
+:assumption (or x16768 (not x15915))
+:assumption (or (not x16117) (not x25695))
+:assumption (or x8757 x29581)
+:assumption (or (not x31310) x19056 x7643)
+:assumption (or x10513 x10891)
+:assumption (or x29784 (not x28366))
+:assumption (or x26385 x4170)
+:assumption (or (not x24748) (not x7027))
+:assumption (or (not x19914) x6351)
+:assumption (or x6032 (not x20724))
+:assumption (or x30397 x19767 x13771 (not x430) x23244)
+:assumption (or x24151 (not x10874) x6307)
+:assumption (or x22851 (not x24906) x980)
+:assumption (or x29472 x2014)
+:assumption (or (not x18672) (not x1329) (not x24825))
+:assumption (or x11384 (not x27341))
+:assumption (or (not x14604) (not x19286))
+:assumption (or (not x4833) (not x13728))
+:assumption (or x11972 (not x14212) (not x9008))
+:assumption (or (not x31062) x9008 x20412)
+:assumption (or x13036 (not x16386))
+:assumption (or x11797 x13428 x5790 (not x27969))
+:assumption (or x29151 x5074)
+:assumption (or (not x2592) x25784 (not x24952) (not x16272) (not x21690))
+:assumption (or x2522 x23439)
+:assumption (or (not x19837) x12907)
+:assumption (or x26897 (not x26357) x10909 x13273)
+:assumption (or x15510 x25869)
+:assumption (or (not x17502) x7004)
+:assumption (or (not x30759) x1790)
+:assumption (or (not x17253) x3671)
+:assumption (or (not x24975) x218)
+:assumption (or x6272 x23267 (not x9008))
+:assumption (or (not x29959) x17000)
+:assumption (or (not x9774) x1760)
+:assumption (or x13536 (not x28154))
+:assumption (or (not x22429) x28616)
+:assumption (or (not x23244) (not x7537) x29838)
+:assumption (or x16888 (not x9118))
+:assumption (or x10548 x28912)
+:assumption (or (not x23958) (not x20486) (not x22644))
+:assumption (or (not x10011) x20092)
+:assumption (or (not x20099) (not x14293) (not x16173) (not x821) x16418 (not x5734) (not x18022) (not x19013))
+:assumption (or (not x14828) x16909)
+:assumption (or (not x7075) (not x27424))
+:assumption (or x4964 x288)
+:assumption (or (not x25516) x3546)
+:assumption (or x14855 (not x6562))
+:assumption (or x1995 (not x6861))
+:assumption (or (not x20885) (not x27642))
+:assumption (or (not x3195) x9748)
+:assumption (or (not x12353) (not x13405) (not x964))
+:assumption (or x15762 x26104)
+:assumption (or (not x29197) (not x18814))
+:assumption (or (not x11762) (not x21839))
+:assumption (or x22269 x18934 x24184 x15795 x24816)
+:assumption (or x7431 x1259 x12906 x5512 x20201 (not x2861))
+:assumption (or x10566 (not x9008) x12639)
+:assumption (or (not x27304) (not x7232))
+:assumption (or x28427 (not x20490))
+:assumption (or x18416 x25392)
+:assumption (or (not x1729) x14435)
+:assumption (or x31672 x22361)
+:assumption (or x3517 (not x917))
+:assumption (or x15241 x2053)
+:assumption (or x6100 (not x18188))
+:assumption (or (not x8919) (not x17754))
+:assumption (or x6727 x24548)
+:assumption (or x9683 (not x5376))
+:assumption (or (not x5542) x10874)
+:assumption (or (not x16510) (not x15128))
+:assumption (or x27073 x19968)
+:assumption (or (not x11824) (not x8213))
+:assumption (or x9891 (not x31484) x21319 (not x3795) (not x11876))
+:assumption (or (not x25378) x27185)
+:assumption (or (not x12220) x23244)
+:assumption (or x19905 (not x29538))
+:assumption (or (not x3150) x25652)
+:assumption (or x14848 x26151)
+:assumption (or (not x8265) (not x14280))
+:assumption (or x23872 (not x16986))
+:assumption (or (not x17775) (not x24079))
+:assumption (or (not x27952) x17427)
+:assumption (or x14003 (not x25008) (not x14976) x19006)
+:assumption (or (not x11664) x10203)
+:assumption (or (not x9913) x762)
+:assumption (or (not x27589) (not x30978))
+:assumption (or (not x25010) (not x10745))
+:assumption (or x7266 (not x27801))
+:assumption (or (not x5673) x13848)
+:assumption (or x16802 x13530 x10325)
+:assumption (or (not x31531) x3931)
+:assumption (or x8025 (not x4996))
+:assumption (or x2756 x6991)
+:assumption (or x20994 (not x17042))
+:assumption (or (not x27344) x7854)
+:assumption (or (not x9422) x22295)
+:assumption (or (not x22488) (not x18833))
+:assumption (or x8870 (not x16115))
+:assumption (or (not x18938) x13527)
+:assumption (or x28161 x13066 (not x29641))
+:assumption (or x1165 (not x6127))
+:assumption (or (not x25866) x26860)
+:assumption (or (not x13080) (not x7662))
+:assumption (or (not x31778) x11837)
+:assumption (or (not x14434) x28666)
+:assumption (or (not x10988) x4626)
+:assumption (or x5982 (not x24272))
+:assumption (or x25183 x10928)
+:assumption (or (not x16352) x26356)
+:assumption (or (not x11858) x11241)
+:assumption (or x17938 x24007)
+:assumption (or (not x9925) (not x17935))
+:assumption (or (not x21298) x10263)
+:assumption (or x26443 (not x4528))
+:assumption (or x16127 x5062)
+:assumption (or x1601 x29059)
+:assumption (or (not x11375) (not x27501))
+:assumption (or x5678 (not x19039))
+:assumption (or (not x9231) (not x6110) (not x2122) (not x20403) (not x4284) x15897 x6447 x16611)
+:assumption (or x7252 x25396)
+:assumption (or (not x15659) x27059 (not x20540))
+:assumption (or (not x8002) (not x15968))
+:assumption (or x9504 x29617)
+:assumption (or x4171 (not x20651))
+:assumption (or (not x6844) (not x30312))
+:assumption (or x16117 x3998)
+:assumption (or x9466 (not x27821) x13956)
+:assumption (or (not x11797) x27969)
+:assumption (or (not x18601) (not x9224))
+:assumption (or x15499 (not x12914))
+:assumption (or (not x7463) x31879)
+:assumption (or x13223 x11006)
+:assumption (or (not x14839) x29936)
+:assumption (or (not x8580) x17070)
+:assumption (or x4080 (not x29650))
+:assumption (or x23717 x31257)
+:assumption (or x22143 x16329)
+:assumption (or x1109 (not x17107))
+:assumption (or x13864 x24720)
+:assumption (or x19775 (not x8126))
+:assumption (or (not x27793) (not x11780))
+:assumption (or (not x2201) x5782)
+:assumption (or x4488 x12110)
+:assumption (or (not x31111) (not x9805))
+:assumption (or x2292 x20482)
+:assumption (or (not x5964) x17956)
+:assumption (or x23581 (not x11220))
+:assumption (or (not x950) (not x8958))
+:assumption (or (not x24865) (not x24104))
+:assumption (or x6402 (not x27798))
+:assumption (or (not x31873) (not x999))
+:assumption (or (not x8002) x8316)
+:assumption (or (not x24604) x13584)
+:assumption (or x1939 (not x16578))
+:assumption (or (not x23532) x11504)
+:assumption (or (not x23164) x5528)
+:assumption (or (not x22855) x8185)
+:assumption (or x20929 (not x13830))
+:assumption (or x9790 (not x10999))
+:assumption (or (not x9139) (not x31487))
+:assumption (or x14477 (not x11978))
+:assumption (or x26104 (not x28419))
+:assumption (or (not x762) x18394)
+:assumption (or x13124 (not x23173))
+:assumption (or (not x28156) (not x10668))
+:assumption (or x31098 (not x20689) x4426 (not x13232))
+:assumption (or (not x20993) (not x21026))
+:assumption (or (not x26537) (not x9473))
+:assumption (or x13940 x518)
+:assumption (or (not x26381) (not x26894))
+:assumption (or (not x31181) x14802)
+:assumption (or (not x4072) (not x2133) (not x5481))
+:assumption (or (not x31526) x10394)
+:assumption (or x12242 (not x14025))
+:assumption (or (not x26381) x20920)
+:assumption (or x7048 (not x21925))
+:assumption (or x28911 x25860)
+:assumption (or x21744 x9733 (not x28494) x14267 (not x1608))
+:assumption (or x10495 (not x29220) (not x29300) x8296)
+:assumption (or (not x19054) x7719)
+:assumption (or (not x17595) x20565)
+:assumption (or x28708 (not x30180))
+:assumption (or x23749 x20620)
+:assumption (or (not x26488) (not x15715))
+:assumption (or (not x18274) x12511)
+:assumption (or (not x26439) x17051)
+:assumption (or (not x15668) x26142)
+:assumption (or x9008 (not x30693))
+:assumption (or (not x1582) x14581)
+:assumption (or (not x11812) (not x22033))
+:assumption (or x23770 x21537 x24094)
+:assumption (or x23195 x25659)
+:assumption (or x1331 x28736)
+:assumption (or (not x31149) (not x30764))
+:assumption (or (not x361) (not x23982))
+:assumption (or x142 x19010)
+:assumption (or x13274 x21298)
+:assumption (or x29772 (not x13956) x27745 (not x805))
+:assumption (or x8118 (not x8704) x9545)
+:assumption (or (not x27816) x29390 x31083)
+:assumption (or x21243 (not x22886))
+:assumption (or x21323 x26142)
+:assumption (or x13603 x13548)
+:assumption (or x19948 x24452 (not x18814))
+:assumption (or x15866 x3635)
+:assumption (or (not x881) x18190)
+:assumption (or (not x6431) x2644)
+:assumption (or x2791 x9397)
+:assumption (or (not x29959) (not x15475))
+:assumption (or x27218 x2783)
+:assumption (or x16947 x1783)
+:assumption (or (not x29606) (not x18347))
+:assumption (or x2059 x15099)
+:assumption (or (not x31718) x7587)
+:assumption (or x26638 (not x21450) (not x19064))
+:assumption (or x29613 x21063)
+:assumption (or (not x24704) (not x17860))
+:assumption (or (not x28184) x25896)
+:assumption (or x17690 (not x18948))
+:assumption (or x30281 (not x15032))
+:assumption (or x12108 (not x31420))
+:assumption (or x5253 x25950)
+:assumption (or x24924 x31265)
+:assumption (or x16193 (not x12624))
+:assumption (or (not x29946) x29586)
+:assumption (or x12823 x17695)
+:assumption (or x14142 (not x24952))
+:assumption (or x31848 x8069)
+:assumption (or (not x9008) x26704)
+:assumption (or (not x25265) (not x44))
+:assumption (or (not x29513) x21653 (not x10237))
+:assumption (or x412 x4950)
+:assumption (or x15861 x19456 x8461)
+:assumption (or (not x29559) (not x21298) x18791)
+:assumption (or x18942 (not x13197))
+:assumption (or (not x4053) (not x18988))
+:assumption (or (not x20995) (not x19062) (not x16025))
+:assumption (or (not x6270) (not x28693))
+:assumption (or (not x22723) (not x7723))
+:assumption (or (not x2574) x19494)
+:assumption (or x21298 (not x15940))
+:assumption (or (not x11343) (not x31818))
+:assumption (or (not x23531) (not x13544) (not x27656) (not x18057))
+:assumption (or x23214 x15652)
+:assumption (or (not x1393) (not x2576) x14633)
+:assumption (or x3746 x6365)
+:assumption (or (not x15162) x16384)
+:assumption (or x10804 x12519 (not x17359) x11281)
+:assumption (or x16907 x14615)
+:assumption (or x27376 (not x29727))
+:assumption (or x17831 (not x8724) (not x13956))
+:assumption (or (not x20122) (not x19949))
+:assumption (or x26899 x29358 (not x29845))
+:assumption (or x26130 (not x6635))
+:assumption (or x14319 (not x29293))
+:assumption (or (not x844) (not x8002))
+:assumption (or x7526 x14206)
+:assumption (or x7003 x4204)
+:assumption (or (not x26306) (not x11058))
+:assumption (or x11633 x22720 (not x12541) x29610 x15614 x21815)
+:assumption (or x2560 (not x30214))
+:assumption (or (not x12577) (not x22276))
+:assumption (or x13671 x7308 x14586 x18290 (not x27918) (not x30793))
+:assumption (or (not x24756) x28486)
+:assumption (or x3816 x9769)
+:assumption (or x527 x5367 (not x4938))
+:assumption (or x8120 x14956)
+:assumption (or x16297 x9821 (not x587) x10010 (not x21618) x13384)
+:assumption (or (not x3601) (not x8309))
+:assumption (or x3001 (not x1720))
+:assumption (or x31744 (not x976))
+:assumption (or x5611 x5440)
+:assumption (or (not x21997) (not x14048) (not x8574))
+:assumption (or (not x14228) x618)
+:assumption (or x24661 (not x23358))
+:assumption (or (not x29595) (not x29631))
+:assumption (or x16247 x29111)
+:assumption (or (not x21712) (not x20360))
+:assumption (or x1265 x24846)
+:assumption (or x20442 (not x17299))
+:assumption (or x4885 (not x31777))
+:assumption (or (not x16979) (not x13952))
+:assumption (or x26171 (not x29553))
+:assumption (or (not x18665) x21298)
+:assumption (or (not x18476) (not x22265))
+:assumption (or (not x9662) (not x26606))
+:assumption (or (not x20183) x6077)
+:assumption (or x964 (not x16627))
+:assumption (or (not x26509) (not x31437))
+:assumption (or x15609 x6350)
+:assumption (or (not x20010) (not x15273))
+:assumption (or x12632 x16868 (not x23945) x13217 (not x8107))
+:assumption (or (not x28793) (not x9187))
+:assumption (or (not x8979) (not x11247))
+:assumption (or x3959 (not x15366))
+:assumption (or x24141 x2145)
+:assumption (or (not x26508) x27228)
+:assumption (or (not x16395) (not x17505))
+:assumption (or x16895 (not x9719))
+:assumption (or x15146 (not x30667) (not x434) (not x22696))
+:assumption (or (not x11845) x31809)
+:assumption (or x22720 x11633 (not x12541) x13374 x29610 x16741)
+:assumption (or x20547 x23729)
+:assumption (or (not x10520) (not x3038) x22251 (not x6192))
+:assumption (or x14754 x28962)
+:assumption (or x27412 x20091)
+:assumption (or x4384 x6018 x11466 (not x12706))
+:assumption (or x14359 (not x4637))
+:assumption (or x5642 (not x13825))
+:assumption (or (not x24504) x16912 (not x25339))
+:assumption (or (not x668) x3150 (not x7547))
+:assumption (or x5019 x20876)
+:assumption (or (not x5939) x12670)
+:assumption (or x29057 x2839 x12684)
+:assumption (or (not x23328) (not x24544) (not x16025))
+:assumption (or (not x6169) x23601 x24289 (not x6831) (not x7422) (not x7512) x23884 x23315)
+:assumption (or x8002 x3310 (not x17491))
+:assumption (or (not x31018) (not x11052))
+:assumption (or x30029 x25822)
+:assumption (or x30224 (not x1700))
+:assumption (or (not x15525) (not x3545))
+:assumption (or x3441 x7741)
+:assumption (or x8565 (not x31513))
+:assumption (or (not x23162) (not x7082) x31620 (not x29414))
+:assumption (or (not x21639) x11489)
+:assumption (or (not x20402) (not x20567))
+:assumption (or (not x16510) x19873)
+:assumption (or x16233 (not x11484))
+:assumption (or x17456 (not x10874) x28242)
+:assumption (or x27226 x13601)
+:assumption (or (not x14962) x12888)
+:assumption (or x18771 x8825)
+:assumption (or x22121 x22187)
+:assumption (or x26749 x9989)
+:assumption (or x156 x2919)
+:assumption (or x12261 x11783 x341)
+:assumption (or x17017 (not x16863))
+:assumption (or x30240 x60)
+:assumption (or (not x27844) (not x22394))
+:assumption (or x9731 (not x22739))
+:assumption (or (not x30751) (not x19737) (not x22360))
+:assumption (or x30364 (not x7446))
+:assumption (or x26215 x21382 (not x1639) x8602 x28680 (not x23556) x27220 (not x16937))
+:assumption (or x8030 x27421 x4809)
+:assumption (or x19171 x12918)
+:assumption (or (not x28393) (not x27757) (not x24855) x8063 (not x22326) (not x14885) (not x28854) x13429 x10125 x20748)
+:assumption (or (not x6910) (not x11147) (not x3984) x30803 x18561)
+:assumption (or (not x20503) (not x3757))
+:assumption (or (not x9865) (not x22534) (not x21653))
+:assumption (or x6515 x6112)
+:assumption (or x15023 (not x24896))
+:assumption (or x14120 (not x19619))
+:assumption (or x17765 (not x30565) x20052 (not x15924) x22569 x31615)
+:assumption (or x18362 (not x3054))
+:assumption (or x385 (not x8002) (not x23516) (not x17930))
+:assumption (or x17620 (not x12153))
+:assumption (or (not x31076) x13576 (not x30602) x9531)
+:assumption (or x881 x8965)
+:assumption (or x1003 (not x22881))
+:assumption (or (not x609) (not x23532))
+:assumption (or x16745 (not x30928) (not x26570) x26627)
+:assumption (or x8002 (not x21991) x28221)
+:assumption (or x16317 x14879)
+:assumption (or x13287 x4143)
+:assumption (or (not x12102) (not x16651))
+:assumption (or (not x31839) x5528)
+:assumption (or (not x3163) (not x18705) (not x21298) x26122)
+:assumption (or x28907 (not x6192))
+:assumption (or (not x26861) x10587 x4179)
+:assumption (or (not x4672) (not x29442) x2426)
+:assumption (or (not x12942) x28197)
+:assumption (or x4002 (not x8367))
+:assumption (or (not x27783) (not x28001))
+:assumption (or x29497 x4901 (not x3012) x25642)
+:assumption (or x13201 (not x15336))
+:assumption (or (not x24554) x14047)
+:assumption (or (not x20323) (not x6496) x24826)
+:assumption (or x9760 (not x20201))
+:assumption (or (not x3782) (not x8066))
+:assumption (or (not x2317) (not x7184))
+:assumption (or (not x6802) x30288)
+:assumption (or (not x1529) (not x22052))
+:assumption (or (not x1091) (not x20350))
+:assumption (or x30327 x16609)
+:assumption (or (not x8650) x30901)
+:assumption (or x29916 x2743)
+:assumption (or (not x29793) x7374)
+:assumption (or x25434 x10413)
+:assumption (or (not x21966) x2692 x24756)
+:assumption (or x14034 (not x13782))
+:assumption (or x11343 (not x13784))
+:assumption (or (not x8658) (not x23968) (not x30627) x12668)
+:assumption (or x1970 x23602)
+:assumption (or x5275 (not x10200))
+:assumption (or x7790 (not x18802))
+:assumption (or (not x20961) (not x24704))
+:assumption (or (not x31912) (not x586))
+:assumption (or (not x21592) x9834)
+:assumption (or (not x24722) x2896 (not x21955))
+:assumption (or x936 x2627)
+:assumption (or x5528 x26237)
+:assumption (or (not x25550) x30138)
+:assumption (or (not x11810) (not x29514))
+:assumption (or (not x31450) x5284 (not x27184))
+:assumption (or x31646 (not x2943))
+:assumption (or x24607 (not x19630) (not x10826) x4756 x23885)
+:assumption (or x27059 (not x28708) x7014)
+:assumption (or x28017 (not x19766))
+:assumption (or (not x23976) x31161)
+:assumption (or (not x4011) (not x24811))
+:assumption (or x24648 (not x3449))
+:assumption (or x16600 x7985 (not x14819) x12031)
+:assumption (or x2746 (not x30407))
+:assumption (or (not x7725) x20620)
+:assumption (or x23244 x7390 (not x22855))
+:assumption (or x25004 (not x8349))
+:assumption (or (not x21513) (not x21050))
+:assumption (or (not x2278) x11138)
+:assumption (or x7645 x22281)
+:assumption (or (not x4552) (not x18701))
+:assumption (or (not x11089) x21801)
+:assumption (or (not x5528) x7523)
+:assumption (or x25217 (not x8770))
+:assumption (or x14687 x5530)
+:assumption (or x30138 x31383)
+:assumption (or x9313 x3564)
+:assumption (or (not x13855) (not x21145))
+:assumption (or x26954 (not x6058))
+:assumption (or x24267 (not x10149))
+:assumption (or (not x29497) (not x5324))
+:assumption (or (not x10071) (not x25301))
+:assumption (or (not x15732) x16696)
+:assumption (or x23947 x31734 (not x2500) (not x22400))
+:assumption (or x17186 (not x23202))
+:assumption (or (not x3698) x7843)
+:assumption (or (not x13416) x30770 (not x20321) (not x16332) x24052)
+:assumption (or (not x16631) (not x22318) (not x11307))
+:assumption (or (not x8002) x4743)
+:assumption (or x6149 x6362)
+:assumption (or (not x14502) x28656)
+:assumption (or (not x14327) x25606 x28998)
+:assumption (or x11612 x27968 x25659)
+:assumption (or x18031 (not x19292))
+:assumption (or (not x23244) x22029)
+:assumption (or (not x28794) (not x5791))
+:assumption (or x6025 (not x18859) (not x21959))
+:assumption (or (not x20042) (not x9560))
+:assumption (or x27981 (not x12975))
+:assumption (or x7417 (not x26728))
+:assumption (or (not x19155) x23406)
+:assumption (or x22707 (not x30450))
+:assumption (or (not x11731) (not x4225) x5444 x11689)
+:assumption (or (not x28133) (not x13639))
+:assumption (or (not x31767) (not x5088))
+:assumption (or (not x30366) x25094)
+:assumption (or (not x4542) (not x30544))
+:assumption (or (not x6351) (not x9153))
+:assumption (or (not x20921) x16173)
+:assumption (or (not x13077) x22407)
+:assumption (or x12664 (not x25872))
+:assumption (or (not x8632) (not x17707))
+:assumption (or (not x20525) x1213)
+:assumption (or x31932 (not x19831))
+:assumption (or (not x2917) (not x4230))
+:assumption (or (not x21359) (not x25145) (not x14696))
+:assumption (or (not x7556) x5528)
+:assumption (or x26474 x14421 x20782 (not x2022))
+:assumption (or x10797 (not x4676))
+:assumption (or (not x13640) (not x28038))
+:assumption (or x21432 (not x29914) x5964 (not x31774) x9917 x31622 (not x8311) x23974 (not x27922))
+:assumption (or (not x27028) x24624)
+:assumption (or x22505 (not x19042) x19992 (not x28951))
+:assumption (or (not x3324) (not x18433))
+:assumption (or x10290 x13018 x29492 (not x24392) (not x1954))
+:assumption (or x28005 x31134)
+:assumption (or (not x5583) x3767)
+:assumption (or (not x516) (not x7654))
+:assumption (or x30772 (not x20949))
+:assumption (or x19251 x9755 (not x21026))
+:assumption (or (not x12242) x26957)
+:assumption (or (not x17958) x20202)
+:assumption (or x29766 x23773)
+:assumption (or x635 x12625)
+:assumption (or (not x2438) (not x1209) (not x16839) (not x1284) (not x20231))
+:assumption (or (not x11458) (not x18653))
+:assumption (or (not x17303) (not x26647) (not x19992))
+:assumption (or (not x19853) (not x14324))
+:assumption (or x23499 x12278)
+:assumption (or x1919 (not x3316))
+:assumption (or x31805 x28847)
+:assumption (or x4613 x26470)
+:assumption (or x5499 (not x22981) x14118)
+:assumption (or x21472 (not x26107))
+:assumption (or (not x3960) x15799)
+:assumption (or x6149 (not x12430))
+:assumption (or (not x11207) (not x15334))
+:assumption (or x19844 x13956)
+:assumption (or (not x20060) x25564)
+:assumption (or x23082 x22276)
+:assumption (or (not x24874) x5528 (not x9790))
+:assumption (or (not x2244) (not x19304))
+:assumption (or x24455 (not x23717))
+:assumption (or x23577 (not x10246))
+:assumption (or (not x1580) (not x18042) (not x1906))
+:assumption (or (not x30113) (not x17081))
+:assumption (or (not x28333) x29212)
+:assumption (or (not x4865) x10001)
+:assumption (or x5242 (not x13918) x17080 x26910 (not x12407) x30200 x18911 (not x506) x29327)
+:assumption (or x27866 (not x8460))
+:assumption (or (not x31581) x29943)
+:assumption (or (not x29470) (not x12324))
+:assumption (or (not x1179) x11712)
+:assumption (or (not x6594) (not x17534) x28130 (not x19311))
+:assumption (or x18685 (not x23244))
+:assumption (or (not x14589) x10627)
+:assumption (or (not x1702) (not x14053) (not x26076))
+:assumption (or x4559 (not x1431))
+:assumption (or x11668 (not x28228) (not x16199) (not x9031) (not x29201) x16649 (not x18482) x21531)
+:assumption (or x15743 x26580 x2334)
+:assumption (or x18088 (not x3267))
+:assumption (or (not x5917) (not x16510))
+:assumption (or (not x20432) (not x14523))
+:assumption (or x26196 (not x3224))
+:assumption (or x19134 (not x19024) (not x7558) x14693 (not x13700))
+:assumption (or x21348 (not x23244))
+:assumption (or (not x23244) (not x27436))
+:assumption (or (not x636) x8154)
+:assumption (or (not x22680) (not x29312))
+:assumption (or x16989 x10323)
+:assumption (or x30878 x8667 x17935 (not x24820) x9925)
+:assumption (or (not x279) x22987)
+:assumption (or (not x22680) x25224)
+:assumption (or (not x2041) x15940)
+:assumption (or x15005 (not x13770))
+:assumption (or (not x23407) x7153)
+:assumption (or (not x22154) (not x25264))
+:assumption (or x30234 x30785)
+:assumption (or (not x12351) x4336)
+:assumption (or (not x4459) (not x30710))
+:assumption (or (not x964) x26670 (not x9407) x1860)
+:assumption (or (not x30928) x30638 x16745 x1827)
+:assumption (or x142 x18554)
+:assumption (or (not x20299) (not x30106))
+:assumption (or (not x20720) x12923)
+:assumption (or (not x29333) x17158)
+:assumption (or (not x22513) (not x12798))
+:assumption (or (not x5324) (not x22034))
+:assumption (or (not x1944) (not x5689) x378 (not x665) x23928)
+:assumption (or x6389 x26851)
+:assumption (or x9647 (not x15508))
+:assumption (or (not x2127) x17787)
+:assumption (or (not x10652) (not x28973) (not x21797))
+:assumption (or (not x5380) (not x26892))
+:assumption (or (not x10393) (not x13674) (not x15466) x28835 (not x1643) x3377)
+:assumption (or (not x21964) (not x14077))
+:assumption (or (not x4658) (not x7514) x21574)
+:assumption (or (not x16353) (not x29022) x12645 x25589 (not x14476) (not x20769) x15649)
+:assumption (or (not x2036) x12683)
+:assumption (or x18235 x23183)
+:assumption (or x26384 (not x2783))
+:assumption (or x5767 (not x4696))
+:assumption (or (not x22756) (not x3532))
+:assumption (or x16806 (not x15738))
+:assumption (or (not x18859) (not x25041))
+:assumption (or x3105 (not x13981))
+:assumption (or x20262 (not x3541) x30954 x4257 (not x4270) (not x9289))
+:assumption (or x1643 (not x2603))
+:assumption (or (not x5702) (not x7724))
+:assumption (or (not x7372) x27090 x169 (not x964))
+:assumption (or (not x7874) x16413)
+:assumption (or (not x18370) (not x1552) (not x23725) (not x25523) (not x31884) (not x27864))
+:assumption (or (not x4345) (not x27245) x15836)
+:assumption (or x6730 x3782)
+:assumption (or x10691 (not x25656))
+:assumption (or x1281 x6942)
+:assumption (or x6310 (not x551))
+:assumption (or x429 x1552)
+:assumption (or (not x2724) (not x10882))
+:assumption (or x27149 x19528)
+:assumption (or (not x9008) x30000 (not x2034))
+:assumption (or x1196 x9367)
+:assumption (or (not x26835) x10680)
+:assumption (or (not x10041) x4829)
+:assumption (or x25366 (not x25189))
+:assumption (or x2742 x30597)
+:assumption (or (not x18979) x17693)
+:assumption (or x10597 x23899)
+:assumption (or x9781 (not x12152))
+:assumption (or x22675 (not x18801) x28242 x16587)
+:assumption (or x9594 (not x13161) (not x8268) (not x7286) (not x14687))
+:assumption (or (not x20949) x30223)
+:assumption (or x26810 (not x20054))
+:assumption (or x25433 x29501)
+:assumption (or (not x13608) (not x6725))
+:assumption (or (not x26936) (not x11098))
+:assumption (or (not x5508) (not x22250) (not x2928) x30100 (not x8625))
+:assumption (or (not x667) x11063)
+:assumption (or x18423 (not x16871))
+:assumption (or (not x6133) x11925)
+:assumption (or x11694 x7748 x18064 x17014)
+:assumption (or (not x6962) (not x3182))
+:assumption (or (not x5715) x22098)
+:assumption (or x5846 (not x9634))
+:assumption (or (not x26502) (not x202))
+:assumption (or (not x6366) x6646)
+:assumption (or x16590 x12115)
+:assumption (or (not x18502) x19382)
+:assumption (or (not x29136) (not x8947) x25802 (not x16510) (not x28625) (not x11795))
+:assumption (or (not x30270) (not x11489))
+:assumption (or (not x20063) (not x28886))
+:assumption (or x24260 x31339)
+:assumption (or (not x14825) x30415)
+:assumption (or (not x17116) (not x12938))
+:assumption (or (not x18102) x10672)
+:assumption (or x9008 x21679)
+:assumption (or x3151 (not x4924))
+:assumption (or (not x19050) (not x16786))
+:assumption (or x13956 x14940)
+:assumption (or (not x2432) x24876)
+:assumption (or (not x5188) (not x23272))
+:assumption (or x369 (not x21703) x12242 (not x20325))
+:assumption (or x6655 (not x24202) (not x10718) x25689)
+:assumption (or (not x6441) (not x19541))
+:assumption (or (not x7910) (not x10882))
+:assumption (or (not x8492) (not x27104))
+:assumption (or x11380 x17090)
+:assumption (or x31509 (not x1497))
+:assumption (or (not x15197) x22536)
+:assumption (or (not x30107) (not x1393) (not x23501))
+:assumption (or x19815 (not x21615))
+:assumption (or (not x22768) x6405)
+:assumption (or x22556 (not x15180))
+:assumption (or (not x30695) (not x24509))
+:assumption (or x23035 x10189)
+:assumption (or (not x24155) (not x16346))
+:assumption (or (not x19086) (not x7597))
+:assumption (or x1476 (not x29126))
+:assumption (or (not x15746) (not x17364) (not x12977) (not x4268) (not x27839) x8563 x22685 x30102 x11567)
+:assumption (or x22116 x2804)
+:assumption (or x13708 x3857)
+:assumption (or (not x21881) x23348)
+:assumption (or (not x27018) x20371)
+:assumption (or x25377 x28575)
+:assumption (or (not x31586) x4204)
+:assumption (or x31822 x24207)
+:assumption (or x26071 (not x6873))
+:assumption (or x14606 (not x9398))
+:assumption (or x9108 x2912 (not x20662) (not x28674) x3954 x31773)
+:assumption (or x24251 (not x12623))
+:assumption (or (not x22496) (not x16342))
+:assumption (or x12614 x31814)
+:assumption (or x4212 x25128)
+:assumption (or x16374 x8569)
+:assumption (or (not x9036) (not x7982))
+:assumption (or (not x23651) x14129)
+:assumption (or (not x6307) x10680)
+:assumption (or x19212 (not x1582))
+:assumption (or x261 (not x18865))
+:assumption (or (not x5583) (not x20330))
+:assumption (or (not x29139) x24941)
+:assumption (or (not x2334) (not x23485) (not x5801))
+:assumption (or x8586 x15191)
+:assumption (or x30043 (not x5755))
+:assumption (or x23244 (not x22417))
+:assumption (or (not x21026) x5303)
+:assumption (or x27800 x28822 (not x14385) x11644 (not x21363) (not x2270) x15363)
+:assumption (or (not x7145) x4797 (not x28392) x11608)
+:assumption (or x28538 x10538)
+:assumption (or x8949 x17876)
+:assumption (or (not x8598) x21464)
+:assumption (or (not x9433) x23386 x25269 (not x28242))
+:assumption (or (not x6290) x24234 (not x31535) x12345 (not x19325))
+:assumption (or x16194 x2772)
+:assumption (or (not x7725) (not x24009))
+:assumption (or x19779 x1236 x27939 x22622 x24813 x8048 x15281 (not x2113) x19692)
+:assumption (or (not x1957) (not x8456))
+:assumption (or (not x22578) (not x9647))
+:assumption (or (not x13884) x14832)
+:assumption (or x1582 (not x31443))
+:assumption (or (not x4702) (not x7501) (not x6243) (not x18332))
+:assumption (or x13226 x28093)
+:assumption (or (not x8002) x20465)
+:assumption (or (not x27819) x18173)
+:assumption (or x4879 x372)
+:assumption (or x11157 x25746)
+:assumption (or x12103 (not x29334) (not x22595) (not x13163) x11968)
+:assumption (or x10663 (not x6658) (not x22637) (not x28556) x28784)
+:assumption (or x27618 (not x16562))
+:assumption (or (not x10813) x23871 (not x827))
+:assumption (or x31503 x9862)
+:assumption (or x8835 (not x16808))
+:assumption (or x14405 (not x12456))
+:assumption (or (not x21298) x15005)
+:assumption (or x16458 x9008)
+:assumption (or x4436 x6044)
+:assumption (or x31854 (not x17564) (not x17855))
+:assumption (or (not x11964) x9498)
+:assumption (or (not x13991) (not x3131))
+:assumption (or (not x4953) (not x18183))
+:assumption (or (not x23217) (not x20482) (not x12626))
+:assumption (or (not x28866) (not x10655))
+:assumption (or x31802 x21578)
+:assumption (or x3435 x20237)
+:assumption (or (not x20837) x6402)
+:assumption (or (not x12505) (not x29371))
+:assumption (or x11402 (not x19382) x14347 (not x5207) x18932 (not x31158) (not x5023))
+:assumption (or x1766 (not x9439))
+:assumption (or (not x13022) (not x13683))
+:assumption (or x7035 (not x621))
+:assumption (or (not x12574) x16657)
+:assumption (or x8801 (not x9035))
+:assumption (or x29442 (not x4331))
+:assumption (or (not x18961) (not x13643))
+:assumption (or (not x16649) (not x2183))
+:assumption (or x15602 (not x18069) x3494)
+:assumption (or x29202 x27669)
+:assumption (or x18952 (not x30878))
+:assumption (or x5550 x11819 x9008 (not x6312) (not x20614) (not x23174))
+:assumption (or (not x19148) x10404)
+:assumption (or (not x764) x7270)
+:assumption (or (not x6776) (not x23320) (not x25152) x21815 (not x31264) x15307)
+:assumption (or x25152 (not x1229))
+:assumption (or x9930 (not x15726))
+:assumption (or (not x8837) (not x7831))
+:assumption (or (not x14478) x5706)
+:assumption (or x30175 (not x1758))
+:assumption (or (not x25761) x4136)
+:assumption (or (not x14279) (not x12616))
+:assumption (or (not x6599) x6243 x13016 x23545)
+:assumption (or x12521 x16217)
+:assumption (or x17921 (not x17232))
+:assumption (or x3880 x4814)
+:assumption (or x16714 x27655)
+:assumption (or (not x18312) x14517)
+:assumption (or x24477 x28032)
+:assumption (or x23163 (not x21789))
+:assumption (or x28864 x6850)
+:assumption (or (not x11743) (not x1002))
+:assumption (or x31829 (not x28541) (not x20128) (not x21581))
+:assumption (or (not x25471) (not x10109) (not x5887))
+:assumption (or x23643 x11149)
+:assumption (or x27435 x18042)
+:assumption (or x10 (not x22903))
+:assumption (or (not x24700) x7425)
+:assumption (or (not x26520) x23279)
+:assumption (or x19693 (not x30314) x7120 x24324 (not x24856) x16061 (not x6637) (not x21678))
+:assumption (or x18199 (not x14831))
+:assumption (or (not x11057) x5677 (not x16795))
+:assumption (or x14078 (not x5863))
+:assumption (or x31746 (not x4584))
+:assumption (or x19340 x13321)
+:assumption (or (not x27662) x2126 x19617 (not x372) (not x27611))
+:assumption (or x15367 (not x23164))
+:assumption (or x8602 x22486)
+:assumption (or x6988 (not x25450))
+:assumption (or x20708 x7389)
+:assumption (or (not x1393) (not x27773))
+:assumption (or (not x27799) (not x17513))
+:assumption (or (not x2914) x8988 x13322 (not x31609))
+:assumption (or x19236 (not x4897))
+:assumption (or (not x18519) x19711 x11343 (not x6903))
+:assumption (or x10668 x28156)
+:assumption (or x27543 (not x20658))
+:assumption (or (not x31385) x6919)
+:assumption (or x7159 (not x15878) x23279)
+:assumption (or x24117 x21202)
+:assumption (or (not x20630) x22261)
+:assumption (or x16221 (not x22185))
+:assumption (or x18142 (not x26998))
+:assumption (or (not x8065) x2022 (not x15301))
+:assumption (or x5234 (not x2225))
+:assumption (or x26667 (not x18902))
+:assumption (or x16513 (not x7063))
+:assumption (or (not x28021) (not x12761))
+:assumption (or (not x21739) (not x15643))
+:assumption (or x15459 (not x4308))
+:assumption (or (not x14455) (not x21950) (not x24353) (not x8944) (not x3435) (not x21060) x7222)
+:assumption (or (not x6603) x13484)
+:assumption (or x27571 x27538)
+:assumption (or x14794 (not x2581))
+:assumption (or (not x3223) x8309)
+:assumption (or x4027 x14489)
+:assumption (or (not x19887) (not x5367))
+:assumption (or x10485 (not x22520))
+:assumption (or x11732 (not x11343))
+:assumption (or x16658 x2558)
+:assumption (or (not x26483) (not x27774))
+:assumption (or x1825 x7228 (not x8914) x14109)
+:assumption (or (not x29397) (not x807))
+:assumption (or (not x13551) x19763)
+:assumption (or (not x26072) x21511)
+:assumption (or x16615 (not x3055))
+:assumption (or (not x12065) x20885 x21771 (not x25710) x10537 (not x9135) (not x25431))
+:assumption (or (not x28997) (not x1800))
+:assumption (or (not x28725) (not x7820))
+:assumption (or x10269 (not x5063))
+:assumption (or (not x3324) (not x26290))
+:assumption (or x30650 x25503)
+:assumption (or (not x24031) x21133)
+:assumption (or (not x13904) x2009 x30543 x17616)
+:assumption (or x18118 (not x7474))
+:assumption (or (not x29250) (not x16233))
+:assumption (or x9025 x27835)
+:assumption (or (not x20782) x271)
+:assumption (or x20873 x27933 x5808)
+:assumption (or (not x21643) x4422)
+:assumption (or (not x12815) x760)
+:assumption (or x19864 (not x7352))
+:assumption (or (not x15917) (not x19556) (not x10064))
+:assumption (or (not x30746) x15860)
+:assumption (or x19024 (not x19134))
+:assumption (or (not x3648) (not x26824))
+:assumption (or (not x30067) (not x620))
+:assumption (or (not x5394) (not x764))
+:assumption (or (not x21148) (not x16745))
+:assumption (or (not x29959) x160 (not x6594) (not x30504))
+:assumption (or x20277 x18396)
+:assumption (or x17589 (not x28884))
+:assumption (or (not x2841) (not x30200))
+:assumption (or (not x16984) x5574)
+:assumption (or x30120 (not x4239))
+:assumption (or x31633 x603)
+:assumption (or (not x30516) (not x25659))
+:assumption (or (not x18353) x21024)
+:assumption (or x25803 (not x1739) x14446 x381 x17139 x25318)
+:assumption (or x23443 (not x15436))
+:assumption (or x8002 x6055)
+:assumption (or x19119 x1678)
+:assumption (or (not x5249) (not x4359))
+:assumption (or x29526 x24459)
+:assumption (or x16646 (not x6226) (not x10503) x7628 (not x17471))
+:assumption (or (not x12180) x16802 (not x17399) x25878)
+:assumption (or x15537 (not x6345) x12944 x23644 (not x16228))
+:assumption (or x9008 x12656)
+:assumption (or (not x4241) x5289)
+:assumption (or (not x22033) (not x17804))
+:assumption (or (not x9031) x1723)
+:assumption (or x29039 (not x1099))
+:assumption (or (not x1582) x28936)
+:assumption (or x26206 (not x6931))
+:assumption (or (not x2868) x14865 x22750 (not x22764))
+:assumption (or x16648 (not x8869) (not x30751) x1897)
+:assumption (or x26082 (not x24756))
+:assumption (or (not x369) x4629)
+:assumption (or (not x6425) x21796)
+:assumption (or (not x5471) (not x2880))
+:assumption (or x21991 x29934)
+:assumption (or x14498 x8342)
+:assumption (or (not x29979) x7308)
+:assumption (or (not x22720) (not x15614))
+:assumption (or x21552 (not x4221))
+:assumption (or (not x28973) (not x10842))
+:assumption (or (not x8789) (not x805))
+:assumption (or x10157 (not x21016))
+:assumption (or x8316 (not x7851))
+:assumption (or (not x1680) (not x27886))
+:assumption (or x25159 x17749)
+:assumption (or (not x11883) (not x809))
+:assumption (or x25358 x15493)
+:assumption (or (not x31010) x2592 (not x14596))
+:assumption (or x18793 x16840)
+:assumption (or x14705 x27026)
+:assumption (or (not x827) x14027 x26853)
+:assumption (or x21815 (not x2049))
+:assumption (or x30301 x20920)
+:assumption (or x12342 (not x3683))
+:assumption (or (not x19428) (not x14854))
+:assumption (or x3831 (not x13083) (not x28708) (not x1330))
+:assumption (or x9782 x7688)
+:assumption (or x3782 (not x8752))
+:assumption (or (not x31597) (not x21494))
+:assumption (or (not x6494) (not x10904) (not x27169) (not x22821))
+:assumption (or (not x18443) x28714)
+:assumption (or (not x21815) x11537 (not x29748))
+:assumption (or (not x27026) (not x16260))
+:assumption (or (not x21042) x11488)
+:assumption (or x22773 x14347)
+:assumption (or x26973 x10909)
+:assumption (or x29476 (not x28550))
+:assumption (or (not x21268) x1146 x12526 x438 (not x16388) (not x8637))
+:assumption (or x20476 x31629)
+:assumption (or x17988 (not x23774))
+:assumption (or x78 x30239 x23782 x12 (not x19959) (not x109))
+:assumption (or (not x5820) (not x9008))
+:assumption (or x11061 x17413)
+:assumption (or (not x6303) (not x30062))
+:assumption (or x18710 x631)
+:assumption (or (not x13265) x6676)
+:assumption (or (not x8658) (not x16356))
+:assumption (or (not x26648) x2435)
+:assumption (or x1124 x15057)
+:assumption (or (not x23244) x21072)
+:assumption (or x19726 (not x12447))
+:assumption (or (not x31076) (not x20297))
+:assumption (or (not x12284) (not x17064))
+:assumption (or x22310 x31549 (not x24617) (not x20045) x18533 x2569 x23460 (not x4810))
+:assumption (or x13673 x8884)
+:assumption (or x30362 x5114)
+:assumption (or x8961 x10136)
+:assumption (or (not x27232) x16743)
+:assumption (or (not x28491) x9591)
+:assumption (or x8280 (not x11638))
+:assumption (or x22042 (not x26459))
+:assumption (or x27318 (not x20535))
+:assumption (or (not x20243) x29566)
+:assumption (or x22598 x20774 x12049 (not x14709) (not x11230) (not x27128) x3945)
+:assumption (or (not x4817) x26713)
+:assumption (or (not x1453) x8376 (not x2937) (not x27422) (not x24609))
+:assumption (or (not x13033) (not x31134))
+:assumption (or (not x14607) x13918)
+:assumption (or (not x31696) x30463)
+:assumption (or x15014 (not x20972) x6873 x31193 x17511)
+:assumption (or x29442 (not x2246) x3782 x21370)
+:assumption (or (not x19249) x480)
+:assumption (or (not x26924) (not x18778))
+:assumption (or x3165 (not x29293))
+:assumption (or (not x4770) (not x19992))
+:assumption (or x26346 x3839 (not x22531))
+:assumption (or (not x2010) x19635)
+:assumption (or x9236 (not x31196) x23867)
+:assumption (or x30652 x25443)
+:assumption (or x6210 (not x8870))
+:assumption (or x29163 (not x2325))
+:assumption (or (not x23911) x25459)
+:assumption (or (not x9192) (not x8147))
+:assumption (or x11423 x31734)
+:assumption (or (not x426) x28912)
+:assumption (or (not x10914) (not x12229))
+:assumption (or x21644 (not x14206) (not x6525) x24444)
+:assumption (or (not x15119) (not x28465))
+:assumption (or (not x11227) x27425)
+:assumption (or (not x14035) (not x5956))
+:assumption (or x12446 (not x10787))
+:assumption (or x8137 (not x31401))
+:assumption (or (not x5570) (not x12986))
+:assumption (or x964 x8051)
+:assumption (or (not x14240) x4826)
+:assumption (or x19508 x24016)
+:assumption (or x7083 (not x5750))
+:assumption (or (not x26577) x7017)
+:assumption (or x9008 x21156)
+:assumption (or (not x28540) (not x26868) x17041 (not x15133) x9853 (not x25227) x29518 (not x2290))
+:assumption (or x27041 (not x1548))
+:assumption (or x21587 (not x1090))
+:assumption (or x14501 (not x20847))
+:assumption (or x5498 x22398)
+:assumption (or x11779 x1320 (not x31056))
+:assumption (or (not x7231) (not x24449))
+:assumption (or (not x26200) x17906)
+:assumption (or (not x30113) x25187)
+:assumption (or (not x4118) (not x25671))
+:assumption (or (not x21618) x11124)
+:assumption (or (not x11674) (not x22460))
+:assumption (or x24643 (not x3394))
+:assumption (or (not x27111) x28426)
+:assumption (or x9318 (not x1182))
+:assumption (or (not x27881) x16539)
+:assumption (or x18181 x12689)
+:assumption (or (not x17497) (not x24597))
+:assumption (or (not x11200) x29073 x364 (not x1869))
+:assumption (or (not x22325) (not x17440) x27625 (not x10630))
+:assumption (or (not x18324) (not x17571) x7709 (not x12609))
+:assumption (or x10156 (not x12520))
+:assumption (or x2307 (not x17767))
+:assumption (or (not x22244) x23523)
+:assumption (or (not x5004) x4712 (not x11219) x18753 x26031 (not x9213))
+:assumption (or x5045 x11682)
+:assumption (or x5746 (not x22682))
+:assumption (or (not x25477) x31063)
+:assumption (or (not x15810) x541)
+:assumption (or (not x22516) x13576 (not x16431))
+:assumption (or x21298 (not x15586) (not x19187) (not x31782))
+:assumption (or x31347 (not x16799))
+:assumption (or x1951 (not x5461))
+:assumption (or x2682 (not x31468))
+:assumption (or x29955 x13404 x27377 x24254 x8002 (not x4894))
+:assumption (or (not x3932) x22198)
+:assumption (or (not x2448) x24216)
+:assumption (or x26628 (not x30084))
+:assumption (or x22599 (not x29948))
+:assumption (or (not x1659) x9731)
+:assumption (or x6562 (not x2133) (not x7835) (not x29850))
+:assumption (or (not x29744) x29201)
+:assumption (or (not x21) x2631)
+:assumption (or (not x24249) (not x18593))
+:assumption (or x30840 x30751)
+:assumption (or (not x6642) (not x23053))
+:assumption (or x130 x6295)
+:assumption (or (not x15695) x27537)
+:assumption (or (not x16419) (not x12171))
+:assumption (or (not x23885) (not x4756))
+:assumption (or x9008 x31532 (not x27699) x2151 (not x20316) x13709)
+:assumption (or (not x9803) x20099)
+:assumption (or (not x19188) x21834)
+:assumption (or x24571 x3967 x4559 x15101)
+:assumption (or (not x31083) (not x29390))
+:assumption (or x3017 (not x31732))
+:assumption (or x6419 x29591)
+:assumption (or (not x8120) (not x23161))
+:assumption (or x23598 x23244 (not x20870))
+:assumption (or (not x5104) x30546 (not x7286))
+:assumption (or x22283 x7152)
+:assumption (or x17718 x17124)
+:assumption (or x5195 (not x16315))
+:assumption (or x24079 x765 x9193)
+:assumption (or x3957 (not x9353))
+:assumption (or x13956 x17961)
+:assumption (or x22472 x18913)
+:assumption (or x31241 x4173)
+:assumption (or (not x15621) (not x24038))
+:assumption (or (not x28465) (not x19914))
+:assumption (or x20395 (not x6054))
+:assumption (or (not x21601) (not x1321))
+:assumption (or (not x2711) (not x2592))
+:assumption (or x18281 x22853)
+:assumption (or x24104 x11383)
+:assumption (or x12290 x20190)
+:assumption (or (not x13272) (not x8515))
+:assumption (or (not x24050) x8413)
+:assumption (or (not x17431) (not x31384))
+:assumption (or x9808 (not x5061))
+:assumption (or x23575 x11539)
+:assumption (or x30107 x22919)
+:assumption (or (not x1106) x31142)
+:assumption (or (not x19346) (not x29959))
+:assumption (or x12240 (not x29080) x1633 (not x26544) x932)
+:assumption (or x3806 (not x2808))
+:assumption (or x12787 (not x25659) x29325)
+:assumption (or (not x31829) (not x10165))
+:assumption (or (not x12534) (not x22548))
+:assumption (or (not x22531) (not x19003))
+:assumption (or (not x21539) (not x18069))
+:assumption (or (not x23875) (not x7584))
+:assumption (or (not x9798) (not x21298) (not x24514) (not x12948))
+:assumption (or (not x3041) x4781)
+:assumption (or (not x29620) x10753)
+:assumption (or x8120 x15349)
+:assumption (or (not x21876) x20325)
+:assumption (or (not x9401) (not x28189))
+:assumption (or x31309 x20381)
+:assumption (or x4180 (not x16167))
+:assumption (or x17701 x27194)
+:assumption (or x6342 x31225)
+:assumption (or (not x22282) x2023)
+:assumption (or (not x4559) (not x10450) x15861 x15097)
+:assumption (or (not x3302) (not x31177))
+:assumption (or (not x23727) x12054)
+:assumption (or (not x9008) x935)
+:assumption (or x5150 x25843)
+:assumption (or (not x26399) (not x20654))
+:assumption (or (not x20159) x24777)
+:assumption (or x17225 (not x13980) x9287 (not x29816) (not x24626) x11864 (not x29774) (not x3107) (not x24712))
+:assumption (or x23244 x5565 x8726 x8002)
+:assumption (or x1765 (not x8148))
+:assumption (or (not x12017) (not x12659) x26056)
+:assumption (or x9448 x8479)
+:assumption (or (not x8678) x31537)
+:assumption (or x16900 x14370)
+:assumption (or (not x9638) x19919)
+:assumption (or (not x26288) x5529)
+:assumption (or x6298 x23490)
+:assumption (or x16510 x18664)
+:assumption (or x7708 (not x11652))
+:assumption (or x16389 x21414)
+:assumption (or (not x1499) (not x23349))
+:assumption (or (not x23516) x16400)
+:assumption (or x16945 (not x18703))
+:assumption (or x25990 (not x3436))
+:assumption (or (not x18137) x22755)
+:assumption (or (not x11174) x3397 x23470 (not x10453) (not x31599) (not x489) x14591 (not x19269))
+:assumption (or (not x5457) (not x29682))
+:assumption (or x2651 (not x15135))
+:assumption (or x10259 (not x26267))
+:assumption (or (not x16091) (not x14733))
+:assumption (or x8002 (not x23180) x2545 (not x24692) (not x12191) x15994)
+:assumption (or x5372 x3837)
+:assumption (or x6209 (not x15795) (not x16304) x3299)
+:assumption (or x24909 x28377 x218 x9572 x24298 (not x15857))
+:assumption (or x16961 x7223)
+:assumption (or (not x27995) (not x9647))
+:assumption (or x18337 (not x26670))
+:assumption (or (not x13127) (not x11221))
+:assumption (or (not x28167) (not x22272))
+:assumption (or x3393 (not x26304))
+:assumption (or (not x21275) x20156)
+:assumption (or x3698 x2007)
+:assumption (or (not x4160) (not x9250))
+:assumption (or (not x29337) x14641)
+:assumption (or x17166 x22665)
+:assumption (or x9147 x9221)
+:assumption (or x28282 x11292)
+:assumption (or (not x21362) x602)
+:assumption (or x24722 x2400)
+:assumption (or x8315 (not x11792) x29716 x7851 (not x28510) x12044)
+:assumption (or x22638 (not x7434))
+:assumption (or x14036 (not x21298) (not x23316) x13316)
+:assumption (or (not x14732) x26309)
+:assumption (or x21815 x820)
+:assumption (or (not x26916) (not x9379))
+:assumption (or (not x8267) (not x15858))
+:assumption (or (not x26507) (not x15366))
+:assumption (or (not x27524) (not x14593))
+:assumption (or (not x5977) (not x730))
+:assumption (or x25007 (not x1129))
+:assumption (or x9972 x24141)
+:assumption (or x14290 (not x22351))
+:assumption (or x18799 (not x19603))
+:assumption (or x25355 x16164)
+:assumption (or x19655 (not x2405))
+:assumption (or (not x103) (not x28277) (not x30113) (not x2849))
+:assumption (or (not x29405) (not x6661) (not x4366) (not x16967))
+:assumption (or (not x2549) (not x26138))
+:assumption (or (not x14821) x15445)
+:assumption (or x26700 x16051)
+:assumption (or (not x23399) x9852)
+:assumption (or x873 (not x5934) (not x29723) (not x19031) (not x28803) (not x23668))
+:assumption (or (not x6594) x17534 (not x10291))
+:assumption (or (not x29440) x6439)
+:assumption (or x23534 x6955)
+:assumption (or (not x2240) (not x29013))
+:assumption (or (not x22235) (not x30880) x22920 x27813 (not x12928))
+:assumption (or (not x24259) x8879)
+:assumption (or (not x16612) (not x18619))
+:assumption (or x17627 (not x27517))
+:assumption (or x10726 (not x21335))
+:assumption (or (not x23743) (not x28570))
+:assumption (or (not x6689) x24228 (not x2006))
+:assumption (or (not x25659) (not x15378) (not x22263))
+:assumption (or x6978 x26604)
+:assumption (or x7286 (not x25125))
+:assumption (or x24568 x24365 x11462)
+:assumption (or x4571 x29027 x8002 (not x1365))
+:assumption (or x976 (not x30067))
+:assumption (or x17845 (not x13512) (not x31681))
+:assumption (or (not x26392) x29312)
+:assumption (or x3159 x1373)
+:assumption (or (not x22906) x9959)
+:assumption (or x7402 x1461)
+:assumption (or x1475 (not x5469))
+:assumption (or x1070 x16397)
+:assumption (or x17332 x24619 (not x4422))
+:assumption (or (not x30717) x25376)
+:assumption (or (not x22972) (not x18376))
+:assumption (or x16109 x11460)
+:assumption (or x5051 x5916)
+:assumption (or (not x10417) (not x24383) (not x15921) (not x11801) (not x2927))
+:assumption (or x347 (not x23472))
+:assumption (or x26897 x2260)
+:assumption (or (not x949) (not x18776))
+:assumption (or (not x7884) (not x6854))
+:assumption (or (not x22170) x23131)
+:assumption (or (not x31392) x288 x23262 x12565)
+:assumption (or x1164 x3276 (not x24986) x22877 (not x21654) x9161 (not x7267) (not x21837) (not x10691) (not x11121))
+:assumption (or x7110 x19912)
+:assumption (or x20780 (not x8024) x22954 (not x15640) x26827)
+:assumption (or (not x21653) (not x25816))
+:assumption (or x23313 (not x15342))
+:assumption (or (not x12750) x24099)
+:assumption (or (not x8667) x30250)
+:assumption (or x15061 (not x24194))
+:assumption (or (not x24420) x8882)
+:assumption (or (not x8900) (not x20642))
+:assumption (or (not x31557) (not x31477))
+:assumption (or (not x28156) x9531)
+:assumption (or (not x30227) x31313 x7791 x30125)
+:assumption (or x21298 x13422)
+:assumption (or x25772 (not x21657))
+:assumption (or x11178 x1118)
+:assumption (or x7058 (not x14435) x5597 (not x29045))
+:assumption (or (not x28868) x23534)
+:assumption (or (not x24058) (not x25504))
+:assumption (or (not x23842) x13720)
+:assumption (or (not x18909) x27918)
+:assumption (or (not x4773) (not x29081) x20196 (not x725) x12851)
+:assumption (or (not x16500) (not x23399))
+:assumption (or x21586 x1464)
+:assumption (or x14608 x14839 (not x26979) x23616)
+:assumption (or (not x21298) x19601)
+:assumption (or (not x18296) x9833)
+:assumption (or (not x26179) x16229)
+:assumption (or (not x8714) (not x27536))
+:assumption (or (not x8002) x15315 x8943)
+:assumption (or (not x16802) (not x21056))
+:assumption (or x7721 x142)
+:assumption (or x31022 (not x10632))
+:assumption (or (not x11700) (not x16302))
+:assumption (or (not x24285) (not x25665))
+:assumption (or (not x19893) (not x4987))
+:assumption (or (not x1411) (not x10014) (not x29011) (not x21663) (not x19102) (not x1561) x4876 x24776 (not x30247))
+:assumption (or (not x30041) (not x25758))
+:assumption (or (not x7931) (not x15973) (not x28838) (not x9989) x1050)
+:assumption (or x21884 (not x23244))
+:assumption (or x329 (not x7448))
+:assumption (or x8002 (not x16050))
+:assumption (or x124 x25652)
+:assumption (or (not x30427) x12758)
+:assumption (or x5230 (not x4796))
+:assumption (or (not x5803) x13249 (not x19296) (not x2289) (not x31448) x7757)
+:assumption (or (not x24787) (not x7652) (not x18223) x15818)
+:assumption (or x23393 x27809)
+:assumption (or (not x9773) (not x26708))
+:assumption (or (not x27625) x12348)
+:assumption (or (not x31829) x7226)
+:assumption (or (not x403) x15266 (not x16402))
+:assumption (or (not x4101) x3474 (not x9057))
+:assumption (or (not x14547) x8002 x11269)
+:assumption (or x17257 x5735)
+:assumption (or x16511 x24496)
+:assumption (or x20254 x31893)
+:assumption (or (not x14390) (not x14839))
+:assumption (or x1516 x25659 (not x13186))
+:assumption (or (not x1547) x24528)
+:assumption (or x14591 (not x13921) (not x14781))
+:assumption (or x5043 x26200)
+:assumption (or x22950 (not x17225))
+:assumption (or x17731 x31265)
+:assumption (or (not x10097) x14909)
+:assumption (or (not x27741) (not x7752))
+:assumption (or (not x11732) x30985)
+:assumption (or x11470 (not x16771))
+:assumption (or x14603 (not x12447))
+:assumption (or (not x19637) (not x25653))
+:assumption (or (not x16291) x15221)
+:assumption (or (not x25749) (not x27530))
+:assumption (or x14627 (not x13331))
+:assumption (or (not x604) (not x22456))
+:assumption (or (not x17108) (not x19051))
+:assumption (or x4940 x25659 (not x16772) x15887)
+:assumption (or x16667 x8611)
+:assumption (or x21653 (not x8684) (not x20808))
+:assumption (or x17671 x8511)
+:assumption (or x27110 x18836)
+:assumption (or x5611 (not x22934))
+:assumption (or x2648 x22560)
+:assumption (or x26093 x28023 x21298 (not x31113))
+:assumption (or (not x1961) (not x17452))
+:assumption (or x7276 (not x5075))
+:assumption (or x24032 (not x7394))
+:assumption (or (not x8927) x15245)
+:assumption (or (not x17080) (not x14607))
+:assumption (or x11441 x7644)
+:assumption (or x2663 (not x8002))
+:assumption (or x4893 (not x18624))
+:assumption (or (not x30789) x19424)
+:assumption (or (not x8814) x11241)
+:assumption (or x28736 (not x8122))
+:assumption (or (not x13614) (not x9074) x7864 x13933 x12860 (not x6221) x29035 x8859)
+:assumption (or x25786 x26136)
+:assumption (or (not x13604) x5143)
+:assumption (or x21491 x4124)
+:assumption (or (not x29606) x8418)
+:assumption (or (not x29590) x4713)
+:assumption (or (not x22956) (not x14825))
+:assumption (or x16497 (not x21298) x38 (not x8517))
+:assumption (or (not x5132) (not x10410))
+:assumption (or x1200 (not x10876))
+:assumption (or x9008 (not x28992) (not x4018))
+:assumption (or (not x10667) x806 x27537 (not x16304))
+:assumption (or (not x25628) x4379)
+:assumption (or (not x5523) x6607)
+:assumption (or x26958 x23825)
+:assumption (or (not x13854) (not x25659))
+:assumption (or (not x20289) x5236)
+:assumption (or x18288 x14347)
+:assumption (or (not x8812) (not x20885))
+:assumption (or x29442 x2691 (not x5028) (not x5076))
+:assumption (or x5194 (not x9081))
+:assumption (or (not x2864) (not x24401))
+:assumption (or x21062 (not x24170))
+:assumption (or (not x18195) x1487)
+:assumption (or (not x20873) x29671)
+:assumption (or x19025 (not x17619))
+:assumption (or x28890 x14671)
+:assumption (or x2005 x9423 (not x10536) (not x12421))
+:assumption (or (not x18062) (not x11196) (not x9706) x19840)
+:assumption (or (not x28024) x29312 x1494)
+:assumption (or x11707 (not x5411) (not x26560))
+:assumption (or (not x5796) (not x10539))
+:assumption (or (not x14090) x4778)
+:assumption (or x31917 (not x25104))
+:assumption (or x30924 (not x26698))
+:assumption (or x6962 x3182)
+:assumption (or x29149 (not x19097))
+:assumption (or x29139 x5602)
+:assumption (or (not x317) (not x21161) (not x23307) (not x30431) x17163 (not x27019))
+:assumption (or x25303 x17468 (not x20393) x29949 x17497)
+:assumption (or x4841 (not x5406) (not x5404) (not x10734))
+:assumption (or x18465 (not x9008) (not x13242))
+:assumption (or (not x13748) (not x25673))
+:assumption (or x30124 x7955 (not x16409))
+:assumption (or (not x24176) x8002 (not x6259))
+:assumption (or x10874 (not x6564))
+:assumption (or (not x13407) x25181)
+:assumption (or (not x15674) x5527)
+:assumption (or (not x7321) (not x19832))
+:assumption (or x10743 x13116)
+:assumption (or (not x24939) (not x8628))
+:assumption (or (not x288) (not x22806))
+:assumption (or (not x8961) (not x8424))
+:assumption (or x12170 (not x21262))
+:assumption (or x24485 x12678)
+:assumption (or (not x7108) (not x4559) (not x31580) x17696)
+:assumption (or (not x16711) x25167)
+:assumption (or x17211 (not x24026))
+:assumption (or (not x8333) x26844)
+:assumption (or (not x10607) x9111)
+:assumption (or (not x18470) x27695)
+:assumption (or x7696 (not x5098))
+:assumption (or (not x23593) x17891)
+:assumption (or (not x11341) (not x31192))
+:assumption (or x17274 (not x20856))
+:assumption (or x15570 x10839)
+:assumption (or x24389 x3489)
+:assumption (or x16955 x9973)
+:assumption (or (not x15409) x18371)
+:assumption (or (not x6675) (not x18395))
+:assumption (or (not x29640) (not x12276))
+:assumption (or x26628 x11648)
+:assumption (or (not x16324) (not x12517))
+:assumption (or x16183 (not x11281))
+:assumption (or x20022 x29998)
+:assumption (or (not x10641) (not x2272))
+:assumption (or (not x26658) (not x28840))
+:assumption (or x17169 (not x20156))
+:assumption (or x8951 (not x30173))
+:assumption (or x3782 (not x9574))
+:assumption (or (not x11960) (not x17477))
+:assumption (or (not x4051) (not x13716))
+:assumption (or (not x18198) (not x1259))
+:assumption (or x6260 x23824 (not x8602))
+:assumption (or (not x25910) x31388)
+:assumption (or x9989 (not x29649) x14000)
+:assumption (or (not x13154) (not x4975))
+:assumption (or (not x30173) x15460)
+:assumption (or x27182 (not x4444))
+:assumption (or (not x27410) x21208)
+:assumption (or (not x26122) x24179)
+:assumption (or x29280 (not x18776))
+:assumption (or (not x5257) (not x9557))
+:assumption (or x5528 (not x26451))
+:assumption (or (not x15704) (not x2941))
+:assumption (or x26325 x26198)
+:assumption (or x27427 (not x11404))
+:assumption (or (not x18547) (not x9167) x7835)
+:assumption (or x14603 x481)
+:assumption (or (not x22440) x8363)
+:assumption (or (not x533) x18594)
+:assumption (or (not x16792) (not x28547) (not x20275) x19992 x6072)
+:assumption (or (not x21414) (not x9484))
+:assumption (or (not x6056) x9804)
+:assumption (or (not x16025) x2489)
+:assumption (or x7298 x12588)
+:assumption (or (not x20887) x16506)
+:assumption (or x26429 x2322)
+:assumption (or x20533 (not x4059))
+:assumption (or (not x17033) (not x478))
+:assumption (or (not x327) (not x14688))
+:assumption (or x8010 x4521)
+:assumption (or (not x19195) x29345)
+:assumption (or x17031 (not x3819))
+:assumption (or (not x17359) (not x28894) (not x26432) (not x21062))
+:assumption (or (not x20852) x5166 (not x18646) (not x3333) (not x23123))
+:assumption (or x26693 x5576)
+:assumption (or (not x9531) (not x5260))
+:assumption (or x26601 x28209)
+:assumption (or (not x6859) (not x30344))
+:assumption (or x19481 x10770)
+:assumption (or x30565 (not x17765))
+:assumption (or x31121 x12770)
+:assumption (or (not x17932) x12070 (not x21298))
+:assumption (or x21815 x21079)
+:assumption (or x5220 (not x31029))
+:assumption (or (not x23878) x29927)
+:assumption (or (not x23378) x5396)
+:assumption (or (not x4386) x17316 x18269 (not x30213))
+:assumption (or (not x26339) (not x2891))
+:assumption (or x25167 (not x19210))
+:assumption (or x11489 x30113 x666)
+:assumption (or (not x6296) (not x13671))
+:assumption (or (not x29649) (not x18216))
+:assumption (or (not x9804) x9111 x13956)
+:assumption (or x174 (not x3712))
+:assumption (or (not x530) x26768)
+:assumption (or x12327 x6149)
+:assumption (or x21298 (not x24938))
+:assumption (or (not x24756) x19564)
+:assumption (or x22722 (not x19571))
+:assumption (or (not x26500) (not x18876))
+:assumption (or (not x15690) x4492)
+:assumption (or (not x17525) x25911)
+:assumption (or (not x8837) x9589 x9772)
+:assumption (or x16414 (not x18612))
+:assumption (or (not x2434) (not x20305))
+:assumption (or x10336 (not x17153) x14138)
+:assumption (or (not x16607) (not x15917))
+:assumption (or x31890 x19635 (not x11792) (not x6149))
+:assumption (or x23406 (not x21274))
+:assumption (or x11366 (not x12129))
+:assumption (or (not x2511) x20892 x8695 x23782 x6655)
+:assumption (or (not x16557) x7174)
+:assumption (or (not x7352) x7286)
+:assumption (or x13717 x26817)
+:assumption (or (not x14377) (not x23472))
+:assumption (or x17225 x15007 (not x22194) (not x18221))
+:assumption (or x30302 x1547)
+:assumption (or x8810 x1618 (not x31892))
+:assumption (or (not x11930) x15775)
+:assumption (or x30061 x10355)
+:assumption (or (not x420) x31413)
+:assumption (or (not x25366) x3457)
+:assumption (or (not x16612) x19686)
+:assumption (or (not x5765) (not x13369))
+:assumption (or x3874 x26469)
+:assumption (or (not x7305) (not x3190) (not x8055) (not x15331) x21662 (not x9038) (not x9768) x19957 (not x4871) x4609)
+:assumption (or x1737 x18553)
+:assumption (or x11439 x22004)
+:assumption (or (not x5292) (not x827))
+:assumption (or (not x18450) x10836)
+:assumption (or (not x2252) (not x19498) x14805 (not x27031) (not x28973) x1695 x23383)
+:assumption (or x16025 x27233 (not x21633) x21286)
+:assumption (or (not x31197) (not x13049))
+:assumption (or x4422 (not x24619))
+:assumption (or (not x8159) x23167)
+:assumption (or (not x10740) x19082)
+:assumption (or (not x15861) x13787 (not x13111))
+:assumption (or (not x13569) (not x20651))
+:assumption (or x31901 x19700)
+:assumption (or x30123 x10060)
+:assumption (or (not x25220) x1586)
+:assumption (or x173 (not x6329))
+:assumption (or x30397 x13771 x23275 x15550 (not x430) (not x29002) x5816)
+:assumption (or x19011 (not x16025))
+:assumption (or (not x26270) (not x304))
+:assumption (or (not x22006) x1974)
+:assumption (or (not x21421) (not x31767))
+:assumption (or x10285 (not x8817))
+:assumption (or (not x19487) x12578 x28450)
+:assumption (or x27320 (not x14191))
+:assumption (or (not x27271) x224)
+:assumption (or (not x13941) x27636 (not x24256) (not x19707))
+:assumption (or x23008 x10504)
+:assumption (or x1577 x16697)
+:assumption (or (not x3670) x1496)
+:assumption (or x4917 x8119 x9531)
+:assumption (or (not x31050) (not x5923))
+:assumption (or x8789 x7809)
+:assumption (or (not x28983) x12337)
+:assumption (or x30039 x29913 (not x27172) x18066)
+:assumption (or (not x23244) x12857)
+:assumption (or (not x31478) x14208)
+:assumption (or x3881 (not x25080))
+:assumption (or (not x6119) x15576)
+:assumption (or (not x25952) x18714)
+:assumption (or x20447 x8002)
+:assumption (or x11696 x29647)
+:assumption (or (not x6098) x19290 (not x13963) x18123 (not x19151) x27454 x6395 x25155 (not x26603) (not x13874))
+:assumption (or (not x16472) x30887)
+:assumption (or (not x19102) x2645 (not x30247) x4876 (not x1561) (not x21663) x13238 x24776 (not x10014))
+:assumption (or (not x29037) (not x9008))
+:assumption (or x18042 x1906)
+:assumption (or (not x28184) x22229)
+:assumption (or (not x31110) (not x4232))
+:assumption (or (not x17022) x55 x6783)
+:assumption (or x12708 (not x25355))
+:assumption (or (not x8038) x29033)
+:assumption (or x15200 x26432 (not x26628))
+:assumption (or x29382 (not x26740))
+:assumption (or x28390 x24756)
+:assumption (or (not x27870) x15948)
+:assumption (or x7181 (not x30813) x10064 (not x15917))
+:assumption (or x16744 x31916)
+:assumption (or x8375 x15222)
+:assumption (or (not x12648) (not x5528))
+:assumption (or (not x22072) x21157 (not x241) (not x9114) (not x10309))
+:assumption (or (not x22086) x19175)
+:assumption (or (not x4757) (not x16235) x11301 x15308 x27036)
+:assumption (or x16900 x4200)
+:assumption (or x22938 (not x23521))
+:assumption (or x20581 x9485 x13622)
+:assumption (or (not x24148) x30022)
+:assumption (or x28541 (not x16124))
+:assumption (or x22482 x29877)
+:assumption (or (not x23781) (not x11862))
+:assumption (or x16809 x23244 x1542 x13956 x8002 (not x6122))
+:assumption (or x31271 x26521)
+:assumption (or (not x24753) x2048)
+:assumption (or (not x20296) x28242 (not x9025))
+:assumption (or x19958 x27613)
+:assumption (or (not x21817) x13956)
+:assumption (or (not x8536) x20424 x9008)
+:assumption (or (not x11329) (not x31294))
+:assumption (or (not x30028) (not x9941) (not x10051) x8647 x25069 (not x8919))
+:assumption (or (not x19355) (not x28036))
+:assumption (or x6193 (not x18469) x14486 x21681 (not x3098) x11281)
+:assumption (or (not x15795) x306 (not x1756) x14591)
+:assumption (or x28973 x23859)
+:assumption (or x12670 (not x29287))
+:assumption (or x1846 (not x14345))
+:assumption (or x29987 (not x15170))
+:assumption (or (not x20135) x23977)
+:assumption (or x22941 (not x23244))
+:assumption (or (not x19780) x16994)
+:assumption (or (not x11545) x20201)
+:assumption (or x30277 (not x19781))
+:assumption (or x8375 (not x9622))
+:assumption (or (not x13952) x21192)
+:assumption (or (not x30558) (not x18229))
+:assumption (or (not x17998) x11121)
+:assumption (or (not x17581) x25425 x7975 (not x4772) x16000 (not x31382) (not x11393) x24076 (not x30951) (not x7908))
+:assumption (or (not x18388) x22511)
+:assumption (or (not x24100) (not x24003))
+:assumption (or (not x5171) x27586)
+:assumption (or x23087 (not x5255))
+:assumption (or x28161 (not x2406) (not x22591) x14546)
+:assumption (or x3027 (not x27247))
+:assumption (or x27817 (not x12779))
+:assumption (or x22646 x11392)
+:assumption (or x14940 x20982)
+:assumption (or x4869 x4058)
+:assumption (or x12958 x20515)
+:assumption (or x22967 x3752)
+:assumption (or (not x27035) x8518 x6411 (not x23451) x15434 (not x24722))
+:assumption (or x21242 x16818)
+:assumption (or (not x3628) x18563)
+:assumption (or x12045 x22553 x11973 x20949)
+:assumption (or (not x4914) x27609)
+:assumption (or (not x22118) (not x23244))
+:assumption (or (not x23870) x3738)
+:assumption (or (not x22534) x21649 x16025)
+:assumption (or x1671 x7379)
+:assumption (or (not x6928) (not x3728))
+:assumption (or x16031 x14410)
+:assumption (or (not x28885) (not x17026))
+:assumption (or x19440 (not x4876))
+:assumption (or x3549 x31578 (not x27635) x8287 x27446 (not x30179) x28 (not x11405))
+:assumption (or x8522 x28814)
+:assumption (or (not x23244) x28769)
+:assumption (or (not x20689) (not x16055))
+:assumption (or x10909 (not x24336))
+:assumption (or x6880 x25282)
+:assumption (or (not x23995) (not x12790))
+:assumption (or (not x11458) (not x8481))
+:assumption (or x25800 (not x6238) x29214 x1562 x19108 (not x18519))
+:assumption (or x31871 x3761)
+:assumption (or x13507 x19677)
+:assumption (or (not x14099) x30779)
+:assumption (or x445 x17656)
+:assumption (or (not x10778) (not x23982))
+:assumption (or x2295 (not x28242))
+:assumption (or (not x30002) (not x9125))
+:assumption (or (not x29333) x1715)
+:assumption (or (not x12045) (not x11973))
+:assumption (or (not x31588) (not x13155))
+:assumption (or (not x20782) (not x31653))
+:assumption (or x18695 x7662)
+:assumption (or x6223 x31054)
+:assumption (or x6248 (not x29312))
+:assumption (or (not x22685) (not x5471))
+:assumption (or (not x26260) x23175 (not x22531))
+:assumption (or (not x8117) (not x29776))
+:assumption (or x26794 (not x2942) x2960 x1833)
+:assumption (or x16938 x5100)
+:assumption (or (not x15810) (not x27322))
+:assumption (or (not x8522) (not x28814))
+:assumption (or x882 x7859)
+:assumption (or x3916 x15207)
+:assumption (or x18623 x8506)
+:assumption (or (not x31507) x22034)
+:assumption (or x27325 (not x20301) (not x5538) x30224)
+:assumption (or (not x19988) x9008)
+:assumption (or x16266 (not x5681))
+:assumption (or x7362 (not x15124))
+:assumption (or x15537 x12599)
+:assumption (or (not x25116) (not x4924))
+:assumption (or (not x6267) x23830)
+:assumption (or x23244 (not x525))
+:assumption (or x15978 (not x23281) x31151 x31721 x5703)
+:assumption (or x62 x13987)
+:assumption (or x26228 x21027)
+:assumption (or x3179 (not x11092))
+:assumption (or x5332 x18960)
+:assumption (or (not x17051) x26439)
+:assumption (or x11924 (not x13956))
+:assumption (or x6594 (not x9030))
+:assumption (or x22910 (not x3849))
+:assumption (or x12390 (not x3063))
+:assumption (or x2838 x18450 (not x17225) (not x1961))
+:assumption (or (not x1947) x1222)
+:assumption (or (not x20943) x15707 x8196 (not x3001))
+:assumption (or x1743 x21938)
+:assumption (or (not x920) (not x12613))
+:assumption (or (not x3696) x9008)
+:assumption (or (not x4386) (not x23893))
+:assumption (or x18338 x25192 x3035 (not x25326) x1393 (not x20863) x5813 x17887)
+:assumption (or (not x30336) (not x10909))
+:assumption (or x11999 x20929)
+:assumption (or x28510 x8316)
+:assumption (or (not x11313) x8948)
+:assumption (or x14665 (not x21149) (not x27832))
+:assumption (or (not x5793) x22306)
+:assumption (or (not x3049) x29628)
+:assumption (or x7012 (not x11139))
+:assumption (or x27962 x22590)
+:assumption (or (not x5367) x25876)
+:assumption (or x1207 x499 (not x10158) x25790)
+:assumption (or (not x12469) x27438)
+:assumption (or x15758 (not x29669))
+:assumption (or x5475 x13956)
+:assumption (or x31806 x30909)
+:assumption (or x8982 (not x24637) x2244 x30914 (not x5281) (not x24742))
+:assumption (or x5848 x15597)
+:assumption (or (not x3419) (not x16256))
+:assumption (or (not x183) (not x3972))
+:assumption (or x10071 (not x27487))
+:assumption (or (not x10303) (not x28599))
+:assumption (or x4868 (not x17742))
+:assumption (or x31280 (not x3162))
+:assumption (or (not x23910) x28626)
+:assumption (or x17484 x18182)
+:assumption (or (not x4892) (not x10274))
+:assumption (or x6601 x4091)
+:assumption (or (not x23784) x18897)
+:assumption (or x24567 (not x28721))
+:assumption (or (not x2565) x18198)
+:assumption (or x6333 (not x1531))
+:assumption (or (not x25015) x7284)
+:assumption (or (not x17947) (not x3456))
+:assumption (or (not x341) x12163)
+:assumption (or x17871 (not x20486))
+:assumption (or x7517 x21459)
+:assumption (or x14839 x14404)
+:assumption (or (not x728) x22144)
+:assumption (or x12802 x30651)
+:assumption (or x9922 (not x30113))
+:assumption (or (not x11064) x31883 x20549 x26062)
+:assumption (or x1051 (not x13906))
+:assumption (or x12578 x16634)
+:assumption (or (not x25219) x29866)
+:assumption (or (not x10064) x14235)
+:assumption (or x10611 (not x19387))
+:assumption (or (not x22472) (not x9008) (not x14669) (not x5528) x15799)
+:assumption (or (not x24928) x17882)
+:assumption (or x19674 x10529)
+:assumption (or x2161 (not x16802))
+:assumption (or x8961 x14727)
+:assumption (or x21298 (not x386))
+:assumption (or x11198 x17220 (not x8979))
+:assumption (or x29081 x30496)
+:assumption (or (not x19597) (not x17774))
+:assumption (or (not x6498) (not x13726))
+:assumption (or (not x11010) (not x25453))
+:assumption (or (not x28168) x20929)
+:assumption (or x30924 (not x7829))
+:assumption (or x24281 x7315)
+:assumption (or x18859 (not x25398) x3735)
+:assumption (or (not x17925) x9529)
+:assumption (or (not x4506) (not x31076))
+:assumption (or x6857 (not x5822))
+:assumption (or (not x25659) (not x28942))
+:assumption (or x13983 x24069)
+:assumption (or (not x23096) x29239)
+:assumption (or (not x21653) x21008 x22280)
+:assumption (or x3962 (not x18398) (not x25538))
+:assumption (or x3675 x27998 x2348)
+:assumption (or x10804 x10581)
+:assumption (or (not x17534) (not x21277))
+:assumption (or (not x17284) x7867 x16448)
+:assumption (or x3837 (not x11482))
+:assumption (or x6257 (not x18694))
+:assumption (or (not x4326) x3206)
+:assumption (or (not x7660) x17940)
+:assumption (or (not x18641) x30138)
+:assumption (or (not x30065) (not x29959))
+:assumption (or (not x21211) x11557)
+:assumption (or x30989 x24443)
+:assumption (or (not x5887) (not x505))
+:assumption (or (not x31181) x119)
+:assumption (or (not x23737) x13542)
+:assumption (or x17788 (not x12915))
+:assumption (or x25406 x28262)
+:assumption (or x28989 (not x10060))
+:assumption (or (not x28644) (not x11300))
+:assumption (or x31063 x25188)
+:assumption (or x10773 x9613)
+:assumption (or x8002 (not x30983))
+:assumption (or (not x18218) x16204)
+:assumption (or x3231 (not x13803) x28885)
+:assumption (or x28497 x9008)
+:assumption (or (not x18535) x572)
+:assumption (or (not x30972) x15395 (not x15134) x10746 (not x5642) (not x2818) (not x7172) (not x22860) x30352 (not x15069))
+:assumption (or (not x14009) x14069 x16193)
+:assumption (or (not x6) (not x3576) x20599 (not x7708) x25024 x16149)
+:assumption (or x21535 (not x11635))
+:assumption (or x3729 x17065)
+:assumption (or x27894 (not x4777))
+:assumption (or x8429 (not x11195))
+:assumption (or x20820 x18133)
+:assumption (or x7854 (not x15807))
+:assumption (or (not x4041) x1464 (not x26134))
+:assumption (or x14345 x11281)
+:assumption (or (not x14516) x28120)
+:assumption (or (not x13621) x8412)
+:assumption (or (not x15674) (not x29509))
+:assumption (or (not x19183) x31781)
+:assumption (or x27213 (not x28073))
+:assumption (or (not x21631) x27909)
+:assumption (or (not x15468) (not x12111))
+:assumption (or (not x10147) (not x26113))
+:assumption (or x3113 (not x10320))
+:assumption (or x12773 x9835)
+:assumption (or x13717 (not x28354) x16479)
+:assumption (or x19904 (not x1053) (not x23047))
+:assumption (or x24633 x12112 x19425 (not x14433) x4148)
+:assumption (or (not x953) (not x6251))
+:assumption (or (not x5139) (not x288))
+:assumption (or (not x28175) x1474)
+:assumption (or x30219 x8623 x811 (not x22646) x10587)
+:assumption (or x9364 (not x13477))
+:assumption (or (not x7485) (not x9306))
+:assumption (or x12458 x20668)
+:assumption (or x27240 (not x18153))
+:assumption (or x24753 (not x2265))
+:assumption (or x29958 x29495)
+:assumption (or (not x28567) (not x7517))
+:assumption (or x30493 x2203)
+:assumption (or x507 x2816)
+:assumption (or (not x2800) x25419)
+:assumption (or x9548 (not x31829))
+:assumption (or x20864 (not x26735))
+:assumption (or (not x12016) (not x25457))
+:assumption (or x16140 x9794 (not x27962) (not x22590) (not x10248) (not x31378) x13576 x9531 (not x9133))
+:assumption (or (not x24481) x28764)
+:assumption (or x17631 (not x29140))
+:assumption (or x12715 x2304)
+:assumption (or x20929 x10580)
+:assumption (or x21298 (not x28878))
+:assumption (or (not x4621) (not x4742))
+:assumption (or x6927 (not x28399) (not x4576))
+:assumption (or x27326 x25423)
+:assumption (or x14184 (not x6383) x31574)
+:assumption (or x14935 x5367 x24553 (not x29053))
+:assumption (or (not x28675) x26659 (not x22013))
+:assumption (or x3115 (not x31745))
+:assumption (or (not x6149) (not x5187))
+:assumption (or (not x15127) x9008)
+:assumption (or x6594 (not x29504))
+:assumption (or (not x21745) (not x19083))
+:assumption (or x11865 x5927)
+:assumption (or (not x26008) (not x16299))
+:assumption (or (not x5414) (not x16025) (not x20700))
+:assumption (or (not x13464) (not x7447))
+:assumption (or x16510 x18736)
+:assumption (or (not x29801) x11570)
+:assumption (or (not x13633) (not x15664))
+:assumption (or x11575 x9333)
+:assumption (or x14973 (not x28798) (not x7177))
+:assumption (or (not x3803) (not x26764))
+:assumption (or (not x21640) x24237)
+:assumption (or (not x192) (not x13131) (not x4504) (not x6441))
+:assumption (or x28060 x15795)
+:assumption (or (not x30078) x30076)
+:assumption (or (not x13883) (not x22940))
+:assumption (or (not x29616) (not x17225) x16137 x15007)
+:assumption (or x9008 x29583)
+:assumption (or (not x31191) (not x30172))
+:assumption (or (not x30807) x2685)
+:assumption (or x14650 x16501)
+:assumption (or (not x30814) (not x9692))
+:assumption (or (not x25544) (not x11212))
+:assumption (or (not x8415) (not x8751))
+:assumption (or x26538 (not x9816))
+:assumption (or (not x4872) (not x30923))
+:assumption (or x12514 x3494)
+:assumption (or (not x28595) x9008)
+:assumption (or x31043 (not x26563))
+:assumption (or (not x8002) x20673)
+:assumption (or (not x31798) x6750)
+:assumption (or x3013 x13370)
+:assumption (or x30847 x4973)
+:assumption (or x10193 x23030)
+:assumption (or (not x6139) x16907)
+:assumption (or (not x18193) (not x4465) x12451 (not x18069) (not x863))
+:assumption (or x22687 x2772)
+:assumption (or x2776 x31309)
+:assumption (or x23808 x19666)
+:assumption (or (not x2458) (not x9155))
+:assumption (or (not x14111) x20733)
+:assumption (or x2050 (not x236))
+:assumption (or x6186 (not x7231))
+:assumption (or x24425 x30221 (not x23545) (not x5112) x787 x18920 (not x6301) x31713 (not x30451))
+:assumption (or (not x18314) (not x24837))
+:assumption (or (not x27531) x3235)
+:assumption (or (not x631) x503)
+:assumption (or (not x15665) (not x8120))
+:assumption (or (not x629) (not x28622))
+:assumption (or x20571 x15575)
+:assumption (or x16304 x11645 (not x15034) x15795)
+:assumption (or (not x31867) (not x8961))
+:assumption (or x5675 x13184 x31829 (not x4850) (not x17382))
+:assumption (or (not x29679) x25944)
+:assumption (or (not x27281) (not x12783))
+:assumption (or (not x36) x30548)
+:assumption (or x31773 x3954 x9108 (not x6993) (not x28674) (not x14254))
+:assumption (or (not x9911) (not x17083))
+:assumption (or (not x658) x14945)
+:assumption (or (not x24086) x11693)
+:assumption (or x15153 (not x7621) (not x27518) (not x23047))
+:assumption (or x21685 (not x14574))
+:assumption (or (not x26327) x24643)
+:assumption (or x29906 x18399)
+:assumption (or x25786 (not x16745))
+:assumption (or x19812 (not x1328))
+:assumption (or (not x8002) x27137)
+:assumption (or x5830 x25575)
+:assumption (or (not x14355) x14934)
+:assumption (or x8532 x443)
+:assumption (or x19159 x8835)
+:assumption (or (not x1978) x9531 x16676 (not x21973))
+:assumption (or x18187 (not x20311))
+:assumption (or (not x3231) x31268)
+:assumption (or (not x22225) x28289)
+:assumption (or (not x18536) x8498)
+:assumption (or x20275 (not x3082))
+:assumption (or (not x21438) (not x29015))
+:assumption (or (not x20585) (not x25115))
+:assumption (or (not x12408) (not x29311))
+:assumption (or x4296 x31382)
+:assumption (or x31920 (not x23368))
+:assumption (or (not x10715) x16930)
+:assumption (or (not x10098) x17958 (not x20202) x7935)
+:assumption (or x31492 x8391)
+:assumption (or x5874 x23431 (not x12949) (not x23002) x1169 (not x17899) x19072 (not x15493))
+:assumption (or (not x10261) (not x9201))
+:assumption (or x2863 x19470)
+:assumption (or (not x15232) x18694)
+:assumption (or (not x30751) (not x10216))
+:assumption (or x18534 x8190)
+:assumption (or (not x28636) x11255)
+:assumption (or (not x9446) (not x9008))
+:assumption (or (not x28328) (not x17101))
+:assumption (or x31782 x12347)
+:assumption (or x29442 (not x20811) (not x7958) x27183 (not x63))
+:assumption (or (not x16304) (not x4738))
+:assumption (or x23662 x14233)
+:assumption (or x21784 x6749 x24850 x3404)
+:assumption (or (not x4592) (not x3242))
+:assumption (or (not x7690) (not x11262))
+:assumption (or (not x25240) (not x21154))
+:assumption (or x27283 (not x1665))
+:assumption (or (not x7575) x28006)
+:assumption (or x31879 (not x8915))
+:assumption (or x26910 x19110)
+:assumption (or (not x28057) (not x6237))
+:assumption (or (not x19963) (not x18746) x29343 (not x1005) x27014 (not x29195) (not x9054))
+:assumption (or x24676 x2418)
+:assumption (or x18134 x6854 x23980)
+:assumption (or x28454 x23244)
+:assumption (or (not x12910) x5888 x14734 (not x27558))
+:assumption (or x9749 (not x26979))
+:assumption (or (not x7200) x24890)
+:assumption (or (not x12669) x27960 x1382)
+:assumption (or (not x26678) x27174)
+:assumption (or (not x31186) (not x3692))
+:assumption (or (not x14664) (not x2908))
+:assumption (or x19155 x24786)
+:assumption (or x25538 x2689)
+:assumption (or x26777 x18955 x9825)
+:assumption (or (not x28331) x5631)
+:assumption (or (not x19222) (not x31200))
+:assumption (or x6080 (not x16913))
+:assumption (or x22425 x16809)
+:assumption (or x26137 x1707 x14021 (not x16228) (not x27934))
+:assumption (or (not x18501) (not x12693))
+:assumption (or (not x17359) (not x8999))
+:assumption (or x18059 (not x10039))
+:assumption (or (not x15537) (not x21047))
+:assumption (or x12478 (not x14347))
+:assumption (or (not x21100) x18475)
+:assumption (or x3710 x17853)
+:assumption (or x11845 (not x31809))
+:assumption (or x24593 (not x13411))
+:assumption (or (not x9017) x16139 (not x2754) (not x773) x9008 (not x902))
+:assumption (or x21298 (not x9197))
+:assumption (or (not x22421) (not x19128))
+:assumption (or (not x26990) x2989 (not x5774))
+:assumption (or x12027 (not x31919))
+:assumption (or (not x24784) (not x14873))
+:assumption (or (not x28912) x14356)
+:assumption (or x6312 (not x9008))
+:assumption (or (not x13129) x18873)
+:assumption (or (not x13830) x30550)
+:assumption (or x10543 (not x29041))
+:assumption (or (not x1542) x3656)
+:assumption (or (not x11619) x6345)
+:assumption (or x30208 x30153)
+:assumption (or (not x31474) x15438 (not x5528))
+:assumption (or (not x142) (not x9260) (not x22855) (not x30457))
+:assumption (or x27811 (not x10436))
+:assumption (or x21298 x23681)
+:assumption (or x31471 x31723)
+:assumption (or x10024 (not x21882))
+:assumption (or (not x16324) (not x2411))
+:assumption (or (not x28017) x19766)
+:assumption (or x16696 (not x9451))
+:assumption (or x399 (not x21620) (not x25824) (not x28948))
+:assumption (or x30192 x7213)
+:assumption (or x3519 x11919)
+:assumption (or x4824 x11857 x22084 x29815)
+:assumption (or (not x29594) x26704)
+:assumption (or x31473 (not x13445))
+:assumption (or (not x9008) x18755)
+:assumption (or (not x11792) (not x1686))
+:assumption (or x8137 x19979)
+:assumption (or (not x4654) (not x23811) x23244)
+:assumption (or (not x28541) x30463)
+:assumption (or x12384 x11747)
+:assumption (or (not x21815) (not x17556))
+:assumption (or (not x13130) x11461)
+:assumption (or x13243 (not x27717))
+:assumption (or x31090 x16932)
+:assumption (or (not x20268) (not x26813))
+:assumption (or (not x7398) x8966)
+:assumption (or (not x6049) x18694)
+:assumption (or x13739 (not x21036))
+:assumption (or x12083 x15265)
+:assumption (or (not x22581) x28296)
+:assumption (or (not x16589) (not x12487))
+:assumption (or (not x25553) (not x31824))
+:assumption (or x29803 x25951)
+:assumption (or (not x30774) x17373)
+:assumption (or x14842 x11337)
+:assumption (or (not x9008) x6962)
+:assumption (or (not x8326) (not x9820) x3904)
+:assumption (or x9446 x9008 (not x4725))
+:assumption (or x18575 x720 (not x16874) (not x16617) (not x28707) (not x7276) (not x14848) x4352)
+:assumption (or (not x22480) (not x24900))
+:assumption (or (not x11463) x9837)
+:assumption (or (not x5190) x1124)
+:assumption (or (not x23244) x20110)
+:assumption (or (not x6484) x31242)
+:assumption (or x27756 (not x15434))
+:assumption (or (not x1685) x12387)
+:assumption (or (not x9044) (not x25801))
+:assumption (or (not x16539) x29453 x21182 x3802 (not x15960) x7000 x30192 (not x22088))
+:assumption (or x67 (not x6550))
+:assumption (or (not x12779) x24784)
+:assumption (or x7675 x21032)
+:assumption (or (not x13596) (not x4858))
+:assumption (or (not x13911) (not x29579))
+:assumption (or (not x31829) x10080)
+:assumption (or (not x22486) (not x8602) (not x19681))
+:assumption (or (not x16275) (not x25678))
+:assumption (or x2847 (not x12953))
+:assumption (or (not x30523) (not x10760))
+:assumption (or x4628 x6396)
+:assumption (or (not x65) (not x22276))
+:assumption (or (not x15344) x1953 x25625)
+:assumption (or x10532 (not x17873))
+:assumption (or (not x5206) (not x39))
+:assumption (or x821 x18022)
+:assumption (or x27491 x3494)
+:assumption (or (not x5216) x6960)
+:assumption (or x24224 x22812)
+:assumption (or x23148 (not x28900))
+:assumption (or x793 (not x12943))
+:assumption (or x18003 (not x19864) x19218 (not x21685))
+:assumption (or x250 x3351)
+:assumption (or x21432 x13794)
+:assumption (or x15445 (not x20504))
+:assumption (or x30887 x227 (not x21329))
+:assumption (or x14330 x7069)
+:assumption (or x2018 (not x20557))
+:assumption (or (not x14037) x25466)
+:assumption (or (not x19383) (not x13063))
+:assumption (or x5613 x26660)
+:assumption (or x31206 (not x31585))
+:assumption (or (not x7118) (not x25474))
+:assumption (or (not x5746) (not x3375) x9476 x23310 x30996 x22479 (not x23391) (not x14797) x9663)
+:assumption (or x583 x7062)
+:assumption (or (not x20678) x13160)
+:assumption (or (not x17930) (not x29333) (not x13956) (not x6948))
+:assumption (or x21505 (not x28499))
+:assumption (or (not x29023) x23456)
+:assumption (or x28493 (not x22851))
+:assumption (or x10936 (not x14309) (not x15919) x28143 x13018 x7242 (not x31027) x19975 x24198)
+:assumption (or x13802 x17462)
+:assumption (or x24722 (not x31214) (not x18042) x18100)
+:assumption (or x2942 (not x5226))
+:assumption (or x10706 x7977)
+:assumption (or (not x2604) (not x4217))
+:assumption (or (not x762) (not x17007))
+:assumption (or x1328 (not x19812))
+:assumption (or x29537 x14374)
+:assumption (or (not x11625) (not x14145))
+:assumption (or x23188 x7545)
+:assumption (or (not x17109) x7269)
+:assumption (or x29137 x760)
+:assumption (or x28874 x1902)
+:assumption (or x11711 x27919)
+:assumption (or (not x11150) (not x7046))
+:assumption (or x23020 x1398)
+:assumption (or x27682 (not x20815))
+:assumption (or (not x12893) x25931)
+:assumption (or (not x11488) x8612)
+:assumption (or (not x7900) (not x18447))
+:assumption (or x17359 x15190)
+:assumption (or x30090 x2668)
+:assumption (or x13087 (not x900) (not x1557) (not x29743))
+:assumption (or (not x9008) (not x17268))
+:assumption (or (not x15301) (not x26889))
+:assumption (or x9355 x10970)
+:assumption (or x10424 (not x17525))
+:assumption (or (not x4822) x4392 (not x25199))
+:assumption (or x23351 x8470)
+:assumption (or x30344 (not x252))
+:assumption (or (not x18712) (not x11072))
+:assumption (or (not x16443) (not x4305))
+:assumption (or (not x27019) (not x26838) (not x24582))
+:assumption (or (not x17989) (not x20947))
+:assumption (or (not x14839) (not x16990))
+:assumption (or x28265 (not x6203))
+:assumption (or (not x30580) x6067)
+:assumption (or x8002 (not x25210))
+:assumption (or x16704 (not x9553))
+:assumption (or (not x12201) x10093)
+:assumption (or x19473 x12739 (not x20566) (not x13487) (not x5645) (not x2334))
+:assumption (or (not x30950) x14480)
+:assumption (or (not x28960) (not x12885))
+:assumption (or (not x17165) (not x5787))
+:assumption (or (not x16519) x8855)
+:assumption (or x12810 (not x10520) (not x26468) (not x26148))
+:assumption (or (not x26266) x25105)
+:assumption (or (not x18942) (not x5800))
+:assumption (or (not x1842) (not x15987))
+:assumption (or x6353 x9495)
+:assumption (or x27750 x1790)
+:assumption (or (not x12069) x29649)
+:assumption (or (not x24104) x18775)
+:assumption (or x6661 x16967)
+:assumption (or (not x12719) x1208)
+:assumption (or x3782 (not x3506))
+:assumption (or (not x4627) (not x14913))
+:assumption (or (not x19540) x4911)
+:assumption (or (not x3623) x18108)
+:assumption (or x26485 x12062 x14205)
+:assumption (or x3524 (not x8567))
+:assumption (or (not x7400) (not x26789))
+:assumption (or x8757 (not x23285) x9278 x12476)
+:assumption (or (not x361) (not x16449))
+:assumption (or (not x7596) x7393)
+:assumption (or x3163 (not x29702))
+:assumption (or (not x13956) (not x3571))
+:assumption (or x22166 (not x9175))
+:assumption (or x19578 x3110)
+:assumption (or (not x23176) (not x5565))
+:assumption (or (not x14129) x23651)
+:assumption (or (not x743) x25706)
+:assumption (or x29709 x10310)
+:assumption (or (not x22118) x9790)
+:assumption (or (not x26513) x3815)
+:assumption (or x16158 (not x29257))
+:assumption (or x410 x29825)
+:assumption (or x5528 (not x15732))
+:assumption (or (not x23749) x5516)
+:assumption (or x15408 x5432)
+:assumption (or (not x23357) x28158)
+:assumption (or x28121 (not x17616))
+:assumption (or (not x1696) (not x29255) (not x26292))
+:assumption (or (not x31877) (not x31716))
+:assumption (or (not x18200) (not x21733))
+:assumption (or x2540 (not x21882))
+:assumption (or (not x18708) (not x9008) x7171)
+:assumption (or x7663 x5093)
+:assumption (or x24342 (not x19460))
+:assumption (or x5028 x23050 (not x13417) (not x12524) (not x29442) (not x31077))
+:assumption (or (not x21146) (not x20006) (not x3371) (not x3385))
+:assumption (or (not x22651) x30751)
+:assumption (or x22587 x13574)
+:assumption (or (not x17201) (not x5060))
+:assumption (or x1897 (not x8255))
+:assumption (or (not x13113) x29720)
+:assumption (or (not x1999) (not x23546))
+:assumption (or x31178 x15057)
+:assumption (or x24871 (not x16234) x17607 (not x25748) (not x12298) (not x5633) x9494 x26410)
+:assumption (or x10705 (not x14927))
+:assumption (or (not x19697) (not x18003))
+:assumption (or x21574 x29253)
+:assumption (or x5422 x9666)
+:assumption (or x13966 (not x3960))
+:assumption (or x24453 x10333)
+:assumption (or (not x14339) x21498)
+:assumption (or (not x27166) (not x4204))
+:assumption (or x9268 (not x26537))
+:assumption (or (not x6361) (not x13239))
+:assumption (or x6444 (not x18314))
+:assumption (or x29665 x30338)
+:assumption (or (not x8002) x15394)
+:assumption (or (not x28351) (not x26047))
+:assumption (or (not x31076) (not x30716))
+:assumption (or x18248 x29999)
+:assumption (or (not x6594) x2226 x28387)
+:assumption (or x29457 x25354)
+:assumption (or (not x17967) (not x13765))
+:assumption (or x27689 x24078)
+:assumption (or (not x7531) x28086 (not x24422))
+:assumption (or x23399 x7766)
+:assumption (or x7188 (not x19743))
+:assumption (or x15615 (not x8002))
+:assumption (or (not x25934) x26967)
+:assumption (or x10994 (not x1247))
+:assumption (or x5534 (not x1257))
+:assumption (or x15338 x11875)
+:assumption (or (not x24756) x17379)
+:assumption (or (not x3353) (not x15745))
+:assumption (or (not x17861) (not x25450))
+:assumption (or (not x8002) x13542)
+:assumption (or x16703 (not x8002) x11311 (not x23244))
+:assumption (or x22804 (not x16413))
+:assumption (or (not x8093) (not x5028) (not x29442))
+:assumption (or (not x13649) x19996 x5609)
+:assumption (or x19139 x3853)
+:assumption (or (not x30859) (not x30484))
+:assumption (or (not x11337) (not x21843) (not x14842))
+:assumption (or x21377 (not x24367))
+:assumption (or x9004 x21459)
+:assumption (or x18825 (not x20290))
+:assumption (or (not x4829) x28171)
+:assumption (or x8277 (not x28915) (not x10145))
+:assumption (or x29819 x28107)
+:assumption (or (not x6448) (not x31322))
+:assumption (or x17816 (not x23108))
+:assumption (or (not x21202) x19467 (not x11506) x837)
+:assumption (or x16880 (not x982))
+:assumption (or (not x10077) x20776)
+:assumption (or x14522 (not x30252))
+:assumption (or (not x13846) (not x31354))
+:assumption (or (not x16550) x10874)
+:assumption (or (not x9677) x22855)
+:assumption (or (not x16025) x30858 x21008)
+:assumption (or (not x2430) x11406 (not x22289) (not x18715) x1582)
+:assumption (or (not x16745) x3354)
+:assumption (or (not x2683) x9244 x17855)
+:assumption (or x10615 (not x1327) (not x29546))
+:assumption (or x24722 x21007 (not x31577) (not x25982) x24195)
+:assumption (or x19144 (not x15971))
+:assumption (or (not x10183) x17386 (not x11527) (not x19768) x18003)
+:assumption (or (not x14393) (not x12887))
+:assumption (or (not x15904) x3074)
+:assumption (or (not x1229) x12482)
+:assumption (or (not x29133) (not x28230))
+:assumption (or x27115 (not x15366))
+:assumption (or (not x5911) x1547)
+:assumption (or x23406 x15571)
+:assumption (or (not x17495) x21796)
+:assumption (or (not x1901) x10557)
+:assumption (or x23202 x30395)
+:assumption (or (not x21715) x26067)
+:assumption (or x6964 (not x16994))
+:assumption (or (not x6095) x22575)
+:assumption (or x23866 (not x30904))
+:assumption (or x28973 x10744)
+:assumption (or x7509 (not x14085))
+:assumption (or x28075 (not x30754))
+:assumption (or x21324 (not x319))
+:assumption (or (not x15564) (not x13853))
+:assumption (or x3797 x4323)
+:assumption (or x4377 x31804 (not x7301) (not x11938))
+:assumption (or x16499 x25557 x3435)
+:assumption (or (not x3906) x21842)
+:assumption (or x6731 (not x5597))
+:assumption (or x12242 x25358)
+:assumption (or x24861 x13267)
+:assumption (or x30650 (not x28100))
+:assumption (or (not x7243) x23512)
+:assumption (or x16003 x8186)
+:assumption (or (not x25963) x30384)
+:assumption (or x20712 x26673 (not x21298))
+:assumption (or (not x22707) x339 x25606)
+:assumption (or x13742 (not x9010))
+:assumption (or x16604 x7481 (not x25945) x19789)
+:assumption (or x24299 x12033)
+:assumption (or x22616 (not x11493))
+:assumption (or x16003 (not x22982) (not x24200))
+:assumption (or (not x13138) (not x22481))
+:assumption (or (not x14681) x4702)
+:assumption (or (not x18217) x14695)
+:assumption (or x9610 x21537)
+:assumption (or x6909 x29162)
+:assumption (or (not x28532) x8002 x12584)
+:assumption (or (not x7388) x4967)
+:assumption (or (not x396) x19930)
+:assumption (or (not x6594) (not x28718) x30959)
+:assumption (or x25378 (not x30751))
+:assumption (or (not x8060) (not x30497))
+:assumption (or x21842 x4601)
+:assumption (or (not x3606) x19025)
+:assumption (or x26560 x25166)
+:assumption (or (not x25558) x25617)
+:assumption (or (not x12002) (not x3613))
+:assumption (or (not x29656) x28519)
+:assumption (or x24593 (not x16332))
+:assumption (or (not x2535) (not x22216))
+:assumption (or (not x11155) (not x30480) x17012 x3453 (not x23343))
+:assumption (or (not x10165) (not x918))
+:assumption (or (not x17302) x15324)
+:assumption (or x17813 (not x20103))
+:assumption (or x15866 (not x5181))
+:assumption (or x9693 x24447)
+:assumption (or (not x28912) (not x7849) x426 (not x29649) (not x2246))
+:assumption (or x18592 x20875)
+:assumption (or x5665 x17320 (not x7482))
+:assumption (or x17278 (not x9632) (not x20428) x9573 (not x27729))
+:assumption (or x16510 x27091 x19864 x1028 x24433 (not x21815) (not x28912))
+:assumption (or (not x12176) x9653 x16025)
+:assumption (or (not x17552) (not x28576))
+:assumption (or x24911 (not x24596) (not x15836) x15969)
+:assumption (or (not x1088) (not x30512) (not x28260) x17225)
+:assumption (or x5397 x24854)
+:assumption (or (not x9968) (not x6307))
+:assumption (or x462 x19612 (not x3548) (not x16718))
+:assumption (or (not x27257) x26553)
+:assumption (or x7488 x27398 (not x6307))
+:assumption (or x16025 (not x26213))
+:assumption (or x9336 (not x5510))
+:assumption (or x17540 x14207)
+:assumption (or x30421 (not x5528))
+:assumption (or x20949 x5289)
+:assumption (or (not x285) x18003)
+:assumption (or (not x13677) x13956)
+:assumption (or x27946 (not x29962))
+:assumption (or (not x5987) (not x1964))
+:assumption (or (not x22038) (not x5209))
+:assumption (or (not x31392) x8797)
+:assumption (or (not x30777) x6969)
+:assumption (or (not x17429) x18678)
+:assumption (or (not x3603) x15366 x12578)
+:assumption (or x12923 x15026)
+:assumption (or x15795 x4852 (not x20934) (not x13956) x8002)
+:assumption (or (not x18393) x15751)
+:assumption (or x3401 x732)
+:assumption (or x26709 x18335)
+:assumption (or x5829 x23562)
+:assumption (or x18820 x15424)
+:assumption (or (not x8658) x14117 (not x3750))
+:assumption (or x13232 (not x6969))
+:assumption (or (not x24999) x17010)
+:assumption (or (not x28970) x3237)
+:assumption (or x10939 (not x13774))
+:assumption (or x10690 x23343)
+:assumption (or (not x30594) x21431)
+:assumption (or x17149 (not x21955) (not x25472) (not x20671) x9504)
+:assumption (or x1621 (not x16818) (not x23279))
+:assumption (or (not x17644) (not x23546))
+:assumption (or (not x16599) x27139)
+:assumption (or x11552 x10830)
+:assumption (or x16834 x5551)
+:assumption (or (not x9912) (not x430))
+:assumption (or x27771 (not x25315))
+:assumption (or (not x29704) (not x19589))
+:assumption (or (not x18447) x5367 (not x27011) x1662)
+:assumption (or (not x6091) x10300)
+:assumption (or (not x15486) x10926)
+:assumption (or x4262 (not x7711) (not x28422) (not x22370))
+:assumption (or x6901 (not x7177))
+:assumption (or (not x23231) x9512)
+:assumption (or x24666 (not x24200))
+:assumption (or x31357 x18869)
+:assumption (or x13553 (not x18018) x29474 (not x2352) x3677 x27973)
+:assumption (or (not x8002) (not x21488) (not x18740))
+:assumption (or (not x12204) x14307)
+:assumption (or (not x28091) x8229)
+:assumption (or (not x31296) x9008)
+:assumption (or x21012 x25062)
+:assumption (or x30745 (not x3512))
+:assumption (or x14451 x20492)
+:assumption (or (not x24790) (not x16802) (not x8396))
+:assumption (or x19424 x15337)
+:assumption (or x17803 x23942)
+:assumption (or (not x2620) x6027)
+:assumption (or x5528 x11156 x25484)
+:assumption (or x16367 (not x27040))
+:assumption (or (not x26600) x7262 x7132 (not x12823) (not x11837) x24422 x31778)
+:assumption (or x21268 x16388)
+:assumption (or (not x30408) x29375)
+:assumption (or (not x18911) (not x30200))
+:assumption (or x11388 (not x26357))
+:assumption (or (not x17521) (not x20575))
+:assumption (or (not x28) (not x10391))
+:assumption (or (not x22858) x9595)
+:assumption (or x559 (not x1393))
+:assumption (or x25911 x27461)
+:assumption (or x5764 x26217)
+:assumption (or x19787 (not x12556))
+:assumption (or (not x6829) (not x18884))
+:assumption (or x22863 x1896)
+:assumption (or x30180 x14995)
+:assumption (or (not x27941) (not x30666))
+:assumption (or x20651 (not x12879))
+:assumption (or x364 (not x6229) (not x18310) (not x16741))
+:assumption (or (not x28959) x15729)
+:assumption (or (not x7961) (not x19944))
+:assumption (or (not x29122) (not x22533) (not x9821) (not x3599) (not x19527))
+:assumption (or (not x25438) (not x12894))
+:assumption (or x13476 (not x13319))
+:assumption (or x26812 x13620)
+:assumption (or x29876 x28214)
+:assumption (or x25319 (not x25102))
+:assumption (or (not x29744) (not x16649))
+:assumption (or x11590 x25360)
+:assumption (or x23148 (not x14906))
+:assumption (or (not x29824) x28238)
+:assumption (or (not x20818) x16834)
+:assumption (or x31264 (not x15307))
+:assumption (or x25294 x18909)
+:assumption (or x29153 (not x12952))
+:assumption (or (not x16220) x28344)
+:assumption (or (not x15522) (not x31897))
+:assumption (or x14277 x18146)
+:assumption (or (not x20903) (not x14680))
+:assumption (or (not x20593) (not x8623))
+:assumption (or x2997 x4476)
+:assumption (or x26781 (not x25229) (not x1654) x26121 (not x12573) x28529)
+:assumption (or (not x28453) (not x1821))
+:assumption (or x9494 (not x5633) x17607 x24871 x26410 (not x6606) (not x27029) (not x12298))
+:assumption (or (not x2908) x11988)
+:assumption (or (not x15926) x29736)
+:assumption (or x389 (not x1583) (not x12010) (not x22538))
+:assumption (or (not x31392) (not x3521))
+:assumption (or (not x17075) (not x26364))
+:assumption (or x21398 (not x26317))
+:assumption (or (not x6456) x29076)
+:assumption (or (not x27868) (not x30683))
+:assumption (or (not x23633) x2468)
+:assumption (or (not x18211) x14567)
+:assumption (or x30224 x3304)
+:assumption (or x12585 (not x21284))
+:assumption (or x6629 (not x18910))
+:assumption (or x15917 (not x29592) x24079 (not x12056) (not x21155) x8654)
+:assumption (or x26759 (not x9880))
+:assumption (or (not x22378) (not x20456))
+:assumption (or x28242 (not x27682) (not x2295))
+:assumption (or (not x19106) (not x28046))
+:assumption (or x7665 x10997)
+:assumption (or x7363 (not x17412))
+:assumption (or (not x2196) (not x16078))
+:assumption (or (not x23507) x15331)
+:assumption (or (not x11553) x2458)
+:assumption (or (not x10494) x16307 x26007)
+:assumption (or x16232 x7927 x3819 (not x7645) x22502 x23617 x1813 x5025)
+:assumption (or (not x12189) x23906)
+:assumption (or x29350 x15633)
+:assumption (or (not x11484) x8233 (not x10731))
+:assumption (or (not x25818) (not x20050))
+:assumption (or x17359 x13335)
+:assumption (or (not x6834) (not x23800))
+:assumption (or x29269 (not x15884))
+:assumption (or (not x21062) x964 x18492 x26670)
+:assumption (or x13051 x9504 (not x25016))
+:assumption (or (not x15875) (not x14455) x13590)
+:assumption (or (not x8974) x29813)
+:assumption (or x12042 x10230 (not x25471))
+:assumption (or x16087 x14979 (not x2133))
+:assumption (or x29367 (not x5528) (not x17930) (not x9008) x26810)
+:assumption (or x25759 (not x16745) x16944 (not x13444))
+:assumption (or x11904 (not x9651))
+:assumption (or x22139 x2035)
+:assumption (or (not x1393) x18513)
+:assumption (or (not x11706) x12045)
+:assumption (or (not x19682) (not x1333))
+:assumption (or x21091 x5528)
+:assumption (or (not x5505) x16583)
+:assumption (or (not x29312) x594)
+:assumption (or (not x3461) x10226)
+:assumption (or (not x25743) x15978)
+:assumption (or (not x9008) x8490)
+:assumption (or (not x8120) (not x29442) x5028 x19255)
+:assumption (or (not x3521) x12565)
+:assumption (or x1790 x28725 (not x15917) x25366)
+:assumption (or (not x12043) (not x8352))
+:assumption (or x30889 (not x16520))
+:assumption (or x14491 x7276 x23244)
+:assumption (or x12455 (not x16933))
+:assumption (or (not x26537) (not x31838))
+:assumption (or (not x12322) x20569)
+:assumption (or x19270 (not x25516))
+:assumption (or x24848 (not x28728))
+:assumption (or x6381 (not x16508) x21885 x20383)
+:assumption (or (not x9439) x11699)
+:assumption (or (not x27987) (not x25145))
+:assumption (or x13956 (not x14105))
+:assumption (or (not x26227) x26782)
+:assumption (or x3930 (not x669))
+:assumption (or x8843 x17941)
+:assumption (or x3188 (not x30998))
+:assumption (or x3063 (not x23412))
+:assumption (or (not x19889) x25382 (not x16523) (not x16648))
+:assumption (or (not x24119) (not x8683))
+:assumption (or (not x7151) (not x31734))
+:assumption (or (not x23244) (not x14804))
+:assumption (or (not x288) (not x21244))
+:assumption (or x28566 (not x14108))
+:assumption (or x24682 x7768)
+:assumption (or x2119 (not x25464))
+:assumption (or x23520 x27146 (not x20482))
+:assumption (or x17571 x1850)
+:assumption (or (not x23497) x13229)
+:assumption (or x12701 (not x4376))
+:assumption (or x21574 x15775)
+:assumption (or (not x26899) x24011)
+:assumption (or x21026 (not x24701))
+:assumption (or x6656 (not x8602) (not x477))
+:assumption (or x25150 x2971)
+:assumption (or x13694 (not x7271))
+:assumption (or (not x4157) x25609 (not x8602))
+:assumption (or x14668 x8810 x4494 x23189 (not x6287))
+:assumption (or x2901 x14522)
+:assumption (or x16375 (not x7948) (not x3026) (not x31049))
+:assumption (or (not x20087) (not x24756) (not x14522) (not x22427) x19193)
+:assumption (or x19379 (not x9423) x8866 x19443)
+:assumption (or x8763 (not x9161))
+:assumption (or (not x14019) (not x26102))
+:assumption (or (not x28587) x16025)
+:assumption (or x14591 x7583)
+:assumption (or x7765 (not x5286))
+:assumption (or (not x13714) (not x16721))
+:assumption (or x918 x19871 x20576 (not x4947))
+:assumption (or (not x8518) x16563)
+:assumption (or (not x24504) (not x14543))
+:assumption (or x24506 (not x7394))
+:assumption (or x17756 x25260)
+:assumption (or (not x1078) (not x2582))
+:assumption (or x24899 x19104)
+:assumption (or x17880 (not x17919))
+:assumption (or (not x7912) x8534)
+:assumption (or (not x27306) (not x8210))
+:assumption (or (not x12240) (not x6917))
+:assumption (or (not x26717) (not x15416) x13912 x29133 (not x30659) x1527 (not x22723))
+:assumption (or (not x12069) (not x9863))
+:assumption (or (not x24854) x19044 (not x15761) (not x5397) x17549 (not x11413))
+:assumption (or x23818 (not x2160))
+:assumption (or (not x26309) x17806 x2581 (not x30478) (not x24199) x5867 (not x30062) x2002 x20937)
+:assumption (or x26776 (not x20754))
+:assumption (or x17856 x24640)
+:assumption (or x20520 (not x27274))
+:assumption (or x10299 x16795)
+:assumption (or (not x13627) (not x8871))
+:assumption (or (not x1393) (not x459))
+:assumption (or x13505 x26166)
+:assumption (or x3096 (not x29330) x13779 x9813 x30573)
+:assumption (or x23609 (not x15894))
+:assumption (or (not x27636) x13941)
+:assumption (or x17492 x23792)
+:assumption (or x1341 x14124)
+:assumption (or (not x9531) (not x27456))
+:assumption (or x4810 (not x31549))
+:assumption (or x9245 x21756)
+:assumption (or x7360 x26810)
+:assumption (or x23067 x29506)
+:assumption (or x26246 (not x13709))
+:assumption (or x26207 (not x22502))
+:assumption (or x28307 (not x5156))
+:assumption (or (not x14189) (not x30648))
+:assumption (or (not x17961) (not x21002) x5202 x21334)
+:assumption (or x2528 x11517)
+:assumption (or x11572 (not x10076))
+:assumption (or (not x26083) (not x30717))
+:assumption (or x14468 (not x18278))
+:assumption (or (not x29325) x13204)
+:assumption (or (not x12770) (not x18802) (not x8586) (not x22792))
+:assumption (or (not x6185) x12379)
+:assumption (or x9434 (not x23787))
+:assumption (or x30189 (not x19370))
+:assumption (or (not x24484) (not x27627))
+:assumption (or x23781 (not x10611) x19717 x22355 (not x17866))
+:assumption (or x9094 x6276)
+:assumption (or (not x1899) (not x6571))
+:assumption (or x5405 (not x21240))
+:assumption (or x24720 (not x30031))
+:assumption (or x9959 x4418)
+:assumption (or (not x24756) x23159)
+:assumption (or x8107 (not x4594))
+:assumption (or x8226 (not x21656))
+:assumption (or x25659 (not x17075) (not x3367) x15892)
+:assumption (or (not x29238) x31474)
+:assumption (or (not x8946) (not x12560))
+:assumption (or x8281 (not x15213))
+:assumption (or (not x23264) (not x27424))
+:assumption (or (not x5734) x8545)
+:assumption (or x9925 x19573 x236)
+:assumption (or x29479 x23167 x10769 x4422)
+:assumption (or x11272 (not x4208))
+:assumption (or x16741 x10417)
+:assumption (or (not x5959) (not x9926))
+:assumption (or (not x12045) x30772)
+:assumption (or x29995 (not x12255))
+:assumption (or x1575 x30887)
+:assumption (or (not x29138) x18086)
+:assumption (or (not x16409) x25374 x10945)
+:assumption (or (not x17679) (not x26056) (not x12017))
+:assumption (or (not x13434) x30283)
+:assumption (or (not x2384) x2795)
+:assumption (or x28617 x5079)
+:assumption (or x9578 (not x19193))
+:assumption (or x21008 x7412 (not x5179) (not x29769) (not x29969))
+:assumption (or (not x4206) (not x30188))
+:assumption (or (not x658) (not x25988))
+:assumption (or (not x3982) x22967)
+:assumption (or (not x30393) (not x19460))
+:assumption (or (not x773) x29093)
+:assumption (or x2574 (not x22087) (not x18591))
+:assumption (or x20325 (not x20186))
+:assumption (or (not x24865) (not x14091))
+:assumption (or (not x28635) (not x15719))
+:assumption (or (not x18405) x18623)
+:assumption (or (not x30802) (not x27322))
+:assumption (or (not x2923) x28858)
+:assumption (or (not x3393) x16115 x25655 (not x8870))
+:assumption (or x26478 (not x14647))
+:assumption (or x20324 x31357)
+:assumption (or (not x18189) (not x25691))
+:assumption (or x10806 x11911)
+:assumption (or x17581 (not x25425))
+:assumption (or (not x22372) (not x27806))
+:assumption (or x23702 x30762 (not x30828) (not x5097) x3496 x3844)
+:assumption (or (not x22138) (not x662))
+:assumption (or x29760 x11518)
+:assumption (or x16922 (not x23390))
+:assumption (or x25300 x19928)
+:assumption (or (not x30456) (not x23287))
+:assumption (or x9773 x2966 (not x3788) x23270 (not x15901))
+:assumption (or x31858 x6065)
+:assumption (or (not x31180) x29139 (not x24941) (not x9008) (not x5528))
+:assumption (or x30157 (not x20475))
+:assumption (or x26596 x13297)
+:assumption (or (not x24909) x15857)
+:assumption (or x27891 x16536)
+:assumption (or x9648 x27620)
+:assumption (or x31151 (not x23496))
+:assumption (or (not x21851) (not x25277))
+:assumption (or (not x19643) (not x27809))
+:assumption (or (not x15795) x3742)
+:assumption (or x28973 x18741)
+:assumption (or (not x10070) x16648)
+:assumption (or x14433 (not x24694))
+:assumption (or (not x13956) x8401)
+:assumption (or x2546 (not x28515))
+:assumption (or x5944 (not x27276) x12345 x15572 x9110 (not x14881) x30891 x3921)
+:assumption (or x30235 x14259)
+:assumption (or x3817 x30930)
+:assumption (or x26904 x5528)
+:assumption (or (not x20606) (not x5140))
+:assumption (or (not x19427) x7930 (not x10394) (not x1920))
+:assumption (or x17183 x8347)
+:assumption (or (not x4179) (not x26613))
+:assumption (or (not x25175) (not x8002))
+:assumption (or (not x28732) (not x27787) (not x6146) (not x900))
+:assumption (or (not x21644) (not x24444))
+:assumption (or x30533 x31772 (not x4415) x3701 (not x10506) x5384 x1893 x3644)
+:assumption (or x20961 x17860 x24704)
+:assumption (or (not x10014) x24776 (not x1561) x4876 (not x19440) (not x30247) x17345 (not x19102) (not x21663))
+:assumption (or (not x13329) (not x7829))
+:assumption (or (not x31873) (not x22738))
+:assumption (or x29645 x24616)
+:assumption (or x9812 x14591 x2807 (not x15795))
+:assumption (or (not x1650) x8892)
+:assumption (or (not x22377) (not x6969))
+:assumption (or (not x22347) x13576 (not x26592) (not x14879) x3383)
+:assumption (or x13869 x4945)
+:assumption (or (not x12631) x19571)
+:assumption (or (not x5421) (not x30632))
+:assumption (or x13809 x18710)
+:assumption (or x5432 (not x1298))
+:assumption (or (not x1393) x11497)
+:assumption (or (not x13621) x15942)
+:assumption (or (not x24323) (not x6799))
+:assumption (or x24211 (not x18934))
+:assumption (or (not x8439) (not x18982) (not x9226) x16979 x13952)
+:assumption (or (not x30113) (not x26516))
+:assumption (or (not x27011) (not x29930))
+:assumption (or (not x10922) x26635)
+:assumption (or x14665 x23100)
+:assumption (or x13643 (not x16532))
+:assumption (or x12977 (not x5471))
+:assumption (or x23547 x20651)
+:assumption (or x17701 (not x1456))
+:assumption (or (not x17618) (not x27522))
+:assumption (or (not x25794) x3435 x31487)
+:assumption (or (not x6854) x17207)
+:assumption (or (not x31815) x12721)
+:assumption (or x10024 x15430)
+:assumption (or x9585 (not x13956) x944)
+:assumption (or x3382 (not x29599) x11676 (not x1195) (not x7174))
+:assumption (or x25875 x11634)
+:assumption (or x1717 (not x28242))
+:assumption (or (not x2168) (not x31078))
+:assumption (or x11843 (not x13484) (not x27665) (not x14494) x6603 (not x13060) x25390 (not x4194) (not x25335) (not x28026))
+:assumption (or (not x27450) (not x25337))
+:assumption (or x12409 (not x19903))
+:assumption (or (not x4556) x24632)
+:assumption (or (not x14243) (not x10053))
+:assumption (or (not x22256) x17358 x8229 (not x7158))
+:assumption (or (not x18701) (not x7240))
+:assumption (or (not x16851) (not x22943))
+:assumption (or (not x28302) x27861)
+:assumption (or x17093 x26010)
+:assumption (or (not x17052) x23408)
+:assumption (or (not x3453) x26004)
+:assumption (or (not x17782) x20643)
+:assumption (or (not x4395) (not x31363))
+:assumption (or (not x19051) x16017)
+:assumption (or x20338 (not x2581))
+:assumption (or x11581 x13504)
+:assumption (or x9937 x19898 (not x2032) x21025)
+:assumption (or x4795 x22567 (not x11754) (not x10597) (not x23899) x4334)
+:assumption (or x21284 (not x1295))
+:assumption (or (not x23958) x1175)
+:assumption (or (not x19711) (not x23033))
+:assumption (or (not x12856) (not x2049))
+:assumption (or (not x14686) x31767)
+:assumption (or (not x8285) (not x11821))
+:assumption (or x24414 x9164)
+:assumption (or x22079 (not x5971))
+:assumption (or (not x28273) (not x20824))
+:assumption (or (not x13188) (not x1492))
+:assumption (or x20559 (not x7114))
+:assumption (or (not x14492) (not x17080))
+:assumption (or (not x875) (not x7791))
+:assumption (or x29140 (not x16258))
+:assumption (or (not x12085) x8517)
+:assumption (or x14199 x12755)
+:assumption (or (not x20103) x6623 x3510 (not x31232) (not x10562))
+:assumption (or (not x31713) (not x18920))
+:assumption (or (not x323) (not x13998))
+:assumption (or x6873 x26472)
+:assumption (or x7748 x18663 (not x27019))
+:assumption (or x24346 x3761)
+:assumption (or x3433 (not x25903))
+:assumption (or x6951 x24928 x22484 (not x19537) x22848)
+:assumption (or (not x24900) (not x1442))
+:assumption (or (not x28134) (not x19987))
+:assumption (or (not x24075) x7885)
+:assumption (or (not x14104) (not x15773))
+:assumption (or x2804 x8600)
+:assumption (or x25568 x10967)
+:assumption (or x13548 x13942)
+:assumption (or x19839 (not x20369))
+:assumption (or (not x6381) (not x19565) x16604)
+:assumption (or x19923 (not x27458) x16025)
+:assumption (or x24283 (not x11219))
+:assumption (or x7101 (not x25659))
+:assumption (or x9008 x4414)
+:assumption (or (not x23303) (not x5873))
+:assumption (or (not x3247) x8186)
+:assumption (or (not x31183) (not x2390))
+:assumption (or (not x12134) (not x5452))
+:assumption (or (not x16346) (not x30631))
+:assumption (or (not x29649) x24216 x3647 x28912)
+:assumption (or (not x27751) x15414)
+:assumption (or x20191 x4053 x18988 x16132 (not x30954))
+:assumption (or x13994 x30227)
+:assumption (or (not x16910) x16007)
+:assumption (or x9008 (not x10148))
+:assumption (or (not x13633) (not x23392))
+:assumption (or (not x18782) (not x22067))
+:assumption (or x28626 x20438 (not x13773) (not x16510) (not x30534) x18344)
+:assumption (or x10267 x10501)
+:assumption (or x25606 (not x15693))
+:assumption (or (not x23389) x19002)
+:assumption (or x2971 x6350)
+:assumption (or x23974 (not x29914) x9917 (not x10459) x31622 x5964 (not x8311) (not x27922) (not x25429))
+:assumption (or (not x5741) (not x3155))
+:assumption (or x24595 (not x15135))
+:assumption (or (not x15734) x13956)
+:assumption (or x24175 (not x27809))
+:assumption (or x6594 (not x19346))
+:assumption (or x9738 x20386)
+:assumption (or x4618 x8421 x1411)
+:assumption (or x16877 (not x12300))
+:assumption (or (not x5864) (not x14839))
+:assumption (or (not x7827) x25056)
+:assumption (or (not x26110) x6912)
+:assumption (or (not x24474) (not x3316))
+:assumption (or x27947 x16950)
+:assumption (or (not x27278) x19016)
+:assumption (or x22552 x21644)
+:assumption (or (not x11208) x10937)
+:assumption (or x15540 (not x14274) x28469)
+:assumption (or x15636 x21060 (not x6036))
+:assumption (or (not x8621) x12660)
+:assumption (or x1939 x30234)
+:assumption (or (not x14989) (not x11281))
+:assumption (or (not x16168) (not x926))
+:assumption (or (not x8618) x20891)
+:assumption (or x2010 (not x12978) x6869 x11792 x27114)
+:assumption (or (not x17032) (not x8002) (not x15365))
+:assumption (or x4296 (not x28213))
+:assumption (or x18921 (not x8415))
+:assumption (or x12907 (not x30651) x7634 (not x14435))
+:assumption (or x6164 (not x30810))
+:assumption (or (not x30113) (not x11949))
+:assumption (or x3494 (not x31850) x796 x28128)
+:assumption (or x5996 x27060)
+:assumption (or x4949 x8406)
+:assumption (or (not x4998) x8212)
+:assumption (or (not x8411) (not x30889) x17804)
+:assumption (or (not x21326) (not x16185))
+:assumption (or (not x26215) x5899)
+:assumption (or x3063 (not x4856) x23279)
+:assumption (or (not x5001) (not x30230))
+:assumption (or (not x3404) x15760)
+:assumption (or x9931 (not x23831))
+:assumption (or (not x29637) (not x22510))
+:assumption (or (not x7094) (not x27030))
+:assumption (or x5562 x25659 (not x387))
+:assumption (or (not x7930) x23903)
+:assumption (or x8602 (not x28135) x13938)
+:assumption (or (not x19711) x16020)
+:assumption (or x1141 (not x7851))
+:assumption (or x21060 x19010)
+:assumption (or x8601 (not x9340))
+:assumption (or (not x25144) x19547)
+:assumption (or x12828 x15366 (not x12578))
+:assumption (or x16379 x31172)
+:assumption (or x23660 x6746)
+:assumption (or (not x12799) x15086 (not x16802) (not x5030) (not x29884) x29096)
+:assumption (or (not x23149) x13146)
+:assumption (or (not x23244) x17071)
+:assumption (or x31782 (not x13212))
+:assumption (or x4381 (not x21622))
+:assumption (or x18486 x12128)
+:assumption (or (not x27061) x25445)
+:assumption (or (not x26432) x2782 (not x17359) x28130)
+:assumption (or (not x28570) (not x18882))
+:assumption (or x4126 (not x1621))
+:assumption (or x5581 (not x7685))
+:assumption (or (not x13375) x16852)
+:assumption (or (not x22244) (not x21074))
+:assumption (or x635 (not x15711))
+:assumption (or x26838 x4047)
+:assumption (or (not x23152) x25491)
+:assumption (or x17890 x7740)
+:assumption (or x7550 x7319)
+:assumption (or x16425 (not x8602))
+:assumption (or (not x11785) x16036)
+:assumption (or x18380 (not x7123) (not x9319) x26915 (not x29721) (not x23244))
+:assumption (or x21298 (not x4989))
+:assumption (or (not x18633) (not x13926))
+:assumption (or x15178 (not x16783))
+:assumption (or x26236 (not x27332))
+:assumption (or (not x30798) (not x2334) (not x13487))
+:assumption (or (not x19472) x19306)
+:assumption (or x6117 (not x25315) x24504)
+:assumption (or (not x7540) x6920)
+:assumption (or (not x24463) x169)
+:assumption (or x19205 x10958)
+:assumption (or x20303 x17116)
+:assumption (or x25362 (not x20529))
+:assumption (or x15917 x22220)
+:assumption (or (not x15260) x744 x26362)
+:assumption (or (not x15079) x5898)
+:assumption (or x29176 x17928)
+:assumption (or (not x28344) (not x9425))
+:assumption (or (not x22666) (not x2875))
+:assumption (or (not x17571) x17400 (not x11616) x18170 x7200 (not x19686) x4103)
+:assumption (or x24157 x28061)
+:assumption (or (not x27631) x9272)
+:assumption (or x28708 (not x25784) (not x6940))
+:assumption (or (not x14919) (not x20118))
+:assumption (or x3207 (not x23880))
+:assumption (or x27045 x20263 x5014)
+:assumption (or x13059 (not x28967))
+:assumption (or (not x1745) x1345)
+:assumption (or (not x494) x22987)
+:assumption (or (not x31426) x22177)
+:assumption (or (not x13833) x17374)
+:assumption (or (not x18578) x8761)
+:assumption (or x26923 (not x16025))
+:assumption (or x11654 (not x4956))
+:assumption (or x20672 x18487)
+:assumption (or x5322 x1491)
+:assumption (or x17208 x2042)
+:assumption (or x21300 x28359)
+:assumption (or (not x10980) x10483)
+:assumption (or (not x30981) x15404)
+:assumption (or x20070 (not x29205))
+:assumption (or x11219 (not x31101))
+:assumption (or (not x27068) (not x28015))
+:assumption (or x16217 x5528)
+:assumption (or x28541 x16374 (not x21815) x140 (not x16510))
+:assumption (or (not x1930) (not x3153))
+:assumption (or (not x14900) x1621)
+:assumption (or x29978 x24731)
+:assumption (or (not x7937) x14442)
+:assumption (or x18333 x1403 (not x29521) (not x20371) x27018 x8918 (not x20327))
+:assumption (or (not x20949) x24136)
+:assumption (or x9979 x25364)
+:assumption (or (not x15182) x27678)
+:assumption (or (not x8364) x20778)
+:assumption (or x4451 x31837)
+:assumption (or x31397 (not x15616))
+:assumption (or (not x9970) x16528)
+:assumption (or (not x3782) (not x4329))
+:assumption (or (not x754) (not x8478))
+:assumption (or x30540 x27543)
+:assumption (or x26424 (not x26286) x9008 x20535 x24384 (not x27318) x6344 (not x10819))
+:assumption (or (not x27725) (not x9955) x10071)
+:assumption (or x1816 x30424 (not x11288))
+:assumption (or x18519 x25959)
+:assumption (or x7510 x5244)
+:assumption (or x2905 (not x13871))
+:assumption (or (not x19418) x3653)
+:assumption (or x6152 x19817)
+:assumption (or (not x10903) (not x23328))
+:assumption (or (not x19748) x4962)
+:assumption (or x10611 x29797)
+:assumption (or (not x16459) (not x20603))
+:assumption (or (not x26828) x5652 x17225 x15007)
+:assumption (or x7344 (not x2555))
+:assumption (or x26203 x23244)
+:assumption (or x21298 (not x24844))
+:assumption (or x23693 (not x29312) x28223)
+:assumption (or x14086 (not x1132))
+:assumption (or x14604 (not x827))
+:assumption (or x23558 (not x508))
+:assumption (or x8717 (not x413))
+:assumption (or x29040 (not x10503))
+:assumption (or x12520 x8002)
+:assumption (or x944 (not x20458))
+:assumption (or (not x22833) x23812)
+:assumption (or x31504 (not x17771) (not x310) (not x8772) x29466 x4371)
+:assumption (or (not x23843) x5213)
+:assumption (or (not x14126) (not x10846))
+:assumption (or (not x25659) x24143 x18510)
+:assumption (or (not x16813) (not x13576))
+:assumption (or (not x24935) x28253)
+:assumption (or x9025 (not x13106))
+:assumption (or (not x26757) x20888)
+:assumption (or (not x20402) (not x15219))
+:assumption (or (not x26446) x31081)
+:assumption (or x16937 x5899)
+:assumption (or (not x15342) x6329)
+:assumption (or (not x13956) (not x1123))
+:assumption (or x27766 (not x17019))
+:assumption (or x276 x4504)
+:assumption (or (not x11473) x7846)
+:assumption (or x20083 (not x27509))
+:assumption (or x14691 (not x3085))
+:assumption (or x23794 (not x21896) x5048)
+:assumption (or x22545 x22531)
+:assumption (or x15440 x16991 (not x13018) (not x24085))
+:assumption (or (not x218) x26630)
+:assumption (or x26038 (not x5649))
+:assumption (or (not x21628) x25366)
+:assumption (or (not x17942) x9444)
+:assumption (or (not x11736) x20917)
+:assumption (or x20431 (not x24306))
+:assumption (or (not x18820) (not x24424))
+:assumption (or (not x26726) x5788)
+:assumption (or x28890 x11703 x24249 (not x26126) x16067)
+:assumption (or (not x26313) x1389)
+:assumption (or (not x19727) x27244 x16294 (not x23445) x26078 (not x9023) (not x29212) x11323 (not x30541) (not x12715) (not x25305) (not x4873))
+:assumption (or x14242 x13417 x20156)
+:assumption (or (not x18579) x16066)
+:assumption (or (not x29294) (not x28732))
+:assumption (or (not x1329) x5886 (not x7021))
+:assumption (or (not x3172) (not x23745))
+:assumption (or (not x24001) x20042)
+:assumption (or (not x12541) (not x14579))
+:assumption (or x5644 (not x19864))
+:assumption (or (not x19717) x17866)
+:assumption (or x5001 x30230 x25285)
+:assumption (or (not x31063) x25659 x25477)
+:assumption (or x18554 (not x20632))
+:assumption (or (not x18159) (not x9192))
+:assumption (or x3593 x31065)
+:assumption (or x5811 (not x12522))
+:assumption (or (not x1727) (not x1400) x8002)
+:assumption (or x23223 (not x2089) (not x27158) (not x12420) (not x20020) (not x29922))
+:assumption (or x13578 (not x28417))
+:assumption (or (not x13877) x4298)
+:assumption (or (not x16746) x12346 (not x27207))
+:assumption (or x19847 (not x23244))
+:assumption (or x28462 (not x19691))
+:assumption (or x30329 (not x10622))
+:assumption (or (not x28565) (not x827))
+:assumption (or x16130 (not x19578))
+:assumption (or (not x480) x1970)
+:assumption (or x14506 (not x11958))
+:assumption (or (not x11571) x28958)
+:assumption (or (not x28123) (not x8005))
+:assumption (or (not x13638) x25590)
+:assumption (or x28242 (not x12089) x28098)
+:assumption (or x21103 x23778)
+:assumption (or (not x16993) x14263)
+:assumption (or x29622 x14996)
+:assumption (or (not x26217) (not x5764) (not x20606))
+:assumption (or (not x9848) (not x16881))
+:assumption (or (not x4324) (not x12490))
+:assumption (or x3487 (not x22639) x8207)
+:assumption (or x22724 (not x7081))
+:assumption (or (not x22495) (not x3149))
+:assumption (or x4928 x18335)
+:assumption (or (not x2892) x29549)
+:assumption (or x29312 (not x14962))
+:assumption (or (not x1677) (not x16025))
+:assumption (or (not x8177) x31848)
+:assumption (or (not x16897) (not x9018))
+:assumption (or (not x438) x21268)
+:assumption (or x17555 x22019)
+:assumption (or x12455 x3571)
+:assumption (or x15759 (not x25659))
+:assumption (or x16399 x1916)
+:assumption (or (not x29014) (not x14635))
+:assumption (or (not x28896) x27260)
+:assumption (or (not x7374) (not x827) (not x29465) (not x15000) (not x26761) (not x15250) (not x15899) x31880)
+:assumption (or x30141 (not x2334))
+:assumption (or (not x14552) x1600)
+:assumption (or x4900 (not x8660))
+:assumption (or (not x18857) x7012)
+:assumption (or (not x24657) (not x2796))
+:assumption (or (not x27467) (not x6951))
+:assumption (or x20260 (not x20309))
+:assumption (or (not x964) x6085 x369)
+:assumption (or x12487 x16589 (not x27133) (not x22855) (not x22348))
+:assumption (or (not x24850) x8532)
+:assumption (or x19768 x10183)
+:assumption (or (not x19400) x18428)
+:assumption (or (not x1891) (not x5101))
+:assumption (or x12801 x12766)
+:assumption (or (not x20953) (not x21383))
+:assumption (or x21939 (not x22607))
+:assumption (or x15656 (not x20765))
+:assumption (or x10064 x17077 (not x23244))
+:assumption (or (not x8493) x19758 (not x28830) x169 (not x30124) (not x21815) (not x16510))
+:assumption (or (not x16049) x28689)
+:assumption (or (not x30345) (not x23399))
+:assumption (or x24727 (not x12954))
+:assumption (or (not x11968) x31352)
+:assumption (or x12928 x30880)
+:assumption (or x20431 x31363)
+:assumption (or (not x10076) (not x21905))
+:assumption (or x20342 (not x3044))
+:assumption (or x21384 (not x3614))
+:assumption (or (not x30185) x20884)
+:assumption (or x21865 x8459)
+:assumption (or x12740 x7599)
+:assumption (or (not x12481) (not x9274))
+:assumption (or x17883 (not x1228))
+:assumption (or x25584 x2866)
+:assumption (or (not x19816) (not x6316))
+:assumption (or x21495 x16801 x6969)
+:assumption (or x15193 x21889)
+:assumption (or x9328 x16817)
+:assumption (or (not x21750) x16879 x18362 x31499 (not x2905) (not x10060))
+:assumption (or x10792 x27099)
+:assumption (or x22895 (not x14839))
+:assumption (or (not x10014) (not x21663) x24776 (not x19102) x7671 (not x5685) (not x30247) (not x1561) x4876)
+:assumption (or x11411 (not x8759))
+:assumption (or x826 x19483)
+:assumption (or (not x18754) x23244)
+:assumption (or x23646 (not x6822) (not x3378) (not x30118) x9008 (not x18136))
+:assumption (or x6440 x8842)
+:assumption (or x29430 (not x3196))
+:assumption (or x14591 (not x29349))
+:assumption (or x4237 x1599)
+:assumption (or (not x31767) x14769)
+:assumption (or (not x15839) (not x14591))
+:assumption (or (not x20966) (not x7643))
+:assumption (or (not x10764) (not x14392))
+:assumption (or x25675 x25659)
+:assumption (or (not x18859) x14263)
+:assumption (or x31848 (not x31024))
+:assumption (or x22604 x19913)
+:assumption (or (not x6124) x31060)
+:assumption (or (not x20290) (not x3411))
+:assumption (or x30113 (not x31782) x27101)
+:assumption (or x9710 (not x8176))
+:assumption (or x27348 (not x2866))
+:assumption (or (not x23770) x4569)
+:assumption (or x9008 x31780)
+:assumption (or (not x14839) (not x15313))
+:assumption (or (not x31481) x24088)
+:assumption (or (not x25710) (not x2410) (not x12065) (not x25431) x8269 (not x9135) x21771)
+:assumption (or (not x29882) (not x1665))
+:assumption (or x30019 (not x22709))
+:assumption (or (not x17171) x11003)
+:assumption (or x15607 x10263)
+:assumption (or x12202 x14005)
+:assumption (or x28751 (not x17021))
+:assumption (or x747 x23368 (not x24402) (not x1764) x15795)
+:assumption (or x10784 x4898)
+:assumption (or (not x21690) (not x30054))
+:assumption (or (not x9387) (not x20309) (not x11343))
+:assumption (or x29649 x13721)
+:assumption (or (not x9895) (not x7264))
+:assumption (or (not x25832) (not x1694))
+:assumption (or (not x17724) (not x17177))
+:assumption (or (not x29204) (not x22544) x16239 (not x9748) x22171 (not x22865))
+:assumption (or (not x29784) (not x25129))
+:assumption (or (not x23417) x12194)
+:assumption (or (not x5244) (not x7510) (not x17418))
+:assumption (or (not x12434) x25732 x3646 (not x26143))
+:assumption (or (not x4791) x14698)
+:assumption (or x18567 (not x22044) (not x19992))
+:assumption (or x23131 (not x25561))
+:assumption (or x13677 (not x1133))
+:assumption (or x16524 x11647)
+:assumption (or (not x25423) (not x16483))
+:assumption (or (not x2133) x16741 x14462 (not x5481))
+:assumption (or x14908 x8379)
+:assumption (or x2294 (not x9372))
+:assumption (or x9329 x29460)
+:assumption (or (not x8461) x9321)
+:assumption (or x17139 x13592)
+:assumption (or x18570 x12717)
+:assumption (or (not x29545) x27537)
+:assumption (or (not x17075) (not x21815) x4806 (not x16510) (not x19428))
+:assumption (or (not x6209) x16304)
+:assumption (or (not x29447) x17520)
+:assumption (or x24178 (not x23514))
+:assumption (or (not x4460) (not x3142))
+:assumption (or (not x31555) (not x916))
+:assumption (or (not x1837) x5323)
+:assumption (or (not x6083) (not x13956))
+:assumption (or (not x14178) x3743 x29649)
+:assumption (or x7109 (not x8906))
+:assumption (or x1910 x20961 x8120 (not x15287))
+:assumption (or (not x4259) (not x285))
+:assumption (or (not x16634) (not x16652) (not x12578))
+:assumption (or (not x13885) x15232 (not x20314) x30363)
+:assumption (or (not x26767) x22195)
+:assumption (or (not x16893) (not x4010))
+:assumption (or (not x15075) (not x7625) x3520 (not x18309) x29257 x8514 (not x29969) (not x9120))
+:assumption (or x8002 (not x19525) x23244 x30667 x16574)
+:assumption (or x16506 x29503)
+:assumption (or x29884 (not x29096))
+:assumption (or x3441 x27228)
+:assumption (or (not x22185) (not x14757))
+:assumption (or x25556 x21821)
+:assumption (or (not x13665) (not x9250) x30208 x10261)
+:assumption (or (not x10223) (not x21325))
+:assumption (or x107 x29537)
+:assumption (or x9643 (not x25373))
+:assumption (or (not x4818) x12775)
+:assumption (or (not x12242) (not x23076) x26794)
+:assumption (or x28795 (not x21780))
+:assumption (or (not x2012) x4386)
+:assumption (or x12911 (not x20060) x4968)
+:assumption (or (not x25659) x20952)
+:assumption (or x10608 (not x3001))
+:assumption (or (not x23658) (not x29734))
+:assumption (or x7227 x25774)
+:assumption (or x18441 (not x11506) (not x20865) x18119)
+:assumption (or (not x9505) (not x30206))
+:assumption (or x24722 (not x21955) x26457)
+:assumption (or (not x15384) (not x6603))
+:assumption (or x10770 x17113)
+:assumption (or x6929 (not x10525))
+:assumption (or (not x11417) x14147)
+:assumption (or (not x28281) x11992 (not x18859))
+:assumption (or x14575 (not x19166))
+:assumption (or (not x27915) x19066 x11847)
+:assumption (or x23649 (not x763))
+:assumption (or (not x12766) (not x4251) x4939 (not x11181) x22073 (not x4559) (not x12801) x9352 x3949)
+:assumption (or x31604 x370)
+:assumption (or x26626 (not x3458))
+:assumption (or (not x18955) (not x26777))
+:assumption (or x30633 (not x11762))
+:assumption (or x7537 (not x4211))
+:assumption (or (not x9531) x512)
+:assumption (or (not x25952) (not x23978))
+:assumption (or x6640 x22290)
+:assumption (or x26530 (not x30138))
+:assumption (or (not x8135) x8139)
+:assumption (or (not x17213) x8015)
+:assumption (or x2317 (not x20046) (not x26604) (not x6978) (not x25745) (not x4980) (not x21684) x26500)
+:assumption (or (not x28184) x2312)
+:assumption (or x26864 (not x8002) (not x23244))
+:assumption (or (not x1672) x31767)
+:assumption (or x27052 (not x31829))
+:assumption (or x15645 (not x5552))
+:assumption (or x13407 x29762)
+:assumption (or x13729 x24986)
+:assumption (or (not x2224) x13622)
+:assumption (or (not x1064) x12637)
+:assumption (or (not x15007) x26828)
+:assumption (or (not x13993) x16457)
+:assumption (or (not x11434) (not x9253))
+:assumption (or (not x1799) x27711)
+:assumption (or x17011 (not x27790))
+:assumption (or (not x17041) (not x9853))
+:assumption (or (not x10022) (not x12176) x23244 x13956 x8002 (not x29305))
+:assumption (or x25733 (not x29442) (not x3782))
+:assumption (or x9191 (not x9401) x30138)
+:assumption (or (not x3885) (not x28687))
+:assumption (or (not x23218) (not x11066))
+:assumption (or x5886 x18459 x5995)
+:assumption (or (not x29474) x18852)
+:assumption (or (not x15174) x24359)
+:assumption (or x26240 x2814)
+:assumption (or x16206 (not x17359))
+:assumption (or x1614 x19753)
+:assumption (or x14096 x23242)
+:assumption (or x11069 (not x17260) (not x15034) x3188 x10909 (not x15998))
+:assumption (or x28512 (not x27574))
+:assumption (or (not x26432) x3384)
+:assumption (or (not x3646) x24030 x23101 x11345 x2686 (not x25128) (not x14766) x29801)
+:assumption (or (not x21887) (not x5528))
+:assumption (or x24772 (not x14621))
+:assumption (or x11447 (not x30970) x12045 x16965 x22581 x26447 x21454 (not x18822))
+:assumption (or x14295 (not x20482))
+:assumption (or (not x11292) x24147)
+:assumption (or x8819 x15593)
+:assumption (or (not x23888) x2246)
+:assumption (or x10755 (not x17256))
+:assumption (or x11431 x22438 x19587 (not x24366) (not x7494))
+:assumption (or x6918 x15774)
+:assumption (or x30503 x29677)
+:assumption (or x22735 (not x4348))
+:assumption (or x30352 x23017 x15395 (not x15134) (not x15069) (not x22860) (not x7172) x13825 (not x5642))
+:assumption (or x13893 x9844)
+:assumption (or x13956 x17255 x25818)
+:assumption (or x24903 (not x19044) (not x30083) x18159 x8147)
+:assumption (or x13056 x12008)
+:assumption (or x9961 (not x5937))
+:assumption (or (not x25578) (not x23244))
+:assumption (or x2631 (not x24448))
+:assumption (or (not x17959) (not x5255))
+:assumption (or (not x8328) (not x31829))
+:assumption (or x30314 x23098)
+:assumption (or x1875 x14336)
+:assumption (or x24079 (not x16988))
+:assumption (or (not x21286) x21633)
+:assumption (or (not x19431) (not x15802))
+:assumption (or (not x16176) (not x30185))
+:assumption (or x24024 (not x24512))
+:assumption (or (not x19318) x4450 (not x26975) (not x28219) (not x4559) x15051 x13591 x4 (not x20491))
+:assumption (or x26549 (not x3191))
+:assumption (or x4640 (not x22711))
+:assumption (or x31316 (not x26470) x25436 (not x26621) (not x29139) (not x6842))
+:assumption (or x9363 x20324)
+:assumption (or (not x31788) (not x22156))
+:assumption (or x2778 (not x31241))
+:assumption (or x30845 x19513 x29082 (not x3156) x20374 (not x11711))
+:assumption (or (not x9008) x27169 x5474 (not x30667) (not x5528))
+:assumption (or x4425 x26909)
+:assumption (or (not x20256) x12328 x19183)
+:assumption (or (not x15861) (not x2715))
+:assumption (or x2112 x20726)
+:assumption (or (not x5577) (not x9880))
+:assumption (or x887 x6951 (not x6149) x1021)
+:assumption (or x12768 (not x7425))
+:assumption (or (not x10053) (not x30507))
+:assumption (or x31076 (not x16652) x18173 x5185 (not x26872))
+:assumption (or x23645 (not x10734))
+:assumption (or (not x22502) (not x23617))
+:assumption (or x14117 x22843 (not x1512) x8658)
+:assumption (or (not x6151) (not x19575))
+:assumption (or (not x2721) x5118)
+:assumption (or x29511 (not x18723))
+:assumption (or x8443 (not x10216))
+:assumption (or (not x28300) x31079)
+:assumption (or x18949 x31161)
+:assumption (or (not x9829) x18264)
+:assumption (or (not x29910) (not x24756))
+:assumption (or (not x28331) (not x11135))
+:assumption (or (not x3785) (not x3655))
+:assumption (or (not x9904) x7779 (not x5394) x3305 x18197 (not x4957) x30944 x3611)
+:assumption (or (not x14609) (not x1761))
+:assumption (or (not x15536) (not x10570))
+:assumption (or x21827 (not x10481))
+:assumption (or x5921 (not x17449))
+:assumption (or x9004 (not x3958))
+:assumption (or (not x14593) x15461)
+:assumption (or (not x25691) x1574)
+:assumption (or (not x10247) (not x17784))
+:assumption (or (not x20713) (not x5108))
+:assumption (or x19855 x6359)
+:assumption (or (not x13253) (not x13721) (not x29844) x8047)
+:assumption (or x19298 x5528 (not x14039))
+:assumption (or (not x15954) (not x14591))
+:assumption (or (not x4665) (not x8577))
+:assumption (or (not x9856) (not x6036))
+:assumption (or (not x24105) (not x27035) (not x6780) x8518 (not x23451) x15434)
+:assumption (or (not x27992) x29148)
+:assumption (or x23320 (not x23418))
+:assumption (or x4243 x9784 x8002)
+:assumption (or (not x23969) x25579)
+:assumption (or x19184 x13188 x9767)
+:assumption (or (not x6392) (not x1953) x25625)
+:assumption (or x21230 x25659 x14508 x12242)
+:assumption (or x24540 (not x19903))
+:assumption (or x23735 (not x25366))
+:assumption (or (not x12410) (not x23114) x23906 (not x21540) x17083 (not x15422))
+:assumption (or (not x22112) (not x18635) x6495 x3575)
+:assumption (or (not x7565) (not x17155))
+:assumption (or x14368 (not x24835) (not x8293) x20543)
+:assumption (or (not x24422) x11837)
+:assumption (or (not x27174) (not x14599))
+:assumption (or x25042 x2483)
+:assumption (or (not x2269) x15917 (not x31398) x3497 x29643 x21806)
+:assumption (or (not x18199) (not x1991))
+:assumption (or (not x27537) x10667)
+:assumption (or (not x14860) (not x7964) (not x30465))
+:assumption (or (not x20352) x9277)
+:assumption (or x26793 (not x5903))
+:assumption (or (not x24487) x17051 (not x23422) x1776 x8083)
+:assumption (or x2840 (not x24982) x3055)
+:assumption (or (not x5233) x14443)
+:assumption (or x24819 (not x23792) (not x17492) (not x21787) x5175)
+:assumption (or x4716 (not x2522) x22374 (not x26332) (not x15125))
+:assumption (or (not x1135) (not x10335))
+:assumption (or (not x3970) (not x21354))
+:assumption (or (not x31326) x7598)
+:assumption (or x27760 x7966)
+:assumption (or x11889 x30138 (not x15735) (not x5297))
+:assumption (or x6100 (not x6251))
+:assumption (or x7266 (not x2486))
+:assumption (or (not x8853) (not x28921))
+:assumption (or (not x6123) (not x10756))
+:assumption (or x22192 (not x14391))
+:assumption (or x961 x25160)
+:assumption (or (not x16741) (not x4676) x15415)
+:assumption (or x1648 x2722 (not x29375) x9008 (not x31689) (not x13028) (not x28498) x30408)
+:assumption (or (not x25688) x3660)
+:assumption (or (not x10450) x30024)
+:assumption (or (not x15685) (not x20846))
+:assumption (or (not x730) (not x17977))
+:assumption (or x8184 x10194)
+:assumption (or x26871 x2701)
+:assumption (or (not x28990) (not x13125) x31029 (not x14556) (not x5996) (not x27060) (not x9061))
+:assumption (or (not x5886) (not x15235))
+:assumption (or (not x22375) (not x16195))
+:assumption (or (not x28612) (not x4128))
+:assumption (or x27909 (not x6447))
+:assumption (or (not x29698) (not x18795))
+:assumption (or (not x2875) x18476)
+:assumption (or (not x4306) (not x28912))
+:assumption (or (not x9110) x6290)
+:assumption (or (not x26224) x17496)
+:assumption (or (not x18650) x28911)
+:assumption (or x13683 x18507 (not x7176) x4265 (not x7345) x1444 x23747 (not x3291) x877)
+:assumption (or (not x15706) (not x20894) x26354 (not x13594) (not x16531) x31926 x2579)
+:assumption (or (not x28915) (not x16643))
+:assumption (or (not x21065) (not x17386))
+:assumption (or x7300 x15175)
+:assumption (or (not x11014) x18806)
+:assumption (or (not x19485) x23991)
+:assumption (or (not x5552) x27372)
+:assumption (or (not x31243) x23564)
+:assumption (or (not x30821) (not x5881))
+:assumption (or x1102 (not x14536))
+:assumption (or (not x19362) x17631)
+:assumption (or (not x17610) (not x22463))
+:assumption (or x14839 (not x8934))
+:assumption (or (not x16500) (not x12039))
+:assumption (or x10298 (not x15641) x13229 (not x1611))
+:assumption (or (not x29900) (not x27349))
+:assumption (or x11268 (not x11171))
+:assumption (or (not x10953) x2334)
+:assumption (or x11325 x24959 x15903 (not x12283))
+:assumption (or x30375 x14539)
+:assumption (or (not x214) x8002)
+:assumption (or x5431 x28688)
+:assumption (or (not x16856) (not x28063))
+:assumption (or (not x26354) x19030)
+:assumption (or (not x5285) (not x17525))
+:assumption (or (not x26670) (not x9618))
+:assumption (or (not x15273) x19771)
+:assumption (or x25366 x695)
+:assumption (or x29726 x15896)
+:assumption (or x20989 (not x19569) x10336)
+:assumption (or x11528 (not x22966))
+:assumption (or x12578 (not x23150) x30348)
+:assumption (or (not x18348) x16844)
+:assumption (or x6751 (not x4284))
+:assumption (or x14023 x6909)
+:assumption (or (not x25707) (not x20725))
+:assumption (or (not x10517) (not x24756))
+:assumption (or (not x7163) (not x26942))
+:assumption (or (not x23244) x22379)
+:assumption (or x4648 (not x4033))
+:assumption (or x28791 x30113 x15799)
+:assumption (or (not x17801) (not x23882))
+:assumption (or x830 (not x15195))
+:assumption (or (not x27876) x17185)
+:assumption (or (not x27646) (not x30488))
+:assumption (or (not x13956) (not x24737))
+:assumption (or x5831 (not x24161))
+:assumption (or x18451 (not x26897))
+:assumption (or (not x31360) (not x23810))
+:assumption (or x28582 x10751)
+:assumption (or x31315 (not x13534) (not x15621))
+:assumption (or x8673 x15877)
+:assumption (or (not x13852) (not x22100))
+:assumption (or x19889 x6208)
+:assumption (or (not x531) (not x31152))
+:assumption (or (not x13669) x7035)
+:assumption (or (not x28586) x3421)
+:assumption (or (not x20514) (not x17809))
+:assumption (or x24198 x27249)
+:assumption (or x5871 x31734 x27911)
+:assumption (or x2061 (not x3455) x10533 x17572)
+:assumption (or (not x21244) x31080)
+:assumption (or x18014 x29670 x234)
+:assumption (or x5042 x24578)
+:assumption (or (not x3574) x9267)
+:assumption (or x10648 x19500)
+:assumption (or x25888 x17559)
+:assumption (or x14960 x740 x3777 x1426 (not x9850))
+:assumption (or (not x11166) x855)
+:assumption (or x31718 x15733 x5461 x13655 (not x25438))
+:assumption (or x15049 x11001 (not x24618) (not x9814) (not x5008))
+:assumption (or x22002 (not x17019))
+:assumption (or x26617 x31226)
+:assumption (or (not x2943) (not x12574))
+:assumption (or (not x4501) x6336)
+:assumption (or (not x10336) (not x9096) x4504 (not x14452) (not x7859))
+:assumption (or (not x10781) (not x8148) (not x1502))
+:assumption (or x12444 (not x20816))
+:assumption (or x15249 x30212)
+:assumption (or x21308 x23312)
+:assumption (or x9670 (not x8319))
+:assumption (or x15958 (not x29373))
+:assumption (or (not x7958) x13806)
+:assumption (or (not x13858) x29414)
+:assumption (or x21508 x16025)
+:assumption (or x13443 (not x14966) (not x20597) x24952 (not x24233) (not x17566) x9157)
+:assumption (or x25558 x12748)
+:assumption (or x10964 x30288)
+:assumption (or x9008 (not x25702) x12170)
+:assumption (or (not x16510) (not x10749))
+:assumption (or (not x24304) x21912)
+:assumption (or (not x29029) x17116 (not x26355) (not x6351))
+:assumption (or x7177 (not x9106) (not x14690) x13576 x14973)
+:assumption (or (not x7416) x30003)
+:assumption (or x22162 (not x16263))
+:assumption (or x22869 (not x17908))
+:assumption (or x4827 x17276)
+:assumption (or (not x26841) (not x9008))
+:assumption (or x28345 (not x28921))
+:assumption (or x6659 x24938 (not x21298) x30561)
+:assumption (or x28836 (not x15588) (not x8602))
+:assumption (or x21349 (not x12344))
+:assumption (or x10958 (not x19454))
+:assumption (or x5428 (not x15202))
+:assumption (or (not x202) (not x17195) x3001 (not x3670))
+:assumption (or x26962 x19711 (not x16910))
+:assumption (or x14495 x29352)
+:assumption (or x4264 (not x28744))
+:assumption (or x5486 x1091)
+:assumption (or x28890 (not x22039))
+:assumption (or x27135 x25659)
+:assumption (or x7667 x12882)
+:assumption (or (not x24467) x29244)
+:assumption (or (not x11221) (not x10893))
+:assumption (or (not x13007) (not x15795) (not x2392) x16304)
+:assumption (or x22611 (not x7431))
+:assumption (or (not x24235) (not x29464) x27852)
+:assumption (or x19730 (not x6119))
+:assumption (or x29828 x13122)
+:assumption (or x4744 x8634)
+:assumption (or x6273 (not x1074))
+:assumption (or (not x2832) x23749)
+:assumption (or (not x4971) (not x17930) (not x12078) x21298)
+:assumption (or x26733 x21879)
+:assumption (or x10570 x15536)
+:assumption (or x28721 x25551)
+:assumption (or x28186 x9008)
+:assumption (or x20592 (not x5530))
+:assumption (or (not x7893) (not x31738))
+:assumption (or x24621 (not x20191))
+:assumption (or x3251 (not x14152))
+:assumption (or x8002 x29788)
+:assumption (or (not x2716) (not x9298) (not x8305) (not x30583) x22849 (not x16491))
+:assumption (or x8953 (not x26897) (not x10909) x10619)
+:assumption (or (not x17822) x27941)
+:assumption (or (not x15601) x24952 x15715)
+:assumption (or x26421 (not x3383))
+:assumption (or x4731 x3156)
+:assumption (or (not x28912) x17165 x5787)
+:assumption (or (not x23537) (not x5535))
+:assumption (or x24841 (not x22656))
+:assumption (or (not x11288) x11931 x495)
+:assumption (or (not x6186) x10130)
+:assumption (or (not x25349) x9077)
+:assumption (or (not x19144) (not x15356) (not x15605) x14432 (not x2271))
+:assumption (or x26897 x30138 x8623 (not x25844) x14591 (not x30219) x15795)
+:assumption (or x22158 x23244)
+:assumption (or (not x8992) x25791)
+:assumption (or (not x19265) x4723)
+:assumption (or (not x3231) (not x28885))
+:assumption (or (not x23720) (not x31840))
+:assumption (or (not x13209) x20482)
+:assumption (or x16072 x27088)
+:assumption (or (not x26578) x16464)
+:assumption (or x19148 x29233)
+:assumption (or (not x22875) x17618)
+:assumption (or (not x12447) x17530)
+:assumption (or x11993 x23127)
+:assumption (or x22305 (not x15799))
+:assumption (or (not x9256) (not x9990))
+:assumption (or (not x23856) (not x28161))
+:assumption (or x19772 (not x9445))
+:assumption (or (not x13434) x15055)
+:assumption (or (not x29044) x15372)
+:assumption (or x20949 (not x20349))
+:assumption (or (not x23622) x24265)
+:assumption (or (not x18731) (not x3071))
+:assumption (or x17075 (not x4661))
+:assumption (or (not x29327) (not x14607))
+:assumption (or x22613 (not x17359) x21514)
+:assumption (or (not x11436) x15780)
+:assumption (or x8394 x28979)
+:assumption (or x9701 x20320)
+:assumption (or (not x17290) x25327)
+:assumption (or (not x18859) x17660)
+:assumption (or (not x5391) (not x6969) x29615)
+:assumption (or (not x22882) (not x2503))
+:assumption (or (not x7948) x21055)
+:assumption (or x11777 (not x28541) x12067 x21424 (not x26263) (not x22311) (not x19297) (not x7675))
+:assumption (or x22468 (not x9008) (not x14702))
+:assumption (or (not x16452) (not x7951))
+:assumption (or (not x2281) (not x7865))
+:assumption (or x22780 (not x21818))
+:assumption (or x21414 x2962)
+:assumption (or x22540 x17534)
+:assumption (or (not x28705) x26050)
+:assumption (or x6438 x15362)
+:assumption (or (not x26669) x27149)
+:assumption (or (not x12544) x3279 x25397 (not x17397))
+:assumption (or x9876 (not x9564))
+:assumption (or (not x19415) (not x25952))
+:assumption (or (not x28884) x26260)
+:assumption (or (not x11703) (not x28890))
+:assumption (or x22433 (not x20657))
+:assumption (or x20738 x11489 (not x18369) (not x5528) (not x9008))
+:assumption (or (not x27609) x24722 x8949 (not x16802))
+:assumption (or (not x27480) (not x27537))
+:assumption (or (not x5180) (not x8653))
+:assumption (or (not x27479) x3317)
+:assumption (or x24042 (not x6040) (not x16100) x16249)
+:assumption (or x26107 x26393)
+:assumption (or x29051 x24266)
+:assumption (or x283 (not x19992))
+:assumption (or x11859 x6780)
+:assumption (or (not x10880) x10894 x18042 (not x9952) x30963)
+:assumption (or x16802 x22141)
+:assumption (or (not x28858) (not x29750) x14839 x13148)
+:assumption (or x25774 x22900)
+:assumption (or (not x29897) x28414 x17860)
+:assumption (or x21185 x25659 x27994)
+:assumption (or (not x8143) (not x15681))
+:assumption (or x11766 x24002)
+:assumption (or (not x21432) x20897)
+:assumption (or x26350 (not x27012))
+:assumption (or (not x13172) x25379)
+:assumption (or (not x11118) x27010 x28234)
+:assumption (or x7537 x24949)
+:assumption (or x22357 (not x1687))
+:assumption (or (not x19804) x15866 (not x25225))
+:assumption (or x6369 (not x6766))
+:assumption (or (not x17920) x3977)
+:assumption (or (not x30002) (not x5514) x4809)
+:assumption (or (not x23895) (not x4134))
+:assumption (or (not x12953) (not x15717))
+:assumption (or x637 x15501)
+:assumption (or (not x30952) (not x14626))
+:assumption (or (not x5931) x20016)
+:assumption (or (not x3899) x24042)
+:assumption (or x31519 x10210)
+:assumption (or x22295 x14460)
+:assumption (or (not x7260) x19451 (not x10752) x5815 x3558 (not x19879))
+:assumption (or (not x16694) x30100)
+:assumption (or (not x27916) x5848)
+:assumption (or x8968 (not x6569))
+:assumption (or x29312 x26347)
+:assumption (or x4332 (not x1393))
+:assumption (or x23556 x29857)
+:assumption (or x20402 x6526 x21821 x21298)
+:assumption (or (not x31415) (not x10976))
+:assumption (or x15717 x25482 x5124 x6675 (not x2847) x23360 (not x13262) x1029)
+:assumption (or (not x6397) (not x3063) x13889)
+:assumption (or (not x20405) (not x21298) (not x24611))
+:assumption (or (not x21940) x6175)
+:assumption (or x2278 (not x30488))
+:assumption (or x24787 x9765)
+:assumption (or x11537 (not x5930))
+:assumption (or (not x27674) (not x925))
+:assumption (or x3747 (not x24910))
+:assumption (or x2660 (not x17644))
+:assumption (or x9008 (not x29608))
+:assumption (or (not x13628) (not x17143))
+:assumption (or (not x14127) (not x26445))
+:assumption (or (not x6922) (not x10398))
+:assumption (or (not x16510) x12692)
+:assumption (or (not x5262) x31031 (not x15266))
+:assumption (or x30349 x23752 x26663)
+:assumption (or (not x29646) x20929)
+:assumption (or x4368 (not x23609))
+:assumption (or x13956 (not x25021) (not x1042))
+:assumption (or x23160 x12429 (not x14777) (not x24881) (not x19233) x20750 x24995 x1393)
+:assumption (or x5539 (not x29242))
+:assumption (or x26966 (not x27839))
+:assumption (or x12923 (not x14392))
+:assumption (or (not x14312) x26162)
+:assumption (or x8602 (not x13101) x16060)
+:assumption (or (not x13988) (not x16644))
+:assumption (or (not x30138) (not x18451) (not x16379) x26897)
+:assumption (or (not x18859) (not x17781))
+:assumption (or x2375 (not x722))
+:assumption (or x1850 x8382)
+:assumption (or (not x6471) x8599)
+:assumption (or (not x22965) (not x7893))
+:assumption (or x964 x23845)
+:assumption (or x24168 x30245)
+:assumption (or x26398 x15016)
+:assumption (or (not x6289) (not x31102))
+:assumption (or x29722 (not x17805))
+:assumption (or (not x11285) (not x12282))
+:assumption (or (not x9694) (not x14648))
+:assumption (or x30020 x17769 (not x4822) x12784)
+:assumption (or (not x15309) (not x26964))
+:assumption (or (not x13161) (not x15556))
+:assumption (or x4748 x19160)
+:assumption (or (not x28201) x15109 (not x2288) x30005)
+:assumption (or x11991 x13974)
+:assumption (or x7170 x19992)
+:assumption (or x27724 x26990)
+:assumption (or x5528 (not x4359))
+:assumption (or (not x16587) (not x15151))
+:assumption (or (not x13411) x29519 x15210 x12629)
+:assumption (or x5183 x16945)
+:assumption (or (not x27897) (not x21680) x9682 x31797 x14558)
+:assumption (or x11699 (not x27713))
+:assumption (or (not x9855) x8332)
+:assumption (or x11340 x20112 (not x11214))
+:assumption (or x6110 (not x6447))
+:assumption (or x18401 x23715 x24722 x31739)
+:assumption (or (not x25063) (not x2478))
+:assumption (or x10193 (not x29158))
+:assumption (or x17388 (not x4490))
+:assumption (or (not x30633) (not x717))
+:assumption (or x24058 x13956 (not x20802))
+:assumption (or x13956 x5827)
+:assumption (or (not x28381) (not x16965))
+:assumption (or x17339 x4596)
+:assumption (or x19896 (not x279))
+:assumption (or x6994 (not x23444))
+:assumption (or (not x28911) (not x25860))
+:assumption (or x4695 x26909)
+:assumption (or (not x4627) x10060)
+:assumption (or (not x17219) (not x24557))
+:assumption (or x13956 (not x15799) x23244 (not x24382) x8002 (not x22472))
+:assumption (or x11463 x21061)
+:assumption (or x15708 (not x30527))
+:assumption (or (not x21999) x11998)
+:assumption (or x29344 x12245)
+:assumption (or (not x29609) (not x30389))
+:assumption (or (not x11385) x2247)
+:assumption (or x16741 x19853)
+:assumption (or (not x23208) (not x26637))
+:assumption (or (not x9186) x1582)
+:assumption (or x5705 (not x13407) (not x9228) x27661 x26701 x19722 x28403)
+:assumption (or x5753 (not x9569))
+:assumption (or x4777 (not x7250) x5981)
+:assumption (or (not x23244) x2857)
+:assumption (or (not x19305) x340)
+:assumption (or x31010 (not x26503))
+:assumption (or x8030 (not x11746))
+:assumption (or (not x31233) (not x8532))
+:assumption (or (not x17109) x15682 x11975 (not x5309))
+:assumption (or (not x3154) x3670)
+:assumption (or (not x17888) (not x27462))
+:assumption (or (not x4416) (not x9582))
+:assumption (or (not x13243) (not x30544) x9423)
+:assumption (or x11831 x19764)
+:assumption (or (not x21083) (not x8936))
+:assumption (or (not x1582) x3939)
+:assumption (or x21006 (not x24460))
+:assumption (or (not x22852) (not x16473) (not x9857))
+:assumption (or (not x17242) (not x18941))
+:assumption (or (not x31289) (not x12572))
+:assumption (or (not x27680) (not x23676))
+:assumption (or x19285 x1409)
+:assumption (or x11720 x8860 (not x2559) (not x13))
+:assumption (or (not x19842) x7592 x17087)
+:assumption (or x2431 x24670)
+:assumption (or (not x3270) (not x202))
+:assumption (or (not x17855) (not x13497))
+:assumption (or x381 x12619)
+:assumption (or (not x1258) (not x18866))
+:assumption (or x12947 x28396)
+:assumption (or x31562 (not x6362))
+:assumption (or (not x7503) (not x10209))
+:assumption (or x12778 (not x17338))
+:assumption (or x15032 x13901 (not x16650) x10790 (not x16289) x20794)
+:assumption (or x12988 (not x27297))
+:assumption (or (not x29274) x1051)
+:assumption (or (not x6923) (not x26853))
+:assumption (or (not x12819) (not x31124))
+:assumption (or (not x11792) (not x20154))
+:assumption (or x11026 (not x31782))
+:assumption (or (not x3362) x4058)
+:assumption (or (not x15502) x22315)
+:assumption (or (not x2671) x20030)
+:assumption (or (not x6381) (not x20732))
+:assumption (or x18617 (not x7835))
+:assumption (or (not x13576) (not x6792))
+:assumption (or x14561 (not x30340))
+:assumption (or x16523 x7121)
+:assumption (or x3435 x9150)
+:assumption (or x15141 x16757)
+:assumption (or x29434 (not x489))
+:assumption (or (not x21386) (not x7775))
+:assumption (or x14246 (not x13085))
+:assumption (or x3211 (not x10530))
+:assumption (or x23977 x23003)
+:assumption (or x13956 x29772 (not x17404))
+:assumption (or x31370 (not x6663) (not x25659))
+:assumption (or (not x8644) (not x4105))
+:assumption (or (not x29943) (not x1042) (not x13956) x31581)
+:assumption (or x31038 x1695)
+:assumption (or (not x16836) (not x17037))
+:assumption (or x25186 (not x29420))
+:assumption (or (not x18331) (not x14154))
+:assumption (or x1737 x13213)
+:assumption (or (not x17440) (not x24744))
+:assumption (or (not x24423) (not x13157))
+:assumption (or x28951 (not x8246))
+:assumption (or x19062 (not x21653) (not x23557))
+:assumption (or (not x5269) x28716 x27915)
+:assumption (or x23906 x25896)
+:assumption (or x22368 x12433)
+:assumption (or x12615 x13401)
+:assumption (or x18348 (not x674) (not x2177) x31675)
+:assumption (or (not x9120) x1215)
+:assumption (or (not x20325) (not x4427) x12242)
+:assumption (or x12325 (not x1691))
+:assumption (or x19487 (not x28450))
+:assumption (or x12126 (not x11468) x20693 x319 x27998 x16784 x24757)
+:assumption (or (not x7893) x2076)
+:assumption (or (not x21298) (not x6145) (not x15428))
+:assumption (or (not x4426) x20689)
+:assumption (or x27861 (not x11714))
+:assumption (or x18531 x1829)
+:assumption (or (not x18689) (not x3106))
+:assumption (or (not x23629) x27495)
+:assumption (or (not x8532) (not x1839))
+:assumption (or x14552 (not x1825))
+:assumption (or (not x26137) (not x23644))
+:assumption (or x30854 (not x28242))
+:assumption (or x22316 x25759)
+:assumption (or x30506 (not x17431))
+:assumption (or (not x10392) (not x5468) (not x30487) (not x4794) (not x26844) x30667)
+:assumption (or x13876 x9890)
+:assumption (or (not x29499) x3435 x15722)
+:assumption (or x28863 x17785)
+:assumption (or (not x28885) x25426)
+:assumption (or x16225 (not x1948))
+:assumption (or x25777 x8002)
+:assumption (or (not x26985) x9820)
+:assumption (or (not x304) x11085)
+:assumption (or (not x10596) (not x26172))
+:assumption (or (not x13080) x22844)
+:assumption (or x29103 (not x5245) (not x15913))
+:assumption (or (not x11019) (not x11132))
+:assumption (or x12157 (not x1919))
+:assumption (or x3977 (not x22464) (not x19813))
+:assumption (or (not x28287) x28541)
+:assumption (or (not x21664) x29657)
+:assumption (or x29932 x18940)
+:assumption (or x21532 x5243)
+:assumption (or (not x12116) x3768)
+:assumption (or x25334 x8438)
+:assumption (or (not x9704) (not x4690) (not x25151) x15334 x12152)
+:assumption (or x18368 (not x23926))
+:assumption (or (not x12587) x9529)
+:assumption (or x29052 x19079)
+:assumption (or x15141 x8430 x6969)
+:assumption (or x4702 (not x10992))
+:assumption (or (not x5416) (not x29034))
+:assumption (or x9907 x6138)
+:assumption (or (not x16329) x17293 x13286 x14578)
+:assumption (or x7458 x25434)
+:assumption (or (not x24722) x16015)
+:assumption (or x21897 x29006)
+:assumption (or x5220 x14696)
+:assumption (or x31457 x27589 (not x3252) (not x4640) (not x19759))
+:assumption (or x16417 x29475)
+:assumption (or x25376 x27415 (not x7261) x4043 x8834 (not x14707) (not x31188) x22460)
+:assumption (or (not x20340) (not x15912))
+:assumption (or (not x23921) (not x15733))
+:assumption (or (not x15839) (not x26354))
+:assumption (or x2648 (not x21561))
+:assumption (or x28359 (not x474))
+:assumption (or (not x10335) x24703)
+:assumption (or x2626 (not x6796))
+:assumption (or (not x480) (not x2167))
+:assumption (or (not x16512) x754)
+:assumption (or x29889 (not x23244))
+:assumption (or (not x6501) x14445)
+:assumption (or (not x27915) x4681)
+:assumption (or (not x22023) (not x16480))
+:assumption (or (not x13916) (not x5714))
+:assumption (or (not x31637) x9355)
+:assumption (or (not x31608) (not x20326))
+:assumption (or x10565 x9897 (not x28753) (not x22862))
+:assumption (or (not x9240) x4611)
+:assumption (or (not x12083) (not x22241))
+:assumption (or x12972 (not x23654))
+:assumption (or (not x7837) (not x2694))
+:assumption (or (not x16521) (not x5886) x8961)
+:assumption (or (not x17061) x24310)
+:assumption (or (not x23164) x18021)
+:assumption (or x29026 (not x26897))
+:assumption (or x4772 (not x25425))
+:assumption (or x2531 (not x10352))
+:assumption (or (not x13145) x30633)
+:assumption (or (not x19864) (not x20432))
+:assumption (or x12924 (not x637) (not x16846) (not x6685) x9930 x5311)
+:assumption (or x20048 (not x17352))
+:assumption (or (not x8002) x16338)
+:assumption (or x16006 (not x16448))
+:assumption (or x21298 (not x8380))
+:assumption (or (not x10330) x3048)
+:assumption (or x366 x12108)
+:assumption (or x7440 x9895 x15546 (not x23244) (not x5748) x30721)
+:assumption (or x20046 (not x7184))
+:assumption (or x964 (not x26925))
+:assumption (or x22299 (not x6880) x31360 (not x3273))
+:assumption (or (not x22176) x2595)
+:assumption (or x20533 x11394)
+:assumption (or x13004 x28871)
+:assumption (or x2543 (not x973))
+:assumption (or (not x23640) (not x9880) (not x2079) x21432)
+:assumption (or (not x11212) (not x19245))
+:assumption (or x8732 x15795 x14591 x8714)
+:assumption (or (not x10445) (not x16532) x24792)
+:assumption (or (not x5696) (not x13760))
+:assumption (or (not x26027) (not x18295))
+:assumption (or (not x7952) x1393)
+:assumption (or x15343 x25292 x4103 x17142 x16612)
+:assumption (or x19388 (not x8602))
+:assumption (or x5255 x17959)
+:assumption (or (not x17693) x24788)
+:assumption (or (not x24385) x31642 x17302 x18719 x19665 x13632 (not x4910))
+:assumption (or (not x16252) (not x25070))
+:assumption (or x6838 x18293)
+:assumption (or (not x10195) x14308 (not x8493) x17217)
+:assumption (or (not x27355) (not x9777))
+:assumption (or x31088 (not x7161))
+:assumption (or (not x10087) (not x1266))
+:assumption (or x6995 (not x8))
+:assumption (or x9906 x1245 x16802 x26404 x29038 (not x28964) x30903)
+:assumption (or x10171 (not x13277))
+:assumption (or (not x1323) x12242)
+:assumption (or x19428 x21922 (not x24079) x18100 (not x30954))
+:assumption (or x22587 x9086)
+:assumption (or x5639 (not x728))
+:assumption (or (not x11193) x25902)
+:assumption (or x6129 x30990)
+:assumption (or x16087 (not x1917))
+:assumption (or x7413 (not x14280))
+:assumption (or x17828 x12539)
+:assumption (or (not x3895) (not x15408) (not x5432) (not x29152) x5750)
+:assumption (or x18854 x4019)
+:assumption (or (not x15483) (not x21075))
+:assumption (or (not x3057) (not x25325) x30348 (not x19745))
+:assumption (or (not x26577) (not x31568) x24387)
+:assumption (or (not x7927) (not x23617))
+:assumption (or x13636 x21005 (not x4837) (not x3228))
+:assumption (or (not x26090) x10503)
+:assumption (or x7777 (not x29206) (not x21298))
+:assumption (or x6349 x4349)
+:assumption (or (not x3253) (not x30530))
+:assumption (or (not x31169) x2393)
+:assumption (or x18859 (not x24867))
+:assumption (or (not x7040) (not x16510) (not x784) (not x10632) x27322 (not x21815) (not x6606))
+:assumption (or x24590 (not x31669) (not x28785))
+:assumption (or x16596 (not x14007))
+:assumption (or x748 (not x24091))
+:assumption (or x2867 (not x14472))
+:assumption (or (not x28850) (not x24054))
+:assumption (or (not x4041) (not x21586) (not x1464))
+:assumption (or (not x3215) (not x29198))
+:assumption (or (not x21599) (not x10918))
+:assumption (or (not x1723) (not x9008) (not x22135))
+:assumption (or x31336 (not x16907))
+:assumption (or (not x21807) (not x5097))
+:assumption (or (not x1393) x29980 x13241)
+:assumption (or (not x16025) (not x19923))
+:assumption (or x18096 (not x142) x7143)
+:assumption (or (not x9658) x10487 x22271 x25606 x26532 (not x25296))
+:assumption (or (not x28190) (not x18825))
+:assumption (or (not x17534) x3681)
+:assumption (or (not x6969) x16394)
+:assumption (or (not x331) x1437)
+:assumption (or x21831 (not x22660) x26107)
+:assumption (or x24706 x31210 (not x20325))
+:assumption (or x26238 x12830)
+:assumption (or x9531 (not x17194))
+:assumption (or x4316 x26099 x5734)
+:assumption (or (not x6632) (not x30783))
+:assumption (or (not x29296) (not x26878))
+:assumption (or (not x31834) (not x8021) x1318 x5635 (not x15030))
+:assumption (or (not x26713) x30196)
+:assumption (or (not x24070) x26396 x273 (not x25693) x1275)
+:assumption (or x18161 (not x1975))
+:assumption (or (not x1079) x25750)
+:assumption (or (not x3981) x22165)
+:assumption (or (not x2624) x23244 x16409)
+:assumption (or (not x3516) x14651)
+:assumption (or (not x28171) (not x9232))
+:assumption (or (not x252) (not x24925))
+:assumption (or x1670 x250)
+:assumption (or (not x1727) (not x31103))
+:assumption (or (not x11332) (not x898))
+:assumption (or x27423 (not x28419))
+:assumption (or (not x19304) (not x4702))
+:assumption (or x3435 (not x6471))
+:assumption (or (not x17799) x9029)
+:assumption (or (not x8798) x11717)
+:assumption (or (not x25818) (not x17536))
+:assumption (or x21815 x22343)
+:assumption (or (not x8414) x17930 (not x22654) x10649 (not x28637) x19082)
+:assumption (or (not x7802) x1779)
+:assumption (or x6785 (not x22418))
+:assumption (or (not x24102) (not x2174) x27829)
+:assumption (or x12184 x27723)
+:assumption (or (not x12201) x18477 x2865 x26734 x23936 x16802 (not x27721) (not x12988))
+:assumption (or (not x12997) x25484)
+:assumption (or x11614 (not x14792))
+:assumption (or x19864 x24344)
+:assumption (or (not x18835) x30918)
+:assumption (or x20538 (not x18739) (not x24912) (not x7469) x8002 (not x16961))
+:assumption (or x22249 (not x16757) (not x15141) x5116 (not x789))
+:assumption (or x30830 x4377)
+:assumption (or x29045 (not x18162))
+:assumption (or (not x31255) (not x11858))
+:assumption (or x29781 (not x18859))
+:assumption (or (not x18710) (not x24387) (not x631) x9453 (not x2498))
+:assumption (or (not x26750) (not x8463) (not x31178) x25614 (not x1124) (not x5528))
+:assumption (or (not x4451) (not x17069))
+:assumption (or (not x14994) x12533)
+:assumption (or x15888 x28014)
+:assumption (or x2388 x25219)
+:assumption (or (not x6541) (not x30751) x10510)
+:assumption (or (not x735) (not x7652) (not x18223) x8382)
+:assumption (or x1582 (not x28973) (not x26167) x1547)
+:assumption (or (not x25415) (not x15421))
+:assumption (or x15422 x25896)
+:assumption (or x23244 x5463)
+:assumption (or (not x853) x6924)
+:assumption (or x14891 (not x18613))
+:assumption (or (not x4043) (not x22460))
+:assumption (or (not x23656) x23509)
+:assumption (or (not x16797) x29829)
+:assumption (or x2394 (not x18052))
+:assumption (or (not x15007) x18221)
+:assumption (or x19266 (not x8972))
+:assumption (or (not x29038) (not x9906))
+:assumption (or (not x6261) x23004)
+:assumption (or x6317 (not x25338))
+:assumption (or (not x30568) x1829)
+:assumption (or (not x3345) (not x5528) x13744 (not x21926) x22653 x652)
+:assumption (or (not x30982) (not x834))
+:assumption (or x26863 (not x23439) x25965 (not x2841) x7468 (not x15125))
+:assumption (or x4457 (not x6796))
+:assumption (or (not x5653) x1242 x1877)
+:assumption (or x30 (not x24940))
+:assumption (or x24728 (not x30915))
+:assumption (or x19441 (not x9008))
+:assumption (or (not x15199) (not x20668))
+:assumption (or (not x29343) x29195)
+:assumption (or x24752 x28662)
+:assumption (or (not x12242) x4427)
+:assumption (or x9779 x10638)
+:assumption (or x27459 x11436)
+:assumption (or x12115 (not x11573))
+:assumption (or (not x9620) x15457)
+:assumption (or x19001 (not x17405))
+:assumption (or x19740 x20053)
+:assumption (or x13694 x9902)
+:assumption (or x12352 x21202)
+:assumption (or (not x14138) (not x17640))
+:assumption (or (not x6701) (not x20482) x3212)
+:assumption (or x29487 (not x7254))
+:assumption (or x20202 (not x3887))
+:assumption (or x30481 x2044)
+:assumption (or (not x8586) (not x22656))
+:assumption (or x24139 x31847)
+:assumption (or x31554 x30471)
+:assumption (or (not x7110) x8713)
+:assumption (or (not x9488) x4970 x20874 (not x2240) (not x15463))
+:assumption (or (not x26215) (not x17748))
+:assumption (or x30131 (not x27615))
+:assumption (or x29692 x15851)
+:assumption (or x13321 (not x4490))
+:assumption (or (not x7405) x16434)
+:assumption (or (not x26712) x5069 x31592 (not x8773) (not x3000))
+:assumption (or (not x10800) x31802)
+:assumption (or x22161 (not x17314))
+:assumption (or (not x29720) x2980 x23670 x1219)
+:assumption (or x27537 (not x10161) (not x25748))
+:assumption (or (not x29913) (not x4568))
+:assumption (or (not x19821) (not x21157))
+:assumption (or (not x27396) x16601 (not x30113) x4963)
+:assumption (or x31482 x11971 x21496 x28492)
+:assumption (or (not x27645) (not x8181))
+:assumption (or x10874 (not x1325) (not x16003))
+:assumption (or (not x12886) x12029)
+:assumption (or x18738 x21815)
+:assumption (or (not x17884) x1612)
+:assumption (or x3524 (not x20961) x17860)
+:assumption (or x29145 (not x10301) (not x8790) (not x19613) x1904)
+:assumption (or x16025 x5414)
+:assumption (or x28877 x14949)
+:assumption (or (not x31449) (not x4451))
+:assumption (or (not x31263) x26790)
+:assumption (or x5808 x5613)
+:assumption (or (not x25576) (not x6708))
+:assumption (or (not x20727) x9543)
+:assumption (or x5353 x22134)
+:assumption (or (not x26756) x27108 x24493 (not x1111) x15672)
+:assumption (or (not x25374) (not x13538))
+:assumption (or x28981 (not x24135))
+:assumption (or x6552 (not x13842))
+:assumption (or x1854 x14170)
+:assumption (or x30579 x29799)
+:assumption (or (not x26897) x16669 x3299 (not x10909))
+:assumption (or x7760 (not x13592) x3807 x8002 (not x3346) x24586)
+:assumption (or (not x25659) (not x3103) (not x12484))
+:assumption (or (not x13392) x964)
+:assumption (or (not x687) (not x14026))
+:assumption (or (not x8741) x25775)
+:assumption (or x11075 (not x24966) x28023 x20116)
+:assumption (or x5728 (not x16117))
+:assumption (or (not x2771) (not x17534))
+:assumption (or x1475 (not x8130))
+:assumption (or x8961 x4258 x25881)
+:assumption (or x28652 x13690)
+:assumption (or (not x29481) x15788)
+:assumption (or x11956 x5521)
+:assumption (or (not x31623) x12176 (not x27396) x4963)
+:assumption (or (not x9953) x6889)
+:assumption (or (not x19506) x21265)
+:assumption (or x26723 (not x3001) (not x202) (not x7244))
+:assumption (or x3176 x28069)
+:assumption (or x25681 (not x2930) x11938)
+:assumption (or x17326 (not x20452))
+:assumption (or x10817 x18368)
+:assumption (or x8616 (not x8374))
+:assumption (or (not x3432) (not x17747) x14839)
+:assumption (or (not x26480) (not x21298) x22212)
+:assumption (or x27669 x18463)
+:assumption (or x5528 (not x15076) (not x22295))
+:assumption (or x9562 (not x4783))
+:assumption (or x705 x3435)
+:assumption (or x25167 (not x6255))
+:assumption (or (not x28565) (not x7913))
+:assumption (or (not x12808) (not x6074))
+:assumption (or (not x16150) x27532)
+:assumption (or (not x10281) x14001)
+:assumption (or (not x31504) (not x14563))
+:assumption (or (not x4943) (not x1052) x12197 x28328)
+:assumption (or x25916 x21624)
+:assumption (or (not x21653) (not x23243) x13541)
+:assumption (or (not x16025) (not x29189))
+:assumption (or x23841 (not x5335))
+:assumption (or x4692 x24047)
+:assumption (or (not x17839) x26278)
+:assumption (or (not x14931) x12256 (not x16076) x16184)
+:assumption (or (not x25304) (not x13407))
+:assumption (or x31236 (not x5572))
+:assumption (or x4098 x20264)
+:assumption (or (not x13315) (not x26558))
+:assumption (or (not x4809) (not x3124))
+:assumption (or x12839 (not x1393))
+:assumption (or (not x20308) (not x14530))
+:assumption (or (not x14094) x25018)
+:assumption (or (not x3491) (not x11494))
+:assumption (or x5737 (not x3995))
+:assumption (or x8002 x14941)
+:assumption (or x23901 (not x16745) (not x10770) x30087)
+:assumption (or x675 x7614)
+:assumption (or x21044 x9339)
+:assumption (or x31139 (not x18859))
+:assumption (or (not x8577) (not x10241))
+:assumption (or (not x5567) x25495)
+:assumption (or x644 x12993)
+:assumption (or x7016 (not x15470))
+:assumption (or x30126 (not x20388))
+:assumption (or (not x26824) (not x478))
+:assumption (or (not x29653) x9647)
+:assumption (or (not x29166) x10290)
+:assumption (or (not x16105) (not x4400))
+:assumption (or x8177 (not x31848))
+:assumption (or x13576 (not x6791) x30204)
+:assumption (or x23905 x15026)
+:assumption (or (not x27233) (not x21633) x20551 (not x4740))
+:assumption (or x27175 x29386)
+:assumption (or (not x1322) (not x141))
+:assumption (or (not x17836) (not x22895))
+:assumption (or x7200 (not x23882))
+:assumption (or x25360 (not x29231))
+:assumption (or x30722 (not x8934))
+:assumption (or (not x10272) (not x4952))
+:assumption (or x8345 (not x8360))
+:assumption (or x16510 x16622)
+:assumption (or x15003 x10153)
+:assumption (or x20646 (not x21805))
+:assumption (or (not x348) x6035 x18228)
+:assumption (or (not x20337) x14319)
+:assumption (or (not x25726) x6040)
+:assumption (or x2204 (not x30022))
+:assumption (or (not x9008) x23490 x27069)
+:assumption (or x27593 x22867)
+:assumption (or (not x19559) x20719)
+:assumption (or x23341 (not x20919))
+:assumption (or (not x19825) (not x25423) x22078)
+:assumption (or (not x18441) x19626)
+:assumption (or (not x3341) x7581)
+:assumption (or (not x2189) (not x20012))
+:assumption (or x24914 x28498)
+:assumption (or x4146 x171)
+:assumption (or (not x13478) (not x15227))
+:assumption (or (not x15837) x29692)
+:assumption (or (not x25366) (not x21206))
+:assumption (or (not x9378) x13253)
+:assumption (or x1661 (not x9270))
+:assumption (or (not x21253) x4648)
+:assumption (or (not x4467) x24656 (not x14661) x21047)
+:assumption (or (not x15621) x27749 x28405 x17049)
+:assumption (or x14499 (not x12655))
+:assumption (or (not x11358) (not x14435))
+:assumption (or (not x13283) x11022)
+:assumption (or x9105 (not x2185))
+:assumption (or (not x7518) x3993)
+:assumption (or (not x15366) (not x29968))
+:assumption (or (not x26354) x14748)
+:assumption (or (not x22802) x1592)
+:assumption (or (not x28606) (not x8489))
+:assumption (or (not x9759) (not x14868))
+:assumption (or (not x11712) (not x23877) x13756 x4838 x4516 (not x19886) (not x18693) (not x18236))
+:assumption (or x14615 (not x26283))
+:assumption (or x18440 x8002)
+:assumption (or (not x19633) (not x6487))
+:assumption (or x27289 x4339)
+:assumption (or x17683 (not x18034))
+:assumption (or (not x18230) (not x29754))
+:assumption (or x1102 (not x30860) (not x8774) (not x5240) x19156)
+:assumption (or (not x3932) (not x28537))
+:assumption (or (not x3241) (not x8002))
+:assumption (or (not x30466) (not x16477))
+:assumption (or (not x30360) x21218)
+:assumption (or x11416 x31898)
+:assumption (or (not x19109) x27354)
+:assumption (or (not x29959) (not x6594) x11394 (not x31793))
+:assumption (or x2227 x17192)
+:assumption (or x3506 (not x3411))
+:assumption (or x28426 (not x4504))
+:assumption (or (not x14252) x13770)
+:assumption (or x14395 x15693 (not x25606))
+:assumption (or x22435 x23912)
+:assumption (or (not x28571) (not x21951) (not x5849) (not x13681))
+:assumption (or (not x28481) x6702)
+:assumption (or x24516 x9182)
+:assumption (or (not x18952) x5151)
+:assumption (or (not x30546) (not x25354))
+:assumption (or x9504 (not x31739))
+:assumption (or x21838 (not x23244))
+:assumption (or x4739 (not x23452) x1090)
+:assumption (or x27104 (not x20294))
+:assumption (or (not x3314) x20660)
+:assumption (or (not x28796) x17209)
+:assumption (or (not x9817) x4891)
+:assumption (or (not x27389) (not x26675))
+:assumption (or (not x14078) x31204 x26075 (not x917))
+:assumption (or (not x4904) (not x20508))
+:assumption (or x22495 x17213 (not x18165) (not x8015))
+:assumption (or (not x21851) (not x13722))
+:assumption (or (not x23244) x4205)
+:assumption (or x19130 (not x2213))
+:assumption (or (not x2404) x25659 (not x4112))
+:assumption (or (not x28069) (not x2340) x26942 (not x18694))
+:assumption (or (not x1393) x16287)
+:assumption (or (not x29231) x5997)
+:assumption (or (not x12720) x19603)
+:assumption (or (not x5089) (not x8049))
+:assumption (or x4678 x29433)
+:assumption (or x22762 x6594)
+:assumption (or (not x16480) x319)
+:assumption (or (not x9820) (not x16897))
+:assumption (or x3135 (not x1803))
+:assumption (or (not x2288) (not x15227) x17181)
+:assumption (or x19657 x27998 x30096 x9435 (not x27331) x24577 (not x29571))
+:assumption (or (not x10155) x14424)
+:assumption (or (not x7886) (not x15892) x28076 (not x7491) x24916 x1499 x9497 x23760)
+:assumption (or (not x8825) (not x17978))
+:assumption (or (not x19977) x22154)
+:assumption (or x20379 x24079 (not x31744))
+:assumption (or (not x18778) x9882)
+:assumption (or (not x1605) x10949 x10988 (not x28882))
+:assumption (or x20511 (not x21969))
+:assumption (or x866 x12242)
+:assumption (or x5886 x20747 (not x17569))
+:assumption (or x8020 (not x19576))
+:assumption (or (not x15425) (not x9008) x29839)
+:assumption (or x22262 x26946)
+:assumption (or (not x476) (not x11506) x18441 x12419)
+:assumption (or (not x11967) (not x24249))
+:assumption (or x25725 x4757)
+:assumption (or x13802 (not x29158))
+:assumption (or (not x6768) (not x23146))
+:assumption (or x28819 (not x12534))
+:assumption (or (not x7105) (not x9008))
+:assumption (or x21478 (not x9008))
+:assumption (or x12321 x31235)
+:assumption (or x26840 (not x5352))
+:assumption (or x7761 (not x15298))
+:assumption (or x20006 (not x12881))
+:assumption (or (not x13598) (not x12045))
+:assumption (or (not x7775) x11989)
+:assumption (or (not x16366) (not x25983) x16455 x8582)
+:assumption (or x31738 (not x7240))
+:assumption (or (not x21479) x22393 (not x6486) x9808 x1537 (not x5528))
+:assumption (or (not x6819) (not x30954))
+:assumption (or x4146 (not x3001))
+:assumption (or x12392 x7946)
+:assumption (or (not x27762) x25659 (not x15759))
+:assumption (or x14193 x23664)
+:assumption (or (not x30680) (not x28612))
+:assumption (or x23244 x8857)
+:assumption (or (not x10464) x15120)
+:assumption (or (not x20793) (not x5166))
+:assumption (or (not x9633) (not x31392))
+:assumption (or (not x6762) (not x1393))
+:assumption (or (not x12286) (not x19261) x1553 x4669 (not x27290))
+:assumption (or x1012 (not x2417))
+:assumption (or (not x23297) x26202)
+:assumption (or x2617 x17074)
+:assumption (or (not x2167) (not x29990))
+:assumption (or (not x18537) (not x524))
+:assumption (or (not x30795) x6986)
+:assumption (or (not x28186) (not x9089))
+:assumption (or x27075 x27306)
+:assumption (or (not x9224) x10659)
+:assumption (or x12955 x13517)
+:assumption (or x10118 x30264)
+:assumption (or x25659 (not x13459))
+:assumption (or x3639 (not x20506) x19012 (not x18352) x2241)
+:assumption (or x13416 (not x24052))
+:assumption (or x17337 x5256)
+:assumption (or x24652 (not x12103))
+:assumption (or (not x19612) (not x18277))
+:assumption (or x2136 x2280)
+:assumption (or x26399 x20440)
+:assumption (or (not x13909) (not x11940))
+:assumption (or x24611 (not x28265))
+:assumption (or (not x25974) (not x30070))
+:assumption (or (not x1023) x31681)
+:assumption (or (not x1393) x9180)
+:assumption (or (not x20969) x6127)
+:assumption (or (not x15843) (not x3327))
+:assumption (or x23017 x16122)
+:assumption (or x13298 (not x27708))
+:assumption (or x1621 x1844 (not x25151) (not x1663) (not x4399))
+:assumption (or x21075 x15483)
+:assumption (or x23399 (not x1229))
+:assumption (or x29861 x5359)
+:assumption (or (not x21302) (not x30720) (not x15) (not x19909))
+:assumption (or (not x16050) x9115)
+:assumption (or (not x25271) x27529)
+:assumption (or x28327 x29950)
+:assumption (or (not x19148) (not x17833) x11053 x20724 (not x6032) (not x26469))
+:assumption (or (not x12354) (not x17755))
+:assumption (or x14885 x26343)
+:assumption (or x1633 (not x30140))
+:assumption (or x5177 x11662 (not x22394) (not x4222))
+:assumption (or x8903 x6624 (not x24593) x27703)
+:assumption (or x28447 x8132)
+:assumption (or (not x7671) x21663)
+:assumption (or (not x14768) (not x25609))
+:assumption (or (not x4176) (not x7108))
+:assumption (or (not x16403) x25366)
+:assumption (or (not x5249) (not x5528) x9961 (not x4232) (not x9008))
+:assumption (or (not x6640) (not x22290))
+:assumption (or (not x21437) (not x2880))
+:assumption (or x17893 x18867)
+:assumption (or (not x10312) (not x4102))
+:assumption (or x19145 (not x29573))
+:assumption (or x5206 x499 (not x9008) x29216 (not x5528))
+:assumption (or (not x8602) x9660)
+:assumption (or x12242 x13161 x30144 (not x18416) (not x20325))
+:assumption (or x22691 x28511 (not x21653))
+:assumption (or x10896 x11885)
+:assumption (or (not x9825) x30743 x11571)
+:assumption (or (not x9645) (not x12775))
+:assumption (or (not x3674) (not x13000))
+:assumption (or (not x31613) x8532)
+:assumption (or x27217 (not x26230))
+:assumption (or x16025 x10967 x26145)
+:assumption (or x26261 (not x8304) (not x15484) (not x15887))
+:assumption (or x23865 x13957 x31424)
+:assumption (or x13650 x5134)
+:assumption (or (not x11396) x21145 x22097 x11313 x13855)
+:assumption (or (not x14082) x18172 (not x21298) (not x15380))
+:assumption (or x29973 x1846)
+:assumption (or x715 x23244 (not x10603) x7012 x8002)
+:assumption (or x8540 (not x7559))
+:assumption (or (not x6732) x31836 x21325 (not x3651))
+:assumption (or x21524 x1147)
+:assumption (or x25441 (not x13910))
+:assumption (or x7296 x26251)
+:assumption (or x16050 (not x9115))
+:assumption (or x6289 x2148)
+:assumption (or x28973 (not x7552))
+:assumption (or x25545 x10889)
+:assumption (or (not x17278) x20428)
+:assumption (or x26378 x3408)
+:assumption (or (not x409) x2003 (not x11758) (not x17821) (not x22381) (not x20899) x18293 (not x28238) x10774)
+:assumption (or (not x1874) (not x24320))
+:assumption (or x25818 (not x5528) (not x30224) (not x24158) (not x9008))
+:assumption (or x12052 x18815)
+:assumption (or (not x8526) x11885)
+:assumption (or (not x21131) (not x10546))
+:assumption (or (not x17107) (not x4447))
+:assumption (or x26085 x5768)
+:assumption (or (not x13017) x11902)
+:assumption (or (not x31602) (not x23775))
+:assumption (or (not x15192) (not x10472))
+:assumption (or (not x31482) x8222)
+:assumption (or x14585 (not x5485))
+:assumption (or x2756 x30921)
+:assumption (or x9344 (not x22479))
+:assumption (or x5059 x17915)
+:assumption (or x24067 x4092)
+:assumption (or x29257 x23636)
+:assumption (or x9158 x7061)
+:assumption (or (not x10374) x4784)
+:assumption (or (not x18187) (not x20813))
+:assumption (or x11056 (not x1592))
+:assumption (or (not x29749) (not x13486))
+:assumption (or (not x30472) (not x7600))
+:assumption (or x7562 (not x12743))
+:assumption (or (not x15649) x4842)
+:assumption (or (not x21549) (not x27352))
+:assumption (or (not x30230) (not x25285) (not x12428))
+:assumption (or (not x12128) (not x27710))
+:assumption (or x13213 (not x28802))
+:assumption (or x21298 x30056)
+:assumption (or x10721 x641)
+:assumption (or (not x21546) x13317 x25047)
+:assumption (or (not x7247) (not x4963))
+:assumption (or (not x9008) x26444 (not x10573))
+:assumption (or (not x27350) (not x6241))
+:assumption (or x1411 (not x9131))
+:assumption (or (not x28699) (not x8002))
+:assumption (or x10639 x6969 x28598)
+:assumption (or x19864 (not x14943))
+:assumption (or x538 (not x11281) x376)
+:assumption (or x4378 x19262)
+:assumption (or (not x9196) x28898)
+:assumption (or (not x8161) x16003)
+:assumption (or x4559 (not x27306) x9402 (not x25677))
+:assumption (or x7783 (not x5187))
+:assumption (or (not x22763) x13139)
+:assumption (or x9547 x5423)
+:assumption (or x21879 x26423)
+:assumption (or (not x27385) (not x1393) x18763)
+:assumption (or (not x15178) (not x8591))
+:assumption (or (not x13956) x21385)
+:assumption (or x10183 x33)
+:assumption (or x9320 (not x30800))
+:assumption (or (not x23801) x21202 (not x9316) x16365 (not x7548))
+:assumption (or x12871 (not x19293))
+:assumption (or x1892 (not x10751) x6619 (not x13818) x14132)
+:assumption (or (not x20152) (not x14687))
+:assumption (or x3551 (not x24448))
+:assumption (or x8587 x31708)
+:assumption (or (not x25927) (not x337))
+:assumption (or (not x23173) (not x27102))
+:assumption (or (not x30633) x9739)
+:assumption (or x8220 (not x29930))
+:assumption (or (not x13017) (not x22755) x18137 x2212 x1393 (not x31307) (not x22892) (not x374))
+:assumption (or (not x29871) (not x14053) x24055)
+:assumption (or x26723 x25852)
+:assumption (or x28242 x16510 x10749)
+:assumption (or x1769 x18859)
+:assumption (or x4902 x20607 x18078 x26265)
+:assumption (or x6307 x3120)
+:assumption (or (not x1973) x20148)
+:assumption (or (not x24952) (not x15715))
+:assumption (or x1671 (not x20101))
+:assumption (or x10165 x18923)
+:assumption (or (not x7292) (not x23538))
+:assumption (or (not x6099) x24385)
+:assumption (or x23697 x17683)
+:assumption (or (not x11298) x7728)
+:assumption (or (not x18711) x22472)
+:assumption (or (not x17075) (not x16390))
+:assumption (or x14772 (not x9522) x3476 x7411 x26866)
+:assumption (or x30002 (not x2908))
+:assumption (or x18450 (not x17225) (not x18313) x21983)
+:assumption (or (not x23245) x14513)
+:assumption (or x26922 (not x6786))
+:assumption (or (not x3331) x24372)
+:assumption (or x11146 x12324)
+:assumption (or x14790 x15677)
+:assumption (or (not x24244) x29253)
+:assumption (or x24843 (not x28467))
+:assumption (or (not x23146) (not x14583))
+:assumption (or x31406 x20845)
+:assumption (or x27303 (not x12698) (not x16849) (not x14974))
+:assumption (or x2106 x26849)
+:assumption (or x10475 (not x11330))
+:assumption (or x4081 x7931)
+:assumption (or (not x28327) (not x16739))
+:assumption (or x4682 x20988)
+:assumption (or (not x113) x21432 (not x27761))
+:assumption (or (not x8904) x6363)
+:assumption (or (not x569) (not x17359))
+:assumption (or x22872 x25039)
+:assumption (or (not x19643) x1057)
+:assumption (or (not x22424) (not x5571) (not x8276) x23487 x15403 (not x9680) x15931)
+:assumption (or x18032 (not x22265))
+:assumption (or x10043 (not x5527))
+:assumption (or x2473 (not x21925))
+:assumption (or x9008 (not x6793))
+:assumption (or (not x4995) x25121 (not x24042) x27939)
+:assumption (or (not x19991) x10602)
+:assumption (or x26897 x16886)
+:assumption (or (not x1013) x7742 x14347)
+:assumption (or x7640 x19122)
+:assumption (or x16266 x9344 (not x21653))
+:assumption (or (not x29464) (not x30844))
+:assumption (or (not x3001) x30292)
+:assumption (or x16938 x4948 x9576)
+:assumption (or (not x23836) x9008 x6255 x16711 (not x25167) x25298)
+:assumption (or (not x12045) x29974 x18457 (not x20949))
+:assumption (or x23041 x7159 x28328)
+:assumption (or (not x346) x27915 x24852)
+:assumption (or x10911 (not x13786) x25818 x25781)
+:assumption (or (not x1203) (not x24315))
+:assumption (or x20714 x30000)
+:assumption (or x5104 (not x3015))
+:assumption (or x31438 x10940)
+:assumption (or x13396 (not x10668))
+:assumption (or (not x14206) (not x21365))
+:assumption (or (not x3585) x13044)
+:assumption (or x20763 (not x10575) x1393)
+:assumption (or x24032 (not x17560))
+:assumption (or x10827 x29368)
+:assumption (or (not x30888) x22379)
+:assumption (or (not x17746) x9688)
+:assumption (or x24065 x29557)
+:assumption (or x22124 x11471)
+:assumption (or (not x30960) x3435)
+:assumption (or x4212 (not x28874))
+:assumption (or x17399 (not x25878))
+:assumption (or (not x785) x2282)
+:assumption (or x18180 (not x4692))
+:assumption (or x6274 x27299)
+:assumption (or x4064 (not x31856))
+:assumption (or x19711 x11152)
+:assumption (or (not x20682) x14966)
+:assumption (or (not x20633) x29826)
+:assumption (or x10796 (not x18855))
+:assumption (or (not x30751) (not x18285))
+:assumption (or (not x15912) x2027)
+:assumption (or (not x20087) (not x613) (not x21853) x13571 (not x21222) (not x3710) (not x13458) x14331)
+:assumption (or (not x28631) (not x10087))
+:assumption (or (not x7368) (not x30676))
+:assumption (or (not x4809) x22464)
+:assumption (or (not x24232) x14086 (not x9423) x31252 x21101 x25513 x6073 (not x10106) x16157)
+:assumption (or x18432 x2460 x6754 x2890 x26922)
+:assumption (or (not x17223) (not x25521) (not x9439))
+:assumption (or x13625 (not x29575))
+:assumption (or (not x12646) x5078)
+:assumption (or x30613 x2893)
+:assumption (or x6160 x20978)
+:assumption (or x9277 x16577)
+:assumption (or (not x7545) x17605)
+:assumption (or (not x22388) (not x27087))
+:assumption (or x20748 x12330)
+:assumption (or x25375 (not x31917))
+:assumption (or (not x23913) (not x30632))
+:assumption (or x24808 (not x24756))
+:assumption (or x7447 x19334 (not x13150) x5662 (not x19798) x13464 x15809 x3435)
+:assumption (or x1836 (not x19164))
+:assumption (or (not x30548) x11909 x36 (not x9395))
+:assumption (or x20517 x30383)
+:assumption (or x26298 x15861)
+:assumption (or (not x8738) x1734 (not x27324) x15147 (not x21366) x25423 (not x17392))
+:assumption (or (not x10958) x31290 x19454 (not x15621))
+:assumption (or x3395 (not x2490) (not x754))
+:assumption (or (not x12672) x4498 x30706)
+:assumption (or x29202 (not x653))
+:assumption (or x17149 (not x5556) x8817 (not x8575))
+:assumption (or x2018 x1679)
+:assumption (or (not x30246) (not x25091))
+:assumption (or x4587 x30124)
+:assumption (or (not x19816) (not x10204))
+:assumption (or (not x6709) (not x30556))
+:assumption (or (not x3069) (not x30688))
+:assumption (or x4035 x10177)
+:assumption (or x19581 (not x19851))
+:assumption (or x18869 x25100)
+:assumption (or x13517 x21298)
+:assumption (or x24168 x18416)
+:assumption (or (not x24582) x21161)
+:assumption (or (not x8649) (not x7077))
+:assumption (or x14290 x1294)
+:assumption (or x29544 x17644 x153 x10669 x1999)
+:assumption (or (not x21025) (not x9937))
+:assumption (or (not x153) x23244)
+:assumption (or x30267 (not x28999))
+:assumption (or x13956 (not x12343))
+:assumption (or (not x4177) (not x3799) (not x1393))
+:assumption (or x20026 x13398)
+:assumption (or (not x25922) (not x25265))
+:assumption (or (not x21117) (not x31172))
+:assumption (or x23968 (not x12668))
+:assumption (or (not x18071) (not x16783))
+:assumption (or (not x27542) (not x9170))
+:assumption (or x26604 (not x10174))
+:assumption (or x10210 (not x15446))
+:assumption (or x11190 (not x24862) x23244)
+:assumption (or (not x29315) x12428)
+:assumption (or x14521 x18045)
+:assumption (or x23244 x22154 x8002 x8393 x12693)
+:assumption (or (not x30954) (not x414))
+:assumption (or x2732 x9271)
+:assumption (or x24032 x11281)
+:assumption (or x17146 (not x26613))
+:assumption (or (not x20363) x22692)
+:assumption (or (not x6351) (not x11023))
+:assumption (or x28650 (not x9008) x20255)
+:assumption (or (not x28189) x9124)
+:assumption (or (not x480) (not x2728) x26084)
+:assumption (or x23212 x24450)
+:assumption (or x9398 (not x1023))
+:assumption (or x20875 x18249)
+:assumption (or (not x11019) (not x8843))
+:assumption (or x30113 x27508)
+:assumption (or (not x27667) (not x25202))
+:assumption (or x25789 x16745)
+:assumption (or (not x27636) (not x24700))
+:assumption (or (not x23571) (not x21530))
+:assumption (or (not x23237) (not x23244))
+:assumption (or x6229 (not x364))
+:assumption (or x23958 x13734)
+:assumption (or x27757 (not x31658))
+:assumption (or x8469 (not x9423) (not x10536))
+:assumption (or (not x21955) (not x18614))
+:assumption (or (not x7533) (not x13959))
+:assumption (or (not x30729) (not x9477))
+:assumption (or (not x18859) (not x8756) x23344)
+:assumption (or x30177 (not x10463))
+:assumption (or (not x19426) (not x19992) (not x22295))
+:assumption (or x7372 (not x27090))
+:assumption (or (not x29504) (not x2281))
+:assumption (or (not x27822) x25659)
+:assumption (or x22563 x16409)
+:assumption (or (not x5493) (not x2879))
+:assumption (or (not x4043) (not x8834))
+:assumption (or (not x16141) (not x23263))
+:assumption (or (not x17606) x15139)
+:assumption (or x26156 x24756)
+:assumption (or x11324 (not x10767))
+:assumption (or (not x2975) (not x13377))
+:assumption (or x12678 (not x25610))
+:assumption (or (not x10145) (not x23321))
+:assumption (or (not x21722) (not x31355))
+:assumption (or (not x16940) (not x1926))
+:assumption (or (not x6829) x30113)
+:assumption (or (not x12460) (not x31105) (not x31777))
+:assumption (or x9930 x27208)
+:assumption (or x9789 x29201)
+:assumption (or (not x13473) (not x25818))
+:assumption (or x21323 x15473 x2130 x26642)
+:assumption (or x22585 (not x3087))
+:assumption (or x29864 x25659)
+:assumption (or (not x28640) x8249 (not x8961))
+:assumption (or x17875 (not x13864))
+:assumption (or x7748 x938 (not x21519) x11588 x25715 x23994)
+:assumption (or x15987 (not x16646))
+:assumption (or x15660 (not x31829))
+:assumption (or (not x18613) x8897)
+:assumption (or (not x28108) (not x31261))
+:assumption (or x1997 x19656)
+:assumption (or (not x26634) x17233)
+:assumption (or x14115 (not x24975))
+:assumption (or x27932 (not x5123))
+:assumption (or x28093 x18853)
+:assumption (or (not x9854) (not x2948))
+:assumption (or x2048 x11307)
+:assumption (or x13956 x22850)
+:assumption (or (not x22331) x5422)
+:assumption (or x14963 (not x16409) (not x4037))
+:assumption (or x19726 x26575 (not x15621) (not x5169))
+:assumption (or (not x13215) x10402)
+:assumption (or x23244 x6620 (not x22855))
+:assumption (or (not x25363) (not x31419))
+:assumption (or x6978 x4980)
+:assumption (or x15795 (not x27369))
+:assumption (or (not x31143) (not x22358))
+:assumption (or (not x19538) x21333)
+:assumption (or x31384 x23948)
+:assumption (or (not x1383) x18704)
+:assumption (or x7543 (not x1901))
+:assumption (or (not x11511) x10044)
+:assumption (or (not x26126) (not x920))
+:assumption (or (not x10209) x28169)
+:assumption (or x22223 x25744)
+:assumption (or (not x8685) (not x6886))
+:assumption (or (not x5665) (not x1589))
+:assumption (or (not x23463) (not x2356))
+:assumption (or (not x7923) x10155 (not x24546) x12332)
+:assumption (or x21267 (not x12329) (not x18683) x13057 x1767 x19140 (not x15078) (not x17438))
+:assumption (or (not x8002) (not x25864) (not x13002))
+:assumption (or (not x27882) (not x28189))
+:assumption (or x18714 x30177)
+:assumption (or (not x17431) (not x20918))
+:assumption (or (not x6536) x6199)
+:assumption (or x3173 x12650)
+:assumption (or (not x64) (not x5332))
+:assumption (or (not x22801) (not x14069))
+:assumption (or x28436 (not x8497))
+:assumption (or x9379 (not x22852) x30254)
+:assumption (or (not x16802) (not x21849))
+:assumption (or (not x804) x23013)
+:assumption (or x7981 x6637)
+:assumption (or x8513 x7065 x14070)
+:assumption (or x17151 x12481 x18293 x31066)
+:assumption (or x2233 (not x10539))
+:assumption (or x20719 x8769)
+:assumption (or x19734 (not x25903))
+:assumption (or x25343 x13371 (not x27003) x7337 x24153)
+:assumption (or (not x11082) x18649)
+:assumption (or (not x4165) (not x28424))
+:assumption (or (not x10582) x3871)
+:assumption (or (not x7066) x13313)
+:assumption (or (not x25608) x3570)
+:assumption (or (not x21198) (not x7936) (not x31120) x9531 (not x22139) (not x24408) (not x8214) (not x3142) x15153)
+:assumption (or (not x2525) x8805)
+:assumption (or (not x27958) (not x5188))
+:assumption (or (not x3554) (not x19037))
+:assumption (or x5394 (not x16510) (not x13700) (not x1364) x4401 x20171 (not x21815))
+:assumption (or x28272 (not x13012))
+:assumption (or (not x17793) (not x11134))
+:assumption (or (not x26792) (not x1937))
+:assumption (or (not x11792) (not x6149) x28997 x2959)
+:assumption (or x19893 x24691 x1441 (not x10687) x23358)
+:assumption (or (not x13425) x24050 (not x19519))
+:assumption (or x24079 x2757 x11685 x10249)
+:assumption (or x17288 x28052)
+:assumption (or (not x26512) (not x29104) (not x27895))
+:assumption (or (not x23244) (not x24722) (not x13932))
+:assumption (or (not x344) (not x65))
+:assumption (or (not x6428) x10075)
+:assumption (or (not x12952) x22130)
+:assumption (or (not x119) (not x7321))
+:assumption (or x25483 (not x7804))
+:assumption (or (not x26647) x10504)
+:assumption (or (not x7672) (not x24278))
+:assumption (or x28656 x29403)
+:assumption (or x13514 (not x8684))
+:assumption (or x4831 x23095)
+:assumption (or x14087 x4853)
+:assumption (or (not x11777) x2163)
+:assumption (or x7425 x20284)
+:assumption (or (not x13308) x17471)
+:assumption (or x28378 (not x5817))
+:assumption (or x18942 (not x17842))
+:assumption (or x23500 (not x3717) x1157 x7095 x10645 (not x16510))
+:assumption (or (not x27387) (not x28727))
+:assumption (or x5624 (not x15332))
+:assumption (or x16243 (not x22513))
+:assumption (or (not x11117) (not x15878))
+:assumption (or x18166 (not x8602) (not x4151))
+:assumption (or (not x30124) (not x23125))
+:assumption (or x17962 x20317)
+:assumption (or (not x4920) x7847)
+:assumption (or (not x27110) (not x20588) x22239 (not x2215) (not x24414) (not x30990) x18860 (not x17778))
+:assumption (or x19946 (not x7862))
+:assumption (or x3466 (not x14519))
+:assumption (or x14464 (not x28191))
+:assumption (or (not x12261) x25841)
+:assumption (or (not x4466) (not x12284))
+:assumption (or (not x31079) (not x28538) (not x8055) x28300)
+:assumption (or (not x28742) (not x19766))
+:assumption (or (not x25034) x20087)
+:assumption (or x2687 x27568)
+:assumption (or (not x29027) (not x19023))
+:assumption (or (not x24756) x19347)
+:assumption (or (not x16236) x5239)
+:assumption (or x29716 (not x28510) (not x8316) x8315 x7851 x8002)
+:assumption (or (not x8011) x18587)
+:assumption (or x1348 (not x10030))
+:assumption (or x28739 x8404 (not x8002))
+:assumption (or (not x1449) (not x21720))
+:assumption (or (not x7868) (not x14455))
+:assumption (or x9461 (not x27887))
+:assumption (or (not x17347) (not x5173) x27358 (not x12318))
+:assumption (or x16008 x4705)
+:assumption (or x10432 x11303)
+:assumption (or x21497 x23204)
+:assumption (or x981 x30027)
+:assumption (or (not x6408) (not x24465) (not x8632) x15515 (not x29188) (not x11250))
+:assumption (or x7371 (not x1393))
+:assumption (or (not x20651) x26108 x9349)
+:assumption (or x21045 (not x3578))
+:assumption (or x4559 x2637 (not x10484) x10450)
+:assumption (or x17930 (not x29367))
+:assumption (or (not x17614) (not x335))
+:assumption (or (not x26176) x3533)
+:assumption (or (not x14012) x10896)
+:assumption (or x5705 (not x19461))
+:assumption (or (not x4585) x29710)
+:assumption (or x15522 x15545)
+:assumption (or (not x16362) x17983)
+:assumption (or (not x18427) (not x18846))
+:assumption (or (not x13549) (not x22752))
+:assumption (or (not x1922) x12076)
+:assumption (or x10909 (not x12689) x4239)
+:assumption (or (not x28984) x11295)
+:assumption (or (not x18335) (not x10079) x25754)
+:assumption (or (not x2936) x27458 x16025)
+:assumption (or (not x25324) x3987)
+:assumption (or (not x18441) (not x18342))
+:assumption (or (not x8188) x14819)
+:assumption (or (not x6969) (not x29409))
+:assumption (or (not x31596) x14964)
+:assumption (or x16751 x13956)
+:assumption (or x11782 (not x10049))
+:assumption (or x15932 x21190)
+:assumption (or (not x22317) x4940)
+:assumption (or x4599 x23573)
+:assumption (or x4230 x8521)
+:assumption (or x4012 x21286)
+:assumption (or (not x18089) (not x13728) (not x19568))
+:assumption (or x10941 x9455)
+:assumption (or (not x8795) x22798)
+:assumption (or x18718 (not x21925))
+:assumption (or (not x21368) x9395)
+:assumption (or x13005 x31299)
+:assumption (or x23244 x23188)
+:assumption (or x5779 (not x16021))
+:assumption (or (not x8049) x21153)
+:assumption (or (not x4561) (not x16348))
+:assumption (or x2534 x5869)
+:assumption (or x23876 (not x9569))
+:assumption (or x3630 x2754)
+:assumption (or (not x486) (not x24766))
+:assumption (or (not x11542) x4828)
+:assumption (or x17972 (not x8524) (not x976) x30067 x620 (not x8831) x14896 (not x21607))
+:assumption (or (not x7476) x27656)
+:assumption (or x2363 x19593)
+:assumption (or (not x24871) x6516)
+:assumption (or x13171 x20580)
+:assumption (or (not x6708) x14146)
+:assumption (or x14999 (not x27726))
+:assumption (or x16895 x19982)
+:assumption (or x26109 (not x17635))
+:assumption (or (not x8814) x15917)
+:assumption (or x4036 x827)
+:assumption (or (not x14633) x559)
+:assumption (or x11685 x6376 (not x7039) (not x661))
+:assumption (or x30954 x7457 x28165)
+:assumption (or x18430 x20091)
+:assumption (or x26388 x3069 (not x11798) (not x4425) x24733 x13641 (not x4695) (not x29383))
+:assumption (or (not x10622) (not x8002))
+:assumption (or (not x28973) (not x31443))
+:assumption (or (not x27531) (not x17930))
+:assumption (or (not x12453) (not x20603))
+:assumption (or (not x7587) (not x29333))
+:assumption (or (not x26628) (not x29545))
+:assumption (or x18861 x17117)
+:assumption (or x18233 x8329)
+:assumption (or (not x4445) x29648)
+:assumption (or (not x23167) x8159 (not x8565) x23250)
+:assumption (or x1080 x31268)
+:assumption (or x18069 x31223)
+:assumption (or (not x28885) x29671)
+:assumption (or (not x10423) x29629)
+:assumption (or x8783 (not x5021))
+:assumption (or x21521 (not x7830))
+:assumption (or (not x9266) (not x1547))
+:assumption (or (not x11442) x1035)
+:assumption (or (not x24911) x15836)
+:assumption (or (not x25730) x1815)
+:assumption (or (not x27527) (not x28912))
+:assumption (or (not x28792) (not x3936))
+:assumption (or x25693 (not x16090))
+:assumption (or (not x26682) (not x13672))
+:assumption (or x154 x3864)
+:assumption (or (not x26688) (not x8788))
+:assumption (or (not x21190) x6407)
+:assumption (or x7325 x29604)
+:assumption (or (not x1574) x18042 x25691)
+:assumption (or (not x20289) (not x29320))
+:assumption (or x15782 (not x2772) (not x5841) x6714 x30800)
+:assumption (or x15366 (not x16750) x7802 x8046)
+:assumption (or x14600 (not x9008))
+:assumption (or x10656 (not x25397))
+:assumption (or x27159 x22200 (not x31791) x10746)
+:assumption (or (not x21962) (not x26888))
+:assumption (or (not x19675) x13025)
+:assumption (or (not x12521) x14527)
+:assumption (or (not x10874) (not x9968))
+:assumption (or (not x1393) (not x23260))
+:assumption (or x16698 (not x2979))
+:assumption (or x19568 x18089)
+:assumption (or x29041 (not x19308))
+:assumption (or (not x31873) (not x8969))
+:assumption (or x28149 x8767)
+:assumption (or x25659 x15523)
+:assumption (or (not x30297) (not x21706))
+:assumption (or (not x1672) (not x23914))
+:assumption (or x26174 x31392)
+:assumption (or x21633 x10324)
+:assumption (or (not x10657) (not x21389))
+:assumption (or (not x10647) x31271)
+:assumption (or (not x31734) x15959)
+:assumption (or (not x25610) (not x31002))
+:assumption (or x2947 x24756)
+:assumption (or x28827 x26256)
+:assumption (or x12416 (not x4600))
+:assumption (or x6658 x17434)
+:assumption (or (not x19992) (not x8456) (not x4378))
+:assumption (or x990 (not x15122))
+:assumption (or x15705 (not x6351))
+:assumption (or x15424 x16184)
+:assumption (or x2949 x1739)
+:assumption (or (not x10044) x5774)
+:assumption (or x18401 (not x18054))
+:assumption (or (not x18173) (not x25456))
+:assumption (or (not x22779) x17359)
+:assumption (or x1623 (not x861))
+:assumption (or x24323 (not x17155))
+:assumption (or (not x19700) x27172)
+:assumption (or (not x17457) (not x21200))
+:assumption (or x29642 x14069)
+:assumption (or x21027 (not x15124))
+:assumption (or x25875 x21868)
+:assumption (or (not x27183) x20811)
+:assumption (or x15924 (not x25895))
+:assumption (or (not x12309) x22852)
+:assumption (or (not x25919) x2535)
+:assumption (or x30775 (not x20375))
+:assumption (or x6955 x31829 x918 x17659)
+:assumption (or x8908 (not x23853))
+:assumption (or (not x18486) (not x12128))
+:assumption (or (not x15799) (not x3534))
+:assumption (or (not x3972) x20621)
+:assumption (or (not x967) x20497 (not x18085) (not x26670))
+:assumption (or x14046 x13956)
+:assumption (or (not x17889) x7496)
+:assumption (or (not x26119) (not x30407) x19781 x29997 x20930 (not x14758) x8603)
+:assumption (or x12705 (not x21267))
+:assumption (or (not x12851) x11241)
+:assumption (or (not x14877) (not x17649))
+:assumption (or x20340 x714)
+:assumption (or x10632 x9348)
+:assumption (or (not x14834) (not x6128))
+:assumption (or x29730 (not x16679))
+:assumption (or x15579 x22455)
+:assumption (or (not x229) (not x28808))
+:assumption (or x26866 x23481 x499 x30479)
+:assumption (or (not x27216) (not x11508))
+:assumption (or (not x29955) (not x9425))
+:assumption (or x28603 (not x31050) x6909)
+:assumption (or (not x17887) x25326)
+:assumption (or x13795 (not x27978) x28793 x9187)
+:assumption (or x29265 x27349)
+:assumption (or x7644 x17988)
+:assumption (or (not x21126) (not x23779))
+:assumption (or x13657 x22787)
+:assumption (or x20923 x6086)
+:assumption (or (not x12932) (not x16025) (not x21013))
+:assumption (or x15003 x10623)
+:assumption (or (not x27119) (not x1275))
+:assumption (or (not x20636) x12862)
+:assumption (or x22766 (not x28359) (not x21300))
+:assumption (or x5782 x25309)
+:assumption (or (not x11488) x14483)
+:assumption (or (not x3407) x28649)
+:assumption (or x29320 x25151 x28885 x20289)
+:assumption (or (not x21436) (not x570) x20935 x15930 (not x15992) x1326 x25218)
+:assumption (or (not x7513) x27532)
+:assumption (or x4834 (not x14350) (not x29014) x21295 x24010 x28258 x10665 (not x15346) (not x24036))
+:assumption (or (not x23202) x27121)
+:assumption (or (not x2414) (not x2065))
+:assumption (or (not x29616) (not x11843))
+:assumption (or (not x9739) x11946)
+:assumption (or (not x15574) x16740)
+:assumption (or x14317 (not x21357))
+:assumption (or x27978 x2806)
+:assumption (or x11403 x2450)
+:assumption (or x13956 (not x27856))
+:assumption (or (not x30215) (not x531))
+:assumption (or x10510 x15861 x25540)
+:assumption (or x25352 x679)
+:assumption (or x512 x7802)
+:assumption (or x26469 x10404)
+:assumption (or x8349 (not x25004))
+:assumption (or (not x24191) (not x31829) x6955 (not x918))
+:assumption (or (not x31322) (not x27907))
+:assumption (or (not x17556) x14478)
+:assumption (or (not x9036) x29921)
+:assumption (or x30233 (not x11134))
+:assumption (or x30345 x5499 x23399)
+:assumption (or (not x24645) (not x31147) x26580)
+:assumption (or (not x14636) x19063)
+:assumption (or x6562 (not x30954) (not x24079) x19428 (not x27684))
+:assumption (or (not x6068) x21854)
+:assumption (or x4620 x20430)
+:assumption (or x29000 x11268)
+:assumption (or x20773 (not x26376))
+:assumption (or (not x19323) (not x4614))
+:assumption (or (not x11617) x3399)
+:assumption (or x31526 (not x10394) (not x13487))
+:assumption (or x4515 x9387)
+:assumption (or x18421 (not x21116))
+:assumption (or x9008 (not x11490))
+:assumption (or x1351 x21469)
+:assumption (or (not x15795) x4129)
+:assumption (or x6034 x3929)
+:assumption (or (not x17143) (not x20991))
+:assumption (or (not x7817) (not x29868))
+:assumption (or (not x362) x7734)
+:assumption (or (not x28902) x9531 x20657)
+:assumption (or x24473 x3328)
+:assumption (or x28885 (not x27686) (not x21069) x14436 x13159 (not x2018) x20557)
+:assumption (or (not x25677) x22167)
+:assumption (or x2712 x25853)
+:assumption (or x13956 x21945)
+:assumption (or x1634 x10569)
+:assumption (or x30941 x24927)
+:assumption (or (not x8904) (not x11043))
+:assumption (or x6026 x12095)
+:assumption (or (not x17290) x20511)
+:assumption (or x15348 (not x15979))
+:assumption (or x31309 x18567)
+:assumption (or (not x11303) x18003)
+:assumption (or (not x7030) (not x10718))
+:assumption (or (not x2045) (not x16185) (not x31054) x12211 (not x27841) (not x19004))
+:assumption (or (not x5528) (not x12521) (not x16217) x13347 (not x31343) x14472)
+:assumption (or (not x2224) x9984)
+:assumption (or x25226 (not x21994))
+:assumption (or x22015 x19317 (not x16784))
+:assumption (or (not x3443) x2657)
+:assumption (or x17418 (not x4614))
+:assumption (or (not x14898) x24118)
+:assumption (or x30517 (not x27627))
+:assumption (or x30635 x169)
+:assumption (or x14596 x31010)
+:assumption (or (not x4906) x26063)
+:assumption (or x9424 (not x8176))
+:assumption (or x2725 x1393)
+:assumption (or x23856 x10883)
+:assumption (or (not x14839) (not x20368))
+:assumption (or x21177 (not x8342))
+:assumption (or (not x17143) (not x16159))
+:assumption (or (not x14609) x15570)
+:assumption (or x25912 x28397)
+:assumption (or (not x16153) (not x787))
+:assumption (or (not x12398) x15267)
+:assumption (or (not x6495) x18635)
+:assumption (or (not x21628) (not x16741))
+:assumption (or x27721 (not x8496))
+:assumption (or (not x1895) x16741 x3962)
+:assumption (or x9893 x23664)
+:assumption (or (not x3023) x2887)
+:assumption (or x23043 x19544)
+:assumption (or x9651 x19735)
+:assumption (or (not x8002) x27559)
+:assumption (or x25420 (not x10930))
+:assumption (or (not x12704) x4016)
+:assumption (or (not x7935) (not x17958))
+:assumption (or x25659 (not x25660))
+:assumption (or (not x30630) (not x6151))
+:assumption (or (not x16304) (not x25935))
+:assumption (or (not x240) (not x3139))
+:assumption (or x4936 (not x9531))
+:assumption (or (not x18522) (not x17042))
+:assumption (or x167 x12321)
+:assumption (or x16510 (not x17534) (not x21815) x25283 x4003 (not x5028) x17060)
+:assumption (or (not x19590) x4971)
+:assumption (or (not x13244) (not x23592))
+:assumption (or x14284 (not x8002))
+:assumption (or (not x2288) x13622 x17952 (not x24730))
+:assumption (or (not x12783) x12855)
+:assumption (or x14152 x12430)
+:assumption (or x24912 (not x29788))
+:assumption (or (not x17350) x11691 x31714 x28101 (not x29240) x15041 x23514 x7332 x11378)
+:assumption (or x14435 x16110)
+:assumption (or (not x13843) (not x6465) x10277)
+:assumption (or (not x23191) x23244 (not x8002))
+:assumption (or x22553 x17274 x30212 x31335 (not x26487) (not x12896) (not x947) x8959)
+:assumption (or (not x11377) (not x3509))
+:assumption (or (not x1696) (not x7313) x20781 (not x22688))
+:assumption (or x6845 (not x21269))
+:assumption (or (not x28867) (not x28428))
+:assumption (or (not x25048) x14147)
+:assumption (or (not x30170) (not x16380))
+:assumption (or x27984 (not x7629) (not x24647) x14819)
+:assumption (or (not x5611) x3570)
+:assumption (or x19154 x10542)
+:assumption (or (not x932) (not x20471))
+:assumption (or x9353 (not x2965))
+:assumption (or (not x15288) (not x7374))
+:assumption (or x4977 (not x25339))
+:assumption (or (not x10104) x16304)
+:assumption (or (not x59) (not x3121))
+:assumption (or (not x16904) x23454)
+:assumption (or (not x30356) x9008)
+:assumption (or (not x29305) (not x21642) (not x12176) (not x5528) (not x9008))
+:assumption (or x8641 x26897)
+:assumption (or x30894 x14963 x15537)
+:assumption (or (not x7892) x29927)
+:assumption (or x8446 (not x14862))
+:assumption (or x13481 x17316)
+:assumption (or (not x3285) (not x411))
+:assumption (or x7933 (not x2660))
+:assumption (or x15795 x26484)
+:assumption (or (not x30411) (not x12071))
+:assumption (or x23849 (not x29083))
+:assumption (or (not x4408) (not x22679))
+:assumption (or x29122 x28543)
+:assumption (or x19125 x16209)
+:assumption (or x15483 x9562)
+:assumption (or x31574 x24647)
+:assumption (or (not x19227) (not x12002))
+:assumption (or x15491 (not x30449))
+:assumption (or x14151 (not x23385))
+:assumption (or (not x2080) (not x29183))
+:assumption (or x3668 x2156)
+:assumption (or x25714 x29236)
+:assumption (or (not x27419) (not x22580) x8002)
+:assumption (or x6790 x16808)
+:assumption (or x12453 x13434 x28355 x29417 x20603 x16459 x8187)
+:assumption (or x2437 x25037)
+:assumption (or x22999 x15695)
+:assumption (or x29173 (not x20949))
+:assumption (or x19987 x28134)
+:assumption (or x9258 x14380)
+:assumption (or (not x14839) x7971)
+:assumption (or x3438 (not x24838))
+:assumption (or x23842 x1582 x20416 (not x25366))
+:assumption (or (not x15343) x11616)
+:assumption (or x2162 (not x15592) x28708)
+:assumption (or x8002 x7646)
+:assumption (or (not x18165) x22495 x11961)
+:assumption (or (not x2822) x25158)
+:assumption (or (not x21971) x24407)
+:assumption (or x23958 x25315 x4942 (not x19125))
+:assumption (or (not x16699) x22131)
+:assumption (or x7131 x14477)
+:assumption (or (not x16745) (not x30790))
+:assumption (or (not x7127) x26186)
+:assumption (or x11706 x18645)
+:assumption (or x20323 x30504)
+:assumption (or x23745 x3172)
+:assumption (or x262 (not x2656))
+:assumption (or (not x5196) x27656)
+:assumption (or (not x24502) x15913 x5245)
+:assumption (or (not x11374) x17040)
+:assumption (or x31785 x17482)
+:assumption (or (not x9069) x26685 (not x17876) x2828 x24722)
+:assumption (or x29726 x24403 x17380)
+:assumption (or x14233 x19714)
+:assumption (or x3547 (not x4537))
+:assumption (or x4951 x2476)
+:assumption (or x2173 x2500)
+:assumption (or (not x5679) x8215)
+:assumption (or (not x28145) (not x28472))
+:assumption (or (not x5596) x16281)
+:assumption (or x629 x2684)
+:assumption (or x9706 x27971)
+:assumption (or x20925 (not x16495))
+:assumption (or x4539 (not x15982))
+:assumption (or (not x27575) x7012)
+:assumption (or x25427 (not x19425))
+:assumption (or x17011 (not x7944))
+:assumption (or x16484 (not x29514))
+:assumption (or x13480 (not x17848) (not x14271) (not x2103) (not x3728))
+:assumption (or x25210 x28707)
+:assumption (or (not x20541) (not x7695))
+:assumption (or x29215 (not x1288))
+:assumption (or (not x1940) x22942)
+:assumption (or (not x29266) x14489 x25319 x8735)
+:assumption (or x29355 (not x2972))
+:assumption (or x11693 (not x1379))
+:assumption (or x19585 (not x18567))
+:assumption (or (not x723) (not x2548))
+:assumption (or x24200 (not x25315) (not x24666))
+:assumption (or x26577 (not x4447))
+:assumption (or (not x23384) (not x5886))
+:assumption (or (not x20805) (not x19932))
+:assumption (or x19071 (not x24814))
+:assumption (or (not x6712) x28719)
+:assumption (or (not x22254) (not x19817) (not x2388) (not x28685) (not x7103) x8930 x21612 (not x12688))
+:assumption (or x11383 (not x17033))
+:assumption (or (not x31606) x25803)
+:assumption (or x18600 x7552)
+:assumption (or (not x6531) (not x366) (not x12108) x29738)
+:assumption (or (not x27904) (not x15255))
+:assumption (or (not x4711) x30128)
+:assumption (or (not x23616) (not x14608))
+:assumption (or (not x18872) (not x10580))
+:assumption (or (not x2622) (not x17370))
+:assumption (or (not x9369) x1136)
+:assumption (or x20415 (not x12277))
+:assumption (or (not x17680) (not x8027))
+:assumption (or (not x4111) (not x4445))
+:assumption (or x16510 (not x19867))
+:assumption (or (not x15761) x29446 x29514 x29012 (not x126))
+:assumption (or (not x22502) x17031)
+:assumption (or x23399 (not x1731))
+:assumption (or x7542 (not x13487) (not x9225))
+:assumption (or x8769 (not x18798))
+:assumption (or x13880 (not x1449))
+:assumption (or (not x1707) x6345)
+:assumption (or (not x8298) x28469)
+:assumption (or x19016 (not x10721))
+:assumption (or (not x8289) (not x13355))
+:assumption (or (not x1734) (not x5761))
+:assumption (or (not x12029) x2583)
+:assumption (or x31090 x5480)
+:assumption (or x10410 (not x17811))
+:assumption (or x13497 (not x3800))
+:assumption (or (not x6095) (not x23544))
+:assumption (or x27169 x2745)
+:assumption (or x18091 (not x8815) x31523 x3670)
+:assumption (or (not x12232) x8581)
+:assumption (or (not x1588) (not x16868))
+:assumption (or (not x15296) x1919)
+:assumption (or x7558 x19024)
+:assumption (or (not x17541) x8493)
+:assumption (or (not x16401) x29959)
+:assumption (or (not x1941) (not x17686))
+:assumption (or x11987 (not x6351))
+:assumption (or x7772 x5846 (not x4196))
+:assumption (or (not x27286) x6912)
+:assumption (or (not x17064) x7756)
+:assumption (or x8055 (not x4609))
+:assumption (or (not x21298) x90)
+:assumption (or (not x23958) (not x15345))
+:assumption (or x60 (not x143))
+:assumption (or (not x26354) x883)
+:assumption (or (not x28199) x544 (not x13956) x10847 (not x19046) (not x22797) x7310)
+:assumption (or (not x17033) x24747)
+:assumption (or (not x22274) (not x10186))
+:assumption (or (not x59) (not x21298))
+:assumption (or x5899 (not x23114))
+:assumption (or (not x28511) (not x16025) x28865)
+:assumption (or (not x31798) x14522)
+:assumption (or (not x24913) (not x26212))
+:assumption (or (not x14942) (not x19730))
+:assumption (or x3273 (not x22299))
+:assumption (or x9032 (not x1657))
+:assumption (or x7920 (not x967))
+:assumption (or x20040 (not x17534) x19501 x25659 x20550)
+:assumption (or x27305 (not x25659))
+:assumption (or (not x29939) (not x25659))
+:assumption (or x21298 x20332)
+:assumption (or (not x29441) (not x16266))
+:assumption (or x1005 (not x20107))
+:assumption (or (not x27911) (not x6771) (not x30891) x18564 x24155)
+:assumption (or (not x14664) (not x21598) (not x14560) x25787 x26242 x11988 x31332)
+:assumption (or x10925 (not x13956))
+:assumption (or x24556 (not x13248))
+:assumption (or (not x30851) (not x19288))
+:assumption (or (not x1030) (not x470))
+:assumption (or (not x4906) x24747)
+:assumption (or x19773 x13576)
+:assumption (or x31866 (not x6296))
+:assumption (or (not x13632) (not x31642))
+:assumption (or (not x2460) (not x24950))
+:assumption (or x14726 (not x14591))
+:assumption (or x16604 (not x30931))
+:assumption (or (not x24061) (not x20118))
+:assumption (or (not x1830) x24893 x20744 (not x3894))
+:assumption (or x2062 x15286)
+:assumption (or x11174 x16817)
+:assumption (or x29922 x23372)
+:assumption (or (not x30749) (not x6278))
+:assumption (or (not x11616) x27782)
+:assumption (or x6969 (not x3693) x16769)
+:assumption (or (not x4272) x27596)
+:assumption (or x11140 (not x17688))
+:assumption (or x3091 (not x20214))
+:assumption (or (not x14206) x22398 x18079)
+:assumption (or x30908 (not x1495) (not x19361) (not x31873))
+:assumption (or x13460 (not x29247))
+:assumption (or (not x9695) (not x29592))
+:assumption (or x20782 x14155 x27517 (not x271))
+:assumption (or x14839 x6172 x15707 x8196)
+:assumption (or x28788 x3508)
+:assumption (or x6957 (not x1075))
+:assumption (or (not x8049) x16172)
+:assumption (or x18859 (not x1100))
+:assumption (or x23065 (not x7441))
+:assumption (or (not x6846) x10874)
+:assumption (or (not x23590) x1479 x30856)
+:assumption (or (not x22949) x22777)
+:assumption (or x31500 x6687)
+:assumption (or x29703 (not x15298))
+:assumption (or (not x18561) x11147)
+:assumption (or (not x30259) x5410)
+:assumption (or (not x18038) (not x19069))
+:assumption (or (not x8002) x10962)
+:assumption (or (not x30927) (not x7186))
+:assumption (or (not x17965) (not x9753))
+:assumption (or (not x28593) (not x2132))
+:assumption (or x8947 x29136)
+:assumption (or x5002 x323)
+:assumption (or (not x5263) (not x142))
+:assumption (or x1814 x17615)
+:assumption (or x13956 (not x12110) (not x25008))
+:assumption (or (not x16112) (not x18688))
+:assumption (or (not x28136) x19248)
+:assumption (or x21545 x22739 x11018 x1659 (not x12647))
+:assumption (or (not x23244) x424)
+:assumption (or x23633 x19228 (not x12387) x3320)
+:assumption (or x7417 x19341)
+:assumption (or (not x857) x5918)
+:assumption (or (not x6327) (not x10180))
+:assumption (or (not x23244) (not x6741))
+:assumption (or x20628 (not x30238))
+:assumption (or (not x7557) (not x24841))
+:assumption (or x1232 (not x28607))
+:assumption (or (not x4401) x13700)
+:assumption (or (not x8679) (not x21693))
+:assumption (or (not x22516) (not x14397))
+:assumption (or x28868 (not x8470) x29150 x30756 x30332 (not x21033) (not x29676) (not x7696))
+:assumption (or (not x22843) x1512)
+:assumption (or (not x23565) (not x9540) x10874)
+:assumption (or (not x16758) x7137)
+:assumption (or (not x19348) x17706)
+:assumption (or (not x8602) (not x5731))
+:assumption (or (not x12487) x6386)
+:assumption (or (not x3451) (not x27674))
+:assumption (or (not x14583) x19621)
+:assumption (or (not x17333) (not x12659))
+:assumption (or (not x17102) x26352)
+:assumption (or x1140 x25052)
+:assumption (or (not x3532) (not x28049))
+:assumption (or x20576 (not x23642) (not x6182) (not x8961))
+:assumption (or x6977 x7362)
+:assumption (or (not x1393) (not x7571))
+:assumption (or (not x31072) x22525)
+:assumption (or x10501 (not x9035))
+:assumption (or (not x864) (not x561) (not x20057) (not x29442) (not x5718))
+:assumption (or (not x4054) x26455)
+:assumption (or (not x30588) (not x13703))
+:assumption (or x11515 x21232)
+:assumption (or (not x7169) (not x29204))
+:assumption (or (not x17479) (not x7648))
+:assumption (or x4134 x10236)
+:assumption (or (not x31419) x31753)
+:assumption (or (not x27505) (not x25832))
+:assumption (or x14226 (not x2526))
+:assumption (or x2797 (not x4822) x12361)
+:assumption (or (not x12067) x18329)
+:assumption (or x30932 (not x21315))
+:assumption (or x29683 x5003)
+:assumption (or (not x19218) x19864)
+:assumption (or x28912 (not x29381))
+:assumption (or x15260 (not x26296))
+:assumption (or (not x3176) x10605)
+:assumption (or (not x9292) (not x8002))
+:assumption (or x30113 x6640 x13411)
+:assumption (or x21793 (not x12859))
+:assumption (or x15094 (not x18635))
+:assumption (or x13077 (not x31537) x805 (not x22407))
+:assumption (or x25176 x4216)
+:assumption (or (not x18101) x17368)
+:assumption (or (not x1349) (not x3150))
+:assumption (or x15887 (not x26261))
+:assumption (or x24952 x30460)
+:assumption (or (not x10791) (not x30700))
+:assumption (or (not x24490) (not x4377) x6613)
+:assumption (or x1875 (not x25986))
+:assumption (or x9417 x6969)
+:assumption (or (not x15060) (not x30633))
+:assumption (or x5597 (not x2696) x14435 x14375)
+:assumption (or (not x1007) (not x28471) (not x26189))
+:assumption (or x17965 (not x26321))
+:assumption (or (not x20817) (not x5153))
+:assumption (or x19520 (not x26789))
+:assumption (or (not x6969) (not x25488))
+:assumption (or x20558 x14916)
+:assumption (or (not x12096) x17016)
+:assumption (or (not x21843) x19392)
+:assumption (or x5528 x6703)
+:assumption (or (not x25755) (not x24722))
+:assumption (or x31301 x6683)
+:assumption (or (not x1064) x24013)
+:assumption (or x17474 x4504 x31912 (not x4570) (not x29177) x586 x881)
+:assumption (or x2219 x21298)
+:assumption (or x1230 x6149 x16816)
+:assumption (or x17359 x28535 x18555)
+:assumption (or x12725 (not x5886) x17211 (not x8961))
+:assumption (or (not x7927) (not x23723))
+:assumption (or (not x20528) (not x26714))
+:assumption (or (not x14533) x25659)
+:assumption (or x3201 x4853)
+:assumption (or (not x10251) x13956)
+:assumption (or x28406 x9008)
+:assumption (or (not x9884) (not x10481))
+:assumption (or x26047 x11830)
+:assumption (or x31583 x16745)
+:assumption (or (not x11592) x7266)
+:assumption (or x25423 (not x27806))
+:assumption (or (not x28004) (not x15621))
+:assumption (or x4401 (not x11905))
+:assumption (or x20466 (not x20197))
+:assumption (or (not x4807) (not x5593))
+:assumption (or (not x30474) x21234)
+:assumption (or (not x6381) (not x11274) (not x21349) (not x30595))
+:assumption (or x5407 (not x3712))
+:assumption (or (not x23232) x13956)
+:assumption (or (not x7093) (not x828))
+:assumption (or x22823 (not x21298) x28878)
+:assumption (or (not x26971) x29407 (not x27504) x7028 (not x30989))
+:assumption (or x9008 x23490 (not x30529))
+:assumption (or x8673 x29213)
+:assumption (or x25659 (not x3394))
+:assumption (or (not x1750) x24043)
+:assumption (or x28916 (not x28541))
+:assumption (or x17397 (not x2500))
+:assumption (or (not x5781) (not x9213) (not x18377) x25569 (not x28159))
+:assumption (or (not x1849) (not x12231))
+:assumption (or x5733 (not x15431))
+:assumption (or (not x27104) x20294 (not x30887))
+:assumption (or x7940 x24257)
+:assumption (or x12636 (not x30298))
+:assumption (or x8043 (not x20508))
+:assumption (or (not x15321) x31668)
+:assumption (or (not x19516) x7652)
+:assumption (or x7095 (not x140))
+:assumption (or (not x20377) x24000)
+:assumption (or (not x6771) (not x2139) (not x18730))
+:assumption (or (not x15836) x3147)
+:assumption (or x27764 x2997)
+:assumption (or (not x7095) (not x1157))
+:assumption (or x27029 x9261)
+:assumption (or x1916 (not x8171))
+:assumption (or x23035 (not x8516) (not x2498))
+:assumption (or (not x3208) x12550)
+:assumption (or x25583 (not x964) x14674 (not x26670))
+:assumption (or x15196 (not x5528))
+:assumption (or x11152 (not x4184))
+:assumption (or x14379 (not x2265))
+:assumption (or (not x12979) (not x25376) x25502)
+:assumption (or x3766 x3987)
+:assumption (or x31323 (not x16172) (not x8284) x13813 (not x10950))
+:assumption (or (not x23411) (not x13557))
+:assumption (or (not x15055) (not x19234))
+:assumption (or x5381 x3249)
+:assumption (or x11657 (not x9434))
+:assumption (or x27795 (not x2305))
+:assumption (or (not x20264) x31884)
+:assumption (or x9904 x7712)
+:assumption (or (not x4968) (not x12911))
+:assumption (or x27204 x24805)
+:assumption (or x5472 x3732)
+:assumption (or (not x17210) (not x2151))
+:assumption (or (not x8526) (not x5731))
+:assumption (or (not x2126) x4879)
+:assumption (or x23761 x26249)
+:assumption (or (not x28033) (not x8371) x16365 (not x4202) (not x2524) (not x21746) x18375 (not x23207))
+:assumption (or (not x1107) x28445)
+:assumption (or (not x1582) (not x15858))
+:assumption (or x977 x8724)
+:assumption (or (not x6613) x26923)
+:assumption (or x15456 x31731)
+:assumption (or x30391 (not x14529))
+:assumption (or (not x28369) (not x28328))
+:assumption (or (not x25595) x27044)
+:assumption (or (not x20008) x22509)
+:assumption (or (not x28622) x28023)
+:assumption (or x7290 (not x17118))
+:assumption (or x10770 (not x9307))
+:assumption (or (not x23409) (not x24968))
+:assumption (or (not x10010) x11124)
+:assumption (or (not x14839) (not x5477))
+:assumption (or (not x28756) x13131)
+:assumption (or x16412 x17347)
+:assumption (or (not x5054) (not x10930))
+:assumption (or x23244 (not x4408))
+:assumption (or (not x6603) x11104)
+:assumption (or (not x1258) (not x5021))
+:assumption (or (not x24100) x13678)
+:assumption (or (not x13989) x1393 (not x25605))
+:assumption (or x31777 x13615)
+:assumption (or x4296 x20881)
+:assumption (or x6863 x15040 x5198)
+:assumption (or x22938 (not x4915))
+:assumption (or (not x6570) (not x19386))
+:assumption (or (not x2880) (not x560))
+:assumption (or x6822 x18136)
+:assumption (or x7878 x18729)
+:assumption (or x14206 (not x22854))
+:assumption (or (not x17736) x7979)
+:assumption (or x24904 (not x28328) x31479)
+:assumption (or (not x16589) x9236)
+:assumption (or (not x25242) (not x20133))
+:assumption (or (not x17494) (not x3087))
+:assumption (or x22344 x9008 x6770)
+:assumption (or (not x10881) x15499)
+:assumption (or x754 (not x11352))
+:assumption (or (not x28023) (not x30983))
+:assumption (or x8602 x477)
+:assumption (or x23453 x27805)
+:assumption (or x4919 x20480)
+:assumption (or (not x24722) x15472)
+:assumption (or x12097 x24738)
+:assumption (or (not x9841) x410)
+:assumption (or (not x20819) x30968)
+:assumption (or x15410 (not x9149))
+:assumption (or (not x22249) x15141)
+:assumption (or (not x27242) x3104)
+:assumption (or (not x28692) (not x5864))
+:assumption (or (not x11045) (not x3453))
+:assumption (or x23014 x10068)
+:assumption (or x22238 x29009)
+:assumption (or (not x11392) x5008)
+:assumption (or x30563 (not x23885))
+:assumption (or x29755 (not x25478))
+:assumption (or (not x22769) x14839)
+:assumption (or (not x26886) (not x25308))
+:assumption (or (not x22063) (not x15116))
+:assumption (or x14522 (not x18276) (not x23605) (not x23379))
+:assumption (or x8002 (not x10269) (not x29139) x13956 x23244 x29269)
+:assumption (or (not x24060) (not x29598))
+:assumption (or x30674 x16960)
+:assumption (or x27059 (not x2433))
+:assumption (or x28892 x25716)
+:assumption (or (not x6158) x4942)
+:assumption (or x26691 x17359 x4469 (not x23759) x7208)
+:assumption (or (not x8149) (not x21815) (not x11754) (not x29312) (not x16510))
+:assumption (or (not x25676) (not x619))
+:assumption (or x11281 x12855)
+:assumption (or (not x12397) (not x31915))
+:assumption (or x6135 (not x29685))
+:assumption (or x9666 (not x6635))
+:assumption (or x5850 (not x9675) (not x8230) (not x9689) x20949 x15436)
+:assumption (or (not x28733) x16846)
+:assumption (or (not x31529) x1403)
+:assumption (or x9337 x25838)
+:assumption (or (not x19061) x22465)
+:assumption (or (not x24316) (not x15154) (not x3968))
+:assumption (or (not x22461) (not x23375))
+:assumption (or x789 x15141)
+:assumption (or (not x260) x11366)
+:assumption (or (not x21924) (not x6133) x27979 x25487 x2541 x7735 (not x21350) x18894)
+:assumption (or x13914 x17033 (not x6911) (not x24104) x13749 x25606 x25055)
+:assumption (or x19598 (not x23140))
+:assumption (or (not x30998) x2392)
+:assumption (or (not x25191) (not x13411))
+:assumption (or x10463 x19415 x28799 x14447 (not x6844) (not x12668) (not x18714) x25952 x21699)
+:assumption (or x7593 (not x2701))
+:assumption (or x10228 (not x28912) x10685)
+:assumption (or x13427 x23899)
+:assumption (or (not x9157) (not x20682))
+:assumption (or (not x30006) x17771)
+:assumption (or x28434 (not x11489) x28573 x6474 x30919)
+:assumption (or (not x10410) x18544)
+:assumption (or (not x20603) (not x29417))
+:assumption (or (not x6357) x24613)
+:assumption (or x18515 x22350)
+:assumption (or (not x3558) x19879)
+:assumption (or x10796 x8602)
+:assumption (or x20356 x25961)
+:assumption (or x79 (not x3660))
+:assumption (or (not x21653) x20149 (not x20022))
+:assumption (or x15368 (not x14455))
+:assumption (or x4874 (not x3084))
+:assumption (or (not x4258) (not x752))
+:assumption (or x14322 (not x27459))
+:assumption (or x13180 (not x20141))
+:assumption (or x7068 x26264)
+:assumption (or x11336 (not x23550))
+:assumption (or (not x23965) x22702 x12646 x20782)
+:assumption (or (not x27355) x6666)
+:assumption (or (not x13240) (not x31730))
+:assumption (or x16803 x26150 (not x28262))
+:assumption (or x23294 x9008)
+:assumption (or (not x1805) (not x19417))
+:assumption (or (not x17359) (not x24100))
+:assumption (or (not x15102) x7608)
+:assumption (or x31584 x30124)
+:assumption (or x18766 x3782)
+:assumption (or (not x30755) (not x31620))
+:assumption (or x22370 (not x10426))
+:assumption (or (not x13841) (not x28473))
+:assumption (or x3895 x23580)
+:assumption (or (not x28787) (not x31394))
+:assumption (or (not x7300) (not x8002))
+:assumption (or (not x10790) (not x15328))
+:assumption (or (not x16724) (not x25338))
+:assumption (or (not x3984) (not x6089))
+:assumption (or (not x4002) (not x24327))
+:assumption (or (not x24252) x8068 (not x21871) x18042 (not x15955))
+:assumption (or x9038 x8055)
+:assumption (or x17811 x18081)
+:assumption (or (not x3103) x2830)
+:assumption (or (not x6710) x30772)
+:assumption (or (not x29450) x20691)
+:assumption (or (not x29900) (not x10943))
+:assumption (or (not x1587) (not x23460))
+:assumption (or x4032 (not x4942) (not x23958) x6158)
+:assumption (or (not x18553) x29024)
+:assumption (or x12383 (not x20585))
+:assumption (or (not x30601) x10880)
+:assumption (or (not x7093) (not x5665))
+:assumption (or (not x21403) x18859)
+:assumption (or x20514 x17809 (not x31207) (not x30131) x1577)
+:assumption (or (not x30938) (not x21653))
+:assumption (or (not x17093) (not x21636) (not x23244) x44 x25265 x21213)
+:assumption (or x7153 x26189)
+:assumption (or x18620 x19074)
+:assumption (or (not x2380) (not x4496) x30278 (not x19349) x20649)
+:assumption (or x27193 (not x25024))
+:assumption (or (not x6858) x24215)
+:assumption (or (not x1885) (not x22065))
+:assumption (or x1008 x9809)
+:assumption (or (not x24395) (not x28560))
+:assumption (or x3346 x19601)
+:assumption (or (not x15809) (not x12621))
+:assumption (or (not x14738) x4194)
+:assumption (or x1195 x20803)
+:assumption (or (not x15855) (not x22295))
+:assumption (or (not x10321) x16374)
+:assumption (or (not x31241) (not x12796))
+:assumption (or x20836 (not x16572))
+:assumption (or (not x2239) (not x4099))
+:assumption (or (not x13850) x3175)
+:assumption (or (not x5837) (not x27773))
+:assumption (or (not x18296) (not x22829))
+:assumption (or x13050 x9008)
+:assumption (or x12605 (not x23244) (not x13018) (not x257))
+:assumption (or x18982 x28834)
+:assumption (or (not x14918) x16025 x24106)
+:assumption (or x19246 (not x4758) (not x22712) x6022 x20443 x3260 (not x15879) (not x17654))
+:assumption (or (not x31362) (not x15036) (not x13956) (not x653))
+:assumption (or x7612 (not x19485))
+:assumption (or (not x20087) x12556)
+:assumption (or x17536 x3210)
+:assumption (or (not x11503) (not x5035))
+:assumption (or (not x16383) (not x10655) (not x10396))
+:assumption (or x30936 (not x5730))
+:assumption (or (not x30931) (not x30100))
+:assumption (or (not x28176) x21633)
+:assumption (or (not x30628) (not x23485))
+:assumption (or x6009 (not x10064) x1515)
+:assumption (or (not x10124) (not x25204))
+:assumption (or x5367 x5909 x26645 x24553)
+:assumption (or (not x16522) x5367)
+:assumption (or x9820 x4515)
+:assumption (or x16368 (not x10730))
+:assumption (or (not x13388) (not x23295) (not x9718) (not x24731) (not x7561) x2 (not x30952))
+:assumption (or (not x9008) x19548 (not x15205))
+:assumption (or x13458 x17853)
+:assumption (or x17526 x26670)
+:assumption (or x31044 x31607)
+:assumption (or (not x4435) x30503 (not x1302))
+:assumption (or (not x1123) x9997)
+:assumption (or (not x2897) x29244)
+:assumption (or x31024 x23705)
+:assumption (or x111 x14657)
+:assumption (or x8861 (not x31728))
+:assumption (or x30656 (not x21949))
+:assumption (or (not x4176) (not x23223))
+:assumption (or (not x14643) x12888)
+:assumption (or x24991 (not x28055))
+:assumption (or x27969 x9421)
+:assumption (or (not x13161) x28548)
+:assumption (or (not x14141) x12184)
+:assumption (or x13956 x5413)
+:assumption (or (not x10492) (not x23702))
+:assumption (or x10688 (not x14311))
+:assumption (or x21474 (not x945) x14206 (not x9147))
+:assumption (or x6924 (not x30002))
+:assumption (or x9899 x4809)
+:assumption (or x31253 (not x17))
+:assumption (or (not x13172) (not x3052))
+:assumption (or (not x19975) x24640)
+:assumption (or (not x25754) x10079)
+:assumption (or (not x12150) (not x1601) (not x1747) x22709)
+:assumption (or (not x16510) x15419 x2064 x12272 (not x9978) x7783)
+:assumption (or (not x290) x18236)
+:assumption (or x24906 (not x24722) (not x18845))
+:assumption (or (not x15917) x13061 (not x17881))
+:assumption (or (not x28328) (not x28901))
+:assumption (or x3975 x11384)
+:assumption (or (not x6610) (not x14176))
+:assumption (or (not x17803) x26201)
+:assumption (or x7127 (not x29737) (not x28077) (not x23244) (not x20367) (not x9452))
+:assumption (or (not x6764) (not x8388))
+:assumption (or x8757 (not x11575))
+:assumption (or (not x27597) (not x9860))
+:assumption (or x31099 (not x3462))
+:assumption (or x6077 (not x10886))
+:assumption (or x20550 (not x14050))
+:assumption (or (not x9732) (not x26504))
+:assumption (or (not x28242) (not x11565) (not x16455) (not x10874))
+:assumption (or (not x9008) (not x29970) x7166)
+:assumption (or x8405 (not x28260) (not x17225) (not x23))
+:assumption (or (not x15613) x1751)
+:assumption (or x19220 x15477)
+:assumption (or x14207 (not x12797))
+:assumption (or x22565 x7326)
+:assumption (or x30274 (not x12658))
+:assumption (or (not x24522) (not x2943))
+:assumption (or (not x22727) x2836)
+:assumption (or (not x11062) (not x25518))
+:assumption (or x11501 (not x3779))
+:assumption (or (not x19455) (not x21298) x26944 (not x8002))
+:assumption (or (not x2192) x6969)
+:assumption (or (not x21079) x21820)
+:assumption (or (not x8563) x4268)
+:assumption (or x30610 x20060 (not x14931) x2948)
+:assumption (or (not x26449) x1564)
+:assumption (or (not x16819) (not x21744))
+:assumption (or (not x23781) (not x19717))
+:assumption (or (not x27036) (not x11301))
+:assumption (or (not x13956) (not x31043) (not x10005) (not x854) (not x23311) x3075)
+:assumption (or (not x8058) x28220 x18258 (not x26021) x23244)
+:assumption (or (not x23246) x19563)
+:assumption (or x13956 (not x24684))
+:assumption (or x5599 x31573 x13202 (not x16595) (not x31216))
+:assumption (or x21498 (not x6594))
+:assumption (or x9219 x18117)
+:assumption (or x6213 x30100)
+:assumption (or (not x31070) x13527)
+:assumption (or (not x5815) (not x23039))
+:assumption (or (not x30756) x21033)
+:assumption (or (not x6741) x8924)
+:assumption (or (not x873) (not x24114))
+:assumption (or (not x14947) (not x28471))
+:assumption (or x30223 x30926)
+:assumption (or (not x25784) x11533)
+:assumption (or (not x3500) x29866)
+:assumption (or (not x19073) (not x11666))
+:assumption (or (not x30576) x30097)
+:assumption (or (not x4744) x9086)
+:assumption (or (not x8382) (not x252) x10710)
+:assumption (or (not x18859) x28914)
+:assumption (or (not x13970) x28578)
+:assumption (or (not x26008) x17346)
+:assumption (or (not x29492) (not x20622))
+:assumption (or x24855 (not x13429))
+:assumption (or (not x21107) (not x716))
+:assumption (or x9065 (not x25688))
+:assumption (or (not x14206) (not x8))
+:assumption (or (not x23364) (not x24828))
+:assumption (or x22545 x31651)
+:assumption (or (not x24367) (not x330))
+:assumption (or x17627 x20782)
+:assumption (or x21574 x6456)
+:assumption (or x18453 (not x3721))
+:assumption (or x4921 x27772)
+:assumption (or x441 x6959)
+:assumption (or x28936 (not x6898))
+:assumption (or x31557 x31228)
+:assumption (or (not x24018) x9416)
+:assumption (or (not x13622) (not x14063))
+:assumption (or x754 x724)
+:assumption (or x5649 (not x10064))
+:assumption (or x26041 (not x26992))
+:assumption (or (not x16654) (not x7932))
+:assumption (or (not x31384) (not x21342))
+:assumption (or x31829 x9394 (not x28541) x7175)
+:assumption (or x12333 x25358)
+:assumption (or (not x23718) (not x9864))
+:assumption (or x14079 (not x2127))
+:assumption (or x3649 x29051 (not x13610) (not x26688) x20526 x24717)
+:assumption (or x16137 x12092 x17225)
+:assumption (or (not x2194) x27217)
+:assumption (or x20090 (not x12116))
+:assumption (or (not x9462) x23959)
+:assumption (or (not x13758) (not x12578) x20657)
+:assumption (or (not x14696) x16630)
+:assumption (or (not x3921) x19325)
+:assumption (or x17492 (not x5175))
+:assumption (or x23176 x5565)
+:assumption (or x25639 x17826)
+:assumption (or (not x18792) x20992)
+:assumption (or x17482 x31281)
+:assumption (or x25020 x25367)
+:assumption (or (not x16940) x27565)
+:assumption (or x7578 x31616)
+:assumption (or x3403 x6196)
+:assumption (or x18993 x3001)
+:assumption (or x25128 x19391)
+:assumption (or (not x23244) (not x14892))
+:assumption (or (not x1362) (not x15753))
+:assumption (or x11132 x12881 (not x20006) (not x16741))
+:assumption (or x19980 (not x27233) (not x21633) (not x15279))
+:assumption (or (not x24911) x17134)
+:assumption (or (not x14923) (not x792) x14452 (not x28477))
+:assumption (or x7885 x4827)
+:assumption (or (not x23021) x10819)
+:assumption (or x7915 (not x22829))
+:assumption (or (not x6620) (not x385))
+:assumption (or (not x811) x11392 (not x16189) x17146 (not x11068) (not x5008))
+:assumption (or (not x11582) (not x18239))
+:assumption (or (not x14806) x3217)
+:assumption (or (not x18985) (not x28444))
+:assumption (or (not x28560) x8256)
+:assumption (or (not x19838) x29606)
+:assumption (or (not x25692) (not x1735))
+:assumption (or (not x16311) (not x19059))
+:assumption (or x21564 x9008 x12452)
+:assumption (or (not x13188) x5047)
+:assumption (or (not x384) x110)
+:assumption (or x8126 x15669)
+:assumption (or x23557 (not x19062))
+:assumption (or x26974 x9531)
+:assumption (or (not x17871) (not x18298))
+:assumption (or (not x31418) x8382)
+:assumption (or x19803 x4464)
+:assumption (or (not x15623) (not x24682) (not x6339) (not x10547) (not x3341) x9953 x3469 (not x27582))
+:assumption (or x18060 (not x9987) x7698 (not x2983))
+:assumption (or (not x26810) (not x2774) (not x8414) (not x28637) (not x22654) x19082)
+:assumption (or (not x24997) x31829)
+:assumption (or (not x24657) (not x24718))
+:assumption (or (not x31238) (not x23447))
+:assumption (or (not x7365) (not x14995) x4386 (not x9264) (not x17690) x18140 x16881)
+:assumption (or (not x12399) (not x12083))
+:assumption (or (not x19692) (not x22622))
+:assumption (or x2133 x8690 x25511)
+:assumption (or (not x24629) (not x30618))
+:assumption (or (not x1047) x8978)
+:assumption (or x1639 (not x8602))
+:assumption (or (not x19217) x31312)
+:assumption (or (not x6888) x17139)
+:assumption (or (not x16637) x2508)
+:assumption (or x3924 x7501)
+:assumption (or (not x14102) (not x31573))
+:assumption (or (not x23017) (not x31823) (not x27165))
+:assumption (or (not x18884) x29639)
+:assumption (or (not x4901) (not x18654))
+:assumption (or x9008 x30387)
+:assumption (or x20773 x18956)
+:assumption (or (not x7464) (not x169) x8992)
+:assumption (or x26962 x21781)
+:assumption (or x29563 (not x30021))
+:assumption (or (not x20193) x23788)
+:assumption (or (not x3332) x19730)
+:assumption (or (not x14540) x7052)
+:assumption (or (not x5000) (not x6095))
+:assumption (or x2526 x6472)
+:assumption (or (not x2057) (not x19522))
+:assumption (or x21650 x14078)
+:assumption (or (not x10198) (not x9642) x9008)
+:assumption (or (not x28835) (not x1931))
+:assumption (or x2404 (not x30202) (not x24783) x11002 (not x28913))
+:assumption (or x17046 x29305)
+:assumption (or (not x4346) x9531 x9387 (not x13576))
+:assumption (or x15480 (not x5894))
+:assumption (or (not x5528) x19389)
+:assumption (or x6608 (not x16117) (not x10874))
+:assumption (or x9368 x17302)
+:assumption (or x20550 (not x684))
+:assumption (or (not x6487) (not x8374))
+:assumption (or (not x17872) x30590)
+:assumption (or x14384 (not x30887) (not x19667) x27104 x754)
+:assumption (or x9642 (not x31000))
+:assumption (or x6356 (not x4406))
+:assumption (or (not x21618) (not x14240))
+:assumption (or x52 x9297 (not x23385))
+:assumption (or x31849 (not x18289))
+:assumption (or x19375 x6489)
+:assumption (or x12859 x2033)
+:assumption (or x31592 x31427)
+:assumption (or (not x7495) x8614)
+:assumption (or x27490 (not x18760))
+:assumption (or (not x13610) x29051 (not x20526) x26688 x8788 x3649)
+:assumption (or x3375 x20990)
+:assumption (or x23756 (not x13251))
+:assumption (or (not x9216) x6514)
+:assumption (or x198 (not x8830))
+:assumption (or (not x20793) (not x11508))
+:assumption (or (not x7286) (not x21528) x23570 x23626 x25125)
+:assumption (or (not x26304) (not x25655))
+:assumption (or (not x30108) (not x9779))
+:assumption (or (not x29068) (not x22494))
+:assumption (or (not x15795) (not x16960))
+:assumption (or x16025 x20402 x22364 x21298)
+:assumption (or x9664 x6379 (not x26013) (not x26672) x4229)
+:assumption (or (not x2557) (not x10960) (not x27689) (not x19120) x17075)
+:assumption (or x20735 (not x14961))
+:assumption (or x1633 (not x27241))
+:assumption (or x21405 x15111)
+:assumption (or (not x24722) x1086)
+:assumption (or x10846 x14126)
+:assumption (or x25008 x2047)
+:assumption (or x31406 (not x29381))
+:assumption (or (not x27810) (not x31318) (not x20370) x1323)
+:assumption (or x26762 x30147)
+:assumption (or x18019 (not x29823))
+:assumption (or (not x11257) x17475 (not x522) x15788)
+:assumption (or x22154 (not x7574))
+:assumption (or x20 x22531)
+:assumption (or (not x8598) x8369)
+:assumption (or x12242 x13333)
+:assumption (or x26093 (not x238))
+:assumption (or x6391 x20516)
+:assumption (or (not x5080) (not x25077))
+:assumption (or x22190 (not x207) (not x14206))
+:assumption (or x23449 (not x11123))
+:assumption (or (not x15358) (not x31616) (not x222))
+:assumption (or x4239 x29101)
+:assumption (or x28803 x19031)
+:assumption (or (not x12904) x20886 x9008)
+:assumption (or x16510 x8877)
+:assumption (or (not x26239) (not x26023))
+:assumption (or (not x24828) (not x31392))
+:assumption (or x28195 (not x23380))
+:assumption (or x527 (not x29645) x12202 (not x5367))
+:assumption (or (not x21951) (not x30306))
+:assumption (or (not x18887) (not x2607))
+:assumption (or x12351 x5796 x19944 x28441)
+:assumption (or (not x575) (not x29164))
+:assumption (or (not x23244) (not x5743))
+:assumption (or (not x9943) (not x12429))
+:assumption (or x3379 (not x5214))
+:assumption (or x15697 x17321)
+:assumption (or x2070 x17487)
+:assumption (or x6664 (not x15861))
+:assumption (or x26460 (not x31334))
+:assumption (or x15096 x796 x20481 (not x28561))
+:assumption (or x23244 (not x12857) x9212)
+:assumption (or (not x7259) x24555)
+:assumption (or x14687 (not x8782))
+:assumption (or x6501 (not x17927) x2501 x28752 x14720 x19339 x15673 x20824)
+:assumption (or x29272 (not x25592) (not x25725) x3860 (not x25622) x15308 (not x20891) (not x2862) x28295)
+:assumption (or (not x19292) (not x23279))
+:assumption (or (not x21180) (not x8401) (not x26047) (not x11830))
+:assumption (or (not x28059) (not x26713))
+:assumption (or (not x8725) (not x16828))
+:assumption (or (not x23244) (not x21334))
+:assumption (or x6128 (not x2038))
+:assumption (or (not x524) x6989 x6969)
+:assumption (or x18221 (not x27665))
+:assumption (or x17709 x7612)
+:assumption (or x28685 x20857)
+:assumption (or x9265 (not x8327))
+:assumption (or x8513 (not x14566))
+:assumption (or x20331 (not x31146))
+:assumption (or (not x22609) x28242)
+:assumption (or (not x30679) x8520 x20895 (not x24680) (not x9077) x30724 (not x314) x23440 x9489)
+:assumption (or x665 x1944)
+:assumption (or x21478 (not x9808))
+:assumption (or (not x30554) (not x30954))
+:assumption (or (not x19284) (not x5846))
+:assumption (or (not x30138) x22310 (not x20045) (not x24617) x23952 (not x4810) x2569 x23460)
+:assumption (or x7411 x5222)
+:assumption (or x18919 x13412)
+:assumption (or x283 x18533)
+:assumption (or x20897 (not x16662))
+:assumption (or (not x25835) (not x20946) x22271 x4311 (not x29384))
+:assumption (or (not x30162) x29507)
+:assumption (or (not x13322) x30886)
+:assumption (or (not x31861) x26924)
+:assumption (or (not x8602) x3118)
+:assumption (or (not x15066) (not x9398))
+:assumption (or (not x28830) x30124 (not x8493) (not x21815) (not x19895) x169 x16510)
+:assumption (or x14199 (not x10067))
+:assumption (or (not x19703) (not x7106))
+:assumption (or x16509 (not x7610))
+:assumption (or (not x14534) (not x20086))
+:assumption (or (not x5924) (not x2071) x18042 (not x20201))
+:assumption (or x23134 (not x13221))
+:assumption (or x24254 x29554)
+:assumption (or x2109 x11847 x25376)
+:assumption (or (not x8499) (not x609) x27063 x10286)
+:assumption (or x31772 (not x30531) (not x13679))
+:assumption (or (not x25848) x14395 x5164 (not x9639))
+:assumption (or x21615 x19331 x23045 x18841 x20141)
+:assumption (or x2955 x21054)
+:assumption (or x7796 x10642)
+:assumption (or x7284 (not x3906))
+:assumption (or x28690 x18939)
+:assumption (or (not x27335) x2508)
+:assumption (or x11792 (not x2959))
+:assumption (or (not x27056) (not x23149))
+:assumption (or (not x23244) x19551)
+:assumption (or x30469 x6575)
+:assumption (or (not x9404) x28259)
+:assumption (or x19917 x27344)
+:assumption (or x288 x30664)
+:assumption (or (not x18042) x21707)
+:assumption (or x15042 (not x6015))
+:assumption (or (not x7187) x21226)
+:assumption (or (not x23322) (not x14538))
+:assumption (or (not x21461) x7083)
+:assumption (or (not x1910) (not x8120))
+:assumption (or x218 (not x968))
+:assumption (or (not x13531) (not x21792))
+:assumption (or x19271 x2534)
+:assumption (or (not x16667) x7646)
+:assumption (or x27268 x10336 (not x5707) x14829 (not x182) x2402)
+:assumption (or x31242 x30059)
+:assumption (or (not x26073) (not x14687))
+:assumption (or (not x16510) x30788 (not x21815) x288 (not x18519))
+:assumption (or (not x11483) (not x13576))
+:assumption (or (not x10187) x18359 x3266)
+:assumption (or x29936 (not x15661))
+:assumption (or x29233 (not x11053))
+:assumption (or (not x20360) x16996)
+:assumption (or x17252 x17437)
+:assumption (or x3084 (not x31687))
+:assumption (or x4048 x28577)
+:assumption (or (not x15799) x1266)
+:assumption (or (not x16470) (not x20717) x16244 x28252 x13620 x2525 (not x15751) (not x13675))
+:assumption (or x4928 (not x24387))
+:assumption (or (not x6149) x8652 x9633)
+:assumption (or x2460 x24950)
+:assumption (or (not x28541) (not x8328))
+:assumption (or x23438 x25659 (not x20952))
+:assumption (or (not x14270) (not x18814) x31258)
+:assumption (or x10225 x14667)
+:assumption (or x26670 x14614)
+:assumption (or x8237 (not x31214))
+:assumption (or x22237 (not x30033))
+:assumption (or (not x6985) x11374)
+:assumption (or (not x16489) x2794)
+:assumption (or x17071 x26878)
+:assumption (or x1174 (not x3594) x23728 (not x22586) x26897)
+:assumption (or x19727 (not x21038))
+:assumption (or x4149 (not x12046) x23244)
+:assumption (or (not x27984) (not x11792))
+:assumption (or x1272 (not x20925))
+:assumption (or x9398 (not x24276))
+:assumption (or x21923 (not x27601))
+:assumption (or (not x13587) (not x27040))
+:assumption (or (not x24073) (not x5473))
+:assumption (or x11497 x31599)
+:assumption (or x14882 (not x12050))
+:assumption (or (not x30191) x31881)
+:assumption (or x7015 x1393)
+:assumption (or x961 x3651)
+:assumption (or x19036 (not x25285))
+:assumption (or x6149 x25003)
+:assumption (or (not x15242) (not x18859))
+:assumption (or x16112 x487 (not x1393))
+:assumption (or (not x13211) x30891)
+:assumption (or (not x51) (not x20748) (not x12330) x8968 (not x16662))
+:assumption (or (not x26543) (not x22104))
+:assumption (or x15425 (not x4286))
+:assumption (or x4451 x25690 x30214 x22815)
+:assumption (or (not x10858) (not x5121))
+:assumption (or (not x1887) (not x13929))
+:assumption (or x1180 (not x3342))
+:assumption (or (not x7049) x31909 x17942 (not x12130) x11274 (not x21584) x31150 x1328)
+:assumption (or (not x795) x8835)
+:assumption (or (not x12632) x4594)
+:assumption (or x11609 (not x27068))
+:assumption (or (not x22410) x21653)
+:assumption (or (not x1464) x20184)
+:assumption (or (not x9065) x25688 (not x3660) (not x29760))
+:assumption (or x23244 x8002 x29843)
+:assumption (or x1272 x7948)
+:assumption (or (not x18188) x17024)
+:assumption (or x18694 (not x2340) x24811 x24515)
+:assumption (or x19042 (not x22505))
+:assumption (or (not x23612) (not x24346))
+:assumption (or (not x835) (not x28903) x22886)
+:assumption (or x28563 x8967)
+:assumption (or x11901 x16025)
+:assumption (or (not x8119) x15019)
+:assumption (or x14817 (not x30669) (not x15795) (not x18161) (not x28060))
+:assumption (or (not x8686) (not x11962))
+:assumption (or (not x20589) x18182 x6699)
+:assumption (or (not x19713) (not x10723) (not x28286))
+:assumption (or x4006 x28861)
+:assumption (or (not x26347) x31692 x21566 (not x1844))
+:assumption (or (not x3689) (not x14551))
+:assumption (or x11134 x23430 (not x3112))
+:assumption (or (not x6699) x18336)
+:assumption (or x28810 x7753)
+:assumption (or x15350 x2874)
+:assumption (or x27151 x3619)
+:assumption (or x11439 (not x15659))
+:assumption (or (not x4035) (not x23669))
+:assumption (or x6662 (not x18369))
+:assumption (or (not x10701) x21060)
+:assumption (or x17549 x25083)
+:assumption (or x15783 x24230)
+:assumption (or x26430 (not x10967))
+:assumption (or (not x13347) (not x21135))
+:assumption (or (not x12119) x27659)
+:assumption (or (not x1177) x5564)
+:assumption (or (not x1033) x30447)
+:assumption (or (not x8690) x3062)
+:assumption (or x21141 (not x8779))
+:assumption (or (not x9982) x22090)
+:assumption (or (not x16428) x19892)
+:assumption (or (not x4709) x25366 (not x23735) x16374)
+:assumption (or (not x30151) x20965)
+:assumption (or (not x24761) x7314 (not x1920))
+:assumption (or (not x23175) x26260)
+:assumption (or x11307 x8615)
+:assumption (or (not x28725) (not x1790))
+:assumption (or (not x21269) (not x12744))
+:assumption (or x27584 (not x4887))
+:assumption (or (not x25832) x15258)
+:assumption (or x7542 (not x16557))
+:assumption (or (not x27055) (not x25957))
+:assumption (or (not x7163) x3176)
+:assumption (or x16308 x2906 x23712)
+:assumption (or x24165 (not x22375))
+:assumption (or (not x15810) x10632)
+:assumption (or x20518 (not x10765))
+:assumption (or x17529 (not x6460))
+:assumption (or x12045 (not x16177))
+:assumption (or x8602 (not x526))
+:assumption (or x4955 x25739)
+:assumption (or (not x17204) x30877)
+:assumption (or (not x31155) x2155)
+:assumption (or (not x27111) x8597)
+:assumption (or x25659 x13552)
+:assumption (or x18785 x11887 x3596 x26713 (not x5291) x25184 (not x1296))
+:assumption (or x7012 x30561 (not x3559) x6659)
+:assumption (or x10321 (not x16374) x2271 (not x14455))
+:assumption (or x12980 (not x23244))
+:assumption (or x30751 (not x20293))
+:assumption (or (not x5406) (not x24588))
+:assumption (or x18749 x14318)
+:assumption (or x21815 x25751)
+:assumption (or x15368 x25557)
+:assumption (or x10060 (not x15335))
+:assumption (or (not x30208) x31676)
+:assumption (or x6015 (not x2249))
+:assumption (or x7039 (not x19795))
+:assumption (or x29269 x10112)
+:assumption (or (not x11582) (not x13638))
+:assumption (or x30695 (not x18759) x6594 (not x15418) x12754)
+:assumption (or (not x14384) (not x27104))
+:assumption (or x20325 (not x29837))
+:assumption (or x28006 (not x23389))
+:assumption (or (not x30333) (not x25606))
+:assumption (or (not x14754) x8729)
+:assumption (or x6152 x7103)
+:assumption (or x17905 x977)
+:assumption (or x19202 (not x9285))
+:assumption (or (not x13216) x13410)
+:assumption (or x25037 (not x11668))
+:assumption (or (not x10064) x30852)
+:assumption (or x27500 x968)
+:assumption (or (not x6061) x22946)
+:assumption (or (not x15795) x25553 (not x2776) (not x20381) x31824 (not x5985))
+:assumption (or x24553 x4613)
+:assumption (or x24027 (not x8972))
+:assumption (or x604 x5783 x9008)
+:assumption (or (not x22606) (not x17521))
+:assumption (or (not x23573) (not x20794))
+:assumption (or x6597 (not x20497))
+:assumption (or (not x12246) (not x17836))
+:assumption (or (not x2245) (not x7537))
+:assumption (or (not x8740) x3626 x335 (not x14031) x17614 (not x29442) x19553)
+:assumption (or x9778 x7560)
+:assumption (or (not x23875) (not x13735))
+:assumption (or (not x10009) x30902)
+:assumption (or x21660 (not x29171) x13772)
+:assumption (or (not x19164) (not x23999))
+:assumption (or (not x13259) x14046)
+:assumption (or x30914 (not x10295))
+:assumption (or x10038 (not x15497))
+:assumption (or (not x18415) x24722)
+:assumption (or x9903 (not x793) x30633 (not x1015) (not x8525) x18470 x17250 (not x1927))
+:assumption (or (not x9398) x23373)
+:assumption (or x30498 x26177)
+:assumption (or x24442 x18968)
+:assumption (or x13956 x659)
+:assumption (or x4211 (not x2315))
+:assumption (or (not x3422) x26982)
+:assumption (or (not x21583) x25871)
+:assumption (or (not x12222) x19957)
+:assumption (or x11281 x27346 x24677)
+:assumption (or x21127 x23602)
+:assumption (or (not x21653) (not x23328) x18283)
+:assumption (or x8825 (not x15926))
+:assumption (or (not x20513) x7957)
+:assumption (or (not x9423) (not x13046))
+:assumption (or (not x23980) (not x12305) x1872)
+:assumption (or (not x22119) (not x11838))
+:assumption (or (not x10533) (not x11514))
+:assumption (or (not x16140) (not x6591))
+:assumption (or x20489 (not x2510))
+:assumption (or x25221 x23244 (not x20402) x21298 x30777 (not x8002))
+:assumption (or x2353 x7835)
+:assumption (or x24642 x19729)
+:assumption (or (not x19864) (not x18416) (not x8821) (not x18003))
+:assumption (or (not x23244) x17622 (not x2709) (not x21027) (not x12792) (not x26681))
+:assumption (or x8623 x21803)
+:assumption (or x26574 (not x25463))
+:assumption (or (not x14839) (not x25338))
+:assumption (or (not x27216) x29113)
+:assumption (or (not x16026) (not x20798) (not x14580) x6769)
+:assumption (or x16898 x11929)
+:assumption (or (not x28521) x27100 (not x31033) x8648 x23594 x28023)
+:assumption (or x519 (not x8753))
+:assumption (or x28081 x1100 (not x18859))
+:assumption (or x31676 (not x21191))
+:assumption (or x20550 (not x10443))
+:assumption (or (not x22952) x29442)
+:assumption (or x26467 (not x16272))
+:assumption (or (not x27275) (not x28364))
+:assumption (or x18528 (not x13517) (not x14277) (not x31626) (not x25323))
+:assumption (or (not x26505) x3502 (not x20138) (not x7042) x5428 (not x10413) x21714 x53 (not x1350) (not x19104) (not x7458) x817 (not x27741))
+:assumption (or (not x26156) x369)
+:assumption (or (not x5385) x2583)
+:assumption (or x911 (not x21885))
+:assumption (or x6973 (not x1142))
+:assumption (or x27156 x17294)
+:assumption (or (not x1454) (not x20488))
+:assumption (or x18649 (not x12602))
+:assumption (or (not x8130) x13481)
+:assumption (or x23215 (not x1790) x22923)
+:assumption (or (not x28885) x3203)
+:assumption (or x23937 x2707)
+:assumption (or (not x24067) x9105)
+:assumption (or (not x6318) (not x31896) (not x14157) (not x18660) (not x26155))
+:assumption (or (not x6898) x20315)
+:assumption (or (not x27872) (not x31468))
+:assumption (or (not x7745) x17202)
+:assumption (or x31856 x827)
+:assumption (or (not x19865) (not x7634))
+:assumption (or x31535 (not x9110))
+:assumption (or x22039 x11437)
+:assumption (or (not x3170) (not x11658))
+:assumption (or (not x8002) (not x715))
+:assumption (or x9472 (not x21442))
+:assumption (or x25126 (not x16264))
+:assumption (or x16796 (not x6147))
+:assumption (or (not x5429) (not x216))
+:assumption (or (not x18675) x28079)
+:assumption (or x12926 (not x31041))
+:assumption (or (not x27707) x13018)
+:assumption (or x17638 x6708)
+:assumption (or (not x3484) (not x24563) x6780 x21298)
+:assumption (or x28160 x3435)
+:assumption (or (not x14455) (not x13403) (not x6630))
+:assumption (or x11803 (not x1301) x24228 x22432)
+:assumption (or x13626 x9631)
+:assumption (or x16455 (not x9329) (not x29460) (not x5079))
+:assumption (or (not x5358) (not x5812))
+:assumption (or x12399 (not x12086))
+:assumption (or (not x17862) x18556)
+:assumption (or x8574 x22047 x9552 (not x23256))
+:assumption (or x13680 x8172)
+:assumption (or (not x31734) x22400)
+:assumption (or (not x6021) x2313)
+:assumption (or (not x31306) (not x28885))
+:assumption (or (not x22179) (not x16407))
+:assumption (or (not x4400) x5010)
+:assumption (or (not x14539) x1621)
+:assumption (or (not x28541) (not x7228))
+:assumption (or x26527 x7042)
+:assumption (or x2507 x19422)
+:assumption (or x5684 x13018)
+:assumption (or x20949 (not x31190))
+:assumption (or (not x16848) x23244 x18717)
+:assumption (or (not x6133) x4670 x18884)
+:assumption (or (not x9531) x24901)
+:assumption (or (not x31698) x21559)
+:assumption (or (not x21546) x27089 x8424 x10829)
+:assumption (or (not x25134) (not x9008))
+:assumption (or (not x8647) x7043)
+:assumption (or x23565 (not x25259))
+:assumption (or x24097 x26579)
+:assumption (or x8594 x23877)
+:assumption (or (not x9439) x5111)
+:assumption (or (not x17484) (not x13916))
+:assumption (or (not x12286) (not x30437))
+:assumption (or x20467 (not x11730))
+:assumption (or (not x3398) x20966)
+:assumption (or (not x21548) (not x14839) x30700)
+:assumption (or (not x17455) (not x8961))
+:assumption (or x3123 (not x28127))
+:assumption (or (not x964) (not x31442) (not x2853) (not x5394))
+:assumption (or (not x12984) (not x16765) (not x4801))
+:assumption (or x4657 x31108)
+:assumption (or x16871 (not x18423))
+:assumption (or x23834 x3525)
+:assumption (or (not x13092) x21585)
+:assumption (or x30659 (not x13912))
+:assumption (or (not x12500) (not x12226) x874 x2798 x1170)
+:assumption (or (not x18478) x31581)
+:assumption (or (not x26598) x24800 (not x2133) x25942 (not x4134) x19785)
+:assumption (or (not x10129) (not x30410))
+:assumption (or (not x138) x22250)
+:assumption (or x23345 x1348 x11590)
+:assumption (or (not x7397) (not x10582) x28342 x7780 (not x21229))
+:assumption (or (not x20025) x15456)
+:assumption (or (not x20328) (not x15888))
+:assumption (or x4138 (not x28557))
+:assumption (or (not x1589) (not x22242))
+:assumption (or x13888 (not x27992))
+:assumption (or (not x18933) x7280)
+:assumption (or x23755 (not x22360))
+:assumption (or x2825 (not x888))
+:assumption (or (not x3524) x20961)
+:assumption (or x4002 x24327 x202)
+:assumption (or x5886 (not x20137))
+:assumption (or x13125 (not x20200))
+:assumption (or (not x28870) x22733)
+:assumption (or (not x14839) x21483)
+:assumption (or x14552 x20212)
+:assumption (or x25473 (not x2926))
+:assumption (or x9008 x14145 x11625)
+:assumption (or (not x5352) x24428 x5627)
+:assumption (or x3073 x21990)
+:assumption (or (not x22829) (not x28392) x21369 x27533 x2457)
+:assumption (or (not x24722) x20760 x21955 (not x20201) x18042)
+:assumption (or (not x9259) x21582)
+:assumption (or x21961 x8002)
+:assumption (or x24785 (not x29932))
+:assumption (or x2449 x12794)
+:assumption (or x27905 x12116)
+:assumption (or (not x7243) x19864)
+:assumption (or x30735 x28445)
+:assumption (or x7696 x23534)
+:assumption (or (not x9072) (not x27343))
+:assumption (or x14900 (not x1621) (not x28066))
+:assumption (or x827 x8556)
+:assumption (or (not x7140) x827)
+:assumption (or x15931 x25668)
+:assumption (or x16851 (not x28861) x23886 (not x12207))
+:assumption (or x12497 x13772)
+:assumption (or x16510 (not x27))
+:assumption (or (not x29606) (not x20912))
+:assumption (or x15694 (not x26373))
+:assumption (or x1369 (not x11473))
+:assumption (or (not x24756) x5137)
+:assumption (or (not x7801) (not x30755))
+:assumption (or (not x20840) (not x9113))
+:assumption (or (not x22557) x3782)
+:assumption (or x9416 x3687)
+:assumption (or x10938 x6588)
+:assumption (or (not x18576) x7414)
+:assumption (or x24708 x29442)
+:assumption (or x9008 x4108)
+:assumption (or x31227 (not x7350))
+:assumption (or (not x11389) x4361)
+:assumption (or x29959 (not x6941))
+:assumption (or (not x4524) x25928)
+:assumption (or x10632 (not x19499))
+:assumption (or (not x25522) x4844)
+:assumption (or x26273 x1925)
+:assumption (or (not x31289) x14744)
+:assumption (or (not x2310) (not x11795) (not x8947) (not x28625) x21815 x25802)
+:assumption (or x3259 (not x3782))
+:assumption (or (not x24782) x14625)
+:assumption (or x24782 x30469 x25219 x29501 (not x3500) x19381)
+:assumption (or (not x169) x14947 x964 x28471)
+:assumption (or (not x11974) (not x964))
+:assumption (or x12008 (not x14455) (not x7602))
+:assumption (or (not x15084) (not x24148))
+:assumption (or x16929 (not x10936))
+:assumption (or x17499 x14283)
+:assumption (or (not x30142) (not x4565) (not x9008))
+:assumption (or x14839 x22944)
+:assumption (or (not x15010) x4675)
+:assumption (or x8602 x22618)
+:assumption (or (not x27036) (not x20177))
+:assumption (or (not x16025) (not x17906))
+:assumption (or (not x6036) (not x263))
+:assumption (or x30298 (not x12636))
+:assumption (or x14897 x7590)
+:assumption (or x6157 (not x28864))
+:assumption (or x31470 (not x31825))
+:assumption (or x20604 x9368)
+:assumption (or x3665 x28041)
+:assumption (or x17846 x7298)
+:assumption (or (not x19908) (not x6419))
+:assumption (or (not x3917) x24520)
+:assumption (or (not x8549) (not x28444))
+:assumption (or (not x20271) x6162)
+:assumption (or x18228 (not x16990))
+:assumption (or x14431 (not x4791))
+:assumption (or (not x11632) (not x4576))
+:assumption (or (not x27802) (not x10103) x12660 (not x15537) (not x11375) x1182 (not x8117))
+:assumption (or x14452 (not x29972))
+:assumption (or x14976 (not x19006))
+:assumption (or x1111 x18546)
+:assumption (or (not x22069) (not x10145))
+:assumption (or x22783 (not x11111))
+:assumption (or x20885 (not x12574))
+:assumption (or (not x26670) x6597)
+:assumption (or (not x31825) x16893)
+:assumption (or (not x24468) (not x22761))
+:assumption (or x4575 (not x1831))
+:assumption (or x25556 (not x8792))
+:assumption (or (not x4914) (not x18300))
+:assumption (or x3664 (not x25659))
+:assumption (or x3222 x29255)
+:assumption (or x16136 (not x7857))
+:assumption (or x18623 x18306)
+:assumption (or x14242 (not x7349))
+:assumption (or (not x9953) (not x325))
+:assumption (or (not x13693) (not x3697) x6934 (not x415))
+:assumption (or (not x6474) (not x28434))
+:assumption (or x20885 (not x295))
+:assumption (or x3835 x12717)
+:assumption (or (not x21175) (not x9104))
+:assumption (or (not x251) (not x4234))
+:assumption (or (not x20060) x28844)
+:assumption (or (not x28137) (not x4049))
+:assumption (or (not x18197) (not x30944))
+:assumption (or (not x26991) (not x9531))
+:assumption (or (not x14750) (not x3974))
+:assumption (or (not x16748) x5367)
+:assumption (or x10609 x3277)
+:assumption (or x17438 x452)
+:assumption (or (not x27519) x20955)
+:assumption (or (not x24370) (not x23299))
+:assumption (or x25818 x30224 x19872 (not x13956))
+:assumption (or x29774 (not x15047))
+:assumption (or x17621 x19386)
+:assumption (or x8002 x13198 (not x1481))
+:assumption (or x27111 (not x5377))
+:assumption (or (not x14436) x31444)
+:assumption (or x16199 (not x29744))
+:assumption (or x21505 x4599)
+:assumption (or (not x26983) (not x7443))
+:assumption (or x9950 (not x24526))
+:assumption (or x22645 (not x9942))
+:assumption (or x14558 (not x2749) (not x6658) x29369 (not x21371) (not x17434))
+:assumption (or x7159 x5236)
+:assumption (or x21063 (not x21683))
+:assumption (or x17508 x26339)
+:assumption (or x26708 x499 x23270 x9773 (not x3788))
+:assumption (or (not x4491) x29853)
+:assumption (or x31921 (not x13966) x3960 (not x15799))
+:assumption (or (not x8200) x18628)
+:assumption (or (not x2794) (not x19168) x23413)
+:assumption (or x3641 x4154)
+:assumption (or (not x11490) (not x28023))
+:assumption (or (not x26006) (not x23963))
+:assumption (or x497 x25458 (not x16144))
+:assumption (or x6045 x26429)
+:assumption (or (not x14307) x8856 x10996 (not x30160) (not x3360) (not x7250) x12204 (not x23973))
+:assumption (or (not x16455) x29460)
+:assumption (or (not x3649) (not x26914))
+:assumption (or x8856 (not x9646))
+:assumption (or (not x12762) (not x20606))
+:assumption (or (not x10173) x1815)
+:assumption (or (not x5472) x16087 x5886 x8961)
+:assumption (or x18847 x5528 x13411)
+:assumption (or (not x27490) x18760 x23386)
+:assumption (or (not x7200) (not x4103))
+:assumption (or x24471 (not x29890))
+:assumption (or (not x10404) (not x23386) (not x30475) (not x26469) (not x17326))
+:assumption (or x26718 (not x6582))
+:assumption (or (not x4865) x30196)
+:assumption (or (not x5549) x15720)
+:assumption (or x2437 x31216)
+:assumption (or x22087 x18591)
+:assumption (or x13698 (not x27608) (not x18694))
+:assumption (or x20130 x12989)
+:assumption (or x4213 (not x226))
+:assumption (or (not x6663) (not x29939))
+:assumption (or x7001 x11032)
+:assumption (or x13411 (not x17715))
+:assumption (or x8343 x16886)
+:assumption (or (not x31136) x19992)
+:assumption (or (not x284) x2800)
+:assumption (or x2947 (not x26011))
+:assumption (or x7301 (not x31804))
+:assumption (or x30363 x18694 (not x12884) x5626)
+:assumption (or (not x16510) x28905)
+:assumption (or x20325 (not x20136))
+:assumption (or x3261 x3315)
+:assumption (or x6521 (not x19048))
+:assumption (or x13215 (not x5427) x13661 (not x30954) (not x10402))
+:assumption (or (not x25366) (not x11173))
+:assumption (or x28912 (not x9378))
+:assumption (or x24098 x5609)
+:assumption (or x29092 (not x26434))
+:assumption (or (not x28936) x18715)
+:assumption (or (not x1929) (not x21875))
+:assumption (or (not x23840) x8002)
+:assumption (or x29456 x7730)
+:assumption (or x18759 (not x12754))
+:assumption (or (not x20206) x9439 x16784)
+:assumption (or (not x1851) x29345)
+:assumption (or x21653 x16036)
+:assumption (or x8131 (not x288))
+:assumption (or x27422 x11750)
+:assumption (or x20612 (not x2116))
+:assumption (or (not x15079) (not x16907))
+:assumption (or (not x16882) (not x25970))
+:assumption (or x15697 (not x31087))
+:assumption (or (not x14814) x4101)
+:assumption (or x13591 x25322)
+:assumption (or x4322 x19951)
+:assumption (or x20819 x2726)
+:assumption (or (not x762) x15764 (not x27157))
+:assumption (or (not x12888) (not x4368) x3001 (not x202))
+:assumption (or (not x16129) (not x20010))
+:assumption (or x26409 x6902)
+:assumption (or x19521 (not x22466) (not x28465) (not x18110))
+:assumption (or (not x10067) (not x17891))
+:assumption (or x29546 (not x9107) (not x10766))
+:assumption (or x7835 (not x19939))
+:assumption (or x12245 x9549)
+:assumption (or x22824 x983)
+:assumption (or x24340 (not x9630) (not x8002))
+:assumption (or x10965 x14138)
+:assumption (or (not x16355) (not x40))
+:assumption (or (not x20573) (not x26046))
+:assumption (or x26116 (not x21298))
+:assumption (or (not x4206) (not x28283))
+:assumption (or x19685 x21788)
+:assumption (or (not x31607) (not x5214) x5358 (not x2992) (not x22409) (not x17236) (not x30584) x26308)
+:assumption (or x4464 (not x28448))
+:assumption (or x9750 (not x26170))
+:assumption (or x7978 (not x18123))
+:assumption (or x13133 x28227)
+:assumption (or x5008 (not x17146))
+:assumption (or (not x15795) (not x11645))
+:assumption (or x3598 x23147)
+:assumption (or x18753 (not x5004) x26031 x9213 (not x24283) x11219)
+:assumption (or x2494 (not x12864))
+:assumption (or (not x6997) x27229 x20106 x28283)
+:assumption (or x14435 x21512)
+:assumption (or (not x13382) x1861)
+:assumption (or x20807 (not x14218) x12739 x25415)
+:assumption (or (not x29156) x13066)
+:assumption (or (not x18006) x28140)
+:assumption (or x23882 (not x7200) x17801)
+:assumption (or x438 x16089)
+:assumption (or x18913 x9779)
+:assumption (or (not x26610) (not x20482))
+:assumption (or x7312 x9532)
+:assumption (or x31097 x28872)
+:assumption (or x25315 (not x6117))
+:assumption (or (not x29536) (not x7128))
+:assumption (or x16684 x22121)
+:assumption (or x13635 (not x13435))
+:assumption (or x30422 x17435)
+:assumption (or (not x2906) x15368)
+:assumption (or x13131 (not x4600))
+:assumption (or x446 x1041)
+:assumption (or (not x12844) x26199)
+:assumption (or x6319 x24462)
+:assumption (or x21815 x14554 x7394 (not x21819) x2075 x17560)
+:assumption (or x13624 (not x22553))
+:assumption (or x16859 (not x5090))
+:assumption (or x4201 x25659 (not x30628))
+:assumption (or (not x14012) x9380)
+:assumption (or x25542 x21406 x658 x25988 x10024 x25421)
+:assumption (or (not x30243) x12033)
+:assumption (or (not x25021) x23008)
+:assumption (or x8547 (not x17751))
+:assumption (or x18385 (not x2639) x8484)
+:assumption (or (not x632) x4505)
+:assumption (or (not x15799) x28841)
+:assumption (or x15042 x21629)
+:assumption (or x10909 (not x19627) (not x25995))
+:assumption (or x22386 (not x31551))
+:assumption (or (not x25423) x1994 (not x6746) x2500 x27911)
+:assumption (or x6813 (not x12143) x1582)
+:assumption (or x2431 x3073)
+:assumption (or x17897 x5772)
+:assumption (or (not x23757) x25857)
+:assumption (or x31027 (not x28143))
+:assumption (or (not x14623) (not x7001) x28622 (not x28023) x629 (not x22798))
+:assumption (or (not x21653) x9737)
+:assumption (or (not x28501) x26767)
+:assumption (or x20879 (not x31831))
+:assumption (or x11581 x4170)
+:assumption (or (not x4217) (not x8672))
+:assumption (or (not x15801) x26432 (not x2171))
+:assumption (or x10812 (not x31208))
+:assumption (or x13674 x12740)
+:assumption (or x28422 x24383)
+:assumption (or (not x13435) x25186)
+:assumption (or x12846 x27366)
+:assumption (or x17794 (not x21466))
+:assumption (or x28885 (not x18029) x7159)
+:assumption (or (not x24572) (not x27006))
+:assumption (or (not x14156) (not x28030))
+:assumption (or x20244 (not x18110))
+:assumption (or x14519 (not x26226))
+:assumption (or (not x20854) x23244)
+:assumption (or (not x24639) x21815 x25800 x29214 (not x6238) x19108)
+:assumption (or (not x28358) x1269)
+:assumption (or x4606 (not x26897) (not x8002) x1549)
+:assumption (or (not x23886) x23939)
+:assumption (or x6603 (not x11104))
+:assumption (or (not x23436) (not x24372) (not x23265) (not x26325) (not x15018))
+:assumption (or x23007 (not x6243) (not x11409))
+:assumption (or (not x25347) x30954)
+:assumption (or (not x7965) (not x18258))
+:assumption (or x18385 (not x7681))
+:assumption (or (not x15479) x19114)
+:assumption (or (not x21262) x5528 x15102)
+:assumption (or (not x23702) (not x3496))
+:assumption (or x6000 (not x30359))
+:assumption (or (not x7110) x30526)
+:assumption (or (not x2572) x6594)
+:assumption (or x6951 (not x27393) x25509)
+:assumption (or (not x10341) (not x5660))
+:assumption (or x6830 (not x8535))
+:assumption (or x18845 (not x24906))
+:assumption (or x18025 (not x12840))
+:assumption (or x25891 x3593 (not x21298))
+:assumption (or (not x17332) x5842)
+:assumption (or (not x10240) (not x9188))
+:assumption (or x20672 x22875)
+:assumption (or x28955 (not x12954))
+:assumption (or x6352 (not x11792))
+:assumption (or (not x18623) (not x28017))
+:assumption (or (not x4736) x19350)
+:assumption (or x24025 x3453 (not x26333) x318 x15150)
+:assumption (or (not x6299) (not x11257) x9303 x20291 (not x5202))
+:assumption (or x1649 x955 (not x28242) (not x10874))
+:assumption (or x24813 (not x3899))
+:assumption (or x24031 (not x1798) (not x21133) x14722 x4491 (not x30217) x1308)
+:assumption (or (not x19836) (not x22963))
+:assumption (or (not x19601) (not x3346) x7760 x21298 x3807 x24586)
+:assumption (or (not x1582) (not x23842))
+:assumption (or x12283 (not x19549))
+:assumption (or x14836 x26999)
+:assumption (or x21791 x22946)
+:assumption (or (not x18593) (not x27863))
+:assumption (or (not x18362) (not x27452))
+:assumption (or x15000 (not x29793))
+:assumption (or x2319 (not x5710))
+:assumption (or x16025 (not x30858))
+:assumption (or (not x3926) (not x6947))
+:assumption (or (not x21572) (not x27030))
+:assumption (or x18500 (not x8564))
+:assumption (or (not x8658) x28316)
+:assumption (or x10309 x15417)
+:assumption (or (not x30873) (not x10880))
+:assumption (or (not x11211) (not x6243))
+:assumption (or x14687 x3015 (not x4652))
+:assumption (or (not x24979) (not x2239))
+:assumption (or (not x28129) x21076)
+:assumption (or (not x16164) (not x29602))
+:assumption (or (not x2512) (not x7382))
+:assumption (or x30538 x19753)
+:assumption (or x9924 x23091 x22924 (not x1854) x11580 x26227)
+:assumption (or (not x10665) (not x25119))
+:assumption (or x19117 (not x24916))
+:assumption (or (not x25228) x9008)
+:assumption (or (not x11294) (not x5146) (not x6181))
+:assumption (or x8312 (not x10153))
+:assumption (or (not x5440) x13514 (not x16946) x8658)
+:assumption (or (not x24001) (not x13956))
+:assumption (or (not x21434) x5249 x13956)
+:assumption (or (not x2088) x16291)
+:assumption (or (not x31414) x21633)
+:assumption (or (not x13260) (not x24153))
+:assumption (or x15900 x3522)
+:assumption (or (not x23799) x11509)
+:assumption (or x14406 x8551)
+:assumption (or (not x2096) (not x4026))
+:assumption (or x9726 x8692)
+:assumption (or (not x25659) (not x4131))
+:assumption (or (not x17862) (not x25986))
+:assumption (or (not x1610) x21384)
+:assumption (or x11500 (not x18348))
+:assumption (or (not x11370) (not x24778))
+:assumption (or (not x30656) x24432 (not x2494) (not x3464) (not x22126))
+:assumption (or (not x4310) (not x12242) x21667 (not x11461) (not x20129))
+:assumption (or (not x25690) (not x18899))
+:assumption (or (not x15426) x2469)
+:assumption (or (not x9025) (not x9531) x7976)
+:assumption (or (not x5882) (not x29823))
+:assumption (or (not x6072) (not x19992))
+:assumption (or (not x16273) x24252)
+:assumption (or (not x20981) (not x20596))
+:assumption (or (not x6128) x18723)
+:assumption (or (not x1243) (not x12560))
+:assumption (or (not x10854) x31435)
+:assumption (or x16510 x23716)
+:assumption (or (not x6307) x20419 (not x20430) x7964 x7730 x10874)
+:assumption (or (not x24693) x6224 x2434)
+:assumption (or (not x12345) x27276)
+:assumption (or (not x8728) (not x21811))
+:assumption (or x21476 x15665)
+:assumption (or (not x16724) x11185)
+:assumption (or x31620 (not x13858))
+:assumption (or (not x1264) x29485)
+:assumption (or (not x24903) x6943)
+:assumption (or x27743 x30256)
+:assumption (or (not x7522) (not x23244))
+:assumption (or x2202 x28062)
+:assumption (or (not x5407) (not x27042))
+:assumption (or (not x2651) x15135)
+:assumption (or x11003 x19823)
+:assumption (or x21740 (not x18312))
+:assumption (or (not x26745) (not x9531) (not x1467))
+:assumption (or x9879 x2909)
+:assumption (or (not x26432) (not x10415) (not x26297))
+:assumption (or x22369 x1401 (not x169))
+:assumption (or x25122 x5886)
+:assumption (or x13399 x22960 (not x13780) x26713 x14862 x19374)
+:assumption (or x8431 x10905)
+:assumption (or x8675 x31506)
+:assumption (or x8388 x6764)
+:assumption (or (not x30201) x2502 x21815)
+:assumption (or (not x19418) (not x16423))
+:assumption (or x27058 x7958)
+:assumption (or (not x16284) x11691)
+:assumption (or (not x29380) (not x22819))
+:assumption (or x20212 x7177)
+:assumption (or x3814 (not x31605))
+:assumption (or (not x4201) (not x25659))
+:assumption (or (not x7096) x12922)
+:assumption (or (not x7716) x17705)
+:assumption (or x16025 (not x15633) (not x14190))
+:assumption (or x18603 (not x22643))
+:assumption (or x17716 (not x18058))
+:assumption (or (not x15091) x20736)
+:assumption (or (not x9184) x22128)
+:assumption (or (not x10723) x16629 x4683)
+:assumption (or x11049 (not x2550))
+:assumption (or (not x30871) x9923)
+:assumption (or x3453 (not x4525))
+:assumption (or x6968 (not x4370))
+:assumption (or (not x9818) (not x9194))
+:assumption (or (not x114) x7128)
+:assumption (or (not x30365) (not x18889))
+:assumption (or x6909 (not x12522))
+:assumption (or (not x8544) (not x23274))
+:assumption (or (not x15877) x23933)
+:assumption (or x3435 (not x16421))
+:assumption (or (not x5333) (not x18950))
+:assumption (or (not x25161) x13507)
+:assumption (or x29658 x20044 (not x9008))
+:assumption (or x10850 x12530)
+:assumption (or x23244 x10236)
+:assumption (or x3961 (not x13499))
+:assumption (or (not x1166) (not x15732))
+:assumption (or x4890 (not x12404) (not x9713) x7235)
+:assumption (or x30534 (not x22434))
+:assumption (or x23575 x26899 x15610)
+:assumption (or x9008 (not x28945) x2846)
+:assumption (or x3428 x19487)
+:assumption (or (not x8208) x25448)
+:assumption (or (not x18890) (not x10874))
+:assumption (or x13319 x3203)
+:assumption (or (not x23518) x14435)
+:assumption (or x4494 (not x11211))
+:assumption (or (not x24743) (not x1440))
+:assumption (or x5013 (not x15321))
+:assumption (or (not x24378) (not x23244))
+:assumption (or x24956 x5679)
+:assumption (or (not x964) x8913 x169 (not x1756))
+:assumption (or x14072 x24555)
+:assumption (or (not x19655) x2405 (not x16907))
+:assumption (or (not x13596) x31766)
+:assumption (or (not x31209) x24552)
+:assumption (or (not x1112) x20550)
+:assumption (or (not x18638) x3738)
+:assumption (or (not x29498) (not x22524))
+:assumption (or (not x8375) x1373)
+:assumption (or x29863 (not x14099))
+:assumption (or x2459 (not x28679) x24562 x14060 (not x4091))
+:assumption (or (not x6374) (not x23569))
+:assumption (or (not x952) x23433)
+:assumption (or x21653 (not x2143) x9807)
+:assumption (or (not x13744) x26232)
+:assumption (or x23765 (not x18794))
+:assumption (or x12880 (not x12746))
+:assumption (or (not x13829) x5639)
+:assumption (or (not x8622) (not x17539))
+:assumption (or (not x10389) x15883)
+:assumption (or x25534 x11134)
+:assumption (or (not x29792) x22794)
+:assumption (or x9466 x28779)
+:assumption (or x16652 (not x21258))
+:assumption (or x30954 (not x19428) x11928 x18100 (not x24079))
+:assumption (or (not x18867) x28807)
+:assumption (or (not x10034) x4918 (not x23014) x11444 x14455 (not x15175))
+:assumption (or (not x14399) x28494)
+:assumption (or x14737 (not x16074))
+:assumption (or x13149 x11356)
+:assumption (or x23235 (not x25387))
+:assumption (or (not x4433) x262)
+:assumption (or x14078 (not x23083))
+:assumption (or (not x30090) (not x9008) (not x2668))
+:assumption (or x29439 x3718)
+:assumption (or (not x28308) (not x23667))
+:assumption (or x480 (not x6873) (not x26472))
+:assumption (or x1095 x25659)
+:assumption (or x23300 x27582)
+:assumption (or (not x21043) x23429)
+:assumption (or x30633 (not x16444))
+:assumption (or x7883 x17116)
+:assumption (or x14061 (not x31222) x27269 x21530 x7751)
+:assumption (or x30763 (not x26540))
+:assumption (or x7937 x12830 x7179 x20604 (not x18441) x2842 (not x23200))
+:assumption (or x22551 (not x8516) (not x6042))
+:assumption (or (not x22855) (not x6850))
+:assumption (or x2124 (not x15271))
+:assumption (or (not x24112) (not x15072))
+:assumption (or x29299 x16596)
+:assumption (or x20998 x15953 x26892 x4896 (not x9160) x26499)
+:assumption (or x6349 (not x10874))
+:assumption (or (not x12997) x31015)
+:assumption (or (not x11082) (not x9692))
+:assumption (or (not x12519) (not x11281))
+:assumption (or x2281 x4467)
+:assumption (or (not x29419) x3250)
+:assumption (or x17877 x18202)
+:assumption (or x21490 (not x5592))
+:assumption (or x14394 (not x3453) x20457)
+:assumption (or (not x1289) x22531)
+:assumption (or x2070 x26648 x15034 x24346)
+:assumption (or (not x20119) x12501)
+:assumption (or x1208 (not x11192))
+:assumption (or x11508 (not x21215))
+:assumption (or x6082 (not x11574))
+:assumption (or x5672 (not x6149))
+:assumption (or x13611 (not x28752))
+:assumption (or x17824 (not x15795))
+:assumption (or (not x3670) (not x29032))
+:assumption (or x6376 (not x26305) (not x661) (not x17254))
+:assumption (or x13670 (not x11728))
+:assumption (or (not x31037) (not x24850))
+:assumption (or x6227 x480 x25231)
+:assumption (or (not x16407) (not x10201))
+:assumption (or x29106 x3044 x30783 (not x20342) (not x30590) x3669 (not x6998))
+:assumption (or x5277 (not x7904))
+:assumption (or x9213 x5781)
+:assumption (or x14669 (not x24443))
+:assumption (or x24678 x31850)
+:assumption (or (not x1610) (not x15292))
+:assumption (or x23633 x20413)
+:assumption (or (not x30935) (not x16336))
+:assumption (or x21595 (not x4183))
+:assumption (or x4940 (not x30516))
+:assumption (or x8751 x22767 (not x18793) (not x14379) x1760 (not x11307) (not x24753) (not x18921))
+:assumption (or x19909 x31138)
+:assumption (or x30501 (not x3602))
+:assumption (or x26648 (not x15795) (not x2435))
+:assumption (or (not x6969) x22054)
+:assumption (or x26529 (not x26267))
+:assumption (or x22539 x14842)
+:assumption (or (not x28891) x12880)
+:assumption (or (not x15494) x21243)
+:assumption (or (not x2592) (not x7770))
+:assumption (or x27749 (not x638))
+:assumption (or (not x8046) (not x194))
+:assumption (or (not x3279) x10656)
+:assumption (or x12651 (not x2888) x27583 (not x3441) x1774)
+:assumption (or x10840 x23831 x23399 (not x7537))
+:assumption (or (not x9855) (not x706))
+:assumption (or (not x17987) (not x14324))
+:assumption (or x6340 (not x4107))
+:assumption (or (not x6746) (not x2500) (not x2173))
+:assumption (or (not x16057) x3610)
+:assumption (or x20917 (not x19227))
+:assumption (or x24373 x30783)
+:assumption (or (not x9951) (not x2799) (not x27175) x27865 (not x1750) x30603 x31617 (not x29288))
+:assumption (or (not x20104) x14455 (not x14450))
+:assumption (or (not x18937) x28713)
+:assumption (or x3409 (not x17446))
+:assumption (or (not x25014) (not x1582))
+:assumption (or x19933 x410 (not x25747))
+:assumption (or (not x6783) (not x26583))
+:assumption (or (not x3701) (not x3644))
+:assumption (or x2946 x4863)
+:assumption (or (not x24675) (not x29307))
+:assumption (or (not x14628) x27748 x232)
+:assumption (or (not x6678) (not x15246))
+:assumption (or (not x28144) x11532 (not x11119) (not x19061))
+:assumption (or x19813 x1920)
+:assumption (or x26284 x30159 (not x5528) (not x9008) (not x3516))
+:assumption (or (not x24925) x11564)
+:assumption (or (not x13418) (not x27822))
+:assumption (or (not x20169) x17534 x6594 (not x18485))
+:assumption (or x90 x22424)
+:assumption (or x1417 x23256)
+:assumption (or (not x21539) x28525)
+:assumption (or x23801 (not x16391))
+:assumption (or x15234 (not x1161))
+:assumption (or (not x30827) x17075)
+:assumption (or (not x27448) (not x17251))
+:assumption (or x18018 (not x10549))
+:assumption (or x10424 x21848)
+:assumption (or (not x20904) x8319)
+:assumption (or x13788 x28215)
+:assumption (or (not x8609) x14132 (not x29208))
+:assumption (or x18877 (not x13328))
+:assumption (or x29087 x22667)
+:assumption (or (not x1931) (not x3377))
+:assumption (or (not x30579) (not x10431))
+:assumption (or (not x282) x22941)
+:assumption (or (not x29310) (not x14042))
+:assumption (or (not x19164) x7293)
+:assumption (or (not x16986) x10465)
+:assumption (or (not x17163) x11206)
+:assumption (or (not x26526) x6309)
+:assumption (or x4794 (not x30667))
+:assumption (or (not x21815) (not x3033))
+:assumption (or (not x23251) x21884)
+:assumption (or (not x4782) x21700)
+:assumption (or x21133 x28768)
+:assumption (or (not x806) x27537 (not x7928))
+:assumption (or x18859 x15823 x31404)
+:assumption (or x7506 x8162 (not x13235) x26670 (not x13133))
+:assumption (or x11158 x3465)
+:assumption (or x1578 (not x21298))
+:assumption (or x28685 x6152)
+:assumption (or x13075 x20232 x6558)
+:assumption (or x22852 x30254 x23402)
+:assumption (or x774 x4620)
+:assumption (or (not x22160) (not x16877))
+:assumption (or (not x14880) x26489)
+:assumption (or x22495 x28962)
+:assumption (or (not x14638) x18003 x19864 x27555)
+:assumption (or x2016 (not x13948))
+:assumption (or x22815 (not x15131))
+:assumption (or (not x19992) x25900 x28023)
+:assumption (or (not x22588) (not x30113))
+:assumption (or x24024 x15477)
+:assumption (or x14511 (not x21122) (not x10850) x11644 x754 x3728 (not x1920))
+:assumption (or x14455 x9592)
+:assumption (or (not x5881) x18721)
+:assumption (or (not x21096) (not x12672) (not x28226))
+:assumption (or (not x18594) x25767 (not x14863) (not x22157))
+:assumption (or (not x25350) x2148)
+:assumption (or (not x6593) (not x16495))
+:assumption (or (not x21201) x20119)
+:assumption (or x3643 x6002)
+:assumption (or (not x16810) (not x15393))
+:assumption (or x16997 (not x2885) (not x30138))
+:assumption (or x8461 (not x29278))
+:assumption (or (not x22312) x16384)
+:assumption (or (not x26168) x5528)
+:assumption (or x12113 (not x9608))
+:assumption (or (not x23337) x152)
+:assumption (or (not x15366) (not x18781))
+:assumption (or (not x25334) (not x18364))
+:assumption (or x7978 x13874)
+:assumption (or (not x18742) (not x22083))
+:assumption (or (not x10311) (not x23014))
+:assumption (or x26306 x11058)
+:assumption (or x24553 (not x30495) x5367 (not x25876))
+:assumption (or x16674 (not x1289))
+:assumption (or (not x18662) (not x15557) x24954 x30429 (not x5639))
+:assumption (or (not x17290) (not x12951))
+:assumption (or (not x30113) x1508 x922 (not x14509))
+:assumption (or x26816 (not x12796))
+:assumption (or x23519 (not x25436))
+:assumption (or x23945 (not x16868))
+:assumption (or x23356 (not x22727))
+:assumption (or x9957 x21532)
+:assumption (or (not x19385) x3267 x2487 x5704 x8002 (not x28910))
+:assumption (or (not x7231) x15644)
+:assumption (or (not x28635) x3690)
+:assumption (or (not x30790) x25110)
+:assumption (or (not x9075) x16715)
+:assumption (or x25049 (not x19263))
+:assumption (or (not x25745) x16179)
+:assumption (or x18642 x19685)
+:assumption (or (not x2106) (not x644) (not x21298) x14353)
+:assumption (or x1088 x30512)
+:assumption (or (not x2497) x31099)
+:assumption (or (not x17901) (not x28631))
+:assumption (or x26098 (not x31517))
+:assumption (or (not x17926) x17730)
+:assumption (or x11408 (not x25659) x9382)
+:assumption (or x1602 x27914)
+:assumption (or (not x4776) x20617)
+:assumption (or (not x9008) x25264 (not x5528) (not x6783) x22154)
+:assumption (or (not x30199) x9783)
+:assumption (or (not x3436) x31829 x28929 x9385 (not x3105))
+:assumption (or (not x17299) x14753)
+:assumption (or x6015 (not x823))
+:assumption (or (not x15326) x3901)
+:assumption (or x8107 (not x1588))
+:assumption (or x7786 (not x13310) x9423 (not x10536))
+:assumption (or x25971 (not x14113) x4213)
+:assumption (or x20060 (not x11449))
+:assumption (or x8007 (not x22973))
+:assumption (or (not x3822) x31593 (not x27739) (not x14496) (not x10323) x9896 (not x17791))
+:assumption (or (not x31119) (not x4440))
+:assumption (or x12495 x9987)
+:assumption (or (not x24231) x11559)
+:assumption (or (not x10322) (not x11780))
+:assumption (or (not x8757) x28709)
+:assumption (or (not x988) (not x1120))
+:assumption (or x26899 x7748 (not x13415) x9832 x27019)
+:assumption (or x28648 x31696)
+:assumption (or (not x8002) x16671)
+:assumption (or (not x30432) x38 x16983 (not x8517))
+:assumption (or x12734 x30916)
+:assumption (or x7018 (not x28708) (not x4386) (not x9848))
+:assumption (or (not x7406) (not x11602))
+:assumption (or (not x21670) x2425)
+:assumption (or (not x76) x28082)
+:assumption (or (not x18381) (not x17038))
+:assumption (or (not x5963) x8002)
+:assumption (or x22337 x28298)
+:assumption (or (not x26288) x25840)
+:assumption (or (not x30811) x23244)
+:assumption (or (not x10808) (not x9025) x15887)
+:assumption (or (not x13442) x18989)
+:assumption (or x6485 (not x18851) (not x23605) (not x23379))
+:assumption (or (not x10238) (not x3867))
+:assumption (or x30904 x21754)
+:assumption (or (not x11482) x18509)
+:assumption (or x31611 (not x2131))
+:assumption (or (not x10909) (not x25915))
+:assumption (or (not x19814) (not x21359))
+:assumption (or (not x12865) (not x24050) x24218)
+:assumption (or x30954 x27684)
+:assumption (or x19762 x14578 (not x6722))
+:assumption (or x17992 x10332)
+:assumption (or (not x14347) (not x5141) (not x18288))
+:assumption (or (not x5210) (not x13817))
+:assumption (or (not x5886) x5234)
+:assumption (or (not x26969) x13576)
+:assumption (or x13242 (not x18232))
+:assumption (or x15910 x12994)
+:assumption (or (not x369) x21703)
+:assumption (or (not x9375) (not x10433))
+:assumption (or x6610 (not x19011))
+:assumption (or x3998 x8286)
+:assumption (or x24519 (not x2856))
+:assumption (or (not x27886) x8006)
+:assumption (or (not x30350) (not x6969))
+:assumption (or x27768 (not x21611))
+:assumption (or (not x776) (not x30405))
+:assumption (or (not x17166) x21912)
+:assumption (or (not x20797) x19156 x29044 (not x8887))
+:assumption (or x19005 x31884)
+:assumption (or (not x1446) x1003)
+:assumption (or (not x22935) (not x14275))
+:assumption (or x1343 (not x23886))
+:assumption (or x27228 (not x12651))
+:assumption (or x24655 x5409)
+:assumption (or x23116 x29251)
+:assumption (or (not x26875) (not x17262) (not x15193) (not x11324))
+:assumption (or x17618 (not x8532) (not x18622) x19338)
+:assumption (or (not x14158) (not x2716))
+:assumption (or x7459 (not x22301))
+:assumption (or x19335 x7348)
+:assumption (or (not x25467) x30138)
+:assumption (or x28067 x6289)
+:assumption (or x11388 (not x3188))
+:assumption (or x16141 (not x1866) x25950 (not x203) (not x28588) x15537)
+:assumption (or (not x26762) x3274 (not x3269) (not x19071) x24814 x16241 x10788)
+:assumption (or x6264 (not x27544))
+:assumption (or (not x23384) x8843)
+:assumption (or (not x28096) (not x3063))
+:assumption (or x3167 (not x19093) x12760 (not x14019) (not x23170))
+:assumption (or (not x2498) (not x10938) (not x8659))
+:assumption (or (not x30151) (not x30510))
+:assumption (or (not x25868) x6473)
+:assumption (or x17940 x25888 x16774 x26837 (not x16842))
+:assumption (or (not x14009) x10574)
+:assumption (or (not x29063) x22798)
+:assumption (or x12292 (not x10162))
+:assumption (or x1736 x26548)
+:assumption (or (not x30349) (not x5525))
+:assumption (or (not x9439) x24890)
+:assumption (or x6793 (not x9008) x12253)
+:assumption (or (not x11913) x30574 x9439 (not x25334))
+:assumption (or x25097 (not x10471))
+:assumption (or (not x6227) (not x21304))
+:assumption (or x18056 (not x10290))
+:assumption (or x9947 x23286)
+:assumption (or (not x7996) (not x13956) x7540 (not x6920) (not x31461) (not x11354) x18796)
+:assumption (or (not x28071) (not x25659) x670)
+:assumption (or x31206 (not x14076))
+:assumption (or (not x10332) (not x9580) x14839 (not x1276))
+:assumption (or (not x2736) x6226)
+:assumption (or (not x4092) x3573 (not x24067))
+:assumption (or x19790 (not x24527))
+:assumption (or x8842 (not x6628))
+:assumption (or (not x6467) (not x31317))
+:assumption (or x9162 (not x16832) x9459 (not x7080) x21696 x26391)
+:assumption (or (not x20325) x12242 (not x25039) (not x4922))
+:assumption (or x2934 (not x11516))
+:assumption (or x3494 x11716)
+:assumption (or x16691 x25538)
+:assumption (or x3001 x20956)
+:assumption (or (not x7671) x17728)
+:assumption (or (not x12648) (not x18032))
+:assumption (or (not x17884) (not x13907))
+:assumption (or x5040 (not x5037))
+:assumption (or (not x18987) (not x3449))
+:assumption (or (not x9601) (not x16723))
+:assumption (or (not x19146) (not x3453))
+:assumption (or x23244 x1812)
+:assumption (or x12391 (not x3368))
+:assumption (or (not x16116) x16399)
+:assumption (or (not x26474) x7023)
+:assumption (or (not x1055) (not x14299))
+:assumption (or (not x15621) x22763 (not x13139) (not x23998))
+:assumption (or x2278 (not x18364))
+:assumption (or x27121 x28041)
+:assumption (or x12974 (not x9567))
+:assumption (or (not x22971) (not x12714))
+:assumption (or x25257 x28711)
+:assumption (or x28513 x23595)
+:assumption (or x23958 (not x8443) (not x16345) (not x20486))
+:assumption (or (not x26461) (not x5843))
+:assumption (or x18697 x20839)
+:assumption (or x13676 x14222)
+:assumption (or (not x11446) (not x21653))
+:assumption (or x7429 (not x8817))
+:assumption (or x20550 (not x11425) x25659 x3001 (not x29027))
+:assumption (or x19093 x14019)
+:assumption (or (not x23957) x29512)
+:assumption (or x5636 x5906)
+:assumption (or (not x16741) x2042 x11899)
+:assumption (or (not x24297) x5463)
+:assumption (or (not x1923) x2616)
+:assumption (or (not x3691) (not x7704))
+:assumption (or x9236 (not x25524))
+:assumption (or (not x11467) (not x301) x11675 (not x14347))
+:assumption (or x23204 x9008)
+:assumption (or x7486 (not x7290) (not x13317) (not x26211))
+:assumption (or (not x1361) x15152)
+:assumption (or x22631 x20194)
+:assumption (or x24355 (not x2652))
+:assumption (or x7921 (not x17494))
+:assumption (or (not x24756) x29312 x3773)
+:assumption (or (not x125) (not x16011))
+:assumption (or x21110 (not x16614))
+:assumption (or x29422 x8681)
+:assumption (or x5445 x16268)
+:assumption (or x30219 (not x27942) x9099)
+:assumption (or x12980 x31179)
+:assumption (or (not x13442) x2312)
+:assumption (or (not x5560) (not x22394))
+:assumption (or (not x27870) x23748)
+:assumption (or (not x9008) x10725)
+:assumption (or x2083 (not x31889))
+:assumption (or x25763 (not x12279))
+:assumption (or (not x1002) (not x8471))
+:assumption (or x27764 (not x10032))
+:assumption (or x9879 x19623)
+:assumption (or (not x27144) x27318)
+:assumption (or x927 (not x9464))
+:assumption (or x1297 x26824)
+:assumption (or x23014 x901)
+:assumption (or (not x8002) (not x7264))
+:assumption (or x3218 x3206)
+:assumption (or (not x13988) x9670)
+:assumption (or (not x26662) (not x13186) (not x25659))
+:assumption (or (not x6632) (not x29106))
+:assumption (or x6094 (not x16463))
+:assumption (or x797 (not x26376))
+:assumption (or x5913 x17943)
+:assumption (or (not x14101) x5152)
+:assumption (or (not x4292) x19409)
+:assumption (or (not x16329) x22506)
+:assumption (or (not x23922) (not x12242))
+:assumption (or x11037 (not x8576))
+:assumption (or (not x29719) x3905)
+:assumption (or (not x21310) x11766 (not x13956))
+:assumption (or (not x16306) x28018)
+:assumption (or (not x31734) (not x14677))
+:assumption (or x30941 x7720)
+:assumption (or (not x11792) (not x6972) x6149 x24762)
+:assumption (or (not x15153) x3142)
+:assumption (or x29759 (not x5998))
+:assumption (or (not x14945) x2539 (not x23453) x5225 (not x5206) x16723)
+:assumption (or x15974 x7752)
+:assumption (or x27771 (not x31631))
+:assumption (or (not x27661) (not x7524))
+:assumption (or (not x13275) x4390)
+:assumption (or (not x26894) x10906)
+:assumption (or x5502 x28068)
+:assumption (or (not x1785) (not x13100))
+:assumption (or (not x30009) x5476)
+:assumption (or x25892 (not x4348))
+:assumption (or (not x11290) x27466)
+:assumption (or x22540 x923)
+:assumption (or x1296 (not x3596))
+:assumption (or (not x119) x20885 (not x27727))
+:assumption (or x9693 x12871)
+:assumption (or (not x16992) x14718)
+:assumption (or (not x19713) x10723 (not x26542))
+:assumption (or (not x17109) (not x8434) x19757 x7837)
+:assumption (or x202 x26875)
+:assumption (or x20239 x169)
+:assumption (or (not x21048) (not x26915))
+:assumption (or x26670 x18085)
+:assumption (or x20343 x26374 x11329 (not x26762))
+:assumption (or (not x18500) x4617)
+:assumption (or x26463 (not x23244))
+:assumption (or x12676 (not x748) x16771)
+:assumption (or x6071 (not x28819))
+:assumption (or (not x10973) (not x21073) (not x5708) x8979 (not x7776) x4635 (not x26539) (not x15105))
+:assumption (or (not x13811) (not x21328) x19465)
+:assumption (or (not x21573) x30319)
+:assumption (or (not x8074) x25738)
+:assumption (or x29443 (not x30011) (not x12690))
+:assumption (or (not x28083) x12759)
+:assumption (or (not x1226) (not x22362))
+:assumption (or x29649 (not x9636))
+:assumption (or (not x24417) x10554 x6641 (not x30649) x4407 x15366 x13832)
+:assumption (or (not x4299) x28605)
+:assumption (or (not x8850) x19992)
+:assumption (or (not x14839) (not x328))
+:assumption (or x12994 x13136)
+:assumption (or x3482 x1582 x16831)
+:assumption (or (not x24068) x3852)
+:assumption (or x28432 x4695)
+:assumption (or (not x10981) (not x15968))
+:assumption (or x27941 x3380)
+:assumption (or x15648 x13553)
+:assumption (or x11673 (not x2828))
+:assumption (or (not x30312) (not x8658))
+:assumption (or x3447 (not x21107))
+:assumption (or x22533 x5579)
+:assumption (or (not x9257) x17737)
+:assumption (or (not x13576) x15768)
+:assumption (or (not x16887) x31482 (not x8222))
+:assumption (or (not x7340) x23399)
+:assumption (or x25823 x13622)
+:assumption (or x16172 x8284)
+:assumption (or (not x17689) (not x24292))
+:assumption (or (not x3258) (not x30037))
+:assumption (or x27691 (not x31704))
+:assumption (or (not x28973) x28445)
+:assumption (or x30155 (not x15468))
+:assumption (or x22258 (not x21855))
+:assumption (or x22154 (not x24613) (not x20550))
+:assumption (or (not x11380) (not x27995))
+:assumption (or x12521 (not x21135))
+:assumption (or x12 (not x8106))
+:assumption (or x9999 x13246)
+:assumption (or x21894 x7880)
+:assumption (or x10137 (not x10305))
+:assumption (or (not x31204) (not x26075))
+:assumption (or (not x16522) x3065)
+:assumption (or (not x16603) (not x29040))
+:assumption (or x9715 x11771)
+:assumption (or (not x6987) x22003 x3492)
+:assumption (or x4435 (not x13207))
+:assumption (or x24434 (not x6038))
+:assumption (or (not x14313) (not x27813))
+:assumption (or x31122 (not x22682) (not x15621) (not x13139))
+:assumption (or x20651 x14302)
+:assumption (or (not x14486) (not x6193))
+:assumption (or x578 x26414)
+:assumption (or (not x28298) (not x1765) x26243 (not x11033) x8148)
+:assumption (or x20042 (not x15140))
+:assumption (or x21082 (not x7974))
+:assumption (or (not x253) x22013 x26268 x27179)
+:assumption (or (not x28881) (not x28034))
+:assumption (or x17406 (not x17558))
+:assumption (or (not x16140) (not x20905))
+:assumption (or (not x31118) (not x23958))
+:assumption (or (not x10336) (not x29972))
+:assumption (or (not x7972) x10779)
+:assumption (or x28242 (not x10874) x8566 x4291)
+:assumption (or (not x213) (not x4591))
+:assumption (or (not x348) (not x18228) x27373)
+:assumption (or (not x1980) x28272)
+:assumption (or (not x7179) x23200)
+:assumption (or x29529 x5028)
+:assumption (or (not x24865) (not x1952))
+:assumption (or x15562 (not x19404))
+:assumption (or (not x27045) (not x25656))
+:assumption (or x17756 (not x17908))
+:assumption (or (not x17725) x9406)
+:assumption (or (not x17534) x11756 (not x28018) x15566 x2056)
+:assumption (or (not x13434) (not x4888))
+:assumption (or (not x31524) (not x24524))
+:assumption (or x25585 (not x9904))
+:assumption (or x8134 x27956 (not x22504) x15806 x11184 x23069 (not x8324) (not x31274))
+:assumption (or x27735 x20094)
+:assumption (or (not x9826) x31448)
+:assumption (or x27005 x1393 x3175)
+:assumption (or (not x25385) (not x13178) (not x22777) x16449 x13733 (not x17359))
+:assumption (or x22231 (not x13052))
+:assumption (or x11349 x10250)
+:assumption (or (not x24479) x17045)
+:assumption (or x16526 (not x1775))
+:assumption (or x1356 (not x29658))
+:assumption (or x831 (not x22385))
+:assumption (or x10101 (not x31509))
+:assumption (or (not x15334) x9781)
+:assumption (or (not x12594) x4357)
+:assumption (or x14206 x23062)
+:assumption (or x21386 x7775)
+:assumption (or x9954 x1582)
+:assumption (or x23338 (not x12288))
+:assumption (or x16025 x24531 x21856)
+:assumption (or (not x28685) (not x18763))
+:assumption (or x15365 (not x26681))
+:assumption (or (not x18039) x24640)
+:assumption (or x20643 x17075 x23908 x26364)
+:assumption (or x1582 (not x2230))
+:assumption (or x15795 (not x13955))
+:assumption (or x11216 x19992)
+:assumption (or x31436 (not x31767))
+:assumption (or x4181 (not x20960) (not x2538) (not x19729) x13489 (not x2334) x10953 (not x11046))
+:assumption (or (not x26197) (not x22577))
+:assumption (or x18251 x19267)
+:assumption (or x24126 x25264)
+:assumption (or (not x27122) x18871)
+:assumption (or x20917 x2352)
+:assumption (or (not x31868) x28468)
+:assumption (or x6859 x29167)
+:assumption (or x18635 x7077 x30075)
+:assumption (or (not x343) x29649)
+:assumption (or (not x10942) x25347)
+:assumption (or x28242 x30184)
+:assumption (or (not x31769) (not x17450))
+:assumption (or (not x22180) (not x17198))
+:assumption (or x17750 x23828)
+:assumption (or (not x3347) x3463)
+:assumption (or x30812 (not x1506))
+:assumption (or x3911 (not x15354))
+:assumption (or x15866 (not x13851))
+:assumption (or (not x13606) (not x8557) x1775)
+:assumption (or (not x6493) (not x851))
+:assumption (or x7931 (not x1050))
+:assumption (or (not x26083) x26607)
+:assumption (or (not x9585) (not x18387))
+:assumption (or (not x11733) x24857)
+:assumption (or x26524 x26180)
+:assumption (or x8658 (not x1558))
+:assumption (or (not x23236) (not x20580))
+:assumption (or x643 (not x23094))
+:assumption (or (not x21867) x5014 (not x27045))
+:assumption (or (not x12188) x1475)
+:assumption (or (not x28926) x30540)
+:assumption (or (not x23862) x2173)
+:assumption (or x3403 (not x31248))
+:assumption (or x26171 x13094)
+:assumption (or x3428 x6351)
+:assumption (or (not x619) (not x7859))
+:assumption (or x20937 x29)
+:assumption (or x9443 x2857)
+:assumption (or x18204 (not x202))
+:assumption (or x25366 x12745)
+:assumption (or (not x29649) x14088)
+:assumption (or x21298 (not x3049))
+:assumption (or (not x29747) (not x20387))
+:assumption (or x11032 x14623)
+:assumption (or (not x10735) (not x13380) x10395 x23068)
+:assumption (or (not x6949) (not x24913))
+:assumption (or (not x344) (not x13265))
+:assumption (or x17807 (not x20808))
+:assumption (or x22695 x15758)
+:assumption (or x6594 (not x110))
+:assumption (or x8276 (not x15931))
+:assumption (or (not x19277) x8209)
+:assumption (or (not x1042) (not x7551) (not x5378) x10303 x31481 x20756)
+:assumption (or x28830 (not x19758))
+:assumption (or (not x5179) x3520 (not x18309) (not x15075) x8514 (not x7625) (not x9120) x14294)
+:assumption (or x9675 (not x11242))
+:assumption (or x14260 x18111)
+:assumption (or x9796 (not x21613) x18201 (not x22820))
+:assumption (or (not x9868) (not x5480))
+:assumption (or (not x15537) (not x13349))
+:assumption (or x8724 x13099)
+:assumption (or (not x4171) (not x12139))
+:assumption (or x25366 (not x25353))
+:assumption (or (not x8002) (not x4880) (not x27348))
+:assumption (or (not x31210) (not x24706))
+:assumption (or (not x22266) (not x7971))
+:assumption (or x12021 (not x827))
+:assumption (or x28848 x15260)
+:assumption (or x2576 x23601)
+:assumption (or x8637 x27873)
+:assumption (or x10592 x18694)
+:assumption (or x7309 x18419)
+:assumption (or (not x23975) (not x5241) x14097 (not x29600) x30433 (not x21162) (not x26933) (not x12923) (not x7081))
+:assumption (or (not x29905) x29994)
+:assumption (or (not x4932) (not x963))
+:assumption (or (not x16808) (not x6887))
+:assumption (or x17760 (not x30732))
+:assumption (or x2869 (not x4307))
+:assumption (or x8017 x2719)
+:assumption (or x17089 (not x4439))
+:assumption (or x17038 x18381)
+:assumption (or x5959 x16809)
+:assumption (or x20142 (not x18187))
+:assumption (or (not x29966) (not x5815))
+:assumption (or x22301 (not x27860))
+:assumption (or (not x22848) (not x22484))
+:assumption (or (not x28541) (not x6381) (not x8104) x3291)
+:assumption (or (not x19796) (not x7131))
+:assumption (or (not x19091) x30403)
+:assumption (or (not x14839) (not x19185))
+:assumption (or (not x19477) (not x5612))
+:assumption (or x18816 x6333)
+:assumption (or (not x19379) x22660)
+:assumption (or (not x9085) x4750)
+:assumption (or x16779 (not x582))
+:assumption (or x28464 x21298)
+:assumption (or (not x3918) (not x25212) (not x19271) (not x5869) x14792)
+:assumption (or x14160 (not x19250))
+:assumption (or x21030 (not x6171))
+:assumption (or (not x30158) (not x29654))
+:assumption (or (not x2121) (not x28912))
+:assumption (or x18801 x8059)
+:assumption (or x17749 x6293)
+:assumption (or (not x9025) x5268 (not x3435))
+:assumption (or (not x16252) (not x15828) (not x28710))
+:assumption (or (not x3170) (not x6381))
+:assumption (or x7743 (not x27598))
+:assumption (or x29316 (not x1605) x22202 x13072 (not x8898) x12749)
+:assumption (or (not x10092) (not x28131))
+:assumption (or x18591 x10482)
+:assumption (or (not x13952) x28834)
+:assumption (or x22520 x307 x6263 (not x859))
+:assumption (or (not x27847) (not x26625))
+:assumption (or x28520 (not x22676))
+:assumption (or x20718 (not x19575))
+:assumption (or x3064 (not x350))
+:assumption (or (not x438) (not x27873) x1146 (not x8637) x16388 x12526)
+:assumption (or x28626 (not x30534) x3001 x20438 x18344 x22434)
+:assumption (or x30177 x6844)
+:assumption (or x11842 x15497 (not x19570))
+:assumption (or x16041 (not x12904))
+:assumption (or (not x17132) x31402)
+:assumption (or (not x27742) (not x22819))
+:assumption (or (not x31782) x13840)
+:assumption (or (not x17384) (not x7910))
+:assumption (or x24989 (not x17812) x10055 (not x6307) (not x10838) x7504)
+:assumption (or (not x7942) x11711)
+:assumption (or (not x26930) x31201 x3782 x30121 (not x24830))
+:assumption (or x4533 x25975)
+:assumption (or x6875 (not x13398))
+:assumption (or x17538 x12045 (not x27609) x20949)
+:assumption (or (not x22298) (not x21148))
+:assumption (or x9779 x29540 (not x19992))
+:assumption (or x9625 x28240)
+:assumption (or (not x10064) (not x30260))
+:assumption (or (not x21724) x14346)
+:assumption (or (not x9298) (not x23909))
+:assumption (or (not x22985) (not x8936))
+:assumption (or (not x7511) x31266)
+:assumption (or (not x23962) (not x26779))
+:assumption (or x25720 (not x7763))
+:assumption (or x24003 x10111)
+:assumption (or x15728 (not x19680))
+:assumption (or x24069 x5010)
+:assumption (or (not x26136) x2650)
+:assumption (or x15760 x9776)
+:assumption (or x6197 (not x6422))
+:assumption (or x11977 (not x13884))
+:assumption (or (not x14182) (not x6756))
+:assumption (or (not x12651) x7741)
+:assumption (or x30954 x1468 x19428)
+:assumption (or (not x8590) x8092)
+:assumption (or (not x10587) (not x13925))
+:assumption (or x24073 (not x20203))
+:assumption (or x31147 x22037 x14839)
+:assumption (or x431 (not x22576))
+:assumption (or (not x3336) x936)
+:assumption (or x8674 x15851)
+:assumption (or x27390 (not x12176))
+:assumption (or (not x6149) (not x6972) x11792 (not x24007))
+:assumption (or (not x12754) (not x30695))
+:assumption (or x4831 (not x11993))
+:assumption (or (not x21189) x30765)
+:assumption (or (not x11973) x11990)
+:assumption (or x26147 x5696 (not x8002) (not x786))
+:assumption (or x15657 (not x4909))
+:assumption (or (not x10840) x7537)
+:assumption (or x17810 x15266 (not x20869) (not x5410) (not x3158) x15467 (not x28634) (not x26171))
+:assumption (or (not x20105) x14552 (not x18519) x19711)
+:assumption (or x15052 (not x16887))
+:assumption (or x17720 (not x30833))
+:assumption (or x1606 x10060)
+:assumption (or x30274 x24250)
+:assumption (or x13160 (not x28131))
+:assumption (or x8364 (not x4913))
+:assumption (or (not x22963) x9666)
+:assumption (or x16961 x29047)
+:assumption (or x17116 x31681 x194)
+:assumption (or (not x11345) x19391)
+:assumption (or x10965 (not x3363))
+:assumption (or x23851 x28362)
+:assumption (or x11151 x3755)
+:assumption (or x15024 x7859)
+:assumption (or x7114 x21815)
+:assumption (or (not x21433) x11940)
+:assumption (or (not x31559) (not x30539) (not x25657) x10353 x12915)
+:assumption (or (not x15213) x18868)
+:assumption (or x2225 x682 (not x918) x31829)
+:assumption (or x7921 (not x14760))
+:assumption (or (not x31788) x21170)
+:assumption (or x6149 (not x27777))
+:assumption (or (not x13956) x14325)
+:assumption (or (not x12886) (not x9220))
+:assumption (or (not x15891) x26666)
+:assumption (or (not x8792) (not x20702))
+:assumption (or (not x21245) x20272)
+:assumption (or (not x21066) (not x27538))
+:assumption (or x11296 (not x19912) (not x7110))
+:assumption (or (not x5178) (not x762) x5394)
+:assumption (or x3224 x11383)
+:assumption (or (not x30107) (not x22919))
+:assumption (or (not x10418) (not x9008) x19964)
+:assumption (or (not x8334) x13574)
+:assumption (or x7537 x25734 (not x4796) x23399)
+:assumption (or x1211 (not x5011))
+:assumption (or (not x2956) x24565)
+:assumption (or (not x20201) (not x18042) (not x3013) (not x13370))
+:assumption (or (not x6593) (not x26772))
+:assumption (or (not x361) x13178)
+:assumption (or x7181 x4926 (not x30954))
+:assumption (or x29014 (not x14362))
+:assumption (or x23118 x27115)
+:assumption (or x26916 (not x6174))
+:assumption (or (not x18470) x1927)
+:assumption (or x12258 x1604)
+:assumption (or x30625 x17435)
+:assumption (or (not x2227) x14053)
+:assumption (or x13281 x8849)
+:assumption (or (not x26947) x31844)
+:assumption (or (not x6783) x8053)
+:assumption (or x2248 x28125)
+:assumption (or x25228 x12170 (not x9008))
+:assumption (or (not x27044) x25595)
+:assumption (or x8950 (not x21657))
+:assumption (or x20466 x5528)
+:assumption (or x6086 x3646)
+:assumption (or x23150 (not x20705))
+:assumption (or x23005 (not x10958))
+:assumption (or x12788 x16353)
+:assumption (or x2032 (not x7727))
+:assumption (or (not x5102) x6583)
+:assumption (or x17824 (not x17504))
+:assumption (or (not x5816) x18478)
+:assumption (or x7010 (not x29691))
+:assumption (or x14984 x20981)
+:assumption (or x31293 (not x7924))
+:assumption (or x13811 (not x25467))
+:assumption (or x16323 (not x9047))
+:assumption (or x23477 x25993)
+:assumption (or x20357 x16101)
+:assumption (or (not x10383) x6079)
+:assumption (or (not x17038) x27537)
+:assumption (or x14517 (not x25777) (not x8002) (not x24220))
+:assumption (or (not x26716) x3066)
+:assumption (or x22605 (not x4433) x21671 (not x9461) (not x28136) x28715)
+:assumption (or x8986 (not x26937))
+:assumption (or x15077 x11492)
+:assumption (or (not x17678) (not x23244))
+:assumption (or x27927 x6068 x21653)
+:assumption (or x21684 (not x7184))
+:assumption (or x27611 x15404 x22046 x5146 x10800 (not x21578) (not x12628) (not x31802))
+:assumption (or x23244 x27529)
+:assumption (or x30264 x14136)
+:assumption (or x15775 x10314)
+:assumption (or (not x13939) (not x22300))
+:assumption (or (not x7606) x21728)
+:assumption (or x24722 (not x6411))
+:assumption (or x21777 (not x12329) x31513 x13057 (not x8565) x5905 (not x15078))
+:assumption (or x26400 (not x16389))
+:assumption (or (not x5159) x30457)
+:assumption (or x17145 x27537)
+:assumption (or (not x17361) x3614 (not x15499) (not x1610) x12914 x264)
+:assumption (or (not x6330) x28580)
+:assumption (or (not x1686) (not x5274))
+:assumption (or (not x4520) (not x12187))
+:assumption (or (not x10321) x14455)
+:assumption (or (not x27407) (not x21169))
+:assumption (or (not x21541) x10639)
+:assumption (or x8586 (not x31452))
+:assumption (or (not x1617) (not x27929) (not x14111))
+:assumption (or x4418 (not x5068))
+:assumption (or (not x12339) x13017)
+:assumption (or x268 (not x7291))
+:assumption (or x31706 (not x1566))
+:assumption (or x28541 x25124)
+:assumption (or (not x1982) (not x20271))
+:assumption (or x4747 (not x14206) (not x9147) x21474)
+:assumption (or x20415 (not x17302))
+:assumption (or x12138 x1899)
+:assumption (or x29628 (not x14612))
+:assumption (or x16909 (not x19939))
+:assumption (or x29558 (not x5159))
+:assumption (or x8420 x15227)
+:assumption (or (not x3560) (not x2037))
+:assumption (or x13749 x3928 (not x15745) (not x31616) (not x3264) (not x7578))
+:assumption (or (not x16910) (not x5318))
+:assumption (or x12113 x25773 (not x11886))
+:assumption (or (not x3212) (not x17026))
+:assumption (or (not x9555) (not x30794))
+:assumption (or (not x8441) (not x24719))
+:assumption (or x7214 (not x16910))
+:assumption (or x25727 x14888)
+:assumption (or (not x4559) x29123)
+:assumption (or x23984 x11379 x5287 (not x12091) (not x12013) x7328)
+:assumption (or x21296 (not x14839))
+:assumption (or (not x214) x1227)
+:assumption (or (not x24006) x24779)
+:assumption (or x13185 (not x7308))
+:assumption (or (not x24557) x27828)
+:assumption (or (not x750) x11341)
+:assumption (or x2323 (not x17424))
+:assumption (or (not x16992) x20795)
+:assumption (or (not x13824) x10652)
+:assumption (or x14469 x25095)
+:assumption (or (not x18165) (not x12576) x3254 x22495)
+:assumption (or x28275 (not x22062) x6254 (not x8911) x30138)
+:assumption (or x9705 (not x28242))
+:assumption (or (not x27736) x31228)
+:assumption (or (not x3854) x9008)
+:assumption (or (not x5390) (not x27314) x29231 (not x21124) (not x11590) (not x30935))
+:assumption (or (not x14761) x10859 (not x18027) (not x27350) x23718 (not x2233))
+:assumption (or x29047 (not x10877))
+:assumption (or (not x3367) (not x20919))
+:assumption (or (not x17428) x1897)
+:assumption (or x11010 x1393 x25453)
+:assumption (or x5679 (not x8215) x21264 x2205)
+:assumption (or x29566 (not x14624))
+:assumption (or (not x5662) (not x12621))
+:assumption (or x6105 x31369)
+:assumption (or (not x17305) (not x10209))
+:assumption (or x12552 x14124 (not x11494) (not x25383) (not x13409) (not x31222))
+:assumption (or (not x16665) (not x11751))
+:assumption (or (not x19622) x12544 x10656 x2951)
+:assumption (or x4870 x18111)
+:assumption (or (not x743) (not x31055))
+:assumption (or (not x13035) x21546)
+:assumption (or (not x13053) x31083)
+:assumption (or x30946 (not x19178))
+:assumption (or (not x25532) (not x26578))
+:assumption (or (not x1374) (not x9817))
+:assumption (or x19185 x2024 x14839 (not x1062))
+:assumption (or x10760 x30523)
+:assumption (or (not x5147) x4200)
+:assumption (or (not x27478) x753)
+:assumption (or (not x20063) (not x20651))
+:assumption (or x11636 (not x17244))
+:assumption (or x3458 (not x2585) x9008)
+:assumption (or (not x12039) x12248 (not x19839))
+:assumption (or x23809 (not x26432) x12845)
+:assumption (or x546 (not x13778) (not x9701) x25423)
+:assumption (or x18620 x6191)
+:assumption (or x29520 x24057)
+:assumption (or x13567 (not x10536) (not x12421) (not x9423))
+:assumption (or x14591 x13402)
+:assumption (or x26094 x3634)
+:assumption (or x16375 (not x2761))
+:assumption (or (not x4935) x8502)
+:assumption (or (not x6708) x7801 (not x17638))
+:assumption (or (not x2724) (not x26428))
+:assumption (or (not x21809) x11128)
+:assumption (or x21653 x8353)
+:assumption (or (not x17810) (not x403))
+:assumption (or (not x14068) (not x17359) x8272)
+:assumption (or (not x21316) (not x2970))
+:assumption (or (not x8915) x22673)
+:assumption (or (not x19945) x17192)
+:assumption (or x12201 x27721)
+:assumption (or x10078 x8987)
+:assumption (or (not x22452) (not x3459))
+:assumption (or (not x5252) (not x25366))
+:assumption (or x14345 x23816)
+:assumption (or x8982 x15579)
+:assumption (or (not x21918) (not x14467))
+:assumption (or x9008 (not x23844))
+:assumption (or x5650 (not x8961))
+:assumption (or x2795 x22046)
+:assumption (or x21363 x24296)
+:assumption (or (not x22417) x7196)
+:assumption (or x23874 x9008)
+:assumption (or x6648 (not x12073))
+:assumption (or (not x15389) x31556)
+:assumption (or (not x13576) x22673)
+:assumption (or x26143 x12434)
+:assumption (or (not x25366) (not x13543) (not x7188) x30138)
+:assumption (or x4773 x725)
+:assumption (or (not x22852) x28872)
+:assumption (or (not x943) x23296 (not x8602))
+:assumption (or x22639 x6784)
+:assumption (or (not x10625) (not x4348))
+:assumption (or (not x27256) (not x7824))
+:assumption (or x21633 x9121)
+:assumption (or (not x3133) (not x9467))
+:assumption (or (not x1369) (not x7323) x2690 (not x12733) (not x12333) (not x9328))
+:assumption (or x30827 (not x12635) x27903 (not x1447))
+:assumption (or x30517 (not x26051))
+:assumption (or x29937 x15023)
+:assumption (or (not x22909) (not x10128))
+:assumption (or (not x6223) (not x31054))
+:assumption (or (not x3988) x7830 (not x8032) x19632 (not x21521))
+:assumption (or x23981 (not x17537))
+:assumption (or x4192 x25697)
+:assumption (or x31417 x8735 x17282)
+:assumption (or (not x13464) (not x19334))
+:assumption (or (not x16639) x499)
+:assumption (or x21227 x27734 x23569 x10656)
+:assumption (or x10577 (not x11654) (not x24274) x22419 x8143 x4956)
+:assumption (or (not x13199) (not x26963))
+:assumption (or x8925 x4587)
+:assumption (or x31544 x7257 (not x4969))
+:assumption (or x30554 (not x13945))
+:assumption (or (not x27353) (not x25253))
+:assumption (or x9081 (not x5194))
+:assumption (or x14986 (not x31695) (not x1897) x16648)
+:assumption (or x3622 (not x5806) (not x9541))
+:assumption (or (not x17532) (not x15987))
+:assumption (or x2174 (not x18674))
+:assumption (or (not x2263) (not x2201))
+:assumption (or (not x13881) x21938)
+:assumption (or (not x6900) x27551)
+:assumption (or (not x8002) (not x21838) x10274 x23244)
+:assumption (or x14879 x26421)
+:assumption (or x12396 x557)
+:assumption (or x7767 (not x1646))
+:assumption (or x16540 x80)
+:assumption (or x6171 x25011)
+:assumption (or (not x9008) (not x18979))
+:assumption (or (not x7448) x26670)
+:assumption (or x4048 (not x26965))
+:assumption (or x17279 x18600)
+:assumption (or x20110 (not x8002))
+:assumption (or (not x28580) x22519 (not x27484) x31004 x6330)
+:assumption (or (not x11185) (not x15887) x16724 (not x6317))
+:assumption (or x14206 x305 (not x9147) (not x9221))
+:assumption (or (not x15484) (not x14647) x15589 (not x8304))
+:assumption (or x18485 x30695)
+:assumption (or x27648 (not x16910) (not x13111))
+:assumption (or x1391 x11697)
+:assumption (or x26284 (not x11627))
+:assumption (or (not x8760) (not x16496))
+:assumption (or x21680 x25440)
+:assumption (or (not x31032) (not x13763))
+:assumption (or x5971 x27361)
+:assumption (or (not x2810) x7833 (not x3001))
+:assumption (or (not x14184) (not x31574))
+:assumption (or x16310 x2383)
+:assumption (or x22094 (not x11012) (not x9511) (not x4328))
+:assumption (or (not x30138) (not x14276))
+:assumption (or x23597 (not x22421))
+:assumption (or x26208 (not x24628))
+:assumption (or x7020 (not x24257))
+:assumption (or x27059 (not x15170))
+:assumption (or (not x26044) x13964)
+:assumption (or x29087 (not x28322))
+:assumption (or (not x6078) (not x17601))
+:assumption (or x8002 (not x26463) x23244 (not x9891))
+:assumption (or x28718 (not x2958))
+:assumption (or (not x7524) (not x19722))
+:assumption (or x13956 x6201)
+:assumption (or x6810 x11639)
+:assumption (or (not x30960) (not x13604))
+:assumption (or (not x21982) (not x15242))
+:assumption (or x26565 x16510)
+:assumption (or x28804 x3315)
+:assumption (or (not x2127) x24233)
+:assumption (or x592 (not x6237))
+:assumption (or (not x12219) x4422)
+:assumption (or (not x9635) (not x17273))
+:assumption (or x28584 (not x22636))
+:assumption (or x5528 (not x24981))
+:assumption (or x15115 (not x27340))
+:assumption (or x18775 x22004)
+:assumption (or x3340 x26181)
+:assumption (or x5151 x8318)
+:assumption (or (not x24234) x19325)
+:assumption (or x149 x13857)
+:assumption (or (not x11961) (not x22495))
+:assumption (or x25659 x4323)
+:assumption (or (not x27944) (not x21501) x14928 x12596 (not x3370) x24880 x16802 (not x23732))
+:assumption (or (not x13213) (not x13490))
+:assumption (or x16830 x22917)
+:assumption (or (not x25350) x18732)
+:assumption (or (not x16020) x19711 x23244)
+:assumption (or x269 x28248)
+:assumption (or (not x18441) x20865)
+:assumption (or x14455 (not x22725) (not x3435) (not x7857))
+:assumption (or x12411 x31221 (not x23971) (not x19864))
+:assumption (or (not x20278) (not x30866))
+:assumption (or (not x29865) x16641)
+:assumption (or (not x28776) (not x27349))
+:assumption (or x17258 x3061)
+:assumption (or x10783 x22584 (not x25672) (not x7333))
+:assumption (or x31398 (not x14568))
+:assumption (or x21498 (not x29638))
+:assumption (or (not x14135) x6243 x21686)
+:assumption (or x27537 x17288 (not x21216))
+:assumption (or (not x20313) x4966)
+:assumption (or x1468 (not x20104))
+:assumption (or x15555 (not x29783))
+:assumption (or x5798 (not x5387))
+:assumption (or (not x21186) x5004)
+:assumption (or (not x6539) x21634)
+:assumption (or (not x14839) (not x22117) x19127)
+:assumption (or (not x5385) x27442)
+:assumption (or (not x9008) x19926 x1956)
+:assumption (or x22617 (not x18491))
+:assumption (or x28350 x4919)
+:assumption (or (not x16533) (not x12022))
+:assumption (or (not x10966) x9008)
+:assumption (or x23067 x6715)
+:assumption (or (not x7799) (not x21657))
+:assumption (or (not x14853) (not x27734))
+:assumption (or x4740 (not x20551))
+:assumption (or (not x15795) (not x14646))
+:assumption (or (not x11374) (not x1277))
+:assumption (or x19894 (not x25701) (not x13268) (not x25091) (not x9262) (not x29266) (not x14382))
+:assumption (or x10593 x18381)
+:assumption (or x22898 x13956)
+:assumption (or (not x22647) x12950)
+:assumption (or x23929 x28671)
+:assumption (or x7275 (not x4919))
+:assumption (or x18265 (not x8467) (not x18555) (not x17045) x24479)
+:assumption (or x28811 x23605)
+:assumption (or x2385 x23830)
+:assumption (or (not x1919) x3832 x7764 x15296 x26667 (not x9979) (not x16387) (not x30099) x8586)
+:assumption (or x5877 x1393)
+:assumption (or x11579 x11809)
+:assumption (or x6323 x30538)
+:assumption (or x5684 (not x461))
+:assumption (or (not x21502) (not x925))
+:assumption (or (not x13956) x28961)
+:assumption (or x21715 x30002)
+:assumption (or x1057 x24175)
+:assumption (or x27469 x14067 (not x25095) x13576 (not x14469))
+:assumption (or (not x10982) x14723)
+:assumption (or x27237 x25537)
+:assumption (or x11344 (not x9439))
+:assumption (or (not x20347) x28469)
+:assumption (or (not x21986) (not x23627))
+:assumption (or x18099 x31092)
+:assumption (or x8214 x7621)
+:assumption (or (not x13408) x5492)
+:assumption (or x22855 x19010)
+:assumption (or x21552 (not x8586) (not x22792) x20527)
+:assumption (or x7277 x3754 (not x19982) (not x24589))
+:assumption (or (not x19757) x29442)
+:assumption (or x16184 x26725)
+:assumption (or x2488 (not x13487))
+:assumption (or (not x27120) x22152)
+:assumption (or x28747 x3025)
+:assumption (or (not x22513) (not x4))
+:assumption (or (not x17407) (not x24527))
+:assumption (or (not x21815) (not x23045))
+:assumption (or x8258 x22095)
+:assumption (or x22400 x2500)
+:assumption (or x26612 x949 x22855)
+:assumption (or (not x16025) (not x25814))
+:assumption (or (not x7264) x3698)
+:assumption (or (not x16795) x22762)
+:assumption (or x6149 x27828)
+:assumption (or (not x5309) x1977 (not x12478) (not x8592) x22844)
+:assumption (or (not x18461) (not x1393) (not x11529))
+:assumption (or (not x17057) x18903)
+:assumption (or x11167 x21546)
+:assumption (or (not x137) (not x20254) (not x12542) (not x31893) (not x18945))
+:assumption (or x11307 x16631)
+:assumption (or (not x14697) x5451 (not x12910))
+:assumption (or (not x19092) (not x22557))
+:assumption (or (not x3382) x7174)
+:assumption (or (not x17075) x14794)
+:assumption (or x3970 (not x1717))
+:assumption (or x16047 x12766)
+:assumption (or (not x26210) x31416)
+:assumption (or x17016 (not x14398) x25659 (not x288) x19992)
+:assumption (or (not x7012) (not x26465))
+:assumption (or (not x1113) x27135)
+:assumption (or (not x10475) x8002)
+:assumption (or x31858 (not x23958) x20833 (not x14926))
+:assumption (or x21464 x3137)
+:assumption (or x11515 (not x16269))
+:assumption (or x2794 x19168)
+:assumption (or x9424 x8843)
+:assumption (or x9049 (not x7395) (not x169))
+:assumption (or x16762 (not x30933))
+:assumption (or (not x19945) x12292)
+:assumption (or (not x9299) x5539 (not x11158) (not x31205) (not x3465) (not x28592) (not x21805) x30637 (not x27655))
+:assumption (or (not x5480) (not x19347) (not x16932) x24756 x27061)
+:assumption (or x8065 (not x2022))
+:assumption (or (not x19908) x23816)
+:assumption (or (not x24672) x11597)
+:assumption (or x11136 x23545)
+:assumption (or (not x12202) x5367)
+:assumption (or x7034 x21179)
+:assumption (or x30113 (not x26086))
+:assumption (or x17127 (not x10010))
+:assumption (or (not x6037) x3331 x31862 (not x5182) (not x8531) (not x25659) (not x26198) (not x26325))
+:assumption (or (not x19816) x29944)
+:assumption (or x22098 (not x23533))
+:assumption (or (not x21673) x24020)
+:assumption (or x12931 x18859 x14971)
+:assumption (or x24500 (not x12744))
+:assumption (or x27265 x27926)
+:assumption (or x2812 (not x8269))
+:assumption (or (not x10645) x15156)
+:assumption (or (not x29959) x6594 x782 (not x20223))
+:assumption (or (not x9349) x5547)
+:assumption (or x2631 x29394)
+:assumption (or (not x3596) x16483)
+:assumption (or x3204 (not x30219))
+:assumption (or (not x24856) x7120 x20177 (not x6637) x19693 x16061 x27036 (not x30314))
+:assumption (or x10328 (not x20497))
+:assumption (or x19777 x29331)
+:assumption (or x17330 x1756)
+:assumption (or (not x31129) (not x17359) (not x26432) (not x23948))
+:assumption (or x11462 (not x5952))
+:assumption (or (not x10563) (not x30787))
+:assumption (or x9228 (not x28403))
+:assumption (or x7348 (not x5749))
+:assumption (or x18160 x4095)
+:assumption (or x11787 (not x8932))
+:assumption (or x2322 x13548)
+:assumption (or (not x20794) x16650)
+:assumption (or (not x1648) (not x30408))
+:assumption (or x11448 (not x22583) (not x16064) (not x2391))
+:assumption (or (not x26781) (not x13796))
+:assumption (or x17871 x18298)
+:assumption (or x4622 (not x25911) x1263 x2868)
+:assumption (or x8289 x9515 (not x20795) (not x25455) x13355 (not x29154) x21633 x30645)
+:assumption (or x10064 (not x23326))
+:assumption (or x8002 x18127)
+:assumption (or (not x27625) (not x25899))
+:assumption (or (not x3844) x7074)
+:assumption (or x1042 x26804)
+:assumption (or x1393 (not x28304) x29735)
+:assumption (or x15878 x11117)
+:assumption (or x20606 (not x24197))
+:assumption (or x30444 (not x5249))
+:assumption (or (not x5052) x3248)
+:assumption (or (not x20836) x16572)
+:assumption (or (not x29312) x20179)
+:assumption (or (not x2780) (not x24))
+:assumption (or x1867 (not x26614))
+:assumption (or x25606 (not x31185) x26826 x16485 (not x27963) (not x21619) (not x26467))
+:assumption (or (not x18069) (not x11342))
+:assumption (or (not x18694) x20314)
+:assumption (or x5771 (not x23850) (not x5050) x7080)
+:assumption (or x8442 (not x25964))
+:assumption (or (not x19476) x9433)
+:assumption (or (not x24220) x8002 (not x14284))
+:assumption (or x3758 (not x26211) x17118)
+:assumption (or x15718 x16468)
+:assumption (or (not x6853) (not x31932) (not x15293) x19831 x24726 x913 (not x10887) (not x7835))
+:assumption (or (not x11329) (not x26374))
+:assumption (or (not x5789) (not x17420))
+:assumption (or (not x24636) x8843 (not x12089))
+:assumption (or x7700 x30483)
+:assumption (or (not x14408) (not x24919))
+:assumption (or x21973 x17843)
+:assumption (or x7794 (not x22091))
+:assumption (or (not x28262) x6257)
+:assumption (or x357 (not x31023))
+:assumption (or x27233 x19811)
+:assumption (or x15795 x13007)
+:assumption (or (not x27477) x15780)
+:assumption (or (not x22259) (not x795))
+:assumption (or (not x8002) x3173)
+:assumption (or x9974 (not x1108))
+:assumption (or (not x22162) x12957)
+:assumption (or x8002 (not x20042) x13956 x23244 x9790 (not x27975))
+:assumption (or x26997 (not x762))
+:assumption (or x23973 (not x20445))
+:assumption (or (not x13358) (not x22182))
+:assumption (or (not x17834) x30859)
+:assumption (or x6140 x16977)
+:assumption (or x28643 x30432 (not x18705) (not x3163))
+:assumption (or x24473 x12542)
+:assumption (or x19501 x9242)
+:assumption (or x7456 (not x25416) (not x26124) x17648 x15917 x27343 x13861 x25673)
+:assumption (or x28094 (not x29196))
+:assumption (or x7537 (not x12667))
+:assumption (or (not x24727) (not x8002))
+:assumption (or x23968 x8658)
+:assumption (or (not x14508) (not x21230))
+:assumption (or x16304 x28864 x5632 (not x15795))
+:assumption (or (not x11683) x5249)
+:assumption (or x1314 (not x29001))
+:assumption (or (not x8318) (not x22589))
+:assumption (or (not x948) x7463 (not x31879) x8915 x23816)
+:assumption (or x31454 (not x436) x1542 x21298)
+:assumption (or x4058 x23994 x362 x25715 x938 (not x21519))
+:assumption (or (not x4245) x21069)
+:assumption (or (not x16284) x4050)
+:assumption (or x1888 (not x27287) x13434)
+:assumption (or x25772 (not x5621))
+:assumption (or x29748 (not x11537))
+:assumption (or (not x24675) x12223)
+:assumption (or x23244 (not x7347))
+:assumption (or x31528 x16045)
+:assumption (or x17269 (not x13191))
+:assumption (or (not x14152) (not x18615))
+:assumption (or x25835 (not x22271))
+:assumption (or x12106 x27293)
+:assumption (or (not x30219) (not x9099))
+:assumption (or (not x19826) x5862)
+:assumption (or (not x20535) x3690)
+:assumption (or (not x13956) x8488 x30667)
+:assumption (or (not x30845) (not x19513))
+:assumption (or (not x24185) x23433 (not x25659))
+:assumption (or x24422 x298 (not x23655))
+:assumption (or x20307 x16304)
+:assumption (or (not x1913) x15087)
+:assumption (or x15594 x14526 x24287 (not x5028) (not x21212))
+:assumption (or x9096 x30295)
+:assumption (or (not x29308) (not x8229) x22927)
+:assumption (or x7057 (not x25659))
+:assumption (or x18184 x27633)
+:assumption (or x16275 x8481 x13207 x11458)
+:assumption (or (not x3794) (not x10142))
+:assumption (or (not x3350) (not x24438))
+:assumption (or x23796 (not x20898))
+:assumption (or (not x3204) (not x2498) x30219)
+:assumption (or x112 x202 (not x7346))
+:assumption (or (not x17359) (not x16952) x9022)
+:assumption (or x3260 (not x8971))
+:assumption (or x29489 x23549)
+:assumption (or x26743 x770)
+:assumption (or (not x16866) x11986)
+:assumption (or x25868 (not x30393) (not x5768) x1448)
+:assumption (or (not x4984) (not x15612))
+:assumption (or (not x24307) (not x3743))
+:assumption (or x5332 x1429)
+:assumption (or (not x25252) (not x13648) x29590 (not x13400) (not x10874))
+:assumption (or x17774 (not x14930) x8602)
+:assumption (or x1756 (not x30711))
+:assumption (or (not x16689) x1866)
+:assumption (or (not x23474) x8500)
+:assumption (or x1817 (not x28973))
+:assumption (or (not x22675) x491)
+:assumption (or x3216 x25219)
+:assumption (or (not x4865) (not x22465) (not x25580))
+:assumption (or (not x21653) x21947)
+:assumption (or (not x27738) (not x7839) (not x19855))
+:assumption (or (not x16455) x15386 (not x1192) (not x7537) (not x23399))
+:assumption (or (not x14142) (not x20011) x5952 (not x20111) (not x13749))
+:assumption (or (not x1997) x24311 (not x19656))
+:assumption (or (not x15568) x26017)
+:assumption (or (not x21138) (not x10070))
+:assumption (or (not x19174) x23153)
+:assumption (or (not x2038) (not x27161))
+:assumption (or x11257 (not x9303))
+:assumption (or x15657 (not x8676))
+:assumption (or (not x6753) x23628)
+:assumption (or (not x6910) x838)
+:assumption (or x27365 (not x11332))
+:assumption (or (not x28132) (not x26432))
+:assumption (or (not x116) x3063)
+:assumption (or (not x20550) (not x29305) x20067)
+:assumption (or x1780 (not x29231))
+:assumption (or (not x3295) x9363)
+:assumption (or x2288 x14075)
+:assumption (or x651 x19717)
+:assumption (or (not x19664) (not x5370) (not x11937) (not x22495))
+:assumption (or x16510 x5028 (not x23504) x25283 x4003)
+:assumption (or (not x1128) (not x12116))
+:assumption (or x29461 x14916)
+:assumption (or x11283 (not x25659))
+:assumption (or (not x13003) (not x26437))
+:assumption (or x30093 (not x6000))
+:assumption (or (not x5451) x14697)
+:assumption (or (not x31066) x16215 x16953 (not x6838) (not x9355) (not x12206) (not x7631) (not x18293) (not x25500))
+:assumption (or (not x8617) (not x3142))
+:assumption (or (not x2012) (not x21690))
+:assumption (or (not x7549) (not x23244))
+:assumption (or (not x12685) (not x6645))
+:assumption (or x21764 x2238)
+:assumption (or (not x3798) (not x10263) (not x24035) (not x12947))
+:assumption (or (not x31349) (not x12780) (not x9531))
+:assumption (or (not x206) (not x31777))
+:assumption (or (not x29846) (not x4272))
+:assumption (or (not x15848) x25475 (not x29772) (not x29505))
+:assumption (or x8925 x28905)
+:assumption (or x20495 x8012)
+:assumption (or x31491 x26470)
+:assumption (or (not x28342) (not x26426))
+:assumption (or (not x4554) x827)
+:assumption (or x11269 (not x6688))
+:assumption (or (not x29477) x12746)
+:assumption (or x26454 (not x8667))
+:assumption (or x5032 (not x23726))
+:assumption (or x21680 x22295)
+:assumption (or x15442 (not x9001))
+:assumption (or (not x882) (not x28990) (not x7859))
+:assumption (or x8073 (not x11379))
+:assumption (or (not x21653) x14555 (not x14918))
+:assumption (or (not x8320) x23750)
+:assumption (or x30354 x4109)
+:assumption (or x2250 x6114)
+:assumption (or x31932 x15293)
+:assumption (or x12818 (not x22190))
+:assumption (or x17781 (not x5990))
+:assumption (or (not x23290) (not x29638))
+:assumption (or x15420 x11645)
+:assumption (or (not x23222) x13150)
+:assumption (or x18500 (not x19561))
+:assumption (or (not x30091) x31278)
+:assumption (or x13956 x28103)
+:assumption (or x21933 x10878)
+:assumption (or x12281 x6969 (not x27214))
+:assumption (or (not x11877) (not x20713))
+:assumption (or x13715 (not x8259) x21029 (not x22329) x25407 x2700 x29806)
+:assumption (or (not x792) (not x31587) x21880 (not x10369) x28969)
+:assumption (or x18204 x8002)
+:assumption (or (not x12346) (not x16197))
+:assumption (or (not x15443) x13650)
+:assumption (or (not x19933) (not x7178))
+:assumption (or (not x11511) (not x10837))
+:assumption (or (not x18659) (not x25283))
+:assumption (or (not x9386) x8029)
+:assumption (or (not x3546) x25516)
+:assumption (or (not x91) x10145 x8277)
+:assumption (or (not x23633) x31733)
+:assumption (or x2312 x8357)
+:assumption (or x3655 (not x7407))
+:assumption (or (not x1394) x17288)
+:assumption (or (not x18369) x10121)
+:assumption (or x2628 (not x26578))
+:assumption (or x31707 x23385)
+:assumption (or x22667 x25682)
+:assumption (or (not x18818) x17744)
+:assumption (or (not x827) (not x21447) (not x28152) x3561 x10440 x8092 x3289 x18541)
+:assumption (or x16741 x2133 (not x11801) (not x28422) x6955)
+:assumption (or x13526 (not x15397))
+:assumption (or (not x20937) x19711 (not x27607))
+:assumption (or x21465 x5259)
+:assumption (or x30972 (not x1857) (not x6595))
+:assumption (or (not x13956) (not x6201) x5696 (not x20723))
+:assumption (or x29499 (not x15722))
+:assumption (or (not x23522) x3381)
+:assumption (or (not x5393) x16059)
+:assumption (or x23512 x26973)
+:assumption (or x6681 (not x11169))
+:assumption (or x4709 x18034)
+:assumption (or (not x19503) x20405)
+:assumption (or x505 x29896 x27680 x20276 x18012 (not x4715) x5398 x23676)
+:assumption (or x1582 (not x21030) (not x28973) (not x17351) x6171)
+:assumption (or (not x27797) (not x21022) (not x3048) x13317)
+:assumption (or (not x26742) (not x12870))
+:assumption (or x28890 (not x7635))
+:assumption (or x22780 x28215)
+:assumption (or (not x6780) x11904)
+:assumption (or (not x5028) (not x25907) (not x29442) x17057)
+:assumption (or (not x25153) (not x6878))
+:assumption (or x11597 (not x16369))
+:assumption (or x12420 x4108)
+:assumption (or (not x14064) (not x17211))
+:assumption (or x26510 (not x3758))
+:assumption (or x25631 (not x2188))
+:assumption (or (not x19888) x22257)
+:assumption (or (not x9008) x17930 (not x31780) x29333 (not x5528))
+:assumption (or x20099 x18022)
+:assumption (or x25024 (not x28010))
+:assumption (or (not x12483) x5406 x24588)
+:assumption (or x16217 x31343)
+:assumption (or x14641 x31790)
+:assumption (or x19784 x18935)
+:assumption (or x8594 (not x23585))
+:assumption (or (not x31728) x8277)
+:assumption (or (not x1542) (not x6455))
+:assumption (or (not x19352) (not x19100))
+:assumption (or x28827 x9636)
+:assumption (or x22295 x16995)
+:assumption (or x24268 x15861 x13111)
+:assumption (or (not x629) (not x2684))
+:assumption (or (not x7071) x4377)
+:assumption (or (not x26713) x2500 (not x28792))
+:assumption (or (not x20884) (not x24355) x2652 x16176)
+:assumption (or x9332 (not x27945))
+:assumption (or x31511 (not x28037))
+:assumption (or (not x23371) (not x19579))
+:assumption (or (not x8572) x21298)
+:assumption (or (not x11452) x1599)
+:assumption (or x31681 (not x29690))
+:assumption (or x3505 (not x21653))
+:assumption (or (not x27692) x18042)
+:assumption (or x22321 (not x23390))
+:assumption (or (not x11489) (not x666))
+:assumption (or (not x27911) (not x6382))
+:assumption (or (not x24597) x7589)
+:assumption (or (not x4519) (not x19862))
+:assumption (or x1204 (not x24920))
+:assumption (or (not x6769) x14580)
+:assumption (or (not x19942) x14172 (not x10279) x6211 (not x16849))
+:assumption (or x685 (not x4423) x31767)
+:assumption (or (not x12738) x14501)
+:assumption (or (not x26470) (not x5247))
+:assumption (or (not x9387) (not x20422))
+:assumption (or x9008 (not x30587) (not x933) x8764 x26202 (not x10275))
+:assumption (or x10897 (not x9943))
+:assumption (or (not x30617) x11423)
+:assumption (or x25614 x30255 (not x31178) (not x15057) (not x26750) (not x1124))
+:assumption (or (not x16162) (not x25855))
+:assumption (or (not x17944) x12020)
+:assumption (or (not x26897) (not x30774))
+:assumption (or x17247 x25795)
+:assumption (or (not x25922) x31872)
+:assumption (or (not x18012) (not x20813))
+:assumption (or (not x9467) (not x30245))
+:assumption (or x24682 (not x325))
+:assumption (or x14802 x14420)
+:assumption (or (not x15467) (not x17810))
+:assumption (or (not x23244) x11136)
+:assumption (or (not x8633) x5411)
+:assumption (or (not x15020) (not x19629))
+:assumption (or (not x1525) x12871)
+:assumption (or x19988 x14290)
+:assumption (or (not x9019) x28342)
+:assumption (or (not x9812) (not x14591))
+:assumption (or x150 (not x6968))
+:assumption (or (not x3741) (not x20568))
+:assumption (or x1557 (not x13087))
+:assumption (or x14963 (not x747))
+:assumption (or x2953 (not x18211) (not x26977) (not x10758) (not x16742) x29566)
+:assumption (or (not x11281) (not x11638))
+:assumption (or x15462 x17612)
+:assumption (or x26747 (not x21229))
+:assumption (or (not x4807) x13803)
+:assumption (or (not x17354) (not x10440))
+:assumption (or (not x20656) x10874 (not x28242) (not x22722))
+:assumption (or x22884 x18062)
+:assumption (or x16113 x15865)
+:assumption (or x422 x15149)
+:assumption (or x5162 (not x29328))
+:assumption (or (not x22948) x11949)
+:assumption (or (not x20329) x31652)
+:assumption (or (not x519) x3469 (not x24682) (not x27582) (not x6889) x9953 (not x10547) (not x6339))
+:assumption (or (not x21120) x23244 (not x11830) x8002)
+:assumption (or (not x21316) (not x30189))
+:assumption (or (not x20972) x29994 (not x31782) x13819)
+:assumption (or x13341 x22884)
+:assumption (or (not x18303) x14628 (not x20325) x12242)
+:assumption (or (not x30031) x3059)
+:assumption (or (not x17534) x17030 x10963)
+:assumption (or (not x2686) x21042)
+:assumption (or x24985 (not x1860))
+:assumption (or x4058 (not x13334) (not x23712))
+:assumption (or x570 x21436)
+:assumption (or x21070 x31791)
+:assumption (or x11641 x24649)
+:assumption (or x18112 (not x2676))
+:assumption (or (not x19404) (not x7835))
+:assumption (or (not x22531) x2272)
+:assumption (or x27111 x2111)
+:assumption (or (not x22065) (not x17583))
+:assumption (or (not x3422) x22940)
+:assumption (or (not x23399) (not x31477))
+:assumption (or (not x21800) x11787)
+:assumption (or x20723 x21298 x15725 x8736)
+:assumption (or x14837 x4620)
+:assumption (or (not x11354) x7540 (not x7996) (not x28408) (not x7667) (not x31461) x18796)
+:assumption (or (not x4691) (not x931) (not x8391) (not x1443))
+:assumption (or x25624 (not x19667))
+:assumption (or x22311 x7675)
+:assumption (or x3216 x7103)
+:assumption (or x11424 (not x2209))
+:assumption (or x26968 (not x8945))
+:assumption (or (not x1953) (not x10508))
+:assumption (or x30656 (not x8733))
+:assumption (or x28409 x23813)
+:assumption (or x23714 x28386)
+:assumption (or x27982 x4170)
+:assumption (or (not x12152) x4690)
+:assumption (or x23654 x9014 (not x12972) x19903 x2479)
+:assumption (or (not x1828) (not x9398))
+:assumption (or (not x17465) x17606)
+:assumption (or (not x836) x25727)
+:assumption (or x20654 x26399 x24400 (not x3430))
+:assumption (or x31264 x6776)
+:assumption (or (not x13956) x5669 x9466 (not x14517))
+:assumption (or (not x13098) (not x8390))
+:assumption (or (not x11487) (not x3001))
+:assumption (or x6474 (not x23574))
+:assumption (or (not x17590) x11046)
+:assumption (or x14606 (not x12424))
+:assumption (or (not x5698) (not x8973))
+:assumption (or x27918 (not x1436))
+:assumption (or x15543 x30033)
+:assumption (or x5718 x5419)
+:assumption (or x2943 (not x8283) x16661)
+:assumption (or x1346 x12690)
+:assumption (or (not x3686) (not x18487) x4722 x18378)
+:assumption (or x30798 x2334)
+:assumption (or x6152 (not x8930))
+:assumption (or (not x4102) x9862)
+:assumption (or x3519 (not x1363))
+:assumption (or x24569 x27446)
+:assumption (or (not x6579) x22174)
+:assumption (or x22273 x3804)
+:assumption (or (not x14417) (not x15786))
+:assumption (or (not x31870) (not x4452))
+:assumption (or x25361 x16178)
+:assumption (or x22520 x16101)
+:assumption (or x20294 x19421)
+:assumption (or (not x30165) (not x25659))
+:assumption (or x26478 (not x19791))
+:assumption (or (not x1624) x18872)
+:assumption (or (not x20969) (not x93))
+:assumption (or x2797 x17191)
+:assumption (or (not x22622) x2113)
+:assumption (or x27193 (not x24584))
+:assumption (or x5206 x21337)
+:assumption (or (not x6442) x5114)
+:assumption (or x6052 (not x3281))
+:assumption (or (not x24123) (not x13408))
+:assumption (or x21026 x8749 (not x8260) (not x18397) x19259)
+:assumption (or (not x26123) x18299)
+:assumption (or x26776 x30799)
+:assumption (or x13572 x12083)
+:assumption (or x23958 (not x28855) x4032)
+:assumption (or x4096 (not x29479))
+:assumption (or (not x4165) (not x5638))
+:assumption (or x4375 x31216)
+:assumption (or (not x17302) x27365)
+:assumption (or (not x15917) x12708)
+:assumption (or x29413 x31507)
+:assumption (or (not x13491) x863)
+:assumption (or (not x12525) (not x30667))
+:assumption (or x14951 x13085)
+:assumption (or x28964 (not x20463))
+:assumption (or x24855 x14885)
+:assumption (or (not x22844) (not x6464) x30773)
+:assumption (or (not x8732) (not x17820))
+:assumption (or (not x27644) x9185)
+:assumption (or x8076 x26602)
+:assumption (or x25659 (not x16096) (not x12757))
+:assumption (or x30067 x25339 (not x4977) x1676 x29243)
+:assumption (or (not x11059) (not x8701))
+:assumption (or (not x209) (not x10877))
+:assumption (or (not x19822) (not x31728))
+:assumption (or x4301 (not x19960) x25905 x22609 (not x28242))
+:assumption (or (not x20759) x754)
+:assumption (or x26466 (not x1393))
+:assumption (or (not x16546) x28436 x3224)
+:assumption (or (not x19152) x11255)
+:assumption (or (not x20269) x11250)
+:assumption (or x21946 x17411)
+:assumption (or (not x30052) (not x25315) (not x24200))
+:assumption (or x19766 x28742 x9008 (not x18262) x6283 x26760)
+:assumption (or (not x18314) x20621)
+:assumption (or x18687 (not x13713))
+:assumption (or (not x20518) x7115)
+:assumption (or x10229 (not x10564))
+:assumption (or x31203 (not x7537))
+:assumption (or x29578 x31783)
+:assumption (or (not x7295) (not x14522))
+:assumption (or (not x31555) x16860)
+:assumption (or x17803 x12198)
+:assumption (or (not x17973) x23824)
+:assumption (or (not x27373) x26080)
+:assumption (or (not x4446) (not x18937))
+:assumption (or (not x16108) x29312)
+:assumption (or (not x18150) (not x8317))
+:assumption (or (not x10866) (not x844))
+:assumption (or (not x12325) x14107)
+:assumption (or (not x20529) (not x486))
+:assumption (or (not x17498) x13840)
+:assumption (or x4744 (not x1052) x23334 x24716 x484 (not x22587) (not x21798))
+:assumption (or x5778 x20863)
+:assumption (or (not x10223) x3651)
+:assumption (or x6492 (not x9758))
+:assumption (or (not x9825) (not x18955))
+:assumption (or (not x2133) (not x2023))
+:assumption (or x677 x15167 x973 (not x15624) x11020)
+:assumption (or x22746 (not x13907))
+:assumption (or x2262 (not x4579))
+:assumption (or (not x24474) (not x14121) (not x4594) x1588 x13217 x28368)
+:assumption (or x31180 (not x22584))
+:assumption (or (not x29887) (not x6351))
+:assumption (or (not x12540) (not x21890))
+:assumption (or x30279 (not x11824))
+:assumption (or x1191 (not x28428))
+:assumption (or x23009 (not x31199))
+:assumption (or x5028 (not x16329) (not x1522) (not x29442))
+:assumption (or x14591 (not x29628) x14839 (not x21119))
+:assumption (or (not x19066) (not x22984))
+:assumption (or x24948 x9322 (not x16492))
+:assumption (or (not x10593) (not x11296) x29700 (not x17396))
+:assumption (or x23155 (not x31374))
+:assumption (or x4619 x15956)
+:assumption (or x29312 x20608)
+:assumption (or x16503 (not x26956))
+:assumption (or (not x30229) (not x15067))
+:assumption (or (not x10510) x21122)
+:assumption (or x15152 (not x28541) (not x1998))
+:assumption (or x3720 (not x1050))
+:assumption (or x8989 x7947)
+:assumption (or x9748 x2016)
+:assumption (or (not x14452) x792)
+:assumption (or (not x30475) x18234 x11822)
+:assumption (or (not x18321) x23327)
+:assumption (or (not x13987) (not x12657) (not x5357) (not x17586) x26257 x9127 (not x23238) x4161 x11134)
+:assumption (or (not x20782) x11479)
+:assumption (or x13048 x11875)
+:assumption (or x30633 (not x17020))
+:assumption (or (not x13585) x6009)
+:assumption (or x8002 x3916)
+:assumption (or x13052 x2438)
+:assumption (or (not x15467) x5410)
+:assumption (or (not x4236) x8340)
+:assumption (or (not x28980) (not x17850))
+:assumption (or (not x27384) (not x20106))
+:assumption (or (not x18859) x2494)
+:assumption (or (not x22605) (not x21671))
+:assumption (or (not x14487) (not x7525))
+:assumption (or x4259 x26870 x11894)
+:assumption (or (not x10261) x13665)
+:assumption (or x17513 x27799)
+:assumption (or x21815 (not x19867))
+:assumption (or x7040 (not x27322))
+:assumption (or (not x4206) (not x14035))
+:assumption (or (not x11592) x18519)
+:assumption (or x5039 x25531)
+:assumption (or x19764 (not x26921))
+:assumption (or (not x22852) (not x21524) (not x13162) (not x17951) x6174 (not x26916))
+:assumption (or x30188 (not x26815) x25376 (not x370) x14035 (not x5527) x19171)
+:assumption (or x21040 x30654)
+:assumption (or x18333 (not x337))
+:assumption (or (not x18941) (not x19009) x31445 x30111 x24304 (not x5796))
+:assumption (or x24007 x6972)
+:assumption (or x19183 x13781)
+:assumption (or (not x18181) (not x12689))
+:assumption (or (not x24723) x218)
+:assumption (or x13257 (not x30131))
+:assumption (or (not x10108) (not x18730) (not x25400) (not x13434))
+:assumption (or (not x4218) (not x15611))
+:assumption (or x9020 (not x21131))
+:assumption (or (not x22924) x1854)
+:assumption (or x1576 (not x18859) x12931)
+:assumption (or x26282 (not x29299))
+:assumption (or x22772 x23607)
+:assumption (or x23212 x5886 (not x1192) x8961)
+:assumption (or (not x18855) (not x30812) x3969 x1506 x5255 x7316 x18464 (not x18444))
+:assumption (or x29606 (not x23239))
+:assumption (or x12058 (not x20387))
+:assumption (or (not x13576) (not x15062) (not x26323) x9531)
+:assumption (or x18535 (not x572))
+:assumption (or (not x19303) x25186)
+:assumption (or (not x17978) (not x20959))
+:assumption (or x14802 (not x1346) (not x2914))
+:assumption (or x3539 (not x15836))
+:assumption (or x26195 (not x323))
+:assumption (or (not x31392) x18909)
+:assumption (or x12669 x21969)
+:assumption (or x550 x31816)
+:assumption (or x25647 x10313)
+:assumption (or (not x29643) (not x19287))
+:assumption (or (not x24676) (not x25190))
+:assumption (or x1394 x20743)
+:assumption (or x16503 x26317)
+:assumption (or (not x24684) x7485)
+:assumption (or (not x11792) x25003)
+:assumption (or (not x25597) x14479)
+:assumption (or x9167 x18547)
+:assumption (or x734 (not x6775) (not x18869) (not x31357))
+:assumption (or (not x3650) x3176)
+:assumption (or x25410 x18563)
+:assumption (or x22412 x30618 (not x7939) (not x28342) x3307 (not x17847))
+:assumption (or (not x20542) (not x9793))
+:assumption (or (not x25703) x7934)
+:assumption (or (not x21831) x15841)
+:assumption (or x7072 (not x28884))
+:assumption (or (not x2000) x15486)
+:assumption (or x27713 (not x28375) x15979 x30082 (not x15348))
+:assumption (or (not x23244) (not x26897) x20444)
+:assumption (or x805 (not x15848) x25475 x27709)
+:assumption (or x7208 x24190 (not x11281) (not x23759) x4469)
+:assumption (or x24666 x25315)
+:assumption (or (not x12228) (not x982))
+:assumption (or x8853 x14634)
+:assumption (or x1995 (not x13768))
+:assumption (or x3449 (not x10004) x18599 x763 x16477 (not x2762))
+:assumption (or (not x20493) (not x142) x4584)
+:assumption (or (not x21298) x3056)
+:assumption (or x10521 (not x1219) (not x13330))
+:assumption (or x6999 x14160)
+:assumption (or (not x3198) x15416)
+:assumption (or x2566 (not x18633))
+:assumption (or (not x30666) (not x20550))
+:assumption (or (not x9504) x15489)
+:assumption (or x5290 x2759 x1393)
+:assumption (or x19687 (not x15868) x12459 (not x9423))
+:assumption (or (not x9845) (not x24180))
+:assumption (or (not x25154) (not x30113))
+:assumption (or (not x28383) (not x15072) (not x15246))
+:assumption (or (not x9512) x23022)
+:assumption (or (not x5528) (not x28053))
+:assumption (or x20202 (not x26328))
+:assumption (or x22154 x3915 x28436)
+:assumption (or x25294 x12340)
+:assumption (or (not x28451) x16020)
+:assumption (or x19356 (not x14936))
+:assumption (or x17763 (not x26479))
+:assumption (or (not x5320) x4115)
+:assumption (or (not x3119) (not x31076))
+:assumption (or x23556 x1639)
+:assumption (or (not x17116) (not x27062))
+:assumption (or (not x20153) (not x27780))
+:assumption (or x3988 (not x7845))
+:assumption (or (not x4451) (not x18899))
+:assumption (or (not x11467) x6906)
+:assumption (or (not x7200) x15227 (not x6687))
+:assumption (or x31106 (not x23706))
+:assumption (or x25497 x21653)
+:assumption (or x16861 (not x10389))
+:assumption (or (not x15180) (not x28791))
+:assumption (or x5432 x27854)
+:assumption (or (not x18567) (not x2693))
+:assumption (or (not x29381) (not x18983))
+:assumption (or (not x7859) x30772)
+:assumption (or (not x9303) x522)
+:assumption (or (not x20152) (not x19858))
+:assumption (or x17031 (not x7927))
+:assumption (or x17436 (not x12581))
+:assumption (or (not x30855) x10609)
+:assumption (or (not x25315) (not x6308))
+:assumption (or x20863 (not x5375))
+:assumption (or (not x6436) x12890)
+:assumption (or x8507 x16053)
+:assumption (or x19644 (not x28906))
+:assumption (or x15832 x28890 (not x8794))
+:assumption (or (not x31005) x11076)
+:assumption (or x2338 (not x9847))
+:assumption (or (not x3706) (not x23754))
+:assumption (or x18927 x19519)
+:assumption (or (not x9073) x22925)
+:assumption (or (not x31159) x31461)
+:assumption (or x13930 x20554)
+:assumption (or x20184 x25366)
+:assumption (or x24191 x31829)
+:assumption (or (not x5365) (not x28441))
+:assumption (or x31826 x3965)
+:assumption (or (not x22733) x8229 (not x31224) (not x11775))
+:assumption (or x8799 x30369)
+:assumption (or (not x1600) (not x12171) (not x9531) x13576 x14552)
+:assumption (or x21060 (not x15871))
+:assumption (or (not x16346) x30891)
+:assumption (or (not x3212) x6701)
+:assumption (or (not x14044) x20840)
+:assumption (or (not x10102) x26810)
+:assumption (or x22598 (not x22897))
+:assumption (or (not x25366) (not x19050) (not x17075) (not x18872))
+:assumption (or (not x8227) x27848)
+:assumption (or (not x2264) x1420)
+:assumption (or (not x6120) (not x30110))
+:assumption (or x30224 x26477)
+:assumption (or x480 (not x9735) x26084)
+:assumption (or x11472 x18396)
+:assumption (or (not x5067) x18935)
+:assumption (or x15619 x18172)
+:assumption (or (not x9008) x9017)
+:assumption (or (not x8660) x2376)
+:assumption (or (not x16428) x29825)
+:assumption (or (not x25366) (not x16826))
+:assumption (or x30515 x23664)
+:assumption (or (not x1417) x8780 x25535 x3435 (not x23256))
+:assumption (or x394 (not x16648))
+:assumption (or (not x1767) x452)
+:assumption (or (not x31258) x18814)
+:assumption (or x10337 (not x8002))
+:assumption (or (not x8002) x21562 x19329)
+:assumption (or x19391 (not x23279))
+:assumption (or (not x2759) (not x20048))
+:assumption (or x3435 x20948)
+:assumption (or (not x26259) x13193)
+:assumption (or x15527 x27998)
+:assumption (or (not x7169) (not x4372))
+:assumption (or x9635 (not x16081))
+:assumption (or (not x7643) (not x2961))
+:assumption (or (not x20094) x11906)
+:assumption (or (not x24079) (not x14455) (not x27589) x4884 x16374)
+:assumption (or (not x31637) x12206)
+:assumption (or (not x15795) (not x16557))
+:assumption (or x28783 x13968)
+:assumption (or (not x26675) x28823)
+:assumption (or (not x10717) (not x19733))
+:assumption (or (not x24611) x28265)
+:assumption (or x8002 x13956 (not x10818) x30224 (not x499) x23244)
+:assumption (or (not x16955) (not x2036) (not x771) x1430 (not x23027) x12146)
+:assumption (or x31778 (not x12823) x7262 x20304 (not x26600) x7132 (not x17695))
+:assumption (or x9213 x18377)
+:assumption (or (not x8661) x12468)
+:assumption (or x16446 (not x17355))
+:assumption (or x27423 x15708)
+:assumption (or x24881 x10897)
+:assumption (or x22759 (not x15782))
+:assumption (or x18416 x24815)
+:assumption (or (not x12114) (not x30070))
+:assumption (or (not x9234) x21112)
+:assumption (or (not x9266) (not x16677))
+:assumption (or x372 x27611)
+:assumption (or x6149 (not x30409))
+:assumption (or x19575 (not x21841))
+:assumption (or x154 x6140)
+:assumption (or x22851 (not x10676))
+:assumption (or x21815 x20948)
+:assumption (or x30772 x1487)
+:assumption (or x9008 x14669)
+:assumption (or (not x7950) (not x26897) x27240)
+:assumption (or (not x28694) x5028 (not x5076) (not x29442))
+:assumption (or (not x15090) x17597)
+:assumption (or x16025 x20325 (not x3809))
+:assumption (or x29649 (not x8023))
+:assumption (or x16769 x4698)
+:assumption (or x24742 (not x30914))
+:assumption (or (not x5597) (not x23518))
+:assumption (or (not x31829) x16859)
+:assumption (or x3553 x1053)
+:assumption (or x28637 x15168)
+:assumption (or x31535 (not x15572))
+:assumption (or (not x5994) (not x20497))
+:assumption (or x1745 x7748)
+:assumption (or x17741 (not x20544))
+:assumption (or x2316 (not x7762))
+:assumption (or (not x2647) x23244)
+:assumption (or x17474 x8965)
+:assumption (or (not x1503) x23604)
+:assumption (or (not x23878) x1905)
+:assumption (or x9025 x16905)
+:assumption (or (not x20024) x11382)
+:assumption (or x20493 (not x7458))
+:assumption (or (not x28337) (not x10157))
+:assumption (or (not x19769) x3908 x26818 x6031 (not x16304))
+:assumption (or (not x8821) (not x29108))
+:assumption (or (not x6034) (not x13599))
+:assumption (or x16907 (not x4605))
+:assumption (or x7693 (not x3684))
+:assumption (or (not x6005) (not x20333))
+:assumption (or x19864 x23137 x29792 (not x4804) (not x25112) (not x6779) x28772 x16011)
+:assumption (or (not x2996) x23833)
+:assumption (or (not x22417) x10787)
+:assumption (or x25439 x15266)
+:assumption (or (not x16683) x5430)
+:assumption (or x21617 x8961)
+:assumption (or (not x23244) (not x18717))
+:assumption (or (not x8973) (not x26059))
+:assumption (or (not x22629) x3992 (not x8002) (not x23244))
+:assumption (or (not x6708) (not x7801) (not x19653))
+:assumption (or (not x19159) x16808 x795 (not x20092) (not x14888) x836 (not x19723) (not x8835))
+:assumption (or (not x27020) (not x29457) x9977 (not x25354) x14522 x1224)
+:assumption (or (not x13249) (not x26705))
+:assumption (or x23214 (not x20269))
+:assumption (or (not x29107) (not x1400))
+:assumption (or (not x4358) x10927)
+:assumption (or (not x1621) x4399)
+:assumption (or x11120 x14591)
+:assumption (or (not x21306) x25863)
+:assumption (or x26645 (not x30396))
+:assumption (or (not x16411) x1997)
+:assumption (or (not x21815) (not x7388))
+:assumption (or x1909 x28097)
+:assumption (or (not x2063) x13485 x16028 x11877)
+:assumption (or x30432 x27716)
+:assumption (or x22671 (not x27826) (not x1214) x9701)
+:assumption (or x30737 x25508)
+:assumption (or (not x6351) x19328 (not x4289))
+:assumption (or x21705 x27361)
+:assumption (or x16732 (not x18129))
+:assumption (or x7922 (not x12031))
+:assumption (or (not x31103) (not x4408))
+:assumption (or x1643 (not x1931))
+:assumption (or (not x23112) (not x20827))
+:assumption (or x1765 x16555)
+:assumption (or (not x13474) (not x10656) x2500)
+:assumption (or (not x8749) x18397)
+:assumption (or x2107 x142)
+:assumption (or x9804 x4045)
+:assumption (or x25245 (not x31114) x3831 (not x13083))
+:assumption (or (not x25936) (not x19193))
+:assumption (or (not x2253) (not x13578))
+:assumption (or x4119 (not x9269))
+:assumption (or (not x12132) (not x29794))
+:assumption (or (not x23120) x1658)
+:assumption (or x24032 (not x2075))
+:assumption (or (not x756) (not x2938))
+:assumption (or (not x30986) x13537)
+:assumption (or x11452 (not x1599) (not x4237))
+:assumption (or (not x2599) x8002 x23542)
+:assumption (or (not x17911) (not x4649) (not x26161))
+:assumption (or x14183 (not x9217))
+:assumption (or x2349 x15990)
+:assumption (or x15586 (not x21298))
+:assumption (or x21298 (not x17175) (not x9037) (not x29246) x4624 (not x20703) (not x2474))
+:assumption (or x24923 x10193)
+:assumption (or (not x26412) (not x18977))
+:assumption (or (not x23145) (not x29537) (not x16063) x16849)
+:assumption (or (not x3494) (not x27417))
+:assumption (or (not x5597) (not x15834))
+:assumption (or (not x20401) x21701)
+:assumption (or x28422 x22370)
+:assumption (or x26115 x31394)
+:assumption (or (not x29698) x3243)
+:assumption (or x26670 x12368)
+:assumption (or (not x12498) (not x30213))
+:assumption (or (not x4179) x26861)
+:assumption (or (not x7537) x6346)
+:assumption (or x17359 x569 x26723)
+:assumption (or x9979 (not x3316))
+:assumption (or (not x3348) (not x12747))
+:assumption (or (not x13956) x27936)
+:assumption (or (not x9664) x31345)
+:assumption (or x28246 (not x20627) (not x8229) x26375)
+:assumption (or x6132 x19992)
+:assumption (or x21727 (not x12621))
+:assumption (or (not x23562) (not x24722) (not x21916))
+:assumption (or (not x23201) x15866)
+:assumption (or x25506 (not x13113))
+:assumption (or (not x25101) x218)
+:assumption (or x15763 (not x29276))
+:assumption (or x7112 x24517)
+:assumption (or x7190 (not x31359))
+:assumption (or x6307 x17241)
+:assumption (or x29978 x7561)
+:assumption (or (not x23797) x25383)
+:assumption (or x12697 (not x28890))
+:assumption (or (not x2701) x14163 (not x16003))
+:assumption (or x29587 (not x8175))
+:assumption (or (not x822) (not x11245))
+:assumption (or x5569 x25951)
+:assumption (or (not x7646) x6685)
+:assumption (or (not x13014) x5293)
+:assumption (or (not x10128) x24817)
+:assumption (or (not x5107) (not x19949))
+:assumption (or x28926 x24523)
+:assumption (or x3001 x27781)
+:assumption (or (not x17522) (not x25366))
+:assumption (or (not x26881) x20588)
+:assumption (or x11207 x1621)
+:assumption (or (not x28993) (not x25659))
+:assumption (or (not x15070) (not x16311))
+:assumption (or x12287 (not x8290))
+:assumption (or (not x18596) (not x8602))
+:assumption (or x19076 x9025)
+:assumption (or (not x21592) (not x23682))
+:assumption (or (not x23017) (not x24961))
+:assumption (or x20683 (not x5993))
+:assumption (or x7152 (not x21298))
+:assumption (or (not x6240) (not x19374))
+:assumption (or x26631 (not x27503))
+:assumption (or x20635 x29606)
+:assumption (or x13956 x17128)
+:assumption (or x10592 x16510)
+:assumption (or (not x22656) x16095)
+:assumption (or x10299 (not x17534))
+:assumption (or x16748 x16008)
+:assumption (or x3352 (not x24720) (not x31301))
+:assumption (or x18791 x26368)
+:assumption (or x22921 (not x28566) x14108 (not x24906) x24722)
+:assumption (or x14048 x4034)
+:assumption (or x12989 (not x13956))
+:assumption (or (not x16510) x16205)
+:assumption (or x25097 (not x15766))
+:assumption (or x13268 x12774)
+:assumption (or x9691 x8002 (not x13492))
+:assumption (or (not x1225) (not x3327))
+:assumption (or x22776 x4123)
+:assumption (or (not x5500) (not x12052) x3212)
+:assumption (or x1594 (not x9172))
+:assumption (or x14098 (not x21421))
+:assumption (or (not x1792) (not x9891))
+:assumption (or x26763 x31898)
+:assumption (or x2384 (not x18392))
+:assumption (or x31480 (not x12284))
+:assumption (or x6864 x24768 (not x23596))
+:assumption (or (not x22910) x6818 x9008)
+:assumption (or x17230 (not x23244))
+:assumption (or x21897 (not x17445))
+:assumption (or x13592 (not x8002))
+:assumption (or (not x26999) (not x17289))
+:assumption (or x10904 (not x17473))
+:assumption (or (not x28331) x12457)
+:assumption (or x15318 (not x16485))
+:assumption (or x23649 x3902)
+:assumption (or x20794 x1235)
+:assumption (or x10620 (not x18069))
+:assumption (or (not x7631) (not x10892))
+:assumption (or x15134 x4116)
+:assumption (or (not x27825) x31612)
+:assumption (or (not x11442) x24973)
+:assumption (or x4804 x17922)
+:assumption (or x16718 x11868)
+:assumption (or x29594 x2937)
+:assumption (or (not x2740) (not x15866) (not x7355))
+:assumption (or x19642 (not x16890))
+:assumption (or (not x22661) (not x19070))
+:assumption (or (not x17047) (not x9010))
+:assumption (or x3357 (not x14832))
+:assumption (or x21938 x11405)
+:assumption (or (not x12306) (not x25715))
+:assumption (or (not x19299) (not x6707))
+:assumption (or x5759 (not x8962) (not x20685) x1487)
+:assumption (or (not x9797) x3297 x5367 (not x20611))
+:assumption (or x13852 x22100 x22553)
+:assumption (or x13903 (not x18999) (not x21298))
+:assumption (or x9754 (not x918) x6955 x31829)
+:assumption (or (not x24501) x23938)
+:assumption (or (not x11682) (not x30318) x25481 x26192)
+:assumption (or (not x15446) (not x20348))
+:assumption (or (not x19742) x22343)
+:assumption (or x18662 x15557)
+:assumption (or x21479 x19358)
+:assumption (or (not x19473) x31895)
+:assumption (or (not x16988) x22548)
+:assumption (or x7117 (not x3435))
+:assumption (or (not x12156) x1216)
+:assumption (or (not x10827) (not x17211))
+:assumption (or x21142 x3706)
+:assumption (or x24546 x7923)
+:assumption (or x10862 x13513 (not x8825))
+:assumption (or x12847 x19467)
+:assumption (or (not x22809) x9413)
+:assumption (or (not x13239) (not x27111))
+:assumption (or x29017 x24894)
+:assumption (or x4212 (not x29801))
+:assumption (or (not x26294) (not x20808))
+:assumption (or (not x31495) (not x27589))
+:assumption (or (not x14845) (not x19477))
+:assumption (or (not x627) x7870)
+:assumption (or (not x25535) (not x11086))
+:assumption (or x6351 (not x10951))
+:assumption (or x23089 (not x12079))
+:assumption (or x13158 x4504 (not x27111))
+:assumption (or x19941 x3759)
+:assumption (or x8271 (not x6890))
+:assumption (or x21655 (not x21298))
+:assumption (or x22438 x26081)
+:assumption (or (not x17622) x12792)
+:assumption (or (not x11848) (not x24325) (not x18859))
+:assumption (or (not x26398) x16186)
+:assumption (or x15525 (not x14915))
+:assumption (or x2544 x3212)
+:assumption (or x30928 (not x30638))
+:assumption (or (not x21620) x4072)
+:assumption (or x8444 x16927)
+:assumption (or x15690 x10851 (not x15652) (not x18418) (not x31115))
+:assumption (or x23121 (not x31851))
+:assumption (or x10077 x8602 (not x20776))
+:assumption (or (not x11506) x27012 x20003)
+:assumption (or x12373 (not x9721))
+:assumption (or (not x18465) x9008)
+:assumption (or x23244 x17713)
+:assumption (or (not x23404) x16813 x3493 x11783)
+:assumption (or x23809 x15526)
+:assumption (or x16484 (not x29446))
+:assumption (or x10399 (not x4822) (not x26513))
+:assumption (or x29739 x25659)
+:assumption (or x3065 x13511)
+:assumption (or (not x5398) x31569)
+:assumption (or (not x21026) x25025)
+:assumption (or x6469 (not x7813))
+:assumption (or (not x20636) (not x17302) (not x5915))
+:assumption (or (not x7877) (not x26722))
+:assumption (or (not x19783) x15628)
+:assumption (or (not x25294) (not x7628))
+:assumption (or (not x10954) (not x27537))
+:assumption (or (not x11718) x7859 (not x27993) x29266)
+:assumption (or x22530 (not x9683) (not x25334))
+:assumption (or (not x16825) x26702 (not x23167) (not x12155) (not x24755) x13100 x1785)
+:assumption (or (not x110) x17534)
+:assumption (or (not x26172) (not x18863))
+:assumption (or (not x6657) x20449 (not x11005) x18437)
+:assumption (or (not x18616) x4139)
+:assumption (or (not x28684) (not x9775) x12720 (not x18799) x2876)
+:assumption (or (not x18088) x13956)
+:assumption (or x21153 x5437)
+:assumption (or (not x15254) (not x22272))
+:assumption (or (not x7903) x5862 x23854 x10342 x8358 x26982)
+:assumption (or (not x27439) (not x4259))
+:assumption (or x23244 (not x588))
+:assumption (or x9003 (not x30521))
+:assumption (or x21298 x16738)
+:assumption (or x14897 x24696)
+:assumption (or (not x6817) x23563)
+:assumption (or (not x29955) x24120)
+:assumption (or x12553 x29309 (not x26017) (not x21184))
+:assumption (or x27555 (not x19219))
+:assumption (or x30394 x21202)
+:assumption (or (not x4356) x26286)
+:assumption (or (not x27210) (not x18064))
+:assumption (or (not x31412) x12949)
+:assumption (or (not x30091) x29959)
+:assumption (or x28093 x9726)
+:assumption (or (not x29312) (not x29879))
+:assumption (or x4753 (not x9477))
+:assumption (or (not x24474) (not x12632))
+:assumption (or x27339 (not x11776))
+:assumption (or (not x6113) x2573)
+:assumption (or x16789 x17579)
+:assumption (or x16210 (not x13956) (not x18698))
+:assumption (or (not x21653) x18157)
+:assumption (or x18063 (not x2789))
+:assumption (or (not x25995) (not x20091) (not x12359) (not x6881))
+:assumption (or x24447 (not x26709))
+:assumption (or x5423 (not x24017))
+:assumption (or x27252 (not x10798))
+:assumption (or x28890 x30869)
+:assumption (or x27515 (not x16907))
+:assumption (or (not x10881) (not x5570))
+:assumption (or x899 (not x20112))
+:assumption (or (not x28778) (not x19823))
+:assumption (or x2971 x16824)
+:assumption (or x27207 x7929)
+:assumption (or (not x25776) (not x6746))
+:assumption (or x9328 (not x5902))
+:assumption (or x11440 x8469)
+:assumption (or x28986 x27795)
+:assumption (or (not x31512) (not x905) x8002)
+:assumption (or (not x10142) (not x31681) (not x953))
+:assumption (or (not x13861) x29951)
+:assumption (or x18783 x5617)
+:assumption (or x21392 (not x4988))
+:assumption (or (not x10928) (not x25183))
+:assumption (or x20178 x5325)
+:assumption (or (not x25366) x17703)
+:assumption (or (not x15602) x18069)
+:assumption (or x6969 (not x30948))
+:assumption (or (not x5154) (not x1762))
+:assumption (or (not x14591) x7423)
+:assumption (or (not x1493) x10060)
+:assumption (or (not x1571) (not x25472))
+:assumption (or (not x1584) x28863)
+:assumption (or (not x31014) (not x31516))
+:assumption (or x16000 (not x21610))
+:assumption (or (not x17359) x25698)
+:assumption (or (not x21836) (not x19083))
+:assumption (or x24236 x15892)
+:assumption (or (not x17250) (not x12943))
+:assumption (or x4463 (not x11469))
+:assumption (or x17090 x745)
+:assumption (or (not x23933) x15877)
+:assumption (or (not x19374) x2020)
+:assumption (or x24789 (not x1302))
+:assumption (or (not x13729) x23958)
+:assumption (or (not x11536) x29477 x5497 (not x904) (not x26038))
+:assumption (or (not x24756) x21966)
+:assumption (or x22018 (not x23386) (not x29605))
+:assumption (or (not x3097) (not x4572))
+:assumption (or (not x16049) x23900)
+:assumption (or x28031 (not x1820))
+:assumption (or (not x10894) x10924)
+:assumption (or x26221 x10703 x3001 x15010 x23488)
+:assumption (or x24689 x7303 x18084 (not x2949) x11087 x1449)
+:assumption (or x2288 x26377)
+:assumption (or (not x20291) x4831)
+:assumption (or (not x26760) (not x28742))
+:assumption (or (not x4732) x24385)
+:assumption (or (not x22531) x25246 (not x1284))
+:assumption (or x8002 x13448)
+:assumption (or x1547 (not x1555))
+:assumption (or (not x2075) x21819)
+:assumption (or (not x28973) x3685)
+:assumption (or (not x13576) (not x9616))
+:assumption (or x6074 x12808)
+:assumption (or x16341 x20008 x28037 x23146)
+:assumption (or (not x2824) (not x31389))
+:assumption (or (not x10131) x10114)
+:assumption (or x26278 x15414)
+:assumption (or (not x4763) x15731 (not x18598) (not x5138))
+:assumption (or (not x29606) (not x10872))
+:assumption (or (not x27545) x24155)
+:assumption (or (not x31177) x8892)
+:assumption (or (not x9794) x15074)
+:assumption (or (not x31898) (not x5098))
+:assumption (or (not x14759) x26031)
+:assumption (or (not x13351) x14430 x105 (not x7785))
+:assumption (or (not x14865) x9694)
+:assumption (or x22769 (not x20170))
+:assumption (or (not x9008) (not x5412))
+:assumption (or (not x19926) x27376)
+:assumption (or (not x4747) x14206)
+:assumption (or (not x25130) x30138)
+:assumption (or x6034 (not x3205))
+:assumption (or (not x7690) x14735)
+:assumption (or (not x21815) x28732 (not x15891) (not x6951) (not x16510))
+:assumption (or x21921 x6790)
+:assumption (or (not x2246) (not x22855) x8876)
+:assumption (or (not x25224) (not x21651) x22008 x202 (not x3001) x7308)
+:assumption (or (not x9757) x5171)
+:assumption (or (not x22799) x10671)
+:assumption (or (not x6574) x13956)
+:assumption (or (not x23570) x20087)
+:assumption (or x14718 x15470 (not x7016))
+:assumption (or x8002 x20355)
+:assumption (or (not x11674) (not x8834))
+:assumption (or x10914 x1149)
+:assumption (or (not x31155) x1711)
+:assumption (or x2186 (not x17456))
+:assumption (or x6870 (not x8361))
+:assumption (or (not x29091) (not x31789))
+:assumption (or x14021 x30635)
+:assumption (or (not x11130) (not x11346))
+:assumption (or x1037 x28782)
+:assumption (or x12053 x13798)
+:assumption (or (not x12400) x24772)
+:assumption (or (not x27825) (not x5723))
+:assumption (or (not x24840) x4586)
+:assumption (or x28605 x7987)
+:assumption (or x18264 (not x29600))
+:assumption (or (not x29199) x30970)
+:assumption (or (not x6951) (not x26969))
+:assumption (or x4756 x11485 (not x16766) x30944 (not x7712))
+:assumption (or x27024 (not x25960))
+:assumption (or x18485 (not x17534))
+:assumption (or x22353 (not x12083))
+:assumption (or x1139 x4483)
+:assumption (or (not x16506) (not x16754) x10082 (not x1746) (not x14682) x18859 (not x27811) x30447)
+:assumption (or (not x23017) (not x13054))
+:assumption (or x1781 (not x113))
+:assumption (or (not x12504) x29486)
+:assumption (or x25405 x11268)
+:assumption (or (not x17105) (not x5231))
+:assumption (or (not x508) (not x28328))
+:assumption (or x10900 (not x10064))
+:assumption (or (not x19955) (not x21013))
+:assumption (or x30390 (not x4865))
+:assumption (or x1627 (not x19679))
+:assumption (or x7551 (not x28599))
+:assumption (or (not x16896) x21298)
+:assumption (or (not x433) (not x13622) x8257 (not x12721) x15844 (not x27309) x5305)
+:assumption (or x13808 (not x15339) x21261 (not x20325) x3550)
+:assumption (or (not x28436) x15465)
+:assumption (or x29375 (not x12921))
+:assumption (or x5764 x20606)
+:assumption (or (not x2675) (not x21851))
+:assumption (or x18306 (not x19766))
+:assumption (or x4194 x13484)
+:assumption (or x11021 x28006)
+:assumption (or (not x22323) (not x13842))
+:assumption (or x1815 x7781)
+:assumption (or (not x31112) (not x15987))
+:assumption (or (not x25659) (not x14050))
+:assumption (or x30673 x9972)
+:assumption (or x25737 x28058)
+:assumption (or x22103 (not x10779) x26265 (not x13547) x24977 (not x27154))
+:assumption (or (not x2071) (not x13839))
+:assumption (or x19521 (not x7617) (not x18110) x16652)
+:assumption (or (not x9418) (not x9716))
+:assumption (or (not x10437) x16425)
+:assumption (or x10569 x9678)
+:assumption (or x26538 (not x14245))
+:assumption (or (not x2718) x7004)
+:assumption (or x5004 x13326)
+:assumption (or (not x14992) x2899)
+:assumption (or (not x13155) (not x28647))
+:assumption (or x25530 x27514)
+:assumption (or (not x1393) (not x24187))
+:assumption (or (not x16747) (not x27030))
+:assumption (or x15621 (not x7679))
+:assumption (or (not x12647) (not x10424) x21909 (not x20749) x5285 x928 (not x4030) (not x25313) x20076)
+:assumption (or x15215 x10192)
+:assumption (or (not x4057) (not x7924))
+:assumption (or x5050 x1621)
+:assumption (or (not x14132) (not x30331) x5916)
+:assumption (or (not x6877) x25931)
+:assumption (or (not x13956) (not x2990))
+:assumption (or (not x4754) (not x17316) x8130 x2881 (not x25728) x12188 x11318)
+:assumption (or (not x15398) x23469)
+:assumption (or x20676 (not x20548))
+:assumption (or (not x11999) (not x20929) (not x2762))
+:assumption (or (not x11603) (not x25044))
+:assumption (or (not x13746) (not x10303))
+:assumption (or (not x4735) x14728)
+:assumption (or x16907 (not x25006))
+:assumption (or x18827 x8294 (not x9008))
+:assumption (or (not x25845) x31781)
+:assumption (or (not x9393) (not x20733) x22676 (not x9617))
+:assumption (or (not x15011) (not x20558) (not x14126) (not x8840) (not x29461) x8602 (not x5433) x8224)
+:assumption (or x1806 x21815)
+:assumption (or (not x26846) x11765 x3820 x4407 x20810)
+:assumption (or (not x169) x17000)
+:assumption (or x20087 x24756 (not x11599) (not x25039))
+:assumption (or x20744 (not x11505) (not x24893) x3894)
+:assumption (or (not x18333) x22143)
+:assumption (or (not x15248) (not x28393))
+:assumption (or (not x14833) x15683)
+:assumption (or (not x8002) (not x28045) x8212 x18567)
+:assumption (or x23244 x23251 x9334 x5581 (not x21884))
+:assumption (or (not x19121) (not x28464))
+:assumption (or x2361 x22042)
+:assumption (or (not x964) x169 x12551 (not x19559))
+:assumption (or (not x4188) (not x18335))
+:assumption (or x8990 (not x26144))
+:assumption (or (not x2211) x14627)
+:assumption (or (not x25660) x26008)
+:assumption (or x18027 x27350)
+:assumption (or x31756 x29385)
+:assumption (or x10227 (not x19898))
+:assumption (or x19130 x7614)
+:assumption (or x296 (not x31851))
+:assumption (or (not x27537) (not x17685))
+:assumption (or (not x25819) x29188)
+:assumption (or x9668 (not x10507) (not x18859))
+:assumption (or x19374 x7854 x14862 x13399 (not x2020) x22960)
+:assumption (or (not x19032) (not x9557))
+:assumption (or (not x26105) (not x25409) x30256)
+:assumption (or x4700 x26346 x23583 x29052)
+:assumption (or (not x23576) (not x22548))
+:assumption (or x28298 x1972)
+:assumption (or (not x8622) x28642)
+:assumption (or x14066 (not x154) (not x14407) x10254 x14340 (not x4887))
+:assumption (or x23641 x9845 (not x14802))
+:assumption (or (not x27244) x29212)
+:assumption (or (not x20593) (not x26897))
+:assumption (or (not x30546) x7286)
+:assumption (or (not x31018) (not x9855))
+:assumption (or (not x12021) (not x25275))
+:assumption (or x14576 x24348 x29947 x5217)
+:assumption (or (not x15665) (not x20961))
+:assumption (or x2856 x18391 x11279 (not x10818))
+:assumption (or x31428 (not x22485))
+:assumption (or (not x27679) x19225)
+:assumption (or (not x29660) (not x8535))
+:assumption (or (not x1760) (not x22767))
+:assumption (or (not x22873) x17957)
+:assumption (or (not x17078) x9889)
+:assumption (or (not x9314) x195)
+:assumption (or x30788 x2976)
+:assumption (or (not x31151) (not x5703))
+:assumption (or (not x17732) (not x11332) x18761)
+:assumption (or x31537 (not x17132))
+:assumption (or x8003 (not x26516))
+:assumption (or x16510 x12963)
+:assumption (or (not x3146) (not x11050))
+:assumption (or x31060 (not x20494))
+:assumption (or x3409 x15817)
+:assumption (or (not x10718) x5507)
+:assumption (or x20147 x24647)
+:assumption (or (not x17077) x9536)
+:assumption (or x31762 x15537 x13349)
+:assumption (or (not x23801) (not x3196))
+:assumption (or (not x24756) (not x16952) x22028 (not x20087))
+:assumption (or (not x14185) x2078)
+:assumption (or (not x14114) x8288)
+:assumption (or x28885 (not x29157) x7601)
+:assumption (or x23195 x2345)
+:assumption (or (not x21752) x31734 (not x5094) x18011)
+:assumption (or x21261 x23283)
+:assumption (or (not x20030) x826)
+:assumption (or x6507 x21349 (not x22289) (not x10744))
+:assumption (or (not x3815) x26513)
+:assumption (or (not x5057) (not x11596))
+:assumption (or x9481 x29326)
+:assumption (or x16916 x13956)
+:assumption (or (not x19980) x27730)
+:assumption (or (not x31651) x16821)
+:assumption (or (not x28253) (not x15822) x24935 (not x31303) x5249 x31110)
+:assumption (or x4875 (not x26910) (not x14135) (not x6243))
+:assumption (or x29959 (not x22633))
+:assumption (or x2957 x20580)
+:assumption (or (not x30758) (not x31723))
+:assumption (or x8979 (not x7831))
+:assumption (or x24908 x24107)
+:assumption (or (not x3117) (not x20207))
+:assumption (or (not x10990) x18891 x6813)
+:assumption (or x26466 x5277)
+:assumption (or (not x245) (not x3661))
+:assumption (or (not x18908) x20658 x9053 x9008 (not x27543) x19097)
+:assumption (or (not x13672) x30263)
+:assumption (or (not x9704) x15334 (not x1621) (not x1902) x12152)
+:assumption (or (not x23774) x23399)
+:assumption (or (not x14652) x30877)
+:assumption (or (not x7140) x25811)
+:assumption (or (not x18376) x24824)
+:assumption (or x9008 (not x26583))
+:assumption (or (not x2090) x21298 x14167 (not x28342))
+:assumption (or (not x30113) (not x666))
+:assumption (or x22628 (not x3382))
+:assumption (or (not x16503) (not x24788) (not x14600) (not x1670) x18295)
+:assumption (or x11527 (not x16597))
+:assumption (or x11202 (not x17100))
+:assumption (or x4058 x15986)
+:assumption (or x7829 (not x58) x30289 x26698 x27104 (not x30924))
+:assumption (or (not x13357) (not x7902) x20725 x1868 (not x18453) (not x20710) x14620 (not x20714))
+:assumption (or x30471 x31863)
+:assumption (or (not x27903) x12635)
+:assumption (or x9851 (not x1601))
+:assumption (or (not x2208) x23244 x10874)
+:assumption (or (not x11670) (not x3814) (not x829) x8198 (not x10528) (not x25463) x9531 x8251 x21125)
+:assumption (or (not x19951) x25247 (not x26260) (not x4861) x9743)
+:assumption (or (not x10214) (not x26772))
+:assumption (or (not x2149) (not x9152))
+:assumption (or x22799 (not x4824))
+:assumption (or x16741 (not x25824) (not x9276) (not x21620))
+:assumption (or (not x10401) (not x21035))
+:assumption (or x28888 x6782 x17050 x16574)
+:assumption (or x27244 x13553 x21038 x2815)
+:assumption (or (not x24771) (not x27657))
+:assumption (or x27457 x6430)
+:assumption (or x29230 x26628)
+:assumption (or (not x11055) (not x7301))
+:assumption (or (not x6256) (not x12299))
+:assumption (or (not x14646) x26360)
+:assumption (or (not x18261) (not x5652))
+:assumption (or x14505 (not x27079))
+:assumption (or (not x21224) x1366)
+:assumption (or x8271 (not x21878))
+:assumption (or x17172 (not x4700))
+:assumption (or (not x20760) x20201)
+:assumption (or x806 x2184)
+:assumption (or x28054 x22187)
+:assumption (or x31437 (not x7037))
+:assumption (or x24796 (not x4642))
+:assumption (or x28294 x838)
+:assumption (or x6340 x3532 x23000)
+:assumption (or x5025 (not x24773))
+:assumption (or x26126 x9286)
+:assumption (or x29641 (not x13066))
+:assumption (or (not x19650) x4930)
+:assumption (or (not x23512) x15159 (not x31269) (not x14523))
+:assumption (or x8184 (not x6976))
+:assumption (or x21553 (not x7647))
+:assumption (or (not x17600) x6209)
+:assumption (or x5528 (not x3741))
+:assumption (or x11771 (not x3926))
+:assumption (or (not x10634) x25352)
+:assumption (or x8002 (not x16238))
+:assumption (or (not x31230) x10909)
+:assumption (or (not x22242) x17658)
+:assumption (or (not x202) x11487 x323 x3001)
+:assumption (or x9316 x23801)
+:assumption (or x24885 x10777)
+:assumption (or x28675 x22013)
+:assumption (or (not x8825) x3246 (not x18293) (not x31087))
+:assumption (or (not x25472) (not x4247))
+:assumption (or x8002 (not x20018))
+:assumption (or (not x11972) (not x28832))
+:assumption (or x31829 x8984)
+:assumption (or (not x630) (not x21270))
+:assumption (or (not x20232) (not x17143))
+:assumption (or (not x11843) (not x15384))
+:assumption (or x25235 (not x16904))
+:assumption (or (not x8645) x21655)
+:assumption (or (not x827) (not x31425))
+:assumption (or (not x17221) x6011)
+:assumption (or (not x19323) (not x7075))
+:assumption (or (not x21658) (not x1332))
+:assumption (or (not x24165) x22375 (not x7421) x9254 (not x21820) (not x16510))
+:assumption (or (not x31612) x16693 (not x20782) x3234 x11029 x5723 x11534 x6275 x23543)
+:assumption (or x499 (not x31610))
+:assumption (or x29610 (not x26565) x22720 (not x12541) (not x16510) x11633)
+:assumption (or x14180 (not x1465))
+:assumption (or x19388 (not x16950))
+:assumption (or x27515 (not x26283))
+:assumption (or (not x13132) (not x24150))
+:assumption (or x18764 x17302)
+:assumption (or (not x29269) x13099)
+:assumption (or (not x1393) (not x10976))
+:assumption (or (not x10731) x25127)
+:assumption (or (not x7045) (not x12923))
+:assumption (or x16442 (not x6863))
+:assumption (or x24783 (not x2404))
+:assumption (or x28973 (not x11971))
+:assumption (or x15201 x14276 x29971 x30138)
+:assumption (or x26807 x15861)
+:assumption (or x2915 (not x27090))
+:assumption (or (not x30071) (not x21582))
+:assumption (or x13576 x457)
+:assumption (or x8835 x20092)
+:assumption (or (not x3618) (not x1820))
+:assumption (or (not x17743) (not x11773))
+:assumption (or x11993 x20483 (not x30113) (not x23095))
+:assumption (or (not x29082) x4731)
+:assumption (or (not x20631) x3001 x202 x26723)
+:assumption (or (not x815) x8893)
+:assumption (or (not x31348) (not x6855))
+:assumption (or (not x28904) x15563)
+:assumption (or (not x7498) (not x23864))
+:assumption (or x2766 (not x20957))
+:assumption (or x4098 (not x13891))
+:assumption (or x19853 x14324)
+:assumption (or (not x21462) x13967 (not x2663) (not x10925))
+:assumption (or x6957 (not x8301))
+:assumption (or (not x16675) x19730)
+:assumption (or (not x21741) (not x13674))
+:assumption (or (not x14580) x14230)
+:assumption (or (not x15666) x11941)
+:assumption (or (not x22473) (not x16123))
+:assumption (or x23508 x24761)
+:assumption (or x17927 x13611)
+:assumption (or (not x10742) (not x15307))
+:assumption (or x14949 (not x13111))
+:assumption (or x8961 (not x752) (not x23386) x5886 x20576)
+:assumption (or x10939 (not x22913))
+:assumption (or x16846 x15501)
+:assumption (or (not x15969) x15322)
+:assumption (or (not x20249) (not x13956))
+:assumption (or (not x6976) (not x23440))
+:assumption (or x23818 (not x10497))
+:assumption (or x7748 x23218 (not x24708) (not x10891))
+:assumption (or x29117 (not x5528))
+:assumption (or (not x5438) x11021)
+:assumption (or (not x29056) (not x9423))
+:assumption (or (not x15008) x2679)
+:assumption (or (not x17725) x9585)
+:assumption (or x10914 (not x12744))
+:assumption (or (not x2245) (not x16365))
+:assumption (or x13417 (not x14248))
+:assumption (or x2559 (not x11969))
+:assumption (or x11792 (not x20075))
+:assumption (or (not x21054) x23244 x26892 x16558 x8002)
+:assumption (or (not x24104) x6911 x25055 x13749 x25606 (not x11383) x17033)
+:assumption (or (not x25101) x17075)
+:assumption (or x10528 (not x21125))
+:assumption (or (not x31142) x1106 x31699)
+:assumption (or x13344 (not x20414))
+:assumption (or (not x5709) x6755)
+:assumption (or (not x10747) (not x12038))
+:assumption (or x16025 x6970 (not x12913))
+:assumption (or (not x4823) (not x19667))
+:assumption (or (not x27514) (not x19428) (not x25530) x30954)
+:assumption (or x2914 (not x8988))
+:assumption (or x8169 x10658)
+:assumption (or x14395 (not x11576))
+:assumption (or x16510 (not x5930) (not x18042))
+:assumption (or (not x26364) x26029)
+:assumption (or x10141 x88)
+:assumption (or x9459 x10757)
+:assumption (or x25450 x27075)
+:assumption (or (not x19769) x6031 x15795 x3311 x26818)
+:assumption (or x31083 (not x6774) (not x19239))
+:assumption (or x16948 (not x30110))
+:assumption (or (not x21948) x2418)
+:assumption (or x20119 x25311)
+:assumption (or x9290 (not x30809) (not x13138) x1105 x18946 x6960)
+:assumption (or x16648 x17926)
+:assumption (or (not x3063) x31619)
+:assumption (or (not x9757) x29960)
+:assumption (or (not x17769) (not x29580))
+:assumption (or x22583 x2391)
+:assumption (or x30177 (not x23978))
+:assumption (or x26610 x24263)
+:assumption (or x17947 x3456)
+:assumption (or x29183 x30639)
+:assumption (or (not x10640) (not x10603))
+:assumption (or (not x14318) (not x19992) (not x28342))
+:assumption (or (not x4749) x27174)
+:assumption (or x22368 x22383)
+:assumption (or (not x8956) (not x17345))
+:assumption (or (not x11914) (not x29218))
+:assumption (or x18956 x30059)
+:assumption (or (not x16358) x14044)
+:assumption (or (not x20291) x22295 x15855 (not x13956))
+:assumption (or x1792 x13956)
+:assumption (or (not x7440) x5748)
+:assumption (or x11270 (not x27763))
+:assumption (or x27359 (not x2808))
+:assumption (or (not x29149) x9008)
+:assumption (or x14385 (not x15363))
+:assumption (or x25659 x5080)
+:assumption (or x1369 x4473)
+:assumption (or x15496 (not x3170))
+:assumption (or x21298 (not x27569))
+:assumption (or (not x16845) (not x25735))
+:assumption (or x4246 (not x30170))
+:assumption (or x22999 x24589)
+:assumption (or x9008 (not x23573))
+:assumption (or x28581 (not x21925))
+:assumption (or (not x10249) (not x6376))
+:assumption (or x4168 (not x104))
+:assumption (or (not x13464) (not x3435))
+:assumption (or (not x7589) (not x5447) x4956 x15681 x24597)
+:assumption (or (not x12252) (not x20318))
+:assumption (or x10551 (not x8604) (not x10064))
+:assumption (or (not x2943) x9046)
+:assumption (or x15515 x24465 (not x11250) x29188 (not x8632) (not x25607))
+:assumption (or x17962 (not x24977))
+:assumption (or (not x19243) x22681 x17415 x2592)
+:assumption (or (not x21630) x8714 x169 x964 x28824 (not x14021))
+:assumption (or (not x4095) (not x9574))
+:assumption (or x29520 x12929)
+:assumption (or x9373 x766)
+:assumption (or (not x20615) (not x12148))
+:assumption (or (not x26739) (not x591) x24936 (not x26769) x12016 x9982 x2152 x8238)
+:assumption (or x1755 x7502 (not x13956))
+:assumption (or x10231 x16381)
+:assumption (or (not x10667) x18305)
+:assumption (or x27668 (not x5795))
+:assumption (or x24756 (not x23570))
+:assumption (or x1393 x26419)
+:assumption (or x8602 x6578 x16213)
+:assumption (or (not x2500) x3883)
+:assumption (or x2133 (not x209))
+:assumption (or (not x28858) x2923 (not x11892) (not x29750))
+:assumption (or x8137 x17579)
+:assumption (or x9008 (not x8596))
+:assumption (or x3435 (not x5268))
+:assumption (or (not x18575) x8851)
+:assumption (or (not x3512) (not x14779))
+:assumption (or x26737 (not x14796))
+:assumption (or x23162 x5361)
+:assumption (or (not x27980) x6751)
+:assumption (or x6033 x18678)
+:assumption (or (not x28016) (not x21450))
+:assumption (or (not x10754) (not x29575))
+:assumption (or x26798 (not x1052))
+:assumption (or x1338 x28912)
+:assumption (or x7521 (not x22695) (not x14489) x1579 x14138 (not x15758) (not x28825))
+:assumption (or x227 x11329 x6763 x20343)
+:assumption (or (not x1493) x24052)
+:assumption (or (not x18071) x14951)
+:assumption (or x6750 (not x30293))
+:assumption (or (not x14043) (not x18578) (not x20723) x9997 x10419)
+:assumption (or x21815 (not x2196))
+:assumption (or x16737 (not x30170))
+:assumption (or (not x29843) (not x23244))
+:assumption (or x30753 (not x24823))
+:assumption (or (not x6949) x6601)
+:assumption (or x4760 x25071)
+:assumption (or (not x24005) (not x30448))
+:assumption (or x482 x15696)
+:assumption (or (not x6965) (not x9701))
+:assumption (or (not x14846) x30370)
+:assumption (or (not x14637) x23244)
+:assumption (or (not x19196) x25016)
+:assumption (or (not x24243) (not x22963) (not x19094))
+:assumption (or (not x14839) (not x23645) (not x5406))
+:assumption (or (not x8252) (not x2597))
+:assumption (or x9718 (not x4484))
+:assumption (or x11481 (not x17629))
+:assumption (or (not x25131) (not x15795))
+:assumption (or (not x26049) x3561)
+:assumption (or (not x2398) (not x1849))
+:assumption (or x7369 x11167)
+:assumption (or (not x22625) (not x14821))
+:assumption (or x16524 x6925)
+:assumption (or (not x25384) x4337)
+:assumption (or x511 (not x19183))
+:assumption (or x21449 x24461)
+:assumption (or x19817 x3216)
+:assumption (or x15220 (not x29606))
+:assumption (or (not x6190) x17993)
+:assumption (or x6972 x13335)
+:assumption (or x4561 x18694)
+:assumption (or (not x18737) (not x827))
+:assumption (or x23489 (not x8002))
+:assumption (or x19685 x2719)
+:assumption (or x545 (not x30751))
+:assumption (or (not x26819) x29874)
+:assumption (or (not x9476) (not x22479))
+:assumption (or x5287 x23984 x22993 (not x18179) x11379 (not x12091))
+:assumption (or x3761 (not x22912))
+:assumption (or x8594 (not x13756))
+:assumption (or x1255 x9008)
+:assumption (or (not x14048) x29317)
+:assumption (or (not x14984) (not x20981))
+:assumption (or (not x10587) x26613 x4179)
+:assumption (or (not x16076) (not x4128))
+:assumption (or x29049 (not x5740))
+:assumption (or (not x6513) (not x23209))
+:assumption (or x29312 x27539)
+:assumption (or x918 (not x682))
+:assumption (or (not x1525) x27920)
+:assumption (or x25241 x15917)
+:assumption (or (not x26670) x11974 x1860 x964)
+:assumption (or x9471 x29668 x3826 x10585)
+:assumption (or x11966 (not x4528))
+:assumption (or (not x9530) x18063)
+:assumption (or x3206 (not x15227))
+:assumption (or x16025 x14918 x23004)
+:assumption (or (not x7895) x28111)
+:assumption (or (not x17447) x823 x2249)
+:assumption (or (not x14839) (not x31754))
+:assumption (or x24280 (not x25401))
+:assumption (or (not x25651) x16042)
+:assumption (or x2548 x31012)
+:assumption (or x18810 (not x16784))
+:assumption (or x13143 (not x17166))
+:assumption (or (not x17598) x8912)
+:assumption (or x3001 (not x22008))
+:assumption (or x3002 (not x21138))
+:assumption (or (not x31915) (not x4357))
+:assumption (or (not x19236) x21432 (not x25943))
+:assumption (or x30988 (not x16118))
+:assumption (or (not x31649) x10551)
+:assumption (or (not x5906) (not x29566) x28145 (not x15208) x14624)
+:assumption (or (not x23768) (not x21150))
+:assumption (or x4064 x18238)
+:assumption (or (not x9275) x9436)
+:assumption (or x30011 x12690)
+:assumption (or x14768 (not x21382))
+:assumption (or (not x30479) x7850)
+:assumption (or x10881 (not x2482) x5570 x4230 (not x6559) (not x6324))
+:assumption (or (not x21664) (not x5528))
+:assumption (or x29287 (not x12670) x5939)
+:assumption (or (not x29890) (not x17908))
+:assumption (or x19380 x1495)
+:assumption (or x7927 x22502 x1813 (not x7645) x3819 (not x13843) x16232 (not x17031))
+:assumption (or x9103 x3166)
+:assumption (or (not x19564) x23693 x29196 (not x24410))
+:assumption (or x3736 (not x14388))
+:assumption (or x6577 x18136)
+:assumption (or (not x25544) x24398)
+:assumption (or (not x6709) (not x30271) (not x27466) (not x6243))
+:assumption (or x23047 (not x19904))
+:assumption (or (not x1411) (not x3783))
+:assumption (or x4594 (not x71))
+:assumption (or x17089 x19470)
+:assumption (or x30542 (not x2474))
+:assumption (or x7286 x21528)
+:assumption (or (not x20550) x10443 (not x29027))
+:assumption (or (not x2771) (not x31627))
+:assumption (or x17464 x25870)
+:assumption (or (not x21151) (not x28891))
+:assumption (or x13648 x25252)
+:assumption (or x12389 x8206)
+:assumption (or x16620 (not x7657))
+:assumption (or x8512 x14615)
+:assumption (or x29312 x23057)
+:assumption (or (not x15653) (not x4962) x26897 x5446 (not x19609))
+:assumption (or x27942 x23362)
+:assumption (or (not x16851) (not x4625) x22832 (not x25887))
+:assumption (or (not x30296) (not x21628))
+:assumption (or x5423 (not x6886))
+:assumption (or (not x17815) (not x9008))
+:assumption (or x20895 x3355)
+:assumption (or x15771 (not x2172))
+:assumption (or (not x30005) (not x20102))
+:assumption (or (not x16025) x3313)
+:assumption (or x15887 (not x29050))
+:assumption (or (not x27122) (not x30771))
+:assumption (or (not x26742) x16977)
+:assumption (or (not x29802) x25401)
+:assumption (or x21298 x15825 x29905 x18567)
+:assumption (or (not x31606) x17139)
+:assumption (or x3503 (not x6930))
+:assumption (or x20244 (not x6351))
+:assumption (or (not x12325) (not x1016))
+:assumption (or (not x11340) x11214)
+:assumption (or (not x8757) (not x12476))
+:assumption (or (not x12468) (not x827) (not x20816))
+:assumption (or (not x4565) x30569)
+:assumption (or (not x19351) (not x26578))
+:assumption (or (not x16331) (not x3832))
+:assumption (or x5208 x25706)
+:assumption (or x18532 x9008)
+:assumption (or (not x17918) (not x4499))
+:assumption (or (not x9031) x16649 (not x18482) x95 (not x29201) (not x16199) x11668 x29744)
+:assumption (or x2765 x16712 (not x1042) x21298)
+:assumption (or (not x24200) x25979 x16168)
+:assumption (or (not x7746) x15861)
+:assumption (or x23832 x9229)
+:assumption (or (not x27229) (not x28283))
+:assumption (or x1188 x19104)
+:assumption (or (not x11171) x16510)
+:assumption (or x27280 x30674)
+:assumption (or (not x16725) (not x25859))
+:assumption (or (not x4631) x15883)
+:assumption (or (not x16587) x8059)
+:assumption (or (not x30529) (not x888))
+:assumption (or (not x29716) (not x12044))
+:assumption (or (not x24426) x4517)
+:assumption (or x24686 x97 (not x14266))
+:assumption (or x19009 x2233)
+:assumption (or x10421 (not x23244))
+:assumption (or (not x16329) x2213)
+:assumption (or x24340 (not x11328))
+:assumption (or (not x15887) (not x6985))
+:assumption (or x14623 x30740)
+:assumption (or x1943 (not x19387))
+:assumption (or x26404 (not x24781) (not x28964) x29038 x30903 (not x18229) x1245)
+:assumption (or x2039 (not x4080) (not x17005) x30381)
+:assumption (or (not x25528) (not x7859) (not x14452) x25676 (not x10336))
+:assumption (or (not x597) x43)
+:assumption (or (not x23328) x30522)
+:assumption (or (not x19190) x8002)
+:assumption (or (not x17749) x5161)
+:assumption (or x20881 x20916)
+:assumption (or (not x1393) (not x17123))
+:assumption (or x22816 (not x8374) x28892 x5405 x14595 (not x17127))
+:assumption (or (not x4456) (not x31272))
+:assumption (or x10244 x5540)
+:assumption (or x20011 x23897)
+:assumption (or x28932 (not x28404))
+:assumption (or x25659 x26547)
+:assumption (or (not x10094) (not x7158) x8229 (not x9859))
+:assumption (or x24138 (not x29443))
+:assumption (or x15207 (not x16377) (not x26852) (not x21768) x17232 (not x25214) x13152)
+:assumption (or (not x9695) (not x7181))
+:assumption (or (not x30162) (not x24608))
+:assumption (or x8901 (not x21632))
+:assumption (or (not x579) x2203)
+:assumption (or x3063 (not x1205))
+:assumption (or (not x3907) (not x6731) (not x14435) x5597)
+:assumption (or (not x13871) (not x3579))
+:assumption (or x14641 (not x9097))
+:assumption (or (not x15632) x22649)
+:assumption (or x16741 (not x31426))
+:assumption (or x27663 x9389 x5845)
+:assumption (or x19821 x2404)
+:assumption (or x12243 x5995 x20885 x17218)
+:assumption (or (not x11752) (not x3323))
+:assumption (or (not x13506) x12591)
+:assumption (or (not x20889) x20949 x12045)
+:assumption (or (not x27505) x6161)
+:assumption (or (not x2096) x20885)
+:assumption (or (not x21725) (not x11306))
+:assumption (or x10115 (not x7355))
+:assumption (or x16025 (not x18750))
+:assumption (or x18837 (not x25659) (not x24508))
+:assumption (or x10804 x27248)
+:assumption (or x2852 (not x25085))
+:assumption (or (not x14525) (not x10909))
+:assumption (or (not x20861) (not x24228))
+:assumption (or x21411 (not x8757))
+:assumption (or (not x1842) x15611)
+:assumption (or (not x19581) x18479)
+:assumption (or x12356 (not x9247) (not x8779) x2679 x3772 (not x9365) x10286 x4760 (not x13091))
+:assumption (or x13956 x31053)
+:assumption (or (not x650) (not x1403))
+:assumption (or (not x20697) (not x14532))
+:assumption (or x18179 x22246)
+:assumption (or x12917 x9550)
+:assumption (or (not x22225) x24610)
+:assumption (or (not x31495) (not x20173))
+:assumption (or (not x9923) x24244 (not x29076) x31251 (not x6666) (not x1886) x30871 (not x24205))
+:assumption (or (not x12555) x25029)
+:assumption (or (not x13102) x29963)
+:assumption (or x21633 x5144)
+:assumption (or (not x18264) x29600)
+:assumption (or x14886 x30532 (not x28924) x679 x23806 (not x10705) x7897 (not x30596) (not x28996) x29526)
+:assumption (or (not x2891) x8002)
+:assumption (or (not x22818) x17063 (not x25659))
+:assumption (or (not x21644) (not x21365))
+:assumption (or x30589 (not x18214))
+:assumption (or (not x23746) (not x6955))
+:assumption (or x29230 (not x19992))
+:assumption (or x8266 (not x8238))
+:assumption (or x2090 (not x21298))
+:assumption (or (not x18265) x7682)
+:assumption (or x12710 (not x24179))
+:assumption (or x24180 x19424)
+:assumption (or (not x29423) (not x30007) x3964)
+:assumption (or x18681 x7873)
+:assumption (or (not x496) x31134 x16659)
+:assumption (or (not x6366) (not x24123))
+:assumption (or (not x1959) (not x23546))
+:assumption (or (not x3020) (not x20267))
+:assumption (or (not x8546) (not x4242))
+:assumption (or (not x16664) x14679)
+:assumption (or (not x10510) x22785)
+:assumption (or (not x20134) (not x13092) (not x2635))
+:assumption (or (not x14525) x23509)
+:assumption (or x19618 x28950)
+:assumption (or (not x8241) x29369 x10640 x24378)
+:assumption (or x16025 x23663)
+:assumption (or (not x8002) x10329)
+:assumption (or (not x30124) (not x26599))
+:assumption (or x11401 (not x24945))
+:assumption (or x18189 x25691)
+:assumption (or x26350 x10364)
+:assumption (or x15048 x28036)
+:assumption (or x12336 (not x9644))
+:assumption (or x15179 x11066)
+:assumption (or (not x26720) x22220)
+:assumption (or (not x24157) (not x19428) (not x767) x14551)
+:assumption (or (not x17064) x21476)
+:assumption (or (not x21453) x19481)
+:assumption (or x17459 x7734)
+:assumption (or x29757 x27673)
+:assumption (or (not x22265) x14288)
+:assumption (or x29240 x17350)
+:assumption (or x14484 (not x3390))
+:assumption (or (not x1466) x1582)
+:assumption (or x21947 (not x14918))
+:assumption (or x9319 x29721)
+:assumption (or (not x29696) (not x3537))
+:assumption (or x12116 x1517)
+:assumption (or (not x13785) x25937)
+:assumption (or (not x11028) x29188)
+:assumption (or x31307 (not x17367))
+:assumption (or x18294 x6925)
+:assumption (or (not x8243) x18859)
+:assumption (or (not x7352) (not x1820))
+:assumption (or (not x20045) (not x18510))
+:assumption (or (not x30120) x19992 x26159 (not x27767))
+:assumption (or (not x16558) x21054)
+:assumption (or x3552 (not x23244))
+:assumption (or x27359 (not x19047) x13956)
+:assumption (or x21302 x30720)
+:assumption (or (not x11273) x5383)
+:assumption (or (not x6245) (not x9000) x26015 (not x30559) (not x23055))
+:assumption (or x14427 x10635)
+:assumption (or (not x26716) (not x16354))
+:assumption (or (not x23304) x25659 x1856)
+:assumption (or x10101 x17439 x15110)
+:assumption (or (not x7710) (not x5108))
+:assumption (or x11427 x25701)
+:assumption (or x14610 (not x1582))
+:assumption (or x19874 x21190)
+:assumption (or (not x25016) (not x9504) x19196)
+:assumption (or x22428 x25272)
+:assumption (or (not x8953) (not x7898))
+:assumption (or (not x16987) x24867)
+:assumption (or x21202 (not x6403))
+:assumption (or x13065 (not x1403))
+:assumption (or (not x6679) x12076)
+:assumption (or (not x14677) (not x30631))
+:assumption (or x27003 x30079 (not x6669) x26939)
+:assumption (or x18243 x8094)
+:assumption (or x12013 (not x7328))
+:assumption (or x11232 (not x31326) (not x2500) x31734)
+:assumption (or x29953 (not x24541))
+:assumption (or x10164 x10092 (not x26399) (not x22164) (not x7287) (not x13160) (not x27273) (not x20440))
+:assumption (or x14113 x4213 x10307)
+:assumption (or (not x26824) (not x21533))
+:assumption (or x23399 (not x15386))
+:assumption (or (not x31825) (not x3308))
+:assumption (or x22347 x512)
+:assumption (or x6423 (not x22761))
+:assumption (or (not x27233) (not x8026) x4294 x10653)
+:assumption (or x805 (not x27745))
+:assumption (or (not x4791) x26795)
+:assumption (or x28365 (not x5792))
+:assumption (or (not x10804) (not x27891))
+:assumption (or (not x12029) (not x20596))
+:assumption (or (not x13514) x16946)
+:assumption (or (not x21502) (not x659) (not x13956) x16426)
+:assumption (or x885 (not x18069))
+:assumption (or (not x29515) x27124)
+:assumption (or x6981 x10554)
+:assumption (or x9264 (not x18140))
+:assumption (or (not x9450) x25015)
+:assumption (or (not x12693) (not x8393))
+:assumption (or x11416 x29871)
+:assumption (or x18572 (not x13811))
+:assumption (or (not x20339) x16703)
+:assumption (or (not x30581) x20235)
+:assumption (or x30359 (not x8919))
+:assumption (or x11829 (not x24879))
+:assumption (or x6890 x22141)
+:assumption (or (not x23399) (not x10840))
+:assumption (or x11120 (not x27979))
+:assumption (or x19386 (not x18103) (not x27394))
+:assumption (or (not x10550) (not x7278))
+:assumption (or (not x2404) x872 (not x16374))
+:assumption (or (not x27079) x3838)
+:assumption (or x19135 (not x302) (not x28712) (not x24110) x3516 x5536)
+:assumption (or (not x15127) (not x20595))
+:assumption (or (not x3543) x12736)
+:assumption (or x2723 (not x8665))
+:assumption (or (not x15415) x16741)
+:assumption (or (not x3777) (not x1426))
+:assumption (or (not x21852) (not x11815))
+:assumption (or x8180 (not x29351))
+:assumption (or (not x29407) x24443)
+:assumption (or x2420 (not x25565) x8426 (not x6184) x25175 x8002)
+:assumption (or x15161 x31245)
+:assumption (or x21298 x28353)
+:assumption (or x9782 x11703)
+:assumption (or (not x1078) x912)
+:assumption (or x19567 x23132)
+:assumption (or (not x22053) x198)
+:assumption (or x21408 (not x14673))
+:assumption (or (not x27600) (not x26897) x10909)
+:assumption (or (not x20322) x829)
+:assumption (or (not x4474) x10817)
+:assumption (or (not x27513) x3409)
+:assumption (or (not x24377) (not x9835) (not x4315) (not x31786) (not x12773) x6028 x17302)
+:assumption (or (not x14700) x22441)
+:assumption (or x18536 (not x14112))
+:assumption (or x7177 x28798)
+:assumption (or (not x20473) (not x9168))
+:assumption (or (not x15858) x27038)
+:assumption (or x17359 (not x7916) (not x9639))
+:assumption (or x1096 (not x1510))
+:assumption (or x27357 (not x16068))
+:assumption (or (not x7209) (not x2807))
+:assumption (or x9375 (not x7028) x8044 (not x7404) x10433 x31552)
+:assumption (or x17866 (not x416))
+:assumption (or x17804 (not x16520))
+:assumption (or x9740 x18346)
+:assumption (or x30853 (not x9025) x16374)
+:assumption (or (not x23724) x9874)
+:assumption (or (not x18420) x5895 x18910 (not x6629))
+:assumption (or (not x9813) (not x23918))
+:assumption (or x21146 (not x20115))
+:assumption (or x29603 x25421)
+:assumption (or x5070 (not x13600))
+:assumption (or x22673 x948)
+:assumption (or x23886 (not x23020))
+:assumption (or (not x22267) (not x10918))
+:assumption (or (not x2830) x16849 x19121 x18931)
+:assumption (or x26435 (not x28318))
+:assumption (or (not x13646) (not x21629))
+:assumption (or (not x23060) x17413)
+:assumption (or (not x21893) x14206)
+:assumption (or x28704 x2601)
+:assumption (or (not x1393) x28371)
+:assumption (or (not x24320) x9999)
+:assumption (or (not x12315) x24523)
+:assumption (or (not x7846) (not x2443))
+:assumption (or (not x2808) (not x4054))
+:assumption (or (not x17290) x31892)
+:assumption (or (not x17171) x2177)
+:assumption (or (not x29834) x10119)
+:assumption (or x14518 (not x17480))
+:assumption (or x8032 (not x14591))
+:assumption (or x4878 (not x2251))
+:assumption (or x1053 (not x19904))
+:assumption (or (not x2699) x26318)
+:assumption (or (not x1317) (not x28158))
+:assumption (or x9807 (not x14351))
+:assumption (or (not x12242) x23434)
+:assumption (or x10582 (not x3871) (not x20860) x26494)
+:assumption (or (not x14722) x28768)
+:assumption (or x26539 x7776)
+:assumption (or x19013 (not x20921))
+:assumption (or (not x20061) (not x14297) x31162 (not x11386) (not x31765) x133 (not x18077))
+:assumption (or (not x23244) (not x26517) (not x24224) (not x11253) x31485 (not x31206))
+:assumption (or (not x13510) (not x27104))
+:assumption (or (not x30113) (not x11983))
+:assumption (or x30138 (not x16760))
+:assumption (or x23712 (not x6118))
+:assumption (or (not x27308) x26553)
+:assumption (or (not x6618) (not x29855))
+:assumption (or (not x6236) (not x10147))
+:assumption (or (not x29564) x27769)
+:assumption (or x30780 x22938)
+:assumption (or x8216 x4259)
+:assumption (or x20916 (not x17033))
+:assumption (or x3676 x23936)
+:assumption (or (not x19500) (not x19864) x18557 (not x20016) (not x10648) (not x1455) x10123 (not x3134))
+:assumption (or x29154 x13919)
+:assumption (or (not x25054) x3277)
+:assumption (or x3103 x16204)
+:assumption (or (not x12527) (not x11653))
+:assumption (or (not x8287) (not x26950))
+:assumption (or x14461 x25641)
+:assumption (or (not x25713) x15640)
+:assumption (or (not x26437) (not x3052))
+:assumption (or (not x19483) (not x826) x20030)
+:assumption (or (not x20131) x30110)
+:assumption (or x28928 x12570)
+:assumption (or x11816 (not x9401))
+:assumption (or (not x1276) x9531 (not x20757) (not x10332))
+:assumption (or x15525 (not x27575))
+:assumption (or (not x11050) (not x31387) x4948)
+:assumption (or (not x18761) x11332)
+:assumption (or x155 x12888)
+:assumption (or x13058 (not x19992))
+:assumption (or x10379 (not x5675))
+:assumption (or x10990 (not x25670))
+:assumption (or x31034 x9531)
+:assumption (or (not x31794) (not x15108))
+:assumption (or (not x1541) (not x28665))
+:assumption (or (not x6610) (not x3491))
+:assumption (or (not x26437) x25379)
+:assumption (or x15393 (not x23775))
+:assumption (or x26285 x19183 x17784)
+:assumption (or x25421 (not x11749))
+:assumption (or x23474 (not x8500))
+:assumption (or (not x21704) x9449)
+:assumption (or (not x23206) (not x14097))
+:assumption (or x2075 x7394 (not x16510) (not x23716) x17560 x14554)
+:assumption (or (not x25632) x3125)
+:assumption (or x3415 x31566)
+:assumption (or x31134 (not x19067))
+:assumption (or (not x21024) x18353)
+:assumption (or (not x11204) x30130 x9847 (not x12435) x13623 (not x8819) (not x15593))
+:assumption (or x17239 x28981)
+:assumption (or (not x12141) (not x25647))
+:assumption (or (not x29030) (not x18566))
+:assumption (or x19992 x25926)
+:assumption (or (not x21000) (not x6228))
+:assumption (or (not x809) (not x20796))
+:assumption (or (not x15485) x21207)
+:assumption (or x20651 x3438)
+:assumption (or (not x18401) (not x31739))
+:assumption (or x22287 (not x22320))
+:assumption (or x5401 (not x1822))
+:assumption (or (not x20286) (not x13993))
+:assumption (or x8002 (not x17930) x13956 (not x18881) x23244 x26810)
+:assumption (or x12200 x11861)
+:assumption (or (not x13450) x8953)
+:assumption (or (not x24079) (not x10249))
+:assumption (or x6058 (not x31036))
+:assumption (or x24756 x27891 x10804)
+:assumption (or (not x5979) (not x11489) x9933 (not x29249) (not x5320) x15600)
+:assumption (or x13956 x5024)
+:assumption (or x22368 (not x14484))
+:assumption (or (not x25874) x13956 (not x22295))
+:assumption (or (not x918) x19992 x21403 (not x18859) (not x28342))
+:assumption (or x28032 (not x8120))
+:assumption (or x9480 (not x6243))
+:assumption (or x27120 x9715)
+:assumption (or x202 x3504 (not x3001))
+:assumption (or (not x30304) (not x17740))
+:assumption (or (not x3463) x8002 x3347 x23244)
+:assumption (or x4415 x11770)
+:assumption (or (not x10064) x8327)
+:assumption (or (not x1108) (not x8002))
+:assumption (or (not x21564) (not x9008))
+:assumption (or (not x5352) x15723)
+:assumption (or x19442 (not x16802))
+:assumption (or x16713 x1182 (not x9318))
+:assumption (or x24079 x7119 (not x10064) x8654 (not x12056) (not x29592))
+:assumption (or (not x7828) x4182)
+:assumption (or (not x26897) (not x23526))
+:assumption (or (not x18875) x10530)
+:assumption (or x24256 x11561)
+:assumption (or x19494 (not x16193))
+:assumption (or (not x20949) x16177 (not x1487) x6710 (not x12045))
+:assumption (or x1501 x30961)
+:assumption (or x14669 x5528)
+:assumption (or x28316 x21699)
+:assumption (or (not x16406) (not x8898))
+:assumption (or (not x26456) (not x16374) x29687)
+:assumption (or (not x15194) (not x17351))
+:assumption (or x8458 x15941)
+:assumption (or x6161 (not x22888))
+:assumption (or x92 (not x24282) x24399 (not x188) x25841 x18790 x25723)
+:assumption (or (not x9439) (not x14415) (not x14166))
+:assumption (or x1800 x2810)
+:assumption (or (not x27336) (not x8099))
+:assumption (or (not x24912) x209 x20538 (not x16961) (not x18739) (not x2133))
+:assumption (or (not x25178) x7351 (not x28495))
+:assumption (or x21955 (not x26457))
+:assumption (or x4491 x9469)
+:assumption (or (not x27298) (not x1901) x11374)
+:assumption (or (not x13936) (not x2432))
+:assumption (or x10144 (not x5945))
+:assumption (or (not x19604) (not x19029))
+:assumption (or x21092 (not x8002))
+:assumption (or x24320 x9655)
+:assumption (or (not x28533) x31851)
+:assumption (or x13810 x23879)
+:assumption (or (not x748) (not x27694))
+:assumption (or x27144 (not x9008))
+:assumption (or (not x15227) (not x14372))
+:assumption (or (not x28995) (not x14796))
+:assumption (or x26429 (not x4742))
+:assumption (or x1027 (not x11879))
+:assumption (or x24722 (not x8555))
+:assumption (or x3508 x8991)
+:assumption (or x6740 (not x15147))
+:assumption (or (not x29238) x14288)
+:assumption (or x17488 x17628 (not x8229))
+:assumption (or (not x3698) (not x20274) (not x5748) (not x2007) x7264)
+:assumption (or (not x24775) x13523)
+:assumption (or (not x24217) (not x4052))
+:assumption (or x16345 (not x21837))
+:assumption (or (not x8658) x24462)
+:assumption (or (not x29314) x9008)
+:assumption (or x23985 x17413)
+:assumption (or (not x27038) x3482 (not x28843))
+:assumption (or (not x20276) (not x16901) (not x4197) (not x5564))
+:assumption (or (not x9008) x1042 (not x4429) x31581 (not x5528))
+:assumption (or x7881 x12765)
+:assumption (or x16149 (not x18379))
+:assumption (or (not x18890) x15158)
+:assumption (or (not x25437) (not x7573))
+:assumption (or x15053 (not x26063))
+:assumption (or x28049 (not x26935))
+:assumption (or x288 (not x12688) (not x7103) (not x28685) (not x6152) (not x19817) (not x22254) x8930)
+:assumption (or (not x29032) x18594)
+:assumption (or x14306 x9215)
+:assumption (or x18823 (not x17271))
+:assumption (or x27854 x24594)
+:assumption (or (not x21601) x11626)
+:assumption (or x9491 x23579)
+:assumption (or x5896 x13836)
+:assumption (or (not x13806) (not x6754) x3782 x29442)
+:assumption (or (not x7834) (not x13536))
+:assumption (or (not x1549) (not x4606))
+:assumption (or (not x964) (not x16739))
+:assumption (or (not x26485) (not x8362))
+:assumption (or x14107 (not x245))
+:assumption (or x17444 x5134)
+:assumption (or (not x17534) (not x17217))
+:assumption (or x13978 (not x4150))
+:assumption (or x18681 x8490)
+:assumption (or (not x145) x24756 (not x2692))
+:assumption (or x28647 (not x23309))
+:assumption (or (not x29070) (not x19199))
+:assumption (or (not x19184) (not x9767))
+:assumption (or x6664 x22930)
+:assumption (or x19541 x18246 (not x26906) (not x4879) (not x27662) x12326 x13131)
+:assumption (or (not x6432) x7010)
+:assumption (or (not x19748) (not x16379))
+:assumption (or (not x9757) x9621)
+:assumption (or x23409 (not x21988))
+:assumption (or x6865 (not x9797))
+:assumption (or (not x19596) (not x25667) (not x11281))
+:assumption (or x20548 (not x20676))
+:assumption (or (not x23678) (not x16604) (not x20083))
+:assumption (or x30923 x4872)
+:assumption (or x7128 x24329)
+:assumption (or (not x23244) x1915)
+:assumption (or (not x15422) (not x9911))
+:assumption (or x13951 (not x23958))
+:assumption (or x9008 x2745)
+:assumption (or (not x3601) (not x762))
+:assumption (or x269 x13309)
+:assumption (or (not x13877) (not x4397))
+:assumption (or x2928 x10760)
+:assumption (or x31119 x4440 (not x548))
+:assumption (or x26061 x26365)
+:assumption (or x6804 (not x4269) (not x8002))
+:assumption (or (not x12814) (not x7312))
+:assumption (or (not x8850) x12064)
+:assumption (or x28042 (not x23299))
+:assumption (or (not x16879) (not x13755))
+:assumption (or x1229 (not x23320) (not x6776) (not x23399) x15307 (not x25152))
+:assumption (or x6305 x10993)
+:assumption (or (not x28938) x827)
+:assumption (or (not x17121) (not x14985))
+:assumption (or x5009 x13221)
+:assumption (or (not x30208) (not x30826))
+:assumption (or x270 (not x27311))
+:assumption (or (not x24169) (not x17627) x27517 (not x20782))
+:assumption (or x7236 (not x19753))
+:assumption (or (not x10681) (not x13903))
+:assumption (or (not x77) x4371)
+:assumption (or x19093 x23170)
+:assumption (or x17027 (not x1173))
+:assumption (or (not x9101) (not x4422))
+:assumption (or (not x20079) (not x28328))
+:assumption (or x30208 (not x31199) (not x16003) (not x9713))
+:assumption (or x14110 x19236)
+:assumption (or (not x488) (not x24054))
+:assumption (or (not x5387) x6713)
+:assumption (or x16304 x2670)
+:assumption (or x23657 (not x9008))
+:assumption (or x12628 x21449 (not x24919) (not x11411) x12537 (not x10313) (not x5118) x8759)
+:assumption (or (not x7337) (not x24153))
+:assumption (or x2385 x23386 x22018)
+:assumption (or x10909 x8887)
+:assumption (or (not x399) x22177)
+:assumption (or x2037 x29017 x3560)
+:assumption (or (not x16388) x5607)
+:assumption (or x794 (not x20486) (not x18330) (not x23958))
+:assumption (or x28989 (not x13503))
+:assumption (or (not x10561) x29912)
+:assumption (or x1539 (not x11307) (not x2048))
+:assumption (or (not x25394) x10685)
+:assumption (or (not x31913) x30475)
+:assumption (or (not x16360) (not x25))
+:assumption (or (not x3875) (not x7104))
+:assumption (or x29863 (not x8002))
+:assumption (or x30412 x985)
+:assumption (or (not x29448) (not x1045))
+:assumption (or (not x13468) (not x10643))
+:assumption (or (not x10731) x11484 x10598)
+:assumption (or (not x28507) x7854)
+:assumption (or (not x24761) x30887 (not x17687))
+:assumption (or x12923 (not x26522))
+:assumption (or (not x29519) (not x7516))
+:assumption (or (not x8002) (not x6638))
+:assumption (or x22210 (not x848))
+:assumption (or x31829 x28541 (not x14621) (not x31099))
+:assumption (or (not x15621) x14629)
+:assumption (or (not x7215) x19461 (not x25376) x13407)
+:assumption (or x23279 (not x30110) x26219)
+:assumption (or (not x2183) x2437)
+:assumption (or x5846 (not x24027))
+:assumption (or (not x10696) (not x6133) (not x23531) (not x13544))
+:assumption (or (not x9241) (not x18602))
+:assumption (or (not x19196) x9504)
+:assumption (or x18620 x6242)
+:assumption (or (not x171) x8919 x3001 (not x4146) (not x202) (not x18594))
+:assumption (or x26897 (not x20545))
+:assumption (or (not x21379) (not x252))
+:assumption (or (not x22549) (not x28724))
+:assumption (or x503 (not x169))
+:assumption (or x2332 (not x15537))
+:assumption (or (not x5528) x3516 x26284 x7747 (not x9008))
+:assumption (or (not x19861) (not x28890) (not x21519) x25715 x938 x23994)
+:assumption (or x3061 x30445)
+:assumption (or (not x667) x27072)
+:assumption (or x11870 (not x28541))
+:assumption (or x12948 x23346)
+:assumption (or x31771 x31856)
+:assumption (or (not x7468) x15125)
+:assumption (or x7426 x28328 (not x12663) x3063)
+:assumption (or (not x21534) x10478)
+:assumption (or x28750 x16561)
+:assumption (or (not x12335) x20953)
+:assumption (or (not x28856) x24722)
+:assumption (or x659 (not x27209))
+:assumption (or (not x29338) x12514)
+:assumption (or (not x4970) x16705)
+:assumption (or (not x12206) x16215 (not x9355) x18293 (not x7631) (not x25500) x16953 (not x10970) x20484)
+:assumption (or (not x11571) x14483)
+:assumption (or x28810 (not x18289))
+:assumption (or x21770 x23413)
+:assumption (or (not x17345) (not x15556))
+:assumption (or (not x8707) x15447)
+:assumption (or (not x23902) (not x20375))
+:assumption (or x13918 (not x14492))
+:assumption (or x20015 (not x22809))
+:assumption (or x17351 x21030)
+:assumption (or x23508 (not x3155))
+:assumption (or x15761 (not x29446))
+:assumption (or x27584 x16977)
+:assumption (or x23244 x2964)
+:assumption (or x17567 x7766)
+:assumption (or x15869 (not x12057) (not x5636) x27562 x14624 (not x12494) x28472 x3882)
+:assumption (or x23562 x21916)
+:assumption (or (not x19718) x3775 (not x18093))
+:assumption (or x21799 x3343)
+:assumption (or x23179 (not x21815))
+:assumption (or x18526 (not x218))
+:assumption (or (not x24304) x28887)
+:assumption (or (not x20949) x16025 (not x9822))
+:assumption (or x26342 x19455)
+:assumption (or x31202 x29831)
+:assumption (or (not x7711) (not x6502))
+:assumption (or x25218 (not x21713))
+:assumption (or (not x11153) x29741 (not x15868) (not x9423))
+:assumption (or x5993 (not x21450) x13381 (not x27732) x16981)
+:assumption (or (not x4175) x30411)
+:assumption (or x24506 (not x17560))
+:assumption (or (not x28239) (not x31714))
+:assumption (or (not x25659) (not x27112))
+:assumption (or (not x13234) x5279 (not x14591))
+:assumption (or (not x1442) x27866)
+:assumption (or x10783 x11787)
+:assumption (or x16593 x20247)
+:assumption (or x26771 (not x21833))
+:assumption (or (not x5541) (not x3979))
+:assumption (or (not x23841) x6902)
+:assumption (or x18602 x4016)
+:assumption (or (not x15921) (not x8480))
+:assumption (or (not x22075) (not x17286))
+:assumption (or (not x29852) (not x28359))
+:assumption (or x10611 (not x19717))
+:assumption (or (not x20469) x28163)
+:assumption (or x7775 x24123 (not x31777) x6366 x5093 (not x14367))
+:assumption (or x2159 (not x1580) x18042)
+:assumption (or x6374 (not x18011))
+:assumption (or (not x23243) x21653 x30938)
+:assumption (or x31860 (not x25766))
+:assumption (or (not x14395) x2147)
+:assumption (or (not x23324) x26026 x26886 x12935 (not x22845) (not x11581))
+:assumption (or (not x21600) x8002 (not x20418))
+:assumption (or x25659 x27796 (not x17967))
+:assumption (or x9848 x28708)
+:assumption (or x30954 x21247)
+:assumption (or (not x13735) x14112)
+:assumption (or (not x8754) (not x5135))
+:assumption (or x4695 (not x9554))
+:assumption (or x25385 x22777)
+:assumption (or x1393 (not x27337))
+:assumption (or x827 (not x27386))
+:assumption (or x23475 (not x13813))
+:assumption (or x1340 (not x12204))
+:assumption (or (not x27825) (not x29587))
+:assumption (or (not x31346) x11041)
+:assumption (or (not x19249) (not x12752))
+:assumption (or x19725 x11802)
+:assumption (or (not x27512) (not x5))
+:assumption (or x23873 (not x16544) x176 (not x26546) (not x5332))
+:assumption (or x10382 x24242)
+:assumption (or (not x26627) (not x16745))
+:assumption (or (not x23515) x16894)
+:assumption (or x12726 (not x1458) x6653)
+:assumption (or (not x8485) x16764)
+:assumption (or (not x1105) (not x9290))
+:assumption (or (not x25354) (not x27020) x1224 (not x27913) x9977 x4652)
+:assumption (or x14839 x14299 x1055 x510)
+:assumption (or x18003 (not x12796))
+:assumption (or x15916 (not x25519))
+:assumption (or x15659 x20633 (not x12806))
+:assumption (or (not x10874) x6307 (not x6381) (not x3236) x15977 x13795 (not x24024) (not x15477))
+:assumption (or x3977 x26556)
+:assumption (or (not x4417) (not x29214))
+:assumption (or x13121 (not x7099))
+:assumption (or (not x19840) x11196)
+:assumption (or (not x24286) (not x27295))
+:assumption (or (not x16210) x13956)
+:assumption (or x20477 x19144)
+:assumption (or (not x18500) (not x9008) x26867 (not x5528) x25008)
+:assumption (or (not x4254) x898 x11332 (not x11506))
+:assumption (or (not x2514) x10572)
+:assumption (or x15653 (not x18451))
+:assumption (or (not x26627) x30928)
+:assumption (or (not x29441) x25183)
+:assumption (or x13291 x10534)
+:assumption (or x142 x2015 (not x25836))
+:assumption (or (not x5664) x2311)
+:assumption (or x7331 x29186)
+:assumption (or x23933 (not x16683))
+:assumption (or x12661 x22302)
+:assumption (or x8060 x6589 x25596 (not x8532))
+:assumption (or x26984 x29768)
+:assumption (or x8002 (not x31192))
+:assumption (or x28554 x6720)
+:assumption (or x24082 x24108)
+:assumption (or (not x30098) x26486)
+:assumption (or x11356 (not x15742))
+:assumption (or (not x4745) x17745)
+:assumption (or x8519 (not x6307))
+:assumption (or x24117 (not x10289))
+:assumption (or x2486 (not x7266))
+:assumption (or (not x7722) (not x2498))
+:assumption (or x16214 x18293)
+:assumption (or x18720 (not x6949))
+:assumption (or x11834 (not x2386))
+:assumption (or x23811 (not x26233))
+:assumption (or (not x13072) x8898)
+:assumption (or x12396 (not x17310))
+:assumption (or (not x29401) (not x28506))
+:assumption (or x8002 (not x27756) (not x23451) x15434 x8518 (not x27035))
+:assumption (or (not x5675) (not x25170))
+:assumption (or x19895 x21815)
+:assumption (or x26686 x28412)
+:assumption (or x22136 x12441)
+:assumption (or x12242 (not x29282))
+:assumption (or x31242 x14816)
+:assumption (or (not x16145) x2811)
+:assumption (or x22350 (not x9684))
+:assumption (or x8437 x6692)
+:assumption (or x8390 (not x29271) x12845 (not x19782))
+:assumption (or (not x29302) x9008)
+:assumption (or x20846 x15685)
+:assumption (or x5072 x10862)
+:assumption (or x17520 x5436)
+:assumption (or x6883 x8250)
+:assumption (or x12945 (not x6504))
+:assumption (or (not x3736) x21196)
+:assumption (or x14592 (not x28033) (not x21202) x17161)
+:assumption (or x23169 x21733)
+:assumption (or (not x19454) (not x31290))
+:assumption (or (not x23027) (not x9973) x27955 (not x27294) (not x26128))
+:assumption (or (not x8566) (not x28242))
+:assumption (or (not x8002) (not x15073))
+:assumption (or x31287 (not x5967))
+:assumption (or (not x22022) (not x26315))
+:assumption (or (not x24362) x499)
+:assumption (or (not x20553) (not x7177))
+:assumption (or x6383 (not x4088))
+:assumption (or x3801 (not x30684))
+:assumption (or (not x31495) (not x24722))
+:assumption (or (not x4948) x11050)
+:assumption (or x15331 x8996)
+:assumption (or (not x22874) x24421)
+:assumption (or (not x2959) x6149)
+:assumption (or x17785 (not x8002))
+:assumption (or (not x4528) (not x6593))
+:assumption (or x8932 x5602)
+:assumption (or x29272 (not x6564))
+:assumption (or (not x11965) (not x13956))
+:assumption (or x29387 (not x26937))
+:assumption (or x28836 x19294)
+:assumption (or (not x13028) (not x8494))
+:assumption (or x29210 x4213)
+:assumption (or (not x3382) x20803)
+:assumption (or (not x9122) x30723)
+:assumption (or (not x20780) (not x12614))
+:assumption (or (not x18041) (not x28852))
+:assumption (or (not x24509) x18759)
+:assumption (or x27954 x5394 x15244 (not x762))
+:assumption (or (not x15705) x9153 x10621 x12889 (not x15035))
+:assumption (or x11711 (not x18925))
+:assumption (or x2349 (not x28193))
+:assumption (or x12524 (not x29582))
+:assumption (or (not x2482) x21861)
+:assumption (or (not x25402) (not x31385))
+:assumption (or x17749 (not x4481))
+:assumption (or (not x3359) x2738)
+:assumption (or (not x1411) x8421 x9131)
+:assumption (or x31516 (not x10558) (not x2303))
+:assumption (or x25141 x20060)
+:assumption (or (not x29343) x9054)
+:assumption (or (not x18379) (not x31690))
+:assumption (or (not x6510) (not x27986))
+:assumption (or x11066 x2011 (not x24708) (not x10513) (not x29442))
+:assumption (or (not x30101) x31741)
+:assumption (or x9919 x1810)
+:assumption (or (not x16907) x31373)
+:assumption (or x22604 (not x15568))
+:assumption (or (not x26658) x20888)
+:assumption (or (not x31814) (not x12614))
+:assumption (or (not x13440) x3024)
+:assumption (or (not x4433) x9717)
+:assumption (or (not x19952) x15799 (not x24443) (not x17710) (not x26971) x5876)
+:assumption (or (not x13213) x8682)
+:assumption (or x1582 x24360)
+:assumption (or x20540 (not x4228))
+:assumption (or x26372 (not x9008))
+:assumption (or x3733 x30197)
+:assumption (or (not x14003) x14268)
+:assumption (or x13126 x9215)
+:assumption (or x1106 x16737)
+:assumption (or (not x21438) x8128)
+:assumption (or x25207 x5613)
+:assumption (or (not x30002) x11746 (not x15835) (not x31035) x14864 x30821 (not x18721))
+:assumption (or (not x3131) (not x7891))
+:assumption (or (not x31829) x13127)
+:assumption (or x27465 x18832)
+:assumption (or x11619 x20199)
+:assumption (or (not x20306) x18067)
+:assumption (or (not x17359) (not x15239))
+:assumption (or (not x12469) (not x2096))
+:assumption (or (not x7835) (not x19718) (not x27428))
+:assumption (or (not x30215) (not x29318))
+:assumption (or x24023 (not x22160))
+:assumption (or x24205 (not x27355))
+:assumption (or (not x26432) x540)
+:assumption (or (not x5946) x2277)
+:assumption (or (not x24899) x26414)
+:assumption (or x22855 x27874)
+:assumption (or x27874 (not x234))
+:assumption (or x13848 x19786 (not x6249))
+:assumption (or (not x11692) x9189)
+:assumption (or (not x4381) x1393 x21622)
+:assumption (or x21298 (not x22249))
+:assumption (or x16079 x1594)
+:assumption (or x14798 x13554 x12002 (not x8508) (not x21104) x11736 x3613 x11643 x19803 x20392 x10438 x19227)
+:assumption (or x12826 (not x26856))
+:assumption (or (not x27244) (not x26078))
+:assumption (or (not x3744) x11281)
+:assumption (or x8532 (not x18818))
+:assumption (or (not x24045) x29606)
+:assumption (or (not x7063) (not x28824))
+:assumption (or x5585 x2788)
+:assumption (or x10739 (not x25383))
+:assumption (or x21815 (not x23910))
+:assumption (or x12811 x12898)
+:assumption (or (not x27359) (not x15635))
+:assumption (or (not x30954) (not x26514) (not x19428))
+:assumption (or x23509 x7774)
+:assumption (or (not x22308) (not x15849) x26287 x7416)
+:assumption (or (not x17330) x4013)
+:assumption (or (not x8002) (not x12693))
+:assumption (or (not x18281) (not x23691))
+:assumption (or (not x22972) (not x3538))
+:assumption (or (not x23220) x29918 (not x13576) (not x6951))
+:assumption (or (not x8987) (not x28783))
+:assumption (or x15609 (not x26830))
+:assumption (or (not x13376) (not x26386))
+:assumption (or (not x2963) (not x22036))
+:assumption (or (not x10707) x30751)
+:assumption (or (not x31544) x1043 x4969)
+:assumption (or x12793 x27124)
+:assumption (or (not x6969) (not x8697) (not x5543))
+:assumption (or x25248 (not x9008))
+:assumption (or x3608 (not x18962) x26724 (not x16247))
+:assumption (or x24801 x19466)
+:assumption (or x23252 x23244)
+:assumption (or (not x6334) x15703)
+:assumption (or x19360 (not x18769))
+:assumption (or x16374 (not x872))
+:assumption (or x8930 (not x30819))
+:assumption (or x14114 x1393 x15229 x8862 x13850 (not x11107) x19581 (not x8288))
+:assumption (or (not x9128) (not x23279))
+:assumption (or x22931 x7460)
+:assumption (or x3995 x10927)
+:assumption (or (not x30914) (not x25484) (not x30704) (not x9008) (not x5528))
+:assumption (or x8031 x21026)
+:assumption (or (not x16509) x7610)
+:assumption (or (not x28732) (not x18445))
+:assumption (or (not x20807) (not x4391))
+:assumption (or (not x19985) x14886)
+:assumption (or (not x28299) (not x4127))
+:assumption (or x18906 x18208)
+:assumption (or (not x13621) x12783)
+:assumption (or x19550 x26280)
+:assumption (or (not x1790) x3511)
+:assumption (or x14360 (not x11343))
+:assumption (or (not x22171) (not x2481))
+:assumption (or x23187 x11078)
+:assumption (or x25716 x4772)
+:assumption (or x5807 x2858)
+:assumption (or x1031 x25076)
+:assumption (or (not x9008) (not x12777))
+:assumption (or (not x19922) x653)
+:assumption (or x18859 x3568 x2021)
+:assumption (or (not x4875) x14135)
+:assumption (or (not x4378) x11040 x21298 (not x7230))
+:assumption (or (not x19428) (not x28020))
+:assumption (or (not x19278) x31114)
+:assumption (or x21815 (not x26823) x17375)
+:assumption (or x16559 (not x18042) x27692 (not x8237) (not x15256))
+:assumption (or x3942 (not x9008))
+:assumption (or (not x19934) x10703 (not x4675) x27643)
+:assumption (or (not x9990) x27549)
+:assumption (or x28458 (not x18929))
+:assumption (or (not x5528) (not x8000))
+:assumption (or x9008 (not x16553) x5820 x6467 (not x23753) x22501)
+:assumption (or x7016 x24300 (not x1104))
+:assumption (or x26670 x26821)
+:assumption (or (not x8461) x12182)
+:assumption (or (not x25562) x6775)
+:assumption (or (not x2955) (not x27904))
+:assumption (or (not x22553) (not x11973))
+:assumption (or (not x20746) (not x21815) x755)
+:assumption (or (not x3094) x10007)
+:assumption (or x19877 (not x8776))
+:assumption (or x29430 x20841)
+:assumption (or x1951 (not x31718))
+:assumption (or x15795 (not x10524))
+:assumption (or x22438 (not x24366) x7530 (not x972) (not x7494))
+:assumption (or x20875 x17883)
+:assumption (or (not x23519) x9008)
+:assumption (or (not x22283) (not x20182))
+:assumption (or (not x462) (not x19612))
+:assumption (or (not x31152) x8541)
+:assumption (or x18061 x22827)
+:assumption (or x26815 (not x29509))
+:assumption (or (not x28185) (not x27397))
+:assumption (or x31579 x18063)
+:assumption (or x11360 x6307)
+:assumption (or (not x12372) x26119)
+:assumption (or (not x14269) (not x12939))
+:assumption (or (not x15745) (not x31701) (not x29904))
+:assumption (or x117 x16870)
+:assumption (or (not x607) x16194)
+:assumption (or x13956 (not x2329))
+:assumption (or x4967 x12849)
+:assumption (or x11267 (not x5528))
+:assumption (or (not x3255) x23229)
+:assumption (or x24157 (not x9458))
+:assumption (or (not x677) x2543)
+:assumption (or (not x18405) x16879)
+:assumption (or (not x10321) (not x15605))
+:assumption (or x24011 x4077)
+:assumption (or x15107 (not x4026) (not x21202) (not x14209))
+:assumption (or x3614 (not x24766))
+:assumption (or x17750 x2117)
+:assumption (or x13411 x2877)
+:assumption (or x3518 x30446)
+:assumption (or x3689 x27284 (not x23578) x14551)
+:assumption (or (not x22411) x12832)
+:assumption (or (not x23251) x21817)
+:assumption (or x10709 (not x25968) x28923)
+:assumption (or x13205 x2678)
+:assumption (or (not x23244) x4520 (not x15158) x30033 x12187 (not x10486))
+:assumption (or x4132 x3405 (not x8711) x4929 (not x20949) (not x9881))
+:assumption (or x14591 x13234)
+:assumption (or (not x17937) x17605)
+:assumption (or (not x1393) (not x24876))
+:assumption (or (not x21653) x31706)
+:assumption (or (not x8247) (not x8315))
+:assumption (or x28071 x28244)
+:assumption (or x19815 x31393)
+:assumption (or (not x13660) x5528 x14259)
+:assumption (or (not x8060) (not x16870))
+:assumption (or x14601 (not x29010))
+:assumption (or x18086 x557)
+:assumption (or (not x20130) x23244 x8002 x24058 (not x20451))
+:assumption (or x12094 (not x22342))
+:assumption (or (not x21653) (not x13526))
+:assumption (or x4461 x20484)
+:assumption (or (not x5148) x23279)
+:assumption (or x8081 x20612)
+:assumption (or (not x18417) x618)
+:assumption (or (not x7728) x7986 x22634 x8549 x14516 x28444 x25275 (not x3090))
+:assumption (or (not x22709) x1747)
+:assumption (or x22526 (not x24395))
+:assumption (or x1478 (not x3097))
+:assumption (or x9398 (not x12842))
+:assumption (or (not x30171) (not x8680))
+:assumption (or x29722 x13203)
+:assumption (or (not x14492) x12407)
+:assumption (or (not x31107) x18643 (not x3586))
+:assumption (or x1279 x13539)
+:assumption (or x28761 (not x1177))
+:assumption (or x9404 (not x28259))
+:assumption (or x11043 x1212)
+:assumption (or (not x20000) (not x27931))
+:assumption (or (not x8265) x7074)
+:assumption (or x6911 (not x24952) (not x3808) (not x30460))
+:assumption (or (not x25366) x31851 (not x23121))
+:assumption (or x30444 (not x9961))
+:assumption (or x21676 x3194)
+:assumption (or (not x30895) (not x9012) x23113 (not x12081) (not x5528) x13283)
+:assumption (or x8398 (not x15598) x19305 (not x23958))
+:assumption (or (not x3670) (not x25294) x3154)
+:assumption (or x10860 (not x19920))
+:assumption (or x21046 x9927)
+:assumption (or (not x827) (not x30047) x12939 (not x4434) x5216 (not x7913) (not x4064) (not x24284))
+:assumption (or (not x29235) x15815)
+:assumption (or x27600 x26897)
+:assumption (or x24654 x8229)
+:assumption (or (not x21123) x16894)
+:assumption (or (not x9008) x57)
+:assumption (or (not x11281) x29666)
+:assumption (or x21779 x10709 (not x3494))
+:assumption (or (not x11915) (not x1507))
+:assumption (or x3418 (not x856))
+:assumption (or x24322 (not x29305))
+:assumption (or (not x7193) (not x6149) x1582 (not x21815) (not x16510))
+:assumption (or x2496 (not x28641))
+:assumption (or (not x23244) x16020)
+:assumption (or (not x11867) (not x25493))
+:assumption (or x10744 (not x21349))
+:assumption (or x23850 x5624)
+:assumption (or x16304 (not x26184))
+:assumption (or x20843 x16304)
+:assumption (or x10198 x9642)
+:assumption (or (not x8987) x31002)
+:assumption (or (not x2517) (not x23092) x31749 (not x14029))
+:assumption (or x1704 x16682)
+:assumption (or x26213 (not x16025) x28511)
+:assumption (or x13861 x31473)
+:assumption (or (not x6663) (not x26057))
+:assumption (or (not x5277) x29069 (not x12936) (not x28785) x15773 x30010 x30198 x14104)
+:assumption (or x14747 x4041)
+:assumption (or x9396 (not x2460))
+:assumption (or (not x6307) (not x31520) (not x3120) x28370 (not x6747))
+:assumption (or x27067 x11916)
+:assumption (or x16644 x18139 x16296 x26806)
+:assumption (or x21278 (not x21815))
+:assumption (or (not x20054) (not x21298))
+:assumption (or x7036 x20128)
+:assumption (or (not x13956) (not x1266) x15799 x22472)
+:assumption (or x6454 (not x13152))
+:assumption (or (not x11967) (not x12682))
+:assumption (or x6449 x9865)
+:assumption (or x23244 (not x383))
+:assumption (or x13457 (not x5335))
+:assumption (or (not x13428) (not x15731))
+:assumption (or x12737 x15332)
+:assumption (or (not x28721) x4748)
+:assumption (or (not x520) x12210)
+:assumption (or x28934 (not x30653))
+:assumption (or (not x6133) (not x31776))
+:assumption (or x16741 (not x7009))
+:assumption (or x30709 (not x9008))
+:assumption (or x13185 (not x202))
+:assumption (or x21298 x12085)
+:assumption (or x30019 (not x1293))
+:assumption (or x26975 x27170)
+:assumption (or x21421 (not x2362))
+:assumption (or (not x18073) (not x19438))
+:assumption (or x8691 (not x6207))
+:assumption (or (not x19020) (not x26777))
+:assumption (or x2791 (not x4702))
+:assumption (or x10748 (not x11144))
+:assumption (or x7892 (not x29927))
+:assumption (or (not x18687) x18101 x12315 (not x3181))
+:assumption (or (not x759) x8002 x19708)
+:assumption (or (not x5444) (not x7233))
+:assumption (or x2965 (not x20193))
+:assumption (or x19096 (not x14552))
+:assumption (or x2334 (not x8993))
+:assumption (or (not x16222) x19948)
+:assumption (or x29629 (not x5558) x25641 x25102 x24309 x20308 (not x4282))
+:assumption (or (not x31221) x6481)
+:assumption (or x23072 x24418)
+:assumption (or (not x11889) x17469)
+:assumption (or (not x21815) x21181 (not x20441))
+:assumption (or x21002 (not x23244))
+:assumption (or (not x26059) x21446)
+:assumption (or x23762 (not x22548))
+:assumption (or x13227 x16473)
+:assumption (or (not x13310) (not x23743))
+:assumption (or x13149 (not x8676))
+:assumption (or (not x4710) (not x6777))
+:assumption (or (not x18582) x10366)
+:assumption (or x8961 x30881)
+:assumption (or (not x4299) x21569)
+:assumption (or (not x1058) x9807)
+:assumption (or x23017 x14697)
+:assumption (or x6700 (not x5359))
+:assumption (or x23287 (not x26311))
+:assumption (or (not x162) x28196 x13614)
+:assumption (or x17342 (not x6459))
+:assumption (or x20251 (not x8002))
+:assumption (or (not x14829) x22793)
+:assumption (or (not x3131) x24082)
+:assumption (or (not x510) (not x20602))
+:assumption (or (not x12797) (not x26011))
+:assumption (or (not x12472) (not x9130))
+:assumption (or x15337 x19266)
+:assumption (or (not x20574) (not x11239))
+:assumption (or (not x484) (not x13189))
+:assumption (or (not x19428) x13204)
+:assumption (or (not x22528) (not x23470))
+:assumption (or x17404 (not x13956))
+:assumption (or x30909 (not x31402))
+:assumption (or (not x27310) x26181)
+:assumption (or (not x9008) (not x9961) x19298 (not x5528) x10448)
+:assumption (or (not x18912) x30954)
+:assumption (or x5670 (not x832))
+:assumption (or (not x5409) x31066)
+:assumption (or (not x20170) x9685)
+:assumption (or x8696 x25048 (not x16398) (not x11417) (not x22096))
+:assumption (or (not x13940) x8033)
+:assumption (or x17636 x25536 x26501 x9011)
+:assumption (or (not x12643) (not x28260) (not x17225) (not x20166))
+:assumption (or x7564 x8213)
+:assumption (or (not x677) (not x6164))
+:assumption (or x20691 (not x4213))
+:assumption (or (not x19411) (not x23234))
+:assumption (or (not x5603) (not x8948))
+:assumption (or (not x30349) x29548)
+:assumption (or (not x15244) (not x16760))
+:assumption (or (not x6329) (not x13775) (not x29841))
+:assumption (or x25099 x3095)
+:assumption (or (not x14839) x9496 (not x3492))
+:assumption (or (not x9365) x13114)
+:assumption (or x437 (not x30833))
+:assumption (or x27194 (not x21451))
+:assumption (or x22435 (not x7481))
+:assumption (or x19489 x25190 (not x2418) (not x30846) x11227)
+:assumption (or (not x7320) x21653)
+:assumption (or (not x9051) (not x17068))
+:assumption (or x27252 (not x17075))
+:assumption (or x25323 x12955)
+:assumption (or x23821 x21298)
+:assumption (or x583 x3177)
+:assumption (or (not x21051) x20937)
+:assumption (or x31173 (not x17360))
+:assumption (or (not x6736) (not x23961) x25363 x7618)
+:assumption (or (not x6155) x26885)
+:assumption (or (not x25388) (not x31591))
+:assumption (or (not x10656) (not x27734))
+:assumption (or (not x11161) (not x2082))
+:assumption (or x6245 (not x10557))
+:assumption (or x2998 x6496)
+:assumption (or (not x23267) x601)
+:assumption (or (not x23326) x24529)
+:assumption (or (not x24075) x19260)
+:assumption (or (not x15110) (not x10101))
+:assumption (or x30929 x28517 x288)
+:assumption (or x13428 (not x112))
+:assumption (or (not x12639) (not x20940))
+:assumption (or (not x292) x11085)
+:assumption (or x21540 (not x28184))
+:assumption (or x24494 x8697)
+:assumption (or x27347 x29975)
+:assumption (or x16807 x19609)
+:assumption (or (not x981) x31134 (not x30027) x29606)
+:assumption (or (not x31829) x6955 x31261 x918)
+:assumption (or x1325 x16003)
+:assumption (or x24756 (not x5838))
+:assumption (or x16304 x30639)
+:assumption (or x11386 (not x29389))
+:assumption (or x58 x28039)
+:assumption (or (not x19445) x16293)
+:assumption (or x10195 x12873)
+:assumption (or x6465 (not x10277))
+:assumption (or (not x26561) (not x25686))
+:assumption (or x17582 (not x4848))
+:assumption (or (not x9359) (not x18368) (not x6361) x667 x23926 (not x10817) (not x16802))
+:assumption (or x18165 x25999 (not x15646))
+:assumption (or x416 x19387 (not x8832) x11862 (not x17866) (not x28668) x27231 (not x29797))
+:assumption (or x31461 x28408)
+:assumption (or (not x13779) x7572)
+:assumption (or x19864 (not x17514) (not x30211))
+:assumption (or (not x29442) (not x22030) x5453)
+:assumption (or x13256 x27508)
+:assumption (or (not x6568) (not x30678))
+:assumption (or x23018 x29649 x28912 (not x29515))
+:assumption (or x31523 x9605 (not x29312))
+:assumption (or x17036 (not x22181))
+:assumption (or x12269 x11583)
+:assumption (or x26651 x24615)
+:assumption (or (not x5867) x14794)
+:assumption (or x1814 x28541)
+:assumption (or (not x14536) (not x25793))
+:assumption (or x11673 (not x10411))
+:assumption (or (not x28942) x23090)
+:assumption (or x14412 x11642)
+:assumption (or (not x28111) x9652 x25659)
+:assumption (or x17595 x6107 x148)
+:assumption (or (not x19906) (not x30990))
+:assumption (or (not x21298) (not x25057) (not x4244))
+:assumption (or x30751 x27874)
+:assumption (or x4962 x10058)
+:assumption (or (not x13041) x18519)
+:assumption (or x24999 x13956)
+:assumption (or (not x24290) (not x18604))
+:assumption (or x6838 x7631)
+:assumption (or (not x1759) (not x29827))
+:assumption (or x15075 (not x7412))
+:assumption (or x12242 x12483)
+:assumption (or x27843 (not x24836))
+:assumption (or (not x20292) x14839 x5857)
+:assumption (or x11518 (not x142))
+:assumption (or (not x13897) (not x16025) x1566)
+:assumption (or x8846 (not x1990))
+:assumption (or (not x18096) (not x7143))
+:assumption (or (not x19010) (not x21060) (not x22855) (not x142))
+:assumption (or x9843 (not x10669))
+:assumption (or (not x1144) x1120)
+:assumption (or x13622 (not x7455) (not x24770))
+:assumption (or x26897 x30138 x20593 x8623)
+:assumption (or x8773 x3498)
+:assumption (or (not x30577) x8326 x1776 x12147)
+:assumption (or (not x22702) x11029)
+:assumption (or (not x12913) x8721)
+:assumption (or (not x11217) (not x4634))
+:assumption (or (not x25676) x27886 (not x14431) x14427 (not x26795) (not x1003) (not x8006))
+:assumption (or (not x21510) (not x8961))
+:assumption (or x14296 x1462)
+:assumption (or x28704 x101)
+:assumption (or (not x11494) x10739)
+:assumption (or x30315 x1491)
+:assumption (or (not x27040) (not x5318))
+:assumption (or x3535 x1425)
+:assumption (or (not x21905) (not x31429))
+:assumption (or x29287 (not x28106))
+:assumption (or x18266 x29334)
+:assumption (or x20000 (not x28493) x22851)
+:assumption (or x17849 x27233)
+:assumption (or x14801 (not x31557))
+:assumption (or x13788 x6529)
+:assumption (or x4504 x25284 (not x12416))
+:assumption (or x20335 x61)
+:assumption (or x6444 x24147)
+:assumption (or (not x21573) (not x29574))
+:assumption (or (not x20949) (not x16136))
+:assumption (or (not x6749) (not x31037))
+:assumption (or x7659 (not x18023))
+:assumption (or x18739 x29047)
+:assumption (or x22725 x7857)
+:assumption (or x27995 x2431 x5573 x9612 x9647)
+:assumption (or (not x22909) x13704)
+:assumption (or x14435 x30651)
+:assumption (or (not x1663) x1035)
+:assumption (or x24794 x19991)
+:assumption (or x698 x9025)
+:assumption (or x13819 x25850)
+:assumption (or (not x9310) (not x1438) (not x8925) x8001)
+:assumption (or x2578 x22559)
+:assumption (or (not x17054) x827)
+:assumption (or (not x25204) (not x24873))
+:assumption (or x614 (not x26897))
+:assumption (or (not x31916) x7611)
+:assumption (or (not x10858) x26262)
+:assumption (or (not x22339) x3434 (not x23182))
+:assumption (or x30828 x6110)
+:assumption (or (not x10259) (not x7080) x9459 x26267 x21696 x26391)
+:assumption (or x8602 (not x21301) x9793)
+:assumption (or (not x5844) (not x5558) (not x22396))
+:assumption (or x9709 x26300)
+:assumption (or x2359 (not x7674))
+:assumption (or x30308 x22070)
+:assumption (or x26508 (not x2431))
+:assumption (or x12923 x27316 (not x8345) (not x11225))
+:assumption (or x11123 x9647)
+:assumption (or (not x24487) x30036)
+:assumption (or (not x28930) (not x23244))
+:assumption (or (not x7384) (not x4162))
+:assumption (or (not x28437) x7374)
+:assumption (or x29861 (not x28516))
+:assumption (or x28687 x3885)
+:assumption (or x22775 (not x24503))
+:assumption (or (not x12433) (not x30139))
+:assumption (or x5207 (not x18502))
+:assumption (or (not x15763) x29276)
+:assumption (or x27978 (not x28793))
+:assumption (or x21810 x26897 (not x24810))
+:assumption (or (not x20176) (not x15112))
+:assumption (or x24773 x27653)
+:assumption (or (not x6074) (not x29783))
+:assumption (or (not x30879) (not x17533))
+:assumption (or (not x29269) (not x31924))
+:assumption (or x31032 x27284 (not x19428))
+:assumption (or (not x1593) (not x7935))
+:assumption (or (not x16123) (not x21927))
+:assumption (or (not x9569) x13968)
+:assumption (or x18740 x21488)
+:assumption (or (not x3660) x22356)
+:assumption (or x28176 x2091 (not x21633) (not x27233))
+:assumption (or (not x2805) (not x23136))
+:assumption (or (not x1455) x13533)
+:assumption (or (not x2674) x13455)
+:assumption (or x1004 (not x1729))
+:assumption (or x30608 x9008)
+:assumption (or (not x9035) x121)
+:assumption (or (not x15405) x25930)
+:assumption (or x28341 (not x2484))
+:assumption (or (not x18304) (not x11455))
+:assumption (or x28948 (not x2790))
+:assumption (or x30545 (not x2803))
+:assumption (or x7959 (not x8295))
+:assumption (or (not x16446) (not x4089))
+:assumption (or x13312 (not x17405))
+:assumption (or (not x17407) (not x1393))
+:assumption (or x5492 (not x13223))
+:assumption (or x11684 x5528 (not x25008))
+:assumption (or x5187 (not x7783))
+:assumption (or (not x142) x7712)
+:assumption (or (not x26827) x27391)
+:assumption (or x13764 x29312)
+:assumption (or (not x19864) x515)
+:assumption (or x30124 x24885)
+:assumption (or (not x23703) (not x9990))
+:assumption (or (not x12567) x2779)
+:assumption (or (not x11755) (not x25236))
+:assumption (or x29729 x11889 (not x17469) (not x11275))
+:assumption (or x12347 x17932)
+:assumption (or x27077 x3034)
+:assumption (or (not x23999) x13151)
+:assumption (or (not x11499) (not x9503) x22331 (not x5422))
+:assumption (or (not x9966) (not x26278))
+:assumption (or (not x5838) (not x18323))
+:assumption (or (not x13749) (not x11234))
+:assumption (or x5753 (not x23435))
+:assumption (or x7956 x11921)
+:assumption (or (not x1893) (not x12215))
+:assumption (or x6015 (not x15042))
+:assumption (or x1646 (not x3812) (not x7173) x19928 (not x26307))
+:assumption (or x8730 x18020)
+:assumption (or x20291 (not x29147))
+:assumption (or (not x18887) (not x10512))
+:assumption (or x5176 x8844)
+:assumption (or (not x26856) (not x27708))
+:assumption (or (not x22855) x994)
+:assumption (or x3468 x658)
+:assumption (or x8236 (not x29499))
+:assumption (or x15302 (not x25200))
+:assumption (or (not x20764) x11506)
+:assumption (or (not x29662) x26663 (not x5394))
+:assumption (or (not x27400) (not x7367))
+:assumption (or x15941 (not x8002) x13599 (not x16809))
+:assumption (or (not x13353) (not x2977))
+:assumption (or x29334 x14967)
+:assumption (or x18279 x6340 (not x16603))
+:assumption (or x30101 (not x25204))
+:assumption (or (not x981) x5610)
+:assumption (or x22008 (not x10608) x26054 (not x16200) (not x13185))
+:assumption (or x23737 (not x20830))
+:assumption (or x15795 x2435)
+:assumption (or (not x8573) (not x18833))
+:assumption (or x24969 (not x24739) (not x5278) (not x10468) x8021)
+:assumption (or x25328 x18109)
+:assumption (or x22406 x12475 (not x8961))
+:assumption (or (not x25355) (not x7641))
+:assumption (or x21298 x5128)
+:assumption (or (not x91) (not x19483))
+:assumption (or (not x16343) x7539)
+:assumption (or (not x18201) x14045)
+:assumption (or x12897 x26894)
+:assumption (or x18834 x546)
+:assumption (or x17405 (not x3782) (not x19001))
+:assumption (or (not x17359) (not x5029))
+:assumption (or (not x24328) x5496)
+:assumption (or (not x5972) x7687)
+:assumption (or (not x17160) (not x22071))
+:assumption (or x1623 x21151)
+:assumption (or (not x9690) (not x2860))
+:assumption (or (not x8002) (not x2805))
+:assumption (or (not x11113) x21776)
+:assumption (or (not x1243) x21432)
+:assumption (or x5025 x5940)
+:assumption (or (not x28912) x13019)
+:assumption (or x7854 (not x3279))
+:assumption (or x17096 x25928)
+:assumption (or (not x9520) x23339)
+:assumption (or (not x450) (not x4643))
+:assumption (or x1857 (not x22670))
+:assumption (or (not x9026) (not x3149))
+:assumption (or (not x18943) (not x15987))
+:assumption (or x19189 x12760)
+:assumption (or x514 x20110)
+:assumption (or x27090 (not x8248))
+:assumption (or (not x22955) (not x24952))
+:assumption (or x8708 x11453)
+:assumption (or (not x3063) x18947 x23279)
+:assumption (or x8846 x635)
+:assumption (or (not x6416) x1545)
+:assumption (or x14752 (not x16354))
+:assumption (or (not x11461) x21667 (not x4310) (not x7003) (not x4204))
+:assumption (or (not x9025) (not x10632) (not x9348))
+:assumption (or (not x2498) (not x23805))
+:assumption (or x5709 (not x6755) (not x23234))
+:assumption (or x918 (not x6834))
+:assumption (or (not x21912) x17166 x14173 (not x31638) (not x14705) (not x16043) (not x14259) x832)
+:assumption (or x10049 (not x17640))
+:assumption (or x25958 x27772)
+:assumption (or x22539 (not x21252))
+:assumption (or (not x18117) (not x29963) x23855 x22138 (not x19913))
+:assumption (or (not x28436) x28847 x8461)
+:assumption (or x24626 (not x10243))
+:assumption (or (not x14827) x31372)
+:assumption (or x13307 (not x7356))
+:assumption (or (not x15141) (not x20766))
+:assumption (or x19023 x6686)
+:assumption (or (not x28151) (not x20091) (not x18430) (not x26996))
+:assumption (or (not x22323) (not x13997))
+:assumption (or (not x4559) x25417)
+:assumption (or x7714 x1810)
+:assumption (or (not x3900) (not x17856))
+:assumption (or (not x918) x6373 (not x16096))
+:assumption (or x8326 x16614 x9820)
+:assumption (or x4045 (not x14913))
+:assumption (or (not x6805) (not x20306))
+:assumption (or x6045 x25046)
+:assumption (or x4396 (not x28569))
+:assumption (or x20572 (not x2341))
+:assumption (or x25961 x7921)
+:assumption (or (not x29487) (not x31626))
+:assumption (or (not x21766) (not x22855))
+:assumption (or x15616 x2412)
+:assumption (or (not x3560) (not x5019) x4215 x21872 (not x14983) (not x30169) (not x727) x7518)
+:assumption (or x11665 x24421)
+:assumption (or x15913 (not x3620))
+:assumption (or x20642 (not x21815))
+:assumption (or (not x27949) (not x26798) x1052 (not x28885))
+:assumption (or x26716 (not x3066))
+:assumption (or x18602 x9241)
+:assumption (or x1734 x13778)
+:assumption (or (not x18101) (not x5648))
+:assumption (or x26301 (not x29648))
+:assumption (or (not x13953) x6338)
+:assumption (or x5528 (not x31474) x12648)
+:assumption (or x28646 x7638)
+:assumption (or x12705 (not x19140))
+:assumption (or x30228 (not x29734) x19198)
+:assumption (or x21626 (not x17591))
+:assumption (or x29515 (not x28912))
+:assumption (or x19537 (not x22848))
+:assumption (or x5528 x19783)
+:assumption (or (not x26701) (not x10968))
+:assumption (or x30933 (not x21815) (not x16762))
+:assumption (or x2177 (not x23146))
+:assumption (or (not x10197) (not x18515))
+:assumption (or (not x27190) (not x15608))
+:assumption (or x26617 (not x1204))
+:assumption (or x3417 x15765)
+:assumption (or (not x8002) (not x23244) (not x10787) x22417)
+:assumption (or (not x31829) x30317)
+:assumption (or x8552 (not x9143))
+:assumption (or (not x18308) (not x4000))
+:assumption (or x5017 (not x4393) (not x2646) (not x9423) (not x1911) x13961 x17727 x26644 (not x9371))
+:assumption (or (not x2472) x22974)
+:assumption (or x15830 (not x13255))
+:assumption (or x12319 (not x11274))
+:assumption (or x14256 (not x29552))
+:assumption (or (not x26697) x16056)
+:assumption (or x9971 x24525)
+:assumption (or x26897 x1770 x8189 (not x17780) x28908)
+:assumption (or (not x21389) x19605)
+:assumption (or x3670 x17195)
+:assumption (or (not x11538) x26981)
+:assumption (or x25500 x6838)
+:assumption (or (not x28502) x10692)
+:assumption (or x10090 (not x12553))
+:assumption (or x14924 x14503)
+:assumption (or (not x6338) (not x27572))
+:assumption (or (not x25623) (not x18203))
+:assumption (or x2239 x4099)
+:assumption (or (not x21403) x918)
+:assumption (or x4865 x26354 (not x883))
+:assumption (or x12483 x14451)
+:assumption (or x11940 x27216 x24290 (not x25586) (not x15099))
+:assumption (or (not x26846) x22525)
+:assumption (or (not x17497) x11721)
+:assumption (or (not x12242) (not x10132))
+:assumption (or (not x21088) (not x25569))
+:assumption (or x12952 (not x16202) x4401)
+:assumption (or (not x11142) x2825)
+:assumption (or x28732 (not x13298) x26856 (not x15410) x10009 (not x15003))
+:assumption (or (not x2332) x15537 x4451 (not x964) (not x169))
+:assumption (or x8371 x23896)
+:assumption (or x16128 x9849 (not x9008))
+:assumption (or x4188 x18335 x25754)
+:assumption (or x29414 x10583)
+:assumption (or (not x4401) x16202)
+:assumption (or x2497 x28973 (not x31099) (not x1582))
+:assumption (or (not x20402) (not x10302) (not x16797) (not x30759))
+:assumption (or x25506 x6128)
+:assumption (or x14862 x16034)
+:assumption (or x25835 x31114 x28922)
+:assumption (or (not x21298) (not x31683))
+:assumption (or x2383 (not x20745))
+:assumption (or (not x12739) x14218)
+:assumption (or (not x11064) x16373)
+:assumption (or (not x9073) x24149)
+:assumption (or x827 (not x23924) (not x17990))
+:assumption (or x21431 x19595 (not x16105))
+:assumption (or (not x2921) x28541)
+:assumption (or x2275 x25552)
+:assumption (or x25815 (not x20842))
+:assumption (or (not x1124) (not x14500))
+:assumption (or x1508 x27672 (not x14509) x29333)
+:assumption (or (not x19730) x10893 x26358 x2827)
+:assumption (or (not x7664) x15192)
+:assumption (or (not x18358) (not x13895))
+:assumption (or x12837 x16654)
+:assumption (or (not x31429) (not x1360))
+:assumption (or (not x19574) x24420)
+:assumption (or (not x25605) x27273)
+:assumption (or x25008 (not x20411))
+:assumption (or (not x14316) (not x30389) x13988 (not x25295) x16296)
+:assumption (or x21298 x19995)
+:assumption (or (not x5028) x1522)
+:assumption (or x30812 (not x5255))
+:assumption (or (not x14693) x1364)
+:assumption (or (not x13097) x31777)
+:assumption (or x26255 x14966)
+:assumption (or (not x25767) x14863)
+:assumption (or x21413 x2066)
+:assumption (or (not x8135) x17276)
+:assumption (or (not x23470) x10453)
+:assumption (or (not x26647) (not x26747) x13956)
+:assumption (or x21298 (not x24902))
+:assumption (or x20906 (not x24061))
+:assumption (or x16104 x6900)
+:assumption (or x16405 (not x3001))
+:assumption (or (not x17013) x10089)
+:assumption (or (not x1682) x20885)
+:assumption (or (not x22048) x19665)
+:assumption (or (not x13596) x29335)
+:assumption (or x19800 (not x17682))
+:assumption (or x9269 (not x15162))
+:assumption (or x13066 x12569 (not x28161))
+:assumption (or x2157 x7535)
+:assumption (or x16854 x16293)
+:assumption (or (not x19682) x14787)
+:assumption (or x6043 x25585)
+:assumption (or x21305 x30954)
+:assumption (or x7886 x7491)
+:assumption (or (not x5407) x3712 x16025)
+:assumption (or (not x8404) x8002)
+:assumption (or (not x14745) x28764)
+:assumption (or x29894 (not x23356) (not x9879) x24320 x6393 (not x3319) (not x3152) x22727)
+:assumption (or (not x13842) (not x12535))
+:assumption (or (not x13130) x20325)
+:assumption (or x27538 (not x13155))
+:assumption (or (not x12048) x28400)
+:assumption (or x21374 (not x12032) x31186 x22276 x65 (not x16039) x344 (not x27594) (not x3174))
+:assumption (or x9863 x21250)
+:assumption (or x918 (not x5442))
+:assumption (or x6163 x23494)
+:assumption (or (not x26137) x6345)
+:assumption (or x10923 (not x15909))
+:assumption (or x28720 x12204)
+:assumption (or x26408 (not x5450))
+:assumption (or x23230 (not x31518))
+:assumption (or x25659 (not x13279))
+:assumption (or x12113 (not x26620))
+:assumption (or (not x25432) (not x26647) x26494 x8002 x23244)
+:assumption (or (not x11795) (not x5623))
+:assumption (or x18426 (not x28047) (not x10845) (not x12734) (not x30916))
+:assumption (or (not x16589) x27133)
+:assumption (or (not x26432) x26328 (not x20202) x7935)
+:assumption (or (not x1105) (not x22849))
+:assumption (or x15621 (not x10545) x27749 x24038)
+:assumption (or x4472 (not x302))
+:assumption (or (not x18078) (not x26265))
+:assumption (or x28979 (not x30507))
+:assumption (or x1052 x21798)
+:assumption (or (not x6366) (not x3567))
+:assumption (or x24710 x14490)
+:assumption (or (not x14527) (not x9008) (not x29139) (not x5528) (not x29269))
+:assumption (or (not x9437) (not x18053))
+:assumption (or (not x2958) (not x29959))
+:assumption (or (not x19699) (not x27122))
+:assumption (or (not x3028) (not x24209) x16848 x25740)
+:assumption (or (not x8461) (not x19456))
+:assumption (or (not x29649) x1227 x7366 (not x11000) (not x19095) (not x6034))
+:assumption (or (not x26930) (not x22952))
+:assumption (or x10924 (not x30601))
+:assumption (or x21082 (not x24697))
+:assumption (or x21005 (not x480) (not x15284) (not x8336))
+:assumption (or (not x29301) x6921 (not x8256) (not x12068) x24395)
+:assumption (or (not x17650) (not x28594))
+:assumption (or x1989 x5235 x9897 x20068)
+:assumption (or x19754 (not x12037))
+:assumption (or (not x6716) (not x3935))
+:assumption (or (not x4652) (not x6341))
+:assumption (or x28583 (not x16654))
+:assumption (or x22984 x18877)
+:assumption (or x13586 x7798)
+:assumption (or (not x24973) x11442)
+:assumption (or x20820 (not x29312))
+:assumption (or (not x2502) x30201)
+:assumption (or (not x1576) (not x12931))
+:assumption (or x25194 (not x21473))
+:assumption (or (not x22100) (not x22553))
+:assumption (or x14610 x28973)
+:assumption (or x13442 (not x31357) x7962 (not x9363) x1196 (not x20324))
+:assumption (or (not x10532) x19580 (not x13120))
+:assumption (or x6639 x24293)
+:assumption (or (not x10052) x26164)
+:assumption (or (not x26155) x28064)
+:assumption (or (not x25724) (not x13649))
+:assumption (or x9217 (not x14183))
+:assumption (or (not x20325) (not x25851))
+:assumption (or (not x4969) x19597 (not x31544))
+:assumption (or x30679 (not x6976))
+:assumption (or x3623 (not x9346))
+:assumption (or (not x10196) x25048 x16793)
+:assumption (or (not x11634) x30123)
+:assumption (or (not x29160) (not x19632))
+:assumption (or (not x5509) x9889)
+:assumption (or (not x17582) x2860 x12254 x20782 x13558 x31653 (not x31905))
+:assumption (or x28661 x30891)
+:assumption (or (not x31741) (not x20782) x30101 x27517)
+:assumption (or x19138 x9859)
+:assumption (or x20199 x12499)
+:assumption (or x11852 x10046)
+:assumption (or x24996 x28094)
+:assumption (or x13747 x10946)
+:assumption (or (not x7567) (not x5876))
+:assumption (or (not x5245) x24502)
+:assumption (or (not x19554) (not x19428) x17612 (not x20423))
+:assumption (or (not x29224) x23244)
+:assumption (or x13411 (not x17050))
+:assumption (or x30043 x9024)
+:assumption (or (not x12309) x18458)
+:assumption (or (not x26392) (not x7061))
+:assumption (or x8948 (not x22097))
+:assumption (or x23244 (not x16703))
+:assumption (or x28642 (not x31093))
+:assumption (or x6726 x13956)
+:assumption (or x8872 (not x18239))
+:assumption (or x17374 (not x29730))
+:assumption (or (not x3878) x4292)
+:assumption (or x12823 x16549)
+:assumption (or (not x22454) (not x15313))
+:assumption (or x3906 (not x25147))
+:assumption (or (not x2455) x21469)
+:assumption (or (not x827) (not x13888) x27992)
+:assumption (or x7429 x8575)
+:assumption (or x20986 (not x8002))
+:assumption (or (not x19643) (not x4984))
+:assumption (or x30209 (not x3963) (not x24429) x15400 (not x23778) x11331 (not x16160) x3029 (not x8142))
+:assumption (or x14493 (not x16482))
+:assumption (or x24545 x22436 (not x28754) x18040 (not x18169))
+:assumption (or x31846 (not x11761))
+:assumption (or (not x25659) (not x17943) (not x5913))
+:assumption (or x10141 (not x12001))
+:assumption (or x18090 x12176)
+:assumption (or (not x18512) x28456)
+:assumption (or x31270 x29342)
+:assumption (or x23776 x9375)
+:assumption (or (not x2625) x20761)
+:assumption (or x17603 x21432)
+:assumption (or x18587 x23201)
+:assumption (or x3699 x13740)
+:assumption (or x10970 x25500)
+:assumption (or (not x13297) (not x4607) (not x20896) x23922 (not x26596))
+:assumption (or (not x30611) x11963)
+:assumption (or x15118 (not x5749))
+:assumption (or x24536 x27440)
+:assumption (or x16628 (not x6463))
+:assumption (or (not x28729) (not x29125))
+:assumption (or x5801 x5986)
+:assumption (or x13444 (not x29366))
+:assumption (or (not x22549) (not x1948))
+:assumption (or (not x945) (not x16294))
+:assumption (or (not x2177) (not x20008))
+:assumption (or x5852 x20439)
+:assumption (or x17282 (not x6868))
+:assumption (or (not x11022) x7797 x7658 (not x30895) (not x13228))
+:assumption (or x31496 (not x28342) x13956)
+:assumption (or (not x13953) x3224)
+:assumption (or x4843 x11282)
+:assumption (or (not x22210) x19375)
+:assumption (or x26892 x5380 x5528)
+:assumption (or (not x22760) (not x29911))
+:assumption (or x6959 (not x11480) (not x30113) x8366)
+:assumption (or x7645 (not x23617))
+:assumption (or (not x6283) (not x3581))
+:assumption (or x20124 x27823)
+:assumption (or (not x31053) (not x13956) (not x9790))
+:assumption (or x14526 x24287 x29442 (not x21212) x11753)
+:assumption (or x28786 (not x1393) x25453)
+:assumption (or (not x28889) (not x15481))
+:assumption (or (not x7864) x25810)
+:assumption (or (not x9927) (not x29094))
+:assumption (or x9199 (not x23169) (not x21951) (not x21733))
+:assumption (or x7748 (not x1345) x23619)
+:assumption (or (not x11805) (not x9453))
+:assumption (or x13262 (not x25482))
+:assumption (or x2710 (not x19367))
+:assumption (or (not x25490) (not x30158))
+:assumption (or x28483 (not x18835))
+:assumption (or (not x6169) x10143)
+:assumption (or (not x9373) (not x6532))
+:assumption (or (not x1774) (not x20173))
+:assumption (or (not x14959) (not x18692))
+:assumption (or x21243 (not x28903))
+:assumption (or x10301 x19613)
+:assumption (or x133 (not x523))
+:assumption (or (not x28101) (not x5414))
+:assumption (or x14784 (not x12067))
+:assumption (or (not x18516) (not x21336))
+:assumption (or x1458 (not x29976) x5031)
+:assumption (or x31035 x29058)
+:assumption (or x29215 (not x918))
+:assumption (or x3866 x30402)
+:assumption (or x10726 (not x28941))
+:assumption (or (not x7089) x11700 x7512 (not x2299))
+:assumption (or x5528 x14256 x6549)
+:assumption (or x3679 (not x18612))
+:assumption (or x15514 x26491)
+:assumption (or (not x10209) x16907)
+:assumption (or x15425 (not x29839))
+:assumption (or x7969 (not x19199))
+:assumption (or (not x21800) x26060)
+:assumption (or (not x25659) x23719)
+:assumption (or (not x22727) (not x29894))
+:assumption (or x27022 x29190 (not x3385) (not x22007))
+:assumption (or (not x22708) (not x29007))
+:assumption (or x12876 (not x26734))
+:assumption (or x29335 x30537)
+:assumption (or (not x15038) x23244)
+:assumption (or (not x5865) (not x26551))
+:assumption (or (not x31724) (not x5123))
+:assumption (or x18893 x8729)
+:assumption (or (not x758) x30987)
+:assumption (or (not x18896) x31485 x8002 (not x11253) (not x26517) (not x31206))
+:assumption (or (not x17160) x6528)
+:assumption (or (not x13222) x3293 x12681 x13659)
+:assumption (or x16290 x762)
+:assumption (or (not x8461) x20482 x26610)
+:assumption (or x14138 x24471 x20786)
+:assumption (or (not x17899) (not x12853))
+:assumption (or (not x31074) (not x8632))
+:assumption (or x6381 x19565)
+:assumption (or x8586 (not x2258))
+:assumption (or (not x24432) (not x6271))
+:assumption (or (not x9410) (not x28569))
+:assumption (or (not x23507) (not x621))
+:assumption (or x20762 (not x30245))
+:assumption (or x348 (not x6035))
+:assumption (or x757 x21394)
+:assumption (or x9840 (not x23723))
+:assumption (or (not x24702) x15548)
+:assumption (or (not x11861) (not x12200) (not x25775) (not x15799) x8606 x19055)
+:assumption (or (not x10303) x24088)
+:assumption (or x12634 x26284)
+:assumption (or x10293 x2911)
+:assumption (or (not x31829) (not x20585) (not x1361))
+:assumption (or (not x30155) (not x21031) x6969 x12111)
+:assumption (or x2825 x16355)
+:assumption (or x16571 x827)
+:assumption (or x4509 (not x27596))
+:assumption (or (not x13835) (not x23306))
+:assumption (or (not x18608) x6923)
+:assumption (or (not x12962) x27214)
+:assumption (or x27999 (not x29548))
+:assumption (or (not x22686) x1938)
+:assumption (or x5528 x7246)
+:assumption (or (not x11018) x9731)
+:assumption (or (not x21251) (not x480))
+:assumption (or x10608 (not x26054))
+:assumption (or x5536 (not x28712) (not x24110) (not x26284) (not x12634) (not x302))
+:assumption (or (not x26064) x14134)
+:assumption (or x29766 (not x10909))
+:assumption (or x8553 x2939)
+:assumption (or (not x3453) x23796)
+:assumption (or x3526 x14487)
+:assumption (or x30887 x3122 x13282 x1596)
+:assumption (or (not x14712) x8532)
+:assumption (or (not x28027) (not x1214) (not x7854))
+:assumption (or x30115 x21130 (not x11628) (not x27131) (not x27714))
+:assumption (or (not x24056) (not x22304))
+:assumption (or (not x1386) (not x31114))
+:assumption (or x8002 x26477)
+:assumption (or x15615 x20768)
+:assumption (or (not x26042) x2984)
+:assumption (or x15793 (not x2787))
+:assumption (or x31667 x16131)
+:assumption (or (not x5619) (not x16445))
+:assumption (or x5445 x15634)
+:assumption (or (not x23022) x2626)
+:assumption (or (not x13258) (not x7622))
+:assumption (or x17073 (not x8130))
+:assumption (or x12838 (not x8426))
+:assumption (or (not x14616) (not x30081))
+:assumption (or x7473 (not x3162))
+:assumption (or (not x2432) (not x28325))
+:assumption (or x21653 x2120)
+:assumption (or x27034 x2716)
+:assumption (or (not x1150) x484)
+:assumption (or x218 x18568)
+:assumption (or (not x13266) x1487)
+:assumption (or (not x18069) (not x22604) (not x20071) (not x3494))
+:assumption (or x6447 (not x18390))
+:assumption (or x22886 (not x21243) x28903)
+:assumption (or x29871 x20452)
+:assumption (or x13956 x30255 (not x3824))
+:assumption (or (not x27198) (not x9073))
+:assumption (or (not x8140) (not x201))
+:assumption (or (not x20087) x26280 x19896 x7135)
+:assumption (or (not x23937) x21285 x31704 x21846 (not x13656))
+:assumption (or x4350 x13556)
+:assumption (or (not x31372) (not x12535))
+:assumption (or (not x21998) (not x16820))
+:assumption (or (not x6969) x24645)
+:assumption (or (not x25633) (not x27256))
+:assumption (or (not x3052) (not x28748))
+:assumption (or x18323 (not x23284))
+:assumption (or (not x142) (not x16906))
+:assumption (or x21148 x2493)
+:assumption (or x23625 (not x16111))
+:assumption (or x15036 (not x19631))
+:assumption (or (not x7679) x25343)
+:assumption (or x27035 (not x25293))
+:assumption (or (not x11374) x31098 x28623 x30732)
+:assumption (or (not x16273) (not x8068))
+:assumption (or x22865 x2016)
+:assumption (or x17359 (not x21342))
+:assumption (or (not x6704) (not x25780))
+:assumption (or x57 (not x2591))
+:assumption (or x11281 (not x19898))
+:assumption (or (not x19060) (not x21574))
+:assumption (or x25173 (not x22831))
+:assumption (or x20194 x13409)
+:assumption (or x14419 (not x1390))
+:assumption (or x18050 x10832)
+:assumption (or (not x8120) x11642)
+:assumption (or (not x6098) (not x12536) x8378 x25155 (not x26603) (not x19151) (not x13874) x27454 (not x13963) x18123)
+:assumption (or x25879 (not x3262))
+:assumption (or x21397 (not x27450))
+:assumption (or (not x1684) x22721)
+:assumption (or x2053 (not x30629))
+:assumption (or (not x23851) (not x28362))
+:assumption (or x568 x14164)
+:assumption (or x8265 x9726)
+:assumption (or x17076 x30670)
+:assumption (or x2488 x7064)
+:assumption (or x17323 (not x19582))
+:assumption (or x893 (not x1637) (not x22876) x25005 (not x14484))
+:assumption (or (not x16025) (not x21560))
+:assumption (or x15392 x6060)
+:assumption (or x12366 (not x16316))
+:assumption (or x8801 x10054)
+:assumption (or (not x16025) x5212)
+:assumption (or x26760 x3581 (not x18262) x6283 (not x13411) x19766)
+:assumption (or (not x10237) x16025 x13006)
+:assumption (or (not x30367) (not x9719))
+:assumption (or x7341 x18541 x4285 x18504 x20734)
+:assumption (or (not x16116) x21074 x20977 x31134 (not x23523) x3450 x13928 (not x13156))
+:assumption (or (not x9209) (not x1899))
+:assumption (or x7569 x31183)
+:assumption (or (not x21547) (not x28023))
+:assumption (or x348 (not x11621))
+:assumption (or x27116 (not x2234))
+:assumption (or (not x2840) x15888)
+:assumption (or (not x22754) (not x18477))
+:assumption (or (not x21432) (not x1986) x13368)
+:assumption (or x23853 (not x8908))
+:assumption (or x3870 x26538)
+:assumption (or x17143 x17273 (not x20808) (not x15778) x716)
+:assumption (or x5033 (not x4761))
+:assumption (or (not x22935) (not x2084))
+:assumption (or x25586 (not x11940))
+:assumption (or x6815 x25949)
+:assumption (or x182 x2467)
+:assumption (or (not x31502) (not x392))
+:assumption (or (not x31487) (not x307))
+:assumption (or (not x24196) x31719)
+:assumption (or x6124 (not x31060))
+:assumption (or (not x18546) x13487 x15672 (not x23771) x4893 (not x26552))
+:assumption (or x6472 (not x22855))
+:assumption (or x5394 (not x31313))
+:assumption (or x30224 (not x25137))
+:assumption (or (not x29855) x30138)
+:assumption (or (not x17400) (not x15343))
+:assumption (or (not x14114) x18479)
+:assumption (or x31134 x13033 x29606 (not x470))
+:assumption (or x12181 (not x7245))
+:assumption (or (not x24228) (not x29536))
+:assumption (or (not x24665) (not x25084) (not x7744) (not x8743))
+:assumption (or (not x31411) (not x1184))
+:assumption (or x16684 x10192)
+:assumption (or x24760 x25876)
+:assumption (or x11604 x5840)
+:assumption (or (not x17309) x20080)
+:assumption (or (not x16434) (not x28884))
+:assumption (or x1658 x28006)
+:assumption (or x13993 (not x6990) (not x16457))
+:assumption (or x10051 x13757)
+:assumption (or (not x31385) (not x13613))
+:assumption (or (not x31586) x13161)
+:assumption (or (not x21737) (not x14716) (not x28488) (not x3939))
+:assumption (or x26150 x13555)
+:assumption (or (not x27468) x15995)
+:assumption (or x13378 (not x19992))
+:assumption (or (not x3324) x15454)
+:assumption (or (not x1083) (not x5904))
+:assumption (or (not x28242) (not x17456))
+:assumption (or x21499 x9008)
+:assumption (or (not x19903) (not x1853))
+:assumption (or x5696 x6293)
+:assumption (or (not x25458) (not x11957))
+:assumption (or x1287 (not x5371))
+:assumption (or (not x22197) (not x7842))
+:assumption (or (not x2200) (not x16784))
+:assumption (or (not x16281) (not x23540))
+:assumption (or x858 x30314)
+:assumption (or x21716 (not x15413))
+:assumption (or (not x17367) (not x2212))
+:assumption (or (not x26217) x11642)
+:assumption (or x6138 (not x833))
+:assumption (or (not x31829) x4101)
+:assumption (or x22529 x10119)
+:assumption (or (not x21741) x20594)
+:assumption (or x2177 x28008 x29014 x1469)
+:assumption (or x10000 (not x25090))
+:assumption (or x30954 x10402)
+:assumption (or (not x13473) x14743)
+:assumption (or (not x25620) (not x5685))
+:assumption (or x9801 x7730)
+:assumption (or x7194 x11931)
+:assumption (or (not x23307) x26899 (not x11206) x17163 (not x317) (not x21161))
+:assumption (or (not x7537) (not x19291))
+:assumption (or (not x8258) x8256)
+:assumption (or (not x3116) (not x25809) (not x29183) x22966 (not x25659) (not x4419) (not x6706) x26450)
+:assumption (or x169 x15809 (not x19798) x5662 (not x13150) x19334 x23222 x7447)
+:assumption (or x10393 (not x2603))
+:assumption (or (not x2438) (not x13052))
+:assumption (or x16003 x25067)
+:assumption (or x14592 x21746)
+:assumption (or x5673 x23774 (not x13848) (not x7644))
+:assumption (or x26370 x7537)
+:assumption (or (not x12929) (not x26427))
+:assumption (or (not x26) x28466)
+:assumption (or (not x30887) (not x17109) (not x1575))
+:assumption (or x15460 x1429)
+:assumption (or x31211 x8002 x23244 (not x11912))
+:assumption (or x20843 x9766)
+:assumption (or (not x30144) x18416)
+:assumption (or (not x31088) x480 x26791)
+:assumption (or (not x2845) (not x4975))
+:assumption (or (not x12285) (not x11397))
+:assumption (or x7614 (not x21422))
+:assumption (or x14348 x29803)
+:assumption (or x27233 x15873 x6526 (not x21633))
+:assumption (or x21317 x31843)
+:assumption (or (not x25355) x14723)
+:assumption (or (not x4774) (not x19826))
+:assumption (or (not x16992) (not x30645))
+:assumption (or x6435 x12589)
+:assumption (or x10290 (not x18056) x28217 (not x1954) x29492)
+:assumption (or x24803 (not x11443))
+:assumption (or x18850 x23649)
+:assumption (or x26670 (not x11698))
+:assumption (or (not x9305) (not x21302) (not x29593) x24994)
+:assumption (or x18554 (not x16193))
+:assumption (or (not x4026) x15253)
+:assumption (or (not x28603) (not x8600))
+:assumption (or (not x23934) x15241)
+:assumption (or x3617 (not x26399) x28726)
+:assumption (or x2767 x14714 x25659)
+:assumption (or (not x4348) x2568)
+:assumption (or (not x21298) (not x16820) x19324)
+:assumption (or (not x31328) x21805)
+:assumption (or x28804 x28288)
+:assumption (or (not x18859) x12425)
+:assumption (or (not x31829) x16323 x28541 (not x31099))
+:assumption (or (not x17828) (not x11201) x14662 (not x2343) (not x12539) (not x1426) x27532 x17506 (not x21726))
+:assumption (or x13223 x31629)
+:assumption (or x18042 (not x27215))
+:assumption (or (not x20457) (not x23952))
+:assumption (or x23311 (not x3075))
+:assumption (or (not x23280) (not x21719))
+:assumption (or (not x24439) x29884)
+:assumption (or x14455 (not x20667))
+:assumption (or (not x13376) x15233)
+:assumption (or (not x14839) (not x13740))
+:assumption (or x29950 (not x329))
+:assumption (or x1388 x5665)
+:assumption (or x16778 x21815)
+:assumption (or x8821 x19864)
+:assumption (or x11281 (not x26111) (not x17359) (not x23220))
+:assumption (or (not x27452) (not x31499))
+:assumption (or x28347 x2902)
+:assumption (or x10295 x13956 (not x30914))
+:assumption (or (not x14456) x15041)
+:assumption (or x21039 (not x9322))
+:assumption (or (not x24532) (not x27744))
+:assumption (or (not x20813) (not x505))
+:assumption (or (not x30141) x2334 x23714 (not x13487))
+:assumption (or (not x24529) x6458 x492 (not x9969) x15917)
+:assumption (or x30249 (not x14455) x27685 x3897 (not x19994))
+:assumption (or x1857 (not x30972))
+:assumption (or x18160 x4224)
+:assumption (or x30604 x27740)
+:assumption (or x27805 x5528)
+:assumption (or (not x7200) (not x24014))
+:assumption (or x6849 (not x5321))
+:assumption (or (not x20803) (not x30416))
+:assumption (or (not x15650) (not x26143))
+:assumption (or (not x24694) (not x4148))
+:assumption (or (not x21291) (not x16071))
+:assumption (or x6772 x24319)
+:assumption (or x21241 x30534)
+:assumption (or x7507 x321)
+:assumption (or (not x15772) (not x4498))
+:assumption (or x21577 x25697)
+:assumption (or (not x16030) (not x19118))
+:assumption (or x29284 x10096)
+:assumption (or (not x22657) x28561)
+:assumption (or (not x17453) x11657)
+:assumption (or (not x31911) (not x19709))
+:assumption (or x19105 x29092)
+:assumption (or x9714 (not x9930))
+:assumption (or (not x1373) (not x3159) (not x21298))
+:assumption (or (not x1544) (not x21690) x25784)
+:assumption (or x16335 x2888)
+:assumption (or x20941 x7168)
+:assumption (or x12640 (not x31724))
+:assumption (or x8268 (not x9594))
+:assumption (or x16784 (not x18425))
+:assumption (or (not x26284) (not x7336))
+:assumption (or (not x1365) x13986)
+:assumption (or (not x7134) x6738)
+:assumption (or (not x12290) x3243)
+:assumption (or x16312 x11944)
+:assumption (or x9008 (not x25626) (not x12175))
+:assumption (or x30017 x11174)
+:assumption (or x26597 x2445 (not x28084) (not x11752) x7096 (not x7453) (not x7968) (not x3995) (not x4377))
+:assumption (or (not x610) (not x14352))
+:assumption (or (not x14257) x8063)
+:assumption (or x15092 (not x827))
+:assumption (or x7257 (not x28135))
+:assumption (or (not x25561) x3672)
+:assumption (or x29239 x22373)
+:assumption (or (not x24722) (not x25355) x22475)
+:assumption (or (not x21972) x20661)
+:assumption (or x28473 x9008 x4752)
+:assumption (or x28843 (not x3482))
+:assumption (or x22252 (not x8598))
+:assumption (or x16229 x13073)
+:assumption (or x7107 x5151)
+:assumption (or x3641 (not x5557))
+:assumption (or (not x27783) (not x25915))
+:assumption (or (not x19246) (not x1010))
+:assumption (or (not x26896) x16654)
+:assumption (or x4710 (not x15074))
+:assumption (or x30113 (not x29702))
+:assumption (or (not x8204) x8759)
+:assumption (or x2595 x15177)
+:assumption (or x22647 (not x12950))
+:assumption (or (not x19709) x8990)
+:assumption (or (not x9825) x21331)
+:assumption (or x8154 x7736)
+:assumption (or x4060 (not x31149))
+:assumption (or (not x19583) (not x19187))
+:assumption (or (not x5528) (not x20316) (not x21091) x13709 (not x27699) x2151)
+:assumption (or (not x3969) x15830)
+:assumption (or (not x26143) x27121)
+:assumption (or x7266 (not x4656))
+:assumption (or x20267 (not x31139) x18859)
+:assumption (or (not x86) (not x27487))
+:assumption (or x19772 (not x25412))
+:assumption (or (not x287) x12588)
+:assumption (or (not x4713) x10874)
+:assumption (or x1805 (not x31533))
+:assumption (or x20651 x26541)
+:assumption (or (not x6890) (not x1473))
+:assumption (or x25659 x10460 (not x17528))
+:assumption (or x5419 x20057)
+:assumption (or x14087 (not x30439) x24894)
+:assumption (or (not x31074) (not x2612))
+:assumption (or (not x28274) (not x21978))
+:assumption (or x2818 x15134)
+:assumption (or x6068 (not x27113))
+:assumption (or (not x27749) x638)
+:assumption (or (not x12266) x28242)
+:assumption (or x354 (not x13720))
+:assumption (or (not x13956) x7401)
+:assumption (or (not x4817) x744)
+:assumption (or x25659 x7630 x27682)
+:assumption (or (not x1351) (not x4204))
+:assumption (or (not x24491) x16510)
+:assumption (or x26378 (not x22132))
+:assumption (or x20325 (not x11101))
+:assumption (or x18086 (not x17310))
+:assumption (or (not x12515) x2931)
+:assumption (or (not x6149) x8215)
+:assumption (or x26700 x31068)
+:assumption (or (not x11665) (not x29996) (not x24421) x21026 (not x954))
+:assumption (or (not x21653) (not x27084))
+:assumption (or x10066 (not x9398))
+:assumption (or (not x25237) x5481)
+:assumption (or x11769 (not x1566) x21653)
+:assumption (or (not x12418) x24174)
+:assumption (or (not x22697) (not x9738))
+:assumption (or x14696 x25145)
+:assumption (or (not x10652) (not x9531) (not x12050) x13576)
+:assumption (or (not x26897) (not x16760))
+:assumption (or x29705 x21653 (not x17047))
+:assumption (or x18515 x10197 x4540 x2051)
+:assumption (or (not x13491) (not x12451))
+:assumption (or (not x10290) x24392)
+:assumption (or (not x1419) x2197)
+:assumption (or (not x16086) x15749 x30484)
+:assumption (or x18052 (not x13387))
+:assumption (or (not x7748) (not x17014))
+:assumption (or x3838 (not x25204))
+:assumption (or (not x15867) (not x3072))
+:assumption (or (not x28824) x21630)
+:assumption (or (not x7363) (not x13707))
+:assumption (or (not x5292) x2413)
+:assumption (or x27532 x9850)
+:assumption (or (not x5217) x21190 (not x12763))
+:assumption (or x14489 x22695)
+:assumption (or (not x1207) (not x16867))
+:assumption (or x18047 (not x2419))
+:assumption (or x9531 x13576 (not x25022) (not x17342))
+:assumption (or x613 x17853)
+:assumption (or (not x20669) x17798)
+:assumption (or x7490 (not x18745))
+:assumption (or x26438 x5984)
+:assumption (or x19585 x14449)
+:assumption (or (not x8752) x27183)
+:assumption (or x29384 (not x10487))
+:assumption (or x13050 (not x22829))
+:assumption (or (not x16356) x14990)
+:assumption (or (not x8792) (not x14641))
+:assumption (or x2303 x1616)
+:assumption (or (not x19176) (not x13956) (not x13725))
+:assumption (or (not x28691) x7947)
+:assumption (or (not x17526) (not x26670) x16423 (not x21469))
+:assumption (or (not x14880) x23804)
+:assumption (or x18998 x21653 x21013)
+:assumption (or (not x31052) (not x15398))
+:assumption (or x2592 (not x1162))
+:assumption (or (not x13674) x17125 x13956)
+:assumption (or x11263 x26133)
+:assumption (or (not x31329) x30092 (not x10613) x16092)
+:assumption (or (not x29732) (not x7999))
+:assumption (or (not x5459) x15733)
+:assumption (or x14722 (not x30217) (not x1798) x21647 x1308 (not x13622) (not x21133))
+:assumption (or (not x10650) (not x6535))
+:assumption (or x11074 x25461 x27621 (not x31076))
+:assumption (or x27046 x20485)
+:assumption (or x31928 (not x17075))
+:assumption (or x9008 (not x3985) x28806)
+:assumption (or (not x626) (not x27966))
+:assumption (or x8962 (not x1487))
+:assumption (or (not x1227) (not x27715))
+:assumption (or x17188 (not x28890) x7635)
+:assumption (or x27647 (not x31449))
+:assumption (or x15578 x20232)
+:assumption (or (not x11849) x14117)
+:assumption (or (not x6266) (not x26061))
+:assumption (or (not x17728) (not x5736))
+:assumption (or x31820 x21815)
+:assumption (or x26836 (not x14936))
+:assumption (or x17396 x22915)
+:assumption (or (not x9962) (not x5765) x14839 x20449)
+:assumption (or x31801 (not x1908))
+:assumption (or (not x6097) x4726)
+:assumption (or x5007 (not x4623))
+:assumption (or x28436 x2268 (not x27227))
+:assumption (or (not x25659) (not x17797))
+:assumption (or (not x12205) x20880)
+:assumption (or (not x31829) (not x17799))
+:assumption (or (not x21769) (not x3912))
+:assumption (or x4248 x9980 x28796 (not x27124) (not x28827) (not x21637) x29851 (not x26256))
+:assumption (or x15879 (not x6022))
+:assumption (or x19455 (not x12927))
+:assumption (or x14728 (not x10962))
+:assumption (or (not x24474) (not x15296))
+:assumption (or x9290 x13138 x6960 (not x18946) (not x17852) (not x30809))
+:assumption (or (not x25394) (not x16311))
+:assumption (or x25561 (not x8101) (not x5785) x30547 x22170 x13525 (not x28975) (not x11335))
+:assumption (or (not x25366) (not x10810))
+:assumption (or (not x28956) x23356)
+:assumption (or (not x4851) x9422 (not x22295) x21298)
+:assumption (or x28296 (not x16965))
+:assumption (or x5528 x2047)
+:assumption (or (not x5830) x8306 x23233 (not x9538))
+:assumption (or (not x23383) x17691)
+:assumption (or x18486 (not x28325))
+:assumption (or x13838 x10020 x26551 (not x23641) x1682)
+:assumption (or x3220 x31312)
+:assumption (or x31714 x18589)
+:assumption (or (not x5285) (not x31876))
+:assumption (or x19245 (not x19800) x25544 x17682 x23751)
+:assumption (or (not x3295) x4049)
+:assumption (or x27944 x27111 x22388 (not x11613))
+:assumption (or (not x26428) (not x7910))
+:assumption (or x13762 x23092)
+:assumption (or (not x6786) (not x12458))
+:assumption (or (not x20919) (not x2606))
+:assumption (or (not x6125) (not x9016))
+:assumption (or x27649 (not x24203))
+:assumption (or (not x29149) x19097)
+:assumption (or (not x24519) x31400)
+:assumption (or x14839 x14470)
+:assumption (or (not x27267) x13708)
+:assumption (or x26074 x10310)
+:assumption (or x9399 (not x25333))
+:assumption (or (not x23050) x9770)
+:assumption (or (not x5263) x9065)
+:assumption (or (not x7791) x762)
+:assumption (or (not x9437) (not x13702))
+:assumption (or (not x19715) (not x3844))
+:assumption (or x29795 (not x23694))
+:assumption (or (not x8577) x7729)
+:assumption (or (not x20862) (not x11871))
+:assumption (or x24341 x12888 (not x15997))
+:assumption (or (not x28791) (not x30113))
+:assumption (or x3191 (not x7324) x30299 (not x382) (not x10761) (not x17618) (not x7692) x20516 (not x10046))
+:assumption (or x6115 (not x30815))
+:assumption (or (not x20666) x8819)
+:assumption (or x2582 x30179)
+:assumption (or x13734 (not x23104))
+:assumption (or x24930 x25793 x14536 (not x1102) x18231)
+:assumption (or (not x18308) x19974)
+:assumption (or x597 x31767 (not x3971))
+:assumption (or (not x19385) x16206)
+:assumption (or x5590 (not x11572) x2975 x21905 x1360)
+:assumption (or x19410 x22229)
+:assumption (or (not x27227) x3665)
+:assumption (or (not x361) x5696)
+:assumption (or (not x28037) (not x14583))
+:assumption (or (not x23773) x3655 x19090 x18957)
+:assumption (or (not x14724) (not x9358))
+:assumption (or (not x24518) (not x23244))
+:assumption (or (not x535) (not x19501))
+:assumption (or x2053 x29286)
+:assumption (or x31130 x18333)
+:assumption (or (not x24944) (not x4562))
+:assumption (or (not x16984) x8124)
+:assumption (or (not x24195) x10511)
+:assumption (or (not x7748) (not x18663))
+:assumption (or x20808 x25643 x21653)
+:assumption (or x21322 x16762)
+:assumption (or (not x10450) x13658)
+:assumption (or (not x19786) (not x18361) (not x9046))
+:assumption (or (not x13146) x6787)
+:assumption (or x10049 (not x11782))
+:assumption (or (not x2187) x19123)
+:assumption (or (not x21722) x25334)
+:assumption (or (not x9691) (not x8002))
+:assumption (or x17440 (not x2060))
+:assumption (or (not x20067) (not x2767))
+:assumption (or (not x6421) (not x511))
+:assumption (or (not x28220) x26021)
+:assumption (or (not x28294) (not x19608))
+:assumption (or (not x14565) (not x21936))
+:assumption (or x23460 (not x26170))
+:assumption (or x23244 x8033)
+:assumption (or x25008 (not x17669))
+:assumption (or x8002 x23244 (not x6375) x12964)
+:assumption (or x17502 x24251)
+:assumption (or x9992 (not x28703))
+:assumption (or x15208 x5636)
+:assumption (or x23244 (not x14914) (not x8002))
+:assumption (or x30377 x11792 x31890 x6149)
+:assumption (or x24729 (not x1013))
+:assumption (or (not x5449) x13040)
+:assumption (or x22142 (not x5201))
+:assumption (or (not x27072) x24880 x2458 (not x16802) (not x21501) (not x3370) (not x23732) (not x27944))
+:assumption (or (not x1590) (not x25588))
+:assumption (or (not x7559) x3100)
+:assumption (or x25224 x20799)
+:assumption (or x9704 x1902)
+:assumption (or x30970 x28296)
+:assumption (or x8234 x1013)
+:assumption (or x17851 x5239)
+:assumption (or x8684 (not x13514))
+:assumption (or (not x31606) x14446)
+:assumption (or (not x25673) x29951)
+:assumption (or (not x23964) x22550)
+:assumption (or (not x16099) x3220)
+:assumption (or x28735 (not x27544))
+:assumption (or x19047 x30803)
+:assumption (or x20778 (not x1146))
+:assumption (or (not x17231) (not x7673))
+:assumption (or x28472 (not x3255))
+:assumption (or (not x8002) (not x11092))
+:assumption (or x21190 x30253 (not x89))
+:assumption (or (not x26292) (not x18878))
+:assumption (or x20694 x10909)
+:assumption (or (not x6621) (not x14227))
+:assumption (or x12665 (not x9008))
+:assumption (or x11514 x10505)
+:assumption (or (not x10428) (not x628))
+:assumption (or (not x12898) (not x12811))
+:assumption (or x16328 x13605)
+:assumption (or x8239 x1393)
+:assumption (or x20908 x21972)
+:assumption (or x25114 (not x25376))
+:assumption (or (not x18722) x11932)
+:assumption (or (not x2222) x13455)
+:assumption (or x19267 (not x18825))
+:assumption (or x31782 x11920)
+:assumption (or x4101 (not x20576))
+:assumption (or (not x12676) (not x22978) x30455)
+:assumption (or (not x11326) x3548)
+:assumption (or (not x18623) x29153)
+:assumption (or x5367 (not x17692))
+:assumption (or x6140 x4887)
+:assumption (or x10619 x22836)
+:assumption (or x15761 x27878)
+:assumption (or x5240 (not x10802))
+:assumption (or x23244 x9347 x8002 x31826)
+:assumption (or (not x5868) (not x18248))
+:assumption (or (not x2381) (not x29528))
+:assumption (or (not x10558) x2303 (not x13109))
+:assumption (or x27402 (not x23244))
+:assumption (or (not x8002) (not x18812))
+:assumption (or (not x6121) x5183)
+:assumption (or x22441 x4895)
+:assumption (or (not x24200) x28946)
+:assumption (or (not x14602) x27850)
+:assumption (or x30432 (not x21154))
+:assumption (or (not x13576) x20965)
+:assumption (or (not x30116) (not x5389) x22474)
+:assumption (or (not x6597) (not x3914) x26670)
+:assumption (or x28511 (not x6216))
+:assumption (or (not x11690) x23226)
+:assumption (or (not x10246) (not x586))
+:assumption (or (not x854) x9227)
+:assumption (or (not x20550) (not x22800))
+:assumption (or (not x13973) x24136)
+:assumption (or x21633 x27730)
+:assumption (or (not x7576) (not x22829))
+:assumption (or x23444 x4830 (not x7357) (not x16781) x3008 (not x18237))
+:assumption (or (not x10316) (not x18411))
+:assumption (or (not x26358) (not x11221))
+:assumption (or x22985 x11050 x28821)
+:assumption (or x9333 x28709)
+:assumption (or (not x26051) x3224 x6338)
+:assumption (or x20576 x8961 x8249 x31539)
+:assumption (or x13182 (not x1393))
+:assumption (or (not x23535) x8007)
+:assumption (or x3862 (not x15821))
+:assumption (or (not x11685) x7039)
+:assumption (or x20371 x1632)
+:assumption (or (not x7764) (not x3316))
+:assumption (or x19967 x21781)
+:assumption (or x31681 x18914 (not x14931))
+:assumption (or (not x18918) (not x25807))
+:assumption (or x8606 (not x25775) x19055 (not x15827) x19501 (not x12200))
+:assumption (or (not x25879) x22680 (not x25224) x16108)
+:assumption (or (not x711) (not x3847))
+:assumption (or x10678 (not x1222))
+:assumption (or x7753 x17363)
+:assumption (or (not x20852) x2671 x5166 (not x23123) x7542)
+:assumption (or x29312 (not x8612) x11571)
+:assumption (or x25193 x30197)
+:assumption (or x6940 (not x25728))
+:assumption (or x14922 (not x805))
+:assumption (or x18348 (not x16844))
+:assumption (or (not x2187) (not x22570))
+:assumption (or (not x1393) (not x30017))
+:assumption (or x26996 x18430)
+:assumption (or (not x24953) x15241)
+:assumption (or (not x25127) x10731)
+:assumption (or (not x29013) x5394)
+:assumption (or (not x19159) x8602 (not x20092) (not x14888) x836 (not x19723) (not x10368) x795)
+:assumption (or x18446 (not x24232))
+:assumption (or (not x25347) x10942)
+:assumption (or x24067 x3573 (not x22428))
+:assumption (or (not x12622) (not x13009))
+:assumption (or (not x5808) (not x5613))
+:assumption (or (not x1147) (not x29396) x6174 x23931 (not x16039))
+:assumption (or x25492 x28009)
+:assumption (or (not x4528) (not x29524))
+:assumption (or x30475 x76 (not x19148) (not x6032) (not x17833) x11053)
+:assumption (or (not x27181) x18168)
+:assumption (or x18232 (not x13242) x9008)
+:assumption (or x12495 x306)
+:assumption (or x31602 x28738)
+:assumption (or (not x8378) (not x18123))
+:assumption (or (not x3072) (not x25558))
+:assumption (or (not x28885) (not x28096))
+:assumption (or (not x8900) (not x31023))
+:assumption (or (not x6783) (not x9484))
+:assumption (or (not x725) (not x22418))
+:assumption (or x26638 (not x24622))
+:assumption (or x918 (not x1138))
+:assumption (or x11512 x11039)
+:assumption (or (not x29858) (not x22803))
+:assumption (or (not x2212) (not x30536))
+:assumption (or x22678 (not x1990))
+:assumption (or (not x23865) (not x31424))
+:assumption (or x2907 x12741)
+:assumption (or (not x20918) (not x14154))
+:assumption (or (not x15214) (not x17966))
+:assumption (or x10606 x1393)
+:assumption (or x18977 x26412)
+:assumption (or x14856 x15742 x8676 x19982 x28963 (not x15657) (not x23643) (not x13149))
+:assumption (or x13207 x25550 (not x4435) (not x22279))
+:assumption (or (not x31660) (not x16533) (not x22735) (not x7220) x10625)
+:assumption (or (not x225) x19762)
+:assumption (or (not x17052) x17514)
+:assumption (or x22742 (not x29668))
+:assumption (or x4690 x9704)
+:assumption (or x8595 x14282)
+:assumption (or x30445 (not x15805))
+:assumption (or (not x21102) x14477)
+:assumption (or (not x30751) x7860 (not x29606))
+:assumption (or (not x6848) x1749)
+:assumption (or x28833 x29333 (not x17346) x12779)
+:assumption (or x9580 x10332)
+:assumption (or (not x10643) x25484)
+:assumption (or x12057 x5906)
+:assumption (or (not x7186) x18148)
+:assumption (or (not x28819) x22548 x12534)
+:assumption (or x505 (not x25033) x27680 x5398 x18012 x29896 (not x4715) x1552)
+:assumption (or (not x21298) x18640)
+:assumption (or (not x26271) (not x31748))
+:assumption (or (not x16354) x3976)
+:assumption (or (not x2892) x8602)
+:assumption (or (not x28892) (not x14595) x21240 (not x5405) x8374 x22816)
+:assumption (or (not x23601) x9180)
+:assumption (or x11440 (not x29127))
+:assumption (or (not x23736) x13001 (not x6243))
+:assumption (or (not x28505) x20113)
+:assumption (or (not x28154) (not x29852))
+:assumption (or x8013 (not x14079))
+:assumption (or x11682 (not x18042))
+:assumption (or x169 (not x19232) (not x762))
+:assumption (or x20655 x1547 x6381)
+:assumption (or x3120 x31520)
+:assumption (or x26276 (not x23927))
+:assumption (or (not x24513) (not x13487) x13282)
+:assumption (or (not x7635) (not x20357))
+:assumption (or x14049 x15664)
+:assumption (or (not x15012) x9716)
+:assumption (or (not x6508) x827)
+:assumption (or x10732 (not x1924))
+:assumption (or x26241 x25562)
+:assumption (or x1292 x1746)
+:assumption (or x7530 (not x20704))
+:assumption (or x25395 (not x23881))
+:assumption (or (not x24024) x19220 x25576)
+:assumption (or (not x1181) (not x1264))
+:assumption (or (not x16375) x3026)
+:assumption (or (not x1534) x17302 (not x5534) x27012)
+:assumption (or (not x12671) x26873)
+:assumption (or (not x28108) x31730 (not x31829) x13240 (not x18928))
+:assumption (or x4909 (not x11356) (not x11149) x8676 x4442)
+:assumption (or (not x27574) x6594)
+:assumption (or (not x14667) (not x2798) x25603 x9354)
+:assumption (or x11565 x3781)
+:assumption (or x15478 x9466)
+:assumption (or x16409 (not x10945))
+:assumption (or (not x17019) (not x1837))
+:assumption (or (not x827) x4583 x19699)
+:assumption (or x25001 x22029)
+:assumption (or x25597 (not x12189))
+:assumption (or (not x10617) x16312)
+:assumption (or x472 x4636 (not x9338))
+:assumption (or x22725 x3435)
+:assumption (or x6108 x3518)
+:assumption (or x4666 x30745)
+:assumption (or (not x28638) x8897)
+:assumption (or (not x5784) (not x25868))
+:assumption (or x13926 x12578)
+:assumption (or x28665 (not x1393) x14823)
+:assumption (or x7357 (not x1722))
+:assumption (or (not x13882) x6821)
+:assumption (or (not x16668) x5896)
+:assumption (or (not x12333) (not x19689))
+:assumption (or x13207 (not x30138) x16275 (not x24663))
+:assumption (or x3834 x19657)
+:assumption (or (not x25293) (not x15434))
+:assumption (or x14038 x19244)
+:assumption (or x27027 (not x15065))
+:assumption (or x19992 x26928)
+:assumption (or x2776 x22158)
+:assumption (or x17513 x6171)
+:assumption (or x1690 x19042)
+:assumption (or x5114 x31067)
+:assumption (or x28788 x8581)
+:assumption (or (not x2148) (not x6289) x25350)
+:assumption (or x22020 (not x688))
+:assumption (or x18672 (not x14727) x5886 (not x8961))
+:assumption (or (not x26215) (not x28264))
+:assumption (or x26293 (not x2665))
+:assumption (or x18753 x13326)
+:assumption (or x2564 (not x25423))
+:assumption (or x13886 x20149)
+:assumption (or x28554 x29997)
+:assumption (or x11064 (not x16373))
+:assumption (or x3828 (not x801))
+:assumption (or x25414 x31236)
+:assumption (or (not x240) x2926)
+:assumption (or x26916 (not x23931))
+:assumption (or (not x21852) x4016)
+:assumption (or (not x2807) x456)
+:assumption (or x13611 (not x6501))
+:assumption (or (not x21775) x9272 (not x3879) x26653)
+:assumption (or x15711 (not x22678) (not x8846) x8270 x14238)
+:assumption (or x13956 x15478)
+:assumption (or x25824 (not x399))
+:assumption (or (not x18519) (not x25366) (not x18872) (not x22911))
+:assumption (or x2818 x30972)
+:assumption (or (not x24068) x8571)
+:assumption (or (not x27379) x4026 (not x27012))
+:assumption (or (not x8860) (not x11720))
+:assumption (or (not x4519) (not x10181))
+:assumption (or x26049 (not x3561))
+:assumption (or x24722 x25355 (not x18639))
+:assumption (or x6779 (not x29792))
+:assumption (or x3444 (not x10378))
+:assumption (or (not x21763) (not x13810))
+:assumption (or (not x9880) (not x2661))
+:assumption (or (not x22144) (not x1620) (not x5639) x12043 x23675 (not x18300) x13829)
+:assumption (or (not x9943) (not x20750))
+:assumption (or x12542 (not x6469))
+:assumption (or x26560 (not x11707))
+:assumption (or (not x5711) (not x18666))
+:assumption (or x12235 (not x190))
+:assumption (or (not x23360) (not x25482))
+:assumption (or x21849 x24535)
+:assumption (or x13439 (not x13582))
+:assumption (or (not x20316) x19458)
+:assumption (or x15046 (not x12623))
+:assumption (or (not x11725) x16492)
+:assumption (or (not x9423) x30544)
+:assumption (or (not x12651) x16335)
+:assumption (or (not x23760) (not x2195))
+:assumption (or (not x25846) (not x4033))
+:assumption (or x11594 (not x24756))
+:assumption (or (not x29855) (not x5081))
+:assumption (or x19563 x29923)
+:assumption (or (not x8083) x15756)
+:assumption (or (not x28686) (not x1806))
+:assumption (or (not x23244) x31743)
+:assumption (or x14224 (not x15030))
+:assumption (or x11515 x12745)
+:assumption (or x28960 (not x29459) x18854 x25606 x6421 (not x29462) x12885)
+:assumption (or x19685 (not x11127))
+:assumption (or (not x18646) x20793 x4338 x2671 (not x20030))
+:assumption (or (not x1691) x12990)
+:assumption (or (not x602) x2182)
+:assumption (or (not x17563) (not x14536))
+:assumption (or x11451 (not x29928))
+:assumption (or x16650 (not x13901))
+:assumption (or (not x17770) (not x30764))
+:assumption (or (not x6174) x17951)
+:assumption (or (not x26149) (not x5246))
+:assumption (or (not x23405) x56)
+:assumption (or (not x31888) (not x12033))
+:assumption (or x11938 x27194)
+:assumption (or x8967 (not x28612))
+:assumption (or x30462 x13064)
+:assumption (or x3604 (not x11308))
+:assumption (or (not x30633) x2998)
+:assumption (or x24788 (not x19509))
+:assumption (or x2387 (not x10626))
+:assumption (or (not x8697) x31927 x10200 (not x24494))
+:assumption (or x17004 x14508 x1674 (not x13786) (not x25973))
+:assumption (or x16510 (not x27605))
+:assumption (or (not x3488) x7145)
+:assumption (or (not x30962) (not x25610))
+:assumption (or (not x6884) (not x27914))
+:assumption (or x4559 (not x20944))
+:assumption (or (not x30749) x27220 x21382 x26215 (not x16937) x28680 (not x23556) x17748)
+:assumption (or (not x21580) (not x6537) (not x18150))
+:assumption (or x7902 (not x27453))
+:assumption (or (not x10788) (not x24814))
+:assumption (or x26738 (not x29304))
+:assumption (or (not x3548) (not x26199) x16741 x12844)
+:assumption (or (not x1595) (not x29808))
+:assumption (or (not x8096) (not x5939))
+:assumption (or (not x9188) (not x24294))
+:assumption (or x29606 (not x15875) (not x31134) (not x7033))
+:assumption (or (not x28469) x2643)
+:assumption (or (not x7209) x1234)
+:assumption (or (not x22985) (not x28821))
+:assumption (or (not x21414) (not x2962) (not x25659))
+:assumption (or (not x20505) x9008)
+:assumption (or x15472 (not x27111))
+:assumption (or x12956 (not x16025))
+:assumption (or (not x30506) x31129 x23960 x31384 x17431)
+:assumption (or x22338 x202)
+:assumption (or x5396 x9448)
+:assumption (or x2902 (not x16978))
+:assumption (or (not x16283) x9008)
+:assumption (or (not x25165) x142 (not x26414))
+:assumption (or x886 (not x7970))
+:assumption (or x25129 x29784)
+:assumption (or x17578 x19085)
+:assumption (or (not x6193) x27875)
+:assumption (or x6721 x30659)
+:assumption (or x3297 x14987 (not x1805) x5367)
+:assumption (or x19509 x26956 x3893 (not x656) (not x24788) x17693 (not x26317) (not x250))
+:assumption (or (not x9493) (not x14032))
+:assumption (or (not x24155) x12544 x27545 x2951)
+:assumption (or x29345 (not x31200))
+:assumption (or x3061 x19388)
+:assumption (or x28902 (not x20657))
+:assumption (or (not x25123) x13014)
+:assumption (or (not x3800) (not x15863))
+:assumption (or x26313 x3412)
+:assumption (or (not x16856) x8351)
+:assumption (or x21302 x19909)
+:assumption (or x26643 (not x14399))
+:assumption (or (not x14006) x7826)
+:assumption (or (not x29073) x29368)
+:assumption (or x3494 (not x12357))
+:assumption (or x27746 (not x29311))
+:assumption (or x14917 x13289)
+:assumption (or x15996 x24736)
+:assumption (or (not x1468) x20104)
+:assumption (or (not x13609) (not x10082))
+:assumption (or x15661 (not x21873))
+:assumption (or (not x21004) x18386 (not x5465) (not x14040) x9571 (not x8496))
+:assumption (or x24085 x4688)
+:assumption (or (not x15383) (not x19504))
+:assumption (or (not x21885) x18583)
+:assumption (or (not x18042) x1580 (not x29694))
+:assumption (or x26480 (not x22212))
+:assumption (or (not x9563) (not x13433) x10201 (not x19490) (not x13728))
+:assumption (or x10100 (not x17692))
+:assumption (or x25722 (not x18859))
+:assumption (or x23399 x18434)
+:assumption (or x26869 x10277)
+:assumption (or (not x14184) x24904)
+:assumption (or x30496 (not x12534))
+:assumption (or x20772 (not x21202) x20651 x12388)
+:assumption (or x18771 (not x22598))
+:assumption (or (not x2115) (not x20072))
+:assumption (or (not x28666) x17199)
+:assumption (or (not x16733) x20060)
+:assumption (or x28973 (not x18319) x6171)
+:assumption (or (not x16941) (not x12671))
+:assumption (or x9777 x16803)
+:assumption (or (not x1423) (not x19399))
+:assumption (or (not x10253) x11036)
+:assumption (or x26930 (not x15516))
+:assumption (or (not x2919) (not x156))
+:assumption (or (not x8854) (not x24847))
+:assumption (or x24917 x13954)
+:assumption (or (not x15711) (not x8270))
+:assumption (or x12758 (not x23550))
+:assumption (or (not x16704) x9553)
+:assumption (or x9865 x21653)
+:assumption (or (not x17508) x23244)
+:assumption (or (not x16025) (not x17669))
+:assumption (or (not x15251) x3013)
+:assumption (or (not x16362) (not x5528) x10335 (not x20987) (not x9008))
+:assumption (or (not x1775) x25270)
+:assumption (or (not x16357) x21095)
+:assumption (or x11839 (not x2518))
+:assumption (or x5696 (not x15261) x5528)
+:assumption (or (not x30756) x29546)
+:assumption (or x22397 x14591 x15795 x10587)
+:assumption (or x30085 x25745 (not x30030))
+:assumption (or (not x23498) x2694)
+:assumption (or x15795 x17554)
+:assumption (or (not x21932) x9901)
+:assumption (or (not x7432) x6038)
+:assumption (or (not x55) (not x5264))
+:assumption (or (not x25254) (not x22967))
+:assumption (or (not x28272) x1980)
+:assumption (or x29624 x13612)
+:assumption (or x11759 x2932)
+:assumption (or (not x9482) x26003)
+:assumption (or x19672 x22893)
+:assumption (or (not x9313) (not x3564) x17336 (not x10519) (not x18109))
+:assumption (or (not x14648) (not x13956))
+:assumption (or x21026 x30049 x22781 x168 (not x22796))
+:assumption (or x20924 x27961)
+:assumption (or x21298 (not x441) x16692 (not x22472))
+:assumption (or x28734 x13964)
+:assumption (or x19156 x11)
+:assumption (or (not x13445) x30378)
+:assumption (or (not x21810) x24810)
+:assumption (or (not x31427) (not x16130) x29155 (not x3110) x30257)
+:assumption (or x5528 x21318)
+:assumption (or x10341 (not x23886) x5660)
+:assumption (or (not x4602) (not x16475))
+:assumption (or x11603 x5671 x1393)
+:assumption (or x7506 (not x16627))
+:assumption (or (not x11039) (not x11512))
+:assumption (or (not x20489) x12920)
+:assumption (or x30002 (not x11746))
+:assumption (or x1264 (not x20389) (not x19139) (not x5239) x1181)
+:assumption (or (not x31029) (not x10965))
+:assumption (or (not x8656) x29963)
+:assumption (or (not x26191) x2543 x28116 (not x6164) x15167 (not x13905))
+:assumption (or (not x14278) x30319)
+:assumption (or (not x8002) x26342)
+:assumption (or (not x9898) x12080)
+:assumption (or x17197 (not x26140))
+:assumption (or x17359 (not x25698) x25501)
+:assumption (or x20824 x6501 x28752 x2501 x28273 (not x17927) x15673 x1393)
+:assumption (or x16025 x22829 x1677)
+:assumption (or (not x24599) x28172)
+:assumption (or x17810 (not x5410) (not x20869) x29553 (not x26171) (not x3158) (not x21159) (not x28634))
+:assumption (or (not x14078) (not x15997))
+:assumption (or x2995 (not x25659) (not x29942))
+:assumption (or (not x25423) (not x28059))
+:assumption (or x17482 (not x7632))
+:assumption (or x4378 x15791)
+:assumption (or (not x11494) (not x23797))
+:assumption (or x8398 (not x1733))
+:assumption (or x21001 (not x18519) (not x9025))
+:assumption (or x30785 (not x27973))
+:assumption (or x14663 (not x19291))
+:assumption (or x2388 (not x8930))
+:assumption (or x8714 x13073)
+:assumption (or x9065 x22356)
+:assumption (or (not x8002) x4790)
+:assumption (or (not x27749) (not x28405))
+:assumption (or x6925 (not x7377))
+:assumption (or (not x19721) x8368)
+:assumption (or x22797 x1725)
+:assumption (or (not x13475) x28144)
+:assumption (or (not x13354) (not x25766))
+:assumption (or x16872 x380)
+:assumption (or (not x3720) (not x12045))
+:assumption (or (not x8931) x8002)
+:assumption (or x16661 (not x11890))
+:assumption (or x4008 x10582)
+:assumption (or (not x6837) (not x13450))
+:assumption (or x13878 x3137)
+:assumption (or x244 x14876)
+:assumption (or x22871 x11479)
+:assumption (or (not x17861) (not x8310))
+:assumption (or (not x25502) (not x27445))
+:assumption (or (not x23360) (not x12953))
+:assumption (or (not x28783) x19214)
+:assumption (or (not x13645) (not x13351))
+:assumption (or (not x21282) x17677)
+:assumption (or (not x18408) x13915)
+:assumption (or (not x23244) (not x24128) (not x4994) (not x9874) x26862 (not x13426))
+:assumption (or x16298 x5174)
+:assumption (or x27579 x17520)
+:assumption (or x30533 (not x28676))
+:assumption (or (not x7537) x2315 x18579 (not x16066) (not x4765))
+:assumption (or x9800 x24260)
+:assumption (or (not x13120) x31212)
+:assumption (or x1341 (not x10774))
+:assumption (or (not x9255) x26789 (not x25195) x20651)
+:assumption (or (not x13217) x4594)
+:assumption (or x19529 (not x6966))
+:assumption (or x25334 x29877)
+:assumption (or (not x9118) x16365)
+:assumption (or x13036 x6286)
+:assumption (or (not x22104) (not x28832) x30476 x13881 (not x30796) (not x26220) x21683 (not x1743))
+:assumption (or x15603 x26582)
+:assumption (or (not x18565) x13704)
+:assumption (or x288 x6512)
+:assumption (or (not x21796) (not x24823))
+:assumption (or (not x25513) (not x979))
+:assumption (or x30113 (not x852))
+:assumption (or x14566 (not x9949))
+:assumption (or x27524 (not x9004) (not x643) (not x9901) x14819 x21932 x30407)
+:assumption (or x5867 x21908)
+:assumption (or (not x25775) x4737)
+:assumption (or x16242 x11581)
+:assumption (or x712 x9818 x30856)
+:assumption (or (not x20114) (not x23313) x15342 (not x31627) x908)
+:assumption (or (not x1445) x16031)
+:assumption (or (not x1897) (not x20470))
+:assumption (or (not x25071) (not x4760))
+:assumption (or (not x918) x7226)
+:assumption (or (not x5528) (not x12420) (not x14649) (not x9008) (not x4108))
+:assumption (or x3569 x18611 (not x9008))
+:assumption (or (not x18789) x11671)
+:assumption (or x27024 x27943)
+:assumption (or x7022 x23977)
+:assumption (or x18466 (not x11355) x17576 x5691 x14658 (not x23513) x11160 x892)
+:assumption (or (not x23901) x10770)
+:assumption (or (not x18493) x18015)
+:assumption (or (not x6867) (not x29489) x13956)
+:assumption (or x12193 x11944)
+:assumption (or x26234 x9008 (not x3598))
+:assumption (or x30457 (not x6500))
+:assumption (or (not x6892) (not x8600) (not x2804) (not x27902) x24511 (not x22116) (not x14222) x6909)
+:assumption (or x29117 (not x507))
+:assumption (or (not x27411) (not x10874) x19651)
+:assumption (or (not x20267) x24090)
+:assumption (or x9494 (not x9330))
+:assumption (or (not x7200) (not x673))
+:assumption (or x24037 (not x25451))
+:assumption (or x15279 x21633)
+:assumption (or (not x11655) x20356)
+:assumption (or (not x19091) (not x8003) (not x21298))
+:assumption (or (not x878) x6221)
+:assumption (or x832 (not x5670))
+:assumption (or x11792 (not x6149) (not x20112) (not x9698))
+:assumption (or (not x218) (not x610) (not x8124) x13580 (not x29276) (not x24057) (not x12929))
+:assumption (or x31767 (not x4010))
+:assumption (or (not x24867) x20550)
+:assumption (or x30840 x11882)
+:assumption (or x9403 x17110)
+:assumption (or x47 (not x2957))
+:assumption (or (not x21473) x1875)
+:assumption (or (not x13805) (not x120))
+:assumption (or (not x11179) (not x13956) x22627)
+:assumption (or x10340 x30712)
+:assumption (or (not x5539) x29242)
+:assumption (or (not x12915) x26647)
+:assumption (or (not x2150) (not x6969))
+:assumption (or x12393 x8778)
+:assumption (or x5961 x17766)
+:assumption (or x5394 (not x9587))
+:assumption (or (not x18983) (not x18813))
+:assumption (or (not x11395) (not x1107))
+:assumption (or (not x15065) x21967)
+:assumption (or x9261 x6250)
+:assumption (or x23641 (not x10020))
+:assumption (or x3267 (not x23244) (not x30620))
+:assumption (or (not x10168) x9523)
+:assumption (or (not x24540) x19903 (not x11851) x2479 x23654)
+:assumption (or x30394 x4026)
+:assumption (or (not x4355) x18084)
+:assumption (or x9709 x6161)
+:assumption (or (not x28644) x18566)
+:assumption (or (not x26399) (not x14245))
+:assumption (or (not x29456) x9531)
+:assumption (or x27311 (not x25768) (not x7067) x13108 (not x30678) x7530)
+:assumption (or x22024 x30433)
+:assumption (or x23594 x998)
+:assumption (or (not x15101) (not x24571))
+:assumption (or (not x13415) (not x1967))
+:assumption (or x5572 (not x31236))
+:assumption (or (not x18379) (not x31923))
+:assumption (or x24394 x288)
+:assumption (or (not x12271) (not x31574) x21566)
+:assumption (or (not x9466) (not x21224))
+:assumption (or (not x21903) x26603)
+:assumption (or (not x20651) (not x11072))
+:assumption (or x16616 (not x17763) x3521 x23364 x24828)
+:assumption (or x7239 x11651)
+:assumption (or x8602 x907 (not x15627))
+:assumption (or (not x20765) x22173)
+:assumption (or x19652 x19390)
+:assumption (or (not x14434) x15856 x27258 (not x14148))
+:assumption (or (not x12100) (not x21656))
+:assumption (or (not x17941) x18760)
+:assumption (or x29848 x9008)
+:assumption (or (not x5276) (not x19559))
+:assumption (or (not x19640) x10909)
+:assumption (or (not x9347) (not x31826))
+:assumption (or (not x27507) (not x8539))
+:assumption (or x13095 x9134)
+:assumption (or (not x30233) x11134)
+:assumption (or x11296 x13625)
+:assumption (or x211 (not x5882))
+:assumption (or (not x31647) (not x27957))
+:assumption (or x16025 (not x22472) x9248)
+:assumption (or (not x5886) x21510 x8961 (not x4039) x8690)
+:assumption (or x28143 (not x19870))
+:assumption (or x22692 x23328)
+:assumption (or x13802 x28497)
+:assumption (or (not x13082) x21298)
+:assumption (or x23303 (not x1782) x29053 x4645 (not x23689) x25026 x24760 (not x7041) x10031)
+:assumption (or x21299 x6594)
+:assumption (or (not x12279) (not x20521))
+:assumption (or (not x14839) x435)
+:assumption (or (not x11515) (not x12745) (not x25366))
+:assumption (or x27176 x8730)
+:assumption (or (not x2292) x22843)
+:assumption (or x26421 x22347)
+:assumption (or (not x31653) (not x13558))
+:assumption (or x5291 x1296)
+:assumption (or (not x15390) x22566)
+:assumption (or (not x31478) x9624)
+:assumption (or (not x26589) (not x22375))
+:assumption (or (not x8607) x26432)
+:assumption (or (not x18333) (not x21364) x12209)
+:assumption (or (not x27222) x12578)
+:assumption (or (not x3994) (not x5246))
+:assumption (or (not x10123) (not x10595))
+:assumption (or (not x16450) x10295)
+:assumption (or (not x8002) x5415 (not x27246))
+:assumption (or x26098 (not x7649))
+:assumption (or x14951 (not x22019))
+:assumption (or x22595 (not x16075) (not x21756) (not x23571) (not x16595) x7751)
+:assumption (or x27957 (not x30957) x839)
+:assumption (or (not x26972) x28488)
+:assumption (or x4720 (not x30696) (not x21999) x24929 x28328 x17101 x2963)
+:assumption (or x2334 (not x13487) x25480)
+:assumption (or (not x29625) (not x22921))
+:assumption (or x14133 (not x4882))
+:assumption (or (not x17391) (not x151))
+:assumption (or x8793 (not x311) x18594)
+:assumption (or x28831 (not x14696))
+:assumption (or (not x867) (not x455))
+:assumption (or x704 x26443)
+:assumption (or (not x29606) (not x1358))
+:assumption (or (not x8120) (not x12712))
+:assumption (or x17295 x25725)
+:assumption (or (not x6433) (not x7714))
+:assumption (or x19322 x16579)
+:assumption (or (not x13956) x7012 x26465)
+:assumption (or (not x905) (not x20262))
+:assumption (or x18428 x5312)
+:assumption (or (not x4352) x16617)
+:assumption (or (not x20253) (not x29460))
+:assumption (or (not x27973) x15648)
+:assumption (or (not x20128) (not x7036) (not x28973))
+:assumption (or x4886 (not x14859))
+:assumption (or (not x19174) x13527)
+:assumption (or x28731 (not x23854))
+:assumption (or (not x16324) x4492)
+:assumption (or (not x29148) x9951)
+:assumption (or (not x675) (not x1357) x17860)
+:assumption (or (not x30463) x1547 x25086 x30939)
+:assumption (or x19453 (not x18149))
+:assumption (or x15662 x13770 (not x15005) (not x17173) (not x3938) (not x4641) x21298)
+:assumption (or x5846 x22624)
+:assumption (or (not x11108) x16632)
+:assumption (or x2142 (not x3825))
+:assumption (or x22889 x8178)
+:assumption (or x8002 (not x21147))
+:assumption (or (not x10587) x24834 (not x30406))
+:assumption (or x14469 (not x25022))
+:assumption (or x1459 x29583)
+:assumption (or x10216 x30751 x24504)
+:assumption (or (not x2784) x24431)
+:assumption (or (not x12381) x13460)
+:assumption (or (not x11621) (not x20351))
+:assumption (or (not x29713) x26107)
+:assumption (or (not x22868) x21588)
+:assumption (or (not x9583) x28844)
+:assumption (or x21554 x27711)
+:assumption (or (not x22679) (not x27502))
+:assumption (or x25958 (not x14839))
+:assumption (or (not x23023) x23065)
+:assumption (or (not x1899) x3749 (not x21953))
+:assumption (or x4157 (not x25609))
+:assumption (or (not x24340) x11328)
+:assumption (or x5558 x9985 (not x22396) x8036)
+:assumption (or (not x13476) (not x7159))
+:assumption (or x20181 (not x2510))
+:assumption (or (not x24597) (not x17468))
+:assumption (or x17214 x5943 x27104 x14347)
+:assumption (or x25418 x27289)
+:assumption (or x17302 (not x4254) x11332 (not x27365))
+:assumption (or (not x703) x538)
+:assumption (or x25400 x28474)
+:assumption (or x10339 (not x29411))
+:assumption (or x20324 (not x13442))
+:assumption (or (not x22909) (not x54))
+:assumption (or x15170 x25055)
+:assumption (or x23558 x16045 (not x1621))
+:assumption (or x10686 (not x12087))
+:assumption (or x17436 (not x25249))
+:assumption (or (not x11841) (not x7181))
+:assumption (or x27747 (not x28737))
+:assumption (or (not x4451) x25690 (not x10416) x20890)
+:assumption (or x27624 x16361)
+:assumption (or (not x13105) x4575)
+:assumption (or (not x23864) x9928)
+:assumption (or x4879 x27662)
+:assumption (or (not x14593) x7517)
+:assumption (or x17111 (not x20373))
+:assumption (or (not x31009) (not x8513))
+:assumption (or x3538 (not x10075) x23308 x5818 x963 (not x24897) x15876)
+:assumption (or x14206 x22190 x3991 (not x12818))
+:assumption (or x8209 (not x7220))
+:assumption (or x5722 (not x29898) x25638 x27940 (not x6705))
+:assumption (or (not x21298) (not x20941) (not x6975))
+:assumption (or (not x2025) x11555)
+:assumption (or x2134 (not x9237))
+:assumption (or x31669 (not x24590))
+:assumption (or (not x29772) x9620)
+:assumption (or x17871 x30751)
+:assumption (or x8002 x16958 x15685 x23726 (not x16169) x19371)
+:assumption (or x25031 x12813)
+:assumption (or (not x13748) x26124)
+:assumption (or x24240 x8575)
+:assumption (or (not x6270) x25947 (not x485))
+:assumption (or x15567 (not x7237))
+:assumption (or (not x28781) x20021)
+:assumption (or (not x4707) x9531)
+:assumption (or (not x5448) x8562)
+:assumption (or (not x15571) x17594 (not x26946) x19155 x21274 x11014 (not x23406) x6307)
+:assumption (or x28418 x27952 (not x19000) x6246)
+:assumption (or x18481 x78)
+:assumption (or x13071 x13674)
+:assumption (or x25659 x29680 x28242 x21414)
+:assumption (or (not x14567) x29566 (not x26977) x18211 x2953 x10758)
+:assumption (or (not x31222) (not x25383) x23797 x11494 x14124 (not x12552))
+:assumption (or (not x10327) (not x9701) (not x13434) (not x27287))
+:assumption (or x29560 (not x26077))
+:assumption (or (not x20679) (not x6671))
+:assumption (or (not x31694) x18334)
+:assumption (or (not x26940) x28100)
+:assumption (or x23372 x5528)
+:assumption (or (not x22186) x10609)
+:assumption (or (not x9008) (not x30061))
+:assumption (or (not x4762) (not x16359))
+:assumption (or (not x26822) x14812)
+:assumption (or (not x24761) x6451)
+:assumption (or (not x27937) x21133)
+:assumption (or (not x13956) (not x29799) x30255 (not x30579))
+:assumption (or (not x17553) x5907)
+:assumption (or x30662 (not x13956))
+:assumption (or (not x14017) x2588)
+:assumption (or x26453 (not x29591) (not x6419) (not x15193))
+:assumption (or x24070 x4320)
+:assumption (or (not x4006) (not x7278))
+:assumption (or x31275 (not x13188))
+:assumption (or (not x25646) (not x23295))
+:assumption (or x988 x6930 (not x6126) x1120)
+:assumption (or (not x16510) (not x10961) x19864 (not x21815) x27091 (not x28912) x24433)
+:assumption (or (not x2854) x7655)
+:assumption (or x23127 (not x1586))
+:assumption (or x10809 (not x4098) x13891 (not x5948))
+:assumption (or (not x20641) x12219 (not x4422))
+:assumption (or (not x7671) x1561)
+:assumption (or x5528 x19401)
+:assumption (or x22550 x26157)
+:assumption (or x6149 (not x12978) (not x19704) x6869 x2010)
+:assumption (or (not x3516) x9212 x20130 x15476 x31095)
+:assumption (or x24782 (not x6575) (not x25219) (not x30469) x3500 (not x29501))
+:assumption (or (not x839) (not x14538))
+:assumption (or (not x3050) (not x22228))
+:assumption (or (not x15117) x24996)
+:assumption (or (not x31453) (not x31186))
+:assumption (or x2563 (not x25471))
+:assumption (or (not x13956) (not x12588) x19760)
+:assumption (or (not x13439) x29875)
+:assumption (or (not x31829) (not x12292) x20576 x14814 x3474 x918)
+:assumption (or x19311 x29719)
+:assumption (or x11315 x17122)
+:assumption (or (not x4635) x31837)
+:assumption (or (not x24934) x8863)
+:assumption (or (not x9062) x28283)
+:assumption (or x29742 (not x10072))
+:assumption (or (not x19532) (not x20763))
+:assumption (or x11654 (not x27023))
+:assumption (or x22805 x8151)
+:assumption (or (not x16138) (not x396))
+:assumption (or (not x23244) x13856)
+:assumption (or x25011 x2221)
+:assumption (or x27888 (not x21503))
+:assumption (or x3842 (not x3426))
+:assumption (or x10746 x1857)
+:assumption (or x27272 x14115)
+:assumption (or (not x22585) x14846 (not x23986) (not x25961) (not x7921) x17494 x14760 x11655)
+:assumption (or x23268 (not x15659))
+:assumption (or (not x22414) (not x18898))
+:assumption (or (not x19935) (not x22460))
+:assumption (or (not x14839) (not x6134))
+:assumption (or (not x9409) (not x9807))
+:assumption (or x29771 (not x26917) x16802 x24722)
+:assumption (or x3003 (not x12180))
+:assumption (or (not x1110) (not x6677))
+:assumption (or (not x9878) x26330)
+:assumption (or x13189 (not x21798) (not x9086) x16765 (not x13574))
+:assumption (or x24722 (not x30873))
+:assumption (or x14938 (not x2943) x22243 x26789)
+:assumption (or (not x8002) x24583 (not x11341))
+:assumption (or x7542 x19763)
+:assumption (or x10310 x27472)
+:assumption (or (not x22421) x9026)
+:assumption (or (not x27021) x16908)
+:assumption (or x10611 x8832)
+:assumption (or x31671 (not x21298))
+:assumption (or x953 (not x16652) (not x20244) (not x20060) x6351 x28465)
+:assumption (or x14709 x27128)
+:assumption (or (not x6909) x2804)
+:assumption (or (not x17315) x14557)
+:assumption (or (not x24773) (not x27653))
+:assumption (or x3142 x27518)
+:assumption (or (not x18433) (not x22994))
+:assumption (or (not x8054) (not x31749))
+:assumption (or (not x17591) (not x6679))
+:assumption (or x23108 x8002 x23244 x1585)
+:assumption (or (not x28002) (not x252) x6444)
+:assumption (or (not x1393) x3621)
+:assumption (or x23304 (not x25659))
+:assumption (or (not x26532) x29384)
+:assumption (or x6771 (not x9866))
+:assumption (or x9721 x15790)
+:assumption (or (not x8002) (not x19977))
+:assumption (or (not x22864) (not x2514))
+:assumption (or x5783 x18453)
+:assumption (or x16686 x10910 x10359 x9431)
+:assumption (or x15417 x21026)
+:assumption (or x6250 x12298)
+:assumption (or (not x18812) x15733)
+:assumption (or x27972 x17169)
+:assumption (or (not x13956) (not x5479) x1542)
+:assumption (or (not x30227) (not x9453) (not x2222))
+:assumption (or x2472 x2588)
+:assumption (or x18003 (not x6702) x28481)
+:assumption (or (not x22363) x124)
+:assumption (or x5206 x21298 x20127 x39)
+:assumption (or x20599 x7708 x28010 x16149 (not x25024) (not x3576))
+:assumption (or (not x11278) x27031)
+:assumption (or x18668 x9008 (not x11614) x18194 (not x22853) (not x2534) x31057 (not x5869))
+:assumption (or (not x9581) (not x27678) (not x14751) (not x26670) (not x5921) (not x19113))
+:assumption (or x22263 (not x23748))
+:assumption (or (not x23387) x28047)
+:assumption (or (not x25325) x293 (not x1995) x17075)
+:assumption (or x22949 (not x13178) x13733 (not x23244) x16449 (not x22777))
+:assumption (or x18464 (not x525))
+:assumption (or x7776 x21223)
+:assumption (or (not x9300) (not x2872))
+:assumption (or (not x25423) x3256)
+:assumption (or (not x20701) (not x9989))
+:assumption (or (not x5028) (not x4555) (not x26032) (not x29442))
+:assumption (or x23892 x25099)
+:assumption (or x29112 x964)
+:assumption (or x29982 x17028)
+:assumption (or x8250 (not x2916) x3535 x19199 (not x19790) (not x10445) x24527 (not x27683))
+:assumption (or x30124 (not x21844) x20654 x13300)
+:assumption (or (not x8969) (not x2334))
+:assumption (or (not x8270) x19123)
+:assumption (or x26432 (not x17519) (not x29171))
+:assumption (or (not x18452) (not x20266))
+:assumption (or x27805 (not x2539))
+:assumption (or (not x2702) x12576)
+:assumption (or (not x5061) x9008)
+:assumption (or x28072 (not x25142))
+:assumption (or x29418 (not x20967))
+:assumption (or (not x7835) (not x12651))
+:assumption (or x1453 x455)
+:assumption (or (not x21429) x12091)
+:assumption (or x16304 (not x3908))
+:assumption (or x30496 x4773)
+:assumption (or x6831 (not x23834))
+:assumption (or x1345 (not x23619))
+:assumption (or (not x5845) x23769)
+:assumption (or x16438 x198)
+:assumption (or (not x1579) (not x939))
+:assumption (or x7924 (not x26636))
+:assumption (or (not x11283) x20550 x25659 x1582 x29333)
+:assumption (or (not x21022) (not x3048) (not x1601) x24238)
+:assumption (or (not x1831) x7194)
+:assumption (or (not x27649) (not x7854) x24203)
+:assumption (or x18726 (not x27349))
+:assumption (or (not x28223) (not x23159))
+:assumption (or (not x3645) x27757)
+:assumption (or (not x21285) (not x5058))
+:assumption (or x7323 x12733)
+:assumption (or (not x28196) x29814)
+:assumption (or (not x26751) (not x1348) (not x21465))
+:assumption (or x20495 x23319)
+:assumption (or x31229 (not x71))
+:assumption (or (not x24741) x24032)
+:assumption (or (not x18003) (not x7759) x19864 (not x21685))
+:assumption (or x25535 x11086)
+:assumption (or x873 x3746)
+:assumption (or x31801 (not x18950))
+:assumption (or (not x624) x17665 x14839)
+:assumption (or (not x4374) (not x7643))
+:assumption (or x9398 (not x9014) (not x10066))
+:assumption (or (not x24756) x31711)
+:assumption (or (not x25148) (not x19964))
+:assumption (or x22722 x3736 x14026)
+:assumption (or (not x13401) x8008)
+:assumption (or x16241 (not x6538))
+:assumption (or (not x28365) x5792)
+:assumption (or x15109 x22002)
+:assumption (or x10793 (not x7245))
+:assumption (or (not x11203) (not x23706))
+:assumption (or x13031 (not x27090))
+:assumption (or x31641 x4059 (not x17362) (not x20205) x11193 (not x15497))
+:assumption (or (not x18194) x25212)
+:assumption (or (not x26438) (not x5984))
+:assumption (or (not x2839) (not x29057))
+:assumption (or x18865 (not x10773))
+:assumption (or (not x661) (not x7835) (not x31030) (not x26305))
+:assumption (or x23886 x16851 (not x1343) x24857)
+:assumption (or x27537 (not x6189))
+:assumption (or (not x28178) (not x9576))
+:assumption (or x6844 x30312)
+:assumption (or x21411 x7762)
+:assumption (or (not x22733) x16339 x8229 (not x4680))
+:assumption (or (not x18705) x17203)
+:assumption (or x29999 (not x10497))
+:assumption (or x29502 x14603)
+:assumption (or (not x27169) (not x1949))
+:assumption (or x30830 x13169)
+:assumption (or x16827 x2104)
+:assumption (or (not x2360) x26713)
+:assumption (or (not x14720) (not x20898) (not x29089))
+:assumption (or x28151 x27412)
+:assumption (or (not x17846) x7600 x22295 (not x6264))
+:assumption (or x4343 x6128)
+:assumption (or (not x17534) x16934)
+:assumption (or (not x1692) x28610)
+:assumption (or x16347 x26833)
+:assumption (or x6292 (not x24302) (not x14320) x616)
+:assumption (or x25913 x3776)
+:assumption (or x29715 x9455)
+:assumption (or (not x29833) x28404 x6571 x24751)
+:assumption (or x12609 (not x29606))
+:assumption (or (not x14942) x205)
+:assumption (or (not x26335) (not x5528) (not x14133) x4882 x20507 x8888)
+:assumption (or (not x20035) (not x23244))
+:assumption (or (not x17055) x16101)
+:assumption (or x14869 (not x6568))
+:assumption (or x31568 (not x24387))
+:assumption (or (not x17447) (not x17356))
+:assumption (or x18969 (not x13463))
+:assumption (or x9302 x8987)
+:assumption (or (not x21793) x12859)
+:assumption (or (not x14628) (not x12527))
+:assumption (or (not x14839) x24575 x5767)
+:assumption (or x16006 (not x23296))
+:assumption (or x14822 x21839)
+:assumption (or x18552 x14591)
+:assumption (or (not x27333) (not x12581))
+:assumption (or (not x26159) x28601)
+:assumption (or x3093 x16935)
+:assumption (or (not x8709) x31578)
+:assumption (or (not x28880) x9389)
+:assumption (or x26723 x6149 (not x6352) x11792)
+:assumption (or x22495 (not x5370) x21308 (not x4260))
+:assumption (or x20464 (not x14591))
+:assumption (or x8248 (not x28382))
+:assumption (or x16315 x3640 x10700 (not x3782) x29205 x24763)
+:assumption (or (not x30714) (not x1211))
+:assumption (or x20560 (not x13623))
+:assumption (or (not x3994) x26385 (not x12296) x27982 (not x5519) x12836)
+:assumption (or (not x25853) x28287 (not x28541))
+:assumption (or x9522 (not x23481))
+:assumption (or (not x23989) (not x2586) (not x24322) (not x10293) x12389)
+:assumption (or x5709 x24879 (not x11829))
+:assumption (or (not x18939) (not x31390))
+:assumption (or x8923 (not x6921))
+:assumption (or (not x20862) x12933)
+:assumption (or (not x21124) (not x5390) x29231 x1348 (not x14676) x12216)
+:assumption (or (not x17796) x8541)
+:assumption (or (not x21316) (not x10071))
+:assumption (or (not x27633) x25076)
+:assumption (or x19044 (not x18159))
+:assumption (or (not x2437) (not x13202))
+:assumption (or (not x9596) (not x10996))
+:assumption (or x29689 x12466)
+:assumption (or (not x24167) (not x24907))
+:assumption (or (not x20873) x15712)
+:assumption (or x26820 (not x25762))
+:assumption (or (not x2626) x6796 x1202 x2988)
+:assumption (or (not x7653) x4999)
+:assumption (or x27307 x31464)
+:assumption (or x30410 x17880 x2769 x6478 (not x27946) x8558 x29962)
+:assumption (or x12052 (not x5172))
+:assumption (or (not x22911) (not x23028))
+:assumption (or (not x26432) x13772 x8607)
+:assumption (or x2568 x8209)
+:assumption (or (not x26857) (not x29959))
+:assumption (or x20984 x12461)
+:assumption (or x10573 (not x26444))
+:assumption (or x5039 (not x2050))
+:assumption (or (not x16802) x3283)
+:assumption (or x28018 (not x11756))
+:assumption (or (not x1475) x26641 (not x13481) x5469 x2881)
+:assumption (or (not x21443) x20431)
+:assumption (or x8018 (not x22369))
+:assumption (or (not x8474) (not x9414))
+:assumption (or x23812 (not x17715))
+:assumption (or x20265 (not x23003))
+:assumption (or x9180 x7422)
+:assumption (or x4559 (not x12061))
+:assumption (or x19253 (not x12836))
+:assumption (or (not x27565) x3246)
+:assumption (or x7835 (not x13064) x23711 (not x30462))
+:assumption (or (not x20677) x16238 (not x7537) (not x8002))
+:assumption (or x4392 (not x5322))
+:assumption (or x13915 x23597)
+:assumption (or (not x11125) x27359)
+:assumption (or x5528 x25744)
+:assumption (or x17330 (not x4013))
+:assumption (or x570 (not x20935))
+:assumption (or x30503 x24409 (not x1302))
+:assumption (or x27837 x29558)
+:assumption (or (not x6994) x12747 x4830 (not x4343) x4088)
+:assumption (or x29679 x13956)
+:assumption (or x3671 (not x7226) x31829 x918)
+:assumption (or (not x17858) x5893 (not x7650) (not x21298))
+:assumption (or (not x9008) (not x5190))
+:assumption (or (not x13948) (not x29204) (not x28800))
+:assumption (or x15633 x2818)
+:assumption (or (not x13098) (not x14270))
+:assumption (or (not x11323) x21698)
+:assumption (or x10874 (not x42))
+:assumption (or x28682 (not x15490))
+:assumption (or (not x12958) x23043 (not x11522) (not x20515) x15788 x10918)
+:assumption (or x11791 x218 (not x6725))
+:assumption (or x24897 (not x3538))
+:assumption (or (not x12685) x1629)
+:assumption (or x16265 x27032)
+:assumption (or x13857 (not x19313))
+:assumption (or x6918 (not x10837))
+:assumption (or x25441 (not x11709))
+:assumption (or (not x6573) (not x31342))
+:assumption (or (not x30246) x7859)
+:assumption (or (not x26561) x10970)
+:assumption (or x16374 x23210)
+:assumption (or x23527 x6474)
+:assumption (or x3856 (not x23244))
+:assumption (or (not x17499) x17949)
+:assumption (or (not x5347) (not x8038) (not x9008))
+:assumption (or x109 (not x8695))
+:assumption (or (not x30522) (not x21653) x23328)
+:assumption (or (not x14095) x12474 (not x3387))
+:assumption (or (not x23120) (not x13384))
+:assumption (or (not x26007) x1889)
+:assumption (or x30119 (not x17334))
+:assumption (or (not x169) (not x8913))
+:assumption (or x23304 (not x3157))
+:assumption (or (not x16510) (not x2536) x17336 (not x25328) (not x15563) (not x10168))
+:assumption (or x9440 x31753)
+:assumption (or x15048 x11249)
+:assumption (or (not x20783) (not x3782))
+:assumption (or (not x5462) x21078)
+:assumption (or x6827 (not x16802) (not x3192))
+:assumption (or (not x18091) (not x9605))
+:assumption (or (not x9008) (not x5528) (not x27941) (not x28023) x23844)
+:assumption (or x29066 x18132)
+:assumption (or (not x30624) x30135)
+:assumption (or (not x6345) (not x2498) x12944 x23644 x1707)
+:assumption (or x10909 x29348)
+:assumption (or x21684 (not x28236))
+:assumption (or (not x25987) (not x6594) (not x24596) (not x17134) (not x15322))
+:assumption (or x15071 x1944)
+:assumption (or x25659 (not x16790))
+:assumption (or x5274 x27248)
+:assumption (or x4880 x8715)
+:assumption (or x27301 (not x26669))
+:assumption (or (not x21574) (not x7694) x14957)
+:assumption (or (not x27804) x13076)
+:assumption (or x19153 x5898)
+:assumption (or x27828 (not x15987))
+:assumption (or (not x31076) (not x19725))
+:assumption (or (not x22470) x9427 (not x18698) x23244 x8002)
+:assumption (or (not x8376) (not x7255))
+:assumption (or (not x2912) (not x2983) x14254 x26104 x30195)
+:assumption (or x17908 x29061)
+:assumption (or (not x1582) (not x9214))
+:assumption (or (not x12628) x11411)
+:assumption (or (not x11007) (not x16409))
+:assumption (or (not x2852) x25085)
+:assumption (or (not x10652) x13824 x28973)
+:assumption (or (not x19639) (not x1557))
+:assumption (or x9008 (not x11981))
+:assumption (or x8117 x12084 x28189 x28013)
+:assumption (or (not x29252) (not x2133) x31557)
+:assumption (or x7621 (not x21415))
+:assumption (or (not x23507) x14225)
+:assumption (or (not x17214) x30147)
+:assumption (or x8945 x20690)
+:assumption (or x29350 x21653)
+:assumption (or (not x18747) x18805)
+:assumption (or (not x6297) x4496)
+:assumption (or (not x20695) x18692)
+:assumption (or (not x9556) x29564)
+:assumption (or x31259 (not x30764))
+:assumption (or x17581 x25716)
+:assumption (or (not x10741) x24534 x934)
+:assumption (or (not x24485) x4589)
+:assumption (or (not x8692) (not x28115))
+:assumption (or x323 (not x3409) x6951 x13998 x13576)
+:assumption (or x7122 x12130)
+:assumption (or (not x17124) (not x17718))
+:assumption (or (not x10127) x2370)
+:assumption (or x16510 (not x29780) x5394 (not x2453) (not x1815))
+:assumption (or x20157 (not x12185))
+:assumption (or (not x28359) x26586)
+:assumption (or x19971 (not x25908))
+:assumption (or x27999 x23728 (not x22586) (not x3594) x17712)
+:assumption (or x21402 x24841)
+:assumption (or (not x20229) (not x14555))
+:assumption (or (not x20180) x25626)
+:assumption (or x660 x6358)
+:assumption (or (not x1532) (not x28870))
+:assumption (or x5694 x16700)
+:assumption (or x6843 (not x9277) (not x3726) x5587 x23330)
+:assumption (or x23052 x8002 (not x23244))
+:assumption (or x16910 (not x27648))
+:assumption (or x471 x29442)
+:assumption (or (not x15795) (not x19690))
+:assumption (or (not x28703) (not x26669))
+:assumption (or (not x5685) (not x5494))
+:assumption (or (not x13956) x3380)
+:assumption (or (not x12971) (not x21336))
+:assumption (or (not x31894) (not x22972))
+:assumption (or (not x16648) x7847)
+:assumption (or (not x26529) (not x15817) (not x21696))
+:assumption (or x21824 x15227 (not x4491) x24757 (not x13188) (not x2278) x1379 (not x25334) (not x11693))
+:assumption (or x24870 x13262)
+:assumption (or x29335 x13304)
+:assumption (or (not x21298) (not x23955) (not x27499) x9940)
+:assumption (or (not x17675) (not x25217) (not x24643) x12504 x8719 x19512 (not x29486))
+:assumption (or (not x19350) (not x3316))
+:assumption (or x22131 (not x11276))
+:assumption (or x15333 (not x11512) (not x19659) x23595 x22935 x29222 (not x25739) x21928 x31712)
+:assumption (or (not x15564) (not x3723))
+:assumption (or (not x119) x24281)
+:assumption (or x16254 (not x12986))
+:assumption (or (not x4028) x4379)
+:assumption (or (not x3303) x27747)
+:assumption (or (not x5229) x2808 (not x27359) x4054 x27888 (not x3806))
+:assumption (or x2850 (not x16025) x725)
+:assumption (or x15659 (not x13208))
+:assumption (or (not x5901) (not x31565))
+:assumption (or (not x24155) (not x18564))
+:assumption (or (not x1560) x5806)
+:assumption (or x5319 x16665 x17889 x11751 x21972 x1392)
+:assumption (or x24266 x26688)
+:assumption (or (not x16277) x13587)
+:assumption (or x1639 (not x21382))
+:assumption (or (not x17151) x16215)
+:assumption (or x5265 x17228)
+:assumption (or (not x29149) x17016)
+:assumption (or (not x25194) (not x2875))
+:assumption (or x7482 x7841)
+:assumption (or x18694 (not x13555) (not x26150) x29606)
+:assumption (or (not x26414) (not x578))
+:assumption (or (not x17610) (not x19696))
+:assumption (or (not x2326) x30941)
+:assumption (or x6606 x30045 (not x27214))
+:assumption (or x5574 x25473)
+:assumption (or (not x19081) x10895)
+:assumption (or (not x20446) x22940)
+:assumption (or x28912 (not x31628) x23049 (not x7849) x29649)
+:assumption (or x12850 (not x9357))
+:assumption (or (not x23861) (not x8036))
+:assumption (or (not x14196) (not x22803) (not x25490) (not x10144))
+:assumption (or (not x5347) (not x7523))
+:assumption (or x5923 x31050)
+:assumption (or (not x21375) (not x3264) x27288 x21690)
+:assumption (or x176 x17206)
+:assumption (or x8009 (not x8002) (not x31305))
+:assumption (or (not x18480) x13678)
+:assumption (or x2512 x12954 x7382 (not x8455) (not x7537) x23139)
+:assumption (or (not x312) x31325)
+:assumption (or (not x9349) (not x26108))
+:assumption (or (not x30612) x23561)
+:assumption (or (not x14012) x2156)
+:assumption (or x28094 x14618)
+:assumption (or (not x17760) (not x665))
+:assumption (or x28217 (not x29166))
+:assumption (or (not x20541) (not x9008))
+:assumption (or (not x20725) (not x3721))
+:assumption (or x8439 x29263)
+:assumption (or x24124 (not x19730))
+:assumption (or x18114 (not x30138))
+:assumption (or (not x4342) x6120)
+:assumption (or x27593 x26527)
+:assumption (or x27910 x5689)
+:assumption (or (not x2137) (not x13297))
+:assumption (or (not x2112) x16808 x24133)
+:assumption (or (not x9796) (not x8457))
+:assumption (or (not x24183) (not x31581))
+:assumption (or (not x31607) x6033)
+:assumption (or (not x30835) x9826 (not x19296) (not x13635) x13435)
+:assumption (or x3346 x26944)
+:assumption (or x8851 (not x720))
+:assumption (or (not x18529) x13668)
+:assumption (or (not x1393) x4644 (not x10211))
+:assumption (or (not x3360) (not x23394))
+:assumption (or (not x7453) (not x27552))
+:assumption (or (not x20397) (not x14906))
+:assumption (or (not x11855) (not x1500))
+:assumption (or (not x29959) (not x29579) x6594)
+:assumption (or (not x13649) x13878)
+:assumption (or x1663 (not x25785) x16068 (not x1035))
+:assumption (or (not x3786) x27064 (not x21015))
+:assumption (or x29503 x31063)
+:assumption (or (not x14468) x27384 x20106 x20300 x28912)
+:assumption (or x23527 (not x28023))
+:assumption (or (not x25806) (not x31517))
+:assumption (or (not x738) (not x9236) (not x10745))
+:assumption (or (not x10762) x12542)
+:assumption (or x22504 (not x4330))
+:assumption (or x30954 (not x23244) (not x26623))
+:assumption (or (not x7069) x10915 x422 (not x27573) (not x23962) (not x8515))
+:assumption (or (not x18819) (not x9008))
+:assumption (or x9822 (not x16025))
+:assumption (or x28443 (not x6444))
+:assumption (or x11563 x14802)
+:assumption (or (not x25366) (not x16973))
+:assumption (or (not x22125) (not x6646))
+:assumption (or x17638 (not x7801))
+:assumption (or (not x6067) (not x20680))
+:assumption (or (not x20060) (not x23331))
+:assumption (or (not x18466) x9169)
+:assumption (or (not x22402) (not x11469))
+:assumption (or (not x17797) (not x3797))
+:assumption (or x244 x7588)
+:assumption (or x10000 (not x11300))
+:assumption (or x10072 (not x26))
+:assumption (or x12711 (not x26638))
+:assumption (or x11714 x19016)
+:assumption (or (not x31083) (not x5918) x857)
+:assumption (or x14129 (not x3836))
+:assumption (or x19451 x6274 x5815 (not x10752) x29917 x3558)
+:assumption (or x4378 x7230)
+:assumption (or (not x10749) x4967)
+:assumption (or x3656 (not x12727))
+:assumption (or (not x20651) x7432 (not x7701) (not x20885))
+:assumption (or x28821 (not x30727))
+:assumption (or x4962 x19609)
+:assumption (or x2157 (not x21035))
+:assumption (or (not x3005) x19840)
+:assumption (or (not x6149) x16510 (not x6362))
+:assumption (or (not x22636) (not x11693))
+:assumption (or (not x3086) x21633)
+:assumption (or (not x28013) (not x27882))
+:assumption (or (not x23220) (not x10111) (not x11281) x17359)
+:assumption (or x19154 (not x30736))
+:assumption (or (not x11025) (not x6307))
+:assumption (or (not x14553) (not x19195))
+:assumption (or x1591 (not x7136) (not x9008))
+:assumption (or (not x28140) x18006)
+:assumption (or (not x23479) x4803)
+:assumption (or (not x8878) (not x10510))
+:assumption (or x29971 (not x27153) (not x30138) x11889)
+:assumption (or x17075 (not x30069) x12424 x218)
+:assumption (or x11497 x9328)
+:assumption (or (not x25577) x3091)
+:assumption (or (not x20680) x9895)
+:assumption (or x10499 x21136)
+:assumption (or (not x27736) (not x9710))
+:assumption (or x26977 x14567)
+:assumption (or x6451 (not x10850))
+:assumption (or (not x16137) (not x12092))
+:assumption (or (not x19498) x1817)
+:assumption (or x24605 x7798)
+:assumption (or (not x5727) (not x19887))
+:assumption (or (not x30943) (not x20850))
+:assumption (or (not x7346) x17359 x6529 (not x11281))
+:assumption (or x5416 x29034)
+:assumption (or x3664 (not x5028))
+:assumption (or (not x5334) (not x17410))
+:assumption (or x9235 (not x22199))
+:assumption (or (not x2448) (not x2906) (not x23712))
+:assumption (or (not x29676) (not x31898) x15413)
+:assumption (or (not x2405) (not x24531))
+:assumption (or x11604 x5528)
+:assumption (or x12134 (not x12986))
+:assumption (or x9897 x11281 x28901 (not x22862))
+:assumption (or x5880 x8225)
+:assumption (or (not x11792) x6149 x26453 (not x23220) (not x23510) (not x15193) x15701)
+:assumption (or (not x22136) (not x7329))
+:assumption (or (not x1813) (not x23723))
+:assumption (or x27912 x24657 x10822 (not x24451) x389)
+:assumption (or (not x5200) (not x28691))
+:assumption (or x1302 (not x24789))
+:assumption (or x16012 x16392)
+:assumption (or x21481 x12176)
+:assumption (or x23926 x24790)
+:assumption (or (not x14276) x27090)
+:assumption (or x16891 (not x27498))
+:assumption (or x19315 x20119)
+:assumption (or x27040 x16910 x5318)
+:assumption (or x30274 (not x9807))
+:assumption (or (not x15659) (not x9619))
+:assumption (or (not x18812) (not x12455))
+:assumption (or (not x21786) (not x15126) x27793 (not x1284) x10322)
+:assumption (or x30680 x28612)
+:assumption (or (not x15632) (not x7398))
+:assumption (or (not x11943) (not x30074))
+:assumption (or (not x14504) x25174)
+:assumption (or x21668 x31083)
+:assumption (or (not x19501) x15827)
+:assumption (or x13244 x16828 x8725 x6969)
+:assumption (or (not x16893) x10782 x16049 (not x13577) (not x4874) x31825 x31767 (not x28749) x3308)
+:assumption (or x23937 (not x18055))
+:assumption (or (not x29329) (not x2738))
+:assumption (or (not x14216) (not x15073))
+:assumption (or x1886 (not x30871))
+:assumption (or (not x5953) x23102 x4645 x31615)
+:assumption (or x24168 (not x20087))
+:assumption (or (not x23336) (not x15000))
+:assumption (or x30758 (not x5))
+:assumption (or (not x24354) (not x26259))
+:assumption (or (not x15032) (not x15328))
+:assumption (or x9423 (not x31254))
+:assumption (or x19810 (not x26216))
+:assumption (or x30868 x13654)
+:assumption (or (not x20204) (not x23244))
+:assumption (or x23386 x752)
+:assumption (or (not x3741) x356)
+:assumption (or x9531 x12198)
+:assumption (or x7532 (not x13784))
+:assumption (or (not x16869) x10590 (not x21653))
+:assumption (or (not x21988) (not x31726))
+:assumption (or (not x2844) x6705)
+:assumption (or x19005 x27864)
+:assumption (or x7647 (not x21553))
+:assumption (or (not x6897) x26259)
+:assumption (or (not x25027) (not x8002))
+:assumption (or x31032 (not x23578) (not x7515))
+:assumption (or x30117 (not x13001))
+:assumption (or x7237 (not x24510) x14359 (not x10250))
+:assumption (or x1393 (not x9734) (not x15148))
+:assumption (or x15642 (not x4318))
+:assumption (or x19440 (not x24776))
+:assumption (or x22057 x22187)
+:assumption (or (not x28342) (not x27142) (not x13256) x12034)
+:assumption (or x23410 x1566)
+:assumption (or (not x10279) (not x24831))
+:assumption (or x24917 x6810)
+:assumption (or x22413 (not x13173))
+:assumption (or (not x24952) x11880)
+:assumption (or x15211 (not x30380))
+:assumption (or (not x5691) (not x14658))
+:assumption (or x29209 x23551)
+:assumption (or x4942 x29025)
+:assumption (or x10252 (not x28881))
+:assumption (or (not x23244) x8497)
+:assumption (or x26810 (not x6577))
+:assumption (or x22668 x25392)
+:assumption (or x3902 x10004)
+:assumption (or x5028 (not x16191) (not x29442) (not x28122))
+:assumption (or x13993 x20622)
+:assumption (or x28130 (not x2901))
+:assumption (or x31187 (not x16257))
+:assumption (or x19737 x30751)
+:assumption (or x9531 x9523)
+:assumption (or (not x14776) (not x4559))
+:assumption (or x21250 (not x12682))
+:assumption (or (not x20802) (not x5638))
+:assumption (or x6315 (not x21718))
+:assumption (or (not x6780) x20107)
+:assumption (or x29769 x18309)
+:assumption (or x6594 (not x29959) (not x23290) x2281)
+:assumption (or x28973 (not x27567) (not x1582) (not x4349))
+:assumption (or x20876 x30169)
+:assumption (or x16211 x17247 (not x9018))
+:assumption (or x13099 (not x23792))
+:assumption (or (not x10362) (not x1393) x26744)
+:assumption (or x19651 x28242 x3265)
+:assumption (or (not x10019) x16304 (not x25616) x15795)
+:assumption (or (not x1491) (not x30006))
+:assumption (or x21815 (not x1138))
+:assumption (or (not x17930) x28669)
+:assumption (or (not x20106) (not x28283))
+:assumption (or x1124 x14500)
+:assumption (or (not x10655) x15790)
+:assumption (or x19384 x30208)
+:assumption (or (not x16426) (not x18840))
+:assumption (or x27907 (not x29333) x6448 (not x20645) (not x29254) (not x2066))
+:assumption (or x30578 (not x9233))
+:assumption (or (not x3585) x6385 x9008 (not x16127) (not x13203) (not x29722))
+:assumption (or (not x12423) x9008)
+:assumption (or (not x4713) x28242)
+:assumption (or x25301 x21316 x10071 (not x23508))
+:assumption (or (not x23529) x27466)
+:assumption (or (not x16953) (not x31637))
+:assumption (or (not x8973) (not x23031))
+:assumption (or x5464 (not x1621))
+:assumption (or (not x13149) x28963 x12045 (not x23643) x4909 x15742 (not x15657) x14856)
+:assumption (or x15223 (not x9093))
+:assumption (or (not x31829) x29840)
+:assumption (or x12840 (not x15836) (not x18025))
+:assumption (or x2466 (not x13906))
+:assumption (or (not x15520) (not x15503) x16907)
+:assumption (or x6325 x15401)
+:assumption (or x8432 (not x7429) (not x8575) (not x24240) x17296 (not x10285) (not x14455))
+:assumption (or x12072 x27617 x10851 x16950 (not x22288) (not x3918))
+:assumption (or x28836 x564 x8602)
+:assumption (or x30454 x2701 (not x15861))
+:assumption (or (not x1166) x5065)
+:assumption (or x22212 x29027 (not x5836) x21298)
+:assumption (or (not x7396) x27169 x13956)
+:assumption (or (not x28456) x18512)
+:assumption (or x29416 (not x9148))
+:assumption (or (not x26932) (not x6068))
+:assumption (or x31705 x26469)
+:assumption (or x23914 x1672 (not x31767) (not x18439))
+:assumption (or x1188 x10413)
+:assumption (or x3011 (not x201) x29756)
+:assumption (or (not x18589) (not x31714))
+:assumption (or x5284 x3843)
+:assumption (or x12831 x10516)
+:assumption (or x7893 x31738 x11374 x27537)
+:assumption (or (not x14115) x997)
+:assumption (or (not x7327) x15406)
+:assumption (or x20869 (not x30259))
+:assumption (or x4549 (not x19076))
+:assumption (or x23713 (not x30683))
+:assumption (or x1434 (not x27254))
+:assumption (or x10265 x7466)
+:assumption (or x17926 (not x21138))
+:assumption (or x7712 (not x7779))
+:assumption (or (not x19183) x21690 (not x9288) x21625)
+:assumption (or (not x7502) (not x1755))
+:assumption (or x20325 x4922)
+:assumption (or (not x17613) (not x20526))
+:assumption (or x31167 x1447)
+:assumption (or (not x22388) x4163 x14219 (not x26013))
+:assumption (or (not x2201) (not x6141))
+:assumption (or x8433 x1582 (not x28973) (not x16604))
+:assumption (or x22515 x13316 (not x23316) (not x29333))
+:assumption (or (not x21007) (not x28953))
+:assumption (or x1481 (not x13198))
+:assumption (or (not x18811) (not x517))
+:assumption (or x31629 x14310)
+:assumption (or x13155 (not x26690) x28647 (not x27571))
+:assumption (or x5107 x29508)
+:assumption (or x9721 (not x31729) (not x8583) (not x30166) (not x1038) x27965 (not x10655) (not x28402))
+:assumption (or (not x19276) x19992)
+:assumption (or (not x23410) (not x13565))
+:assumption (or x29604 (not x16856))
+:assumption (or (not x26722) (not x23767))
+:assumption (or (not x11162) x5711 (not x19340) (not x13321) (not x30719) (not x17860) (not x17388))
+:assumption (or x21750 x2905)
+:assumption (or (not x6020) x26448)
+:assumption (or (not x29339) x2529)
+:assumption (or x3817 (not x7046))
+:assumption (or x12630 (not x28888) (not x2766) x27085 x21702)
+:assumption (or x2444 (not x30937))
+:assumption (or (not x1271) x23044)
+:assumption (or x1393 (not x14125))
+:assumption (or (not x16612) (not x22287))
+:assumption (or x8961 x5886 x15235 x31557)
+:assumption (or x20437 x22038 (not x8382) x11223)
+:assumption (or (not x17886) (not x21298) x16519)
+:assumption (or (not x24960) (not x26518))
+:assumption (or (not x29133) x9101)
+:assumption (or (not x23801) (not x31726))
+:assumption (or x27698 (not x27914))
+:assumption (or x29833 (not x16580))
+:assumption (or (not x11583) (not x14678) (not x13670) x14144 x1968)
+:assumption (or (not x1903) (not x19570))
+:assumption (or x23533 (not x22098) x6969 x26670)
+:assumption (or (not x13423) x13696)
+:assumption (or (not x7859) x13974)
+:assumption (or (not x13224) x8875)
+:assumption (or (not x7607) (not x18199))
+:assumption (or x8490 (not x4482))
+:assumption (or x4014 x8824)
+:assumption (or (not x24879) x17394)
+:assumption (or (not x11408) (not x9382))
+:assumption (or (not x8436) (not x29738))
+:assumption (or x10850 x22785)
+:assumption (or (not x23529) x7471)
+:assumption (or (not x2658) x8002)
+:assumption (or x4324 x12490)
+:assumption (or (not x21751) (not x21495))
+:assumption (or x29674 x13024)
+:assumption (or (not x22320) x12723)
+:assumption (or (not x23259) (not x2413))
+:assumption (or (not x19864) x10065)
+:assumption (or (not x15049) x5259)
+:assumption (or (not x1322) x14839)
+:assumption (or x21320 x5060)
+:assumption (or x5434 (not x14289))
+:assumption (or (not x13811) x29217)
+:assumption (or x24496 x1230)
+:assumption (or (not x27787) (not x6146) (not x5391) (not x29743))
+:assumption (or (not x7470) (not x20780))
+:assumption (or (not x28541) (not x11865))
+:assumption (or (not x17587) x11276)
+:assumption (or (not x21235) (not x16374) x27530 (not x19702) (not x31086))
+:assumption (or x6012 x14684)
+:assumption (or (not x23244) x6836)
+:assumption (or x3802 (not x19169))
+:assumption (or x10909 x16435)
+:assumption (or x10909 (not x17013))
+:assumption (or (not x11013) x16331)
+:assumption (or (not x15633) x1153)
+:assumption (or x20802 (not x13956))
+:assumption (or (not x3423) x21137)
+:assumption (or (not x31628) x6845)
+:assumption (or (not x9636) x28912)
+:assumption (or (not x3224) (not x15861) (not x30739))
+:assumption (or x17435 (not x27390))
+:assumption (or x29963 (not x26017))
+:assumption (or (not x9678) (not x31093))
+:assumption (or (not x5937) x31303)
+:assumption (or x26733 (not x2432))
+:assumption (or x30219 x12274 x10587)
+:assumption (or x14875 (not x27146))
+:assumption (or x9235 x4204)
+:assumption (or x15891 x16510)
+:assumption (or (not x27790) (not x8795))
+:assumption (or x7078 x8910)
+:assumption (or x10137 (not x4813))
+:assumption (or x15574 (not x15373))
+:assumption (or x27766 (not x2752))
+:assumption (or (not x24793) (not x25656))
+:assumption (or (not x12684) (not x25695))
+:assumption (or (not x15748) (not x27657))
+:assumption (or (not x15788) x11257)
+:assumption (or (not x8159) x12329)
+:assumption (or (not x16218) x3641)
+:assumption (or x30887 x29151)
+:assumption (or (not x31039) x1957)
+:assumption (or x28876 (not x8979))
+:assumption (or (not x28512) (not x2485))
+:assumption (or (not x13254) x13576 x13364)
+:assumption (or (not x22391) x10879)
+:assumption (or x24295 (not x18761))
+:assumption (or (not x4191) x6003)
+:assumption (or x22963 (not x1226) x15034 (not x5422) (not x6635))
+:assumption (or x30926 x22827)
+:assumption (or (not x31463) (not x28361))
+:assumption (or (not x27544) x7298)
+:assumption (or x22048 (not x31922) (not x17302))
+:assumption (or x4419 (not x26450))
+:assumption (or x27653 x12367)
+:assumption (or (not x10874) (not x12348) (not x17440) x27625 x7730 (not x6307))
+:assumption (or (not x476) x9919)
+:assumption (or x6094 (not x11829))
+:assumption (or x27689 x19120)
+:assumption (or (not x28636) x5413)
+:assumption (or (not x6765) (not x31918))
+:assumption (or x20638 (not x15339))
+:assumption (or x5140 x15835)
+:assumption (or x10313 (not x2721))
+:assumption (or x4259 (not x18272))
+:assumption (or (not x10403) x3303)
+:assumption (or (not x21247) (not x17550) x26707 (not x6284))
+:assumption (or (not x5862) x26982 x8358 x26736 x7903 x10342)
+:assumption (or x6496 x29878 x24826)
+:assumption (or (not x4859) (not x8602))
+:assumption (or x1546 x14107)
+:assumption (or (not x8002) (not x28352))
+:assumption (or (not x16809) x25659 x1582 (not x22425) x20550)
+:assumption (or x3247 (not x8186) (not x16003))
+:assumption (or x21237 x18573)
+:assumption (or (not x7699) x29508)
+:assumption (or x11371 x8585)
+:assumption (or (not x6519) x12710)
+:assumption (or x28267 (not x25215))
+:assumption (or x5458 x10002)
+:assumption (or x9753 x11059 x1074 x31319 x6370 x8701 (not x2528) (not x24333))
+:assumption (or x8911 x19595)
+:assumption (or (not x3358) (not x24937))
+:assumption (or (not x803) x8002 x23244 (not x20860))
+:assumption (or (not x18004) x21855 (not x22258) x13090 x26618)
+:assumption (or (not x9959) (not x4418) (not x18456))
+:assumption (or (not x7935) (not x25621))
+:assumption (or x23056 (not x252))
+:assumption (or (not x26799) x12242 (not x27242))
+:assumption (or (not x3492) x6987)
+:assumption (or x14111 x26177)
+:assumption (or x9647 (not x6364))
+:assumption (or (not x8658) (not x14264))
+:assumption (or x1084 (not x30801))
+:assumption (or (not x24594) (not x27854))
+:assumption (or (not x25686) x29422)
+:assumption (or x2160 (not x26488) (not x12252) (not x23818) x10497 x28574 (not x18248) (not x25784))
+:assumption (or x26530 x9025)
+:assumption (or x13689 x363)
+:assumption (or (not x15280) x14941)
+:assumption (or x12021 x25275)
+:assumption (or (not x6149) x8292)
+:assumption (or (not x9431) x15920)
+:assumption (or (not x23866) x21815 x30904)
+:assumption (or x10038 x11394)
+:assumption (or (not x19282) x10090)
+:assumption (or x6319 x17597)
+:assumption (or (not x1399) x30976 (not x1582) (not x19658))
+:assumption (or x7012 (not x5528) (not x8495) (not x9008) (not x12588))
+:assumption (or (not x30521) x25857)
+:assumption (or x17440 (not x6381) (not x1547) x14480 x1555)
+:assumption (or (not x22791) x26690)
+:assumption (or x7004 x26973)
+:assumption (or (not x24758) (not x30668))
+:assumption (or (not x20175) x3190)
+:assumption (or x14803 (not x15324) (not x13036) x17302)
+:assumption (or (not x22877) x24986)
+:assumption (or (not x9323) x1337)
+:assumption (or x12535 x11087 (not x13727) (not x6320) x22323)
+:assumption (or (not x29176) (not x17928))
+:assumption (or x13016 (not x31713))
+:assumption (or (not x6437) (not x16329))
+:assumption (or (not x462) x16718)
+:assumption (or (not x29115) x10121)
+:assumption (or (not x5914) (not x26789))
+:assumption (or (not x21006) x29204 x7169 (not x10244))
+:assumption (or (not x29163) x2041 x20402 x21298 x2325 (not x21115) (not x15952) (not x12422) x14812)
+:assumption (or x20885 (not x29430) (not x22149))
+:assumption (or x13956 x30579)
+:assumption (or x20875 x16708)
+:assumption (or (not x3453) (not x30905))
+:assumption (or (not x4210) x24444)
+:assumption (or x10427 (not x30411))
+:assumption (or (not x15142) x9008 (not x1285))
+:assumption (or (not x21353) (not x15348))
+:assumption (or x31844 (not x11743))
+:assumption (or (not x12605) x29391)
+:assumption (or (not x9111) (not x13956))
+:assumption (or x10874 x11565)
+:assumption (or (not x15795) x6574 (not x13956))
+:assumption (or x8476 x620)
+:assumption (or x12078 x31302)
+:assumption (or x11145 x5886 (not x4039) (not x8961) x8690)
+:assumption (or (not x18676) x7451)
+:assumption (or (not x26659) (not x22013) (not x16270))
+:assumption (or x15219 (not x1393))
+:assumption (or x6351 (not x7459) x22301)
+:assumption (or x9992 x13222)
+:assumption (or (not x24056) x16055)
+:assumption (or (not x4459) (not x16674) x28743)
+:assumption (or x22631 x28300)
+:assumption (or x17339 x13857)
+:assumption (or (not x31372) x6320)
+:assumption (or (not x5721) x8981)
+:assumption (or (not x2368) (not x3989) x20085 (not x25317))
+:assumption (or (not x17445) x3816)
+:assumption (or (not x5225) x14945)
+:assumption (or x5214 x30584)
+:assumption (or (not x31190) (not x26976))
+:assumption (or x10623 x30902)
+:assumption (or (not x5886) x26690)
+:assumption (or x2944 (not x22369))
+:assumption (or x23230 (not x11593))
+:assumption (or x7988 (not x3782))
+:assumption (or (not x21289) x5762)
+:assumption (or (not x27140) (not x10358))
+:assumption (or (not x26286) (not x25134))
+:assumption (or (not x31804) (not x4377))
+:assumption (or x26312 x24161)
+:assumption (or x9108 x15762)
+:assumption (or x16910 x24247)
+:assumption (or x13867 x26460)
+:assumption (or (not x10286) (not x4760))
+:assumption (or x3566 x9796)
+:assumption (or (not x31253) (not x1305) x25355 x7641)
+:assumption (or (not x31914) x3733)
+:assumption (or x9475 x15227 (not x27998))
+:assumption (or (not x23558) x16864)
+:assumption (or x18441 x13317 x14189)
+:assumption (or x30828 x2217)
+:assumption (or (not x25366) x3511)
+:assumption (or (not x29302) x8487)
+:assumption (or (not x1899) x26223)
+:assumption (or x20633 (not x29826))
+:assumption (or (not x3499) (not x26912))
+:assumption (or (not x28997) (not x11692))
+:assumption (or (not x27656) x22341)
+:assumption (or x28024 (not x2809))
+:assumption (or x12454 x169)
+:assumption (or (not x30305) x28449)
+:assumption (or (not x17352) x31831)
+:assumption (or (not x23407) (not x14806))
+:assumption (or (not x22081) (not x2439))
+:assumption (or (not x16627) x26670)
+:assumption (or (not x8874) (not x22091) (not x24142) x8782 (not x14687) (not x12817))
+:assumption (or x6654 (not x25289))
+:assumption (or x9008 (not x1949))
+:assumption (or (not x10064) (not x29264))
+:assumption (or x17208 x31134)
+:assumption (or (not x26751) (not x5918))
+:assumption (or (not x28708) x6940)
+:assumption (or x26348 x2543)
+:assumption (or (not x25661) x7519)
+:assumption (or x7828 (not x12584))
+:assumption (or x29312 (not x29693) (not x8167) (not x16247))
+:assumption (or (not x29582) x30870)
+:assumption (or (not x24722) x10814)
+:assumption (or x8589 (not x18656))
+:assumption (or (not x4595) x8996)
+:assumption (or (not x14859) (not x13970))
+:assumption (or (not x31117) (not x15621))
+:assumption (or x26105 (not x30256))
+:assumption (or x12865 x7980)
+:assumption (or x5532 (not x28436))
+:assumption (or x21049 x2334 (not x10233))
+:assumption (or x2288 x2278 (not x11138))
+:assumption (or (not x1117) (not x3042))
+:assumption (or x274 (not x10845))
+:assumption (or x1784 (not x3484) (not x21298))
+:assumption (or (not x28377) x13736)
+:assumption (or (not x20134) x31428)
+:assumption (or x27729 (not x12129))
+:assumption (or (not x13314) x13403)
+:assumption (or (not x23373) x5569 x9398 (not x11851))
+:assumption (or (not x15181) (not x30565))
+:assumption (or x21086 x10283)
+:assumption (or x17359 (not x13678) (not x1846) x24100 x24003)
+:assumption (or x26621 (not x24941))
+:assumption (or x18722 (not x11932))
+:assumption (or (not x9285) x2434)
+:assumption (or x31382 x25370)
+:assumption (or x4897 x2744)
+:assumption (or x29503 x16754)
+:assumption (or (not x31595) (not x394) x16648 (not x1897))
+:assumption (or (not x29483) x8942)
+:assumption (or (not x13955) x23244)
+:assumption (or x10573 x9008)
+:assumption (or (not x19236) x21602 (not x1986) x21432)
+:assumption (or (not x16012) x20528 x18341 x7224)
+:assumption (or x754 x23419)
+:assumption (or (not x16374) (not x30853))
+:assumption (or x25659 (not x25512))
+:assumption (or (not x25484) x24369)
+:assumption (or (not x2681) x14987)
+:assumption (or (not x31829) (not x30275))
+:assumption (or x10005 x4852)
+:assumption (or x20911 x15583)
+:assumption (or x15554 (not x4781))
+:assumption (or x8602 x26351)
+:assumption (or x21280 x19)
+:assumption (or (not x25350) (not x9684) (not x29924) (not x14808))
+:assumption (or (not x369) x4985)
+:assumption (or x19242 (not x14206))
+:assumption (or x12692 x22583)
+:assumption (or x9544 x30839)
+:assumption (or x15161 (not x14458))
+:assumption (or (not x31443) x8037)
+:assumption (or x8602 x12691 (not x29549))
+:assumption (or x22820 x21613)
+:assumption (or (not x13518) x20018)
+:assumption (or (not x10691) (not x26727))
+:assumption (or (not x17826) (not x3455))
+:assumption (or (not x10084) (not x25472))
+:assumption (or (not x26856) (not x10592))
+:assumption (or (not x3224) (not x27016) x15861)
+:assumption (or (not x31489) (not x27335))
+:assumption (or (not x697) x13942)
+:assumption (or (not x8976) x27077)
+:assumption (or x7469 (not x8002))
+:assumption (or (not x13532) x28095 (not x3501) x17048)
+:assumption (or x26244 x14313 x3579 x30129 x16773)
+:assumption (or x3470 x5666)
+:assumption (or (not x457) (not x2442))
+:assumption (or x24491 (not x15917) (not x16510) (not x18694) (not x21815))
+:assumption (or (not x22453) (not x11504))
+:assumption (or (not x21404) x17986)
+:assumption (or (not x30018) x18138)
+:assumption (or x6769 (not x25045) (not x29442))
+:assumption (or (not x15343) (not x17142))
+:assumption (or (not x18650) x10130)
+:assumption (or x10929 (not x8403))
+:assumption (or x20087 x20762)
+:assumption (or x1582 (not x2497))
+:assumption (or (not x3503) (not x16594))
+:assumption (or x17639 (not x15799))
+:assumption (or (not x21450) x8635)
+:assumption (or (not x26695) x16524)
+:assumption (or (not x23641) (not x1115) x14802)
+:assumption (or (not x10098) x7935 x26048 x8390)
+:assumption (or x5634 (not x2764))
+:assumption (or (not x10070) (not x4920))
+:assumption (or (not x10817) (not x9359) x4474 (not x6361) x23926 (not x2165) x667)
+:assumption (or (not x12214) (not x19716))
+:assumption (or x29687 x30243 (not x12033))
+:assumption (or (not x2223) x20202)
+:assumption (or x18829 (not x11792))
+:assumption (or x4496 x16439)
+:assumption (or (not x12381) (not x24836))
+:assumption (or x29442 x8093)
+:assumption (or x25822 x9989)
+:assumption (or (not x21719) (not x23243))
+:assumption (or x5595 x2811)
+:assumption (or x29758 (not x3516))
+:assumption (or x17003 (not x23234) (not x5709))
+:assumption (or x11242 (not x8230) (not x9675) x5850 x8002 (not x9689))
+:assumption (or x5571 x20040)
+:assumption (or x7402 x25004)
+:assumption (or (not x11773) (not x7369))
+:assumption (or (not x12524) (not x20156) x29442 x29582 (not x5028) x23050)
+:assumption (or x30324 (not x29858))
+:assumption (or x5896 (not x23612))
+:assumption (or x4614 (not x17418) (not x7510))
+:assumption (or (not x8028) (not x16507))
+:assumption (or x13956 x28669)
+:assumption (or x29465 (not x17592))
+:assumption (or x25309 x20994)
+:assumption (or x25766 (not x19172))
+:assumption (or x15702 x18097 (not x9858) x18293)
+:assumption (or x3874 (not x18234))
+:assumption (or x5528 x11405 x21664)
+:assumption (or (not x28364) x27205 (not x13956) (not x8757))
+:assumption (or (not x31186) (not x13265))
+:assumption (or (not x23315) (not x845))
+:assumption (or (not x20087) x30187)
+:assumption (or x25802 x25831)
+:assumption (or x2178 x24445)
+:assumption (or x6128 (not x12380))
+:assumption (or (not x16776) (not x12006))
+:assumption (or (not x21308) x5370)
+:assumption (or x8002 (not x17544) x16780)
+:assumption (or x31331 x18869)
+:assumption (or x14260 x1595)
+:assumption (or x23244 x10726)
+:assumption (or x2197 (not x9984))
+:assumption (or x13188 x814 x6444)
+:assumption (or x1271 (not x23044))
+:assumption (or x15749 (not x8314))
+:assumption (or x22104 (not x1241))
+:assumption (or (not x5528) (not x30387) x7530 x25484 (not x9008))
+:assumption (or x23367 x14200)
+:assumption (or x9484 (not x22449) x9787 x6783)
+:assumption (or (not x25250) (not x11105))
+:assumption (or x2163 x7675)
+:assumption (or x9363 (not x15479))
+:assumption (or x12088 x8885)
+:assumption (or x16741 (not x1206) (not x6767))
+:assumption (or (not x31919) (not x9644))
+:assumption (or (not x14936) x7753)
+:assumption (or x4758 (not x5144))
+:assumption (or (not x29695) x5886)
+:assumption (or (not x10232) (not x25032))
+:assumption (or x3176 x22824)
+:assumption (or x16485 (not x15318))
+:assumption (or x16802 (not x24671))
+:assumption (or (not x7748) x12306)
+:assumption (or x6238 x7203)
+:assumption (or x1481 (not x9452))
+:assumption (or (not x30985) x13420 x23157 (not x11343) x975)
+:assumption (or x26373 (not x15694))
+:assumption (or (not x23264) x28242)
+:assumption (or (not x18312) (not x22081))
+:assumption (or (not x6958) x27046)
+:assumption (or (not x6951) (not x5505))
+:assumption (or x5652 (not x17225) x18261 x15007)
+:assumption (or (not x25151) (not x29320))
+:assumption (or (not x27258) (not x6969))
+:assumption (or x29537 (not x13082))
+:assumption (or (not x12112) (not x23097))
+:assumption (or x19475 x13766 (not x21298) (not x5852))
+:assumption (or (not x6682) (not x31093))
+:assumption (or (not x25429) x30418)
+:assumption (or (not x7070) (not x25937) (not x6969))
+:assumption (or (not x28291) (not x16899))
+:assumption (or (not x15078) (not x9838) (not x9878) x13057 (not x10441) (not x11696))
+:assumption (or x9651 x25659 (not x20659) (not x31134))
+:assumption (or x4611 (not x3670))
+:assumption (or x18303 x27748)
+:assumption (or x15623 x24682)
+:assumption (or x2059 (not x20775))
+:assumption (or x27239 (not x17671))
+:assumption (or x22176 x15302)
+:assumption (or (not x10975) x23053)
+:assumption (or x5144 (not x27233))
+:assumption (or x3955 x18487)
+:assumption (or (not x24317) x12156)
+:assumption (or (not x9455) (not x30412) (not x28197) (not x1409) (not x31661))
+:assumption (or x17630 x5653)
+:assumption (or x22602 (not x20782))
+:assumption (or x291 (not x5917))
+:assumption (or x16851 (not x23390))
+:assumption (or x28422 x11801)
+:assumption (or (not x17860) x308)
+:assumption (or (not x28884) (not x407))
+:assumption (or x24768 x5647)
+:assumption (or x22409 x31044)
+:assumption (or (not x28952) (not x30539) (not x19603) (not x28731) x25266 x12720)
+:assumption (or x16817 (not x3397))
+:assumption (or (not x10674) (not x21886))
+:assumption (or x28939 (not x15917))
+:assumption (or x13581 x10908)
+:assumption (or (not x295) (not x16365))
+:assumption (or x11734 (not x27155))
+:assumption (or x12149 (not x29336))
+:assumption (or x5737 x4377)
+:assumption (or (not x470) x842)
+:assumption (or x19511 x928)
+:assumption (or x9008 (not x6568))
+:assumption (or x10559 x2688)
+:assumption (or x10305 (not x13956))
+:assumption (or (not x1585) (not x26341))
+:assumption (or x4937 x25375)
+:assumption (or x19120 (not x17075))
+:assumption (or x8565 x15078)
+:assumption (or (not x26213) (not x28511))
+:assumption (or (not x15865) (not x6381) (not x17893) x1582)
+:assumption (or x2466 x27667)
+:assumption (or (not x11061) x23060 x6969 x9066)
+:assumption (or (not x2735) x27972)
+:assumption (or (not x31483) x23155)
+:assumption (or (not x12579) (not x19992))
+:assumption (or (not x29158) (not x31693))
+:assumption (or (not x10032) (not x30999))
+:assumption (or (not x17222) (not x5802))
+:assumption (or x29162 x24511)
+:assumption (or x13969 (not x2840))
+:assumption (or x28642 (not x25479))
+:assumption (or (not x21432) (not x2079) (not x9880) x26343)
+:assumption (or x6176 (not x19603) x7005 (not x10504))
+:assumption (or x10384 x16849 x16025)
+:assumption (or x949 (not x13834))
+:assumption (or (not x975) (not x27664))
+:assumption (or x16745 x11100 (not x7871) (not x26136))
+:assumption (or (not x3379) x16585)
+:assumption (or x31303 (not x19518))
+:assumption (or (not x9438) x16025 x10237)
+:assumption (or x19832 x7321)
+:assumption (or x20758 x30432)
+:assumption (or x9264 x14995)
+:assumption (or (not x30779) x24081 (not x22956) (not x31829) (not x30327) x14099)
+:assumption (or (not x5283) (not x4994) x26862 (not x9874) (not x13426) x16809)
+:assumption (or (not x9357) (not x1002))
+:assumption (or (not x10297) (not x10042))
+:assumption (or x26333 (not x318))
+:assumption (or (not x10487) (not x4311))
+:assumption (or (not x26731) (not x19676))
+:assumption (or (not x29245) (not x8002) (not x5463) (not x23244))
+:assumption (or (not x21856) (not x24531))
+:assumption (or x23933 x3560)
+:assumption (or x4503 (not x8937))
+:assumption (or x6162 (not x23878))
+:assumption (or x10081 (not x19985))
+:assumption (or x8532 (not x13114) x16696 (not x22904))
+:assumption (or x10874 x16280 x6307 x9394)
+:assumption (or x21633 (not x20502))
+:assumption (or (not x3731) x9981)
+:assumption (or (not x9869) (not x17855))
+:assumption (or x363 (not x29664))
+:assumption (or (not x15888) (not x28014) x2840)
+:assumption (or (not x26589) x21820)
+:assumption (or (not x30758) x9701)
+:assumption (or (not x218) (not x1076))
+:assumption (or x23406 x29755)
+:assumption (or (not x7028) (not x29407))
+:assumption (or x27736 (not x632))
+:assumption (or x17145 x1901)
+:assumption (or (not x25714) (not x14004))
+:assumption (or x21076 x30794)
+:assumption (or (not x9647) x21789 x10600)
+:assumption (or (not x19140) x29647)
+:assumption (or x27853 (not x5276))
+:assumption (or (not x3290) x24655)
+:assumption (or (not x9351) (not x2527))
+:assumption (or (not x24632) (not x2266))
+:assumption (or x4702 (not x25894) x19304 (not x10664) (not x24742))
+:assumption (or x14337 x17859)
+:assumption (or x6272 (not x6904))
+:assumption (or (not x12101) x13111)
+:assumption (or (not x12687) x2500)
+:assumption (or (not x23244) (not x4797))
+:assumption (or (not x17238) (not x7503))
+:assumption (or x21184 x7424)
+:assumption (or (not x10432) (not x4502))
+:assumption (or x25227 x20424)
+:assumption (or (not x5898) x15079 x16907)
+:assumption (or x14408 x12975 (not x30238) (not x12628))
+:assumption (or (not x12572) x15699)
+:assumption (or (not x28874) (not x8074))
+:assumption (or x14839 (not x17502) (not x24251))
+:assumption (or (not x3782) (not x30457) x19744 (not x29442))
+:assumption (or x3510 x24082)
+:assumption (or x24396 (not x26559))
+:assumption (or x21672 (not x3029))
+:assumption (or x11802 (not x25474) (not x20735) x31681)
+:assumption (or x15778 (not x22632))
+:assumption (or x4993 x8002)
+:assumption (or (not x9050) x24323)
+:assumption (or x24715 (not x13808))
+:assumption (or (not x9039) x30928)
+:assumption (or (not x3459) (not x18859))
+:assumption (or (not x20525) x17720)
+:assumption (or x16677 (not x21795) (not x7383) (not x21149))
+:assumption (or (not x8916) (not x2056))
+:assumption (or (not x16683) x19765)
+:assumption (or x30274 (not x6340))
+:assumption (or (not x27017) x31595)
+:assumption (or x6717 x24193)
+:assumption (or x18952 (not x5151))
+:assumption (or (not x4377) x23610)
+:assumption (or x30138 x1370)
+:assumption (or x29211 x30921)
+:assumption (or x5230 x1488)
+:assumption (or (not x16236) x20389)
+:assumption (or x16201 (not x8954))
+:assumption (or (not x6381) (not x1582) (not x27799) (not x29241))
+:assumption (or x18519 (not x19711) x11950)
+:assumption (or x19578 (not x29155))
+:assumption (or x12691 x14888)
+:assumption (or (not x5262) (not x16804) x15266)
+:assumption (or (not x13966) x17562)
+:assumption (or x16491 x31044)
+:assumption (or (not x2982) x4620)
+:assumption (or (not x17590) (not x3839))
+:assumption (or (not x21377) x330 x4560 x23740 (not x19306) x5535)
+:assumption (or x26575 x31117 x15621)
+:assumption (or (not x18135) x227)
+:assumption (or (not x21759) (not x24722))
+:assumption (or (not x19516) x18223)
+:assumption (or (not x5394) x451)
+:assumption (or (not x31134) x21071)
+:assumption (or x22493 (not x29903))
+:assumption (or x20109 (not x12210) x520 (not x14157))
+:assumption (or (not x5392) x16888)
+:assumption (or (not x4026) (not x21202) x24573 x1601 (not x13317))
+:assumption (or (not x31506) (not x16003) (not x8675))
+:assumption (or x6754 x13806)
+:assumption (or x27541 (not x27352))
+:assumption (or (not x17352) (not x8692))
+:assumption (or (not x23913) (not x11128))
+:assumption (or (not x21671) x11088)
+:assumption (or (not x31682) x28939)
+:assumption (or x24845 (not x30751))
+:assumption (or x19095 (not x3205))
+:assumption (or x20993 x26955 (not x21045) x3565)
+:assumption (or x28521 x31033)
+:assumption (or (not x16907) (not x8193) (not x28646) x27921 x29289 x4605 (not x8158) (not x13323) (not x11081))
+:assumption (or x27396 x27188)
+:assumption (or (not x25343) x7679)
+:assumption (or x21312 x21475 x23717 x204 (not x2498) (not x11008))
+:assumption (or (not x27448) x21653)
+:assumption (or (not x15567) (not x4965) (not x10914) x7237 (not x11349))
+:assumption (or (not x30454) x15861)
+:assumption (or x10503 x6226)
+:assumption (or x20717 x272)
+:assumption (or x5633 x6250)
+:assumption (or x27134 (not x11218))
+:assumption (or x13150 (not x13464))
+:assumption (or x10691 x30745)
+:assumption (or x22714 (not x9668))
+:assumption (or (not x1683) (not x26166))
+:assumption (or (not x561) x7988)
+:assumption (or x20983 x24124)
+:assumption (or x10184 x1393)
+:assumption (or x30002 x21293)
+:assumption (or x8805 (not x13620))
+:assumption (or x3942 x28712)
+:assumption (or (not x31605) x829)
+:assumption (or (not x7791) (not x14594))
+:assumption (or x17933 (not x16507))
+:assumption (or x12493 (not x10646))
+:assumption (or (not x8622) (not x9678))
+:assumption (or (not x9500) (not x1064))
+:assumption (or x31183 x15432)
+:assumption (or x4587 x16510)
+:assumption (or (not x23327) x18321)
+:assumption (or x10924 x15590)
+:assumption (or (not x13087) x27787)
+:assumption (or x23244 (not x25288))
+:assumption (or (not x8305) (not x24702))
+:assumption (or x22458 (not x28706))
+:assumption (or (not x12761) x25659)
+:assumption (or x6070 (not x10531))
+:assumption (or (not x9865) (not x6449))
+:assumption (or (not x3122) (not x30887))
+:assumption (or (not x1834) x13549)
+:assumption (or (not x23728) (not x1174))
+:assumption (or (not x30910) (not x3907))
+:assumption (or x3795 (not x16251))
+:assumption (or x18855 x15830)
+:assumption (or x29722 (not x15976))
+:assumption (or (not x25659) (not x24786) x28292)
+:assumption (or (not x16759) x14759 (not x26031) x9130)
+:assumption (or (not x30126) (not x3503) (not x15059))
+:assumption (or (not x769) (not x24865))
+:assumption (or (not x14183) x7688)
+:assumption (or x8288 (not x8862))
+:assumption (or (not x16717) x5923)
+:assumption (or (not x3997) x3597 (not x18100) (not x2238) (not x21764))
+:assumption (or (not x7885) (not x2669) (not x17276) x627 (not x1889))
+:assumption (or (not x11184) x18941)
+:assumption (or x14349 x12620)
+:assumption (or x27517 x21505)
+:assumption (or (not x19710) (not x7786))
+:assumption (or (not x20847) x5520)
+:assumption (or x19792 (not x964))
+:assumption (or (not x28205) x21475 (not x9772) (not x24455) x12728)
+:assumption (or (not x11012) x16517)
+:assumption (or x29266 (not x8735))
+:assumption (or (not x24201) x12518)
+:assumption (or x31134 (not x13609))
+:assumption (or x17534 x2339)
+:assumption (or (not x30479) (not x26866))
+:assumption (or (not x28045) x20381)
+:assumption (or x17550 x6284)
+:assumption (or x9722 (not x5946))
+:assumption (or (not x1430) x23027)
+:assumption (or x26432 (not x23130) (not x20398) (not x25084))
+:assumption (or (not x14127) (not x12217))
+:assumption (or (not x5397) (not x11710))
+:assumption (or x10925 (not x23244))
+:assumption (or (not x9216) (not x16648))
+:assumption (or x18207 (not x8712))
+:assumption (or x25736 (not x3967))
+:assumption (or (not x6423) (not x13705) x16593 x22761 x24468)
+:assumption (or x1008 (not x7286))
+:assumption (or x17889 x5319 x8002 x11751 (not x9546) x21972)
+:assumption (or x14756 (not x26334))
+:assumption (or x15303 x12349)
+:assumption (or (not x31380) (not x27537))
+:assumption (or (not x3318) x15987)
+:assumption (or x9941 x20799)
+:assumption (or (not x23741) x29860)
+:assumption (or (not x19992) x24764)
+:assumption (or x20651 (not x13036) x12503 x17009)
+:assumption (or x19235 x26526)
+:assumption (or (not x12242) x30187)
+:assumption (or x20426 x26258)
+:assumption (or (not x14197) x12694)
+:assumption (or (not x15340) x31767)
+:assumption (or x22070 (not x14130))
+:assumption (or (not x23244) x15938)
+:assumption (or (not x16697) (not x1577))
+:assumption (or x7866 (not x17995))
+:assumption (or (not x25391) x24130)
+:assumption (or (not x24953) (not x30629))
+:assumption (or (not x19835) x28874)
+:assumption (or x17088 (not x29529))
+:assumption (or x19332 x28110)
+:assumption (or (not x11199) (not x5394))
+:assumption (or (not x16388) x16089)
+:assumption (or (not x2076) x22965 (not x21692) x7893 (not x26968))
+:assumption (or (not x12221) (not x20369))
+:assumption (or (not x1044) (not x21533))
+:assumption (or (not x16543) (not x780))
+:assumption (or x16595 (not x14061))
+:assumption (or x25472 x4558)
+:assumption (or (not x22410) (not x17728))
+:assumption (or x15034 x24022)
+:assumption (or x19723 (not x25058))
+:assumption (or x13410 (not x26921))
+:assumption (or x25366 (not x4709) x28541 (not x11850))
+:assumption (or (not x7085) (not x5616))
+:assumption (or (not x2899) x16304 (not x30674) x14992 (not x27972))
+:assumption (or x4513 x8724)
+:assumption (or x243 x9595)
+:assumption (or (not x12052) x6359)
+:assumption (or (not x17123) x8090)
+:assumption (or (not x16025) (not x12764))
+:assumption (or (not x16206) x19385)
+:assumption (or (not x15676) x31300)
+:assumption (or (not x29100) (not x26220))
+:assumption (or x11729 x3891)
+:assumption (or (not x29801) x19391)
+:assumption (or (not x28335) (not x17615) x28541 (not x6381))
+:assumption (or (not x17055) (not x24594))
+:assumption (or x18389 (not x1876))
+:assumption (or x20398 (not x11803))
+:assumption (or x19522 x12809)
+:assumption (or (not x2699) (not x11421))
+:assumption (or x20508 (not x8043) (not x5493))
+:assumption (or (not x20373) x30589)
+:assumption (or x26600 x11837)
+:assumption (or (not x23261) (not x15843))
+:assumption (or (not x13738) (not x29121))
+:assumption (or (not x29926) x21767)
+:assumption (or x28858 (not x13148))
+:assumption (or (not x11793) x21099)
+:assumption (or (not x21820) (not x7421) x26589 x9254 x3494 x22375)
+:assumption (or x18340 x31537)
+:assumption (or (not x6730) (not x10917) (not x3782))
+:assumption (or x23635 (not x17931))
+:assumption (or (not x2458) x11553)
+:assumption (or (not x11040) x14639)
+:assumption (or (not x31406) (not x8218) (not x14920) x18813 (not x16994) (not x12322) (not x9870) x18983)
+:assumption (or (not x13715) x7251)
+:assumption (or (not x22699) x11291)
+:assumption (or (not x31447) x24249)
+:assumption (or x31143 x2482 (not x26146) (not x18322))
+:assumption (or x891 x19724)
+:assumption (or x16891 x10355)
+:assumption (or (not x10951) (not x20735))
+:assumption (or (not x12543) x16227)
+:assumption (or (not x27736) x26274)
+:assumption (or (not x5931) x4887)
+:assumption (or x1548 x27989)
+:assumption (or x30893 x6353)
+:assumption (or (not x5429) x6815)
+:assumption (or (not x5641) (not x3209))
+:assumption (or x13404 x27377 x24254 x5786 x29955 (not x22855))
+:assumption (or (not x18101) x23244)
+:assumption (or (not x1626) (not x29925))
+:assumption (or (not x6032) (not x8718))
+:assumption (or (not x11542) x11166)
+:assumption (or x16198 (not x14564))
+:assumption (or (not x12047) (not x27042) x22495)
+:assumption (or (not x22861) x25235)
+:assumption (or x3863 (not x23337))
+:assumption (or (not x7493) (not x27808))
+:assumption (or (not x13856) x26147)
+:assumption (or (not x19800) (not x24398))
+:assumption (or (not x23984) (not x21429))
+:assumption (or x15887 x11185)
+:assumption (or (not x22162) x23785)
+:assumption (or x9359 x18368)
+:assumption (or x29464 x24235)
+:assumption (or x14618 x1070)
+:assumption (or x9008 x5257)
+:assumption (or (not x7992) x7194)
+:assumption (or x1621 (not x30110) x28885 x20873 (not x29671) (not x27633))
+:assumption (or x25186 x16955)
+:assumption (or x22610 x12899)
+:assumption (or x16205 (not x1248))
+:assumption (or (not x25674) x29040)
+:assumption (or (not x26570) x13909)
+:assumption (or (not x27921) (not x4605))
+:assumption (or (not x31608) (not x31829) x28541 (not x5821))
+:assumption (or (not x25790) (not x6187))
+:assumption (or x21465 (not x1348) x23241)
+:assumption (or x9833 x22536)
+:assumption (or x15872 x27205)
+:assumption (or (not x25530) (not x25712))
+:assumption (or x858 x19386)
+:assumption (or x20168 x8304)
+:assumption (or x19439 x11374)
+:assumption (or x21418 (not x24762))
+:assumption (or (not x13832) (not x11765))
+:assumption (or x25315 x26022 x29413)
+:assumption (or x27142 (not x8697))
+:assumption (or (not x29506) (not x15218))
+:assumption (or (not x1994) x6746)
+:assumption (or x26648 x265)
+:assumption (or (not x15463) x4970 (not x14591) x20874 x11936)
+:assumption (or x15442 (not x12308))
+:assumption (or x3990 (not x29442))
+:assumption (or x12439 (not x25659))
+:assumption (or (not x13134) (not x12036))
+:assumption (or (not x29132) (not x17342))
+:assumption (or (not x17118) (not x6346))
+:assumption (or (not x19789) x2903)
+:assumption (or x23545 (not x18920))
+:assumption (or x17264 (not x19864) x30808 (not x5830))
+:assumption (or x31285 (not x16375) x31732)
+:assumption (or x8129 x16303 (not x25968))
+:assumption (or (not x2324) (not x25583))
+:assumption (or x5378 (not x31481))
+:assumption (or x22760 x10817)
+:assumption (or (not x25171) (not x18727))
+:assumption (or (not x24203) x7854)
+:assumption (or x19054 (not x7719) x29772)
+:assumption (or (not x30425) (not x15995))
+:assumption (or x5576 x16025)
+:assumption (or (not x15243) (not x22332))
+:assumption (or x27878 (not x2132))
+:assumption (or x811 x31710)
+:assumption (or (not x12728) x11008)
+:assumption (or x31910 (not x1474))
+:assumption (or x9120 x5179)
+:assumption (or (not x16493) x25887)
+:assumption (or x15357 x19252)
+:assumption (or x654 x16254)
+:assumption (or x16513 (not x8714))
+:assumption (or (not x14017) x835)
+:assumption (or (not x3187) x31376)
+:assumption (or x1430 x22938)
+:assumption (or x10736 x8173)
+:assumption (or x18419 x7756)
+:assumption (or x20891 (not x11301))
+:assumption (or (not x9542) x7351)
+:assumption (or x6962 x22617)
+:assumption (or (not x16698) (not x6132))
+:assumption (or (not x11506) x31291)
+:assumption (or x8516 x2498)
+:assumption (or (not x1761) x10839)
+:assumption (or (not x28885) x29312 x24756 (not x11605))
+:assumption (or (not x11613) x18046 x27087 (not x31498) x13239)
+:assumption (or (not x20669) (not x27726))
+:assumption (or (not x11792) (not x19908))
+:assumption (or x17875 (not x251) (not x14310))
+:assumption (or (not x14961) (not x17387))
+:assumption (or (not x5267) x27919)
+:assumption (or (not x1017) x6045)
+:assumption (or (not x5664) (not x27102))
+:assumption (or x5161 x7826)
+:assumption (or (not x4795) (not x18738))
+:assumption (or (not x16950) (not x9340))
+:assumption (or (not x13013) (not x17979))
+:assumption (or (not x25319) (not x31417))
+:assumption (or (not x21038) x30541)
+:assumption (or (not x19402) (not x29617) (not x9504) x31739)
+:assumption (or x10807 x28628)
+:assumption (or (not x18615) (not x13576))
+:assumption (or x2322 (not x16305))
+:assumption (or (not x31637) (not x26561))
+:assumption (or (not x10401) x22183)
+:assumption (or x6935 (not x2950))
+:assumption (or x27567 (not x28973))
+:assumption (or (not x11710) x17549)
+:assumption (or x30443 (not x16907) (not x2893) x7031 (not x19604) x26283 (not x8512) (not x14615) x30392)
+:assumption (or x4654 x22802)
+:assumption (or (not x778) (not x8121) (not x10477))
+:assumption (or x13083 (not x25245))
+:assumption (or (not x17598) x19871)
+:assumption (or (not x18744) (not x5528))
+:assumption (or (not x27516) x5045)
+:assumption (or (not x5933) (not x27599))
+:assumption (or (not x26647) x16025 x23421)
+:assumption (or x15331 x7035)
+:assumption (or x19386 x20637 (not x28050))
+:assumption (or (not x12588) (not x19666) (not x23808) (not x28265))
+:assumption (or (not x18095) (not x27745))
+:assumption (or (not x12176) x11979)
+:assumption (or (not x28117) x1409)
+:assumption (or (not x28071) (not x17663) x25659)
+:assumption (or x777 x5084)
+:assumption (or (not x31263) (not x27398))
+:assumption (or (not x7400) (not x19180))
+:assumption (or (not x7748) x9190)
+:assumption (or x13773 (not x18344))
+:assumption (or (not x1728) (not x26897))
+:assumption (or (not x23048) (not x29368) (not x6767))
+:assumption (or x16320 x21568)
+:assumption (or (not x15016) (not x951))
+:assumption (or x10548 (not x5660))
+:assumption (or x22733 (not x5683))
+:assumption (or x31784 (not x6969))
+:assumption (or (not x25321) x1890)
+:assumption (or (not x25620) x1816)
+:assumption (or (not x202) x14107)
+:assumption (or x8742 (not x22127))
+:assumption (or (not x1042) (not x10353))
+:assumption (or (not x7356) (not x27012))
+:assumption (or x24992 x29241)
+:assumption (or x10280 x25315)
+:assumption (or x7677 (not x30237))
+:assumption (or (not x3128) x28840)
+:assumption (or x22982 x24200)
+:assumption (or x31743 (not x8002))
+:assumption (or x15666 (not x11941))
+:assumption (or x4999 (not x18049))
+:assumption (or x1935 (not x27855))
+:assumption (or (not x28678) (not x21733))
+:assumption (or (not x9585) x30148 x13647 x7819 x12699)
+:assumption (or x19886 x11712)
+:assumption (or x3516 x13018 x19452)
+:assumption (or (not x18524) (not x8881))
+:assumption (or x17506 x12883 (not x2343) (not x27532) (not x21726) x7513 (not x12539) (not x1426) x14662)
+:assumption (or (not x3339) x25294 x11772)
+:assumption (or x8661 (not x23259))
+:assumption (or (not x1829) (not x13288) x8515 x13194 x10361)
+:assumption (or x17359 x11281 x14989)
+:assumption (or (not x846) x22031 x10919)
+:assumption (or x22475 (not x14128))
+:assumption (or (not x15521) x8253)
+:assumption (or x7887 (not x11650))
+:assumption (or (not x5031) x13933)
+:assumption (or (not x7449) x2887)
+:assumption (or (not x18868) (not x18203))
+:assumption (or (not x11883) x15905)
+:assumption (or x7537 (not x7478) (not x28025))
+:assumption (or x22726 (not x15849) (not x30003) x14839)
+:assumption (or x30412 x9296)
+:assumption (or (not x8825) (not x25428))
+:assumption (or x18133 x24154)
+:assumption (or (not x24104) x31685)
+:assumption (or x4284 x6110)
+:assumption (or x10604 (not x31815))
+:assumption (or (not x7962) x3644 x14739 x6180 (not x11770))
+:assumption (or x25366 x13543)
+:assumption (or (not x26810) x30113 (not x25833))
+:assumption (or x1026 x13294 x964 (not x1501) (not x30961))
+:assumption (or x7410 x11419)
+:assumption (or x6917 x20987)
+:assumption (or x31008 x13608)
+:assumption (or (not x12339) x31307)
+:assumption (or x17254 x661)
+:assumption (or (not x19422) x14049)
+:assumption (or (not x23704) x28968)
+:assumption (or (not x29280) x1970)
+:assumption (or x4628 (not x29280))
+:assumption (or (not x8113) x466)
+:assumption (or (not x17497) (not x28579))
+:assumption (or x9025 (not x7976))
+:assumption (or (not x11396) (not x22604) (not x8948))
+:assumption (or x9835 x31025)
+:assumption (or x408 (not x8602))
+:assumption (or x8602 x11312)
+:assumption (or (not x6408) x17707 (not x25607) x20269 (not x23214))
+:assumption (or (not x10775) x14849)
+:assumption (or x16139 (not x14304))
+:assumption (or (not x6241) (not x10859))
+:assumption (or x4147 x22175)
+:assumption (or (not x24108) x9580)
+:assumption (or (not x23078) x23714)
+:assumption (or (not x12072) (not x15863))
+:assumption (or x28342 x22457)
+:assumption (or (not x29035) (not x878))
+:assumption (or x7879 x13118)
+:assumption (or x24761 x17687)
+:assumption (or x4325 x19575 x20384 x5282 (not x14512) x30630 x6151 x1393)
+:assumption (or (not x22852) (not x27513))
+:assumption (or (not x31749) (not x16637))
+:assumption (or x6845 x10914)
+:assumption (or x25366 x6477 x13828)
+:assumption (or x27360 x31724)
+:assumption (or (not x6364) x2133)
+:assumption (or x31803 (not x16741))
+:assumption (or x29676 (not x15413))
+:assumption (or x30637 (not x847))
+:assumption (or (not x1657) (not x7748) (not x7661))
+:assumption (or x19706 (not x4559) x3967)
+:assumption (or x8157 (not x4715))
+:assumption (or x19773 (not x9531))
+:assumption (or x23183 x31604 (not x25376))
+:assumption (or x18145 (not x23244))
+:assumption (or x4474 (not x18368) (not x9985) (not x11063))
+:assumption (or x11578 x21959)
+:assumption (or (not x12087) x5155)
+:assumption (or x26756 (not x24493))
+:assumption (or x22129 x26127)
+:assumption (or (not x2992) x28090)
+:assumption (or x11009 x29290)
+:assumption (or x20526 x14336)
+:assumption (or x17338 (not x31767) x14686)
+:assumption (or x24804 x11134)
+:assumption (or (not x8371) (not x12895) (not x21746) x25830 x10073 (not x4202) (not x2524) x18375)
+:assumption (or x9076 (not x23244))
+:assumption (or x9870 (not x18813))
+:assumption (or (not x4512) (not x26646))
+:assumption (or x12823 (not x5524))
+:assumption (or x7605 x20001 x10)
+:assumption (or (not x20929) x2008)
+:assumption (or (not x10284) x2992)
+:assumption (or (not x25020) (not x25367) x31819 (not x514) x30653)
+:assumption (or (not x22976) (not x10060))
+:assumption (or (not x27977) (not x30464) (not x8769) (not x5724))
+:assumption (or (not x28062) (not x2202) x26762)
+:assumption (or x9128 x29500)
+:assumption (or x10270 x28816)
+:assumption (or x1181 x28679)
+:assumption (or (not x11202) x29441 (not x11475) x16266)
+:assumption (or x22191 (not x14757))
+:assumption (or (not x7411) (not x14772))
+:assumption (or (not x15853) x2496)
+:assumption (or (not x9531) (not x6792))
+:assumption (or x18730 x28474)
+:assumption (or (not x10809) x19864)
+:assumption (or x26107 x19531)
+:assumption (or x2415 (not x9807))
+:assumption (or (not x13238) x17728)
+:assumption (or x17230 (not x4950))
+:assumption (or x13956 (not x7167) x6780)
+:assumption (or (not x12410) (not x28239))
+:assumption (or (not x16159) x15778)
+:assumption (or (not x15692) (not x27530))
+:assumption (or (not x16148) x29500)
+:assumption (or (not x14333) (not x805))
+:assumption (or (not x13714) (not x26099))
+:assumption (or x27442 x6121)
+:assumption (or x29959 (not x27510))
+:assumption (or x23501 x1393)
+:assumption (or x2453 (not x5394))
+:assumption (or x17029 x20238 x8586)
+:assumption (or x1685 (not x23329))
+:assumption (or x9067 x30633)
+:assumption (or x16885 (not x19448))
+:assumption (or (not x15945) (not x31195))
+:assumption (or x22855 x142 x14773)
+:assumption (or (not x16379) x964 (not x21630) (not x14021) x169 x27770)
+:assumption (or (not x25947) x6244)
+:assumption (or x31274 x27339 x16446)
+:assumption (or (not x13797) (not x29751))
+:assumption (or (not x21896) x24125)
+:assumption (or (not x11127) (not x10214))
+:assumption (or x16815 x1118 (not x10865) x28826 x1151 (not x8177) (not x7588) (not x14876) (not x25090))
+:assumption (or (not x5905) x8565)
+:assumption (or (not x24875) (not x10715))
+:assumption (or x31045 x28371)
+:assumption (or (not x9089) x16785)
+:assumption (or x27042 x5407)
+:assumption (or x30710 x10595)
+:assumption (or (not x20291) (not x6356) x4406 x21298)
+:assumption (or x13547 (not x24977))
+:assumption (or x30113 (not x17945))
+:assumption (or x4603 (not x4973))
+:assumption (or x12272 (not x30409))
+:assumption (or x8732 x17820)
+:assumption (or (not x9957) (not x21532) (not x12166) (not x5243) x12087)
+:assumption (or (not x15930) x17066)
+:assumption (or (not x30212) (not x15249))
+:assumption (or x7558 x4401)
+:assumption (or x1567 (not x16896))
+:assumption (or x8002 x27348)
+:assumption (or (not x4707) (not x6900))
+:assumption (or (not x30383) (not x20517))
+:assumption (or (not x29695) x12456)
+:assumption (or x502 x16918)
+:assumption (or (not x13016) x6599)
+:assumption (or (not x7928) x14691)
+:assumption (or x15234 x18826)
+:assumption (or (not x25812) (not x25376))
+:assumption (or (not x17647) x22556)
+:assumption (or (not x6831) x23315 x14689 x23601 x18694 (not x7422) (not x6169) x23884)
+:assumption (or (not x9048) (not x5528))
+:assumption (or (not x5401) x15795 (not x25495))
+:assumption (or x2523 x28057)
+:assumption (or x12922 x28084)
+:assumption (or x4746 x24615)
+:assumption (or (not x26189) x16265)
+:assumption (or (not x4936) x31608 (not x30792) (not x19678) x20128 x9531 (not x14882))
+:assumption (or (not x218) (not x2307))
+:assumption (or (not x14510) x2382)
+:assumption (or (not x22801) x14080)
+:assumption (or x14894 (not x24274))
+:assumption (or (not x8182) (not x21618))
+:assumption (or (not x26280) (not x17467))
+:assumption (or (not x12942) x31661)
+:assumption (or (not x3463) (not x29678))
+:assumption (or x12513 x15546)
+:assumption (or x22899 x13622)
+:assumption (or x7558 (not x16510))
+:assumption (or (not x457) x23244 (not x13576))
+:assumption (or (not x202) (not x17644))
+:assumption (or x1430 x14782)
+:assumption (or x27489 x21441)
+:assumption (or x20087 x26280 x17467 (not x30264))
+:assumption (or (not x10060) (not x25638))
+:assumption (or (not x20402) x26004 (not x25366) (not x10027))
+:assumption (or x28335 x17615)
+:assumption (or x8727 x19143)
+:assumption (or (not x11643) x20917)
+:assumption (or x23664 x2280)
+:assumption (or (not x20416) x10713)
+:assumption (or (not x15560) (not x16025))
+:assumption (or x18003 x9578)
+:assumption (or x23674 (not x25484))
+:assumption (or (not x1282) (not x29312))
+:assumption (or (not x11986) (not x4916))
+:assumption (or (not x8073) x11379)
+:assumption (or x15036 x31362)
+:assumption (or (not x11900) (not x11374) (not x31904) x24059)
+:assumption (or x5008 x11068)
+:assumption (or x21167 (not x21298))
+:assumption (or x18218 (not x16204))
+:assumption (or (not x8793) (not x3238))
+:assumption (or (not x9518) (not x16447))
+:assumption (or (not x22353) (not x19131))
+:assumption (or (not x23199) x8002)
+:assumption (or x28288 x10704)
+:assumption (or x17451 (not x4636))
+:assumption (or (not x20657) x13758)
+:assumption (or (not x20266) (not x4376))
+:assumption (or (not x12947) (not x28396) (not x21298))
+:assumption (or (not x27045) (not x11586))
+:assumption (or x14372 x16784 x15227)
+:assumption (or x24870 (not x15717))
+:assumption (or (not x7113) (not x16920))
+:assumption (or (not x31169) x4451)
+:assumption (or x14790 (not x30176))
+:assumption (or x29348 x4239)
+:assumption (or (not x8184) x7792 (not x22114) x24435)
+:assumption (or (not x28645) (not x28965))
+:assumption (or (not x5586) (not x24385))
+:assumption (or (not x2592) (not x19515))
+:assumption (or x3481 (not x12045))
+:assumption (or (not x11975) x5309)
+:assumption (or (not x6718) x28912)
+:assumption (or (not x10989) x22852)
+:assumption (or x6951 x21211 x22225 x19457)
+:assumption (or x30792 (not x27860))
+:assumption (or (not x13835) x4337)
+:assumption (or (not x26428) (not x9676))
+:assumption (or (not x3290) x9858)
+:assumption (or (not x31921) (not x3960))
+:assumption (or (not x10064) (not x9700) (not x9265) x9246 x15944 (not x12438) x12259)
+:assumption (or x18960 x15460)
+:assumption (or x11715 x23244)
+:assumption (or x8614 (not x25468))
+:assumption (or x8229 (not x30272) (not x14129))
+:assumption (or x12341 x28588)
+:assumption (or (not x18464) x30812)
+:assumption (or x23328 (not x26464))
+:assumption (or (not x7413) x28319)
+:assumption (or (not x24977) (not x9204))
+:assumption (or x31829 x10490 (not x28541) (not x22209))
+:assumption (or x13956 x26060 (not x31180))
+:assumption (or x22144 x25939)
+:assumption (or x21164 x10536)
+:assumption (or (not x4100) (not x15212) (not x6951) (not x6149))
+:assumption (or (not x19964) (not x13887))
+:assumption (or (not x16025) (not x10163))
+:assumption (or x7712 (not x3305))
+:assumption (or (not x16895) x9719)
+:assumption (or (not x1404) x14378)
+:assumption (or x29334 x24652)
+:assumption (or x24321 x25948 (not x1545) x6416)
+:assumption (or x24439 x16802)
+:assumption (or x28430 (not x15936) (not x23282) x3348)
+:assumption (or x1219 (not x10521))
+:assumption (or (not x17302) (not x15587) (not x7315))
+:assumption (or x6801 x19866)
+:assumption (or x30 (not x27099))
+:assumption (or x3528 (not x22761))
+:assumption (or (not x30667) x15789)
+:assumption (or x28475 x16917)
+:assumption (or (not x27976) (not x14003))
+:assumption (or (not x26453) x29591)
+:assumption (or x14603 x25156)
+:assumption (or x19816 x26919 (not x9939) (not x17039) x22936 (not x1286) x30556 x6243 x7471)
+:assumption (or (not x6003) (not x30311))
+:assumption (or x16468 x25370)
+:assumption (or x20929 x29931)
+:assumption (or x20052 x14916)
+:assumption (or x22072 x25025)
+:assumption (or x29829 x21527)
+:assumption (or x26656 (not x21221))
+:assumption (or x9883 (not x13730))
+:assumption (or x17618 (not x8532) x14712 (not x5739))
+:assumption (or (not x14202) (not x23510))
+:assumption (or x155 (not x29312))
+:assumption (or (not x20166) (not x26430))
+:assumption (or x24073 x30509)
+:assumption (or x20279 (not x8002))
+:assumption (or (not x6908) x17589)
+:assumption (or (not x23848) (not x21653))
+:assumption (or (not x26715) (not x23909))
+:assumption (or (not x2345) x4662)
+:assumption (or (not x8101) (not x15031))
+:assumption (or x2113 x25121)
+:assumption (or x21436 x17066)
+:assumption (or (not x1542) x5479)
+:assumption (or x16025 x17047 (not x26923))
+:assumption (or x4533 (not x7542) (not x16743) (not x27532) (not x9850) (not x31873) x11201)
+:assumption (or x8083 (not x21051))
+:assumption (or (not x23874) x10392)
+:assumption (or (not x24506) x24741 (not x23716) (not x24032) (not x21819))
+:assumption (or (not x4950) (not x8726))
+:assumption (or (not x29312) (not x3608))
+:assumption (or (not x19428) x27684)
+:assumption (or (not x14370) x5147 (not x4200))
+:assumption (or x27406 x7164)
+:assumption (or x7116 x20398)
+:assumption (or (not x1756) (not x21321))
+:assumption (or (not x30255) x15057)
+:assumption (or x10025 x24722 x16802 x9989)
+:assumption (or (not x4084) x24353)
+:assumption (or (not x17482) (not x1510))
+:assumption (or x22987 (not x9915))
+:assumption (or (not x31657) (not x5182))
+:assumption (or x29571 (not x24577))
+:assumption (or (not x12070) (not x30175))
+:assumption (or x13874 x18706)
+:assumption (or (not x15825) x11920)
+:assumption (or (not x25437) x30745)
+:assumption (or x18519 (not x17351) x19711 (not x6595) (not x10746) x22670)
+:assumption (or x1529 (not x13956) x9462 x14985 (not x22226) x6063 x17121)
+:assumption (or x9008 (not x29970) x23034)
+:assumption (or (not x22950) x8666)
+:assumption (or (not x7186) x6060)
+:assumption (or (not x22360) (not x21372))
+:assumption (or x7283 (not x1582) (not x14917) (not x5640) (not x8702))
+:assumption (or x31312 (not x9627))
+:assumption (or x8626 x23414)
+:assumption (or x16243 x15101 x21129 (not x4559))
+:assumption (or x6503 x14839 (not x7004) x15046)
+:assumption (or (not x13171) (not x31923))
+:assumption (or x8685 x10237 (not x5423) x13633)
+:assumption (or x6711 (not x30629))
+:assumption (or x8829 (not x11709))
+:assumption (or (not x27300) x9154)
+:assumption (or x20797 (not x31816))
+:assumption (or x1670 (not x26956))
+:assumption (or x1013 x11122)
+:assumption (or (not x14517) x25777)
+:assumption (or x19559 (not x12551))
+:assumption (or (not x6760) x26413)
+:assumption (or x7914 (not x30872))
+:assumption (or x18672 x24825)
+:assumption (or x9259 (not x5832))
+:assumption (or (not x25838) x4038 (not x4312) (not x9337))
+:assumption (or x28885 (not x2578) x1762)
+:assumption (or (not x25969) (not x3589))
+:assumption (or (not x590) (not x17733))
+:assumption (or x31125 x4386)
+:assumption (or x17438 x12705)
+:assumption (or (not x10145) (not x1583))
+:assumption (or (not x4259) x17408)
+:assumption (or x12026 x23838)
+:assumption (or x19677 (not x20896) x719)
+:assumption (or x23564 x30127)
+:assumption (or x5390 x5997)
+:assumption (or (not x18328) x12153 (not x23244) (not x8002))
+:assumption (or (not x16616) (not x26479))
+:assumption (or x20087 (not x555))
+:assumption (or (not x27917) x16758)
+:assumption (or (not x31120) x6727)
+:assumption (or (not x22099) (not x301))
+:assumption (or (not x25366) x4733 x16786)
+:assumption (or (not x27512) (not x1103))
+:assumption (or x15270 (not x30474) (not x8440) (not x473) x9172 (not x1594) (not x4385))
+:assumption (or x24759 (not x30776))
+:assumption (or (not x25911) (not x17737))
+:assumption (or x5103 (not x26863))
+:assumption (or x29606 x10872 (not x3736))
+:assumption (or x4586 (not x5206))
+:assumption (or x19196 x19925)
+:assumption (or (not x24745) x26159)
+:assumption (or x7540 x28909)
+:assumption (or x3452 x3814)
+:assumption (or (not x31353) (not x8992))
+:assumption (or x30902 x12826)
+:assumption (or (not x28973) (not x4964) (not x24341) (not x288))
+:assumption (or (not x30887) x10057)
+:assumption (or x7409 (not x7357))
+:assumption (or (not x24676) (not x26381))
+:assumption (or (not x30208) x26241)
+:assumption (or (not x9056) x24019 x20969 x93 (not x20097) (not x19319) x17606 (not x480))
+:assumption (or x25898 x6354)
+:assumption (or x17219 x24557)
+:assumption (or x18220 x3237)
+:assumption (or x24050 x16235)
+:assumption (or x2089 x30991)
+:assumption (or x27797 (not x1457))
+:assumption (or (not x18191) (not x15716))
+:assumption (or (not x17075) x29060)
+:assumption (or x23399 (not x4211))
+:assumption (or (not x14688) x2880)
+:assumption (or x10696 x6133)
+:assumption (or x7629 (not x14819))
+:assumption (or (not x28178) x16938)
+:assumption (or (not x13550) x7224 x20528 (not x20069))
+:assumption (or (not x18789) x23301)
+:assumption (or (not x10858) x30804 x15460 x8951 (not x21705) (not x19560))
+:assumption (or (not x6476) x11783)
+:assumption (or (not x19115) x6896)
+:assumption (or x6413 x10064 (not x873))
+:assumption (or (not x31074) (not x24099))
+:assumption (or x3565 (not x1602))
+:assumption (or x12191 (not x26158))
+:assumption (or x30863 x29177)
+:assumption (or x2475 x12312)
+:assumption (or x26882 x519 x5240)
+:assumption (or (not x20081) (not x17824))
+:assumption (or x14664 (not x30002) x30887 x2908)
+:assumption (or x29657 (not x2242) x95)
+:assumption (or (not x25634) (not x12335))
+:assumption (or (not x17696) (not x28572))
+:assumption (or (not x6546) x30557)
+:assumption (or x5007 x10654)
+:assumption (or (not x30650) x27576)
+:assumption (or (not x11967) x9863)
+:assumption (or (not x26212) x29644)
+:assumption (or x17930 (not x3571))
+:assumption (or (not x31685) (not x11439) (not x18775) x24104 x13563)
+:assumption (or x13001 x23545 x25555 x6243)
+:assumption (or (not x3134) (not x19500) x28743 (not x20016) x10123 (not x6452) x18557 (not x1455))
+:assumption (or (not x12893) (not x13784))
+:assumption (or x14934 x10172)
+:assumption (or (not x1710) x762)
+:assumption (or x21573 (not x21239) x22033 x22101 x14278)
+:assumption (or (not x10723) x23111 x17119)
+:assumption (or x28751 (not x24818))
+:assumption (or (not x14192) x30208)
+:assumption (or (not x21513) (not x4317))
+:assumption (or x9008 x16943)
+:assumption (or (not x5020) (not x480))
+:assumption (or x15537 (not x1778))
+:assumption (or x25019 (not x2706))
+:assumption (or x23108 (not x17816))
+:assumption (or (not x27583) (not x12651))
+:assumption (or x22964 (not x31926))
+:assumption (or x5528 x20987)
+:assumption (or (not x19703) x31014)
+:assumption (or x10217 x29489 (not x13956) x10335)
+:assumption (or x1542 (not x3358) x13956)
+:assumption (or x21653 (not x22418))
+:assumption (or (not x4022) x10332)
+:assumption (or (not x29138) (not x19846))
+:assumption (or (not x27408) (not x25659) x9330)
+:assumption (or x10885 (not x27743))
+:assumption (or (not x28190) (not x17364))
+:assumption (or x22293 x8745)
+:assumption (or x6463 x23244 x8002 (not x16628))
+:assumption (or x21923 (not x2685))
+:assumption (or x6199 (not x20021))
+:assumption (or x6149 x11415)
+:assumption (or (not x3626) x16436)
+:assumption (or (not x841) x11840)
+:assumption (or (not x29019) (not x29186))
+:assumption (or (not x1490) (not x20223))
+:assumption (or (not x5431) (not x18500) x566 (not x30403))
+:assumption (or x21416 x10920)
+:assumption (or (not x27078) (not x25659))
+:assumption (or x29081 x19925)
+:assumption (or x7150 (not x16618))
+:assumption (or (not x5897) x27661)
+:assumption (or (not x29639) x18884 x6969)
+:assumption (or (not x6746) (not x4189) x27911 (not x3936))
+:assumption (or x9070 (not x9445) (not x13177) (not x23339) x9520 x22669 x11179 (not x31347))
+:assumption (or x7194 (not x13105))
+:assumption (or x4870 x30864)
+:assumption (or x31321 (not x24966))
+:assumption (or x5528 (not x10999))
+:assumption (or x16889 x14294)
+:assumption (or (not x7957) x20513)
+:assumption (or (not x28607) (not x27307))
+:assumption (or (not x29261) (not x19032))
+:assumption (or x19842 (not x17087))
+:assumption (or (not x470) (not x10159))
+:assumption (or (not x21614) x16025)
+:assumption (or x17183 x14537)
+:assumption (or (not x19182) (not x14299))
+:assumption (or (not x17516) x19170)
+:assumption (or (not x7496) x16665 (not x9546) (not x20661) x13152)
+:assumption (or x27490 x558)
+:assumption (or x13956 (not x25191))
+:assumption (or (not x29225) x27260)
+:assumption (or (not x7366) (not x27715))
+:assumption (or (not x16101) x17055)
+:assumption (or x13007 x2392)
+:assumption (or (not x11472) (not x24555) (not x20277) x11970)
+:assumption (or x8236 x21298)
+:assumption (or x13253 (not x30736))
+:assumption (or x8062 (not x28130))
+:assumption (or (not x27830) (not x5367))
+:assumption (or (not x24167) (not x27870))
+:assumption (or x918 (not x7475))
+:assumption (or (not x14435) (not x30248))
+:assumption (or (not x21298) x31748 x12467 x26120)
+:assumption (or (not x17197) x15970)
+:assumption (or (not x18820) (not x28844) x22962 (not x15424) (not x26725))
+:assumption (or x21604 (not x31639))
+:assumption (or (not x29497) (not x25642))
+:assumption (or x23720 (not x20764))
+:assumption (or (not x18785) x9490)
+:assumption (or x14641 (not x13631))
+:assumption (or x28268 x4350)
+:assumption (or (not x2473) (not x18718) (not x8451) (not x15737) (not x17944) (not x28581) x6554 x19038 (not x7048))
+:assumption (or x1986 (not x13368))
+:assumption (or (not x10657) x9154)
+:assumption (or x5592 (not x5467))
+:assumption (or x16210 (not x8207))
+:assumption (or x25710 x2410)
+:assumption (or (not x8330) (not x28568))
+:assumption (or (not x11213) (not x20327))
+:assumption (or (not x13716) x8023)
+:assumption (or (not x15374) x25273 x26897)
+:assumption (or (not x25366) (not x29473) (not x14679))
+:assumption (or x964 x30701)
+:assumption (or x17720 (not x23791))
+:assumption (or (not x26042) (not x21639))
+:assumption (or (not x5384) (not x14739))
+:assumption (or (not x24831) x16849)
+:assumption (or (not x22698) (not x2341))
+:assumption (or (not x10947) x5832 (not x4990) x21986 (not x20855) x10844 x16731 (not x3213) x25819)
+:assumption (or (not x17534) (not x10820))
+:assumption (or (not x19336) (not x9684) (not x29924) x29346)
+:assumption (or (not x521) x6907)
+:assumption (or (not x6969) x11436)
+:assumption (or x7351 (not x4350) x20253 x21712 (not x18907) (not x28268) (not x13556) x8522)
+:assumption (or x13284 (not x29780) (not x11141) (not x1815))
+:assumption (or (not x11120) x25512 x7595 (not x9597) (not x21924))
+:assumption (or x8792 x14641 (not x17168) x5854)
+:assumption (or x8114 (not x25486))
+:assumption (or (not x27070) x7047)
+:assumption (or (not x27266) (not x25659) x952 x3652 (not x1095) (not x12694) x17437 (not x8677))
+:assumption (or (not x30668) x8375)
+:assumption (or (not x20596) (not x5385))
+:assumption (or (not x22443) (not x13317) x18441)
+:assumption (or x23081 x768)
+:assumption (or (not x7836) x23672)
+:assumption (or (not x30339) x21935)
+:assumption (or x7673 x17231)
+:assumption (or x14655 (not x5804))
+:assumption (or (not x22534) x5012 (not x16715) (not x13479) (not x21265))
+:assumption (or (not x22974) x18770 (not x2033) x450 x16230)
+:assumption (or (not x23807) x17016)
+:assumption (or (not x23734) x22460)
+:assumption (or x20849 (not x16880))
+:assumption (or x25659 x7099 x2078)
+:assumption (or x31759 (not x7178) x769 (not x28514) (not x20043) x1952 x17117)
+:assumption (or (not x28680) (not x28264))
+:assumption (or x14365 x12791)
+:assumption (or x21487 x31860)
+:assumption (or x11193 (not x17362) (not x11394) x4059 x31641 (not x20533))
+:assumption (or x10213 (not x21955))
+:assumption (or x28739 x18661)
+:assumption (or x13292 x15327)
+:assumption (or (not x1379) x13188)
+:assumption (or x26259 x11507)
+:assumption (or x451 (not x18275))
+:assumption (or (not x17278) x27729)
+:assumption (or x10180 (not x22036))
+:assumption (or (not x30008) (not x6605))
+:assumption (or x2781 (not x29244) x21651 (not x11426) x2897)
+:assumption (or (not x27950) x21997)
+:assumption (or x25902 (not x19422))
+:assumption (or x4270 (not x22826))
+:assumption (or (not x17359) x29144)
+:assumption (or (not x12685) (not x22363))
+:assumption (or (not x30439) (not x30022) x24148)
+:assumption (or x453 (not x12489))
+:assumption (or (not x16943) (not x9008) x2625)
+:assumption (or (not x6638) (not x11354))
+:assumption (or (not x24937) (not x26682))
+:assumption (or (not x23244) x11030)
+:assumption (or (not x16991) (not x15440))
+:assumption (or x29649 x18216 x5660)
+:assumption (or x20482 x5725)
+:assumption (or (not x13892) x22758)
+:assumption (or x26683 x25060)
+:assumption (or x27875 (not x6623))
+:assumption (or x28345 (not x19437))
+:assumption (or (not x17572) x25377)
+:assumption (or (not x1548) x693 (not x19937) x22531 (not x27989))
+:assumption (or x1330 x13083)
+:assumption (or x14809 x16358)
+:assumption (or x4192 x11952)
+:assumption (or x25099 (not x14448))
+:assumption (or (not x19053) x27227 x29316)
+:assumption (or x10780 (not x7887) (not x3042) x14239 (not x8731) (not x20686))
+:assumption (or x12970 (not x24085))
+:assumption (or (not x29966) (not x19451))
+:assumption (or x23329 (not x1685) (not x21298))
+:assumption (or x4190 (not x64))
+:assumption (or (not x12364) (not x652))
+:assumption (or x27589 x9964 x1273)
+:assumption (or x22375 x16195)
+:assumption (or (not x11199) x19077)
+:assumption (or x27024 (not x15668))
+:assumption (or x19627 (not x7999))
+:assumption (or (not x11800) (not x20640))
+:assumption (or x336 x26401)
+:assumption (or x8762 (not x29959))
+:assumption (or x8536 (not x7098))
+:assumption (or (not x8064) x19586)
+:assumption (or (not x10996) x1340)
+:assumption (or x18859 x23349)
+:assumption (or (not x2338) x9847)
+:assumption (or (not x9647) (not x18481) x21093)
+:assumption (or (not x27103) x13502)
+:assumption (or (not x20558) x27292)
+:assumption (or x15159 x18637)
+:assumption (or (not x95) x2242)
+:assumption (or x23586 x17899)
+:assumption (or (not x30964) x28708)
+:assumption (or (not x11168) (not x16809))
+:assumption (or (not x19152) x25741)
+:assumption (or (not x9008) x24405 x24646)
+:assumption (or (not x14839) x13062)
+:assumption (or x28578 (not x16374))
+:assumption (or (not x15687) x8002)
+:assumption (or x6951 x4100)
+:assumption (or (not x2669) (not x11446))
+:assumption (or x17359 x10241 (not x19596))
+:assumption (or (not x6594) (not x3636))
+:assumption (or x31173 x29622)
+:assumption (or x20060 x8169)
+:assumption (or x12653 x7296)
+:assumption (or (not x26084) (not x21304))
+:assumption (or (not x18923) (not x10165))
+:assumption (or (not x21877) (not x3658) (not x827))
+:assumption (or x3468 x25542)
+:assumption (or x25821 x16041)
+:assumption (or (not x23467) x27623)
+:assumption (or (not x21846) (not x5970))
+:assumption (or (not x16319) x13941)
+:assumption (or x8091 (not x26654))
+:assumption (or (not x31314) x21865)
+:assumption (or (not x13576) (not x1946))
+:assumption (or (not x6781) x22467 x17945 (not x28700) (not x30258))
+:assumption (or x11778 x31731)
+:assumption (or x22388 x26013)
+:assumption (or (not x16025) x19062 x13815)
+:assumption (or (not x209) x24912)
+:assumption (or (not x3622) (not x26252) (not x29142))
+:assumption (or x6390 (not x11945))
+:assumption (or (not x19356) (not x19393))
+:assumption (or x5891 x28997 (not x11281) x17359)
+:assumption (or (not x18639) (not x1574))
+:assumption (or x8558 (not x16706))
+:assumption (or (not x17248) x14402)
+:assumption (or x12140 x21516)
+:assumption (or x16075 (not x7751))
+:assumption (or x19983 (not x16003))
+:assumption (or x15057 x26750)
+:assumption (or x13525 x25025)
+:assumption (or x28186 x9089)
+:assumption (or (not x15776) (not x21653))
+:assumption (or x27218 (not x10306))
+:assumption (or x21951 x26132)
+:assumption (or (not x6149) x8320)
+:assumption (or (not x15500) (not x1494))
+:assumption (or (not x7086) (not x5740))
+:assumption (or (not x2732) x15095 (not x31058) x14839)
+:assumption (or x16374 (not x22422))
+:assumption (or (not x14631) x3837)
+:assumption (or (not x3906) (not x7664))
+:assumption (or x22485 x371)
+:assumption (or x1922 (not x4945) x17591 (not x12076))
+:assumption (or (not x3068) (not x10450))
+:assumption (or (not x31330) x7159)
+:assumption (or (not x14488) x21298)
+:assumption (or x30556 x6709)
+:assumption (or (not x12213) (not x31789))
+:assumption (or x20552 x24508)
+:assumption (or (not x9936) x12940)
+:assumption (or (not x22883) x2346)
+:assumption (or (not x21666) (not x17860))
+:assumption (or (not x2919) (not x27040))
+:assumption (or (not x5367) (not x27011) x14958)
+:assumption (or (not x21202) (not x28959))
+:assumption (or (not x9008) (not x2183))
+:assumption (or (not x25054) x4397)
+:assumption (or (not x4950) x25 x23244)
+:assumption (or x25596 (not x3606))
+:assumption (or (not x29606) x20561)
+:assumption (or (not x3320) x12387)
+:assumption (or x10723 x31554)
+:assumption (or x3228 (not x13636))
+:assumption (or (not x23053) x1391)
+:assumption (or x21082 (not x27479))
+:assumption (or (not x19697) x2621)
+:assumption (or x820 (not x29312))
+:assumption (or x31661 x9296)
+:assumption (or (not x11803) (not x24228))
+:assumption (or (not x8005) (not x31767))
+:assumption (or (not x8909) x14586)
+:assumption (or (not x16077) (not x14839))
+:assumption (or x6352 (not x6149))
+:assumption (or x9008 (not x11070) x9849)
+:assumption (or x18501 (not x24685))
+:assumption (or x11281 x18242)
+:assumption (or x16807 (not x22354) (not x15537))
+:assumption (or (not x31892) x1521)
+:assumption (or (not x19305) (not x28534))
+:assumption (or (not x11958) (not x19371))
+:assumption (or x6229 x19786)
+:assumption (or (not x24145) x6677 (not x8966) x15632 (not x21337))
+:assumption (or x27845 (not x13640))
+:assumption (or x24260 (not x11391))
+:assumption (or x15936 x7620)
+:assumption (or x13521 (not x1393))
+:assumption (or x12341 x1866)
+:assumption (or x9466 (not x22809))
+:assumption (or x2247 x4000)
+:assumption (or (not x20855) (not x20281))
+:assumption (or (not x20163) x23197)
+:assumption (or (not x13367) x24351 x5608 x14111 (not x20733))
+:assumption (or (not x20007) x25771)
+:assumption (or (not x16489) x28703)
+:assumption (or x16130 (not x31592))
+:assumption (or x19809 (not x10603))
+:assumption (or x4299 (not x21569))
+:assumption (or (not x21389) (not x27300))
+:assumption (or x3450 (not x16116) x21074 (not x23523) x13928 (not x11637) x22244 (not x13156))
+:assumption (or x8029 x26639)
+:assumption (or (not x18015) x18493)
+:assumption (or (not x9046) (not x31646) x2943 (not x28551))
+:assumption (or x25945 x11131)
+:assumption (or x21450 (not x8670))
+:assumption (or (not x11742) (not x30439))
+:assumption (or x21374 (not x17356))
+:assumption (or (not x9008) (not x18159))
+:assumption (or (not x20550) x4905)
+:assumption (or x8406 (not x811))
+:assumption (or x1461 x25977)
+:assumption (or x15484 (not x26261))
+:assumption (or x30867 (not x15083))
+:assumption (or (not x29416) x16648)
+:assumption (or x27154 x22020)
+:assumption (or x20069 (not x7224))
+:assumption (or x14423 (not x21790) x31545 (not x15541))
+:assumption (or x1348 (not x23241))
+:assumption (or x23971 (not x12411))
+:assumption (or x25443 (not x9008) x23088)
+:assumption (or x29816 (not x6355))
+:assumption (or (not x25423) (not x15495))
+:assumption (or x10886 (not x9550))
+:assumption (or (not x16910) x16382 x18165 (not x22495))
+:assumption (or (not x4556) (not x16721))
+:assumption (or x904 x26038)
+:assumption (or x21653 (not x13909))
+:assumption (or (not x25748) (not x22005) (not x6606))
+:assumption (or x29034 (not x10107) x29945 (not x20402) x10378 (not x13236))
+:assumption (or x27094 (not x12214))
+:assumption (or x21323 (not x5789))
+:assumption (or x30771 (not x5926))
+:assumption (or (not x10307) (not x14113))
+:assumption (or (not x2024) (not x19185))
+:assumption (or (not x28468) (not x7585))
+:assumption (or (not x21041) x5528)
+:assumption (or (not x23115) x11417)
+:assumption (or (not x9982) (not x2152))
+:assumption (or (not x30269) x9481)
+:assumption (or x23614 x6990)
+:assumption (or (not x28802) (not x21026))
+:assumption (or x14517 (not x18240))
+:assumption (or (not x1189) (not x18097))
+:assumption (or (not x362) (not x23994))
+:assumption (or x4424 (not x3100))
+:assumption (or x18940 x18600)
+:assumption (or x19693 x5545)
+:assumption (or x27714 (not x21130))
+:assumption (or x8002 (not x13956) x23244 x5696 x13760)
+:assumption (or x15572 x5944 (not x14881) (not x27276) x3921 x9110 (not x6290) (not x4865))
+:assumption (or (not x27892) (not x11375))
+:assumption (or (not x10167) x22889)
+:assumption (or (not x15903) x12283)
+:assumption (or x10587 (not x26613))
+:assumption (or x19681 x28817)
+:assumption (or (not x26595) (not x16155))
+:assumption (or x5779 x7012 x30113)
+:assumption (or (not x24837) x7612)
+:assumption (or (not x1052) (not x31131))
+:assumption (or x30 x5334)
+:assumption (or (not x16648) x31695)
+:assumption (or x21324 x13111)
+:assumption (or (not x22795) x19776)
+:assumption (or x18160 x17874)
+:assumption (or x12017 x26056 (not x16890))
+:assumption (or x19446 (not x9697))
+:assumption (or (not x26900) x18937 x4446)
+:assumption (or (not x19870) x19975)
+:assumption (or x31257 x20964)
+:assumption (or (not x1659) (not x9008))
+:assumption (or x4769 x30332)
+:assumption (or x25928 (not x10859))
+:assumption (or (not x16319) x7772)
+:assumption (or (not x17242) x31445)
+:assumption (or x22534 x17537)
+:assumption (or x7771 (not x16249))
+:assumption (or x26846 x5387 x20134 x17024 x31072 x8513 x26986 (not x25279) x16652)
+:assumption (or x23418 (not x22414))
+:assumption (or (not x26241) x9713 x30208 (not x31918))
+:assumption (or (not x1790) x30759)
+:assumption (or x16672 (not x16997))
+:assumption (or (not x10446) (not x21990))
+:assumption (or (not x12913) x244)
+:assumption (or x2863 x18543)
+:assumption (or x31398 (not x19287))
+:assumption (or (not x12580) x30928)
+:assumption (or (not x19328) x4289)
+:assumption (or x8954 x30164)
+:assumption (or x1393 (not x27145))
+:assumption (or x5840 (not x9015))
+:assumption (or x8598 (not x8369) x13698 (not x22252))
+:assumption (or (not x17568) (not x867))
+:assumption (or x8002 (not x20458) x23244 (not x22178))
+:assumption (or (not x1489) (not x22559))
+:assumption (or x16130 x19505)
+:assumption (or (not x136) (not x21019))
+:assumption (or (not x19088) x14331)
+:assumption (or x28651 x25659)
+:assumption (or x5176 x15027)
+:assumption (or (not x30616) x8413)
+:assumption (or x21413 (not x6448))
+:assumption (or (not x16028) (not x6332))
+:assumption (or (not x5730) (not x1412) (not x21246))
+:assumption (or (not x22861) x12316)
+:assumption (or (not x13956) x27257 (not x26553))
+:assumption (or x30543 (not x17247) (not x25795) (not x28648) x5967)
+:assumption (or (not x29442) (not x15132))
+:assumption (or x28364 x2562)
+:assumption (or (not x21298) x1204)
+:assumption (or x21290 x22919)
+:assumption (or (not x13657) x21653)
+:assumption (or x13314 x14455)
+:assumption (or x18468 (not x18427) x14839)
+:assumption (or x20410 x17588)
+:assumption (or x8738 (not x20461))
+:assumption (or (not x29671) (not x15033) (not x15712) x20923)
+:assumption (or (not x9008) (not x5783))
+:assumption (or (not x25865) (not x25334) x4579 (not x28773) (not x22373) (not x25750) (not x15173))
+:assumption (or (not x13956) x19047)
+:assumption (or x3088 (not x30256))
+:assumption (or x27679 (not x8479))
+:assumption (or x4076 x13083)
+:assumption (or (not x5910) x29633)
+:assumption (or x2939 x13182)
+:assumption (or x5653 (not x1242))
+:assumption (or (not x4638) (not x25415))
+:assumption (or (not x9016) x2180)
+:assumption (or x15256 (not x27692))
+:assumption (or x10725 x30090)
+:assumption (or (not x701) x6393 (not x3152) (not x27753) (not x23356) x29894 (not x9879) (not x3319))
+:assumption (or (not x14666) x21881)
+:assumption (or x19317 x16784 x17844)
+:assumption (or (not x28242) (not x7075))
+:assumption (or x6352 (not x5066))
+:assumption (or (not x3959) x30610)
+:assumption (or (not x31877) x23244)
+:assumption (or (not x17527) x16375)
+:assumption (or (not x23224) (not x22963) x30416)
+:assumption (or x22494 x15989 (not x5026) x8116 x9008 x20051)
+:assumption (or (not x19862) x1566)
+:assumption (or (not x282) x9215)
+:assumption (or x18747 (not x18097) x6673 (not x2179) (not x26462))
+:assumption (or (not x25501) x25698)
+:assumption (or (not x27615) (not x1577))
+:assumption (or (not x18936) (not x1582))
+:assumption (or (not x31317) x5528)
+:assumption (or x10918 x21599 (not x20515) (not x23043) x15788 x11522)
+:assumption (or (not x28158) x12465)
+:assumption (or x2305 (not x27795) (not x12588))
+:assumption (or (not x28994) (not x21049))
+:assumption (or x29354 x3207)
+:assumption (or (not x11640) x24848)
+:assumption (or x23093 x2566)
+:assumption (or x10779 (not x24977) (not x22020) (not x26265) (not x22103) (not x27154))
+:assumption (or x17824 x20081)
+:assumption (or x2597 x16003)
+:assumption (or x11847 x31102)
+:assumption (or x28018 (not x8916))
+:assumption (or x22197 (not x9502))
+:assumption (or x8475 (not x15959))
+:assumption (or (not x4365) (not x743))
+:assumption (or x20606 x11642)
+:assumption (or (not x2600) (not x30155))
+:assumption (or x19888 x21543 (not x23961) (not x12173))
+:assumption (or x21749 x5979)
+:assumption (or x21414 (not x20882) x9484 (not x4617) (not x21480))
+:assumption (or (not x27155) (not x10498))
+:assumption (or (not x2632) (not x9752))
+:assumption (or x9033 x27533)
+:assumption (or x16705 (not x15795))
+:assumption (or (not x12174) (not x17772))
+:assumption (or x31134 (not x16454))
+:assumption (or x25865 x25750)
+:assumption (or (not x14184) x6383)
+:assumption (or x28354 (not x15631))
+:assumption (or (not x3771) (not x15299))
+:assumption (or (not x19624) (not x4362))
+:assumption (or (not x3400) x23244)
+:assumption (or x8351 x23614)
+:assumption (or x2469 (not x8120))
+:assumption (or (not x2169) (not x15795))
+:assumption (or (not x22720) (not x23097))
+:assumption (or (not x27139) (not x404) (not x10490) (not x8286) x27577 (not x11264))
+:assumption (or x19035 (not x19837))
+:assumption (or (not x20269) (not x8632))
+:assumption (or (not x16025) x23352)
+:assumption (or x21741 x3281 x4735 x28003 (not x20594))
+:assumption (or x13873 x31467)
+:assumption (or x8671 (not x142))
+:assumption (or x29318 (not x25659) (not x8541) x31152 x531 x6050 (not x6560) (not x12636))
+:assumption (or x31893 x24473)
+:assumption (or x14597 x31154)
+:assumption (or x1062 x6111)
+:assumption (or x8766 (not x9644))
+:assumption (or x20325 x21703)
+:assumption (or x7125 x31036)
+:assumption (or (not x29070) x23203)
+:assumption (or (not x1261) x25285)
+:assumption (or x2259 (not x1552) x4098)
+:assumption (or x21871 x17226)
+:assumption (or (not x12997) (not x8002))
+:assumption (or (not x5189) x29312)
+:assumption (or x31807 x13205)
+:assumption (or x5058 x23937)
+:assumption (or x11731 x5102)
+:assumption (or (not x20649) (not x6297))
+:assumption (or x5197 x23426)
+:assumption (or (not x6468) (not x13958))
+:assumption (or (not x24200) x12227)
+:assumption (or (not x26116) x103)
+:assumption (or (not x26334) x22885)
+:assumption (or x26609 x7749)
+:assumption (or x22593 (not x25927))
+:assumption (or x28684 x19603)
+:assumption (or (not x18959) x18463)
+:assumption (or x26101 (not x30219))
+:assumption (or x15227 (not x4997))
+:assumption (or (not x13546) x8885)
+:assumption (or (not x17531) x24131)
+:assumption (or x29524 x21395)
+:assumption (or (not x21885) (not x18519))
+:assumption (or (not x18042) (not x24722) x19192)
+:assumption (or (not x11789) x25758)
+:assumption (or x3403 (not x6961))
+:assumption (or (not x24399) (not x12163))
+:assumption (or (not x4096) (not x13100))
+:assumption (or (not x18878) x21894)
+:assumption (or x16441 x24058)
+:assumption (or x28420 x26741 (not x21815))
+:assumption (or (not x3267) (not x20963))
+:assumption (or (not x5771) (not x7446))
+:assumption (or x15931 (not x5571) x23487 (not x22424) x15403 x21298 (not x90))
+:assumption (or (not x15833) x19804)
+:assumption (or x1133 (not x13677))
+:assumption (or x20665 (not x14215))
+:assumption (or (not x14222) x16717 (not x6892) (not x22116) (not x13676) (not x8600) x24511 (not x27902))
+:assumption (or (not x16849) (not x4729))
+:assumption (or x19288 (not x6451) x24761 (not x26217))
+:assumption (or x11975 x3460)
+:assumption (or (not x9944) (not x24012) x3486)
+:assumption (or (not x31720) x17224)
+:assumption (or x22233 (not x23518))
+:assumption (or x12664 (not x15318))
+:assumption (or x11513 (not x24337) (not x13622))
+:assumption (or (not x21565) (not x1247))
+:assumption (or x16040 x18069)
+:assumption (or (not x19331) (not x18841))
+:assumption (or x27641 x24886)
+:assumption (or x10297 (not x31449))
+:assumption (or (not x30770) x8903 x23244 x8002)
+:assumption (or x22295 x25220)
+:assumption (or x4071 (not x27589))
+:assumption (or x12680 (not x8002))
+:assumption (or (not x15855) x13956)
+:assumption (or x5439 (not x13843))
+:assumption (or (not x16800) (not x22873))
+:assumption (or (not x4742) x30203)
+:assumption (or (not x31024) (not x12732))
+:assumption (or (not x9008) (not x5065))
+:assumption (or x12563 (not x19162))
+:assumption (or (not x25223) (not x6351))
+:assumption (or x11791 x9616)
+:assumption (or x15005 x17173)
+:assumption (or x11670 (not x21125))
+:assumption (or x5040 (not x994))
+:assumption (or (not x23843) x8658 (not x19272))
+:assumption (or (not x19581) x19851)
+:assumption (or x28572 x17696 x4559)
+:assumption (or (not x12820) x31134)
+:assumption (or (not x29338) x4147)
+:assumption (or (not x22010) (not x4720))
+:assumption (or x303 x18002)
+:assumption (or (not x14409) x28068)
+:assumption (or x4383 (not x7615))
+:assumption (or x1953 x22929 x23392 (not x21011) x19591 x6886 (not x9547) x24017 (not x5423))
+:assumption (or x4793 (not x15447))
+:assumption (or (not x4616) (not x28973) (not x8083))
+:assumption (or (not x30845) x28730)
+:assumption (or (not x14490) (not x9466))
+:assumption (or (not x8829) (not x25659))
+:assumption (or (not x2077) (not x25265))
+:assumption (or (not x26605) x10642)
+:assumption (or x2278 x11344)
+:assumption (or x8840 (not x29523))
+:assumption (or x31207 x19828)
+:assumption (or (not x14025) x30404)
+:assumption (or x16907 (not x13807))
+:assumption (or x21517 x10979)
+:assumption (or (not x23244) (not x12997))
+:assumption (or x10909 (not x27997))
+:assumption (or (not x19394) x25840)
+:assumption (or (not x2842) (not x10114))
+:assumption (or x5528 x977)
+:assumption (or x11854 (not x26789))
+:assumption (or x8282 x24895)
+:assumption (or x14564 (not x4468))
+:assumption (or x5206 (not x499) (not x5528) x7556 (not x9008))
+:assumption (or (not x29868) (not x8961))
+:assumption (or (not x7525) (not x21298))
+:assumption (or (not x4636) (not x19480))
+:assumption (or (not x12785) x17930)
+:assumption (or x10447 (not x7222))
+:assumption (or (not x26074) (not x29709) (not x27472) x4383 (not x444) (not x20241) (not x14999) x27726)
+:assumption (or x7353 x18065)
+:assumption (or (not x21432) (not x27241))
+:assumption (or (not x29673) (not x19752))
+:assumption (or (not x17732) (not x19665) x27012 x26789)
+:assumption (or (not x24396) x9493 x9008)
+:assumption (or x10904 x6494)
+:assumption (or (not x19244) (not x30736))
+:assumption (or x27946 (not x17361))
+:assumption (or (not x12741) x14610)
+:assumption (or (not x27376) x19926 x9008)
+:assumption (or (not x25674) (not x16354))
+:assumption (or x9298 x30583)
+:assumption (or (not x10110) (not x20938) (not x21298) x15164)
+:assumption (or (not x18975) x9486)
+:assumption (or (not x11970) x24555)
+:assumption (or (not x23860) (not x24038))
+:assumption (or (not x3602) (not x24495))
+:assumption (or x16510 x3988)
+:assumption (or x27125 x23743 x23913 x18882 (not x29773) (not x4510) (not x11440) x13639 x2755 (not x8509) x30632 x5421)
+:assumption (or (not x4851) (not x13422) (not x21298))
+:assumption (or (not x30139) (not x22383))
+:assumption (or x13763 x19428 x31032)
+:assumption (or x15464 (not x14433))
+:assumption (or x10326 x8951)
+:assumption (or (not x30722) (not x20397))
+:assumption (or x20110 x14695)
+:assumption (or x11091 (not x25193))
+:assumption (or x16645 (not x24904))
+:assumption (or (not x16912) x25339)
+:assumption (or (not x9338) x4636 x19480)
+:assumption (or x10202 x21653)
+:assumption (or x16510 (not x3435) x16421)
+:assumption (or (not x249) x27213)
+:assumption (or x8397 (not x30816))
+:assumption (or x19309 x14015)
+:assumption (or (not x23019) x10347)
+:assumption (or (not x12480) x13818)
+:assumption (or x12195 x18332)
+:assumption (or (not x1609) (not x23801))
+:assumption (or (not x1052) (not x4807))
+:assumption (or (not x28148) (not x21447))
+:assumption (or (not x24143) (not x19499))
+:assumption (or (not x16534) x9242)
+:assumption (or (not x18751) x27388)
+:assumption (or (not x14192) x23023)
+:assumption (or (not x10672) (not x27286))
+:assumption (or (not x8621) (not x24380))
+:assumption (or x11158 x31205)
+:assumption (or x2877 x5528)
+:assumption (or (not x29091) (not x21385))
+:assumption (or (not x6062) x23675)
+:assumption (or (not x16593) x27658)
+:assumption (or x21864 (not x17598))
+:assumption (or (not x8376) (not x24029))
+:assumption (or x13160 x9816)
+:assumption (or x1719 (not x26874))
+:assumption (or (not x1034) x23022)
+:assumption (or (not x17258) (not x8602))
+:assumption (or (not x23633) (not x5528) (not x25008) (not x7848) (not x9008))
+:assumption (or x10925 x21462)
+:assumption (or (not x21430) x19566 (not x12669))
+:assumption (or x28780 (not x29644))
+:assumption (or (not x649) (not x15084))
+:assumption (or (not x18069) (not x19361) x21860 (not x1495))
+:assumption (or (not x11197) (not x27485))
+:assumption (or (not x28952) x25266 x19603 (not x28731) (not x18799) x30539)
+:assumption (or (not x3644) x7962)
+:assumption (or (not x13527) x18938)
+:assumption (or x2285 x704)
+:assumption (or (not x9124) (not x17997) x28013 x30138 x14733 x17037 x27882 x5081)
+:assumption (or (not x10747) (not x8388))
+:assumption (or (not x17631) x29140)
+:assumption (or x6090 (not x5002) (not x323) x4562 (not x4275))
+:assumption (or x26692 x31202)
+:assumption (or x9122 (not x30723))
+:assumption (or x31257 (not x2498))
+:assumption (or (not x27546) x8504)
+:assumption (or (not x5116) (not x22115))
+:assumption (or (not x27477) (not x30316))
+:assumption (or (not x12162) (not x8008))
+:assumption (or x22474 (not x10855))
+:assumption (or (not x171) x25111 (not x29633))
+:assumption (or (not x20070) (not x6289))
+:assumption (or (not x12371) x23414)
+:assumption (or x3129 x31179)
+:assumption (or x4114 x23957 (not x1974) x17570)
+:assumption (or x4449 (not x3326))
+:assumption (or (not x29649) x10568)
+:assumption (or x14617 (not x12242))
+:assumption (or x26395 x6375)
+:assumption (or (not x12557) (not x8))
+:assumption (or x20590 (not x27537))
+:assumption (or (not x9008) (not x9790) (not x1048) (not x9972) (not x5528))
+:assumption (or (not x12124) x3095)
+:assumption (or x20674 (not x1841))
+:assumption (or (not x7045) (not x10771))
+:assumption (or (not x26381) (not x18767))
+:assumption (or x9008 x25718)
+:assumption (or x5043 x22073)
+:assumption (or x21910 x13741)
+:assumption (or (not x4359) x29489)
+:assumption (or (not x14111) x24475)
+:assumption (or (not x30124) (not x17521))
+:assumption (or (not x29333) x14046)
+:assumption (or x119 (not x20885) (not x11890))
+:assumption (or x20894 x13594)
+:assumption (or x13672 (not x30263))
+:assumption (or x31154 x27169)
+:assumption (or (not x22581) x13279)
+:assumption (or (not x14677) (not x10714))
+:assumption (or (not x4374) x30689)
+:assumption (or (not x5774) x23576 x10044)
+:assumption (or (not x28478) x30921)
+:assumption (or x26263 x22311)
+:assumption (or x23735 (not x7225))
+:assumption (or (not x20518) x10765)
+:assumption (or (not x21298) x17562)
+:assumption (or (not x1247) x277)
+:assumption (or (not x266) x8906)
+:assumption (or (not x19667) x22773)
+:assumption (or (not x6654) (not x29786))
+:assumption (or (not x12024) (not x9961))
+:assumption (or x18534 x2197)
+:assumption (or (not x19430) (not x4613) x31316 (not x31491) (not x24553))
+:assumption (or (not x28066) x28278)
+:assumption (or x20610 x431)
+:assumption (or x10269 (not x13956))
+:assumption (or x1947 x16003)
+:assumption (or (not x18672) (not x5354) (not x10379) (not x4850))
+:assumption (or (not x24251) x30691)
+:assumption (or (not x11417) x23115 x8696 (not x22096) x16793)
+:assumption (or x13956 x5206 (not x18256))
+:assumption (or (not x22064) (not x16263))
+:assumption (or x25029 x21068)
+:assumption (or x27239 x18684)
+:assumption (or x6834 x25659 (not x805) x20550 (not x918))
+:assumption (or (not x31873) (not x18389))
+:assumption (or x9101 x26833 (not x5434) x4422)
+:assumption (or x31751 x16510)
+:assumption (or (not x23763) x11704)
+:assumption (or (not x11765) (not x10554))
+:assumption (or (not x4824) (not x22890))
+:assumption (or x16374 (not x12011) x18518)
+:assumption (or (not x21379) (not x17801))
+:assumption (or (not x6479) (not x21709))
+:assumption (or (not x3420) x14553 (not x1841))
+:assumption (or (not x15605) (not x16374) (not x15356) (not x19144) x15971)
+:assumption (or x8787 (not x21049))
+:assumption (or x16506 x1746)
+:assumption (or x21725 (not x3353))
+:assumption (or (not x26964) (not x17302) (not x1752))
+:assumption (or (not x24613) x6357)
+:assumption (or (not x11699) x30082 x27713)
+:assumption (or (not x10536) (not x28133) x9423)
+:assumption (or (not x28973) x21326 x16185)
+:assumption (or x13956 (not x1641))
+:assumption (or x26197 (not x1749))
+:assumption (or (not x8213) (not x325))
+:assumption (or x26969 x19537)
+:assumption (or x2526 x7154)
+:assumption (or (not x23337) (not x15626))
+:assumption (or (not x6823) (not x3558))
+:assumption (or x15496 (not x24744))
+:assumption (or (not x24051) (not x12938))
+:assumption (or x28560 x13588)
+:assumption (or x10499 x23598)
+:assumption (or (not x1393) (not x4704) (not x5585))
+:assumption (or x16879 x31499 (not x5528) x18362 (not x21750) x13755)
+:assumption (or x653 (not x25613))
+:assumption (or (not x30778) x3543)
+:assumption (or x29401 x23911)
+:assumption (or x22967 x21026 (not x27898))
+:assumption (or x31432 (not x4053))
+:assumption (or (not x14522) (not x4361) x11389)
+:assumption (or (not x23441) (not x9965) (not x31281) (not x17482))
+:assumption (or x2212 x30536)
+:assumption (or (not x31821) x28925)
+:assumption (or x6329 (not x22219))
+:assumption (or x20949 x14038)
+:assumption (or x4591 (not x6496) x213)
+:assumption (or (not x16112) (not x487))
+:assumption (or (not x20675) (not x27423))
+:assumption (or (not x17324) (not x1107))
+:assumption (or x28887 (not x832))
+:assumption (or x15598 (not x8398))
+:assumption (or (not x27760) x20707)
+:assumption (or x17300 (not x12999))
+:assumption (or (not x13069) x6918)
+:assumption (or x1828 x30150)
+:assumption (or (not x19777) (not x27775))
+:assumption (or (not x5188) x5035)
+:assumption (or (not x30507) (not x21561))
+:assumption (or x13908 x22503)
+:assumption (or x29612 x28927)
+:assumption (or x5682 x3861)
+:assumption (or x3691 x7569)
+:assumption (or x30199 x31681)
+:assumption (or (not x29191) (not x3356))
+:assumption (or (not x15917) (not x26038) x29477 x19910 (not x11536))
+:assumption (or x28144 x13594)
+:assumption (or (not x21814) (not x29777))
+:assumption (or (not x28541) (not x9315))
+:assumption (or (not x30224) (not x22351))
+:assumption (or (not x12638) x21432)
+:assumption (or (not x28789) (not x31063))
+:assumption (or (not x7146) x12109)
+:assumption (or (not x28912) (not x28829))
+:assumption (or x408 (not x22239))
+:assumption (or (not x23440) x10194)
+:assumption (or (not x23279) x29396)
+:assumption (or x9702 x21322 x29419 x19007 (not x29312) x22811)
+:assumption (or (not x29247) x5886)
+:assumption (or (not x27587) (not x9982))
+:assumption (or (not x30079) x15002)
+:assumption (or (not x12697) (not x17188))
+:assumption (or x25277 (not x25262))
+:assumption (or x14483 (not x24756))
+:assumption (or x4808 (not x26011))
+:assumption (or (not x28957) (not x30138))
+:assumption (or (not x23371) (not x25695))
+:assumption (or (not x14212) (not x6524) x9008)
+:assumption (or x1313 x3049 (not x29628) (not x19262) (not x10026))
+:assumption (or (not x14770) (not x1542))
+:assumption (or (not x27817) x26766 (not x17346) x26001 x26008)
+:assumption (or (not x19436) (not x8602) (not x17333))
+:assumption (or x13423 (not x29898) x2844 x19992)
+:assumption (or (not x17915) (not x5059) x14580)
+:assumption (or (not x25008) (not x5852) x13766 (not x3755))
+:assumption (or x20087 x3417 x23626 x24756 (not x20169))
+:assumption (or (not x26897) (not x11816))
+:assumption (or (not x11741) x28771)
+:assumption (or x17382 (not x25449))
+:assumption (or (not x30435) x2029)
+:assumption (or (not x30457) x9032)
+:assumption (or (not x1900) (not x2366))
+:assumption (or x16596 x19983)
+:assumption (or x18270 (not x1324))
+:assumption (or (not x28954) (not x8454))
+:assumption (or (not x25173) x13765 (not x23503) x17967 (not x13454))
+:assumption (or (not x29528) (not x29926))
+:assumption (or x9571 x8496 (not x5465) x18386 x21004 x10170)
+:assumption (or (not x11028) (not x16731))
+:assumption (or (not x21442) (not x3845))
+:assumption (or x4038 x8843 (not x15427))
+:assumption (or (not x10432) (not x11303))
+:assumption (or x25059 x14839 x26320 x10666)
+:assumption (or (not x3856) (not x15297) x818 x19161)
+:assumption (or x10250 x4965)
+:assumption (or (not x16907) (not x14224) x5898 (not x30751))
+:assumption (or x27873 (not x12526))
+:assumption (or x28743 (not x25189))
+:assumption (or (not x21094) (not x10960))
+:assumption (or x13906 x23338)
+:assumption (or x25877 x18118)
+:assumption (or x31756 (not x31727))
+:assumption (or (not x31734) (not x18011))
+:assumption (or x29898 (not x13423))
+:assumption (or x17302 x28202)
+:assumption (or x12347 (not x21298))
+:assumption (or (not x97) (not x12953))
+:assumption (or (not x23453) x21944)
+:assumption (or (not x26418) (not x526))
+:assumption (or (not x18137) (not x12339))
+:assumption (or (not x21475) (not x23717))
+:assumption (or (not x20081) (not x18060))
+:assumption (or (not x10697) (not x4217) (not x3523))
+:assumption (or (not x14058) (not x21781))
+:assumption (or x4869 (not x3782))
+:assumption (or (not x17729) (not x31840))
+:assumption (or x23635 x20580)
+:assumption (or x1020 x3488 x26096 (not x24525) (not x9971))
+:assumption (or (not x31006) x18594)
+:assumption (or (not x29871) x17326 (not x5266))
+:assumption (or (not x27722) (not x17480))
+:assumption (or (not x725) (not x21653) x26115)
+:assumption (or x23716 (not x17560))
+:assumption (or x18291 (not x29097))
+:assumption (or (not x26104) (not x30195))
+:assumption (or x8890 (not x8532))
+:assumption (or (not x12961) (not x6909))
+:assumption (or (not x757) x23244)
+:assumption (or (not x2476) (not x4951))
+:assumption (or (not x8976) x17016)
+:assumption (or (not x13035) x21517)
+:assumption (or x16911 (not x4205) x8099 x10770)
+:assumption (or (not x14685) x21213)
+:assumption (or (not x8002) (not x31841))
+:assumption (or x23159 x28223)
+:assumption (or (not x26956) x24788)
+:assumption (or (not x10585) x28301)
+:assumption (or x7805 (not x3108))
+:assumption (or x16172 (not x13813))
+:assumption (or x281 x8539)
+:assumption (or (not x20104) (not x19594))
+:assumption (or (not x28311) x26218)
+:assumption (or (not x6971) x3218)
+:assumption (or (not x3178) x22712)
+:assumption (or x12297 (not x16392))
+:assumption (or (not x1075) x18930)
+:assumption (or (not x24107) x25736)
+:assumption (or x16850 x29742)
+:assumption (or (not x31519) (not x23332))
+:assumption (or (not x27935) (not x2408))
+:assumption (or (not x27593) (not x22867) x24471)
+:assumption (or (not x10140) x8087)
+:assumption (or (not x18464) x28207 x23244)
+:assumption (or (not x8083) (not x9531) x13576 x21051 (not x12171))
+:assumption (or x31724 x8659)
+:assumption (or (not x21633) (not x15083))
+:assumption (or x20596 x25239 (not x2583) (not x6121) (not x27442))
+:assumption (or (not x26545) (not x18984))
+:assumption (or (not x27641) (not x24342))
+:assumption (or (not x8428) x30557)
+:assumption (or (not x29882) x356)
+:assumption (or x20519 (not x1366))
+:assumption (or x14209 (not x15107))
+:assumption (or (not x10870) x1741 (not x20728))
+:assumption (or x14461 x134)
+:assumption (or x2153 x18361)
+:assumption (or x14514 x30365 (not x17140))
+:assumption (or (not x29997) x14758)
+:assumption (or x20645 (not x21996))
+:assumption (or x7758 x23307)
+:assumption (or x11775 x22733)
+:assumption (or (not x21633) x27233 x22063 x2091)
+:assumption (or x14671 x8794)
+:assumption (or (not x12073) x31393 (not x21815))
+:assumption (or (not x25291) x15034)
+:assumption (or x31008 x30982)
+:assumption (or x3832 x16331)
+:assumption (or (not x1843) x19637)
+:assumption (or (not x25732) x16457)
+:assumption (or x1386 (not x15601))
+:assumption (or (not x5412) (not x15233))
+:assumption (or x28493 (not x4248))
+:assumption (or x28437 x17592 x29793 (not x26761) x5971)
+:assumption (or x10613 (not x23244))
+:assumption (or x21139 (not x27079))
+:assumption (or x25524 x21977 x16589 (not x9236))
+:assumption (or (not x30457) x1640)
+:assumption (or (not x12856) x25649)
+:assumption (or x24122 x499)
+:assumption (or x22516 x16431)
+:assumption (or x26860 (not x30832))
+:assumption (or (not x20414) x29471)
+:assumption (or (not x19769) x6031 (not x4961) x26818 (not x22732))
+:assumption (or (not x26713) (not x16483))
+:assumption (or x22024 (not x8372))
+:assumption (or (not x30353) x25765)
+:assumption (or x18653 x11458)
+:assumption (or (not x3736) (not x8961) (not x25122) (not x5886))
+:assumption (or x20387 (not x12058) x3365)
+:assumption (or x20803 x29599)
+:assumption (or (not x11591) (not x6365))
+:assumption (or x31693 x20198)
+:assumption (or x18629 x26932 (not x31040) x29225 x28896 x2050 x25929 (not x14924))
+:assumption (or x20663 (not x7224))
+:assumption (or x21924 x21350)
+:assumption (or (not x27519) (not x4774))
+:assumption (or (not x28879) (not x16455))
+:assumption (or x4483 x21690)
+:assumption (or x24977 x22020)
+:assumption (or (not x20174) (not x13956))
+:assumption (or x19368 x9392 (not x6149) x13712)
+:assumption (or x9389 (not x5845) x4388)
+:assumption (or (not x28912) x29649 x9378 (not x30457) x13415 (not x13253))
+:assumption (or (not x24464) x29945 (not x14830) (not x3444) (not x25803))
+:assumption (or (not x28894) (not x14653))
+:assumption (or (not x8251) (not x21125))
+:assumption (or x18093 x19718)
+:assumption (or (not x20530) (not x23807))
+:assumption (or x31345 (not x10411))
+:assumption (or x25781 (not x25891))
+:assumption (or x15442 x26877)
+:assumption (or x3738 x3983)
+:assumption (or x11732 (not x30985))
+:assumption (or x11754 x6470)
+:assumption (or x6594 (not x27510))
+:assumption (or (not x26515) (not x20325))
+:assumption (or (not x996) (not x7808) x30124)
+:assumption (or (not x22374) x2522)
+:assumption (or (not x30711) x169)
+:assumption (or x9335 (not x18069))
+:assumption (or (not x29865) (not x26638))
+:assumption (or x31091 x6553)
+:assumption (or x4994 (not x23724))
+:assumption (or (not x2950) x22168)
+:assumption (or (not x25366) (not x354) x13720)
+:assumption (or (not x12638) (not x3818))
+:assumption (or (not x120) x219)
+:assumption (or (not x827) x13913 x3456 x16562 (not x9975) x31519 x28007 (not x1390))
+:assumption (or x24542 x24549)
+:assumption (or x16817 x19269)
+:assumption (or x10323 x24046)
+:assumption (or (not x15506) (not x1052))
+:assumption (or x31434 (not x13802))
+:assumption (or (not x16003) x28899 x20325)
+:assumption (or x27700 x10223)
+:assumption (or x19436 x17333)
+:assumption (or x441 x22472)
+:assumption (or x21354 x3970 x18859)
+:assumption (or (not x28715) (not x26694))
+:assumption (or (not x19178) (not x12628))
+:assumption (or (not x15887) (not x26299) (not x21815) (not x16510) (not x11281))
+:assumption (or x6307 x25669)
+:assumption (or (not x5444) x14437)
+:assumption (or (not x30363) (not x6502))
+:assumption (or (not x15994) x23180)
+:assumption (or (not x4884) (not x16374))
+:assumption (or (not x8037) x16677 x4280 x19614)
+:assumption (or (not x23965) (not x1153))
+:assumption (or (not x25897) (not x31663))
+:assumption (or x18448 x25051)
+:assumption (or x4296 (not x1044))
+:assumption (or x4721 x6943)
+:assumption (or x21693 x29312 x8679)
+:assumption (or (not x11677) x5367)
+:assumption (or (not x29801) (not x20822))
+:assumption (or x6523 x25666)
+:assumption (or (not x13986) x1365 (not x6783) (not x18501) (not x9174))
+:assumption (or x13956 x31545 (not x16362) x8002 x23244 x10335)
+:assumption (or x21299 (not x28259))
+:assumption (or (not x26200) (not x4559) (not x5043))
+:assumption (or (not x986) x31269)
+:assumption (or x25541 (not x7449))
+:assumption (or x31707 x12045)
+:assumption (or x11919 x4345)
+:assumption (or (not x19109) (not x20156))
+:assumption (or x29780 (not x12709))
+:assumption (or x3784 (not x12882) x9036 (not x23244) (not x14663) x10785)
+:assumption (or (not x23399) (not x14388))
+:assumption (or x7258 x30987)
+:assumption (or x18205 x1879)
+:assumption (or (not x22829) (not x13515))
+:assumption (or (not x9408) x5781)
+:assumption (or x7022 x9183)
+:assumption (or x28639 x11885)
+:assumption (or x11896 (not x28242) (not x10874) x4713)
+:assumption (or x14983 x5019)
+:assumption (or (not x9958) (not x28541))
+:assumption (or x13213 x26036)
+:assumption (or x22105 x28697)
+:assumption (or (not x7835) x17067)
+:assumption (or (not x5723) x30104)
+:assumption (or (not x6594) x3681)
+:assumption (or (not x22852) x17308 (not x30338))
+:assumption (or x21838 (not x10274))
+:assumption (or x12129 (not x30190) (not x16183) (not x27729) x8089)
+:assumption (or x14881 x31535)
+:assumption (or x16342 (not x31621))
+:assumption (or x10216 (not x8443))
+:assumption (or x17708 (not x26670))
+:assumption (or (not x7532) x7051)
+:assumption (or x13956 (not x6565))
+:assumption (or (not x30994) (not x26698))
+:assumption (or x19549 x11601 (not x22161))
+:assumption (or (not x18567) (not x13212))
+:assumption (or (not x288) x18040 x25494 (not x2976) x20353 (not x23969))
+:assumption (or (not x31438) (not x14925))
+:assumption (or x16510 x7781)
+:assumption (or x3095 x28810)
+:assumption (or (not x29498) x19422)
+:assumption (or x21121 x12611)
+:assumption (or (not x19667) (not x22132))
+:assumption (or x29592 x9695)
+:assumption (or (not x4953) (not x3961))
+:assumption (or x25601 (not x19724))
+:assumption (or (not x29924) x2101)
+:assumption (or (not x17787) (not x13451))
+:assumption (or x17395 (not x30773))
+:assumption (or (not x10673) (not x19675))
+:assumption (or (not x17237) (not x20042))
+:assumption (or (not x22711) (not x3861))
+:assumption (or x28444 x11298 x18985 (not x24558) (not x28120))
+:assumption (or x18533 (not x31680))
+:assumption (or x31904 x11951)
+:assumption (or (not x16229) x6796 x18000 x2988)
+:assumption (or (not x26344) (not x5089))
+:assumption (or (not x24373) (not x30783))
+:assumption (or x25634 (not x18508) (not x20953) x12335)
+:assumption (or (not x32) (not x24063))
+:assumption (or x16510 (not x10173))
+:assumption (or (not x17575) (not x18441))
+:assumption (or x8883 (not x31624))
+:assumption (or x8601 x30095)
+:assumption (or (not x5829) x3879)
+:assumption (or x2124 x24130)
+:assumption (or (not x9400) x28253)
+:assumption (or (not x30829) x17868 (not x27181))
+:assumption (or (not x24042) x6040)
+:assumption (or x6004 x18127)
+:assumption (or x31874 x5028)
+:assumption (or x18432 x29173)
+:assumption (or (not x19710) x21831)
+:assumption (or (not x22855) (not x11273))
+:assumption (or x8940 x18431)
+:assumption (or (not x18084) (not x7303) x1449 (not x11087) x15155 (not x24689))
+:assumption (or (not x1734) x27324)
+:assumption (or x27384 (not x4219))
+:assumption (or x30362 x31127)
+:assumption (or x8162 (not x18492))
+:assumption (or (not x24432) (not x21949))
+:assumption (or x25188 x25659)
+:assumption (or (not x24517) x22892)
+:assumption (or x4760 (not x8779) (not x13091) (not x9365) (not x8499) x12356 (not x8532) x3772 (not x9247))
+:assumption (or (not x27146) x20482)
+:assumption (or x29859 (not x9443))
+:assumption (or (not x19870) x13018)
+:assumption (or x8586 x21610 (not x19141) x7697)
+:assumption (or x17852 (not x6960))
+:assumption (or (not x10874) x10680)
+:assumption (or x30113 x9669)
+:assumption (or x21638 x7881)
+:assumption (or (not x7414) x28866 (not x4259) x10655)
+:assumption (or x14687 x876)
+:assumption (or (not x20529) (not x29823))
+:assumption (or (not x11339) x12199)
+:assumption (or (not x19978) (not x9947))
+:assumption (or (not x131) (not x20252))
+:assumption (or x9423 x21809 x29056)
+:assumption (or (not x4058) x17923 (not x3782) x22557)
+:assumption (or (not x12331) x16928)
+:assumption (or x28540 (not x13285))
+:assumption (or x4784 x26429)
+:assumption (or (not x7218) x19460)
+:assumption (or (not x25005) (not x10139))
+:assumption (or (not x12910) x3553)
+:assumption (or (not x17930) x1951)
+:assumption (or (not x8819) (not x2338))
+:assumption (or x21491 (not x16003))
+:assumption (or (not x24672) x31114)
+:assumption (or x10738 x936)
+:assumption (or x24454 x16889)
+:assumption (or x22855 (not x27254))
+:assumption (or (not x15021) (not x485))
+:assumption (or x4449 (not x12849))
+:assumption (or x25822 (not x5518))
+:assumption (or x28841 x16792)
+:assumption (or x13457 x12940)
+:assumption (or x12550 (not x28328))
+:assumption (or x29649 x29054 x29771 x28912)
+:assumption (or (not x344) (not x30818))
+:assumption (or x3436 (not x13981))
+:assumption (or x17547 x5307)
+:assumption (or x3013 x20201)
+:assumption (or (not x644) (not x12993) x6780 (not x2106))
+:assumption (or (not x160) x29959)
+:assumption (or x20166 x10268)
+:assumption (or (not x21856) (not x21653) x13799)
+:assumption (or (not x11906) x13664 x21199 x28903)
+:assumption (or (not x20326) x14882)
+:assumption (or x27781 x22808)
+:assumption (or x26432 x7744)
+:assumption (or (not x5961) (not x27239) (not x11098) x17671 (not x18684))
+:assumption (or x8343 (not x9116))
+:assumption (or x12661 x8647)
+:assumption (or (not x30085) x30076 (not x25745))
+:assumption (or (not x11099) (not x24312))
+:assumption (or x27629 x11757)
+:assumption (or (not x19438) x11375)
+:assumption (or x17015 (not x23943))
+:assumption (or x13957 x1069)
+:assumption (or (not x425) x12224)
+:assumption (or x3968 x31568)
+:assumption (or x9979 (not x15296))
+:assumption (or x16853 (not x29715))
+:assumption (or (not x9386) x8891)
+:assumption (or x25659 x7002)
+:assumption (or x55 (not x25008) (not x638))
+:assumption (or (not x8508) x30146)
+:assumption (or x22376 (not x13992))
+:assumption (or x5725 x27597)
+:assumption (or x20097 x15139)
+:assumption (or x30592 (not x20197))
+:assumption (or (not x17503) (not x28210))
+:assumption (or (not x2640) (not x24318))
+:assumption (or (not x18487) x3325 (not x20672) (not x3955) (not x16865))
+:assumption (or (not x6971) (not x4326))
+:assumption (or x24571 x19318)
+:assumption (or (not x15289) (not x25415))
+:assumption (or (not x2632) (not x1002))
+:assumption (or (not x26025) (not x28765) (not x25046) x26161 (not x8739))
+:assumption (or x16891 (not x1040))
+:assumption (or x20160 (not x23534) x30756 (not x29546) x5098)
+:assumption (or (not x8002) x23199 (not x27156))
+:assumption (or (not x26326) x6061)
+:assumption (or (not x18527) (not x27291))
+:assumption (or x15861 x3224 (not x15675))
+:assumption (or (not x10200) x24494)
+:assumption (or (not x17077) (not x10064))
+:assumption (or x27418 (not x1848))
+:assumption (or (not x30847) (not x2912) (not x4973))
+:assumption (or (not x27197) x30760)
+:assumption (or x28525 (not x22841) x22657)
+:assumption (or x12616 x26061)
+:assumption (or x26575 (not x2207))
+:assumption (or (not x15102) (not x11965))
+:assumption (or (not x10400) x15619)
+:assumption (or (not x12209) (not x31529))
+:assumption (or x3637 x10807)
+:assumption (or x24577 (not x23835))
+:assumption (or (not x23569) x23388)
+:assumption (or (not x13824) x31513)
+:assumption (or (not x25036) x17213)
+:assumption (or (not x20934) (not x5882))
+:assumption (or x1109 (not x14132))
+:assumption (or x20610 (not x16802))
+:assumption (or x27081 x10118)
+:assumption (or (not x14268) x19006 (not x23633) x14003)
+:assumption (or (not x27857) (not x20002))
+:assumption (or (not x940) x25843)
+:assumption (or (not x5965) (not x23355))
+:assumption (or x12226 (not x2798))
+:assumption (or x12859 x22974)
+:assumption (or (not x15671) (not x1783) (not x28343))
+:assumption (or x26474 (not x4848))
+:assumption (or x15827 (not x19055))
+:assumption (or x30168 x28170)
+:assumption (or x6939 (not x142))
+:assumption (or x1526 x31724)
+:assumption (or x18191 (not x28237))
+:assumption (or (not x17177) x3132)
+:assumption (or (not x8380) (not x17297))
+:assumption (or (not x10915) x23962 x8515 (not x422) (not x14330) (not x7069))
+:assumption (or x16754 x18734)
+:assumption (or (not x25120) x20031)
+:assumption (or (not x18904) (not x9476))
+:assumption (or x13902 x20475)
+:assumption (or (not x8602) (not x13295))
+:assumption (or x5810 (not x22437))
+:assumption (or x12068 (not x19650))
+:assumption (or (not x30804) (not x5970))
+:assumption (or (not x25905) x31705)
+:assumption (or x8987 x1669)
+:assumption (or (not x3235) (not x26670) x16171)
+:assumption (or x3063 (not x14675))
+:assumption (or (not x367) x9008)
+:assumption (or (not x964) (not x18492))
+:assumption (or x30218 x7620)
+:assumption (or (not x30410) x5417)
+:assumption (or (not x21545) x9432)
+:assumption (or x31670 (not x6097))
+:assumption (or x6980 x26575)
+:assumption (or (not x26847) (not x29274))
+:assumption (or x3733 x31910)
+:assumption (or (not x14407) x14340 x154 x4887 x31048 x10254)
+:assumption (or (not x15227) (not x24049))
+:assumption (or x6562 x27152)
+:assumption (or (not x18395) x1645)
+:assumption (or x21094 x10960)
+:assumption (or (not x7770) (not x21619))
+:assumption (or (not x23855) x18117)
+:assumption (or (not x12304) x16801)
+:assumption (or (not x5130) (not x20167))
+:assumption (or x5357 x17793)
+:assumption (or x30578 (not x14692))
+:assumption (or x17351 (not x6650) x20872 x21737 x15194)
+:assumption (or (not x22659) x25560)
+:assumption (or (not x20265) (not x11571))
+:assumption (or x12188 (not x4754) (not x13481) (not x2592) x11318 x8130 (not x17316))
+:assumption (or (not x1617) x31320)
+:assumption (or (not x18036) x28636)
+:assumption (or x14690 x9106)
+:assumption (or x11857 (not x15912))
+:assumption (or (not x30906) (not x5195))
+:assumption (or x23129 (not x21297) x13622)
+:assumption (or x23465 x8954)
+:assumption (or x6734 (not x15020))
+:assumption (or x27971 x18062)
+:assumption (or x17681 (not x16162))
+:assumption (or (not x388) x25565)
+:assumption (or (not x6562) x10900)
+:assumption (or (not x18347) x10301)
+:assumption (or x2157 x22183)
+:assumption (or x17667 (not x5245))
+:assumption (or x28762 (not x3991))
+:assumption (or x26756 x1111)
+:assumption (or (not x26057) (not x20116))
+:assumption (or (not x7671) x5685)
+:assumption (or x30751 (not x11948))
+:assumption (or (not x28864) (not x6850))
+:assumption (or x23119 (not x8153))
+:assumption (or (not x2673) x14446)
+:assumption (or x17912 x24632 (not x14522))
+:assumption (or x14259 (not x13956) (not x7566))
+:assumption (or (not x5095) x15220)
+:assumption (or (not x28009) (not x17043))
+:assumption (or x16691 x16718)
+:assumption (or x939 x21834 (not x29266) (not x15758) x7521 x1579 (not x28825))
+:assumption (or (not x23347) (not x9681))
+:assumption (or (not x7730) x11395 x1107 x3605 (not x30735))
+:assumption (or (not x11714) (not x19016) (not x25659))
+:assumption (or x9474 x10594)
+:assumption (or x9313 x2536)
+:assumption (or (not x9917) x8946)
+:assumption (or x3444 x10107)
+:assumption (or x30656 (not x12864))
+:assumption (or (not x8558) x16706)
+:assumption (or x12311 (not x19632))
+:assumption (or x19335 x3953)
+:assumption (or (not x13355) x17849)
+:assumption (or x18683 (not x13057))
+:assumption (or (not x14839) x11951)
+:assumption (or (not x13961) x11519)
+:assumption (or x15493 x23002)
+:assumption (or (not x4512) (not x16220))
+:assumption (or x13596 (not x13304) x18343 x20361)
+:assumption (or (not x16025) x22159)
+:assumption (or (not x17883) x18859 (not x16378) x21648 (not x20875) (not x18592) x3996 (not x16708))
+:assumption (or (not x1207) x24547)
+:assumption (or x22495 (not x17900))
+:assumption (or (not x4676) x16741 (not x22007))
+:assumption (or x29709 x3263)
+:assumption (or x28457 (not x3829))
+:assumption (or (not x30329) (not x7890))
+:assumption (or x3671 (not x31758))
+:assumption (or x5678 x27958)
+:assumption (or x2216 x26490)
+:assumption (or x2709 x10088)
+:assumption (or (not x29105) x2133)
+:assumption (or x5403 x14515)
+:assumption (or (not x15427) (not x31598) (not x4312))
+:assumption (or x1393 (not x24709))
+:assumption (or x21158 x73)
+:assumption (or x5362 (not x20556))
+:assumption (or (not x30138) x8911)
+:assumption (or (not x5072) (not x10862))
+:assumption (or (not x480) x11313 (not x8948))
+:assumption (or x12773 x31786)
+:assumption (or x25217 (not x8108))
+:assumption (or x14347 x16966 (not x24853))
+:assumption (or x23040 x11917)
+:assumption (or (not x20118) x3514)
+:assumption (or x19734 x31724)
+:assumption (or (not x28208) (not x9442))
+:assumption (or (not x888) (not x8027))
+:assumption (or (not x27794) x23244 x27990)
+:assumption (or (not x4532) (not x6235) (not x25277))
+:assumption (or (not x6152) (not x3216) (not x2388) (not x25219) (not x20857))
+:assumption (or x1957 x8456)
+:assumption (or x28775 x6618)
+:assumption (or (not x29367) x9008)
+:assumption (or (not x25731) (not x8120))
+:assumption (or x29188 (not x2761))
+:assumption (or (not x9743) x4861)
+:assumption (or (not x13993) x28323)
+:assumption (or x31515 (not x31598))
+:assumption (or x20348 (not x13913))
+:assumption (or x1393 (not x31783) (not x29578))
+:assumption (or x12252 x29999)
+:assumption (or (not x14214) x7132)
+:assumption (or (not x25527) x18832)
+:assumption (or (not x1326) x19749)
+:assumption (or x9245 (not x23958))
+:assumption (or x13695 (not x11990))
+:assumption (or (not x16479) x936)
+:assumption (or x2498 (not x1707))
+:assumption (or (not x13948) (not x6461))
+:assumption (or x26960 x29154)
+:assumption (or (not x494) (not x16877))
+:assumption (or x1375 x1582)
+:assumption (or x30846 (not x19489))
+:assumption (or (not x8229) x30272)
+:assumption (or x12473 x6444)
+:assumption (or (not x2065) x14841)
+:assumption (or x3816 x29006)
+:assumption (or (not x10332) x4022)
+:assumption (or (not x3340) x5308 (not x27310) x22374 x23829 (not x18904))
+:assumption (or (not x5972) x3001)
+:assumption (or (not x20325) x27701)
+:assumption (or x13973 x5439)
+:assumption (or (not x30209) x21103)
+:assumption (or (not x23466) x27054)
+:assumption (or (not x7200) x31355 (not x18196))
+:assumption (or x16432 x7835)
+:assumption (or (not x11748) x4925)
+:assumption (or (not x22036) (not x24929))
+:assumption (or (not x480) x19249 x497)
+:assumption (or (not x21816) (not x10803) x5294 x6566)
+:assumption (or x4610 (not x9667) (not x23057) (not x13876))
+:assumption (or x20108 (not x18117))
+:assumption (or (not x16305) (not x25087))
+:assumption (or x28341 (not x1260))
+:assumption (or (not x16518) (not x9008))
+:assumption (or (not x21815) x17410 x23399 (not x16510) (not x288))
+:assumption (or x16702 (not x22306))
+:assumption (or x2652 (not x14424) (not x9531))
+:assumption (or x19992 (not x29540))
+:assumption (or (not x1537) x21479)
+:assumption (or (not x5315) x931)
+:assumption (or (not x3576) (not x18800))
+:assumption (or (not x31418) (not x2203))
+:assumption (or x1356 (not x5528))
+:assumption (or x1176 (not x14422))
+:assumption (or (not x18424) (not x18565))
+:assumption (or (not x14725) x26743)
+:assumption (or (not x211) (not x25362) x486 x29823 x9008 x24766 x3182 x31157)
+:assumption (or x15265 (not x21474))
+:assumption (or (not x7351) x28495)
+:assumption (or x8002 x29675)
+:assumption (or (not x18698) (not x19932) x5840 (not x9008) (not x5528))
+:assumption (or (not x5714) (not x9576))
+:assumption (or x29111 x22621)
+:assumption (or (not x10775) x20948)
+:assumption (or x24504 x26808)
+:assumption (or (not x11585) (not x2158))
+:assumption (or (not x30432) x5478)
+:assumption (or (not x10078) (not x16719) (not x6104) (not x13253))
+:assumption (or (not x4555) x29344)
+:assumption (or (not x19610) (not x14492))
+:assumption (or (not x13956) x12706)
+:assumption (or (not x10331) x6077)
+:assumption (or (not x1582) x6813 x1466)
+:assumption (or x8872 (not x13702))
+:assumption (or (not x8533) (not x8834))
+:assumption (or x2476 (not x1480))
+:assumption (or x30604 (not x14839))
+:assumption (or (not x2282) (not x13275))
+:assumption (or (not x20105) x23422)
+:assumption (or (not x31854) x17564)
+:assumption (or (not x28947) x11307 x18550)
+:assumption (or (not x10865) x13559)
+:assumption (or x7914 (not x31906))
+:assumption (or (not x25423) x24089)
+:assumption (or (not x12999) (not x14280))
+:assumption (or x30761 (not x480))
+:assumption (or x24183 x22930)
+:assumption (or x27459 (not x6522))
+:assumption (or x23062 x4849)
+:assumption (or (not x22063) x21633)
+:assumption (or x18371 (not x21872))
+:assumption (or x16250 x2747 (not x21298))
+:assumption (or x3752 x4641)
+:assumption (or (not x21873) (not x2115))
+:assumption (or x19662 x15986)
+:assumption (or x14387 (not x14852))
+:assumption (or x30856 x25598 (not x25355) (not x5497))
+:assumption (or x882 (not x17496))
+:assumption (or (not x24072) (not x14028))
+:assumption (or x18519 x9761)
+:assumption (or x28106 (not x26876))
+:assumption (or x31219 (not x328))
+:assumption (or x27227 (not x29316) (not x4626))
+:assumption (or (not x24219) x23278)
+:assumption (or x1102 (not x10040))
+:assumption (or x6824 (not x12152))
+:assumption (or (not x30054) x12252)
+:assumption (or x7349 (not x14242))
+:assumption (or x24155 (not x14826) x7854 x2067)
+:assumption (or x12818 (not x14206))
+:assumption (or x288 x26174)
+:assumption (or (not x7516) (not x806))
+:assumption (or (not x21088) x31425)
+:assumption (or x639 (not x1159))
+:assumption (or (not x4907) x13352)
+:assumption (or (not x14961) (not x1718))
+:assumption (or x4136 (not x18407))
+:assumption (or (not x8646) (not x13956) (not x29772) x22829)
+:assumption (or (not x11848) (not x15747))
+:assumption (or x22215 (not x6877))
+:assumption (or x4453 (not x30957))
+:assumption (or x17511 x29994 x13819 (not x18567))
+:assumption (or (not x23231) x10928 x14132)
+:assumption (or x12904 (not x16041))
+:assumption (or (not x6723) (not x22331))
+:assumption (or x11459 x12029 x8002 x20981 x5385 (not x27442))
+:assumption (or (not x27338) (not x16125))
+:assumption (or (not x24380) x27381)
+:assumption (or (not x5172) (not x23202))
+:assumption (or x18911 (not x21686))
+:assumption (or x21629 (not x10007))
+:assumption (or (not x3803) x31669)
+:assumption (or (not x31758) x23830)
+:assumption (or (not x4350) x10334 x21097 x20360 (not x16996))
+:assumption (or x11113 (not x21776))
+:assumption (or x21805 (not x1729))
+:assumption (or (not x479) x16295)
+:assumption (or (not x20087) (not x2480))
+:assumption (or x2483 x29042)
+:assumption (or (not x19491) x25182)
+:assumption (or x5278 (not x25287))
+:assumption (or (not x29857) x8602)
+:assumption (or x15360 (not x18042))
+:assumption (or x9998 (not x3782))
+:assumption (or (not x24526) (not x5381))
+:assumption (or (not x20042) x24001 x13956)
+:assumption (or (not x6243) (not x27599))
+:assumption (or x24446 (not x10073))
+:assumption (or (not x6267) x6891)
+:assumption (or (not x20795) x13355 x9515 x30645 x8002 (not x25455) x16992 (not x29154))
+:assumption (or x23198 x137)
+:assumption (or x4966 (not x14770))
+:assumption (or x11188 x27961)
+:assumption (or x17534 x14634)
+:assumption (or (not x29292) x18069)
+:assumption (or x774 x4349)
+:assumption (or x19634 x10885)
+:assumption (or (not x2777) (not x8692))
+:assumption (or (not x3672) (not x23131) (not x11335) (not x19111) (not x6691))
+:assumption (or (not x25659) (not x1112))
+:assumption (or (not x22375) (not x26809))
+:assumption (or (not x16450) (not x10643))
+:assumption (or x28874 x9781)
+:assumption (or x26071 (not x480))
+:assumption (or x4104 x23107)
+:assumption (or x15945 (not x29966))
+:assumption (or x29821 x23103 x2133)
+:assumption (or x1542 (not x26271))
+:assumption (or (not x23693) (not x28223))
+:assumption (or (not x18139) x6582 (not x23978) (not x21836) x19907 x2573)
+:assumption (or (not x24133) x22914)
+:assumption (or x21298 x29421)
+:assumption (or x10122 x16784)
+:assumption (or x20287 x3503)
+:assumption (or (not x14154) (not x2692))
+:assumption (or (not x17903) (not x521))
+:assumption (or x1054 (not x15363))
+:assumption (or (not x24452) (not x19948))
+:assumption (or x17711 x7215)
+:assumption (or (not x5012) (not x3909))
+:assumption (or x25114 x13131)
+:assumption (or (not x28261) (not x27285))
+:assumption (or (not x26653) x21775)
+:assumption (or x4996 (not x9644))
+:assumption (or (not x30404) x14025)
+:assumption (or x4139 (not x6488))
+:assumption (or x8757 x29400)
+:assumption (or x24688 x17416 x4516)
+:assumption (or x28914 x27579)
+:assumption (or (not x6911) (not x17078))
+:assumption (or (not x31739) (not x24722))
+:assumption (or (not x25923) x12992)
+:assumption (or x18534 x7560)
+:assumption (or x25996 (not x7835))
+:assumption (or (not x28282) x12122 x19310)
+:assumption (or x26835 (not x13784))
+:assumption (or x18490 x9297 x27295 x24286)
+:assumption (or x26967 (not x20544))
+:assumption (or x16522 x8220)
+:assumption (or x12517 (not x21038))
+:assumption (or x4783 x28881 x26045 (not x9562))
+:assumption (or (not x8023) (not x29771))
+:assumption (or (not x4491) x15770)
+:assumption (or (not x3299) x3850)
+:assumption (or x13465 (not x10064))
+:assumption (or x25659 (not x29004))
+:assumption (or x10337 (not x31716))
+:assumption (or (not x485) x31914)
+:assumption (or x20183 (not x28965))
+:assumption (or (not x16027) x28973)
+:assumption (or x17484 x13916)
+:assumption (or x11517 (not x31319))
+:assumption (or x5215 (not x4393))
+:assumption (or x28285 x13804)
+:assumption (or (not x21182) (not x19496))
+:assumption (or (not x22216) (not x9657))
+:assumption (or (not x28003) x6052)
+:assumption (or (not x6354) (not x12853))
+:assumption (or x26966 (not x2880))
+:assumption (or x25459 (not x21695))
+:assumption (or (not x2121) x28111)
+:assumption (or x18004 (not x29312))
+:assumption (or x20448 (not x5558))
+:assumption (or x13822 (not x5240))
+:assumption (or x22938 (not x22315))
+:assumption (or x20147 (not x27984))
+:assumption (or x25689 (not x31134) (not x801) (not x29606) x7030 x6655 x21344)
+:assumption (or (not x18613) x25705)
+:assumption (or x22211 x14900)
+:assumption (or x18859 (not x23344))
+:assumption (or x4828 x13373)
+:assumption (or (not x480) (not x9338) (not x16878))
+:assumption (or x7568 (not x3520))
+:assumption (or (not x27870) (not x22240))
+:assumption (or x12074 (not x19857))
+:assumption (or x11373 x30224)
+:assumption (or x7040 x6606)
+:assumption (or (not x12948) (not x3200))
+:assumption (or x13915 (not x19128))
+:assumption (or x19271 (not x31057))
+:assumption (or (not x18894) x21924)
+:assumption (or x12578 x10733)
+:assumption (or x17276 x23876)
+:assumption (or x28436 x29027 x9791)
+:assumption (or (not x27304) x22803)
+:assumption (or (not x30202) x24521 x31581 (not x425))
+:assumption (or x12944 (not x27934) (not x27939) x23644 (not x6345))
+:assumption (or (not x10746) x31791)
+:assumption (or x18322 x8873)
+:assumption (or (not x2089) (not x15933))
+:assumption (or (not x18911) x21686)
+:assumption (or (not x5537) (not x2720))
+:assumption (or (not x14437) (not x12687))
+:assumption (or (not x13754) (not x13815))
+:assumption (or (not x28912) x18429 (not x16985))
+:assumption (or (not x9927) (not x21046) x21815)
+:assumption (or x7900 x18447)
+:assumption (or x17174 x12945)
+:assumption (or (not x15172) (not x26584))
+:assumption (or (not x23142) (not x23306))
+:assumption (or x827 (not x18616))
+:assumption (or x19919 (not x7186))
+:assumption (or x19457 (not x2537) (not x24610) (not x11557))
+:assumption (or (not x26301) (not x10044))
+:assumption (or (not x5607) x23509)
+:assumption (or x26930 x24830)
+:assumption (or (not x25334) (not x24265) x252)
+:assumption (or x30596 (not x14927))
+:assumption (or x4475 x27911)
+:assumption (or x14377 x16330)
+:assumption (or x8346 x21033)
+:assumption (or (not x30004) x25606)
+:assumption (or (not x23667) x8064 (not x3615) x11780 x10322 x12812 (not x10523) (not x6307))
+:assumption (or (not x19063) x16063)
+:assumption (or x31382 x24747)
+:assumption (or x6740 x17392)
+:assumption (or (not x10836) (not x7575))
+:assumption (or x2657 x27923)
+:assumption (or x19893 x26992 (not x10687) (not x20325) x1441)
+:assumption (or (not x9155) (not x12596))
+:assumption (or x4752 (not x1819))
+:assumption (or (not x17587) (not x827))
+:assumption (or x28165 (not x12178))
+:assumption (or x20825 x24502)
+:assumption (or (not x10835) x23585)
+:assumption (or (not x31532) x27699)
+:assumption (or (not x27692) x8237)
+:assumption (or x27036 x5545)
+:assumption (or x29283 (not x20123))
+:assumption (or (not x6155) x142)
+:assumption (or (not x2593) x10364)
+:assumption (or x4373 (not x27517))
+:assumption (or x31457 (not x14455) (not x19058) (not x19759) (not x4640))
+:assumption (or (not x31734) x7550)
+:assumption (or x28592 (not x1729))
+:assumption (or x5781 (not x21088))
+:assumption (or (not x3047) (not x27004))
+:assumption (or x16025 x7012 (not x23236))
+:assumption (or (not x20234) (not x22516) x6951)
+:assumption (or x28379 x323)
+:assumption (or x21847 (not x30121))
+:assumption (or x25659 x4892)
+:assumption (or (not x2759) (not x5290))
+:assumption (or x1621 x3446)
+:assumption (or x29128 (not x11790))
+:assumption (or x20545 (not x10909) (not x26897))
+:assumption (or x28379 x31354)
+:assumption (or (not x1775) x8557)
+:assumption (or (not x803) (not x21945))
+:assumption (or x3339 (not x6510))
+:assumption (or x30029 x20349)
+:assumption (or x3512 x14779)
+:assumption (or x13956 (not x23046) (not x12420))
+:assumption (or x27221 x27845)
+:assumption (or x5621 (not x20502))
+:assumption (or x31875 x4394 (not x31109))
+:assumption (or (not x27633) x21078)
+:assumption (or x30553 (not x16613))
+:assumption (or (not x29035) x21435)
+:assumption (or x1393 (not x1804))
+:assumption (or x25987 (not x15969))
+:assumption (or x3150 x16203 x668)
+:assumption (or x21192 x8439)
+:assumption (or (not x9791) (not x28436))
+:assumption (or x16957 x27391)
+:assumption (or (not x19648) x31358)
+:assumption (or (not x8541) (not x21426))
+:assumption (or x27513 (not x20801) x22852 (not x594))
+:assumption (or (not x18661) x23244)
+:assumption (or x13317 x7290)
+:assumption (or (not x14063) x19230)
+:assumption (or (not x8586) x11701)
+:assumption (or (not x7200) (not x25292))
+:assumption (or x19888 (not x31567))
+:assumption (or x29067 (not x24668))
+:assumption (or x24139 (not x8078))
+:assumption (or x24927 x25913)
+:assumption (or x12199 (not x13313))
+:assumption (or x5043 x4559)
+:assumption (or x762 (not x20996) x169)
+:assumption (or x4167 (not x26730))
+:assumption (or x2608 x19157)
+:assumption (or x7663 x31076)
+:assumption (or x25497 x942)
+:assumption (or x12355 (not x19685))
+:assumption (or (not x5000) x24796)
+:assumption (or (not x6119) x186)
+:assumption (or x13413 x1265)
+:assumption (or (not x16664) (not x30801) x9477)
+:assumption (or (not x21984) x19408)
+:assumption (or (not x426) x29649)
+:assumption (or x21502 (not x15325))
+:assumption (or (not x27256) (not x8680) x17726)
+:assumption (or x10664 (not x2244))
+:assumption (or x2701 x1388)
+:assumption (or x18119 x4354)
+:assumption (or (not x16137) x29616)
+:assumption (or x12866 x21180)
+:assumption (or x485 x6994)
+:assumption (or (not x29138) x4674)
+:assumption (or x10396 x16383)
+:assumption (or (not x11559) (not x18670) x20838 x24559)
+:assumption (or x729 x4577)
+:assumption (or x26015 (not x18270) x400 x11045)
+:assumption (or (not x17599) x2836)
+:assumption (or x1946 x10528)
+:assumption (or (not x8249) x30285)
+:assumption (or x18043 (not x8953))
+:assumption (or (not x31072) (not x26986))
+:assumption (or (not x26986) (not x20134))
+:assumption (or x22711 x3861 (not x3252) x4235 (not x19058))
+:assumption (or (not x8643) (not x22309))
+:assumption (or x24264 x25013)
+:assumption (or x19235 (not x7914))
+:assumption (or x20872 (not x2176))
+:assumption (or (not x23058) x23779)
+:assumption (or x29958 x14758)
+:assumption (or x16256 (not x12503))
+:assumption (or (not x23309) (not x3909))
+:assumption (or x23580 (not x12234))
+:assumption (or x8987 (not x9569))
+:assumption (or x13705 x27658)
+:assumption (or (not x17359) (not x14989))
+:assumption (or x31541 (not x9025) x7835)
+:assumption (or (not x24186) (not x15096))
+:assumption (or x21093 x12695)
+:assumption (or x2825 x29090)
+:assumption (or x17434 (not x9723))
+:assumption (or x17683 x12374)
+:assumption (or x26979 (not x14608))
+:assumption (or (not x24930) (not x14536))
+:assumption (or x13188 x17433)
+:assumption (or x5466 x16304)
+:assumption (or (not x4136) x10429)
+:assumption (or (not x14214) (not x24422))
+:assumption (or (not x11754) x21974)
+:assumption (or x21195 x8461)
+:assumption (or (not x8174) x801)
+:assumption (or (not x8795) (not x11489))
+:assumption (or x22415 (not x554))
+:assumption (or (not x26287) x30003)
+:assumption (or x18500 x17949)
+:assumption (or x25045 x16026)
+:assumption (or x6423 (not x15190))
+:assumption (or x23123 (not x5826))
+:assumption (or (not x18567) x8002 (not x31782) (not x30662) x23244 x13956)
+:assumption (or x10764 (not x6095))
+:assumption (or (not x13860) x2177)
+:assumption (or (not x19660) x30538)
+:assumption (or x13956 x22021)
+:assumption (or x866 (not x27983))
+:assumption (or x26422 (not x8203) x21298 (not x27941))
+:assumption (or x5394 (not x30944))
+:assumption (or x29649 (not x14000))
+:assumption (or (not x2797) (not x12361))
+:assumption (or (not x22070) x3058 (not x16999))
+:assumption (or (not x11623) (not x30883))
+:assumption (or x20105 (not x14552))
+:assumption (or x2321 (not x12869))
+:assumption (or (not x11145) (not x5886))
+:assumption (or x1393 (not x26458) x22765)
+:assumption (or x23244 (not x31135) x10346)
+:assumption (or x22464 (not x28528))
+:assumption (or (not x4512) (not x14762))
+:assumption (or x4754 (not x26641))
+:assumption (or x28946 x11743)
+:assumption (or (not x6692) (not x8437))
+:assumption (or (not x8750) x5528 (not x30432))
+:assumption (or (not x10130) (not x16648) x18650)
+:assumption (or (not x17042) (not x30614))
+:assumption (or x14726 (not x808))
+:assumption (or (not x4583) x827)
+:assumption (or x21749 (not x17349))
+:assumption (or x26979 (not x25507))
+:assumption (or (not x21245) x19786)
+:assumption (or x1507 x6422 x17745 x873)
+:assumption (or x24070 (not x16090))
+:assumption (or (not x8333) (not x9008))
+:assumption (or (not x15437) (not x23920) (not x9008))
+:assumption (or x23819 x8203)
+:assumption (or x10833 (not x15016))
+:assumption (or (not x19731) (not x6601) (not x24285) x24562 x1181 x23298)
+:assumption (or x9357 x8471 x1002 x18539 x2632 (not x11506) x28307)
+:assumption (or x6747 x3120)
+:assumption (or x2255 (not x14963) x31762)
+:assumption (or x4260 (not x21308))
+:assumption (or x14603 x26282)
+:assumption (or x20087 (not x12246))
+:assumption (or x6659 (not x18107) x12588 x30561)
+:assumption (or (not x9006) (not x1265))
+:assumption (or x19585 (not x17869))
+:assumption (or (not x6206) (not x15227))
+:assumption (or (not x18345) (not x4919))
+:assumption (or x17200 x23187)
+:assumption (or x31453 x31186)
+:assumption (or x24200 (not x23013))
+:assumption (or x7583 x1057)
+:assumption (or (not x11608) (not x21369))
+:assumption (or x13228 x30208 x13014 x3431)
+:assumption (or (not x18042) x21490)
+:assumption (or (not x21987) (not x13956))
+:assumption (or (not x31800) x7226)
+:assumption (or (not x30100) x8413)
+:assumption (or x25158 x12149)
+:assumption (or (not x186) (not x6325) x20983 x23323 x205 (not x15576) x3602 (not x6794) x28687)
+:assumption (or x21298 (not x13387))
+:assumption (or x15499 (not x2917))
+:assumption (or x20757 (not x24108))
+:assumption (or x16800 (not x4659) x25223 x20765 (not x15656))
+:assumption (or x25741 (not x2836))
+:assumption (or (not x14278) x21239)
+:assumption (or x27958 x22213)
+:assumption (or x5709 x26408)
+:assumption (or (not x27119) (not x273))
+:assumption (or x4248 x28796 (not x27124) x9980 x29851 (not x21637) x9802 (not x28827))
+:assumption (or x27957 x31647 x27638)
+:assumption (or (not x15528) (not x29809))
+:assumption (or (not x12410) x24178)
+:assumption (or (not x21298) x12962 (not x8375) x24758)
+:assumption (or (not x26958) (not x23825))
+:assumption (or x30270 (not x30919))
+:assumption (or (not x8217) x18940)
+:assumption (or x23279 (not x31171) (not x1621))
+:assumption (or x9864 x6241 (not x18027) x18435 x6582)
+:assumption (or (not x24586) x13592)
+:assumption (or (not x13770) x3752)
+:assumption (or (not x21003) (not x31574))
+:assumption (or x31125 x23109)
+:assumption (or (not x8602) (not x27823) (not x16647))
+:assumption (or x31769 x26839)
+:assumption (or (not x29157) (not x13227) (not x1621))
+:assumption (or (not x16979) x18982)
+:assumption (or (not x2724) x23837)
+:assumption (or (not x4090) (not x2767))
+:assumption (or x29346 x22350)
+:assumption (or x25329 (not x21298) x24868)
+:assumption (or (not x21589) x31128)
+:assumption (or x28494 x16819)
+:assumption (or (not x6871) (not x20004))
+:assumption (or x11384 (not x8991))
+:assumption (or x5595 (not x18551))
+:assumption (or (not x30054) (not x20250))
+:assumption (or (not x2188) x9648)
+:assumption (or x26220 x18260)
+:assumption (or x14236 x19202)
+:assumption (or x10472 (not x7818) x6951 x6149)
+:assumption (or x1256 (not x24946) x827)
+:assumption (or x27351 (not x7984))
+:assumption (or x29022 (not x30485))
+:assumption (or (not x8589) (not x26851))
+:assumption (or (not x28841) (not x16792) x15799 (not x20275) (not x28547))
+:assumption (or (not x28778) x14622)
+:assumption (or x5028 (not x4672) (not x16427))
+:assumption (or x31368 x8539)
+:assumption (or x21869 (not x22735))
+:assumption (or x26648 (not x8977))
+:assumption (or x3925 (not x16510))
+:assumption (or (not x4015) x13047)
+:assumption (or x9098 (not x6424))
+:assumption (or x20325 (not x26992))
+:assumption (or x23436 x15018)
+:assumption (or x1393 x10093)
+:assumption (or x18439 (not x22558))
+:assumption (or (not x1381) (not x16747))
+:assumption (or (not x20353) x28754)
+:assumption (or x16074 x21842)
+:assumption (or (not x26283) x30613)
+:assumption (or x31369 x22677)
+:assumption (or (not x29455) x30877)
+:assumption (or (not x26353) x5946 x5329 (not x2277) (not x9722) x3724 x9173 (not x3543) x22844)
+:assumption (or x8324 (not x11184))
+:assumption (or x13290 x8263)
+:assumption (or (not x1104) x11925)
+:assumption (or x7443 x18598 x14411 (not x31392) x26983)
+:assumption (or x25980 x19030)
+:assumption (or (not x12229) x22855)
+:assumption (or x21375 (not x27288))
+:assumption (or x11119 (not x6965))
+:assumption (or (not x28425) (not x19170))
+:assumption (or (not x3334) x827 x28311)
+:assumption (or x12650 x11910)
+:assumption (or (not x17860) x1970)
+:assumption (or x20242 x13225)
+:assumption (or x3933 x30028)
+:assumption (or x22194 x18221)
+:assumption (or (not x25211) x21815)
+:assumption (or (not x4255) (not x24049))
+:assumption (or x24079 (not x21142) x12714)
+:assumption (or (not x26371) x25912)
+:assumption (or x15924 (not x12914))
+:assumption (or x25567 x1416)
+:assumption (or (not x10237) (not x13633))
+:assumption (or x2403 (not x20482) (not x23520))
+:assumption (or x25173 x74)
+:assumption (or x12206 x9274)
+:assumption (or x16353 x10152)
+:assumption (or x25911 (not x2590) x10626)
+:assumption (or (not x27498) (not x31342))
+:assumption (or x25157 x13704)
+:assumption (or x31587 (not x31488))
+:assumption (or (not x12144) (not x10500))
+:assumption (or (not x11234) (not x3928))
+:assumption (or x13204 (not x9071))
+:assumption (or (not x26797) x28379)
+:assumption (or (not x8945) x2076)
+:assumption (or (not x24184) (not x15795))
+:assumption (or (not x546) x13778)
+:assumption (or (not x23413) (not x11516))
+:assumption (or (not x585) (not x23017))
+:assumption (or x31729 x23949)
+:assumption (or x30800 x13528)
+:assumption (or (not x26665) (not x3266) (not x10187))
+:assumption (or (not x30355) x29168)
+:assumption (or (not x17016) x30781)
+:assumption (or (not x7511) x30880)
+:assumption (or (not x27182) (not x15678))
+:assumption (or x11398 (not x5482) (not x27958) (not x5678))
+:assumption (or x10767 (not x202) (not x26875))
+:assumption (or x9114 x22072)
+:assumption (or (not x4687) x13256)
+:assumption (or x26524 x25944)
+:assumption (or x1941 x17686 (not x19677))
+:assumption (or x7533 (not x18242) (not x11281))
+:assumption (or (not x13367) x24351 x5608 (not x1617) (not x9393))
+:assumption (or x19303 (not x19437))
+:assumption (or (not x26265) x17193 (not x24977) (not x27154) (not x10779) x22103)
+:assumption (or x16892 x16886)
+:assumption (or (not x27413) (not x11513))
+:assumption (or (not x1511) (not x1094))
+:assumption (or (not x18309) x16371)
+:assumption (or (not x18439) x31767 (not x14769) (not x4308))
+:assumption (or (not x24870) (not x11873) x12953 x97 x25482)
+:assumption (or x13624 (not x14055))
+:assumption (or (not x6815) (not x25949))
+:assumption (or (not x29735) x28304)
+:assumption (or x26977 x16742)
+:assumption (or (not x8749) (not x21026))
+:assumption (or x18444 x23087)
+:assumption (or (not x29415) (not x5973))
+:assumption (or (not x13006) x10237)
+:assumption (or x15932 x5185)
+:assumption (or (not x19250) x28300)
+:assumption (or x7001 (not x8795))
+:assumption (or (not x30138) x24048)
+:assumption (or x28508 (not x26629))
+:assumption (or (not x27100) x28521)
+:assumption (or x26619 x25060 (not x14887) x24321 (not x16019))
+:assumption (or x25784 (not x11533) x5314 (not x8905))
+:assumption (or (not x22421) (not x18408))
+:assumption (or (not x13576) (not x27044))
+:assumption (or (not x31894) x20546)
+:assumption (or x6497 x8702)
+:assumption (or x14972 x27969)
+:assumption (or x6974 x2620)
+:assumption (or (not x15305) (not x16745))
+:assumption (or (not x9825) x23459)
+:assumption (or x8366 x2727)
+:assumption (or (not x2797) x4822)
+:assumption (or x26432 (not x12105))
+:assumption (or x23935 (not x2355))
+:assumption (or x4146 (not x29633))
+:assumption (or x2466 x16374)
+:assumption (or x19979 x25286)
+:assumption (or x21265 x2274)
+:assumption (or x30598 (not x27597))
+:assumption (or (not x8002) (not x4571))
+:assumption (or x15568 (not x24346) x7653 (not x26017) (not x22604))
+:assumption (or x28101 x5414)
+:assumption (or (not x4696) (not x6969))
+:assumption (or x17759 x17389)
+:assumption (or x23448 x8151)
+:assumption (or (not x11552) (not x10830))
+:assumption (or (not x26810) x18881)
+:assumption (or x19395 x11724)
+:assumption (or (not x19097) (not x24335))
+:assumption (or (not x22552) x16025)
+:assumption (or (not x17225) x10268)
+:assumption (or (not x10874) (not x20280))
+:assumption (or x25810 (not x12860))
+:assumption (or (not x2922) (not x21029))
+:assumption (or x23243 (not x17155))
+:assumption (or (not x28956) x2836)
+:assumption (or (not x28328) x21646)
+:assumption (or (not x9185) x27644)
+:assumption (or (not x8595) x14951)
+:assumption (or (not x17777) x27264)
+:assumption (or x25966 (not x29312))
+:assumption (or x25659 x684 x29305 (not x20550) (not x29312))
+:assumption (or (not x30993) (not x16910) (not x8461))
+:assumption (or x20937 x19096)
+:assumption (or x31476 x13118)
+:assumption (or x16374 x6400)
+:assumption (or (not x28038) x27221)
+:assumption (or (not x31163) x27541)
+:assumption (or x13151 x1836)
+:assumption (or x26312 (not x10029))
+:assumption (or x4604 x14041 x5654 (not x21609) x27092 (not x24990) x20539 x16466 (not x29812) x29072 x15846 x31356)
+:assumption (or (not x30901) (not x29027))
+:assumption (or (not x4572) x11694)
+:assumption (or (not x16743) (not x11753))
+:assumption (or x3635 x31632)
+:assumption (or (not x9248) (not x16025))
+:assumption (or (not x10186) x30030)
+:assumption (or (not x4883) x26354)
+:assumption (or x30491 (not x8663))
+:assumption (or (not x25120) (not x14746))
+:assumption (or (not x17029) (not x7480))
+:assumption (or x18230 (not x1393) (not x15754))
+:assumption (or (not x16654) (not x25974))
+:assumption (or (not x30269) (not x12870))
+:assumption (or x13139 (not x17669))
+:assumption (or x1603 x16910)
+:assumption (or x17681 (not x9311))
+:assumption (or x9080 x15271)
+:assumption (or (not x3702) (not x25273))
+:assumption (or (not x30309) (not x25659))
+:assumption (or (not x31385) (not x12987))
+:assumption (or x18599 x3449 (not x18850) (not x10004) x16477 (not x25277))
+:assumption (or x3782 x27959 x17405)
+:assumption (or (not x11132) (not x15415))
+:assumption (or (not x13487) x3566)
+:assumption (or x10456 (not x24067) (not x4124))
+:assumption (or (not x27181) (not x29890))
+:assumption (or (not x15946) (not x2293))
+:assumption (or x26497 (not x22972))
+:assumption (or x5010 x24801)
+:assumption (or (not x21263) x18180)
+:assumption (or x26181 (not x18904))
+:assumption (or (not x65) (not x31186))
+:assumption (or x5537 (not x2912) (not x446) (not x21509) x13899 x21188 x2429)
+:assumption (or x5245 (not x16740))
+:assumption (or (not x9672) x1880)
+:assumption (or (not x6780) x15512)
+:assumption (or x15917 x12376)
+:assumption (or (not x16868) (not x4594))
+:assumption (or (not x16025) x14373 (not x15633))
+:assumption (or x8581 (not x509))
+:assumption (or (not x21633) (not x8289))
+:assumption (or (not x13126) (not x14306) (not x24058) x282 (not x9215))
+:assumption (or x9462 (not x23959))
+:assumption (or (not x4262) x22370)
+:assumption (or x14595 (not x14542))
+:assumption (or x8602 x29371 x12505)
+:assumption (or x17332 (not x5842))
+:assumption (or x30324 (not x23550))
+:assumption (or (not x7058) x14435)
+:assumption (or x31135 (not x23244))
+:assumption (or x5592 x16412)
+:assumption (or (not x11591) (not x25481))
+:assumption (or x16453 (not x31447))
+:assumption (or (not x25758) x11789)
+:assumption (or (not x26856) (not x10009))
+:assumption (or (not x11489) (not x2990))
+:assumption (or (not x12921) (not x5036))
+:assumption (or x9226 x10768)
+:assumption (or (not x5528) (not x7336))
+:assumption (or x24248 (not x21424))
+:assumption (or x14318 x28342)
+:assumption (or x2418 x26953)
+:assumption (or (not x25637) (not x8586) x7697)
+:assumption (or (not x3591) (not x5984))
+:assumption (or (not x28067) (not x14048) (not x6289))
+:assumption (or x19247 (not x2880) (not x8960))
+:assumption (or (not x18717) x5397)
+:assumption (or (not x16308) x17053)
+:assumption (or (not x24131) (not x21298) x24902)
+:assumption (or x12494 (not x14139))
+:assumption (or (not x10746) (not x27159))
+:assumption (or (not x26354) x19732 (not x6771) (not x575))
+:assumption (or (not x2642) x27378)
+:assumption (or x30786 (not x24164))
+:assumption (or (not x4348) (not x18900))
+:assumption (or (not x24943) (not x23244))
+:assumption (or x20555 (not x5069))
+:assumption (or (not x332) x23107)
+:assumption (or (not x27195) x15162 (not x18522) (not x17459) x9356)
+:assumption (or (not x18752) x27872)
+:assumption (or (not x9142) (not x24707))
+:assumption (or (not x30699) (not x28033) (not x25830))
+:assumption (or x12953 (not x2847) x15717 x23360 x1029 x5124 (not x13262) x7055)
+:assumption (or (not x27997) (not x6634))
+:assumption (or (not x18574) (not x31734))
+:assumption (or x18395 (not x1645))
+:assumption (or x28069 x2340)
+:assumption (or (not x18495) x29169)
+:assumption (or (not x31508) (not x22855) (not x25843))
+:assumption (or (not x1393) (not x27073))
+:assumption (or (not x29836) (not x19422) x29498)
+:assumption (or (not x12242) x29067)
+:assumption (or x8277 (not x13650) x28641 x22571 (not x2496) x8983 (not x17444) (not x28346))
+:assumption (or x13980 (not x15047))
+:assumption (or x24756 x729)
+:assumption (or x22296 (not x3919) x1411)
+:assumption (or x12934 (not x23563))
+:assumption (or x7273 x10606)
+:assumption (or (not x18424) x24817)
+:assumption (or x7924 x736)
+:assumption (or (not x24809) (not x26341) x23244)
+:assumption (or (not x24617) x23460 (not x4810) x2569 x22310 (not x20045) (not x25659) x1587)
+:assumption (or x23244 (not x17130) (not x4028) x8002)
+:assumption (or x28480 (not x19977))
+:assumption (or (not x5515) (not x21815))
+:assumption (or x8461 (not x15861) (not x26298))
+:assumption (or (not x26345) (not x8314))
+:assumption (or (not x11744) (not x20809))
+:assumption (or (not x12419) (not x5676))
+:assumption (or (not x2959) (not x28997))
+:assumption (or x12777 x17096)
+:assumption (or (not x21840) x7038)
+:assumption (or x18825 (not x11903))
+:assumption (or x9934 (not x5654))
+:assumption (or (not x25986) x25194)
+:assumption (or (not x7522) x8002)
+:assumption (or (not x30488) (not x28299))
+:assumption (or (not x827) x12769)
+:assumption (or x3361 (not x12613))
+:assumption (or (not x23270) (not x18256))
+:assumption (or x6534 x25434)
+:assumption (or x7822 x19680)
+:assumption (or (not x4822) x18289 (not x2300) x27867)
+:assumption (or x2791 (not x20526))
+:assumption (or x24458 (not x25484))
+:assumption (or x20954 x8954)
+:assumption (or x28912 (not x11135))
+:assumption (or (not x9826) x7757)
+:assumption (or x16189 (not x11001))
+:assumption (or (not x9531) x20408)
+:assumption (or x9335 x13417)
+:assumption (or x26428 (not x8574) (not x8727) x2724 x7910 x9676 (not x10115))
+:assumption (or (not x21302) (not x2123))
+:assumption (or (not x9532) x5064 x19594 x30239)
+:assumption (or x8819 (not x8056))
+:assumption (or x25726 x16249 (not x7771) x30138)
+:assumption (or (not x27693) x22062)
+:assumption (or (not x22302) x23661)
+:assumption (or (not x25310) x12176)
+:assumption (or (not x28233) (not x7200))
+:assumption (or (not x3215) (not x14364))
+:assumption (or (not x21965) x15405)
+:assumption (or (not x22768) (not x24486))
+:assumption (or x573 x8511)
+:assumption (or (not x17403) x20402)
+:assumption (or (not x9008) (not x28944))
+:assumption (or (not x21290) x30545)
+:assumption (or (not x22123) (not x20380))
+:assumption (or x29095 x9920)
+:assumption (or x24836 (not x8777) x31829 x30275 x21832 x14251)
+:assumption (or x31673 x4383)
+:assumption (or x14815 (not x2281))
+:assumption (or x27449 (not x8935))
+:assumption (or (not x10780) (not x14239))
+:assumption (or (not x14394) x3453)
+:assumption (or (not x18980) (not x30505))
+:assumption (or x30846 x2418)
+:assumption (or (not x3001) x202 (not x18594) x8919 x15984 (not x171))
+:assumption (or (not x10876) (not x16921))
+:assumption (or x28122 x16191)
+:assumption (or (not x7156) x17120)
+:assumption (or x7380 x7350)
+:assumption (or (not x4552) (not x12334))
+:assumption (or (not x9708) x19667 (not x20606))
+:assumption (or (not x436) x17081)
+:assumption (or x1705 (not x30432) x25659 (not x18042) x19992)
+:assumption (or x20440 (not x10164))
+:assumption (or (not x31039) (not x21298))
+:assumption (or (not x9935) (not x25229))
+:assumption (or (not x13322) (not x14042))
+:assumption (or x18453 (not x25707))
+:assumption (or x17695 (not x20304))
+:assumption (or x6157 x10909)
+:assumption (or x29649 x10914 (not x13866) (not x13253) x13415 (not x28912))
+:assumption (or (not x22495) x8015)
+:assumption (or x4250 (not x6282))
+:assumption (or (not x13699) x5267)
+:assumption (or (not x12501) (not x15861) x20119)
+:assumption (or (not x8083) x8045 x13576)
+:assumption (or x8002 (not x14850))
+:assumption (or x3936 x28792)
+:assumption (or x25270 (not x7696))
+:assumption (or (not x13561) x26132)
+:assumption (or x22360 x1463)
+:assumption (or x24728 x26998 (not x18142))
+:assumption (or x28379 (not x25341))
+:assumption (or x24008 (not x30138))
+:assumption (or (not x11384) (not x27456))
+:assumption (or x17834 x19431 x25116 x8807 x15802 x6821 x12613 (not x3151))
+:assumption (or x23998 (not x22763))
+:assumption (or x19813 x3044)
+:assumption (or (not x19933) (not x410))
+:assumption (or (not x3887) (not x23809))
+:assumption (or (not x31040) x25929 (not x14924) x18629 (not x13795) x29225 x28896 (not x14503))
+:assumption (or x21298 (not x16978))
+:assumption (or (not x13530) x17483)
+:assumption (or (not x14373) x15633)
+:assumption (or x21871 x15955)
+:assumption (or x9180 x6169)
+:assumption (or (not x29536) (not x27564))
+:assumption (or x28308 x23667)
+:assumption (or (not x24298) x21444)
+:assumption (or x2114 x216)
+:assumption (or x22109 x21330)
+:assumption (or x27480 (not x24607))
+:assumption (or (not x24662) (not x2574))
+:assumption (or (not x1913) (not x28993))
+:assumption (or x11924 (not x8002))
+:assumption (or x25659 (not x3782) x15254 x1335)
+:assumption (or x1860 (not x20325) (not x6505))
+:assumption (or x4366 x1397)
+:assumption (or x19720 (not x28206))
+:assumption (or (not x6650) (not x23476) (not x17357) x28569)
+:assumption (or x8101 x11335)
+:assumption (or (not x762) x28526)
+:assumption (or (not x18519) x12166)
+:assumption (or x9008 (not x23030))
+:assumption (or (not x31894) x24905)
+:assumption (or (not x14759) (not x22308))
+:assumption (or (not x9650) (not x15861))
+:assumption (or (not x23279) (not x29312) (not x23159) x24756)
+:assumption (or x16300 (not x7909))
+:assumption (or x16784 (not x22015))
+:assumption (or (not x2955) (not x21054) x9976 x24943)
+:assumption (or (not x29144) (not x23358) x17359)
+:assumption (or x31829 (not x28541) (not x31608) (not x25990))
+:assumption (or (not x2491) x20606)
+:assumption (or x409 (not x15651))
+:assumption (or x16730 x19557)
+:assumption (or x5734 (not x8545) (not x7945))
+:assumption (or (not x6868) x13049)
+:assumption (or x19698 x8395 (not x11249) (not x16325) (not x28036) (not x31829))
+:assumption (or x2847 (not x1797))
+:assumption (or x26539 x21073)
+:assumption (or x9732 x710)
+:assumption (or x30942 (not x24810) (not x24404) (not x4865))
+:assumption (or (not x29694) (not x29895))
+:assumption (or (not x11647) (not x20001) x1383 (not x6925) (not x27807))
+:assumption (or (not x12641) x22096)
+:assumption (or (not x25866) (not x10902))
+:assumption (or (not x1877) (not x2264))
+:assumption (or x15078 x23457)
+:assumption (or (not x30087) (not x18285))
+:assumption (or (not x24493) (not x8002))
+:assumption (or x7423 (not x9453))
+:assumption (or (not x25659) x4112)
+:assumption (or x3604 (not x617) x31392)
+:assumption (or (not x3955) (not x20672) x17187 x18378 (not x16865))
+:assumption (or x8869 (not x10538))
+:assumption (or (not x7088) x288 x23028)
+:assumption (or x8083 (not x15864))
+:assumption (or (not x2664) x15076)
+:assumption (or (not x2529) x29339)
+:assumption (or (not x31270) (not x29342))
+:assumption (or (not x762) (not x7347))
+:assumption (or x18013 (not x30037))
+:assumption (or x6351 x15119 x16652 x28465)
+:assumption (or x6190 x26160)
+:assumption (or x16378 x12158)
+:assumption (or x11237 x23807 (not x17016) x20530)
+:assumption (or (not x5136) (not x38))
+:assumption (or x4559 x16726)
+:assumption (or x22687 x29902 x1503)
+:assumption (or x12943 (not x27695) (not x1927) x31721 (not x29217))
+:assumption (or x29889 (not x27014))
+:assumption (or x30768 (not x25659))
+:assumption (or (not x21815) x2196 x16078)
+:assumption (or x8499 x9247)
+:assumption (or x31614 x18147)
+:assumption (or x29681 (not x22023))
+:assumption (or x6789 (not x16025) (not x6068))
+:assumption (or (not x18581) (not x27890))
+:assumption (or (not x25224) (not x29770))
+:assumption (or x18068 x27689)
+:assumption (or x29649 x9312)
+:assumption (or (not x22855) (not x28015))
+:assumption (or x16125 x7905)
+:assumption (or x14085 (not x10909))
+:assumption (or x8625 x10760)
+:assumption (or x7876 (not x9730))
+:assumption (or (not x4059) x20205)
+:assumption (or x14720 (not x11135))
+:assumption (or x25873 x8002)
+:assumption (or x21276 (not x20029))
+:assumption (or (not x13871) (not x16773))
+:assumption (or x24297 (not x17355))
+:assumption (or (not x338) (not x2019) (not x21432))
+:assumption (or (not x19189) (not x12760))
+:assumption (or (not x15203) (not x827) (not x8556))
+:assumption (or (not x21013) (not x18998))
+:assumption (or x10758 (not x14416))
+:assumption (or x17574 (not x10110) x11953 x29428 x9604)
+:assumption (or x13629 (not x4548))
+:assumption (or x29327 (not x23007))
+:assumption (or (not x21468) (not x16648))
+:assumption (or (not x13137) x22538)
+:assumption (or x16062 x20202)
+:assumption (or x1108 x8002 (not x9974))
+:assumption (or x3691 (not x13751))
+:assumption (or (not x27657) (not x17891))
+:assumption (or (not x18125) x18611)
+:assumption (or x20606 x4144 x30887)
+:assumption (or x29743 x5391)
+:assumption (or x8124 (not x13580))
+:assumption (or (not x1282) x25151)
+:assumption (or x14121 x4594 x16868 x24474 (not x28368) x1588)
+:assumption (or (not x13386) (not x22262))
+:assumption (or (not x349) (not x5454))
+:assumption (or (not x270) x9585)
+:assumption (or (not x22039) (not x4383))
+:assumption (or (not x16180) x4697 x25911 (not x22550))
+:assumption (or (not x22882) (not x19685))
+:assumption (or x8389 (not x6954))
+:assumption (or (not x22044) x22823)
+:assumption (or x29489 x11924)
+:assumption (or x8002 (not x9223))
+:assumption (or x10571 x2156)
+:assumption (or (not x25061) x2500 (not x14437) (not x11731) x12054 x7233 (not x5102))
+:assumption (or x25985 (not x10785))
+:assumption (or x30190 x428)
+:assumption (or x11016 (not x1642))
+:assumption (or (not x19859) (not x3234))
+:assumption (or (not x4415) (not x5381) x3701 x5384 x1893 x30533 (not x10506) x6180)
+:assumption (or x7462 x19927)
+:assumption (or x31659 x16127)
+:assumption (or (not x14513) x20192 (not x14225) (not x14250) x13669 x621 x23245)
+:assumption (or (not x9447) (not x8002) (not x20877))
+:assumption (or (not x27707) (not x24927))
+:assumption (or (not x6251) x17024)
+:assumption (or (not x2091) x21298 x1698 (not x25556) x5854 x20702)
+:assumption (or (not x29750) (not x27432))
+:assumption (or x27611 x27662)
+:assumption (or x13299 x7179)
+:assumption (or (not x19830) x27902)
+:assumption (or x28310 x22103)
+:assumption (or x26953 x8410)
+:assumption (or (not x26669) (not x24728))
+:assumption (or x17182 x7286)
+:assumption (or x30992 x16545)
+:assumption (or (not x20252) (not x7954))
+:assumption (or (not x11809) x13477 x10655 (not x27983) (not x25180))
+:assumption (or x22678 (not x8270))
+:assumption (or x4382 (not x10893))
+:assumption (or (not x21745) (not x30767))
+:assumption (or (not x14974) (not x12698) (not x30113) x852)
+:assumption (or (not x16001) (not x8002))
+:assumption (or x30444 (not x31303))
+:assumption (or x23536 (not x12016))
+:assumption (or (not x22670) (not x28568))
+:assumption (or x24282 x12908)
+:assumption (or (not x24017) (not x6392))
+:assumption (or x27510 (not x6594) (not x29959))
+:assumption (or (not x1914) (not x16976))
+:assumption (or (not x10601) (not x1712))
+:assumption (or (not x30475) (not x76))
+:assumption (or x12533 (not x15867))
+:assumption (or (not x313) (not x7130) x827)
+:assumption (or (not x17159) (not x29289))
+:assumption (or (not x5607) x16388)
+:assumption (or (not x7198) (not x23326))
+:assumption (or (not x8867) x2410)
+:assumption (or (not x514) (not x25040))
+:assumption (or x13222 (not x3293))
+:assumption (or x26590 (not x5810))
+:assumption (or (not x18392) (not x2251))
+:assumption (or (not x26927) x8014)
+:assumption (or x20967 (not x23748) x26670 (not x29418) (not x4309) (not x15948) x24339 x22240)
+:assumption (or x7305 (not x31677))
+:assumption (or (not x8893) x815 (not x29442))
+:assumption (or (not x13354) x21487)
+:assumption (or (not x16072) x8200 (not x27088) x3429)
+:assumption (or x7089 x19648)
+:assumption (or (not x8077) (not x1120) (not x7512))
+:assumption (or x20741 (not x8460))
+:assumption (or (not x19415) x30177)
+:assumption (or x12987 (not x6919) x17850 x28980 x25402)
+:assumption (or (not x31360) (not x22299))
+:assumption (or (not x31485) x18896)
+:assumption (or x14367 x17317)
+:assumption (or (not x29119) x22480)
+:assumption (or (not x31825) x13577)
+:assumption (or x22893 (not x21123))
+:assumption (or x24941 x5528)
+:assumption (or x8002 x13550 (not x25093) (not x556))
+:assumption (or x21164 x22067)
+:assumption (or (not x10956) (not x31478) x28063)
+:assumption (or (not x29088) x30496)
+:assumption (or x10409 x3365)
+:assumption (or x14911 x12910)
+:assumption (or (not x22062) x13562 x20223 x28275 x6254)
+:assumption (or x11288 x19948 (not x26280) (not x19550) x16721)
+:assumption (or (not x8002) x16300)
+:assumption (or x15417 x13525)
+:assumption (or x30133 (not x5528))
+:assumption (or x8940 (not x645))
+:assumption (or x2297 (not x25432))
+:assumption (or (not x18017) (not x20792))
+:assumption (or x27781 x21452)
+:assumption (or x31337 x19864)
+:assumption (or x964 (not x30032))
+:assumption (or (not x24160) x23324)
+:assumption (or (not x12684) x7651)
+:assumption (or (not x8601) x3530 x9340 x27617 (not x27947))
+:assumption (or x28296 (not x21454))
+:assumption (or (not x23668) x3746)
+:assumption (or x23317 (not x10672))
+:assumption (or x23862 x7854 x24155 (not x16496))
+:assumption (or (not x24579) (not x29309))
+:assumption (or x19458 x5528)
+:assumption (or (not x7807) x11472)
+:assumption (or x27941 x30666 (not x18042) x20550 x25659)
+:assumption (or (not x4534) x19992)
+:assumption (or (not x5905) (not x10848))
+:assumption (or (not x17497) (not x29949))
+:assumption (or (not x10427) (not x4324) x6244 (not x11277) x14411 x11623)
+:assumption (or (not x5773) (not x4204) x22199 (not x27027) (not x9235))
+:assumption (or x25000 (not x20607))
+:assumption (or x21815 x17040)
+:assumption (or x568 x675)
+:assumption (or x22732 x15602)
+:assumption (or x202 (not x14884) x14152)
+:assumption (or x29924 x14808)
+:assumption (or (not x28956) x3319)
+:assumption (or x6670 (not x3607))
+:assumption (or x10081 (not x9082))
+:assumption (or (not x23032) (not x17776))
+:assumption (or (not x5856) x31908 (not x21438))
+:assumption (or x17237 (not x9790) x20042 (not x13956))
+:assumption (or x30692 (not x12014))
+:assumption (or (not x29861) (not x13626) (not x5359) x26802)
+:assumption (or (not x8159) (not x5905))
+:assumption (or x16754 (not x13609))
+:assumption (or (not x23120) x15485)
+:assumption (or (not x4050) (not x31924))
+:assumption (or (not x1582) x24125)
+:assumption (or x29827 (not x19315))
+:assumption (or (not x23765) x7984)
+:assumption (or (not x28242) (not x28098))
+:assumption (or (not x2574) x7733)
+:assumption (or x25472 (not x18415))
+:assumption (or x10232 x25032)
+:assumption (or (not x22224) x26488)
+:assumption (or (not x8595) x9745)
+:assumption (or (not x4734) x20651)
+:assumption (or x23733 x8992 x27537)
+:assumption (or (not x24638) x13866)
+:assumption (or x11469 (not x4463) x8002)
+:assumption (or (not x28775) (not x26897) x30138 x9152)
+:assumption (or (not x17171) (not x5563))
+:assumption (or (not x8182) (not x587))
+:assumption (or (not x26702) (not x1785))
+:assumption (or (not x26437) x28297)
+:assumption (or (not x8002) x214 (not x1352))
+:assumption (or x9444 x24063)
+:assumption (or (not x10360) x20060)
+:assumption (or x25385 (not x16449))
+:assumption (or x12957 (not x7793))
+:assumption (or (not x4119) (not x2780) x9269)
+:assumption (or (not x28330) x17075)
+:assumption (or x5367 x23851)
+:assumption (or (not x16802) (not x22851) (not x22141))
+:assumption (or (not x3535) (not x1425))
+:assumption (or (not x24792) x8250 x3535 (not x27683) (not x2916) x29070 x19199 x24527)
+:assumption (or x30806 x11505)
+:assumption (or (not x30012) x29445)
+:assumption (or x5328 x7869)
+:assumption (or x5096 x25936)
+:assumption (or (not x2280) (not x31838) (not x2104) (not x19124) (not x14193) x22715 (not x1675) (not x9893))
+:assumption (or (not x26114) (not x13576))
+:assumption (or x28885 (not x10517))
+:assumption (or (not x10550) (not x10371))
+:assumption (or x13754 x12647 x26785 (not x25911))
+:assumption (or x30305 x5912)
+:assumption (or (not x20325) x12242 (not x4987) (not x21685))
+:assumption (or (not x28632) (not x9647) x21990 (not x745) x10446 (not x11380))
+:assumption (or (not x20637) x28050)
+:assumption (or x3150 x26811 x1349)
+:assumption (or (not x7862) (not x4551))
+:assumption (or x15592 (not x28708))
+:assumption (or x26567 x1306)
+:assumption (or x5792 (not x15621))
+:assumption (or x28163 x23312)
+:assumption (or (not x9240) x99)
+:assumption (or (not x26940) x17668)
+:assumption (or (not x21856) x30525)
+:assumption (or (not x19890) (not x12220))
+:assumption (or (not x55) x5793)
+:assumption (or (not x2266) x30731)
+:assumption (or x29716 x14284)
+:assumption (or x5528 (not x23844))
+:assumption (or (not x30165) x11754)
+:assumption (or (not x11643) (not x12002))
+:assumption (or x30307 x16706 (not x16003))
+:assumption (or (not x28772) x23904)
+:assumption (or (not x25005) x26892)
+:assumption (or (not x14844) (not x2762))
+:assumption (or x3640 x10700 x14950 x24763 x29205 (not x29442))
+:assumption (or x971 (not x24574))
+:assumption (or (not x3382) (not x22362))
+:assumption (or x24404 x4865)
+:assumption (or x2794 x15231)
+:assumption (or (not x22604) x22293)
+:assumption (or (not x25784) (not x31752))
+:assumption (or (not x25436) (not x31316))
+:assumption (or (not x4234) x7125)
+:assumption (or x26069 (not x12458))
+:assumption (or x19378 x18869)
+:assumption (or x1589 x13419 (not x219) x13805)
+:assumption (or x7843 (not x8170))
+:assumption (or (not x24535) x30861)
+:assumption (or x1393 (not x4634))
+:assumption (or x534 (not x30336))
+:assumption (or x533 x26225)
+:assumption (or x28291 (not x29442) x4331)
+:assumption (or x14021 x16513)
+:assumption (or x9440 (not x23637))
+:assumption (or (not x24163) x24083)
+:assumption (or (not x3874) x18234)
+:assumption (or x3080 x28093)
+:assumption (or (not x12087) x25092)
+:assumption (or x16458 (not x14649))
+:assumption (or x29161 x5762)
+:assumption (or (not x8482) (not x12088) x12384 (not x31231) (not x22334) (not x25594) (not x17470))
+:assumption (or (not x1391) x16424 x11939 x6642)
+:assumption (or x25063 (not x23440))
+:assumption (or x27044 x28102 x13576 (not x9531))
+:assumption (or (not x25537) (not x17463))
+:assumption (or x4630 (not x22501))
+:assumption (or (not x785) (not x3264))
+:assumption (or x1775 x4769)
+:assumption (or (not x21112) x29766)
+:assumption (or x2406 (not x17423))
+:assumption (or x20865 x17729)
+:assumption (or (not x5885) (not x27399) (not x28618) (not x15077) (not x11492) (not x30098) (not x18673))
+:assumption (or (not x14829) x24673)
+:assumption (or x29401 x28506)
+:assumption (or x18871 (not x3714))
+:assumption (or (not x22927) x29308)
+:assumption (or (not x920) (not x6821))
+:assumption (or (not x18201) x12307)
+:assumption (or x19500 (not x490))
+:assumption (or (not x16488) x21168)
+:assumption (or (not x3422) x16514)
+:assumption (or (not x21515) (not x827))
+:assumption (or x4814 (not x11943))
+:assumption (or (not x3085) (not x29359))
+:assumption (or (not x29716) (not x8247))
+:assumption (or (not x19251) x7491)
+:assumption (or x8746 (not x21690) x8588)
+:assumption (or x11701 (not x14601))
+:assumption (or (not x7377) x27807)
+:assumption (or x7888 (not x1174))
+:assumption (or (not x22808) x21813 (not x29027) (not x2441) (not x24305) (not x6742))
+:assumption (or x16272 x2592)
+:assumption (or (not x26617) x9502 (not x22197) (not x27169))
+:assumption (or (not x2789) x28898)
+:assumption (or x4219 (not x27384))
+:assumption (or (not x20140) (not x27325))
+:assumption (or x22153 x10014)
+:assumption (or (not x29328) (not x25294))
+:assumption (or (not x21414) x9531 (not x26363))
+:assumption (or (not x25591) (not x21560))
+:assumption (or x28242 x7075 x12461 x19323)
+:assumption (or (not x142) x22855 (not x8185) (not x17671))
+:assumption (or x1312 (not x11576))
+:assumption (or x13342 x6391)
+:assumption (or x30802 (not x10258) x14839 (not x28692))
+:assumption (or (not x30124) (not x28927))
+:assumption (or (not x31719) x23681)
+:assumption (or x5008 (not x15049))
+:assumption (or (not x11728) x2734)
+:assumption (or x14563 x31504)
+:assumption (or (not x12866) x17255)
+:assumption (or x6218 x21612)
+:assumption (or (not x27353) (not x675))
+:assumption (or x19492 (not x13910))
+:assumption (or x999 (not x2334) x4209 x31873)
+:assumption (or (not x26830) x5105)
+:assumption (or x20416 x6343)
+:assumption (or (not x15621) (not x9513))
+:assumption (or (not x2628) (not x13172))
+:assumption (or x23028 x6931 (not x3503))
+:assumption (or x22114 x27532)
+:assumption (or (not x24880) x11539)
+:assumption (or (not x19728) x12682)
+:assumption (or x26059 x5698 (not x25941) x6021 (not x21446))
+:assumption (or x1502 (not x8112) x26757 x26658)
+:assumption (or x10870 (not x1741))
+:assumption (or x906 (not x9236))
+:assumption (or x11853 (not x9388))
+:assumption (or (not x7444) (not x27634))
+:assumption (or (not x12519) (not x10804))
+:assumption (or (not x4392) x5322)
+:assumption (or (not x28293) (not x10085))
+:assumption (or (not x27944) (not x29358) (not x23575) (not x3370) (not x11539) x23926 (not x6361) (not x23732) x4077 x24880 (not x21501) (not x10817) (not x24535))
+:assumption (or (not x3461) x29606)
+:assumption (or (not x31265) (not x29165))
+:assumption (or x24102 (not x27829))
+:assumption (or (not x10127) (not x15711))
+:assumption (or x18989 x8357)
+:assumption (or (not x17574) (not x29428))
+:assumption (or x21790 (not x31545))
+:assumption (or (not x1890) x25321)
+:assumption (or x548 x24779)
+:assumption (or x17440 x6349)
+:assumption (or (not x7222) x21950)
+:assumption (or (not x2943) x6475)
+:assumption (or x12901 (not x5367))
+:assumption (or (not x17338) (not x391) x3867 x13195)
+:assumption (or (not x19588) (not x15621))
+:assumption (or x4557 (not x5618))
+:assumption (or x6746 (not x1185))
+:assumption (or (not x19032) (not x6010))
+:assumption (or (not x15908) (not x24682))
+:assumption (or x14236 x17894)
+:assumption (or (not x13415) x13019)
+:assumption (or (not x6699) (not x18182))
+:assumption (or x10378 x24681)
+:assumption (or x20073 x480 (not x5317) (not x15510) (not x30761))
+:assumption (or (not x3167) x3679)
+:assumption (or x10850 x30851 (not x28124) (not x6451) (not x5764))
+:assumption (or x11475 (not x16266))
+:assumption (or (not x8888) x20609)
+:assumption (or x14965 x19718)
+:assumption (or (not x12667) (not x15597))
+:assumption (or x9142 x24707)
+:assumption (or (not x24050) x20914)
+:assumption (or x19922 (not x653) (not x15016) (not x13956))
+:assumption (or (not x6911) x7155)
+:assumption (or x11500 (not x22509))
+:assumption (or x11730 x5193)
+:assumption (or x2288 x24730)
+:assumption (or (not x29649) x28875)
+:assumption (or (not x1651) (not x1564))
+:assumption (or (not x5565) (not x8726))
+:assumption (or x13277 (not x10171) (not x14221) x30256 (not x15530) (not x7126) x5371 x18219 (not x10885))
+:assumption (or (not x24003) x29973)
+:assumption (or (not x1580) (not x31576))
+:assumption (or x4445 x4111)
+:assumption (or (not x13583) x8002)
+:assumption (or (not x30736) x23539)
+:assumption (or (not x4872) x13956)
+:assumption (or (not x7608) x28047 x18657 (not x28961))
+:assumption (or x415 x12696 x20354)
+:assumption (or (not x7011) (not x17521))
+:assumption (or x2662 (not x20029))
+:assumption (or (not x13133) x964 (not x1201) x8162 x7506)
+:assumption (or x22385 (not x5028) (not x831))
+:assumption (or (not x13956) (not x1493))
+:assumption (or (not x25920) (not x26789) x27012)
+:assumption (or (not x12996) (not x24756))
+:assumption (or x946 x28605)
+:assumption (or (not x14146) x31082)
+:assumption (or (not x21653) (not x1315))
+:assumption (or (not x18958) x19967)
+:assumption (or (not x22488) x30378)
+:assumption (or x17897 (not x16123))
+:assumption (or (not x1547) (not x6381) (not x17440) x14480 x5911)
+:assumption (or (not x6959) x11480)
+:assumption (or x10054 x10501)
+:assumption (or x17495 (not x21880))
+:assumption (or (not x23244) (not x12606))
+:assumption (or x17916 x18783)
+:assumption (or x20961 (not x10540))
+:assumption (or (not x16432) (not x27613) (not x30072) x17068 x10146)
+:assumption (or (not x26068) (not x11283))
+:assumption (or (not x29436) (not x22733))
+:assumption (or x15199 x2795)
+:assumption (or x6307 (not x21965))
+:assumption (or x4789 x6969)
+:assumption (or x15370 (not x2351))
+:assumption (or x15026 (not x11225))
+:assumption (or x20614 x12627)
+:assumption (or (not x6107) (not x148))
+:assumption (or (not x15913) (not x16740))
+:assumption (or (not x17370) (not x15346))
+:assumption (or x22456 x1868 (not x30369))
+:assumption (or x21234 x21351)
+:assumption (or x13954 (not x22223))
+:assumption (or x11078 x14226)
+:assumption (or (not x19548) (not x18908))
+:assumption (or (not x12571) x6899)
+:assumption (or (not x11364) (not x9398))
+:assumption (or (not x8602) x28284)
+:assumption (or x17109 (not x20427) x30887)
+:assumption (or x30857 (not x26902))
+:assumption (or x3212 (not x27935))
+:assumption (or x5875 (not x28805) x17862 x30161 (not x26315) x758)
+:assumption (or x27756 (not x22419))
+:assumption (or x1006 x19992)
+:assumption (or x8775 (not x10907))
+:assumption (or x20550 (not x20067))
+:assumption (or x2519 (not x12987))
+:assumption (or (not x13956) x9033)
+:assumption (or x31245 x5422 (not x15795))
+:assumption (or x17740 x701 x22835 (not x20))
+:assumption (or (not x30061) (not x10003))
+:assumption (or (not x19872) x13956)
+:assumption (or (not x28995) (not x23190))
+:assumption (or (not x3964) x29423)
+:assumption (or x30407 x13764)
+:assumption (or x22024 (not x11359))
+:assumption (or (not x6915) x13576)
+:assumption (or x13244 x9531 (not x16768) x8725)
+:assumption (or x20639 (not x27610) (not x9612))
+:assumption (or x15264 x22829)
+:assumption (or x26270 (not x26027))
+:assumption (or x28779 x16127)
+:assumption (or (not x26897) x24810)
+:assumption (or (not x25815) x827 x20842)
+:assumption (or x12036 x13956)
+:assumption (or x4934 (not x20550))
+:assumption (or (not x15736) (not x9989) (not x26749) x16838 (not x30753))
+:assumption (or (not x26153) (not x11281) x17359 (not x12888))
+:assumption (or x4763 x18598)
+:assumption (or (not x28285) (not x13804))
+:assumption (or (not x25608) x31625)
+:assumption (or (not x10740) x5528)
+:assumption (or x4460 x21198)
+:assumption (or (not x17938) (not x2318))
+:assumption (or x12045 (not x23385) x24286)
+:assumption (or (not x7972) (not x15397))
+:assumption (or x14696 (not x16630) (not x21359) x15638)
+:assumption (or (not x23158) x7719)
+:assumption (or x22292 (not x30487))
+:assumption (or x26661 (not x25705))
+:assumption (or (not x12498) x6611)
+:assumption (or (not x15659) x14780 (not x31191))
+:assumption (or x11489 (not x23574))
+:assumption (or x3389 (not x31877))
+:assumption (or (not x8895) x31827)
+:assumption (or (not x7944) (not x19688))
+:assumption (or (not x8344) (not x27488))
+:assumption (or x30933 x18126)
+:assumption (or (not x6627) x28755)
+:assumption (or (not x26683) (not x25060))
+:assumption (or (not x14161) x7899)
+:assumption (or x29786 x6654 (not x27998) x27349)
+:assumption (or (not x7648) (not x19286))
+:assumption (or (not x21627) x17992)
+:assumption (or x22603 (not x8427))
+:assumption (or (not x17479) x21755)
+:assumption (or (not x6191) x21963)
+:assumption (or x5097 (not x3496))
+:assumption (or x28282 x28250)
+:assumption (or x22187 (not x16493))
+:assumption (or x10652 (not x25101))
+:assumption (or x3389 (not x15964))
+:assumption (or (not x20807) x31873)
+:assumption (or x24157 x767)
+:assumption (or (not x8060) x14326)
+:assumption (or (not x238) x30113 (not x27941))
+:assumption (or x21433 x21653 (not x11940))
+:assumption (or x31664 (not x23721) x2115 (not x27127))
+:assumption (or (not x22283) (not x12607))
+:assumption (or (not x4580) x5103)
+:assumption (or x19968 (not x18770))
+:assumption (or x9927 (not x21815))
+:assumption (or x30087 x18285)
+:assumption (or x1559 (not x21220))
+:assumption (or (not x4750) x23065)
+:assumption (or x9031 (not x29744))
+:assumption (or (not x12492) (not x7779))
+:assumption (or (not x3526) x19691 (not x31550) x4314 (not x28462))
+:assumption (or (not x13292) (not x15327))
+:assumption (or (not x1393) x10575)
+:assumption (or x24035 x10263)
+:assumption (or x23739 x12389)
+:assumption (or (not x30498) x5984 x3591 x2537)
+:assumption (or x28970 (not x3237))
+:assumption (or (not x19246) x17577)
+:assumption (or x21298 x19534)
+:assumption (or (not x20402) (not x9097))
+:assumption (or (not x6289) (not x8381) (not x22030))
+:assumption (or x6780 (not x24937) x8002 (not x26382))
+:assumption (or (not x3845) (not x29225))
+:assumption (or (not x6477) (not x25366))
+:assumption (or (not x12629) x13411)
+:assumption (or x18069 (not x10599))
+:assumption (or (not x5591) (not x25563))
+:assumption (or (not x25068) (not x9244))
+:assumption (or (not x28748) (not x18345))
+:assumption (or (not x28203) (not x14175) (not x25863) x31209 (not x11964) x30925 (not x9218))
+:assumption (or (not x23315) x2228)
+:assumption (or x1636 x30075)
+:assumption (or (not x18162) (not x14435))
+:assumption (or x21892 x11046)
+:assumption (or x3606 (not x25596))
+:assumption (or (not x566) x18500)
+:assumption (or x1470 x9807 x16025)
+:assumption (or (not x29854) x24453)
+:assumption (or x2391 x17222)
+:assumption (or (not x17996) x27230)
+:assumption (or (not x8544) x26524)
+:assumption (or x24961 x22860)
+:assumption (or (not x27682) (not x17949) x30376 x20815 (not x4905))
+:assumption (or (not x7683) x27287)
+:assumption (or x9763 x14641)
+:assumption (or (not x10656) (not x23569))
+:assumption (or x28650 x9008 x28326)
+:assumption (or (not x14939) x14839 (not x30288) (not x13976))
+:assumption (or x1443 x31492)
+:assumption (or x9699 x17175)
+:assumption (or (not x29492) x24392)
+:assumption (or x20580 x23236)
+:assumption (or (not x23478) x16539)
+:assumption (or x27778 x30124)
+:assumption (or x7282 (not x14097))
+:assumption (or x8276 x9680)
+:assumption (or (not x15887) x16772)
+:assumption (or x6149 (not x18282))
+:assumption (or x24226 (not x1020))
+:assumption (or x317 (not x1967))
+:assumption (or x25914 x9726)
+:assumption (or (not x3560) (not x23933) x16683 x10287)
+:assumption (or x18068 x23370)
+:assumption (or (not x13939) (not x25073))
+:assumption (or x19036 (not x26650))
+:assumption (or (not x25559) (not x7433))
+:assumption (or x5152 x7643)
+:assumption (or x18413 (not x20868) x5025)
+:assumption (or (not x7353) (not x8825) (not x18065))
+:assumption (or x4225 (not x11689))
+:assumption (or (not x21653) x20695)
+:assumption (or (not x1313) x29628)
+:assumption (or x28387 x8231 (not x9453))
+:assumption (or x2421 x19493)
+:assumption (or x13999 (not x11526))
+:assumption (or (not x11849) x5213)
+:assumption (or (not x21123) (not x19265))
+:assumption (or (not x22492) (not x7007))
+:assumption (or (not x29073) (not x364))
+:assumption (or (not x11253) x14076 (not x31206) (not x26517) x1755 x31485)
+:assumption (or x25366 (not x4709) (not x24947) (not x17534))
+:assumption (or (not x23399) (not x14300))
+:assumption (or (not x17835) x13956)
+:assumption (or x29715 x28197)
+:assumption (or x9731 (not x21545))
+:assumption (or (not x15091) (not x21503))
+:assumption (or x27449 x6923)
+:assumption (or x22179 (not x28139) x27352 (not x19439) x31163)
+:assumption (or (not x10662) x15852)
+:assumption (or (not x3583) (not x30878))
+:assumption (or (not x1202) x2626)
+:assumption (or (not x2074) (not x25890))
+:assumption (or x26478 x2902)
+:assumption (or (not x19265) x15225)
+:assumption (or x6171 (not x19615))
+:assumption (or x26209 x169)
+:assumption (or x703 (not x30528))
+:assumption (or (not x22531) (not x16551))
+:assumption (or (not x846) x15768)
+:assumption (or (not x2498) (not x9561))
+:assumption (or x6492 (not x12760))
+:assumption (or (not x18493) (not x30816))
+:assumption (or (not x25296) x26532 x4386 (not x29384) (not x9658) x10487)
+:assumption (or x9701 (not x20461))
+:assumption (or (not x18888) x5290)
+:assumption (or (not x16920) x2943)
+:assumption (or x8772 x17825)
+:assumption (or (not x26810) (not x22810) x16050 (not x8002))
+:assumption (or x21239 x16715)
+:assumption (or x811 x20716)
+:assumption (or x16670 x8979 x11198)
+:assumption (or (not x16097) x16535)
+:assumption (or x22876 x5528)
+:assumption (or (not x19877) (not x30125))
+:assumption (or (not x19310) (not x27067))
+:assumption (or x13059 (not x13039))
+:assumption (or x8738 x27324)
+:assumption (or (not x20067) x29305)
+:assumption (or (not x16203) (not x668))
+:assumption (or (not x14979) (not x20272))
+:assumption (or x7926 (not x28713) x4446 x21678)
+:assumption (or (not x15312) (not x9917))
+:assumption (or x21178 (not x27833))
+:assumption (or (not x20842) x4489)
+:assumption (or (not x1846) (not x13678) x18480 (not x11281) x24003)
+:assumption (or x6114 (not x13600))
+:assumption (or (not x21904) (not x9947) (not x11489) (not x4252) (not x25694) x21639)
+:assumption (or x8526 x2156 (not x10896) (not x28639) (not x15787) (not x11885))
+:assumption (or x17151 (not x16215))
+:assumption (or x28511 (not x3472))
+:assumption (or (not x6520) (not x9263))
+:assumption (or x58 (not x13329))
+:assumption (or (not x15621) (not x10899))
+:assumption (or x20964 x2915)
+:assumption (or x6797 x24952)
+:assumption (or x28257 x19773)
+:assumption (or (not x24238) x21022)
+:assumption (or (not x18853) (not x2946) (not x28274) (not x31242) (not x29324) (not x10711))
+:assumption (or x8846 x10127)
+:assumption (or x14898 (not x24364) x20162 (not x12471))
+:assumption (or (not x28500) (not x10893))
+:assumption (or (not x11251) (not x4247))
+:assumption (or (not x14280) (not x9487))
+:assumption (or x17804 x25359 x20143)
+:assumption (or (not x31085) x14185 x25240 x8734 x3394 (not x25659))
+:assumption (or x17363 x25280)
+:assumption (or (not x28976) (not x10279))
+:assumption (or (not x4632) x26207 x5025)
+:assumption (or x30935 x27314)
+:assumption (or x6349 (not x6307))
+:assumption (or x26267 x14737)
+:assumption (or (not x21813) x10262)
+:assumption (or x6977 x1613)
+:assumption (or x21488 x8002)
+:assumption (or x11798 (not x13641))
+:assumption (or x28185 x27397)
+:assumption (or x17374 (not x29138))
+:assumption (or (not x21815) x4495 x7861)
+:assumption (or x11944 x29067)
+:assumption (or (not x22498) x406)
+:assumption (or x31544 (not x26950))
+:assumption (or x8551 (not x30167))
+:assumption (or (not x10518) (not x124))
+:assumption (or (not x29783) (not x8512))
+:assumption (or x6885 (not x16017) x1063)
+:assumption (or x23512 (not x13844))
+:assumption (or (not x10561) x9287 (not x13980) (not x24712) (not x29816) (not x3107) x6355 (not x24626) (not x29774))
+:assumption (or x28773 x29239)
+:assumption (or (not x10711) x30494 x2946 (not x28274) x31242 (not x29324))
+:assumption (or (not x6910) (not x21804))
+:assumption (or (not x21097) x13556)
+:assumption (or (not x7648) (not x8935))
+:assumption (or (not x22379) x11125 x9306 x30888)
+:assumption (or (not x4624) (not x3664))
+:assumption (or (not x22339) x9509)
+:assumption (or x4386 (not x11044))
+:assumption (or x24777 (not x9292))
+:assumption (or x252 (not x10710))
+:assumption (or (not x29760) (not x16304) (not x16510) x5263 (not x9065) (not x21815) x142)
+:assumption (or (not x142) (not x2015))
+:assumption (or x27312 x23096)
+:assumption (or x25017 x8272)
+:assumption (or (not x13830) x4709)
+:assumption (or x7682 x3001)
+:assumption (or x18027 x2233)
+:assumption (or (not x8207) (not x12600))
+:assumption (or (not x730) (not x23521))
+:assumption (or (not x30479) (not x14772))
+:assumption (or (not x17719) x27738 (not x31494))
+:assumption (or x18160 (not x12603))
+:assumption (or (not x3968) (not x31568))
+:assumption (or x8299 x3137)
+:assumption (or x27850 x16353)
+:assumption (or (not x6149) (not x6951) (not x7818) x7187)
+:assumption (or (not x13883) (not x23244))
+:assumption (or (not x29649) x22718)
+:assumption (or (not x249) x14791)
+:assumption (or (not x4929) (not x13783))
+:assumption (or x12907 (not x14435) (not x21512))
+:assumption (or (not x5279) (not x28942))
+:assumption (or x11415 x10969)
+:assumption (or (not x876) (not x7945) (not x26670))
+:assumption (or x20804 x28674)
+:assumption (or x31469 (not x4931))
+:assumption (or x14294 x24779)
+:assumption (or x3992 (not x30865))
+:assumption (or x15263 x1829)
+:assumption (or x18049 (not x4999))
+:assumption (or x8311 x10459)
+:assumption (or (not x14252) x25659)
+:assumption (or (not x8731) x3729)
+:assumption (or x2014 (not x29752))
+:assumption (or (not x29938) x23542)
+:assumption (or x28194 (not x19840))
+:assumption (or (not x30248) (not x28581))
+:assumption (or (not x16410) x16910)
+:assumption (or x8192 (not x22629))
+:assumption (or (not x12418) (not x30224))
+:assumption (or x26957 (not x9232))
+:assumption (or (not x27018) x3486)
+:assumption (or x15116 x31430)
+:assumption (or (not x20606) (not x16899))
+:assumption (or (not x30368) (not x23244))
+:assumption (or (not x29027) (not x7574))
+:assumption (or (not x18023) (not x5028))
+:assumption (or (not x827) x16855)
+:assumption (or x3022 x25659 (not x30038))
+:assumption (or x25786 (not x14401))
+:assumption (or (not x24906) (not x31567))
+:assumption (or x1246 x24163)
+:assumption (or (not x12577) (not x31186))
+:assumption (or x13754 x13815)
+:assumption (or (not x10257) (not x15690))
+:assumption (or x31036 (not x15004))
+:assumption (or x22518 (not x28463))
+:assumption (or x29023 (not x13195))
+:assumption (or x13310 (not x9423))
+:assumption (or x7331 x16070)
+:assumption (or (not x5807) (not x16802) x10234 (not x24722))
+:assumption (or x13348 x4317)
+:assumption (or (not x2763) x1477)
+:assumption (or x3323 x11752)
+:assumption (or x22522 (not x23768))
+:assumption (or (not x28319) x7413)
+:assumption (or (not x8705) x26862)
+:assumption (or x19234 (not x3483))
+:assumption (or x19937 (not x18713))
+:assumption (or x11484 (not x16233) (not x10483))
+:assumption (or x22950 (not x18450))
+:assumption (or (not x29675) (not x16449))
+:assumption (or (not x29333) (not x18812))
+:assumption (or (not x3792) x21298)
+:assumption (or x21298 x17203)
+:assumption (or x25436 (not x23519))
+:assumption (or (not x16067) x24011)
+:assumption (or (not x23909) x6108)
+:assumption (or x10759 x23299)
+:assumption (or x1393 (not x14807) x731)
+:assumption (or (not x26944) x8002)
+:assumption (or x3522 x7256)
+:assumption (or (not x23244) x5395)
+:assumption (or (not x6713) (not x16652) x8513 (not x10554) (not x25279) x23118 x31072 x5387 x17024)
+:assumption (or x6287 (not x4494))
+:assumption (or x3214 (not x29817) x18179)
+:assumption (or (not x20808) (not x15172) (not x16025))
+:assumption (or (not x1793) (not x15743))
+:assumption (or x17109 (not x19370))
+:assumption (or (not x21771) x2410)
+:assumption (or x10667 (not x806))
+:assumption (or x9453 (not x8593))
+:assumption (or x31207 x16697)
+:assumption (or (not x22584) (not x23244))
+:assumption (or x13956 x29027 x18671)
+:assumption (or x29226 (not x5095))
+:assumption (or (not x11914) x25944)
+:assumption (or (not x1138) (not x23399))
+:assumption (or x20673 x16841)
+:assumption (or x31044 (not x5358))
+:assumption (or x28996 x10705)
+:assumption (or x17097 (not x14909) (not x3898) x14403 (not x11389))
+:assumption (or x23923 (not x12578))
+:assumption (or (not x482) (not x30647))
+:assumption (or (not x4026) (not x6414))
+:assumption (or x2966 x23277 x25542 x26708)
+:assumption (or (not x11699) x9439)
+:assumption (or x26457 (not x14371))
+:assumption (or x10017 x30633)
+:assumption (or (not x11380) (not x9612) (not x27724) (not x28632) (not x745) x21990)
+:assumption (or (not x11591) x873)
+:assumption (or x27660 (not x23615))
+:assumption (or (not x20801) (not x29312) (not x3409) (not x7007))
+:assumption (or x13163 (not x28496))
+:assumption (or (not x12581) x1542)
+:assumption (or (not x29234) x17075)
+:assumption (or (not x31798) x7359)
+:assumption (or (not x29905) (not x21298))
+:assumption (or (not x14839) (not x13835))
+:assumption (or (not x13602) x10863 x20419 (not x3120))
+:assumption (or (not x9512) x23231)
+:assumption (or (not x16665) (not x17889))
+:assumption (or x14908 (not x28864))
+:assumption (or x20402 x13631 (not x14641))
+:assumption (or x26130 (not x5422))
+:assumption (or x21202 x4798)
+:assumption (or (not x12711) x26638)
+:assumption (or x5602 (not x31180))
+:assumption (or (not x3309) (not x19661) x8047 (not x28912) (not x20909))
+:assumption (or (not x19677) (not x27496) (not x13507))
+:assumption (or (not x19166) (not x4655))
+:assumption (or x9100 x22814)
+:assumption (or (not x30284) (not x1710))
+:assumption (or x21975 x8444)
+:assumption (or x13215 (not x14854))
+:assumption (or (not x10338) x9423 (not x1145))
+:assumption (or (not x16802) (not x27265) (not x6736))
+:assumption (or x10439 x7695)
+:assumption (or x29791 x25011)
+:assumption (or (not x25129) (not x21298))
+:assumption (or x27591 x4289)
+:assumption (or (not x337) x20961)
+:assumption (or (not x29811) x23112 x20827)
+:assumption (or x19616 (not x7135))
+:assumption (or x4894 (not x28344))
+:assumption (or (not x19931) x15780)
+:assumption (or x31861 (not x26924))
+:assumption (or (not x27045) x26988)
+:assumption (or x5687 x22348)
+:assumption (or x17702 (not x14223))
+:assumption (or x7016 x9763)
+:assumption (or x21028 x19214)
+:assumption (or (not x31681) (not x15366) (not x11789))
+:assumption (or (not x336) x27042)
+:assumption (or x12025 (not x953))
+:assumption (or (not x28791) (not x15799))
+:assumption (or x26390 x26803)
+:assumption (or (not x30305) x3243)
+:assumption (or (not x14530) (not x25641))
+:assumption (or (not x25895) x31615)
+:assumption (or x25366 (not x28627) (not x7225))
+:assumption (or (not x29298) (not x11679) x2226 x15475 x8231)
+:assumption (or (not x27028) x26469 (not x14563))
+:assumption (or (not x23244) (not x12964))
+:assumption (or x21815 x14634)
+:assumption (or (not x22670) (not x31686))
+:assumption (or x29183 x11528)
+:assumption (or x15344 (not x1953))
+:assumption (or x9343 (not x15366))
+:assumption (or x202 (not x21555))
+:assumption (or x148 x30569 (not x17595))
+:assumption (or x7188 x9827)
+:assumption (or (not x20815) x17585)
+:assumption (or x15987 x29849)
+:assumption (or (not x10107) (not x13566))
+:assumption (or (not x23244) x11922)
+:assumption (or x29703 x23414)
+:assumption (or x12795 x30166)
+:assumption (or (not x28143) (not x2143))
+:assumption (or (not x28328) (not x18259))
+:assumption (or x26656 (not x11355) (not x28089))
+:assumption (or x5528 x24158)
+:assumption (or (not x2404) (not x19821) (not x25659))
+:assumption (or (not x28541) x23912 (not x31829) x6900)
+:assumption (or x14983 x3560)
+:assumption (or x242 x18859)
+:assumption (or x31019 x29686 (not x30407))
+:assumption (or (not x868) (not x11659))
+:assumption (or x22321 (not x10371))
+:assumption (or x16666 x24722 x21709)
+:assumption (or x12579 x18931 x19121 x19992)
+:assumption (or x15154 x17107)
+:assumption (or x30002 (not x4152) x16494 x20606)
+:assumption (or x5220 x5996)
+:assumption (or x26920 x25804)
+:assumption (or x16030 x18630)
+:assumption (or (not x16785) x17204 (not x15905) x29455 x14652)
+:assumption (or (not x18403) x7835)
+:assumption (or x21350 x11120)
+:assumption (or (not x18042) (not x24722) (not x5497) x27215)
+:assumption (or (not x15933) x5528)
+:assumption (or x23796 (not x26498))
+:assumption (or (not x8866) x8155)
+:assumption (or x6900 x28973 (not x27551))
+:assumption (or x1065 (not x827))
+:assumption (or (not x15829) (not x18629))
+:assumption (or x4871 x28538)
+:assumption (or x8961 x22640)
+:assumption (or x17704 (not x22234))
+:assumption (or x27283 (not x20568))
+:assumption (or x27695 x8525)
+:assumption (or (not x8102) x6063)
+:assumption (or x24764 (not x5893))
+:assumption (or (not x17274) x10823)
+:assumption (or (not x16185) x23282)
+:assumption (or x16117 (not x19226))
+:assumption (or x960 x18324)
+:assumption (or x11510 x28670)
+:assumption (or x6766 (not x22832))
+:assumption (or (not x30286) (not x12120))
+:assumption (or (not x7031) x30613)
+:assumption (or (not x28206) x5352)
+:assumption (or x4800 (not x7341))
+:assumption (or (not x26543) x9008)
+:assumption (or (not x12371) (not x9991))
+:assumption (or x11586 (not x26988) (not x29433) x27045 x19200)
+:assumption (or x3538 x7051)
+:assumption (or (not x13956) x19366)
+:assumption (or x23858 (not x3942) (not x26904) x19135 (not x12634))
+:assumption (or (not x14028) (not x14053))
+:assumption (or (not x5937) x15822)
+:assumption (or x29697 (not x25830))
+:assumption (or x773 x3630)
+:assumption (or (not x1508) x4526)
+:assumption (or x24903 x9192 (not x18500) (not x16121) x31140 (not x6943))
+:assumption (or (not x472) (not x4636))
+:assumption (or (not x14070) x6755)
+:assumption (or x19992 x12018 (not x5538) (not x20301))
+:assumption (or x16986 (not x20133) (not x10465))
+:assumption (or (not x8426) (not x388))
+:assumption (or x15639 (not x13956))
+:assumption (or x4170 (not x3994))
+:assumption (or x10623 (not x18694))
+:assumption (or (not x21463) (not x142) (not x29558))
+:assumption (or x28050 x29121)
+:assumption (or (not x3017) (not x16731))
+:assumption (or x9706 (not x31300))
+:assumption (or (not x5335) (not x16044))
+:assumption (or x9851 (not x19651))
+:assumption (or (not x4655) (not x17857))
+:assumption (or (not x15806) (not x11184))
+:assumption (or (not x29884) x24439)
+:assumption (or (not x20850) (not x18104))
+:assumption (or x27150 (not x1449))
+:assumption (or x30011 x16857)
+:assumption (or (not x5736) (not x16025))
+:assumption (or x12173 (not x18845))
+:assumption (or x18833 (not x5585))
+:assumption (or x8979 (not x14170))
+:assumption (or x30379 x31734)
+:assumption (or (not x6624) (not x18623))
+:assumption (or (not x19576) (not x24858))
+:assumption (or (not x30643) x29442)
+:assumption (or (not x3453) (not x12959))
+:assumption (or (not x25194) x2256)
+:assumption (or (not x7004) (not x10909) x15046 (not x26973))
+:assumption (or x27539 (not x24756))
+:assumption (or x22630 (not x8442))
+:assumption (or (not x28161) x29641)
+:assumption (or (not x19715) (not x8692))
+:assumption (or x1093 (not x18313))
+:assumption (or (not x19650) (not x2546))
+:assumption (or x24053 x7147)
+:assumption (or x25456 x5185 x18173 (not x16652) (not x31076))
+:assumption (or (not x15083) x16186)
+:assumption (or (not x11768) x20475)
+:assumption (or x22974 (not x16048))
+:assumption (or (not x31157) (not x24766))
+:assumption (or x8834 x8533)
+:assumption (or x29616 x11843)
+:assumption (or x3001 x18257 x202)
+:assumption (or (not x2462) (not x135))
+:assumption (or x17736 x11474)
+:assumption (or (not x15666) (not x3351))
+:assumption (or x14255 (not x21910))
+:assumption (or x14541 (not x6897))
+:assumption (or (not x3221) (not x13202))
+:assumption (or x5296 (not x7200))
+:assumption (or x18810 (not x20693))
+:assumption (or x964 (not x169) (not x26209))
+:assumption (or (not x30273) x26517)
+:assumption (or x8173 x3099)
+:assumption (or x9008 (not x10448))
+:assumption (or x12349 x8002 x17016 x23244 x9470)
+:assumption (or (not x8744) x30954)
+:assumption (or x19184 (not x20933))
+:assumption (or (not x18584) (not x19463))
+:assumption (or (not x29098) (not x5510))
+:assumption (or (not x18348) x20826)
+:assumption (or (not x19925) x21955 (not x29081) x2097 x442 (not x30496) (not x31255) (not x11241) (not x14292))
+:assumption (or (not x21414) x21480)
+:assumption (or (not x13090) x22258)
+:assumption (or x7774 x16510)
+:assumption (or x2873 x15700 (not x19428) x26566 x10942)
+:assumption (or (not x6254) (not x7219))
+:assumption (or x28224 x29811)
+:assumption (or (not x7286) x21701)
+:assumption (or x14269 x827)
+:assumption (or x7438 (not x28682) (not x30751))
+:assumption (or (not x5744) (not x582))
+:assumption (or x2972 (not x29355) x28073)
+:assumption (or (not x23985) x23156)
+:assumption (or x27458 (not x1781))
+:assumption (or x10986 x25659)
+:assumption (or x845 x23315)
+:assumption (or x25692 x20119)
+:assumption (or x21815 (not x5263))
+:assumption (or x15914 x31206)
+:assumption (or (not x29665) (not x30338))
+:assumption (or x23031 (not x5493))
+:assumption (or (not x8149) (not x29419))
+:assumption (or (not x9434) x18355)
+:assumption (or (not x26626) x3458)
+:assumption (or (not x1182) (not x25144))
+:assumption (or x18732 x21900)
+:assumption (or x367 x30160)
+:assumption (or (not x23225) (not x25472))
+:assumption (or (not x15795) x8953 (not x2598))
+:assumption (or (not x10778) x13178)
+:assumption (or (not x8066) x29442)
+:assumption (or (not x27907) x20645)
+:assumption (or (not x27352) x22431)
+:assumption (or x30667 (not x20035))
+:assumption (or (not x31265) x22352)
+:assumption (or x21746 x12895)
+:assumption (or (not x30167) x16623)
+:assumption (or x11692 x28997 x24756)
+:assumption (or x12184 x12287)
+:assumption (or (not x8987) (not x4589) x22498)
+:assumption (or x8534 (not x31148))
+:assumption (or x9008 x15791)
+:assumption (or x5328 x26011 x11960 (not x14207) x12077 (not x23244))
+:assumption (or (not x23764) x4847)
+:assumption (or (not x26450) x11528)
+:assumption (or x2483 x732)
+:assumption (or x17462 (not x16325))
+:assumption (or x6606 x19167)
+:assumption (or x31470 x28689)
+:assumption (or x19342 (not x6955))
+:assumption (or x7957 x17002 (not x13261))
+:assumption (or (not x5028) (not x23498))
+:assumption (or (not x27169) x26106)
+:assumption (or (not x29959) x6048)
+:assumption (or x8002 (not x12886))
+:assumption (or x3453 (not x26004))
+:assumption (or x16317 (not x13576) x20134)
+:assumption (or x18479 x11107)
+:assumption (or x30237 x10335)
+:assumption (or (not x10437) x4330)
+:assumption (or (not x11779) (not x9822))
+:assumption (or x30333 x9658)
+:assumption (or (not x15616) (not x29655))
+:assumption (or (not x9222) (not x6045))
+:assumption (or (not x14272) (not x18184))
+:assumption (or (not x17648) (not x2788))
+:assumption (or x29649 x31408)
+:assumption (or (not x2699) x11584)
+:assumption (or x1458 x21435)
+:assumption (or x17240 x18971)
+:assumption (or (not x17133) (not x17617) (not x5339) (not x26664) x31829)
+:assumption (or x1582 x16299 x26008)
+:assumption (or x15080 (not x174) x3712 x7641 x17)
+:assumption (or x28431 x16327)
+:assumption (or x14077 (not x19889) x21964 (not x16648))
+:assumption (or (not x29655) x19008)
+:assumption (or x29200 x6210)
+:assumption (or (not x20364) (not x6170))
+:assumption (or (not x6447) x18390)
+:assumption (or x27879 x25784)
+:assumption (or (not x27071) x26687)
+:assumption (or (not x6884) (not x827))
+:assumption (or x2577 x25659)
+:assumption (or (not x21026) (not x25600))
+:assumption (or x14455 (not x30249))
+:assumption (or (not x28242) x4291 x5379 x10874)
+:assumption (or (not x2691) (not x29442))
+:assumption (or (not x16395) x20588)
+:assumption (or x13724 x19101)
+:assumption (or x4944 (not x23244))
+:assumption (or x18427 x2987 x13785 x18846)
+:assumption (or x31802 x12628)
+:assumption (or x26309 x30478)
+:assumption (or (not x827) x24389 x7140)
+:assumption (or x17590 (not x5801) (not x2538) (not x20960) x4181 (not x19729) x13489 (not x11046))
+:assumption (or x14839 x17344 x5767)
+:assumption (or (not x14577) x18583)
+:assumption (or (not x30684) (not x26575))
+:assumption (or x10723 x4683 (not x1121))
+:assumption (or x9394 (not x14581))
+:assumption (or x1073 x16556)
+:assumption (or (not x9423) (not x3278))
+:assumption (or x21298 (not x7703))
+:assumption (or (not x28223) x24410)
+:assumption (or (not x2373) (not x11522))
+:assumption (or x22504 (not x11184))
+:assumption (or (not x10693) (not x30751) x6594)
+:assumption (or x24656 (not x30769))
+:assumption (or (not x16148) x2578)
+:assumption (or x16285 (not x17485) x18331 x20918 (not x6423) x28446)
+:assumption (or x12168 (not x8002))
+:assumption (or (not x5769) (not x22972))
+:assumption (or x5886 (not x25242))
+:assumption (or (not x5840) (not x15507) x13956)
+:assumption (or (not x6644) x7451)
+:assumption (or x20134 x19295 (not x188) x92 (not x11783) (not x24282) x24399)
+:assumption (or (not x22370) x10426)
+:assumption (or x15616 (not x14680))
+:assumption (or x12415 x5685)
+:assumption (or (not x5680) (not x17618))
+:assumption (or (not x24930) x15599)
+:assumption (or x13656 x5058)
+:assumption (or (not x7499) (not x5469) (not x30213))
+:assumption (or x30437 x17016 x13956)
+:assumption (or x16187 x2203)
+:assumption (or x8354 (not x22555))
+:assumption (or (not x8175) (not x6984))
+:assumption (or x11549 (not x8002))
+:assumption (or (not x25423) x13823)
+:assumption (or x13973 x22968)
+:assumption (or (not x17019) (not x24730))
+:assumption (or x19049 (not x2501))
+:assumption (or x19428 x9194)
+:assumption (or x27308 (not x102))
+:assumption (or x2370 (not x31319))
+:assumption (or x11557 (not x4864))
+:assumption (or (not x27960) (not x25395))
+:assumption (or x6243 x5487)
+:assumption (or x12552 (not x14124) (not x11494) (not x21907) x25383 (not x31222))
+:assumption (or x15253 (not x24724))
+:assumption (or (not x23493) x3732 x29868 x941 x8961)
+:assumption (or (not x23244) (not x4779))
+:assumption (or x29181 x15442)
+:assumption (or (not x8574) x6425 (not x21796))
+:assumption (or x5367 (not x2697) x9582 (not x27011))
+:assumption (or x1375 (not x8267))
+:assumption (or x5872 x6274)
+:assumption (or x24013 x25355)
+:assumption (or x14410 x7272)
+:assumption (or (not x10434) (not x24904) (not x28885))
+:assumption (or (not x20340) (not x21886))
+:assumption (or (not x13647) (not x12699))
+:assumption (or x17530 x25156)
+:assumption (or (not x19675) (not x8979))
+:assumption (or x28723 (not x16117) (not x13576))
+:assumption (or (not x26) (not x9640))
+:assumption (or (not x11066) x24708)
+:assumption (or (not x3556) (not x1811))
+:assumption (or (not x22280) x19610)
+:assumption (or x9245 x22191)
+:assumption (or (not x2132) x18772)
+:assumption (or x16861 (not x4631))
+:assumption (or x23584 x12704)
+:assumption (or (not x22658) x9473)
+:assumption (or (not x18859) x10267)
+:assumption (or (not x1028) (not x16510))
+:assumption (or (not x27530) x29617)
+:assumption (or x18687 x7234)
+:assumption (or x21663 x29011)
+:assumption (or x30217 (not x21647))
+:assumption (or x24128 x9874)
+:assumption (or (not x5095) (not x2978))
+:assumption (or (not x4398) x25083)
+:assumption (or (not x22220) (not x23639) x10794 (not x15917) x26720)
+:assumption (or x23065 (not x21670))
+:assumption (or x25316 (not x1081))
+:assumption (or (not x18239) x25590)
+:assumption (or (not x5558) x30766)
+:assumption (or x25244 (not x16510))
+:assumption (or x1253 x24891)
+:assumption (or x20961 x18511 x3437 (not x13822))
+:assumption (or (not x14721) x20754)
+:assumption (or x218 x24687 x7730)
+:assumption (or (not x23386) x25082)
+:assumption (or x19348 (not x11185) x25338 (not x17706))
+:assumption (or (not x17424) (not x5981))
+:assumption (or (not x11832) (not x12741))
+:assumption (or x10603 (not x715))
+:assumption (or (not x1052) (not x6800) x1621)
+:assumption (or (not x28608) x6771)
+:assumption (or x5839 (not x23835))
+:assumption (or x29914 x14215)
+:assumption (or x13990 x25379)
+:assumption (or x6105 (not x20790))
+:assumption (or (not x30388) (not x9894))
+:assumption (or (not x7317) (not x3616))
+:assumption (or x15394 x20877)
+:assumption (or (not x11633) x26565)
+:assumption (or (not x17353) x17089)
+:assumption (or (not x16586) (not x17247))
+:assumption (or x30127 (not x4451))
+:assumption (or (not x8290) (not x24605))
+:assumption (or x16075 (not x16595) (not x23571) x27269 (not x22595) (not x21756))
+:assumption (or (not x23656) (not x6606))
+:assumption (or (not x11560) x31229)
+:assumption (or x27081 x19616 x279 x16877 (not x19896) x10138 (not x22987) (not x24023) x12751)
+:assumption (or x1582 (not x18070) (not x2760))
+:assumption (or x20576 (not x4403) (not x7268) x8961)
+:assumption (or x21650 x24271)
+:assumption (or x13662 (not x20599))
+:assumption (or (not x20962) x5408)
+:assumption (or x9530 x7825 x4542 (not x31579) x639 x22623 (not x17633) (not x18063) x9196 x7527 (not x3986) x2789)
+:assumption (or x13454 (not x22831))
+:assumption (or (not x11247) (not x26227))
+:assumption (or (not x5786) (not x13404))
+:assumption (or (not x8002) (not x31545))
+:assumption (or (not x26675) x27278 x16802)
+:assumption (or x19694 x2100)
+:assumption (or (not x31829) x26664)
+:assumption (or x964 (not x16949) x16025)
+:assumption (or x3822 (not x31593))
+:assumption (or (not x23151) (not x25366))
+:assumption (or x28054 x16684)
+:assumption (or (not x3397) x21603)
+:assumption (or x24756 x28223 (not x19564))
+:assumption (or x17075 x14552 (not x218) x21094)
+:assumption (or (not x8251) (not x20322))
+:assumption (or x2322 (not x23259))
+:assumption (or x13739 x7983)
+:assumption (or x8181 x27645 (not x31368))
+:assumption (or (not x25851) (not x13161))
+:assumption (or x2877 x9008)
+:assumption (or x2852 x9294)
+:assumption (or (not x5028) x24898)
+:assumption (or (not x24079) x26340)
+:assumption (or (not x13690) (not x5528))
+:assumption (or (not x4976) x8493)
+:assumption (or x12206 x10970)
+:assumption (or x17720 (not x15102))
+:assumption (or (not x23203) (not x2707) (not x5058) x18055 x5970 (not x23937))
+:assumption (or x8344 x7911)
+:assumption (or x29389 x133 (not x11386) (not x18077) (not x31765) (not x14297) (not x11938))
+:assumption (or (not x29192) x15603)
+:assumption (or (not x11677) x14417)
+:assumption (or (not x16493) (not x22832))
+:assumption (or x29544 (not x2660) x23546 x2605 (not x30255) x8145)
+:assumption (or x14293 x18022)
+:assumption (or (not x25655) x7562)
+:assumption (or x16510 x11870)
+:assumption (or (not x30034) x30627)
+:assumption (or x16326 (not x1605) (not x4801))
+:assumption (or x8344 (not x1405))
+:assumption (or x652 x22653 x9008 x13744 (not x12827) (not x21926))
+:assumption (or (not x15153) x22139)
+:assumption (or (not x25355) (not x873) x25481 x11591 x6365)
+:assumption (or x20362 x15591)
+:assumption (or (not x30341) (not x12530) (not x10850))
+:assumption (or x23886 (not x23688) x29649 (not x28912) x4081)
+:assumption (or x21174 (not x30486))
+:assumption (or x3027 (not x16745) (not x26136) x18828)
+:assumption (or x19958 (not x10146))
+:assumption (or x250 x16503)
+:assumption (or x9172 x5999 x23696 x24342)
+:assumption (or x23886 x16851 x16922 x22943)
+:assumption (or (not x10945) (not x25374))
+:assumption (or (not x14217) x17032)
+:assumption (or x26152 x13492)
+:assumption (or (not x3593) (not x31065))
+:assumption (or (not x26557) x27012)
+:assumption (or (not x24148) x27951)
+:assumption (or (not x30944) x9904)
+:assumption (or (not x8022) x6706)
+:assumption (or (not x19331) x19815)
+:assumption (or x23099 (not x19779))
+:assumption (or (not x25819) x10947)
+:assumption (or (not x16683) x17790)
+:assumption (or (not x7792) x28301)
+:assumption (or (not x23878) (not x13497))
+:assumption (or (not x7828) x1597)
+:assumption (or (not x4937) (not x24348))
+:assumption (or x21993 x26897)
+:assumption (or (not x164) (not x20022))
+:assumption (or x3124 x4809 x14205 x8362)
+:assumption (or (not x28907) (not x14455) x2271)
+:assumption (or x11336 (not x14179))
+:assumption (or x13641 (not x16376))
+:assumption (or (not x2979) x4538)
+:assumption (or (not x24342) (not x5999))
+:assumption (or x2362 (not x12336) x31919 x45 (not x8766) x2236 x43 x9507 (not x4996))
+:assumption (or (not x12693) (not x22154))
+:assumption (or (not x30081) x29074)
+:assumption (or (not x1273) (not x27589))
+:assumption (or (not x29336) (not x15300))
+:assumption (or x20499 x7052)
+:assumption (or (not x18291) x29097)
+:assumption (or (not x16316) x4392)
+:assumption (or x8724 (not x6066))
+:assumption (or x2182 (not x18519))
+:assumption (or (not x2296) (not x19740))
+:assumption (or x13206 (not x15374))
+:assumption (or x14601 (not x5034))
+:assumption (or (not x25811) x7140)
+:assumption (or (not x30067) (not x25339))
+:assumption (or x20716 (not x4179))
+:assumption (or x801 (not x3828) x9645)
+:assumption (or (not x25039) (not x18003) (not x22399))
+:assumption (or x12397 (not x15604) x31915)
+:assumption (or (not x27517) x31741)
+:assumption (or (not x13106) x1841)
+:assumption (or x14963 (not x25177))
+:assumption (or x16583 (not x4405))
+:assumption (or x28205 x14963)
+:assumption (or (not x13910) (not x14925))
+:assumption (or (not x18042) x15955)
+:assumption (or (not x15010) (not x1962))
+:assumption (or x1433 x24877 x6677 x28645 (not x30686) (not x27150))
+:assumption (or (not x22330) (not x12397))
+:assumption (or x3103 (not x30513))
+:assumption (or (not x9779) x28746)
+:assumption (or x17960 x19305 x23958 (not x15598))
+:assumption (or (not x29442) x30580)
+:assumption (or x29479 (not x4422) (not x4096))
+:assumption (or x8919 (not x9600))
+:assumption (or (not x13956) (not x28976))
+:assumption (or (not x28973) x26780)
+:assumption (or x24888 x10301)
+:assumption (or (not x9139) (not x1354))
+:assumption (or (not x11897) (not x14524))
+:assumption (or (not x10335) x20987)
+:assumption (or x7838 (not x30891) (not x6746))
+:assumption (or (not x7279) (not x28172))
+:assumption (or x19637 (not x6897))
+:assumption (or x6216 (not x18420) x18910 (not x19717))
+:assumption (or x17908 (not x14279) x25465)
+:assumption (or x4773 (not x2097))
+:assumption (or x2031 (not x3232))
+:assumption (or (not x3548) x11326)
+:assumption (or (not x18134) (not x23980))
+:assumption (or x7708 x6)
+:assumption (or x29649 (not x14793))
+:assumption (or x8069 x4582)
+:assumption (or x4434 x8399)
+:assumption (or (not x20949) x11706 (not x12045) x26719)
+:assumption (or (not x3991) x9092)
+:assumption (or (not x18420) (not x25072))
+:assumption (or x13309 (not x5200))
+:assumption (or (not x13549) (not x10095))
+:assumption (or (not x28471) (not x30032))
+:assumption (or (not x8002) x25999 (not x19976))
+:assumption (or x28310 (not x26265))
+:assumption (or (not x9821) x587 x8182 x10010 x21618 (not x13384))
+:assumption (or x10652 x12050)
+:assumption (or x21853 (not x13571))
+:assumption (or x20651 (not x8722))
+:assumption (or (not x31009) (not x20134))
+:assumption (or (not x26558) x17421)
+:assumption (or x6751 (not x1393))
+:assumption (or (not x12423) (not x22472))
+:assumption (or (not x31767) (not x8389))
+:assumption (or (not x18611) x9008)
+:assumption (or x29550 (not x10896))
+:assumption (or x2524 x12895)
+:assumption (or x5420 (not x31256))
+:assumption (or (not x4233) (not x19667) (not x27714) x11556)
+:assumption (or (not x24098) x5499 (not x6572))
+:assumption (or (not x8037) x16677 (not x1582) x31443 x1547 x12741 x28973)
+:assumption (or (not x2322) (not x6045) x4784 (not x24751) x14156 x23722)
+:assumption (or (not x4305) (not x12917) x10331 (not x9230) x3108 x9257 (not x12642) x10886 (not x7805))
+:assumption (or x12713 (not x11894))
+:assumption (or (not x19947) x5353)
+:assumption (or (not x11198) (not x17220))
+:assumption (or (not x12302) x8561)
+:assumption (or (not x8002) (not x8613) (not x9536))
+:assumption (or (not x11828) x10889)
+:assumption (or (not x9008) x12904)
+:assumption (or (not x20388) x11374 (not x25366) (not x18872))
+:assumption (or x4559 x12801)
+:assumption (or x5565 x14632)
+:assumption (or (not x21815) x3782 (not x2334) x16510 (not x11005) x2049 x12856)
+:assumption (or (not x6030) (not x27590))
+:assumption (or x27040 (not x15861) x13587)
+:assumption (or (not x3567) (not x8886))
+:assumption (or x26561 x1613 (not x29422) x30229 x7362 x25686)
+:assumption (or (not x2132) (not x9792))
+:assumption (or x25382 (not x15811))
+:assumption (or x358 x2703)
+:assumption (or x31327 (not x7548))
+:assumption (or x15538 x11078)
+:assumption (or (not x21778) x23048)
+:assumption (or x16769 (not x14770))
+:assumption (or x12334 x4552)
+:assumption (or x22314 x14802)
+:assumption (or x3628 (not x9595) x22858 (not x150))
+:assumption (or x4459 x30710)
+:assumption (or (not x21068) (not x10217))
+:assumption (or x1390 (not x23332))
+:assumption (or (not x20627) x8229 x5372 (not x13488))
+:assumption (or (not x25492) (not x768) (not x23081))
+:assumption (or x12741 x218 x11832)
+:assumption (or x28871 x5805)
+:assumption (or x30487 x4794)
+:assumption (or x1433 (not x7970))
+:assumption (or (not x3435) (not x22376) x25366 x13992)
+:assumption (or (not x16455) (not x7537) x31557 (not x23399) (not x7766))
+:assumption (or (not x9647) x25355 (not x30239) (not x10982) x15508)
+:assumption (or x5891 x18503)
+:assumption (or x11466 x27363)
+:assumption (or x8699 (not x19319))
+:assumption (or (not x15686) (not x23244))
+:assumption (or (not x3296) x9025)
+:assumption (or (not x17572) x13469)
+:assumption (or x24490 (not x26684))
+:assumption (or (not x8168) (not x25659))
+:assumption (or (not x16510) x23833)
+:assumption (or x27878 x17549)
+:assumption (or x1978 x10490)
+:assumption (or x19501 x21228)
+:assumption (or (not x6099) (not x17302))
+:assumption (or x16277 (not x13587))
+:assumption (or (not x18179) x10194)
+:assumption (or (not x14960) x7542)
+:assumption (or x22451 (not x7064))
+:assumption (or (not x22230) (not x827))
+:assumption (or x1350 x10199)
+:assumption (or x23254 (not x3016) x23704 x18651)
+:assumption (or x9695 (not x10064) x15917 x7181)
+:assumption (or (not x6785) (not x14435) (not x30557) x29242)
+:assumption (or (not x16465) (not x2344))
+:assumption (or x9714 x17558)
+:assumption (or (not x17075) (not x6839))
+:assumption (or x24497 x28865)
+:assumption (or x25037 x9031)
+:assumption (or (not x9838) x5434 (not x8640) (not x23457))
+:assumption (or (not x16557) (not x27068))
+:assumption (or x29285 (not x15917) x10064)
+:assumption (or x11394 (not x7133))
+:assumption (or x25502 x25376 x25676 (not x1446))
+:assumption (or (not x9453) x18710)
+:assumption (or x24164 x14153 x19992 (not x12811) (not x17435) x14389)
+:assumption (or x17851 (not x1264))
+:assumption (or x7701 x20365)
+:assumption (or x13038 (not x18341))
+:assumption (or (not x1224) x26073)
+:assumption (or x13995 (not x22538) x389 x18182 x11385 x28864)
+:assumption (or (not x24324) (not x16061))
+:assumption (or x17966 (not x2476))
+:assumption (or x5436 x16861)
+:assumption (or x22531 (not x7882))
+:assumption (or (not x14206) x23981 x21893 (not x6525))
+:assumption (or x8750 x28945)
+:assumption (or x25043 (not x31224) (not x8229))
+:assumption (or (not x17538) (not x12045))
+:assumption (or (not x3567) (not x7775))
+:assumption (or (not x16025) (not x22364))
+:assumption (or x28593 x17549 x15761 (not x11413) x19044 x5397)
+:assumption (or (not x7239) (not x26658))
+:assumption (or x27687 x21700)
+:assumption (or x27913 (not x9977))
+:assumption (or (not x25412) (not x26163))
+:assumption (or (not x6900) (not x23912))
+:assumption (or (not x19381) x3500)
+:assumption (or (not x14347) x3083 (not x28317))
+:assumption (or x21077 x10230 x25471)
+:assumption (or (not x474) (not x1811))
+:assumption (or (not x9143) (not x5113))
+:assumption (or x22463 (not x2545))
+:assumption (or x13092 (not x16016) (not x31076))
+:assumption (or x24066 x22678)
+:assumption (or x27859 x14559)
+:assumption (or (not x3600) (not x22086))
+:assumption (or (not x454) x22308 (not x69))
+:assumption (or (not x9655) (not x5117) x25366)
+:assumption (or (not x30271) x6243 x24492 (not x9480))
+:assumption (or (not x17259) x1645)
+:assumption (or x20830 (not x23737) x23244)
+:assumption (or x8894 (not x17764))
+:assumption (or (not x19247) x8960)
+:assumption (or (not x17693) x14600)
+:assumption (or x9438 (not x10237))
+:assumption (or (not x18580) x14700 (not x4895) x27032 x26897)
+:assumption (or x30630 (not x11615))
+:assumption (or x15628 x24580)
+:assumption (or (not x12204) (not x17424))
+:assumption (or (not x10649) (not x19082))
+:assumption (or x8602 (not x19372) (not x4208))
+:assumption (or (not x11915) x21383 x25634)
+:assumption (or x12606 (not x24756) x23244)
+:assumption (or x14083 x20172)
+:assumption (or x2398 x1307)
+:assumption (or x2447 x1393 (not x6979))
+:assumption (or (not x26310) x1920)
+:assumption (or (not x4943) x31330)
+:assumption (or (not x763) (not x18599))
+:assumption (or x25904 x14790)
+:assumption (or (not x3644) (not x30533))
+:assumption (or (not x24040) x31400)
+:assumption (or x21761 (not x26897) x8714 x30138)
+:assumption (or (not x20641) x26507)
+:assumption (or x27104 (not x30994) x754 x24761 (not x30887))
+:assumption (or (not x21564) (not x12200))
+:assumption (or (not x19724) x18045)
+:assumption (or x2270 x24296)
+:assumption (or x16510 x25831)
+:assumption (or x8471 (not x19377))
+:assumption (or (not x4167) x9495)
+:assumption (or x30318 x6615)
+:assumption (or x1647 (not x27604) (not x16039))
+:assumption (or (not x28364) x29835 (not x9008) (not x26892) (not x5528))
+:assumption (or (not x754) (not x5954) (not x23419))
+:assumption (or x11058 (not x22582))
+:assumption (or (not x21665) x6974)
+:assumption (or x26847 (not x3453) x29274)
+:assumption (or x28912 x25792)
+:assumption (or x6016 x3087 (not x20356) (not x7921) (not x30370))
+:assumption (or x96 x25350 x26061)
+:assumption (or (not x28944) x12930)
+:assumption (or (not x29867) (not x28391) x13331 x23244 x2211)
+:assumption (or x9992 x27301)
+:assumption (or x25768 (not x7530))
+:assumption (or x27038 x21731)
+:assumption (or (not x23711) (not x20164))
+:assumption (or (not x28411) x2639)
+:assumption (or (not x26027) x23945)
+:assumption (or (not x15612) x1057)
+:assumption (or x26303 (not x9989))
+:assumption (or x4809 x28528 (not x22464))
+:assumption (or x2367 (not x28864))
+:assumption (or (not x19620) x5175)
+:assumption (or x4578 x14206)
+:assumption (or x19970 x3782)
+:assumption (or (not x23450) (not x8344))
+:assumption (or (not x6924) (not x301))
+:assumption (or x14301 x16907)
+:assumption (or x30400 x10411 (not x28439) x21208 (not x12868) x21833)
+:assumption (or (not x25825) (not x28926))
+:assumption (or (not x15202) (not x5142))
+:assumption (or (not x12937) (not x29771))
+:assumption (or x26352 (not x10770) (not x17113) (not x16745))
+:assumption (or x17031 x9840)
+:assumption (or x5886 x10908 x8961)
+:assumption (or x2277 (not x30778))
+:assumption (or x30940 x9647)
+:assumption (or (not x27382) (not x25120))
+:assumption (or x3455 x17572 x9983 (not x25377))
+:assumption (or (not x8390) (not x12845))
+:assumption (or (not x12529) x22796)
+:assumption (or (not x4687) (not x12034))
+:assumption (or (not x29915) (not x28460))
+:assumption (or (not x12553) (not x28068))
+:assumption (or (not x15912) (not x448))
+:assumption (or x13115 x620 x13869)
+:assumption (or (not x7426) (not x1205))
+:assumption (or (not x535) x25720)
+:assumption (or (not x25374) x11339)
+:assumption (or x7766 x16455)
+:assumption (or (not x10098) x25698)
+:assumption (or x27853 x6040)
+:assumption (or x6365 (not x19064))
+:assumption (or x23759 (not x26691))
+:assumption (or x8341 (not x27603))
+:assumption (or x23198 x12542)
+:assumption (or (not x447) x2530 (not x31847) (not x24139) x8078)
+:assumption (or x200 x30524)
+:assumption (or (not x25053) x11473 (not x13029) (not x1369) (not x26423))
+:assumption (or (not x24500) (not x12097))
+:assumption (or x13956 x12302)
+:assumption (or (not x13956) x8724 x24684 x27359)
+:assumption (or (not x16802) x25885)
+:assumption (or x10538 (not x8869))
+:assumption (or (not x31415) (not x21994))
+:assumption (or x10978 x20747 x30261)
+:assumption (or (not x29796) x17908)
+:assumption (or x5528 x15264)
+:assumption (or x10680 (not x31298))
+:assumption (or x21312 x23717 x204 (not x28205) (not x11008) (not x14963))
+:assumption (or (not x23181) (not x13705))
+:assumption (or x23317 x16819)
+:assumption (or x1534 x5534)
+:assumption (or x24357 (not x30100))
+:assumption (or x3525 x845)
+:assumption (or (not x15473) (not x10641))
+:assumption (or (not x28877) (not x14949))
+:assumption (or (not x17851) x28284)
+:assumption (or x9008 x5065 (not x10160))
+:assumption (or (not x19800) (not x25345))
+:assumption (or x2786 x27110)
+:assumption (or x3303 x20905 (not x27962) (not x27747) x6591)
+:assumption (or x1611 x13012)
+:assumption (or (not x8017) (not x5180))
+:assumption (or (not x21834) x16240)
+:assumption (or (not x17041) (not x29518))
+:assumption (or x22846 x10270)
+:assumption (or x25128 (not x30934))
+:assumption (or (not x7106) (not x29622) (not x14996))
+:assumption (or (not x21190) x12763)
+:assumption (or (not x28527) x16216 x6444)
+:assumption (or x3452 x24606)
+:assumption (or (not x14053) x23219)
+:assumption (or x20074 (not x10845))
+:assumption (or x6583 (not x2500))
+:assumption (or (not x24834) x30406)
+:assumption (or (not x22557) x4058)
+:assumption (or x22625 x14821)
+:assumption (or (not x6708) x23044)
+:assumption (or x18314 (not x7612) (not x23991) x24837 x3972)
+:assumption (or x15714 (not x6911))
+:assumption (or (not x4995) (not x3039) (not x27939))
+:assumption (or (not x5868) x24952)
+:assumption (or (not x15191) x30951)
+:assumption (or x7193 x21815)
+:assumption (or x10824 (not x30633))
+:assumption (or (not x19308) (not x18578))
+:assumption (or x23379 x28811)
+:assumption (or x23244 x8002 x18669 x13967)
+:assumption (or (not x20504) (not x13132))
+:assumption (or x16532 (not x24792))
+:assumption (or (not x25350) (not x17711) (not x8574))
+:assumption (or (not x12331) (not x28115))
+:assumption (or x18479 (not x13850))
+:assumption (or (not x15978) x5259)
+:assumption (or (not x27066) (not x20885))
+:assumption (or x17577 x17654)
+:assumption (or x28422 x10417)
+:assumption (or x18859 (not x4588) x3209)
+:assumption (or x29019 x5099)
+:assumption (or (not x18435) x23718)
+:assumption (or x26305 x31030)
+:assumption (or (not x3333) (not x15813))
+:assumption (or (not x29251) (not x23116))
+:assumption (or x14535 (not x16185) x18594)
+:assumption (or (not x9599) x13417)
+:assumption (or (not x9172) x8440)
+:assumption (or (not x21639) x21904)
+:assumption (or (not x3044) x5752)
+:assumption (or x29312 x1282 x9758)
+:assumption (or (not x19719) (not x7375))
+:assumption (or (not x30173) (not x10858))
+:assumption (or (not x27666) (not x23707))
+:assumption (or (not x31680) x30832)
+:assumption (or x4289 (not x24559))
+:assumption (or x14503 (not x25929))
+:assumption (or (not x16930) (not x26108) x24875 x10715 x31182 x5547 x14232)
+:assumption (or x27962 (not x9531))
+:assumption (or x15698 (not x16507))
+:assumption (or (not x7756) (not x1910))
+:assumption (or x25443 x11893 x9008)
+:assumption (or (not x4686) x13115)
+:assumption (or x21085 (not x28441))
+:assumption (or x579 (not x26164) (not x18804) x2288)
+:assumption (or (not x28752) x23260)
+:assumption (or (not x16954) (not x21314))
+:assumption (or (not x28973) (not x30811))
+:assumption (or (not x24058) (not x27433))
+:assumption (or x27858 (not x3848))
+:assumption (or (not x16385) (not x23655))
+:assumption (or x23950 (not x1354))
+:assumption (or (not x28492) x16117)
+:assumption (or (not x31437) x7037 x21298 x13411)
+:assumption (or x29312 x15272)
+:assumption (or (not x7972) (not x26921))
+:assumption (or x16715 (not x26373))
+:assumption (or (not x3676) (not x23936))
+:assumption (or x10290 (not x1954) (not x13144) x29492 (not x13993))
+:assumption (or x23958 x340)
+:assumption (or x27762 x15759)
+:assumption (or (not x17234) x23805)
+:assumption (or x22543 x8871)
+:assumption (or (not x1434) x10012)
+:assumption (or (not x25543) x1032)
+:assumption (or (not x21231) x18338)
+:assumption (or x2315 (not x4765) (not x16066) (not x23399) x5860)
+:assumption (or x2906 x1149)
+:assumption (or (not x23664) (not x1675) x29051 (not x16827) (not x2136))
+:assumption (or (not x29813) x24748 x7027 x6594 x29719)
+:assumption (or (not x10900) x3997)
+:assumption (or x16025 (not x22508) (not x10967))
+:assumption (or (not x8270) x8846)
+:assumption (or x26024 (not x14779) (not x4942) (not x23958))
+:assumption (or x6923 x20820)
+:assumption (or (not x6548) x19489 x26953 (not x24676) x21948 x27425)
+:assumption (or x9002 x12896)
+:assumption (or x2984 x4252)
+:assumption (or (not x15403) x90)
+:assumption (or x13733 (not x5696) x16449 (not x22777) x361 (not x13178))
+:assumption (or (not x26618) (not x18555))
+:assumption (or x8024 x27391)
+:assumption (or x28780 x24913)
+:assumption (or (not x11571) x8612)
+:assumption (or x26770 x9804)
+:assumption (or (not x6908) (not x23832))
+:assumption (or x26183 x1170 x21178 x18369)
+:assumption (or x20638 (not x19193))
+:assumption (or x10108 x13434)
+:assumption (or (not x5834) x31096)
+:assumption (or x11452 x24653)
+:assumption (or x9814 (not x15049))
+:assumption (or (not x8933) x19568 x13728)
+:assumption (or (not x29649) (not x19902))
+:assumption (or (not x16104) (not x6900))
+:assumption (or x11322 (not x8002))
+:assumption (or (not x25012) x18255)
+:assumption (or x1427 x8002 x22970)
+:assumption (or x5528 x4203)
+:assumption (or x31048 x14066 (not x6140) (not x16977) (not x27584))
+:assumption (or x6898 (not x21381))
+:assumption (or x16070 (not x4524))
+:assumption (or (not x7376) x18673)
+:assumption (or (not x4884) x24079)
+:assumption (or (not x29947) x2141)
+:assumption (or (not x6544) (not x24130) x6969)
+:assumption (or (not x17056) x5232)
+:assumption (or (not x28979) x10081 (not x8394))
+:assumption (or x18086 (not x13833))
+:assumption (or x17323 (not x16763))
+:assumption (or (not x14789) x8614)
+:assumption (or (not x15366) (not x12828))
+:assumption (or (not x31902) x8843)
+:assumption (or (not x9389) (not x27663))
+:assumption (or (not x5528) x11287)
+:assumption (or x408 x27110)
+:assumption (or (not x20219) x4250)
+:assumption (or (not x10998) (not x18069))
+:assumption (or x16607 x21344 x15917 x10064)
+:assumption (or x5609 x10724 (not x11647) (not x16524) x7377 x10172 (not x18294) x11451)
+:assumption (or x11361 (not x7465))
+:assumption (or x23317 (not x10610))
+:assumption (or x21815 (not x24470))
+:assumption (or (not x5624) (not x23850) (not x22852) x14731 x18458 x2751 x7446)
+:assumption (or x13156 (not x14441))
+:assumption (or (not x12345) (not x5944))
+:assumption (or x12006 (not x24993))
+:assumption (or x13392 (not x23073))
+:assumption (or x23683 x28448)
+:assumption (or (not x19298) x14039)
+:assumption (or (not x6951) (not x22848))
+:assumption (or x10426 (not x28234))
+:assumption (or (not x24388) (not x27927))
+:assumption (or (not x27399) (not x25837))
+:assumption (or x9452 (not x29182))
+:assumption (or (not x26147) x786)
+:assumption (or x2281 x9900)
+:assumption (or (not x18754) (not x25717))
+:assumption (or x19081 x13845)
+:assumption (or x24027 (not x5846) (not x24699))
+:assumption (or x12045 x20949 x26719 (not x18699))
+:assumption (or x22470 (not x23244))
+:assumption (or x22177 x9276)
+:assumption (or x27450 x21119)
+:assumption (or x1388 x9701)
+:assumption (or (not x7852) (not x1524))
+:assumption (or x21057 x19647)
+:assumption (or x26320 (not x20036))
+:assumption (or (not x6582) (not x3876))
+:assumption (or (not x16669) x26897)
+:assumption (or (not x26762) (not x8478))
+:assumption (or x27687 x7555)
+:assumption (or (not x21977) x22348)
+:assumption (or x18034 (not x8961))
+:assumption (or x30206 x25254 x22967 (not x14847))
+:assumption (or x30351 (not x31782) x5528)
+:assumption (or x30745 (not x8459))
+:assumption (or (not x26343) x9880)
+:assumption (or (not x26149) (not x28406))
+:assumption (or (not x9254) x15820)
+:assumption (or (not x24062) x18001 x28314)
+:assumption (or (not x8120) x7349 (not x15349) x22604 (not x19473))
+:assumption (or (not x30963) (not x30601))
+:assumption (or (not x14566) x12448)
+:assumption (or (not x31045) (not x28371) x1393)
+:assumption (or x9390 (not x5837))
+:assumption (or x2230 (not x3143) (not x1582))
+:assumption (or x11389 (not x19701) x22477)
+:assumption (or (not x6619) x13818)
+:assumption (or (not x7182) x21298)
+:assumption (or (not x7308) x18909)
+:assumption (or (not x31714) x17350)
+:assumption (or (not x28357) x22166)
+:assumption (or x99 (not x9963))
+:assumption (or (not x15320) (not x13908))
+:assumption (or (not x21689) (not x25277) (not x13956) (not x28241))
+:assumption (or (not x24173) x23403)
+:assumption (or x6264 (not x7600))
+:assumption (or x29924 x19336)
+:assumption (or x8253 x9531 (not x12869) x25764)
+:assumption (or (not x20959) x26753)
+:assumption (or x7436 x14824)
+:assumption (or (not x25818) (not x29033) (not x11401) x28755 x26149 x24945)
+:assumption (or x30205 x6261)
+:assumption (or x24487 x30577)
+:assumption (or x26672 (not x15185))
+:assumption (or (not x18170) (not x31184))
+:assumption (or x15424 x25236)
+:assumption (or (not x21298) x21940 (not x6187))
+:assumption (or x20291 x17961)
+:assumption (or x4417 (not x3001))
+:assumption (or (not x24477) (not x20883))
+:assumption (or x6886 x2507)
+:assumption (or (not x20171) x7558)
+:assumption (or x26281 (not x1260))
+:assumption (or (not x17448) x10609)
+:assumption (or x4455 (not x12485) (not x2022))
+:assumption (or x7173 x3812)
+:assumption (or (not x27990) x27794)
+:assumption (or (not x2731) (not x16329))
+:assumption (or x1582 (not x14285))
+:assumption (or x13727 (not x11087))
+:assumption (or x17141 x14051)
+:assumption (or x10852 (not x16071))
+:assumption (or (not x17451) (not x8953))
+:assumption (or x6951 (not x363) (not x9716) x15012 (not x8883))
+:assumption (or x16634 x1634)
+:assumption (or (not x17982) (not x22349))
+:assumption (or x29312 (not x25529) x22621 x31574)
+:assumption (or (not x25573) (not x23063))
+:assumption (or x14583 (not x31511) x6768 (not x1056) x23146 (not x16264) (not x2177) (not x22509) (not x18186))
+:assumption (or (not x11488) x3446)
+:assumption (or (not x7441) x688 (not x2627) (not x17856) x6384 x9020)
+:assumption (or x11947 x20258)
+:assumption (or x23244 (not x1713) (not x26897))
+:assumption (or x22082 (not x8961))
+:assumption (or (not x18275) (not x23752))
+:assumption (or x10275 (not x22267))
+:assumption (or x6981 x6539)
+:assumption (or (not x14395) (not x30450))
+:assumption (or (not x5340) x142)
+:assumption (or (not x13956) (not x274) x15102)
+:assumption (or (not x21369) (not x17404))
+:assumption (or x12217 x22830)
+:assumption (or x31774 x3221)
+:assumption (or (not x2216) x17908 x2267)
+:assumption (or (not x26384) x25151)
+:assumption (or x18820 x24424 (not x16076))
+:assumption (or (not x8551) (not x14406) x30167 (not x25290) x8961 x27554)
+:assumption (or (not x29960) (not x1196) (not x3249) (not x9621) x19032)
+:assumption (or (not x25659) (not x27994))
+:assumption (or (not x5207) (not x31158) (not x5023) x26762 (not x19382) x11402 (not x17950))
+:assumption (or x25556 x17168)
+:assumption (or (not x17805) (not x26578))
+:assumption (or x26491 x2082)
+:assumption (or x18807 (not x3406) x6995 (not x17656) x14969 x6525 (not x29977) (not x22500) x4210)
+:assumption (or (not x5308) (not x22374))
+:assumption (or (not x21711) (not x6121) (not x16945) (not x20594) (not x30262) (not x5692))
+:assumption (or (not x11274) x24565)
+:assumption (or (not x4792) (not x3768))
+:assumption (or x18995 (not x385))
+:assumption (or (not x20024) (not x27982))
+:assumption (or (not x10956) x2972)
+:assumption (or x27534 x8500)
+:assumption (or (not x17482) (not x10276))
+:assumption (or (not x6183) (not x2963))
+:assumption (or (not x11993) x22192)
+:assumption (or (not x10182) (not x190))
+:assumption (or x3336 (not x19145) (not x28354) x5157 x13196 (not x8313) (not x22814) (not x10738))
+:assumption (or x28321 x22495)
+:assumption (or (not x15679) x31439)
+:assumption (or (not x889) x11545)
+:assumption (or x22891 x24461)
+:assumption (or x14687 x2648)
+:assumption (or (not x9662) x333)
+:assumption (or (not x21931) (not x15073))
+:assumption (or x1393 (not x20785))
+:assumption (or (not x16025) x14922)
+:assumption (or (not x29606) (not x13033))
+:assumption (or (not x20060) x16219 x16733)
+:assumption (or x29196 x16397 x16640)
+:assumption (or (not x6950) x20279)
+:assumption (or (not x17008) x2372)
+:assumption (or x3953 (not x3162))
+:assumption (or x4185 (not x1238))
+:assumption (or x13055 x31164)
+:assumption (or (not x22132) x4911)
+:assumption (or (not x24952) x29557)
+:assumption (or (not x30623) (not x15036))
+:assumption (or (not x14459) (not x23003) (not x9183) (not x23977))
+:assumption (or (not x21570) (not x22989))
+:assumption (or (not x11992) x28281)
+:assumption (or x15775 x23482)
+:assumption (or (not x23399) (not x6760))
+:assumption (or x11017 (not x8689))
+:assumption (or x22463 x8002 x17610)
+:assumption (or (not x11089) (not x3011))
+:assumption (or (not x17999) (not x29169))
+:assumption (or (not x4) x20491)
+:assumption (or x10363 (not x11483))
+:assumption (or x27607 x20937)
+:assumption (or x8769 x5724)
+:assumption (or x22222 (not x5291))
+:assumption (or (not x30138) (not x15735) (not x12172) x15201)
+:assumption (or (not x3359) (not x7956))
+:assumption (or x6204 x26762)
+:assumption (or (not x30565) x1826)
+:assumption (or x30958 x31377)
+:assumption (or x30348 x6901)
+:assumption (or (not x4455) x31506)
+:assumption (or x27294 x12146)
+:assumption (or x26488 x29999)
+:assumption (or (not x12000) x15522)
+:assumption (or x3363 (not x20200))
+:assumption (or x23126 x10984)
+:assumption (or (not x7011) (not x31881))
+:assumption (or x23523 (not x20977))
+:assumption (or x5100 (not x6635))
+:assumption (or x25716 (not x24076))
+:assumption (or x6064 (not x16252))
+:assumption (or (not x17004) (not x10911))
+:assumption (or (not x1258) (not x31282))
+:assumption (or (not x10777) x7153)
+:assumption (or (not x20752) (not x4000) (not x10909) x26897)
+:assumption (or x18228 x16517)
+:assumption (or (not x12094) (not x2381))
+:assumption (or x13018 x26284 (not x29043))
+:assumption (or x31175 (not x4058) x3782 (not x10684))
+:assumption (or (not x27814) (not x3839))
+:assumption (or x14909 (not x24228))
+:assumption (or (not x2674) (not x1236))
+:assumption (or (not x15818) x7652)
+:assumption (or x22878 x21466)
+:assumption (or x14782 (not x15491))
+:assumption (or (not x18994) x2999)
+:assumption (or (not x599) (not x1582))
+:assumption (or (not x22026) x14603)
+:assumption (or x16110 x4535)
+:assumption (or x9423 x19687 (not x15868) x3278)
+:assumption (or (not x13188) (not x11369))
+:assumption (or x15146 x28353)
+:assumption (or (not x1180) x7141)
+:assumption (or (not x17525) x25313)
+:assumption (or (not x25683) x29975)
+:assumption (or (not x18096) x5489)
+:assumption (or x17288 (not x16814) x19864)
+:assumption (or x7554 (not x16386))
+:assumption (or (not x20523) x218)
+:assumption (or (not x12013) (not x23461))
+:assumption (or (not x11364) (not x6294) (not x11238))
+:assumption (or (not x791) (not x20647))
+:assumption (or x12977 (not x8563))
+:assumption (or (not x11615) x30280)
+:assumption (or x9379 x26916)
+:assumption (or (not x21865) x31314 (not x23958))
+:assumption (or x9759 x14868)
+:assumption (or (not x25283) (not x28921))
+:assumption (or (not x21112) x2837)
+:assumption (or (not x9560) (not x27359))
+:assumption (or x27889 (not x28195))
+:assumption (or (not x24796) x6095 (not x12059) x10167)
+:assumption (or (not x28306) (not x11334))
+:assumption (or (not x1580) x24764)
+:assumption (or x3839 x17590 (not x24642) x10953 x27814)
+:assumption (or (not x4127) (not x2308))
+:assumption (or x23759 (not x24190))
+:assumption (or (not x25589) x20769)
+:assumption (or (not x24760) x5953)
+:assumption (or x29765 (not x2006) (not x24228))
+:assumption (or (not x12285) (not x30002))
+:assumption (or (not x4087) (not x12074))
+:assumption (or (not x6990) x24739)
+:assumption (or x19674 x775)
+:assumption (or x12040 x26295)
+:assumption (or x26749 x15736)
+:assumption (or (not x28280) (not x4557) (not x5265) x762 (not x1414) (not x17228))
+:assumption (or (not x21399) (not x23417))
+:assumption (or x6892 x2804)
+:assumption (or x16863 (not x20472) x13809 (not x17509) (not x17017) (not x2498))
+:assumption (or x20927 (not x7691))
+:assumption (or (not x10690) (not x23343))
+:assumption (or (not x28476) x18613 (not x14891) x26576 (not x6372))
+:assumption (or x9658 (not x22271))
+:assumption (or (not x911) x19711 (not x18583) (not x26518) (not x16508))
+:assumption (or x17603 x9880)
+:assumption (or x10665 (not x14350) x25119 x24010 x28258 x4834 (not x15346) x11796 (not x24036))
+:assumption (or x3587 x142)
+:assumption (or (not x12375) x28585)
+:assumption (or (not x4939) x4862)
+:assumption (or x297 x16852)
+:assumption (or x2335 x24106)
+:assumption (or (not x24940) x21700)
+:assumption (or (not x14619) (not x16800))
+:assumption (or x5080 x25077)
+:assumption (or x13223 (not x5492))
+:assumption (or (not x5640) (not x13289) (not x14917) (not x8702) (not x28973))
+:assumption (or (not x31902) x10874)
+:assumption (or (not x13915) x25783 x22421 (not x4799))
+:assumption (or (not x28315) (not x1898))
+:assumption (or (not x9340) x12072)
+:assumption (or x10068 (not x4918))
+:assumption (or x23387 (not x12734) (not x28047) x18426 x13674)
+:assumption (or (not x27532) x31873 (not x16743) x11201 x3777)
+:assumption (or (not x5206) (not x2570))
+:assumption (or x21220 (not x1559))
+:assumption (or x26131 (not x28471))
+:assumption (or x1921 x3954)
+:assumption (or x8825 x7353)
+:assumption (or (not x11920) x15825)
+:assumption (or x13686 x27175)
+:assumption (or (not x23128) (not x23261))
+:assumption (or x21298 x28023 (not x20941) (not x7168))
+:assumption (or x14218 (not x15289))
+:assumption (or (not x24430) (not x30371))
+:assumption (or (not x657) x23698)
+:assumption (or (not x27664) x30985)
+:assumption (or x13745 x31557 x2133)
+:assumption (or (not x28864) x17099)
+:assumption (or x24079 x20561)
+:assumption (or x19992 x23987)
+:assumption (or (not x5815) (not x29917))
+:assumption (or x15419 x7783 x12272 x2064 (not x23738) x21815)
+:assumption (or x13830 (not x4709))
+:assumption (or (not x8286) (not x11264) (not x27139) x16599 x27577 x31482)
+:assumption (or (not x19306) x30093)
+:assumption (or (not x14353) x21298)
+:assumption (or x5243 x20337)
+:assumption (or (not x16763) (not x9644))
+:assumption (or x1042 (not x18146) (not x12955) (not x25323))
+:assumption (or x2188 (not x1248) (not x27889) (not x27620))
+:assumption (or (not x27657) (not x10683))
+:assumption (or x3964 (not x29277))
+:assumption (or (not x3288) x13512)
+:assumption (or x26670 (not x3653) x19418)
+:assumption (or (not x19819) x13487)
+:assumption (or x9902 (not x16963))
+:assumption (or (not x15210) (not x7516))
+:assumption (or x5528 (not x7747))
+:assumption (or x22704 (not x21227))
+:assumption (or x24332 x8529)
+:assumption (or (not x10010) (not x16297))
+:assumption (or x2175 (not x9008))
+:assumption (or (not x25519) x8614)
+:assumption (or x21689 x3010)
+:assumption (or (not x19477) x2756)
+:assumption (or (not x26929) (not x19368))
+:assumption (or x1428 x5528)
+:assumption (or x18969 (not x20018))
+:assumption (or x20272 x23219)
+:assumption (or x11012 x9511)
+:assumption (or x11547 x18814)
+:assumption (or (not x8630) (not x18335))
+:assumption (or (not x22176) x9008 (not x15302))
+:assumption (or x14069 (not x12624))
+:assumption (or (not x13957) x12444 x23865)
+:assumption (or x20060 x4563)
+:assumption (or x19717 (not x6216))
+:assumption (or x15195 (not x3153))
+:assumption (or x18907 (not x10334))
+:assumption (or x6307 (not x4328) (not x31543) (not x6200))
+:assumption (or (not x23450) x2379)
+:assumption (or x28997 (not x24756) (not x21765))
+:assumption (or (not x4667) x28840 x27998 x26757 (not x31763) (not x20888) x29493)
+:assumption (or (not x4018) (not x9008) x3426)
+:assumption (or (not x9775) x19603 (not x25266) x30539 x28952 (not x28731))
+:assumption (or (not x29082) (not x19513))
+:assumption (or x3703 (not x2813))
+:assumption (or x4648 x31187)
+:assumption (or (not x4258) (not x25070))
+:assumption (or (not x11230) x15206)
+:assumption (or (not x19730) (not x5357) (not x17586) (not x23238) x3332 (not x12657) (not x13987) x4161 x9127)
+:assumption (or (not x10909) x29026)
+:assumption (or x27408 (not x27395))
+:assumption (or (not x18551) (not x16145))
+:assumption (or x5528 (not x21310) x7216)
+:assumption (or x9264 (not x16881))
+:assumption (or x30197 x29761)
+:assumption (or (not x10900) x6562 x15917 x10064)
+:assumption (or (not x30633) (not x25817))
+:assumption (or (not x13026) x7215)
+:assumption (or (not x12452) (not x16054))
+:assumption (or x16025 (not x27233) (not x1418) (not x21633))
+:assumption (or x17827 (not x24722))
+:assumption (or (not x18100) x21305)
+:assumption (or x1541 x12688)
+:assumption (or x8369 (not x9442))
+:assumption (or x28024 (not x1494))
+:assumption (or (not x11465) (not x27398))
+:assumption (or x1640 x24500)
+:assumption (or x6001 x15178)
+:assumption (or x17001 x18543)
+:assumption (or (not x11294) (not x26256))
+:assumption (or x8934 (not x30722))
+:assumption (or x29315 (not x21807))
+:assumption (or (not x15847) x30453)
+:assumption (or (not x5706) x14478)
+:assumption (or (not x26607) x8574)
+:assumption (or x18030 x25100)
+:assumption (or x26148 x10520)
+:assumption (or (not x12995) x23379)
+:assumption (or x1782 (not x23102))
+:assumption (or x26560 (not x8694))
+:assumption (or (not x25536) (not x9466))
+:assumption (or x13423 x25638 x10060 x2844)
+:assumption (or x28668 (not x23781))
+:assumption (or (not x21660) x29171)
+:assumption (or (not x647) x11426)
+:assumption (or x28159 x18618)
+:assumption (or (not x7245) (not x9799))
+:assumption (or (not x22453) x4722)
+:assumption (or (not x23490) (not x27069))
+:assumption (or x28529 x10282 (not x11255) x6966 x18036)
+:assumption (or (not x30500) (not x31835))
+:assumption (or (not x23679) x645)
+:assumption (or (not x21470) x21653)
+:assumption (or x22735 (not x21869))
+:assumption (or x2323 (not x9596))
+:assumption (or x1969 (not x12242))
+:assumption (or (not x1859) x4659)
+:assumption (or x30055 x21526)
+:assumption (or x19792 (not x16610))
+:assumption (or x25358 (not x5874))
+:assumption (or (not x11906) (not x25366) x20094)
+:assumption (or x11281 (not x18873) (not x16959) x13129)
+:assumption (or (not x10548) x5660 (not x28912))
+:assumption (or (not x13435) x30835)
+:assumption (or x13721 x3309)
+:assumption (or (not x16200) (not x202) x7308 (not x25224) x3001 (not x21651))
+:assumption (or x28574 (not x29999) x10497 x2160 (not x26488) (not x12252) (not x18248) x31114)
+:assumption (or (not x17809) (not x27615))
+:assumption (or (not x16907) (not x30290))
+:assumption (or (not x30878) x7107)
+:assumption (or (not x8961) x5472)
+:assumption (or (not x3923) x14964 x6307 (not x20901))
+:assumption (or x21921 x22111)
+:assumption (or (not x23244) x14217 x964)
+:assumption (or (not x25580) x20858)
+:assumption (or (not x13363) (not x25391))
+:assumption (or x15139 x6127)
+:assumption (or (not x25603) x30700)
+:assumption (or (not x20785) (not x17197))
+:assumption (or x13956 x24352 (not x20794))
+:assumption (or (not x14874) (not x3435) (not x8963))
+:assumption (or x26670 x16606)
+:assumption (or x264 x21309)
+:assumption (or (not x18859) (not x17221))
+:assumption (or (not x5111) (not x27646))
+:assumption (or (not x20376) (not x12401) (not x14696))
+:assumption (or x18594 x19119)
+:assumption (or (not x21901) x6338)
+:assumption (or (not x11900) (not x11951) x14839 (not x31904))
+:assumption (or x14914 x8002)
+:assumption (or (not x12043) (not x25394))
+:assumption (or x28644 (not x18566) x11300)
+:assumption (or x9131 (not x24776))
+:assumption (or x30646 x9749)
+:assumption (or (not x19136) (not x23397))
+:assumption (or (not x7802) x22300)
+:assumption (or x4325 x18461)
+:assumption (or x2044 x13363 (not x30113) x26086)
+:assumption (or (not x4443) (not x17523))
+:assumption (or (not x11456) (not x15399))
+:assumption (or x827 x15670 x21937)
+:assumption (or (not x5775) (not x20582))
+:assumption (or x30954 x16918)
+:assumption (or (not x13033) x470)
+:assumption (or x25606 x5456 (not x12397))
+:assumption (or (not x7181) x3441)
+:assumption (or (not x3001) (not x16510) (not x21815) x28242 x28324)
+:assumption (or (not x14578) (not x13286))
+:assumption (or (not x1557) x16505)
+:assumption (or x30682 x9681)
+:assumption (or x9301 (not x13290))
+:assumption (or x964 x7960)
+:assumption (or x11375 (not x29776))
+:assumption (or (not x6036) (not x6116))
+:assumption (or x23744 (not x9531))
+:assumption (or x22472 x20479)
+:assumption (or (not x26647) x21298 (not x29551) (not x12756))
+:assumption (or (not x3978) (not x13576))
+:assumption (or x10160 x24874)
+:assumption (or (not x30439) (not x10843))
+:assumption (or (not x10053) x21561 x17285)
+:assumption (or x21692 x18369)
+:assumption (or (not x13638) x29472)
+:assumption (or x25892 x22927)
+:assumption (or (not x26123) x26783)
+:assumption (or (not x21456) (not x5217))
+:assumption (or x23244 x9460 x12854)
+:assumption (or (not x26684) (not x417) x15536 x1930 x18792 x25756 (not x7896) x3153 x13169)
+:assumption (or x23244 (not x20679))
+:assumption (or x7507 x2289)
+:assumption (or (not x27614) x821)
+:assumption (or x14726 (not x15564))
+:assumption (or x22140 x27769)
+:assumption (or (not x31363) (not x2471) x22328 (not x5730) x21443 x14561 x24306 x8674)
+:assumption (or (not x20512) x2548 x7474 (not x21160) x21982 (not x8961) (not x25877) x10869)
+:assumption (or x20827 (not x2452))
+:assumption (or (not x18582) x8581)
+:assumption (or (not x16736) (not x30633))
+:assumption (or x1600 (not x13576))
+:assumption (or (not x11192) (not x17715))
+:assumption (or x29709 (not x4155))
+:assumption (or x26631 (not x22722))
+:assumption (or (not x11875) x17104)
+:assumption (or x31459 x27969)
+:assumption (or (not x3211) (not x15799))
+:assumption (or x13077 (not x5424))
+:assumption (or x24836 x12381 (not x24683) x29247)
+:assumption (or (not x11811) x24761)
+:assumption (or (not x31064) (not x9585))
+:assumption (or (not x19097) (not x20658))
+:assumption (or (not x28073) (not x26392))
+:assumption (or (not x20223) x4467)
+:assumption (or (not x23890) (not x1582))
+:assumption (or (not x18216) (not x5660))
+:assumption (or (not x20209) x12333)
+:assumption (or (not x20087) (not x14321))
+:assumption (or (not x29054) (not x19661))
+:assumption (or x9690 x2022)
+:assumption (or (not x9585) x26729)
+:assumption (or x11404 x24501)
+:assumption (or x2197 x9778)
+:assumption (or (not x29937) (not x15023))
+:assumption (or x26897 x1713)
+:assumption (or (not x885) x8208)
+:assumption (or (not x18859) x4588)
+:assumption (or (not x2199) x24722)
+:assumption (or x27391 (not x20780))
+:assumption (or (not x12679) x14695 (not x23811) (not x27047) (not x27630))
+:assumption (or (not x23654) (not x1853))
+:assumption (or (not x7198) (not x19270) x25516)
+:assumption (or (not x19552) x14384)
+:assumption (or (not x27681) x18930)
+:assumption (or x20916 (not x4906))
+:assumption (or (not x16510) (not x14182))
+:assumption (or (not x21604) x31770 (not x67) (not x7047) (not x14955) x30856)
+:assumption (or x28651 x15254)
+:assumption (or x12577 x13265 x65 (not x6676) x3692)
+:assumption (or (not x22118) x9972)
+:assumption (or (not x19851) x1393)
+:assumption (or x736 (not x1565))
+:assumption (or x17247 (not x30543))
+:assumption (or x25979 (not x30642))
+:assumption (or (not x26395) (not x13956) x3516)
+:assumption (or (not x13683) (not x31760))
+:assumption (or (not x30113) x6916)
+:assumption (or x26283 (not x19359))
+:assumption (or x29828 x23244)
+:assumption (or (not x11962) (not x9200))
+:assumption (or (not x12051) x28999)
+:assumption (or x30012 x17216)
+:assumption (or x24018 x11377)
+:assumption (or (not x23331) (not x4968))
+:assumption (or (not x119) (not x13036) x12862)
+:assumption (or (not x25585) x9904)
+:assumption (or x29414 x9444)
+:assumption (or x19645 x1939)
+:assumption (or (not x31878) (not x30292) (not x28379) x26797)
+:assumption (or x13993 x18679)
+:assumption (or (not x25355) x9500 x1064 (not x23956) (not x11043))
+:assumption (or x1866 (not x16141))
+:assumption (or x25539 x8078)
+:assumption (or (not x22037) (not x31147))
+:assumption (or x18244 x8877)
+:assumption (or (not x15918) (not x26006))
+:assumption (or x405 (not x17909))
+:assumption (or x23244 (not x31411))
+:assumption (or (not x4988) (not x513))
+:assumption (or (not x11637) (not x4733))
+:assumption (or x4058 x10345)
+:assumption (or (not x6759) x16448)
+:assumption (or x19233 x2940)
+:assumption (or x26523 (not x18555))
+:assumption (or (not x24677) x29770)
+:assumption (or x13524 x7537)
+:assumption (or x31392 (not x22806))
+:assumption (or (not x26536) (not x10639))
+:assumption (or (not x3831) x1513)
+:assumption (or (not x11980) (not x11089))
+:assumption (or x17986 (not x12889))
+:assumption (or x12352 x4026)
+:assumption (or x25328 x26741)
+:assumption (or x29442 x16982)
+:assumption (or x28705 (not x26050))
+:assumption (or x26897 x23623)
+:assumption (or (not x16648) (not x19889) x29077 (not x6208))
+:assumption (or (not x4830) (not x23444))
+:assumption (or x19197 x19797 x26878 x11531 (not x31440))
+:assumption (or (not x7454) (not x22017))
+:assumption (or (not x10665) x31160)
+:assumption (or x5818 x963 x15876 x23308 x2108 (not x7532) (not x10075))
+:assumption (or (not x12783) (not x2303) x6528 (not x1616) x16185)
+:assumption (or (not x25162) x12472)
+:assumption (or x23835 (not x5839) x13622)
+:assumption (or (not x28533) x25366)
+:assumption (or x10051 x7043)
+:assumption (or x22722 x19238)
+:assumption (or (not x31067) (not x30362) x28014 x6442)
+:assumption (or x9365 (not x27063))
+:assumption (or x5028 x14634)
+:assumption (or (not x16122) x5451 x31829)
+:assumption (or x13956 x19309)
+:assumption (or (not x16884) x26432 x8660 x25366)
+:assumption (or x12162 x8008)
+:assumption (or (not x19347) (not x31090) x14321 x18584)
+:assumption (or x18844 (not x21057))
+:assumption (or x5481 x2186 x21053)
+:assumption (or x10271 (not x30515))
+:assumption (or (not x17364) (not x560))
+:assumption (or x7794 (not x23932))
+:assumption (or x1475 x4386)
+:assumption (or x30678 x6568)
+:assumption (or (not x11711) x4731)
+:assumption (or (not x31762) x30894)
+:assumption (or x26990 x17086)
+:assumption (or x5594 x3236)
+:assumption (or (not x26096) x15197)
+:assumption (or x30002 x5119)
+:assumption (or x19151 (not x6395))
+:assumption (or x29471 x21574)
+:assumption (or (not x12297) x16392 (not x11800) (not x21335) x9079 (not x30987))
+:assumption (or (not x10188) x21355)
+:assumption (or (not x8602) (not x24953))
+:assumption (or (not x5820) (not x6467))
+:assumption (or (not x16801) (not x21495))
+:assumption (or x14203 (not x15687))
+:assumption (or x3043 (not x9252))
+:assumption (or (not x6177) x15636)
+:assumption (or x29543 (not x4432))
+:assumption (or x6519 x27845)
+:assumption (or (not x5498) (not x22398))
+:assumption (or (not x16825) (not x21643))
+:assumption (or x14784 (not x3578))
+:assumption (or x7649 x1901 x31517 x29458 (not x7543))
+:assumption (or (not x9095) (not x21440))
+:assumption (or x31571 (not x16455))
+:assumption (or x27047 (not x14695))
+:assumption (or (not x21484) x27484)
+:assumption (or (not x28245) x10587)
+:assumption (or x30335 x9376 (not x23244))
+:assumption (or (not x5229) x20736)
+:assumption (or (not x27103) x1966)
+:assumption (or (not x26496) (not x11569))
+:assumption (or (not x23005) x18387 x10958 (not x25768) (not x28022))
+:assumption (or x6925 (not x10172))
+:assumption (or (not x28760) x8819 (not x20039))
+:assumption (or x21298 x30481)
+:assumption (or x11094 (not x15254))
+:assumption (or x1164 x20113)
+:assumption (or x11610 x17094)
+:assumption (or x14678 x12269)
+:assumption (or (not x21346) (not x26699))
+:assumption (or x356 x3854)
+:assumption (or x9746 (not x30954))
+:assumption (or (not x11132) (not x29438))
+:assumption (or x1286 (not x9480))
+:assumption (or (not x4259) x13030 x14602 (not x15649) x24228)
+:assumption (or x23749 (not x24009))
+:assumption (or (not x19085) (not x17578))
+:assumption (or x5236 (not x28328))
+:assumption (or (not x13407) x6289 x20070)
+:assumption (or (not x31652) x30440 (not x14121) (not x15369))
+:assumption (or x8715 x22855)
+:assumption (or x17225 x11076)
+:assumption (or x13106 (not x1841))
+:assumption (or x3788 (not x23277))
+:assumption (or (not x8339) (not x27562) (not x27884))
+:assumption (or (not x21714) (not x2107))
+:assumption (or x20183 (not x5695))
+:assumption (or (not x19255) (not x5028))
+:assumption (or (not x26247) x10072)
+:assumption (or (not x19119) x311)
+:assumption (or x9129 (not x7346))
+:assumption (or x4240 (not x29365))
+:assumption (or x21607 (not x1676))
+:assumption (or x577 x22959)
+:assumption (or x6521 (not x14789))
+:assumption (or x12782 (not x22306))
+:assumption (or (not x17932) (not x12347) x21298 (not x31782))
+:assumption (or x22650 x26674)
+:assumption (or (not x12658) (not x9293))
+:assumption (or x26795 x8006)
+:assumption (or (not x28937) (not x5512))
+:assumption (or (not x21616) (not x15311))
+:assumption (or (not x29389) (not x133))
+:assumption (or (not x29602) x1167)
+:assumption (or x13956 (not x31146))
+:assumption (or (not x5383) x11273)
+:assumption (or (not x2278) x30383)
+:assumption (or x11559 x18670)
+:assumption (or (not x16950) (not x6125))
+:assumption (or x15493 (not x20209))
+:assumption (or (not x18370) x19533)
+:assumption (or (not x30071) (not x7946))
+:assumption (or x7093 x828 x5665)
+:assumption (or (not x12322) (not x9870) x18983 (not x8218) (not x14920) (not x28912) (not x31406) x29381)
+:assumption (or x21026 (not x14112))
+:assumption (or x16972 (not x17445))
+:assumption (or (not x18920) x5112)
+:assumption (or (not x20658) x18908)
+:assumption (or (not x8002) (not x21048))
+:assumption (or (not x23558) (not x28369))
+:assumption (or (not x5861) (not x25882))
+:assumption (or (not x8680) (not x114))
+:assumption (or (not x25659) (not x9315))
+:assumption (or x23902 (not x2263))
+:assumption (or (not x8961) (not x7354) x23366 x5886)
+:assumption (or (not x11279) (not x18391))
+:assumption (or (not x7504) x12486)
+:assumption (or (not x13730) (not x18825))
+:assumption (or x19929 x3063)
+:assumption (or (not x27303) x16849)
+:assumption (or (not x18387) x7067)
+:assumption (or x26505 x1188)
+:assumption (or (not x2829) x1268)
+:assumption (or x6898 (not x20315))
+:assumption (or (not x29738) x21727)
+:assumption (or x17518 (not x18380))
+:assumption (or x20589 x20226)
+:assumption (or x5064 (not x13922) (not x7312) (not x25342) (not x29606))
+:assumption (or x4437 (not x28152))
+:assumption (or x5551 (not x11978))
+:assumption (or x8658 x18525 (not x28316))
+:assumption (or x11281 x26153)
+:assumption (or (not x25731) (not x18333))
+:assumption (or (not x22795) (not x27601))
+:assumption (or (not x14531) (not x23484))
+:assumption (or (not x17753) (not x22))
+:assumption (or x13297 x14687 x2137)
+:assumption (or (not x6068) x11681)
+:assumption (or x11604 x18698)
+:assumption (or x9008 (not x16128))
+:assumption (or (not x13198) x24122)
+:assumption (or x8572 x22272 (not x11094) (not x6674) x15254)
+:assumption (or x1622 x25803)
+:assumption (or x27520 (not x958))
+:assumption (or (not x6116) x12382)
+:assumption (or (not x94) (not x10764) (not x22889) x2451 x23544 x10317 x10167 (not x22575) (not x6154) (not x22390))
+:assumption (or x19154 (not x31190))
+:assumption (or x8498 (not x17558))
+:assumption (or (not x30350) (not x22117))
+:assumption (or x16452 (not x20735))
+:assumption (or x27560 x23073 x26512)
+:assumption (or x8282 (not x7835))
+:assumption (or x3505 (not x11940))
+:assumption (or (not x4615) (not x25845))
+:assumption (or (not x4559) (not x27364))
+:assumption (or (not x6000) x30359)
+:assumption (or (not x5528) (not x9008) x5249 (not x30444) x9961)
+:assumption (or x24428 (not x9366))
+:assumption (or (not x13027) x9025)
+:assumption (or x30655 x15197 x18296 (not x22536) x24769)
+:assumption (or x29395 (not x29973) x24100 x18480)
+:assumption (or (not x16474) (not x28452))
+:assumption (or x8964 x1393)
+:assumption (or (not x18859) (not x6081) x11353)
+:assumption (or x1393 x8699)
+:assumption (or (not x10) (not x21573))
+:assumption (or (not x20176) (not x23550))
+:assumption (or (not x6886) (not x2507))
+:assumption (or (not x2225) (not x682))
+:assumption (or x6509 x7225)
+:assumption (or x17265 x7084)
+:assumption (or (not x23378) x220)
+:assumption (or x28912 (not x19178))
+:assumption (or (not x7012) x30988)
+:assumption (or x28464 x8154)
+:assumption (or (not x3645) (not x13429))
+:assumption (or (not x15340) (not x8766))
+:assumption (or (not x22015) (not x19317))
+:assumption (or x14794 x24199)
+:assumption (or x5826 (not x23123) (not x8673) x6188)
+:assumption (or x13610 (not x15181))
+:assumption (or (not x28785) x27416)
+:assumption (or x16892 (not x7970))
+:assumption (or (not x24551) (not x29088))
+:assumption (or x22895 x17087)
+:assumption (or x4396 x23476)
+:assumption (or (not x27489) (not x21441) (not x21298))
+:assumption (or x15861 (not x14206) (not x7526) x9147)
+:assumption (or (not x31450) x17973)
+:assumption (or (not x28230) x30659)
+:assumption (or x11158 (not x30637))
+:assumption (or (not x16674) (not x16582))
+:assumption (or x31895 x20566)
+:assumption (or (not x6020) x12897)
+:assumption (or x29942 (not x2995))
+:assumption (or (not x27580) (not x8408))
+:assumption (or x8230 (not x15436))
+:assumption (or (not x18369) x11489 x8002 x13956 x23244 x2990)
+:assumption (or x23562 x23606)
+:assumption (or x22207 x18594)
+:assumption (or (not x7537) (not x14300))
+:assumption (or x827 x10813)
+:assumption (or x19634 x7126)
+:assumption (or (not x15155) x1739)
+:assumption (or x11613 (not x22388))
+:assumption (or x30470 (not x9202))
+:assumption (or (not x25681) x2930)
+:assumption (or x28484 (not x20949) x29771 (not x12045))
+:assumption (or x8013 x25941)
+:assumption (or (not x26042) (not x9091))
+:assumption (or (not x15292) (not x22136))
+:assumption (or (not x16682) (not x1704))
+:assumption (or x22322 x31118)
+:assumption (or x16228 (not x15537))
+:assumption (or (not x9008) (not x20042) x2617 x9790 (not x5528))
+:assumption (or (not x8731) x8587)
+:assumption (or x18653 x26897)
+:assumption (or (not x805) (not x20550) (not x23847) (not x918) x25659)
+:assumption (or x19356 x28649)
+:assumption (or x7286 x18667)
+:assumption (or (not x22840) (not x4684))
+:assumption (or x21915 x23911 (not x25459) x16475 (not x31931))
+:assumption (or (not x17439) x13660)
+:assumption (or (not x21711) (not x16609) (not x30779) (not x29863) (not x31434))
+:assumption (or (not x13399) (not x30196))
+:assumption (or x31126 x3837)
+:assumption (or x7202 (not x31378))
+:assumption (or (not x30502) (not x28183))
+:assumption (or (not x11038) x16777)
+:assumption (or (not x31432) x19428)
+:assumption (or (not x9008) x27504)
+:assumption (or x3424 (not x25001) (not x22029) x2990)
+:assumption (or (not x5279) x13234)
+:assumption (or (not x7216) (not x5528))
+:assumption (or x27262 (not x28277) x5715 x10972 (not x22098))
+:assumption (or (not x20646) (not x30557) x3465 (not x14435))
+:assumption (or (not x19134) (not x5394))
+:assumption (or x31340 (not x19169))
+:assumption (or x19037 (not x28965))
+:assumption (or (not x22531) (not x2130))
+:assumption (or x1331 x28163)
+:assumption (or (not x19666) x22295 (not x28265) x6203)
+:assumption (or (not x25008) (not x21541))
+:assumption (or x15680 x12977)
+:assumption (or (not x20253) (not x21097))
+:assumption (or (not x24482) (not x2138) x28967 x12967 (not x8126) x5509 x6911)
+:assumption (or x26831 (not x22025))
+:assumption (or x649 x1595 (not x28314) (not x27951) x24148)
+:assumption (or (not x8880) x23399)
+:assumption (or x22324 x28292)
+:assumption (or (not x9008) (not x977) (not x5528) (not x8724) x27359)
+:assumption (or x3968 (not x12218))
+:assumption (or (not x8837) x3687)
+:assumption (or (not x24548) x9531 (not x8297) x1547)
+:assumption (or x4493 x17253)
+:assumption (or (not x1621) x22786)
+:assumption (or x22794 x4804)
+:assumption (or (not x2975) (not x31429))
+:assumption (or x8001 x4587)
+:assumption (or x26483 (not x2488) x11330 x9115 x13487 (not x7064))
+:assumption (or (not x6898) (not x29915))
+:assumption (or x15172 x26584)
+:assumption (or x13637 x11129)
+:assumption (or (not x9030) (not x28018))
+:assumption (or (not x19392) (not x31486))
+:assumption (or x28912 x29649 x1155)
+:assumption (or (not x719) x20186)
+:assumption (or x6993 x28674)
+:assumption (or (not x26732) x23559)
+:assumption (or x21466 (not x17794))
+:assumption (or (not x5510) x6377)
+:assumption (or x6661 (not x16197))
+:assumption (or x16510 (not x743))
+:assumption (or x22756 (not x31204))
+:assumption (or (not x3128) (not x3675))
+:assumption (or x11273 x22855 x22963)
+:assumption (or (not x13092) (not x23411))
+:assumption (or x7276 (not x4352))
+:assumption (or (not x27933) (not x5808))
+:assumption (or (not x1969) x31210 (not x15659) x13208)
+:assumption (or (not x7358) (not x25258))
+:assumption (or (not x22816) (not x21240))
+:assumption (or (not x25376) (not x5956))
+:assumption (or (not x8602) (not x30955))
+:assumption (or (not x17107) (not x15154))
+:assumption (or x29587 x16693 x27825 (not x30104))
+:assumption (or (not x21989) x7260)
+:assumption (or (not x11612) x15291)
+:assumption (or (not x5717) x28753)
+:assumption (or x4578 (not x4123))
+:assumption (or (not x22174) (not x26290))
+:assumption (or (not x16143) x18322)
+:assumption (or x23851 x2697)
+:assumption (or x27484 (not x6330))
+:assumption (or x6467 x8757 (not x23753) x22501 (not x21411) (not x16553))
+:assumption (or (not x3889) x9664)
+:assumption (or x2776 x3004)
+:assumption (or (not x16902) x16510 x16374)
+:assumption (or (not x3140) x31651)
+:assumption (or (not x11223) x8382)
+:assumption (or (not x31828) x4318 x24756)
+:assumption (or x17917 (not x13805))
+:assumption (or (not x20240) x3879)
+:assumption (or (not x11349) (not x24510) (not x15567) (not x29442) (not x4965))
+:assumption (or (not x22548) x15923 (not x21958))
+:assumption (or x8006 (not x14427))
+:assumption (or x23615 (not x7814))
+:assumption (or (not x28933) x21594)
+:assumption (or (not x10777) (not x23354))
+:assumption (or x30553 (not x5898) (not x31373) x16907)
+:assumption (or x7141 (not x12988))
+:assumption (or x5411 (not x11707))
+:assumption (or (not x29855) x23235)
+:assumption (or x8300 (not x31362))
+:assumption (or x8002 x24340 x24103)
+:assumption (or x31436 x19582)
+:assumption (or (not x3510) x10562)
+:assumption (or x29960 (not x24127))
+:assumption (or x13134 (not x13122) (not x14627) (not x28391) x10607 x13331 x2211)
+:assumption (or (not x8248) x28382)
+:assumption (or x25366 (not x18034) x8961 (not x4709))
+:assumption (or (not x26355) x12828)
+:assumption (or (not x25334) x21722 (not x252))
+:assumption (or (not x22951) (not x28973) (not x288))
+:assumption (or (not x5874) x23002)
+:assumption (or x29215 (not x1649))
+:assumption (or x22992 (not x21023))
+:assumption (or (not x18076) x30930)
+:assumption (or x21760 (not x31587))
+:assumption (or x17075 (not x29200) (not x22319) x8870 x24606)
+:assumption (or (not x25365) (not x28428))
+:assumption (or x7367 x26631)
+:assumption (or (not x9008) (not x15290) (not x1966))
+:assumption (or (not x10878) x9008 (not x11719))
+:assumption (or x13969 (not x8181))
+:assumption (or x25051 (not x22495))
+:assumption (or (not x1387) (not x24761))
+:assumption (or x2233 x5776)
+:assumption (or (not x12266) x10874)
+:assumption (or (not x29180) x12946)
+:assumption (or x15929 x17157)
+:assumption (or (not x16302) (not x25742))
+:assumption (or (not x7117) (not x11282) x3435)
+:assumption (or x7719 x21219)
+:assumption (or x30613 (not x30392))
+:assumption (or x3503 (not x11739))
+:assumption (or (not x29063) x14623)
+:assumption (or x16648 x1452)
+:assumption (or x6140 x14340)
+:assumption (or x17697 (not x24759))
+:assumption (or x21665 (not x18558))
+:assumption (or (not x22511) x18388)
+:assumption (or x15369 (not x20329))
+:assumption (or (not x29790) (not x28328))
+:assumption (or (not x20300) x13266)
+:assumption (or x17381 x13532)
+:assumption (or (not x5587) (not x6843))
+:assumption (or x10874 x25107)
+:assumption (or x25937 x31784)
+:assumption (or x14557 x21605)
+:assumption (or x9 (not x6347))
+:assumption (or (not x18090) (not x19992) (not x12176))
+:assumption (or (not x26810) x22140)
+:assumption (or x27686 (not x20557))
+:assumption (or (not x9913) x17480)
+:assumption (or x28912 (not x6754) x29649 x19902)
+:assumption (or x3780 x21688)
+:assumption (or x17858 x21298)
+:assumption (or (not x13576) x25022)
+:assumption (or x20393 (not x24597))
+:assumption (or x25787 x18700)
+:assumption (or (not x6969) (not x17760))
+:assumption (or (not x27967) (not x11773))
+:assumption (or x18479 (not x18455))
+:assumption (or x10995 x20293)
+:assumption (or (not x13407) x18190)
+:assumption (or x19728 (not x12682))
+:assumption (or (not x19992) (not x21403))
+:assumption (or (not x3180) x3094 x28063 x2249 (not x6015))
+:assumption (or (not x22419) x7589)
+:assumption (or x17162 x10275)
+:assumption (or (not x2358) x17058)
+:assumption (or x5080 (not x10460))
+:assumption (or (not x2906) (not x6118))
+:assumption (or (not x19310) (not x21538))
+:assumption (or x28943 x26006)
+:assumption (or (not x5686) (not x26473))
+:assumption (or x11732 (not x13576))
+:assumption (or (not x18293) x10970)
+:assumption (or (not x19728) (not x24216))
+:assumption (or x2868 (not x8811) (not x25911) x29452)
+:assumption (or (not x17706) (not x24398))
+:assumption (or x25494 x18519 (not x28754) (not x2976) x20353 (not x23969))
+:assumption (or x15712 (not x1621))
+:assumption (or (not x21255) (not x24125) x1582)
+:assumption (or (not x4290) (not x21691))
+:assumption (or (not x13063) (not x12075))
+:assumption (or x6001 x2118)
+:assumption (or x5735 (not x8728))
+:assumption (or x12435 x20560)
+:assumption (or x5745 (not x26789))
+:assumption (or (not x22192) (not x4831) x20483 x14391 (not x13753))
+:assumption (or (not x17746) x3574)
+:assumption (or x14578 x31068)
+:assumption (or (not x24601) x3568)
+:assumption (or (not x30677) (not x16849))
+:assumption (or (not x16304) x4129)
+:assumption (or (not x5506) x10909)
+:assumption (or (not x13731) x9509)
+:assumption (or x4049 (not x15479))
+:assumption (or (not x21836) (not x13376))
+:assumption (or x28632 x17090)
+:assumption (or (not x27682) (not x21518))
+:assumption (or x13427 (not x4334))
+:assumption (or (not x3494) (not x2717))
+:assumption (or x12544 (not x3279))
+:assumption (or x7931 x15973)
+:assumption (or (not x2781) x17136)
+:assumption (or (not x7228) x31292)
+:assumption (or (not x25142) (not x24155))
+:assumption (or x9790 x23456)
+:assumption (or (not x19428) x2820)
+:assumption (or x27183 (not x7958) (not x63) (not x27058) (not x12458))
+:assumption (or x1601 x24602)
+:assumption (or (not x14411) x11224)
+:assumption (or (not x12094) (not x29926))
+:assumption (or x12739 (not x7322) (not x8365))
+:assumption (or (not x12537) (not x2721))
+:assumption (or (not x15222) x9622 x30668 (not x27214) x12962)
+:assumption (or (not x24489) (not x2072))
+:assumption (or (not x9902) x15122 (not x14069) (not x29642))
+:assumption (or (not x29014) (not x17370))
+:assumption (or (not x29312) x25529)
+:assumption (or x22963 (not x5422) (not x9666) x15034 x6635)
+:assumption (or (not x11627) x5528)
+:assumption (or x27280 (not x14992))
+:assumption (or x2500 (not x3633) (not x18974) (not x7598) x17417 (not x5199) (not x7450))
+:assumption (or (not x27636) x300)
+:assumption (or x15758 x20161)
+:assumption (or x4562 (not x11281) x6090 (not x4275) x3847)
+:assumption (or x15116 (not x26937))
+:assumption (or x4157 x8602)
+:assumption (or x9910 (not x2042))
+:assumption (or x31705 (not x10874))
+:assumption (or (not x30208) x3562 (not x30153))
+:assumption (or x10468 (not x700))
+:assumption (or (not x28199) (not x9376))
+:assumption (or x5465 x26361 x18386 x8496 x21004 (not x9571))
+:assumption (or x19572 (not x28345) x19437 x13435 (not x29420) (not x19303))
+:assumption (or (not x6854) (not x18134))
+:assumption (or (not x27280) (not x17169) (not x2899) (not x22963))
+:assumption (or (not x10874) (not x17315))
+:assumption (or (not x29023) x15174 (not x16822) x10238 x3867)
+:assumption (or (not x818) (not x19161))
+:assumption (or (not x17592) x15899)
+:assumption (or (not x17326) x5886 (not x9195) x8961)
+:assumption (or (not x25453) (not x28786))
+:assumption (or (not x21432) (not x15248))
+:assumption (or x23370 (not x20523))
+:assumption (or (not x7269) x17109 x17512)
+:assumption (or (not x1698) (not x5854))
+:assumption (or x25668 (not x25659))
+:assumption (or (not x23390) x440)
+:assumption (or x23517 x29442)
+:assumption (or x25448 (not x22855))
+:assumption (or x11047 (not x5005))
+:assumption (or (not x20694) (not x1770))
+:assumption (or (not x18441) x22443)
+:assumption (or (not x15604) x2433)
+:assumption (or (not x28572) (not x11181))
+:assumption (or (not x17291) x8819)
+:assumption (or x30812 (not x7316))
+:assumption (or (not x20805) (not x12408))
+:assumption (or x3001 x5138)
+:assumption (or (not x27722) (not x5394))
+:assumption (or x24283 (not x18753))
+:assumption (or (not x2506) x30599)
+:assumption (or x18360 x12795)
+:assumption (or x21796 x21880 (not x28477) x28969 (not x10369))
+:assumption (or x16997 x30138 (not x11275))
+:assumption (or x5287 x11379 (not x12091) x23984 x10816 x24768)
+:assumption (or x22936 x2918)
+:assumption (or (not x7984) (not x1324))
+:assumption (or (not x19248) x28136)
+:assumption (or (not x13148) (not x14839))
+:assumption (or (not x28727) x15227)
+:assumption (or x2498 x3204)
+:assumption (or x21557 x9777)
+:assumption (or x6905 x1721)
+:assumption (or (not x25738) x8074)
+:assumption (or x15240 (not x4825))
+:assumption (or x17216 (not x8000))
+:assumption (or x29397 x807)
+:assumption (or (not x20138) x28214)
+:assumption (or (not x24741) (not x16248))
+:assumption (or x4822 (not x30020))
+:assumption (or (not x28927) (not x2281))
+:assumption (or (not x23244) (not x16529))
+:assumption (or x9938 x4282)
+:assumption (or x1810 x11506)
+:assumption (or (not x17309) (not x5597))
+:assumption (or x27689 (not x20523))
+:assumption (or x21815 x4587)
+:assumption (or x5997 x21124)
+:assumption (or (not x23244) (not x432))
+:assumption (or x2563 (not x24228))
+:assumption (or x30538 x13527)
+:assumption (or x25677 (not x9402))
+:assumption (or x3578 (not x21026) x26955)
+:assumption (or x1095 (not x3652))
+:assumption (or x6346 x17118)
+:assumption (or (not x5287) (not x5647))
+:assumption (or x22072 (not x4112))
+:assumption (or (not x1967) x21161)
+:assumption (or x9246 x23588)
+:assumption (or x4004 (not x10632))
+:assumption (or (not x26328) (not x7935))
+:assumption (or x23069 (not x9426))
+:assumption (or x28026 x24138)
+:assumption (or (not x26432) (not x326) x11748 x15911 x17758)
+:assumption (or (not x21987) x29139)
+:assumption (or (not x5866) x8425)
+:assumption (or x12506 x16380 (not x16229) x30170)
+:assumption (or (not x1458) x18143)
+:assumption (or x13297 x31900 (not x14687))
+:assumption (or x5162 (not x24190))
+:assumption (or x16708 x10037)
+:assumption (or x20827 (not x31541))
+:assumption (or (not x6501) (not x19339))
+:assumption (or x8844 (not x21996))
+:assumption (or (not x31111) x14684)
+:assumption (or (not x6826) (not x964))
+:assumption (or x24550 x23961)
+:assumption (or (not x29835) x5528)
+:assumption (or x22779 (not x31536))
+:assumption (or x5283 (not x16809))
+:assumption (or (not x15779) (not x3653))
+:assumption (or x24776 (not x9131))
+:assumption (or x15796 (not x13156))
+:assumption (or x22766 (not x29852))
+:assumption (or x16523 (not x25382))
+:assumption (or (not x17025) x13576)
+:assumption (or x5932 x26972)
+:assumption (or (not x11491) x21894)
+:assumption (or (not x22049) x2529)
+:assumption (or x17359 x11281 x17136 (not x21651))
+:assumption (or (not x14757) x23814)
+:assumption (or (not x115) x18733)
+:assumption (or (not x21085) x28441 x7961 (not x21453) x6214 x23995 x30183 x5365 (not x3667) (not x3859) x23051 x20224)
+:assumption (or (not x5273) x20418)
+:assumption (or x23395 (not x16118))
+:assumption (or (not x27907) x21413)
+:assumption (or (not x4709) (not x11281) x25366 (not x19396))
+:assumption (or (not x16568) (not x5512))
+:assumption (or x13652 (not x25689))
+:assumption (or (not x28158) x21506)
+:assumption (or x24200 x30052)
+:assumption (or (not x28982) x3330)
+:assumption (or (not x15620) (not x10755) (not x14970))
+:assumption (or x19848 x13197)
+:assumption (or x27944 (not x17044))
+:assumption (or x13076 (not x230))
+:assumption (or x9714 (not x20550))
+:assumption (or (not x16800) (not x20765))
+:assumption (or (not x18473) x17359)
+:assumption (or (not x26805) (not x27616))
+:assumption (or (not x5558) x20647)
+:assumption (or x4572 (not x11694))
+:assumption (or (not x24850) x16469)
+:assumption (or x1545 x14887)
+:assumption (or (not x14539) x29312)
+:assumption (or (not x23244) x21346)
+:assumption (or x15719 (not x3690) (not x21076) x18990 (not x30794) x3848)
+:assumption (or x3507 x22105)
+:assumption (or (not x24308) (not x16939))
+:assumption (or x16595 (not x5599))
+:assumption (or (not x28370) x3120)
+:assumption (or x16846 (not x5311))
+:assumption (or x23485 x30628)
+:assumption (or x15795 (not x6574))
+:assumption (or x1703 (not x16982) (not x29442))
+:assumption (or x27 x12311)
+:assumption (or (not x30382) x20242)
+:assumption (or x27582 (not x325))
+:assumption (or x27309 (not x24337))
+:assumption (or (not x8968) x12330)
+:assumption (or x4050 (not x9017) x31924 (not x3630) (not x30820))
+:assumption (or x827 (not x20348))
+:assumption (or (not x30042) x22301 (not x6353) x4167 (not x9495))
+:assumption (or (not x12071) (not x18594))
+:assumption (or x15632 (not x22649) x21405 (not x23244) (not x118) x7398)
+:assumption (or x7642 (not x10527) x23119 x1748 x28122)
+:assumption (or (not x7269) (not x4660))
+:assumption (or x3847 (not x5002) x24944 x711)
+:assumption (or (not x21586) x29980)
+:assumption (or (not x23408) (not x17514) x17052)
+:assumption (or (not x22482) (not x29877))
+:assumption (or x27602 x9337)
+:assumption (or (not x24254) x4894)
+:assumption (or x20741 x27827)
+:assumption (or x14366 (not x18422))
+:assumption (or x22600 (not x23682))
+:assumption (or (not x6453) x10756)
+:assumption (or (not x23714) x30141)
+:assumption (or x6746 (not x4883))
+:assumption (or (not x13718) x6886)
+:assumption (or (not x5714) (not x18336))
+:assumption (or (not x30906) (not x20167))
+:assumption (or x23226 (not x26519))
+:assumption (or (not x938) (not x362))
+:assumption (or (not x30220) x14751)
+:assumption (or x26916 x29396)
+:assumption (or x1294 (not x13009))
+:assumption (or x2643 x4507)
+:assumption (or x28810 (not x14448))
+:assumption (or x16338 (not x15641))
+:assumption (or x27544 (not x12767) x3435)
+:assumption (or x13258 x3327)
+:assumption (or (not x23676) x16869)
+:assumption (or x1145 x10338)
+:assumption (or (not x31271) x28287 x10647 (not x26521))
+:assumption (or x26405 (not x25575) x30808 x4259)
+:assumption (or x13614 x26314)
+:assumption (or (not x10780) x3729)
+:assumption (or (not x14878) (not x28180))
+:assumption (or (not x1244) x29228)
+:assumption (or x19774 (not x2656))
+:assumption (or (not x15300) x23071)
+:assumption (or x27197 (not x6251))
+:assumption (or (not x13747) (not x10946) (not x22293) x9873)
+:assumption (or (not x16745) x19712)
+:assumption (or x6169 x2228)
+:assumption (or x26679 (not x4519))
+:assumption (or x29362 (not x13924))
+:assumption (or (not x2933) (not x25659))
+:assumption (or (not x21457) (not x5515))
+:assumption (or (not x8774) (not x23427))
+:assumption (or x1608 x4691)
+:assumption (or (not x28467) (not x23244))
+:assumption (or (not x21334) (not x5202))
+:assumption (or x6737 (not x19001))
+:assumption (or x9025 x20305)
+:assumption (or (not x7580) x27604)
+:assumption (or x27403 (not x17359))
+:assumption (or (not x3789) (not x24022))
+:assumption (or x1388 (not x25424))
+:assumption (or x20651 (not x31726))
+:assumption (or x20337 (not x12087))
+:assumption (or x3428 x28744)
+:assumption (or x19269 x27842)
+:assumption (or (not x6272) (not x23267))
+:assumption (or x24391 (not x22025))
+:assumption (or (not x17425) (not x28541))
+:assumption (or x9086 (not x28328))
+:assumption (or x733 x29260)
+:assumption (or x25023 x1106)
+:assumption (or x13227 x1621)
+:assumption (or (not x7659) (not x13588) x25659)
+:assumption (or (not x16374) (not x17314))
+:assumption (or (not x17264) (not x30808))
+:assumption (or x4385 (not x5999))
+:assumption (or (not x8602) x18876)
+:assumption (or (not x18722) x21360 (not x2943) x31422 x30380 (not x31397) x15616)
+:assumption (or (not x25293) (not x8518))
+:assumption (or x7103 x20857)
+:assumption (or (not x24229) (not x9531))
+:assumption (or (not x3639) (not x26432))
+:assumption (or x25376 (not x8454) (not x2871))
+:assumption (or (not x17235) (not x9531) (not x24355) x22200)
+:assumption (or x21653 (not x16266) (not x7816))
+:assumption (or x21298 x11261)
+:assumption (or (not x21285) (not x23203))
+:assumption (or x13793 x6310)
+:assumption (or x265 x18179)
+:assumption (or x3418 (not x25366))
+:assumption (or x21265 x21239)
+:assumption (or x8664 (not x27012))
+:assumption (or x23298 (not x14060))
+:assumption (or x8001 x5797)
+:assumption (or (not x23688) (not x5660))
+:assumption (or (not x23634) (not x17095))
+:assumption (or (not x8784) x1835)
+:assumption (or x16087 x12590)
+:assumption (or (not x29499) (not x14571))
+:assumption (or (not x11298) x3090)
+:assumption (or (not x8623) x18552)
+:assumption (or x5040 (not x31891))
+:assumption (or x16927 x14907)
+:assumption (or x15158 (not x18440))
+:assumption (or x15804 x10909)
+:assumption (or x24869 (not x25601))
+:assumption (or (not x22073) (not x5043))
+:assumption (or (not x4852) (not x10005))
+:assumption (or (not x4052) (not x28003))
+:assumption (or x29922 (not x4176))
+:assumption (or x17955 (not x9254))
+:assumption (or (not x13801) x19382)
+:assumption (or x21511 (not x3931))
+:assumption (or x24610 (not x6969))
+:assumption (or (not x10013) x23940)
+:assumption (or (not x27964) x5528 x1392)
+:assumption (or x846 (not x22031))
+:assumption (or x29546 (not x17043) x22255)
+:assumption (or (not x21564) (not x12452))
+:assumption (or x4988 (not x21298) (not x25235) x16904)
+:assumption (or x25786 x26793)
+:assumption (or (not x15685) x16169)
+:assumption (or x8553 x18233)
+:assumption (or x16100 x27853)
+:assumption (or x7324 (not x30299))
+:assumption (or (not x5422) x31873 (not x26264))
+:assumption (or (not x13088) x30348)
+:assumption (or x6814 (not x1262))
+:assumption (or (not x29134) (not x22212))
+:assumption (or (not x16025) x22748)
+:assumption (or x3528 x27658)
+:assumption (or x524 (not x6989))
+:assumption (or x26047 x8401)
+:assumption (or (not x3001) (not x10703))
+:assumption (or (not x28314) (not x19852))
+:assumption (or (not x10524) x9766)
+:assumption (or (not x11325) (not x15903))
+:assumption (or x2415 x24250)
+:assumption (or x20775 x15072)
+:assumption (or (not x2546) x28515)
+:assumption (or (not x11467) x26640)
+:assumption (or x23901 (not x6214))
+:assumption (or x29819 x7973)
+:assumption (or (not x20750) x13962)
+:assumption (or x2357 x9008 x25134)
+:assumption (or (not x14364) (not x26897))
+:assumption (or x6144 (not x299))
+:assumption (or (not x11693) x9327)
+:assumption (or x15499 x21861)
+:assumption (or (not x21368) x30548)
+:assumption (or (not x26180) x3380)
+:assumption (or (not x7278) (not x15907))
+:assumption (or x14445 (not x20824))
+:assumption (or x28093 (not x30494))
+:assumption (or (not x19588) x5746)
+:assumption (or (not x10614) (not x26296))
+:assumption (or x26906 x27662)
+:assumption (or x28606 (not x27977) (not x31236))
+:assumption (or x28677 x11475)
+:assumption (or (not x26029) (not x16069))
+:assumption (or (not x27924) (not x25740))
+:assumption (or x17962 x31625)
+:assumption (or (not x8220) x7900 x15786 x5367 (not x4416) x28362 x28797 x1173 x14417)
+:assumption (or x18797 (not x4669))
+:assumption (or x5443 x9181 (not x5214))
+:assumption (or x9745 x13085)
+:assumption (or x7884 x6854 (not x23980))
+:assumption (or (not x19367) x22447)
+:assumption (or (not x22973) (not x16632))
+:assumption (or x18018 x15648)
+:assumption (or x15608 x27190)
+:assumption (or x15795 (not x27942) x4062)
+:assumption (or (not x20377) (not x27056))
+:assumption (or x8002 x30661 (not x4880))
+:assumption (or (not x22844) (not x14338))
+:assumption (or (not x28033) (not x31930) x23813)
+:assumption (or x1987 (not x5528))
+:assumption (or (not x11400) x9008)
+:assumption (or (not x19255) x29442)
+:assumption (or x514 x25367)
+:assumption (or x8521 (not x6559))
+:assumption (or (not x6554) (not x24935))
+:assumption (or x29263 (not x13952))
+:assumption (or (not x12122) (not x20537))
+:assumption (or (not x29493) (not x26757))
+:assumption (or (not x15951) (not x31470))
+:assumption (or x11829 (not x6094) x5709)
+:assumption (or x4122 (not x5528))
+:assumption (or x19041 (not x27085))
+:assumption (or x20305 x2434)
+:assumption (or (not x5874) x25297)
+:assumption (or x12395 x9336)
+:assumption (or x23142 x23306 (not x4337) x18042)
+:assumption (or x18042 x5930)
+:assumption (or x5058 x23115 (not x16398) x12641)
+:assumption (or (not x10874) x28454)
+:assumption (or x29666 x21815)
+:assumption (or (not x27383) x18869)
+:assumption (or (not x31880) (not x313))
+:assumption (or x24079 (not x13978) (not x17898))
+:assumption (or (not x16510) (not x26417))
+:assumption (or x12210 (not x17599))
+:assumption (or (not x9272) x25268)
+:assumption (or (not x9106) x27747)
+:assumption (or (not x12326) x21204)
+:assumption (or x4639 x16025)
+:assumption (or x26948 x27687)
+:assumption (or x24712 x30357)
+:assumption (or (not x20075) (not x6149))
+:assumption (or x5792 (not x26575))
+:assumption (or x1974 x8010)
+:assumption (or x26587 x2945)
+:assumption (or x5912 x14455)
+:assumption (or (not x13938) (not x8602))
+:assumption (or x25308 (not x13504) x24160 x26886 x12012)
+:assumption (or x16439 x2380)
+:assumption (or (not x7468) x25965 (not x2522) (not x23439) x26863 x2841)
+:assumption (or x7226 (not x3671))
+:assumption (or (not x11251) (not x10084))
+:assumption (or x25349 (not x9077))
+:assumption (or (not x25609) x23342)
+:assumption (or x31134 x25884)
+:assumption (or (not x30751) x16745 x10770 (not x30086))
+:assumption (or (not x18166) x4151)
+:assumption (or (not x31342) x15123)
+:assumption (or (not x15361) (not x24869) x801 (not x14521))
+:assumption (or x29132 x27469 x14067 (not x14469) x17342)
+:assumption (or (not x11758) x29824 (not x14124) (not x1341))
+:assumption (or x5982 (not x25659))
+:assumption (or (not x27366) x11374 x31438 x13910 x7253 (not x10435) (not x12846) x11709)
+:assumption (or (not x28230) x15416)
+:assumption (or (not x8210) (not x28436))
+:assumption (or x25370 (not x18631))
+:assumption (or x3864 x7010)
+:assumption (or (not x18592) x8771)
+:assumption (or (not x3332) x5357)
+:assumption (or x25957 (not x31377) (not x12546) x16181 x21026)
+:assumption (or (not x27911) x5158)
+:assumption (or x23342 x9817)
+:assumption (or (not x8738) x5126)
+:assumption (or (not x71) x13956)
+:assumption (or (not x9557) x3249)
+:assumption (or x20797 (not x28068))
+:assumption (or (not x2455) (not x20497))
+:assumption (or x5528 x21679)
+:assumption (or x5606 x16025 x11940)
+:assumption (or x28332 (not x23244))
+:assumption (or (not x29115) (not x27833))
+:assumption (or (not x15809) (not x31353))
+:assumption (or x13437 (not x31074))
+:assumption (or x16581 x6295)
+:assumption (or x1641 x9345)
+:assumption (or x13237 (not x1822))
+:assumption (or (not x1393) x11902)
+:assumption (or x4759 (not x5206))
+:assumption (or x6233 (not x7669))
+:assumption (or (not x21298) (not x10904) (not x22821) x7182)
+:assumption (or (not x17045) x20631)
+:assumption (or (not x21298) (not x10323) (not x27578))
+:assumption (or (not x27794) (not x17010) (not x31826) (not x3965) (not x15755))
+:assumption (or x3857 x1149)
+:assumption (or x3678 x26260)
+:assumption (or x28030 (not x30583) (not x27034) x14156 x14158)
+:assumption (or (not x22462) x12455)
+:assumption (or x21629 (not x19883))
+:assumption (or x21163 (not x20003))
+:assumption (or x13976 x1438)
+:assumption (or x30970 (not x7852))
+:assumption (or x24458 x5528)
+:assumption (or x5211 (not x16849))
+:assumption (or x26915 (not x22970))
+:assumption (or x14277 x12955)
+:assumption (or (not x10170) (not x21004))
+:assumption (or (not x9008) (not x20806))
+:assumption (or x3884 (not x6442))
+:assumption (or x10308 (not x17952))
+:assumption (or (not x19751) x21165)
+:assumption (or (not x12562) x31307)
+:assumption (or (not x20442) x3189)
+:assumption (or x17534 (not x16795) (not x10299))
+:assumption (or x30721 x185)
+:assumption (or x6865 x15826)
+:assumption (or x4504 (not x9062))
+:assumption (or x29470 x19428 (not x30954) x12324)
+:assumption (or (not x21688) x1051)
+:assumption (or (not x29633) (not x15984))
+:assumption (or (not x11265) (not x24345))
+:assumption (or x16902 (not x16510))
+:assumption (or x17723 (not x27231))
+:assumption (or (not x17337) x19780)
+:assumption (or (not x19463) x18047)
+:assumption (or (not x27244) (not x16294))
+:assumption (or x9025 x7994)
+:assumption (or x20611 (not x5367))
+:assumption (or (not x20261) x25932 x25366)
+:assumption (or x827 x27698)
+:assumption (or (not x24685) (not x16328))
+:assumption (or (not x20834) (not x28229))
+:assumption (or x9195 x17326)
+:assumption (or x20436 x27683)
+:assumption (or x29442 (not x28178))
+:assumption (or x25629 x11590)
+:assumption (or (not x24398) x25544)
+:assumption (or x27906 (not x8196))
+:assumption (or (not x8549) (not x296) x10260 (not x2008) (not x23121))
+:assumption (or (not x29441) (not x17100))
+:assumption (or (not x13766) x20439)
+:assumption (or x17571 (not x4103))
+:assumption (or x29340 x6842)
+:assumption (or (not x18102) x1393)
+:assumption (or x29878 (not x30527))
+:assumption (or (not x11827) (not x15728) (not x23802) (not x24761))
+:assumption (or (not x2897) (not x2781))
+:assumption (or x7959 x17559)
+:assumption (or x26399 (not x28726))
+:assumption (or x12501 x28972)
+:assumption (or x15540 x26432 x26154)
+:assumption (or (not x27988) x918)
+:assumption (or (not x10531) (not x22003))
+:assumption (or x12074 x4087)
+:assumption (or (not x24237) x21640 (not x1370))
+:assumption (or (not x29376) x7745 (not x17202))
+:assumption (or (not x17109) (not x18954))
+:assumption (or x21642 x10076)
+:assumption (or x11563 x30789)
+:assumption (or (not x5350) (not x31614))
+:assumption (or x20623 x7977)
+:assumption (or x20876 (not x7518))
+:assumption (or x19183 (not x3628))
+:assumption (or x18193 x4465)
+:assumption (or x3912 (not x16648))
+:assumption (or x27265 (not x7618))
+:assumption (or (not x21654) (not x794))
+:assumption (or (not x22454) x13170)
+:assumption (or (not x14963) x608)
+:assumption (or x15102 x15136)
+:assumption (or x2714 (not x21298))
+:assumption (or (not x26833) (not x9101))
+:assumption (or (not x2434) (not x24693) (not x22730))
+:assumption (or (not x10655) (not x16340))
+:assumption (or x15259 (not x17706))
+:assumption (or x15819 (not x3176))
+:assumption (or (not x14435) (not x15834))
+:assumption (or (not x21570) (not x208))
+:assumption (or x17767 (not x2307))
+:assumption (or x19798 (not x13464))
+:assumption (or (not x725) (not x2850))
+:assumption (or (not x16504) x26733)
+:assumption (or x20896 (not x19677))
+:assumption (or (not x12867) x21549)
+:assumption (or (not x3037) (not x25277) (not x13956) (not x17832))
+:assumption (or x20276 x4197)
+:assumption (or x12445 x8002)
+:assumption (or (not x25499) (not x11266))
+:assumption (or x21298 x146)
+:assumption (or x4288 x4153 x17385 (not x14524) (not x30388))
+:assumption (or x5207 (not x18932))
+:assumption (or x21162 (not x13467))
+:assumption (or (not x16619) x8602)
+:assumption (or (not x26275) x28489)
+:assumption (or x10350 x29439)
+:assumption (or x9468 (not x29816))
+:assumption (or x14641 x25469)
+:assumption (or x16766 (not x3305))
+:assumption (or x17390 (not x22205) (not x30319) x28422 x22101 x11812 x27171 x29574)
+:assumption (or (not x31792) (not x14839))
+:assumption (or (not x8002) x18842 x29085)
+:assumption (or x3292 x27257)
+:assumption (or (not x23244) x19034 x2540)
+:assumption (or x21377 (not x16876))
+:assumption (or (not x1573) (not x7440))
+:assumption (or (not x7952) x4643)
+:assumption (or (not x24757) x18810)
+:assumption (or x14561 (not x20431) (not x2471) (not x31363) x21443 x21246 x8674 x24306)
+:assumption (or x7569 (not x22162))
+:assumption (or (not x5924) x2896)
+:assumption (or x16007 (not x5709))
+:assumption (or (not x25929) (not x3845))
+:assumption (or (not x30844) x9445)
+:assumption (or x31002 (not x22498))
+:assumption (or x4858 (not x28507))
+:assumption (or x10120 (not x30316))
+:assumption (or (not x1564) (not x29837))
+:assumption (or (not x8002) (not x21673))
+:assumption (or x15257 (not x26713))
+:assumption (or x11130 (not x21298) x9197)
+:assumption (or x6696 (not x29442) x4327 x5028)
+:assumption (or x15787 (not x4073))
+:assumption (or (not x21815) (not x23080) (not x802))
+:assumption (or (not x26193) x21292)
+:assumption (or (not x8120) x4628)
+:assumption (or (not x13785) x4478)
+:assumption (or x5249 x4232)
+:assumption (or x9158 x21242)
+:assumption (or (not x1580) x4802)
+:assumption (or (not x749) (not x31145))
+:assumption (or (not x9423) x8155)
+:assumption (or (not x20611) x6820)
+:assumption (or (not x10675) x17189)
+:assumption (or x21450 x24722 (not x10414) (not x18042))
+:assumption (or (not x455) x27422)
+:assumption (or x20606 (not x28550))
+:assumption (or (not x20026) x21678)
+:assumption (or x14982 (not x31422))
+:assumption (or (not x24756) (not x7346) x11218)
+:assumption (or (not x8801) (not x10054) x9035 x31020 (not x10267))
+:assumption (or (not x2655) (not x11131))
+:assumption (or x5094 (not x31734))
+:assumption (or x10004 x18850)
+:assumption (or x17971 (not x8071) x3565)
+:assumption (or x9132 (not x29118))
+:assumption (or x11792 x17098)
+:assumption (or (not x19033) x21034 x9531 x13576)
+:assumption (or x19019 (not x17689))
+:assumption (or x20325 x25696)
+:assumption (or (not x28284) x17851)
+:assumption (or (not x21815) (not x903))
+:assumption (or x12046 x23251 x9334 (not x27851) x5581)
+:assumption (or x19585 (not x23010))
+:assumption (or x2741 (not x29289))
+:assumption (or x14398 (not x25659))
+:assumption (or x5269 (not x27915))
+:assumption (or x22237 (not x8002))
+:assumption (or (not x1393) (not x3577))
+:assumption (or (not x6272) (not x29037))
+:assumption (or (not x28439) x21833 x4504 x25462 x30400 x21208)
+:assumption (or x1206 x6767)
+:assumption (or x2834 x24364)
+:assumption (or (not x31350) (not x6468))
+:assumption (or x19089 (not x18476))
+:assumption (or x31484 (not x16251))
+:assumption (or (not x27606) x20379 (not x24079))
+:assumption (or x1305 (not x17))
+:assumption (or x29023 (not x3867))
+:assumption (or (not x19463) (not x7128))
+:assumption (or x808 x25366 (not x15622))
+:assumption (or x6595 (not x22670))
+:assumption (or (not x509) (not x2549))
+:assumption (or (not x521) x6242)
+:assumption (or (not x20507) (not x28944))
+:assumption (or x2290 x1384)
+:assumption (or x23951 x14740)
+:assumption (or x18973 (not x5976) (not x17135))
+:assumption (or x13879 x27547)
+:assumption (or (not x3915) (not x28436))
+:assumption (or (not x5352) x28411 (not x20844))
+:assumption (or x16745 (not x13153))
+:assumption (or x30658 (not x12045))
+:assumption (or x5710 (not x24842))
+:assumption (or x9282 x13211 x28682 x16346 x16736)
+:assumption (or (not x15324) (not x12277))
+:assumption (or x3272 x16229)
+:assumption (or (not x3866) x4011 (not x19280) x24811)
+:assumption (or x29064 (not x22001))
+:assumption (or (not x5367) (not x1805) x31533)
+:assumption (or x17613 x3924 x6243 (not x8407) (not x9397) (not x10997) (not x23426) x22813 (not x19369))
+:assumption (or (not x21202) x9316)
+:assumption (or (not x12627) x5528)
+:assumption (or (not x14098) (not x29891) (not x31767))
+:assumption (or x25418 x11466)
+:assumption (or (not x15850) x1376)
+:assumption (or (not x23244) x17130)
+:assumption (or x24922 (not x29345) x31200 x19222)
+:assumption (or x8844 (not x12612))
+:assumption (or x2491 (not x9492) (not x2334))
+:assumption (or x22725 (not x14455))
+:assumption (or x29923 (not x3280))
+:assumption (or (not x19749) x20935)
+:assumption (or x24024 x5594)
+:assumption (or (not x1582) x21496 (not x6513))
+:assumption (or x27110 x6129)
+:assumption (or x7638 x8193)
+:assumption (or x29382 (not x16632))
+:assumption (or (not x1885) x27677)
+:assumption (or (not x28066) x6695)
+:assumption (or (not x4889) (not x4787))
+:assumption (or x3771 x5836)
+:assumption (or (not x16617) (not x30368))
+:assumption (or x28511 x24074)
+:assumption (or (not x3655) x29766)
+:assumption (or x9814 x11068)
+:assumption (or (not x26599) x31403)
+:assumption (or x23174 x6312)
+:assumption (or x8002 x23244 x6950 (not x20279))
+:assumption (or (not x8856) x1340)
+:assumption (or x18949 (not x23244))
+:assumption (or x24956 x13525)
+:assumption (or x15917 x13828 (not x4527))
+:assumption (or (not x5353) (not x22134))
+:assumption (or (not x8777) (not x31775))
+:assumption (or (not x9091) x23244)
+:assumption (or (not x10649) x8414)
+:assumption (or (not x23857) (not x5028))
+:assumption (or (not x21741) x11622)
+:assumption (or x2278 (not x27312) (not x23096))
+:assumption (or (not x30549) (not x26793))
+:assumption (or (not x11271) (not x11316))
+:assumption (or x23339 x31347)
+:assumption (or (not x12413) (not x7801))
+:assumption (or (not x6116) (not x7222))
+:assumption (or x7442 x30757)
+:assumption (or x7613 (not x26402) (not x17534) (not x9965) x384)
+:assumption (or (not x15573) (not x4916))
+:assumption (or (not x24254) (not x29554))
+:assumption (or (not x11234) x2592)
+:assumption (or (not x4181) x31456)
+:assumption (or x5251 x19183)
+:assumption (or (not x26854) (not x25484))
+:assumption (or x2596 x25423 (not x30891) x31734 x4865)
+:assumption (or x21735 x12668 (not x8658) x18525)
+:assumption (or (not x17789) (not x7759))
+:assumption (or (not x27008) (not x20087))
+:assumption (or x24513 (not x1596))
+:assumption (or (not x7332) (not x28239))
+:assumption (or x31470 x16528)
+:assumption (or x18041 (not x30974))
+:assumption (or x11560 (not x31229))
+:assumption (or x21889 (not x6419))
+:assumption (or x17669 x16025 (not x25008))
+:assumption (or (not x15904) (not x360))
+:assumption (or (not x4136) x10611)
+:assumption (or (not x480) x7774)
+:assumption (or x5592 (not x18848))
+:assumption (or x5052 (not x3248) (not x6681) (not x29789) x16699 (not x827) (not x9995) x11276)
+:assumption (or x29386 x9951)
+:assumption (or (not x23244) (not x6313))
+:assumption (or x1504 x11748)
+:assumption (or x22977 x28541)
+:assumption (or x3671 (not x27382))
+:assumption (or x8543 x3860)
+:assumption (or x15366 (not x4653))
+:assumption (or x30272 x29787)
+:assumption (or x8099 (not x6417) x27336 (not x27209) (not x20359))
+:assumption (or (not x17) (not x3712))
+:assumption (or (not x24424) x16076)
+:assumption (or x17261 (not x8002) (not x16841))
+:assumption (or (not x23564) x20223 x14339 x31243 x29638)
+:assumption (or (not x17016) x692)
+:assumption (or (not x18206) (not x48))
+:assumption (or x4777 (not x27894))
+:assumption (or x15046 x2718 (not x24251) (not x7004))
+:assumption (or (not x23420) (not x22698))
+:assumption (or x18797 x12286)
+:assumption (or (not x9618) (not x31627))
+:assumption (or (not x5539) x11158)
+:assumption (or (not x6444) (not x20621) (not x17709) x183 x18314 x19485)
+:assumption (or x5676 x2943 (not x27012))
+:assumption (or (not x25345) (not x9025) (not x11281))
+:assumption (or x17986 (not x9153))
+:assumption (or (not x9490) x18785 x3596 x25423 x25184 x11887 x26713)
+:assumption (or x21815 x10273)
+:assumption (or (not x26883) x24471)
+:assumption (or x26066 x8002)
+:assumption (or x31191 (not x14780))
+:assumption (or x4986 x27998)
+:assumption (or x24819 (not x15884))
+:assumption (or x3406 x1432)
+:assumption (or x25071 (not x16696))
+:assumption (or (not x22886) x12959 (not x26860) x14394)
+:assumption (or (not x29490) x31080)
+:assumption (or x25782 x9828)
+:assumption (or (not x10498) x6938)
+:assumption (or (not x5367) x18447)
+:assumption (or (not x26057) x24966)
+:assumption (or (not x20225) x18477)
+:assumption (or (not x8979) x25902)
+:assumption (or (not x29413) (not x26022))
+:assumption (or (not x14418) (not x18179))
+:assumption (or (not x17571) x30043)
+:assumption (or (not x11841) x29606)
+:assumption (or x21500 (not x25595))
+:assumption (or (not x8072) x12626)
+:assumption (or x27987 x25145)
+:assumption (or (not x27855) (not x27967))
+:assumption (or (not x10645) (not x6225))
+:assumption (or (not x29269) (not x9008) x24859 (not x5528) x8724)
+:assumption (or x5886 x18672 x16770 x8961)
+:assumption (or x25141 x20735)
+:assumption (or (not x25363) x23961)
+:assumption (or x3943 x20953)
+:assumption (or (not x24167) x29418)
+:assumption (or x16264 (not x25126))
+:assumption (or (not x4545) (not x21328))
+:assumption (or x28828 x2754)
+:assumption (or (not x5939) (not x29287) x28106)
+:assumption (or (not x4700) (not x29052))
+:assumption (or x22616 x25064)
+:assumption (or (not x22478) x788)
+:assumption (or (not x15791) x20555)
+:assumption (or (not x26898) (not x13415))
+:assumption (or (not x17872) x6998)
+:assumption (or (not x25210) x13018)
+:assumption (or (not x16230) x22974)
+:assumption (or x6229 x18310)
+:assumption (or (not x5638) (not x24314))
+:assumption (or x25441 (not x7253))
+:assumption (or x10839 x16400)
+:assumption (or x5985 (not x25553))
+:assumption (or x24080 x30778 (not x4336) x5946)
+:assumption (or (not x7711) x6064)
+:assumption (or (not x20562) (not x8447))
+:assumption (or (not x29880) x25975)
+:assumption (or x4504 x8597)
+:assumption (or x6149 x9566 (not x28256) x2356 (not x20221) x30842)
+:assumption (or x26891 x19222)
+:assumption (or (not x390) x4057)
+:assumption (or (not x13181) (not x25518))
+:assumption (or (not x7384) (not x30602))
+:assumption (or x167 x16602)
+:assumption (or x2578 x30600)
+:assumption (or x8357 (not x30872))
+:assumption (or (not x202) (not x22008))
+:assumption (or x15182 (not x4935))
+:assumption (or (not x14022) (not x20878) x620)
+:assumption (or (not x11839) x2518)
+:assumption (or x30976 x30716 x1582 x8267)
+:assumption (or (not x2359) (not x22248))
+:assumption (or (not x5614) (not x27952))
+:assumption (or (not x11347) (not x8188))
+:assumption (or x14763 x17618)
+:assumption (or (not x3554) x18852)
+:assumption (or x16362 x23244 x13956 x25476 x8002 x14695)
+:assumption (or (not x21549) x28139)
+:assumption (or x20212 (not x8083))
+:assumption (or (not x16239) (not x1244))
+:assumption (or x827 x23131)
+:assumption (or (not x16139) x9017)
+:assumption (or x9806 x1823)
+:assumption (or (not x10616) x10708)
+:assumption (or x24887 x30255)
+:assumption (or (not x21696) (not x5172))
+:assumption (or (not x165) x18182 (not x5896) x8293 x16743)
+:assumption (or x15216 x30164)
+:assumption (or (not x3284) (not x18299))
+:assumption (or (not x17447) (not x12835))
+:assumption (or x30432 x4598)
+:assumption (or (not x2698) x6307)
+:assumption (or x28627 (not x25366))
+:assumption (or (not x27310) x3340 x22374 (not x18904) x10549 (not x23829))
+:assumption (or x14152 x24756 (not x14903))
+:assumption (or (not x6149) (not x29187))
+:assumption (or x1084 (not x7371) x1393)
+:assumption (or (not x17563) (not x14057))
+:assumption (or x4269 (not x19936))
+:assumption (or x615 x2701)
+:assumption (or (not x5028) (not x23517) (not x29442) (not x16329))
+:assumption (or (not x5134) (not x28346) (not x6635) x22571 (not x17444) (not x2496) x8983 (not x13650))
+:assumption (or (not x29517) x770)
+:assumption (or x31045 (not x5503))
+:assumption (or (not x20438) (not x22434))
+:assumption (or x5254 (not x20551))
+:assumption (or (not x3789) x7318)
+:assumption (or x11758 x14124)
+:assumption (or x6969 (not x29615))
+:assumption (or (not x15330) (not x25225))
+:assumption (or (not x2960) (not x12998))
+:assumption (or (not x8563) x15746)
+:assumption (or (not x6798) x14839)
+:assumption (or x8757 x359)
+:assumption (or (not x14902) (not x8208))
+:assumption (or (not x19497) x22969)
+:assumption (or (not x6307) x23406)
+:assumption (or x23729 (not x9008))
+:assumption (or x10503 x17471)
+:assumption (or x30596 (not x9082))
+:assumption (or (not x7319) x30726)
+:assumption (or (not x7377) x25680)
+:assumption (or (not x17046) x2911)
+:assumption (or x11383 (not x6911))
+:assumption (or x13628 (not x23648))
+:assumption (or x364 x21245 (not x20272) (not x18310))
+:assumption (or (not x23365) x20808)
+:assumption (or (not x10021) x27732)
+:assumption (or (not x2997) (not x16280))
+:assumption (or (not x26569) (not x675))
+:assumption (or (not x21624) (not x19558))
+:assumption (or x30161 (not x22022))
+:assumption (or (not x19256) x10898)
+:assumption (or x29603 (not x8895))
+:assumption (or x23244 (not x8002) (not x8497))
+:assumption (or x16676 (not x21973) (not x17843) x27462)
+:assumption (or x6175 x1207)
+:assumption (or (not x20830) (not x23244))
+:assumption (or x3245 x30059)
+:assumption (or x10720 (not x5528))
+:assumption (or (not x22922) (not x29266))
+:assumption (or x29263 x18982)
+:assumption (or (not x16864) (not x19158))
+:assumption (or (not x5731) (not x24306))
+:assumption (or (not x11447) (not x28381))
+:assumption (or x23380 (not x17970) (not x28195) x3410 (not x23299) x8270)
+:assumption (or x7704 x3691)
+:assumption (or (not x16003) x14622)
+:assumption (or (not x26151) x23244)
+:assumption (or (not x8953) (not x10619))
+:assumption (or x6454 (not x13956))
+:assumption (or (not x13191) (not x22154))
+:assumption (or x10613 (not x30092))
+:assumption (or (not x8216) x31729)
+:assumption (or (not x23245) x14250)
+:assumption (or x29149 x16654 (not x5528) (not x9008) (not x17016))
+:assumption (or (not x6747) x16812)
+:assumption (or x11673 x17876)
+:assumption (or x20546 x25560)
+:assumption (or (not x26433) x218)
+:assumption (or (not x26789) x1154)
+:assumption (or x24623 (not x13923))
+:assumption (or (not x22275) x29649)
+:assumption (or x30750 (not x17270))
+:assumption (or (not x29785) x8217)
+:assumption (or x10058 x15653)
+:assumption (or (not x10853) x5384)
+:assumption (or x20402 (not x14641) x9097)
+:assumption (or x16391 (not x20189))
+:assumption (or x21432 x22787 (not x20974) (not x10530))
+:assumption (or x31631 x13993 x20286 x13018)
+:assumption (or x13642 (not x10790))
+:assumption (or x6042 (not x20964))
+:assumption (or x30487 (not x22292))
+:assumption (or x12816 x10874)
+:assumption (or x14241 (not x24688) (not x4516))
+:assumption (or x20098 (not x15321))
+:assumption (or x28553 (not x20000))
+:assumption (or (not x30791) (not x2993))
+:assumption (or (not x17368) x5648 x18101 x8650 (not x23244))
+:assumption (or x8179 x11493)
+:assumption (or (not x18987) x23649)
+:assumption (or x3433 x5035)
+:assumption (or x14931 (not x2948))
+:assumption (or (not x8774) (not x25769))
+:assumption (or x16145 x2025)
+:assumption (or (not x30584) x5812 x10284 (not x31044) (not x16491))
+:assumption (or x28674 x22770)
+:assumption (or x24665 x26297)
+:assumption (or (not x22473) x15834)
+:assumption (or x25472 x3706 x20118 x23754)
+:assumption (or (not x24816) (not x24184))
+:assumption (or (not x5069) (not x31592))
+:assumption (or (not x7709) (not x8849))
+:assumption (or (not x20663) (not x20069) (not x16392) (not x16012))
+:assumption (or (not x15613) x19747)
+:assumption (or (not x14554) x24506)
+:assumption (or x17168 (not x1698))
+:assumption (or (not x13956) (not x17359) (not x24343))
+:assumption (or (not x22877) x10691)
+:assumption (or x21592 (not x15454) (not x9834) (not x11056) x23919 x18433 (not x22390) x23682 x6753 x26290)
+:assumption (or x2233 (not x9864))
+:assumption (or (not x23867) x31196)
+:assumption (or (not x28883) x2099)
+:assumption (or (not x3928) (not x26226))
+:assumption (or (not x10491) x21159)
+:assumption (or x22433 x13576 x12578 x9531)
+:assumption (or (not x1807) (not x27233))
+:assumption (or x2406 (not x28161))
+:assumption (or (not x30888) (not x25378) x30751)
+:assumption (or (not x4006) (not x23390))
+:assumption (or (not x1919) x3832 x7764 (not x3101) x26667 (not x30099) (not x25364) (not x9979) (not x16387))
+:assumption (or x28679 (not x23298))
+:assumption (or x28561 (not x20481))
+:assumption (or x145 x2692)
+:assumption (or (not x19428) (not x7666))
+:assumption (or (not x23488) x2395)
+:assumption (or x15866 x7355)
+:assumption (or x2141 x9088)
+:assumption (or x3374 x4599)
+:assumption (or (not x2686) x4212)
+:assumption (or x8112 x4667)
+:assumption (or x5528 x2745)
+:assumption (or (not x1337) (not x21443))
+:assumption (or x20482 x14301)
+:assumption (or x1953 (not x13633))
+:assumption (or x13043 x27575 (not x320) (not x15525) x535)
+:assumption (or x17302 x309)
+:assumption (or (not x15928) x31236)
+:assumption (or x11673 x16802)
+:assumption (or (not x30928) x30785)
+:assumption (or x7003 x4310)
+:assumption (or (not x6321) (not x18207))
+:assumption (or (not x1321) (not x9008))
+:assumption (or (not x21610) (not x7697))
+:assumption (or (not x10967) (not x4639) (not x16025))
+:assumption (or x26392 (not x14791) x28073 (not x27213))
+:assumption (or (not x2392) (not x30798))
+:assumption (or (not x3606) (not x10884))
+:assumption (or x28541 x21482 x5451)
+:assumption (or x17534 (not x31129) x24262 x6594)
+:assumption (or x15336 (not x13201) (not x12116))
+:assumption (or (not x9573) x17841)
+:assumption (or x22974 (not x4643))
+:assumption (or x13000 x3674)
+:assumption (or (not x14511) x22785)
+:assumption (or (not x30080) x11792 (not x6041) x6149)
+:assumption (or x7493 x27808)
+:assumption (or (not x29291) (not x28260))
+:assumption (or x29800 (not x9423) x8866 (not x29168))
+:assumption (or x16103 (not x17245))
+:assumption (or x17671 x8185)
+:assumption (or x15885 (not x5910))
+:assumption (or x22906 x23061)
+:assumption (or (not x21947) (not x4055))
+:assumption (or (not x18966) (not x7627))
+:assumption (or x15446 x13490)
+:assumption (or x16738 (not x31852))
+:assumption (or x4938 (not x5367))
+:assumption (or x2937 x24029)
+:assumption (or x22281 (not x3819))
+:assumption (or (not x21545) (not x1819))
+:assumption (or x7434 (not x22638))
+:assumption (or (not x9423) x5215)
+:assumption (or x19327 x29027)
+:assumption (or (not x30069) (not x18424))
+:assumption (or (not x3222) x14641)
+:assumption (or x22677 (not x14611))
+:assumption (or x21815 x13436)
+:assumption (or x79 x29760)
+:assumption (or (not x26899) x4226)
+:assumption (or (not x3456) (not x28007))
+:assumption (or (not x29649) (not x27931))
+:assumption (or (not x1440) (not x20099))
+:assumption (or x6944 (not x30414) x26280 (not x20087))
+:assumption (or x31080 x26803)
+:assumption (or (not x23380) (not x2187))
+:assumption (or x24426 x17545)
+:assumption (or (not x18925) (not x15407))
+:assumption (or (not x5913) x21493)
+:assumption (or x19610 x19110)
+:assumption (or (not x6634) (not x23461))
+:assumption (or x4058 x27798 (not x6402))
+:assumption (or (not x6243) (not x24033))
+:assumption (or (not x13487) (not x14902))
+:assumption (or (not x28541) (not x29892))
+:assumption (or (not x25740) (not x23244))
+:assumption (or (not x27755) x13328)
+:assumption (or (not x27940) (not x5722))
+:assumption (or x16353 (not x30485))
+:assumption (or (not x4449) x722 x22599 (not x26787) x3326 (not x16741))
+:assumption (or (not x11849) (not x10296))
+:assumption (or x15987 (not x4367))
+:assumption (or x12107 x13560)
+:assumption (or (not x19461) (not x13407))
+:assumption (or (not x29582) x5028)
+:assumption (or x6663 (not x2520))
+:assumption (or (not x7917) x19584)
+:assumption (or (not x5621) (not x7799))
+:assumption (or (not x31179) x7889)
+:assumption (or (not x27088) x17011)
+:assumption (or (not x11676) (not x22362))
+:assumption (or x7398 x16409 (not x24145) (not x118) x21405 (not x22649))
+:assumption (or (not x1163) (not x30954) x20173)
+:assumption (or x21251 (not x26445))
+:assumption (or x4101 x918)
+:assumption (or x5610 x15022)
+:assumption (or x6974 (not x13651))
+:assumption (or (not x6075) x29567)
+:assumption (or (not x19992) x11489 x15535)
+:assumption (or x21668 x23184)
+:assumption (or (not x14347) (not x7742))
+:assumption (or (not x31714) x24178)
+:assumption (or x19181 x19033)
+:assumption (or x10644 (not x218))
+:assumption (or x28951 x29400)
+:assumption (or x31830 x3378)
+:assumption (or x10222 x21086)
+:assumption (or x9696 x1451)
+:assumption (or x1097 (not x5791))
+:assumption (or (not x27110) x18860 x22239 (not x17778) (not x19589) (not x24414) (not x18836) (not x30990))
+:assumption (or x27430 x16914)
+:assumption (or (not x30357) (not x17225))
+:assumption (or (not x16335) (not x28557))
+:assumption (or (not x8571) x24068 (not x3852) (not x23244) x19352)
+:assumption (or (not x28967) (not x1544))
+:assumption (or (not x347) x11630 (not x12588) (not x11382) x14377 (not x3513))
+:assumption (or x18 x7241 x28612 (not x6857) x4128 x10231 (not x28563))
+:assumption (or (not x596) x5918)
+:assumption (or x20563 (not x27707))
+:assumption (or (not x30248) x6554)
+:assumption (or x19061 (not x20088))
+:assumption (or x10655 (not x21915))
+:assumption (or x14704 (not x12385))
+:assumption (or x16802 x24550)
+:assumption (or (not x1393) (not x30710) (not x13533))
+:assumption (or (not x9325) x12527 x15880 (not x5548) (not x1816))
+:assumption (or x4616 x8083)
+:assumption (or (not x18283) x21653)
+:assumption (or x6481 (not x10185))
+:assumption (or x29958 x30277)
+:assumption (or (not x19063) (not x1726))
+:assumption (or x7 x11587)
+:assumption (or (not x18432) x9396)
+:assumption (or (not x8866) (not x7680))
+:assumption (or (not x29962) x31522)
+:assumption (or (not x24683) x30636 x3736 x10219 (not x13460))
+:assumption (or (not x14839) (not x5147) x6798)
+:assumption (or (not x24268) (not x13111))
+:assumption (or x4106 (not x7537))
+:assumption (or (not x5667) (not x26679))
+:assumption (or (not x24346) x22732 (not x15034) (not x12807))
+:assumption (or x17309 (not x20080))
+:assumption (or (not x21474) (not x4747))
+:assumption (or x26897 x16091)
+:assumption (or x13113 (not x1423))
+:assumption (or x22215 x7532)
+:assumption (or (not x28364) (not x1708) x30113)
+:assumption (or (not x10591) x6381)
+:assumption (or x10909 (not x3785))
+:assumption (or (not x9098) (not x24298))
+:assumption (or x9738 x6542)
+:assumption (or x8002 (not x8943))
+:assumption (or (not x23872) x16986 (not x22285) (not x8242))
+:assumption (or (not x5048) x29647)
+:assumption (or x22995 x1909)
+:assumption (or x4242 (not x28541) x11737 (not x28198))
+:assumption (or x15392 x19919)
+:assumption (or (not x31182) x11027)
+:assumption (or (not x17134) (not x31133))
+:assumption (or (not x22567) x18906)
+:assumption (or (not x8180) (not x20164))
+:assumption (or x15635 (not x4054))
+:assumption (or x31577 (not x24195))
+:assumption (or (not x31852) (not x21640))
+:assumption (or (not x24225) x5856 (not x21438))
+:assumption (or (not x13967) (not x18669))
+:assumption (or (not x3176) (not x21608))
+:assumption (or (not x1017) x26025)
+:assumption (or x20844 (not x28411))
+:assumption (or x12450 (not x27441))
+:assumption (or (not x29185) (not x7019))
+:assumption (or x8661 x13548)
+:assumption (or x14455 (not x28337))
+:assumption (or (not x22501) (not x5820))
+:assumption (or (not x28951) x29283)
+:assumption (or x19887 x5727)
+:assumption (or x22814 x936)
+:assumption (or x23495 x28646)
+:assumption (or (not x27528) (not x4481))
+:assumption (or (not x22269) x19398)
+:assumption (or (not x6969) (not x6566))
+:assumption (or (not x20061) x15565)
+:assumption (or (not x29051) (not x24717))
+:assumption (or x235 (not x6702) (not x18003))
+:assumption (or (not x30995) x13798)
+:assumption (or (not x20983) (not x24495))
+:assumption (or (not x28635) x18990)
+:assumption (or (not x27293) (not x11371))
+:assumption (or x2825 (not x18404))
+:assumption (or x14455 x15458 (not x15875))
+:assumption (or x20496 x6960)
+:assumption (or (not x5300) x21298)
+:assumption (or (not x9858) x3290)
+:assumption (or (not x29082) (not x19406))
+:assumption (or x20870 (not x23244))
+:assumption (or x759 x7127)
+:assumption (or x23990 (not x14675))
+:assumption (or (not x29417) x26165)
+:assumption (or x26890 x23244)
+:assumption (or (not x12914) (not x3614))
+:assumption (or x13059 x8126)
+:assumption (or x16641 (not x30018))
+:assumption (or x12645 x24228 (not x29022) (not x2563) (not x16353) (not x14476) (not x20769))
+:assumption (or x20045 x18510)
+:assumption (or (not x12547) (not x17440))
+:assumption (or (not x25041) (not x29274))
+:assumption (or (not x23424) (not x27596))
+:assumption (or x20204 x23244 x8002 (not x3282))
+:assumption (or x7567 x5528)
+:assumption (or x28116 x8316)
+:assumption (or x9008 (not x11627))
+:assumption (or x18026 (not x26499))
+:assumption (or (not x909) x29295)
+:assumption (or x25261 (not x3154))
+:assumption (or x14103 x16304)
+:assumption (or x4256 (not x6461))
+:assumption (or (not x18814) (not x27637))
+:assumption (or (not x1302) x30138 (not x7943))
+:assumption (or x27245 (not x15836))
+:assumption (or (not x19055) x11861)
+:assumption (or x208 (not x18024) x12983 x29606 x22989)
+:assumption (or (not x14955) x22264)
+:assumption (or (not x21981) x13438 (not x17442) x17447 (not x6676))
+:assumption (or (not x5295) (not x20086))
+:assumption (or x746 x8002 (not x9806) (not x3173) (not x27004) (not x12650))
+:assumption (or x24705 x23607)
+:assumption (or x6287 x7468)
+:assumption (or (not x26187) x4847)
+:assumption (or x15423 x26214 (not x16684) (not x4224) x3782 (not x22057) (not x22121) (not x4095) (not x10192) (not x28054))
+:assumption (or x14042 x29310)
+:assumption (or (not x120) x17320)
+:assumption (or x16063 x29537)
+:assumption (or x15881 (not x22231))
+:assumption (or x27691 x23982)
+:assumption (or x6420 x24418)
+:assumption (or (not x11675) x14347)
+:assumption (or x25925 (not x6307))
+:assumption (or (not x13576) x12050)
+:assumption (or (not x5897) x25376)
+:assumption (or x8837 (not x25581) (not x3687) x7831 (not x30564))
+:assumption (or (not x29928) (not x14355))
+:assumption (or (not x17018) x1735)
+:assumption (or x1464 x27234 (not x20184) (not x17189))
+:assumption (or (not x15807) x26493)
+:assumption (or x11253 (not x18204))
+:assumption (or x3576 x18800 x11363 (not x13964))
+:assumption (or (not x24089) x25423 x24155)
+:assumption (or x18814 (not x24363) x25243)
+:assumption (or x25376 x11317 (not x12918) (not x28283))
+:assumption (or (not x26515) (not x11461))
+:assumption (or x18461 x11529)
+:assumption (or x10200 (not x29804))
+:assumption (or (not x1015) x18007)
+:assumption (or x11676 (not x20803) (not x22628) x22362 (not x9551) x6635)
+:assumption (or x7689 (not x12253))
+:assumption (or x10614 (not x17658))
+:assumption (or (not x21815) (not x15917) (not x9523) (not x16510) (not x9531))
+:assumption (or (not x10690) (not x27537))
+:assumption (or (not x1596) (not x30887))
+:assumption (or x23692 (not x16423))
+:assumption (or x3646 x20985)
+:assumption (or x9872 x12134)
+:assumption (or (not x17908) (not x10535))
+:assumption (or (not x16025) (not x30554))
+:assumption (or x1412 (not x9323))
+:assumption (or x1193 x7351)
+:assumption (or x7313 x466 x24242)
+:assumption (or x20087 (not x25411) x4631 (not x10229) (not x17520) x29447 (not x5436) x10389)
+:assumption (or x13199 x26963)
+:assumption (or x22082 (not x18441))
+:assumption (or x30726 (not x13872))
+:assumption (or (not x5263) x16510)
+:assumption (or (not x13002) (not x22523))
+:assumption (or x5988 (not x2638))
+:assumption (or x23244 (not x11038))
+:assumption (or (not x4514) (not x28066))
+:assumption (or (not x8506) (not x1835))
+:assumption (or (not x29719) (not x8974))
+:assumption (or (not x2854) x6523)
+:assumption (or x13859 (not x8002))
+:assumption (or x26321 x14843 x1393)
+:assumption (or (not x10273) x22414 (not x21815))
+:assumption (or (not x6382) (not x551))
+:assumption (or (not x14803) x15324)
+:assumption (or x529 (not x8708))
+:assumption (or (not x8866) (not x29800))
+:assumption (or (not x26857) x28387)
+:assumption (or (not x18003) x23244 (not x16178))
+:assumption (or x6984 x29354)
+:assumption (or x29178 x3884 x18360)
+:assumption (or x12517 (not x24979))
+:assumption (or x4244 (not x25129))
+:assumption (or x31462 x30341)
+:assumption (or x17158 x9008)
+:assumption (or (not x20383) x26518)
+:assumption (or x23385 (not x24286))
+:assumption (or (not x9701) x25423 x30617 (not x5126))
+:assumption (or (not x28107) (not x30428))
+:assumption (or x5881 x11746 (not x29058) (not x8030))
+:assumption (or x15336 x3768)
+:assumption (or x21481 x9008)
+:assumption (or x25091 x11427)
+:assumption (or x26938 (not x13434) (not x4865))
+:assumption (or x26336 (not x1525))
+:assumption (or (not x24167) x10593)
+:assumption (or x31111 x19205)
+:assumption (or (not x24994) x10474)
+:assumption (or x4590 x17373 (not x8623))
+:assumption (or (not x6697) x827)
+:assumption (or x17173 (not x7183))
+:assumption (or x31456 (not x25659) (not x30628))
+:assumption (or (not x13189) x22587)
+:assumption (or x30391 x15362)
+:assumption (or x21476 x2469)
+:assumption (or (not x8554) x16025 x202)
+:assumption (or x28350 (not x28748))
+:assumption (or (not x26908) (not x11522))
+:assumption (or x22102 x27924)
+:assumption (or x17858 (not x5893))
+:assumption (or (not x8889) x13176)
+:assumption (or x30002 x5514)
+:assumption (or (not x21173) x2988)
+:assumption (or (not x3712) (not x7641))
+:assumption (or x25302 x12846)
+:assumption (or x22061 (not x17680))
+:assumption (or x8385 x26432)
+:assumption (or x19524 (not x14839))
+:assumption (or (not x7826) (not x21298) (not x5161))
+:assumption (or (not x1272) x14220)
+:assumption (or x24224 (not x31485))
+:assumption (or (not x25561) x11335)
+:assumption (or x9795 x24050)
+:assumption (or x7100 x5528 x27359)
+:assumption (or x4491 (not x14063))
+:assumption (or (not x31298) x10032 x10874 (not x21737) (not x2997) (not x27764))
+:assumption (or x30407 (not x16658) x14819 (not x2558))
+:assumption (or (not x6296) (not x1436))
+:assumption (or x28986 x8002)
+:assumption (or x15541 x20910)
+:assumption (or x18073 x10429)
+:assumption (or x445 x29977)
+:assumption (or x30498 (not x25348))
+:assumption (or x19428 (not x26786))
+:assumption (or x9486 x19805)
+:assumption (or x25732 x5278)
+:assumption (or x30244 x169)
+:assumption (or (not x10497) (not x30054))
+:assumption (or x22621 x5366)
+:assumption (or x31535 (not x3921))
+:assumption (or x23802 x24761)
+:assumption (or (not x29216) (not x5206))
+:assumption (or (not x22874) x1292)
+:assumption (or x28158 x14653 (not x12465) (not x28407) (not x17359))
+:assumption (or (not x8660) (not x1277))
+:assumption (or (not x6454) (not x25214) (not x17921) x16075)
+:assumption (or (not x14592) x21202)
+:assumption (or (not x23044) x7801 x6708)
+:assumption (or x20661 (not x17889))
+:assumption (or (not x13956) x15507)
+:assumption (or (not x5941) (not x11188) (not x27961) (not x25447))
+:assumption (or (not x10857) x9423)
+:assumption (or (not x5528) (not x9008) (not x31782) x16283 (not x26810))
+:assumption (or (not x3212) (not x12835))
+:assumption (or x11325 (not x16374) (not x22161))
+:assumption (or (not x15589) x14647)
+:assumption (or (not x30777) (not x23244))
+:assumption (or (not x3963) x19655)
+:assumption (or (not x1317) x19193)
+:assumption (or (not x17075) x29)
+:assumption (or (not x15984) (not x202))
+:assumption (or x2420 x8426 (not x6184) x9279 (not x25565) (not x23244))
+:assumption (or x14393 x12887)
+:assumption (or x370 (not x4206))
+:assumption (or (not x827) x26476)
+:assumption (or x20788 (not x2777))
+:assumption (or x9535 x13895 (not x119) x31181)
+:assumption (or x17677 (not x21485))
+:assumption (or x20948 (not x16510))
+:assumption (or (not x12242) x26799)
+:assumption (or (not x29385) (not x14455) (not x16374) (not x31756))
+:assumption (or (not x1690) (not x19042))
+:assumption (or (not x19275) x14839)
+:assumption (or x2428 (not x6068))
+:assumption (or (not x9091) x21904)
+:assumption (or x10344 x12628)
+:assumption (or (not x15036) (not x678))
+:assumption (or x10736 x9065)
+:assumption (or x9495 (not x25279))
+:assumption (or (not x7751) x23571)
+:assumption (or x29124 x14296)
+:assumption (or (not x23104) x8353)
+:assumption (or (not x20565) x29606)
+:assumption (or (not x4356) (not x24384))
+:assumption (or x21820 x24165)
+:assumption (or (not x26699) (not x31585) x8002)
+:assumption (or x15633 x16025 x13950)
+:assumption (or x30958 (not x25957))
+:assumption (or (not x22043) x1420)
+:assumption (or (not x20034) x28964)
+:assumption (or x7181 (not x24093))
+:assumption (or (not x1182) (not x29776))
+:assumption (or x1985 x28547)
+:assumption (or (not x13211) x539)
+:assumption (or x31434 (not x24081))
+:assumption (or x13766 x10861)
+:assumption (or (not x30175) (not x21298) (not x26567) x15278)
+:assumption (or x30656 x376)
+:assumption (or (not x21057) (not x19647))
+:assumption (or (not x30676) x9008)
+:assumption (or x12877 x14661)
+:assumption (or (not x15635) x9008)
+:assumption (or (not x6871) x2380)
+:assumption (or (not x16461) x13229 (not x8002))
+:assumption (or (not x24269) (not x11895))
+:assumption (or x15416 (not x13912))
+:assumption (or x21423 (not x16311))
+:assumption (or (not x9052) (not x288) x26767)
+:assumption (or (not x21008) x24407 (not x16025))
+:assumption (or (not x28683) (not x7504))
+:assumption (or x22883 (not x20651))
+:assumption (or x2333 x27236)
+:assumption (or x15770 x27998)
+:assumption (or (not x18715) x11406 (not x28973) (not x10744) (not x2430))
+:assumption (or x9348 (not x4983))
+:assumption (or (not x18574) (not x7854))
+:assumption (or x8418 x801)
+:assumption (or x3439 (not x21641))
+:assumption (or (not x14446) (not x381) (not x1739) (not x12619) x17139 x25803)
+:assumption (or x9305 x29593)
+:assumption (or (not x22757) x21241)
+:assumption (or (not x8002) (not x25740))
+:assumption (or (not x31596) (not x1557))
+:assumption (or x25517 (not x5209))
+:assumption (or (not x15981) x10724)
+:assumption (or (not x16199) (not x9446))
+:assumption (or (not x22855) x17790)
+:assumption (or x4574 (not x25862))
+:assumption (or (not x21201) x15745)
+:assumption (or x3319 x27753)
+:assumption (or (not x1245) x24781)
+:assumption (or x3331 (not x23265) (not x5182) (not x26198) (not x8531) x31862 (not x6037) (not x480))
+:assumption (or (not x3671) (not x20031))
+:assumption (or x29023 (not x23456) x22118 x9281)
+:assumption (or (not x8919) (not x13757))
+:assumption (or x27662 (not x12326))
+:assumption (or (not x16124) x8083)
+:assumption (or x7065 (not x29941))
+:assumption (or x24696 x13118)
+:assumption (or (not x10909) (not x1378))
+:assumption (or x5063 (not x21257) (not x10269) (not x19847))
+:assumption (or (not x26693) (not x15333) (not x11807) (not x25490))
+:assumption (or x5514 x28062)
+:assumption (or x16519 (not x9930) x21298 (not x8855))
+:assumption (or (not x20566) (not x26319))
+:assumption (or x23993 x21298)
+:assumption (or x491 (not x9608))
+:assumption (or (not x12112) (not x15614))
+:assumption (or (not x25355) (not x8695))
+:assumption (or x24377 (not x13035))
+:assumption (or (not x14294) x8929)
+:assumption (or x10818 (not x8002))
+:assumption (or x8508 (not x12002))
+:assumption (or (not x9008) x29314 x28364 (not x8757) (not x5528))
+:assumption (or (not x13802) (not x18703))
+:assumption (or (not x1652) x24259)
+:assumption (or (not x27517) (not x3374) (not x21505) (not x26237) (not x24951))
+:assumption (or x25818 x21401 x30113)
+:assumption (or x6047 (not x5719))
+:assumption (or x8887 (not x4979))
+:assumption (or x26608 (not x25993))
+:assumption (or x17988 (not x5673))
+:assumption (or x25376 x12979)
+:assumption (or x1233 x21120)
+:assumption (or (not x11235) (not x23575))
+:assumption (or (not x7582) (not x10922))
+:assumption (or x25079 (not x9187))
+:assumption (or x31828 (not x24756))
+:assumption (or x2252 x17691)
+:assumption (or (not x22255) (not x29546))
+:assumption (or (not x21298) x8855)
+:assumption (or x11148 (not x31418))
+:assumption (or (not x8991) (not x3508))
+:assumption (or (not x8679) (not x29312))
+:assumption (or (not x31020) (not x987))
+:assumption (or x22553 x29469)
+:assumption (or x24291 (not x16858))
+:assumption (or x10080 (not x8579))
+:assumption (or x72 (not x12375))
+:assumption (or (not x20488) (not x21298))
+:assumption (or (not x5380) (not x5528))
+:assumption (or (not x16836) x23235)
+:assumption (or x20291 x17162)
+:assumption (or x4534 (not x21868))
+:assumption (or x18168 x24471)
+:assumption (or (not x10922) (not x13042))
+:assumption (or x1750 (not x27386))
+:assumption (or (not x28261) x157)
+:assumption (or x7332 x15041 x11691 x3455 x11378 x28239 x23514 x31714 (not x29240))
+:assumption (or x6800 x1052)
+:assumption (or x23808 x12588)
+:assumption (or x23186 (not x2739))
+:assumption (or (not x14302) (not x14232))
+:assumption (or x31703 (not x10135))
+:assumption (or (not x15647) (not x1114))
+:assumption (or x20886 (not x23204) (not x9008))
+:assumption (or x31215 (not x8002))
+:assumption (or (not x2209) (not x11940) (not x21653))
+:assumption (or (not x21579) (not x14695) (not x9008) (not x5528) x16362)
+:assumption (or x19124 x2136)
+:assumption (or (not x13302) x7424)
+:assumption (or (not x17173) x7183)
+:assumption (or x24824 (not x5018))
+:assumption (or x29517 (not x770))
+:assumption (or (not x2261) (not x23955))
+:assumption (or x30641 (not x3307))
+:assumption (or x21572 (not x22208))
+:assumption (or (not x26293) (not x15856))
+:assumption (or (not x6992) (not x7817))
+:assumption (or x31892 x26608)
+:assumption (or (not x15933) x12420)
+:assumption (or x13504 (not x12935))
+:assumption (or (not x25250) x827)
+:assumption (or (not x12066) x29631)
+:assumption (or x24494 x5767)
+:assumption (or (not x20874) x4771)
+:assumption (or (not x2331) x4782 (not x4820) (not x3275) x11994)
+:assumption (or x5939 (not x28106))
+:assumption (or (not x25478) (not x21274))
+:assumption (or x19214 x12678)
+:assumption (or x31109 x2155)
+:assumption (or x12402 (not x13376))
+:assumption (or x3978 (not x3383))
+:assumption (or x18483 (not x28033))
+:assumption (or (not x27999) (not x20125))
+:assumption (or (not x8095) x15023)
+:assumption (or x20347 x10015)
+:assumption (or (not x19835) (not x12152))
+:assumption (or x5135 x8754)
+:assumption (or (not x26564) (not x14448))
+:assumption (or (not x28390) (not x24756) x24327)
+:assumption (or (not x10112) (not x13956) (not x29269) x29139)
+:assumption (or x11546 (not x9829))
+:assumption (or (not x31533) x5367)
+:assumption (or x25853 (not x571))
+:assumption (or x20841 (not x29232))
+:assumption (or (not x5972) (not x202))
+:assumption (or x22395 (not x30176))
+:assumption (or x15212 (not x13220))
+:assumption (or (not x7229) x11572)
+:assumption (or x27830 x5367 (not x16910) x29645)
+:assumption (or (not x781) x15444)
+:assumption (or (not x871) x21752)
+:assumption (or x18806 (not x21274))
+:assumption (or (not x8699) x19319)
+:assumption (or (not x19449) x16664)
+:assumption (or (not x16055) x24056)
+:assumption (or (not x11194) (not x24767))
+:assumption (or x30164 (not x13138))
+:assumption (or (not x12489) x733)
+:assumption (or x19229 (not x4237))
+:assumption (or (not x23587) x15089)
+:assumption (or (not x30905) (not x2546))
+:assumption (or x7245 (not x12181) x2351 (not x5688) (not x21502) (not x31855))
+:assumption (or (not x4641) x13770 x15662 (not x17173) (not x3752) x19860 (not x3938))
+:assumption (or x24935 x19518 x9400 x6554 x5937)
+:assumption (or x29751 (not x1069))
+:assumption (or (not x17319) x23510)
+:assumption (or x28590 (not x29714))
+:assumption (or (not x11147) (not x3980))
+:assumption (or (not x31389) (not x31113))
+:assumption (or (not x19353) x1359 (not x23178) x11293)
+:assumption (or x5358 x4489)
+:assumption (or x23777 x28842)
+:assumption (or (not x10287) x23933)
+:assumption (or x21660 (not x18374) (not x17519) x8607)
+:assumption (or x1483 (not x10164))
+:assumption (or (not x29883) (not x9679))
+:assumption (or (not x21900) (not x18732))
+:assumption (or (not x30110) x13831)
+:assumption (or x587 (not x15047))
+:assumption (or (not x26935) x917)
+:assumption (or x11366 x30190)
+:assumption (or x31134 (not x24045))
+:assumption (or x14959 (not x1442))
+:assumption (or (not x7308) x15936)
+:assumption (or x29252 x2133)
+:assumption (or x22462 x26810 (not x12455) (not x2542) x26796)
+:assumption (or x18370 x23725)
+:assumption (or (not x10713) (not x20632))
+:assumption (or (not x1871) x3840)
+:assumption (or x13079 x23431 x25898)
+:assumption (or (not x15389) x10081)
+:assumption (or (not x12441) x14094 (not x11857) (not x22136))
+:assumption (or (not x5975) x7507)
+:assumption (or x31589 (not x889))
+:assumption (or x391 x17338)
+:assumption (or (not x1028) (not x19864))
+:assumption (or x11067 x31235)
+:assumption (or (not x27224) (not x23464))
+:assumption (or (not x6424) x23016)
+:assumption (or x13574 (not x24716))
+:assumption (or x203 x24253)
+:assumption (or (not x27603) x6011)
+:assumption (or x19845 x14428)
+:assumption (or (not x31608) (not x28973) (not x26330))
+:assumption (or (not x14578) (not x4490))
+:assumption (or (not x22395) (not x15677) x4749 x30176)
+:assumption (or x9180 (not x23315))
+:assumption (or x20866 (not x16409))
+:assumption (or x16212 x12524)
+:assumption (or x21465 (not x17714))
+:assumption (or (not x1464) (not x11584) x4041)
+:assumption (or (not x23988) x22137 x14687 (not x30868))
+:assumption (or (not x11159) (not x15925))
+:assumption (or x26159 (not x26892) (not x27767) (not x28601))
+:assumption (or (not x31655) (not x23871))
+:assumption (or (not x24025) (not x13862))
+:assumption (or (not x18652) x9625)
+:assumption (or x17922 (not x17288))
+:assumption (or x27803 x24984)
+:assumption (or (not x20544) (not x12427) x5896)
+:assumption (or (not x10534) (not x6688) (not x23244))
+:assumption (or (not x22928) x19251 x2606 (not x23063) x20919)
+:assumption (or x5893 x6975)
+:assumption (or (not x28242) (not x8232))
+:assumption (or x31849 x4822)
+:assumption (or (not x25115) x29791)
+:assumption (or (not x11994) (not x5588))
+:assumption (or (not x12015) (not x1292) (not x21026))
+:assumption (or (not x21420) x19984)
+:assumption (or (not x4834) (not x4741))
+:assumption (or x9942 x12397)
+:assumption (or x16510 (not x25996) x7835)
+:assumption (or (not x28656) x19945 x31359 (not x17192) x8550 x1775)
+:assumption (or x20325 (not x14025))
+:assumption (or (not x14264) (not x14117))
+:assumption (or (not x12211) x27841)
+:assumption (or (not x21325) x6732)
+:assumption (or x23283 x21062)
+:assumption (or x17680 (not x22061))
+:assumption (or (not x8602) x20124)
+:assumption (or (not x5528) (not x6278))
+:assumption (or x2437 x28228)
+:assumption (or x15287 x1357)
+:assumption (or x15987 (not x19004) x12211 (not x31054) x17532 (not x2045))
+:assumption (or x26665 x27823)
+:assumption (or (not x2783) (not x13456))
+:assumption (or x1330 (not x15745))
+:assumption (or x762 (not x27954))
+:assumption (or (not x9258) (not x29586) x3878 (not x4292) x31278)
+:assumption (or (not x24586) (not x27246))
+:assumption (or x7507 (not x26670))
+:assumption (or x22654 x10553)
+:assumption (or (not x7715) x3150)
+:assumption (or (not x17651) (not x4621))
+:assumption (or (not x10874) (not x25237))
+:assumption (or x15613 x19915 (not x27077) x18621 x9008 (not x28051))
+:assumption (or (not x6319) x25404 (not x24462) x15090 x4273 (not x5213) x10296 x8658 (not x4832))
+:assumption (or x22816 x6384 x11073 x9905 x3900)
+:assumption (or x20199 x23644 (not x6345) x26137 x12944)
+:assumption (or x9910 (not x2574))
+:assumption (or x21861 x6324)
+:assumption (or (not x17164) (not x18096))
+:assumption (or (not x23437) x23229)
+:assumption (or (not x6950) (not x8564))
+:assumption (or x2154 x3264)
+:assumption (or x22226 x6170)
+:assumption (or (not x5394) x16288)
+:assumption (or x31076 x5350 (not x19866) (not x11783))
+:assumption (or (not x30616) x9795)
+:assumption (or (not x4488) x23244 x16092 (not x18500) x8002)
+:assumption (or (not x20402) (not x29646))
+:assumption (or x3376 (not x11778))
+:assumption (or x22354 x1821)
+:assumption (or (not x9011) (not x8002))
+:assumption (or x2328 (not x18804))
+:assumption (or x28913 x425)
+:assumption (or (not x25223) (not x23825))
+:assumption (or x169 x16513)
+:assumption (or x24724 (not x10957))
+:assumption (or (not x3384) (not x15540))
+:assumption (or x24609 x1453)
+:assumption (or (not x2259) x30731)
+:assumption (or x20973 (not x13576))
+:assumption (or (not x8503) (not x20478))
+:assumption (or x980 (not x26899))
+:assumption (or x13333 (not x369))
+:assumption (or (not x19240) x20885)
+:assumption (or x27000 x2376)
+:assumption (or x3887 (not x16716) x23809)
+:assumption (or x5769 (not x3060))
+:assumption (or (not x22837) (not x15096))
+:assumption (or (not x20035) (not x27169))
+:assumption (or x30766 (not x27950))
+:assumption (or x10005 (not x3075))
+:assumption (or (not x30124) x7808)
+:assumption (or (not x499) x13198 (not x24122) (not x8002))
+:assumption (or x16135 (not x13956) (not x5036))
+:assumption (or x25954 (not x15666))
+:assumption (or (not x6608) x16117)
+:assumption (or x17782 (not x20643))
+:assumption (or x8055 x15331)
+:assumption (or (not x27057) x15007)
+:assumption (or (not x6274) x23950 (not x14455))
+:assumption (or x6994 x16781)
+:assumption (or x2694 x5028 (not x8434))
+:assumption (or (not x30454) (not x17049))
+:assumption (or x6838 x31066)
+:assumption (or (not x807) (not x633) (not x24079))
+:assumption (or x4368 (not x3001))
+:assumption (or (not x31857) x18251)
+:assumption (or (not x30205) (not x12212))
+:assumption (or (not x30576) x23244)
+:assumption (or x6969 (not x14636))
+:assumption (or x27360 x23272)
+:assumption (or (not x26298) (not x15958))
+:assumption (or x24102 (not x29465) (not x15000) (not x15899) (not x7374) (not x15250) x28437 x31880)
+:assumption (or x31925 (not x7636))
+:assumption (or x28834 x9226)
+:assumption (or x30765 (not x218))
+:assumption (or x6834 x23800)
+:assumption (or (not x22075) x10069)
+:assumption (or (not x6702) (not x4427))
+:assumption (or (not x11286) (not x16814))
+:assumption (or x5102 (not x11689))
+:assumption (or (not x22259) x20092)
+:assumption (or (not x13136) (not x19702) x16374 x27530 (not x12994))
+:assumption (or x21298 x27849)
+:assumption (or (not x16236) (not x4151))
+:assumption (or x24679 (not x7011))
+:assumption (or (not x17016) (not x23840))
+:assumption (or x12397 (not x19515))
+:assumption (or (not x21092) x11959 x8002)
+:assumption (or x7950 (not x26996))
+:assumption (or x2983 x21520)
+:assumption (or x27052 x4289)
+:assumption (or (not x3060) (not x13092))
+:assumption (or (not x2723) x8665)
+:assumption (or (not x11194) x24447)
+:assumption (or (not x23045) x16166)
+:assumption (or (not x31752) x16704)
+:assumption (or x2526 x3850)
+:assumption (or (not x26200) (not x25417) (not x7108) x4559)
+:assumption (or (not x20535) (not x26424))
+:assumption (or (not x11504) x13357)
+:assumption (or (not x27617) (not x16950))
+:assumption (or (not x9463) x3736)
+:assumption (or x30240 (not x31853))
+:assumption (or x10630 x17440)
+:assumption (or (not x23957) x1974)
+:assumption (or x4341 x953)
+:assumption (or x9227 x20934)
+:assumption (or (not x13956) x23084)
+:assumption (or x26389 (not x16510))
+:assumption (or (not x26247) x28466)
+:assumption (or x9681 x9045)
+:assumption (or x21815 (not x7861))
+:assumption (or (not x31734) (not x13067))
+:assumption (or x5324 (not x14062) (not x28893) x18654 (not x35) x29497 (not x10723))
+:assumption (or (not x28682) (not x23822))
+:assumption (or x9008 (not x29835))
+:assumption (or (not x30712) x30343)
+:assumption (or (not x8175) (not x6732))
+:assumption (or (not x27419) x7390)
+:assumption (or x22701 (not x10401))
+:assumption (or x29443 (not x19739))
+:assumption (or (not x23244) (not x11767))
+:assumption (or (not x22740) x8358)
+:assumption (or x27631 (not x9272))
+:assumption (or (not x12498) x17318)
+:assumption (or (not x31267) x6905)
+:assumption (or x6676 x21981)
+:assumption (or x18069 (not x237))
+:assumption (or x29555 (not x29959) x8714 x6594)
+:assumption (or x22629 x8002)
+:assumption (or (not x13067) (not x30605))
+:assumption (or x15459 x16893)
+:assumption (or (not x12969) (not x8359) x17783 (not x22986) x20153 (not x29685) x31694 (not x19092) x3782)
+:assumption (or x15780 x10120)
+:assumption (or (not x16548) x12763)
+:assumption (or (not x31181) (not x9535))
+:assumption (or (not x3055) (not x14177))
+:assumption (or (not x9704) x15334 x19835 x12152 x1663)
+:assumption (or (not x10902) (not x27537) x18533)
+:assumption (or (not x10874) (not x15756))
+:assumption (or (not x8322) x26912)
+:assumption (or (not x19331) x17075)
+:assumption (or (not x3495) (not x27956))
+:assumption (or x8961 x13427)
+:assumption (or x6149 x4100)
+:assumption (or x18069 x11716)
+:assumption (or x23065 x19535)
+:assumption (or x25356 (not x26972))
+:assumption (or x18473 x11214)
+:assumption (or (not x7274) x8938)
+:assumption (or (not x13014) (not x3431))
+:assumption (or (not x30289) (not x16472))
+:assumption (or (not x27227) x17515)
+:assumption (or (not x2002) (not x14732))
+:assumption (or (not x25972) x9951)
+:assumption (or x18153 (not x5028))
+:assumption (or (not x5528) x16654 x17016 (not x9008) (not x28583))
+:assumption (or (not x26453) x18829)
+:assumption (or x17480 (not x14518) (not x8309) (not x9152) (not x29298) (not x27090) x26249)
+:assumption (or (not x15596) x30102)
+:assumption (or x20495 x29136)
+:assumption (or (not x26785) x25911)
+:assumption (or (not x5072) x16940)
+:assumption (or (not x2495) (not x7032))
+:assumption (or (not x25819) x20855)
+:assumption (or x4212 x29316)
+:assumption (or (not x11043) x24013)
+:assumption (or x19604 x30613)
+:assumption (or x5028 x22303)
+:assumption (or (not x24518) (not x10105))
+:assumption (or x3974 x14750)
+:assumption (or x9422 (not x7600))
+:assumption (or x7028 x31552 (not x9375) (not x8044) (not x23776) x7404)
+:assumption (or x4417 x21815)
+:assumption (or x14839 (not x17782))
+:assumption (or x27783 (not x11844) (not x18069))
+:assumption (or x31379 x25552)
+:assumption (or x7999 x1378 x29732 (not x16435))
+:assumption (or x2738 x12213 x18325 x17349 x7956 (not x9971))
+:assumption (or x4397 x3277 x13877)
+:assumption (or x26459 (not x6553) (not x26688) (not x19322))
+:assumption (or (not x17722) (not x14005) (not x5727) (not x3625) x19700 (not x13972) x29645 x4568 x18066)
+:assumption (or x25659 (not x30768) (not x29362))
+:assumption (or x22661 (not x7266) x27801)
+:assumption (or x320 x25720)
+:assumption (or (not x8002) (not x27731))
+:assumption (or x887 x28188)
+:assumption (or (not x3136) (not x23074))
+:assumption (or x29852 (not x22766) x28359)
+:assumption (or (not x480) (not x23602) (not x14358) (not x6396))
+:assumption (or (not x19506) x16715)
+:assumption (or (not x2485) x24402)
+:assumption (or x17623 (not x17359))
+:assumption (or x21507 (not x16816))
+:assumption (or x7943 (not x30138))
+:assumption (or (not x9008) x6401 x6770)
+:assumption (or (not x9287) (not x17225) (not x10243) x31005)
+:assumption (or (not x2102) x22918 x11288)
+:assumption (or (not x29872) (not x1458))
+:assumption (or x2171 x15801)
+:assumption (or x22308 x69 x25162)
+:assumption (or x23721 (not x2115))
+:assumption (or x12514 x22175)
+:assumption (or (not x15573) (not x18891))
+:assumption (or (not x7754) x30912)
+:assumption (or x11506 x20865)
+:assumption (or (not x14099) x16609)
+:assumption (or x5025 (not x11240) (not x12234))
+:assumption (or x9008 (not x17759))
+:assumption (or (not x16025) x23191)
+:assumption (or (not x9976) x2955)
+:assumption (or (not x25952) x12668)
+:assumption (or (not x28696) (not x1673) x9008)
+:assumption (or (not x17058) (not x27049))
+:assumption (or (not x5749) x31280)
+:assumption (or x12350 x22079)
+:assumption (or (not x30914) x28218 x5528)
+:assumption (or x20992 (not x13169))
+:assumption (or x14747 (not x24995))
+:assumption (or x22026 x6980)
+:assumption (or (not x7648) x827)
+:assumption (or (not x4159) (not x16025))
+:assumption (or x24602 (not x11332))
+:assumption (or x24253 x28588)
+:assumption (or x27746 x2591)
+:assumption (or (not x23712) x6118 x2906)
+:assumption (or x13661 x16918)
+:assumption (or (not x29442) (not x263))
+:assumption (or (not x790) (not x22358))
+:assumption (or (not x25366) x19864 x26554 (not x7188))
+:assumption (or (not x21345) (not x9364))
+:assumption (or x13015 x29916)
+:assumption (or (not x19677) x25489)
+:assumption (or (not x9572) (not x2314))
+:assumption (or (not x13745) (not x2133))
+:assumption (or x5320 x28216)
+:assumption (or (not x9635) x16081)
+:assumption (or (not x29307) (not x2065))
+:assumption (or (not x13698) x27608)
+:assumption (or (not x23514) (not x28239))
+:assumption (or x13611 x14340)
+:assumption (or x17010 x3965)
+:assumption (or x5341 x5989)
+:assumption (or (not x8187) (not x20603))
+:assumption (or (not x2672) (not x5826))
+:assumption (or x30192 x18688 (not x366))
+:assumption (or x31698 (not x3199) (not x10587) x11199)
+:assumption (or x9998 x2246)
+:assumption (or x25962 x15053)
+:assumption (or (not x15150) (not x318))
+:assumption (or (not x4138) x22134)
+:assumption (or (not x26512) (not x7906))
+:assumption (or x21646 x27525)
+:assumption (or (not x19431) (not x6821))
+:assumption (or x23135 (not x30401))
+:assumption (or (not x18520) (not x28157))
+:assumption (or x15862 x1993)
+:assumption (or x1902 (not x15334))
+:assumption (or (not x14704) (not x12730) x981)
+:assumption (or (not x953) x29468)
+:assumption (or x13501 x10270)
+:assumption (or (not x13956) x3824)
+:assumption (or (not x26774) x10585)
+:assumption (or x5908 (not x16793))
+:assumption (or x24931 (not x16849))
+:assumption (or x24912 x29047)
+:assumption (or (not x6749) x22025)
+:assumption (or (not x25764) (not x22917))
+:assumption (or (not x6133) (not x15820))
+:assumption (or (not x6970) (not x16025))
+:assumption (or (not x19864) x18003 (not x4531) x4259 x19948 (not x923))
+:assumption (or x6708 x19653)
+:assumption (or (not x26346) x22531)
+:assumption (or x2118 x14951)
+:assumption (or (not x16454) (not x10708))
+:assumption (or (not x27974) (not x8862))
+:assumption (or x5821 x31608)
+:assumption (or (not x14228) x3901)
+:assumption (or x17323 x11800)
+:assumption (or x15593 x11204)
+:assumption (or (not x25659) x31510)
+:assumption (or (not x29913) x13972)
+:assumption (or (not x26874) x15537)
+:assumption (or (not x31884) (not x27864) (not x15765) (not x18370) (not x3417) (not x25523))
+:assumption (or x13993 (not x29166))
+:assumption (or x23883 x7720)
+:assumption (or x30594 x5895)
+:assumption (or x15919 x15440)
+:assumption (or (not x794) x23958)
+:assumption (or (not x12322) (not x8218) (not x31406) (not x14920) (not x9870) (not x27537) (not x20845) x18983)
+:assumption (or x23244 (not x29146))
+:assumption (or x2804 (not x24511))
+:assumption (or (not x420) (not x14342))
+:assumption (or x23708 x13487)
+:assumption (or x1467 x26745)
+:assumption (or (not x19619) (not x2325))
+:assumption (or (not x22502) x22281)
+:assumption (or x20978 x12287)
+:assumption (or (not x23337) x18630)
+:assumption (or x12393 x15900)
+:assumption (or (not x24521) x28913)
+:assumption (or x14196 (not x30324))
+:assumption (or (not x30630) x20718)
+:assumption (or x14784 (not x11777))
+:assumption (or x800 (not x24504))
+:assumption (or x8605 (not x22522))
+:assumption (or x19342 x5886)
+:assumption (or x19731 (not x24562))
+:assumption (or (not x16510) (not x3782) x4046 (not x14591) (not x1057) x6168 (not x21815))
+:assumption (or (not x3365) x15936)
+:assumption (or x13380 (not x9171))
+:assumption (or (not x9141) x18902 x8586 x3101)
+:assumption (or x29436 x22295)
+:assumption (or (not x20654) (not x30124))
+:assumption (or (not x3339) (not x4175))
+:assumption (or (not x13886) (not x20149))
+:assumption (or (not x26520) x2578)
+:assumption (or x17745 x6422 x21955 (not x7343))
+:assumption (or (not x7023) x26474)
+:assumption (or x16782 x17710)
+:assumption (or (not x27542) x13616)
+:assumption (or x15890 x16024)
+:assumption (or x30496 (not x8814))
+:assumption (or (not x11160) (not x14658))
+:assumption (or (not x26009) (not x18379))
+:assumption (or x12449 x30491 x29446 (not x16484) x11810 x9008)
+:assumption (or (not x21886) x2027)
+:assumption (or (not x9209) x16580)
+:assumption (or x16985 (not x18429))
+:assumption (or x16374 (not x26827))
+:assumption (or x23244 (not x12377))
+:assumption (or (not x1028) (not x27091))
+:assumption (or (not x26884) (not x27169))
+:assumption (or x26790 (not x17398))
+:assumption (or x24693 (not x6224))
+:assumption (or x31116 (not x30129))
+:assumption (or x26725 x18820)
+:assumption (or (not x21815) x23869)
+:assumption (or x14591 x1772)
+:assumption (or (not x2879) (not x25747))
+:assumption (or (not x30041) x20060)
+:assumption (or (not x25034) (not x25369))
+:assumption (or (not x14674) x964)
+:assumption (or x564 x18444)
+:assumption (or x15305 (not x20224))
+:assumption (or x10321 x15605)
+:assumption (or x10633 x16436)
+:assumption (or (not x355) x11771)
+:assumption (or x23753 x21411)
+:assumption (or (not x3087) (not x6016))
+:assumption (or x24123 x13408 x3567 (not x11989) (not x22173))
+:assumption (or x16147 (not x16761))
+:assumption (or x24169 (not x1380))
+:assumption (or (not x28708) x30964 x25784)
+:assumption (or (not x9531) x28902)
+:assumption (or x27738 (not x9946))
+:assumption (or x18694 x9149)
+:assumption (or (not x19465) (not x23496))
+:assumption (or x11632 x9809)
+:assumption (or (not x22395) x19864 (not x19160) x23068)
+:assumption (or (not x26220) (not x18260) x29613)
+:assumption (or (not x18158) x23874)
+:assumption (or x24102 (not x2174) x18674)
+:assumption (or (not x18716) x11610)
+:assumption (or x16802 (not x19299))
+:assumption (or (not x27915) x9998)
+:assumption (or x7479 x15354)
+:assumption (or x25906 x8602)
+:assumption (or (not x25606) (not x23893))
+:assumption (or x7537 (not x23399) x1731 (not x30434))
+:assumption (or (not x1901) (not x15431))
+:assumption (or x12322 (not x20569))
+:assumption (or x20482 x27616 (not x14295))
+:assumption (or x23925 x12748)
+:assumption (or (not x2748) (not x7586))
+:assumption (or x17385 (not x14524) x18841 (not x30388) x21891)
+:assumption (or x11069 x29026)
+:assumption (or (not x23244) x4835)
+:assumption (or x5232 x19224)
+:assumption (or (not x9028) (not x20800) x20588)
+:assumption (or (not x31861) (not x22884))
+:assumption (or (not x10064) (not x873) (not x3592))
+:assumption (or x28431 x2180)
+:assumption (or x28026 x13484)
+:assumption (or x19759 x19058)
+:assumption (or (not x25086) (not x31271))
+:assumption (or (not x19760) x12588)
+:assumption (or x1499 x23349)
+:assumption (or (not x11895) x25854)
+:assumption (or (not x29033) x8038)
+:assumption (or x21836 x13376 x30767 x19083 x12543)
+:assumption (or x2047 (not x23633))
+:assumption (or (not x1025) x6618 (not x15169) (not x13619) (not x13206) (not x2028) (not x23235))
+:assumption (or (not x9456) (not x21344))
+:assumption (or (not x27625) (not x2698))
+:assumption (or (not x3688) x26835)
+:assumption (or (not x18917) (not x31382))
+:assumption (or (not x16162) (not x9531))
+:assumption (or (not x10728) x5497)
+:assumption (or (not x9008) x3707 (not x7530) (not x5528) x25484)
+:assumption (or (not x9157) x24233)
+:assumption (or (not x6351) x1900 x397 x17387 x28055 x2366)
+:assumption (or x11037 x8602 (not x30688))
+:assumption (or (not x1930) x417)
+:assumption (or (not x15621) x18075)
+:assumption (or x8600 x28603)
+:assumption (or (not x4098) x20059)
+:assumption (or x9177 x765)
+:assumption (or (not x28823) x19992 x12151 x27021)
+:assumption (or (not x20532) x25823)
+:assumption (or x11792 (not x5066) (not x3880) x30074 x4560 (not x4814))
+:assumption (or x16117 (not x25014))
+:assumption (or (not x10352) x2179)
+:assumption (or x16464 x746)
+:assumption (or (not x23644) (not x1707))
+:assumption (or (not x4682) (not x13838))
+:assumption (or (not x8663) x5528)
+:assumption (or (not x30070) (not x12096))
+:assumption (or x4865 x2864)
+:assumption (or (not x9628) (not x26789))
+:assumption (or x25126 x2177)
+:assumption (or x9488 (not x4970))
+:assumption (or x7280 x9015)
+:assumption (or x288 (not x22975) x28973 (not x24341))
+:assumption (or x11863 x28170)
+:assumption (or x23080 x802)
+:assumption (or (not x20902) (not x31219))
+:assumption (or (not x25950) x12341)
+:assumption (or x12789 x12059)
+:assumption (or (not x9852) x13386)
+:assumption (or (not x4785) (not x19553))
+:assumption (or x8690 (not x2133) (not x20787))
+:assumption (or x16648 x2719)
+:assumption (or (not x3822) x24166 (not x16302) (not x27578))
+:assumption (or (not x20128) (not x20326))
+:assumption (or (not x19314) (not x29723))
+:assumption (or x5427 x10402)
+:assumption (or x1563 (not x1063))
+:assumption (or (not x9091) x9947)
+:assumption (or (not x12654) x13612)
+:assumption (or x30057 x6532)
+:assumption (or x10874 (not x6608))
+:assumption (or (not x15616) x14680 x20903 x26789)
+:assumption (or x31262 (not x539))
+:assumption (or x17249 (not x2200))
+:assumption (or x15383 (not x25659))
+:assumption (or (not x756) (not x30912))
+:assumption (or x14867 x12304 x10467 (not x16801) (not x14559))
+:assumption (or (not x12724) x14687)
+:assumption (or x18447 (not x1662))
+:assumption (or x27509 (not x20083))
+:assumption (or x21965 (not x6307) x7964 (not x10874))
+:assumption (or x22041 (not x16784))
+:assumption (or (not x5021) x30492)
+:assumption (or x5270 (not x390) x25659)
+:assumption (or (not x6177) (not x11757) (not x6604) x8700)
+:assumption (or (not x29121) (not x28050))
+:assumption (or x2093 x14107)
+:assumption (or x12481 x25814)
+:assumption (or x29417 (not x26728))
+:assumption (or x13913 x16562 (not x9975) x3456 x23332 (not x1390) x31519 x13213)
+:assumption (or x2561 x30148)
+:assumption (or x22088 (not x21182))
+:assumption (or x8821 x18416)
+:assumption (or x8002 (not x8417))
+:assumption (or (not x15355) (not x1678))
+:assumption (or x16025 x24107 x17906)
+:assumption (or (not x23878) x20385 (not x31135) x11302)
+:assumption (or x2528 x6273)
+:assumption (or x22893 x17913)
+:assumption (or (not x12607) (not x25491))
+:assumption (or (not x23675) (not x24301))
+:assumption (or x11486 x2950 (not x9008))
+:assumption (or x14687 x28400 (not x19420))
+:assumption (or x15039 x20521)
+:assumption (or (not x31463) x31423)
+:assumption (or (not x6171) x25115 (not x30509) (not x25011))
+:assumption (or (not x19138) (not x4348))
+:assumption (or (not x13013) x29319)
+:assumption (or x25566 (not x27640) (not x675))
+:assumption (or (not x23244) x10033)
+:assumption (or x14455 (not x2533))
+:assumption (or x27196 x25354)
+:assumption (or x873 x20417)
+:assumption (or x10083 x4677 (not x6122) (not x6231))
+:assumption (or x16741 x23219)
+:assumption (or (not x12844) (not x27095))
+:assumption (or (not x7483) (not x17369))
+:assumption (or (not x23358) x12242 (not x20325) (not x22066))
+:assumption (or x9137 x29606)
+:assumption (or x17378 (not x27336))
+:assumption (or x17471 (not x7553))
+:assumption (or (not x13045) (not x26939))
+:assumption (or (not x18317) x6403)
+:assumption (or x26583 x18500 x6783 (not x9008) (not x5528))
+:assumption (or (not x17000) x6651 (not x16510) x2996 x169 x29959 (not x21815))
+:assumption (or x27831 x20087 x26280 x4597)
+:assumption (or (not x10579) (not x20873))
+:assumption (or (not x23244) (not x4149))
+:assumption (or x26784 (not x16802) x21020)
+:assumption (or x4440 (not x13230))
+:assumption (or x20392 (not x5978))
+:assumption (or x344 x31186 (not x27594) (not x17442) x13265 (not x3174) (not x16039) (not x12032) x22276)
+:assumption (or (not x21355) (not x25346))
+:assumption (or (not x762) (not x29342))
+:assumption (or x13409 (not x12552))
+:assumption (or (not x17995) x964)
+:assumption (or (not x187) x25635)
+:assumption (or x21546 (not x14589))
+:assumption (or x27811 (not x20887))
+:assumption (or x14033 (not x272))
+:assumption (or (not x25498) (not x8584))
+:assumption (or (not x23938) x24501)
+:assumption (or x12676 (not x18695))
+:assumption (or (not x30881) (not x13036) x11103 (not x18924))
+:assumption (or x9017 (not x4050))
+:assumption (or (not x18205) (not x10795))
+:assumption (or x8935 x16174)
+:assumption (or (not x4356) x10819)
+:assumption (or x26260 (not x9743))
+:assumption (or x17763 (not x6609))
+:assumption (or x31175 x22986)
+:assumption (or x16854 x16710)
+:assumption (or x29090 (not x10828))
+:assumption (or (not x21660) (not x13772))
+:assumption (or x16008 x15696)
+:assumption (or x14920 (not x18813))
+:assumption (or x6381 x17893)
+:assumption (or x8801 (not x4989))
+:assumption (or (not x562) (not x11606))
+:assumption (or x23778 x16160)
+:assumption (or x650 x25508 (not x29521) x1403 (not x20371) (not x20327) x8120)
+:assumption (or x9008 (not x24859))
+:assumption (or x1764 x27369)
+:assumption (or (not x2057) (not x29538))
+:assumption (or (not x17016) (not x8693))
+:assumption (or x4436 x18187 (not x20276))
+:assumption (or x12552 (not x23797))
+:assumption (or (not x20994) x2780 x2263 x7034 x30614 x18522 (not x5782) (not x25309) x6141)
+:assumption (or (not x6354) (not x30398))
+:assumption (or x2400 (not x18042))
+:assumption (or x22308 (not x26287))
+:assumption (or x13028 (not x3491))
+:assumption (or (not x15917) x4527)
+:assumption (or (not x30413) (not x894))
+:assumption (or (not x11045) x30559)
+:assumption (or x24527 (not x18961))
+:assumption (or (not x14239) x17065)
+:assumption (or x7248 (not x7103))
+:assumption (or (not x28623) (not x26952))
+:assumption (or (not x5722) (not x25638))
+:assumption (or x22885 (not x11607))
+:assumption (or x27928 (not x20898) x14720)
+:assumption (or (not x22531) (not x4439))
+:assumption (or (not x14021) (not x1707))
+:assumption (or (not x28763) x16032)
+:assumption (or x30454 x17049)
+:assumption (or x28032 x14578)
+:assumption (or x31864 x9728 x11367 x28857 x30500 x4975 (not x23510) x15561)
+:assumption (or x223 x3838)
+:assumption (or x28918 x24600)
+:assumption (or x20194 (not x19250))
+:assumption (or x16003 x31506)
+:assumption (or (not x18593) x9782)
+:assumption (or x10707 (not x30751) x8658 (not x18399))
+:assumption (or (not x16721) x6704 (not x11288))
+:assumption (or (not x16412) x20862 (not x17347) x5467)
+:assumption (or (not x2595) (not x3680) (not x28475) (not x7280) x14362 (not x8081))
+:assumption (or x12533 (not x26030))
+:assumption (or (not x485) (not x18594) (not x25224) (not x30883) x14411)
+:assumption (or (not x2533) x15356)
+:assumption (or (not x26053) (not x2174))
+:assumption (or x14438 (not x11274))
+:assumption (or (not x27168) x27178)
+:assumption (or (not x19677) x26519 x25671)
+:assumption (or x18116 (not x12880) x30856 (not x25355))
+:assumption (or x15381 x2596)
+:assumption (or (not x24433) x4581)
+:assumption (or x13498 x20015)
+:assumption (or (not x20016) (not x5671))
+:assumption (or x20698 (not x25611))
+:assumption (or x21856 x18157)
+:assumption (or (not x5394) (not x964) x9587 x13214)
+:assumption (or (not x18458) x23850)
+:assumption (or (not x24670) x1904 (not x10301) (not x8790) (not x31134))
+:assumption (or x28990 (not x13974) x7859)
+:assumption (or (not x20084) (not x21597))
+:assumption (or (not x586) (not x881))
+:assumption (or (not x14545) x14876)
+:assumption (or (not x28230) (not x1527))
+:assumption (or (not x12973) x10939)
+:assumption (or (not x5095) (not x4291) (not x27754))
+:assumption (or x5018 (not x17176) (not x9013) (not x26497) (not x25560) x5769 (not x11569) x31894 x3538 x22972 x18376)
+:assumption (or (not x9265) x8327)
+:assumption (or x4335 (not x9594))
+:assumption (or (not x24655) (not x21653) (not x4087))
+:assumption (or x18642 (not x18586))
+:assumption (or x276 x15086)
+:assumption (or x9947 x2984)
+:assumption (or (not x23364) (not x3381))
+:assumption (or (not x23562) (not x27925))
+:assumption (or (not x25419) x6434 x4408 x4432 x22679)
+:assumption (or x17584 x4398)
+:assumption (or (not x4057) x390)
+:assumption (or x21282 x22425)
+:assumption (or x4378 x28410 (not x20258) (not x26816) x19538 x31241)
+:assumption (or x24430 x23858)
+:assumption (or x12421 (not x12833))
+:assumption (or (not x17935) x16117)
+:assumption (or x9939 x29944)
+:assumption (or x15765 x31884)
+:assumption (or x30751 x15529)
+:assumption (or (not x15795) (not x3477))
+:assumption (or x1393 (not x26318) x2699)
+:assumption (or (not x16452) x20735 (not x14357))
+:assumption (or (not x10694) (not x22231))
+:assumption (or (not x15513) (not x18042))
+:assumption (or (not x8915) (not x24140))
+:assumption (or (not x27875) (not x3098) (not x18469) x21681 x15887 x6193)
+:assumption (or x7695 (not x19625))
+:assumption (or (not x12100) (not x16286))
+:assumption (or (not x6309) (not x6856))
+:assumption (or (not x16997) (not x3036))
+:assumption (or x9800 (not x13499))
+:assumption (or x25606 x18058 (not x23064) x29282)
+:assumption (or (not x2641) (not x13956))
+:assumption (or (not x27184) x6306)
+:assumption (or x24624 (not x12116) (not x7817))
+:assumption (or x8975 (not x245))
+:assumption (or (not x11077) (not x4477))
+:assumption (or x10444 x12765)
+:assumption (or (not x18575) (not x4352))
+:assumption (or (not x27703) x24593)
+:assumption (or x7249 (not x20183))
+:assumption (or x27741 x10413)
+:assumption (or (not x29772) (not x9833) (not x21341) x24769 x3507 x23530)
+:assumption (or (not x8002) (not x1129) x15102 x21874)
+:assumption (or (not x2373) x23043)
+:assumption (or x14120 (not x24109))
+:assumption (or (not x16008) x30039 (not x482) (not x4705) x1071)
+:assumption (or (not x31818) (not x28541))
+:assumption (or (not x17075) (not x23695))
+:assumption (or (not x26094) x19992)
+:assumption (or x9304 (not x31287))
+:assumption (or x11165 (not x17125))
+:assumption (or (not x19759) (not x17775))
+:assumption (or (not x11274) (not x24486))
+:assumption (or x14206 x25545)
+:assumption (or x3664 (not x20550))
+:assumption (or (not x8930) x30819)
+:assumption (or (not x19106) (not x21653) x2669)
+:assumption (or x19833 (not x27998) x9342)
+:assumption (or (not x9888) (not x3098))
+:assumption (or x3357 x7542)
+:assumption (or x31007 (not x19630))
+:assumption (or (not x15325) (not x9585))
+:assumption (or (not x29312) x2218)
+:assumption (or (not x25659) x27390)
+:assumption (or x28312 x13079)
+:assumption (or x16304 (not x18072))
+:assumption (or (not x14944) (not x17635))
+:assumption (or (not x12000) x31439)
+:assumption (or (not x14153) (not x24164))
+:assumption (or (not x24007) (not x17938))
+:assumption (or x13297 (not x23922))
+:assumption (or (not x9531) (not x7217) (not x4710))
+:assumption (or (not x2501) x14445)
+:assumption (or (not x964) (not x2508) (not x16610) x16637 x12852 x31489 x16951)
+:assumption (or x18035 (not x17498))
+:assumption (or (not x6307) x774)
+:assumption (or (not x6594) (not x12754))
+:assumption (or x22472 x7567)
+:assumption (or (not x29806) x7251)
+:assumption (or x18772 (not x29082))
+:assumption (or (not x24722) (not x6131))
+:assumption (or (not x5598) (not x26784))
+:assumption (or x15304 x8229)
+:assumption (or x28985 (not x8922))
+:assumption (or (not x26810) x20054 x21298 (not x22948))
+:assumption (or x25360 x21124)
+:assumption (or x14320 x24302)
+:assumption (or x11747 x14395)
+:assumption (or (not x15971) x15356)
+:assumption (or (not x26955) (not x3578))
+:assumption (or (not x12814) (not x31134))
+:assumption (or (not x827) x6033)
+:assumption (or x14930 x8287)
+:assumption (or (not x30065) (not x7439))
+:assumption (or (not x1856) (not x27143))
+:assumption (or (not x11266) (not x26376))
+:assumption (or x3782 x17923 x4329)
+:assumption (or (not x10737) (not x19649))
+:assumption (or (not x11151) (not x9168))
+:assumption (or (not x16360) x10832)
+:assumption (or x18850 (not x3449))
+:assumption (or (not x31767) x20605)
+:assumption (or (not x26717) (not x30659) (not x15416) x29133 x28230 x1527 (not x4422))
+:assumption (or (not x31643) x3224)
+:assumption (or x15709 x6344)
+:assumption (or x15481 x25659 x8392)
+:assumption (or (not x4325) x20718)
+:assumption (or (not x13596) x7854)
+:assumption (or x9531 x21500)
+:assumption (or x22962 x10658 (not x25236) x12414 (not x14931) x9583 (not x9854))
+:assumption (or x11590 x13081 (not x2517) (not x13762))
+:assumption (or x24147 x21538)
+:assumption (or x21128 x26020)
+:assumption (or (not x6461) (not x29312))
+:assumption (or (not x7306) x25615)
+:assumption (or x22679 x28350)
+:assumption (or (not x31906) (not x31591))
+:assumption (or (not x16765) x9086)
+:assumption (or (not x5371) x29411)
+:assumption (or x6919 (not x24330))
+:assumption (or x21546 (not x8424))
+:assumption (or (not x12256) (not x16184))
+:assumption (or x610 x14352)
+:assumption (or (not x1891) (not x21267))
+:assumption (or x12923 (not x5248) x16393)
+:assumption (or (not x10342) (not x26736))
+:assumption (or x23525 x22906)
+:assumption (or x10605 (not x16252))
+:assumption (or x6104 x18413)
+:assumption (or (not x26605) x12934)
+:assumption (or (not x386) x9208)
+:assumption (or (not x5528) x11630 x14377 x20024 (not x11382) (not x347))
+:assumption (or x25659 (not x2995))
+:assumption (or x25122 x30636)
+:assumption (or (not x3435) (not x11863))
+:assumption (or x24572 x27006)
+:assumption (or x20087 x3020 x20140)
+:assumption (or (not x24710) (not x14490))
+:assumption (or x16190 (not x2190) (not x31126) (not x3837) x14631 (not x6715) (not x5372) x11833 (not x29506))
+:assumption (or (not x20932) x28821)
+:assumption (or x9916 x655)
+:assumption (or (not x8824) x14435 x12907)
+:assumption (or (not x11376) (not x23903))
+:assumption (or x8887 (not x534))
+:assumption (or x21430 x12669)
+:assumption (or x14937 x2614)
+:assumption (or x23244 x8002 (not x7819) x25484 (not x23674))
+:assumption (or (not x23787) x8002)
+:assumption (or (not x16277) (not x10204) (not x30271) x6243)
+:assumption (or x1629 x19478)
+:assumption (or x827 (not x5052))
+:assumption (or x7497 (not x27286))
+:assumption (or (not x15857) (not x21874))
+:assumption (or x12930 x20609)
+:assumption (or x11413 (not x28593))
+:assumption (or x8002 x11090)
+:assumption (or (not x30439) (not x28655))
+:assumption (or x14211 x29333)
+:assumption (or (not x20588) x24829)
+:assumption (or (not x11488) (not x21999) (not x30696) x4720 x17115 (not x15327) x2963)
+:assumption (or x19340 (not x5711))
+:assumption (or (not x16068) (not x11995))
+:assumption (or x30655 (not x21341) x23530 (not x9833) x9008 x3507)
+:assumption (or (not x29073) (not x16741))
+:assumption (or (not x25807) (not x12572))
+:assumption (or x8794 x7661)
+:assumption (or (not x28495) (not x11786))
+:assumption (or (not x25659) (not x10721))
+:assumption (or (not x29620) x15929)
+:assumption (or x1364 (not x19134))
+:assumption (or (not x27227) x27121)
+:assumption (or x4313 x18223)
+:assumption (or x11665 x954)
+:assumption (or (not x6473) x16948)
+:assumption (or (not x1695) (not x31038))
+:assumption (or (not x18678) x17429)
+:assumption (or x9295 (not x18948))
+:assumption (or (not x1630) x3852)
+:assumption (or (not x19131) x14206 x14929)
+:assumption (or x29724 x1667)
+:assumption (or x20194 x10739)
+:assumption (or x13956 (not x19600))
+:assumption (or (not x20316) (not x26246) x2151 (not x27699) (not x30667) x13709)
+:assumption (or (not x25376) x2872 x9003)
+:assumption (or (not x12906) x24077)
+:assumption (or (not x840) x202)
+:assumption (or x19335 x31280)
+:assumption (or (not x22193) x20731)
+:assumption (or (not x16931) x23690 x31889 x23244 (not x2083))
+:assumption (or x20315 (not x6307))
+:assumption (or x23859 x26390)
+:assumption (or x15657 x11149)
+:assumption (or (not x15112) x9314)
+:assumption (or x27245 x3519)
+:assumption (or (not x2003) x1341)
+:assumption (or x11178 x27862)
+:assumption (or x13353 (not x3365))
+:assumption (or x7498 x3665)
+:assumption (or x21908 x20937)
+:assumption (or x8702 (not x7283))
+:assumption (or x8368 x4577)
+:assumption (or x15022 (not x27317))
+:assumption (or (not x3775) x12759)
+:assumption (or (not x26090) x681)
+:assumption (or x29442 (not x14950))
+:assumption (or (not x21510) x5886)
+:assumption (or (not x4640) x4235 x16374 (not x19759) x31457)
+:assumption (or x26336 (not x11194))
+:assumption (or x13487 x30798)
+:assumption (or (not x31829) (not x15864))
+:assumption (or x21950 x21060)
+:assumption (or (not x8135) (not x627))
+:assumption (or (not x19622) (not x469) x25776 x15260 x27545)
+:assumption (or (not x1695) (not x14805))
+:assumption (or (not x23810) x6880)
+:assumption (or (not x21874) x8002)
+:assumption (or x7581 x31742)
+:assumption (or x25911 x5153)
+:assumption (or x20889 (not x20949))
+:assumption (or x28562 x28917)
+:assumption (or (not x5817) x8273)
+:assumption (or x13500 (not x9677))
+:assumption (or x9614 (not x16996) x12466 x9050 (not x16073) (not x24323) x30381)
+:assumption (or (not x12429) x24881)
+:assumption (or (not x25264) x9008)
+:assumption (or (not x14771) (not x8121))
+:assumption (or x31103 x2800 (not x8985) x218 (not x29543) x6434)
+:assumption (or (not x10345) (not x23712) (not x4058))
+:assumption (or x5179 (not x8514))
+:assumption (or x25560 (not x22972))
+:assumption (or x26432 x709)
+:assumption (or (not x8349) (not x9008) x23967)
+:assumption (or x15235 x25804)
+:assumption (or (not x29795) x23694)
+:assumption (or (not x7260) x16735)
+:assumption (or (not x12127) (not x30138) x28869)
+:assumption (or x4601 x7284)
+:assumption (or (not x8461) x15320)
+:assumption (or (not x28328) x17984 x23558)
+:assumption (or x28346 (not x23321))
+:assumption (or (not x12783) (not x21818))
+:assumption (or (not x14960) x27532)
+:assumption (or x18549 (not x30891) (not x13402) x28245)
+:assumption (or x22855 (not x25448) x480 x8208)
+:assumption (or x9008 (not x30182) (not x10461))
+:assumption (or (not x30138) (not x24470))
+:assumption (or x16810 x15393)
+:assumption (or x26822 (not x20402) x16025 (not x21298))
+:assumption (or (not x28708) (not x13827))
+:assumption (or (not x28708) (not x26503))
+:assumption (or x1393 x31213)
+:assumption (or (not x24722) (not x5759))
+:assumption (or x8062 (not x964))
+:assumption (or x2029 (not x11203))
+:assumption (or (not x26523) x18555)
+:assumption (or (not x14542) (not x22792))
+:assumption (or (not x29638) (not x31243))
+:assumption (or x29358 x11539)
+:assumption (or x8721 x25090)
+:assumption (or (not x21936) (not x8002))
+:assumption (or x8274 (not x21022))
+:assumption (or x2751 x5464)
+:assumption (or (not x31772) x1314)
+:assumption (or (not x22086) (not x19223))
+:assumption (or x5639 (not x25792))
+:assumption (or x25419 x29543)
+:assumption (or x3147 x18025)
+:assumption (or x23279 (not x13110))
+:assumption (or x18132 x12294)
+:assumption (or x24612 x29612)
+:assumption (or (not x8042) (not x4886))
+:assumption (or x9837 (not x23120))
+:assumption (or x2675 x28241)
+:assumption (or (not x23324) (not x21702))
+:assumption (or x30231 (not x18694))
+:assumption (or x31854 x4404)
+:assumption (or (not x1104) x6557 (not x3494))
+:assumption (or (not x28436) x20897)
+:assumption (or (not x6792) x14067)
+:assumption (or (not x19287) (not x25704))
+:assumption (or x13849 (not x14117))
+:assumption (or (not x22220) x20524 x9647 x22578)
+:assumption (or (not x16409) (not x26599))
+:assumption (or (not x16025) x14937)
+:assumption (or (not x26897) x18926)
+:assumption (or (not x17384) x6832 (not x15866))
+:assumption (or (not x17107) (not x7291))
+:assumption (or x23470 (not x11174) x3397 x22528 (not x489) (not x31599) (not x11337) (not x19269))
+:assumption (or x11896 x24581)
+:assumption (or x316 (not x21653))
+:assumption (or (not x2059) x20775)
+:assumption (or (not x28585) (not x3092) (not x72) x17779)
+:assumption (or (not x12498) (not x612))
+:assumption (or x14561 x8674 x8602 (not x2471) x21443 (not x31363) x24306 x5731)
+:assumption (or (not x15404) (not x9732) x10854)
+:assumption (or (not x11112) (not x21815))
+:assumption (or (not x31039) (not x24514))
+:assumption (or (not x17574) x20938)
+:assumption (or x9646 x5907 x9008)
+:assumption (or (not x2261) x21298)
+:assumption (or (not x14578) x27460)
+:assumption (or x8002 x5949)
+:assumption (or (not x19935) (not x27415))
+:assumption (or (not x26243) (not x22482))
+:assumption (or (not x5658) (not x27184))
+:assumption (or (not x30922) x22455)
+:assumption (or x26505 x14227)
+:assumption (or x21512 (not x15037))
+:assumption (or x8427 (not x14517))
+:assumption (or x16065 x19236)
+:assumption (or (not x5367) (not x29645) x16748)
+:assumption (or (not x19295) (not x3786))
+:assumption (or x17803 x29840)
+:assumption (or x26323 x14932)
+:assumption (or (not x771) x9310)
+:assumption (or (not x18846) x4478)
+:assumption (or x31918 (not x12966))
+:assumption (or (not x23399) x26948)
+:assumption (or (not x23358) x9907)
+:assumption (or (not x14125) x13989)
+:assumption (or (not x21443) x10133)
+:assumption (or x19965 (not x645))
+:assumption (or x22619 (not x26795))
+:assumption (or (not x28209) x15836 x9453 x4451 (not x27076))
+:assumption (or (not x22154) (not x23853))
+:assumption (or (not x31549) (not x18533))
+:assumption (or x28197 x10941)
+:assumption (or x28973 (not x23244) x30811)
+:assumption (or (not x3596) x9490)
+:assumption (or (not x25955) x16342)
+:assumption (or x25149 x21815)
+:assumption (or x25379 (not x28748))
+:assumption (or (not x23958) x28855)
+:assumption (or (not x10795) x23465)
+:assumption (or x2285 (not x16495))
+:assumption (or x30828 x27909)
+:assumption (or (not x11986) x3939)
+:assumption (or x11151 (not x19475))
+:assumption (or x10590 x7361)
+:assumption (or x20371 (not x21364))
+:assumption (or x5327 (not x13576) (not x16003))
+:assumption (or x5528 (not x7821))
+:assumption (or x9706 (not x19840))
+:assumption (or (not x8073) x24768)
+:assumption (or x8226 (not x16286))
+:assumption (or x28161 x19183 (not x30172))
+:assumption (or (not x18594) (not x14535))
+:assumption (or (not x12013) (not x27997))
+:assumption (or x25755 (not x23562) x24722)
+:assumption (or x31442 x15310)
+:assumption (or (not x7645) x29257 x7927 x22502 x16232 x3819 x1813 x23723)
+:assumption (or (not x14536) (not x18231))
+:assumption (or x12576 (not x3254))
+:assumption (or x11923 (not x8002))
+:assumption (or (not x12480) x3126)
+:assumption (or (not x28708) (not x25410))
+:assumption (or (not x14347) x1013 x12239)
+:assumption (or x29374 x14580)
+:assumption (or x6667 x11970 x28300 (not x20194) x14160 x6016)
+:assumption (or x18982 x10768)
+:assumption (or x6307 x25930)
+:assumption (or (not x28335) (not x18507))
+:assumption (or x15787 x11885)
+:assumption (or (not x7600) x28735)
+:assumption (or x7299 x16479 x28354)
+:assumption (or (not x10146) x30072)
+:assumption (or (not x24563) (not x8409))
+:assumption (or (not x25381) (not x1775) (not x687))
+:assumption (or x18872 x22911)
+:assumption (or (not x24155) x529)
+:assumption (or x28208 x29606)
+:assumption (or x16362 (not x5528) x6812 (not x9008) x14695)
+:assumption (or x22378 x16310)
+:assumption (or (not x13529) x17371)
+:assumption (or x3869 x31873)
+:assumption (or x10576 x1247 x11170 (not x277) x30124)
+:assumption (or x3494 x17676)
+:assumption (or x13727 (not x31372))
+:assumption (or x21485 (not x25659) (not x27093) (not x26383) x21266 x21282)
+:assumption (or (not x25310) x12811)
+:assumption (or (not x5237) (not x1589))
+:assumption (or (not x21912) (not x13143) x24304 x29618 (not x28887))
+:assumption (or (not x26893) x28951)
+:assumption (or x16335 (not x1774))
+:assumption (or x14371 (not x26457))
+:assumption (or (not x24722) (not x3889))
+:assumption (or (not x17292) (not x22494))
+:assumption (or (not x21222) (not x3710) x15913 (not x13458) x7180 x14331 (not x21853) (not x613))
+:assumption (or x24722 x13932)
+:assumption (or (not x30469) (not x19381))
+:assumption (or x12588 (not x11983))
+:assumption (or (not x29519) x19878)
+:assumption (or (not x12776) (not x24898))
+:assumption (or (not x22936) (not x6316))
+:assumption (or x1390 (not x28007))
+:assumption (or (not x545) x30751 (not x24504))
+:assumption (or x4819 (not x15160))
+:assumption (or (not x9008) x2179)
+:assumption (or (not x12881) (not x8843))
+:assumption (or x20723 x3104)
+:assumption (or x20875 x16378)
+:assumption (or (not x1772) (not x14591) x15795 (not x30219))
+:assumption (or x16454 x10708)
+:assumption (or (not x939) x16422)
+:assumption (or x6166 x1649)
+:assumption (or x15917 (not x27589) x873 (not x10064) (not x11241) (not x30496) x11858)
+:assumption (or x9008 x26185 (not x23105))
+:assumption (or x28014 (not x2840) (not x11004))
+:assumption (or x26781 x11243)
+:assumption (or x3548 x11868)
+:assumption (or x480 (not x26506))
+:assumption (or (not x12916) x10344)
+:assumption (or (not x2996) (not x2443))
+:assumption (or (not x28130) (not x18128))
+:assumption (or (not x12955) (not x18146) x18528 (not x30113))
+:assumption (or (not x28815) x15629)
+:assumption (or (not x12593) x28760)
+:assumption (or (not x10968) x9228)
+:assumption (or (not x5581) x21884)
+:assumption (or (not x26942) (not x3650))
+:assumption (or x21453 (not x19944))
+:assumption (or (not x13956) (not x9976))
+:assumption (or x26897 x5572)
+:assumption (or x28036 (not x8395))
+:assumption (or x1990 (not x635) (not x10127) x24066 x22227 (not x8846))
+:assumption (or x8608 (not x25490))
+:assumption (or (not x30353) x2098)
+:assumption (or x19992 (not x25619))
+:assumption (or x21217 (not x11410) x20487 x2790)
+:assumption (or x17184 x24801)
+:assumption (or (not x5715) (not x17930))
+:assumption (or x22938 (not x17977))
+:assumption (or x9282 x30631 (not x1867) x31083 (not x539))
+:assumption (or x19668 x2710)
+:assumption (or (not x15296) (not x8586))
+:assumption (or x20757 x1276)
+:assumption (or (not x1285) x22798)
+:assumption (or x7444 x27634 (not x17075))
+:assumption (or x13347 (not x12521) x21135 x14472 x9008 (not x31343))
+:assumption (or x25679 x8435)
+:assumption (or x22190 (not x29908))
+:assumption (or (not x3171) x10536 x31821)
+:assumption (or (not x14427) (not x22881))
+:assumption (or x12456 (not x14405))
+:assumption (or (not x14665) x14975)
+:assumption (or x960 x28061)
+:assumption (or (not x15795) x25975)
+:assumption (or (not x5174) x6770)
+:assumption (or (not x17359) x8706)
+:assumption (or x3734 (not x12930))
+:assumption (or (not x142) (not x30874))
+:assumption (or x25039 x20247)
+:assumption (or x18353 x14216 (not x9466) x1366 x21931 (not x24667))
+:assumption (or (not x31332) x14560)
+:assumption (or (not x5063) x29269 x22445 x27057 (not x17625))
+:assumption (or (not x17761) x7693 x2836 x27955 (not x17070) (not x12210))
+:assumption (or (not x13906) (not x25041))
+:assumption (or x26670 (not x13392))
+:assumption (or x31533 x15826)
+:assumption (or (not x27224) x31388)
+:assumption (or (not x21504) x3133 x24756 x22668 x30245)
+:assumption (or (not x13102) (not x22138))
+:assumption (or x9008 (not x20044))
+:assumption (or (not x19467) (not x837))
+:assumption (or x16022 (not x29014))
+:assumption (or x26028 x16405)
+:assumption (or x21501 x27072)
+:assumption (or (not x27976) (not x19006))
+:assumption (or x7835 (not x10249))
+:assumption (or (not x29824) (not x10774))
+:assumption (or (not x20405) x19503)
+:assumption (or (not x28626) x21241)
+:assumption (or x11707 x8832)
+:assumption (or x25467 (not x30138) x27032 x14700 (not x4895))
+:assumption (or x25659 x6817 (not x24543))
+:assumption (or x12021 x14729)
+:assumption (or x4631 (not x10229) x29447 x10389 (not x28914) (not x25411) (not x5436) x18859)
+:assumption (or x22059 (not x30771))
+:assumption (or (not x5337) x26432)
+:assumption (or x15428 x6145)
+:assumption (or x827 (not x16305))
+:assumption (or x27493 x25808)
+:assumption (or (not x28680) x5899)
+:assumption (or (not x13061) x20616)
+:assumption (or x21160 (not x10869))
+:assumption (or x11468 (not x16784))
+:assumption (or x13163 x31352)
+:assumption (or (not x10799) (not x14729) (not x827))
+:assumption (or x28764 (not x210))
+:assumption (or (not x964) (not x6556))
+:assumption (or (not x6289) (not x27917))
+:assumption (or x11433 x26876 (not x30902) (not x2100) (not x17963))
+:assumption (or x12191 (not x15994))
+:assumption (or x7694 x7006)
+:assumption (or (not x15863) (not x19344))
+:assumption (or x17820 (not x23915))
+:assumption (or (not x2592) (not x4386) x21757 (not x31010))
+:assumption (or (not x15732) (not x25683))
+:assumption (or (not x17592) (not x31880))
+:assumption (or (not x20698) x25611)
+:assumption (or x27167 (not x8561) (not x23244) (not x13902) (not x20475))
+:assumption (or x5796 x19009)
+:assumption (or x25513 x979)
+:assumption (or (not x20372) x9025)
+:assumption (or x6988 x15688)
+:assumption (or x29959 (not x18407))
+:assumption (or (not x3836) x2739)
+:assumption (or (not x5059) x29374)
+:assumption (or (not x28529) x11255)
+:assumption (or x14390 (not x22366) x14839 (not x18603))
+:assumption (or x21055 x16025 (not x28342))
+:assumption (or x31777 x31497 x12192 x20134)
+:assumption (or (not x3110) x19505 x29016 (not x31592) x28784 (not x19578))
+:assumption (or (not x295) (not x12113))
+:assumption (or x21008 x16025 x26913)
+:assumption (or x19028 x5976)
+:assumption (or x9057 (not x12292) x14948)
+:assumption (or (not x11561) x13461)
+:assumption (or (not x14845) (not x23946))
+:assumption (or x12115 (not x1049))
+:assumption (or x13216 x340)
+:assumption (or (not x3079) x30068)
+:assumption (or (not x27575) (not x4538))
+:assumption (or x353 x3738)
+:assumption (or (not x30853) x3185)
+:assumption (or (not x26504) (not x15404))
+:assumption (or (not x21843) (not x25108) (not x2999) x31702)
+:assumption (or x5366 x1039)
+:assumption (or x16534 (not x21710) (not x24858) (not x8587) (not x31708))
+:assumption (or (not x3876) x21836)
+:assumption (or (not x23775) (not x2612))
+:assumption (or (not x19310) (not x21288))
+:assumption (or x20402 (not x12927))
+:assumption (or (not x31405) x9008)
+:assumption (or (not x11888) x13956)
+:assumption (or x857 (not x13045))
+:assumption (or x31547 x188)
+:assumption (or (not x25224) x30927)
+:assumption (or x19067 (not x23278) (not x31134) x29606)
+:assumption (or x7544 x5886 x11103)
+:assumption (or x8905 x19864)
+:assumption (or (not x5847) x24408)
+:assumption (or (not x16848) x24209)
+:assumption (or x24062 (not x28314))
+:assumption (or x15501 (not x24274))
+:assumption (or x18354 x11799 x27040)
+:assumption (or (not x20981) x2583)
+:assumption (or x24658 (not x1169))
+:assumption (or x22662 (not x15730))
+:assumption (or (not x1309) x15747 (not x11366) x12129 x5990 x27682 (not x22452) (not x428))
+:assumption (or x20847 x12738 (not x26666) x21815 x4376 (not x12701))
+:assumption (or x11122 x4911)
+:assumption (or x8258 x6921 (not x19112) (not x8923) (not x22526) x10166 (not x15254) x28560)
+:assumption (or x16910 (not x27830))
+:assumption (or x13254 (not x13364))
+:assumption (or x25534 (not x19730))
+:assumption (or x16922 (not x10371))
+:assumption (or (not x21815) (not x21046) (not x31832))
+:assumption (or (not x25224) (not x19596) (not x7729))
+:assumption (or x24134 (not x28702))
+:assumption (or (not x9832) x13415)
+:assumption (or (not x30149) (not x12240))
+:assumption (or x7343 (not x11915))
+:assumption (or x15451 x21887)
+:assumption (or x8955 x11851)
+:assumption (or x3269 (not x19954))
+:assumption (or x21002 x22295)
+:assumption (or x16442 (not x15040))
+:assumption (or (not x30400) x12868)
+:assumption (or x27459 (not x27477))
+:assumption (or (not x1393) x6883)
+:assumption (or (not x823) x3180)
+:assumption (or (not x3369) x11014)
+:assumption (or x9387 x18519 x15840 (not x19711))
+:assumption (or (not x4000) (not x10909) (not x26897) x19640)
+:assumption (or (not x4508) (not x21815))
+:assumption (or x7526 (not x15861))
+:assumption (or (not x26611) (not x15620))
+:assumption (or x20041 x28702)
+:assumption (or x13288 (not x25008))
+:assumption (or (not x17016) (not x13956) x13020 (not x30432))
+:assumption (or (not x5991) x16129 x7038 (not x19771) (not x14575) x20010 x4655 x30734)
+:assumption (or (not x9091) x25694)
+:assumption (or (not x27079) (not x10215))
+:assumption (or x22281 (not x7927))
+:assumption (or (not x5940) x18251)
+:assumption (or x23358 x22066)
+:assumption (or x26290 x22174)
+:assumption (or (not x256) x12945)
+:assumption (or (not x26612) (not x6396))
+:assumption (or x21432 (not x14215))
+:assumption (or (not x218) x26433 (not x8083) x17075)
+:assumption (or (not x10092) (not x20678))
+:assumption (or (not x18258) (not x28220))
+:assumption (or (not x2763) (not x8060))
+:assumption (or x20723 (not x19211) x18627 (not x8002))
+:assumption (or x3264 (not x19416))
+:assumption (or x21422 x27640 x14877 x14164 (not x19130) (not x2170) (not x6906))
+:assumption (or x9284 (not x27654))
+:assumption (or x17509 x8538)
+:assumption (or x1332 x5299 x23413)
+:assumption (or (not x13953) (not x28702))
+:assumption (or x24593 (not x23244))
+:assumption (or x6732 (not x83))
+:assumption (or (not x9531) x19096)
+:assumption (or x27133 (not x21977))
+:assumption (or (not x27349) x842)
+:assumption (or (not x10968) (not x21900))
+:assumption (or (not x20991) x15778)
+:assumption (or (not x1964) x18180)
+:assumption (or x16702 x12652)
+:assumption (or (not x28190) (not x2880))
+:assumption (or (not x16686) (not x10359))
+:assumption (or (not x14641) x17478 x14718)
+:assumption (or (not x6467) x4630)
+:assumption (or x28205 (not x204))
+:assumption (or x28973 (not x16113) (not x6171))
+:assumption (or (not x24545) x18169)
+:assumption (or x15954 x20397 (not x17632) x14906)
+:assumption (or x20175 x16648)
+:assumption (or x25695 x19579 x12684 (not x7651))
+:assumption (or (not x23227) x3919)
+:assumption (or (not x10470) (not x5665))
+:assumption (or (not x17475) (not x23244))
+:assumption (or x26208 x11464)
+:assumption (or (not x11168) (not x24937))
+:assumption (or (not x1114) x17401)
+:assumption (or x30206 x27898)
+:assumption (or x6919 (not x8602))
+:assumption (or (not x25300) (not x19928))
+:assumption (or x9713 x31199)
+:assumption (or x12903 x15869)
+:assumption (or (not x184) (not x22707))
+:assumption (or x12028 (not x11931))
+:assumption (or (not x3549) x17517)
+:assumption (or (not x13138) x20496)
+:assumption (or (not x30092) x20982 x14515 (not x15297) (not x6950))
+:assumption (or (not x24694) x2716)
+:assumption (or (not x31282) x20062)
+:assumption (or (not x15777) x6182)
+:assumption (or (not x15898) x19201)
+:assumption (or x18304 x11455)
+:assumption (or (not x17970) x19123)
+:assumption (or (not x2761) (not x16731))
+:assumption (or x9008 x13666)
+:assumption (or x16673 x20306 x4650)
+:assumption (or x30856 x8635)
+:assumption (or (not x26225) (not x533))
+:assumption (or (not x794) x18330)
+:assumption (or x17534 (not x14915))
+:assumption (or (not x24733) x11798)
+:assumption (or (not x9008) (not x5528) x805 x30693 (not x29772))
+:assumption (or x23600 x23831)
+:assumption (or x25659 x18620)
+:assumption (or (not x3262) (not x21659))
+:assumption (or x27294 x16955)
+:assumption (or (not x6171) (not x18070) x19615)
+:assumption (or x27047 x27630)
+:assumption (or (not x19322) (not x16579) (not x31892))
+:assumption (or (not x26117) (not x13459))
+:assumption (or (not x13576) (not x20905))
+:assumption (or (not x26341) (not x12024))
+:assumption (or (not x26498) x2349)
+:assumption (or (not x29442) x29529)
+:assumption (or (not x24888) (not x29606))
+:assumption (or x12445 x6259)
+:assumption (or x31092 x25004)
+:assumption (or x12374 x17971)
+:assumption (or (not x5157) (not x29573))
+:assumption (or (not x21182) (not x24370))
+:assumption (or (not x21048) x29721)
+:assumption (or (not x585) x30352)
+:assumption (or (not x1063) x16017)
+:assumption (or (not x14700) (not x25467))
+:assumption (or (not x4619) (not x15479))
+:assumption (or (not x16363) (not x28626))
+:assumption (or (not x11375) (not x31324))
+:assumption (or (not x27761) x3817)
+:assumption (or (not x28973) x29881 x288 x26225)
+:assumption (or (not x20453) x13956)
+:assumption (or x19770 x9292)
+:assumption (or x7808 (not x18253))
+:assumption (or x24805 (not x5394))
+:assumption (or (not x7855) x21298)
+:assumption (or (not x21844) (not x3430) x13300 (not x19991))
+:assumption (or x14839 x13740 x11012)
+:assumption (or x14773 x23018)
+:assumption (or x9239 (not x31277))
+:assumption (or x11647 x20001)
+:assumption (or (not x5228) (not x12083) x30751)
+:assumption (or (not x14463) x12328)
+:assumption (or (not x1693) (not x14573))
+:assumption (or x9024 x16187)
+:assumption (or (not x25377) (not x28575))
+:assumption (or x28577 x21332)
+:assumption (or x13346 (not x2225))
+:assumption (or x13956 x30255 (not x14517) x23244 x8002 x15676)
+:assumption (or (not x24287) (not x23177))
+:assumption (or (not x3163) x20758)
+:assumption (or x288 (not x7552))
+:assumption (or (not x3538) (not x19891))
+:assumption (or (not x29803) (not x14348))
+:assumption (or (not x17453) (not x4633))
+:assumption (or x9156 (not x18731))
+:assumption (or (not x2876) x28194)
+:assumption (or x31018 x12401)
+:assumption (or x28336 (not x20550))
+:assumption (or (not x20872) x19413)
+:assumption (or (not x26490) (not x2216))
+:assumption (or x16725 x25859)
+:assumption (or x8997 x18859 x23019)
+:assumption (or (not x1393) x26321 (not x17965))
+:assumption (or x15600 x18755)
+:assumption (or (not x13219) (not x8602))
+:assumption (or x28333 (not x29212))
+:assumption (or (not x24749) x12224)
+:assumption (or (not x9254) x24165)
+:assumption (or x18369 x19376 (not x20690) x21298)
+:assumption (or x6715 x3837)
+:assumption (or x22728 (not x11363))
+:assumption (or x13934 (not x2057))
+:assumption (or x21670 (not x20619))
+:assumption (or (not x12973) (not x30615))
+:assumption (or x5059 (not x14230) x14580)
+:assumption (or x28530 (not x25907))
+:assumption (or (not x847) (not x14435))
+:assumption (or (not x27548) x30471)
+:assumption (or x30708 x16510)
+:assumption (or (not x8567) x11352 (not x754))
+:assumption (or x10605 x7711)
+:assumption (or (not x30111) (not x10539))
+:assumption (or (not x21146) x20115 x16741 x11132)
+:assumption (or x20606 x19667 x21858)
+:assumption (or x17302 (not x22683))
+:assumption (or (not x23076) x5226 (not x27810))
+:assumption (or x7263 (not x25005))
+:assumption (or (not x18160) x30736 (not x10542) x31190 (not x19154))
+:assumption (or x8539 x27507)
+:assumption (or x6572 (not x26370))
+:assumption (or (not x14156) (not x23722))
+:assumption (or (not x19181) (not x8251))
+:assumption (or (not x29238) x18032)
+:assumption (or x22759 x357)
+:assumption (or x6168 x16510 (not x14591) (not x1057) (not x7583))
+:assumption (or x9454 (not x29197))
+:assumption (or (not x26293) x16497 x16983 x5136 x2665)
+:assumption (or x7526 (not x9147))
+:assumption (or x28253 (not x19518))
+:assumption (or x7537 x23085 x4518 (not x23399))
+:assumption (or (not x6642) (not x11939))
+:assumption (or x18532 x8057)
+:assumption (or x28690 x24728)
+:assumption (or x19324 x23285)
+:assumption (or x24819 x21257)
+:assumption (or (not x10156) x13280 (not x3930) (not x24711) x27333 x8002)
+:assumption (or x8848 x19948)
+:assumption (or (not x9333) x18567 (not x5742) (not x10977))
+:assumption (or x8336 x4837)
+:assumption (or (not x16992) x29154)
+:assumption (or x2888 x27228)
+:assumption (or (not x30353) x31929)
+:assumption (or (not x14059) (not x25659))
+:assumption (or (not x30851) (not x10850))
+:assumption (or (not x3958) (not x27524))
+:assumption (or (not x9376) (not x30335))
+:assumption (or (not x12046) x8852)
+:assumption (or x24294 (not x26279) (not x10240) x9314 (not x9005) (not x17281))
+:assumption (or (not x25859) (not x11762))
+:assumption (or x11635 (not x21535))
+:assumption (or (not x29629) x9938)
+:assumption (or (not x30887) (not x29444))
+:assumption (or x7170 (not x31581))
+:assumption (or x1230 x30897 x25659)
+:assumption (or (not x10829) x25796)
+:assumption (or (not x16313) x25501)
+:assumption (or x23292 (not x27321))
+:assumption (or x7594 x18042 (not x20201) x26848)
+:assumption (or x23766 (not x6638))
+:assumption (or (not x11519) (not x13934) (not x16854) x1500 (not x16710) (not x20220))
+:assumption (or (not x17261) x8002)
+:assumption (or x13430 x28557 x16335 (not x28704) (not x31644))
+:assumption (or (not x25933) x21848 (not x25911))
+:assumption (or x20816 x12468)
+:assumption (or x24337 (not x11513))
+:assumption (or (not x12045) x27537 x12127 (not x10140))
+:assumption (or x26588 x10504)
+:assumption (or x25515 (not x288) x28517 (not x31392))
+:assumption (or x22686 (not x16033) (not x14357))
+:assumption (or x24761 x16337)
+:assumption (or x5803 x28610)
+:assumption (or (not x1879) x15341)
+:assumption (or x5016 (not x7782))
+:assumption (or (not x30010) (not x7904))
+:assumption (or x31767 (not x20605) x30103 x29066)
+:assumption (or x23403 (not x14812))
+:assumption (or (not x13233) (not x203))
+:assumption (or x8264 (not x29652))
+:assumption (or x11677 (not x14417))
+:assumption (or x10453 x9328)
+:assumption (or x23370 x31601)
+:assumption (or x9086 (not x23334))
+:assumption (or (not x3229) x31561)
+:assumption (or x840 (not x20135))
+:assumption (or x7148 (not x29467))
+:assumption (or x8584 x31250)
+:assumption (or (not x4139) (not x1126))
+:assumption (or x6339 x15623)
+:assumption (or (not x29425) (not x8002) (not x23244) x8931)
+:assumption (or x6922 x17930)
+:assumption (or x26897 (not x30138) x8714 x27536)
+:assumption (or (not x22177) x16741 x17246 x30683)
+:assumption (or (not x6159) (not x16713))
+:assumption (or (not x20913) (not x21267))
+:assumption (or x23386 (not x28242) x12342 x8146)
+:assumption (or x12882 (not x3784))
+:assumption (or x9245 x9981)
+:assumption (or (not x19174) (not x26270))
+:assumption (or (not x18623) (not x12030) x21298 x22290)
+:assumption (or x9923 (not x24965))
+:assumption (or x20645 x29254)
+:assumption (or (not x488) x228)
+:assumption (or x30589 x17641)
+:assumption (or x27864 x23725)
+:assumption (or x19150 (not x11792))
+:assumption (or (not x29590) x24581)
+:assumption (or x18165 x5833)
+:assumption (or x12083 x21718)
+:assumption (or (not x21621) (not x22855))
+:assumption (or x30886 x31609)
+:assumption (or (not x31342) (not x1040))
+:assumption (or x1835 (not x17974))
+:assumption (or (not x3491) x28498)
+:assumption (or x15875 (not x13590))
+:assumption (or (not x14765) (not x16025))
+:assumption (or x9693 x26336)
+:assumption (or x19811 x20443)
+:assumption (or (not x8867) (not x10537))
+:assumption (or x19428 (not x27284))
+:assumption (or (not x6782) (not x23244))
+:assumption (or (not x15146) (not x28353))
+:assumption (or (not x30687) (not x23816))
+:assumption (or (not x17258) (not x3061))
+:assumption (or x14891 x9506)
+:assumption (or x2884 (not x22852))
+:assumption (or (not x20922) (not x28258))
+:assumption (or x10795 x15054 (not x8954) (not x15216) (not x27733) (not x20954) (not x827) x31493)
+:assumption (or (not x22490) x30484)
+:assumption (or (not x8014) x26927)
+:assumption (or (not x19937) (not x28757))
+:assumption (or x29933 (not x25151))
+:assumption (or (not x19581) x8657)
+:assumption (or (not x23711) (not x11874))
+:assumption (or x29853 x183)
+:assumption (or (not x15700) x16570)
+:assumption (or (not x5897) (not x13407))
+:assumption (or (not x28161) x26035)
+:assumption (or x9529 (not x9377) (not x2133))
+:assumption (or (not x22421) x4799)
+:assumption (or x23244 x21444)
+:assumption (or x9490 (not x25423))
+:assumption (or (not x4069) x19917)
+:assumption (or x25767 (not x4975))
+:assumption (or x902 (not x31924))
+:assumption (or x19724 (not x27070))
+:assumption (or (not x22966) x4419)
+:assumption (or x6678 x13382)
+:assumption (or x7127 x8002 (not x9452) (not x28077) (not x26186) (not x29737))
+:assumption (or x7445 x6402)
+:assumption (or x6831 (not x24289))
+:assumption (or x23932 (not x7794) x7286)
+:assumption (or (not x7385) x27472)
+:assumption (or (not x1988) x20291)
+:assumption (or x27083 x1393)
+:assumption (or (not x5738) x4107)
+:assumption (or (not x20705) x3778)
+:assumption (or (not x17248) (not x20278))
+:assumption (or x25161 x25489)
+:assumption (or (not x2681) (not x6487))
+:assumption (or (not x7850) x30479)
+:assumption (or x14337 (not x24737))
+:assumption (or (not x7830) x3988)
+:assumption (or x18062 x22603)
+:assumption (or x9904 (not x11485))
+:assumption (or (not x19992) x11781)
+:assumption (or x6039 (not x18467))
+:assumption (or x11866 x11409)
+:assumption (or x31067 (not x14977))
+:assumption (or (not x20548) (not x12291))
+:assumption (or (not x13924) (not x30225))
+:assumption (or (not x27972) (not x30674) (not x27280) x14992 x15795)
+:assumption (or (not x26766) (not x26008))
+:assumption (or (not x10554) (not x6981))
+:assumption (or (not x30491) x8663)
+:assumption (or x15203 x1065)
+:assumption (or x3367 (not x15892))
+:assumption (or x26011 (not x4808))
+:assumption (or (not x18032) (not x14288) (not x21957) (not x19089))
+:assumption (or x25659 x22991)
+:assumption (or (not x8089) (not x5990))
+:assumption (or (not x11601) x22161)
+:assumption (or x8172 x25659)
+:assumption (or x8002 (not x8627))
+:assumption (or (not x21941) (not x18362))
+:assumption (or x13560 x5397)
+:assumption (or x1550 (not x29442) x5028 x5422)
+:assumption (or x27858 (not x19543))
+:assumption (or x3432 x17747)
+:assumption (or (not x27968) (not x25659))
+:assumption (or (not x454) (not x6008))
+:assumption (or (not x17861) (not x18263))
+:assumption (or (not x4442) x20778)
+:assumption (or x10592 x26856)
+:assumption (or (not x26585) (not x9520))
+:assumption (or (not x953) x30760)
+:assumption (or (not x12553) x7424)
+:assumption (or x20057 x864)
+:assumption (or x20506 x1136)
+:assumption (or (not x25388) x4485 x9008)
+:assumption (or x16893 x4010)
+:assumption (or x29400 x17288)
+:assumption (or (not x19903) x12972)
+:assumption (or x21099 x28586 (not x3421))
+:assumption (or x4486 (not x17655))
+:assumption (or (not x3819) (not x23723))
+:assumption (or x31847 x21974)
+:assumption (or (not x4089) x8324)
+:assumption (or (not x17094) x8455)
+:assumption (or (not x19247) (not x12977))
+:assumption (or x19593 (not x21442) (not x6602))
+:assumption (or (not x26587) (not x2945) (not x16))
+:assumption (or (not x4199) (not x21298))
+:assumption (or x29761 x10699)
+:assumption (or (not x24341) x14883 x24756 x29312 x31574)
+:assumption (or (not x19304) x24637)
+:assumption (or x6532 (not x16005))
+:assumption (or (not x25421) x21406 (not x10024) x25542 x658 (not x11806))
+:assumption (or x17094 x8002)
+:assumption (or x16626 x10139 (not x26892) (not x7263) x25005 x29251)
+:assumption (or x28812 (not x18539))
+:assumption (or (not x15795) x19469)
+:assumption (or (not x16720) (not x26848))
+:assumption (or (not x23537) (not x3670))
+:assumption (or x13949 (not x19465))
+:assumption (or (not x14898) (not x7310))
+:assumption (or x31858 x20466)
+:assumption (or x6351 x26958)
+:assumption (or x14182 (not x25649) x2049 x6756 x27605)
+:assumption (or (not x6969) x14636 (not x19063))
+:assumption (or (not x27311) x28022)
+:assumption (or (not x14743) x25818 (not x8002) x13473)
+:assumption (or x30302 x3139)
+:assumption (or x8791 x5980)
+:assumption (or (not x2057) x18475)
+:assumption (or (not x12502) x4899)
+:assumption (or (not x10146) (not x30782))
+:assumption (or x215 (not x2094))
+:assumption (or (not x17656) x4578)
+:assumption (or x29963 x18117)
+:assumption (or x25078 (not x14166))
+:assumption (or (not x8563) (not x22685))
+:assumption (or (not x13730) x23246)
+:assumption (or (not x13959) (not x11281))
+:assumption (or x27783 (not x11054))
+:assumption (or x29067 (not x22426))
+:assumption (or x24711 x3930)
+:assumption (or (not x8002) (not x3661))
+:assumption (or x25561 (not x23131) x30547 (not x8101) x22170 (not x5785) (not x827) (not x28975))
+:assumption (or x8097 x10263)
+:assumption (or (not x19487) x6351 x25321)
+:assumption (or x14886 x29607 x679 x7897 (not x10705) (not x30596) (not x28924) x29526 x27230)
+:assumption (or x15205 (not x19548))
+:assumption (or (not x23279) x23859)
+:assumption (or x16411 (not x19345))
+:assumption (or (not x8503) (not x8812))
+:assumption (or (not x8002) x25799)
+:assumption (or (not x22925) x9237 (not x2134))
+:assumption (or x24839 (not x21690))
+:assumption (or (not x22137) x23988)
+:assumption (or x17353 (not x17089))
+:assumption (or (not x18325) x20515)
+:assumption (or x17881 x15917)
+:assumption (or x28242 (not x2978))
+:assumption (or x8484 x7681 (not x18385))
+:assumption (or (not x4581) x2923 x24433 x13148)
+:assumption (or (not x18859) (not x24248))
+:assumption (or x30650 (not x16798))
+:assumption (or (not x7347) x4269)
+:assumption (or x13096 (not x13516))
+:assumption (or (not x2177) (not x31160))
+:assumption (or x7854 (not x10466))
+:assumption (or x16325 x15048)
+:assumption (or (not x29221) x14839)
+:assumption (or x9212 (not x11092))
+:assumption (or x30326 (not x9008) (not x8536))
+:assumption (or (not x515) (not x23408) x19864)
+:assumption (or (not x23045) x19815)
+:assumption (or x8002 (not x25602))
+:assumption (or x23244 (not x26581))
+:assumption (or x31570 (not x27198))
+:assumption (or (not x10675) x20184)
+:assumption (or (not x15028) x19077)
+:assumption (or x17088 x5125)
+:assumption (or x17082 (not x15380))
+:assumption (or x3903 (not x17818))
+:assumption (or x21690 (not x11823))
+:assumption (or x4044 (not x4479))
+:assumption (or x16025 (not x2428) x6068)
+:assumption (or (not x22724) x7081)
+:assumption (or (not x7432) x20651)
+:assumption (or (not x16571) (not x3289))
+:assumption (or x29594 (not x455) x7255 x8376 (not x11750) x24029)
+:assumption (or x18398 x25538)
+:assumption (or x24647 (not x14819))
+:assumption (or (not x4259) (not x26405))
+:assumption (or (not x12962) (not x24758))
+:assumption (or (not x29158) x19207)
+:assumption (or (not x15613) (not x8976))
+:assumption (or (not x23272) (not x25177))
+:assumption (or x88 x1091)
+:assumption (or x23776 (not x31552))
+:assumption (or (not x11099) x7457)
+:assumption (or (not x27723) (not x6160) x8290 (not x6198) x6859 x14141 x24605)
+:assumption (or (not x14080) (not x21515))
+:assumption (or x18352 (not x19012))
+:assumption (or (not x12503) (not x17009))
+:assumption (or (not x17934) x18003 x18874)
+:assumption (or (not x4678) x5625 (not x373) x19200)
+:assumption (or x12887 (not x1865))
+:assumption (or (not x7704) x28356)
+:assumption (or (not x6909) (not x29162) x24115)
+:assumption (or (not x9555) (not x3690))
+:assumption (or (not x12492) x22592 (not x25659))
+:assumption (or (not x2690) (not x1369) x12333 (not x9328) (not x12733) x5902)
+:assumption (or (not x9505) x21290)
+:assumption (or (not x26257) (not x11134))
+:assumption (or (not x25154) x29305)
+:assumption (or x9064 x9058)
+:assumption (or (not x16879) x18405)
+:assumption (or (not x17799) (not x918))
+:assumption (or (not x29010) x7361)
+:assumption (or (not x24153) (not x25991))
+:assumption (or (not x30862) x21815)
+:assumption (or x13956 x21425)
+:assumption (or (not x4184) x2182)
+:assumption (or (not x26823) x6238)
+:assumption (or x9585 (not x10305) x13956)
+:assumption (or (not x24638) (not x13415) (not x12615))
+:assumption (or x6845 x23291)
+:assumption (or (not x12363) (not x20605))
+:assumption (or (not x28007) x827)
+:assumption (or (not x28381) (not x22581))
+:assumption (or x17922 (not x28772))
+:assumption (or (not x19124) x21781 (not x14193) (not x9893) (not x2104) (not x2280) x22715 (not x2136))
+:assumption (or (not x29959) x30119)
+:assumption (or x25973 x21298)
+:assumption (or x23738 (not x15419))
+:assumption (or x25225 x19804)
+:assumption (or (not x5028) (not x16767))
+:assumption (or x8537 x713)
+:assumption (or x23093 (not x28813))
+:assumption (or x30104 (not x6275))
+:assumption (or x13442 (not x9363) x30917 (not x31357) (not x1196) (not x7962))
+:assumption (or (not x18516) x25151)
+:assumption (or (not x31012) (not x2548))
+:assumption (or x30864 x1595 x822 (not x19081) x11245 x12515)
+:assumption (or x28354 x8313)
+:assumption (or x7888 x12199 (not x5851) (not x4451) (not x15537))
+:assumption (or x19992 x5011)
+:assumption (or x12865 x20914)
+:assumption (or (not x27537) (not x1394))
+:assumption (or x24430 x2614)
+:assumption (or (not x30717) (not x8574))
+:assumption (or (not x19200) x4678)
+:assumption (or x8546 (not x328))
+:assumption (or x21133 (not x21647))
+:assumption (or x23788 (not x4485))
+:assumption (or (not x21342) (not x23960))
+:assumption (or (not x29847) x9460)
+:assumption (or (not x26314) (not x13614) x12910)
+:assumption (or x8463 x31178)
+:assumption (or x23503 x74)
+:assumption (or x15090 (not x14117) (not x5213) x4273 (not x4832) (not x6319) x25404 x10296 x11849)
+:assumption (or x26302 x19248)
+:assumption (or (not x9422) x4851)
+:assumption (or x27423 (not x18412))
+:assumption (or (not x4345) (not x15537) x20093)
+:assumption (or (not x21955) x10402)
+:assumption (or (not x7887) x8731 x2954 (not x10780) x20686 x3042)
+:assumption (or x5825 (not x26334))
+:assumption (or x14100 (not x13688))
+:assumption (or (not x25938) (not x15315))
+:assumption (or (not x6987) x12045 x10531)
+:assumption (or (not x7800) x6295)
+:assumption (or x30534 x13773)
+:assumption (or (not x2326) x181)
+:assumption (or (not x21815) x6133 (not x3494) (not x16195) (not x16510))
+:assumption (or (not x2133) (not x16003) (not x1947))
+:assumption (or x4454 x15621)
+:assumption (or (not x3303) x10403 x7177 x14973)
+:assumption (or (not x21339) x29135)
+:assumption (or (not x10260) (not x31851))
+:assumption (or x23244 (not x19281) x16409)
+:assumption (or (not x29862) x28926)
+:assumption (or x11071 (not x15224))
+:assumption (or (not x29188) (not x17707))
+:assumption (or (not x27240) x7950)
+:assumption (or x16438 x22071)
+:assumption (or (not x22714) x9668 x18859)
+:assumption (or (not x12597) (not x1393))
+:assumption (or x28576 x13023)
+:assumption (or x11176 x22807)
+:assumption (or x20402 x23730)
+:assumption (or (not x2721) x24919)
+:assumption (or x29379 x26825)
+:assumption (or x21945 x803)
+:assumption (or x17855 (not x29927) x23878 (not x6084))
+:assumption (or x13722 x17832)
+:assumption (or x15995 (not x26772))
+:assumption (or (not x29473) (not x1790) (not x27750))
+:assumption (or (not x11928) x19428)
+:assumption (or x19019 (not x22186))
+:assumption (or x7171 x9008 x30733)
+:assumption (or x754 (not x27104) (not x26651))
+:assumption (or (not x8002) (not x6148))
+:assumption (or (not x2758) (not x25565))
+:assumption (or x17212 (not x8002))
+:assumption (or x12176 (not x59))
+:assumption (or (not x3972) (not x24837))
+:assumption (or (not x2429) x446)
+:assumption (or (not x7533) (not x27639))
+:assumption (or x4071 (not x6167))
+:assumption (or x3756 (not x14687) (not x4507) (not x10015) x11137 x4137)
+:assumption (or (not x13621) (not x7106))
+:assumption (or x29499 (not x30681))
+:assumption (or x21836 (not x19907))
+:assumption (or x30751 x25842)
+:assumption (or x18910 x651)
+:assumption (or (not x28859) (not x3810))
+:assumption (or (not x30898) x14467)
+:assumption (or (not x31602) (not x28738))
+:assumption (or x19634 (not x5371))
+:assumption (or x10363 (not x17167))
+:assumption (or x18698 (not x23318))
+:assumption (or (not x28465) x20244)
+:assumption (or x7866 x14317)
+:assumption (or (not x26727) (not x16209))
+:assumption (or x3036 (not x2807))
+:assumption (or x15613 (not x13946))
+:assumption (or (not x19258) x2878)
+:assumption (or (not x5401) (not x13237) x1822 (not x20245))
+:assumption (or x13130 (not x7003) (not x20129) x8043)
+:assumption (or x24853 (not x4809) (not x30737))
+:assumption (or x1485 (not x12045))
+:assumption (or x17032 x15365)
+:assumption (or x6885 x6298 (not x1063))
+:assumption (or x8254 (not x14578))
+:assumption (or (not x4719) (not x3413))
+:assumption (or (not x18672) x14727)
+:assumption (or x4290 x21691)
+:assumption (or (not x5756) x9226)
+:assumption (or (not x10124) (not x271))
+:assumption (or (not x8383) x28364)
+:assumption (or (not x26668) x14630)
+:assumption (or (not x2437) (not x5599))
+:assumption (or (not x15640) x25713 x17809 x1577 (not x30131))
+:assumption (or (not x28087) (not x6832))
+:assumption (or x12242 (not x7155) x27748)
+:assumption (or x28803 x11591)
+:assumption (or x13388 x7561)
+:assumption (or (not x12278) x8767)
+:assumption (or x10909 x21577)
+:assumption (or x1393 (not x29467))
+:assumption (or (not x873) (not x4745))
+:assumption (or (not x28836) (not x19294))
+:assumption (or x13316 x25164)
+:assumption (or (not x15543) (not x8002) x16654 x26834)
+:assumption (or x25662 x27697)
+:assumption (or x10109 x20142)
+:assumption (or (not x16053) x18106 x25563)
+:assumption (or (not x439) (not x25247))
+:assumption (or (not x20005) (not x30792))
+:assumption (or (not x12320) x31475)
+:assumption (or x3187 (not x31376) (not x102))
+:assumption (or x5371 x18219 (not x15530) (not x14221) (not x7126) x4651 (not x10885) x13277 x8958)
+:assumption (or (not x25482) (not x97))
+:assumption (or (not x9008) x11490 x11489 x28023 (not x5528))
+:assumption (or x25320 (not x12536))
+:assumption (or x13964 (not x15337))
+:assumption (or (not x28023) x7168)
+:assumption (or x31873 (not x13200) x2334 (not x3423))
+:assumption (or (not x23183) (not x18235))
+:assumption (or x21856 (not x18449))
+:assumption (or (not x11794) (not x12471))
+:assumption (or (not x14727) x1329)
+:assumption (or x7487 x3135)
+:assumption (or (not x2747) (not x18494))
+:assumption (or x24325 x11848)
+:assumption (or (not x19501) (not x25371))
+:assumption (or x30459 x20550)
+:assumption (or (not x8296) (not x30615))
+:assumption (or (not x15840) x2072)
+:assumption (or x28704 x27883)
+:assumption (or (not x16005) x1393)
+:assumption (or x5766 (not x20494))
+:assumption (or (not x16374) (not x737))
+:assumption (or x25934 (not x27486) (not x18069))
+:assumption (or x28837 (not x28753))
+:assumption (or (not x7148) (not x1393) x29467)
+:assumption (or x17228 x23829)
+:assumption (or x18576 (not x19948) x26041)
+:assumption (or (not x17937) x14850)
+:assumption (or (not x868) x18024)
+:assumption (or (not x30887) x18700)
+:assumption (or x7348 (not x18765))
+:assumption (or (not x25278) (not x19395))
+:assumption (or x19137 (not x30420))
+:assumption (or (not x6943) (not x4721))
+:assumption (or (not x26323) (not x9531) x13576 (not x3722))
+:assumption (or x6329 x16721 x4556 x30868 (not x24632))
+:assumption (or x18238 (not x12939))
+:assumption (or x9974 x19191)
+:assumption (or x6596 x5576)
+:assumption (or (not x6744) (not x6783))
+:assumption (or (not x18565) (not x22847))
+:assumption (or x7051 (not x7317))
+:assumption (or (not x25481) (not x379))
+:assumption (or x27691 (not x11875))
+:assumption (or x13945 (not x30554))
+:assumption (or x25659 x169 x5801 x30552)
+:assumption (or (not x11666) (not x2962))
+:assumption (or x30389 (not x16296))
+:assumption (or x7287 (not x20678))
+:assumption (or (not x29622) x7106 (not x31173))
+:assumption (or (not x14609) x16400)
+:assumption (or (not x29705) x17047)
+:assumption (or x9333 (not x23253))
+:assumption (or (not x9779) x2673 x22393 (not x6486) (not x21479) x9808)
+:assumption (or (not x14230) x28401)
+:assumption (or x27693 x26897 x28275 x6254 (not x22062))
+:assumption (or x30613 x5435)
+:assumption (or (not x6858) x5799)
+:assumption (or x12287 (not x23599))
+:assumption (or x26026 (not x24160))
+:assumption (or x27422 (not x24029))
+:assumption (or (not x4407) x24417)
+:assumption (or x23197 x18859)
+:assumption (or x3610 (not x23563))
+:assumption (or x20611 (not x6820))
+:assumption (or (not x24903) x16121)
+:assumption (or (not x24906) x13750)
+:assumption (or x14706 x7560)
+:assumption (or (not x15227) x6687)
+:assumption (or x27012 x2943 x24522)
+:assumption (or x2597 x15007)
+:assumption (or x8493 (not x14308))
+:assumption (or x27313 x8486)
+:assumption (or (not x3261) (not x29608))
+:assumption (or x10203 x18180)
+:assumption (or (not x24944) x4275)
+:assumption (or x8727 (not x10882))
+:assumption (or x8026 (not x1439))
+:assumption (or (not x14787) (not x10012) (not x17266) x1671)
+:assumption (or x9531 (not x24546) x27456 (not x17235))
+:assumption (or (not x20211) x3330)
+:assumption (or (not x16546) (not x13342))
+:assumption (or (not x1256) x25561)
+:assumption (or x30817 x25659)
+:assumption (or x3130 x11265)
+:assumption (or (not x4782) x4820)
+:assumption (or x17876 x31345)
+:assumption (or (not x20401) (not x1177) (not x4142))
+:assumption (or x2133 (not x16681))
+:assumption (or x22154 x6761)
+:assumption (or x20574 x11062 (not x27725) x13181 x11239 (not x86))
+:assumption (or x12742 x30208)
+:assumption (or (not x14732) (not x5867))
+:assumption (or (not x26349) x13105 x7359 (not x8813) (not x14522) x1831)
+:assumption (or x13956 (not x10543))
+:assumption (or x12333 x23586)
+:assumption (or (not x21815) x23910 (not x26028))
+:assumption (or (not x14839) x3470)
+:assumption (or (not x11044) (not x21345))
+:assumption (or (not x6911) x3831 (not x1513) (not x13083))
+:assumption (or (not x7649) (not x1901))
+:assumption (or x19031 x5934)
+:assumption (or x21145 x31464)
+:assumption (or x7712 (not x3611))
+:assumption (or (not x13806) x7958)
+:assumption (or x21815 x17556 (not x14478))
+:assumption (or x25674 (not x26090))
+:assumption (or (not x1844) (not x9704) x12152 (not x9781) x15334)
+:assumption (or x4079 (not x9354))
+:assumption (or (not x779) (not x26345))
+:assumption (or (not x12944) (not x26137))
+:assumption (or (not x6355) (not x9287))
+:assumption (or x10071 (not x6590))
+:assumption (or (not x24558) (not x26859) x14516 (not x3090) x22634 (not x7728) x25275 x7986)
+:assumption (or (not x15335) (not x16025))
+:assumption (or x24565 (not x22768))
+:assumption (or (not x6300) x20926)
+:assumption (or x14847 x7430)
+:assumption (or (not x30124) x16409 x28471 (not x24885))
+:assumption (or x9397 (not x12195))
+:assumption (or x16802 (not x23961) x19888 (not x22257))
+:assumption (or (not x626) (not x27664))
+:assumption (or (not x15436) x9689)
+:assumption (or x18942 (not x6101))
+:assumption (or x28439 (not x25462))
+:assumption (or x12913 (not x6970))
+:assumption (or x338 x2019)
+:assumption (or x19111 x8101)
+:assumption (or x19275 x8280)
+:assumption (or (not x3939) x1582 (not x28079) x11986)
+:assumption (or (not x13516) x19043)
+:assumption (or (not x1779) x19209)
+:assumption (or x19837 (not x19035))
+:assumption (or x5528 x21233)
+:assumption (or x17520 (not x4631))
+:assumption (or (not x7108) x23372)
+:assumption (or x7286 (not x28456))
+:assumption (or x7669 (not x6233))
+:assumption (or x9025 x10065)
+:assumption (or x31542 x3076)
+:assumption (or x27683 x7969)
+:assumption (or x22957 x31119)
+:assumption (or x23081 x1327)
+:assumption (or x384 (not x110))
+:assumption (or (not x29340) x9008)
+:assumption (or x28298 x30574)
+:assumption (or (not x1728) (not x17373))
+:assumption (or (not x18453) x14620 x20725 (not x7902) (not x20714) x3721 x27880 (not x20710))
+:assumption (or x17191 (not x16316))
+:assumption (or (not x21109) (not x10502))
+:assumption (or x17863 x27501 x11375)
+:assumption (or x14696 (not x27447) (not x29660))
+:assumption (or x5632 x18161)
+:assumption (or x13576 (not x17446))
+:assumption (or x15534 (not x1393))
+:assumption (or (not x18215) (not x15908))
+:assumption (or (not x31295) (not x18512))
+:assumption (or (not x29859) x9443 x23244)
+:assumption (or (not x20963) x13956)
+:assumption (or (not x3741) (not x24441))
+:assumption (or x24504 (not x800) x25315)
+:assumption (or (not x9210) (not x1621) (not x23279))
+:assumption (or x10542 (not x6754))
+:assumption (or (not x30082) x15348)
+:assumption (or x14968 x7386)
+:assumption (or (not x5334) (not x27687) x21815 x24940 x27099 (not x21700))
+:assumption (or x28580 (not x5590))
+:assumption (or x19147 x29027 x30113)
+:assumption (or x3032 (not x24916))
+:assumption (or (not x16238) (not x14663))
+:assumption (or x16622 x18344)
+:assumption (or (not x21693) (not x23359))
+:assumption (or (not x20482) x15320)
+:assumption (or (not x24722) x31577)
+:assumption (or (not x4466) x21476)
+:assumption (or x15530 x19634)
+:assumption (or x10246 x21430)
+:assumption (or x25252 x13400)
+:assumption (or x15501 (not x8002))
+:assumption (or x11852 x382)
+:assumption (or (not x20005) (not x9531))
+:assumption (or x6910 (not x18561))
+:assumption (or x18017 x27211)
+:assumption (or (not x29438) (not x46))
+:assumption (or x618 (not x18388))
+:assumption (or (not x28166) x28803)
+:assumption (or x26892 (not x13883))
+:assumption (or (not x16506) x28281)
+:assumption (or x21992 (not x2936))
+:assumption (or (not x13280) (not x25249))
+:assumption (or x21432 (not x30008))
+:assumption (or x7199 x8002 x23244 x30849)
+:assumption (or (not x18325) x9971)
+:assumption (or x16006 (not x17284))
+:assumption (or x6149 (not x7375))
+:assumption (or (not x22494) x23549)
+:assumption (or (not x31829) (not x20422))
+:assumption (or x960 x767)
+:assumption (or (not x466) (not x24242))
+:assumption (or x8698 x5028)
+:assumption (or (not x28770) x20395)
+:assumption (or (not x9518) x24094)
+:assumption (or (not x21154) (not x14185))
+:assumption (or (not x6783) x13956 x22154 x18505 x23244 x8002)
+:assumption (or (not x13210) (not x30633) (not x4545))
+:assumption (or x29987 x25074 x31069)
+:assumption (or x6958 (not x27046))
+:assumption (or (not x3063) x12663)
+:assumption (or (not x8198) (not x21125))
+:assumption (or (not x25554) x4796 x4061)
+:assumption (or (not x25034) x291)
+:assumption (or x3091 x17075)
+:assumption (or (not x14993) x530)
+:assumption (or x28357 (not x31728))
+:assumption (or x152 x10905)
+:assumption (or (not x11526) (not x22495))
+:assumption (or x1627 x10959)
+:assumption (or (not x19083) x31217)
+:assumption (or x6006 x14898)
+:assumption (or x13738 (not x14180) x20859 x29121 (not x21801) x11980 (not x10385) x201)
+:assumption (or (not x10704) (not x11738))
+:assumption (or (not x30848) (not x19473))
+:assumption (or x24299 (not x21593))
+:assumption (or x6677 x30686 x28645 x1110 (not x1433) x24877)
+:assumption (or x13453 (not x14839))
+:assumption (or (not x12628) (not x8204))
+:assumption (or (not x30787) (not x6155))
+:assumption (or x9531 (not x2141) (not x23077) (not x16830) (not x18346) x4937 (not x5521) x24348 x15521)
+:assumption (or (not x21067) (not x11544))
+:assumption (or x15621 (not x30684))
+:assumption (or (not x20591) (not x23757))
+:assumption (or x1870 x18655)
+:assumption (or (not x3388) (not x27359))
+:assumption (or (not x12394) (not x17334))
+:assumption (or (not x26136) x12181)
+:assumption (or x14627 x28391)
+:assumption (or (not x21238) x159)
+:assumption (or (not x718) (not x348))
+:assumption (or (not x8524) x4786)
+:assumption (or (not x16025) (not x15100) (not x27458))
+:assumption (or (not x3297) (not x3123))
+:assumption (or (not x17201) x21537)
+:assumption (or (not x5528) x7224 x20528 (not x20663))
+:assumption (or x30784 x16802 (not x1086) x24722)
+:assumption (or (not x16552) x17779)
+:assumption (or (not x1468) (not x30954))
+:assumption (or (not x11325) x16374)
+:assumption (or x26911 x3901)
+:assumption (or x20299 (not x23405))
+:assumption (or x24464 (not x8002))
+:assumption (or (not x28657) x18592)
+:assumption (or (not x7520) (not x26203))
+:assumption (or (not x21171) x18602)
+:assumption (or x2991 (not x26017) (not x31088))
+:assumption (or x3833 (not x17282))
+:assumption (or x30364 (not x22852) x27900)
+:assumption (or x10135 (not x23659))
+:assumption (or (not x23891) (not x5659))
+:assumption (or (not x27956) x30235)
+:assumption (or x14209 x16728)
+:assumption (or x10461 (not x5380))
+:assumption (or (not x24619) (not x24755))
+:assumption (or (not x7903) x28602)
+:assumption (or x2698 (not x17440) (not x6307) x27625 (not x10874) (not x4349))
+:assumption (or (not x22160) (not x12751))
+:assumption (or x17190 x29894)
+:assumption (or (not x22326) x17603)
+:assumption (or (not x31063) x14082)
+:assumption (or x28138 (not x9651))
+:assumption (or x1435 (not x10450))
+:assumption (or x25977 x25004)
+:assumption (or x28571 (not x16175) x15450)
+:assumption (or (not x13466) (not x30075))
+:assumption (or x21298 (not x19475))
+:assumption (or x1802 x31858 x23958 (not x13951))
+:assumption (or x16304 x16905)
+:assumption (or (not x23304) x3157)
+:assumption (or (not x23858) x26904)
+:assumption (or (not x29312) x8612)
+:assumption (or (not x12279) x18055)
+:assumption (or x29312 x31407 (not x20187) x7007)
+:assumption (or (not x12308) (not x17746))
+:assumption (or (not x4568) (not x18066))
+:assumption (or (not x30764) x28368)
+:assumption (or x1115 (not x14802))
+:assumption (or x31658 x9880)
+:assumption (or (not x5533) (not x17140))
+:assumption (or (not x12727) x12858)
+:assumption (or (not x29996) (not x30165))
+:assumption (or (not x31767) x4423)
+:assumption (or x21428 (not x25322) x4559)
+:assumption (or x26232 (not x22653))
+:assumption (or (not x16769) x3693)
+:assumption (or (not x5) (not x27224))
+:assumption (or (not x10909) x27412)
+:assumption (or x23436 x18677)
+:assumption (or (not x14495) (not x25659))
+:assumption (or (not x19542) x485)
+:assumption (or x29000 (not x19057))
+:assumption (or (not x15366) x22300)
+:assumption (or (not x386) x29784)
+:assumption (or (not x13674) (not x23387))
+:assumption (or (not x18488) (not x1052))
+:assumption (or x13706 x17203)
+:assumption (or x2177 x16022)
+:assumption (or x30113 x29333 x15277)
+:assumption (or (not x13576) (not x22433))
+:assumption (or (not x9777) (not x25514))
+:assumption (or (not x3045) x31498)
+:assumption (or x19012 x1533)
+:assumption (or x19698 x4463)
+:assumption (or (not x9549) x4555 (not x29344) x24503)
+:assumption (or x24241 x30633)
+:assumption (or x4941 x24827)
+:assumption (or (not x10480) x29368)
+:assumption (or x24661 (not x17534) (not x6594))
+:assumption (or x17828 x21726)
+:assumption (or x9908 (not x7080) x23202)
+:assumption (or x6594 x3636 x4204 x17534)
+:assumption (or x17399 x12180)
+:assumption (or x28973 (not x3685) x24073)
+:assumption (or x20193 (not x6309))
+:assumption (or (not x16774) (not x26316))
+:assumption (or (not x25819) x3213)
+:assumption (or (not x4235) (not x16374))
+:assumption (or (not x28941) (not x15311))
+:assumption (or (not x29329) x20421)
+:assumption (or x8493 x10195)
+:assumption (or x3071 x18731 x7653)
+:assumption (or (not x12369) x30837)
+:assumption (or x4910 (not x4732))
+:assumption (or (not x19698) (not x17493))
+:assumption (or x901 (not x4918))
+:assumption (or (not x4333) (not x202) x8245)
+:assumption (or (not x23218) (not x7748))
+:assumption (or (not x26618) x22258)
+:assumption (or x31867 x12558)
+:assumption (or x16510 x22356)
+:assumption (or x6046 (not x6433))
+:assumption (or (not x4052) (not x3281))
+:assumption (or x14206 x19592)
+:assumption (or x9531 x1600)
+:assumption (or x29298 (not x8231))
+:assumption (or x16274 x8002)
+:assumption (or (not x16694) (not x31082))
+:assumption (or (not x26706) (not x20336))
+:assumption (or (not x23310) (not x9476))
+:assumption (or (not x14773) (not x142))
+:assumption (or x21103 x8142)
+:assumption (or x5665 x7841)
+:assumption (or x31305 (not x8009))
+:assumption (or x20403 x26366)
+:assumption (or x9647 (not x10446))
+:assumption (or (not x16220) (not x8170))
+:assumption (or x19364 x1508)
+:assumption (or (not x9779) (not x15539))
+:assumption (or (not x23244) x30715)
+:assumption (or (not x14704) x12385 x29606)
+:assumption (or x7441 (not x3900))
+:assumption (or (not x16660) (not x330))
+:assumption (or x31113 (not x21298))
+:assumption (or (not x22143) (not x2401))
+:assumption (or x17288 (not x22505))
+:assumption (or (not x7848) x15263)
+:assumption (or (not x26360) x31709)
+:assumption (or (not x20794) x10925)
+:assumption (or x11173 (not x918) (not x4709) x25366)
+:assumption (or (not x29312) x30438)
+:assumption (or x30720 x31138)
+:assumption (or (not x10636) (not x31086))
+:assumption (or (not x18613) x18333)
+:assumption (or x18805 x26462)
+:assumption (or x24906 x7137)
+:assumption (or x6746 (not x6665))
+:assumption (or x8000 x23633 x5528)
+:assumption (or (not x16975) x2732)
+:assumption (or (not x28881) (not x4783))
+:assumption (or x16426 (not x16911))
+:assumption (or x480 x12752 (not x6396) (not x2775))
+:assumption (or (not x17557) x11687)
+:assumption (or (not x20666) x20504)
+:assumption (or (not x25825) x12523)
+:assumption (or (not x5025) (not x10099))
+:assumption (or x22294 x11712)
+:assumption (or (not x2799) x30603 x25972 (not x27175) (not x1750) x27865 x9531 (not x9951))
+:assumption (or x30307 x21491)
+:assumption (or x20917 x21104)
+:assumption (or x1290 x31872)
+:assumption (or (not x5840) (not x23318))
+:assumption (or (not x11145) x4039)
+:assumption (or x17837 x6607)
+:assumption (or x7343 (not x17745))
+:assumption (or x20378 (not x2765))
+:assumption (or x14426 (not x19649))
+:assumption (or x5409 (not x31066))
+:assumption (or (not x1776) (not x8083))
+:assumption (or x25438 (not x13655))
+:assumption (or x17527 (not x31049) (not x7948) (not x16375))
+:assumption (or (not x10683) x12755)
+:assumption (or x7498 x23864 x29448 x1683 (not x20210))
+:assumption (or (not x4169) (not x28268))
+:assumption (or x4189 x6746)
+:assumption (or x11552 (not x23168))
+:assumption (or (not x11878) (not x28995))
+:assumption (or (not x11351) x12265)
+:assumption (or (not x14790) x19864 x30176)
+:assumption (or (not x14388) (not x7537))
+:assumption (or x21092 (not x22092))
+:assumption (or (not x27477) (not x30646))
+:assumption (or (not x20714) (not x30000))
+:assumption (or (not x9788) (not x25315))
+:assumption (or x14358 x480)
+:assumption (or x24553 x19430)
+:assumption (or (not x16392) (not x20640))
+:assumption (or x13956 x8646)
+:assumption (or x12268 (not x29052) (not x29116))
+:assumption (or (not x10386) x7798)
+:assumption (or x8532 (not x22875))
+:assumption (or x10979 x29940)
+:assumption (or x24952 x4486)
+:assumption (or (not x23112) x29811)
+:assumption (or (not x23006) (not x12242))
+:assumption (or (not x6849) x5321)
+:assumption (or x30959 x1185 x2958 (not x6746))
+:assumption (or x19950 x3860)
+:assumption (or (not x11378) (not x17914))
+:assumption (or (not x18813) x31406)
+:assumption (or x29235 x31900)
+:assumption (or x24156 x27203)
+:assumption (or x8002 (not x13956) (not x20291) (not x17961) x23244)
+:assumption (or (not x5113) x18623)
+:assumption (or x20144 x28328 (not x24904))
+:assumption (or (not x14789) x10798)
+:assumption (or x16067 x7688)
+:assumption (or x14839 (not x31596))
+:assumption (or (not x5150) (not x25843))
+:assumption (or (not x5557) x20426)
+:assumption (or (not x27296) (not x20237))
+:assumption (or x6772 (not x30789))
+:assumption (or (not x23058) x19429)
+:assumption (or x14591 x24211)
+:assumption (or x3176 (not x20399) (not x31829))
+:assumption (or x13956 (not x9586))
+:assumption (or x30512 x28260)
+:assumption (or (not x12797) x20220)
+:assumption (or (not x5056) (not x27517))
+:assumption (or x16707 x13373)
+:assumption (or x22928 x23341)
+:assumption (or x25067 x24200)
+:assumption (or x22855 x22097 (not x8948))
+:assumption (or x6845 (not x30457))
+:assumption (or (not x18754) x12251)
+:assumption (or (not x20768) (not x21434))
+:assumption (or x16098 x4098)
+:assumption (or (not x24029) (not x455) (not x29594) x7255 (not x11750) (not x1453))
+:assumption (or x16191 x29442)
+:assumption (or (not x3305) (not x11485))
+:assumption (or (not x23771) (not x1111) (not x18546) (not x23244) (not x26552) x4893)
+:assumption (or (not x22586) x3766)
+:assumption (or (not x11248) (not x9008) x22713)
+:assumption (or (not x997) (not x31681))
+:assumption (or (not x24065) (not x29557) x24952)
+:assumption (or x23328 (not x16025) (not x7427))
+:assumption (or x26536 x31469 (not x24397) (not x18873))
+:assumption (or (not x25043) x31224)
+:assumption (or (not x27082) x27654)
+:assumption (or x21371 x29889)
+:assumption (or x19246 x1010)
+:assumption (or x9901 (not x30407))
+:assumption (or x27262 (not x20291) (not x2849) (not x103))
+:assumption (or (not x28806) x3985)
+:assumption (or (not x15711) x1990)
+:assumption (or x20472 x15391)
+:assumption (or (not x27788) (not x21815))
+:assumption (or x3610 (not x26605))
+:assumption (or x4283 x12536)
+:assumption (or x11789 x31681)
+:assumption (or (not x14789) x17075)
+:assumption (or (not x23841) x5025)
+:assumption (or (not x27489) x17585)
+:assumption (or (not x7320) (not x31501))
+:assumption (or x15130 (not x6508))
+:assumption (or x19572 (not x17476))
+:assumption (or x11327 x29606)
+:assumption (or x5146 x12628 (not x11294) x8204)
+:assumption (or x13560 x16848)
+:assumption (or x28342 (not x14333))
+:assumption (or (not x1241) (not x9008))
+:assumption (or (not x9771) (not x22089))
+:assumption (or x15917 (not x11821) (not x20104) x10064)
+:assumption (or (not x22784) x23706)
+:assumption (or (not x13018) x4688)
+:assumption (or x3346 (not x6888))
+:assumption (or x29269 x6738)
+:assumption (or (not x29442) (not x5522))
+:assumption (or x26107 (not x30910) x13111)
+:assumption (or (not x25283) (not x16767))
+:assumption (or (not x3851) (not x30567))
+:assumption (or x20729 (not x29676))
+:assumption (or (not x21493) x5913)
+:assumption (or (not x18828) (not x3027))
+:assumption (or (not x20731) x30911)
+:assumption (or (not x8945) (not x22965))
+:assumption (or (not x16271) x22773)
+:assumption (or (not x3111) (not x6130))
+:assumption (or (not x27262) x22098)
+:assumption (or (not x21298) x2765 x14488)
+:assumption (or x9741 (not x8703))
+:assumption (or x4263 x7286)
+:assumption (or (not x14644) (not x11637) (not x2250))
+:assumption (or x19181 x13576)
+:assumption (or (not x16670) (not x7776))
+:assumption (or x30852 x3997)
+:assumption (or x22819 x31230 (not x10909))
+:assumption (or x5886 x7863 (not x22722) x8961)
+:assumption (or x30920 x21717)
+:assumption (or x3308 (not x1672))
+:assumption (or x18222 (not x24296) (not x14385) x18981)
+:assumption (or x29308 (not x23822))
+:assumption (or (not x31921) x13789)
+:assumption (or (not x28092) (not x19337))
+:assumption (or (not x24067) x22428)
+:assumption (or x29140 x6149)
+:assumption (or x3603 (not x15366))
+:assumption (or (not x25659) x14319)
+:assumption (or (not x18247) (not x23886) (not x12207))
+:assumption (or x16293 x29779)
+:assumption (or x23116 x9008)
+:assumption (or (not x21450) (not x14507))
+:assumption (or (not x29106) x26310)
+:assumption (or x27655 (not x1729))
+:assumption (or (not x4469) (not x24190))
+:assumption (or x5091 x2354)
+:assumption (or x4981 (not x21629))
+:assumption (or (not x24521) x30202)
+:assumption (or (not x26775) x18042)
+:assumption (or (not x27382) x4493)
+:assumption (or x23773 (not x1796))
+:assumption (or (not x11420) x969)
+:assumption (or (not x15286) x9926 (not x13259) (not x2062) x9443)
+:assumption (or (not x14695) (not x25476))
+:assumption (or (not x26713) (not x29707))
+:assumption (or (not x14887) (not x13943))
+:assumption (or x9013 x20546)
+:assumption (or (not x230) (not x11504))
+:assumption (or x27542 x8002 (not x13616))
+:assumption (or x17397 x7854)
+:assumption (or (not x28436) x18202)
+:assumption (or (not x2715) x22306)
+:assumption (or x6164 (not x15167))
+:assumption (or x603 (not x31446))
+:assumption (or (not x5515) (not x16885))
+:assumption (or x30954 x23244 (not x24060))
+:assumption (or (not x31795) x21266 (not x16809) x21485 (not x26383) x21282)
+:assumption (or (not x9847) (not x28698))
+:assumption (or x1011 x31754)
+:assumption (or x1582 x15858 (not x27038))
+:assumption (or (not x19851) x30626)
+:assumption (or x17329 x10064)
+:assumption (or x4079 (not x15917))
+:assumption (or (not x17479) (not x18608))
+:assumption (or (not x17875) x13864)
+:assumption (or x31598 x9830)
+:assumption (or (not x27240) x18153)
+:assumption (or (not x2542) (not x9347))
+:assumption (or x29701 (not x23399))
+:assumption (or (not x6591) (not x3303))
+:assumption (or x29404 (not x16085) x21190 (not x22721) x11662 x12136)
+:assumption (or (not x12535) (not x8002))
+:assumption (or (not x18528) x30113)
+:assumption (or x2708 (not x12244))
+:assumption (or x26366 (not x1393))
+:assumption (or x21013 x1198 (not x21653))
+:assumption (or x11005 (not x14182))
+:assumption (or (not x9375) x8463)
+:assumption (or x29002 x430)
+:assumption (or (not x17052) (not x22188))
+:assumption (or (not x16018) (not x397))
+:assumption (or x12538 (not x4839))
+:assumption (or (not x12224) x425)
+:assumption (or (not x17065) x12433 x30139 x15237 x22383 (not x14484))
+:assumption (or (not x28489) x26275)
+:assumption (or x16883 x10904)
+:assumption (or x21045 x23582)
+:assumption (or x8193 (not x31336))
+:assumption (or (not x21400) x7236)
+:assumption (or (not x9550) (not x12917))
+:assumption (or (not x25355) x30852)
+:assumption (or (not x18628) x23244 x8200)
+:assumption (or x7685 (not x5581))
+:assumption (or x28375 x18113)
+:assumption (or x27741 (not x53))
+:assumption (or x30835 x31448)
+:assumption (or (not x4650) x25966)
+:assumption (or (not x6307) (not x15881) x22231)
+:assumption (or x16511 (not x18830))
+:assumption (or (not x8635) x3230)
+:assumption (or (not x20846) x10002 x8002)
+:assumption (or (not x31639) (not x4138))
+:assumption (or x17534 (not x13516))
+:assumption (or (not x8739) x17911)
+:assumption (or (not x21279) x10288)
+:assumption (or (not x22432) (not x24228))
+:assumption (or x1948 x29078)
+:assumption (or x26703 (not x28232))
+:assumption (or (not x22604) x15349)
+:assumption (or (not x14363) x12844 x19612 (not x16741))
+:assumption (or x13462 (not x11229))
+:assumption (or (not x29005) (not x29753))
+:assumption (or (not x22855) (not x22097))
+:assumption (or x30628 (not x4201))
+:assumption (or (not x12014) (not x31332))
+:assumption (or x13091 (not x10286))
+:assumption (or (not x388) x20723)
+:assumption (or x8766 x15340)
+:assumption (or (not x14511) x20100)
+:assumption (or x23244 x8002 (not x15541) (not x20910))
+:assumption (or x5229 x26455)
+:assumption (or x28683 x24989 x21815 x7504 (not x10838) x10055)
+:assumption (or x24996 (not x19784))
+:assumption (or (not x23228) x21284)
+:assumption (or (not x30432) (not x4598) x13956)
+:assumption (or x16844 (not x13411))
+:assumption (or x15107 x10283)
+:assumption (or x13484 x13060)
+:assumption (or x6923 x26853)
+:assumption (or x27936 (not x14140))
+:assumption (or x4912 x13674)
+:assumption (or (not x20249) (not x514))
+:assumption (or (not x18060) (not x14591))
+:assumption (or (not x16947) x23244)
+:assumption (or x14786 x13956)
+:assumption (or x20042 x23244 x27359 x8002 x13956 x21804)
+:assumption (or (not x13320) x4386)
+:assumption (or (not x21077) x29896)
+:assumption (or x11839 (not x23980))
+:assumption (or (not x21246) x20431)
+:assumption (or (not x21101) x2256)
+:assumption (or x10711 (not x13796))
+:assumption (or x10510 x6765)
+:assumption (or x10248 (not x20905))
+:assumption (or (not x7005) x19603)
+:assumption (or x24798 x8979 (not x28876))
+:assumption (or x12378 (not x15995))
+:assumption (or (not x11935) (not x4187))
+:assumption (or (not x6538) x17411)
+:assumption (or x10897 x13962)
+:assumption (or x645 (not x27478))
+:assumption (or (not x16618) x31228)
+:assumption (or x12110 (not x13956))
+:assumption (or x29603 x14506)
+:assumption (or x8022 x25659)
+:assumption (or x25602 (not x8002) x4294 x7804)
+:assumption (or x8120 (not x14412) (not x11642) (not x20606))
+:assumption (or (not x25636) (not x6357))
+:assumption (or (not x25614) x8463)
+:assumption (or (not x6397) (not x7811))
+:assumption (or x23738 (not x7783))
+:assumption (or x20720 x21910 (not x12923) (not x22802))
+:assumption (or (not x15760) (not x9776))
+:assumption (or x8431 x297)
+:assumption (or (not x26676) x24419)
+:assumption (or (not x2004) (not x17598))
+:assumption (or x17607 x25582)
+:assumption (or (not x11884) x23772)
+:assumption (or (not x17312) x24914 (not x9008))
+:assumption (or (not x26797) x31878)
+:assumption (or (not x1328) (not x31150))
+:assumption (or (not x11322) x8002 (not x13685))
+:assumption (or (not x24603) (not x5738))
+:assumption (or (not x13046) (not x19379))
+:assumption (or (not x20934) x8009 (not x9227) x8002)
+:assumption (or (not x7650) (not x27941) x31576 x5893)
+:assumption (or (not x2710) (not x15621) x19367)
+:assumption (or (not x5570) x654)
+:assumption (or (not x8012) (not x29512) x29429)
+:assumption (or (not x12557) (not x21649))
+:assumption (or (not x9451) x17074)
+:assumption (or x17534 (not x9030))
+:assumption (or x6625 (not x28068))
+:assumption (or (not x18981) (not x27800))
+:assumption (or (not x26702) x1389)
+:assumption (or (not x27546) x9112)
+:assumption (or x5528 (not x31672))
+:assumption (or x30539 x28684)
+:assumption (or (not x17890) (not x8139))
+:assumption (or x25181 (not x4570))
+:assumption (or (not x15761) (not x28593))
+:assumption (or (not x14973) x14690)
+:assumption (or x23451 (not x25293))
+:assumption (or x5528 (not x27941) (not x30133))
+:assumption (or x4326 (not x3218) x3053 x6971 x5363 (not x6444))
+:assumption (or (not x17411) (not x21946))
+:assumption (or x20126 (not x6351))
+:assumption (or (not x428) (not x21354))
+:assumption (or x608 x23035)
+:assumption (or x14127 x22531 x12217 x26445 x21410)
+:assumption (or x12601 (not x31380))
+:assumption (or x12434 (not x3646))
+:assumption (or x6381 x28335)
+:assumption (or x3249 (not x24127))
+:assumption (or x15615 (not x26341))
+:assumption (or x10000 (not x18566))
+:assumption (or (not x25577) (not x27603))
+:assumption (or (not x28095) x13532)
+:assumption (or (not x8519) x27398 x6307)
+:assumption (or x5461 x6948)
+:assumption (or (not x16350) (not x13254) (not x13576))
+:assumption (or (not x15453) x21627)
+:assumption (or (not x6636) x6675)
+:assumption (or x5181 (not x18727))
+:assumption (or x9025 x3239)
+:assumption (or (not x7810) (not x9008) (not x4364))
+:assumption (or (not x13327) (not x22670))
+:assumption (or x6451 x26217)
+:assumption (or x3248 (not x5121))
+:assumption (or x1629 x124)
+:assumption (or (not x12673) (not x3202))
+:assumption (or (not x25425) x11393)
+:assumption (or (not x10788) x11352)
+:assumption (or (not x19183) (not x7726))
+:assumption (or (not x3065) x5367 (not x27011) (not x13511))
+:assumption (or (not x2864) (not x4865) x26354)
+:assumption (or x23109 (not x15581))
+:assumption (or x15194 x12060)
+:assumption (or x6713 (not x17024))
+:assumption (or (not x15986) x14455 (not x4058) x13253 x3435 x20669)
+:assumption (or x6973 x24580)
+:assumption (or (not x21841) x8113)
+:assumption (or x5281 x24742)
+:assumption (or (not x19305) (not x2968))
+:assumption (or x27662 (not x13131))
+:assumption (or (not x9279) x23244)
+:assumption (or (not x6793) (not x12253))
+:assumption (or x15058 (not x12756))
+:assumption (or (not x4852) (not x8002))
+:assumption (or x2807 (not x456) x16229 x24042)
+:assumption (or (not x2898) x15942)
+:assumption (or x17597 (not x26002))
+:assumption (or x28454 x16841)
+:assumption (or x2214 x6594)
+:assumption (or (not x5132) x8662)
+:assumption (or (not x21125) (not x9531))
+:assumption (or x2554 x14946 (not x11238))
+:assumption (or (not x22791) x27571)
+:assumption (or x21815 x20239)
+:assumption (or x19917 x9509)
+:assumption (or (not x28177) (not x9936))
+:assumption (or x30989 (not x7028))
+:assumption (or x29711 (not x6143) x27048 (not x20851) (not x15852))
+:assumption (or (not x16510) x30876)
+:assumption (or x13269 (not x9713))
+:assumption (or (not x13927) x2022)
+:assumption (or (not x27513) x7370)
+:assumption (or (not x17622) x2709)
+:assumption (or (not x18918) x15699)
+:assumption (or x8203 x12085)
+:assumption (or x28668 x10611)
+:assumption (or (not x12990) (not x18523))
+:assumption (or x20482 (not x19225))
+:assumption (or (not x10819) x4356 x26424 x24384 x6344 x1320 (not x27318) (not x26286))
+:assumption (or x11792 (not x31582))
+:assumption (or x9612 x12511)
+:assumption (or (not x17023) (not x14802))
+:assumption (or x29312 x14208)
+:assumption (or (not x9008) x27376)
+:assumption (or x16025 (not x18273) (not x29305))
+:assumption (or x16362 (not x13956) x8610 (not x10335))
+:assumption (or (not x1844) x11207)
+:assumption (or (not x9474) (not x10594))
+:assumption (or (not x26027) (not x11085))
+:assumption (or (not x27045) (not x19200))
+:assumption (or x1192 (not x31557) (not x8510))
+:assumption (or (not x14472) (not x29763))
+:assumption (or x512 x14879)
+:assumption (or (not x3494) x28864 x18069 (not x17099))
+:assumption (or x17681 (not x3595))
+:assumption (or x17530 x481)
+:assumption (or x6142 (not x20589))
+:assumption (or (not x25939) (not x29649))
+:assumption (or x18962 x29312)
+:assumption (or (not x30001) (not x28802))
+:assumption (or x29106 (not x26310))
+:assumption (or (not x15659) (not x23953) x31114)
+:assumption (or (not x27998) x252 (not x29853) x4491 (not x6444))
+:assumption (or (not x13072) (not x12749))
+:assumption (or (not x23244) x6231)
+:assumption (or x2454 x18694)
+:assumption (or x15511 (not x7594))
+:assumption (or x11411 x24919)
+:assumption (or (not x2996) x17000)
+:assumption (or (not x9078) (not x11637))
+:assumption (or (not x31417) (not x16422))
+:assumption (or (not x4668) x31083)
+:assumption (or (not x9515) (not x10324))
+:assumption (or (not x19522) (not x12809))
+:assumption (or (not x12093) (not x11471))
+:assumption (or (not x2419) (not x7128))
+:assumption (or x2938 (not x17261))
+:assumption (or (not x18647) (not x24117) (not x10222) (not x26743) (not x21086))
+:assumption (or x29442 (not x1550))
+:assumption (or (not x29295) x3714 x28781 (not x18871))
+:assumption (or (not x8002) (not x6055) (not x13940))
+:assumption (or (not x19018) x8237)
+:assumption (or x4761 x6935)
+:assumption (or x30138 x26897 x28088 x2281)
+:assumption (or (not x28903) (not x13664))
+:assumption (or x10060 (not x22467))
+:assumption (or x31081 x3782 (not x3259))
+:assumption (or (not x3301) x1443)
+:assumption (or (not x2133) x16681 x16025)
+:assumption (or x6820 x8616)
+:assumption (or (not x9392) (not x13712))
+:assumption (or x19154 x18160)
+:assumption (or x24689 x13880)
+:assumption (or (not x12380) (not x6383))
+:assumption (or x29606 (not x2470))
+:assumption (or x1341 x20899)
+:assumption (or x12082 x12512)
+:assumption (or (not x11683) (not x18972))
+:assumption (or (not x2479) x24540)
+:assumption (or x17496 x5558 x24500 (not x20448))
+:assumption (or (not x18747) x18097)
+:assumption (or (not x5274) (not x29614))
+:assumption (or (not x3736) (not x14672))
+:assumption (or x9779 (not x19100) x13956)
+:assumption (or x4451 x17069 (not x23035))
+:assumption (or x13550 (not x29523))
+:assumption (or x8410 (not x20756))
+:assumption (or x16056 x30986 (not x25659))
+:assumption (or x23708 (not x23903))
+:assumption (or (not x7533) (not x798))
+:assumption (or x18766 x2011)
+:assumption (or x19938 x24690)
+:assumption (or x4091 (not x1181))
+:assumption (or (not x7158) (not x26123))
+:assumption (or (not x8745) x9873 (not x3494))
+:assumption (or x23956 x6918)
+:assumption (or x2572 x28718)
+:assumption (or x6733 x26788 x8002)
+:assumption (or (not x6113) (not x21836))
+:assumption (or x25420 (not x23432))
+:assumption (or (not x15404) x11334 x9732)
+:assumption (or (not x22600) x23682)
+:assumption (or x27622 (not x29315) x29062 x21807 x19069)
+:assumption (or (not x139) x20163)
+:assumption (or x10931 x9008)
+:assumption (or x31494 x5500)
+:assumption (or x25192 (not x6762))
+:assumption (or x19130 x26640)
+:assumption (or (not x27509) x3975)
+:assumption (or (not x28672) (not x26839) x16907 (not x15520))
+:assumption (or x14347 x6204)
+:assumption (or (not x14748) x31723 x26354)
+:assumption (or x9847 x13623 (not x12435) x26525 x28698 x30130 (not x11204))
+:assumption (or (not x24998) (not x29228))
+:assumption (or (not x2348) (not x20888))
+:assumption (or (not x10508) (not x9547))
+:assumption (or (not x29819) (not x14839) x26306)
+:assumption (or (not x24044) x12439)
+:assumption (or x30113 x9779 x30108)
+:assumption (or (not x4239) x20590)
+:assumption (or x2071 x5924)
+:assumption (or x25423 (not x213))
+:assumption (or x16971 (not x29142))
+:assumption (or (not x21445) (not x30434))
+:assumption (or (not x23801) (not x23707))
+:assumption (or (not x12176) (not x31789))
+:assumption (or x8127 (not x743))
+:assumption (or x30965 (not x26169))
+:assumption (or x7558 x1364)
+:assumption (or (not x31827) x8895)
+:assumption (or (not x1859) (not x25223))
+:assumption (or x15745 x31570 (not x31701))
+:assumption (or (not x25310) (not x14153))
+:assumption (or x12186 (not x14484))
+:assumption (or (not x18003) x18164 x22001 x22 (not x660) x5541)
+:assumption (or (not x1009) (not x26243))
+:assumption (or (not x2906) (not x10856))
+:assumption (or x14497 (not x26760))
+:assumption (or x8907 (not x136))
+:assumption (or x16183 x1309)
+:assumption (or (not x17760) x30732)
+:assumption (or (not x13023) (not x23149))
+:assumption (or (not x10221) (not x6780))
+:assumption (or x29312 (not x820) (not x11754) (not x16510) (not x21815))
+:assumption (or x10693 x30751)
+:assumption (or x9703 (not x28633))
+:assumption (or x29489 x16300)
+:assumption (or x16411 x25663)
+:assumption (or x21128 (not x30488))
+:assumption (or (not x2485) x1764)
+:assumption (or (not x15795) x27240 (not x1404) x16304)
+:assumption (or x18346 (not x29947))
+:assumption (or (not x2514) x4550)
+:assumption (or x20885 x2943 x27066)
+:assumption (or x8721 x14876)
+:assumption (or x13411 (not x21318) (not x9008) (not x18623) (not x5528))
+:assumption (or (not x13487) x14188)
+:assumption (or (not x4097) x2530)
+:assumption (or x28249 (not x11164))
+:assumption (or x25228 (not x20525))
+:assumption (or x21504 (not x3133))
+:assumption (or (not x4318) (not x18606))
+:assumption (or x23866 x25494)
+:assumption (or (not x21826) (not x2577))
+:assumption (or x8002 x23244 (not x21633) x3086)
+:assumption (or (not x14102) x7569)
+:assumption (or x25851 (not x28548) x3793 x19948 x30144)
+:assumption (or x2014 x28367)
+:assumption (or x27291 x4699)
+:assumption (or (not x918) (not x8582))
+:assumption (or x29649 x11079)
+:assumption (or (not x28090) x2992)
+:assumption (or x12799 (not x29096))
+:assumption (or x7801 x19653)
+:assumption (or x28885 x29992)
+:assumption (or (not x25131) (not x15266))
+:assumption (or x20125 x27999)
+:assumption (or (not x11214) x25003)
+:assumption (or x6279 (not x9568))
+:assumption (or x12866 (not x5402) (not x10981) (not x18320) x21120)
+:assumption (or x24451 (not x24718))
+:assumption (or (not x18734) (not x18859))
+:assumption (or (not x23747) (not x13022))
+:assumption (or (not x20705) x7202)
+:assumption (or x14251 x18152)
+:assumption (or (not x7188) (not x3723))
+:assumption (or (not x23658) (not x25366))
+:assumption (or x15661 (not x7288))
+:assumption (or x14863 x31835)
+:assumption (or x20325 (not x23283) (not x12242) (not x21062))
+:assumption (or x15380 x14082)
+:assumption (or (not x14662) x17828)
+:assumption (or (not x29324) x4863)
+:assumption (or x3412 (not x14310))
+:assumption (or (not x11339) x30124)
+:assumption (or (not x21416) (not x7799))
+:assumption (or x9120 x29769)
+:assumption (or x19221 x20189)
+:assumption (or x25026 x23102 x5367 x23303 (not x7041) (not x1782) x10031 (not x23689) x24760)
+:assumption (or (not x21955) x7616)
+:assumption (or x17047 x24453)
+:assumption (or (not x11550) (not x5528))
+:assumption (or (not x15730) x14856)
+:assumption (or x16678 (not x31466))
+:assumption (or (not x5219) x21745)
+:assumption (or x30900 x4376)
+:assumption (or x15400 x11456 x27202 x7204 x24934)
+:assumption (or (not x4882) (not x28944))
+:assumption (or x26653 x259 x9272 (not x12045))
+:assumption (or x7438 x31374)
+:assumption (or (not x16979) x8439)
+:assumption (or (not x18021) x20761)
+:assumption (or x13547 x10779)
+:assumption (or x10980 x11734)
+:assumption (or (not x13739) x7046 x21036 (not x30930))
+:assumption (or x29519 x15210 x19992 (not x19878))
+:assumption (or x9008 x31684)
+:assumption (or (not x12216) x25360)
+:assumption (or x3109 x3782)
+:assumption (or x4991 (not x16914))
+:assumption (or (not x23185) (not x9164))
+:assumption (or x2526 x17790)
+:assumption (or x27695 (not x9903))
+:assumption (or x13956 x10271)
+:assumption (or (not x31829) (not x9958))
+:assumption (or x14081 x8436 (not x21727) x29738 x31420)
+:assumption (or (not x3451) (not x9008))
+:assumption (or (not x31734) (not x5871))
+:assumption (or x30196 x13399)
+:assumption (or (not x18513) x2803 x1393)
+:assumption (or x23055 (not x11045))
+:assumption (or x30342 (not x18884))
+:assumption (or x22957 x6902)
+:assumption (or x3129 (not x4488))
+:assumption (or (not x16142) (not x8267))
+:assumption (or (not x21747) x23399)
+:assumption (or x29029 x26355)
+:assumption (or x19139 x17851)
+:assumption (or (not x1184) (not x18345))
+:assumption (or (not x21208) x12868)
+:assumption (or (not x2259) x1552)
+:assumption (or (not x22332) x23186)
+:assumption (or x20012 x21067 (not x18598) (not x9844) (not x8570) x2189)
+:assumption (or (not x24943) x1262)
+:assumption (or (not x12538) x7537 (not x12440))
+:assumption (or x958 (not x27520))
+:assumption (or (not x24292) (not x4298) x9008)
+:assumption (or (not x20109) x12210)
+:assumption (or (not x6300) x19327)
+:assumption (or x6746 x5158)
+:assumption (or x14695 x18774)
+:assumption (or (not x5140) (not x15835))
+:assumption (or x26869 (not x13843))
+:assumption (or x11153 (not x30953))
+:assumption (or (not x25788) x11233)
+:assumption (or (not x31191) x28816 x15659 x24952)
+:assumption (or (not x739) (not x3619) (not x9211) x17154 (not x30738))
+:assumption (or (not x24277) x5014)
+:assumption (or (not x22855) (not x5603))
+:assumption (or x9531 x26745)
+:assumption (or (not x13017) (not x374) (not x766) x18137 (not x22892) x2212 (not x1845) (not x31307))
+:assumption (or (not x27233) (not x21633) (not x16924) x26960)
+:assumption (or x21114 (not x3011))
+:assumption (or x26548 x9499)
+:assumption (or (not x10160) x4647 (not x9008))
+:assumption (or (not x9961) x23186)
+:assumption (or (not x17221) x7205)
+:assumption (or (not x25189) (not x22086))
+:assumption (or (not x22927) x8229)
+:assumption (or x30432 (not x3034))
+:assumption (or (not x14619) x4659)
+:assumption (or x14881 (not x12345))
+:assumption (or (not x20248) x24126)
+:assumption (or (not x10092) x20440)
+:assumption (or x23244 (not x7304))
+:assumption (or (not x31816) x8887)
+:assumption (or x27894 (not x367))
+:assumption (or (not x23974) x1243)
+:assumption (or (not x997) x14115)
+:assumption (or (not x20000) x31)
+:assumption (or x2127 (not x30128) (not x31640))
+:assumption (or x4812 (not x29303))
+:assumption (or (not x25098) (not x27939))
+:assumption (or x27562 (not x16246))
+:assumption (or x24110 x12634)
+:assumption (or (not x28429) (not x17994))
+:assumption (or x25930 x15366)
+:assumption (or (not x5461) (not x6948))
+:assumption (or (not x16365) x9316)
+:assumption (or x11030 (not x5519))
+:assumption (or (not x16776) (not x14359))
+:assumption (or (not x14441) (not x3450))
+:assumption (or (not x4007) x28753)
+:assumption (or x28105 x5819)
+:assumption (or x10230 x20311)
+:assumption (or (not x28742) (not x6283))
+:assumption (or (not x27133) x25524 (not x142) x12487 (not x22348))
+:assumption (or (not x15038) (not x31656))
+:assumption (or x11124 x587)
+:assumption (or x12166 (not x20660))
+:assumption (or x12667 x15597)
+:assumption (or (not x18668) (not x14792))
+:assumption (or (not x13907) (not x12625))
+:assumption (or x12918 (not x25376))
+:assumption (or (not x22453) (not x609))
+:assumption (or (not x6591) (not x9106))
+:assumption (or x25391 (not x21298) x13363 x2044)
+:assumption (or x12915 (not x26647) (not x17788) x8400 (not x14032) (not x7827))
+:assumption (or (not x16963) x29642)
+:assumption (or x17121 x24029 x17072 x22052)
+:assumption (or x22336 x20222)
+:assumption (or x29885 (not x24148))
+:assumption (or x7542 x17554)
+:assumption (or (not x22500) (not x21893))
+:assumption (or (not x6594) (not x29959) x3702 x25273)
+:assumption (or (not x5886) (not x30979))
+:assumption (or (not x18010) x9261)
+:assumption (or x12701 (not x12738))
+:assumption (or x15466 x13674)
+:assumption (or x6969 (not x9041))
+:assumption (or x25622 x16235)
+:assumption (or (not x28592) x5539 x31328 (not x21805) x14435 (not x3465) x30637 (not x31205) (not x27655))
+:assumption (or (not x6860) (not x29814))
+:assumption (or (not x27967) x15448)
+:assumption (or x20506 x26432)
+:assumption (or x4828 x27820)
+:assumption (or (not x1393) x21793)
+:assumption (or x16792 (not x6072))
+:assumption (or (not x24948) (not x27407))
+:assumption (or (not x30435) (not x267))
+:assumption (or (not x30020) (not x12784))
+:assumption (or (not x20791) x11375)
+:assumption (or x600 x7112)
+:assumption (or x8586 x1556)
+:assumption (or x27218 x28041)
+:assumption (or x11409 (not x23007))
+:assumption (or x9776 x8532 (not x17744) x22025)
+:assumption (or (not x18098) x8739)
+:assumption (or x26135 (not x17194))
+:assumption (or (not x15917) (not x30856) (not x12376) (not x10064))
+:assumption (or (not x20442) (not x27911))
+:assumption (or (not x31853) (not x143))
+:assumption (or x28541 x3672)
+:assumption (or x24774 x26022)
+:assumption (or x25938 x15315 x8002)
+:assumption (or (not x13236) (not x2891))
+:assumption (or (not x1956) (not x19926))
+:assumption (or x14111 (not x3591))
+:assumption (or x17135 x5976)
+:assumption (or (not x23386) (not x12342))
+:assumption (or (not x801) (not x27588))
+:assumption (or x7978 (not x25155))
+:assumption (or (not x27549) (not x21728))
+:assumption (or (not x20575) x24679)
+:assumption (or x25315 (not x11574) x24200)
+:assumption (or (not x13971) x3271)
+:assumption (or (not x10694) (not x25659))
+:assumption (or (not x5771) (not x7080))
+:assumption (or (not x8235) (not x13956) x5206)
+:assumption (or x19027 (not x11656) (not x19137) (not x6533) x18788 x6914)
+:assumption (or x12448 (not x29229))
+:assumption (or (not x1364) x20171 x19024 (not x25222))
+:assumption (or x8081 (not x9015))
+:assumption (or (not x29788) (not x8002) (not x30329))
+:assumption (or x1637 (not x9008))
+:assumption (or (not x23228) (not x14193))
+:assumption (or x14866 x27897)
+:assumption (or x14683 x6890 (not x24722) x1473 x21709)
+:assumption (or x18556 x22666)
+:assumption (or (not x29608) x11432)
+:assumption (or x28411 (not x2639))
+:assumption (or x6122 (not x10083))
+:assumption (or x18052 x24644)
+:assumption (or (not x23366) x7354)
+:assumption (or (not x810) (not x15980))
+:assumption (or (not x4913) (not x2187))
+:assumption (or (not x23702) (not x5097) x30828 (not x14625) x30762 x3844)
+:assumption (or (not x14576) x5521)
+:assumption (or x20863 (not x8580))
+:assumption (or (not x24405) x27144)
+:assumption (or x7489 (not x17931))
+:assumption (or (not x22247) (not x1907) (not x9008))
+:assumption (or (not x16143) x3836)
+:assumption (or x2498 (not x28504))
+:assumption (or x6711 x23296 x8602)
+:assumption (or x15799 (not x28631))
+:assumption (or x25570 (not x21227))
+:assumption (or (not x23376) (not x6731))
+:assumption (or (not x5028) x16436)
+:assumption (or x350 (not x3064))
+:assumption (or x13407 (not x20070))
+:assumption (or (not x22432) x21883)
+:assumption (or (not x9317) x14316)
+:assumption (or x17586 x2602)
+:assumption (or (not x11930) (not x16316))
+:assumption (or (not x30081) x6212)
+:assumption (or x5385 x11322)
+:assumption (or x4566 x10754)
+:assumption (or (not x10264) (not x25240))
+:assumption (or (not x25952) (not x10463))
+:assumption (or (not x11226) x28632)
+:assumption (or (not x21915) (not x21695))
+:assumption (or (not x9842) x25498 (not x16741) x8584)
+:assumption (or x6575 x29501)
+:assumption (or x218 (not x7391))
+:assumption (or (not x9554) (not x30815))
+:assumption (or x31412 (not x827))
+:assumption (or (not x30634) x690)
+:assumption (or x18088 (not x13956) x21957 (not x23244))
+:assumption (or x20717 (not x16244))
+:assumption (or (not x15800) x27016)
+:assumption (or x24535 x11539)
+:assumption (or (not x30690) (not x16581))
+:assumption (or (not x7092) x26850)
+:assumption (or (not x12858) x6973)
+:assumption (or (not x6548) (not x26581))
+:assumption (or x480 x3850)
+:assumption (or x6042 (not x23035))
+:assumption (or x17913 x142)
+:assumption (or (not x3239) x29902)
+:assumption (or (not x8602) x30370)
+:assumption (or (not x17334) (not x11816))
+:assumption (or (not x22817) x9423)
+:assumption (or x16398 x11417)
+:assumption (or (not x30573) (not x3096))
+:assumption (or (not x555) (not x26030))
+:assumption (or x11224 (not x21067))
+:assumption (or x2184 x29359)
+:assumption (or x27906 (not x141))
+:assumption (or x30956 x1393)
+:assumption (or x31879 (not x23816))
+:assumption (or x19678 x11429)
+:assumption (or (not x3368) (not x14562))
+:assumption (or (not x14591) x21960)
+:assumption (or x11890 (not x119))
+:assumption (or x5226 (not x29837))
+:assumption (or (not x26017) x17484)
+:assumption (or x7928 x806)
+:assumption (or (not x22156) (not x9651))
+:assumption (or (not x4795) (not x576))
+:assumption (or (not x1934) x3407)
+:assumption (or x18295 (not x292))
+:assumption (or x21871 x20298)
+:assumption (or x16839 x1209)
+:assumption (or x31490 x8343)
+:assumption (or x21801 (not x13738))
+:assumption (or x28042 x15960)
+:assumption (or (not x9446) x4725)
+:assumption (or x6754 (not x8752))
+:assumption (or (not x27036) (not x15308))
+:assumption (or (not x15724) (not x24504) (not x30751))
+:assumption (or (not x18892) (not x449) x14053)
+:assumption (or x342 x28068)
+:assumption (or (not x16673) (not x4650))
+:assumption (or (not x19314) (not x17773))
+:assumption (or x8532 x6409)
+:assumption (or (not x2046) x10263)
+:assumption (or (not x15279) (not x13355))
+:assumption (or (not x15708) (not x26104) x18412 x28419)
+:assumption (or (not x16507) x813)
+:assumption (or (not x15837) x24306)
+:assumption (or (not x3884) (not x29178))
+:assumption (or x11758 x17821)
+:assumption (or x24919 x20628)
+:assumption (or x26825 (not x17776))
+:assumption (or x2310 x28625)
+:assumption (or x9373 (not x10482))
+:assumption (or (not x29652) x22878)
+:assumption (or x11283 (not x29333))
+:assumption (or (not x14587) x4358)
+:assumption (or x23578 (not x31032))
+:assumption (or (not x6239) (not x20867))
+:assumption (or x22845 (not x26026) x12012 x23324 (not x12935) (not x11581))
+:assumption (or x7404 (not x18778))
+:assumption (or x10941 x30412)
+:assumption (or x25490 x12123)
+:assumption (or (not x8056) (not x16375))
+:assumption (or x29740 (not x13798))
+:assumption (or (not x28083) x15590)
+:assumption (or x11147 x3980)
+:assumption (or (not x31845) (not x23675))
+:assumption (or (not x5528) (not x956))
+:assumption (or x13821 (not x24814))
+:assumption (or x6687 x7200)
+:assumption (or x14155 x13950)
+:assumption (or x30047 x10375)
+:assumption (or (not x20374) (not x4731) x29082 (not x3156) x11711 x30845)
+:assumption (or (not x27478) (not x2040))
+:assumption (or (not x1487) (not x4219))
+:assumption (or (not x30494) (not x31242))
+:assumption (or (not x18871) x27122 x30771)
+:assumption (or (not x23153) x12047)
+:assumption (or x16869 (not x7508))
+:assumption (or (not x7010) x29691 x6672 (not x14481))
+:assumption (or (not x5655) x14559)
+:assumption (or (not x25366) x20307)
+:assumption (or x17706 x11185)
+:assumption (or (not x1480) (not x15214))
+:assumption (or (not x12459) (not x19687))
+:assumption (or (not x11620) x28397)
+:assumption (or x2334 x13804)
+:assumption (or (not x2610) x20382)
+:assumption (or (not x6167) (not x31495))
+:assumption (or x3013 x18042)
+:assumption (or x4350 (not x7351))
+:assumption (or x31799 (not x7197))
+:assumption (or x8790 x19613)
+:assumption (or (not x20807) (not x4638))
+:assumption (or (not x10482) x600)
+:assumption (or x28467 (not x24843))
+:assumption (or (not x25620) x7286)
+:assumption (or (not x9903) x29217)
+:assumption (or x25413 (not x9121))
+:assumption (or (not x10909) x25995)
+:assumption (or x12056 (not x7119))
+:assumption (or (not x8602) x21301)
+:assumption (or x21943 x25089 (not x11274))
+:assumption (or x23566 x8541)
+:assumption (or x14585 x16743)
+:assumption (or (not x3169) (not x29127))
+:assumption (or (not x23244) x28986)
+:assumption (or x18682 (not x2972))
+:assumption (or (not x24599) x14839)
+:assumption (or x24113 (not x14225))
+:assumption (or x31799 x26455)
+:assumption (or x10291 (not x17534))
+:assumption (or x29394 x31554)
+:assumption (or x9747 (not x23408) (not x17514))
+:assumption (or (not x11382) (not x347) x18857 x11630 (not x7012) x14377)
+:assumption (or x14552 (not x13576) (not x17888))
+:assumption (or x22873 (not x17957))
+:assumption (or (not x25301) (not x30189))
+:assumption (or (not x23892) (not x365))
+:assumption (or x7980 (not x29057))
+:assumption (or (not x1158) x1741)
+:assumption (or (not x21171) (not x12704))
+:assumption (or x6218 x3453)
+:assumption (or x7021 x1329)
+:assumption (or x2477 x23198)
+:assumption (or x22171 x485 x16239 x2481 (not x22865) (not x9748))
+:assumption (or (not x1789) (not x5695))
+:assumption (or x14802 x23641 x17023)
+:assumption (or (not x1451) (not x5491) (not x22303) x26762)
+:assumption (or x3250 (not x19007))
+:assumption (or (not x11252) (not x24466))
+:assumption (or x2906 (not x15368) x14455)
+:assumption (or x1005 x29889)
+:assumption (or (not x1411) (not x27758))
+:assumption (or x7234 x3181)
+:assumption (or x22611 (not x12906))
+:assumption (or x17695 x26600)
+:assumption (or x24042 (not x12941))
+:assumption (or x14180 (not x27592))
+:assumption (or x4701 x8658)
+:assumption (or (not x25257) x8002 (not x5840) x23244 (not x28711))
+:assumption (or x27019 x30431)
+:assumption (or x26814 (not x26432))
+:assumption (or (not x23509) x23656 x19185 (not x6111))
+:assumption (or (not x3415) x9744)
+:assumption (or (not x16025) x17047 x29588)
+:assumption (or (not x20191) x2820)
+:assumption (or (not x30140) x20665)
+:assumption (or (not x9751) x31096)
+:assumption (or x233 x1689)
+:assumption (or x26929 x19368)
+:assumption (or x17478 (not x10027))
+:assumption (or x13410 (not x9875))
+:assumption (or x20690 (not x21298))
+:assumption (or (not x20488) x19791)
+:assumption (or (not x24782) (not x19381))
+:assumption (or (not x2920) x20087)
+:assumption (or (not x26169) (not x2500))
+:assumption (or x4482 x13350 x16809 (not x20595) (not x18681) x12843)
+:assumption (or (not x26897) x8489)
+:assumption (or (not x26809) x21820)
+:assumption (or x23622 (not x24265))
+:assumption (or (not x2889) (not x20325) x27748)
+:assumption (or x5410 (not x25439))
+:assumption (or (not x6938) (not x11484))
+:assumption (or (not x9832) (not x27019))
+:assumption (or x8461 x30993)
+:assumption (or x20431 (not x14561))
+:assumption (or x25658 x27276)
+:assumption (or (not x21298) x21906)
+:assumption (or x30281 x12668)
+:assumption (or x12772 x5528)
+:assumption (or x15211 (not x26789))
+:assumption (or (not x15824) (not x9008))
+:assumption (or (not x16574) x19525)
+:assumption (or x5232 (not x21730))
+:assumption (or (not x3670) (not x15145) x25294)
+:assumption (or x31782 (not x6552))
+:assumption (or x827 x15446 (not x10210))
+:assumption (or x15861 (not x22316))
+:assumption (or x5845 (not x11362) (not x68))
+:assumption (or x20043 (not x17117))
+:assumption (or x12539 x2231)
+:assumption (or x7151 (not x13731))
+:assumption (or x13433 (not x21978))
+:assumption (or (not x762) (not x4881))
+:assumption (or x211 (not x20529))
+:assumption (or (not x24649) (not x15580) (not x8361) x28879)
+:assumption (or x22923 (not x25366) (not x10572))
+:assumption (or (not x23222) x21727)
+:assumption (or x12540 x9008 x21890)
+:assumption (or (not x29991) (not x23777))
+:assumption (or x27239 x15749)
+:assumption (or x218 (not x14352))
+:assumption (or x3981 (not x3699) x18530 (not x23399))
+:assumption (or (not x22443) (not x14209))
+:assumption (or (not x16689) (not x12199))
+:assumption (or x30849 x20359 (not x3338) x2551)
+:assumption (or (not x7574) x5528)
+:assumption (or (not x26652) x8002 x23895)
+:assumption (or (not x6351) x10951 x20735)
+:assumption (or (not x29609) (not x18399))
+:assumption (or x18500 (not x24903))
+:assumption (or x12822 (not x3769))
+:assumption (or (not x24601) x1051)
+:assumption (or x20822 x25738)
+:assumption (or x26473 (not x31084))
+:assumption (or (not x5206) (not x20394))
+:assumption (or (not x19515) x24065)
+:assumption (or (not x7400) (not x6806))
+:assumption (or x9210 x1621)
+:assumption (or x26897 (not x10619))
+:assumption (or (not x21432) (not x17956))
+:assumption (or (not x3060) x3538)
+:assumption (or (not x11085) (not x5546))
+:assumption (or (not x2601) x20739 (not x28704) (not x27883) (not x21958) x12675 (not x18780) (not x101))
+:assumption (or (not x5274) (not x18067))
+:assumption (or x170 (not x23221))
+:assumption (or (not x7620) (not x3348))
+:assumption (or x11653 x12713 x19099 x1552 x15880 x6811)
+:assumption (or (not x22704) x2853)
+:assumption (or x818 x23348)
+:assumption (or (not x24952) (not x11407))
+:assumption (or (not x27783) (not x5317) (not x15510) x20578 x20073)
+:assumption (or (not x22390) (not x7125) (not x11006) (not x31629))
+:assumption (or (not x2409) (not x5225))
+:assumption (or x15165 (not x24668))
+:assumption (or x1059 (not x16025))
+:assumption (or x15979 x20298)
+:assumption (or (not x13614) (not x28196))
+:assumption (or x14745 x24481 x210 x29338 (not x23499))
+:assumption (or x8974 x17534 x29719 x24748 (not x29813))
+:assumption (or x6732 (not x29354) (not x6984) (not x29587) (not x3207) (not x16341))
+:assumption (or (not x24054) (not x22614))
+:assumption (or (not x21489) (not x30116))
+:assumption (or x15303 x6336)
+:assumption (or (not x1052) x20210)
+:assumption (or x31108 (not x28575))
+:assumption (or x5346 x27194)
+:assumption (or x9480 (not x1286))
+:assumption (or x9008 (not x5281) x19304 x2244 (not x24637) x8982)
+:assumption (or x15655 (not x15347))
+:assumption (or x18095 x16072)
+:assumption (or (not x6663) x18694 (not x27752))
+:assumption (or (not x30087) (not x23901))
+:assumption (or (not x15970) x1393 x17197)
+:assumption (or (not x18694) (not x6663) (not x3165))
+:assumption (or (not x9989) (not x3720))
+:assumption (or x16887 x30063)
+:assumption (or x20023 (not x1865))
+:assumption (or x8480 (not x19979) (not x17579) x25492 x31401)
+:assumption (or (not x1482) (not x14605))
+:assumption (or x29606 x9824)
+:assumption (or x3729 x7887)
+:assumption (or (not x6518) (not x4397))
+:assumption (or x17709 (not x18314))
+:assumption (or (not x13956) (not x14093))
+:assumption (or x10157 x4793)
+:assumption (or x10931 (not x5696))
+:assumption (or (not x16741) (not x13374))
+:assumption (or x28197 x985)
+:assumption (or x6691 x23131)
+:assumption (or (not x20514) x31207)
+:assumption (or x20917 (not x19803))
+:assumption (or x10915 (not x26779))
+:assumption (or (not x14796) (not x30565))
+:assumption (or (not x30149) x18232)
+:assumption (or x10678 (not x9817))
+:assumption (or (not x9408) (not x25569))
+:assumption (or (not x24802) (not x15806))
+:assumption (or x13756 x23105)
+:assumption (or (not x20386) (not x9738) x9758)
+:assumption (or x19792 x5115)
+:assumption (or x7501 x18332)
+:assumption (or (not x23633) x21385)
+:assumption (or (not x22170) x11335)
+:assumption (or x16074 x7284)
+:assumption (or (not x6292) x5559)
+:assumption (or (not x29686) x30407)
+:assumption (or (not x28672) (not x2985))
+:assumption (or (not x28066) (not x5184))
+:assumption (or x28871 x14206)
+:assumption (or (not x22785) (not x1920) x3728 x11644 x14511 (not x10850) (not x754))
+:assumption (or (not x18512) x12415)
+:assumption (or (not x21815) (not x11005) x27605 x3782 x12856 (not x16510) (not x2334))
+:assumption (or x11178 (not x18566))
+:assumption (or x2601 (not x28557))
+:assumption (or x24259 (not x8879))
+:assumption (or x16247 x18962)
+:assumption (or x3478 (not x31681))
+:assumption (or x23001 x3030)
+:assumption (or (not x6371) (not x27344))
+:assumption (or x21854 x8156)
+:assumption (or (not x27322) x30876)
+:assumption (or (not x11963) (not x910) (not x17855))
+:assumption (or (not x521) (not x14562))
+:assumption (or x18459 x12243 x30261)
+:assumption (or x2937 x24609)
+:assumption (or x18042 (not x1112))
+:assumption (or x921 x8002)
+:assumption (or x23882 (not x22287))
+:assumption (or (not x9647) x11299 x18042 x15513)
+:assumption (or x30660 x18998)
+:assumption (or x29733 x8996)
+:assumption (or x9612 (not x6752))
+:assumption (or (not x28694) (not x3626))
+:assumption (or x7012 x6836)
+:assumption (or x19440 x19102)
+:assumption (or (not x13838) x1773)
+:assumption (or (not x6650) (not x20649))
+:assumption (or x1281 x30442)
+:assumption (or x9008 (not x26168))
+:assumption (or x7041 (not x4645))
+:assumption (or (not x30369) x9479 (not x1868))
+:assumption (or (not x21186) (not x11978))
+:assumption (or x25083 (not x18500))
+:assumption (or x10015 x12788)
+:assumption (or x7461 x22046)
+:assumption (or (not x10209) x25547)
+:assumption (or x19912 (not x11296))
+:assumption (or (not x24056) (not x2609))
+:assumption (or (not x14390) x22366)
+:assumption (or (not x1777) (not x6739))
+:assumption (or (not x6991) (not x30208))
+:assumption (or (not x6351) (not x10360))
+:assumption (or x12695 (not x25355) x10982)
+:assumption (or x12443 x10526)
+:assumption (or x31844 (not x9357))
+:assumption (or (not x30776) (not x23567))
+:assumption (or (not x17930) x12785 x24488 (not x27769))
+:assumption (or (not x12221) (not x27001))
+:assumption (or x28714 x7697 (not x31697) (not x8586))
+:assumption (or x19390 (not x1953))
+:assumption (or x7735 (not x25659) x25487 (not x21350) x18894 x27979 x25512 x2541)
+:assumption (or (not x22515) (not x13316))
+:assumption (or x18070 (not x15637))
+:assumption (or x27723 (not x8290))
+:assumption (or x3870 x1393)
+:assumption (or x13302 (not x3494))
+:assumption (or (not x26581) (not x5816))
+:assumption (or (not x22681) (not x2592))
+:assumption (or (not x9494) x16234)
+:assumption (or x27233 (not x25772) (not x30867) x21657 (not x25413) (not x16186) x5621 (not x4012))
+:assumption (or (not x8520) x10194)
+:assumption (or x25043 x19360)
+:assumption (or (not x5586) x31922)
+:assumption (or x7875 x11284)
+:assumption (or (not x20055) (not x6196))
+:assumption (or x13159 (not x28096))
+:assumption (or (not x14006) (not x20723))
+:assumption (or (not x2711) (not x12397))
+:assumption (or (not x21298) x10400 (not x15619))
+:assumption (or x13472 x14039)
+:assumption (or (not x31689) x12921 x1648 x5036 x2722 (not x28498) (not x29375) (not x13028))
+:assumption (or x11693 x28917)
+:assumption (or (not x5308) x18904)
+:assumption (or x8463 x5528)
+:assumption (or (not x14474) (not x16600))
+:assumption (or x24205 x14957)
+:assumption (or x9887 x30080)
+:assumption (or (not x17741) (not x27486) (not x26967) x20544)
+:assumption (or x4129 (not x15486))
+:assumption (or (not x3530) (not x10851))
+:assumption (or (not x13634) x8662)
+:assumption (or (not x18642) (not x2719) (not x19685) x10464)
+:assumption (or x24156 (not x14981))
+:assumption (or (not x18859) x24972)
+:assumption (or x23598 (not x25504))
+:assumption (or x11835 x9152)
+:assumption (or x6885 x1563)
+:assumption (or x21593 (not x6192) x16374 x1030)
+:assumption (or x14836 (not x853))
+:assumption (or x29033 (not x28305))
+:assumption (or x29944 (not x22936))
+:assumption (or (not x2072) x2182)
+:assumption (or (not x27861) (not x167) x19827 (not x26675) (not x641) x28302 x8804 x16515)
+:assumption (or x21653 x16869 (not x31121))
+:assumption (or (not x14650) x15050)
+:assumption (or (not x29560) x26077)
+:assumption (or x1251 (not x26811))
+:assumption (or (not x26120) (not x26271))
+:assumption (or (not x13544) (not x5196))
+:assumption (or (not x17726) x3919)
+:assumption (or x30885 (not x21123))
+:assumption (or (not x1210) x8599)
+:assumption (or (not x23194) x4491)
+:assumption (or (not x20128) x4936)
+:assumption (or x3765 (not x23071))
+:assumption (or x9615 (not x21462))
+:assumption (or (not x2523) (not x6563))
+:assumption (or (not x2180) x6125 (not x30445) x16950 (not x19388))
+:assumption (or x26770 (not x7123))
+:assumption (or x27735 x12045)
+:assumption (or (not x2822) x15245)
+:assumption (or x24296 (not x27800))
+:assumption (or (not x22599) x29948)
+:assumption (or (not x8002) (not x8141))
+:assumption (or (not x9453) (not x28504))
+:assumption (or (not x24129) x26616)
+:assumption (or x10458 x30530)
+:assumption (or (not x2160) (not x11880))
+:assumption (or (not x28273) (not x6501))
+:assumption (or (not x28364) x8002 x23244 (not x15255) (not x4946))
+:assumption (or x23745 x27537 (not x12127))
+:assumption (or x2650 x31855)
+:assumption (or (not x17954) x18197)
+:assumption (or (not x17318) x29684 (not x24952) (not x13501) (not x6611) x612 (not x10270))
+:assumption (or x25953 x8257)
+:assumption (or x19440 x21663)
+:assumption (or x26865 (not x5754))
+:assumption (or x24780 (not x14535))
+:assumption (or (not x26560) x5411 (not x25166))
+:assumption (or (not x9485) (not x27331))
+:assumption (or (not x419) (not x27859))
+:assumption (or x19697 (not x2621))
+:assumption (or x20087 x30252 x24756 (not x14522) x19193)
+:assumption (or x14124 (not x29824))
+:assumption (or (not x9753) x2370)
+:assumption (or x14934 x6097)
+:assumption (or (not x24022) (not x15034) (not x24346) x8208)
+:assumption (or x18829 x6149)
+:assumption (or (not x13317) (not x27705) (not x18441))
+:assumption (or (not x13260) (not x4231))
+:assumption (or (not x25125) x20169)
+:assumption (or x18938 x4180)
+:assumption (or x31137 (not x31767))
+:assumption (or (not x26536) (not x31469))
+:assumption (or (not x30414) x14988)
+:assumption (or x30478 (not x2002))
+:assumption (or x27864 x15765)
+:assumption (or x24317 (not x12156))
+:assumption (or (not x9796) x24212)
+:assumption (or x16134 x19272)
+:assumption (or x15054 (not x27733) x10795 x2676 x31493 (not x8954) (not x23465) (not x15216))
+:assumption (or (not x28209) (not x26601) x4451 x15836 (not x9453))
+:assumption (or x28882 x12749)
+:assumption (or (not x26555) (not x8208))
+:assumption (or (not x23299) x22088)
+:assumption (or (not x9662) (not x13354))
+:assumption (or x3112 (not x11134))
+:assumption (or x29033 (not x26451))
+:assumption (or (not x16124) x30797)
+:assumption (or x9231 (not x19885))
+:assumption (or (not x11527) x17386 x28586 x16597 (not x10183))
+:assumption (or (not x520) x6318)
+:assumption (or x14713 (not x9216))
+:assumption (or x7080 x23202 (not x10757))
+:assumption (or (not x31045) x5503)
+:assumption (or (not x20847) x12701)
+:assumption (or x10555 x5432)
+:assumption (or x5457 x29682 x25659)
+:assumption (or (not x2734) (not x31630))
+:assumption (or x14200 x18178)
+:assumption (or (not x14918) (not x23004))
+:assumption (or x12538 x12440)
+:assumption (or (not x11317) x28067)
+:assumption (or x1694 (not x21259))
+:assumption (or x4470 (not x20419))
+:assumption (or (not x19864) x6779)
+:assumption (or x30064 (not x29942))
+:assumption (or x30319 (not x20823))
+:assumption (or (not x13898) (not x28584))
+:assumption (or (not x25515) x6609)
+:assumption (or x12428 x25285)
+:assumption (or (not x25814) (not x12481))
+:assumption (or (not x1072) x29236)
+:assumption (or x946 (not x10175))
+:assumption (or (not x28743) (not x16582))
+:assumption (or x7714 (not x11271))
+:assumption (or x3494 (not x22837))
+:assumption (or (not x31876) (not x928))
+:assumption (or x28728 (not x15773))
+:assumption (or (not x22168) x2950 x9008)
+:assumption (or x1175 (not x1018))
+:assumption (or (not x2521) x14356)
+:assumption (or (not x22450) x7638)
+:assumption (or (not x19075) (not x8885) (not x17470) x13546 (not x5251))
+:assumption (or x18142 (not x24728))
+:assumption (or (not x19150) (not x6869))
+:assumption (or (not x3624) x830)
+:assumption (or (not x361) x22777)
+:assumption (or x3643 (not x22829) (not x23462) (not x20454))
+:assumption (or (not x12141) (not x17340))
+:assumption (or x2368 (not x16304))
+:assumption (or (not x29333) (not x25109))
+:assumption (or (not x12909) x30506)
+:assumption (or x30921 (not x21550))
+:assumption (or x10383 x2020)
+:assumption (or x20796 (not x10119) (not x22529) (not x2316) x11477)
+:assumption (or x8602 x17258 x10841)
+:assumption (or x28997 x202 x1800)
+:assumption (or (not x2783) (not x16588))
+:assumption (or x31054 x27841)
+:assumption (or (not x17739) x5648)
+:assumption (or (not x13036) (not x1257))
+:assumption (or x24683 (not x10219))
+:assumption (or x21557 x14053)
+:assumption (or x25022 (not x14469))
+:assumption (or x26189 (not x30138) (not x16265) x26897)
+:assumption (or x10989 (not x21656))
+:assumption (or (not x8026) x11255)
+:assumption (or x25196 x13309)
+:assumption (or (not x11489) x31321)
+:assumption (or (not x31162) x31765)
+:assumption (or x17593 x1381)
+:assumption (or (not x22852) x16645)
+:assumption (or (not x26566) x10509)
+:assumption (or (not x2988) x21173)
+:assumption (or (not x2092) (not x16572))
+:assumption (or x11593 (not x23230))
+:assumption (or x16532 (not x13643))
+:assumption (or (not x14561) x10133)
+:assumption (or (not x12317) x5723)
+:assumption (or x242 x10082)
+:assumption (or (not x19525) (not x14231))
+:assumption (or x31225 x6780)
+:assumption (or x17569 (not x26789))
+:assumption (or x8681 x14709)
+:assumption (or (not x27537) (not x23733))
+:assumption (or x15548 x25539)
+:assumption (or x30784 (not x24722) (not x16802) (not x20034))
+:assumption (or (not x21) x18354)
+:assumption (or x15254 (not x18023))
+:assumption (or (not x1674) (not x25781))
+:assumption (or (not x23244) x21180)
+:assumption (or x27255 (not x11708))
+:assumption (or x2550 (not x8475))
+:assumption (or x13183 (not x30407))
+:assumption (or x1576 (not x21982))
+:assumption (or (not x29578) x8712)
+:assumption (or (not x15110) x17439 x22429)
+:assumption (or x17597 (not x4273))
+:assumption (or (not x17317) (not x20765))
+:assumption (or x14424 (not x12332))
+:assumption (or x24645 (not x15743))
+:assumption (or x1041 x21509)
+:assumption (or x762 x463 x5394)
+:assumption (or (not x11245) x15072)
+:assumption (or x23385 x17735)
+:assumption (or x24554 (not x16433))
+:assumption (or (not x14455) x13550 (not x13956) x8002 x4872)
+:assumption (or (not x9048) x11179)
+:assumption (or (not x18810) (not x26039) (not x11468) (not x13111) (not x21324))
+:assumption (or (not x31502) (not x5184))
+:assumption (or x29269 (not x14304))
+:assumption (or x10764 x14392)
+:assumption (or (not x8704) x6969 x13503)
+:assumption (or (not x31766) (not x1937) (not x29335) x23772 (not x13304) x8760 x4858)
+:assumption (or x6676 (not x3692))
+:assumption (or x16304 x10667)
+:assumption (or x7474 (not x18118) (not x2404) (not x21160) x21982 (not x25877) (not x20512) x2548)
+:assumption (or (not x8602) x20997)
+:assumption (or x13117 (not x1582))
+:assumption (or x26165 (not x28355))
+:assumption (or x6299 x15855)
+:assumption (or (not x2694) (not x19757))
+:assumption (or x24841 x7557)
+:assumption (or x10257 x15652)
+:assumption (or (not x27036) (not x322))
+:assumption (or x19730 (not x24124) x6794 (not x21110))
+:assumption (or x29067 x13680)
+:assumption (or x31460 (not x23919))
+:assumption (or (not x6623) x10562)
+:assumption (or (not x8574) (not x11525) (not x27915))
+:assumption (or (not x10691) (not x26943))
+:assumption (or x4277 x9008 (not x8016))
+:assumption (or x21298 (not x30432) (not x20758) (not x13706))
+:assumption (or (not x20477) (not x3356))
+:assumption (or (not x18366) (not x2177))
+:assumption (or x10665 (not x31160))
+:assumption (or x9008 (not x31540))
+:assumption (or x19624 (not x10783) x4362 x21800 x8932)
+:assumption (or (not x23963) x24107)
+:assumption (or x26248 x14453 x9008)
+:assumption (or (not x23883) (not x13018))
+:assumption (or (not x3034) (not x27077))
+:assumption (or (not x1566) x13897)
+:assumption (or x17846 x28735)
+:assumption (or (not x395) x28206 x29854 (not x21791) x14750 (not x19720) (not x4402) x6061 (not x5352))
+:assumption (or (not x7554) x20415)
+:assumption (or (not x26367) x13956 x23244 x8002 x17016 x30432)
+:assumption (or (not x6612) x8185)
+:assumption (or (not x29728) (not x5433))
+:assumption (or x7423 (not x15795))
+:assumption (or (not x6972) x5189)
+:assumption (or x24576 x11232)
+:assumption (or (not x4823) x5028)
+:assumption (or (not x26285) (not x17784))
+:assumption (or x21457 (not x2081))
+:assumption (or (not x31376) x7402)
+:assumption (or (not x20969) (not x24019))
+:assumption (or x1706 (not x15985))
+:assumption (or x14194 (not x8081))
+:assumption (or (not x21713) (not x27998))
+:assumption (or x31467 x25752 x28314)
+:assumption (or x8002 (not x18751))
+:assumption (or x1561 x19440)
+:assumption (or x7393 (not x21338))
+:assumption (or x11394 (not x4029) (not x1187) x24387)
+:assumption (or x23244 (not x13018) (not x15544) (not x3516) (not x8002))
+:assumption (or x16741 (not x29368) x29073)
+:assumption (or (not x9008) x29565 x4485)
+:assumption (or (not x17400) (not x567))
+:assumption (or (not x18746) (not x6733))
+:assumption (or x15410 x10623)
+:assumption (or (not x29910) (not x14137))
+:assumption (or (not x31031) x15266)
+:assumption (or x12716 x18321 (not x20028))
+:assumption (or (not x12045) x6987)
+:assumption (or (not x18442) x22154 x13956)
+:assumption (or (not x15451) x25635)
+:assumption (or (not x12691) x29549)
+:assumption (or (not x7266) x18519 x4656)
+:assumption (or (not x14298) (not x25659))
+:assumption (or x24318 x2640)
+:assumption (or (not x16515) (not x28302))
+:assumption (or (not x8040) x10907)
+:assumption (or (not x16304) (not x31740))
+:assumption (or x4215 (not x1242))
+:assumption (or x7043 x3933)
+:assumption (or x5224 (not x3002))
+:assumption (or (not x6975) (not x5893))
+:assumption (or (not x6876) x30839)
+:assumption (or (not x18785) x3547)
+:assumption (or (not x18079) x28920)
+:assumption (or x1811 x7834 (not x24364) x19543 (not x21017) x23608 x11233 x2666)
+:assumption (or x8002 (not x23270) x6056 (not x9804))
+:assumption (or x19614 (not x3011))
+:assumption (or x4164 x30456)
+:assumption (or (not x11792) (not x8292) x6149)
+:assumption (or x15090 (not x14264))
+:assumption (or x5420 (not x17302))
+:assumption (or (not x2498) (not x631) x24387 x9453 x28504)
+:assumption (or x27007 (not x5440))
+:assumption (or (not x1228) x18592)
+:assumption (or (not x23429) x18567 x5528)
+:assumption (or x12352 x14725)
+:assumption (or (not x3756) (not x11137))
+:assumption (or (not x12816) (not x16073) (not x27404) (not x14871))
+:assumption (or (not x31331) x13269)
+:assumption (or (not x20133) x5234)
+:assumption (or (not x10390) x12712 x8120)
+:assumption (or x24131 (not x24902))
+:assumption (or x8066 (not x31201))
+:assumption (or (not x24301) x29266)
+:assumption (or x24886 x16039 (not x31453))
+:assumption (or x1745 (not x1345))
+:assumption (or (not x26670) (not x6556))
+:assumption (or (not x25784) (not x30964))
+:assumption (or (not x6438) x1568 x7559 x12960 x26626 (not x30391) (not x23891) (not x20065))
+:assumption (or x16375 x15991)
+:assumption (or (not x15471) (not x12933))
+:assumption (or (not x16316) x17147)
+:assumption (or (not x4638) x14218)
+:assumption (or (not x17419) (not x7005))
+:assumption (or x27753 x3152)
+:assumption (or x20077 (not x30193))
+:assumption (or x17131 (not x16914) (not x2810))
+:assumption (or (not x1329) x14727)
+:assumption (or (not x14731) (not x24964))
+:assumption (or x13188 x22041)
+:assumption (or x1076 (not x20128))
+:assumption (or (not x15795) x25317)
+:assumption (or x29649 (not x22507))
+:assumption (or x13559 (not x19142))
+:assumption (or (not x7365) x16881 x18140 x28564 (not x17690) x28708 (not x14995))
+:assumption (or (not x21995) x10626)
+:assumption (or (not x19724) (not x8174))
+:assumption (or (not x6557) x3494)
+:assumption (or (not x22551) x8516)
+:assumption (or x17814 (not x4691) (not x16819) (not x20911) x14399 (not x1608))
+:assumption (or (not x5394) x1710 (not x762) (not x19877))
+:assumption (or x8967 (not x7241))
+:assumption (or (not x18834) x27911)
+:assumption (or (not x19594) x13922)
+:assumption (or (not x31375) (not x25350) x26061)
+:assumption (or x27543 (not x1971))
+:assumption (or (not x22270) x2440 x8002 x15799 x23244)
+:assumption (or (not x13434) (not x27164))
+:assumption (or (not x21298) x17082)
+:assumption (or x20655 x21111)
+:assumption (or x27767 x1299)
+:assumption (or (not x23496) x30633)
+:assumption (or x2432 (not x24876))
+:assumption (or x7311 (not x27011))
+:assumption (or x28242 x10801)
+:assumption (or (not x1037) x25659 (not x23929))
+:assumption (or x31755 (not x21298))
+:assumption (or x26176 x29933)
+:assumption (or x26977 (not x20243))
+:assumption (or x18105 (not x27310))
+:assumption (or (not x2923) x11892)
+:assumption (or x9440 x27926)
+:assumption (or x19486 x1649)
+:assumption (or (not x11792) (not x12673))
+:assumption (or x22126 x31590)
+:assumption (or x16227 (not x4536))
+:assumption (or x1724 x28242)
+:assumption (or (not x2541) x21924)
+:assumption (or (not x22834) (not x18689))
+:assumption (or (not x20359) x3338)
+:assumption (or (not x2133) x6071)
+:assumption (or (not x30297) (not x9358))
+:assumption (or (not x28839) (not x12588) x5528)
+:assumption (or (not x25759) (not x22316))
+:assumption (or (not x31531) x8209)
+:assumption (or x8176 (not x1629) x27736 (not x19478) (not x124) (not x16321) (not x7875) x12685)
+:assumption (or (not x2334) (not x18389))
+:assumption (or x8704 (not x8118))
+:assumption (or (not x6471) (not x15447))
+:assumption (or (not x16802) x10325 (not x16456))
+:assumption (or (not x16733) (not x16219))
+:assumption (or (not x18992) (not x25805))
+:assumption (or (not x19624) (not x29645))
+:assumption (or (not x16635) x26892 (not x22197) (not x26617))
+:assumption (or x21711 x5692)
+:assumption (or (not x28518) x3464)
+:assumption (or x964 x2332)
+:assumption (or (not x26111) x13678)
+:assumption (or x1746 (not x30447))
+:assumption (or x3343 (not x30259))
+:assumption (or x5274 x19934)
+:assumption (or x13500 x11418 (not x6612) x22855 x5377)
+:assumption (or x8841 (not x19786) x21245 (not x6229))
+:assumption (or x27504 (not x7028))
+:assumption (or (not x31911) (not x12075))
+:assumption (or x26852 (not x14547))
+:assumption (or (not x21709) x8271)
+:assumption (or (not x14244) x5747)
+:assumption (or x24212 x10776)
+:assumption (or (not x6784) x21455)
+:assumption (or (not x5865) (not x1682))
+:assumption (or x12121 x4524 (not x12620) x11179 (not x17096) (not x14349) (not x10971) x3842)
+:assumption (or x15125 x2841)
+:assumption (or x21685 (not x19218))
+:assumption (or (not x4593) x18249)
+:assumption (or (not x19348) (not x16724))
+:assumption (or x28882 x1605)
+:assumption (or (not x191) (not x25800))
+:assumption (or x22229 x28980)
+:assumption (or (not x4927) (not x3638) (not x28545))
+:assumption (or (not x28008) (not x2177))
+:assumption (or x1250 (not x26353))
+:assumption (or x24355 (not x16176))
+:assumption (or (not x1920) (not x10086))
+:assumption (or x16414 (not x5823))
+:assumption (or (not x1280) x16146)
+:assumption (or x2342 x27620)
+:assumption (or (not x22877) (not x9161))
+:assumption (or (not x2896) x5924)
+:assumption (or x15883 (not x29447))
+:assumption (or x28844 x9854)
+:assumption (or x6616 x1212)
+:assumption (or (not x17078) x8126)
+:assumption (or (not x12797) (not x11960))
+:assumption (or x2764 x18794)
+:assumption (or (not x8840) (not x29461) x2344 (not x5433) (not x20558) (not x14126) (not x14916) x8224)
+:assumption (or x24866 x6969)
+:assumption (or x25008 x7889)
+:assumption (or x546 (not x8302) (not x25423))
+:assumption (or (not x12111) x21031)
+:assumption (or (not x17977) (not x8061))
+:assumption (or (not x14591) (not x9900))
+:assumption (or (not x1183) x18883 x31055 (not x8127) (not x25706) x21815)
+:assumption (or x4504 (not x21808))
+:assumption (or (not x28360) x14347)
+:assumption (or (not x13576) (not x13499))
+:assumption (or (not x5559) (not x13487) x6292)
+:assumption (or x20613 (not x14234))
+:assumption (or (not x3093) x25659 (not x16935))
+:assumption (or x14211 (not x25659))
+:assumption (or (not x5286) x28708)
+:assumption (or (not x1886) (not x7139))
+:assumption (or x13222 (not x13659))
+:assumption (or (not x13444) x6328)
+:assumption (or (not x8154) (not x7736) x21298 x16654)
+:assumption (or (not x7941) x25510)
+:assumption (or x24353 (not x3934))
+:assumption (or x22534 x8084 x21653)
+:assumption (or x7529 x19361)
+:assumption (or (not x12923) x17929)
+:assumption (or x9008 (not x27158) (not x29922) (not x2089) x23223 x4176)
+:assumption (or (not x9524) x9952)
+:assumption (or (not x19749) x1326)
+:assumption (or x24591 x31864)
+:assumption (or x28058 x1692)
+:assumption (or (not x19687) (not x1198))
+:assumption (or (not x13343) x10064)
+:assumption (or (not x21815) x23738)
+:assumption (or (not x10842) x16185)
+:assumption (or (not x5081) (not x28013))
+:assumption (or (not x27385) x30819 x1393)
+:assumption (or (not x30161) (not x8785))
+:assumption (or x8002 x4389 x14827)
+:assumption (or (not x1516) (not x19729))
+:assumption (or x31361 x7933)
+:assumption (or (not x8781) x13774 x4433 (not x262))
+:assumption (or x13823 (not x27826))
+:assumption (or (not x18566) (not x12804))
+:assumption (or (not x30618) x17847)
+:assumption (or (not x11963) x19531)
+:assumption (or x30587 x933)
+:assumption (or x27753 (not x29894))
+:assumption (or x5559 (not x616))
+:assumption (or x5528 (not x29063))
+:assumption (or x29444 (not x30289))
+:assumption (or (not x13961) x1911)
+:assumption (or (not x1036) (not x13008))
+:assumption (or (not x12943) x1015)
+:assumption (or (not x9796) (not x3566))
+:assumption (or (not x13945) x15390)
+:assumption (or x31194 (not x2512))
+:assumption (or (not x10871) (not x4809))
+:assumption (or x25637 (not x3627))
+:assumption (or x12242 (not x14187))
+:assumption (or x23553 x20358)
+:assumption (or (not x22718) (not x29851))
+:assumption (or (not x6600) x8227)
+:assumption (or (not x7434) (not x27352))
+:assumption (or (not x2611) (not x31829))
+:assumption (or x17980 (not x22137))
+:assumption (or (not x25073) x5387)
+:assumption (or x25337 x26155 x27450)
+:assumption (or x850 x30005)
+:assumption (or x29963 x18049)
+:assumption (or x14247 (not x642))
+:assumption (or (not x879) x4810)
+:assumption (or (not x23244) (not x16574))
+:assumption (or x10160 (not x5065))
+:assumption (or (not x12967) x15669)
+:assumption (or x28328 (not x31479))
+:assumption (or x6289 (not x5582))
+:assumption (or (not x28039) (not x58))
+:assumption (or (not x30954) x24060)
+:assumption (or (not x25234) (not x29222))
+:assumption (or (not x20756) (not x28599))
+:assumption (or x10016 x17727)
+:assumption (or x30113 x4698)
+:assumption (or (not x1960) (not x17181))
+:assumption (or x20778 x16230)
+:assumption (or x27399 x25837)
+:assumption (or x6670 x23244)
+:assumption (or (not x3958) x7517)
+:assumption (or (not x31166) x7116)
+:assumption (or x24781 x18229)
+:assumption (or x21633 x4740)
+:assumption (or x15795 (not x14591) x7209 x2807)
+:assumption (or (not x23582) (not x30897))
+:assumption (or x29784 (not x6829))
+:assumption (or (not x5734) (not x12754))
+:assumption (or x675 x27353 x17860)
+:assumption (or x14020 x27939)
+:assumption (or x9080 (not x14839))
+:assumption (or x20934 (not x4852))
+:assumption (or x2136 (not x29051))
+:assumption (or (not x9602) x24387)
+:assumption (or x14216 x9447)
+:assumption (or (not x5028) x16427)
+:assumption (or (not x21102) (not x20818))
+:assumption (or x17064 x15426 (not x21476) (not x7756) x8120 x12284 x20961)
+:assumption (or x3433 (not x19652))
+:assumption (or x8466 x27674)
+:assumption (or (not x6243) x21352)
+:assumption (or x20042 (not x3980))
+:assumption (or x25084 x7116)
+:assumption (or (not x25539) (not x26029) (not x15548))
+:assumption (or (not x24756) (not x13646))
+:assumption (or x13521 (not x21074))
+:assumption (or x4259 (not x13826))
+:assumption (or x5394 (not x7411) (not x16288))
+:assumption (or x15795 x23685 x3415 (not x14591))
+:assumption (or (not x13823) (not x4865) x25423 x26713 (not x9701))
+:assumption (or (not x22795) (not x31923))
+:assumption (or (not x28718) x2958 x29959)
+:assumption (or (not x20937) x30478)
+:assumption (or (not x12857) (not x26586) x28359 x31095)
+:assumption (or (not x25483) (not x8026))
+:assumption (or x781 (not x15444))
+:assumption (or x13839 (not x13652) x18042 (not x233) (not x23863) x889 x2129)
+:assumption (or x25340 x7273)
+:assumption (or (not x20115) (not x8843))
+:assumption (or x18225 x12396)
+:assumption (or (not x27166) (not x12242))
+:assumption (or (not x12961) (not x6892))
+:assumption (or x10333 (not x24367))
+:assumption (or x23320 (not x22648))
+:assumption (or (not x5891) (not x28997))
+:assumption (or x8067 x421 (not x10274) x16896)
+:assumption (or (not x17979) (not x27000))
+:assumption (or (not x20379) x31744)
+:assumption (or x11054 (not x3333))
+:assumption (or (not x14744) (not x6202) x31289 x18918 x12572)
+:assumption (or x7728 (not x28444))
+:assumption (or (not x13673) (not x23550))
+:assumption (or x10773 x1325)
+:assumption (or x6951 (not x10581))
+:assumption (or (not x29932) (not x9725))
+:assumption (or x18515 x2101)
+:assumption (or (not x6188) (not x16923))
+:assumption (or (not x10697) (not x2834) (not x24364) x4217)
+:assumption (or x239 x16764)
+:assumption (or x18499 (not x9627))
+:assumption (or x17283 (not x10302))
+:assumption (or x25723 (not x12098))
+:assumption (or (not x19363) x17501)
+:assumption (or (not x31084) (not x9819))
+:assumption (or (not x13184) (not x26873))
+:assumption (or x26737 x31000)
+:assumption (or (not x2334) (not x7815))
+:assumption (or x30232 x28314)
+:assumption (or (not x13580) x12929)
+:assumption (or x18069 x13302)
+:assumption (or x14895 (not x26760))
+:assumption (or x12045 x22155)
+:assumption (or (not x29866) (not x6575) (not x19802) (not x25433) x19381)
+:assumption (or x8461 (not x20745))
+:assumption (or x31096 (not x10498))
+:assumption (or x17722 (not x18066))
+:assumption (or x30511 (not x7984))
+:assumption (or (not x23244) (not x15282))
+:assumption (or (not x2645) (not x18743))
+:assumption (or (not x5325) x26812)
+:assumption (or (not x169) x26087)
+:assumption (or (not x11534) (not x27825))
+:assumption (or (not x10381) (not x24900))
+:assumption (or x3535 x19199 (not x27683) x24527 (not x7969) (not x2916) (not x3001) x8250)
+:assumption (or x20990 (not x18904))
+:assumption (or x14172 (not x25027))
+:assumption (or (not x14335) (not x8002))
+:assumption (or (not x23069) (not x24802))
+:assumption (or x27514 (not x30954))
+:assumption (or (not x15268) (not x20648))
+:assumption (or (not x18413) (not x6104))
+:assumption (or x5303 x909)
+:assumption (or (not x22522) (not x25096))
+:assumption (or x28123 x8005)
+:assumption (or x30616 x14897)
+:assumption (or x26481 (not x21))
+:assumption (or (not x26449) x1014)
+:assumption (or x15101 x1319)
+:assumption (or x18509 x6715)
+:assumption (or (not x21298) x14374 x12800)
+:assumption (or x17897 (not x19445))
+:assumption (or x19349 x12060)
+:assumption (or x18500 x3445)
+:assumption (or x10375 x24284)
+:assumption (or x5803 x30835)
+:assumption (or (not x5722) x29898)
+:assumption (or x354 x25366)
+:assumption (or (not x21529) x621)
+:assumption (or (not x13956) (not x22118))
+:assumption (or (not x26995) x21680)
+:assumption (or (not x8354) x22555)
+:assumption (or x15071 (not x378))
+:assumption (or x25449 (not x31829))
+:assumption (or (not x22442) x1458)
+:assumption (or (not x9515) (not x8289))
+:assumption (or (not x30113) x12358)
+:assumption (or (not x18519) x13041 (not x29803) x12023)
+:assumption (or (not x1981) (not x7200) (not x12263) x2994)
+:assumption (or (not x28523) (not x21687) x19992 (not x6872))
+:assumption (or x12979 (not x14431))
+:assumption (or x6236 x2207 (not x26575) x12699)
+:assumption (or x26382 (not x8002))
+:assumption (or (not x24314) (not x23598))
+:assumption (or (not x10816) (not x24768))
+:assumption (or (not x15401) (not x6325))
+:assumption (or x11847 (not x27755))
+:assumption (or x18055 x27351)
+:assumption (or (not x5952) x3264)
+:assumption (or x3667 (not x12351))
+:assumption (or x29592 x26340)
+:assumption (or x26108 (not x10715))
+:assumption (or (not x2933) (not x5696))
+:assumption (or x6657 (not x30124))
+:assumption (or (not x21972) (not x20908))
+:assumption (or x13201 (not x23366))
+:assumption (or (not x17482) x13339)
+:assumption (or (not x2048) x24753)
+:assumption (or x912 (not x304))
+:assumption (or (not x16656) (not x12987))
+:assumption (or x3722 x12528)
+:assumption (or (not x18729) (not x7878))
+:assumption (or x2163 x6149)
+:assumption (or x15898 x23244 x20325)
+:assumption (or (not x28127) x6865)
+:assumption (or x12741 (not x19711) (not x2486))
+:assumption (or x28343 (not x8002) x16947 (not x23244))
+:assumption (or (not x30844) x14761)
+:assumption (or x27937 (not x13622))
+:assumption (or (not x29613) (not x26220) (not x28113))
+:assumption (or (not x27447) (not x18456))
+:assumption (or x3430 (not x13300))
+:assumption (or (not x15471) x9647)
+:assumption (or (not x5686) x19962)
+:assumption (or x8068 x10814)
+:assumption (or x1248 x27889)
+:assumption (or x8586 x21402)
+:assumption (or (not x5335) x24779)
+:assumption (or x14864 (not x15835) (not x18721) (not x31035) x30821 x5881 (not x19493))
+:assumption (or (not x18123) x4113)
+:assumption (or (not x26632) (not x8723) (not x9439))
+:assumption (or x13415 (not x14011))
+:assumption (or (not x1520) x11375)
+:assumption (or (not x627) x2669)
+:assumption (or (not x18393) x10358)
+:assumption (or x5291 (not x23325))
+:assumption (or (not x4035) (not x10177))
+:assumption (or (not x20552) x61)
+:assumption (or x11374 x18042 (not x16510) x12867 (not x21815))
+:assumption (or (not x14642) (not x6479))
+:assumption (or (not x1515) x10064)
+:assumption (or (not x16497) (not x38))
+:assumption (or (not x3782) x10192 (not x9967))
+:assumption (or x20173 x16374 (not x5912) (not x14455))
+:assumption (or (not x30608) (not x29098))
+:assumption (or (not x2397) x30256)
+:assumption (or (not x5722) x13868 x27537)
+:assumption (or (not x15602) (not x22732))
+:assumption (or x22329 (not x2700))
+:assumption (or (not x7924) x31740 x16304)
+:assumption (or (not x21026) x27898)
+:assumption (or (not x24316) (not x2674))
+:assumption (or (not x1922) (not x17591))
+:assumption (or (not x18280) (not x16774))
+:assumption (or x8377 x22533)
+:assumption (or x26489 x30262)
+:assumption (or x17022 x13444)
+:assumption (or (not x16115) (not x26304))
+:assumption (or (not x10612) (not x1589))
+:assumption (or (not x23990) x12031 x3947 (not x14819))
+:assumption (or (not x15836) x1903)
+:assumption (or (not x4518) (not x7537))
+:assumption (or (not x10514) x21562 x12017)
+:assumption (or x17742 (not x4868))
+:assumption (or (not x13572) (not x2206))
+:assumption (or x6542 x15089)
+:assumption (or x20060 (not x12911))
+:assumption (or x25326 x29267)
+:assumption (or (not x17449) x19113)
+:assumption (or x1116 x26301 x10044)
+:assumption (or (not x27614) x16173)
+:assumption (or x7317 (not x25564))
+:assumption (or x10512 x12241 x26793 (not x5218) x2607 (not x26842) (not x14401) x31745 x30549)
+:assumption (or x10967 x14328)
+:assumption (or (not x19254) x18943)
+:assumption (or x15084 (not x822))
+:assumption (or (not x3669) x26034)
+:assumption (or (not x7231) (not x9148))
+:assumption (or x15208 (not x28472))
+:assumption (or x9008 x1428)
+:assumption (or (not x11419) x30729 x438 x16747 x7094)
+:assumption (or (not x7055) (not x9600))
+:assumption (or x3139 (not x3170))
+:assumption (or x10476 x21665)
+:assumption (or x31382 (not x21533))
+:assumption (or x21898 (not x26892))
+:assumption (or x31728 (not x24034) (not x29193) x9117 (not x8277))
+:assumption (or x1120 x2228)
+:assumption (or x17979 (not x30192) x26182 (not x29319) (not x17283))
+:assumption (or (not x6785) (not x30557) x14435 x847)
+:assumption (or (not x22931) x21688 x13906 (not x27667) x24601 x18859 x25041 x20151)
+:assumption (or (not x18751) (not x15456))
+:assumption (or (not x480) x22855 x6850)
+:assumption (or x27236 x9326)
+:assumption (or x9562 x3739)
+:assumption (or (not x30808) (not x4259))
+:assumption (or (not x28529) x1654)
+:assumption (or (not x2190) (not x3350))
+:assumption (or x31607 x30584)
+:assumption (or (not x29988) (not x620))
+:assumption (or x23144 (not x9146))
+:assumption (or (not x19197) x31440)
+:assumption (or x16606 x23109)
+:assumption (or (not x26810) (not x28669) (not x13956) x17930)
+:assumption (or x25594 x26285)
+:assumption (or x22586 (not x17712))
+:assumption (or (not x4082) (not x24793))
+:assumption (or (not x10618) (not x26897))
+:assumption (or (not x22790) x26205 (not x8002) (not x23244))
+:assumption (or x29244 (not x13607))
+:assumption (or x10648 (not x18557))
+:assumption (or (not x25457) x26769)
+:assumption (or x8724 (not x14304))
+:assumption (or (not x29066) (not x19068))
+:assumption (or (not x2990) x18369)
+:assumption (or (not x12075) (not x17138))
+:assumption (or x8957 x6289)
+:assumption (or (not x20651) x15176)
+:assumption (or (not x22186) (not x26914))
+:assumption (or x1476 (not x15337))
+:assumption (or x1022 x21185)
+:assumption (or x1483 x7287)
+:assumption (or (not x2227) (not x17192))
+:assumption (or x13012 x22365)
+:assumption (or (not x30698) (not x17567))
+:assumption (or x8883 x13689)
+:assumption (or x23244 (not x26783) (not x27374))
+:assumption (or (not x8730) (not x7883))
+:assumption (or x1027 x26431)
+:assumption (or x23567 (not x6672))
+:assumption (or (not x7829) (not x11186))
+:assumption (or (not x8556) (not x9408))
+:assumption (or (not x9308) x29652)
+:assumption (or x23256 (not x3435))
+:assumption (or x18055 (not x21285))
+:assumption (or (not x25625) x15344)
+:assumption (or x26039 (not x20693))
+:assumption (or (not x12595) (not x5904))
+:assumption (or x1816 x5548)
+:assumption (or x11839 x9883)
+:assumption (or (not x27013) x31807)
+:assumption (or x24681 x8002)
+:assumption (or x1653 (not x20648))
+:assumption (or x30470 x1960)
+:assumption (or (not x25129) (not x5696))
+:assumption (or x26103 (not x28541))
+:assumption (or x24881 (not x20750))
+:assumption (or (not x24769) (not x3507))
+:assumption (or (not x16905) x27127)
+:assumption (or (not x25355) x17486 x29602)
+:assumption (or x15221 (not x17489))
+:assumption (or (not x3187) x102)
+:assumption (or (not x18635) (not x7077))
+:assumption (or x31381 x18254)
+:assumption (or (not x13461) x11561)
+:assumption (or (not x40) (not x1409))
+:assumption (or x23404 x20582)
+:assumption (or (not x23356) x3858)
+:assumption (or (not x16592) (not x5142))
+:assumption (or (not x7345) (not x29892))
+:assumption (or (not x23497) x13798)
+:assumption (or x19549 (not x13590))
+:assumption (or (not x27123) x28251)
+:assumption (or x30662 (not x23244))
+:assumption (or x1901 x27298)
+:assumption (or (not x25157) (not x13704))
+:assumption (or (not x7976) x9531)
+:assumption (or (not x9479) x1868)
+:assumption (or x3893 x25954)
+:assumption (or (not x18859) x25176 x1311)
+:assumption (or x12831 x14138)
+:assumption (or (not x28034) (not x26045))
+:assumption (or x18804 (not x10052))
+:assumption (or x16961 x7469)
+:assumption (or (not x20495) (not x2310) (not x23319) (not x1223) (not x29136))
+:assumption (or x18335 (not x21792))
+:assumption (or x4431 (not x21815))
+:assumption (or (not x14741) x12267 x1671)
+:assumption (or x28370 x3233)
+:assumption (or (not x23683) (not x28448))
+:assumption (or (not x30805) x6326)
+:assumption (or (not x11423) x30617)
+:assumption (or (not x5484) x28242)
+:assumption (or (not x761) (not x15276))
+:assumption (or (not x18069) x24579 x29309 (not x10090) (not x7424))
+:assumption (or x28800 x13948)
+:assumption (or (not x8983) (not x15853))
+:assumption (or (not x9008) (not x25097) x15766)
+:assumption (or (not x31013) (not x27329))
+:assumption (or x6489 (not x16894) x26432 (not x30885) x19265 x16488 x21123 x26697)
+:assumption (or x5004 x28520)
+:assumption (or (not x18104) (not x3050))
+:assumption (or x6444 (not x27413))
+:assumption (or (not x115) (not x23999))
+:assumption (or x3932 (not x8029) x28537)
+:assumption (or (not x13956) (not x27941) (not x5478) x30432)
+:assumption (or (not x26048) (not x7935))
+:assumption (or x5617 (not x13674))
+:assumption (or (not x3238) (not x29192))
+:assumption (or x11758 (not x18293))
+:assumption (or x14078 x841 x5162)
+:assumption (or (not x23166) x11892)
+:assumption (or (not x6962) (not x22617) x9008)
+:assumption (or (not x6908) x30225)
+:assumption (or (not x11930) x24171)
+:assumption (or (not x17370) (not x2177))
+:assumption (or x20207 x3117)
+:assumption (or (not x27867) x26564)
+:assumption (or (not x16025) (not x31198))
+:assumption (or x12058 x26403 x15689)
+:assumption (or x30124 x1526)
+:assumption (or x11578 x376)
+:assumption (or x24259 x13151)
+:assumption (or (not x14786) (not x8081) (not x13956) x5840)
+:assumption (or x11795 x2310)
+:assumption (or (not x15773) x7721)
+:assumption (or x21868 (not x24832))
+:assumption (or (not x17829) x29312)
+:assumption (or x20325 x28171)
+:assumption (or x84 (not x6259))
+:assumption (or (not x12130) (not x7122))
+:assumption (or x25592 x4757)
+:assumption (or x29029 x6351)
+:assumption (or x12874 x21692)
+:assumption (or x4719 x3413 x18859)
+:assumption (or (not x22877) x21654)
+:assumption (or x21030 x28973)
+:assumption (or (not x19033) (not x25106))
+:assumption (or (not x29843) (not x8002))
+:assumption (or x31644 (not x9647))
+:assumption (or (not x11489) x22029)
+:assumption (or x17504 x12274)
+:assumption (or x27431 (not x10857))
+:assumption (or (not x3494) (not x13417) x18069 (not x9335))
+:assumption (or (not x25092) (not x5155) (not x10686) x18519 (not x12166) x20660 x24039 (not x20337))
+:assumption (or (not x8272) (not x25017))
+:assumption (or x11607 (not x25571))
+:assumption (or x6308 (not x22360) x25315)
+:assumption (or x9528 x23619 (not x12006) x24993)
+:assumption (or x7914 x5343)
+:assumption (or x4490 (not x13321) (not x11162) (not x17388) (not x30719) x5711 x14578)
+:assumption (or (not x10897) x7074)
+:assumption (or (not x29896) x21077)
+:assumption (or x6735 (not x7221))
+:assumption (or x25151 (not x1621) x6824)
+:assumption (or (not x13684) (not x3749))
+:assumption (or (not x4317) (not x9805))
+:assumption (or (not x8132) (not x28447))
+:assumption (or x9008 x4737)
+:assumption (or (not x31480) x12284)
+:assumption (or x17970 (not x22570))
+:assumption (or x7968 x28084)
+:assumption (or x9539 x13280)
+:assumption (or (not x17016) (not x21956))
+:assumption (or (not x17449) x14751)
+:assumption (or x26330 x31608)
+:assumption (or (not x4948) (not x16938))
+:assumption (or (not x8068) x15955)
+:assumption (or x21037 (not x27595))
+:assumption (or (not x24923) x31693 (not x18783) (not x5528) (not x10193) x14550)
+:assumption (or x16656 x9660)
+:assumption (or (not x869) x753)
+:assumption (or x28279 (not x788))
+:assumption (or x28903 x835)
+:assumption (or x12366 x15775)
+:assumption (or x10045 x5532)
+:assumption (or x4271 (not x17033))
+:assumption (or (not x22835) (not x701))
+:assumption (or (not x142) (not x15202))
+:assumption (or x12303 (not x6307))
+:assumption (or (not x6383) x8504)
+:assumption (or (not x8602) (not x3479) x27342)
+:assumption (or (not x24735) x31248 (not x23687))
+:assumption (or x29750 x27432)
+:assumption (or x25487 (not x12892))
+:assumption (or x11878 x19598)
+:assumption (or (not x26671) x8372)
+:assumption (or x21815 (not x7475))
+:assumption (or (not x15795) (not x22397))
+:assumption (or (not x13451) (not x5698))
+:assumption (or (not x14987) (not x5367))
+:assumption (or x21815 x30900)
+:assumption (or x17076 x16581)
+:assumption (or x21026 (not x26033))
+:assumption (or (not x10207) (not x23179) x21815)
+:assumption (or (not x22921) (not x16456))
+:assumption (or (not x4555) x20456)
+:assumption (or (not x21831) (not x27717))
+:assumption (or (not x20866) x14963 x16409)
+:assumption (or (not x24313) (not x16850))
+:assumption (or x26777 (not x18488))
+:assumption (or (not x10988) x12749 x29316 x20056 (not x8898) x22202)
+:assumption (or x7848 x23633)
+:assumption (or (not x19818) (not x18207))
+:assumption (or (not x11363) x10496)
+:assumption (or (not x16418) (not x27614))
+:assumption (or (not x13255) x9613)
+:assumption (or (not x12551) (not x169))
+:assumption (or (not x10997) (not x9397) x4702 x22813 x3924 (not x23426) (not x2791) (not x19369) (not x8407))
+:assumption (or (not x24722) x30963 (not x10880) x9524 (not x9952))
+:assumption (or (not x15943) (not x30280))
+:assumption (or (not x20134) (not x31093))
+:assumption (or x1881 x15794)
+:assumption (or (not x2101) x29924)
+:assumption (or (not x11832) (not x218))
+:assumption (or x22104 x21063)
+:assumption (or (not x17225) (not x12945) (not x10454) (not x17174) x256 (not x13365) (not x7713) x6504 x2829)
+:assumption (or (not x6808) (not x10053) (not x21561))
+:assumption (or x29320 (not x9043))
+:assumption (or x15018 (not x31862))
+:assumption (or (not x10359) (not x24890))
+:assumption (or x5071 (not x23857))
+:assumption (or x16634 x16652)
+:assumption (or (not x5949) (not x8002) x3704)
+:assumption (or (not x25863) (not x30455))
+:assumption (or x3168 (not x1547) x28349 x15013)
+:assumption (or (not x21298) x31441)
+:assumption (or (not x13628) x23648)
+:assumption (or x14181 x8002)
+:assumption (or (not x25932) x20261)
+:assumption (or x19318 x20491)
+:assumption (or x31378 x27747)
+:assumption (or (not x30864) (not x11245))
+:assumption (or (not x29442) x4191)
+:assumption (or x19608 x20042)
+:assumption (or (not x19170) x1797)
+:assumption (or x11283 (not x20550))
+:assumption (or (not x9277) (not x16577))
+:assumption (or x2375 x26787)
+:assumption (or (not x4979) (not x342))
+:assumption (or x5528 x2540 x16537)
+:assumption (or (not x13181) x24132)
+:assumption (or x17070 x17761)
+:assumption (or (not x21630) x17723 (not x7063))
+:assumption (or (not x25246) x21631)
+:assumption (or (not x26144) x15260 x744)
+:assumption (or x11838 x22119)
+:assumption (or (not x10237) (not x8685))
+:assumption (or x4592 (not x14839) x3242)
+:assumption (or (not x31581) x20378)
+:assumption (or (not x8002) x3028)
+:assumption (or x17243 x2032)
+:assumption (or x17571 (not x15343))
+:assumption (or (not x2355) x18143)
+:assumption (or (not x30905) x4930)
+:assumption (or (not x8250) x7969)
+:assumption (or x30127 (not x14339))
+:assumption (or x3313 x28511)
+:assumption (or x1376 x30138 x26897 x20731)
+:assumption (or (not x21419) x31794 x15850 (not x24849) x4281)
+:assumption (or (not x15210) (not x12629))
+:assumption (or x26628 x6489 (not x16894) (not x4723) x26697 x19265 (not x30885) x16488)
+:assumption (or x23613 x11671)
+:assumption (or x19333 x4380)
+:assumption (or (not x10261) x20233)
+:assumption (or x8002 (not x2758))
+:assumption (or x1633 (not x1243))
+:assumption (or x11468 (not x319))
+:assumption (or x13172 (not x26578) (not x13990) x26437 x26070 x13003)
+:assumption (or x12778 (not x31767))
+:assumption (or (not x31412) x827 (not x8906))
+:assumption (or x26092 x28378)
+:assumption (or x9507 x16763 (not x12027) x9644)
+:assumption (or (not x27538) x22791 (not x9207) x13155 x31588 (not x23366) x12299)
+:assumption (or x26395 (not x3516))
+:assumption (or x2114 x14907)
+:assumption (or (not x6768) x18348 x2177 (not x20826))
+:assumption (or (not x4732) (not x13632))
+:assumption (or x19428 (not x30954) (not x10021) x21450)
+:assumption (or (not x24100) (not x29395))
+:assumption (or x18544 x14736)
+:assumption (or x10723 x22034)
+:assumption (or (not x2530) (not x24702))
+:assumption (or (not x1376) (not x20731))
+:assumption (or x6070 x22696)
+:assumption (or (not x23193) (not x30657))
+:assumption (or (not x14178) x6118)
+:assumption (or (not x2276) (not x21714))
+:assumption (or (not x26897) x12394 x17334)
+:assumption (or (not x6748) x21298)
+:assumption (or x9109 (not x3213))
+:assumption (or (not x28204) (not x10887))
+:assumption (or (not x11748) (not x1504))
+:assumption (or (not x12869) (not x29947))
+:assumption (or (not x31823) x23017 x585)
+:assumption (or (not x24515) (not x18694))
+:assumption (or (not x2244) x25894)
+:assumption (or x28708 x16516 x25410)
+:assumption (or (not x21144) (not x19992) (not x29305))
+:assumption (or (not x7719) x16849 (not x5211))
+:assumption (or x22274 x10186 x8602)
+:assumption (or x22526 x29301)
+:assumption (or x25008 x25926)
+:assumption (or x14931 (not x12256))
+:assumption (or (not x21038) x23445)
+:assumption (or x19511 (not x25911))
+:assumption (or x6978 x21684)
+:assumption (or (not x11756) (not x2056))
+:assumption (or x30644 (not x23943))
+:assumption (or (not x8602) (not x16810))
+:assumption (or (not x24891) (not x1253))
+:assumption (or (not x16381) x31777 x6351)
+:assumption (or x21815 x1505 (not x15744) (not x10659) (not x21845) (not x22771))
+:assumption (or x4026 (not x18441) x18558)
+:assumption (or x23639 (not x22578))
+:assumption (or (not x26354) (not x8125) x7406 x24155)
+:assumption (or x14286 (not x22023))
+:assumption (or (not x30208) x20619 (not x19) (not x14499))
+:assumption (or x12227 (not x27482))
+:assumption (or x5029 x17359 (not x26432) (not x5734) (not x16721))
+:assumption (or (not x11818) (not x1936))
+:assumption (or x9844 (not x2189))
+:assumption (or (not x7422) x559)
+:assumption (or x24047 x25911)
+:assumption (or (not x10282) (not x19152))
+:assumption (or (not x26999) x5119)
+:assumption (or x23500 x15376)
+:assumption (or (not x480) x9839 x1077)
+:assumption (or (not x7551) (not x21407))
+:assumption (or (not x22852) x594)
+:assumption (or x15426 (not x2469) (not x21476) (not x11183) x8120 (not x7756) x12284)
+:assumption (or x1369 x25053)
+:assumption (or x30296 x21628)
+:assumption (or x20339 (not x16703))
+:assumption (or x20788 (not x4177))
+:assumption (or x25057 x4244)
+:assumption (or (not x7378) (not x6125))
+:assumption (or x26095 x28161)
+:assumption (or x13622 x25953)
+:assumption (or (not x4068) (not x13956))
+:assumption (or x1189 (not x18293) x21691 x18097)
+:assumption (or x7999 x8651 (not x19627))
+:assumption (or (not x21653) (not x31174))
+:assumption (or (not x31076) (not x16142))
+:assumption (or (not x1381) x11419)
+:assumption (or (not x2669) (not x21653) (not x25497))
+:assumption (or (not x5718) (not x20057) x31195 (not x12458) (not x561))
+:assumption (or x21546 (not x25047))
+:assumption (or (not x6078) (not x30862))
+:assumption (or x4945 (not x4686))
+:assumption (or x5528 x7610 (not x13802))
+:assumption (or (not x2051) x30373)
+:assumption (or (not x546) x8302)
+:assumption (or x30249 x27530 x15692 x11663)
+:assumption (or (not x13729) (not x28505))
+:assumption (or (not x29127) x18573)
+:assumption (or (not x17751) (not x18694) (not x27718) x24811)
+:assumption (or x25818 x29006)
+:assumption (or x24782 (not x29866) x3500 x29501 x25219 (not x30469))
+:assumption (or (not x24166) (not x31593))
+:assumption (or (not x28885) x24332)
+:assumption (or (not x21298) x1586 x31735)
+:assumption (or (not x17210) x27699)
+:assumption (or x25165 x3502)
+:assumption (or x26319 (not x29424) x18957 x3655)
+:assumption (or (not x20152) (not x22137))
+:assumption (or x3442 x13570)
+:assumption (or x6381 x8104)
+:assumption (or x24274 x22419 (not x10577) x8143 (not x11654) (not x7589))
+:assumption (or (not x4612) x29199)
+:assumption (or x16054 (not x19055))
+:assumption (or (not x14839) x17632)
+:assumption (or x3432 x4984)
+:assumption (or x19868 x3740)
+:assumption (or x18946 x20496)
+:assumption (or (not x5705) (not x7524))
+:assumption (or x2791 (not x22813))
+:assumption (or (not x12937) x5518)
+:assumption (or x24590 x4644)
+:assumption (or (not x25176) (not x4216))
+:assumption (or x4854 (not x2213) x675 x16329)
+:assumption (or x5710 x16766)
+:assumption (or x24510 x4965)
+:assumption (or (not x17672) (not x14517))
+:assumption (or x3345 (not x22653))
+:assumption (or (not x29809) x27651)
+:assumption (or (not x12392) (not x7946))
+:assumption (or x19580 x15774)
+:assumption (or (not x18405) x10060)
+:assumption (or (not x3190) x20175)
+:assumption (or x19790 (not x3535))
+:assumption (or (not x31726) x23798)
+:assumption (or x28092 (not x24435))
+:assumption (or (not x13426) (not x13340))
+:assumption (or (not x2637) (not x10450))
+:assumption (or x25434 x20138)
+:assumption (or (not x7821) (not x12294))
+:assumption (or x5302 (not x22636))
+:assumption (or x3300 (not x16351) x20648 (not x27074) x830)
+:assumption (or (not x11953) x30113)
+:assumption (or (not x16624) (not x31203))
+:assumption (or x10587 (not x31698))
+:assumption (or x5481 x6712)
+:assumption (or x6329 x2298)
+:assumption (or (not x17990) (not x9519) (not x827))
+:assumption (or (not x27670) x18055)
+:assumption (or x20852 x18646)
+:assumption (or (not x13802) (not x8179) x23244 x8002 (not x13956))
+:assumption (or x2111 (not x13500))
+:assumption (or x5976 (not x17534) (not x6594) (not x2214))
+:assumption (or (not x17454) x5763)
+:assumption (or x6192 x10520)
+:assumption (or x2609 x22304 (not x21866) (not x28663))
+:assumption (or (not x16117) (not x23209))
+:assumption (or x3150 x1976)
+:assumption (or x28931 (not x27625))
+:assumption (or (not x20576) (not x18863))
+:assumption (or (not x5025) (not x9936))
+:assumption (or (not x6780) (not x31141))
+:assumption (or (not x21815) (not x28683))
+:assumption (or (not x14207) x26011 (not x24756) x5328 (not x2947) x11960)
+:assumption (or (not x21473) x3169)
+:assumption (or (not x1979) (not x11307))
+:assumption (or x303 (not x11464))
+:assumption (or (not x27715) x10753)
+:assumption (or x24862 (not x11190))
+:assumption (or x8336 x14787)
+:assumption (or (not x4840) x10367)
+:assumption (or x16365 (not x7548) x21202 x23801 x23707)
+:assumption (or x23878 (not x20385))
+:assumption (or x30642 (not x5306))
+:assumption (or x19340 x17860)
+:assumption (or x8617 (not x6381) x13576)
+:assumption (or x6460 (not x10042))
+:assumption (or (not x27286) x27046)
+:assumption (or (not x25569) x827)
+:assumption (or x25376 (not x14838))
+:assumption (or x31251 x13344)
+:assumption (or (not x10412) x13920)
+:assumption (or x406 x19214)
+:assumption (or x14 (not x12361))
+:assumption (or (not x28682) x7399)
+:assumption (or (not x13357) x25707 x15824 x11504 x3721)
+:assumption (or x25224 (not x30927) x23364 x27643 (not x1219))
+:assumption (or (not x19781) x15189)
+:assumption (or (not x30790) x10512)
+:assumption (or (not x5082) x8082)
+:assumption (or (not x26372) x9008 x5053)
+:assumption (or x386 (not x30342) x6829 x18884 x28366)
+:assumption (or (not x27537) x13247)
+:assumption (or (not x13318) (not x25393))
+:assumption (or x25763 (not x18527))
+:assumption (or (not x6680) x11531)
+:assumption (or (not x11038) x19770)
+:assumption (or x2478 x25063 (not x18179) (not x23381))
+:assumption (or (not x11849) x6319)
+:assumption (or (not x14161) (not x21349))
+:assumption (or (not x9299) x27097)
+:assumption (or (not x8602) x11770)
+:assumption (or (not x3350) x8229)
+:assumption (or x6149 (not x4405))
+:assumption (or (not x17073) (not x2592))
+:assumption (or x2943 x8882)
+:assumption (or (not x12588) x14460)
+:assumption (or x17644 x8145 x202 x23546 x2605 (not x2660))
+:assumption (or x1870 (not x3066))
+:assumption (or x9302 (not x5025))
+:assumption (or (not x16356) (not x2610))
+:assumption (or x25215 (not x28267))
+:assumption (or x7752 (not x16507))
+:assumption (or x3494 x4847)
+:assumption (or (not x26053) (not x19259))
+:assumption (or (not x11887) (not x22222))
+:assumption (or (not x11769) x15387)
+:assumption (or x10842 x28517)
+:assumption (or (not x8382) (not x24925))
+:assumption (or x16223 (not x9187))
+:assumption (or (not x19877) (not x30124) (not x16409) (not x27778))
+:assumption (or (not x29821) (not x27588))
+:assumption (or x21487 (not x28741))
+:assumption (or x27012 x11854)
+:assumption (or x11731 x25061)
+:assumption (or x10918 (not x29481))
+:assumption (or (not x20576) x19506 x20579 x3909 x9075 (not x2274) (not x25442) (not x352) x5345 (not x21265) (not x21239))
+:assumption (or x2430 x22289)
+:assumption (or x30538 x23153)
+:assumption (or x28436 (not x28847))
+:assumption (or (not x2366) x6351)
+:assumption (or x5141 x25992)
+:assumption (or (not x30850) x2279)
+:assumption (or x29479 x18914)
+:assumption (or x7215 (not x19461))
+:assumption (or (not x6750) x13339)
+:assumption (or x28990 x882)
+:assumption (or x9890 (not x3608))
+:assumption (or (not x31317) x16553)
+:assumption (or (not x23030) (not x10193))
+:assumption (or x19466 (not x4400))
+:assumption (or (not x13768) x17075)
+:assumption (or x29232 (not x20841))
+:assumption (or (not x3677) x22564)
+:assumption (or x26295 (not x9703))
+:assumption (or (not x12590) (not x21721))
+:assumption (or (not x3453) (not x29755) (not x6218))
+:assumption (or (not x12662) x22172)
+:assumption (or x13042 (not x30547))
+:assumption (or x15180 x28791)
+:assumption (or (not x28635) (not x28129))
+:assumption (or x23789 x15973)
+:assumption (or (not x7835) x27848)
+:assumption (or x22933 x13472)
+:assumption (or (not x21261) x1134)
+:assumption (or x26835 x13576 x14851)
+:assumption (or x4455 x460 x2022)
+:assumption (or (not x20149) x20022)
+:assumption (or (not x8523) x8961)
+:assumption (or (not x6330) (not x13593))
+:assumption (or x27071 (not x13456))
+:assumption (or (not x5044) x17329)
+:assumption (or (not x303) x11464)
+:assumption (or x660 (not x23425))
+:assumption (or x8385 (not x26099))
+:assumption (or x24763 (not x25304))
+:assumption (or (not x13088) (not x7177))
+:assumption (or x11484 (not x4651))
+:assumption (or (not x26987) x24114)
+:assumption (or (not x9229) x25659 x21729)
+:assumption (or x29157 (not x18606))
+:assumption (or x12855 x13788)
+:assumption (or x31458 x2493)
+:assumption (or (not x25249) x3930)
+:assumption (or (not x4261) x13759)
+:assumption (or x27274 (not x27998))
+:assumption (or (not x18724) (not x31335))
+:assumption (or (not x11864) x24712)
+:assumption (or (not x24953) x2573)
+:assumption (or (not x23244) x19711 (not x4105))
+:assumption (or (not x19931) (not x6969))
+:assumption (or (not x24080) x26353)
+:assumption (or x26111 x17359)
+:assumption (or (not x3364) x4864)
+:assumption (or x14266 (not x25127))
+:assumption (or x2734 x31630)
+:assumption (or (not x15915) x3294 (not x14839))
+:assumption (or (not x28764) (not x23499) (not x12278) (not x21298))
+:assumption (or x30866 (not x30516))
+:assumption (or (not x14362) x7280)
+:assumption (or x14710 (not x4041))
+:assumption (or (not x26970) (not x28355))
+:assumption (or (not x3169) (not x2875))
+:assumption (or (not x17075) x30069)
+:assumption (or x20934 x13985 x29631 x29552)
+:assumption (or (not x5611) x22934 (not x8658) (not x5440))
+:assumption (or (not x30040) (not x25659) x19172)
+:assumption (or (not x30751) x2544)
+:assumption (or x26917 (not x30753))
+:assumption (or x13229 x12053)
+:assumption (or (not x8002) x4912)
+:assumption (or (not x7427) x2622)
+:assumption (or x1736 (not x21353))
+:assumption (or x20606 x29058)
+:assumption (or (not x15133) (not x30326))
+:assumption (or (not x27983) x18058 (not x17716))
+:assumption (or (not x24426) (not x17545))
+:assumption (or x13862 x24025)
+:assumption (or (not x27800) x14385)
+:assumption (or x9078 x11637 x2250)
+:assumption (or (not x5074) (not x21715) (not x30002) (not x14347))
+:assumption (or (not x23242) x18877)
+:assumption (or (not x5896) (not x20544) x10320)
+:assumption (or x21815 (not x16401))
+:assumption (or x31645 (not x4102))
+:assumption (or (not x6397) x28885 x3063 x31306)
+:assumption (or x27184 x31450 (not x19956))
+:assumption (or (not x3665) (not x27121) (not x17186) (not x1080) x27227)
+:assumption (or x8323 (not x29858))
+:assumption (or x17469 (not x6692))
+:assumption (or (not x2796) (not x15349))
+:assumption (or x11051 x15400)
+:assumption (or x24952 x13501)
+:assumption (or x7818 x2589)
+:assumption (or (not x237) (not x15486))
+:assumption (or (not x805) x31833)
+:assumption (or x20953 x4582)
+:assumption (or x19400 x11228)
+:assumption (or x26609 (not x13408) x24720)
+:assumption (or (not x8412) (not x15942) (not x31014) x2303 x26387 x19703)
+:assumption (or x5507 (not x29606))
+:assumption (or x17997 (not x28013))
+:assumption (or (not x24020) x14143 x23244)
+:assumption (or x14756 x5493)
+:assumption (or (not x20738) x9008)
+:assumption (or (not x15495) (not x29209))
+:assumption (or (not x14643) x11792)
+:assumption (or x22771 (not x9224))
+:assumption (or (not x23982) x31704 (not x26756) (not x11875) x16038 x31872)
+:assumption (or (not x19227) (not x5085))
+:assumption (or x18430 x28151)
+:assumption (or x28021 x18968)
+:assumption (or x20415 x24194)
+:assumption (or (not x24834) (not x15839))
+:assumption (or (not x5121) (not x11276))
+:assumption (or x31641 x10038)
+:assumption (or x24497 (not x31143))
+:assumption (or x18822 (not x11447))
+:assumption (or (not x26530) x784)
+:assumption (or x9503 (not x6723))
+:assumption (or x25150 (not x20082))
+:assumption (or (not x10376) (not x1936))
+:assumption (or x8002 x9591 (not x2077))
+:assumption (or x21298 (not x15299))
+:assumption (or x1040 x12735)
+:assumption (or x20777 x7429)
+:assumption (or (not x4333) (not x6426) x3001)
+:assumption (or (not x25895) x30565)
+:assumption (or (not x3006) x28912)
+:assumption (or x28202 (not x7537))
+:assumption (or x6993 x10614)
+:assumption (or (not x10550) (not x28413))
+:assumption (or (not x4560) x3880)
+:assumption (or x28856 (not x12596))
+:assumption (or x9214 x12310)
+:assumption (or x7172 (not x13825))
+:assumption (or x10161 (not x28750))
+:assumption (or x17908 x10535 x17868 x22469)
+:assumption (or x5574 x22392)
+:assumption (or (not x485) x7409)
+:assumption (or (not x8602) (not x28000) (not x28738))
+:assumption (or (not x21729) (not x7405))
+:assumption (or x4745 (not x17745))
+:assumption (or (not x7534) x13956)
+:assumption (or x17930 x29554)
+:assumption (or (not x15184) x8806)
+:assumption (or (not x8002) x15118)
+:assumption (or x14328 (not x4448))
+:assumption (or x16586 x14191)
+:assumption (or x16058 (not x354) x17463 x16390)
+:assumption (or x2483 (not x129))
+:assumption (or (not x31141) (not x1542))
+:assumption (or (not x28728) x15773)
+:assumption (or x19398 x3415)
+:assumption (or x27929 x5608)
+:assumption (or (not x20197) x13383)
+:assumption (or x10055 (not x21181))
+:assumption (or x16463 (not x6094))
+:assumption (or x29022 (not x25589))
+:assumption (or (not x8978) (not x3925))
+:assumption (or x7848 x25008)
+:assumption (or (not x4155) (not x29257))
+:assumption (or x19552 (not x11122) x27104 (not x4911) (not x28376) (not x26378))
+:assumption (or (not x19060) (not x9923))
+:assumption (or (not x15690) x30815)
+:assumption (or (not x13576) x23923)
+:assumption (or (not x18539) x31844)
+:assumption (or (not x8988) (not x3758))
+:assumption (or (not x21298) (not x12120) x27162)
+:assumption (or (not x13321) x16051)
+:assumption (or x25549 (not x8002))
+:assumption (or (not x3873) (not x10875) x3414 x24135)
+:assumption (or (not x5398) x3673)
+:assumption (or x21298 x11445)
+:assumption (or x14291 x5988)
+:assumption (or x6663 x3165)
+:assumption (or (not x23679) x5009)
+:assumption (or x20845 x8218)
+:assumption (or (not x18390) x31045)
+:assumption (or x5751 (not x5223))
+:assumption (or x5169 x25572)
+:assumption (or x23239 (not x18694) (not x26150) (not x29606))
+:assumption (or (not x24023) (not x17467))
+:assumption (or x28268 x4169)
+:assumption (or (not x8744) (not x28165))
+:assumption (or (not x22224) x18248)
+:assumption (or (not x13899) x10017)
+:assumption (or x18594 (not x14863) (not x22896) x5637)
+:assumption (or x20193 (not x2965) x6856)
+:assumption (or (not x7711) (not x10829))
+:assumption (or (not x17905) x30644)
+:assumption (or (not x26377) x13622 x16334 (not x2288))
+:assumption (or x18374 (not x21660))
+:assumption (or x23769 (not x4978))
+:assumption (or x6894 (not x16035))
+:assumption (or x25709 (not x17861))
+:assumption (or (not x18042) x13652)
+:assumption (or x22278 x16825)
+:assumption (or (not x17911) x8739)
+:assumption (or x30201 x16902)
+:assumption (or x2549 (not x28788) (not x3508) (not x10366) x16604 (not x8581))
+:assumption (or x1735 (not x31452))
+:assumption (or (not x15795) x13031)
+:assumption (or (not x10656) (not x21227))
+:assumption (or (not x13653) (not x13366))
+:assumption (or x6051 x25599)
+:assumption (or (not x4024) x15045)
+:assumption (or (not x10167) x22390)
+:assumption (or x19226 x27139)
+:assumption (or x26135 x14785)
+:assumption (or x3921 x3256)
+:assumption (or (not x18816) (not x6333) (not x12308))
+:assumption (or x23545 x6243 x663 (not x21352))
+:assumption (or x8601 x27947)
+:assumption (or x22111 x16808)
+:assumption (or x15158 x12837)
+:assumption (or (not x6659) x18107)
+:assumption (or (not x4895) (not x28957))
+:assumption (or x29703 (not x21758) (not x21733))
+:assumption (or (not x4314) (not x22154))
+:assumption (or x5023 x17950)
+:assumption (or (not x30685) x31614)
+:assumption (or (not x24793) x23607)
+:assumption (or (not x29212) (not x25305) x12517 (not x9023) x2815)
+:assumption (or x1629 (not x19539))
+:assumption (or x14687 x8268)
+:assumption (or x23181 x13705)
+:assumption (or x26924 x14868 x18778 x23244 (not x9882))
+:assumption (or x23091 (not x25527))
+:assumption (or (not x19518) (not x31110))
+:assumption (or x2145 x2291)
+:assumption (or x24364 x4109)
+:assumption (or x31310 (not x20583))
+:assumption (or (not x13036) x29807)
+:assumption (or (not x14964) x3923)
+:assumption (or (not x19947) (not x7047))
+:assumption (or (not x25038) x12837)
+:assumption (or (not x4241) (not x28930))
+:assumption (or (not x14725) x18647)
+:assumption (or x3213 (not x11028))
+:assumption (or (not x21530) x22595)
+:assumption (or x10745 x31673)
+:assumption (or x2498 x5010)
+:assumption (or (not x18638) x18673)
+:assumption (or (not x3258) x13120)
+:assumption (or (not x3889) x26685)
+:assumption (or (not x4559) x20165)
+:assumption (or x11713 x18180)
+:assumption (or x3642 (not x9482))
+:assumption (or x26529 (not x12082))
+:assumption (or x24037 x15683)
+:assumption (or x14449 x13840)
+:assumption (or (not x28153) (not x14506) (not x16169) (not x5032) x11958)
+:assumption (or x27848 (not x15643))
+:assumption (or (not x12) (not x20892))
+:assumption (or x16337 x8120)
+:assumption (or (not x8002) (not x24943))
+:assumption (or x27270 (not x6954))
+:assumption (or x25931 (not x17767))
+:assumption (or x28693 (not x25224))
+:assumption (or (not x9222) (not x4784))
+:assumption (or (not x9531) x23370 (not x26974) x13576)
+:assumption (or x30219 x25844)
+:assumption (or (not x16938) x28178 (not x5100))
+:assumption (or x19864 x4531)
+:assumption (or x22213 x18844)
+:assumption (or (not x24257) (not x19357) x14572 x23875)
+:assumption (or x1384 x15133)
+:assumption (or x7249 (not x3108))
+:assumption (or x11938 x17854)
+:assumption (or x19526 (not x226))
+:assumption (or (not x18758) (not x18694))
+:assumption (or x9008 x11111 (not x22783))
+:assumption (or (not x23958) x28559 (not x4942))
+:assumption (or x8961 x2593 (not x10364))
+:assumption (or (not x31313) x30227)
+:assumption (or x9460 x6836)
+:assumption (or x29312 (not x16370))
+:assumption (or x13869 x24086)
+:assumption (or (not x29448) x2855)
+:assumption (or x16848 (not x18717))
+:assumption (or (not x3116) x1140)
+:assumption (or x13352 x8382)
+:assumption (or x11263 x16182)
+:assumption (or (not x3297) (not x29482))
+:assumption (or (not x9787) (not x18999))
+:assumption (or x9648 (not x1248))
+:assumption (or x6197 (not x17652) (not x873))
+:assumption (or x12184 (not x7200))
+:assumption (or (not x16637) x16610)
+:assumption (or (not x25650) x1547 (not x6381))
+:assumption (or (not x17447) x21981)
+:assumption (or x23295 x25646)
+:assumption (or x27080 x20576)
+:assumption (or (not x24086) (not x13869))
+:assumption (or (not x21246) x30936)
+:assumption (or (not x13260) x1631)
+:assumption (or (not x690) x30634)
+:assumption (or (not x648) x20411)
+:assumption (or x26675 (not x16802) x27389)
+:assumption (or (not x7199) x8019 x5616 x14337 x7085)
+:assumption (or (not x22921) (not x14108))
+:assumption (or x23244 (not x10833))
+:assumption (or (not x891) (not x14955) x25485 (not x21604) (not x7047) (not x67))
+:assumption (or (not x21944) x23453)
+:assumption (or (not x18915) x1597)
+:assumption (or x28242 x12542)
+:assumption (or (not x16221) x14926)
+:assumption (or x873 x21671 x28715 (not x28136) (not x9461) x26694)
+:assumption (or x23835 (not x24577))
+:assumption (or (not x27345) (not x8602) x29728)
+:assumption (or x2415 (not x11636))
+:assumption (or (not x25909) (not x6739))
+:assumption (or (not x26633) x27593)
+:assumption (or x28181 (not x6511))
+:assumption (or x9008 (not x4359))
+:assumption (or x23540 (not x13956) (not x24733))
+:assumption (or x12864 (not x19428) x6271 x9203 x8733 (not x22126) x21949 (not x31590))
+:assumption (or x22509 (not x28037))
+:assumption (or x12428 x30230)
+:assumption (or x29874 x19056)
+:assumption (or (not x539) x13211 (not x27911) x31083 (not x30891) x6771 x30633 (not x24155) x30631)
+:assumption (or x6558 x10190)
+:assumption (or (not x29535) x29442)
+:assumption (or x8666 x28006)
+:assumption (or (not x12044) (not x8315))
+:assumption (or x16349 x5983)
+:assumption (or x22994 x21089)
+:assumption (or x11613 (not x27111))
+:assumption (or (not x23183) (not x25812))
+:assumption (or (not x6384) x7441)
+:assumption (or x8979 (not x11805))
+:assumption (or (not x30500) (not x9728))
+:assumption (or x5331 (not x52))
+:assumption (or (not x29606) (not x12385))
+:assumption (or x31734 (not x23464) x30114 x11946)
+:assumption (or (not x15420) x15034 (not x10706))
+:assumption (or x29760 (not x698))
+:assumption (or (not x22803) (not x8884) (not x25490) x1416)
+:assumption (or x28523 x6872)
+:assumption (or (not x21867) (not x24793))
+:assumption (or (not x5939) x19694)
+:assumption (or x23244 x14892 (not x9997) x8002 x25818)
+:assumption (or x19391 (not x2686))
+:assumption (or (not x28863) x22122)
+:assumption (or x13660 (not x14259))
+:assumption (or (not x3001) x202 x26502 (not x12888))
+:assumption (or (not x19602) x22314)
+:assumption (or (not x14169) (not x13251))
+:assumption (or x28533 (not x31851))
+:assumption (or x31382 (not x25425))
+:assumption (or x26897 (not x21761))
+:assumption (or (not x26477) x28276)
+:assumption (or (not x9531) (not x16176))
+:assumption (or x16491 x30584)
+:assumption (or (not x9391) (not x18312))
+:assumption (or (not x6082) (not x19002))
+:assumption (or (not x22472) (not x21479) (not x6486) x22393 (not x19358) x9808)
+:assumption (or (not x6644) (not x20333))
+:assumption (or x13531 x21792)
+:assumption (or x30880 x20460)
+:assumption (or x24796 x12059)
+:assumption (or (not x14839) x12138)
+:assumption (or x25472 x20671)
+:assumption (or (not x623) (not x4705) x22569 (not x15696))
+:assumption (or (not x27834) x23244)
+:assumption (or x10277 (not x9163))
+:assumption (or (not x26878) (not x19197))
+:assumption (or x17588 (not x26167))
+:assumption (or x894 x24445)
+:assumption (or (not x1237) (not x8532))
+:assumption (or x28350 (not x14880))
+:assumption (or (not x13920) x5105)
+:assumption (or (not x15543) (not x30033))
+:assumption (or (not x29959) (not x31133))
+:assumption (or (not x27708) x15003)
+:assumption (or x655 x15)
+:assumption (or x30321 x4857)
+:assumption (or (not x14755) (not x30565))
+:assumption (or (not x17047) (not x22380) (not x21653))
+:assumption (or x13297 (not x21567))
+:assumption (or x31922 (not x22048))
+:assumption (or (not x27725) x13181 x11062 (not x86) (not x22593) x25927)
+:assumption (or x15494 x1393 x7571)
+:assumption (or x18440 (not x15158))
+:assumption (or (not x23697) (not x17683) x918)
+:assumption (or (not x8412) x1616)
+:assumption (or x17339 (not x2938))
+:assumption (or x14545 x1151)
+:assumption (or (not x17024) x22525)
+:assumption (or (not x29949) (not x31323))
+:assumption (or x25115 (not x2221) x28257 x20585 x13576 (not x29791))
+:assumption (or x11238 (not x2554))
+:assumption (or x24756 x9758 (not x28486))
+:assumption (or (not x25922) x21636)
+:assumption (or x736 x25809)
+:assumption (or (not x14773) (not x23018))
+:assumption (or x7893 x17374)
+:assumption (or (not x26694) (not x873))
+:assumption (or x6694 x27259)
+:assumption (or x21749 (not x9933))
+:assumption (or (not x29280) (not x1808))
+:assumption (or (not x22804) x4477)
+:assumption (or x6081 x29781)
+:assumption (or x816 x16655 (not x8602))
+:assumption (or x12578 (not x31777) x1744)
+:assumption (or x28186 (not x7809))
+:assumption (or (not x9466) (not x25532))
+:assumption (or (not x8387) (not x17892))
+:assumption (or x16910 x30993)
+:assumption (or x13363 (not x7342))
+:assumption (or x13934 (not x2254))
+:assumption (or x26255 x17566)
+:assumption (or (not x25137) (not x30113))
+:assumption (or x28909 (not x30216))
+:assumption (or x29414 (not x31150))
+:assumption (or (not x8471) x28549)
+:assumption (or (not x23397) (not x16769))
+:assumption (or x842 (not x16659))
+:assumption (or (not x26422) x27941)
+:assumption (or x11200 x6767)
+:assumption (or x6976 x9489 (not x8184) (not x10194))
+:assumption (or x1497 (not x18194))
+:assumption (or x10469 (not x30219))
+:assumption (or x17930 x19854)
+:assumption (or (not x22099) x30002)
+:assumption (or x21480 x22449)
+:assumption (or x26728 (not x7417) (not x9701) (not x13434))
+:assumption (or x7198 (not x3268) (not x19270))
+:assumption (or (not x10916) x28910)
+:assumption (or x10780 (not x31051))
+:assumption (or x6081 x6322)
+:assumption (or x24429 x21672)
+:assumption (or x9853 (not x25227) (not x2290) (not x4761) (not x19973) x29518 (not x28540) (not x15133))
+:assumption (or (not x9930) (not x13956) x23244 x23976 x8002)
+:assumption (or x30541 (not x27244))
+:assumption (or (not x20979) (not x17662))
+:assumption (or (not x25091) x19894 (not x25701) (not x11427) (not x9262) (not x14382) (not x11036))
+:assumption (or (not x10790) x30281)
+:assumption (or (not x5575) x2491 x24197 (not x20606))
+:assumption (or (not x2082) (not x5935) (not x10909) (not x15514) (not x22836))
+:assumption (or x497 x25458 (not x21127))
+:assumption (or x24471 x15429 (not x14138))
+:assumption (or x7542 x9850)
+:assumption (or (not x22386) (not x23679))
+:assumption (or x12133 (not x8113) (not x1393))
+:assumption (or x11695 x3544)
+:assumption (or (not x15987) x23255)
+:assumption (or (not x31771) (not x827) (not x31856))
+:assumption (or (not x24759) x14839 (not x3138))
+:assumption (or (not x28680) x1639)
+:assumption (or x23946 (not x10261))
+:assumption (or (not x14638) (not x21920))
+:assumption (or x20903 x24434)
+:assumption (or (not x25659) x6165)
+:assumption (or x19172 (not x25766))
+:assumption (or (not x27396) (not x59))
+:assumption (or x9423 x22933)
+:assumption (or (not x26984) (not x29768))
+:assumption (or (not x23836) (not x31399))
+:assumption (or x23451 (not x13859))
+:assumption (or (not x16597) x11057)
+:assumption (or (not x29381) (not x14201))
+:assumption (or (not x22951) x16258)
+:assumption (or x26761 (not x5971))
+:assumption (or (not x3803) (not x1565))
+:assumption (or (not x827) (not x17523))
+:assumption (or (not x9322) x16492)
+:assumption (or x11948 x25574)
+:assumption (or x27046 x23317)
+:assumption (or x17408 x6594)
+:assumption (or x22646 (not x8623))
+:assumption (or x19776 x30938)
+:assumption (or (not x28156) x21414)
+:assumption (or x22289 (not x11406))
+:assumption (or x11345 x11726)
+:assumption (or x19442 x27609)
+:assumption (or x14600 (not x26956))
+:assumption (or x8372 (not x6150) x12923 x8150)
+:assumption (or x29061 x813)
+:assumption (or x14707 (not x11674))
+:assumption (or (not x28114) (not x29626))
+:assumption (or x16432 x19958)
+:assumption (or (not x21298) (not x10602) (not x9680))
+:assumption (or (not x18062) (not x22884) (not x27971) (not x22603) x31300)
+:assumption (or x21320 (not x25659))
+:assumption (or x6554 (not x12055))
+:assumption (or (not x23140) x12238)
+:assumption (or (not x15490) x10094)
+:assumption (or x19719 x25785)
+:assumption (or (not x139) (not x19860))
+:assumption (or (not x20550) x31833)
+:assumption (or (not x14143) x24020)
+:assumption (or x4886 (not x27317))
+:assumption (or (not x12595) x31108)
+:assumption (or (not x12654) x31430)
+:assumption (or (not x16510) x29959 (not x6606) (not x25149) (not x21815) x31466 (not x7010))
+:assumption (or (not x8692) (not x25403))
+:assumption (or x3702 x4949)
+:assumption (or (not x10797) x4676)
+:assumption (or x2297 (not x803))
+:assumption (or x30643 x15567)
+:assumption (or (not x24505) x13515)
+:assumption (or (not x17576) (not x22664))
+:assumption (or x2587 x9911 (not x21540) (not x25896) x28184)
+:assumption (or x2836 x2909)
+:assumption (or x26161 x4649 (not x4811))
+:assumption (or x19636 x24004)
+:assumption (or (not x12004) x493)
+:assumption (or (not x27392) (not x14591) (not x19877) x15795)
+:assumption (or x16745 x9307 (not x10770) x26735)
+:assumption (or x2818 (not x30352))
+:assumption (or (not x1671) x17266)
+:assumption (or x3966 x8637)
+:assumption (or x21379 x17801)
+:assumption (or x19569 (not x10336))
+:assumption (or (not x24094) (not x6557))
+:assumption (or (not x31674) (not x6306) x12822)
+:assumption (or x1207 x16867 x5206 x25790)
+:assumption (or x24722 x5598 (not x6754))
+:assumption (or (not x819) x3996)
+:assumption (or x5099 x9008)
+:assumption (or (not x16576) x31628)
+:assumption (or x20741 (not x10381))
+:assumption (or (not x18790) (not x24399))
+:assumption (or x18672 x4850)
+:assumption (or (not x13653) (not x6954))
+:assumption (or x2865 (not x10976))
+:assumption (or x23273 (not x6594) (not x29959) x11377)
+:assumption (or (not x6969) x27473)
+:assumption (or (not x25019) (not x1096) x14687)
+:assumption (or x10027 (not x26004))
+:assumption (or x30142 x4565)
+:assumption (or (not x7924) x13058)
+:assumption (or (not x14246) (not x7455) (not x13622))
+:assumption (or x26311 x15528 (not x27651) (not x4577) (not x729) x17008 x18811 (not x24756) (not x29820))
+:assumption (or x27047 x23811)
+:assumption (or (not x17643) (not x10805))
+:assumption (or (not x11489) x31396)
+:assumption (or x17864 x20482 (not x3212))
+:assumption (or (not x15034) (not x24243) (not x2817))
+:assumption (or (not x12699) x26575)
+:assumption (or (not x30966) (not x18495))
+:assumption (or (not x9025) (not x12045) (not x986))
+:assumption (or (not x12238) (not x14755))
+:assumption (or x5135 (not x27666) x12228 (not x16880) (not x24924) x23801)
+:assumption (or (not x23774) x5555)
+:assumption (or x30568 (not x30077))
+:assumption (or x20597 x26255)
+:assumption (or (not x8433) x16604)
+:assumption (or x29312 (not x27506))
+:assumption (or (not x16050) x26810)
+:assumption (or x29319 x30192)
+:assumption (or x13756 (not x24688) x4838 (not x18236) (not x23877) x1179 (not x11712) (not x18693))
+:assumption (or (not x22983) x26372)
+:assumption (or (not x21955) (not x15489) x25472 x9504 x17149)
+:assumption (or x17225 (not x9252))
+:assumption (or x19425 (not x3964) x4148 (not x25427) (not x14433))
+:assumption (or x22474 x5489)
+:assumption (or (not x13956) (not x12377))
+:assumption (or x27358 x31560)
+:assumption (or (not x29015) (not x25355))
+:assumption (or x2647 (not x29888))
+:assumption (or (not x26134) x13743)
+:assumption (or (not x31925) x2344 x20542)
+:assumption (or x27639 x7533)
+:assumption (or x740 x16743 (not x7542) x11201 x31873 (not x27532) x4533)
+:assumption (or x5895 x19595 x16229 (not x2498) (not x10091))
+:assumption (or (not x3262) (not x17910))
+:assumption (or x12236 x21452)
+:assumption (or x27233 (not x28176))
+:assumption (or x7183 (not x26647))
+:assumption (or x11539 (not x23926))
+:assumption (or x24194 x13697)
+:assumption (or (not x18720) x14493)
+:assumption (or (not x9976) (not x8002))
+:assumption (or x16351 x1653)
+:assumption (or (not x31825) (not x16049))
+:assumption (or x26010 (not x21213))
+:assumption (or (not x4656) (not x18519))
+:assumption (or (not x15083) x4012)
+:assumption (or (not x27775) (not x30937))
+:assumption (or x14421 x17582)
+:assumption (or (not x17075) x24723 (not x218) (not x3862))
+:assumption (or (not x23244) (not x27990))
+:assumption (or (not x20201) x2861)
+:assumption (or (not x17302) x14376)
+:assumption (or x29891 x31767)
+:assumption (or (not x12263) (not x10064) (not x12106))
+:assumption (or (not x7591) x13867)
+:assumption (or (not x766) x600)
+:assumption (or x4029 (not x11394))
+:assumption (or (not x19992) (not x5011) x17016)
+:assumption (or (not x11387) x16)
+:assumption (or (not x4802) (not x24764) x31576 (not x17858) x1580)
+:assumption (or x17434 (not x1142))
+:assumption (or x13949 x21888)
+:assumption (or x12877 x41)
+:assumption (or x15965 x16510)
+:assumption (or x4946 (not x22940))
+:assumption (or (not x14564) x4468)
+:assumption (or x22090 (not x8238))
+:assumption (or (not x2764) (not x1393) (not x18794))
+:assumption (or x26578 (not x6680))
+:assumption (or x13321 (not x16051))
+:assumption (or x8850 (not x19992) (not x18623))
+:assumption (or (not x10698) (not x15457))
+:assumption (or x27913 x27020)
+:assumption (or x16827 x19124)
+:assumption (or (not x119) x20779)
+:assumption (or (not x25659) x4612 (not x3114))
+:assumption (or (not x21102) x26043)
+:assumption (or (not x755) x25996)
+:assumption (or x28521 (not x28023))
+:assumption (or x7125 x26954)
+:assumption (or (not x2282) x26095)
+:assumption (or (not x1684) (not x12136))
+:assumption (or x14449 x18035)
+:assumption (or (not x20280) (not x31376))
+:assumption (or x20014 x8843 x17503)
+:assumption (or (not x13329) (not x26698))
+:assumption (or x19864 (not x16598))
+:assumption (or (not x16798) (not x5301))
+:assumption (or (not x3266) (not x13982) x10116)
+:assumption (or x19410 (not x21513))
+:assumption (or (not x2812) x8269)
+:assumption (or x26284 x5528 x7336)
+:assumption (or x820 x11754)
+:assumption (or x24978 (not x3157) x2345 (not x25659) (not x3797) (not x4323) x19504 (not x5348))
+:assumption (or x3573 (not x30014))
+:assumption (or x14690 (not x13576))
+:assumption (or (not x24218) (not x2862))
+:assumption (or (not x26762) (not x24162))
+:assumption (or (not x30937) x26324)
+:assumption (or x18377 x22674)
+:assumption (or (not x17479) x27449)
+:assumption (or x14268 (not x19006))
+:assumption (or (not x9144) x26146)
+:assumption (or (not x4802) (not x7650) (not x28023) x5893)
+:assumption (or (not x128) x3651)
+:assumption (or x21073 x7856)
+:assumption (or x2133 x2927)
+:assumption (or (not x818) x8942)
+:assumption (or x8586 (not x16331) x11013)
+:assumption (or (not x6911) x13781)
+:assumption (or x13162 x29396)
+:assumption (or x3239 (not x23399))
+:assumption (or x1568 (not x30391) x18199 x7559 x26626 (not x8540) (not x6438) (not x23891))
+:assumption (or x12878 (not x13391))
+:assumption (or (not x5836) (not x3771))
+:assumption (or (not x16736) (not x31083))
+:assumption (or (not x18801) (not x30854) x26097 (not x5244))
+:assumption (or x24832 (not x21014))
+:assumption (or (not x19129) (not x11390))
+:assumption (or (not x13632) (not x1534))
+:assumption (or (not x27233) x25772)
+:assumption (or x28389 x8761)
+:assumption (or (not x27865) (not x25972))
+:assumption (or (not x22969) x1089)
+:assumption (or (not x19935) x7261)
+:assumption (or (not x11705) x10441 (not x1582))
+:assumption (or x10363 x10699)
+:assumption (or x6894 x19470)
+:assumption (or x5667 (not x27893))
+:assumption (or (not x28469) x2706 x20347)
+:assumption (or (not x29964) (not x29870))
+:assumption (or x21450 (not x16981))
+:assumption (or (not x2716) (not x28030))
+:assumption (or x23998 x14629)
+:assumption (or (not x16250) x31921)
+:assumption (or x28582 x17100)
+:assumption (or x16802 x31753)
+:assumption (or x8442 (not x1225))
+:assumption (or x3566 (not x22732))
+:assumption (or (not x12846) (not x25659) x31438 x13910 x11709 x7253 (not x25302) (not x10435))
+:assumption (or x7864 x23935)
+:assumption (or (not x24471) x10028)
+:assumption (or x20482 x17035)
+:assumption (or x8923 (not x24395))
+:assumption (or (not x28997) (not x22517))
+:assumption (or (not x620) (not x13115))
+:assumption (or (not x9474) (not x3618))
+:assumption (or x19669 (not x5927))
+:assumption (or (not x4123) (not x1432))
+:assumption (or (not x27233) x27730)
+:assumption (or (not x14435) (not x15985))
+:assumption (or (not x31864) (not x2845))
+:assumption (or x9525 (not x18182) (not x5125) x10104)
+:assumption (or x31166 (not x20398) (not x13477) (not x21883) x11803)
+:assumption (or (not x22423) x25659)
+:assumption (or (not x1773) x12289)
+:assumption (or x17859 (not x8002))
+:assumption (or (not x15316) (not x4907))
+:assumption (or (not x30992) (not x24583))
+:assumption (or x11962 x4303 (not x9469))
+:assumption (or (not x31482) (not x30063) (not x16887))
+:assumption (or (not x19250) x11970)
+:assumption (or (not x20567) (not x21527))
+:assumption (or (not x29030) (not x4818))
+:assumption (or x20406 x16057)
+:assumption (or x22204 (not x965) x9008 (not x2145) (not x18132) (not x12294))
+:assumption (or (not x28013) (not x30138))
+:assumption (or (not x26387) (not x19703))
+:assumption (or (not x903) (not x23500))
+:assumption (or (not x23705) (not x1151))
+:assumption (or (not x19465) (not x18572) x13811)
+:assumption (or x2639 (not x8484))
+:assumption (or x23276 (not x19501))
+:assumption (or (not x17683) x18034)
+:assumption (or (not x15345) (not x22191))
+:assumption (or (not x5256) x9870)
+:assumption (or (not x2868) (not x1263))
+:assumption (or x27203 (not x18608))
+:assumption (or (not x4744) x21798)
+:assumption (or (not x21781) (not x19967) (not x31838))
+:assumption (or (not x11245) x19081)
+:assumption (or (not x17750) (not x5338) (not x20462) x14839)
+:assumption (or (not x15024) x29972 (not x30295) (not x9096))
+:assumption (or x9008 x23967 (not x23066))
+:assumption (or (not x346) x23898 (not x27915))
+:assumption (or x8753 x11114 (not x519))
+:assumption (or (not x3494) x16093 (not x4847) x23764 x26187)
+:assumption (or (not x27941) x4016)
+:assumption (or (not x3157) (not x3797) x24978 (not x4662) x19504 x2345 (not x26432) (not x5348))
+:assumption (or (not x27409) x30276)
+:assumption (or (not x14854) x30954)
+:assumption (or x14243 x10634)
+:assumption (or x25844 (not x15795))
+:assumption (or x6381 (not x5968))
+:assumption (or (not x10587) (not x30219) (not x21321))
+:assumption (or (not x19457) (not x21211))
+:assumption (or (not x4569) x23770)
+:assumption (or (not x1552) x3898)
+:assumption (or (not x3117) x2053)
+:assumption (or x28483 (not x31463))
+:assumption (or x27354 x9599)
+:assumption (or x11381 x16657)
+:assumption (or x23074 x3136)
+:assumption (or x26438 (not x2537))
+:assumption (or (not x28453) x15497)
+:assumption (or (not x21138) (not x5180))
+:assumption (or x9681 x2386 x10923)
+:assumption (or (not x11988) x14560)
+:assumption (or (not x3260) x8971)
+:assumption (or x3879 x21775)
+:assumption (or x25617 (not x14994))
+:assumption (or (not x15548) x16069 x26029)
+:assumption (or (not x17326) x5266)
+:assumption (or x142 x8185)
+:assumption (or (not x7822) (not x19680))
+:assumption (or (not x4621) x21705)
+:assumption (or (not x9018) (not x16586))
+:assumption (or (not x25509) (not x18233))
+:assumption (or x25748 x19864 x17369 x27537)
+:assumption (or (not x18188) (not x10300))
+:assumption (or (not x740) x7542)
+:assumption (or (not x26216) x21298)
+:assumption (or x24824 (not x89))
+:assumption (or x10171 x11484)
+:assumption (or (not x9008) x19641 x30356)
+:assumption (or (not x20723) x16156)
+:assumption (or x2833 (not x6365))
+:assumption (or (not x6365) x11908 (not x25355))
+:assumption (or (not x18706) (not x13874))
+:assumption (or (not x21653) x12970 x9807)
+:assumption (or x14832 x7529)
+:assumption (or (not x202) x8554)
+:assumption (or (not x30281) (not x16650) (not x13642) (not x12668) x15328)
+:assumption (or (not x10505) (not x25639) (not x17572) x1083 x28575 (not x4657) (not x31108) x12595 x10502)
+:assumption (or x16563 x21394 (not x8002))
+:assumption (or x8442 (not x15843))
+:assumption (or (not x11518) x3660 x5263 (not x79) (not x22356))
+:assumption (or x13956 x11859)
+:assumption (or (not x19908) (not x26453))
+:assumption (or (not x11991) x5558 x24500 (not x15882))
+:assumption (or (not x14693) x4401)
+:assumption (or x12315 (not x13593))
+:assumption (or (not x920) (not x25116))
+:assumption (or (not x21804) (not x13956))
+:assumption (or (not x13499) x31339)
+:assumption (or x25914 x8692 (not x10897) x8265 (not x28093) x19715)
+:assumption (or x15348 x28375)
+:assumption (or (not x24263) (not x26610))
+:assumption (or x29442 x24510)
+:assumption (or x24632 x26596)
+:assumption (or (not x22622) (not x24813))
+:assumption (or x7881 x22560)
+:assumption (or x13521 x16116)
+:assumption (or x10064 (not x20524))
+:assumption (or x27079 x25204 (not x223) (not x10430))
+:assumption (or (not x18497) x19337 x8184)
+:assumption (or x20797 (not x14800))
+:assumption (or (not x15550) x15317)
+:assumption (or (not x23244) (not x26494))
+:assumption (or x6771 (not x19732))
+:assumption (or x15531 (not x6409))
+:assumption (or (not x28673) x23858)
+:assumption (or (not x12045) x15185)
+:assumption (or (not x25559) (not x23712))
+:assumption (or x1144 (not x3525))
+:assumption (or (not x29489) x15684 x5528)
+:assumption (or x20514 x30809 x25713 x27615)
+:assumption (or x8602 (not x28432))
+:assumption (or x12901 x13095)
+:assumption (or (not x20720) x23700)
+:assumption (or x15275 x25366)
+:assumption (or (not x14053) x28082 (not x16161))
+:assumption (or (not x4524) (not x28992))
+:assumption (or (not x10319) (not x12397))
+:assumption (or (not x30645) x17849)
+:assumption (or (not x3070) (not x19791))
+:assumption (or x24797 x12531)
+:assumption (or (not x20949) x3481)
+:assumption (or (not x10510) x15861 x9650)
+:assumption (or (not x31060) (not x5766) (not x6849) (not x13005) x26531 x26259 x24354 (not x27440))
+:assumption (or (not x28571) x16175)
+:assumption (or (not x11258) (not x19864) (not x8823) x17789 (not x24344))
+:assumption (or (not x11757) (not x27629))
+:assumption (or x17690 (not x28564))
+:assumption (or (not x23763) x199)
+:assumption (or (not x6562) x14056)
+:assumption (or x6610 (not x31047))
+:assumption (or (not x26497) x18020)
+:assumption (or x13029 (not x21879))
+:assumption (or (not x22601) x23244)
+:assumption (or (not x18480) (not x29395))
+:assumption (or x28499 (not x4599) (not x20794) (not x24951) (not x2116) (not x172))
+:assumption (or (not x30013) (not x7881) x29764 (not x2648) x21561)
+:assumption (or (not x23326) x9969)
+:assumption (or x11778 x18044)
+:assumption (or (not x6746) x17299 (not x1371) (not x1279) x3936 (not x13793) (not x14753))
+:assumption (or (not x25294) x4611)
+:assumption (or x6149 (not x29663) x139 (not x27332) (not x20163) x10356)
+:assumption (or (not x23446) (not x14455))
+:assumption (or (not x15066) (not x21189))
+:assumption (or x8832 (not x23781))
+:assumption (or (not x12406) (not x23559))
+:assumption (or (not x13197) x21653)
+:assumption (or (not x3826) x14087)
+:assumption (or x16971 (not x24968))
+:assumption (or (not x3986) (not x30355))
+:assumption (or x12923 (not x10552))
+:assumption (or x28077 (not x29182))
+:assumption (or (not x23434) x12242 x27242)
+:assumption (or x16929 x14309)
+:assumption (or (not x16028) (not x11617))
+:assumption (or (not x958) (not x7331))
+:assumption (or x9295 x9264)
+:assumption (or (not x21298) (not x31454))
+:assumption (or x945 x16294)
+:assumption (or x9511 x31543)
+:assumption (or x8307 x22493)
+:assumption (or x6351 x14932)
+:assumption (or (not x24295) (not x31642))
+:assumption (or (not x24884) x21190)
+:assumption (or (not x30932) x11094)
+:assumption (or x23244 x805 (not x31743) (not x29772) x8002 x13956)
+:assumption (or (not x31122) (not x9513))
+:assumption (or (not x3365) x7536)
+:assumption (or (not x21348) (not x23527) (not x6474) x23574)
+:assumption (or (not x19711) x24960 (not x29272) (not x18519))
+:assumption (or (not x7513) x21726)
+:assumption (or (not x17111) x20373)
+:assumption (or x26481 (not x24448))
+:assumption (or (not x13576) (not x17803) (not x9531) (not x12198))
+:assumption (or x12391 x18620)
+:assumption (or (not x30219) x22574)
+:assumption (or x11531 x13393 (not x15102) x19797 x26878)
+:assumption (or x4430 x11605)
+:assumption (or (not x1601) x31291)
+:assumption (or (not x30810) (not x18353))
+:assumption (or x14890 (not x28781))
+:assumption (or x27973 x5584)
+:assumption (or (not x22268) x14206)
+:assumption (or x22588 x30113 (not x9804))
+:assumption (or (not x15470) (not x14718))
+:assumption (or x16067 x8402)
+:assumption (or (not x11250) x17707 x24465 x8632 (not x15515) x29188)
+:assumption (or (not x29663) (not x27332) x10356 (not x1042) (not x20163) x15396)
+:assumption (or x21930 (not x1339))
+:assumption (or x13956 x22457)
+:assumption (or x4075 (not x16023))
+:assumption (or (not x26651) (not x24615))
+:assumption (or (not x21298) (not x2902) x16978 x19791)
+:assumption (or x11489 (not x1415))
+:assumption (or (not x22188) (not x13659))
+:assumption (or x12140 (not x23801) x24838)
+:assumption (or (not x3005) x16328)
+:assumption (or (not x12566) (not x13795))
+:assumption (or (not x4357) (not x22645) x15604 (not x29185) x20556 (not x26655) (not x5362))
+:assumption (or (not x3296) (not x26432))
+:assumption (or x9945 x7461)
+:assumption (or (not x14160) x3315)
+:assumption (or x19801 (not x30029) x5518 (not x20949) (not x19606))
+:assumption (or (not x26970) (not x8187))
+:assumption (or (not x26029) x22483)
+:assumption (or x25472 (not x24722) x23225)
+:assumption (or x3841 (not x6562))
+:assumption (or (not x1582) (not x15078) x5905 (not x12329) x31513 x13057 x23250)
+:assumption (or (not x5727) x19700 x13095 (not x14005) x29913 x4568 (not x17722) (not x3625) (not x13972))
+:assumption (or x11931 x26349)
+:assumption (or (not x8737) (not x16802))
+:assumption (or x5528 x3515 x19501)
+:assumption (or x15533 (not x24422))
+:assumption (or (not x13576) (not x25115))
+:assumption (or x29920 (not x10538) x15331 x26865 (not x31079))
+:assumption (or (not x11658) x1555)
+:assumption (or (not x8537) (not x24738) (not x14159) (not x713) x5558)
+:assumption (or x30853 (not x3185))
+:assumption (or x29257 (not x16158))
+:assumption (or (not x12055) (not x14435))
+:assumption (or x2825 (not x1063))
+:assumption (or x7421 x24165)
+:assumption (or x10250 (not x14359))
+:assumption (or x11316 (not x8941) (not x12419) (not x12718) x17729 (not x9919) x23720)
+:assumption (or x14435 (not x29242))
+:assumption (or (not x293) x19745)
+:assumption (or x1597 x23244)
+:assumption (or (not x3549) x30875)
+:assumption (or (not x7836) (not x4401))
+:assumption (or x9008 x22105)
+:assumption (or (not x17050) (not x30667))
+:assumption (or x142 x20493)
+:assumption (or x27652 x13503 x7703 (not x13520) (not x28989))
+:assumption (or x29906 (not x282))
+:assumption (or (not x22664) (not x11160))
+:assumption (or x12992 x16168)
+:assumption (or (not x9674) x29442 (not x3782) (not x6754))
+:assumption (or x1751 x30432)
+:assumption (or (not x18806) (not x15571) (not x25659) x19155 x21274 x17594 x11014 (not x26946))
+:assumption (or x7349 (not x10822))
+:assumption (or (not x17811) (not x18081))
+:assumption (or (not x20886) x23204)
+:assumption (or x5453 x4504 (not x26755) (not x8381))
+:assumption (or x16025 x23243 x21719)
+:assumption (or (not x26670) x5994 (not x3653))
+:assumption (or x12136 (not x5177))
+:assumption (or x27052 (not x12586))
+:assumption (or x22594 x20414)
+:assumption (or (not x12208) (not x11799))
+:assumption (or x28805 (not x31712))
+:assumption (or x15819 (not x12260))
+:assumption (or (not x17349) x12183)
+:assumption (or x7483 (not x18010))
+:assumption (or (not x722) (not x16998))
+:assumption (or x16604 x25444 x14899)
+:assumption (or x17941 (not x14814))
+:assumption (or (not x9493) x24396)
+:assumption (or (not x9008) x29601 x24331)
+:assumption (or (not x30748) (not x7548))
+:assumption (or (not x29830) x28487)
+:assumption (or (not x16910) x13359)
+:assumption (or (not x25952) x6844)
+:assumption (or (not x15128) x20441)
+:assumption (or (not x12823) x5524)
+:assumption (or x24228 (not x4259) x20861 (not x15649) (not x14602))
+:assumption (or (not x24969) (not x6990))
+:assumption (or x24719 (not x16025))
+:assumption (or x10832 x4950)
+:assumption (or (not x8586) (not x19273) (not x30992) x15718)
+:assumption (or x23244 (not x8002) x7872)
+:assumption (or x11322 x13685)
+:assumption (or x15572 (not x9251))
+:assumption (or (not x19824) x2157)
+:assumption (or x31216 x16595)
+:assumption (or x30434 (not x11441) x5673 (not x17988) (not x5555))
+:assumption (or x7779 (not x9904) x3611 x3305 (not x16766) (not x5710) x18197 (not x4957))
+:assumption (or x24870 (not x97))
+:assumption (or x10359 (not x6335) (not x13188) x10910)
+:assumption (or (not x14745) x30113)
+:assumption (or x29649 (not x18725))
+:assumption (or x12547 x6857)
+:assumption (or (not x28023) (not x25900))
+:assumption (or (not x23444) x12380)
+:assumption (or x17528 (not x10460))
+:assumption (or x21546 x22828)
+:assumption (or (not x401) x9280)
+:assumption (or x12048 (not x28400))
+:assumption (or (not x10449) x23657)
+:assumption (or x15847 (not x3569))
+:assumption (or x23649 x23620)
+:assumption (or (not x21533) x20881)
+:assumption (or x26593 x19266)
+:assumption (or (not x23582) x25520 (not x21045) x3578 x24752)
+:assumption (or x29385 x17296)
+:assumption (or (not x15382) (not x2419))
+:assumption (or x20485 x7497)
+:assumption (or (not x8830) (not x12119))
+:assumption (or x12819 x31124)
+:assumption (or (not x23817) x24733)
+:assumption (or (not x30266) x7574)
+:assumption (or (not x5895) x10091)
+:assumption (or (not x15980) x14122)
+:assumption (or (not x2649) (not x26817))
+:assumption (or (not x5886) x6256)
+:assumption (or x20661 x23244)
+:assumption (or x18028 (not x9742))
+:assumption (or x13074 x20330)
+:assumption (or (not x15132) (not x15486))
+:assumption (or (not x13950) (not x15633))
+:assumption (or x11028 (not x29188) x25819 x2761)
+:assumption (or (not x270) x27311)
+:assumption (or (not x20266) x26666)
+:assumption (or x2607 (not x22839))
+:assumption (or x16869 x25033)
+:assumption (or (not x25676) x22619)
+:assumption (or x21806 (not x24491))
+:assumption (or x762 x29342 x28436)
+:assumption (or x29743 x6146)
+:assumption (or (not x21482) (not x5451))
+:assumption (or x26354 (not x25332))
+:assumption (or x23350 x14068)
+:assumption (or x16025 x15560 (not x6596))
+:assumption (or x6001 (not x8595))
+:assumption (or (not x18246) x27662)
+:assumption (or x16290 (not x24826))
+:assumption (or x21298 (not x27786))
+:assumption (or x31222 x13409)
+:assumption (or (not x12667) x8384)
+:assumption (or (not x12913) (not x31174))
+:assumption (or (not x19992) (not x19583) (not x26810))
+:assumption (or (not x29420) (not x28131))
+:assumption (or (not x4243) x27333)
+:assumption (or x13479 x25442)
+:assumption (or x29116 x29626 x29052)
+:assumption (or x14963 (not x2255))
+:assumption (or (not x7108) x30991)
+:assumption (or (not x23639) x22578 (not x9529) x26720 x10794)
+:assumption (or x13010 (not x8002))
+:assumption (or x21856 x606)
+:assumption (or (not x16566) x8852)
+:assumption (or x25777 x8315)
+:assumption (or x30586 (not x30138))
+:assumption (or x29874 x5396)
+:assumption (or (not x23958) (not x7972))
+:assumption (or (not x1393) (not x30280) x11615)
+:assumption (or x30474 (not x23696))
+:assumption (or x31855 x11981)
+:assumption (or (not x24606) x5763)
+:assumption (or (not x15477) x21576 (not x19220) (not x5594))
+:assumption (or (not x20772) (not x12388))
+:assumption (or (not x26100) x27899)
+:assumption (or (not x24399) (not x19295))
+:assumption (or x12397 (not x29185) (not x22645) (not x4357) (not x5362) (not x26655) (not x3466))
+:assumption (or x25224 (not x12490))
+:assumption (or x22531 x2364)
+:assumption (or (not x22739) (not x12420))
+:assumption (or (not x9008) x27712)
+:assumption (or (not x30116) (not x29966))
+:assumption (or (not x9844) x31392 x20012 x21067 (not x27356) (not x8570))
+:assumption (or x6563 x2523 (not x16152) x15299 x27475)
+:assumption (or x12876 (not x18477))
+:assumption (or x31253 x2804)
+:assumption (or (not x7441) x2425)
+:assumption (or (not x6101) x30461)
+:assumption (or x11139 (not x5578))
+:assumption (or x25534 x4161)
+:assumption (or (not x9531) x29915 x13576 x6898)
+:assumption (or (not x425) x1042 x24521 (not x24783))
+:assumption (or (not x24077) x20201)
+:assumption (or (not x14026) (not x3736))
+:assumption (or x3071 (not x8656))
+:assumption (or x8965 (not x13407))
+:assumption (or x18439 x14769)
+:assumption (or (not x19968) (not x27073))
+:assumption (or x13845 x15072)
+:assumption (or x21414 (not x9531) (not x12848))
+:assumption (or (not x15721) x31829)
+:assumption (or x25970 x16882 x8602)
+:assumption (or (not x20651) (not x29560))
+:assumption (or x17773 (not x873) (not x23172))
+:assumption (or x31039 x24514)
+:assumption (or (not x21134) (not x9138))
+:assumption (or (not x10590) (not x7361))
+:assumption (or (not x21653) x12314)
+:assumption (or x3526 x30113)
+:assumption (or (not x10363) x17167)
+:assumption (or (not x13564) (not x27084))
+:assumption (or (not x707) x29932)
+:assumption (or (not x21412) x24401)
+:assumption (or x25921 (not x18064))
+:assumption (or (not x14921) (not x17366))
+:assumption (or (not x10869) x20512)
+:assumption (or x5780 x23908)
+:assumption (or x27043 (not x30665))
+:assumption (or (not x13529) (not x27346))
+:assumption (or x3843 (not x28284) x8602)
+:assumption (or x18201 (not x11011))
+:assumption (or (not x25094) x30366)
+:assumption (or (not x20419) x13602)
+:assumption (or x2480 x4204)
+:assumption (or (not x3644) (not x1893))
+:assumption (or (not x31627) x2901 (not x28130))
+:assumption (or x30299 (not x26549) x3325 (not x11852))
+:assumption (or x6372 (not x2401))
+:assumption (or x30185 x23673)
+:assumption (or x30003 x17344)
+:assumption (or x1246 (not x15224))
+:assumption (or x28424 x5638 x4165 x23598 x22641)
+:assumption (or (not x3082) x9680)
+:assumption (or x31132 x20949 x12045 (not x1487) (not x23562))
+:assumption (or (not x27095) x1488)
+:assumption (or x15163 (not x9534))
+:assumption (or (not x28864) (not x5632))
+:assumption (or (not x2145) x1048)
+:assumption (or (not x26731) (not x21633))
+:assumption (or x5836 (not x21298))
+:assumption (or x22644 x20486)
+:assumption (or x8166 x10109)
+:assumption (or (not x9799) (not x16426))
+:assumption (or (not x9375) x15057)
+:assumption (or x28767 (not x5422))
+:assumption (or x351 (not x18121))
+:assumption (or (not x22665) x187 x9008)
+:assumption (or x12733 (not x1171))
+:assumption (or x18722 x14982)
+:assumption (or x16077 x14839)
+:assumption (or x25659 x22095)
+:assumption (or x20324 (not x1196))
+:assumption (or x2889 (not x27748))
+:assumption (or x14819 (not x16600))
+:assumption (or x10451 (not x6617) x18859)
+:assumption (or x23244 x720 (not x28707) (not x16617) (not x14848) x18575 (not x16874) (not x8851))
+:assumption (or x18587 (not x17896) (not x5558))
+:assumption (or x16959 x28598)
+:assumption (or (not x21414) x20882)
+:assumption (or x1314 (not x13679))
+:assumption (or x3126 x23022 x5051)
+:assumption (or (not x1091) (not x21159) (not x88))
+:assumption (or x20431 (not x8526))
+:assumption (or (not x24155) (not x25332))
+:assumption (or x21463 x29558)
+:assumption (or (not x29771) x28429)
+:assumption (or x21842 x28188)
+:assumption (or (not x18286) x4197)
+:assumption (or (not x7308) (not x15723) (not x28430))
+:assumption (or (not x28091) (not x23677))
+:assumption (or x15118 (not x3162))
+:assumption (or x391 x29023)
+:assumption (or (not x20063) (not x26789))
+:assumption (or (not x27132) (not x29802))
+:assumption (or x21461 (not x17055))
+:assumption (or x260 x18859)
+:assumption (or (not x19041) (not x13956))
+:assumption (or x11235 x16802 (not x8396))
+:assumption (or (not x2231) x12883)
+:assumption (or x23439 x12922)
+:assumption (or (not x25258) x20120)
+:assumption (or x26608 (not x12669))
+:assumption (or x14274 (not x15540))
+:assumption (or (not x12240) x10335)
+:assumption (or x2518 x19563)
+:assumption (or x30625 (not x14389))
+:assumption (or (not x23700) x20720)
+:assumption (or (not x27183) x27058)
+:assumption (or x14668 (not x2350))
+:assumption (or x2450 (not x10445))
+:assumption (or x13453 (not x1650))
+:assumption (or x24108 x13991 x3131)
+:assumption (or (not x25232) x7948)
+:assumption (or x15709 x9008)
+:assumption (or (not x8002) (not x30849))
+:assumption (or x15554 x1288)
+:assumption (or (not x16472) (not x26698))
+:assumption (or x26177 (not x5984))
+:assumption (or (not x26206) x6931 (not x16107) (not x7088))
+:assumption (or x21815 (not x24230) (not x4449) (not x26787) x722 x22599)
+:assumption (or (not x29610) x13385)
+:assumption (or (not x29606) x25712)
+:assumption (or (not x8002) x17961)
+:assumption (or x20291 x23127)
+:assumption (or (not x10640) (not x16749))
+:assumption (or (not x26701) (not x7524))
+:assumption (or (not x6968) (not x22858))
+:assumption (or (not x22534) (not x17537) (not x16025))
+:assumption (or (not x18061) x13882 (not x15749))
+:assumption (or (not x9284) (not x17422) (not x14585) (not x18001) (not x13836))
+:assumption (or x8064 (not x19586))
+:assumption (or (not x1547) (not x599))
+:assumption (or (not x304) x4799)
+:assumption (or x16566 x29522 x13956)
+:assumption (or (not x31534) (not x16741) (not x25824) (not x28948))
+:assumption (or (not x25659) (not x4322))
+:assumption (or x13164 (not x23244))
+:assumption (or x4809 x9506)
+:assumption (or (not x18856) (not x8602))
+:assumption (or (not x12045) (not x7296) x16510 x13907 (not x22859))
+:assumption (or x5198 x7565 x6799)
+:assumption (or (not x30323) x20920)
+:assumption (or (not x21227) (not x6374))
+:assumption (or x26148 (not x12810))
+:assumption (or (not x5379) x25905)
+:assumption (or (not x5241) x14097 (not x8372) (not x7081) (not x26933) x30433 (not x21162) (not x7282) (not x29600))
+:assumption (or x6799 x24323)
+:assumption (or (not x9253) x22235)
+:assumption (or x6616 (not x8904))
+:assumption (or (not x9516) (not x21774) x169)
+:assumption (or x288 (not x17410))
+:assumption (or (not x17365) (not x26315) x13985 x29595)
+:assumption (or x7255 x27422)
+:assumption (or (not x19341) (not x26713) x26354)
+:assumption (or x11123 (not x11299))
+:assumption (or (not x11395) x30735)
+:assumption (or x23348 x29483)
+:assumption (or x30700 (not x9027))
+:assumption (or (not x8964) x613)
+:assumption (or x18852 x18410)
+:assumption (or x6684 (not x6708))
+:assumption (or x10813 x7087)
+:assumption (or x28268 (not x20360))
+:assumption (or x15022 x12011)
+:assumption (or (not x25758) (not x22788))
+:assumption (or x16681 x13502)
+:assumption (or (not x18519) x13962)
+:assumption (or (not x3469) x6889)
+:assumption (or x8463 x26750)
+:assumption (or x11987 (not x21225))
+:assumption (or (not x12059) (not x5186))
+:assumption (or (not x16932) x27061 (not x5480) x20087 x14321)
+:assumption (or (not x19254) x4608)
+:assumption (or (not x6241) x2233)
+:assumption (or (not x26025) x4811)
+:assumption (or (not x26061) x22113 (not x27915))
+:assumption (or (not x30366) x16726)
+:assumption (or (not x14105) (not x14455))
+:assumption (or (not x29979) x25294)
+:assumption (or x3001 (not x8491) x9351)
+:assumption (or x29959 (not x6594) x15537 (not x18267))
+:assumption (or (not x22852) x24964)
+:assumption (or (not x1392) x27964)
+:assumption (or x31491 x26621)
+:assumption (or (not x2523) (not x28057) x6969)
+:assumption (or (not x6492) x9758 x12760)
+:assumption (or x24875 x11381)
+:assumption (or (not x5452) (not x4377))
+:assumption (or x19020 x31645)
+:assumption (or x22177 (not x17246))
+:assumption (or x12090 (not x3158))
+:assumption (or (not x8002) x19179 (not x22512))
+:assumption (or (not x7573) (not x3512))
+:assumption (or (not x5528) (not x24095))
+:assumption (or (not x9828) x4016)
+:assumption (or (not x16417) x23244 x29908)
+:assumption (or x30301 (not x24676))
+:assumption (or (not x31054) x22979 (not x2045) x15500 x12211 (not x19004))
+:assumption (or x6594 x23441)
+:assumption (or x22089 (not x12986))
+:assumption (or x7449 x16318)
+:assumption (or x13734 (not x11831))
+:assumption (or x22367 x19428 (not x21815) (not x17075) (not x16510))
+:assumption (or (not x25784) (not x31114) (not x27879))
+:assumption (or (not x8856) x14307)
+:assumption (or x21796 x31587 (not x21760))
+:assumption (or (not x7668) x27208)
+:assumption (or (not x24030) x14766)
+:assumption (or x23664 x19124)
+:assumption (or (not x21159) (not x12164))
+:assumption (or x19183 (not x17078))
+:assumption (or x27736 x13391 (not x6645))
+:assumption (or x12057 x1804)
+:assumption (or x587 (not x6355))
+:assumption (or (not x5302) (not x17591))
+:assumption (or (not x6594) x18973 x19808)
+:assumption (or x19092 x18334)
+:assumption (or (not x30606) x754)
+:assumption (or x26419 x16048)
+:assumption (or (not x28977) x7195)
+:assumption (or x10555 x3895)
+:assumption (or x22553 (not x13852) (not x13624))
+:assumption (or (not x19691) x14487)
+:assumption (or (not x10115) x7355)
+:assumption (or (not x2917) x2482)
+:assumption (or (not x5881) (not x14864))
+:assumption (or (not x4916) (not x26972))
+:assumption (or x4254 x24602)
+:assumption (or x20924 x25447)
+:assumption (or x25659 x18086)
+:assumption (or (not x3332) (not x9127))
+:assumption (or x12429 (not x13241))
+:assumption (or (not x17359) (not x15190) x26432)
+:assumption (or x8100 x19454)
+:assumption (or x30900 (not x6951))
+:assumption (or x31060 x24536)
+:assumption (or (not x3499) (not x21740))
+:assumption (or x2470 x25342)
+:assumption (or (not x22976) x17609)
+:assumption (or (not x24534) (not x24) x10741)
+:assumption (or (not x15159) x14523)
+:assumption (or x1547 x17440 x3747)
+:assumption (or (not x16304) x29344)
+:assumption (or (not x1331) x8122 (not x24152) x11937 x4260 x20469 x26721 x31725 (not x23312))
+:assumption (or x12065 (not x18311))
+:assumption (or x14433 x25427)
+:assumption (or (not x2641) x9008 x951)
+:assumption (or (not x31552) x24523)
+:assumption (or (not x15242) x10309)
+:assumption (or (not x2449) (not x22472) (not x20479))
+:assumption (or x12778 x45)
+:assumption (or (not x29504) x4136)
+:assumption (or (not x21970) (not x28469))
+:assumption (or (not x23345) x12216)
+:assumption (or x11406 (not x2497))
+:assumption (or x9210 x23279)
+:assumption (or (not x22264) x14955)
+:assumption (or x19507 x25473)
+:assumption (or (not x30103) (not x12282))
+:assumption (or (not x2212) (not x12339))
+:assumption (or x9311 x23118 x4162 x16162)
+:assumption (or x17215 x24820)
+:assumption (or x27589 x20173 x6167 (not x24722) x18042 x26442)
+:assumption (or (not x6246) (not x4923))
+:assumption (or (not x13586) x28768)
+:assumption (or x20241 (not x27726))
+:assumption (or (not x676) (not x8081))
+:assumption (or x17686 (not x18835))
+:assumption (or (not x28971) x2662)
+:assumption (or x17257 (not x8361) (not x22478))
+:assumption (or x12166 x20337)
+:assumption (or x21298 x7342 x15799 (not x15629))
+:assumption (or x15129 (not x30842))
+:assumption (or (not x24863) x27713)
+:assumption (or (not x29637) x1393)
+:assumption (or (not x2880) (not x31857))
+:assumption (or x31100 x25023)
+:assumption (or (not x1393) x10852)
+:assumption (or (not x13082) x23145)
+:assumption (or (not x25504) (not x8002))
+:assumption (or (not x3276) x8763)
+:assumption (or (not x2010) x16106)
+:assumption (or (not x11260) (not x19020))
+:assumption (or (not x1415) x15456)
+:assumption (or x20112 x9698)
+:assumption (or (not x6963) x17276)
+:assumption (or x28103 x12420)
+:assumption (or (not x13777) x5421)
+:assumption (or (not x5560) (not x21190))
+:assumption (or (not x12466) (not x29689))
+:assumption (or x5207 (not x6204))
+:assumption (or x5070 x13023)
+:assumption (or (not x13091) (not x15008))
+:assumption (or x162 (not x24860))
+:assumption (or (not x16669) x10909)
+:assumption (or (not x9352) x25454)
+:assumption (or (not x13449) x17803)
+:assumption (or (not x71) x29176)
+:assumption (or (not x29897) x4714)
+:assumption (or x30432 x30322)
+:assumption (or (not x28225) x7654)
+:assumption (or x5249 x22085 (not x9008) (not x5528) x29489)
+:assumption (or x21834 (not x15758) x7521 (not x14489) (not x28825) x1579 (not x16240))
+:assumption (or x21966 (not x19896))
+:assumption (or x16550 (not x10874) x17991)
+:assumption (or x7244 (not x26723))
+:assumption (or x3560 (not x27033) (not x19856))
+:assumption (or (not x3992) x22629)
+:assumption (or (not x5977) x29467)
+:assumption (or x162 x31364)
+:assumption (or (not x19667) (not x815))
+:assumption (or x18806 x15571)
+:assumption (or x4897 (not x13908) x21432 (not x19236))
+:assumption (or (not x3826) (not x9471))
+:assumption (or (not x31772) (not x3644))
+:assumption (or x25149 x7010)
+:assumption (or x10658 x9583 (not x16184) (not x26725) x20060 (not x9854) x12414)
+:assumption (or (not x7503) (not x17450))
+:assumption (or x30327 x29863)
+:assumption (or (not x16025) x4191)
+:assumption (or (not x27217) (not x13529) x18612 (not x22822) (not x3679) (not x3257) (not x26758) x5823)
+:assumption (or x21298 (not x22404))
+:assumption (or (not x16510) (not x21815) x3001 x28242 (not x16622))
+:assumption (or x20598 x810 (not x7195) (not x19098) (not x14122) (not x3846) x28977 x1671)
+:assumption (or x4153 (not x11897))
+:assumption (or (not x7039) x2757 (not x661) x7835)
+:assumption (or (not x18594) (not x5637))
+:assumption (or x25289 (not x9439))
+:assumption (or (not x29406) (not x1621))
+:assumption (or (not x2705) (not x9412) (not x499) x9093)
+:assumption (or (not x24047) (not x4692))
+:assumption (or x22360 x13741)
+:assumption (or (not x14522) x29457)
+:assumption (or (not x29670) x28197)
+:assumption (or x30346 (not x918))
+:assumption (or (not x18450) (not x19054))
+:assumption (or x22682 (not x5746))
+:assumption (or (not x11036) (not x30246))
+:assumption (or (not x20060) x26725)
+:assumption (or (not x24303) x19734)
+:assumption (or (not x13647) (not x26729))
+:assumption (or (not x28511) (not x23651))
+:assumption (or x28475 (not x14362))
+:assumption (or (not x23323) x6794)
+:assumption (or x3690 x21076)
+:assumption (or x6351 x23502)
+:assumption (or x7935 x26432 x25621 x8390)
+:assumption (or x28424 (not x1024))
+:assumption (or x19346 x3415)
+:assumption (or x17075 x26304 (not x30150) (not x7562) x17800 x16115)
+:assumption (or (not x168) (not x30049))
+:assumption (or (not x8928) x8440)
+:assumption (or x9361 (not x15964))
+:assumption (or x8574 (not x6425))
+:assumption (or (not x22025) x15861 (not x8532) x17267)
+:assumption (or (not x17075) x6648 x16510)
+:assumption (or x4826 (not x4633))
+:assumption (or x16883 x18533)
+:assumption (or (not x7997) (not x14053))
+:assumption (or x10909 (not x29424) x25719 x18957)
+:assumption (or x8117 (not x25144))
+:assumption (or (not x18401) x29617)
+:assumption (or x19743 x10909 (not x7188) (not x25366))
+:assumption (or (not x851) (not x24850))
+:assumption (or x801 (not x13958))
+:assumption (or x16025 (not x16869) x29189)
+:assumption (or (not x18042) (not x2159))
+:assumption (or x10815 x6243)
+:assumption (or (not x8310) x6988)
+:assumption (or x6158 (not x25437))
+:assumption (or (not x19718) (not x12759) x3775)
+:assumption (or x13407 (not x22401))
+:assumption (or (not x9968) x29272)
+:assumption (or (not x7595) (not x25512))
+:assumption (or (not x25479) (not x6682))
+:assumption (or x31061 x5462)
+:assumption (or (not x4242) x28541)
+:assumption (or x27199 (not x29478) x226 (not x4213))
+:assumption (or (not x19762) x225)
+:assumption (or x28595 x3498)
+:assumption (or x25399 (not x28529))
+:assumption (or (not x15969) (not x29959))
+:assumption (or (not x23316) x13316 x15859 (not x30113))
+:assumption (or (not x6745) x10670)
+:assumption (or x16470 (not x7216))
+:assumption (or (not x12825) x8165)
+:assumption (or (not x25664) x17215)
+:assumption (or (not x5791) x1688)
+:assumption (or (not x18113) (not x15875))
+:assumption (or (not x12825) (not x8927))
+:assumption (or x27592 (not x20637))
+:assumption (or (not x11422) (not x12712))
+:assumption (or x25592 (not x11301))
+:assumption (or (not x9482) (not x3800))
+:assumption (or (not x13215) x10213)
+:assumption (or x10741 (not x21179) x24534)
+:assumption (or x16253 x13176)
+:assumption (or (not x29010) x14595)
+:assumption (or x6784 (not x16910) (not x17263))
+:assumption (or (not x2133) (not x7579))
+:assumption (or (not x2560) x30214)
+:assumption (or (not x29487) x6969)
+:assumption (or (not x5601) x30113)
+:assumption (or (not x26892) x16883)
+:assumption (or (not x23813) x18483)
+:assumption (or (not x28722) (not x331))
+:assumption (or x16578 (not x26627))
+:assumption (or (not x9139) x22553)
+:assumption (or x11524 x2355)
+:assumption (or x25230 (not x25541))
+:assumption (or x22853 x5869)
+:assumption (or x10712 x12536)
+:assumption (or (not x22540) x6594 (not x17534))
+:assumption (or (not x8968) (not x3645))
+:assumption (or x24341 (not x21794))
+:assumption (or x11411 (not x12537))
+:assumption (or (not x21681) (not x14486))
+:assumption (or (not x23886) (not x23983))
+:assumption (or x14004 x9044)
+:assumption (or x1317 x14653 (not x19193) (not x28407) x28158)
+:assumption (or (not x17598) x19040)
+:assumption (or x12916 x25284)
+:assumption (or (not x30076) x30078)
+:assumption (or (not x11281) x31886)
+:assumption (or x14444 (not x18859) (not x18749))
+:assumption (or x5438 x13384 x23120 (not x28006))
+:assumption (or x23067 (not x11833))
+:assumption (or x19498 (not x1817))
+:assumption (or x31343 (not x21135))
+:assumption (or (not x18219) x19634)
+:assumption (or (not x3601) x28512)
+:assumption (or (not x21815) (not x30016))
+:assumption (or (not x18844) x27492)
+:assumption (or (not x19907) x11250)
+:assumption (or (not x16214) (not x16953))
+:assumption (or x6676 (not x17356))
+:assumption (or (not x22808) (not x6742) (not x10262) (not x2441) (not x20550) x21813)
+:assumption (or x5922 x22260)
+:assumption (or x28871 (not x26940))
+:assumption (or x4451 (not x13627))
+:assumption (or x21341 (not x30655))
+:assumption (or (not x7366) (not x3205))
+:assumption (or x19655 x16907)
+:assumption (or (not x15167) x13905)
+:assumption (or (not x14646) x31742)
+:assumption (or (not x7465) x14820)
+:assumption (or x4165 (not x20870) x24314 x20486)
+:assumption (or (not x16025) (not x26294))
+:assumption (or x29768 x24371)
+:assumption (or (not x10952) (not x25362) x8195 x486 x31157 x29823 x3182 (not x211))
+:assumption (or (not x20545) x10909)
+:assumption (or (not x27988) (not x20576))
+:assumption (or (not x22270) x5928)
+:assumption (or x15184 (not x8806))
+:assumption (or (not x7678) x24580)
+:assumption (or (not x23280) (not x22511))
+:assumption (or (not x25911) x5987)
+:assumption (or (not x13099) (not x8724) (not x13956) x29269)
+:assumption (or (not x18466) x18809)
+:assumption (or x1148 x5709)
+:assumption (or x28912 (not x17165))
+:assumption (or (not x17226) (not x21871))
+:assumption (or x13383 x31858)
+:assumption (or (not x15897) (not x19885))
+:assumption (or x5223 (not x5751) x18441 x12718)
+:assumption (or x20939 x9779)
+:assumption (or (not x22006) (not x4521))
+:assumption (or x9276 x25824)
+:assumption (or x17675 (not x8770))
+:assumption (or x19670 (not x418))
+:assumption (or x17848 x754)
+:assumption (or (not x22542) x14248)
+:assumption (or (not x26531) x31299)
+:assumption (or (not x31750) x6387)
+:assumption (or x30697 x25659 (not x5349))
+:assumption (or x28395 (not x10918))
+:assumption (or x536 x12223)
+:assumption (or (not x11902) x13017)
+:assumption (or x18570 (not x30486))
+:assumption (or x28365 x14603)
+:assumption (or (not x30124) (not x7955))
+:assumption (or x8177 (not x28826))
+:assumption (or x14333 x30877)
+:assumption (or (not x7581) (not x31742) x26357 x4816 (not x26360))
+:assumption (or (not x30239) x21279 (not x10288))
+:assumption (or (not x6686) (not x12370))
+:assumption (or (not x3422) (not x15585))
+:assumption (or x20310 (not x3962))
+:assumption (or x1439 (not x8026) x4294 x7804)
+:assumption (or (not x8925) x2339)
+:assumption (or x9072 x27343)
+:assumption (or (not x30363) (not x15232))
+:assumption (or x10931 x5528)
+:assumption (or (not x4443) x24956)
+:assumption (or x15128 x16510 (not x6307))
+:assumption (or (not x26610) x8461)
+:assumption (or x8649 x15094)
+:assumption (or x12611 (not x10948) x25935)
+:assumption (or x13956 x14460)
+:assumption (or (not x14551) (not x27284))
+:assumption (or x1598 x21469)
+:assumption (or (not x28046) x11857 (not x22799) x4824)
+:assumption (or (not x15178) (not x6001) (not x13622) (not x13085) x18071 x8595 x30945 (not x2118))
+:assumption (or (not x13392) x23073)
+:assumption (or (not x16461) (not x10298))
+:assumption (or x18941 x19009)
+:assumption (or (not x18064) (not x17014))
+:assumption (or (not x12544) x19622)
+:assumption (or x797 x18956)
+:assumption (or x14017 (not x835))
+:assumption (or (not x19027) (not x18788))
+:assumption (or (not x29442) (not x21370))
+:assumption (or (not x23208) x24860)
+:assumption (or (not x14455) (not x22420) x16374)
+:assumption (or (not x28973) (not x30384) x31890 (not x288))
+:assumption (or x8002 (not x22417))
+:assumption (or (not x10217) (not x29489))
+:assumption (or (not x8536) x7098)
+:assumption (or (not x31642) (not x19665))
+:assumption (or (not x16093) x4847)
+:assumption (or (not x5746) x23310 x9663 x30996 (not x23391) (not x14797) x19588 (not x3375) x15621)
+:assumption (or x20058 x10016)
+:assumption (or (not x16910) x27040 x2919)
+:assumption (or x14226 x18930)
+:assumption (or x23969 (not x22436))
+:assumption (or x19140 x1891 x21267 (not x17438) (not x12329))
+:assumption (or x3520 (not x7568))
+:assumption (or x17406 (not x28398))
+:assumption (or (not x29574) (not x14278))
+:assumption (or x29104 (not x4263))
+:assumption (or (not x7656) x25256)
+:assumption (or (not x26476) (not x19831))
+:assumption (or (not x15917) x30896)
+:assumption (or (not x13293) (not x1958))
+:assumption (or x8795 x28622 x27790 (not x11032) x29063)
+:assumption (or x15065 x22199 (not x27027) (not x5773) x12242)
+:assumption (or x9600 x7055)
+:assumption (or x29475 x10137)
+:assumption (or (not x31134) x8686)
+:assumption (or x19930 (not x6651))
+:assumption (or (not x3035) x5778)
+:assumption (or (not x8683) x23940)
+:assumption (or x14071 (not x21550))
+:assumption (or x10734 x19746)
+:assumption (or (not x22905) (not x20627))
+:assumption (or x22223 x9008 (not x24917) (not x11639) x1117 (not x23117))
+:assumption (or (not x3062) (not x23399) x7537)
+:assumption (or (not x15621) (not x29281))
+:assumption (or x15338 (not x31704))
+:assumption (or x4751 x1393 x420)
+:assumption (or x5376 (not x9683))
+:assumption (or x10641 (not x7252) x2130 x22531)
+:assumption (or x4141 x29830)
+:assumption (or (not x8002) x12567 (not x26738))
+:assumption (or x9043 (not x11176) (not x13345) x25151 x4693 x28885 x26176)
+:assumption (or x1962 x3001)
+:assumption (or (not x10464) x13564)
+:assumption (or x13407 x8957)
+:assumption (or x11570 x29316)
+:assumption (or (not x11868) x462 (not x20090) x12116)
+:assumption (or (not x27697) (not x25662))
+:assumption (or (not x964) (not x5115) x15524)
+:assumption (or (not x5449) (not x21976))
+:assumption (or (not x23083) x917)
+:assumption (or x6087 x30633)
+:assumption (or (not x7716) (not x12045))
+:assumption (or (not x16551) x22488)
+:assumption (or (not x14893) (not x6307))
+:assumption (or (not x16962) (not x6127))
+:assumption (or x14529 x9008)
+:assumption (or (not x5528) x20880)
+:assumption (or (not x15252) (not x21976))
+:assumption (or x1685 x21298)
+:assumption (or x23118 (not x29968))
+:assumption (or (not x25004) x3076 x18464 (not x1461) (not x25977) x31525 (not x18099) (not x26579))
+:assumption (or (not x28388) x1588 (not x12297) (not x7258) x20640)
+:assumption (or (not x16025) (not x23365))
+:assumption (or (not x3782) x2742)
+:assumption (or (not x3875) (not x5886))
+:assumption (or x15193 (not x19908))
+:assumption (or (not x29483) (not x17805))
+:assumption (or (not x26427) (not x17075))
+:assumption (or (not x5387) x22525)
+:assumption (or x11464 (not x5835))
+:assumption (or (not x14021) x16228)
+:assumption (or x4980 (not x7184))
+:assumption (or (not x10275) x22295 x8764 x22267 x26202 (not x30587))
+:assumption (or x28718 (not x1185))
+:assumption (or x21957 x19089)
+:assumption (or x8082 x8716)
+:assumption (or x1605 x7718)
+:assumption (or (not x14238) x1990)
+:assumption (or x14857 (not x8043))
+:assumption (or x5976 (not x17958))
+:assumption (or x24722 (not x16802) (not x13415) x25333 x28890)
+:assumption (or (not x17472) (not x9667))
+:assumption (or (not x11723) x18042)
+:assumption (or (not x6961) x25813)
+:assumption (or (not x9148) (not x22035))
+:assumption (or (not x9991) x7761)
+:assumption (or x31659 x5528)
+:assumption (or (not x5975) (not x2725))
+:assumption (or (not x17745) x5261)
+:assumption (or (not x16510) x25884)
+:assumption (or x7876 (not x7372))
+:assumption (or (not x15239) x923)
+:assumption (or x1060 (not x30399))
+:assumption (or x23914 (not x31706))
+:assumption (or (not x5033) x4761)
+:assumption (or x1582 (not x25644) x16510)
+:assumption (or (not x13518) (not x15038))
+:assumption (or x25992 (not x30692))
+:assumption (or x30509 x29791)
+:assumption (or x768 (not x31758))
+:assumption (or (not x964) (not x15779))
+:assumption (or x24654 x28867)
+:assumption (or (not x13238) x19102)
+:assumption (or (not x1081) (not x4127))
+:assumption (or (not x13253) x15986)
+:assumption (or x8762 x6594)
+:assumption (or (not x10197) (not x16276))
+:assumption (or (not x22690) x2133)
+:assumption (or (not x9573) (not x17278))
+:assumption (or (not x25376) x22619)
+:assumption (or x7617 (not x16652))
+:assumption (or x24277 (not x20693))
+:assumption (or (not x20517) (not x9439) x28774)
+:assumption (or (not x19207) (not x12928) x21484 (not x25064) (not x27484) (not x5590))
+:assumption (or (not x14239) x7887)
+:assumption (or x11995 x16068 x11792 (not x29929) (not x19719) x11442 (not x27357))
+:assumption (or x1393 (not x29434) (not x22539))
+:assumption (or x9872 (not x5570))
+:assumption (or (not x23950) x14455)
+:assumption (or x22531 x31001)
+:assumption (or (not x24495) (not x205))
+:assumption (or (not x17075) x6210)
+:assumption (or x14509 x10365)
+:assumption (or (not x22184) (not x27998))
+:assumption (or (not x21404) (not x6351) x11554)
+:assumption (or x11775 x15939)
+:assumption (or x13956 (not x27585))
+:assumption (or (not x28023) (not x28659))
+:assumption (or (not x2819) (not x31081))
+:assumption (or (not x24226) x7145 x30257 (not x15197) (not x25839) x1020)
+:assumption (or x30868 x2444)
+:assumption (or x11812 (not x16520))
+:assumption (or (not x20640) x21335)
+:assumption (or (not x19008) (not x2302))
+:assumption (or x24952 x22955 x18006)
+:assumption (or (not x24597) (not x15681))
+:assumption (or (not x21815) x16510 (not x25244) (not x23509) (not x4983) (not x480) x10909)
+:assumption (or (not x17440) (not x8140))
+:assumption (or x10684 (not x31175))
+:assumption (or x10064 (not x11858))
+:assumption (or (not x22557) (not x17923))
+:assumption (or (not x3979) x9843)
+:assumption (or (not x20368) x9283)
+:assumption (or x3491 (not x31689) (not x13028) x1648 (not x28498) x2722 (not x29375) x6610)
+:assumption (or (not x28973) (not x14610) x16677 x12741 (not x8037) x1547 x1582)
+:assumption (or x30607 x8331 (not x23464))
+:assumption (or x17359 (not x17219))
+:assumption (or x23395 x21298)
+:assumption (or (not x3656) x12727)
+:assumption (or x1393 (not x25708))
+:assumption (or x5166 (not x12592))
+:assumption (or x14415 x14166)
+:assumption (or (not x16436) x4785 (not x10633) x17614)
+:assumption (or (not x5073) x19992)
+:assumption (or (not x4113) (not x12536))
+:assumption (or (not x4750) x2425)
+:assumption (or x23372 x2089)
+:assumption (or (not x27081) (not x279))
+:assumption (or x3863 (not x13375))
+:assumption (or (not x1292) (not x1746) (not x29503) x13609 x20887)
+:assumption (or (not x21469) x20497 x2455 x26670)
+:assumption (or (not x23039) (not x30116))
+:assumption (or x28955 x23244)
+:assumption (or (not x29682) x23434)
+:assumption (or x8914 x21605)
+:assumption (or x19091 (not x30403))
+:assumption (or x24673 x15638)
+:assumption (or (not x12259) (not x20931))
+:assumption (or (not x13220) x11792)
+:assumption (or x14222 (not x19830))
+:assumption (or x14033 (not x18879))
+:assumption (or (not x18907) x21712 x20253 x21097 x16455 x8522 (not x28268) (not x13556))
+:assumption (or (not x3872) x1679)
+:assumption (or (not x3908) x19769)
+:assumption (or x31357 x6775)
+:assumption (or (not x21249) (not x23152))
+:assumption (or (not x948) x7463 x8915 (not x22673) x13576)
+:assumption (or x1687 x9820 (not x8326))
+:assumption (or (not x24068) (not x19352))
+:assumption (or (not x22664) (not x892))
+:assumption (or x25908 (not x19971))
+:assumption (or (not x11812) x16520)
+:assumption (or x30867 x19631)
+:assumption (or (not x4555) x1451)
+:assumption (or x1445 (not x20089))
+:assumption (or x31697 (not x28714))
+:assumption (or x4564 (not x19419) (not x23492) (not x14065) x18074)
+:assumption (or (not x15861) x13572)
+:assumption (or (not x25659) (not x9517))
+:assumption (or x27851 (not x23251))
+:assumption (or x142 (not x26628) x27537 (not x11648))
+:assumption (or x25726 (not x6506))
+:assumption (or x21478 x6486)
+:assumption (or (not x28190) (not x4268))
+:assumption (or (not x202) (not x1800))
+:assumption (or x29790 x30696)
+:assumption (or (not x6109) x3516)
+:assumption (or x9008 x932 x20471 (not x5373) x30149 x6917)
+:assumption (or x22338 x3001)
+:assumption (or (not x18618) x4304)
+:assumption (or x17104 (not x31704))
+:assumption (or x29439 x10753 x15929 x4512 x14762 x17436)
+:assumption (or (not x21194) (not x16003) (not x10510))
+:assumption (or x26081 (not x25484))
+:assumption (or (not x22266) x19036)
+:assumption (or x11397 (not x13801) (not x14347) (not x26762))
+:assumption (or x3719 x31618)
+:assumption (or x13674 (not x17125))
+:assumption (or (not x23880) x6984)
+:assumption (or x21423 (not x24954))
+:assumption (or (not x27242) x9798)
+:assumption (or x31127 x12666)
+:assumption (or x3569 (not x15847) x9008)
+:assumption (or x3252 (not x31457))
+:assumption (or (not x918) x4706)
+:assumption (or (not x29850) (not x17441))
+:assumption (or (not x30762) (not x3496))
+:assumption (or (not x22009) (not x18789))
+:assumption (or x28640 (not x8249))
+:assumption (or x767 x19428)
+:assumption (or x31561 (not x21126))
+:assumption (or (not x8002) (not x2856))
+:assumption (or x10933 (not x3510))
+:assumption (or x11329 x4809 x20343 x31294)
+:assumption (or x10934 (not x6149))
+:assumption (or (not x1250) (not x11470) (not x22844))
+:assumption (or (not x18682) (not x2495))
+:assumption (or x2133 x19853)
+:assumption (or x5799 (not x16846))
+:assumption (or (not x14721) (not x23012))
+:assumption (or x30813 x15917)
+:assumption (or (not x26385) x12296)
+:assumption (or x22603 x9706)
+:assumption (or (not x31327) x7548 (not x16880) (not x27666) x5135 x12228)
+:assumption (or (not x19939) (not x18547))
+:assumption (or x22221 (not x4783) x21690 x25594)
+:assumption (or x6844 (not x6788))
+:assumption (or (not x26248) (not x9008))
+:assumption (or (not x18470) (not x12943))
+:assumption (or (not x16275) (not x9744))
+:assumption (or x6723 x23442 (not x25593) (not x11499) x4000)
+:assumption (or x1108 (not x13733))
+:assumption (or (not x11792) (not x27114))
+:assumption (or x2555 (not x7344))
+:assumption (or x27366 x10435)
+:assumption (or x29690 x953 (not x31681))
+:assumption (or x16907 (not x23538))
+:assumption (or x12992 (not x10073))
+:assumption (or (not x4798) (not x12250))
+:assumption (or (not x26202) x28395)
+:assumption (or x21363 x14385)
+:assumption (or x3286 x25789)
+:assumption (or x29007 x22708)
+:assumption (or (not x9626) x2417)
+:assumption (or (not x13361) (not x28721))
+:assumption (or x20651 (not x9123) x1791 (not x21546))
+:assumption (or (not x14796) (not x12238))
+:assumption (or (not x18594) (not x8793))
+:assumption (or (not x9238) x14591)
+:assumption (or (not x28292) (not x16014))
+:assumption (or x18974 x3633)
+:assumption (or (not x6096) x6853)
+:assumption (or (not x9246) (not x23588))
+:assumption (or x22883 x19115)
+:assumption (or (not x12910) (not x11524))
+:assumption (or (not x29773) x23743 x18882 (not x8509) (not x4510) x5421 x23913 x18573 x28570 x2755)
+:assumption (or (not x5166) x18646)
+:assumption (or (not x24204) (not x23244))
+:assumption (or x15156 x28541)
+:assumption (or (not x21590) (not x28255))
+:assumption (or x20522 (not x21380))
+:assumption (or (not x20781) x26292)
+:assumption (or (not x21653) x22534 x11828)
+:assumption (or x26313 (not x1389) x1785 (not x22278))
+:assumption (or (not x7737) (not x18547) x25659 (not x6951))
+:assumption (or x23316 (not x14036))
+:assumption (or x14620 (not x18453) (not x30369) x25707 (not x7902) (not x20710) x20725 (not x20714))
+:assumption (or (not x25664) (not x30250))
+:assumption (or (not x8027) (not x672))
+:assumption (or (not x22165) x14839)
+:assumption (or (not x27986) (not x14249))
+:assumption (or x6699 (not x18336))
+:assumption (or (not x2856) (not x18391))
+:assumption (or x31919 (not x8050))
+:assumption (or (not x365) x20676)
+:assumption (or x18377 (not x1741))
+:assumption (or x28894 x26432)
+:assumption (or (not x13519) x30796)
+:assumption (or (not x7159) x18029)
+:assumption (or (not x21510) (not x8690))
+:assumption (or (not x24423) x5437)
+:assumption (or x24974 (not x30119))
+:assumption (or x26701 (not x4186))
+:assumption (or x25735 x24120 (not x8002))
+:assumption (or (not x30582) x14884)
+:assumption (or (not x9412) (not x15223) (not x24827) (not x24071) (not x4941))
+:assumption (or x15621 (not x10958) (not x10692) (not x19252))
+:assumption (or x29817 (not x18179))
+:assumption (or (not x18115) (not x12474))
+:assumption (or (not x24865) x7178)
+:assumption (or x15028 x4855 x30219 (not x10469))
+:assumption (or x24252 x14507)
+:assumption (or x25309 (not x6141))
+:assumption (or x22077 (not x25366))
+:assumption (or x7069 x22430)
+:assumption (or (not x29210) (not x14113) (not x4213))
+:assumption (or x21810 x30942 (not x8623))
+:assumption (or x3503 x25108)
+:assumption (or x20460 (not x27813))
+:assumption (or (not x27880) x5528 (not x13318))
+:assumption (or x12004 (not x14249))
+:assumption (or (not x31884) x20264)
+:assumption (or x5639 x18662)
+:assumption (or x26803 (not x20112))
+:assumption (or (not x14502) x12292)
+:assumption (or x29384 x9658)
+:assumption (or (not x8461) x26298)
+:assumption (or x6634 x2630)
+:assumption (or x12968 (not x15799))
+:assumption (or x26389 x10632)
+:assumption (or x11912 (not x23811))
+:assumption (or (not x31681) (not x17116) (not x25871))
+:assumption (or (not x24795) (not x11315))
+:assumption (or x11222 x20702)
+:assumption (or x12381 x30636 (not x8961) (not x13460) x10219)
+:assumption (or (not x15918) (not x27507))
+:assumption (or (not x30734) (not x21811))
+:assumption (or x16904 x513 (not x28364) x4988)
+:assumption (or x12832 x19025)
+:assumption (or x5167 x22062)
+:assumption (or (not x23060) x9954)
+:assumption (or x26482 (not x29674))
+:assumption (or (not x26079) (not x28328))
+:assumption (or x28912 (not x18429))
+:assumption (or x30780 (not x730))
+:assumption (or (not x28307) x28549)
+:assumption (or (not x642) (not x31656))
+:assumption (or (not x29312) x24756 x14400 x31574)
+:assumption (or x13407 x4504 (not x18016) (not x24659))
+:assumption (or x25409 (not x23424))
+:assumption (or (not x3288) x10679)
+:assumption (or (not x10899) x22479)
+:assumption (or (not x11300) (not x12732))
+:assumption (or (not x1113) (not x30843) (not x12045) x23563 x16057 (not x21850) x26605 (not x7796))
+:assumption (or x30954 (not x19428) x6819 x6562 (not x24079))
+:assumption (or x23447 (not x20482))
+:assumption (or x22172 x1771)
+:assumption (or (not x22719) (not x25224) x17160 (not x3365) (not x6528))
+:assumption (or x9640 (not x28181) x19940 x26247 (not x28466) (not x10072))
+:assumption (or (not x28480) x18687)
+:assumption (or (not x8002) x23244 x8417)
+:assumption (or (not x20438) x21241)
+:assumption (or x5824 x20010)
+:assumption (or (not x2134) x24149)
+:assumption (or x5010 (not x26371))
+:assumption (or (not x7516) x21298)
+:assumption (or (not x10258) (not x28692) (not x574) (not x19864))
+:assumption (or (not x20303) (not x1900))
+:assumption (or x13091 (not x27063))
+:assumption (or x24603 x9807 (not x30274) (not x2415) x9409)
+:assumption (or x21298 (not x11002))
+:assumption (or (not x17390) x25359)
+:assumption (or (not x8171) x13928)
+:assumption (or (not x29855) x13619)
+:assumption (or (not x20562) (not x30966))
+:assumption (or x22889 (not x6095))
+:assumption (or x25422 x1564 (not x18003))
+:assumption (or (not x13956) (not x20400))
+:assumption (or (not x25783) x4799)
+:assumption (or (not x14589) x13317)
+:assumption (or x23534 x8470)
+:assumption (or (not x1325) (not x10773))
+:assumption (or x20984 (not x10874))
+:assumption (or (not x24042) x23099)
+:assumption (or x15541 (not x23244))
+:assumption (or (not x18329) (not x2163) (not x22311) (not x14784) x3578)
+:assumption (or x12483 (not x5406))
+:assumption (or x5267 x15407 (not x14290) x9008 (not x27919) x13009)
+:assumption (or (not x20087) (not x3020))
+:assumption (or x24072 x31670)
+:assumption (or (not x9464) x5388)
+:assumption (or (not x9008) x5272)
+:assumption (or x366 x6531)
+:assumption (or x29951 x25416)
+:assumption (or x25928 x12620)
+:assumption (or (not x5037) x1872)
+:assumption (or x7173 x3243)
+:assumption (or (not x9008) (not x23190))
+:assumption (or x26397 x13939 (not x19209) (not x8046) x25073 x14742 (not x21583))
+:assumption (or x7107 x25251)
+:assumption (or x10664 (not x25484))
+:assumption (or (not x14212) (not x28113))
+:assumption (or x288 x25579)
+:assumption (or x2781 (not x17136))
+:assumption (or (not x8002) x31490 x5843)
+:assumption (or x28023 x4802)
+:assumption (or x3712 x108)
+:assumption (or x14347 (not x5141) (not x3460))
+:assumption (or (not x23615) x7814 x28991)
+:assumption (or x27947 (not x10851))
+:assumption (or x14600 x26317)
+:assumption (or (not x16828) (not x13244))
+:assumption (or (not x15034) x5100)
+:assumption (or (not x24659) (not x31912))
+:assumption (or (not x1547) (not x25086))
+:assumption (or (not x30208) (not x9085))
+:assumption (or x20398 x1301)
+:assumption (or (not x22913) (not x15962))
+:assumption (or x5222 x5394)
+:assumption (or x16653 (not x7200))
+:assumption (or (not x9544) (not x8961) (not x14092) x15115 x6876)
+:assumption (or (not x12347) x26567)
+:assumption (or x9790 (not x24359))
+:assumption (or x8658 (not x17325))
+:assumption (or (not x21416) (not x24109))
+:assumption (or (not x21697) x7442)
+:assumption (or x3758 x4839)
+:assumption (or x23244 (not x26205))
+:assumption (or (not x2133) x23713 (not x2186))
+:assumption (or (not x7959) x18280)
+:assumption (or (not x2707) x18676 x6644 (not x6841))
+:assumption (or x30407 (not x15189))
+:assumption (or (not x28845) (not x4834))
+:assumption (or (not x20682) (not x2127))
+:assumption (or (not x480) (not x22855) x27068 (not x11609))
+:assumption (or x7380 (not x8002))
+:assumption (or x1262 (not x16558) (not x6814) x7442 x14597)
+:assumption (or x17460 x21106)
+:assumption (or (not x22239) x2215)
+:assumption (or (not x23569) (not x27204))
+:assumption (or x8609 (not x5133))
+:assumption (or (not x23325) (not x25184))
+:assumption (or (not x25683) (not x9451))
+:assumption (or (not x19748) (not x5446))
+:assumption (or (not x14458) x19473)
+:assumption (or (not x2652) x14424)
+:assumption (or x20642 (not x25648))
+:assumption (or x31145 (not x30497))
+:assumption (or x12662 (not x22172) (not x29141) (not x699))
+:assumption (or (not x9585) x17902)
+:assumption (or (not x16102) x13787)
+:assumption (or (not x2655) (not x28541))
+:assumption (or x8652 x23763 (not x199))
+:assumption (or (not x2035) x19241)
+:assumption (or (not x3866) (not x30402) (not x18694))
+:assumption (or x2906 x611)
+:assumption (or x3564 x18109)
+:assumption (or (not x11448) (not x22175))
+:assumption (or (not x23114) (not x17748))
+:assumption (or (not x10346) (not x20385))
+:assumption (or x19024 x13700)
+:assumption (or (not x19444) (not x20353))
+:assumption (or x13378 (not x18172))
+:assumption (or (not x15600) (not x18755))
+:assumption (or (not x27693) (not x26897))
+:assumption (or x8228 (not x29109))
+:assumption (or (not x20369) x16888)
+:assumption (or x9004 x9901)
+:assumption (or x28439 x12868)
+:assumption (or (not x1934) x10766)
+:assumption (or x31329 (not x25008))
+:assumption (or (not x11075) x24966)
+:assumption (or x15698 (not x1787))
+:assumption (or x13722 x2675 x31391 x21689 x31811)
+:assumption (or (not x14839) x14434 (not x25908))
+:assumption (or (not x14366) x18422)
+:assumption (or (not x27009) x31767)
+:assumption (or (not x26982) x5862 x10342 (not x7903) (not x8358) (not x27521))
+:assumption (or x21653 (not x5409) (not x24655))
+:assumption (or x3696 (not x3377))
+:assumption (or x9025 x17137)
+:assumption (or x8919 x16876)
+:assumption (or (not x12913) x18562)
+:assumption (or (not x12628) x28875)
+:assumption (or (not x24756) x15045)
+:assumption (or x6369 (not x6036))
+:assumption (or (not x21846) (not x31704))
+:assumption (or (not x7252) (not x25396))
+:assumption (or x31608 x1410)
+:assumption (or x9760 (not x15903))
+:assumption (or x314 (not x9489))
+:assumption (or (not x25659) x12748)
+:assumption (or (not x22875) (not x20672))
+:assumption (or (not x11195) (not x9855))
+:assumption (or x25496 x18886)
+:assumption (or x15557 (not x28225))
+:assumption (or x22187 (not x6262))
+:assumption (or (not x11103) (not x5886))
+:assumption (or (not x1798) (not x2613))
+:assumption (or (not x20199) x12199 (not x12920) (not x24387) x14963)
+:assumption (or x480 x25869 x22855 x27783)
+:assumption (or x8811 (not x2868))
+:assumption (or (not x9613) x12505)
+:assumption (or (not x27796) (not x25659))
+:assumption (or x12703 x1008)
+:assumption (or x8199 (not x9163))
+:assumption (or x12771 x28539)
+:assumption (or (not x16566) (not x29522))
+:assumption (or x3491 (not x28211) x12921 x11494 x30408)
+:assumption (or x10650 (not x6554) x30248 x14435)
+:assumption (or (not x17225) x10836)
+:assumption (or (not x21891) x18946)
+:assumption (or x10513 (not x23218))
+:assumption (or x29249 x5979)
+:assumption (or (not x29404) x20754)
+:assumption (or x7377 (not x18704) x10172 (not x16524) x1383 x10724 (not x18294) x11451)
+:assumption (or x11836 (not x16958))
+:assumption (or x18500 x17584)
+:assumption (or (not x20900) (not x31734))
+:assumption (or (not x24486) (not x17075))
+:assumption (or (not x10632) (not x11268) x16510 (not x22778) (not x29534))
+:assumption (or x13150 (not x239))
+:assumption (or (not x31836) (not x10223))
+:assumption (or x15015 (not x26412))
+:assumption (or x13728 x18089)
+:assumption (or x14442 x17302)
+:assumption (or x29670 x4959)
+:assumption (or (not x29959) x30091 (not x22098) x26670)
+:assumption (or x23881 x17290 (not x31892) (not x26608))
+:assumption (or x3157 x4662)
+:assumption (or (not x13018) (not x19257))
+:assumption (or x18846 x6969 (not x4478) x29954)
+:assumption (or (not x2938) (not x19313))
+:assumption (or x2648 x12765)
+:assumption (or x16975 (not x3242))
+:assumption (or (not x5902) x12733)
+:assumption (or (not x17286) x8435)
+:assumption (or x22959 x22373)
+:assumption (or x29139 (not x29340))
+:assumption (or (not x14160) x22631)
+:assumption (or x4900 x4401)
+:assumption (or x14455 x21950)
+:assumption (or x136 (not x10909) x17013)
+:assumption (or x6023 x8199)
+:assumption (or (not x29795) x22618)
+:assumption (or x19440 x30247)
+:assumption (or x2592 (not x21757))
+:assumption (or (not x6423) (not x23181))
+:assumption (or x10734 (not x23645))
+:assumption (or x17836 x12709 x14839 x26210)
+:assumption (or (not x31811) (not x25229))
+:assumption (or (not x26845) (not x7957))
+:assumption (or x12045 (not x6786))
+:assumption (or x6020 (not x15261))
+:assumption (or x26271 x31748 (not x1542) x26120)
+:assumption (or x3576 (not x13662) x20599 x7708 (not x16149) (not x25024))
+:assumption (or x27025 (not x22135))
+:assumption (or (not x18287) x18271)
+:assumption (or (not x18139) (not x16644))
+:assumption (or (not x3747) x24910)
+:assumption (or x11004 (not x28014))
+:assumption (or (not x30281) x10790 (not x5528) x13901 x15032 (not x16289))
+:assumption (or x138 (not x10760) (not x17440) (not x5508))
+:assumption (or (not x20482) x4694)
+:assumption (or x16223 (not x12528))
+:assumption (or (not x24348) (not x15521))
+:assumption (or (not x20222) (not x918) (not x19958) x9051 (not x30572) x30782 (not x23353) x17068)
+:assumption (or (not x24633) (not x12112))
+:assumption (or x10021 (not x27732))
+:assumption (or (not x11384) x6381 x16604 x23678 x27341)
+:assumption (or x5943 (not x25407))
+:assumption (or (not x15028) (not x30219))
+:assumption (or x2686 x11488 (not x25128) x23101 (not x11570) x29801 x11345 (not x14766))
+:assumption (or (not x13438) (not x12835))
+:assumption (or x3324 (not x24893) x21592 (not x21772))
+:assumption (or (not x29497) x14062)
+:assumption (or x30361 (not x28242))
+:assumption (or (not x26938) x13434)
+:assumption (or x25351 x8002 x18250)
+:assumption (or x9930 x23244 x13956 x8002 x18369 (not x18949))
+:assumption (or x18568 (not x7730))
+:assumption (or (not x15689) (not x3738))
+:assumption (or x22137 (not x17980))
+:assumption (or x19154 (not x15411) (not x4828) (not x16707))
+:assumption (or x9709 (not x3386))
+:assumption (or (not x31696) (not x13904) (not x28648) x17616)
+:assumption (or (not x9619) (not x29777))
+:assumption (or (not x29544) (not x8145))
+:assumption (or x21970 x14522 x3555 (not x8649))
+:assumption (or (not x29497) (not x18654))
+:assumption (or (not x14510) (not x27076))
+:assumption (or x9117 (not x22963) (not x28357) x19822)
+:assumption (or x30264 (not x17467))
+:assumption (or (not x29311) (not x7329))
+:assumption (or (not x28420) (not x26741))
+:assumption (or (not x28219) (not x21129))
+:assumption (or (not x8907) (not x21298) (not x14200) x26674)
+:assumption (or (not x15694) x3671)
+:assumption (or x24881 x19233)
+:assumption (or (not x25927) (not x29278))
+:assumption (or x5765 (not x20449))
+:assumption (or x17932 x25833)
+:assumption (or x17434 (not x14558) (not x29369) x21371 (not x2749) (not x22637))
+:assumption (or (not x23244) (not x3424))
+:assumption (or (not x15702) (not x18097))
+:assumption (or x26146 (not x8229))
+:assumption (or x12523 (not x11768))
+:assumption (or (not x25891) (not x3593))
+:assumption (or x8345 (not x6285))
+:assumption (or x22183 (not x25028))
+:assumption (or x27998 (not x3128))
+:assumption (or (not x21491) (not x4124))
+:assumption (or (not x15553) (not x7796))
+:assumption (or (not x29930) (not x1173))
+:assumption (or x14034 x2876 (not x16328) x9064 x3005 (not x19840))
+:assumption (or x3194 x9009)
+:assumption (or (not x29248) x908)
+:assumption (or x7048 (not x19038))
+:assumption (or (not x23740) (not x4560))
+:assumption (or (not x30467) (not x31005))
+:assumption (or (not x28830) x5901 (not x8493) x31565)
+:assumption (or x14521 x15361)
+:assumption (or x9205 (not x12893))
+:assumption (or x3722 x9531)
+:assumption (or (not x16061) x17621)
+:assumption (or (not x11947) (not x8002))
+:assumption (or (not x7304) (not x202))
+:assumption (or (not x31282) (not x20748))
+:assumption (or x31587 x9802)
+:assumption (or x28283 (not x13356))
+:assumption (or x8035 x21432)
+:assumption (or (not x22675) (not x28242))
+:assumption (or (not x11329) (not x6763))
+:assumption (or x16170 (not x28885))
+:assumption (or x12793 (not x29851))
+:assumption (or (not x23475) x15118)
+:assumption (or x10508 x9547)
+:assumption (or x13236 x14830)
+:assumption (or x16025 (not x13815))
+:assumption (or (not x6592) (not x8120))
+:assumption (or x27646 x5111)
+:assumption (or x24188 (not x20534))
+:assumption (or (not x30761) (not x15034) x20578 x21621)
+:assumption (or x3391 x15451 x16298)
+:assumption (or x202 x10608)
+:assumption (or x7410 (not x7094))
+:assumption (or (not x4491) x24787 x23194)
+:assumption (or (not x24921) x6596 x21653)
+:assumption (or x25133 x5877)
+:assumption (or x16248 x31101 (not x11219) (not x7073))
+:assumption (or (not x22431) x29748)
+:assumption (or (not x26826) x1297)
+:assumption (or x16374 x13314)
+:assumption (or (not x29285) (not x10064))
+:assumption (or x17609 (not x16773))
+:assumption (or x19711 (not x12344))
+:assumption (or x7958 x28187)
+:assumption (or x25984 (not x200))
+:assumption (or (not x8002) (not x1493))
+:assumption (or (not x23386) (not x23110))
+:assumption (or (not x31575) x27299)
+:assumption (or x13093 (not x3546))
+:assumption (or (not x24298) (not x24909))
+:assumption (or (not x20559) x7114)
+:assumption (or x9787 (not x22449) (not x20882) (not x21298))
+:assumption (or x13351 (not x105))
+:assumption (or x13866 (not x10914))
+:assumption (or (not x16907) x11051)
+:assumption (or x28249 x18685)
+:assumption (or (not x31162) x18077)
+:assumption (or (not x15073) (not x18353))
+:assumption (or x414 (not x23244) x30954)
+:assumption (or x29164 x24155)
+:assumption (or (not x27022) x4676)
+:assumption (or x1621 x15033)
+:assumption (or x6969 x17034 (not x2330))
+:assumption (or x22116 x13676)
+:assumption (or (not x4026) (not x7356))
+:assumption (or (not x13095) (not x29913))
+:assumption (or x13728 x19490)
+:assumption (or x22654 x2774)
+:assumption (or (not x31368) (not x22108))
+:assumption (or (not x9960) (not x4209))
+:assumption (or x8499 x9365)
+:assumption (or x6196 x3315)
+:assumption (or (not x6333) x12308 (not x9267))
+:assumption (or x4116 x15069)
+:assumption (or x8602 (not x7704))
+:assumption (or (not x20250) (not x26895))
+:assumption (or x3543 (not x24080))
+:assumption (or x5416 (not x6851))
+:assumption (or x11027 (not x14232))
+:assumption (or x16239 (not x22865) x22171 x13948 (not x9748) (not x2016))
+:assumption (or x31548 (not x25116))
+:assumption (or x10349 (not x7433))
+:assumption (or x14810 (not x19864))
+:assumption (or x24617 (not x23952))
+:assumption (or x26163 x25412)
+:assumption (or x7183 x6149)
+:assumption (or (not x30334) (not x10678))
+:assumption (or (not x20651) x8722 x23801 x6440)
+:assumption (or (not x26188) x25659)
+:assumption (or x17651 x27361)
+:assumption (or x8085 x1520 (not x11375))
+:assumption (or (not x10452) (not x9381))
+:assumption (or (not x8602) (not x6711))
+:assumption (or (not x27060) (not x5220) (not x14696) x20200)
+:assumption (or (not x11215) (not x27415))
+:assumption (or x5528 (not x21590) (not x13725))
+:assumption (or (not x7263) (not x30733))
+:assumption (or (not x26851) x9113)
+:assumption (or (not x3951) x20213)
+:assumption (or x29272 (not x24960))
+:assumption (or x26298 x15958)
+:assumption (or x6595 x17351)
+:assumption (or x16922 x13597)
+:assumption (or (not x1603) (not x16910))
+:assumption (or (not x16352) x42)
+:assumption (or x8282 (not x16096))
+:assumption (or x5329 (not x24713))
+:assumption (or (not x5528) x16362 x10335 (not x9008) x13141)
+:assumption (or x21343 x4765)
+:assumption (or x6744 x22154 (not x5528) x6783 (not x9008))
+:assumption (or x20060 (not x24905))
+:assumption (or x1183 (not x4365))
+:assumption (or x22855 x10855 x18096)
+:assumption (or (not x14347) x24729)
+:assumption (or x30048 x8905)
+:assumption (or x28912 (not x18725))
+:assumption (or x6951 x15398 (not x357) (not x19263) x31023 x8900)
+:assumption (or x23498 x5028 (not x29442) (not x4555))
+:assumption (or x807 x633)
+:assumption (or (not x23250) (not x5905))
+:assumption (or x5528 x30322)
+:assumption (or (not x18943) x19254)
+:assumption (or (not x8560) (not x2722))
+:assumption (or (not x11810) x126)
+:assumption (or x8264 x21466)
+:assumption (or x2936 (not x21992))
+:assumption (or x13242 x4172)
+:assumption (or (not x11851) x18683)
+:assumption (or x5721 (not x25659))
+:assumption (or x31596 (not x14964))
+:assumption (or x18500 x7090)
+:assumption (or x10327 x9701)
+:assumption (or (not x26102) (not x3933))
+:assumption (or x10379 x17382)
+:assumption (or (not x25440) (not x22295) (not x21680) x12571 (not x14866) x26995)
+:assumption (or (not x10256) x8127)
+:assumption (or (not x890) x918 x31829 x30475)
+:assumption (or (not x27) x16802)
+:assumption (or x6643 (not x19735))
+:assumption (or x27989 (not x693))
+:assumption (or (not x11164) x17618)
+:assumption (or x3337 (not x6526))
+:assumption (or x27435 x4927)
+:assumption (or (not x28324) (not x28242))
+:assumption (or (not x29865) x21151)
+:assumption (or (not x30953) (not x9423))
+:assumption (or (not x20911) (not x4691) x14399 x14267 x16819 (not x17814))
+:assumption (or x21073 x31837)
+:assumption (or (not x28742) x18262)
+:assumption (or x18996 x7368)
+:assumption (or (not x25366) x14466)
+:assumption (or x19828 x17809)
+:assumption (or (not x7242) x24640)
+:assumption (or x6191 (not x21963))
+:assumption (or x26737 (not x23190))
+:assumption (or x19184 (not x6971))
+:assumption (or x5493 x22885)
+:assumption (or (not x31330) (not x28885))
+:assumption (or (not x7537) x18838)
+:assumption (or (not x18458) (not x5771))
+:assumption (or x26509 (not x30667))
+:assumption (or (not x9008) x3849 (not x22910))
+:assumption (or (not x14454) (not x28945) (not x9008))
+:assumption (or x12210 x17761)
+:assumption (or (not x4875) x5242)
+:assumption (or x12672 (not x18053) (not x15444))
+:assumption (or (not x16526) (not x29150))
+:assumption (or (not x12273) x15276)
+:assumption (or x2058 x6300 x13441 x30266 x8908 x9008)
+:assumption (or x24626 (not x6355))
+:assumption (or x21724 (not x3312))
+:assumption (or (not x16577) (not x762))
+:assumption (or (not x16739) (not x26670))
+:assumption (or (not x12119) x5149)
+:assumption (or x16486 x21858)
+:assumption (or (not x7087) x20283)
+:assumption (or x15422 x21540)
+:assumption (or x561 (not x7988))
+:assumption (or (not x16961) (not x30983))
+:assumption (or (not x5374) x10401)
+:assumption (or (not x432) x14778)
+:assumption (or x12511 x21968)
+:assumption (or (not x19889) x19133 x16648 x21964)
+:assumption (or (not x9493) (not x9008))
+:assumption (or x15408 x3895)
+:assumption (or (not x26284) x14850 (not x13018) x23244 (not x8002))
+:assumption (or (not x18694) x15232 x9442)
+:assumption (or (not x7062) (not x15795))
+:assumption (or x29772 (not x9620) (not x19992))
+:assumption (or (not x1393) x23216)
+:assumption (or (not x22901) (not x8747))
+:assumption (or (not x1364) (not x2117) (not x30134) (not x20462))
+:assumption (or (not x25869) (not x27783))
+:assumption (or (not x28242) x7957 x26845)
+:assumption (or (not x3494) (not x18069) (not x26357) (not x31223))
+:assumption (or x11068 (not x11001))
+:assumption (or (not x25045) (not x29535))
+:assumption (or x1617 x9393)
+:assumption (or x4044 (not x12932))
+:assumption (or x10293 (not x23247))
+:assumption (or x20622 x29492)
+:assumption (or (not x17947) (not x827) (not x8348))
+:assumption (or x8193 (not x17159))
+:assumption (or (not x28076) x7491)
+:assumption (or x18326 (not x8602))
+:assumption (or (not x24515) (not x24811))
+:assumption (or x12721 (not x17383))
+:assumption (or (not x13956) (not x19809))
+:assumption (or x20945 x5288)
+:assumption (or (not x14254) x21420 x30026 (not x21090))
+:assumption (or (not x15404) x10344)
+:assumption (or (not x25396) x22531)
+:assumption (or (not x20805) (not x7329))
+:assumption (or x16852 x19162)
+:assumption (or (not x8501) x6534)
+:assumption (or x20961 x21946)
+:assumption (or (not x5336) (not x11527))
+:assumption (or (not x7542) x5920 (not x12013))
+:assumption (or (not x14637) x24777)
+:assumption (or x24994 (not x2123))
+:assumption (or (not x5274) x15010 x26221 (not x19934) x23488)
+:assumption (or (not x30075) (not x3550))
+:assumption (or (not x3155) (not x25301))
+:assumption (or x8307 x15196)
+:assumption (or (not x6835) x1052)
+:assumption (or (not x13058) (not x23423) x19992 (not x7539))
+:assumption (or x2478 x9948)
+:assumption (or (not x18565) (not x9339))
+:assumption (or (not x16117) x20770)
+:assumption (or (not x5920) x7542)
+:assumption (or (not x9008) (not x15370))
+:assumption (or (not x14333) (not x30877))
+:assumption (or (not x1492) (not x25750))
+:assumption (or (not x21780) x26107)
+:assumption (or (not x18567) (not x2776) (not x31309) (not x5985) x31824 (not x20381))
+:assumption (or x31139 (not x20267))
+:assumption (or x20087 (not x9025) x13167)
+:assumption (or x27336 (not x3161))
+:assumption (or (not x10742) x6776)
+:assumption (or (not x28697) (not x9008) (not x22105))
+:assumption (or x19092 x22557)
+:assumption (or (not x14570) x17677)
+:assumption (or (not x17026) x10949)
+:assumption (or x19842 x24827)
+:assumption (or (not x27912) (not x24718))
+:assumption (or x9211 x4240)
+:assumption (or x736 x29183)
+:assumption (or x22070 x3823)
+:assumption (or (not x9425) (not x27377))
+:assumption (or (not x14467) (not x19862))
+:assumption (or (not x24115) (not x19165))
+:assumption (or x17652 (not x4745))
+:assumption (or x23171 (not x15795))
+:assumption (or x31239 (not x2912) (not x21525) x7059)
+:assumption (or x25421 (not x19752))
+:assumption (or (not x15743) (not x27569))
+:assumption (or x19436 (not x15171))
+:assumption (or (not x19395) (not x18745))
+:assumption (or (not x6562) x17441 x26253 x24079 x12375 (not x3092))
+:assumption (or (not x2481) x23170)
+:assumption (or x24683 (not x30636))
+:assumption (or x17328 x17733 (not x11857))
+:assumption (or (not x17572) (not x2061))
+:assumption (or x12357 (not x30040))
+:assumption (or x8691 (not x5289))
+:assumption (or (not x20357) (not x27854) x5750 (not x7083) (not x31634) (not x23580) x1298 (not x10555))
+:assumption (or x5232 x20286)
+:assumption (or (not x22855) (not x5159))
+:assumption (or (not x11378) x17350)
+:assumption (or x20878 x8476)
+:assumption (or x5394 (not x15028))
+:assumption (or x11744 (not x8722))
+:assumption (or x27387 (not x27998) (not x2288) (not x4986))
+:assumption (or x24722 (not x12799) x15086 (not x29884) (not x5030) (not x22245))
+:assumption (or (not x485) (not x6994) x3008 (not x18237) x23444 (not x16781))
+:assumption (or (not x5099) x12620)
+:assumption (or (not x28835) (not x2603))
+:assumption (or (not x2081) x15720)
+:assumption (or x31346 (not x22495) x22306)
+:assumption (or (not x5550) x24931)
+:assumption (or (not x10877) x7223)
+:assumption (or (not x2701) (not x31277))
+:assumption (or x22575 x16393)
+:assumption (or (not x18859) x30641)
+:assumption (or x25084 x23130)
+:assumption (or x15795 (not x31245))
+:assumption (or (not x29919) x12923)
+:assumption (or x23157 (not x1336))
+:assumption (or x31202 x30607)
+:assumption (or (not x17912) (not x24632))
+:assumption (or (not x21738) x29959)
+:assumption (or x907 (not x8602) (not x30320))
+:assumption (or x14758 (not x8603))
+:assumption (or (not x23927) (not x9561))
+:assumption (or (not x13063) (not x19709))
+:assumption (or (not x30200) (not x17080))
+:assumption (or x3639 x26432 (not x8902) (not x1136) x16510)
+:assumption (or (not x28439) x17542)
+:assumption (or (not x16364) x25076)
+:assumption (or x10452 x14298 x25659)
+:assumption (or (not x20345) x10516)
+:assumption (or (not x1648) x28211)
+:assumption (or x25687 (not x26303))
+:assumption (or x19152 x8026 x19676 x19529 x18036 (not x28636))
+:assumption (or (not x20256) (not x26754))
+:assumption (or (not x15828) x30698)
+:assumption (or x29312 x8149)
+:assumption (or (not x27457) (not x21205))
+:assumption (or x20509 x21753 (not x24600) (not x9159) (not x14265))
+:assumption (or x9300 x28283 x4504)
+:assumption (or (not x3278) x15868)
+:assumption (or (not x30826) x14878)
+:assumption (or (not x29137) x27519 (not x6690) x19826 (not x5862))
+:assumption (or (not x11639) x22223 (not x6810) (not x23117) x499 (not x24917))
+:assumption (or (not x7708) x13662)
+:assumption (or x1076 (not x17075) x218)
+:assumption (or x21315 (not x30932))
+:assumption (or x20211 x28982 (not x321) x16071 x5975 (not x29875) (not x3330) x29116)
+:assumption (or (not x22200) (not x10746))
+:assumption (or (not x8002) x26473)
+:assumption (or x29795 x8602 (not x9660))
+:assumption (or (not x26171) x16804)
+:assumption (or (not x630) (not x31625) (not x3570) x14990 (not x2610) (not x9094) (not x22273) x9204 (not x20317))
+:assumption (or (not x805) (not x23158))
+:assumption (or (not x20134) (not x24489))
+:assumption (or (not x23724) x13426)
+:assumption (or (not x2536) (not x10168) (not x25328) (not x18109) x9531 (not x15563))
+:assumption (or x4301 (not x8566))
+:assumption (or x21247 (not x6879))
+:assumption (or x5823 (not x6576))
+:assumption (or (not x6990) (not x30294))
+:assumption (or x16271 x24853 x23560)
+:assumption (or x20009 x2396)
+:assumption (or (not x9214) x16510)
+:assumption (or (not x28296) (not x18822) x7852 x1524 x28381)
+:assumption (or (not x9596) x3360)
+:assumption (or (not x25366) x6133 (not x18872) (not x11925))
+:assumption (or (not x10528) (not x1946))
+:assumption (or (not x23552) x27998 (not x15227))
+:assumption (or x29671 x27633)
+:assumption (or (not x13956) x31743)
+:assumption (or x14494 x18261)
+:assumption (or (not x13393) x15102)
+:assumption (or x11259 x24294 x25686 (not x6977) x15067)
+:assumption (or (not x5465) (not x30489))
+:assumption (or x17359 (not x3796))
+:assumption (or (not x16341) (not x28037))
+:assumption (or (not x3499) (not x29082))
+:assumption (or x23399 x20779)
+:assumption (or x19710 (not x16910) (not x21831))
+:assumption (or x22027 x717)
+:assumption (or x1715 x6855)
+:assumption (or (not x28885) (not x5717))
+:assumption (or (not x30007) x18901)
+:assumption (or (not x15500) (not x66))
+:assumption (or x7889 (not x23244))
+:assumption (or x20296 x9025)
+:assumption (or x9058 x5528)
+:assumption (or x5528 x8495)
+:assumption (or (not x28573) x13847)
+:assumption (or (not x25999) x19976)
+:assumption (or x29649 x3916)
+:assumption (or x2500 x11884 (not x6746))
+:assumption (or (not x18218) (not x5674))
+:assumption (or x29935 (not x23244))
+:assumption (or (not x1649) (not x12301))
+:assumption (or x31777 x24317)
+:assumption (or (not x16185) x27702)
+:assumption (or x10597 x11754)
+:assumption (or x31134 x20659)
+:assumption (or x16967 x4366)
+:assumption (or (not x6771) (not x16346))
+:assumption (or (not x1454) (not x19147))
+:assumption (or x31293 x23423)
+:assumption (or (not x19407) (not x28514))
+:assumption (or x26030 x17306)
+:assumption (or (not x14432) x19144)
+:assumption (or (not x25665) x17174)
+:assumption (or (not x142) x19736 (not x5710))
+:assumption (or (not x26670) x964 (not x8062))
+:assumption (or (not x27719) (not x191))
+:assumption (or x15224 (not x11071) (not x28469))
+:assumption (or x28885 x11605)
+:assumption (or (not x9279) x6184)
+:assumption (or x4941 x30113)
+:assumption (or x18280 x16774)
+:assumption (or (not x21524) (not x1147) (not x26916) (not x13162) (not x17951) x24904)
+:assumption (or x26128 x771)
+:assumption (or (not x1424) x27127)
+:assumption (or x28154 x29852)
+:assumption (or (not x18344) x21241)
+:assumption (or x28694 x5076)
+:assumption (or (not x27021) x28823)
+:assumption (or (not x14877) x26640)
+:assumption (or x11274 (not x12319) x2505)
+:assumption (or x26452 (not x2738))
+:assumption (or x18380 (not x17518) (not x7123) x26915 x9804 (not x29721))
+:assumption (or x13304 (not x4858))
+:assumption (or x30513 (not x3103) x25659)
+:assumption (or x20973 x14357)
+:assumption (or x5475 (not x11110))
+:assumption (or (not x30525) x21856 x21653)
+:assumption (or (not x9230) (not x12370))
+:assumption (or x6898 (not x28973) (not x28936) x1582)
+:assumption (or x24817 (not x22847))
+:assumption (or (not x5528) (not x18847))
+:assumption (or (not x16374) (not x14455) (not x13314) x873 (not x21955))
+:assumption (or x12407 (not x14607))
+:assumption (or (not x28862) x19971)
+:assumption (or (not x30954) (not x502) x19428 (not x16918))
+:assumption (or (not x8041) x18351)
+:assumption (or (not x30633) x23496 x19465)
+:assumption (or x13893 (not x7443))
+:assumption (or x27756 (not x8518))
+:assumption (or (not x29474) (not x27973))
+:assumption (or x25990 x28541)
+:assumption (or (not x25911) (not x28974))
+:assumption (or (not x16048) (not x18770))
+:assumption (or (not x521) x12391)
+:assumption (or x570 x15992)
+:assumption (or x19305 x2968 x23104 x23958)
+:assumption (or (not x30553) x16613)
+:assumption (or (not x12811) x14389 x14153 (not x12176) (not x17435) x25310)
+:assumption (or (not x18441) (not x5145))
+:assumption (or (not x29250) x21650)
+:assumption (or (not x24181) x16599 (not x2682) (not x3998) (not x404))
+:assumption (or x19505 (not x29155))
+:assumption (or (not x6754) x23029 (not x24722))
+:assumption (or x3142 (not x9531) x1547 x4460)
+:assumption (or x5886 x8961 (not x30261) x30979)
+:assumption (or x30028 x9941)
+:assumption (or (not x18087) x20027)
+:assumption (or x30006 x25700 x1491 x29466 x5962)
+:assumption (or (not x4931) x14839)
+:assumption (or x26074 (not x4155))
+:assumption (or x19599 (not x20354))
+:assumption (or x8062 x26670)
+:assumption (or x1331 (not x11530))
+:assumption (or x20782 x31741)
+:assumption (or x2034 (not x9479))
+:assumption (or x17602 x24207)
+:assumption (or (not x8101) (not x28975) x22170 (not x3672) x30547 (not x5785) x25561 (not x28541))
+:assumption (or x13379 (not x28181) x12488 x860)
+:assumption (or x3053 x4326 (not x3218) (not x9439) x2785 x5363)
+:assumption (or (not x24387) (not x28504))
+:assumption (or (not x21781) (not x26962))
+:assumption (or x10388 (not x25968) x4070)
+:assumption (or x27827 (not x24900))
+:assumption (or (not x5217) x6407)
+:assumption (or x26499 (not x15937))
+:assumption (or (not x20201) x28937)
+:assumption (or x9305 x10474)
+:assumption (or x21202 (not x23768))
+:assumption (or (not x25659) (not x28515))
+:assumption (or x26263 x2163)
+:assumption (or (not x26126) x18663)
+:assumption (or (not x5841) x30800 (not x9320) (not x1503) (not x2772))
+:assumption (or x10281 (not x14001))
+:assumption (or x20472 x8538)
+:assumption (or x30728 (not x23867))
+:assumption (or (not x24561) (not x20756))
+:assumption (or (not x16741) (not x3385) x16835 (not x21146))
+:assumption (or x6748 x17715 x22833 (not x1208) x12719)
+:assumption (or x30216 x28207)
+:assumption (or (not x964) (not x23845) x7990)
+:assumption (or x13400 x13509)
+:assumption (or x3494 (not x22841) (not x24678))
+:assumption (or x15505 x15905)
+:assumption (or (not x1523) (not x26068))
+:assumption (or (not x25041) x22931)
+:assumption (or (not x28435) (not x11281))
+:assumption (or x30362 (not x14977))
+:assumption (or x7211 x5528 (not x8724))
+:assumption (or x23751 x15259)
+:assumption (or x4774 (not x26748))
+:assumption (or (not x15999) x7977)
+:assumption (or (not x1042) x5861 x22115 x5116)
+:assumption (or (not x26375) x8229)
+:assumption (or (not x28629) (not x11319))
+:assumption (or x18655 x15885)
+:assumption (or x31386 x17359)
+:assumption (or x10206 (not x4340))
+:assumption (or (not x23471) (not x27911) x11788)
+:assumption (or x9008 x8419 x565)
+:assumption (or (not x28815) (not x30113))
+:assumption (or x17016 x21956 x5528)
+:assumption (or (not x21058) x10300)
+:assumption (or x23031 x8973)
+:assumption (or (not x3787) (not x14320))
+:assumption (or x31838 x1675)
+:assumption (or (not x25471) x3673)
+:assumption (or (not x2882) x15859 x7373 x14036 x22515)
+:assumption (or (not x14183) x30869)
+:assumption (or x5028 x23177)
+:assumption (or x13415 x4793)
+:assumption (or (not x2868) (not x17271))
+:assumption (or x609 x8499)
+:assumption (or (not x16817) (not x10453) (not x11497) x22528 (not x9328))
+:assumption (or x13418 (not x25659) x27822)
+:assumption (or (not x16441) (not x22641))
+:assumption (or (not x11779) x1320 (not x14813))
+:assumption (or (not x10042) (not x4451))
+:assumption (or (not x20151) x2466)
+:assumption (or (not x8002) (not x4788))
+:assumption (or x24689 x9063 (not x25201) (not x15385) x15994)
+:assumption (or (not x7326) (not x22565))
+:assumption (or (not x17490) (not x8002))
+:assumption (or x2149 x13619)
+:assumption (or (not x29444) (not x754))
+:assumption (or x1840 (not x3194) (not x13412) x23980)
+:assumption (or x26208 x14053)
+:assumption (or (not x17818) x29884)
+:assumption (or x10952 (not x8195))
+:assumption (or (not x20084) (not x6484))
+:assumption (or (not x25144) x11375)
+:assumption (or (not x11296) x30526)
+:assumption (or x158 x13920)
+:assumption (or (not x8159) (not x1582))
+:assumption (or x12536 (not x8378))
+:assumption (or (not x18270) x1324 x7984)
+:assumption (or x18092 x23812)
+:assumption (or (not x8002) x5416)
+:assumption (or (not x21780) x28682)
+:assumption (or x7705 x2177 x18366 x18348)
+:assumption (or (not x29291) (not x13347))
+:assumption (or (not x6932) (not x6289))
+:assumption (or x3558 x23039 x1570 (not x10752) x5815 x19451)
+:assumption (or (not x6164) x15624)
+:assumption (or (not x28242) x42 x23831 (not x10874))
+:assumption (or x23089 (not x27323))
+:assumption (or x3612 (not x119))
+:assumption (or x30699 x28033)
+:assumption (or x2370 (not x8701))
+:assumption (or x26139 (not x28068))
+:assumption (or (not x6533) x6828)
+:assumption (or x11380 x27724)
+:assumption (or x16304 (not x15795) x8208 (not x16083))
+:assumption (or x20782 x1380 (not x24169))
+:assumption (or (not x9176) x20396)
+:assumption (or x12196 (not x14100))
+:assumption (or (not x9315) x1230)
+:assumption (or (not x12045) (not x6266))
+:assumption (or (not x21322) (not x9702))
+:assumption (or (not x29631) (not x13985))
+:assumption (or x16556 (not x9137))
+:assumption (or (not x28620) x11581)
+:assumption (or (not x31189) x23400)
+:assumption (or x7870 x7885)
+:assumption (or x24824 x9013)
+:assumption (or x24893 x21772)
+:assumption (or x26911 (not x27628))
+:assumption (or (not x18904) (not x19911))
+:assumption (or x307 x31487 (not x3435))
+:assumption (or (not x31465) x20510)
+:assumption (or x20403 x6110)
+:assumption (or x2906 x13708)
+:assumption (or x21161 x11206)
+:assumption (or (not x21813) x24305)
+:assumption (or x15203 x10870)
+:assumption (or (not x10669) (not x17644))
+:assumption (or x4977 x8524)
+:assumption (or x24514 x3104)
+:assumption (or (not x26307) x1646 x5573 x19928 x31859)
+:assumption (or x4359 (not x22494))
+:assumption (or x30815 (not x26909) (not x6115) x9554 (not x11798))
+:assumption (or (not x8002) (not x4523))
+:assumption (or (not x13783) (not x4132))
+:assumption (or (not x11489) (not x378))
+:assumption (or x21183 (not x14099))
+:assumption (or x30145 x13629)
+:assumption (or (not x30002) (not x22868))
+:assumption (or (not x27537) (not x27768) (not x16994))
+:assumption (or x27238 x25673)
+:assumption (or x21520 (not x9108))
+:assumption (or (not x23749) x7725 (not x227) x29589 x2832 (not x30588) (not x2859))
+:assumption (or x29599 x7174)
+:assumption (or (not x8340) (not x25659))
+:assumption (or (not x9286) x18096 (not x26126))
+:assumption (or (not x27915) x14096)
+:assumption (or x23423 x15306)
+:assumption (or (not x23935) (not x7864))
+:assumption (or x30195 (not x31773))
+:assumption (or (not x17097) (not x10097))
+:assumption (or (not x4147) (not x22175) (not x12514))
+:assumption (or x29436 x27795)
+:assumption (or x1549 x8002 (not x16671))
+:assumption (or (not x27546) x21218)
+:assumption (or (not x6613) x24490)
+:assumption (or (not x29264) (not x23244))
+:assumption (or x21406 (not x658) (not x25542) (not x25421) (not x10024) x27334)
+:assumption (or x13264 x24222)
+:assumption (or (not x15685) x5032)
+:assumption (or (not x11691) (not x28239))
+:assumption (or (not x14537) (not x8347) (not x16608) x24554)
+:assumption (or (not x12213) (not x9971) x17349 (not x7956) (not x12183) x2738)
+:assumption (or x19546 (not x10445) (not x24792))
+:assumption (or x21872 x7518 (not x5019) (not x30169) (not x6537) x4215 (not x20876) (not x727))
+:assumption (or (not x2740) x8574 x23837 x15866)
+:assumption (or (not x17908) x28678 (not x22321) (not x8952))
+:assumption (or x18441 x4026 x17575)
+:assumption (or x1905 (not x17855))
+:assumption (or x10718 x24202)
+:assumption (or (not x14983) (not x20876) (not x18371) x15409 (not x30575))
+:assumption (or x25913 x18992)
+:assumption (or (not x8050) x6334)
+:assumption (or (not x25065) x23846)
+:assumption (or (not x22540) (not x923))
+:assumption (or (not x20648) x5858)
+:assumption (or x22161 x12283)
+:assumption (or (not x3927) (not x8002) (not x31361))
+:assumption (or x21298 (not x10060) (not x1835) x8784)
+:assumption (or (not x14363) x2399 (not x26199) (not x19839))
+:assumption (or x26733 (not x11296))
+:assumption (or x6685 (not x5311))
+:assumption (or (not x16753) (not x23416))
+:assumption (or x11622 (not x4735))
+:assumption (or x3212 (not x6359) x12052)
+:assumption (or x17338 (not x13195))
+:assumption (or x17756 (not x22349))
+:assumption (or (not x14455) (not x1161))
+:assumption (or x29531 (not x4988))
+:assumption (or (not x24909) (not x9572))
+:assumption (or (not x30953) (not x1911))
+:assumption (or x31681 x997 (not x9398))
+:assumption (or (not x9028) (not x8002) (not x16120))
+:assumption (or (not x6367) (not x26432))
+:assumption (or x20151 (not x12532))
+:assumption (or x3393 x7562)
+:assumption (or x10041 x21690 (not x26957) x22076)
+:assumption (or x26897 x8362 x26485)
+:assumption (or (not x24354) x6849)
+:assumption (or (not x10825) x10866)
+:assumption (or (not x28686) x8877)
+:assumption (or (not x4661) (not x1547))
+:assumption (or (not x27537) (not x1901) (not x17145))
+:assumption (or x19731 (not x1179))
+:assumption (or (not x19161) x30092)
+:assumption (or x23627 x16375)
+:assumption (or x8188 x14569 x11347 (not x14819) (not x14474))
+:assumption (or x24952 x16272)
+:assumption (or (not x26066) x26816)
+:assumption (or x2374 x16003)
+:assumption (or x16329 (not x3058))
+:assumption (or (not x3201) (not x4853) x9471 x29668)
+:assumption (or x24051 (not x8730) (not x27176))
+:assumption (or x1547 x16677 (not x8037) x11791 x1582 x599 (not x28973))
+:assumption (or x5073 x9556)
+:assumption (or (not x9900) (not x2281))
+:assumption (or x15036 x9121)
+:assumption (or x24976 x25434)
+:assumption (or x1417 (not x9552))
+:assumption (or (not x9725) x202)
+:assumption (or (not x14743) x6826)
+:assumption (or x24825 x23801)
+:assumption (or x1284 (not x25246))
+:assumption (or x17873 x24016)
+:assumption (or (not x19035) x6295)
+:assumption (or (not x15682) (not x18288))
+:assumption (or x27944 (not x9155))
+:assumption (or (not x18438) (not x11938))
+:assumption (or x13934 (not x7699))
+:assumption (or x25423 (not x21412))
+:assumption (or (not x5801) x3559)
+:assumption (or x9008 (not x5062))
+:assumption (or (not x11074) (not x26872))
+:assumption (or x7417 x30283)
+:assumption (or x9820 x15480)
+:assumption (or (not x27400) x22722)
+:assumption (or x8658 x1334)
+:assumption (or x31033 (not x24499))
+:assumption (or x5548 (not x12713))
+:assumption (or x16366 (not x16455))
+:assumption (or x27428 x19718)
+:assumption (or x6295 x25085)
+:assumption (or (not x18914) (not x31681))
+:assumption (or x18300 x24210 x28912)
+:assumption (or (not x21415) x27518)
+:assumption (or (not x6318) (not x22541))
+:assumption (or (not x12242) x29282 (not x17716))
+:assumption (or x12242 x4985)
+:assumption (or (not x31082) x14146)
+:assumption (or (not x47) x31923 (not x19776) x17855 x26009 (not x30222) x31690 x27601 x22795)
+:assumption (or x2925 (not x23073))
+:assumption (or (not x16362) (not x6812))
+:assumption (or x8227 (not x17757))
+:assumption (or x25419 (not x22679))
+:assumption (or x502 x25530 x28766)
+:assumption (or (not x12313) x5422)
+:assumption (or x23525 (not x18573))
+:assumption (or x10971 x25928)
+:assumption (or x27234 x10675 (not x3503))
+:assumption (or (not x6916) x15725)
+:assumption (or x8813 x7194)
+:assumption (or (not x1293) x12150)
+:assumption (or x15510 x30761)
+:assumption (or (not x7562) (not x3393) (not x30150) x26304 x17800 (not x218))
+:assumption (or (not x5601) (not x27459))
+:assumption (or (not x31320) x9025)
+:assumption (or x6713 x10554)
+:assumption (or x22023 x15227 x9104 (not x29681))
+:assumption (or x19432 (not x28716))
+:assumption (or x2101 x25350)
+:assumption (or x30616 (not x8413) x30931 (not x9795))
+:assumption (or x4223 (not x30741))
+:assumption (or x24756 (not x29312) x14539 (not x1621))
+:assumption (or (not x13265) x12032)
+:assumption (or (not x26818) x4961)
+:assumption (or x7131 x5551)
+:assumption (or (not x15696) (not x31911) (not x482) x1071 (not x16008))
+:assumption (or (not x20722) (not x11883))
+:assumption (or x23244 (not x29139) x8002 (not x19847) x21787)
+:assumption (or x6087 (not x446))
+:assumption (or (not x17625) (not x21987))
+:assumption (or (not x27202) (not x15400))
+:assumption (or (not x15617) (not x15727))
+:assumption (or (not x8714) (not x28824))
+:assumption (or x282 (not x1024))
+:assumption (or (not x22421) (not x16791))
+:assumption (or (not x3517) x22258 (not x25224))
+:assumption (or x28215 (not x12783))
+:assumption (or x18326 x18444)
+:assumption (or (not x26535) (not x23522))
+:assumption (or (not x14455) (not x15458))
+:assumption (or x20002 x3109)
+:assumption (or (not x19134) (not x20171))
+:assumption (or (not x21406) x25306)
+:assumption (or x21102 (not x7131) (not x20354) x7087 x20818 x11543 (not x23630) (not x16834))
+:assumption (or (not x9299) (not x6546))
+:assumption (or x1610 x3219)
+:assumption (or (not x1729) x31205)
+:assumption (or x22230 (not x26308))
+:assumption (or x1830 (not x20744))
+:assumption (or (not x18486) (not x25031) x16504 x7110 (not x4566) x2432 x25133 (not x8713))
+:assumption (or (not x924) x15659)
+:assumption (or (not x1465) (not x20859))
+:assumption (or x14861 x11978)
+:assumption (or (not x22411) (not x18963))
+:assumption (or (not x31696) x7864 x13933 x29035 x12860 (not x25810) (not x6221) x8859)
+:assumption (or x28849 (not x9025) (not x15917))
+:assumption (or (not x24223) (not x28165))
+:assumption (or (not x26120) x28138)
+:assumption (or (not x11685) (not x24079))
+:assumption (or x13848 (not x23774))
+:assumption (or (not x22373) (not x24498))
+:assumption (or x21358 (not x30132))
+:assumption (or x15428 x692)
+:assumption (or (not x12029) (not x25239))
+:assumption (or x28912 x3194)
+:assumption (or (not x28256) (not x16510) x9566 x2356 x23463 x30842)
+:assumption (or x13699 x9008 x3210)
+:assumption (or x28374 (not x13262))
+:assumption (or x21200 x18859 x17457)
+:assumption (or (not x31055) (not x10256))
+:assumption (or x25267 x8981)
+:assumption (or x13800 (not x25659))
+:assumption (or (not x22855) x18826)
+:assumption (or (not x31829) x11896 (not x918) x3041)
+:assumption (or (not x25338) x17706)
+:assumption (or (not x15074) (not x9531))
+:assumption (or (not x5044) (not x15910))
+:assumption (or x20798 x25045)
+:assumption (or x28492 (not x16117) (not x6513))
+:assumption (or x3342 (not x1180))
+:assumption (or x12321 x641)
+:assumption (or x29393 (not x4945) x6679 (not x21626) x4686 (not x13869) x5302)
+:assumption (or x12548 x30935 x7059 x16336 x12841)
+:assumption (or (not x11343) (not x21362))
+:assumption (or (not x918) x18898 x16510)
+:assumption (or (not x28164) x28118)
+:assumption (or x13676 x8600)
+:assumption (or x8803 x10397)
+:assumption (or x28311 x23790)
+:assumption (or (not x10309) (not x21026) (not x15417))
+:assumption (or (not x28263) x28262)
+:assumption (or (not x11204) (not x18156))
+:assumption (or (not x3106) x2425)
+:assumption (or (not x29847) (not x23244))
+:assumption (or x10927 (not x2445))
+:assumption (or (not x28321) x6323)
+:assumption (or x28785 (not x14104))
+:assumption (or (not x13760) (not x8002))
+:assumption (or (not x28988) x3401)
+:assumption (or (not x22115) (not x22249))
+:assumption (or x1354 (not x23950))
+:assumption (or x2799 x29288)
+:assumption (or x16319 (not x11561) x27451 (not x159) x15184 (not x5846) (not x24457) (not x5016) (not x19707))
+:assumption (or (not x18324) (not x960) x8849)
+:assumption (or (not x17361) x21384)
+:assumption (or (not x29184) x8449 (not x20748) (not x8783) (not x19279))
+:assumption (or x27379 x27012)
+:assumption (or (not x25081) x25032)
+:assumption (or (not x25423) (not x9251))
+:assumption (or (not x5729) x25659)
+:assumption (or x11089 x20859 x11980 x3011 (not x10385) (not x21801) (not x14180) x29121)
+:assumption (or (not x14164) x26640)
+:assumption (or x10489 x3093)
+:assumption (or (not x7572) x13779)
+:assumption (or x11382 (not x18857))
+:assumption (or (not x11394) x31793)
+:assumption (or x23680 x21807 x18038 x5097)
+:assumption (or x29007 x14839)
+:assumption (or (not x4841) x19746)
+:assumption (or (not x21464) (not x26616) (not x3137) (not x8299))
+:assumption (or x14213 x28624)
+:assumption (or (not x18661) (not x28739))
+:assumption (or x7613 (not x26402) (not x23441) x384 (not x6594))
+:assumption (or (not x18925) (not x5267))
+:assumption (or x23087 x18855)
+:assumption (or x28540 x1384)
+:assumption (or (not x18165) x15646)
+:assumption (or (not x21205) (not x24847))
+:assumption (or x15120 x2719)
+:assumption (or x20254 (not x19073))
+:assumption (or x9499 (not x13622))
+:assumption (or (not x6149) x20221)
+:assumption (or (not x24116) (not x1737))
+:assumption (or (not x6138) x7603)
+:assumption (or x422 x12980)
+:assumption (or x23079 (not x14119))
+:assumption (or (not x7365) (not x8370))
+:assumption (or (not x11281) (not x1989))
+:assumption (or x21685 x4987)
+:assumption (or x16721 (not x22887))
+:assumption (or x28342 x7152)
+:assumption (or (not x29583) (not x9008) (not x1459))
+:assumption (or (not x18042) x11374 (not x16510) (not x21815) (not x14258))
+:assumption (or (not x5009) (not x753) x8002 x23679 x2040 x22386)
+:assumption (or x13956 (not x368))
+:assumption (or (not x16365) x23896)
+:assumption (or x4428 x17939)
+:assumption (or x3230 (not x29865))
+:assumption (or x5117 x9655)
+:assumption (or (not x18478) x13956)
+:assumption (or (not x24953) x7919)
+:assumption (or (not x15853) x17444)
+:assumption (or x519 x19231)
+:assumption (or (not x25366) (not x20468))
+:assumption (or (not x6594) x1929)
+:assumption (or x8082 (not x21784))
+:assumption (or (not x4259) (not x1510))
+:assumption (or (not x12531) (not x6749))
+:assumption (or (not x15509) (not x10804))
+:assumption (or (not x16124) x31829)
+:assumption (or (not x25318) (not x17139))
+:assumption (or x8169 (not x30610))
+:assumption (or (not x4458) x11556)
+:assumption (or (not x10871) x29273)
+:assumption (or (not x13377) x21041)
+:assumption (or x12338 x6430)
+:assumption (or x5358 (not x827) x26308 (not x31044) (not x2992) (not x17236) (not x31607) (not x22409))
+:assumption (or x26777 x24955)
+:assumption (or (not x20048) x2743 x14968 (not x31831) x28115 (not x20788) (not x22510) x12331)
+:assumption (or (not x23715) x29617)
+:assumption (or (not x3782) x3990)
+:assumption (or (not x30115) (not x21130))
+:assumption (or x16116 (not x16399))
+:assumption (or x3143 (not x2230))
+:assumption (or (not x26153) x5540)
+:assumption (or x19264 (not x13188) x12385 (not x12730))
+:assumption (or (not x7653) (not x929))
+:assumption (or x12988 x12876)
+:assumption (or x26344 x21153 (not x16172) x777 (not x645) x18431)
+:assumption (or (not x20576) x9420)
+:assumption (or x2163 (not x3578))
+:assumption (or (not x14785) x22590)
+:assumption (or (not x29834) x2316)
+:assumption (or (not x14033) (not x9008) (not x7953))
+:assumption (or x29649 (not x17053) x28912 (not x4755))
+:assumption (or x31682 (not x28939))
+:assumption (or (not x28757) (not x3494))
+:assumption (or x25659 x5513 (not x24288))
+:assumption (or x24866 (not x6989))
+:assumption (or (not x29108) x22112)
+:assumption (or x319 x28385)
+:assumption (or (not x2503) (not x1536))
+:assumption (or (not x4371) (not x29466))
+:assumption (or x25201 (not x2545))
+:assumption (or x25433 (not x30469))
+:assumption (or (not x1747) x27012 x2629 (not x12150))
+:assumption (or x26897 (not x29044))
+:assumption (or (not x12161) (not x2278))
+:assumption (or x14418 (not x24768) x18179 x7542 x12013)
+:assumption (or (not x10443) x29027)
+:assumption (or (not x29646) x30228)
+:assumption (or x13487 x5645)
+:assumption (or (not x9936) (not x24006))
+:assumption (or x905 x31512)
+:assumption (or x28634 x12001)
+:assumption (or x21692 (not x7893))
+:assumption (or x6307 x16812)
+:assumption (or (not x17335) (not x16297))
+:assumption (or (not x20087) x8894 (not x20140))
+:assumption (or x21997 x14048)
+:assumption (or x14316 (not x16296))
+:assumption (or x23759 (not x20721))
+:assumption (or x16653 (not x27646))
+:assumption (or x17853 (not x1393))
+:assumption (or x17999 (not x4908))
+:assumption (or x15783 (not x28404))
+:assumption (or (not x26835) x12893 x6877 x218 x17767 (not x9394) (not x25931))
+:assumption (or (not x2221) (not x4707))
+:assumption (or x31104 (not x5108))
+:assumption (or (not x24669) x11191)
+:assumption (or x29491 x15585)
+:assumption (or x3518 (not x9298))
+:assumption (or x6963 x10541)
+:assumption (or x14678 (not x26193))
+:assumption (or x17612 x11151 x9168 (not x19554))
+:assumption (or x17124 x13710)
+:assumption (or x18173 x19874)
+:assumption (or (not x9785) x3453)
+:assumption (or x15144 x30002 (not x21118))
+:assumption (or x7069 (not x13272))
+:assumption (or (not x9867) x29596 x8002)
+:assumption (or (not x4697) x16180)
+:assumption (or x14475 (not x17154))
+:assumption (or x13352 x9024)
+:assumption (or (not x1582) (not x15645) x5552)
+:assumption (or (not x9808) x5061)
+:assumption (or x6780 x14559)
+:assumption (or x23220 (not x1795))
+:assumption (or (not x12872) x8413)
+:assumption (or x1542 x30113 x20709)
+:assumption (or (not x28293) x21842)
+:assumption (or x23801 (not x20651) x21988 x31726)
+:assumption (or x17117 x1952 (not x7178) x9884 x769 (not x30707) x31759)
+:assumption (or (not x18658) (not x26707))
+:assumption (or (not x3848) (not x474))
+:assumption (or x6951 (not x17446))
+:assumption (or x6441 x192)
+:assumption (or (not x29930) (not x7900))
+:assumption (or (not x15155) x7303)
+:assumption (or (not x15498) x24842)
+:assumption (or (not x1832) (not x3935))
+:assumption (or (not x5092) x31922)
+:assumption (or x13138 (not x1105))
+:assumption (or (not x9008) x16322)
+:assumption (or (not x20076) (not x5285))
+:assumption (or (not x19768) (not x11057) x16597 (not x23972))
+:assumption (or (not x12919) x13390)
+:assumption (or x5692 x30262)
+:assumption (or x29619 (not x5404) x17999 (not x19746))
+:assumption (or x11745 x30805 (not x6326))
+:assumption (or (not x9059) x21546)
+:assumption (or (not x24744) x19555)
+:assumption (or x6779 x25112)
+:assumption (or (not x27537) x7271)
+:assumption (or x22009 (not x23301) (not x11671) x10820 x17534)
+:assumption (or x11559 x14774)
+:assumption (or (not x20949) x15185)
+:assumption (or x23923 (not x9531))
+:assumption (or x10211 (not x5277))
+:assumption (or x18856 (not x22715))
+:assumption (or x695 x27624)
+:assumption (or x16806 x24698)
+:assumption (or (not x14189) (not x13317))
+:assumption (or x5998 (not x29759))
+:assumption (or x15442 x22995)
+:assumption (or x19764 (not x13216))
+:assumption (or (not x7415) x16298)
+:assumption (or (not x10874) (not x12303) x6307 (not x29272))
+:assumption (or x28113 x29613)
+:assumption (or x18598 (not x14411) (not x8088) (not x31392) x7443)
+:assumption (or (not x23479) x14710)
+:assumption (or x26722 x31656 (not x14247) (not x15795) x23767 x13518)
+:assumption (or x3449 (not x24648))
+:assumption (or (not x11109) x29307)
+:assumption (or (not x9758) x22697)
+:assumption (or (not x7428) (not x3179))
+:assumption (or (not x27537) x31007)
+:assumption (or x17457 x5442)
+:assumption (or (not x1252) (not x3586) (not x6149))
+:assumption (or x4072 x2133)
+:assumption (or (not x27978) x13795 x6915 (not x13576))
+:assumption (or (not x20723) (not x7534))
+:assumption (or (not x10739) (not x13409) (not x21907) x23797 (not x20194))
+:assumption (or x11043 x6639)
+:assumption (or (not x10143) (not x6482) x1393)
+:assumption (or x18526 x16003)
+:assumption (or x17405 (not x13312))
+:assumption (or (not x6240) (not x22960))
+:assumption (or (not x19405) x6262)
+:assumption (or x12833 (not x12421))
+:assumption (or x25849 x7073)
+:assumption (or (not x13793) (not x21087))
+:assumption (or (not x19992) x15799 x3534)
+:assumption (or x26792 x1937)
+:assumption (or (not x18932) x19382)
+:assumption (or (not x10502) (not x27468))
+:assumption (or (not x18762) (not x28345))
+:assumption (or (not x17964) (not x16131))
+:assumption (or (not x3223) x762)
+:assumption (or (not x17092) x7485 x25206 x9306 (not x7134))
+:assumption (or x2471 (not x7381))
+:assumption (or (not x19024) x25222)
+:assumption (or x29832 x20188)
+:assumption (or (not x28437) x15000)
+:assumption (or (not x26913) (not x22080))
+:assumption (or x20985 (not x14272))
+:assumption (or x27090 x6217)
+:assumption (or x19992 (not x15535))
+:assumption (or x11562 x24722)
+:assumption (or (not x3609) x26927)
+:assumption (or (not x16648) x28911)
+:assumption (or x21600 (not x8002))
+:assumption (or x1025 (not x25387))
+:assumption (or x23214 (not x15690))
+:assumption (or x27655 x11158)
+:assumption (or x1790 (not x22077) (not x16802) x25366)
+:assumption (or x19191 (not x23244))
+:assumption (or (not x2571) x768 x25492)
+:assumption (or x19759 x17775)
+:assumption (or x15569 (not x2431))
+:assumption (or x1822 (not x15813))
+:assumption (or x1122 (not x11670))
+:assumption (or (not x1337) x9323 (not x8602))
+:assumption (or x14149 (not x4969))
+:assumption (or (not x18106) x26305)
+:assumption (or (not x28958) (not x23003) x11571)
+:assumption (or x21045 (not x3565))
+:assumption (or x3360 (not x17424))
+:assumption (or x30113 x6783 (not x12358))
+:assumption (or x26432 (not x25848) (not x7916))
+:assumption (or (not x15382) x16688)
+:assumption (or x9987 (not x15795))
+:assumption (or (not x7841) (not x5237))
+:assumption (or x10905 x22527)
+:assumption (or x13996 x1994)
+:assumption (or x14529 (not x30391))
+:assumption (or x5381 (not x6180))
+:assumption (or x13607 x6972)
+:assumption (or (not x5615) (not x19293))
+:assumption (or x10906 x20920)
+:assumption (or x10398 x6922)
+:assumption (or (not x12344) (not x7899))
+:assumption (or (not x16829) (not x29772))
+:assumption (or x20087 (not x22887))
+:assumption (or (not x16642) (not x29373))
+:assumption (or x10532 (not x19580))
+:assumption (or x8456 x4378)
+:assumption (or x15905 (not x29455))
+:assumption (or (not x29082) (not x7942))
+:assumption (or (not x16673) (not x7370))
+:assumption (or x12541 (not x13374))
+:assumption (or (not x3613) x29366)
+:assumption (or (not x21144) (not x3484))
+:assumption (or x29969 x7625)
+:assumption (or x17419 (not x6463))
+:assumption (or x17075 (not x23868))
+:assumption (or x7661 x1657)
+:assumption (or (not x11313) x480)
+:assumption (or (not x8660) (not x16973))
+:assumption (or x15309 (not x27012))
+:assumption (or (not x27681) x6957)
+:assumption (or (not x9596) x30160)
+:assumption (or (not x1393) (not x12279))
+:assumption (or x5666 x29007)
+:assumption (or (not x26810) (not x22462))
+:assumption (or (not x15633) (not x29350) (not x21653))
+:assumption (or (not x4760) (not x27063))
+:assumption (or x9777 (not x29336))
+:assumption (or (not x10543) x29041)
+:assumption (or (not x8385) x4316 (not x7739) x26998 x13714)
+:assumption (or x14273 x16025)
+:assumption (or x7588 (not x28826))
+:assumption (or (not x28129) (not x22736))
+:assumption (or (not x31436) (not x19582))
+:assumption (or (not x8002) (not x12520) x9784)
+:assumption (or x5109 (not x10192))
+:assumption (or x3238 x8793 (not x16695))
+:assumption (or x27061 (not x25445))
+:assumption (or (not x7937) (not x5420))
+:assumption (or x16293 x11450)
+:assumption (or (not x19992) x25619 x23633)
+:assumption (or x8002 (not x19179))
+:assumption (or x6675 (not x7055) x18395)
+:assumption (or (not x30904) (not x21754))
+:assumption (or (not x19557) (not x16730) (not x18694) x29606)
+:assumption (or x13523 (not x215))
+:assumption (or x2337 (not x16374))
+:assumption (or (not x25955) (not x3671))
+:assumption (or x16200 x21651)
+:assumption (or (not x13907) x22859)
+:assumption (or (not x15836) x15537 x14591 x2069 x15795)
+:assumption (or (not x15646) x16525 (not x19976))
+:assumption (or x29163 (not x14812))
+:assumption (or (not x19156) (not x29044))
+:assumption (or (not x17765) (not x20052))
+:assumption (or (not x19179) (not x25745))
+:assumption (or (not x22038) (not x11460))
+:assumption (or x7451 (not x24754))
+:assumption (or x30976 x3685)
+:assumption (or x14956 x10390)
+:assumption (or (not x6534) x8501)
+:assumption (or x29388 (not x22306))
+:assumption (or (not x28094) (not x21084) (not x14618) (not x24996) (not x19638) (not x16344) x29196)
+:assumption (or x830 x30830)
+:assumption (or (not x19817) x13182)
+:assumption (or (not x6834) (not x25659))
+:assumption (or x10194 x314)
+:assumption (or (not x17935) x30250)
+:assumption (or x4183 (not x21595))
+:assumption (or x23591 x3536)
+:assumption (or x5979 x20044)
+:assumption (or (not x24147) (not x21538) x2288 (not x6444))
+:assumption (or (not x16659) x496)
+:assumption (or x19019 (not x17448))
+:assumption (or x14447 (not x17325))
+:assumption (or x1012 (not x20615))
+:assumption (or (not x30239) (not x23782))
+:assumption (or (not x27269) (not x16075))
+:assumption (or (not x29649) (not x8002) x7522 x23244 x10534)
+:assumption (or x2092 (not x9930) (not x8002) x16572)
+:assumption (or x17005 (not x30381))
+:assumption (or x5679 x7364)
+:assumption (or (not x10536) x3171)
+:assumption (or x26310 (not x24853) (not x1920) (not x24427))
+:assumption (or x16805 x30348)
+:assumption (or (not x4865) x7550)
+:assumption (or (not x9057) x4093)
+:assumption (or x404 x2682)
+:assumption (or (not x16882) x8791)
+:assumption (or (not x20204) (not x27794))
+:assumption (or x3779 (not x19409) (not x31278))
+:assumption (or (not x31208) (not x14766))
+:assumption (or x25963 (not x1842))
+:assumption (or x30667 x26368 x30113)
+:assumption (or x8084 x5301)
+:assumption (or (not x25199) x14361)
+:assumption (or x7773 x11996)
+:assumption (or x23454 x26892)
+:assumption (or x22860 x4116)
+:assumption (or x10547 x15623)
+:assumption (or (not x23577) x10246 (not x30863) (not x18190) x586)
+:assumption (or x21058 (not x22686) x14357)
+:assumption (or x25399 (not x26121))
+:assumption (or (not x3588) (not x9409))
+:assumption (or (not x25659) x18966 (not x17953))
+:assumption (or (not x5909) (not x26645))
+:assumption (or (not x30555) x4353)
+:assumption (or (not x5561) (not x9435))
+:assumption (or (not x28570) x8509)
+:assumption (or x13956 x29678)
+:assumption (or x25128 x11570)
+:assumption (or x3751 (not x5034))
+:assumption (or x1393 (not x29267))
+:assumption (or x30181 (not x6149))
+:assumption (or x23047 x7621)
+:assumption (or x9981 x6065)
+:assumption (or x28180 x14878)
+:assumption (or (not x23840) (not x5233))
+:assumption (or (not x16134) (not x28682) (not x20482))
+:assumption (or (not x5696) (not x5528) x20723 (not x30323) (not x9008))
+:assumption (or x6370 (not x3085))
+:assumption (or x29927 x6084)
+:assumption (or x4353 x31720)
+:assumption (or (not x22495) x1094 x1511)
+:assumption (or (not x19126) (not x17942))
+:assumption (or x20048 x2759)
+:assumption (or x26098 (not x17886))
+:assumption (or x13966 (not x24660))
+:assumption (or x28942 (not x23090))
+:assumption (or x24454 x29769)
+:assumption (or x21174 x21361)
+:assumption (or (not x1626) (not x10176))
+:assumption (or (not x5835) x14814)
+:assumption (or (not x25846) (not x12923) (not x8345) (not x21253))
+:assumption (or x30432 x20550 (not x30664) x25659 (not x288))
+:assumption (or (not x6592) (not x12752))
+:assumption (or x23023 x18689 x4750 x22834 (not x16259) x3106 x30208 x21670 (not x19535))
+:assumption (or (not x9994) (not x28242))
+:assumption (or x4751 (not x28963))
+:assumption (or x14649 x4108)
+:assumption (or (not x21455) (not x3740))
+:assumption (or x30206 x21026 (not x14847) x31717)
+:assumption (or x7037 (not x29519))
+:assumption (or (not x24101) x4869)
+:assumption (or (not x13033) x16659)
+:assumption (or x13941 x11561)
+:assumption (or (not x11420) x19040)
+:assumption (or (not x2243) x17778)
+:assumption (or (not x8864) x7564)
+:assumption (or x28073 x9624)
+:assumption (or x9159 x14265)
+:assumption (or (not x10070) x18586)
+:assumption (or x5026 (not x29068))
+:assumption (or (not x15846) x21609)
+:assumption (or x9008 (not x11927))
+:assumption (or (not x11212) (not x22757))
+:assumption (or (not x20399) x26112)
+:assumption (or x26334 (not x5825))
+:assumption (or (not x12242) x20370)
+:assumption (or x19239 (not x11280))
+:assumption (or (not x23775) (not x8632))
+:assumption (or (not x3105) x21581)
+:assumption (or (not x27556) (not x15562))
+:assumption (or (not x7109) x8906)
+:assumption (or (not x23530) (not x18296))
+:assumption (or (not x22565) (not x2205))
+:assumption (or x23971 x24632)
+:assumption (or (not x15333) (not x31071))
+:assumption (or x14503 (not x29225))
+:assumption (or x16299 x12288)
+:assumption (or x583 (not x23915))
+:assumption (or x15035 x15705)
+:assumption (or x9008 x18708)
+:assumption (or (not x10969) (not x15089) (not x6149) (not x11415))
+:assumption (or x26093 (not x11365) (not x21298))
+:assumption (or (not x10874) x18636)
+:assumption (or x6879 x21305)
+:assumption (or (not x25690) (not x22216))
+:assumption (or x8651 x10909 x1378)
+:assumption (or (not x31448) x2289 (not x13249) (not x13635) x5803 (not x7757))
+:assumption (or (not x16689) x28588)
+:assumption (or (not x23852) (not x24974) (not x4949) x28259 (not x29959))
+:assumption (or x15651 (not x21691))
+:assumption (or (not x30138) (not x1376))
+:assumption (or x5502 (not x16683))
+:assumption (or (not x5886) x7354)
+:assumption (or (not x25119) (not x28258))
+:assumption (or x21438 x5856 x19755)
+:assumption (or x7816 (not x21653))
+:assumption (or (not x8402) (not x27863))
+:assumption (or (not x24069) x4400 x19545 (not x24801) (not x19595) (not x9060))
+:assumption (or (not x18696) x24492)
+:assumption (or x31406 (not x29706))
+:assumption (or (not x6695) x30204 x6951)
+:assumption (or (not x19866) x27405)
+:assumption (or x12553 x28068 x24579 (not x10090) (not x7424))
+:assumption (or (not x8798) (not x27626))
+:assumption (or (not x11198) (not x16670))
+:assumption (or (not x9862) x10312 (not x31645) x4102)
+:assumption (or (not x23134) (not x20635))
+:assumption (or (not x23952) (not x22310))
+:assumption (or x23244 (not x25484) x13956 x8002 (not x30914) x12997)
+:assumption (or x14347 x28317)
+:assumption (or x22855 (not x13750) (not x142))
+:assumption (or (not x8269) x2410)
+:assumption (or x1895 (not x16741))
+:assumption (or (not x6351) x7459)
+:assumption (or (not x1655) (not x18021) (not x15367) (not x16362) x28818 (not x24144))
+:assumption (or x25659 x13386 x22262)
+:assumption (or (not x1344) x8273)
+:assumption (or x27306 x26415)
+:assumption (or x18147 (not x4048))
+:assumption (or x3699 (not x18530))
+:assumption (or x8412 (not x19459))
+:assumption (or (not x22855) x480 x17062)
+:assumption (or (not x13698) x18694)
+:assumption (or x11506 x9752)
+:assumption (or (not x1352) (not x21742))
+:assumption (or x23123 (not x20793))
+:assumption (or (not x15227) (not x9475))
+:assumption (or (not x562) (not x323))
+:assumption (or (not x25665) x13365)
+:assumption (or x12969 x4329)
+:assumption (or x6948 x29333)
+:assumption (or x3571 (not x17930) x13956)
+:assumption (or x11963 x910)
+:assumption (or x21520 x10614)
+:assumption (or (not x29716) (not x14284))
+:assumption (or (not x14591) x31078 x27242 x25659)
+:assumption (or x28158 (not x28407) (not x21506) (not x26432) x14653)
+:assumption (or (not x2495) (not x16856))
+:assumption (or x8602 x15797 x31602 x2234 (not x15393) x24099 x2612 (not x13437))
+:assumption (or x28955 (not x2512))
+:assumption (or x1418 (not x30113))
+:assumption (or x1642 (not x14760))
+:assumption (or x24283 (not x9213))
+:assumption (or x9652 x6037)
+:assumption (or x4124 (not x10456))
+:assumption (or (not x6716) x7569)
+:assumption (or (not x10999) x20042)
+:assumption (or x29420 (not x18762))
+:assumption (or (not x18174) (not x14111))
+:assumption (or x17828 (not x17506))
+:assumption (or (not x24879) (not x5709))
+:assumption (or (not x12271) (not x14400))
+:assumption (or x9192 (not x6943) (not x5528) x31140 x8147 (not x16121))
+:assumption (or x963 x29659 x4932 x5818 x23308 x15876 (not x10075))
+:assumption (or x11372 (not x18136) (not x3378) x23646 x26810 (not x30118))
+:assumption (or x23571 (not x22877))
+:assumption (or (not x10669) (not x1999))
+:assumption (or (not x9374) x30181)
+:assumption (or x6361 x11063)
+:assumption (or x5251 (not x21690))
+:assumption (or (not x18789) (not x26512))
+:assumption (or (not x3234) x30104)
+:assumption (or (not x7652) (not x4491) x19516 (not x18223))
+:assumption (or x29561 (not x17863))
+:assumption (or (not x22224) x12252)
+:assumption (or x16163 x8002 x11624)
+:assumption (or x23218 x11066 (not x10513) (not x4220) x2011)
+:assumption (or (not x24995) x13962)
+:assumption (or (not x20760) (not x21955))
+:assumption (or x23726 x21993)
+:assumption (or (not x22481) x17463)
+:assumption (or (not x26609) (not x24720))
+:assumption (or x2120 (not x17931))
+:assumption (or (not x12608) (not x20187) (not x31603) x6805)
+:assumption (or x2857 x29333)
+:assumption (or (not x31083) (not x16346))
+:assumption (or x18492 (not x8162))
+:assumption (or (not x15308) x25592)
+:assumption (or x24428 x5352 x26326)
+:assumption (or x15096 x24186 x796 (not x31850))
+:assumption (or x17571 (not x22320))
+:assumption (or (not x890) (not x31678))
+:assumption (or (not x26465) x13956)
+:assumption (or x29568 (not x25257))
+:assumption (or x20876 (not x15409))
+:assumption (or x16113 x6171)
+:assumption (or (not x10199) x142)
+:assumption (or (not x27012) x31291)
+:assumption (or x27636 x20284)
+:assumption (or (not x288) x23350)
+:assumption (or (not x4716) (not x25965))
+:assumption (or (not x29909) (not x25642))
+:assumption (or (not x13396) (not x24799))
+:assumption (or (not x4867) (not x16434))
+:assumption (or (not x27163) x25396 (not x22531))
+:assumption (or (not x10221) (not x27035))
+:assumption (or (not x1718) (not x2321))
+:assumption (or x30883 x11623)
+:assumption (or (not x23244) x7294)
+:assumption (or (not x16829) (not x3643))
+:assumption (or (not x3042) (not x2954))
+:assumption (or (not x11693) x13188 x24757 x11369 (not x25334) x15227 (not x2278) x21824 (not x4491))
+:assumption (or x14923 x10369)
+:assumption (or (not x24428) (not x26326))
+:assumption (or (not x31112) (not x3024))
+:assumption (or (not x29560) x21202)
+:assumption (or x20497 x5994 (not x10328) (not x6597))
+:assumption (or x30630 x5282 x4325 x19575 x30124 (not x20718) x20384 (not x14512))
+:assumption (or x7044 (not x2240))
+:assumption (or (not x11825) x31681)
+:assumption (or x17195 (not x4333))
+:assumption (or x27034 (not x14156))
+:assumption (or (not x9008) x1673)
+:assumption (or x5749 x3162 (not x20723) (not x19335) (not x7348) x18765)
+:assumption (or x23038 x2573)
+:assumption (or x29749 x8229 (not x2739) x13486)
+:assumption (or x23501 (not x6912))
+:assumption (or (not x6330) (not x22519))
+:assumption (or x23606 x20949)
+:assumption (or x4434 x18238)
+:assumption (or x4099 (not x6046))
+:assumption (or (not x6149) (not x24973))
+:assumption (or x23244 x8002 x2805)
+:assumption (or x10313 x20628)
+:assumption (or (not x14239) x8731)
+:assumption (or x2735 x13417)
+:assumption (or x11647 x18294)
+:assumption (or x10608 (not x7308))
+:assumption (or (not x24909) (not x28377))
+:assumption (or (not x1416) (not x16538))
+:assumption (or (not x12573) (not x678))
+:assumption (or (not x20527) (not x21552))
+:assumption (or (not x31270) (not x3935))
+:assumption (or x21815 (not x28256) x2356 x16188 x9566 x30842)
+:assumption (or (not x19596) x17623)
+:assumption (or x10385 (not x1465))
+:assumption (or (not x3844) x3080)
+:assumption (or (not x9336) (not x30634) x16632)
+:assumption (or x7393 (not x11592))
+:assumption (or (not x2074) (not x23098))
+:assumption (or x4965 x19744)
+:assumption (or x4504 (not x4600))
+:assumption (or (not x18307) (not x10874))
+:assumption (or (not x15719) (not x9555))
+:assumption (or x15528 x17008 x29809 (not x4577) x18811 (not x29820) x29312 (not x27651) x26311)
+:assumption (or x7312 (not x5064))
+:assumption (or x9025 x13900)
+:assumption (or (not x28099) (not x26862))
+:assumption (or x29415 (not x26575))
+:assumption (or (not x20615) x30132)
+:assumption (or (not x12242) (not x7338))
+:assumption (or (not x14455) (not x31727))
+:assumption (or (not x24992) x28807)
+:assumption (or (not x25445) (not x24756))
+:assumption (or (not x10217) (not x10335))
+:assumption (or (not x24763) (not x14950))
+:assumption (or x28615 (not x7267))
+:assumption (or (not x2682) (not x18239))
+:assumption (or (not x26984) x15659 (not x27059))
+:assumption (or (not x30502) (not x6528))
+:assumption (or x2247 (not x12010))
+:assumption (or (not x21814) (not x14463) x15659)
+:assumption (or (not x8031) x12529 x6190 x30049)
+:assumption (or x752 x4258)
+:assumption (or (not x26968) (not x12874) x8945 x11489)
+:assumption (or (not x11816) x9401)
+:assumption (or (not x15863) (not x29126))
+:assumption (or x31599 x16817)
+:assumption (or x7835 x2133 x18100 (not x2552))
+:assumption (or x19711 (not x11922) x23244)
+:assumption (or x227 (not x2832))
+:assumption (or x31893 x29886)
+:assumption (or x20194 x6999)
+:assumption (or (not x22341) x27656 (not x20703) (not x9699))
+:assumption (or (not x221) x1582 (not x31513))
+:assumption (or x27725 (not x24270) (not x25168))
+:assumption (or (not x14839) (not x30372))
+:assumption (or x21060 x30223)
+:assumption (or (not x14418) (not x7542))
+:assumption (or x31678 (not x16366) (not x30475))
+:assumption (or x24605 (not x23154))
+:assumption (or x5766 x11010)
+:assumption (or (not x12890) x6436)
+:assumption (or (not x18491) x9008)
+:assumption (or x19821 x25659)
+:assumption (or x2099 x17119)
+:assumption (or (not x877) (not x31760))
+:assumption (or (not x27297) (not x2865))
+:assumption (or (not x26240) (not x18968) (not x6059) (not x20335) (not x28021))
+:assumption (or x15737 (not x19038))
+:assumption (or (not x29878) (not x24826))
+:assumption (or x15250 (not x29793))
+:assumption (or (not x483) x20273 (not x21298))
+:assumption (or (not x11065) (not x15250))
+:assumption (or (not x3341) x7653 x929)
+:assumption (or x4835 (not x19501))
+:assumption (or (not x6286) x21988)
+:assumption (or x14641 x24092)
+:assumption (or x11275 (not x16997))
+:assumption (or x31607 (not x5812))
+:assumption (or x21164 x2755)
+:assumption (or (not x5370) (not x22495) x17900 (not x18448))
+:assumption (or (not x602) x21362)
+:assumption (or (not x6819) x24079)
+:assumption (or x9423 x11128)
+:assumption (or x14766 x31208)
+:assumption (or x31369 (not x25801))
+:assumption (or x27964 (not x5528))
+:assumption (or x17432 x22074 x13301 x27285 (not x16309))
+:assumption (or (not x15843) x21158)
+:assumption (or x10773 (not x19294))
+:assumption (or x20728 x25267)
+:assumption (or (not x3425) (not x8602))
+:assumption (or (not x11449) (not x24051))
+:assumption (or x29273 (not x26289))
+:assumption (or x19075 (not x12384))
+:assumption (or (not x16494) x4152)
+:assumption (or x24967 (not x26280))
+:assumption (or (not x15910) (not x14455))
+:assumption (or x2703 (not x4560))
+:assumption (or x27537 x27480 (not x5710))
+:assumption (or (not x8905) (not x19864) (not x30048))
+:assumption (or x20583 (not x7643) (not x31310))
+:assumption (or x24756 (not x21331) x26777 x9825 x29312)
+:assumption (or x10527 (not x7642))
+:assumption (or x25309 (not x2263))
+:assumption (or x25816 x21653 (not x20700))
+:assumption (or x23244 (not x2542) x18648)
+:assumption (or (not x28653) x9846)
+:assumption (or x21510 x25242 x20133 (not x5234) x11145)
+:assumption (or x12153 x16179)
+:assumption (or x12019 x7433)
+:assumption (or (not x22331) (not x18069))
+:assumption (or x20289 (not x5236))
+:assumption (or x22785 (not x3728))
+:assumption (or x8602 x13219 x22749)
+:assumption (or (not x4430) (not x10517))
+:assumption (or x31618 (not x5528))
+:assumption (or (not x16370) (not x24756))
+:assumption (or x28795 x24654)
+:assumption (or x13249 x26705)
+:assumption (or x20087 x14440)
+:assumption (or (not x20915) x20301)
+:assumption (or x12561 x29308)
+:assumption (or x21772 x7091)
+:assumption (or x30854 x17418)
+:assumption (or (not x22550) x9791)
+:assumption (or (not x12748) (not x25558))
+:assumption (or (not x10874) (not x1976) (not x18892))
+:assumption (or x3612 x9535)
+:assumption (or x14083 x147)
+:assumption (or (not x24403) (not x17380))
+:assumption (or x12186 (not x12433))
+:assumption (or x10491 (not x16402))
+:assumption (or (not x9179) (not x2251))
+:assumption (or (not x19333) (not x8018))
+:assumption (or (not x9712) (not x17481))
+:assumption (or x28512 x19469)
+:assumption (or x10812 (not x27792))
+:assumption (or (not x4967) x10749)
+:assumption (or (not x30425) x6593)
+:assumption (or x3679 x13529)
+:assumption (or x20550 x19502)
+:assumption (or x10913 (not x16523))
+:assumption (or x26532 (not x23893))
+:assumption (or (not x27090) x24455)
+:assumption (or x4820 (not x11994))
+:assumption (or (not x26407) (not x7954))
+:assumption (or x5495 (not x6149))
+:assumption (or (not x17463) x2676 (not x18112))
+:assumption (or x23633 x14268)
+:assumption (or (not x11334) x15404)
+:assumption (or x3610 x7796)
+:assumption (or (not x17097) (not x11288))
+:assumption (or (not x27018) (not x8918))
+:assumption (or (not x29819) (not x7973) (not x11058) x30428)
+:assumption (or (not x28762) x3991)
+:assumption (or (not x20737) x16067)
+:assumption (or x8406 x24974)
+:assumption (or x14089 (not x22963))
+:assumption (or x858 x24856)
+:assumption (or (not x3615) (not x23667) (not x22231) x8064 x11780 x12812 x27793 (not x10523))
+:assumption (or x11255 x19676)
+:assumption (or x1469 (not x2177) (not x20922))
+:assumption (or x11571 x20265)
+:assumption (or (not x25611) x30104)
+:assumption (or x7148 x8061)
+:assumption (or x29218 (not x20796))
+:assumption (or x8496 (not x30489))
+:assumption (or (not x17534) (not x5900))
+:assumption (or (not x10694) (not x28732))
+:assumption (or x19864 (not x17934) (not x23133))
+:assumption (or (not x15826) x20089 x7272 x19633 (not x3297) x2681 (not x8616) (not x6820) x28127)
+:assumption (or (not x28912) (not x13266))
+:assumption (or (not x3077) (not x30552))
+:assumption (or x6689 (not x24228))
+:assumption (or (not x12346) x7758)
+:assumption (or (not x25885) (not x31628))
+:assumption (or x3453 (not x5083))
+:assumption (or (not x18604) (not x27216))
+:assumption (or x7873 x15237)
+:assumption (or (not x13686) (not x27175))
+:assumption (or (not x4701) x14117 (not x8658) (not x19272))
+:assumption (or x5862 x6690)
+:assumption (or x718 x348)
+:assumption (or (not x1431) x28972)
+:assumption (or (not x13857) x756 x2938 (not x4596) x29934 x10874)
+:assumption (or (not x24689) (not x9063))
+:assumption (or x17534 (not x20040))
+:assumption (or x28397 x726)
+:assumption (or x21704 x24094)
+:assumption (or x14970 x29234)
+:assumption (or (not x2753) (not x15918))
+:assumption (or x5518 x19801 (not x1485) x12045 (not x30029))
+:assumption (or x8002 (not x1584))
+:assumption (or (not x26008) (not x22489) x1582)
+:assumption (or x8444 (not x25949))
+:assumption (or x27998 x6654 x21448)
+:assumption (or x27240 x15285 x10909)
+:assumption (or x2133 x18277)
+:assumption (or (not x23211) (not x30751))
+:assumption (or x12225 x8044)
+:assumption (or x27759 x15649)
+:assumption (or x24402 x3477)
+:assumption (or x24802 x23069 x27956 (not x22504) x8602 (not x8324) x8134 x15806)
+:assumption (or x7906 (not x4576))
+:assumption (or (not x25868) (not x4342))
+:assumption (or (not x19295) x11783)
+:assumption (or x5873 x10100)
+:assumption (or x2319 x21298)
+:assumption (or (not x22609) x26469)
+:assumption (or x14454 x18621)
+:assumption (or x27170 (not x12798))
+:assumption (or x28973 x17061 x23244)
+:assumption (or (not x11045) x6245)
+:assumption (or x25490 (not x15333) x6219 (not x28513))
+:assumption (or x1794 (not x14814))
+:assumption (or (not x3010) (not x20929) x2762)
+:assumption (or (not x23646) (not x17684))
+:assumption (or (not x21013) (not x1198))
+:assumption (or x8166 x27680)
+:assumption (or (not x18441) x8665)
+:assumption (or x12665 (not x18214))
+:assumption (or (not x14624) x12494)
+:assumption (or x22635 x6951)
+:assumption (or (not x6899) x9008)
+:assumption (or (not x28607) x1627)
+:assumption (or x23244 x12882)
+:assumption (or x1215 x1090)
+:assumption (or (not x30856) (not x179))
+:assumption (or (not x1528) (not x8080))
+:assumption (or x21505 x172)
+:assumption (or x13412 x9009)
+:assumption (or x4529 (not x13805))
+:assumption (or x5002 (not x711))
+:assumption (or (not x4300) (not x18709))
+:assumption (or x28561 x9559)
+:assumption (or (not x12642) x11982)
+:assumption (or (not x17098) (not x11792) x5274)
+:assumption (or x28716 (not x27915) (not x19432))
+:assumption (or x25579 x21815)
+:assumption (or x6652 x17945 (not x30386) (not x30113))
+:assumption (or x4371 (not x27051))
+:assumption (or x14778 x24736)
+:assumption (or x28181 x17579)
+:assumption (or (not x25532) x9008)
+:assumption (or (not x31922) x5092)
+:assumption (or (not x3051) x2725)
+:assumption (or (not x28804) (not x6196) x27235 x9008 (not x10704) x6961 (not x3261) (not x3315))
+:assumption (or x26425 x17359)
+:assumption (or (not x9225) (not x10457))
+:assumption (or (not x25619) (not x23329))
+:assumption (or x21180 x30224)
+:assumption (or x26366 (not x6447))
+:assumption (or (not x9713) (not x18030))
+:assumption (or x5528 (not x13711) (not x26647))
+:assumption (or x21098 (not x6496))
+:assumption (or x21027 x23037)
+:assumption (or x6747 (not x10863))
+:assumption (or (not x1908) (not x2510))
+:assumption (or x469 (not x2500))
+:assumption (or x526 (not x22669))
+:assumption (or x9364 (not x18003))
+:assumption (or (not x2423) (not x5989) (not x15659))
+:assumption (or x29043 (not x13018))
+:assumption (or (not x22270) x17664)
+:assumption (or x14347 x5119)
+:assumption (or (not x1642) (not x8602))
+:assumption (or (not x24652) (not x16633))
+:assumption (or x11792 (not x6149) x12430)
+:assumption (or x10933 x24108)
+:assumption (or x21276 (not x3079))
+:assumption (or (not x13422) x17846)
+:assumption (or x22994 (not x12923))
+:assumption (or x5222 x23925)
+:assumption (or x25226 (not x14466) (not x30241) x17604)
+:assumption (or x21768 x25214)
+:assumption (or (not x7334) x8919)
+:assumption (or (not x13702) (not x11582))
+:assumption (or x4386 (not x26641))
+:assumption (or (not x3156) x20270 (not x4794) x8333 (not x1768))
+:assumption (or x17357 (not x8240))
+:assumption (or (not x9151) x13956)
+:assumption (or x4551 (not x3228) (not x19946) x21641 (not x3439) (not x22732))
+:assumption (or (not x6432) (not x31466))
+:assumption (or (not x16948) x26085)
+:assumption (or x6560 (not x31152))
+:assumption (or x28941 (not x6840))
+:assumption (or x28941 (not x30923) x25760 x8002 x15311 x21616)
+:assumption (or x6149 (not x30514))
+:assumption (or (not x6268) (not x26266))
+:assumption (or (not x29664) (not x13576))
+:assumption (or x7758 (not x17163))
+:assumption (or x23373 (not x5569))
+:assumption (or (not x29565) (not x4485))
+:assumption (or (not x23244) x19738)
+:assumption (or (not x14551) x28061)
+:assumption (or x6725 (not x218))
+:assumption (or (not x16577) (not x15244))
+:assumption (or (not x23672) x27327)
+:assumption (or (not x6594) (not x18897) x3442 x23784 x9921)
+:assumption (or x27016 (not x15861))
+:assumption (or x27515 x5435)
+:assumption (or x2906 x4287)
+:assumption (or x21815 (not x18423))
+:assumption (or (not x17687) x853)
+:assumption (or x21728 x27549 (not x2659))
+:assumption (or x31668 x8502)
+:assumption (or x9903 x21859)
+:assumption (or (not x15749) (not x560))
+:assumption (or x2435 x974)
+:assumption (or (not x7243) (not x30138))
+:assumption (or (not x24692) x2545 (not x12191) x18069 x9063 (not x23180))
+:assumption (or (not x4538) (not x535))
+:assumption (or x23118 x9343)
+:assumption (or x21298 (not x27162))
+:assumption (or (not x23102) (not x25026))
+:assumption (or x6077 (not x3108))
+:assumption (or (not x27544) (not x30472))
+:assumption (or (not x7293) (not x8548))
+:assumption (or x18154 x5120)
+:assumption (or (not x5477) x7785)
+:assumption (or x17618 x8532 x27522)
+:assumption (or x7847 (not x21138))
+:assumption (or (not x22487) x14053 x29403)
+:assumption (or (not x4651) x15530)
+:assumption (or (not x18870) (not x31252))
+:assumption (or x30359 x3670)
+:assumption (or x16777 x16625)
+:assumption (or x20490 (not x28427) x3264)
+:assumption (or (not x18759) x30695 x17534 x5900 (not x15418))
+:assumption (or (not x3645) x14885)
+:assumption (or x12461 (not x18801) (not x28242) (not x1724))
+:assumption (or (not x9560) x5528)
+:assumption (or (not x11791) (not x7878))
+:assumption (or x26643 x9213)
+:assumption (or x6399 x22256)
+:assumption (or (not x17242) (not x5796))
+:assumption (or x9086 (not x24716))
+:assumption (or (not x28654) (not x13769))
+:assumption (or x29397 (not x620))
+:assumption (or (not x31420) (not x29738))
+:assumption (or x2055 x30388)
+:assumption (or x3776 x28673)
+:assumption (or (not x151) (not x3072))
+:assumption (or (not x23686) (not x13497))
+:assumption (or (not x12004) (not x4175))
+:assumption (or (not x28047) x7608)
+:assumption (or (not x20615) (not x18548))
+:assumption (or x26084 (not x6137) x6227)
+:assumption (or x6264 (not x22295))
+:assumption (or x19790 x2916)
+:assumption (or (not x28855) x28470)
+:assumption (or x11465 x31168 x7488 (not x26637))
+:assumption (or x24607 (not x27480))
+:assumption (or (not x15006) x19760)
+:assumption (or x9673 (not x20648))
+:assumption (or (not x10655) x1923 x10154 (not x4259))
+:assumption (or x10536 x11128)
+:assumption (or x1824 x10532)
+:assumption (or (not x13214) x26997)
+:assumption (or (not x12002) x2352)
+:assumption (or x21690 (not x7770))
+:assumption (or x3994 (not x28620))
+:assumption (or x18175 x1067)
+:assumption (or x21985 (not x29204))
+:assumption (or (not x7573) (not x16209))
+:assumption (or (not x10789) (not x710))
+:assumption (or (not x16604) x6381 x15821)
+:assumption (or x603 (not x29649))
+:assumption (or x15520 (not x28235))
+:assumption (or x30443 x13406)
+:assumption (or (not x13893) x8484 (not x27356) x2189 (not x11224))
+:assumption (or x15489 (not x25472))
+:assumption (or x20550 x23847)
+:assumption (or x8775 (not x5642))
+:assumption (or x14967 (not x11968))
+:assumption (or x16455 x31803)
+:assumption (or x31172 x21117)
+:assumption (or (not x13995) (not x12010))
+:assumption (or (not x3359) x20515)
+:assumption (or x21139 (not x17627))
+:assumption (or (not x23113) (not x2816))
+:assumption (or x28143 x2143)
+:assumption (or (not x7210) x19167)
+:assumption (or x23054 x6873)
+:assumption (or (not x28249) (not x18686))
+:assumption (or x20922 x2177)
+:assumption (or x2368 (not x17600))
+:assumption (or x29451 (not x19992))
+:assumption (or (not x29798) x25659 x24143)
+:assumption (or x18595 x22618)
+:assumption (or (not x27118) x6969 x22385)
+:assumption (or (not x18665) x17749)
+:assumption (or (not x7139) x28466)
+:assumption (or x25911 x24334)
+:assumption (or (not x13722) (not x31811))
+:assumption (or (not x11394) x9453 x7133)
+:assumption (or (not x31239) (not x16336))
+:assumption (or x29375 x12731)
+:assumption (or (not x3947) x14819)
+:assumption (or (not x25627) (not x29146))
+:assumption (or (not x30918) (not x3884) x28361 (not x25489) (not x28483))
+:assumption (or (not x26911) (not x3130) x12559 (not x11265) x18388 x18417 x15326 x14228 (not x9182))
+:assumption (or x8028 x16507 (not x17933) x16013 (not x15698) (not x7752) (not x2235))
+:assumption (or (not x19864) x9578)
+:assumption (or (not x18950) x14386)
+:assumption (or x6680 (not x11531))
+:assumption (or x23360 x27659)
+:assumption (or (not x1589) x4529)
+:assumption (or x18859 (not x26426))
+:assumption (or (not x14602) (not x13030))
+:assumption (or (not x19247) x2880)
+:assumption (or x12796 (not x2778) (not x21333) x27632 x19538)
+:assumption (or x25744 x9008)
+:assumption (or x5297 (not x30138))
+:assumption (or x15848 x689)
+:assumption (or x9820 x21535)
+:assumption (or (not x17941) x14814 (not x8843))
+:assumption (or x12592 x1625 (not x7542))
+:assumption (or (not x3941) x28068)
+:assumption (or (not x14619) (not x26173))
+:assumption (or x9491 (not x12518))
+:assumption (or (not x26001) (not x28833))
+:assumption (or (not x1985) (not x25659) (not x28547) (not x20275) (not x16792))
+:assumption (or (not x13022) (not x1444))
+:assumption (or (not x7594) x20201)
+:assumption (or (not x10237) x5423)
+:assumption (or x5589 x30713)
+:assumption (or x23067 x2190)
+:assumption (or (not x18191) x28237)
+:assumption (or x27449 (not x19286))
+:assumption (or x2142 (not x12907))
+:assumption (or (not x8937) (not x11979))
+:assumption (or (not x23580) x12234)
+:assumption (or x6659 (not x22535))
+:assumption (or (not x29131) (not x16329))
+:assumption (or x6397 (not x13889))
+:assumption (or x27667 x1051)
+:assumption (or (not x31876) x25313)
+:assumption (or (not x3063) x23412 (not x5462))
+:assumption (or x9928 (not x1683))
+:assumption (or x8197 x30633)
+:assumption (or x23268 x31114)
+:assumption (or (not x4924) (not x17834))
+:assumption (or x14839 x5046)
+:assumption (or (not x2338) x28125)
+:assumption (or x16365 (not x19240))
+:assumption (or x23244 x22533)
+:assumption (or (not x6380) (not x12669))
+:assumption (or (not x24285) x1268)
+:assumption (or (not x3618) x20358)
+:assumption (or (not x7775) (not x24123))
+:assumption (or (not x7854) x26713 (not x26493) x15807)
+:assumption (or x22570 x28195 x23299 (not x17970) x3410 x8270)
+:assumption (or (not x18689) (not x21670))
+:assumption (or x12190 (not x22531))
+:assumption (or x31463 (not x25161) x18835 x5204 (not x4118) (not x11690) (not x30918) x12102)
+:assumption (or x7460 (not x13906))
+:assumption (or (not x13086) (not x10356))
+:assumption (or (not x25010) x4383)
+:assumption (or x23038 (not x17284))
+:assumption (or (not x15590) (not x12496) x873 (not x16729))
+:assumption (or (not x15871) (not x13415))
+:assumption (or x14189 x30648)
+:assumption (or (not x9068) x1579)
+:assumption (or (not x23740) (not x5535))
+:assumption (or (not x30667) (not x26368))
+:assumption (or x411 x25659 x3285)
+:assumption (or (not x19744) x29442)
+:assumption (or (not x973) x6164)
+:assumption (or (not x26171) (not x28634) (not x5410) x17810 (not x3158) x17762 (not x20869) x30259)
+:assumption (or (not x17002) x13631)
+:assumption (or (not x17386) (not x16597))
+:assumption (or x22751 (not x12723))
+:assumption (or (not x28309) (not x13767))
+:assumption (or (not x9905) (not x22816))
+:assumption (or (not x16510) (not x18352) x20087 (not x8902) x26432 (not x21815) (not x1136))
+:assumption (or x19173 x15026)
+:assumption (or (not x9333) (not x5742) (not x28709) x8757)
+:assumption (or (not x24966) x3937 x19992 x20116)
+:assumption (or x22956 x14825)
+:assumption (or x24016 x28597)
+:assumption (or (not x24722) (not x25472) x18415)
+:assumption (or x19622 (not x2951))
+:assumption (or (not x14555) x14918)
+:assumption (or (not x5115) x964 (not x19792))
+:assumption (or x7499 (not x17033))
+:assumption (or x2816 (not x3516))
+:assumption (or x20147 x7629)
+:assumption (or (not x22855) (not x25869))
+:assumption (or x2389 x25059 (not x26161) (not x144))
+:assumption (or (not x23244) (not x18003) (not x6670))
+:assumption (or (not x29542) x25659 x15088)
+:assumption (or x23376 x6731)
+:assumption (or x20060 x9398 (not x14244))
+:assumption (or x16470 (not x10358) x18879)
+:assumption (or (not x9008) x7472)
+:assumption (or x6502 x24129 (not x18694) x30363)
+:assumption (or x4033 x25846)
+:assumption (or (not x5715) x103)
+:assumption (or (not x9035) (not x987))
+:assumption (or x22963 x15034 x19495 x3494 (not x18069))
+:assumption (or (not x27734) x23388)
+:assumption (or (not x23244) (not x29672))
+:assumption (or (not x26093) x238)
+:assumption (or (not x19915) (not x18621))
+:assumption (or (not x18013) (not x1116) (not x10044))
+:assumption (or x6910 (not x22554) x21804 (not x838))
+:assumption (or (not x11630) (not x20024))
+:assumption (or x18673 (not x23870))
+:assumption (or (not x24623) x12095)
+:assumption (or (not x8436) x12108)
+:assumption (or x3678 (not x16434))
+:assumption (or (not x15558) x1649)
+:assumption (or (not x755) x20746)
+:assumption (or (not x23327) (not x29255))
+:assumption (or (not x18600) (not x7552))
+:assumption (or x13550 (not x15716))
+:assumption (or x19783 (not x15628))
+:assumption (or x20299 x30106)
+:assumption (or (not x15399) (not x24934))
+:assumption (or (not x10214) (not x30425))
+:assumption (or x3814 (not x20322))
+:assumption (or x4823 x19667 (not x308) x815)
+:assumption (or (not x30054) (not x28574))
+:assumption (or x21505 x2116)
+:assumption (or (not x10334) x16996)
+:assumption (or (not x1278) x4401)
+:assumption (or x15197 x30257 (not x7145) (not x24525) x25839 x24226)
+:assumption (or (not x21407) x9008)
+:assumption (or x22564 x13004)
+:assumption (or x6935 x26868)
+:assumption (or x24757 x4313)
+:assumption (or x24540 (not x23654))
+:assumption (or x23244 (not x17359) (not x19191))
+:assumption (or x5642 (not x26887))
+:assumption (or (not x2024) (not x23656))
+:assumption (or (not x18650) (not x2900))
+:assumption (or (not x7341) (not x18504))
+:assumption (or x13390 x13348)
+:assumption (or x27858 (not x7834))
+:assumption (or (not x29991) (not x23630))
+:assumption (or (not x16226) (not x5813))
+:assumption (or (not x11336) x20176 (not x2422) (not x8323) (not x12758) x10144 x15112 x13673 (not x30324))
+:assumption (or (not x22855) x12697)
+:assumption (or (not x10048) (not x25283))
+:assumption (or x86 (not x20574))
+:assumption (or x19305 (not x23958) (not x340) (not x15397))
+:assumption (or x12788 (not x4137))
+:assumption (or (not x23894) (not x20060) x20735)
+:assumption (or x19966 (not x10804))
+:assumption (or x18193 (not x10802))
+:assumption (or x26388 (not x29383) x3069 (not x4425) x9554 x13641 (not x4695) x8602)
+:assumption (or x18167 (not x26951))
+:assumption (or x28493 (not x20000))
+:assumption (or (not x7390) (not x23244))
+:assumption (or x12262 (not x18625))
+:assumption (or x16544 x18960)
+:assumption (or (not x25507) (not x18694))
+:assumption (or x20561 (not x31134))
+:assumption (or (not x28813) x24538)
+:assumption (or x5528 (not x6622))
+:assumption (or (not x23244) x18661 x16409)
+:assumption (or (not x19183) (not x26285))
+:assumption (or x2511 (not x6655))
+:assumption (or (not x6561) x24381 (not x4264) x29887)
+:assumption (or (not x9196) (not x8155))
+:assumption (or x5730 x1412)
+:assumption (or x25151 x25820 (not x18679) (not x5613))
+:assumption (or x6718 (not x28796))
+:assumption (or (not x17592) x7374)
+:assumption (or (not x15795) x3177)
+:assumption (or x5221 x20569)
+:assumption (or (not x16807) x22354)
+:assumption (or (not x30733) (not x7171))
+:assumption (or x8799 (not x5528))
+:assumption (or (not x17534) (not x16510) x5028 (not x21815) x25283 x16767 x4003)
+:assumption (or (not x12003) (not x28785))
+:assumption (or x21663 (not x13238))
+:assumption (or (not x15561) x5637)
+:assumption (or x24310 (not x21024))
+:assumption (or (not x696) (not x14839))
+:assumption (or x24142 (not x8956))
+:assumption (or (not x13984) x13978)
+:assumption (or (not x10980) (not x11734))
+:assumption (or (not x13068) x29663)
+:assumption (or (not x78) (not x20892))
+:assumption (or (not x14132) (not x6136))
+:assumption (or (not x13977) x23823)
+:assumption (or (not x13956) x29491)
+:assumption (or x27366 (not x31438))
+:assumption (or (not x28064) x9025)
+:assumption (or (not x9008) x27283)
+:assumption (or (not x16745) x9836)
+:assumption (or x9558 (not x8868))
+:assumption (or x8561 (not x11768))
+:assumption (or (not x10492) x3275)
+:assumption (or (not x28024) x24756 (not x11594))
+:assumption (or x28063 x9624)
+:assumption (or x24102 x13261)
+:assumption (or (not x25854) x20460 (not x22235) x9253 x14313 x7511)
+:assumption (or (not x14423) (not x8002))
+:assumption (or (not x27340) (not x6955))
+:assumption (or (not x4358) x29705)
+:assumption (or x3200 x12948)
+:assumption (or (not x26008) x25660 (not x25659))
+:assumption (or x14265 x24600)
+:assumption (or x12242 (not x25851))
+:assumption (or (not x8535) (not x30521))
+:assumption (or x29122 x9821)
+:assumption (or x30895 (not x23113))
+:assumption (or (not x29955) (not x5786))
+:assumption (or x30988 (not x543))
+:assumption (or (not x27437) x21276)
+:assumption (or x24725 x6075 (not x28372) (not x60))
+:assumption (or (not x2994) x7200)
+:assumption (or (not x22763) (not x14797))
+:assumption (or x29903 (not x22493))
+:assumption (or (not x25950) x24253)
+:assumption (or x25897 x6307)
+:assumption (or x11138 x26632)
+:assumption (or x24148 (not x13884))
+:assumption (or x13373 (not x4058))
+:assumption (or x16455 (not x16584))
+:assumption (or x12163 x11783)
+:assumption (or (not x7152) (not x22283))
+:assumption (or x16242 (not x27982))
+:assumption (or x9881 (not x13783))
+:assumption (or (not x27024) (not x23579) x15668 x26905 (not x27943) x25960 (not x28732) (not x24406))
+:assumption (or x9076 (not x13487))
+:assumption (or (not x1671) x11097)
+:assumption (or (not x22497) (not x27845) x13640 x28038)
+:assumption (or x4850 (not x31829))
+:assumption (or (not x16646) (not x13308))
+:assumption (or (not x10565) (not x9897))
+:assumption (or (not x30138) x25844)
+:assumption (or x8381 x22030)
+:assumption (or x27154 x29354)
+:assumption (or (not x22989) (not x6257))
+:assumption (or x27807 (not x6097))
+:assumption (or x1212 x9647)
+:assumption (or (not x29483) x13203)
+:assumption (or x26882 x675)
+:assumption (or x16910 x9321)
+:assumption (or x27518 x24408)
+:assumption (or (not x16281) x29085 x5596)
+:assumption (or x25167 (not x9008))
+:assumption (or x14654 (not x23244))
+:assumption (or (not x25818) (not x19872))
+:assumption (or (not x23270) (not x26708))
+:assumption (or (not x28083) x16729)
+:assumption (or x1277 x8660 x11374 x25366)
+:assumption (or (not x4643) (not x18770))
+:assumption (or (not x17887) (not x25192))
+:assumption (or (not x23067) x11482 (not x3837) (not x18509))
+:assumption (or (not x653) (not x30995))
+:assumption (or (not x14607) (not x18911))
+:assumption (or (not x19516) x4491)
+:assumption (or (not x16128) (not x9849))
+:assumption (or (not x6619) (not x14132))
+:assumption (or x29288 (not x30603))
+:assumption (or x27635 (not x477))
+:assumption (or x10269 (not x29269))
+:assumption (or (not x5333) (not x1908))
+:assumption (or (not x5959) x13956 (not x16809))
+:assumption (or x25918 (not x25917))
+:assumption (or (not x30985) x975 (not x9531) x27664 x23157)
+:assumption (or x18853 x2946)
+:assumption (or (not x15698) x1787)
+:assumption (or (not x28342) x12772)
+:assumption (or (not x8252) (not x16119))
+:assumption (or (not x1415) (not x2993))
+:assumption (or x17268 (not x16787) x9008)
+:assumption (or x17625 (not x27057))
+:assumption (or (not x8075) x4994)
+:assumption (or (not x31701) x25765)
+:assumption (or (not x31636) x21494)
+:assumption (or x12415 (not x30401))
+:assumption (or x15126 (not x11780))
+:assumption (or (not x12331) (not x2777))
+:assumption (or (not x24221) (not x15547))
+:assumption (or (not x13426) (not x4994) x23724 x26862 (not x29649) (not x9874))
+:assumption (or (not x12524) x7318)
+:assumption (or (not x9008) x690 (not x30608))
+:assumption (or (not x2702) (not x19052))
+:assumption (or x9790 x24874)
+:assumption (or x5436 x28914)
+:assumption (or x22392 x28118)
+:assumption (or (not x26192) x6615)
+:assumption (or x14537 x16608)
+:assumption (or (not x31681) (not x1131))
+:assumption (or x28122 (not x8153))
+:assumption (or (not x9629) x5473)
+:assumption (or x21138 x16648 (not x7847) x4920)
+:assumption (or (not x9602) (not x11394))
+:assumption (or x2859 (not x2832))
+:assumption (or x12923 x30152)
+:assumption (or x4856 (not x16397))
+:assumption (or x6958 x30442)
+:assumption (or x27242 x12193)
+:assumption (or x7123 x17518)
+:assumption (or (not x11804) (not x9632))
+:assumption (or x18597 (not x19590) x2793 (not x20291))
+:assumption (or (not x25423) x29209 x1912)
+:assumption (or x20967 (not x23748) (not x25659) x24339 (not x4309) x22240 (not x15948) (not x7769))
+:assumption (or x21202 (not x29697))
+:assumption (or x30058 (not x27240))
+:assumption (or x15363 (not x1054))
+:assumption (or (not x6108) (not x17110) x26715 x23909 (not x14630) (not x30446) (not x1582) (not x458))
+:assumption (or x28000 (not x7874))
+:assumption (or (not x3087) x25961)
+:assumption (or (not x23952) (not x23460))
+:assumption (or x14836 x14347)
+:assumption (or x4454 (not x1631))
+:assumption (or x13065 (not x25508))
+:assumption (or x704 x13890)
+:assumption (or x22477 x14522 x7295)
+:assumption (or (not x1393) (not x6124) (not x14807))
+:assumption (or (not x13317) (not x25047))
+:assumption (or (not x22039) (not x11437))
+:assumption (or (not x6593) x12378)
+:assumption (or (not x20180) x16470)
+:assumption (or x20236 (not x13952))
+:assumption (or (not x7160) (not x5025) (not x23671))
+:assumption (or (not x9066) (not x6969))
+:assumption (or (not x2912) (not x6746) (not x25543) x15487)
+:assumption (or x9632 (not x17278))
+:assumption (or x29649 x11000)
+:assumption (or x23936 (not x12201) x2865 (not x12988) (not x25226) x26734 (not x12876) x18477)
+:assumption (or x11162 x19340)
+:assumption (or x17297 x17867)
+:assumption (or x30493 x26164)
+:assumption (or x19174 (not x6323) x19660 (not x26401) (not x13527) (not x23153) (not x21400) (not x8191) (not x7717))
+:assumption (or x10935 (not x5614))
+:assumption (or (not x11281) (not x21794))
+:assumption (or (not x3860) (not x15308))
+:assumption (or x8002 (not x19605))
+:assumption (or x14132 x1892 x10751 (not x13818) x11394 x6136)
+:assumption (or x28228 x29201)
+:assumption (or (not x20479) x27597)
+:assumption (or x30190 (not x5990))
+:assumption (or (not x23914) x31137)
+:assumption (or (not x5909) (not x5367))
+:assumption (or x26579 x31092)
+:assumption (or x16128 (not x26956))
+:assumption (or x17318 x13501)
+:assumption (or (not x28262) (not x10059))
+:assumption (or x3164 x20336)
+:assumption (or (not x5645) x8365 (not x31895))
+:assumption (or x24674 x12403)
+:assumption (or x14271 x30002)
+:assumption (or x20810 x15366 x13832 x6641 x23118 (not x24417) (not x30649))
+:assumption (or x22999 (not x3754))
+:assumption (or (not x6195) (not x24039))
+:assumption (or (not x23432) (not x2739))
+:assumption (or (not x25707) x20710)
+:assumption (or (not x28770) x22906)
+:assumption (or (not x1393) x6273)
+:assumption (or (not x6378) x4910)
+:assumption (or (not x6058) x31036 (not x14310))
+:assumption (or (not x16181) (not x6926))
+:assumption (or x28396 x30641)
+:assumption (or x28299 x27646 x2308 (not x21128) (not x16653) x1081 x7200 x29075)
+:assumption (or x4403 (not x20576))
+:assumption (or x1042 (not x24821))
+:assumption (or (not x975) (not x13420))
+:assumption (or x31341 x17326 (not x10912))
+:assumption (or x15227 x27998 x6206)
+:assumption (or (not x28336) (not x27941) x20550 x25659 (not x18042))
+:assumption (or x9189 (not x10529) (not x19674))
+:assumption (or (not x15299) (not x2523))
+:assumption (or x4136 (not x7865))
+:assumption (or (not x18665) (not x27528))
+:assumption (or (not x19023) (not x16025))
+:assumption (or x16617 x8851)
+:assumption (or (not x9025) x8012)
+:assumption (or (not x25224) (not x30382))
+:assumption (or (not x6911) (not x212) x25784)
+:assumption (or x12312 x26058)
+:assumption (or (not x7447) (not x31353))
+:assumption (or x24987 (not x5528))
+:assumption (or x4010 (not x15387) (not x31767))
+:assumption (or x15423 (not x19405))
+:assumption (or (not x30077) x9008)
+:assumption (or x8363 x23610)
+:assumption (or x10786 (not x10826) x24607 x3453 (not x19630))
+:assumption (or (not x19267) (not x18251) x18825)
+:assumption (or x10368 x20092)
+:assumption (or (not x9945) (not x7461) x2384)
+:assumption (or (not x14173) x28887)
+:assumption (or x13763 (not x22663) (not x6530) x3973)
+:assumption (or x8422 (not x2371) x213 (not x25423))
+:assumption (or (not x1481) x9452)
+:assumption (or x9008 x30323)
+:assumption (or x1116 x2861)
+:assumption (or x7595 (not x22531) (not x20))
+:assumption (or (not x15371) (not x25185))
+:assumption (or x29969 (not x8514))
+:assumption (or x7323 x1369)
+:assumption (or (not x18006) (not x22955))
+:assumption (or (not x2874) (not x30824) x22442 (not x4812) x18867 x628 x24992 x19733 x8938)
+:assumption (or (not x191) (not x19108))
+:assumption (or (not x28708) x150)
+:assumption (or x4024 x13764)
+:assumption (or (not x30461) (not x4528))
+:assumption (or x12588 (not x4788))
+:assumption (or x18469 (not x28949))
+:assumption (or x11665 (not x21026))
+:assumption (or (not x27911) (not x10470))
+:assumption (or (not x19907) x18139)
+:assumption (or x23476 (not x8240))
+:assumption (or x5003 (not x28309))
+:assumption (or x16849 (not x9637))
+:assumption (or x4491 x13723)
+:assumption (or x8779 (not x21141))
+:assumption (or (not x6179) x4702)
+:assumption (or (not x1169) (not x20209))
+:assumption (or x29670 x6106)
+:assumption (or (not x8487) x28394)
+:assumption (or x3435 (not x18195))
+:assumption (or x25423 x7546)
+:assumption (or x9717 x21955)
+:assumption (or (not x25386) (not x14593))
+:assumption (or x23822 (not x29308))
+:assumption (or (not x1220) (not x16839))
+:assumption (or (not x7672) x8754)
+:assumption (or x19934 (not x23488))
+:assumption (or x15537 (not x13025) (not x11377) x8979 x19675)
+:assumption (or x13138 (not x30164) (not x20954) x22481 (not x23465))
+:assumption (or (not x22170) x19111)
+:assumption (or (not x133) (not x31162))
+:assumption (or (not x30555) (not x8319))
+:assumption (or x23579 x27024)
+:assumption (or (not x14015) (not x8002) (not x23244) (not x10373))
+:assumption (or x3443 (not x14946))
+:assumption (or x17276 (not x24075))
+:assumption (or (not x29656) x21457)
+:assumption (or (not x6521) x14789 x5817 x1344)
+:assumption (or (not x18623) (not x5024) (not x13956))
+:assumption (or x17979 x13013 x27000)
+:assumption (or (not x12414) x15424)
+:assumption (or x31179 x15149)
+:assumption (or x8239 x5523)
+:assumption (or x6783 x13986)
+:assumption (or (not x1975) x2478)
+:assumption (or x23403 x21115)
+:assumption (or x4289 x2802 x6351)
+:assumption (or (not x31449) x8655)
+:assumption (or (not x3283) (not x27265) x16802)
+:assumption (or (not x20765) x7663)
+:assumption (or (not x23395) (not x21339))
+:assumption (or (not x1470) (not x9807))
+:assumption (or (not x24354) (not x12526))
+:assumption (or (not x14689) x30762)
+:assumption (or (not x14729) (not x13104))
+:assumption (or x24596 x6594)
+:assumption (or x15557 x16010)
+:assumption (or (not x20317) x29636)
+:assumption (or x2330 x31250)
+:assumption (or (not x23446) (not x3356))
+:assumption (or (not x21785) (not x26278))
+:assumption (or (not x29787) x26146)
+:assumption (or (not x3037) (not x11999))
+:assumption (or x22077 (not x1790))
+:assumption (or (not x20696) x13557 x13576)
+:assumption (or (not x31145) (not x10884))
+:assumption (or (not x2282) x785)
+:assumption (or (not x17759) (not x17389))
+:assumption (or x20220 (not x12077))
+:assumption (or x4776 (not x20617))
+:assumption (or x8140 (not x29752) x17440)
+:assumption (or x4349 (not x2982))
+:assumption (or (not x28797) (not x15786))
+:assumption (or x30870 x23050 x14952)
+:assumption (or (not x2434) x31630 x24693)
+:assumption (or (not x22360) (not x26986))
+:assumption (or x25061 (not x11689))
+:assumption (or (not x19757) x17109)
+:assumption (or (not x16266) (not x18607))
+:assumption (or x21366 x27324)
+:assumption (or x26898 x24722 x13415 x16802)
+:assumption (or (not x10058) x5446 (not x4962) (not x15653) (not x30138))
+:assumption (or x8002 x15542)
+:assumption (or (not x25423) x7550)
+:assumption (or (not x30826) x5612)
+:assumption (or (not x5501) x12885 x184 x29570)
+:assumption (or (not x30003) (not x17344))
+:assumption (or (not x9621) x9008 (not x17389) x9557 x24127 x9757 x6010 x29261)
+:assumption (or (not x31620) (not x12413))
+:assumption (or x26113 x10147)
+:assumption (or (not x31185) (not x3629))
+:assumption (or x29157 x10921)
+:assumption (or x6600 x5209 x17757 (not x25517))
+:assumption (or x2580 x13942)
+:assumption (or (not x6365) (not x25481) (not x18080))
+:assumption (or (not x18742) x1651)
+:assumption (or (not x970) x6255)
+:assumption (or x27732 (not x16981))
+:assumption (or x17546 x7530)
+:assumption (or (not x7613) x31281)
+:assumption (or (not x19193) x22427)
+:assumption (or (not x23244) (not x28976))
+:assumption (or (not x20242) (not x10051) x8647 (not x7043) (not x9941) x25069)
+:assumption (or (not x28652) (not x12103))
+:assumption (or (not x3772) x8499)
+:assumption (or x1284 (not x27793))
+:assumption (or (not x18389) x1876)
+:assumption (or (not x28385) (not x21812))
+:assumption (or (not x4334) x18906)
+:assumption (or (not x15954) (not x30722))
+:assumption (or (not x7017) x26577)
+:assumption (or x4166 (not x15295))
+:assumption (or (not x17331) (not x24424))
+:assumption (or (not x25918) (not x20944))
+:assumption (or x3016 (not x18651))
+:assumption (or (not x19147) (not x30113))
+:assumption (or (not x21471) (not x4511) (not x31475) x19992)
+:assumption (or (not x20782) (not x31836))
+:assumption (or (not x1838) (not x17295))
+:assumption (or (not x2926) (not x28118) (not x10490) (not x18171))
+:assumption (or x22553 x16026)
+:assumption (or x20753 (not x30660))
+:assumption (or x17359 (not x20169) (not x12909) x26432)
+:assumption (or (not x5474) x30667)
+:assumption (or x14087 x22742)
+:assumption (or x28363 (not x4860))
+:assumption (or x13462 (not x8863))
+:assumption (or (not x21720) x6677)
+:assumption (or x20043 (not x31759))
+:assumption (or x22229 (not x4522))
+:assumption (or (not x20251) (not x25361) x8002)
+:assumption (or (not x19829) (not x23244) x25028 (not x2157) (not x22183) x7541)
+:assumption (or (not x29832) (not x29885))
+:assumption (or x9014 (not x11851) x12409)
+:assumption (or (not x19386) (not x27592) x20637)
+:assumption (or (not x8431) (not x275))
+:assumption (or (not x7586) (not x5528))
+:assumption (or x6381 x30595)
+:assumption (or x29569 (not x8961))
+:assumption (or (not x17134) (not x15322) (not x25987) x29959 x15969)
+:assumption (or (not x22622) (not x24316))
+:assumption (or x18990 x3690 x3848 x30794 x22736 x15719)
+:assumption (or (not x3980) x27359)
+:assumption (or x9008 (not x28720) x1316)
+:assumption (or x24273 (not x13956))
+:assumption (or (not x1753) (not x19682))
+:assumption (or (not x7139) x28082)
+:assumption (or x20794 x19551)
+:assumption (or (not x13196) (not x29573))
+:assumption (or x22822 x16414)
+:assumption (or (not x27780) x12969)
+:assumption (or (not x11674) (not x28536))
+:assumption (or (not x23726) x16169)
+:assumption (or x5501 x19183)
+:assumption (or (not x12369) (not x4619))
+:assumption (or x16268 (not x4993))
+:assumption (or (not x23768) (not x20651))
+:assumption (or x9238 (not x4970))
+:assumption (or x24446 x28033)
+:assumption (or (not x20303) (not x17116) x20573)
+:assumption (or x21519 x19861)
+:assumption (or x18162 x732)
+:assumption (or x28161 x3888)
+:assumption (or x3125 (not x20252))
+:assumption (or x23896 x21746)
+:assumption (or x4423 (not x685))
+:assumption (or x28342 x21945)
+:assumption (or (not x29454) (not x8399))
+:assumption (or (not x22362) x29599)
+:assumption (or x25573 x23063)
+:assumption (or x9359 (not x4474))
+:assumption (or (not x10167) (not x2451))
+:assumption (or (not x27893) (not x27307))
+:assumption (or (not x20176) (not x29858))
+:assumption (or (not x3655) (not x19090))
+:assumption (or x24288 (not x25659))
+:assumption (or (not x24722) x20298)
+:assumption (or (not x13956) x18949)
+:assumption (or x1052 x15506 x1621)
+:assumption (or (not x8696) (not x12641))
+:assumption (or (not x24434) x15691 (not x26528) (not x29232) x20189 x6038 x8503)
+:assumption (or (not x460) (not x2022))
+:assumption (or (not x2456) x12298)
+:assumption (or x14955 x891)
+:assumption (or x20219 x6282 x13434 x27164)
+:assumption (or (not x22605) x4433)
+:assumption (or x430 x9912)
+:assumption (or x17855 (not x20580) x30807 (not x2685))
+:assumption (or (not x20606) (not x4144))
+:assumption (or x31199 (not x23009))
+:assumption (or (not x16025) (not x29998) (not x20022))
+:assumption (or (not x11633) x17556)
+:assumption (or x3403 (not x27235))
+:assumption (or x16442 (not x1349))
+:assumption (or (not x10742) x23320)
+:assumption (or (not x5982) x8923)
+:assumption (or x23804 (not x21711))
+:assumption (or x30472 (not x7298) x27544 (not x28735) (not x6264))
+:assumption (or x12887 x6415)
+:assumption (or x14723 (not x109))
+:assumption (or x25366 x16269)
+:assumption (or x13101 (not x16060))
+:assumption (or x18114 x22586)
+:assumption (or (not x4419) (not x30639) (not x11528) x1565 (not x736))
+:assumption (or x17507 x2712)
+:assumption (or (not x22630) x8442)
+:assumption (or (not x6641) (not x4407))
+:assumption (or x16144 (not x12752))
+:assumption (or x21898 x15255)
+:assumption (or (not x26776) x19037 x14721 (not x31561))
+:assumption (or (not x15725) x11261)
+:assumption (or x15935 x29484)
+:assumption (or x16223 (not x11391))
+:assumption (or x25061 (not x5444))
+:assumption (or x8305 x2716 x16491 x9298 x22849 x14158)
+:assumption (or (not x10958) (not x18387))
+:assumption (or x17926 (not x13564))
+:assumption (or x19703 x2898 x19459 x7106 x13621)
+:assumption (or x23900 (not x18439) x31767 x31687)
+:assumption (or x8454 (not x14838))
+:assumption (or (not x23244) x2663)
+:assumption (or (not x28743) x16674 x25044)
+:assumption (or x8002 (not x28280) x29989 (not x1414) (not x4557) (not x5265))
+:assumption (or (not x31859) (not x6363))
+:assumption (or (not x3401) (not x2483) x16123 (not x17897))
+:assumption (or (not x8002) x13270)
+:assumption (or x29792 (not x17922) x16011 x17288 (not x4804) x28772 (not x25112) x23137)
+:assumption (or (not x30042) (not x20687))
+:assumption (or (not x2718) x24251)
+:assumption (or (not x3072) x990)
+:assumption (or x19095 x3929)
+:assumption (or (not x5859) (not x17372))
+:assumption (or (not x1230) x14784)
+:assumption (or x25207 (not x28328))
+:assumption (or (not x14114) (not x12839))
+:assumption (or (not x12390) (not x25529) x3063 x17472)
+:assumption (or (not x31119) (not x17827) (not x20610) x22576)
+:assumption (or x23800 x10263)
+:assumption (or (not x28658) (not x19355))
+:assumption (or x22237 x10486)
+:assumption (or (not x8889) (not x26080))
+:assumption (or (not x13956) x6867)
+:assumption (or (not x810) (not x15274))
+:assumption (or (not x25549) x637)
+:assumption (or (not x14025) (not x10655))
+:assumption (or (not x17855) (not x11963) (not x11891) x9244)
+:assumption (or x13487 (not x24197))
+:assumption (or x16304 (not x6076) (not x15161))
+:assumption (or (not x9220) (not x22838))
+:assumption (or x27020 (not x23196))
+:assumption (or x23552 x15227)
+:assumption (or (not x3225) (not x25784))
+:assumption (or (not x11734) x5834 x9751 (not x14266) x10498 x29250 x27155 (not x24271))
+:assumption (or (not x8602) (not x564))
+:assumption (or (not x8656) x19913)
+:assumption (or (not x26925) x9701)
+:assumption (or x6731 x14435)
+:assumption (or x18121 (not x31555))
+:assumption (or (not x24019) x15139)
+:assumption (or (not x26688) x14336)
+:assumption (or x17618 x8532 x1237 (not x13342))
+:assumption (or (not x22026) (not x31700))
+:assumption (or (not x18403) (not x18100))
+:assumption (or x3176 (not x16342) (not x10605) x3671 (not x7711) x16252)
+:assumption (or x3010 (not x2762))
+:assumption (or x2505 (not x11274) x7122)
+:assumption (or (not x29761) x27828)
+:assumption (or x6295 x30670)
+:assumption (or (not x4636) (not x1333))
+:assumption (or (not x14197) x27266)
+:assumption (or (not x30104) x11534 x5723 x3234 x6275 (not x31612) x25611 x23543 x11029)
+:assumption (or (not x13335) x11426)
+:assumption (or x31434 x22956)
+:assumption (or x23279 x16818)
+:assumption (or x23170 x2016)
+:assumption (or x15900 (not x24440))
+:assumption (or x2007 (not x30721))
+:assumption (or x19140 (not x452) (not x15221) (not x1582) (not x17438) x21267 x1767)
+:assumption (or x12786 x6877)
+:assumption (or (not x17119) (not x2099))
+:assumption (or (not x31223) x863)
+:assumption (or x11882 x31336)
+:assumption (or x9264 x17690)
+:assumption (or x31720 x8658 x18399 (not x17224))
+:assumption (or x5060 (not x2168) x248 x22531 (not x9610))
+:assumption (or (not x12242) (not x27242) x14187)
+:assumption (or x7707 (not x12181) (not x2650) x9799 x26136)
+:assumption (or x5865 x4682 (not x21546) x10020 x18402 (not x1773))
+:assumption (or (not x11962) x27885)
+:assumption (or (not x24984) x30536)
+:assumption (or x11192 x6748 (not x21298) (not x23812))
+:assumption (or x3913 x969)
+:assumption (or x25393 (not x31703))
+:assumption (or x27083 x22446)
+:assumption (or (not x21117) (not x20246))
+:assumption (or x3855 (not x7539))
+:assumption (or (not x27957) (not x27638))
+:assumption (or (not x28525) x17676)
+:assumption (or x31415 x21994)
+:assumption (or (not x26932) (not x29225))
+:assumption (or (not x12191) (not x15385) (not x24692) x2545 (not x23244) (not x23180))
+:assumption (or x31406 x14341)
+:assumption (or x24538 x27222)
+:assumption (or x10252 x7477)
+:assumption (or (not x14839) (not x23393) (not x17747))
+:assumption (or (not x5755) (not x15316))
+:assumption (or (not x27402) (not x18297))
+:assumption (or x5008 x811)
+:assumption (or x23735 (not x16374))
+:assumption (or (not x15046) (not x6503))
+:assumption (or (not x1552) (not x4259) (not x14628) (not x429) (not x4098))
+:assumption (or x19279 x29184)
+:assumption (or (not x19899) x29442)
+:assumption (or (not x14557) (not x6564))
+:assumption (or x17313 (not x28670) x11281)
+:assumption (or (not x13596) x1937)
+:assumption (or (not x15962) x29220)
+:assumption (or (not x3244) (not x21910))
+:assumption (or x19074 (not x3368))
+:assumption (or x125 x25174)
+:assumption (or x288 (not x27687) (not x7555) x27099 (not x5334) x24940)
+:assumption (or (not x6096) (not x19831))
+:assumption (or (not x22020) (not x28310) x17193 x688 (not x13547))
+:assumption (or x7484 (not x2500))
+:assumption (or (not x11333) (not x12161))
+:assumption (or (not x16888) x25923 x9118 (not x16365))
+:assumption (or x27053 x17138)
+:assumption (or (not x10560) (not x1897) x8255 x16648)
+:assumption (or (not x9009) (not x19902))
+:assumption (or x1894 x13338)
+:assumption (or x2869 x18242)
+:assumption (or x11282 x7117)
+:assumption (or (not x9647) (not x6453))
+:assumption (or (not x29992) x7159 (not x28885))
+:assumption (or (not x24954) (not x8352))
+:assumption (or (not x11863) (not x28170))
+:assumption (or (not x10796) x18855)
+:assumption (or x25861 x12593)
+:assumption (or (not x3208) (not x26085) (not x27427) x4342 x5784 (not x6473) x25868)
+:assumption (or x31001 (not x22426))
+:assumption (or x22855 (not x21724) (not x11957))
+:assumption (or x19702 x21235)
+:assumption (or x10508 x1953 x22524)
+:assumption (or (not x922) (not x13508))
+:assumption (or x26222 x17637)
+:assumption (or x13112 (not x1068) (not x27983))
+:assumption (or (not x2737) (not x5086))
+:assumption (or (not x26708) x3788)
+:assumption (or x78 x12 x9647 (not x2511) (not x19959) (not x109))
+:assumption (or (not x13050) (not x23530))
+:assumption (or x6797 (not x14966))
+:assumption (or (not x247) (not x17506))
+:assumption (or x14651 x15476)
+:assumption (or (not x29463) (not x3389))
+:assumption (or x16710 x8975)
+:assumption (or (not x22461) x7946 x23943 x13424 x8724 x17905)
+:assumption (or x17045 (not x2851))
+:assumption (or x28668 (not x25256))
+:assumption (or (not x1391) x31153 x1178 (not x20834) x23053 (not x11697) (not x31013))
+:assumption (or (not x14321) (not x18584))
+:assumption (or (not x25366) x919 (not x1104))
+:assumption (or x8244 x7200)
+:assumption (or x5419 x561)
+:assumption (or x3141 (not x18745))
+:assumption (or x5840 x27746)
+:assumption (or (not x2733) x28364)
+:assumption (or x8002 (not x13599))
+:assumption (or (not x26446) x22472)
+:assumption (or x23485 x5801)
+:assumption (or x14738 (not x4194))
+:assumption (or (not x1572) x15795)
+:assumption (or x17558 (not x7668) x7991 (not x21298) x16987 x28398 (not x8498))
+:assumption (or (not x31383) x3594)
+:assumption (or (not x16511) x29421)
+:assumption (or (not x24377) x22828)
+:assumption (or (not x14578) x16051)
+:assumption (or (not x18777) (not x15176))
+:assumption (or (not x30462) x30856 x11874 x20164)
+:assumption (or x22925 (not x28213) (not x15053) x26063)
+:assumption (or x23244 x20402 (not x13164) (not x21298) x25221 (not x8002))
+:assumption (or x31399 (not x9804) x5206 (not x9008) (not x5528))
+:assumption (or x19855 x7839)
+:assumption (or (not x6625) x28068 (not x3299))
+:assumption (or x29254 (not x31322))
+:assumption (or (not x9290) (not x30725))
+:assumption (or (not x4239) x10909 (not x13123))
+:assumption (or x22295 x12570)
+:assumption (or (not x8025) x4996)
+:assumption (or x2820 x10982)
+:assumption (or x6865 (not x7272))
+:assumption (or x26033 (not x21026) (not x20254))
+:assumption (or (not x8865) (not x26647))
+:assumption (or (not x31594) x8208 (not x13487))
+:assumption (or (not x6753) (not x21592))
+:assumption (or x28732 (not x25366) x29294 (not x18872))
+:assumption (or x30023 x21685)
+:assumption (or (not x11713) (not x19943))
+:assumption (or x12485 (not x4455))
+:assumption (or x22027 (not x3883) x2500)
+:assumption (or (not x25830) x23896)
+:assumption (or x5951 x22196)
+:assumption (or x9988 (not x8082) (not x18421) (not x8716))
+:assumption (or (not x25942) x2133)
+:assumption (or x4263 (not x29104))
+:assumption (or (not x19532) (not x18207))
+:assumption (or x27850 (not x25471))
+:assumption (or (not x28818) (not x26671))
+:assumption (or (not x3649) x19019)
+:assumption (or (not x343) x9980)
+:assumption (or (not x18379) (not x2685))
+:assumption (or (not x11144) (not x16229))
+:assumption (or x11978 x607 x22676 (not x4800) (not x19802) x7341)
+:assumption (or (not x8771) x18592)
+:assumption (or (not x6594) x7439 x30065 x29959)
+:assumption (or x964 (not x8913))
+:assumption (or x15075 x29769)
+:assumption (or x13311 x9643)
+:assumption (or (not x29607) (not x27230))
+:assumption (or x10540 x7309)
+:assumption (or (not x26618) (not x24756))
+:assumption (or (not x13648) (not x955))
+:assumption (or x8477 x4536)
+:assumption (or x9531 (not x5775))
+:assumption (or (not x9008) x30012)
+:assumption (or x10906 (not x24676))
+:assumption (or (not x2592) (not x17415))
+:assumption (or x19956 (not x31450))
+:assumption (or (not x21158) x23261 (not x8442) x1225 x15875)
+:assumption (or (not x15581) x964)
+:assumption (or (not x27306) (not x4559) (not x26415))
+:assumption (or (not x28206) (not x14750))
+:assumption (or x10477 (not x1348))
+:assumption (or (not x10020) x1773)
+:assumption (or (not x5669) (not x9466))
+:assumption (or x14445 (not x28752))
+:assumption (or x14534 x20086)
+:assumption (or (not x20744) (not x23221))
+:assumption (or (not x12315) x18687)
+:assumption (or (not x12335) x18508)
+:assumption (or x17413 (not x2882))
+:assumption (or (not x15579) (not x9008) (not x22455))
+:assumption (or x21031 x26062)
+:assumption (or x16185 (not x3348))
+:assumption (or (not x16018) (not x17387))
+:assumption (or (not x14123) x16860)
+:assumption (or (not x2241) (not x20087))
+:assumption (or (not x30113) (not x17531))
+:assumption (or (not x11862) x10611)
+:assumption (or (not x4377) (not x830) x7146 (not x12109))
+:assumption (or x10267 (not x26413))
+:assumption (or (not x12851) x30496)
+:assumption (or (not x9162) x16832)
+:assumption (or (not x142) (not x9677))
+:assumption (or x6721 (not x29133))
+:assumption (or (not x9575) x20476)
+:assumption (or (not x8079) (not x9008))
+:assumption (or x25341 (not x31354) x334 (not x323) (not x28379))
+:assumption (or (not x4720) (not x17101))
+:assumption (or (not x6347) (not x13457) x5335 (not x12940) x28177 (not x7647) x24006 (not x28890))
+:assumption (or x4406 (not x19426))
+:assumption (or (not x30732) x13232)
+:assumption (or (not x169) (not x19758))
+:assumption (or (not x27045) (not x6642))
+:assumption (or x18928 (not x31730))
+:assumption (or (not x16071) (not x16287))
+:assumption (or x1167 x29259)
+:assumption (or x7507 (not x28982))
+:assumption (or x8698 x13417)
+:assumption (or (not x13081) (not x11590))
+:assumption (or (not x14839) (not x1852))
+:assumption (or (not x28962) (not x14754))
+:assumption (or x7262 (not x11551))
+:assumption (or (not x21855) (not x29312))
+:assumption (or x31561 x5131)
+:assumption (or x31246 x29797)
+:assumption (or (not x31075) x21815)
+:assumption (or (not x19446) x17116)
+:assumption (or (not x16594) x20402)
+:assumption (or (not x28039) x24761)
+:assumption (or x13853 x24442 x15564)
+:assumption (or x4679 x22722)
+:assumption (or (not x18439) x28689)
+:assumption (or (not x17850) (not x25357))
+:assumption (or x22299 (not x13090))
+:assumption (or (not x186) (not x2760) x15637 x19615 x18301)
+:assumption (or x5916 (not x29441))
+:assumption (or (not x10055) (not x25263))
+:assumption (or x31133 x29959 x8714 (not x6594))
+:assumption (or x9008 (not x15937))
+:assumption (or x6758 (not x619))
+:assumption (or x18021 (not x20761))
+:assumption (or (not x3555) (not x1636))
+:assumption (or (not x22306) (not x31346))
+:assumption (or x15376 x21815)
+:assumption (or x11798 (not x3069))
+:assumption (or x20808 (not x17143))
+:assumption (or (not x31397) x29655 (not x15211) (not x19008) (not x14982))
+:assumption (or (not x29021) x10449)
+:assumption (or x10090 (not x29309))
+:assumption (or x28597 (not x10837))
+:assumption (or x31470 x15459)
+:assumption (or (not x30221) x25555)
+:assumption (or x15024 x30295)
+:assumption (or (not x3967) (not x24571))
+:assumption (or x25659 x2520 (not x6663))
+:assumption (or x6065 (not x22185))
+:assumption (or (not x27323) x18594)
+:assumption (or (not x1953) (not x31324))
+:assumption (or x1274 (not x26185))
+:assumption (or (not x8002) x1727)
+:assumption (or x24343 x17359)
+:assumption (or x3097 (not x1478))
+:assumption (or (not x16510) (not x16421))
+:assumption (or (not x2069) (not x15795))
+:assumption (or x31112 (not x12211))
+:assumption (or (not x30686) (not x21720))
+:assumption (or (not x20895) (not x9489))
+:assumption (or x30930 (not x21432))
+:assumption (or x3435 (not x26936))
+:assumption (or (not x11745) (not x22100))
+:assumption (or (not x23244) x15544)
+:assumption (or x30713 (not x25659) (not x23925))
+:assumption (or (not x12630) x8488)
+:assumption (or (not x4259) x25575)
+:assumption (or x2127 (not x9429))
+:assumption (or (not x25010) x23712)
+:assumption (or x4912 (not x23244))
+:assumption (or (not x11037) x30688)
+:assumption (or x14849 x19043)
+:assumption (or x6594 (not x23273))
+:assumption (or x26338 x5558 (not x134) (not x26125))
+:assumption (or x11915 (not x21383))
+:assumption (or (not x7548) x20849)
+:assumption (or (not x5342) x25659)
+:assumption (or (not x5238) (not x23932))
+:assumption (or (not x12117) x26012)
+:assumption (or (not x7695) x30822 (not x3023) x9008 x30193 x19625 (not x25230) x601)
+:assumption (or x28040 (not x9161))
+:assumption (or (not x18311) x25710)
+:assumption (or x4522 x18989)
+:assumption (or (not x14812) (not x19619))
+:assumption (or (not x22388) (not x13239))
+:assumption (or (not x30446) (not x17054))
+:assumption (or x31715 (not x55))
+:assumption (or x30127 x29959)
+:assumption (or (not x8471) x19377)
+:assumption (or (not x141) (not x23603))
+:assumption (or (not x2039) (not x30381))
+:assumption (or x761 x15276 x24524 (not x22981))
+:assumption (or x4701 (not x14117))
+:assumption (or x19511 x25933)
+:assumption (or x26628 x30123)
+:assumption (or (not x4593) x8981)
+:assumption (or x25937 x7070)
+:assumption (or (not x21178) (not x874))
+:assumption (or x3312 (not x497))
+:assumption (or x13990 (not x31666))
+:assumption (or (not x12301) x7537)
+:assumption (or (not x30662) x13212 (not x22521) x14778)
+:assumption (or x20001 x27807)
+:assumption (or x25911 (not x1263))
+:assumption (or x192 (not x21204))
+:assumption (or x11860 (not x21101))
+:assumption (or (not x12647) (not x8109))
+:assumption (or x1881 (not x26848))
+:assumption (or x22266 x14839 (not x2843) x26650)
+:assumption (or x13709 (not x20316) x2151 x13411 x17210 (not x27699))
+:assumption (or (not x7437) (not x20490))
+:assumption (or (not x30417) x31767)
+:assumption (or (not x29860) (not x22368) x30139 x3390 (not x12186))
+:assumption (or (not x4068) (not x23244))
+:assumption (or (not x16104) (not x19711))
+:assumption (or x2045 x27841)
+:assumption (or x543 (not x27569))
+:assumption (or (not x28835) x31839)
+:assumption (or x13174 x25208 x26762)
+:assumption (or (not x5018) (not x22659))
+:assumption (or x30182 x10461)
+:assumption (or x21265 (not x9075))
+:assumption (or (not x9534) x16252 (not x15828))
+:assumption (or (not x27617) x8601)
+:assumption (or x17867 x9804)
+:assumption (or x18822 (not x21454))
+:assumption (or x27383 (not x23009) x734 (not x19378) (not x9918))
+:assumption (or x1670 (not x3893))
+:assumption (or x23199 (not x31824))
+:assumption (or (not x1393) x13817 x5210)
+:assumption (or (not x4430) (not x30328))
+:assumption (or (not x4848) (not x13558))
+:assumption (or x19325 (not x9110))
+:assumption (or x29207 (not x31574))
+:assumption (or x25659 x13103)
+:assumption (or (not x12559) x618)
+:assumption (or (not x21000) (not x23886))
+:assumption (or (not x28880) x10987 x13529)
+:assumption (or (not x30419) (not x12370))
+:assumption (or x31365 (not x11165))
+:assumption (or (not x21815) (not x14591) (not x16510) x27 (not x16802))
+:assumption (or (not x5710) x142 x24842)
+:assumption (or (not x3671) x10605)
+:assumption (or x9008 x21941 (not x21750) x31499 x16879 x18362)
+:assumption (or x10585 x7792 x24435 (not x28301))
+:assumption (or x9524 x30601 (not x10924) x10894)
+:assumption (or x9065 x79)
+:assumption (or x27660 x1355 (not x827))
+:assumption (or (not x26133) (not x6329))
+:assumption (or x20196 x17149 (not x19925) x442 (not x30496) (not x11241) (not x31255) (not x14292) x2097)
+:assumption (or (not x21653) x29513)
+:assumption (or x31591 (not x23846) x10281 (not x27930) (not x20215) x6856 (not x7914) x25065)
+:assumption (or (not x23224) (not x26130))
+:assumption (or x28619 (not x17021))
+:assumption (or (not x1392) (not x18610))
+:assumption (or (not x15357) (not x21513))
+:assumption (or (not x25008) (not x14283) x21298 (not x21441))
+:assumption (or (not x2075) (not x12362))
+:assumption (or (not x27593) x17982)
+:assumption (or (not x5794) (not x25366) (not x30296))
+:assumption (or x4729 (not x22829) x16849 (not x13956))
+:assumption (or x18042 (not x14507))
+:assumption (or x16891 (not x16482))
+:assumption (or (not x13857) (not x9350))
+:assumption (or (not x22051) (not x27134))
+:assumption (or x7697 (not x5211))
+:assumption (or x15138 x30751)
+:assumption (or x23244 (not x8002) x4892 x10274)
+:assumption (or x5528 x11550 (not x24862))
+:assumption (or x28835 (not x10393) x3377 x1931 x9008 (not x1643))
+:assumption (or x17663 x28071)
+:assumption (or (not x25914) (not x8265) (not x9726) (not x8692) (not x28093) x10897)
+:assumption (or (not x18373) x20726)
+:assumption (or (not x30783) (not x17872))
+:assumption (or (not x29314) x5528)
+:assumption (or (not x29754) (not x16927))
+:assumption (or (not x15157) x24079 (not x23941))
+:assumption (or (not x15968) (not x23244))
+:assumption (or x21815 (not x2823) x26193 (not x12269) x5554 x1968)
+:assumption (or (not x697) x26657)
+:assumption (or (not x14292) (not x13051))
+:assumption (or (not x23873) (not x176))
+:assumption (or (not x13956) (not x23591) x18369)
+:assumption (or x30104 (not x11534))
+:assumption (or (not x5529) x26288)
+:assumption (or x6635 (not x21918))
+:assumption (or x22796 x30882)
+:assumption (or x16304 (not x21134))
+:assumption (or (not x18336) x20226)
+:assumption (or x23689 x5953)
+:assumption (or x28025 (not x16860))
+:assumption (or (not x26919) x9939)
+:assumption (or x10058 (not x5446))
+:assumption (or x15793 x25315)
+:assumption (or (not x27777) (not x14783))
+:assumption (or x21170 x18859)
+:assumption (or x16004 (not x1865))
+:assumption (or x15244 x16760)
+:assumption (or (not x7770) x25784)
+:assumption (or x9329 (not x16584))
+:assumption (or x14517 (not x8247))
+:assumption (or (not x24802) (not x8134))
+:assumption (or (not x14185) (not x10264))
+:assumption (or x21975 x22000)
+:assumption (or x16474 x26511 (not x30663) x19992)
+:assumption (or x14949 x16910)
+:assumption (or x7726 (not x17135) x19183 x19808)
+:assumption (or x30343 x25913)
+:assumption (or x4809 x24853 x6445)
+:assumption (or (not x18728) x18519)
+:assumption (or (not x28545) (not x11994))
+:assumption (or x12888 x25588 x17624 (not x14549) x1590)
+:assumption (or (not x11566) (not x3296))
+:assumption (or (not x20398) (not x7116) x31166 (not x25084))
+:assumption (or x12399 x12083 x26107)
+:assumption (or (not x22201) x23244)
+:assumption (or x9501 x23399 (not x12039))
+:assumption (or (not x24738) x26224 (not x713) x11991 (not x18051) (not x14159) (not x17496))
+:assumption (or (not x15422) x23114 (not x23906) (not x12410) (not x25896) x17083)
+:assumption (or x15249 (not x30805))
+:assumption (or (not x21269) (not x25893))
+:assumption (or x8168 x2441)
+:assumption (or (not x22363) x16321)
+:assumption (or (not x17431) (not x31129))
+:assumption (or x16039 (not x23931))
+:assumption (or (not x13719) x29901)
+:assumption (or (not x17994) (not x31891))
+:assumption (or (not x26308) (not x5812))
+:assumption (or (not x29356) x4973)
+:assumption (or x26432 x15545)
+:assumption (or x7508 (not x16869) (not x16025))
+:assumption (or x22430 (not x25308))
+:assumption (or (not x6875) (not x7120))
+:assumption (or x3004 (not x18084))
+:assumption (or (not x9126) (not x7919) (not x2053) x3117 (not x15241) (not x29286) x19307 x30629)
+:assumption (or (not x18143) (not x8859))
+:assumption (or x7869 x8002)
+:assumption (or (not x6921) x12068)
+:assumption (or (not x24994) x2123)
+:assumption (or x31528 x19883 x28063 (not x21629))
+:assumption (or (not x15690) (not x2323))
+:assumption (or (not x31294) x12676)
+:assumption (or x5646 (not x20218))
+:assumption (or (not x21708) (not x28436))
+:assumption (or x4120 x26432)
+:assumption (or x15993 x25490 (not x2084))
+:assumption (or (not x197) x7893)
+:assumption (or x25770 (not x24062))
+:assumption (or x9493 x14032)
+:assumption (or x18870 (not x9423))
+:assumption (or (not x21416) (not x30623))
+:assumption (or x12318 x5173)
+:assumption (or (not x14925) (not x7253))
+:assumption (or (not x4038) (not x8843))
+:assumption (or x6307 x10493)
+:assumption (or x17509 x17017)
+:assumption (or x15842 x16437)
+:assumption (or (not x18581) (not x12923))
+:assumption (or x9964 (not x26442))
+:assumption (or (not x13475) (not x2579))
+:assumption (or x28181 (not x13379))
+:assumption (or x11148 x18726)
+:assumption (or (not x2465) (not x12554))
+:assumption (or (not x18003) x19864 (not x17182) (not x7286) (not x18814) x1820)
+:assumption (or x9230 x7805)
+:assumption (or (not x23908) (not x5780))
+:assumption (or x401 x6435)
+:assumption (or (not x3935) (not x10205))
+:assumption (or (not x31122) (not x5681))
+:assumption (or x21122 (not x3728))
+:assumption (or x31057 (not x16518))
+:assumption (or (not x20433) x3654)
+:assumption (or x13106 (not x31134) (not x9025))
+:assumption (or (not x21298) x25806 x29458 (not x26098))
+:assumption (or (not x23060) x5622)
+:assumption (or (not x28571) (not x23414) (not x21951) (not x2813) (not x8626) (not x13561) x12371)
+:assumption (or (not x10449) x20466)
+:assumption (or (not x1832) (not x13751))
+:assumption (or x5772 x16293)
+:assumption (or x10283 x26743)
+:assumption (or (not x4442) (not x4909))
+:assumption (or x30656 (not x9203))
+:assumption (or (not x1077) (not x3511))
+:assumption (or x30181 (not x4560))
+:assumption (or x19048 x834 x19487 x24533)
+:assumption (or x6930 (not x3503) (not x20727))
+:assumption (or x3895 x31634)
+:assumption (or x1608 (not x17814))
+:assumption (or x11254 (not x24858))
+:assumption (or (not x14393) x12875)
+:assumption (or x904 (not x5497))
+:assumption (or (not x1157) x16510)
+:assumption (or (not x15308) (not x28295))
+:assumption (or x11843 (not x25335) (not x18535) x6603 x25390 (not x4194) x8252 (not x27665) (not x14494) x15384 (not x12185) (not x13060))
+:assumption (or x30723 x17763)
+:assumption (or x14955 (not x31639))
+:assumption (or x13795 (not x18651) (not x25940))
+:assumption (or x7917 (not x5607))
+:assumption (or x18660 (not x520))
+:assumption (or x3708 (not x22507))
+:assumption (or (not x1021) (not x9823))
+:assumption (or x12225 (not x21406))
+:assumption (or x11672 (not x21105))
+:assumption (or (not x27285) (not x24411))
+:assumption (or x8173 (not x4344))
+:assumption (or x4117 x28558)
+:assumption (or (not x30686) (not x21048))
+:assumption (or x20243 x18211 (not x2953) x10758 (not x29566) (not x26977))
+:assumption (or (not x17903) (not x3368))
+:assumption (or (not x21442) x21435)
+:assumption (or x9008 (not x18405))
+:assumption (or (not x31829) x8115)
+:assumption (or (not x2920) x5393)
+:assumption (or (not x8757) (not x28364) (not x9008) (not x5528) (not x25718))
+:assumption (or (not x31353) (not x19334))
+:assumption (or (not x3799) (not x20879) x1393)
+:assumption (or x23174 x10849)
+:assumption (or (not x30703) (not x9897))
+:assumption (or x8656 (not x3071))
+:assumption (or (not x3794) (not x24559))
+:assumption (or (not x17297) x21694 (not x5206) x267)
+:assumption (or (not x19047) (not x30803))
+:assumption (or (not x28925) (not x26205))
+:assumption (or (not x324) x14455)
+:assumption (or (not x923) (not x26670) x15902 (not x964))
+:assumption (or (not x25491) (not x15814))
+:assumption (or (not x20432) (not x16510))
+:assumption (or (not x6945) x27546)
+:assumption (or x23860 x18105)
+:assumption (or (not x17138) (not x27053))
+:assumption (or x27736 (not x10518))
+:assumption (or (not x20735) x14961 x28055 x17387 x397 x1900)
+:assumption (or x26696 x30868)
+:assumption (or (not x17707) x11250)
+:assumption (or (not x23244) (not x27315))
+:assumption (or (not x23244) (not x23014) x25612 (not x15175) x11444 x4918)
+:assumption (or x21627 x30184)
+:assumption (or x14194 x13956)
+:assumption (or (not x24909) (not x218))
+:assumption (or x26155 x21397)
+:assumption (or x18499 (not x1096))
+:assumption (or (not x20251) (not x28410))
+:assumption (or (not x30150) (not x1828))
+:assumption (or (not x6900) (not x2655))
+:assumption (or x5437 (not x5686))
+:assumption (or (not x30476) x28832)
+:assumption (or x7544 (not x30881) (not x8961))
+:assumption (or (not x21406) (not x10433))
+:assumption (or x30912 x25038 (not x27547) x5089 x10401 (not x13879))
+:assumption (or x3216 x12688)
+:assumption (or x295 x21546 x16365 (not x20885) x12113)
+:assumption (or (not x26892) (not x8383))
+:assumption (or (not x968) (not x27500))
+:assumption (or (not x25574) (not x28040))
+:assumption (or (not x13134) x29828)
+:assumption (or (not x19628) (not x3724))
+:assumption (or (not x12008) x14455)
+:assumption (or x30873 x10880)
+:assumption (or x25547 (not x6825))
+:assumption (or x23470 (not x489) (not x16817) (not x11174) x3397 x21843 (not x31599) (not x19269))
+:assumption (or x13944 x21192)
+:assumption (or (not x29312) x24506)
+:assumption (or x23621 x15345 x31858 x23958)
+:assumption (or x20283 x23630)
+:assumption (or x31909 x28012)
+:assumption (or x1542 x16809 (not x9008) (not x5528) x26748)
+:assumption (or x19871 (not x15660))
+:assumption (or x2562 (not x16991))
+:assumption (or (not x6405) x22768)
+:assumption (or (not x9329) (not x11210))
+:assumption (or x18003 x13477 x19864 (not x9364))
+:assumption (or (not x19027) x19137)
+:assumption (or (not x29577) (not x6381) (not x24910))
+:assumption (or (not x18165) (not x16382))
+:assumption (or (not x1241) (not x26945))
+:assumption (or (not x18111) (not x4870) x649)
+:assumption (or (not x23244) x15532)
+:assumption (or x4072 x5481)
+:assumption (or x10417 x15921)
+:assumption (or (not x3032) (not x24983))
+:assumption (or (not x22084) (not x4824))
+:assumption (or x3658 x657)
+:assumption (or x21653 x2209)
+:assumption (or x27862 x27684)
+:assumption (or x26430 x20166)
+:assumption (or x12220 x19890)
+:assumption (or x9100 (not x13196))
+:assumption (or x12242 (not x22615) x2960 x11521)
+:assumption (or x4748 x18588)
+:assumption (or (not x25032) (not x26807) (not x15861))
+:assumption (or x3473 x2835 x17837 x1581)
+:assumption (or x18500 x31715)
+:assumption (or (not x7721) x7904 x14104 (not x24066) (not x26466))
+:assumption (or x19058 (not x31457))
+:assumption (or x22686 (not x1938))
+:assumption (or (not x11421) x24995)
+:assumption (or (not x13476) x13319)
+:assumption (or x26409 (not x5025))
+:assumption (or (not x9008) (not x5528) x14018 x23633 x12176)
+:assumption (or (not x13003) (not x26070))
+:assumption (or x17816 (not x5249))
+:assumption (or x2799 x23650)
+:assumption (or x13670 (not x1968))
+:assumption (or x25685 x21485)
+:assumption (or x2386 (not x11834) (not x9681))
+:assumption (or (not x11587) (not x26197) x13446 x10621 x9567 x31907 (not x17986))
+:assumption (or x15574 x20404)
+:assumption (or (not x25254) x21290)
+:assumption (or x10925 x8081)
+:assumption (or (not x24907) x15948)
+:assumption (or x8497 (not x28436))
+:assumption (or x31134 x29606 x24622 (not x26638))
+:assumption (or x9037 (not x20939))
+:assumption (or (not x30568) (not x13194))
+:assumption (or x8002 x27180)
+:assumption (or (not x861) x25598)
+:assumption (or (not x3538) (not x28458) x26496)
+:assumption (or x12923 (not x9860))
+:assumption (or (not x10428) x30824)
+:assumption (or (not x20786) (not x26906))
+:assumption (or x10787 (not x12446) x7196)
+:assumption (or x9026 x3149)
+:assumption (or x5310 (not x19992) x29333)
+:assumption (or (not x19792) x16610)
+:assumption (or x25008 x14940)
+:assumption (or (not x4940) x16772)
+:assumption (or x8911 (not x6254))
+:assumption (or x22589 (not x17215))
+:assumption (or x10718 (not x5507) x24045 x7030 (not x8418))
+:assumption (or (not x10460) x24279)
+:assumption (or x28313 x6691 (not x18985) x9733 x3078 (not x6416))
+:assumption (or (not x3115) (not x3027))
+:assumption (or (not x19193) x15204)
+:assumption (or x21726 x8111)
+:assumption (or x8598 (not x18694) (not x8299) x5626)
+:assumption (or x31427 (not x30257))
+:assumption (or (not x16126) (not x20686))
+:assumption (or x17359 x10244)
+:assumption (or x28082 x31011)
+:assumption (or x17654 (not x6022))
+:assumption (or (not x2691) x5076)
+:assumption (or x12588 x28839)
+:assumption (or x31222 (not x7751))
+:assumption (or x7891 x3131 (not x31232) x3510 (not x20103))
+:assumption (or x11425 (not x3001))
+:assumption (or (not x24574) x29958)
+:assumption (or (not x18202) (not x17877))
+:assumption (or x22635 x7159)
+:assumption (or (not x3435) x27444)
+:assumption (or (not x9171) (not x10395))
+:assumption (or x25370 (not x31273))
+:assumption (or x12171 (not x10760) (not x22250) x138)
+:assumption (or (not x13523) x24775 x215 x24163)
+:assumption (or (not x30467) (not x10561))
+:assumption (or (not x15088) (not x25659))
+:assumption (or x27347 (not x27126))
+:assumption (or x29442 x11595 (not x17671))
+:assumption (or (not x4259) x27470)
+:assumption (or x27714 x4233)
+:assumption (or x23173 x19177)
+:assumption (or x10328 x3653)
+:assumption (or (not x23386) x11228)
+:assumption (or x14876 (not x28826))
+:assumption (or (not x13925) (not x30705))
+:assumption (or (not x31286) (not x31081))
+:assumption (or (not x7139) (not x19940))
+:assumption (or (not x6639) x12714)
+:assumption (or (not x6302) x16510)
+:assumption (or (not x7854) x6371 x27344)
+:assumption (or x25490 x8884)
+:assumption (or x24645 x31147)
+:assumption (or x21147 (not x8002) x16281 (not x23244))
+:assumption (or x16423 (not x21469) (not x967) (not x1598))
+:assumption (or (not x8030) (not x27421))
+:assumption (or x6905 x23328)
+:assumption (or x14596 (not x17316))
+:assumption (or x12588 x8495)
+:assumption (or (not x20115) (not x11132))
+:assumption (or (not x23142) (not x23363))
+:assumption (or (not x23244) x27374)
+:assumption (or x18003 (not x25422))
+:assumption (or x26354 (not x30758))
+:assumption (or (not x27960) (not x1382))
+:assumption (or (not x30532) x28996)
+:assumption (or (not x26982) x7903 x22740 (not x5862) (not x8358) x10342)
+:assumption (or x7821 (not x9790) x9972 (not x5528) (not x9008))
+:assumption (or x10385 (not x11089))
+:assumption (or (not x946) x10175)
+:assumption (or x28483 x25161)
+:assumption (or x13989 (not x28726))
+:assumption (or x7348 (not x3162))
+:assumption (or (not x1658) (not x8666) (not x11021) (not x15485) x3043 x7575 (not x28006) (not x9837) x17452 (not x1093) x23389 x9514)
+:assumption (or x2380 x12060)
+:assumption (or x10810 (not x10632) x25366 x8660)
+:assumption (or (not x1917) x17211)
+:assumption (or (not x5061) x22472)
+:assumption (or (not x3604) x11544)
+:assumption (or (not x22182) (not x914))
+:assumption (or x18901 x11191)
+:assumption (or (not x28539) (not x17507) (not x12771) x254)
+:assumption (or x7452 x24756)
+:assumption (or (not x16573) (not x14206) x8989 x22190)
+:assumption (or (not x18939) (not x285))
+:assumption (or x26830 (not x26706))
+:assumption (or (not x17489) (not x19140))
+:assumption (or (not x28764) x5488)
+:assumption (or x17354 x10440)
+:assumption (or x19972 x22261)
+:assumption (or (not x28189) (not x17037))
+:assumption (or x20401 x4142)
+:assumption (or (not x18114) (not x3594) x30138 x23728 (not x22586))
+:assumption (or x29272 x25124)
+:assumption (or (not x17341) (not x5028))
+:assumption (or x26760 (not x14497))
+:assumption (or (not x6928) (not x14511))
+:assumption (or x30603 (not x13719))
+:assumption (or x22855 x2167 x480)
+:assumption (or (not x3095) x18289 (not x7753) x14448 (not x10387) (not x13192) x11096 (not x23892) (not x28810))
+:assumption (or (not x7388) x722)
+:assumption (or x9850 (not x11201))
+:assumption (or (not x23244) (not x8002) x16682 (not x8033))
+:assumption (or (not x8002) x31647 x9762)
+:assumption (or (not x11231) (not x30782))
+:assumption (or x28242 (not x26097))
+:assumption (or x3019 x24422 (not x15533))
+:assumption (or (not x25015) x9450)
+:assumption (or (not x19706) (not x3967))
+:assumption (or (not x26812) (not x13620))
+:assumption (or (not x27297) (not x30563))
+:assumption (or (not x19037) x31561)
+:assumption (or (not x15794) (not x26192))
+:assumption (or x11629 (not x2405))
+:assumption (or x15156 (not x7095))
+:assumption (or x20627 x22905)
+:assumption (or (not x14918) (not x15853))
+:assumption (or x21502 x29475)
+:assumption (or (not x23244) x29938)
+:assumption (or (not x16244) (not x13620))
+:assumption (or (not x547) (not x3888))
+:assumption (or x20482 x22360 (not x4694))
+:assumption (or (not x23117) x3911)
+:assumption (or (not x19460) x7218)
+:assumption (or (not x26354) x7335)
+:assumption (or x7125 x7749)
+:assumption (or x13697 x2620)
+:assumption (or (not x13037) (not x13496))
+:assumption (or (not x7061) x27213)
+:assumption (or x23417 (not x20553))
+:assumption (or (not x25211) (not x3435))
+:assumption (or (not x13386) x12991)
+:assumption (or (not x31723) x14748)
+:assumption (or (not x17783) x19092)
+:assumption (or x20699 (not x29464))
+:assumption (or x17383 (not x13622))
+:assumption (or (not x9008) x25484 (not x5528) (not x30914) (not x24458))
+:assumption (or x11327 (not x12704))
+:assumption (or (not x852) x12698)
+:assumption (or x14891 x6372)
+:assumption (or x24756 (not x11218))
+:assumption (or (not x6528) x28501 (not x28973) (not x288))
+:assumption (or x28286 x19713)
+:assumption (or (not x15953) x18026)
+:assumption (or x912 (not x5546))
+:assumption (or x17717 (not x19477))
+:assumption (or x4741 x2177 x4834 (not x24036) (not x14350) (not x15346) x28258 x24010 x10665)
+:assumption (or x16854 x20220)
+:assumption (or (not x15373) (not x21853))
+:assumption (or x30957 x20356)
+:assumption (or (not x6029) (not x8278))
+:assumption (or (not x1298) x3895)
+:assumption (or x7835 (not x2023))
+:assumption (or x17205 (not x29174))
+:assumption (or x22032 x26885)
+:assumption (or x9565 x13018)
+:assumption (or x4153 x4921)
+:assumption (or (not x5852) (not x23633) x13766 x13644)
+:assumption (or (not x4675) (not x202) x15010 x26221 x23488)
+:assumption (or x27946 (not x30410))
+:assumption (or (not x25692) (not x20119) x16910)
+:assumption (or (not x25483) x8002)
+:assumption (or x1104 (not x11925))
+:assumption (or (not x15723) x5352 (not x16621))
+:assumption (or (not x30856) (not x1514) (not x5497))
+:assumption (or x7256 x12393)
+:assumption (or x5379 (not x25905))
+:assumption (or (not x18993) x31890)
+:assumption (or (not x10451) x31012)
+:assumption (or (not x16028) x12280)
+:assumption (or x18520 (not x19371))
+:assumption (or x10236 (not x13224))
+:assumption (or (not x12353) (not x15537) (not x12599))
+:assumption (or x18845 (not x12173))
+:assumption (or (not x1270) x23407)
+:assumption (or (not x19592) (not x2411))
+:assumption (or x6523 (not x29440))
+:assumption (or (not x16741) x2133 x16046)
+:assumption (or x6065 (not x26594))
+:assumption (or x18968 x6059)
+:assumption (or x31422 x29655 (not x18722) (not x14938) x30380 x15616 x21360)
+:assumption (or (not x19457) (not x22225))
+:assumption (or (not x8780) (not x22047))
+:assumption (or (not x27537) x10557)
+:assumption (or (not x20122) x23244)
+:assumption (or x18310 x20784)
+:assumption (or (not x31545) x16362)
+:assumption (or x31301 x24720)
+:assumption (or (not x22434) (not x3001))
+:assumption (or (not x16424) x20834)
+:assumption (or x1875 (not x2875))
+:assumption (or (not x30954) (not x14573) x6562 (not x19428))
+:assumption (or x4504 (not x2126))
+:assumption (or (not x2011) (not x23218))
+:assumption (or x3594 (not x1174))
+:assumption (or x30887 (not x20759))
+:assumption (or (not x22283) (not x15814))
+:assumption (or (not x15001) (not x3605))
+:assumption (or x18698 (not x16210))
+:assumption (or (not x30307) (not x13251))
+:assumption (or x24342 x30393 x27641)
+:assumption (or x9242 (not x8731))
+:assumption (or (not x11156) (not x25484))
+:assumption (or x31550 x14487)
+:assumption (or x19686 x28233)
+:assumption (or x13477 x15545)
+:assumption (or x2872 x9300)
+:assumption (or (not x13989) (not x1393) x14125)
+:assumption (or x211 (not x8195))
+:assumption (or (not x5471) x15746)
+:assumption (or x13956 x17584)
+:assumption (or x4768 (not x9233))
+:assumption (or x10728 (not x7835) (not x2133))
+:assumption (or x2912 x10017)
+:assumption (or (not x25965) x2522)
+:assumption (or (not x20520) (not x12161))
+:assumption (or x9659 x1770 (not x10909) x28908 (not x17780))
+:assumption (or x28973 x8131)
+:assumption (or x9978 (not x12272))
+:assumption (or (not x16238) x7537)
+:assumption (or x30773 x12900)
+:assumption (or (not x11658) (not x15226))
+:assumption (or (not x4245) (not x3063))
+:assumption (or x16521 x5886)
+:assumption (or x8824 (not x12907))
+:assumption (or x5119 (not x27132))
+:assumption (or (not x7505) x7165)
+:assumption (or (not x6294) x30680)
+:assumption (or (not x23244) (not x12693))
+:assumption (or (not x24177) (not x6351))
+:assumption (or (not x23244) x27559)
+:assumption (or (not x7780) x7397)
+:assumption (or x17991 x10874 (not x20984))
+:assumption (or x28564 x18948 (not x9264) (not x9295))
+:assumption (or x27832 x7383)
+:assumption (or x6129 x17778)
+:assumption (or x28973 x21797)
+:assumption (or x1438 x4587)
+:assumption (or x1152 (not x4136))
+:assumption (or x29442 x8511)
+:assumption (or x18222 x6833)
+:assumption (or (not x9536) x6527 x8002)
+:assumption (or (not x27266) x3652 (not x8677) x17437 (not x12694) x952 x14197 (not x18042))
+:assumption (or x8602 x16647)
+:assumption (or (not x24646) (not x24405))
+:assumption (or x2403 (not x22842))
+:assumption (or (not x15722) (not x11612))
+:assumption (or x2880 (not x16404))
+:assumption (or (not x27498) (not x7732))
+:assumption (or (not x21217) (not x27868))
+:assumption (or x29480 (not x16802))
+:assumption (or x17764 (not x25446))
+:assumption (or (not x21990) x27724)
+:assumption (or (not x31221) x31337)
+:assumption (or x1238 x28543)
+:assumption (or x12753 (not x20407))
+:assumption (or (not x12658) x2415)
+:assumption (or x22018 (not x9420))
+:assumption (or x25370 (not x17770))
+:assumption (or (not x10320) x20544)
+:assumption (or (not x24853) x30737)
+:assumption (or (not x7872) (not x23244))
+:assumption (or x22054 (not x5666))
+:assumption (or x7346 (not x11218))
+:assumption (or (not x30815) x2323 (not x10257) x4492 (not x15652) (not x23214))
+:assumption (or x6173 (not x25853) x10647)
+:assumption (or x8675 x26889)
+:assumption (or (not x896) (not x26694))
+:assumption (or (not x26992) (not x1441))
+:assumption (or (not x9008) x8805)
+:assumption (or x7230 (not x21298))
+:assumption (or (not x930) x29563)
+:assumption (or x31485 x13616)
+:assumption (or (not x11500) x22509)
+:assumption (or x12155 (not x13187))
+:assumption (or (not x6151) (not x20384))
+:assumption (or (not x20457) (not x1587))
+:assumption (or x9729 (not x18859))
+:assumption (or x7730 (not x218) (not x18568))
+:assumption (or (not x18584) x27759)
+:assumption (or (not x30998) x10909)
+:assumption (or x8593 (not x9453) x30227)
+:assumption (or (not x26218) x28311 (not x827))
+:assumption (or x12958 (not x21948))
+:assumption (or (not x5389) (not x8960))
+:assumption (or x477 (not x27635))
+:assumption (or (not x7227) (not x10157) (not x25774) x15447)
+:assumption (or x1601 (not x22709))
+:assumption (or (not x14515) x19561)
+:assumption (or (not x30058) x28151)
+:assumption (or (not x12525) (not x16025))
+:assumption (or x12143 (not x6813))
+:assumption (or x28854 x24855)
+:assumption (or x22835 x30304 x19021 x23090 x7595)
+:assumption (or (not x17955) x21815 x22375 (not x7421) (not x21820) x9254)
+:assumption (or x17103 (not x17088))
+:assumption (or (not x19658) x18936 x9629 x1582)
+:assumption (or x24127 (not x10405))
+:assumption (or (not x31125) (not x4386) x31114)
+:assumption (or (not x30429) x18662)
+:assumption (or (not x13515) x13956)
+:assumption (or (not x3361) x920 x26007 x4924 x19431)
+:assumption (or x25902 (not x31641))
+:assumption (or (not x5875) (not x27847))
+:assumption (or x31171 (not x23279))
+:assumption (or (not x1348) x14676)
+:assumption (or x22737 (not x23917))
+:assumption (or (not x1716) (not x14176))
+:assumption (or x18519 x7926 (not x26900))
+:assumption (or x7341 x14861)
+:assumption (or x23244 (not x13783))
+:assumption (or x225 (not x7490) x1712 x14412 (not x14578) x19395 x24477)
+:assumption (or x21258 (not x16652) (not x13545) (not x21500))
+:assumption (or x1393 (not x30057) (not x6532))
+:assumption (or (not x9860) x1367)
+:assumption (or x18069 (not x19836))
+:assumption (or x27004 x3047)
+:assumption (or (not x23266) (not x8979))
+:assumption (or (not x3453) (not x318))
+:assumption (or (not x24767) (not x1525))
+:assumption (or (not x6594) x30119)
+:assumption (or x18583 x16508)
+:assumption (or x1890 (not x6561) x24861 x28744 (not x19487))
+:assumption (or x17140 x5533)
+:assumption (or x28350 x13905)
+:assumption (or (not x13787) x16102)
+:assumption (or x14299 x22389 (not x28516) x510)
+:assumption (or (not x12369) x9363)
+:assumption (or x1942 (not x24853))
+:assumption (or (not x9682) (not x14558))
+:assumption (or x8258 (not x8923) (not x22526) x10166 (not x8256) (not x19112) x3782 x28560)
+:assumption (or x25199 (not x4392))
+:assumption (or (not x15643) (not x27690))
+:assumption (or x15009 (not x12488))
+:assumption (or (not x18868) x4689)
+:assumption (or (not x31517) (not x20550))
+:assumption (or x11648 x17012)
+:assumption (or (not x31724) x14963 (not x27360) (not x30949))
+:assumption (or x9965 x17482)
+:assumption (or x14564 (not x827) (not x16198))
+:assumption (or x5040 (not x772))
+:assumption (or (not x22800) x21266)
+:assumption (or (not x836) x10368)
+:assumption (or x13585 (not x6009))
+:assumption (or (not x15866) x25225)
+:assumption (or x2573 (not x23934))
+:assumption (or x2194 (not x27217))
+:assumption (or x23244 x5175 x9966)
+:assumption (or x22523 x10534)
+:assumption (or (not x3220) x9627 x3715 (not x17482) (not x27002) (not x31785))
+:assumption (or (not x7680) x27795)
+:assumption (or x6312 (not x5550))
+:assumption (or (not x25521) x15433)
+:assumption (or x31334 (not x3499))
+:assumption (or (not x29925) x992)
+:assumption (or (not x6297) (not x28455))
+:assumption (or x3750 (not x25000))
+:assumption (or (not x7880) x5117)
+:assumption (or (not x2052) (not x19245))
+:assumption (or x13602 (not x28370))
+:assumption (or (not x9014) (not x6982))
+:assumption (or x12310 (not x19331))
+:assumption (or (not x1909) x12308 (not x15442))
+:assumption (or x22326 (not x17603))
+:assumption (or (not x19667) x308)
+:assumption (or (not x16375) (not x21582) (not x23627) x20855)
+:assumption (or x6068 x4857)
+:assumption (or (not x21202) x23528 x30019 (not x8896) x19180 (not x28307) (not x1457))
+:assumption (or (not x22081) x22232)
+:assumption (or x23846 x29565)
+:assumption (or x25290 x25197)
+:assumption (or (not x21303) (not x23244))
+:assumption (or (not x15861) x22447)
+:assumption (or (not x20006) (not x3385) x16741 x11210)
+:assumption (or x13925 x30705)
+:assumption (or x20949 (not x29173) x12045 (not x6754))
+:assumption (or (not x22984) x23242 x28536 (not x18877) x13328)
+:assumption (or x2701 (not x16910) (not x7593))
+:assumption (or x19977 (not x28480))
+:assumption (or (not x13772) (not x5106))
+:assumption (or (not x19207) (not x22519))
+:assumption (or x3894 x1830)
+:assumption (or (not x4265) (not x18507))
+:assumption (or (not x24491) x18694)
+:assumption (or (not x8332) x28831)
+:assumption (or (not x19149) (not x23539))
+:assumption (or (not x3947) x14569)
+:assumption (or (not x24349) (not x10787))
+:assumption (or x26367 (not x30432))
+:assumption (or x20917 (not x13554))
+:assumption (or x31299 x31060)
+:assumption (or (not x23000) x9963)
+:assumption (or (not x13423) (not x27940))
+:assumption (or (not x24293) (not x11043) (not x6639))
+:assumption (or (not x19631) (not x30867))
+:assumption (or x8025 x3971)
+:assumption (or (not x2114) (not x216))
+:assumption (or x29462 (not x12885))
+:assumption (or (not x11161) (not x8953))
+:assumption (or x31518 (not x26214))
+:assumption (or x16075 (not x14061))
+:assumption (or x311 x16695)
+:assumption (or x29721 x23623)
+:assumption (or (not x10387) (not x13192) (not x23892) (not x11555) x11096 (not x25099) x14448 (not x7753) (not x3095))
+:assumption (or x3187 (not x8057))
+:assumption (or (not x8765) (not x15600))
+:assumption (or x3755 x25008)
+:assumption (or (not x12611) (not x14839) (not x21121))
+:assumption (or (not x6133) x13947)
+:assumption (or (not x23244) x8145 (not x2660) x23546 x153 x2605)
+:assumption (or x13125 x27060)
+:assumption (or (not x8660) x2454)
+:assumption (or (not x25588) (not x12888))
+:assumption (or x10736 (not x1992))
+:assumption (or (not x25276) x13520)
+:assumption (or x26574 x13576)
+:assumption (or x17617 (not x26985))
+:assumption (or x29510 x13259)
+:assumption (or (not x17930) (not x8002) (not x27419) (not x29554))
+:assumption (or x28541 x29099)
+:assumption (or (not x14773) (not x22855))
+:assumption (or x25706 x1183)
+:assumption (or (not x18770) x28903)
+:assumption (or x30552 x3077)
+:assumption (or (not x25780) x6462)
+:assumption (or (not x27589) (not x8555))
+:assumption (or (not x27003) (not x26939))
+:assumption (or (not x6210) x8870 (not x29200) x17075 x4952 x9531)
+:assumption (or (not x17432) (not x19326))
+:assumption (or x4664 x5028 (not x17860) (not x29442))
+:assumption (or (not x7648) x4784)
+:assumption (or (not x5943) x25407)
+:assumption (or (not x14075) (not x2288) (not x17637) x17126)
+:assumption (or (not x1795) (not x13576))
+:assumption (or x6951 x31144 (not x13693))
+:assumption (or x26727 x22103 (not x30745) x7573)
+:assumption (or (not x15764) (not x2336))
+:assumption (or x13024 (not x1580))
+:assumption (or (not x31392) x27356)
+:assumption (or (not x30100) x2928)
+:assumption (or x5204 x1408)
+:assumption (or (not x30392) x14615)
+:assumption (or x28563 (not x16279))
+:assumption (or (not x10454) (not x8405))
+:assumption (or x13294 (not x2026))
+:assumption (or (not x6667) (not x30111))
+:assumption (or (not x30278) (not x20649))
+:assumption (or x20959 (not x14314))
+:assumption (or x8299 x18694)
+:assumption (or (not x18788) x5148)
+:assumption (or x26795 (not x22619))
+:assumption (or (not x1393) (not x2940))
+:assumption (or (not x30692) x11975 x15682 x1977)
+:assumption (or (not x9746) x29630 x30954)
+:assumption (or x30846 (not x30129))
+:assumption (or (not x19410) x3940)
+:assumption (or (not x7710) (not x30261))
+:assumption (or (not x667) x18368)
+:assumption (or (not x22847) x31928)
+:assumption (or x19986 x5115)
+:assumption (or (not x27552) (not x11752))
+:assumption (or (not x12097) (not x24738))
+:assumption (or (not x29278) (not x3728))
+:assumption (or x346 (not x23898))
+:assumption (or (not x29449) x8194 x25366)
+:assumption (or (not x2877) (not x2151))
+:assumption (or x24005 (not x19434))
+:assumption (or x10048 x18659 x25283 (not x24004))
+:assumption (or x2053 (not x19307))
+:assumption (or (not x1993) x15391)
+:assumption (or (not x1136) (not x21815) (not x20506) x20087 (not x8902) (not x26432) (not x16510))
+:assumption (or (not x24575) x22726)
+:assumption (or (not x18604) x25586)
+:assumption (or x1742 (not x25911))
+:assumption (or (not x14026) (not x22722))
+:assumption (or (not x12937) (not x20949))
+:assumption (or (not x18192) (not x2188))
+:assumption (or x17915 (not x24347))
+:assumption (or x19229 (not x2505))
+:assumption (or x21653 x18942 (not x1983))
+:assumption (or x17419 x26804)
+:assumption (or x17722 x27172)
+:assumption (or x3315 (not x27235))
+:assumption (or x4437 x8528)
+:assumption (or (not x7541) x22120)
+:assumption (or (not x10617) x646)
+:assumption (or (not x30612) x23826)
+:assumption (or x21571 x938)
+:assumption (or x16712 x18146)
+:assumption (or x2516 (not x30966))
+:assumption (or x19000 (not x27952))
+:assumption (or (not x30778) (not x9173))
+:assumption (or (not x20400) (not x8002))
+:assumption (or (not x12879) x10036)
+:assumption (or (not x1311) (not x25176))
+:assumption (or x4559 (not x19706))
+:assumption (or x8030 (not x5881))
+:assumption (or x14357 x13758)
+:assumption (or x1907 x9008)
+:assumption (or x23388 x20185)
+:assumption (or (not x15912) (not x9087))
+:assumption (or x16252 (not x15252))
+:assumption (or (not x10955) x7336)
+:assumption (or x28885 x26798)
+:assumption (or x14591 x23192 x12179 x7363 x1234)
+:assumption (or x2118 (not x24770))
+:assumption (or (not x10998) x3494)
+:assumption (or (not x2492) (not x22449))
+:assumption (or x19735 (not x6643))
+:assumption (or (not x6966) (not x28529))
+:assumption (or (not x27043) (not x1754) (not x16304))
+:assumption (or (not x24257) x18462)
+:assumption (or x5346 (not x1456))
+:assumption (or x15307 x10273)
+:assumption (or x2814 x28021)
+:assumption (or (not x12035) x9036)
+:assumption (or x10251 (not x7787) x1493 (not x24052))
+:assumption (or (not x30457) x3782 (not x11984) x29442)
+:assumption (or (not x3052) x13990)
+:assumption (or x22383 (not x14484) (not x15237) (not x12433) x3390 (not x17065))
+:assumption (or (not x11669) x4877)
+:assumption (or x13684 x29833)
+:assumption (or x10109 x5887)
+:assumption (or x23286 x21904)
+:assumption (or (not x20486) x23958 x31118)
+:assumption (or x15929 x5283)
+:assumption (or (not x30891) (not x23551))
+:assumption (or (not x20702) x26864)
+:assumption (or (not x21439) x28442)
+:assumption (or x25490 (not x4261))
+:assumption (or (not x15003) x26856 x18694 (not x13298) (not x15410) (not x10623))
+:assumption (or (not x26379) (not x11374))
+:assumption (or (not x8199) (not x6023) x5025)
+:assumption (or x26699 x18204)
+:assumption (or x10959 x13873)
+:assumption (or x21825 x29547)
+:assumption (or (not x9936) (not x5335))
+:assumption (or (not x30814) x11536)
+:assumption (or x12554 x22696)
+:assumption (or x1393 x13894)
+:assumption (or (not x9573) x8355)
+:assumption (or x20403 (not x28371))
+:assumption (or x26472 x17953)
+:assumption (or x953 (not x29468) (not x18110))
+:assumption (or x8532 x8499)
+:assumption (or (not x6562) x14573)
+:assumption (or (not x29018) (not x14357) (not x22686))
+:assumption (or (not x3857) x9260)
+:assumption (or (not x25689) x24202)
+:assumption (or x17884 (not x22859) (not x12653) (not x22746) (not x1612))
+:assumption (or (not x14455) x15986)
+:assumption (or (not x1547) (not x2035))
+:assumption (or x28602 x10083)
+:assumption (or x7075 x23264 x27424 x15151)
+:assumption (or (not x569) (not x26723))
+:assumption (or (not x21901) (not x3224))
+:assumption (or (not x15861) x11290 (not x27040))
+:assumption (or x18557 (not x24988))
+:assumption (or (not x27368) (not x7520) x8002)
+:assumption (or (not x23206) x29600)
+:assumption (or (not x8182) x9821)
+:assumption (or x25659 x30298)
+:assumption (or x31559 x17788)
+:assumption (or (not x14030) (not x18335))
+:assumption (or (not x27682) x1717)
+:assumption (or x2818 (not x10746))
+:assumption (or (not x5648) x3181)
+:assumption (or x30069 (not x12424))
+:assumption (or x14512 x13325)
+:assumption (or x28102 x14210)
+:assumption (or x13956 x18252 x14517)
+:assumption (or x22869 x3879)
+:assumption (or (not x5124) x11873)
+:assumption (or (not x20125) x16409 x30124)
+:assumption (or x18519 x23160 (not x14777) (not x13962) x20750 x24995 (not x19233) x12429)
+:assumption (or (not x18151) x21009)
+:assumption (or (not x16986) x20133)
+:assumption (or x2187 (not x18637) (not x4442) (not x16230) x8364 x14116)
+:assumption (or (not x14504) x29792)
+:assumption (or (not x22608) (not x14839))
+:assumption (or (not x22102) (not x27924))
+:assumption (or x2868 x11664)
+:assumption (or x31536 x17359 (not x1200) x10876 x29395 x27161)
+:assumption (or (not x29683) (not x8262) x13767 (not x18694) x28309)
+:assumption (or (not x21319) x3795)
+:assumption (or x31812 x14213)
+:assumption (or x28242 (not x21518))
+:assumption (or (not x29790) (not x9362))
+:assumption (or x27949 x26798)
+:assumption (or x22285 (not x30261))
+:assumption (or x24756 (not x17379) (not x4024))
+:assumption (or (not x13482) x17999)
+:assumption (or (not x27126) x17074)
+:assumption (or x18596 (not x26215))
+:assumption (or (not x22514) x3712 x21653)
+:assumption (or x7721 (not x29069))
+:assumption (or x23657 x11291)
+:assumption (or x2622 x14635 x29014 (not x2177))
+:assumption (or x20111 x25606)
+:assumption (or (not x28865) x28511)
+:assumption (or x16741 (not x28948) x20487)
+:assumption (or (not x2056) (not x16306))
+:assumption (or (not x22825) (not x13731))
+:assumption (or (not x18678) x827 (not x6033))
+:assumption (or (not x15926) (not x10386))
+:assumption (or x15211 x19008)
+:assumption (or (not x12281) x27214)
+:assumption (or x27168 (not x31472) x27104)
+:assumption (or (not x2334) x29319)
+:assumption (or x22154 (not x74) x13765 x22831)
+:assumption (or x17347 (not x5467))
+:assumption (or x20482 x6406)
+:assumption (or x28019 x1414)
+:assumption (or (not x10525) (not x18859))
+:assumption (or (not x29004) (not x14186))
+:assumption (or x10004 (not x763))
+:assumption (or (not x19182) x14839 (not x28516))
+:assumption (or x1718 (not x16255))
+:assumption (or x4387 x3813 x1393)
+:assumption (or x25195 (not x26789))
+:assumption (or x21651 x24338 x6972)
+:assumption (or x23326 (not x24529) x6458 (not x9969) (not x10064))
+:assumption (or (not x1500) x16854)
+:assumption (or x8367 (not x4002))
+:assumption (or x19158 x16864)
+:assumption (or x25342 (not x19594))
+:assumption (or (not x8786) x5212)
+:assumption (or x14520 x8838)
+:assumption (or x2135 x3791)
+:assumption (or (not x28008) (not x29014))
+:assumption (or x21174 x16182)
+:assumption (or x11461 x26515)
+:assumption (or x20320 (not x1280))
+:assumption (or (not x19311) (not x29719))
+:assumption (or (not x31619) x3063 x27686 x28885)
+:assumption (or (not x13576) (not x13220))
+:assumption (or (not x26091) (not x5510))
+:assumption (or x6226 (not x13308))
+:assumption (or (not x12418) x16133)
+:assumption (or x14983 x30169)
+:assumption (or x13246 (not x19623))
+:assumption (or x6738 x5175)
+:assumption (or x12928 x27484)
+:assumption (or (not x31471) (not x31723))
+:assumption (or (not x25432) x31496)
+:assumption (or (not x29066) x17966)
+:assumption (or x31587 (not x17495))
+:assumption (or x21229 x7397)
+:assumption (or (not x30730) (not x27602) (not x16455))
+:assumption (or x6374 x2169 x14591 x15795)
+:assumption (or (not x6577) x5528)
+:assumption (or x15503 (not x16907))
+:assumption (or x10874 (not x24087))
+:assumption (or x937 (not x16133))
+:assumption (or x20387 x29747)
+:assumption (or x3423 x13200)
+:assumption (or x16948 (not x26085))
+:assumption (or x21502 x659)
+:assumption (or x26657 (not x23259))
+:assumption (or (not x2529) x22049 x2621)
+:assumption (or (not x28612) (not x5822))
+:assumption (or x16166 (not x19331))
+:assumption (or (not x3878) (not x31278))
+:assumption (or (not x13834) x24148)
+:assumption (or (not x29027) x5836)
+:assumption (or x18521 (not x8623) (not x21803) (not x18897))
+:assumption (or (not x13922) x24625)
+:assumption (or (not x5014) x21867)
+:assumption (or x26929 (not x11792))
+:assumption (or (not x3083) x30178)
+:assumption (or (not x8202) x17359)
+:assumption (or (not x7858) x5742)
+:assumption (or x22503 x21432)
+:assumption (or (not x25828) x26989)
+:assumption (or (not x719) x20896)
+:assumption (or x19861 (not x938))
+:assumption (or x18464 (not x28207))
+:assumption (or x27649 (not x20900))
+:assumption (or x20751 (not x31876))
+:assumption (or (not x16039) (not x7218) (not x21374) (not x23082))
+:assumption (or x29944 (not x30271))
+:assumption (or (not x4437) x28152)
+:assumption (or (not x17532) x31054)
+:assumption (or (not x22230) x26308)
+:assumption (or (not x28080) x28246)
+:assumption (or (not x3870) x7287)
+:assumption (or x9542 (not x26112) x918)
+:assumption (or x11801 (not x16741))
+:assumption (or x235 x19160)
+:assumption (or x30283 x12453)
+:assumption (or (not x20833) (not x31858))
+:assumption (or (not x19652) x19734)
+:assumption (or (not x22230) (not x16585))
+:assumption (or (not x19489) (not x26953))
+:assumption (or (not x15582) x4386 (not x21690))
+:assumption (or (not x24155) x14826)
+:assumption (or x6594 x23244 (not x1929))
+:assumption (or x17071 (not x26578))
+:assumption (or x5806 (not x18317))
+:assumption (or x10196 x8696)
+:assumption (or x17243 (not x13959))
+:assumption (or (not x10331) x7249)
+:assumption (or x23675 (not x1620) (not x18300) x12043 (not x28912) x24301 (not x5639))
+:assumption (or (not x29294) (not x27393))
+:assumption (or x10310 x14999)
+:assumption (or x16269 (not x11515))
+:assumption (or (not x15795) x31709)
+:assumption (or (not x18490) (not x52))
+:assumption (or x8002 x16464)
+:assumption (or x12376 x30856)
+:assumption (or x3258 x30037 (not x13120))
+:assumption (or (not x27231) (not x8694))
+:assumption (or (not x25365) x16339)
+:assumption (or (not x30269) x31448)
+:assumption (or x14776 (not x17568))
+:assumption (or (not x25686) (not x7362))
+:assumption (or x1575 (not x3141))
+:assumption (or (not x24058) (not x25117))
+:assumption (or x25659 (not x9330))
+:assumption (or (not x7537) x9931)
+:assumption (or x15309 x26964)
+:assumption (or (not x27507) (not x23963))
+:assumption (or (not x19309) (not x3719) (not x13956))
+:assumption (or (not x8002) x3338)
+:assumption (or x1203 x24315)
+:assumption (or x21340 (not x28083))
+:assumption (or (not x23689) (not x17692))
+:assumption (or x6822 (not x23646))
+:assumption (or x1193 x7084)
+:assumption (or x171 x708)
+:assumption (or (not x20735) x15)
+:assumption (or x29521 (not x27018))
+:assumption (or x541 x27322 (not x784) (not x3966))
+:assumption (or (not x15230) x7619)
+:assumption (or (not x7098) (not x26868))
+:assumption (or (not x20626) x17863 (not x11375))
+:assumption (or x13747 x22293)
+:assumption (or (not x3904) x31366)
+:assumption (or x10801 x13648)
+:assumption (or (not x7435) (not x2838))
+:assumption (or x8002 x30330)
+:assumption (or (not x30269) x16977)
+:assumption (or (not x28150) (not x12603))
+:assumption (or (not x27244) x25305)
+:assumption (or (not x31476) x6213)
+:assumption (or (not x24853) (not x2426))
+:assumption (or (not x8319) x20904)
+:assumption (or x23655 (not x298))
+:assumption (or x8506 x1835)
+:assumption (or (not x6850) x480)
+:assumption (or x28120 x827)
+:assumption (or x25091 x30246)
+:assumption (or (not x24863) x2416)
+:assumption (or (not x28708) (not x21075))
+:assumption (or (not x14508) (not x6026) x3494)
+:assumption (or x15584 x23698)
+:assumption (or x3888 (not x19183))
+:assumption (or x15034 x15998)
+:assumption (or x15518 (not x9466))
+:assumption (or x1393 (not x13306) x13743)
+:assumption (or (not x19485) (not x15770))
+:assumption (or x12902 (not x30138))
+:assumption (or (not x7543) x9930 (not x26098) x25806)
+:assumption (or (not x1740) (not x1457))
+:assumption (or x18509 x29506)
+:assumption (or x25583 (not x17449))
+:assumption (or x9811 x12996)
+:assumption (or (not x27538) x5886 x12299 x31588 x22791 (not x26690) (not x9207))
+:assumption (or x8051 x18814)
+:assumption (or (not x582) (not x28594))
+:assumption (or x18215 (not x519) x15908)
+:assumption (or x22089 (not x20992) x7071 x1930)
+:assumption (or x3000 (not x9008))
+:assumption (or (not x25411) (not x25446))
+:assumption (or x18542 x28364)
+:assumption (or (not x17141) x21332 (not x9588) x4506 (not x31614) x31076 x4048)
+:assumption (or (not x18649) x30088)
+:assumption (or x9076 x22810)
+:assumption (or (not x1510) (not x27002))
+:assumption (or (not x1566) (not x23410) x16025)
+:assumption (or (not x28990) x15267)
+:assumption (or x20864 x23051)
+:assumption (or (not x26942) (not x1368))
+:assumption (or x10561 x31005 x17225 x30467)
+:assumption (or (not x22754) x12201)
+:assumption (or (not x1837) x16334)
+:assumption (or x7066 x5253)
+:assumption (or (not x20578) x5317)
+:assumption (or (not x30690) (not x14435))
+:assumption (or (not x5381) (not x7607))
+:assumption (or x90 x5571)
+:assumption (or x1483 (not x10092))
+:assumption (or (not x25160) (not x961))
+:assumption (or (not x11870) (not x16510) (not x21815) x28541 (not x6951))
+:assumption (or (not x28786) x26531)
+:assumption (or x3377 (not x3696))
+:assumption (or (not x24533) (not x19487))
+:assumption (or (not x19940) (not x26))
+:assumption (or (not x5059) (not x7585))
+:assumption (or x23438 (not x25659) (not x8108))
+:assumption (or (not x17531) (not x29772))
+:assumption (or x25400 x10108)
+:assumption (or x13590 (not x19549))
+:assumption (or (not x24713) x465)
+:assumption (or (not x2954) x10780)
+:assumption (or x16720 (not x24722) x25355)
+:assumption (or (not x13755) (not x13871))
+:assumption (or x24253 x1866)
+:assumption (or (not x18337) (not x29362))
+:assumption (or (not x676) (not x3680))
+:assumption (or x3592 x10064)
+:assumption (or x10168 x18109)
+:assumption (or x22187 (not x26214))
+:assumption (or (not x8193) x31336)
+:assumption (or (not x2022) (not x27700) (not x23581))
+:assumption (or (not x26868) (not x17895))
+:assumption (or x5528 x26460)
+:assumption (or (not x8483) (not x4451) (not x7066))
+:assumption (or x20687 x6351 (not x22301))
+:assumption (or (not x15803) (not x11981))
+:assumption (or x10408 x15708)
+:assumption (or (not x12000) x13477)
+:assumption (or (not x13673) (not x15112))
+:assumption (or x19227 x5085)
+:assumption (or x25116 (not x31548))
+:assumption (or (not x20196) (not x17149))
+:assumption (or x21679 (not x16121))
+:assumption (or (not x28822) (not x26533))
+:assumption (or x17817 x11047)
+:assumption (or x20987 x16362)
+:assumption (or x24128 x4994)
+:assumption (or x11155 x19672)
+:assumption (or (not x14936) (not x24883))
+:assumption (or (not x3763) x3734)
+:assumption (or (not x12045) (not x9856))
+:assumption (or x15646 (not x16525))
+:assumption (or x5873 (not x5367))
+:assumption (or (not x20374) x31400)
+:assumption (or x24826 (not x23354))
+:assumption (or x23945 (not x304))
+:assumption (or x12923 (not x6285))
+:assumption (or x4992 x11105)
+:assumption (or (not x12864) x22126)
+:assumption (or (not x4785) (not x3626))
+:assumption (or x6070 (not x15146))
+:assumption (or (not x9646) (not x5907))
+:assumption (or x19938 x28895)
+:assumption (or x21839 (not x13145))
+:assumption (or (not x19068) (not x7987))
+:assumption (or x21740 (not x2439))
+:assumption (or x28874 (not x3646) x8074)
+:assumption (or x14435 x12907 (not x2142) (not x18243))
+:assumption (or x29033 (not x24945))
+:assumption (or x5356 (not x21202) (not x23257) (not x13036))
+:assumption (or x12360 x28589)
+:assumption (or (not x7231) x29733)
+:assumption (or (not x30331) x28677)
+:assumption (or (not x31885) (not x25420) x5054 x10930 x22332 (not x19298))
+:assumption (or (not x16642) (not x27270) (not x4009) x26545 x13366 (not x22930) x56 x6092 x6954)
+:assumption (or x21630 (not x18315))
+:assumption (or (not x9913) (not x5394))
+:assumption (or (not x20238) (not x8586))
+:assumption (or x10405 (not x24127))
+:assumption (or x25481 x18080)
+:assumption (or x2128 x18047)
+:assumption (or (not x27070) x14955)
+:assumption (or x26325 (not x31862))
+:assumption (or x10096 x13529)
+:assumption (or x10152 x10015)
+:assumption (or (not x392) (not x29312))
+:assumption (or x12801 x11181)
+:assumption (or (not x16790) x15809)
+:assumption (or x23200 (not x12830))
+:assumption (or (not x29228) x21985)
+:assumption (or x5455 x23017 x14191)
+:assumption (or x23244 x23277 (not x3788))
+:assumption (or (not x18623) (not x13956) (not x13411) x13677)
+:assumption (or x24336 x15486)
+:assumption (or (not x854) x8002 (not x10005) (not x23311) (not x31043) x8785)
+:assumption (or (not x22845) x21091)
+:assumption (or x13955 (not x23244) (not x15795))
+:assumption (or x14603 (not x5973))
+:assumption (or x17788 (not x10353))
+:assumption (or x2885 x30138)
+:assumption (or (not x30844) (not x9070))
+:assumption (or x13146 (not x6787))
+:assumption (or x24697 (not x26354) (not x3317) (not x21082) (not x20172) x28072 (not x147))
+:assumption (or (not x234) x15043)
+:assumption (or x19165 x16717 x16131)
+:assumption (or (not x26183) (not x17904))
+:assumption (or (not x14364) (not x15735))
+:assumption (or x9967 x3782)
+:assumption (or (not x7812) x11024 (not x25334) x13188)
+:assumption (or x15601 (not x15715))
+:assumption (or (not x14102) x15432)
+:assumption (or (not x23331) (not x25679))
+:assumption (or (not x7465) x17321)
+:assumption (or (not x19588) (not x18904))
+:assumption (or x28487 (not x14989))
+:assumption (or (not x11028) (not x21986))
+:assumption (or x350 (not x27410))
+:assumption (or (not x6511) x7367)
+:assumption (or x4690 x28874)
+:assumption (or (not x2869) x5055 x11281 (not x10227))
+:assumption (or (not x1582) x14211)
+:assumption (or (not x8361) (not x19166))
+:assumption (or x8397 (not x14398))
+:assumption (or (not x7181) x1933)
+:assumption (or x20242 x27248)
+:assumption (or x7148 (not x27706))
+:assumption (or x3098 x27875)
+:assumption (or x4120 (not x17359))
+:assumption (or x6148 (not x80) x8002)
+:assumption (or (not x7992) x4925)
+:assumption (or (not x28935) x21532)
+:assumption (or (not x18582) x3508)
+:assumption (or (not x17952) (not x6252))
+:assumption (or x4602 (not x21347))
+:assumption (or x8002 x23244 x18163 x27711)
+:assumption (or (not x389) x2247)
+:assumption (or x5389 x30116)
+:assumption (or x20291 x11993 (not x23095) (not x4831))
+:assumption (or (not x18170) (not x15343))
+:assumption (or x1932 (not x29606) x28262)
+:assumption (or x18254 x2886)
+:assumption (or (not x8574) (not x30841))
+:assumption (or (not x18584) x19347)
+:assumption (or (not x27454) x7978)
+:assumption (or (not x26102) (not x6296))
+:assumption (or (not x20794) x24058 x25117 (not x5528) (not x9008))
+:assumption (or (not x13005) (not x5766) (not x27440) x1393 (not x6849) x20494 (not x31060) x26531)
+:assumption (or x25281 (not x29441))
+:assumption (or (not x17897) x8901)
+:assumption (or (not x31663) x3016)
+:assumption (or x11995 (not x1035) (not x27357) x11442 (not x19719) x30080 (not x29929))
+:assumption (or (not x4955) (not x28805) x14275 x31712)
+:assumption (or x17473 x21298)
+:assumption (or x21815 x2161)
+:assumption (or x25302 (not x13910))
+:assumption (or (not x7272) (not x6487))
+:assumption (or (not x30189) x19370)
+:assumption (or x9793 (not x8602) x15893)
+:assumption (or x18519 (not x5888))
+:assumption (or (not x14394) (not x20457))
+:assumption (or x8947 x1223)
+:assumption (or (not x23244) x2561)
+:assumption (or (not x18925) x14290)
+:assumption (or x4593 (not x8981) x28266 (not x18249) (not x20684))
+:assumption (or (not x17920) (not x26571))
+:assumption (or (not x5444) x4225)
+:assumption (or (not x25445) (not x20087))
+:assumption (or (not x14516) (not x28444))
+:assumption (or x1644 (not x28052))
+:assumption (or (not x24737) (not x12420))
+:assumption (or x19367 x27749 (not x6144) x15621)
+:assumption (or x6768 (not x26464))
+:assumption (or x11499 (not x4000))
+:assumption (or (not x15944) (not x24980))
+:assumption (or x1069 x23865)
+:assumption (or (not x31129) (not x24509))
+:assumption (or (not x24782) (not x2001))
+:assumption (or (not x13135) x7389)
+:assumption (or (not x27062) x14742)
+:assumption (or (not x4781) (not x10255))
+:assumption (or x19722 (not x22401))
+:assumption (or (not x23263) x24253)
+:assumption (or (not x17783) (not x20153))
+:assumption (or (not x1393) x8288)
+:assumption (or x21541 x25008 (not x5431) (not x30403))
+:assumption (or (not x5138) (not x5938) x5790 (not x3001))
+:assumption (or (not x11566) x30138 (not x4401) x31177 (not x16510) x24470 (not x21815))
+:assumption (or x12923 x22024)
+:assumption (or (not x18010) x9477)
+:assumption (or x13745 (not x3962))
+:assumption (or (not x25659) (not x6817))
+:assumption (or (not x25755) (not x9359))
+:assumption (or (not x21498) x31243 x4451 (not x30127))
+:assumption (or x18042 x28336)
+:assumption (or (not x14553) (not x31200))
+:assumption (or x11616 (not x4103))
+:assumption (or (not x4163) (not x20949))
+:assumption (or x5316 (not x6758))
+:assumption (or (not x14818) x18750)
+:assumption (or (not x16123) (not x20080))
+:assumption (or (not x19655) x3963)
+:assumption (or x31830 x30118)
+:assumption (or (not x24236) (not x2826))
+:assumption (or x22134 x30856)
+:assumption (or x15016 x9720)
+:assumption (or x26879 (not x23244))
+:assumption (or (not x23464) x19644)
+:assumption (or x6783 x30083)
+:assumption (or x21546 x24875 (not x11027) x31182 (not x16930) x14232 x5547)
+:assumption (or x8602 (not x11077))
+:assumption (or (not x9744) x3415 x26897)
+:assumption (or x22231 (not x15771))
+:assumption (or x31560 x3861)
+:assumption (or (not x18468) x23306)
+:assumption (or (not x10083) x6231)
+:assumption (or (not x1755) (not x14076))
+:assumption (or (not x23141) (not x16747))
+:assumption (or (not x29149) (not x16654))
+:assumption (or (not x6696) (not x4327))
+:assumption (or x10064 x20931)
+:assumption (or x21612 x18233 (not x24918))
+:assumption (or x10434 x28885)
+:assumption (or (not x8778) (not x14161))
+:assumption (or (not x18871) x22059)
+:assumption (or x19428 (not x21652))
+:assumption (or x21653 (not x20022) (not x316))
+:assumption (or (not x3994) (not x24945))
+:assumption (or x18793 (not x2265))
+:assumption (or x16415 (not x31669) (not x16811) x3803)
+:assumption (or (not x23244) x1392 x18610)
+:assumption (or (not x31099) x13576 (not x9531) x418)
+:assumption (or (not x25028) x23840)
+:assumption (or x15171 x30445)
+:assumption (or (not x30113) x532)
+:assumption (or (not x9309) (not x19917) x22825 x16084 x31734 x7854 x13731)
+:assumption (or x27494 x18594 (not x24591) (not x14863))
+:assumption (or x17354 (not x827))
+:assumption (or (not x26813) x14322)
+:assumption (or x15102 (not x11165) x23244 (not x7608) x8002)
+:assumption (or (not x3395) x21118)
+:assumption (or (not x17210) (not x22845))
+:assumption (or x31134 x7033)
+:assumption (or (not x15855) x20291)
+:assumption (or (not x21843) x16817)
+:assumption (or (not x14374) (not x29537))
+:assumption (or (not x28184) (not x2587))
+:assumption (or (not x10877) x10950)
+:assumption (or x5918 x26751)
+:assumption (or x7863 x13460)
+:assumption (or (not x27998) x29571)
+:assumption (or x6651 x27219 x2996 x2443)
+:assumption (or x25000 (not x3750))
+:assumption (or x28226 x12672)
+:assumption (or x31863 (not x22046))
+:assumption (or x20129 (not x21667))
+:assumption (or x23123 (not x4338))
+:assumption (or x19873 (not x4495))
+:assumption (or (not x14074) (not x25525))
+:assumption (or (not x2437) x2183 x29744 (not x25037) (not x28228))
+:assumption (or x31444 x2018)
+:assumption (or x27767 x30120)
+:assumption (or x17260 x15998)
+:assumption (or x4960 (not x24290))
+:assumption (or (not x22925) x20916)
+:assumption (or (not x5036) x22878)
+:assumption (or (not x17026) x3872)
+:assumption (or x5813 x16226)
+:assumption (or (not x4457) (not x18335) x2988 x6796)
+:assumption (or (not x1930) (not x25756))
+:assumption (or x7217 (not x9133))
+:assumption (or x20325 x23064)
+:assumption (or (not x17434) x22637)
+:assumption (or x15215 x22121)
+:assumption (or x19428 x20423)
+:assumption (or x19163 x28169)
+:assumption (or x14005 x27172)
+:assumption (or x7915 x28697)
+:assumption (or (not x5509) (not x6911))
+:assumption (or x858 (not x19693))
+:assumption (or (not x13216) (not x7972))
+:assumption (or (not x23509) x10909 (not x4983) (not x7774) (not x21815) x480 (not x16510))
+:assumption (or x8979 x25527 (not x18832))
+:assumption (or (not x23884) (not x24289))
+:assumption (or (not x11859) x9054)
+:assumption (or x26712 (not x4378))
+:assumption (or x3417 (not x27758) (not x15435))
+:assumption (or (not x3490) (not x14963))
+:assumption (or x11754 (not x23997))
+:assumption (or (not x15801) (not x27059) x8999 (not x2594))
+:assumption (or x20052 (not x15181))
+:assumption (or (not x29753) x1411)
+:assumption (or (not x29213) (not x3031) x16923 x2672 (not x10287) (not x15877) (not x4497) x6188 (not x553))
+:assumption (or x28571 (not x6425))
+:assumption (or x1939 (not x16745))
+:assumption (or x27923 (not x6100))
+:assumption (or (not x12196) x26546 (not x7911) (not x26981))
+:assumption (or (not x30887) x17687)
+:assumption (or (not x28629) x28285 x25415 x4638 x10457 x1876 x15289 x4391 x15421)
+:assumption (or x827 (not x26853))
+:assumption (or x1655 x16362)
+:assumption (or x7924 (not x10954))
+:assumption (or (not x4378) (not x19538))
+:assumption (or x11280 x6669)
+:assumption (or (not x4572) x7748)
+:assumption (or x21156 x5528)
+:assumption (or x26248 (not x20507))
+:assumption (or (not x31628) x16576 (not x3782) (not x29442))
+:assumption (or x17331 (not x29372) x26801 x29941 x9949 x28315 x1898)
+:assumption (or (not x13995) (not x389))
+:assumption (or x25125 x3417 (not x24756) (not x20087) (not x20169))
+:assumption (or x228 (not x22614))
+:assumption (or x19939 (not x16909))
+:assumption (or x17334 x1152)
+:assumption (or (not x9943) x19233)
+:assumption (or (not x31664) x23721)
+:assumption (or x22896 (not x31006))
+:assumption (or (not x20741) (not x5630) (not x27827) x8460 (not x4824) x1442 x10381 x22480 (not x10671))
+:assumption (or (not x16153) x6301)
+:assumption (or (not x17440) (not x1555))
+:assumption (or (not x31438) x25441)
+:assumption (or (not x14967) x22783)
+:assumption (or (not x28266) x25267)
+:assumption (or (not x11357) x13956)
+:assumption (or (not x14592) x28033)
+:assumption (or (not x22165) x3981)
+:assumption (or (not x21034) (not x13576))
+:assumption (or (not x14759) (not x12472))
+:assumption (or (not x60) x143 x31853 x6075)
+:assumption (or (not x25546) (not x26391))
+:assumption (or x31662 (not x9329) (not x31571) x16455)
+:assumption (or (not x24140) x948)
+:assumption (or (not x1912) x25423)
+:assumption (or (not x24327) x24808)
+:assumption (or (not x16485) x1297)
+:assumption (or (not x20200) x9061)
+:assumption (or x7399 x4680)
+:assumption (or (not x22319) (not x5763) x14973 (not x6210) x25307)
+:assumption (or x1395 x28256)
+:assumption (or (not x24818) x28619)
+:assumption (or x14257 (not x21432) (not x10045))
+:assumption (or x21298 (not x7152) (not x28342) x21249)
+:assumption (or (not x18042) (not x20862))
+:assumption (or x17144 (not x14470))
+:assumption (or x19420 (not x14687))
+:assumption (or x9008 (not x5659))
+:assumption (or x13612 x8986)
+:assumption (or x12908 x11783)
+:assumption (or (not x26843) (not x8002))
+:assumption (or x20231 x12190)
+:assumption (or (not x3658) (not x657))
+:assumption (or (not x9456) x10064)
+:assumption (or x6345 x16228)
+:assumption (or (not x11823) x24952)
+:assumption (or x8602 x16810 (not x28000))
+:assumption (or x17515 x8898)
+:assumption (or (not x26936) x14455)
+:assumption (or (not x15209) x8985)
+:assumption (or (not x29433) (not x4678) (not x4491) x5625)
+:assumption (or x6150 x14097)
+:assumption (or x25931 x26835)
+:assumption (or x20920 (not x27566))
+:assumption (or x22301 (not x6351) x26730)
+:assumption (or x31729 x12373)
+:assumption (or x18668 (not x2534) (not x15110) (not x11614) x18194 (not x22853) x31057 x14792)
+:assumption (or (not x30750) x5800)
+:assumption (or (not x19299) x16510)
+:assumption (or (not x827) (not x24043) (not x2556))
+:assumption (or x7667 (not x27804))
+:assumption (or (not x20999) x27530)
+:assumption (or (not x993) x5609)
+:assumption (or (not x11792) x27702)
+:assumption (or x29591 x15193)
+:assumption (or x20546 x26497)
+:assumption (or x20307 (not x8660))
+:assumption (or (not x24432) x3464)
+:assumption (or (not x16583) (not x27539))
+:assumption (or (not x8469) (not x11440))
+:assumption (or (not x2535) (not x27647) x4451 x31449 (not x10297) (not x18008) x2560)
+:assumption (or (not x6092) (not x24765))
+:assumption (or (not x4771) x19877)
+:assumption (or x21679 (not x6783))
+:assumption (or x7952 (not x4643))
+:assumption (or (not x8219) (not x11247))
+:assumption (or x15292 x21886 x15912 x1610)
+:assumption (or (not x8002) (not x3753))
+:assumption (or x23243 (not x30938))
+:assumption (or x5303 x20021)
+:assumption (or (not x2884) x22852 (not x23279) x28885 x24904)
+:assumption (or (not x18614) x27862)
+:assumption (or x26056 x17679)
+:assumption (or (not x6707) (not x6155))
+:assumption (or (not x4225) x16336 (not x21525) x31239)
+:assumption (or x22490 (not x30926))
+:assumption (or (not x19062) x2929)
+:assumption (or (not x17236) x25815)
+:assumption (or x4655 x8361 x20010 (not x5991) (not x14575) (not x19771) x19166 x7038)
+:assumption (or (not x28783) (not x13968))
+:assumption (or x9629 x30976 x16142 x8267)
+:assumption (or x27043 x1754)
+:assumption (or x20084 (not x15988) (not x30059) (not x3245) (not x18956))
+:assumption (or (not x616) (not x2334))
+:assumption (or x30460 x3808)
+:assumption (or (not x8602) x20207)
+:assumption (or x26821 (not x7945))
+:assumption (or x2938 x8002 x29934 (not x149) (not x4596) (not x13857))
+:assumption (or (not x13809) (not x18710))
+:assumption (or x4646 (not x31134) x31063)
+:assumption (or (not x15308) x25622)
+:assumption (or (not x1074) x14843)
+:assumption (or x20506 x8902)
+:assumption (or x8602 x27292)
+:assumption (or (not x17987) (not x12631))
+:assumption (or (not x9025) x28064 x5028)
+:assumption (or (not x21103) (not x16160) (not x21672) x23718)
+:assumption (or x3130 (not x18417))
+:assumption (or (not x13116) (not x10743) x8002)
+:assumption (or (not x19610) x22280)
+:assumption (or (not x13734) x11831)
+:assumption (or x2696 (not x23518))
+:assumption (or x13257 (not x4549))
+:assumption (or (not x13125) (not x30268))
+:assumption (or (not x27537) (not x21251))
+:assumption (or x670 x27739)
+:assumption (or (not x15384) x14494)
+:assumption (or (not x30138) x26897 x30774 x8623)
+:assumption (or (not x29627) (not x5528))
+:assumption (or x31829 x14360)
+:assumption (or x18616 (not x827) (not x4139))
+:assumption (or (not x31143) x8873)
+:assumption (or x29683 x20912)
+:assumption (or (not x26720) (not x22578))
+:assumption (or (not x9082) x10705)
+:assumption (or x7348 (not x23475))
+:assumption (or (not x16611) x26366)
+:assumption (or (not x21656) (not x20501))
+:assumption (or (not x9779) x1630)
+:assumption (or x4065 x7653 x3341)
+:assumption (or x18050 x412)
+:assumption (or x23238 (not x20564))
+:assumption (or x16484 x126)
+:assumption (or x17202 x2414)
+:assumption (or (not x15917) x9593 x16510)
+:assumption (or (not x29645) (not x27493) (not x25808) (not x5367))
+:assumption (or x5318 x663)
+:assumption (or x31223 x3494)
+:assumption (or (not x23) (not x4639))
+:assumption (or (not x1118) x244)
+:assumption (or (not x14485) (not x3275))
+:assumption (or (not x12006) (not x8415))
+:assumption (or (not x22327) x5394 x2240 x762)
+:assumption (or (not x30438) x3262 x17910 x21659)
+:assumption (or x29274 (not x1051) (not x7460) x25041 (not x2466))
+:assumption (or x31508 x26084)
+:assumption (or (not x19465) x30586)
+:assumption (or x13576 (not x9531) x1336 x9387)
+:assumption (or (not x19767) (not x6548))
+:assumption (or (not x22925) x15845)
+:assumption (or (not x26250) x11654)
+:assumption (or (not x18821) (not x23244))
+:assumption (or x21909 (not x25313) (not x25911) (not x10424) (not x20749) x928 x5285 (not x4030) x17525)
+:assumption (or x6597 x3914)
+:assumption (or (not x627) (not x27321))
+:assumption (or (not x8085) (not x23536))
+:assumption (or (not x3477) (not x24402))
+:assumption (or (not x13955) x27156)
+:assumption (or x28512 (not x18641))
+:assumption (or (not x24459) (not x29526))
+:assumption (or (not x29959) (not x6594) x27574 (not x28512))
+:assumption (or (not x31639) x19724)
+:assumption (or x10696 x13544)
+:assumption (or x14221 x1287)
+:assumption (or (not x13596) (not x8760))
+:assumption (or (not x2578) (not x14883))
+:assumption (or x15866 (not x14809) (not x16358))
+:assumption (or (not x19252) (not x15357))
+:assumption (or x25538 (not x29252))
+:assumption (or x1629 x16321)
+:assumption (or (not x19765) x16683 (not x3560) (not x20302))
+:assumption (or x7157 x22947)
+:assumption (or (not x28437) (not x24102))
+:assumption (or (not x21728) (not x2659) (not x27945))
+:assumption (or (not x1033) x27697)
+:assumption (or (not x12639) (not x10566))
+:assumption (or (not x15242) x20512)
+:assumption (or (not x14313) (not x22920))
+:assumption (or x29771 x20681)
+:assumption (or x25491 x15814 x22283 x28342)
+:assumption (or x26307 x3812)
+:assumption (or (not x9189) x11692)
+:assumption (or x21311 x9345)
+:assumption (or x31080 x23859)
+:assumption (or x31682 (not x21010))
+:assumption (or (not x30355) (not x8866))
+:assumption (or (not x9531) x19969)
+:assumption (or (not x26152) (not x4929))
+:assumption (or (not x19463) (not x27564))
+:assumption (or (not x25454) (not x12801) (not x7255) (not x20217))
+:assumption (or x27010 x751)
+:assumption (or x30650 (not x27576))
+:assumption (or (not x17226) (not x24722))
+:assumption (or x552 x31681)
+:assumption (or x10118 (not x26280))
+:assumption (or x18294 (not x1383))
+:assumption (or (not x13956) (not x17664))
+:assumption (or (not x14843) (not x26321))
+:assumption (or x27963 (not x25606))
+:assumption (or (not x23143) x29442)
+:assumption (or x12123 (not x15993))
+:assumption (or (not x17522) x3782)
+:assumption (or x8992 x23808)
+:assumption (or (not x2146) (not x9614))
+:assumption (or x22597 x15993)
+:assumption (or (not x26578) x15102 (not x13956) x6680)
+:assumption (or (not x10056) (not x17302))
+:assumption (or (not x23737) x20279)
+:assumption (or (not x16304) (not x11645))
+:assumption (or (not x22383) (not x27904))
+:assumption (or (not x20964) (not x4451) (not x31257) x2498)
+:assumption (or x14933 x1899)
+:assumption (or x23311 (not x31305))
+:assumption (or (not x17529) (not x9453))
+:assumption (or x1433 (not x9116))
+:assumption (or x3645 (not x24855) x4375 (not x12330))
+:assumption (or x28181 (not x26247))
+:assumption (or x9490 (not x25184))
+:assumption (or (not x30672) x3455 x17826 x17572)
+:assumption (or (not x3455) (not x11514))
+:assumption (or x30370 (not x6016))
+:assumption (or (not x871) (not x18011))
+:assumption (or x14864 (not x16494))
+:assumption (or x14633 (not x559) x1393)
+:assumption (or x23965 (not x22702))
+:assumption (or x6660 x12120)
+:assumption (or (not x5974) (not x4864))
+:assumption (or (not x9398) (not x1853))
+:assumption (or x23486 (not x2281))
+:assumption (or (not x13489) x24642)
+:assumption (or (not x5898) x14224)
+:assumption (or x16772 (not x25659))
+:assumption (or x17694 (not x5886))
+:assumption (or (not x30872) x20215)
+:assumption (or x10514 (not x12017))
+:assumption (or x21653 x27458 x15504)
+:assumption (or x1122 (not x6351))
+:assumption (or (not x24290) (not x11940))
+:assumption (or (not x19421) (not x20294))
+:assumption (or (not x4930) (not x1335))
+:assumption (or (not x10227) (not x28535))
+:assumption (or x1569 x10995)
+:assumption (or (not x9762) x25288)
+:assumption (or x10243 x9287)
+:assumption (or (not x1393) x16399)
+:assumption (or x22115 x29551)
+:assumption (or x9531 x3193)
+:assumption (or (not x21653) x28080)
+:assumption (or x1653 (not x30387))
+:assumption (or x5088 (not x15387) (not x18439) x31767)
+:assumption (or x9271 (not x10775))
+:assumption (or x16827 x9893)
+:assumption (or (not x4830) x7357)
+:assumption (or x28890 (not x27362))
+:assumption (or x24260 (not x9187))
+:assumption (or (not x25975) x15795 x29880)
+:assumption (or (not x7431) x8474)
+:assumption (or (not x14300) x17567)
+:assumption (or (not x13072) (not x29316))
+:assumption (or x17546 (not x10137))
+:assumption (or (not x17302) x10131 (not x10114))
+:assumption (or (not x29638) x30127)
+:assumption (or (not x17806) x30478)
+:assumption (or (not x8814) (not x873))
+:assumption (or x9013 (not x22972))
+:assumption (or x10924 x16729)
+:assumption (or x3181 (not x12315))
+:assumption (or x4291 (not x18152) x31829 (not x918))
+:assumption (or (not x24369) (not x13956) x25484)
+:assumption (or x5695 x3554 x28645 x28965 x22546)
+:assumption (or x2669 x17276)
+:assumption (or x23213 (not x20949))
+:assumption (or x22190 x14206 x18079 (not x28920))
+:assumption (or (not x6069) x20397 (not x22710) x30722)
+:assumption (or (not x26897) (not x6506))
+:assumption (or (not x10559) (not x1265) (not x21298) (not x24846))
+:assumption (or x30641 (not x30618))
+:assumption (or (not x16495) x11966)
+:assumption (or x10085 x6951)
+:assumption (or x23244 (not x11774))
+:assumption (or x19727 (not x27244))
+:assumption (or (not x3384) x26432 x17359 (not x28469))
+:assumption (or x22804 (not x4477))
+:assumption (or (not x28345) x28921)
+:assumption (or x9730 (not x964) (not x7876))
+:assumption (or (not x16510) x26432 (not x12653) (not x7296) (not x21815) (not x12045) x13907)
+:assumption (or x2753 x26006 (not x8181) x15918 x10029 x29174 (not x10991) (not x24161) x27507)
+:assumption (or (not x31392) x288 x17909 x22806)
+:assumption (or (not x3364) x23462)
+:assumption (or x21528 (not x20087))
+:assumption (or x14578 (not x29476) (not x9145))
+:assumption (or (not x24756) x2809)
+:assumption (or x6861 (not x27500) (not x31167))
+:assumption (or x20951 x30227)
+:assumption (or (not x12954) (not x7382))
+:assumption (or x18777 x15176)
+:assumption (or (not x5289) (not x8002) x4241 (not x20949))
+:assumption (or x19666 x22998)
+:assumption (or x142 (not x7279))
+:assumption (or x23948 x31129)
+:assumption (or x5537 (not x446) x13899 (not x21509) (not x30633) (not x10017) (not x2912))
+:assumption (or (not x13447) (not x914))
+:assumption (or (not x25287) (not x24969))
+:assumption (or x28012 (not x25089))
+:assumption (or (not x11291) (not x23657) x10449 x9008 x20197 (not x1918))
+:assumption (or x26095 x17580)
+:assumption (or (not x834) x6521)
+:assumption (or x3220 x18499)
+:assumption (or (not x17860) (not x3524))
+:assumption (or x11604 x8631)
+:assumption (or (not x25659) (not x20040))
+:assumption (or x1860 (not x22568))
+:assumption (or x16310 (not x20961))
+:assumption (or (not x15227) x4997 (not x2278) x6444 (not x9439))
+:assumption (or x21376 (not x20402))
+:assumption (or (not x2815) x9023)
+:assumption (or (not x11001) (not x11392))
+:assumption (or (not x4247) (not x19987))
+:assumption (or x14314 x9301)
+:assumption (or x6839 x17075 x218)
+:assumption (or x198 x7536)
+:assumption (or x13345 (not x4693))
+:assumption (or (not x13018) (not x8672))
+:assumption (or (not x31189) (not x5393))
+:assumption (or (not x10549) (not x3340))
+:assumption (or (not x22820) (not x8787) x28994 x8858)
+:assumption (or x29312 (not x2809) x24756 x4560)
+:assumption (or (not x11990) x11973)
+:assumption (or x24592 (not x9961))
+:assumption (or x30080 x31171)
+:assumption (or x22497 x6519)
+:assumption (or x30704 x9008)
+:assumption (or x2173 x6746)
+:assumption (or x3023 (not x2887))
+:assumption (or (not x18740) x22879)
+:assumption (or x26232 (not x7956))
+:assumption (or x3902 (not x3449))
+:assumption (or x25523 x19005)
+:assumption (or x10071 (not x25518))
+:assumption (or (not x19422) x20205)
+:assumption (or x26590 x27098)
+:assumption (or (not x14793) x1950)
+:assumption (or (not x20060) (not x6387))
+:assumption (or (not x24115) x29162)
+:assumption (or (not x20134) x5798)
+:assumption (or (not x10649) (not x12935))
+:assumption (or x3625 (not x29913))
+:assumption (or (not x1186) (not x13076))
+:assumption (or x26206 x16107)
+:assumption (or (not x7698) x17504)
+:assumption (or (not x29332) x20354)
+:assumption (or (not x3268) x2416)
+:assumption (or x28461 x16041)
+:assumption (or (not x11529) x1393 x12597)
+:assumption (or (not x558) (not x27490))
+:assumption (or (not x18846) (not x6969))
+:assumption (or (not x16025) (not x23033))
+:assumption (or x30453 x16207)
+:assumption (or x1206 (not x16741))
+:assumption (or x28509 (not x5528))
+:assumption (or x310 (not x30006))
+:assumption (or (not x19258) (not x12510))
+:assumption (or (not x17211) x24026)
+:assumption (or (not x14931) (not x31681) (not x5842))
+:assumption (or x7581 (not x4816))
+:assumption (or x17855 x23878 x9869)
+:assumption (or x14790 (not x4778))
+:assumption (or x30124 x23486)
+:assumption (or x24221 x11031 x15547)
+:assumption (or x3790 (not x12242))
+:assumption (or (not x30683) (not x17246))
+:assumption (or x26416 (not x30891))
+:assumption (or x17076 x25085)
+:assumption (or x2678 (not x7149))
+:assumption (or x8040 (not x10907))
+:assumption (or x24870 (not x23360))
+:assumption (or x7199 x8452)
+:assumption (or x17419 (not x26588) x26647 (not x23008) (not x10504))
+:assumption (or (not x24216) x2448)
+:assumption (or (not x6680) (not x15102))
+:assumption (or (not x20963) x19385)
+:assumption (or x9008 (not x24914))
+:assumption (or x6343 (not x17002) (not x20929))
+:assumption (or x8961 x13479)
+:assumption (or (not x12242) x20325 (not x31433))
+:assumption (or x4812 (not x10428))
+:assumption (or x19494 (not x20632))
+:assumption (or x14262 x9924)
+:assumption (or (not x3653) (not x10328) (not x3914))
+:assumption (or (not x28434) x11489)
+:assumption (or (not x22494) (not x20051))
+:assumption (or x5907 x28522 (not x9008))
+:assumption (or (not x26219) x30110)
+:assumption (or (not x22619) x24882 x25676 x25376)
+:assumption (or x14344 x17311)
+:assumption (or x8055 x9768)
+:assumption (or x30068 (not x20029))
+:assumption (or x12946 (not x8279))
+:assumption (or x30110 x25646 (not x25552))
+:assumption (or x12744 (not x24500) (not x6845) (not x1640))
+:assumption (or (not x6594) x9152 (not x29959) x12700)
+:assumption (or x17653 (not x12985))
+:assumption (or x23845 x8138)
+:assumption (or x869 (not x31041))
+:assumption (or (not x15006) x23244 x8002 (not x28613))
+:assumption (or (not x29952) (not x12588))
+:assumption (or (not x18720) x18506)
+:assumption (or x26761 x29465)
+:assumption (or x10476 x13036)
+:assumption (or x18519 (not x29939))
+:assumption (or x14839 x4521)
+:assumption (or x21063 x30796)
+:assumption (or (not x17389) x9757 x20373 x29261 x9557 x24127 x6010 x19032)
+:assumption (or x20100 x227)
+:assumption (or (not x20858) (not x28144))
+:assumption (or (not x31267) (not x22496))
+:assumption (or x31929 (not x16155))
+:assumption (or x30954 x24564)
+:assumption (or x31585 (not x31206))
+:assumption (or (not x27005) (not x13853))
+:assumption (or x13723 x2618)
+:assumption (or (not x25702) (not x23791))
+:assumption (or (not x22827) (not x18061))
+:assumption (or (not x10035) x29312)
+:assumption (or (not x6097) (not x29928))
+:assumption (or (not x31070) x26401)
+:assumption (or x22746 x21815)
+:assumption (or x31059 x23633 (not x2468) x21298)
+:assumption (or x29442 (not x10701))
+:assumption (or x20940 x12639)
+:assumption (or (not x6073) (not x31252))
+:assumption (or (not x1393) x27974)
+:assumption (or (not x31759) x30707)
+:assumption (or x26765 x6065)
+:assumption (or (not x28167) x6674)
+:assumption (or x23457 x9878)
+:assumption (or (not x15774) x13069 (not x4111) (not x24016) (not x19508) x10837 x19989 x1116)
+:assumption (or (not x4046) x3782)
+:assumption (or x13370 x21707)
+:assumption (or (not x27169) (not x5474))
+:assumption (or x8179 (not x8002))
+:assumption (or x5898 x6866)
+:assumption (or x15163 x22692)
+:assumption (or x23872 (not x18121) (not x29310))
+:assumption (or (not x11553) (not x6710))
+:assumption (or (not x542) x11435)
+:assumption (or x26468 (not x22251))
+:assumption (or (not x19057) (not x1847))
+:assumption (or x14195 (not x11792))
+:assumption (or (not x23561) x30612 (not x2695) x19394 (not x2099) x26288 (not x3455))
+:assumption (or x12176 (not x27856))
+:assumption (or (not x14219) (not x12045))
+:assumption (or (not x11753) (not x14526))
+:assumption (or x6765 (not x16003))
+:assumption (or x13188 x12730)
+:assumption (or (not x8634) (not x4744))
+:assumption (or x6307 x31663 (not x28968) x23704 (not x5382))
+:assumption (or x31288 x16159)
+:assumption (or x12643 x20166)
+:assumption (or x13253 (not x31190))
+:assumption (or (not x9181) (not x5443))
+:assumption (or x28693 x6270)
+:assumption (or (not x4512) x7843)
+:assumption (or (not x28552) (not x827))
+:assumption (or x25818 (not x13956) (not x1233))
+:assumption (or x30421 x17930)
+:assumption (or x29258 x5145)
+:assumption (or (not x29526) (not x29607))
+:assumption (or x17392 (not x7285))
+:assumption (or (not x21273) (not x13948))
+:assumption (or (not x24058) (not x29021))
+:assumption (or x783 (not x17414))
+:assumption (or (not x22472) x18711 x2044 x13363)
+:assumption (or (not x3062) x8690)
+:assumption (or x5954 x23419)
+:assumption (or x24755 x1389)
+:assumption (or x21149 (not x16677))
+:assumption (or x9423 (not x13567))
+:assumption (or (not x12192) (not x15559))
+:assumption (or x28905 x8001)
+:assumption (or x784 x30876)
+:assumption (or x11344 x12443)
+:assumption (or x3677 x18410)
+:assumption (or x20711 (not x25659) (not x20140))
+:assumption (or (not x3191) (not x2615))
+:assumption (or x28443 (not x10943))
+:assumption (or x23832 (not x17589) x3235 x407 (not x30225) x16434 x6908 (not x7072))
+:assumption (or (not x22200) x17235)
+:assumption (or (not x19459) (not x26387))
+:assumption (or x1393 x30017 (not x31486))
+:assumption (or (not x8205) (not x8002) x23244)
+:assumption (or (not x9847) x15593)
+:assumption (or (not x13935) x12990)
+:assumption (or x26050 x20041)
+:assumption (or x827 (not x20209))
+:assumption (or x13036 (not x12862))
+:assumption (or x16103 x21432)
+:assumption (or x20236 (not x1769))
+:assumption (or (not x19039) (not x18267))
+:assumption (or (not x15266) (not x12090) (not x16402))
+:assumption (or x9455 x25172)
+:assumption (or x13618 x31677)
+:assumption (or x26676 (not x5528))
+:assumption (or x16182 x18570)
+:assumption (or (not x27608) (not x20314) x18694)
+:assumption (or (not x26626) (not x18976))
+:assumption (or x27700 x23581)
+:assumption (or x23829 (not x5618))
+:assumption (or (not x17789) x9907)
+:assumption (or (not x27785) x27827)
+:assumption (or x22988 (not x9175))
+:assumption (or x10715 (not x23528) (not x11027) (not x20230))
+:assumption (or x19052 (not x22421))
+:assumption (or (not x9997) x14043)
+:assumption (or (not x28886) x6007)
+:assumption (or x5372 x3472)
+:assumption (or x561 x864)
+:assumption (or (not x14455) (not x15605) (not x15356) x2533 (not x19144))
+:assumption (or x20759 x28376)
+:assumption (or x20374 (not x31400) x28351 x8465)
+:assumption (or x3653 x15779)
+:assumption (or (not x29726) (not x14235))
+:assumption (or x20454 x22829)
+:assumption (or x29312 (not x2372))
+:assumption (or (not x3442) (not x13570))
+:assumption (or x22371 x1230)
+:assumption (or x23418 (not x23320))
+:assumption (or (not x18939) (not x29323))
+:assumption (or x8602 x24291)
+:assumption (or x5528 x21642)
+:assumption (or x12538 x26510)
+:assumption (or x15373 x21853)
+:assumption (or (not x4380) (not x16301) x25678 (not x19333))
+:assumption (or x24034 (not x22604))
+:assumption (or (not x31473) (not x1393) x13445)
+:assumption (or x16461 x10298)
+:assumption (or (not x29489) (not x22085))
+:assumption (or (not x29395) (not x2038))
+:assumption (or x13614 x14911)
+:assumption (or (not x13092) (not x12098))
+:assumption (or x17768 (not x26499))
+:assumption (or (not x10642) (not x12934) (not x7609) (not x30843) (not x3610))
+:assumption (or x28490 (not x6296))
+:assumption (or (not x5221) (not x1197))
+:assumption (or (not x834) (not x19487))
+:assumption (or (not x27181) x17756)
+:assumption (or x22722 x20656)
+:assumption (or x13015 x22694)
+:assumption (or x12120 (not x27162))
+:assumption (or x26898 x431)
+:assumption (or x27154 x28310)
+:assumption (or (not x7310) x22797)
+:assumption (or (not x28890) x25921)
+:assumption (or (not x28328) (not x12125))
+:assumption (or x29911 (not x16802) (not x20629))
+:assumption (or x3672 x8101)
+:assumption (or (not x31845) x28990)
+:assumption (or (not x25175) x25565)
+:assumption (or x31024 x5814)
+:assumption (or (not x22424) x31164)
+:assumption (or (not x6631) x27088)
+:assumption (or x8633 (not x5411) x13668)
+:assumption (or (not x13419) (not x1589))
+:assumption (or (not x28025) x16860)
+:assumption (or x1393 (not x14139) x25209)
+:assumption (or x11522 x26908 (not x15466) x2603 x1931)
+:assumption (or x14109 x31829 (not x31292) x30797 x17551)
+:assumption (or (not x24479) x8467)
+:assumption (or x12707 x6429)
+:assumption (or x1574 (not x17311))
+:assumption (or (not x5528) (not x7479))
+:assumption (or (not x26219) x825)
+:assumption (or (not x15298) x8626)
+:assumption (or x28274 (not x30494))
+:assumption (or x8998 (not x15981))
+:assumption (or (not x14118) (not x5499))
+:assumption (or (not x9531) (not x28020))
+:assumption (or x13940 x6055)
+:assumption (or (not x6230) (not x24267) x10149 (not x29755) x13168)
+:assumption (or x15621 (not x19726))
+:assumption (or (not x287) x16749)
+:assumption (or x7718 x19450)
+:assumption (or (not x29072) (not x1435))
+:assumption (or x18607 (not x24206))
+:assumption (or (not x1224) x16147)
+:assumption (or (not x25223) (not x14619))
+:assumption (or (not x30466) x14140 (not x13956))
+:assumption (or (not x6672) (not x14839))
+:assumption (or x30538 x26401)
+:assumption (or x27049 x19740)
+:assumption (or x2902 (not x3070))
+:assumption (or (not x2306) x1802)
+:assumption (or x19687 x1198)
+:assumption (or x24119 (not x1419))
+:assumption (or (not x2334) x25631)
+:assumption (or (not x13485) (not x16575))
+:assumption (or (not x28997) x8320)
+:assumption (or (not x11722) x30950 (not x28173) (not x14480))
+:assumption (or (not x12898) (not x19992))
+:assumption (or (not x9596) (not x12204))
+:assumption (or x29634 (not x25659) (not x17306))
+:assumption (or x23017 x8775)
+:assumption (or (not x30631) (not x9282))
+:assumption (or x23180 x21589)
+:assumption (or (not x292) (not x4799))
+:assumption (or x7768 x6339)
+:assumption (or x198 x11820)
+:assumption (or (not x27021) x19514)
+:assumption (or (not x13580) x610)
+:assumption (or x21155 x12056)
+:assumption (or x10421 x27054)
+:assumption (or x2476 (not x17966) x29066 x31767)
+:assumption (or (not x5811) x6909 x7330)
+:assumption (or (not x21191) (not x9146))
+:assumption (or x24991 (not x1718))
+:assumption (or x28409 x21202 x17161)
+:assumption (or (not x30992) (not x29516))
+:assumption (or (not x7404) x25306)
+:assumption (or x18226 (not x9796))
+:assumption (or x23730 x3346)
+:assumption (or (not x13086) x29663)
+:assumption (or (not x15861) (not x17267))
+:assumption (or (not x11169) (not x7814))
+:assumption (or (not x2940) (not x29980))
+:assumption (or (not x21555) x334)
+:assumption (or x30539 x25657)
+:assumption (or (not x6873) (not x27537) (not x23054))
+:assumption (or (not x1664) x13956)
+:assumption (or (not x16841) x8002 (not x20673))
+:assumption (or (not x28584) (not x5561))
+:assumption (or (not x7095) x140)
+:assumption (or x9514 (not x7435))
+:assumption (or x8489 x28606)
+:assumption (or x29712 (not x11307) x18550)
+:assumption (or x15385 x23244)
+:assumption (or x13116 x26070)
+:assumption (or (not x22938) x730 (not x14782) (not x1430) x4972)
+:assumption (or x24230 (not x722))
+:assumption (or x24847 x8854)
+:assumption (or x27996 (not x18859))
+:assumption (or (not x25066) x23715 (not x1167) x17486)
+:assumption (or x2790 (not x28948) (not x21620))
+:assumption (or x25039 (not x24159))
+:assumption (or x288 x30384)
+:assumption (or (not x26705) (not x10775))
+:assumption (or (not x26937) (not x26820))
+:assumption (or x11489 (not x22850) (not x13956))
+:assumption (or (not x31254) (not x31579))
+:assumption (or x21015 (not x31009))
+:assumption (or x8844 x20722)
+:assumption (or (not x6576) (not x5845))
+:assumption (or (not x8002) (not x13967))
+:assumption (or x4217 (not x2649))
+:assumption (or x24756 (not x15063))
+:assumption (or x31812 x14295)
+:assumption (or x1330 x28708)
+:assumption (or (not x20483) (not x14391))
+:assumption (or x7741 (not x1774))
+:assumption (or (not x17345) (not x8782))
+:assumption (or (not x25403) (not x12331))
+:assumption (or (not x29448) (not x7498))
+:assumption (or x26280 (not x12230))
+:assumption (or (not x1177) x8742)
+:assumption (or (not x21488) x26552)
+:assumption (or x22859 (not x16510))
+:assumption (or x17534 (not x16767))
+:assumption (or (not x25659) (not x5270))
+:assumption (or (not x27941) (not x1112))
+:assumption (or (not x3046) (not x3224) (not x28436))
+:assumption (or x21214 x15293)
+:assumption (or x5141 x3460)
+:assumption (or (not x3982) x21298)
+:assumption (or x27001 x21113 x20369 (not x16888) x5392)
+:assumption (or x14134 x30374)
+:assumption (or (not x9899) x17512)
+:assumption (or (not x21344) x12587 (not x9529))
+:assumption (or x13070 x11031)
+:assumption (or x202 (not x11487))
+:assumption (or x8338 (not x28673))
+:assumption (or x30224 x24158)
+:assumption (or x5528 (not x30421) (not x17930))
+:assumption (or x30988 (not x21298))
+:assumption (or (not x210) x12278)
+:assumption (or x4553 x10604)
+:assumption (or (not x5509) x24482)
+:assumption (or (not x17887) (not x1393))
+:assumption (or x13690 (not x10534) x5528)
+:assumption (or (not x20174) (not x12176))
+:assumption (or x6746 (not x11884))
+:assumption (or (not x15773) (not x7904))
+:assumption (or (not x14087) (not x24894))
+:assumption (or x28973 x4616)
+:assumption (or x827 x20954)
+:assumption (or (not x31701) x31929)
+:assumption (or x16971 (not x11744))
+:assumption (or x20991 x26829)
+:assumption (or (not x31099) x1582 (not x18787) (not x28973))
+:assumption (or (not x31812) (not x14295))
+:assumption (or x955 x13648)
+:assumption (or x7301 x11055)
+:assumption (or (not x170) (not x17674))
+:assumption (or x14210 x7177 (not x23417))
+:assumption (or x8998 x26695)
+:assumption (or (not x2722) x28211)
+:assumption (or (not x3453) (not x9261) (not x19206))
+:assumption (or x8235 (not x15901))
+:assumption (or x15466 x1643)
+:assumption (or (not x18400) x8687)
+:assumption (or (not x7918) x8543)
+:assumption (or x1827 (not x16745) (not x1615))
+:assumption (or (not x10468) x25287 (not x25135) x700 x3646 x13993)
+:assumption (or (not x31293) (not x23423) (not x7539) (not x21298))
+:assumption (or x26208 (not x9249))
+:assumption (or x21009 x3797)
+:assumption (or (not x15047) x24712)
+:assumption (or (not x9454) x2298)
+:assumption (or (not x18206) (not x100))
+:assumption (or (not x14432) x30082)
+:assumption (or x5764 (not x10850))
+:assumption (or x21128 (not x17079))
+:assumption (or x23673 (not x9394))
+:assumption (or (not x22622) (not x27939))
+:assumption (or x2645 x18743)
+:assumption (or (not x25591) (not x7026))
+:assumption (or (not x22578) x9529)
+:assumption (or (not x19582) (not x25012))
+:assumption (or (not x18828) (not x5218))
+:assumption (or x8925 x5797)
+:assumption (or (not x8652) (not x9654))
+:assumption (or x16427 (not x24853))
+:assumption (or (not x24239) x4362)
+:assumption (or x26602 (not x5313))
+:assumption (or x24688 (not x1179))
+:assumption (or x31094 x726)
+:assumption (or x9445 x23339)
+:assumption (or x10744 x2430)
+:assumption (or x26151 (not x11763) (not x13018) (not x23244))
+:assumption (or x8961 (not x22406))
+:assumption (or (not x19677) x10444 x3657 x14687 x4098)
+:assumption (or (not x8002) x7333)
+:assumption (or (not x19526) x21026 x17734 x226)
+:assumption (or x22934 x21270 x8658)
+:assumption (or (not x12521) x29139 (not x2867) x14472 (not x31343) x13347)
+:assumption (or x14627 (not x10607))
+:assumption (or x14095 x10584)
+:assumption (or x20217 x4251)
+:assumption (or (not x17159) x13323)
+:assumption (or (not x15364) (not x7657) (not x19524) x31883)
+:assumption (or x21485 (not x17677) x21282 x21266 (not x26383) (not x1582))
+:assumption (or x20325 x4427)
+:assumption (or (not x10407) (not x5709) x16910)
+:assumption (or x24361 x24587 (not x6771) (not x26354))
+:assumption (or x19854 (not x6448))
+:assumption (or (not x21062) (not x23075))
+:assumption (or (not x31421) x12526)
+:assumption (or (not x15243) x31885)
+:assumption (or (not x15531) x16560 (not x16469) (not x15760) x851 x31037 x28846 x3404 x12531)
+:assumption (or (not x12578) x3603)
+:assumption (or (not x725) (not x27097) x21653)
+:assumption (or (not x20837) x3435)
+:assumption (or x19992 x19426)
+:assumption (or x9726 (not x10897))
+:assumption (or x4730 (not x27862) (not x21955))
+:assumption (or x30110 (not x18184) (not x27633))
+:assumption (or x5617 x19207)
+:assumption (or (not x25279) x30893)
+:assumption (or x2888 x7741)
+:assumption (or (not x12272) (not x11907))
+:assumption (or (not x19740) (not x10975))
+:assumption (or x10275 x28395)
+:assumption (or (not x27169) x30325)
+:assumption (or (not x25505) (not x9008) (not x7599))
+:assumption (or x14466 (not x25226))
+:assumption (or (not x9316) (not x12228))
+:assumption (or (not x27528) x6293)
+:assumption (or (not x29333) (not x5310))
+:assumption (or (not x4559) (not x4862))
+:assumption (or x21299 x24974)
+:assumption (or (not x20833) x27938)
+:assumption (or (not x6379) (not x22155))
+:assumption (or x2218 x3641)
+:assumption (or x30013 x22560)
+:assumption (or (not x12907) x30651)
+:assumption (or x16685 (not x24763))
+:assumption (or x16653 (not x28299))
+:assumption (or x24341 (not x5972))
+:assumption (or (not x17024) (not x5355))
+:assumption (or (not x31241) (not x4173))
+:assumption (or (not x8619) (not x29442) x634)
+:assumption (or x5959 x9926)
+:assumption (or (not x21653) x11236)
+:assumption (or (not x3096) (not x17796))
+:assumption (or x5432 (not x5025))
+:assumption (or x2959 (not x3202))
+:assumption (or x18629 x25929 x21442 x3845 x29225 (not x31040) x28896 (not x14924))
+:assumption (or x30531 x13679)
+:assumption (or x5528 x8410)
+:assumption (or (not x19731) (not x19886) x290 (not x8594) x1179)
+:assumption (or x18333 (not x29278))
+:assumption (or (not x31390) (not x4259))
+:assumption (or (not x22855) (not x940))
+:assumption (or (not x5054) (not x11719))
+:assumption (or (not x5818) (not x2108))
+:assumption (or (not x27179) (not x22013))
+:assumption (or (not x18192) (not x4035))
+:assumption (or x28544 x29312)
+:assumption (or (not x3996) x20875)
+:assumption (or (not x8002) (not x2260) (not x26897) x23244 x24862)
+:assumption (or x26340 x12056)
+:assumption (or x23025 x22313)
+:assumption (or (not x6374) x12454)
+:assumption (or (not x5237) (not x13805))
+:assumption (or x30095 (not x3025))
+:assumption (or x24108 (not x20757) (not x17992) (not x9580))
+:assumption (or (not x10918) x17162)
+:assumption (or x16448 (not x30242))
+:assumption (or x15795 (not x23171) x26648)
+:assumption (or x20306 x4650 (not x12608))
+:assumption (or x8669 (not x21747))
+:assumption (or (not x24435) (not x16150))
+:assumption (or x26112 x17265)
+:assumption (or (not x8002) (not x18686))
+:assumption (or (not x25961) x17808)
+:assumption (or x15735 x14364)
+:assumption (or x30128 x31640)
+:assumption (or x15318 (not x12664) x24952)
+:assumption (or (not x19842) (not x24827) x6969)
+:assumption (or x27806 x22372 (not x25423))
+:assumption (or (not x7407) (not x3299))
+:assumption (or (not x8865) (not x20507))
+:assumption (or (not x8406) x811 (not x21299) (not x23852))
+:assumption (or (not x5073) (not x9556))
+:assumption (or x5696 (not x4244) x25129 x21298)
+:assumption (or (not x17259) x1029)
+:assumption (or x14258 x21815)
+:assumption (or x14580 x16026)
+:assumption (or x17169 x22963)
+:assumption (or (not x22472) x18494 (not x19992))
+:assumption (or x20488 (not x19791))
+:assumption (or x16793 x14147)
+:assumption (or (not x15292) (not x12247))
+:assumption (or (not x31315) (not x14163))
+:assumption (or (not x22614) x12703)
+:assumption (or x28631 x10087 (not x15799) x8020 x17901)
+:assumption (or x3872 (not x1679) (not x31444) x4245 x20557)
+:assumption (or x14476 x27850)
+:assumption (or (not x17727) (not x6222))
+:assumption (or (not x5864) (not x10089))
+:assumption (or x2539 (not x7556))
+:assumption (or (not x2592) x19243)
+:assumption (or (not x11566) (not x21815) (not x12963) x31177 (not x4401) (not x16510) (not x30138))
+:assumption (or (not x16256) x6896)
+:assumption (or x23244 (not x24209) (not x30432) x27941 x13956 x8002)
+:assumption (or (not x12228) x24924)
+:assumption (or x1220 x16839)
+:assumption (or (not x20850) x15539)
+:assumption (or x9494 x24871 x17607 x26410 (not x12298) (not x5633) (not x25659) (not x6250))
+:assumption (or (not x29790) (not x30696))
+:assumption (or x25295 (not x26806))
+:assumption (or x24796 (not x22390))
+:assumption (or (not x17869) x13840)
+:assumption (or (not x24148) x13834)
+:assumption (or (not x21053) (not x5481))
+:assumption (or x7890 x2133)
+:assumption (or x169 x1280 (not x20320))
+:assumption (or x18204 (not x11253))
+:assumption (or (not x16139) x3630)
+:assumption (or (not x11323) (not x27244))
+:assumption (or (not x14517) x29202)
+:assumption (or x21083 (not x14662))
+:assumption (or x24639 (not x27719))
+:assumption (or (not x24221) x13615)
+:assumption (or (not x23633) (not x13495))
+:assumption (or x2365 (not x30723) (not x2286))
+:assumption (or (not x27231) (not x8219) (not x19107))
+:assumption (or (not x1336) x9531)
+:assumption (or (not x3043) x28006)
+:assumption (or (not x416) (not x22355))
+:assumption (or (not x8081) x13956 (not x19611))
+:assumption (or x29810 (not x18940) (not x18600) x28973 x8217)
+:assumption (or x14706 x2197)
+:assumption (or x19959 x2511)
+:assumption (or x13956 (not x8275))
+:assumption (or (not x4315) (not x14376) x17302 (not x21546) (not x24377) x6028 (not x9835))
+:assumption (or (not x29110) x20923)
+:assumption (or (not x177) (not x20885))
+:assumption (or (not x652) x18786)
+:assumption (or x16528 (not x31455))
+:assumption (or x21239 x13479)
+:assumption (or (not x16910) (not x12833))
+:assumption (or x9466 x24667)
+:assumption (or x8602 (not x14613))
+:assumption (or x14034 (not x1321))
+:assumption (or x5208 x8127)
+:assumption (or (not x960) (not x28061) (not x767) x29986)
+:assumption (or (not x30597) x6802)
+:assumption (or (not x13985) x26315)
+:assumption (or (not x8528) x28148 x827)
+:assumption (or (not x21060) x20145)
+:assumption (or (not x23438) x8108)
+:assumption (or (not x17968) x9199)
+:assumption (or (not x17326) (not x18307))
+:assumption (or (not x30563) x9785 x10786 x23885)
+:assumption (or (not x783) (not x13260))
+:assumption (or x8602 (not x21934))
+:assumption (or (not x5394) x2499 (not x23400) (not x22032))
+:assumption (or (not x29045) x6247)
+:assumption (or x31499 (not x7008))
+:assumption (or (not x31469) x26320 x2389 x10666)
+:assumption (or x18309 (not x7412))
+:assumption (or (not x3240) (not x13470))
+:assumption (or (not x4992) (not x8549))
+:assumption (or x10171 (not x5371))
+:assumption (or x2288 (not x3128))
+:assumption (or x7434 x21549 x27352 (not x27541) (not x18042) (not x22431))
+:assumption (or x20639 x745)
+:assumption (or x30473 (not x11274))
+:assumption (or x31448 x1165)
+:assumption (or x2739 (not x29749))
+:assumption (or x31681 x5842)
+:assumption (or (not x21761) (not x8714))
+:assumption (or (not x1774) x27228)
+:assumption (or x18799 x28952)
+:assumption (or (not x10190) (not x6558))
+:assumption (or (not x9579) x5499)
+:assumption (or x5542 (not x15336) (not x10874))
+:assumption (or x19183 (not x9508) x21330 x29777)
+:assumption (or x19559 x18798 (not x20719) x5276)
+:assumption (or x25987 (not x24911))
+:assumption (or (not x3667) x19712)
+:assumption (or x8651 (not x16009))
+:assumption (or (not x13475) x16531)
+:assumption (or (not x29455) (not x9089))
+:assumption (or (not x9921) x21803)
+:assumption (or x16788 (not x20731))
+:assumption (or x16802 (not x3889))
+:assumption (or (not x26661) x25705)
+:assumption (or (not x9008) (not x15799) (not x5528) (not x7567) (not x22472))
+:assumption (or (not x21992) (not x17956))
+:assumption (or x16352 (not x42))
+:assumption (or (not x29657) (not x95) x27025)
+:assumption (or x4013 (not x18060))
+:assumption (or x2660 (not x153))
+:assumption (or (not x15582) (not x8321))
+:assumption (or x27849 (not x20530))
+:assumption (or x2606 x5214 (not x23341) x9755)
+:assumption (or x30055 (not x16569))
+:assumption (or x18141 (not x22162) x31270)
+:assumption (or x28280 x17228)
+:assumption (or x10659 (not x21652))
+:assumption (or x20309 x9387)
+:assumption (or x5812 x26308 (not x2992) (not x22409) (not x31607) x11754 (not x17236) x5358)
+:assumption (or (not x24896) (not x29652))
+:assumption (or (not x6136) x17100)
+:assumption (or (not x21646) (not x23334))
+:assumption (or x28660 (not x1748))
+:assumption (or x9320 x1503)
+:assumption (or x8716 x18421)
+:assumption (or x16987 (not x24867))
+:assumption (or x873 (not x31276))
+:assumption (or (not x9832) (not x7748))
+:assumption (or x12314 x2685)
+:assumption (or (not x2087) (not x24812))
+:assumption (or x29139 x14527)
+:assumption (or (not x3450) (not x20977))
+:assumption (or x8660 (not x2376))
+:assumption (or x15237 x14484 x12433 (not x12186) (not x22383) (not x17065))
+:assumption (or (not x15270) x13617)
+:assumption (or (not x27644) (not x21690) x16428 (not x29825) (not x3827) x12781 x21375)
+:assumption (or (not x24756) (not x18416) (not x24168) x20087)
+:assumption (or x19208 (not x30825))
+:assumption (or (not x23801) x24924)
+:assumption (or (not x7186) (not x26535))
+:assumption (or (not x1854) x26227 x17635 x4253 x23091 x11580)
+:assumption (or x20480 (not x14880))
+:assumption (or (not x9730) x11394)
+:assumption (or x16304 x5150)
+:assumption (or x14804 (not x31819) x20249 (not x20110))
+:assumption (or (not x11612) (not x27968))
+:assumption (or x9585 x7530 (not x26729) (not x13956))
+:assumption (or x17263 (not x6784))
+:assumption (or x20825 (not x18986))
+:assumption (or x30412 x29715)
+:assumption (or x27747 x9133)
+:assumption (or x18309 x29969)
+:assumption (or (not x14963) x27360)
+:assumption (or x28661 x1867)
+:assumption (or x19854 (not x27907))
+:assumption (or (not x11320) (not x8658))
+:assumption (or x21237 (not x1500))
+:assumption (or (not x577) x286)
+:assumption (or x16245 x10919 x846)
+:assumption (or x15742 (not x11985))
+:assumption (or x9993 x27059 x3264)
+:assumption (or x12119 (not x7536) x22053 (not x16438) x8830)
+:assumption (or x31926 x13475 (not x20894) (not x15706) x25980 (not x16531) x2579)
+:assumption (or x24541 x300)
+:assumption (or x257 x18575)
+:assumption (or (not x5249) x27559)
+:assumption (or x26173 (not x17116))
+:assumption (or x2608 x26715)
+:assumption (or x17798 x19662)
+:assumption (or (not x8865) x26335)
+:assumption (or x14070 (not x6755))
+:assumption (or (not x17131) x16914)
+:assumption (or (not x14570) x31795)
+:assumption (or (not x26179) x15105)
+:assumption (or x26357 (not x26184))
+:assumption (or (not x16003) x8417)
+:assumption (or (not x25578) (not x24052))
+:assumption (or x14715 (not x22689))
+:assumption (or x27656 x18057)
+:assumption (or (not x10874) (not x27080) (not x12089))
+:assumption (or (not x30907) x26120)
+:assumption (or x27530 x25749 (not x12994) (not x31086) (not x19702))
+:assumption (or (not x22560) (not x20592) (not x2648) (not x14687) (not x21638) (not x12765))
+:assumption (or x17293 x5399)
+:assumption (or x10601 (not x23699))
+:assumption (or x25933 (not x21848))
+:assumption (or (not x30091) (not x26670))
+:assumption (or (not x26986) (not x8513))
+:assumption (or (not x12580) (not x6783))
+:assumption (or (not x25024) x14615)
+:assumption (or (not x11418) x29981)
+:assumption (or (not x4046) x1057)
+:assumption (or (not x8826) (not x22127))
+:assumption (or x22168 x29518)
+:assumption (or (not x15892) (not x25659) (not x18560))
+:assumption (or x28682 x29713 (not x26107))
+:assumption (or (not x18385) x9366)
+:assumption (or (not x31633) x26961)
+:assumption (or x14175 (not x30925))
+:assumption (or (not x30856) x23590)
+:assumption (or x10331 (not x6013))
+:assumption (or x24158 x9008)
+:assumption (or x5705 x27661 x26701 x7524 (not x9228) x19722 x25376)
+:assumption (or x19377 x5694 (not x11506) (not x21202))
+:assumption (or (not x30572) (not x21200))
+:assumption (or (not x18917) x28368)
+:assumption (or x5491 x9696)
+:assumption (or (not x16295) (not x5186))
+:assumption (or (not x16510) x918 x23399 (not x4706) (not x21815))
+:assumption (or x16014 (not x21274))
+:assumption (or x1195 x7174)
+:assumption (or (not x7080) x5050)
+:assumption (or (not x6069) x8934 (not x14839))
+:assumption (or (not x28218) x30914)
+:assumption (or x15024 (not x10336))
+:assumption (or x13806 (not x3782))
+:assumption (or (not x28352) x3816)
+:assumption (or (not x4162) (not x13576))
+:assumption (or x5528 x29333 (not x6304))
+:assumption (or x8297 (not x7936))
+:assumption (or x12465 x28407)
+:assumption (or x24067 (not x7655))
+:assumption (or x404 (not x27577))
+:assumption (or x17254 x26305)
+:assumption (or (not x8386) (not x2386) (not x24431) x10150)
+:assumption (or x7082 (not x31620))
+:assumption (or (not x8415) (not x19656))
+:assumption (or x31587 x792)
+:assumption (or (not x22411) (not x3606))
+:assumption (or x24722 x5759 x14642 x17483)
+:assumption (or x5845 (not x4388))
+:assumption (or (not x11420) x8912)
+:assumption (or (not x15833) x31498)
+:assumption (or (not x4289) (not x18977))
+:assumption (or x24722 (not x26250))
+:assumption (or x29603 (not x28174))
+:assumption (or (not x30345) x5609)
+:assumption (or (not x20550) (not x19408))
+:assumption (or (not x10909) (not x12062) x23526 x26897)
+:assumption (or (not x27986) x16638)
+:assumption (or x19309 x3719)
+:assumption (or (not x31217) x19307 x13376 x26386 (not x16227) (not x15233) x21745 (not x12402))
+:assumption (or x28363 (not x9122) x288)
+:assumption (or (not x6253) (not x15538) x2526 (not x14226))
+:assumption (or (not x5261) x6422 x27530 x17745)
+:assumption (or x16324 (not x13309) x28691 (not x4492))
+:assumption (or (not x2658) (not x10191))
+:assumption (or (not x30667) (not x12554))
+:assumption (or x13693 (not x31144))
+:assumption (or (not x2774) x10649 (not x10553) x12935 (not x15168))
+:assumption (or (not x6331) (not x23510))
+:assumption (or x22091 (not x8956))
+:assumption (or (not x1925) (not x4314))
+:assumption (or (not x8195) x25362)
+:assumption (or (not x26112) (not x918) (not x7013))
+:assumption (or x28708 x21935)
+:assumption (or (not x6969) x8704)
+:assumption (or x23317 (not x1393))
+:assumption (or (not x27202) (not x29489))
+:assumption (or x13681 x5849)
+:assumption (or (not x29441) x28677)
+:assumption (or (not x3568) (not x2021))
+:assumption (or (not x8928) x28885 (not x1489) (not x11488))
+:assumption (or (not x20482) x15520 (not x14301) (not x16907))
+:assumption (or (not x14635) x24010)
+:assumption (or (not x169) x7372)
+:assumption (or (not x5330) (not x2513) x5525 (not x21559))
+:assumption (or (not x31556) (not x6808))
+:assumption (or (not x3018) x9664)
+:assumption (or (not x30696) (not x21999) (not x11488) x28328 x6183 x4720 x2963)
+:assumption (or (not x31203) (not x12116) x7537)
+:assumption (or x10618 x6540 x26897)
+:assumption (or (not x23915) x6496)
+:assumption (or x8940 (not x777))
+:assumption (or (not x14554) x21819)
+:assumption (or (not x11422) x2796 x24718 x8120 (not x24451))
+:assumption (or x8602 x14584)
+:assumption (or x15836 (not x12840))
+:assumption (or (not x15971) x16374)
+:assumption (or (not x8336) x20624)
+:assumption (or (not x9130) (not x6008))
+:assumption (or (not x14158) (not x8305))
+:assumption (or (not x21983) x30052)
+:assumption (or (not x30423) x11489 x13956)
+:assumption (or x28532 x4944)
+:assumption (or x28060 x18161)
+:assumption (or (not x4156) x16093 x26187 x23764 (not x18069))
+:assumption (or (not x616) x14320)
+:assumption (or (not x28963) x11149)
+:assumption (or (not x22323) x5386)
+:assumption (or (not x9251) x30156)
+:assumption (or x21958 x28704)
+:assumption (or x745 x27724)
+:assumption (or (not x8452) x13956)
+:assumption (or x2862 (not x15308))
+:assumption (or x29306 (not x22931))
+:assumption (or (not x25596) x8532)
+:assumption (or x22311 x28541)
+:assumption (or x3914 x6085)
+:assumption (or (not x169) (not x21815) x6651 x16510 x2996 (not x23833) x29959)
+:assumption (or (not x25387) (not x6618))
+:assumption (or (not x26841) (not x27888))
+:assumption (or (not x2404) x16690)
+:assumption (or x26813 x5601 (not x30113) x8505)
+:assumption (or (not x22855) (not x26612))
+:assumption (or x4689 (not x11548))
+:assumption (or (not x18292) (not x20354))
+:assumption (or x17530 x26282)
+:assumption (or (not x3843) (not x28421))
+:assumption (or x2136 (not x21781))
+:assumption (or (not x25009) (not x29312))
+:assumption (or (not x27429) (not x9614))
+:assumption (or (not x4774) x6690)
+:assumption (or x21299 x4949)
+:assumption (or (not x24370) x16539)
+:assumption (or (not x18449) x16025)
+:assumption (or (not x3949) x20217)
+:assumption (or x72 (not x17441))
+:assumption (or x17647 (not x29711))
+:assumption (or (not x14591) (not x4771))
+:assumption (or (not x30458) x12741 (not x218))
+:assumption (or (not x7572) x15525)
+:assumption (or x15270 (not x13617))
+:assumption (or x19596 (not x17623))
+:assumption (or (not x7553) (not x7628))
+:assumption (or x13956 x19176)
+:assumption (or x8230 (not x11242))
+:assumption (or x2582 (not x26950))
+:assumption (or x174 (not x24079))
+:assumption (or x24097 (not x31525))
+:assumption (or x24144 (not x21579))
+:assumption (or x16730 (not x8262))
+:assumption (or (not x29549) (not x8602) x2892)
+:assumption (or x29648 (not x11102))
+:assumption (or (not x16869) x10202)
+:assumption (or x17350 (not x28101))
+:assumption (or (not x29052) x29116 (not x19079))
+:assumption (or (not x5658) (not x12822))
+:assumption (or (not x13228) (not x3431))
+:assumption (or x22443 x13317)
+:assumption (or (not x13576) x11722)
+:assumption (or x19540 (not x4911) x754 (not x26378) x19552 (not x28376))
+:assumption (or (not x7202) x31378)
+:assumption (or x21955 x20671)
+:assumption (or (not x26540) (not x15633))
+:assumption (or (not x31809) (not x14839) x20689)
+:assumption (or x6905 x21976)
+:assumption (or x12773 (not x17302))
+:assumption (or (not x15703) (not x16910))
+:assumption (or (not x13152) (not x16665))
+:assumption (or x6458 (not x20417) (not x24529) (not x873) (not x9969))
+:assumption (or (not x8002) (not x27275))
+:assumption (or x12013 x5647)
+:assumption (or (not x16382) x16791)
+:assumption (or x12197 x22587)
+:assumption (or (not x24079) x28585)
+:assumption (or x22117 x30350 x21591)
+:assumption (or x18228 (not x18530))
+:assumption (or (not x25500) (not x19857))
+:assumption (or x2478 x28060)
+:assumption (or (not x8135) x1889)
+:assumption (or x20045 (not x31549))
+:assumption (or x23082 x7218)
+:assumption (or (not x21301) (not x8224))
+:assumption (or (not x3520) x29769)
+:assumption (or x22254 x2388)
+:assumption (or x20417 x9969)
+:assumption (or (not x31253) x15080 (not x1305) x20906)
+:assumption (or x21653 x4087)
+:assumption (or (not x26179) x1892)
+:assumption (or (not x6354) (not x25898))
+:assumption (or (not x14660) x25723)
+:assumption (or x25488 x6969 x7254 (not x2464))
+:assumption (or x30820 x773)
+:assumption (or (not x7748) x27820)
+:assumption (or (not x3407) (not x9661))
+:assumption (or x4727 (not x14915))
+:assumption (or x30688 (not x8602))
+:assumption (or x20986 (not x22472))
+:assumption (or (not x8117) (not x12084))
+:assumption (or (not x5118) x2721 x12537 x21449 x22891 (not x24919) (not x10313) x8759)
+:assumption (or x9901 (not x14819))
+:assumption (or x20127 x13296 (not x21298))
+:assumption (or (not x8532) (not x9776))
+:assumption (or (not x9898) (not x3584))
+:assumption (or x2255 (not x25690) x13349 (not x13994))
+:assumption (or x3057 x17075)
+:assumption (or (not x17649) (not x675) (not x26949))
+:assumption (or x17766 x15749)
+:assumption (or x20402 x9763)
+:assumption (or x12242 (not x28519) x10132 (not x15720) (not x21457) x16871)
+:assumption (or x6637 x17621)
+:assumption (or (not x13424) (not x21582))
+:assumption (or x22934 x25643)
+:assumption (or (not x20560) x28698 (not x24465) (not x15593))
+:assumption (or x1582 (not x20032) x14899)
+:assumption (or x9364 (not x19864))
+:assumption (or x30432 x24209)
+:assumption (or x14030 (not x10748) x18335)
+:assumption (or (not x28729) (not x8002))
+:assumption (or x17438 x18683)
+:assumption (or x29442 x16212)
+:assumption (or (not x25366) (not x10632) (not x16269) (not x7188))
+:assumption (or (not x18583) x14577)
+:assumption (or x5016 x24256)
+:assumption (or x27324 x17392)
+:assumption (or x27488 (not x2379) x6237 (not x3001))
+:assumption (or x15836 (not x8979) x15497 (not x11394) (not x10038))
+:assumption (or (not x15456) x2993 (not x31731) (not x11778) (not x23244) (not x18212))
+:assumption (or x8624 x2715)
+:assumption (or (not x27511) x8878)
+:assumption (or x25033 (not x505))
+:assumption (or (not x30536) x24984 x1393)
+:assumption (or (not x31333) (not x15795))
+:assumption (or x4029 x1187)
+:assumption (or (not x17624) x16554)
+:assumption (or (not x16374) (not x6225))
+:assumption (or x10838 (not x25263))
+:assumption (or (not x18728) x8240)
+:assumption (or x4210 (not x24444))
+:assumption (or (not x7710) (not x11877))
+:assumption (or x2344 x21961)
+:assumption (or (not x14761) x16799 x30844 x23415 (not x23339))
+:assumption (or (not x2872) (not x9003))
+:assumption (or (not x3446) x11488 (not x1621))
+:assumption (or (not x27492) x29357)
+:assumption (or x4504 x29972 x7859 x10336 (not x14452))
+:assumption (or (not x15653) x5446 x19748 x16379 (not x4962))
+:assumption (or x16886 x22092)
+:assumption (or x8809 x3065)
+:assumption (or x29933 (not x28885))
+:assumption (or (not x15189) x19781)
+:assumption (or x14627 (not x13134))
+:assumption (or x27331 x13540)
+:assumption (or (not x26385) x16242)
+:assumption (or (not x17705) (not x22047))
+:assumption (or (not x22953) (not x16304))
+:assumption (or (not x8403) (not x22880))
+:assumption (or x18739 (not x209))
+:assumption (or (not x17759) x27586)
+:assumption (or x4844 (not x25825))
+:assumption (or (not x30675) (not x28177))
+:assumption (or (not x3659) (not x24722))
+:assumption (or x3000 x20555)
+:assumption (or x25601 (not x24869))
+:assumption (or (not x18489) x19473)
+:assumption (or (not x2330) x31623)
+:assumption (or x26700 x22439)
+:assumption (or (not x4867) x30225)
+:assumption (or (not x27726) x29709)
+:assumption (or x17552 x28576)
+:assumption (or x4596 x149)
+:assumption (or (not x25366) (not x2999) x18994)
+:assumption (or (not x14736) (not x18544))
+:assumption (or x6517 (not x27169))
+:assumption (or (not x4997) x5363)
+:assumption (or (not x11711) x7942 x20374 (not x30845) x29082 x3156)
+:assumption (or (not x12577) x6676)
+:assumption (or (not x9903) (not x12943))
+:assumption (or (not x9736) x17337)
+:assumption (or x11881 (not x24543))
+:assumption (or (not x4822) (not x15273))
+:assumption (or x13377 (not x21041))
+:assumption (or x12191 x25201)
+:assumption (or (not x6624) (not x13411))
+:assumption (or (not x27862) x1259 x7431 x12906 x9457 x5512)
+:assumption (or x15304 (not x13486))
+:assumption (or x11640 (not x1393) (not x24848))
+:assumption (or x28195 (not x27889))
+:assumption (or (not x15353) x1566)
+:assumption (or (not x10198) x10235)
+:assumption (or (not x1364) x20171 x16510 (not x4401) (not x7558))
+:assumption (or x22946 (not x29854))
+:assumption (or x10687 x3790)
+:assumption (or (not x30938) (not x19776))
+:assumption (or (not x16507) x2235)
+:assumption (or (not x24896) x20078)
+:assumption (or x23244 (not x5202) x17475)
+:assumption (or x10182 x31616)
+:assumption (or (not x8845) (not x19974))
+:assumption (or x17632 (not x14906))
+:assumption (or x21395 (not x16375))
+:assumption (or (not x26316) x16842)
+:assumption (or x1013 (not x22132))
+:assumption (or (not x4742) x22079)
+:assumption (or x31670 x6466)
+:assumption (or (not x22882) (not x18963))
+:assumption (or (not x30913) x14670)
+:assumption (or x11725 (not x15534) x1393)
+:assumption (or x20435 (not x5856) x21438)
+:assumption (or (not x24351) x9393)
+:assumption (or (not x9811) (not x12996))
+:assumption (or (not x7944) x25308 x20819 x27088 (not x27790) (not x30968))
+:assumption (or (not x13958) (not x4818))
+:assumption (or x20179 (not x3738))
+:assumption (or x17360 (not x26629))
+:assumption (or (not x10614) (not x5657))
+:assumption (or (not x4401) x11905 (not x5722))
+:assumption (or x20836 (not x14455))
+:assumption (or x26467 x1297)
+:assumption (or x16462 x6440)
+:assumption (or x25485 (not x19947))
+:assumption (or (not x26163) x27852)
+:assumption (or x31577 (not x21007))
+:assumption (or (not x17644) (not x8145))
+:assumption (or (not x17359) x14345)
+:assumption (or x8316 (not x29716))
+:assumption (or (not x29394) x15533)
+:assumption (or (not x24086) (not x28584))
+:assumption (or (not x16510) x22343)
+:assumption (or x4380 x17036)
+:assumption (or (not x29941) (not x1898))
+:assumption (or x25184 x11887 x18785 (not x5291) x23325 x3596 x26493)
+:assumption (or (not x21784) (not x6749))
+:assumption (or (not x11857) x4824 (not x27785) (not x942))
+:assumption (or (not x2459) x9872)
+:assumption (or x14122 (not x7606))
+:assumption (or x6513 x23209)
+:assumption (or x10651 (not x6813))
+:assumption (or x6550 (not x67))
+:assumption (or x29096 x21578 x17818 (not x22245))
+:assumption (or x28375 (not x12804))
+:assumption (or x13956 (not x1704))
+:assumption (or (not x4088) (not x3008))
+:assumption (or (not x29309) x18069)
+:assumption (or (not x16067) (not x9217))
+:assumption (or x26008 (not x8838))
+:assumption (or (not x12417) (not x2133))
+:assumption (or x15023 x22878)
+:assumption (or (not x23328) x7427)
+:assumption (or (not x25361) (not x16178))
+:assumption (or x23612 x27681 (not x5896) x1075)
+:assumption (or (not x21935) x30339)
+:assumption (or (not x18719) (not x31642))
+:assumption (or x4066 x539 (not x31262) x29356 (not x30847))
+:assumption (or (not x9711) (not x9750))
+:assumption (or x17362 x3539)
+:assumption (or x3658 x21877)
+:assumption (or x4411 (not x3935))
+:assumption (or (not x9529) x8418)
+:assumption (or (not x22403) (not x24054))
+:assumption (or (not x31727) (not x16374))
+:assumption (or x28171 x9232)
+:assumption (or x23399 (not x12667))
+:assumption (or x23299 (not x23380))
+:assumption (or x16741 (not x15580) (not x11641))
+:assumption (or x27730 (not x25455))
+:assumption (or x27150 (not x24877))
+:assumption (or x591 (not x2152))
+:assumption (or (not x28595) (not x20723))
+:assumption (or x23769 x19453)
+:assumption (or x29462 x5501)
+:assumption (or x26255 (not x9157))
+:assumption (or (not x21902) x10061)
+:assumption (or (not x18814) (not x964) (not x26670) (not x8051) (not x8043) (not x14270))
+:assumption (or (not x16324) x269)
+:assumption (or (not x599) x8037)
+:assumption (or (not x8819) x19488 (not x22625) x16375)
+:assumption (or (not x30767) x12402)
+:assumption (or (not x15795) (not x747))
+:assumption (or (not x6951) x13693)
+:assumption (or (not x5779) (not x7012))
+:assumption (or (not x22259) (not x16254))
+:assumption (or x6409 (not x15531))
+:assumption (or (not x9473) x22658)
+:assumption (or x28967 x15714)
+:assumption (or x11165 x7608)
+:assumption (or (not x27111) x7165)
+:assumption (or x5373 (not x932))
+:assumption (or (not x16025) (not x5838))
+:assumption (or x13111 (not x15861) x8070)
+:assumption (or x8664 (not x24532))
+:assumption (or x20134 (not x3060))
+:assumption (or x7130 x313)
+:assumption (or (not x2133) x15643 x21739)
+:assumption (or x29990 x16304 x2969 x15795)
+:assumption (or x20427 (not x30887))
+:assumption (or (not x14492) (not x2841))
+:assumption (or (not x11277) x12071 x18594 x11623 (not x4324) x6244)
+:assumption (or x9527 x28590)
+:assumption (or (not x16741) x5700)
+:assumption (or x18523 x12990)
+:assumption (or (not x22205) x22033 x11812 x29574 (not x30319) x17804 x17390 x27171)
+:assumption (or x29763 (not x29269))
+:assumption (or x22530 x4678)
+:assumption (or x4943 (not x12197))
+:assumption (or (not x1082) x7542 (not x3439) x7862)
+:assumption (or (not x22345) (not x25771) x14578)
+:assumption (or x30250 (not x30878))
+:assumption (or (not x7840) x19484 (not x25659))
+:assumption (or (not x4239) (not x6907) (not x6242) x14562 (not x19074) (not x6191) (not x29101) (not x12391))
+:assumption (or (not x18859) x3735 x275)
+:assumption (or x918 (not x31829) (not x21166))
+:assumption (or (not x4718) x7221 (not x1605) (not x7718) (not x19450) (not x31042) (not x15238))
+:assumption (or x13339 (not x4259))
+:assumption (or x11374 x23930)
+:assumption (or (not x20089) (not x6487))
+:assumption (or x28056 (not x201))
+:assumption (or (not x10605) (not x6064) (not x20363) x25955)
+:assumption (or (not x25001) (not x427))
+:assumption (or x2987 (not x4478) x18694 x29954)
+:assumption (or (not x16129) (not x7038))
+:assumption (or (not x15183) (not x27167))
+:assumption (or x25366 x11925)
+:assumption (or (not x5028) (not x1550))
+:assumption (or x16853 x8602)
+:assumption (or (not x29783) (not x16907))
+:assumption (or (not x8432) x8575)
+:assumption (or x22651 (not x28125))
+:assumption (or x19810 x24496)
+:assumption (or (not x19665) x22048)
+:assumption (or (not x16545) (not x17091))
+:assumption (or (not x29227) x12940)
+:assumption (or (not x18254) x240 (not x22392) (not x18171) (not x2886))
+:assumption (or (not x28912) x1806)
+:assumption (or (not x29261) x3249)
+:assumption (or x30256 (not x9728))
+:assumption (or (not x426) x2246)
+:assumption (or x7072 x3678)
+:assumption (or x23244 x18328)
+:assumption (or (not x1146) x27873)
+:assumption (or x8811 (not x29452))
+:assumption (or (not x12537) (not x27981))
+:assumption (or x11154 (not x27650))
+:assumption (or x3699 x16517)
+:assumption (or x20395 x23525)
+:assumption (or (not x17982) x27593 x17908 (not x24471))
+:assumption (or x18944 (not x5710) (not x27537))
+:assumption (or (not x12647) (not x28974))
+:assumption (or x17534 (not x15852) (not x27148))
+:assumption (or x3173 x27004)
+:assumption (or (not x28890) x27362 x9399)
+:assumption (or x9430 (not x27688))
+:assumption (or (not x29961) (not x17225))
+:assumption (or (not x18222) x16420)
+:assumption (or x3091 x8341)
+:assumption (or (not x499) x21802 x5528)
+:assumption (or x12456 x19962)
+:assumption (or (not x22094) x6200)
+:assumption (or x25659 x12492)
+:assumption (or (not x21958) x22548 (not x6123))
+:assumption (or x11632 x6927 x4576)
+:assumption (or (not x27272) (not x14115) x218)
+:assumption (or (not x14138) (not x18195))
+:assumption (or (not x31573) x24609)
+:assumption (or x21298 x8498)
+:assumption (or (not x52) (not x9297))
+:assumption (or x9895 x7440 x15546 (not x2007) x29442 x30721)
+:assumption (or x10085 x28293)
+:assumption (or x9579 (not x16624) x22981 x23399)
+:assumption (or x22278 x24755)
+:assumption (or x24933 x10858)
+:assumption (or (not x5060) (not x21320))
+:assumption (or (not x4204) (not x3335))
+:assumption (or (not x9668) (not x7265))
+:assumption (or x30831 x23773)
+:assumption (or (not x31526) x11376)
+:assumption (or x18267 x6594)
+:assumption (or x27100 x24499 (not x31033) x8648 (not x5528) x23594)
+:assumption (or x16741 (not x16046))
+:assumption (or (not x3807) (not x27815))
+:assumption (or (not x30724) (not x9489))
+:assumption (or (not x15917) (not x21010))
+:assumption (or (not x12550) (not x24501) (not x30110) x28328)
+:assumption (or x16410 (not x1628))
+:assumption (or (not x20325) x31433)
+:assumption (or (not x7856) (not x21073))
+:assumption (or (not x14802) x15972 (not x2914))
+:assumption (or x23446 (not x29687))
+:assumption (or (not x12966) x30208)
+:assumption (or (not x8979) (not x16670))
+:assumption (or (not x17359) (not x13335) (not x6972) (not x11281))
+:assumption (or x29546 (not x1934))
+:assumption (or (not x1456) (not x21451))
+:assumption (or (not x17231) (not x18981))
+:assumption (or x24979 (not x26058) (not x2475) x29165 (not x12517))
+:assumption (or (not x12310) x19331 (not x16166) (not x17075) (not x13180) (not x19815))
+:assumption (or (not x12262) x18625 x4377 (not x8363))
+:assumption (or (not x30971) x10580)
+:assumption (or x28023 x5528 x18744)
+:assumption (or (not x2013) (not x22496))
+:assumption (or (not x22412) (not x24629))
+:assumption (or (not x20648) (not x830))
+:assumption (or (not x5025) x13253 x24773)
+:assumption (or x9267 (not x12308))
+:assumption (or x24157 (not x24312))
+:assumption (or x26598 x10236)
+:assumption (or x24926 x2656)
+:assumption (or (not x18549) (not x15795))
+:assumption (or (not x23453) (not x27805) x2539 (not x5528) x16723 x5225)
+:assumption (or (not x28611) x9562)
+:assumption (or (not x21859) x30633 (not x21888))
+:assumption (or (not x29256) (not x3795))
+:assumption (or x6858 (not x16282))
+:assumption (or (not x28715) (not x22605))
+:assumption (or x15208 x12057)
+:assumption (or x25474 x20735)
+:assumption (or x29177 x23577)
+:assumption (or (not x20548) (not x16145))
+:assumption (or x827 (not x14564))
+:assumption (or x8673 x3031)
+:assumption (or x22337 x11033)
+:assumption (or (not x6760) x22829)
+:assumption (or (not x25450) (not x27075))
+:assumption (or x61 x21487)
+:assumption (or (not x16561) x18010 (not x9477) (not x19206))
+:assumption (or (not x22014) x22468)
+:assumption (or (not x9090) x23443)
+:assumption (or x5250 x4762)
+:assumption (or (not x23855) (not x8656))
+:assumption (or x10888 x8347)
+:assumption (or (not x1071) x4705)
+:assumption (or (not x25488) (not x7254))
+:assumption (or (not x2019) x12463)
+:assumption (or x31867 x8961 x16510)
+:assumption (or x13127 x28541)
+:assumption (or x1042 (not x5641))
+:assumption (or (not x17592) x15000)
+:assumption (or (not x1412) x9323)
+:assumption (or (not x30872) (not x10281))
+:assumption (or (not x6509) (not x28627) x10479 x6942)
+:assumption (or (not x16661) x11890)
+:assumption (or x13739 (not x10530))
+:assumption (or (not x14369) x918)
+:assumption (or x141 x14839 x23603)
+:assumption (or x12377 (not x23244) x13956)
+:assumption (or (not x24050) (not x30931))
+:assumption (or x7232 x25490 (not x30427))
+:assumption (or x15861 (not x18696) (not x27040))
+:assumption (or x23756 (not x12600))
+:assumption (or (not x19796) (not x827))
+:assumption (or x109 (not x20892))
+:assumption (or x14788 x14722)
+:assumption (or x8544 x5395)
+:assumption (or x3252 x19759)
+:assumption (or (not x21712) (not x21097))
+:assumption (or x28708 (not x24664) (not x7538))
+:assumption (or x3654 x7767)
+:assumption (or x20137 (not x7268))
+:assumption (or (not x25351) (not x18250))
+:assumption (or x2190 x18509)
+:assumption (or (not x6995) x445)
+:assumption (or x2449 (not x5113))
+:assumption (or x26371 (not x5010) (not x3272) (not x19466) (not x9060))
+:assumption (or (not x22276) (not x13265))
+:assumption (or x28765 x17985)
+:assumption (or x12025 (not x18585))
+:assumption (or x13074 x17530)
+:assumption (or (not x27867) x13816)
+:assumption (or x20205 (not x11193))
+:assumption (or x29344 x22775)
+:assumption (or (not x9221) x23445)
+:assumption (or (not x27583) x2888)
+:assumption (or (not x29544) (not x10669))
+:assumption (or (not x17016) x12302)
+:assumption (or (not x21957) (not x22151))
+:assumption (or x18313 x17225)
+:assumption (or x25615 x7403 (not x14764) (not x13004) (not x31283) (not x22564) (not x5805) x26940 (not x5301))
+:assumption (or (not x3100) (not x9008))
+:assumption (or x315 (not x29046))
+:assumption (or (not x16998) x4449)
+:assumption (or (not x8602) (not x25906) x16213)
+:assumption (or (not x18859) x8771)
+:assumption (or (not x1393) x15730 (not x22662))
+:assumption (or x8900 x31052 x15398 (not x357) x21815 (not x19263))
+:assumption (or x28848 (not x828))
+:assumption (or (not x13483) (not x25440))
+:assumption (or x8076 x28785)
+:assumption (or (not x12242) x5205)
+:assumption (or (not x1436) (not x18290))
+:assumption (or (not x1703) (not x29131))
+:assumption (or x9934 (not x14041))
+:assumption (or x10387 x25099)
+:assumption (or (not x5652) x26828)
+:assumption (or (not x7158) (not x22256) (not x8229) x28091)
+:assumption (or x26237 x2116)
+:assumption (or (not x8180) x15590)
+:assumption (or (not x7664) x28188)
+:assumption (or (not x31662) x995)
+:assumption (or (not x25659) (not x17443))
+:assumption (or (not x5528) x22014)
+:assumption (or (not x29940) x29807)
+:assumption (or x8288 (not x15229))
+:assumption (or x10410 (not x3727))
+:assumption (or (not x20173) x24926)
+:assumption (or (not x28170) x31628 x27296 (not x10349) x7433)
+:assumption (or (not x28978) x5941)
+:assumption (or (not x18827) (not x26239))
+:assumption (or (not x24681) (not x10378))
+:assumption (or (not x11877) x2063)
+:assumption (or (not x26701) x4186)
+:assumption (or (not x19034) x23244)
+:assumption (or (not x6503) x7004)
+:assumption (or (not x17301) x7510)
+:assumption (or (not x25997) x5840)
+:assumption (or x23393 x17747)
+:assumption (or (not x1949) x5528)
+:assumption (or (not x23393) (not x27809))
+:assumption (or (not x2241) x26432)
+:assumption (or (not x8902) x22784 x7279 x6134)
+:assumption (or x1838 x17295 (not x24050))
+:assumption (or x30331 x14132)
+:assumption (or (not x7678) (not x21682))
+:assumption (or (not x14084) x17770)
+:assumption (or x28310 (not x24977))
+:assumption (or (not x24597) (not x25303))
+:assumption (or x31127 x6750 (not x22403) x4576 x7286)
+:assumption (or x16175 (not x8626))
+:assumption (or x7599 x25505)
+:assumption (or x31077 (not x5028))
+:assumption (or x25652 x19478)
+:assumption (or (not x9802) (not x28796))
+:assumption (or x28020 x21845)
+:assumption (or (not x23672) x11517)
+:assumption (or x13711 x26647)
+:assumption (or (not x21951) (not x12793))
+:assumption (or (not x22924) (not x9924))
+:assumption (or (not x20576) x752)
+:assumption (or x17625 x21987)
+:assumption (or (not x30501) x3602)
+:assumption (or (not x23608) (not x11233))
+:assumption (or x12778 x2236)
+:assumption (or (not x14294) x15166)
+:assumption (or (not x5634) x2764)
+:assumption (or x28818 (not x15367) x14008 (not x14695) (not x24144) (not x18021))
+:assumption (or (not x18598) (not x26983))
+:assumption (or x31911 x30039 (not x623))
+:assumption (or x9008 x7953)
+:assumption (or x27971 (not x29799) (not x9759) x8002)
+:assumption (or x29780 x7781)
+:assumption (or (not x5015) x17225)
+:assumption (or (not x20579) x16715)
+:assumption (or x25435 x9008)
+:assumption (or (not x24415) (not x4396))
+:assumption (or x7325 (not x28073))
+:assumption (or x17929 x8345)
+:assumption (or (not x18331) (not x28446))
+:assumption (or (not x13956) x24703)
+:assumption (or x29415 (not x31315))
+:assumption (or (not x3947) x23990)
+:assumption (or x14014 x23665)
+:assumption (or (not x16510) x8671)
+:assumption (or x11174 (not x22528))
+:assumption (or x2053 x7919)
+:assumption (or (not x15651) x18097 x18293 x21691)
+:assumption (or x1393 x845)
+:assumption (or (not x25726) x20719)
+:assumption (or (not x30856) (not x712))
+:assumption (or (not x18890) x10486)
+:assumption (or x30401 (not x23135))
+:assumption (or x24785 x9941)
+:assumption (or x27287 x10327)
+:assumption (or x9973 x1430)
+:assumption (or x20043 x28514)
+:assumption (or x12321 (not x8804))
+:assumption (or (not x25659) (not x27418) x1848)
+:assumption (or x2752 (not x20102))
+:assumption (or (not x14998) x24826)
+:assumption (or (not x2656) x8781)
+:assumption (or x18487 (not x4722))
+:assumption (or (not x28414) (not x17860))
+:assumption (or (not x1393) (not x28956))
+:assumption (or (not x5691) (not x26495))
+:assumption (or x31099 x25669)
+:assumption (or x30507 (not x28979))
+:assumption (or x2837 x10909)
+:assumption (or (not x4637) (not x12006))
+:assumption (or x8537 (not x5558))
+:assumption (or x23481 x30479 x3476 (not x21298))
+:assumption (or (not x16239) (not x2481))
+:assumption (or (not x18632) (not x3473))
+:assumption (or x2237 (not x13264))
+:assumption (or x12654 (not x28176))
+:assumption (or x16863 x26276)
+:assumption (or (not x30110) x15712)
+:assumption (or (not x9863) x20531 (not x18858) x12682 x11967 (not x24307) x17053)
+:assumption (or x28547 x4770)
+:assumption (or x20239 (not x29959))
+:assumption (or (not x11424) (not x9039))
+:assumption (or (not x26619) (not x25948))
+:assumption (or x19428 x30615 x10495)
+:assumption (or x964 x9407)
+:assumption (or x29312 x29666)
+:assumption (or (not x16897) x15576)
+:assumption (or (not x18199) (not x20065) x14831)
+:assumption (or x11057 x23972)
+:assumption (or (not x10064) x9529 (not x15917) x25143)
+:assumption (or (not x2762) (not x4001))
+:assumption (or (not x8043) x19243)
+:assumption (or x1197 x5221)
+:assumption (or (not x4703) (not x19259))
+:assumption (or (not x17075) x6303 (not x11552) (not x20937))
+:assumption (or x4886 (not x1377))
+:assumption (or (not x29157) x1621 (not x6194))
+:assumption (or (not x9893) (not x2104) (not x14193) (not x19124) (not x30515) x22715 (not x23664) (not x2280))
+:assumption (or x2995 x18225)
+:assumption (or (not x11114) (not x8753))
+:assumption (or x29442 (not x2426))
+:assumption (or (not x23244) (not x24358) x19589)
+:assumption (or x16802 x6926)
+:assumption (or x977 (not x27359))
+:assumption (or (not x3593) x31755)
+:assumption (or (not x29917) (not x6274))
+:assumption (or (not x4818) x19022)
+:assumption (or (not x30851) x26217)
+:assumption (or x1440 x20099)
+:assumption (or (not x15544) x19046)
+:assumption (or (not x11298) (not x22634))
+:assumption (or x8656 (not x22604) (not x19913) (not x18049) x13102 x662)
+:assumption (or x24950 (not x12458))
+:assumption (or (not x23739) x29507)
+:assumption (or x8886 x17621)
+:assumption (or x15621 x2710)
+:assumption (or x24952 (not x11462) (not x14142))
+:assumption (or x27381 (not x16872))
+:assumption (or x5712 (not x14963))
+:assumption (or (not x16616) x8710)
+:assumption (or (not x28864) x20694)
+:assumption (or (not x97) x11873)
+:assumption (or (not x8002) (not x6313))
+:assumption (or (not x15743) x29135)
+:assumption (or (not x4265) (not x1444))
+:assumption (or x13956 x16206)
+:assumption (or (not x16434) x7405)
+:assumption (or (not x5643) x28851)
+:assumption (or (not x28885) x31444)
+:assumption (or x26528 x24434)
+:assumption (or x24315 x26482)
+:assumption (or (not x11331) x21103)
+:assumption (or (not x18351) x8041 (not x30734))
+:assumption (or x14921 (not x18516))
+:assumption (or (not x24605) x23154)
+:assumption (or (not x8002) (not x10251))
+:assumption (or (not x19734) x19652 (not x3433) x5188 x25177)
+:assumption (or x508 x28328 (not x23558))
+:assumption (or (not x23567) (not x14481) x18590 (not x24759))
+:assumption (or x9245 x26765)
+:assumption (or (not x7591) x30453)
+:assumption (or x21007 x28953)
+:assumption (or (not x12967) (not x13781))
+:assumption (or (not x3628) x3748)
+:assumption (or x21838 x18859)
+:assumption (or (not x1272) (not x16375) (not x7948) x20925)
+:assumption (or x29424 (not x1777))
+:assumption (or (not x18244) (not x28912) (not x23132) (not x5143) x28686 x1518)
+:assumption (or x22245 x12799)
+:assumption (or x18677 (not x26445))
+:assumption (or x8585 (not x24195))
+:assumption (or (not x28423) (not x17665))
+:assumption (or x22335 (not x19479))
+:assumption (or (not x13588) (not x28560))
+:assumption (or (not x21624) (not x10552))
+:assumption (or x24634 x21446)
+:assumption (or (not x20505) (not x15699))
+:assumption (or (not x25462) (not x30238))
+:assumption (or (not x11025) (not x31520))
+:assumption (or x28810 x10967)
+:assumption (or x9025 (not x21001))
+:assumption (or (not x14156) (not x10374))
+:assumption (or x22524 x29498)
+:assumption (or x20486 (not x794))
+:assumption (or x15615 (not x23244))
+:assumption (or (not x9311) (not x31076))
+:assumption (or (not x29152) (not x23580) (not x27854) (not x7083) (not x6177) x1298 (not x31634) (not x10555))
+:assumption (or x17093 (not x25922))
+:assumption (or (not x27704) (not x18542))
+:assumption (or x10375 x7913)
+:assumption (or (not x24782) x2217)
+:assumption (or (not x6584) x11498)
+:assumption (or (not x18098) x6045)
+:assumption (or x2145 x28438)
+:assumption (or (not x3435) (not x16970) x15492)
+:assumption (or (not x18173) x26872)
+:assumption (or (not x31911) (not x7138))
+:assumption (or x8048 (not x12941))
+:assumption (or x19095 x22012)
+:assumption (or x6778 (not x29469))
+:assumption (or x5977 (not x29467))
+:assumption (or x13622 (not x2613))
+:assumption (or (not x21243) x15494)
+:assumption (or x19822 x31728 (not x8861) (not x28357))
+:assumption (or x11008 (not x21475))
+:assumption (or x17926 (not x17730))
+:assumption (or x6742 x12236)
+:assumption (or (not x24733) x1340)
+:assumption (or x30685 x6683 (not x14051) (not x18147) x4506)
+:assumption (or (not x20977) (not x31134))
+:assumption (or x3453 (not x14691) (not x18305) x29359 x3085)
+:assumption (or (not x30360) x8504)
+:assumption (or (not x29292) x24243)
+:assumption (or x102 x24097)
+:assumption (or (not x14416) x5245)
+:assumption (or x31076 x30602)
+:assumption (or x26460 (not x9786))
+:assumption (or (not x7711) x23568)
+:assumption (or (not x30085) (not x8161))
+:assumption (or (not x21442) (not x878))
+:assumption (or x31402 x18340)
+:assumption (or x26840 (not x28589))
+:assumption (or x16526 x29150)
+:assumption (or x574 (not x27322))
+:assumption (or x28136 x11088)
+:assumption (or x15868 x10016)
+:assumption (or (not x26485) (not x14205))
+:assumption (or x7678 (not x31141))
+:assumption (or x22350 (not x17908))
+:assumption (or x28792 (not x2500))
+:assumption (or (not x29935) x23244 (not x13576))
+:assumption (or x21162 x7282)
+:assumption (or x22945 x1042)
+:assumption (or (not x12340) (not x25294) x5878)
+:assumption (or x22572 x18120)
+:assumption (or (not x23244) x23674)
+:assumption (or (not x24381) (not x29887))
+:assumption (or x7616 (not x13661))
+:assumption (or x2089 x20020)
+:assumption (or x20692 (not x16721))
+:assumption (or (not x18369) (not x21327))
+:assumption (or (not x19560) x29386)
+:assumption (or (not x5946) x26353)
+:assumption (or x15126 (not x8064))
+:assumption (or (not x12084) (not x14733))
+:assumption (or x16609 (not x24081))
+:assumption (or (not x6521) x834 x13608 x4840 x29097 (not x15916) x14037 x30982)
+:assumption (or x31215 (not x25627))
+:assumption (or x1292 (not x20887))
+:assumption (or (not x26354) x19644)
+:assumption (or x30875 x4969)
+:assumption (or (not x7171) x18708)
+:assumption (or (not x5755) x16187)
+:assumption (or (not x24247) x16409 (not x16910))
+:assumption (or (not x12923) (not x27597) (not x5725) (not x20482))
+:assumption (or (not x23423) (not x7539) x16343 x18623)
+:assumption (or x7538 x24664)
+:assumption (or x5009 (not x27478))
+:assumption (or x22032 x5394)
+:assumption (or x22897 (not x22598))
+:assumption (or (not x20747) (not x10978))
+:assumption (or (not x11506) x18441 (not x9919) x11316 x11271 x23720 x17729)
+:assumption (or (not x6178) x4650)
+:assumption (or (not x2407) (not x13234))
+:assumption (or x26107 (not x25068))
+:assumption (or (not x30616) (not x30931))
+:assumption (or x1454 x19147)
+:assumption (or x15757 (not x24587))
+:assumption (or (not x12494) x3882 (not x12057) x15869 x28472 (not x5906) (not x5394) (not x5636))
+:assumption (or (not x3573) x22428)
+:assumption (or (not x31116) (not x26244))
+:assumption (or (not x25826) (not x25285))
+:assumption (or (not x30033) x12837)
+:assumption (or (not x4050) x24178)
+:assumption (or x9799 (not x31855) (not x5688) x7245 x16426 x2351)
+:assumption (or x8532 x19941)
+:assumption (or (not x3872) x31444)
+:assumption (or x31811 x21851 x19194 x25229)
+:assumption (or x20021 (not x6199) x1523 x7855)
+:assumption (or (not x6879) (not x21305))
+:assumption (or (not x22243) x30380)
+:assumption (or (not x1133) (not x14231))
+:assumption (or x26904 x302)
+:assumption (or x15133 x30326)
+:assumption (or x30315 x3671)
+:assumption (or x16469 (not x6749))
+:assumption (or x9795 (not x1271))
+:assumption (or (not x8590) (not x21220))
+:assumption (or x12873 (not x14308))
+:assumption (or x30638 x19645)
+:assumption (or (not x5921) (not x964) (not x30701) (not x14751) (not x19113) (not x9581))
+:assumption (or (not x20817) x31561)
+:assumption (or (not x18569) x21298)
+:assumption (or x13208 x24706 (not x10655))
+:assumption (or x2592 x1475)
+:assumption (or (not x16945) x23804)
+:assumption (or (not x24614) (not x8002))
+:assumption (or (not x28504) (not x17509))
+:assumption (or (not x21422) x6906)
+:assumption (or (not x15144) x15482)
+:assumption (or (not x14162) (not x1849))
+:assumption (or (not x11739) (not x11637))
+:assumption (or (not x17930) x25799)
+:assumption (or x3859 (not x12351))
+:assumption (or x12166 x10686)
+:assumption (or x241 x9114)
+:assumption (or x21432 x24263 (not x16065) (not x19236))
+:assumption (or (not x6794) (not x16675))
+:assumption (or (not x22451) (not x27434) x8002)
+:assumption (or x162 (not x11942))
+:assumption (or (not x16990) (not x3981))
+:assumption (or (not x30376) x21298)
+:assumption (or x7637 x13956)
+:assumption (or (not x17954) x15498)
+:assumption (or (not x19018) (not x16559))
+:assumption (or (not x25005) x14484)
+:assumption (or x5280 (not x20119))
+:assumption (or x23946 x14845)
+:assumption (or (not x24792) (not x6477))
+:assumption (or x2662 x18645)
+:assumption (or (not x30635) x7063 x27770 x28824 (not x16513))
+:assumption (or (not x21970) (not x3555))
+:assumption (or (not x26190) (not x19986))
+:assumption (or x25072 (not x3343) (not x19717))
+:assumption (or x4711 (not x6021))
+:assumption (or x5402 (not x5519))
+:assumption (or (not x17151) (not x18293))
+:assumption (or (not x19819) (not x2334))
+:assumption (or (not x27296) x10349)
+:assumption (or x23624 (not x13956))
+:assumption (or (not x13015) x1393 x16928)
+:assumption (or (not x8445) (not x27794))
+:assumption (or (not x7384) (not x9311))
+:assumption (or (not x27550) (not x9073))
+:assumption (or (not x24856) (not x30314) x19693 (not x17621) (not x8886) x16061 x7120 (not x6637))
+:assumption (or (not x2988) x15862)
+:assumption (or x24098 (not x5499))
+:assumption (or (not x19931) (not x30316))
+:assumption (or x8497 x8002)
+:assumption (or x10927 (not x7096))
+:assumption (or x12923 x31460 x278)
+:assumption (or (not x25418) x20722 (not x27363) (not x2297))
+:assumption (or (not x24155) x7974)
+:assumption (or (not x16404) x11567)
+:assumption (or x20420 x14839 (not x20473))
+:assumption (or (not x1582) x11283)
+:assumption (or (not x28242) (not x7715))
+:assumption (or x20119 x11867 (not x28436))
+:assumption (or (not x13195) (not x15174))
+:assumption (or (not x18516) x30132)
+:assumption (or x28541 (not x30939))
+:assumption (or (not x20346) x25659)
+:assumption (or (not x5761) x21366)
+:assumption (or x14753 x1371)
+:assumption (or (not x15763) x218 (not x13431))
+:assumption (or x23788 x6856)
+:assumption (or x16715 x352)
+:assumption (or x24446 (not x18375))
+:assumption (or (not x14828) (not x157))
+:assumption (or x25969 (not x5466) x19920 x4738)
+:assumption (or (not x26035) (not x5989))
+:assumption (or x16513 x21630)
+:assumption (or (not x13407) x27857)
+:assumption (or (not x22899) x12829 (not x13622) x1515)
+:assumption (or x3513 (not x11630))
+:assumption (or x9398 (not x12400))
+:assumption (or x1855 x4822)
+:assumption (or (not x2088) (not x6839))
+:assumption (or x14133 x5528)
+:assumption (or (not x22138) (not x8656))
+:assumption (or x29221 x1276)
+:assumption (or x12598 x15336)
+:assumption (or x20373 (not x4207))
+:assumption (or (not x2874) (not x15350))
+:assumption (or x8602 x30320)
+:assumption (or (not x20550) (not x6834))
+:assumption (or x14471 x16087)
+:assumption (or x28578 x13056)
+:assumption (or (not x14801) x28242 x10874)
+:assumption (or x3439 x22732)
+:assumption (or x11618 x15272)
+:assumption (or x13956 x29943)
+:assumption (or (not x18514) (not x5841))
+:assumption (or x11375 (not x8266))
+:assumption (or x5713 x12891)
+:assumption (or x8002 (not x13473))
+:assumption (or x5815 x30619)
+:assumption (or x28315 x26801 (not x29372) x29941 x12448 x13927 x9949)
+:assumption (or (not x18594) x11792 x584)
+:assumption (or x2288 (not x31648))
+:assumption (or x4804 x24942)
+:assumption (or (not x8229) (not x28075))
+:assumption (or x8002 x1194)
+:assumption (or x11628 x4233)
+:assumption (or (not x30255) (not x5528) (not x29799) (not x9008) (not x4203))
+:assumption (or (not x23618) x27471)
+:assumption (or x15959 x13434)
+:assumption (or (not x13956) x26367)
+:assumption (or (not x9496) x3492)
+:assumption (or (not x24108) (not x24082) x3131)
+:assumption (or x19972 (not x20885))
+:assumption (or x6820 x6865)
+:assumption (or (not x9918) (not x25518))
+:assumption (or x27640 (not x25566))
+:assumption (or x5491 (not x26762))
+:assumption (or x591 x2369)
+:assumption (or (not x15555) x29783 x6074 x16907)
+:assumption (or x6707 x15449)
+:assumption (or x12117 (not x14543))
+:assumption (or x7110 (not x19198))
+:assumption (or (not x12894) (not x8002))
+:assumption (or (not x17804) (not x30889) x16520)
+:assumption (or x17600 (not x6209))
+:assumption (or (not x3139) x3170 x15226 x24744 (not x30302))
+:assumption (or x26281 x8002)
+:assumption (or x17777 (not x9008) (not x27264))
+:assumption (or x954 (not x25188))
+:assumption (or (not x9209) x21953)
+:assumption (or (not x10883) (not x30226))
+:assumption (or x12242 x20325 x369 x26515)
+:assumption (or (not x13528) (not x30800))
+:assumption (or x22215 x26835)
+:assumption (or x8822 x5528)
+:assumption (or (not x23069) (not x11184))
+:assumption (or (not x5044) (not x73))
+:assumption (or x1177 (not x8742) (not x2298) x23484 x8826)
+:assumption (or x15481 (not x25659) x28889)
+:assumption (or (not x20257) (not x28476) x16329 x2401 (not x25705) (not x8897))
+:assumption (or (not x1819) (not x1659))
+:assumption (or x8485 (not x16764) x25659)
+:assumption (or x4913 (not x2220) x14116 (not x20778) x1146)
+:assumption (or (not x1864) x23244)
+:assumption (or x1851 (not x19222))
+:assumption (or (not x16245) x30977)
+:assumption (or x15026 x28919)
+:assumption (or (not x21298) x12034 (not x13256) (not x2219))
+:assumption (or (not x31307) x12562)
+:assumption (or (not x12605) x257)
+:assumption (or x30847 x2912)
+:assumption (or x3195 x29204)
+:assumption (or (not x11041) (not x29584))
+:assumption (or (not x22549) (not x7835))
+:assumption (or (not x4161) (not x26257))
+:assumption (or (not x11142) (not x10828))
+:assumption (or x711 x28630)
+:assumption (or x8673 x16683)
+:assumption (or (not x5455) (not x23017))
+:assumption (or (not x23512) (not x31269) x19864 x20432 x16510)
+:assumption (or x14455 x8707 x24906)
+:assumption (or (not x15614) (not x21815))
+:assumption (or (not x27349) x25218 x15930 (not x17066) (not x21436) (not x15992) x1326)
+:assumption (or x28952 (not x12720))
+:assumption (or x11730 (not x20467))
+:assumption (or (not x19549) (not x24959))
+:assumption (or x23200 (not x20604))
+:assumption (or (not x8178) x11256)
+:assumption (or x18597 (not x3235) x27531 (not x4125) (not x6803))
+:assumption (or x8616 (not x28127))
+:assumption (or (not x18074) x17027)
+:assumption (or (not x18398) x30520 (not x16691) (not x16718))
+:assumption (or x16360 (not x12768))
+:assumption (or (not x24149) x30654 x21725 (not x21827) x11306 x27198 x27550)
+:assumption (or (not x8002) (not x17636))
+:assumption (or (not x18883) x5208)
+:assumption (or x2862 x16235)
+:assumption (or x26600 x16549)
+:assumption (or (not x8219) (not x22924))
+:assumption (or (not x24152) x19664)
+:assumption (or (not x15964) (not x24877))
+:assumption (or x13956 x16372)
+:assumption (or (not x13030) x15649)
+:assumption (or x23577 (not x17474))
+:assumption (or (not x3455) x25377)
+:assumption (or x30350 x6969 (not x6781))
+:assumption (or x11717 (not x8602))
+:assumption (or (not x31903) x17763)
+:assumption (or x14032 x25657)
+:assumption (or x15795 (not x5632))
+:assumption (or x23235 x2028)
+:assumption (or x7323 (not x2690))
+:assumption (or x15283 (not x14357))
+:assumption (or (not x5528) x29907)
+:assumption (or x16451 (not x26978))
+:assumption (or x6555 x27350)
+:assumption (or (not x22962) (not x10658))
+:assumption (or (not x24875) x11027)
+:assumption (or (not x5901) (not x7757))
+:assumption (or (not x11887) x1296)
+:assumption (or x15304 x2739)
+:assumption (or (not x28800) (not x24542))
+:assumption (or x17685 x17948)
+:assumption (or (not x7411) x9522)
+:assumption (or x10762 (not x29886) (not x28242) (not x12542) x6469 (not x23198) (not x24473) x24799)
+:assumption (or x28981 x10875)
+:assumption (or x2095 (not x31805))
+:assumption (or (not x29808) (not x3113))
+:assumption (or x8002 (not x9926) x23244 (not x6231) x1542)
+:assumption (or (not x16509) (not x20198) x9008)
+:assumption (or x17116 (not x24905))
+:assumption (or x3601 x8309)
+:assumption (or x23224 x14089)
+:assumption (or (not x9700) (not x9265) x9246 (not x1960) x15944 x12259 (not x30470))
+:assumption (or (not x18384) x27130)
+:assumption (or (not x29606) (not x9200))
+:assumption (or (not x8602) x14930)
+:assumption (or (not x6679) x4945)
+:assumption (or x6951 (not x22517))
+:assumption (or (not x485) x29392)
+:assumption (or x5886 x29092)
+:assumption (or x6326 (not x11745))
+:assumption (or (not x26993) (not x7876) x169)
+:assumption (or x5892 (not x423))
+:assumption (or x8002 x23244 (not x10613) (not x15230))
+:assumption (or x27705 x18441)
+:assumption (or x23577 (not x881))
+:assumption (or x21653 (not x22280))
+:assumption (or (not x18623) x19766 (not x18306) x6283 x26760 (not x18262))
+:assumption (or x25918 x25454)
+:assumption (or x20125 (not x30124))
+:assumption (or (not x28192) x20994)
+:assumption (or (not x30472) x30113)
+:assumption (or (not x15469) x6171 x23370)
+:assumption (or x25674 x24214)
+:assumption (or x8104 x28541)
+:assumption (or (not x458) x9519)
+:assumption (or x18630 x297)
+:assumption (or x24785 (not x8647))
+:assumption (or x6547 x1283 (not x1755) (not x6377) x26091 x26740 x29098 x776)
+:assumption (or (not x7821) x9008)
+:assumption (or x10587 x3199)
+:assumption (or (not x733) (not x20453))
+:assumption (or x19474 x22002)
+:assumption (or x18147 (not x3471))
+:assumption (or x18919 (not x1840))
+:assumption (or x21498 x23564)
+:assumption (or x5521 (not x29947))
+:assumption (or x30620 (not x3267))
+:assumption (or x22470 x18698)
+:assumption (or (not x2671) (not x7542))
+:assumption (or (not x8142) x3029 x11331 (not x3963) (not x21103) x30209 (not x7292) (not x24429) (not x23778))
+:assumption (or x8602 x28011 (not x17333))
+:assumption (or (not x12729) (not x16450))
+:assumption (or x30899 (not x17300))
+:assumption (or (not x5590) (not x22519))
+:assumption (or (not x2973) x18322)
+:assumption (or x16069 x447)
+:assumption (or (not x1718) (not x2366))
+:assumption (or x13939 x22300)
+:assumption (or x8229 x16357)
+:assumption (or x11321 (not x11851))
+:assumption (or x20235 x20627)
+:assumption (or (not x6209) x15795)
+:assumption (or x9923 x29253)
+:assumption (or (not x13111) x25036)
+:assumption (or x28466 (not x31011))
+:assumption (or (not x12817) x18667)
+:assumption (or (not x3253) (not x27424))
+:assumption (or x2547 (not x24628))
+:assumption (or x19505 x24472)
+:assumption (or x13704 x24817)
+:assumption (or x1623 (not x30856))
+:assumption (or x31831 (not x25403))
+:assumption (or x31695 x21662)
+:assumption (or x22531 x18543)
+:assumption (or (not x5241) x11546)
+:assumption (or x23895 x4134)
+:assumption (or x28659 x27459 x5601 (not x14322) x20268)
+:assumption (or x28549 (not x2632))
+:assumption (or (not x27163) x10641 x15473 (not x7252))
+:assumption (or (not x27625) x6349)
+:assumption (or (not x31549) (not x20457))
+:assumption (or (not x19128) (not x13252))
+:assumption (or (not x30392) x27515)
+:assumption (or (not x8203) (not x23819))
+:assumption (or (not x22908) (not x5528))
+:assumption (or x31585 x26699)
+:assumption (or (not x16222) x14531)
+:assumption (or (not x9051) (not x23780))
+:assumption (or (not x26793) x5903)
+:assumption (or (not x28828) (not x10113))
+:assumption (or x13005 (not x20494))
+:assumption (or (not x14459) x3001 (not x7022) (not x30582))
+:assumption (or (not x23399) (not x12538) (not x20779))
+:assumption (or (not x9967) x22121)
+:assumption (or x14970 (not x1498) (not x15620))
+:assumption (or (not x20635) (not x29606) x23244)
+:assumption (or x2782 x20114)
+:assumption (or x5224 x2719)
+:assumption (or (not x17682) (not x22937))
+:assumption (or x3516 (not x30159))
+:assumption (or (not x22648) x25152)
+:assumption (or (not x24249) (not x528))
+:assumption (or (not x25487) x11120)
+:assumption (or x11507 x31564)
+:assumption (or (not x14648) (not x8002))
+:assumption (or (not x3525) (not x845) (not x1393))
+:assumption (or x31699 (not x3089))
+:assumption (or x14705 x21912)
+:assumption (or x7625 x5179)
+:assumption (or (not x8689) (not x23757))
+:assumption (or x4559 (not x27306) x28318 x25493)
+:assumption (or (not x18859) (not x7813))
+:assumption (or x11952 (not x18308))
+:assumption (or (not x17552) x5070)
+:assumption (or x9008 (not x20411))
+:assumption (or x2218 x20426)
+:assumption (or x26601 (not x4451))
+:assumption (or x27868 (not x5700) (not x5230) x4796)
+:assumption (or (not x22509) x674 x6768 x28037 (not x18186) (not x16264) x14583 (not x31511) (not x1056))
+:assumption (or (not x20259) (not x8131))
+:assumption (or (not x13413) (not x24846) (not x2688) x4940)
+:assumption (or x50 x26762)
+:assumption (or x23544 (not x19558))
+:assumption (or (not x25366) x24947)
+:assumption (or x16426 x6313 x19750 x23244 x8002)
+:assumption (or (not x5088) (not x13577))
+:assumption (or x21297 (not x23129))
+:assumption (or (not x30154) (not x14453))
+:assumption (or x3435 x1161 (not x15234) x14455)
+:assumption (or x5433 x29728)
+:assumption (or (not x18558) (not x4026))
+:assumption (or (not x400) x3453)
+:assumption (or (not x11750) (not x24029) (not x29594) x455 (not x2937) (not x7255))
+:assumption (or x29013 (not x875))
+:assumption (or x25406 (not x868))
+:assumption (or (not x2930) (not x21451))
+:assumption (or x13235 (not x8162))
+:assumption (or x31108 (not x10502))
+:assumption (or x16455 (not x31401))
+:assumption (or x2627 (not x29573))
+:assumption (or x8344 (not x592) x23450 x27488)
+:assumption (or (not x23632) (not x16474))
+:assumption (or x22156 x9651 (not x17075))
+:assumption (or (not x15366) (not x3478) x31681)
+:assumption (or x24827 x15223)
+:assumption (or x21653 (not x23815) (not x14918))
+:assumption (or (not x952) (not x1884))
+:assumption (or (not x26297) (not x19015))
+:assumption (or (not x11358) (not x2473))
+:assumption (or x13404 x31650)
+:assumption (or (not x26668) x6108)
+:assumption (or (not x11197) x9436)
+:assumption (or (not x4489) (not x5358))
+:assumption (or x17175 (not x2377))
+:assumption (or (not x30621) (not x11702))
+:assumption (or x26535 x7186 x9638 x23522 (not x15392) x23364)
+:assumption (or x4955 (not x22935))
+:assumption (or (not x30084) (not x21014))
+:assumption (or (not x16149) x6)
+:assumption (or x21687 x13296)
+:assumption (or x23244 x5743 x25628)
+:assumption (or (not x21810) (not x30942))
+:assumption (or x29911 x22760 x16802)
+:assumption (or x10085 x25015)
+:assumption (or x11822 (not x11053))
+:assumption (or (not x1087) x14744)
+:assumption (or (not x17855) (not x30137))
+:assumption (or (not x2727) (not x8366))
+:assumption (or (not x26672) x6379 x20949 x4163 x4229)
+:assumption (or x10350 (not x4929))
+:assumption (or (not x20379) x27606)
+:assumption (or (not x13964) x15337 (not x28734) (not x31156) x26044)
+:assumption (or (not x7426) x20288)
+:assumption (or (not x15398) (not x31023))
+:assumption (or (not x31549) (not x22310))
+:assumption (or x20801 x3409)
+:assumption (or (not x21653) (not x11769))
+:assumption (or (not x20531) (not x11967))
+:assumption (or x29454 (not x22059))
+:assumption (or (not x25504) (not x13956))
+:assumption (or x13700 (not x5394))
+:assumption (or x5549 x21815)
+:assumption (or (not x26667) x18902)
+:assumption (or x5034 x14542 x29010 (not x14595))
+:assumption (or (not x23380) (not x8270))
+:assumption (or (not x16628) x4008)
+:assumption (or x21081 (not x26007) x16307)
+:assumption (or (not x798) x2869)
+:assumption (or x19526 x13687)
+:assumption (or x28172 (not x23706) x22784 x27740)
+:assumption (or (not x20295) (not x18916))
+:assumption (or (not x21626) x9024 x29393 x6679 x17591 x5302 x4686)
+:assumption (or (not x5986) x17172)
+:assumption (or (not x11319) (not x13551))
+:assumption (or x24523 (not x6330))
+:assumption (or x4345 x2069)
+:assumption (or (not x31105) (not x24258))
+:assumption (or x24722 x19442)
+:assumption (or (not x11915) (not x20953) (not x18508) (not x4582))
+:assumption (or x15116 x22063)
+:assumption (or (not x25272) x6523)
+:assumption (or (not x23244) x19281)
+:assumption (or (not x6299) x28928 (not x5202) x9303 (not x522))
+:assumption (or x6256 x8961)
+:assumption (or (not x15492) x3873)
+:assumption (or (not x21892) (not x11046))
+:assumption (or x21298 (not x1299))
+:assumption (or x4111 x28597)
+:assumption (or x24998 (not x24542) x29228)
+:assumption (or x15627 (not x907))
+:assumption (or (not x15681) (not x11654))
+:assumption (or (not x2419) (not x4259))
+:assumption (or (not x13956) (not x30325) x27169)
+:assumption (or (not x25737) (not x15549))
+:assumption (or x23615 (not x28991))
+:assumption (or (not x4881) (not x3340))
+:assumption (or (not x14267) x4691)
+:assumption (or (not x27581) x18042 x2642 (not x14148))
+:assumption (or x310 (not x5962))
+:assumption (or x24371 x12397)
+:assumption (or x15070 x16311)
+:assumption (or x16456 x16802)
+:assumption (or (not x16659) x13033)
+:assumption (or x12167 x16374 x2404)
+:assumption (or (not x2278) x8420)
+:assumption (or (not x734) x31357)
+:assumption (or x20103 (not x7891))
+:assumption (or x18760 (not x25724))
+:assumption (or x23861 (not x8011))
+:assumption (or (not x15331) (not x22035))
+:assumption (or x21026 x21157 (not x241) (not x22072) (not x25025))
+:assumption (or x18872 (not x29294))
+:assumption (or x19661 x29844)
+:assumption (or x16450 (not x10295))
+:assumption (or (not x202) (not x112))
+:assumption (or (not x5588) x3638)
+:assumption (or (not x17976) (not x23628))
+:assumption (or (not x911) x19950)
+:assumption (or (not x18227) (not x16510) x28541 (not x21815) (not x16374))
+:assumption (or (not x15244) (not x27954))
+:assumption (or x15130 (not x27829))
+:assumption (or x15522 x22172)
+:assumption (or (not x26663) (not x23752))
+:assumption (or x6381 x29577)
+:assumption (or x22752 (not x10017) x2429 x778 (not x1041))
+:assumption (or x17881 (not x13061))
+:assumption (or x30703 x9897 (not x28753) (not x11281))
+:assumption (or x29429 (not x26742))
+:assumption (or (not x2945) x11644 x11387)
+:assumption (or x8002 (not x8019) x21502 (not x3338) x23244)
+:assumption (or x24756 x9887)
+:assumption (or x16934 x13096)
+:assumption (or x7785 (not x105))
+:assumption (or (not x11568) (not x10805))
+:assumption (or x5124 x5149)
+:assumption (or (not x15504) (not x21653))
+:assumption (or x9350 x13857)
+:assumption (or x15169 (not x28373))
+:assumption (or (not x22228) (not x21298) x5646)
+:assumption (or x31660 x22735)
+:assumption (or x24427 (not x26310))
+:assumption (or (not x21657) (not x15083))
+:assumption (or (not x1582) (not x13449))
+:assumption (or x15570 (not x20679))
+:assumption (or x4849 x13034)
+:assumption (or x10686 x9957)
+:assumption (or x23848 (not x3759))
+:assumption (or x4389 (not x31782) x6552 (not x8002))
+:assumption (or x18190 (not x4504))
+:assumption (or x1364 x30134)
+:assumption (or (not x29572) (not x27359))
+:assumption (or (not x3409) x26431 x10579)
+:assumption (or (not x13576) (not x17194))
+:assumption (or (not x4689) x31024 x18203)
+:assumption (or (not x2701) (not x29377))
+:assumption (or (not x14116) (not x2187))
+:assumption (or x25903 x27932 x27958 (not x5035) x24303 x23272 x5188 (not x28614))
+:assumption (or (not x1949) (not x30667))
+:assumption (or (not x31697) (not x24076))
+:assumption (or (not x24666) x2838)
+:assumption (or (not x9025) x12242 x7338)
+:assumption (or (not x6363) x7767)
+:assumption (or x1096 x25019)
+:assumption (or x4551 x21641 (not x19946) x22855 (not x1082) (not x3228))
+:assumption (or (not x14006) x19992)
+:assumption (or (not x21319) x11876)
+:assumption (or x3314 (not x20660))
+:assumption (or (not x5531) x10437)
+:assumption (or (not x16763) (not x9507))
+:assumption (or (not x19351) (not x12734))
+:assumption (or (not x27980) x27279)
+:assumption (or (not x6606) x27618)
+:assumption (or (not x5786) (not x28344))
+:assumption (or x29606 x9529 (not x801) x6655 x25689 (not x8418) x31134)
+:assumption (or x16809 (not x30263))
+:assumption (or (not x22507) (not x16025))
+:assumption (or x221 (not x1582))
+:assumption (or x14 (not x4822))
+:assumption (or (not x12865) (not x7980))
+:assumption (or (not x25111) x15885)
+:assumption (or (not x4215) x1242)
+:assumption (or x18859 x6643 (not x25722))
+:assumption (or (not x17995) (not x6956))
+:assumption (or (not x31342) (not x16482))
+:assumption (or x117 (not x22411))
+:assumption (or (not x14408) x30238)
+:assumption (or (not x9066) x23985)
+:assumption (or (not x14421) (not x20782))
+:assumption (or x17639 x19501)
+:assumption (or x25896 (not x17083))
+:assumption (or (not x31513) x13824)
+:assumption (or x29267 x9449 (not x1393))
+:assumption (or x30846 (not x11227))
+:assumption (or (not x5044) x28005)
+:assumption (or (not x30823) x18869)
+:assumption (or x13481 (not x5469))
+:assumption (or (not x9347) (not x23244))
+:assumption (or x7435 (not x9514))
+:assumption (or x10036 x18764)
+:assumption (or (not x25109) (not x23316))
+:assumption (or (not x23244) (not x17359) x3796)
+:assumption (or x15917 x12829 x6009)
+:assumption (or (not x4505) x9710 x27736)
+:assumption (or x8680 (not x25633))
+:assumption (or x10482 x11310)
+:assumption (or (not x13778) (not x1734))
+:assumption (or (not x19689) x2690)
+:assumption (or x6990 (not x25732) (not x25135) x25287 x24969 x700)
+:assumption (or (not x22958) x9268)
+:assumption (or (not x20461) (not x1734))
+:assumption (or (not x16518) x28616)
+:assumption (or (not x26110) (not x10672))
+:assumption (or (not x13154) (not x30500))
+:assumption (or x28487 x196)
+:assumption (or x30956 x19199)
+:assumption (or (not x21761) x5446)
+:assumption (or (not x27611) x31802)
+:assumption (or x10190 x23648 (not x12871))
+:assumption (or (not x29974) x28971)
+:assumption (or x7001 (not x28622))
+:assumption (or x30644 (not x21582))
+:assumption (or (not x8513) (not x7065))
+:assumption (or (not x8459) (not x7573))
+:assumption (or (not x12169) (not x8602))
+:assumption (or (not x14993) x23244 x13487)
+:assumption (or x3226 x12923)
+:assumption (or (not x11237) x29451)
+:assumption (or (not x4220) x15179)
+:assumption (or (not x26899) x29845)
+:assumption (or x21810 x30138 (not x24404))
+:assumption (or x15668 (not x27943) (not x23579) x26905 (not x24406) x25960 (not x26142) (not x21323))
+:assumption (or x29457 (not x16761))
+:assumption (or x18514 (not x1503) x29902)
+:assumption (or (not x18502) (not x30287))
+:assumption (or (not x8328) (not x14552))
+:assumption (or x16353 (not x11137))
+:assumption (or (not x18036) (not x28529))
+:assumption (or x27628 (not x23280))
+:assumption (or (not x13797) x827)
+:assumption (or x14455 (not x17640))
+:assumption (or (not x25659) x1203 (not x1580))
+:assumption (or (not x10067) x6291)
+:assumption (or (not x22681) (not x15217))
+:assumption (or x891 x21604)
+:assumption (or (not x2704) (not x6644))
+:assumption (or (not x700) x24739)
+:assumption (or x9701 x13823)
+:assumption (or (not x12863) (not x5248))
+:assumption (or (not x3538) x13092 (not x20134) (not x5101) x3060)
+:assumption (or x7774 (not x10909))
+:assumption (or (not x10238) (not x31053))
+:assumption (or (not x5453) (not x4504))
+:assumption (or x24058 x21979 (not x13956))
+:assumption (or (not x29772) x1578)
+:assumption (or x26854 x24366)
+:assumption (or (not x8760) (not x20361))
+:assumption (or (not x6180) x4415)
+:assumption (or (not x6412) (not x19992))
+:assumption (or x6363 x24013)
+:assumption (or (not x14149) x2555 x29541)
+:assumption (or (not x26217) (not x23699))
+:assumption (or x16958 (not x11836))
+:assumption (or x8658 (not x29609))
+:assumption (or x26661 x16329)
+:assumption (or x25366 x27735)
+:assumption (or x25224 x10608)
+:assumption (or (not x19617) x4879)
+:assumption (or x2016 (not x16239))
+:assumption (or (not x31063) (not x24892))
+:assumption (or (not x21281) x464)
+:assumption (or (not x20015) x8002 x927 (not x9413) (not x4790) x28933)
+:assumption (or x26002 x18078 x13419)
+:assumption (or x1632 x20327)
+:assumption (or (not x6819) x27862)
+:assumption (or x1582 x27567)
+:assumption (or x7984 (not x5231))
+:assumption (or x23834 (not x6831))
+:assumption (or (not x21653) x29912)
+:assumption (or x12260 (not x4174))
+:assumption (or x1693 x18658 x6879 (not x30954) (not x21247))
+:assumption (or (not x16149) (not x21923) x22795 x18379)
+:assumption (or x19498 x17691)
+:assumption (or (not x23669) (not x22454))
+:assumption (or x7147 (not x25336))
+:assumption (or x15621 x22682)
+:assumption (or x19909 x18773)
+:assumption (or (not x6067) x12513)
+:assumption (or (not x27479) x20172)
+:assumption (or (not x20095) x6348)
+:assumption (or (not x9229) (not x23832))
+:assumption (or x3091 x7205)
+:assumption (or (not x31608) (not x27860))
+:assumption (or (not x12644) (not x433))
+:assumption (or (not x20502) x27233)
+:assumption (or (not x19938) x1321 (not x19401) x13782 (not x14034))
+:assumption (or x10131 x1609)
+:assumption (or x29256 x8002 x23244 x24710)
+:assumption (or x9872 x22089)
+:assumption (or (not x29699) x31601)
+:assumption (or (not x23648) x12871)
+:assumption (or x8493 (not x17217))
+:assumption (or (not x3666) (not x6351))
+:assumption (or (not x15866) x29661)
+:assumption (or (not x22083) x1014)
+:assumption (or (not x11023) x28055)
+:assumption (or (not x25476) (not x13956))
+:assumption (or (not x18017) (not x27211))
+:assumption (or x28 (not x13938))
+:assumption (or (not x29027) (not x19147))
+:assumption (or (not x28977) x3846)
+:assumption (or x23430 x31395)
+:assumption (or x8533 (not x27915))
+:assumption (or x31782 (not x27101))
+:assumption (or (not x9500) x6616)
+:assumption (or (not x7254) x19921)
+:assumption (or (not x8751) (not x22767))
+:assumption (or x12334 x7893)
+:assumption (or x26148 x26468)
+:assumption (or (not x543) x1793 x21339 (not x30113))
+:assumption (or (not x11020) x8975)
+:assumption (or x27026 x16260 (not x9008))
+:assumption (or x12705 x1582)
+:assumption (or (not x9008) (not x3598) x12323)
+:assumption (or x15837 (not x24306))
+:assumption (or (not x4005) (not x2776))
+:assumption (or (not x22749) (not x13219))
+:assumption (or x11418 x18826)
+:assumption (or x26418 (not x20699))
+:assumption (or x12330 x51)
+:assumption (or (not x1275) (not x16090))
+:assumption (or (not x18425) (not x3675))
+:assumption (or x1488 x25753)
+:assumption (or x25126 (not x7705))
+:assumption (or (not x23161) x24012)
+:assumption (or x5668 x5889 x21432)
+:assumption (or x8439 x28834)
+:assumption (or x18773 x18383)
+:assumption (or x2122 (not x5503))
+:assumption (or x2309 x8546 x4242 x24015)
+:assumption (or (not x10874) x20430)
+:assumption (or (not x3975) x8581)
+:assumption (or (not x21226) (not x7664))
+:assumption (or x25413 x25772)
+:assumption (or x12422 (not x18605))
+:assumption (or x5747 (not x25655))
+:assumption (or x30570 x7886)
+:assumption (or x21716 (not x23351))
+:assumption (or (not x15980) x7195)
+:assumption (or x18434 (not x24724))
+:assumption (or (not x9756) x29818)
+:assumption (or x15402 x499)
+:assumption (or x25659 x2456)
+:assumption (or (not x5626) x10872)
+:assumption (or x25653 x19637)
+:assumption (or (not x3684) (not x19152))
+:assumption (or x15297 (not x20982))
+:assumption (or x20039 (not x20666))
+:assumption (or x15952 (not x19619))
+:assumption (or (not x10010) (not x30468))
+:assumption (or (not x1087) (not x18918))
+:assumption (or (not x18763) x27385)
+:assumption (or x25413 (not x15083))
+:assumption (or (not x20452) (not x29871))
+:assumption (or x24079 x10462)
+:assumption (or x27405 (not x12578) x13092)
+:assumption (or (not x1178) x2358)
+:assumption (or x8602 x27791)
+:assumption (or x3427 (not x8922))
+:assumption (or x10729 x13407)
+:assumption (or (not x11631) (not x16721))
+:assumption (or (not x15224) x15949)
+:assumption (or x25780 (not x6462) x19948)
+:assumption (or x22194 x25067)
+:assumption (or x16924 (not x26960))
+:assumption (or x23891 (not x18976))
+:assumption (or x14521 x8174)
+:assumption (or (not x27267) x1149)
+:assumption (or x16822 (not x13195))
+:assumption (or (not x28300) x8055)
+:assumption (or (not x1037) (not x28782))
+:assumption (or x19864 x23971)
+:assumption (or x8112 (not x29493))
+:assumption (or (not x20092) (not x19723) x795 x22259 (not x19159) x836 (not x21957) (not x14888))
+:assumption (or (not x442) (not x20196))
+:assumption (or x24948 x26140)
+:assumption (or (not x2427) x22295)
+:assumption (or (not x29442) x7979)
+:assumption (or (not x15552) x16312)
+:assumption (or (not x19338) x2615)
+:assumption (or (not x21566) x1844)
+:assumption (or x21298 x1097)
+:assumption (or (not x23758) x4000)
+:assumption (or x2127 (not x2879))
+:assumption (or (not x27062) x31681)
+:assumption (or x26997 x169)
+:assumption (or x16583 x27539)
+:assumption (or x8587 x24858)
+:assumption (or x13536 x7834)
+:assumption (or x23906 (not x9911))
+:assumption (or (not x5095) x8547)
+:assumption (or x22604 x20071)
+:assumption (or x2438 x12190)
+:assumption (or x10780 x21554)
+:assumption (or (not x15245) (not x25158) x12825 (not x8165) x29336)
+:assumption (or x22384 (not x31484))
+:assumption (or (not x1472) (not x30495) (not x5367))
+:assumption (or x18889 x30365)
+:assumption (or x14640 x22376)
+:assumption (or (not x2443) (not x27219))
+:assumption (or x31895 (not x13487))
+:assumption (or x2353 x5554)
+:assumption (or x9413 x21594)
+:assumption (or (not x26244) x13871)
+:assumption (or x6453 (not x20739))
+:assumption (or x8532 x23786)
+:assumption (or x3361 x3151)
+:assumption (or (not x27822) (not x11944))
+:assumption (or (not x19240) x11886)
+:assumption (or (not x30816) (not x288))
+:assumption (or (not x28441) x3859)
+:assumption (or (not x9112) x6383 (not x8504) (not x21218))
+:assumption (or (not x13015) (not x29916) (not x1393))
+:assumption (or x11711 (not x22351))
+:assumption (or x19711 (not x3730))
+:assumption (or x12895 (not x10073))
+:assumption (or (not x30447) (not x20887))
+:assumption (or x3796 (not x27481))
+:assumption (or x31327 x31265)
+:assumption (or x18138 (not x29865))
+:assumption (or (not x4062) x27911)
+:assumption (or x2524 (not x31930))
+:assumption (or x6226 (not x30977))
+:assumption (or (not x1918) (not x11291) x20197 x10449 (not x20466) (not x5528))
+:assumption (or x19959 (not x8695))
+:assumption (or x8002 x14234 (not x20613))
+:assumption (or x13487 (not x23244) (not x14188))
+:assumption (or x3822 x17791)
+:assumption (or x13184 x918 x5675 (not x5354) (not x17382))
+:assumption (or x16089 x14407)
+:assumption (or (not x16963) (not x21018))
+:assumption (or x20664 x16510)
+:assumption (or x28973 x708)
+:assumption (or (not x9206) x24129)
+:assumption (or x30517 x20041)
+:assumption (or (not x480) x25831)
+:assumption (or (not x18594) x27323 (not x16185))
+:assumption (or (not x25659) (not x24915) (not x13103))
+:assumption (or x13784 (not x22215) (not x25931) (not x7532))
+:assumption (or x25399 (not x12573))
+:assumption (or x24977 (not x17193))
+:assumption (or x20864 x16745)
+:assumption (or (not x11188) x18082 x27503 (not x7537) (not x13524) (not x7367))
+:assumption (or x3821 x31829 x28541 x9925 (not x26103) x23370)
+:assumption (or (not x9554) (not x3069))
+:assumption (or (not x18182) x165)
+:assumption (or (not x27939) x29984 x24380 x16872 x2393 (not x31100))
+:assumption (or (not x2712) (not x17507) x571 (not x22977))
+:assumption (or (not x13956) x14517 (not x1792))
+:assumption (or x23821 x12387)
+:assumption (or (not x16165) x2666)
+:assumption (or x18509 (not x16190))
+:assumption (or x20703 (not x4624))
+:assumption (or (not x17064) (not x20961))
+:assumption (or (not x18859) (not x10347) x23019)
+:assumption (or x24413 x24655 x16025)
+:assumption (or x10949 x27218)
+:assumption (or (not x15227) (not x11369))
+:assumption (or x10142 x31681)
+:assumption (or (not x29235) (not x31900))
+:assumption (or x19612 x18277)
+:assumption (or (not x16365) (not x23707))
+:assumption (or x19889 (not x25382))
+:assumption (or x28614 (not x25177))
+:assumption (or x29094 x7470 x12614 (not x27391) x21815 x22954)
+:assumption (or (not x9676) x19143)
+:assumption (or x6290 x14881)
+:assumption (or x9842 (not x25498))
+:assumption (or (not x28213) x24747)
+:assumption (or (not x16592) (not x10914))
+:assumption (or (not x4320) x26928)
+:assumption (or (not x21382) (not x28264))
+:assumption (or (not x29964) (not x11038))
+:assumption (or x14522 (not x22887))
+:assumption (or x21633 x19811)
+:assumption (or x29959 x19039 x11398)
+:assumption (or (not x8002) x588 (not x23244))
+:assumption (or x17777 x10819)
+:assumption (or (not x693) x18124)
+:assumption (or x3040 x18471)
+:assumption (or (not x8037) x30595)
+:assumption (or x28991 (not x7814) x11370)
+:assumption (or (not x8827) x9689)
+:assumption (or x861 (not x25598))
+:assumption (or x6381 (not x5911))
+:assumption (or (not x3395) x754)
+:assumption (or x10326 x3619)
+:assumption (or x26458 (not x22765))
+:assumption (or (not x8658) (not x6276))
+:assumption (or x31780 (not x29333))
+:assumption (or x20841 x20651)
+:assumption (or x31619 (not x27686))
+:assumption (or x25659 x15225 x22210)
+:assumption (or (not x6432) x29003)
+:assumption (or x15515 (not x17707))
+:assumption (or x4726 x6466)
+:assumption (or (not x1058) x16025)
+:assumption (or x30935 (not x19491))
+:assumption (or (not x14036) (not x13316))
+:assumption (or (not x25341) x31878)
+:assumption (or x8002 (not x29725))
+:assumption (or (not x6697) (not x2398))
+:assumption (or x24274 (not x15681))
+:assumption (or (not x13355) (not x16992))
+:assumption (or (not x26451) (not x26149))
+:assumption (or x802 x21815)
+:assumption (or x16869 (not x10202) (not x21653))
+:assumption (or (not x15446) (not x13490))
+:assumption (or (not x4902) x25000)
+:assumption (or x23240 (not x658))
+:assumption (or x30757 x12630)
+:assumption (or (not x31908) x21438)
+:assumption (or (not x28384) (not x1941))
+:assumption (or (not x16478) x3901)
+:assumption (or (not x23244) (not x20661) x21972 x17889 x11751 x5319)
+:assumption (or (not x16025) (not x24413))
+:assumption (or x20584 x19151)
+:assumption (or (not x23213) x15973)
+:assumption (or x4497 (not x6188))
+:assumption (or x7949 (not x21910))
+:assumption (or x16595 (not x31573))
+:assumption (or (not x4103) (not x17400))
+:assumption (or (not x22531) (not x17740))
+:assumption (or x16660 x4560)
+:assumption (or x9551 x29599)
+:assumption (or (not x26335) x1428)
+:assumption (or x15106 x14974)
+:assumption (or x29350 x28348)
+:assumption (or (not x13644) x5852)
+:assumption (or x28894 x14653)
+:assumption (or (not x12307) x12062 x8457 (not x24212))
+:assumption (or x15885 x7358 x25258)
+:assumption (or (not x27375) (not x475))
+:assumption (or (not x10647) (not x6173))
+:assumption (or (not x16145) x18155)
+:assumption (or x6919 (not x18595))
+:assumption (or x25778 (not x31161))
+:assumption (or x14522 (not x17912))
+:assumption (or x15721 (not x28500))
+:assumption (or (not x18859) x23248 (not x12563))
+:assumption (or (not x13145) x26692)
+:assumption (or x10921 x13245)
+:assumption (or x29483 x19253)
+:assumption (or x24814 (not x13821) x37 x19954)
+:assumption (or x9875 (not x17960))
+:assumption (or x20234 x22516)
+:assumption (or x31202 x11946)
+:assumption (or (not x5394) (not x463))
+:assumption (or (not x5896) x5100)
+:assumption (or (not x5710) x31007)
+:assumption (or (not x16721) (not x19901))
+:assumption (or (not x24083) (not x12564) (not x13523) (not x18496) x10081)
+:assumption (or x24536 (not x26531))
+:assumption (or (not x288) x5957)
+:assumption (or (not x2323) (not x23214) (not x31115) x4492 (not x10257) x30815)
+:assumption (or x13283 x5504)
+:assumption (or (not x2096) (not x9135))
+:assumption (or x24377 (not x22828))
+:assumption (or (not x8642) x18690)
+:assumption (or (not x28446) (not x20918))
+:assumption (or (not x2629) x30019)
+:assumption (or x9226 x21192)
+:assumption (or x12429 x24995 x23160 (not x14777) (not x4041) x20750 (not x14747) (not x19233))
+:assumption (or x30380 (not x14982) (not x18722) x26789 x31422 x21360 (not x14938))
+:assumption (or (not x2195) (not x1499))
+:assumption (or x24161 (not x5831))
+:assumption (or (not x23764) x3700)
+:assumption (or (not x28703) x19528)
+:assumption (or (not x12360) x18385)
+:assumption (or (not x31459) (not x14972) x11797 x485)
+:assumption (or x20134 (not x11783) (not x12163) x341)
+:assumption (or x9399 (not x4283) x13415)
+:assumption (or (not x20061) x8186)
+:assumption (or (not x18745) (not x225))
+:assumption (or (not x18657) (not x8002))
+:assumption (or x24801 x3272)
+:assumption (or x13441 x8908 x4110 x30266 x6300 x22154)
+:assumption (or (not x9186) (not x28973))
+:assumption (or x26041 x3790)
+:assumption (or (not x9779) x3664)
+:assumption (or x27180 x1666)
+:assumption (or x15915 x14414)
+:assumption (or x29305 x18273)
+:assumption (or (not x827) (not x1879) (not x18205))
+:assumption (or x15834 x5597 x14435)
+:assumption (or (not x13731) (not x4069))
+:assumption (or (not x12764) (not x725))
+:assumption (or x25244 x4983)
+:assumption (or (not x23085) x17823 (not x31764))
+:assumption (or x30124 (not x19758))
+:assumption (or x23930 x27418)
+:assumption (or (not x7982) (not x3784))
+:assumption (or x24105 (not x22419))
+:assumption (or (not x20781) (not x3782))
+:assumption (or x6482 x10143)
+:assumption (or (not x26618) x25224)
+:assumption (or (not x5069) (not x21387))
+:assumption (or x21658 x1332)
+:assumption (or x16602 x31235)
+:assumption (or x9453 x23927 (not x26276))
+:assumption (or (not x12121) x3287)
+:assumption (or (not x12877) (not x4467) (not x2281) x20223)
+:assumption (or x27580 x8408)
+:assumption (or (not x6951) x6695)
+:assumption (or (not x2911) x23247 (not x30113) (not x10293))
+:assumption (or (not x23958) (not x13734) x23104 x19305)
+:assumption (or x13338 (not x23742))
+:assumption (or (not x16295) x5021 x31282 (not x29184))
+:assumption (or x8002 x14517 (not x3552) x13956 (not x9466) x23244)
+:assumption (or x30151 x9531 x30510)
+:assumption (or x14233 (not x24413))
+:assumption (or (not x2426) x4672)
+:assumption (or x25838 x4312)
+:assumption (or x12958 (not x10918))
+:assumption (or x21402 (not x3751))
+:assumption (or x773 (not x31924))
+:assumption (or x15897 (not x4284) (not x20403) (not x9231) (not x26366) x1393 x6447 x16611)
+:assumption (or (not x8667) (not x3583))
+:assumption (or x1485 x27019)
+:assumption (or x30893 (not x9398))
+:assumption (or (not x1860) (not x29893))
+:assumption (or x25023 (not x24380))
+:assumption (or (not x7041) (not x14935))
+:assumption (or x17359 x29532 x11281 x31890)
+:assumption (or x26191 x21594)
+:assumption (or x16527 (not x29394) x24448 x16385 x24422 x21 (not x26481))
+:assumption (or (not x14169) (not x12600))
+:assumption (or (not x13956) x19611)
+:assumption (or (not x2816) (not x5528) (not x507) x3516 (not x9008))
+:assumption (or x17045 (not x20631))
+:assumption (or x2973 x9144 x29787 x22358 (not x29031) x8229 x16143 (not x8873) (not x26146))
+:assumption (or (not x15207) x25214)
+:assumption (or (not x9743) (not x25247))
+:assumption (or x26932 x6068 x3845 (not x14503) (not x27260))
+:assumption (or x10392 x1768)
+:assumption (or x21584 (not x19126))
+:assumption (or x25260 x18168)
+:assumption (or x10218 (not x30887))
+:assumption (or x21671 x9717)
+:assumption (or x29364 x28554)
+:assumption (or x18936 x6351 x3666 (not x1399))
+:assumption (or x26999 (not x26067) (not x25401) x301 x22099 x27132 (not x30002))
+:assumption (or (not x8002) (not x13883))
+:assumption (or (not x11856) x30686)
+:assumption (or (not x21163) x20003)
+:assumption (or (not x13576) (not x26778))
+:assumption (or (not x4865) x2564)
+:assumption (or (not x14403) (not x15551))
+:assumption (or (not x17418) (not x30854) x28242)
+:assumption (or x22946 x17047)
+:assumption (or (not x28760) x12593)
+:assumption (or x964 x21752)
+:assumption (or x16368 x21568)
+:assumption (or x29971 (not x22532))
+:assumption (or (not x8002) (not x6259) (not x12445))
+:assumption (or (not x19244) (not x31190))
+:assumption (or x27492 (not x29357))
+:assumption (or x15996 (not x24273))
+:assumption (or x23177 x28122)
+:assumption (or x18847 (not x20547))
+:assumption (or (not x20859) (not x13738))
+:assumption (or (not x19997) (not x22531))
+:assumption (or x20071 x18069)
+:assumption (or x2843 (not x25285))
+:assumption (or (not x17016) x28583)
+:assumption (or x3545 x29330)
+:assumption (or (not x26602) x27277 (not x1393))
+:assumption (or x28758 (not x23927))
+:assumption (or (not x25192) x31874)
+:assumption (or x25294 x1496)
+:assumption (or (not x30010) x26466)
+:assumption (or (not x5580) (not x3738))
+:assumption (or x15512 (not x21298))
+:assumption (or (not x7947) (not x8989))
+:assumption (or x29606 (not x30347))
+:assumption (or x25371 x1793 x15743 x27569 (not x29135))
+:assumption (or x30790 (not x10512))
+:assumption (or (not x17674) (not x20754))
+:assumption (or x27900 (not x24964) x1621 x22852)
+:assumption (or (not x18064) x19435)
+:assumption (or (not x1778) (not x11889))
+:assumption (or (not x9572) (not x3753))
+:assumption (or (not x5587) x2498)
+:assumption (or x23244 (not x10279) x18472)
+:assumption (or (not x25825) (not x6330))
+:assumption (or x9069 x17876)
+:assumption (or x25201 x24692)
+:assumption (or (not x4528) x20925)
+:assumption (or x28314 (not x10239))
+:assumption (or (not x4881) x9452)
+:assumption (or x17761 (not x7693))
+:assumption (or (not x13928) x13521)
+:assumption (or (not x22547) (not x9008) (not x5528) x25818 x4378)
+:assumption (or x30124 x14640)
+:assumption (or x19100 (not x9779))
+:assumption (or (not x17235) (not x20139))
+:assumption (or x25897 x29272)
+:assumption (or (not x24058) x22699 (not x1918) x10449 x20197 (not x11291))
+:assumption (or (not x28633) x9305)
+:assumption (or x8320 (not x23750))
+:assumption (or (not x27966) (not x20150))
+:assumption (or (not x2500) x12687 (not x30965) (not x6771))
+:assumption (or (not x12960) (not x26626))
+:assumption (or (not x24763) x25304)
+:assumption (or (not x24481) (not x29338))
+:assumption (or (not x10907) (not x13054))
+:assumption (or (not x27636) (not x22842) x5448)
+:assumption (or (not x20087) (not x5917))
+:assumption (or (not x21978) (not x19568))
+:assumption (or (not x28959) x17161)
+:assumption (or x2588 x1393)
+:assumption (or (not x11792) x24007)
+:assumption (or (not x964) x15529)
+:assumption (or (not x25536) (not x23244))
+:assumption (or (not x30138) (not x27853) (not x16100) (not x7771))
+:assumption (or x6412 (not x17343))
+:assumption (or (not x24414) x18860 (not x17778) x22239 (not x1628) (not x6129) (not x30990) (not x27110))
+:assumption (or x20145 x28912 (not x29649))
+:assumption (or (not x27834) (not x24423))
+:assumption (or x9229 (not x21729))
+:assumption (or x21773 x31682)
+:assumption (or x12993 (not x6780))
+:assumption (or x11964 (not x30925))
+:assumption (or (not x23865) (not x697))
+:assumption (or (not x1283) x26704)
+:assumption (or x16910 (not x29516))
+:assumption (or x17460 x27498 x31342 x17380 x6573 x1040 (not x10355) (not x15123))
+:assumption (or x22945 x6149)
+:assumption (or (not x3295) (not x19085))
+:assumption (or x25825 x13593 (not x24523) x29862 x31552)
+:assumption (or (not x4084) (not x7222))
+:assumption (or (not x23244) x3028)
+:assumption (or x5711 (not x21666))
+:assumption (or x31072 x29468)
+:assumption (or x30930 x7983)
+:assumption (or (not x7432) x7701)
+:assumption (or x14621 x31099)
+:assumption (or x18618 x18377)
+:assumption (or (not x9197) (not x11130))
+:assumption (or x18741 (not x12565))
+:assumption (or (not x9317) x8658 x18399)
+:assumption (or (not x3763) x11729)
+:assumption (or (not x13692) x6370)
+:assumption (or x28535 x10227)
+:assumption (or x8467 (not x22338))
+:assumption (or (not x26327) (not x25240))
+:assumption (or x8103 (not x25376) (not x1347))
+:assumption (or x13820 x12142)
+:assumption (or (not x3275) (not x2331) x11994 x5588 (not x3638))
+:assumption (or (not x14823) x1393)
+:assumption (or (not x718) (not x9025) (not x288))
+:assumption (or (not x27109) (not x24483))
+:assumption (or x20030 (not x20793))
+:assumption (or x7535 (not x10401))
+:assumption (or (not x23088) x9008)
+:assumption (or x1236 (not x25098))
+:assumption (or x2288 (not x6444) (not x19751) x10304)
+:assumption (or (not x5367) x24553 x17692 (not x10100))
+:assumption (or (not x6728) x1974)
+:assumption (or (not x17927) x13682)
+:assumption (or (not x14510) x16368)
+:assumption (or x12138 x8280)
+:assumption (or (not x9415) x19961 (not x28539) x16117)
+:assumption (or (not x14966) (not x20597) x13443 x9157 (not x17566) x5788 (not x26255))
+:assumption (or x27092 (not x21609) (not x14091) x31356 x12264)
+:assumption (or (not x16931) (not x3852) x9570 (not x8571) (not x2083) x19352 x23690)
+:assumption (or (not x30293) x7992)
+:assumption (or x5758 (not x252))
+:assumption (or x7608 (not x23244))
+:assumption (or x6924 x301)
+:assumption (or x14760 x3087 (not x27957) x11655 x14846 x17494 (not x25961) (not x22585))
+:assumption (or (not x22903) x29925)
+:assumption (or (not x12617) x25659)
+:assumption (or x25008 x14283)
+:assumption (or (not x7260) x6823)
+:assumption (or (not x17163) (not x1786))
+:assumption (or x1190 x3646)
+:assumption (or (not x26785) (not x12647))
+:assumption (or (not x17029) (not x20238))
+:assumption (or x6358 (not x22))
+:assumption (or (not x5983) x8083)
+:assumption (or x24797 (not x15800))
+:assumption (or (not x22672) x29442)
+:assumption (or x8742 (not x11808))
+:assumption (or (not x8602) x29717 x29937)
+:assumption (or (not x26390) (not x31080) x20259 x20112 (not x26803))
+:assumption (or (not x18457) x13334)
+:assumption (or x24012 (not x19340) x4490 x18666)
+:assumption (or (not x21028) (not x19214))
+:assumption (or (not x26021) x21600)
+:assumption (or x16510 (not x28949))
+:assumption (or x15621 x20330 x5583)
+:assumption (or (not x11907) x7835)
+:assumption (or (not x15213) x13532)
+:assumption (or (not x3417) (not x23570))
+:assumption (or (not x28724) (not x28261))
+:assumption (or (not x1898) x2022)
+:assumption (or (not x5433) (not x8840) x31925 (not x29461) (not x20558) (not x29651) (not x14126) x8224)
+:assumption (or (not x26390) (not x18037))
+:assumption (or x20416 (not x25366) x17698 x19428)
+:assumption (or x4798 (not x18712))
+:assumption (or (not x21784) (not x24850))
+:assumption (or (not x4389) (not x6552))
+:assumption (or (not x27736) (not x11284))
+:assumption (or x24739 (not x8021))
+:assumption (or x3782 x30524)
+:assumption (or x7393 x25951)
+:assumption (or x17499 x30376 (not x17585) (not x21298))
+:assumption (or (not x20432) x23512)
+:assumption (or (not x919) x25366)
+:assumption (or (not x13018) x27249)
+:assumption (or x16304 x5567)
+:assumption (or x5348 (not x7840))
+:assumption (or (not x21081) (not x4827))
+:assumption (or (not x29381) x8218)
+:assumption (or (not x18472) (not x23244))
+:assumption (or (not x21203) (not x15198))
+:assumption (or x15060 x29831)
+:assumption (or (not x29245) (not x17355))
+:assumption (or (not x15014) (not x13819))
+:assumption (or (not x26056) x15529)
+:assumption (or (not x14095) x4900)
+:assumption (or (not x15221) x20913)
+:assumption (or x10136 (not x9544))
+:assumption (or (not x25809) (not x20346))
+:assumption (or x15110 (not x14792))
+:assumption (or (not x10786) x19630)
+:assumption (or x13700 x16510)
+:assumption (or (not x142) x21591 (not x6781))
+:assumption (or x31194 (not x23139))
+:assumption (or (not x18042) (not x10511))
+:assumption (or x135 (not x28455) x20872)
+:assumption (or (not x16648) x7121)
+:assumption (or (not x27532) (not x30310) x10212)
+:assumption (or x21546 (not x27089))
+:assumption (or x3782 x8839)
+:assumption (or x19105 x5084)
+:assumption (or x27260 x31040)
+:assumption (or (not x14034) (not x3005))
+:assumption (or (not x26603) x21903)
+:assumption (or x14715 x13993)
+:assumption (or (not x13477) (not x26814) x12000 (not x15545))
+:assumption (or x3739 (not x28881))
+:assumption (or x2116 x24951)
+:assumption (or (not x16174) (not x21902) (not x827))
+:assumption (or (not x5394) x9590)
+:assumption (or x26336 x11244)
+:assumption (or x28201 x2288)
+:assumption (or (not x21851) (not x25229))
+:assumption (or x23465 x27733)
+:assumption (or (not x20322) x25463)
+:assumption (or x21298 (not x15278))
+:assumption (or (not x24466) (not x25630))
+:assumption (or (not x5352) (not x30913))
+:assumption (or x2319 x21687)
+:assumption (or (not x30928) x13153 x11424 (not x16745))
+:assumption (or (not x5794) x14981 (not x13147) x6337)
+:assumption (or (not x15114) (not x1988))
+:assumption (or (not x8530) (not x507))
+:assumption (or (not x9008) x15654 x9789)
+:assumption (or (not x25251) x14899 (not x28973))
+:assumption (or (not x23053) x10975)
+:assumption (or (not x17440) (not x3747))
+:assumption (or x8359 (not x2181))
+:assumption (or x851 x6493)
+:assumption (or (not x27012) x1534)
+:assumption (or x25236 (not x22962))
+:assumption (or x15913 (not x29103))
+:assumption (or x3872 x26687)
+:assumption (or x30255 x23244 (not x22384) x31484 x8002)
+:assumption (or x24054 x22403)
+:assumption (or (not x17573) x30574)
+:assumption (or x6442 x14977 (not x5114) (not x3884))
+:assumption (or x3818 x13739)
+:assumption (or (not x15480) x5894)
+:assumption (or (not x8374) (not x21240))
+:assumption (or (not x27233) x1010)
+:assumption (or (not x11439) x22260 (not x22004) x15659)
+:assumption (or (not x29656) (not x21815))
+:assumption (or x27149 x9992)
+:assumption (or x31844 x21202)
+:assumption (or x22739 (not x9432) x1819 (not x9731) x12099 x12420)
+:assumption (or x14504 (not x29792))
+:assumption (or (not x24872) (not x24839))
+:assumption (or x14709 x25428)
+:assumption (or (not x14860) (not x23979) (not x4341) (not x953))
+:assumption (or (not x8002) x17130)
+:assumption (or (not x8912) (not x29180))
+:assumption (or x4058 x8828)
+:assumption (or (not x12333) (not x5902))
+:assumption (or (not x17250) x1927)
+:assumption (or (not x29917) (not x30116))
+:assumption (or (not x27141) x13434 x6746)
+:assumption (or (not x27731) (not x3788))
+:assumption (or x18225 x17374)
+:assumption (or x6541 (not x10510))
+:assumption (or x19622 (not x10656))
+:assumption (or (not x6430) x28193 x14692 x21863 x9233)
+:assumption (or x22951 x288)
+:assumption (or (not x1877) (not x21860))
+:assumption (or x19474 (not x4360))
+:assumption (or (not x29481) x11522)
+:assumption (or x26513 (not x13931))
+:assumption (or (not x9008) (not x2058))
+:assumption (or x27980 (not x27279))
+:assumption (or (not x8148) x28298)
+:assumption (or (not x9576) x20226)
+:assumption (or (not x9476) x23391)
+:assumption (or x14446 x19358)
+:assumption (or (not x10659) (not x5326))
+:assumption (or x16785 x3392)
+:assumption (or x19976 x15646)
+:assumption (or (not x2281) x23290)
+:assumption (or (not x22158) (not x23244) (not x2776) x31824 (not x20381) (not x5985))
+:assumption (or (not x25563) x18617)
+:assumption (or (not x14761) (not x18435))
+:assumption (or x9930 x8855)
+:assumption (or x8374 (not x25946))
+:assumption (or x29500 (not x24574))
+:assumption (or (not x21022) x1740 (not x13036))
+:assumption (or x26203 x7520)
+:assumption (or x21961 x1783)
+:assumption (or x8043 x8051)
+:assumption (or x8602 (not x28421))
+:assumption (or (not x6003) x4191)
+:assumption (or (not x30995) x29778)
+:assumption (or x1820 (not x28031) (not x24363))
+:assumption (or (not x23244) (not x21260))
+:assumption (or x21849 x16802 x26784)
+:assumption (or x8602 (not x3853) (not x20389) x16236 (not x29485) (not x17851) x20577 (not x18327))
+:assumption (or (not x6357) (not x4199))
+:assumption (or (not x17967) (not x20236) (not x8439) x5756 (not x21192) (not x28834) (not x10768) (not x29263))
+:assumption (or (not x24969) (not x700))
+:assumption (or x19968 x22974)
+:assumption (or (not x29190) x16741)
+:assumption (or x11570 (not x11345))
+:assumption (or x9977 (not x6341))
+:assumption (or (not x26546) x26981)
+:assumption (or (not x18790) (not x3786))
+:assumption (or (not x26897) x14085)
+:assumption (or (not x3554) (not x1789))
+:assumption (or (not x9051) x27613)
+:assumption (or (not x11312) (not x795))
+:assumption (or (not x11511) (not x19989))
+:assumption (or x28408 x11354)
+:assumption (or x13517 x18146)
+:assumption (or x3779 (not x4293))
+:assumption (or (not x26249) x14518)
+:assumption (or (not x24628) (not x5835))
+:assumption (or (not x20325) x31280)
+:assumption (or x17422 x8293)
+:assumption (or (not x14633) x8077)
+:assumption (or (not x11316) x8941)
+:assumption (or (not x89) (not x21190) x24884)
+:assumption (or x31684 x1665)
+:assumption (or x28184 (not x19410) x4522 (not x28980) (not x22229) x8357)
+:assumption (or (not x24142) x8268)
+:assumption (or x16777 (not x29870))
+:assumption (or x5528 (not x3054))
+:assumption (or (not x323) (not x3773))
+:assumption (or x15158 (not x12187))
+:assumption (or x731 x13005)
+:assumption (or (not x21026) (not x14905))
+:assumption (or x22152 x24898)
+:assumption (or x3012 (not x25642))
+:assumption (or x9924 (not x21565))
+:assumption (or x5781 x18618)
+:assumption (or (not x10904) (not x22821) (not x16883) x26892)
+:assumption (or (not x9256) x9332)
+:assumption (or (not x28988) x2483)
+:assumption (or x13498 x26191)
+:assumption (or x15123 x6633)
+:assumption (or x23081 x25492)
+:assumption (or (not x754) (not x2904))
+:assumption (or (not x1943) (not x13668))
+:assumption (or (not x17104) (not x31872) x31704 x11875 x23982 x26756)
+:assumption (or (not x23619) (not x7748))
+:assumption (or (not x5886) (not x27340))
+:assumption (or x16802 (not x6155))
+:assumption (or x3435 x30168)
+:assumption (or x29579 (not x6594))
+:assumption (or x30 (not x4782))
+:assumption (or (not x25198) (not x22888))
+:assumption (or (not x28570) (not x5421))
+:assumption (or (not x23244) x7185)
+:assumption (or x3163 (not x26122))
+:assumption (or x25708 (not x8701))
+:assumption (or x16234 (not x26410))
+:assumption (or (not x25294) (not x8909))
+:assumption (or (not x27361) (not x30203) (not x21705) (not x22079) x4621)
+:assumption (or (not x15592) (not x28034))
+:assumption (or x8372 x1655)
+:assumption (or (not x29169) x18495)
+:assumption (or (not x8586) x7941 (not x4021))
+:assumption (or (not x1448) x3208)
+:assumption (or x12961 x6892)
+:assumption (or (not x29168) x24750)
+:assumption (or x5075 (not x7276))
+:assumption (or (not x11029) x30104)
+:assumption (or x20712 x2849)
+:assumption (or (not x24194) x2396)
+:assumption (or (not x19797) (not x19197))
+:assumption (or x16264 (not x28037))
+:assumption (or x26400 (not x23258))
+:assumption (or x31115 x10257)
+:assumption (or (not x26354) x2864)
+:assumption (or x15424 x9854)
+:assumption (or (not x6266) (not x18432))
+:assumption (or x20359 x4205)
+:assumption (or x22510 (not x17352))
+:assumption (or (not x26670) (not x5859))
+:assumption (or x8002 (not x6804))
+:assumption (or x25659 x22800 x16809 x20550 x1582)
+:assumption (or x28708 x13827 (not x2532) x11101)
+:assumption (or x21871 (not x16273))
+:assumption (or (not x30773) x6464)
+:assumption (or (not x7676) x22661)
+:assumption (or (not x17743) (not x7995))
+:assumption (or (not x1114) x19122)
+:assumption (or (not x18977) (not x13795))
+:assumption (or x824 (not x20794) (not x5528) (not x24058) (not x9008))
+:assumption (or (not x26623) x3540)
+:assumption (or (not x9078) (not x2250))
+:assumption (or x13956 x13099)
+:assumption (or (not x25784) x21917)
+:assumption (or (not x28932) x1899 x16580 (not x13684) x6571)
+:assumption (or (not x10002) x21993)
+:assumption (or (not x2935) x10396)
+:assumption (or x22812 (not x14076))
+:assumption (or x3846 (not x15980))
+:assumption (or (not x25553) x2776)
+:assumption (or x22098 (not x6311))
+:assumption (or (not x29010) (not x15767))
+:assumption (or x12025 (not x6351))
+:assumption (or (not x12923) x22600 x278 x22802)
+:assumption (or (not x8613) x25694)
+:assumption (or x3023 (not x19625))
+:assumption (or x21585 (not x17176))
+:assumption (or (not x16458) x9432)
+:assumption (or x12470 x1489)
+:assumption (or (not x1214) (not x27826) x25423 x4668)
+:assumption (or x5206 x6255 x2570 x16711 (not x23836) x25298)
+:assumption (or x4975 (not x25767))
+:assumption (or (not x16095) (not x29010))
+:assumption (or (not x6693) x29649)
+:assumption (or x9879 (not x22727))
+:assumption (or (not x12304) x27859)
+:assumption (or x31312 (not x4259))
+:assumption (or x8699 (not x13814))
+:assumption (or x30113 x11983 (not x12588))
+:assumption (or x268 (not x4447))
+:assumption (or (not x15395) (not x13825))
+:assumption (or (not x24375) (not x10574))
+:assumption (or x17016 x3021)
+:assumption (or (not x1833) (not x2960))
+:assumption (or (not x6624) (not x8002))
+:assumption (or x4809 x10871 x14891)
+:assumption (or (not x7419) (not x18748))
+:assumption (or (not x2015) x25836)
+:assumption (or (not x11343) x6903)
+:assumption (or (not x31528) (not x16045))
+:assumption (or (not x5575) (not x23903) (not x9492))
+:assumption (or x8871 x13627 (not x4451))
+:assumption (or (not x15504) x338)
+:assumption (or x16452 x7951)
+:assumption (or x29495 x31019)
+:assumption (or (not x5411) (not x14073))
+:assumption (or (not x5305) x13622)
+:assumption (or x14138 x5220)
+:assumption (or (not x29824) x20899)
+:assumption (or x27783 x28001 x18069)
+:assumption (or x556 x6491)
+:assumption (or x687 x17326 x11034 x1775 (not x14053))
+:assumption (or x5528 x30387)
+:assumption (or (not x24656) x14661)
+:assumption (or x5805 x17668)
+:assumption (or x23924 (not x827))
+:assumption (or x9531 (not x26880))
+:assumption (or x2639 (not x18385))
+:assumption (or (not x22604) (not x1862))
+:assumption (or (not x6031) (not x2670))
+:assumption (or x19476 x10874 (not x15336))
+:assumption (or (not x18672) (not x16770))
+:assumption (or x3679 x27217)
+:assumption (or (not x3404) (not x28846))
+:assumption (or x10914 (not x22855) (not x8816))
+:assumption (or (not x30670) (not x16581) (not x17076) x31304 x11939 (not x3825) x7800 x12802 (not x130) (not x25085))
+:assumption (or (not x19485) (not x18314))
+:assumption (or x8359 (not x17783))
+:assumption (or x18547 x7737)
+:assumption (or (not x3365) x26403 x16968)
+:assumption (or x31829 (not x14740))
+:assumption (or x25358 x12949)
+:assumption (or (not x17417) x30379)
+:assumption (or x12502 (not x4899))
+:assumption (or (not x9623) x11792)
+:assumption (or x3723 x7188 x808)
+:assumption (or (not x7493) x26045 (not x3739) (not x10252) x28611 x28034 (not x15483))
+:assumption (or x19860 (not x21298) x3982)
+:assumption (or x485 (not x12490))
+:assumption (or x12470 (not x4385))
+:assumption (or (not x4997) (not x6444))
+:assumption (or (not x22154) x24613)
+:assumption (or x16302 (not x24166))
+:assumption (or (not x8356) (not x28675))
+:assumption (or x3336 (not x2604))
+:assumption (or x14343 (not x6478))
+:assumption (or x4212 (not x23101))
+:assumption (or x30113 x20439)
+:assumption (or (not x25686) (not x24294))
+:assumption (or x14332 (not x28885))
+:assumption (or x28105 (not x9275))
+:assumption (or x21815 x22638 x11537)
+:assumption (or (not x17214) x29745)
+:assumption (or (not x27186) (not x13495))
+:assumption (or x19233 x13962)
+:assumption (or (not x20483) x30113)
+:assumption (or x2464 x19921)
+:assumption (or x2114 x30682)
+:assumption (or (not x22734) x26892 (not x19414) x21298)
+:assumption (or (not x3307) (not x24629))
+:assumption (or x25960 x7015)
+:assumption (or (not x14666) x19918)
+:assumption (or (not x7151) x13731)
+:assumption (or x23244 (not x18145) (not x20949))
+:assumption (or (not x16185) x4860)
+:assumption (or (not x16192) (not x8929))
+:assumption (or (not x1560) x3166 x17302 (not x21202))
+:assumption (or x17198 x8574 (not x14048))
+:assumption (or (not x17726) x27256)
+:assumption (or x25560 x24824)
+:assumption (or (not x12232) x3508)
+:assumption (or x31203 x16624)
+:assumption (or x29750 (not x13148))
+:assumption (or (not x11293) x9327)
+:assumption (or (not x17910) x19674)
+:assumption (or (not x252) (not x6444) (not x15770) (not x27998) x4491)
+:assumption (or (not x31469) x4931 (not x14839))
+:assumption (or x17075 (not x10367))
+:assumption (or (not x27151) (not x29365))
+:assumption (or (not x5439) (not x13973) x20949)
+:assumption (or x14398 (not x8397))
+:assumption (or x20952 (not x23438))
+:assumption (or x16111 (not x23074))
+:assumption (or x27873 x14407)
+:assumption (or (not x10141) x12001 x15266)
+:assumption (or (not x30307) x16003 (not x21491))
+:assumption (or x14453 x8802)
+:assumption (or (not x7524) (not x25376))
+:assumption (or (not x20196) x31255)
+:assumption (or x3738 x5580 x4889)
+:assumption (or x1991 (not x4424))
+:assumption (or x16643 x28915)
+:assumption (or x25334 x11760)
+:assumption (or x16441 x13956)
+:assumption (or x6568 (not x9008) (not x14869))
+:assumption (or x24223 (not x15700))
+:assumption (or (not x25593) x23442 (not x9503) x6723 (not x3494))
+:assumption (or x22215 (not x17767))
+:assumption (or (not x24709) x23884)
+:assumption (or (not x14001) x9008)
+:assumption (or x8798 x8602 (not x11717))
+:assumption (or x2158 x7465 (not x8825) (not x15697) x11585 (not x16833) x11558)
+:assumption (or (not x27670) (not x27291))
+:assumption (or x23244 (not x7185) (not x10783))
+:assumption (or (not x13415) x5025 x23970)
+:assumption (or x25784 x6911 x3225)
+:assumption (or x9225 x13487)
+:assumption (or (not x12975) x27328)
+:assumption (or (not x14839) x16505)
+:assumption (or x14878 x20233)
+:assumption (or x1621 (not x28066) x4164)
+:assumption (or (not x639) x1159)
+:assumption (or (not x9466) x18463)
+:assumption (or (not x13217) (not x28368))
+:assumption (or (not x7979) x17736)
+:assumption (or (not x1393) x24881)
+:assumption (or x3665 x7080)
+:assumption (or x29760 (not x25688))
+:assumption (or x4487 (not x19786))
+:assumption (or (not x1393) x30057)
+:assumption (or x8549 (not x10260))
+:assumption (or x26550 (not x21939))
+:assumption (or (not x28826) x25090)
+:assumption (or (not x19078) (not x25000) (not x13419) x104 x20607)
+:assumption (or (not x31411) x12650)
+:assumption (or x23819 (not x30113))
+:assumption (or (not x22691) (not x30581))
+:assumption (or (not x12242) x30548)
+:assumption (or (not x2231) (not x27532))
+:assumption (or (not x17103) x11926)
+:assumption (or (not x9008) (not x31367))
+:assumption (or (not x24094) (not x23770))
+:assumption (or (not x20963) x28910)
+:assumption (or (not x8532) x12531 x851 x31037 (not x15531) (not x16469) (not x15760) x24850 x16560)
+:assumption (or (not x23608) x21017)
+:assumption (or x5993 (not x20683))
+:assumption (or x9301 (not x20482) x13209)
+:assumption (or (not x24554) (not x10888))
+:assumption (or (not x26364) (not x20643))
+:assumption (or x4552 x29138 (not x2450) (not x11403) x7240)
+:assumption (or (not x24756) x20087 x15063)
+:assumption (or x20843 x7174)
+:assumption (or (not x15461) x27524 x14593 x25386 x21932 (not x9004) (not x643))
+:assumption (or x4928 x20181)
+:assumption (or x14175 (not x23827))
+:assumption (or (not x18165) (not x25999))
+:assumption (or (not x20849) x16880)
+:assumption (or x31628 x23011)
+:assumption (or (not x893) (not x10139))
+:assumption (or (not x20602) (not x24693))
+:assumption (or (not x19908) x6149)
+:assumption (or (not x6574) (not x8009))
+:assumption (or (not x20728) (not x1158))
+:assumption (or x2706 x28469 x6649)
+:assumption (or (not x18008) (not x18899))
+:assumption (or (not x22067) x13777 (not x10536) (not x9423))
+:assumption (or x7476 x23531)
+:assumption (or (not x2528) x8701 x1074 x31319 (not x6273) x9753 (not x24333) x1393)
+:assumption (or (not x29956) x5716)
+:assumption (or (not x14839) x21627 x29221)
+:assumption (or x7699 x2254 (not x13934) x21100 x2057)
+:assumption (or (not x11783) x10733)
+:assumption (or x16510 (not x10742))
+:assumption (or (not x5929) (not x19794))
+:assumption (or (not x16424) (not x10386))
+:assumption (or x21646 x23334)
+:assumption (or (not x3220) x13339)
+:assumption (or (not x4005) (not x8212))
+:assumption (or x28636 (not x5413))
+:assumption (or x13576 x7993)
+:assumption (or x15185 (not x26672))
+:assumption (or x27035 x10221)
+:assumption (or x26533 (not x22844))
+:assumption (or x14682 (not x20887))
+:assumption (or x25642 (not x15995) x17335 (not x6593) (not x24150) x29909)
+:assumption (or (not x3117) x23038)
+:assumption (or (not x15550) (not x26581))
+:assumption (or x5528 (not x676))
+:assumption (or x19252 x10692)
+:assumption (or x10933 x20103)
+:assumption (or x7500 x29640)
+:assumption (or (not x23079) x18428)
+:assumption (or x4074 (not x2293) x1393)
+:assumption (or (not x16741) x16691)
+:assumption (or (not x8312) x18445)
+:assumption (or (not x4652) (not x26677))
+:assumption (or (not x26522) x5248)
+:assumption (or x18306 (not x6283))
+:assumption (or x6781 x30258)
+:assumption (or x15059 (not x8573))
+:assumption (or (not x7220) x27314)
+:assumption (or (not x30661) (not x8002))
+:assumption (or (not x9422) x7600)
+:assumption (or (not x9104) x14286)
+:assumption (or x5429 (not x11834))
+:assumption (or (not x10116) x3266)
+:assumption (or x28033 x17161 x3132)
+:assumption (or x936 (not x13196))
+:assumption (or x22855 x28429)
+:assumption (or x8241 (not x10603))
+:assumption (or x7544 x15842)
+:assumption (or x1077 x25366 (not x11740))
+:assumption (or x13261 (not x17002))
+:assumption (or x1192 (not x15386))
+:assumption (or (not x13188) (not x814))
+:assumption (or (not x28218) (not x5528))
+:assumption (or x8280 x14933)
+:assumption (or x2867 x12521)
+:assumption (or x28880 (not x13529))
+:assumption (or (not x4404) (not x31854))
+:assumption (or x2780 x24)
+:assumption (or x30288 x5699)
+:assumption (or (not x17737) x9257)
+:assumption (or x4649 x17911)
+:assumption (or (not x19287) (not x21806))
+:assumption (or (not x18477) x27721)
+:assumption (or x28708 (not x14223))
+:assumption (or x17351 (not x21605) x17315 x6668)
+:assumption (or x27195 x9269)
+:assumption (or (not x10828) (not x30560))
+:assumption (or (not x16416) (not x8530))
+:assumption (or x28981 (not x30477))
+:assumption (or x26370 (not x6572))
+:assumption (or x10079 (not x26336))
+:assumption (or x27270 (not x26545))
+:assumption (or (not x28023) (not x23574))
+:assumption (or (not x15388) x27998 x9342)
+:assumption (or x25217 x29486)
+:assumption (or (not x10197) x30373)
+:assumption (or x28957 x4895)
+:assumption (or (not x6355) x3107)
+:assumption (or x16412 x9727)
+:assumption (or (not x13390) x12919)
+:assumption (or (not x23917) (not x26278))
+:assumption (or (not x19455) x12927)
+:assumption (or x5728 x3583)
+:assumption (or (not x1807) x17654)
+:assumption (or x10838 (not x10493))
+:assumption (or (not x7604) x31521)
+:assumption (or (not x20010) x11177)
+:assumption (or x587 x10010 (not x21618) x2229 (not x13384) x9821)
+:assumption (or (not x23038) (not x2573) x23934 (not x2053) x24953)
+:assumption (or x19586 x10452 (not x25659))
+:assumption (or (not x25070) (not x5886))
+:assumption (or (not x12632) x23945)
+:assumption (or x5262 (not x31031))
+:assumption (or (not x3778) x20705 x9531)
+:assumption (or x23145 x107)
+:assumption (or x6721 (not x12040))
+:assumption (or x16057 x26605 (not x21850) x23563 (not x7796) (not x3610) (not x1113) x16304)
+:assumption (or (not x19219) (not x6495))
+:assumption (or x20144 (not x15798))
+:assumption (or (not x6398) (not x12167))
+:assumption (or (not x11748) (not x27263))
+:assumption (or (not x31838) (not x14058))
+:assumption (or x29473 x14679)
+:assumption (or x19183 x8885)
+:assumption (or x20302 (not x10843))
+:assumption (or x21376 (not x1980))
+:assumption (or x30149 (not x5528) (not x5373) (not x29080) x20471 x6917)
+:assumption (or (not x3684) (not x27955))
+:assumption (or x30704 x2244)
+:assumption (or (not x31829) (not x7175))
+:assumption (or x3401 (not x11939))
+:assumption (or (not x23827) x9218)
+:assumption (or x17225 (not x18261))
+:assumption (or (not x8586) x27191)
+:assumption (or (not x2953) x25688)
+:assumption (or x15345 x22191)
+:assumption (or x9711 x10632)
+:assumption (or x30177 (not x14447))
+:assumption (or x24353 (not x11903))
+:assumption (or (not x9661) x7753)
+:assumption (or x17800 (not x7562) x26304 (not x5747) x25655 (not x30150))
+:assumption (or x7562 (not x16115))
+:assumption (or x2133 x73 x5044 x7835)
+:assumption (or (not x15802) x3361)
+:assumption (or x16907 (not x19163))
+:assumption (or (not x27099) x7555)
+:assumption (or x2535 (not x31449))
+:assumption (or (not x26344) x16172)
+:assumption (or (not x17505) (not x19906))
+:assumption (or (not x13456) x11176)
+:assumption (or (not x13471) (not x13391))
+:assumption (or (not x7403) x22564)
+:assumption (or x13348 (not x15621))
+:assumption (or (not x24192) (not x20028))
+:assumption (or (not x23327) x25366)
+:assumption (or x20087 x24756 x2480)
+:assumption (or (not x25397) x12544)
+:assumption (or x23555 (not x1897))
+:assumption (or x28436 x20119 x22880)
+:assumption (or x19226 (not x31482) (not x16117) x10490 x20937)
+:assumption (or (not x28690) (not x18939) (not x19948))
+:assumption (or (not x20975) x12735)
+:assumption (or x1482 x14605 (not x6911))
+:assumption (or x6754 x30658)
+:assumption (or (not x5453) x22030)
+:assumption (or (not x7537) x10380 (not x3736) (not x23399))
+:assumption (or (not x7691) x2102)
+:assumption (or x7397 x10582)
+:assumption (or (not x29738) (not x14081))
+:assumption (or x29449 (not x8194))
+:assumption (or x15577 x11050)
+:assumption (or x22967 x15005)
+:assumption (or x18509 (not x11833))
+:assumption (or x7788 x6599)
+:assumption (or x27599 x17039)
+:assumption (or x8602 (not x31527))
+:assumption (or (not x20050) (not x16942))
+:assumption (or (not x26421) x3383 x20134 (not x14879) (not x22347))
+:assumption (or x10950 x16172)
+:assumption (or (not x3126) x1034 (not x23022))
+:assumption (or x25114 x1347)
+:assumption (or (not x29598) x8002 x8803)
+:assumption (or (not x12028) x22918 x11931)
+:assumption (or x4061 (not x25734))
+:assumption (or (not x1393) (not x6958) (not x30442))
+:assumption (or x7039 (not x11680))
+:assumption (or x16996 (not x9050))
+:assumption (or (not x8196) x23603)
+:assumption (or x10685 (not x19059))
+:assumption (or (not x27409) (not x21882))
+:assumption (or (not x27669) (not x29202))
+:assumption (or x2139 x18730)
+:assumption (or x13129 x6807)
+:assumption (or x6086 (not x14272))
+:assumption (or x5660 x23688)
+:assumption (or (not x2108) x7532)
+:assumption (or x15365 x8002)
+:assumption (or (not x12083) (not x21718) x26107)
+:assumption (or x3161 (not x28769) x15325 x16417)
+:assumption (or x15293 x15583)
+:assumption (or x23556 (not x17748))
+:assumption (or (not x17063) x22818)
+:assumption (or x28663 (not x6005) (not x2704))
+:assumption (or (not x10367) x14037)
+:assumption (or (not x26045) (not x4783))
+:assumption (or x23227 (not x4876))
+:assumption (or (not x25818) (not x17255))
+:assumption (or x14030 (not x6796))
+:assumption (or x17027 x8220)
+:assumption (or x9957 x25659)
+:assumption (or x16414 x27217)
+:assumption (or x23244 (not x25293))
+:assumption (or x10909 x3299 x26897 (not x14085))
+:assumption (or x14839 x31219 (not x15025) x696)
+:assumption (or x8002 x13956 (not x24887) (not x29799) (not x30255))
+:assumption (or x23279 x10921)
+:assumption (or x23033 x4397)
+:assumption (or (not x13750) x24906)
+:assumption (or x23846 x5343)
+:assumption (or x23244 (not x8002) x10274 x29672)
+:assumption (or x2754 x9017)
+:assumption (or x661 (not x11685))
+:assumption (or (not x30113) x31389 x3886 x9898)
+:assumption (or (not x3167) (not x26230))
+:assumption (or (not x17453) (not x12168))
+:assumption (or x31120 (not x15153))
+:assumption (or x12338 (not x9233))
+:assumption (or x1172 (not x4942) (not x23958) (not x29025))
+:assumption (or (not x10304) x6444)
+:assumption (or (not x31114) x30220)
+:assumption (or x4925 x31627)
+:assumption (or x30403 x28688)
+:assumption (or (not x19085) (not x15479))
+:assumption (or (not x15457) x28452)
+:assumption (or (not x3786) x12908)
+:assumption (or (not x20830) x17549)
+:assumption (or x5773 (not x15065))
+:assumption (or x28159 (not x21088))
+:assumption (or x2387 x25911)
+:assumption (or x2494 (not x9203))
+:assumption (or x2791 x19369)
+:assumption (or (not x4491) (not x24031))
+:assumption (or (not x24958) x6027)
+:assumption (or x14584 (not x17233))
+:assumption (or x499 (not x20915))
+:assumption (or (not x18800) x10496)
+:assumption (or (not x14565) (not x9151))
+:assumption (or x30432 x28244)
+:assumption (or x19636 (not x10048))
+:assumption (or (not x4288) (not x4153))
+:assumption (or (not x4138) (not x179))
+:assumption (or x15380 x13378)
+:assumption (or x12965 (not x4137))
+:assumption (or (not x15925) x7385)
+:assumption (or (not x19986) (not x5115) (not x15795))
+:assumption (or x17572 (not x13469) (not x3455) (not x19468))
+:assumption (or (not x13548) (not x8661) (not x13603) x2413 x25087 (not x13957) (not x26657) (not x13942))
+:assumption (or x3115 x3027 x16745)
+:assumption (or x31829 x12842 x21294 (not x24772) (not x13863))
+:assumption (or (not x15566) (not x16306))
+:assumption (or x25941 (not x2127))
+:assumption (or (not x18378) x3955)
+:assumption (or (not x27425) x26953 x11227 (not x6548) x21948 x24676)
+:assumption (or (not x15562) (not x12203))
+:assumption (or x29333 x20645)
+:assumption (or (not x26026) (not x18648))
+:assumption (or x26432 (not x22359))
+:assumption (or (not x2799) (not x23650))
+:assumption (or (not x14768) (not x8602))
+:assumption (or (not x12304) (not x5655))
+:assumption (or x27225 (not x13031))
+:assumption (or x1810 x12718)
+:assumption (or x5528 x22908 (not x22472))
+:assumption (or (not x27399) (not x3738) (not x5885) (not x18673) (not x11492) x23870 (not x28618))
+:assumption (or (not x1002) (not x18539))
+:assumption (or (not x16779) (not x30361) x17645 (not x3671))
+:assumption (or x30648 (not x4026) (not x12352) (not x21202))
+:assumption (or (not x8002) x26879)
+:assumption (or x11931 x4575)
+:assumption (or (not x20156) x21275 (not x18069) x3494)
+:assumption (or (not x2378) (not x30170))
+:assumption (or (not x16898) x28973)
+:assumption (or (not x953) x20244)
+:assumption (or x10371 x28413 x7278 x23390 (not x22321))
+:assumption (or x20498 (not x25268) x17908 (not x22869))
+:assumption (or (not x5064) x29606)
+:assumption (or x11333 x12161)
+:assumption (or (not x13966) (not x22472) x26446 x31921)
+:assumption (or x7902 (not x3721))
+:assumption (or x29451 (not x22231))
+:assumption (or x12432 (not x13541))
+:assumption (or x5036 (not x16135))
+:assumption (or x30854 x18801)
+:assumption (or (not x485) x27784)
+:assumption (or (not x1053) x23047 x30523)
+:assumption (or x2806 (not x12528))
+:assumption (or x27404 (not x16455))
+:assumption (or (not x10046) (not x7324) x20516 (not x10761) (not x26549) (not x7692) x5739 x3191 (not x382))
+:assumption (or (not x27984) (not x14819))
+:assumption (or x8604 (not x10551))
+:assumption (or (not x13360) x16349)
+:assumption (or (not x13622) x17952 (not x10308))
+:assumption (or x4559 x30024)
+:assumption (or x14198 (not x8002))
+:assumption (or x4224 x22187)
+:assumption (or x8643 (not x28682))
+:assumption (or x29571 x27331)
+:assumption (or x24929 x2963 (not x15327) x4720 (not x21999) (not x30696) x22036)
+:assumption (or x1327 (not x10615))
+:assumption (or x1965 x8343)
+:assumption (or x149 (not x30912))
+:assumption (or (not x1160) x30124)
+:assumption (or x17750 x30134)
+:assumption (or x27665 (not x15384))
+:assumption (or x31853 x25231 (not x2728) (not x6137))
+:assumption (or x9592 (not x14138))
+:assumption (or x4207 (not x17641) (not x20373))
+:assumption (or (not x29205) x16685)
+:assumption (or x18941 (not x10539))
+:assumption (or (not x25625) x6392)
+:assumption (or x31875 (not x2155) (not x31109))
+:assumption (or (not x15692) (not x16374))
+:assumption (or x12663 (not x7426))
+:assumption (or x7752 x27741)
+:assumption (or x7806 (not x16078))
+:assumption (or x23282 (not x28430))
+:assumption (or x21372 (not x21089))
+:assumption (or x19462 x23244)
+:assumption (or (not x816) (not x15241))
+:assumption (or (not x31332) (not x10057))
+:assumption (or (not x30078) (not x8602) (not x21635))
+:assumption (or x30649 (not x4407))
+:assumption (or (not x7617) (not x22466) (not x31072) (not x29468))
+:assumption (or (not x8963) x25557 x6598)
+:assumption (or (not x23089) x27323)
+:assumption (or (not x12583) x14591)
+:assumption (or (not x12741) x2486)
+:assumption (or x9286 x22474)
+:assumption (or (not x10218) (not x21588))
+:assumption (or x21298 x2076)
+:assumption (or (not x13952) (not x5756))
+:assumption (or (not x2762) (not x13956) (not x9165))
+:assumption (or (not x26820) x25762)
+:assumption (or x8901 x16293)
+:assumption (or (not x23909) x1582)
+:assumption (or x22702 (not x11029))
+:assumption (or x4900 (not x25366))
+:assumption (or (not x27712) x9008 x690)
+:assumption (or x1418 (not x16025))
+:assumption (or x24637 x25894)
+:assumption (or (not x11524) (not x13614))
+:assumption (or (not x23289) (not x14368))
+:assumption (or x3212 (not x17864))
+:assumption (or (not x7391) x22847)
+:assumption (or x11704 (not x31392))
+:assumption (or (not x3556) (not x2666))
+:assumption (or (not x25589) (not x12645))
+:assumption (or (not x14839) (not x13170))
+:assumption (or (not x22545) x31899)
+:assumption (or x13501 (not x30213))
+:assumption (or (not x19387) (not x23781))
+:assumption (or x22232 x9466)
+:assumption (or x19736 (not x6043))
+:assumption (or x17322 x30765)
+:assumption (or (not x6729) x360 x2186 (not x3074) (not x28719))
+:assumption (or x14096 (not x11847))
+:assumption (or (not x18162) (not x732))
+:assumption (or (not x15886) x7053)
+:assumption (or x6284 (not x3416))
+:assumption (or x15178 x14951)
+:assumption (or x30994 x30887)
+:assumption (or x4053 x20191 (not x2820) x16132 x19428)
+:assumption (or x8137 x11976)
+:assumption (or (not x27853) x8641)
+:assumption (or x483 x1578)
+:assumption (or (not x14714) x31220)
+:assumption (or (not x21307) (not x7302))
+:assumption (or x5528 (not x22085))
+:assumption (or x19963 x31073)
+:assumption (or (not x4025) (not x29802))
+:assumption (or (not x18891) x10990)
+:assumption (or x8801 x10267)
+:assumption (or x16289 x16650)
+:assumption (or (not x30138) x9152 x26897 x2149)
+:assumption (or (not x25659) x3367)
+:assumption (or (not x4562) (not x26195))
+:assumption (or (not x31541) x9025)
+:assumption (or (not x10164) x14125)
+:assumption (or x27634 (not x10644))
+:assumption (or x26912 x5928)
+:assumption (or (not x22615) (not x31318) (not x9395) x21368)
+:assumption (or x6583 x542)
+:assumption (or x7835 x1460)
+:assumption (or x11709 (not x8829))
+:assumption (or x10518 x124)
+:assumption (or x25358 (not x19072))
+:assumption (or (not x4442) (not x8676))
+:assumption (or x15755 x3)
+:assumption (or (not x23018) (not x22275))
+:assumption (or (not x2793) (not x18597))
+:assumption (or (not x21292) x21815)
+:assumption (or (not x29847) (not x8002))
+:assumption (or x22793 x182)
+:assumption (or (not x18548) (not x12971))
+:assumption (or x31646 x18361)
+:assumption (or (not x4311) x9658)
+:assumption (or x3713 (not x2133))
+:assumption (or (not x23791) x1213)
+:assumption (or x3501 x4689)
+:assumption (or x18334 (not x10684))
+:assumption (or (not x6921) x22526)
+:assumption (or x30393 (not x25868))
+:assumption (or x21612 (not x18233) (not x8329))
+:assumption (or (not x11568) x25017)
+:assumption (or (not x15511) x30318)
+:assumption (or (not x3063) (not x31306))
+:assumption (or (not x1393) x15352)
+:assumption (or x5496 x5361 x29414)
+:assumption (or x11286 x16814)
+:assumption (or x11085 (not x18836) (not x408) (not x2215) (not x6129))
+:assumption (or (not x9111) x10607)
+:assumption (or x7110 (not x16826))
+:assumption (or (not x16025) (not x24107) (not x25917))
+:assumption (or x22537 (not x20208))
+:assumption (or (not x2859) x24009 x29589 (not x30588) x11182 (not x23749) x7725)
+:assumption (or x24633 (not x25427) (not x2716) x24694)
+:assumption (or (not x2892) x836)
+:assumption (or (not x14720) (not x19339))
+:assumption (or x22149 x29430)
+:assumption (or x9503 x5422)
+:assumption (or x3928 x2592 (not x15745) x9932 (not x31616) x3264 x13749)
+:assumption (or (not x12828) x12578)
+:assumption (or x4480 x654)
+:assumption (or (not x2207) (not x23244))
+:assumption (or (not x1954) x14889)
+:assumption (or (not x3793) x12242)
+:assumption (or (not x10121) x29115)
+:assumption (or (not x3537) (not x16396))
+:assumption (or (not x27884) (not x4525))
+:assumption (or (not x26315) x8086)
+:assumption (or (not x26357) x2327)
+:assumption (or x15142 x2684)
+:assumption (or (not x2115) (not x7288))
+:assumption (or (not x25911) x5450 (not x24047))
+:assumption (or x6983 (not x11815) (not x8002))
+:assumption (or (not x27282) (not x6967))
+:assumption (or x20752 x10909)
+:assumption (or (not x28012) x11274 x25089)
+:assumption (or (not x29692) (not x15851) (not x8602))
+:assumption (or x19729 (not x10953))
+:assumption (or x775 (not x11879))
+:assumption (or x2514 (not x14342))
+:assumption (or (not x16329) x28476)
+:assumption (or x5174 (not x6770))
+:assumption (or (not x23740) x21377)
+:assumption (or (not x16510) x28732 (not x21815) (not x9149) (not x18694))
+:assumption (or (not x13819) x20972)
+:assumption (or (not x2479) x12972)
+:assumption (or x777 x19965)
+:assumption (or (not x23075) (not x22009))
+:assumption (or x28844 (not x10658))
+:assumption (or x2235 x75)
+:assumption (or (not x1940) x25366)
+:assumption (or x3201 (not x143))
+:assumption (or x13612 (not x20929))
+:assumption (or (not x2011) x10891)
+:assumption (or x8733 x24432 x12864 x21949 x9203 (not x11281) (not x31590) x6271)
+:assumption (or x16888 x12992)
+:assumption (or (not x12184) x7200 (not x6198) x14141 x27349 (not x6160) (not x27723))
+:assumption (or x18888 x26206)
+:assumption (or x6179 x19369)
+:assumption (or (not x7953) x13675)
+:assumption (or (not x5609) x25105)
+:assumption (or (not x25797) (not x31060) (not x13005) (not x27440) x26531 (not x31299) (not x6849) (not x5766))
+:assumption (or (not x28872) (not x31097))
+:assumption (or (not x22840) (not x25204))
+:assumption (or x14383 (not x26117))
+:assumption (or (not x23678) (not x27341))
+:assumption (or x22104 x26543)
+:assumption (or x21004 (not x1533))
+:assumption (or (not x9627) (not x16099))
+:assumption (or x25442 x21265)
+:assumption (or (not x26503) (not x25784))
+:assumption (or x14445 x20898)
+:assumption (or (not x16025) (not x21055))
+:assumption (or x21620 x11410)
+:assumption (or (not x13382) x14711)
+:assumption (or x11472 (not x11970))
+:assumption (or (not x19196) (not x19925))
+:assumption (or x2453 x1815)
+:assumption (or (not x27337) (not x13743))
+:assumption (or (not x18207) (not x25353))
+:assumption (or (not x8770) (not x31651))
+:assumption (or x28788 (not x2009))
+:assumption (or (not x28890) (not x7615))
+:assumption (or x7173 (not x18795))
+:assumption (or (not x5056) x30763)
+:assumption (or (not x25254) x14847)
+:assumption (or x18171 x18254)
+:assumption (or x26713 x25423 x28059 x22078)
+:assumption (or x7462 x9649)
+:assumption (or (not x8845) (not x24148))
+:assumption (or (not x24300) (not x24094))
+:assumption (or (not x3035) (not x8580))
+:assumption (or x16955 x7111)
+:assumption (or (not x5034) (not x16095))
+:assumption (or x29069 x8639)
+:assumption (or x25360 x5390)
+:assumption (or x12882 (not x9036))
+:assumption (or x4288 x21891 (not x18946) (not x2055))
+:assumption (or (not x21725) (not x9073))
+:assumption (or x24598 (not x1607))
+:assumption (or x22066 x1441)
+:assumption (or x2888 (not x7835))
+:assumption (or x6258 x3107)
+:assumption (or (not x28059) x18785)
+:assumption (or (not x30681) x3435)
+:assumption (or (not x11644) (not x11387))
+:assumption (or x21298 x25164)
+:assumption (or (not x6384) (not x22816))
+:assumption (or (not x15742) (not x8676))
+:assumption (or x18442 (not x13956))
+:assumption (or x23993 (not x24840))
+:assumption (or x20242 x29932 x23661)
+:assumption (or (not x9651) (not x12467))
+:assumption (or x8815 (not x9605))
+:assumption (or x21766 (not x19900) x22855)
+:assumption (or (not x15911) x26432)
+:assumption (or (not x14908) x28864 x10909 x26897)
+:assumption (or x6953 x6833)
+:assumption (or (not x8253) (not x25764))
+:assumption (or x9380 x28780)
+:assumption (or x27667 (not x25041))
+:assumption (or (not x29214) (not x1562))
+:assumption (or (not x13343) (not x13870))
+:assumption (or (not x15719) (not x22736))
+:assumption (or (not x21085) (not x9346))
+:assumption (or x17697 x480)
+:assumption (or x4192 (not x8379))
+:assumption (or x25447 (not x28978))
+:assumption (or (not x14260) (not x18111))
+:assumption (or (not x30035) x24057)
+:assumption (or (not x1932) x29606)
+:assumption (or (not x26385) x7191)
+:assumption (or (not x1219) x19919)
+:assumption (or x6110 x9231)
+:assumption (or x7200 x2328)
+:assumption (or x14889 x24963)
+:assumption (or x17422 x18001)
+:assumption (or (not x10068) (not x901) x25612 (not x10034) (not x10577))
+:assumption (or x31202 x30633)
+:assumption (or (not x14807) (not x19510))
+:assumption (or x27439 (not x24728) (not x28690))
+:assumption (or x5594 (not x15977))
+:assumption (or (not x9008) (not x18933))
+:assumption (or x29568 (not x8675))
+:assumption (or x27767 x28601)
+:assumption (or x7220 x31660)
+:assumption (or x25062 (not x7487))
+:assumption (or (not x16964) x29654 (not x30689) x27847 x26625 (not x20670) x12244)
+:assumption (or x31087 (not x3246))
+:assumption (or (not x30728) x23867 x8860)
+:assumption (or x24781 x28964)
+:assumption (or x9972 (not x9281))
+:assumption (or (not x31134) x9532)
+:assumption (or x22214 (not x15423))
+:assumption (or x22054 (not x15135))
+:assumption (or (not x15384) x4194)
+:assumption (or x11733 x20989)
+:assumption (or (not x9830) x4262 (not x18923))
+:assumption (or x26469 x13032 (not x17326) (not x23386) (not x30475))
+:assumption (or (not x18595) (not x17850))
+:assumption (or (not x21003) (not x2578))
+:assumption (or x25123 (not x13014))
+:assumption (or (not x218) (not x25007))
+:assumption (or (not x29431) (not x918))
+:assumption (or (not x2246) (not x9998) (not x29442) x25878 x3782)
+:assumption (or (not x13640) x22497)
+:assumption (or (not x11727) x21294)
+:assumption (or (not x24903) (not x31140))
+:assumption (or (not x17359) x12909)
+:assumption (or (not x29119) (not x4824))
+:assumption (or (not x19972) (not x22261) x20885)
+:assumption (or x13789 x31081)
+:assumption (or x22425 (not x25659))
+:assumption (or x19777 x26324)
+:assumption (or (not x21467) (not x21653))
+:assumption (or x29708 x12948)
+:assumption (or x23244 (not x20359) (not x4205))
+:assumption (or (not x5140) (not x30002))
+:assumption (or x26749 x30753)
+:assumption (or x26075 (not x3532))
+:assumption (or (not x30940) (not x12675))
+:assumption (or (not x7158) x2374)
+:assumption (or (not x9160) x15953 x20998 x26499 x9008 (not x17768))
+:assumption (or x30113 x29772 x17531)
+:assumption (or x25916 x20482 (not x22360))
+:assumption (or (not x1790) x21199 x20094)
+:assumption (or x2498 x14694)
+:assumption (or x8371 x23207)
+:assumption (or x31343 (not x29291))
+:assumption (or x1928 x8871)
+:assumption (or (not x20353) (not x24545))
+:assumption (or (not x27370) (not x1701))
+:assumption (or (not x15659) x2433 (not x27059))
+:assumption (or (not x8225) (not x5880))
+:assumption (or x3948 x14200)
+:assumption (or x29512 x20495)
+:assumption (or (not x11627) (not x24058))
+:assumption (or (not x21932) (not x16658))
+:assumption (or x17635 (not x9924) x9453 (not x8979) (not x14262))
+:assumption (or x11141 (not x13284))
+:assumption (or x6184 (not x5950))
+:assumption (or x15114 x1988)
+:assumption (or (not x31050) (not x6909) (not x14023))
+:assumption (or x19956 (not x27184))
+:assumption (or x30449 (not x12068) (not x3453))
+:assumption (or (not x24389) x4304)
+:assumption (or x13151 x18733)
+:assumption (or x331 x9008 (not x25248))
+:assumption (or (not x8473) (not x15647))
+:assumption (or x6754 x29173)
+:assumption (or x27100 x21723)
+:assumption (or x7125 x20476)
+:assumption (or (not x24706) x1969)
+:assumption (or (not x7063) (not x27770))
+:assumption (or x22543 (not x6017))
+:assumption (or (not x23917) x16003)
+:assumption (or (not x19690) x5115)
+:assumption (or (not x5195) (not x5130))
+:assumption (or (not x25769) x18231)
+:assumption (or x15990 (not x23054))
+:assumption (or x28991 (not x23790))
+:assumption (or (not x513) (not x22861))
+:assumption (or x9079 x28388)
+:assumption (or (not x8948) (not x24346) x13855)
+:assumption (or (not x8389) x6954)
+:assumption (or x16510 (not x19873) (not x9531))
+:assumption (or (not x5665) x28474)
+:assumption (or x2094 x23073 (not x26670))
+:assumption (or x14651 x26284)
+:assumption (or (not x25311) (not x19141))
+:assumption (or x13303 x23381)
+:assumption (or (not x22668) x21504)
+:assumption (or (not x27602) (not x31515) x31598)
+:assumption (or (not x21375) (not x18316))
+:assumption (or x3367 x17075)
+:assumption (or x2804 x27902)
+:assumption (or (not x30894) (not x14963))
+:assumption (or x20126 x23416)
+:assumption (or (not x21033) x30332 x31898 x5098 x29150 x28868 (not x7696) (not x8470))
+:assumption (or (not x27689) (not x24078))
+:assumption (or x13685 x14984)
+:assumption (or (not x10582) (not x26494))
+:assumption (or (not x11792) x11814)
+:assumption (or (not x19465) (not x25743))
+:assumption (or (not x383) (not x11721))
+:assumption (or x4559 x26415)
+:assumption (or (not x7328) x12091)
+:assumption (or (not x6489) x4723)
+:assumption (or (not x16676) x15247)
+:assumption (or (not x18539) x28549)
+:assumption (or x6149 (not x887))
+:assumption (or x8499 x13091)
+:assumption (or x31893 (not x18859))
+:assumption (or x7873 (not x4482))
+:assumption (or x3560 x19765)
+:assumption (or (not x26459) x26688)
+:assumption (or (not x28589) (not x12360))
+:assumption (or x12680 (not x23244))
+:assumption (or (not x9585) x270 (not x7530) (not x9008) (not x5528))
+:assumption (or (not x30533) x28676)
+:assumption (or x1771 (not x12000))
+:assumption (or x23891 x15362)
+:assumption (or (not x16479) x15631 (not x28354))
+:assumption (or (not x27770) (not x964))
+:assumption (or x17846 x6264)
+:assumption (or x27592 (not x14180))
+:assumption (or (not x8210) (not x29036))
+:assumption (or (not x8826) x18814)
+:assumption (or x8135 (not x8139))
+:assumption (or x2870 (not x15537))
+:assumption (or (not x20482) x8643)
+:assumption (or (not x25606) x12397 x30004)
+:assumption (or x946 (not x1480))
+:assumption (or (not x7562) x12743)
+:assumption (or x21457 x5515)
+:assumption (or (not x29105) (not x21344))
+:assumption (or x2891 x26339 (not x8002))
+:assumption (or x16533 (not x4348))
+:assumption (or (not x29261) x29960)
+:assumption (or (not x13767) x18694)
+:assumption (or x28134 x29606)
+:assumption (or (not x8021) x10468)
+:assumption (or x18355 (not x21618))
+:assumption (or (not x6180) (not x30533))
+:assumption (or x30588 x20620)
+:assumption (or x12499 x15537)
+:assumption (or (not x24005) x2594)
+:assumption (or (not x11860) (not x5511))
+:assumption (or (not x1971) (not x19097))
+:assumption (or (not x31133) (not x8714))
+:assumption (or (not x782) x14339)
+:assumption (or x12633 x15102)
+:assumption (or (not x2068) (not x5528))
+:assumption (or (not x10031) (not x23102))
+:assumption (or x30673 x13956)
+:assumption (or x11923 x12420)
+:assumption (or (not x23045) x12310)
+:assumption (or (not x29746) x26107 (not x28682))
+:assumption (or (not x23408) (not x17626))
+:assumption (or x6827 x24722 (not x10447))
+:assumption (or (not x2) x29978)
+:assumption (or (not x9083) (not x288))
+:assumption (or (not x12436) (not x23960))
+:assumption (or x7880 (not x12242))
+:assumption (or x25697 (not x6157))
+:assumption (or (not x15893) (not x8840))
+:assumption (or x16281 x23540)
+:assumption (or x7835 (not x1774))
+:assumption (or x29351 (not x8180))
+:assumption (or (not x21592) (not x18433))
+:assumption (or (not x17308) x6194)
+:assumption (or (not x28755) (not x26451))
+:assumption (or x19280 (not x24811))
+:assumption (or x5986 (not x17172))
+:assumption (or x11646 x28029 (not x1393))
+:assumption (or x5332 x64)
+:assumption (or (not x13255) x29696 x16396)
+:assumption (or (not x9169) (not x16858))
+:assumption (or (not x16958) (not x11958))
+:assumption (or (not x29886) x20499)
+:assumption (or (not x14160) x3403)
+:assumption (or (not x24181) (not x8286) x27577 (not x11264) x20937 (not x27139))
+:assumption (or (not x14968) x18888)
+:assumption (or (not x27378) x2642)
+:assumption (or (not x28620) x5519)
+:assumption (or x29665 (not x8926) x31097 x8529 (not x22852) x12100 x21656)
+:assumption (or (not x10847) (not x7310))
+:assumption (or x13521 x13156)
+:assumption (or x28384 x5204 x26280)
+:assumption (or (not x28389) (not x377))
+:assumption (or x20939 (not x9037))
+:assumption (or x8071 (not x3565))
+:assumption (or x719 (not x20325) (not x4607))
+:assumption (or x24412 x4865)
+:assumption (or (not x18052) (not x21298) (not x7389) x13387)
+:assumption (or x23037 x8002 (not x17032))
+:assumption (or x26575 (not x29299) x15621 (not x16596))
+:assumption (or (not x6149) (not x1538))
+:assumption (or (not x16613) (not x3212) (not x30751))
+:assumption (or x31475 x14858)
+:assumption (or x5203 x27130 (not x9008))
+:assumption (or x26616 (not x18694))
+:assumption (or (not x1793) x30113)
+:assumption (or (not x13809) x15391)
+:assumption (or (not x25597) (not x13502) x27103)
+:assumption (or (not x6667) x20194)
+:assumption (or (not x9008) x22154 x23853 (not x5528) x29027)
+:assumption (or x31096 x11734)
+:assumption (or (not x15551) (not x6689))
+:assumption (or x13662 x25024)
+:assumption (or (not x8136) (not x28737))
+:assumption (or (not x18265) (not x24479))
+:assumption (or (not x15751) x23466 x13620 (not x27054) (not x13675) x2525 x28252 (not x20717))
+:assumption (or x16544 (not x23873))
+:assumption (or (not x30113) x21998)
+:assumption (or (not x14956) (not x8120) (not x10390))
+:assumption (or x14351 (not x18039))
+:assumption (or x29031 (not x31143))
+:assumption (or x26366 (not x15897))
+:assumption (or (not x716) (not x20991))
+:assumption (or x9387 (not x12786) (not x218) (not x17075))
+:assumption (or (not x13083) (not x4076))
+:assumption (or (not x8668) x22604)
+:assumption (or x11017 (not x25114))
+:assumption (or (not x21043) (not x14835))
+:assumption (or (not x29442) x20681 x3782)
+:assumption (or (not x6792) x17803)
+:assumption (or (not x23258) (not x11666))
+:assumption (or x22531 x25247 (not x19951) (not x4861) x27106)
+:assumption (or (not x21460) x30113)
+:assumption (or (not x6518) (not x17448))
+:assumption (or (not x30268) x14138)
+:assumption (or (not x17115) x21999)
+:assumption (or (not x5344) x675)
+:assumption (or (not x25326) (not x29267))
+:assumption (or x27442 (not x8002))
+:assumption (or (not x11504) (not x25707))
+:assumption (or (not x1011) (not x31754))
+:assumption (or (not x26136) (not x9799))
+:assumption (or x15640 (not x26827))
+:assumption (or x21218 x11606)
+:assumption (or x28364 x29391)
+:assumption (or x2109 x28716)
+:assumption (or (not x19541) (not x19617))
+:assumption (or (not x19595) x10091)
+:assumption (or (not x25315) (not x25682))
+:assumption (or x5240 (not x13491))
+:assumption (or (not x30999) x24050)
+:assumption (or x31886 x17359)
+:assumption (or (not x24863) (not x1064))
+:assumption (or (not x29489) (not x10335) x8002 x23244 x13956 (not x11924))
+:assumption (or (not x14725) x24117)
+:assumption (or x16025 x2306)
+:assumption (or x27483 (not x23244))
+:assumption (or x13947 x21815)
+:assumption (or (not x268) (not x12218))
+:assumption (or (not x9489) (not x8520))
+:assumption (or x25366 (not x12045) x8660 (not x10348))
+:assumption (or x6945 (not x27546))
+:assumption (or (not x26655) x24371)
+:assumption (or x15795 x31172)
+:assumption (or x20768 x21434)
+:assumption (or (not x30138) (not x21761))
+:assumption (or (not x31134) x12511)
+:assumption (or x6691 x19111)
+:assumption (or x12536 x27675)
+:assumption (or (not x28257) x30509)
+:assumption (or x12060 x4496)
+:assumption (or (not x13576) (not x9418))
+:assumption (or x10909 x22794)
+:assumption (or (not x11881) x24543)
+:assumption (or x6417 (not x8099))
+:assumption (or (not x1393) x16481)
+:assumption (or x9039 x30234)
+:assumption (or (not x31813) (not x17199) (not x19971) x14839)
+:assumption (or x8229 x3999 (not x2739) x24497)
+:assumption (or x8526 x29550)
+:assumption (or x24536 x6849)
+:assumption (or x30335 x4363)
+:assumption (or (not x13211) (not x28682))
+:assumption (or (not x2133) x2888)
+:assumption (or (not x827) (not x4489) x20842)
+:assumption (or (not x27335) (not x12852))
+:assumption (or x16724 x14839 x25338 (not x6317))
+:assumption (or (not x2727) x16692 (not x21298))
+:assumption (or x23643 (not x4909))
+:assumption (or x13576 x196)
+:assumption (or x21298 x27817)
+:assumption (or (not x6594) x27470)
+:assumption (or (not x10687) x19523)
+:assumption (or x25903 x5712)
+:assumption (or x17234 (not x29959) (not x26109))
+:assumption (or (not x26247) (not x9640))
+:assumption (or (not x6519) x288 (not x27221) (not x22497))
+:assumption (or x12270 (not x10686))
+:assumption (or (not x18533) x31022)
+:assumption (or x15835 (not x11746))
+:assumption (or x1112 x17675)
+:assumption (or (not x16110) x30670)
+:assumption (or (not x24299) (not x12033) x16374)
+:assumption (or (not x9269) (not x2201))
+:assumption (or x7748 x7661)
+:assumption (or (not x16856) x6990)
+:assumption (or x17788 x25657)
+:assumption (or x29531 (not x21298) (not x19414))
+:assumption (or x11281 x19396)
+:assumption (or (not x25369) (not x5917))
+:assumption (or (not x9012) (not x15294))
+:assumption (or (not x14640) (not x30124) x25366 (not x22376))
+:assumption (or (not x30986) (not x16056))
+:assumption (or (not x15331) x31079)
+:assumption (or (not x28252) x8805)
+:assumption (or x12132 x23244)
+:assumption (or x13209 (not x20774))
+:assumption (or x342 x10909)
+:assumption (or (not x21533) (not x22925))
+:assumption (or (not x28344) (not x3400))
+:assumption (or x31234 (not x25606))
+:assumption (or x28408 (not x18796))
+:assumption (or x18243 x16502)
+:assumption (or x27863 x22128 (not x9782) x14183 x19343 x26126)
+:assumption (or x5934 (not x23172))
+:assumption (or (not x1860) x6505)
+:assumption (or x7612 (not x183))
+:assumption (or (not x9008) x6020 (not x12897))
+:assumption (or (not x3736) x7537 x23399 x14388)
+:assumption (or x16 (not x26300) x25832 (not x6161))
+:assumption (or x8801 (not x31020))
+:assumption (or x25911 (not x22550) (not x26902))
+:assumption (or x22981 x27843)
+:assumption (or x5528 x28497)
+:assumption (or x18042 (not x11146))
+:assumption (or (not x2701) (not x3764) (not x25315))
+:assumption (or x13253 x10078)
+:assumption (or (not x21633) x13612)
+:assumption (or x2225 (not x31829) x918 (not x8984))
+:assumption (or (not x21825) x16510 x24433 x27091 x28912)
+:assumption (or (not x10847) x24118)
+:assumption (or x1500 (not x21237) (not x18063) (not x28898))
+:assumption (or (not x12026) (not x25180))
+:assumption (or x13488 x20627)
+:assumption (or (not x1227) x11000)
+:assumption (or (not x5416) x6851 x8002)
+:assumption (or x5410 (not x29553))
+:assumption (or (not x5695) x19037)
+:assumption (or x8954 (not x16201))
+:assumption (or x19206 x9261)
+:assumption (or (not x716) x12871)
+:assumption (or (not x24154) x21902)
+:assumption (or x29511 (not x23670))
+:assumption (or (not x26578) x15136)
+:assumption (or x13791 (not x9890) x26724)
+:assumption (or (not x18069) (not x3494) x31873 (not x16040))
+:assumption (or x8002 x5193)
+:assumption (or x3333 (not x1822) x15813)
+:assumption (or (not x22549) x157)
+:assumption (or x16721 (not x13776) x13701)
+:assumption (or x5240 (not x25769))
+:assumption (or (not x3553) (not x1053))
+:assumption (or x31734 x13067 x13434)
+:assumption (or (not x10636) (not x5044))
+:assumption (or (not x23202) x3665)
+:assumption (or (not x13040) (not x30698))
+:assumption (or x17357 (not x9410))
+:assumption (or (not x6938) x13578)
+:assumption (or x1046 x15234)
+:assumption (or (not x17050) (not x23244))
+:assumption (or (not x6197) x873)
+:assumption (or (not x25373) x9985)
+:assumption (or x8006 x1003)
+:assumption (or x23244 x9319)
+:assumption (or x20970 x13338 (not x9531) x24050)
+:assumption (or (not x2129) x13652)
+:assumption (or (not x23500) (not x1157))
+:assumption (or (not x13062) (not x18901) x24669 x30007)
+:assumption (or (not x25659) x3890)
+:assumption (or (not x23235) (not x1025) x6618 (not x13206) (not x30138) x29855 (not x13619))
+:assumption (or x27231 (not x18529) (not x8219))
+:assumption (or (not x26416) x30891 x27911)
+:assumption (or x22852 x23850)
+:assumption (or x31072 x22466)
+:assumption (or (not x29353) x8918)
+:assumption (or (not x23244) (not x10920) x8002)
+:assumption (or x26067 (not x29802))
+:assumption (or x22531 (not x5196))
+:assumption (or (not x21344) (not x14965))
+:assumption (or (not x14176) (not x25393))
+:assumption (or x21655 x16809)
+:assumption (or (not x17644) (not x2605))
+:assumption (or x25105 (not x13649))
+:assumption (or (not x25689) (not x7030))
+:assumption (or (not x12877) x22698 (not x14661))
+:assumption (or x23344 x1309)
+:assumption (or (not x20987) (not x6917))
+:assumption (or x26918 x21465)
+:assumption (or x15680 x27839)
+:assumption (or x15756 (not x6307) x10874)
+:assumption (or (not x4540) (not x18515))
+:assumption (or x19810 (not x18830))
+:assumption (or x30851 x19288 (not x26217) x17109)
+:assumption (or (not x13861) (not x31473))
+:assumption (or (not x15905) x8844)
+:assumption (or (not x18754) x10397)
+:assumption (or (not x6668) (not x6307))
+:assumption (or x9445 (not x19772))
+:assumption (or (not x2935) (not x25180))
+:assumption (or (not x1040) (not x7732))
+:assumption (or (not x8002) x5250)
+:assumption (or x2734 (not x9285))
+:assumption (or x11335 (not x30547))
+:assumption (or x21737 x28488)
+:assumption (or x23769 x28508)
+:assumption (or x26590 x27226)
+:assumption (or x18313 (not x18450))
+:assumption (or x27000 x25469)
+:assumption (or (not x26939) (not x23184))
+:assumption (or (not x6105) x15430)
+:assumption (or x30899 (not x23363) (not x28319))
+:assumption (or x25334 (not x24498))
+:assumption (or x25144 x15537 (not x8117) (not x10103) x1182 (not x11375))
+:assumption (or (not x19284) (not x21516))
+:assumption (or x16933 x26796 x10398 (not x12455) (not x2542))
+:assumption (or x1410 (not x10441))
+:assumption (or (not x29648) x4445 x13120)
+:assumption (or x24178 x29240)
+:assumption (or x19473 x30848 (not x22604))
+:assumption (or x11189 x18985)
+:assumption (or x7675 x14784)
+:assumption (or x3552 (not x13956))
+:assumption (or x19730 x6794 (not x31366) x14942)
+:assumption (or (not x22397) (not x14591))
+:assumption (or x18499 x27002)
+:assumption (or (not x26052) x6404)
+:assumption (or (not x25211) x16510)
+:assumption (or (not x7895) x25659)
+:assumption (or x18441 (not x21546) x18342 x31786)
+:assumption (or x5042 (not x2164) (not x9008))
+:assumption (or x25417 x26200)
+:assumption (or x458 (not x26668))
+:assumption (or x1391 (not x1178))
+:assumption (or (not x22963) x1226)
+:assumption (or x10235 (not x23190))
+:assumption (or (not x25203) x218 x16025)
+:assumption (or x29512 (not x6606))
+:assumption (or (not x17407) x27683)
+:assumption (or x5417 (not x6478))
+:assumption (or (not x8002) x19551)
+:assumption (or x19813 (not x4809))
+:assumption (or x858 (not x16061))
+:assumption (or x11108 x20412)
+:assumption (or (not x8515) x1829)
+:assumption (or (not x15693) (not x21625))
+:assumption (or (not x25175) x6184)
+:assumption (or (not x21531) (not x7142) (not x13956))
+:assumption (or x396 (not x28423))
+:assumption (or (not x27325) x20301)
+:assumption (or x17761 (not x27955))
+:assumption (or (not x7633) (not x30167))
+:assumption (or x507 (not x29117) x5528)
+:assumption (or (not x31242) (not x14816) (not x30059) x6484)
+:assumption (or x31663 x25897)
+:assumption (or x24284 x18238)
+:assumption (or (not x24020) (not x11243) x21633)
+:assumption (or (not x22807) (not x11176))
+:assumption (or (not x19606) (not x1485) (not x25822) (not x27019))
+:assumption (or (not x27355) x1721)
+:assumption (or x8381 x6289)
+:assumption (or x6771 x4475)
+:assumption (or (not x11506) (not x8747))
+:assumption (or x14764 x5192)
+:assumption (or (not x30252) (not x19193))
+:assumption (or (not x14455) (not x23916) (not x16374))
+:assumption (or (not x11716) x18193)
+:assumption (or x4603 x551)
+:assumption (or x18205 x827)
+:assumption (or x27930 (not x19441))
+:assumption (or (not x22077) (not x808))
+:assumption (or (not x19326) (not x21026))
+:assumption (or x9413 x13498)
+:assumption (or (not x9006) (not x21298))
+:assumption (or (not x25479) (not x9678))
+:assumption (or x14588 x11700 x16302 (not x19648))
+:assumption (or x16830 (not x29947))
+:assumption (or (not x1031) x7302 (not x28328) (not x5360) (not x3632) x16364 (not x25076))
+:assumption (or x24050 (not x7743) (not x8413) x12872 (not x16604) x1271 x30100)
+:assumption (or (not x26607) x3782)
+:assumption (or (not x11589) x16374)
+:assumption (or (not x19477) x9020)
+:assumption (or x2559 (not x8860))
+:assumption (or x19401 x24690)
+:assumption (or (not x14021) (not x26137))
+:assumption (or (not x16994) x6852)
+:assumption (or (not x20742) (not x519))
+:assumption (or x2784 (not x10810))
+:assumption (or (not x9770) (not x24243) x3494)
+:assumption (or x30465 x4341)
+:assumption (or x3940 x4522)
+:assumption (or x25452 x12139)
+:assumption (or x17111 (not x16025))
+:assumption (or (not x31302) (not x2793))
+:assumption (or x19534 x14974)
+:assumption (or (not x15379) x519)
+:assumption (or (not x7986) (not x28444))
+:assumption (or (not x16003) x218 (not x18526))
+:assumption (or (not x30593) (not x3532))
+:assumption (or x22612 (not x21633))
+:assumption (or x28912 x10961)
+:assumption (or (not x21513) x23467)
+:assumption (or (not x26896) (not x18931))
+:assumption (or (not x21171) (not x21852))
+:assumption (or x18642 (not x16648))
+:assumption (or (not x12582) x4381)
+:assumption (or x1092 x19222 (not x14839))
+:assumption (or x21901 (not x6743))
+:assumption (or (not x26606) x21487)
+:assumption (or x30544 x4542)
+:assumption (or (not x20259) (not x21244))
+:assumption (or x30516 (not x30866))
+:assumption (or (not x25536) (not x26501))
+:assumption (or (not x25218) x17066)
+:assumption (or (not x6591) (not x9794))
+:assumption (or x10915 x14330)
+:assumption (or x10191 (not x8002) x2658)
+:assumption (or x5061 (not x9008) (not x5528) x9779 (not x22472))
+:assumption (or x27227 (not x2268))
+:assumption (or (not x13090) x29312)
+:assumption (or x17241 x10874)
+:assumption (or (not x6895) (not x20287) x25509 x18233)
+:assumption (or (not x7882) x31235)
+:assumption (or x14824 x17543)
+:assumption (or (not x13503) (not x9545))
+:assumption (or (not x23928) x665)
+:assumption (or x26083 (not x3782) (not x8839))
+:assumption (or x9683 x9119)
+:assumption (or (not x2734) x11728 (not x13670) (not x17894) (not x19202))
+:assumption (or x25401 (not x17289))
+:assumption (or x21830 x1877)
+:assumption (or x20459 x11115)
+:assumption (or x9350 (not x8002) x16654 x28221)
+:assumption (or (not x21541) x5431)
+:assumption (or x17451 x8953 (not x22855))
+:assumption (or x3475 x4493)
+:assumption (or (not x25793) x18824)
+:assumption (or x13092 (not x6351) x12098)
+:assumption (or x15333 x12123)
+:assumption (or (not x26785) x21909)
+:assumption (or (not x20047) x1078 x170 (not x26945) x2582 (not x912))
+:assumption (or x9294 (not x24560))
+:assumption (or x7968 x11752)
+:assumption (or (not x18754) (not x6239))
+:assumption (or (not x7130) (not x827) (not x15658))
+:assumption (or x7318 x31871)
+:assumption (or (not x3217) x2515)
+:assumption (or x16085 (not x1684))
+:assumption (or (not x31732) (not x17842))
+:assumption (or x31016 x8586)
+:assumption (or (not x1898) (not x9949))
+:assumption (or x7188 x16269)
+:assumption (or (not x12103) x31352)
+:assumption (or x10980 (not x10483) (not x11484))
+:assumption (or (not x26617) x1204)
+:assumption (or (not x24479) x18555)
+:assumption (or (not x30165) (not x31063))
+:assumption (or (not x1568) (not x18976))
+:assumption (or x8644 x4105)
+:assumption (or x29651 (not x31925))
+:assumption (or x6918 x24016)
+:assumption (or (not x28035) (not x14963))
+:assumption (or x28497 x13674)
+:assumption (or x17677 x26383)
+:assumption (or x5422 x1226)
+:assumption (or (not x25659) (not x1220))
+:assumption (or (not x225) (not x1712))
+:assumption (or x8206 x24608)
+:assumption (or x20714 (not x25707))
+:assumption (or x4911 x8234)
+:assumption (or x24387 x15442)
+:assumption (or (not x21295) x14350)
+:assumption (or x18696 (not x15861))
+:assumption (or x21198 x27518)
+:assumption (or (not x2969) (not x15795))
+:assumption (or (not x15452) (not x26789))
+:assumption (or (not x23752) (not x30349))
+:assumption (or (not x17015) x23943)
+:assumption (or x7920 (not x4204))
+:assumption (or (not x23676) (not x5398))
+:assumption (or (not x10969) (not x15089) x19368 x23587)
+:assumption (or (not x5813) (not x8580))
+:assumption (or x8941 x7714)
+:assumption (or (not x27485) (not x28886))
+:assumption (or (not x29245) (not x7142))
+:assumption (or x5528 x30323)
+:assumption (or (not x21502) (not x24981))
+:assumption (or x25306 (not x31552))
+:assumption (or x25455 (not x16992))
+:assumption (or x17849 x14718)
+:assumption (or x20429 (not x9173))
+:assumption (or (not x12065) (not x20630))
+:assumption (or x3676 (not x1180))
+:assumption (or (not x15572) x9251)
+:assumption (or (not x24148) (not x19974) x2166)
+:assumption (or x27428 x7835)
+:assumption (or (not x6339) (not x27582) x3469 x325 (not x7349) x9953 (not x10547) (not x24682))
+:assumption (or x13306 x20750)
+:assumption (or x7762 x4630)
+:assumption (or (not x29142) x23547)
+:assumption (or (not x11646) (not x28029))
+:assumption (or x15076 (not x5528))
+:assumption (or (not x8522) (not x10334))
+:assumption (or (not x780) (not x25867))
+:assumption (or (not x5098) x8470)
+:assumption (or (not x26045) x15483)
+:assumption (or (not x10960) (not x27689) (not x218) x20523 (not x2557))
+:assumption (or (not x285) (not x19864))
+:assumption (or (not x25546) (not x23202))
+:assumption (or (not x1227) (not x3205))
+:assumption (or x6389 (not x29660))
+:assumption (or x23434 (not x27242))
+:assumption (or x18312 (not x22232) x2439 (not x7307) (not x21740))
+:assumption (or x4347 (not x9813))
+:assumption (or x18787 x28973)
+:assumption (or (not x16615) x16224 (not x12415) (not x12891) x31295)
+:assumption (or (not x28313) (not x9290))
+:assumption (or (not x13477) (not x21883) x31166 x26432 x22432)
+:assumption (or x4724 x14422 (not x25029) x5898)
+:assumption (or (not x13956) (not x12302) (not x16654) x17016)
+:assumption (or x11647 (not x10172))
+:assumption (or (not x2069) (not x4345))
+:assumption (or (not x25366) x16403 x20416 (not x11281))
+:assumption (or x5741 (not x17109))
+:assumption (or (not x12423) (not x9779))
+:assumption (or x16647 (not x4425))
+:assumption (or x4517 (not x31841))
+:assumption (or x19684 x2133)
+:assumption (or (not x31282) x30492)
+:assumption (or (not x11337) (not x18713))
+:assumption (or x19858 x3135)
+:assumption (or (not x5527) x31863)
+:assumption (or (not x27596) x950)
+:assumption (or x27290 x19261)
+:assumption (or (not x26837) (not x16774))
+:assumption (or x15795 x18549 (not x30705))
+:assumption (or x2542 (not x18648))
+:assumption (or (not x25519) (not x7743))
+:assumption (or x17754 x9941)
+:assumption (or x15886 (not x7053))
+:assumption (or (not x24112) x18604)
+:assumption (or (not x21332) x14051)
+:assumption (or x8763 x21837)
+:assumption (or (not x14162) (not x6697))
+:assumption (or x30669 x28060)
+:assumption (or x19864 x28667)
+:assumption (or x27533 x21369 (not x25185) x11608 x2457)
+:assumption (or (not x22801) (not x29528))
+:assumption (or (not x827) x28938 x20730)
+:assumption (or (not x26432) x15801)
+:assumption (or x4962 x27536)
+:assumption (or x30138 x13206 (not x28440))
+:assumption (or x17259 (not x1029))
+:assumption (or (not x23430) (not x31395))
+:assumption (or (not x11501) x480 (not x9025))
+:assumption (or (not x2330) x8584 (not x9842) (not x255))
+:assumption (or (not x20949) (not x31779))
+:assumption (or x3724 x19628)
+:assumption (or x18990 (not x181) (not x25913) (not x30941))
+:assumption (or (not x9733) x11189)
+:assumption (or (not x16981) (not x13381))
+:assumption (or x799 (not x24994))
+:assumption (or x13956 (not x5165))
+:assumption (or (not x6185) x8579)
+:assumption (or x21184 x26017)
+:assumption (or x12876 (not x23936))
+:assumption (or (not x9391) (not x2439))
+:assumption (or (not x20212) (not x14552) x8083)
+:assumption (or (not x1393) x29120)
+:assumption (or x18934 x24816 x22269 (not x19398) (not x3415))
+:assumption (or (not x30239) (not x14723) x10982 x25355 (not x9647))
+:assumption (or (not x7443) x27841)
+:assumption (or x31829 (not x3851) x3150)
+:assumption (or x1962 x15010)
+:assumption (or x2833 x22116)
+:assumption (or (not x20744) x5425)
+:assumption (or x15188 x23863)
+:assumption (or x26193 (not x21292))
+:assumption (or (not x4064) x31856)
+:assumption (or x20797 x11926)
+:assumption (or (not x15013) (not x31287))
+:assumption (or (not x668) (not x22363))
+:assumption (or x21992 (not x27251) (not x21432))
+:assumption (or x14839 x7724)
+:assumption (or x15427 (not x4038))
+:assumption (or x7867 x16655)
+:assumption (or (not x9996) x25327)
+:assumption (or (not x28836) x15588)
+:assumption (or x17902 x7530)
+:assumption (or x17944 (not x21925))
+:assumption (or (not x28706) (not x20898))
+:assumption (or (not x15034) (not x28178))
+:assumption (or (not x28774) (not x22337))
+:assumption (or (not x7698) x29179)
+:assumption (or (not x5397) (not x28593))
+:assumption (or x9100 (not x3336))
+:assumption (or (not x7328) (not x5287))
+:assumption (or (not x8574) (not x9552))
+:assumption (or x15275 x30126)
+:assumption (or (not x22050) (not x22136))
+:assumption (or x20792 x26975)
+:assumption (or (not x9454) x29197)
+:assumption (or (not x12397) x2592 x19515)
+:assumption (or (not x15473) x7252)
+:assumption (or x4175 x3339)
+:assumption (or x24529 (not x492))
+:assumption (or (not x13036) x2943 (not x29539))
+:assumption (or (not x1003) x1446)
+:assumption (or x30805 (not x21492))
+:assumption (or x24058 (not x824))
+:assumption (or (not x25430) x10029)
+:assumption (or x4554 (not x31493))
+:assumption (or (not x31656) (not x23767))
+:assumption (or x2203 (not x10052))
+:assumption (or (not x6811) (not x15880))
+:assumption (or x25581 x9416)
+:assumption (or x2391 x8638)
+:assumption (or (not x31745) (not x18887))
+:assumption (or (not x11650) x19840)
+:assumption (or (not x23875) (not x21026))
+:assumption (or x13101 (not x8602))
+:assumption (or (not x4606) x26897)
+:assumption (or (not x4886) x16374 x14859)
+:assumption (or x11119 (not x2320))
+:assumption (or (not x9088) (not x25764))
+:assumption (or x9724 x14180)
+:assumption (or (not x5559) (not x8098))
+:assumption (or x30606 (not x10909) x1402)
+:assumption (or x26005 x23557)
+:assumption (or (not x29464) (not x26163))
+:assumption (or (not x16499) (not x3435))
+:assumption (or x5026 (not x10573))
+:assumption (or x4111 (not x11511))
+:assumption (or x8002 (not x27201) x3540)
+:assumption (or (not x30633) x21859)
+:assumption (or (not x14927) (not x30532))
+:assumption (or x8594 x11712)
+:assumption (or (not x2279) x18182)
+:assumption (or x12338 (not x21863))
+:assumption (or x10235 (not x15716))
+:assumption (or x1739 x1622)
+:assumption (or x22712 (not x1807))
+:assumption (or x8080 (not x9256))
+:assumption (or (not x9286) x7143 x10855 (not x5489) (not x22474))
+:assumption (or x26684 (not x1930))
+:assumption (or (not x4265) x10935)
+:assumption (or x11738 x10704)
+:assumption (or x1393 (not x11421))
+:assumption (or x9025 x31584)
+:assumption (or x208 (not x23239))
+:assumption (or (not x4065) x6446)
+:assumption (or (not x12943) (not x31721))
+:assumption (or x7902 (not x25707))
+:assumption (or x1897 (not x21468))
+:assumption (or x25355 x9194)
+:assumption (or x10064 x12376)
+:assumption (or (not x1432) x6525)
+:assumption (or x14501 x16510)
+:assumption (or x21453 (not x19481))
+:assumption (or x14993 (not x13487))
+:assumption (or x101 (not x13430))
+:assumption (or x29658 (not x18755) x9008)
+:assumption (or (not x31732) (not x31285))
+:assumption (or (not x19711) x27607)
+:assumption (or x16784 (not x17571) x862)
+:assumption (or (not x27808) x25784)
+:assumption (or x30644 x5528)
+:assumption (or x2884 (not x28885))
+:assumption (or x31648 x29988 (not x22751) x15029 x620)
+:assumption (or x15816 x10416)
+:assumption (or x28618 x15077)
+:assumption (or x6943 x30083)
+:assumption (or (not x25681) x28270)
+:assumption (or (not x17655) x11314)
+:assumption (or (not x23251) x14325)
+:assumption (or (not x13020) (not x27290))
+:assumption (or x5330 x5394)
+:assumption (or x2924 x25634)
+:assumption (or (not x11438) (not x30531))
+:assumption (or (not x13025) x30244)
+:assumption (or x10027 (not x15219))
+:assumption (or x21559 x5330)
+:assumption (or x9140 x4289)
+:assumption (or x661 x31030)
+:assumption (or x5883 (not x9008) x28473)
+:assumption (or x1818 x4648)
+:assumption (or (not x2044) (not x18711))
+:assumption (or x13044 x26578)
+:assumption (or x11122 x28376)
+:assumption (or (not x13078) x14839)
+:assumption (or (not x11791) (not x11025))
+:assumption (or (not x26385) (not x24518))
+:assumption (or (not x5102) x7233 x5444 x12054 (not x14437) x6771 (not x25061))
+:assumption (or x19078 (not x13849))
+:assumption (or (not x18762) (not x19572))
+:assumption (or x16518 (not x31057))
+:assumption (or x27139 x3998)
+:assumption (or x16696 (not x2679) x15008 (not x8532))
+:assumption (or x5277 (not x10211))
+:assumption (or x20900 (not x16084))
+:assumption (or (not x18042) x11146 x24722)
+:assumption (or (not x12045) x24950)
+:assumption (or x14826 (not x31766))
+:assumption (or x18069 (not x3941))
+:assumption (or (not x11749) x14506)
+:assumption (or x26961 (not x12628))
+:assumption (or x28846 (not x7746))
+:assumption (or x14708 (not x5886) x8961 (not x4792))
+:assumption (or (not x8568) (not x8265))
+:assumption (or x23386 x29605)
+:assumption (or (not x15863) x26003)
+:assumption (or x3498 (not x5069))
+:assumption (or x6633 x10355)
+:assumption (or x23642 (not x352))
+:assumption (or x31420 (not x23733))
+:assumption (or (not x6596) (not x29607))
+:assumption (or (not x19857) (not x18293))
+:assumption (or x19667 (not x4846))
+:assumption (or (not x7852) (not x26447))
+:assumption (or x503 (not x21357))
+:assumption (or x30100 (not x13917))
+:assumption (or (not x1684) x89)
+:assumption (or x7035 x14225)
+:assumption (or x11921 x12213)
+:assumption (or x24855 x28393)
+:assumption (or (not x4003) x23504)
+:assumption (or (not x6422) (not x1507))
+:assumption (or (not x952) (not x14197))
+:assumption (or (not x16304) x10019)
+:assumption (or (not x8789) (not x7809))
+:assumption (or x27511 (not x18030))
+:assumption (or (not x31555) (not x5960))
+:assumption (or (not x12472) x25162)
+:assumption (or (not x29333) x7873)
+:assumption (or (not x13395) x29269)
+:assumption (or (not x895) x31882)
+:assumption (or (not x20255) x9008)
+:assumption (or (not x8345) x8360 (not x26052) x12923)
+:assumption (or (not x20228) x4864)
+:assumption (or x12568 x13049)
+:assumption (or x18930 x15538)
+:assumption (or x16438 (not x22719))
+:assumption (or (not x31289) (not x18918))
+:assumption (or (not x9384) (not x1026))
+:assumption (or x14924 (not x26932))
+:assumption (or (not x30537) (not x2067))
+:assumption (or (not x19278) x15659)
+:assumption (or (not x4006) (not x10371))
+:assumption (or (not x14693) (not x20171))
+:assumption (or x2331 (not x10492))
+:assumption (or (not x19992) x26236)
+:assumption (or (not x27229) (not x1487))
+:assumption (or x23753 x23088)
+:assumption (or (not x13183) (not x27524))
+:assumption (or (not x26632) (not x11138))
+:assumption (or x16510 x30187)
+:assumption (or x4052 x24217)
+:assumption (or x14179 x22803)
+:assumption (or (not x24797) x8532 x15800)
+:assumption (or (not x6097) x15981 (not x8998))
+:assumption (or x12113 (not x20988) x20885 x16365 x21546)
+:assumption (or x21676 x18725)
+:assumption (or (not x19598) x1066)
+:assumption (or x19593 (not x9472) x21442)
+:assumption (or (not x3317) x8125)
+:assumption (or (not x17246) (not x12844))
+:assumption (or x29895 x18626)
+:assumption (or x10439 (not x30193))
+:assumption (or (not x5205) (not x17485) x12242 x20918 x16285 x18331)
+:assumption (or x7343 (not x21955))
+:assumption (or x6588 x16409)
+:assumption (or x13622 (not x17249) (not x27937) (not x4491))
+:assumption (or (not x29325) (not x12787))
+:assumption (or (not x31773) x22770)
+:assumption (or (not x21291) (not x28982))
+:assumption (or x4109 (not x10738))
+:assumption (or x26662 x25659)
+:assumption (or x93 x15534)
+:assumption (or (not x28150) x28890)
+:assumption (or x16052 (not x30626))
+:assumption (or (not x22675) (not x16587))
+:assumption (or (not x31150) (not x17942))
+:assumption (or (not x8002) (not x5254) (not x23244))
+:assumption (or x19999 x15498)
+:assumption (or (not x6180) (not x1893))
+:assumption (or (not x8002) (not x8559))
+:assumption (or (not x3288) (not x31681))
+:assumption (or (not x16564) x2420)
+:assumption (or x14344 (not x26192))
+:assumption (or (not x28410) (not x27632))
+:assumption (or x31659 x3585)
+:assumption (or (not x21574) x13344)
+:assumption (or x22855 (not x26555))
+:assumption (or (not x8298) (not x4507))
+:assumption (or (not x2842) x14442)
+:assumption (or (not x24732) x17659)
+:assumption (or x9705 (not x10874))
+:assumption (or x14749 (not x7259))
+:assumption (or (not x28441) x21453)
+:assumption (or x5670 (not x9008) x187)
+:assumption (or (not x8891) x22198 x16329 (not x22506))
+:assumption (or (not x3835) (not x22236))
+:assumption (or (not x3521) (not x23364))
+:assumption (or x21056 (not x21709))
+:assumption (or (not x25593) (not x10998))
+:assumption (or x13637 x4862 x4559 (not x7108))
+:assumption (or (not x22631) (not x11970) x14160 (not x20194) x6016 (not x28300))
+:assumption (or x5590 x27484)
+:assumption (or (not x25456) x31076)
+:assumption (or (not x5122) x18369 (not x20550))
+:assumption (or (not x17694) (not x12475))
+:assumption (or (not x30380) x31397)
+:assumption (or x6635 (not x29442) x28178 x15034 x5896 x9576 (not x5028))
+:assumption (or x27427 (not x25868))
+:assumption (or (not x7526) x9023)
+:assumption (or (not x15762) (not x9108))
+:assumption (or (not x12150) x6490 x8867 (not x1747))
+:assumption (or x10528 (not x31605))
+:assumption (or (not x5275) (not x5767) (not x24494) x4696)
+:assumption (or x23992 x4098)
+:assumption (or (not x12685) x9424)
+:assumption (or x13479 x352)
+:assumption (or x25664 x30250)
+:assumption (or (not x13956) x23046)
+:assumption (or (not x23194) (not x14315))
+:assumption (or (not x21298) x13896 x30907)
+:assumption (or x13468 (not x691))
+:assumption (or (not x31738) (not x11374))
+:assumption (or x22521 (not x8002))
+:assumption (or (not x5506) (not x26897))
+:assumption (or x2411 x16324 x12517 (not x19203) (not x269))
+:assumption (or x14074 x25525)
+:assumption (or x1757 (not x11164))
+:assumption (or (not x9063) x12191)
+:assumption (or (not x1271) (not x30931))
+:assumption (or (not x23153) (not x26401) (not x19753) x19660 (not x6323) (not x30538) (not x13527) (not x7717) (not x8191))
+:assumption (or x2225 (not x24949))
+:assumption (or x15100 x27458)
+:assumption (or (not x29538) (not x2254))
+:assumption (or (not x7778) (not x16939))
+:assumption (or x25807 (not x26867))
+:assumption (or (not x7442) x6814)
+:assumption (or x8288 (not x18455))
+:assumption (or (not x23980) (not x4058) (not x8828))
+:assumption (or x4419 x3116)
+:assumption (or (not x21957) (not x18088))
+:assumption (or x27103 (not x1966))
+:assumption (or (not x13901) x565)
+:assumption (or (not x7582) (not x13525))
+:assumption (or x31626 x13517)
+:assumption (or (not x13843) x22968)
+:assumption (or (not x21653) (not x8084))
+:assumption (or (not x8002) x24176)
+:assumption (or x7978 x6098)
+:assumption (or x2308 x14415)
+:assumption (or x5556 (not x17296))
+:assumption (or (not x1181) x5239)
+:assumption (or x16330 x9008)
+:assumption (or x17923 (not x25179))
+:assumption (or (not x25336) x4451)
+:assumption (or x13186 (not x1516))
+:assumption (or x4622 (not x10407))
+:assumption (or x20844 x5352)
+:assumption (or (not x23244) x16440)
+:assumption (or x16167 (not x4180))
+:assumption (or x2299 (not x7512))
+:assumption (or x13761 x13576)
+:assumption (or (not x6547) (not x29098))
+:assumption (or (not x15058) x12756)
+:assumption (or (not x12654) (not x26937))
+:assumption (or (not x19017) x827)
+:assumption (or x7034 (not x9356))
+:assumption (or (not x15199) (not x22312))
+:assumption (or (not x1013) (not x12239))
+:assumption (or (not x19437) x16955)
+:assumption (or x26087 (not x26189))
+:assumption (or (not x1757) (not x2729) x28294 (not x28249) x11164)
+:assumption (or (not x20228) (not x3643))
+:assumption (or (not x8002) (not x22118))
+:assumption (or x31782 (not x30351))
+:assumption (or (not x3913) (not x969))
+:assumption (or x31831 (not x20879))
+:assumption (or (not x19997) x2250)
+:assumption (or (not x2303) (not x16218))
+:assumption (or x12812 (not x23667) x8064 x11780 (not x10523) (not x3615) (not x15126) (not x28732))
+:assumption (or (not x8750) (not x28945))
+:assumption (or (not x17359) (not x10241))
+:assumption (or (not x3222) (not x20402))
+:assumption (or (not x18156) (not x8819))
+:assumption (or (not x21957) x1568 x18976 x7559 x26626 (not x23891) (not x30391) (not x6438))
+:assumption (or x8160 x25784)
+:assumption (or (not x14187) x27242)
+:assumption (or (not x4495) (not x7861))
+:assumption (or x28002 (not x6444))
+:assumption (or (not x8927) (not x29336))
+:assumption (or (not x8602) (not x8095))
+:assumption (or (not x11375) (not x10103) x1182 x29776 x15537 x8117)
+:assumption (or x14580 (not x11166) x7740)
+:assumption (or x22628 (not x11676))
+:assumption (or (not x1358) x26150)
+:assumption (or (not x26741) (not x25328))
+:assumption (or (not x13907) x12653)
+:assumption (or (not x19952) (not x24443) x9008 x5876 (not x17710) (not x27504))
+:assumption (or (not x13742) (not x23610) (not x8363) x4377)
+:assumption (or x18694 (not x20912))
+:assumption (or x552 (not x25998))
+:assumption (or x30738 x739)
+:assumption (or (not x21360) x15211)
+:assumption (or x16809 x13270)
+:assumption (or (not x24368) (not x8002))
+:assumption (or x9107 x24883)
+:assumption (or x10357 x18871 (not x30771))
+:assumption (or x18567 x9278 (not x18436) (not x23285))
+:assumption (or (not x14347) (not x16966))
+:assumption (or (not x25257) x14632)
+:assumption (or (not x16776) (not x18550))
+:assumption (or x28163 (not x8122))
+:assumption (or (not x28117) x3025)
+:assumption (or (not x25038) (not x5374))
+:assumption (or x21026 (not x29295) x909 (not x14890))
+:assumption (or (not x27475) (not x30518))
+:assumption (or (not x25642) (not x4901))
+:assumption (or (not x26587) (not x4466))
+:assumption (or (not x31417) (not x17282))
+:assumption (or x4451 x5851)
+:assumption (or (not x30911) x24849)
+:assumption (or x26710 x23431)
+:assumption (or x23244 (not x27483) (not x8002))
+:assumption (or x20831 (not x30505))
+:assumption (or x7512 (not x1120) x1144)
+:assumption (or x25068 x12083 (not x26107))
+:assumption (or (not x17500) (not x6596) x21653)
+:assumption (or (not x23945) x26270 (not x4799) x11085 x18295 x5546)
+:assumption (or (not x10918) x933)
+:assumption (or x18719 x8664)
+:assumption (or (not x10539) (not x24304))
+:assumption (or (not x908) (not x22219))
+:assumption (or (not x19992) x30663)
+:assumption (or (not x8279) (not x20576))
+:assumption (or x28519 x27455)
+:assumption (or (not x9888) x9419)
+:assumption (or x23007 (not x29327))
+:assumption (or x4118 x25489)
+:assumption (or (not x23998) (not x7816))
+:assumption (or (not x14059) x26647)
+:assumption (or (not x19830) x22116)
+:assumption (or (not x19303) (not x28345) x29420 (not x19572) x13435 (not x7111))
+:assumption (or x29101 x6191)
+:assumption (or x25296 (not x4311))
+:assumption (or x17262 x25224)
+:assumption (or (not x7316) x29371)
+:assumption (or x25659 x23515)
+:assumption (or (not x8455) x17094)
+:assumption (or x13395 (not x29269) x5528)
+:assumption (or (not x16510) x7806)
+:assumption (or x12160 (not x10510))
+:assumption (or (not x16408) (not x12646))
+:assumption (or x18042 (not x3659))
+:assumption (or (not x3041) x918)
+:assumption (or x19173 x4648)
+:assumption (or (not x26887) x22860)
+:assumption (or (not x5187) x21815)
+:assumption (or (not x10081) x25352)
+:assumption (or x21232 x1790)
+:assumption (or (not x15793) (not x25315) (not x10510))
+:assumption (or (not x10018) x2206)
+:assumption (or x7893 x24279)
+:assumption (or x25334 x9104 x22023 x16480)
+:assumption (or (not x15005) (not x22967) x3982 (not x3752))
+:assumption (or x3866 (not x24811))
+:assumption (or (not x19712) x30087 x16745 (not x10770))
+:assumption (or x17350 (not x15041))
+:assumption (or x749 x21653)
+:assumption (or (not x1119) x10525)
+:assumption (or x24314 x5638 x23598 (not x26284) x22641)
+:assumption (or x20770 x31482)
+:assumption (or x15828 (not x30698))
+:assumption (or x15634 x2964)
+:assumption (or x20245 x25495)
+:assumption (or x9008 (not x966))
+:assumption (or x30813 x8654)
+:assumption (or x20402 (not x26004))
+:assumption (or x22743 x23145)
+:assumption (or (not x27102) (not x15917))
+:assumption (or x6594 x17534 x28130 x18128)
+:assumption (or x19353 x23178)
+:assumption (or (not x3532) x30194)
+:assumption (or x13979 x6960)
+:assumption (or x9865 x22534)
+:assumption (or (not x17359) (not x31886) x28997 x11281)
+:assumption (or (not x9782) (not x11703))
+:assumption (or (not x5732) (not x22148))
+:assumption (or (not x1542) x11859)
+:assumption (or (not x12476) x16900)
+:assumption (or (not x20455) x13)
+:assumption (or (not x2881) (not x11318))
+:assumption (or x7845 x27094)
+:assumption (or (not x18791) (not x26368))
+:assumption (or x16253 (not x20351))
+:assumption (or (not x2492) (not x13903))
+:assumption (or (not x6243) (not x14681))
+:assumption (or x23991 (not x183))
+:assumption (or x26582 x4978)
+:assumption (or (not x1812) (not x23244) x28973)
+:assumption (or x30436 (not x26220))
+:assumption (or x27361 (not x4742))
+:assumption (or (not x20704) (not x7494))
+:assumption (or (not x4881) (not x7127))
+:assumption (or (not x14839) (not x13688))
+:assumption (or (not x26573) (not x8072))
+:assumption (or x20455 (not x28555) (not x2559) x11969 (not x3782))
+:assumption (or (not x31782) (not x5955))
+:assumption (or x9854 x2948)
+:assumption (or x8996 (not x16936))
+:assumption (or (not x18973) (not x19808))
+:assumption (or x7531 (not x28086))
+:assumption (or x23432 (not x25420) (not x5528) (not x31885) x5054 x22332)
+:assumption (or (not x28471) x21960)
+:assumption (or (not x31906) (not x10281))
+:assumption (or (not x6852) (not x7339))
+:assumption (or x3523 x13196)
+:assumption (or x18851 (not x8916))
+:assumption (or (not x30817) (not x6050))
+:assumption (or (not x14578) x16337)
+:assumption (or (not x17588) (not x20410) (not x1547))
+:assumption (or x13122 (not x4759))
+:assumption (or x38 (not x26422))
+:assumption (or (not x17919) (not x23559))
+:assumption (or x13153 (not x29496))
+:assumption (or (not x12910) x26314)
+:assumption (or (not x27234) x3503)
+:assumption (or x2847 (not x25482))
+:assumption (or x29981 (not x13500))
+:assumption (or (not x19552) x8234)
+:assumption (or x24267 (not x13168))
+:assumption (or (not x19958) (not x16096) x9051 (not x20222) (not x23353) (not x30572) x30782 (not x27613))
+:assumption (or (not x30592) x20197)
+:assumption (or (not x17060) x17534)
+:assumption (or (not x16034) (not x14862))
+:assumption (or x17571 x12609)
+:assumption (or x30704 x5528)
+:assumption (or (not x17503) (not x20014))
+:assumption (or (not x10190) (not x16081))
+:assumption (or x119 x13036 (not x29807))
+:assumption (or x30954 (not x26277))
+:assumption (or (not x24981) (not x5688))
+:assumption (or x24509 x5734 x5900 x12754)
+:assumption (or x8869 x30751)
+:assumption (or x8351 x7325)
+:assumption (or x24539 x4028)
+:assumption (or x11321 (not x9014))
+:assumption (or (not x16382) x22495)
+:assumption (or (not x7040) (not x541) (not x26389) x15810 (not x30876))
+:assumption (or x17796 x30215 x3096 (not x23566) x31152)
+:assumption (or (not x24577) (not x5561))
+:assumption (or (not x30232) (not x30836))
+:assumption (or (not x29869) (not x131))
+:assumption (or (not x24857) x11733)
+:assumption (or x15007 (not x23795))
+:assumption (or (not x16834) (not x31655))
+:assumption (or (not x8238) (not x2152))
+:assumption (or x14538 (not x20997) x8602)
+:assumption (or (not x28412) (not x9040))
+:assumption (or (not x29478) (not x28541) (not x19526) x17734)
+:assumption (or (not x31229) x8579 x71 (not x5947) (not x29176) (not x13956))
+:assumption (or (not x27384) x6997)
+:assumption (or x28350 (not x1184))
+:assumption (or x4519 (not x15409) x14467 x10181)
+:assumption (or x4414 (not x10335))
+:assumption (or (not x27827) x24900 (not x11857) x22480 x1442 (not x10671) x8460 (not x5630) x10381)
+:assumption (or (not x8724) (not x13424))
+:assumption (or (not x8421) (not x4618))
+:assumption (or x11359 (not x23206))
+:assumption (or (not x15266) x20464)
+:assumption (or x13357 x7902)
+:assumption (or x8242 x16437)
+:assumption (or x11176 x3533)
+:assumption (or x16151 x1920)
+:assumption (or x9902 x990)
+:assumption (or (not x16006) x23296)
+:assumption (or (not x16389) (not x21414) x25659)
+:assumption (or (not x10881) x6324)
+:assumption (or x18223 (not x15818))
+:assumption (or (not x21291) x29052)
+:assumption (or (not x14957) (not x24205))
+:assumption (or x8877 (not x1518))
+:assumption (or x16117 x22589)
+:assumption (or (not x13847) (not x13956))
+:assumption (or x2334 (not x27605))
+:assumption (or x19820 (not x25082))
+:assumption (or (not x19864) x6481)
+:assumption (or (not x12669) (not x21969) (not x23122))
+:assumption (or x5896 (not x22133) (not x16743))
+:assumption (or (not x20402) (not x23244) x17508)
+:assumption (or x24833 (not x31674))
+:assumption (or x26718 x11250)
+:assumption (or x18409 (not x865))
+:assumption (or (not x26403) (not x21172))
+:assumption (or x24890 x10359)
+:assumption (or (not x19361) (not x7529) x4130 x4158 x13884)
+:assumption (or x9777 (not x30060))
+:assumption (or x14452 (not x619))
+:assumption (or (not x9021) x25900)
+:assumption (or (not x8290) (not x14141))
+:assumption (or x2866 (not x20679))
+:assumption (or (not x29587) x30104)
+:assumption (or x3435 x15447 x3414 x14011)
+:assumption (or (not x14731) (not x5771))
+:assumption (or x11264 x404)
+:assumption (or x2045 (not x17532))
+:assumption (or (not x27001) x16888)
+:assumption (or (not x23577) (not x29177) x881 x1143 x31912 (not x4570) x17474)
+:assumption (or (not x25514) (not x6891))
+:assumption (or (not x23849) (not x22549))
+:assumption (or (not x18007) x1015)
+:assumption (or x2914 (not x14802) (not x22314))
+:assumption (or (not x17515) (not x11938) (not x17854) x13072 x20056)
+:assumption (or x2561 (not x13956))
+:assumption (or (not x7200) (not x30493) (not x26164) (not x18804))
+:assumption (or (not x17001) (not x17021))
+:assumption (or (not x4250) x16290)
+:assumption (or x17828 x2343)
+:assumption (or (not x11187) (not x7378))
+:assumption (or (not x27667) (not x7460) x20151 (not x22931) x24601 x13906 x1582 x21688)
+:assumption (or x3794 x22572 (not x11559) x24231 (not x14774))
+:assumption (or (not x30977) x17471)
+:assumption (or x14517 x15518)
+:assumption (or (not x26192) (not x20201))
+:assumption (or x15525 (not x535))
+:assumption (or x31410 (not x5036) x5528)
+:assumption (or x17507 x28539)
+:assumption (or x16976 (not x17290))
+:assumption (or (not x31798) x24632)
+:assumption (or x23447 x31238)
+:assumption (or (not x20171) x13700)
+:assumption (or x22209 (not x21911))
+:assumption (or x1716 x14176)
+:assumption (or x26587 (not x2469) (not x18419) x17064 x4466)
+:assumption (or (not x918) (not x13107))
+:assumption (or x23538 x7292 (not x15400) (not x16907))
+:assumption (or x8002 (not x16396))
+:assumption (or (not x6819) (not x6562))
+:assumption (or x30831 (not x10909))
+:assumption (or x1539 x9774 x11307)
+:assumption (or x18138 x18116)
+:assumption (or (not x17660) (not x5756))
+:assumption (or (not x16285) x5205)
+:assumption (or (not x28437) x15899)
+:assumption (or (not x27596) (not x16638) x27986)
+:assumption (or (not x6243) x10204)
+:assumption (or x29841 (not x24452))
+:assumption (or (not x22406) x21202)
+:assumption (or x8111 x1426)
+:assumption (or (not x1136) x9369)
+:assumption (or x9305 (not x10733))
+:assumption (or x20850 (not x9779) x3050 x2952)
+:assumption (or (not x30161) (not x3075))
+:assumption (or x4551 (not x26555))
+:assumption (or x13026 x9228)
+:assumption (or (not x25728) x26641 (not x4754) x12188 (not x4386) x11318 x8130)
+:assumption (or x29611 x28510)
+:assumption (or (not x7835) x7579 x2133 x12324)
+:assumption (or (not x30831) x10909 x6739)
+:assumption (or (not x9651) x17075 (not x19735))
+:assumption (or (not x15880) (not x19099))
+:assumption (or (not x1148) (not x16180))
+:assumption (or x1845 x374)
+:assumption (or (not x29237) (not x20116))
+:assumption (or x17571 x15412)
+:assumption (or (not x9399) x18339)
+:assumption (or (not x30401) (not x31295))
+:assumption (or (not x23624) x26647 x8002 x13956 x23244 (not x1042))
+:assumption (or (not x2257) (not x981))
+:assumption (or (not x31142) (not x12506))
+:assumption (or x31368 (not x27645))
+:assumption (or (not x16197) x4366)
+:assumption (or x2643 x16353)
+:assumption (or (not x27069) x11142)
+:assumption (or (not x9531) x552)
+:assumption (or (not x23700) (not x3324))
+:assumption (or x2331 (not x5588))
+:assumption (or (not x29314) x6467)
+:assumption (or (not x24875) x20230)
+:assumption (or x11770 (not x3701))
+:assumption (or (not x8002) x905)
+:assumption (or x29066 x24141)
+:assumption (or (not x12242) x19448)
+:assumption (or x6778 x20856 (not x30805))
+:assumption (or (not x7660) (not x14430))
+:assumption (or x21298 (not x21315))
+:assumption (or x17891 x25784 (not x12755) (not x14199) x24771 (not x6291) x16704)
+:assumption (or (not x2621) (not x8306))
+:assumption (or (not x14206) x12557 (not x6525) (not x13568))
+:assumption (or x23244 (not x8002) (not x14181))
+:assumption (or (not x9588) (not x31614) (not x17141) x3471 x21332 x30685 (not x11783))
+:assumption (or (not x16837) x9329)
+:assumption (or x30619 (not x6274))
+:assumption (or x23101 (not x14766) x11345 (not x4212) (not x25128) x28874 x29801 x2686)
+:assumption (or x26284 x27250 (not x13018))
+:assumption (or x28974 x4030)
+:assumption (or x21633 (not x24393))
+:assumption (or x1973 (not x20148))
+:assumption (or (not x3045) (not x10624))
+:assumption (or (not x4056) (not x12287))
+:assumption (or x3587 (not x30300))
+:assumption (or (not x9211) (not x29365) x14475)
+:assumption (or (not x8602) (not x4395))
+:assumption (or x18468 (not x23306))
+:assumption (or x5220 x9061)
+:assumption (or (not x15818) x24757)
+:assumption (or x19964 x9008 x13887)
+:assumption (or (not x23098) (not x27036))
+:assumption (or (not x22545) (not x22531) (not x31651))
+:assumption (or (not x24679) x17521 (not x2863) x31286 (not x30524))
+:assumption (or x21156 x1042)
+:assumption (or x6515 (not x17054))
+:assumption (or (not x29523) x20558)
+:assumption (or x1285 (not x22798))
+:assumption (or x8138 (not x8636))
+:assumption (or x480 x4581)
+:assumption (or (not x29649) x13866)
+:assumption (or x29977 (not x22854))
+:assumption (or (not x31499) (not x13755))
+:assumption (or x23958 x28615)
+:assumption (or x2766 (not x21702))
+:assumption (or x13284 x2690)
+:assumption (or x11175 (not x8071))
+:assumption (or x2500 (not x4471) x11232)
+:assumption (or x4118 (not x28361))
+:assumption (or (not x13745) (not x31557))
+:assumption (or (not x5260) x16349)
+:assumption (or x28605 x29066)
+:assumption (or (not x13499) x21225)
+:assumption (or (not x10448) (not x25420))
+:assumption (or x10012 (not x1671))
+:assumption (or x3764 x2701)
+:assumption (or x19877 x8489)
+:assumption (or x28571 (not x13681) x19881)
+:assumption (or x16994 (not x6852) x29959)
+:assumption (or x14840 (not x27054))
+:assumption (or (not x24624) x12116)
+:assumption (or x13889 x21069)
+:assumption (or (not x21573) x21239)
+:assumption (or (not x16677) x21795)
+:assumption (or x22232 (not x9391))
+:assumption (or (not x3182) (not x24766))
+:assumption (or (not x13956) (not x19844) x26284)
+:assumption (or x6014 x15142)
+:assumption (or (not x29044) (not x534))
+:assumption (or (not x8002) x29064 (not x31124) (not x4378))
+:assumption (or x22701 (not x5089))
+:assumption (or x8887 (not x14800))
+:assumption (or x31744 (not x24079))
+:assumption (or x12876 x25226)
+:assumption (or (not x19235) (not x9008) (not x26526))
+:assumption (or (not x9608) (not x28242))
+:assumption (or (not x6379) (not x4163))
+:assumption (or (not x10265) (not x7466))
+:assumption (or x31134 (not x21968) (not x3440) (not x12511) x18274)
+:assumption (or (not x17749) x20723 (not x25159) x27528)
+:assumption (or x2133 (not x27129))
+:assumption (or (not x2676) x23465)
+:assumption (or (not x12242) x7155)
+:assumption (or x31574 (not x29312) (not x12390) x29693)
+:assumption (or x24655 x4087)
+:assumption (or x8525 x1927)
+:assumption (or (not x30114) x23464)
+:assumption (or (not x5789) (not x12518))
+:assumption (or x17113 (not x26352))
+:assumption (or (not x18353) x24667)
+:assumption (or (not x21139) x17627)
+:assumption (or (not x3944) x12800)
+:assumption (or x8750 (not x5528))
+:assumption (or x23401 (not x20979))
+:assumption (or (not x13427) x4795 (not x8961) (not x23899) x4334 x22567)
+:assumption (or x10416 (not x18899))
+:assumption (or (not x6968) x4370)
+:assumption (or (not x14717) (not x29815))
+:assumption (or x16035 (not x6894))
+:assumption (or (not x22673) (not x31574) x24140 (not x31879))
+:assumption (or x26805 (not x23581))
+:assumption (or (not x18066) x14005)
+:assumption (or (not x15153) (not x9531))
+:assumption (or (not x15795) x741)
+:assumption (or (not x14389) (not x13103))
+:assumption (or (not x18503) x21818 x17359 (not x22780) (not x13788))
+:assumption (or (not x11459) x27442)
+:assumption (or x20956 x30582)
+:assumption (or x20083 x16604)
+:assumption (or x2500 (not x23727))
+:assumption (or x7383 (not x16677))
+:assumption (or x3410 x19123)
+:assumption (or x4270 (not x4257))
+:assumption (or x26831 x8532)
+:assumption (or x3092 (not x24079))
+:assumption (or (not x27178) x27168)
+:assumption (or (not x19071) x37 x16241 x10788 (not x3269) x3274 x17411)
+:assumption (or (not x2656) (not x24926))
+:assumption (or x9008 (not x23375))
+:assumption (or (not x30884) x20935)
+:assumption (or x2152 (not x22090) x25457 x14073 x5411)
+:assumption (or (not x19330) (not x31314))
+:assumption (or x6418 (not x11151))
+:assumption (or (not x15461) (not x15650))
+:assumption (or x29515 (not x27124))
+:assumption (or (not x5208) (not x1183) x4365 x743 x10256)
+:assumption (or (not x17755) (not x9779))
+:assumption (or x13203 (not x9008))
+:assumption (or (not x9779) x27137)
+:assumption (or x30584 x22409)
+:assumption (or x28973 (not x23209))
+:assumption (or x24293 (not x27152))
+:assumption (or (not x14636) (not x31543))
+:assumption (or (not x11554) x21404)
+:assumption (or x5929 (not x22051))
+:assumption (or (not x20450) x282)
+:assumption (or x8107 x24474)
+:assumption (or (not x30868) x14687 x15957 (not x26696))
+:assumption (or (not x18862) x4386)
+:assumption (or (not x3277) (not x13877))
+:assumption (or (not x25287) x24739)
+:assumption (or (not x519) (not x1862) x21112)
+:assumption (or (not x12212) (not x12369))
+:assumption (or x299 (not x6144))
+:assumption (or (not x19992) (not x13135))
+:assumption (or (not x15364) (not x11064) (not x1582) x20549)
+:assumption (or (not x27939) (not x3899))
+:assumption (or (not x13576) (not x13097))
+:assumption (or x4100 (not x537))
+:assumption (or x30538 x7717)
+:assumption (or x27246 (not x5415))
+:assumption (or (not x16084) (not x4069))
+:assumption (or x2976 (not x22436))
+:assumption (or (not x1641) (not x29799))
+:assumption (or (not x18137) (not x17367))
+:assumption (or (not x23244) x30050)
+:assumption (or (not x11459) x2583)
+:assumption (or x1304 (not x14736))
+:assumption (or x7890 x30329)
+:assumption (or x6606 x23656 x2024 (not x1062))
+:assumption (or (not x24422) x5524)
+:assumption (or x19322 x31892)
+:assumption (or x19592 x30751)
+:assumption (or (not x11623) x10427)
+:assumption (or x6126 x20727)
+:assumption (or x22846 (not x29684))
+:assumption (or x29559 (not x18791))
+:assumption (or x5806 x9103)
+:assumption (or (not x5294) x14839 (not x5780))
+:assumption (or x14455 (not x2337) x24079 (not x27589) x16374)
+:assumption (or (not x9178) x6450)
+:assumption (or x24854 x15761)
+:assumption (or x21069 x1679)
+:assumption (or x24149 (not x11306))
+:assumption (or (not x19416) x14199)
+:assumption (or x8979 (not x9488) (not x16705) x11936)
+:assumption (or x22908 (not x19756))
+:assumption (or (not x8586) (not x17018))
+:assumption (or (not x24035) (not x27199))
+:assumption (or x27989 x19937)
+:assumption (or x8002 (not x29463))
+:assumption (or x23965 x1153)
+:assumption (or (not x9037) (not x9699) (not x2474) (not x17175) x26396 x4624 (not x29246))
+:assumption (or (not x27643) x4675)
+:assumption (or (not x19535) x19384)
+:assumption (or (not x5391) (not x25974))
+:assumption (or (not x6969) x28289 x4864)
+:assumption (or (not x6898) x28916)
+:assumption (or x28164 (not x5574))
+:assumption (or x15621 x24520)
+:assumption (or (not x6578) (not x16213))
+:assumption (or x13675 (not x16244))
+:assumption (or (not x30992) x8586 (not x16545) (not x19273))
+:assumption (or x12189 x30822 (not x7695) (not x3023) (not x25230) x601 (not x25597) x30193)
+:assumption (or (not x26813) (not x28659))
+:assumption (or (not x5904) x4657)
+:assumption (or (not x27010) x2039 x29650)
+:assumption (or (not x18859) (not x24411))
+:assumption (or x12678 x13968)
+:assumption (or (not x30919) (not x19688))
+:assumption (or x2517 x14029)
+:assumption (or x21907 x11494)
+:assumption (or (not x31886) x22780)
+:assumption (or x19875 (not x23382))
+:assumption (or (not x1260) (not x10006))
+:assumption (or (not x30891) x31597)
+:assumption (or (not x14210) (not x7177))
+:assumption (or (not x28716) (not x2109))
+:assumption (or x1789 (not x28965))
+:assumption (or x3630 x902)
+:assumption (or (not x15746) x5471 x22685 x11567 (not x27839) x2880 x30102 (not x17364) (not x12977))
+:assumption (or x19240 (not x20885) (not x16365))
+:assumption (or (not x3242) (not x7395) x2150)
+:assumption (or x4478 (not x2987))
+:assumption (or x22470 (not x8002))
+:assumption (or (not x21826) (not x31286))
+:assumption (or x18415 x13336)
+:assumption (or x14381 (not x23806))
+:assumption (or (not x22288) x27947)
+:assumption (or x471 (not x3782))
+:assumption (or (not x25471) (not x25589))
+:assumption (or x7529 x11977)
+:assumption (or x17668 x13004)
+:assumption (or x30987 x28388)
+:assumption (or (not x29630) (not x25347))
+:assumption (or x21853 (not x7180))
+:assumption (or (not x26801) (not x12233))
+:assumption (or x1453 x11750)
+:assumption (or x26670 x480 (not x16510) (not x21815) x5623)
+:assumption (or x16025 (not x12956) (not x17047))
+:assumption (or (not x228) x24054 (not x9809) x7286 (not x1008) (not x12703))
+:assumption (or (not x14474) x14569 x11347 (not x22471) (not x7985) (not x12462) x23990)
+:assumption (or (not x23244) (not x6089))
+:assumption (or (not x7602) (not x1973))
+:assumption (or (not x17023) (not x23641))
+:assumption (or x16719 x10078)
+:assumption (or (not x18682) x2972 (not x28073))
+:assumption (or x1193 x26112)
+:assumption (or (not x27818) (not x27148) x10662)
+:assumption (or (not x13411) x19458)
+:assumption (or (not x29218) x2316)
+:assumption (or (not x2860) (not x4848))
+:assumption (or (not x30947) (not x7703))
+:assumption (or (not x4932) x10075)
+:assumption (or x11538 x14839 (not x12196) x14100)
+:assumption (or x24730 (not x17952))
+:assumption (or (not x1582) x22289)
+:assumption (or (not x25475) x20273)
+:assumption (or (not x28699) x3541)
+:assumption (or x3547 (not x26493))
+:assumption (or x6755 x23234)
+:assumption (or x14195 (not x25224))
+:assumption (or x17993 x6515)
+:assumption (or (not x9702) (not x29419))
+:assumption (or x24177 x341)
+:assumption (or (not x30146) x8508)
+:assumption (or (not x5528) (not x9008) (not x1042) x21407 x31581)
+:assumption (or x31932 x6853)
+:assumption (or (not x21653) x725 x22418)
+:assumption (or (not x20433) x7173)
+:assumption (or (not x16149) (not x28010))
+:assumption (or x9961 (not x6360))
+:assumption (or x8002 x15280 x15950)
+:assumption (or (not x5590) x11572)
+:assumption (or x31507 (not x4901))
+:assumption (or (not x20246) x8714)
+:assumption (or x13780 x10383)
+:assumption (or x17403 (not x2574))
+:assumption (or (not x12128) (not x1393))
+:assumption (or (not x1920) (not x17561))
+:assumption (or (not x2044) (not x30481))
+:assumption (or x5528 x30989)
+:assumption (or (not x14679) (not x27750) x16664 (not x8183))
+:assumption (or (not x28425) (not x12119))
+:assumption (or x3711 (not x7924) (not x16304))
+:assumption (or (not x14579) x14478)
+:assumption (or x24438 x3350 (not x8229))
+:assumption (or (not x5162) (not x18943))
+:assumption (or x31537 x11708)
+:assumption (or (not x23244) (not x5947) x16208)
+:assumption (or (not x6949) x16482)
+:assumption (or x27854 (not x5750))
+:assumption (or x19415 x23968)
+:assumption (or x8019 x3338)
+:assumption (or x195 (not x17281))
+:assumption (or (not x21953) (not x17137))
+:assumption (or x25376 (not x8103))
+:assumption (or (not x22315) x15502)
+:assumption (or x24173 (not x23205))
+:assumption (or x19686 (not x4103))
+:assumption (or x26647 x5861 x22115 (not x16757))
+:assumption (or (not x8770) (not x21298))
+:assumption (or (not x6189) x6394)
+:assumption (or x168 (not x22796) x12529 x25577 x22781)
+:assumption (or (not x468) (not x30475))
+:assumption (or (not x10616) (not x29606))
+:assumption (or (not x18338) x31874)
+:assumption (or x29196 x19784)
+:assumption (or x18003 (not x21542) x3575 x19219 x29108)
+:assumption (or x9226 x29263)
+:assumption (or x30409 (not x12272))
+:assumption (or x11417 (not x14147))
+:assumption (or (not x16375) x21986 (not x3213) x5832 x16731 (not x10947) (not x4990) x10844 x2761)
+:assumption (or x4475 x1867)
+:assumption (or (not x19417) x10237 x21653)
+:assumption (or x25838 (not x22594))
+:assumption (or (not x62) (not x11134))
+:assumption (or x27091 x24433 x28912 (not x21815) x19864 (not x16510) x4306)
+:assumption (or x2716 x30583)
+:assumption (or x23112 (not x3301))
+:assumption (or (not x10539) x31445)
+:assumption (or x26348 x19770)
+:assumption (or (not x23195) (not x2345))
+:assumption (or x312 x25297 (not x827))
+:assumption (or x10801 x23085)
+:assumption (or (not x27420) (not x28770))
+:assumption (or (not x16727) x243)
+:assumption (or (not x11) (not x19156) x25793 x18231 x24930)
+:assumption (or x3764 x2697)
+:assumption (or (not x26591) (not x17855))
+:assumption (or (not x15463) x27392)
+:assumption (or x28987 x3185)
+:assumption (or (not x12844) (not x31426))
+:assumption (or x27516 (not x5045))
+:assumption (or x2913 x16510)
+:assumption (or x20405 (not x22998))
+:assumption (or (not x2210) (not x4039))
+:assumption (or x6173 (not x22977) (not x28541))
+:assumption (or (not x4051) x1620)
+:assumption (or x4405 (not x16583) (not x6149) x11792)
+:assumption (or x6761 x2902)
+:assumption (or x20368 x16138 (not x19930) x6651)
+:assumption (or (not x9435) x13540)
+:assumption (or (not x7106) x31173)
+:assumption (or (not x218) (not x24687))
+:assumption (or (not x3308) x15459)
+:assumption (or x6070 x21298)
+:assumption (or x8594 (not x4838))
+:assumption (or (not x3893) x16503)
+:assumption (or (not x19721) x16752)
+:assumption (or (not x14896) (not x1676))
+:assumption (or x13956 x18369 x21327)
+:assumption (or x18069 x4465)
+:assumption (or x21653 (not x15633) x20698)
+:assumption (or x12420 x2085)
+:assumption (or x31636 (not x17426))
+:assumption (or (not x7168) x7650)
+:assumption (or x19105 (not x27716))
+:assumption (or x20033 (not x6351))
+:assumption (or x3466 x4357)
+:assumption (or x30975 (not x20030) (not x26175))
+:assumption (or x11282 (not x18083))
+:assumption (or (not x26031) (not x4712))
+:assumption (or x8740 (not x991))
+:assumption (or x19428 (not x24172))
+:assumption (or x8602 x27446 x31578 x3549 x28 x10391 (not x27635) x8287)
+:assumption (or x31750 (not x6387))
+:assumption (or x4456 (not x13932))
+:assumption (or (not x14974) (not x19534) (not x12698) (not x21298))
+:assumption (or x2180 (not x15805))
+:assumption (or x29797 (not x22355))
+:assumption (or (not x5696) x20218)
+:assumption (or x20882 x21298)
+:assumption (or x26544 (not x6917))
+:assumption (or (not x318) (not x27884))
+:assumption (or x5528 (not x22014) x22154)
+:assumption (or x1209 x1284)
+:assumption (or (not x4438) x18765)
+:assumption (or x30647 (not x29645) x5367)
+:assumption (or (not x23963) (not x2753))
+:assumption (or x16223 x11154)
+:assumption (or (not x18192) x169)
+:assumption (or (not x206) (not x17539))
+:assumption (or (not x8002) (not x29256))
+:assumption (or (not x25373) x9388)
+:assumption (or x2450 (not x4552))
+:assumption (or (not x12034) x3792)
+:assumption (or x2695 x23561)
+:assumption (or x24755 (not x1785))
+:assumption (or x3396 x23801)
+:assumption (or x8311 (not x27251))
+:assumption (or (not x6045) (not x10374))
+:assumption (or (not x14605) (not x21477))
+:assumption (or (not x18811) x729)
+:assumption (or (not x24084) x12188)
+:assumption (or x11762 x21839)
+:assumption (or (not x11459) (not x17212))
+:assumption (or (not x1777) (not x22819))
+:assumption (or x6693 x20909)
+:assumption (or x26909 (not x26388))
+:assumption (or x5650 x25178)
+:assumption (or (not x28912) (not x1022))
+:assumption (or (not x7875) (not x11284))
+:assumption (or x29079 (not x17379) (not x13764) (not x30407))
+:assumption (or (not x20347) (not x2706))
+:assumption (or x3542 x16261)
+:assumption (or x30878 (not x30250) (not x7107) (not x26454) x3583 (not x18952))
+:assumption (or x13444 x3354)
+:assumption (or x1369 x26423)
+:assumption (or (not x9443) x15286)
+:assumption (or (not x4181) x24642)
+:assumption (or x29107 (not x218))
+:assumption (or x23072 x22574)
+:assumption (or x10806 x5604)
+:assumption (or (not x3532) x12905)
+:assumption (or (not x31912) x23577)
+:assumption (or (not x7173) (not x3654) x20433)
+:assumption (or x467 x21043 x9008)
+:assumption (or (not x5497) x10728)
+:assumption (or x1106 (not x29984))
+:assumption (or x18535 (not x15384))
+:assumption (or (not x3754) (not x3453))
+:assumption (or (not x6221) x13933 x7864 x29035 x12860 x8859 (not x1458) (not x21435))
+:assumption (or x27178 (not x13821))
+:assumption (or x26133 x1339 x6329)
+:assumption (or (not x13432) (not x28973))
+:assumption (or (not x18925) x5528)
+:assumption (or x29203 (not x12404) x3179 x6375 (not x16416))
+:assumption (or (not x10314) (not x13931))
+:assumption (or (not x2603) x5528)
+:assumption (or (not x18183) (not x2802))
+:assumption (or x26317 (not x21398))
+:assumption (or (not x969) x17598 (not x21864) (not x19040) (not x19871) x1667 (not x8912) x2004 x22562)
+:assumption (or x4178 x11134)
+:assumption (or x2583 (not x19711))
+:assumption (or x6914 x18788 (not x29312) (not x11656) (not x14208) (not x19137))
+:assumption (or x28538 x9038)
+:assumption (or (not x1477) x5368)
+:assumption (or x16304 x24530 x15795)
+:assumption (or x18851 (not x11756))
+:assumption (or (not x22754) (not x1393))
+:assumption (or x28833 (not x9341))
+:assumption (or x5394 x21090)
+:assumption (or (not x218) x21283)
+:assumption (or x9296 x28197)
+:assumption (or (not x5077) x14578)
+:assumption (or (not x15571) x12991)
+:assumption (or (not x12417) x2186)
+:assumption (or x3586 x31107)
+:assumption (or x30019 (not x6490))
+:assumption (or x5906 (not x28472))
+:assumption (or x1775 (not x23351))
+:assumption (or x25197 x14406)
+:assumption (or (not x1878) x25087)
+:assumption (or x15156 (not x23500))
+:assumption (or x15815 x16721)
+:assumption (or x254 (not x17507) x28541 x19961)
+:assumption (or x28254 x27636)
+:assumption (or (not x1499) x7491)
+:assumption (or x28023 x5395)
+:assumption (or (not x4881) x28077)
+:assumption (or (not x3541) x5091)
+:assumption (or (not x2876) x18799)
+:assumption (or x5623 x11795)
+:assumption (or (not x12951) x6380)
+:assumption (or (not x26897) (not x8641) x2240)
+:assumption (or (not x19974) x23944)
+:assumption (or (not x21846) x2707)
+:assumption (or x5862 (not x22740))
+:assumption (or (not x17129) (not x4764) (not x13261) x26845 (not x24102))
+:assumption (or x20370 x31318)
+:assumption (or (not x12045) x18490 x52)
+:assumption (or (not x17465) x1393)
+:assumption (or x7677 (not x11456))
+:assumption (or x20531 x528 (not x24307) x29649 (not x18858) (not x9863) x12682)
+:assumption (or (not x29406) (not x4410))
+:assumption (or x4821 x10709)
+:assumption (or (not x9483) (not x1709))
+:assumption (or (not x8979) (not x29527) (not x15836) (not x11394) x15497)
+:assumption (or (not x1469) x20922)
+:assumption (or (not x4422) x26833 (not x3198))
+:assumption (or (not x23820) x21190)
+:assumption (or (not x29034) x3444)
+:assumption (or x29316 x4626)
+:assumption (or x26762 x17561 x1920)
+:assumption (or (not x7792) x22114)
+:assumption (or (not x4002) (not x202))
+:assumption (or x14524 x11897)
+:assumption (or x7079 x16842)
+:assumption (or x25659 x6250)
+:assumption (or (not x3078) x6416 x9733 (not x6691) x11846 x18985)
+:assumption (or x25973 (not x25781))
+:assumption (or x26189 x22441)
+:assumption (or x6873 (not x8854))
+:assumption (or (not x5280) x17029)
+:assumption (or (not x18448) (not x17430))
+:assumption (or (not x21711) (not x30262) x6121 x20594 (not x16945) (not x5183))
+:assumption (or x2608 x827)
+:assumption (or x15776 (not x11153))
+:assumption (or (not x6329) (not x16222))
+:assumption (or x31453 (not x24886))
+:assumption (or x16301 (not x11458))
+:assumption (or x31320 (not x6307) (not x9025))
+:assumption (or (not x24722) (not x23244) x757)
+:assumption (or x7578 x3264)
+:assumption (or x24382 x8020)
+:assumption (or x5122 x20550)
+:assumption (or x6381 x1814)
+:assumption (or (not x26469) x12677)
+:assumption (or (not x22495) x5258)
+:assumption (or x9008 (not x22061))
+:assumption (or x21355 x582 x28594)
+:assumption (or x25064 x28580)
+:assumption (or (not x7954) (not x3445))
+:assumption (or (not x12547) (not x6857))
+:assumption (or (not x8426) (not x25175))
+:assumption (or (not x16120) (not x20800) x14015)
+:assumption (or (not x7574) x9008)
+:assumption (or x19550 (not x11288))
+:assumption (or x7158 x12561)
+:assumption (or x18740 x1471)
+:assumption (or x3926 x355 (not x9715) (not x28530) (not x12442) (not x29442) x12776)
+:assumption (or x15348 x21353)
+:assumption (or (not x18523) (not x23244) x202)
+:assumption (or x10396 (not x21347))
+:assumption (or x12116 x7817 x77 (not x4371) x26469)
+:assumption (or x14207 (not x12077))
+:assumption (or (not x8776) (not x29959))
+:assumption (or x18114 x7888)
+:assumption (or x3659 x6562 (not x18042) x24722)
+:assumption (or x22132 (not x8234) x19540 (not x11122) (not x1013))
+:assumption (or x16439 (not x20649))
+:assumption (or x10704 x3403)
+:assumption (or (not x7711) x5886 x8961 (not x29569))
+:assumption (or x1652 (not x24259) x23370 (not x1836) x23999 (not x7293))
+:assumption (or (not x14726) x14591 x808)
+:assumption (or x8907 (not x26674))
+:assumption (or (not x30259) x28634)
+:assumption (or x10120 (not x30646))
+:assumption (or (not x6364) x22548)
+:assumption (or x3378 (not x17684))
+:assumption (or x19371 (not x18520))
+:assumption (or x28794 (not x11480) (not x28746) x5791 (not x1097))
+:assumption (or (not x3302) x30138)
+:assumption (or (not x16605) (not x13956))
+:assumption (or (not x27389) x16802)
+:assumption (or x28152 (not x18504))
+:assumption (or (not x7586) (not x26578))
+:assumption (or x13299 (not x17302))
+:assumption (or x5354 (not x918))
+:assumption (or x12239 (not x8687))
+:assumption (or (not x11051) x8142)
+:assumption (or x14270 (not x31258))
+:assumption (or (not x16809) x5528 (not x19389))
+:assumption (or x12045 x3720 x9989 x20949)
+:assumption (or x20077 (not x30822))
+:assumption (or (not x23870) x28618)
+:assumption (or (not x17078) x2138)
+:assumption (or (not x16847) x18320)
+:assumption (or x7015 (not x17420))
+:assumption (or (not x10128) (not x18565))
+:assumption (or x12068 (not x24395))
+:assumption (or (not x11079) (not x6754) (not x28912) (not x29649))
+:assumption (or (not x3773) (not x29312))
+:assumption (or x305 x22241)
+:assumption (or (not x288) x21754 x16510)
+:assumption (or x21561 x30507 x10053)
+:assumption (or (not x15573) x12143)
+:assumption (or (not x15093) (not x8002) (not x17713) (not x23244))
+:assumption (or (not x8219) (not x4253))
+:assumption (or (not x3560) x16683 x29017 x694)
+:assumption (or (not x21298) (not x17749) x27528 x18665)
+:assumption (or (not x7723) x4422)
+:assumption (or (not x20270) x26844)
+:assumption (or (not x25752) x14953)
+:assumption (or x16725 x6746 (not x30891))
+:assumption (or (not x22305) x20275)
+:assumption (or x29604 (not x7032))
+:assumption (or (not x23028) x7088)
+:assumption (or x22002 (not x13622))
+:assumption (or x6260 x18327)
+:assumption (or x29325 x5721)
+:assumption (or (not x23757) (not x8535))
+:assumption (or x18649 (not x30088))
+:assumption (or x24179 (not x8693))
+:assumption (or x28946 (not x23528))
+:assumption (or (not x1087) x6202)
+:assumption (or x17259 (not x1645) (not x12119))
+:assumption (or (not x3945) x18771)
+:assumption (or (not x9866) (not x19559))
+:assumption (or (not x28890) (not x3321))
+:assumption (or x3918 (not x14792))
+:assumption (or (not x29621) (not x19822))
+:assumption (or x4672 x4664)
+:assumption (or x7308 x202 (not x6972) (not x3001) (not x25224) (not x13185))
+:assumption (or (not x28564) x7365)
+:assumption (or (not x5303) x21026 (not x20021))
+:assumption (or x19467 x11506 x5156)
+:assumption (or (not x25838) (not x24965))
+:assumption (or x29257 (not x49))
+:assumption (or (not x485) (not x12380))
+:assumption (or x8809 (not x25315))
+:assumption (or (not x8002) x21763 (not x23244) x29903)
+:assumption (or (not x3862) x15821)
+:assumption (or (not x4145) (not x3795) x23244)
+:assumption (or x19428 x18245)
+:assumption (or x27419 x29554)
+:assumption (or (not x26774) x2659)
+:assumption (or (not x10531) x6987)
+:assumption (or x25617 (not x15867))
+:assumption (or x15102 (not x4432))
+:assumption (or x27219 x23833)
+:assumption (or (not x5065) x1166)
+:assumption (or x2323 x18418)
+:assumption (or (not x5284) (not x3843))
+:assumption (or (not x4026) x4825 x27012)
+:assumption (or (not x21986) (not x2761))
+:assumption (or x575 x98)
+:assumption (or (not x3184) (not x24650))
+:assumption (or x2213 (not x675))
+:assumption (or x27001 x12221 (not x23399))
+:assumption (or x18571 (not x20167) (not x34))
+:assumption (or x24043 x2556)
+:assumption (or x913 (not x10887) x6096 x17971 x24726 (not x6853) (not x15293) x19831)
+:assumption (or x3091 (not x17989))
+:assumption (or x18694 (not x30402) x2821)
+:assumption (or x20547 x25435)
+:assumption (or x27946 (not x2769))
+:assumption (or (not x8522) (not x20360))
+:assumption (or (not x2336) (not x2500))
+:assumption (or (not x14586) x31866)
+:assumption (or (not x13179) (not x12742))
+:assumption (or x24145 (not x16409))
+:assumption (or (not x24756) x10804 (not x22492))
+:assumption (or x5597 x17309 (not x14435))
+:assumption (or (not x2069) (not x15537))
+:assumption (or (not x7544) x30881)
+:assumption (or x5118 x11411)
+:assumption (or x29181 x1909)
+:assumption (or (not x30668) x27214)
+:assumption (or (not x19178) (not x31633))
+:assumption (or x17135 (not x19183))
+:assumption (or (not x13680) (not x5457))
+:assumption (or x23063 x23341)
+:assumption (or (not x8658) x13849)
+:assumption (or (not x5653) (not x21830) (not x1877))
+:assumption (or x1918 (not x22699))
+:assumption (or (not x11566) x31177 x30138 x16510 x13496)
+:assumption (or (not x19670) x28173)
+:assumption (or (not x14839) (not x31249) (not x15271))
+:assumption (or x22495 x7236)
+:assumption (or (not x2570) (not x25298))
+:assumption (or x21288 x11916)
+:assumption (or x25586 x2059)
+:assumption (or x3819 (not x24456))
+:assumption (or (not x8214) (not x31003))
+:assumption (or x12681 x12411 x19864 x22188)
+:assumption (or (not x2482) x5570 x6324 x6559 x4230 x2917)
+:assumption (or x10190 x12871 x16081)
+:assumption (or x18328 x8002)
+:assumption (or x29587 (not x6732) x23880 (not x3207) (not x16341) (not x6984))
+:assumption (or x3516 (not x7797))
+:assumption (or (not x28035) (not x12199))
+:assumption (or (not x11311) x20339 (not x4959))
+:assumption (or x871 (not x169) (not x5094))
+:assumption (or (not x25008) (not x20815))
+:assumption (or (not x23026) (not x8602) (not x27791))
+:assumption (or (not x19877) x4771 x14591 (not x15795))
+:assumption (or x18129 (not x23687))
+:assumption (or (not x26007) (not x24970) x23292)
+:assumption (or (not x16248) x11219)
+:assumption (or x23439 x7968)
+:assumption (or x22185 (not x31858) (not x9981) (not x22191) (not x26765) x26594 (not x23814) x27938 (not x6065))
+:assumption (or (not x21548) x11900)
+:assumption (or (not x21074) x26832)
+:assumption (or (not x5956) (not x30188))
+:assumption (or x902 x24859)
+:assumption (or x26250 x1137 (not x24722) (not x9154) (not x7164) x21389)
+:assumption (or (not x12117) x22124)
+:assumption (or x11459 x17212)
+:assumption (or (not x3455) (not x17914) (not x8441) (not x4050))
+:assumption (or x27212 x27107)
+:assumption (or x19111 (not x25561))
+:assumption (or (not x25701) (not x22922))
+:assumption (or x14211 (not x20550))
+:assumption (or (not x16489) x23413)
+:assumption (or (not x11672) x15491)
+:assumption (or x9417 x11737)
+:assumption (or (not x26495) (not x18466))
+:assumption (or x16510 x17000)
+:assumption (or (not x6921) x19112)
+:assumption (or x26561 (not x11259))
+:assumption (or x5267 x22351 (not x14290) x13009 x15407 x30224)
+:assumption (or x142 x28214)
+:assumption (or x29906 x18669)
+:assumption (or x20043 (not x769))
+:assumption (or x16025 (not x26540))
+:assumption (or (not x9008) x23375 (not x5528) (not x8724) (not x27359))
+:assumption (or (not x10882) x10115)
+:assumption (or (not x18623) (not x3855) x9564 x21298)
+:assumption (or (not x607) x9320)
+:assumption (or x4576 x28399)
+:assumption (or x9969 (not x492))
+:assumption (or x18972 (not x5249) x11683 (not x26341) (not x16591))
+:assumption (or x28670 (not x17313))
+:assumption (or (not x9008) (not x13699))
+:assumption (or x4577 x9871)
+:assumption (or (not x24936) (not x2152))
+:assumption (or x18880 x9335)
+:assumption (or x16510 (not x6985))
+:assumption (or x21952 x985)
+:assumption (or (not x12798) x1789 (not x18852) (not x19037) x5695 (not x20183))
+:assumption (or (not x15064) x13510 x5028)
+:assumption (or (not x6079) x23092)
+:assumption (or x24200 x926 x16168)
+:assumption (or (not x30031) (not x31072))
+:assumption (or (not x21026) x9533)
+:assumption (or x8002 x22295 x23244 x13956 x287 (not x12588))
+:assumption (or (not x3494) x24678)
+:assumption (or (not x16551) x21677)
+:assumption (or x30461 x21395)
+:assumption (or x24292 x17689)
+:assumption (or (not x27136) (not x19845))
+:assumption (or x605 (not x13415))
+:assumption (or (not x5327) (not x25357))
+:assumption (or x21445 (not x16741))
+:assumption (or (not x27941) x13956 (not x3380))
+:assumption (or x11982 x26005)
+:assumption (or x7039 (not x2757))
+:assumption (or x6781 (not x22467))
+:assumption (or x18640 (not x11115))
+:assumption (or (not x25495) (not x20245) (not x16304))
+:assumption (or (not x12565) (not x23262))
+:assumption (or (not x20724) (not x11053))
+:assumption (or x12215 x8602)
+:assumption (or (not x22934) (not x25643))
+:assumption (or x20158 (not x1393) x27253)
+:assumption (or x21298 x3467)
+:assumption (or (not x16298) (not x25635) x15451)
+:assumption (or x24145 (not x7398))
+:assumption (or (not x21448) (not x27998))
+:assumption (or (not x11477) x29834)
+:assumption (or (not x31399) (not x5206))
+:assumption (or (not x3622) x19284 x21516 (not x20651))
+:assumption (or x30213 (not x18269))
+:assumption (or x29066 (not x31767) (not x10175) x31514)
+:assumption (or (not x2556) (not x7940))
+:assumption (or (not x23926) (not x24790))
+:assumption (or (not x498) (not x16711))
+:assumption (or x27169 x27007 x16025)
+:assumption (or (not x6821) x3361)
+:assumption (or (not x22753) (not x8382))
+:assumption (or (not x29649) (not x19728))
+:assumption (or x9909 x18540)
+:assumption (or (not x1154) x20651 (not x13307) x26789)
+:assumption (or (not x11984) x11349)
+:assumption (or (not x24300) (not x7016))
+:assumption (or (not x13911) x31566)
+:assumption (or (not x11220) (not x2022))
+:assumption (or x27947 x12072)
+:assumption (or (not x14666) x24710)
+:assumption (or (not x29131) (not x30002))
+:assumption (or (not x30113) (not x29537) (not x23145) x1726)
+:assumption (or (not x22689) x31810)
+:assumption (or (not x23379) x36 (not x23605) (not x28811))
+:assumption (or x30390 x31083)
+:assumption (or x18388 (not x26911) x15326 x18417 (not x3901) (not x11265) x14228 x16478 x12559)
+:assumption (or x17534 x22305)
+:assumption (or (not x16126) x12200)
+:assumption (or x22286 x27498)
+:assumption (or (not x21363) x24270)
+:assumption (or (not x4378) (not x12948) (not x24514) (not x23346))
+:assumption (or (not x611) (not x2906) x29442)
+:assumption (or x6243 (not x11409) (not x26910) (not x11866))
+:assumption (or (not x7408) x5370)
+:assumption (or x3873 (not x3414))
+:assumption (or x17496 (not x882))
+:assumption (or x23244 (not x22122))
+:assumption (or (not x10118) (not x20087) x26280 (not x30264))
+:assumption (or (not x25236) x3478)
+:assumption (or x8614 (not x5817))
+:assumption (or (not x21290) x1281)
+:assumption (or x9889 x15669)
+:assumption (or (not x23431) (not x25898))
+:assumption (or (not x18617) x25563 x7835)
+:assumption (or (not x7622) (not x981) (not x6567))
+:assumption (or (not x29819) x30909)
+:assumption (or x9543 x25366)
+:assumption (or (not x22659) x26497)
+:assumption (or (not x4195) x31398)
+:assumption (or x5202 x522)
+:assumption (or (not x15312) (not x5964))
+:assumption (or x2912 x31882 x2983)
+:assumption (or (not x13557) x10074)
+:assumption (or (not x9827) (not x13013))
+:assumption (or x18782 (not x16910))
+:assumption (or x3927 x31361)
+:assumption (or x22308 x15849)
+:assumption (or (not x416) x10611)
+:assumption (or x4451 (not x19654))
+:assumption (or (not x27224) (not x28906))
+:assumption (or x29442 (not x26607))
+:assumption (or x25033 (not x27680))
+:assumption (or (not x23808) (not x8992) (not x30056) x6203 (not x14439))
+:assumption (or x15874 x31207 (not x25344) (not x9685))
+:assumption (or x17657 (not x9008))
+:assumption (or x1489 x8928)
+:assumption (or (not x175) (not x20606) (not x30887))
+:assumption (or (not x7864) x21435)
+:assumption (or (not x28131) (not x3617))
+:assumption (or x4910 x22683)
+:assumption (or x21815 (not x140))
+:assumption (or (not x4409) (not x9354))
+:assumption (or (not x21160) x8350)
+:assumption (or x31120 x7621)
+:assumption (or (not x30400) (not x31787))
+:assumption (or (not x20949) x12045 x13415 (not x21060) x15871)
+:assumption (or (not x412) (not x10832) x16360 x25)
+:assumption (or (not x31640) (not x8416))
+:assumption (or x15481 (not x21298) x9656)
+:assumption (or x23431 (not x7109))
+:assumption (or x17908 (not x17756) (not x27593) (not x25260) x22349)
+:assumption (or (not x5857) (not x14839))
+:assumption (or x27071 x13345)
+:assumption (or x24139 x447)
+:assumption (or (not x1434) x17266)
+:assumption (or x30741 x4942)
+:assumption (or (not x4563) (not x20060) (not x15366))
+:assumption (or (not x22306) (not x22495) x2715 x15861)
+:assumption (or (not x7197) x20042)
+:assumption (or x26684 (not x7071))
+:assumption (or x11474 x8774)
+:assumption (or x3235 x6803)
+:assumption (or (not x24550) (not x23961) (not x16802) (not x12173))
+:assumption (or (not x4360) (not x17019))
+:assumption (or (not x20812) (not x5839) (not x13622))
+:assumption (or (not x2354) x414)
+:assumption (or x6192 (not x1030))
+:assumption (or x8857 x16972)
+:assumption (or x7960 (not x169))
+:assumption (or x7178 x20043)
+:assumption (or (not x18842) (not x2333))
+:assumption (or x8002 x21389 (not x9154) x1137 x27300 (not x7164))
+:assumption (or (not x1146) (not x14116))
+:assumption (or (not x28198) x2309 (not x8800) x11737)
+:assumption (or (not x31700) x29502)
+:assumption (or (not x26034) x3669)
+:assumption (or (not x948) x8915 x7463 x24140 x6951)
+:assumption (or (not x6681) x11276 (not x3248) (not x22131) x16699 (not x9995) x28991 (not x29789))
+:assumption (or (not x12311) (not x27))
+:assumption (or x653 x14517 (not x29202))
+:assumption (or (not x12191) x26158)
+:assumption (or (not x29281) x21050)
+:assumption (or x5640 (not x10985))
+:assumption (or (not x21186) (not x607))
+:assumption (or x30613 (not x30443))
+:assumption (or (not x30171) (not x8421))
+:assumption (or (not x13459) x25862)
+:assumption (or x29076 (not x27355))
+:assumption (or (not x10598) x9751)
+:assumption (or (not x2588) (not x1393) x14017)
+:assumption (or (not x10240) x27065)
+:assumption (or x26897 (not x25130))
+:assumption (or x19638 (not x15117))
+:assumption (or (not x16168) (not x24200) x23013)
+:assumption (or (not x808) x15622)
+:assumption (or (not x25294) x29979 x4560 (not x7308) x31392)
+:assumption (or x31930 (not x2524))
+:assumption (or (not x20818) (not x11978))
+:assumption (or (not x29112) (not x964) (not x169))
+:assumption (or (not x5999) x8440)
+:assumption (or (not x12167) (not x16374))
+:assumption (or x21635 (not x20046))
+:assumption (or x8180 x23711 x20164 (not x13064))
+:assumption (or x22732 (not x3566) x13487)
+:assumption (or x20568 (not x5528) (not x356) x1665 x24441 x3741)
+:assumption (or x17879 x2526)
+:assumption (or x10337 x3389)
+:assumption (or (not x11765) x26846)
+:assumption (or (not x16566) (not x19884))
+:assumption (or x15132 (not x5028) x15486 x29442)
+:assumption (or x6147 x5199)
+:assumption (or x30991 (not x23223))
+:assumption (or x4185 (not x8921))
+:assumption (or x10874 x25669)
+:assumption (or x31129 (not x24262))
+:assumption (or x101 (not x28557))
+:assumption (or x7188 (not x19175))
+:assumption (or x28541 x6173 (not x26521))
+:assumption (or x27678 x26670)
+:assumption (or (not x7803) x20304)
+:assumption (or x2020 (not x22960))
+:assumption (or x819 (not x3996))
+:assumption (or x28163 x24152)
+:assumption (or x6653 (not x14911))
+:assumption (or x23431 x30958)
+:assumption (or x11323 (not x21698))
+:assumption (or x22504 x30235)
+:assumption (or x762 x10824)
+:assumption (or x5889 x28854)
+:assumption (or (not x20712) (not x2849))
+:assumption (or x7200 x1079)
+:assumption (or (not x29216) (not x499))
+:assumption (or (not x20457) (not x879))
+:assumption (or x17302 x18441 (not x13299) x10131)
+:assumption (or x3257 x27720)
+:assumption (or (not x17293) (not x13286))
+:assumption (or x27224 x28906 (not x11049) x5 x9701 x1103 (not x31388))
+:assumption (or (not x6869) x16106)
+:assumption (or x21321 x30219)
+:assumption (or (not x13287) (not x6771) (not x4143))
+:assumption (or (not x18295) x16503)
+:assumption (or (not x29987) (not x31069))
+:assumption (or (not x10336) (not x619))
+:assumption (or (not x17458) x20223)
+:assumption (or x20221 (not x9566))
+:assumption (or (not x29818) x9756)
+:assumption (or x16900 x294)
+:assumption (or x3700 x4279)
+:assumption (or x3381 x23364 x25224 (not x27643) (not x1219))
+:assumption (or x20826 x6768)
+:assumption (or x27153 x30138)
+:assumption (or (not x9043) (not x13456))
+:assumption (or (not x18378) (not x17187))
+:assumption (or x16749 (not x4788))
+:assumption (or (not x13503) x13520)
+:assumption (or (not x27958) (not x18844) (not x22213))
+:assumption (or (not x19188) (not x7859))
+:assumption (or x29739 (not x19112))
+:assumption (or x21064 (not x1393))
+:assumption (or x18580 (not x14700))
+:assumption (or (not x834) x15916)
+:assumption (or (not x8002) x24209)
+:assumption (or x20860 x803)
+:assumption (or x27122 x19699)
+:assumption (or x8002 x9447)
+:assumption (or (not x14672) (not x3829))
+:assumption (or (not x13636) x15284)
+:assumption (or x29038 (not x10234))
+:assumption (or (not x3681) (not x22009))
+:assumption (or x14476 (not x25589))
+:assumption (or (not x5421) x13777)
+:assumption (or (not x23613) (not x17534))
+:assumption (or (not x18355) x14240 x21618 (not x11657) x4633)
+:assumption (or (not x11846) (not x9733))
+:assumption (or (not x16405) x16510 x3001)
+:assumption (or (not x11142) (not x8027))
+:assumption (or (not x17365) (not x5528) x29552 x29631)
+:assumption (or x10026 x29628)
+:assumption (or x17186 x31268)
+:assumption (or (not x14812) x26822)
+:assumption (or (not x9008) x30135)
+:assumption (or x21320 x27242)
+:assumption (or x13111 x24560 (not x16003))
+:assumption (or x5700 (not x21217))
+:assumption (or x18773 x30720)
+:assumption (or x23640 (not x21432))
+:assumption (or (not x3575) x21542)
+:assumption (or x14283 x21441)
+:assumption (or x17441 x29850)
+:assumption (or x30413 x894 (not x18704) (not x5595))
+:assumption (or x25887 x29402)
+:assumption (or x4264 (not x1890))
+:assumption (or x3370 x9641)
+:assumption (or x17571 (not x862))
+:assumption (or x10641 x2272)
+:assumption (or x19528 (not x31691))
+:assumption (or x1393 (not x11764))
+:assumption (or (not x7027) (not x6594))
+:assumption (or (not x2402) x5707)
+:assumption (or (not x19086) x16907)
+:assumption (or x28211 x25393)
+:assumption (or (not x3) (not x15755))
+:assumption (or x3106 x21280)
+:assumption (or (not x2265) x14359)
+:assumption (or (not x2913) (not x31134) (not x16510) (not x16741) (not x21815))
+:assumption (or x29510 (not x9443))
+:assumption (or (not x13317) (not x1293))
+:assumption (or x9790 (not x13956) (not x9972) (not x30673))
+:assumption (or x30116 x23039 (not x19879) x29966 x29917)
+:assumption (or x19853 x22722)
+:assumption (or x2515 (not x30124))
+:assumption (or (not x23659) (not x9008))
+:assumption (or x30227 (not x7791))
+:assumption (or x28036 (not x17493))
+:assumption (or x25784 (not x30333))
+:assumption (or (not x25160) x2022)
+:assumption (or (not x26591) x11963)
+:assumption (or (not x18694) x6663 (not x4561))
+:assumption (or (not x14153) x30422)
+:assumption (or x14419 x24116)
+:assumption (or (not x11043) (not x23956) x25355 (not x6363) (not x1212) (not x9647) x1064)
+:assumption (or x20628 (not x12628))
+:assumption (or (not x11251) (not x28984))
+:assumption (or (not x8377) x25873)
+:assumption (or (not x26380) (not x29442))
+:assumption (or x387 (not x25659))
+:assumption (or x585 (not x30352))
+:assumption (or (not x31035) (not x27037))
+:assumption (or x11412 (not x27202))
+:assumption (or (not x8734) (not x10264))
+:assumption (or (not x16387) (not x4736))
+:assumption (or x18996 x26578)
+:assumption (or (not x14704) x30027)
+:assumption (or (not x1103) x19644)
+:assumption (or x7282 (not x30433))
+:assumption (or (not x26416) (not x30156))
+:assumption (or (not x2779) (not x5886) (not x23244))
+:assumption (or x2558 x5620)
+:assumption (or (not x9449) (not x29267))
+:assumption (or (not x6016) (not x14160) (not x20194) x11970 x28300 (not x6999))
+:assumption (or (not x11976) (not x28181))
+:assumption (or (not x27986) x4272 (not x27596))
+:assumption (or x23955 (not x9940))
+:assumption (or x9243 x22313)
+:assumption (or (not x5622) x23060)
+:assumption (or x29633 (not x25111))
+:assumption (or (not x30144) (not x12242))
+:assumption (or (not x21029) (not x10266))
+:assumption (or (not x13977) x29273)
+:assumption (or (not x31775) (not x31829))
+:assumption (or x25471 (not x12042))
+:assumption (or (not x9008) (not x11604) (not x18698) (not x5840) (not x5528))
+:assumption (or (not x8393) x25389)
+:assumption (or x28527 (not x16216))
+:assumption (or (not x1886) x7006)
+:assumption (or (not x927) (not x22809))
+:assumption (or (not x25271) (not x8002) (not x16274))
+:assumption (or (not x31039) (not x20723))
+:assumption (or (not x30468) x5405)
+:assumption (or (not x26854) (not x24366))
+:assumption (or x15924 x1826)
+:assumption (or x18921 (not x2265))
+:assumption (or (not x23886) x23020 x4504)
+:assumption (or x7711 (not x12884) (not x23568) x6502)
+:assumption (or x26591 x17855 (not x11963) x6315)
+:assumption (or x27688 (not x14829))
+:assumption (or x30302 (not x11658))
+:assumption (or x31543 x4328)
+:assumption (or (not x10555) x17421)
+:assumption (or (not x24118) x18756 x7310 x14898)
+:assumption (or (not x3682) (not x1543))
+:assumption (or (not x12668) (not x30312))
+:assumption (or (not x24214) (not x12337))
+:assumption (or x9453 x8538)
+:assumption (or x9008 (not x14500))
+:assumption (or (not x3417) x21528)
+:assumption (or (not x30887) (not x2908))
+:assumption (or (not x31218) (not x19565))
+:assumption (or (not x8602) x14613 (not x11016))
+:assumption (or (not x22829) (not x1677))
+:assumption (or (not x22267) (not x8764))
+:assumption (or (not x8293) x165)
+:assumption (or (not x4979) x20797)
+:assumption (or x26039 (not x24757))
+:assumption (or (not x20735) x23894)
+:assumption (or (not x14552) x17888)
+:assumption (or x15537 (not x22698) x41)
+:assumption (or x17076 (not x28639))
+:assumption (or x25803 x3444)
+:assumption (or x3425 x8602 x18958)
+:assumption (or (not x31734) x21752)
+:assumption (or x17267 (not x18843))
+:assumption (or x171 (not x15984))
+:assumption (or (not x28021) x22531 (not x6059) (not x26240) (not x2814))
+:assumption (or x5528 (not x21545))
+:assumption (or (not x18567) x22044)
+:assumption (or (not x1393) (not x4387))
+:assumption (or (not x11374) (not x10256))
+:assumption (or (not x751) (not x29650))
+:assumption (or (not x5204) (not x28384))
+:assumption (or x16025 (not x14937) (not x9807))
+:assumption (or x29312 x18803 x24756)
+:assumption (or x13345 (not x26176))
+:assumption (or x21890 (not x15104) (not x9008))
+:assumption (or (not x8841) (not x16741))
+:assumption (or (not x18666) (not x29476))
+:assumption (or x29999 (not x31114))
+:assumption (or (not x11803) (not x31166))
+:assumption (or (not x3972) x17709)
+:assumption (or (not x28971) x21276)
+:assumption (or (not x25277) x24189)
+:assumption (or (not x15060) x21522)
+:assumption (or x15271 (not x2124) (not x6544))
+:assumption (or x17470 x25594)
+:assumption (or (not x19698) (not x4463))
+:assumption (or (not x20930) x14758)
+:assumption (or x2925 x964)
+:assumption (or x10388 x29312 x25009)
+:assumption (or x16371 (not x1090))
+:assumption (or (not x19945) (not x8550))
+:assumption (or x12083 (not x4083))
+:assumption (or (not x9172) x30474)
+:assumption (or (not x22570) (not x8270))
+:assumption (or x850 (not x27998))
+:assumption (or (not x10316) (not x15198))
+:assumption (or (not x607) x4800)
+:assumption (or (not x9008) x18369 x9930 x3854 (not x5528))
+:assumption (or (not x22829) (not x9008) (not x5528) x29772 (not x15264))
+:assumption (or x19270 x3268)
+:assumption (or x8412 (not x1616))
+:assumption (or (not x29442) (not x17240) (not x5028) x27068)
+:assumption (or (not x6163) (not x23494))
+:assumption (or (not x15606) x13867)
+:assumption (or (not x9045) x18230)
+:assumption (or (not x12423) (not x6486))
+:assumption (or x9001 (not x9602))
+:assumption (or x25458 (not x20976) (not x480))
+:assumption (or (not x24282) x31428)
+:assumption (or x28996 (not x7897))
+:assumption (or (not x20651) x19799)
+:assumption (or (not x8229) (not x17358))
+:assumption (or x9234 (not x21112) x5240)
+:assumption (or (not x15907) (not x23390))
+:assumption (or (not x13956) x20723 x10543)
+:assumption (or x20069 (not x20528))
+:assumption (or (not x11568) x10455)
+:assumption (or x9857 x22852)
+:assumption (or (not x14903) x22621)
+:assumption (or (not x8041) (not x14575))
+:assumption (or x2213 (not x4854))
+:assumption (or (not x22855) (not x5377))
+:assumption (or (not x16616) x1535)
+:assumption (or (not x15776) x11153)
+:assumption (or x1927 x1015)
+:assumption (or x13956 x23244 (not x13674) (not x13802) x8002 (not x424))
+:assumption (or (not x25818) (not x21401))
+:assumption (or x30795 (not x6986))
+:assumption (or (not x10941) (not x25172) (not x9296) (not x29715) (not x30412) x8602 (not x985) x12942)
+:assumption (or x16276 x4540 (not x30373) x25889 (not x6289))
+:assumption (or (not x180) x31409)
+:assumption (or (not x26954) x6058)
+:assumption (or x18359 (not x3479))
+:assumption (or (not x21960) x28471)
+:assumption (or (not x30980) x25659)
+:assumption (or (not x480) (not x28015))
+:assumption (or x21958 (not x15923))
+:assumption (or x10028 (not x20167))
+:assumption (or x1365 x18442)
+:assumption (or x24052 (not x10251))
+:assumption (or x5121 (not x9995) (not x29789) (not x28242) x11276 (not x6681) x16699 (not x3248))
+:assumption (or (not x7667) x7982 (not x29921) (not x12882) x19291)
+:assumption (or (not x23733) (not x8992))
+:assumption (or x7718 x31042)
+:assumption (or (not x20839) (not x18697))
+:assumption (or x13298 (not x23869))
+:assumption (or (not x2092) x11444)
+:assumption (or x27521 x28731)
+:assumption (or x7726 x18973 (not x17534))
+:assumption (or (not x8621) x31100)
+:assumption (or x20637 (not x21114))
+:assumption (or (not x17948) (not x17685))
+:assumption (or x11734 x21650)
+:assumption (or (not x9531) (not x23404) (not x20582))
+:assumption (or x30412 (not x12942))
+:assumption (or (not x8748) x30482)
+:assumption (or (not x2357) (not x25134))
+:assumption (or x25547 (not x17450))
+:assumption (or (not x16117) (not x2176))
+:assumption (or x7950 x26897)
+:assumption (or x22920 (not x9253) x14313 x20460 (not x25854) (not x7511))
+:assumption (or (not x17609) (not x26244))
+:assumption (or x25383 (not x17321) x2158 (not x14820))
+:assumption (or (not x485) x12211 (not x31054) (not x21254) (not x2045) (not x19004))
+:assumption (or x26721 x25051)
+:assumption (or (not x20100) x14511)
+:assumption (or x23478 x7212)
+:assumption (or (not x19772) (not x8602) x25412)
+:assumption (or (not x6382) x1279)
+:assumption (or x15542 (not x7196))
+:assumption (or x12370 x9230)
+:assumption (or (not x23745) (not x27537))
+:assumption (or x14247 x1584)
+:assumption (or (not x2616) x1923)
+:assumption (or x16465 (not x27345))
+:assumption (or (not x6072) x28547)
+:assumption (or (not x29684) x13501)
+:assumption (or (not x8063) x24855)
+:assumption (or x21039 (not x93))
+:assumption (or x10106 (not x1145))
+:assumption (or x27587 x6986)
+:assumption (or x9922 (not x17016))
+:assumption (or x11356 x15657)
+:assumption (or (not x368) (not x15799))
+:assumption (or (not x29531) x4988)
+:assumption (or (not x24873) (not x27079))
+:assumption (or x3538 x3745)
+:assumption (or x17828 x11201)
+:assumption (or x21721 (not x1517) (not x12116))
+:assumption (or x20831 (not x15527))
+:assumption (or x19589 x16503)
+:assumption (or x11826 x29895)
+:assumption (or (not x19620) (not x13956))
+:assumption (or (not x26446) x13966)
+:assumption (or x8002 x12926)
+:assumption (or x13734 (not x19305))
+:assumption (or (not x13159) (not x20557))
+:assumption (or x26704 (not x26740))
+:assumption (or x6823 x3558)
+:assumption (or (not x21818) x18503)
+:assumption (or x5046 x26650)
+:assumption (or x8410 x7551)
+:assumption (or x27040 x4040)
+:assumption (or (not x18818) x16560)
+:assumption (or x614 x31794)
+:assumption (or x6098 (not x7585))
+:assumption (or (not x16042) x27910)
+:assumption (or x19487 x2566)
+:assumption (or (not x22807) (not x20289))
+:assumption (or x10229 x28914)
+:assumption (or (not x3175) (not x27005))
+:assumption (or x16145 x12291 x20548)
+:assumption (or x9841 (not x25747) (not x410))
+:assumption (or x31660 x4230)
+:assumption (or (not x3035) (not x17887))
+:assumption (or x5301 x16798 x14206 (not x30650))
+:assumption (or x19940 (not x13589))
+:assumption (or (not x11031) (not x9531) (not x13070) x13576)
+:assumption (or x24251 (not x30691) (not x12316))
+:assumption (or x19802 x14861)
+:assumption (or (not x24505) (not x11434))
+:assumption (or x23063 (not x2606))
+:assumption (or x4884 (not x31457))
+:assumption (or x17113 x5365)
+:assumption (or (not x15731) (not x5790))
+:assumption (or x9678 x206 x31777 x3059 x17539 (not x28642) (not x14074))
+:assumption (or x21872 x21830)
+:assumption (or x27618 x9975)
+:assumption (or (not x14275) (not x21928))
+:assumption (or (not x9166) (not x8020))
+:assumption (or x28187 x63)
+:assumption (or x30239 x14723)
+:assumption (or x31134 (not x24888))
+:assumption (or (not x7963) (not x13330) x1219)
+:assumption (or x8961 (not x18738) (not x16510) (not x11754) (not x21815))
+:assumption (or (not x17908) (not x29924) (not x9684) (not x19300))
+:assumption (or x20894 x22964)
+:assumption (or x10333 (not x23537))
+:assumption (or x31114 (not x25245))
+:assumption (or (not x23050) (not x29292))
+:assumption (or x2944 x19333)
+:assumption (or (not x18445) (not x16510))
+:assumption (or (not x31590) x14354)
+:assumption (or (not x10966) (not x1918))
+:assumption (or x7922 x14819)
+:assumption (or (not x6565) x16566)
+:assumption (or (not x31001) (not x22531) x22426)
+:assumption (or x5700 x1488)
+:assumption (or (not x31134) (not x13575) (not x5758))
+:assumption (or (not x13900) (not x4003))
+:assumption (or x20599 (not x16149) (not x7708) (not x27193) x25024 x3576)
+:assumption (or (not x16213) x25906)
+:assumption (or x9273 x26608)
+:assumption (or x26138 (not x27509))
+:assumption (or x6633 (not x13725))
+:assumption (or x16552 (not x28715))
+:assumption (or (not x13129) (not x6807))
+:assumption (or x15749 (not x18061) x30622)
+:assumption (or (not x18060) x29179)
+:assumption (or x23766 (not x525))
+:assumption (or x6997 (not x28283))
+:assumption (or (not x27027) (not x27166))
+:assumption (or x3942 (not x5536))
+:assumption (or (not x12228) x17731)
+:assumption (or x15443 (not x13650))
+:assumption (or x1954 x18056)
+:assumption (or (not x6773) (not x16741))
+:assumption (or (not x7989) x30451)
+:assumption (or x18019 (not x9008) x3682)
+:assumption (or x18130 (not x11020))
+:assumption (or x8586 x12157)
+:assumption (or x1954 x13144)
+:assumption (or (not x8920) (not x10312))
+:assumption (or x29022 x2563)
+:assumption (or x7468 x2522)
+:assumption (or (not x14226) (not x11078) (not x18930) (not x16304))
+:assumption (or (not x8204) (not x5146))
+:assumption (or x14626 x28328 (not x3738))
+:assumption (or (not x22775) x10019)
+:assumption (or (not x21187) (not x827))
+:assumption (or x21653 (not x24908) (not x24107))
+:assumption (or x7491 (not x23760))
+:assumption (or x24434 x29232)
+:assumption (or (not x28833) x17346)
+:assumption (or (not x3670) (not x30359) x8919)
+:assumption (or (not x7495) x17075)
+:assumption (or x11827 (not x19680))
+:assumption (or x20741 x4824)
+:assumption (or (not x14240) (not x9434))
+:assumption (or x27233 x9121)
+:assumption (or (not x8658) (not x24627))
+:assumption (or x193 (not x25659))
+:assumption (or x14411 (not x11340))
+:assumption (or (not x25264) x6783)
+:assumption (or x16741 (not x25498))
+:assumption (or (not x18293) x15651)
+:assumption (or x10874 x4341)
+:assumption (or x4904 x20508)
+:assumption (or (not x9008) (not x9596))
+:assumption (or (not x18) x8967)
+:assumption (or (not x31130) (not x18333))
+:assumption (or x25850 x21298)
+:assumption (or (not x28885) (not x12835))
+:assumption (or (not x30262) (not x6121) (not x26489) x16945 (not x20594) x21711)
+:assumption (or (not x28179) x10669)
+:assumption (or (not x5492) x24720 x13408)
+:assumption (or x10490 (not x12510))
+:assumption (or (not x27888) (not x2808))
+:assumption (or x6746 x2500 x21645)
+:assumption (or (not x30845) x6814)
+:assumption (or (not x10877) x7469)
+:assumption (or x22169 (not x15277))
+:assumption (or (not x17415) (not x15217))
+:assumption (or x11488 (not x28958) x30743 (not x14483) (not x8612))
+:assumption (or x31774 x8311)
+:assumption (or x12111 (not x18951))
+:assumption (or (not x4063) (not x20392))
+:assumption (or x1517 (not x21721))
+:assumption (or (not x5663) x3516)
+:assumption (or (not x9290) x12257)
+:assumption (or x11577 (not x17106) (not x22472) x21298)
+:assumption (or (not x627) (not x6963))
+:assumption (or (not x11958) (not x15685))
+:assumption (or (not x27893) x1232)
+:assumption (or x29120 x17148)
+:assumption (or x11687 (not x11857))
+:assumption (or (not x26869) (not x10277) x13843)
+:assumption (or x19790 x10445)
+:assumption (or (not x13956) (not x20042) (not x19608))
+:assumption (or x24800 x19785 (not x26598) x8002 (not x4134) (not x31635))
+:assumption (or (not x11896) (not x4211))
+:assumption (or x1582 (not x19212) x9566 x2356 (not x28256) x30842)
+:assumption (or (not x5927) x21283)
+:assumption (or (not x23050) (not x29582))
+:assumption (or (not x5749) x3953)
+:assumption (or (not x9918) x6775)
+:assumption (or x3364 x3643 (not x30113) (not x23462))
+:assumption (or (not x17473) (not x21298) x3634)
+:assumption (or x8721 x18566)
+:assumption (or x20851 x15860)
+:assumption (or x11824 (not x30279))
+:assumption (or (not x656) x11070)
+:assumption (or (not x7228) (not x30797))
+:assumption (or (not x8165) (not x12273))
+:assumption (or x14815 (not x29959))
+:assumption (or x21732 x9361)
+:assumption (or x20158 (not x28966))
+:assumption (or (not x25886) x31873)
+:assumption (or x15700 (not x24223))
+:assumption (or (not x28543) (not x3599) x8002 (not x28276) (not x5579) (not x8377))
+:assumption (or x6250 (not x26410))
+:assumption (or (not x15238) x17719)
+:assumption (or x23964 x20096)
+:assumption (or x31451 (not x11779) (not x1320))
+:assumption (or (not x2901) (not x14522))
+:assumption (or (not x13516) x16510)
+:assumption (or (not x13177) x9520 x23415 (not x9445) (not x31347) x22669 x27852 x9070)
+:assumption (or (not x4273) (not x11849))
+:assumption (or x7267 (not x28615))
+:assumption (or (not x15274) x21728)
+:assumption (or (not x2284) (not x16025) x23243)
+:assumption (or (not x24133) x2112)
+:assumption (or (not x27530) x13136)
+:assumption (or x14628 x1598)
+:assumption (or x11250 x25607)
+:assumption (or x8000 (not x17216))
+:assumption (or x15917 (not x25143))
+:assumption (or x14815 (not x23564))
+:assumption (or (not x30882) x9651)
+:assumption (or x19516 (not x735) (not x4313) x15818 (not x24757))
+:assumption (or x15878 (not x7159))
+:assumption (or (not x5528) x24874)
+:assumption (or x18632 x14640)
+:assumption (or (not x28428) (not x5490))
+:assumption (or x5958 x20729)
+:assumption (or (not x3712) x22514)
+:assumption (or x25054 x19926)
+:assumption (or x23363 x28319)
+:assumption (or (not x19650) (not x3183))
+:assumption (or x27361 x12350)
+:assumption (or x19776 x21923)
+:assumption (or (not x926) x4196)
+:assumption (or x19899 (not x2246) (not x29442) (not x3782))
+:assumption (or x1908 (not x20181) (not x20489) (not x14963) x18950 (not x31801))
+:assumption (or x7453 x7968)
+:assumption (or (not x12045) (not x20587))
+:assumption (or x14814 x303)
+:assumption (or x8767 (not x21298))
+:assumption (or x25205 x6289)
+:assumption (or (not x20238) (not x7908))
+:assumption (or x1570 x30619)
+:assumption (or (not x11474) x18971 (not x17736) (not x5028) (not x12707))
+:assumption (or (not x1383) x16524)
+:assumption (or (not x10785) (not x19291))
+:assumption (or (not x21391) (not x9008))
+:assumption (or (not x11281) (not x17136))
+:assumption (or (not x16914) (not x3001) (not x17673))
+:assumption (or (not x7389) (not x30667) (not x18052) (not x24644))
+:assumption (or x3809 (not x16025))
+:assumption (or x18227 x16374)
+:assumption (or x27085 (not x21697))
+:assumption (or x23136 x29829)
+:assumption (or x2984 (not x10064))
+:assumption (or (not x16630) (not x706))
+:assumption (or x7927 x2273)
+:assumption (or (not x15833) x20840)
+:assumption (or (not x14961) (not x1900))
+:assumption (or x8387 x17892 x28536)
+:assumption (or (not x31493) x30164)
+:assumption (or (not x16510) x9214 x1582 (not x17075) (not x21815))
+:assumption (or (not x30830) (not x13169))
+:assumption (or (not x4474) x9985)
+:assumption (or (not x18325) (not x17349))
+:assumption (or (not x12045) (not x20349))
+:assumption (or x28707 x8851)
+:assumption (or x7286 (not x23135))
+:assumption (or (not x31615) (not x17765))
+:assumption (or x22863 x8002)
+:assumption (or (not x7963) x15392)
+:assumption (or (not x29514) (not x12449))
+:assumption (or (not x1402) x29410)
+:assumption (or x151 (not x7411) x14994 x25558 x15867 x3072 (not x5589) x26030)
+:assumption (or x25227 x19973)
+:assumption (or x24259 (not x115))
+:assumption (or x21377 (not x23537))
+:assumption (or (not x5385) (not x25239))
+:assumption (or x22330 x12397 (not x2592))
+:assumption (or x7026 x28238)
+:assumption (or (not x9746) x7515)
+:assumption (or x31309 x5985)
+:assumption (or x10959 x13769)
+:assumption (or x7450 x30379)
+:assumption (or x23065 (not x3106))
+:assumption (or (not x17133) (not x9387) (not x17617) (not x4515) (not x5339))
+:assumption (or x23896 x2524)
+:assumption (or x2390 x31183)
+:assumption (or (not x26897) (not x23461))
+:assumption (or x20799 (not x8647))
+:assumption (or (not x2530) x24139)
+:assumption (or x15765 x18370)
+:assumption (or (not x15917) x16109)
+:assumption (or x27729 x30190)
+:assumption (or x24690 x6793)
+:assumption (or (not x8969) x15421)
+:assumption (or (not x22026) (not x6980))
+:assumption (or x5728 (not x7107))
+:assumption (or x24090 x18859)
+:assumption (or (not x18507) (not x13022))
+:assumption (or (not x20836) x14455 x23244)
+:assumption (or (not x29234) (not x14970))
+:assumption (or x21208 x21833 x30400 (not x1657) (not x28439) x10702)
+:assumption (or (not x25303) x11721)
+:assumption (or (not x14856) (not x8676))
+:assumption (or (not x30640) (not x29402))
+:assumption (or (not x9802) (not x4248))
+:assumption (or x29239 x15173)
+:assumption (or x26387 (not x27281))
+:assumption (or (not x20026) (not x30278))
+:assumption (or (not x25355) (not x15508))
+:assumption (or (not x26248) (not x14453))
+:assumption (or x19301 x30633 (not x4865))
+:assumption (or (not x1501) x13294 x9384 x20223 x1026)
+:assumption (or x31594 x21049)
+:assumption (or (not x9066) x11061)
+:assumption (or x28695 x29475)
+:assumption (or x29559 x11192)
+:assumption (or x28213 x4271)
+:assumption (or (not x30935) (not x12216) (not x25424) x1780)
+:assumption (or x29680 x12118)
+:assumption (or (not x30630) x13325)
+:assumption (or (not x27378) x6969)
+:assumption (or x9320 x5841)
+:assumption (or x29328 (not x14137) (not x5162))
+:assumption (or x23568 (not x5626))
+:assumption (or x18410 (not x2352))
+:assumption (or (not x1920) x26204)
+:assumption (or x5884 (not x11293))
+:assumption (or x4810 (not x23952))
+:assumption (or x22058 (not x18668))
+:assumption (or (not x2812) (not x119))
+:assumption (or x27744 (not x13036) (not x11506))
+:assumption (or x8407 x2791)
+:assumption (or x14053 x16161)
+:assumption (or x9403 x14630)
+:assumption (or (not x11870) (not x15398))
+:assumption (or x23244 (not x7054))
+:assumption (or (not x21507) x18859 x24248)
+:assumption (or (not x28928) x23244 x8002 (not x12680))
+:assumption (or x11506 x26557 (not x27012))
+:assumption (or x6494 x18533)
+:assumption (or (not x7457) (not x28165))
+:assumption (or x21296 x6728)
+:assumption (or (not x16117) x30535)
+:assumption (or (not x9588) (not x22248))
+:assumption (or x21433 x22298)
+:assumption (or x29343 (not x21371) (not x29889) (not x31073))
+:assumption (or (not x6627) (not x9008))
+:assumption (or (not x11107) (not x20928))
+:assumption (or (not x7078) x23279)
+:assumption (or (not x7428) x13956 x3516)
+:assumption (or x28731 x28684)
+:assumption (or x23691 x9008 x18281)
+:assumption (or (not x15880) x1816)
+:assumption (or x22798 (not x28622))
+:assumption (or (not x23906) x21540)
+:assumption (or x12500 (not x26183))
+:assumption (or (not x24437) x27149)
+:assumption (or x1546 (not x19663))
+:assumption (or x9779 x15539 x5646 x21298)
+:assumption (or (not x31341) (not x17326))
+:assumption (or x27306 (not x28318))
+:assumption (or (not x7415) (not x16025))
+:assumption (or x913 x27698)
+:assumption (or (not x1774) (not x27583))
+:assumption (or (not x31829) (not x682))
+:assumption (or x20451 (not x23244))
+:assumption (or (not x122) x9008)
+:assumption (or x904 x11536)
+:assumption (or (not x24354) x5766)
+:assumption (or (not x678) (not x15016))
+:assumption (or x15143 x23333)
+:assumption (or (not x12254) (not x31653))
+:assumption (or x24130 (not x26086))
+:assumption (or x11166 x13373)
+:assumption (or (not x19339) x14340)
+:assumption (or x7532 x25931)
+:assumption (or x29109 x1393 x26746)
+:assumption (or x17545 x11657)
+:assumption (or (not x24111) (not x11792) x23244)
+:assumption (or (not x22304) x11845)
+:assumption (or (not x15363) (not x18981))
+:assumption (or (not x9453) (not x26857))
+:assumption (or (not x544) (not x7310))
+:assumption (or x1361 (not x15152))
+:assumption (or (not x23244) x500)
+:assumption (or x15567 x24510)
+:assumption (or (not x1127) x24722)
+:assumption (or (not x25089) (not x21943))
+:assumption (or (not x31823) x16211)
+:assumption (or x28464 x19121)
+:assumption (or x29185 (not x12594))
+:assumption (or x6428 (not x3538))
+:assumption (or (not x784) x26530)
+:assumption (or (not x31600) x25659 (not x14508))
+:assumption (or (not x25508) (not x650))
+:assumption (or x13779 x9813 (not x4347) (not x29330) x22531)
+:assumption (or (not x9873) x8745)
+:assumption (or x30051 (not x28900))
+:assumption (or (not x16595) x21530 (not x22595) x23571 x21756 x16075)
+:assumption (or x23244 (not x25612))
+:assumption (or x17650 (not x16543))
+:assumption (or (not x4276) x2240)
+:assumption (or x24612 (not x31403))
+:assumption (or (not x5691) x6578)
+:assumption (or x767 (not x14551))
+:assumption (or (not x5158) x1371)
+:assumption (or x23831 x7009)
+:assumption (or (not x15860) x15799 (not x17647) x29711)
+:assumption (or x236 (not x2050))
+:assumption (or (not x2614) (not x14937))
+:assumption (or (not x1393) x15068)
+:assumption (or (not x27519) (not x8808))
+:assumption (or x5381 x5528 x7607)
+:assumption (or x29119 (not x22480))
+:assumption (or x8774 x31130 x5240)
+:assumption (or x27765 x419 (not x21298))
+:assumption (or x25432 (not x11466) x803 (not x2297) (not x27289))
+:assumption (or (not x9431) (not x16686))
+:assumption (or (not x3802) x19169)
+:assumption (or x26391 x9162 x21696 x9459 x23202 x5172)
+:assumption (or (not x17887) x17070)
+:assumption (or x30277 (not x8603))
+:assumption (or x7654 x28912 (not x15070))
+:assumption (or (not x23992) x27864)
+:assumption (or x5253 (not x4451))
+:assumption (or x12460 x31777)
+:assumption (or (not x27915) (not x6163) x23734)
+:assumption (or (not x27953) (not x22531) x11661)
+:assumption (or x933 (not x8764))
+:assumption (or (not x6825) (not x31769))
+:assumption (or x11394 x24812 (not x24387) x9602)
+:assumption (or x31509 (not x22058))
+:assumption (or x29379 (not x31829))
+:assumption (or (not x7687) (not x3270))
+:assumption (or x25659 x18560)
+:assumption (or (not x3945) x8681)
+:assumption (or x29826 x29570)
+:assumption (or x30875 (not x31578))
+:assumption (or x15754 (not x18230))
+:assumption (or x30882 (not x9651) x25659)
+:assumption (or (not x15260) x26296 x10614)
+:assumption (or (not x20905) (not x28737))
+:assumption (or x20265 (not x29312))
+:assumption (or (not x1342) x9601)
+:assumption (or (not x4590) x8623)
+:assumption (or x3494 (not x9559) x28525)
+:assumption (or x11489 (not x20268))
+:assumption (or x18802 x22792)
+:assumption (or x29141 x26432)
+:assumption (or x30302 x15496)
+:assumption (or x23694 (not x25357))
+:assumption (or x4894 (not x29955))
+:assumption (or x4401 x21009)
+:assumption (or x8004 x8002 x24614)
+:assumption (or x3933 x24785)
+:assumption (or x11900 (not x10791))
+:assumption (or (not x30198) x7721)
+:assumption (or (not x28649) (not x19356) x24883 (not x26836) (not x25280) (not x25492) x3407 (not x30303))
+:assumption (or (not x25591) x3896)
+:assumption (or x31469 (not x20036))
+:assumption (or (not x7166) x9008)
+:assumption (or x4663 x19554)
+:assumption (or x31622 (not x27241))
+:assumption (or (not x28975) x26635)
+:assumption (or (not x15802) (not x4924))
+:assumption (or (not x20862) x13336)
+:assumption (or x30273 x8002)
+:assumption (or x15781 (not x14435))
+:assumption (or (not x14505) x31741)
+:assumption (or x2337 (not x14455))
+:assumption (or (not x13329) (not x30289))
+:assumption (or (not x13023) x17552 (not x5070) x13600)
+:assumption (or (not x26746) (not x1393))
+:assumption (or x24858 x19576 (not x22472) x23244 x8002)
+:assumption (or x23975 x21162)
+:assumption (or x23293 (not x21227))
+:assumption (or (not x28092) x24435)
+:assumption (or (not x2278) (not x7200) x25078)
+:assumption (or x10258 (not x14013))
+:assumption (or x22146 x27359)
+:assumption (or (not x28122) (not x5028) x29442 (not x23177))
+:assumption (or (not x2420) (not x9279))
+:assumption (or (not x497) x16144)
+:assumption (or (not x29910) (not x29312))
+:assumption (or (not x5017) (not x6222))
+:assumption (or (not x20276) x20142)
+:assumption (or x26909 x10187)
+:assumption (or (not x19165) (not x16717))
+:assumption (or x2518 (not x11903))
+:assumption (or x19992 (not x5641))
+:assumption (or x4182 x777)
+:assumption (or (not x15749) x26194)
+:assumption (or (not x24326) x30680)
+:assumption (or x8149 x11754)
+:assumption (or (not x14455) x30105)
+:assumption (or (not x7260) x21989 x31575)
+:assumption (or (not x16166) (not x19815) (not x12310) (not x13180) (not x1582) x21615)
+:assumption (or x24176 x6259)
+:assumption (or (not x867) x29036)
+:assumption (or x24092 x22531)
+:assumption (or x6810 (not x22223))
+:assumption (or (not x17917) x14730 (not x11280) x23184 (not x18916) x13045 x5526 (not x15002) x26939)
+:assumption (or (not x18186) x20826)
+:assumption (or x4839 (not x12538))
+:assumption (or x11189 x6416)
+:assumption (or (not x24213) (not x444))
+:assumption (or x29014 (not x18933))
+:assumption (or x557 x17374)
+:assumption (or x4099 (not x1253))
+:assumption (or x22548 (not x13430))
+:assumption (or (not x12811) x14153 x14389 (not x30625) (not x17435) (not x25659))
+:assumption (or x8256 x8923)
+:assumption (or (not x599) (not x11791))
+:assumption (or x18322 (not x29787))
+:assumption (or (not x8526) (not x2156) x28639 (not x15787) (not x3668) x10896)
+:assumption (or (not x17534) (not x27470) x6594 x4259)
+:assumption (or (not x21145) x11396)
+:assumption (or x18677 (not x21410))
+:assumption (or x7120 x6875)
+:assumption (or (not x26652) x21547 (not x8002) x28023)
+:assumption (or x1699 (not x13018) (not x13993) x31631)
+:assumption (or x31696 x10868)
+:assumption (or x11705 x1582)
+:assumption (or (not x12731) (not x1716))
+:assumption (or (not x23989) (not x12176) (not x2911) x23247)
+:assumption (or x9411 (not x30654))
+:assumption (or (not x30138) (not x16973))
+:assumption (or (not x18695) (not x748))
+:assumption (or (not x5969) (not x4166))
+:assumption (or (not x28110) x15861 (not x8461))
+:assumption (or x3238 (not x26629))
+:assumption (or (not x22142) x456)
+:assumption (or x27953 (not x11661))
+:assumption (or (not x8984) x20924)
+:assumption (or x1158 (not x9846))
+:assumption (or x21298 x9720)
+:assumption (or (not x25659) (not x22262))
+:assumption (or (not x19412) (not x30112))
+:assumption (or (not x24994) (not x28633))
+:assumption (or (not x14733) (not x28189))
+:assumption (or x30751 x18108 x10510)
+:assumption (or (not x18987) (not x18599))
+:assumption (or (not x10992) (not x6243))
+:assumption (or x17171 (not x24913) (not x15683) x25451)
+:assumption (or x19468 x21109)
+:assumption (or (not x12023) (not x19070))
+:assumption (or x20090 x16718)
+:assumption (or (not x9008) x11719)
+:assumption (or x31229 x1125)
+:assumption (or x19585 (not x17498))
+:assumption (or (not x7664) x16074)
+:assumption (or x8397 x22277)
+:assumption (or (not x28347) x21298)
+:assumption (or x8510 x18704)
+:assumption (or x25582 (not x25659))
+:assumption (or (not x4724) (not x12555))
+:assumption (or (not x28242) x21355 x25346)
+:assumption (or x18271 (not x13999))
+:assumption (or x13128 (not x9008) x26615)
+:assumption (or (not x3052) (not x26070))
+:assumption (or (not x20792) (not x26975))
+:assumption (or (not x23259) x16741)
+:assumption (or x27131 x1920)
+:assumption (or x7586 x2748)
+:assumption (or x4350 x18907)
+:assumption (or (not x9582) x2697)
+:assumption (or (not x9723) (not x10821))
+:assumption (or (not x18703) (not x19698))
+:assumption (or (not x22434) (not x18344))
+:assumption (or (not x22925) x7784)
+:assumption (or (not x2713) x31231)
+:assumption (or x1252 x6149)
+:assumption (or x2047 (not x18531))
+:assumption (or x28745 x13037)
+:assumption (or x27802 x10103)
+:assumption (or (not x18998) (not x30660))
+:assumption (or (not x20709) (not x30113))
+:assumption (or x22855 x10839)
+:assumption (or x9415 x12771)
+:assumption (or x22568 (not x24756))
+:assumption (or (not x26685) x11673)
+:assumption (or (not x9259) (not x17565))
+:assumption (or x6743 (not x21901))
+:assumption (or x27209 (not x16911))
+:assumption (or x25366 x5794)
+:assumption (or x23961 (not x7618))
+:assumption (or (not x28015) x20073)
+:assumption (or (not x24689) (not x4355))
+:assumption (or x27475 x30518 (not x9930) x3771)
+:assumption (or (not x20550) x21480)
+:assumption (or x8032 (not x7845))
+:assumption (or (not x17180) (not x26499))
+:assumption (or (not x30186) x4642)
+:assumption (or x22027 (not x11689))
+:assumption (or x13584 (not x9972) x5528)
+:assumption (or (not x2049) (not x3782))
+:assumption (or (not x9682) x25440)
+:assumption (or (not x23373) x25764)
+:assumption (or x14767 (not x10237))
+:assumption (or (not x27100) (not x21723))
+:assumption (or (not x21604) (not x7047) x28375 (not x67) (not x14955) x27070)
+:assumption (or x23123 x8673)
+:assumption (or x22525 x25279)
+:assumption (or x4378 (not x18320) (not x10981) x16847 x12866)
+:assumption (or (not x12985) (not x27595))
+:assumption (or x26967 x22963)
+:assumption (or x21209 x23399 x16510)
+:assumption (or x10098 (not x17958))
+:assumption (or x6152 x22254)
+:assumption (or x22829 (not x1681) x30113)
+:assumption (or (not x3293) x19864)
+:assumption (or (not x15545) (not x31439) (not x15522) (not x26432))
+:assumption (or (not x7314) x24761)
+:assumption (or x31437 x26509)
+:assumption (or (not x11799) x21393 x27040)
+:assumption (or x9759 x29799)
+:assumption (or x16053 (not x5591))
+:assumption (or (not x31285) x16375)
+:assumption (or (not x2187) x10759)
+:assumption (or (not x20243) x2953)
+:assumption (or x9418 x9716)
+:assumption (or x8673 (not x16923))
+:assumption (or (not x4804) (not x25112) x23137 (not x22794) x29792 (not x10909) x28772 x16011)
+:assumption (or x28794 x22472 x8366 x6959)
+:assumption (or x3371 x20006)
+:assumption (or x11977 (not x4158))
+:assumption (or x21705 (not x30173))
+:assumption (or (not x4564) (not x18074))
+:assumption (or (not x5891) x11281)
+:assumption (or (not x30939) (not x31696))
+:assumption (or (not x13399) (not x6240))
+:assumption (or (not x29196) (not x31747) (not x28063))
+:assumption (or (not x27285) (not x22549))
+:assumption (or x2928 (not x138))
+:assumption (or (not x30764) (not x17091))
+:assumption (or x22862 (not x5717))
+:assumption (or x30836 x21145 (not x13873) (not x1232) x3662 x27893 (not x1627) (not x13769) x27307)
+:assumption (or x21985 (not x13948))
+:assumption (or (not x26840) x19720)
+:assumption (or x29211 (not x13665))
+:assumption (or x23887 (not x1621))
+:assumption (or x19965 x18431)
+:assumption (or x10179 (not x4121))
+:assumption (or (not x19043) (not x26705))
+:assumption (or x13384 (not x2229))
+:assumption (or (not x15093) (not x18964))
+:assumption (or (not x30557) x8428)
+:assumption (or (not x27463) (not x7697))
+:assumption (or (not x27059) x25962)
+:assumption (or x7159 x13476 (not x28328))
+:assumption (or (not x19126) x12130)
+:assumption (or x5527 x26815)
+:assumption (or (not x23127) (not x11993))
+:assumption (or x29581 (not x10261))
+:assumption (or x2996 (not x28829))
+:assumption (or (not x23165) x14656)
+:assumption (or x4369 (not x21131))
+:assumption (or x3885 x31366)
+:assumption (or (not x26670) (not x2455))
+:assumption (or (not x8604) x9700)
+:assumption (or (not x30138) x14733 (not x17997) x5081 x12084 x27882 x17037 x9401)
+:assumption (or (not x11104) x17225)
+:assumption (or x29973 (not x29395))
+:assumption (or (not x6996) (not x17717))
+:assumption (or (not x21493) (not x5279))
+:assumption (or x3923 (not x6307))
+:assumption (or x15015 x9531)
+:assumption (or (not x22385) (not x30943))
+:assumption (or (not x4657) x13469)
+:assumption (or (not x31703) x10135)
+:assumption (or (not x8780) (not x9552))
+:assumption (or x6820 (not x6487))
+:assumption (or x9692 x11082 (not x18649))
+:assumption (or x23773 (not x31230))
+:assumption (or x9970 (not x15951))
+:assumption (or (not x14177) x22236)
+:assumption (or x9739 (not x11946))
+:assumption (or (not x12802) (not x30651))
+:assumption (or (not x17650) (not x5744))
+:assumption (or (not x10909) (not x20091) x15379 (not x26996))
+:assumption (or x10982 (not x15508))
+:assumption (or (not x6992) (not x5886))
+:assumption (or x6594 (not x3582))
+:assumption (or x21054 (not x26892))
+:assumption (or x2312 x19410)
+:assumption (or (not x5394) x7781)
+:assumption (or (not x393) (not x4439))
+:assumption (or x8677 x30231)
+:assumption (or (not x5478) x12107)
+:assumption (or x25464 (not x14320))
+:assumption (or (not x16874) x14654)
+:assumption (or (not x7106) x18149)
+:assumption (or x3354 x20652)
+:assumption (or (not x29962) x5417)
+:assumption (or (not x25051) (not x26721))
+:assumption (or (not x4779) (not x24366))
+:assumption (or (not x3121) x11205)
+:assumption (or x14501 (not x4376))
+:assumption (or (not x918) (not x31028))
+:assumption (or x22145 x23076)
+:assumption (or (not x27597) (not x10552))
+:assumption (or x29635 (not x8786))
+:assumption (or x16413 (not x23775))
+:assumption (or (not x7650) (not x24764) x5893 x19992)
+:assumption (or (not x21279) (not x9645))
+:assumption (or (not x23244) x14914)
+:assumption (or (not x25354) (not x27020) x9977 x7286 x1224 (not x27196))
+:assumption (or x5620 (not x15461))
+:assumption (or x22114 (not x24435))
+:assumption (or x14795 (not x28559))
+:assumption (or x24738 x8537)
+:assumption (or x31238 x300)
+:assumption (or (not x918) x962)
+:assumption (or (not x3689) (not x19428))
+:assumption (or (not x23587) x9738)
+:assumption (or x6629 (not x5895))
+:assumption (or (not x383) (not x20262))
+:assumption (or (not x20201) x1689)
+:assumption (or (not x18571) (not x24422))
+:assumption (or x11081 (not x4605))
+:assumption (or x25660 (not x13447))
+:assumption (or (not x30482) x28736)
+:assumption (or x23006 (not x18994))
+:assumption (or x13719 (not x30603))
+:assumption (or (not x27709) (not x16096))
+:assumption (or x317 x7758)
+:assumption (or x12807 (not x22732))
+:assumption (or x26126 x1760 (not x24753) (not x14379) (not x18921) (not x16840) x8751 (not x18793))
+:assumption (or x13771 (not x15519))
+:assumption (or (not x11052) (not x11799))
+:assumption (or (not x14512) x4325 (not x24242) x30630 x20384 (not x13325) x5282 x19575)
+:assumption (or (not x9008) x8596 (not x4725))
+:assumption (or (not x29474) x2352)
+:assumption (or (not x20933) x2278)
+:assumption (or x13166 x9056)
+:assumption (or (not x268) (not x1109) x17107 x24316)
+:assumption (or x26335 x20609)
+:assumption (or (not x15812) x9784)
+:assumption (or (not x11688) (not x21690))
+:assumption (or (not x20612) x2116)
+:assumption (or x2054 (not x13532))
+:assumption (or (not x24441) (not x29882))
+:assumption (or (not x28772) x6779)
+:assumption (or (not x8458) (not x23244))
+:assumption (or (not x28293) x7284)
+:assumption (or (not x5398) x25033)
+:assumption (or x1540 (not x19142))
+:assumption (or x18859 (not x20499) (not x7052))
+:assumption (or (not x9839) (not x1077))
+:assumption (or (not x28541) x14621)
+:assumption (or (not x5931) (not x18557))
+:assumption (or x23793 (not x18859))
+:assumption (or x4278 x4995)
+:assumption (or (not x23798) x23547)
+:assumption (or x29554 x8002)
+:assumption (or (not x5025) x24594 x17055)
+:assumption (or x30260 x21764)
+:assumption (or x20180 x10358 (not x16470))
+:assumption (or (not x22358) x18322)
+:assumption (or (not x19483) (not x957) (not x20030))
+:assumption (or x17809 x27615 x1577 (not x30131) x4549)
+:assumption (or (not x1311) x18859)
+:assumption (or (not x21336) (not x20615))
+:assumption (or (not x20885) x23448)
+:assumption (or (not x22907) (not x7542))
+:assumption (or (not x20821) (not x8002))
+:assumption (or (not x16029) (not x8191))
+:assumption (or x22625 (not x19488))
+:assumption (or (not x1077) x11740)
+:assumption (or (not x13017) x17367 (not x22892) (not x374) x2212 (not x31307) x18137 (not x19428))
+:assumption (or (not x841) (not x5162))
+:assumption (or x29829 (not x4300))
+:assumption (or (not x23690) (not x31889))
+:assumption (or (not x12242) (not x26515))
+:assumption (or x13811 x19465 (not x13949))
+:assumption (or x16525 x921)
+:assumption (or (not x21130) (not x11667))
+:assumption (or (not x15052) x16117)
+:assumption (or x11809 x25180)
+:assumption (or (not x22446) (not x7815))
+:assumption (or x21060 (not x20145))
+:assumption (or (not x18878) x14591)
+:assumption (or (not x4268) (not x560))
+:assumption (or x28074 (not x21955))
+:assumption (or (not x29145) x24888 x29606 (not x31134))
+:assumption (or (not x21561) x30013)
+:assumption (or x19363 x6606)
+:assumption (or x18883 (not x25706) (not x8127) (not x5208) x31055 (not x15887))
+:assumption (or (not x26619) x3694)
+:assumption (or x5382 (not x23254))
+:assumption (or x18746 x29889)
+:assumption (or x13656 (not x23203))
+:assumption (or (not x13992) x21169)
+:assumption (or (not x13285) x2290)
+:assumption (or x5319 x16501)
+:assumption (or x2598 x15795)
+:assumption (or (not x2881) (not x8130))
+:assumption (or (not x17564) (not x11963) x22307 x17855)
+:assumption (or (not x5846) x7782)
+:assumption (or (not x27636) x24256)
+:assumption (or x15058 (not x1042) x30113)
+:assumption (or (not x23144) x9146)
+:assumption (or (not x28834) (not x3609))
+:assumption (or (not x14839) (not x6172))
+:assumption (or x12252 x20318)
+:assumption (or (not x6136) (not x11394))
+:assumption (or (not x7312) x19594 x20104 (not x13922) (not x25342))
+:assumption (or (not x715) (not x23244))
+:assumption (or x7449 (not x2887) x9008)
+:assumption (or (not x14267) (not x14399))
+:assumption (or x22464 (not x3977))
+:assumption (or (not x19703) (not x2303))
+:assumption (or x17585 x17949)
+:assumption (or x29574 x8411)
+:assumption (or (not x8034) (not x8963))
+:assumption (or x31297 (not x3202))
+:assumption (or x762 x28447)
+:assumption (or x27764 (not x10874))
+:assumption (or x18329 x19297)
+:assumption (or (not x13226) x29324 x2946 (not x10711) x28274 x31242)
+:assumption (or (not x24125) x21896)
+:assumption (or x16672 (not x6692))
+:assumption (or x3435 (not x1345) x24993)
+:assumption (or (not x13957) (not x31424))
+:assumption (or (not x14030) x6796)
+:assumption (or (not x1671) (not x15961))
+:assumption (or (not x5123) (not x14963))
+:assumption (or x391 (not x23244))
+:assumption (or x18156 x8819 x27185)
+:assumption (or x20496 (not x22849))
+:assumption (or (not x20246) x583)
+:assumption (or x24482 x15669)
+:assumption (or (not x15918) x24107)
+:assumption (or x1921 (not x26104))
+:assumption (or (not x31665) (not x18627))
+:assumption (or x4743 (not x10866))
+:assumption (or x10450 (not x28972) x3068 x4559)
+:assumption (or x30538 x8191)
+:assumption (or (not x31829) x22209)
+:assumption (or (not x14701) x21632)
+:assumption (or x16716 x21514)
+:assumption (or x18369 (not x9008) (not x9930) (not x5528) (not x31684))
+:assumption (or x10175 (not x31514))
+:assumption (or (not x21948) (not x19489))
+:assumption (or (not x19429) x23058)
+:assumption (or (not x27036) x7981 (not x2894))
+:assumption (or (not x18269) (not x17033))
+:assumption (or (not x11028) x4990)
+:assumption (or (not x5017) (not x13961))
+:assumption (or (not x30386) x9804 (not x30258) x6652)
+:assumption (or x7773 (not x6969))
+:assumption (or (not x3903) x8597)
+:assumption (or x19332 x22870)
+:assumption (or (not x5001) x19069)
+:assumption (or x1062 (not x19185))
+:assumption (or (not x24376) x15537)
+:assumption (or (not x16075) x17921)
+:assumption (or x18974 x7598)
+:assumption (or (not x6794) (not x14942))
+:assumption (or x9538 (not x19864))
+:assumption (or x2107 x25836)
+:assumption (or x13946 (not x15613))
+:assumption (or x25751 (not x8961))
+:assumption (or x3632 (not x21307))
+:assumption (or x17269 (not x13231))
+:assumption (or (not x25423) (not x4668))
+:assumption (or (not x13272) x2749)
+:assumption (or (not x11974) x26670)
+:assumption (or (not x18376) (not x22659))
+:assumption (or (not x19865) (not x16003))
+:assumption (or (not x11378) (not x28239))
+:assumption (or x16536 (not x27506))
+:assumption (or x24282 x31547)
+:assumption (or (not x17613) x23426)
+:assumption (or (not x26670) (not x29008))
+:assumption (or x10366 (not x509))
+:assumption (or (not x29676) (not x10134))
+:assumption (or (not x30722) x17632)
+:assumption (or x13472 x18870)
+:assumption (or x1303 x7022)
+:assumption (or (not x7281) (not x3494))
+:assumption (or x4394 x25468 (not x8614) x7495)
+:assumption (or (not x633) x8831)
+:assumption (or x25381 x1775)
+:assumption (or (not x18270) (not x23765))
+:assumption (or (not x15718) x8586)
+:assumption (or x46 x13346)
+:assumption (or (not x27101) x3159)
+:assumption (or (not x12241) (not x18887))
+:assumption (or (not x650) x20371)
+:assumption (or x27099 (not x27687) (not x5334) (not x26948) x24940 x23399)
+:assumption (or x28483 x4118)
+:assumption (or x18872 x10580)
+:assumption (or x29137 (not x8808))
+:assumption (or x18227 x21815)
+:assumption (or (not x10651) (not x28973))
+:assumption (or (not x25659) x18547 (not x27908))
+:assumption (or x14142 x13749)
+:assumption (or x2022 x28747)
+:assumption (or (not x8295) (not x28541))
+:assumption (or (not x786) x17093)
+:assumption (or x18819 x10971)
+:assumption (or x26496 x11569)
+:assumption (or (not x18151) x25238)
+:assumption (or (not x11362) x26758)
+:assumption (or (not x10619) (not x22836))
+:assumption (or (not x21294) (not x12842))
+:assumption (or x16325 (not x8395))
+:assumption (or x686 (not x14775))
+:assumption (or x14399 x4691 (not x17814) x20911 x16819 x21744)
+:assumption (or x10092 (not x22164) (not x27273) (not x7287) (not x13160) x1393 x10164 x20678)
+:assumption (or (not x27451) x13941)
+:assumption (or (not x17316) (not x18269))
+:assumption (or (not x3443) x12578 x2554 x14946)
+:assumption (or x6430 (not x3951))
+:assumption (or (not x30113) (not x26884))
+:assumption (or x19667 x27714)
+:assumption (or x25765 x12834)
+:assumption (or x16802 x6736)
+:assumption (or x18152 x918)
+:assumption (or x9329 (not x10188))
+:assumption (or (not x4355) (not x1449))
+:assumption (or x14425 x5345)
+:assumption (or (not x9216) (not x31799))
+:assumption (or x30211 x17514)
+:assumption (or (not x14762) (not x8143))
+:assumption (or (not x17125) (not x13956))
+:assumption (or (not x15904) x28719)
+:assumption (or x21399 (not x25779) x23417 (not x12194))
+:assumption (or x4799 (not x5546))
+:assumption (or (not x28328) x30600)
+:assumption (or x3484 x21144)
+:assumption (or (not x676) x5840)
+:assumption (or x6927 (not x11060))
+:assumption (or (not x22360) (not x2900))
+:assumption (or (not x20363) x6905)
+:assumption (or x8602 x7381)
+:assumption (or (not x7479) (not x15354))
+:assumption (or x4859 x29461)
+:assumption (or x30405 x9008)
+:assumption (or x28697 x13021)
+:assumption (or x27029 x6606)
+:assumption (or x25785 x29929)
+:assumption (or (not x14138) x17153)
+:assumption (or (not x4436) x20276)
+:assumption (or (not x26670) (not x3914) x15967)
+:assumption (or (not x1621) x1080)
+:assumption (or x1926 (not x25367) (not x28332) x16940)
+:assumption (or x17007 x762 (not x27999))
+:assumption (or (not x13956) x17230)
+:assumption (or x21214 (not x24726))
+:assumption (or (not x6369) x6036 (not x29442))
+:assumption (or (not x20681) x29442)
+:assumption (or (not x9008) (not x8164))
+:assumption (or (not x19083) x12402)
+:assumption (or (not x27217) x26230 x5823 (not x22822) (not x26758) (not x3257) x18612 x10987)
+:assumption (or (not x9171) x24567)
+:assumption (or (not x16047) x4559)
+:assumption (or (not x29618) (not x832))
+:assumption (or (not x1621) (not x5661))
+:assumption (or x19273 (not x15718))
+:assumption (or (not x29687) (not x30243))
+:assumption (or (not x9660) (not x16656))
+:assumption (or x13127 (not x26835))
+:assumption (or x897 x23520)
+:assumption (or (not x20256) (not x25640))
+:assumption (or (not x18437) x9962)
+:assumption (or x27851 (not x5581))
+:assumption (or (not x11467) x7614)
+:assumption (or (not x14455) (not x8707))
+:assumption (or (not x3902) x3449 x16477 (not x10004) x23244 x18599)
+:assumption (or x19388 (not x15805))
+:assumption (or x18692 (not x11857) x4824 x29119)
+:assumption (or (not x22391) (not x11084))
+:assumption (or (not x7046) x7983)
+:assumption (or (not x31236) x28606 (not x25414))
+:assumption (or x14229 (not x16927) (not x2114) (not x21975) x25949 x6431 (not x9681) (not x30682))
+:assumption (or x22794 x31564)
+:assumption (or (not x6667) (not x6016))
+:assumption (or x27312 (not x2278))
+:assumption (or (not x21502) x3338)
+:assumption (or (not x24741) x24506)
+:assumption (or x22040 x28063 (not x21629) x10007)
+:assumption (or (not x27636) (not x25451))
+:assumption (or (not x13535) x23244)
+:assumption (or x9104 x21175)
+:assumption (or (not x20437) (not x11460))
+:assumption (or (not x5375) x1393 x16447)
+:assumption (or x18494 x2747)
+:assumption (or (not x14520) (not x8838))
+:assumption (or x19414 x22734)
+:assumption (or x29062 (not x1261))
+:assumption (or (not x24748) x2771)
+:assumption (or (not x31400) x24519 x31244 x24040 x26047)
+:assumption (or (not x1273) (not x9964))
+:assumption (or (not x24705) (not x24566))
+:assumption (or x3333 (not x11054))
+:assumption (or x12210 x14157)
+:assumption (or (not x5946) x3543)
+:assumption (or x5692 (not x14880))
+:assumption (or (not x15917) (not x14572))
+:assumption (or (not x29710) (not x25911))
+:assumption (or x18812 x23244 x29333 x12455 x8002)
+:assumption (or (not x28468) x31868)
+:assumption (or x17005 x7351)
+:assumption (or x2081 x29656 x28900 (not x27455) x10132)
+:assumption (or x18237 x4343)
+:assumption (or (not x20133) x31371)
+:assumption (or x17243 (not x19898))
+:assumption (or (not x11115) x12588 (not x10807) x29952)
+:assumption (or (not x4658) x28141)
+:assumption (or (not x15236) (not x22811))
+:assumption (or (not x9082) (not x14886))
+:assumption (or (not x29237) (not x6663))
+:assumption (or x9327 (not x1359))
+:assumption (or (not x4003) (not x17060))
+:assumption (or x11281 x25345)
+:assumption (or (not x8231) x9453)
+:assumption (or (not x546) (not x18834))
+:assumption (or x28133 x13639)
+:assumption (or (not x12176) (not x4546) x13956)
+:assumption (or x6200 x9511)
+:assumption (or x30213 x7499)
+:assumption (or x24756 (not x16410))
+:assumption (or x4236 (not x8340))
+:assumption (or x11356 x2514)
+:assumption (or x19255 x15064)
+:assumption (or (not x24360) (not x21777) (not x1582))
+:assumption (or (not x3638) (not x30372))
+:assumption (or x16745 (not x30928) x9039 x11424)
+:assumption (or x10316 x18411)
+:assumption (or x27939 x14465)
+:assumption (or x27542 x9170)
+:assumption (or x13963 x7978)
+:assumption (or x22852 x15332)
+:assumption (or x29081 (not x442))
+:assumption (or x21798 (not x24716))
+:assumption (or x16435 x19627)
+:assumption (or (not x23387) (not x18426))
+:assumption (or (not x20804) (not x28674))
+:assumption (or (not x11672) x21105)
+:assumption (or (not x14839) x9055)
+:assumption (or (not x10770) x30086)
+:assumption (or x15585 (not x4420))
+:assumption (or x24774 x19713)
+:assumption (or x22305 (not x20275))
+:assumption (or (not x29259) x16164)
+:assumption (or (not x19134) x21815)
+:assumption (or x15408 (not x5750))
+:assumption (or x31681 (not x953) x1131)
+:assumption (or (not x18069) (not x3494) (not x27491) (not x28122))
+:assumption (or (not x4813) x16417)
+:assumption (or (not x30261) (not x16575))
+:assumption (or x30077 (not x30568))
+:assumption (or (not x9123) (not x27523))
+:assumption (or (not x4128) (not x10231))
+:assumption (or x10363 x11091)
+:assumption (or (not x22470) x31538 x3347 x23318)
+:assumption (or x26300 (not x16))
+:assumption (or x25366 (not x26292) (not x22688))
+:assumption (or x6487 (not x8616) x8374 (not x6865))
+:assumption (or (not x10123) x10648)
+:assumption (or x28702 (not x24134) x31616)
+:assumption (or x16342 x31267 (not x15163) (not x22692) x2013 x20363 (not x21976) (not x27728) (not x24878) (not x1721))
+:assumption (or (not x26006) (not x28943))
+:assumption (or (not x9016) x19388)
+:assumption (or (not x28541) x26287 x22726 (not x30003))
+:assumption (or (not x12237) (not x22154))
+:assumption (or x28028 x21203)
+:assumption (or (not x24969) (not x8021))
+:assumption (or x11450 (not x11482))
+:assumption (or (not x13956) (not x10295))
+:assumption (or (not x1587) (not x2569))
+:assumption (or x6622 x13867)
+:assumption (or x10235 (not x14796))
+:assumption (or (not x10072) x9640 x26 x19940 (not x14053) (not x28466))
+:assumption (or (not x10586) (not x20161))
+:assumption (or x31446 x23983)
+:assumption (or x16815 (not x244) (not x25090) x18566 x1151 (not x7588) (not x14876) (not x10865) x1118)
+:assumption (or x6291 (not x27657))
+:assumption (or x48 (not x30771) (not x24350) x5926)
+:assumption (or (not x10377) (not x12907))
+:assumption (or (not x3059) (not x206))
+:assumption (or (not x28879) x11641)
+:assumption (or (not x19175) x22086)
+:assumption (or (not x12294) (not x2291) (not x965) x22204 (not x2145) (not x5528))
+:assumption (or x12591 x9549)
+:assumption (or x20208 (not x27135) (not x25659))
+:assumption (or (not x31523) (not x9605))
+:assumption (or x15913 x19672)
+:assumption (or (not x30764) (not x31273))
+:assumption (or (not x2061) x3455)
+:assumption (or x6781 (not x30350))
+:assumption (or (not x7891) (not x17651))
+:assumption (or (not x9457) (not x12906))
+:assumption (or (not x22717) x27896)
+:assumption (or (not x8002) x28023 (not x21380) x30983)
+:assumption (or (not x22505) (not x19992))
+:assumption (or x2750 (not x15101))
+:assumption (or x26405 (not x22693) x17264 (not x5830))
+:assumption (or (not x27866) x10381 (not x5630) (not x27827) (not x10671) x1442 x942 x8460 x22480)
+:assumption (or x18892 (not x7715))
+:assumption (or (not x21788) x11127 (not x12355) x22882 x2503)
+:assumption (or x27002 x31312)
+:assumption (or (not x8864) (not x11824))
+:assumption (or x186 (not x15637))
+:assumption (or (not x26093) x11365)
+:assumption (or (not x538) x11281)
+:assumption (or x7613 x4629)
+:assumption (or (not x16446) (not x27339))
+:assumption (or (not x28343) (not x16947))
+:assumption (or (not x12568) x17282 (not x13049))
+:assumption (or x1171 (not x22583) (not x25369) (not x291))
+:assumption (or (not x3381) (not x25224))
+:assumption (or x10405 (not x27107) (not x9008))
+:assumption (or x23850 (not x2751))
+:assumption (or x29611 (not x8315))
+:assumption (or (not x15325) (not x23244))
+:assumption (or x9549 (not x4555))
+:assumption (or x24994 x24381 (not x9305) (not x799))
+:assumption (or x6997 x14468)
+:assumption (or (not x5859) (not x18742))
+:assumption (or (not x5025) x21553)
+:assumption (or (not x18753) (not x4712))
+:assumption (or x24269 x22029)
+:assumption (or (not x9423) (not x30355))
+:assumption (or x31478 x10956)
+:assumption (or (not x2472) (not x2588))
+:assumption (or (not x20155) x18729)
+:assumption (or x31932 (not x24726))
+:assumption (or x15659 x2423)
+:assumption (or (not x25265) x26010)
+:assumption (or (not x21653) (not x21013) x28339)
+:assumption (or x668 x6862)
+:assumption (or x3260 x20443 (not x17654) (not x22712) x27233 (not x4758) x19246 x1807)
+:assumption (or x30361 x3671)
+:assumption (or (not x24252) (not x14507))
+:assumption (or (not x26882) (not x675))
+:assumption (or (not x901) (not x15175) x9930 x11444 x4918 (not x23014))
+:assumption (or x25008 x20982 x19161 x14515 (not x30092))
+:assumption (or x21416 (not x8950))
+:assumption (or (not x81) x18042 (not x30126))
+:assumption (or (not x13622) (not x9485))
+:assumption (or x12083 x5228)
+:assumption (or x26213 x13486)
+:assumption (or x31076 (not x24229))
+:assumption (or (not x31840) (not x18441))
+:assumption (or x15924 x21384)
+:assumption (or (not x15357) (not x9805))
+:assumption (or x8021 x595 x21753)
+:assumption (or x3037 x17832)
+:assumption (or (not x6515) x17054 (not x827))
+:assumption (or (not x11179) x23339)
+:assumption (or x19270 x6567)
+:assumption (or x24028 (not x377))
+:assumption (or x8864 (not x7564) (not x8213))
+:assumption (or x16402 (not x10491))
+:assumption (or (not x15678) x12113)
+:assumption (or x18718 x29084)
+:assumption (or (not x27191) x24556 x8586)
+:assumption (or (not x27355) (not x24244))
+:assumption (or x6471 (not x7227) (not x8599) (not x22900))
+:assumption (or x4003 x28921 x25283 x8853)
+:assumption (or (not x23954) (not x5439) (not x22968) x13843)
+:assumption (or (not x12102) x30918)
+:assumption (or (not x5685) (not x23135))
+:assumption (or x29214 x4417)
+:assumption (or (not x31827) (not x22291))
+:assumption (or x30828 x26366)
+:assumption (or (not x626) (not x28196))
+:assumption (or (not x20060) (not x20965) x20297 x30510)
+:assumption (or x24684 (not x7485))
+:assumption (or x16972 (not x28352))
+:assumption (or x15412 x5942)
+:assumption (or (not x15700) (not x2873))
+:assumption (or x9701 x13778)
+:assumption (or x23130 (not x26432))
+:assumption (or (not x13256) x7500)
+:assumption (or x5742 x28878)
+:assumption (or x25630 x5782)
+:assumption (or x27182 x15678 x30530 (not x491))
+:assumption (or x6351 x21404)
+:assumption (or (not x24014) (not x6160))
+:assumption (or (not x20587) x15973)
+:assumption (or (not x7856) (not x24798))
+:assumption (or x25075 x26694 x22605 (not x11088) x896)
+:assumption (or x15960 (not x24370))
+:assumption (or x12790 (not x16745))
+:assumption (or (not x26229) x6051 (not x25659))
+:assumption (or (not x26449) x10655)
+:assumption (or (not x27235) (not x17657))
+:assumption (or x21923 (not x26009))
+:assumption (or x25659 x12991)
+:assumption (or x10909 x17466)
+:assumption (or (not x14765) x21008)
+:assumption (or (not x16870) (not x8532))
+:assumption (or x19841 x15887 x16510)
+:assumption (or x9332 x6809)
+:assumption (or x8893 x4805)
+:assumption (or (not x21990) x17090)
+:assumption (or (not x30347) x23244)
+:assumption (or x17563 (not x4714) x10633 (not x17860))
+:assumption (or x31027 (not x13018))
+:assumption (or x21254 x485)
+:assumption (or x6491 x8002)
+:assumption (or x28912 (not x29691))
+:assumption (or x18049 (not x22138))
+:assumption (or x27756 x23451)
+:assumption (or (not x19764) (not x13410) x7972 (not x10779))
+:assumption (or x15963 (not x21886))
+:assumption (or x16889 (not x4739))
+:assumption (or (not x17905) (not x30071))
+:assumption (or (not x8733) x22056)
+:assumption (or x7769 x23748)
+:assumption (or x8264 x12552)
+:assumption (or (not x24381) x799)
+:assumption (or (not x8888) (not x28944))
+:assumption (or x15578 x9688)
+:assumption (or (not x29540) x17106)
+:assumption (or (not x30543) (not x17616))
+:assumption (or (not x4805) x29442)
+:assumption (or x6464 (not x2270))
+:assumption (or x14058 x13470)
+:assumption (or x13173 x25317)
+:assumption (or (not x13387) x7389)
+:assumption (or (not x18505) x6783)
+:assumption (or (not x29125) x21823)
+:assumption (or x21080 (not x30004))
+:assumption (or (not x27451) x9634)
+:assumption (or (not x27262) x20291)
+:assumption (or x27626 x8798)
+:assumption (or x8002 (not x14685))
+:assumption (or x14455 (not x15351))
+:assumption (or x9152 x14518)
+:assumption (or x6521 (not x24533))
+:assumption (or (not x2868) x5987)
+:assumption (or (not x5071) x4144)
+:assumption (or x21250 x18858)
+:assumption (or (not x7835) x7181 (not x3441) (not x16335) (not x27228) (not x7741) (not x2133))
+:assumption (or (not x25546) (not x21696))
+:assumption (or (not x13956) x27821)
+:assumption (or x29427 (not x8002))
+:assumption (or (not x5900) (not x5734))
+:assumption (or x28885 x20288)
+:assumption (or (not x6149) x20510)
+:assumption (or x24845 x28682)
+:assumption (or (not x9665) x10874 (not x23244))
+:assumption (or x14443 (not x23244))
+:assumption (or (not x22486) (not x15806))
+:assumption (or x24284 (not x5216))
+:assumption (or (not x1879) x28552 x827)
+:assumption (or x8002 x27483)
+:assumption (or x3374 x172)
+:assumption (or (not x1366) x21224)
+:assumption (or x3717 x15156)
+:assumption (or (not x11320) (not x14117))
+:assumption (or x8297 (not x9531))
+:assumption (or x12315 (not x29862))
+:assumption (or x23319 x28625)
+:assumption (or x607 (not x22676) x11978 (not x19802) (not x7341) x21186)
+:assumption (or x2164 (not x5042))
+:assumption (or x28041 x1080)
+:assumption (or (not x1393) x7141)
+:assumption (or x6658 x2749)
+:assumption (or x30072 x16432)
+:assumption (or (not x8002) (not x16992))
+:assumption (or (not x6340) (not x28983))
+:assumption (or x29685 (not x17783))
+:assumption (or x604 (not x18350) (not x9008))
+:assumption (or x15932 (not x27621))
+:assumption (or x947 x26487)
+:assumption (or (not x23932) x18667)
+:assumption (or (not x12776) x12442)
+:assumption (or (not x21815) (not x21140))
+:assumption (or (not x26700) (not x22439))
+:assumption (or x21866 (not x24056))
+:assumption (or x23450 (not x2523) x6237 (not x2379))
+:assumption (or (not x15639) x24174)
+:assumption (or x22330 (not x3808))
+:assumption (or x25196 (not x12818))
+:assumption (or (not x25513) (not x6073))
+:assumption (or (not x14430) (not x105))
+:assumption (or x27251 (not x8311))
+:assumption (or x30179 x27635)
+:assumption (or x9598 (not x8548))
+:assumption (or x14563 (not x26469))
+:assumption (or (not x10505) (not x11514))
+:assumption (or (not x25744) (not x30224) (not x5528) (not x9008) (not x499))
+:assumption (or x22802 (not x30152) (not x12923) (not x21089))
+:assumption (or (not x21616) (not x25093))
+:assumption (or (not x25203) (not x24688))
+:assumption (or x28542 x27185 (not x8819))
+:assumption (or x24857 (not x23886) (not x7129))
+:assumption (or (not x5388) (not x8002) (not x30025))
+:assumption (or x10267 (not x987))
+:assumption (or x26972 x11986 x4916 x15573)
+:assumption (or (not x7999) (not x8651))
+:assumption (or (not x28468) (not x2065))
+:assumption (or x30274 (not x3588))
+:assumption (or x20130 x20451)
+:assumption (or x21568 (not x7124))
+:assumption (or (not x10206) x20647)
+:assumption (or (not x1542) (not x31136))
+:assumption (or x30002 x9125 (not x16982) x29131)
+:assumption (or (not x8961) x8551)
+:assumption (or x20031 x3671 x15982)
+:assumption (or x31134 (not x7030))
+:assumption (or x31274 x28817)
+:assumption (or (not x6769) x25045)
+:assumption (or (not x2943) x27012 x4354)
+:assumption (or (not x14612) (not x14591))
+:assumption (or (not x16457) x25732)
+:assumption (or (not x16877) x12300)
+:assumption (or (not x8778) (not x16117) (not x26492))
+:assumption (or x11006 x7749)
+:assumption (or (not x19059) (not x13324))
+:assumption (or x16488 x193)
+:assumption (or x1547 (not x24548) (not x6727) (not x9531))
+:assumption (or x6845 x24500)
+:assumption (or x16891 (not x6573))
+:assumption (or (not x28890) x26409)
+:assumption (or (not x23958) x30741)
+:assumption (or x11749 x19752 (not x29603) (not x25421))
+:assumption (or (not x10366) (not x27341))
+:assumption (or x11627 x11291)
+:assumption (or (not x27349) x17383)
+:assumption (or (not x12339) x374)
+:assumption (or (not x29187) x11792)
+:assumption (or (not x5368) (not x21653))
+:assumption (or x21687 x28523)
+:assumption (or x24651 x6784)
+:assumption (or x20297 x31076 x30151)
+:assumption (or (not x19343) (not x26126))
+:assumption (or (not x23959) (not x20364))
+:assumption (or x31564 x6779)
+:assumption (or (not x9019) x9008)
+:assumption (or x20990 x5746)
+:assumption (or x10926 (not x3494))
+:assumption (or (not x4838) (not x290))
+:assumption (or (not x22335) x19479)
+:assumption (or x277 x9924)
+:assumption (or (not x3494) x21184)
+:assumption (or (not x19320) x26003)
+:assumption (or (not x30906) x24471)
+:assumption (or x10737 x19649 (not x10874))
+:assumption (or (not x23337) x16852)
+:assumption (or x12539 (not x7513))
+:assumption (or x1901 x27537 (not x10557) (not x15917))
+:assumption (or (not x26609) (not x7749))
+:assumption (or (not x10064) (not x11536) x29477 (not x26038) x30814)
+:assumption (or x4074 x5636)
+:assumption (or (not x6518) (not x22186))
+:assumption (or x16806 x11551 (not x21831))
+:assumption (or x28920 (not x22190))
+:assumption (or (not x7069) x6631 (not x30968) (not x17011) (not x22430))
+:assumption (or x4780 (not x26905))
+:assumption (or x17186 (not x27227))
+:assumption (or x13721 x13253)
+:assumption (or (not x16317) (not x14879))
+:assumption (or x9008 x16663)
+:assumption (or (not x24504) (not x6117))
+:assumption (or x26419 (not x15494))
+:assumption (or (not x17461) (not x31431))
+:assumption (or x21627 (not x10332) (not x1276) (not x17992))
+:assumption (or (not x17366) x25151)
+:assumption (or x27967 (not x1935) x8151 x7369 x17743 (not x7113) x7995)
+:assumption (or (not x16721) (not x30486))
+:assumption (or x3004 x5985)
+:assumption (or (not x9409) (not x8970))
+:assumption (or (not x918) (not x31829) x14369)
+:assumption (or (not x15581) (not x19113))
+:assumption (or (not x13956) x13411 x31146)
+:assumption (or (not x15528) x729)
+:assumption (or x3207 (not x83))
+:assumption (or (not x12728) x9772)
+:assumption (or (not x27085) (not x20957))
+:assumption (or x5611 x8658)
+:assumption (or (not x26024) x14779)
+:assumption (or x21191 (not x21194))
+:assumption (or x27609 (not x25733))
+:assumption (or x3956 (not x15767))
+:assumption (or x19627 x25995)
+:assumption (or (not x6069) x29639)
+:assumption (or x16266 x16025 x12919)
+:assumption (or (not x1) (not x31772))
+:assumption (or (not x25972) (not x30603))
+:assumption (or x4467 x12877)
+:assumption (or x19450 x6735)
+:assumption (or (not x22188) x28667)
+:assumption (or x17563 (not x29897) x14057)
+:assumption (or x5947 x1125)
+:assumption (or x12923 x25846)
+:assumption (or (not x662) x19913)
+:assumption (or (not x6932) (not x12398))
+:assumption (or (not x22717) x1529)
+:assumption (or (not x24776) (not x7671))
+:assumption (or x28328 (not x11117) (not x11488) (not x22010))
+:assumption (or x10369 x28477)
+:assumption (or x21938 x22104)
+:assumption (or x13330 (not x10521))
+:assumption (or x5763 (not x8870))
+:assumption (or (not x23000) (not x30593))
+:assumption (or (not x13969) x8181)
+:assumption (or x1748 x16304 (not x30834) x23119 (not x10527))
+:assumption (or (not x13990) x31666)
+:assumption (or x355 x12776 x6947 (not x28530) x3926 (not x9715) (not x5028))
+:assumption (or (not x26567) x12347)
+:assumption (or x9361 (not x31877))
+:assumption (or x20931 x12259)
+:assumption (or (not x23750) (not x31297) x3202 x7346 x28183)
+:assumption (or (not x27430) x7833 (not x9421) (not x27969))
+:assumption (or (not x17481) x10874)
+:assumption (or x14701 (not x21632) x18769 x28428)
+:assumption (or (not x30748) (not x27424))
+:assumption (or x15034 (not x20578))
+:assumption (or (not x16510) x21825)
+:assumption (or x18694 (not x4195))
+:assumption (or x18640 x16021)
+:assumption (or (not x15968) (not x25818))
+:assumption (or x18069 x8977)
+:assumption (or x22647 x29303)
+:assumption (or (not x19579) (not x12684))
+:assumption (or x11111 x5690)
+:assumption (or (not x10688) x14311)
+:assumption (or x22278 x12155)
+:assumption (or x21472 x2696)
+:assumption (or x17678 x23244 x14337)
+:assumption (or x24357 (not x31082))
+:assumption (or x8592 (not x754))
+:assumption (or (not x18519) x7893 x30064)
+:assumption (or x2133 (not x1774))
+:assumption (or (not x25463) x31605 (not x10528) x8251 (not x3814) (not x11670) (not x829) x8198 (not x4952))
+:assumption (or (not x25659) (not x4727) (not x30298))
+:assumption (or (not x30110) x18184)
+:assumption (or x27326 x21494)
+:assumption (or x19113 x30701)
+:assumption (or (not x3951) (not x9233))
+:assumption (or (not x17993) (not x6515))
+:assumption (or x15407 x25818 x13009 (not x1294) (not x14290) x5267)
+:assumption (or x9492 (not x24197))
+:assumption (or (not x23597) (not x13915) (not x9026) x18408 (not x5760) x19128 x23377 (not x19052) x1922 (not x14329))
+:assumption (or x9714 (not x3001))
+:assumption (or (not x4365) (not x10256))
+:assumption (or x7719 x27871)
+:assumption (or x22442 (not x28807) (not x1458))
+:assumption (or x16910 (not x12182) x8461)
+:assumption (or x13599 x6034)
+:assumption (or x15736 (not x24823))
+:assumption (or (not x15425) (not x10901))
+:assumption (or x6149 x31574 (not x29207) x11792)
+:assumption (or x5990 (not x17781))
+:assumption (or x22399 x25039)
+:assumption (or (not x3831) x1482)
+:assumption (or x7839 x27738)
+:assumption (or (not x6566) (not x18537))
+:assumption (or (not x20305) (not x9025) x28732)
+:assumption (or x16807 x28453 (not x1719) x1821)
+:assumption (or x3435 (not x14455) (not x23340))
+:assumption (or (not x18860) x6129)
+:assumption (or x12760 (not x22697))
+:assumption (or x14053 (not x24055))
+:assumption (or (not x26528) (not x177))
+:assumption (or (not x6081) (not x29781) x18859)
+:assumption (or x25499 (not x15769) x17075 x26376 x11266 x3111)
+:assumption (or (not x26867) x9008)
+:assumption (or (not x12397) (not x14223))
+:assumption (or x19316 (not x12114))
+:assumption (or x6377 (not x6547))
+:assumption (or x11274 x30595)
+:assumption (or (not x25659) (not x19408))
+:assumption (or x17130 (not x31179))
+:assumption (or x12766 x20217)
+:assumption (or x4321 x9008 x20975)
+:assumption (or (not x6483) x26164)
+:assumption (or (not x18197) x16766)
+:assumption (or (not x15379) x10909)
+:assumption (or (not x3952) x20001)
+:assumption (or x26539 (not x4635))
+:assumption (or x18992 x181)
+:assumption (or (not x7967) (not x28973))
+:assumption (or x17032 (not x23037))
+:assumption (or x27923 x30066)
+:assumption (or (not x21405) x21337)
+:assumption (or (not x21097) (not x8522))
+:assumption (or (not x26647) x22457)
+:assumption (or x19972 (not x25710))
+:assumption (or (not x3081) (not x18644))
+:assumption (or (not x14314) (not x20482) (not x9301))
+:assumption (or (not x23382) (not x30224) x21298 (not x11373))
+:assumption (or (not x31298) x6307 (not x2997) (not x21737) x10032 (not x4476))
+:assumption (or x2498 x2087 (not x30219))
+:assumption (or x1695 (not x17691) x23383 x24780 (not x2252) (not x19498) (not x27031))
+:assumption (or (not x25878) (not x5522))
+:assumption (or x5528 x14744)
+:assumption (or (not x1457) (not x10330))
+:assumption (or (not x8577) (not x20227))
+:assumption (or (not x27334) x25542)
+:assumption (or (not x27536) x30138)
+:assumption (or x5538 (not x11373))
+:assumption (or (not x23313) (not x20114) x908 (not x26432) x12105)
+:assumption (or x30915 (not x26998) (not x24728))
+:assumption (or (not x26335) x26647 x8865 x20507 x8888 x4882)
+:assumption (or (not x15438) x5528)
+:assumption (or (not x16823) x16237 x14517 x23244 x8002)
+:assumption (or x13097 x13576 x24221)
+:assumption (or x27505 x22345)
+:assumption (or (not x5199) (not x7598) (not x3633) (not x30379) (not x7450) (not x31734) x17417)
+:assumption (or x3789 x24022)
+:assumption (or x19787 x29642)
+:assumption (or (not x13792) x15659)
+:assumption (or x3959 x31681)
+:assumption (or (not x27269) x23571)
+:assumption (or x17855 x7157)
+:assumption (or (not x20929) (not x12203))
+:assumption (or (not x31219) (not x696))
+:assumption (or (not x5942) (not x30505))
+:assumption (or x17104 (not x26756))
+:assumption (or x19574 (not x11506))
+:assumption (or (not x360) x12417)
+:assumption (or x29114 (not x14839))
+:assumption (or (not x16589) x22348)
+:assumption (or (not x10206) x11853)
+:assumption (or (not x26594) (not x14757))
+:assumption (or x20550 (not x26098) x31517 x25806)
+:assumption (or (not x23141) (not x7094))
+:assumption (or (not x4215) x30575)
+:assumption (or (not x31509) x9008 x1497)
+:assumption (or x29305 x21144)
+:assumption (or x13956 x6920)
+:assumption (or (not x12203) x12518)
+:assumption (or x22498 (not x406))
+:assumption (or x24138 x7492)
+:assumption (or x6110 x2122)
+:assumption (or (not x27847) x16964)
+:assumption (or (not x493) x12004)
+:assumption (or (not x7797) x13228)
+:assumption (or x28898 (not x7825))
+:assumption (or x9546 (not x11751))
+:assumption (or (not x7747) x9008)
+:assumption (or x23668 (not x379))
+:assumption (or (not x4583) (not x19699))
+:assumption (or (not x12152) x1902)
+:assumption (or x13576 (not x9531) x9616)
+:assumption (or x24045 (not x31134) (not x29606) x25689 x6655 x9529 (not x801))
+:assumption (or (not x6243) x11866)
+:assumption (or (not x3464) (not x21026) x28518)
+:assumption (or (not x30856) (not x20164))
+:assumption (or (not x4697) (not x25911))
+:assumption (or x6053 x1782)
+:assumption (or (not x26644) x3278)
+:assumption (or (not x24274) (not x5311))
+:assumption (or (not x15962) (not x8296))
+:assumption (or (not x23484) (not x1177))
+:assumption (or x26000 x29831)
+:assumption (or (not x8002) x3004)
+:assumption (or x28345 (not x29420) x18762 x19303 x13435 x19572)
+:assumption (or x4945 (not x5302))
+:assumption (or (not x31368) (not x1788) (not x28943))
+:assumption (or (not x10225) (not x6969))
+:assumption (or x29660 (not x6389) (not x26851))
+:assumption (or (not x25818) (not x9008) x19988 (not x30224) (not x5528))
+:assumption (or (not x13488) (not x16190))
+:assumption (or x13036 (not x5356))
+:assumption (or x15866 x26061 (not x4340))
+:assumption (or x29975 (not x1166))
+:assumption (or (not x30368) (not x12605))
+:assumption (or (not x28885) (not x7601))
+:assumption (or (not x29294) x25366)
+:assumption (or x2467 x25376)
+:assumption (or (not x2459) (not x12986))
+:assumption (or (not x153) (not x23546))
+:assumption (or x28848 x10614)
+:assumption (or (not x19055) (not x8741))
+:assumption (or x11461 x7003)
+:assumption (or (not x2906) (not x29442) (not x28338))
+:assumption (or x11167 x2943)
+:assumption (or x17581 x7480)
+:assumption (or x22874 (not x2676) (not x12015) (not x11665))
+:assumption (or x16446 (not x31274) (not x28817))
+:assumption (or x3856 (not x818))
+:assumption (or (not x3882) x5906)
+:assumption (or x28675 (not x26659))
+:assumption (or (not x22308) (not x25162))
+:assumption (or x21333 (not x10669) (not x18130) x11020 (not x3979) (not x245))
+:assumption (or x27387 x25829 x27998)
+:assumption (or (not x21815) x27094)
+:assumption (or (not x18694) (not x2987))
+:assumption (or x20670 (not x4374))
+:assumption (or (not x9960) (not x13487))
+:assumption (or x10424 (not x31876))
+:assumption (or x18118 (not x2548))
+:assumption (or (not x183) (not x18314))
+:assumption (or (not x22255) x17043)
+:assumption (or x30621 x1666 x11702)
+:assumption (or x8223 x13982)
+:assumption (or (not x1921) x26104 (not x895))
+:assumption (or x13417 x31077)
+:assumption (or x28342 x30374)
+:assumption (or (not x29200) (not x21044))
+:assumption (or (not x25622) x20914)
+:assumption (or x3292 (not x29696))
+:assumption (or (not x18918) x25008)
+:assumption (or (not x22346) (not x7741) x1273)
+:assumption (or (not x15738) (not x26600))
+:assumption (or (not x22845) (not x31532))
+:assumption (or (not x23638) x22474)
+:assumption (or x13084 (not x19677))
+:assumption (or x30993 x14098)
+:assumption (or x1362 x6783 (not x24126) x15753 x13971 x30624)
+:assumption (or x31114 (not x2324))
+:assumption (or x30791 x2993)
+:assumption (or (not x23303) x5953)
+:assumption (or (not x6303) x17075)
+:assumption (or (not x1785) x12155)
+:assumption (or x381 (not x9570))
+:assumption (or x28973 (not x24394) (not x288))
+:assumption (or x24549 x16239)
+:assumption (or x14132 x11475)
+:assumption (or x1139 x2098)
+:assumption (or (not x12158) x28763)
+:assumption (or x4562 x26195)
+:assumption (or (not x21335) x14171)
+:assumption (or x30874 x28851 x142)
+:assumption (or (not x20863) x5375)
+:assumption (or x17395 (not x22844))
+:assumption (or (not x11710) x11413)
+:assumption (or x27195 x16384)
+:assumption (or (not x28342) x6018 (not x14281) x23244 x8002)
+:assumption (or (not x1820) (not x28358))
+:assumption (or (not x27281) (not x6528))
+:assumption (or x20937 (not x1996))
+:assumption (or x13994 x25690)
+:assumption (or x16811 (not x3453))
+:assumption (or (not x23844) x28023)
+:assumption (or x17912 (not x19843))
+:assumption (or x9824 (not x4291))
+:assumption (or (not x26148) x18609)
+:assumption (or x20280 x10874 x16025)
+:assumption (or x24715 (not x30075))
+:assumption (or x4866 x14237)
+:assumption (or x23200 (not x7937))
+:assumption (or x12533 (not x25558))
+:assumption (or (not x16784) x17881)
+:assumption (or (not x3001) (not x4940) x22317)
+:assumption (or x25652 (not x12685))
+:assumption (or (not x7159) (not x23041))
+:assumption (or x12104 (not x13061))
+:assumption (or (not x1) x18003)
+:assumption (or (not x30555) x18399)
+:assumption (or x738 x10745)
+:assumption (or (not x21298) x10861)
+:assumption (or (not x30260) (not x18100))
+:assumption (or (not x2334) (not x8858))
+:assumption (or x11183 (not x4466))
+:assumption (or x8658 x3750)
+:assumption (or x10248 (not x6591))
+:assumption (or x21154 x3394 x26327 (not x24643) x10264)
+:assumption (or x6559 x21861)
+:assumption (or x23771 (not x15672))
+:assumption (or x18428 x28242)
+:assumption (or (not x25389) x8393)
+:assumption (or x13595 x25366 (not x19026))
+:assumption (or (not x25804) (not x15235))
+:assumption (or x24462 (not x10296))
+:assumption (or x620 (not x27838))
+:assumption (or x13064 (not x9377))
+:assumption (or (not x15151) (not x27424))
+:assumption (or (not x983) x31670)
+:assumption (or x20362 (not x23361))
+:assumption (or x9096 x14452)
+:assumption (or x2798 (not x25603))
+:assumption (or (not x11208) x15564)
+:assumption (or x21490 x9647)
+:assumption (or x3759 x14326)
+:assumption (or (not x29771) (not x29054))
+:assumption (or x9658 x20946)
+:assumption (or (not x23500) (not x15376))
+:assumption (or (not x24874) (not x10160))
+:assumption (or (not x30590) (not x11918))
+:assumption (or x5004 (not x4712))
+:assumption (or (not x24303) x3433)
+:assumption (or (not x26257) x3236)
+:assumption (or x3001 x8367 x2653)
+:assumption (or (not x1318) (not x5635))
+:assumption (or (not x16602) (not x31235) (not x12321) x28302 (not x11067))
+:assumption (or x20843 (not x15795))
+:assumption (or (not x23244) (not x18003) x11303)
+:assumption (or x4055 x19384)
+:assumption (or (not x24576) x6746)
+:assumption (or x25118 (not x19477))
+:assumption (or x29860 (not x3390))
+:assumption (or x16409 x27778)
+:assumption (or x24234 x4817 (not x26713))
+:assumption (or x1554 (not x17607))
+:assumption (or x26787 (not x16998))
+:assumption (or (not x31805) x31658)
+:assumption (or x17510 (not x23562))
+:assumption (or x10178 x6205)
+:assumption (or x20435 (not x8281))
+:assumption (or x4154 x29312 x24557 (not x24756))
+:assumption (or x25983 (not x31829))
+:assumption (or (not x8681) x22598 x12049 (not x14709) x3945 (not x18293) (not x11230))
+:assumption (or (not x14586) (not x13671))
+:assumption (or x26653 (not x5331) (not x17735) (not x31707))
+:assumption (or x27354 (not x27997))
+:assumption (or x22700 x8002 x5701)
+:assumption (or x11618 x13831)
+:assumption (or (not x20449) (not x14839))
+:assumption (or x23847 x2046)
+:assumption (or (not x9008) x30676 x15102 (not x5528) x26578)
+:assumption (or (not x16193) x22939)
+:assumption (or (not x30708) (not x28541) (not x16510) (not x6951) (not x21815))
+:assumption (or x31144 x11850)
+:assumption (or (not x2133) (not x73))
+:assumption (or (not x7515) x9746)
+:assumption (or (not x20727) (not x25366) (not x6126))
+:assumption (or x5598 x26784)
+:assumption (or (not x22623) x18063)
+:assumption (or (not x12547) (not x6294))
+:assumption (or x28597 x15774)
+:assumption (or (not x24687) (not x7730))
+:assumption (or x1139 (not x8051) (not x11547))
+:assumption (or x20323 x6496)
+:assumption (or x25605 (not x1393))
+:assumption (or x26713 x16483 (not x24401) x25423)
+:assumption (or (not x24889) (not x13421))
+:assumption (or x20113 (not x23958))
+:assumption (or (not x31481) (not x4429))
+:assumption (or (not x22330) x3808)
+:assumption (or (not x18642) (not x15120) (not x13564) x26411 x18586 (not x17730) x16648 (not x8017) (not x5224))
+:assumption (or (not x14548) (not x20418))
+:assumption (or x21065 x28586)
+:assumption (or (not x5769) x3060)
+:assumption (or x24727 x8002 (not x11610))
+:assumption (or x10973 x21862)
+:assumption (or (not x25334) (not x11760) x22337 (not x1502))
+:assumption (or (not x13837) (not x5282))
+:assumption (or (not x23849) (not x24411))
+:assumption (or (not x11270) (not x23042))
+:assumption (or x8681 (not x12049))
+:assumption (or (not x8120) x24451)
+:assumption (or (not x18579) x4765)
+:assumption (or (not x19070) x18519)
+:assumption (or x15515 (not x18393))
+:assumption (or x21796 (not x11042))
+:assumption (or x27331 x9485)
+:assumption (or (not x43) x597)
+:assumption (or (not x25384) (not x23306))
+:assumption (or x21298 (not x19364) x31581 (not x22169))
+:assumption (or (not x4166) x10564)
+:assumption (or (not x805) (not x28461) (not x16041) x21497 x19312 x5965)
+:assumption (or x15136 x30833)
+:assumption (or (not x15647) x7640)
+:assumption (or (not x25811) x28159)
+:assumption (or x19098 (not x15274))
+:assumption (or x15019 (not x6351))
+:assumption (or x10897 x3080)
+:assumption (or (not x12753) (not x5857))
+:assumption (or (not x14886) x28996)
+:assumption (or x24964 (not x1621))
+:assumption (or x25046 x26025)
+:assumption (or x27948 x27116)
+:assumption (or (not x13956) x29333 (not x17128))
+:assumption (or (not x22694) x14968 x26206)
+:assumption (or (not x24585) (not x9008))
+:assumption (or (not x26983) (not x14411))
+:assumption (or (not x12311) x7845 (not x3988) (not x20559) (not x16510) x29160)
+:assumption (or x6057 x30646)
+:assumption (or (not x9497) x19117)
+:assumption (or x28590 x20956)
+:assumption (or (not x25731) (not x29521))
+:assumption (or x28711 (not x23244))
+:assumption (or (not x4235) (not x3861))
+:assumption (or (not x10798) (not x28378) (not x8614) (not x229) x14789 (not x17075))
+:assumption (or (not x4781) x6166)
+:assumption (or (not x23100) (not x14665))
+:assumption (or x7944 (not x17011) x25308 x27790 x20819 x27088)
+:assumption (or (not x77) (not x26469))
+:assumption (or x25008 x17718)
+:assumption (or x10462 x14896)
+:assumption (or x1802 (not x14757))
+:assumption (or x19252 x10958)
+:assumption (or x26647 x1428)
+:assumption (or x23244 x2301)
+:assumption (or (not x24677) (not x27346))
+:assumption (or (not x8194) (not x10348))
+:assumption (or x12362 x2075)
+:assumption (or (not x3893) x14600)
+:assumption (or (not x28659) (not x8505))
+:assumption (or x3614 x3219)
+:assumption (or x9572 x2314)
+:assumption (or x17139 x1622)
+:assumption (or (not x29707) (not x15020))
+:assumption (or (not x18064) (not x1210))
+:assumption (or x2792 x29208)
+:assumption (or (not x28645) (not x5695))
+:assumption (or (not x1303) x9351 x8367)
+:assumption (or (not x4944) (not x28532))
+:assumption (or x6273 (not x9753))
+:assumption (or x30291 (not x7849))
+:assumption (or (not x9278) (not x12476))
+:assumption (or (not x21555) (not x3001))
+:assumption (or x20606 x21929)
+:assumption (or (not x1582) x20032)
+:assumption (or x16746 x27207)
+:assumption (or x9511 x19063)
+:assumption (or x30256 (not x13154))
+:assumption (or x1658 x29961)
+:assumption (or x12717 (not x30868))
+:assumption (or (not x27321) x1889)
+:assumption (or (not x16249) (not x25726))
+:assumption (or (not x29442) (not x11595))
+:assumption (or x20891 x16235)
+:assumption (or (not x7420) (not x119))
+:assumption (or (not x4047) x27019 (not x26838))
+:assumption (or x24908 (not x21428))
+:assumption (or (not x24503) x29990)
+:assumption (or (not x28494) x14399 (not x16819) x20911 x17814 x4691)
+:assumption (or (not x29964) x20159)
+:assumption (or x9094 x17962)
+:assumption (or x8630 x18335 (not x15838))
+:assumption (or x15747 (not x11366) (not x22452) (not x428) (not x30190) x5990 (not x1309) x28242)
+:assumption (or x17647 x20851)
+:assumption (or x30062 x30478)
+:assumption (or (not x22991) (not x20049))
+:assumption (or x965 x2291)
+:assumption (or x27933 (not x3705) (not x20873))
+:assumption (or x18068 x14552)
+:assumption (or x12166 x25092)
+:assumption (or x10034 (not x11444))
+:assumption (or x31126 x18509)
+:assumption (or x22777 (not x1873))
+:assumption (or x3011 x28056)
+:assumption (or x27340 x5886 x8961 x6955)
+:assumption (or x25052 (not x3711))
+:assumption (or (not x3681) x6594 (not x21062) x17534)
+:assumption (or x23647 (not x13970))
+:assumption (or x16921 (not x1474))
+:assumption (or x26970 x20603 (not x26165) (not x3434))
+:assumption (or (not x14123) x18121)
+:assumption (or x7200 x31184)
+:assumption (or (not x11948) (not x25574))
+:assumption (or (not x16614) (not x8326))
+:assumption (or x30586 (not x8623))
+:assumption (or (not x23801) x16971)
+:assumption (or x28384 x1941)
+:assumption (or (not x19491) x12450)
+:assumption (or (not x26897) (not x5572) (not x19877))
+:assumption (or (not x12072) (not x3530))
+:assumption (or x19440 x17728)
+:assumption (or x24178 (not x7332))
+:assumption (or x3782 (not x25733))
+:assumption (or (not x13090) (not x24756))
+:assumption (or x27265 x1127)
+:assumption (or (not x1088) x26145)
+:assumption (or (not x4385) (not x30474) x11488 x15270 (not x1594) x23696 (not x8440))
+:assumption (or x26619 (not x3694))
+:assumption (or x7168 (not x7650))
+:assumption (or x22215 (not x17075))
+:assumption (or (not x801) x13136)
+:assumption (or x4129 x1748)
+:assumption (or (not x28632) x11226)
+:assumption (or (not x23807) (not x11237))
+:assumption (or (not x26316) (not x4441))
+:assumption (or x30671 (not x1305))
+:assumption (or (not x20263) (not x27045))
+:assumption (or x2288 (not x11292) (not x28282) x21288 (not x28250))
+:assumption (or (not x9912) (not x13956))
+:assumption (or x13625 (not x7110))
+:assumption (or (not x7104) x22082)
+:assumption (or (not x29904) x9237)
+:assumption (or x1786 x17163)
+:assumption (or (not x26713) (not x11838))
+:assumption (or (not x9717) (not x21955) x873 x4433 (not x17779))
+:assumption (or (not x12105) (not x908))
+:assumption (or x19992 x16314)
+:assumption (or x16595 (not x7751))
+:assumption (or x11348 x20700)
+:assumption (or x27175 x29288)
+:assumption (or (not x22789) (not x22385))
+:assumption (or (not x23270) (not x2966))
+:assumption (or x16214 (not x12481))
+:assumption (or (not x11002) (not x2404))
+:assumption (or x7748 (not x13253) (not x9190))
+:assumption (or (not x8002) x2314)
+:assumption (or (not x23646) x31830)
+:assumption (or (not x6696) x29442)
+:assumption (or (not x16750) (not x26397))
+:assumption (or (not x5752) x17872 x6632 (not x28528) (not x20342))
+:assumption (or (not x27553) x22332)
+:assumption (or x5249 (not x13956) x6360 (not x9961))
+:assumption (or (not x17116) (not x26046))
+:assumption (or x8229 (not x25043))
+:assumption (or (not x18082) (not x6511))
+:assumption (or x15929 (not x23724))
+:assumption (or (not x31323) x13224)
+:assumption (or (not x31608) (not x2060))
+:assumption (or x11851 x23373)
+:assumption (or x9779 x22472 x13956 x8002 (not x20986))
+:assumption (or x26647 x27177)
+:assumption (or x8264 x15023)
+:assumption (or (not x11909) x31318)
+:assumption (or x9419 (not x3033))
+:assumption (or x30450 (not x22707))
+:assumption (or (not x31639) x67)
+:assumption (or (not x379) x5934)
+:assumption (or (not x1523) (not x6536))
+:assumption (or (not x14457) (not x18827))
+:assumption (or (not x19823) (not x27636))
+:assumption (or (not x11649) (not x14642))
+:assumption (or x4277 (not x30133))
+:assumption (or (not x16363) (not x20438))
+:assumption (or x20195 (not x13411))
+:assumption (or (not x9531) x28156 (not x21414))
+:assumption (or x28090 x18678)
+:assumption (or (not x14472) x16217)
+:assumption (or (not x26110) x7497)
+:assumption (or x23516 (not x16400))
+:assumption (or (not x766) (not x19073))
+:assumption (or (not x8238) (not x14073))
+:assumption (or (not x18707) (not x7286))
+:assumption (or (not x20723) x23147)
+:assumption (or x20949 (not x30223) x13415 (not x12045) (not x21060))
+:assumption (or (not x17225) (not x30467))
+:assumption (or (not x24588) x14451)
+:assumption (or x19093 (not x12760))
+:assumption (or (not x9439) x26649)
+:assumption (or x7191 (not x5578))
+:assumption (or x29300 (not x8296))
+:assumption (or x31628 (not x5522))
+:assumption (or (not x2189) x18598)
+:assumption (or (not x8900) x23469)
+:assumption (or x22189 (not x25146))
+:assumption (or (not x15814) (not x28342))
+:assumption (or (not x24853) x22143)
+:assumption (or (not x9008) x18035)
+:assumption (or (not x3538) (not x10066))
+:assumption (or x18519 (not x7899) x4775)
+:assumption (or x22335 (not x14252))
+:assumption (or (not x27432) x11892)
+:assumption (or x25833 x26810)
+:assumption (or (not x9531) x4462)
+:assumption (or x17359 (not x16921) x11281 x1474)
+:assumption (or (not x2671) (not x5166))
+:assumption (or x11234 x3928 x3264 (not x2592) (not x31616) x13749 (not x15745))
+:assumption (or (not x25249) x20949)
+:assumption (or x27453 x2034)
+:assumption (or (not x31711) x24756 (not x14137))
+:assumption (or (not x15821) x16604)
+:assumption (or (not x9425) (not x24254))
+:assumption (or (not x15621) x21829)
+:assumption (or (not x31836) x6732)
+:assumption (or x931 (not x3301))
+:assumption (or x18298 (not x22322) x1519 x26943 x10691)
+:assumption (or (not x248) (not x17201))
+:assumption (or x2565 x4730)
+:assumption (or (not x5856) (not x12602))
+:assumption (or (not x30640) (not x22057))
+:assumption (or (not x19503) x12588)
+:assumption (or (not x7606) (not x20598))
+:assumption (or (not x22978) (not x16636))
+:assumption (or (not x13582) x19079)
+:assumption (or (not x12100) (not x31097))
+:assumption (or x27449 x25798)
+:assumption (or x30318 x18189)
+:assumption (or (not x27896) x22717 x202 (not x8002))
+:assumption (or x30284 x1710)
+:assumption (or (not x31894) (not x22659))
+:assumption (or x20230 x23528)
+:assumption (or x19798 (not x23222))
+:assumption (or (not x8658) x6499)
+:assumption (or x3734 x19210)
+:assumption (or x7844 x16293)
+:assumption (or (not x2237) x21323)
+:assumption (or (not x22966) x5270)
+:assumption (or (not x252) x6483)
+:assumption (or (not x6946) (not x8892) x31177 (not x13453))
+:assumption (or x10753 x11000)
+:assumption (or x27880 x21823)
+:assumption (or x30639 (not x26450))
+:assumption (or (not x16576) x3782)
+:assumption (or (not x6686) (not x19023))
+:assumption (or (not x15243) (not x2739))
+:assumption (or x11110 x8822)
+:assumption (or x17280 (not x31424))
+:assumption (or (not x27243) (not x28948))
+:assumption (or (not x16019) (not x14887) x26619 (not x1545) x7657)
+:assumption (or x31782 x13842 (not x6320) (not x5386) x13997 x31372)
+:assumption (or x31077 x12524)
+:assumption (or x6097 x14355 x29928)
+:assumption (or x5540 (not x7169))
+:assumption (or (not x23767) (not x7303))
+:assumption (or (not x6286) (not x2943) (not x13036))
+:assumption (or x12902 (not x15850))
+:assumption (or (not x18345) (not x22679))
+:assumption (or (not x694) (not x16683))
+:assumption (or x7113 (not x27855))
+:assumption (or (not x18674) (not x24102))
+:assumption (or (not x28361) x25161)
+:assumption (or x18042 (not x15471))
+:assumption (or (not x5126) x8738)
+:assumption (or x19992 x19228 (not x12387) (not x1738))
+:assumption (or (not x27638) (not x28717))
+:assumption (or (not x8117) (not x28013))
+:assumption (or (not x25878) (not x17209))
+:assumption (or x7939 (not x24629))
+:assumption (or (not x8983) x25213)
+:assumption (or (not x31927) x24494)
+:assumption (or (not x13223) (not x26954) (not x14310) x4234 (not x31629) (not x20476) (not x7749))
+:assumption (or (not x23332) (not x13213))
+:assumption (or x12774 x11427)
+:assumption (or x20562 (not x29757) (not x2516) x7830 x18495)
+:assumption (or x9443 (not x12894))
+:assumption (or x10283 x24117)
+:assumption (or (not x10433) (not x8044))
+:assumption (or x14641 (not x28168))
+:assumption (or (not x18003) (not x19218))
+:assumption (or (not x7254) (not x16278))
+:assumption (or (not x7779) (not x11485))
+:assumption (or (not x24704) x5954)
+:assumption (or (not x26358) (not x28500))
+:assumption (or x2509 (not x4836))
+:assumption (or x21079 (not x6724))
+:assumption (or x8002 x5254)
+:assumption (or x18574 x9309)
+:assumption (or x24738 (not x26224))
+:assumption (or x22311 (not x3578))
+:assumption (or (not x11860) x9423)
+:assumption (or x20229 x14555)
+:assumption (or (not x31051) x20686)
+:assumption (or (not x11668) x8596)
+:assumption (or (not x21308) (not x23312))
+:assumption (or (not x28712) (not x3942) x9008 x5536 (not x302) (not x24110))
+:assumption (or (not x30238) x12868)
+:assumption (or (not x601) x20077)
+:assumption (or (not x3494) x22837 x15096 (not x31850))
+:assumption (or (not x26864) x23244)
+:assumption (or x31806 x27473)
+:assumption (or x9886 x3143)
+:assumption (or x23356 (not x3858))
+:assumption (or x10944 (not x12563))
+:assumption (or (not x26061) x4340)
+:assumption (or (not x17915) x24347)
+:assumption (or (not x3415) (not x19346))
+:assumption (or x12262 (not x28084))
+:assumption (or (not x11785) (not x3804))
+:assumption (or x19404 (not x15562))
+:assumption (or x6381 (not x29892))
+:assumption (or (not x18076) (not x7046))
+:assumption (or x2689 x25824)
+:assumption (or x28445 (not x23678))
+:assumption (or x13325 (not x20384))
+:assumption (or x19398 (not x24816))
+:assumption (or (not x19323) (not x23264))
+:assumption (or (not x2236) (not x12778))
+:assumption (or (not x20250) x23818)
+:assumption (or x4411 x15432)
+:assumption (or (not x6587) x5729)
+:assumption (or (not x9571) (not x29926))
+:assumption (or (not x5040) (not x22855) (not x25687) x17994 x5037)
+:assumption (or (not x1582) x9886)
+:assumption (or x3218 (not x20933))
+:assumption (or x19380 (not x1877))
+:assumption (or (not x16132) (not x18988))
+:assumption (or x14357 x16033)
+:assumption (or (not x27157) x2500 x2336 (not x6480))
+:assumption (or x7079 (not x7959) x17940)
+:assumption (or (not x3644) (not x5384))
+:assumption (or x12123 x21928)
+:assumption (or (not x28973) x1410)
+:assumption (or x14602 (not x27763) (not x24228))
+:assumption (or (not x12991) x15571)
+:assumption (or (not x14963) (not x11478) x8303)
+:assumption (or (not x20561) x31134 (not x24079) x29606)
+:assumption (or (not x3985) x28053)
+:assumption (or x22851 x19014)
+:assumption (or (not x24765) x4009)
+:assumption (or x1393 (not x6751) x27980)
+:assumption (or (not x25315) (not x17946))
+:assumption (or x28916 (not x31829))
+:assumption (or x6706 x4419)
+:assumption (or (not x31081) x3259)
+:assumption (or (not x22552) (not x21644))
+:assumption (or x11013 (not x31016) (not x8586) x3101)
+:assumption (or x14151 (not x20949))
+:assumption (or (not x1000) x15506)
+:assumption (or x16785 x23288)
+:assumption (or (not x26656) x11342)
+:assumption (or (not x23432) x5528)
+:assumption (or x25354 x16147)
+:assumption (or (not x3920) x8002)
+:assumption (or x3040 x498)
+:assumption (or x21926 x12827)
+:assumption (or (not x20981) (not x25239))
+:assumption (or x25625 x17634)
+:assumption (or (not x15123) (not x24331))
+:assumption (or x30465 x23572)
+:assumption (or (not x18654) x16629)
+:assumption (or (not x5391) x29055)
+:assumption (or (not x2665) x30113)
+:assumption (or x23223 (not x2089) (not x30991) (not x29922) (not x16426) (not x27158))
+:assumption (or x22185 (not x16221))
+:assumption (or (not x3038) (not x26468) x22251 x16374)
+:assumption (or (not x14754) x18271)
+:assumption (or (not x27676) x7527)
+:assumption (or (not x12922) x26597 (not x28084) (not x3995) x2445 x7096 (not x7453) (not x11752) x4358)
+:assumption (or x25813 x3261)
+:assumption (or x19943 x11713)
+:assumption (or x14649 (not x11018))
+:assumption (or (not x1393) x420 (not x31413))
+:assumption (or x5063 (not x27057))
+:assumption (or x26190 (not x4013) (not x9987) x20081 (not x29179) (not x12495) x15795)
+:assumption (or x6874 (not x10184))
+:assumption (or x20918 x21342 x17431 x12436)
+:assumption (or x11351 (not x12265))
+:assumption (or x11858 x31255 x8814)
+:assumption (or (not x31068) x11162)
+:assumption (or (not x17653) x29006)
+:assumption (or (not x18452) x14501)
+:assumption (or (not x30299) x10761)
+:assumption (or x21595 (not x8095))
+:assumption (or (not x27177) x55 (not x26647))
+:assumption (or (not x9423) (not x2005))
+:assumption (or x2240 x27510)
+:assumption (or x26522 x27597 (not x5248) (not x12923))
+:assumption (or x14133 x26335)
+:assumption (or (not x29426) x25315)
+:assumption (or x30734 (not x8041))
+:assumption (or (not x12588) x27897)
+:assumption (or x18546 (not x15672))
+:assumption (or (not x21289) x29442)
+:assumption (or (not x28385) x25372 (not x319))
+:assumption (or (not x23244) (not x14423))
+:assumption (or x3214 (not x23944))
+:assumption (or x24322 (not x23247))
+:assumption (or (not x18010) x28750)
+:assumption (or x7200 x27349 (not x29167) (not x6859))
+:assumption (or x27713 (not x28766))
+:assumption (or x6393 (not x880))
+:assumption (or x19849 x4324)
+:assumption (or (not x30411) x19849)
+:assumption (or x25821 (not x19312))
+:assumption (or x18536 x402)
+:assumption (or (not x14656) (not x29187))
+:assumption (or x25927 x11667 (not x11239) x21130)
+:assumption (or (not x19501) (not x12808))
+:assumption (or x18866 x1258)
+:assumption (or (not x16025) x5407)
+:assumption (or (not x27925) x6710)
+:assumption (or (not x18446) x24232)
+:assumption (or (not x13475) x20894)
+:assumption (or x24747 x20881)
+:assumption (or (not x7812) x15173)
+:assumption (or (not x16643) (not x20030) x23710)
+:assumption (or (not x6025) x9203)
+:assumption (or x15924 x3219)
+:assumption (or x31038 x24780)
+:assumption (or x6800 (not x1621))
+:assumption (or (not x11817) (not x31134) (not x22548) x29606)
+:assumption (or x21907 x20194)
+:assumption (or x8002 x14648 (not x12420) x23244 x13956 x14649)
+:assumption (or x24522 x22901)
+:assumption (or (not x19992) x14398)
+:assumption (or x19178 (not x30946) x31633 (not x1398) (not x6228) (not x28912))
+:assumption (or (not x893) (not x16626))
+:assumption (or (not x20397) x6069)
+:assumption (or (not x6502) x18694)
+:assumption (or (not x10134) (not x23079))
+:assumption (or x14807 x6124)
+:assumption (or x2734 x14236)
+:assumption (or x25080 (not x27216))
+:assumption (or (not x1127) (not x27265))
+:assumption (or (not x24278) x16365)
+:assumption (or x11832 x10798)
+:assumption (or (not x22754) x12988)
+:assumption (or (not x6967) x1008)
+:assumption (or (not x20232) (not x3922))
+:assumption (or (not x10432) x23489)
+:assumption (or x8002 x23516)
+:assumption (or x28531 x16907 (not x15520) x28235)
+:assumption (or x7416 x5767 (not x30003) x22726)
+:assumption (or (not x23466) (not x2525))
+:assumption (or x20384 x4325 x5282 x19575 x30630 x13837 (not x14512) x7313)
+:assumption (or (not x27091) (not x7994))
+:assumption (or x27915 (not x23898))
+:assumption (or x8002 x16849 x17835 (not x13956) x23244)
+:assumption (or x20373 (not x29313) x17641)
+:assumption (or (not x27338) (not x9997))
+:assumption (or (not x13740) (not x3699))
+:assumption (or (not x12630) (not x21702))
+:assumption (or (not x27155) (not x9751))
+:assumption (or x18698 (not x5840) x25997 (not x13956))
+:assumption (or x7436 (not x9441))
+:assumption (or x12810 (not x16374) (not x6192) x22251)
+:assumption (or (not x6624) (not x23244))
+:assumption (or (not x27160) x22841)
+:assumption (or x27794 x3965)
+:assumption (or (not x30887) x8234)
+:assumption (or x2113 x23099)
+:assumption (or x26104 (not x18412))
+:assumption (or (not x2528) x23672 x1074 (not x11517) x8701 x31319 x9753 (not x24333))
+:assumption (or (not x15874) (not x14719))
+:assumption (or x5846 (not x8806))
+:assumption (or x20949 x18145)
+:assumption (or x5908 (not x22096))
+:assumption (or (not x24073) x20203)
+:assumption (or (not x15448) (not x20950))
+:assumption (or x13962 x14777)
+:assumption (or x9321 x3971)
+:assumption (or x3228 x1082)
+:assumption (or (not x15841) x21831 x16806)
+:assumption (or (not x13031) x27090 x15795 (not x14591) x15836)
+:assumption (or (not x3096) (not x30215))
+:assumption (or x10025 (not x16838))
+:assumption (or (not x17075) x218 x24078 (not x8083))
+:assumption (or x11779 x14813)
+:assumption (or x10932 (not x22049))
+:assumption (or (not x2894) x25331)
+:assumption (or (not x6019) (not x1462))
+:assumption (or (not x18155) x894 (not x21721) (not x5595))
+:assumption (or (not x9812) x12179)
+:assumption (or (not x5058) (not x23115))
+:assumption (or x9624 (not x29604))
+:assumption (or (not x7748) x7445)
+:assumption (or (not x4070) x25968)
+:assumption (or (not x30249) (not x27530))
+:assumption (or (not x7886) (not x6410))
+:assumption (or x25768 (not x10958))
+:assumption (or (not x23980) x5489)
+:assumption (or (not x25855) x3119)
+:assumption (or x4026 (not x20885) x12469 x2096)
+:assumption (or (not x9278) x18436)
+:assumption (or (not x15704) (not x29442))
+:assumption (or x10348 (not x8660))
+:assumption (or x22438 x23674)
+:assumption (or (not x5938) (not x4763) x3001 x13428)
+:assumption (or x7197 (not x5229) (not x3806) x4054 (not x20042) x27888)
+:assumption (or x17524 (not x16802) x23018)
+:assumption (or (not x31342) (not x17460))
+:assumption (or x461 (not x17056))
+:assumption (or x7652 x4313)
+:assumption (or x15459 (not x16049))
+:assumption (or (not x8250) (not x6883))
+:assumption (or (not x8002) (not x8726))
+:assumption (or (not x30605) x28906 x1103 x27512 (not x11049) (not x31388) x5)
+:assumption (or x8955 x2479)
+:assumption (or (not x999) x15289)
+:assumption (or (not x19812) (not x23124))
+:assumption (or x14678 x2823)
+:assumption (or x1042 x5476)
+:assumption (or (not x6739) (not x1796))
+:assumption (or (not x7664) x6951)
+:assumption (or x3063 (not x13889))
+:assumption (or (not x5394) (not x6543) x23330 (not x3726) (not x9277))
+:assumption (or (not x234) (not x18014))
+:assumption (or (not x17012) x19672)
+:assumption (or (not x7698) (not x26190))
+:assumption (or (not x24274) x10577 x11654 x8143 (not x22419) x15681)
+:assumption (or x4209 x9960)
+:assumption (or x18003 x12819)
+:assumption (or x8702 x13289)
+:assumption (or (not x31920) x747 x2485 (not x14963))
+:assumption (or x6291 x12755)
+:assumption (or x13299 (not x18441))
+:assumption (or x21620 x9276)
+:assumption (or x27411 x10874)
+:assumption (or (not x2351) x12181)
+:assumption (or (not x14238) (not x8270))
+:assumption (or (not x1419) x7560)
+:assumption (or x20491 (not x15051))
+:assumption (or x5028 x23517)
+:assumption (or x6794 (not x19730) (not x3885) (not x31366))
+:assumption (or (not x23399) x16204)
+:assumption (or x23698 x827)
+:assumption (or x24820 x18952)
+:assumption (or (not x1210) x8807)
+:assumption (or (not x3091) (not x7205) x20214 x18748 x17989 (not x8341) (not x6011) (not x17075))
+:assumption (or x24617 (not x1587))
+:assumption (or (not x13290) (not x20482))
+:assumption (or (not x26059) (not x15182))
+:assumption (or (not x6525) (not x925))
+:assumption (or (not x7044) x31679)
+:assumption (or x17044 (not x2165))
+:assumption (or (not x1424) (not x16510))
+:assumption (or (not x16379) (not x14021) (not x30635) (not x169) (not x964) (not x21630))
+:assumption (or x19831 x26476)
+:assumption (or (not x19989) x19508)
+:assumption (or (not x11721) x17497 x24597 x28579 x12251 x26042)
+:assumption (or (not x1932) (not x28262))
+:assumption (or x15517 (not x14221))
+:assumption (or (not x19545) x3272)
+:assumption (or (not x13115) (not x13869))
+:assumption (or (not x18142) x5299)
+:assumption (or (not x17159) x10178)
+:assumption (or x9972 x13956 (not x9790) x23244 x8002 (not x23456))
+:assumption (or (not x8392) (not x15481))
+:assumption (or x29172 (not x14132))
+:assumption (or (not x5735) (not x17257) x8361)
+:assumption (or (not x4530) (not x2848))
+:assumption (or (not x9141) x29189)
+:assumption (or (not x6594) (not x2771))
+:assumption (or x1742 x13493)
+:assumption (or (not x25659) (not x24623))
+:assumption (or x15126 x23667)
+:assumption (or (not x27673) x26423)
+:assumption (or (not x31469) x20036 x14839)
+:assumption (or x28704 x18780)
+:assumption (or x6843 (not x15244) x16292)
+:assumption (or (not x15950) (not x20015))
+:assumption (or (not x5820) x16553)
+:assumption (or (not x2454) (not x18694) x25366 x8660)
+:assumption (or x26534 (not x2162))
+:assumption (or x9442 (not x13885) (not x27608))
+:assumption (or (not x28666) x14434 x14839)
+:assumption (or x12982 (not x27461))
+:assumption (or (not x13757) x20242)
+:assumption (or (not x4494) x11211)
+:assumption (or x18871 x29295)
+:assumption (or x20251 x25361)
+:assumption (or (not x23125) x19877)
+:assumption (or (not x3643) (not x6002))
+:assumption (or x5341 (not x24952))
+:assumption (or (not x30113) (not x31761))
+:assumption (or (not x737) x2404)
+:assumption (or x10804 x17359 x15509 (not x11281))
+:assumption (or (not x29574) (not x22101))
+:assumption (or (not x4732) (not x5534))
+:assumption (or x9988 x21784 (not x17187))
+:assumption (or (not x3934) (not x23246))
+:assumption (or x30306 x18229)
+:assumption (or x24975 (not x10128))
+:assumption (or (not x3607) x4173)
+:assumption (or (not x30200) (not x5242))
+:assumption (or x17135 (not x18973))
+:assumption (or (not x18745) (not x24477))
+:assumption (or (not x4224) (not x27959))
+:assumption (or x2567 (not x30596))
+:assumption (or (not x18276) x6485 (not x28811) x114 x8680)
+:assumption (or (not x23244) x20635)
+:assumption (or (not x25689) x31589)
+:assumption (or (not x29442) x611)
+:assumption (or (not x30253) (not x21190))
+:assumption (or (not x22706) (not x4576))
+:assumption (or (not x30372) (not x14964))
+:assumption (or (not x21338) x18729)
+:assumption (or (not x13791) (not x4610))
+:assumption (or (not x30491) (not x29012))
+:assumption (or x459 x3134)
+:assumption (or x2032 (not x11281))
+:assumption (or x17275 x16125)
+:assumption (or (not x12747) x23282)
+:assumption (or (not x12489) x29834)
+:assumption (or x9253 (not x22920))
+:assumption (or (not x13920) x22643 x14390 (not x158))
+:assumption (or x22694 (not x14968))
+:assumption (or (not x8002) (not x1958))
+:assumption (or (not x3782) (not x21370))
+:assumption (or (not x10325) x22718)
+:assumption (or x27485 x9255 x9275 x11197 (not x6806) x28886 (not x5819))
+:assumption (or x784 x26389)
+:assumption (or x9328 x7323)
+:assumption (or (not x11047) (not x25151) (not x17817))
+:assumption (or x15754 x1393)
+:assumption (or (not x6211) x10279)
+:assumption (or (not x18441) x1601 (not x29398))
+:assumption (or x5802 x17222)
+:assumption (or (not x20502) x15016)
+:assumption (or (not x31278) x29946)
+:assumption (or x5544 x1251)
+:assumption (or (not x16784) (not x6252))
+:assumption (or (not x26030) (not x17306))
+:assumption (or x3258 (not x13069))
+:assumption (or (not x5374) (not x5089))
+:assumption (or (not x6855) x5445)
+:assumption (or (not x3390) x15237)
+:assumption (or (not x13728) (not x14608))
+:assumption (or (not x23570) x7286)
+:assumption (or x27915 x26014)
+:assumption (or x23244 (not x664))
+:assumption (or x15158 x22237)
+:assumption (or x17856 (not x6384))
+:assumption (or (not x24073) (not x26880))
+:assumption (or (not x12045) (not x15871))
+:assumption (or x22120 (not x25028))
+:assumption (or (not x16854) x11855 (not x29779) (not x16293) (not x7844))
+:assumption (or x2788 x17648)
+:assumption (or x1040 x27498 x9008 (not x10355) (not x16891) x17460 (not x15123) x6573)
+:assumption (or x29649 (not x4914))
+:assumption (or x8140 x201)
+:assumption (or (not x24756) x14440)
+:assumption (or x1287 x25224)
+:assumption (or x13622 (not x24119))
+:assumption (or (not x19250) x6016)
+:assumption (or (not x23481) (not x23993))
+:assumption (or (not x189) (not x28519))
+:assumption (or x28648 (not x17616))
+:assumption (or (not x14803) (not x27109))
+:assumption (or x15465 x24963)
+:assumption (or x5821 (not x28541))
+:assumption (or x30607 x14822)
+:assumption (or (not x28362) x17027)
+:assumption (or x7637 (not x6780))
+:assumption (or (not x26694) x28136)
+:assumption (or (not x23735) x7225)
+:assumption (or (not x23244) (not x25007))
+:assumption (or (not x3305) (not x30944))
+:assumption (or x18399 x29883 (not x6499) x8658)
+:assumption (or (not x11452) x5304 (not x4237))
+:assumption (or (not x31034) (not x13576) (not x9531) x12578)
+:assumption (or (not x11299) (not x15513))
+:assumption (or (not x10187) x8576)
+:assumption (or (not x26763) x24055 (not x31898) (not x5266) (not x11416))
+:assumption (or x12626 x1606)
+:assumption (or (not x13936) (not x16504))
+:assumption (or x19052 x13915)
+:assumption (or (not x28784) x6658)
+:assumption (or x23271 (not x5490))
+:assumption (or (not x28305) (not x28755))
+:assumption (or x14627 x13122)
+:assumption (or x26292 x18878)
+:assumption (or x20257 (not x11495))
+:assumption (or x17891 x10067 x16704 x24771 (not x14199) x15748 (not x6291))
+:assumption (or x6775 x25100)
+:assumption (or (not x24200) (not x25067) (not x16003))
+:assumption (or (not x30857) x26902)
+:assumption (or x19239 x6774)
+:assumption (or (not x23908) (not x30094))
+:assumption (or (not x9356) x7734)
+:assumption (or (not x20958) (not x24970))
+:assumption (or (not x9986) x30821)
+:assumption (or (not x8578) (not x22411))
+:assumption (or x25306 (not x8044))
+:assumption (or x22829 x28392)
+:assumption (or x6431 (not x2644))
+:assumption (or x18859 (not x28763) (not x8771))
+:assumption (or x18482 x28228)
+:assumption (or x3080 (not x25914))
+:assumption (or x30110 (not x13831) (not x20715) (not x15272))
+:assumption (or x12371 x15298 (not x2813) (not x13561) (not x8626) (not x7761) (not x9199))
+:assumption (or x30205 x12212)
+:assumption (or x12434 (not x25135))
+:assumption (or x11377 x2572 x29959 (not x6594))
+:assumption (or x16082 x15006 x16749 x10603 (not x8241))
+:assumption (or (not x5077) (not x8120))
+:assumption (or (not x1358) x7690)
+:assumption (or x4319 (not x9338))
+:assumption (or x20090 (not x16741))
+:assumption (or (not x18595) (not x12987))
+:assumption (or x20728 (not x7750))
+:assumption (or (not x9779) (not x25814))
+:assumption (or x22441 (not x27032))
+:assumption (or (not x25056) x26647 (not x9008) (not x5528) (not x1042))
+:assumption (or (not x12594) x5362)
+:assumption (or (not x15457) x9620)
+:assumption (or x16623 (not x918))
+:assumption (or x18486 x26733)
+:assumption (or x5594 x19220)
+:assumption (or x16476 (not x15071))
+:assumption (or (not x21150) x26077 x20651 (not x19799) x23541)
+:assumption (or (not x6746) x27911 (not x5158) x11695)
+:assumption (or x28462 x3526)
+:assumption (or x7590 (not x13917))
+:assumption (or x3453 x20945 x12959 x30832 x25866)
+:assumption (or x12282 x11285)
+:assumption (or x27206 (not x459))
+:assumption (or (not x22012) x1352)
+:assumption (or (not x13106) x31134)
+:assumption (or (not x8690) (not x25511))
+:assumption (or (not x17939) (not x5323) (not x27766) (not x16334) (not x2288) x17019 (not x19474))
+:assumption (or (not x762) x3509 x11377 (not x5394))
+:assumption (or x6889 x27582)
+:assumption (or x26103 (not x3821))
+:assumption (or (not x5883) (not x28473))
+:assumption (or x10646 x5125)
+:assumption (or (not x5654) (not x15846))
+:assumption (or x24038 x23860)
+:assumption (or (not x16510) (not x18042) (not x10493) (not x21815) (not x6307))
+:assumption (or (not x6787) x20550 (not x29305) x25659 (not x29312))
+:assumption (or (not x19594) x7312)
+:assumption (or (not x14353) x6989)
+:assumption (or (not x26071) x6873 x480)
+:assumption (or x21058 (not x10300))
+:assumption (or x2503 (not x30482) x31455 x8748 (not x9970) x31470)
+:assumption (or x1639 (not x27220))
+:assumption (or x11560 x13956)
+:assumption (or (not x19) x23065)
+:assumption (or (not x9008) x11572)
+:assumption (or x11008 x24455)
+:assumption (or x5528 x22741 (not x29305))
+:assumption (or x24338 x22719)
+:assumption (or x31912 x1143 (not x30863) x881 (not x4570) (not x29177) x13407)
+:assumption (or (not x25372) (not x4249))
+:assumption (or x13323 x7638)
+:assumption (or (not x8444) x14229 (not x16927) (not x2114) x2386 x6431 x25949 (not x21975))
+:assumption (or x6795 (not x15894))
+:assumption (or (not x5336) (not x19864))
+:assumption (or x31502 x5184)
+:assumption (or x27946 (not x6478))
+:assumption (or x28459 (not x26669))
+:assumption (or (not x3722) (not x12528))
+:assumption (or (not x29618) (not x17166))
+:assumption (or (not x9543) x20727)
+:assumption (or x30417 x6953)
+:assumption (or (not x5936) x12291)
+:assumption (or x17036 x7943)
+:assumption (or (not x6484) x15988)
+:assumption (or x21445 (not x2133))
+:assumption (or (not x25568) (not x10387) (not x23892) x14448 (not x3095) (not x13192) x4822 (not x7753) x11096)
+:assumption (or (not x13956) x17983)
+:assumption (or (not x29338) (not x14745))
+:assumption (or (not x10988) x28882)
+:assumption (or x698 (not x5394))
+:assumption (or (not x15268) x28806)
+:assumption (or x18519 x25579)
+:assumption (or x27820 x16707)
+:assumption (or (not x1132) x13472)
+:assumption (or (not x19109) (not x12013))
+:assumption (or x26220 (not x30476))
+:assumption (or (not x5827) x6783 (not x22154) (not x13956))
+:assumption (or x2577 (not x30191))
+:assumption (or x12955 (not x18528))
+:assumption (or x14382 x11427)
+:assumption (or (not x9642) (not x8629))
+:assumption (or (not x16677) (not x599))
+:assumption (or x864 (not x15945))
+:assumption (or (not x19332) (not x28110))
+:assumption (or x18439 (not x1672))
+:assumption (or (not x17049) x21829)
+:assumption (or (not x26230) (not x10987))
+:assumption (or (not x6097) x26695)
+:assumption (or x21255 x24125)
+:assumption (or (not x24454) (not x5471))
+:assumption (or x19022 (not x6468))
+:assumption (or (not x27372) (not x20128) x28973)
+:assumption (or (not x24166) x14496)
+:assumption (or x31666 (not x8004))
+:assumption (or (not x20589) (not x9659))
+:assumption (or x24642 x169)
+:assumption (or (not x27308) (not x5528))
+:assumption (or x8659 x10938)
+:assumption (or (not x4135) (not x3063))
+:assumption (or x8021 (not x11652))
+:assumption (or x2586 x2911)
+:assumption (or (not x23342) (not x9817) (not x1222))
+:assumption (or x3822 x27739)
+:assumption (or (not x31241) (not x19538))
+:assumption (or x29904 (not x9237))
+:assumption (or x8216 x18284)
+:assumption (or (not x4401) (not x27143))
+:assumption (or x20126 (not x23611))
+:assumption (or x20899 x1189)
+:assumption (or (not x9871) (not x29312))
+:assumption (or (not x22227) (not x14238))
+:assumption (or (not x20325) x3809)
+:assumption (or (not x17205) x31368)
+:assumption (or x22531 (not x19991) x2086)
+:assumption (or (not x957) (not x22571))
+:assumption (or (not x2747) x17562)
+:assumption (or x21653 x20022 x1315)
+:assumption (or (not x16324) x19203)
+:assumption (or x7155 (not x27748))
+:assumption (or (not x25614) (not x11248))
+:assumption (or (not x17779) (not x26302) (not x27887))
+:assumption (or x11900 (not x24059))
+:assumption (or (not x29499) x6882)
+:assumption (or x26300 x4274)
+:assumption (or x5145 x18441 (not x20651))
+:assumption (or (not x31170) x28349)
+:assumption (or x15271 x31249)
+:assumption (or (not x20161) (not x15758))
+:assumption (or (not x12966) x30823)
+:assumption (or x20848 x16972)
+:assumption (or (not x30039) x4705)
+:assumption (or x31376 x20280)
+:assumption (or x6160 x24014)
+:assumption (or x20893 x14451)
+:assumption (or x148 x31410)
+:assumption (or x20575 (not x17443))
+:assumption (or (not x9297) x23385)
+:assumption (or (not x147) (not x20172) (not x3317) (not x21082) x24155 (not x529) x8708)
+:assumption (or (not x4014) (not x8824))
+:assumption (or x12793 x21951)
+:assumption (or x25296 (not x22271))
+:assumption (or x23244 (not x2073))
+:assumption (or x13581 (not x10722))
+:assumption (or x15604 (not x2433))
+:assumption (or x27517 x24951)
+:assumption (or (not x16980) x11467)
+:assumption (or x8966 x22649)
+:assumption (or (not x10589) x21026)
+:assumption (or x1699 x2883)
+:assumption (or (not x14701) (not x13573))
+:assumption (or x20710 (not x3721))
+:assumption (or x28912 (not x28553))
+:assumption (or (not x23215) x1790)
+:assumption (or (not x30066) (not x16033))
+:assumption (or x9210 x9558)
+:assumption (or (not x22535) (not x11945))
+:assumption (or (not x9282) x1867)
+:assumption (or x30623 (not x21653))
+:assumption (or x28973 (not x18301))
+:assumption (or x25716 x3627)
+:assumption (or x23728 x18926)
+:assumption (or (not x17876) (not x8949))
+:assumption (or (not x29606) x23056)
+:assumption (or (not x9695) x10064)
+:assumption (or x18250 x18610)
+:assumption (or (not x24993) x1345)
+:assumption (or (not x14037) (not x24533))
+:assumption (or x3633 x30379)
+:assumption (or x19991 x3430)
+:assumption (or (not x8932) (not x5602))
+:assumption (or (not x27458) x17828)
+:assumption (or x28583 x9008)
+:assumption (or x11031 x6901)
+:assumption (or (not x971) (not x26520))
+:assumption (or (not x12343) (not x13674))
+:assumption (or x31902 (not x10874) (not x8843) x28242)
+:assumption (or x18643 (not x132) (not x3586))
+:assumption (or x30666 (not x19512))
+:assumption (or (not x3870) (not x1393) (not x26538))
+:assumption (or x2043 x18545)
+:assumption (or (not x8660) x16884)
+:assumption (or (not x16745) x22839 (not x7871))
+:assumption (or x15727 (not x2602))
+:assumption (or x2103 x9764)
+:assumption (or x8081 x2663)
+:assumption (or (not x28874) (not x4690) (not x1902) x19835 (not x9781))
+:assumption (or x20222 (not x10146))
+:assumption (or (not x27316) x8345)
+:assumption (or x3501 (not x28095))
+:assumption (or x9008 x14497 (not x16114))
+:assumption (or (not x490) (not x10123))
+:assumption (or x12832 (not x14326))
+:assumption (or (not x29537) (not x23145) (not x21298) x13082)
+:assumption (or x9008 x13283 x23113 (not x11022) (not x12081) (not x9012))
+:assumption (or (not x10420) x13271 x827)
+:assumption (or (not x20759) x19667)
+:assumption (or x9008 x23140 (not x19598))
+:assumption (or x29399 x17908)
+:assumption (or x11910 x13576)
+:assumption (or x21727 x6531)
+:assumption (or (not x12099) x5883)
+:assumption (or x8002 x17462)
+:assumption (or (not x10162) x17192)
+:assumption (or (not x6965) x19061)
+:assumption (or (not x20651) x28105)
+:assumption (or (not x14844) (not x16734))
+:assumption (or x25696 (not x1068))
+:assumption (or x24228 x7053)
+:assumption (or x5724 x30138)
+:assumption (or x3542 x8002)
+:assumption (or (not x15165) x24668)
+:assumption (or (not x10049) (not x21028))
+:assumption (or x20027 x26356)
+:assumption (or (not x22096) x12641 x8696 x27719 (not x11417))
+:assumption (or (not x18855) x3969 x5255 x7316 (not x18326) x8602 x1506 (not x18444))
+:assumption (or (not x24471) (not x12575))
+:assumption (or x766 (not x600) x10482)
+:assumption (or (not x5988) (not x10677))
+:assumption (or x17504 (not x8054))
+:assumption (or (not x17075) (not x18565))
+:assumption (or x18069 x27068 x21539)
+:assumption (or (not x13135) (not x12127))
+:assumption (or x7432 (not x6038))
+:assumption (or x22205 (not x14278))
+:assumption (or (not x8323) (not x4261))
+:assumption (or x465 x12736)
+:assumption (or x13908 (not x4897))
+:assumption (or x31005 x6258 (not x17225) x4448)
+:assumption (or (not x21323) (not x2130))
+:assumption (or (not x21420) x14254)
+:assumption (or (not x9132) x17688)
+:assumption (or x31083 x6669)
+:assumption (or x7083 x29152)
+:assumption (or x12732 x8069 x31024)
+:assumption (or (not x3721) (not x27880))
+:assumption (or (not x9713) x26241)
+:assumption (or x18229 x30558 x24722 x16802)
+:assumption (or (not x18413) (not x5025))
+:assumption (or (not x21298) x6175)
+:assumption (or (not x26227) (not x4253))
+:assumption (or (not x19978) x26331)
+:assumption (or x3962 (not x13745))
+:assumption (or x5426 (not x9779))
+:assumption (or (not x25008) (not x26867))
+:assumption (or (not x8700) x6604)
+:assumption (or x11244 x24447)
+:assumption (or x19847 (not x8002))
+:assumption (or x30466 x16477)
+:assumption (or (not x7549) x2762)
+:assumption (or x18421 (not x17187))
+:assumption (or x605 (not x24638))
+:assumption (or (not x27450) x22541 (not x26155))
+:assumption (or (not x9581) (not x14674))
+:assumption (or (not x17095) x12611)
+:assumption (or x10736 x8118)
+:assumption (or x13289 x5640)
+:assumption (or (not x15853) x13650)
+:assumption (or x25659 x21963)
+:assumption (or x10775 x17534 (not x13096) (not x16934) (not x16510) (not x21815) (not x3435))
+:assumption (or (not x31165) x6373)
+:assumption (or (not x15792) x3305)
+:assumption (or (not x16906) (not x17188))
+:assumption (or x30653 (not x18460))
+:assumption (or x1686 x5274 x11792)
+:assumption (or x31335 x18724)
+:assumption (or (not x16305) x8661)
+:assumption (or (not x4415) (not x31527))
+:assumption (or (not x22462) x2542)
+:assumption (or (not x14928) x21501)
+:assumption (or (not x6265) (not x2334))
+:assumption (or x29058 (not x30821))
+:assumption (or x6351 (not x12974))
+:assumption (or (not x3404) x15531)
+:assumption (or (not x25190) x30846)
+:assumption (or x2153 x19786 (not x10874) (not x28242))
+:assumption (or x5403 (not x23737))
+:assumption (or x15761 x126)
+:assumption (or (not x20336) (not x3164))
+:assumption (or (not x23375) x27359)
+:assumption (or (not x9994) (not x19786))
+:assumption (or (not x7394) x23716)
+:assumption (or x22431 x28139)
+:assumption (or x2196 x31398)
+:assumption (or (not x18694) (not x4011))
+:assumption (or (not x26641) (not x8130))
+:assumption (or x2868 x22764)
+:assumption (or (not x29312) (not x4610))
+:assumption (or x18000 x23022 (not x15862) (not x2626) (not x4457))
+:assumption (or (not x9280) x22930 x31767)
+:assumption (or (not x17061) (not x28973))
+:assumption (or (not x20233) x25118)
+:assumption (or x13226 (not x29324))
+:assumption (or x14062 (not x28286))
+:assumption (or x23408 x28667)
+:assumption (or (not x344) (not x12577))
+:assumption (or (not x8423) (not x11891))
+:assumption (or (not x1932) x11877)
+:assumption (or x8012 (not x29429))
+:assumption (or (not x31482) (not x21496))
+:assumption (or x24353 x21950)
+:assumption (or x31798 (not x7359))
+:assumption (or (not x8162) x28227)
+:assumption (or x23592 x15915 x16828 (not x16768))
+:assumption (or x10905 x18630)
+:assumption (or x28334 (not x22339))
+:assumption (or x19552 (not x26378) (not x28376) (not x4911) (not x8234) x30887)
+:assumption (or x26518 x16508)
+:assumption (or x202 x7304 (not x23244))
+:assumption (or x29116 (not x18083))
+:assumption (or (not x27390) x19992 x12176 (not x29312) x25659)
+:assumption (or (not x9933) x28216)
+:assumption (or x28769 (not x6417))
+:assumption (or (not x17372) (not x26449))
+:assumption (or x29959 (not x3600))
+:assumption (or x16519 (not x5122))
+:assumption (or x27915 (not x11674))
+:assumption (or (not x3708) (not x5690))
+:assumption (or x20582 (not x16813))
+:assumption (or x28665 x1541 x1393)
+:assumption (or (not x23055) (not x10660))
+:assumption (or x8819 x7718)
+:assumption (or x14540 (not x10762))
+:assumption (or x11399 x16368)
+:assumption (or x21653 x622)
+:assumption (or (not x25224) x27828)
+:assumption (or (not x31551) x8002)
+:assumption (or x20017 (not x13663))
+:assumption (or x3228 (not x21005))
+:assumption (or x25314 (not x1291))
+:assumption (or x2386 x9045)
+:assumption (or x11758 (not x2003))
+:assumption (or (not x13956) (not x17930) (not x6922))
+:assumption (or (not x5817) x229)
+:assumption (or (not x25998) (not x11825))
+:assumption (or (not x29818) x27537 (not x4239))
+:assumption (or x9346 (not x3623) (not x16745) (not x10770))
+:assumption (or x28242 (not x6337))
+:assumption (or (not x17488) (not x29031))
+:assumption (or x11084 x7713)
+:assumption (or x10770 x19712)
+:assumption (or (not x14024) (not x160))
+:assumption (or x28606 (not x30138) (not x5724))
+:assumption (or x16888 (not x21113))
+:assumption (or x5281 x30922)
+:assumption (or (not x26846) (not x26986))
+:assumption (or x28664 (not x19627))
+:assumption (or (not x8002) (not x3791))
+:assumption (or (not x15631) x30354)
+:assumption (or x14406 (not x7633))
+:assumption (or x1042 (not x16712))
+:assumption (or x19535 x2425)
+:assumption (or (not x30650) (not x10889) (not x14206) (not x25545))
+:assumption (or (not x25972) x1750)
+:assumption (or (not x28635) x30794)
+:assumption (or (not x15980) x6635)
+:assumption (or x12221 x18838)
+:assumption (or x25708 x3197 (not x1393))
+:assumption (or x19183 x26035)
+:assumption (or (not x26354) x11520)
+:assumption (or (not x4403) (not x20579))
+:assumption (or x31176 (not x5787))
+:assumption (or (not x29087) x28322 x31382 (not x22667) (not x3627))
+:assumption (or (not x1781) x113)
+:assumption (or x20119 x15861 (not x9510))
+:assumption (or x16711 (not x5528) x13522 x6255 x25298 (not x23836))
+:assumption (or x26800 x26673)
+:assumption (or (not x16960) (not x16304))
+:assumption (or (not x30595) x8037)
+:assumption (or (not x23336) (not x827))
+:assumption (or (not x12687) x30965)
+:assumption (or (not x29446) (not x9008))
+:assumption (or x17470 (not x13546))
+:assumption (or (not x23881) x31892)
+:assumption (or x24670 x10301)
+:assumption (or (not x8176) x1629)
+:assumption (or (not x28732) x9149)
+:assumption (or (not x23772) x13304)
+:assumption (or (not x28826) x10865)
+:assumption (or (not x8334) x28328 (not x1052) x6835)
+:assumption (or x3518 x827)
+:assumption (or x12293 (not x21298))
+:assumption (or x29012 (not x5528) x12449 (not x16484) x30491 x11810)
+:assumption (or (not x22549) (not x1119))
+:assumption (or (not x8547) x17751)
+:assumption (or (not x28541) (not x13127) x31829 x26835)
+:assumption (or (not x19507) x5574 (not x28164))
+:assumption (or x2914 x24041 x14802)
+:assumption (or (not x21416) (not x23497))
+:assumption (or x21815 x3497 x14568 x29643 (not x31398) x21806)
+:assumption (or (not x23361) x20700)
+:assumption (or x9491 x24406)
+:assumption (or (not x29147) (not x10275))
+:assumption (or x62 x11635 x11134)
+:assumption (or (not x28583) x27543)
+:assumption (or x11067 x25659)
+:assumption (or x27540 (not x4573))
+:assumption (or (not x29312) x11605)
+:assumption (or x15005 (not x15662))
+:assumption (or (not x25985) x10785)
+:assumption (or (not x26342) (not x19455) x8002)
+:assumption (or (not x21463) x24976)
+:assumption (or (not x11105) (not x4992))
+:assumption (or (not x3067) (not x8667))
+:assumption (or (not x21298) x15934 (not x19995))
+:assumption (or x24538 x2566)
+:assumption (or (not x20120) x17811 (not x10410))
+:assumption (or (not x2650) x9008 (not x31855) x2351 (not x5688) x7245)
+:assumption (or (not x13161) (not x3793))
+:assumption (or (not x7757) x19296)
+:assumption (or (not x21424) x18329)
+:assumption (or (not x16185) (not x19321) (not x12783))
+:assumption (or (not x20639) (not x745))
+:assumption (or (not x9008) x30585)
+:assumption (or (not x29446) (not x12449))
+:assumption (or x14575 (not x15273))
+:assumption (or (not x23821) x19228 (not x12387) (not x21298))
+:assumption (or x11189 x3078)
+:assumption (or (not x6830) x17120)
+:assumption (or x23244 x20325 x31665)
+:assumption (or (not x15040) (not x19539))
+:assumption (or (not x19412) x8586)
+:assumption (or x26723 (not x24394))
+:assumption (or x12199 x25374 x27892)
+:assumption (or (not x17534) x17408)
+:assumption (or x20316 (not x19458))
+:assumption (or x762 x23330 (not x9277) (not x3726) x20352)
+:assumption (or (not x6095) (not x10317))
+:assumption (or x22829 x13515 (not x13956))
+:assumption (or (not x10311) (not x8002))
+:assumption (or (not x27269) x22595)
+:assumption (or (not x7106) x26582)
+:assumption (or (not x20453) x28364)
+:assumption (or x18782 x21831)
+:assumption (or x8002 (not x13736))
+:assumption (or (not x8932) (not x19624))
+:assumption (or x19992 x14495 x25659 (not x17016) (not x288))
+:assumption (or (not x7734) x29771 x15199 x9356 (not x9269) (not x7034) (not x6274))
+:assumption (or (not x470) (not x29297))
+:assumption (or x5776 (not x18941))
+:assumption (or x5696 (not x22745))
+:assumption (or (not x14487) (not x21298) x1925 x19691)
+:assumption (or x30224 (not x23787))
+:assumption (or x5380 (not x10461))
+:assumption (or x17098 x18643)
+:assumption (or x21672 x8142)
+:assumption (or (not x7260) x30619)
+:assumption (or (not x28554) (not x29997))
+:assumption (or x16510 (not x29312) x18126)
+:assumption (or x16025 (not x8833) (not x15795))
+:assumption (or x8649 x7077)
+:assumption (or (not x13399) x2020)
+:assumption (or x10589 (not x27729) (not x21026))
+:assumption (or x21298 (not x23152))
+:assumption (or x28587 (not x29053))
+:assumption (or (not x7835) x8129 (not x3366))
+:assumption (or (not x9627) x31785)
+:assumption (or (not x14985) (not x19738))
+:assumption (or (not x10501) x18859 x987 (not x121) (not x10267) x26413)
+:assumption (or x30021 x9143)
+:assumption (or (not x19624) (not x21800))
+:assumption (or (not x25082) (not x10874) x23386 x15336 (not x28242))
+:assumption (or (not x30138) (not x27426))
+:assumption (or (not x1765) (not x16555) (not x1972) (not x30574) x22482 (not x25334) x1009)
+:assumption (or x3001 (not x5231))
+:assumption (or (not x8624) (not x2715))
+:assumption (or x10485 x20357)
+:assumption (or x28649 x25280)
+:assumption (or x1812 (not x28973))
+:assumption (or (not x9008) (not x18538))
+:assumption (or x2843 (not x22266))
+:assumption (or (not x18621) (not x14454))
+:assumption (or x16116 (not x22244))
+:assumption (or (not x27412) x15379 (not x519) (not x18430))
+:assumption (or x3001 (not x22317))
+:assumption (or (not x16510) (not x19841))
+:assumption (or x6243 x7989)
+:assumption (or x26549 (not x3325))
+:assumption (or x3546 (not x7622) (not x12637) (not x2416))
+:assumption (or x18187 (not x20142) x20276)
+:assumption (or x23262 (not x31903))
+:assumption (or (not x29353) (not x9892))
+:assumption (or (not x25801) (not x11550))
+:assumption (or (not x12649) x2416)
+:assumption (or x16304 x14346 (not x15795))
+:assumption (or x29969 x15075)
+:assumption (or x17652 (not x6197))
+:assumption (or (not x11811) x8687)
+:assumption (or x16395 x17505)
+:assumption (or (not x13956) x9586 x3704)
+:assumption (or x3931 (not x8229) (not x21511) (not x7158))
+:assumption (or x12066 (not x29631))
+:assumption (or x15380 (not x28789))
+:assumption (or x12310 (not x21615))
+:assumption (or (not x22107) x4231 x19668 (not x17178) x27003 x783 (not x299) (not x23860) (not x1631) (not x18105))
+:assumption (or x4351 x26054)
+:assumption (or (not x4025) x16980 (not x11467))
+:assumption (or x918 x30167 x27554 (not x14406) (not x16623) (not x25290))
+:assumption (or (not x3356) (not x25654))
+:assumption (or x12301 (not x7537) (not x23399) x1649)
+:assumption (or x7220 x23025 x15939 x5490 x18769 x30754 x11790 x25365 (not x19360) x28867)
+:assumption (or (not x8488) x12630)
+:assumption (or x13546 x7784)
+:assumption (or x23456 (not x23244))
+:assumption (or x27367 (not x18262))
+:assumption (or (not x29812) (not x1431))
+:assumption (or x2132 x9792 (not x26912) (not x21740) (not x26931) x31334)
+:assumption (or (not x1103) (not x27224))
+:assumption (or x3938 x30207)
+:assumption (or x8210 x29036)
+:assumption (or x26686 (not x4468))
+:assumption (or x20195 (not x13956))
+:assumption (or (not x60) (not x21766))
+:assumption (or (not x23244) x2624)
+:assumption (or (not x26708) (not x25542))
+:assumption (or x15746 x15680)
+:assumption (or x24706 (not x1969) x12242)
+:assumption (or (not x4721) (not x19641))
+:assumption (or (not x22475) x25355)
+:assumption (or x577 x29239)
+:assumption (or x30169 x22043)
+:assumption (or x17922 (not x23137))
+:assumption (or (not x21582) (not x29572))
+:assumption (or x14699 x23358)
+:assumption (or (not x11857) x448 x10674 (not x17557) (not x2027) x12247 x20340 x15912 x9087)
+:assumption (or (not x9475) x27998)
+:assumption (or (not x5120) (not x29143) x16802)
+:assumption (or x31164 x25659)
+:assumption (or (not x2334) (not x26580))
+:assumption (or (not x29621) (not x22604) x9175)
+:assumption (or x17586 (not x20564))
+:assumption (or x15408 (not x28783))
+:assumption (or (not x5637) x14863)
+:assumption (or x30208 (not x6261) x13228 (not x30205))
+:assumption (or (not x18275) (not x4855))
+:assumption (or (not x20634) x13622)
+:assumption (or x10551 x26471 x10064)
+:assumption (or x15066 x21189)
+:assumption (or (not x23855) (not x662))
+:assumption (or (not x13045) x6669)
+:assumption (or x7672 (not x8754) (not x7548))
+:assumption (or x4837 x15284)
+:assumption (or (not x26512) (not x23075))
+:assumption (or x29293 (not x3165))
+:assumption (or x29733 (not x7121))
+:assumption (or x6 (not x24584))
+:assumption (or (not x19414) (not x1708))
+:assumption (or (not x9599) x10909)
+:assumption (or x18650 x2900)
+:assumption (or x6219 x15560)
+:assumption (or x3567 x5093 x7775 (not x14367) x8886 x6366)
+:assumption (or x452 x15221)
+:assumption (or (not x7595) x9597)
+:assumption (or (not x6969) (not x21640))
+:assumption (or (not x23015) x8020)
+:assumption (or (not x1656) x25763)
+:assumption (or (not x5300) x20301)
+:assumption (or x29737 x26186)
+:assumption (or x19028 x20202)
+:assumption (or (not x4956) (not x10577))
+:assumption (or (not x1191) (not x27443))
+:assumption (or x13956 (not x844))
+:assumption (or x6911 (not x19775) x25845 (not x19183))
+:assumption (or x22963 (not x22988) (not x8861))
+:assumption (or x11143 x3455)
+:assumption (or (not x15410) x9149)
+:assumption (or x22529 x8942)
+:assumption (or x10385 x9724)
+:assumption (or (not x16090) x22745)
+:assumption (or (not x16940) (not x24261) x30751)
+:assumption (or x16510 x7203)
+:assumption (or x511 x25606)
+:assumption (or x3420 (not x3245))
+:assumption (or x24854 x11413)
+:assumption (or (not x19663) (not x12325))
+:assumption (or x17009 x6896)
+:assumption (or (not x15330) x14016)
+:assumption (or (not x29442) (not x4982) (not x15064))
+:assumption (or x1554 x9261)
+:assumption (or x2334 x8787)
+:assumption (or x7555 (not x288))
+:assumption (or (not x29135) x21339 (not x7012) (not x543))
+:assumption (or (not x12660) x27802)
+:assumption (or x30040 (not x12357))
+:assumption (or x12509 (not x23471))
+:assumption (or x28973 x31890 x31736 x288)
+:assumption (or (not x9444) (not x10583) x31150 x19126 (not x29414))
+:assumption (or x19322 x26688)
+:assumption (or x18859 (not x29306) x14520)
+:assumption (or (not x25355) (not x8904))
+:assumption (or x5528 x20612)
+:assumption (or x25852 x18555)
+:assumption (or (not x28511) x28080)
+:assumption (or (not x2106) (not x26849))
+:assumption (or (not x23432) x31885)
+:assumption (or (not x25862) x12293)
+:assumption (or (not x16276) (not x2051))
+:assumption (or (not x461) (not x2883) (not x5232) (not x19224) (not x13993))
+:assumption (or (not x15989) (not x17292))
+:assumption (or x6098 x20584)
+:assumption (or (not x13393) (not x26878))
+:assumption (or (not x28328) (not x12197))
+:assumption (or x14769 x10782)
+:assumption (or (not x16257) (not x21253))
+:assumption (or (not x15649) x1408)
+:assumption (or (not x30914) x10578 (not x13956))
+:assumption (or x27694 x5400)
+:assumption (or x16741 (not x10480))
+:assumption (or (not x8477) (not x9008) x5219)
+:assumption (or x11396 x8948)
+:assumption (or (not x2414) (not x17202))
+:assumption (or (not x366) (not x27881))
+:assumption (or (not x29035) x12726)
+:assumption (or (not x21298) (not x8736))
+:assumption (or x14206 x24146 (not x4849))
+:assumption (or x6889 x24682)
+:assumption (or x17127 (not x5405))
+:assumption (or (not x21041) x12176)
+:assumption (or x19347 x16932)
+:assumption (or (not x25981) x13956)
+:assumption (or x22477 x6967 x27282)
+:assumption (or x14041 x29123)
+:assumption (or (not x12878) x13391 (not x27736))
+:assumption (or x15917 (not x9593))
+:assumption (or x8026 (not x24096))
+:assumption (or x24280 x21588)
+:assumption (or x6274 x7260 (not x1570) (not x15945) (not x6823))
+:assumption (or (not x18643) x5672)
+:assumption (or x12669 (not x24957) (not x23477))
+:assumption (or (not x25448) x19946)
+:assumption (or x827 x31655 x23871)
+:assumption (or x13956 x24831 x23244 (not x16849) x8002 x22829)
+:assumption (or x10455 (not x28435))
+:assumption (or x9008 x15104)
+:assumption (or x14707 (not x19935))
+:assumption (or x21122 (not x754))
+:assumption (or (not x30401) (not x16224))
+:assumption (or (not x24460) x10244)
+:assumption (or x6238 (not x191))
+:assumption (or (not x16466) (not x15846))
+:assumption (or x24071 (not x30224))
+:assumption (or (not x10214) x12378)
+:assumption (or (not x2967) (not x7789))
+:assumption (or (not x26568) (not x29597))
+:assumption (or x9979 x2258)
+:assumption (or (not x25052) (not x25659) (not x1140))
+:assumption (or (not x31503) x29347 x18414 x21374 x4102)
+:assumption (or (not x5696) x29675)
+:assumption (or x12271 (not x21566))
+:assumption (or (not x27790) x11032)
+:assumption (or (not x7422) (not x2228) x23601 x23884 x23315 (not x6831) (not x6169) (not x1120))
+:assumption (or (not x30897) (not x25659))
+:assumption (or x25528 x7859)
+:assumption (or x16925 x19927)
+:assumption (or (not x17068) x20222)
+:assumption (or x4647 x27347)
+:assumption (or x26209 (not x964))
+:assumption (or x29269 (not x29139) (not x29763) (not x5528) (not x9008))
+:assumption (or x330 x24367 x18594 (not x21377) (not x19306) x5535)
+:assumption (or (not x1393) (not x28728))
+:assumption (or (not x3369) (not x18218))
+:assumption (or (not x9011) (not x23244))
+:assumption (or x16724 (not x3294))
+:assumption (or x30179 (not x3549))
+:assumption (or (not x11693) (not x13898))
+:assumption (or x4476 x24050)
+:assumption (or x6287 (not x14668))
+:assumption (or (not x2961) x3740)
+:assumption (or x2592 x20011)
+:assumption (or (not x11573) x25139)
+:assumption (or x11064 (not x31883))
+:assumption (or x14695 x514 (not x13956) (not x30210))
+:assumption (or (not x4088) x16781)
+:assumption (or x24698 (not x21449))
+:assumption (or x29840 x6173)
+:assumption (or (not x15040) (not x5198))
+:assumption (or (not x25555) (not x6243))
+:assumption (or (not x18239) (not x29752))
+:assumption (or (not x6825) x2408)
+:assumption (or (not x22106) (not x8322))
+:assumption (or x843 x14162)
+:assumption (or x25968 (not x16303))
+:assumption (or (not x564) (not x18444))
+:assumption (or (not x22942) (not x23997))
+:assumption (or x2760 x186)
+:assumption (or (not x22676) x4800)
+:assumption (or (not x14717) x8460)
+:assumption (or x31831 (not x28115))
+:assumption (or (not x19410) x18989)
+:assumption (or (not x36) (not x11909))
+:assumption (or (not x29114) (not x5147) x14839)
+:assumption (or x30280 x13011)
+:assumption (or (not x23151) x7984)
+:assumption (or (not x29827) x19315)
+:assumption (or x26811 (not x21835))
+:assumption (or (not x501) (not x6149))
+:assumption (or (not x23244) x21257)
+:assumption (or (not x18708) (not x16626))
+:assumption (or (not x29649) (not x23244) (not x21742))
+:assumption (or (not x6913) x3712)
+:assumption (or (not x28287) x25853)
+:assumption (or x20105 (not x23422))
+:assumption (or x2026 (not x13294))
+:assumption (or x25203 x24688)
+:assumption (or (not x30408) (not x2722))
+:assumption (or x15011 (not x8602))
+:assumption (or (not x16720) x24722)
+:assumption (or (not x6239) (not x1101))
+:assumption (or x8248 (not x27090) (not x14963))
+:assumption (or x8066 (not x29442) (not x17671) x3782)
+:assumption (or (not x2941) x4993)
+:assumption (or x6544 (not x6969))
+:assumption (or x21060 x5109)
+:assumption (or (not x29663) x22945)
+:assumption (or (not x11062) x22593)
+:assumption (or x253 (not x22013))
+:assumption (or (not x8010) x1338)
+:assumption (or x29556 (not x13828))
+:assumption (or x10623 (not x26856))
+:assumption (or (not x25790) x1551)
+:assumption (or (not x6511) x23399)
+:assumption (or x30858 x6305)
+:assumption (or x20690 (not x19376))
+:assumption (or x30399 x14756)
+:assumption (or (not x8733) x22126)
+:assumption (or x6093 x30751)
+:assumption (or (not x9804) (not x14287))
+:assumption (or (not x25466) x218)
+:assumption (or x15312 (not x8311) x31622 x1633 x23974 (not x29914) (not x27922) x5964 x9917)
+:assumption (or x2984 x21904)
+:assumption (or (not x9523) x10168)
+:assumption (or x12643 x17225)
+:assumption (or (not x13038) x18341)
+:assumption (or x5394 x15764 (not x6480))
+:assumption (or (not x11933) x20566 (not x8365))
+:assumption (or (not x27998) (not x25829))
+:assumption (or (not x5222) (not x5394) (not x7411))
+:assumption (or x17338 (not x6334) x8050 x31767)
+:assumption (or x8435 x10069)
+:assumption (or (not x5028) x8434)
+:assumption (or x5528 (not x7204))
+:assumption (or (not x25806) x7543)
+:assumption (or x22273 (not x25608))
+:assumption (or (not x10007) (not x22040))
+:assumption (or x15957 (not x989))
+:assumption (or x1328 (not x12130) (not x7049) x31909 x17942 x19126 (not x21584) (not x4237))
+:assumption (or (not x24892) (not x16809))
+:assumption (or x900 x1557)
+:assumption (or x30579 x10431)
+:assumption (or x14839 x20368 (not x9283) x396)
+:assumption (or x935 (not x14550))
+:assumption (or (not x596) (not x31083))
+:assumption (or x13298 x12826)
+:assumption (or x19981 x762)
+:assumption (or (not x16451) x162)
+:assumption (or (not x827) x29454 (not x14269))
+:assumption (or x16329 x1703 x29131)
+:assumption (or (not x24223) x19428)
+:assumption (or x28659 x8505 x26813 x28023)
+:assumption (or (not x18752) (not x2682))
+:assumption (or x15917 x20931)
+:assumption (or x11217 x27351)
+:assumption (or x14292 x29081)
+:assumption (or (not x30138) x25130 (not x26897) x15795 x8623 x14591 (not x30219))
+:assumption (or x164 x20022 (not x16025))
+:assumption (or x10168 (not x17336))
+:assumption (or (not x14395) (not x5164))
+:assumption (or x11587 (not x12889))
+:assumption (or (not x7964) (not x2982))
+:assumption (or (not x29994) x20972)
+:assumption (or x24812 x2087)
+:assumption (or x25877 (not x723))
+:assumption (or x8770 x19512 x8719 (not x17675) (not x25217) x12504 x21298)
+:assumption (or (not x485) (not x2481))
+:assumption (or (not x4533) (not x740))
+:assumption (or (not x27685) (not x30249))
+:assumption (or (not x23881) x5460)
+:assumption (or x744 (not x24803))
+:assumption (or x22120 x7537)
+:assumption (or x15966 x14451)
+:assumption (or x8336 (not x20624))
+:assumption (or (not x22664) (not x18466))
+:assumption (or (not x17563) x4714)
+:assumption (or (not x10526) (not x4326))
+:assumption (or x31927 x5543)
+:assumption (or (not x31858) x13951)
+:assumption (or x9806 x3173)
+:assumption (or x29925 x28181 x1626 (not x15921))
+:assumption (or x31338 (not x31911))
+:assumption (or (not x19872) (not x30224))
+:assumption (or x20794 x14194)
+:assumption (or x19045 (not x827))
+:assumption (or x16743 x26773 x15594 x11753)
+:assumption (or x351 (not x23872))
+:assumption (or (not x25656) x22772)
+:assumption (or (not x9211) x29365 (not x4240))
+:assumption (or x31449 (not x8655) x25919)
+:assumption (or x23513 (not x26495))
+:assumption (or x22888 (not x15258) x27505 x14578 (not x9709) (not x4274) (not x6161))
+:assumption (or x13576 (not x1996))
+:assumption (or x29422 x6977)
+:assumption (or (not x25956) x8002)
+:assumption (or x30281 x16289)
+:assumption (or (not x27012) (not x4354))
+:assumption (or x24052 x7787)
+:assumption (or x23709 x20302)
+:assumption (or (not x24662) (not x31916))
+:assumption (or (not x22801) (not x657))
+:assumption (or (not x5958) (not x20729))
+:assumption (or (not x28043) x27324)
+:assumption (or (not x25606) x11747)
+:assumption (or (not x21074) (not x14441))
+:assumption (or x27388 x31757)
+:assumption (or x28747 x17582)
+:assumption (or (not x2969) (not x16304))
+:assumption (or (not x6547) (not x26740))
+:assumption (or x26402 x23441)
+:assumption (or (not x23244) (not x18657))
+:assumption (or x6093 (not x23686))
+:assumption (or (not x22445) x22729)
+:assumption (or x9128 x23279 (not x19721) (not x2578) x29958)
+:assumption (or (not x15931) (not x25668))
+:assumption (or (not x4752) (not x9008))
+:assumption (or x21806 (not x18694) x4195 (not x31398) x29643 x3497)
+:assumption (or x9249 (not x11464) (not x23386) (not x2547) x24628)
+:assumption (or x9008 (not x5219))
+:assumption (or (not x17326) (not x2227))
+:assumption (or x29982 (not x20385))
+:assumption (or (not x23279) x6828)
+:assumption (or (not x31829) (not x31818))
+:assumption (or x15688 x27364)
+:assumption (or x29507 x26891)
+:assumption (or x11249 (not x29525))
+:assumption (or x14350 (not x4741))
+:assumption (or (not x4786) x8524)
+:assumption (or (not x28768) x13586 x24031 x21647)
+:assumption (or (not x20228) x21298)
+:assumption (or (not x23244) (not x23015))
+:assumption (or x18859 (not x18241))
+:assumption (or (not x31819) x25367)
+:assumption (or (not x31143) (not x9144))
+:assumption (or (not x27087) (not x27111))
+:assumption (or (not x6976) (not x20895))
+:assumption (or x7774 x4983)
+:assumption (or x28060 (not x14817))
+:assumption (or (not x16211) (not x17247))
+:assumption (or x30325 x1262)
+:assumption (or (not x27399) x3665)
+:assumption (or x24041 x14131)
+:assumption (or (not x30784) (not x14997))
+:assumption (or x19862 x21918 (not x1566) x10181)
+:assumption (or x6968 x3628 (not x18563) (not x19183) (not x30339) (not x3748) x7765)
+:assumption (or (not x10674) (not x15912))
+:assumption (or x5370 x25051)
+:assumption (or (not x6158) (not x4032))
+:assumption (or x10831 (not x24320) (not x9655) x25140)
+:assumption (or x3822 x14496)
+:assumption (or x27158 x20020)
+:assumption (or x16742 (not x29566))
+:assumption (or (not x528) (not x12682))
+:assumption (or (not x18380) x9319)
+:assumption (or x2028 (not x5081))
+:assumption (or x17071 (not x13956))
+:assumption (or x17713 (not x6427))
+:assumption (or x23399 (not x4518))
+:assumption (or x28355 x8187 x16459 x29417 (not x22119) x12453 x26970)
+:assumption (or x24089 (not x24587))
+:assumption (or x4662 (not x24978))
+:assumption (or (not x7160) (not x26869))
+:assumption (or x12415 (not x28859))
+:assumption (or (not x26392) (not x1924))
+:assumption (or (not x1582) x15001)
+:assumption (or (not x23847) (not x2046))
+:assumption (or (not x22901) (not x20764))
+:assumption (or (not x5124) (not x5149))
+:assumption (or (not x6498) x28885 x22852 (not x28872))
+:assumption (or (not x21212) (not x15486) x24287 x14526 x26773)
+:assumption (or x18693 (not x1179))
+:assumption (or x3585 x13203)
+:assumption (or (not x14551) x23578)
+:assumption (or x188 (not x19295))
+:assumption (or (not x19501) (not x3515))
+:assumption (or x594 x3409)
+:assumption (or (not x11429) (not x2088))
+:assumption (or (not x15777) x5886)
+:assumption (or (not x6096) (not x17971))
+:assumption (or (not x9104) (not x20537))
+:assumption (or (not x31829) x3851)
+:assumption (or x13874 (not x6395))
+:assumption (or (not x1546) (not x23244) (not x8091) x1016 x12325 (not x2093))
+:assumption (or x25093 (not x8002))
+:assumption (or x10158 (not x499))
+:assumption (or x4784 x20820)
+:assumption (or x17256 (not x31101))
+:assumption (or x8326 (not x1687))
+:assumption (or (not x15548) (not x13394))
+:assumption (or (not x8121) (not x13549) (not x2912) x1834)
+:assumption (or x15366 (not x16347))
+:assumption (or x27716 (not x19105))
+:assumption (or x9218 (not x12530))
+:assumption (or (not x3669) (not x6632))
+:assumption (or (not x8805) x18393 x16244 x23466 (not x15515))
+:assumption (or x28890 x19861)
+:assumption (or x7060 (not x14455) (not x6402))
+:assumption (or (not x31770) x7047)
+:assumption (or x28562 (not x9831))
+:assumption (or (not x26506) (not x31853))
+:assumption (or (not x14144) x2823)
+:assumption (or (not x9023) x7526)
+:assumption (or x31600 (not x6059))
+:assumption (or x20833 (not x27938))
+:assumption (or (not x1982) (not x12083))
+:assumption (or (not x30855) x19019)
+:assumption (or x17889 (not x26272))
+:assumption (or (not x243) (not x4486) (not x25962) x28853 (not x15053))
+:assumption (or (not x22531) (not x2863) (not x18543))
+:assumption (or (not x27439) x24728)
+:assumption (or (not x22852) x24332)
+:assumption (or (not x12552) (not x14124) x25383 (not x31222) (not x10739) x11494)
+:assumption (or x22974 (not x16304))
+:assumption (or x20116 x30426)
+:assumption (or (not x29224) x5009)
+:assumption (or x21888 x21859)
+:assumption (or x22365 x8002)
+:assumption (or (not x19208) (not x10233) (not x10776) (not x28801))
+:assumption (or (not x13956) x18881)
+:assumption (or x22628 (not x9666))
+:assumption (or x2857 (not x8002))
+:assumption (or (not x18606) x29747)
+:assumption (or x24758 (not x8375) (not x18567) (not x15222))
+:assumption (or x17471 (not x9374))
+:assumption (or x4340 (not x15866))
+:assumption (or (not x30571) (not x14839))
+:assumption (or (not x8818) (not x3096))
+:assumption (or x17389 x9621)
+:assumption (or x5296 (not x14315))
+:assumption (or (not x15781) (not x9294) x14435)
+:assumption (or x12617 x1267)
+:assumption (or (not x30039) (not x29913))
+:assumption (or (not x16314) (not x19992) (not x8757))
+:assumption (or x30210 (not x14695))
+:assumption (or x12482 (not x22648))
+:assumption (or x7360 x13956)
+:assumption (or x29799 x24887)
+:assumption (or x12722 (not x29929))
+:assumption (or (not x29263) x23793)
+:assumption (or x25221 x14120 x589)
+:assumption (or (not x1469) (not x28008))
+:assumption (or x6948 x17930)
+:assumption (or x29663 (not x139))
+:assumption (or (not x11021) (not x5015))
+:assumption (or (not x20574) (not x9918))
+:assumption (or x9398 (not x14606) x31681)
+:assumption (or x3001 (not x7833))
+:assumption (or x6533 (not x29312) x24756 x24791)
+:assumption (or (not x29736) (not x14532))
+:assumption (or (not x21298) x6517)
+:assumption (or (not x2880) x7624)
+:assumption (or (not x18069) x10926)
+:assumption (or x16907 x11246)
+:assumption (or x24165 (not x18213))
+:assumption (or x23462 (not x20228))
+:assumption (or x31213 (not x29575))
+:assumption (or (not x7793) (not x23666))
+:assumption (or x15313 x18192 x23669 x2188)
+:assumption (or x24694 x19425 (not x14433) x4148 (not x30007))
+:assumption (or x15783 x2375)
+:assumption (or (not x17133) (not x17617) x28541 x26985 (not x5339))
+:assumption (or x27256 (not x9992) (not x19528) x7824 x26669)
+:assumption (or (not x6035) (not x18228))
+:assumption (or (not x4026) x18434)
+:assumption (or x13640 x5046)
+:assumption (or x7639 x17016 (not x17544) (not x8002))
+:assumption (or (not x8610) (not x16362))
+:assumption (or x9577 x7964)
+:assumption (or (not x20183) (not x3554))
+:assumption (or (not x14878) (not x30208) (not x20233) x10261)
+:assumption (or x31050 (not x28603))
+:assumption (or x1644 x25659 (not x19924))
+:assumption (or x31629 x22390)
+:assumption (or x13190 x19186)
+:assumption (or x16484 (not x29012))
+:assumption (or x7326 x4709)
+:assumption (or (not x21900) x22401 (not x13407))
+:assumption (or x29516 (not x16910) x8586 x30992)
+:assumption (or x2354 x30330)
+:assumption (or (not x23616) (not x6057))
+:assumption (or x20413 (not x23244))
+:assumption (or (not x25659) x24807)
+:assumption (or x9930 (not x10765))
+:assumption (or x3185 x4153 x9894)
+:assumption (or x17966 x15214)
+:assumption (or x21181 (not x10055))
+:assumption (or x10193 x935)
+:assumption (or x10080 x31229)
+:assumption (or x19106 x28046)
+:assumption (or x29510 (not x9926))
+:assumption (or x14663 x12882)
+:assumption (or (not x28132) x21883)
+:assumption (or x21943 x7049)
+:assumption (or (not x4565) x9008 (not x20013))
+:assumption (or (not x17816) x5249 (not x13956))
+:assumption (or (not x7721) (not x142) x29069 x15773 x30010 x30198 (not x5277) (not x12936))
+:assumption (or x21238 (not x159))
+:assumption (or x1801 x16117)
+:assumption (or (not x8670) x2133 (not x7835))
+:assumption (or x22234 (not x21133) x1308 x14722 (not x1798) (not x28768) (not x30217))
+:assumption (or (not x18323) x11941)
+:assumption (or x28480 x8650 x5648 x13713 (not x7234) (not x3181) (not x17368))
+:assumption (or (not x1441) (not x22066))
+:assumption (or x4663 (not x20473))
+:assumption (or (not x8680) x28811)
+:assumption (or x6381 x5594)
+:assumption (or x1986 (not x21602))
+:assumption (or x15653 x19609)
+:assumption (or (not x21525) x12548 x27911 x31239)
+:assumption (or (not x2943) x26789 (not x11932) (not x21163))
+:assumption (or (not x21778) x11095)
+:assumption (or x9531 x15074 (not x4710))
+:assumption (or x18072 (not x22778) x11171 x31075 (not x5697))
+:assumption (or x21580 (not x6537) (not x22774))
+:assumption (or x15328 x15032 (not x16289) x24058 x10790 x13901)
+:assumption (or (not x8090) x16919 (not x1393))
+:assumption (or x23492 x1421)
+:assumption (or x3840 (not x25899))
+:assumption (or (not x28858) (not x480) (not x4581) (not x29750))
+:assumption (or x10993 (not x3924))
+:assumption (or x15507 (not x9427))
+:assumption (or x30300 x16246 x12474)
+:assumption (or (not x17775) x27589)
+:assumption (or x4559 x2750)
+:assumption (or x30751 (not x4083))
+:assumption (or x6920 x7996)
+:assumption (or (not x15) (not x655) x7118 (not x31138) x10679 x20735 (not x18773))
+:assumption (or (not x16611) (not x26440))
+:assumption (or x26844 x5474)
+:assumption (or (not x5652) x22982)
+:assumption (or x30963 x11562)
+:assumption (or (not x2334) x31895)
+:assumption (or (not x21757) x4386)
+:assumption (or x17141 (not x4506))
+:assumption (or x2508 (not x8054))
+:assumption (or (not x27568) (not x1635) x22548)
+:assumption (or x13622 x24337)
+:assumption (or (not x11680) (not x7835))
+:assumption (or (not x21653) x6404 x20022)
+:assumption (or (not x6379) x26013)
+:assumption (or (not x30113) x12276)
+:assumption (or x17772 (not x30563))
+:assumption (or (not x30520) (not x3962))
+:assumption (or x12367 (not x7748))
+:assumption (or (not x22851) (not x19014) x14455)
+:assumption (or x12910 x14697)
+:assumption (or x30445 (not x7378))
+:assumption (or (not x2387) x25313)
+:assumption (or x27107 (not x10405))
+:assumption (or (not x2933) (not x19992))
+:assumption (or (not x12437) x14604)
+:assumption (or x5100 (not x9576))
+:assumption (or (not x14522) x18276)
+:assumption (or (not x15312) x8311)
+:assumption (or (not x25569) x1763)
+:assumption (or x25029 (not x5898))
+:assumption (or x27854 x3895)
+:assumption (or x480 (not x1333))
+:assumption (or x4185 x25873)
+:assumption (or x22267 (not x28395) (not x17162) x10918 (not x933))
+:assumption (or (not x10510) (not x6928))
+:assumption (or (not x29691) x23567)
+:assumption (or (not x25387) x15169)
+:assumption (or x28849 x19568)
+:assumption (or (not x29306) x22931)
+:assumption (or (not x16462) (not x13036))
+:assumption (or x21950 x12382)
+:assumption (or (not x23271) x5490)
+:assumption (or x19428 (not x16032))
+:assumption (or x21115 x22364)
+:assumption (or (not x24438) x24074)
+:assumption (or (not x9890) (not x23057) (not x29312))
+:assumption (or x13317 (not x8605))
+:assumption (or x15763 x13431)
+:assumption (or x20852 (not x20793))
+:assumption (or x28750 (not x10161))
+:assumption (or x5143 (not x28686))
+:assumption (or (not x4250) (not x5394) x20219)
+:assumption (or x15987 x1842 x28175 (not x30890))
+:assumption (or x30456 x29312 x9871)
+:assumption (or x15909 (not x2644))
+:assumption (or (not x27636) (not x13860))
+:assumption (or x5264 (not x30271))
+:assumption (or x23509 (not x19185))
+:assumption (or (not x1057) (not x24175) x19643 x15612)
+:assumption (or x521 x3368 (not x29101) (not x18620) x17903)
+:assumption (or (not x28824) (not x964))
+:assumption (or x23501 x30107)
+:assumption (or (not x13887) (not x23174))
+:assumption (or x2513 (not x5394))
+:assumption (or x24319 x19424)
+:assumption (or (not x23392) x5423)
+:assumption (or (not x7200) x22751)
+:assumption (or (not x24756) (not x2480))
+:assumption (or (not x14539) (not x24756))
+:assumption (or x25731 x18333 (not x25508) x8120)
+:assumption (or x2714 (not x25329))
+:assumption (or (not x17534) x23327 (not x25366) x29255)
+:assumption (or (not x30113) (not x27101))
+:assumption (or x21839 x26000)
+:assumption (or x18482 (not x30585))
+:assumption (or (not x14781) x2634 (not x6374))
+:assumption (or (not x31477) (not x7537))
+:assumption (or (not x13748) x25416)
+:assumption (or x20323 (not x24826))
+:assumption (or x28602 (not x23244))
+:assumption (or (not x19621) x2177)
+:assumption (or (not x4988) x23454)
+:assumption (or x9867 (not x29596))
+:assumption (or x489 (not x22528))
+:assumption (or x15020 (not x6594) x29707)
+:assumption (or x11050 (not x28821) x3146)
+:assumption (or x10430 x3025 (not x16355) (not x19285) (not x8601) (not x1409))
+:assumption (or x13970 (not x16374) x1036 (not x23647))
+:assumption (or x3245 (not x6484))
+:assumption (or x15376 x30201)
+:assumption (or x22456 x604)
+:assumption (or (not x5528) (not x9008) x27941 x8663 (not x30432))
+:assumption (or (not x2577) (not x25659) x30191)
+:assumption (or x14306 (not x16372))
+:assumption (or (not x12444) x20816)
+:assumption (or (not x11020) (not x973))
+:assumption (or x16510 x9648)
+:assumption (or (not x9394) x17075 x12893 (not x26835) x17767 (not x22215) x6877)
+:assumption (or (not x20574) x27725)
+:assumption (or (not x29343) x21371)
+:assumption (or x27683 x19790)
+:assumption (or (not x4155) x14999)
+:assumption (or x29400 x19042)
+:assumption (or x14285 x18891 (not x12143) x15573)
+:assumption (or (not x8666) x22950)
+:assumption (or (not x12179) (not x13707))
+:assumption (or (not x21432) (not x113) (not x10530) (not x16103))
+:assumption (or x19101 x11051)
+:assumption (or x12773 (not x6028))
+:assumption (or x1944 x27910)
+:assumption (or x25028 (not x23840))
+:assumption (or x20191 (not x29470))
+:assumption (or (not x795) x10368)
+:assumption (or x4945 (not x1922))
+:assumption (or (not x1785) (not x26313))
+:assumption (or (not x13722) (not x19194))
+:assumption (or x22205 (not x22033))
+:assumption (or (not x1956) x30855)
+:assumption (or x5974 x4864 x6969)
+:assumption (or (not x23293) x15310)
+:assumption (or (not x6522) x30316)
+:assumption (or x9183 (not x20135))
+:assumption (or x25454 (not x3949))
+:assumption (or x28077 x549)
+:assumption (or x6750 (not x22614))
+:assumption (or x22526 x8256)
+:assumption (or x20855 x20281)
+:assumption (or (not x18825) x17274 (not x947) (not x12896) (not x9002) x31335 x30212 x8959)
+:assumption (or x5640 x6459)
+:assumption (or (not x16246) (not x12474))
+:assumption (or x8400 (not x14032) (not x17788) (not x7827) (not x25657) (not x5528))
+:assumption (or (not x23704) (not x6307))
+:assumption (or x16819 x1608)
+:assumption (or (not x12919) (not x16025))
+:assumption (or x5824 (not x30734))
+:assumption (or (not x31679) (not x2240) (not x20572) x8688 x4276)
+:assumption (or x29111 x29693)
+:assumption (or x23974 (not x1243))
+:assumption (or x25452 x3716)
+:assumption (or (not x21727) x13464 x12621 x31353 x23222)
+:assumption (or x17319 (not x22157))
+:assumption (or (not x17868) (not x10535))
+:assumption (or (not x12147) (not x8326))
+:assumption (or x13225 x16185)
+:assumption (or (not x20200) x14556)
+:assumption (or (not x14455) x28337 x24906)
+:assumption (or (not x12613) (not x4924))
+:assumption (or (not x754) (not x19540))
+:assumption (or (not x28431) x7378 (not x3061) (not x12017) x9016 (not x15171) x15805 (not x2180))
+:assumption (or (not x1803) (not x23988))
+:assumption (or (not x6571) x13684)
+:assumption (or (not x1214) (not x15807))
+:assumption (or (not x23514) (not x21523))
+:assumption (or (not x30002) (not x16494))
+:assumption (or x18123 (not x4113))
+:assumption (or (not x30105) x14455 x20173 (not x16374))
+:assumption (or x21265 x22534)
+:assumption (or (not x754) x30994)
+:assumption (or x7503 x17238)
+:assumption (or x16595 (not x13202))
+:assumption (or (not x18934) (not x24184))
+:assumption (or x16025 x20808 x26294)
+:assumption (or (not x23956) x16680 x6616 x1064)
+:assumption (or (not x7020) x27992)
+:assumption (or x15777 (not x6182))
+:assumption (or x978 x22233 (not x29042) x22473 (not x25042) x20080 (not x732) (not x2483) x23376 x129 x21927 x28988)
+:assumption (or x22855 (not x5786))
+:assumption (or (not x29612) x31403 x6017 x20223 x1490)
+:assumption (or x14807 (not x731))
+:assumption (or x21298 x12500)
+:assumption (or (not x14438) x11274 (not x24565) x24486)
+:assumption (or x25541 (not x25230))
+:assumption (or x8466 x9008)
+:assumption (or (not x8995) x26712)
+:assumption (or x21801 (not x27394))
+:assumption (or (not x31325) x312)
+:assumption (or (not x5888) x26900)
+:assumption (or x13576 (not x23816) x1422 x6951)
+:assumption (or (not x175) x4327)
+:assumption (or (not x2560) (not x25919))
+:assumption (or x24158 x15407)
+:assumption (or x7835 x28585)
+:assumption (or x6629 x28511)
+:assumption (or (not x25125) x20087)
+:assumption (or x16304 (not x23612))
+:assumption (or x17665 (not x29008))
+:assumption (or x19443 (not x7825))
+:assumption (or x8751 (not x29712))
+:assumption (or (not x20929) (not x14641) x28168 x20402)
+:assumption (or (not x9649) (not x19739))
+:assumption (or x24899 (not x26414) (not x142))
+:assumption (or x9008 (not x17777))
+:assumption (or x12285 x11397)
+:assumption (or x10775 x15095 (not x9271) x28820)
+:assumption (or (not x14446) x1622)
+:assumption (or (not x1017) x8739)
+:assumption (or x28574 x15739)
+:assumption (or x17856 x2627 (not x7441) x3900 x688 x9020)
+:assumption (or (not x21180) (not x30224) x8002 x23244 (not x12866))
+:assumption (or (not x83) (not x6984))
+:assumption (or (not x6953) (not x30417))
+:assumption (or (not x27155) (not x18942))
+:assumption (or (not x16484) x8016)
+:assumption (or x10489 x25659)
+:assumption (or (not x13415) x18784)
+:assumption (or x6822 x30118)
+:assumption (or x17075 (not x24723))
+:assumption (or x8913 (not x31489))
+:assumption (or (not x17292) x5249)
+:assumption (or x5057 x11596)
+:assumption (or x4865 x13823)
+:assumption (or x25267 (not x21026))
+:assumption (or (not x18767) x30301)
+:assumption (or x9008 x19932)
+:assumption (or x4683 x9788)
+:assumption (or x25864 x8002)
+:assumption (or (not x20168) x14647)
+:assumption (or (not x20030) (not x25213))
+:assumption (or x22222 (not x26713))
+:assumption (or (not x5493) x8416)
+:assumption (or x21068 x10217)
+:assumption (or x10140 x12045)
+:assumption (or x18825 x15749 x2880 (not x4058) x28190 x4268)
+:assumption (or (not x6951) (not x1422))
+:assumption (or (not x9298) x27034)
+:assumption (or x25429 x10459)
+:assumption (or x14455 (not x17775))
+:assumption (or (not x13322) x2914)
+:assumption (or (not x10180) x17115 x22036 x6183 x17101)
+:assumption (or (not x29688) (not x18536))
+:assumption (or (not x2878) x12510 x2921 x19258)
+:assumption (or (not x3794) x11559)
+:assumption (or (not x31905) (not x2022) (not x17582) x2860 (not x28747) x12254 x13558)
+:assumption (or (not x12733) x4473)
+:assumption (or x3705 x20873)
+:assumption (or (not x18552) (not x30586) x25130 x19465 (not x25844))
+:assumption (or x27280 x27972)
+:assumption (or (not x2371) x4591 (not x5394))
+:assumption (or (not x9008) (not x16787) x22294)
+:assumption (or x30570 (not x23760))
+:assumption (or (not x6307) (not x26790) x17398)
+:assumption (or (not x6444) x28527)
+:assumption (or x26116 (not x103))
+:assumption (or x23946 x30208)
+:assumption (or x1929 x21875)
+:assumption (or x16025 (not x16167))
+:assumption (or x5639 (not x28225))
+:assumption (or x19707 x11561)
+:assumption (or (not x24090) (not x18859) x20267)
+:assumption (or x16025 (not x7508))
+:assumption (or x6497 (not x17803) (not x28973) (not x1582))
+:assumption (or (not x8242) (not x10465) (not x16437))
+:assumption (or (not x16636) x12676)
+:assumption (or (not x23742) (not x4237))
+:assumption (or x6359 (not x3212))
+:assumption (or x10874 x25082)
+:assumption (or (not x29218) (not x23274))
+:assumption (or (not x1130) (not x23244))
+:assumption (or (not x26887) x15069)
+:assumption (or (not x15488) (not x376))
+:assumption (or (not x1393) (not x3344))
+:assumption (or (not x21606) (not x23660))
+:assumption (or x14591 (not x23362) (not x27942))
+:assumption (or (not x7231) (not x15811))
+:assumption (or (not x11242) (not x8002))
+:assumption (or x14887 (not x24321))
+:assumption (or (not x12875) (not x15870))
+:assumption (or x22855 (not x15510) x21621 x20073 (not x5317))
+:assumption (or x25659 x1220 (not x22231))
+:assumption (or x19497 x12116)
+:assumption (or x17661 (not x6128))
+:assumption (or x21654 x794)
+:assumption (or x22471 (not x11347))
+:assumption (or (not x23146) x16264)
+:assumption (or (not x11424) (not x13153))
+:assumption (or x9010 (not x21653) x17047)
+:assumption (or (not x16894) x23515)
+:assumption (or x8136 x28737)
+:assumption (or (not x25825) (not x31552))
+:assumption (or (not x1517) (not x2178))
+:assumption (or (not x25174) (not x19268))
+:assumption (or x29440 (not x24067) x2854 x25272 x1372 (not x25666) (not x6523))
+:assumption (or (not x955) x10874)
+:assumption (or x28572 x11181)
+:assumption (or x7401 x11110)
+:assumption (or x27792 (not x10812))
+:assumption (or (not x25109) x18367)
+:assumption (or (not x23930) (not x27418))
+:assumption (or (not x21641) x1082)
+:assumption (or (not x25043) (not x19360))
+:assumption (or (not x12581) x10156)
+:assumption (or (not x3913) (not x918))
+:assumption (or (not x13956) x10335 (not x16751))
+:assumption (or x7549 x14140)
+:assumption (or x27197 (not x18188))
+:assumption (or (not x12777) (not x17096))
+:assumption (or x11791 x11025 x10874 x6307)
+:assumption (or x27508 (not x12034))
+:assumption (or x3734 (not x3891))
+:assumption (or (not x26941) (not x19549))
+:assumption (or x29452 x25911 x2031 x2868)
+:assumption (or x28229 (not x27045) (not x17058))
+:assumption (or (not x8002) (not x6185))
+:assumption (or x2589 (not x11792))
+:assumption (or x14607 x30200 x2841 x14492)
+:assumption (or x13324 (not x28912) (not x21423) x30429 x16311 (not x5639) (not x7654) x24954 (not x15557))
+:assumption (or (not x11701) x14601)
+:assumption (or x2849 (not x5715))
+:assumption (or (not x1383) (not x10172))
+:assumption (or (not x3201) x7154)
+:assumption (or (not x13795) x1938)
+:assumption (or (not x28869) (not x5513))
+:assumption (or (not x4806) x17075)
+:assumption (or x352 x21265)
+:assumption (or (not x20340) (not x15292))
+:assumption (or x13431 (not x14352))
+:assumption (or x6142 x17780)
+:assumption (or (not x26361) x9571)
+:assumption (or x14808 x9684)
+:assumption (or (not x17684) (not x24226))
+:assumption (or x30163 (not x11917))
+:assumption (or x10064 x16109)
+:assumption (or (not x7012) x3559)
+:assumption (or (not x8903) x30770)
+:assumption (or x18469 x27875)
+:assumption (or x25315 (not x24200) (not x5129))
+:assumption (or x21799 x28511)
+:assumption (or (not x25470) (not x10443))
+:assumption (or x29027 (not x26478) (not x2902) x19791)
+:assumption (or (not x29171) (not x15239))
+:assumption (or x25961 (not x17808))
+:assumption (or x30113 (not x29305) x25154)
+:assumption (or x1657 (not x31089))
+:assumption (or x5221 (not x580))
+:assumption (or (not x8702) (not x6497))
+:assumption (or x4483 (not x31701))
+:assumption (or x20108 x27557)
+:assumption (or x25690 (not x13349))
+:assumption (or (not x20971) x2953)
+:assumption (or (not x3368) x6242)
+:assumption (or x25474 (not x31681))
+:assumption (or (not x24160) x22845)
+:assumption (or (not x19693) x17621)
+:assumption (or x2656 x19428 (not x10939) (not x262))
+:assumption (or x5388 (not x30811))
+:assumption (or x7414 (not x18272))
+:assumption (or x27055 (not x25659))
+:assumption (or x6295 x15037)
+:assumption (or x23413 x24437)
+:assumption (or (not x31539) (not x8249))
+:assumption (or (not x1004) (not x21632) (not x16293) (not x17897) x11482 x19445)
+:assumption (or (not x22537) x20208)
+:assumption (or x27915 x5582 (not x6289))
+:assumption (or x28162 (not x16910) (not x17338) x31767)
+:assumption (or (not x30729) (not x23141))
+:assumption (or x16242 (not x12836))
+:assumption (or x16860 x5848)
+:assumption (or (not x28441) (not x23995))
+:assumption (or x13060 x12092)
+:assumption (or (not x7280) (not x3680) (not x16917) x5840 (not x2595) (not x28475))
+:assumption (or (not x22385) (not x2952))
+:assumption (or (not x17584) (not x18500) (not x13956) (not x6783))
+:assumption (or (not x30992) (not x8586) x31452 (not x1735))
+:assumption (or x12460 x31105)
+:assumption (or x31277 (not x9239))
+:assumption (or (not x21645) (not x6746))
+:assumption (or x15633 (not x13825))
+:assumption (or (not x12924) x14894)
+:assumption (or (not x22142) x30984 x24042)
+:assumption (or (not x30100) x8625)
+:assumption (or x4134 x31635)
+:assumption (or (not x2815) (not x12517))
+:assumption (or x30126 x15059)
+:assumption (or x27209 (not x659))
+:assumption (or x19829 (not x21035))
+:assumption (or (not x5570) (not x2917))
+:assumption (or x20887 x11754 (not x16754) x10082 (not x14682) x30447 (not x16506) (not x27811))
+:assumption (or x12291 (not x2025) (not x16145))
+:assumption (or (not x9329) (not x16455) x31662 x4169)
+:assumption (or (not x24578) x9930)
+:assumption (or x16900 x18436)
+:assumption (or x4976 (not x28830) (not x8493) x16510 (not x30124))
+:assumption (or (not x29125) (not x25985))
+:assumption (or (not x7838) x20789)
+:assumption (or x20773 (not x25499))
+:assumption (or (not x12305) x29923)
+:assumption (or (not x16510) (not x23969) (not x2976) x20353 x25494 x22436)
+:assumption (or x16053 (not x18106))
+:assumption (or x13607 (not x11281))
+:assumption (or x7844 (not x13934))
+:assumption (or (not x21918) x1566)
+:assumption (or (not x3117) (not x23934))
+:assumption (or (not x22169) x15277)
+:assumption (or (not x29558) (not x27837) x142)
+:assumption (or (not x27783) x17554)
+:assumption (or x4936 x14882)
+:assumption (or (not x18921) x16631)
+:assumption (or (not x29326) (not x9481) x28007 x23332 (not x27618))
+:assumption (or x25763 (not x27670))
+:assumption (or (not x13446) (not x10621))
+:assumption (or (not x13638) x8872)
+:assumption (or x19896 (not x21966))
+:assumption (or (not x8246) x19042)
+:assumption (or (not x13018) (not x11763) (not x14654) x23244)
+:assumption (or (not x21464) x24129 x5626 x8598)
+:assumption (or (not x25478) (not x11014))
+:assumption (or (not x24853) x26661)
+:assumption (or x328 (not x31219))
+:assumption (or (not x14116) x18637)
+:assumption (or x12045 (not x21815) (not x22746) x26432 x16510 x13907 (not x7296))
+:assumption (or x30224 (not x19988))
+:assumption (or x1011 x13062)
+:assumption (or (not x21348) x23244 x20421 x8002)
+:assumption (or (not x12672) x21271)
+:assumption (or (not x7341) (not x4285))
+:assumption (or (not x12083) (not x30751) (not x6093))
+:assumption (or (not x8971) x21633)
+:assumption (or (not x4113) x19214)
+:assumption (or (not x17474) x13407 x4504 (not x8965))
+:assumption (or x11148 x29265)
+:assumption (or (not x29922) (not x6818))
+:assumption (or x13506 x15795)
+:assumption (or x30480 x11155)
+:assumption (or (not x15940) x15036)
+:assumption (or (not x4956) x24274)
+:assumption (or x28885 (not x5999))
+:assumption (or x24033 x6243 x156)
+:assumption (or (not x25965) (not x8748))
+:assumption (or x624 (not x17665))
+:assumption (or (not x11792) (not x31360))
+:assumption (or x28477 (not x21796))
+:assumption (or x2396 x17302)
+:assumption (or (not x19446) (not x23059))
+:assumption (or (not x20967) (not x24907))
+:assumption (or (not x20054) x22948)
+:assumption (or (not x21834) x19188)
+:assumption (or (not x17056) x2883)
+:assumption (or x31033 x29290)
+:assumption (or (not x1657) (not x4504) x3064)
+:assumption (or (not x27512) x11049)
+:assumption (or (not x20114) (not x17359) (not x23313) x22219 x908)
+:assumption (or (not x19007) x21974)
+:assumption (or x20335 x18968)
+:assumption (or x24756 (not x554))
+:assumption (or (not x24915) (not x30136) x25659)
+:assumption (or (not x31789) (not x25628))
+:assumption (or x5721 (not x8981))
+:assumption (or x14898 x16165 x28154 (not x24364))
+:assumption (or (not x7068) (not x26264))
+:assumption (or x16802 (not x16861) (not x10229) (not x25411) x29447 (not x5436) x10389 x4631)
+:assumption (or (not x4822) (not x1855))
+:assumption (or x6670 x18003)
+:assumption (or (not x17532) (not x12211))
+:assumption (or x12599 (not x21159))
+:assumption (or x5830 (not x8306))
+:assumption (or x20011 x13749)
+:assumption (or x15649 (not x17980) x18584)
+:assumption (or x827 (not x27789))
+:assumption (or x2566 (not x23416))
+:assumption (or x22983 (not x22093))
+:assumption (or (not x10164) (not x28131))
+:assumption (or x9008 (not x23267))
+:assumption (or (not x4896) (not x15953))
+:assumption (or x20445 x9008)
+:assumption (or (not x21416) x27233 (not x21633) x8950)
+:assumption (or x16185 x11476 (not x22516))
+:assumption (or (not x11783) x10474)
+:assumption (or x1583 x12010)
+:assumption (or x240 (not x2926) (not x28118) x3139)
+:assumption (or x21106 (not x9008))
+:assumption (or (not x11337) x27989)
+:assumption (or (not x28056) (not x18103))
+:assumption (or (not x18002) x468)
+:assumption (or (not x8532) (not x27522))
+:assumption (or x16553 x21411)
+:assumption (or (not x23587) x10969)
+:assumption (or (not x15511) x11682)
+:assumption (or x24872 x22990)
+:assumption (or x21484 (not x22519))
+:assumption (or x7087 (not x7131) x11543 (not x23630) (not x16834) x21102 x415 (not x20283))
+:assumption (or (not x9792) x26912)
+:assumption (or x30627 x23968)
+:assumption (or x12032 (not x12577))
+:assumption (or (not x2144) (not x26447))
+:assumption (or (not x19711) (not x18728))
+:assumption (or (not x17110) (not x3518) (not x6108) (not x30446) (not x458) (not x827) x26715 (not x14630))
+:assumption (or (not x388) (not x2420))
+:assumption (or x24729 (not x2667))
+:assumption (or x19991 (not x2086))
+:assumption (or x9859 (not x8229))
+:assumption (or (not x26001) (not x26008))
+:assumption (or (not x14839) x16975)
+:assumption (or (not x13838) (not x18402))
+:assumption (or (not x2472) x2033)
+:assumption (or x27944 x11539)
+:assumption (or (not x22317) (not x19118))
+:assumption (or x30208 x25883 x10261)
+:assumption (or (not x27436) (not x30845))
+:assumption (or x13956 x6948)
+:assumption (or (not x24410) x23279 x28223)
+:assumption (or (not x18658) x17550)
+:assumption (or x5953 (not x31615))
+:assumption (or (not x485) x12490 (not x14411) (not x18594) (not x25224))
+:assumption (or (not x7212) x4974)
+:assumption (or (not x23605) (not x7128) x114 (not x23379))
+:assumption (or (not x18455) x8657)
+:assumption (or x3538 x7317 x3616)
+:assumption (or (not x14418) x24768)
+:assumption (or (not x21905) (not x12176))
+:assumption (or (not x25612) x15175)
+:assumption (or x13822 (not x20961))
+:assumption (or x30887 x1240)
+:assumption (or x9067 (not x26692))
+:assumption (or x20389 x3853)
+:assumption (or (not x8002) (not x15519))
+:assumption (or x17113 x16745)
+:assumption (or (not x6319) x13752)
+:assumption (or (not x8524) x14896 (not x4977) (not x8831) (not x24837) (not x976) (not x21607) x17972)
+:assumption (or x4951 (not x1566) (not x16025))
+:assumption (or (not x169) x20320)
+:assumption (or x64 (not x4190) (not x26546))
+:assumption (or x2556 (not x13686))
+:assumption (or x22403 (not x31127))
+:assumption (or x22794 (not x28772))
+:assumption (or x2023 (not x7835) x2133 x15643)
+:assumption (or (not x1414) (not x19936))
+:assumption (or x31649 (not x10551))
+:assumption (or (not x10514) x29425 x19329)
+:assumption (or (not x27779) x23101)
+:assumption (or (not x12545) x9025)
+:assumption (or (not x5528) (not x31064))
+:assumption (or x7617 x31072)
+:assumption (or (not x18173) x11074 x27621 (not x19874))
+:assumption (or (not x16159) (not x716))
+:assumption (or x7322 (not x12739))
+:assumption (or x30061 x10003 x9008)
+:assumption (or (not x19595) (not x13983))
+:assumption (or x11933 x8365)
+:assumption (or (not x29986) (not x11099))
+:assumption (or x19160 (not x23068))
+:assumption (or x11087 x13880)
+:assumption (or x20321 (not x22976))
+:assumption (or (not x26818) (not x16083))
+:assumption (or x20856 (not x17274))
+:assumption (or x14897 x31476)
+:assumption (or x31837 x1892)
+:assumption (or (not x18239) x29472)
+:assumption (or (not x4390) (not x10319))
+:assumption (or x12700 (not x9921))
+:assumption (or (not x28275) x28088)
+:assumption (or (not x964) x21037)
+:assumption (or x9234 (not x14578))
+:assumption (or (not x20724) x19148)
+:assumption (or x22420 (not x16374))
+:assumption (or (not x15752) (not x18555))
+:assumption (or (not x23724) x29649)
+:assumption (or (not x21921) x9950 (not x22111))
+:assumption (or (not x13513) x11585)
+:assumption (or x25460 (not x18567))
+:assumption (or x4292 x20755)
+:assumption (or (not x27559) (not x10346) x29432 x1130)
+:assumption (or (not x20514) x30131)
+:assumption (or x11439 (not x24104))
+:assumption (or (not x16530) x26675)
+:assumption (or (not x24442) (not x11208))
+:assumption (or x16873 x4574)
+:assumption (or (not x12965) x28469)
+:assumption (or (not x13055) (not x25659) (not x31164))
+:assumption (or x30924 (not x30289))
+:assumption (or (not x14842) (not x22539))
+:assumption (or (not x20565) x17595)
+:assumption (or x28122 x27600)
+:assumption (or (not x24496) (not x19810) (not x16511) x28342)
+:assumption (or (not x1480) (not x9079))
+:assumption (or x9846 (not x31425))
+:assumption (or (not x13489) x4201)
+:assumption (or x17605 x26162)
+:assumption (or (not x10166) x29301)
+:assumption (or x6645 (not x13391))
+:assumption (or (not x25757) x3322)
+:assumption (or x30050 x27703)
+:assumption (or x17099 (not x18069))
+:assumption (or (not x2050) (not x26932))
+:assumption (or x9 x5025)
+:assumption (or x27807 x18294)
+:assumption (or x4940 (not x21427) x3001)
+:assumption (or (not x30699) (not x10073))
+:assumption (or x12669 x31863)
+:assumption (or x24372 (not x24207))
+:assumption (or (not x29027) (not x27476))
+:assumption (or x29606 x11962 x9200)
+:assumption (or x11091 (not x1474))
+:assumption (or (not x1814) x7176)
+:assumption (or (not x4644) x10211)
+:assumption (or (not x22461) x27359 x29572 x7946 x23943 x17905)
+:assumption (or (not x25784) (not x23593))
+:assumption (or x30639 (not x1565))
+:assumption (or x21483 x5810)
+:assumption (or (not x9268) (not x8002) x22958)
+:assumption (or (not x28926) (not x13593))
+:assumption (or x17971 x25215 (not x3565))
+:assumption (or x910 x17855)
+:assumption (or (not x14968) (not x7386) x26206)
+:assumption (or x9531 x21225 x25079)
+:assumption (or x23979 (not x6307))
+:assumption (or (not x2569) (not x879))
+:assumption (or x12236 x22808)
+:assumption (or (not x12628) (not x17340))
+:assumption (or x23244 x16282)
+:assumption (or x6836 (not x13956))
+:assumption (or x24671 (not x16802) (not x24722))
+:assumption (or (not x9406) x23024)
+:assumption (or (not x11634) (not x30084))
+:assumption (or x7160 x26869)
+:assumption (or (not x31497) (not x12192))
+:assumption (or x22489 x26008)
+:assumption (or x30709 (not x22713))
+:assumption (or x18337 x29362)
+:assumption (or (not x1347) x13356)
+:assumption (or (not x13576) (not x14785) (not x26135) x9531)
+:assumption (or (not x13795) (not x28793))
+:assumption (or x2915 x14963)
+:assumption (or (not x30574) x17573)
+:assumption (or x19485 x15770)
+:assumption (or x15742 (not x23643) x14856 (not x11356) (not x2514) x28963 (not x13149) (not x15657))
+:assumption (or x27619 x17661)
+:assumption (or x8875 x28023)
+:assumption (or x9265 x30470)
+:assumption (or (not x17264) x5948)
+:assumption (or x3877 (not x24759))
+:assumption (or (not x22117) x23828 x14839)
+:assumption (or (not x1614) (not x19753))
+:assumption (or x20859 (not x6570))
+:assumption (or x6149 (not x11792) (not x20510) x11214)
+:assumption (or (not x4058) x2880 (not x18825) x15749 x560 x4268 (not x19214))
+:assumption (or x16687 (not x15405))
+:assumption (or x18242 (not x7533))
+:assumption (or x24349 x10787)
+:assumption (or (not x9550) x25911)
+:assumption (or (not x20384) x12597)
+:assumption (or (not x26646) x3698)
+:assumption (or (not x9504) x20671)
+:assumption (or x24044 (not x12439))
+:assumption (or (not x26432) (not x3760))
+:assumption (or x27769 (not x11934))
+:assumption (or (not x13206) x15374)
+:assumption (or x10403 (not x28798) x4222 (not x14690))
+:assumption (or (not x5163) (not x9092))
+:assumption (or x7644 x5555)
+:assumption (or (not x29726) (not x24403))
+:assumption (or x962 (not x1667))
+:assumption (or (not x12043) (not x728))
+:assumption (or x3515 x12452)
+:assumption (or x10333 (not x23740))
+:assumption (or (not x2677) (not x6444))
+:assumption (or x4816 (not x26360) (not x31742) x14646 x15795)
+:assumption (or (not x5904) x25639)
+:assumption (or (not x18905) x25663)
+:assumption (or x22820 x14045)
+:assumption (or (not x26218) x29789)
+:assumption (or x24013 x9647)
+:assumption (or (not x18959) x22081 x6030 x18312 (not x14517) x9391)
+:assumption (or (not x10063) x5095)
+:assumption (or (not x29142) (not x20809))
+:assumption (or (not x8099) x20359)
+:assumption (or x3399 x2063)
+:assumption (or x12458 x24722 (not x30997))
+:assumption (or (not x9004) (not x643) x21932 x27524 x25386 x3958 x14819)
+:assumption (or x2047 x9008)
+:assumption (or (not x273) x5028)
+:assumption (or (not x24365) (not x24952))
+:assumption (or x28963 (not x4751))
+:assumption (or x5528 (not x7915) x22829)
+:assumption (or x27298 (not x9382))
+:assumption (or x19508 x15774)
+:assumption (or x17580 (not x31114) x21477)
+:assumption (or x8602 x10174)
+:assumption (or (not x29728) x8602)
+:assumption (or (not x2334) (not x25599))
+:assumption (or x13689 x14152)
+:assumption (or x13111 (not x13787))
+:assumption (or x9017 x902)
+:assumption (or x17357 x9394)
+:assumption (or (not x10650) (not x30248))
+:assumption (or x31156 (not x1249))
+:assumption (or x2165 (not x17044) (not x16802))
+:assumption (or (not x15991) x2285)
+:assumption (or x12657 (not x24804))
+:assumption (or (not x31529) (not x8120))
+:assumption (or x19236 (not x21602))
+:assumption (or (not x17870) x4402)
+:assumption (or (not x31396) x21904)
+:assumption (or x3638 (not x14485))
+:assumption (or x3494 x14508 x7281)
+:assumption (or (not x28424) x1024 x23244 x8002)
+:assumption (or x29463 (not x8002) x5701)
+:assumption (or x25305 (not x2815))
+:assumption (or x17895 (not x16025))
+:assumption (or x5090 (not x2611))
+:assumption (or x3821 (not x29099) x23370 x9925 (not x28541) (not x31829))
+:assumption (or x5569 x25959)
+:assumption (or x23753 (not x5820))
+:assumption (or (not x12641) (not x5058))
+:assumption (or (not x10167) (not x23544))
+:assumption (or (not x16025) (not x23004))
+:assumption (or x543 (not x25371))
+:assumption (or (not x6401) x14173)
+:assumption (or (not x31057) (not x14792))
+:assumption (or x28309 (not x16002))
+:assumption (or (not x12586) x10727)
+:assumption (or (not x26121) (not x15935) x9358)
+:assumption (or (not x17753) (not x31124) x8002)
+:assumption (or x9008 x5110 x16260)
+:assumption (or (not x9323) (not x30340))
+:assumption (or x24135 (not x3435) (not x28981))
+:assumption (or x31138 x15)
+:assumption (or x11329 (not x25208))
+:assumption (or (not x23597) x3373)
+:assumption (or (not x16304) x22356)
+:assumption (or x21361 x18570)
+:assumption (or x16645 (not x13162))
+:assumption (or x28973 (not x599))
+:assumption (or (not x30113) (not x29134))
+:assumption (or (not x29546) x9107)
+:assumption (or x6191 (not x3368))
+:assumption (or (not x11783) (not x3493))
+:assumption (or (not x13111) (not x24560))
+:assumption (or (not x9386) (not x25168))
+:assumption (or (not x13576) (not x1422))
+:assumption (or (not x21298) x6357 x25636)
+:assumption (or x20630 (not x22261) x4026 (not x20885))
+:assumption (or (not x14327) (not x2147))
+:assumption (or (not x4812) x29303)
+:assumption (or (not x19881) (not x28571))
+:assumption (or x2465 x26884)
+:assumption (or x22873 x23825 x14619 x1859 x16800 (not x12578) x9697)
+:assumption (or (not x25737) (not x28058) (not x1393))
+:assumption (or x1673 x28696)
+:assumption (or x3511 x1077)
+:assumption (or (not x16428) (not x11688))
+:assumption (or (not x15917) (not x12106) (not x1981))
+:assumption (or x8707 (not x15447))
+:assumption (or (not x30743) (not x11571))
+:assumption (or x26092 x229)
+:assumption (or (not x25671) (not x26519))
+:assumption (or (not x16374) (not x29191))
+:assumption (or x11374 x16510 x26379)
+:assumption (or x4189 x3936)
+:assumption (or (not x20825) (not x24502))
+:assumption (or x7188 x13543)
+:assumption (or (not x4460) (not x1547))
+:assumption (or (not x17041) x28540)
+:assumption (or (not x1039) (not x8642))
+:assumption (or x13118 x30616)
+:assumption (or (not x29442) x23177)
+:assumption (or (not x444) (not x20241) (not x14999) x28890 (not x27472) (not x29709) (not x26074) (not x3263))
+:assumption (or (not x3226) x7091)
+:assumption (or x26332 (not x7468))
+:assumption (or x1582 x29241)
+:assumption (or (not x30630) x11615)
+:assumption (or (not x28289) x22225)
+:assumption (or x13 (not x11969))
+:assumption (or (not x19863) (not x29499))
+:assumption (or x22388 (not x14219))
+:assumption (or (not x16455) x28814)
+:assumption (or (not x13354) x21367)
+:assumption (or x16604 (not x24087))
+:assumption (or x7737 x6951)
+:assumption (or (not x25491) x23152)
+:assumption (or x27112 x18735 x25659)
+:assumption (or x21350 (not x25512))
+:assumption (or (not x33) x21099)
+:assumption (or x19021 x26622)
+:assumption (or x18368 x6361)
+:assumption (or x5086 (not x17450))
+:assumption (or x3217 (not x23354))
+:assumption (or x3687 x15537)
+:assumption (or (not x31782) x10670)
+:assumption (or x20598 (not x14122) (not x19098) x810 x7606 (not x7195) (not x3846) x5422)
+:assumption (or (not x19740) (not x16686))
+:assumption (or (not x17273) (not x13628))
+:assumption (or x23510 (not x16370))
+:assumption (or (not x1760) x16840)
+:assumption (or x28108 (not x31730))
+:assumption (or (not x28930) (not x27054))
+:assumption (or (not x16304) (not x15161) (not x5466))
+:assumption (or x7258 x16392)
+:assumption (or x31249 x14839)
+:assumption (or x6936 (not x15675))
+:assumption (or x4119 x2780)
+:assumption (or x18724 x30805)
+:assumption (or (not x1580) (not x28119) x25659)
+:assumption (or x15624 x13905)
+:assumption (or (not x24295) x26789 x18761)
+:assumption (or x9216 (not x14713))
+:assumption (or x12922 (not x4358))
+:assumption (or x10141 x25439)
+:assumption (or (not x28472) x3255)
+:assumption (or (not x13025) x25581)
+:assumption (or x14782 (not x22315))
+:assumption (or (not x28506) x25765)
+:assumption (or x20865 (not x18119))
+:assumption (or (not x25178) x995)
+:assumption (or (not x15884) x13956)
+:assumption (or (not x20859) (not x11089))
+:assumption (or (not x5541) (not x22001))
+:assumption (or x16039 (not x65))
+:assumption (or x9187 (not x25079))
+:assumption (or x6734 (not x26713))
+:assumption (or x5298 x15061)
+:assumption (or (not x9008) (not x18232))
+:assumption (or (not x19864) (not x18003) x6580)
+:assumption (or (not x23475) x31280)
+:assumption (or x13956 x8002 (not x9033) x23244 x29772 (not x22829))
+:assumption (or x3286 (not x9650))
+:assumption (or x27170 x19318)
+:assumption (or (not x6280) (not x30742))
+:assumption (or (not x17645) x3671)
+:assumption (or (not x27736) (not x4505) x632)
+:assumption (or (not x4327) x175)
+:assumption (or x30980 (not x22781))
+:assumption (or (not x18393) x20717)
+:assumption (or x26332 x26863)
+:assumption (or (not x29442) (not x23802) x19680)
+:assumption (or x23410 x13565)
+:assumption (or (not x13993) x10468)
+:assumption (or (not x20684) (not x12787))
+:assumption (or x8673 x553)
+:assumption (or x2323 x1340)
+:assumption (or x30347 (not x23244) (not x29606))
+:assumption (or (not x27574) x23784)
+:assumption (or x17819 (not x18223))
+:assumption (or (not x26433) x8083)
+:assumption (or x26130 x23224)
+:assumption (or x14669 (not x15799))
+:assumption (or x27858 (not x1811))
+:assumption (or (not x16806) x15841)
+:assumption (or x19913 (not x13102))
+:assumption (or x18820 (not x22962))
+:assumption (or x15877 (not x5826))
+:assumption (or (not x12026) (not x10655))
+:assumption (or x11722 x7076)
+:assumption (or x510 (not x13078))
+:assumption (or (not x8298) x12662)
+:assumption (or x11680 x7835 (not x16053))
+:assumption (or (not x28890) x18784)
+:assumption (or (not x25801) x28394)
+:assumption (or (not x19752) x13956)
+:assumption (or (not x23399) (not x9501))
+:assumption (or (not x24475) (not x24351))
+:assumption (or x24097 x1461)
+:assumption (or (not x20310) (not x25538) x3962)
+:assumption (or x10060 (not x4534))
+:assumption (or x16024 (not x16196))
+:assumption (or (not x24573) (not x3048))
+:assumption (or x12640 (not x14963))
+:assumption (or (not x3765) (not x21557))
+:assumption (or x22162 x31270 (not x23785))
+:assumption (or (not x20486) (not x17998) (not x23958) x25574)
+:assumption (or (not x5533) x17762)
+:assumption (or (not x16995) (not x8764))
+:assumption (or (not x12164) x169)
+:assumption (or (not x17016) x15183)
+:assumption (or (not x21186) x7341)
+:assumption (or (not x22487) (not x14053) (not x25533))
+:assumption (or (not x18623) (not x16343))
+:assumption (or (not x21857) (not x30222))
+:assumption (or x22991 x20049)
+:assumption (or (not x20269) x15515)
+:assumption (or (not x10205) x15432)
+:assumption (or (not x6501) (not x15068))
+:assumption (or (not x8002) x17071)
+:assumption (or (not x29201) (not x16199) x16649 (not x29657) (not x18482) (not x9031) x11668 (not x25037))
+:assumption (or x26670 x25631)
+:assumption (or (not x14516) x24558)
+:assumption (or (not x15840) x19711)
+:assumption (or (not x20352) (not x23330))
+:assumption (or x14839 (not x23166))
+:assumption (or (not x9721) x23949)
+:assumption (or (not x12741) x16812)
+:assumption (or x22449 (not x9484))
+:assumption (or x2405 (not x11629) (not x15400) x16907)
+:assumption (or (not x18019) x9008)
+:assumption (or x12578 x15559 (not x16652))
+:assumption (or x1042 x13937)
+:assumption (or (not x3146) x28821)
+:assumption (or (not x765) (not x31350))
+:assumption (or (not x17066) (not x30005) (not x570) (not x850))
+:assumption (or x12954 (not x24727))
+:assumption (or x12494 x5906)
+:assumption (or (not x12237) x19577)
+:assumption (or (not x17071) x13956 x8002 x26578 x23244 (not x15102))
+:assumption (or x9670 (not x17224))
+:assumption (or (not x23551) x27911)
+:assumption (or x8719 x28336)
+:assumption (or x8002 x9292 (not x24777))
+:assumption (or x18664 x28242)
+:assumption (or (not x30158) (not x5875))
+:assumption (or (not x25130) (not x8623))
+:assumption (or x2033 (not x1393))
+:assumption (or x710 (not x15404))
+:assumption (or x12182 (not x16910))
+:assumption (or x10941 x31661)
+:assumption (or x18545 (not x8426))
+:assumption (or (not x1317) x28407)
+:assumption (or x17440 x12348)
+:assumption (or (not x9429) (not x4904))
+:assumption (or (not x21234) x30474)
+:assumption (or x10280 x111)
+:assumption (or (not x3660) (not x5263))
+:assumption (or (not x31633) x28875)
+:assumption (or x10335 x23244 x27630 x14423 x8002)
+:assumption (or (not x20932) x25770)
+:assumption (or (not x13508) (not x27672))
+:assumption (or x18567 x21298 (not x3159) (not x31671))
+:assumption (or x4969 x28416 (not x14149))
+:assumption (or (not x20060) (not x22788))
+:assumption (or (not x8280) (not x19275))
+:assumption (or x30538 (not x26270))
+:assumption (or (not x15119) (not x16652))
+:assumption (or x9965 x26402)
+:assumption (or x15104 (not x21890))
+:assumption (or x18594 x16876)
+:assumption (or x24232 x2256)
+:assumption (or x5127 (not x2251))
+:assumption (or x5569 x9398 (not x23491))
+:assumption (or x26146 (not x22358))
+:assumption (or x15499 x8521)
+:assumption (or x12225 (not x7028))
+:assumption (or x28630 (not x31864))
+:assumption (or (not x16250) (not x2747))
+:assumption (or x8002 (not x5388) x9464)
+:assumption (or (not x15127) x29333)
+:assumption (or x6663 x25659 x29939 (not x18519))
+:assumption (or x1303 (not x8367))
+:assumption (or x20201 (not x15188))
+:assumption (or (not x21274) (not x29435))
+:assumption (or (not x2739) x18322)
+:assumption (or x8538 (not x13809))
+:assumption (or (not x15741) (not x30113))
+:assumption (or x5697 (not x18072))
+:assumption (or (not x12202) x29645)
+:assumption (or x68 (not x15187))
+:assumption (or (not x6172) (not x9211))
+:assumption (or x8540 (not x26626))
+:assumption (or x29914 x10459)
+:assumption (or (not x16445) x14839)
+:assumption (or x8002 (not x31215) x25627)
+:assumption (or (not x5783) (not x604))
+:assumption (or (not x11792) x27828)
+:assumption (or x19171 x25376 x5956 x30188 (not x370) x28283 x14035)
+:assumption (or x349 (not x6953) (not x12589) (not x401) (not x6435))
+:assumption (or (not x11394) x24418)
+:assumption (or x28291 x16899)
+:assumption (or (not x12710) x6519)
+:assumption (or x18103 x27394)
+:assumption (or x2232 x6827 (not x4383))
+:assumption (or (not x16991) x9565)
+:assumption (or (not x17803) x13449 x28973 x1582)
+:assumption (or (not x916) (not x14123))
+:assumption (or (not x21638) (not x12765) (not x7881) (not x22560) (not x20592) (not x19677))
+:assumption (or (not x348) x28940)
+:assumption (or (not x9378) (not x29649))
+:assumption (or (not x26192) x15251)
+:assumption (or x6635 x1226)
+:assumption (or (not x5104) x7286 (not x23196))
+:assumption (or (not x898) x4254)
+:assumption (or x8742 (not x9454))
+:assumption (or x1981 x15917)
+:assumption (or x14190 x24169)
+:assumption (or x25659 x29634 x29412)
+:assumption (or (not x27780) x8359)
+:assumption (or (not x12814) x29606)
+:assumption (or x21840 (not x7038))
+:assumption (or (not x22532) (not x3215))
+:assumption (or (not x4893) x1111)
+:assumption (or x3642 (not x1905))
+:assumption (or (not x21815) (not x19864) (not x16510) (not x23512) (not x31269) x30138 x7243)
+:assumption (or x21786 (not x8064))
+:assumption (or (not x15861) (not x24268))
+:assumption (or x3028 (not x16848))
+:assumption (or (not x29654) (not x4374))
+:assumption (or x12117 x11759 (not x11471) x21812 (not x319) (not x22124) (not x29736))
+:assumption (or x1981 x7200)
+:assumption (or x13257 (not x31207))
+:assumption (or (not x3407) x17363)
+:assumption (or (not x9529) x17925)
+:assumption (or (not x4879) x19541 x18246 (not x372) x13131 (not x4504) x12326)
+:assumption (or (not x29532) (not x31890))
+:assumption (or x27470 x17534)
+:assumption (or x29372 (not x1898))
+:assumption (or x137 (not x6469))
+:assumption (or x2816 x5528)
+:assumption (or x30934 (not x25128))
+:assumption (or (not x28068) x3989)
+:assumption (or x20199 x9885)
+:assumption (or x13253 x13019)
+:assumption (or (not x17770) x14084)
+:assumption (or x6951 (not x26417))
+:assumption (or (not x9806) x746 x17170 (not x26578) (not x27004) (not x12650))
+:assumption (or (not x24722) (not x10025))
+:assumption (or (not x7288) x5619)
+:assumption (or (not x11959) x14582)
+:assumption (or (not x14839) (not x7660))
+:assumption (or (not x24551) (not x7119))
+:assumption (or (not x13419) (not x18078))
+:assumption (or (not x7204) x7677)
+:assumption (or (not x9999) (not x701) x24320)
+:assumption (or (not x663) (not x5318))
+:assumption (or x31055 x17040)
+:assumption (or x4803 x31651)
+:assumption (or x16635 (not x31852))
+:assumption (or x10757 (not x7080))
+:assumption (or (not x16809) x14046)
+:assumption (or x1192 (not x23212))
+:assumption (or (not x21938) (not x21063) x30476 x1241 x26945)
+:assumption (or (not x8308) x6989)
+:assumption (or (not x776) x29382)
+:assumption (or (not x3317) (not x20172) (not x147) x28072 x8708 (not x21082) (not x14083))
+:assumption (or x24797 (not x8532))
+:assumption (or (not x10585) (not x3531))
+:assumption (or (not x8002) x18411)
+:assumption (or x16873 x12293)
+:assumption (or x10477 x8121)
+:assumption (or (not x10841) x17679)
+:assumption (or (not x23244) (not x24685))
+:assumption (or x6806 x24851)
+:assumption (or x13309 x19203)
+:assumption (or (not x22705) x10385)
+:assumption (or (not x26172) (not x31758))
+:assumption (or (not x20094) (not x13664))
+:assumption (or (not x19957) x8055)
+:assumption (or x30297 (not x15935) x14724 (not x29484) x21633)
+:assumption (or x9481 (not x23332))
+:assumption (or (not x6976) x314)
+:assumption (or x27042 x12047)
+:assumption (or x7282 x7081)
+:assumption (or x14435 x16502)
+:assumption (or x24800 (not x21547))
+:assumption (or (not x2121) (not x24207))
+:assumption (or (not x13169) (not x7071))
+:assumption (or (not x16375) x3017)
+:assumption (or (not x18610) x23244)
+:assumption (or x28101 (not x16284))
+:assumption (or (not x7584) (not x402))
+:assumption (or x21980 x6851)
+:assumption (or x17987 x21899 x14324 x12631 x2133)
+:assumption (or x19058 (not x3861))
+:assumption (or (not x16029) (not x21400))
+:assumption (or (not x10820) x11671)
+:assumption (or (not x30016) x2064)
+:assumption (or x358 (not x23165))
+:assumption (or (not x5639) x728 x28912 (not x1620) x12043 x23675 (not x22144))
+:assumption (or (not x12474) (not x31790))
+:assumption (or (not x16328) x28194)
+:assumption (or (not x25301) (not x4660))
+:assumption (or x24372 (not x31862))
+:assumption (or x1109 (not x24316))
+:assumption (or (not x4098) (not x10444))
+:assumption (or (not x26427) x31218)
+:assumption (or (not x10846) x1880)
+:assumption (or x7225 x28627)
+:assumption (or (not x22367) (not x19428))
+:assumption (or x27059 x15801)
+:assumption (or x28666 (not x17199))
+:assumption (or x15192 x10472)
+:assumption (or x30615 (not x4926))
+:assumption (or (not x11915) x24480)
+:assumption (or (not x24173) (not x24109))
+:assumption (or x8371 (not x18483))
+:assumption (or x4749 (not x19864) (not x27174))
+:assumption (or (not x21044) (not x218) (not x9339))
+:assumption (or x10084 x4247 x25472 x28984)
+:assumption (or (not x27777) x21651)
+:assumption (or x19220 (not x13795) (not x6684))
+:assumption (or x31780 (not x2066))
+:assumption (or x5734 x26821)
+:assumption (or (not x16304) x27240 x15795 (not x12493))
+:assumption (or x25355 (not x11908))
+:assumption (or (not x17337) (not x5256) x27537)
+:assumption (or (not x10502) (not x5904))
+:assumption (or x27637 x18814)
+:assumption (or x30863 (not x1143))
+:assumption (or x20378 (not x30113))
+:assumption (or (not x14739) x7962)
+:assumption (or x185 x29888)
+:assumption (or (not x29543) x2800 (not x23244) x31103 x4408 (not x8985))
+:assumption (or x8644 x1194)
+:assumption (or (not x24954) (not x19059))
+:assumption (or x25357 x2333 x14616)
+:assumption (or x7704 (not x28356) (not x8602))
+:assumption (or x5730 (not x22328))
+:assumption (or (not x15797) (not x2612))
+:assumption (or (not x30182) x9160)
+:assumption (or (not x17959) (not x8602) x261)
+:assumption (or (not x10134) (not x19400))
+:assumption (or (not x9906) (not x26404))
+:assumption (or (not x831) (not x27118) x17747)
+:assumption (or (not x24059) x16793)
+:assumption (or x14963 x22563)
+:assumption (or (not x5890) x18869)
+:assumption (or x24820 (not x9925))
+:assumption (or (not x8602) (not x19256) (not x7381))
+:assumption (or (not x12728) (not x23717))
+:assumption (or (not x6225) (not x7095))
+:assumption (or x14203 (not x10311))
+:assumption (or x2422 (not x29858))
+:assumption (or (not x1955) (not x18697) x8310 (not x25709) x18263 x30744 x25450 (not x29036) (not x15688) x26435 x17568 x17861)
+:assumption (or (not x28826) (not x12913))
+:assumption (or x15126 x1284)
+:assumption (or (not x24714) (not x34) (not x11307))
+:assumption (or (not x1346) (not x12690))
+:assumption (or x21791 (not x28206))
+:assumption (or x15344 x23392)
+:assumption (or x27414 (not x2085))
+:assumption (or x9208 (not x6829))
+:assumption (or (not x28842) (not x23777))
+:assumption (or x31362 x653)
+:assumption (or x25981 x10004)
+:assumption (or (not x22700) x31716)
+:assumption (or (not x7200) x23622 x23154)
+:assumption (or (not x4413) (not x5206))
+:assumption (or x8120 (not x14578) (not x6722) (not x28032))
+:assumption (or x23886 x21000 x4504)
+:assumption (or (not x6969) (not x23533))
+:assumption (or (not x8407) x22813 (not x6305) (not x9397) (not x10993) (not x19369) (not x23426) x3924 (not x10997))
+:assumption (or x11637 x14644)
+:assumption (or (not x23466) (not x28252))
+:assumption (or x27865 x13888)
+:assumption (or (not x25315) x800)
+:assumption (or x25103 (not x11113))
+:assumption (or x5696 x30113 (not x20218))
+:assumption (or (not x3723) (not x808))
+:assumption (or (not x13956) x28023 x20962)
+:assumption (or (not x1110) (not x1449))
+:assumption (or (not x10926) x18069 x15486 x3494)
+:assumption (or (not x25399) x28529 (not x26781) x26121 (not x25229) x12573)
+:assumption (or x27435 x9025)
+:assumption (or (not x28620) x26385)
+:assumption (or x12588 x5578 x10105 x1885 (not x7191))
+:assumption (or x29954 x31784)
+:assumption (or (not x15649) (not x25589))
+:assumption (or (not x24433) x21825)
+:assumption (or (not x1922) x25783 (not x4541) (not x28600) x16791)
+:assumption (or (not x13022) x10935)
+:assumption (or (not x29649) (not x19536))
+:assumption (or (not x31155) (not x24486))
+:assumption (or (not x8250) x19790)
+:assumption (or x20627 x18768)
+:assumption (or x25370 x31259)
+:assumption (or x21196 (not x14324))
+:assumption (or (not x5843) (not x31490))
+:assumption (or (not x595) x7708)
+:assumption (or (not x11610) (not x17094) (not x8002))
+:assumption (or x19607 (not x12638))
+:assumption (or x28571 x23414)
+:assumption (or (not x28273) (not x15673))
+:assumption (or x2404 x18118)
+:assumption (or x22938 (not x17534))
+:assumption (or x14016 (not x17908))
+:assumption (or (not x13284) (not x2690))
+:assumption (or (not x5096) x30448 x29759 (not x23126) x21062)
+:assumption (or x22430 x27790)
+:assumption (or (not x30432) (not x8002) (not x13157) x31084)
+:assumption (or x1639 (not x26215))
+:assumption (or x18639 (not x24722))
+:assumption (or (not x17349) x28216)
+:assumption (or (not x20478) x26528)
+:assumption (or x16784 (not x13188) (not x22041))
+:assumption (or (not x24501) x30110 (not x11404))
+:assumption (or x22663 x7515)
+:assumption (or (not x9677) x15234)
+:assumption (or (not x8200) x27088)
+:assumption (or (not x25689) x5507)
+:assumption (or (not x27997) (not x22542))
+:assumption (or (not x16741) (not x6767) (not x1869))
+:assumption (or (not x25273) x26209)
+:assumption (or (not x8605) (not x21546))
+:assumption (or x14577 (not x19711))
+:assumption (or x29821 x3713)
+:assumption (or (not x26411) (not x10464))
+:assumption (or (not x21211) x5974)
+:assumption (or x24124 x21110)
+:assumption (or (not x16055) (not x14839))
+:assumption (or (not x28919) (not x8360))
+:assumption (or (not x27048) x15860)
+:assumption (or (not x2545) (not x9063))
+:assumption (or (not x25519) (not x29097))
+:assumption (or x10030 (not x1348) (not x11590))
+:assumption (or x2542 (not x20465) x9347 (not x18881))
+:assumption (or (not x1791) (not x20651))
+:assumption (or (not x3579) (not x31116))
+:assumption (or x31829 x20422 x9387 x28541)
+:assumption (or x25597 x6904)
+:assumption (or x6351 (not x23611) (not x20033))
+:assumption (or (not x115) x7293)
+:assumption (or (not x22789) x30113)
+:assumption (or x26628 x29545 (not x27537))
+:assumption (or x28893 (not x29497))
+:assumption (or x727 x14983)
+:assumption (or x4427 x6702)
+:assumption (or x29845 (not x29358))
+:assumption (or x10510 (not x21122) x6928 (not x724) (not x22785))
+:assumption (or x13123 x4239)
+:assumption (or (not x21893) (not x23981))
+:assumption (or (not x6520) x102)
+:assumption (or (not x26364) (not x23908))
+:assumption (or (not x11551) (not x16806))
+:assumption (or x14591 x13389)
+:assumption (or (not x28973) (not x25858) x6900)
+:assumption (or x2611 (not x28541) x31829 (not x7743))
+:assumption (or x14134 x25315 x13579)
+:assumption (or x9225 x10457)
+:assumption (or x29974 (not x28971))
+:assumption (or x29080 (not x20471))
+:assumption (or x15705 x11587)
+:assumption (or (not x6594) (not x5998))
+:assumption (or (not x28593) (not x17549))
+:assumption (or (not x15764) x6480)
+:assumption (or x9638 (not x25224) (not x15392) x23522 (not x18148) x7186)
+:assumption (or x14829 (not x27688))
+:assumption (or (not x4147) x6969 x29338)
+:assumption (or x20257 (not x26576))
+:assumption (or (not x27441) x2773)
+:assumption (or x23255 x2736)
+:assumption (or x29950 (not x19677))
+:assumption (or (not x16241) (not x37))
+:assumption (or x17021 x22446 (not x28751) (not x28619) x23799 (not x16926) (not x25496) x17001)
+:assumption (or (not x19910) (not x29477))
+:assumption (or x26736 (not x27521) x22740 x23854 (not x28731))
+:assumption (or x6470 x3964)
+:assumption (or x27868 x30683 (not x16741) x21217)
+:assumption (or x30892 x29808 x1595 x26369)
+:assumption (or (not x7116) (not x23130) (not x25180) x22359)
+:assumption (or (not x17747) x27809 x15612 x4984)
+:assumption (or x3547 (not x25423))
+:assumption (or x27271 (not x224))
+:assumption (or x1231 (not x29057) x6846 x8917)
+:assumption (or x6621 x142 x14227)
+:assumption (or x6468 x31350 x4818 x765)
+:assumption (or (not x28973) x16291)
+:assumption (or (not x3435) x15986)
+:assumption (or x14174 (not x17800))
+:assumption (or (not x6710) (not x28856))
+:assumption (or (not x4942) x19125)
+:assumption (or (not x22408) (not x19992))
+:assumption (or (not x19146) (not x13168))
+:assumption (or x10955 (not x7336))
+:assumption (or (not x29819) x1460)
+:assumption (or x5869 (not x18194))
+:assumption (or x14310 (not x3412))
+:assumption (or (not x6594) x17234 x14944)
+:assumption (or x12166 x21532)
+:assumption (or (not x923) x31090)
+:assumption (or (not x31926) x13594)
+:assumption (or x8534 x4567)
+:assumption (or x29670 x15043)
+:assumption (or x28015 (not x20073))
+:assumption (or x20653 x27872)
+:assumption (or x1818 (not x16257))
+:assumption (or x5205 (not x2692))
+:assumption (or (not x28699) x9289)
+:assumption (or x24186 x28128 x22837 (not x23903))
+:assumption (or x10388 x19396)
+:assumption (or x18945 (not x6469))
+:assumption (or (not x30767) x15233)
+:assumption (or x23244 (not x24472) (not x18578))
+:assumption (or (not x4733) (not x16786))
+:assumption (or (not x22541) x27450)
+:assumption (or (not x480) x8854 (not x6873))
+:assumption (or (not x23242) (not x14096))
+:assumption (or x865 x7843)
+:assumption (or x24638 (not x7144))
+:assumption (or x31694 x4869)
+:assumption (or x24449 x25860 x4595 (not x26245) x15811 x9148 x21769 (not x11304) (not x6186) (not x29733) x7231 (not x15644))
+:assumption (or x6775 (not x23144))
+:assumption (or (not x20476) x9575)
+:assumption (or (not x27813) (not x25854))
+:assumption (or x15607 x3798)
+:assumption (or (not x9008) (not x22344))
+:assumption (or (not x9847) x20560)
+:assumption (or (not x24102) x4866)
+:assumption (or (not x12750) (not x8602))
+:assumption (or x20880 (not x4516))
+:assumption (or (not x25155) (not x6395))
+:assumption (or (not x17666) (not x8711) x4132 (not x9881) (not x1542) x4929)
+:assumption (or (not x27162) x8505)
+:assumption (or (not x21188) (not x2429))
+:assumption (or (not x28233) x17571)
+:assumption (or (not x7402) (not x24097) (not x31092) (not x6559) (not x25977))
+:assumption (or x953 x1122)
+:assumption (or (not x21813) x27781)
+:assumption (or (not x20848) (not x8002))
+:assumption (or (not x6173) x2712)
+:assumption (or x17952 x6252)
+:assumption (or x5427 x7616)
+:assumption (or x13568 (not x12557))
+:assumption (or (not x6530) x11099 (not x24157) x24312)
+:assumption (or x29450 x17179)
+:assumption (or x18067 x5274 (not x24756))
+:assumption (or (not x8002) x22178)
+:assumption (or x5373 (not x12240))
+:assumption (or (not x25747) x29223)
+:assumption (or (not x5528) (not x22876) (not x7263) x10139 x16626 x29251)
+:assumption (or (not x29195) x7637)
+:assumption (or (not x1661) (not x13956))
+:assumption (or x578 x31628)
+:assumption (or x12968 x5528)
+:assumption (or x19214 x21903)
+:assumption (or x27668 (not x2721))
+:assumption (or x7510 (not x4614))
+:assumption (or (not x16375) x22625)
+:assumption (or x8042 x4886)
+:assumption (or (not x10944) (not x3001))
+:assumption (or x26670 x3511)
+:assumption (or (not x15659) x21814)
+:assumption (or x18573 (not x23525) x28770 (not x23061))
+:assumption (or x31841 x4826)
+:assumption (or (not x12707) (not x23036))
+:assumption (or (not x13702) x29472)
+:assumption (or x8992 x9687)
+:assumption (or (not x14403) (not x10097))
+:assumption (or x21724 (not x14346))
+:assumption (or x10106 (not x6073))
+:assumption (or x20019 x2179)
+:assumption (or (not x16304) x6076)
+:assumption (or x18839 (not x12515))
+:assumption (or (not x29782) x20398)
+:assumption (or (not x25944) x29679)
+:assumption (or x29959 x15475 x28387)
+:assumption (or x23244 x8465 x26047)
+:assumption (or x212 x6911)
+:assumption (or (not x3732) x14471)
+:assumption (or x31236 x30464)
+:assumption (or (not x9405) x13956)
+:assumption (or x20236 x8439)
+:assumption (or x12721 (not x5305))
+:assumption (or x2022 x12485)
+:assumption (or (not x13914) (not x17033))
+:assumption (or (not x13724) (not x19101))
+:assumption (or x14310 x17875 (not x9575))
+:assumption (or (not x28570) (not x3169))
+:assumption (or x24018 (not x9416))
+:assumption (or x1697 (not x26017))
+:assumption (or (not x6355) x13980)
+:assumption (or (not x28059) (not x22078))
+:assumption (or (not x9492) (not x13487) x24197)
+:assumption (or x28338 x10684)
+:assumption (or x28708 (not x31069))
+:assumption (or (not x27238) (not x25673))
+:assumption (or x30564 (not x21669))
+:assumption (or x4709 (not x11173))
+:assumption (or (not x27227) x4626)
+:assumption (or (not x2452) (not x31492))
+:assumption (or x3206 (not x3053))
+:assumption (or (not x21108) (not x26648))
+:assumption (or (not x17381) (not x13532) x3501 x10351)
+:assumption (or (not x9805) x6012)
+:assumption (or x19373 (not x10587))
+:assumption (or x28349 x3168 (not x15977) (not x9304))
+:assumption (or x10670 x26567)
+:assumption (or (not x11620) x18073)
+:assumption (or (not x13703) x24761)
+:assumption (or x762 x19232)
+:assumption (or (not x11267) x5981)
+:assumption (or x12743 x20060)
+:assumption (or x11308 x7443)
+:assumption (or x24398 x19800 x17706)
+:assumption (or x20837 (not x6402) (not x3435))
+:assumption (or (not x30751) (not x19423) x29442)
+:assumption (or x1809 (not x29767) (not x21633) (not x25277))
+:assumption (or (not x16510) (not x23512) (not x31269) (not x14810) (not x21815) x30138 x19864)
+:assumption (or x6396 x14358)
+:assumption (or x20022 x23352)
+:assumption (or (not x21346) x1755 x23244)
+:assumption (or x20882 (not x9787))
+:assumption (or (not x11974) (not x1860))
+:assumption (or (not x3297) (not x14987))
+:assumption (or (not x17164) x26126 x22855 (not x23980) (not x142))
+:assumption (or x702 x24460)
+:assumption (or x30369 (not x9479))
+:assumption (or x16910 x13111 (not x25036))
+:assumption (or (not x25087) (not x697))
+:assumption (or x5502 x2526)
+:assumption (or (not x23557) (not x26005))
+:assumption (or x15896 (not x17380))
+:assumption (or x3833 (not x5460))
+:assumption (or x30434 x9705)
+:assumption (or x25398 (not x3735))
+:assumption (or (not x16501) (not x5319))
+:assumption (or x20937 x1600)
+:assumption (or (not x12953) (not x5124))
+:assumption (or x22730 (not x19202))
+:assumption (or x15109 (not x1837))
+:assumption (or x14819 (not x26436))
+:assumption (or (not x14117) x1334)
+:assumption (or (not x23244) x20122 (not x24756))
+:assumption (or (not x14681) x22813)
+:assumption (or (not x27589) x6918)
+:assumption (or x167 x30309)
+:assumption (or (not x6424) (not x13736))
+:assumption (or (not x25315) x2701 x29377)
+:assumption (or (not x27609) x4914 (not x29649))
+:assumption (or x5762 (not x6437))
+:assumption (or (not x8566) (not x4291))
+:assumption (or x2424 (not x18417))
+:assumption (or (not x23793) x29263)
+:assumption (or (not x4335) (not x329))
+:assumption (or x16550 (not x16587))
+:assumption (or x30817 x6050)
+:assumption (or x31344 x11595)
+:assumption (or x15745 (not x11234))
+:assumption (or x5389 (not x22474))
+:assumption (or x7104 x8961 (not x22082))
+:assumption (or (not x18072) x11268)
+:assumption (or x30150 (not x16115))
+:assumption (or x1908 x2510 (not x20181) x18950 (not x20489) x12199)
+:assumption (or (not x5131) x13493 x21126 (not x9741) x3229 (not x20096) (not x20754) x20817 x23012 x14721)
+:assumption (or x27725 (not x24132))
+:assumption (or (not x23704) (not x31663))
+:assumption (or (not x15298) x2813)
+:assumption (or x3273 x25282)
+:assumption (or x17830 x13023 x23149 x20377)
+:assumption (or x24044 x3798)
+:assumption (or (not x20949) x8448)
+:assumption (or x9008 (not x15425) x4286)
+:assumption (or x28142 x8387)
+:assumption (or x27951 x28314)
+:assumption (or x3479 (not x27342))
+:assumption (or x9258 x4293)
+:assumption (or (not x27991) (not x30598))
+:assumption (or x7162 x6661)
+:assumption (or (not x16297) x587)
+:assumption (or (not x3632) (not x116))
+:assumption (or (not x26897) x16009 x17088)
+:assumption (or x20486 x28615)
+:assumption (or x12442 x28530)
+:assumption (or x12843 x4482 (not x8490) (not x18681) x9008 (not x20595))
+:assumption (or x545 x18330)
+:assumption (or x28227 x19193)
+:assumption (or (not x17297) (not x21298) x267 x30435)
+:assumption (or (not x26829) (not x22518) (not x12871))
+:assumption (or (not x13334) x18457)
+:assumption (or x14839 (not x12611) x17095)
+:assumption (or (not x20301) (not x21298) (not x5538) x5300)
+:assumption (or x15817 x21696)
+:assumption (or (not x24960) x19711)
+:assumption (or (not x16296) (not x13988))
+:assumption (or x10932 x5948)
+:assumption (or (not x6861) x27500)
+:assumption (or x9439 (not x28774))
+:assumption (or (not x19301) x4865)
+:assumption (or x10075 x24897)
+:assumption (or (not x24902) (not x23462))
+:assumption (or (not x27707) x23858)
+:assumption (or (not x2540) (not x11958))
+:assumption (or x24673 x8454)
+:assumption (or (not x30969) x8414)
+:assumption (or x9531 (not x23411))
+:assumption (or (not x4909) (not x28963))
+:assumption (or x12462 x4135)
+:assumption (or x1703 x9125 (not x5028))
+:assumption (or x30399 x22885)
+:assumption (or x20771 (not x21438))
+:assumption (or (not x4369) (not x9201))
+:assumption (or x13956 (not x30157) x16654)
+:assumption (or x31829 x14872)
+:assumption (or x2337 x27589)
+:assumption (or x19302 (not x8002) x14517 (not x80))
+:assumption (or (not x29994) (not x15014))
+:assumption (or x2310 (not x21815))
+:assumption (or (not x22999) (not x11430) x17903 (not x9756) (not x24589))
+:assumption (or (not x28890) x14183 (not x30869) x27863 x22128 (not x9782))
+:assumption (or (not x1502) (not x26658))
+:assumption (or (not x22165) (not x11012))
+:assumption (or x14814 x3475)
+:assumption (or x25911 (not x11669))
+:assumption (or x2200 x17571 x16784)
+:assumption (or x6872 x4543)
+:assumption (or (not x17012) x30480)
+:assumption (or x5443 x20842)
+:assumption (or x29959 (not x13570) (not x28512) x6594)
+:assumption (or x1393 (not x4566) (not x25031) x2432 x25133 x13936 x16504 (not x18486))
+:assumption (or (not x13053) x14730)
+:assumption (or (not x7344) x13956)
+:assumption (or (not x20591) x7156 (not x13131) x25376)
+:assumption (or x17095 x23634)
+:assumption (or (not x11040) (not x21401))
+:assumption (or (not x5485) x17422)
+:assumption (or x13622 x6001)
+:assumption (or x5535 (not x19306) x330 x8919 (not x21377) x19472)
+:assumption (or (not x20904) (not x18399))
+:assumption (or x7788 (not x5112))
+:assumption (or (not x19428) x30615 x24172)
+:assumption (or x18829 x15193)
+:assumption (or (not x16714) x30557)
+:assumption (or (not x25989) x1747)
+:assumption (or (not x5965) x30693)
+:assumption (or x29505 x29772)
+:assumption (or x21406 x10024 (not x3468) (not x25542) (not x658) x25421)
+:assumption (or x15012 x12058 x29664 (not x13689))
+:assumption (or x24870 (not x1029))
+:assumption (or x15571 (not x29435))
+:assumption (or (not x20211) (not x21291))
+:assumption (or x14581 (not x28973))
+:assumption (or x8602 (not x16425) x10437)
+:assumption (or (not x923) x15239 x17359)
+:assumption (or x4391 x13200)
+:assumption (or x16010 (not x28912))
+:assumption (or x8461 (not x6406) (not x20482))
+:assumption (or (not x21121) (not x1650))
+:assumption (or x5003 (not x4262))
+:assumption (or (not x8265) (not x19715))
+:assumption (or x2943 (not x16700))
+:assumption (or (not x6991) x18028)
+:assumption (or (not x13576) (not x21258))
+:assumption (or (not x23348) x11660 (not x8942) (not x19253) x12836)
+:assumption (or (not x15866) (not x10115) x2724 x9676 x10882 x7910 (not x8727))
+:assumption (or x27034 (not x8305))
+:assumption (or (not x12089) (not x31902))
+:assumption (or x22062 x8911)
+:assumption (or x4230 x21861)
+:assumption (or (not x29880) x19231)
+:assumption (or (not x5363) x4997)
+:assumption (or x218 x30458)
+:assumption (or x29431 (not x18928) (not x28108) x918 x13240)
+:assumption (or (not x26391) x16832)
+:assumption (or (not x22423) x5733)
+:assumption (or (not x29606) x6257)
+:assumption (or (not x14478) (not x21815) x14579)
+:assumption (or (not x20060) x28999 (not x30267))
+:assumption (or x22079 x17651)
+:assumption (or (not x23262) x31903)
+:assumption (or (not x2704) (not x11157))
+:assumption (or x9008 x21318)
+:assumption (or x5028 (not x23036))
+:assumption (or x964 x26670 x20570 x19193)
+:assumption (or x25022 x17342)
+:assumption (or (not x27398) (not x18636))
+:assumption (or x31834 (not x5635))
+:assumption (or (not x24126) x13971 x30624 x1362 (not x30135) x9008)
+:assumption (or x21653 (not x26115))
+:assumption (or (not x788) x22478)
+:assumption (or (not x15634) x13494)
+:assumption (or (not x918) x3164 (not x9025))
+:assumption (or x9455 x1409)
+:assumption (or x19969 (not x27462))
+:assumption (or (not x31076) x14051)
+:assumption (or (not x9008) (not x28742))
+:assumption (or (not x18695) (not x7662))
+:assumption (or x8547 x29606)
+:assumption (or x5748 x23244)
+:assumption (or (not x102) x31376 x6520)
+:assumption (or x9044 x6105 x25801)
+:assumption (or x8763 x24986)
+:assumption (or x29817 (not x3214))
+:assumption (or x5406 x23645)
+:assumption (or (not x2966) x15901)
+:assumption (or (not x15247) x16676)
+:assumption (or x10171 x7126)
+:assumption (or (not x15292) (not x9087))
+:assumption (or x23992 (not x27864))
+:assumption (or x11461 x20129)
+:assumption (or (not x4668) x27826)
+:assumption (or (not x12367) (not x14323) (not x5059) x10099)
+:assumption (or (not x31721) (not x5703))
+:assumption (or (not x13724) (not x16025) x21856)
+:assumption (or x27524 x13183)
+:assumption (or x28961 (not x28047))
+:assumption (or x8549 x26859 x4992)
+:assumption (or (not x154) (not x31048))
+:assumption (or (not x21010) x25334)
+:assumption (or (not x29222) (not x14275))
+:assumption (or x20819 x28461)
+:assumption (or (not x4190) x7976)
+:assumption (or x25364 x30099)
+:assumption (or x22228 (not x5646))
+:assumption (or (not x15975) (not x16910) x21831)
+:assumption (or (not x23244) x10022)
+:assumption (or (not x22996) x9531)
+:assumption (or (not x4317) x14684)
+:assumption (or (not x3521) (not x6609))
+:assumption (or (not x20929) (not x2376) (not x27000))
+:assumption (or (not x15398) x22759)
+:assumption (or (not x23328) (not x680))
+:assumption (or x24402 (not x747))
+:assumption (or (not x5041) (not x14132) (not x23231))
+:assumption (or x13382 x8080 (not x1861))
+:assumption (or x8979 x22196)
+:assumption (or x5340 x10325)
+:assumption (or (not x19318) (not x26975) (not x28219) x22513 x4 x15051 (not x16243) x13591 x4450)
+:assumption (or x2926 x22392)
+:assumption (or x24756 x8628 (not x26082))
+:assumption (or x24913 x15683)
+:assumption (or (not x25494) x28754)
+:assumption (or (not x20921) (not x16721))
+:assumption (or (not x13840) x17498 x23010 x17869 x31782 x11917)
+:assumption (or (not x25686) (not x30229))
+:assumption (or x10673 (not x7831))
+:assumption (or x3944 (not x12800))
+:assumption (or x14091 x29072 (not x24990) x16466 x14041 x5654 (not x29812) x20539 (not x9934) x4604)
+:assumption (or x11852 x8532)
+:assumption (or x316 x20022)
+:assumption (or (not x17309) x14435)
+:assumption (or x8081 x14786)
+:assumption (or (not x16589) x22855)
+:assumption (or x20492 (not x16942))
+:assumption (or x9375 x25306)
+:assumption (or x11722 x14480)
+:assumption (or x8963 (not x6598))
+:assumption (or x6979 (not x2447))
+:assumption (or x19878 (not x806))
+:assumption (or x8002 x26738)
+:assumption (or x9813 x23918)
+:assumption (or (not x4159) x7537)
+:assumption (or (not x1134) x30075 x3550 (not x24715))
+:assumption (or (not x12384) (not x11747))
+:assumption (or x24835 (not x3494))
+:assumption (or x28708 x7477 (not x17702))
+:assumption (or x23716 (not x24741))
+:assumption (or (not x3115) (not x16745))
+:assumption (or (not x15822) (not x2638))
+:assumption (or x25849 (not x1498))
+:assumption (or x10982 (not x18988))
+:assumption (or x15630 x13216 (not x19103) (not x23958) (not x13410) x26921 (not x11831) x1733 x9875)
+:assumption (or (not x4047) x317)
+:assumption (or x18331 (not x21876))
+:assumption (or (not x17083) x19285)
+:assumption (or x3326 x16998 (not x15783) (not x24230) (not x2375))
+:assumption (or x640 (not x23569))
+:assumption (or x14610 (not x1547))
+:assumption (or x11602 x26354 x7406)
+:assumption (or x3435 x12019)
+:assumption (or x2280 x1295)
+:assumption (or (not x7626) (not x12437))
+:assumption (or x31565 (not x19758))
+:assumption (or x22396 (not x8036))
+:assumption (or (not x12007) (not x19992))
+:assumption (or x19428 x30954 x23548 x29630)
+:assumption (or x23317 (not x17148))
+:assumption (or x20409 (not x9181) x11899 (not x9910))
+:assumption (or (not x7278) x22321)
+:assumption (or x15007 (not x572) x17225)
+:assumption (or x28731 (not x12720))
+:assumption (or (not x15990) x3453 (not x23796) x26498 (not x7210))
+:assumption (or (not x13487) (not x23396))
+:assumption (or (not x3287) x9008)
+:assumption (or x2350 (not x14668))
+:assumption (or (not x3979) (not x10864))
+:assumption (or x14832 (not x4158))
+:assumption (or (not x14373) (not x30101))
+:assumption (or x16029 x8191)
+:assumption (or x1730 (not x11284))
+:assumption (or x15975 (not x21831))
+:assumption (or x15081 x30375)
+:assumption (or (not x11245) (not x1595))
+:assumption (or x26383 x27093)
+:assumption (or (not x9982) (not x14073))
+:assumption (or x20344 (not x31776))
+:assumption (or (not x2514) (not x23215))
+:assumption (or (not x4170) x28620 (not x11581) (not x12296) (not x16242))
+:assumption (or (not x23816) x29973)
+:assumption (or x20303 x1900)
+:assumption (or (not x6047) x23687)
+:assumption (or (not x28145) (not x15869))
+:assumption (or (not x14789) x229)
+:assumption (or x7286 x31127 (not x6750) x22706 x4576)
+:assumption (or (not x25621) (not x26432))
+:assumption (or (not x14591) (not x2169))
+:assumption (or x7762 (not x20796))
+:assumption (or (not x18348) (not x19621))
+:assumption (or x28718 (not x30959))
+:assumption (or (not x26387) x27281)
+:assumption (or (not x11876) (not x5669))
+:assumption (or x20165 (not x21609))
+:assumption (or x10730 (not x16320) x28209 (not x11399) x14510 (not x21568))
+:assumption (or x27296 x20237)
+:assumption (or x9679 x29883)
+:assumption (or (not x11573) x13860)
+:assumption (or (not x4892) (not x23244))
+:assumption (or x23124 (not x30473) x11274)
+:assumption (or x2882 (not x14036))
+:assumption (or (not x6422) x5261)
+:assumption (or (not x26830) x26706)
+:assumption (or x12702 x21653)
+:assumption (or (not x31198) x31474)
+:assumption (or (not x23244) (not x20522))
+:assumption (or (not x22469) x22867)
+:assumption (or (not x10923) (not x2386))
+:assumption (or (not x25124) x31829 (not x28541))
+:assumption (or (not x15344) (not x23392))
+:assumption (or x20803 x30416)
+:assumption (or (not x3535) (not x29070))
+:assumption (or x6 (not x25024))
+:assumption (or (not x1582) (not x3688) (not x28973))
+:assumption (or x13040 x17567 x30698)
+:assumption (or x24406 x15352)
+:assumption (or x7064 (not x27774))
+:assumption (or (not x369) (not x26515))
+:assumption (or (not x18337) x26670 x3235)
+:assumption (or (not x13254) (not x23502))
+:assumption (or (not x24399) x31547)
+:assumption (or x24199 (not x29))
+:assumption (or x6906 x19130)
+:assumption (or (not x13606) x2504)
+:assumption (or x11086 x17705)
+:assumption (or x1920 x724)
+:assumption (or x18410 x13553)
+:assumption (or x28215 x18503)
+:assumption (or (not x31925) (not x9672))
+:assumption (or x17914 x3455)
+:assumption (or x27922 x31774)
+:assumption (or (not x31493) (not x22481))
+:assumption (or x4508 x7421)
+:assumption (or (not x30744) (not x17861))
+:assumption (or x25463 (not x31605))
+:assumption (or x28996 (not x679))
+:assumption (or x31795 x16809)
+:assumption (or (not x10836) x17225 x21983 x18450)
+:assumption (or (not x21575) (not x9008))
+:assumption (or (not x26779) x7069)
+:assumption (or (not x25594) (not x19183) (not x12088) (not x31231) (not x8885) (not x22334) (not x8482))
+:assumption (or x21324 (not x24757))
+:assumption (or x9942 (not x22645))
+:assumption (or (not x2132) (not x11710))
+:assumption (or (not x16474) x30663)
+:assumption (or (not x29074) x2519)
+:assumption (or x3252 (not x3861))
+:assumption (or x26851 x1188)
+:assumption (or x26656 x18809)
+:assumption (or x14355 (not x14934) (not x6097))
+:assumption (or (not x23810) (not x25003))
+:assumption (or (not x9921) x18897)
+:assumption (or (not x3814) (not x13364))
+:assumption (or (not x6307) (not x988))
+:assumption (or (not x30424) (not x1816))
+:assumption (or (not x11456) x11412)
+:assumption (or x2501 (not x19049))
+:assumption (or (not x12651) (not x20173))
+:assumption (or (not x21891) x14524)
+:assumption (or x28312 (not x25366))
+:assumption (or x13769 (not x28607))
+:assumption (or x8083 (not x8045))
+:assumption (or (not x18331) x5205)
+:assumption (or (not x6343) x17002)
+:assumption (or (not x690) x30608)
+:assumption (or (not x25832) (not x16))
+:assumption (or x9381 x10452)
+:assumption (or (not x10840) (not x17988))
+:assumption (or x28294 x19608)
+:assumption (or x9355 (not x4461))
+:assumption (or (not x26625) (not x8608))
+:assumption (or x6911 (not x7155) x232 (not x2889))
+:assumption (or x6307 (not x17398))
+:assumption (or x19653 (not x6647))
+:assumption (or x30978 (not x15784) x27589 (not x19774))
+:assumption (or x17858 (not x1580))
+:assumption (or x3590 (not x29687))
+:assumption (or x22794 (not x23137))
+:assumption (or x20291 x8002 x21334 x23244 x13956 (not x22295))
+:assumption (or x12669 x9526)
+:assumption (or (not x25416) (not x28029))
+:assumption (or (not x24661) x23358)
+:assumption (or x20885 (not x2943) (not x27523))
+:assumption (or x21471 x17602)
+:assumption (or x27331 (not x5561))
+:assumption (or x23863 x31589)
+:assumption (or (not x11901) x17728 (not x16025))
+:assumption (or (not x13576) x12861)
+:assumption (or x6907 (not x3368))
+:assumption (or x7260 x19879)
+:assumption (or x6149 (not x5672) x18643)
+:assumption (or x22512 (not x18328))
+:assumption (or x4263 x964)
+:assumption (or x12647 (not x20076))
+:assumption (or x10089 (not x10258) (not x28692) x14013)
+:assumption (or (not x8002) (not x21697))
+:assumption (or x6950 x8564)
+:assumption (or x28932 (not x6571))
+:assumption (or (not x22524) (not x10508))
+:assumption (or (not x24997) x13240)
+:assumption (or x6329 (not x19948) x29197 x21967 x18814)
+:assumption (or x26511 (not x10698))
+:assumption (or (not x3753) (not x28377))
+:assumption (or (not x16477) (not x763))
+:assumption (or x21278 (not x8947))
+:assumption (or (not x28484) (not x29771))
+:assumption (or x2494 (not x8733))
+:assumption (or x11882 (not x2741))
+:assumption (or x23762 x5173)
+:assumption (or (not x22327) (not x14594))
+:assumption (or (not x23010) x467)
+:assumption (or x1230 (not x26263) (not x14784) (not x19297) x21424 x11777 x12067 (not x7675))
+:assumption (or (not x28179) x245)
+:assumption (or (not x19785) (not x10050))
+:assumption (or x25384 (not x4337) x23306 (not x18427))
+:assumption (or x11382 x3513)
+:assumption (or x162 x29814)
+:assumption (or x18406 (not x3105) x20128 (not x3436) x9385)
+:assumption (or x11096 x31849)
+:assumption (or x1479 (not x12473) (not x15917))
+:assumption (or (not x2498) x30594)
+:assumption (or (not x20587) x28838)
+:assumption (or x12250 x4798)
+:assumption (or (not x6615) x21707)
+:assumption (or (not x20290) x10406)
+:assumption (or (not x1579) x9068)
+:assumption (or x19671 (not x18489))
+:assumption (or (not x16493) x15215)
+:assumption (or x3116 x11528)
+:assumption (or (not x15371) x13956)
+:assumption (or x31879 x948)
+:assumption (or x27526 x7987)
+:assumption (or x21305 x19428)
+:assumption (or x1254 (not x11799))
+:assumption (or (not x15876) (not x2108))
+:assumption (or x13576 (not x11429))
+:assumption (or (not x23569) x25570)
+:assumption (or x27371 x14781)
+:assumption (or x8944 (not x18334) x27780 x17783)
+:assumption (or (not x24478) x9008 x5412)
+:assumption (or x9025 (not x7338))
+:assumption (or (not x1624) x25366)
+:assumption (or x14866 (not x31797))
+:assumption (or x15261 (not x6020))
+:assumption (or (not x23279) x31810)
+:assumption (or x13956 (not x5395) x8002 x23244 (not x27941) (not x28023))
+:assumption (or x21619 x1297)
+:assumption (or x15102 x11965 x13956)
+:assumption (or x17761 (not x2836))
+:assumption (or (not x17680) x2825)
+:assumption (or (not x24545) (not x21815))
+:assumption (or (not x5832) (not x11028))
+:assumption (or (not x8449) (not x5021))
+:assumption (or x5176 x15505)
+:assumption (or (not x31781) x2138)
+:assumption (or (not x2578) (not x4787))
+:assumption (or x17609 (not x14449) (not x31116) (not x30846) (not x13871) x30129)
+:assumption (or (not x7184) (not x18720))
+:assumption (or x9405 x11297)
+:assumption (or (not x20538) x7469)
+:assumption (or (not x12899) x28334)
+:assumption (or x31768 (not x13576))
+:assumption (or x15593 x24465)
+:assumption (or x11491 x996)
+:assumption (or (not x2975) (not x10076))
+:assumption (or (not x6609) x25515)
+:assumption (or (not x21406) x3468)
+:assumption (or (not x29044) (not x31816))
+:assumption (or x31829 x11343 x28541 x31818)
+:assumption (or (not x20596) x6121)
+:assumption (or x15285 (not x14800))
+:assumption (or (not x7982) x14663)
+:assumption (or x20925 (not x1983))
+:assumption (or (not x30552) (not x169))
+:assumption (or (not x28639) x6295)
+:assumption (or (not x21592) x11056)
+:assumption (or (not x28255) x8629)
+:assumption (or (not x30592) (not x9008))
+:assumption (or (not x25842) (not x30957))
+:assumption (or (not x3174) x12426)
+:assumption (or (not x499) (not x29182))
+:assumption (or (not x9306) (not x30888))
+:assumption (or x24150 (not x25861) x13132 (not x15445))
+:assumption (or (not x1055) (not x510))
+:assumption (or (not x26154) (not x23806))
+:assumption (or x7301 x4580 x21451 (not x5103) x6436 (not x17701) (not x5346))
+:assumption (or (not x21298) x22404 x9564)
+:assumption (or (not x20482) (not x25916))
+:assumption (or x17279 (not x8217))
+:assumption (or (not x10123) (not x5931))
+:assumption (or (not x23118) (not x4162))
+:assumption (or (not x6190) (not x31916) (not x16744))
+:assumption (or x27092 (not x15097))
+:assumption (or x11796 (not x31160))
+:assumption (or x3421 x3417)
+:assumption (or x27011 (not x11677))
+:assumption (or (not x12449) x126)
+:assumption (or (not x14123) x15597)
+:assumption (or (not x30716) (not x30976))
+:assumption (or x18583 (not x20383))
+:assumption (or x16995 x8764)
+:assumption (or x30586 x30219)
+:assumption (or x11566 (not x24470))
+:assumption (or x31541 (not x20827))
+:assumption (or (not x1729) (not x30637))
+:assumption (or (not x8586) (not x29516))
+:assumption (or x884 (not x25224))
+:assumption (or x20232 (not x17746))
+:assumption (or x19111 x28975)
+:assumption (or (not x28097) x25088)
+:assumption (or (not x1539) x10890)
+:assumption (or (not x30009) x24561)
+:assumption (or (not x17783) x22986)
+:assumption (or x25001 (not x3424))
+:assumption (or x27817 (not x28833))
+:assumption (or x24722 (not x23225))
+:assumption (or x4915 (not x27253))
+:assumption (or x3116 (not x1140))
+:assumption (or x22637 x14558)
+:assumption (or x9364 x21345)
+:assumption (or x31351 x13165)
+:assumption (or (not x4682) (not x26551))
+:assumption (or (not x10298) x1611)
+:assumption (or (not x24814) x3269)
+:assumption (or x6042 (not x22551))
+:assumption (or (not x14167) x29421)
+:assumption (or (not x7208) (not x20721))
+:assumption (or (not x15164) (not x17574))
+:assumption (or x16474 x28452)
+:assumption (or x16721 x24743 x19901)
+:assumption (or x27741 x26505)
+:assumption (or x9594 (not x8956))
+:assumption (or x26836 (not x27901))
+:assumption (or x18293 x3896)
+:assumption (or (not x29169) x20344)
+:assumption (or (not x8531) (not x7895))
+:assumption (or (not x22198) (not x2636))
+:assumption (or (not x18536) (not x402) x21026)
+:assumption (or x6097 (not x8998) (not x26695))
+:assumption (or (not x8010) x22006 x6728 (not x1974))
+:assumption (or x12857 (not x28359))
+:assumption (or (not x19480) x9338)
+:assumption (or x619 (not x6758))
+:assumption (or (not x7584) (not x14572))
+:assumption (or (not x4316) (not x26099))
+:assumption (or (not x8597) x3903)
+:assumption (or x25111 x5910 (not x15885))
+:assumption (or x3224 x21901 (not x6338))
+:assumption (or (not x918) (not x31833) x20550 x25659 x805)
+:assumption (or (not x5587) (not x23330))
+:assumption (or x9008 (not x31839))
+:assumption (or (not x22136) x1156 x11857 (not x8468))
+:assumption (or x15293 x25136)
+:assumption (or (not x4809) x19953)
+:assumption (or (not x20416) (not x28533))
+:assumption (or x11837 (not x7262))
+:assumption (or x14888 x8835)
+:assumption (or x3245 (not x3420))
+:assumption (or (not x19661) (not x29649) (not x3309) (not x20909) (not x13721))
+:assumption (or x30615 x15962 x8296)
+:assumption (or (not x15577) (not x30310))
+:assumption (or x1738 x12387)
+:assumption (or (not x15503) x9159)
+:assumption (or (not x9592) x14138 (not x28160) x18195 x17640)
+:assumption (or (not x8672) x16617)
+:assumption (or x22916 (not x21674))
+:assumption (or (not x7975) x25716)
+:assumption (or x6713 (not x22360))
+:assumption (or x21690 x8588 (not x9185))
+:assumption (or x6405 (not x4349) (not x218))
+:assumption (or x17874 x18965)
+:assumption (or x21693 x23359 (not x29312))
+:assumption (or (not x10910) (not x16686))
+:assumption (or (not x9008) (not x19518))
+:assumption (or (not x3928) (not x9932))
+:assumption (or x29392 (not x30411))
+:assumption (or (not x7257) x28135)
+:assumption (or (not x27111) (not x3227))
+:assumption (or x27982 x20024 x18857 x23472 (not x3513))
+:assumption (or (not x3176) (not x22824) (not x14053) x12260 x6019)
+:assumption (or (not x5800) x30750)
+:assumption (or x22798 x11032)
+:assumption (or x7261 (not x11674))
+:assumption (or (not x10240) (not x26819))
+:assumption (or (not x17786) (not x13606))
+:assumption (or x22290 (not x21298) x2261)
+:assumption (or (not x23089) x12079 (not x28973))
+:assumption (or (not x12547) (not x12156))
+:assumption (or (not x20205) (not x3539) x19422 (not x20533) (not x25902))
+:assumption (or x702 (not x11281))
+:assumption (or (not x9280) x401)
+:assumption (or (not x11052) x8332)
+:assumption (or x15703 (not x8461) x16910)
+:assumption (or x26299 x21815)
+:assumption (or x30337 x28885)
+:assumption (or (not x25659) x19924)
+:assumption (or (not x9604) x20938)
+:assumption (or (not x2409) (not x658))
+:assumption (or (not x27383) (not x24182))
+:assumption (or x15545 x31439)
+:assumption (or x2943 (not x21163) x29275)
+:assumption (or x25683 x1166 x9008 (not x17074) (not x29975) (not x27347))
+:assumption (or x9025 x24255)
+:assumption (or x1875 x18556)
+:assumption (or (not x21863) (not x6606))
+:assumption (or (not x31662) x31571)
+:assumption (or (not x10219) (not x12381))
+:assumption (or (not x11210) x3385)
+:assumption (or (not x13155) (not x12299))
+:assumption (or (not x9370) x17436)
+:assumption (or x16109 x5209)
+:assumption (or (not x7421) x9254 (not x21820) x26809 x22375 (not x6133))
+:assumption (or (not x21815) x25648 (not x25049))
+:assumption (or (not x25737) x10629 x1393)
+:assumption (or (not x7164) (not x9154) x1137 (not x6780) x27023 x21389)
+:assumption (or (not x21317) x12037 (not x19754) (not x3464) (not x3009))
+:assumption (or x27733 x20954)
+:assumption (or (not x14162) x26686)
+:assumption (or (not x15422) (not x28883))
+:assumption (or (not x14647) (not x7938) (not x6969))
+:assumption (or (not x23244) x17546)
+:assumption (or (not x27893) (not x21145))
+:assumption (or (not x26410) x1554)
+:assumption (or (not x31134) (not x25712) x29606)
+:assumption (or x21388 x3617)
+:assumption (or x30577 (not x17051))
+:assumption (or x6443 x6724)
+:assumption (or (not x30049) x22796)
+:assumption (or (not x923) (not x8636))
+:assumption (or (not x18336) (not x15228))
+:assumption (or x21626 x4945)
+:assumption (or x1657 (not x1397) (not x6661) (not x4366))
+:assumption (or x25247 x439)
+:assumption (or (not x21658) x28703 x26669 x24728 (not x27149) (not x28459) x31691 (not x27301))
+:assumption (or x24207 (not x1022))
+:assumption (or (not x11847) (not x11215))
+:assumption (or x31017 (not x21653))
+:assumption (or x31039 x20723 (not x1957) x21298)
+:assumption (or x16562 x15092)
+:assumption (or (not x7100) (not x10343))
+:assumption (or x23605 (not x114))
+:assumption (or (not x17844) (not x19317))
+:assumption (or (not x3754) x9756)
+:assumption (or x19136 x3693)
+:assumption (or x11656 x29102)
+:assumption (or x274 (not x15102))
+:assumption (or x15656 (not x9697))
+:assumption (or (not x6535) x14435)
+:assumption (or (not x26578) x6726)
+:assumption (or (not x18519) (not x28078))
+:assumption (or (not x19260) (not x26007))
+:assumption (or x20108 x13747)
+:assumption (or (not x23900) x16049)
+:assumption (or (not x21298) x19376 (not x11445))
+:assumption (or (not x16616) (not x23364))
+:assumption (or (not x14021) (not x16513) (not x964) (not x21630) x8714 (not x169))
+:assumption (or (not x13443) (not x29557))
+:assumption (or (not x6890) x12674)
+:assumption (or x18772 x31334)
+:assumption (or x16604 (not x12618) x8917)
+:assumption (or (not x19382) x13801)
+:assumption (or (not x8546) (not x24015))
+:assumption (or x20016 x5671)
+:assumption (or x27951 (not x1595))
+:assumption (or (not x30633) x18540)
+:assumption (or (not x17375) x9761)
+:assumption (or (not x3297) x14410)
+:assumption (or x23082 x16039)
+:assumption (or (not x27082) (not x18577))
+:assumption (or x2935 (not x10396))
+:assumption (or (not x28849) (not x19568))
+:assumption (or (not x11976) (not x27602))
+:assumption (or x29760 (not x5263))
+:assumption (or x8002 x23244 x6089 x3984)
+:assumption (or (not x28206) (not x6061))
+:assumption (or (not x18197) x17954)
+:assumption (or (not x11655) x7921)
+:assumption (or (not x12994) (not x15910))
+:assumption (or x20808 x15778)
+:assumption (or x22963 x19094)
+:assumption (or (not x471) x5718)
+:assumption (or x23286 (not x26042))
+:assumption (or x19864 (not x9578) (not x18003))
+:assumption (or x23455 (not x24896))
+:assumption (or (not x28496) x15766)
+:assumption (or x8871 (not x1490))
+:assumption (or x24269 (not x21327))
+:assumption (or x30068 (not x548))
+:assumption (or x30749 (not x17620) (not x13956))
+:assumption (or (not x14412) (not x20883))
+:assumption (or (not x2461) x10039)
+:assumption (or x343 x28912 x24906 (not x29649))
+:assumption (or x6553 (not x31892))
+:assumption (or x16347 x20060 (not x15366))
+:assumption (or (not x796) (not x28128))
+:assumption (or x9704 (not x19835))
+:assumption (or (not x31267) x22579)
+:assumption (or (not x1558) (not x31374))
+:assumption (or x5482 x27958)
+:assumption (or x10200 (not x5275) x31927 x918)
+:assumption (or x13175 (not x22064))
+:assumption (or (not x23399) x24949)
+:assumption (or (not x18859) x11523)
+:assumption (or (not x19451) (not x29917))
+:assumption (or x26868 (not x17041))
+:assumption (or (not x22334) (not x20341))
+:assumption (or (not x23302) x9008)
+:assumption (or (not x15944) x12438)
+:assumption (or x4538 x27575 (not x7012) (not x25720))
+:assumption (or (not x2309) (not x8546))
+:assumption (or (not x31867) (not x12558))
+:assumption (or (not x4604) x3068)
+:assumption (or (not x2574) (not x16058))
+:assumption (or x21084 x1070)
+:assumption (or (not x7826) x14006)
+:assumption (or x30196 x2500)
+:assumption (or (not x6499) (not x2654))
+:assumption (or x17323 x18255)
+:assumption (or (not x6047) x5719)
+:assumption (or x23147 (not x5528))
+:assumption (or x19112 (not x24395))
+:assumption (or (not x21130) x27131)
+:assumption (or x4267 x29622)
+:assumption (or x26407 x18500 x7954 (not x3125))
+:assumption (or x13851 x7050)
+:assumption (or (not x10228) x30429)
+:assumption (or x31800 (not x7226))
+:assumption (or x26712 (not x21387))
+:assumption (or (not x22387) (not x9071))
+:assumption (or x29950 x8138)
+:assumption (or x23458 x6004)
+:assumption (or x11337 x23665)
+:assumption (or (not x11414) (not x18744))
+:assumption (or x27807 x16524)
+:assumption (or x13111 (not x19865))
+:assumption (or x11054 (not x27783) (not x27068))
+:assumption (or x20512 x14971)
+:assumption (or x4366 (not x4067))
+:assumption (or (not x13320) x21690)
+:assumption (or x30590 x5752)
+:assumption (or x29742 (not x16903))
+:assumption (or (not x6376) x17067)
+:assumption (or x1768 x26844)
+:assumption (or x27906 (not x9211))
+:assumption (or (not x17765) (not x22569))
+:assumption (or (not x17142) (not x25292))
+:assumption (or (not x2239) x26058)
+:assumption (or (not x17001) x4439 (not x19470) (not x18543))
+:assumption (or x25220 (not x1586))
+:assumption (or x7987 x19068)
+:assumption (or (not x30724) (not x25349) x18179)
+:assumption (or x18062 (not x19840))
+:assumption (or (not x19495) (not x22963))
+:assumption (or x25750 x1492 (not x25334) x13188)
+:assumption (or (not x11975) x8592)
+:assumption (or (not x13956) x14804 x514 x8002 x23244)
+:assumption (or x23149 x27056 (not x30786) (not x24000) (not x13146) x31220 x7207)
+:assumption (or x12218 x268)
+:assumption (or x20132 (not x16037) (not x5394) x964)
+:assumption (or x27136 x26383)
+:assumption (or x25279 (not x26986))
+:assumption (or (not x29297) x3038)
+:assumption (or (not x3516) (not x19452))
+:assumption (or (not x28560) x29301)
+:assumption (or x29596 (not x19281))
+:assumption (or x31124 x17753)
+:assumption (or x3471 (not x3352))
+:assumption (or (not x18560) x22928)
+:assumption (or (not x23848) (not x17728))
+:assumption (or x1976 x10874)
+:assumption (or x12624 (not x16193) (not x14069))
+:assumption (or x6222 (not x24631) (not x11519) x13961)
+:assumption (or (not x18140) (not x18948))
+:assumption (or x11387 x8120 (not x16) x7309)
+:assumption (or x2823 (not x1968))
+:assumption (or x1012 (not x18516))
+:assumption (or (not x26950) (not x31578))
+:assumption (or (not x287) (not x8002))
+:assumption (or (not x15987) x28290)
+:assumption (or x1542 (not x30263))
+:assumption (or x16506 (not x13609))
+:assumption (or x25659 x1985)
+:assumption (or x3276 (not x5553))
+:assumption (or (not x31258) (not x31114))
+:assumption (or x6726 (not x31440))
+:assumption (or (not x5637) x22896)
+:assumption (or x22800 (not x21266))
+:assumption (or x4704 x1393)
+:assumption (or (not x700) x5278)
+:assumption (or x22581 (not x13279))
+:assumption (or (not x11361) (not x8825))
+:assumption (or x14633 (not x8077))
+:assumption (or x7250 (not x13432))
+:assumption (or (not x26881) (not x1628))
+:assumption (or x12139 x4171)
+:assumption (or (not x3215) (not x22217))
+:assumption (or (not x7835) x9167)
+:assumption (or (not x23460) (not x879))
+:assumption (or (not x5077) (not x7490))
+:assumption (or x27953 x14968)
+:assumption (or (not x771) x27294)
+:assumption (or x15675 (not x3224))
+:assumption (or (not x15943) (not x24242) (not x7313))
+:assumption (or x31697 (not x7697))
+:assumption (or x23032 (not x26825) x31829 x24732 (not x29379))
+:assumption (or x3301 (not x20827) x5315 (not x931) (not x31492))
+:assumption (or x15516 (not x24830) (not x21847) x24471)
+:assumption (or x22319 (not x17075))
+:assumption (or (not x14060) (not x2459))
+:assumption (or (not x23912) (not x22435))
+:assumption (or (not x18632) (not x14640))
+:assumption (or x28152 (not x20734))
+:assumption (or x2798 x4409)
+:assumption (or x27712 (not x690))
+:assumption (or x23244 x13802 x8002 (not x4912) (not x13674) x13956)
+:assumption (or x19551 x282)
+:assumption (or (not x14925) (not x11709))
+:assumption (or (not x4942) (not x21219))
+:assumption (or x1745 x14455)
+:assumption (or x25172 x30412)
+:assumption (or (not x8374) (not x30468))
+:assumption (or (not x13961) x4393)
+:assumption (or (not x9101) x5434)
+:assumption (or (not x30508) x30124)
+:assumption (or (not x17984) (not x23558))
+:assumption (or x19031 x23668)
+:assumption (or (not x827) x21551)
+:assumption (or x19084 (not x21007))
+:assumption (or (not x22891) (not x5795))
+:assumption (or x3697 (not x31144))
+:assumption (or x3800 (not x13497))
+:assumption (or x20550 (not x10681))
+:assumption (or (not x3070) (not x14647))
+:assumption (or x28388 (not x1588))
+:assumption (or (not x22903) x13606)
+:assumption (or (not x12798) (not x22546))
+:assumption (or (not x17712) (not x27999))
+:assumption (or x15374 (not x26897))
+:assumption (or (not x31037) (not x26831))
+:assumption (or x24281 x13036)
+:assumption (or (not x14898) (not x12471) x25788)
+:assumption (or x4366 (not x16746))
+:assumption (or (not x31804) x11938)
+:assumption (or (not x13687) (not x24035))
+:assumption (or (not x30491) (not x29514))
+:assumption (or (not x17682) (not x19245))
+:assumption (or (not x31272) x1137)
+:assumption (or x8209 (not x19138))
+:assumption (or x25977 (not x18464))
+:assumption (or x3865 (not x25366))
+:assumption (or (not x13145) (not x26703))
+:assumption (or x29867 x28391)
+:assumption (or x12039 (not x9501))
+:assumption (or x6423 x12242 x21876 (not x20325))
+:assumption (or x7442 (not x30667) (not x16558) (not x28730) x14597)
+:assumption (or (not x14216) x20519)
+:assumption (or x5762 (not x1522))
+:assumption (or (not x13735) x19357)
+:assumption (or x30310 x247)
+:assumption (or x30424 (not x29159))
+:assumption (or x12566 x13795)
+:assumption (or x24496 (not x28342))
+:assumption (or x20458 (not x944))
+:assumption (or x12868 (not x21833))
+:assumption (or (not x7151) (not x7854))
+:assumption (or (not x14290) (not x19988))
+:assumption (or (not x20991) (not x26829))
+:assumption (or (not x16038) (not x31872))
+:assumption (or x19151 (not x8378))
+:assumption (or x2525 (not x7105))
+:assumption (or (not x5271) x30505 (not x373))
+:assumption (or (not x25245) (not x3831))
+:assumption (or x22655 (not x1149) (not x3857) (not x10914) x27267)
+:assumption (or x11310 x15887)
+:assumption (or (not x27597) (not x8178))
+:assumption (or (not x10873) (not x6428) x3538)
+:assumption (or (not x19741) x9436)
+:assumption (or (not x30624) x9058)
+:assumption (or (not x25067) (not x22194))
+:assumption (or (not x14935) (not x24553))
+:assumption (or (not x5000) (not x5725))
+:assumption (or (not x19945) x28656)
+:assumption (or x8827 x15436 (not x13291) (not x23443) x11242)
+:assumption (or x12893 (not x9205))
+:assumption (or (not x160) x6594)
+:assumption (or x22693 x24159)
+:assumption (or (not x20402) (not x8291))
+:assumption (or x11741 (not x19894))
+:assumption (or x9179 x2251 (not x34))
+:assumption (or x15301 x26889)
+:assumption (or x15917 x19556)
+:assumption (or (not x8872) x28226)
+:assumption (or x6969 (not x26891) (not x29507) x24608)
+:assumption (or x27247 x11940)
+:assumption (or (not x15514) x15804)
+:assumption (or x18097 (not x29824))
+:assumption (or (not x31322) (not x21996))
+:assumption (or (not x18304) (not x17567) x13040)
+:assumption (or x4377 (not x14587))
+:assumption (or x17721 (not x21501))
+:assumption (or x22996 x2536)
+:assumption (or x7743 (not x2611))
+:assumption (or x10948 (not x6969))
+:assumption (or x27477 x30316 (not x15780) (not x27459))
+:assumption (or x18063 (not x9196))
+:assumption (or (not x19445) x21632)
+:assumption (or (not x23715) (not x17486))
+:assumption (or (not x16831) x19658)
+:assumption (or x30397 (not x24368))
+:assumption (or (not x13677) x18623)
+:assumption (or x23650 x827 (not x29901))
+:assumption (or x6087 x2912)
+:assumption (or x22607 (not x21939) x8002)
+:assumption (or x3782 x19001)
+:assumption (or x29031 x18322)
+:assumption (or x31829 (not x4567) (not x20585))
+:assumption (or x16945 x5692)
+:assumption (or (not x22705) (not x19386) (not x18103))
+:assumption (or (not x4854) (not x18135))
+:assumption (or (not x3300) (not x830))
+:assumption (or x11639 x18538)
+:assumption (or x553 (not x23709))
+:assumption (or x22297 (not x10886))
+:assumption (or (not x5434) x9838)
+:assumption (or (not x21067) (not x2189))
+:assumption (or x14839 x23393)
+:assumption (or (not x3840) x16676 (not x9531) (not x28931))
+:assumption (or (not x10450) (not x1431))
+:assumption (or (not x20697) (not x16912))
+:assumption (or (not x27598) (not x23370))
+:assumption (or x25659 (not x21486))
+:assumption (or x10111 (not x17359))
+:assumption (or (not x8335) (not x16884))
+:assumption (or x3698 x29361)
+:assumption (or (not x26063) x28213)
+:assumption (or (not x27134) (not x22680))
+:assumption (or x7516 x15210 (not x21298) x29519)
+:assumption (or x10560 (not x17428))
+:assumption (or (not x14751) x30220)
+:assumption (or x20819 x22430)
+:assumption (or x10030 x21124)
+:assumption (or x4879 x4600)
+:assumption (or x12478 (not x15682))
+:assumption (or x8778 x30535)
+:assumption (or (not x10722) x14814)
+:assumption (or x21471 x14858)
+:assumption (or (not x23244) (not x21936))
+:assumption (or x10152 x1096)
+:assumption (or (not x20998) (not x4896))
+:assumption (or (not x9924) (not x11805))
+:assumption (or (not x21432) x31774)
+:assumption (or x29461 (not x29523))
+:assumption (or (not x13303) x18179 (not x23381) x2478)
+:assumption (or x17127 (not x14595))
+:assumption (or (not x18692) x20695)
+:assumption (or (not x12451) (not x10802))
+:assumption (or x16583 (not x21555))
+:assumption (or x550 x10909)
+:assumption (or x14760 (not x1642))
+:assumption (or (not x25719) (not x18957))
+:assumption (or (not x6176) x23008)
+:assumption (or x5885 (not x7376))
+:assumption (or x5508 x10760)
+:assumption (or x24185 x1906)
+:assumption (or (not x5091) x8002 (not x2354))
+:assumption (or x12343 x13674 (not x13802) (not x13956))
+:assumption (or x15795 x14103)
+:assumption (or (not x6213) x6647 (not x30100))
+:assumption (or (not x1078) (not x20744))
+:assumption (or x7447 (not x21176))
+:assumption (or x11798 x4425)
+:assumption (or (not x25659) (not x7572))
+:assumption (or (not x2279) (not x26017))
+:assumption (or x22281 x9840)
+:assumption (or (not x924) x10515)
+:assumption (or x20522 (not x2133) x23244)
+:assumption (or x26573 x8072)
+:assumption (or x19893 x4987)
+:assumption (or x28904 (not x15563))
+:assumption (or (not x20219) (not x13434))
+:assumption (or x26371 (not x25912) x10179 (not x31094))
+:assumption (or (not x29808) x18970)
+:assumption (or x59 x21298 (not x12176) x3121)
+:assumption (or x9863 x12069)
+:assumption (or (not x12698) x11686)
+:assumption (or (not x15121) (not x12843))
+:assumption (or x826 (not x2496))
+:assumption (or x29794 x12132)
+:assumption (or (not x13419) (not x16644))
+:assumption (or (not x692) x17016 x21298 (not x15428))
+:assumption (or x20943 (not x8196))
+:assumption (or (not x4822) (not x29580))
+:assumption (or (not x31496) x28342)
+:assumption (or (not x6349) (not x4349) (not x17440) x27625 x10874 x6307)
+:assumption (or (not x28912) x27189)
+:assumption (or x28912 (not x24207) x1022)
+:assumption (or x1551 (not x13421))
+:assumption (or x8017 x5180)
+:assumption (or x28704 (not x20739))
+:assumption (or (not x29196) x24410)
+:assumption (or (not x20553) (not x20735))
+:assumption (or x30682 (not x25949))
+:assumption (or x4544 (not x8959))
+:assumption (or (not x13032) x17326)
+:assumption (or (not x30756) x7696)
+:assumption (or (not x16652) x24258)
+:assumption (or (not x18604) x24112)
+:assumption (or x23066 (not x18099))
+:assumption (or x26737 (not x14755))
+:assumption (or x12276 x28342)
+:assumption (or x21103 x3963)
+:assumption (or (not x15887) (not x17967) x21748)
+:assumption (or (not x23624) x6463 (not x26804) (not x17419))
+:assumption (or x9030 x28018)
+:assumption (or (not x3990) x63)
+:assumption (or x25179 (not x29442))
+:assumption (or x7951 (not x30649) x6641 x13832 (not x24417) x11765 x10554)
+:assumption (or (not x23653) (not x4401))
+:assumption (or x20990 (not x30996))
+:assumption (or (not x29079) x30407)
+:assumption (or (not x13368) x21432)
+:assumption (or x9810 x25659)
+:assumption (or (not x3891) x15044)
+:assumption (or x29489 (not x15684))
+:assumption (or (not x16478) (not x20051))
+:assumption (or x29330 (not x30573))
+:assumption (or x11026 (not x25839))
+:assumption (or (not x27863) x7688)
+:assumption (or (not x24971) (not x17953) x25659)
+:assumption (or x3910 x12291)
+:assumption (or (not x28342) x20507 (not x20609) (not x26335) x4882 x8888)
+:assumption (or x20609 (not x20507))
+:assumption (or x3156 x1768)
+:assumption (or (not x4386) x29156)
+:assumption (or (not x21610) x19141)
+:assumption (or (not x9049) x28628)
+:assumption (or (not x3998) (not x8286) (not x27139) (not x11264) (not x16117) x27577)
+:assumption (or (not x2934) x23413 x11516)
+:assumption (or x23244 (not x9176))
+:assumption (or x30893 x30042)
+:assumption (or x1188 x24976)
+:assumption (or x28510 (not x8247))
+:assumption (or (not x9611) x25131 x15266 (not x20464))
+:assumption (or (not x1189) x18293)
+:assumption (or (not x18521) x29959)
+:assumption (or (not x22927) (not x25892))
+:assumption (or (not x8526) (not x22328))
+:assumption (or x18304 x17567)
+:assumption (or (not x26574) x25463)
+:assumption (or (not x28242) (not x10874) x12266)
+:assumption (or x13733 (not x1108))
+:assumption (or x29185 x7019)
+:assumption (or x17596 x14194)
+:assumption (or (not x24103) (not x8002))
+:assumption (or (not x29016) (not x29155))
+:assumption (or x1956 (not x30855))
+:assumption (or (not x4214) (not x11684))
+:assumption (or x29753 (not x1411) x29005)
+:assumption (or (not x11997) x949)
+:assumption (or x1591 x13395)
+:assumption (or (not x23479) (not x9083))
+:assumption (or x9796 (not x24212) (not x10776) x18201)
+:assumption (or (not x20005) x10652)
+:assumption (or (not x12066) x5528)
+:assumption (or x15699 x6202)
+:assumption (or x14663 x29921)
+:assumption (or x28253 (not x5937))
+:assumption (or (not x12926) (not x8002) x31041)
+:assumption (or x25659 (not x31152))
+:assumption (or (not x9964) x22346)
+:assumption (or x12205 (not x20880) x5528)
+:assumption (or (not x21298) (not x10807) (not x24620) (not x11115))
+:assumption (or (not x20909) (not x6693))
+:assumption (or x347 (not x20024))
+:assumption (or x6408 x11250)
+:assumption (or x22261 (not x7420))
+:assumption (or x19567 (not x1518))
+:assumption (or (not x15078) (not x10441) x13057 (not x8640) (not x11696) x1582)
+:assumption (or (not x25659) (not x31078))
+:assumption (or x5624 (not x5771))
+:assumption (or (not x4678) x25334 x5625 x11586)
+:assumption (or (not x22274) x2317)
+:assumption (or x24195 (not x8585) x21007 x18042 (not x25982))
+:assumption (or (not x31102) (not x11847))
+:assumption (or x5587 (not x6543) (not x2498) x20352)
+:assumption (or x10453 x19269)
+:assumption (or x29072 x1435)
+:assumption (or x1657 (not x9032))
+:assumption (or (not x9777) x14053 (not x15160) x30060 x6891)
+:assumption (or x2610 x16356 x8658 (not x5440))
+:assumption (or x8002 x4779 x23244 x24366 (not x30914))
+:assumption (or x11553 x6710 x24722)
+:assumption (or (not x7084) x31028 x918)
+:assumption (or x202 x15914)
+:assumption (or (not x19245) x25604)
+:assumption (or (not x24722) x18339)
+:assumption (or (not x15309) x27012 (not x20651))
+:assumption (or x26184 (not x26357) (not x16304) x15795)
+:assumption (or x15537 x5851)
+:assumption (or (not x30393) (not x9946))
+:assumption (or (not x8637) x16089)
+:assumption (or x26959 x2340)
+:assumption (or (not x10185) (not x13659))
+:assumption (or x20277 (not x7807))
+:assumption (or x31015 (not x11136) x23244)
+:assumption (or x11616 (not x27782))
+:assumption (or (not x8208) x2670)
+:assumption (or x20087 x10118)
+:assumption (or x19097 x9053 (not x16654) (not x18908) x1971 (not x27543))
+:assumption (or x25150 x5105)
+:assumption (or (not x20493) x7458)
+:assumption (or x1980 x20402 (not x21376))
+:assumption (or (not x26579) (not x1461) (not x7402) (not x18099) x31376 x3076 x31525 (not x25004))
+:assumption (or x2538 (not x26662))
+:assumption (or (not x24906) (not x6718))
+:assumption (or (not x25659) x28741)
+:assumption (or (not x13044) x3585)
+:assumption (or x27850 x20769)
+:assumption (or x24725 (not x2981) x21304 (not x9735))
+:assumption (or (not x11905) (not x11869))
+:assumption (or x17642 x28147)
+:assumption (or (not x12165) (not x6289) (not x16758))
+:assumption (or (not x11576) (not x10515))
+:assumption (or (not x18726) (not x5755))
+:assumption (or x30829 x27181)
+:assumption (or (not x16655) x20207)
+:assumption (or (not x12172) x14276 (not x27090) (not x19116))
+:assumption (or x14396 x29780)
+:assumption (or (not x3096) x23566)
+:assumption (or (not x22956) (not x30327) x14099 (not x31434) x13802 x24081)
+:assumption (or x2650 (not x7245))
+:assumption (or (not x6343) (not x20416))
+:assumption (or x16003 x7023)
+:assumption (or (not x23601) x2228)
+:assumption (or x12588 x6703)
+:assumption (or (not x3611) (not x6937))
+:assumption (or (not x8043) x26670 (not x964) (not x17708))
+:assumption (or (not x7163) x17751)
+:assumption (or (not x12578) (not x24258) x16652)
+:assumption (or x14562 (not x12391) (not x18620) (not x6907) (not x6242) (not x25659) (not x19074) (not x6191))
+:assumption (or (not x19368) x6542)
+:assumption (or (not x6468) (not x3828))
+:assumption (or (not x13023) (not x22531) (not x16460))
+:assumption (or (not x18015) (not x1211))
+:assumption (or x8804 (not x12321) (not x27861) (not x641) (not x16802) x16515 x19827 (not x167))
+:assumption (or (not x11846) x6691)
+:assumption (or x15035 (not x29437))
+:assumption (or x10410 (not x4903) (not x14752) x26716 (not x3976) (not x18081) (not x25729) x14736)
+:assumption (or (not x21615) x16166)
+:assumption (or (not x924) x22129)
+:assumption (or (not x26899) (not x9832))
+:assumption (or x24962 (not x12209))
+:assumption (or (not x19917) (not x27344))
+:assumption (or (not x7633) x16510)
+:assumption (or (not x16088) x3736)
+:assumption (or (not x7411) (not x3476))
+:assumption (or x24455 (not x204))
+:assumption (or x14168 x14933)
+:assumption (or x27351 (not x31846))
+:assumption (or x6111 x23509)
+:assumption (or (not x879) x24617)
+:assumption (or x26920 (not x5886))
+:assumption (or x1657 x7929)
+:assumption (or x23399 x18838)
+:assumption (or (not x13850) x13691)
+:assumption (or x21008 x8472 x21653)
+:assumption (or (not x14749) x16648)
+:assumption (or (not x13956) x22102 (not x27941))
+:assumption (or (not x6053) (not x1782))
+:assumption (or x24000 x10035)
+:assumption (or x14918 (not x21947) x21653)
+:assumption (or (not x5560) x20754)
+:assumption (or x21011 x5423)
+:assumption (or (not x20512) x21982 x7474 (not x25877) x18859 (not x21160) x15242 x2548)
+:assumption (or (not x14008) (not x28818))
+:assumption (or (not x20291) x6882)
+:assumption (or (not x20401) (not x11698))
+:assumption (or (not x8372) x22724)
+:assumption (or (not x14428) x16809)
+:assumption (or (not x29096) x5030)
+:assumption (or x20020 (not x23223))
+:assumption (or (not x25811) (not x25569))
+:assumption (or (not x21546) x14589 (not x13317))
+:assumption (or (not x17907) (not x7542))
+:assumption (or x6811 x11653 x12713 x14628 x12527 x19099)
+:assumption (or x3818 (not x7046))
+:assumption (or (not x30401) x12891)
+:assumption (or x19466 x24069)
+:assumption (or x25878 x24722 (not x12180) (not x16015))
+:assumption (or x7627 x6430)
+:assumption (or x1638 x1558)
+:assumption (or x25038 (not x7754))
+:assumption (or x15601 (not x1386))
+:assumption (or (not x7876) (not x31737) (not x27090))
+:assumption (or (not x11357) x26647)
+:assumption (or (not x28225) (not x24954))
+:assumption (or (not x30522) x7705)
+:assumption (or x2371 (not x4591))
+:assumption (or x6969 x16196)
+:assumption (or (not x19795) (not x25563))
+:assumption (or x4262 (not x10426) (not x11118))
+:assumption (or (not x2551) x16426)
+:assumption (or x16351 x5858)
+:assumption (or (not x22979) (not x12211))
+:assumption (or (not x28784) x16130)
+:assumption (or x28465 (not x1853))
+:assumption (or (not x20179) x3738 x21172 x15689 x16968)
+:assumption (or (not x13018) x24392)
+:assumption (or (not x24927) x10340 x30371 (not x18992) (not x3776) x2326 (not x25913) (not x7720) (not x30343))
+:assumption (or (not x25659) (not x21230))
+:assumption (or (not x13366) x27009)
+:assumption (or x12258 (not x3170))
+:assumption (or (not x31704) (not x21285))
+:assumption (or x5206 x14945)
+:assumption (or x29722 x28779)
+:assumption (or (not x19588) x23391)
+:assumption (or x5804 x13447 x22182 (not x14655) x3453)
+:assumption (or x169 (not x964) (not x28380))
+:assumption (or (not x22602) (not x28348) x20782 x12646)
+:assumption (or x24893 x11505)
+:assumption (or x26556 (not x2383))
+:assumption (or x13705 x5137)
+:assumption (or x26340 (not x24551))
+:assumption (or x8619 x29442)
+:assumption (or (not x14962) (not x31574))
+:assumption (or (not x31193) x21298)
+:assumption (or x2431 x19613)
+:assumption (or x2375 x4449)
+:assumption (or (not x30532) x6556 (not x14381))
+:assumption (or x20173 x24722 x27589 (not x18042) x6167 x31495)
+:assumption (or x770 x18647)
+:assumption (or (not x22929) (not x8685))
+:assumption (or x22561 x28839)
+:assumption (or (not x5990) (not x12129))
+:assumption (or x16929 (not x19975))
+:assumption (or (not x13131) x16015)
+:assumption (or (not x21575) x8116)
+:assumption (or (not x5946) (not x5329))
+:assumption (or (not x14695) x13956 x28934)
+:assumption (or (not x27104) x31472)
+:assumption (or (not x8834) (not x19935))
+:assumption (or x20053 (not x11697))
+:assumption (or x12983 x13555)
+:assumption (or (not x17534) x27148)
+:assumption (or x18748 x7419)
+:assumption (or (not x76) x19148)
+:assumption (or x3401 x25042)
+:assumption (or x17088 (not x17103) (not x10909))
+:assumption (or (not x22055) (not x16067) x10370)
+:assumption (or x22891 x6181)
+:assumption (or (not x4245) (not x3872))
+:assumption (or (not x31729) x8216)
+:assumption (or (not x17324) x30735)
+:assumption (or (not x29992) (not x8334))
+:assumption (or (not x31829) (not x14109))
+:assumption (or (not x2429) (not x5537))
+:assumption (or x20592 x2648)
+:assumption (or (not x12753) (not x20292) (not x1530) (not x17144))
+:assumption (or x13979 (not x30771))
+:assumption (or x13736 (not x8002) x6424)
+:assumption (or x17731 (not x5135))
+:assumption (or (not x3712) (not x1614))
+:assumption (or (not x28899) x16003)
+:assumption (or x11032 (not x9008))
+:assumption (or x12130 x9444)
+:assumption (or x21298 (not x14867))
+:assumption (or (not x12852) x15524)
+:assumption (or (not x20060) (not x24276))
+:assumption (or x14553 x20674)
+:assumption (or (not x6183) x11488)
+:assumption (or x20927 (not x22918))
+:assumption (or (not x21083) x27532)
+:assumption (or x20708 x18052)
+:assumption (or (not x10652) x25101)
+:assumption (or x26312 x10991)
+:assumption (or x9384 x13025 (not x30244) (not x30961))
+:assumption (or x8628 x24939 (not x9825))
+:assumption (or (not x18512) (not x16224))
+:assumption (or x24692 (not x15994))
+:assumption (or x22675 (not x491) (not x8059) (not x1724))
+:assumption (or x13524 x28181)
+:assumption (or (not x3473) (not x30228))
+:assumption (or (not x24722) x2199 (not x30751))
+:assumption (or x16647 x27823)
+:assumption (or (not x3386) x14578 (not x1694))
+:assumption (or x8757 x16314)
+:assumption (or (not x8462) x1749)
+:assumption (or x23949 x8583)
+:assumption (or x21296 x8010)
+:assumption (or x10927 x23439)
+:assumption (or (not x8914) (not x14557) x6668 x6307 (not x7918) x17611)
+:assumption (or x18253 (not x27706))
+:assumption (or x181 x24927)
+:assumption (or x95 (not x27025))
+:assumption (or x26812 x9008)
+:assumption (or (not x11109) (not x28401))
+:assumption (or x12226 (not x21178))
+:assumption (or (not x26395) (not x6375))
+:assumption (or (not x21601) x19401)
+:assumption (or (not x9050) x23243)
+:assumption (or (not x27765) x15512)
+:assumption (or (not x29509) (not x5956))
+:assumption (or x25294 (not x15987) (not x29849) (not x846) (not x9374))
+:assumption (or (not x25140) x24320)
+:assumption (or (not x19443) (not x19379))
+:assumption (or (not x23184) x6669)
+:assumption (or x491 x8059)
+:assumption (or (not x7025) x9688)
+:assumption (or (not x31061) (not x5462))
+:assumption (or x16615 (not x16224))
+:assumption (or x12358 (not x6783))
+:assumption (or x20177 (not x17621) (not x19386) x24324 (not x858))
+:assumption (or (not x6794) (not x26092))
+:assumption (or x31148 (not x13683))
+:assumption (or x17406 (not x18536))
+:assumption (or (not x3327) (not x25964))
+:assumption (or x16954 x21314)
+:assumption (or x6351 x13092 x24177)
+:assumption (or (not x31648) (not x620))
+:assumption (or (not x22354) (not x1821))
+:assumption (or x25300 x3654)
+:assumption (or (not x21546) x17302 (not x22828) x29940)
+:assumption (or (not x13723) (not x2618))
+:assumption (or x16379 (not x17134) x24911 (not x15322) (not x25987))
+:assumption (or x10781 (not x20693))
+:assumption (or x6169 (not x14689))
+:assumption (or x4368 x202)
+:assumption (or (not x20872) x28455)
+:assumption (or (not x2110) (not x19649))
+:assumption (or x1449 x24689 x11087 (not x7303) (not x18084) x4355)
+:assumption (or x12061 (not x25677) (not x4559) (not x27306))
+:assumption (or (not x20749) (not x8109))
+:assumption (or (not x30778) x2383)
+:assumption (or x15093 x17713)
+:assumption (or x20437 x15917 x11460)
+:assumption (or (not x10819) x23021 x6344 (not x11779) x26424 x24384 (not x27318) (not x26286))
+:assumption (or (not x19945) (not x1775))
+:assumption (or x13410 x23958)
+:assumption (or x25830 (not x2524) (not x21746) x18375 (not x8371) (not x23896) (not x4202) x16365)
+:assumption (or (not x15796) x1393 x5210)
+:assumption (or (not x20220) x7844)
+:assumption (or x23916 x14455)
+:assumption (or (not x15185) x12045 (not x9664) x20949)
+:assumption (or x19356 x17363)
+:assumption (or (not x26432) x31627 (not x17359) x29248)
+:assumption (or x19276 x12255)
+:assumption (or (not x28181) x25867 x780)
+:assumption (or (not x25490) x2084)
+:assumption (or (not x21298) (not x23205))
+:assumption (or (not x31188) (not x23898))
+:assumption (or (not x19428) (not x20683))
+:assumption (or (not x26742) (not x9481))
+:assumption (or (not x1952) x4958)
+:assumption (or x28242 (not x6234) x19649)
+:assumption (or (not x16558) x7396)
+:assumption (or x21503 (not x27888))
+:assumption (or (not x3575) (not x18003))
+:assumption (or (not x6651) x23833)
+:assumption (or (not x27595) (not x16001))
+:assumption (or x13843 x17031)
+:assumption (or x9008 (not x30154))
+:assumption (or x2495 x18682)
+:assumption (or x963 x3745)
+:assumption (or x2211 x23084)
+:assumption (or (not x9047) x27591)
+:assumption (or (not x10237) (not x21653) x30143)
+:assumption (or x14069 x657 (not x15584) (not x21767) x29528 (not x14080) x22801 x12094)
+:assumption (or (not x15782) x23469)
+:assumption (or (not x25366) x19026)
+:assumption (or (not x24403) (not x10003))
+:assumption (or x1041 (not x13549))
+:assumption (or (not x31256) x26238)
+:assumption (or x18173 (not x6476))
+:assumption (or x22213 x30949)
+:assumption (or (not x20606) (not x16494))
+:assumption (or x24544 x23328)
+:assumption (or x1232 x10959)
+:assumption (or (not x8888) (not x8865))
+:assumption (or (not x14896) (not x10462))
+:assumption (or (not x31552) x12225)
+:assumption (or (not x2153) (not x19786))
+:assumption (or x10933 (not x17651))
+:assumption (or x12354 x17755)
+:assumption (or x3563 (not x880))
+:assumption (or (not x16529) x26652)
+:assumption (or x6750 (not x24982) x14177)
+:assumption (or (not x24744) (not x11658))
+:assumption (or (not x26305) x7835 (not x17067) x6376)
+:assumption (or x15631 (not x30354))
+:assumption (or (not x17490) (not x21852))
+:assumption (or (not x10894) x9952)
+:assumption (or (not x22254) (not x12688) (not x3216) x1393 (not x7103) x8930 (not x19817) (not x28685))
+:assumption (or (not x1239) x1564)
+:assumption (or x23202 (not x28041) x27399 (not x31268) x1621 (not x1080) x1052 (not x7080) x26143)
+:assumption (or (not x17725) (not x4227))
+:assumption (or (not x23672) (not x3418) x7836 x18115)
+:assumption (or x23270 x18256)
+:assumption (or x17718 (not x30113))
+:assumption (or (not x22267) (not x26202))
+:assumption (or (not x22018) (not x2385))
+:assumption (or x16268 x18409)
+:assumption (or x29486 (not x31651))
+:assumption (or x29180 x8912)
+:assumption (or (not x13600) (not x16460))
+:assumption (or x8392 x6742)
+:assumption (or (not x13748) (not x13861))
+:assumption (or x26647 (not x23421))
+:assumption (or x3289 x16571)
+:assumption (or (not x202) x19738)
+:assumption (or (not x25192) x6762)
+:assumption (or (not x27827) x27785)
+:assumption (or (not x25659) x20406)
+:assumption (or (not x25153) x30407)
+:assumption (or x24897 (not x6848))
+:assumption (or x15033 (not x20923))
+:assumption (or (not x27488) (not x6237))
+:assumption (or (not x747) x1764)
+:assumption (or x18430 x519)
+:assumption (or (not x16298) x7415)
+:assumption (or x10148 x27158)
+:assumption (or (not x10176) (not x16789) (not x16455) x31401 (not x25286) (not x8137))
+:assumption (or (not x16197) (not x24534))
+:assumption (or (not x18797) x30432 (not x27290) (not x12286) x4669)
+:assumption (or (not x12624) x21877)
+:assumption (or (not x5198) (not x7565) (not x27429))
+:assumption (or x26131 x30138)
+:assumption (or x23348 (not x12836))
+:assumption (or x13019 (not x10914))
+:assumption (or x6992 x5886 x941 (not x23493) x3732)
+:assumption (or (not x3487) x22639)
+:assumption (or x25537 x17463 x2676)
+:assumption (or x29789 (not x5052))
+:assumption (or (not x5541) x660)
+:assumption (or x23245 (not x7035) x23507 (not x15331))
+:assumption (or x24928 (not x17882) x22484 (not x24557) (not x19537))
+:assumption (or x4000 x20752)
+:assumption (or (not x13066) x29156)
+:assumption (or x931 x20827)
+:assumption (or x2869 (not x5055))
+:assumption (or (not x15805) (not x6277))
+:assumption (or x30051 x7693)
+:assumption (or (not x16317) (not x20134))
+:assumption (or x28997 x22517)
+:assumption (or x1393 x7248)
+:assumption (or x2561 x7530)
+:assumption (or x25864 x13002)
+:assumption (or x12673 (not x23750) x3202 x11792 x28183)
+:assumption (or (not x6301) (not x24033))
+:assumption (or x4442 x2220)
+:assumption (or x11079 x28912)
+:assumption (or x22087 x11310)
+:assumption (or (not x12053) x23497 x30995 (not x13229))
+:assumption (or x17589 (not x30768))
+:assumption (or x19750 (not x22750))
+:assumption (or (not x27566) (not x18767))
+:assumption (or x30368 x16617)
+:assumption (or (not x1067) (not x18175))
+:assumption (or (not x8224) x15011)
+:assumption (or (not x16735) x7260 x31575)
+:assumption (or x251 x4234)
+:assumption (or x16996 (not x21097))
+:assumption (or x23251 (not x21817))
+:assumption (or (not x202) x14884)
+:assumption (or (not x23853) x5528)
+:assumption (or x12806 (not x20633))
+:assumption (or x10038 (not x15836))
+:assumption (or x30418 (not x27458))
+:assumption (or (not x14576) (not x4937))
+:assumption (or (not x18680) (not x18694) (not x22992))
+:assumption (or (not x30737) (not x25508))
+:assumption (or x9158 (not x24756))
+:assumption (or (not x95) (not x29744))
+:assumption (or x9715 x12442)
+:assumption (or (not x4729) (not x19942))
+:assumption (or x15119 (not x19521))
+:assumption (or (not x15072) (not x3881) x19471)
+:assumption (or (not x6969) x4147)
+:assumption (or (not x30770) (not x5024))
+:assumption (or x11630 (not x27846))
+:assumption (or (not x13707) (not x1234))
+:assumption (or (not x6211) x19942)
+:assumption (or x7353 (not x16833))
+:assumption (or (not x1120) x17924)
+:assumption (or x8990 (not x12075))
+:assumption (or (not x26313) x22278)
+:assumption (or x31131 (not x26082) x24939 x18488 x1052)
+:assumption (or x13177 (not x23415))
+:assumption (or x27653 (not x10099))
+:assumption (or (not x10903) (not x16025))
+:assumption (or x20662 (not x9108))
+:assumption (or (not x18308) x25697)
+:assumption (or x25268 (not x27295))
+:assumption (or x27223 (not x17381))
+:assumption (or x8341 (not x17221))
+:assumption (or (not x12923) x9829 (not x11546))
+:assumption (or (not x23483) (not x16802))
+:assumption (or (not x29017) (not x694))
+:assumption (or x27983 (not x13112))
+:assumption (or (not x17359) x709)
+:assumption (or (not x3404) (not x16560))
+:assumption (or x49 (not x29257) x15749 x11437)
+:assumption (or (not x14876) x14545)
+:assumption (or (not x10380) x7537)
+:assumption (or (not x10393) (not x31367))
+:assumption (or (not x17693) x18979)
+:assumption (or (not x2026) x964)
+:assumption (or x21384 x15499)
+:assumption (or (not x23466) (not x13620))
+:assumption (or x17150 x16478)
+:assumption (or x2726 (not x19312))
+:assumption (or x31331 (not x13269))
+:assumption (or x16770 x10364)
+:assumption (or x4479 x25194 x6073 (not x2256))
+:assumption (or x11698 (not x26670) (not x29104))
+:assumption (or (not x21725) x3353)
+:assumption (or (not x10707) (not x8658))
+:assumption (or x454 x6008)
+:assumption (or x14340 x27584)
+:assumption (or (not x14865) (not x14649))
+:assumption (or (not x3310) (not x8705))
+:assumption (or x22692 (not x31267))
+:assumption (or x23920 x14620)
+:assumption (or x20333 x6005)
+:assumption (or (not x19189) (not x23220))
+:assumption (or (not x2943) x28551)
+:assumption (or x14218 (not x15421))
+:assumption (or x8624 (not x29584))
+:assumption (or (not x24800) (not x25942))
+:assumption (or x26510 (not x119))
+:assumption (or x3406 (not x18807))
+:assumption (or x10887 (not x6096))
+:assumption (or x10281 (not x23846) x20193 (not x7914) (not x27930) x31591 (not x20215) x31906)
+:assumption (or (not x15721) (not x26835))
+:assumption (or x3592 (not x9969))
+:assumption (or x16652 (not x25456))
+:assumption (or (not x5028) x7979)
+:assumption (or x23486 x6017)
+:assumption (or x14207 x28109)
+:assumption (or x20834 x1391)
+:assumption (or (not x24883) x28649)
+:assumption (or (not x12409) x11851)
+:assumption (or x11319 x28629)
+:assumption (or x15260 (not x27053) (not x744))
+:assumption (or (not x20960) x26229)
+:assumption (or x14204 x7859)
+:assumption (or (not x27643) x30927)
+:assumption (or x27699 x21091)
+:assumption (or (not x21465) (not x23241))
+:assumption (or x23600 (not x9712))
+:assumption (or x16185 x5162 x12747 x7620 x7308 (not x23282))
+:assumption (or (not x13956) x31782 x2693 x18567)
+:assumption (or (not x19649) x6234)
+:assumption (or x21737 (not x30999))
+:assumption (or (not x29805) x24946)
+:assumption (or x30040 (not x19172))
+:assumption (or x1393 (not x880))
+:assumption (or (not x7801) x23044)
+:assumption (or x29163 x14120)
+:assumption (or (not x1028) (not x24433))
+:assumption (or x18937 x14734 x18519)
+:assumption (or x5163 x9092)
+:assumption (or (not x20603) (not x13434))
+:assumption (or x7969 x2916)
+:assumption (or (not x28222) x24104)
+:assumption (or (not x29312) (not x12271) (not x26347))
+:assumption (or (not x17304) x23621)
+:assumption (or (not x1651) (not x26670))
+:assumption (or (not x17287) x28973 (not x12888) x288)
+:assumption (or x11004 x281)
+:assumption (or x1913 (not x15087))
+:assumption (or x18421 (not x18843))
+:assumption (or (not x16803) x28262)
+:assumption (or x5426 x9301)
+:assumption (or x29792 (not x25112) (not x25659) x28772 x23137 x16011 (not x4804) (not x23904))
+:assumption (or (not x15219) (not x25366))
+:assumption (or (not x28752) (not x28273))
+:assumption (or (not x19788) (not x25547))
+:assumption (or x22368 x29860)
+:assumption (or x14951 (not x9132))
+:assumption (or (not x6746) x26354 x24576)
+:assumption (or (not x28973) (not x13449))
+:assumption (or (not x20949) x6710 x19806)
+:assumption (or (not x8658) x18399 x31374 x1558)
+:assumption (or (not x28469) x1096 (not x12662) x8298 (not x14687))
+:assumption (or (not x19910) x15917)
+:assumption (or (not x19053) (not x22202))
+:assumption (or (not x12159) (not x2282))
+:assumption (or (not x4336) x6214 x12351 x23995 (not x3859) x5365 x20224 (not x3667) x23051 (not x21085))
+:assumption (or (not x9289) (not x3541) x383 x20262 (not x23244) (not x4270))
+:assumption (or x30868 x23988)
+:assumption (or (not x26159) (not x2733))
+:assumption (or (not x15148) x3710)
+:assumption (or (not x15147) x27806)
+:assumption (or (not x12923) (not x16498))
+:assumption (or (not x5915) x4315)
+:assumption (or x21418 (not x14783) x17938 x21651 (not x8039))
+:assumption (or (not x29442) (not x7988) (not x6754) x3782)
+:assumption (or x30285 (not x3671))
+:assumption (or x24759 x3138)
+:assumption (or x13670 x14678)
+:assumption (or (not x5528) x8995 (not x3498) (not x8773) (not x20555) x21387)
+:assumption (or x21134 x9138)
+:assumption (or x16587 (not x28242) x19323 x23264)
+:assumption (or (not x45) (not x12182))
+:assumption (or x15262 (not x18859))
+:assumption (or (not x28670) x7533 (not x11510))
+:assumption (or (not x19992) x13411 (not x9876))
+:assumption (or (not x14413) x28066)
+:assumption (or x10062 x15378)
+:assumption (or x28491 x17359)
+:assumption (or (not x18739) x10329)
+:assumption (or x15875 x7033)
+:assumption (or x30588 (not x24009))
+:assumption (or (not x20772) x23541)
+:assumption (or (not x3481) x12045 x18457 x20949)
+:assumption (or (not x19238) x27608)
+:assumption (or x3940 (not x28184))
+:assumption (or x12759 x19718)
+:assumption (or x19571 x16741 (not x22722) x2133)
+:assumption (or (not x27677) (not x13956))
+:assumption (or x16604 x9795)
+:assumption (or (not x14416) x613)
+:assumption (or x18155 x5595)
+:assumption (or x1446 (not x25676))
+:assumption (or (not x21727) (not x6531) (not x3453))
+:assumption (or (not x25217) x8108)
+:assumption (or x8301 (not x5720) (not x1754) (not x6957))
+:assumption (or (not x24876) (not x14870))
+:assumption (or (not x10874) x5594)
+:assumption (or x11502 x2498)
+:assumption (or (not x19065) x2569)
+:assumption (or x10771 (not x12923) x8372 (not x22724))
+:assumption (or x7881 x20592)
+:assumption (or (not x14880) x5183)
+:assumption (or (not x21833) (not x25462))
+:assumption (or x27880 x12145)
+:assumption (or x5573 (not x28632) (not x17090) x21990 (not x11380) (not x745))
+:assumption (or (not x812) x7106)
+:assumption (or (not x4201) x13489)
+:assumption (or x16409 x2515)
+:assumption (or (not x22800) (not x1582))
+:assumption (or x24551 (not x22548) (not x6071) (not x9647) x2133 (not x7835))
+:assumption (or x24137 (not x6079) x10383)
+:assumption (or (not x9991) x13561)
+:assumption (or x30533 (not x10506) x8602 (not x4415) x3701 x1893 x5384 (not x11770))
+:assumption (or (not x8002) (not x2551))
+:assumption (or x1937 x13304)
+:assumption (or (not x1438) (not x8925) (not x30124) (not x21815) (not x6133) x16510 (not x28905))
+:assumption (or x23244 (not x22949))
+:assumption (or (not x21264) (not x22565))
+:assumption (or x8002 x29321 x4241)
+:assumption (or x31788 x22156)
+:assumption (or (not x5914) x15647)
+:assumption (or (not x30556) x29944)
+:assumption (or x2425 (not x23023))
+:assumption (or x9025 x2339)
+:assumption (or x14446 x12619)
+:assumption (or (not x22186) (not x25248))
+:assumption (or x28617 x16455)
+:assumption (or (not x14077) x4595)
+:assumption (or (not x12578) (not x28450))
+:assumption (or x21478 x21479)
+:assumption (or (not x13882) x15749)
+:assumption (or (not x2558) (not x30407) (not x5620))
+:assumption (or x23473 x18859)
+:assumption (or x21654 x8763)
+:assumption (or x20583 x30599)
+:assumption (or (not x26248) x20507)
+:assumption (or x11095 (not x14053))
+:assumption (or (not x17359) x15526)
+:assumption (or x5661 x4307 x5055 x1621)
+:assumption (or x30861 (not x26899))
+:assumption (or x23524 x7050)
+:assumption (or (not x9341) (not x31581))
+:assumption (or (not x730) x1430)
+:assumption (or (not x4247) (not x15875))
+:assumption (or (not x3494) (not x21275))
+:assumption (or x25178 x28495)
+:assumption (or x23647 (not x1036))
+:assumption (or x3434 x26165)
+:assumption (or x8781 (not x4433))
+:assumption (or x4336 (not x5946))
+:assumption (or (not x11927) (not x18681))
+:assumption (or (not x28328) (not x10565))
+:assumption (or (not x5886) x84 (not x23244))
+:assumption (or (not x20577) x12169)
+:assumption (or x14813 (not x1320))
+:assumption (or (not x23633) x532)
+:assumption (or (not x27845) (not x27221) (not x6519) x6969)
+:assumption (or (not x6374) (not x16146) x1280)
+:assumption (or (not x25723) (not x18790))
+:assumption (or x2444 (not x12824))
+:assumption (or x27029 (not x26410))
+:assumption (or x12656 (not x721))
+:assumption (or x9630 x8002)
+:assumption (or x16025 x6783 x12580)
+:assumption (or x2198 (not x376))
+:assumption (or x22771 x20121)
+:assumption (or (not x1314) x29001)
+:assumption (or x13470 x18856 x8602)
+:assumption (or (not x12129) x428)
+:assumption (or (not x21400) (not x15375))
+:assumption (or x20911 x1608)
+:assumption (or x1126 x16193)
+:assumption (or x30954 x1163)
+:assumption (or x16513 x964)
+:assumption (or (not x13785) (not x18427))
+:assumption (or x25151 x28486)
+:assumption (or (not x23679) x753)
+:assumption (or (not x10448) (not x19298))
+:assumption (or x19667 x4746)
+:assumption (or x10874 (not x20315) x6307)
+:assumption (or (not x10384) x22792)
+:assumption (or x18081 (not x16354))
+:assumption (or (not x19376) x11445)
+:assumption (or (not x22491) (not x13161))
+:assumption (or x2030 x19662 x4058)
+:assumption (or x2260 (not x24862))
+:assumption (or (not x25511) (not x2133))
+:assumption (or x713 (not x15882))
+:assumption (or x29412 (not x15867))
+:assumption (or (not x7663) (not x5093))
+:assumption (or x19983 (not x2701))
+:assumption (or x30992 x19129)
+:assumption (or (not x24393) (not x6156))
+:assumption (or (not x12461) x1724)
+:assumption (or (not x28062) (not x5514))
+:assumption (or (not x25937) (not x2824))
+:assumption (or (not x28072) (not x24697))
+:assumption (or x10561 (not x15047))
+:assumption (or (not x21384) (not x21309) (not x15924) (not x3219) x12914)
+:assumption (or x28804 (not x13666))
+:assumption (or (not x9449) x21704)
+:assumption (or (not x12870) x14380)
+:assumption (or x5178 x4281)
+:assumption (or x22360 (not x7949) x21910)
+:assumption (or (not x21183) x14099)
+:assumption (or x30701 (not x15182))
+:assumption (or (not x22033) x21239)
+:assumption (or x18917 (not x25370) (not x28368) x30764)
+:assumption (or x323 x3773)
+:assumption (or (not x22542) (not x23461))
+:assumption (or (not x14053) (not x31011) x28181 (not x28082) (not x16850))
+:assumption (or (not x31531) (not x4348))
+:assumption (or x12412 (not x14839))
+:assumption (or x20857 x19817)
+:assumption (or (not x31168) x26637)
+:assumption (or x8996 x6186)
+:assumption (or (not x25151) x13345)
+:assumption (or x27812 x1458)
+:assumption (or (not x17748) x16937)
+:assumption (or x11130 x11346)
+:assumption (or x16802 (not x6131))
+:assumption (or (not x8405) x28260)
+:assumption (or (not x6671) (not x14609))
+:assumption (or x13753 x23095)
+:assumption (or (not x18197) x7712)
+:assumption (or x24128 x15929)
+:assumption (or x14380 x4292)
+:assumption (or x4707 x13576 (not x9531) x6900)
+:assumption (or x9406 (not x22093))
+:assumption (or (not x13493) x31561)
+:assumption (or (not x5311) (not x9930))
+:assumption (or x7923 (not x30185))
+:assumption (or x30262 (not x5374))
+:assumption (or (not x29813) (not x3905) (not x31627) x24748 x29719)
+:assumption (or (not x23605) x7795)
+:assumption (or (not x23001) (not x3030))
+:assumption (or x22378 x20456)
+:assumption (or x24715 x15339)
+:assumption (or x6985 x15887 (not x21815) (not x11374) (not x16510))
+:assumption (or (not x26268) (not x22013))
+:assumption (or (not x27347) x15732 x1166 x25683 (not x5528) (not x17074))
+:assumption (or (not x28351) (not x20374))
+:assumption (or x15936 (not x12747))
+:assumption (or x21502 x17378 (not x13956))
+:assumption (or (not x1110) (not x24877))
+:assumption (or (not x6969) (not x29341))
+:assumption (or x23652 (not x26269) (not x7909) x21790 x5577)
+:assumption (or (not x13956) x24382)
+:assumption (or (not x4940) x2688)
+:assumption (or x22057 (not x28150))
+:assumption (or (not x28409) (not x21202))
+:assumption (or (not x15737) (not x6535))
+:assumption (or x277 (not x10576))
+:assumption (or (not x22437) (not x22366))
+:assumption (or (not x13761) x14424)
+:assumption (or x9907 x11258)
+:assumption (or x31696 x15480)
+:assumption (or (not x25221) x13164)
+:assumption (or x9369 x9025)
+:assumption (or x31829 (not x2073))
+:assumption (or x14906 (not x30051) x28900 x9025)
+:assumption (or (not x6969) (not x28598))
+:assumption (or (not x25055) (not x28222))
+:assumption (or (not x22790) (not x26123))
+:assumption (or x20473 (not x4663) (not x20423) x9168)
+:assumption (or (not x16950) x30445)
+:assumption (or x2332 (not x4451))
+:assumption (or x8372 x12923 x9829 (not x18264))
+:assumption (or x27090 x12172)
+:assumption (or (not x7845) (not x19632))
+:assumption (or (not x6604) (not x10370))
+:assumption (or (not x8267) x8796)
+:assumption (or (not x18228) x16253)
+:assumption (or (not x21298) (not x27255) x5424)
+:assumption (or x5556 (not x8432))
+:assumption (or (not x15958) (not x24765))
+:assumption (or (not x18039) x13018 x16991 (not x27249))
+:assumption (or x31565 x19895)
+:assumption (or x6483 (not x26164))
+:assumption (or x7345 (not x31760))
+:assumption (or x18469 (not x14486))
+:assumption (or x28521 x11009)
+:assumption (or x25778 x25854)
+:assumption (or x6997 (not x20300))
+:assumption (or (not x411) (not x3006))
+:assumption (or (not x27865) (not x13888))
+:assumption (or (not x16395) x1628)
+:assumption (or (not x20933) (not x4326))
+:assumption (or x12397 x25606 (not x6080))
+:assumption (or (not x31317) (not x22501))
+:assumption (or (not x28214) (not x29876) (not x142))
+:assumption (or x6149 (not x25015) (not x10085) (not x6951))
+:assumption (or x30587 (not x22267))
+:assumption (or (not x14963) x30124 (not x16409) (not x22563))
+:assumption (or (not x4414) x11412)
+:assumption (or (not x13383) (not x11291) x10449 (not x1918) x20197 x26284)
+:assumption (or (not x25285) (not x5001))
+:assumption (or (not x11937) x28163)
+:assumption (or (not x3040) (not x11287))
+:assumption (or (not x26432) (not x17750) (not x5338) (not x2117))
+:assumption (or x5410 x13094)
+:assumption (or (not x6584) x24374)
+:assumption (or x24159 x18003 (not x25039))
+:assumption (or x14872 (not x28541))
+:assumption (or (not x4940) (not x18630) (not x16852) (not x8431) (not x22527) (not x152) (not x10905) (not x3863))
+:assumption (or (not x2982) x6307)
+:assumption (or (not x26818) (not x3908))
+:assumption (or x31308 x16625)
+:assumption (or x25388 (not x9008))
+:assumption (or x25956 (not x27233) x4294 (not x8002))
+:assumption (or (not x11298) (not x6149))
+:assumption (or (not x14199) (not x31752))
+:assumption (or (not x7115) x24269 x3536 x31161 x20518)
+:assumption (or x18714 (not x6788))
+:assumption (or x8729 (not x18287))
+:assumption (or x29743 x1557)
+:assumption (or x28159 (not x20728))
+:assumption (or x21214 x6853)
+:assumption (or (not x30139) x17065)
+:assumption (or x1888 (not x28355))
+:assumption (or x4865 (not x2500) (not x30196) x7854 x26713)
+:assumption (or x10454 x8405)
+:assumption (or (not x982) (not x5135))
+:assumption (or x21444 (not x28377))
+:assumption (or (not x13231) (not x7234))
+:assumption (or x8567 (not x11352))
+:assumption (or x8498 (not x28398))
+:assumption (or (not x1739) x15155 (not x2949) (not x13880) x4355)
+:assumption (or (not x12724) x7945)
+:assumption (or x19530 (not x23244))
+:assumption (or x17141 x15085)
+:assumption (or (not x12408) (not x9008))
+:assumption (or (not x14739) (not x3701))
+:assumption (or x3883 (not x22027))
+:assumption (or (not x14490) x13956)
+:assumption (or (not x1775) (not x4769) (not x25870))
+:assumption (or x18968 x26240)
+:assumption (or (not x23526) x12062)
+:assumption (or x9273 (not x9526))
+:assumption (or x1389 (not x13100))
+:assumption (or (not x11940) (not x27216))
+:assumption (or (not x6969) (not x4789) x26802)
+:assumption (or (not x6332) x18694)
+:assumption (or x5636 (not x28145))
+:assumption (or (not x20452) x18694)
+:assumption (or x11365 x9898)
+:assumption (or x6126 x25366)
+:assumption (or x12550 x24501)
+:assumption (or x26595 (not x23911))
+:assumption (or x15758 x16240)
+:assumption (or x6092 x56 x24765 x15958 (not x16642) x6954 x13366 (not x4009) x26545)
+:assumption (or x17412 x3215 x14591 (not x15795))
+:assumption (or (not x9930) (not x3854))
+:assumption (or x11288 (not x30424))
+:assumption (or (not x9439) (not x742) (not x16784))
+:assumption (or (not x22687) (not x1503))
+:assumption (or (not x9348) x4983)
+:assumption (or x20853 (not x15863))
+:assumption (or (not x6710) (not x19806))
+:assumption (or (not x14502) (not x31359))
+:assumption (or (not x18380) x23623)
+:assumption (or (not x11065) x14237)
+:assumption (or x28553 x29649 (not x28912) (not x22851))
+:assumption (or (not x24559) (not x22572))
+:assumption (or (not x20710) x18350)
+:assumption (or x9043 (not x29320))
+:assumption (or (not x9540) x7510)
+:assumption (or (not x22802) x3226)
+:assumption (or (not x499) (not x26708))
+:assumption (or (not x25731) x25508)
+:assumption (or x9045 (not x18230))
+:assumption (or x23749 (not x5516))
+:assumption (or (not x5881) x19493)
+:assumption (or (not x78) (not x18481))
+:assumption (or (not x19354) (not x21298) x16942 (not x20893))
+:assumption (or (not x14525) x21815)
+:assumption (or (not x28502) x16025)
+:assumption (or (not x5834) x11813)
+:assumption (or x2014 (not x11582))
+:assumption (or (not x9685) x14719 x20170 x23985)
+:assumption (or (not x12474) (not x12003))
+:assumption (or x12923 x22802 x18581)
+:assumption (or x8431 x275)
+:assumption (or x17031 (not x16232))
+:assumption (or x20735 (not x21634))
+:assumption (or (not x26107) (not x12399))
+:assumption (or (not x7112) (not x1393) (not x24517))
+:assumption (or (not x28104) (not x19905))
+:assumption (or (not x8602) (not x16853) x16060)
+:assumption (or (not x9203) x22126)
+:assumption (or x6686 x17737 x30419 x25911)
+:assumption (or (not x20782) x27079 x10124 (not x3838) (not x21139) x24873 x22840 (not x14505) x10215)
+:assumption (or (not x25555) (not x23545))
+:assumption (or (not x20501) x8926)
+:assumption (or (not x7046) x17245)
+:assumption (or (not x18638) x11492)
+:assumption (or x25676 x7165)
+:assumption (or (not x5667) x30898 (not x15409))
+:assumption (or (not x24838) (not x12140))
+:assumption (or x4402 x24453)
+:assumption (or (not x21374) (not x12577))
+:assumption (or (not x25350) x30562 x6289)
+:assumption (or x24185 x7057)
+:assumption (or (not x29158) (not x14550))
+:assumption (or (not x5944) x19325)
+:assumption (or (not x1075) (not x16304))
+:assumption (or x1787 x17908)
+:assumption (or (not x993) x13649)
+:assumption (or (not x6300) (not x25522))
+:assumption (or x28112 x15799)
+:assumption (or x18594 (not x12490))
+:assumption (or x8002 x24943 (not x1262) x23244)
+:assumption (or (not x10395) x10735)
+:assumption (or x29300 x19774)
+:assumption (or (not x15437) x9008 (not x5272))
+:assumption (or (not x8711) x9630)
+:assumption (or x14946 x23923)
+:assumption (or (not x21710) x21425)
+:assumption (or x31465 x3273)
+:assumption (or (not x1262) (not x30325))
+:assumption (or x26155 (not x28064))
+:assumption (or (not x17734) x29478)
+:assumption (or x7699 (not x23244) (not x29508) x19522 x29538 (not x18475))
+:assumption (or (not x18240) (not x653))
+:assumption (or (not x19408) (not x16849))
+:assumption (or x12920 x24387)
+:assumption (or x5362 x30747)
+:assumption (or (not x18069) x3494 x3299 (not x13302))
+:assumption (or (not x30439) (not x14087) x6585)
+:assumption (or x27982 (not x28620))
+:assumption (or (not x467) (not x9008))
+:assumption (or (not x5412) x24478)
+:assumption (or (not x15929) (not x10753) x4512 x17436 x29620 x29439)
+:assumption (or x11498 x13956)
+:assumption (or x5798 x25279)
+:assumption (or (not x16796) x6147 x2500)
+:assumption (or (not x24080) x9722)
+:assumption (or (not x8049) (not x18431))
+:assumption (or x13708 (not x22655))
+:assumption (or (not x1553) x8002 (not x18411))
+:assumption (or x3032 x24983 x18859)
+:assumption (or (not x1448) x27427)
+:assumption (or (not x2582) (not x23221))
+:assumption (or x4250 (not x27164))
+:assumption (or x1786 x26899)
+:assumption (or x10442 (not x6304))
+:assumption (or (not x12644) x13622)
+:assumption (or (not x4774) x26748)
+:assumption (or (not x26441) (not x12033) (not x16374))
+:assumption (or (not x21695) (not x16475))
+:assumption (or x15007 (not x17225) x11104 x27482)
+:assumption (or (not x10419) x14043)
+:assumption (or (not x26133) (not x11263))
+:assumption (or (not x20467) x23244)
+:assumption (or (not x17105) (not x10695))
+:assumption (or (not x24722) (not x26898))
+:assumption (or (not x26290) (not x21592))
+:assumption (or x545 x24504)
+:assumption (or x9433 (not x25269))
+:assumption (or x15795 (not x23758))
+:assumption (or (not x3244) (not x17654))
+:assumption (or (not x28326) (not x28650))
+:assumption (or (not x9310) x771)
+:assumption (or x14794 (not x17806))
+:assumption (or x31225 (not x15892))
+:assumption (or x11505 (not x3894))
+:assumption (or x26469 (not x5962))
+:assumption (or x167 x11067)
+:assumption (or x567 x18619)
+:assumption (or (not x24614) (not x8004))
+:assumption (or x2681 (not x14987))
+:assumption (or x9491 (not x15668))
+:assumption (or (not x29606) (not x12820))
+:assumption (or x11281 (not x22779))
+:assumption (or x13297 x4607)
+:assumption (or (not x14435) (not x31328))
+:assumption (or x9377 (not x9529))
+:assumption (or x24209 (not x13956))
+:assumption (or (not x26912) x18772)
+:assumption (or x14638 x21920)
+:assumption (or x940 (not x6227))
+:assumption (or (not x13138) x18946 x9290 (not x6960) x30809 x30725)
+:assumption (or x870 (not x25739))
+:assumption (or (not x15525) x14915 (not x17534))
+:assumption (or (not x2480) (not x4204))
+:assumption (or x13956 x22521)
+:assumption (or x3163 (not x20758))
+:assumption (or (not x29606) (not x20104) x31134 x12814)
+:assumption (or x23894 x20060)
+:assumption (or (not x15058) x1042)
+:assumption (or (not x3022) x30038)
+:assumption (or x12907 x24809)
+:assumption (or x7612 (not x27998))
+:assumption (or x1770 (not x17780) (not x6142) x28908 x4000)
+:assumption (or (not x28984) (not x25472))
+:assumption (or (not x3001) (not x9527) x8367)
+:assumption (or x24261 (not x30751))
+:assumption (or x18276 x23605)
+:assumption (or x9073 (not x22925) x27198 (not x21827) x21725 (not x24149) x27550)
+:assumption (or (not x8933) x13433)
+:assumption (or (not x29606) (not x28251))
+:assumption (or (not x3652) (not x1884))
+:assumption (or x16071 (not x29875) x20211 x5975 x1393 (not x10852) (not x321) x28982)
+:assumption (or (not x24734) (not x23675))
+:assumption (or x26000 x11946)
+:assumption (or x17262 (not x10767))
+:assumption (or x29386 (not x24257))
+:assumption (or (not x375) x29157 x28885)
+:assumption (or x20586 (not x16654))
+:assumption (or x19537 (not x6331))
+:assumption (or x7567 x15799)
+:assumption (or (not x18691) (not x23386))
+:assumption (or (not x26883) x192)
+:assumption (or (not x28687) (not x24495))
+:assumption (or (not x9643) x25373 x8011 (not x13311))
+:assumption (or (not x10882) (not x9676))
+:assumption (or x13524 (not x18082))
+:assumption (or x26025 (not x4811))
+:assumption (or (not x28249) x27975)
+:assumption (or (not x10223) (not x27700))
+:assumption (or (not x1673) (not x30624))
+:assumption (or x17027 x4416)
+:assumption (or (not x2838) x1961)
+:assumption (or (not x2513) x5394 x26663)
+:assumption (or x12779 (not x24784))
+:assumption (or (not x22574) (not x23072))
+:assumption (or (not x11281) (not x376) x4216)
+:assumption (or x19078 (not x20607))
+:assumption (or (not x4623) (not x2427))
+:assumption (or (not x26908) (not x28835))
+:assumption (or (not x30950) x28460)
+:assumption (or (not x16025) x21013 x19955)
+:assumption (or (not x4451) (not x7147) x25336)
+:assumption (or x23244 (not x19274))
+:assumption (or x2906 x29442 (not x25179))
+:assumption (or x17501 x25659 (not x25582))
+:assumption (or x18956 (not x6130))
+:assumption (or (not x14928) (not x12596))
+:assumption (or (not x13712) (not x15355))
+:assumption (or x28500 x11221 (not x4382) (not x28541) x2827)
+:assumption (or x23330 (not x31817))
+:assumption (or (not x18534) (not x8190))
+:assumption (or (not x18279) x3588)
+:assumption (or (not x29422) (not x11259))
+:assumption (or x11311 x22627)
+:assumption (or x26019 (not x27537))
+:assumption (or (not x18266) x28652 (not x14967) (not x31352) (not x26023) x12103 (not x24652) x28496)
+:assumption (or (not x23911) (not x29401) (not x8321))
+:assumption (or x6226 (not x7553))
+:assumption (or x8214 x31003)
+:assumption (or (not x15626) x297)
+:assumption (or (not x27409) x28394)
+:assumption (or (not x8255) (not x9038))
+:assumption (or x3969 x15588)
+:assumption (or (not x1319) (not x22154))
+:assumption (or (not x24828) x8710)
+:assumption (or x28117 (not x19285) (not x30095) x40 x17083)
+:assumption (or (not x4566) (not x18486) (not x26733) x2432 (not x25031) x16504 x25133 x11296)
+:assumption (or (not x26938) (not x7406))
+:assumption (or (not x10090) x19282)
+:assumption (or (not x10841) (not x16327))
+:assumption (or x26783 (not x25113))
+:assumption (or x6903 x18519)
+:assumption (or x16614 (not x21110))
+:assumption (or x18698 (not x14093))
+:assumption (or x10488 x24507)
+:assumption (or (not x29620) (not x17436))
+:assumption (or x21070 x14851)
+:assumption (or x9477 (not x19449))
+:assumption (or (not x23244) (not x24737))
+:assumption (or (not x12718) x23720 (not x11506) x11316 (not x1810) (not x9919) x17729)
+:assumption (or (not x28147) (not x17642))
+:assumption (or (not x14053) (not x10162))
+:assumption (or (not x8472) (not x21008))
+:assumption (or (not x20375) (not x934))
+:assumption (or x1006 (not x16654))
+:assumption (or (not x20396) (not x18009))
+:assumption (or x4500 (not x22157) x18594 (not x14863))
+:assumption (or (not x8929) x24454 x14294)
+:assumption (or x7741 x4094)
+:assumption (or x25911 x8703)
+:assumption (or x12772 x9008)
+:assumption (or x20664 x21815)
+:assumption (or (not x20150) (not x162) x24860 (not x21111) x11942 (not x31364) x16451 (not x12038) (not x29814))
+:assumption (or (not x14839) x23156)
+:assumption (or x31178 (not x17699))
+:assumption (or x12645 (not x20769) (not x29022) x30485 (not x14476) x4259 (not x16353))
+:assumption (or (not x16138) x9283)
+:assumption (or (not x664) x8002)
+:assumption (or x24612 x8871)
+:assumption (or (not x17194) x16140)
+:assumption (or (not x12851) x19925)
+:assumption (or x28342 x2090)
+:assumption (or x15215 (not x26214))
+:assumption (or (not x20877) (not x1812))
+:assumption (or x21815 (not x17060))
+:assumption (or (not x16248) x25849)
+:assumption (or (not x20777) x3237)
+:assumption (or (not x1759) x4559)
+:assumption (or (not x21910) x31123)
+:assumption (or (not x30528) x12864)
+:assumption (or x26144 (not x8990))
+:assumption (or (not x10747) (not x26637))
+:assumption (or (not x7639) x17544)
+:assumption (or x5731 x22328 (not x20431) x8526 (not x10133))
+:assumption (or x1070 x19638)
+:assumption (or x18270 (not x11045))
+:assumption (or (not x23392) (not x8685))
+:assumption (or x3868 x6444 x17571)
+:assumption (or (not x7238) (not x20931) (not x15917) (not x10064))
+:assumption (or (not x29257) x15925 x15749 (not x7385))
+:assumption (or (not x30214) (not x22815))
+:assumption (or x17454 x24817)
+:assumption (or x29926 x22801 x2381 (not x23698) x9571)
+:assumption (or (not x22872) x17485)
+:assumption (or x30046 (not x16573))
+:assumption (or (not x6947) x28530)
+:assumption (or x24936 (not x27501))
+:assumption (or (not x11116) x29090)
+:assumption (or x11006 x26954)
+:assumption (or (not x797) x3111 x26376 (not x15769) x25499 x21815)
+:assumption (or x29442 x6741 x23244)
+:assumption (or (not x19711) x16508)
+:assumption (or (not x23227) x1411)
+:assumption (or (not x30124) x19895)
+:assumption (or (not x7785) (not x16278))
+:assumption (or (not x28443) x10943)
+:assumption (or x13786 (not x14508))
+:assumption (or x30487 x1768)
+:assumption (or (not x6258) (not x3107))
+:assumption (or x18466 x8602 x22664 x17576 x892 x11160 x5691 (not x23513))
+:assumption (or x28137 x4049)
+:assumption (or x2438 x1209)
+:assumption (or x23310 x24520)
+:assumption (or x9772 x28205)
+:assumption (or (not x1045) (not x1683))
+:assumption (or x20731 (not x16788))
+:assumption (or x21798 x22587)
+:assumption (or x16252 (not x29170))
+:assumption (or (not x22826) x3541)
+:assumption (or (not x20090) x19612 (not x16718) x16741)
+:assumption (or (not x13766) (not x13644))
+:assumption (or (not x19838) x1904)
+:assumption (or (not x30984) x22142)
+:assumption (or (not x30515) x11560)
+:assumption (or x2103 x3728)
+:assumption (or (not x28375) (not x18113))
+:assumption (or (not x11331) x30290)
+:assumption (or (not x28158) x23357)
+:assumption (or (not x11846) (not x6416))
+:assumption (or x3464 x22126)
+:assumption (or x22381 x1341)
+:assumption (or (not x5493) x11576 (not x14756) (not x22885))
+:assumption (or x18756 x1701 x13956)
+:assumption (or (not x16157) (not x22933))
+:assumption (or (not x7315) (not x24281))
+:assumption (or x4058 (not x560))
+:assumption (or (not x26213) (not x13486))
+:assumption (or (not x21012) x2444)
+:assumption (or x15366 x3478)
+:assumption (or (not x16025) x9807 (not x15441))
+:assumption (or x10180 (not x6183))
+:assumption (or x725 (not x26115))
+:assumption (or x22841 x10599)
+:assumption (or x1393 x31413)
+:assumption (or x8275 (not x24519))
+:assumption (or x22604 x4999)
+:assumption (or x18949 (not x8002))
+:assumption (or (not x1291) x18075)
+:assumption (or (not x3435) x14455 (not x1487) x4220 x18195)
+:assumption (or x21193 x6243 (not x30271))
+:assumption (or (not x30833) (not x15136))
+:assumption (or (not x6969) x3693)
+:assumption (or (not x22226) (not x6170))
+:assumption (or x342 x4979)
+:assumption (or (not x7094) (not x13812))
+:assumption (or x10226 x25170)
+:assumption (or (not x24570) x4259)
+:assumption (or (not x29312) x30422)
+:assumption (or x19143 (not x2724))
+:assumption (or x9509 (not x7854))
+:assumption (or (not x27621) x19874)
+:assumption (or x7953 x14033)
+:assumption (or x1136 (not x3639))
+:assumption (or (not x25840) x22737 x26288 x19394 x30612 (not x2099) (not x2695))
+:assumption (or x21803 (not x23784))
+:assumption (or (not x29116) x3330)
+:assumption (or (not x12942) (not x13101))
+:assumption (or x22360 x19737)
+:assumption (or (not x15892) x106)
+:assumption (or x28578 (not x22548))
+:assumption (or x4504 (not x26061) (not x1657) x26771 (not x10411))
+:assumption (or (not x516) (not x29649))
+:assumption (or (not x6518) (not x30855))
+:assumption (or (not x13107) x31598)
+:assumption (or x21609 (not x20165))
+:assumption (or x291 (not x24255))
+:assumption (or (not x5496) (not x13858))
+:assumption (or x20119 (not x10315))
+:assumption (or (not x22268) (not x25305))
+:assumption (or x8502 (not x18634))
+:assumption (or x17852 (not x13138))
+:assumption (or (not x27163) (not x4989))
+:assumption (or (not x12397) x6080)
+:assumption (or x14819 x15650 (not x12148) x15461)
+:assumption (or x14784 x19297)
+:assumption (or x15972 x19927)
+:assumption (or (not x1280) (not x7960))
+:assumption (or (not x14963) x20866)
+:assumption (or x5932 (not x14552))
+:assumption (or (not x28813) (not x18633))
+:assumption (or (not x8002) x20107)
+:assumption (or x2925 x215)
+:assumption (or (not x27104) x11122)
+:assumption (or (not x4362) x24239)
+:assumption (or x17940 (not x18280) x7959)
+:assumption (or (not x16311) (not x28225))
+:assumption (or (not x28586) (not x16597))
+:assumption (or x12116 x13201)
+:assumption (or x9947 x19978)
+:assumption (or x456 (not x24042))
+:assumption (or x29386 (not x30603))
+:assumption (or (not x28990) x13974)
+:assumption (or (not x16258) x493 x14068)
+:assumption (or x10735 x13380)
+:assumption (or x18249 x10037)
+:assumption (or x8940 (not x5089))
+:assumption (or (not x11916) (not x27067) (not x6444) x2288)
+:assumption (or (not x18735) (not x27112))
+:assumption (or (not x15359) (not x2520))
+:assumption (or x25962 (not x17655))
+:assumption (or x23958 x28040 x25574)
+:assumption (or (not x1625) (not x17907))
+:assumption (or (not x16998) x15783)
+:assumption (or x30973 x10064)
+:assumption (or (not x11638) x1899)
+:assumption (or (not x19985) x28979)
+:assumption (or x31627 x2771 x6594 x17534)
+:assumption (or (not x4439) x17001)
+:assumption (or x14777 (not x9943))
+:assumption (or x13456 x2783 x4693 x9043 x26176 (not x11176) x25151)
+:assumption (or (not x14558) x28556)
+:assumption (or (not x19473) (not x4933) (not x6076) x14458)
+:assumption (or x5933 (not x6243) (not x5487) (not x30271))
+:assumption (or (not x314) x22246)
+:assumption (or x25637 (not x7697))
+:assumption (or x29140 (not x11792))
+:assumption (or x3384 (not x17359))
+:assumption (or (not x26114) (not x29699))
+:assumption (or (not x30178) x26762 (not x1920))
+:assumption (or (not x16618) x26274)
+:assumption (or x24853 x1920 (not x25624) x27104 x19667)
+:assumption (or x10397 (not x20867))
+:assumption (or x3525 (not x1144))
+:assumption (or x285 (not x18003) x19948 x4259 (not x923) x19864)
+:assumption (or x18199 (not x20065) (not x10901))
+:assumption (or (not x14010) x15037)
+:assumption (or (not x23325) (not x3596))
+:assumption (or x13956 x26394)
+:assumption (or x18882 x27138)
+:assumption (or x18694 x3165)
+:assumption (or (not x7939) (not x30641) x22412 x3307 x30618 x18859)
+:assumption (or (not x23235) x16836 x17037 (not x17997) (not x1025))
+:assumption (or (not x3049) (not x4078))
+:assumption (or x18567 x20018 (not x18969) (not x8002))
+:assumption (or x31898 (not x15413))
+:assumption (or (not x29429) (not x16962))
+:assumption (or (not x26320) x144)
+:assumption (or x8291 x1567)
+:assumption (or x13457 x14294)
+:assumption (or (not x14411) x28693)
+:assumption (or (not x13956) (not x8307) (not x22493))
+:assumption (or (not x3754) x19982)
+:assumption (or (not x1984) x12272 (not x6149) x15419 x7783 x2064)
+:assumption (or (not x19922) x15016)
+:assumption (or (not x20042) x15140 x5528)
+:assumption (or x2436 x6417)
+:assumption (or x14052 x28912)
+:assumption (or x9924 (not x27465) (not x17635))
+:assumption (or (not x11797) (not x13428))
+:assumption (or x19168 (not x23413))
+:assumption (or (not x25606) x11383)
+:assumption (or (not x29042) (not x14375))
+:assumption (or (not x24227) x23386 x4258)
+:assumption (or x30482 (not x31455) x9970 x1536 (not x31470) x2503)
+:assumption (or (not x13956) (not x24831))
+:assumption (or x28844 x18820)
+:assumption (or x1458 x23935)
+:assumption (or x15231 x26998)
+:assumption (or (not x18519) (not x7596))
+:assumption (or x12176 (not x5777) (not x12387) x19228)
+:assumption (or x18497 x7792)
+:assumption (or (not x24883) x17363)
+:assumption (or (not x11879) (not x29879))
+:assumption (or (not x11201) (not x740))
+:assumption (or x17227 (not x28935))
+:assumption (or x23589 (not x25659))
+:assumption (or x2557 x18068)
+:assumption (or x28332 (not x16940))
+:assumption (or (not x20961) x10540 (not x15287))
+:assumption (or (not x19145) x2834)
+:assumption (or (not x20134) (not x11825))
+:assumption (or x23436 x23265)
+:assumption (or (not x23250) x12329)
+:assumption (or x1703 x23517)
+:assumption (or (not x18333) x3770 (not x11495))
+:assumption (or x15789 (not x27616))
+:assumption (or (not x26919) (not x22936))
+:assumption (or x4620 (not x7964) (not x9577))
+:assumption (or x5528 (not x29340))
+:assumption (or (not x2069) (not x14591))
+:assumption (or x11036 (not x7859) x30246)
+:assumption (or x28157 (not x8002) x11836)
+:assumption (or (not x14591) x27369 (not x15795) x9152)
+:assumption (or x30082 (not x2533))
+:assumption (or (not x14850) (not x23244))
+:assumption (or (not x21224) x8002)
+:assumption (or x24391 x28846)
+:assumption (or (not x27951) (not x12515))
+:assumption (or x9324 x663)
+:assumption (or (not x1538) x24341)
+:assumption (or x28109 (not x5328))
+:assumption (or x25541 x9008)
+:assumption (or (not x23333) x1820 x3618 x28358 (not x23553))
+:assumption (or (not x3440) (not x21968) x29606 x18274 x30609)
+:assumption (or x5106 x15679 (not x31439) x6367)
+:assumption (or x10874 x2110)
+:assumption (or x18886 x28619)
+:assumption (or x16021 (not x5779))
+:assumption (or x10064 x15917 (not x12880) (not x5649))
+:assumption (or (not x3557) (not x14796))
+:assumption (or x22550 x26902)
+:assumption (or (not x26479) (not x3521))
+:assumption (or x18037 x288 (not x28973) x11214)
+:assumption (or x27773 x27440)
+:assumption (or x8379 (not x10909) (not x11952) (not x25697) (not x21577))
+:assumption (or (not x4011) x22992)
+:assumption (or x7496 (not x21972))
+:assumption (or (not x8921) (not x6594))
+:assumption (or (not x29874) x3398 (not x30599) x23378 (not x5396) (not x9448) x7643)
+:assumption (or (not x23364) (not x26535))
+:assumption (or x7081 x23975)
+:assumption (or (not x7884) (not x16707))
+:assumption (or x5343 x8357)
+:assumption (or x31099 x18787)
+:assumption (or x4431 x24598)
+:assumption (or (not x3579) x30846)
+:assumption (or (not x1883) (not x22604))
+:assumption (or (not x4019) (not x18854))
+:assumption (or (not x7643) x26573 x220)
+:assumption (or (not x26893) x17288)
+:assumption (or (not x10507) (not x21648))
+:assumption (or x23161 (not x9944) (not x27725))
+:assumption (or (not x13487) (not x21137))
+:assumption (or x1345 (not x9528))
+:assumption (or (not x8326) x3602 (not x6325) (not x15576) x28687 x20983 x24495 (not x186) x205)
+:assumption (or x22714 (not x16708))
+:assumption (or (not x21100) x29508)
+:assumption (or (not x21848) x25911)
+:assumption (or (not x12528) (not x13499))
+:assumption (or (not x7360) x31826)
+:assumption (or x19778 x25659)
+:assumption (or (not x10909) (not x27742))
+:assumption (or (not x6431) x14907)
+:assumption (or x10110 x20938)
+:assumption (or (not x17472) (not x3063))
+:assumption (or (not x30609) x3440)
+:assumption (or (not x2533) x15605)
+:assumption (or x4212 x14766)
+:assumption (or x11612 x15722)
+:assumption (or (not x2495) x23614)
+:assumption (or (not x26110) (not x918))
+:assumption (or x16735 (not x31575))
+:assumption (or (not x741) x22732 (not x16304) x15795)
+:assumption (or (not x9457) (not x7431))
+:assumption (or x27351 (not x20521))
+:assumption (or (not x23244) (not x9166))
+:assumption (or (not x17376) (not x11646))
+:assumption (or (not x12342) x3683)
+:assumption (or x12588 (not x26168))
+:assumption (or x18693 x8594)
+:assumption (or x19177 (not x15917))
+:assumption (or x6144 (not x19367))
+:assumption (or x282 x23244 (not x22941))
+:assumption (or (not x17114) x12176)
+:assumption (or (not x5853) (not x29196))
+:assumption (or x22116 x7330)
+:assumption (or x20083 x23678)
+:assumption (or (not x5255) x18326)
+:assumption (or (not x19632) (not x21815))
+:assumption (or x22462 x26026 x16933 x18648)
+:assumption (or x22964 x15706)
+:assumption (or x21078 (not x7302))
+:assumption (or (not x4983) (not x23509) (not x7917) x5607)
+:assumption (or x29461 x15011)
+:assumption (or x8255 x9038)
+:assumption (or (not x26560) x8694)
+:assumption (or x2509 x12925)
+:assumption (or x25659 x30309 (not x15655))
+:assumption (or (not x918) (not x17659))
+:assumption (or x21815 x22811 x29419 x15236 x21322 x19007)
+:assumption (or x8551 (not x27554))
+:assumption (or (not x27779) x11488)
+:assumption (or (not x27064) x21015)
+:assumption (or x4623 (not x21298) (not x8236) (not x10654))
+:assumption (or (not x1582) x8640)
+:assumption (or x13623 x2248)
+:assumption (or (not x13891) x10932)
+:assumption (or (not x24072) (not x6466) (not x29124) (not x6019) (not x14296) x983)
+:assumption (or x27786 x23314 (not x21298))
+:assumption (or (not x26225) (not x7967))
+:assumption (or (not x10753) x3718)
+:assumption (or (not x19581) x8288)
+:assumption (or x12523 x13902)
+:assumption (or x18270 (not x400))
+:assumption (or x13792 (not x15659) (not x547))
+:assumption (or x8540 x23891)
+:assumption (or x14535 (not x24780))
+:assumption (or x10744 (not x11406))
+:assumption (or (not x20412) (not x11108))
+:assumption (or (not x29065) x19157)
+:assumption (or (not x29021) (not x26284))
+:assumption (or (not x31500) (not x13188) (not x286))
+:assumption (or (not x13018) (not x20286))
+:assumption (or (not x13128) (not x26615))
+:assumption (or x25741 (not x27955))
+:assumption (or x21298 (not x1784))
+:assumption (or x13444 x25789)
+:assumption (or (not x10084) x11295)
+:assumption (or x30564 x11377)
+:assumption (or (not x25688) x2953)
+:assumption (or (not x5929) x11879 (not x5006) x29312)
+:assumption (or (not x31140) (not x8147))
+:assumption (or (not x18357) x5895)
+:assumption (or (not x31606) x381)
+:assumption (or (not x3472) x21653)
+:assumption (or x14334 x1838)
+:assumption (or (not x1224) x29457)
+:assumption (or x25441 x12846)
+:assumption (or x30863 (not x13407))
+:assumption (or (not x19454) (not x8100))
+:assumption (or (not x20060) (not x9398) (not x12743))
+:assumption (or (not x25462) (not x21208))
+:assumption (or (not x4133) x3291)
+:assumption (or (not x31234) x17784)
+:assumption (or x23533 (not x31278) x6311 x30091 x6941)
+:assumption (or x2806 (not x11391))
+:assumption (or (not x7187) x6149)
+:assumption (or x12271 (not x31692))
+:assumption (or (not x31859) (not x5573))
+:assumption (or x29856 (not x15169))
+:assumption (or x6594 (not x3702))
+:assumption (or x31743 (not x805))
+:assumption (or (not x10775) (not x15095))
+:assumption (or x13487 x8208 x14902)
+:assumption (or x3671 x3815 x1491)
+:assumption (or (not x11016) (not x1858))
+:assumption (or (not x9709) x3386)
+:assumption (or (not x9862) (not x31645) (not x9825) x29347)
+:assumption (or (not x13385) x31134)
+:assumption (or (not x17159) x8158)
+:assumption (or (not x17465) (not x11725))
+:assumption (or (not x8258) (not x6921))
+:assumption (or x962 (not x22562))
+:assumption (or (not x17565) x9109)
+:assumption (or x1175 (not x26024))
+:assumption (or x8658 (not x22309) x11320 x14117)
+:assumption (or x27319 (not x25797))
+:assumption (or (not x13653) (not x26545))
+:assumption (or (not x29746) (not x9243))
+:assumption (or (not x27537) x540)
+:assumption (or x17557 (not x11687))
+:assumption (or (not x14947) x169)
+:assumption (or (not x10872) x3736)
+:assumption (or x28006 x1093)
+:assumption (or x20881 x478)
+:assumption (or (not x2672) (not x6188))
+:assumption (or (not x28787) x30557)
+:assumption (or x18683 (not x19140))
+:assumption (or (not x29610) (not x23097))
+:assumption (or (not x469) x2500 x12544 x2951)
+:assumption (or x29042 x3401)
+:assumption (or (not x25644) x26680)
+:assumption (or (not x20087) x18352)
+:assumption (or x27515 (not x25024))
+:assumption (or (not x20827) x29811 x2452)
+:assumption (or x27529 x8002)
+:assumption (or x21021 (not x26289))
+:assumption (or (not x13975) x20676)
+:assumption (or (not x1776) x24487)
+:assumption (or x24640 (not x10936))
+:assumption (or (not x30006) (not x31504))
+:assumption (or x24699 (not x24027))
+:assumption (or x4320 x25693)
+:assumption (or (not x30915) x26998)
+:assumption (or (not x9649) (not x19927) x16857 (not x19602) x29443 (not x24138) (not x7492))
+:assumption (or x30771 (not x22059) x18871)
+:assumption (or (not x21358) x23279 x25151 (not x11047))
+:assumption (or (not x6220) x9322 (not x24948))
+:assumption (or (not x18537) x10803)
+:assumption (or (not x28541) x11850)
+:assumption (or (not x4579) x29239)
+:assumption (or x13144 (not x22766))
+:assumption (or (not x18074) (not x15786))
+:assumption (or (not x13338) (not x20970))
+:assumption (or x14449 x30163)
+:assumption (or x18117 x14953)
+:assumption (or (not x17855) x7489)
+:assumption (or x23244 x15812)
+:assumption (or (not x2837) x21112 x19090 (not x29766))
+:assumption (or x21815 (not x4046))
+:assumption (or x3124 x26485 (not x10909))
+:assumption (or x5559 x24302)
+:assumption (or (not x13837) (not x19575))
+:assumption (or (not x27382) (not x3909))
+:assumption (or (not x28098) x12089)
+:assumption (or (not x27663) (not x22822))
+:assumption (or (not x14963) x10994)
+:assumption (or (not x8610) x10335)
+:assumption (or (not x24621) x4053 x16132 (not x12324) x20191)
+:assumption (or x234 x5087)
+:assumption (or (not x14562) (not x24264))
+:assumption (or x29057 (not x1231))
+:assumption (or x20580 x7489)
+:assumption (or x23038 x7919)
+:assumption (or x22208 (not x1393) (not x10184))
+:assumption (or x2732 (not x28820))
+:assumption (or (not x18821) (not x3247))
+:assumption (or x26628 x10690 x27537)
+:assumption (or (not x29606) (not x23244) (not x18474))
+:assumption (or (not x28901) (not x11281))
+:assumption (or (not x15670) (not x17936))
+:assumption (or (not x28145) x27884)
+:assumption (or (not x26840) x5352 x28589)
+:assumption (or x11682 (not x15794))
+:assumption (or (not x22390) x21772)
+:assumption (or x20033 x23611)
+:assumption (or x13185 x3001)
+:assumption (or (not x20341) (not x21690))
+:assumption (or x9126 (not x943))
+:assumption (or (not x12277) x6974)
+:assumption (or (not x169) x26993)
+:assumption (or (not x27421) (not x13174))
+:assumption (or (not x25421) (not x25988))
+:assumption (or (not x3183) (not x28651))
+:assumption (or (not x16027) (not x1582))
+:assumption (or x23789 x4081)
+:assumption (or (not x16256) x12503)
+:assumption (or x18377 (not x25811))
+:assumption (or (not x28266) (not x3890))
+:assumption (or x25152 x1138)
+:assumption (or x19969 (not x27625))
+:assumption (or (not x27220) x5899)
+:assumption (or (not x218) (not x9205))
+:assumption (or (not x14508) (not x17004))
+:assumption (or x20087 (not x6944))
+:assumption (or (not x27760) x5528 (not x7966))
+:assumption (or (not x18968) (not x24442) (not x2814) x22626)
+:assumption (or (not x21669) x25581)
+:assumption (or x24243 x19495)
+:assumption (or (not x9039) (not x30234))
+:assumption (or x7657 (not x16620) x25060)
+:assumption (or (not x16107) x23028 (not x25366))
+:assumption (or x27648 (not x4728))
+:assumption (or (not x14000) (not x9989))
+:assumption (or (not x22481) (not x15054))
+:assumption (or (not x20035) (not x13956))
+:assumption (or x3552 (not x3795))
+:assumption (or x28858 x4581)
+:assumption (or x14410 x5367)
+:assumption (or x22583 x16064)
+:assumption (or (not x17359) (not x1593) x25501)
+:assumption (or x9162 (not x9908))
+:assumption (or x2428 (not x16025))
+:assumption (or (not x5295) x19777)
+:assumption (or x3158 (not x15467))
+:assumption (or (not x22439) x27104 x20606)
+:assumption (or x30633 x18484)
+:assumption (or x31028 (not x7013) (not x5544) (not x17265))
+:assumption (or x31857 x5025 (not x18251))
+:assumption (or x28299 (not x10376))
+:assumption (or (not x16676) x17843)
+:assumption (or (not x10685) (not x10228))
+:assumption (or x23382 x11373)
+:assumption (or x22731 x26525)
+:assumption (or (not x13299) (not x7179))
+:assumption (or (not x25659) (not x30666))
+:assumption (or (not x10949) (not x2783) x13438 x17447 x28885 x17026 (not x3872) (not x28041))
+:assumption (or x8230 (not x25864))
+:assumption (or x25135 (not x24969))
+:assumption (or x31561 x20096)
+:assumption (or (not x29587) (not x23880))
+:assumption (or x13956 x1235)
+:assumption (or (not x19893) (not x24691))
+:assumption (or (not x18788) x29102)
+:assumption (or (not x18701) (not x3453))
+:assumption (or (not x23727) x542)
+:assumption (or x11248 x25614)
+:assumption (or (not x17281) x6523)
+:assumption (or x24282 (not x19295))
+:assumption (or (not x24170) (not x23126))
+:assumption (or (not x17618) x18622)
+:assumption (or x14632 (not x21462))
+:assumption (or (not x28167) x11577)
+:assumption (or (not x28023) (not x25944) x8544 (not x26180) x11914)
+:assumption (or (not x23425) (not x3979))
+:assumption (or (not x3223) (not x1953))
+:assumption (or (not x20009) x17575)
+:assumption (or x11729 x29860)
+:assumption (or x1457 x28946)
+:assumption (or x30676 x7368)
+:assumption (or x1116 (not x16568))
+:assumption (or (not x1393) x27842 (not x14014))
+:assumption (or x2174 x24102 (not x4866))
+:assumption (or (not x26811) x21835)
+:assumption (or x3744 (not x11281) x16510)
+:assumption (or (not x24586) x19601)
+:assumption (or (not x16375) x15445)
+:assumption (or (not x27056) x684)
+:assumption (or (not x20738) x5528)
+:assumption (or x17547 x5087)
+:assumption (or (not x22569) (not x30565) x25895 (not x15924) x20052 (not x31615))
+:assumption (or x6457 (not x8818))
+:assumption (or x14090 x13654)
+:assumption (or x21906 x21527)
+:assumption (or x21168 x25659)
+:assumption (or (not x26369) x6635)
+:assumption (or (not x2974) x9239)
+:assumption (or x11241 x29081)
+:assumption (or (not x20872) (not x15194))
+:assumption (or (not x8382) x16216 (not x9007))
+:assumption (or x24064 (not x82))
+:assumption (or (not x17305) (not x17450))
+:assumption (or x21642 x12176)
+:assumption (or x30588 x13703)
+:assumption (or (not x18154) (not x16802) (not x5120))
+:assumption (or (not x339) x28960)
+:assumption (or x24698 x27668)
+:assumption (or x7629 (not x6149))
+:assumption (or (not x27347) x1166 x25683 (not x9790) x9451 (not x17074))
+:assumption (or (not x11792) x12722)
+:assumption (or x20735 (not x3288))
+:assumption (or x3746 x25355)
+:assumption (or (not x16700) (not x5694))
+:assumption (or (not x30207) (not x26647))
+:assumption (or (not x499) x21298 (not x6175) x21940)
+:assumption (or x24958 x27365)
+:assumption (or (not x26785) (not x13754))
+:assumption (or x9008 (not x26335) x28944 x20507 x8888 x4882)
+:assumption (or x9716 x13689)
+:assumption (or (not x26682) (not x7903))
+:assumption (or (not x30995) (not x18209))
+:assumption (or x3243 x7181)
+:assumption (or x5528 (not x270))
+:assumption (or (not x7587) (not x13956))
+:assumption (or (not x1775) (not x6551))
+:assumption (or x8602 (not x19256) x4395)
+:assumption (or (not x19377) x21202)
+:assumption (or x14650 x20908)
+:assumption (or (not x5698) x8013)
+:assumption (or (not x2401) (not x26576))
+:assumption (or (not x26099) x7739)
+:assumption (or (not x7275) x24298 x9572 (not x15102) (not x15857) x28377)
+:assumption (or (not x8822) (not x8002) (not x11110))
+:assumption (or x9361 (not x22747))
+:assumption (or (not x15204) (not x6594) x19193 (not x17534))
+:assumption (or x8142 x16160)
+:assumption (or (not x11778) (not x18212) (not x15456) x2993 (not x18044) x10064)
+:assumption (or (not x1682) x1773)
+:assumption (or x14518 (not x1953))
+:assumption (or (not x22496) x16252)
+:assumption (or (not x31163) x22431)
+:assumption (or x25151 x17817)
+:assumption (or x11618 x20312)
+:assumption (or (not x17934) x5644)
+:assumption (or x22183 x23244)
+:assumption (or x7600 (not x17846) (not x12588) (not x7298))
+:assumption (or x11086 x14455)
+:assumption (or (not x12457) x28331 (not x25366))
+:assumption (or x25355 (not x20688))
+:assumption (or (not x40) (not x17083))
+:assumption (or x22159 (not x29772))
+:assumption (or (not x14839) (not x25059))
+:assumption (or (not x23364) (not x27643) x3811)
+:assumption (or x9064 x30135)
+:assumption (or x3881 x15072)
+:assumption (or (not x14614) x13096)
+:assumption (or x11165 x6024 (not x10478) x19215 x11493)
+:assumption (or (not x15460) (not x30804))
+:assumption (or x28906 x15455)
+:assumption (or x15258 (not x8254))
+:assumption (or (not x9344) x21653)
+:assumption (or (not x8089) x428)
+:assumption (or (not x14839) (not x24251) x12623)
+:assumption (or x31872 (not x44))
+:assumption (or (not x23492) (not x14958))
+:assumption (or x14688 (not x22685))
+:assumption (or x3269 (not x37))
+:assumption (or x1782 x5953)
+:assumption (or x12944 x14020)
+:assumption (or x6329 (not x12105))
+:assumption (or (not x15537) (not x5951) x24376)
+:assumption (or (not x26900) x5888 (not x18519))
+:assumption (or (not x26603) (not x13963) x25155 x18123 (not x19151) x19214 x27454 (not x7978) (not x13874) (not x6098))
+:assumption (or (not x21574) x7514)
+:assumption (or x16478 x27628)
+:assumption (or (not x27955) x9973)
+:assumption (or x8400 (not x26559))
+:assumption (or x27150 (not x1433))
+:assumption (or (not x27910) (not x21298) (not x15071) (not x1944))
+:assumption (or x13973 (not x24136))
+:assumption (or x8862 x27974)
+:assumption (or x23283 x12242)
+:assumption (or (not x3696) x5528)
+:assumption (or x30480 x23343)
+:assumption (or (not x18369) x31684)
+:assumption (or x11697 (not x20053))
+:assumption (or x6414 x4039 x24724)
+:assumption (or x17182 (not x19864))
+:assumption (or (not x29686) x8603)
+:assumption (or (not x11163) x8813)
+:assumption (or x28033 (not x1114))
+:assumption (or x9673 x16351)
+:assumption (or (not x29613) x16537)
+:assumption (or x18293 x14820)
+:assumption (or (not x30501) (not x19730))
+:assumption (or (not x8484) (not x9366) x18385)
+:assumption (or x8268 x13161)
+:assumption (or x12311 x21521)
+:assumption (or x24957 x23477)
+:assumption (or (not x23399) x4106)
+:assumption (or x18927 x24050)
+:assumption (or x31620 (not x23162) (not x31696) x30755)
+:assumption (or (not x22473) x2483)
+:assumption (or (not x7032) (not x31478))
+:assumption (or x5647 (not x18179))
+:assumption (or x810 x7379)
+:assumption (or x25362 (not x24766))
+:assumption (or x16365 x2245 x12248 x9501)
+:assumption (or (not x19789) (not x16604))
+:assumption (or (not x24803) x15260)
+:assumption (or (not x2677) (not x3218))
+:assumption (or x21267 (not x17438) x19140 x10848 (not x11929) x1767 x1582)
+:assumption (or (not x9171) x28481)
+:assumption (or x5160 x5485 (not x5896) (not x22782) x27654 (not x13836))
+:assumption (or (not x16425) (not x8134))
+:assumption (or x3758 (not x26510) (not x12538))
+:assumption (or (not x22033) (not x17390))
+:assumption (or (not x12001) (not x15266))
+:assumption (or (not x26314) (not x29976))
+:assumption (or x21582 x23627)
+:assumption (or x15515 x8805)
+:assumption (or x15934 (not x12358))
+:assumption (or (not x19756) (not x23294) (not x9008))
+:assumption (or (not x4355) x1739)
+:assumption (or (not x25640) (not x21330))
+:assumption (or (not x8043) x20129)
+:assumption (or x3004 (not x31824))
+:assumption (or (not x3782) x9574 x31344)
+:assumption (or x2817 x15034)
+:assumption (or x19562 (not x29504))
+:assumption (or (not x11108) x9336)
+:assumption (or (not x8097) x31833)
+:assumption (or x20528 x26714)
+:assumption (or (not x3618) x19948)
+:assumption (or x29521 x25731)
+:assumption (or x9299 (not x1729))
+:assumption (or x2691 (not x335))
+:assumption (or x18033 (not x12686))
+:assumption (or x4403 (not x8961))
+:assumption (or x9137 (not x16556))
+:assumption (or (not x24144) (not x15367) (not x18021) x26671 x28818 x9008)
+:assumption (or (not x8116) x23549)
+:assumption (or x30457 x9260)
+:assumption (or (not x28541) (not x19961))
+:assumption (or (not x24675) x6098)
+:assumption (or x15640 (not x22954))
+:assumption (or (not x11808) (not x23484))
+:assumption (or (not x24979) (not x16333))
+:assumption (or (not x19663) x2093)
+:assumption (or (not x15887) (not x8431) (not x22527) (not x18630) x13375 (not x3863) (not x16852) (not x152))
+:assumption (or (not x28968) (not x10874) (not x5382) x31663 x23254)
+:assumption (or x3212 x18815)
+:assumption (or x2519 (not x17850))
+:assumption (or x11076 (not x31501))
+:assumption (or x5528 (not x16639))
+:assumption (or x22765 x24864)
+:assumption (or (not x7012) x23276)
+:assumption (or x19051 (not x16017))
+:assumption (or x25960 (not x23579) x26905 x15668 (not x15352) x1393 (not x27943) (not x24406))
+:assumption (or (not x28148) (not x827))
+:assumption (or x19446 x23059 (not x17116))
+:assumption (or (not x27803) x766)
+:assumption (or (not x27334) x25421)
+:assumption (or (not x14391) x4831)
+:assumption (or x4868 (not x5583))
+:assumption (or (not x3084) (not x18439) x31687 (not x31767))
+:assumption (or (not x22745) (not x25659))
+:assumption (or x16274 x25271)
+:assumption (or (not x8572) (not x28167))
+:assumption (or x8551 x5600)
+:assumption (or x18349 x25506)
+:assumption (or (not x11412) (not x7677) x15399 x9008 x11456 (not x8863))
+:assumption (or x25202 x27667)
+:assumption (or x29291 (not x16217) (not x2867) x28260 x21135)
+:assumption (or x27866 x10671)
+:assumption (or (not x15476) x26586)
+:assumption (or x22647 (not x15350))
+:assumption (or (not x31499) x2905)
+:assumption (or (not x28315) (not x13927))
+:assumption (or x26119 x29495)
+:assumption (or (not x2049) (not x6756))
+:assumption (or x1283 x27712)
+:assumption (or x18408 (not x15889))
+:assumption (or x6381 x8847)
+:assumption (or (not x25602) (not x7804))
+:assumption (or (not x15797) x13437)
+:assumption (or (not x21154) (not x8734))
+:assumption (or x1132 (not x14086))
+:assumption (or (not x15039) (not x1393) (not x21558))
+:assumption (or x23508 (not x21021))
+:assumption (or (not x30885) (not x15088))
+:assumption (or x5028 (not x15254) x18023)
+:assumption (or x25572 x2701)
+:assumption (or x18545 (not x2420))
+:assumption (or (not x30114) x17917)
+:assumption (or (not x337) x2383)
+:assumption (or x16091 (not x30138))
+:assumption (or x9025 (not x5268))
+:assumption (or (not x4158) x7349)
+:assumption (or x30954 x9194)
+:assumption (or (not x4209) (not x999))
+:assumption (or x15687 (not x4918))
+:assumption (or (not x18621) (not x8976))
+:assumption (or x21712 x31571)
+:assumption (or (not x3192) x2232 (not x10447) x7222)
+:assumption (or x4514 (not x6791) x28066 (not x6695))
+:assumption (or (not x29323) x16952)
+:assumption (or (not x18101) (not x12315))
+:assumption (or x16802 (not x2161) (not x14591) (not x16510) (not x21815))
+:assumption (or x4399 (not x9704))
+:assumption (or (not x11653) x5548)
+:assumption (or (not x4237) x14975)
+:assumption (or x17977 x4915 x5977 x17534 x23521 x22315 (not x22938) (not x30780))
+:assumption (or (not x13035) x4315)
+:assumption (or (not x20765) (not x25223))
+:assumption (or (not x5536) x26904)
+:assumption (or x28112 (not x2044))
+:assumption (or x21390 x24616)
+:assumption (or (not x18859) (not x7052) x14540)
+:assumption (or (not x12676) x22978 x16636)
+:assumption (or x9034 (not x8586))
+:assumption (or (not x7671) (not x4876))
+:assumption (or (not x30748) (not x30530))
+:assumption (or (not x16639) (not x24917))
+:assumption (or x10175 (not x29066))
+:assumption (or (not x918) x6322)
+:assumption (or x27551 (not x28973))
+:assumption (or x4504 x6441)
+:assumption (or (not x22888) (not x25832))
+:assumption (or (not x13703) (not x2667))
+:assumption (or x9023 (not x27244))
+:assumption (or (not x9966) (not x23244))
+:assumption (or (not x22915) (not x10593) x24167 x12601 (not x18381))
+:assumption (or x3092 (not x17779))
+:assumption (or x13436 x10207)
+:assumption (or (not x13749) (not x9932))
+:assumption (or x16375 x1272)
+:assumption (or x2333 (not x12987))
+:assumption (or x449 (not x14053))
+:assumption (or x17235 (not x27456))
+:assumption (or x6521 (not x5817))
+:assumption (or x26753 x12049)
+:assumption (or x24625 x31134)
+:assumption (or (not x12591) x13506)
+:assumption (or x5528 (not x2531))
+:assumption (or (not x26863) x2522)
+:assumption (or x20389 x17851)
+:assumption (or (not x26575) (not x31117))
+:assumption (or (not x6916) (not x4378) x30113)
+:assumption (or (not x11908) x6365)
+:assumption (or (not x16504) (not x28325))
+:assumption (or (not x14624) (not x27562))
+:assumption (or x10897 (not x19715))
+:assumption (or (not x18362) (not x13755))
+:assumption (or (not x1265) (not x10559) (not x2688) (not x22154))
+:assumption (or (not x13956) (not x22898) (not x16809))
+:assumption (or x29352 (not x30816))
+:assumption (or (not x24119) x1419)
+:assumption (or (not x9008) x23066)
+:assumption (or (not x1393) (not x3563) x880)
+:assumption (or x31367 x10393)
+:assumption (or (not x925) x22983)
+:assumption (or x7407 (not x26897) x3299)
+:assumption (or x12684 x4757)
+:assumption (or x2787 (not x23946) x10261 (not x30208))
+:assumption (or x13808 (not x20136))
+:assumption (or (not x31065) (not x25818))
+:assumption (or x26763 (not x29606))
+:assumption (or x26836 (not x9661))
+:assumption (or (not x3687) (not x10673) (not x9416) (not x27192) x21669 (not x15537))
+:assumption (or (not x5548) x4259 x19099 x12713 x6811 x11653)
+:assumption (or (not x5108) (not x11262))
+:assumption (or x23200 x22758)
+:assumption (or (not x25081) (not x15861))
+:assumption (or x19501 x20851)
+:assumption (or (not x22892) x24517)
+:assumption (or (not x4704) x26124)
+:assumption (or (not x19204) x2175)
+:assumption (or x15282 x13198)
+:assumption (or x5536 (not x26904) (not x5528) (not x302) (not x24110) (not x28712))
+:assumption (or (not x9877) x22782)
+:assumption (or (not x25374) (not x27892))
+:assumption (or (not x17614) x10633)
+:assumption (or (not x29726) x7732 x1040 x27498 x6573 (not x15123) x17460 (not x10355))
+:assumption (or x8002 (not x17545) x9434 (not x4826) (not x18355) x17453)
+:assumption (or x5025 (not x24594))
+:assumption (or (not x28617) x18907)
+:assumption (or (not x27319) (not x21232) (not x12745) x25797)
+:assumption (or x11355 x12405 (not x26656))
+:assumption (or x14690 (not x4222))
+:assumption (or x29757 (not x20562))
+:assumption (or (not x16469) x24391)
+:assumption (or (not x24157) x14551 x11099 (not x28061))
+:assumption (or (not x4400) x3272)
+:assumption (or x1696 x26292)
+:assumption (or x23368 x19469)
+:assumption (or x19971 (not x5139))
+:assumption (or (not x1393) (not x21143))
+:assumption (or x13828 x2454)
+:assumption (or x20175 x1897)
+:assumption (or (not x22666) (not x25986))
+:assumption (or x10039 x21908)
+:assumption (or (not x20971) x29566)
+:assumption (or x31109 (not x7495))
+:assumption (or (not x10911) x13786)
+:assumption (or (not x23244) x11912)
+:assumption (or (not x6668) (not x17351))
+:assumption (or x5264 (not x12176) x55)
+:assumption (or (not x4338) x1822)
+:assumption (or x26719 (not x10345))
+:assumption (or (not x22402) x31829)
+:assumption (or x13981 x9385 (not x3105) (not x3436) (not x28541))
+:assumption (or (not x20434) (not x805))
+:assumption (or (not x3364) (not x3643))
+:assumption (or (not x11652) x24600)
+:assumption (or (not x22259) x14888)
+:assumption (or x5528 (not x824))
+:assumption (or (not x2701) (not x30454))
+:assumption (or x21248 x31091)
+:assumption (or x10874 x16687)
+:assumption (or (not x10909) (not x15285))
+:assumption (or x25661 (not x9018))
+:assumption (or x13166 (not x24019))
+:assumption (or x16631 x22318)
+:assumption (or (not x25194) (not x3169) x22666 x25986 (not x1875) (not x18476))
+:assumption (or (not x19038) (not x6554))
+:assumption (or x10732 (not x30080) x29312 x24756)
+:assumption (or x13773 (not x22757))
+:assumption (or (not x16818) (not x21242))
+:assumption (or (not x4020) x21523)
+:assumption (or (not x21183) x30415)
+:assumption (or (not x13663) x17638)
+:assumption (or (not x20144) x15798)
+:assumption (or (not x20920) (not x5528) x27566 x18767 x4845 x26894)
+:assumption (or (not x16013) (not x16507))
+:assumption (or x17245 (not x16103))
+:assumption (or x10093 x12174)
+:assumption (or (not x25993) (not x23477))
+:assumption (or (not x169) (not x20223) x964 x24463)
+:assumption (or x9008 (not x2591) x12408 x8631 x20805 x29311)
+:assumption (or x4714 x17860)
+:assumption (or x1286 x29944)
+:assumption (or (not x20211) (not x12295))
+:assumption (or (not x31480) (not x25253))
+:assumption (or (not x11556) x27714)
+:assumption (or x26367 (not x23244))
+:assumption (or x22204 (not x966))
+:assumption (or x29745 x14347)
+:assumption (or x6778 x30805 (not x15249))
+:assumption (or (not x11795) (not x8947) (not x28625) x25802 (not x23319) (not x26670))
+:assumption (or (not x8065) (not x13558))
+:assumption (or (not x14411) x30883)
+:assumption (or x12946 x19850)
+:assumption (or x16112 x18688)
+:assumption (or (not x4493) x14746 x25120 x30261)
+:assumption (or (not x21580) x17630)
+:assumption (or (not x22780) x31886)
+:assumption (or (not x9586) (not x3704))
+:assumption (or (not x26280) x12230 x5204)
+:assumption (or (not x12309) x15798)
+:assumption (or x4648 x28919)
+:assumption (or (not x26630) (not x21458))
+:assumption (or x31246 x5411 x7656)
+:assumption (or x8221 (not x5279))
+:assumption (or x26183 x17904)
+:assumption (or x6732 (not x23880))
+:assumption (or x8823 x19218)
+:assumption (or (not x26476) (not x28267) x827)
+:assumption (or (not x23287) x29312)
+:assumption (or (not x6933) (not x12782))
+:assumption (or (not x6374) x18011 x871)
+:assumption (or x10039 (not x18059))
+:assumption (or x18547 (not x21736))
+:assumption (or x30735 (not x27567))
+:assumption (or (not x21134) (not x17088))
+:assumption (or x3211 x16025 x15799)
+:assumption (or x7805 x4305)
+:assumption (or (not x9008) (not x23535))
+:assumption (or x28228 (not x21531))
+:assumption (or x27718 x18694)
+:assumption (or (not x15025) x20902 (not x8546) x31219)
+:assumption (or (not x2605) (not x153))
+:assumption (or x21404 (not x17986))
+:assumption (or x27885 (not x31134))
+:assumption (or (not x9394) (not x16280))
+:assumption (or x20296 (not x28242))
+:assumption (or (not x21360) (not x8882))
+:assumption (or x26196 x28436)
+:assumption (or x12715 (not x27244))
+:assumption (or x6956 (not x14947))
+:assumption (or (not x16304) (not x23758))
+:assumption (or x26232 (not x652))
+:assumption (or x2716 x25427)
+:assumption (or x22812 (not x22052))
+:assumption (or x22550 x24334)
+:assumption (or (not x21815) x12242 x5028 x189 (not x16510))
+:assumption (or x436 (not x26849))
+:assumption (or x18319 (not x28973))
+:assumption (or x5274 x2395 (not x202) x3001)
+:assumption (or x16510 x10775 (not x13096) x17534 (not x20948) (not x3435) (not x21815))
+:assumption (or (not x20483) x23095)
+:assumption (or (not x5384) x11770)
+:assumption (or x7888 x12341)
+:assumption (or (not x11458) (not x25678))
+:assumption (or (not x8602) x17808)
+:assumption (or (not x14130) x18365)
+:assumption (or (not x6119) (not x3602))
+:assumption (or (not x23742) (not x9531))
+:assumption (or x16952 x10291)
+:assumption (or x4952 (not x31605))
+:assumption (or (not x8586) (not x14084))
+:assumption (or x14442 x22758)
+:assumption (or (not x8002) x26272 x18250)
+:assumption (or (not x14814) x9057 (not x4093))
+:assumption (or x30337 (not x30098))
+:assumption (or x16760 (not x30138) x26897)
+:assumption (or x14768 x8602 x25609)
+:assumption (or x12838 (not x25827) x8002)
+:assumption (or (not x13474) (not x2951))
+:assumption (or x21388 (not x29109))
+:assumption (or (not x7627) (not x30578) (not x27457) (not x6430) (not x12338) x3951 (not x6873) (not x4768))
+:assumption (or x19039 (not x6594) (not x5678))
+:assumption (or (not x1537) x5528)
+:assumption (or (not x21131) (not x21550))
+:assumption (or (not x23481) (not x14772))
+:assumption (or x3248 x15439)
+:assumption (or (not x218) x30035)
+:assumption (or (not x20989) x25434)
+:assumption (or (not x30734) (not x761))
+:assumption (or x26286 (not x23021))
+:assumption (or x8756 (not x23344))
+:assumption (or x17930 (not x9604))
+:assumption (or x29442 (not x8698) (not x5028) (not x12524) x23050 (not x13417))
+:assumption (or (not x5659) x2585)
+:assumption (or (not x11270) x27763)
+:assumption (or (not x28661) (not x1867) (not x4475) x26614 x18564)
+:assumption (or x19183 x15669)
+:assumption (or (not x8658) x1512)
+:assumption (or (not x14382) x14204)
+:assumption (or (not x23244) x3871)
+:assumption (or x16564 (not x2420))
+:assumption (or (not x24756) (not x24791))
+:assumption (or (not x3847) x4275)
+:assumption (or (not x37) (not x10788))
+:assumption (or (not x15805) (not x6125))
+:assumption (or (not x5399) x17109)
+:assumption (or (not x19989) (not x31212))
+:assumption (or x24480 x11043)
+:assumption (or (not x7942) x30845)
+:assumption (or (not x19511) (not x928))
+:assumption (or (not x5117) x10831 (not x5028))
+:assumption (or (not x27209) (not x16426) x16911 (not x6417) (not x20359))
+:assumption (or x25366 (not x7820) (not x13667))
+:assumption (or (not x5468) (not x30487) (not x1768) (not x27169) (not x26844) (not x10392))
+:assumption (or x1632 x29521)
+:assumption (or x23527 (not x8002))
+:assumption (or x989 (not x15957))
+:assumption (or x14247 (not x15038))
+:assumption (or x19057 x20740 x14839 x13452)
+:assumption (or x6444 (not x4491) (not x18467))
+:assumption (or x12151 x27021 x21256 (not x30224))
+:assumption (or (not x13433) x16407 (not x9563) x22179 x10201)
+:assumption (or x10133 x31363)
+:assumption (or (not x1717) x27682 x28242)
+:assumption (or (not x8957) (not x10700))
+:assumption (or (not x18100) x31214)
+:assumption (or x30089 x22855)
+:assumption (or x22107 x18105)
+:assumption (or (not x6613) (not x3624))
+:assumption (or (not x5350) x19866)
+:assumption (or (not x29606) (not x28776))
+:assumption (or (not x16477) x3902)
+:assumption (or (not x6683) x18147)
+:assumption (or x24246 (not x6594))
+:assumption (or x25302 x25659)
+:assumption (or x20445 (not x1316))
+:assumption (or x5092 (not x13036) x11506)
+:assumption (or x19236 x25943)
+:assumption (or (not x2710) (not x19668))
+:assumption (or (not x19210) x13875)
+:assumption (or (not x8884) (not x13673))
+:assumption (or (not x21881) x19253)
+:assumption (or (not x1562) (not x19108))
+:assumption (or (not x3435) (not x10157) x21016 x3414)
+:assumption (or x29102 (not x31478))
+:assumption (or x14910 x9453 (not x27939))
+:assumption (or (not x13503) x8704)
+:assumption (or x28754 x23969)
+:assumption (or x16766 x4957)
+:assumption (or x2104 x23664)
+:assumption (or (not x11888) (not x18623))
+:assumption (or x29015 (not x20771) (not x8128) x712 x21438)
+:assumption (or x9531 x27650)
+:assumption (or x28610 x20023)
+:assumption (or x27728 (not x22496))
+:assumption (or (not x23823) (not x21316))
+:assumption (or x9190 x13253)
+:assumption (or x10845 x30916)
+:assumption (or (not x708) (not x28973) x26767)
+:assumption (or x9173 (not x20429))
+:assumption (or x23182 x22339)
+:assumption (or x23244 x9819 (not x5886))
+:assumption (or x6628 x23801 x24968 x23798 (not x23547) (not x20651) x11744)
+:assumption (or x16648 x10130)
+:assumption (or (not x26018) x25274)
+:assumption (or x14024 (not x28419))
+:assumption (or (not x28099) x15929)
+:assumption (or x25885 x24722)
+:assumption (or (not x30561) x11781)
+:assumption (or x23996 x18859)
+:assumption (or x25521 (not x15433))
+:assumption (or x31628 x25885)
+:assumption (or x21026 x11350)
+:assumption (or (not x5710) (not x4708))
+:assumption (or x3435 (not x10049) x17640 (not x14455) (not x1487))
+:assumption (or x12863 x20482)
+:assumption (or (not x21028) x4220)
+:assumption (or x25857 x11017)
+:assumption (or x12388 (not x25096))
+:assumption (or (not x26522) (not x27597))
+:assumption (or (not x151) x12533)
+:assumption (or (not x21989) (not x31575))
+:assumption (or (not x3429) x18628)
+:assumption (or (not x11066) (not x15179))
+:assumption (or x14779 x23958)
+:assumption (or x16010 (not x16985))
+:assumption (or x12242 (not x11909))
+:assumption (or x23903 x11376 (not x13487) x2334)
+:assumption (or (not x8298) (not x1096))
+:assumption (or x4351 x25224)
+:assumption (or (not x28864) (not x27417))
+:assumption (or x13706 x20758)
+:assumption (or (not x11675) x11467)
+:assumption (or (not x16772) (not x17248))
+:assumption (or (not x18406) x7964)
+:assumption (or (not x29165) x12517)
+:assumption (or (not x11869) x23195)
+:assumption (or (not x24399) x12908)
+:assumption (or (not x24802) (not x27956))
+:assumption (or (not x1657) x1397)
+:assumption (or x10870 x20728)
+:assumption (or (not x11372) x30118)
+:assumption (or (not x26432) (not x30506) x23960 x31384 x12436)
+:assumption (or x19230 (not x20634))
+:assumption (or (not x6437) x227)
+:assumption (or (not x29822) x22790)
+:assumption (or x7090 (not x19641))
+:assumption (or x23399 (not x6346) (not x3758) x7537)
+:assumption (or x14092 x9544)
+:assumption (or (not x15900) (not x3522) (not x7256) (not x24050))
+:assumption (or x5752 (not x3669))
+:assumption (or x19267 (not x2880))
+:assumption (or (not x23263) x12341)
+:assumption (or x6983 x30347)
+:assumption (or (not x2951) x469)
+:assumption (or (not x10763) x15621 (not x13139) x3917)
+:assumption (or (not x682) x28978)
+:assumption (or x14413 (not x10312) (not x28066))
+:assumption (or (not x644) (not x3950) (not x1542) (not x2106))
+:assumption (or x5289 x8002)
+:assumption (or (not x2313) x8973 x26059 x2127 x25163 (not x4711) x15182 (not x8013))
+:assumption (or (not x18361) (not x31646) (not x10874))
+:assumption (or (not x28922) (not x31114))
+:assumption (or x17440 x8967)
+:assumption (or (not x11791) (not x9616))
+:assumption (or x8002 x21213 (not x17093) (not x21636) x25922 x25265)
+:assumption (or (not x23926) x11063)
+:assumption (or x12549 (not x4023))
+:assumption (or x20282 (not x95))
+:assumption (or x28871 (not x3677))
+:assumption (or (not x5955) (not x23244))
+:assumption (or x16304 x16960 (not x20156) x15795)
+:assumption (or x10654 x8236)
+:assumption (or (not x12872) x31601)
+:assumption (or x5528 (not x30676))
+:assumption (or x24212 (not x12062))
+:assumption (or (not x20257) x11495)
+:assumption (or (not x30293) x24632)
+:assumption (or x12255 x30667 x21298 (not x2394))
+:assumption (or x22536 (not x3507))
+:assumption (or x17359 x1593)
+:assumption (or x10634 (not x10081) (not x24459))
+:assumption (or (not x16419) x26835)
+:assumption (or (not x3286) x9650)
+:assumption (or (not x21502) (not x2436))
+:assumption (or (not x10591) x21415)
+:assumption (or x7364 x24946)
+:assumption (or x23064 (not x25606))
+:assumption (or (not x51) x3645 (not x28393) x10125 (not x16662) (not x22326) (not x27757) (not x14885) x8968 (not x28854) x13429 x8063)
+:assumption (or x27613 x16096)
+:assumption (or x4613 x5528)
+:assumption (or (not x28010) x3576)
+:assumption (or (not x17533) x1601)
+:assumption (or (not x21338) x29803)
+:assumption (or x7718 (not x7221))
+:assumption (or (not x9807) x15441)
+:assumption (or x1393 x31415 x10976)
+:assumption (or (not x9626) (not x6102))
+:assumption (or (not x18538) (not x11639))
+:assumption (or (not x31515) x15427)
+:assumption (or x20329 (not x15369) (not x5528) x31431)
+:assumption (or x4819 (not x12149))
+:assumption (or (not x1045) (not x14332))
+:assumption (or (not x2805) (not x23244))
+:assumption (or x17719 x31494)
+:assumption (or (not x11669) (not x2868))
+:assumption (or x6358 (not x3979))
+:assumption (or (not x27982) (not x18857))
+:assumption (or x68 x2194)
+:assumption (or (not x26366) (not x6110) (not x27909) (not x30828) x19885)
+:assumption (or x25770 (not x8668))
+:assumption (or (not x20201) x17311 (not x1574) (not x18042))
+:assumption (or (not x7218) x16039 x24630)
+:assumption (or (not x9777) (not x16803))
+:assumption (or (not x9481) x1165)
+:assumption (or (not x23958) x21828)
+:assumption (or x24267 x29755)
+:assumption (or x22620 (not x923))
+:assumption (or (not x21298) x3855)
+:assumption (or (not x5018) x20546)
+:assumption (or x30164 x27733)
+:assumption (or (not x23442) (not x17099))
+:assumption (or x3976 x2140)
+:assumption (or (not x17140) x18889)
+:assumption (or (not x4566) (not x10754))
+:assumption (or x6792 (not x17803) x13576 x9531)
+:assumption (or x27755 (not x13328))
+:assumption (or (not x20940) x10060)
+:assumption (or (not x3332) x23238)
+:assumption (or (not x27066) (not x2943))
+:assumption (or x11412 (not x7204))
+:assumption (or x29307 x28468 x24675 x14580 x2414 (not x14841) x11113 (not x12223))
+:assumption (or (not x10983) x19148)
+:assumption (or x30152 x21089)
+:assumption (or x7022 x14459)
+:assumption (or (not x3318) (not x10919))
+:assumption (or x13124 (not x5664))
+:assumption (or x9551 x1195)
+:assumption (or x13477 (not x16475))
+:assumption (or x7805 (not x10331))
+:assumption (or x18027 x14761)
+:assumption (or (not x27126) (not x25683))
+:assumption (or x5104 x23196)
+:assumption (or (not x20766) x27098)
+:assumption (or (not x18981) x21363)
+:assumption (or (not x12009) (not x12923))
+:assumption (or (not x19552) (not x19540))
+:assumption (or (not x12713) (not x12527))
+:assumption (or x3585 x28779)
+:assumption (or (not x26563) (not x30161))
+:assumption (or (not x22011) (not x6518))
+:assumption (or x22946 x28411)
+:assumption (or (not x22153) (not x10014))
+:assumption (or (not x17241) (not x10032))
+:assumption (or x2221 (not x25115))
+:assumption (or (not x10147) x8002 x8559 x23244)
+:assumption (or x28895 (not x13782))
+:assumption (or x13701 (not x16721) (not x16794))
+:assumption (or x14534 x30937)
+:assumption (or (not x16966) (not x3770))
+:assumption (or x2229 x16297 (not x11124) x17335 x8182)
+:assumption (or (not x17547) (not x18849) (not x8602))
+:assumption (or (not x24280) x25401)
+:assumption (or x15787 x20324)
+:assumption (or (not x29442) (not x26930) x31201 x30121 x15516)
+:assumption (or (not x9257) x6077)
+:assumption (or x21650 (not x10498))
+:assumption (or x12903 x1393)
+:assumption (or x12431 (not x12045) x2115 (not x27127) (not x16510) (not x21815) x10909)
+:assumption (or (not x19032) (not x20373))
+:assumption (or x22245 (not x15086))
+:assumption (or x14810 x16510)
+:assumption (or x31681 (not x29370))
+:assumption (or (not x25922) (not x8002))
+:assumption (or (not x3935) x3691)
+:assumption (or (not x17561) (not x8259))
+:assumption (or (not x12528) x24260)
+:assumption (or x17281 x27065)
+:assumption (or x8763 (not x18298))
+:assumption (or x26787 (not x3326))
+:assumption (or (not x7283) x5640)
+:assumption (or x24934 (not x11412) (not x7677) (not x8863) x15399 x10335)
+:assumption (or x8068 (not x24252) x26638 (not x21871) x16273)
+:assumption (or x12246 (not x14396) x12709 (not x29780))
+:assumption (or x10788 x16241 x3274 (not x19071) (not x754) x19954 (not x3269))
+:assumption (or x18877 (not x28536))
+:assumption (or x27123 x24383)
+:assumption (or (not x25659) x13358)
+:assumption (or x8444 (not x14229))
+:assumption (or x1300 (not x22710))
+:assumption (or x11413 x15044)
+:assumption (or (not x19165) (not x16131))
+:assumption (or x10914 x23483)
+:assumption (or (not x23039) (not x19451))
+:assumption (or (not x5908) (not x25048) x16793)
+:assumption (or (not x5523) (not x8239))
+:assumption (or x26632 x29877)
+:assumption (or x12584 (not x7828))
+:assumption (or x16310 (not x25927))
+:assumption (or x31487 x5872)
+:assumption (or (not x8002) (not x22151))
+:assumption (or (not x21312) (not x12728))
+:assumption (or x971 x26520)
+:assumption (or x23517 x16329)
+:assumption (or (not x11444) x901)
+:assumption (or x10406 x10631)
+:assumption (or x195 (not x24294))
+:assumption (or (not x31883) (not x20549))
+:assumption (or (not x6446) x4065)
+:assumption (or (not x23641) (not x9845))
+:assumption (or (not x4770) x17534)
+:assumption (or (not x16296) x25295)
+:assumption (or (not x28973) (not x15001) x1582 (not x4349))
+:assumption (or x6271 x15262)
+:assumption (or x19258 (not x31170))
+:assumption (or (not x15482) x17848)
+:assumption (or (not x355) (not x6947))
+:assumption (or x19486 x4765)
+:assumption (or (not x3660) x11518)
+:assumption (or (not x4665) (not x4560))
+:assumption (or x14603 (not x3801))
+:assumption (or (not x75) (not x2235))
+:assumption (or x23558 (not x24245))
+:assumption (or (not x3427) (not x31287) x17440)
+:assumption (or (not x19175) x6606)
+:assumption (or x6167 x7181 (not x18042) (not x4071) x27589 x24722)
+:assumption (or (not x5623) x16510)
+:assumption (or x10110 x21298)
+:assumption (or x12689 (not x10909))
+:assumption (or (not x3264) (not x9932))
+:assumption (or x13018 x16929)
+:assumption (or x16882 (not x17794) (not x8602))
+:assumption (or x23244 x921)
+:assumption (or (not x12646) (not x12317))
+:assumption (or (not x17188) (not x7635))
+:assumption (or x16304 (not x5263))
+:assumption (or (not x13983) x5895)
+:assumption (or x12249 x13061)
+:assumption (or (not x21290) x25254 x31717 x9505)
+:assumption (or x5981 x22150)
+:assumption (or x16837 (not x582))
+:assumption (or x24722 x7137)
+:assumption (or (not x13609) x1292)
+:assumption (or (not x8658) (not x30034))
+:assumption (or (not x21485) x31795)
+:assumption (or x724 (not x11644))
+:assumption (or (not x14877) x6906)
+:assumption (or (not x5025) (not x26207))
+:assumption (or (not x14138) (not x29669))
+:assumption (or x11093 x2033)
+:assumption (or (not x22148) (not x25600))
+:assumption (or (not x20352) (not x762))
+:assumption (or (not x5367) (not x9582))
+:assumption (or x820 x16510)
+:assumption (or (not x13633) x9547)
+:assumption (or x19120 x2557)
+:assumption (or (not x9425) (not x13404))
+:assumption (or (not x8111) x27458 x7513 (not x17828))
+:assumption (or x5101 (not x3060))
+:assumption (or x31916 (not x26160) (not x6190))
+:assumption (or (not x13133) x7506 x8162 (not x28227) (not x19193))
+:assumption (or (not x17924) (not x7512) x1120)
+:assumption (or (not x23204) (not x21497))
+:assumption (or x24081 x3542)
+:assumption (or (not x16955) x18762 (not x25186) (not x7111) x19437)
+:assumption (or x20939 x20550)
+:assumption (or x26859 (not x5038))
+:assumption (or x10820 x23075 x26512 x18789)
+:assumption (or (not x26528) (not x29232) x8503 x20885 x6038 x8812 x15691)
+:assumption (or (not x15430) (not x28394) x1072 (not x10024) x21882)
+:assumption (or (not x12537) (not x5795))
+:assumption (or (not x24239) x31180)
+:assumption (or x19430 x26470)
+:assumption (or x6482 x17924)
+:assumption (or x25659 x16989)
+:assumption (or x22983 (not x26372))
+:assumption (or x3782 x2181)
+:assumption (or (not x21298) x20758)
+:assumption (or x26026 (not x12012))
+:assumption (or x15883 x10229)
+:assumption (or (not x31858) x15314)
+:assumption (or (not x24380) (not x29984))
+:assumption (or (not x1604) (not x12258))
+:assumption (or (not x7350) (not x7380) x8002 x23244)
+:assumption (or x4116 x5642)
+:assumption (or x726 (not x10179))
+:assumption (or (not x28100) x14206)
+:assumption (or x3501 (not x3737))
+:assumption (or x28613 x10105)
+:assumption (or x16802 x9359 x20425)
+:assumption (or (not x17437) (not x17252))
+:assumption (or (not x21077) (not x25471))
+:assumption (or (not x28340) x6012)
+:assumption (or (not x450) (not x2472))
+:assumption (or (not x6149) x11704)
+:assumption (or x31134 (not x29667))
+:assumption (or (not x19471) x3881)
+:assumption (or (not x27281) x2303)
+:assumption (or (not x30677) x5528)
+:assumption (or (not x7713) (not x11084))
+:assumption (or x15491 (not x30905))
+:assumption (or x15321 (not x5013))
+:assumption (or (not x26552) x21488)
+:assumption (or x16721 (not x30252))
+:assumption (or x14074 (not x8622))
+:assumption (or (not x17997) x161)
+:assumption (or (not x24848) (not x27416))
+:assumption (or (not x12614) (not x26827))
+:assumption (or x17773 (not x18080))
+:assumption (or (not x2537) (not x3591))
+:assumption (or (not x21690) (not x4386) x10735 x13320 (not x23911))
+:assumption (or x17249 x27937)
+:assumption (or x28861 (not x23886))
+:assumption (or x30270 (not x28023) (not x13956) x11489)
+:assumption (or x26453 x11792 (not x23510) (not x15193) x19908 (not x23816) (not x6149))
+:assumption (or (not x744) x4817 (not x15257) (not x30726))
+:assumption (or (not x1160) x16379)
+:assumption (or x5368 (not x17728) x21653)
+:assumption (or (not x3820) x26846)
+:assumption (or x1196 (not x30917))
+:assumption (or (not x11247) (not x23091))
+:assumption (or (not x198) x6528 (not x31521) x22053 x22017 (not x22071))
+:assumption (or x29662 (not x18275))
+:assumption (or (not x18143) x1458 x2355)
+:assumption (or (not x3674) (not x21553) x5025 x28890)
+:assumption (or x17139 x19601)
+:assumption (or (not x12231) x20691)
+:assumption (or (not x26994) x2178)
+:assumption (or x15324 x13036)
+:assumption (or (not x12080) x31389 (not x21298) x9898)
+:assumption (or x21206 (not x12374) (not x17971) (not x23697))
+:assumption (or x3016 x5382)
+:assumption (or x28086 (not x15841))
+:assumption (or (not x15880) (not x1552))
+:assumption (or x31135 x23878)
+:assumption (or (not x20192) x7035)
+:assumption (or (not x20382) x2610)
+:assumption (or (not x21757) (not x4754))
+:assumption (or (not x19395) (not x11724))
+:assumption (or x1433 x16886)
+:assumption (or x29689 (not x7565))
+:assumption (or (not x14617) (not x20325) x12242 x10655)
+:assumption (or (not x26265) x13547)
+:assumption (or x4625 x17874)
+:assumption (or (not x30733) (not x9008))
+:assumption (or x10811 x23026)
+:assumption (or x18916 x6669)
+:assumption (or x20234 (not x26453))
+:assumption (or x26569 (not x21422))
+:assumption (or (not x16079) x21351)
+:assumption (or (not x29426) (not x22360))
+:assumption (or (not x14435) (not x30557) x28787 x31394)
+:assumption (or (not x28314) (not x31467))
+:assumption (or (not x4078) (not x11261))
+:assumption (or x498 x9008)
+:assumption (or (not x2827) (not x11221))
+:assumption (or x3360 x23394)
+:assumption (or x14935 x7041)
+:assumption (or (not x8281) (not x18203))
+:assumption (or (not x22011) x10609)
+:assumption (or (not x5505) (not x13576))
+:assumption (or (not x26257) x5357)
+:assumption (or x8300 (not x30995))
+:assumption (or (not x30306) (not x25878))
+:assumption (or x7822 x5028)
+:assumption (or x3809 x20065)
+:assumption (or x23003 x9183)
+:assumption (or (not x18012) x3673)
+:assumption (or (not x18201) x24212)
+:assumption (or (not x27386) (not x19560))
+:assumption (or (not x9656) x21298)
+:assumption (or (not x15632) x118)
+:assumption (or x1190 (not x27633))
+:assumption (or (not x3286) (not x16745) (not x25789) (not x13444))
+:assumption (or x8743 (not x26432))
+:assumption (or (not x21730) x2883)
+:assumption (or (not x16710) (not x7844) (not x1500) x13934 x20220 x11519)
+:assumption (or (not x9991) x8626)
+:assumption (or x23196 (not x27020))
+:assumption (or x30432 x23819)
+:assumption (or (not x9531) (not x28320))
+:assumption (or (not x2506) (not x3398))
+:assumption (or (not x17072) (not x24029))
+:assumption (or x20795 (not x8289))
+:assumption (or (not x11934) x21298)
+:assumption (or x21332 (not x11783) (not x9588) x31076 (not x14051) (not x31614) (not x17141))
+:assumption (or x24471 x17982)
+:assumption (or (not x2568) (not x19646))
+:assumption (or (not x16334) x26377)
+:assumption (or (not x29442) x13806)
+:assumption (or x21217 (not x1488) x30683 (not x5230))
+:assumption (or x23479 x9083 (not x31899) x288)
+:assumption (or x9551 (not x3382))
+:assumption (or x16185 (not x485) x6223 (not x15987) x15500)
+:assumption (or x18180 (not x18823))
+:assumption (or x2449 (not x23398))
+:assumption (or (not x17336) x25328)
+:assumption (or x6187 (not x21940))
+:assumption (or (not x27464) x22520)
+:assumption (or (not x29729) (not x6692))
+:assumption (or x21298 x10602)
+:assumption (or (not x20249) x31819)
+:assumption (or (not x27987) (not x9855))
+:assumption (or (not x28570) x29773)
+:assumption (or (not x19823) (not x11003))
+:assumption (or x23586 x12949)
+:assumption (or (not x497) (not x19249))
+:assumption (or (not x25391) x21298)
+:assumption (or (not x24802) x18941)
+:assumption (or x4079 x14667)
+:assumption (or (not x25291) (not x11069))
+:assumption (or (not x5306) x5846)
+:assumption (or x20710 x13357)
+:assumption (or (not x12171) x6586 x3139)
+:assumption (or x24463 x1501)
+:assumption (or (not x20527) (not x3956))
+:assumption (or x21145 x30232)
+:assumption (or x14678 (not x6307))
+:assumption (or x27343 x13861 (not x8573) x17648 (not x26124) (not x25416) x13748 x25673)
+:assumption (or (not x18983) x14341)
+:assumption (or (not x25404) x24462)
+:assumption (or x21493 x14591 x5279)
+:assumption (or x28033 x23207)
+:assumption (or x5692 x6121)
+:assumption (or (not x13141) (not x5373))
+:assumption (or (not x25873) x8377)
+:assumption (or x18439 (not x23900))
+:assumption (or (not x10472) (not x6149))
+:assumption (or (not x27330) (not x6673))
+:assumption (or (not x918) (not x21815) (not x16510) x8961 x7475)
+:assumption (or x27499 (not x12030))
+:assumption (or x14052 x29649)
+:assumption (or (not x19805) (not x21815) (not x9486))
+:assumption (or x5871 x22372)
+:assumption (or (not x10793) (not x21502))
+:assumption (or x5528 x30163)
+:assumption (or (not x8002) (not x3347))
+:assumption (or (not x4114) (not x22006))
+:assumption (or x13560 (not x27941))
+:assumption (or x1087 (not x8720))
+:assumption (or x9841 (not x31759))
+:assumption (or x22104 (not x30476))
+:assumption (or (not x12397) x3466)
+:assumption (or (not x11332) x19520)
+:assumption (or (not x14620) (not x25707))
+:assumption (or (not x11881) x12045)
+:assumption (or x20818 (not x5551) (not x14477) x11978 (not x20283))
+:assumption (or (not x3471) (not x30685))
+:assumption (or (not x31338) x31911 x19709 x12075)
+:assumption (or (not x21449) (not x2721))
+:assumption (or x9850 x16743)
+:assumption (or x26017 (not x29309))
+:assumption (or x22233 (not x732) (not x25042) x11939 x978 (not x29042) x23376 (not x3401) x28988 x129)
+:assumption (or x12521 (not x29291))
+:assumption (or (not x13480) (not x15482))
+:assumption (or x5460 (not x3833))
+:assumption (or (not x8088) x9844)
+:assumption (or (not x15537) (not x16141))
+:assumption (or x17001 x19532 x18207)
+:assumption (or (not x31423) x31463)
+:assumption (or x26839 x15520)
+:assumption (or (not x27370) (not x17937))
+:assumption (or (not x26683) x9025)
+:assumption (or (not x1769) (not x18859) x27313)
+:assumption (or (not x5909) (not x24553))
+:assumption (or (not x27044) x9531)
+:assumption (or (not x13530) (not x10325))
+:assumption (or x11497 (not x3397))
+:assumption (or x22559 x1489)
+:assumption (or x19081 x18839)
+:assumption (or x23822 x28682 (not x16003))
+:assumption (or x21815 x25631)
+:assumption (or (not x7684) (not x20318))
+:assumption (or (not x15228) x7977)
+:assumption (or x15171 (not x19436))
+:assumption (or x26089 x11757)
+:assumption (or (not x14978) (not x9482))
+:assumption (or x26522 x94)
+:assumption (or (not x18611) (not x3569))
+:assumption (or (not x17367) (not x12350))
+:assumption (or (not x3299) (not x6209))
+:assumption (or x12849 (not x4449))
+:assumption (or (not x22739) (not x1819))
+:assumption (or x30640 (not x3782) x29402)
+:assumption (or (not x4995) (not x4278))
+:assumption (or x18451 (not x15653))
+:assumption (or x7565 x27429)
+:assumption (or (not x19459) x15942)
+:assumption (or (not x17037) (not x12084))
+:assumption (or (not x13294) (not x9384))
+:assumption (or (not x18104) (not x5696))
+:assumption (or x28006 x15485)
+:assumption (or x30651 (not x7634))
+:assumption (or (not x15047) x24626)
+:assumption (or x7395 x169)
+:assumption (or (not x2003) (not x29824))
+:assumption (or (not x21932) x21459)
+:assumption (or (not x4410) (not x28096))
+:assumption (or (not x27233) (not x22063))
+:assumption (or x20536 x13309)
+:assumption (or (not x19501) x6132)
+:assumption (or (not x6774) x23241)
+:assumption (or (not x24892) (not x18172))
+:assumption (or (not x24173) x23205)
+:assumption (or x12792 x26228)
+:assumption (or x14419 x827)
+:assumption (or x537 x7284)
+:assumption (or x24191 x918)
+:assumption (or (not x11792) x31582 x10804)
+:assumption (or (not x7835) x28182)
+:assumption (or (not x15724) x28505)
+:assumption (or (not x17514) (not x25422))
+:assumption (or (not x14624) x12057)
+:assumption (or (not x21825) (not x29547) (not x10961) x1028 x4306)
+:assumption (or x20877 x9447)
+:assumption (or (not x4645) (not x10031))
+:assumption (or x1201 x13133)
+:assumption (or (not x28541) (not x9415) (not x17507) (not x12771))
+:assumption (or (not x25231) (not x480))
+:assumption (or (not x16514) (not x15734))
+:assumption (or x19992 (not x18052) (not x7389) x13135)
+:assumption (or (not x6812) (not x14695))
+:assumption (or x25366 x10713)
+:assumption (or (not x19210) x11729)
+:assumption (or (not x20977) x2946)
+:assumption (or x7827 (not x25056))
+:assumption (or (not x26093) x31113)
+:assumption (or (not x3079) x2662)
+:assumption (or x19800 (not x25604))
+:assumption (or x8013 (not x26059))
+:assumption (or (not x6445) (not x24853))
+:assumption (or x3798 x23800)
+:assumption (or (not x942) (not x25497))
+:assumption (or x30095 (not x1409))
+:assumption (or x22611 (not x5512))
+:assumption (or x2286 (not x2365))
+:assumption (or (not x8697) (not x4687))
+:assumption (or x25656 (not x10691) (not x23607) x4082)
+:assumption (or x6120 (not x13245) x30110)
+:assumption (or (not x9571) (not x22801))
+:assumption (or x20563 (not x23883))
+:assumption (or (not x15797) (not x8602))
+:assumption (or (not x18404) x17108)
+:assumption (or x19528 x21658)
+:assumption (or x8716 x11127 x16936 (not x18963) x10214 (not x19685))
+:assumption (or x13956 x17620)
+:assumption (or (not x9132) x20693 (not x24277))
+:assumption (or (not x15668) x15352)
+:assumption (or x6969 (not x12710) x24179)
+:assumption (or (not x20599) x11450)
+:assumption (or (not x24229) x30151)
+:assumption (or x22666 (not x2487))
+:assumption (or x5862 (not x27519))
+:assumption (or (not x8085) (not x1520))
+:assumption (or x19156 (not x5240) x25769 x1102 x8774)
+:assumption (or (not x13812) x11419)
+:assumption (or (not x21815) x27877)
+:assumption (or (not x30366) (not x27364))
+:assumption (or (not x8392) (not x25659))
+:assumption (or (not x25161) (not x28483) (not x11690) x26280 x12102 (not x4118) x31463 x18835)
+:assumption (or x15406 x11394)
+:assumption (or (not x6271) x30656)
+:assumption (or (not x13538) (not x11375))
+:assumption (or x12517 x2475)
+:assumption (or x23755 (not x30751))
+:assumption (or (not x8480) (not x25492))
+:assumption (or (not x2365) x7358)
+:assumption (or (not x5055) (not x1621))
+:assumption (or x1393 x3197 (not x4302))
+:assumption (or (not x25831) (not x25802))
+:assumption (or (not x15092) (not x8348) x827)
+:assumption (or x23097 x29610 x11633 x22720 (not x12541) x31134)
+:assumption (or x1881 x18042)
+:assumption (or x13465 (not x15917))
+:assumption (or (not x2797) (not x17191))
+:assumption (or x10993 (not x22813))
+:assumption (or (not x26592) (not x512) (not x7802) (not x26421))
+:assumption (or (not x29432) x10346)
+:assumption (or x19104 (not x2276))
+:assumption (or (not x11530) (not x5370) (not x6348) x22495)
+:assumption (or x8640 x10441)
+:assumption (or (not x27713) x28766)
+:assumption (or x16360 x14622)
+:assumption (or (not x18883) x1183)
+:assumption (or x23197 (not x3209))
+:assumption (or x24770 x7455)
+:assumption (or x19031 (not x25634))
+:assumption (or (not x26033) x20254)
+:assumption (or x20485 (not x10610))
+:assumption (or (not x12274) (not x30219))
+:assumption (or (not x14556) (not x26951))
+:assumption (or x25529 (not x3063))
+:assumption (or x17229 x16649)
+:assumption (or x20625 x5941)
+:assumption (or (not x7779) (not x30944))
+:assumption (or (not x11169) x29789)
+:assumption (or (not x2378) (not x1106) x31699)
+:assumption (or x964 (not x9618))
+:assumption (or x21291 (not x7507) (not x3330) (not x2289) (not x10852))
+:assumption (or x8002 x3927)
+:assumption (or (not x257) (not x18575))
+:assumption (or x29786 x21436)
+:assumption (or x4617 (not x21414))
+:assumption (or (not x19948) (not x285))
+:assumption (or x26655 (not x20556))
+:assumption (or (not x7311) x19419)
+:assumption (or x17016 (not x9922) x30113)
+:assumption (or x7146 (not x12956))
+:assumption (or (not x23747) (not x31760))
+:assumption (or x17048 (not x24225))
+:assumption (or x2337 (not x4640))
+:assumption (or (not x6891) x9420)
+:assumption (or x13932 (not x4456))
+:assumption (or (not x20235) x31126)
+:assumption (or (not x2158) (not x25383))
+:assumption (or (not x22904) x5736)
+:assumption (or x28649 x25492)
+:assumption (or (not x6696) x19553)
+:assumption (or (not x746) (not x31411))
+:assumption (or x27820 x11166)
+:assumption (or (not x14312) (not x21743))
+:assumption (or x27318 x20871)
+:assumption (or (not x24675) (not x14580))
+:assumption (or x7533 (not x28670) x798)
+:assumption (or (not x4248) (not x27931))
+:assumption (or x22933 x16157)
+:assumption (or (not x5093) x22173)
+:assumption (or x21669 (not x9416) (not x25581) (not x27192) x13025 (not x10673))
+:assumption (or x26777 (not x18414))
+:assumption (or (not x27149) (not x21658) (not x28459) (not x27301) x28703 (not x9992) x31691 (not x13222))
+:assumption (or x4326 x5363 (not x3206) x15227 x3053 (not x3218))
+:assumption (or (not x7606) x19098)
+:assumption (or (not x14781) (not x27371) x15795)
+:assumption (or x23365 x3372)
+:assumption (or (not x13569) (not x26789))
+:assumption (or x17225 x12945)
+:assumption (or x21795 x9531)
+:assumption (or x7761 (not x26365))
+:assumption (or x11848 x18859)
+:assumption (or (not x1783) (not x8002) (not x21961))
+:assumption (or (not x10724) x15981)
+:assumption (or (not x16952) x22620)
+:assumption (or x5146 (not x27328) x11294)
+:assumption (or (not x3087) x27957)
+:assumption (or (not x17291) (not x27738))
+:assumption (or (not x4799) x304 (not x23945) x26270 (not x11085) (not x18295))
+:assumption (or (not x20537) (not x22023))
+:assumption (or x23565 x9540)
+:assumption (or x13325 (not x4325))
+:assumption (or (not x14132) (not x10928))
+:assumption (or x14426 (not x11506))
+:assumption (or (not x10367) x4840)
+:assumption (or x12186 (not x15237))
+:assumption (or (not x28985) x8922 x2009)
+:assumption (or (not x13347) x2867)
+:assumption (or x24222 (not x1393))
+:assumption (or (not x9961) (not x27553))
+:assumption (or x20975 (not x15896))
+:assumption (or (not x8478) (not x19071))
+:assumption (or (not x3079) x15895)
+:assumption (or x30935 (not x8990) x25182 x19709 x13063 x2773 x17138)
+:assumption (or x8936 (not x27532) x21083)
+:assumption (or x1609 x119 x23801)
+:assumption (or (not x11345) (not x24030))
+:assumption (or (not x29027) x17739 (not x13956) x22154)
+:assumption (or x7842 x22197)
+:assumption (or (not x13108) x25768)
+:assumption (or x4738 x16304 x3589)
+:assumption (or x19984 x3509)
+:assumption (or x9008 (not x57) x27876)
+:assumption (or (not x21570) (not x868))
+:assumption (or (not x2666) (not x23608))
+:assumption (or (not x19174) x8191)
+:assumption (or (not x28683) x10838)
+:assumption (or (not x20472) x28758)
+:assumption (or (not x21026) x7430 x22967)
+:assumption (or (not x13841) x14649)
+:assumption (or (not x21904) x31396)
+:assumption (or (not x22027) (not x717))
+:assumption (or (not x8528) (not x16270))
+:assumption (or (not x11282) x24947)
+:assumption (or x17750 x20462)
+:assumption (or x18023 (not x7659))
+:assumption (or (not x3469) x7768)
+:assumption (or x23244 x25740 x8002 x27924)
+:assumption (or x30751 (not x7438))
+:assumption (or x29167 (not x6198))
+:assumption (or x10878 x11719)
+:assumption (or (not x9064) x16328 (not x19840) x11650 x14034 x2876)
+:assumption (or x14801 (not x10874))
+:assumption (or x23886 x31176)
+:assumption (or (not x29316) x19053)
+:assumption (or x21706 (not x16734))
+:assumption (or x7411 (not x3072))
+:assumption (or (not x28735) x7600 (not x17846) (not x21298))
+:assumption (or (not x30565) (not x15716))
+:assumption (or (not x15620) x1530)
+:assumption (or (not x7887) x11650 (not x13605) (not x28194) x3005)
+:assumption (or (not x10492) x4927)
+:assumption (or x516 x29649 x9989)
+:assumption (or (not x4306) x29547)
+:assumption (or (not x6404) (not x20022))
+:assumption (or (not x18003) (not x24159))
+:assumption (or x30291 x23018)
+:assumption (or x11951 x16793)
+:assumption (or (not x13505) (not x26166) x1052 (not x28885))
+:assumption (or x15075 x7289)
+:assumption (or (not x27734) x22704)
+:assumption (or (not x29312) x5006)
+:assumption (or (not x28857) x28630)
+:assumption (or (not x3639) (not x19012))
+:assumption (or (not x154) x27584)
+:assumption (or x27390 (not x17435))
+:assumption (or x17608 x10103)
+:assumption (or x1915 x27941)
+:assumption (or (not x5823) x6576)
+:assumption (or (not x20200) (not x31029))
+:assumption (or (not x6386) (not x6036))
+:assumption (or (not x7835) (not x6364))
+:assumption (or (not x23244) (not x15329))
+:assumption (or (not x15161) (not x31245))
+:assumption (or (not x31375) (not x13681))
+:assumption (or x22111 (not x9950))
+:assumption (or (not x8832) x416 x19387 x11862 (not x28668) x22355 x5411 (not x29797))
+:assumption (or (not x14639) (not x16942))
+:assumption (or (not x15609) x17814 (not x2971) (not x5105))
+:assumption (or (not x1547) (not x30939))
+:assumption (or (not x22106) x5928)
+:assumption (or (not x18594) (not x11792) (not x22207))
+:assumption (or x15430 (not x8487))
+:assumption (or x11117 (not x13292))
+:assumption (or x7899 (not x3730))
+:assumption (or (not x26837) (not x17940))
+:assumption (or x6780 (not x8002) x16163 x10221)
+:assumption (or (not x2334) (not x8098))
+:assumption (or x685 (not x31767) x22930 x27009)
+:assumption (or x4627 x14913)
+:assumption (or (not x10168) (not x10519) x21815 (not x2536) (not x15563) (not x25328))
+:assumption (or (not x17593) (not x26572) (not x1393))
+:assumption (or x11861 (not x20686))
+:assumption (or (not x31497) x17539)
+:assumption (or x13930 (not x18502))
+:assumption (or x14989 (not x28487))
+:assumption (or (not x10537) x9135)
+:assumption (or (not x21717) x13800)
+:assumption (or x29469 x13852)
+:assumption (or (not x28805) (not x7832))
+:assumption (or (not x17842) (not x16025))
+:assumption (or x13852 x21587)
+:assumption (or x13026 (not x13407) (not x7215))
+:assumption (or (not x6746) (not x3279))
+:assumption (or (not x6762) x4569)
+:assumption (or (not x27306) (not x17678))
+:assumption (or (not x30743) x9825)
+:assumption (or (not x28688) (not x5431) (not x30403) (not x21298))
+:assumption (or (not x16531) x15757)
+:assumption (or (not x23279) x22642)
+:assumption (or x9367 (not x9363))
+:assumption (or (not x27955) (not x17599))
+:assumption (or (not x8474) (not x20201))
+:assumption (or (not x24378) (not x29369))
+:assumption (or x8962 (not x14642))
+:assumption (or x7168 (not x21298))
+:assumption (or (not x23394) x27894)
+:assumption (or x23220 x26111)
+:assumption (or (not x26897) (not x2392) x30998 (not x10909))
+:assumption (or x21196 (not x12631))
+:assumption (or x16727 x27059 x17655 (not x25962))
+:assumption (or x186 (not x23323))
+:assumption (or x19355 x28658 x8002)
+:assumption (or x10660 (not x1901) x27537)
+:assumption (or (not x9306) (not x25206))
+:assumption (or (not x2827) x28541)
+:assumption (or (not x1930) (not x13169))
+:assumption (or (not x21863) (not x28193))
+:assumption (or x12295 x20211)
+:assumption (or (not x19042) x8246 (not x21298) (not x28951))
+:assumption (or x20954 (not x31493))
+:assumption (or x13018 (not x24430) (not x2614) (not x23858))
+:assumption (or x22092 x1965)
+:assumption (or x2910 x6887)
+:assumption (or (not x26481) (not x10723) (not x2631) (not x31554))
+:assumption (or (not x17394) (not x25911) (not x8703) (not x22550))
+:assumption (or (not x15635) x4054)
+:assumption (or (not x7011) x30524)
+:assumption (or x19329 (not x8931))
+:assumption (or x27913 (not x4652))
+:assumption (or (not x13493) (not x14721))
+:assumption (or (not x13956) x8002 (not x9972) x23244 x9281)
+:assumption (or (not x20651) (not x13307) x24851)
+:assumption (or x4037 x16409)
+:assumption (or x18886 (not x22446))
+:assumption (or x22050 x12408 x7329 (not x27746) x22136)
+:assumption (or x4270 x29725)
+:assumption (or (not x14537) x14047)
+:assumption (or x3744 (not x23080))
+:assumption (or x20114 (not x15342))
+:assumption (or x1542 x19783)
+:assumption (or x7576 (not x7719) x22829)
+:assumption (or x22876 x14484)
+:assumption (or x26243 x1009 (not x16555) (not x1972) (not x25334) x22482 x9439)
+:assumption (or (not x21730) x16479)
+:assumption (or x28973 x10651 (not x8083))
+:assumption (or (not x4210) (not x18807))
+:assumption (or (not x691) x13956)
+:assumption (or (not x6606) x25748 (not x19363))
+:assumption (or x12568 (not x17282))
+:assumption (or x21815 x11518)
+:assumption (or (not x21227) (not x27204))
+:assumption (or (not x4288) x30388)
+:assumption (or x5437 x12456)
+:assumption (or (not x15319) (not x964))
+:assumption (or x6161 x15258)
+:assumption (or (not x16510) x5930)
+:assumption (or (not x29627) (not x7171))
+:assumption (or (not x21286) (not x27233))
+:assumption (or x17512 (not x17109) x19370)
+:assumption (or x5257 (not x18214))
+:assumption (or x2422 (not x15112))
+:assumption (or x21815 x26389)
+:assumption (or x142 x30787 (not x8671) x16510 (not x26885))
+:assumption (or x5866 x24200 (not x16168))
+:assumption (or x19517 (not x8002))
+:assumption (or (not x15397) x19764)
+:assumption (or (not x14164) (not x568))
+:assumption (or (not x30094) x5294)
+:assumption (or x18440 (not x14234))
+:assumption (or x2519 x6919)
+:assumption (or (not x14162) (not x843))
+:assumption (or x5013 x4386 (not x3264))
+:assumption (or x27857 (not x6289))
+:assumption (or x18069 (not x24308))
+:assumption (or (not x20808) x16025 x23365)
+:assumption (or x14272 (not x20923) (not x1190) x27633)
+:assumption (or (not x8607) x18374)
+:assumption (or x29235 x16721 x11631)
+:assumption (or x35 (not x4901))
+:assumption (or x17167 (not x4560))
+:assumption (or x21271 x21096)
+:assumption (or x29177 x18190)
+:assumption (or x23061 (not x31435))
+:assumption (or x25370 (not x5227))
+:assumption (or x15105 x23266)
+:assumption (or (not x8098) (not x519))
+:assumption (or (not x29379) (not x16080) x16437 x17776)
+:assumption (or (not x11309) (not x23244))
+:assumption (or (not x22500) x14969 (not x29977) x6995 (not x3406) (not x445) (not x23981) x4210 (not x17656))
+:assumption (or (not x28020) x21815)
+:assumption (or (not x6855) x2964)
+:assumption (or x5271 x252)
+:assumption (or (not x30970) x26447 x22581 x21454 (not x28296) x16965 x11447 (not x12127))
+:assumption (or x11296 (not x30526) x7110)
+:assumption (or (not x16784) (not x862))
+:assumption (or x22503 x22340)
+:assumption (or (not x6580) (not x22613))
+:assumption (or x753 (not x29224))
+:assumption (or (not x22569) x15696)
+:assumption (or (not x9050) (not x9614))
+:assumption (or (not x24871) x1554)
+:assumption (or x19815 (not x20141))
+:assumption (or x22821 (not x7182))
+:assumption (or (not x21240) x14595)
+:assumption (or x7234 x13231)
+:assumption (or (not x29934) (not x756))
+:assumption (or x5710 (not x27480))
+:assumption (or (not x24944) (not x17359))
+:assumption (or x12065 x2410)
+:assumption (or x16480 (not x29681) (not x319) (not x14286) x20537)
+:assumption (or x31831 (not x2777))
+:assumption (or (not x21942) x1460)
+:assumption (or (not x5147) x14370)
+:assumption (or (not x15056) x11316)
+:assumption (or (not x15537) (not x7017))
+:assumption (or (not x13982) (not x8002) (not x8223))
+:assumption (or (not x24616) x17722)
+:assumption (or (not x22727) (not x6393))
+:assumption (or x8461 (not x15703))
+:assumption (or x19261 (not x25266))
+:assumption (or x18955 x28063)
+:assumption (or (not x12871) (not x16081))
+:assumption (or x23185 x9164 x8602)
+:assumption (or (not x7189) (not x26083))
+:assumption (or (not x8488) x13956)
+:assumption (or x13776 (not x16721))
+:assumption (or x22157 (not x4500))
+:assumption (or x31233 x22025 x8532)
+:assumption (or x3810 (not x7286))
+:assumption (or x18923 (not x13107))
+:assumption (or x28301 (not x24435))
+:assumption (or x10799 x827)
+:assumption (or (not x13287) x14083)
+:assumption (or (not x13207) x22279)
+:assumption (or (not x17479) x20820)
+:assumption (or (not x18407) x6594)
+:assumption (or (not x14863) (not x24479))
+:assumption (or x14994 x151 x15867 (not x12533) x25558 (not x25659) (not x5589) x26030)
+:assumption (or x5375 (not x1393))
+:assumption (or (not x26037) (not x24837))
+:assumption (or (not x8002) x30757)
+:assumption (or (not x15082) x4259)
+:assumption (or (not x31026) (not x30838))
+:assumption (or x28932 x29833)
+:assumption (or (not x30971) (not x9097))
+:assumption (or (not x10793) x5528)
+:assumption (or (not x21040) (not x22925) (not x30654))
+:assumption (or (not x7233) (not x3883))
+:assumption (or (not x8814) x27589)
+:assumption (or x16545 x17091)
+:assumption (or (not x11766) x13956)
+:assumption (or x20585 x31829 (not x4133))
+:assumption (or (not x494) (not x19616))
+:assumption (or (not x17862) x8086)
+:assumption (or (not x14319) x29293 x25659)
+:assumption (or (not x4149) x4297)
+:assumption (or (not x5189) x24756)
+:assumption (or (not x15684) (not x5528))
+:assumption (or x5528 x13050)
+:assumption (or (not x18003) (not x11600))
+:assumption (or x20814 x31445)
+:assumption (or (not x827) x10210)
+:assumption (or (not x10567) x4202)
+:assumption (or x13548 x26657)
+:assumption (or (not x25118) x13179 (not x29211) x9918 x28478 x19477 x5612 (not x2756) (not x17717) x14845)
+:assumption (or x9143 x5113)
+:assumption (or (not x16510) (not x288) (not x21815) (not x10792) (not x23399))
+:assumption (or x7002 (not x12391))
+:assumption (or (not x1546) (not x13935))
+:assumption (or x14061 (not x16595) (not x16075) x23571 x22595 x21756)
+:assumption (or (not x10778) x22777)
+:assumption (or (not x23244) x9170 x1755)
+:assumption (or (not x12903) (not x15869))
+:assumption (or x20768 x10346 (not x29982) x29489 x11302)
+:assumption (or (not x7926) (not x18519))
+:assumption (or (not x25342) (not x2470))
+:assumption (or (not x12487) (not x25524))
+:assumption (or (not x23878) (not x9869))
+:assumption (or x18584 x989)
+:assumption (or (not x18860) x18836)
+:assumption (or x29438 (not x4676) x46)
+:assumption (or (not x23330) x31817)
+:assumption (or x17302 (not x8664) x24532 x27012)
+:assumption (or x16418 x15815)
+:assumption (or x31389 (not x28023) x9898 x2824)
+:assumption (or x3888 x547)
+:assumption (or x25992 x17109)
+:assumption (or x19966 x202)
+:assumption (or (not x31102) (not x23886))
+:assumption (or x14638 x29108 x19219 x6495 (not x21542))
+:assumption (or x1950 (not x28912) x30429 x8352 x16311 x24954 x13324 (not x15557))
+:assumption (or x25238 (not x27884))
+:assumption (or x31108 x17572)
+:assumption (or (not x12798) (not x28965))
+:assumption (or (not x30402) (not x19280) (not x22992))
+:assumption (or (not x5931) (not x16674))
+:assumption (or (not x15745) x31701 x9411)
+:assumption (or x20134 (not x2182) (not x11152) x24489)
+:assumption (or (not x11307) x27925)
+:assumption (or (not x5891) (not x18503))
+:assumption (or (not x10874) x9540)
+:assumption (or x22610 (not x4865))
+:assumption (or x30353 x28506 (not x10735) (not x1139) (not x25765) x16155 (not x12834))
+:assumption (or x14761 x23339)
+:assumption (or x26988 (not x5625))
+:assumption (or (not x9008) (not x27586) x17759)
+:assumption (or x16359 x23244)
+:assumption (or x4016 (not x18431))
+:assumption (or x31829 x12910 x7894 x28541)
+:assumption (or (not x21944) x9008 x1342)
+:assumption (or x7190 x17192)
+:assumption (or (not x23081) (not x1327))
+:assumption (or (not x25937) (not x31784) x6969)
+:assumption (or (not x20208) (not x15553))
+:assumption (or x29613 (not x29100))
+:assumption (or (not x31217) x30142)
+:assumption (or x4309 x27968)
+:assumption (or x28327 (not x4335))
+:assumption (or (not x14156) (not x14158))
+:assumption (or (not x5528) (not x17536))
+:assumption (or x30446 x9403)
+:assumption (or x22899 (not x6009))
+:assumption (or (not x16092) x4488)
+:assumption (or (not x5663) (not x26284))
+:assumption (or (not x9408) x18377)
+:assumption (or x7768 x27582)
+:assumption (or x11525 x11718)
+:assumption (or (not x20395) (not x22906) x28770 (not x28306) x18456 x31435 x27420)
+:assumption (or (not x14591) x3448)
+:assumption (or x3841 x18658)
+:assumption (or (not x11575) (not x9333))
+:assumption (or (not x27190) x8002 (not x26654))
+:assumption (or (not x5467) x13336)
+:assumption (or (not x23680) x29315)
+:assumption (or x8677 (not x1884))
+:assumption (or (not x26045) x3739)
+:assumption (or x15460 x24933)
+:assumption (or x31238 (not x27840))
+:assumption (or x14487 x7525)
+:assumption (or (not x25376) x2871)
+:assumption (or (not x4956) (not x24597))
+:assumption (or x28877 x13252)
+:assumption (or (not x5833) x28600)
+:assumption (or x24639 (not x19108))
+:assumption (or (not x24889) (not x6969))
+:assumption (or (not x14736) (not x16354))
+:assumption (or (not x1447) (not x27500) (not x31167))
+:assumption (or (not x1780) x30935)
+:assumption (or x19019 (not x9008))
+:assumption (or (not x4265) (not x23747))
+:assumption (or (not x10411) x9069)
+:assumption (or (not x925) x9406)
+:assumption (or (not x21795) (not x27832) (not x9531))
+:assumption (or (not x16259) (not x12655))
+:assumption (or (not x28111) (not x25659) x7895)
+:assumption (or x6969 x6745 (not x3877))
+:assumption (or (not x31668) (not x8502) x18634 (not x20098))
+:assumption (or x29442 (not x8752))
+:assumption (or (not x7419) (not x18859) x24650)
+:assumption (or x30004 (not x21080))
+:assumption (or x26972 x15573 x1582 (not x25356))
+:assumption (or (not x16769) (not x2651))
+:assumption (or x11614 x19271)
+:assumption (or (not x24293) (not x24061))
+:assumption (or x20645 x2066)
+:assumption (or (not x26493) x21412)
+:assumption (or x20195 x19525)
+:assumption (or (not x2344) x14916)
+:assumption (or x30584 (not x5358))
+:assumption (or (not x22845) x26246)
+:assumption (or x26739 (not x2152))
+:assumption (or x10772 x25570)
+:assumption (or x8002 x25717 (not x7789) x6239 (not x25299) (not x10397))
+:assumption (or (not x12497) (not x13772))
+:assumption (or (not x6783) (not x31227))
+:assumption (or x23470 (not x24187))
+:assumption (or (not x6757) x1104)
+:assumption (or (not x13956) (not x30437))
+:assumption (or (not x6655) (not x24045))
+:assumption (or x30751 (not x9679))
+:assumption (or x22951 (not x16258))
+:assumption (or (not x13280) (not x12581))
+:assumption (or x31574 x22673)
+:assumption (or (not x1209) (not x12190) x25246 (not x21631))
+:assumption (or x8002 x5463)
+:assumption (or x4026 (not x18311))
+:assumption (or (not x7865) (not x6594))
+:assumption (or (not x8002) x21991)
+:assumption (or x14737 x26797)
+:assumption (or x2530 (not x447) (not x15548) x24702 x8078)
+:assumption (or (not x8689) (not x13131))
+:assumption (or (not x22627) x13956)
+:assumption (or x27302 x17047)
+:assumption (or (not x9732) (not x11334))
+:assumption (or x10979 (not x6028))
+:assumption (or (not x15227) (not x18364))
+:assumption (or (not x17548) (not x3365))
+:assumption (or (not x21081) (not x16307))
+:assumption (or x7669 x202 x23244)
+:assumption (or x16721 (not x27008))
+:assumption (or (not x14115) (not x218) x24975)
+:assumption (or x17733 x590)
+:assumption (or (not x8532) (not x13342) (not x6391))
+:assumption (or (not x26647) x23624)
+:assumption (or x9707 x15838)
+:assumption (or x28721 x2128)
+:assumption (or (not x28017) x9008)
+:assumption (or (not x16825) x13100 (not x12155) (not x24755) (not x4422) x26702 (not x1389))
+:assumption (or (not x12149) x8927 (not x15245) x2822 (not x6891) x15300)
+:assumption (or (not x20294) x30887)
+:assumption (or x16895 x2514)
+:assumption (or (not x17859) x27414 x8002 x23244)
+:assumption (or x30977 x13308 x7553 (not x15987) x16646 x2736)
+:assumption (or x15517 (not x30256))
+:assumption (or (not x15904) (not x4039))
+:assumption (or (not x28680) x29576)
+:assumption (or (not x22453) x13076)
+:assumption (or (not x16053) (not x27690))
+:assumption (or (not x14215) x1633)
+:assumption (or x7712 (not x4756))
+:assumption (or x17812 (not x24989))
+:assumption (or (not x9675) (not x23244) x5850 (not x9689) (not x8230) x8827)
+:assumption (or (not x14586) (not x1436))
+:assumption (or (not x5754) x16648)
+:assumption (or (not x19390) (not x19591))
+:assumption (or x5520 (not x4376))
+:assumption (or (not x28360) (not x2334))
+:assumption (or x17843 x10490)
+:assumption (or x30604 x23706)
+:assumption (or x16654 (not x19313))
+:assumption (or x4463 (not x8002))
+:assumption (or (not x18548) x6102)
+:assumption (or x9817 x1222 (not x10678))
+:assumption (or (not x6969) x30948 (not x131))
+:assumption (or x11533 (not x18003))
+:assumption (or x3001 x31459)
+:assumption (or x6481 x24632)
+:assumption (or (not x7255) x1453)
+:assumption (or (not x28087) (not x26061))
+:assumption (or x22479 (not x9344))
+:assumption (or (not x17177) (not x22352) x31265)
+:assumption (or x4705 (not x22569))
+:assumption (or x25035 x4291)
+:assumption (or x27238 (not x1393))
+:assumption (or x13243 (not x31254))
+:assumption (or x21633 x3178)
+:assumption (or x22319 (not x24606))
+:assumption (or x23523 (not x14441))
+:assumption (or (not x18042) (not x10894))
+:assumption (or (not x20383) (not x6381))
+:assumption (or x24155 x27911 (not x539) x31083 (not x30891) x16346 x30633 x6771 x30631)
+:assumption (or (not x21633) (not x8002) x2680 (not x27233))
+:assumption (or (not x25653) x27537)
+:assumption (or x23244 x8002 x9603 (not x20390))
+:assumption (or (not x245) x9843)
+:assumption (or x9745 x2118)
+:assumption (or x7702 (not x13240))
+:assumption (or (not x11875) x31704 (not x31872) x23982 (not x15338) (not x26756))
+:assumption (or (not x17151) (not x31066))
+:assumption (or (not x7358) (not x19542) x2365)
+:assumption (or x13576 x15062)
+:assumption (or x27040 x1254)
+:assumption (or (not x18948) x7365)
+:assumption (or (not x19465) x21328)
+:assumption (or (not x5528) (not x9008) (not x16995) x20291 (not x22295))
+:assumption (or (not x28876) x5708)
+:assumption (or x25031 (not x28325))
+:assumption (or x22977 x17507)
+:assumption (or x24898 x12776)
+:assumption (or x12120 x30286)
+:assumption (or (not x14472) (not x29291))
+:assumption (or x16908 (not x12151))
+:assumption (or x1147 x26916)
+:assumption (or (not x5977) x14782)
+:assumption (or (not x2330) (not x7247))
+:assumption (or (not x25927) (not x16980))
+:assumption (or x4832 x17597)
+:assumption (or x17498 x25460)
+:assumption (or (not x26313) x20064 x12578 (not x15035))
+:assumption (or (not x24979) x1253)
+:assumption (or (not x5855) x9140)
+:assumption (or x14598 (not x22650) (not x21298))
+:assumption (or x26246 x30667)
+:assumption (or (not x18122) x23793)
+:assumption (or x7200 (not x1850) (not x25334) (not x8382) (not x17571))
+:assumption (or (not x9020) x688 x7441 x9905 x2627 x17856)
+:assumption (or (not x21094) (not x14552))
+:assumption (or x3909 x5345 x20579 (not x25442) (not x352) (not x8961) x9075 (not x13479) (not x21239) x19506 (not x2274))
+:assumption (or x9851 x19786)
+:assumption (or x20600 (not x6715))
+:assumption (or x28161 x14395 (not x2147))
+:assumption (or x28260 x10268)
+:assumption (or x16542 x16088)
+:assumption (or x28663 (not x11157))
+:assumption (or x8201 (not x19101) (not x16907) (not x15400))
+:assumption (or (not x13354) (not x20552))
+:assumption (or x14201 x29381 (not x14341) x18813 (not x20845))
+:assumption (or x3378 (not x15104))
+:assumption (or (not x17748) (not x28680))
+:assumption (or x22948 (not x11949))
+:assumption (or (not x17494) x20356)
+:assumption (or (not x17115) (not x4720))
+:assumption (or x8544 x1915)
+:assumption (or x480 x14673 (not x3869))
+:assumption (or (not x21808) x23886)
+:assumption (or x22346 x6167)
+:assumption (or (not x27194) x21451 x4580 (not x17701) (not x11938) (not x5346) x6436)
+:assumption (or (not x13576) (not x1718) x16255)
+:assumption (or (not x27296) (not x25559))
+:assumption (or (not x5702) x10195)
+:assumption (or (not x25543) (not x6382))
+:assumption (or (not x31897) (not x17359))
+:assumption (or x4451 (not x20890))
+:assumption (or (not x981) x12730)
+:assumption (or x4438 (not x8002) x25627)
+:assumption (or x19590 (not x4971))
+:assumption (or (not x8602) (not x30334) x29576)
+:assumption (or (not x9008) x13143)
+:assumption (or x28554 (not x30407))
+:assumption (or (not x14542) x14601)
+:assumption (or (not x12077) (not x11960))
+:assumption (or x27121 x7498)
+:assumption (or (not x31303) x19518 x31110 (not x15822) (not x28253) x9008)
+:assumption (or (not x14811) x15198 x21203 x10316 x23244)
+:assumption (or (not x464) x12045)
+:assumption (or x1038 x10655)
+:assumption (or x27528 x18991)
+:assumption (or x21298 (not x3200))
+:assumption (or x22771 (not x21652))
+:assumption (or x14032 (not x12915))
+:assumption (or (not x1117) (not x22223))
+:assumption (or x2113 (not x2674))
+:assumption (or (not x2501) (not x28273))
+:assumption (or (not x9772) (not x19916))
+:assumption (or (not x23374) x19864)
+:assumption (or (not x30837) (not x24469))
+:assumption (or x15659 x20540)
+:assumption (or (not x13842) x13727)
+:assumption (or (not x19639) (not x3638))
+:assumption (or x8721 x10865)
+:assumption (or x17908 (not x14838))
+:assumption (or x9917 (not x8946))
+:assumption (or x1219 (not x3381))
+:assumption (or x17983 (not x27630))
+:assumption (or (not x19711) (not x17981) (not x20937))
+:assumption (or (not x24853) x15482 (not x9764) x13480)
+:assumption (or x10528 (not x20322))
+:assumption (or (not x17762) x14963 x5533)
+:assumption (or x2678 (not x27013))
+:assumption (or (not x26670) x3235 (not x19403))
+:assumption (or (not x18141) x22162)
+:assumption (or (not x8064) (not x10322))
+:assumption (or x31250 x6969)
+:assumption (or (not x10288) x1623)
+:assumption (or (not x6310) x551 (not x14753) (not x13539) x6382)
+:assumption (or (not x10630) x3067)
+:assumption (or x4076 x6911 x14605)
+:assumption (or x21653 (not x21008) (not x11236))
+:assumption (or (not x28470) x3512 x14795 (not x4666) (not x9686) x7573 (not x4223) x25437 x16209 x8459 (not x1018) x3030)
+:assumption (or x8002 (not x2680))
+:assumption (or (not x20223) (not x31243))
+:assumption (or x14332 x1045)
+:assumption (or x22755 x13017)
+:assumption (or (not x20026) (not x13398))
+:assumption (or x2014 x25590)
+:assumption (or (not x14901) x13956)
+:assumption (or x20614 x24931)
+:assumption (or x20576 (not x7268) (not x8961) (not x14425))
+:assumption (or x6378 (not x24385) x5534 (not x4910) x19665 x13632 x18719)
+:assumption (or x25805 x18992)
+:assumption (or x17284 (not x7867))
+:assumption (or (not x17634) (not x25625))
+:assumption (or (not x29577) x19555)
+:assumption (or (not x21869) (not x8229) (not x7158))
+:assumption (or x2538 (not x17590))
+:assumption (or (not x7188) x19175 (not x25366) (not x6606))
+:assumption (or x17359 (not x22219))
+:assumption (or (not x6707) x30787 (not x26885) (not x15449))
+:assumption (or (not x980) x26899)
+:assumption (or x7318 (not x22912))
+:assumption (or (not x11938) x12549)
+:assumption (or (not x7026) (not x18293))
+:assumption (or x18399 x22941)
+:assumption (or (not x1578) x15848)
+:assumption (or (not x17430) (not x21653) x3712)
+:assumption (or (not x3848) (not x23608))
+:assumption (or (not x4560) (not x29979))
+:assumption (or x17791 (not x24166))
+:assumption (or x12526 x16089)
+:assumption (or x26897 (not x17260) (not x15034) x3188 x11069 x25291)
+:assumption (or x5237 x120 (not x4529) x5665 x1589 x10612 x22242)
+:assumption (or (not x24221) (not x13097))
+:assumption (or (not x21298) x4045)
+:assumption (or x29970 (not x23034))
+:assumption (or x27076 (not x15836))
+:assumption (or x4807 (not x28885) x1052 (not x13803))
+:assumption (or x1554 x19864)
+:assumption (or (not x7819) (not x6236))
+:assumption (or (not x19184) x13188 (not x5047))
+:assumption (or (not x21815) (not x8902) x2241 x16510 x20087 (not x1136) (not x26432))
+:assumption (or (not x13281) (not x8849))
+:assumption (or (not x23244) (not x2551))
+:assumption (or x15347 (not x15655) (not x25659))
+:assumption (or x7532 (not x7051) (not x3538) x7317)
+:assumption (or x10178 x6555)
+:assumption (or (not x13899) (not x2429))
+:assumption (or x11291 x13383)
+:assumption (or (not x4186) x29967)
+:assumption (or x3833 (not x13049))
+:assumption (or x10430 (not x40))
+:assumption (or x31574 (not x24140))
+:assumption (or (not x8384) (not x25920))
+:assumption (or (not x23921) (not x23244))
+:assumption (or (not x2736) x17471)
+:assumption (or (not x6750) x24982)
+:assumption (or x23123 (not x2671))
+:assumption (or x10895 x18111)
+:assumption (or x11499 x5422)
+:assumption (or (not x21441) (not x30459))
+:assumption (or x13487 x10394)
+:assumption (or (not x31661) (not x25172) (not x9296) (not x10941) x234 (not x985) (not x29715) x12942)
+:assumption (or (not x10463) (not x6788))
+:assumption (or (not x589) (not x10242))
+:assumption (or (not x25471) (not x31569))
+:assumption (or x11115 x24620)
+:assumption (or (not x13043) (not x4538))
+:assumption (or x27255 (not x13362))
+:assumption (or x34 (not x9179))
+:assumption (or x26988 x16784)
+:assumption (or x12913 x31174 x21653)
+:assumption (or x31513 x221)
+:assumption (or x18973 x2214)
+:assumption (or (not x21001) x18519)
+:assumption (or (not x4834) (not x21295))
+:assumption (or x1330 (not x3831))
+:assumption (or x14958 x23492)
+:assumption (or (not x26258) (not x20426))
+:assumption (or (not x4512) (not x29620))
+:assumption (or (not x31206) x31485 (not x15914) (not x26517) (not x11253) (not x202))
+:assumption (or (not x11709) x25302)
+:assumption (or x28342 x17847)
+:assumption (or x12059 (not x4187))
+:assumption (or (not x12756) (not x25882) (not x21298))
+:assumption (or x10450 (not x1435) (not x29985) x4559)
+:assumption (or x3111 x19805)
+:assumption (or x17891 (not x3264) x25784 x24771 (not x6291) (not x14199) x19416)
+:assumption (or (not x8584) x255)
+:assumption (or (not x22597) (not x16025))
+:assumption (or x180 (not x31409) x23244)
+:assumption (or x7191 (not x12588))
+:assumption (or x10642 (not x16057))
+:assumption (or (not x9712) (not x9705))
+:assumption (or (not x15679) x26432)
+:assumption (or x17165 (not x31176) (not x29762) (not x13407))
+:assumption (or (not x23056) x29606 (not x13575))
+:assumption (or (not x2978) (not x10874))
+:assumption (or (not x17825) x27028)
+:assumption (or x26160 x17990)
+:assumption (or (not x5468) (not x30487) (not x5528) (not x26844) x20270 (not x10392))
+:assumption (or x27123 x13240 (not x28108) (not x7702) (not x18928))
+:assumption (or (not x29225) (not x9472))
+:assumption (or (not x710) (not x9732) x15404)
+:assumption (or (not x2921) x21911)
+:assumption (or (not x9008) x3271 (not x28696))
+:assumption (or (not x18005) (not x23986))
+:assumption (or (not x23084) (not x2211))
+:assumption (or x16491 x27034)
+:assumption (or (not x12603) x22214)
+:assumption (or x9008 (not x27453) (not x2034))
+:assumption (or x21223 x10973)
+:assumption (or (not x2157) (not x7537) (not x22120) x25028 x7541 (not x19829))
+:assumption (or (not x17739) x13956)
+:assumption (or x5036 (not x31410))
+:assumption (or (not x13956) (not x17255))
+:assumption (or x14623 (not x8795))
+:assumption (or (not x20949) (not x30658) x12045 (not x6754))
+:assumption (or (not x16025) (not x30418) x27458)
+:assumption (or x15641 x22365)
+:assumption (or x24088 (not x20756))
+:assumption (or (not x17272) (not x10723))
+:assumption (or (not x1695) x17691)
+:assumption (or x21367 (not x26606))
+:assumption (or x21467 (not x9287))
+:assumption (or (not x10242) x28272)
+:assumption (or x13574 (not x23334))
+:assumption (or (not x24888) (not x10301))
+:assumption (or (not x1393) (not x13246) x19623)
+:assumption (or x22363 x668 (not x124) x8176 (not x19478) x12685 (not x16321) (not x7875))
+:assumption (or (not x19900) x24530)
+:assumption (or (not x18829) (not x15193) x26453 (not x6149) (not x23220) (not x23510) x11792)
+:assumption (or (not x13456) (not x26176))
+:assumption (or (not x8574) x18732)
+:assumption (or x23958 (not x28559))
+:assumption (or (not x13336) (not x15471))
+:assumption (or x13487 x2334 x12739 (not x20566) x19473 (not x31895))
+:assumption (or x21815 (not x18072))
+:assumption (or (not x15280) (not x15950))
+:assumption (or x6249 x23565)
+:assumption (or x17359 (not x30023) (not x21685))
+:assumption (or x9651 (not x30980))
+:assumption (or (not x26280) (not x12465) x1317 (not x21506))
+:assumption (or x31850 (not x27160))
+:assumption (or x8764 (not x17162) x26202 (not x30587) (not x20291) (not x10275))
+:assumption (or x23658 x25366 (not x22376) x169)
+:assumption (or (not x14091) x20043)
+:assumption (or x2701 (not x12912))
+:assumption (or x17855 x31553)
+:assumption (or (not x25970) (not x8602))
+:assumption (or x18278 (not x1487))
+:assumption (or x12242 (not x10687) x1441 x19893 (not x3790))
+:assumption (or (not x31792) (not x30597))
+:assumption (or (not x21846) x23203)
+:assumption (or x2332 x169)
+:assumption (or (not x3509) x762)
+:assumption (or (not x537) (not x28188) (not x15192) x3906 x28293 (not x21842) (not x4601) x21226 x6149)
+:assumption (or x6835 (not x24716))
+:assumption (or x18280 (not x17940))
+:assumption (or x30092 x15297)
+:assumption (or (not x17629) (not x20185))
+:assumption (or (not x10769) (not x29479))
+:assumption (or x4761 (not x7098))
+:assumption (or x11984 (not x3782))
+:assumption (or (not x17860) x1942)
+:assumption (or x25366 x5252 x8129)
+:assumption (or (not x22872) (not x12242) x20325 (not x25039))
+:assumption (or x17651 x4742 (not x22937) (not x30203) (not x5971) x12350)
+:assumption (or (not x776) (not x5510))
+:assumption (or (not x12598) x10134 x29676 x6153 (not x18428))
+:assumption (or x16510 x25149)
+:assumption (or (not x16068) (not x1663))
+:assumption (or x26228 (not x8002))
+:assumption (or x8366 x9779 (not x28746) x6959)
+:assumption (or x9638 (not x10521))
+:assumption (or (not x15526) (not x23809))
+:assumption (or x18069 x4156)
+:assumption (or x24919 (not x5795))
+:assumption (or x13365 x12945)
+:assumption (or x11983 (not x4851))
+:assumption (or (not x3788) (not x18163))
+:assumption (or (not x25059) (not x10666))
+:assumption (or (not x26950) (not x28))
+:assumption (or x29153 x23955)
+:assumption (or (not x2049) x2334)
+:assumption (or (not x7029) x4256)
+:assumption (or x11495 (not x3770))
+:assumption (or (not x9916) (not x655))
+:assumption (or (not x4521) (not x14839) (not x8010))
+:assumption (or (not x15923) x22548)
+:assumption (or x29312 (not x23693))
+:assumption (or (not x29020) x6775)
+:assumption (or x19889 (not x29416))
+:assumption (or (not x2876) x9775)
+:assumption (or x23961 x6736)
+:assumption (or (not x6611) (not x17318) (not x22846) (not x10270) x29684 x547 x612)
+:assumption (or x8925 x13947)
+:assumption (or x26403 x29312 (not x20179))
+:assumption (or (not x4332) (not x3035))
+:assumption (or (not x27222) (not x24538))
+:assumption (or x31561 x30857)
+:assumption (or x20992 x26684)
+:assumption (or x9926 (not x29510) x9443 (not x29333) (not x13259))
+:assumption (or (not x22372) (not x5871))
+:assumption (or (not x5598) x6754)
+:assumption (or (not x20955) x8808 x4774 x9008 (not x760) x19826)
+:assumption (or x19261 (not x1553))
+:assumption (or (not x30257) (not x29155))
+:assumption (or (not x20150) x11942 (not x12038) x28196 x626 (not x29814) x24860)
+:assumption (or (not x13899) (not x22752))
+:assumption (or x3810 x28859)
+:assumption (or x26907 x21661)
+:assumption (or (not x12071) x4324)
+:assumption (or (not x25117) x5528)
+:assumption (or (not x2092) x8002)
+:assumption (or (not x22438) (not x11431))
+:assumption (or x7322 (not x6537))
+:assumption (or x27691 (not x26756))
+:assumption (or x30633 x2720)
+:assumption (or x3843 x28421 (not x8602))
+:assumption (or (not x19048) x15916)
+:assumption (or x27399 (not x28041) (not x7080) (not x3665) (not x7498) x23202 x26143 x1621)
+:assumption (or x17302 (not x10476) (not x21665) (not x13036))
+:assumption (or x25021 (not x23008))
+:assumption (or x27317 (not x4886) (not x16374))
+:assumption (or (not x7480) (not x17581))
+:assumption (or (not x4258) (not x25881))
+:assumption (or x19800 x25345)
+:assumption (or (not x23437) x3882)
+:assumption (or (not x3753) (not x24298))
+:assumption (or x395 x24453)
+:assumption (or (not x11849) (not x26002))
+:assumption (or (not x562) x6149)
+:assumption (or x12289 x12113)
+:assumption (or x8450 x20201)
+:assumption (or x4138 (not x30856) (not x22134))
+:assumption (or x22567 x4795 (not x18906) x4334 (not x23899) (not x16510))
+:assumption (or x23886 (not x2276))
+:assumption (or (not x10360) (not x28465))
+:assumption (or x1393 (not x24848) x28728)
+:assumption (or (not x8997) (not x23019))
+:assumption (or x4710 x6777)
+:assumption (or x20947 x27603 x25577 (not x3091) x17221)
+:assumption (or x13811 x22441)
+:assumption (or x20029 (not x18645) x12045 (not x2662) x3079 x27437 x28971)
+:assumption (or x5728 x3067)
+:assumption (or (not x19264) (not x31134))
+:assumption (or x445 (not x14969))
+:assumption (or x11500 (not x504))
+:assumption (or (not x28189) (not x8117))
+:assumption (or x23523 x13817)
+:assumption (or (not x27229) (not x27384))
+:assumption (or x6370 (not x23672) (not x26858))
+:assumption (or x31563 (not x7795) (not x18851))
+:assumption (or x13485 (not x10059))
+:assumption (or x3081 x29129)
+:assumption (or x18070 (not x21030))
+:assumption (or (not x29064) x31124)
+:assumption (or x21866 (not x18519))
+:assumption (or (not x25771) x4555 (not x14578) x20007)
+:assumption (or x2488 (not x11330))
+:assumption (or x26427 x12929)
+:assumption (or x24532 x27744)
+:assumption (or x22747 x24877 (not x10337) x31877 x15964)
+:assumption (or (not x14824) (not x17543))
+:assumption (or x15083 x5621 (not x4012) (not x16186) x21657 (not x25413) x21633 (not x30867))
+:assumption (or (not x27583) x3441)
+:assumption (or (not x16362) (not x13141))
+:assumption (or x5217 x21190 (not x6407))
+:assumption (or x13901 x9008 x15032 (not x13642) (not x16289) x10790)
+:assumption (or (not x17568) (not x17861))
+:assumption (or x24713 (not x465) (not x22844))
+:assumption (or x16802 (not x9641))
+:assumption (or x10187 (not x18359))
+:assumption (or x13425 (not x24050))
+:assumption (or (not x16025) (not x26913))
+:assumption (or (not x28895) (not x24690) (not x5528) (not x22361) x21601 (not x19401))
+:assumption (or (not x11491) (not x25366))
+:assumption (or x20841 x20885)
+:assumption (or x29886 x18945)
+:assumption (or x26558 (not x10485))
+:assumption (or (not x30764) (not x2633))
+:assumption (or (not x20724) x26469)
+:assumption (or (not x10008) (not x4258))
+:assumption (or x30780 (not x4972))
+:assumption (or (not x16913) (not x1085))
+:assumption (or (not x24722) x3003)
+:assumption (or x30224 (not x8275))
+:assumption (or x5589 x12533)
+:assumption (or x6335 (not x19740))
+:assumption (or (not x15917) (not x15563) (not x25328) (not x10168) (not x2536) (not x9313))
+:assumption (or (not x23166) (not x28858))
+:assumption (or x29415 (not x15621))
+:assumption (or (not x12259) (not x24980))
+:assumption (or x9133 (not x6591))
+:assumption (or (not x12808) (not x16025))
+:assumption (or x11658 (not x30302) (not x15496) (not x19555) (not x12258) (not x1547))
+:assumption (or x28022 (not x9008))
+:assumption (or x7804 x1486)
+:assumption (or (not x29250) x31096)
+:assumption (or x29746 (not x26107))
+:assumption (or x13956 (not x30657))
+:assumption (or x1552 x1239)
+:assumption (or x9423 (not x13472) x19990 (not x18870))
+:assumption (or x9034 (not x3101))
+:assumption (or x5528 x17365)
+:assumption (or (not x19431) (not x26007))
+:assumption (or x720 (not x14491))
+:assumption (or (not x12114) x21298)
+:assumption (or (not x19992) x22305)
+:assumption (or (not x6547) (not x29594))
+:assumption (or x10156 (not x9370))
+:assumption (or x17917 (not x8331))
+:assumption (or (not x675) x9861 (not x17860))
+:assumption (or x12816 x16073)
+:assumption (or (not x11297) (not x9405))
+:assumption (or x11149 (not x15742))
+:assumption (or (not x6697) x18753)
+:assumption (or x28746 (not x8366))
+:assumption (or x5433 x29651)
+:assumption (or (not x10855) (not x22855))
+:assumption (or x2344 x15671)
+:assumption (or (not x6594) (not x7415))
+:assumption (or (not x15521) (not x14576))
+:assumption (or (not x26927) x13944 x18859)
+:assumption (or x13461 (not x5846))
+:assumption (or (not x19428) x4140)
+:assumption (or (not x3634) x17473)
+:assumption (or (not x15115) x21396)
+:assumption (or (not x15917) (not x16988))
+:assumption (or x21141 x8532)
+:assumption (or (not x4028) (not x24539))
+:assumption (or (not x29618) x31638)
+:assumption (or x21023 (not x29606))
+:assumption (or x17359 (not x19015))
+:assumption (or (not x18905) (not x29488))
+:assumption (or x27220 x4157)
+:assumption (or (not x14875) x25139)
+:assumption (or x28523 (not x19992))
+:assumption (or (not x29327) (not x30200))
+:assumption (or (not x14641) x20402 x3222 x14718)
+:assumption (or (not x24134) (not x24484))
+:assumption (or (not x11263) x30868 x11338 (not x21174) (not x18570) (not x12717))
+:assumption (or (not x25269) (not x5312))
+:assumption (or (not x15743) (not x26580))
+:assumption (or x21845 (not x9224))
+:assumption (or (not x10239) x3662)
+:assumption (or x17167 (not x31392))
+:assumption (or x31874 x20863)
+:assumption (or (not x7632) x3715)
+:assumption (or (not x10365) x21298)
+:assumption (or x10818 (not x13956))
+:assumption (or (not x14931) (not x11449))
+:assumption (or (not x15868) x9423 x30660 (not x5215))
+:assumption (or x8493 x19895)
+:assumption (or x24425 x787 (not x6301) x31713 (not x30451) (not x663) (not x9324) x30221 (not x5112))
+:assumption (or (not x14623) (not x22798) x629 (not x7001) (not x5528) x29063)
+:assumption (or x8773 x20555)
+:assumption (or (not x25352) (not x679))
+:assumption (or x5287 x5647)
+:assumption (or (not x14775) (not x21349))
+:assumption (or x28105 x6806)
+:assumption (or (not x22442) x30824)
+:assumption (or x12740 (not x5528))
+:assumption (or (not x21815) x26823)
+:assumption (or (not x16409) x19281)
+:assumption (or (not x18488) (not x8628))
+:assumption (or x405 (not x2286))
+:assumption (or (not x1912) x9110)
+:assumption (or (not x23262) (not x288))
+:assumption (or x16062 (not x23809))
+:assumption (or (not x11896) (not x16046))
+:assumption (or x2043 x8284)
+:assumption (or (not x31061) x28885 (not x23558))
+:assumption (or (not x3548) (not x16718) (not x16741) (not x11868))
+:assumption (or (not x16510) x2453)
+:assumption (or x3778 (not x9531))
+:assumption (or x26264 x5422)
+:assumption (or x18121 x31609)
+:assumption (or (not x9008) x933)
+:assumption (or (not x23257) x18647)
+:assumption (or (not x29419) x21974)
+:assumption (or x19864 (not x6580))
+:assumption (or (not x29166) x13018)
+:assumption (or x18869 (not x280))
+:assumption (or x7441 (not x2425) x18689 (not x23065))
+:assumption (or x7994 x27091)
+:assumption (or (not x26950) (not x27446))
+:assumption (or x27723 (not x18196))
+:assumption (or (not x30255) x22384)
+:assumption (or x19670 x13576 (not x11722) (not x7076) (not x28460))
+:assumption (or x14580 x855)
+:assumption (or x15056 x11506 x18119)
+:assumption (or x22656 (not x16095))
+:assumption (or x21469 x17526)
+:assumption (or x28630 (not x4975))
+:assumption (or (not x5249) x10677)
+:assumption (or x23244 (not x5418) (not x31829))
+:assumption (or x1920 (not x7314))
+:assumption (or (not x11751) x20661)
+:assumption (or (not x10864) (not x22001))
+:assumption (or (not x22868) x27132)
+:assumption (or (not x5769) x24824)
+:assumption (or x8059 (not x12461))
+:assumption (or x18238 x7913)
+:assumption (or (not x14687) (not x1096) x12965 (not x28469) (not x12662))
+:assumption (or x26634 x16413)
+:assumption (or x31565 (not x17541))
+:assumption (or (not x3836) x16143)
+:assumption (or (not x25601) x19724 x801)
+:assumption (or x9008 x6448 x27907 (not x2066) x31322 (not x29254))
+:assumption (or x1557 x14964 (not x20901) x19639)
+:assumption (or (not x20457) x26860)
+:assumption (or x20022 (not x1465))
+:assumption (or x10432 (not x8002) x4502)
+:assumption (or x28342 x12706)
+:assumption (or x28297 (not x28748))
+:assumption (or x23702 (not x4820) x10492 x5588)
+:assumption (or x30792 (not x20326))
+:assumption (or x701 x9999)
+:assumption (or (not x21694) x17297)
+:assumption (or x24276 (not x26304))
+:assumption (or (not x12252) x28574 (not x26488) x10497 (not x18248) x2160 x21690 x30054)
+:assumption (or x28736 (not x20469))
+:assumption (or (not x18922) (not x19694) (not x17963) x25914)
+:assumption (or (not x12403) (not x3493))
+:assumption (or (not x19135) x302)
+:assumption (or (not x22732) (not x11011))
+:assumption (or (not x25271) (not x18997) (not x24002))
+:assumption (or (not x20804) (not x2912))
+:assumption (or x12613 x15802 x25116 (not x3151) x4924 (not x15749) x6821 x17834)
+:assumption (or (not x18042) x2071)
+:assumption (or x10207 x23179)
+:assumption (or (not x9980) x343)
+:assumption (or x8697 (not x29804))
+:assumption (or (not x20357) (not x27464))
+:assumption (or x15897 (not x20403) x21631 (not x9231) x16611 (not x4284) (not x27909) x6447)
+:assumption (or (not x18088) x3267)
+:assumption (or x15500 x13440)
+:assumption (or x23818 (not x28574))
+:assumption (or (not x28733) x637)
+:assumption (or (not x31828) (not x15642) x18606 (not x29157))
+:assumption (or (not x5273) x28364)
+:assumption (or x15962 x22913 x19428)
+:assumption (or x26255 (not x13443))
+:assumption (or x741 x16304)
+:assumption (or (not x25932) (not x25366))
+:assumption (or x19400 (not x5312) (not x19820) x10134 (not x10874) x3683 x23079)
+:assumption (or (not x19429) x11829 (not x5709))
+:assumption (or x12945 (not x24285))
+:assumption (or (not x23542) (not x24362))
+:assumption (or (not x8625) (not x23047) (not x10760) x138)
+:assumption (or x16003 (not x8417))
+:assumption (or x3638 x28545)
+:assumption (or (not x17549) x15761 (not x19044) (not x11413) x11710 x5397)
+:assumption (or (not x12144) x14130)
+:assumption (or x13880 x1739)
+:assumption (or (not x2497) (not x28973))
+:assumption (or x2085 (not x27414))
+:assumption (or (not x8353) (not x12913) (not x21653))
+:assumption (or (not x30884) x9439)
+:assumption (or (not x5994) x3653)
+:assumption (or x3224 x30739)
+:assumption (or x16025 (not x18623) x9360)
+:assumption (or x485 x30883)
+:assumption (or x10814 (not x18042))
+:assumption (or (not x1360) (not x10076))
+:assumption (or x10632 x7040)
+:assumption (or x13513 (not x11585))
+:assumption (or (not x17788) x21156)
+:assumption (or x8111 (not x17506))
+:assumption (or x18607 x16266 (not x16025))
+:assumption (or (not x28885) x13345)
+:assumption (or (not x17534) (not x8974))
+:assumption (or x2334 (not x14645) x13487)
+:assumption (or x14177 x3055 (not x16615))
+:assumption (or x1422 (not x8915))
+:assumption (or (not x30981) x9684)
+:assumption (or x26868 x10220)
+:assumption (or (not x6444) x8420)
+:assumption (or x19448 (not x16885))
+:assumption (or (not x13593) (not x4844))
+:assumption (or x5404 (not x4841))
+:assumption (or (not x8195) (not x3182))
+:assumption (or (not x14614) (not x26670) (not x9025))
+:assumption (or x22720 x2913)
+:assumption (or (not x16385) x26481)
+:assumption (or (not x24687) x31875)
+:assumption (or x19207 x28580)
+:assumption (or (not x14898) (not x16165))
+:assumption (or x13956 (not x20704))
+:assumption (or x10522 (not x18800))
+:assumption (or x3101 (not x28509))
+:assumption (or (not x2133) (not x27243))
+:assumption (or x6057 (not x14839))
+:assumption (or x8626 (not x16175))
+:assumption (or (not x14146) x6708 (not x7801))
+:assumption (or x30307 x26732)
+:assumption (or (not x13956) x7428)
+:assumption (or x14466 (not x8335))
+:assumption (or x1382 (not x12568))
+:assumption (or x15921 x11801)
+:assumption (or x24878 (not x22496))
+:assumption (or (not x3796) x23244)
+:assumption (or (not x30348) x8136)
+:assumption (or x683 (not x16823))
+:assumption (or (not x14395) x9639)
+:assumption (or x20030 x18646)
+:assumption (or (not x4602) x31931)
+:assumption (or x20278 (not x14402) x18268 (not x7814))
+:assumption (or (not x17670) (not x846))
+:assumption (or (not x6927) (not x11632))
+:assumption (or x10959 (not x30836))
+:assumption (or (not x24237) (not x7288))
+:assumption (or (not x6757) (not x24094))
+:assumption (or x6951 x17661)
+:assumption (or x18089 x10201)
+:assumption (or (not x4619) (not x3295))
+:assumption (or (not x856) (not x18115))
+:assumption (or (not x11996) (not x7773) (not x12767))
+:assumption (or (not x5809) x5019)
+:assumption (or x31221 x12411 x10185 (not x31546))
+:assumption (or x17509 x28504)
+:assumption (or x13953 x28702)
+:assumption (or x31027 x17856)
+:assumption (or (not x9008) x10442 x15983)
+:assumption (or x28356 x23785)
+:assumption (or x31766 x13304)
+:assumption (or (not x16477) (not x18987))
+:assumption (or x31424 (not x17280))
+:assumption (or (not x30130) x28542)
+:assumption (or x31515 (not x15427))
+:assumption (or (not x16374) x16902)
+:assumption (or (not x19341) (not x7417))
+:assumption (or x2468 (not x31059))
+:assumption (or (not x20312) (not x24756))
+:assumption (or (not x11677) x9239)
+:assumption (or (not x21241) x16363 x22434 (not x13773) x22757)
+:assumption (or x8885 x22334)
+:assumption (or x8813 x26349)
+:assumption (or x26415 (not x1955))
+:assumption (or x30186 x12923 x27597)
+:assumption (or (not x29892) (not x15152))
+:assumption (or (not x6390) x21298 x11945 (not x12588))
+:assumption (or x22961 (not x15227))
+:assumption (or (not x26443) (not x17527))
+:assumption (or x14602 (not x20861))
+:assumption (or x29312 (not x29830))
+:assumption (or (not x21835) (not x5544))
+:assumption (or x10485 (not x26558))
+:assumption (or (not x12488) (not x15558))
+:assumption (or x21942 (not x31806) x31402 (not x30909))
+:assumption (or x11934 x24488 (not x21298) (not x27769))
+:assumption (or (not x29273) x10871)
+:assumption (or x1568 x26626 (not x23891) x9008 (not x6438) (not x30391) x7559 (not x15362))
+:assumption (or (not x14868) x21311)
+:assumption (or x20733 (not x22676))
+:assumption (or (not x7576) x27011)
+:assumption (or (not x25698) x10098)
+:assumption (or (not x1866) x8483)
+:assumption (or (not x10081) x2567)
+:assumption (or x9732 (not x25171))
+:assumption (or (not x30055) x16569)
+:assumption (or x8461 x20482 (not x15320))
+:assumption (or (not x12248) x19839)
+:assumption (or (not x10064) x11821)
+:assumption (or x31225 (not x8409))
+:assumption (or (not x3782) x10914 x30643 (not x29442))
+:assumption (or x29951 (not x27343))
+:assumption (or x18905 x85)
+:assumption (or x9008 (not x16207) (not x30453) (not x13867) x18125 x9786)
+:assumption (or (not x26583) x5528)
+:assumption (or x9694 (not x22750))
+:assumption (or (not x18431) (not x21171))
+:assumption (or (not x22987) x9915)
+:assumption (or (not x25069) x30028)
+:assumption (or x29312 (not x684))
+:assumption (or x15531 (not x6749))
+:assumption (or (not x8002) (not x25938))
+:assumption (or x12848 (not x21414))
+:assumption (or x8306 x2621 (not x2529))
+:assumption (or x5007 (not x29499))
+:assumption (or (not x29601) x30109)
+:assumption (or x3402 (not x1524))
+:assumption (or (not x17571) (not x2200))
+:assumption (or (not x12157) (not x8586) (not x9141))
+:assumption (or (not x20572) (not x23125))
+:assumption (or x13045 (not x857))
+:assumption (or (not x5367) (not x30647))
+:assumption (or x15261 (not x5528))
+:assumption (or x937 x13956)
+:assumption (or (not x9702) (not x22811))
+:assumption (or x4555 (not x337))
+:assumption (or x18042 x11123)
+:assumption (or x25551 x27564)
+:assumption (or (not x20397) x22710)
+:assumption (or x15489 x21955)
+:assumption (or x19236 (not x30008))
+:assumption (or (not x23297) (not x15114))
+:assumption (or x28329 (not x17286))
+:assumption (or (not x27499) x12030)
+:assumption (or (not x21049) x10233)
+:assumption (or x23911 (not x8321) (not x26595))
+:assumption (or (not x31695) (not x21662))
+:assumption (or (not x13576) (not x13990) (not x28297) x13172 x26437 x26070)
+:assumption (or x2278 (not x4997))
+:assumption (or (not x3975) (not x11384) x27509)
+:assumption (or (not x3292) (not x27257))
+:assumption (or x5415 x22201)
+:assumption (or (not x24562) (not x2459))
+:assumption (or (not x29458) (not x25806))
+:assumption (or (not x22531) (not x2086))
+:assumption (or (not x14136) (not x24756) x2692)
+:assumption (or x11827 x5028)
+:assumption (or x30104 x31612)
+:assumption (or (not x9731) x11018 (not x14649) (not x9432) x12099 x1819)
+:assumption (or x18859 (not x3609))
+:assumption (or (not x2186) (not x21053))
+:assumption (or x5468 x4794)
+:assumption (or x18988 (not x2820) (not x10982) (not x24621))
+:assumption (or (not x29606) (not x31134) x11841)
+:assumption (or x28346 (not x15853))
+:assumption (or x11964 x24552 x10850)
+:assumption (or x24856 x322)
+:assumption (or (not x30364) (not x27900))
+:assumption (or x19952 x30989)
+:assumption (or (not x22388) (not x3227))
+:assumption (or (not x24419) x26676)
+:assumption (or (not x17815) (not x27130))
+:assumption (or x10874 (not x8566))
+:assumption (or x16600 x14474)
+:assumption (or x30913 x395)
+:assumption (or x22461 (not x30071))
+:assumption (or x17394 (not x23964))
+:assumption (or x7902 (not x15824))
+:assumption (or (not x22520) (not x20357) (not x16101))
+:assumption (or (not x3474) (not x14814))
+:assumption (or (not x10289) x21086)
+:assumption (or (not x27111) (not x18046))
+:assumption (or (not x18435) (not x6582))
+:assumption (or (not x24856) (not x322))
+:assumption (or (not x4386) x31668)
+:assumption (or (not x7375) x21242)
+:assumption (or (not x8002) x16169)
+:assumption (or (not x28206) x4402)
+:assumption (or (not x14237) x11065 (not x827))
+:assumption (or x294 x30113)
+:assumption (or x4091 x19731)
+:assumption (or x5811 (not x7330))
+:assumption (or (not x21179) (not x7034))
+:assumption (or x12420 x16458)
+:assumption (or x30639 x3116)
+:assumption (or x2964 (not x865))
+:assumption (or x31169 (not x9453) (not x4451) (not x27939) x12660)
+:assumption (or x8880 (not x23399) x16624)
+:assumption (or x29142 x20809 (not x23547) (not x8842) (not x16971))
+:assumption (or (not x27478) (not x22386))
+:assumption (or (not x21744) (not x9733))
+:assumption (or x5839 (not x9767))
+:assumption (or x23763 x22207)
+:assumption (or (not x13812) x29071)
+:assumption (or (not x23289) (not x20543))
+:assumption (or (not x24706) (not x14617))
+:assumption (or (not x16118) x17348)
+:assumption (or x18811 x517)
+:assumption (or x18608 x7648 (not x4784) (not x27449) (not x20820))
+:assumption (or x21262 (not x5528))
+:assumption (or x27781 x6742)
+:assumption (or (not x16426) (not x28103) (not x13956) (not x12420))
+:assumption (or x31158 (not x18932))
+:assumption (or (not x4469) x15509)
+:assumption (or (not x9475) (not x8683))
+:assumption (or x24189 x31391)
+:assumption (or (not x2498) (not x18889) x17140 x15537)
+:assumption (or x21298 (not x27048))
+:assumption (or (not x4789) x13626)
+:assumption (or (not x31431) x15369)
+:assumption (or x12481 (not x28191) (not x16214) (not x18293))
+:assumption (or (not x8680) x18743)
+:assumption (or (not x17289) (not x301))
+:assumption (or (not x6149) (not x139))
+:assumption (or (not x30010) x7721)
+:assumption (or (not x18665) x5279)
+:assumption (or x22865 (not x2481))
+:assumption (or (not x15795) (not x9238))
+:assumption (or x244 (not x18566))
+:assumption (or x8787 x22820)
+:assumption (or (not x6897) x20743)
+:assumption (or x13018 x16991 x413 (not x8717))
+:assumption (or x24462 (not x15090))
+:assumption (or x11539 (not x4077))
+:assumption (or x27279 x2122)
+:assumption (or x25388 x31591)
+:assumption (or (not x26728) x9701)
+:assumption (or (not x24270) x21363)
+:assumption (or (not x9392) x6149)
+:assumption (or (not x2013) x6905)
+:assumption (or x10275 x933)
+:assumption (or x22624 (not x21440))
+:assumption (or x19019 x29727)
+:assumption (or (not x27310) (not x19911))
+:assumption (or (not x8532) (not x443) (not x22904))
+:assumption (or (not x21213) x1290)
+:assumption (or (not x1564) (not x15063))
+:assumption (or (not x26635) x10922 x827)
+:assumption (or (not x21824) (not x19740) (not x20053))
+:assumption (or x3572 (not x1393) (not x27206))
+:assumption (or (not x8390) (not x26048))
+:assumption (or (not x11956) (not x25764))
+:assumption (or x30708 x28541)
+:assumption (or x31822 x21471)
+:assumption (or (not x903) x3717)
+:assumption (or (not x27494) (not x14202))
+:assumption (or x961 (not x21325))
+:assumption (or x9699 (not x4624))
+:assumption (or (not x2404) (not x12167))
+:assumption (or x24756 (not x5557))
+:assumption (or (not x6083) (not x24193))
+:assumption (or (not x7480) (not x7697))
+:assumption (or (not x15665) (not x11183))
+:assumption (or (not x18518) x8836)
+:assumption (or x29081 x31255)
+:assumption (or (not x5279) x9597)
+:assumption (or (not x25911) x3695)
+:assumption (or (not x13378) x31063 x28789 (not x14082) x24892)
+:assumption (or x8937 x20390 (not x10866) x10825 (not x27186))
+:assumption (or x23839 x26482)
+:assumption (or (not x21691) (not x1189))
+:assumption (or x162 x20150)
+:assumption (or (not x10798) (not x11832))
+:assumption (or (not x15229) x8657)
+:assumption (or (not x11431) (not x3247))
+:assumption (or (not x30113) x21178 x874 x26183)
+:assumption (or (not x20538) x10622)
+:assumption (or (not x22641) (not x24314))
+:assumption (or (not x4407) (not x15366))
+:assumption (or x20325 x1860 (not x29279))
+:assumption (or (not x13132) x14852)
+:assumption (or (not x20519) (not x6164) x15073 x30810 (not x24667))
+:assumption (or x14431 (not x22881))
+:assumption (or (not x25659) (not x9637))
+:assumption (or x5493 x14857)
+:assumption (or x31158 x17950)
+:assumption (or x5528 (not x31141))
+:assumption (or (not x13475) (not x31926))
+:assumption (or x23980 x8828)
+:assumption (or x26931 (not x16251))
+:assumption (or (not x24980) (not x15917))
+:assumption (or (not x28238) (not x17821) x2003 (not x22381) (not x20899) x29824 x10774 (not x18097) (not x409))
+:assumption (or x22360 (not x6308))
+:assumption (or x11452 x26711)
+:assumption (or (not x29442) (not x20701))
+:assumption (or (not x23633) (not x3320))
+:assumption (or x29302 x14004 (not x9008))
+:assumption (or (not x13567) x12421)
+:assumption (or (not x22531) x14710)
+:assumption (or x21138 x5180 x8653 (not x16648))
+:assumption (or (not x30017) (not x11174))
+:assumption (or x7531 x31778)
+:assumption (or (not x1569) x29717)
+:assumption (or x25021 (not x13956))
+:assumption (or x30303 x22255)
+:assumption (or (not x16132) x24621)
+:assumption (or (not x15417) (not x9114) (not x25025) (not x13525))
+:assumption (or (not x13956) x22146)
+:assumption (or x3627 (not x25637))
+:assumption (or (not x3134) (not x459))
+:assumption (or x496 (not x31134))
+:assumption (or x10938 x1526)
+:assumption (or x23645 x14839)
+:assumption (or (not x24984) (not x27803))
+:assumption (or (not x4818) (not x31350))
+:assumption (or x22992 (not x1368))
+:assumption (or (not x13393) x10915)
+:assumption (or (not x6174) x22852)
+:assumption (or (not x30995) x13229)
+:assumption (or x26228 x7362)
+:assumption (or (not x2229) (not x17335))
+:assumption (or x16003 (not x12768))
+:assumption (or (not x28733) (not x12924))
+:assumption (or (not x22102) x27941)
+:assumption (or x10818 (not x23244))
+:assumption (or x634 (not x5422) x12313)
+:assumption (or x24674 (not x13795))
+:assumption (or (not x25096) (not x10627))
+:assumption (or x14687 (not x22491))
+:assumption (or x31904 (not x24059))
+:assumption (or (not x13297) x14687 x21567)
+:assumption (or x31137 (not x28749))
+:assumption (or (not x3638) x3923)
+:assumption (or x20593 (not x21810))
+:assumption (or x6444 (not x6971))
+:assumption (or x29027 (not x6563))
+:assumption (or (not x2952) x9779)
+:assumption (or (not x8458) x29649)
+:assumption (or (not x20226) x5714 x9576 x15228 x23138)
+:assumption (or (not x12045) x19149 x12458 x20949)
+:assumption (or x21289 (not x5762) (not x29442))
+:assumption (or x28303 x27537)
+:assumption (or (not x28328) (not x6835))
+:assumption (or (not x12622) (not x9008) x3210)
+:assumption (or (not x27660) x23615)
+:assumption (or (not x16614) (not x9820))
+:assumption (or (not x18553) x11740)
+:assumption (or (not x7467) (not x21942))
+:assumption (or (not x23976) (not x23244))
+:assumption (or (not x20400) (not x24193))
+:assumption (or x17396 x18381)
+:assumption (or x29923 (not x11903))
+:assumption (or (not x13648) x29590 (not x28242) (not x10801) (not x13400))
+:assumption (or x22686 x29018)
+:assumption (or x19565 x31218)
+:assumption (or x24105 (not x8518))
+:assumption (or (not x9274) (not x12206))
+:assumption (or (not x8568) x7413)
+:assumption (or x24620 (not x9049))
+:assumption (or (not x15212) x13220)
+:assumption (or x31559 x30539)
+:assumption (or (not x29784) (not x30342) (not x9208) x20723)
+:assumption (or x20112 (not x899))
+:assumption (or x16180 x1148)
+:assumption (or (not x27620) x6048)
+:assumption (or x22670 x31686 x28568 x13327)
+:assumption (or (not x8645) (not x20709))
+:assumption (or x10763 (not x15621))
+:assumption (or x29856 (not x1025))
+:assumption (or x5353 x6550)
+:assumption (or (not x26713) (not x3544))
+:assumption (or (not x19864) x23972)
+:assumption (or x31851 x20929 (not x2008))
+:assumption (or (not x25045) (not x3782) (not x20798))
+:assumption (or (not x24242) x10696)
+:assumption (or (not x23412) x7302)
+:assumption (or (not x21630) x18315)
+:assumption (or (not x29430) x3196)
+:assumption (or x27822 x11944)
+:assumption (or x21955 (not x9461) x25075 x28715 x21671 (not x28136))
+:assumption (or x21844 (not x24400))
+:assumption (or x20517 (not x28774))
+:assumption (or x8513 x23118 x20134 (not x5798) x16652 x5387 x17024 (not x25279) (not x10554) x31072)
+:assumption (or x28898 (not x18573))
+:assumption (or x13570 (not x29959))
+:assumption (or (not x3447) (not x5615))
+:assumption (or x30773 (not x17395) x22844)
+:assumption (or x22705 (not x10385))
+:assumption (or (not x30954) (not x11928))
+:assumption (or (not x19290) x8008)
+:assumption (or (not x13018) x8717)
+:assumption (or (not x903) (not x10645))
+:assumption (or x24271 (not x27155))
+:assumption (or x16468 (not x30764))
+:assumption (or x21700 (not x27099))
+:assumption (or (not x3905) x7027 x8974 x15649)
+:assumption (or (not x9513) x13139)
+:assumption (or (not x20015) (not x9413) x28933 (not x21594) x927 x28973)
+:assumption (or x9683 (not x22530))
+:assumption (or x9423 (not x13961))
+:assumption (or (not x8018) x964)
+:assumption (or x2874 (not x10428))
+:assumption (or x29039 x407)
+:assumption (or (not x22829) x1681)
+:assumption (or x1992 x4344 x14839 (not x8173))
+:assumption (or (not x27749) (not x7679))
+:assumption (or x24255 x14591)
+:assumption (or (not x26362) x12450)
+:assumption (or x12474 x31790)
+:assumption (or (not x29257) x26345 (not x15749) x8314)
+:assumption (or (not x5330) (not x5394) x30349)
+:assumption (or (not x12923) (not x1592) x6579 x22802)
+:assumption (or x1689 (not x889))
+:assumption (or (not x18902) x9141)
+:assumption (or x19569 x12207)
+:assumption (or x3514 x11043)
+:assumption (or (not x626) (not x26978))
+:assumption (or x30240 (not x480))
+:assumption (or (not x15420) (not x11645))
+:assumption (or x30307 x23237 x12600 x13251)
+:assumption (or (not x14816) (not x3245) x20084 (not x14553) (not x15988))
+:assumption (or (not x10030) (not x21124))
+:assumption (or x23145 (not x1726))
+:assumption (or x2288 (not x2446))
+:assumption (or (not x438) (not x31421))
+:assumption (or (not x142) x5687 x6036 (not x22855))
+:assumption (or (not x1393) x2788)
+:assumption (or x19034 x28157)
+:assumption (or x5680 x16865)
+:assumption (or x25606 (not x26895))
+:assumption (or (not x24614) x26437)
+:assumption (or (not x31327) (not x24924) (not x31265) x982 (not x17731))
+:assumption (or (not x14516) (not x11298))
+:assumption (or x12536 (not x18706))
+:assumption (or (not x13414) x10708)
+:assumption (or (not x10510) x22316 (not x15861))
+:assumption (or x15404 x26504 x9732)
+:assumption (or (not x3035) x31874)
+:assumption (or x7054 (not x4517))
+:assumption (or x22753 (not x22023))
+:assumption (or (not x16039) x27187)
+:assumption (or (not x13257) x4549 x31207)
+:assumption (or (not x2416) x3546 x981 (not x13093))
+:assumption (or x18799 x28731)
+:assumption (or (not x7012) (not x24095))
+:assumption (or x3503 x16594)
+:assumption (or x19684 x6376)
+:assumption (or x24754 (not x7451))
+:assumption (or x2431 (not x18347))
+:assumption (or x21653 x20382)
+:assumption (or (not x26810) x21298 (not x29564) x9556)
+:assumption (or (not x369) (not x15779))
+:assumption (or x20875 (not x18859))
+:assumption (or x22399 x17264)
+:assumption (or (not x17075) (not x1344))
+:assumption (or (not x9856) x20949)
+:assumption (or x23244 (not x21763))
+:assumption (or (not x8002) x15785)
+:assumption (or (not x6858) x16282)
+:assumption (or (not x17407) (not x3535))
+:assumption (or x6468 x4818 (not x10288) x29030)
+:assumption (or (not x28142) (not x18877) x17892 x13049)
+:assumption (or (not x25730) (not x16510))
+:assumption (or (not x18819) (not x10971))
+:assumption (or (not x1449) x2949)
+:assumption (or x2355 (not x1458) (not x23935))
+:assumption (or (not x18594) (not x647))
+:assumption (or x6705 (not x5722))
+:assumption (or (not x8658) (not x29636) x13514)
+:assumption (or (not x16616) (not x288))
+:assumption (or (not x11967) (not x17053))
+:assumption (or x18090 x24915)
+:assumption (or x15921 (not x11976))
+:assumption (or (not x1007) x27939)
+:assumption (or (not x24029) (not x22052))
+:assumption (or x877 x8104)
+:assumption (or x15896 (not x20975))
+:assumption (or x13006 (not x10100))
+:assumption (or x15295 x20140)
+:assumption (or x27059 (not x8999))
+:assumption (or (not x4348) (not x19277))
+:assumption (or (not x8002) (not x20447) (not x7520))
+:assumption (or (not x11384) (not x5726))
+:assumption (or x2378 x30170)
+:assumption (or x866 (not x17716))
+:assumption (or (not x13907) (not x16094))
+:assumption (or (not x23244) (not x9470))
+:assumption (or (not x10190) (not x23648))
+:assumption (or x15778 (not x9635))
+:assumption (or x30521 (not x9003))
+:assumption (or (not x6951) (not x9129))
+:assumption (or x29914 (not x15312))
+:assumption (or x14969 x13568)
+:assumption (or x22495 (not x7408))
+:assumption (or x11347 x7922)
+:assumption (or (not x8505) x14322)
+:assumption (or (not x12513) x8002 x6067)
+:assumption (or (not x29276) x3862 x16984 (not x12929) (not x8124) (not x610) (not x24057))
+:assumption (or (not x9940) (not x12952))
+:assumption (or (not x14855) x6562)
+:assumption (or x25659 (not x19586))
+:assumption (or x19747 x27077)
+:assumption (or x30923 (not x15311))
+:assumption (or (not x15926) (not x11759))
+:assumption (or x892 (not x23513) (not x26656) (not x18809) x17576 x5691 x11160 x18466)
+:assumption (or x12675 (not x27883) (not x18780) x9647 (not x101) x20739 (not x31644) (not x2601))
+:assumption (or x16499 (not x14874) x6598 (not x7260))
+:assumption (or (not x25362) x31157 (not x211) x20934 x5882 x29823 x3182 x486)
+:assumption (or x28694 x3626)
+:assumption (or (not x20686) x3729)
+:assumption (or x31542 (not x9008))
+:assumption (or (not x28912) x20000 (not x31))
+:assumption (or x23444 (not x12380))
+:assumption (or (not x3683) x18428)
+:assumption (or (not x16216) x814)
+:assumption (or (not x19149) (not x12458))
+:assumption (or x27175 (not x25972))
+:assumption (or x5530 (not x28400))
+:assumption (or (not x24485) (not x19214) (not x13968) (not x12678) x25610 (not x5753))
+:assumption (or (not x10456) x24067)
+:assumption (or x21523 (not x3455))
+:assumption (or (not x23659) x1648)
+:assumption (or (not x1393) x26318)
+:assumption (or x17778 x408)
+:assumption (or x22181 x30503 (not x30138))
+:assumption (or (not x8002) (not x6782))
+:assumption (or x3905 (not x24748))
+:assumption (or x22842 (not x2403))
+:assumption (or (not x23253) x21298)
+:assumption (or (not x18292) x30072)
+:assumption (or (not x1168) (not x21668) (not x31083))
+:assumption (or x27011 x13511)
+:assumption (or (not x24079) (not x2757))
+:assumption (or (not x30251) (not x9566))
+:assumption (or (not x9970) x6833)
+:assumption (or (not x25171) x7050)
+:assumption (or (not x7941) (not x14084))
+:assumption (or x25423 x29209 x15495)
+:assumption (or x27320 x23017)
+:assumption (or (not x25659) (not x25984) x5562)
+:assumption (or (not x27985) (not x9738))
+:assumption (or (not x8686) x29606 (not x4303) x31134)
+:assumption (or (not x5916) x30331)
+:assumption (or x16195 x21815)
+:assumption (or (not x11800) x25012 (not x16420) (not x17323))
+:assumption (or (not x25210) (not x28707))
+:assumption (or (not x29079) (not x28328))
+:assumption (or x3849 (not x23223))
+:assumption (or x3622 x26252)
+:assumption (or (not x20513) x2574)
+:assumption (or (not x23715) x19402)
+:assumption (or x20085 x10104 (not x9138) (not x10646) (not x16304) (not x14378))
+:assumption (or x2920 x13421 (not x20087))
+:assumption (or (not x20498) (not x9272))
+:assumption (or x20961 x25927 (not x2383) (not x22378) x3728 (not x16310) (not x18333))
+:assumption (or x31498 x14044 (not x20840))
+:assumption (or x18018 (not x29474))
+:assumption (or (not x5088) x18439)
+:assumption (or x15739 (not x24952))
+:assumption (or (not x13392) x26512)
+:assumption (or x23145 x16063)
+:assumption (or x5143 (not x1518))
+:assumption (or x5555 x1731)
+:assumption (or (not x27067) (not x22041))
+:assumption (or x20363 x10605)
+:assumption (or x8532 (not x22411))
+:assumption (or x27273 (not x20678))
+:assumption (or x12692 x291)
+:assumption (or (not x29760) x698)
+:assumption (or (not x31436) x17338 x31767)
+:assumption (or (not x6801) (not x3471))
+:assumption (or (not x6506) (not x2240))
+:assumption (or x8901 (not x1004))
+:assumption (or x31866 (not x18290))
+:assumption (or x5965 x23355 (not x16041) x29772 x21497 x19312)
+:assumption (or (not x17614) (not x3626))
+:assumption (or x13484 (not x25390))
+:assumption (or (not x3793) (not x19948))
+:assumption (or x4050 x11735)
+:assumption (or x13193 (not x25797))
+:assumption (or (not x12424) (not x7391))
+:assumption (or (not x14858) (not x31822) (not x17602) (not x24207) (not x4511))
+:assumption (or (not x13956) x8002 x23244 x844 (not x29305))
+:assumption (or (not x8002) x23624)
+:assumption (or (not x21034) (not x829))
+:assumption (or (not x1590) x16554)
+:assumption (or x24592 (not x13956))
+:assumption (or (not x11029) (not x27825))
+:assumption (or (not x10060) (not x3054))
+:assumption (or (not x13889) (not x21069))
+:assumption (or x30370 x25961)
+:assumption (or x30431 (not x17163))
+:assumption (or (not x1084) x7371)
+:assumption (or (not x30138) (not x31680))
+:assumption (or x25268 (not x17908))
+:assumption (or x28129 x9555 x28635 x22736 (not x21076))
+:assumption (or x25848 (not x26432))
+:assumption (or (not x7172) x27165)
+:assumption (or x10455 x25426)
+:assumption (or x8629 x9642)
+:assumption (or (not x27537) x27189)
+:assumption (or (not x4791) (not x14427))
+:assumption (or x22343 (not x6168))
+:assumption (or (not x12925) x28682 x30751)
+:assumption (or x21182 x19496)
+:assumption (or (not x12753) x14839 (not x17144) x1852)
+:assumption (or (not x8961) x9195)
+:assumption (or (not x21882) x29236)
+:assumption (or x19508 x23956)
+:assumption (or x22494 (not x4359))
+:assumption (or (not x30556) (not x6316))
+:assumption (or x31431 x17461)
+:assumption (or x8416 x8043)
+:assumption (or x4183 (not x29717))
+:assumption (or x6060 x27643)
+:assumption (or (not x23728) x18114)
+:assumption (or (not x18781) x5387)
+:assumption (or x9408 x8556)
+:assumption (or (not x8745) x20071)
+:assumption (or (not x639) x21237)
+:assumption (or (not x22190) x207)
+:assumption (or x21815 (not x10372))
+:assumption (or (not x22495) x12782)
+:assumption (or x27998 (not x29900))
+:assumption (or x25982 x8585)
+:assumption (or x4349 x30967)
+:assumption (or (not x19392) x21843 x11337)
+:assumption (or x28105 (not x11197))
+:assumption (or (not x14399) (not x4712))
+:assumption (or (not x2870) (not x21669))
+:assumption (or (not x4456) (not x27406))
+:assumption (or (not x7694) (not x7006))
+:assumption (or x23244 (not x15632))
+:assumption (or x7462 x7492)
+:assumption (or x22079 (not x22937))
+:assumption (or (not x9156) (not x662))
+:assumption (or x23509 x19584)
+:assumption (or x22978 x9498)
+:assumption (or x2650 (not x2351))
+:assumption (or (not x28326) x21683)
+:assumption (or (not x21399) (not x293))
+:assumption (or x4098 x429)
+:assumption (or (not x3001) x10767 (not x11324))
+:assumption (or (not x28129) (not x23532))
+:assumption (or x20476 x11006)
+:assumption (or x9998 (not x25878))
+:assumption (or x10438 x6328)
+:assumption (or (not x29145) x19613)
+:assumption (or (not x8735) (not x17282))
+:assumption (or x20194 (not x23797))
+:assumption (or x2635 x28458)
+:assumption (or x11963 x11891)
+:assumption (or (not x20482) x27616 x26805)
+:assumption (or x30807 (not x26009))
+:assumption (or x5991 (not x19166))
+:assumption (or x9380 x3668)
+:assumption (or (not x7864) x9074)
+:assumption (or x31125 (not x31114))
+:assumption (or (not x1577) (not x20514))
+:assumption (or x22855 x16592 x10914)
+:assumption (or x29172 (not x5895))
+:assumption (or (not x3782) (not x17783))
+:assumption (or (not x11963) x30611 x6315 (not x17855))
+:assumption (or x22649 x21337)
+:assumption (or x2183 x11668 x16649 (not x16199) x9008 (not x29201) (not x9031) (not x18482))
+:assumption (or (not x3145) (not x8758) x27636 (not x2177))
+:assumption (or (not x26346) (not x29052))
+:assumption (or x1244 (not x9748) x16239 (not x22865) (not x29228) x22171)
+:assumption (or x13444 (not x16944))
+:assumption (or x9008 x28995 (not x10235) x18191 x3557 x23190 (not x26737) x12238)
+:assumption (or (not x26284) x16441)
+:assumption (or (not x24342) (not x23696))
+:assumption (or x14171 (not x28941))
+:assumption (or (not x15419) (not x11907))
+:assumption (or x24272 (not x29993))
+:assumption (or x28297 (not x26070))
+:assumption (or x4256 (not x21273))
+:assumption (or (not x23052) (not x8002))
+:assumption (or (not x9836) x25759 (not x13444) x16745)
+:assumption (or (not x31062) (not x26091))
+:assumption (or x5538 (not x27325))
+:assumption (or x30300 x20307)
+:assumption (or x31829 (not x1288) x10255 x9029 x4781)
+:assumption (or x31829 x5090 (not x16859))
+:assumption (or (not x8372) x18264)
+:assumption (or (not x28647) (not x4493) x23309 x25120)
+:assumption (or (not x31698) x5394)
+:assumption (or (not x19969) (not x3840) x27462 x9531)
+:assumption (or x24141 (not x22204))
+:assumption (or (not x19335) (not x31280) x18765 x20325 x5749 x3162)
+:assumption (or (not x11281) x26111)
+:assumption (or (not x24946) (not x7364))
+:assumption (or (not x1988) (not x5528))
+:assumption (or (not x5400) (not x27694))
+:assumption (or x18326 (not x7316))
+:assumption (or x12598 (not x29676))
+:assumption (or x21637 x26256)
+:assumption (or (not x27598) x16117)
+:assumption (or x28501 (not x26767))
+:assumption (or (not x12563) x19162 x18859)
+:assumption (or (not x22121) x9967)
+:assumption (or x24071 (not x9093))
+:assumption (or (not x25952) (not x21699))
+:assumption (or x24349 x27880)
+:assumption (or x8002 (not x26205))
+:assumption (or (not x6959) (not x28794))
+:assumption (or (not x9457) (not x5512))
+:assumption (or (not x11538) x1405)
+:assumption (or (not x11394) x15131)
+:assumption (or x2478 (not x6976))
+:assumption (or x2000 (not x3560))
+:assumption (or (not x8628) (not x21331))
+:assumption (or x539 x1388)
+:assumption (or x28041 (not x17026))
+:assumption (or (not x28099) (not x8002))
+:assumption (or x24277 x9132)
+:assumption (or x1045 (not x5593) (not x9928) (not x28885) x29448 (not x2855) x1052)
+:assumption (or (not x19744) (not x4965))
+:assumption (or (not x26107) x27717 x21831)
+:assumption (or (not x22274) (not x8602))
+:assumption (or x3977 x26204)
+:assumption (or (not x30377) (not x6149))
+:assumption (or x31684 x5528)
+:assumption (or (not x13871) (not x27452))
+:assumption (or (not x4522) x17530)
+:assumption (or x27060 x28990)
+:assumption (or (not x1893) x11770)
+:assumption (or x1120 x8077)
+:assumption (or x13956 x12633)
+:assumption (or (not x26897) x14908)
+:assumption (or (not x23327) x17534)
+:assumption (or x13539 (not x17299))
+:assumption (or x5028 (not x10831))
+:assumption (or x29817 (not x30679))
+:assumption (or (not x26850) (not x14711) x8213 x30279)
+:assumption (or x11027 (not x21546))
+:assumption (or (not x25838) (not x1886) x22594)
+:assumption (or x3266 x13982)
+:assumption (or (not x21267) x29647)
+:assumption (or x28171 (not x12242))
+:assumption (or x9439 x8420)
+:assumption (or x4302 (not x2528))
+:assumption (or (not x26108) (not x27066))
+:assumption (or x29313 (not x20373))
+:assumption (or (not x7666) x27732)
+:assumption (or x16721 x6329 (not x24632) (not x30868) (not x20692))
+:assumption (or (not x8002) x31635)
+:assumption (or (not x27661) x5897)
+:assumption (or x4757 x20891)
+:assumption (or x19336 (not x29346))
+:assumption (or (not x4709) x25366 (not x7326) x1582)
+:assumption (or (not x25612) x10577)
+:assumption (or (not x11641) (not x24649) x2133)
+:assumption (or x11792 (not x19635))
+:assumption (or x17133 x26664)
+:assumption (or x28531 (not x15520) x19163 (not x16907))
+:assumption (or (not x24576) (not x11232))
+:assumption (or (not x31767) x22870)
+:assumption (or x19500 x6452)
+:assumption (or (not x20854) x9334)
+:assumption (or x29703 (not x17968))
+:assumption (or x1384 (not x9008))
+:assumption (or x11280 (not x30079))
+:assumption (or x7288 (not x4004) x2115 x21873)
+:assumption (or x26168 (not x26995))
+:assumption (or x26697 (not x16056))
+:assumption (or x8969 x4209 x2334 x31873)
+:assumption (or (not x13463) (not x23244))
+:assumption (or x2175 (not x22654))
+:assumption (or x5338 x2117)
+:assumption (or (not x31445) x19009)
+:assumption (or (not x9487) x166)
+:assumption (or (not x629) (not x8795))
+:assumption (or (not x19658) x30976 x9629 x3666)
+:assumption (or x22224 x10497 (not x12252) x24952 (not x18248) x28574 (not x26488) x2160)
+:assumption (or x25659 x17943)
+:assumption (or (not x7774) (not x19584) x7917 x14525 (not x25244))
+:assumption (or x18795 (not x14455) x30305 x12290 x29698)
+:assumption (or x31079 x10538)
+:assumption (or x6182 (not x17455))
+:assumption (or (not x2104) (not x3240))
+:assumption (or (not x13415) x22576 (not x431))
+:assumption (or x16131 (not x27588))
+:assumption (or x142 (not x16094) (not x9025))
+:assumption (or x22541 x6318)
+:assumption (or (not x22638) (not x21815))
+:assumption (or x3708 (not x14457))
+:assumption (or x142 x5710 x4708)
+:assumption (or x2818 x7172)
+:assumption (or x1180 (not x3676) (not x1393))
+:assumption (or (not x29321) (not x8002))
+:assumption (or x24214 (not x10503))
+:assumption (or x4689 (not x22189))
+:assumption (or (not x28364) (not x26893))
+:assumption (or (not x21811) (not x5991))
+:assumption (or x18824 x5240)
+:assumption (or x29388 (not x22495))
+:assumption (or x31530 (not x4877))
+:assumption (or (not x4512) x17157)
+:assumption (or x29333 x17930 (not x25799) x8002 x13956 x23244)
+:assumption (or (not x23101) x11570)
+:assumption (or (not x29654) (not x27847))
+:assumption (or x18519 (not x18729) x12023 x6982)
+:assumption (or (not x9792) x26931)
+:assumption (or (not x9474) x23553)
+:assumption (or x13425 x19519)
+:assumption (or x258 (not x27537))
+:assumption (or (not x18500) (not x26583))
+:assumption (or x24549 x29228)
+:assumption (or x2928 (not x12910))
+:assumption (or x26501 (not x14666))
+:assumption (or x19432 x27915)
+:assumption (or (not x9553) (not x27059))
+:assumption (or x26961 x31446)
+:assumption (or x28054 (not x26903))
+:assumption (or x18994 (not x23006))
+:assumption (or (not x30488) (not x2308))
+:assumption (or (not x12782) x1511 x22495 x22306)
+:assumption (or (not x18594) x24591)
+:assumption (or x8139 x17890 (not x26007))
+:assumption (or (not x31802) (not x27040) (not x10344))
+:assumption (or (not x17464) (not x29676) x31898)
+:assumption (or (not x29038) x24781)
+:assumption (or (not x3980) x13956)
+:assumption (or x6969 (not x29628) x14839 (not x19993))
+:assumption (or x2417 (not x1012))
+:assumption (or (not x14049) x29836 x19422)
+:assumption (or (not x22460) (not x11215))
+:assumption (or (not x2832) x30588)
+:assumption (or x15939 x28867 x28428 x30754 x5490 x23025 x13573 (not x1532) (not x19360) x11790 (not x1191) x25365)
+:assumption (or x7716 x12045 (not x20949))
+:assumption (or x31594 x13487)
+:assumption (or x4662 x5348)
+:assumption (or (not x10709) (not x4821))
+:assumption (or x14461 x5558)
+:assumption (or x19435 (not x11694))
+:assumption (or x15343 x18170 (not x17571) (not x11616) (not x19686) x17400 x18619)
+:assumption (or x14623 (not x28622))
+:assumption (or (not x28827) (not x9636))
+:assumption (or x20894 (not x98))
+:assumption (or (not x29708) x27242 (not x23346) (not x3104) (not x9798))
+:assumption (or (not x20253) (not x10334))
+:assumption (or (not x31026) x1861)
+:assumption (or (not x4176) (not x9008))
+:assumption (or (not x480) (not x5502) (not x22855) (not x2526) (not x28068))
+:assumption (or x21298 x25882)
+:assumption (or x21979 (not x28424))
+:assumption (or x3001 (not x13846))
+:assumption (or (not x16926) x23799 x2334 (not x28751) (not x25496) x22446 (not x28619) x7815)
+:assumption (or (not x9757) x3249)
+:assumption (or (not x1393) (not x8964) (not x9734))
+:assumption (or x20301 x15618)
+:assumption (or (not x31829) x23244 (not x5566))
+:assumption (or (not x19877) (not x8489) x26897)
+:assumption (or x3199 x21559)
+:assumption (or x12116 x26370)
+:assumption (or x19785 x10050)
+:assumption (or (not x27502) x1184)
+:assumption (or x10577 x901)
+:assumption (or x15534 (not x11725))
+:assumption (or (not x19974) (not x4192) (not x21577) x18308)
+:assumption (or x23395 x21339)
+:assumption (or x21899 (not x9463))
+:assumption (or (not x16157) x2256)
+:assumption (or x29724 (not x918))
+:assumption (or x24602 x24958)
+:assumption (or x21115 (not x19619))
+:assumption (or x13416 x16332)
+:assumption (or x29194 (not x13626) (not x5359) x6969)
+:assumption (or x13686 x827 (not x2556))
+:assumption (or (not x30138) x18926)
+:assumption (or (not x8366) (not x28794))
+:assumption (or x2853 x964)
+:assumption (or x18118 x20512)
+:assumption (or (not x18964) (not x13956) (not x19307))
+:assumption (or x21796 (not x26749) x10294 x24823)
+:assumption (or x4952 x10272)
+:assumption (or (not x28897) x21026)
+:assumption (or x26276 (not x9453))
+:assumption (or (not x15069) x27320)
+:assumption (or x229 (not x1344))
+:assumption (or (not x13233) (not x12199))
+:assumption (or (not x24746) x25110)
+:assumption (or (not x7657) x3694 x25060)
+:assumption (or (not x25315) (not x14134) (not x10280))
+:assumption (or x26799 (not x13418))
+:assumption (or (not x14174) x17800)
+:assumption (or (not x1795) (not x948))
+:assumption (or x31931 (not x23911))
+:assumption (or (not x4058) (not x362))
+:assumption (or x6929 (not x8243))
+:assumption (or x14591 (not x27369))
+:assumption (or (not x778) x10017)
+:assumption (or (not x1601) x8665)
+:assumption (or x25268 (not x12045))
+:assumption (or (not x24000) (not x10035))
+:assumption (or (not x14762) (not x29439))
+:assumption (or x26241 x31918)
+:assumption (or (not x1511) x12782)
+:assumption (or (not x26786) x13381)
+:assumption (or x5528 (not x1356) x18369)
+:assumption (or x11360 (not x3103))
+:assumption (or (not x23831) (not x42))
+:assumption (or x14200 (not x21019))
+:assumption (or x19024 (not x14693))
+:assumption (or x801 x29821 x27588)
+:assumption (or (not x26060) (not x13956))
+:assumption (or x16342 x10605)
+:assumption (or x10419 (not x7534))
+:assumption (or x26146 x29031)
+:assumption (or (not x2067) (not x21645))
+:assumption (or x2333 x5596 x18842)
+:assumption (or (not x5826) x3031)
+:assumption (or x1009 x1766)
+:assumption (or (not x14468) x20300 (not x6997) x27384 x29649)
+:assumption (or (not x21133) x27937)
+:assumption (or (not x29755) x29435 (not x23406) (not x18806) x25478)
+:assumption (or x5613 x14715)
+:assumption (or (not x17951) x2884)
+:assumption (or x4798 (not x17302))
+:assumption (or x1010 x4300)
+:assumption (or x19733 x10717)
+:assumption (or x10336 (not x18662))
+:assumption (or (not x24995) x24881)
+:assumption (or x1080 (not x26143))
+:assumption (or (not x29356) (not x539))
+:assumption (or x26541 (not x7537))
+:assumption (or x31782 (not x15755) (not x27794) (not x17010) (not x11026))
+:assumption (or (not x7682) x24479 x2851 x14863)
+:assumption (or x19886 (not x13756))
+:assumption (or x5352 x3974)
+:assumption (or (not x28582) x6136 x6619 (not x17100))
+:assumption (or (not x6572) x23399 x6551)
+:assumption (or x26533 x17231)
+:assumption (or x28183 x11814)
+:assumption (or (not x15256) x2400)
+:assumption (or x8002 x1715)
+:assumption (or (not x15236) (not x21815))
+:assumption (or (not x22925) (not x26063))
+:assumption (or x27551 (not x27038))
+:assumption (or (not x21578) (not x11106) (not x27668) (not x30238))
+:assumption (or (not x12275) (not x23041))
+:assumption (or x16149 x13662)
+:assumption (or x10506 (not x14739))
+:assumption (or x15011 x14126)
+:assumption (or (not x17423) x22591)
+:assumption (or (not x25656) x178)
+:assumption (or (not x28415) x19214)
+:assumption (or x2115 (not x17466) (not x21815) (not x12045) (not x27127) (not x10909) x16510)
+:assumption (or x29514 x11810 x30432 (not x16484) x12449 x30491)
+:assumption (or (not x15676) (not x8002))
+:assumption (or x20358 (not x28358))
+:assumption (or x25744 x499)
+:assumption (or x28605 (not x12363))
+:assumption (or (not x23481) (not x3476))
+:assumption (or x27227 (not x16406))
+:assumption (or x29546 (not x20160))
+:assumption (or (not x20441) x15128)
+:assumption (or (not x29779) (not x13934) (not x1500) (not x16710) x11519 (not x20220))
+:assumption (or (not x3620) x3453)
+:assumption (or (not x261) x17959)
+:assumption (or (not x8650) x3181)
+:assumption (or x11528 x6706)
+:assumption (or x1533 x1136)
+:assumption (or x2630 (not x26897))
+:assumption (or (not x23277) (not x23244))
+:assumption (or (not x20008) (not x16341))
+:assumption (or (not x3903) (not x29884) (not x5030) x15086 (not x12799) x17818)
+:assumption (or (not x20419) (not x2982))
+:assumption (or x7333 x31180)
+:assumption (or (not x1016) x2093)
+:assumption (or x8870 x24606 (not x5763) x17454)
+:assumption (or x28372 (not x24725))
+:assumption (or x18556 (not x3169))
+:assumption (or (not x12543) (not x148))
+:assumption (or x26946 (not x29435))
+:assumption (or x5570 (not x21861) x2482 (not x4230) (not x6324) (not x6559))
+:assumption (or x452 (not x21267))
+:assumption (or x28975 x3672)
+:assumption (or (not x1536) x31470)
+:assumption (or (not x13662) x24584 x28010 (not x27193) (not x6))
+:assumption (or (not x10028) x5130 x20167 x30906)
+:assumption (or (not x3499) (not x2132))
+:assumption (or (not x29209) (not x23551))
+:assumption (or (not x7990) x12368)
+:assumption (or x9008 (not x30326))
+:assumption (or (not x11031) (not x6901))
+:assumption (or (not x9127) (not x26257))
+:assumption (or (not x14664) (not x1387))
+:assumption (or (not x27315) (not x18628))
+:assumption (or (not x14893) x12518)
+:assumption (or (not x11366) (not x22452) x15747 x11281 (not x428) x5990 (not x1309) (not x16183))
+:assumption (or (not x11835) (not x9152))
+:assumption (or (not x4893) (not x15672))
+:assumption (or x10764 (not x10167))
+:assumption (or x9531 (not x13576) x28320)
+:assumption (or (not x15438) x31474)
+:assumption (or (not x519) (not x19231) x29880)
+:assumption (or x12888 x17287)
+:assumption (or (not x10240) (not x2506))
+:assumption (or (not x21096) x18752)
+:assumption (or (not x1846) x14345)
+:assumption (or x11281 x1989 x10805)
+:assumption (or x1488 (not x31426))
+:assumption (or x28647 x4539)
+:assumption (or x1675 x19124)
+:assumption (or x14925 (not x9000) (not x25302) (not x25441) (not x27366))
+:assumption (or (not x6102) (not x23279))
+:assumption (or (not x24271) (not x8233))
+:assumption (or (not x14886) x19985)
+:assumption (or x15590 (not x873))
+:assumption (or x16910 (not x2919))
+:assumption (or (not x16044) x7647)
+:assumption (or x3438 (not x23801))
+:assumption (or (not x29498) x29836)
+:assumption (or x5528 (not x18774) (not x14695))
+:assumption (or (not x22979) (not x15500))
+:assumption (or x18906 (not x4795))
+:assumption (or x11236 x21008)
+:assumption (or (not x9942) (not x12397) x4228 x21690)
+:assumption (or x14604 x19286)
+:assumption (or (not x1339) (not x31933))
+:assumption (or x7911 (not x11538))
+:assumption (or (not x26735) (not x9307))
+:assumption (or x21614 x15963)
+:assumption (or x5481 (not x27243))
+:assumption (or x2401 (not x25705) (not x18333) x18613 (not x20257) (not x8897))
+:assumption (or (not x11934) (not x16994))
+:assumption (or (not x25479) x12192)
+:assumption (or (not x6024) x31365)
+:assumption (or x2513 (not x26663))
+:assumption (or (not x16092) (not x23244))
+:assumption (or x22629 (not x8192))
+:assumption (or x20391 x27572)
+:assumption (or (not x19518) (not x6554))
+:assumption (or (not x26461) x26897)
+:assumption (or x13649 (not x19996))
+:assumption (or (not x17892) (not x13049))
+:assumption (or (not x22826) x18369)
+:assumption (or (not x12506) x16737)
+:assumption (or x26497 (not x18020))
+:assumption (or (not x7859) (not x29972))
+:assumption (or (not x14010) (not x4014))
+:assumption (or (not x4716) (not x22374))
+:assumption (or x31892 (not x1618))
+:assumption (or x21658 x9992)
+:assumption (or x8927 (not x25514))
+:assumption (or (not x24281) (not x13036) x119)
+:assumption (or (not x551) x14753)
+:assumption (or x14546 x17423 (not x964))
+:assumption (or (not x1821) (not x19464))
+:assumption (or (not x17298) x25634 x28166 (not x19031) x379)
+:assumption (or x10698 (not x26511))
+:assumption (or (not x23608) (not x19543))
+:assumption (or x25710 (not x10537))
+:assumption (or x17403 (not x14641) (not x20402) (not x20929))
+:assumption (or x13419 x16644 x13988)
+:assumption (or x1426 x17828)
+:assumption (or x21829 x4231)
+:assumption (or (not x2171) (not x19434))
+:assumption (or x16391 (not x23801) x4026)
+:assumption (or x22472 x9779 x12423 (not x5528) (not x9008))
+:assumption (or x1393 x27773 x5837)
+:assumption (or x21247 x6284)
+:assumption (or (not x20030) x15443)
+:assumption (or x24917 x16639)
+:assumption (or (not x24722) (not x11553))
+:assumption (or (not x20946) (not x9658) x10487 x25784 x26532 (not x25296))
+:assumption (or x25082 (not x15336))
+:assumption (or (not x6938) x10498)
+:assumption (or x13795 x3794 x20838 x22572 (not x14774))
+:assumption (or x23079 x3683 (not x5312) (not x19820) (not x28242) x19400 (not x18428))
+:assumption (or (not x13018) x23244 x30368 x12605)
+:assumption (or (not x22664) x264)
+:assumption (or (not x13293) (not x5963))
+:assumption (or (not x5558) x22180 x10423)
+:assumption (or x24990 x9934)
+:assumption (or (not x12509) x2912)
+:assumption (or x17867 x2029)
+:assumption (or x661 (not x2757))
+:assumption (or x23313 (not x22219))
+:assumption (or x18529 (not x13668))
+:assumption (or (not x20530) (not x7932))
+:assumption (or x25557 (not x9150) (not x3435))
+:assumption (or x29305 (not x10467))
+:assumption (or x11186 (not x19421))
+:assumption (or (not x9972) x23244 x13956 x22118 (not x9790) x8002)
+:assumption (or x17855 x11891)
+:assumption (or x17109 x5309)
+:assumption (or x8889 x11621 (not x16253) (not x29501))
+:assumption (or (not x7711) x12884)
+:assumption (or x13487 (not x23244) x22879)
+:assumption (or (not x3414) (not x14011))
+:assumption (or x28758 x9453)
+:assumption (or (not x14776) x17568)
+:assumption (or (not x18402) x25773)
+:assumption (or (not x17975) (not x17179) x827)
+:assumption (or (not x16514) (not x26892) x3422 (not x22940) x15585)
+:assumption (or (not x10840) (not x23831))
+:assumption (or x13120 x17873 (not x10532))
+:assumption (or (not x26078) x14929)
+:assumption (or (not x11668) (not x2183))
+:assumption (or x4342 x30110 (not x27427) x1448 (not x3208) (not x26085) x5784)
+:assumption (or (not x13956) x13542)
+:assumption (or x7484 (not x26713))
+:assumption (or x5991 (not x16129))
+:assumption (or (not x23344) (not x1309))
+:assumption (or (not x13436) (not x21815) (not x10207))
+:assumption (or (not x10861) (not x13766))
+:assumption (or x8602 (not x21952))
+:assumption (or (not x25366) x7326)
+:assumption (or (not x18386) x14040)
+:assumption (or (not x9406) x22093 x4227 x27674 (not x22983) (not x5528))
+:assumption (or x11779 x9822)
+:assumption (or x26432 x3296 (not x9025))
+:assumption (or x311 (not x8793))
+:assumption (or (not x24371) x21690 (not x12397) (not x29768))
+:assumption (or (not x10049) x14455 (not x1487) (not x3435) (not x28160))
+:assumption (or (not x19667) (not x21858))
+:assumption (or (not x12529) (not x25577))
+:assumption (or x11565 x16455)
+:assumption (or x5734 (not x5029))
+:assumption (or x17805 (not x13203) x29483 (not x28779) (not x31659))
+:assumption (or (not x21298) x23403)
+:assumption (or x964 x23244 x6826)
+:assumption (or x24639 (not x29214))
+:assumption (or x24083 (not x10081))
+:assumption (or x27970 x15257)
+:assumption (or x21086 x770)
+:assumption (or x27673 (not x30966))
+:assumption (or x17477 x11960)
+:assumption (or (not x2938) x149)
+:assumption (or x8002 (not x31180) x23244 x17625 (not x7333))
+:assumption (or (not x16510) (not x19134))
+:assumption (or x24199 (not x14732))
+:assumption (or x23263 x16689 (not x12341) x16141 (not x24253))
+:assumption (or x9892 x6445)
+:assumption (or x11046 x24642)
+:assumption (or x29312 (not x26618))
+:assumption (or (not x11445) x12874)
+:assumption (or x15966 (not x16942))
+:assumption (or (not x22862) (not x16915))
+:assumption (or (not x415) x20283)
+:assumption (or x1955 (not x26415))
+:assumption (or (not x25567) x21653)
+:assumption (or x11209 x5992)
+:assumption (or x13288 x18531)
+:assumption (or x14619 x26173)
+:assumption (or (not x17072) (not x13956))
+:assumption (or x8517 (not x16497))
+:assumption (or (not x13165) (not x31351))
+:assumption (or (not x19992) (not x20291) x21059)
+:assumption (or (not x13411) x21318)
+:assumption (or x2592 (not x25784) x7770 (not x24952) (not x21690))
+:assumption (or x6398 x12167)
+:assumption (or x27839 (not x26966))
+:assumption (or (not x23226) x11690)
+:assumption (or x5886 (not x12725))
+:assumption (or (not x8900) x22759)
+:assumption (or x19889 x28911)
+:assumption (or (not x832) x21912)
+:assumption (or (not x14582) (not x9804) x11959 (not x8002))
+:assumption (or (not x3515) (not x5528))
+:assumption (or x19008 x31397)
+:assumption (or (not x9909) (not x18572))
+:assumption (or x22886 (not x12959))
+:assumption (or x21194 x16003)
+:assumption (or (not x18406) x3436)
+:assumption (or (not x3235) (not x4322))
+:assumption (or x23652 x16751)
+:assumption (or x21509 x18356)
+:assumption (or (not x20745) (not x3728))
+:assumption (or (not x10352) (not x6673))
+:assumption (or (not x24998) x24542)
+:assumption (or (not x2421) (not x19493))
+:assumption (or x31049 (not x598))
+:assumption (or (not x3946) x17269 x1365 (not x18501) (not x9174))
+:assumption (or x17894 (not x11728))
+:assumption (or (not x13733) (not x361))
+:assumption (or x18859 (not x6410))
+:assumption (or (not x23497) x8300)
+:assumption (or x13956 x8002 x23244 x12176 x23633 x20174)
+:assumption (or (not x7373) x16809)
+:assumption (or x30015 x593)
+:assumption (or x10006 x23244)
+:assumption (or (not x324) (not x19994))
+:assumption (or x15861 (not x21303))
+:assumption (or (not x23114) (not x28264))
+:assumption (or (not x3300) x1653)
+:assumption (or x11009 x809 x29834 x7762 (not x29218) (not x10119))
+:assumption (or (not x3257) x18612 (not x8133) x5845 (not x27217) (not x26758) x5823 (not x22822))
+:assumption (or x16996 x4350)
+:assumption (or x15490 x16003 (not x28682))
+:assumption (or (not x18323) x1670)
+:assumption (or x19856 (not x3560))
+:assumption (or (not x23976) x9930)
+:assumption (or x6634 x26897 x23461 (not x27354) x22542)
+:assumption (or (not x2234) x13295)
+:assumption (or (not x10126) (not x17662))
+:assumption (or x19388 (not x7378))
+:assumption (or x480 x10012)
+:assumption (or x22133 (not x18577))
+:assumption (or (not x3212) (not x7907) x12052)
+:assumption (or x2176 (not x20872))
+:assumption (or (not x918) x9548)
+:assumption (or (not x16164) (not x25355) x29259)
+:assumption (or x15911 x7992 (not x4925) x27263)
+:assumption (or x23588 x10064)
+:assumption (or (not x13435) x7111)
+:assumption (or x21751 (not x3454))
+:assumption (or x26123 x25113 (not x27374) x7158)
+:assumption (or (not x8008) x19290 x13401)
+:assumption (or (not x13201) x23366)
+:assumption (or x24305 x29027)
+:assumption (or x24462 x4832)
+:assumption (or (not x18042) (not x12867))
+:assumption (or (not x15717) x28425)
+:assumption (or x16556 x31104)
+:assumption (or x4610 x29312 x13791)
+:assumption (or x18919 x3194)
+:assumption (or (not x5192) x14206)
+:assumption (or x2156 (not x19038))
+:assumption (or (not x13622) (not x4360))
+:assumption (or x1544 (not x25784))
+:assumption (or (not x8002) (not x3086))
+:assumption (or x27068 (not x11054))
+:assumption (or x19711 (not x11950))
+:assumption (or (not x16025) (not x5800))
+:assumption (or (not x9921) (not x18521))
+:assumption (or x17673 x16914)
+:assumption (or x15525 x21314 x17534)
+:assumption (or (not x15221) x16291)
+:assumption (or (not x13513) x8825)
+:assumption (or (not x19501) x11498)
+:assumption (or x30278 (not x25331))
+:assumption (or (not x29242) x30557)
+:assumption (or (not x31829) x3910)
+:assumption (or (not x26002) (not x18078))
+:assumption (or x30021 x20482)
+:assumption (or (not x18241) x23760)
+:assumption (or (not x12179) x26484)
+:assumption (or x23234 x29437 x20064)
+:assumption (or x22327 (not x762))
+:assumption (or x3825 x6295)
+:assumption (or x373 (not x4491) x5376)
+:assumption (or x12671 (not x31829) (not x918) (not x26873))
+:assumption (or (not x11260) (not x14413))
+:assumption (or (not x27488) x3001)
+:assumption (or x19421 (not x11186) x24761)
+:assumption (or x27016 x3224)
+:assumption (or x480 x20976)
+:assumption (or (not x10710) x8382)
+:assumption (or x14378 (not x10104))
+:assumption (or (not x17729) x8941)
+:assumption (or (not x5507) x29606 x21344 x31134 x25689 x6655 (not x801))
+:assumption (or x173 x11808)
+:assumption (or (not x31173) x17360)
+:assumption (or (not x12119) x19170 (not x1797))
+:assumption (or (not x25119) (not x4834))
+:assumption (or (not x12037) x21317)
+:assumption (or (not x23338) (not x13906))
+:assumption (or (not x15887) (not x19841))
+:assumption (or (not x4282) (not x26338))
+:assumption (or x26670 (not x14571))
+:assumption (or x24595 (not x11754))
+:assumption (or x26789 (not x29270))
+:assumption (or x16999 x4555 (not x20456))
+:assumption (or (not x16471) (not x9219))
+:assumption (or (not x29273) x26289 (not x17109))
+:assumption (or x7909 (not x2661))
+:assumption (or x18024 (not x22989))
+:assumption (or (not x28117) (not x17083))
+:assumption (or x16348 (not x3314))
+:assumption (or x20446 x23244 (not x22940))
+:assumption (or (not x31143) (not x2973))
+:assumption (or x12050 (not x14882))
+:assumption (or (not x17193) x10779)
+:assumption (or x8641 (not x2240))
+:assumption (or (not x229) (not x28378) (not x10798) x5817 (not x8614) (not x8273))
+:assumption (or x5095 (not x31829) x918 (not x29226))
+:assumption (or (not x9008) x22783)
+:assumption (or x15769 x20773)
+:assumption (or x28124 x26217)
+:assumption (or (not x8069) x31024 (not x31848))
+:assumption (or x29847 x8002 (not x17583) x23244)
+:assumption (or x14976 (not x376))
+:assumption (or x5352 x17870)
+:assumption (or x10021 (not x21450))
+:assumption (or x22472 x5876 (not x24443) (not x17710) (not x19952) x29407)
+:assumption (or x2702 x19052)
+:assumption (or (not x14055) (not x4544))
+:assumption (or x1603 (not x23244))
+:assumption (or (not x13956) x21898)
+:assumption (or (not x7309) (not x11183) x15426 x12284 x4466 (not x7756) (not x21476))
+:assumption (or (not x14392) x11256)
+:assumption (or (not x31227) x13956)
+:assumption (or (not x9232) (not x10041))
+:assumption (or x12846 x11408)
+:assumption (or x12474 x21544 x13595)
+:assumption (or (not x15329) (not x8002))
+:assumption (or (not x3152) (not x23356) (not x9879) x6393 (not x3319) x28956 x1393 x29894)
+:assumption (or (not x24333) (not x2370) x8701 (not x26432) x31319 x9753 x1074 (not x2528))
+:assumption (or x31079 (not x29920))
+:assumption (or x19750 (not x14865))
+:assumption (or x16510 (not x12431))
+:assumption (or (not x4377) (not x27552))
+:assumption (or x1483 x27273)
+:assumption (or x28436 (not x15465) x27227)
+:assumption (or x23255 x9374)
+:assumption (or (not x17201) (not x22426))
+:assumption (or x14820 x16833)
+:assumption (or (not x11833) (not x18768))
+:assumption (or x25011 x9531)
+:assumption (or x13956 (not x16135))
+:assumption (or (not x17119) (not x23111))
+:assumption (or (not x16025) x2929)
+:assumption (or (not x15795) (not x24530))
+:assumption (or x20381 x22158)
+:assumption (or x19992 x18542)
+:assumption (or (not x27637) (not x23358))
+:assumption (or x27683 (not x29070))
+:assumption (or (not x22881) x17868)
+:assumption (or x23384 (not x8961) (not x8843) x5886)
+:assumption (or x20732 (not x19241))
+:assumption (or (not x5473) x28973)
+:assumption (or x18591 (not x2574))
+:assumption (or x28599 x10303 (not x7551) x20756 x31481 x9008)
+:assumption (or (not x25800) (not x1562))
+:assumption (or (not x11428) x6919)
+:assumption (or (not x28249) x1221)
+:assumption (or x25566 x2170)
+:assumption (or x15257 (not x7319))
+:assumption (or (not x20614) (not x12627))
+:assumption (or (not x24705) (not x178) x24793 x21762 (not x22772) (not x11140) (not x23607))
+:assumption (or x3156 x4794)
+:assumption (or (not x11741) x19894)
+:assumption (or x2704 x6005)
+:assumption (or x26961 x6228)
+:assumption (or x4095 x15215)
+:assumption (or x20143 (not x22016) (not x17804))
+:assumption (or (not x7200) (not x15433))
+:assumption (or (not x26919) (not x7471))
+:assumption (or (not x20831) (not x10784))
+:assumption (or x25692 (not x16910))
+:assumption (or (not x25624) (not x26571))
+:assumption (or x17340 x5118)
+:assumption (or (not x22733) (not x27443))
+:assumption (or x998 (not x9008))
+:assumption (or x11008 x28205)
+:assumption (or (not x11986) (not x4923))
+:assumption (or (not x11909) x22615)
+:assumption (or x1909 (not x6420))
+:assumption (or (not x25781) (not x17004))
+:assumption (or x23958 x29025)
+:assumption (or (not x27759) (not x27534))
+:assumption (or (not x14066) (not x14340))
+:assumption (or (not x28428) (not x23025))
+:assumption (or (not x19076) x8961 (not x9025))
+:assumption (or x1637 x14484)
+:assumption (or (not x22852) x20801)
+:assumption (or (not x17159) x11081)
+:assumption (or x19458 (not x30667))
+:assumption (or (not x25819) (not x5832))
+:assumption (or x1021 x9823)
+:assumption (or (not x14898) (not x3556))
+:assumption (or (not x17438) x221)
+:assumption (or (not x13841) (not x5528))
+:assumption (or (not x10674) (not x23505))
+:assumption (or x12963 (not x31177))
+:assumption (or x9235 x5773)
+:assumption (or (not x143) (not x6075))
+:assumption (or (not x25618) (not x3168))
+:assumption (or x12945 x7713)
+:assumption (or (not x12022) (not x8229))
+:assumption (or (not x30649) x27115)
+:assumption (or (not x20694) (not x10909) x28864 x26897)
+:assumption (or x22372 (not x9701) x25423 (not x7285))
+:assumption (or (not x16051) x14578 (not x26700))
+:assumption (or x31866 x4560)
+:assumption (or (not x15594) (not x24287))
+:assumption (or x22130 x23955)
+:assumption (or x13475 (not x22964) (not x28144) (not x13594))
+:assumption (or x24722 (not x19192))
+:assumption (or x3103 x25659 (not x6307) (not x11360))
+:assumption (or (not x8002) (not x4779))
+:assumption (or x18289 (not x962) x17598 x11420)
+:assumption (or (not x13407) (not x29967) x4186)
+:assumption (or x2252 (not x14805))
+:assumption (or x8752 (not x27183))
+:assumption (or x15887 (not x16510) (not x21815) x11374 (not x17040))
+:assumption (or x3704 (not x23244) (not x23252))
+:assumption (or (not x19635) x2010)
+:assumption (or x6198 x12184)
+:assumption (or (not x28356) (not x23785))
+:assumption (or x12403 x3493 (not x20582))
+:assumption (or (not x6100) x18188 x10300 x29360 x30066 (not x5369) (not x27197))
+:assumption (or x19288 x16337)
+:assumption (or (not x12177) (not x26062))
+:assumption (or x22930 x27270)
+:assumption (or (not x17463) (not x16390))
+:assumption (or (not x2785) x9439)
+:assumption (or x29361 x6671)
+:assumption (or x19525 x14231 x1133 x18623 (not x27703))
+:assumption (or (not x9984) (not x23552))
+:assumption (or (not x1666) (not x30621))
+:assumption (or x31556 x2567)
+:assumption (or x27457 x21205)
+:assumption (or x19799 (not x26077))
+:assumption (or (not x7199) (not x30849))
+:assumption (or (not x26687) (not x27218) x12835 x3212 x17026)
+:assumption (or x8336 x17266)
+:assumption (or (not x21776) (not x29376))
+:assumption (or x23697 x17971)
+:assumption (or (not x13963) x18123 x27454 (not x6098) (not x19151) x25155 (not x20584) (not x26603) x13401 (not x13874))
+:assumption (or x8105 (not x24688) x4516)
+:assumption (or x3169 x28570 x29127 x30632)
+:assumption (or (not x1072) (not x1061))
+:assumption (or x20418 x21600)
+:assumption (or x4850 (not x13184))
+:assumption (or (not x6014) x11489 x5528)
+:assumption (or x16079 (not x21351) x11488)
+:assumption (or x2356 x7193)
+:assumption (or x20245 x16304)
+:assumption (or (not x8098) x13487)
+:assumption (or x14521 x12604)
+:assumption (or (not x6149) (not x22405))
+:assumption (or x3275 (not x5588))
+:assumption (or x12106 x12263)
+:assumption (or (not x28047) (not x19544) x23244)
+:assumption (or x15190 (not x26432))
+:assumption (or x13409 x25383)
+:assumption (or x23244 (not x5638) (not x20794) x20450 x8002)
+:assumption (or x8256 (not x10166))
+:assumption (or x14436 x31619)
+:assumption (or (not x6329) x22219 x12105 x15342)
+:assumption (or x7963 (not x1219))
+:assumption (or x4772 x19412)
+:assumption (or x28541 x9415)
+:assumption (or (not x5587) x9277)
+:assumption (or x30277 (not x29364))
+:assumption (or x582 x28242 x5744)
+:assumption (or (not x18689) (not x30208))
+:assumption (or x7049 x10583)
+:assumption (or x5963 (not x20949) (not x8002) x13293)
+:assumption (or (not x11662) (not x5177))
+:assumption (or (not x22467) (not x6652))
+:assumption (or (not x27343) (not x13748))
+:assumption (or (not x30882) (not x25659))
+:assumption (or (not x15729) x28959)
+:assumption (or (not x27535) x13956)
+:assumption (or x30671 (not x20906))
+:assumption (or x17494 (not x14613))
+:assumption (or (not x24420) x19574)
+:assumption (or (not x11567) (not x8563))
+:assumption (or (not x14692) x12338)
+:assumption (or x1845 x766)
+:assumption (or (not x12669) x9996)
+:assumption (or x26014 (not x3363))
+:assumption (or x14683 x21709 (not x8271) x21878 x6890)
+:assumption (or (not x2133) (not x9463))
+:assumption (or (not x20521) (not x18527))
+:assumption (or (not x15176) x20651 (not x13036) x2723)
+:assumption (or x5528 x6690)
+:assumption (or (not x31265) (not x17724))
+:assumption (or x15525 x25659 x3545)
+:assumption (or x27922 (not x15312))
+:assumption (or x27403 (not x4275))
+:assumption (or x17066 x30005)
+:assumption (or x18722 x31397)
+:assumption (or (not x10910) x6335)
+:assumption (or x31073 x9054)
+:assumption (or x30077 (not x17216) (not x9008))
+:assumption (or x252 x28002)
+:assumption (or (not x3503) (not x25108) x18994)
+:assumption (or x2415 (not x5738))
+:assumption (or (not x5074) (not x29802))
+:assumption (or x885 x3494)
+:assumption (or x10393 (not x1931))
+:assumption (or x12737 (not x12125))
+:assumption (or (not x6274) (not x27299) (not x15945))
+:assumption (or x25290 x16623)
+:assumption (or x9665 (not x10874))
+:assumption (or (not x6443) (not x6724))
+:assumption (or x480 (not x9338) x1753)
+:assumption (or x23447 x23520)
+:assumption (or x16557 (not x20843) x10524 (not x17554) (not x9766))
+:assumption (or x23614 x29604)
+:assumption (or x11198 (not x1928))
+:assumption (or x28357 x24034)
+:assumption (or x31734 (not x31471))
+:assumption (or x11795 x29136)
+:assumption (or (not x10874) x8543)
+:assumption (or x31457 (not x4884))
+:assumption (or x17162 (not x8764))
+:assumption (or (not x19545) x9060)
+:assumption (or x4415 x31527)
+:assumption (or x23255 (not x25294))
+:assumption (or (not x6388) x1036 (not x13056) x13970)
+:assumption (or x26420 x4547)
+:assumption (or x9938 (not x24309))
+:assumption (or (not x8344) x592)
+:assumption (or (not x10649) (not x17930))
+:assumption (or (not x20513) (not x25366))
+:assumption (or x21188 x2720)
+:assumption (or x5825 x15659 x14395 (not x26907))
+:assumption (or (not x13541) x23243)
+:assumption (or (not x16680) x23956)
+:assumption (or (not x10154) (not x1923))
+:assumption (or x7560 x10013)
+:assumption (or (not x19715) x28093)
+:assumption (or x1693 x14573)
+:assumption (or x30924 (not x8029))
+:assumption (or (not x11288) x2102)
+:assumption (or x31764 x309)
+:assumption (or (not x18246) x28756)
+:assumption (or (not x18254) x2050 (not x31381))
+:assumption (or (not x29335) (not x30537))
+:assumption (or (not x14346) (not x16304))
+:assumption (or (not x20968) (not x1479))
+:assumption (or (not x15795) x18702)
+:assumption (or x30921 x25118)
+:assumption (or x8322 x22106 x22270 x9460 (not x7012))
+:assumption (or x11954 (not x796))
+:assumption (or (not x13504) x22845 x12935 x26026 x23324 (not x11581))
+:assumption (or x21065 (not x19864))
+:assumption (or x21589 (not x31128) (not x8002))
+:assumption (or x5951 x2870)
+:assumption (or (not x22698) x14661)
+:assumption (or x31032 (not x26277))
+:assumption (or (not x15460) x26262)
+:assumption (or x13644 (not x3755) x19475 (not x20439) (not x11151))
+:assumption (or (not x28314) (not x15084))
+:assumption (or (not x30848) x10390)
+:assumption (or (not x28064) (not x5028))
+:assumption (or (not x12595) x2061)
+:assumption (or x6663 x5243)
+:assumption (or x27123 x9548)
+:assumption (or x16553 x4630)
+:assumption (or x27521 (not x10342))
+:assumption (or x28992 (not x9008))
+:assumption (or x8496 x14040)
+:assumption (or x8540 x6438)
+:assumption (or (not x25553) x20381)
+:assumption (or (not x26646) (not x8170))
+:assumption (or x30319 (not x22101))
+:assumption (or (not x25024) x30613)
+:assumption (or x15061 x13036)
+:assumption (or x13096 (not x26705))
+:assumption (or x23454 (not x22861))
+:assumption (or (not x29333) x17128)
+:assumption (or (not x14839) (not x17344))
+:assumption (or x30463 (not x1547))
+:assumption (or (not x11593) (not x29442))
+:assumption (or (not x17460) (not x21106))
+:assumption (or x29137 x5862)
+:assumption (or (not x26580) x31147)
+:assumption (or x14102 (not x13202))
+:assumption (or (not x1238) (not x28543))
+:assumption (or (not x15879) x3178)
+:assumption (or (not x2924) (not x25634) (not x11915))
+:assumption (or x10027 (not x17478))
+:assumption (or x3468 (not x15719))
+:assumption (or x3494 x17099)
+:assumption (or (not x20361) x29335)
+:assumption (or x27213 (not x1924))
+:assumption (or (not x29570) x18775)
+:assumption (or (not x3337) x6526)
+:assumption (or x31829 (not x18923) (not x30317))
+:assumption (or (not x9217) (not x28890))
+:assumption (or x15093 x18964)
+:assumption (or (not x4825) (not x27012))
+:assumption (or (not x11598) (not x21202) x14725 (not x770) x10289 (not x10283) (not x26743))
+:assumption (or (not x23162) (not x5361))
+:assumption (or (not x18299) x9270 x26123 x22790 (not x26783))
+:assumption (or x19385 (not x10916))
+:assumption (or (not x31147) x10195)
+:assumption (or x27534 x27759)
+:assumption (or (not x20192) x31808)
+:assumption (or (not x12844) (not x2399))
+:assumption (or (not x5411) (not x1943))
+:assumption (or x13089 x29541)
+:assumption (or (not x9703) x16548 x31808)
+:assumption (or x7945 x8545)
+:assumption (or x27045 (not x28229))
+:assumption (or (not x19540) x28376)
+:assumption (or x799 x9305)
+:assumption (or (not x17439) (not x10101))
+:assumption (or x4560 (not x66))
+:assumption (or x24711 (not x13280))
+:assumption (or (not x15260) x26144)
+:assumption (or x23993 x23481)
+:assumption (or (not x17831) x25206)
+:assumption (or (not x8330) (not x13327))
+:assumption (or x13660 (not x5528))
+:assumption (or x21525 (not x12841))
+:assumption (or (not x9692) (not x19910))
+:assumption (or (not x20256) (not x7014))
+:assumption (or (not x918) (not x10556) (not x7084))
+:assumption (or (not x19517) (not x4520))
+:assumption (or x7529 x30439)
+:assumption (or x15099 (not x11940))
+:assumption (or x31161 (not x27776))
+:assumption (or x23062 (not x2801))
+:assumption (or (not x6976) (not x8520))
+:assumption (or x24722 (not x17827) (not x431))
+:assumption (or x30633 (not x10095) x20534)
+:assumption (or x25968 x28168)
+:assumption (or x30260 x15917 x10064 x18100)
+:assumption (or x16737 (not x29836))
+:assumption (or x7249 (not x9257))
+:assumption (or (not x26352) (not x15305))
+:assumption (or x31547 (not x20134))
+:assumption (or (not x27313) (not x8486))
+:assumption (or (not x7405) x25659)
+:assumption (or x27499 x29153)
+:assumption (or x14235 (not x16025))
+:assumption (or (not x30864) x2931)
+:assumption (or (not x20675) (not x29959))
+:assumption (or (not x11709) x27366)
+:assumption (or (not x13332) x31829)
+:assumption (or (not x15992) (not x21448))
+:assumption (or x13652 x233)
+:assumption (or x25928 (not x3842))
+:assumption (or (not x27835) x29534)
+:assumption (or x20992 (not x15536))
+:assumption (or (not x19562) x7865 x18407 x29504 x25761)
+:assumption (or x2400 (not x18100))
+:assumption (or x19702 (not x11601))
+:assumption (or x141 (not x31247))
+:assumption (or x18872 x19050)
+:assumption (or (not x18066) x3625)
+:assumption (or x4315 x14376)
+:assumption (or (not x11029) (not x16693))
+:assumption (or x10208 (not x5021))
+:assumption (or x9028 x8002)
+:assumption (or x18182 (not x5714))
+:assumption (or x27112 x8677)
+:assumption (or x25565 x2758)
+:assumption (or x15078 x18683)
+:assumption (or x17877 x8890)
+:assumption (or x648 x18500 x12572 x25807 (not x15699) x1087)
+:assumption (or (not x13003) x13990)
+:assumption (or (not x2598) x27043)
+:assumption (or x1737 x24116)
+:assumption (or x3002 (not x5224))
+:assumption (or (not x18295) x14600)
+:assumption (or (not x22004) (not x6911) x13563 x22260)
+:assumption (or (not x2429) x21509)
+:assumption (or (not x21165) (not x16784))
+:assumption (or x18057 x13544)
+:assumption (or (not x17283) x10302 x13013)
+:assumption (or x9163 (not x8199))
+:assumption (or x8602 x11172)
+:assumption (or x9452 x20367)
+:assumption (or (not x3504) (not x202))
+:assumption (or (not x15300) x15245)
+:assumption (or x3391 x16260)
+:assumption (or x31074 (not x15393) (not x27054) x2612 (not x13437) x31602 x24099 x2234)
+:assumption (or x26681 (not x15124))
+:assumption (or x28590 x24955)
+:assumption (or (not x26015) x9000)
+:assumption (or x24387 (not x11180))
+:assumption (or (not x8002) (not x4808))
+:assumption (or (not x23342) x25609)
+:assumption (or (not x11792) x8868 (not x9558))
+:assumption (or (not x20616) x13061 x24079)
+:assumption (or (not x21157) x9114)
+:assumption (or (not x20060) (not x11755))
+:assumption (or x6884 (not x24726))
+:assumption (or x605 x30457)
+:assumption (or (not x3494) (not x14508) x12357)
+:assumption (or (not x11820) x2977)
+:assumption (or x29378 (not x8602))
+:assumption (or (not x31574) x155)
+:assumption (or (not x28912) (not x25211))
+:assumption (or (not x14377) (not x18857))
+:assumption (or x12891 x1816)
+:assumption (or (not x27705) x11598)
+:assumption (or x25649 (not x6756))
+:assumption (or (not x25260) x22349 (not x18168) (not x24471) (not x22469))
+:assumption (or (not x1465) (not x29121))
+:assumption (or (not x29272) (not x25124))
+:assumption (or x11792 x16540)
+:assumption (or x14367 x11989)
+:assumption (or (not x1804) (not x12057))
+:assumption (or x28885 (not x12981))
+:assumption (or x25149 x29003)
+:assumption (or x17557 (not x21886))
+:assumption (or (not x18236) x4838 (not x8594) (not x18693) (not x23877) (not x11712) x23585 x13756)
+:assumption (or x21003 x14883 x2578 x14962 (not x155))
+:assumption (or x8579 x31829 (not x29176) (not x31229) (not x10080) (not x5947))
+:assumption (or x1018 (not x7573))
+:assumption (or (not x14395) x25848)
+:assumption (or x14023 (not x27902))
+:assumption (or x30527 (not x29878))
+:assumption (or x9381 x6307 (not x22231))
+:assumption (or x16840 x18921)
+:assumption (or x16648 (not x15137))
+:assumption (or x15624 (not x26191))
+:assumption (or x26670 (not x21920) x964)
+:assumption (or x6036 (not x14088))
+:assumption (or x18717 (not x13560) (not x15303) (not x5397))
+:assumption (or (not x6853) (not x10887) (not x3565) (not x21214) x19831 x913 (not x15293) x24726)
+:assumption (or x30919 (not x30270))
+:assumption (or x23023 x21670 (not x16259) x22834 (not x23065) (not x19535) x4750 x3106 x19)
+:assumption (or x23244 x2856 (not x24519) x8002)
+:assumption (or x5895 (not x268) x17107 (not x29172))
+:assumption (or (not x5216) x30047)
+:assumption (or x11558 (not x31284))
+:assumption (or (not x18800) x4404)
+:assumption (or (not x2893) (not x19359))
+:assumption (or (not x26369) (not x1595))
+:assumption (or (not x16535) x17326 x18307 x14672)
+:assumption (or x8002 (not x18210) (not x24505) x23244)
+:assumption (or (not x30102) (not x8563))
+:assumption (or x21198 (not x15153))
+:assumption (or (not x12927) (not x23244))
+:assumption (or x24487 (not x30036))
+:assumption (or (not x1467) (not x16349) x1871)
+:assumption (or x14090 x14599 x18003)
+:assumption (or x21951 x30306 x25878)
+:assumption (or (not x27966) (not x8388))
+:assumption (or (not x343) (not x24906))
+:assumption (or (not x30627) x12668 x8658 x30034)
+:assumption (or (not x24756) (not x14883))
+:assumption (or x22023 (not x22753))
+:assumption (or (not x12738) (not x13436))
+:assumption (or (not x21390) (not x26871))
+:assumption (or (not x7400) (not x22758))
+:assumption (or (not x23244) x5403)
+:assumption (or x31139 x29447)
+:assumption (or x28797 (not x2974))
+:assumption (or (not x12952) (not x16433))
+:assumption (or x26910 (not x1385))
+:assumption (or x4521 x22006)
+:assumption (or x17247 (not x5967))
+:assumption (or x24158 (not x25818))
+:assumption (or x21176 x246 (not x25659))
+:assumption (or (not x18426) (not x12633))
+:assumption (or x20402 x21910 x21298 x20567)
+:assumption (or x16510 (not x30788))
+:assumption (or (not x24909) (not x4919))
+:assumption (or x13010 (not x23244))
+:assumption (or x17183 (not x16304))
+:assumption (or x5528 (not x3034))
+:assumption (or x24555 (not x7807))
+:assumption (or x21013 (not x15776))
+:assumption (or x30097 (not x19452))
+:assumption (or x31109 (not x18568))
+:assumption (or x1035 (not x30080))
+:assumption (or (not x20938) x9604 (not x17930) x15164)
+:assumption (or (not x20464) x22551 x14591 x2287)
+:assumption (or x2854 (not x29563) x25272 (not x25666) x930 x29440 x1372)
+:assumption (or (not x26585) x8602 x25412)
+:assumption (or x29782 x23358)
+:assumption (or x6370 x27327)
+:assumption (or x27941 x30322)
+:assumption (or (not x8558) x14343 x11857 (not x24067))
+:assumption (or x473 (not x30600))
+:assumption (or (not x29502) (not x31117))
+:assumption (or x20662 (not x31773))
+:assumption (or x31383 x3987)
+:assumption (or x824 (not x10790))
+:assumption (or x23331 x25679)
+:assumption (or x614 x4281)
+:assumption (or x27213 (not x21242))
+:assumption (or x20754 x9625)
+:assumption (or (not x21815) x31264)
+:assumption (or x18208 x13427)
+:assumption (or x12148 (not x28567))
+:assumption (or (not x8195) (not x31157))
+:assumption (or (not x26959) (not x27718) (not x30475) x24515)
+:assumption (or x18207 (not x24864))
+:assumption (or x8327 (not x15917))
+:assumption (or x14455 (not x18795))
+:assumption (or x12801 (not x3949))
+:assumption (or (not x5392) (not x12221))
+:assumption (or (not x5573) x2431 (not x15569))
+:assumption (or x22942 x7611)
+:assumption (or (not x23563) x6817)
+:assumption (or x22017 (not x22071) (not x198) x3365 (not x31521) (not x7536))
+:assumption (or x29222 x25234)
+:assumption (or x20314 (not x30363))
+:assumption (or x18796 x15750)
+:assumption (or x16745 (not x16944))
+:assumption (or (not x27188) x2330 x7247 (not x31623) x16601)
+:assumption (or (not x25490) (not x26819))
+:assumption (or x11349 x24510)
+:assumption (or x25094 (not x28436))
+:assumption (or (not x27760) x20329 (not x31652) x31431)
+:assumption (or (not x2440) (not x8002))
+:assumption (or (not x20949) (not x31132))
+:assumption (or (not x29680) (not x21414))
+:assumption (or x9280 (not x31767))
+:assumption (or (not x14521) (not x8174))
+:assumption (or (not x29649) (not x13266))
+:assumption (or (not x20183) x7805)
+:assumption (or x22851 x2770)
+:assumption (or (not x1044) x24747)
+:assumption (or x11281 (not x3847))
+:assumption (or x23244 x4105)
+:assumption (or (not x31799) x22902)
+:assumption (or x19932 x20805)
+:assumption (or (not x2708) x12244)
+:assumption (or x23493 x14471)
+:assumption (or x28228 x16199)
+:assumption (or (not x13477) x5314 (not x30048))
+:assumption (or x30860 x5240)
+:assumption (or x7537 (not x4106) x23399)
+:assumption (or x19303 x28345 (not x19572) x13435 x29420 (not x25186))
+:assumption (or x29750 x4581)
+:assumption (or x4921 (not x22708))
+:assumption (or x28109 (not x11960))
+:assumption (or (not x9008) x14453 x30154)
+:assumption (or x6323 (not x31070))
+:assumption (or x11791 (not x1582) x28973 x9266 x1547 (not x8037) x16677)
+:assumption (or x156 (not x6243) (not x7989) x23545)
+:assumption (or x7083 x3895)
+:assumption (or x1089 (not x8961))
+:assumption (or x9606 (not x20167))
+:assumption (or (not x16328) x3946)
+:assumption (or (not x11823) (not x25784))
+:assumption (or x15620 x14970 x26611)
+:assumption (or x375 (not x29157))
+:assumption (or x21231 x16447 (not x1393))
+:assumption (or x11792 (not x6945))
+:assumption (or (not x14873) (not x9341))
+:assumption (or (not x941) (not x29868))
+:assumption (or x17836 x22895)
+:assumption (or x23244 (not x18391) x14799)
+:assumption (or (not x24222) x1393 (not x13264))
+:assumption (or x26280 (not x22160))
+:assumption (or (not x14777) (not x27337))
+:assumption (or (not x25854) (not x7115) x11895 (not x25778))
+:assumption (or x28230 (not x6721) x12040 x13912)
+:assumption (or (not x20606) x22439)
+:assumption (or (not x9352) x12801)
+:assumption (or x31800 x17059)
+:assumption (or (not x15980) x21728)
+:assumption (or x4502 (not x18164))
+:assumption (or x16429 (not x18547))
+:assumption (or (not x30438) x29312 (not x19674))
+:assumption (or (not x18386) (not x26361))
+:assumption (or x22729 x5063)
+:assumption (or x9008 (not x4424) x3100)
+:assumption (or x25113 (not x18299) (not x9961) (not x26783) x9270)
+:assumption (or x21920 (not x964))
+:assumption (or (not x28321) (not x6281) (not x22495))
+:assumption (or x26389 x541)
+:assumption (or x10874 x14837)
+:assumption (or (not x12923) x14392 (not x11256))
+:assumption (or x17977 x8061)
+:assumption (or (not x7697) x24641)
+:assumption (or x28185 (not x3045))
+:assumption (or x30889 x8411)
+:assumption (or (not x6581) x1393 (not x26572))
+:assumption (or (not x10462) (not x15157) (not x24079))
+:assumption (or (not x9144) x18322)
+:assumption (or x25224 (not x27828) x11792 x24557 (not x6149) x15987)
+:assumption (or x18333 (not x29353))
+:assumption (or x18942 x598 (not x21653))
+:assumption (or x5190 (not x15057) x9375 (not x8463) x17699)
+:assumption (or (not x18128) (not x29813))
+:assumption (or x19793 x16745 (not x10770))
+:assumption (or x4994 x5283)
+:assumption (or (not x30735) x27567)
+:assumption (or (not x559) x7422)
+:assumption (or x5528 (not x27566))
+:assumption (or (not x15352) (not x3500) (not x9491) (not x26142) (not x27024))
+:assumption (or x18450 (not x9252))
+:assumption (or (not x30784) x1086)
+:assumption (or x15675 (not x15861))
+:assumption (or (not x20486) x23958 (not x20113) x28505)
+:assumption (or x19708 (not x18394))
+:assumption (or x20180 (not x25626))
+:assumption (or (not x4220) (not x18195))
+:assumption (or (not x28841) (not x1985) x6072 x3082 (not x9680))
+:assumption (or x27218 (not x13438))
+:assumption (or x26032 x4555)
+:assumption (or (not x22430) (not x7944) x25308 (not x27088) (not x20819) (not x27790))
+:assumption (or x7069 (not x6631))
+:assumption (or (not x25563) (not x18106))
+:assumption (or (not x19631) x21633)
+:assumption (or x21611 (not x27768))
+:assumption (or x5161 x21298)
+:assumption (or (not x9846) x31425 x827)
+:assumption (or x13984 x31134 (not x13978))
+:assumption (or (not x13699) (not x3210))
+:assumption (or (not x236) (not x9925))
+:assumption (or x308 x8893)
+:assumption (or (not x2047) x18531)
+:assumption (or (not x4980) x11717)
+:assumption (or (not x25711) x20325)
+:assumption (or x3334 (not x827))
+:assumption (or x8996 (not x24449))
+:assumption (or x17392 (not x5761))
+:assumption (or (not x4915) x14782)
+:assumption (or x26150 x21166)
+:assumption (or (not x5528) (not x7530) (not x9008) x9585 (not x17902))
+:assumption (or (not x3760) (not x326))
+:assumption (or (not x24259) x19164 x7743 x23999 (not x7293) (not x1836))
+:assumption (or x26897 (not x19438))
+:assumption (or (not x17704) x22234)
+:assumption (or (not x19739) (not x14131))
+:assumption (or x13541 (not x12432))
+:assumption (or (not x30777) (not x25221))
+:assumption (or x19562 x16713 x6159)
+:assumption (or x15750 x8002)
+:assumption (or (not x29625) x28566)
+:assumption (or (not x20532) x3834)
+:assumption (or (not x16188) x28256)
+:assumption (or x1287 x15530)
+:assumption (or x13305 (not x6149))
+:assumption (or (not x10465) x31371)
+:assumption (or (not x26180) x8544 (not x26524) (not x25944) (not x27924))
+:assumption (or x6976 (not x30679) x8520 (not x314) x20895 (not x24680) (not x9077) (not x2478) x23440)
+:assumption (or x5320 (not x8765))
+:assumption (or x30113 (not x3886))
+:assumption (or (not x31232) (not x20103) (not x10933) x3510 (not x24108))
+:assumption (or (not x16510) x23695 x1582 (not x21815) x17075)
+:assumption (or x29382 (not x26091))
+:assumption (or (not x24850) (not x12531))
+:assumption (or x16293 (not x11855))
+:assumption (or (not x21298) (not x7342))
+:assumption (or (not x22034) x31507 (not x10723) (not x3455))
+:assumption (or (not x26436) (not x8351))
+:assumption (or x24328 (not x5496))
+:assumption (or x6128 x1200)
+:assumption (or (not x22429) x15110)
+:assumption (or (not x10322) (not x12812))
+:assumption (or x12911 (not x17286))
+:assumption (or x14375 x29042)
+:assumption (or (not x5328) (not x7869))
+:assumption (or x25463 (not x21125))
+:assumption (or x18694 x13024)
+:assumption (or x23595 (not x11512) x22935 x14275 (not x19659) x21928 x29222 (not x25739) (not x25490))
+:assumption (or x641 (not x28302))
+:assumption (or x12242 (not x31318) x21368 (not x30548))
+:assumption (or (not x4590) x2912)
+:assumption (or (not x1920) (not x16899))
+:assumption (or x3526 (not x1925))
+:assumption (or (not x1216) (not x7241))
+:assumption (or x29632 x19807)
+:assumption (or x26493 (not x21412))
+:assumption (or x28741 (not x21487))
+:assumption (or (not x2056) (not x27470))
+:assumption (or (not x15135) (not x23397))
+:assumption (or (not x30898) x15409)
+:assumption (or (not x18441) (not x20651) x4734)
+:assumption (or (not x16537) (not x2540))
+:assumption (or x23801 x7021)
+:assumption (or x9479 (not x2034))
+:assumption (or x31433 (not x14090))
+:assumption (or x9211 x30738)
+:assumption (or (not x959) x12041)
+:assumption (or x3193 (not x29699))
+:assumption (or x27635 (not x10391))
+:assumption (or (not x27468) (not x1083))
+:assumption (or x297 x22527)
+:assumption (or (not x18599) x18850)
+:assumption (or (not x13274) x23632 x21736 (not x30663) (not x18547))
+:assumption (or x26348 x16777)
+:assumption (or x21746 x24446)
+:assumption (or (not x14118) x22981)
+:assumption (or (not x30093) x19306)
+:assumption (or x11671 (not x23075))
+:assumption (or (not x30271) (not x6243) x2350)
+:assumption (or (not x21071) x20173)
+:assumption (or x31479 x27900)
+:assumption (or x5071 x4785 x3626 x335 x19553 (not x8740) (not x14031))
+:assumption (or (not x19730) x24804)
+:assumption (or x13843 x6465)
+:assumption (or x22625 x8819)
+:assumption (or x16639 (not x5528) x30224 (not x499) (not x9008))
+:assumption (or x12309 (not x18458))
+:assumption (or (not x4468) x20691)
+:assumption (or (not x25850) (not x13819))
+:assumption (or x23158 (not x7719) x805)
+:assumption (or (not x7231) (not x16936))
+:assumption (or (not x24468) (not x11599))
+:assumption (or (not x29915) x9531)
+:assumption (or x4513 x30803)
+:assumption (or (not x10858) (not x5052))
+:assumption (or (not x18879) x10358)
+:assumption (or x27427 x5768)
+:assumption (or x22068 (not x3108))
+:assumption (or (not x24965) x6666)
+:assumption (or (not x28081) x9136)
+:assumption (or x28455 (not x135))
+:assumption (or (not x31584) (not x6168))
+:assumption (or x1621 (not x5184))
+:assumption (or x28336 x27941)
+:assumption (or (not x19844) (not x21136))
+:assumption (or x1114 (not x26789) (not x19122) x3716 x8337 x15647 (not x17401))
+:assumption (or x7172 (not x26887))
+:assumption (or x9836 x13444)
+:assumption (or x18519 x20105)
+:assumption (or (not x1377) (not x13970))
+:assumption (or x2264 x727)
+:assumption (or (not x5956) x370)
+:assumption (or (not x1244) (not x22171))
+:assumption (or x24548 x8297)
+:assumption (or (not x5919) (not x21517))
+:assumption (or x8651 (not x12359) (not x10909))
+:assumption (or (not x7643) x12235)
+:assumption (or x23111 x17272 x10723)
+:assumption (or (not x24012) (not x18666))
+:assumption (or (not x25171) (not x10624))
+:assumption (or (not x15525) x23918)
+:assumption (or x28405 x22107)
+:assumption (or (not x27939) (not x25121))
+:assumption (or (not x9170) (not x1755))
+:assumption (or (not x28121) (not x8922))
+:assumption (or (not x8823) (not x19218))
+:assumption (or (not x10909) x9599 x26897 (not x13417))
+:assumption (or (not x7957) x13261)
+:assumption (or x7827 (not x10353))
+:assumption (or x2334 x28360 x30236)
+:assumption (or x29198 x3215)
+:assumption (or (not x1141) x7851)
+:assumption (or (not x744) x24803 (not x15260))
+:assumption (or (not x25923) x23896)
+:assumption (or (not x23022) (not x5051))
+:assumption (or x20515 (not x2373))
+:assumption (or (not x9383) x20830 (not x25083) (not x17549))
+:assumption (or (not x30945) x9745)
+:assumption (or x634 (not x1550))
+:assumption (or x5357 (not x20564))
+:assumption (or x30183 (not x19793))
+:assumption (or (not x31201) x21847)
+:assumption (or (not x31025) x7315)
+:assumption (or x23668 x17298)
+:assumption (or x227 x1240)
+:assumption (or x24185 (not x23433))
+:assumption (or x30124 (not x4976))
+:assumption (or (not x31506) x4455)
+:assumption (or x17742 x14603)
+:assumption (or (not x27722) (not x26249))
+:assumption (or (not x18694) x20452 x14053 x29606 (not x17326))
+:assumption (or x9531 x25375)
+:assumption (or x25229 x9935 x12573 (not x26121) x28529 (not x26781))
+:assumption (or x2342 x2334)
+:assumption (or x15238 (not x17291))
+:assumption (or (not x6955) x10417)
+:assumption (or (not x25485) x6550)
+:assumption (or x11657 x4826)
+:assumption (or (not x3129) (not x422) (not x12980) (not x15149))
+:assumption (or x789 (not x22115))
+:assumption (or (not x27137) x2083)
+:assumption (or x12817 (not x18667))
+:assumption (or x22856 (not x29442))
+:assumption (or (not x8827) x23443)
+:assumption (or (not x17861) (not x455))
+:assumption (or (not x6545) x4903)
+:assumption (or x7929 x29405)
+:assumption (or x24046 x29352)
+:assumption (or (not x27230) x17285)
+:assumption (or x2764 x1393)
+:assumption (or x21912 x31638)
+:assumption (or (not x19954) (not x16241))
+:assumption (or x9461 (not x26694))
+:assumption (or (not x19885) (not x16611))
+:assumption (or x17866 x28668)
+:assumption (or (not x7771) x7738 x15928 (not x25414))
+:assumption (or x15181 x25895 x17765 (not x13610) (not x1826))
+:assumption (or (not x18309) (not x24454) (not x9120) (not x15075) x8514 (not x29769) x3520 (not x7625))
+:assumption (or (not x17433) (not x21538))
+:assumption (or x14152 (not x3251) (not x24756))
+:assumption (or (not x14554) x24032)
+:assumption (or (not x15163) x9534)
+:assumption (or x13684 x3749)
+:assumption (or (not x9674) x20057)
+:assumption (or (not x10010) (not x21240))
+:assumption (or (not x7382) x7537)
+:assumption (or x17036 (not x25678))
+:assumption (or x31000 (not x9008) (not x9642))
+:assumption (or x12059 (not x6095))
+:assumption (or (not x8669) (not x14123))
+:assumption (or (not x9008) x15803 x11981)
+:assumption (or x3448 x30219)
+:assumption (or x8374 x28892 x30468 x22816 (not x5405) x14595)
+:assumption (or (not x6795) (not x26502))
+:assumption (or (not x1393) (not x216))
+:assumption (or (not x18887) x26842)
+:assumption (or (not x16046) (not x2133))
+:assumption (or (not x20814) x18887 (not x31445) x30549)
+:assumption (or (not x25928) (not x10971) x6003 (not x17096) (not x12620) x3842 x4524 x12121)
+:assumption (or x27963 x21619)
+:assumption (or (not x21304) (not x24725))
+:assumption (or (not x2094) x26670)
+:assumption (or (not x14674) x26670)
+:assumption (or (not x30143) x21653)
+:assumption (or (not x24868) x21298)
+:assumption (or (not x28492) (not x31482))
+:assumption (or (not x6594) x18485)
+:assumption (or x18267 (not x15537))
+:assumption (or x27630 (not x17983))
+:assumption (or (not x10579) (not x26431))
+:assumption (or (not x18790) x188)
+:assumption (or x2501 x15673 x20824 (not x20898) (not x17927) x28752 (not x14445) x6501)
+:assumption (or (not x20185) (not x23388))
+:assumption (or (not x4063) (not x4336))
+:assumption (or x6483 x7200)
+:assumption (or (not x15473) x27163)
+:assumption (or x24404 (not x21810))
+:assumption (or x9403 x31916)
+:assumption (or x15582 x8321)
+:assumption (or x31761 (not x18367))
+:assumption (or x26544 (not x30149))
+:assumption (or (not x8818) x22531)
+:assumption (or x15557 x24210)
+:assumption (or x24171 x17191)
+:assumption (or x18814 (not x6556))
+:assumption (or (not x22154) (not x4110))
+:assumption (or (not x6672) x7010)
+:assumption (or (not x22686) x16033)
+:assumption (or x21897 (not x28352))
+:assumption (or (not x1119) x16225)
+:assumption (or (not x23176) x8081)
+:assumption (or (not x26055) (not x2206) (not x14206))
+:assumption (or x19846 (not x3453) x29138)
+:assumption (or (not x28403) (not x19722))
+:assumption (or x27764 x24050)
+:assumption (or (not x22851) x10676)
+:assumption (or x27028 x14563)
+:assumption (or (not x19228) (not x3320))
+:assumption (or x24413 (not x14233))
+:assumption (or (not x14464) x21653)
+:assumption (or x24856 (not x20177))
+:assumption (or (not x6873) x20972)
+:assumption (or (not x23468) x967)
+:assumption (or x17967 (not x5342))
+:assumption (or (not x6582) (not x9864))
+:assumption (or (not x5077) (not x3141))
+:assumption (or (not x10784) (not x2278))
+:assumption (or (not x3160) x293 (not x19745) (not x1995))
+:assumption (or x8002 (not x20159))
+:assumption (or x3755 x5852)
+:assumption (or (not x487) x29453)
+:assumption (or x26931 x26912 (not x31334) x3499 x21740 x2132)
+:assumption (or x12176 x18786)
+:assumption (or (not x26471) (not x10064))
+:assumption (or x1064 (not x25355) (not x6363) (not x24013) x11043 (not x9647) (not x23956))
+:assumption (or x3782 (not x6262) x19405)
+:assumption (or (not x7490) x14412 x225 (not x3141) x19395 x20883 x24477)
+:assumption (or (not x27554) x16623)
+:assumption (or x23551 (not x27911) x30891)
+:assumption (or x23017 (not x21482))
+:assumption (or (not x17063) x25659)
+:assumption (or x11894 (not x12713))
+:assumption (or x30677 (not x11819))
+:assumption (or (not x26077) (not x25096))
+:assumption (or (not x21815) x24639)
+:assumption (or x14702 x9008)
+:assumption (or x22732 x4961)
+:assumption (or x16862 x28478)
+:assumption (or x580 x8218)
+:assumption (or (not x4259) (not x30485))
+:assumption (or (not x20079) x21351)
+:assumption (or x28148 x21447)
+:assumption (or (not x7835) x2064 x7783 x12272 x11907 x15419)
+:assumption (or (not x6223) x15987)
+:assumption (or (not x20509) x14265)
+:assumption (or x7089 x28732)
+:assumption (or x2171 (not x8999))
+:assumption (or x17829 (not x29312) x20306)
+:assumption (or (not x21236) x31525)
+:assumption (or x5528 (not x9400))
+:assumption (or x15474 (not x10974))
+:assumption (or (not x29077) x17865)
+:assumption (or (not x6432) (not x16510))
+:assumption (or (not x12591) (not x9549) x15795 (not x22775) (not x12245))
+:assumption (or x10677 x5988)
+:assumption (or x23609 x30218)
+:assumption (or x10806 x30794)
+:assumption (or x55 (not x1042) (not x27561))
+:assumption (or (not x10212) (not x21726))
+:assumption (or (not x11857) (not x1156))
+:assumption (or (not x6339) (not x7768) x3469 (not x27582) x9953 x7653 (not x24682) (not x10547))
+:assumption (or (not x31824) x22158)
+:assumption (or (not x5505) x3409)
+:assumption (or x11963 x30313)
+:assumption (or x13576 (not x3462))
+:assumption (or x21831 (not x11551))
+:assumption (or (not x27211) x21653)
+:assumption (or x3280 (not x24353) x3934 x11903 (not x19563))
+:assumption (or (not x19666) (not x22998))
+:assumption (or (not x15739) x24952 x7684)
+:assumption (or x6794 (not x19730) (not x22357) x16675)
+:assumption (or x29114 x2024)
+:assumption (or (not x2313) (not x9429))
+:assumption (or (not x18510) (not x24143))
+:assumption (or x11161 x26897 x10909 x8953)
+:assumption (or (not x30007) x13062)
+:assumption (or (not x12652) x18271)
+:assumption (or (not x28257) (not x25115))
+:assumption (or x30967 (not x218))
+:assumption (or (not x18465) x20471)
+:assumption (or x15182 x13337)
+:assumption (or (not x23632) (not x26511))
+:assumption (or (not x13674) (not x25239))
+:assumption (or (not x8690) x20787)
+:assumption (or x18558 (not x21665))
+:assumption (or (not x16693) x31612)
+:assumption (or x19357 x18536)
+:assumption (or (not x7106) (not x19459))
+:assumption (or x17961 (not x23244))
+:assumption (or (not x29669) x16422)
+:assumption (or (not x26369) (not x3113))
+:assumption (or (not x20446) (not x23244))
+:assumption (or x16756 (not x8867) x27012)
+:assumption (or (not x22853) (not x19271) x31057 x8307 (not x2534) (not x11614) x18668 x18194)
+:assumption (or (not x6008) x16759)
+:assumption (or (not x7042) x24635)
+:assumption (or (not x18987) (not x13956))
+:assumption (or (not x25929) (not x26932))
+:assumption (or x14839 (not x19127))
+:assumption (or x755 (not x25996))
+:assumption (or (not x147) (not x11602))
+:assumption (or (not x25811) x5781)
+:assumption (or x2478 (not x3355) (not x18179) (not x29832))
+:assumption (or x23400 x435)
+:assumption (or x14359 x12006 x16776)
+:assumption (or (not x1939) (not x31458) (not x30785) x27973)
+:assumption (or x7973 (not x1503))
+:assumption (or (not x21221) x23026)
+:assumption (or (not x22817) x27125)
+:assumption (or x5397 x27878)
+:assumption (or (not x1886) x28141 x25838)
+:assumption (or (not x21038) (not x13553))
+:assumption (or x18169 (not x14280))
+:assumption (or (not x18181) (not x7101) x25659)
+:assumption (or (not x28235) (not x16907))
+:assumption (or (not x10025) x16838)
+:assumption (or x29651 x8840)
+:assumption (or x1450 (not x20460))
+:assumption (or (not x19623) (not x9879))
+:assumption (or (not x5021) (not x24379))
+:assumption (or x29873 (not x16025))
+:assumption (or (not x25514) x15160)
+:assumption (or (not x10702) x28439)
+:assumption (or (not x3894) (not x23206))
+:assumption (or (not x31291) x1601 x27012 x11506 x17302)
+:assumption (or (not x23118) x6713)
+:assumption (or x26355 (not x12828))
+:assumption (or x7964 (not x28929))
+:assumption (or x2007 (not x7440))
+:assumption (or (not x20651) (not x16657) (not x11381))
+:assumption (or x31157 x15474)
+:assumption (or (not x21651) x8039)
+:assumption (or (not x9202) (not x24980))
+:assumption (or (not x14305) (not x18694) x7690)
+:assumption (or x5528 x24580)
+:assumption (or x30021 (not x29563))
+:assumption (or x10089 (not x28048))
+:assumption (or x20201 x2071)
+:assumption (or x21768 (not x26359))
+:assumption (or (not x9515) (not x16992))
+:assumption (or (not x5448) x22842)
+:assumption (or x26056 (not x15529))
+:assumption (or x23893 (not x26532))
+:assumption (or x29649 x21742)
+:assumption (or (not x8813) (not x30293))
+:assumption (or x15062 (not x9531))
+:assumption (or (not x9227) x854)
+:assumption (or x30231 (not x11661))
+:assumption (or x28942 x5279 x25659)
+:assumption (or x540 (not x5722))
+:assumption (or x13131 x10800 (not x10344) x5146 x15404 x22046 (not x12628) (not x21578) x12916)
+:assumption (or x21138 (not x17926) x13564 (not x16648))
+:assumption (or (not x2669) (not x21734))
+:assumption (or x10254 (not x127))
+:assumption (or x20770 (not x10490))
+:assumption (or (not x3728) x724)
+:assumption (or x30113 (not x28342) (not x12276))
+:assumption (or (not x8913) x1756)
+:assumption (or x26934 (not x3001))
+:assumption (or (not x13155) x9207)
+:assumption (or x23972 (not x17386))
+:assumption (or x16648 (not x25382))
+:assumption (or (not x15795) x28660)
+:assumption (or x9880 (not x6569))
+:assumption (or (not x9306) x17092)
+:assumption (or (not x30452) (not x24734))
+:assumption (or (not x22348) x21060 x21977 x12487 (not x27133))
+:assumption (or (not x25366) x14718 (not x24092) (not x20402) (not x14641))
+:assumption (or x24957 (not x31197))
+:assumption (or x20259 x288 x21244 (not x26390) (not x31080))
+:assumption (or (not x17003) x26801)
+:assumption (or (not x4926) x30954)
+:assumption (or (not x17212) x8002 x9220)
+:assumption (or (not x19791) (not x16978))
+:assumption (or x7697 (not x8586) x7480 x17029)
+:assumption (or x23014 x10034)
+:assumption (or (not x6051) (not x25599))
+:assumption (or x29269 (not x19620))
+:assumption (or x2855 (not x13505))
+:assumption (or (not x11488) (not x16079))
+:assumption (or x29992 (not x7159))
+:assumption (or x19992 x12779 x28833 x26766)
+:assumption (or (not x7945) (not x964) x12724)
+:assumption (or (not x22811) (not x820))
+:assumption (or (not x13674) (not x21534) (not x13956))
+:assumption (or x10847 (not x30576))
+:assumption (or (not x24092) (not x22531))
+:assumption (or (not x7740) x11166)
+:assumption (or (not x8602) x10011)
+:assumption (or x2464 (not x25488))
+:assumption (or x23244 x25001 x427)
+:assumption (or (not x10703) (not x15010))
+:assumption (or (not x29314) x8757)
+:assumption (or (not x2133) (not x12651))
+:assumption (or (not x24749) x13937)
+:assumption (or x29067 (not x10617))
+:assumption (or x5519 (not x11030) (not x5402) x16847)
+:assumption (or (not x28514) x25030)
+:assumption (or x22361 x19938)
+:assumption (or x25794 x22553)
+:assumption (or (not x14660) x11783)
+:assumption (or x19689 x5902 (not x4473) (not x7323) x18386)
+:assumption (or (not x10874) (not x13602) (not x6747) (not x31520) x28370)
+:assumption (or x29940 (not x29807))
+:assumption (or x17347 (not x3861) (not x23554))
+:assumption (or x12508 (not x18441))
+:assumption (or (not x17696) x31580)
+:assumption (or (not x2043) (not x13224) (not x10877) x29949 x23475 (not x8284))
+:assumption (or (not x14480) (not x1555))
+:assumption (or (not x23644) (not x12499))
+:assumption (or x20852 (not x2671))
+:assumption (or x6839 x2088)
+:assumption (or (not x21287) x27481)
+:assumption (or x29002 (not x30397))
+:assumption (or (not x472) x9338)
+:assumption (or (not x15110) (not x16949))
+:assumption (or x19794 x24756 (not x7346))
+:assumption (or (not x20576) (not x3913))
+:assumption (or x8549 x2008)
+:assumption (or (not x9132) x9745)
+:assumption (or (not x5039) x2050 x18254)
+:assumption (or x17310 x25077 (not x18225) (not x557) (not x18519) x13833 (not x4674) x29730)
+:assumption (or (not x3503) (not x19404))
+:assumption (or (not x2708) x6784)
+:assumption (or x19892 (not x12781))
+:assumption (or x25906 (not x23513))
+:assumption (or x15227 (not x12122) x24049)
+:assumption (or (not x2482) x26146)
+:assumption (or (not x21681) (not x28949))
+:assumption (or x23801 x3196 x4026)
+:assumption (or (not x28619) x22446 (not x16926) x23799 (not x28751) (not x25496) x1393 x24818)
+:assumption (or (not x16852) (not x19162))
+:assumption (or (not x18291) x2956)
+:assumption (or (not x10395) x22395)
+:assumption (or x14522 (not x27008))
+:assumption (or x22150 x7250)
+:assumption (or x11670 (not x1122))
+:assumption (or x26981 (not x15917))
+:assumption (or x11308 (not x3604))
+:assumption (or (not x3874) x23386 (not x26469))
+:assumption (or x23203 (not x17407))
+:assumption (or x16811 (not x26764))
+:assumption (or (not x30219) (not x811) (not x20716))
+:assumption (or (not x18153) x5028 (not x29442))
+:assumption (or (not x13092) x16016)
+:assumption (or x1647 x17442)
+:assumption (or (not x13940) (not x16682) (not x518))
+:assumption (or x22574 (not x2498))
+:assumption (or (not x2146) x5198)
+:assumption (or (not x27431) x22060)
+:assumption (or x29100 x28650)
+:assumption (or x4510 (not x30632))
+:assumption (or (not x22659) (not x89))
+:assumption (or x12756 x29551)
+:assumption (or x18859 (not x29083))
+:assumption (or (not x14974) (not x15106))
+:assumption (or (not x4932) (not x29659))
+:assumption (or x19468 x13469)
+:assumption (or (not x22732) x28860)
+:assumption (or x964 x13405)
+:assumption (or (not x23394) (not x9008))
+:assumption (or x17731 (not x16365))
+:assumption (or x7420 (not x22261))
+:assumption (or x7321 x119 (not x23801))
+:assumption (or x14481 x7010)
+:assumption (or x5901 x7757)
+:assumption (or (not x21874) (not x15102))
+:assumption (or x4042 (not x19118))
+:assumption (or (not x14973) x6210)
+:assumption (or x31829 x28541 (not x28916) x6898)
+:assumption (or (not x19675) (not x15537))
+:assumption (or x19907 (not x26718) (not x11250) x3876 x6113)
+:assumption (or x3912 (not x19889))
+:assumption (or (not x7368) x23791 (not x1213) x30833 (not x5528) x20525)
+:assumption (or (not x23244) x2260)
+:assumption (or x5720 (not x16304))
+:assumption (or (not x23934) (not x16448))
+:assumption (or (not x5438) (not x28026))
+:assumption (or x19867 (not x19108))
+:assumption (or x11048 x8002)
+:assumption (or (not x31344) (not x11595))
+:assumption (or (not x2312) x13442 (not x18989) (not x3940) (not x22229))
+:assumption (or x20606 (not x30887) x12762)
+:assumption (or x4492 (not x28691))
+:assumption (or x11304 (not x7231))
+:assumption (or x9171 x19864 (not x24567) (not x18588))
+:assumption (or x18151 (not x21009) x31311 (not x4662) (not x4323))
+:assumption (or x24756 (not x12058) x17548 x29312 x3365)
+:assumption (or (not x10081) x12564)
+:assumption (or x13018 (not x25805))
+:assumption (or (not x24556) x1556)
+:assumption (or x31599 x10453)
+:assumption (or x27807 (not x10172))
+:assumption (or x8002 x6790)
+:assumption (or x7453 x12922)
+:assumption (or x30464 (not x30138))
+:assumption (or (not x30217) (not x20634))
+:assumption (or (not x23061) x31435 (not x20395) x10789 x27420 (not x22906) (not x28306))
+:assumption (or x8743 x26297)
+:assumption (or (not x19711) x6903)
+:assumption (or (not x2633) x25370)
+:assumption (or (not x5560) x16085)
+:assumption (or (not x13514) x29636)
+:assumption (or x31761 (not x16809) x30113)
+:assumption (or x21532 (not x12087))
+:assumption (or x27572 (not x3224) x6338)
+:assumption (or (not x1882) x21298)
+:assumption (or (not x14722) (not x21647))
+:assumption (or (not x22744) (not x21789))
+:assumption (or (not x15595) (not x28708))
+:assumption (or (not x26491) (not x15514) (not x22836) (not x2082) (not x26648))
+:assumption (or (not x31133) x6594)
+:assumption (or x886 x16886)
+:assumption (or (not x17883) (not x22387))
+:assumption (or (not x27900) (not x31479))
+:assumption (or (not x1047) (not x28625))
+:assumption (or x26279 x27065)
+:assumption (or x21684 x18506)
+:assumption (or (not x15049) (not x26918) x31721)
+:assumption (or (not x5308) x27310)
+:assumption (or (not x18504) (not x6307))
+:assumption (or (not x28973) x5932)
+:assumption (or (not x8267) (not x30716))
+:assumption (or x3345 (not x652))
+:assumption (or (not x1750) (not x2799) (not x29386) (not x9951) x27865 x30603 x24257 (not x27175))
+:assumption (or (not x10371) (not x15907))
+:assumption (or (not x23244) x24374)
+:assumption (or x14078 (not x31204))
+:assumption (or x23991 x20621)
+:assumption (or (not x26638) (not x30601))
+:assumption (or x23688 (not x4081))
+:assumption (or x22055 (not x10370))
+:assumption (or (not x30680) x6294 x17440 x24326)
+:assumption (or x22692 (not x2013))
+:assumption (or (not x6951) (not x13998))
+:assumption (or (not x18878) (not x25366))
+:assumption (or (not x18825) x20290)
+:assumption (or x4648 x23905)
+:assumption (or (not x21653) (not x7306))
+:assumption (or (not x19826) (not x9008))
+:assumption (or x22268 x25305)
+:assumption (or x2483 (not x23376))
+:assumption (or (not x17314) x19702)
+:assumption (or x671 (not x30816))
+:assumption (or x1186 x4722 x28129 x13076 (not x11504) (not x609))
+:assumption (or x12390 x29312)
+:assumption (or x2635 x20134)
+:assumption (or x9693 x332)
+:assumption (or (not x9681) x3402)
+:assumption (or (not x16025) (not x26980))
+:assumption (or x21298 x14913 (not x4045) (not x9804))
+:assumption (or (not x11838) x26354)
+:assumption (or x16509 x20198)
+:assumption (or x22640 x16510)
+:assumption (or (not x13120) x28597)
+:assumption (or x17257 (not x5835))
+:assumption (or x29266 x13268)
+:assumption (or x8441 x18589)
+:assumption (or (not x22227) x14567)
+:assumption (or (not x10854) x15404)
+:assumption (or (not x12866) x5402)
+:assumption (or (not x12498) x10270)
+:assumption (or (not x12458) x14038)
+:assumption (or (not x20463) (not x1245))
+:assumption (or x27772 (not x3470))
+:assumption (or (not x3253) (not x27182))
+:assumption (or (not x27512) (not x23464))
+:assumption (or (not x7804) (not x1439))
+:assumption (or (not x4542) x18063)
+:assumption (or (not x6969) x26891)
+:assumption (or x26357 x14645)
+:assumption (or (not x22108) x1788)
+:assumption (or x480 x5502)
+:assumption (or x16416 x12404)
+:assumption (or x23462 x24902)
+:assumption (or (not x31095) (not x9212))
+:assumption (or x28487 (not x9623))
+:assumption (or x8521 (not x5570))
+:assumption (or (not x14954) (not x20213))
+:assumption (or (not x28993) x13833)
+:assumption (or (not x5801) (not x30552))
+:assumption (or x22870 (not x22930))
+:assumption (or x28549 (not x11743))
+:assumption (or (not x4169) (not x31662))
+:assumption (or (not x23731) (not x2368) x16304 (not x13173) x17600)
+:assumption (or x29566 (not x28145))
+:assumption (or (not x8712) x29578)
+:assumption (or (not x2275) x28885 (not x30110) (not x25552))
+:assumption (or (not x16783) (not x252))
+:assumption (or (not x29287) (not x28862))
+:assumption (or x5152 x29654)
+:assumption (or x3671 (not x16342) x7711 (not x6064) x16252 x3176)
+:assumption (or (not x1433) x9116 (not x16886) x7970 (not x1965))
+:assumption (or x13532 (not x25146))
+:assumption (or (not x25376) x26815)
+:assumption (or x28271 x12451)
+:assumption (or (not x20164) x13064)
+:assumption (or x25366 x100)
+:assumption (or x14695 (not x20249))
+:assumption (or (not x16326) x484)
+:assumption (or x30635 x964)
+:assumption (or x31363 (not x5731))
+:assumption (or x3753 x24909 (not x7275) x4919 (not x21444))
+:assumption (or x5941 x20924)
+:assumption (or (not x811) x23852)
+:assumption (or x9670 (not x2654))
+:assumption (or x19947 x7047)
+:assumption (or (not x23612) (not x974))
+:assumption (or (not x27685) (not x11663))
+:assumption (or (not x2002) x23168)
+:assumption (or x11187 x7378)
+:assumption (or (not x30228) x29646)
+:assumption (or (not x14856) x11149)
+:assumption (or (not x28755) (not x5246))
+:assumption (or (not x30113) x12034 (not x27508) (not x13256))
+:assumption (or (not x3829) x16535)
+:assumption (or x23641 x11563)
+:assumption (or x29442 (not x5028) (not x29529))
+:assumption (or (not x14961) (not x397))
+:assumption (or x30954 (not x29470))
+:assumption (or (not x17328) (not x17733))
+:assumption (or (not x29021) x5528)
+:assumption (or x24955 (not x20135))
+:assumption (or x15089 x11415)
+:assumption (or (not x21637) (not x22275))
+:assumption (or (not x3839) (not x26346))
+:assumption (or x3840 x19969)
+:assumption (or (not x3782) x16684)
+:assumption (or (not x27460) x14578 x30742)
+:assumption (or (not x17870) (not x5352) (not x14670))
+:assumption (or x3665 (not x1621))
+:assumption (or (not x13419) (not x13805))
+:assumption (or (not x16288) (not x11209))
+:assumption (or x15001 x3605)
+:assumption (or (not x12965) x4137)
+:assumption (or (not x3802) x28042)
+:assumption (or (not x6996) (not x30208))
+:assumption (or x15966 (not x4378))
+:assumption (or x15844 (not x4198))
+:assumption (or x31081 (not x24660))
+:assumption (or (not x17702) (not x28708) x14223 x12397)
+:assumption (or x3494 x19380)
+:assumption (or x19127 x5338)
+:assumption (or (not x19219) (not x3575))
+:assumption (or (not x10597) (not x18906) x576 (not x18208) (not x13427))
+:assumption (or x21117 (not x583) (not x17820) x20246 (not x8714))
+:assumption (or (not x18069) x27417 x28864 x3494)
+:assumption (or (not x10909) x2367)
+:assumption (or (not x27019) x4047)
+:assumption (or x27276 x31535)
+:assumption (or x31768 x20134)
+:assumption (or x19325 x27276)
+:assumption (or (not x19876) (not x21266))
+:assumption (or x26717 (not x28230))
+:assumption (or x20274 (not x30721))
+:assumption (or (not x15472) (not x7165) (not x25676))
+:assumption (or x13608 x6725)
+:assumption (or (not x20133) (not x11145))
+:assumption (or x2592 (not x21690) (not x24952) x11823 x25784)
+:assumption (or (not x2737) x16907)
+:assumption (or x5975 x2725)
+:assumption (or x26636 (not x7024))
+:assumption (or (not x13217) (not x1588))
+:assumption (or x29098 (not x26704) x26091 x9008 x26740 (not x6377) x776 x1283)
+:assumption (or x20241 (not x4155))
+:assumption (or x10712 x25155)
+:assumption (or x20992 (not x22089))
+:assumption (or x6903 x4184)
+:assumption (or (not x14646) (not x3341))
+:assumption (or x30154 (not x4882))
+:assumption (or (not x22930) (not x8389))
+:assumption (or (not x30819) (not x1393))
+:assumption (or x21624 (not x12923) x10552 x27597)
+:assumption (or x13720 x2574 x16058)
+:assumption (or (not x28773) (not x29239) (not x15173) (not x577) (not x22373) x13188 x4579)
+:assumption (or x12902 x24849)
+:assumption (or x1392 x28777 (not x13956))
+:assumption (or x5956 x29509 (not x26815) x15674 x4206)
+:assumption (or x25659 x24272 (not x5982))
+:assumption (or x25551 x18584)
+:assumption (or x2649 x22814)
+:assumption (or x19568 (not x13728) x19397)
+:assumption (or (not x7859) (not x16177))
+:assumption (or x21723 (not x28023))
+:assumption (or x17016 x23840 (not x8002) x5233)
+:assumption (or (not x4560) (not x16660) x6000)
+:assumption (or x19730 (not x15401))
+:assumption (or (not x5511) x979)
+:assumption (or x31833 x918)
+:assumption (or x19482 x6351)
+:assumption (or (not x23807) (not x22231))
+:assumption (or x24564 (not x19428))
+:assumption (or x19025 (not x18963))
+:assumption (or (not x17437) (not x14197))
+:assumption (or (not x1128) x4371)
+:assumption (or (not x24844) (not x8409))
+:assumption (or x15513 (not x24386))
+:assumption (or (not x15941) (not x8458))
+:assumption (or x31768 (not x22347))
+:assumption (or (not x1594) (not x16079))
+:assumption (or x14791 (not x7061))
+:assumption (or x25265 (not x5696) x21213 (not x26010) (not x21636) (not x17093))
+:assumption (or (not x28995) (not x14755))
+:assumption (or (not x19190) (not x26107))
+:assumption (or (not x30090) x25040)
+:assumption (or x23422 (not x1776))
+:assumption (or x25682 x25315 (not x7697) x8586)
+:assumption (or (not x18199) x8540)
+:assumption (or x29036 (not x17861))
+:assumption (or (not x2948) (not x30610))
+:assumption (or x346 x18808)
+:assumption (or (not x26084) x2728)
+:assumption (or x21177 x15748)
+:assumption (or x27338 (not x24472) (not x14043) (not x19505))
+:assumption (or x22096 (not x5908))
+:assumption (or x27060 x14696)
+:assumption (or (not x19073) x26400)
+:assumption (or x20733 x13367)
+:assumption (or (not x21785) (not x8724))
+:assumption (or x18441 (not x29059) (not x1601))
+:assumption (or x31904 (not x10791))
+:assumption (or (not x9430) (not x10336) x8768)
+:assumption (or x18742 (not x964) x22083 (not x1014) x17372)
+:assumption (or (not x15799) (not x28112) x13363 x2044)
+:assumption (or x21473 x2875 (not x18556) x25986 x17862)
+:assumption (or x30434 x18087)
+:assumption (or x22649 x29731)
+:assumption (or (not x27277) x1393)
+:assumption (or x20814 (not x31745))
+:assumption (or x11910 x9806)
+:assumption (or x13960 x25911)
+:assumption (or x507 x6109 (not x3516) (not x13956))
+:assumption (or x30271 x10204)
+:assumption (or (not x16129) x14575)
+:assumption (or (not x29899) x6199)
+:assumption (or x23589 (not x30578))
+:assumption (or (not x14417) x17027)
+:assumption (or x30511 x21558)
+:assumption (or (not x6149) (not x16816))
+:assumption (or x9664 (not x14793))
+:assumption (or x7537 (not x8384) x23399 (not x29701))
+:assumption (or x26107 x24750 (not x21831))
+:assumption (or x15087 x7893)
+:assumption (or (not x31051) (not x3042))
+:assumption (or (not x25603) (not x9354))
+:assumption (or x1547 (not x31170))
+:assumption (or x29564 (not x27769))
+:assumption (or x2114 x10682)
+:assumption (or x4230 x8209)
+:assumption (or (not x29373) (not x31767))
+:assumption (or (not x19894) x11427)
+:assumption (or (not x21745) (not x12543))
+:assumption (or x9022 x1771)
+:assumption (or x15795 (not x25553))
+:assumption (or x29579 x13911)
+:assumption (or (not x21870) x24356 x8602)
+:assumption (or x1284 (not x10322))
+:assumption (or (not x1062) (not x6111) x2024 (not x5147))
+:assumption (or (not x19400) (not x11228))
+:assumption (or x23672 (not x18115))
+:assumption (or (not x16753) x23093)
+:assumption (or (not x9943) x1464)
+:assumption (or x9992 x28459)
+:assumption (or (not x19653) x6647)
+:assumption (or x5626 (not x10872))
+:assumption (or (not x11290) x15861)
+:assumption (or (not x23874) x18158 (not x9008))
+:assumption (or x2859 (not x24009))
+:assumption (or x9843 (not x11020))
+:assumption (or x15383 (not x11869))
+:assumption (or (not x3400) (not x27377))
+:assumption (or (not x27423) (not x14024) (not x10408) x30527 x28419 (not x6594))
+:assumption (or x20482 x30014)
+:assumption (or x14317 x26189)
+:assumption (or (not x3694) x7657)
+:assumption (or (not x19418) (not x26670))
+:assumption (or (not x376) (not x25659) (not x13552))
+:assumption (or (not x23824) (not x30955))
+:assumption (or (not x29772) (not x15371))
+:assumption (or x20632 (not x25366) (not x22939))
+:assumption (or x13303 (not x18179))
+:assumption (or (not x5146) x27328)
+:assumption (or (not x5589) (not x30713))
+:assumption (or x6889 x6339)
+:assumption (or (not x10614) (not x15260) (not x28848))
+:assumption (or (not x29345) x1851)
+:assumption (or (not x18621) x1751)
+:assumption (or x17763 x2286)
+:assumption (or x15546 (not x20274) x30721 x9895 (not x29333) x7440)
+:assumption (or x993 (not x8998))
+:assumption (or x3201 x17879)
+:assumption (or x2279 (not x20589) (not x18182) x7977 x26017)
+:assumption (or x29322 (not x2640) x30110)
+:assumption (or x9008 x6314)
+:assumption (or x18836 x19589)
+:assumption (or x27232 (not x16939))
+:assumption (or x1371 x6310)
+:assumption (or (not x5602) (not x29139) (not x13956) x31180)
+:assumption (or (not x18859) (not x3184))
+:assumption (or (not x19877) x30124 x23125 x16409)
+:assumption (or x29082 (not x30845) x11711 (not x30752) x3156 (not x20374))
+:assumption (or (not x18522) x25309)
+:assumption (or (not x20487) (not x21217))
+:assumption (or (not x4300) x588)
+:assumption (or (not x19183) x22990)
+:assumption (or x6140 x14407)
+:assumption (or x25803 (not x29945))
+:assumption (or x13235 (not x7506))
+:assumption (or (not x15236) (not x19007))
+:assumption (or (not x18282) (not x23763))
+:assumption (or (not x23043) (not x29481))
+:assumption (or x23673 (not x13576))
+:assumption (or x7537 (not x31764) (not x28202))
+:assumption (or x137 x20254)
+:assumption (or (not x18863) x23830)
+:assumption (or (not x5029) x26432)
+:assumption (or x24923 x18783)
+:assumption (or (not x17385) (not x21891))
+:assumption (or (not x21267) (not x17489))
+:assumption (or x6561 (not x24381))
+:assumption (or (not x480) (not x1753))
+:assumption (or x19670 (not x6898) x30950 (not x7076) (not x28460))
+:assumption (or x7200 x19365 x12723 (not x22751))
+:assumption (or (not x20810) (not x15366))
+:assumption (or x1057 x12683)
+:assumption (or (not x29010) x7790)
+:assumption (or x3435 x16934)
+:assumption (or (not x14138) (not x20786))
+:assumption (or x4023 (not x16430))
+:assumption (or x21412 (not x24401) (not x25423))
+:assumption (or (not x23746) x18694)
+:assumption (or x23150 (not x30348))
+:assumption (or (not x23016) x6424)
+:assumption (or (not x780) x22206)
+:assumption (or x10664 x24637)
+:assumption (or x14122 (not x11097))
+:assumption (or x12784 (not x18176))
+:assumption (or (not x13478) (not x7200))
+:assumption (or x25366 x11906)
+:assumption (or (not x13516) x21815)
+:assumption (or x20961 x25253 x31480 x8120)
+:assumption (or x30539 (not x12915))
+:assumption (or (not x21035) (not x7541))
+:assumption (or (not x7852) (not x11447))
+:assumption (or (not x14805) x29228)
+:assumption (or (not x24592) x9961 x13956)
+:assumption (or (not x13071) x11622)
+:assumption (or x17404 x21369)
+:assumption (or (not x8663) x9008)
+:assumption (or x7206 x2786 x8602)
+:assumption (or (not x21584) x30473)
+:assumption (or (not x8064) (not x27793))
+:assumption (or x9215 x18399)
+:assumption (or x11329 (not x8030) x18185 x20343)
+:assumption (or x20950 x15448 x2943)
+:assumption (or (not x28016) (not x31134))
+:assumption (or x17075 x12507 (not x31167))
+:assumption (or (not x23857) x29442)
+:assumption (or (not x2721) (not x22891))
+:assumption (or (not x24180) (not x19266) x30789 (not x24319) (not x5846) x8972 (not x26593))
+:assumption (or x23973 (not x17424))
+:assumption (or (not x6594) x2056 x15566 x8916 (not x28018))
+:assumption (or (not x17693) x16503)
+:assumption (or (not x28246) (not x26375))
+:assumption (or x12234 (not x5025))
+:assumption (or x20239 x27219)
+:assumption (or x27764 x21737)
+:assumption (or x30208 (not x18030))
+:assumption (or (not x27323) x16185)
+:assumption (or (not x17725) x22983)
+:assumption (or x22148 x5732)
+:assumption (or x10642 (not x23563))
+:assumption (or x16745 (not x10770) (not x12790) (not x3623))
+:assumption (or (not x22668) x20762)
+:assumption (or (not x6421) x5501)
+:assumption (or x23333 (not x26280))
+:assumption (or x218 x12786)
+:assumption (or x9699 x29246)
+:assumption (or (not x19517) x8002 x26834)
+:assumption (or x14435 (not x29983) x5597 (not x3907))
+:assumption (or x21313 (not x27537) x8992)
+:assumption (or x29561 (not x591))
+:assumption (or x24636 x12089)
+:assumption (or (not x18122) x23473)
+:assumption (or x13048 (not x9115))
+:assumption (or (not x25462) (not x4504))
+:assumption (or x13187 (not x9783))
+:assumption (or (not x6317) x14414)
+:assumption (or x5007 (not x19992))
+:assumption (or (not x9290) x11189)
+:assumption (or (not x17923) (not x4329))
+:assumption (or x8837 (not x9589))
+:assumption (or x30679 (not x9489))
+:assumption (or x9899 (not x17512))
+:assumption (or x8263 (not x8825) x22897)
+:assumption (or (not x10199) (not x1350))
+:assumption (or x2334 x4279 x19819 (not x13487))
+:assumption (or x13934 x16854)
+:assumption (or x6020 (not x26448) x9008)
+:assumption (or x5573 x15569)
+:assumption (or (not x26112) x20399)
+:assumption (or x27129 x1649)
+:assumption (or (not x4449) (not x26787) x22599 x28242 x722 x16998)
+:assumption (or (not x3419) x2346)
+:assumption (or x27579 x15883)
+:assumption (or x11571 (not x14483) x24756)
+:assumption (or (not x28900) x27455)
+:assumption (or x20454 x4864)
+:assumption (or x17728 x22410 (not x21653))
+:assumption (or x8673 (not x2672))
+:assumption (or x27537 x29672)
+:assumption (or x25607 (not x29188))
+:assumption (or x5718 (not x31195))
+:assumption (or (not x2339) x8925)
+:assumption (or (not x17609) x25578 (not x13416) x22976)
+:assumption (or (not x8182) (not x17335))
+:assumption (or (not x10885) x27743)
+:assumption (or (not x18120) (not x22572))
+:assumption (or x22112 (not x19864))
+:assumption (or (not x20531) (not x528))
+:assumption (or (not x18161) (not x5632))
+:assumption (or x10759 x3410)
+:assumption (or x3718 (not x8143))
+:assumption (or (not x11048) (not x29598) (not x8002) x18369)
+:assumption (or x10819 (not x20535))
+:assumption (or (not x11792) (not x584))
+:assumption (or (not x13829) (not x23675))
+:assumption (or (not x24725) x9735)
+:assumption (or x20723 x14043)
+:assumption (or (not x17439) (not x22429))
+:assumption (or (not x18294) (not x6268))
+:assumption (or x16337 x17109)
+:assumption (or x13353 (not x25224))
+:assumption (or x24722 (not x22475))
+:assumption (or x4555 x16486 (not x14578) (not x25198))
+:assumption (or x29489 (not x17028))
+:assumption (or (not x15692) (not x27685))
+:assumption (or (not x13537) x26628 x26432)
+:assumption (or x25797 x31299)
+:assumption (or (not x15799) x19501 (not x21425) (not x13956))
+:assumption (or x1098 x6028)
+:assumption (or x30633 x1041)
+:assumption (or x5528 x16458)
+:assumption (or x5713 (not x31295))
+:assumption (or x28396 (not x22408))
+:assumption (or x92 (not x8052))
+:assumption (or (not x6496) (not x14998))
+:assumption (or x11965 x12734)
+:assumption (or (not x25984) x200)
+:assumption (or x11922 (not x19711))
+:assumption (or x20252 (not x3125) x7954 x6783)
+:assumption (or (not x24936) x27501)
+:assumption (or (not x29772) x9033)
+:assumption (or (not x23175) x9322)
+:assumption (or x6608 x26790)
+:assumption (or (not x16409) (not x23486) x2281 (not x30124))
+:assumption (or x27538 x26690)
+:assumption (or (not x20730) x1307)
+:assumption (or (not x23473) x10768)
+:assumption (or x24107 (not x25736) x21653)
+:assumption (or x16710 (not x28179))
+:assumption (or (not x8602) (not x16799))
+:assumption (or (not x19785) x31635)
+:assumption (or (not x28315) x19411)
+:assumption (or x25659 x3114)
+:assumption (or x15620 x7073)
+:assumption (or (not x9647) x2511)
+:assumption (or x20316 x26246)
+:assumption (or x21955 (not x13403) (not x28074))
+:assumption (or (not x19067) (not x8790))
+:assumption (or (not x7904) (not x30198))
+:assumption (or x27915 (not x19066))
+:assumption (or x25135 (not x12434))
+:assumption (or (not x2690) x4473)
+:assumption (or (not x14839) (not x23828))
+:assumption (or x2209 (not x11424))
+:assumption (or (not x6961) x16709)
+:assumption (or (not x26717) x29133 x5434 (not x30659) (not x6721) x1527 (not x15416))
+:assumption (or (not x2329) x29489)
+:assumption (or (not x1563) x13128)
+:assumption (or (not x17598) x969)
+:assumption (or x15795 x8953 x4673)
+:assumption (or x15266 x12090)
+:assumption (or (not x30702) (not x23691))
+:assumption (or x27270 (not x6092))
+:assumption (or (not x12721) (not x4553) x8257 (not x27309) (not x27349) x15844 (not x433))
+:assumption (or (not x10793) x7245)
+:assumption (or (not x5076) x12762)
+:assumption (or x26728 (not x29417))
+:assumption (or x3307 (not x14444))
+:assumption (or x30504 (not x160))
+:assumption (or (not x25121) (not x2113))
+:assumption (or x25628 (not x20174))
+:assumption (or x31191 (not x28816))
+:assumption (or x8382 (not x20437))
+:assumption (or (not x14851) (not x26835))
+:assumption (or x31368 (not x23963))
+:assumption (or x4908 (not x20562))
+:assumption (or (not x23164) x24144)
+:assumption (or (not x7032) x6990)
+:assumption (or x27421 x13174)
+:assumption (or (not x8990) x17138 x12075 x13063 x25182 x2773 x11443)
+:assumption (or x13321 (not x18666))
+:assumption (or x15237 (not x15121))
+:assumption (or (not x15102) (not x30676))
+:assumption (or x7755 (not x22573))
+:assumption (or x30013 x20592)
+:assumption (or x21298 x5488)
+:assumption (or (not x15768) x27619 x13576)
+:assumption (or x27068 x20545)
+:assumption (or x1920 (not x17109) x18365)
+:assumption (or (not x3353) (not x31701))
+:assumption (or x10547 (not x325))
+:assumption (or (not x14984) (not x13674) (not x8002) (not x13685))
+:assumption (or (not x30295) (not x1914))
+:assumption (or x1038 (not x27965))
+:assumption (or (not x26026) (not x26886))
+:assumption (or (not x4016) x18431 (not x11327) x21171 x17490)
+:assumption (or x14866 x21680)
+:assumption (or x1836 (not x1652))
+:assumption (or (not x964) (not x5568) (not x29104))
+:assumption (or (not x5813) (not x17887))
+:assumption (or x22360 x14255)
+:assumption (or (not x29652) x9308)
+:assumption (or (not x19159) (not x19723) x836 (not x14888) x24133 x795 (not x25727) (not x20092))
+:assumption (or (not x9571) (not x10170))
+:assumption (or x22377 (not x17665) x29008)
+:assumption (or x840 x14152 (not x202))
+:assumption (or x5440 (not x6276))
+:assumption (or x24873 (not x1380))
+:assumption (or x13500 (not x2111) (not x6612) x11418 (not x142))
+:assumption (or (not x12046) (not x3920))
+:assumption (or x28489 x8586 (not x12770))
+:assumption (or (not x3425) (not x19124))
+:assumption (or (not x6215) x19843)
+:assumption (or (not x15672) x26756)
+:assumption (or (not x5369) (not x6091))
+:assumption (or x16025 (not x26897) (not x20790))
+:assumption (or (not x20734) x21447)
+:assumption (or x9008 (not x22677) x30276)
+:assumption (or x23860 (not x13260))
+:assumption (or (not x558) x13878)
+:assumption (or x10635 (not x14698))
+:assumption (or (not x24498) (not x13188))
+:assumption (or (not x24409) x17036)
+:assumption (or (not x15556) x8874)
+:assumption (or x15322 (not x24911))
+:assumption (or (not x1385) x28147)
+:assumption (or (not x24632) x20264)
+:assumption (or x25886 x5383 (not x480))
+:assumption (or x16973 x30138 x25366 x8660)
+:assumption (or x30342 x29784)
+:assumption (or (not x30977) (not x7628))
+:assumption (or (not x4058) (not x2030))
+:assumption (or (not x11840) x15987 x8642 x1039)
+:assumption (or (not x16003) (not x7086))
+:assumption (or (not x30965) x26169 x2500)
+:assumption (or (not x18246) (not x19617))
+:assumption (or (not x9511) (not x31543) (not x19063) (not x6200))
+:assumption (or x4853 (not x29668))
+:assumption (or x22652 (not x16349) (not x9531))
+:assumption (or x14839 (not x8881))
+:assumption (or (not x11349) (not x3782) (not x4965) (not x15567) (not x10250))
+:assumption (or x26461 x5843)
+:assumption (or (not x925) (not x4227))
+:assumption (or x7490 x5077)
+:assumption (or x29828 x3891)
+:assumption (or x10414 (not x21450))
+:assumption (or (not x25250) (not x7728))
+:assumption (or x27027 (not x21210))
+:assumption (or x23552 (not x27998))
+:assumption (or x21815 x2342)
+:assumption (or x30734 x21811 x8728)
+:assumption (or x702 x17359)
+:assumption (or x19474 (not x16490))
+:assumption (or (not x20529) x3614)
+:assumption (or x13576 x13220 (not x11792))
+:assumption (or (not x17359) x13607)
+:assumption (or (not x6723) x27417)
+:assumption (or x26652 (not x21547))
+:assumption (or (not x4929) (not x3405))
+:assumption (or (not x14867) (not x5655))
+:assumption (or (not x20402) (not x8067))
+:assumption (or x19004 (not x22979))
+:assumption (or (not x31735) (not x23095))
+:assumption (or x30427 (not x25490))
+:assumption (or (not x18733) x24328)
+:assumption (or (not x23405) (not x22930))
+:assumption (or (not x10444) (not x12765))
+:assumption (or x25838 (not x4038))
+:assumption (or x2333 x23694)
+:assumption (or x5672 (not x13712))
+:assumption (or (not x15676) x14517)
+:assumption (or x23520 (not x2403))
+:assumption (or (not x13188) (not x9767))
+:assumption (or x12327 x30074)
+:assumption (or (not x4483) (not x2098) (not x25765) (not x31929) x31701)
+:assumption (or (not x20130) (not x12989))
+:assumption (or x24631 x4393)
+:assumption (or (not x930) (not x17281))
+:assumption (or x18264 (not x12923))
+:assumption (or (not x6746) (not x16725))
+:assumption (or (not x7280) (not x9015))
+:assumption (or x9541 (not x12250))
+:assumption (or x8002 x3424 (not x3536) x23244)
+:assumption (or x15816 x11394)
+:assumption (or (not x21568) x7124 (not x11399) x10730 x14510 (not x15836))
+:assumption (or (not x30122) (not x15863))
+:assumption (or x29694 (not x1580))
+:assumption (or (not x4504) x24659)
+:assumption (or (not x10729) (not x13407) (not x18016))
+:assumption (or (not x1393) (not x18986))
+:assumption (or (not x22874) x2676)
+:assumption (or x9008 x17902)
+:assumption (or (not x3782) (not x26380))
+:assumption (or x142 x6386 x22855 x6036)
+:assumption (or x288 (not x20112) (not x28973) (not x8131))
+:assumption (or x2011 (not x10891) (not x10513) (not x3782) x11066)
+:assumption (or (not x8047) x13253)
+:assumption (or (not x31721) x29217)
+:assumption (or x26734 x18477 (not x12201) x27297 x23936 (not x12988) x2865 x30563)
+:assumption (or (not x29607) (not x14886))
+:assumption (or (not x22284) (not x6969))
+:assumption (or (not x30107) x21143 x1393)
+:assumption (or (not x18274) (not x11015))
+:assumption (or x14591 (not x30073))
+:assumption (or x13474 x10656)
+:assumption (or x7940 (not x31617))
+:assumption (or (not x27584) (not x14340) x4887 x154 (not x10254) (not x14407))
+:assumption (or (not x21909) (not x31876))
+:assumption (or (not x3612) (not x9535))
+:assumption (or x30437 x12286)
+:assumption (or x26353 (not x30778))
+:assumption (or (not x6367) (not x13772))
+:assumption (or (not x8326) (not x1776))
+:assumption (or (not x10362) (not x20824))
+:assumption (or (not x6934) (not x31144))
+:assumption (or x16182 (not x11338))
+:assumption (or (not x22603) x8427)
+:assumption (or (not x8057) x9008 x21236)
+:assumption (or x9147 (not x21698))
+:assumption (or (not x734) (not x27383))
+:assumption (or (not x16252) x24227)
+:assumption (or (not x6249) (not x23565))
+:assumption (or x1773 (not x26551))
+:assumption (or (not x21298) x24563)
+:assumption (or x17359 (not x17371) x24677)
+:assumption (or x20087 (not x22583) x5917 x16510 (not x291))
+:assumption (or x21605 (not x3860))
+:assumption (or (not x29614) (not x17359))
+:assumption (or (not x22078) x19825)
+:assumption (or x3235 x4125)
+:assumption (or x23529 (not x30271) (not x27466) x6243)
+:assumption (or x30587 x17162)
+:assumption (or x14572 x13735 x7584 x15917)
+:assumption (or (not x16983) x30432)
+:assumption (or (not x2500) x13474)
+:assumption (or x3150 (not x13471))
+:assumption (or (not x12565) (not x1535) x31903 x31392 x3521 (not x8710) x6609 x26479)
+:assumption (or x13205 x19453)
+:assumption (or x1654 x25229)
+:assumption (or (not x20280) (not x16025))
+:assumption (or (not x13641) (not x9554))
+:assumption (or x11916 x6444)
+:assumption (or (not x22563) (not x11170))
+:assumption (or (not x16906) (not x20357))
+:assumption (or x16431 (not x13576))
+:assumption (or x19877 x5572)
+:assumption (or (not x4204) (not x110))
+:assumption (or x10028 (not x5195))
+:assumption (or x4291 (not x16521))
+:assumption (or x20988 (not x20885))
+:assumption (or x4090 (not x7207))
+:assumption (or x18982 x21192)
+:assumption (or (not x27510) (not x2240))
+:assumption (or x30911 x26897)
+:assumption (or x1922 (not x20380) x13999 x12652 x6933 (not x18271) (not x18893) x18287 x14754 (not x29129))
+:assumption (or (not x14749) x7259)
+:assumption (or (not x2829) (not x25665))
+:assumption (or x24798 (not x8979) x7856)
+:assumption (or (not x4440) x13230)
+:assumption (or (not x3154) x25294)
+:assumption (or x28487 (not x26258))
+:assumption (or x19154 (not x17207) (not x4058))
+:assumption (or (not x17780) x2367)
+:assumption (or x11729 (not x12930))
+:assumption (or x19692 x3039)
+:assumption (or (not x20325) x22872)
+:assumption (or (not x6244) x10427)
+:assumption (or x24383 (not x2133))
+:assumption (or x10733 (not x9305))
+:assumption (or (not x7390) x27419)
+:assumption (or (not x101) (not x2601) (not x27883) (not x4138) x20739 x28557 x12675 (not x18780))
+:assumption (or x3063 x26079 x28328 (not x19158))
+:assumption (or x18922 (not x25914))
+:assumption (or (not x11969) x16576)
+:assumption (or (not x3494) x18069 x10998 (not x4000))
+:assumption (or x12438 (not x9246))
+:assumption (or (not x10882) x15866)
+:assumption (or (not x29524) x704)
+:assumption (or (not x6637) (not x7981))
+:assumption (or x6339 (not x325))
+:assumption (or (not x24107) (not x27211))
+:assumption (or x22146 (not x23244))
+:assumption (or (not x22127) (not x23484))
+:assumption (or (not x1542) x26152)
+:assumption (or (not x9855) (not x11799))
+:assumption (or x20609 (not x4882))
+:assumption (or x19114 x3431)
+:assumption (or (not x23798) x31726)
+:assumption (or (not x23032) x29379)
+:assumption (or (not x21125) x3814)
+:assumption (or (not x22856) (not x30121))
+:assumption (or x9625 (not x3232))
+:assumption (or x9946 (not x27738))
+:assumption (or (not x8503) (not x19221))
+:assumption (or x7504 x25263 (not x10838) (not x16510) x24989 x10055)
+:assumption (or x26061 (not x28439) x26016 x30400 x21833 x21208)
+:assumption (or (not x20422) (not x17617))
+:assumption (or x26160 (not x31916))
+:assumption (or (not x21990) x4766)
+:assumption (or x2813 (not x9991))
+:assumption (or x3915 x10450)
+:assumption (or (not x20587) x4081)
+:assumption (or x11281 (not x15509))
+:assumption (or x8241 (not x16082))
+:assumption (or (not x25383) x14820)
+:assumption (or (not x6733) (not x8002))
+:assumption (or x4350 (not x8522))
+:assumption (or (not x22363) (not x19539))
+:assumption (or (not x16467) x148)
+:assumption (or x20030 (not x26175) (not x15443))
+:assumption (or x21485 x20550 x21282 x21266 (not x26383) x19876)
+:assumption (or (not x16374) x24299)
+:assumption (or x11202 x25183)
+:assumption (or x25835 x24672 (not x31114))
+:assumption (or (not x31616) (not x27627))
+:assumption (or (not x79) (not x9065) (not x16304) (not x29760) x16510)
+:assumption (or x24618 x16189)
+:assumption (or x24546 (not x12332))
+:assumption (or (not x20402) (not x25469) (not x14641))
+:assumption (or x14954 (not x26071))
+:assumption (or x20283 (not x11543))
+:assumption (or (not x15096) x28001)
+:assumption (or (not x30113) (not x789) x5861 x22115)
+:assumption (or (not x22189) (not x18203))
+:assumption (or x20066 (not x24901) x9531)
+:assumption (or (not x9807) x1058 (not x16025))
+:assumption (or (not x15475) x29298)
+:assumption (or x5846 (not x7782) (not x30642))
+:assumption (or x12848 x7052)
+:assumption (or x16025 (not x19955))
+:assumption (or x11506 x27012 (not x19574))
+:assumption (or (not x22602) x31612)
+:assumption (or x19764 (not x9875))
+:assumption (or (not x12847) (not x2943))
+:assumption (or (not x9180) (not x2228) (not x30762) x24289 x14689)
+:assumption (or x24205 x29253)
+:assumption (or x2597 x17225)
+:assumption (or x19992 (not x11346))
+:assumption (or (not x363) (not x18615))
+:assumption (or x2749 x22637)
+:assumption (or x4709 x23735)
+:assumption (or (not x4148) (not x24633))
+:assumption (or x16855 (not x6853))
+:assumption (or (not x9131) (not x8421))
+:assumption (or x4064 x10375)
+:assumption (or (not x18234) (not x8718))
+:assumption (or (not x14029) x21417)
+:assumption (or (not x8309) x5394 x27722 (not x29298) x17480 x26249 (not x27090))
+:assumption (or x10049 x18766)
+:assumption (or x17775 (not x14455) x24079 (not x27589) (not x16374))
+:assumption (or x2293 (not x4074))
+:assumption (or (not x5282) x12133)
+:assumption (or (not x1703) (not x23517))
+:assumption (or x6650 (not x28569))
+:assumption (or (not x9629) (not x18936))
+:assumption (or x28989 (not x25276))
+:assumption (or x5528 x10102 (not x26810))
+:assumption (or (not x17855) x10716)
+:assumption (or (not x2248) (not x13623))
+:assumption (or x22380 x17047)
+:assumption (or (not x15240) x4825)
+:assumption (or (not x20576) x29724)
+:assumption (or (not x12890) (not x21962))
+:assumption (or x14839 (not x12623))
+:assumption (or (not x19056) (not x7643))
+:assumption (or x26851 x31018 (not x8332) x11195 x27987 (not x13372) x706 x11052)
+:assumption (or x17152 x18983)
+:assumption (or (not x22753) (not x4255))
+:assumption (or x29960 (not x6010))
+:assumption (or x21584 (not x30473))
+:assumption (or x7875 x9424)
+:assumption (or (not x8648) (not x8079))
+:assumption (or (not x953) (not x10360))
+:assumption (or (not x24484) x12235)
+:assumption (or x19864 (not x30808))
+:assumption (or (not x31767) (not x6334) x17338 x15340)
+:assumption (or (not x6475) (not x26947))
+:assumption (or x23820 (not x13669))
+:assumption (or x13317 (not x24573))
+:assumption (or x9483 x7273)
+:assumption (or (not x25694) x8613)
+:assumption (or (not x28926) (not x1971))
+:assumption (or (not x24556) x27191)
+:assumption (or x4740 x30645)
+:assumption (or x2099 x23561)
+:assumption (or (not x17401) x1752)
+:assumption (or x13956 (not x23540))
+:assumption (or x4510 (not x28570))
+:assumption (or x7451 x6841)
+:assumption (or (not x9478) (not x14347))
+:assumption (or x9934 (not x20539))
+:assumption (or (not x23371) x7651)
+:assumption (or x27440 (not x20494))
+:assumption (or x4480 (not x12986))
+:assumption (or (not x25050) (not x20949))
+:assumption (or x17326 x2227 (not x14053) x1775 (not x687))
+:assumption (or (not x8367) (not x70))
+:assumption (or x16762 x21815)
+:assumption (or x15599 (not x25793))
+:assumption (or (not x5329) x24713)
+:assumption (or (not x22795) (not x26009))
+:assumption (or (not x29038) (not x20463))
+:assumption (or x8807 (not x23629) (not x30926))
+:assumption (or x2370 x2528)
+:assumption (or x25342 (not x5064))
+:assumption (or x30664 (not x17791))
+:assumption (or x30493 x7200)
+:assumption (or x4026 x21086)
+:assumption (or x3192 (not x7222))
+:assumption (or (not x19398) (not x24211) x12199 x24184)
+:assumption (or (not x18584) (not x4842) x15649)
+:assumption (or x3406 (not x22854))
+:assumption (or x6128 (not x18723) x13113)
+:assumption (or x10278 x28314 x19852)
+:assumption (or (not x25586) (not x2059) (not x29113) (not x25080) (not x15072) x18604 x30718 (not x4960))
+:assumption (or x30208 (not x9201))
+:assumption (or (not x8002) (not x284))
+:assumption (or (not x28903) x11906)
+:assumption (or x30084 x11634 x21014 (not x21298))
+:assumption (or (not x1565) x11528)
+:assumption (or (not x480) x26472)
+:assumption (or (not x22238) x6206)
+:assumption (or x12910 x27558)
+:assumption (or x28591 x8468)
+:assumption (or x11043 (not x20999))
+:assumption (or x23399 x9931)
+:assumption (or x2863 x30524)
+:assumption (or (not x26612) (not x949))
+:assumption (or (not x23244) (not x24831))
+:assumption (or x10858 x30173 (not x8951) (not x15460) x19560 (not x21705))
+:assumption (or (not x4630) x31317 (not x21411) (not x7762) x5820)
+:assumption (or x6466 (not x2017))
+:assumption (or x28566 x12674)
+:assumption (or x28743 x16674 x16582)
+:assumption (or x21387 (not x12323))
+:assumption (or x27760 x17461)
+:assumption (or (not x17468) x26042)
+:assumption (or x2584 (not x3399))
+:assumption (or x11225 (not x1818) x16257 x4033 (not x19173) x21253 (not x28919) (not x23905) (not x31187))
+:assumption (or (not x16218) x4141)
+:assumption (or x26146 x8873)
+:assumption (or (not x9531) (not x31003))
+:assumption (or (not x7012) x25132)
+:assumption (or (not x31523) (not x3670))
+:assumption (or (not x8602) (not x16376))
+:assumption (or (not x13236) x29034 x8002 x10378 (not x10107) (not x24464))
+:assumption (or x30786 (not x25310))
+:assumption (or (not x29322) x2640)
+:assumption (or x19223 x22086 (not x1790))
+:assumption (or (not x23856) (not x10883))
+:assumption (or (not x7573) x9686)
+:assumption (or (not x14948) (not x9057))
+:assumption (or x18313 (not x1093))
+:assumption (or x12978 (not x27114))
+:assumption (or x2861 (not x5512))
+:assumption (or x20651 x27012 (not x4171))
+:assumption (or (not x20887) (not x10082))
+:assumption (or x15238 (not x17719))
+:assumption (or (not x20674) x15988)
+:assumption (or x12807 x24346)
+:assumption (or x27571 (not x12299))
+:assumption (or (not x15630) (not x7972))
+:assumption (or x3522 x24050)
+:assumption (or x8842 (not x24968))
+:assumption (or (not x12449) (not x30322))
+:assumption (or x15250 x26761)
+:assumption (or (not x26252) x5846 x19284)
+:assumption (or (not x6279) (not x69))
+:assumption (or x22495 x28736)
+:assumption (or (not x29626) (not x29116))
+:assumption (or x16367 (not x15861))
+:assumption (or x15229 (not x17196))
+:assumption (or (not x14489) (not x4027))
+:assumption (or (not x4117) x8532 (not x1477))
+:assumption (or (not x20742) x9953)
+:assumption (or x9971 (not x3359))
+:assumption (or (not x3160) x27903 x17075 (not x12194))
+:assumption (or (not x16850) (not x13589))
+:assumption (or (not x17289) x26067)
+:assumption (or (not x24757) (not x18364))
+:assumption (or x3118 (not x10506))
+:assumption (or (not x12324) x19684)
+:assumption (or x19433 (not x8574))
+:assumption (or x16590 x25139)
+:assumption (or x13943 x14887)
+:assumption (or (not x8860) (not x906) x9236)
+:assumption (or x5528 x25657)
+:assumption (or x8431 (not x13375))
+:assumption (or (not x10600) (not x21789))
+:assumption (or (not x28441) x3667)
+:assumption (or x1247 x4037)
+:assumption (or (not x27649) x20900 x7854 x31734)
+:assumption (or (not x18498) (not x21026) x14201)
+:assumption (or x27422 (not x29594))
+:assumption (or x23399 (not x5860))
+:assumption (or (not x11161) (not x10909))
+:assumption (or x22334 x19075)
+:assumption (or x11857 (not x14717))
+:assumption (or (not x30648) x12352)
+:assumption (or (not x16797) (not x18709))
+:assumption (or x25982 x31577)
+:assumption (or (not x29445) x30012)
+:assumption (or x17852 (not x9290))
+:assumption (or (not x23595) (not x31712))
+:assumption (or (not x6177) (not x22857))
+:assumption (or x20015 x15950)
+:assumption (or (not x20162) x12471)
+:assumption (or x1346 (not x14802))
+:assumption (or x14657 (not x25330))
+:assumption (or (not x12366) (not x10399))
+:assumption (or (not x1279) x4189)
+:assumption (or (not x30611) x17855)
+:assumption (or (not x2334) (not x17796))
+:assumption (or (not x17124) (not x10861) x21298 x23633)
+:assumption (or x27941 x2347)
+:assumption (or (not x12829) (not x6009))
+:assumption (or x9107 x10766)
+:assumption (or x27537 x28912 x16994 (not x27189))
+:assumption (or x16755 (not x16510))
+:assumption (or x31182 x24875 x14232 (not x20230) (not x20651) x5547 (not x16930))
+:assumption (or x17994 (not x25687) x31891 (not x5040) (not x9989))
+:assumption (or x18859 (not x5168) (not x11523))
+:assumption (or (not x21909) x26785)
+:assumption (or (not x10916) (not x5704))
+:assumption (or x11216 (not x11945))
+:assumption (or (not x29338) (not x210))
+:assumption (or x18180 x28240)
+:assumption (or x29684 (not x13792))
+:assumption (or (not x28013) x9124)
+:assumption (or x17186 x7080)
+:assumption (or (not x23018) (not x21056))
+:assumption (or (not x12045) x6946)
+:assumption (or x17594 x21274 (not x26946) x25478 x11014 (not x15571) x19155 x23399)
+:assumption (or x17946 (not x23244))
+:assumption (or (not x21777) x8565)
+:assumption (or x1469 (not x3298))
+:assumption (or (not x7946) x30644)
+:assumption (or x15977 x2014)
+:assumption (or (not x13626) (not x9631) (not x23399) (not x5359))
+:assumption (or (not x29491) (not x28364) x13956)
+:assumption (or x27473 (not x29819))
+:assumption (or (not x24933) x5970 x30804 x30173 (not x26262))
+:assumption (or x7198 (not x25516))
+:assumption (or x11253 x18896)
+:assumption (or (not x15945) x5419)
+:assumption (or (not x6297) x19349)
+:assumption (or (not x16510) x16678)
+:assumption (or x16072 x18628)
+:assumption (or x23247 x29206)
+:assumption (or (not x15456) x2993 x1415 (not x11489) (not x11778) (not x18212))
+:assumption (or x16309 (not x13301))
+:assumption (or x15064 (not x13510))
+:assumption (or x23040 x18567)
+:assumption (or (not x17683) x25366 x21206)
+:assumption (or (not x25787) x7314)
+:assumption (or (not x2296) (not x31013))
+:assumption (or x14891 x28476)
+:assumption (or (not x4178) (not x9127))
+:assumption (or x19564 (not x28223))
+:assumption (or (not x14814) (not x303) (not x18002))
+:assumption (or x26699 x21346)
+:assumption (or (not x21671) (not x25075))
+:assumption (or x11224 (not x8484))
+:assumption (or x22208 (not x4753))
+:assumption (or (not x29038) x10234)
+:assumption (or x26733 x25031)
+:assumption (or x26907 x1060)
+:assumption (or x29442 (not x16576))
+:assumption (or (not x26731) (not x5581))
+:assumption (or x11771 x28537)
+:assumption (or (not x25315) x5280)
+:assumption (or x15609 (not x20336))
+:assumption (or x18179 (not x25063))
+:assumption (or (not x29095) (not x31263))
+:assumption (or (not x23269) x13407)
+:assumption (or x16192 (not x7289))
+:assumption (or x8010 (not x1338) x22284)
+:assumption (or (not x21487) x3494 x20552 x25766 x9662 (not x31860) (not x21367) x13923)
+:assumption (or (not x22651) x28125)
+:assumption (or (not x9050) (not x12466))
+:assumption (or x3858 x3563)
+:assumption (or x29875 (not x21291))
+:assumption (or (not x15153) x8214)
+:assumption (or (not x16815) (not x28826))
+:assumption (or x654 (not x12134))
+:assumption (or (not x3767) (not x16003) x2701)
+:assumption (or (not x31545) (not x13956))
+:assumption (or x20099 (not x27614))
+:assumption (or (not x30709) x31178)
+:assumption (or x22266 x26650 (not x28732) (not x19036))
+:assumption (or (not x20644) x298)
+:assumption (or (not x7075) (not x12461))
+:assumption (or x25911 x8811)
+:assumption (or (not x27043) x2598)
+:assumption (or x16227 (not x13376))
+:assumption (or (not x18914) x14931)
+:assumption (or x29213 x2037)
+:assumption (or x7627 (not x9233))
+:assumption (or x31327 x27666)
+:assumption (or (not x18042) (not x9025) (not x27435))
+:assumption (or (not x11442) x25785)
+:assumption (or (not x27474) x26341)
+:assumption (or (not x14721) (not x21126))
+:assumption (or x21250 (not x24249))
+:assumption (or x13383 (not x26284))
+:assumption (or (not x11802) (not x9916))
+:assumption (or x9675 x13291)
+:assumption (or (not x5528) (not x31410))
+:assumption (or (not x4337) x14404)
+:assumption (or x25844 (not x19465))
+:assumption (or (not x24933) x8951 (not x15460) (not x21705) (not x10858) x19560)
+:assumption (or x31014 x31516)
+:assumption (or (not x16346) (not x28682))
+:assumption (or x20261 x17522)
+:assumption (or (not x7957) x4764)
+:assumption (or x119 x3396)
+:assumption (or x27301 x22866)
+:assumption (or (not x19510) x26259 (not x25797))
+:assumption (or x19524 (not x20549))
+:assumption (or (not x26897) x29410)
+:assumption (or (not x2828) (not x19442))
+:assumption (or (not x22028) x20087)
+:assumption (or (not x2201) x20994)
+:assumption (or x27993 (not x9262))
+:assumption (or (not x6366) x11989)
+:assumption (or x30370 x22585)
+:assumption (or x29685 (not x27780))
+:assumption (or (not x14713) x11472)
+:assumption (or x23279 x19292 x30110)
+:assumption (or (not x29771) x10568)
+:assumption (or (not x9990) (not x3531))
+:assumption (or x4324 x29392)
+:assumption (or x15841 (not x28086))
+:assumption (or x22626 (not x20335) (not x22531))
+:assumption (or x7409 x6383)
+:assumption (or (not x25659) (not x1516))
+:assumption (or (not x9868) (not x20087))
+:assumption (or (not x2956) x14438)
+:assumption (or x31444 (not x13159))
+:assumption (or x26454 (not x17935))
+:assumption (or x16619 x7919)
+:assumption (or (not x22088) x27881 x23299 (not x28042) x24370)
+:assumption (or x11419 (not x23141))
+:assumption (or x24952 (not x11314))
+:assumption (or x22448 (not x18003))
+:assumption (or (not x14488) (not x2765))
+:assumption (or (not x28865) x16025)
+:assumption (or (not x30116) x23638 (not x22474))
+:assumption (or (not x11116) (not x888))
+:assumption (or (not x4496) (not x16439) x6871 x6297 (not x12060) (not x21737))
+:assumption (or x9119 x5625)
+:assumption (or x20148 (not x17))
+:assumption (or (not x11872) x27915 x8574)
+:assumption (or x10931 x18767)
+:assumption (or (not x10735) (not x2012))
+:assumption (or (not x1355) (not x27660))
+:assumption (or x14270 x11547)
+:assumption (or (not x27982) (not x23472))
+:assumption (or (not x18573) (not x28570))
+:assumption (or x2717 (not x8527))
+:assumption (or x8833 (not x16025))
+:assumption (or (not x15907) (not x28413))
+:assumption (or (not x20073) (not x21621))
+:assumption (or (not x15629) x28815)
+:assumption (or x17763 (not x23364))
+:assumption (or x7626 (not x27203) (not x14981))
+:assumption (or (not x23224) (not x14089) x22963)
+:assumption (or (not x30738) (not x10326) x12131 (not x8951))
+:assumption (or (not x5528) x21502 (not x9008) (not x23024) x9585)
+:assumption (or (not x11141) (not x25730))
+:assumption (or (not x809) x2316)
+:assumption (or x25249 x13280 (not x20949) x27333 (not x10156) (not x3930))
+:assumption (or x25225 x15330)
+:assumption (or x23730 (not x3807))
+:assumption (or (not x24759) (not x14839) x30776)
+:assumption (or (not x23022) x4457)
+:assumption (or x9412 x499)
+:assumption (or x13665 x9250)
+:assumption (or x5038 x8549 (not x26859))
+:assumption (or (not x24942) (not x25659))
+:assumption (or (not x2746) (not x20930))
+:assumption (or x13810 (not x8627))
+:assumption (or x13308 x29849)
+:assumption (or x278 (not x7949))
+:assumption (or (not x7601) x29157)
+:assumption (or x8473 x8337 x3716 (not x19122) x15647 (not x17401) x26964)
+:assumption (or (not x24155) x20146)
+:assumption (or (not x29376) (not x536))
+:assumption (or (not x31316) x6842)
+:assumption (or x1304 x3976)
+:assumption (or (not x23567) x18590 x29691 (not x28912))
+:assumption (or x3494 (not x21779))
+:assumption (or (not x30541) (not x4747))
+:assumption (or (not x2976) x20353 x25494 x24545 (not x23969) x21815)
+:assumption (or (not x5394) (not x762) x2240 x29013)
+:assumption (or (not x15435) (not x27614))
+:assumption (or x15847 (not x9008))
+:assumption (or (not x30151) (not x20297))
+:assumption (or (not x11281) x17359 (not x14345) (not x23816))
+:assumption (or (not x9084) x20795)
+:assumption (or (not x21962) x26807)
+:assumption (or x23524 x28185)
+:assumption (or (not x23820) x13669)
+:assumption (or (not x15002) (not x18916) x14730 (not x31083) (not x11280) x23184 x13045 x5526 (not x6669))
+:assumption (or (not x16449) (not x10778))
+:assumption (or x25741 (not x12210))
+:assumption (or x30578 (not x21863))
+:assumption (or (not x25626) (not x9008) (not x16663))
+:assumption (or x9090 (not x10806) (not x30794) x6207)
+:assumption (or x27558 (not x18937))
+:assumption (or (not x8325) (not x30327))
+:assumption (or x19216 (not x13957))
+:assumption (or x24066 (not x7904))
+:assumption (or x20540 (not x27059))
+:assumption (or (not x19381) (not x25219))
+:assumption (or x5634 (not x12279))
+:assumption (or (not x31913) x11464)
+:assumption (or x24375 x10574 x827)
+:assumption (or (not x2985) x3212 x20482)
+:assumption (or x6911 (not x13781) (not x19183) (not x24872))
+:assumption (or x19592 x2411)
+:assumption (or (not x12389) (not x29507) x24608 (not x28433))
+:assumption (or (not x3546) x12637)
+:assumption (or (not x10149) (not x11360))
+:assumption (or (not x14473) (not x30208))
+:assumption (or (not x21741) x14728)
+:assumption (or (not x11099) x28061)
+:assumption (or x16084 (not x9309) x13731 (not x10714) (not x9509) x7854 (not x19917))
+:assumption (or (not x31725) (not x30482))
+:assumption (or (not x29857) (not x23556))
+:assumption (or x3334 (not x9995))
+:assumption (or x3819 (not x22281) x16232 x22502 (not x7645) x1813 (not x10277) x7927)
+:assumption (or x4378 x6269)
+:assumption (or (not x24509) x15418)
+:assumption (or x29092 (not x18915))
+:assumption (or x6746 x6310)
+:assumption (or (not x2149) x30138)
+:assumption (or (not x1888) x27287)
+:assumption (or (not x711) x14202 x23510)
+:assumption (or (not x4502) x18164)
+:assumption (or (not x29010) (not x4221))
+:assumption (or (not x22677) (not x31369))
+:assumption (or (not x4836) (not x18399))
+:assumption (or x21298 (not x25636))
+:assumption (or x25616 x16722)
+:assumption (or x16105 (not x21431))
+:assumption (or (not x24356) (not x30242))
+:assumption (or x1815 x7338)
+:assumption (or x3828 (not x9645))
+:assumption (or (not x566) x10639)
+:assumption (or x25659 (not x27136))
+:assumption (or (not x22825) (not x16084))
+:assumption (or (not x8002) x4894)
+:assumption (or (not x18577) x9877)
+:assumption (or (not x6415) (not x28610) (not x5803) x1865 (not x6607))
+:assumption (or x21808 x30946)
+:assumption (or x22245 (not x21578))
+:assumption (or (not x1479) x23590)
+:assumption (or (not x31008) (not x30982))
+:assumption (or (not x24091) x465)
+:assumption (or (not x28885) (not x4007))
+:assumption (or (not x4508) (not x7421))
+:assumption (or x2293 (not x1804))
+:assumption (or (not x5022) x8602)
+:assumption (or x31567 x24722 x24906)
+:assumption (or (not x8574) (not x17198))
+:assumption (or x23669 x22454 x4035 x11996)
+:assumption (or (not x14804) (not x8002))
+:assumption (or (not x13076) x27804 (not x28408) (not x6920))
+:assumption (or x12184 (not x27349))
+:assumption (or x18258 x7965)
+:assumption (or x23769 x17360)
+:assumption (or (not x27413) (not x4491))
+:assumption (or x20526 (not x8788))
+:assumption (or x22356 x29760)
+:assumption (or (not x14839) (not x6941))
+:assumption (or (not x5824) (not x20010))
+:assumption (or x15081 x29312)
+:assumption (or x5238 x13161 x14687)
+:assumption (or (not x26754) x21690)
+:assumption (or x16541 (not x1393) x7952)
+:assumption (or x7347 (not x23244) x762)
+:assumption (or (not x25434) x20989)
+:assumption (or (not x62) (not x13987))
+:assumption (or (not x8002) (not x3052))
+:assumption (or x3157 x4323)
+:assumption (or x12119 x28374)
+:assumption (or (not x28938) x12231)
+:assumption (or (not x10577) (not x15681))
+:assumption (or (not x13411) x22130)
+:assumption (or (not x93) (not x15534))
+:assumption (or x19116 x15735)
+:assumption (or x23958 (not x21828) x19103 x19305)
+:assumption (or x9980 x4248 x28796 (not x17209))
+:assumption (or (not x7369) (not x11167))
+:assumption (or (not x4363) x13018)
+:assumption (or x13600 x16460)
+:assumption (or x27518 x7936)
+:assumption (or (not x18994) x25108)
+:assumption (or x5650 x10912)
+:assumption (or (not x30703) (not x28328))
+:assumption (or x31765 (not x5452))
+:assumption (or x13630 (not x21298))
+:assumption (or (not x24936) (not x14073))
+:assumption (or (not x4365) x1429)
+:assumption (or x2667 (not x24761) x13703)
+:assumption (or (not x8970) x21783)
+:assumption (or x6023 (not x7645))
+:assumption (or x16066 (not x5860))
+:assumption (or x8602 x15851)
+:assumption (or x28235 (not x17305))
+:assumption (or (not x27834) x12456)
+:assumption (or x9833 (not x13021))
+:assumption (or (not x29942) (not x6165) x25659)
+:assumption (or (not x4469) (not x20721))
+:assumption (or (not x18909) x31392 x4560 (not x25294) x7308)
+:assumption (or x13028 x8494)
+:assumption (or x26762 x754 (not x8567) x2904)
+:assumption (or x31782 x10834)
+:assumption (or (not x14968) (not x28115))
+:assumption (or (not x28347) (not x1454))
+:assumption (or (not x29959) x16678)
+:assumption (or (not x24905) (not x24051))
+:assumption (or x20735 x20553)
+:assumption (or x27788 (not x22567))
+:assumption (or x23471 (not x12509))
+:assumption (or (not x20436) (not x27683))
+:assumption (or (not x21298) (not x20377))
+:assumption (or (not x14992) x17169)
+:assumption (or x21984 (not x25994) (not x16873) (not x12293) x25862 x4236 x21298)
+:assumption (or x2235 x23511)
+:assumption (or (not x15283) x2463)
+:assumption (or x6202 (not x31289))
+:assumption (or x18569 (not x14003))
+:assumption (or (not x12045) (not x30736))
+:assumption (or (not x8002) x22384)
+:assumption (or (not x26284) (not x11092))
+:assumption (or (not x574) x14013 x30802 x27322)
+:assumption (or (not x31875) x24687)
+:assumption (or x2027 (not x15292))
+:assumption (or x18894 (not x27078))
+:assumption (or (not x24492) x18696)
+:assumption (or (not x22944) x9962)
+:assumption (or x14809 (not x15866))
+:assumption (or (not x16404) x30102)
+:assumption (or (not x31683) x8757)
+:assumption (or x20706 (not x30023))
+:assumption (or x6036 x31779 x20949 x13415 (not x12045))
+:assumption (or (not x17540) x8002)
+:assumption (or x18506 (not x2317))
+:assumption (or (not x9531) x16768)
+:assumption (or x29442 x6036 x263)
+:assumption (or (not x23181) (not x24756))
+:assumption (or (not x18203) (not x3186))
+:assumption (or (not x29364) (not x18757) (not x31722) (not x29196))
+:assumption (or (not x308) (not x8893) x17860)
+:assumption (or (not x19389) (not x1459))
+:assumption (or (not x6672) (not x18590))
+:assumption (or (not x24802) x22504)
+:assumption (or x7444 (not x17806))
+:assumption (or (not x10132) (not x16871))
+:assumption (or (not x7835) (not x12711))
+:assumption (or (not x22325) (not x2698))
+:assumption (or x5886 x11080)
+:assumption (or (not x4942) x23958 x26024 (not x1175))
+:assumption (or x5639 (not x24301))
+:assumption (or x4039 (not x10957))
+:assumption (or x3503 (not x6931))
+:assumption (or x21499 x22011)
+:assumption (or (not x25182) (not x12075))
+:assumption (or (not x23311) x31305)
+:assumption (or x1666 x17277 (not x8002))
+:assumption (or x23244 x17605)
+:assumption (or x231 (not x19662))
+:assumption (or (not x24590) (not x4644))
+:assumption (or (not x10294) (not x16838))
+:assumption (or (not x9008) (not x26810) x6577 x31782 (not x5528))
+:assumption (or (not x15053) x12235)
+:assumption (or (not x31) x27931 (not x28493) x4248)
+:assumption (or (not x6851) x24681)
+:assumption (or (not x12027) x2236 (not x12336) x31919 x43 (not x17338) (not x8766) x2362 (not x4996))
+:assumption (or x15216 (not x22481))
+:assumption (or (not x23110) x9249)
+:assumption (or x17467 x24023)
+:assumption (or (not x26979) x23616 x25507 x18694)
+:assumption (or (not x16741) x18664)
+:assumption (or x10958 x28340)
+:assumption (or (not x15895) x26141)
+:assumption (or x7208 (not x12519))
+:assumption (or x28541 x29478)
+:assumption (or (not x1627) x30836 x3662 x27307 (not x13873) (not x10959) (not x13769) (not x28314) (not x1232))
+:assumption (or x29609 (not x8658) x18399)
+:assumption (or (not x10104) x9138)
+:assumption (or x30446 (not x23909))
+:assumption (or (not x20412) x31062)
+:assumption (or x29799 (not x1124) x25614 x17699 (not x26750) (not x31178))
+:assumption (or x14305 x18694)
+:assumption (or x8312 x23869)
+:assumption (or (not x22894) x31904)
+:assumption (or (not x28852) (not x8319))
+:assumption (or x30518 x3771 (not x21298) x15299)
+:assumption (or x14993 (not x530))
+:assumption (or x21735 (not x10463))
+:assumption (or x13863 (not x12400))
+:assumption (or x25455 x13919)
+:assumption (or (not x1999) x2660)
+:assumption (or (not x14839) (not x5046) (not x13640))
+:assumption (or x16212 x30870)
+:assumption (or x29605 (not x22018))
+:assumption (or x23920 x9008)
+:assumption (or (not x13238) (not x4876))
+:assumption (or x12168 x17453)
+:assumption (or (not x20123) (not x1690))
+:assumption (or x25636 (not x22831))
+:assumption (or x31846 x18270 x20521 (not x25763) x18527 (not x5634) (not x11217) x27291)
+:assumption (or (not x1032) x25543)
+:assumption (or x14434 (not x15856))
+:assumption (or (not x26396) x22341)
+:assumption (or x774 x10874)
+:assumption (or x26293 (not x16983))
+:assumption (or (not x26720) x25143)
+:assumption (or x12226 (not x26183))
+:assumption (or (not x9651) (not x26271))
+:assumption (or x19992 x14318)
+:assumption (or x29704 x19589 x23244)
+:assumption (or x5763 (not x14973))
+:assumption (or (not x27730) x25455)
+:assumption (or x15917 (not x12746))
+:assumption (or (not x7619) x15230)
+:assumption (or x14645 (not x13487))
+:assumption (or x28242 x18087)
+:assumption (or x25659 x12270)
+:assumption (or (not x31545) (not x23244))
+:assumption (or x28833 (not x27817) (not x21298) x12779)
+:assumption (or x10934 (not x31219))
+:assumption (or x10111 x11281)
+:assumption (or (not x29062) (not x18038))
+:assumption (or (not x5108) x14305)
+:assumption (or x12081 (not x7797))
+:assumption (or (not x24078) (not x218))
+:assumption (or (not x25269) (not x23386))
+:assumption (or x28146 (not x10258))
+:assumption (or x14409 (not x6739))
+:assumption (or (not x4805) x17860)
+:assumption (or (not x7856) x8979)
+:assumption (or x5338 x20462)
+:assumption (or x10547 x7768)
+:assumption (or (not x29573) x24364)
+:assumption (or x10579 x20873)
+:assumption (or x16732 x9008 x11738)
+:assumption (or (not x14839) x1557 x31596)
+:assumption (or (not x16229) (not x13073))
+:assumption (or x27040 x30117)
+:assumption (or (not x5845) (not x27013))
+:assumption (or (not x17087) (not x7592))
+:assumption (or x14439 x8992)
+:assumption (or x12082 (not x26529) x26267 (not x23279) (not x3409) (not x9162))
+:assumption (or (not x14635) x2177)
+:assumption (or x3393 (not x17800))
+:assumption (or (not x26230) (not x5823))
+:assumption (or x2425 x12464)
+:assumption (or x8836 x15022)
+:assumption (or (not x27286) (not x10610))
+:assumption (or (not x26892) (not x26094))
+:assumption (or x18626 (not x27266))
+:assumption (or x13911 (not x1572))
+:assumption (or (not x4210) (not x22854))
+:assumption (or x17721 x2458)
+:assumption (or (not x27330) x26462)
+:assumption (or x8690 x5941)
+:assumption (or x28295 x18927)
+:assumption (or (not x18601) (not x1505))
+:assumption (or x19142 (not x1540) (not x18566))
+:assumption (or x26303 (not x25687))
+:assumption (or x118 x8404)
+:assumption (or (not x12242) x1323 x5226)
+:assumption (or x23271 x8229 (not x9243) (not x22733))
+:assumption (or (not x27663) (not x5845))
+:assumption (or (not x11397) x13801)
+:assumption (or x22112 (not x19219))
+:assumption (or (not x8229) (not x15218))
+:assumption (or x4478 (not x7070))
+:assumption (or x9864 (not x10859) (not x27350) x14761 (not x2233) x23718)
+:assumption (or (not x3844) x2217)
+:assumption (or (not x12053) (not x29778) x18209 (not x13798) (not x8300) x13956)
+:assumption (or x22531 (not x13023) (not x28576))
+:assumption (or (not x20981) x27442)
+:assumption (or (not x25567) (not x1416))
+:assumption (or x17566 (not x14054))
+:assumption (or (not x31630) x2434)
+:assumption (or x14980 x30611)
+:assumption (or x29606 (not x26763) (not x29871))
+:assumption (or x12581 (not x10156) (not x1542) x27333 x13280 (not x3930))
+:assumption (or x7469 x18739)
+:assumption (or (not x30614) x25309)
+:assumption (or x16923 (not x694))
+:assumption (or (not x11993) (not x20483))
+:assumption (or x29365 x9211 x27151)
+:assumption (or x5772 (not x21632))
+:assumption (or x24239 (not x13956) (not x31180))
+:assumption (or (not x15386) x17567)
+:assumption (or x5072 (not x30751) (not x16940))
+:assumption (or (not x31845) (not x30452))
+:assumption (or x20591 x23757)
+:assumption (or (not x5861) (not x5116))
+:assumption (or (not x6957) x23612 (not x16304) x24346 x974)
+:assumption (or x30367 x13149)
+:assumption (or (not x11065) x827)
+:assumption (or (not x10339) (not x16638))
+:assumption (or (not x27141) (not x21188))
+:assumption (or (not x23143) x17736)
+:assumption (or x20541 x7695)
+:assumption (or x22812 (not x17072))
+:assumption (or x18935 (not x18947))
+:assumption (or (not x6951) (not x1795))
+:assumption (or (not x16140) x27962)
+:assumption (or x8900 x20642)
+:assumption (or x18546 (not x24493))
+:assumption (or x18905 (not x16411) x19345 x7849 (not x10047))
+:assumption (or (not x5653) (not x17630))
+:assumption (or (not x9861) x675)
+:assumption (or (not x5528) (not x9008) (not x12420) (not x16458) x14649)
+:assumption (or (not x27910) x16042)
+:assumption (or (not x22713) x11248)
+:assumption (or x827 x17947)
+:assumption (or x9687 x27762)
+:assumption (or x27268 (not x25376) (not x2467) (not x182) (not x5707) x14829)
+:assumption (or x25845 x4615)
+:assumption (or x12872 (not x30931))
+:assumption (or x9393 (not x22676))
+:assumption (or x23818 x26488)
+:assumption (or (not x25949) x14907)
+:assumption (or (not x4230) (not x8209) x4348 (not x31660))
+:assumption (or x27225 x18702)
+:assumption (or (not x17354) x827 (not x8356))
+:assumption (or (not x12771) (not x26337))
+:assumption (or x29423 x19425)
+:assumption (or x2217 (not x23702))
+:assumption (or (not x19845) x25685)
+:assumption (or (not x31005) (not x30357))
+:assumption (or (not x16248) x17256)
+:assumption (or (not x24545) x2976)
+:assumption (or x4536 (not x16227))
+:assumption (or x8771 x28763)
+:assumption (or x24429 x23538)
+:assumption (or x27147 x10723)
+:assumption (or x11422 (not x10822))
+:assumption (or x28790 x30015 (not x5604) (not x8691) (not x13956) (not x11911) x6207)
+:assumption (or x1582 x17677)
+:assumption (or (not x21771) (not x27438))
+:assumption (or (not x15395) x2818)
+:assumption (or x25335 (not x26828))
+:assumption (or (not x24345) (not x17855))
+:assumption (or (not x600) (not x7112))
+:assumption (or (not x23383) (not x11278))
+:assumption (or (not x17211) (not x24021))
+:assumption (or x2515 (not x28471))
+:assumption (or x7331 x27964)
+:assumption (or x31281 x26402)
+:assumption (or (not x16244) (not x2525))
+:assumption (or (not x2064) x23738)
+:assumption (or x2452 x31492)
+:assumption (or x986 x12045)
+:assumption (or (not x18033) x18953)
+:assumption (or x6943 (not x8147))
+:assumption (or x10060 (not x8784))
+:assumption (or (not x25798) (not x21187))
+:assumption (or x17967 x8014 x15887)
+:assumption (or (not x13315) x5025)
+:assumption (or (not x10510) x724)
+:assumption (or (not x28260) x22391 (not x10879) (not x17225))
+:assumption (or x17616 (not x28121))
+:assumption (or x23929 (not x25659))
+:assumption (or (not x9771) (not x12134))
+:assumption (or (not x25659) x21228)
+:assumption (or x19212 x28256)
+:assumption (or (not x10585) (not x3826))
+:assumption (or x27367 x16114)
+:assumption (or (not x28902) (not x20973) (not x13758) (not x14357))
+:assumption (or x5997 (not x7220))
+:assumption (or (not x10149) (not x19146))
+:assumption (or (not x14316) x26806 (not x30389) (not x25295) (not x13419))
+:assumption (or x14132 (not x5133))
+:assumption (or (not x226) (not x17734))
+:assumption (or x11783 (not x6801) (not x19866))
+:assumption (or x2574 (not x13147) (not x30296))
+:assumption (or (not x16510) (not x18469) x6193 x21681 x28949 (not x3098))
+:assumption (or x27620 x16205)
+:assumption (or (not x9249) x2547)
+:assumption (or (not x8208) x24022)
+:assumption (or (not x20325) x30404 x11101)
+:assumption (or (not x29931) (not x22376))
+:assumption (or x10044 x18013)
+:assumption (or (not x4234) x31629)
+:assumption (or (not x16910) (not x26871) (not x2701))
+:assumption (or (not x17424) (not x10996))
+:assumption (or (not x3801) (not x31700))
+:assumption (or (not x20683) x26638)
+:assumption (or (not x27537) (not x31680))
+:assumption (or (not x7379) (not x810))
+:assumption (or x19369 x10993)
+:assumption (or x22844 (not x465) (not x12736))
+:assumption (or x13956 x23244 (not x22146) x8002 (not x27359) (not x8724))
+:assumption (or x21809 (not x15975))
+:assumption (or x2627 (not x6384))
+:assumption (or (not x25281) (not x11475) x2792 x17100 (not x14132) (not x25183) x13818 x1668 (not x28677))
+:assumption (or x18879 (not x14033))
+:assumption (or (not x22919) (not x21290) (not x6942))
+:assumption (or (not x8002) (not x28976))
+:assumption (or x4378 x7523)
+:assumption (or (not x1892) (not x6619))
+:assumption (or x30708 x21815)
+:assumption (or x22822 (not x26230))
+:assumption (or (not x28471) x24885)
+:assumption (or x20644 x27040)
+:assumption (or (not x26910) (not x28147) (not x6243) (not x10815))
+:assumption (or (not x2366) (not x28055))
+:assumption (or x26949 x1240)
+:assumption (or x30177 (not x8658))
+:assumption (or (not x7719) x26892 (not x21219))
+:assumption (or (not x2226) (not x28387))
+:assumption (or x28885 x4981)
+:assumption (or x86 x22593)
+:assumption (or x9745 (not x18071))
+:assumption (or (not x8515) (not x13194))
+:assumption (or (not x14531) x8742)
+:assumption (or x15297 (not x14515))
+:assumption (or x14455 (not x16374) (not x8569) (not x23278))
+:assumption (or (not x16401) x16510)
+:assumption (or x28486 (not x9758))
+:assumption (or (not x23909) x17110)
+:assumption (or (not x218) (not x19669) x5927)
+:assumption (or x17585 x4905)
+:assumption (or (not x6098) x2065 x7585 (not x25103) x24675)
+:assumption (or (not x30751) (not x13034) x12083)
+:assumption (or x22278 x17332)
+:assumption (or x917 (not x31204))
+:assumption (or (not x1525) x18335)
+:assumption (or (not x14406) x7633 x27554 x30167 (not x25290) (not x16510))
+:assumption (or (not x4632) (not x6465))
+:assumption (or x27171 x22016)
+:assumption (or (not x30124) (not x31584) (not x9025))
+:assumption (or x10999 (not x20042) (not x9790) (not x9008) (not x5528))
+:assumption (or (not x24626) x10243)
+:assumption (or x934 x20375)
+:assumption (or x18069 (not x27417))
+:assumption (or x17434 (not x10663))
+:assumption (or (not x19999) (not x15498) (not x25659))
+:assumption (or x28681 x8028)
+:assumption (or x23428 (not x10859))
+:assumption (or (not x29882) (not x20460))
+:assumption (or x15461 (not x5620))
+:assumption (or (not x30795) x3519)
+:assumption (or (not x6455) (not x13896))
+:assumption (or x923 x4531)
+:assumption (or (not x1684) (not x11662))
+:assumption (or x4547 x26450)
+:assumption (or x252 x3805)
+:assumption (or x525 (not x18464) (not x23244))
+:assumption (or (not x14492) (not x29327))
+:assumption (or x16881 x9848)
+:assumption (or (not x23652) (not x5577))
+:assumption (or (not x24058) x20451)
+:assumption (or x20876 x6537)
+:assumption (or (not x25647) (not x10313))
+:assumption (or x16003 (not x24560))
+:assumption (or (not x28035) (not x20181))
+:assumption (or (not x13152) x9546)
+:assumption (or (not x6136) (not x10751))
+:assumption (or x30244 (not x1026))
+:assumption (or x18147 x9588)
+:assumption (or (not x13956) (not x20794) (not x1235))
+:assumption (or (not x28681) (not x8028))
+:assumption (or (not x5665) x10108)
+:assumption (or (not x27310) (not x7337))
+:assumption (or x9887 x29312)
+:assumption (or x9010 (not x13742))
+:assumption (or x28652 x27117)
+:assumption (or x13134 x10607 (not x23244) (not x13122) (not x29828))
+:assumption (or (not x9558) x11792 (not x12722))
+:assumption (or x11220 x2022 (not x23581))
+:assumption (or x26968 x12874)
+:assumption (or (not x13811) x13949)
+:assumption (or x27945 (not x9332))
+:assumption (or (not x12116) x4262 x24208)
+:assumption (or (not x12681) (not x19864))
+:assumption (or (not x28645) (not x3554))
+:assumption (or x30085 (not x25745) x27626)
+:assumption (or (not x16109) (not x11460))
+:assumption (or (not x10470) x18730)
+:assumption (or x26810 (not x24999) (not x31782) (not x13956))
+:assumption (or (not x26525) (not x28698))
+:assumption (or (not x12371) (not x15298))
+:assumption (or x519 (not x15908))
+:assumption (or x28236 (not x8798))
+:assumption (or x28638 (not x3770))
+:assumption (or x15917 x14056)
+:assumption (or x27537 (not x580))
+:assumption (or x19058 x4640)
+:assumption (or x12247 x448 x10674 x9087 x20340 x21886 (not x15963) (not x2027) (not x17557))
+:assumption (or x15857 x21444)
+:assumption (or x12612 x20722 x21996 (not x15505) (not x15905) (not x5176))
+:assumption (or x3556 (not x27858) x23608 x3848 x474)
+:assumption (or x25779 (not x293))
+:assumption (or x29942 (not x30064))
+:assumption (or x1018 x30745)
+:assumption (or (not x30739) (not x17744))
+:assumption (or x8002 x25967 x20848)
+:assumption (or x21268 x14407)
+:assumption (or (not x8126) x12967 x13039 (not x19183) (not x2138) (not x24482) (not x15669))
+:assumption (or (not x1301) (not x13477) (not x20398) (not x21883) (not x26432))
+:assumption (or (not x20902) x8546)
+:assumption (or x12484 (not x6230))
+:assumption (or x4723 x16894)
+:assumption (or x29439 (not x3405))
+:assumption (or (not x27369) (not x1764))
+:assumption (or (not x7094) (not x10632))
+:assumption (or x12395 (not x5528))
+:assumption (or (not x10621) x17986)
+:assumption (or (not x31602) (not x31074))
+:assumption (or x25768 x30678)
+:assumption (or (not x22736) (not x30794))
+:assumption (or (not x22725) (not x8780))
+:assumption (or (not x8700) x11757)
+:assumption (or (not x8606) x15827)
+:assumption (or x964 x7372)
+:assumption (or (not x7012) x11216)
+:assumption (or x1894 (not x4237))
+:assumption (or (not x16117) x9415)
+:assumption (or (not x21872) x30575)
+:assumption (or x2633 (not x17018))
+:assumption (or x8211 x8090)
+:assumption (or (not x6016) x22631)
+:assumption (or x26477 x21875)
+:assumption (or x27986 (not x23424))
+:assumption (or (not x3584) x27941)
+:assumption (or (not x12719) x10948)
+:assumption (or x28669 x26796)
+:assumption (or (not x31562) x6362)
+:assumption (or (not x8246) x17288)
+:assumption (or (not x25038) x27547)
+:assumption (or x8800 (not x21914))
+:assumption (or (not x10038) (not x31641))
+:assumption (or x1080 (not x23202))
+:assumption (or (not x6039) (not x12644))
+:assumption (or x10909 x12359)
+:assumption (or x24853 x24373)
+:assumption (or (not x13188) (not x21165))
+:assumption (or x945 (not x14206))
+:assumption (or (not x28364) (not x29314))
+:assumption (or x22855 x28065 x17188)
+:assumption (or (not x25350) (not x18515) (not x2101) (not x29346) (not x17908))
+:assumption (or (not x15667) (not x17764) x18859)
+:assumption (or (not x390) x20346 (not x25659))
+:assumption (or (not x13730) (not x23980))
+:assumption (or (not x27476) (not x15481))
+:assumption (or (not x15181) (not x22569))
+:assumption (or x3848 (not x28635))
+:assumption (or x17963 (not x26876))
+:assumption (or x25922 x44 (not x31872) (not x1290) (not x26010))
+:assumption (or (not x15889) x18165)
+:assumption (or (not x19298) (not x29822))
+:assumption (or x14839 (not x8546) x328)
+:assumption (or (not x7664) x4601)
+:assumption (or (not x14256) x29552)
+:assumption (or (not x23943) (not x30071))
+:assumption (or (not x18574) (not x9309))
+:assumption (or (not x25467) x4895)
+:assumption (or (not x31750) (not x22075))
+:assumption (or (not x25484) (not x691))
+:assumption (or (not x4635) x21223)
+:assumption (or (not x27871) (not x28364) (not x7719))
+:assumption (or (not x21029) (not x2700))
+:assumption (or (not x9008) x28595 (not x4378) (not x5528) x20723)
+:assumption (or x30861 (not x16067))
+:assumption (or x15700 x10942 x26566 (not x30954) (not x10509))
+:assumption (or (not x30960) x18244)
+:assumption (or x27576 (not x18500) x16025)
+:assumption (or (not x19425) (not x29423))
+:assumption (or (not x10064) (not x23588) x1960 x15917)
+:assumption (or (not x25075) (not x21955))
+:assumption (or (not x11278) x29228)
+:assumption (or x1574 x18639)
+:assumption (or x12275 x23041)
+:assumption (or x4475 x24155)
+:assumption (or x2449 x897)
+:assumption (or x11925 x18872)
+:assumption (or x18895 x16442)
+:assumption (or x21547 (not x24800))
+:assumption (or (not x15335) x22803)
+:assumption (or x31450 (not x5284))
+:assumption (or x27357 x25785)
+:assumption (or (not x24243) (not x18069) x29292)
+:assumption (or (not x12699) (not x7819))
+:assumption (or (not x10856) x10917)
+:assumption (or (not x16148) x971)
+:assumption (or x653 (not x29778) (not x8300) (not x13798) x30995 x18209)
+:assumption (or x4758 (not x1807))
+:assumption (or (not x25952) (not x28799))
+:assumption (or (not x24407) x16025)
+:assumption (or (not x17868) x30829)
+:assumption (or (not x17773) x18080)
+:assumption (or x11090 (not x18464))
+:assumption (or x29442 (not x23244) x2647)
+:assumption (or x2334 x16205)
+:assumption (or x28011 (not x9016))
+:assumption (or (not x28073) x29355)
+:assumption (or x26873 x918)
+:assumption (or (not x28434) (not x7944))
+:assumption (or (not x8283) x1935)
+:assumption (or (not x13512) (not x20735) x3288 x31681)
+:assumption (or x18082 (not x7367) x22722 (not x11188) x27503 (not x26631))
+:assumption (or (not x15795) x5401)
+:assumption (or (not x10778) (not x13733))
+:assumption (or x8602 (not x17808) (not x27540))
+:assumption (or x11280 (not x26939))
+:assumption (or (not x26483) (not x14198))
+:assumption (or x22191 x6065)
+:assumption (or (not x24017) (not x8685))
+:assumption (or (not x27856) x20390)
+:assumption (or x8037 (not x19614))
+:assumption (or (not x15262) (not x6271))
+:assumption (or (not x22415) x4808 x8002)
+:assumption (or x26470 (not x31316))
+:assumption (or x10568 (not x2521))
+:assumption (or (not x8952) x15907 x10550 x4006 x10371 (not x440) (not x16922))
+:assumption (or (not x7158) (not x8229) (not x16357) (not x10094))
+:assumption (or x20156 (not x16960))
+:assumption (or (not x4043) x7261)
+:assumption (or x18398 x16718)
+:assumption (or (not x16510) x21132)
+:assumption (or (not x12810) x6192)
+:assumption (or (not x2186) x17456)
+:assumption (or (not x15266) x16804)
+:assumption (or (not x27391) x7470 (not x8024) (not x31134) x12614 x29094)
+:assumption (or x16259 x12655)
+:assumption (or (not x8338) x1058)
+:assumption (or (not x658) x27805)
+:assumption (or (not x4085) (not x18757) x29196)
+:assumption (or x31006 (not x11367))
+:assumption (or x26174 (not x28363))
+:assumption (or (not x29702) x18705)
+:assumption (or x15148 (not x1393))
+:assumption (or (not x3820) (not x6641))
+:assumption (or x22301 (not x20687))
+:assumption (or x880 (not x6393))
+:assumption (or x145 (not x24756))
+:assumption (or x10014 (not x7671))
+:assumption (or x27076 x14510)
+:assumption (or x16252 x25070 x25881 x10008 (not x24227))
+:assumption (or x17298 x5934)
+:assumption (or (not x31304) x17076)
+:assumption (or x17795 (not x25279))
+:assumption (or x12142 x18383 (not x31681))
+:assumption (or x12115 (not x24541))
+:assumption (or x9122 (not x28363))
+:assumption (or x397 x16018 x1900 x28055 (not x12578) x17387)
+:assumption (or (not x30908) x1495)
+:assumption (or x24353 (not x984))
+:assumption (or x24349 x13956)
+:assumption (or (not x15824) x20710)
+:assumption (or (not x19999) x4957)
+:assumption (or (not x23696) (not x11488))
+:assumption (or (not x16219) x4885)
+:assumption (or x22337 x28774)
+:assumption (or x3235 x25659 x4322)
+:assumption (or x2989 (not x16988))
+:assumption (or (not x31419) (not x2770))
+:assumption (or x24596 x17134)
+:assumption (or (not x15873) (not x8986))
+:assumption (or (not x26361) (not x5465))
+:assumption (or (not x21298) (not x14639) x11040)
+:assumption (or (not x27870) (not x20967))
+:assumption (or (not x27527) x24954)
+:assumption (or x5367 x27493)
+:assumption (or x29316 x19391)
+:assumption (or (not x20385) x23108)
+:assumption (or x21940 (not x13119))
+:assumption (or x2180 x15171)
+:assumption (or (not x21100) (not x8002))
+:assumption (or (not x29934) (not x19313))
+:assumption (or x23607 x10691)
+:assumption (or (not x12344) (not x18519))
+:assumption (or (not x16025) (not x23421))
+:assumption (or x24322 x2911)
+:assumption (or (not x8643) x28682 x20482)
+:assumption (or x7465 (not x11361))
+:assumption (or x25374 (not x11339))
+:assumption (or x20052 x15011)
+:assumption (or (not x26032) x9696)
+:assumption (or (not x762) (not x15282))
+:assumption (or x16341 (not x23880))
+:assumption (or (not x23162) x12413 x20260 x31620)
+:assumption (or x1271 x14897)
+:assumption (or x23528 x11027)
+:assumption (or (not x4504) (not x586))
+:assumption (or x20065 (not x12960))
+:assumption (or (not x13852) (not x29469) (not x22553))
+:assumption (or x28762 (not x30751))
+:assumption (or (not x19502) (not x20550) x19501)
+:assumption (or x23699 (not x20606) (not x10601))
+:assumption (or (not x27941) x24209)
+:assumption (or x21009 x3157)
+:assumption (or x20905 x13576 (not x22590) (not x9133) (not x10248) x28737 (not x31378) x16140 x9794)
+:assumption (or x26326 (not x6061))
+:assumption (or (not x20907) x8729)
+:assumption (or (not x21598) x31332 x11988 x12014 (not x30002))
+:assumption (or (not x4896) x8358)
+:assumption (or (not x23324) x13504)
+:assumption (or (not x13450) (not x3789))
+:assumption (or (not x21003) x24756)
+:assumption (or x2323 x31115)
+:assumption (or x6881 x20091)
+:assumption (or (not x19992) (not x12018))
+:assumption (or (not x29504) x29959)
+:assumption (or (not x25318) x1739)
+:assumption (or x8267 x15858 (not x1375) (not x28843))
+:assumption (or x22730 x24693)
+:assumption (or x15793 x10510)
+:assumption (or (not x16907) x6139 x6074 x5435)
+:assumption (or (not x17372) (not x9407))
+:assumption (or (not x26469) (not x31705) x22609 (not x1863))
+:assumption (or (not x24100) x1846)
+:assumption (or x23750 (not x30502))
+:assumption (or (not x29096) x16802)
+:assumption (or (not x8034) x14455)
+:assumption (or (not x30054) x26488)
+:assumption (or x26542 (not x10723))
+:assumption (or (not x18174) x1617)
+:assumption (or x24834 x15795 (not x7335))
+:assumption (or x20299 (not x8389))
+:assumption (or x8486 x15887 (not x17967))
+:assumption (or x14794 x26309)
+:assumption (or x16349 (not x22652))
+:assumption (or x8563 x5471 (not x15680) x24454)
+:assumption (or (not x19888) x12805)
+:assumption (or x3130 (not x14228))
+:assumption (or x14673 x5383 x9929)
+:assumption (or (not x383) x3541)
+:assumption (or (not x9053) x30540)
+:assumption (or (not x10851) x31115)
+:assumption (or x28969 x21760)
+:assumption (or x19413 (not x6650))
+:assumption (or x4290 x24655 (not x16025))
+:assumption (or x13576 (not x16255))
+:assumption (or x25151 (not x22807))
+:assumption (or (not x7059) x2912)
+:assumption (or x11233 x1811 (not x21017) (not x22766) x7834 x2666 x19543 (not x27858))
+:assumption (or x3494 x16040)
+:assumption (or (not x19180) x28946)
+:assumption (or (not x11849) (not x15090))
+:assumption (or (not x2500) (not x6240))
+:assumption (or (not x15714) x24482)
+:assumption (or x1123 (not x9997))
+:assumption (or x23606 (not x7859))
+:assumption (or (not x14255) x17976)
+:assumption (or (not x16753) x24538)
+:assumption (or (not x22306) (not x3081))
+:assumption (or (not x620) x14022)
+:assumption (or x19300 x29924)
+:assumption (or x24679 (not x22606))
+:assumption (or x23579 (not x24222))
+:assumption (or (not x12259) x12438)
+:assumption (or (not x3476) x21298)
+:assumption (or x2315 (not x4211))
+:assumption (or x31291 (not x4254))
+:assumption (or (not x15174) (not x3867))
+:assumption (or (not x16025) x28502 (not x16266))
+:assumption (or x22042 x6553)
+:assumption (or x9231 x26366)
+:assumption (or x5168 x11523)
+:assumption (or (not x1402) x5506)
+:assumption (or x27058 x12458)
+:assumption (or (not x1379) x2278)
+:assumption (or x25896 x12410)
+:assumption (or x1485 (not x19801))
+:assumption (or x8536 (not x20424))
+:assumption (or (not x20523) x2557)
+:assumption (or x1402 (not x1102) x10040)
+:assumption (or x14740 (not x31829) (not x3150))
+:assumption (or x1272 (not x14220))
+:assumption (or x28912 x23688)
+:assumption (or x16229 (not x18000))
+:assumption (or (not x5441) (not x25098))
+:assumption (or (not x8099) (not x10770))
+:assumption (or (not x3335) x20325)
+:assumption (or (not x14053) x24628 (not x26208) (not x11464) x9249)
+:assumption (or (not x1171) x22583)
+:assumption (or x16116 (not x14441))
+:assumption (or (not x22318) x11307 x1979)
+:assumption (or x21239 (not x5012))
+:assumption (or (not x16807) x18363)
+:assumption (or x15749 x10310)
+:assumption (or (not x10723) (not x5529))
+:assumption (or (not x2119) x25464)
+:assumption (or x9722 (not x30778))
+:assumption (or x14091 (not x867))
+:assumption (or x20717 (not x23466))
+:assumption (or x7318 x15034)
+:assumption (or x12482 x9617)
+:assumption (or (not x30402) x1368 (not x22992))
+:assumption (or x23215 x2514 (not x10572) x22864)
+:assumption (or (not x3347) (not x23244))
+:assumption (or (not x8459) (not x21865))
+:assumption (or x30387 (not x7530))
+:assumption (or (not x4067) (not x24534))
+:assumption (or x27601 x7489)
+:assumption (or x827 x13888)
+:assumption (or x3929 (not x7366))
+:assumption (or (not x14960) x31873)
+:assumption (or x19886 (not x4516))
+:assumption (or x30177 (not x28799))
+:assumption (or x17080 x19110)
+:assumption (or x12176 (not x12898))
+:assumption (or (not x21298) (not x27833))
+:assumption (or (not x24598) x21815 (not x4431))
+:assumption (or (not x2623) (not x25659))
+:assumption (or (not x16629) x18654)
+:assumption (or x24067 (not x10129))
+:assumption (or (not x8116) x21575)
+:assumption (or (not x12361) x30315)
+:assumption (or x12231 x14162 x4468 (not x20691) x4213 x2398 x29450 (not x28412))
+:assumption (or (not x370) x19171 x30188 x15674 (not x5527) (not x4086) x14035)
+:assumption (or x11219 x26643)
+:assumption (or x26468 x3038)
+:assumption (or x12473 x15917)
+:assumption (or (not x30954) (not x24564) x19428)
+:assumption (or x7507 x29875)
+:assumption (or (not x17075) (not x20338))
+:assumption (or x6133 x28905)
+:assumption (or x25353 x18321 (not x25366))
+:assumption (or x5323 (not x26377))
+:assumption (or x23511 (not x16013))
+:assumption (or x21442 (not x25531) x29268)
+:assumption (or (not x4492) x31115)
+:assumption (or (not x2766) (not x25191))
+:assumption (or x22855 (not x21408))
+:assumption (or x202 x4675)
+:assumption (or x8032 x12311)
+:assumption (or (not x24577) x13540)
+:assumption (or (not x19079) x13582)
+:assumption (or (not x11225) (not x16257))
+:assumption (or x12068 (not x30449))
+:assumption (or x2187 x16230 (not x8364) x4913 x18637 x4442)
+:assumption (or (not x12136) x5177)
+:assumption (or (not x25209) x12903)
+:assumption (or (not x20170) x25344)
+:assumption (or x23945 (not x292))
+:assumption (or x17075 x12786)
+:assumption (or (not x24986) (not x13729))
+:assumption (or x1964 x5987)
+:assumption (or x942 x27785)
+:assumption (or x21026 (not x26955))
+:assumption (or (not x6817) x24543)
+:assumption (or (not x12835) x28041)
+:assumption (or x11156 (not x22455))
+:assumption (or (not x5550) x31266)
+:assumption (or x11827 x24761)
+:assumption (or (not x2017) (not x14053))
+:assumption (or x4871 x8055)
+:assumption (or x11754 (not x10688))
+:assumption (or (not x27767) (not x1299))
+:assumption (or x2334 (not x22738))
+:assumption (or (not x22374) x26332)
+:assumption (or x17420 (not x1393) (not x7015))
+:assumption (or (not x4378) (not x13956) x19600 (not x25818))
+:assumption (or (not x15594) x21212)
+:assumption (or x15460 (not x23873))
+:assumption (or x1889 x7870)
+:assumption (or (not x14839) x624)
+:assumption (or x4865 x15055)
+:assumption (or (not x17571) x27274)
+:assumption (or (not x674) x680)
+:assumption (or (not x29606) x18024)
+:assumption (or (not x13576) (not x29915))
+:assumption (or x29305 x21642)
+:assumption (or (not x27593) (not x26490) x26061)
+:assumption (or x23861 x8036)
+:assumption (or (not x27704) x1299 (not x21298))
+:assumption (or (not x10424) (not x21848))
+:assumption (or (not x1393) x14139)
+:assumption (or (not x7706) x7346)
+:assumption (or x11813 x11484)
+:assumption (or x22792 (not x21552))
+:assumption (or (not x31678) x25983)
+:assumption (or x6052 (not x21741))
+:assumption (or x9008 (not x14835))
+:assumption (or (not x28820) x31058)
+:assumption (or (not x2242) x15654)
+:assumption (or x7090 (not x5528))
+:assumption (or x8602 (not x15893))
+:assumption (or x23534 (not x29150))
+:assumption (or x14839 (not x1851) x19222)
+:assumption (or (not x20945) (not x12959))
+:assumption (or x5707 x24673)
+:assumption (or (not x14687) (not x8545) x12724 (not x876))
+:assumption (or (not x30954) (not x22926))
+:assumption (or (not x9234) x14578)
+:assumption (or x3091 (not x18748))
+:assumption (or (not x20732) (not x13576))
+:assumption (or (not x31134) x28134)
+:assumption (or (not x9531) x31768)
+:assumption (or x25049 (not x25648))
+:assumption (or (not x30129) (not x14313))
+:assumption (or (not x28973) (not x30810))
+:assumption (or (not x26908) x10393)
+:assumption (or (not x365) x4822)
+:assumption (or x3606 (not x12832) (not x8060) x27824 x8578 (not x117) (not x19025) x17619 x28558)
+:assumption (or (not x14578) (not x19762))
+:assumption (or (not x31051) x17065)
+:assumption (or (not x29606) x13281)
+:assumption (or (not x4103) (not x18170))
+:assumption (or (not x27967) (not x7995))
+:assumption (or (not x24756) x26258 x29312 (not x28487))
+:assumption (or x15836 x29527)
+:assumption (or x9647 (not x26775))
+:assumption (or x24749 (not x12224) (not x21298))
+:assumption (or x829 x3452)
+:assumption (or (not x14378) x1404)
+:assumption (or x17505 x8602 x19906)
+:assumption (or (not x9904) x3305 x3611 x7779 (not x7712) x142 x18197 (not x4957))
+:assumption (or (not x14455) (not x11863))
+:assumption (or x15988 x30059)
+:assumption (or (not x2895) x7725)
+:assumption (or (not x27749) x6144)
+:assumption (or x5218 (not x18887))
+:assumption (or x26256 (not x4248))
+:assumption (or (not x7416) (not x22726))
+:assumption (or x2809 (not x4560))
+:assumption (or x26120 x31748 x6780 (not x11904))
+:assumption (or (not x6696) (not x5028))
+:assumption (or (not x27843) (not x8777) x24836 x21832 (not x918) x14251)
+:assumption (or x30229 (not x7362) (not x26561) x29422 x11259 (not x1613))
+:assumption (or x25693 (not x26396))
+:assumption (or (not x29378) x13177)
+:assumption (or (not x12996) (not x29312))
+:assumption (or x31676 x29020)
+:assumption (or (not x26697) x17913)
+:assumption (or x12578 x13289)
+:assumption (or (not x14530) (not x26125))
+:assumption (or (not x15716) (not x28995))
+:assumption (or (not x27262) x2849)
+:assumption (or x9439 x23940)
+:assumption (or x11074 (not x16652) (not x23803) x27621)
+:assumption (or (not x16946) x31625)
+:assumption (or x16025 x805 (not x14922))
+:assumption (or x18074 x15786 (not x17027) x29930)
+:assumption (or x13711 x24396)
+:assumption (or x11205 x21298)
+:assumption (or (not x12985) x8002)
+:assumption (or (not x8979) (not x11936))
+:assumption (or (not x8002) x10269)
+:assumption (or (not x14140) (not x7549))
+:assumption (or (not x15013) (not x28349))
+:assumption (or (not x28400) x19420)
+:assumption (or x5749 x31215)
+:assumption (or (not x15524) x964)
+:assumption (or x11092 x5663 x12964 (not x9212))
+:assumption (or x28365 x17530)
+:assumption (or (not x20782) x4373)
+:assumption (or (not x13956) (not x12176) x27856)
+:assumption (or x16605 x22829 x13956)
+:assumption (or x23027 (not x12146))
+:assumption (or (not x10779) x22020)
+:assumption (or (not x19459) x31014)
+:assumption (or (not x17706) x25604 (not x19800))
+:assumption (or (not x11500) x2177 x18348 x504)
+:assumption (or x15866 (not x16111) x23074)
+:assumption (or (not x7524) x5146)
+:assumption (or x18003 (not x33))
+:assumption (or x14578 (not x1712))
+:assumption (or (not x8129) x20468)
+:assumption (or (not x28506) x31929)
+:assumption (or (not x20902) (not x29811))
+:assumption (or x24088 x26953)
+:assumption (or (not x4436) (not x6044))
+:assumption (or x1953 (not x9331))
+:assumption (or (not x7991) x17406)
+:assumption (or x22692 (not x16342))
+:assumption (or x21526 (not x26775))
+:assumption (or x4878 x22046)
+:assumption (or x28604 x19810)
+:assumption (or (not x28498) (not x24914))
+:assumption (or (not x8917) x12618)
+:assumption (or x30106 x8461)
+:assumption (or x6905 x27728)
+:assumption (or (not x12142) (not x18383))
+:assumption (or (not x23244) (not x13089) (not x8002) (not x2555))
+:assumption (or x827 (not x24116) x17700)
+:assumption (or x4004 x5619)
+:assumption (or x1393 x28058)
+:assumption (or x31806 (not x22333))
+:assumption (or x26689 x25178)
+:assumption (or (not x27228) (not x7741) (not x2888) x7181 x7835 (not x16335) x2133)
+:assumption (or (not x13109) x15942)
+:assumption (or (not x19943) (not x2868))
+:assumption (or (not x12303) x5382)
+:assumption (or x16199 (not x2183))
+:assumption (or (not x24289) x7512)
+:assumption (or x1390 (not x14419))
+:assumption (or (not x30416) x22963)
+:assumption (or (not x3954) x6993)
+:assumption (or x25219 x6575)
+:assumption (or (not x2549) (not x18582))
+:assumption (or x21254 x31054)
+:assumption (or (not x23370) x15469)
+:assumption (or x12420 x20020)
+:assumption (or x27741 (not x5428))
+:assumption (or x3156 (not x20270))
+:assumption (or (not x2233) (not x5776) x17242 x10539 (not x19009))
+:assumption (or (not x28708) x2532)
+:assumption (or (not x1150) (not x1052))
+:assumption (or x3563 (not x3527))
+:assumption (or x27069 (not x11142))
+:assumption (or (not x4118) x19677 (not x11690) (not x25161) x12102 x18835 (not x25489) x31463)
+:assumption (or x8495 (not x347))
+:assumption (or x22791 (not x27538) (not x27571) (not x9207) x31588 (not x8961) x12299)
+:assumption (or x20506 (not x19012))
+:assumption (or (not x28755) (not x24945))
+:assumption (or x8849 (not x12609) x29606)
+:assumption (or x13058 x23423)
+:assumption (or x11507 x3453)
+:assumption (or x3901 (not x12559))
+:assumption (or (not x12009) (not x9834))
+:assumption (or (not x4141) (not x3641) (not x20426) (not x2218) x29312)
+:assumption (or (not x15749) x16086)
+:assumption (or x2449 x14110)
+:assumption (or x4017 (not x21169))
+:assumption (or (not x4791) x17868)
+:assumption (or x20017 x30100)
+:assumption (or x2337 (not x24079))
+:assumption (or (not x14399) x24283)
+:assumption (or x24344 (not x17789))
+:assumption (or x27481 (not x3796))
+:assumption (or x10279 (not x18472))
+:assumption (or (not x8762) x15322)
+:assumption (or x16625 x19770)
+:assumption (or x25056 (not x26647))
+:assumption (or x8797 (not x6296))
+:assumption (or x9267 x6333)
+:assumption (or (not x30073) x5279)
+:assumption (or (not x23415) x14761)
+:assumption (or (not x30382) (not x29932))
+:assumption (or x18473 x11281 (not x17359))
+:assumption (or x9159 (not x11652))
+:assumption (or (not x30430) (not x17359))
+:assumption (or (not x14044) x16358)
+:assumption (or x12173 x12805)
+:assumption (or (not x16712) (not x18146))
+:assumption (or x16851 (not x7278))
+:assumption (or x9008 x14004 x25714)
+:assumption (or x19849 x25224)
+:assumption (or (not x30265) x7859)
+:assumption (or (not x2340) x15220)
+:assumption (or (not x10874) (not x12618) x6846)
+:assumption (or x9601 x16723)
+:assumption (or x18733 (not x19164))
+:assumption (or x22700 (not x31716))
+:assumption (or (not x27295) x22869)
+:assumption (or x23607 x178)
+:assumption (or (not x28784) x3110)
+:assumption (or (not x26657) x19045)
+:assumption (or x22157 (not x17319))
+:assumption (or x11375 x27802)
+:assumption (or (not x3581) x13411)
+:assumption (or x11053 (not x6032) (not x17833) x10983 x17326 (not x19148))
+:assumption (or (not x26371) x19466)
+:assumption (or (not x18541) (not x7341))
+:assumption (or (not x17025) x23244)
+:assumption (or x12640 (not x28614))
+:assumption (or x7790 (not x14542))
+:assumption (or x21723 x27941)
+:assumption (or (not x16025) x27247)
+:assumption (or x21587 (not x30212))
+:assumption (or (not x7209) (not x15795))
+:assumption (or x9617 (not x22676))
+:assumption (or x17535 (not x29482))
+:assumption (or x26107 (not x27717))
+:assumption (or (not x9358) x15947)
+:assumption (or x6625 (not x10585))
+:assumption (or x9896 (not x14496) x21298 x24166 x31593 (not x17791) (not x27739))
+:assumption (or x26083 (not x29442) x7189)
+:assumption (or (not x14375) (not x14435))
+:assumption (or (not x9404) x29959)
+:assumption (or (not x12601) x10593)
+:assumption (or (not x10610) x21143)
+:assumption (or (not x21298) x24784 x14873)
+:assumption (or x27138 x9423)
+:assumption (or x10668 x2477 x18859)
+:assumption (or x6865 (not x8374))
+:assumption (or x28722 (not x17448))
+:assumption (or x2692 (not x14988))
+:assumption (or x29396 x21524)
+:assumption (or x27934 (not x14021))
+:assumption (or (not x31152) (not x3096))
+:assumption (or (not x11853) (not x5558) x10206)
+:assumption (or (not x20152) (not x30868))
+:assumption (or (not x9531) x25022)
+:assumption (or (not x29488) x16411)
+:assumption (or (not x25728) (not x24084))
+:assumption (or (not x19359) (not x16907))
+:assumption (or x31858 x23657)
+:assumption (or x5604 (not x6207))
+:assumption (or (not x672) x2825)
+:assumption (or x14610 x8037)
+:assumption (or (not x89) x20546)
+:assumption (or (not x30775) (not x30614))
+:assumption (or x13416 x20321)
+:assumption (or x20265 (not x24756))
+:assumption (or (not x20488) (not x22154))
+:assumption (or (not x4257) x9289)
+:assumption (or (not x4771) x20874)
+:assumption (or (not x4578) (not x14206) x4123)
+:assumption (or (not x22265) x5528)
+:assumption (or (not x10486) (not x22237) x8002 (not x15158) x4520 x30033)
+:assumption (or (not x11190) (not x1549))
+:assumption (or (not x17180) x8358)
+:assumption (or x7158 x21869)
+:assumption (or x2627 (not x11073))
+:assumption (or x972 (not x3247))
+:assumption (or x25108 x21843)
+:assumption (or (not x24668) x16312)
+:assumption (or x21912 (not x14173))
+:assumption (or (not x4158) x19361)
+:assumption (or x23265 (not x3331))
+:assumption (or x25628 (not x9603))
+:assumption (or (not x16510) (not x6443))
+:assumption (or (not x12453) (not x30283))
+:assumption (or (not x7295) x10053)
+:assumption (or (not x11728) (not x30469))
+:assumption (or (not x15885) x7358 (not x18655))
+:assumption (or (not x11227) (not x21948))
+:assumption (or (not x17991) x4487)
+:assumption (or (not x25734) x4796)
+:assumption (or (not x8982) (not x19304))
+:assumption (or x22829 x15713 (not x19992))
+:assumption (or (not x6120) x4342)
+:assumption (or (not x6022) (not x20443))
+:assumption (or (not x27123) x16741 (not x28422) (not x24383) x2133)
+:assumption (or (not x13789) (not x31081) x24660 x26446 x3960)
+:assumption (or (not x23717) x28205)
+:assumption (or x21815 (not x9486) x18975)
+:assumption (or x16025 x12932)
+:assumption (or (not x6752) x3440)
+:assumption (or (not x10758) (not x2953) (not x26977) x20971 (not x29566) (not x18211))
+:assumption (or (not x8002) x23244 x19190)
+:assumption (or (not x4317) (not x13348))
+:assumption (or x20440 (not x29420))
+:assumption (or x6499 (not x29883))
+:assumption (or (not x11513) (not x4198))
+:assumption (or x8026 x22612)
+:assumption (or x218 x31928)
+:assumption (or x6964 (not x24488))
+:assumption (or (not x16409) x24247)
+:assumption (or (not x12606) (not x28104))
+:assumption (or (not x11656) x18788 (not x19137) x6914 x24756 (not x29102))
+:assumption (or (not x26065) x28329)
+:assumption (or x23886 x7129)
+:assumption (or x21705 x26262)
+:assumption (or x8091 (not x19663))
+:assumption (or (not x5795) x10313)
+:assumption (or (not x29218) (not x11477))
+:assumption (or (not x1832) x15432)
+:assumption (or x17225 x10243)
+:assumption (or x2391 (not x16802))
+:assumption (or x30941 (not x18990))
+:assumption (or x7810 (not x11368))
+:assumption (or (not x20945) (not x5288))
+:assumption (or x19807 (not x1839))
+:assumption (or x30427 (not x7232))
+:assumption (or x4860 (not x28363))
+:assumption (or x21604 (not x27070))
+:assumption (or (not x30024) x10450 (not x4559))
+:assumption (or x14425 (not x20576))
+:assumption (or x11093 x22974)
+:assumption (or x1583 x10145)
+:assumption (or x25953 x2618)
+:assumption (or x3742 x28068)
+:assumption (or (not x18460) (not x23811))
+:assumption (or x27890 x21772)
+:assumption (or (not x20937) x15052 (not x16117))
+:assumption (or x16036 (not x20808))
+:assumption (or (not x4935) x21446)
+:assumption (or (not x15757) x16531)
+:assumption (or x18682 x28073)
+:assumption (or (not x4699) x1393 (not x4717))
+:assumption (or (not x15294) (not x3516))
+:assumption (or (not x3524) x8567)
+:assumption (or (not x9517) (not x19798))
+:assumption (or (not x6660) (not x26813))
+:assumption (or x15366 (not x9343) (not x23118) x2463)
+:assumption (or x25774 (not x6471))
+:assumption (or (not x13784) (not x6877))
+:assumption (or (not x628) x28807)
+:assumption (or (not x14383) x26117)
+:assumption (or (not x25658) x30156)
+:assumption (or (not x14202) x711)
+:assumption (or (not x22467) x30386)
+:assumption (or x30990 x19906)
+:assumption (or x3346 x13592)
+:assumption (or (not x27169) x7396)
+:assumption (or x5501 x29459)
+:assumption (or x21298 x4526)
+:assumption (or x15105 x21223)
+:assumption (or (not x22555) x30934)
+:assumption (or x4040 x6599)
+:assumption (or (not x25119) x14350)
+:assumption (or (not x12656) x721)
+:assumption (or x1530 x17144)
+:assumption (or (not x7310) x13956)
+:assumption (or x6783 x13956 (not x25389))
+:assumption (or (not x6133) x16195)
+:assumption (or (not x7181) x30813)
+:assumption (or x11517 (not x9753))
+:assumption (or (not x21091) x17210 x31532 x22845 (not x26246))
+:assumption (or (not x29356) (not x25423))
+:assumption (or (not x5046) (not x26650))
+:assumption (or x21410 (not x23436) x26445 (not x18677) x12217)
+:assumption (or (not x29553) x20869)
+:assumption (or (not x15861) x10315 (not x20119))
+:assumption (or x14266 (not x30197))
+:assumption (or (not x28070) x10969)
+:assumption (or (not x17020) x19465)
+:assumption (or x13595 (not x15887) x29050)
+:assumption (or (not x7470) (not x31832))
+:assumption (or (not x28806) (not x9008))
+:assumption (or (not x202) x15608)
+:assumption (or x780 x28181 (not x22206))
+:assumption (or x16708 (not x22714))
+:assumption (or x1163 (not x20173))
+:assumption (or (not x3918) x27947)
+:assumption (or (not x29959) x23833)
+:assumption (or x21856 x28490)
+:assumption (or x12319 (not x2505))
+:assumption (or (not x3404) (not x31037))
+:assumption (or x20581 (not x5561))
+:assumption (or (not x25423) x5126)
+:assumption (or x19802 (not x21186))
+:assumption (or x30626 x12839)
+:assumption (or x74 (not x13765))
+:assumption (or (not x8807) (not x19431))
+:assumption (or x19886 x18693)
+:assumption (or x6645 (not x27736))
+:assumption (or (not x15403) x8276)
+:assumption (or (not x29499) x31380 x27537)
+:assumption (or (not x3483) x28072)
+:assumption (or x25934 (not x26967) (not x22963))
+:assumption (or x7914 (not x19235))
+:assumption (or (not x26670) (not x16843))
+:assumption (or x23244 (not x17493))
+:assumption (or x24924 x16880)
+:assumption (or x19917 (not x22825))
+:assumption (or x26391 x30395)
+:assumption (or (not x7961) (not x30086))
+:assumption (or x17470 x8482)
+:assumption (or (not x4426) (not x665))
+:assumption (or (not x10439) x13502 x30193 x601 (not x3023) (not x25230) (not x7695) x30822)
+:assumption (or (not x10170) x26977)
+:assumption (or x1831 x13105 x6750 (not x8813) x7359 (not x4575))
+:assumption (or x13883 x12686 x22940 (not x4946))
+:assumption (or x30991 x27158)
+:assumption (or (not x1915) x8002 (not x28573) (not x27941) x23244)
+:assumption (or x21856 (not x13799))
+:assumption (or x16745 (not x23901))
+:assumption (or (not x30716) (not x1582))
+:assumption (or x1014 x11974)
+:assumption (or x25945 x22435)
+:assumption (or x977 x9008)
+:assumption (or (not x27237) (not x4554))
+:assumption (or x20791 (not x4136) (not x11375) (not x28397) x26897 (not x30138))
+:assumption (or x14221 (not x4651))
+:assumption (or x8123 (not x2693))
+:assumption (or (not x1161) (not x3435))
+:assumption (or x16438 (not x12119))
+:assumption (or (not x21978) (not x10201))
+:assumption (or (not x206) (not x6682))
+:assumption (or (not x20564) x23430)
+:assumption (or x30946 x28875)
+:assumption (or (not x8588) x9185)
+:assumption (or (not x29378) x8602 x26418)
+:assumption (or (not x21500) (not x9531) x25595)
+:assumption (or (not x7957) x17129)
+:assumption (or x25103 x6098)
+:assumption (or x2729 x14763)
+:assumption (or (not x13996) (not x2500) (not x4973) x4066)
+:assumption (or x19389 x1459)
+:assumption (or x6617 x7474)
+:assumption (or (not x235) x6702)
+:assumption (or x18135 x4854)
+:assumption (or (not x1393) (not x490))
+:assumption (or x11043 x4150 (not x17898) x13984)
+:assumption (or (not x20693) x24566 x9132)
+:assumption (or (not x22649) (not x118) (not x5206) x7398 (not x21337) x21405)
+:assumption (or (not x3646) x27792 (not x28874))
+:assumption (or (not x27204) (not x27734))
+:assumption (or x18974 (not x8121))
+:assumption (or x29258 x5806)
+:assumption (or x23966 (not x24488))
+:assumption (or x26170 (not x23460))
+:assumption (or (not x825) x31810)
+:assumption (or (not x7476) (not x23531))
+:assumption (or (not x6678) (not x8080) (not x13382))
+:assumption (or x12674 (not x21878))
+:assumption (or (not x17035) (not x22871))
+:assumption (or (not x27501) (not x17863))
+:assumption (or x11228 (not x28242))
+:assumption (or (not x6800) x9626)
+:assumption (or x28955 x8455)
+:assumption (or (not x25154) (not x27765))
+:assumption (or (not x23042) x15649)
+:assumption (or (not x7029) x26568)
+:assumption (or x27747 x10248)
+:assumption (or x556 (not x14105))
+:assumption (or x10392 (not x20270))
+:assumption (or x25671 x4118)
+:assumption (or (not x16120) x10373)
+:assumption (or x12319 x17942)
+:assumption (or (not x27215) (not x25982))
+:assumption (or (not x1228) x16708)
+:assumption (or x8372 (not x14008))
+:assumption (or (not x28934) x14695)
+:assumption (or (not x4932) (not x6848))
+:assumption (or x17175 x20703)
+:assumption (or (not x10031) (not x1472))
+:assumption (or x31801 x20489)
+:assumption (or x9703 (not x21529))
+:assumption (or (not x2796) (not x27912))
+:assumption (or x16510 x30900)
+:assumption (or (not x21653) (not x2120) x23243)
+:assumption (or x8574 x15866 (not x31632) (not x29661))
+:assumption (or x8120 (not x19255))
+:assumption (or x16087 (not x4106))
+:assumption (or (not x13135) x18052)
+:assumption (or (not x6225) x16824)
+:assumption (or x8602 (not x11016) x1642)
+:assumption (or x26990 (not x10446))
+:assumption (or x5993 (not x27732) x7666 x19428 x13381)
+:assumption (or x10157 x7227)
+:assumption (or x6390 x12588)
+:assumption (or x22948 x20332)
+:assumption (or x7331 (not x30311))
+:assumption (or (not x20048) x1393 x25403 x2743 x12331 (not x31831) (not x22510) (not x20788))
+:assumption (or x27593 (not x24471) (not x29317))
+:assumption (or (not x3494) (not x26589))
+:assumption (or x12479 (not x20898))
+:assumption (or (not x17930) x6448 (not x2066) (not x29254) (not x19854) x27907)
+:assumption (or x24471 x24390)
+:assumption (or x981 x6567)
+:assumption (or x1514 x30856)
+:assumption (or (not x24674) x13795 (not x18651))
+:assumption (or x26713 x2500 (not x7484))
+:assumption (or x10535 (not x30829) x9945)
+:assumption (or (not x14673) x3869)
+:assumption (or x19296 (not x13435))
+:assumption (or (not x18302) (not x12033) x29687)
+:assumption (or x16908 x21298)
+:assumption (or x18105 (not x27003))
+:assumption (or x24824 x11569)
+:assumption (or (not x21635) x20046)
+:assumption (or x13158 x5030)
+:assumption (or x25742 (not x22531) x16302)
+:assumption (or (not x12042) x18012)
+:assumption (or x23042 x20769)
+:assumption (or x24105 (not x15434))
+:assumption (or (not x8778) (not x30535) x16117)
+:assumption (or (not x26897) x9744)
+:assumption (or x13370 (not x20688))
+:assumption (or (not x10911) (not x1674))
+:assumption (or x10312 (not x14413))
+:assumption (or x28832 x21938)
+:assumption (or x1352 x21742)
+:assumption (or x20551 (not x5254))
+:assumption (or x15621 (not x13390) (not x10958) (not x13348))
+:assumption (or x21603 (not x31486) (not x1393))
+:assumption (or (not x3649) (not x6518))
+:assumption (or (not x23938) (not x29157))
+:assumption (or x24877 (not x11856))
+:assumption (or (not x31250) (not x8584))
+:assumption (or (not x10653) x19529)
+:assumption (or x31043 (not x19462))
+:assumption (or (not x5437) x29695 (not x21153) (not x19962) x27834)
+:assumption (or (not x7018) (not x19278))
+:assumption (or (not x3447) x21107)
+:assumption (or (not x8229) x20235)
+:assumption (or x23664 (not x22715))
+:assumption (or (not x26429) x10374 x23722 x9222 x4742)
+:assumption (or x12905 x5863)
+:assumption (or x30738 x3619)
+:assumption (or x3943 x18508)
+:assumption (or x10064 x28939)
+:assumption (or x16302 x27578)
+:assumption (or (not x21298) (not x29784) x386 (not x9208))
+:assumption (or (not x26772) (not x24150))
+:assumption (or (not x26680) x30251)
+:assumption (or (not x68) (not x5845) (not x2194))
+:assumption (or (not x4422) x21643 x9783)
+:assumption (or x2623 x4641)
+:assumption (or x8863 (not x27202))
+:assumption (or (not x11435) (not x30633))
+:assumption (or x20677 x12145)
+:assumption (or (not x1997) x16411)
+:assumption (or (not x230) (not x28129))
+:assumption (or x18369 x21298 x25651 (not x16042))
+:assumption (or x25398 (not x22527))
+:assumption (or (not x29930) (not x28362))
+:assumption (or x28282 (not x21288))
+:assumption (or x25791 (not x169))
+:assumption (or x6575 x19802)
+:assumption (or (not x30629) x23038)
+:assumption (or x26456 (not x29687))
+:assumption (or x687 x25381)
+:assumption (or x19884 x27233 x16566)
+:assumption (or (not x18527) (not x18270))
+:assumption (or x20532 (not x24121))
+:assumption (or (not x17326) (not x14672))
+:assumption (or (not x1415) x11778)
+:assumption (or x16570 (not x10942))
+:assumption (or (not x3622) x5806)
+:assumption (or x29341 (not x19063) x6969)
+:assumption (or x29505 (not x25475))
+:assumption (or (not x25948) x18208)
+:assumption (or x24485 (not x23435))
+:assumption (or (not x11572) x10076 x7229 x31429 x13377 x9008)
+:assumption (or (not x18462) (not x29901))
+:assumption (or (not x26402) x384 (not x31281) x7613 (not x369))
+:assumption (or x27860 (not x22301) (not x4936) x20326)
+:assumption (or x30718 x28383)
+:assumption (or (not x28341) (not x27852) (not x26281))
+:assumption (or (not x31221) x31546)
+:assumption (or (not x27709) x15848)
+:assumption (or x8039 (not x21418))
+:assumption (or x25568 (not x4822))
+:assumption (or x8111 x2343)
+:assumption (or (not x16741) (not x20487))
+:assumption (or (not x23141) (not x6581))
+:assumption (or (not x13079) (not x7109))
+:assumption (or x21756 (not x14757))
+:assumption (or (not x20253) (not x20360))
+:assumption (or (not x25205) (not x18016))
+:assumption (or (not x12481) (not x10892))
+:assumption (or x21606 (not x25817))
+:assumption (or x6498 (not x10989))
+:assumption (or x1966 x15290)
+:assumption (or (not x26136) (not x7707))
+:assumption (or (not x29046) (not x9766))
+:assumption (or x15905 (not x17204))
+:assumption (or (not x2017) x14296)
+:assumption (or (not x8602) x17233 (not x14584))
+:assumption (or (not x24342) x9946 x30393)
+:assumption (or (not x8362) (not x4809))
+:assumption (or x22844 x6464)
+:assumption (or x7045 x10771 x12923)
+:assumption (or (not x22767) x18921)
+:assumption (or (not x15838) (not x9707))
+:assumption (or x29049 (not x11386))
+:assumption (or (not x11096) (not x31849))
+:assumption (or x9008 x29763)
+:assumption (or (not x30713) x23925)
+:assumption (or x16012 (not x18341))
+:assumption (or x25334 x1765)
+:assumption (or x8640 x11696)
+:assumption (or (not x4963) (not x16601))
+:assumption (or (not x16388) x27873)
+:assumption (or x761 (not x7570) (not x5364) x30734)
+:assumption (or (not x8735) (not x25319))
+:assumption (or x9109 x16375)
+:assumption (or (not x1186) x11504)
+:assumption (or (not x28285) (not x20807))
+:assumption (or x4592 x31058)
+:assumption (or (not x11951) (not x16793) x24059 x10791)
+:assumption (or (not x15384) x13060)
+:assumption (or (not x1393) (not x10754))
+:assumption (or x7259 x13199 (not x18396) x2131 (not x31799) (not x14072) (not x11472) x14713 x7807)
+:assumption (or (not x12749) (not x28882))
+:assumption (or (not x2555) x14149)
+:assumption (or (not x15173) x7812)
+:assumption (or x4156 x4279)
+:assumption (or (not x17425) (not x16510))
+:assumption (or x6918 x4111)
+:assumption (or x1626 x10176)
+:assumption (or x8002 x31861 x22884)
+:assumption (or x7748 x4226)
+:assumption (or (not x9228) (not x13026))
+:assumption (or x22542 (not x14248))
+:assumption (or x18729 x25959)
+:assumption (or (not x19132) (not x8758))
+:assumption (or x12045 x30223)
+:assumption (or (not x30643) x3782)
+:assumption (or x3356 (not x16374) (not x14455) x20477)
+:assumption (or x4093 x7565)
+:assumption (or (not x8318) (not x7107) (not x5151))
+:assumption (or (not x30868) x21930)
+:assumption (or x19173 (not x16257))
+:assumption (or (not x24228) x25551)
+:assumption (or x23465 (not x15054))
+:assumption (or (not x10162) (not x8550))
+:assumption (or x1826 x22569)
+:assumption (or (not x8067) x10274)
+:assumption (or x15284 (not x21005))
+:assumption (or x6794 x14438)
+:assumption (or (not x19864) (not x4306))
+:assumption (or (not x29965) (not x31611))
+:assumption (or x5911 x15496)
+:assumption (or (not x20104) (not x1973))
+:assumption (or x19283 x6698)
+:assumption (or (not x6683) x14051)
+:assumption (or (not x2127) (not x26059))
+:assumption (or x23399 x3103 (not x9852))
+:assumption (or x17208 (not x20416))
+:assumption (or (not x10909) x13123)
+:assumption (or x3006 x411)
+:assumption (or (not x14936) x29546)
+:assumption (or (not x26100) (not x3435))
+:assumption (or (not x24836) (not x30275))
+:assumption (or (not x25288) x9762)
+:assumption (or (not x12034) x2219)
+:assumption (or x1042 (not x15396))
+:assumption (or (not x28850) x31127)
+:assumption (or x6149 (not x9633))
+:assumption (or (not x12014) x30002)
+:assumption (or x31242 x18853)
+:assumption (or (not x1582) x14482 x28973)
+:assumption (or (not x27098) (not x8430))
+:assumption (or x28226 x21096)
+:assumption (or x30138 (not x1025) (not x13619) (not x15169) x6618 (not x23235) x25387)
+:assumption (or x1538 (not x24341))
+:assumption (or (not x15710) x26141)
+:assumption (or (not x1255) (not x11810))
+:assumption (or x18937 (not x26900) (not x27558))
+:assumption (or (not x29555) (not x25987))
+:assumption (or (not x10700) x16685)
+:assumption (or x2746 x20930)
+:assumption (or (not x19007) (not x27877))
+:assumption (or x17970 x10682)
+:assumption (or (not x28328) (not x16326))
+:assumption (or (not x29333) (not x11927))
+:assumption (or x15619 x21298)
+:assumption (or (not x7418) (not x18051))
+:assumption (or x27149 (not x7824))
+:assumption (or (not x15093) x4891)
+:assumption (or x16412 x16569)
+:assumption (or x8879 x9598)
+:assumption (or x25879 x5929)
+:assumption (or (not x1923) (not x16340))
+:assumption (or (not x7767) x31859 (not x3812) x6363)
+:assumption (or x6713 (not x31072))
+:assumption (or x22886 (not x19968) (not x11093) x4643 x16048 (not x12859) x450 x2472)
+:assumption (or x28126 x16411)
+:assumption (or x24021 x6767)
+:assumption (or x17086 x2989)
+:assumption (or (not x8081) x412)
+:assumption (or x5886 (not x14708))
+:assumption (or x24240 x5556)
+:assumption (or (not x21592) x24893)
+:assumption (or x409 x11758)
+:assumption (or x9008 x22596)
+:assumption (or x27557 x19679)
+:assumption (or x11932 x21163)
+:assumption (or x5819 (not x25195))
+:assumption (or x15034 (not x21621))
+:assumption (or x344 x31186 (not x12032) (not x17442) (not x3174) x27604 x3692 x22276 (not x27594))
+:assumption (or (not x31767) (not x18984) (not x19332))
+:assumption (or (not x27401) (not x15479))
+:assumption (or (not x18707) (not x17345))
+:assumption (or x9437 x18053)
+:assumption (or (not x12131) x739)
+:assumption (or (not x25881) (not x8961))
+:assumption (or x29101 (not x14562))
+:assumption (or x26848 x16720)
+:assumption (or x19658 (not x18936))
+:assumption (or (not x29093) x9008 x10113)
+:assumption (or (not x15366) (not x6981) (not x6539))
+:assumption (or (not x1114) (not x3716))
+:assumption (or (not x2348) (not x3675))
+:assumption (or x26743 x21202)
+:assumption (or x30058 (not x28151))
+:assumption (or x9581 x30701)
+:assumption (or x22489 (not x1582))
+:assumption (or (not x24349) (not x27880) (not x13956))
+:assumption (or x26359 (not x11269))
+:assumption (or x17196 (not x15229))
+:assumption (or x25071 (not x8532))
+:assumption (or x21942 x7467)
+:assumption (or (not x4470) (not x9577) x8462)
+:assumption (or (not x24814) (not x3274))
+:assumption (or x6256 (not x22969))
+:assumption (or (not x30540) x20658 x28926 x1971 x24335)
+:assumption (or (not x21755) x17479)
+:assumption (or (not x29767) (not x14724))
+:assumption (or (not x22351) (not x15407))
+:assumption (or x20274 x3698)
+:assumption (or (not x23537) (not x330))
+:assumption (or x6466 (not x26076))
+:assumption (or (not x28030) x8305)
+:assumption (or x22963 (not x3382))
+:assumption (or (not x4294) (not x25956))
+:assumption (or (not x13965) x31736)
+:assumption (or x24955 x30582)
+:assumption (or x6881 (not x8651))
+:assumption (or (not x27352) (not x22179))
+:assumption (or x26355 (not x17957))
+:assumption (or (not x20184) (not x25366) x10675)
+:assumption (or (not x26876) x19694)
+:assumption (or x19214 x10712)
+:assumption (or (not x20885) x19221)
+:assumption (or x19055 x8606 (not x12200) (not x25775) x8741 x9008)
+:assumption (or (not x22347) (not x512) x9531 (not x14879) x3383)
+:assumption (or (not x13417) (not x14242))
+:assumption (or x13044 x9008)
+:assumption (or (not x653) x25262)
+:assumption (or (not x18211) (not x20243))
+:assumption (or x6906 x2170)
+:assumption (or x4345 (not x1363))
+:assumption (or x18189 x11682)
+:assumption (or (not x558) (not x18691))
+:assumption (or (not x2732) (not x31058) x2334 (not x9271))
+:assumption (or x5290 x29637 (not x1393))
+:assumption (or (not x21676) (not x18725))
+:assumption (or (not x24287) (not x26773))
+:assumption (or (not x24470) (not x13037))
+:assumption (or (not x15274) (not x20598))
+:assumption (or x26837 (not x3078) (not x7297) x26316)
+:assumption (or x23975 x5241)
+:assumption (or (not x9935) (not x28529))
+:assumption (or (not x26841) x3806)
+:assumption (or (not x23858) x12634)
+:assumption (or x26555 (not x4551))
+:assumption (or x21890 x30351)
+:assumption (or (not x23999) (not x1652))
+:assumption (or (not x27129) (not x1649))
+:assumption (or (not x12578) (not x13092) (not x7674))
+:assumption (or (not x7544) (not x15842))
+:assumption (or x27763 x24228)
+:assumption (or x17178 (not x18075))
+:assumption (or x29160 (not x21521) (not x12311) (not x16802) x7845 (not x20559))
+:assumption (or x6139 (not x7031))
+:assumption (or x7190 x28656)
+:assumption (or (not x21424) x22311)
+:assumption (or (not x1066) x19598)
+:assumption (or (not x21047) x12877)
+:assumption (or x15295 (not x4166))
+:assumption (or x19734 x28614)
+:assumption (or (not x2420) (not x25175))
+:assumption (or (not x8746) (not x3827))
+:assumption (or (not x14718) x19818 x18321)
+:assumption (or (not x3842) x14349)
+:assumption (or x29080 x5373)
+:assumption (or (not x19736) x142)
+:assumption (or (not x27941) (not x8663))
+:assumption (or x29842 x26107)
+:assumption (or x30297 x21706)
+:assumption (or x13139 x22682)
+:assumption (or x14398 (not x17016))
+:assumption (or x19277 x12561)
+:assumption (or (not x366) (not x4974))
+:assumption (or (not x3952) (not x10))
+:assumption (or (not x3364) x30113)
+:assumption (or (not x10215) (not x25204))
+:assumption (or x26966 x8960)
+:assumption (or (not x17672) (not x30255))
+:assumption (or x9477 x16561)
+:assumption (or x28436 (not x8461) (not x5532))
+:assumption (or x16822 (not x3867))
+:assumption (or x10434 (not x30254))
+:assumption (or (not x8002) (not x27434) x10475)
+:assumption (or (not x5479) x26788)
+:assumption (or (not x26297) x26432 (not x8743))
+:assumption (or x8886 (not x20765) x25380)
+:assumption (or x22146 x8724)
+:assumption (or (not x5603) (not x24346))
+:assumption (or x14628 x17526)
+:assumption (or (not x31882) (not x2983))
+:assumption (or x19364 x22169)
+:assumption (or (not x21952) (not x985))
+:assumption (or x16802 (not x29480) x27111 x24722)
+:assumption (or x16229 (not x16380))
+:assumption (or x9243 (not x23271))
+:assumption (or (not x3428) (not x28744))
+:assumption (or x15836 x11394 (not x1903))
+:assumption (or (not x7854) x2020)
+:assumption (or x2735 x15795)
+:assumption (or (not x31627) (not x29248))
+:assumption (or (not x2848) (not x14578))
+:assumption (or (not x28606) (not x7738))
+:assumption (or x26974 x29699)
+:assumption (or x22544 x23170)
+:assumption (or x9313 x15563)
+:assumption (or (not x23399) (not x24026) (not x7537))
+:assumption (or (not x11711) x30752)
+:assumption (or x2645 (not x22153))
+:assumption (or x17653 (not x21897) (not x23244) (not x3816) (not x8857) (not x16972))
+:assumption (or x31780 x5528)
+:assumption (or x15712 (not x28885))
+:assumption (or x18594 (not x29633) x5910)
+:assumption (or (not x18691) (not x13649))
+:assumption (or x29288 (not x31617))
+:assumption (or (not x7967) x288)
+:assumption (or x26875 (not x10767))
+:assumption (or (not x18385) x12360 (not x8484))
+:assumption (or (not x30256) (not x27743) (not x25409))
+:assumption (or x9455 (not x30560))
+:assumption (or x23461 x27997 x12013 x19109)
+:assumption (or (not x18502) x31158)
+:assumption (or (not x19625) (not x9008))
+:assumption (or (not x14591) x15965)
+:assumption (or (not x29882) x9930)
+:assumption (or (not x11783) x14660 x20134 (not x25723))
+:assumption (or (not x31748) x11904)
+:assumption (or x6307 x2353)
+:assumption (or (not x13571) x613)
+:assumption (or x22755 x22892)
+:assumption (or x7223 (not x20538))
+:assumption (or x10636 x5044 (not x14455))
+:assumption (or (not x1480) x28123)
+:assumption (or x27692 x10867 x25485 x19018)
+:assumption (or (not x30289) (not x16512))
+:assumption (or (not x11217) (not x25763) (not x15887) x27291 x20521 (not x5634) x31846 x27670)
+:assumption (or (not x12847) x23801)
+:assumption (or (not x19428) (not x22913))
+:assumption (or (not x3005) (not x2876))
+:assumption (or (not x9371) (not x12459))
+:assumption (or x31683 (not x9278))
+:assumption (or (not x29059) x17009)
+:assumption (or x4350 (not x20253))
+:assumption (or (not x1055) (not x14839))
+:assumption (or x11945 (not x21298) x22535)
+:assumption (or (not x30348) x19745)
+:assumption (or (not x25948) x14887)
+:assumption (or x30914 x30704)
+:assumption (or x24015 x6969 x11737 (not x28198))
+:assumption (or (not x719) x4607)
+:assumption (or x16455 (not x14300))
+:assumption (or x24999 (not x17010))
+:assumption (or x28727 x27387)
+:assumption (or (not x12550) x3208)
+:assumption (or x4412 (not x28291))
+:assumption (or (not x18859) x14520 (not x3780))
+:assumption (or (not x14397) (not x13576))
+:assumption (or (not x27899) (not x12744))
+:assumption (or x12790 x3623)
+:assumption (or (not x20838) (not x3794))
+:assumption (or (not x6049) x25366)
+:assumption (or x5916 x11202)
+:assumption (or (not x4784) (not x23722))
+:assumption (or x31288 (not x12871))
+:assumption (or x25471 x6044 x31569)
+:assumption (or x30818 (not x24886))
+:assumption (or x6160 x12184)
+:assumption (or x20845 x9870)
+:assumption (or x17717 x30921)
+:assumption (or (not x18092) (not x13411))
+:assumption (or (not x23059) x3603)
+:assumption (or x8375 (not x1373))
+:assumption (or x24333 x6273)
+:assumption (or x26680 x15129 x21815)
+:assumption (or (not x3437) x29732)
+:assumption (or x31026 (not x1861))
+:assumption (or x29901 x18462)
+:assumption (or x13522 (not x25167) x2570 x19210 (not x13875))
+:assumption (or x5724 (not x28606))
+:assumption (or (not x19337) x18497)
+:assumption (or (not x6750) (not x3220) x16099 x9627 x3715 (not x27002))
+:assumption (or x27910 (not x23928))
+:assumption (or (not x16736) (not x6771))
+:assumption (or x8002 (not x21303))
+:assumption (or x8345 (not x9248))
+:assumption (or x30148 x23244 x2207)
+:assumption (or x22653 (not x122))
+:assumption (or (not x20550) x22425)
+:assumption (or x14206 (not x17668) (not x14764) x7403 (not x5805) x26940 x25615 (not x31283) (not x13004))
+:assumption (or x11083 x30155)
+:assumption (or (not x9385) (not x13981))
+:assumption (or (not x8714) (not x29555))
+:assumption (or (not x21872) x14983)
+:assumption (or x7547 x668)
+:assumption (or (not x2009) (not x509))
+:assumption (or (not x12045) (not x6232))
+:assumption (or x9008 x15264)
+:assumption (or (not x20117) (not x102))
+:assumption (or x24188 (not x13434))
+:assumption (or (not x4479) x24232)
+:assumption (or x30057 (not x374))
+:assumption (or x10849 (not x11819))
+:assumption (or x8518 (not x16563))
+:assumption (or (not x20785) (not x9056))
+:assumption (or (not x5922) (not x15659) x20633)
+:assumption (or (not x31679) x7044)
+:assumption (or (not x25060) (not x24321))
+:assumption (or (not x5370) (not x18273))
+:assumption (or x21004 (not x30489))
+:assumption (or (not x18) x26040)
+:assumption (or (not x20809) (not x6628))
+:assumption (or x23566 (not x6050))
+:assumption (or (not x1393) (not x4780))
+:assumption (or x1294 (not x5267))
+:assumption (or (not x28054) x26903)
+:assumption (or x9033 (not x8002))
+:assumption (or x18142 (not x5299))
+:assumption (or x9954 x11061)
+:assumption (or (not x28678) x17908)
+:assumption (or (not x25175) x2043)
+:assumption (or x24282 (not x18790))
+:assumption (or (not x25788) x14898)
+:assumption (or x4239 x29818)
+:assumption (or x15667 (not x18859))
+:assumption (or (not x28789) (not x18172))
+:assumption (or (not x24693) (not x31630))
+:assumption (or (not x5564) x1177 x18286 (not x4685))
+:assumption (or (not x14455) (not x7748) x3435 (not x1745))
+:assumption (or (not x13575) x7392 x1484)
+:assumption (or x2595 x16917)
+:assumption (or (not x1141) x8002)
+:assumption (or (not x22590) x16140 (not x31378) x9531 (not x10248) (not x9133) x9794 x6591 x9106)
+:assumption (or (not x6562) x27684)
+:assumption (or (not x19829) x23458)
+:assumption (or x1404 (not x27240))
+:assumption (or (not x2738) (not x18325))
+:assumption (or x9621 (not x9557))
+:assumption (or (not x10485) x22520 (not x20357))
+:assumption (or (not x13674) (not x13956) (not x12633) (not x15102))
+:assumption (or (not x11367) (not x13154))
+:assumption (or x5219 (not x21745))
+:assumption (or (not x21152) (not x13381))
+:assumption (or x28996 (not x29526))
+:assumption (or (not x28063) x15042)
+:assumption (or (not x22601) (not x19980))
+:assumption (or (not x16318) (not x13502))
+:assumption (or (not x18456) (not x5068))
+:assumption (or (not x1837) x19474)
+:assumption (or x12158 (not x18859) (not x28763))
+:assumption (or (not x2445) x7968)
+:assumption (or x17902 (not x7067))
+:assumption (or x23904 (not x23137))
+:assumption (or x15577 x30310)
+:assumption (or x24241 x6746)
+:assumption (or (not x834) (not x14037))
+:assumption (or (not x26569) (not x16329))
+:assumption (or x9541 (not x18317))
+:assumption (or x8757 (not x27205))
+:assumption (or (not x27774) (not x26810))
+:assumption (or (not x6734) x15020 (not x29959))
+:assumption (or (not x22036) x30696)
+:assumption (or (not x14641) (not x5854))
+:assumption (or (not x12962) x8375)
+:assumption (or (not x11119) x20088 (not x19061) (not x30891))
+:assumption (or x26117 x25659 x8340)
+:assumption (or (not x15323) (not x16374))
+:assumption (or (not x10953) x11046)
+:assumption (or x30891 (not x20088))
+:assumption (or x762 (not x29737) (not x28077) (not x9452) x7127 x4881)
+:assumption (or (not x1298) x29152)
+:assumption (or (not x29959) x25149)
+:assumption (or (not x16579) x26459 (not x22042) x25721 (not x31091))
+:assumption (or (not x26822) x20402)
+:assumption (or (not x14330) (not x2749) x26779 (not x27573) x13272)
+:assumption (or x29067 (not x23249))
+:assumption (or x4717 x4699)
+:assumption (or (not x16229) (not x13983))
+:assumption (or x8165 (not x29336))
+:assumption (or (not x9793) (not x15893))
+:assumption (or (not x728) x1620)
+:assumption (or x26778 x27664 x626 x13420)
+:assumption (or (not x27693) (not x6254))
+:assumption (or (not x6300) (not x2058))
+:assumption (or x21672 (not x23718))
+:assumption (or (not x5962) x17771)
+:assumption (or (not x18645) (not x11706))
+:assumption (or (not x24023) x494 x19616 (not x20087) x16877 (not x22987) x27081 x10138 x12751)
+:assumption (or (not x10122) x11293 x1359 (not x16784))
+:assumption (or (not x9160) x30182)
+:assumption (or (not x23383) x7967)
+:assumption (or x15432 x3691)
+:assumption (or (not x24895) x19599)
+:assumption (or x1932 (not x11877))
+:assumption (or (not x9864) (not x14761))
+:assumption (or x23203 x19790)
+:assumption (or x25376 x10635)
+:assumption (or (not x9025) x30051)
+:assumption (or x2688 x1265)
+:assumption (or (not x25116) x3361)
+:assumption (or x1438 x5699)
+:assumption (or (not x26401) (not x336))
+:assumption (or (not x25706) (not x8127) (not x16510) x31055 x18883 x743)
+:assumption (or x21414 x26363)
+:assumption (or (not x26943) x22322)
+:assumption (or x10627 (not x29560))
+:assumption (or (not x15809) (not x23222))
+:assumption (or (not x19080) x20291)
+:assumption (or x20608 x4318)
+:assumption (or (not x19864) x16598 x18003)
+:assumption (or (not x17016) x5011)
+:assumption (or (not x13003) (not x13172))
+:assumption (or (not x3508) (not x10366) x2549 x11384 (not x8581) x18582)
+:assumption (or (not x28182) x2133 x7835)
+:assumption (or x14788 x22234)
+:assumption (or (not x9205) (not x17075))
+:assumption (or (not x24657) x11422)
+:assumption (or (not x8257) (not x25953))
+:assumption (or (not x9669) x25491 x22283 (not x30113))
+:assumption (or (not x20550) x13454)
+:assumption (or (not x19862) x5667)
+:assumption (or (not x8841) x19786)
+:assumption (or x15997 x14078)
+:assumption (or (not x16067) (not x27629))
+:assumption (or (not x1628) x16395 (not x20588))
+:assumption (or (not x27434) (not x14188))
+:assumption (or x27465 (not x9924))
+:assumption (or x3912 (not x25315))
+:assumption (or x5227 x1556)
+:assumption (or x26672 x26013)
+:assumption (or (not x6081) (not x6322))
+:assumption (or x13575 (not x1484))
+:assumption (or (not x29323) (not x4259))
+:assumption (or (not x3747) (not x1547))
+:assumption (or (not x11090) (not x8002) x18464 (not x7537) x23244)
+:assumption (or x11371 x21773)
+:assumption (or (not x31143) (not x29787))
+:assumption (or x24215 x12924)
+:assumption (or x31134 (not x25662) (not x31063))
+:assumption (or (not x23184) (not x21668))
+:assumption (or x28541 x31829 x11865)
+:assumption (or (not x1066) x13945)
+:assumption (or (not x24722) (not x20688))
+:assumption (or x30097 (not x14335))
+:assumption (or (not x18003) x1 (not x16003))
+:assumption (or x24651 (not x3487))
+:assumption (or x28136 (not x25075))
+:assumption (or (not x28417) x11484)
+:assumption (or (not x11650) (not x16328))
+:assumption (or x23244 x8002 (not x18033) x12686)
+:assumption (or x17227 x31370)
+:assumption (or x7188 (not x18559) (not x7820))
+:assumption (or x26229 (not x6051))
+:assumption (or (not x17575) x20009)
+:assumption (or (not x24191) (not x23032))
+:assumption (or (not x16953) x10970)
+:assumption (or (not x1378) (not x8651))
+:assumption (or (not x22122) x28863)
+:assumption (or x9952 (not x30601))
+:assumption (or (not x894) (not x18551))
+:assumption (or (not x3536) (not x23591))
+:assumption (or (not x25366) (not x21264))
+:assumption (or x16304 x15999 (not x15420))
+:assumption (or x10655 (not x18272))
+:assumption (or (not x24528) (not x3168))
+:assumption (or x8002 (not x31647))
+:assumption (or (not x26730) x6351)
+:assumption (or (not x13782) (not x14517))
+:assumption (or (not x31192) x23244)
+:assumption (or (not x1210) (not x11694))
+:assumption (or x13598 (not x19801))
+:assumption (or (not x23971) (not x6481) (not x31546) (not x24632))
+:assumption (or (not x16897) (not x20983))
+:assumption (or (not x16664) x27750)
+:assumption (or (not x30545) x2803)
+:assumption (or (not x8009) x9227)
+:assumption (or (not x22402) x23244)
+:assumption (or x31149 (not x4060))
+:assumption (or x17580 x8620)
+:assumption (or x4639 x23)
+:assumption (or x5814 (not x8069))
+:assumption (or x24079 x12249)
+:assumption (or x5959 (not x13956))
+:assumption (or (not x30667) x31154)
+:assumption (or x14081 x258)
+:assumption (or x2578 x4787 x28885)
+:assumption (or (not x10403) (not x14973))
+:assumption (or x1196 x9621)
+:assumption (or x2284 x16025)
+:assumption (or x18897 x6594)
+:assumption (or x11330 (not x20829) x26483 (not x23244) (not x7064) x9115)
+:assumption (or (not x9853) (not x22932))
+:assumption (or (not x27798) (not x4058))
+:assumption (or (not x13576) x26974)
+:assumption (or (not x10805) (not x15854))
+:assumption (or (not x15795) (not x1363))
+:assumption (or (not x5973) x17530)
+:assumption (or (not x27537) (not x12334) (not x7893))
+:assumption (or x30401 (not x5713) x16224 x18512 x28859 x7286)
+:assumption (or (not x4886) x18518 x1377)
+:assumption (or (not x9392) (not x19368))
+:assumption (or x16212 (not x23050))
+:assumption (or (not x2178) (not x22981) x26994)
+:assumption (or x10164 (not x22164) x3617 x10092 (not x13160) (not x27273) x28131 (not x7287))
+:assumption (or (not x26811) x18895)
+:assumption (or (not x23794) x21896)
+:assumption (or x14080 x23698)
+:assumption (or (not x3713) (not x29821))
+:assumption (or x20077 x23906)
+:assumption (or (not x4033) (not x16257))
+:assumption (or (not x20418) x5273)
+:assumption (or x12995 (not x31563))
+:assumption (or (not x20146) x20172)
+:assumption (or x645 (not x16172) (not x18431) (not x21153) (not x777) (not x19965))
+:assumption (or (not x5470) (not x14839) x22175)
+:assumption (or (not x25784) x24839)
+:assumption (or (not x9812) x15795)
+:assumption (or (not x24794) (not x19991) (not x22531))
+:assumption (or (not x21685) (not x4335))
+:assumption (or x8952 (not x18247))
+:assumption (or (not x16988) x10064)
+:assumption (or x5147 x6111)
+:assumption (or x26961 x1398)
+:assumption (or x16003 (not x11342))
+:assumption (or (not x16038) (not x8170))
+:assumption (or (not x3645) x22326)
+:assumption (or (not x19178) x6228)
+:assumption (or x30900 (not x28732))
+:assumption (or x2124 (not x30124))
+:assumption (or x22173 x14367)
+:assumption (or x7805 (not x10886))
+:assumption (or (not x4646) (not x11992))
+:assumption (or x8134 x16425)
+:assumption (or (not x28881) (not x28611))
+:assumption (or x20606 x175)
+:assumption (or (not x10421) x5604)
+:assumption (or x3572 x19500)
+:assumption (or x21084 (not x4085))
+:assumption (or x6140 x10254)
+:assumption (or (not x9088) (not x2141))
+:assumption (or x24459 x10081)
+:assumption (or (not x26866) (not x7411))
+:assumption (or x30152 (not x22802))
+:assumption (or (not x11927) x5528)
+:assumption (or (not x24936) x22090)
+:assumption (or (not x13208) x10655)
+:assumption (or (not x26784) (not x21849))
+:assumption (or x1288 (not x10255))
+:assumption (or x18174 (not x1617) x14111)
+:assumption (or x24980 x9202 (not x30470) (not x12438))
+:assumption (or x2738 x11921)
+:assumption (or x24756 (not x20122))
+:assumption (or (not x26554) x28331)
+:assumption (or x27869 x4153)
+:assumption (or (not x1236) x25098)
+:assumption (or (not x20951) x5441)
+:assumption (or (not x5467) (not x11871))
+:assumption (or (not x31394) (not x26115))
+:assumption (or (not x3494) x6026)
+:assumption (or (not x31829) x14621)
+:assumption (or (not x15756) x6307)
+:assumption (or (not x5834) x28417)
+:assumption (or x25285 (not x18038))
+:assumption (or x27602 x30730)
+:assumption (or x24689 (not x15155))
+:assumption (or x2104 x3240)
+:assumption (or x10555 (not x5750))
+:assumption (or x27413 (not x6444) x4491)
+:assumption (or x8554 (not x16025))
+:assumption (or (not x18614) (not x9414))
+:assumption (or x12387 x5777)
+:assumption (or (not x25366) (not x20402) x9533 (not x20929) (not x14641))
+:assumption (or x28912 x27527 (not x1950))
+:assumption (or (not x10199) (not x28851))
+:assumption (or x23975 (not x3894))
+:assumption (or x19771 (not x19166))
+:assumption (or (not x3274) x2904)
+:assumption (or (not x30448) x23126)
+:assumption (or x15752 (not x17359) x18555)
+:assumption (or x23455 x25970)
+:assumption (or x15286 (not x9926))
+:assumption (or (not x6395) (not x19290))
+:assumption (or (not x14551) (not x29986))
+:assumption (or x13444 (not x13790))
+:assumption (or x2291 (not x22204))
+:assumption (or (not x18239) x28367)
+:assumption (or (not x23626) x7286)
+:assumption (or (not x2893) x30525)
+:assumption (or (not x748) (not x28414))
+:assumption (or x18517 (not x6951) (not x9025))
+:assumption (or (not x1482) x6911)
+:assumption (or x16096 x6322)
+:assumption (or x21910 (not x31123))
+:assumption (or (not x22447) (not x2701) x15861)
+:assumption (or (not x3709) x30113)
+:assumption (or x10750 (not x19236))
+:assumption (or x1214 x28027)
+:assumption (or x27004 (not x17170))
+:assumption (or x16073 x27404)
+:assumption (or (not x14375) x2696)
+:assumption (or x5558 x17896)
+:assumption (or x9036 x19291 x10785 (not x14663) x7537 x3784)
+:assumption (or (not x31754) (not x18524))
+:assumption (or (not x31760) x7176)
+:assumption (or x9008 x13746)
+:assumption (or (not x25311) (not x25315) (not x20119))
+:assumption (or (not x16378) (not x12158))
+:assumption (or x25788 (not x11233))
+:assumption (or (not x20748) x24855)
+:assumption (or x11628 (not x21130))
+:assumption (or x30248 x28581)
+:assumption (or x14931 (not x11755))
+:assumption (or x16993 (not x23996) (not x18859))
+:assumption (or x8902 (not x3639))
+:assumption (or (not x8002) x7608)
+:assumption (or x14455 x22420)
+:assumption (or (not x14953) x25752)
+:assumption (or (not x7349) x15349)
+:assumption (or x2246 (not x12491))
+:assumption (or (not x1582) (not x29303) (not x22647))
+:assumption (or x31062 (not x9008))
+:assumption (or x21580 x18150)
+:assumption (or x30050 x19578)
+:assumption (or x964 (not x7920) x4204)
+:assumption (or x5991 x21811)
+:assumption (or x9008 x18350)
+:assumption (or x25737 (not x10629))
+:assumption (or (not x12758) (not x25490) (not x8323) (not x30324) (not x2422) x23550 x20176 x13673 (not x11336))
+:assumption (or (not x29483) x31659)
+:assumption (or x4481 (not x25159) (not x5279) x18665 (not x6293))
+:assumption (or (not x10931) (not x9008) x5696 (not x5528) x20723)
+:assumption (or x3221 x10459)
+:assumption (or (not x23337) x8431)
+:assumption (or x14302 x14232)
+:assumption (or (not x17819) x18223)
+:assumption (or (not x9419) x3033 x21815)
+:assumption (or x4334 x25751)
+:assumption (or (not x8002) x27368)
+:assumption (or x11237 x692)
+:assumption (or x16272 x21690)
+:assumption (or (not x9804) x30258)
+:assumption (or (not x15795) x10019)
+:assumption (or (not x64) x26546)
+:assumption (or (not x17548) (not x29312))
+:assumption (or (not x20550) (not x30432) (not x28244))
+:assumption (or (not x24966) x20116 (not x11489) x26057)
+:assumption (or (not x16263) x23193)
+:assumption (or (not x8429) x11195)
+:assumption (or x10571 (not x14435))
+:assumption (or (not x723) x20512)
+:assumption (or x26790 (not x11465))
+:assumption (or x23534 (not x27123))
+:assumption (or (not x4865) (not x2596))
+:assumption (or (not x4645) (not x23303))
+:assumption (or (not x15732) x27347)
+:assumption (or (not x259) (not x9272))
+:assumption (or x5160 (not x8293) x27654 (not x22782) x5485 (not x17422))
+:assumption (or (not x25659) (not x12270) x29293)
+:assumption (or (not x24079) x10064 (not x17086) (not x26990) (not x15917) (not x22548))
+:assumption (or (not x7313) x10382)
+:assumption (or x8002 (not x31650) x25735)
+:assumption (or (not x11850) (not x31144))
+:assumption (or (not x23841) x5335)
+:assumption (or (not x16029) x4180)
+:assumption (or (not x14557) (not x7918) x17611 (not x8914) (not x21605) x3860)
+:assumption (or (not x31549) (not x2569))
+:assumption (or x13293 x24204)
+:assumption (or x27636 (not x31238) (not x300))
+:assumption (or x4877 x3695)
+:assumption (or (not x18320) (not x19600))
+:assumption (or (not x576) (not x22567))
+:assumption (or (not x30208) (not x24182) x9713)
+:assumption (or x12556 (not x27537))
+:assumption (or (not x8995) x3000)
+:assumption (or x13746 (not x30009))
+:assumption (or (not x31076) (not x15085))
+:assumption (or (not x22153) x1411)
+:assumption (or (not x9887) (not x24756) (not x29312) (not x30080))
+:assumption (or (not x6821) (not x4924))
+:assumption (or (not x5528) (not x5033))
+:assumption (or (not x31693) (not x20198))
+:assumption (or x19184 x5047)
+:assumption (or (not x14836) (not x14347) (not x30002) x853)
+:assumption (or x17045 x7682)
+:assumption (or x10927 (not x26597))
+:assumption (or (not x31777) (not x8622))
+:assumption (or x18945 x20254)
+:assumption (or x3459 x22452)
+:assumption (or (not x19948) x10594)
+:assumption (or x1622 (not x381))
+:assumption (or x9383 x8393)
+:assumption (or (not x896) (not x22605))
+:assumption (or x1542 (not x11859) (not x13956) (not x6780))
+:assumption (or x25659 x24436 (not x9750))
+:assumption (or x27461 (not x22550))
+:assumption (or (not x6903) (not x4184))
+:assumption (or x5344 (not x4152))
+:assumption (or x20422 x17617)
+:assumption (or (not x31069) x14395)
+:assumption (or (not x24750) x29168)
+:assumption (or x30762 x2228)
+:assumption (or (not x12834) (not x2012))
+:assumption (or x8703 x17394)
+:assumption (or x11281 (not x16403))
+:assumption (or (not x13092) (not x13820))
+:assumption (or (not x25823) (not x9435))
+:assumption (or (not x14100) x7911)
+:assumption (or (not x9533) x14641)
+:assumption (or (not x29173) (not x18432))
+:assumption (or x28993 x1913 x25659)
+:assumption (or (not x3782) (not x19405))
+:assumption (or x20949 (not x11782))
+:assumption (or x30113 x18369 (not x10121))
+:assumption (or x21390 x26871)
+:assumption (or (not x31081) x25659 (not x30124) (not x17353))
+:assumption (or x21026 (not x9533))
+:assumption (or x18804 (not x579))
+:assumption (or x28459 x19528)
+:assumption (or x15977 x9304)
+:assumption (or x29533 (not x8593))
+:assumption (or (not x30085) (not x27626))
+:assumption (or x774 (not x7964))
+:assumption (or x24831 x28976 x10279 x17835)
+:assumption (or (not x3628) (not x7765))
+:assumption (or x11520 (not x6746))
+:assumption (or (not x14742) (not x25073))
+:assumption (or x29028 x27173)
+:assumption (or (not x7952) (not x16541))
+:assumption (or x2500 (not x3544))
+:assumption (or (not x9053) (not x20658))
+:assumption (or x20946 (not x26532))
+:assumption (or x4453 x27540)
+:assumption (or x12493 x16304)
+:assumption (or (not x9258) (not x4293))
+:assumption (or (not x28162) x16910)
+:assumption (or (not x29317) x14048)
+:assumption (or (not x24431) x2784 x16304)
+:assumption (or (not x9135) x18311 (not x25710) x21771 (not x12065) (not x4026) (not x25431))
+:assumption (or x11151 x20439)
+:assumption (or x17096 x23428)
+:assumption (or x9208 (not x28366))
+:assumption (or x13773 x16510)
+:assumption (or (not x18042) x81)
+:assumption (or (not x6646) x31777)
+:assumption (or x31430 (not x27233))
+:assumption (or x13622 x14788)
+:assumption (or (not x25415) (not x12739))
+:assumption (or x20893 (not x16942))
+:assumption (or (not x3254) x18165)
+:assumption (or x30872 (not x8357) x25065 (not x5343) x31906)
+:assumption (or x15338 (not x8170))
+:assumption (or x19325 x14881)
+:assumption (or x17084 x912)
+:assumption (or (not x9912) (not x1042))
+:assumption (or (not x14692) (not x28193))
+:assumption (or (not x1854) x8979 x11247 x23091 x11580 x26227)
+:assumption (or (not x25026) x5953)
+:assumption (or (not x11134) (not x2602))
+:assumption (or (not x18603) x21483)
+:assumption (or x12758 (not x15112))
+:assumption (or (not x9803) x14293)
+:assumption (or (not x31604) (not x23183))
+:assumption (or x20047 x5425)
+:assumption (or x20485 x6912)
+:assumption (or x27212 (not x9008))
+:assumption (or (not x31279) x1312)
+:assumption (or x1550 (not x634))
+:assumption (or x22892 (not x12339))
+:assumption (or (not x9124) (not x12394))
+:assumption (or (not x9502) x27169)
+:assumption (or x5426 x2449)
+:assumption (or x11574 (not x24200))
+:assumption (or x22793 x5707)
+:assumption (or (not x9008) (not x11116))
+:assumption (or x20134 x31777 x25525 (not x31105))
+:assumption (or (not x19126) x7049)
+:assumption (or x16832 x12052)
+:assumption (or (not x2123) (not x12578))
+:assumption (or x8002 x7541 (not x19829) (not x2157) (not x7535) x25028)
+:assumption (or x21546 x8605 (not x13317))
+:assumption (or x18210 (not x8002))
+:assumption (or x7374 x15288)
+:assumption (or x2778 x21333)
+:assumption (or (not x28300) x28538)
+:assumption (or x4767 x30373)
+:assumption (or (not x4306) x16510)
+:assumption (or (not x13550) (not x6840))
+:assumption (or x5035 x11503)
+:assumption (or x8002 (not x14650) (not x16501))
+:assumption (or (not x15439) (not x827))
+:assumption (or x30028 x10051)
+:assumption (or x9700 (not x24980))
+:assumption (or x18289 x12124)
+:assumption (or (not x22570) (not x23299))
+:assumption (or x30631 (not x23182) x14677)
+:assumption (or (not x26374) x26762)
+:assumption (or x15621 x13534)
+:assumption (or (not x17653) (not x28352))
+:assumption (or (not x28193) x12479)
+:assumption (or x19013 (not x27614))
+:assumption (or x3701 x19372)
+:assumption (or (not x27566) (not x4845))
+:assumption (or (not x16391) (not x4026))
+:assumption (or (not x12612) (not x23921))
+:assumption (or (not x951) (not x9008))
+:assumption (or (not x15439) (not x24778))
+:assumption (or (not x28511) (not x21799) x6216 (not x6629))
+:assumption (or (not x29435) (not x19155))
+:assumption (or x20689 (not x11845) x2609 x24056)
+:assumption (or x15749 (not x4924))
+:assumption (or x31242 x4863)
+:assumption (or (not x1393) x20879)
+:assumption (or x22805 x17743)
+:assumption (or (not x4750) (not x18689))
+:assumption (or (not x23920) (not x14620))
+:assumption (or x13707 x28209 (not x26484) x23192)
+:assumption (or x6709 x6243)
+:assumption (or x11281 x7169 (not x5540) x4372 x24460)
+:assumption (or x9439 (not x1766) (not x25334) (not x20517))
+:assumption (or x14591 x13031)
+:assumption (or (not x7735) x9597)
+:assumption (or (not x9331) x22929)
+:assumption (or x5404 x5406)
+:assumption (or (not x8602) x15627)
+:assumption (or (not x7618) (not x31419))
+:assumption (or (not x21397) x31896)
+:assumption (or (not x6788) (not x19415))
+:assumption (or (not x19370) (not x17512))
+:assumption (or x20066 x23086)
+:assumption (or (not x14487) x4314 x22154 x1925)
+:assumption (or x4289 x13795 (not x1938))
+:assumption (or (not x19864) (not x26554))
+:assumption (or x30444 x5528)
+:assumption (or x13956 (not x10765))
+:assumption (or (not x15051) x15808)
+:assumption (or (not x2917) (not x6559))
+:assumption (or x9324 x6301)
+:assumption (or (not x22750) (not x25847))
+:assumption (or x15237 x22368)
+:assumption (or (not x21758) (not x30471) (not x23169))
+:assumption (or x11078 x6253)
+:assumption (or (not x19214) (not x15408) x28783 (not x29257) x8987)
+:assumption (or (not x243) x17655 x16727 (not x9595))
+:assumption (or x12119 (not x17259))
+:assumption (or (not x11085) x4799 (not x26270) x292 (not x18295) (not x23945))
+:assumption (or (not x10631) (not x3782))
+:assumption (or x24972 x18749)
+:assumption (or x20205 (not x31641))
+:assumption (or (not x6282) x24826)
+:assumption (or (not x2318) (not x16185))
+:assumption (or (not x31674) (not x3769))
+:assumption (or (not x15611) (not x25963) x1842 x28973 x13965)
+:assumption (or x31253 (not x15080))
+:assumption (or x25772 x25221)
+:assumption (or (not x26789) x11932)
+:assumption (or (not x3289) (not x18541))
+:assumption (or x28935 x16551 (not x2364) (not x22488))
+:assumption (or (not x7547) (not x1730))
+:assumption (or (not x14117) x1512)
+:assumption (or (not x16510) x17466)
+:assumption (or x22831 (not x25636))
+:assumption (or x26649 x18534)
+:assumption (or (not x14099) x31434)
+:assumption (or (not x6421) (not x12885))
+:assumption (or x1607 x25706)
+:assumption (or (not x27725) (not x7673) x25168)
+:assumption (or (not x5978) (not x16745))
+:assumption (or x21167 x2325)
+:assumption (or x23244 x17343 x4934)
+:assumption (or x22844 x1250)
+:assumption (or (not x6251) x5369)
+:assumption (or x26399 x21388)
+:assumption (or (not x25012) (not x28485))
+:assumption (or x10056 (not x13697) (not x6974) (not x2620) (not x20415))
+:assumption (or (not x12199) (not x24184))
+:assumption (or x15687 (not x14203) (not x8002))
+:assumption (or x24579 x3494 (not x21184) (not x7424) (not x10090))
+:assumption (or (not x30442) (not x1281))
+:assumption (or (not x17025) (not x8004))
+:assumption (or (not x20087) (not x23181))
+:assumption (or x12343 (not x6024))
+:assumption (or (not x2499) x22032)
+:assumption (or x6063 x14985 x9462 x22052 (not x22812) (not x22226) x1529)
+:assumption (or (not x25073) x21583)
+:assumption (or (not x12855) (not x13788) (not x11281) (not x22780) (not x18503))
+:assumption (or x30135 (not x1362))
+:assumption (or x671 x30714)
+:assumption (or x26665 x3266)
+:assumption (or x11614 x5869)
+:assumption (or (not x27870) x4309)
+:assumption (or x25366 x9827)
+:assumption (or (not x9008) (not x8466) x5053)
+:assumption (or x72 (not x26253))
+:assumption (or x16193 (not x29926))
+:assumption (or x14113 x16303 (not x3366) x5252)
+:assumption (or (not x7102) x19756)
+:assumption (or (not x860) (not x13379))
+:assumption (or (not x5221) (not x20569) x27537)
+:assumption (or (not x24202) x6909)
+:assumption (or (not x27788) x22567)
+:assumption (or x8002 x10421)
+:assumption (or (not x20926) (not x22468))
+:assumption (or (not x7037) (not x21298))
+:assumption (or (not x9696) x4555 (not x1451))
+:assumption (or (not x10131) (not x1609))
+:assumption (or (not x23875) x24257)
+:assumption (or x5396 (not x3398))
+:assumption (or (not x31190) x23539)
+:assumption (or (not x15866) x13851 (not x16358))
+:assumption (or x3486 x13065)
+:assumption (or (not x11754) x30165 x25659 x31063)
+:assumption (or x21356 x28014)
+:assumption (or (not x28273) x17927)
+:assumption (or (not x5320) x15600 x9933 (not x21749) (not x5979) x18369)
+:assumption (or (not x6432) x6606)
+:assumption (or x11350 (not x2174))
+:assumption (or (not x28198) (not x21914))
+:assumption (or x3778 (not x10248))
+:assumption (or x31344 x3782 x10631)
+:assumption (or (not x12684) x29057 (not x7980))
+:assumption (or x16602 (not x8804))
+:assumption (or (not x1393) (not x18454) x2447)
+:assumption (or (not x14278) (not x11812))
+:assumption (or x17871 (not x23958))
+:assumption (or (not x9790) x27975)
+:assumption (or x22198 x2636 (not x28537) (not x8891))
+:assumption (or x2423 x5989)
+:assumption (or (not x17372) (not x22083))
+:assumption (or x14307 x30160)
+:assumption (or x8870 (not x25655))
+:assumption (or (not x13956) (not x18671))
+:assumption (or x8532 x24391)
+:assumption (or (not x8176) (not x22363))
+:assumption (or x8418 (not x6655))
+:assumption (or (not x12091) (not x14418))
+:assumption (or x28465 x12972)
+:assumption (or (not x20599) (not x19445))
+:assumption (or x29994 x19992 x13819 x15014)
+:assumption (or x9992 (not x31691))
+:assumption (or (not x17359) (not x10916))
+:assumption (or x27969 (not x7833))
+:assumption (or x17560 x802)
+:assumption (or x7736 x18931)
+:assumption (or x28907 (not x2271))
+:assumption (or x23244 (not x29649) x2768)
+:assumption (or (not x605) (not x13019) x24638 (not x13866) x9378)
+:assumption (or (not x6659) x3559)
+:assumption (or (not x14829) (not x2402))
+:assumption (or (not x20961) (not x1910))
+:assumption (or x22410 x6589)
+:assumption (or (not x11182) x2895 x24761)
+:assumption (or (not x17377) x4559)
+:assumption (or x16750 (not x8046))
+:assumption (or (not x13956) (not x2436))
+:assumption (or x11488 (not x29790))
+:assumption (or (not x21266) x31795)
+:assumption (or x15593 (not x30130))
+:assumption (or x23763 (not x6149) x18282)
+:assumption (or x21341 (not x18296))
+:assumption (or x10119 x29218)
+:assumption (or (not x26006) x26312)
+:assumption (or x252 x15770)
+:assumption (or x21995 x19062)
+:assumption (or (not x3299) x14085)
+:assumption (or x30528 (not x12864))
+:assumption (or (not x21038) (not x26078))
+:assumption (or x16025 x15335 (not x10060))
+:assumption (or (not x26403) x20179)
+:assumption (or (not x16847) (not x4378))
+:assumption (or (not x16619) (not x7919))
+:assumption (or x30696 (not x17101))
+:assumption (or x27998 (not x29786))
+:assumption (or (not x20172) x20146)
+:assumption (or (not x10277) (not x7060))
+:assumption (or x13794 x8449)
+:assumption (or (not x24745) (not x26892))
+:assumption (or x3594 (not x17712))
+:assumption (or (not x16745) (not x30638))
+:assumption (or (not x419) x21298)
+:assumption (or (not x9144) (not x15304))
+:assumption (or (not x3453) (not x3085))
+:assumption (or x17483 (not x24906) x29625 x22921 (not x28566))
+:assumption (or x13685 x11922)
+:assumption (or (not x27104) x4458 x27168)
+:assumption (or x16117 x25695 x23371)
+:assumption (or (not x13580) x29276)
+:assumption (or x18500 (not x20411))
+:assumption (or (not x27556) (not x25366))
+:assumption (or (not x23178) x25834)
+:assumption (or x17133 x4515)
+:assumption (or x9550 x6686 (not x10886) (not x25911))
+:assumption (or x8525 (not x13210))
+:assumption (or (not x25243) (not x18814))
+:assumption (or (not x13241) x1393)
+:assumption (or x25971 x20730)
+:assumption (or x5487 (not x5933))
+:assumption (or (not x10795) x30164)
+:assumption (or (not x12578) (not x7))
+:assumption (or (not x7780) x4008)
+:assumption (or x18158 x9008 (not x22292))
+:assumption (or (not x26172) (not x29605))
+:assumption (or (not x6500) x27267)
+:assumption (or (not x31024) (not x18203))
+:assumption (or (not x20019) x27330 (not x18805) x514 x10352 x6673)
+:assumption (or (not x14839) x14414)
+:assumption (or (not x12259) x30470)
+:assumption (or x4308 x14769)
+:assumption (or (not x2422) (not x27304))
+:assumption (or (not x14755) (not x3557))
+:assumption (or (not x2192) (not x24179))
+:assumption (or (not x12719) (not x25935))
+:assumption (or (not x21036) (not x479))
+:assumption (or (not x4370) (not x28708))
+:assumption (or x14395 (not x23856))
+:assumption (or x23322 (not x14846))
+:assumption (or (not x16809) x3310 (not x8002) x8705)
+:assumption (or (not x17517) x3549)
+:assumption (or x12043 x25394 x19059 x8352)
+:assumption (or x12974 x8261 (not x6351))
+:assumption (or x8060 x19025)
+:assumption (or x24410 (not x23279))
+:assumption (or (not x13661) x10213)
+:assumption (or x29621 x22604)
+:assumption (or (not x24484) x20041)
+:assumption (or (not x11281) (not x17592))
+:assumption (or x21262 (not x15102))
+:assumption (or (not x16510) x142 (not x22356) (not x29760) x16304 (not x9065) (not x21815))
+:assumption (or x20265 (not x9825))
+:assumption (or (not x6704) x11288)
+:assumption (or x10673 x30564)
+:assumption (or x17247 x16586 x9018)
+:assumption (or (not x1942) x17860 (not x4672))
+:assumption (or (not x2643) (not x4507) x3756 x4137 (not x10015) x28469)
+:assumption (or x27270 (not x349))
+:assumption (or x20479 x2449)
+:assumption (or (not x9259) (not x16375))
+:assumption (or (not x27522) (not x3955))
+:assumption (or (not x4267) (not x8577) (not x3238))
+:assumption (or (not x18586) (not x10464))
+:assumption (or x28410 x8002 (not x20258) x31241 x27632 (not x26816))
+:assumption (or x7268 x4403)
+:assumption (or x29257 x7385)
+:assumption (or x25790 x6187)
+:assumption (or (not x19319) x24019 (not x13166) x93 x17606 (not x9056) x1393 (not x20097))
+:assumption (or (not x4256) x24756 x7029 (not x26568))
+:assumption (or x10531 (not x6070) (not x434) x3709 (not x26106))
+:assumption (or x13111 x21472)
+:assumption (or x967 (not x16843))
+:assumption (or (not x25366) x8386)
+:assumption (or x6946 (not x31177))
+:assumption (or (not x12083) (not x25068))
+:assumption (or (not x18386) (not x5902))
+:assumption (or x19357 x24257)
+:assumption (or x24786 (not x28292))
+:assumption (or (not x28475) (not x3680) (not x7280) (not x2595) (not x15177) (not x5528))
+:assumption (or x26307 (not x31859))
+:assumption (or x6626 x14065)
+:assumption (or (not x18515) (not x2051))
+:assumption (or x20455 (not x21370))
+:assumption (or x15917 (not x28725))
+:assumption (or x2043 (not x388))
+:assumption (or (not x13829) x1620)
+:assumption (or (not x14844) (not x13956))
+:assumption (or x7795 (not x31563))
+:assumption (or (not x19137) x30420)
+:assumption (or x23963 x15918 (not x26312) (not x24107))
+:assumption (or (not x28448) (not x13790))
+:assumption (or (not x21217) x11410)
+:assumption (or x28459 x11516)
+:assumption (or x29706 x7339)
+:assumption (or (not x31573) x3221)
+:assumption (or x31829 x3176 x21608)
+:assumption (or (not x21249) x7152)
+:assumption (or (not x29881) (not x2252))
+:assumption (or (not x11905) x5722)
+:assumption (or x18642 x5224)
+:assumption (or x27678 x19113)
+:assumption (or (not x9008) x11022)
+:assumption (or x22149 (not x20885))
+:assumption (or (not x8345) (not x12923) x13886 x6285)
+:assumption (or (not x7350) x9383)
+:assumption (or x14092 (not x6876))
+:assumption (or x18537 x524)
+:assumption (or x16152 (not x30518))
+:assumption (or x16004 (not x10606))
+:assumption (or (not x18207) (not x17001) x24864)
+:assumption (or (not x9688) (not x15578) (not x6333) (not x3574))
+:assumption (or (not x2283) x6370)
+:assumption (or x8558 (not x14343))
+:assumption (or (not x23801) (not x8722))
+:assumption (or x22203 x2912)
+:assumption (or (not x4558) (not x25016))
+:assumption (or x28163 (not x22495))
+:assumption (or (not x8772) (not x17825))
+:assumption (or x16234 x5633)
+:assumption (or x6735 x8819)
+:assumption (or (not x10587) x26861)
+:assumption (or x615 (not x25424))
+:assumption (or x20677 (not x12035))
+:assumption (or x15779 x369 x964)
+:assumption (or x6198 (not x23599))
+:assumption (or (not x7642) (not x28122))
+:assumption (or x18309 x5179)
+:assumption (or x648 (not x20411))
+:assumption (or x21416 x15036 x30623 x15016)
+:assumption (or x19950 (not x18519))
+:assumption (or x6133 (not x26809))
+:assumption (or x5495 (not x4601))
+:assumption (or x11449 (not x20060) x24051 x14931 x17116)
+:assumption (or x6243 x5197 x6305 (not x4702))
+:assumption (or (not x5981) (not x4777))
+:assumption (or x21026 x12015)
+:assumption (or (not x16983) x8517)
+:assumption (or (not x15513) x9647)
+:assumption (or x31696 x15617)
+:assumption (or (not x628) (not x22442))
+:assumption (or (not x128) x11220)
+:assumption (or x17962 (not x14990))
+:assumption (or (not x2460) (not x2890))
+:assumption (or x30247 x29011)
+:assumption (or x13447 (not x25660))
+:assumption (or x27411 (not x1601))
+:assumption (or (not x20769) (not x23042))
+:assumption (or (not x30856) x28970 (not x873))
+:assumption (or x23646 (not x31782) (not x3378) (not x30118) (not x18136) (not x31830))
+:assumption (or x22295 x19426)
+:assumption (or (not x24488) x22140)
+:assumption (or x28242 (not x5379))
+:assumption (or x16247 (not x3608))
+:assumption (or x11640 (not x30010))
+:assumption (or (not x29312) (not x11618) (not x15272))
+:assumption (or x27194 (not x6436))
+:assumption (or (not x5957) (not x29810))
+:assumption (or (not x17221) (not x17989))
+:assumption (or x10334 x21712 x25178 x20253 (not x13556) x8522 (not x18907) (not x28268))
+:assumption (or (not x7389) x29995)
+:assumption (or (not x30208) (not x9250) (not x16862))
+:assumption (or x25481 (not x29723) (not x23668) (not x5934) x379 (not x28803))
+:assumption (or x14047 (not x14839))
+:assumption (or x13566 x10107)
+:assumption (or x2631 x3019)
+:assumption (or x1393 (not x28786))
+:assumption (or (not x24290) x29113)
+:assumption (or x729 x29820)
+:assumption (or (not x28899) (not x24133))
+:assumption (or (not x996) x24476 (not x29255))
+:assumption (or x13414 x10616 x15227 x3416)
+:assumption (or x12612 x13655 x23921 (not x1951))
+:assumption (or (not x19910) x26038)
+:assumption (or (not x17293) (not x5399))
+:assumption (or (not x24079) x17898)
+:assumption (or (not x7662) (not x20429))
+:assumption (or x27994 (not x3331))
+:assumption (or x8002 (not x11774))
+:assumption (or (not x6628) (not x3438))
+:assumption (or (not x2847) x1797)
+:assumption (or (not x31574) (not x17472))
+:assumption (or x29747 (not x29312) (not x20608) x24756)
+:assumption (or x3452 (not x8251))
+:assumption (or (not x21731) (not x8453) x16831 (not x19658))
+:assumption (or x4559 (not x15097))
+:assumption (or x26486 x3738)
+:assumption (or (not x9841) x25747)
+:assumption (or x16430 x3247)
+:assumption (or (not x17624) (not x25588))
+:assumption (or (not x30543) x13904)
+:assumption (or (not x9082) (not x29526))
+:assumption (or (not x8461) (not x28847))
+:assumption (or x7618 (not x27265) x31419)
+:assumption (or x20754 (not x1684))
+:assumption (or x25794 (not x3435))
+:assumption (or x19968 x2033)
+:assumption (or (not x1305) (not x31253) (not x20148) x17)
+:assumption (or x24122 x8002)
+:assumption (or x17554 x9766)
+:assumption (or x4729 x19942)
+:assumption (or (not x4278) x30227 x9453)
+:assumption (or (not x8414) x30969)
+:assumption (or x9597 x21350)
+:assumption (or (not x20998) x8383)
+:assumption (or x2072 (not x11152) (not x19711) x4184 x602)
+:assumption (or (not x6788) (not x26584))
+:assumption (or x5119 x25401)
+:assumption (or x12397 x3264 x785)
+:assumption (or (not x11498) x6584)
+:assumption (or x7149 (not x2678))
+:assumption (or x20753 (not x2646))
+:assumption (or x21554 x16133)
+:assumption (or x10182 (not x20391))
+:assumption (or (not x22352) (not x16333))
+:assumption (or x19644 (not x5))
+:assumption (or x26762 x13801)
+:assumption (or (not x28912) (not x29054))
+:assumption (or x28328 x29790 x9362 (not x11488))
+:assumption (or (not x8002) x20451)
+:assumption (or x7781 (not x3494))
+:assumption (or (not x8002) (not x1238))
+:assumption (or x15450 x96)
+:assumption (or x12936 (not x14104))
+:assumption (or x26300 x4555)
+:assumption (or (not x22301) x9495)
+:assumption (or (not x16693) (not x29587))
+:assumption (or x27089 (not x25796) x5886)
+:assumption (or (not x733) x18258 x12489 (not x15872) (not x453) (not x26021) (not x8058))
+:assumption (or x8002 (not x25985))
+:assumption (or (not x3063) (not x19158) x116)
+:assumption (or x13040 (not x15558))
+:assumption (or (not x30193) (not x12189))
+:assumption (or x14676 x21124)
+:assumption (or (not x12885) x29459)
+:assumption (or (not x31018) (not x12208))
+:assumption (or (not x20583) x7643)
+:assumption (or x9403 x458)
+:assumption (or x1025 (not x29855))
+:assumption (or x3926 x4412)
+:assumption (or x31799 x11472)
+:assumption (or (not x9008) (not x19304))
+:assumption (or x26066 x4378)
+:assumption (or x25768 x7067)
+:assumption (or x9887 x249)
+:assumption (or (not x16741) (not x13027))
+:assumption (or x21815 (not x13844))
+:assumption (or x8138 (not x4335))
+:assumption (or (not x4559) x20839 x8403)
+:assumption (or x18578 (not x27338))
+:assumption (or (not x27248) (not x10804) (not x5274))
+:assumption (or x30427 (not x12758))
+:assumption (or x11107 x8657)
+:assumption (or x9700 x30470)
+:assumption (or x25821 (not x21497))
+:assumption (or (not x305) x9221)
+:assumption (or (not x30498) x25348)
+:assumption (or (not x10489) (not x25659) (not x3093))
+:assumption (or (not x3964) (not x30007) (not x15464))
+:assumption (or x22733 x29436)
+:assumption (or x30229 (not x7362) x26561 (not x6977) (not x29422) (not x1613))
+:assumption (or x3586 x1686)
+:assumption (or (not x25077) x4674)
+:assumption (or x31547 (not x25723))
+:assumption (or x12876 (not x8496))
+:assumption (or (not x8002) x22580)
+:assumption (or (not x9935) (not x12573))
+:assumption (or (not x4098) x3417 (not x23992) (not x1552) x24632)
+:assumption (or (not x28302) x31235)
+:assumption (or x3171 x8002)
+:assumption (or (not x5308) x18018)
+:assumption (or (not x26205) x22790)
+:assumption (or x15713 x16993)
+:assumption (or (not x6351) x1399)
+:assumption (or (not x30292) (not x31354) x3001 x334 x25341)
+:assumption (or (not x17833) (not x13032))
+:assumption (or x2659 (not x27549))
+:assumption (or x7387 (not x7188))
+:assumption (or x11919 (not x14591))
+:assumption (or (not x31889) (not x23244))
+:assumption (or x4498 x31468)
+:assumption (or (not x9409) (not x5738))
+:assumption (or (not x26759) x9880 x2661 x5577)
+:assumption (or x11105 (not x31796) x827)
+:assumption (or (not x29472) (not x28367) (not x25590) (not x2014) (not x8872) x11582 x9437 (not x15977))
+:assumption (or x6144 (not x15621))
+:assumption (or (not x2700) (not x29806))
+:assumption (or x7727 (not x2869) (not x10227) x4307)
+:assumption (or x7769 (not x22240))
+:assumption (or (not x11708) (not x29772))
+:assumption (or x13622 x20812)
+:assumption (or (not x19638) (not x5067))
+:assumption (or (not x1228) x16378)
+:assumption (or x22019 (not x14951) (not x2118) x30945 x8595 x18071 (not x15178) (not x13085))
+:assumption (or x15822 (not x19518))
+:assumption (or x27317 (not x8836) (not x15022) (not x12011))
+:assumption (or (not x3696) (not x15102))
+:assumption (or (not x13678) x23816 x24003 (not x29973) (not x1846))
+:assumption (or x2888 (not x7181))
+:assumption (or x17601 x23132)
+:assumption (or x7066 (not x13313))
+:assumption (or x20723 (not x20555) (not x3498) x8995 x21387 x5069)
+:assumption (or x12376 x1479)
+:assumption (or (not x16723) x14945)
+:assumption (or x13873 (not x27893))
+:assumption (or (not x23699) x20606)
+:assumption (or (not x30113) (not x30108))
+:assumption (or x19061 (not x11532))
+:assumption (or x24878 x22692)
+:assumption (or (not x26143) (not x28567))
+:assumption (or (not x16025) x1614 x3712)
+:assumption (or (not x23244) x1929)
+:assumption (or x12151 x27021 (not x21298) (not x16908))
+:assumption (or (not x1533) (not x19012) (not x1136) (not x8902))
+:assumption (or x572 (not x15007))
+:assumption (or x21721 x12590)
+:assumption (or (not x13271) (not x26043))
+:assumption (or x12279 x31846 x27291 x1393 (not x11217) x20521 (not x25763) (not x5634))
+:assumption (or (not x9233) x27457)
+:assumption (or x19659 (not x11807))
+:assumption (or (not x3456) x29326)
+:assumption (or x28563 (not x4128))
+:assumption (or x2288 x27766)
+:assumption (or (not x30386) (not x28700) (not x21298) x6652)
+:assumption (or x24896 (not x20078) (not x5980) (not x21466) x29652 (not x21595) (not x23455) (not x15023))
+:assumption (or (not x17999) x13482 (not x20344))
+:assumption (or x16778 x16510)
+:assumption (or x16781 x4343)
+:assumption (or (not x4858) (not x20361))
+:assumption (or (not x21495) (not x6969))
+:assumption (or x4546 x12176)
+:assumption (or (not x5167) (not x22062))
+:assumption (or x17023 x21440)
+:assumption (or x18632 x1581 (not x169))
+:assumption (or (not x13837) x14512)
+:assumption (or (not x12812) x28044)
+:assumption (or (not x8976) x28051)
+:assumption (or (not x625) (not x25390))
+:assumption (or (not x18567) (not x14778) (not x15996) (not x24736) x8123)
+:assumption (or x15982 (not x4539))
+:assumption (or x3282 (not x20204))
+:assumption (or (not x11783) (not x28577) x31076 (not x4048))
+:assumption (or (not x15699) x648 x1087 x25807 (not x5528) (not x14744))
+:assumption (or (not x21983) x10836)
+:assumption (or (not x1731) x30434)
+:assumption (or (not x7265) x29325)
+:assumption (or x3546 (not x2416) (not x27713) x24863)
+:assumption (or x19555 x30302)
+:assumption (or (not x833) x8823)
+:assumption (or x25058 x20726)
+:assumption (or (not x12384) x17470)
+:assumption (or x25330 (not x14657))
+:assumption (or x4966 (not x24196))
+:assumption (or x3734 x29860)
+:assumption (or (not x27693) (not x28275))
+:assumption (or x1063 x888 x17680 x18404 (not x2825) (not x29090) x672 x11142)
+:assumption (or x27184 (not x6306) x5658)
+:assumption (or (not x18307) (not x16097))
+:assumption (or x9083 (not x4803) (not x14710) x4041)
+:assumption (or x21231 (not x18338))
+:assumption (or x7460 (not x20151))
+:assumption (or x9199 (not x15298))
+:assumption (or (not x30697) (not x19074))
+:assumption (or (not x8351) x14819 (not x29604) (not x23614) x2495 (not x29623))
+:assumption (or x3940 x28980)
+:assumption (or (not x5377) x6612)
+:assumption (or (not x2120) x17931)
+:assumption (or (not x11694) x25921)
+:assumption (or (not x20746) x2823)
+:assumption (or (not x9691) (not x9881))
+:assumption (or x17516 (not x19170))
+:assumption (or x19937 x28757)
+:assumption (or (not x9792) x21740)
+:assumption (or x30420 x24756)
+:assumption (or x17321 x3246)
+:assumption (or (not x1020) (not x7145))
+:assumption (or (not x14487) (not x30113) (not x3526) x1925)
+:assumption (or x29171 x15239)
+:assumption (or (not x18375) x11535)
+:assumption (or (not x12136) (not x29404))
+:assumption (or x8998 (not x993))
+:assumption (or (not x4009) x4423)
+:assumption (or x5430 x2672)
+:assumption (or (not x9558) (not x26392))
+:assumption (or x13292 (not x11117) x11488)
+:assumption (or x2807 (not x3036) x26897)
+:assumption (or (not x3689) x7515)
+:assumption (or (not x26628) x13537)
+:assumption (or x4000 (not x17062))
+:assumption (or x19859 (not x20782))
+:assumption (or x3236 (not x3332))
+:assumption (or (not x30432) x18797)
+:assumption (or (not x22702) (not x12646))
+:assumption (or x12771 x26337)
+:assumption (or (not x11193) (not x29527))
+:assumption (or (not x30553) x11246)
+:assumption (or (not x15055) x13434 (not x4865))
+:assumption (or x17951 (not x23931))
+:assumption (or x27040 x18696)
+:assumption (or (not x531) (not x13800))
+:assumption (or (not x26062) (not x31883))
+:assumption (or (not x4544) (not x30805))
+:assumption (or (not x29500) (not x2578) (not x971) x16148)
+:assumption (or (not x28657) x18249)
+:assumption (or (not x12364) x27105 x9008)
+:assumption (or x16849 x636 (not x19992))
+:assumption (or (not x24017) (not x13633))
+:assumption (or x22347 (not x31768))
+:assumption (or x8560 x17312)
+:assumption (or (not x25808) x19887 x5367 (not x29645))
+:assumption (or x18694 x18680)
+:assumption (or x23522 (not x3381))
+:assumption (or x14578 (not x21666))
+:assumption (or (not x17378) x13956)
+:assumption (or x12542 (not x24799))
+:assumption (or x30705 x13402)
+:assumption (or (not x13956) x7344 x2540)
+:assumption (or (not x30002) (not x15144))
+:assumption (or (not x5528) (not x14256))
+:assumption (or (not x9806) (not x1823))
+:assumption (or (not x2998) (not x9815) x30633 (not x10824))
+:assumption (or (not x7707) x5528)
+:assumption (or x29956 (not x1141))
+:assumption (or (not x10594) x16721 (not x26280) (not x11288) x19948)
+:assumption (or x22568 x20087)
+:assumption (or x26104 x15708)
+:assumption (or x18167 x14590)
+:assumption (or (not x8992) x7464)
+:assumption (or x21022 x27797)
+:assumption (or (not x22761) (not x16593))
+:assumption (or (not x55) x638)
+:assumption (or x24233 (not x24952))
+:assumption (or x2301 (not x3292))
+:assumption (or (not x16707) x7748 (not x4828) (not x27820))
+:assumption (or (not x22683) (not x24532))
+:assumption (or x30868 x8500)
+:assumption (or (not x24529) x30896)
+:assumption (or (not x13154) (not x31864))
+:assumption (or x13298 (not x10009))
+:assumption (or x26897 (not x3349))
+:assumption (or x27532 (not x247) (not x30310))
+:assumption (or x22360 (not x20482) (not x12863))
+:assumption (or (not x26005) (not x11982) (not x25911) x6686)
+:assumption (or (not x14288) (not x15438))
+:assumption (or (not x1581) x169)
+:assumption (or (not x6139) x7031)
+:assumption (or (not x4127) x8382)
+:assumption (or x16741 (not x5721) (not x29325) x25659)
+:assumption (or x14591 (not x17458))
+:assumption (or (not x18045) (not x12604) (not x15361) x13120)
+:assumption (or (not x23352) x10771)
+:assumption (or (not x16956) x28360 (not x14347) (not x28386))
+:assumption (or x29769 (not x8514))
+:assumption (or (not x6547) (not x1283))
+:assumption (or (not x9008) x7097 (not x8007))
+:assumption (or x6690 (not x8808))
+:assumption (or (not x21815) x28904)
+:assumption (or x25659 x28662)
+:assumption (or (not x15108) x24849)
+:assumption (or x20100 x30287)
+:assumption (or (not x17821) x19714)
+:assumption (or (not x2434) (not x6224))
+:assumption (or x19981 (not x5394))
+:assumption (or (not x30468) (not x28892))
+:assumption (or (not x22908) x22472)
+:assumption (or x18053 (not x12672))
+:assumption (or x20201 x27516)
+:assumption (or (not x21876) (not x12242))
+:assumption (or x21633 (not x3244))
+:assumption (or x3984 x3388)
+:assumption (or x22431 x19439)
+:assumption (or (not x28526) x762 x16025)
+:assumption (or x10171 (not x18219))
+:assumption (or (not x16828) (not x15915))
+:assumption (or x12780 (not x19328))
+:assumption (or x18377 (not x21088))
+:assumption (or (not x5719) x9008 x20055)
+:assumption (or (not x30249) x19994)
+:assumption (or (not x15334) (not x19835))
+:assumption (or x31824 (not x23199))
+:assumption (or x7688 (not x22128))
+:assumption (or x25175 (not x2043) x388 (not x18545) x9279)
+:assumption (or x29838 (not x6004))
+:assumption (or (not x25387) (not x30138))
+:assumption (or (not x8122) x17900)
+:assumption (or x7717 x15375)
+:assumption (or (not x17302) x8664)
+:assumption (or x12896 (not x6326))
+:assumption (or (not x30005) x28201)
+:assumption (or x28262 x10059 x29606)
+:assumption (or x28541 (not x31760))
+:assumption (or x8399 x827 x29454)
+:assumption (or x1404 x15795)
+:assumption (or x22396 x5844)
+:assumption (or (not x28912) (not x31845))
+:assumption (or (not x9008) x9621)
+:assumption (or (not x29348) (not x5349))
+:assumption (or x13605 (not x2876))
+:assumption (or (not x6423) (not x19697))
+:assumption (or x7598 (not x14771))
+:assumption (or (not x29454) x22059)
+:assumption (or x1945 x3413 (not x18859))
+:assumption (or x30751 x17102)
+:assumption (or x24753 x16840)
+:assumption (or (not x7308) (not x22008))
+:assumption (or (not x23510) (not x11792) x26453 (not x21889) x6149 (not x23816) (not x15193))
+:assumption (or (not x16510) x6307 (not x18042) (not x20664) (not x21815))
+:assumption (or x31216 (not x3221))
+:assumption (or x3595 (not x17681))
+:assumption (or x12546 (not x25957))
+:assumption (or (not x11564) x24925)
+:assumption (or (not x4476) (not x24050) x30999 (not x27764))
+:assumption (or (not x27589) (not x26442))
+:assumption (or (not x8370) (not x13278))
+:assumption (or x27782 (not x17801))
+:assumption (or (not x25366) x9655)
+:assumption (or (not x6623) (not x11112))
+:assumption (or (not x7133) (not x9657))
+:assumption (or (not x16510) x19584)
+:assumption (or x5801 (not x2334) x8993)
+:assumption (or (not x29453) x487)
+:assumption (or x22695 (not x7521))
+:assumption (or (not x4605) x8193)
+:assumption (or x21398 x9008)
+:assumption (or (not x7368) x20525 (not x18996) x23791 x30833 (not x26578))
+:assumption (or x9205 x17075 x218 x11343)
+:assumption (or (not x26452) x29329 x2738 x427)
+:assumption (or (not x28772) (not x19924))
+:assumption (or (not x27814) x2538)
+:assumption (or (not x4043) (not x28536))
+:assumption (or x9025 x4140)
+:assumption (or x876 x7945)
+:assumption (or (not x11893) (not x16553))
+:assumption (or x25632 x26407 x20252 x29869 x131)
+:assumption (or (not x7730) x25925)
+:assumption (or x30460 (not x6911))
+:assumption (or x27589 (not x11858))
+:assumption (or (not x28214) x20138)
+:assumption (or (not x15448) (not x2943))
+:assumption (or (not x22514) (not x11937))
+:assumption (or (not x24440) x7256)
+:assumption (or (not x9743) x9322)
+:assumption (or (not x27378) (not x26293))
+:assumption (or x10702 (not x12868) x30238 x26016 x25462)
+:assumption (or (not x5198) (not x6799))
+:assumption (or x21800 (not x26060))
+:assumption (or x5390 x14676)
+:assumption (or x3219 x15499)
+:assumption (or x27212 x29261)
+:assumption (or x16518 x9008 (not x28616))
+:assumption (or (not x15682) x8592)
+:assumption (or x19531 (not x28734))
+:assumption (or (not x555) x5589)
+:assumption (or x3799 x4177)
+:assumption (or (not x6439) (not x2185))
+:assumption (or (not x4647) (not x27347))
+:assumption (or (not x18191) (not x23190))
+:assumption (or x327 x14688 (not x2880))
+:assumption (or x25423 x19825)
+:assumption (or x5528 x1048)
+:assumption (or x16903 (not x16850) (not x29742))
+:assumption (or x26559 (not x8400))
+:assumption (or x18518 x14450)
+:assumption (or (not x29656) (not x28900))
+:assumption (or (not x22223) (not x25744))
+:assumption (or x18411 x1553)
+:assumption (or (not x4716) x7468)
+:assumption (or x5477 (not x14430))
+:assumption (or x25890 (not x21678) (not x30278))
+:assumption (or (not x7283) x1582)
+:assumption (or x26657 (not x19045))
+:assumption (or (not x19779) (not x2674))
+:assumption (or x27755 x27915 (not x11847) (not x17908))
+:assumption (or (not x4062) x27942)
+:assumption (or (not x320) (not x25720) (not x21298) x4538)
+:assumption (or x20788 (not x28115))
+:assumption (or x18441 x11072 x20651)
+:assumption (or (not x23713) x2133)
+:assumption (or x2127 (not x14079) x4904)
+:assumption (or (not x13238) (not x24776))
+:assumption (or x8081 (not x25200))
+:assumption (or x16533 x31660)
+:assumption (or x12804 (not x1118) (not x11178))
+:assumption (or x28330 (not x17075) (not x9651))
+:assumption (or x30739 x15861)
+:assumption (or (not x20173) (not x12056) (not x29592) (not x26340) x24079 x8654)
+:assumption (or x26390 (not x21244))
+:assumption (or (not x9818) (not x29015))
+:assumption (or x25772 x30867)
+:assumption (or (not x16025) (not x26145))
+:assumption (or x24679 x25659)
+:assumption (or (not x26436) (not x28063))
+:assumption (or x15692 (not x19994) x16374 x27685 x3897)
+:assumption (or x23244 x10064 x29264)
+:assumption (or x8002 x27716)
+:assumption (or (not x19492) x13910)
+:assumption (or x5754 (not x26865))
+:assumption (or (not x3043) x9252)
+:assumption (or (not x13187) x9783 x23167 x4422)
+:assumption (or x7126 x1287)
+:assumption (or x9488 (not x20874))
+:assumption (or x8441 x17914)
+:assumption (or (not x8850) x18623)
+:assumption (or (not x7159) (not x13110))
+:assumption (or (not x20171) x13167)
+:assumption (or (not x23244) (not x4934))
+:assumption (or (not x29446) (not x30491))
+:assumption (or (not x22123) x16102)
+:assumption (or x28582 x13818)
+:assumption (or (not x49) (not x14999))
+:assumption (or x762 (not x29013))
+:assumption (or x29499 (not x31380))
+:assumption (or x30372 (not x3923) x19639 x3638)
+:assumption (or (not x22626) x24442)
+:assumption (or x24350 (not x18206))
+:assumption (or x22855 (not x4319) x8953)
+:assumption (or x14638 x30245 x22668 x9467 x3133)
+:assumption (or x9529 x29351 x2133)
+:assumption (or x13630 (not x23329))
+:assumption (or (not x19559) (not x18798))
+:assumption (or (not x18988) x30954)
+:assumption (or (not x376) x31843 x25659)
+:assumption (or x28915 (not x8277))
+:assumption (or x28023 x13956 x13847)
+:assumption (or x23290 x29638)
+:assumption (or x16463 x25911 (not x1742))
+:assumption (or x13823 (not x26713))
+:assumption (or x28364 (not x27205))
+:assumption (or (not x25924) (not x15917) (not x20104) (not x10064))
+:assumption (or x19970 (not x14186))
+:assumption (or x30782 x11231)
+:assumption (or x10356 (not x29663) (not x27332) x18859 (not x20163) x13086)
+:assumption (or x16374 (not x26941))
+:assumption (or (not x13322) (not x23872))
+:assumption (or (not x7537) (not x16500))
+:assumption (or x30458 (not x12741))
+:assumption (or x2719 (not x26411))
+:assumption (or x14050 (not x29899))
+:assumption (or x4667 (not x26658))
+:assumption (or x21717 (not x13800) x25659)
+:assumption (or x13882 (not x6821))
+:assumption (or x25659 x18967)
+:assumption (or x23086 (not x1718) x13576)
+:assumption (or x27034 (not x22849))
+:assumption (or x25053 x21879)
+:assumption (or x7947 x13309)
+:assumption (or (not x800) x4032)
+:assumption (or (not x18779) (not x3197))
+:assumption (or x4416 (not x29930))
+:assumption (or x2116 x3374)
+:assumption (or x8658 x12668 x30312 (not x26584))
+:assumption (or x25299 (not x25717))
+:assumption (or x10874 (not x17456))
+:assumption (or x4182 (not x30432))
+:assumption (or (not x23244) x27975)
+:assumption (or (not x1486) (not x4294))
+:assumption (or x13711 (not x5528))
+:assumption (or (not x22242) x219)
+:assumption (or x23244 x22523)
+:assumption (or x15795 x16304 x8153 (not x28122))
+:assumption (or (not x28981) x3435 (not x17239))
+:assumption (or (not x25929) x27260)
+:assumption (or x18519 x24279)
+:assumption (or (not x30712) (not x10340) (not x23858) (not x13018))
+:assumption (or (not x20983) (not x24124))
+:assumption (or x30185 x10155 (not x14424))
+:assumption (or (not x16719) x12154)
+:assumption (or x7267 x8763)
+:assumption (or x6722 x20427)
+:assumption (or x26549 (not x20516))
+:assumption (or x736 x3116)
+:assumption (or (not x8829) x5733)
+:assumption (or (not x10278) (not x1353))
+:assumption (or x16295 (not x31282))
+:assumption (or x28469 x11071)
+:assumption (or (not x14901) x3148)
+:assumption (or x23453 (not x2409))
+:assumption (or x2927 x27123)
+:assumption (or (not x26865) x31079)
+:assumption (or x29910 x14137)
+:assumption (or (not x6171) x15469)
+:assumption (or (not x13763) (not x19428))
+:assumption (or (not x16678) x29959 x16510 x31466 (not x7010))
+:assumption (or x11554 (not x3485))
+:assumption (or (not x26422) (not x21298))
+:assumption (or (not x21323) (not x15473))
+:assumption (or (not x22652) x9531)
+:assumption (or x3512 (not x4223) (not x4666) (not x1018) (not x30745) (not x10691) x25437 x8459 (not x28470) (not x9686))
+:assumption (or x17016 (not x21035))
+:assumption (or x22205 (not x22101))
+:assumption (or (not x4841) x30571)
+:assumption (or (not x19807) x8532 x1839)
+:assumption (or x16374 x737 (not x2404))
+:assumption (or (not x17256) (not x25849) x24741 x16248 (not x4238))
+:assumption (or x27587 (not x11375))
+:assumption (or (not x7693) (not x23148) (not x30051))
+:assumption (or x29027 (not x9008) (not x5528) x7574 (not x22154))
+:assumption (or (not x20626) x26739)
+:assumption (or (not x1931) (not x11522))
+:assumption (or (not x22244) (not x3450))
+:assumption (or x10511 x24722 x18042 (not x5497))
+:assumption (or (not x952) x30231)
+:assumption (or x2998 (not x7270))
+:assumption (or x4942 x23001)
+:assumption (or (not x13807) x15555)
+:assumption (or x5579 x30519)
+:assumption (or x25530 (not x14854))
+:assumption (or (not x10632) (not x18533) (not x9711))
+:assumption (or (not x31377) (not x20711))
+:assumption (or (not x7270) x10824)
+:assumption (or (not x22046) (not x27548))
+:assumption (or x618 (not x15326))
+:assumption (or (not x25457) (not x5411))
+:assumption (or (not x3241) (not x16931))
+:assumption (or x28471 x30138 (not x26897) x28957)
+:assumption (or (not x23091) (not x22924))
+:assumption (or x14835 (not x17869))
+:assumption (or x6942 x22919)
+:assumption (or (not x7308) x4978 (not x23769) (not x31807) (not x28508) (not x2678) (not x17360) (not x19453))
+:assumption (or (not x2581) (not x14732))
+:assumption (or x8002 x29525)
+:assumption (or x284 (not x2800))
+:assumption (or x7204 (not x11412) x15399 (not x5528) (not x8863) (not x7677))
+:assumption (or (not x23965) x16408 x12646 (not x20782))
+:assumption (or (not x10173) x29780)
+:assumption (or (not x3792) x29640)
+:assumption (or x16160 (not x15400))
+:assumption (or x13802 (not x31365) x6024 x11493 x11165)
+:assumption (or x2253 x13578)
+:assumption (or x4320 (not x26928))
+:assumption (or (not x29400) (not x28951) (not x19042) (not x8757))
+:assumption (or x12051 x31777)
+:assumption (or x16963 (not x990) (not x9902) (not x13694) (not x19787))
+:assumption (or (not x29051) x1675)
+:assumption (or x14449 x31116 (not x13871) (not x30846) x17609 x26244)
+:assumption (or (not x6222) x9371)
+:assumption (or (not x14253) x26498)
+:assumption (or (not x30922) (not x9008))
+:assumption (or (not x3126) (not x9512))
+:assumption (or x8835 (not x16254))
+:assumption (or x12977 x19247)
+:assumption (or (not x10795) (not x22481))
+:assumption (or x23545 (not x7577) x6243)
+:assumption (or (not x28507) (not x23862))
+:assumption (or (not x2634) (not x24137))
+:assumption (or x6596 (not x14273) (not x16025))
+:assumption (or x25314 (not x15861))
+:assumption (or x8490 x20595)
+:assumption (or (not x17520) (not x27579) (not x28914) (not x16861) (not x15883))
+:assumption (or x351 (not x30886))
+:assumption (or (not x14594) (not x30125))
+:assumption (or (not x14561) x30340)
+:assumption (or (not x8672) x16874)
+:assumption (or x2168 x9610)
+:assumption (or x9746 (not x29630))
+:assumption (or (not x12288) (not x25202))
+:assumption (or (not x18366) (not x7705))
+:assumption (or x31373 (not x8158))
+:assumption (or x4105 (not x19711))
+:assumption (or x23244 x3953)
+:assumption (or (not x3349) x22836)
+:assumption (or (not x9442) (not x15232))
+:assumption (or x16492 (not x24948))
+:assumption (or x27811 (not x13609))
+:assumption (or x9169 x8602 x16858)
+:assumption (or (not x9765) x17571 x13622)
+:assumption (or (not x30149) (not x932))
+:assumption (or (not x21738) (not x7327))
+:assumption (or x9703 (not x31808))
+:assumption (or x4352 x8672 (not x8851) x4217)
+:assumption (or x29178 (not x14977))
+:assumption (or (not x24572) x21903)
+:assumption (or (not x27293) (not x12106))
+:assumption (or (not x23274) (not x23244))
+:assumption (or (not x24336) (not x15486))
+:assumption (or x17519 x29171)
+:assumption (or x17279 (not x29810))
+:assumption (or x9439 (not x14166) (not x5111))
+:assumption (or (not x25168) x22506)
+:assumption (or (not x364) x11200)
+:assumption (or x18720 x28780)
+:assumption (or x16846 (not x5799))
+:assumption (or x16657 (not x9059))
+:assumption (or x6243 (not x4875))
+:assumption (or x12426 (not x10488))
+:assumption (or (not x28011) (not x8602))
+:assumption (or (not x9014) (not x20155))
+:assumption (or (not x20308) (not x25102))
+:assumption (or x30586 x14591)
+:assumption (or x20087 x12692)
+:assumption (or (not x12248) x12039)
+:assumption (or x12692 x21815)
+:assumption (or (not x29776) x19547)
+:assumption (or (not x28553) x22851)
+:assumption (or x5249 (not x12024))
+:assumption (or x30113 x16152)
+:assumption (or (not x1989) (not x10805))
+:assumption (or (not x25968) x31144 (not x3697))
+:assumption (or x21925 (not x17944) (not x7048) (not x18718) (not x19186) (not x8451) (not x15737) (not x2473) (not x28581))
+:assumption (or x14366 (not x2746) x30407 (not x29364))
+:assumption (or (not x13181) (not x6590))
+:assumption (or x16268 (not x31348))
+:assumption (or (not x21292) x6307)
+:assumption (or (not x18361) (not x28551) (not x28242))
+:assumption (or (not x14875) x27146)
+:assumption (or x29794 x8075)
+:assumption (or (not x12099) (not x22739))
+:assumption (or x12907 (not x4535) x14435 x30690)
+:assumption (or x1498 (not x25849))
+:assumption (or (not x11215) (not x28536))
+:assumption (or x8586 x7697 x563)
+:assumption (or (not x22871) (not x11479) x20782 (not x2022))
+:assumption (or x7311 (not x19419))
+:assumption (or (not x12822) x3769)
+:assumption (or x6561 x19487)
+:assumption (or x26195 (not x17359))
+:assumption (or (not x172) (not x5203))
+:assumption (or (not x7658) (not x507))
+:assumption (or (not x16292) (not x1202))
+:assumption (or x15599 (not x17563))
+:assumption (or (not x15075) (not x7289))
+:assumption (or x16809 (not x31761))
+:assumption (or (not x26962) (not x19711))
+:assumption (or x19151 x7978)
+:assumption (or (not x10064) x18044)
+:assumption (or x19256 x7381)
+:assumption (or x4415 (not x14739))
+:assumption (or (not x29203) x6109)
+:assumption (or (not x16708) x19428 x3996 (not x10037) (not x16378) (not x17883) x21648 (not x18592))
+:assumption (or x23768 x21150)
+:assumption (or (not x6048) (not x9025) x29959)
+:assumption (or x3062 x23399)
+:assumption (or (not x25391) (not x2044))
+:assumption (or x29572 (not x30644) x21582 x30071 x13424)
+:assumption (or (not x9008) (not x21933) (not x10878))
+:assumption (or x11072 x18712)
+:assumption (or (not x15003) (not x10153))
+:assumption (or x28689 x13577)
+:assumption (or x19941 x27824)
+:assumption (or (not x12326) (not x19617))
+:assumption (or x27142 x28342)
+:assumption (or (not x9524) (not x30963))
+:assumption (or (not x2427) (not x29499))
+:assumption (or (not x31775) (not x5095))
+:assumption (or x5734 x18022)
+:assumption (or (not x25952) (not x14447))
+:assumption (or (not x22671) x31083)
+:assumption (or x3297 (not x17535) x5367 x3123)
+:assumption (or x22382 (not x14281))
+:assumption (or (not x139) x27332)
+:assumption (or x6274 x15945 x7260 (not x30619) (not x1570))
+:assumption (or x4553 x12721)
+:assumption (or x7653 x20037)
+:assumption (or (not x10949) (not x16148))
+:assumption (or x21298 (not x13296))
+:assumption (or x1767 x23794)
+:assumption (or x25257 x19611)
+:assumption (or (not x11846) (not x18985))
+:assumption (or (not x22781) (not x30049))
+:assumption (or x21746 x23207)
+:assumption (or x21653 x11681)
+:assumption (or x27526 (not x9079))
+:assumption (or (not x30769) (not x29836))
+:assumption (or (not x29934) x17339)
+:assumption (or x16608 x8347)
+:assumption (or x29649 x13412)
+:assumption (or x735 x24757)
+:assumption (or (not x14918) x21052)
+:assumption (or (not x8002) x17477)
+:assumption (or (not x30138) (not x13496))
+:assumption (or (not x5169) (not x25572))
+:assumption (or x31055 x10256 (not x25706) x18883 x11374 (not x8127))
+:assumption (or x27818 x27148)
+:assumption (or (not x7143) x22474)
+:assumption (or (not x10742) x25152)
+:assumption (or (not x10271) x30515 (not x23244) (not x13956))
+:assumption (or (not x7956) x3345)
+:assumption (or (not x27814) (not x13489))
+:assumption (or (not x6200) (not x31543) x22094 x6969)
+:assumption (or x16206 (not x21957))
+:assumption (or x3751 (not x21402))
+:assumption (or x21836 x6582 (not x2573) x6113 x18139 x23978)
+:assumption (or (not x27864) (not x31884) (not x4098) (not x18370) x26677 (not x25523))
+:assumption (or x2290 (not x17041))
+:assumption (or x15621 (not x24206) (not x10958) (not x19205))
+:assumption (or (not x11452) x19229)
+:assumption (or (not x18694) (not x28251))
+:assumption (or x20651 x8842)
+:assumption (or (not x28857) (not x9728))
+:assumption (or x17028 (not x29489) (not x5249) (not x13956))
+:assumption (or x15441 x16025)
+:assumption (or x17157 x29439)
+:assumption (or (not x18217) x16362)
+:assumption (or x23443 x13291)
+:assumption (or (not x14128) x30318)
+:assumption (or (not x6336) (not x12107) (not x12349) (not x16848) (not x15303))
+:assumption (or x1305 (not x30671))
+:assumption (or (not x19003) (not x29674))
+:assumption (or (not x12067) x22311)
+:assumption (or (not x28621) x30650)
+:assumption (or (not x27291) x27351)
+:assumption (or (not x29333) x6304)
+:assumption (or (not x25540) x20652)
+:assumption (or (not x5294) x10803)
+:assumption (or x26593 (not x22624))
+:assumption (or (not x7542) x16304 (not x17554) x27783 (not x15795) (not x7174))
+:assumption (or x10016 x9423)
+:assumption (or (not x27602) x19979)
+:assumption (or x25818 (not x8002) x27595 x12985)
+:assumption (or (not x4827) x27321 x6963 (not x7870) (not x1889) x26007 x24075 x8135 (not x23876))
+:assumption (or x1708 x28364)
+:assumption (or x15367 x1655)
+:assumption (or (not x10654) (not x22295) x2427 x4623)
+:assumption (or (not x9439) x8244)
+:assumption (or (not x22909) (not x22847))
+:assumption (or (not x17240) (not x18971))
+:assumption (or x16172 x8940)
+:assumption (or x22130 x27499)
+:assumption (or x20085 x9525 (not x9138) (not x14378) x15795 (not x10646))
+:assumption (or x1165 x12870)
+:assumption (or x29383 (not x9554))
+:assumption (or (not x6754) x20668)
+:assumption (or (not x18070) x18301 (not x28973))
+:assumption (or (not x6654) (not x21448))
+:assumption (or x18542 x27704)
+:assumption (or x26463 x9891)
+:assumption (or (not x8658) x11785 x3804 (not x5440))
+:assumption (or x16067 (not x16453) x9184)
+:assumption (or x17491 (not x3310))
+:assumption (or (not x26222) (not x14075) x29606)
+:assumption (or (not x24155) x8125)
+:assumption (or (not x20782) x14155 (not x4684))
+:assumption (or x20492 x30113)
+:assumption (or x169 x2026 (not x964) x2281)
+:assumption (or x23532 x22453 x230 x1186 (not x11750))
+:assumption (or (not x24012) (not x4490))
+:assumption (or x16353 (not x25589))
+:assumption (or (not x25982) x24195 x12880 (not x19084) x21007)
+:assumption (or x16802 x21521)
+:assumption (or x6293 x5279)
+:assumption (or (not x27142) x8697 (not x27508) x4687 (not x2219))
+:assumption (or x4058 (not x31175))
+:assumption (or (not x17093) x21213 (not x21636) (not x17359) (not x1290) x25265)
+:assumption (or (not x17743) (not x27855))
+:assumption (or (not x30503) x22279)
+:assumption (or (not x23244) (not x1024))
+:assumption (or x20123 x21298 (not x28364) (not x29283))
+:assumption (or x15852 x27148)
+:assumption (or x19548 x18908)
+:assumption (or x25659 x30441 (not x2172))
+:assumption (or x7188 (not x26554))
+:assumption (or (not x9920) (not x28418))
+:assumption (or (not x24283) (not x26643) x14399 (not x13326) x4712)
+:assumption (or x14777 x27337)
+:assumption (or (not x17929) x12923 x13886 (not x8345))
+:assumption (or (not x5025) x6023)
+:assumption (or (not x29139) x11787)
+:assumption (or (not x24928) (not x6331))
+:assumption (or (not x9741) x8703)
+:assumption (or x21623 x4410 (not x3063))
+:assumption (or (not x20344) (not x4908))
+:assumption (or x20066 x25764 (not x9531) x9088)
+:assumption (or x754 (not x6538))
+:assumption (or x16278 x7785 (not x19921) x25488)
+:assumption (or (not x30094) x26029)
+:assumption (or (not x922) (not x1508))
+:assumption (or (not x14168) (not x8280) (not x12138) x14839)
+:assumption (or (not x14435) (not x16714))
+:assumption (or x29772 (not x17132))
+:assumption (or x27455 x16510)
+:assumption (or (not x21062) x17359 x23357 x26432)
+:assumption (or (not x22622) (not x19779))
+:assumption (or (not x20530) (not x6145))
+:assumption (or (not x16058) (not x17463))
+:assumption (or (not x3735) (not x275))
+:assumption (or (not x30661) (not x15570))
+:assumption (or x28917 (not x21824))
+:assumption (or x3871 (not x13956))
+:assumption (or x11581 (not x12012))
+:assumption (or x21636 x1963)
+:assumption (or (not x30767) x31217)
+:assumption (or (not x28906) (not x15455))
+:assumption (or x10952 x28442)
+:assumption (or x10445 (not x19546))
+:assumption (or (not x19134) (not x4401))
+:assumption (or x15360 x24722)
+:assumption (or x27188 x21298)
+:assumption (or (not x18003) (not x5336))
+:assumption (or (not x31829) x2878)
+:assumption (or x14575 x8041)
+:assumption (or (not x8002) (not x27315))
+:assumption (or x22536 x21341)
+:assumption (or (not x27031) (not x19498) x1695 x11278 x23383 (not x288) (not x2252))
+:assumption (or (not x8464) (not x28852))
+:assumption (or (not x19923) (not x12560))
+:assumption (or x617 (not x3604))
+:assumption (or x21653 (not x1198))
+:assumption (or (not x8919) (not x15984))
+:assumption (or (not x26170) x25659)
+:assumption (or x16125 (not x18578) x27338 x10419 x9997)
+:assumption (or (not x18547) (not x28261))
+:assumption (or (not x29959) (not x28042) x3802 x7000 (not x15960) x21182 x29453 (not x16539))
+:assumption (or (not x18980) x5271)
+:assumption (or (not x11163) x24632)
+:assumption (or (not x18930) (not x6957) x16304 x24346 x1075)
+:assumption (or (not x22808) x11425)
+:assumption (or x8926 (not x12100))
+:assumption (or x8002 (not x16125) x23244 (not x7905))
+:assumption (or x29092 x777)
+:assumption (or (not x17109) x5399 (not x1920))
+:assumption (or x19361 x19380)
+:assumption (or (not x16185) (not x6223))
+:assumption (or x12242 (not x26606))
+:assumption (or (not x13542) x13956 x8002 x18500 x23244 x6783)
+:assumption (or (not x25140) x29255)
+:assumption (or x6358 (not x18164))
+:assumption (or x10389 x24090)
+:assumption (or x224 x30891)
+:assumption (or (not x23838) (not x12026))
+:assumption (or x21856 x19093)
+:assumption (or x21620 (not x2790))
+:assumption (or x19356 x19393)
+:assumption (or x31458 (not x26570))
+:assumption (or x17186 (not x1052))
+:assumption (or x14747 (not x23160))
+:assumption (or x26462 x20019)
+:assumption (or x19555 (not x3170))
+:assumption (or x8172 (not x22426))
+:assumption (or x17263 (not x14101))
+:assumption (or (not x28850) x12703)
+:assumption (or (not x2621) (not x23374))
+:assumption (or (not x19016) x27278)
+:assumption (or (not x812) (not x28508))
+:assumption (or x12871 (not x22518) (not x31288))
+:assumption (or (not x15400) (not x11456))
+:assumption (or (not x9868) (not x24756))
+:assumption (or x16869 (not x29189))
+:assumption (or (not x31152) (not x6050))
+:assumption (or (not x23244) x20467 x27054)
+:assumption (or x2659 x27945)
+:assumption (or x8002 (not x29064))
+:assumption (or x9140 (not x12586))
+:assumption (or x25170 (not x918))
+:assumption (or (not x27171) (not x21573))
+:assumption (or (not x22534) x7306 x21653)
+:assumption (or (not x30903) (not x20463))
+:assumption (or (not x21405) x8966)
+:assumption (or (not x24895) (not x25600))
+:assumption (or (not x10908) (not x8961))
+:assumption (or (not x8920) x30375)
+:assumption (or x26604 x18506)
+:assumption (or (not x17499) (not x14283))
+:assumption (or (not x4493) (not x17253))
+:assumption (or (not x6225) (not x23500))
+:assumption (or (not x27048) x15852)
+:assumption (or x10836 x7575)
+:assumption (or x11969 (not x16576))
+:assumption (or x28432 (not x8602) x11037)
+:assumption (or x20373 (not x17641) (not x30589))
+:assumption (or x11613 (not x27944))
+:assumption (or x10912 (not x31341))
+:assumption (or x30483 (not x1393))
+:assumption (or x7538 (not x30180))
+:assumption (or (not x28200) x25659)
+:assumption (or x21119 (not x14591))
+:assumption (or (not x12103) x22595)
+:assumption (or (not x740) x27532)
+:assumption (or (not x25376) x20591)
+:assumption (or (not x182) (not x8768))
+:assumption (or x8002 x22291 x31827)
+:assumption (or x8602 (not x20124) (not x27823))
+:assumption (or x2620 x20415)
+:assumption (or x18253 (not x730))
+:assumption (or x21202 (not x15107))
+:assumption (or (not x6928) (not x1920))
+:assumption (or (not x25659) x12354 (not x2377))
+:assumption (or (not x14969) (not x13568))
+:assumption (or (not x17489) (not x5905))
+:assumption (or x5214 (not x17429))
+:assumption (or (not x27893) (not x3662))
+:assumption (or x17605 (not x1701))
+:assumption (or (not x8083) x15864 x28541 x31829)
+:assumption (or (not x24241) (not x30965))
+:assumption (or x21298 x28700)
+:assumption (or x15772 x12672 x4498)
+:assumption (or x26386 (not x31217) x21745 (not x17595) (not x15233) (not x16227) x19083 (not x12402))
+:assumption (or x9488 x2240)
+:assumption (or (not x13112) (not x3264))
+:assumption (or (not x17567) x14300 x31477 x15386 (not x7766))
+:assumption (or (not x31889) x381)
+:assumption (or x18122 x21748)
+:assumption (or (not x17338) (not x15340))
+:assumption (or x17566 (not x20682))
+:assumption (or x31160 (not x11796) x2177 x29014)
+:assumption (or x26527 x1350)
+:assumption (or (not x20128) (not x27860))
+:assumption (or (not x4451) (not x23035) (not x10189))
+:assumption (or (not x18981) (not x18222))
+:assumption (or x3216 (not x8930))
+:assumption (or (not x14206) x25503)
+:assumption (or x28160 (not x14138))
+:assumption (or x17109 (not x6280))
+:assumption (or x8119 x4462)
+:assumption (or x1150 (not x484))
+:assumption (or (not x31826) x7360)
+:assumption (or (not x24160) (not x25308))
+:assumption (or (not x15421) (not x20807))
+:assumption (or x16745 (not x26136) (not x25786) (not x26793))
+:assumption (or x25324 (not x3987))
+:assumption (or x5793 (not x22306))
+:assumption (or (not x9653) x26910)
+:assumption (or x18003 (not x29323))
+:assumption (or (not x13395) (not x1591))
+:assumption (or (not x10312) (not x12477))
+:assumption (or (not x13522) (not x19210))
+:assumption (or (not x26645) x30396)
+:assumption (or (not x20822) x11488 (not x25738))
+:assumption (or (not x14508) (not x7281))
+:assumption (or (not x6889) (not x15623) (not x7768) x325 x8213)
+:assumption (or x25350 x8574 (not x18732))
+:assumption (or (not x12049) x27128)
+:assumption (or (not x11053) (not x76))
+:assumption (or x30138 x16301)
+:assumption (or (not x17075) (not x26433))
+:assumption (or x28825 x22695)
+:assumption (or x21815 (not x6432))
+:assumption (or (not x5553) x20486)
+:assumption (or x10335 (not x24703) x13956)
+:assumption (or x21383 x20953)
+:assumption (or (not x10067) (not x10683))
+:assumption (or (not x26719) x10345)
+:assumption (or x19314 x29723)
+:assumption (or (not x13324) (not x25394))
+:assumption (or x4826 x18355)
+:assumption (or x21845 (not x6302))
+:assumption (or (not x26808) (not x24504) (not x25315))
+:assumption (or (not x15255) x18953)
+:assumption (or x5338 x30134)
+:assumption (or x7293 x8548)
+:assumption (or x12928 (not x31004))
+:assumption (or (not x9189) x10529)
+:assumption (or x3195 (not x29228))
+:assumption (or x30370 (not x11655))
+:assumption (or (not x25659) (not x9750) x26170)
+:assumption (or x1933 (not x30954))
+:assumption (or (not x399) x21620)
+:assumption (or (not x12777) x29019)
+:assumption (or x4383 x28187)
+:assumption (or (not x31782) x6320)
+:assumption (or (not x11375) (not x10945))
+:assumption (or x24381 (not x2123))
+:assumption (or x15848 x29505)
+:assumption (or (not x16664) x19449 (not x9477))
+:assumption (or (not x9043) x13345)
+:assumption (or (not x1027) x22051 (not x5006) (not x26431))
+:assumption (or x8029 (not x3932))
+:assumption (or x25259 x17418)
+:assumption (or x4743 (not x29305))
+:assumption (or x21642 x9008)
+:assumption (or x27866 x5630)
+:assumption (or (not x14630) x23924)
+:assumption (or x22495 (not x18165) x15889 (not x28877))
+:assumption (or x20554 x30002 x4809)
+:assumption (or (not x298) (not x3551))
+:assumption (or (not x10284) x31607)
+:assumption (or (not x1291) x4454)
+:assumption (or x14245 (not x26538))
+:assumption (or (not x13576) x23100)
+:assumption (or (not x10221) x8002)
+:assumption (or (not x31466) x3864)
+:assumption (or (not x21298) x24844 (not x6342) x8409)
+:assumption (or x29139 x29763)
+:assumption (or x8356 x17354)
+:assumption (or (not x25776) (not x12544))
+:assumption (or x29398 (not x1601))
+:assumption (or x24298 x9572 x3753 (not x15857) x28377 x8002)
+:assumption (or x27651 x729)
+:assumption (or x15747 x11848)
+:assumption (or (not x10173) (not x3494))
+:assumption (or x1287 (not x18219))
+:assumption (or (not x10444) (not x14687))
+:assumption (or (not x11061) x5966)
+:assumption (or (not x13407) (not x28809) x23269)
+:assumption (or (not x6389) (not x20376))
+:assumption (or x27619 (not x6951) x17670)
+:assumption (or x8032 x20559)
+:assumption (or (not x7906) (not x4259))
+:assumption (or x18251 x7624)
+:assumption (or x28995 x11878)
+:assumption (or (not x18519) (not x21362))
+:assumption (or (not x9008) (not x18567) (not x23040) (not x31782) (not x5528))
+:assumption (or (not x18183) x27650)
+:assumption (or (not x23884) (not x14689))
+:assumption (or (not x17161) x11773 x27855 x7995)
+:assumption (or x26670 (not x16171))
+:assumption (or (not x19634) x5371 x18219 (not x10885) (not x15530) (not x7126) x15987 (not x14221) x13277)
+:assumption (or x2713 (not x21625))
+:assumption (or x22263 x25659)
+:assumption (or (not x25228) (not x12170))
+:assumption (or (not x23273) x29959)
+:assumption (or (not x31527) x11438)
+:assumption (or (not x30096) (not x5561))
+:assumption (or x29261 x24127 x9757 (not x17389) (not x3249) x6010 x9557 (not x5381))
+:assumption (or (not x806) (not x11881))
+:assumption (or (not x16525) x10578)
+:assumption (or x4887 x10648)
+:assumption (or x23886 (not x10341))
+:assumption (or x19755 x10351)
+:assumption (or (not x13196) (not x3523))
+:assumption (or x4623 x6356)
+:assumption (or x1753 x19682 x472 x1333)
+:assumption (or (not x7184) (not x26500))
+:assumption (or (not x12381) (not x30636))
+:assumption (or (not x6042) x28382 x20964 x23035)
+:assumption (or (not x22614) x9809)
+:assumption (or x1090 (not x7568))
+:assumption (or x13956 x10060 x8002 (not x7787) (not x18623) x23244)
+:assumption (or x29730 (not x18086) x13833 (not x18225) x17310 x25077 (not x25659) (not x557))
+:assumption (or (not x7169) (not x24460))
+:assumption (or (not x4848) (not x12254))
+:assumption (or (not x19776) x13171)
+:assumption (or x1393 (not x8113) x21841)
+:assumption (or (not x16275) (not x8481))
+:assumption (or x23080 (not x3744))
+:assumption (or (not x26901) x25659)
+:assumption (or (not x31356) (not x12264))
+:assumption (or (not x13491) x18193)
+:assumption (or x8002 x2628)
+:assumption (or x5208 (not x31055))
+:assumption (or (not x22213) (not x30949))
+:assumption (or x29270 (not x7478))
+:assumption (or x25738 x11726)
+:assumption (or (not x28764) (not x30113) x14745 (not x12278))
+:assumption (or (not x25133) x26733)
+:assumption (or (not x19732) (not x15706))
+:assumption (or x24987 x12176)
+:assumption (or x18441 (not x14420) x13895)
+:assumption (or x11386 (not x5452))
+:assumption (or x24620 x10807)
+:assumption (or (not x18118) x723 x15242 x10869 (not x10309))
+:assumption (or x9008 x26239 x18827)
+:assumption (or x9025 x6048)
+:assumption (or (not x7437) x27059)
+:assumption (or (not x28613) (not x10105) x715 x4068)
+:assumption (or x30911 x30138)
+:assumption (or (not x14342) (not x19982))
+:assumption (or x23892 x28810)
+:assumption (or x20555 x26712)
+:assumption (or x13241 (not x12429))
+:assumption (or x28239 (not x17350) x12410 (not x24178))
+:assumption (or (not x17359) (not x21818))
+:assumption (or x19321 x12783)
+:assumption (or (not x1393) (not x9816))
+:assumption (or x16745 x10265)
+:assumption (or x5240 x4465)
+:assumption (or x15884 (not x24819))
+:assumption (or x18506 x20046)
+:assumption (or x8221 x30304)
+:assumption (or (not x1211) x5011)
+:assumption (or (not x28261) (not x1948))
+:assumption (or (not x15278) x30175)
+:assumption (or (not x2636) (not x25168))
+:assumption (or (not x1045) x20210)
+:assumption (or (not x7585) (not x29307))
+:assumption (or x16084 x13731 (not x9309) (not x19917) x4069 x12899 (not x10714))
+:assumption (or (not x27079) (not x10124))
+:assumption (or (not x20772) x21202)
+:assumption (or (not x16926) (not x21675))
+:assumption (or x2504 (not x28181))
+:assumption (or (not x31103) x25419)
+:assumption (or x8914 (not x7228))
+:assumption (or (not x17534) (not x3082))
+:assumption (or x16685 (not x20002))
+:assumption (or x24815 x26670)
+:assumption (or (not x5025) (not x3892))
+:assumption (or (not x10315) x29985)
+:assumption (or x8266 (not x11375) (not x6986))
+:assumption (or x14537 x26251)
+:assumption (or x22407 (not x805))
+:assumption (or (not x2751) (not x5771))
+:assumption (or (not x19875) x19992)
+:assumption (or (not x28683) (not x24989))
+:assumption (or x31858 (not x22699))
+:assumption (or (not x8602) (not x1295))
+:assumption (or (not x169) x13294 (not x30244) x1026 (not x1501))
+:assumption (or x23073 (not x2925) (not x964))
+:assumption (or (not x13077) x5424)
+:assumption (or (not x19139) x16236 (not x18327) x31450 (not x17851) (not x29485) x20577 (not x3853))
+:assumption (or x27902 (not x14023))
+:assumption (or x8096 x2100)
+:assumption (or (not x16062) (not x20202) x2223 x3887)
+:assumption (or (not x19330) x4942)
+:assumption (or (not x3258) x13069)
+:assumption (or x30047 (not x12769))
+:assumption (or (not x19864) x24567)
+:assumption (or x8394 (not x28924))
+:assumption (or (not x1317) (not x14653))
+:assumption (or x26383 x31795)
+:assumption (or (not x31108) x27468 (not x15995) x5904)
+:assumption (or (not x17765) x15924)
+:assumption (or (not x2001) (not x3844))
+:assumption (or (not x10952) x25901)
+:assumption (or (not x30140) (not x27922))
+:assumption (or x1873 x27481)
+:assumption (or x26118 (not x1566))
+:assumption (or (not x2255) x25690)
+:assumption (or x18513 (not x2803))
+:assumption (or x30457 (not x9032) (not x10914))
+:assumption (or (not x24873) x1380)
+:assumption (or (not x25606) (not x13914))
+:assumption (or (not x30913) (not x395))
+:assumption (or x19589 x19738)
+:assumption (or (not x576) x23899)
+:assumption (or x19509 x8225)
+:assumption (or x9192 (not x30083) x31140 (not x6943) (not x16121) (not x6783))
+:assumption (or x7501 x6243)
+:assumption (or x8653 x27113)
+:assumption (or x4040 (not x16910))
+:assumption (or (not x20573) x20303)
+:assumption (or (not x28596) (not x7212) x1393)
+:assumption (or x21103 x7292)
+:assumption (or (not x7410) (not x6874) x1381 x27030 x10632 x7094 x23141 x13812)
+:assumption (or (not x3640) (not x3109))
+:assumption (or x1145 (not x9423))
+:assumption (or x25994 x27261)
+:assumption (or (not x19763) (not x7542) (not x13487))
+:assumption (or (not x17984) x27949)
+:assumption (or (not x20498) x3879)
+:assumption (or x10693 (not x6594))
+:assumption (or (not x29268) x25531)
+:assumption (or (not x21919) (not x2379))
+:assumption (or x28597 (not x19989))
+:assumption (or (not x3691) x1832 x3935 x31270 (not x4411) x10205 (not x31183) x6716)
+:assumption (or x11636 x3588 (not x24250) (not x25674) x8970 x24603 x12658 x5738)
+:assumption (or (not x7544) x18924)
+:assumption (or x17534 (not x7726))
+:assumption (or x3001 x20513 (not x2574) x25366)
+:assumption (or (not x2334) x12307)
+:assumption (or x19965 (not x5089))
+:assumption (or (not x27733) (not x28552))
+:assumption (or (not x13567) x10536)
+:assumption (or (not x12641) (not x27719))
+:assumption (or (not x19541) x372)
+:assumption (or x7667 (not x19291))
+:assumption (or (not x8961) (not x28533))
+:assumption (or (not x14337) (not x5616))
+:assumption (or (not x30407) x21459)
+:assumption (or x6156 (not x421))
+:assumption (or (not x18096) x9286)
+:assumption (or (not x8989) x16573)
+:assumption (or (not x6794) x3885)
+:assumption (or x13351 x6400)
+:assumption (or (not x15823) (not x31404))
+:assumption (or (not x11943) (not x9374))
+:assumption (or (not x28720) (not x12204))
+:assumption (or (not x25679) (not x10069) x17286 x26065 (not x28329) (not x28999) x31750)
+:assumption (or x12027 (not x16763))
+:assumption (or x27075 (not x25493))
+:assumption (or x28912 x13866)
+:assumption (or x15400 (not x8201))
+:assumption (or x22851 (not x8737))
+:assumption (or (not x3555) x15094)
+:assumption (or x27516 (not x18042))
+:assumption (or x9625 x2125)
+:assumption (or (not x12621) (not x7447))
+:assumption (or x10628 x10)
+:assumption (or x19070 x22661 (not x18519))
+:assumption (or x16451 x8847)
+:assumption (or (not x2534) (not x11400))
+:assumption (or (not x5270) x390)
+:assumption (or (not x6200) (not x29341))
+:assumption (or x502 (not x6719))
+:assumption (or x30105 x29698)
+:assumption (or x28891 (not x12880) (not x30856))
+:assumption (or x827 x28090)
+:assumption (or (not x6030) (not x18312))
+:assumption (or x1260 (not x8002) (not x26281))
+:assumption (or x23372 (not x23223))
+:assumption (or (not x8080) x1861)
+:assumption (or x29152 x15408)
+:assumption (or x28328 x28901 x30703 x10565)
+:assumption (or (not x21568) x3147)
+:assumption (or x30586 x15795)
+:assumption (or x16953 x16214)
+:assumption (or x5333 (not x4928) (not x31801) x2510 (not x18335))
+:assumption (or (not x30158) x16964)
+:assumption (or x17768 x9160)
+:assumption (or (not x15436) (not x5850))
+:assumption (or (not x22952) (not x3782))
+:assumption (or (not x18894) x9597)
+:assumption (or (not x14904) (not x19399))
+:assumption (or x21528 x31129)
+:assumption (or (not x5960) x5848)
+:assumption (or (not x14384) x19552)
+:assumption (or x14229 x15754)
+:assumption (or x29066 (not x13565) x19068 x31767)
+:assumption (or (not x2759) (not x1393))
+:assumption (or x16355 (not x10828))
+:assumption (or x11218 (not x27134))
+:assumption (or x3327 x29602 (not x25066))
+:assumption (or (not x21764) x3597 x15917 (not x12708) (not x3997))
+:assumption (or (not x27010) x11118)
+:assumption (or x19779 x20319)
+:assumption (or x4507 (not x11137))
+:assumption (or (not x19911) x18018)
+:assumption (or x14994 x25558 x15867 x151 (not x20087) x26030 x555 (not x5589))
+:assumption (or (not x29619) x3494)
+:assumption (or (not x13576) x30602)
+:assumption (or x18310 x30566)
+:assumption (or x19992 (not x21059))
+:assumption (or x14903 (not x24756))
+:assumption (or (not x2234) (not x31074))
+:assumption (or x22947 (not x2424))
+:assumption (or (not x10339) (not x3088) x30256)
+:assumption (or (not x14628) x18303)
+:assumption (or x19123 (not x23299))
+:assumption (or x3017 x16731)
+:assumption (or x31101 (not x25849) x14970 (not x4238) (not x17256))
+:assumption (or (not x24961) (not x22860))
+:assumption (or x2220 (not x1146))
+:assumption (or (not x8765) x5528)
+:assumption (or x23244 x5206 x27731 x13956 x8002 x499)
+:assumption (or x14141 (not x27723) x27349 x23599 x6859 (not x6160) (not x6198))
+:assumption (or (not x26859) (not x26847))
+:assumption (or (not x30087) x19712)
+:assumption (or x1901 (not x10660))
+:assumption (or (not x2133) x2552)
+:assumption (or x27058 x4383)
+:assumption (or (not x30996) (not x10763))
+:assumption (or x7922 (not x12462))
+:assumption (or (not x16538) (not x25490))
+:assumption (or x7653 x9156)
+:assumption (or x18212 (not x1415))
+:assumption (or x9421 (not x3001))
+:assumption (or (not x22910) (not x25978))
+:assumption (or (not x9602) (not x24812))
+:assumption (or x4818 (not x12775))
+:assumption (or (not x12406) x24067)
+:assumption (or x9781 x1844)
+:assumption (or (not x14856) x15730)
+:assumption (or (not x1222) x1947)
+:assumption (or (not x20402) (not x28168))
+:assumption (or x16304 x29880 x22953)
+:assumption (or x21220 (not x827) x8590)
+:assumption (or (not x754) (not x19667) (not x30887) x20759 x27104)
+:assumption (or x28340 x15621)
+:assumption (or x20860 (not x8002))
+:assumption (or (not x16676) (not x25899))
+:assumption (or x13875 (not x9804))
+:assumption (or (not x918) (not x28263) x31829)
+:assumption (or (not x21685) (not x17359) x19015)
+:assumption (or x18787 (not x2430))
+:assumption (or (not x4548) (not x10087))
+:assumption (or (not x19504) x21009)
+:assumption (or (not x7442) x28730)
+:assumption (or (not x2743) (not x25403))
+:assumption (or (not x17449) (not x15182))
+:assumption (or x22517 (not x6951) (not x13576))
+:assumption (or (not x4088) (not x23444))
+:assumption (or (not x22006) (not x17570))
+:assumption (or x17359 (not x14068) (not x17643))
+:assumption (or (not x6872) (not x39))
+:assumption (or x21815 (not x15820))
+:assumption (or x17241 x10032)
+:assumption (or (not x23984) (not x22993))
+:assumption (or (not x12535) (not x11087))
+:assumption (or x6143 x15852)
+:assumption (or (not x26198) (not x3285))
+:assumption (or x6496 x764 (not x762) x5394)
+:assumption (or x10439 (not x13502))
+:assumption (or (not x28279) x788 x30734)
+:assumption (or x26081 (not x7530))
+:assumption (or (not x16037) (not x27734))
+:assumption (or x23904 x4804)
+:assumption (or (not x9659) (not x1770))
+:assumption (or (not x11274) x28012)
+:assumption (or x6760 (not x26413))
+:assumption (or (not x7542) x27783 x15795 (not x20843) (not x16304) (not x7174))
+:assumption (or (not x25700) x310)
+:assumption (or (not x27862) (not x27684) x6819 x11928 x21922)
+:assumption (or (not x24361) x6771)
+:assumption (or (not x23243) x2120)
+:assumption (or (not x26673) x26116)
+:assumption (or (not x21604) (not x179))
+:assumption (or (not x21815) (not x31052))
+:assumption (or (not x18609) x26222)
+:assumption (or (not x21932) (not x3958))
+:assumption (or x12397 (not x27380) x5677 (not x10299))
+:assumption (or (not x15590) x8180 x28083 x7835 (not x10924))
+:assumption (or (not x16069) x15548)
+:assumption (or x30870 x8698)
+:assumption (or x3680 x15177)
+:assumption (or (not x7456) x25416)
+:assumption (or x1770 x20694)
+:assumption (or (not x1733) (not x7972))
+:assumption (or x24906 (not x14108))
+:assumption (or x15749 (not x26194) x27495)
+:assumption (or (not x30458) x8273)
+:assumption (or (not x14579) x21815)
+:assumption (or x13372 (not x25526))
+:assumption (or x2431 (not x24079) (not x26508))
+:assumption (or (not x19577) x12237)
+:assumption (or x26350 (not x5886))
+:assumption (or x6847 x17477)
+:assumption (or (not x28586) x18003 (not x21065) x19864)
+:assumption (or x29061 x15698)
+:assumption (or x8626 (not x17968))
+:assumption (or x5982 (not x8923))
+:assumption (or x25097 x27117)
+:assumption (or (not x25634) (not x21383))
+:assumption (or (not x27454) (not x8378))
+:assumption (or x7728 x24558)
+:assumption (or x26572 (not x19449))
+:assumption (or (not x3377) x15466)
+:assumption (or x21246 x518)
+:assumption (or x2233 (not x18435))
+:assumption (or x4375 (not x13202))
+:assumption (or (not x17596) (not x14194))
+:assumption (or x17701 x26888)
+:assumption (or x5653 x21830)
+:assumption (or (not x16516) (not x5456))
+:assumption (or (not x8271) x1473 (not x28566) (not x12674))
+:assumption (or (not x8865) x12930)
+:assumption (or (not x10730) x16320)
+:assumption (or x22107 (not x13260))
+:assumption (or x2180 (not x7378))
+:assumption (or x14591 (not x15795) (not x21960))
+:assumption (or (not x7628) (not x2736))
+:assumption (or x13205 (not x5845))
+:assumption (or (not x2133) (not x19684) x12324)
+:assumption (or (not x26739) x12016 x3519 x14073 x9982 (not x26769) x8238 x24936)
+:assumption (or x22598 x12049 (not x11230) (not x18771) x3945 (not x8825) (not x14709))
+:assumption (or x17766 x14455)
+:assumption (or x14089 (not x9551))
+:assumption (or (not x28896) (not x3845))
+:assumption (or (not x5570) (not x9771))
+:assumption (or x10714 x14677 x31734 x3434)
+:assumption (or x6830 (not x17120))
+:assumption (or x5388 x30025)
+:assumption (or x17555 x13188)
+:assumption (or (not x19588) (not x9663))
+:assumption (or x16226 x4569)
+:assumption (or (not x15375) (not x7717))
+:assumption (or (not x30693) x29772)
+:assumption (or (not x6979) x3152)
+:assumption (or x22686 x17286 (not x10069) (not x25679) x22075 x31750 x26065)
+:assumption (or (not x29189) x9141)
+:assumption (or x27019 x25822)
+:assumption (or x25913 x7720)
+:assumption (or (not x22829) x23399 x6760 x19992 (not x18859))
+:assumption (or x18532 (not x1461))
+:assumption (or x15587 x7315)
+:assumption (or (not x473) x30600)
+:assumption (or x5274 (not x20721))
+:assumption (or (not x20597) (not x6911) x20682 x9157 (not x14966) (not x17566) x13443)
+:assumption (or (not x26383) (not x27136))
+:assumption (or x25591 (not x18293) (not x3896))
+:assumption (or x26753 x8825)
+:assumption (or (not x25659) (not x16014))
+:assumption (or (not x1142) x15628)
+:assumption (or (not x11840) x4608)
+:assumption (or (not x30291) x7849)
+:assumption (or (not x22425) (not x21282))
+:assumption (or (not x24040) x19872)
+:assumption (or x1946 x18585 x13576)
+:assumption (or (not x22604) x22166)
+:assumption (or x4739 (not x16889))
+:assumption (or (not x24568) (not x24952))
+:assumption (or (not x10577) x11654 (not x22419) x24274 x8143 (not x5447))
+:assumption (or x18950 x5333 x1908 x20199 (not x20181) (not x20489))
+:assumption (or x14241 (not x29970))
+:assumption (or x1578 (not x15848))
+:assumption (or (not x20739) (not x28557))
+:assumption (or (not x23695) (not x1582))
+:assumption (or (not x5394) (not x29780) x3494 (not x21815) (not x1815) x10173 (not x16510))
+:assumption (or (not x9708) (not x25771))
+:assumption (or (not x12923) x22174)
+:assumption (or x20550 (not x15726))
+:assumption (or (not x14942) x31366)
+:assumption (or x6889 x10547)
+:assumption (or x643 (not x3958))
+:assumption (or x25654 x30954 (not x19428))
+:assumption (or x20975 (not x12735) (not x9008))
+:assumption (or x21605 x7918)
+:assumption (or x7431 (not x8474))
+:assumption (or (not x14281) x16072)
+:assumption (or x971 x20038)
+:assumption (or x22092 (not x21092))
+:assumption (or (not x26254) (not x8019))
+:assumption (or x19112 (not x29739))
+:assumption (or x9870 x14341)
+:assumption (or (not x2255) (not x31762))
+:assumption (or x6169 (not x24289))
+:assumption (or x12559 x7157)
+:assumption (or (not x4383) (not x6131))
+:assumption (or x23942 (not x25853))
+:assumption (or (not x17359) x17409)
+:assumption (or x2392 x28271)
+:assumption (or (not x27330) (not x18747))
+:assumption (or x1669 x16719)
+:assumption (or (not x9890) x28390)
+:assumption (or x29484 (not x9358))
+:assumption (or (not x23730) (not x13592) x6888 (not x17139) (not x19601))
+:assumption (or (not x3437) (not x5240))
+:assumption (or (not x16578) x30785)
+:assumption (or x9971 (not x3488))
+:assumption (or (not x92) x12908)
+:assumption (or x2516 x13482)
+:assumption (or x29816 (not x15047))
+:assumption (or (not x12054) (not x5444))
+:assumption (or (not x29649) (not x6718))
+:assumption (or x16652 (not x19914))
+:assumption (or (not x2349) (not x12479) (not x23796) x20898)
+:assumption (or (not x31704) x23937)
+:assumption (or (not x24196) x16769)
+:assumption (or x2985 x28672)
+:assumption (or x21982 (not x1576))
+:assumption (or x2931 x19081)
+:assumption (or (not x3909) x3475)
+:assumption (or x332 (not x1525))
+:assumption (or (not x2646) x17727 (not x9371) (not x4393) (not x1911) x26644 x20058 (not x24631) x5017)
+:assumption (or (not x22075) (not x22686))
+:assumption (or x14518 x29298)
+:assumption (or (not x20300) (not x20106))
+:assumption (or x21390 x31901)
+:assumption (or x4863 x10711)
+:assumption (or x27790 x30968)
+:assumption (or (not x12646) x22602)
+:assumption (or x19183 (not x3888) (not x28161))
+:assumption (or (not x9970) (not x5454))
+:assumption (or (not x13925) (not x15795))
+:assumption (or x10145 (not x13650) x23321 x8983 (not x2496) (not x17444) (not x28346) x22571)
+:assumption (or x14352 (not x218) (not x13431))
+:assumption (or x25747 (not x19933))
+:assumption (or x26782 (not x11580))
+:assumption (or (not x13072) (not x22202))
+:assumption (or x21884 (not x9334))
+:assumption (or (not x7642) x7653)
+:assumption (or (not x19992) x28823)
+:assumption (or (not x28546) x26563 x3075 x8785 x30161)
+:assumption (or x6199 (not x21298))
+:assumption (or (not x13356) (not x4504))
+:assumption (or x5707 x14838)
+:assumption (or x21594 x20015)
+:assumption (or (not x16559) x3659)
+:assumption (or x8602 (not x6260))
+:assumption (or x16809 (not x15127))
+:assumption (or (not x31821) (not x22790))
+:assumption (or x16168 (not x5866))
+:assumption (or (not x13718) (not x21011))
+:assumption (or (not x24732) (not x17776))
+:assumption (or (not x27782) (not x17571) x17801 x7200)
+:assumption (or (not x4378) (not x17004))
+:assumption (or x21013 x25663)
+:assumption (or (not x22205) (not x4015))
+:assumption (or (not x24756) x21331)
+:assumption (or (not x24422) x3551 x298)
+:assumption (or (not x18387) (not x27311))
+:assumption (or x29250 x16233)
+:assumption (or x244 x10865)
+:assumption (or x170 x17084)
+:assumption (or x2082 x11161)
+:assumption (or x29378 (not x26418))
+:assumption (or x30921 x4369)
+:assumption (or (not x12905) (not x5863))
+:assumption (or x26429 (not x14156))
+:assumption (or (not x24923) x29158 (not x19207) (not x5617) (not x935))
+:assumption (or x15335 (not x22803))
+:assumption (or x16929 (not x24198))
+:assumption (or (not x21317) (not x31843))
+:assumption (or (not x10735) (not x13320))
+:assumption (or (not x30443) x14615)
+:assumption (or x18522 (not x9356))
+:assumption (or x30373 (not x4540))
+:assumption (or (not x20077) (not x30749) x30193 (not x25230) (not x7695) (not x3023) x30822 x601)
+:assumption (or x13859 (not x23451))
+:assumption (or (not x4086) x31237)
+:assumption (or (not x26114) (not x12872))
+:assumption (or x6604 (not x20737))
+:assumption (or x15767 (not x3956))
+:assumption (or x21417 (not x10383))
+:assumption (or (not x17081) x436)
+:assumption (or (not x13936) (not x25133))
+:assumption (or x28280 (not x2599))
+:assumption (or x19054 x18450)
+:assumption (or x9597 (not x27979))
+:assumption (or x8117 x27802)
+:assumption (or (not x8002) x10033)
+:assumption (or (not x20824) x13611)
+:assumption (or x18024 (not x12983))
+:assumption (or x21462 (not x13967))
+:assumption (or (not x494) (not x3657))
+:assumption (or (not x7038) x11177)
+:assumption (or x8602 x28738)
+:assumption (or x25913 (not x30371))
+:assumption (or x18271 x18893)
+:assumption (or (not x6440) (not x16462))
+:assumption (or (not x26386) (not x30767))
+:assumption (or (not x16933) (not x26796))
+:assumption (or (not x13878) x13649 x25724 x18691)
+:assumption (or (not x17349) x29249)
+:assumption (or (not x28775) (not x6618))
+:assumption (or x27011 (not x9582))
+:assumption (or x18302 x12033)
+:assumption (or (not x20912) (not x29683))
+:assumption (or (not x873) x16729)
+:assumption (or x2557 x26433)
+:assumption (or x21962 (not x11938) x12890)
+:assumption (or x9916 (not x31681) x11802)
+:assumption (or (not x20339) x4959)
+:assumption (or x27395 x6606 (not x25748))
+:assumption (or x28247 (not x1096))
+:assumption (or x11830 (not x23244))
+:assumption (or (not x26344) (not x21153))
+:assumption (or x5614 (not x19000) (not x24024) x24512)
+:assumption (or (not x28885) x8928)
+:assumption (or (not x24861) x4264)
+:assumption (or (not x8002) (not x19355))
+:assumption (or x17248 x16772)
+:assumption (or (not x4371) x27051)
+:assumption (or (not x5162) x23282)
+:assumption (or x30970 x18822)
+:assumption (or x1548 (not x18713))
+:assumption (or x8716 (not x9988))
+:assumption (or x26463 (not x8002))
+:assumption (or x20636 x5915)
+:assumption (or (not x2122) (not x7340))
+:assumption (or x31544 (not x19597))
+:assumption (or x29196 x5853 x28063)
+:assumption (or (not x2109) (not x25376))
+:assumption (or x10960 x19120)
+:assumption (or x18293 (not x10892))
+:assumption (or x29361 (not x4512))
+:assumption (or x8081 x19611)
+:assumption (or (not x16003) x11342 x18069)
+:assumption (or x30658 x26976)
+:assumption (or x10180 (not x17101))
+:assumption (or x31017 (not x3917))
+:assumption (or (not x16385) x31554)
+:assumption (or x2669 x21734 (not x16025))
+:assumption (or (not x2929) x16025 x19062)
+:assumption (or x9048 x1063)
+:assumption (or x9602 (not x9001))
+:assumption (or x12757 x16096)
+:assumption (or (not x571) x17507)
+:assumption (or x17225 (not x14912))
+:assumption (or (not x23596) x5920)
+:assumption (or x20949 (not x11706))
+:assumption (or x18872 x9543)
+:assumption (or x6794 (not x21110) (not x19730) x15401)
+:assumption (or (not x23279) (not x26219))
+:assumption (or x5528 (not x15127))
+:assumption (or (not x19520) (not x24602) (not x24958) x898 (not x27365))
+:assumption (or (not x23368) (not x747))
+:assumption (or x13747 x9219)
+:assumption (or (not x8586) x16331)
+:assumption (or x11292 (not x24147))
+:assumption (or x15416 x6721)
+:assumption (or x20447 x7520)
+:assumption (or x13311 x9388)
+:assumption (or x21815 (not x30409))
+:assumption (or (not x5357) (not x17793))
+:assumption (or x4504 (not x192) x21204)
+:assumption (or (not x26950) x27635)
+:assumption (or (not x14601) x26275 (not x3751) (not x7790) x16095 x14542 x22792 x15767 x4221)
+:assumption (or (not x11018) (not x12099))
+:assumption (or (not x9988) x17187)
+:assumption (or x5028 (not x6321))
+:assumption (or x18070 x2760)
+:assumption (or (not x25403) x22510)
+:assumption (or (not x28033) (not x3132))
+:assumption (or x5929 (not x16108))
+:assumption (or x25586 x15072)
+:assumption (or x16510 x20239)
+:assumption (or (not x16840) x22767 x8415 x2265 x19656)
+:assumption (or x29333 (not x14050))
+:assumption (or x2214 (not x5976))
+:assumption (or x9631 (not x28516))
+:assumption (or x13071 (not x11622))
+:assumption (or (not x2068) (not x20886))
+:assumption (or x11158 x9299)
+:assumption (or (not x20291) x19080 x16025)
+:assumption (or x14974 (not x8980))
+:assumption (or x17657 x27235)
+:assumption (or (not x12467) (not x26120))
+:assumption (or (not x16016) (not x13512))
+:assumption (or (not x19021) (not x26622))
+:assumption (or x16409 x31403 (not x29612) (not x24612) x6017)
+:assumption (or x17383 (not x6039))
+:assumption (or (not x7599) (not x12740))
+:assumption (or x22748 (not x5511))
+:assumption (or (not x15911) (not x17758))
+:assumption (or (not x4927) (not x14485))
+:assumption (or x27038 (not x27551))
+:assumption (or (not x25443) (not x11893))
+:assumption (or (not x22345) (not x27505))
+:assumption (or (not x13965) x30890)
+:assumption (or (not x7017) x8979)
+:assumption (or (not x8105) x16787)
+:assumption (or x18685 x17618)
+:assumption (or (not x3082) x16792)
+:assumption (or (not x27046) x27286 (not x7497) x10610 (not x6912) (not x6942) x10672 x17148)
+:assumption (or x27658 (not x20087))
+:assumption (or (not x12703) (not x22706))
+:assumption (or x10172 x11451 x6097 x7377 (not x27807) x10724 (not x18294) (not x16524))
+:assumption (or (not x23323) (not x28687))
+:assumption (or x6011 (not x20947))
+:assumption (or (not x31488) (not x21796))
+:assumption (or (not x2039) (not x29650))
+:assumption (or x16792 x3534)
+:assumption (or x13662 (not x24584))
+:assumption (or (not x12529) (not x168))
+:assumption (or x23591 (not x18369))
+:assumption (or (not x29244) x17359 x2781 x24467 (not x11426))
+:assumption (or (not x15266) (not x15467))
+:assumption (or x27394 (not x19386))
+:assumption (or (not x14888) (not x12691))
+:assumption (or x27174 x15677)
+:assumption (or (not x1758) (not x6745))
+:assumption (or x241 x25025)
+:assumption (or (not x24904) (not x12125))
+:assumption (or (not x7697) x15191)
+:assumption (or (not x15167) (not x2543))
+:assumption (or x20231 x1209)
+:assumption (or x12333 (not x1369) x9328 x12733 x19689 (not x2690))
+:assumption (or x9055 x8118)
+:assumption (or x14856 x1393 (not x15657) (not x13149) (not x11149) (not x23643) x15742 x28963)
+:assumption (or x1621 x14675 (not x3063))
+:assumption (or x13956 x15799 (not x11254))
+:assumption (or (not x9008) x11414 (not x6314))
+:assumption (or (not x1527) x14289)
+:assumption (or x28449 (not x29698))
+:assumption (or (not x20250) (not x22224))
+:assumption (or (not x11880) x24952 x82)
+:assumption (or x9318 x2498)
+:assumption (or (not x9324) x18920 x16153 (not x16579))
+:assumption (or (not x26783) x28231)
+:assumption (or x1212 (not x25355))
+:assumption (or x149 (not x29934))
+:assumption (or x6625 x3299)
+:assumption (or (not x4229) (not x4163))
+:assumption (or x7423 x2287)
+:assumption (or (not x23594) x28521)
+:assumption (or (not x24155) (not x4475) (not x27911) (not x6771) (not x30891))
+:assumption (or (not x24294) x6977)
+:assumption (or x27068 x22855 x480 x28015)
+:assumption (or (not x14232) x20230)
+:assumption (or (not x1963) (not x8002))
+:assumption (or x25335 (not x15384))
+:assumption (or (not x20331) x31146)
+:assumption (or x18635 (not x3575))
+:assumption (or x9798 x12948)
+:assumption (or (not x29030) (not x6468))
+:assumption (or x23027 x16955)
+:assumption (or (not x29432) (not x29489))
+:assumption (or (not x4164) (not x30456))
+:assumption (or (not x20463) x8387)
+:assumption (or (not x9939) x5487)
+:assumption (or x1566 (not x10181))
+:assumption (or x2007 (not x15546))
+:assumption (or x28550 (not x20606) (not x27104))
+:assumption (or x1047 (not x8978) (not x21815))
+:assumption (or x28905 x1438)
+:assumption (or x7064 x20829)
+:assumption (or (not x31416) x17087)
+:assumption (or (not x6243) (not x16153))
+:assumption (or (not x24009) (not x11182))
+:assumption (or x23687 (not x15103))
+:assumption (or x3953 (not x18765))
+:assumption (or (not x5914) x10036)
+:assumption (or x21815 (not x12431))
+:assumption (or x20591 (not x7156))
+:assumption (or (not x11229) x10719)
+:assumption (or (not x18534) x9984 (not x2197) x1419 (not x14706) (not x10013) (not x9778))
+:assumption (or x1296 (not x18785))
+:assumption (or (not x4241) (not x29321))
+:assumption (or x8595 (not x13085) x30945 (not x15178) (not x9745) (not x2118) (not x21353) x18071)
+:assumption (or (not x28865) (not x24497))
+:assumption (or (not x29612) x30124 x6017 x31403 (not x22543))
+:assumption (or (not x4902) x19078)
+:assumption (or x7253 (not x22423))
+:assumption (or x13956 (not x4339))
+:assumption (or (not x411) (not x31657))
+:assumption (or x4701 x19272)
+:assumption (or (not x17435) x14389 (not x12811) (not x30422) x14153 x29312)
+:assumption (or (not x19798) x8992 (not x13150) x5662 x19334 x15809 x31353 x7447)
+:assumption (or (not x26387) (not x2898))
+:assumption (or x4332 (not x9449))
+:assumption (or x29808 x5896 x3113 (not x18970))
+:assumption (or (not x9613) x13255 (not x10773))
+:assumption (or x13732 x31134)
+:assumption (or x17675 x29486)
+:assumption (or (not x10544) x23244 (not x10582))
+:assumption (or x23244 x27169 x8002 (not x27085) x21697)
+:assumption (or x10897 x14747)
+:assumption (or (not x9025) (not x2339) (not x17534))
+:assumption (or (not x1506) x15830)
+:assumption (or x2320 x4865 (not x11119) (not x19061))
+:assumption (or x19117 (not x1499))
+:assumption (or x18008 (not x31449))
+:assumption (or (not x26037) x15157)
+:assumption (or (not x25587) x30038)
+:assumption (or (not x12576) (not x18165) x2702 (not x22495))
+:assumption (or (not x8658) x23843)
+:assumption (or (not x7200) x20978)
+:assumption (or x18070 (not x19615))
+:assumption (or (not x964) x30961)
+:assumption (or (not x31825) x4874)
+:assumption (or (not x22562) (not x14659))
+:assumption (or x4330 x8602)
+:assumption (or (not x16863) x8538)
+:assumption (or x7748 (not x7445) (not x6402))
+:assumption (or (not x18813) (not x14201))
+:assumption (or (not x29349) x7854)
+:assumption (or x2171 x19434)
+:assumption (or (not x19476) x15336)
+:assumption (or (not x10897) (not x14747) x9943 (not x24881) (not x13962))
+:assumption (or x20087 x20247)
+:assumption (or x5404 x10734)
+:assumption (or (not x5946) (not x22844))
+:assumption (or (not x10109) (not x20142))
+:assumption (or x6351 x9567 (not x11587) x31907 x13446 (not x17986) x9153)
+:assumption (or x1409 x10430 x3025 (not x8601) (not x30095) x16355)
+:assumption (or (not x29859) (not x29510) (not x15286) (not x12433))
+:assumption (or x17058 x27049)
+:assumption (or (not x13100) x22278)
+:assumption (or x26356 (not x3758))
+:assumption (or x11488 x7811)
+:assumption (or x22533 x28543)
+:assumption (or x30138 x28606 x7738)
+:assumption (or (not x28854) (not x5889))
+:assumption (or x2441 x10262)
+:assumption (or x7873 (not x12843))
+:assumption (or (not x15797) (not x8632))
+:assumption (or x14143 x21673 (not x11243) (not x26781))
+:assumption (or x28246 (not x20600) x8229)
+:assumption (or (not x5951) x15537 (not x2870))
+:assumption (or x24682 x15908)
+:assumption (or x10373 x14015)
+:assumption (or x4443 x17523 x827)
+:assumption (or (not x10298) x23620)
+:assumption (or x12465 x26280)
+:assumption (or x29689 x5198)
+:assumption (or (not x14138) x14590)
+:assumption (or (not x20341) x12384)
+:assumption (or (not x915) (not x25221))
+:assumption (or (not x23595) (not x28513))
+:assumption (or x6135 (not x3782))
+:assumption (or (not x4302) x2528)
+:assumption (or (not x5326) (not x21815))
+:assumption (or (not x9531) (not x6591))
+:assumption (or (not x12629) (not x806))
+:assumption (or (not x26548) x13622 (not x9499))
+:assumption (or (not x4355) (not x11087))
+:assumption (or x11077 x13437)
+:assumption (or x7528 x9008)
+:assumption (or (not x18815) x31042)
+:assumption (or (not x13848) (not x14426) x19649)
+:assumption (or x30318 x5045)
+:assumption (or (not x28005) (not x31134) x5044 x29606)
+:assumption (or (not x21890) (not x30351))
+:assumption (or (not x30478) x14732 (not x17215) (not x14794))
+:assumption (or (not x8945) x21692)
+:assumption (or x30961 (not x1026))
+:assumption (or x13576 (not x23070))
+:assumption (or x27633 (not x25076) x21307 (not x21078))
+:assumption (or x20861 x29022)
+:assumption (or (not x10967) (not x7320))
+:assumption (or x5265 (not x29989))
+:assumption (or x14638 x14440)
+:assumption (or x29442 x25907)
+:assumption (or (not x15795) (not x13911) x14591 x1572)
+:assumption (or (not x10912) x8961 (not x5650))
+:assumption (or x28372 x60)
+:assumption (or x31785 x27002)
+:assumption (or x27778 x8688)
+:assumption (or (not x9525) x14378)
+:assumption (or x17384 x7910)
+:assumption (or (not x20259) x23859)
+:assumption (or x7965 (not x28364))
+:assumption (or x1249 x11963)
+:assumption (or (not x27127) x16905)
+:assumption (or (not x28181) x22206)
+:assumption (or x26843 x8002 x25277 x1809)
+:assumption (or (not x28055) x11023)
+:assumption (or x24182 x27383)
+:assumption (or x30518 (not x30113) x3771 (not x16152))
+:assumption (or (not x1667) (not x29724))
+:assumption (or x8028 (not x29796))
+:assumption (or x14991 x14695)
+:assumption (or x24101 (not x3782) (not x4058) (not x2181))
+:assumption (or (not x1699) (not x31631))
+:assumption (or (not x14973) x28798)
+:assumption (or x16956 (not x30236))
+:assumption (or x27749 (not x15621) x7679)
+:assumption (or (not x20022) x16025 (not x23352))
+:assumption (or (not x20325) x23283)
+:assumption (or (not x21902) x827 x24154)
+:assumption (or x4954 (not x2278))
+:assumption (or (not x19361) (not x3494) (not x1495) (not x19380))
+:assumption (or (not x27679) (not x2506))
+:assumption (or x8898 x16406)
+:assumption (or (not x30070) x29055)
+:assumption (or (not x29827) x29123)
+:assumption (or x27537 x10902)
+:assumption (or x29806 x28317)
+:assumption (or x17602 x21298)
+:assumption (or (not x5028) (not x26139))
+:assumption (or (not x1780) x29231)
+:assumption (or x23244 (not x20465) x15755 (not x17930) x8002)
+:assumption (or (not x18054) x18042)
+:assumption (or (not x176) x18960)
+:assumption (or (not x17277) x8002)
+:assumption (or x15227 x31649)
+:assumption (or (not x20550) x10638)
+:assumption (or (not x20075) (not x15987))
+:assumption (or x30891 x2564)
+:assumption (or x22803 x14196)
+:assumption (or x29978 (not x30110))
+:assumption (or x1939 (not x7466))
+:assumption (or (not x4967) x7388 x21815)
+:assumption (or x25205 x25350)
+:assumption (or (not x31192) x4362)
+:assumption (or (not x2081) (not x16871))
+:assumption (or x1008 (not x24054))
+:assumption (or (not x14789) x28378)
+:assumption (or x25894 x5281)
+:assumption (or (not x30754) (not x18769))
+:assumption (or (not x17302) (not x2396) (not x20009))
+:assumption (or x20723 x6201)
+:assumption (or (not x8123) x3127)
+:assumption (or x29305 x23244 x13956 x8002 (not x4743) (not x12176))
+:assumption (or x19659 (not x14275))
+:assumption (or x5776 (not x30111))
+:assumption (or x15948 x29418)
+:assumption (or x9634 (not x5846) (not x804))
+:assumption (or x2059 (not x24290))
+:assumption (or x19864 x4200)
+:assumption (or (not x6097) (not x2017))
+:assumption (or x26340 (not x8654))
+:assumption (or x5059 (not x29374) (not x14580))
+:assumption (or x18424 x30069)
+:assumption (or (not x8081) x3374)
+:assumption (or (not x29243) x8831)
+:assumption (or x10310 x444)
+:assumption (or (not x31734) (not x18834))
+:assumption (or x13576 x3595)
+:assumption (or (not x8002) (not x8192) x6759)
+:assumption (or x10095 (not x30633))
+:assumption (or (not x16390) (not x13720))
+:assumption (or (not x31248) x18129)
+:assumption (or x13715 x21029 (not x7251) (not x14347) (not x22329) x29806 x25407)
+:assumption (or (not x31308) (not x19770) (not x16777) x29964 (not x11792) (not x16625))
+:assumption (or (not x5671) (not x1393))
+:assumption (or x29490 (not x11214))
+:assumption (or x61 (not x13923))
+:assumption (or x10362 x1393)
+:assumption (or x24525 (not x15197))
+:assumption (or x1038 x28402)
+:assumption (or (not x4451) x2382)
+:assumption (or x29438 x6773 x11132 x15415)
+:assumption (or x28031 (not x31368))
+:assumption (or (not x5496) (not x5361))
+:assumption (or x20960 (not x26229))
+:assumption (or x8808 x4774 (not x20955) (not x16809) x27519 (not x760))
+:assumption (or (not x12375) x3092)
+:assumption (or (not x22442) (not x19733))
+:assumption (or (not x12445) (not x18915))
+:assumption (or x17072 (not x22812) x13956)
+:assumption (or x4947 (not x918))
+:assumption (or x21 (not x18354))
+:assumption (or (not x10937) x11208)
+:assumption (or x16534 x18885 x23244)
+:assumption (or x7041 x5953)
+:assumption (or x22315 x4915 x23521 x730 (not x30780) x5977 x17977 (not x18253))
+:assumption (or (not x25784) x2154)
+:assumption (or (not x3489) (not x24389))
+:assumption (or x22405 (not x3586) x6149)
+:assumption (or (not x8105) x24688)
+:assumption (or (not x13283) (not x7658))
+:assumption (or (not x3482) x8453)
+:assumption (or (not x24079) (not x1676))
+:assumption (or (not x15248) x9880)
+:assumption (or x21298 x30746)
+:assumption (or x15530 (not x26105))
+:assumption (or x2397 x7126)
+:assumption (or x29217 x793)
+:assumption (or (not x30494) x29324)
+:assumption (or (not x5528) (not x25200))
+:assumption (or x31829 (not x8395))
+:assumption (or x24932 (not x14591) x29349)
+:assumption (or x26155 x14157)
+:assumption (or x17855 x23280 (not x16478) (not x27628))
+:assumption (or (not x19378) x27086)
+:assumption (or (not x29911) x26069)
+:assumption (or x29475 x22190)
+:assumption (or x12154 x5025)
+:assumption (or x25173 x21298)
+:assumption (or (not x8002) (not x26494))
+:assumption (or x4029 (not x29181))
+:assumption (or x12355 x16936)
+:assumption (or x865 (not x29361) x8170 (not x3698) (not x28344) (not x6671))
+:assumption (or x21234 (not x28885))
+:assumption (or (not x15023) (not x21595) x29652 x5036 (not x22878) (not x21466) (not x20078) (not x23455))
+:assumption (or (not x14261) (not x15497) (not x19570))
+:assumption (or (not x3648) x1044)
+:assumption (or (not x26897) x26131)
+:assumption (or (not x24904) x1147)
+:assumption (or x15887 (not x13375))
+:assumption (or (not x10829) x21546)
+:assumption (or (not x2574) (not x5926))
+:assumption (or x26025 (not x18098))
+:assumption (or x28462 (not x4314))
+:assumption (or (not x8164) x9053)
+:assumption (or (not x29543) (not x29718))
+:assumption (or (not x4755) (not x20531))
+:assumption (or (not x13036) x10222 (not x8274))
+:assumption (or x6946 (not x1650))
+:assumption (or x5528 (not x28595))
+:assumption (or (not x25967) (not x20848))
+:assumption (or x13053 (not x14730))
+:assumption (or x4827 x21081)
+:assumption (or (not x6228) (not x26961) (not x1398) (not x30946) (not x31446) x31633)
+:assumption (or x25224 x13185)
+:assumption (or x2899 x27972)
+:assumption (or (not x7444) x17806)
+:assumption (or x7388 (not x722))
+:assumption (or x25471 x8157)
+:assumption (or (not x7891) (not x3510))
+:assumption (or (not x5892) x423)
+:assumption (or x10476 (not x17302))
+:assumption (or (not x25053) x7846 (not x21879) (not x27673) x18455)
+:assumption (or (not x8983) (not x23321))
+:assumption (or (not x15850) (not x15108))
+:assumption (or (not x16304) (not x9025) (not x16905))
+:assumption (or (not x26257) x13987)
+:assumption (or (not x31574) (not x14883))
+:assumption (or (not x24298) x7275)
+:assumption (or x202 x16200)
+:assumption (or x26946 (not x25478))
+:assumption (or x1911 x30953)
+:assumption (or (not x4345) x15795 x1363)
+:assumption (or x16477 x3449 x13956 (not x10004) x18599 x18987)
+:assumption (or (not x19309) (not x14015))
+:assumption (or x30439 (not x14087) x11742)
+:assumption (or x6612 x29981)
+:assumption (or (not x8837) (not x9707) (not x9772))
+:assumption (or (not x31286) x2863)
+:assumption (or (not x13300) (not x20654))
+:assumption (or x22312 x15199 x7734)
+:assumption (or (not x5801) x11781)
+:assumption (or x7543 (not x9930))
+:assumption (or (not x25335) x26828)
+:assumption (or x17404 (not x29772))
+:assumption (or (not x15709) x2357 (not x9008))
+:assumption (or (not x15236) (not x21322))
+:assumption (or (not x12077) (not x5328))
+:assumption (or x10186 (not x30030))
+:assumption (or (not x7818) (not x2589))
+:assumption (or (not x12632) (not x1588))
+:assumption (or x20789 x9739)
+:assumption (or x26284 (not x14850))
+:assumption (or x22674 x5781)
+:assumption (or x7953 (not x13675))
+:assumption (or x16811 x31669)
+:assumption (or (not x722) (not x3326))
+:assumption (or x21298 x28452)
+:assumption (or x13956 x16362 (not x17983))
+:assumption (or (not x13956) x4912)
+:assumption (or (not x16409) (not x18661))
+:assumption (or x18332 (not x14765))
+:assumption (or x26437 x13172 x26070 x3052 x8002 (not x13990))
+:assumption (or x11318 x11496)
+:assumption (or x9537 (not x31536))
+:assumption (or (not x17968) (not x12371))
+:assumption (or (not x19043) (not x20948) x13516 (not x16934) (not x14849))
+:assumption (or (not x11650) (not x14034))
+:assumption (or (not x9008) (not x28237))
+:assumption (or (not x9417) (not x6969) (not x8800))
+:assumption (or x2380 (not x6297))
+:assumption (or (not x1393) x26832 (not x28304))
+:assumption (or x14933 x20473)
+:assumption (or (not x24080) (not x9173))
+:assumption (or (not x28023) (not x11075))
+:assumption (or x5785 x11335)
+:assumption (or (not x2592) (not x9932))
+:assumption (or (not x984) (not x3435))
+:assumption (or (not x7113) x2943 x27967 (not x1935) x7369 x17743 x27855)
+:assumption (or (not x21190) x21456 x5217)
+:assumption (or x18419 (not x26587))
+:assumption (or x8602 x12791 x1619)
+:assumption (or x25212 x22853)
+:assumption (or x10238 x1221)
+:assumption (or (not x16847) x10981)
+:assumption (or (not x5785) (not x29805))
+:assumption (or x21140 x13180)
+:assumption (or x16658 (not x30407))
+:assumption (or (not x23090) (not x17740))
+:assumption (or x11382 (not x23472))
+:assumption (or (not x8583) (not x10154))
+:assumption (or x28063 x18422)
+:assumption (or x4657 (not x13469))
+:assumption (or x1925 (not x6783) (not x14487) (not x31550))
+:assumption (or (not x24828) (not x6609))
+:assumption (or (not x5999) x1594)
+:assumption (or x28008 x24036)
+:assumption (or (not x2401) x28476)
+:assumption (or x245 x3661 x1016 x19663 (not x14107))
+:assumption (or (not x27133) x19010)
+:assumption (or (not x8602) x9308 x12791)
+:assumption (or (not x18042) (not x14371) (not x8450) (not x20201))
+:assumption (or (not x5822) (not x18))
+:assumption (or x7429 x5556)
+:assumption (or (not x19639) (not x14964))
+:assumption (or (not x25008) (not x19992) (not x25926))
+:assumption (or x1504 (not x28130))
+:assumption (or (not x4289) (not x11987) x6351)
+:assumption (or x23642 x8961)
+:assumption (or (not x31773) x6993)
+:assumption (or x24984 (not x12562) (not x1393))
+:assumption (or (not x22513) x19318)
+:assumption (or x21410 x13247)
+:assumption (or x6103 x15749)
+:assumption (or (not x2122) x16361)
+:assumption (or (not x21018) (not x7411) (not x27537))
+:assumption (or (not x15206) x11230)
+:assumption (or x18836 (not x11085))
+:assumption (or x28991 x13667)
+:assumption (or x5528 (not x20794) (not x18384))
+:assumption (or x2664 (not x15076))
+:assumption (or x27321 x11166 x8135 (not x4827) (not x7885) (not x7870) x6963 (not x23876) x24075)
+:assumption (or (not x30113) x12304 x5655 (not x27859))
+:assumption (or (not x23646) x12540)
+:assumption (or x31165 x23780)
+:assumption (or x26598 x31635)
+:assumption (or x1583 (not x389))
+:assumption (or (not x30227) (not x8593))
+:assumption (or x10344 (not x13131))
+:assumption (or x27791 x17576)
+:assumption (or (not x16506) x30447 (not x16754) (not x29503) (not x27811) (not x14682) x10082 (not x31063))
+:assumption (or x6771 x30631 (not x30891) x30633 x24155 x31083 (not x27911) (not x539) x16736)
+:assumption (or x23787 (not x9434))
+:assumption (or (not x7358) (not x16354))
+:assumption (or x30761 x5317)
+:assumption (or x21782 (not x24343))
+:assumption (or x23557 x21653)
+:assumption (or x21719 x23280)
+:assumption (or (not x7136) (not x13347))
+:assumption (or (not x1638) (not x1558))
+:assumption (or x2646 (not x20753))
+:assumption (or (not x22189) x25146)
+:assumption (or x13338 x28723)
+:assumption (or x22228 x21298)
+:assumption (or x1735 x25692)
+:assumption (or x26827 x7470 (not x27391) x29094 (not x16374) x12614)
+:assumption (or x24621 x10982)
+:assumption (or x4160 x9250)
+:assumption (or (not x4172) (not x13242))
+:assumption (or (not x8944) x14455 x7222 (not x21060) x3435 x984 (not x24353))
+:assumption (or x1920 x30147)
+:assumption (or (not x7897) (not x29607))
+:assumption (or x12972 (not x9014))
+:assumption (or (not x13824) (not x28973))
+:assumption (or x6231 (not x1542))
+:assumption (or (not x7725) x2895)
+:assumption (or (not x6951) (not x18615))
+:assumption (or x8680 x27256 (not x18743))
+:assumption (or (not x21334) (not x20291))
+:assumption (or x22944 (not x27818))
+:assumption (or (not x31207) x25344)
+:assumption (or x31832 x21815)
+:assumption (or x21873 (not x15661) x14839 (not x5619))
+:assumption (or (not x29492) x18056)
+:assumption (or (not x7471) x29944)
+:assumption (or x11862 (not x8633))
+:assumption (or x17516 x6675)
+:assumption (or (not x5190) x26750)
+:assumption (or (not x29351) (not x9529))
+:assumption (or x16595 (not x21530))
+:assumption (or x18780 (not x28557))
+:assumption (or (not x28541) x30939 x31696 (not x254))
+:assumption (or x10536 (not x8469))
+:assumption (or x27610 (not x20639))
+:assumption (or (not x7434) x28139)
+:assumption (or (not x23097) (not x31134))
+:assumption (or x26085 (not x25868))
+:assumption (or x6949 (not x28780) x26212 (not x6601) (not x14493))
+:assumption (or (not x4805) x5028)
+:assumption (or x13808 (not x24715) (not x15339) (not x19193) x21261)
+:assumption (or x8002 (not x16261) x8325)
+:assumption (or x3486 (not x650))
+:assumption (or x8256 x19112)
+:assumption (or x17710 x27504)
+:assumption (or x10555 x29152)
+:assumption (or x19242 (not x20536))
+:assumption (or (not x18673) x23887)
+:assumption (or (not x5858) (not x3707))
+:assumption (or x15495 (not x5944))
+:assumption (or (not x1790) (not x5631) x28331)
+:assumption (or (not x7900) (not x15786))
+:assumption (or x8846 (not x24066))
+:assumption (or (not x19992) (not x15014))
+:assumption (or (not x12578) x11783 (not x10733) x21302 (not x24381))
+:assumption (or (not x9352) x20217)
+:assumption (or (not x13282) x24513)
+:assumption (or (not x8048) (not x22622))
+:assumption (or (not x5429) x11834)
+:assumption (or (not x30694) x30110)
+:assumption (or x4267 x3238)
+:assumption (or (not x6060) x9638 (not x15392) (not x27643) x7186 x23522)
+:assumption (or (not x30825) (not x28994))
+:assumption (or x9412 x24827)
+:assumption (or (not x18540) (not x9909) x30633)
+:assumption (or (not x15106) x17838)
+:assumption (or x12571 (not x6899))
+:assumption (or (not x2460) (not x6266))
+:assumption (or (not x1392) (not x16665))
+:assumption (or (not x31836) x25255)
+:assumption (or x18959 (not x18312))
+:assumption (or (not x10084) x31134)
+:assumption (or (not x15795) (not x21134))
+:assumption (or x31362 (not x8300))
+:assumption (or (not x3546) (not x12649))
+:assumption (or x31677 (not x16648))
+:assumption (or x12753 (not x1852))
+:assumption (or x28052 (not x19864))
+:assumption (or (not x19769) x741)
+:assumption (or (not x25797) (not x9390) (not x26259))
+:assumption (or (not x1547) x25650)
+:assumption (or (not x20787) x21146)
+:assumption (or (not x78) (not x23782))
+:assumption (or x13956 x17921)
+:assumption (or x12071 (not x29392) (not x19849) (not x10427) x30411)
+:assumption (or x4071 (not x7181))
+:assumption (or (not x3264) x28427)
+:assumption (or (not x5863) x917)
+:assumption (or x3092 x6562)
+:assumption (or (not x4809) (not x9506) (not x14891))
+:assumption (or x31100 x25336)
+:assumption (or x30387 (not x25484))
+:assumption (or (not x17110) x6112)
+:assumption (or x188 x14660)
+:assumption (or (not x28258) (not x4741))
+:assumption (or x7308 x29262 (not x31392))
+:assumption (or (not x5005) x1621)
+:assumption (or x30156 x26416)
+:assumption (or x1025 (not x16836))
+:assumption (or (not x11272) x31772)
+:assumption (or x19428 x29325 (not x13204))
+:assumption (or x12305 (not x29923))
+:assumption (or x7280 x15177)
+:assumption (or (not x28654) x28314)
+:assumption (or x5417 (not x17880))
+:assumption (or x20122 x19949)
+:assumption (or x29783 x8512)
+:assumption (or x30981 (not x19336) (not x15404) (not x19300) (not x14808))
+:assumption (or x23714 x11954)
+:assumption (or (not x26762) (not x25208))
+:assumption (or (not x8445) (not x15996))
+:assumption (or (not x19274) (not x18069))
+:assumption (or (not x17600) x25317)
+:assumption (or (not x28081) (not x1100))
+:assumption (or (not x18457) x3481)
+:assumption (or x30179 (not x27446))
+:assumption (or x5679 x13525 x7582)
+:assumption (or x991 x5028)
+:assumption (or (not x18126) x29312)
+:assumption (or x16715 x2274)
+:assumption (or (not x12973) (not x15962))
+:assumption (or x15755 x3965)
+:assumption (or (not x24433) (not x127))
+:assumption (or (not x6744) x9008)
+:assumption (or x24809 x26341)
+:assumption (or x20617 (not x15863))
+:assumption (or x4477 x11077 (not x8602))
+:assumption (or (not x19827) x11067)
+:assumption (or (not x20936) (not x31581) (not x14509) x1508)
+:assumption (or x4282 (not x25102))
+:assumption (or x31905 (not x31653))
+:assumption (or x23232 (not x16628))
+:assumption (or (not x2821) (not x26942))
+:assumption (or (not x202) (not x2527) x24327)
+:assumption (or (not x24385) x5534 x13632 (not x4910) x18719 x4732 x27012)
+:assumption (or x27118 (not x17747))
+:assumption (or (not x7550) (not x7319))
+:assumption (or x10537 x8867 (not x2410) x18311)
+:assumption (or (not x20213) x3951)
+:assumption (or x19974 x8845 x24148)
+:assumption (or (not x16365) x20988)
+:assumption (or x26816 (not x27632))
+:assumption (or x12369 x3295 x15479 (not x9363))
+:assumption (or x31914 (not x3733))
+:assumption (or x28140 (not x28161))
+:assumption (or x26382 x27014)
+:assumption (or (not x17704) x17571)
+:assumption (or (not x21816) (not x16974) x31134 x18537)
+:assumption (or x2493 x1939)
+:assumption (or x121 x10267)
+:assumption (or (not x4827) x24075 x14580 (not x7870) (not x23876) x27321 x6963 x8135 x627)
+:assumption (or x31603 (not x4650))
+:assumption (or x24016 (not x11511))
+:assumption (or (not x27543) x28583)
+:assumption (or x25720 (not x27575))
+:assumption (or x19711 x18519 (not x19950) (not x3860))
+:assumption (or (not x2881) x4754)
+:assumption (or (not x16067) x24136)
+:assumption (or x8979 x25828 x23266)
+:assumption (or x27532 x8936 x10354)
+:assumption (or x28228 (not x11668))
+:assumption (or x10588 (not x8602))
+:assumption (or x30759 x16797)
+:assumption (or (not x9713) (not x9146))
+:assumption (or x10072 (not x24313))
+:assumption (or (not x30484) x22490)
+:assumption (or (not x31416) x26210)
+:assumption (or (not x19676) (not x6966))
+:assumption (or x15720 x27455)
+:assumption (or x12705 x21896)
+:assumption (or x5851 (not x28588))
+:assumption (or x18580 x4895)
+:assumption (or x24817 (not x17322))
+:assumption (or (not x14350) x16022)
+:assumption (or x12293 (not x21984))
+:assumption (or x6329 (not x29841) (not x173))
+:assumption (or (not x18416) x13161 x3793 x20325 (not x12242))
+:assumption (or (not x964) (not x24815) (not x26670))
+:assumption (or x29456 (not x13576) (not x9531))
+:assumption (or x19025 x117)
+:assumption (or x15264 (not x21341))
+:assumption (or (not x3550) x15339)
+:assumption (or (not x31530) x16910)
+:assumption (or (not x1508) x20936)
+:assumption (or x26180 (not x3380))
+:assumption (or (not x11278) x288)
+:assumption (or x25621 x26048 x14270 x13098)
+:assumption (or (not x20031) x25120)
+:assumption (or x19695 x4126)
+:assumption (or x4451 x10042 (not x6460) x25690)
+:assumption (or (not x3954) (not x1921))
+:assumption (or (not x26892) (not x1664))
+:assumption (or (not x26371) x1407)
+:assumption (or x7639 (not x23139))
+:assumption (or x3558 x5815 (not x15945) x29966 x19451 (not x10752))
+:assumption (or x9008 (not x3707))
+:assumption (or (not x16519) x5122)
+:assumption (or x5359 x9631)
+:assumption (or x8040 x9018)
+:assumption (or x13576 x19096)
+:assumption (or x1582 x29303)
+:assumption (or (not x9304) x31287 x25618 x15013)
+:assumption (or x12841 (not x13434) x31239 (not x21525))
+:assumption (or x25716 x7908)
+:assumption (or (not x3602) (not x16897))
+:assumption (or (not x3567) (not x5093))
+:assumption (or x9720 (not x15952))
+:assumption (or (not x4598) x12349)
+:assumption (or (not x6855) (not x1715))
+:assumption (or (not x24429) (not x23538))
+:assumption (or x25423 x9251 (not x30156))
+:assumption (or x27809 (not x24175) x14839 x4984)
+:assumption (or x23730 (not x24586))
+:assumption (or x17359 x323 (not x26195) (not x11281))
+:assumption (or (not x31595) x27017)
+:assumption (or (not x9895) x20274)
+:assumption (or (not x21291) x321)
+:assumption (or (not x29464) x19423)
+:assumption (or (not x14561) (not x5731))
+:assumption (or x5643 (not x22855))
+:assumption (or (not x13197) (not x19848))
+:assumption (or x7347 (not x4269))
+:assumption (or (not x21633) x17577)
+:assumption (or x1393 (not x26602) x5313)
+:assumption (or (not x7835) x2552)
+:assumption (or (not x5049) x30369 x1868)
+:assumption (or (not x6745) (not x15278))
+:assumption (or (not x8617) (not x13576))
+:assumption (or x25705 x6372)
+:assumption (or (not x12102) (not x28361))
+:assumption (or x29352 x16989)
+:assumption (or x29919 x31187)
+:assumption (or (not x1326) x17066)
+:assumption (or (not x288) (not x30929))
+:assumption (or (not x29655) (not x21360))
+:assumption (or (not x26888) (not x11938))
+:assumption (or (not x7905) x10981 x15968 x14892)
+:assumption (or (not x21097) x18907)
+:assumption (or (not x23671) (not x1813))
+:assumption (or (not x21993) x10002 (not x8002) (not x26897))
+:assumption (or (not x19287) (not x3497))
+:assumption (or x29723 (not x28166))
+:assumption (or x29325 (not x19428) x16032)
+:assumption (or (not x10903) (not x26329))
+:assumption (or x1393 x18961 x13643)
+:assumption (or x8985 (not x4432))
+:assumption (or x4563 (not x22723))
+:assumption (or (not x26920) x27736 (not x26274) (not x31228))
+:assumption (or x8330 (not x17075) x13327)
+:assumption (or x25302 (not x31438))
+:assumption (or x10054 x23399)
+:assumption (or x29139 (not x5165))
+:assumption (or (not x11737) (not x24015))
+:assumption (or x9453 x2222)
+:assumption (or (not x20223) (not x13562))
+:assumption (or (not x12323) x9008)
+:assumption (or (not x9894) (not x4153))
+:assumption (or (not x9008) (not x21499) (not x4298))
+:assumption (or (not x19027) (not x31478))
+:assumption (or x10891 x3782)
+:assumption (or x21141 (not x16696))
+:assumption (or x13367 x9617)
+:assumption (or x29266 (not x29669))
+:assumption (or (not x9008) x26543 (not x14703))
+:assumption (or x25330 x15445)
+:assumption (or (not x30510) (not x9531))
+:assumption (or (not x218) x27272)
+:assumption (or x20949 (not x16177))
+:assumption (or x9269 x24466 x25630)
+:assumption (or (not x10972) x21298)
+:assumption (or (not x23244) (not x13495))
+:assumption (or x22227 (not x22678) (not x10127) x1990 x635 (not x24066))
+:assumption (or (not x15281) (not x22622))
+:assumption (or (not x26561) x1613 x29422 x15067 x30229 x7362)
+:assumption (or (not x31485) x15914)
+:assumption (or x25315 x9788 (not x26022))
+:assumption (or (not x7531) (not x31778))
+:assumption (or (not x30633) x11762 x31734 x25859)
+:assumption (or (not x15141) (not x8430))
+:assumption (or x27735 x7188)
+:assumption (or (not x10551) (not x26471))
+:assumption (or x30134 x22117)
+:assumption (or (not x30823) x12966)
+:assumption (or (not x29044) (not x14800))
+:assumption (or (not x13057) x8640)
+:assumption (or (not x30751) x22360 x27017)
+:assumption (or x7293 (not x1652))
+:assumption (or x13821 (not x30115))
+:assumption (or (not x16682) x8033)
+:assumption (or (not x23717) (not x31257))
+:assumption (or x10989 (not x22852) (not x6498))
+:assumption (or (not x16229) x456)
+:assumption (or (not x11134) (not x4178) x19730 x11635)
+:assumption (or x12383 x17615)
+:assumption (or (not x15372) x4979 x534 (not x26897) (not x11926) (not x7509) x31816 x29044 x14800)
+:assumption (or (not x23008) (not x15519))
+:assumption (or (not x25981) (not x10004))
+:assumption (or x3673 (not x27680))
+:assumption (or (not x28437) (not x31880))
+:assumption (or (not x15800) x26831)
+:assumption (or (not x3311) (not x26818))
+:assumption (or (not x31708) (not x368))
+:assumption (or x11356 (not x28963))
+:assumption (or x8837 x9707)
+:assumption (or (not x17071) x19351 (not x20074) (not x26878))
+:assumption (or (not x26798) x9928)
+:assumption (or (not x25315) (not x26022) (not x24774))
+:assumption (or x2784 (not x8386) x25366)
+:assumption (or (not x29536) (not x15906))
+:assumption (or (not x21791) (not x24453) (not x395) (not x4402) x6061 (not x10333) x29854 (not x19720) x14750)
+:assumption (or (not x4189) x1279)
+:assumption (or x14206 (not x19242) (not x16573) x22190)
+:assumption (or x9684 x19300)
+:assumption (or (not x8452) (not x16426))
+:assumption (or (not x28525) (not x27160))
+:assumption (or x20709 x8645)
+:assumption (or (not x2896) x24722)
+:assumption (or (not x23653) (not x1992))
+:assumption (or x5457 x13680)
+:assumption (or (not x6825) (not x7503))
+:assumption (or x609 x28129 (not x13076) (not x4722) x22453 x11504)
+:assumption (or (not x21118) x3395)
+:assumption (or (not x24428) (not x5627))
+:assumption (or x17222 x16064)
+:assumption (or (not x677) x13905)
+:assumption (or (not x24129) x9206)
+:assumption (or x25659 (not x3369))
+:assumption (or (not x20702) x17168)
+:assumption (or (not x26049) (not x21220))
+:assumption (or x6444 x23590)
+:assumption (or x27422 x24609)
+:assumption (or (not x27852) x20699)
+:assumption (or (not x27012) x4171)
+:assumption (or (not x685) (not x19456))
+:assumption (or (not x21930) x30868 (not x16721))
+:assumption (or x30965 x24241)
+:assumption (or (not x4349) x19897)
+:assumption (or x432 (not x14778) x23244)
+:assumption (or (not x19428) x10037)
+:assumption (or x25214 (not x13152))
+:assumption (or x26444 x15684)
+:assumption (or (not x30261) (not x28647) (not x4539))
+:assumption (or x9523 x15917)
+:assumption (or x5249 x8002 x29432 x23244 x29489 x13956)
+:assumption (or (not x23321) (not x22571))
+:assumption (or (not x17545) (not x23244) x17453 x9434 (not x4826) x14240)
+:assumption (or (not x11754) (not x10260))
+:assumption (or (not x2146) x24323)
+:assumption (or x22925 (not x15845) x9237)
+:assumption (or x3224 (not x27572))
+:assumption (or x2538 (not x10953))
+:assumption (or x8002 x31824 (not x20381) (not x2776) (not x3004) (not x5985))
+:assumption (or (not x4472) x302)
+:assumption (or x18859 x22945)
+:assumption (or x11481 x762)
+:assumption (or x31538 (not x13251))
+:assumption (or x15817 x9162)
+:assumption (or x18999 x21298)
+:assumption (or (not x19307) (not x13376))
+:assumption (or x21626 x12076)
+:assumption (or x4537 (not x10466))
+:assumption (or (not x17648) x29951)
+:assumption (or x27100 x8648 x23594 x8079 x9008 (not x31033))
+:assumption (or (not x12709) (not x26210))
+:assumption (or (not x8002) x16501)
+:assumption (or x24458 x30914)
+:assumption (or (not x8543) x10874 (not x3860) x6307)
+:assumption (or x29682 (not x23434))
+:assumption (or (not x24000) x27056 x21298 (not x13146) x31220 x20377 x7207)
+:assumption (or x31731 (not x28579))
+:assumption (or x14787 (not x480))
+:assumption (or (not x5916) x17100 (not x25183) x29441 x1668 x13818 (not x25281) x2792 (not x28677))
+:assumption (or x8743 x25084)
+:assumption (or (not x5528) (not x5281) (not x25894) (not x24637) x2244 x8982)
+:assumption (or x29527 x11394)
+:assumption (or x886 x1965)
+:assumption (or x18355 (not x17453))
+:assumption (or (not x4375) x12330)
+:assumption (or x19976 (not x921))
+:assumption (or (not x12939) x10375)
+:assumption (or x1201 x14602)
+:assumption (or x31639 x4138 (not x67) (not x21604) (not x14955) (not x7047))
+:assumption (or (not x24655) x16025 x21560)
+:assumption (or x2238 x18100)
+:assumption (or (not x14631) x26375)
+:assumption (or (not x1374) x8002)
+:assumption (or x4452 x15923)
+:assumption (or (not x21593) (not x29297))
+:assumption (or x29139 x10269)
+:assumption (or (not x29945) x10107)
+:assumption (or (not x602) (not x24489))
+:assumption (or x11471 x12093)
+:assumption (or x14839 (not x5406) x30571)
+:assumption (or (not x7519) x25661)
+:assumption (or x8911 (not x28275))
+:assumption (or x7692 x11852)
+:assumption (or x25629 (not x5390))
+:assumption (or (not x23399) x23480)
+:assumption (or (not x30694) x5784)
+:assumption (or x3708 x5690 x28652)
+:assumption (or x28277 x22098)
+:assumption (or (not x21529) (not x14513))
+:assumption (or (not x31681) x9398 x15066)
+:assumption (or (not x2792) (not x29441))
+:assumption (or x18751 (not x27388) (not x8002) x11489)
+:assumption (or x31554 (not x21))
+:assumption (or x5865 (not x295))
+:assumption (or (not x15376) (not x30201) (not x21815))
+:assumption (or x15394 x21931)
+:assumption (or (not x1994) (not x13996))
+:assumption (or (not x21797) (not x21777))
+:assumption (or (not x24547) (not x10158) x16867 (not x1551) x13421)
+:assumption (or (not x1565) (not x16415))
+:assumption (or (not x25868) x3208)
+:assumption (or (not x22295) (not x6203))
+:assumption (or x1400 x29107)
+:assumption (or x19908 (not x21889) x6419 x15701 (not x18829))
+:assumption (or x24610 (not x21211))
+:assumption (or x7011 x31881)
+:assumption (or x15027 (not x15905))
+:assumption (or (not x23633) x24539)
+:assumption (or (not x30100) (not x20017) x13663)
+:assumption (or (not x31083) (not x13211))
+:assumption (or x21298 x1373)
+:assumption (or (not x13985) (not x20934))
+:assumption (or x4716 x2841 (not x7468) x23439 (not x26863) x25965)
+:assumption (or (not x5028) (not x29993) (not x15254))
+:assumption (or x3705 (not x27933))
+:assumption (or (not x17075) x293 x21399 x27903)
+:assumption (or (not x3407) (not x14936))
+:assumption (or x10455 (not x5717))
+:assumption (or (not x17534) x22762)
+:assumption (or (not x15650) (not x14819))
+:assumption (or x16151 x22152)
+:assumption (or x23431 x12546)
+:assumption (or (not x24240) (not x10285) (not x5556) x17296 (not x7429) x26987 x8432)
+:assumption (or (not x3395) x2490)
+:assumption (or (not x9460) x5928)
+:assumption (or (not x27999) x29548 (not x762))
+:assumption (or x2181 (not x24101))
+:assumption (or (not x18386) (not x19689))
+:assumption (or (not x2126) (not x12326))
+:assumption (or (not x22271) (not x26532))
+:assumption (or x25344 (not x14719))
+:assumption (or x21999 (not x6183))
+:assumption (or x20937 (not x2461))
+:assumption (or (not x17157) x14762 x8143 (not x3718) x29620)
+:assumption (or x20157 (not x15007))
+:assumption (or x5283 x9874)
+:assumption (or (not x14718) (not x13919) x16992 x8289 (not x17849))
+:assumption (or (not x23783) (not x8259))
+:assumption (or (not x10330) x4026)
+:assumption (or (not x23244) (not x27776))
+:assumption (or x22946 (not x14750))
+:assumption (or x13255 (not x19294))
+:assumption (or x27866 (not x22480))
+:assumption (or x15778 (not x21107))
+:assumption (or x23561 (not x15422))
+:assumption (or (not x14444) x18749)
+:assumption (or (not x9665) x14234)
+:assumption (or (not x25366) x19673)
+:assumption (or x21947 x4055)
+:assumption (or (not x267) (not x21460))
+:assumption (or x11475 x25281)
+:assumption (or (not x9298) (not x14158))
+:assumption (or x29959 x23290)
+:assumption (or (not x7200) x29167)
+:assumption (or x9155 x667 x14928 (not x27072))
+:assumption (or (not x11381) (not x24875))
+:assumption (or x30816 (not x24046) (not x22277) (not x10323) (not x16989))
+:assumption (or x18859 x4166 (not x10564))
+:assumption (or (not x21573) x22205)
+:assumption (or (not x7739) x17359 x26099)
+:assumption (or (not x1087) (not x12572))
+:assumption (or x974 (not x11078) (not x18930) (not x15538))
+:assumption (or x14752 x1304)
+:assumption (or (not x30138) x24404)
+:assumption (or (not x23579) x24222)
+:assumption (or (not x1393) x10143)
+:assumption (or x8538 (not x1993))
+:assumption (or (not x10473) (not x1775))
+:assumption (or x26690 (not x31588))
+:assumption (or (not x9783) (not x21643))
+:assumption (or x16389 (not x26400))
+:assumption (or x22264 x25485)
+:assumption (or (not x2383) (not x2277) (not x9722) (not x26353) x3724 x5329 x9173 (not x3543) x30778)
+:assumption (or x22963 (not x9117))
+:assumption (or (not x5259) (not x21465) x5703 (not x26918))
+:assumption (or (not x30142) x31217)
+:assumption (or x25622 (not x11301))
+:assumption (or (not x25490) (not x15333) x5651 x11039)
+:assumption (or x15831 x10547)
+:assumption (or x4268 x21489)
+:assumption (or x5748 (not x30721))
+:assumption (or (not x15434) x11624)
+:assumption (or x14045 x2334)
+:assumption (or (not x6882) (not x10654) x4623 x20291)
+:assumption (or x9674 x6754)
+:assumption (or (not x16741) (not x14462))
+:assumption (or (not x22360) x5798)
+:assumption (or (not x13682) x17927)
+:assumption (or (not x642) (not x7303))
+:assumption (or (not x31047) x17312)
+:assumption (or (not x25113) (not x7158))
+:assumption (or (not x6714) (not x30800))
+:assumption (or x27818 x13369 x14839)
+:assumption (or (not x5528) (not x26647) (not x9008) (not x1042) (not x21156))
+:assumption (or x8994 x9869)
+:assumption (or x7551 x24088)
+:assumption (or (not x22293) x22604 (not x8745))
+:assumption (or (not x18952) x3583 x17935 (not x26454) (not x16117) (not x30250))
+:assumption (or (not x27255) x13362)
+:assumption (or (not x499) (not x1799) (not x13956))
+:assumption (or (not x29567) x19900)
+:assumption (or (not x21139) x10124 (not x27517) x10215 (not x3838) (not x223) x22840 (not x14505) x24873)
+:assumption (or (not x6351) (not x23502) (not x953))
+:assumption (or x14603 x13074)
+:assumption (or (not x27216) (not x30718))
+:assumption (or x12706 (not x23244))
+:assumption (or x18475 (not x2254))
+:assumption (or (not x19885) x4284)
+:assumption (or (not x24103) (not x24340))
+:assumption (or (not x10751) (not x31558))
+:assumption (or (not x23244) (not x4001))
+:assumption (or (not x5363) x3206)
+:assumption (or (not x30623) x21653)
+:assumption (or x22893 x4723)
+:assumption (or x30926 (not x31779))
+:assumption (or (not x12561) (not x19277))
+:assumption (or x21684 x19998)
+:assumption (or (not x9860) x2451)
+:assumption (or x4071 x18042)
+:assumption (or x11806 (not x25542))
+:assumption (or x8335 (not x30241) x12474)
+:assumption (or x24296 (not x18222))
+:assumption (or (not x22266) (not x25826))
+:assumption (or (not x19992) x22945)
+:assumption (or x10408 (not x18412))
+:assumption (or (not x30159) (not x26284))
+:assumption (or (not x6119) (not x28687))
+:assumption (or (not x23953) (not x7538))
+:assumption (or x20955 (not x19826))
+:assumption (or x20657 (not x22433))
+:assumption (or x12416 (not x25284))
+:assumption (or (not x16333) x2475)
+:assumption (or x10845 (not x274))
+:assumption (or x11597 x12781 (not x27644) x21690 x16428 (not x3827) x11688)
+:assumption (or x1936 x11818)
+:assumption (or (not x7477) (not x28708))
+:assumption (or (not x24958) x15061)
+:assumption (or (not x19525) x31865)
+:assumption (or x21298 x12947)
+:assumption (or (not x9008) x4536)
+:assumption (or (not x26707) (not x6879))
+:assumption (or (not x6750) x3835 (not x16615) x22236)
+:assumption (or (not x9068) x21834)
+:assumption (or (not x1994) (not x2500))
+:assumption (or x13960 (not x16463))
+:assumption (or x2405 x24531)
+:assumption (or x15195 x4377 (not x830) (not x22997))
+:assumption (or (not x29573) (not x3336))
+:assumption (or x26717 x6721)
+:assumption (or x10460 (not x25659) (not x5080))
+:assumption (or (not x11349) x11984)
+:assumption (or x8086 (not x28805))
+:assumption (or x31564 x23904)
+:assumption (or (not x20154) x14068)
+:assumption (or x1711 x17075)
+:assumption (or (not x22184) x15979 (not x28375))
+:assumption (or x22025 (not x8532) x15800 (not x26831))
+:assumption (or (not x20296) x29365)
+:assumption (or (not x20113) (not x1164))
+:assumption (or x8372 (not x23164))
+:assumption (or x12310 (not x20141))
+:assumption (or x30251 x21815)
+:assumption (or x7400 x6806 x22758 x26789)
+:assumption (or x10932 (not x23374))
+:assumption (or (not x22154) x22014)
+:assumption (or (not x5365) (not x12351))
+:assumption (or x5519 x12296)
+:assumption (or (not x24552) (not x10850))
+:assumption (or x17280 (not x5292))
+:assumption (or (not x12337) x6340 x28983)
+:assumption (or x271 x10124)
+:assumption (or (not x18754) x7789)
+:assumption (or (not x16736) (not x30631))
+:assumption (or (not x23459) x9825)
+:assumption (or x29228 x17691)
+:assumption (or (not x6363) x3812)
+:assumption (or x1041 (not x778))
+:assumption (or (not x18813) x8218)
+:assumption (or (not x27336) x3161 x8002 x23244)
+:assumption (or (not x384) x23441)
+:assumption (or (not x29024) (not x11740) x9839 x18553)
+:assumption (or x21815 x8149)
+:assumption (or x14177 (not x22236))
+:assumption (or (not x19343) x9782)
+:assumption (or (not x5221) x580 (not x27537))
+:assumption (or x26189 x12583)
+:assumption (or x10380 (not x27503))
+:assumption (or x23486 x16409)
+:assumption (or x23061 x28306)
+:assumption (or x26979 (not x4833))
+:assumption (or x30495 x25876)
+:assumption (or x21298 (not x14036))
+:assumption (or x14455 (not x9528))
+:assumption (or (not x13356) x1347)
+:assumption (or x23094 (not x643))
+:assumption (or (not x23244) x23527)
+:assumption (or (not x24516) (not x9182))
+:assumption (or (not x8880) (not x1775))
+:assumption (or x10780 (not x12418))
+:assumption (or (not x3080) x3844 (not x7074) x19715 (not x9726))
+:assumption (or (not x1552) (not x1239))
+:assumption (or (not x30935) (not x19709))
+:assumption (or x18254 x22392)
+:assumption (or x8364 x23721)
+:assumption (or x17228 (not x762))
+:assumption (or (not x3451) (not x6525))
+:assumption (or (not x27007) (not x27169))
+:assumption (or (not x16300) x8002 x23244 (not x29489) x7909)
+:assumption (or x23980 x18096 (not x5489))
+:assumption (or (not x3954) x20662)
+:assumption (or x29482 x3297 (not x5367) (not x17535))
+:assumption (or (not x19180) (not x29165))
+:assumption (or (not x14838) (not x5707))
+:assumption (or (not x9453) x13809 (not x17509) x16863 (not x20472) (not x8538))
+:assumption (or x2439 x22081 x13956 (not x18959) x9391 x6030)
+:assumption (or (not x8701) x6273)
+:assumption (or x21265 (not x5345))
+:assumption (or x19096 x12171)
+:assumption (or x10073 x30699)
+:assumption (or x14459 x23003)
+:assumption (or x5234 x8961)
+:assumption (or x9000 (not x14925))
+:assumption (or x16534 x24374)
+:assumption (or (not x26308) (not x10284))
+:assumption (or (not x3271) x28696)
+:assumption (or x11183 x8120 x20961 x15665)
+:assumption (or (not x14689) (not x23315))
+:assumption (or x6243 (not x6179))
+:assumption (or (not x9525) x10646)
+:assumption (or x15361 (not x13120))
+:assumption (or x23567 x14481)
+:assumption (or (not x25152) (not x1138))
+:assumption (or x26810 x14858)
+:assumption (or x7251 (not x2490))
+:assumption (or x6149 x3273)
+:assumption (or (not x14086) (not x6073))
+:assumption (or (not x19987) (not x28984))
+:assumption (or x22159 (not x31005))
+:assumption (or x24485 (not x9569))
+:assumption (or (not x16003) (not x7023) x8675)
+:assumption (or x3385 (not x16835))
+:assumption (or (not x3045) (not x15330))
+:assumption (or x1504 (not x17359))
+:assumption (or x26031 x26643)
+:assumption (or (not x12453) (not x26970))
+:assumption (or x304 (not x912) x5546 x26027 x292)
+:assumption (or (not x26118) (not x21653) x1566)
+:assumption (or x371 (not x13092) x6351)
+:assumption (or x11540 (not x29004))
+:assumption (or x28591 x11857)
+:assumption (or (not x17504) (not x12274))
+:assumption (or (not x2095) (not x10125))
+:assumption (or x30321 (not x14749))
+:assumption (or (not x16910) x2361 (not x23545) x6243)
+:assumption (or (not x15015) (not x13557))
+:assumption (or x27816 (not x29390))
+:assumption (or (not x14954) x26071)
+:assumption (or x20595 x7873)
+:assumption (or (not x23910) x26028)
+:assumption (or x22780 x12855)
+:assumption (or (not x27045) (not x27329))
+:assumption (or (not x19553) x16436)
+:assumption (or x20696 (not x13092))
+:assumption (or (not x21653) (not x3323))
+:assumption (or x26564 x14448)
+:assumption (or (not x21576) (not x3236))
+:assumption (or (not x603) (not x31633))
+:assumption (or x16400 x25584)
+:assumption (or (not x485) x14972)
+:assumption (or (not x7235) x16416)
+:assumption (or (not x16184) (not x30041))
+:assumption (or (not x23520) (not x897))
+:assumption (or (not x29959) (not x11398))
+:assumption (or (not x24033) (not x156))
+:assumption (or x20811 (not x29442))
+:assumption (or x10943 x27998 x21713)
+:assumption (or (not x22349) x8542)
+:assumption (or x8318 x30551)
+:assumption (or (not x26047) (not x8465))
+:assumption (or x15624 (not x11020))
+:assumption (or (not x3997) (not x30852) x3597 (not x21764) x10064)
+:assumption (or (not x9836) (not x11736))
+:assumption (or x21235 (not x801))
+:assumption (or (not x13891) (not x19864))
+:assumption (or (not x26766) (not x28833))
+:assumption (or x24998 x22865)
+:assumption (or x4933 (not x3589))
+:assumption (or x446 (not x22752))
+:assumption (or (not x27634) x29)
+:assumption (or (not x9980) x17209)
+:assumption (or (not x24823) (not x24722))
+:assumption (or (not x15799) x11254)
+:assumption (or (not x9314) x9005)
+:assumption (or x4256 (not x27050))
+:assumption (or x16329 (not x8408))
+:assumption (or (not x13807) (not x6074))
+:assumption (or (not x9593) (not x16510))
+:assumption (or (not x19156) x20797)
+:assumption (or (not x21690) x19075)
+:assumption (or (not x23244) x22201 (not x20402))
+:assumption (or x1121 (not x4683))
+:assumption (or x13163 x24652)
+:assumption (or (not x16907) (not x19029))
+:assumption (or x18008 (not x25919))
+:assumption (or x20606 x18903)
+:assumption (or x21638 (not x29764))
+:assumption (or (not x19450) x9956)
+:assumption (or x8944 (not x6116))
+:assumption (or x9535 x13895 x18358 (not x2943))
+:assumption (or x11269 (not x8002) (not x26359))
+:assumption (or x11770 x10506)
+:assumption (or x5506 x26897 (not x10909) x1102)
+:assumption (or x30013 x4098)
+:assumption (or x14822 (not x26703))
+:assumption (or (not x16923) x694)
+:assumption (or (not x1381) (not x7094))
+:assumption (or (not x19883) (not x31528))
+:assumption (or (not x8355) x9573)
+:assumption (or x29384 x25296)
+:assumption (or (not x953) x27923)
+:assumption (or x25035 (not x14251))
+:assumption (or (not x27242) (not x31078))
+:assumption (or x22525 (not x22360))
+:assumption (or x476 (not x9919))
+:assumption (or x480 x2728)
+:assumption (or x22876 (not x16626))
+:assumption (or x13358 x22182)
+:assumption (or x2834 x10697)
+:assumption (or (not x4979) (not x29044))
+:assumption (or x16622 (not x28242))
+:assumption (or (not x17641) x29313)
+:assumption (or (not x26897) (not x8362))
+:assumption (or x28051 x19747)
+:assumption (or x16607 (not x10794))
+:assumption (or (not x25431) (not x27642))
+:assumption (or (not x10440) (not x20734))
+:assumption (or x1692 x1393 x1709 (not x12887) x5523 (not x28610) (not x20023) (not x16004))
+:assumption (or x18448 x17430)
+:assumption (or x15192 x7284)
+:assumption (or x8961 x28640)
+:assumption (or x23456 (not x9972))
+:assumption (or (not x10974) (not x31572))
+:assumption (or x10557 x15917)
+:assumption (or x8657 (not x13850))
+:assumption (or x21374 x23082)
+:assumption (or (not x18519) x18937 (not x28713))
+:assumption (or (not x21600) x26021)
+:assumption (or x13112 x28740 x25711 x3264)
+:assumption (or x26903 x573)
+:assumption (or x3646 (not x25135) x700 (not x24739) x25287 x6990)
+:assumption (or (not x21393) x16527)
+:assumption (or x29932 (not x1423))
+:assumption (or x18357 (not x13075))
+:assumption (or (not x13958) (not x18566))
+:assumption (or x18007 x4545)
+:assumption (or (not x10428) (not x19733))
+:assumption (or (not x7409) x18237)
+:assumption (or x26225 x7967 x28973 (not x288))
+:assumption (or (not x23574) (not x13956))
+:assumption (or (not x19598) (not x11878) (not x9008))
+:assumption (or (not x8487) (not x1072))
+:assumption (or (not x13018) (not x17056))
+:assumption (or (not x31101) x25849)
+:assumption (or (not x19676) x21884)
+:assumption (or (not x26398) x27233 (not x21633) (not x15016))
+:assumption (or x24667 x6164)
+:assumption (or (not x13956) x12976)
+:assumption (or x8002 (not x25549) x16667)
+:assumption (or x5921 x30701)
+:assumption (or x7611 (not x29312))
+:assumption (or x28076 x18859 (not x7886) x9497 (not x30570) x1499 x23760 x24916)
+:assumption (or x30208 x16701)
+:assumption (or x6310 x1279)
+:assumption (or x26432 (not x12845))
+:assumption (or x16353 x2563)
+:assumption (or (not x10768) x23473)
+:assumption (or (not x15932) x27621 x11074 (not x5185))
+:assumption (or x20662 x10614)
+:assumption (or (not x11405) (not x30657))
+:assumption (or (not x20646) x21805)
+:assumption (or x2855 (not x23864))
+:assumption (or x6278 x30749 x5528)
+:assumption (or x5603 x8948)
+:assumption (or x22384 (not x23244))
+:assumption (or (not x16873) (not x25994) (not x4574) x25862 x4236 (not x8801) x21984)
+:assumption (or (not x23985) (not x22769))
+:assumption (or x18727 (not x5181))
+:assumption (or (not x29106) (not x17872))
+:assumption (or x22775 x9549)
+:assumption (or x17350 (not x12410))
+:assumption (or x6455 x21298 x13896 x1542)
+:assumption (or x4495 x5326 x21815)
+:assumption (or x24322 (not x12389))
+:assumption (or x3797 x4662)
+:assumption (or x12878 x27736)
+:assumption (or x8833 (not x6549))
+:assumption (or (not x201) (not x13738))
+:assumption (or x30985 (not x26778))
+:assumption (or (not x12888) x15997)
+:assumption (or x21637 x12793)
+:assumption (or (not x28468) x25103)
+:assumption (or (not x27233) (not x21633) (not x4300) (not x19811))
+:assumption (or (not x24936) (not x25457))
+:assumption (or (not x14957) x21574)
+:assumption (or x12405 x16213)
+:assumption (or x31289 (not x22529) x21881 x818 (not x29483) (not x19253))
+:assumption (or (not x21355) x30361)
+:assumption (or (not x28750) x28701 x18010 (not x9261) (not x7483))
+:assumption (or (not x17466) x20072 x12431 (not x31664) x1424)
+:assumption (or (not x2087) (not x2498))
+:assumption (or (not x15681) x22419)
+:assumption (or x8002 (not x29333) x23244 (not x16809) x13956 (not x2857))
+:assumption (or x20790 (not x6105))
+:assumption (or (not x660) x23489)
+:assumption (or (not x31157) (not x20529))
+:assumption (or x12951 (not x25395) (not x25327) (not x20511) (not x16976) (not x31351) (not x9273) x17290 x25993)
+:assumption (or x5782 (not x17042))
+:assumption (or (not x24837) (not x29397) x620)
+:assumption (or x12888 x26153)
+:assumption (or (not x21227) (not x6496))
+:assumption (or x15003 x12826)
+:assumption (or (not x19992) x14006 x20723)
+:assumption (or (not x4245) x10306)
+:assumption (or x19517 (not x26834))
+:assumption (or (not x3733) (not x29761) (not x11091) x1474 (not x13576) x6951 (not x10363))
+:assumption (or x24761 (not x13329))
+:assumption (or (not x21307) x3063)
+:assumption (or x21359 x25145)
+:assumption (or x15917 (not x26981) x11538 x14100)
+:assumption (or x7183 (not x20550))
+:assumption (or x2623 x25659 (not x22335))
+:assumption (or (not x17706) (not x2052))
+:assumption (or (not x3497) x18758)
+:assumption (or (not x14381) (not x26670) (not x964) (not x18814) (not x7286) x23806)
+:assumption (or x1655 x24144)
+:assumption (or x27920 x11244)
+:assumption (or x17922 x31564)
+:assumption (or x11183 x2469)
+:assumption (or x16512 x30289 (not x58) (not x754) x7829 x26698)
+:assumption (or x25151 x20386)
+:assumption (or (not x863) x13491 (not x18193) x12451 (not x3494))
+:assumption (or x3379 (not x9181))
+:assumption (or x7461 (not x2384))
+:assumption (or x1998 x28541)
+:assumption (or (not x23399) (not x19408))
+:assumption (or x16741 (not x30520))
+:assumption (or x6166 x1288)
+:assumption (or x1113 (not x27135))
+:assumption (or (not x3453) x14655)
+:assumption (or (not x29630) (not x26277))
+:assumption (or (not x19576) x22472)
+:assumption (or x23361 (not x20362))
+:assumption (or x25877 x29086)
+:assumption (or x16510 (not x22343) (not x1057) (not x21815) x14591 (not x3782) x6168)
+:assumption (or (not x29312) (not x9158) (not x21242) x24756)
+:assumption (or (not x27881) (not x21182))
+:assumption (or x23378 (not x29874) x27679 x3398 (not x30599) (not x9448) x2506)
+:assumption (or x3001 x20943)
+:assumption (or x26169 x25061)
+:assumption (or (not x14576) x25764)
+:assumption (or x6546 x28592)
+:assumption (or (not x21514) (not x22613))
+:assumption (or x23183 x25812 x25376 (not x28283))
+:assumption (or x11519 x24631)
+:assumption (or x26897 x10909 x25915)
+:assumption (or x28098 (not x24636) (not x27080) (not x20576))
+:assumption (or (not x1430) x26128)
+:assumption (or (not x18570) (not x6329) (not x11263) x11338 (not x16182) (not x21174))
+:assumption (or (not x3498) (not x28595))
+:assumption (or (not x14550) x5617)
+:assumption (or (not x9070) (not x23415))
+:assumption (or x10795 (not x27733) (not x17463) x31493 (not x8954) (not x15216) x22481 x15054)
+:assumption (or x13434 x23660)
+:assumption (or (not x1345) x9528 (not x14455))
+:assumption (or x31085 (not x26327))
+:assumption (or x23545 x21248 (not x6243))
+:assumption (or x17492 x21787)
+:assumption (or x21607 x4977)
+:assumption (or x8721 (not x16815))
+:assumption (or (not x6446) x23300 x519)
+:assumption (or (not x29170) x11455)
+:assumption (or (not x25394) (not x24954))
+:assumption (or x8437 (not x2807))
+:assumption (or x2082 (not x3349))
+:assumption (or (not x26284) x12989)
+:assumption (or (not x9736) x27537)
+:assumption (or x21738 (not x1091) (not x15406) (not x5486))
+:assumption (or (not x3415) (not x23685))
+:assumption (or (not x30139) x14484)
+:assumption (or x31767 x56 x13366 x6954 (not x16642) x13653 x6092 (not x4009) x26545)
+:assumption (or (not x14950) (not x10700))
+:assumption (or (not x17375) (not x21272))
+:assumption (or x6208 x16648)
+:assumption (or (not x21815) (not x8925) (not x4587) (not x1438) (not x6133) (not x16510) (not x30124))
+:assumption (or (not x29606) x5095 (not x8547))
+:assumption (or (not x16104) (not x18519))
+:assumption (or (not x25659) (not x29739) (not x22916))
+:assumption (or (not x3076) x31092)
+:assumption (or (not x23176) x13956)
+:assumption (or (not x24172) (not x30615))
+:assumption (or (not x23221) x26945)
+:assumption (or (not x16339) x25365)
+:assumption (or x29418 (not x22240))
+:assumption (or x9838 x10441)
+:assumption (or (not x29420) x7111)
+:assumption (or x13133 x20570)
+:assumption (or x24663 (not x13207))
+:assumption (or (not x13532) x10351 x25146 (not x3501))
+:assumption (or x26982 (not x20446))
+:assumption (or (not x7851) (not x12044))
+:assumption (or x9824 (not x30402))
+:assumption (or x13451 (not x8502) (not x21446) (not x24634))
+:assumption (or (not x5530) (not x14687) x28400)
+:assumption (or x15218 x29506)
+:assumption (or x7136 x13347)
+:assumption (or (not x2715) x22495)
+:assumption (or x22299 (not x26618))
+:assumption (or (not x6174) x13162)
+:assumption (or x10523 (not x10322))
+:assumption (or x31435 (not x22906) (not x20395) (not x23525) x27420 (not x28306) (not x16976))
+:assumption (or x23633 x3129)
+:assumption (or x4845 (not x20920) x26894 (not x30301) x18767 (not x20723))
+:assumption (or x10682 x21975)
+:assumption (or (not x19940) x13589)
+:assumption (or (not x25674) x2140)
+:assumption (or (not x573) (not x3782) x3506)
+:assumption (or (not x23244) x17639)
+:assumption (or x22568 (not x1860))
+:assumption (or x21887 x5528 (not x21531))
+:assumption (or x166 (not x8265))
+:assumption (or (not x21266) x17677)
+:assumption (or x5600 x8391)
+:assumption (or (not x6102) x18548)
+:assumption (or (not x24553) (not x17692))
+:assumption (or (not x26135) (not x16805))
+:assumption (or x23556 (not x28264))
+:assumption (or (not x25398) x22527)
+:assumption (or (not x3324) x9834)
+:assumption (or (not x19302) x80)
+:assumption (or x6978 x20046)
+:assumption (or x20656 (not x10874))
+:assumption (or x23815 (not x21653))
+:assumption (or (not x27012) (not x2593))
+:assumption (or x12176 (not x5264))
+:assumption (or x11757 (not x20737))
+:assumption (or x27059 x2592 x9553)
+:assumption (or x22963 (not x22855) x21408)
+:assumption (or x24756 x3251)
+:assumption (or x7727 (not x15752))
+:assumption (or (not x20929) (not x10580) x30971)
+:assumption (or (not x15984) x18594)
+:assumption (or x1976 x18892)
+:assumption (or x16030 (not x18859) x19118)
+:assumption (or x10379 (not x10226))
+:assumption (or (not x10621) x11587)
+:assumption (or (not x16751) (not x23652))
+:assumption (or x20653 x28973)
+:assumption (or x25911 x2868 x17271)
+:assumption (or (not x909) (not x28781))
+:assumption (or (not x8488) (not x30667))
+:assumption (or (not x18824) x17563 x14536 (not x11) (not x15599))
+:assumption (or x19257 (not x2326))
+:assumption (or (not x13851) (not x7050))
+:assumption (or x4754 x21757)
+:assumption (or (not x31244) (not x28351))
+:assumption (or (not x2384) x4878)
+:assumption (or (not x5012) x23386)
+:assumption (or (not x2661) x26269)
+:assumption (or (not x24294) x27065)
+:assumption (or x27196 (not x1224))
+:assumption (or x25955 (not x7711) (not x3176) (not x16342) x3671 x14814 x16252)
+:assumption (or x18797 x27290)
+:assumption (or (not x30461) x704)
+:assumption (or x1180 (not x7141) x1393)
+:assumption (or x20929 (not x6343))
+:assumption (or x94 (not x10167))
+:assumption (or (not x16648) (not x31595) (not x4266))
+:assumption (or (not x1757) (not x17237))
+:assumption (or (not x5216) x827)
+:assumption (or x21086 (not x14725))
+:assumption (or (not x4283) (not x12536) (not x18339) x27362 (not x27675))
+:assumption (or (not x29740) x16025 x653)
+:assumption (or (not x17721) x21501)
+:assumption (or (not x28446) x6423)
+:assumption (or (not x9008) (not x11456))
+:assumption (or (not x16830) x15521 (not x5521) (not x25764) (not x2141) (not x18346) (not x23077) x4937 x14576)
+:assumption (or x24606 (not x31605))
+:assumption (or x21228 x17534)
+:assumption (or x28161 (not x23893))
+:assumption (or x19145 x8313)
+:assumption (or (not x17315) (not x17611))
+:assumption (or x3979 x18130)
+:assumption (or (not x23420) (not x8688))
+:assumption (or x20491 x26975)
+:assumption (or (not x26362) (not x744))
+:assumption (or (not x21653) x24908)
+:assumption (or (not x17234) (not x14944))
+:assumption (or (not x19229) x2505)
+:assumption (or (not x20499) x29886)
+:assumption (or x714 x11857)
+:assumption (or x9561 x23927)
+:assumption (or x14463 x21814)
+:assumption (or x24853 x14347 x18333 (not x22143) (not x16329))
+:assumption (or (not x17302) (not x5914))
+:assumption (or x21461 (not x7083))
+:assumption (or (not x28189) x17997)
+:assumption (or (not x4001) (not x14106))
+:assumption (or x31443 (not x4280) x599 (not x14610) x9266)
+:assumption (or x1454 (not x21298) x28347)
+:assumption (or (not x20988) (not x4682))
+:assumption (or x29983 (not x14435))
+:assumption (or (not x31489) (not x16637))
+:assumption (or x20048 (not x25403))
+:assumption (or x9339 x54 x17075 x10128 x18424 (not x13704) x18565 x17322 x22847)
+:assumption (or (not x9533) x20402)
+:assumption (or x30859 (not x15749) x30484)
+:assumption (or x16426 x8452 (not x13956))
+:assumption (or x25597 (not x14479))
+:assumption (or (not x4226) (not x26838))
+:assumption (or (not x2026) (not x2281))
+:assumption (or (not x2504) x25286)
+:assumption (or (not x10909) (not x12431))
+:assumption (or (not x24780) (not x28973) (not x31038) (not x288))
+:assumption (or x13992 (not x21169))
+:assumption (or x24722 (not x20760))
+:assumption (or x26767 x6528 (not x22195))
+:assumption (or x15380 (not x17082))
+:assumption (or (not x20571) (not x15575) (not x1090))
+:assumption (or (not x1308) (not x21647))
+:assumption (or x12722 x9558)
+:assumption (or (not x19171) x26815)
+:assumption (or (not x2762) x9042)
+:assumption (or (not x15885) (not x25258))
+:assumption (or (not x3521) x8710)
+:assumption (or (not x21038) (not x11323))
+:assumption (or (not x5163) x13309)
+:assumption (or (not x10214) (not x22882))
+:assumption (or x16042 (not x18369))
+:assumption (or x2868 (not x14865))
+:assumption (or x10091 (not x16229))
+:assumption (or (not x7263) x16626 x27169 x10139 x29251 x893)
+:assumption (or x9483 x1709)
+:assumption (or x15481 x27476)
+:assumption (or x22844 (not x24713))
+:assumption (or (not x20291) x16995)
+:assumption (or x9445 (not x16799))
+:assumption (or (not x1648) x23659)
+:assumption (or x29148 (not x827))
+:assumption (or (not x26674) (not x22650))
+:assumption (or x22222 (not x25423))
+:assumption (or (not x24094) (not x919))
+:assumption (or (not x10499) x23244 (not x21136) x8002)
+:assumption (or (not x3435) x13253 (not x4058) x20669 (not x14455) (not x17798))
+:assumption (or x21653 (not x5945))
+:assumption (or (not x8973) (not x6021))
+:assumption (or (not x23119) (not x7642))
+:assumption (or x13353 x2977)
+:assumption (or x17694 x8961)
+:assumption (or x10350 (not x8002))
+:assumption (or x8424 (not x25796) x8961)
+:assumption (or (not x3969) x30812)
+:assumption (or (not x15920) x13188 x9431)
+:assumption (or x25053 (not x18455))
+:assumption (or (not x2279) x20589)
+:assumption (or x20428 x17841)
+:assumption (or x24468 (not x27658) x20087 (not x13705) x16593)
+:assumption (or x31249 (not x23701))
+:assumption (or x3513 x12588)
+:assumption (or (not x22593) x25518 x20574 x9918 x6590)
+:assumption (or x25602 x25956 (not x19529) x1439 x10653)
+:assumption (or x6981 x15366)
+:assumption (or x25405 (not x5697))
+:assumption (or (not x23179) (not x20847))
+:assumption (or (not x25638) (not x13423))
+:assumption (or (not x10638) x29246)
+:assumption (or x17043 x27901)
+:assumption (or x26313 (not x20064))
+:assumption (or x18883 (not x6985))
+:assumption (or x30123 (not x21014))
+:assumption (or x13174 (not x26762) (not x50))
+:assumption (or x24052 (not x16332) (not x20321) x22976 x10060)
+:assumption (or x19493 (not x21929) (not x20606))
+:assumption (or x24665 x20706)
+:assumption (or x26349 (not x7359))
+:assumption (or (not x29811) (not x2452))
+:assumption (or x5153 x16180)
+:assumption (or (not x13997) x13727)
+:assumption (or (not x24317) (not x31777) x6351)
+:assumption (or x23633 (not x6029))
+:assumption (or (not x29346) (not x26428))
+:assumption (or x18946 (not x4288))
+:assumption (or x24414 x6129)
+:assumption (or x16930 x20230)
+:assumption (or (not x18519) x6595)
+:assumption (or (not x7204) (not x15400))
+:assumption (or x7884 x16707)
+:assumption (or x6969 (not x592) x6237 (not x2379))
+:assumption (or (not x16163) (not x10221))
+:assumption (or (not x4823) x8893)
+:assumption (or x2128 (not x27564))
+:assumption (or (not x17605) x14312 x1701 x27370)
+:assumption (or x11520 (not x23947))
+:assumption (or (not x21102) x5551)
+:assumption (or x20939 (not x5028))
+:assumption (or (not x16910) x10407)
+:assumption (or x22978 (not x24009))
+:assumption (or x8190 (not x22238) (not x13622))
+:assumption (or x22902 (not x16648))
+:assumption (or (not x15114) (not x23302))
+:assumption (or x12993 x6989)
+:assumption (or x9437 x2682 x18239 x11582 (not x8872) (not x28367) (not x29472) (not x25590))
+:assumption (or (not x3971) (not x8025) (not x31767) x17338)
+:assumption (or (not x5285) (not x2590))
+:assumption (or (not x10553) (not x28637) (not x22654) (not x8414) x9008 x19082)
+:assumption (or x11499 (not x23442))
+:assumption (or (not x29431) x18928)
+:assumption (or x19240 (not x11886))
+:assumption (or (not x31736) x13965)
+:assumption (or x17541 (not x19895) (not x31565) x4976 x19758)
+:assumption (or x12251 (not x20867))
+:assumption (or (not x26451) (not x3994))
+:assumption (or (not x2506) x9448)
+:assumption (or (not x4227) (not x3451))
+:assumption (or (not x20538) x29047)
+:assumption (or x9217 x16067 x24249 x26126 x28890)
+:assumption (or (not x24463) (not x964))
+:assumption (or x27587 x9982)
+:assumption (or x17144 (not x20407))
+:assumption (or x16964 (not x4374))
+:assumption (or (not x17186) (not x15625) (not x28041) x1052 (not x7080) x26143 x23202 (not x31268))
+:assumption (or (not x9192) x30083)
+:assumption (or x10506 (not x3644))
+:assumption (or x6508 (not x15130) (not x827))
+:assumption (or (not x31322) (not x9008))
+:assumption (or (not x13563) x22004)
+:assumption (or x7601 (not x2558))
+:assumption (or (not x25366) (not x100) x20416 x16374)
+:assumption (or (not x12880) (not x10064) x12746 (not x15917))
+:assumption (or x12333 x4473)
+:assumption (or (not x27185) x25378)
+:assumption (or x16439 x19349)
+:assumption (or x10208 (not x31282))
+:assumption (or (not x8602) x23666 x7793)
+:assumption (or x5696 x27119 x16090 (not x4320) (not x25693))
+:assumption (or (not x29544) x30255)
+:assumption (or (not x5528) (not x9008) x13411 x30667 (not x19458))
+:assumption (or x31782 x25460)
+:assumption (or (not x12045) x12937 x29771 x20949)
+:assumption (or (not x11062) (not x20574))
+:assumption (or (not x29023) (not x9281))
+:assumption (or x11641 (not x31803))
+:assumption (or x20595 (not x13350))
+:assumption (or x15582 x21690)
+:assumption (or x19323 x15151 x16587 x12461)
+:assumption (or (not x20223) (not x9384))
+:assumption (or (not x29312) (not x4154))
+:assumption (or (not x16112) x19496)
+:assumption (or x4778 x18003)
+:assumption (or x31711 x14137)
+:assumption (or (not x8890) x10761)
+:assumption (or x29394 (not x15533))
+:assumption (or x6794 (not x24486))
+:assumption (or x31222 (not x14061))
+:assumption (or (not x10277) (not x27798))
+:assumption (or x20876 (not x4215))
+:assumption (or (not x3782) x6289 x22672 (not x29442))
+:assumption (or (not x5485) x13836)
+:assumption (or x29829 x21910)
+:assumption (or x22318 (not x4637))
+:assumption (or (not x25773) x11886)
+:assumption (or x12701 (not x18452))
+:assumption (or (not x14691) x13692 (not x18305) x29359 (not x7609))
+:assumption (or (not x31555) (not x27916))
+:assumption (or x14509 x20936)
+:assumption (or x17924 x7512)
+:assumption (or (not x7854) x23862 x28507)
+:assumption (or (not x12665) (not x6010))
+:assumption (or x20442 (not x3189) (not x6746) x27911)
+:assumption (or (not x22397) x24834)
+:assumption (or x13576 (not x6951) (not x28487) (not x12861))
+:assumption (or (not x13782) x22361)
+:assumption (or x14912 (not x256))
+:assumption (or x6154 x16498)
+:assumption (or (not x24081) x30779)
+:assumption (or x171 (not x25111))
+:assumption (or x16254 (not x25727) (not x8835) x22259 (not x10368))
+:assumption (or (not x12959) (not x25866))
+:assumption (or x15223 x21298)
+:assumption (or x12578 (not x12889))
+:assumption (or x7475 (not x30167))
+:assumption (or x14782 (not x23521))
+:assumption (or (not x23958) (not x19330))
+:assumption (or x20976 (not x25458))
+:assumption (or x15883 x20140)
+:assumption (or (not x15902) x964)
+:assumption (or x21737 x14716)
+:assumption (or (not x23157) (not x26778))
+:assumption (or x16043 x21912)
+:assumption (or x21815 x22640)
+:assumption (or (not x26629) (not x4978))
+:assumption (or (not x3065) (not x8809))
+:assumption (or x21367 x31860)
+:assumption (or (not x2281) (not x30053))
+:assumption (or x15456 x18044)
+:assumption (or (not x24470) (not x31177))
+:assumption (or (not x31578) x8709)
+:assumption (or (not x23120) (not x17452))
+:assumption (or (not x15181) x15924)
+:assumption (or (not x26581) (not x23275))
+:assumption (or x27385 (not x30819))
+:assumption (or x234 (not x27874))
+:assumption (or x25911 x7249)
+:assumption (or (not x19948) x9474 (not x1269) (not x15143) x3618 (not x20358))
+:assumption (or x19108 (not x7203) x25800 x29214 (not x6238) (not x16510))
+:assumption (or x19282 x3494)
+:assumption (or x2114 x8444)
+:assumption (or x10750 x20482)
+:assumption (or (not x19177) (not x23173))
+:assumption (or (not x27610) (not x15569))
+:assumption (or x3602 x6119 (not x6325) x20983 (not x15576) x28687 x205 (not x19730) (not x186))
+:assumption (or (not x21682) x6780)
+:assumption (or x25315 x25311)
+:assumption (or (not x30954) x28165 x24223 (not x19428))
+:assumption (or (not x2924) x18508)
+:assumption (or (not x16552) (not x873))
+:assumption (or x20936 x31581)
+:assumption (or (not x3725) x16025)
+:assumption (or x30252 x22887 x27008 (not x22427) (not x16721))
+:assumption (or (not x1393) x30536)
+:assumption (or x9008 x19783)
+:assumption (or (not x13956) x25799)
+:assumption (or x2660 (not x29544))
+:assumption (or (not x26625) (not x30158))
+:assumption (or (not x26409) (not x24006))
+:assumption (or (not x18814) (not x14927))
+:assumption (or (not x9260) x3857)
+:assumption (or x20376 x6389)
+:assumption (or (not x16439) (not x19349) x6297 (not x20872) (not x12060) x6871)
+:assumption (or (not x24478) (not x9008) x31405)
+:assumption (or x20220 x28109)
+:assumption (or (not x21185) x6614)
+:assumption (or (not x7097) (not x6377))
+:assumption (or (not x15508) x30239)
+:assumption (or (not x19676) x27851)
+:assumption (or (not x23806) x8706)
+:assumption (or x4349 (not x2698))
+:assumption (or (not x25307) (not x17454))
+:assumption (or (not x31295) (not x28859))
+:assumption (or x9830 (not x4262))
+:assumption (or (not x8170) x29361)
+:assumption (or (not x14730) (not x30079))
+:assumption (or (not x28166) (not x25634))
+:assumption (or (not x4809) x5514)
+:assumption (or (not x8507) x18106 (not x26305) (not x18617))
+:assumption (or x14837 (not x6307))
+:assumption (or (not x21724) (not x13834))
+:assumption (or (not x20890) (not x25690))
+:assumption (or (not x21298) (not x22998))
+:assumption (or x29796 (not x16013))
+:assumption (or x1070 x24996)
+:assumption (or (not x6648) (not x16510))
+:assumption (or x16003 x17839 (not x26278))
+:assumption (or x14794 x17215)
+:assumption (or x23507 x13669 x20192 x621 (not x14225) (not x14250) (not x9703))
+:assumption (or (not x9224) x9531)
+:assumption (or x24442 (not x13691) x19581 x8862 x15229 (not x11107) x14114 x13850)
+:assumption (or x18802 x8586)
+:assumption (or x15295 (not x20087))
+:assumption (or x3103 (not x2830) x26896 x28482 x12579)
+:assumption (or (not x22253) (not x252))
+:assumption (or (not x30559) x17145)
+:assumption (or (not x22737) x25840)
+:assumption (or (not x11302) x23878)
+:assumption (or (not x6780) x24563)
+:assumption (or (not x16783) (not x9132))
+:assumption (or x142 x21463)
+:assumption (or x23640 x2079)
+:assumption (or (not x21432) x1714)
+:assumption (or (not x12873) x5702 x17217 x17534)
+:assumption (or x21122 (not x14511))
+:assumption (or x30113 (not x922))
+:assumption (or (not x3757) x21454)
+:assumption (or (not x2389) x26161)
+:assumption (or x16910 (not x26962))
+:assumption (or x15611 x4218)
+:assumption (or (not x10991) (not x27645))
+:assumption (or x10807 (not x29952))
+:assumption (or (not x2923) (not x24433))
+:assumption (or (not x6828) x6533)
+:assumption (or (not x14129) (not x2739) (not x8229) x3836)
+:assumption (or (not x4162) x17681)
+:assumption (or (not x8475) x15959)
+:assumption (or x27472 (not x27726))
+:assumption (or x17635 (not x26109) (not x14694) x14944)
+:assumption (or x29676 (not x30756))
+:assumption (or (not x2170) (not x25566))
+:assumption (or x13576 x28297)
+:assumption (or (not x19979) (not x10176) (not x8137) (not x16789) (not x25286) x27602)
+:assumption (or (not x15917) x2269)
+:assumption (or (not x9025) (not x29312) (not x17137))
+:assumption (or x10497 x24064)
+:assumption (or x16183 (not x5990))
+:assumption (or x20965 x20060)
+:assumption (or (not x21667) (not x4985))
+:assumption (or (not x142) x31746)
+:assumption (or x17046 (not x2911))
+:assumption (or (not x9482) x7892)
+:assumption (or (not x4645) (not x31615))
+:assumption (or x4731 (not x30845))
+:assumption (or x22818 (not x20434))
+:assumption (or (not x2906) (not x16308))
+:assumption (or (not x25880) x30354)
+:assumption (or (not x18848) x24722 (not x25472))
+:assumption (or x19191 x17359)
+:assumption (or (not x26886) x22845)
+:assumption (or (not x29979) (not x31392))
+:assumption (or (not x22129) (not x26127))
+:assumption (or x16970 x25774)
+:assumption (or x5935 x2082)
+:assumption (or x6807 (not x10639))
+:assumption (or x30508 (not x30124) x2498 (not x16409))
+:assumption (or x21815 x18352)
+:assumption (or (not x17105) x22110)
+:assumption (or x28625 x29136)
+:assumption (or (not x19727) (not x4873) x16294 x26078 (not x12517) (not x12715) (not x23445) x21038 x11323 (not x30541))
+:assumption (or (not x8919) (not x29770))
+:assumption (or (not x11502) (not x6159))
+:assumption (or (not x25512) (not x27979))
+:assumption (or x10733 x24381)
+:assumption (or x15390 x28255)
+:assumption (or x6951 (not x7187))
+:assumption (or x24643 x16821)
+:assumption (or x29606 (not x7860))
+:assumption (or x5605 x8544)
+:assumption (or (not x11001) x10587)
+:assumption (or (not x16968) x3365)
+:assumption (or x16652 x21500)
+:assumption (or (not x15733) x1951)
+:assumption (or (not x17671) (not x28954))
+:assumption (or x18932 x18502 (not x17950) x30287)
+:assumption (or (not x24497) (not x3999))
+:assumption (or (not x9418) (not x6951))
+:assumption (or x13177 (not x16799))
+:assumption (or (not x5434) x8640)
+:assumption (or (not x1958) (not x9675))
+:assumption (or x13780 (not x26713))
+:assumption (or (not x4609) x28538)
+:assumption (or x9698 (not x25282))
+:assumption (or x27983 x20762)
+:assumption (or x30099 (not x31016))
+:assumption (or (not x27659) (not x23360))
+:assumption (or x28584 x20835)
+:assumption (or (not x9931) x11441)
+:assumption (or x19711 x2486)
+:assumption (or x19719 x7375)
+:assumption (or (not x28075) x28795)
+:assumption (or x1627 (not x27893))
+:assumption (or (not x25467) (not x27032))
+:assumption (or (not x14571) (not x27537))
+:assumption (or (not x4301) x31705)
+:assumption (or x21246 x6055)
+:assumption (or (not x13325) x13837 x6151 (not x20718) (not x12146))
+:assumption (or x12361 (not x30315))
+:assumption (or (not x22520) x859)
+:assumption (or (not x9389) (not x4388))
+:assumption (or (not x21385) x13956 x23633)
+:assumption (or (not x4838) x19886)
+:assumption (or x26824 x27963)
+:assumption (or (not x2127) x30128)
+:assumption (or (not x29606) (not x16941))
+:assumption (or x21653 x11348)
+:assumption (or (not x20690) (not x8945))
+:assumption (or x964 (not x12551))
+:assumption (or (not x12669) (not x9526) (not x24957))
+:assumption (or (not x26653) (not x259))
+:assumption (or x29529 (not x17088))
+:assumption (or (not x18066) (not x19700))
+:assumption (or (not x24279) x10460)
+:assumption (or x25659 (not x15254) x28515)
+:assumption (or (not x918) x890)
+:assumption (or (not x2227) (not x1775))
+:assumption (or (not x29481) x20515)
+:assumption (or x6271 x9203 (not x376) x8733 x12864 (not x30656) x21949 (not x31590))
+:assumption (or x9207 x26690)
+:assumption (or (not x21228) x25659 (not x17534) (not x19501) x20550)
+:assumption (or (not x6528) x19119)
+:assumption (or x8835 (not x836))
+:assumption (or (not x20213) x25659)
+:assumption (or x12765 (not x29764))
+:assumption (or (not x7119) (not x8654))
+:assumption (or x16240 (not x1579))
+:assumption (or x23389 (not x19002))
+:assumption (or (not x25588) x8919)
+:assumption (or x28243 x31514)
+:assumption (or x26156 (not x369))
+:assumption (or x31040 (not x26932))
+:assumption (or (not x4259) (not x16306))
+:assumption (or (not x9567) x15705)
+:assumption (or (not x19857) (not x12481))
+:assumption (or x13610 (not x25895))
+:assumption (or x1594 (not x23696))
+:assumption (or (not x6074) x13406)
+:assumption (or (not x1621) (not x4135))
+:assumption (or x3780 (not x14520))
+:assumption (or (not x15866) x23074 x27397)
+:assumption (or (not x3545) (not x29330))
+:assumption (or x31375 x25350)
+:assumption (or (not x23962) x14330)
+:assumption (or x24024 (not x25576))
+:assumption (or x24207 x4511)
+:assumption (or (not x18734) (not x11992))
+:assumption (or (not x26407) (not x131))
+:assumption (or x19847 x29139)
+:assumption (or (not x26106) x27169 x15146 (not x22696))
+:assumption (or x15391 (not x16863))
+:assumption (or (not x11125) x17092)
+:assumption (or x8647 (not x24785) (not x10051) x29932 x25069 (not x9941))
+:assumption (or x28359 x11794)
+:assumption (or x26954 x31629)
+:assumption (or x12706 (not x8002))
+:assumption (or x3152 x2909)
+:assumption (or x15879 x21906)
+:assumption (or x23406 (not x11014))
+:assumption (or (not x687) (not x11034))
+:assumption (or (not x8277) (not x28641))
+:assumption (or (not x6710) x14151)
+:assumption (or x17571 x27782)
+:assumption (or (not x4615) (not x21690))
+:assumption (or x3163 (not x8693))
+:assumption (or (not x23713) x2186)
+:assumption (or (not x2673) x21479)
+:assumption (or x18623 (not x29153) (not x27499) (not x23955))
+:assumption (or x18262 x14895)
+:assumption (or x9919 (not x31840))
+:assumption (or x16662 (not x20897))
+:assumption (or (not x27312) x9831 (not x28562))
+:assumption (or (not x28733) x23244)
+:assumption (or x24263 (not x21432) (not x8035) (not x19236))
+:assumption (or x6149 (not x26590) (not x27098) (not x27226))
+:assumption (or (not x12523) (not x29862))
+:assumption (or (not x31207) x9685)
+:assumption (or (not x18431) (not x17490))
+:assumption (or (not x27855) (not x7369))
+:assumption (or x28483 (not x12102))
+:assumption (or x17006 (not x24983))
+:assumption (or x9724 x21801)
+:assumption (or x11055 (not x25032))
+:assumption (or x4912 (not x13802))
+:assumption (or (not x31174) (not x19103))
+:assumption (or (not x2653) (not x3001))
+:assumption (or x26605 x19778)
+:assumption (or x15849 (not x22726))
+:assumption (or x8661 (not x12468))
+:assumption (or x26524 x27924)
+:assumption (or (not x24481) x12278)
+:assumption (or x2866 x10839)
+:assumption (or x9512 x3126 (not x23022))
+:assumption (or x18651 x25940)
+:assumption (or (not x17548) x12058)
+:assumption (or (not x21187) (not x14027))
+:assumption (or x25471 (not x8166) (not x10109))
+:assumption (or (not x318) (not x24025))
+:assumption (or x23708 (not x9492))
+:assumption (or (not x30380) x22243)
+:assumption (or x16025 (not x4290))
+:assumption (or (not x11730) x8002 (not x593))
+:assumption (or x16279 (not x28563))
+:assumption (or (not x30954) (not x20867))
+:assumption (or x22852 x30338)
+:assumption (or x5645 x20566)
+:assumption (or (not x22288) (not x16950) x3530 x10851 x12072 x3918)
+:assumption (or (not x12324) x25169)
+:assumption (or (not x27736) x26920)
+:assumption (or x7110 (not x22633))
+:assumption (or x8133 (not x5845))
+:assumption (or (not x17059) (not x3671) (not x31800))
+:assumption (or x8658 (not x23155) x31374)
+:assumption (or (not x25730) x21815)
+:assumption (or (not x29494) (not x3235))
+:assumption (or x30149 (not x18232))
+:assumption (or (not x28175) x15611)
+:assumption (or (not x7991) x4719)
+:assumption (or x21815 (not x12867))
+:assumption (or x10510 x23683 (not x15861))
+:assumption (or (not x19088) x20825)
+:assumption (or (not x8002) x20364 x23959)
+:assumption (or (not x28862) (not x14434))
+:assumption (or (not x5483) (not x27203))
+:assumption (or (not x19396) (not x10388))
+:assumption (or x8080 (not x23703))
+:assumption (or (not x8920) (not x24756))
+:assumption (or x29489 x30237)
+:assumption (or (not x17462) x16325)
+:assumption (or (not x22855) x26555 x8208 (not x480))
+:assumption (or (not x26548) (not x13622) x8591)
+:assumption (or x20250 (not x25606) x26895)
+:assumption (or x24662 x1940 x31916 (not x7611))
+:assumption (or x31047 (not x17312))
+:assumption (or x524 (not x6969))
+:assumption (or x27319 x11515)
+:assumption (or (not x18519) x14577)
+:assumption (or (not x1349) (not x26811))
+:assumption (or (not x8602) x19213)
+:assumption (or (not x5450) x24047)
+:assumption (or (not x26897) (not x18653) x3415)
+:assumption (or (not x17626) (not x18003))
+:assumption (or (not x18246) x372)
+:assumption (or (not x12791) (not x9308))
+:assumption (or x25376 x8839)
+:assumption (or x7011 x11540 (not x30524) x20575 x22606 x21826 (not x200) (not x3782))
+:assumption (or x25295 x10707)
+:assumption (or (not x29069) (not x8639))
+:assumption (or x22220 x23639)
+:assumption (or (not x76) x17833)
+:assumption (or (not x14578) x3386)
+:assumption (or x28242 x26356)
+:assumption (or (not x22962) (not x9583))
+:assumption (or x3375 (not x14629))
+:assumption (or x8283 (not x1935))
+:assumption (or (not x30944) (not x3611))
+:assumption (or (not x28121) x2009)
+:assumption (or (not x918) (not x4101) x31829 x14814 x20576 (not x12292))
+:assumption (or x15024 x14452)
+:assumption (or (not x28997) x21765)
+:assumption (or x30958 (not x16181))
+:assumption (or x21560 x25591)
+:assumption (or (not x1222) (not x423))
+:assumption (or (not x20154) x6149)
+:assumption (or x1919 (not x12157))
+:assumption (or (not x5110) (not x31638))
+:assumption (or x28373 (not x25273))
+:assumption (or x19995 (not x3125))
+:assumption (or (not x12265) x12502)
+:assumption (or (not x9078) x28304)
+:assumption (or x7668 (not x27208))
+:assumption (or (not x21298) x25491 x20182 x22283)
+:assumption (or (not x31292) x17551 x7228 x30797 x28541)
+:assumption (or x18859 x31012)
+:assumption (or x12774 (not x30265))
+:assumption (or (not x14141) (not x23599))
+:assumption (or (not x20883) x3141)
+:assumption (or x27511 (not x14473))
+:assumption (or x13084 (not x4098))
+:assumption (or (not x14460) (not x13956) x12588 (not x22295))
+:assumption (or x21846 (not x23203) (not x18055) (not x2707) x5058 x5970)
+:assumption (or x15621 x4868)
+:assumption (or (not x7392) (not x31134) x29606 x12820)
+:assumption (or (not x4235) x4640)
+:assumption (or (not x29836) x2507)
+:assumption (or x1765 x30574)
+:assumption (or x18545 x25565)
+:assumption (or (not x11395) (not x3605))
+:assumption (or x2882 (not x15859))
+:assumption (or x9436 (not x26789))
+:assumption (or (not x10018) (not x19727))
+:assumption (or x17362 x20533)
+:assumption (or x16553 x11893)
+:assumption (or x25659 x2962)
+:assumption (or x21212 (not x11753))
+:assumption (or (not x24507) x24342)
+:assumption (or x3898 (not x10097))
+:assumption (or (not x16185) x1616)
+:assumption (or x10627 (not x21150) x26077 x25096 x23541 x22522 (not x12388))
+:assumption (or (not x30844) (not x9520))
+:assumption (or x8002 x23244 x14565 x21936)
+:assumption (or (not x19127) x22117)
+:assumption (or x28210 x5886 x17503)
+:assumption (or x10363 x31910)
+:assumption (or x12513 (not x8002))
+:assumption (or (not x14530) x25319)
+:assumption (or x14641 (not x17403))
+:assumption (or (not x10410) x6545)
+:assumption (or x16160 (not x30209))
+:assumption (or (not x18259) x16286)
+:assumption (or x24429 x21103)
+:assumption (or x8805 x13675)
+:assumption (or (not x20486) x20870)
+:assumption (or x19602 x16925)
+:assumption (or (not x13044) x9466 (not x9008) (not x5528) (not x26578))
+:assumption (or (not x12668) (not x30034))
+:assumption (or x10613 x15230)
+:assumption (or (not x31704) x13656)
+:assumption (or x7994 (not x10909))
+:assumption (or (not x15405) x25699)
+:assumption (or (not x24607) (not x23885))
+:assumption (or x30140 x27922)
+:assumption (or (not x24239) x13956)
+:assumption (or x15543 x8002)
+:assumption (or x8461 (not x123))
+:assumption (or (not x28886) x9436)
+:assumption (or (not x21285) (not x5970))
+:assumption (or (not x5028) (not x24395))
+:assumption (or x6676 (not x65))
+:assumption (or x25150 x15609)
+:assumption (or x29081 x725)
+:assumption (or x15649 x989)
+:assumption (or x11528 (not x4401))
+:assumption (or x14916 (not x8224))
+:assumption (or x26590 (not x6149))
+:assumption (or (not x26897) (not x9599))
+:assumption (or (not x11975) x12478)
+:assumption (or (not x14898) (not x20162))
+:assumption (or (not x1063) (not x9048))
+:assumption (or (not x9029) x15554)
+:assumption (or (not x4940) (not x25659) x5729)
+:assumption (or x16745 (not x18828))
+:assumption (or x3737 (not x3186) (not x13532) (not x3501))
+:assumption (or x373 x5271)
+:assumption (or (not x30661) x4880)
+:assumption (or (not x30188) (not x15674))
+:assumption (or (not x29194) (not x6969))
+:assumption (or (not x8756) (not x2295))
+:assumption (or x13400 x10801)
+:assumption (or (not x7835) x10249 (not x7039) x6376)
+:assumption (or x30856 (not x28970))
+:assumption (or x28388 (not x21335))
+:assumption (or x9880 x23640)
+:assumption (or (not x29660) x25857)
+:assumption (or x23213 (not x12045))
+:assumption (or x13981 (not x7964) x18406 x28929)
+:assumption (or (not x16092) x18500)
+:assumption (or x30752 x20374)
+:assumption (or x15 (not x10679))
+:assumption (or x26381 x27566 (not x30301) (not x10906) x24676)
+:assumption (or (not x15319) (not x25967))
+:assumption (or (not x28655) (not x5028))
+:assumption (or (not x5194) (not x20482))
+:assumption (or (not x17592) x15250)
+:assumption (or x19238 (not x29606))
+:assumption (or (not x18569) x14003)
+:assumption (or x30113 (not x23819) (not x30432))
+:assumption (or x16155 x26595)
+:assumption (or x1311 (not x21949))
+:assumption (or (not x22052) (not x14985))
+:assumption (or x18681 (not x15121))
+:assumption (or (not x20160) (not x28868))
+:assumption (or (not x6940) x25728)
+:assumption (or (not x24359) x15174)
+:assumption (or (not x16835) x21146)
+:assumption (or x19354 x15966)
+:assumption (or (not x12242) (not x11521))
+:assumption (or x19394 (not x10723) x30612 x28883 x26288 (not x2695) (not x2099))
+:assumption (or x29300 (not x30978))
+:assumption (or x3036 x16997)
+:assumption (or x18080 x6365)
+:assumption (or x6920 x11354)
+:assumption (or (not x5165) x20767)
+:assumption (or (not x9421) x3001 (not x16914))
+:assumption (or x18928 x7702)
+:assumption (or x4632 (not x18048))
+:assumption (or (not x25184) x1296)
+:assumption (or x28803 x17298)
+:assumption (or (not x25163) x25941)
+:assumption (or x21146 x3371)
+:assumption (or (not x13902) x15198 (not x12523) x11768)
+:assumption (or x17899 x23002)
+:assumption (or x12852 (not x15524))
+:assumption (or x27758 (not x3417))
+:assumption (or x22100 x11745)
+:assumption (or (not x15906) (not x19463))
+:assumption (or x10074 (not x13092))
+:assumption (or (not x5528) (not x21802))
+:assumption (or x27673 x25053)
+:assumption (or (not x9329) x3371)
+:assumption (or (not x1464) (not x27234))
+:assumption (or (not x21461) x17055 x5025)
+:assumption (or (not x21295) (not x28258))
+:assumption (or (not x5528) x30677 x22829 x16849 (not x9008))
+:assumption (or (not x30751) (not x1982))
+:assumption (or (not x19690) (not x29179))
+:assumption (or (not x30781) x17016 (not x13956))
+:assumption (or x4451 (not x13233))
+:assumption (or (not x12171) (not x13576) (not x8083) x1996 x9531)
+:assumption (or (not x779) (not x20241))
+:assumption (or x16025 x16409 x30436)
+:assumption (or x4249 (not x24504) x25339)
+:assumption (or (not x10262) (not x21452) (not x24305) (not x12236) (not x27781))
+:assumption (or (not x2210) x16741)
+:assumption (or (not x29407) x19952)
+:assumption (or (not x11111) (not x5690))
+:assumption (or x6133 x8657)
+:assumption (or x11058 x23604)
+:assumption (or x18227 x10645)
+:assumption (or (not x12749) x17854)
+:assumption (or x23810 (not x3273) (not x31465) (not x25282) (not x6149))
+:assumption (or (not x17803) (not x30233))
+:assumption (or (not x23774) x11441)
+:assumption (or x25103 (not x2414))
+:assumption (or (not x17390) (not x22101))
+:assumption (or (not x10516) x20345)
+:assumption (or (not x19421) (not x28039))
+:assumption (or x19621 (not x2177) x18348 x504)
+:assumption (or (not x8092) (not x18541))
+:assumption (or x675 x17649)
+:assumption (or x27266 x30231)
+:assumption (or x15866 (not x24390))
+:assumption (or (not x25131) (not x2287))
+:assumption (or (not x22578) (not x10794))
+:assumption (or (not x14435) x2142)
+:assumption (or x25433 x25219)
+:assumption (or (not x20737) (not x13852))
+:assumption (or x21197 x10850 (not x30341))
+:assumption (or (not x4504) (not x19566))
+:assumption (or x22814 x8313)
+:assumption (or x4863 x28093)
+:assumption (or x11110 (not x5475))
+:assumption (or (not x8120) x11724)
+:assumption (or (not x31059) (not x18569))
+:assumption (or x13151 x7293)
+:assumption (or (not x20353) (not x22436))
+:assumption (or (not x25366) x2454)
+:assumption (or (not x7308) (not x26054) x27050)
+:assumption (or x24724 x7537 (not x15253))
+:assumption (or (not x22389) (not x14299))
+:assumption (or x13975 x18289 (not x4822) (not x20676))
+:assumption (or x18270 (not x26015))
+:assumption (or x19208 x2334)
+:assumption (or (not x20307) (not x30300))
+:assumption (or x8262 x5003)
+:assumption (or x19338 (not x3046))
+:assumption (or (not x5679) (not x2205))
+:assumption (or (not x15155) (not x1449))
+:assumption (or (not x19345) x10047)
+:assumption (or x11517 (not x10127))
+:assumption (or (not x18636) (not x16117) x10874)
+:assumption (or (not x17075) x31008)
+:assumption (or (not x3926) (not x4412))
+:assumption (or x29223 (not x15098))
+:assumption (or (not x18519) (not x19867))
+:assumption (or (not x20961) (not x20334) x25253)
+:assumption (or (not x5430) (not x2672))
+:assumption (or x1728 (not x2912) x4590 (not x22203))
+:assumption (or x11826 x3652)
+:assumption (or (not x4766) (not x28632) x21990 (not x11380) (not x745) x2431)
+:assumption (or x11290 (not x27466))
+:assumption (or x19711 (not x26439))
+:assumption (or x8602 x24569)
+:assumption (or x2640 x16170)
+:assumption (or (not x26899) (not x15610))
+:assumption (or x18363 (not x1719))
+:assumption (or x15795 x8833)
+:assumption (or x21416 (not x23205))
+:assumption (or x18392 (not x2384))
+:assumption (or (not x13385) x21815)
+:assumption (or (not x14763) (not x1757) (not x28249) x9790 (not x2729))
+:assumption (or x13884 (not x24148) (not x14832) (not x11977))
+:assumption (or (not x13460) (not x7863))
+:assumption (or (not x15873) (not x27233))
+:assumption (or x8588 x28922)
+:assumption (or x2847 x24870)
+:assumption (or x10420 x11543)
+:assumption (or (not x4696) (not x31927))
+:assumption (or (not x6289) x25304 x13407)
+:assumption (or x11401 (not x22547))
+:assumption (or (not x25174) x14504 (not x25659))
+:assumption (or (not x10833) x15016)
+:assumption (or (not x5680) (not x16865))
+:assumption (or x11084 x22391 x17225)
+:assumption (or (not x4348) x4230)
+:assumption (or (not x13875) x9804 x6255 x25298 x16711 (not x23836))
+:assumption (or x22878 x23455)
+:assumption (or (not x4252) (not x21904) (not x25694) (not x9947) (not x2984) x10064)
+:assumption (or (not x25659) (not x14714))
+:assumption (or x3455 x23561)
+:assumption (or (not x19595) x16105)
+:assumption (or (not x7697) x5211)
+:assumption (or x16967 (not x24534))
+:assumption (or x7914 (not x25065))
+:assumption (or (not x1945) x18859)
+:assumption (or (not x25903) (not x5188))
+:assumption (or (not x27589) x3252)
+:assumption (or (not x18035) x17498 x17869 x23010 x9008 x11917)
+:assumption (or (not x10914) (not x30643))
+:assumption (or (not x20276) (not x23676))
+:assumption (or x21357 x26087)
+:assumption (or (not x8802) (not x14453))
+:assumption (or x27444 (not x5025))
+:assumption (or (not x14170) (not x1854))
+:assumption (or (not x13690) x10534)
+:assumption (or (not x13881) (not x30476))
+:assumption (or (not x31051) x8731)
+:assumption (or (not x1422) x8915)
+:assumption (or (not x25334) (not x11586))
+:assumption (or (not x15260) (not x17658))
+:assumption (or (not x22081) x7307)
+:assumption (or (not x28192) (not x9269) x24466)
+:assumption (or x195 x3207)
+:assumption (or x16878 x15284)
+:assumption (or (not x28783) x29257)
+:assumption (or (not x4050) x3455 (not x15591) (not x20362))
+:assumption (or x13305 x7357)
+:assumption (or (not x23475) x3953)
+:assumption (or (not x8348) (not x8682))
+:assumption (or x10659 (not x1505))
+:assumption (or (not x24801) (not x5010) (not x24069) (not x2498) x4400 x19545)
+:assumption (or x28116 (not x8247))
+:assumption (or x2943 (not x23801) x12847)
+:assumption (or x18986 (not x20825) x1393)
+:assumption (or x8876 (not x25836))
+:assumption (or x1393 x15039)
+:assumption (or (not x20050) x19354)
+:assumption (or x22284 x29428 x6969)
+:assumption (or (not x2151) x21091)
+:assumption (or x18323 x5838)
+:assumption (or x7667 x29921)
+:assumption (or x2004 x4947)
+:assumption (or x27983 (not x9467))
+:assumption (or (not x27278) x26675)
+:assumption (or (not x14525) x480)
+:assumption (or (not x3264) (not x21201))
+:assumption (or x15745 (not x9411))
+:assumption (or x19895 (not x169))
+:assumption (or (not x28366) (not x18884))
+:assumption (or (not x29735) x3450)
+:assumption (or x19158 (not x26079))
+:assumption (or x18441 x23200)
+:assumption (or (not x18414) (not x21374))
+:assumption (or (not x3410) x25405)
+:assumption (or x2931 (not x822))
+:assumption (or x31829 (not x4382) x28500 x11221 x10893)
+:assumption (or (not x27988) (not x19040))
+:assumption (or (not x8054) (not x12852))
+:assumption (or (not x26453) (not x15701))
+:assumption (or x26041 x2616)
+:assumption (or (not x20784) (not x16087))
+:assumption (or (not x12580) (not x16025))
+:assumption (or x18694 (not x17751) x3650 x26942)
+:assumption (or (not x21915) (not x11579))
+:assumption (or (not x332) (not x8837) (not x24447) (not x11244) (not x13531) (not x26336) (not x27920) x24767)
+:assumption (or (not x7748) (not x11588))
+:assumption (or x23975 x12923)
+:assumption (or (not x2201) (not x30614))
+:assumption (or (not x7974) (not x8708) (not x26354) x24155)
+:assumption (or x19562 (not x7865))
+:assumption (or x31111 (not x8100) x21513 x24206 (not x23467) x15357 x21050 (not x6012) x4317)
+:assumption (or (not x2991) x31088)
+:assumption (or (not x12923) x11359 (not x22024) x8372)
+:assumption (or x5971 x12350 x4742 x17651 x22937 x4621)
+:assumption (or (not x9701) (not x22671))
+:assumption (or (not x29332) x415)
+:assumption (or x1393 x1425)
+:assumption (or x9844 x11224)
+:assumption (or (not x12939) x13979)
+:assumption (or (not x25177) (not x27932))
+:assumption (or (not x8095) x20078)
+:assumption (or x1906 x1580)
+:assumption (or x4127 (not x16653) x17079 x9431 x30488)
+:assumption (or (not x4845) x10906)
+:assumption (or (not x20187) (not x16536) (not x29312) x27506)
+:assumption (or (not x14770) x31719)
+:assumption (or x20697 x319 (not x2932))
+:assumption (or x7473 x8002 x18627)
+:assumption (or x10571 x18718)
+:assumption (or (not x25456) x27621)
+:assumption (or (not x28115) x20048)
+:assumption (or x7934 (not x13917))
+:assumption (or x19195 (not x29345) x14839 x24922)
+:assumption (or x2381 (not x3494) (not x21767) (not x14080) x657 x12094 x29528 (not x15584))
+:assumption (or x28745 x1990)
+:assumption (or x30205 (not x13228))
+:assumption (or (not x29919) (not x31187))
+:assumption (or x30070 x12096 (not x17016) (not x19316))
+:assumption (or x5023 (not x18932))
+:assumption (or x3632 x25076)
+:assumption (or x18290 (not x30793) x1436 (not x27918) x25294 x14586)
+:assumption (or (not x27656) x20703)
+:assumption (or x28625 x1223)
+:assumption (or (not x6788) (not x21699))
+:assumption (or x22491 x8874)
+:assumption (or (not x31720) (not x8658))
+:assumption (or (not x23370) (not x31601) x29699)
+:assumption (or x8525 (not x12943))
+:assumption (or x30471 x23169)
+:assumption (or (not x3331) x26325)
+:assumption (or x10946 x8745)
+:assumption (or (not x26555) x480)
+:assumption (or (not x25065) x27930)
+:assumption (or x6290 (not x15572))
+:assumption (or (not x11673) (not x31345) (not x9069) x10411)
+:assumption (or (not x2831) x25659 (not x4671))
+:assumption (or (not x10481) x17187)
+:assumption (or (not x3496) (not x24782))
+:assumption (or x8263 x8825 x25428)
+:assumption (or x15463 x9488)
+:assumption (or x24122 (not x29737))
+:assumption (or x12227 (not x16003))
+:assumption (or x22838 x9220)
+:assumption (or x15461 x21459)
+:assumption (or (not x23582) x21026 x25520 x20993 x24752)
+:assumption (or x22926 (not x31512))
+:assumption (or (not x7162) x27207)
+:assumption (or (not x30443) x27515)
+:assumption (or (not x30432) (not x13946))
+:assumption (or (not x4137) x10152)
+:assumption (or x24427 (not x4846))
+:assumption (or x24870 (not x5124))
+:assumption (or (not x28065) (not x20357))
+:assumption (or (not x26629) x31807)
+:assumption (or (not x17712) (not x23728))
+:assumption (or (not x24751) (not x28404))
+:assumption (or x28377 x9572 (not x15857) (not x23244) x24298 (not x21444))
+:assumption (or x17972 x14896 (not x976) (not x8831) x29243 (not x8524) (not x21607) x9202)
+:assumption (or (not x27734) x640)
+:assumption (or (not x14470) (not x14839) (not x20292))
+:assumption (or x30579 (not x30255))
+:assumption (or x15667 (not x5436))
+:assumption (or x29473 x8183)
+:assumption (or x16809 x21233)
+:assumption (or (not x7601) x2558)
+:assumption (or (not x6554) x6535 x10650 (not x14435))
+:assumption (or x5360 x21078)
+:assumption (or (not x12099) (not x1659))
+:assumption (or (not x13270) x12894 (not x2857) (not x9443))
+:assumption (or x9439 (not x6252))
+:assumption (or x23431 (not x31325) (not x13079))
+:assumption (or (not x25408) x6914)
+:assumption (or x29337 (not x30550))
+:assumption (or x5528 x7848)
+:assumption (or (not x4443) (not x15031))
+:assumption (or (not x9079) x7258)
+:assumption (or (not x2493) (not x30234) x16578 x16745 x7466 x29496 (not x1939) (not x19645) (not x23907))
+:assumption (or x2234 (not x13295))
+:assumption (or x24754 (not x2704))
+:assumption (or x26142 x27943)
+:assumption (or x14746 (not x3475) x3909 x27382 x23309)
+:assumption (or x28242 x20656)
+:assumption (or x17518 (not x9804))
+:assumption (or (not x20087) x24756 (not x22568))
+:assumption (or (not x3848) x15719 x30794 (not x18990) x3690 x9555)
+:assumption (or (not x23106) (not x24037) x5563 x17171 (not x11003) (not x2177) x14833)
+:assumption (or x15103 (not x23687))
+:assumption (or x22388 x27111 x3227)
+:assumption (or (not x13007) (not x4816))
+:assumption (or x23978 (not x19907))
+:assumption (or x18206 x48 (not x25366))
+:assumption (or (not x6548) (not x25190))
+:assumption (or x19341 x26713)
+:assumption (or x11584 (not x4041))
+:assumption (or (not x21653) x27448 x21856)
+:assumption (or x13092 x26965 x12578)
+:assumption (or x3630 (not x4050))
+:assumption (or x9008 (not x29839))
+:assumption (or (not x27236) (not x2333) (not x25357))
+:assumption (or (not x322) x2894)
+:assumption (or (not x23244) x25778)
+:assumption (or x12949 x23002)
+:assumption (or (not x19809) x12588)
+:assumption (or (not x20487) x28948)
+:assumption (or (not x29880) x26088)
+:assumption (or (not x14870) (not x12813))
+:assumption (or x1393 x17123 (not x8090))
+:assumption (or (not x17894) (not x6224))
+:assumption (or x22869 x12045)
+:assumption (or x22273 x17962)
+:assumption (or (not x16376) x3479)
+:assumption (or x16554 x8919)
+:assumption (or (not x21653) x30525)
+:assumption (or x16478 x7157)
+:assumption (or x27777 x14783)
+:assumption (or x7768 (not x8213))
+:assumption (or x22409 (not x10284))
+:assumption (or (not x21881) (not x8942) x818 x29483 (not x22529) x31289)
+:assumption (or x27983 x2935 x25180)
+:assumption (or x13094 x3343)
+:assumption (or (not x26224) x10800)
+:assumption (or x26019 (not x7924))
+:assumption (or (not x9079) x28605)
+:assumption (or (not x30948) (not x23401))
+:assumption (or (not x4086) x4034)
+:assumption (or (not x9471) x4853)
+:assumption (or (not x29899) (not x1523))
+:assumption (or x30752 x30845)
+:assumption (or (not x3402) x9681 x5083 x23347)
+:assumption (or (not x12965) x14687)
+:assumption (or x1575 x17109)
+:assumption (or (not x14853) x20132)
+:assumption (or (not x16145) (not x13816) (not x12291))
+:assumption (or (not x23119) x30834)
+:assumption (or (not x21702) x28888)
+:assumption (or x15193 x26875)
+:assumption (or (not x2133) x11801)
+:assumption (or x12346 (not x7162))
+:assumption (or x15794 (not x30318) (not x18189) x15511 (not x15251) (not x14344) x14128 (not x6615) (not x5045))
+:assumption (or x18329 (not x18859))
+:assumption (or (not x2301) x3292 (not x8002) (not x23244))
+:assumption (or x18391 (not x14799))
+:assumption (or (not x27130) (not x5203))
+:assumption (or (not x23212) (not x24450))
+:assumption (or x26808 (not x1172))
+:assumption (or (not x2487) (not x3267))
+:assumption (or (not x5106) x29171)
+:assumption (or (not x14206) (not x1432))
+:assumption (or x18809 x264)
+:assumption (or (not x29709) (not x11159))
+:assumption (or x30937 x27775 (not x7691))
+:assumption (or (not x5563) x15683)
+:assumption (or (not x17016) (not x3034))
+:assumption (or x23688 (not x29649))
+:assumption (or (not x31734) (not x13145))
+:assumption (or x12337 x24214)
+:assumption (or (not x13081) x23092)
+:assumption (or (not x379) (not x25634))
+:assumption (or x15111 (not x8002))
+:assumption (or (not x23244) (not x15198))
+:assumption (or (not x31150) x21584)
+:assumption (or x25371 x21339 (not x543) x19501)
+:assumption (or (not x8378) (not x25155))
+:assumption (or (not x17118) x26211)
+:assumption (or x30635 x16379)
+:assumption (or x12663 (not x28328))
+:assumption (or x31166 x22359 (not x26432) (not x25084))
+:assumption (or (not x1641) (not x9345))
+:assumption (or x1476 (not x12072))
+:assumption (or (not x10335) (not x24934))
+:assumption (or x21581 x28541)
+:assumption (or (not x4810) x22310 (not x10632) x879 (not x20045) x23460 x2569 (not x24617))
+:assumption (or x12582 (not x4381) (not x1393))
+:assumption (or (not x21653) (not x25643))
+:assumption (or x11777 (not x19297) (not x2163) (not x26263) x12067 (not x7675) (not x6149) x21424)
+:assumption (or x29442 (not x21536) x3782)
+:assumption (or x6754 (not x20668) (not x12458))
+:assumption (or (not x3767) x5583)
+:assumption (or (not x3834) (not x19657))
+:assumption (or x25329 x17016 (not x2714) x21298)
+:assumption (or (not x18931) x2830)
+:assumption (or (not x6783) (not x20252))
+:assumption (or x11982 x25911)
+:assumption (or (not x23723) (not x16232))
+:assumption (or x18004 x22299)
+:assumption (or (not x21599) (not x15788))
+:assumption (or (not x29585) (not x20127))
+:assumption (or x25035 (not x21832))
+:assumption (or (not x18895) (not x20576) x26811)
+:assumption (or (not x10563) (not x9025) x3494)
+:assumption (or (not x13024) x25659 x1580 (not x18694))
+:assumption (or x23123 x18646)
+:assumption (or x21714 x2107)
+:assumption (or (not x31772) x30531)
+:assumption (or (not x1292) (not x29996) (not x954) (not x24421) x22874)
+:assumption (or x10905 (not x15626))
+:assumption (or (not x1219) x29720)
+:assumption (or x22030 x26755)
+:assumption (or x24722 (not x14507))
+:assumption (or (not x13956) (not x4378) (not x17275))
+:assumption (or x17530 (not x27003))
+:assumption (or x31188 (not x11674))
+:assumption (or (not x28565) x31771)
+:assumption (or (not x7458) (not x25434) x5428 (not x10413) (not x10292) (not x24976) x21714 x5629 (not x26505) x53 (not x20138) (not x6534) (not x19104))
+:assumption (or (not x25853) x28541 x571)
+:assumption (or x23244 x28973 (not x15532))
+:assumption (or x20063 x11197 x26789 x28886 (not x5819) x9275 x20651)
+:assumption (or (not x24795) x5528 x15799)
+:assumption (or (not x11940) (not x5606))
+:assumption (or x21142 (not x12714))
+:assumption (or x20659 (not x9651))
+:assumption (or x9697 x22873 (not x15656) x14619 x1859 x23825 x15366)
+:assumption (or x1514 x5497)
+:assumption (or x27618 (not x13913))
+:assumption (or (not x2257) (not x1036))
+:assumption (or x1393 x12562)
+:assumption (or x29465 (not x29793))
+:assumption (or (not x30129) x13871)
+:assumption (or x4783 (not x22221))
+:assumption (or (not x10758) x14567)
+:assumption (or x27460 (not x30742))
+:assumption (or x21798 (not x16765))
+:assumption (or x7666 x16981 x21152 x3654)
+:assumption (or (not x8002) (not x8530))
+:assumption (or x25199 (not x14361))
+:assumption (or (not x5331) x12045 x52)
+:assumption (or (not x24952) (not x15318))
+:assumption (or (not x24354) x27440)
+:assumption (or x1031 (not x12663))
+:assumption (or (not x22259) x19159)
+:assumption (or x18128 x29813)
+:assumption (or (not x13057) (not x11705))
+:assumption (or x19948 (not x16952) (not x18003) x19864 x29323 x4259)
+:assumption (or x15398 x11870)
+:assumption (or (not x12304) x30113)
+:assumption (or x12773 x24377)
+:assumption (or (not x20214) (not x20947))
+:assumption (or x7282 x29600)
+:assumption (or x14729 x13104)
+:assumption (or x4024 (not x29079))
+:assumption (or x12750 (not x24099))
+:assumption (or x14529 x4424)
+:assumption (or (not x31578) x30179)
+:assumption (or (not x28242) x3781 (not x14871))
+:assumption (or (not x28982) (not x21064))
+:assumption (or (not x27092) x15097)
+:assumption (or x5709 x19429)
+:assumption (or (not x4198) (not x27349))
+:assumption (or x15997 (not x24341))
+:assumption (or (not x18076) x13739)
+:assumption (or x19117 (not x23760))
+:assumption (or x18400 x2859)
+:assumption (or x479 x21036 x12059 (not x11935) (not x16295) x24584)
+:assumption (or x28263 (not x28262))
+:assumption (or x9302 x16719)
+:assumption (or (not x22469) (not x25260) x22349 (not x8542) (not x27593))
+:assumption (or x23244 (not x15704))
+:assumption (or (not x3413) (not x1945))
+:assumption (or x3742 (not x23731))
+:assumption (or x2106 (not x8308))
+:assumption (or (not x16157) (not x6073))
+:assumption (or x28328 x29079 (not x4024))
+:assumption (or (not x3792) x12034)
+:assumption (or x31376 x102 x20117)
+:assumption (or x17661 (not x13576))
+:assumption (or x30785 x2493)
+:assumption (or (not x8020) (not x4548))
+:assumption (or x20942 (not x5573))
+:assumption (or x20416 x8961 x28533 (not x25366))
+:assumption (or x14048 (not x17198))
+:assumption (or (not x17880) x27946)
+:assumption (or (not x24647) (not x20147) (not x31574))
+:assumption (or (not x26897) x3014)
+:assumption (or (not x20384) x20718)
+:assumption (or (not x22739) x9432)
+:assumption (or (not x4540) (not x16276))
+:assumption (or x20829 x11875)
+:assumption (or x13119 (not x5206))
+:assumption (or (not x8959) x9002)
+:assumption (or x18851 x31563 (not x12995))
+:assumption (or (not x1505) (not x21815))
+:assumption (or (not x11444) x2092)
+:assumption (or (not x24215) (not x12924))
+:assumption (or x17440 (not x5911))
+:assumption (or (not x25366) (not x26268))
+:assumption (or x8921 (not x4185))
+:assumption (or x6289 (not x27857) x13407)
+:assumption (or x31559 (not x9008))
+:assumption (or x19891 x3538 (not x29659))
+:assumption (or x17334 x11816 x26897)
+:assumption (or x22022 x758 (not x8086) x7832 (not x30987))
+:assumption (or (not x26893) x19042)
+:assumption (or (not x11233) x27858)
+:assumption (or (not x18201) x21613)
+:assumption (or x10534 (not x6698))
+:assumption (or (not x2806) x13499 (not x24260) (not x16223) (not x27978))
+:assumption (or x804 x13461)
+:assumption (or (not x3993) x8317)
+:assumption (or (not x18854) (not x12885))
+:assumption (or (not x10778) (not x8002))
+:assumption (or (not x2108) (not x963))
+:assumption (or (not x20101) (not x19098))
+:assumption (or (not x31315) x13534)
+:assumption (or x7252 (not x26642))
+:assumption (or (not x10663) x2749)
+:assumption (or x14562 (not x19074) (not x6907) (not x6242) x521 (not x12391) x10632 (not x6191))
+:assumption (or (not x22595) (not x7751))
+:assumption (or (not x26809) (not x18213))
+:assumption (or x14465 x15281)
+:assumption (or (not x15840) (not x18519))
+:assumption (or (not x22773) x19667 (not x14347))
+:assumption (or x20402 (not x29945))
+:assumption (or (not x7854) x14826)
+:assumption (or x19608 x13956)
+:assumption (or x20718 (not x30124))
+:assumption (or x4420 x8058)
+:assumption (or (not x13015) (not x22694))
+:assumption (or (not x7615) (not x15925))
+:assumption (or (not x256) x1268)
+:assumption (or x21302 x29593)
+:assumption (or (not x6846) x12618)
+:assumption (or x21750 (not x27452))
+:assumption (or (not x8337) (not x8473))
+:assumption (or (not x10307) x17975)
+:assumption (or (not x11685) (not x6376))
+:assumption (or x18993 (not x31890))
+:assumption (or x5528 (not x30740))
+:assumption (or x16696 (not x19807) (not x23786) (not x8532))
+:assumption (or x2559 x28555)
+:assumption (or x29 (not x24199))
+:assumption (or (not x1393) (not x2939) (not x7248))
+:assumption (or (not x9833) x23530 (not x21341) x3507 x18296 x22829)
+:assumption (or (not x19174) x21400)
+:assumption (or (not x26536) x16959)
+:assumption (or (not x758) (not x17862))
+:assumption (or x1148 x11829)
+:assumption (or x9008 (not x7556))
+:assumption (or (not x6018) (not x8002))
+:assumption (or (not x20017) x7879)
+:assumption (or (not x13956) (not x3))
+:assumption (or (not x9431) (not x17079))
+:assumption (or (not x25316) x9439)
+:assumption (or (not x6329) (not x4556))
+:assumption (or (not x11623) x29392)
+:assumption (or x3485 x6848)
+:assumption (or x13465 x29145)
+:assumption (or (not x26792) x7854)
+:assumption (or (not x26053) x8260)
+:assumption (or x10377 (not x31304))
+:assumption (or x8002 (not x26473) x31084)
+:assumption (or (not x185) (not x8002) (not x29888))
+:assumption (or x27983 (not x18058))
+:assumption (or x407 (not x17589) (not x30225) (not x7072) (not x26670) x16434 x23832 x4867)
+:assumption (or x12935 (not x24160))
+:assumption (or (not x30226) (not x29459))
+:assumption (or (not x28570) (not x2755))
+:assumption (or (not x24627) x28799)
+:assumption (or x4625 (not x3782))
+:assumption (or x11569 (not x22972))
+:assumption (or x16982 (not x30002))
+:assumption (or (not x26233) x22802)
+:assumption (or (not x1839) x12356)
+:assumption (or (not x20363) (not x22496))
+:assumption (or x22495 (not x31346))
+:assumption (or x15183 (not x16654))
+:assumption (or x15952 x23403)
+:assumption (or x30392 (not x13807))
+:assumption (or (not x8002) (not x18505))
+:assumption (or x11033 x1972)
+:assumption (or x4386 x25606 (not x25784) (not x28161) x23893)
+:assumption (or x24487 (not x12147))
+:assumption (or x10976 (not x2865))
+:assumption (or x8254 (not x15258))
+:assumption (or (not x17320) (not x5665))
+:assumption (or x23016 (not x218))
+:assumption (or x9924 x9453 x11805 x17635 (not x8979))
+:assumption (or x29081 (not x21955))
+:assumption (or (not x31070) x23153)
+:assumption (or (not x21382) x5899)
+:assumption (or (not x1591) (not x21391))
+:assumption (or (not x18091) (not x3670))
+:assumption (or x25554 (not x4796))
+:assumption (or x1811 x6006)
+:assumption (or (not x4768) x24971)
+:assumption (or x31722 x29364)
+:assumption (or (not x7785) (not x25488))
+:assumption (or x19354 x20893)
+:assumption (or x28191 (not x14464))
+:assumption (or x13915 x5760)
+:assumption (or (not x6281) (not x108))
+:assumption (or (not x21016) (not x3414))
+:assumption (or x25982 x27215)
+:assumption (or x23244 (not x8921))
+:assumption (or x6840 (not x13956) (not x23244) x13550)
+:assumption (or x15115 (not x9544) x6876 (not x30839) x27123)
+:assumption (or x25659 x7840)
+:assumption (or (not x29084) (not x18718))
+:assumption (or x18073 x19438 x20791)
+:assumption (or x29312 (not x21003))
+:assumption (or (not x19860) x3752)
+:assumption (or x28812 (not x9357))
+:assumption (or x13933 x29035 x12910 (not x6221) x878 x12860 x8859 x7864)
+:assumption (or x14905 (not x17734))
+:assumption (or (not x15628) x1542 x10821 x7678 x9723 (not x6973))
+:assumption (or (not x23030) (not x13802))
+:assumption (or x11687 x22136)
+:assumption (or (not x30100) x13118)
+:assumption (or (not x23420) x20572)
+:assumption (or x13483 x9008 x2664)
+:assumption (or (not x26464) (not x21653))
+:assumption (or x11648 (not x27537))
+:assumption (or (not x812) x15603)
+:assumption (or x11419 (not x27030))
+:assumption (or (not x31246) (not x5411))
+:assumption (or (not x20402) (not x21821))
+:assumption (or (not x19922) x13956)
+:assumption (or (not x8346) (not x21033))
+:assumption (or x13940 (not x8033))
+:assumption (or (not x16304) (not x2392) (not x31709) x15795)
+:assumption (or (not x9778) (not x10013) x1419 x9439 (not x26649) (not x18534) (not x14706))
+:assumption (or x31187 x15026)
+:assumption (or (not x23545) x7989)
+:assumption (or x9862 (not x23506))
+:assumption (or (not x5232) x13018 (not x2883) x17056 (not x461))
+:assumption (or x10874 x16812)
+:assumption (or x5528 x14895)
+:assumption (or (not x11133) x25980)
+:assumption (or (not x13575) (not x12820))
+:assumption (or (not x10522) (not x26591))
+:assumption (or x6878 (not x375))
+:assumption (or (not x14414) x6317)
+:assumption (or x3190 x28538)
+:assumption (or x7827 x31559)
+:assumption (or (not x25194) (not x4479))
+:assumption (or (not x2148) (not x28809))
+:assumption (or (not x2246) (not x14455) (not x3435) (not x20237))
+:assumption (or (not x20070) x29205)
+:assumption (or (not x30176) (not x19864))
+:assumption (or (not x15406) x7327 (not x11394))
+:assumption (or x14327 x2147)
+:assumption (or x28637 x29367)
+:assumption (or (not x31861) (not x8002))
+:assumption (or x6771 x28661)
+:assumption (or (not x7050) x25171 (not x23625) x18727 x15330 x10624 (not x15866) (not x28185))
+:assumption (or (not x6431) x30682)
+:assumption (or x22368 x17065)
+:assumption (or (not x21582) x16375 x17565 x9259)
+:assumption (or (not x10153) x21815)
+:assumption (or (not x2772) (not x22687))
+:assumption (or x31455 x18271)
+:assumption (or x3218 (not x2785))
+:assumption (or (not x3957) x20215)
+:assumption (or x8374 x17127)
+:assumption (or (not x13978) x4150 x29606)
+:assumption (or (not x16443) (not x21653))
+:assumption (or x23847 x805)
+:assumption (or x24191 (not x6955))
+:assumption (or x29933 (not x12275))
+:assumption (or x4458 (not x11556))
+:assumption (or (not x24562) (not x23298))
+:assumption (or (not x15269) (not x16025))
+:assumption (or x22245 x5030)
+:assumption (or x22636 x11693 (not x28584))
+:assumption (or x16610 (not x27335))
+:assumption (or x13728 (not x19397))
+:assumption (or x18806 x25659)
+:assumption (or (not x4815) x27532)
+:assumption (or (not x10479) x7225)
+:assumption (or x2498 (not x13983))
+:assumption (or x4641 x15005)
+:assumption (or x23128 x23261)
+:assumption (or (not x12147) x19711)
+:assumption (or x7324 x11852)
+:assumption (or (not x20087) x17520)
+:assumption (or x9914 x12757)
+:assumption (or x12594 (not x3466) x14519 x20556)
+:assumption (or (not x26569) x21422)
+:assumption (or (not x22468) x22014)
+:assumption (or (not x5731) (not x21443))
+:assumption (or (not x22306) x5258)
+:assumption (or x2555 x13089)
+:assumption (or x18594 x30883)
+:assumption (or (not x17802) x20585 (not x25095) x29132)
+:assumption (or x23559 (not x24067) x12406)
+:assumption (or (not x2701) (not x615) (not x1388))
+:assumption (or x9938 (not x25641))
+:assumption (or (not x6149) x11814)
+:assumption (or x5847 x9531)
+:assumption (or (not x28912) x15070)
+:assumption (or (not x18441) (not x11271))
+:assumption (or (not x29256) (not x23244))
+:assumption (or x19399 (not x26934) x3001)
+:assumption (or (not x6255) (not x13522))
+:assumption (or (not x26329) x16022)
+:assumption (or x23329 x25619)
+:assumption (or x6969 (not x22499) (not x5391))
+:assumption (or (not x16025) (not x12913) x3725)
+:assumption (or (not x29272) x18519 x19711 (not x14577))
+:assumption (or x24736 x18567)
+:assumption (or (not x6685) x7646)
+:assumption (or x15321 x19183 x18634)
+:assumption (or x1959 x6233)
+:assumption (or (not x30039) x27172)
+:assumption (or (not x5526) (not x26939))
+:assumption (or x4857 (not x16025))
+:assumption (or x2643 x10015)
+:assumption (or x9201 x4369)
+:assumption (or (not x9351) (not x70))
+:assumption (or x12233 x9949 x26801 x28315 x29941 (not x8513) (not x29372))
+:assumption (or (not x10877) (not x13813))
+:assumption (or (not x23154) x7200)
+:assumption (or x6621 (not x24635) (not x142))
+:assumption (or (not x6378) (not x19665))
+:assumption (or (not x2482) (not x31143))
+:assumption (or x20736 x9008)
+:assumption (or (not x10284) x17236)
+:assumption (or x24641 (not x30112))
+:assumption (or (not x15520) (not x17238) (not x3631) (not x16907))
+:assumption (or (not x13702) x28367)
+:assumption (or (not x21460) x2029)
+:assumption (or (not x11823) x26826)
+:assumption (or x4053 (not x31432))
+:assumption (or (not x13307) x7356)
+:assumption (or (not x16553) x31317 (not x5528) x6467 (not x23753) x22501)
+:assumption (or (not x7817) (not x77))
+:assumption (or (not x918) (not x24629))
+:assumption (or x30891 (not x20858))
+:assumption (or x26205 x28925)
+:assumption (or (not x8194) (not x5337))
+:assumption (or (not x4492) x15652)
+:assumption (or x7875 x25652)
+:assumption (or x288 x8217 x29810 (not x18600) x707)
+:assumption (or x9360 x4824)
+:assumption (or x5486 x6594)
+:assumption (or x30113 x28023 (not x30286))
+:assumption (or (not x3712) (not x108) x16025)
+:assumption (or x12163 (not x20134))
+:assumption (or (not x10850) x28124)
+:assumption (or x2418 (not x27425))
+:assumption (or x16436 x8740)
+:assumption (or (not x8827) x9675)
+:assumption (or x14157 x6318)
+:assumption (or x603 x28912)
+:assumption (or x29959 x26109)
+:assumption (or x31849 (not x11555))
+:assumption (or (not x27203) (not x10061))
+:assumption (or (not x16802) x22257)
+:assumption (or x8082 (not x21116))
+:assumption (or x1875 (not x8788))
+:assumption (or (not x24720) x13408 (not x15004))
+:assumption (or (not x23244) (not x453) (not x29260) (not x15872) (not x733))
+:assumption (or (not x15370) (not x15803))
+:assumption (or (not x11278) (not x1695))
+:assumption (or (not x16536) (not x27891))
+:assumption (or (not x17505) x2243)
+:assumption (or (not x20556) (not x14519))
+:assumption (or x27970 (not x2564))
+:assumption (or (not x25911) x26902)
+:assumption (or x30837 x30208 (not x15956) x13228)
+:assumption (or (not x27998) x15412)
+:assumption (or (not x21330) (not x1162))
+:assumption (or x14668 x4494 x31892 x23189 (not x1521))
+:assumption (or (not x21339) (not x1793))
+:assumption (or x13200 (not x31873))
+:assumption (or (not x27467) x30204)
+:assumption (or (not x20402) (not x19619))
+:assumption (or (not x5686) (not x29695))
+:assumption (or (not x4569) (not x16226) (not x1393))
+:assumption (or x2750 (not x21428))
+:assumption (or (not x1491) x3671 (not x5322))
+:assumption (or x30745 x28470)
+:assumption (or (not x20550) (not x10035))
+:assumption (or (not x3419) (not x20651))
+:assumption (or x22851 (not x1127))
+:assumption (or (not x26841) x5229)
+:assumption (or (not x10497) (not x24064))
+:assumption (or x28912 x31408)
+:assumption (or x29298 (not x2226))
+:assumption (or (not x7274) x15865)
+:assumption (or (not x9439) (not x26243))
+:assumption (or x2532 (not x30404))
+:assumption (or x5602 x13956)
+:assumption (or x16592 x5142)
+:assumption (or (not x12923) (not x31460))
+:assumption (or x29850 x7835)
+:assumption (or (not x7835) x25563 x19795)
+:assumption (or (not x26877) (not x21596))
+:assumption (or (not x11103) (not x7544))
+:assumption (or (not x5157) x9100)
+:assumption (or (not x22127) (not x13775))
+:assumption (or x10991 (not x15918))
+:assumption (or (not x2880) x16404 (not x30102))
+:assumption (or x13084 (not x14687))
+:assumption (or x19238 (not x27608))
+:assumption (or (not x12889) (not x13446))
+:assumption (or x16025 (not x6789))
+:assumption (or x15946 (not x27562))
+:assumption (or (not x707) (not x29810))
+:assumption (or x25201 x23180)
+:assumption (or x5004 x4800)
+:assumption (or x8 (not x6995))
+:assumption (or (not x27057) (not x29269))
+:assumption (or x797 (not x3111))
+:assumption (or (not x12820) x7392)
+:assumption (or x24950 (not x20949))
+:assumption (or x26257 x3332 (not x3236) x20564)
+:assumption (or (not x16284) (not x3455))
+:assumption (or x7124 (not x16368) (not x2382) x591 (not x16320))
+:assumption (or (not x12988) x1393 x26734 (not x12201) x2865 x22754 x23936 x18477)
+:assumption (or x1095 (not x17437))
+:assumption (or (not x3683) (not x10134))
+:assumption (or x14537 (not x14047))
+:assumption (or (not x7190) (not x17192) x31359 (not x28656) x8550 (not x17326))
+:assumption (or (not x30891) (not x6771) (not x28661) x24155 x27911)
+:assumption (or (not x12381) x8961)
+:assumption (or x5162 (not x20721))
+:assumption (or (not x26937) (not x20929))
+:assumption (or x30490 x25329)
+:assumption (or x19959 x15508)
+:assumption (or x12488 x860 (not x21563) (not x17650))
+:assumption (or x3761 (not x3789))
+:assumption (or x16741 (not x16455) x2133 (not x31803))
+:assumption (or (not x21809) x15975)
+:assumption (or (not x2605) (not x1999))
+:assumption (or (not x971) x19721 (not x29500) (not x16752))
+:assumption (or (not x23911) (not x16475))
+:assumption (or (not x19845) (not x14428))
+:assumption (or (not x13509) (not x1649))
+:assumption (or x12027 x8766)
+:assumption (or x469 (not x15260))
+:assumption (or (not x17428) x16648)
+:assumption (or (not x27404) x3781 x16455)
+:assumption (or (not x3931) x7158)
+:assumption (or (not x1497) (not x9008))
+:assumption (or (not x13212) (not x8002))
+:assumption (or x827 (not x25297))
+:assumption (or x3950 x1542)
+:assumption (or (not x267) (not x21694))
+:assumption (or (not x31604) x25376)
+:assumption (or (not x12836) x12296)
+:assumption (or (not x9008) (not x1543))
+:assumption (or x7159 (not x5505))
+:assumption (or x16977 (not x16962))
+:assumption (or x12496 (not x873))
+:assumption (or x25607 x8632)
+:assumption (or x23980 x12305)
+:assumption (or (not x21312) x28205)
+:assumption (or (not x26242) x10086)
+:assumption (or (not x10772) (not x17629))
+:assumption (or (not x9571) x14040)
+:assumption (or x1393 (not x18763))
+:assumption (or (not x24127) x9621)
+:assumption (or x967 (not x7920))
+:assumption (or (not x18194) (not x14792))
+:assumption (or (not x23244) x21054)
+:assumption (or (not x10281) (not x25065))
+:assumption (or (not x508) x26166)
+:assumption (or x17205 (not x31368) (not x20328))
+:assumption (or x3330 x321)
+:assumption (or x15544 (not x19046))
+:assumption (or x7728 x25250)
+:assumption (or x25344 (not x14839))
+:assumption (or x31284 (not x18065) x8825)
+:assumption (or (not x18680) x2821 x26942 x1368)
+:assumption (or x18027 (not x23718))
+:assumption (or (not x1936) (not x25316))
+:assumption (or (not x17698) x25366)
+:assumption (or (not x9607) (not x21432))
+:assumption (or x4688 (not x16991))
+:assumption (or (not x20414) (not x22594))
+:assumption (or (not x11620) x3126)
+:assumption (or x20169 (not x11784))
+:assumption (or (not x14799) (not x23244))
+:assumption (or x19596 (not x10241))
+:assumption (or (not x2334) (not x11319))
+:assumption (or x18568 (not x31109))
+:assumption (or x9341 (not x28833))
+:assumption (or (not x16283) x31782)
+:assumption (or x3738 x23887)
+:assumption (or x18409 x2135)
+:assumption (or (not x28242) x6234)
+:assumption (or (not x15792) x6043)
+:assumption (or x14179 x13759)
+:assumption (or (not x28075) x30754)
+:assumption (or (not x22218) x25659)
+:assumption (or (not x27182) x4444)
+:assumption (or (not x14755) (not x18191))
+:assumption (or x25490 (not x27304))
+:assumption (or x4632 x6465)
+:assumption (or x18160 (not x3411))
+:assumption (or (not x27373) x18228)
+:assumption (or x25074 (not x14395) (not x21690))
+:assumption (or (not x1195) x22362 (not x20803) (not x22628) (not x9551) (not x5422))
+:assumption (or (not x2073) x16261)
+:assumption (or (not x21899) x21196)
+:assumption (or (not x25883) (not x30208))
+:assumption (or (not x24535) (not x21849))
+:assumption (or (not x8868) x11792)
+:assumption (or x5708 x21223)
+:assumption (or (not x14695) (not x9008) (not x14991) x514 (not x5528))
+:assumption (or (not x19433) (not x134))
+:assumption (or x3597 x14056)
+:assumption (or x13508 (not x15468))
+:assumption (or x19578 (not x14231))
+:assumption (or x10013 x2197)
+:assumption (or (not x7493) (not x21075))
+:assumption (or x19665 x17732)
+:assumption (or (not x4949) (not x8406) (not x25273) (not x24974) x28259)
+:assumption (or x24588 x6969 (not x14451))
+:assumption (or x5776 x24304)
+:assumption (or x16907 x21672)
+:assumption (or x26594 x15314)
+:assumption (or x15245 x12149)
+:assumption (or x13876 x9667)
+:assumption (or x25411 x17520)
+:assumption (or x2098 (not x28506))
+:assumption (or x15477 (not x6307))
+:assumption (or x21957 (not x18976))
+:assumption (or (not x7849) x29649 x19536 (not x2246) x28912)
+:assumption (or (not x14532) x319)
+:assumption (or x22381 (not x3896))
+:assumption (or x22121 x22214)
+:assumption (or (not x22534) (not x11828))
+:assumption (or x18210 (not x23244))
+:assumption (or (not x8595) (not x14282))
+:assumption (or x26101 (not x24932))
+:assumption (or (not x6083) (not x20723))
+:assumption (or (not x3300) x9673)
+:assumption (or (not x20751) (not x8109))
+:assumption (or (not x1042) x25323)
+:assumption (or (not x9398) (not x31681) x1023)
+:assumption (or x27210 x18064)
+:assumption (or x30113 x3948)
+:assumption (or x19263 (not x31052))
+:assumption (or x1038 x18360)
+:assumption (or x28074 (not x13532))
+:assumption (or x21298 (not x9804) x24832 (not x21868))
+:assumption (or x30751 x30086)
+:assumption (or x2469 (not x12284))
+:assumption (or (not x2705) (not x30113) (not x4941) x9093)
+:assumption (or (not x9754) (not x31829))
+:assumption (or (not x25665) (not x28260))
+:assumption (or (not x9193) (not x765))
+:assumption (or x25571 (not x15659) x27570)
+:assumption (or x20301 (not x12018))
+:assumption (or x17733 x11857 (not x11687) (not x22136))
+:assumption (or x1988 (not x20291) x5528)
+:assumption (or x25424 (not x2320))
+:assumption (or (not x19992) (not x14495))
+:assumption (or (not x21484) x25064 (not x12928) x5590 x19207 x22519)
+:assumption (or (not x16973) x856)
+:assumption (or x25413 (not x7799))
+:assumption (or (not x31134) (not x25884) x16510)
+:assumption (or x17565 (not x23663))
+:assumption (or (not x8910) (not x7078))
+:assumption (or (not x12269) (not x2823) x5554 (not x16510) x26193 (not x11583))
+:assumption (or x8002 x15329 x23244)
+:assumption (or (not x9451) x27347)
+:assumption (or x26308 x5358 (not x17236) (not x2992) (not x31607) x9181 (not x22409) x10284)
+:assumption (or (not x11399) (not x16368) x10730 x14510 x9453 (not x21568))
+:assumption (or (not x16252) (not x10008))
+:assumption (or (not x7206) x26351)
+:assumption (or x29545 x11155)
+:assumption (or (not x17805) x16127)
+:assumption (or (not x28624) (not x21325))
+:assumption (or (not x10940) (not x27418) x25659)
+:assumption (or x18899 x18008)
+:assumption (or x16322 x14869)
+:assumption (or x24043 x827)
+:assumption (or (not x28276) x26477)
+:assumption (or (not x23487) x8276)
+:assumption (or x27328 (not x11294))
+:assumption (or x19428 x14551 x29986 x11099)
+:assumption (or (not x662) x29963)
+:assumption (or x6142 (not x28908))
+:assumption (or (not x1393) (not x6532) x16005)
+:assumption (or x2641 x13956)
+:assumption (or x1886 (not x22594))
+:assumption (or x15018 x6037)
+:assumption (or x14378 x5125)
+:assumption (or x3012 (not x18654))
+:assumption (or (not x24002) (not x11766))
+:assumption (or (not x10629) (not x20023))
+:assumption (or x14 x11930)
+:assumption (or (not x28226) x8872)
+:assumption (or (not x23960) (not x31386))
+:assumption (or (not x26880) (not x13576))
+:assumption (or (not x11074) x23803)
+:assumption (or (not x21094) x218)
+:assumption (or (not x28626) x23910)
+:assumption (or x6450 (not x2360))
+:assumption (or x4058 x12306)
+:assumption (or (not x9008) (not x23140))
+:assumption (or x6347 x24779)
+:assumption (or (not x27535) (not x28941))
+:assumption (or (not x31846) x11761)
+:assumption (or x28126 x10047)
+:assumption (or x31605 x21125 (not x24606) x20322 (not x3452))
+:assumption (or (not x1288) x918 (not x15554) x9029 x4781)
+:assumption (or x22329 x7251)
+:assumption (or x14121 (not x12632))
+:assumption (or (not x18837) x28741)
+:assumption (or (not x15294) x5528)
+:assumption (or (not x252) x10784 x2278 x20831)
+:assumption (or x13285 (not x10896) x17041 (not x1384) (not x19973))
+:assumption (or (not x4865) (not x18484) (not x30633))
+:assumption (or x28710 (not x24878))
+:assumption (or x14719 x23156)
+:assumption (or x7555 (not x24940))
+:assumption (or x16481 (not x321))
+:assumption (or (not x1393) x3216)
+:assumption (or x15075 x5179)
+:assumption (or (not x22084) x10381)
+:assumption (or x26218 (not x29789))
+:assumption (or (not x1360) (not x5590))
+:assumption (or x9262 (not x27993))
+:assumption (or x14839 (not x30776))
+:assumption (or (not x22888) x26300)
+:assumption (or x25659 x25984)
+:assumption (or x319 x14286)
+:assumption (or x4977 (not x14896))
+:assumption (or x16802 (not x10234))
+:assumption (or x22308 x6008 x9568 x14759 x12472)
+:assumption (or (not x11146) (not x12324))
+:assumption (or x21209 (not x29028))
+:assumption (or x16851 (not x22832))
+:assumption (or x26539 x5708)
+:assumption (or x17624 x17287)
+:assumption (or (not x31717) x21290)
+:assumption (or (not x28451) x10962)
+:assumption (or x10336 x13597 (not x20989))
+:assumption (or (not x939) (not x21834))
+:assumption (or (not x18932) (not x14347))
+:assumption (or (not x27003) (not x30079))
+:assumption (or x27141 x21188)
+:assumption (or (not x3392) (not x16785) (not x23288) x9008 (not x30877) x9089)
+:assumption (or x30662 (not x14778))
+:assumption (or x644 x3950)
+:assumption (or x10366 x28788)
+:assumption (or (not x17040) (not x31055))
+:assumption (or (not x4840) x26092)
+:assumption (or (not x9454) (not x8826))
+:assumption (or (not x23707) (not x21202))
+:assumption (or (not x17907) (not x20852))
+:assumption (or (not x1072) (not x27409))
+:assumption (or (not x6951) (not x887))
+:assumption (or x3537 (not x8002) x16396)
+:assumption (or x26514 x7602)
+:assumption (or x31807 x23769)
+:assumption (or (not x29654) (not x5152))
+:assumption (or x18346 (not x14576))
+:assumption (or (not x23538) x15400)
+:assumption (or (not x6170) (not x8002))
+:assumption (or (not x18114) (not x7888) x17712 x1174)
+:assumption (or x12098 (not x25723))
+:assumption (or x11288 (not x495))
+:assumption (or x29959 x6594 x20675 (not x30504))
+:assumption (or x25810 x31696)
+:assumption (or (not x21572) x1393 x22208)
+:assumption (or x27579 x26710)
+:assumption (or x2543 (not x29870))
+:assumption (or (not x1595) (not x15084))
+:assumption (or x13836 (not x27654))
+:assumption (or (not x7676) (not x19711))
+:assumption (or (not x9980) (not x9802))
+:assumption (or (not x18966) x17953)
+:assumption (or (not x11379) (not x7328))
+:assumption (or x12074 (not x10892))
+:assumption (or (not x4926) (not x7181))
+:assumption (or x10882 (not x19143) x29346 x26428)
+:assumption (or x8729 (not x11041))
+:assumption (or x24004 (not x25283))
+:assumption (or (not x15743) (not x25371))
+:assumption (or x19948 x28690)
+:assumption (or x13564 x27084)
+:assumption (or (not x25332) (not x25400))
+:assumption (or x18872 x20388)
+:assumption (or (not x15141) (not x13601))
+:assumption (or x8219 (not x23781))
+:assumption (or (not x3839) (not x23583))
+:assumption (or (not x13378) x18172 (not x15380) x19992)
+:assumption (or x8692 x3080)
+:assumption (or (not x23244) x18164 (not x660) x10864 x22001 x22)
+:assumption (or (not x18623) x25276 x27652 x30947)
+:assumption (or (not x27976) (not x376))
+:assumption (or (not x485) (not x11797))
+:assumption (or (not x20756) x5378)
+:assumption (or (not x12719) (not x22833))
+:assumption (or x20302 x19765)
+:assumption (or (not x2058) (not x8908))
+:assumption (or x21480 (not x9787))
+:assumption (or x25222 (not x20171))
+:assumption (or x19864 (not x5644) x18003 (not x15649))
+:assumption (or (not x23244) x9615)
+:assumption (or (not x3066) x10410)
+:assumption (or x15751 (not x23466))
+:assumption (or (not x9780) x30432)
+:assumption (or x17863 (not x29561))
+:assumption (or x29780 (not x25730))
+:assumption (or (not x17559) (not x25888))
+:assumption (or (not x2777) x22510)
+:assumption (or (not x14751) (not x25583) (not x9581) (not x19113) (not x5921) x17449)
+:assumption (or (not x11749) (not x13956))
+:assumption (or (not x8960) x2880 (not x26966))
+:assumption (or (not x26478) x16978 x14647 x3070 (not x6761))
+:assumption (or (not x10776) (not x12307) x2334 x18201)
+:assumption (or x17950 x19382)
+:assumption (or (not x3550) x20325)
+:assumption (or (not x17811) x20120)
+:assumption (or x7244 x3001)
+:assumption (or x23427 x8774 x5240)
+:assumption (or (not x28405) (not x17049))
+:assumption (or (not x10632) (not x521))
+:assumption (or x10890 x12006)
+:assumption (or x7745 x536 x29376)
+:assumption (or (not x7690) x12280)
+:assumption (or x21298 (not x30435))
+:assumption (or (not x23259) (not x25087))
+:assumption (or x25729 (not x10410))
+:assumption (or (not x26207) x4632)
+:assumption (or (not x28863) x1584 (not x8002))
+:assumption (or (not x25537) (not x2676))
+:assumption (or (not x7236) x21400 (not x22495) x19753)
+:assumption (or x3028 x30432)
+:assumption (or (not x7887) (not x10780) (not x8731) (not x20686) x31051 x3042)
+:assumption (or x6969 x26293 (not x16394))
+:assumption (or x11413 x3734)
+:assumption (or (not x24546) (not x17235) x5726 (not x21070))
+:assumption (or (not x2169) (not x6374))
+:assumption (or (not x3340) (not x19911))
+:assumption (or (not x1090) (not x1215) x4739)
+:assumption (or x8098 x5559)
+:assumption (or x26502 x6795)
+:assumption (or x30633 x25743 x19465)
+:assumption (or (not x11775) (not x15939))
+:assumption (or x27673 x13029)
+:assumption (or (not x11114) (not x15831))
+:assumption (or (not x6650) (not x2462))
+:assumption (or x21131 x10546 x21550 (not x4369) (not x9918))
+:assumption (or (not x878) (not x13933))
+:assumption (or x21799 x18420)
+:assumption (or x2682 x3998)
+:assumption (or (not x6746) x30633 x717)
+:assumption (or (not x12964) x6375)
+:assumption (or x19721 (not x26520))
+:assumption (or (not x13861) x3621)
+:assumption (or (not x16629) (not x4683))
+:assumption (or x29203 (not x507) x4890 x3179 (not x16416))
+:assumption (or (not x6045) x18098 (not x25046) x1017)
+:assumption (or (not x13608) x17075 (not x31008))
+:assumption (or x13504 (not x22845))
+:assumption (or (not x21565) x16409)
+:assumption (or x18912 (not x16132))
+:assumption (or x29961 x6082 x17225)
+:assumption (or (not x8879) (not x9598) x7743)
+:assumption (or (not x16025) (not x21286))
+:assumption (or (not x28440) x23235)
+:assumption (or x5828 (not x28328))
+:assumption (or (not x24319) (not x9095))
+:assumption (or (not x26552) (not x18546) x8002 (not x23771) x24493 x4893)
+:assumption (or x271 (not x14155))
+:assumption (or (not x2265) (not x1760))
+:assumption (or (not x15795) x20623)
+:assumption (or (not x17646) (not x965))
+:assumption (or (not x31020) (not x26413))
+:assumption (or (not x18366) (not x18348))
+:assumption (or x16025 x24821 (not x1042))
+:assumption (or x2370 x24333)
+:assumption (or (not x19646) (not x8229))
+:assumption (or x9008 x11248)
+:assumption (or (not x9507) (not x45))
+:assumption (or (not x21831) (not x16806) x15738)
+:assumption (or x23844 x31033)
+:assumption (or x20000 x29649 x27931)
+:assumption (or x22174 (not x22802))
+:assumption (or (not x10806) x28790 (not x11911) x30015 (not x5604) (not x23443) (not x8691))
+:assumption (or (not x7371) x7410)
+:assumption (or x26395 x13956)
+:assumption (or (not x25052) x3711)
+:assumption (or (not x1125) x8579 x8002 (not x29176) (not x31229) (not x5947))
+:assumption (or (not x31919) x8050)
+:assumption (or (not x6594) (not x5486) x7327)
+:assumption (or x24330 x12987 x11428 x16656 (not x2519) x18595 (not x2333) x31385)
+:assumption (or (not x11783) (not x12261))
+:assumption (or (not x8126) x17078 x12967 (not x19183) (not x2138) (not x24482) x6911)
+:assumption (or x22390 x11006)
+:assumption (or (not x6361) (not x11063) (not x2165) x23926 x667 x16802 (not x10817))
+:assumption (or x20468 (not x4709) (not x6149) x25366)
+:assumption (or x24346 x5603 (not x480) x22604 x22855)
+:assumption (or (not x1876) (not x20807))
+:assumption (or (not x17377) x16466)
+:assumption (or x10567 (not x28033))
+:assumption (or (not x22019) x15663)
+:assumption (or (not x1531) x1182 x19547 (not x10103))
+:assumption (or (not x12102) x25489)
+:assumption (or x8851 x14848)
+:assumption (or (not x29251) x22876)
+:assumption (or x2407 (not x27078))
+:assumption (or x22180 x17198)
+:assumption (or (not x30859) x15749)
+:assumption (or x25647 x12141 (not x12628))
+:assumption (or x931 x31492)
+:assumption (or x10219 x4679)
+:assumption (or x27349 x4553)
+:assumption (or x27902 x13676)
+:assumption (or x9721 x19948 (not x31729) (not x8583) (not x30166) (not x12373) (not x28402) x27965)
+:assumption (or (not x12207) (not x19569))
+:assumption (or x25648 x17425)
+:assumption (or x23295 (not x4484))
+:assumption (or (not x31262) x27911 (not x4973) (not x13996))
+:assumption (or x18656 (not x8589))
+:assumption (or (not x2579) x13594)
+:assumption (or (not x31443) (not x1547))
+:assumption (or x30113 x11480)
+:assumption (or x24722 (not x9524))
+:assumption (or (not x8422) x762)
+:assumption (or x28966 (not x15491))
+:assumption (or x23226 (not x19677))
+:assumption (or x23747 x1998)
+:assumption (or (not x23301) x15204)
+:assumption (or (not x28229) x17058)
+:assumption (or (not x14429) x2683)
+:assumption (or (not x18188) (not x30066))
+:assumption (or (not x1228) (not x29325))
+:assumption (or x19372 (not x8602))
+:assumption (or x8638 (not x11448))
+:assumption (or x970 (not x9008) (not x9804) (not x5206) (not x5528))
+:assumption (or (not x27553) x9008)
+:assumption (or x31634 x5432)
+:assumption (or x6457 x15549)
+:assumption (or (not x18069) x26203)
+:assumption (or (not x20949) x5439)
+:assumption (or x21731 x19658)
+:assumption (or x21168 x16894)
+:assumption (or x6114 (not x17552))
+:assumption (or x10966 (not x9008) (not x10955))
+:assumption (or (not x17225) x19002 x18450 x6082)
+:assumption (or (not x31859) (not x1646))
+:assumption (or (not x26403) (not x15689))
+:assumption (or (not x16767) x21815)
+:assumption (or x5056 (not x10215))
+:assumption (or (not x13371) (not x13260))
+:assumption (or x21617 x19506)
+:assumption (or x21919 (not x2523) (not x6969))
+:assumption (or x24115 x6909 x12961)
+:assumption (or (not x8270) x10759)
+:assumption (or (not x24722) x9069)
+:assumption (or x8939 (not x10909))
+:assumption (or (not x23018) (not x10325) (not x30291))
+:assumption (or (not x29657) x2242)
+:assumption (or x10398 (not x5459))
+:assumption (or x9008 (not x31000))
+:assumption (or x9440 x5027)
+:assumption (or x15161 x5466)
+:assumption (or (not x22801) x21767)
+:assumption (or (not x20151) x1051)
+:assumption (or (not x31110) (not x24935))
+:assumption (or (not x25802) x23319)
+:assumption (or (not x31042) x18815)
+:assumption (or (not x31475) (not x26810) (not x21471) (not x14858))
+:assumption (or x4390 x26095)
+:assumption (or x11931 (not x11163))
+:assumption (or x26712 x3498)
+:assumption (or x4347 x6457)
+:assumption (or (not x21603) x3397)
+:assumption (or (not x20071) x8745)
+:assumption (or x1444 (not x7912))
+:assumption (or x1208 x23812)
+:assumption (or x13311 x5558)
+:assumption (or (not x31498) (not x14044))
+:assumption (or x30502 x6149 (not x23750) x28183 x3202)
+:assumption (or (not x18843) x8082)
+:assumption (or x23951 x20576 x27988 (not x918))
+:assumption (or (not x15366) (not x17116) (not x26958) (not x6351) (not x12578))
+:assumption (or x7899 (not x4775))
+:assumption (or x1857 x18519)
+:assumption (or x19634 (not x13277))
+:assumption (or x8964 (not x613))
+:assumption (or (not x4844) (not x29862))
+:assumption (or (not x28161) (not x26095) x2282 (not x4390))
+:assumption (or (not x19827) x16602)
+:assumption (or (not x12397) x26534)
+:assumption (or x10542 (not x26976))
+:assumption (or (not x7483) (not x28750) x3453 (not x16561) x28701)
+:assumption (or x22172 x18374)
+:assumption (or x13332 x24063)
+:assumption (or x28412 (not x1849))
+:assumption (or (not x41) x22698)
+:assumption (or x19470 (not x393))
+:assumption (or x4336 (not x24080))
+:assumption (or (not x8305) x24139)
+:assumption (or x19022 (not x30239))
+:assumption (or (not x28246) x20600)
+:assumption (or x31796 (not x827))
+:assumption (or (not x27899) x26100)
+:assumption (or x27833 (not x9930) x21298 x29115)
+:assumption (or x30185 (not x7923) (not x9531))
+:assumption (or x16148 x10949 (not x16752) x24574 (not x20038))
+:assumption (or (not x31775) x918)
+:assumption (or x26223 (not x28932))
+:assumption (or (not x1355) x16699)
+:assumption (or (not x19641) (not x30356))
+:assumption (or (not x30228) (not x19198))
+:assumption (or x8178 (not x11256) x27597 x12923)
+:assumption (or x26725 x9854)
+:assumption (or (not x28868) x19683)
+:assumption (or x14357 x29018)
+:assumption (or x20275 x28841)
+:assumption (or (not x29456) x13576)
+:assumption (or (not x16851) x28861)
+:assumption (or x2334 x5645)
+:assumption (or (not x19312) (not x7246))
+:assumption (or (not x22833) (not x11192))
+:assumption (or (not x11048) (not x6239))
+:assumption (or (not x7648) x25798)
+:assumption (or (not x22958) x8002)
+:assumption (or (not x28625) (not x11795) x25802 (not x1223) (not x8947) (not x480))
+:assumption (or x883 (not x4865))
+:assumption (or (not x21815) x30409 x7835 (not x6149) (not x16510))
+:assumption (or x1006 x15428)
+:assumption (or x13576 x18615 x6951 x14152)
+:assumption (or (not x16979) x9226)
+:assumption (or (not x28170) x27296 (not x3435) (not x30168) x7433)
+:assumption (or (not x19846) x3453)
+:assumption (or x27161 x10876 x31536 x29395 (not x9537) x11281)
+:assumption (or (not x7435) (not x17225))
+:assumption (or (not x18182) x2247)
+:assumption (or x4434 (not x5216))
+:assumption (or (not x153) (not x10669))
+:assumption (or x22308 (not x6279))
+:assumption (or x14297 (not x31162))
+:assumption (or (not x11271) x11506)
+:assumption (or x4695 x11798)
+:assumption (or x27903 (not x3160) (not x25779) x293)
+:assumption (or x19660 x7236)
+:assumption (or x21605 (not x17351))
+:assumption (or (not x29607) x10705)
+:assumption (or (not x27013) x19453)
+:assumption (or (not x21116) x31613)
+:assumption (or (not x7474) (not x10869))
+:assumption (or x25947 (not x6244))
+:assumption (or (not x26915) x23623)
+:assumption (or x28062 x6204)
+:assumption (or (not x22249) (not x5861))
+:assumption (or x7021 (not x5886))
+:assumption (or x31482 (not x19226))
+:assumption (or (not x17208) (not x2042))
+:assumption (or (not x22491) x7286)
+:assumption (or x25481 (not x873) (not x3746) (not x25355) (not x6365))
+:assumption (or (not x27880) (not x23244) (not x21823))
+:assumption (or (not x28361) (not x18835))
+:assumption (or x26432 x23948)
+:assumption (or x17104 (not x8170))
+:assumption (or (not x23136) (not x8971))
+:assumption (or x12780 x31349)
+:assumption (or x3802 x27881 (not x16539) x21182 (not x15960) x29453 x7000 x366)
+:assumption (or (not x31020) x10501)
+:assumption (or x16025 x27302)
+:assumption (or x23402 x21524)
+:assumption (or (not x489) x23470 (not x11497) (not x11174) (not x31599) x1393 (not x19269) x3397)
+:assumption (or (not x31526) (not x7930))
+:assumption (or x26908 (not x15102) (not x1643) x28835 (not x10393) x3377)
+:assumption (or (not x27485) x5819)
+:assumption (or (not x11856) (not x1433))
+:assumption (or x4058 x17207)
+:assumption (or (not x26355) (not x6351) x17957 (not x17116))
+:assumption (or (not x29420) (not x20678))
+:assumption (or (not x8725) (not x23592))
+:assumption (or (not x15859) (not x13316))
+:assumption (or (not x14863) x7682)
+:assumption (or (not x31777) x6646 x22125)
+:assumption (or x24179 (not x28643))
+:assumption (or x313 x31880)
+:assumption (or (not x6891) (not x30060))
+:assumption (or (not x17974) x21298)
+:assumption (or (not x16693) (not x3234))
+:assumption (or x26953 (not x28599))
+:assumption (or x31763 (not x26658))
+:assumption (or x7888 (not x17712))
+:assumption (or x12093 x24504 (not x25339))
+:assumption (or (not x22511) x17855)
+:assumption (or x5873 x23303)
+:assumption (or (not x24766) x211)
+:assumption (or (not x27865) (not x27386))
+:assumption (or (not x12349) (not x9470))
+:assumption (or x29799 (not x6368))
+:assumption (or x19544 x28047)
+:assumption (or x7939 x17847)
+:assumption (or x5528 x13841 (not x14649))
+:assumption (or x24107 (not x21653) x27211)
+:assumption (or (not x16952) x17359 x31897)
+:assumption (or x14464 x24655 (not x21653))
+:assumption (or x29851 x22718)
+:assumption (or x20536 (not x28691))
+:assumption (or x14603 (not x4522))
+:assumption (or (not x27094) (not x7845))
+:assumption (or x11277 x29392)
+:assumption (or x404 x27139)
+:assumption (or (not x29065) (not x827))
+:assumption (or x25423 x29164)
+:assumption (or (not x14144) (not x26193))
+:assumption (or x9519 x17990)
+:assumption (or x24737 x23244 x13956 x12420 x8002 x16426)
+:assumption (or x25124 (not x31829))
+:assumption (or x17860 (not x4664))
+:assumption (or x25139 (not x24541))
+:assumption (or (not x15917) (not x492))
+:assumption (or (not x2741) x5898)
+:assumption (or (not x22231) x27849)
+:assumption (or x2306 (not x1802))
+:assumption (or (not x16524) x26695)
+:assumption (or (not x7358) x15885 x13634)
+:assumption (or x15532 (not x15280))
+:assumption (or x4692 (not x28240) x21263 x3232 (not x20754) x1964 x18652 (not x9625) x4585 (not x2125))
+:assumption (or x21653 (not x15353))
+:assumption (or (not x23244) (not x27701) x20325)
+:assumption (or x12672 x16487)
+:assumption (or x20434 (not x20550) x805)
+:assumption (or (not x8615) x22055 (not x30728) (not x31196))
+:assumption (or (not x11164) (not x28294))
+:assumption (or (not x24782) x6575)
+:assumption (or (not x14713) x24555)
+:assumption (or x24882 (not x17153))
+:assumption (or (not x19819) (not x4279))
+:assumption (or (not x24896) x21595)
+:assumption (or (not x15808) (not x18017))
+:assumption (or x13693 x415)
+:assumption (or x8812 (not x24434) (not x20903) x20478)
+:assumption (or (not x14722) (not x24031))
+:assumption (or (not x31230) (not x22819))
+:assumption (or (not x17763) x6609 (not x8710) (not x30723) (not x2286) (not x1535) x31903 x26479 (not x12565))
+:assumption (or (not x16802) (not x10025))
+:assumption (or x14628 x429)
+:assumption (or (not x27888) x26455)
+:assumption (or x12194 (not x27903))
+:assumption (or x4575 (not x6750))
+:assumption (or (not x20482) (not x7872))
+:assumption (or (not x16764) (not x25659) (not x239))
+:assumption (or x8947 x2310)
+:assumption (or (not x8220) x28362 (not x4416) x1173 x7900 x27011 x29930 x14417 x28797)
+:assumption (or x26544 (not x1633))
+:assumption (or x11834 x9681)
+:assumption (or (not x3647) (not x18858))
+:assumption (or x13956 x20723 (not x16267))
+:assumption (or x31627 (not x15342))
+:assumption (or x16510 x30)
+:assumption (or x29143 x5120)
+:assumption (or (not x21565) (not x10576))
+:assumption (or (not x24057) x30035)
+:assumption (or x7528 (not x24110))
+:assumption (or (not x29346) (not x10882))
+:assumption (or (not x25077) x17374)
+:assumption (or (not x3671) x15694 x5886)
+:assumption (or (not x11266) x18956)
+:assumption (or (not x20927) x16721 x22918)
+:assumption (or x27725 x1054 x25168)
+:assumption (or (not x3215) (not x17412))
+:assumption (or (not x4041) x4803)
+:assumption (or (not x19589) x24358)
+:assumption (or (not x31603) x4650 (not x29312))
+:assumption (or x7007 x20801)
+:assumption (or x699 x18374)
+:assumption (or (not x15922) (not x14476))
+:assumption (or x10239 (not x28314) (not x21145) x10278)
+:assumption (or x9961 x28231)
+:assumption (or (not x7235) (not x23244))
+:assumption (or x1733 (not x8398))
+:assumption (or x13576 (not x27860))
+:assumption (or (not x9008) (not x20055))
+:assumption (or (not x4454) x1631)
+:assumption (or (not x8002) x23456)
+:assumption (or (not x18526) x31450)
+:assumption (or x8002 (not x8705))
+:assumption (or x1866 (not x8483))
+:assumption (or x14274 (not x28469))
+:assumption (or (not x14896) (not x30067))
+:assumption (or (not x24422) (not x9179))
+:assumption (or (not x20700) x5693)
+:assumption (or x23429 (not x18567))
+:assumption (or x25257 (not x14632) x17596 x21462 (not x5565))
+:assumption (or x27154 (not x83))
+:assumption (or x2627 x8313)
+:assumption (or (not x16994) x19780 x29959)
+:assumption (or x29959 x6594 x8776)
+:assumption (or (not x6247) x29045)
+:assumption (or x15580 x8361)
+:assumption (or (not x1137) (not x26250))
+:assumption (or (not x4348) x21095)
+:assumption (or (not x29705) x4358)
+:assumption (or x1134 (not x12242))
+:assumption (or (not x13586) (not x24031))
+:assumption (or x28023 (not x2824))
+:assumption (or (not x14517) x3552)
+:assumption (or x27993 (not x7859))
+:assumption (or x25517 x31046)
+:assumption (or (not x8235) x15901)
+:assumption (or x31280 (not x18765))
+:assumption (or (not x2810) (not x1800))
+:assumption (or x26850 x14711)
+:assumption (or x30598 x27991)
+:assumption (or (not x11102) x10837)
+:assumption (or (not x2772) (not x16194) x30800 x29902 (not x5841))
+:assumption (or (not x10296) x17597)
+:assumption (or x14244 (not x5747))
+:assumption (or (not x6458) x20417)
+:assumption (or (not x17229) (not x16649))
+:assumption (or (not x29606) x24625)
+:assumption (or (not x10246) x18190)
+:assumption (or x22286 x9008)
+:assumption (or x29849 x9374)
+:assumption (or x6195 (not x25659))
+:assumption (or x21550 (not x14071))
+:assumption (or x218 x21349 x18059)
+:assumption (or (not x18859) (not x3568))
+:assumption (or (not x1203) x25659)
+:assumption (or (not x26233) x27630)
+:assumption (or (not x2702) x18165)
+:assumption (or (not x12585) (not x21781))
+:assumption (or (not x4161) (not x20564))
+:assumption (or x1068 (not x25711))
+:assumption (or x20723 x6269)
+:assumption (or x27741 x20138)
+:assumption (or (not x3442) x18897)
+:assumption (or x20794 (not x25117))
+:assumption (or x28743 (not x25044))
+:assumption (or x11492 x5580)
+:assumption (or x17037 x14733 x28189 x27882 (not x17997) x5081 x9401 (not x9124))
+:assumption (or (not x964) x24805)
+:assumption (or (not x18050) x14786)
+:assumption (or x29098 (not x9336) x5510 (not x6377) x26091 x776 x26740 x1283)
+:assumption (or (not x3863) (not x23248))
+:assumption (or (not x13300) (not x24400))
+:assumption (or (not x14434) x25908)
+:assumption (or x2076 x12874)
+:assumption (or x12359 x20091)
+:assumption (or x1645 x5149)
+:assumption (or (not x8164) x15205)
+:assumption (or x19603 (not x6176))
+:assumption (or (not x31552) (not x29862))
+:assumption (or x22882 x19685 (not x16936) x18963 (not x8716) x10214)
+:assumption (or (not x4026) x16728)
+:assumption (or (not x24468) x5137)
+:assumption (or x1426 (not x7513))
+:assumption (or (not x12579) (not x18931))
+:assumption (or (not x23729) (not x20547) x9008)
+:assumption (or (not x16962) x12870)
+:assumption (or x9942 (not x21690))
+:assumption (or (not x2943) (not x18722) x30380 x21360 x31422 (not x15211) x26789)
+:assumption (or (not x29028) (not x21815) (not x31820))
+:assumption (or x22309 (not x11320))
+:assumption (or x30751 (not x27017))
+:assumption (or x31850 x17676)
+:assumption (or (not x4596) x20673)
+:assumption (or (not x12942) x9455)
+:assumption (or (not x11857) (not x7655))
+:assumption (or (not x20482) (not x17035) (not x27616))
+:assumption (or x1393 x13445 (not x9072))
+:assumption (or x6221 x9074)
+:assumption (or (not x9590) x29634)
+:assumption (or x4994 (not x28099))
+:assumption (or x31103 x1727)
+:assumption (or (not x2898) x8412)
+:assumption (or (not x15274) (not x31873))
+:assumption (or x1521 (not x14668))
+:assumption (or (not x21677) (not x29939))
+:assumption (or x2483 (not x22233))
+:assumption (or (not x21298) (not x2979))
+:assumption (or (not x9053) x8164)
+:assumption (or x22071 x17160)
+:assumption (or (not x27147) (not x19394))
+:assumption (or (not x10020) (not x5865))
+:assumption (or (not x10510) (not x23683))
+:assumption (or x18829 x23220)
+:assumption (or x17262 x15193)
+:assumption (or x23399 x4061 (not x13263))
+:assumption (or x8122 (not x17900))
+:assumption (or (not x22712) x3260 x21633 x20443 (not x17654) x19246 (not x4758) (not x17577))
+:assumption (or x2914 x31609)
+:assumption (or x16453 x8402)
+:assumption (or (not x9898) (not x2824))
+:assumption (or (not x30261) (not x14746))
+:assumption (or (not x3576) x13964)
+:assumption (or (not x19525) (not x20195))
+:assumption (or x20794 (not x824))
+:assumption (or x503 x7866)
+:assumption (or (not x8002) x7535)
+:assumption (or x14580 x11166 (not x20958))
+:assumption (or x25818 x8401)
+:assumption (or x18533 x9711)
+:assumption (or x15171 x19388)
+:assumption (or (not x16756) x8867)
+:assumption (or (not x4727) x14915)
+:assumption (or (not x22051) (not x11879))
+:assumption (or (not x14077) x19889)
+:assumption (or x19285 x8601)
+:assumption (or (not x2606) (not x19251))
+:assumption (or (not x23146) x31511)
+:assumption (or x791 (not x9388) x24275 x25373 x27200 (not x9985) (not x23861))
+:assumption (or (not x20400) (not x23244))
+:assumption (or x19952 (not x17122))
+:assumption (or x888 x9008 x18404 x17680 x11116 x672 (not x29090) x11142)
+:assumption (or (not x442) (not x12851))
+:assumption (or x7149 x7106)
+:assumption (or x9008 x8495)
+:assumption (or (not x28599) (not x9008))
+:assumption (or x26127 x27059)
+:assumption (or (not x22076) (not x21690))
+:assumption (or x347 (not x18857))
+:assumption (or (not x7265) (not x19428))
+:assumption (or (not x4229) (not x14219))
+:assumption (or (not x11991) (not x26224))
+:assumption (or (not x1207) x1551)
+:assumption (or x3330 x2289)
+:assumption (or x29325 x23821)
+:assumption (or (not x19872) x24040)
+:assumption (or x16510 (not x5187))
+:assumption (or x15478 (not x26578))
+:assumption (or x27939 x11619)
+:assumption (or (not x2876) (not x11650))
+:assumption (or (not x22331) (not x23442))
+:assumption (or x23482 x24171)
+:assumption (or x4504 x1657 (not x10411) (not x17542) (not x26061))
+:assumption (or x17054 x30446)
+:assumption (or x27738 (not x9956) (not x19855))
+:assumption (or (not x28007) (not x13913))
+:assumption (or (not x5716) x23244)
+:assumption (or (not x24734) x28990)
+:assumption (or x27537 (not x6873) x14253)
+:assumption (or x20854 (not x9334))
+:assumption (or (not x1393) x5837 (not x5321))
+:assumption (or x4319 (not x22855))
+:assumption (or x15327 (not x17115))
+:assumption (or (not x9894) (not x3185))
+:assumption (or (not x20617) (not x8994) x29126 (not x1476) x15337)
+:assumption (or (not x30689) (not x24695))
+:assumption (or x4885 x12578)
+:assumption (or (not x8198) (not x31605))
+:assumption (or x28016 x21450 x31134 x29606)
+:assumption (or (not x31897) x16952)
+:assumption (or x28436 x8461 x21708)
+:assumption (or x16579 (not x26459))
+:assumption (or x24446 x2524)
+:assumption (or x25368 x9025)
+:assumption (or (not x7962) x20324)
+:assumption (or (not x25623) x4689)
+:assumption (or (not x26025) x1017 (not x4649) (not x28765) (not x8739))
+:assumption (or (not x17991) (not x16550))
+:assumption (or x9417 x8800)
+:assumption (or (not x8081) (not x13956) x23176)
+:assumption (or x29679 (not x28023))
+:assumption (or (not x14976) (not x14268) x15488 x27976 x376)
+:assumption (or x25800 x29214 x19108 (not x6238) (not x3001) x191)
+:assumption (or (not x21108) x24346)
+:assumption (or (not x1660) (not x16701))
+:assumption (or (not x2115) x4004)
+:assumption (or x5436 (not x15667))
+:assumption (or (not x9725) (not x3001))
+:assumption (or x30056 x28265)
+:assumption (or (not x3168) x9304)
+:assumption (or x30930 x3818)
+:assumption (or x28479 x6406)
+:assumption (or x21423 (not x30429))
+:assumption (or x4882 (not x30154))
+:assumption (or (not x20818) (not x11543))
+:assumption (or x22774 (not x21580))
+:assumption (or (not x24958) x13941)
+:assumption (or (not x9409) (not x12658))
+:assumption (or x17188 x16906 x142)
+:assumption (or x16368 (not x9453))
+:assumption (or x6330 x28926 x25825 x12315 (not x4844) (not x12523))
+:assumption (or x15477 x3236)
+:assumption (or (not x15042) (not x21629) (not x19695) x28063)
+:assumption (or (not x20087) x18994 x31702)
+:assumption (or (not x23244) x25799)
+:assumption (or x21030 (not x18070))
+:assumption (or x16471 x30232)
+:assumption (or x26109 (not x17234))
+:assumption (or x10857 (not x22623))
+:assumption (or x24756 (not x23510) x16370 (not x29312))
+:assumption (or x27118 (not x6969))
+:assumption (or (not x26647) (not x16511) x18830 (not x19810))
+:assumption (or (not x9329) (not x16835))
+:assumption (or x29051 x14336)
+:assumption (or (not x4451) (not x30214))
+:assumption (or x9563 (not x21978))
+:assumption (or x12020 x6554)
+:assumption (or x11861 x25775)
+:assumption (or x7339 x17152)
+:assumption (or (not x10524) (not x27068))
+:assumption (or (not x22832) x17874)
+:assumption (or x30055 (not x18042))
+:assumption (or x12208 x14696 x27987 x11195 x706 x31018 (not x8332) (not x13372))
+:assumption (or x28688 x21298)
+:assumption (or x31842 x4530)
+:assumption (or x11873 (not x15717))
+:assumption (or (not x24099) (not x23775))
+:assumption (or x5868 (not x15601) (not x24952))
+:assumption (or x28805 (not x14275))
+:assumption (or x28242 x14871)
+:assumption (or (not x7431) x2861)
+:assumption (or x24455 (not x21312))
+:assumption (or (not x12225) (not x25306) (not x23776) x21406 x10433)
+:assumption (or (not x10728) x2133)
+:assumption (or x14016 x28185)
+:assumption (or x15133 (not x17041))
+:assumption (or x31860 (not x9662))
+:assumption (or x30170 (not x16737) x12506 (not x1106))
+:assumption (or x27702 x14783)
+:assumption (or x19718 x21340)
+:assumption (or x21919 x2379)
+:assumption (or (not x21475) x2498)
+:assumption (or (not x2080) (not x25659))
+:assumption (or (not x30633) (not x9909) (not x8197))
+:assumption (or x28438 (not x9790))
+:assumption (or x6969 x15462)
+:assumption (or (not x6066) (not x13956))
+:assumption (or x15590 (not x7835))
+:assumption (or x2410 x25431)
+:assumption (or x16447 x9518)
+:assumption (or x14641 (not x17478))
+:assumption (or (not x21765) x19674)
+:assumption (or (not x12741) (not x28320))
+:assumption (or (not x24557) (not x3641) (not x4141) (not x20426) x16218)
+:assumption (or (not x15808) (not x4559))
+:assumption (or (not x30805) x11745 (not x18724))
+:assumption (or x7508 (not x19350))
+:assumption (or (not x28757) (not x25659))
+:assumption (or (not x31522) x4124)
+:assumption (or x14305 (not x7690))
+:assumption (or (not x14561) (not x22328))
+:assumption (or x8138 x12368)
+:assumption (or x9717 (not x873))
+:assumption (or x2775 (not x480))
+:assumption (or (not x3101) x28509)
+:assumption (or x17503 (not x6862) (not x8961))
+:assumption (or x150 x30339)
+:assumption (or (not x6381) (not x1604))
+:assumption (or (not x6207) (not x28790))
+:assumption (or (not x28436) (not x22880))
+:assumption (or (not x4515) (not x9820) (not x26664) x26985)
+:assumption (or x28712 x26904)
+:assumption (or x22361 x19401)
+:assumption (or (not x10336) (not x2402))
+:assumption (or (not x29181) (not x15442) (not x26877) x6420 (not x22995) (not x24387) x9001)
+:assumption (or x5271 x11333)
+:assumption (or (not x27013) (not x7106))
+:assumption (or x28438 (not x22204))
+:assumption (or x25474 x7118)
+:assumption (or x11513 x27413)
+:assumption (or (not x21298) (not x24166))
+:assumption (or (not x18018) x19911 x5308 (not x26181) x10549)
+:assumption (or x13758 x12578)
+:assumption (or x14923 (not x28969))
+:assumption (or (not x22271) (not x10487))
+:assumption (or x23783 x22329)
+:assumption (or (not x20534) x10095)
+:assumption (or x26519 x19677 (not x23226))
+:assumption (or x13782 x21601 x14517 (not x22361) (not x28895) (not x24690))
+:assumption (or x6617 (not x10451))
+:assumption (or x13956 x12570)
+:assumption (or x8302 (not x21366))
+:assumption (or (not x10383) (not x13081))
+:assumption (or (not x21675) x1393)
+:assumption (or (not x8224) x29651)
+:assumption (or (not x1242) (not x1877))
+:assumption (or x22034 x5324)
+:assumption (or x18189 (not x26192))
+:assumption (or (not x27670) (not x20521))
+:assumption (or x6911 (not x20682))
+:assumption (or x10719 x15399)
+:assumption (or (not x15464) x14433)
+:assumption (or x16510 x3494 x6443)
+:assumption (or (not x16273) x15979)
+:assumption (or (not x19593) x6602)
+:assumption (or (not x1117) (not x9008))
+:assumption (or x4858 (not x1937) x8760 (not x31766) x13596 (not x29335) (not x7854))
+:assumption (or (not x5759) (not x14642))
+:assumption (or (not x14424) x13761)
+:assumption (or (not x8719) (not x8770))
+:assumption (or x21656 (not x10989))
+:assumption (or x5930 (not x11537))
+:assumption (or x29537 (not x1726))
+:assumption (or (not x11140) x17688)
+:assumption (or x7227 x8599)
+:assumption (or (not x772) x1872)
+:assumption (or x21252 x31599)
+:assumption (or x17500 x6596)
+:assumption (or x29789 x22131)
+:assumption (or (not x28196) x20150)
+:assumption (or x29765 (not x10097))
+:assumption (or x7835 x31932)
+:assumption (or (not x2915) (not x20964))
+:assumption (or x13170 x11996 x14839)
+:assumption (or x30957 (not x4453) (not x27957))
+:assumption (or (not x17522) x22376)
+:assumption (or x5991 (not x15273))
+:assumption (or x3790 (not x19893))
+:assumption (or (not x24453) x28206 (not x22946) (not x17047))
+:assumption (or x2484 (not x28341) x1260)
+:assumption (or (not x15450) x26132)
+:assumption (or (not x24223) x30954)
+:assumption (or (not x24664) x17690)
+:assumption (or (not x31134) (not x16957))
+:assumption (or x22654 (not x2175))
+:assumption (or (not x18235) (not x14048))
+:assumption (or (not x29235) (not x11631))
+:assumption (or (not x22374) (not x10549))
+:assumption (or (not x3565) (not x26955))
+:assumption (or x23220 (not x15701))
+:assumption (or (not x17311) x18042)
+:assumption (or x11842 x17362)
+:assumption (or x29033 (not x5246))
+:assumption (or x13451 (not x4711) x8973 (not x2313) x25163 (not x25941) (not x8013) x2127)
+:assumption (or (not x8062) x28130)
+:assumption (or x8575 x14455)
+:assumption (or (not x31023) x19263)
+:assumption (or x3533 x27071)
+:assumption (or x19603 x10504)
+:assumption (or x8586 x7941 (not x30992) x14084)
+:assumption (or x21191 (not x30208) x9713 x9146)
+:assumption (or (not x4036) x6681)
+:assumption (or x13024 (not x25659))
+:assumption (or x6486 (not x2673))
+:assumption (or x22867 (not x24471))
+:assumption (or (not x21042) (not x22555))
+:assumption (or x30515 x8002 (not x12379) x6185)
+:assumption (or x3109 x29442)
+:assumption (or x24225 (not x17048))
+:assumption (or x2614 (not x25805))
+:assumption (or x5804 (not x26752))
+:assumption (or x14248 (not x13417) x10909 (not x26897))
+:assumption (or x5616 x26254 x27306 x17678)
+:assumption (or x7741 (not x1273))
+:assumption (or (not x26546) (not x9671))
+:assumption (or x16365 (not x27666) x5135 (not x16880) x12228 (not x17731))
+:assumption (or (not x15831) (not x519))
+:assumption (or x11499 x25593)
+:assumption (or (not x5739) (not x26196))
+:assumption (or x9775 (not x19603))
+:assumption (or (not x14523) x14810)
+:assumption (or (not x8555) (not x6167))
+:assumption (or x29219 x4055)
+:assumption (or x30888 (not x22651))
+:assumption (or (not x9959) x22906)
+:assumption (or (not x21653) x8684)
+:assumption (or x2379 (not x27488))
+:assumption (or x18705 (not x26122))
+:assumption (or (not x13791) (not x26724))
+:assumption (or x21298 (not x15618))
+:assumption (or (not x565) x13901)
+:assumption (or x6075 (not x29567))
+:assumption (or (not x16315) x3782)
+:assumption (or (not x28261) (not x1119))
+:assumption (or (not x18511) (not x20961))
+:assumption (or x23345 (not x12216))
+:assumption (or x13561 (not x15298))
+:assumption (or (not x16849) (not x17835))
+:assumption (or (not x16802) x9399 (not x27675))
+:assumption (or x23939 x5787)
+:assumption (or x10753 (not x3205))
+:assumption (or x9299 (not x27097))
+:assumption (or x24723 x8124)
+:assumption (or (not x16227) x9008 (not x15233) x21745 x30767 (not x31217) x26386 (not x12402))
+:assumption (or (not x19930) x3435 (not x9283) x396)
+:assumption (or (not x8525) x13210)
+:assumption (or x3533 (not x4693))
+:assumption (or x26432 (not x12436))
+:assumption (or x22444 (not x2854))
+:assumption (or (not x2673) (not x22393))
+:assumption (or (not x31282) x6605)
+:assumption (or x18997 x25271)
+:assumption (or (not x25839) x24525)
+:assumption (or x5026 (not x20051))
+:assumption (or (not x25927) (not x20745))
+:assumption (or x18793 (not x22767))
+:assumption (or (not x731) (not x13005))
+:assumption (or x29145 (not x24888))
+:assumption (or (not x18770) (not x2472))
+:assumption (or x30464 x8769)
+:assumption (or (not x30204) x27467)
+:assumption (or (not x14549) x17624 x1590 x28973 (not x26780))
+:assumption (or x5355 x17024 x5387)
+:assumption (or x6988 (not x18263))
+:assumption (or (not x9315) x25520)
+:assumption (or (not x5061) (not x9779))
+:assumption (or (not x1076) x20128)
+:assumption (or x19626 x3399)
+:assumption (or (not x12148) x7517 x28567)
+:assumption (or x12937 (not x5518))
+:assumption (or (not x26074) (not x8314))
+:assumption (or (not x1582) (not x16299))
+:assumption (or x2869 (not x17313))
+:assumption (or (not x19948) x4531)
+:assumption (or (not x29553) x28634)
+:assumption (or x26102 x3933 (not x12760) x6296)
+:assumption (or x21484 (not x10825))
+:assumption (or x23117 x13954)
+:assumption (or x13434 (not x12841))
+:assumption (or (not x3076) x24097)
+:assumption (or (not x4067) (not x8454))
+:assumption (or (not x20060) (not x25141) (not x20735))
+:assumption (or x498 x16711)
+:assumption (or x7752 (not x30906))
+:assumption (or x15393 (not x15797))
+:assumption (or x28385 x21812)
+:assumption (or (not x29063) x7001)
+:assumption (or x27036 x13398 x26178)
+:assumption (or (not x23000) (not x6340))
+:assumption (or x25302 x10435)
+:assumption (or (not x30700) x21548)
+:assumption (or x10127 x22678)
+:assumption (or (not x5815) x19879)
+:assumption (or (not x27282) x10053)
+:assumption (or x19102 x29753)
+:assumption (or (not x19992) x30120)
+:assumption (or (not x16856) x29623)
+:assumption (or (not x13228) x15956)
+:assumption (or x29660 x11195 x9855 (not x13372) x31018 x706 (not x8332) x27987)
+:assumption (or (not x5825) (not x15659))
+:assumption (or (not x12498) x15659)
+:assumption (or (not x3635) (not x31632) (not x15866))
+:assumption (or (not x8206) (not x24608))
+:assumption (or x29662 (not x26663))
+:assumption (or (not x17844) x11293)
+:assumption (or x21633 (not x8852) x16566)
+:assumption (or x17855 (not x1249) (not x11963))
+:assumption (or (not x8002) (not x15311))
+:assumption (or x28332 (not x31819))
+:assumption (or (not x11515) x6606 (not x27319))
+:assumption (or x2344 (not x9672))
+:assumption (or (not x6770) (not x6401))
+:assumption (or (not x6022) (not x3260))
+:assumption (or (not x31734) (not x28232))
+:assumption (or x4034 (not x6289))
+:assumption (or (not x11623) (not x12071))
+:assumption (or (not x21747) (not x7537))
+:assumption (or (not x19283) x3916)
+:assumption (or (not x6556) x30532)
+:assumption (or x20039 x28760)
+:assumption (or (not x1348) (not x1834))
+:assumption (or x10717 (not x1582))
+:assumption (or x22959 (not x23096))
+:assumption (or x15385 x12191)
+:assumption (or x13337 x2127)
+:assumption (or x21926 x3345)
+:assumption (or x25941 (not x13451))
+:assumption (or (not x13464) (not x15809))
+:assumption (or (not x8120) (not x25278))
+:assumption (or x10407 (not x4622))
+:assumption (or (not x21653) (not x9807) x14303)
+:assumption (or x29312 x20801)
+:assumption (or x320 (not x4538))
+:assumption (or x8984 (not x20924))
+:assumption (or (not x18637) x20778)
+:assumption (or x29618 (not x31638) x14173 (not x16043) x17166 x832 x15451 (not x14705))
+:assumption (or (not x10438) (not x6328))
+:assumption (or (not x3935) (not x14102))
+:assumption (or x11281 (not x24432))
+:assumption (or x27375 (not x15881))
+:assumption (or (not x13770) x14252)
+:assumption (or x19992 (not x425) (not x28913) x24521)
+:assumption (or (not x4972) (not x4915))
+:assumption (or x26291 (not x16907) x25006 (not x15400))
+:assumption (or x31931 (not x11579))
+:assumption (or x16793 (not x10791))
+:assumption (or (not x12618) (not x24087))
+:assumption (or (not x11293) x17844)
+:assumption (or x16240 x16422)
+:assumption (or x4279 (not x1596))
+:assumption (or x19428 x17550)
+:assumption (or x25004 x24097)
+:assumption (or x25311 x19141)
+:assumption (or (not x2336) x24826)
+:assumption (or x24278 (not x16365) x23801)
+:assumption (or x15870 x12875)
+:assumption (or (not x31735) (not x1586))
+:assumption (or x31929 x12834)
+:assumption (or x23282 (not x7620))
+:assumption (or (not x22858) x3748)
+:assumption (or x21944 (not x9008))
+:assumption (or (not x23870) x11492)
+:assumption (or x8451 x10571)
+:assumption (or x9058 (not x1362))
+:assumption (or x12277 x15324)
+:assumption (or (not x7660) x13351)
+:assumption (or (not x31553) (not x30122))
+:assumption (or x27829 (not x15130))
+:assumption (or (not x6381) x7993)
+:assumption (or x11012 (not x14839) x22165)
+:assumption (or (not x20377) x13146)
+:assumption (or x19783 (not x6780))
+:assumption (or x14931 x28844)
+:assumption (or x17814 (not x21744))
+:assumption (or (not x31122) x22682)
+:assumption (or (not x28220) (not x23244))
+:assumption (or (not x13751) (not x21531))
+:assumption (or x16216 (not x814))
+:assumption (or (not x451) x5394 x30349)
+:assumption (or x23516 x17930)
+:assumption (or (not x22159) x31005)
+:assumption (or (not x22853) (not x18281))
+:assumption (or x10903 x23328 x16025)
+:assumption (or (not x21802) x499)
+:assumption (or (not x19587) (not x11431))
+:assumption (or x24346 (not x7898))
+:assumption (or (not x24967) x26519)
+:assumption (or (not x23116) (not x9008) x27169 x26892 (not x5528))
+:assumption (or (not x5528) x1542 (not x16809) (not x21233) (not x9008))
+:assumption (or x7659 (not x22218))
+:assumption (or x13407 (not x17165))
+:assumption (or x13811 x18580)
+:assumption (or (not x3164) x918)
+:assumption (or (not x28779) (not x9466) (not x16127) (not x3585) (not x29722) x6385)
+:assumption (or (not x20021) (not x1523))
+:assumption (or x27941 x30133)
+:assumption (or x11868 (not x12116))
+:assumption (or x8602 x15588)
+:assumption (or x7159 (not x23279) x13110)
+:assumption (or (not x31336) (not x11882) x16907)
+:assumption (or x22646 (not x811))
+:assumption (or x30255 (not x5528) x31672 (not x9008) (not x14517))
+:assumption (or x29179 x19690)
+:assumption (or x27526 (not x15214))
+:assumption (or (not x9217) (not x24249))
+:assumption (or (not x24306) (not x22328))
+:assumption (or (not x17351) x6650 x2462)
+:assumption (or x12672 (not x13702))
+:assumption (or (not x17862) (not x2875))
+:assumption (or (not x8002) (not x4420))
+:assumption (or (not x16262) x15523)
+:assumption (or (not x17159) x28646)
+:assumption (or (not x17774) x14930)
+:assumption (or x25091 (not x30265))
+:assumption (or (not x21815) (not x11005) (not x3782) (not x25649) (not x16510) x12856 (not x2334))
+:assumption (or x27310 x13260 x7337 (not x18105))
+:assumption (or (not x25440) x26995 (not x14866) x12571 (not x5528) x9682)
+:assumption (or x7286 x8268)
+:assumption (or (not x5955) (not x13956))
+:assumption (or x1939 (not x29496))
+:assumption (or x17469 x30138)
+:assumption (or x30742 x6280)
+:assumption (or x16234 x9261)
+:assumption (or x15712 x27633)
+:assumption (or x27458 x13657 (not x21653))
+:assumption (or x12442 (not x355))
+:assumption (or (not x16215) x6838)
+:assumption (or x2855 x20210)
+:assumption (or (not x29974) x20949)
+:assumption (or (not x8573) x81)
+:assumption (or x10755 x14970)
+:assumption (or (not x29565) x9008)
+:assumption (or (not x22531) x29642)
+:assumption (or x2348 x20888)
+:assumption (or x16510 (not x18519) (not x9761))
+:assumption (or x22986 x18334)
+:assumption (or x22672 x22030)
+:assumption (or x23132 x5143)
+:assumption (or (not x8732) (not x8714))
+:assumption (or (not x22942) x29312 (not x7611))
+:assumption (or x6171 x30509)
+:assumption (or x14459 x30582)
+:assumption (or (not x28309) x16002)
+:assumption (or x5427 (not x27514))
+:assumption (or x24561 (not x9008))
+:assumption (or (not x13683) (not x4265))
+:assumption (or x28920 (not x14206))
+:assumption (or x11246 (not x13323))
+:assumption (or (not x26908) x15102)
+:assumption (or x10501 (not x23996))
+:assumption (or x30635 x21630)
+:assumption (or x2600 x6969 (not x13508))
+:assumption (or (not x142) (not x19299))
+:assumption (or (not x22873) x4659)
+:assumption (or (not x5923) (not x16131) x16717)
+:assumption (or x14940 (not x18500))
+:assumption (or x25260 (not x29890))
+:assumption (or (not x4752) x1819)
+:assumption (or x16285 x4922)
+:assumption (or (not x16374) (not x20667))
+:assumption (or x30170 x12506 (not x4246) x4136)
+:assumption (or x29932 x8919 x25224 x30382 (not x20242))
+:assumption (or x1443 x4691)
+:assumption (or x14945 x23453)
+:assumption (or x20629 (not x29911))
+:assumption (or x4336 x20917)
+:assumption (or (not x21115) x21416 x2325 x14812 (not x15952) x24109 x2041 (not x12422) x24173)
+:assumption (or (not x28541) x16124 (not x8083) (not x31829))
+:assumption (or (not x7197) x3806)
+:assumption (or x24175 (not x14839))
+:assumption (or (not x18565) x17454)
+:assumption (or (not x28584) (not x20835) (not x11693))
+:assumption (or (not x26432) x2223 (not x16716))
+:assumption (or (not x3001) x297)
+:assumption (or (not x7745) (not x536))
+:assumption (or x6662 x11489)
+:assumption (or (not x15216) (not x16374) x15054 (not x30164) (not x27733) (not x8954) x31493 x10795)
+:assumption (or x24826 (not x14806))
+:assumption (or (not x13260) x17178)
+:assumption (or (not x30249) (not x3897))
+:assumption (or (not x5714) (not x30850))
+:assumption (or x7811 (not x1621))
+:assumption (or (not x1820) x23553)
+:assumption (or x30346 (not x31829))
+:assumption (or (not x23023) x14192)
+:assumption (or (not x21323) x16154)
+:assumption (or (not x7510) x28242 x17301)
+:assumption (or x23253 (not x21298) (not x9333) (not x5742))
+:assumption (or x19242 x16573)
+:assumption (or x20816 (not x2580))
+:assumption (or x6585 (not x27033))
+:assumption (or (not x23413) x22866 (not x2934))
+:assumption (or (not x28130) (not x30430))
+:assumption (or (not x28645) (not x11856))
+:assumption (or x17389 (not x19032))
+:assumption (or x26007 (not x23292))
+:assumption (or x14528 (not x18967) (not x25659))
+:assumption (or (not x14544) (not x28973))
+:assumption (or (not x23024) x9406)
+:assumption (or x30896 (not x873))
+:assumption (or x2830 (not x16849))
+:assumption (or (not x453) x345)
+:assumption (or (not x29656) x15720)
+:assumption (or (not x2988) x2626)
+:assumption (or (not x17640) x1487)
+:assumption (or (not x6299) (not x15855))
+:assumption (or (not x29127) (not x13639))
+:assumption (or x20930 (not x31019) (not x29495) x19781 x8603 (not x26119) x29997)
+:assumption (or x18529 x8219)
+:assumption (or (not x28626) x13773)
+:assumption (or x3014 (not x10909))
+:assumption (or x3021 (not x2512))
+:assumption (or x17756 x27593)
+:assumption (or x15899 (not x29793))
+:assumption (or (not x20568) (not x29882))
+:assumption (or (not x16957) x16510)
+:assumption (or (not x4070) (not x10388))
+:assumption (or x29283 (not x21298))
+:assumption (or x20223 (not x18407))
+:assumption (or (not x4756) (not x11485))
+:assumption (or x29551 x26647)
+:assumption (or x20480 x28748)
+:assumption (or x22741 (not x22247))
+:assumption (or x8229 (not x3931))
+:assumption (or x9008 x4364)
+:assumption (or x25892 x8209)
+:assumption (or (not x9937) x11873)
+:assumption (or (not x3519) (not x11919) x1363 (not x27245) x20093)
+:assumption (or x19771 x11177)
+:assumption (or (not x1562) x18519)
+:assumption (or (not x27000) (not x25469))
+:assumption (or x22217 x24042 x16229 x3215)
+:assumption (or x8839 (not x26083))
+:assumption (or x21867 x27045)
+:assumption (or x12544 x17397)
+:assumption (or (not x20550) (not x14059))
+:assumption (or (not x26177) x5984 (not x30498) (not x7835))
+:assumption (or (not x7474) (not x723))
+:assumption (or x1393 x4644 (not x8639))
+:assumption (or x6964 (not x19992))
+:assumption (or x13702 x13638 (not x2014) x18239 x29752)
+:assumption (or x18838 (not x19839))
+:assumption (or x1393 (not x30367))
+:assumption (or x12104 (not x16784))
+:assumption (or (not x25606) x19183 x30226 x10883)
+:assumption (or x14839 x21548)
+:assumption (or x10681 x6783 (not x20550))
+:assumption (or (not x28269) x5552)
+:assumption (or (not x17020) (not x23281))
+:assumption (or (not x12187) x10486)
+:assumption (or (not x27408) x27395)
+:assumption (or x3494 x9335)
+:assumption (or (not x29799) (not x2254))
+:assumption (or (not x28890) x9)
+:assumption (or (not x15953) x29835)
+:assumption (or x3440 x24622)
+:assumption (or x26814 x13477)
+:assumption (or x30220 (not x4386))
+:assumption (or (not x22450) (not x5898) (not x16907) x23495)
+:assumption (or x27718 (not x24811))
+:assumption (or x15658 x7130)
+:assumption (or x6462 (not x19948))
+:assumption (or x12377 (not x3704))
+:assumption (or x27066 x26108)
+:assumption (or x24020 x3086)
+:assumption (or (not x2450) x19846 x10445 x18701)
+:assumption (or x17643 x10805)
+:assumption (or (not x13487) x17895)
+:assumption (or x10188 (not x21355))
+:assumption (or (not x29606) (not x16454))
+:assumption (or x918 (not x31800) x5936)
+:assumption (or x13471 (not x3150) x668)
+:assumption (or x29312 x30162 (not x29507) x24608)
+:assumption (or (not x29618) x16043)
+:assumption (or (not x10042) (not x25690))
+:assumption (or x17386 x21065)
+:assumption (or x18290 x31392 (not x27918) (not x30793) (not x8797) x14586)
+:assumption (or x1393 x30044)
+:assumption (or (not x1142) (not x7678))
+:assumption (or x20932 (not x11289) x16969 x8668 (not x28821))
+:assumption (or x13915 x14329)
+:assumption (or (not x8156) x20277)
+:assumption (or x14363 x19839)
+:assumption (or (not x22632) (not x716))
+:assumption (or x15101 x15808 x18017 x4559)
+:assumption (or x30457 (not x24671))
+:assumption (or (not x23684) x12780)
+:assumption (or (not x17709) x15388)
+:assumption (or x7391 (not x22847))
+:assumption (or (not x17197) x26140)
+:assumption (or x19634 x11484)
+:assumption (or x1296 (not x26713))
+:assumption (or (not x15248) x10045)
+:assumption (or x23635 x31690)
+:assumption (or x27591 (not x5855))
+:assumption (or x24079 x26508)
+:assumption (or (not x24339) x29418)
+:assumption (or (not x13576) x5983 (not x8083))
+:assumption (or x8467 x7682)
+:assumption (or x5752 (not x30783))
+:assumption (or x16102 x29388)
+:assumption (or (not x30823) x6775)
+:assumption (or x30570 (not x1499))
+:assumption (or x31455 (not x1536))
+:assumption (or (not x18519) (not x1857) x22670 (not x17351) (not x10746) (not x19711))
+:assumption (or x16373 (not x26062))
+:assumption (or (not x16486) x25198)
+:assumption (or x21373 (not x2329))
+:assumption (or (not x10247) (not x8482))
+:assumption (or (not x19991) x8276)
+:assumption (or x15784 (not x19428))
+:assumption (or x6907 x18620)
+:assumption (or x17426 (not x31636))
+:assumption (or x29442 (not x4412) x28291)
+:assumption (or x14449 (not x16773))
+:assumption (or (not x1606) (not x10060) (not x2449))
+:assumption (or x28066 (not x4164))
+:assumption (or (not x11759) x26012)
+:assumption (or x24708 x10513)
+:assumption (or (not x24154) (not x827))
+:assumption (or x19482 x20735)
+:assumption (or (not x17948) x30001 (not x21611) x21026 x28802)
+:assumption (or (not x7564) x26850)
+:assumption (or x14349 (not x4524))
+:assumption (or (not x31748) (not x12467))
+:assumption (or x4513 (not x8002))
+:assumption (or (not x4944) x23244 (not x5886))
+:assumption (or x19707 (not x27451))
+:assumption (or x25878 (not x3782) x29442 (not x2246) x12491)
+:assumption (or x6435 x6953)
+:assumption (or x5068 (not x27420))
+:assumption (or x22202 x19053)
+:assumption (or (not x953) x25106)
+:assumption (or (not x25340) (not x7273))
+:assumption (or x14273 (not x6596))
+:assumption (or x15820 (not x21815) x3494 x6133 (not x16510))
+:assumption (or x31067 (not x28014))
+:assumption (or (not x30245) x21504)
+:assumption (or x26738 (not x12567))
+:assumption (or (not x13352) (not x8382) x5755 x4907)
+:assumption (or x30838 x31026 x15072)
+:assumption (or x9380 x14493)
+:assumption (or x20822 x29801)
+:assumption (or x6290 x4865)
+:assumption (or (not x980) (not x22851))
+:assumption (or x4717 (not x1324))
+:assumption (or (not x27603) (not x17989))
+:assumption (or (not x7144) x13253)
+:assumption (or x13000 (not x548))
+:assumption (or x29014 x16917)
+:assumption (or (not x23684) (not x9531))
+:assumption (or x3046 x28436)
+:assumption (or x15044 x12930)
+:assumption (or x28511 (not x28080) x21653)
+:assumption (or (not x3737) x3186)
+:assumption (or x26535 (not x19919) (not x6060) (not x18148) x18385)
+:assumption (or x13679 x23879)
+:assumption (or x19806 (not x52))
+:assumption (or x13226 (not x31242))
+:assumption (or x10569 (not x20134))
+:assumption (or x18814 (not x7352))
+:assumption (or (not x8189) (not x1770))
+:assumption (or x29740 (not x653))
+:assumption (or x12917 x7805)
+:assumption (or (not x29312) (not x29597))
+:assumption (or x17438 (not x221))
+:assumption (or x30060 (not x2822))
+:assumption (or (not x29243) (not x14896))
+:assumption (or x27729 x16183)
+:assumption (or (not x10294) (not x16802))
+:assumption (or (not x17488) (not x17628))
+:assumption (or (not x23193) (not x664))
+:assumption (or x7966 x20329)
+:assumption (or x8961 x14425)
+:assumption (or (not x13188) x16216 (not x17555))
+:assumption (or x5887 x505)
+:assumption (or (not x3520) (not x7412))
+:assumption (or x26570 (not x13909))
+:assumption (or (not x14616) (not x2333))
+:assumption (or x4491 (not x1379))
+:assumption (or x29779 x1500)
+:assumption (or x20404 (not x21222))
+:assumption (or (not x37) x19071)
+:assumption (or (not x209) x16961)
+:assumption (or (not x5528) (not x7246) (not x9008) x29772 x805)
+:assumption (or x30705 (not x18549))
+:assumption (or (not x14071) (not x30208))
+:assumption (or x20624 (not x22855))
+:assumption (or x21879 x8713)
+:assumption (or x23670 (not x29511) (not x14078) x18349)
+:assumption (or x17666 x8711)
+:assumption (or (not x980) x24906)
+:assumption (or x6972 x13185)
+:assumption (or (not x20702) (not x5854))
+:assumption (or x21814 x29777)
+:assumption (or (not x992) x27602 (not x16455))
+:assumption (or (not x11112) (not x21681))
+:assumption (or (not x18975) x26376)
+:assumption (or (not x1393) x13166)
+:assumption (or (not x18042) (not x7594))
+:assumption (or x23387 (not x23043) (not x19544) (not x30916))
+:assumption (or (not x816) x8602)
+:assumption (or (not x30929) (not x28517))
+:assumption (or x7362 x10088)
+:assumption (or x13561 (not x26132))
+:assumption (or x10763 x30996)
+:assumption (or (not x23102) (not x23303))
+:assumption (or (not x8961) (not x7863))
+:assumption (or x26199 (not x16741))
+:assumption (or (not x27244) x23445)
+:assumption (or x3363 (not x26014))
+:assumption (or (not x9346) x16745)
+:assumption (or (not x12814) x20104)
+:assumption (or x25963 (not x30384))
+:assumption (or (not x9008) x8081 x676 (not x5840) (not x5528))
+:assumption (or x1759 (not x20539))
+:assumption (or (not x14552) x30036)
+:assumption (or x20606 (not x27037))
+:assumption (or (not x6622) (not x13867))
+:assumption (or x4513 (not x23244))
+:assumption (or (not x14839) (not x6503))
+:assumption (or (not x15989) x22085)
+:assumption (or x29420 (not x19437))
+:assumption (or x26703 (not x25859) (not x11946) (not x26000) (not x26692) (not x29831) (not x21839))
+:assumption (or (not x30204) (not x4514))
+:assumption (or x16185 x15936)
+:assumption (or (not x13331) x4523)
+:assumption (or (not x12646) (not x12525))
+:assumption (or (not x19880) x23324 x20957 x21702)
+:assumption (or (not x22052) x22226)
+:assumption (or (not x23322) x8602)
+:assumption (or x2288 (not x17126))
+:assumption (or (not x18838) (not x12221))
+:assumption (or x9995 x22131)
+:assumption (or x5961 x1161)
+:assumption (or (not x27687) x31820)
+:assumption (or x21309 x15499)
+:assumption (or (not x29279) (not x21368))
+:assumption (or (not x3166) x21202)
+:assumption (or x12366 x10399)
+:assumption (or (not x31890) (not x31736))
+:assumption (or (not x21633) (not x4300) (not x1010) x27233)
+:assumption (or x17116 x25871)
+:assumption (or x11162 (not x4490))
+:assumption (or (not x542) (not x6583) x2500)
+:assumption (or (not x23154) (not x23622))
+:assumption (or x2103 (not x15482))
+:assumption (or x24643 (not x10264))
+:assumption (or x3529 (not x20158))
+:assumption (or x31652 (not x31431))
+:assumption (or x1754 x6957)
+:assumption (or x15836 (not x18025) (not x3147))
+:assumption (or x5960 x29701)
+:assumption (or x11851 (not x18683))
+:assumption (or (not x136) x23367)
+:assumption (or (not x11059) (not x6370))
+:assumption (or (not x8129) (not x5252))
+:assumption (or (not x13433) x8933)
+:assumption (or x18694 x11416)
+:assumption (or (not x8313) (not x936) (not x9100) x29573 (not x2627))
+:assumption (or x3226 (not x7091))
+:assumption (or x20605 x12363)
+:assumption (or (not x9489) x24680)
+:assumption (or x9134 (not x16910))
+:assumption (or (not x15604) (not x20556))
+:assumption (or (not x1118) (not x28826))
+:assumption (or x16060 (not x15043))
+:assumption (or (not x15455) x26354 x30605)
+:assumption (or (not x30215) x6560)
+:assumption (or (not x29680) (not x12118))
+:assumption (or (not x29873) x6885)
+:assumption (or x22250 (not x30100))
+:assumption (or x11560 (not x31829))
+:assumption (or (not x24457) (not x5306))
+:assumption (or x9893 x21934)
+:assumption (or (not x8669) (not x11854))
+:assumption (or x15628 (not x21682))
+:assumption (or x8303 (not x1908))
+:assumption (or x18293 (not x12074) x12481 x19857)
+:assumption (or x23244 (not x20596))
+:assumption (or x30152 (not x15454))
+:assumption (or x14340 (not x28273))
+:assumption (or x24243 x9770)
+:assumption (or x25023 (not x2393))
+:assumption (or x12130 x10583)
+:assumption (or (not x5213) (not x6319) x9081 x10296 x15090 x4273 x25404 (not x17597) (not x4832))
+:assumption (or (not x29032) (not x8919))
+:assumption (or x6806 (not x27485))
+:assumption (or x846 x29849)
+:assumption (or x20560 x24465)
+:assumption (or (not x8653) x3002)
+:assumption (or (not x15265) (not x15861) (not x12083))
+:assumption (or (not x6367) x31439)
+:assumption (or (not x23631) x27916)
+:assumption (or x31606 x10342 (not x12619) x25318 (not x1622))
+:assumption (or x662 x9156)
+:assumption (or x9738 x11415)
+:assumption (or x9461 (not x25075))
+:assumption (or (not x9068) (not x14138))
+:assumption (or x17507 (not x19961))
+:assumption (or x26688 (not x20526) (not x29051) (not x14336) (not x3649) (not x13610))
+:assumption (or (not x8633) (not x13668))
+:assumption (or x14968 (not x26206) (not x18888))
+:assumption (or (not x30012) x9008 (not x17216))
+:assumption (or (not x22156) x17075)
+:assumption (or (not x11018) x12647)
+:assumption (or (not x19428) (not x9458))
+:assumption (or (not x14119) (not x28242))
+:assumption (or x25652 x16321)
+:assumption (or (not x11607) (not x11576))
+:assumption (or (not x21633) (not x5144) x27233 x23136)
+:assumption (or (not x12458) x3990)
+:assumption (or (not x14881) x7546)
+:assumption (or (not x14857) (not x5493) x8043)
+:assumption (or (not x2326) x25913)
+:assumption (or x29307 (not x14841) x28468 x11113 x2065 (not x29376) (not x12223) x2414)
+:assumption (or (not x13336) (not x18415))
+:assumption (or x26295 x24720)
+:assumption (or (not x11496) (not x11318))
+:assumption (or x5528 x2726)
+:assumption (or x14323 (not x13253))
+:assumption (or x29508 (not x2254))
+:assumption (or (not x23246) (not x11903))
+:assumption (or x244 (not x16815))
+:assumption (or (not x14461) (not x25641))
+:assumption (or x14304 (not x16139))
+:assumption (or (not x7387) x16797)
+:assumption (or x26131 x14700)
+:assumption (or (not x16363) x28242)
+:assumption (or (not x16459) x4888)
+:assumption (or (not x19767) (not x13771))
+:assumption (or x10136 x27123)
+:assumption (or x4638 x20807 x15421 x28285 x15289 (not x31873) x1876 (not x28629) x4391)
+:assumption (or (not x23621) x3731)
+:assumption (or (not x7502) x28717)
+:assumption (or x7806 x18694)
+:assumption (or (not x12588) (not x4068))
+:assumption (or (not x25172) x5307)
+:assumption (or x20510 (not x11214))
+:assumption (or x27392 x14591)
+:assumption (or (not x26258) (not x29312))
+:assumption (or x7307 (not x653))
+:assumption (or x30989 (not x5876))
+:assumption (or (not x15903) (not x26624))
+:assumption (or (not x25659) x2198)
+:assumption (or (not x24604) (not x9008) x966)
+:assumption (or x16510 (not x11005) (not x3782) x12856 x14182)
+:assumption (or (not x28349) x31170)
+:assumption (or (not x20272) x16741 x8841 x364)
+:assumption (or x19554 (not x9168))
+:assumption (or (not x27939) x12499)
+:assumption (or x20472 x17017)
+:assumption (or (not x13361) (not x9171))
+:assumption (or x29585 (not x19992) (not x9804))
+:assumption (or x12031 (not x10517))
+:assumption (or (not x4185) x8002 x1238)
+:assumption (or x21555 (not x334))
+:assumption (or x14477 x827)
+:assumption (or x21298 (not x8246))
+:assumption (or (not x11792) (not x6149) x26723 (not x12327))
+:assumption (or (not x11727) x28541)
+:assumption (or (not x3756) x6649)
+:assumption (or (not x21199) (not x28903))
+:assumption (or (not x5547) (not x10715))
+:assumption (or x23333 x20358)
+:assumption (or (not x17273) x20808)
+:assumption (or x6267 (not x23830) (not x6891) x26172)
+:assumption (or (not x23542) x2599)
+:assumption (or x16842 x7297)
+:assumption (or x3039 x4995)
+:assumption (or (not x6275) (not x16693))
+:assumption (or (not x15670) (not x21937))
+:assumption (or x15655 (not x27389))
+:assumption (or (not x6698) (not x19283))
+:assumption (or (not x29347) x9862)
+:assumption (or (not x3442) x21803)
+:assumption (or (not x2257) (not x16374))
+:assumption (or x3764 x25315)
+:assumption (or (not x21705) (not x8951) x10858 (not x19560) x15460 (not x26262))
+:assumption (or x9703 x29593)
+:assumption (or x137 x24473)
+:assumption (or x29538 (not x19905))
+:assumption (or (not x10138) (not x494))
+:assumption (or x15255 x4946)
+:assumption (or x29442 x18153)
+:assumption (or x22940 (not x14548))
+:assumption (or (not x9733) x12257)
+:assumption (or (not x16675) x22357)
+:assumption (or x9006 x1265)
+:assumption (or x7817 (not x14471) x29868 x6992)
+:assumption (or x9126 x2053)
+:assumption (or (not x16691) x16741 (not x25538))
+:assumption (or x15127 (not x16809) (not x29333) (not x9008) (not x5528))
+:assumption (or (not x12778) x17338 x31767 (not x45))
+:assumption (or x4727 (not x21426))
+:assumption (or (not x9008) x30255 (not x5528) x14500 (not x29799))
+:assumption (or (not x15199) (not x2795) x2384)
+:assumption (or x19117 (not x28076))
+:assumption (or x28469 x3384)
+:assumption (or (not x3904) x8326)
+:assumption (or (not x230) x11750)
+:assumption (or (not x17111) (not x18003) x16025)
+:assumption (or x22660 (not x26107))
+:assumption (or (not x25315) (not x9742))
+:assumption (or x9801 (not x4349))
+:assumption (or x8826 x9454 x11808 x22127 x14531 (not x18814))
+:assumption (or (not x17647) (not x21298) x27048 (not x15860))
+:assumption (or x6397 x7811)
+:assumption (or x29154 (not x8289))
+:assumption (or x30407 x14758)
+:assumption (or (not x7487) x4842)
+:assumption (or x23244 (not x18746) (not x29889) x27014 (not x1005))
+:assumption (or x7962 x11770)
+:assumption (or (not x11164) x2729)
+:assumption (or (not x13892) (not x2842))
+:assumption (or (not x27982) x12296)
+:assumption (or (not x22164) x8228)
+:assumption (or x4553 (not x15844))
+:assumption (or x8002 (not x30329) x10622)
+:assumption (or (not x5843) x21822)
+:assumption (or x25299 x12251)
+:assumption (or x20310 x25824)
+:assumption (or (not x7170) (not x19992) x31581)
+:assumption (or (not x11168) x10083)
+:assumption (or x4764 x24102)
+:assumption (or (not x14599) (not x14090))
+:assumption (or (not x14287) (not x21014))
+:assumption (or x29956 x29427)
+:assumption (or x7721 x5277)
+:assumption (or (not x12183) (not x20515) (not x11921) x3359 x18325)
+:assumption (or (not x23866) (not x25494))
+:assumption (or (not x19506) x13479)
+:assumption (or x12907 (not x11683))
+:assumption (or x5028 (not x9125))
+:assumption (or (not x9529) (not x24045))
+:assumption (or (not x5287) (not x22993))
+:assumption (or x22846 x17318)
+:assumption (or x21462 (not x9615) x23244)
+:assumption (or (not x24768) x11388)
+:assumption (or x3830 (not x8380))
+:assumption (or x16025 (not x23191))
+:assumption (or (not x8303) x1908)
+:assumption (or x18523 x23244)
+:assumption (or (not x18937) (not x14734))
+:assumption (or x5874 (not x12949) x19072 x1169 (not x15493) (not x17899) x20209 (not x827))
+:assumption (or (not x4619) (not x15956))
+:assumption (or x8002 x13982)
+:assumption (or (not x31367) x7599)
+:assumption (or (not x16491) (not x14158))
+:assumption (or (not x26741) x21815)
+:assumption (or x12861 x22484)
+:assumption (or x31923 x26009 x2685 (not x19776) (not x47) x31690 x27601 (not x21923) (not x30222))
+:assumption (or (not x29257) (not x30962))
+:assumption (or x25918 x20944 (not x4559) (not x7108))
+:assumption (or (not x24200) x8896)
+:assumption (or (not x29324) (not x13748))
+:assumption (or x15778 (not x13628))
+:assumption (or (not x10286) x9365)
+:assumption (or (not x28885) x3533)
+:assumption (or x25940 (not x13795))
+:assumption (or x14376 x24377)
+:assumption (or (not x3638) x28609)
+:assumption (or (not x17185) (not x29311))
+:assumption (or (not x2782) x26432)
+:assumption (or (not x28773) (not x1492))
+:assumption (or x8226 x8926)
+:assumption (or x3518 x17110)
+:assumption (or (not x8986) x21633 x26820 (not x15116) (not x29387) (not x13612) x12654 (not x29624))
+:assumption (or (not x18525) (not x21735))
+:assumption (or x25716 x11393)
+:assumption (or x27561 (not x55))
+:assumption (or (not x7666) (not x5993))
+:assumption (or x12669 (not x27960))
+:assumption (or (not x10782) (not x14769))
+:assumption (or (not x12776) (not x6947))
+:assumption (or x14225 (not x23245))
+:assumption (or x29632 x17728)
+:assumption (or (not x24726) x15583)
+:assumption (or (not x27636) x3145)
+:assumption (or x10639 (not x6969) (not x6807))
+:assumption (or x5459 (not x25799) (not x15733) x18812)
+:assumption (or x9008 (not x10245))
+:assumption (or (not x18844) (not x5201))
+:assumption (or (not x9531) (not x13576) (not x19033) (not x19181))
+:assumption (or (not x23244) x11923)
+:assumption (or (not x2436) (not x6417))
+:assumption (or x15234 (not x21847) (not x26930) x30121 x31201)
+:assumption (or (not x11066) x10891)
+:assumption (or (not x19312) x28461)
+:assumption (or (not x4717) x1324)
+:assumption (or (not x29523) x5433)
+:assumption (or (not x12342) x28242)
+:assumption (or x18969 x7877)
+:assumption (or (not x27096) (not x6351) (not x31777))
+:assumption (or x30068 (not x27437))
+:assumption (or x16987 (not x17406) x17558 x7991 (not x21452) x28398 (not x7668))
+:assumption (or (not x15481) (not x9656))
+:assumption (or (not x3001) x6426)
+:assumption (or (not x26870) (not x11894))
+:assumption (or (not x21941) (not x16879))
+:assumption (or (not x26432) (not x29171) x15679)
+:assumption (or x6444 (not x20968))
+:assumption (or (not x7337) (not x13371))
+:assumption (or x11921 x17349)
+:assumption (or (not x5061) x5528)
+:assumption (or (not x31622) x31774)
+:assumption (or (not x10314) (not x12366) (not x14361) (not x17191) (not x15775) (not x17147) (not x23482) (not x4822) x11930)
+:assumption (or (not x9126) x943)
+:assumption (or (not x29793) (not x31880))
+:assumption (or x403 x16402)
+:assumption (or x20990 x23391)
+:assumption (or x9008 x14991)
+:assumption (or (not x5984) (not x1217))
+:assumption (or x4405 (not x30360))
+:assumption (or (not x7736) (not x18931))
+:assumption (or x21298 x25818 x12803 x11130)
+:assumption (or (not x22786) x22040)
+:assumption (or x20765 (not x8886) x31777 x17317 (not x31076))
+:assumption (or (not x8602) x10437 (not x4330))
+:assumption (or (not x13933) x5031)
+:assumption (or x8635 (not x25355))
+:assumption (or x15254 x29993)
+:assumption (or (not x14648) x12420)
+:assumption (or x11468 (not x20693))
+:assumption (or x26167 (not x17588))
+:assumption (or x27885 x4491)
+:assumption (or (not x16928) x13015)
+:assumption (or x24387 (not x7291))
+:assumption (or x25490 (not x11039))
+:assumption (or x28788 (not x2549))
+:assumption (or x947 x21587)
+:assumption (or (not x6671) x25584)
+:assumption (or (not x10874) (not x10458) x1067)
+:assumption (or (not x29986) (not x19428))
+:assumption (or (not x4533) (not x14960))
+:assumption (or (not x97) (not x14266) x25127)
+:assumption (or (not x10874) x28242 x13848 (not x2110))
+:assumption (or x3179 x7428)
+:assumption (or (not x25717) (not x1101))
+:assumption (or x15102 (not x8002) (not x15209) (not x21458))
+:assumption (or x6324 x15830)
+:assumption (or x28395 x5528)
+:assumption (or (not x7624) x12045 (not x18251))
+:assumption (or (not x1612) (not x12625))
+:assumption (or (not x17675) (not x1112))
+:assumption (or (not x31318) (not x12242) x11909 (not x22615))
+:assumption (or x9452 x26186)
+:assumption (or x1910 x7756)
+:assumption (or x868 x11659 x12475)
+:assumption (or (not x3282) (not x10834))
+:assumption (or (not x17855) x8786 (not x29635) (not x16478))
+:assumption (or (not x16397) (not x16640))
+:assumption (or x18103 x22705)
+:assumption (or (not x6737) x19001)
+:assumption (or x13652 (not x13839))
+:assumption (or x7519 x4116)
+:assumption (or x11296 x17396)
+:assumption (or x11493 x4912)
+:assumption (or x19383 x13063)
+:assumption (or (not x21178) x12500)
+:assumption (or (not x1975) (not x4000))
+:assumption (or (not x10786) (not x24607))
+:assumption (or (not x14703) (not x18260))
+:assumption (or x7849 (not x426))
+:assumption (or (not x19970) x14186)
+:assumption (or (not x892) x18809)
+:assumption (or x25795 (not x17616))
+:assumption (or (not x18644) (not x8070))
+:assumption (or x25322 (not x21428))
+:assumption (or x26729 x13956)
+:assumption (or (not x12135) (not x22661))
+:assumption (or x15297 (not x818))
+:assumption (or (not x6282) (not x13434))
+:assumption (or x12516 (not x22531))
+:assumption (or (not x2675) (not x31811))
+:assumption (or (not x6969) x13397)
+:assumption (or x1689 (not x13839))
+:assumption (or (not x21995) x16025 (not x19062))
+:assumption (or (not x5944) x6290)
+:assumption (or x10977 (not x18567))
+:assumption (or (not x6908) x7072)
+:assumption (or x23818 x12252)
+:assumption (or (not x29926) x14080)
+:assumption (or (not x10481) (not x27198))
+:assumption (or x11154 (not x13499))
+:assumption (or x23131 x8101)
+:assumption (or (not x17977) x14782)
+:assumption (or x9822 x20949)
+:assumption (or (not x18789) (not x6594))
+:assumption (or x16973 (not x856))
+:assumption (or x30690 x16581)
+:assumption (or x12817 (not x8956))
+:assumption (or (not x519) (not x24302) (not x5559))
+:assumption (or (not x21977) (not x12487))
+:assumption (or (not x16999) (not x337))
+:assumption (or (not x7082) x17327 x12413 x7801 x30755)
+:assumption (or x3181 (not x13713))
+:assumption (or (not x16696) x13114)
+:assumption (or (not x8475) x25910)
+:assumption (or x11152 (not x20134))
+:assumption (or x20613 (not x10486))
+:assumption (or (not x861) (not x30018))
+:assumption (or (not x12058) (not x29664))
+:assumption (or (not x1807) (not x20443))
+:assumption (or (not x1856) (not x21486))
+:assumption (or x10159 x1030 x470 x29297)
+:assumption (or (not x27790) (not x29063))
+:assumption (or (not x28209) x16320)
+:assumption (or x9005 x26279)
+:assumption (or x29185 x3466)
+:assumption (or (not x8674) (not x15851))
+:assumption (or x22569 (not x15924) x30565 (not x20052) x31615 x15181)
+:assumption (or (not x3528) x15949)
+:assumption (or x28809 x25181)
+:assumption (or (not x25878) (not x12491))
+:assumption (or (not x19689) x1369)
+:assumption (or (not x5886) x9195)
+:assumption (or x5791 (not x2742) x3782)
+:assumption (or x24288 (not x5513))
+:assumption (or x10766 x2571)
+:assumption (or (not x148) (not x31410))
+:assumption (or (not x25293) (not x22419))
+:assumption (or (not x15788) x12958)
+:assumption (or (not x15277) (not x30113))
+:assumption (or (not x30865) x16448)
+:assumption (or (not x3557) (not x23190))
+:assumption (or x14455 (not x4884))
+:assumption (or x19814 x21359)
+:assumption (or (not x18178) x28364)
+:assumption (or (not x2009) (not x12232))
+:assumption (or (not x13152) x7496)
+:assumption (or x7874 (not x28000))
+:assumption (or x29571 (not x19657))
+:assumption (or (not x25622) (not x20891) x28295 (not x25592) (not x25725) (not x2862) (not x12684) (not x4757))
+:assumption (or x6377 x7097)
+:assumption (or x10506 (not x3118))
+:assumption (or x618 x11265)
+:assumption (or (not x4480) x2459 (not x654) x12134 (not x16254) x22089)
+:assumption (or x30231 x12694)
+:assumption (or (not x30633) (not x19301))
+:assumption (or (not x11425) x22808)
+:assumption (or (not x7514) x6666)
+:assumption (or x23567 x30776)
+:assumption (or (not x18715) x28936)
+:assumption (or (not x8083) x26439 (not x19711) x18519)
+:assumption (or x26421 (not x20134))
+:assumption (or (not x15121) x5528)
+:assumption (or (not x27734) (not x6374))
+:assumption (or (not x1941) x16651)
+:assumption (or x17179 x17975)
+:assumption (or x1200 (not x17359))
+:assumption (or x28430 x15723)
+:assumption (or x9245 (not x22185))
+:assumption (or (not x15685) x28153)
+:assumption (or x5528 x20618 x18341)
+:assumption (or x2106 (not x14353))
+:assumption (or x31895 (not x8365))
+:assumption (or x18852 (not x22546))
+:assumption (or x10874 x31646)
+:assumption (or (not x16727) x4486)
+:assumption (or (not x18042) (not x23142))
+:assumption (or (not x827) x6697 (not x28412) x29450 x2398 x14162 x12231 x4468)
+:assumption (or (not x11293) x19353)
+:assumption (or x6720 (not x5853))
+:assumption (or (not x16668) (not x18182))
+:assumption (or (not x11113) (not x24675))
+:assumption (or x19180 x6046 x1253 (not x4099))
+:assumption (or (not x16025) x3298)
+:assumption (or (not x4918) x10034)
+:assumption (or x20129 x4310)
+:assumption (or (not x15436) (not x20949))
+:assumption (or (not x4307) (not x7727))
+:assumption (or (not x2770) (not x22851) x24722)
+:assumption (or (not x28741) x18837 x25659)
+:assumption (or x22855 (not x5340))
+:assumption (or (not x22566) x11541)
+:assumption (or (not x16294) (not x21038))
+:assumption (or x15105 x26539)
+:assumption (or x15902 (not x7990))
+:assumption (or (not x15887) (not x8014))
+:assumption (or (not x2692) (not x21770))
+:assumption (or (not x19871) x4947)
+:assumption (or x31087 x8825)
+:assumption (or x6351 x953 (not x12025))
+:assumption (or (not x11363) x10522)
+:assumption (or (not x12944) (not x1707))
+:assumption (or (not x3471) x3352 x18670 x31076)
+:assumption (or x25775 (not x16126))
+:assumption (or x14054 (not x17566))
+:assumption (or (not x16706) (not x30307))
+:assumption (or (not x30769) (not x12506))
+:assumption (or x25422 x17514)
+:assumption (or x16741 x21628 (not x25366) x20416)
+:assumption (or x21542 (not x6495))
+:assumption (or (not x865) (not x31348))
+:assumption (or x1061 (not x721) x8487 (not x15430) (not x29236) x11351 x6105 x27409)
+:assumption (or (not x13360) x1467)
+:assumption (or (not x22364) (not x21115))
+:assumption (or (not x24718) (not x14956))
+:assumption (or x1301 x21883)
+:assumption (or (not x3900) (not x9020))
+:assumption (or (not x23718) x6241 x27350 (not x14761) (not x2233) x10859)
+:assumption (or x8002 x28342 (not x3871) x13956 (not x26647) x23244)
+:assumption (or (not x27388) (not x31757))
+:assumption (or (not x17292) x5026)
+:assumption (or x17360 (not x27013))
+:assumption (or (not x3241) (not x13629))
+:assumption (or (not x12329) x5048 (not x1582) x21255 (not x12705) x21267 x19140 (not x21896) (not x17438))
+:assumption (or (not x4566) (not x25031) x16504 x2432 x25133 x28325 (not x18486) (not x28912))
+:assumption (or x5717 x28885 x4007 (not x25426))
+:assumption (or (not x22477) (not x7295))
+:assumption (or (not x19538) x20258)
+:assumption (or x23244 (not x14217))
+:assumption (or x21633 x21706)
+:assumption (or x19772 x8602)
+:assumption (or (not x30802) (not x14839))
+:assumption (or (not x10783) x25672)
+:assumption (or x25095 (not x13576))
+:assumption (or x1786 (not x27019))
+:assumption (or x13223 x7125)
+:assumption (or (not x2288) x24147)
+:assumption (or x828 (not x28848))
+:assumption (or x8073 (not x24768) (not x23596))
+:assumption (or x30626 (not x16052))
+:assumption (or (not x24297) x17355 x29245)
+:assumption (or (not x29988) (not x19365))
+:assumption (or (not x15151) (not x12461))
+:assumption (or (not x17901) (not x9428))
+:assumption (or (not x29072) x9934)
+:assumption (or (not x6473) (not x24822))
+:assumption (or x11308 (not x14411))
+:assumption (or (not x24333) (not x12582))
+:assumption (or (not x28342) x13956 x8002 (not x12706) x23244 (not x805))
+:assumption (or x1049 (not x27840))
+:assumption (or x953 x23979)
+:assumption (or (not x15789) x27616)
+:assumption (or x13538 x27892 x10945 x11375)
+:assumption (or x18045 (not x13120))
+:assumption (or x18039 (not x14351))
+:assumption (or x30113 (not x8678))
+:assumption (or x5528 x23005)
+:assumption (or x2083 (not x9570))
+:assumption (or x31715 x9147)
+:assumption (or (not x21748) (not x18122))
+:assumption (or x9689 (not x11242))
+:assumption (or x23 (not x8405))
+:assumption (or (not x1752) x17401)
+:assumption (or x22240 (not x15948) x24907 (not x3435) (not x4309) (not x23748) x24339 x20967)
+:assumption (or (not x23051) (not x12351))
+:assumption (or (not x27614) x14293)
+:assumption (or x786 (not x17093))
+:assumption (or x5117 (not x25140))
+:assumption (or x16567 (not x30667))
+:assumption (or (not x28079) (not x14716) x26972 (not x1582))
+:assumption (or (not x27286) (not x17148))
+:assumption (or x24145 (not x6677))
+:assumption (or (not x23460) (not x31549))
+:assumption (or x31325 (not x23431))
+:assumption (or x28424 (not x21979))
+:assumption (or (not x5856) x24225)
+:assumption (or x15306 (not x7924))
+:assumption (or x16741 (not x12417))
+:assumption (or (not x5945) (not x6596))
+:assumption (or x25549 (not x637))
+:assumption (or (not x23791) x437)
+:assumption (or x2943 x11932)
+:assumption (or x8646 x29772)
+:assumption (or x4346 (not x9387))
+:assumption (or (not x30255) (not x15676))
+:assumption (or (not x21637) (not x28827) (not x27124) (not x12793) x29851)
+:assumption (or (not x142) x10914 x12229 (not x22855))
+:assumption (or x20295 (not x31083) (not x6774))
+:assumption (or (not x15169) x28373)
+:assumption (or x774 (not x20419))
+:assumption (or (not x21863) (not x3951))
+:assumption (or (not x6806) x9275 x20651 x28886 (not x5819) (not x28105) x11197)
+:assumption (or x14645 (not x2334))
+:assumption (or (not x1584) (not x14247))
+:assumption (or x15803 x9008 x15370)
+:assumption (or x18523 (not x202))
+:assumption (or (not x14642) (not x16666))
+:assumption (or x7270 (not x6496) (not x2998))
+:assumption (or x5081 (not x2028) x25387 x29855)
+:assumption (or (not x17647) (not x19501) (not x20851) (not x15860))
+:assumption (or (not x24990) (not x2637))
+:assumption (or x22019 x11611)
+:assumption (or x5437 x29304)
+:assumption (or x28890 (not x12306) x7748 (not x4058) (not x1657))
+:assumption (or (not x20883) (not x10601))
+:assumption (or (not x19242) x20536)
+:assumption (or x10064 x8604)
+:assumption (or x26571 (not x27104) (not x3977) x17920)
+:assumption (or x13489 x4181 (not x11046) x27814 (not x2538) (not x20960) (not x19729) (not x25659))
+:assumption (or (not x30224) (not x19992) x11346)
+:assumption (or (not x26531) (not x24354))
+:assumption (or x2133 x21344 x14965)
+:assumption (or (not x29913) x5727)
+:assumption (or x21318 x18623)
+:assumption (or (not x1126) (not x16193) x14069)
+:assumption (or (not x23114) x1639)
+:assumption (or (not x1434) x27254)
+:assumption (or (not x11420) x21864)
+:assumption (or (not x29710) x4585)
+:assumption (or (not x5813) x31874)
+:assumption (or (not x31699) x3089)
+:assumption (or x19320 x6084)
+:assumption (or (not x5428) x25434)
+:assumption (or (not x30257) x16130)
+:assumption (or x30455 x25863)
+:assumption (or (not x10753) (not x14762))
+:assumption (or (not x23751) (not x2052))
+:assumption (or (not x1137) (not x27300))
+:assumption (or (not x30689) (not x20670) x26625 (not x16964) x4374 x29654 x7643)
+:assumption (or (not x2198) x3009)
+:assumption (or x11611 x21297)
+:assumption (or (not x15525) x23566)
+:assumption (or (not x27036) x4757)
+:assumption (or (not x864) x15945 (not x5419) x31195)
+:assumption (or x30421 x7810)
+:assumption (or x15121 (not x7873) x13350 (not x8490) (not x15237))
+:assumption (or (not x23824) x17973)
+:assumption (or (not x10515) x22885)
+:assumption (or x2605 (not x8141))
+:assumption (or x7626 x12437)
+:assumption (or (not x11420) (not x18289))
+:assumption (or (not x14210) (not x28102))
+:assumption (or x10616 x29606 (not x10708))
+:assumption (or (not x2943) (not x5676))
+:assumption (or x14331 (not x21222) x1393 (not x21853) (not x3710) (not x13458) (not x17853) (not x613))
+:assumption (or (not x30287) x17950)
+:assumption (or (not x27640) x6906)
+:assumption (or x5411 x25256)
+:assumption (or (not x18666) x17388)
+:assumption (or x8120 (not x5344))
+:assumption (or (not x2752) x22002)
+:assumption (or x14202 x27494)
+:assumption (or (not x28822) x14385)
+:assumption (or x30266 (not x7574))
+:assumption (or (not x11374) (not x15431))
+:assumption (or x25066 (not x23715))
+:assumption (or (not x27737) (not x8725))
+:assumption (or (not x1302) x25550 (not x30138))
+:assumption (or x25687 (not x772))
+:assumption (or (not x19216) (not x2294) x13957 (not x7733))
+:assumption (or x30174 (not x9008))
+:assumption (or (not x22941) (not x18399) (not x9215) (not x29906))
+:assumption (or x16091 x28512)
+:assumption (or (not x8002) (not x18440) x14234)
+:assumption (or x30238 x11106)
+:assumption (or (not x26990) x10446 (not x27724) (not x4766) (not x17090))
+:assumption (or (not x14237) x23336 x827)
+:assumption (or (not x8561) (not x20475) x10316 (not x14811) x21203 x11768 x27167)
+:assumption (or (not x14377) (not x20024))
+:assumption (or (not x13944) (not x21192))
+:assumption (or (not x13793) (not x13539) x25543 (not x1279) (not x1371) x3936 x17299)
+:assumption (or (not x5900) x15418)
+:assumption (or (not x25492) (not x31401))
+:assumption (or (not x21667) x7003)
+:assumption (or x31429 (not x5528) x10076 x13377 x7229 x1360)
+:assumption (or (not x12082) (not x24245))
+:assumption (or (not x15838) x21792 (not x18335))
+:assumption (or (not x27079) (not x22840))
+:assumption (or (not x29606) x31134 x6719)
+:assumption (or x8407 x10992)
+:assumption (or x3466 x26655)
+:assumption (or x18069 (not x10620) x23244)
+:assumption (or (not x5695) x18852)
+:assumption (or (not x16945) x8395 x17493 (not x15048) x18703)
+:assumption (or (not x8043) (not x8416) x5493)
+:assumption (or (not x1564) x1239 (not x1860))
+:assumption (or (not x27641) (not x24886))
+:assumption (or (not x13956) x20986)
+:assumption (or (not x6214) (not x12351))
+:assumption (or x6854 (not x17207))
+:assumption (or x6740 x8738)
+:assumption (or (not x10952) (not x1218))
+:assumption (or (not x23244) (not x12894))
+:assumption (or x12242 x24632 (not x20325) x20186 (not x19677))
+:assumption (or x9453 x15816)
+:assumption (or x21149 (not x14665))
+:assumption (or (not x20325) (not x28899))
+:assumption (or (not x7245) (not x7707))
+:assumption (or (not x5055) x10227)
+:assumption (or x21246 x1412)
+:assumption (or x6845 (not x27899))
+:assumption (or (not x14321) (not x27061))
+:assumption (or (not x8513) x5798)
+:assumption (or x9002 (not x17274))
+:assumption (or x4764 (not x20929))
+:assumption (or x4222 (not x5177))
+:assumption (or x12124 (not x3095))
+:assumption (or x22550 x5153)
+:assumption (or (not x17106) x29540)
+:assumption (or x13481 (not x12188))
+:assumption (or x1573 (not x8002))
+:assumption (or x28708 (not x30339) (not x3748) x7765 (not x18563) (not x150) x6968)
+:assumption (or x119 x20885 (not x23448))
+:assumption (or x31041 (not x18474))
+:assumption (or (not x20434) x20550)
+:assumption (or x754 (not x8592) x15682 x11975)
+:assumption (or (not x21542) (not x11600))
+:assumption (or x12116 (not x4371) (not x7817) x26469 x1128)
+:assumption (or (not x24391) x16469)
+:assumption (or x15733 x23244 x23921)
+:assumption (or x15484 (not x31247))
+:assumption (or (not x27309) x31815 (not x12721) (not x433) x8257 x2618 x15844)
+:assumption (or (not x20947) (not x18748))
+:assumption (or x5134 (not x8983))
+:assumption (or x2762 x9165)
+:assumption (or (not x27446) (not x24569))
+:assumption (or (not x17166) x28887)
+:assumption (or x3782 (not x5522))
+:assumption (or x19320 (not x23878))
+:assumption (or (not x4273) (not x4701))
+:assumption (or (not x13121) (not x8734))
+:assumption (or x17453 x30224 x9434 (not x17545) (not x4826) x4633)
+:assumption (or x27787 x29615)
+:assumption (or (not x15034) x1226)
+:assumption (or x7159 (not x13998))
+:assumption (or (not x15198) x14811)
+:assumption (or x5283 x13426)
+:assumption (or x971 x16752)
+:assumption (or x30566 (not x21778))
+:assumption (or x14435 (not x28787))
+:assumption (or (not x2943) x3612)
+:assumption (or (not x28238) (not x7026))
+:assumption (or x30916 x28047)
+:assumption (or x19044 (not x24903))
+:assumption (or x15795 (not x13463))
+:assumption (or (not x14098) (not x30993))
+:assumption (or (not x14713) x20277)
+:assumption (or (not x7901) (not x29084))
+:assumption (or (not x6153) (not x19400))
+:assumption (or (not x4082) x24705)
+:assumption (or (not x8002) (not x31666) x8004)
+:assumption (or (not x4079) x9354 (not x14667) x15917)
+:assumption (or (not x25750) x1079)
+:assumption (or x27332 (not x26236))
+:assumption (or x17075 x30035)
+:assumption (or x31027 x14309)
+:assumption (or (not x15121) (not x4482))
+:assumption (or (not x12100) x22852)
+:assumption (or (not x26719) (not x11706))
+:assumption (or x5553 (not x3276))
+:assumption (or (not x23173) x2311)
+:assumption (or x23170 x28490)
+:assumption (or (not x30786) (not x21298) x17830)
+:assumption (or (not x2933) (not x5028))
+:assumption (or (not x14545) (not x1151) (not x18566))
+:assumption (or (not x20119) x13359)
+:assumption (or (not x14119) (not x8146))
+:assumption (or (not x19636) x9080)
+:assumption (or (not x1619) (not x20078))
+:assumption (or x17883 x22387)
+:assumption (or x21046 x25884)
+:assumption (or (not x13411) (not x7037))
+:assumption (or x13488 x16190)
+:assumption (or (not x21549) x12867)
+:assumption (or (not x5131) x26157)
+:assumption (or (not x246) (not x9517))
+:assumption (or (not x18193) x11716)
+:assumption (or x18740 (not x22879))
+:assumption (or x22831 (not x13454) x20550 (not x74))
+:assumption (or x29344 x12591)
+:assumption (or x17836 (not x20087) x12246 x26210)
+:assumption (or x21446 (not x6021))
+:assumption (or (not x2525) x7105)
+:assumption (or (not x30108) (not x16692))
+:assumption (or (not x24869) (not x18045) x19724 (not x14521))
+:assumption (or (not x23308) (not x4932))
+:assumption (or (not x13917) x19062)
+:assumption (or x11114 x15831 x519)
+:assumption (or (not x19987) (not x10084))
+:assumption (or (not x31827) (not x8002))
+:assumption (or (not x20268) (not x27459))
+:assumption (or (not x24852) x346)
+:assumption (or x28516 (not x22389))
+:assumption (or (not x5541) x18003)
+:assumption (or x20916 (not x1044))
+:assumption (or (not x1432) (not x3406))
+:assumption (or (not x6631) (not x25308))
+:assumption (or x12562 (not x24984))
+:assumption (or x4282 x26338)
+:assumption (or (not x739) x4240)
+:assumption (or (not x23817) (not x20193))
+:assumption (or (not x8218) (not x580))
+:assumption (or (not x26049) (not x827))
+:assumption (or x15795 (not x16304) x31333 x28864)
+:assumption (or (not x11153) x9423 x30953)
+:assumption (or (not x21281) (not x25659) (not x16565))
+:assumption (or (not x2470) x7602)
+:assumption (or (not x4846) x14347)
+:assumption (or (not x29407) x17710)
+:assumption (or (not x20170) (not x15874))
+:assumption (or (not x4700) x1267)
+:assumption (or (not x13508) (not x6969) x18951)
+:assumption (or x18371 x5019)
+:assumption (or (not x20087) (not x21815) (not x22583) (not x12692) x12242 x16510 (not x291))
+:assumption (or (not x19740) (not x27049) x21824)
+:assumption (or (not x24170) x6594)
+:assumption (or x9456 x23639)
+:assumption (or x18738 (not x8961))
+:assumption (or x11088 x9461)
+:assumption (or x22112 x21542)
+:assumption (or x5528 (not x20270))
+:assumption (or (not x493) x16258)
+:assumption (or x22173 (not x6366))
+:assumption (or (not x7513) (not x17506))
+:assumption (or x27063 (not x9247) x3772 x4760 (not x9365) (not x16696) (not x8779) x12356 (not x13091))
+:assumption (or x16421 x6078)
+:assumption (or x13714 x26099 x16721)
+:assumption (or (not x27915) x6932 x6289)
+:assumption (or (not x7758) x1967 (not x11206) x12346 (not x30431))
+:assumption (or x12323 (not x21387))
+:assumption (or (not x14078) x99)
+:assumption (or x30839 (not x15115))
+:assumption (or x9970 (not x8748))
+:assumption (or (not x21666) (not x4530))
+:assumption (or (not x16917) (not x29014) x18933 x14362 (not x15177))
+:assumption (or x2422 x27304)
+:assumption (or (not x22618) (not x18595))
+:assumption (or x21885 (not x18583) (not x911) (not x26518) x18519)
+:assumption (or (not x30334) x18596 x8602)
+:assumption (or x21633 (not x22612))
+:assumption (or (not x27082) x18182)
+:assumption (or x19290 (not x8828))
+:assumption (or x20735 x15283)
+:assumption (or (not x21821) (not x25556))
+:assumption (or (not x31399) x9008)
+:assumption (or (not x26937) (not x1698))
+:assumption (or x26263 x18329)
+:assumption (or (not x27176) x25560)
+:assumption (or (not x9039) (not x16745))
+:assumption (or x2334 (not x29319) x13013)
+:assumption (or x4143 x6771)
+:assumption (or (not x20257) (not x25705) (not x8897) x26576 x2401 x14347)
+:assumption (or (not x29618) x14705)
+:assumption (or x26702 (not x10769))
+:assumption (or x17401 (not x8473))
+:assumption (or (not x5599) (not x4375))
+:assumption (or (not x17161) x29697 (not x21202))
+:assumption (or x17533 x12150)
+:assumption (or (not x13500) (not x5377))
+:assumption (or x31829 x21166)
+:assumption (or x29057 (not x2862) x28295 (not x25725) (not x25622) x11301 (not x25592) (not x20891))
+:assumption (or x23230 (not x20783))
+:assumption (or (not x31611) (not x31799))
+:assumption (or (not x17181) x15227)
+:assumption (or (not x3429) (not x14281))
+:assumption (or x8618 (not x20891))
+:assumption (or x2371 x25423)
+:assumption (or (not x7542) (not x15795) x16304 x10524 x27068 (not x7174))
+:assumption (or x4701 x4273)
+:assumption (or (not x12460) x28642)
+:assumption (or x16348 x6195)
+:assumption (or (not x15120) x7847)
+:assumption (or (not x30942) x8623)
+:assumption (or (not x15845) (not x27550))
+:assumption (or (not x20461) (not x15147))
+:assumption (or (not x5528) x3507 (not x22536) x23530 (not x9833) (not x21341))
+:assumption (or (not x17636) (not x9466))
+:assumption (or x19023 x16025 x29027)
+:assumption (or x5885 (not x26486))
+:assumption (or x771 x23027)
+:assumption (or x13956 x17832)
+:assumption (or x1423 x19399 (not x29932))
+:assumption (or (not x24756) (not x22697))
+:assumption (or x16565 (not x21850))
+:assumption (or x6137 (not x26084))
+:assumption (or x25112 x22794)
+:assumption (or x23244 (not x30580) x29442)
+:assumption (or x2138 (not x5509))
+:assumption (or x27674 (not x9406) x4227 x925 (not x22983) x21502)
+:assumption (or x16745 x30790 (not x25110) (not x26136))
+:assumption (or x19179 x25745 (not x16179))
+:assumption (or x24307 x3743)
+:assumption (or (not x4750) x9085)
+:assumption (or (not x11792) x8320)
+:assumption (or (not x30502) (not x3202))
+:assumption (or x347 x3513)
+:assumption (or (not x18582) (not x2009))
+:assumption (or x17915 (not x14580))
+:assumption (or (not x26459) (not x25721))
+:assumption (or x11030 x10981)
+:assumption (or (not x8002) x9466 (not x24310) x21224)
+:assumption (or (not x3293) (not x10185))
+:assumption (or (not x24706) (not x13208))
+:assumption (or (not x27792) x3646)
+:assumption (or (not x10625) x31660)
+:assumption (or (not x25494) (not x22436))
+:assumption (or x6692 x16997 (not x16672))
+:assumption (or x22207 x11792)
+:assumption (or x12020 x14435)
+:assumption (or x2879 (not x2127) x5493)
+:assumption (or (not x31134) x8849 x7709)
+:assumption (or x29606 (not x23746))
+:assumption (or (not x439) (not x3235) x25659 x29959)
+:assumption (or (not x7786) x27138)
+:assumption (or x8908 (not x19327) x6300 (not x29027) x30266 x13441)
+:assumption (or (not x9763) (not x20402) (not x14641))
+:assumption (or (not x11710) x19044)
+:assumption (or (not x25791) x8992 x169)
+:assumption (or (not x18207) x22446 x23799 (not x18886) (not x28619) (not x25496) (not x28751) (not x16926))
+:assumption (or (not x2910) x10011)
+:assumption (or x1391 x31013)
+:assumption (or (not x15159) x31269)
+:assumption (or x27870 x22240 (not x23748) x20967 (not x29499) (not x15948) x24339 (not x4309))
+:assumption (or x8167 x16247)
+:assumption (or (not x5573) (not x27995))
+:assumption (or x27952 x24512 (not x29095) x28418)
+:assumption (or x1364 x2117)
+:assumption (or x6201 (not x5696))
+:assumption (or x23672 (not x27327) (not x6370))
+:assumption (or x20568 x2164)
+:assumption (or (not x18031) x3983)
+:assumption (or x17367 x12350 (not x22755) (not x1845) x12339)
+:assumption (or (not x15790) (not x4259) x10655 (not x18284))
+:assumption (or x9057 x4101)
+:assumption (or x6190 (not x31916) (not x17993))
+:assumption (or (not x17116) (not x25940))
+:assumption (or (not x9172) x473)
+:assumption (or x28227 (not x7506))
+:assumption (or x25109 x23316)
+:assumption (or x18804 (not x2328))
+:assumption (or x29179 x9987)
+:assumption (or x19148 (not x10404))
+:assumption (or (not x31193) (not x13819))
+:assumption (or (not x673) (not x23622))
+:assumption (or x21364 (not x20371))
+:assumption (or x23360 x1029 (not x11873) x9937 x5124 (not x13262) x15717 (not x2847))
+:assumption (or (not x26653) x17735)
+:assumption (or x11450 (not x1004))
+:assumption (or x2359 x11783 x22248)
+:assumption (or (not x31109) (not x17075) x7495)
+:assumption (or (not x23772) (not x7854) x26792)
+:assumption (or x10447 (not x24722))
+:assumption (or (not x1810) (not x8941) x11271 (not x7714) x31840)
+:assumption (or (not x28607) x13873)
+:assumption (or (not x10909) x14908)
+:assumption (or x6104 x10078)
+:assumption (or (not x29425) (not x7566))
+:assumption (or (not x2793) x6803)
+:assumption (or (not x23675) (not x728))
+:assumption (or x20929 (not x17403))
+:assumption (or x16910 (not x16007) x5709)
+:assumption (or x16426 x28103)
+:assumption (or (not x29591) x10410)
+:assumption (or (not x16381) (not x10231))
+:assumption (or (not x16025) x9438)
+:assumption (or x31458 (not x16578))
+:assumption (or (not x25911) (not x4877) x2868 x11669)
+:assumption (or x26524 (not x29218))
+:assumption (or (not x17920) (not x2383))
+:assumption (or (not x26620) (not x27182))
+:assumption (or x17528 (not x557))
+:assumption (or x19747 x5528)
+:assumption (or (not x13148) (not x24433))
+:assumption (or x20255 x1743)
+:assumption (or (not x739) (not x3564) x17154 x12131 (not x3619))
+:assumption (or (not x21213) (not x25922))
+:assumption (or x25757 (not x11702))
+:assumption (or x27496 x13507)
+:assumption (or x8380 x17297)
+:assumption (or (not x30211) x17052 x22188 (not x28667))
+:assumption (or x9734 x8964)
+:assumption (or (not x24471) (not x20786))
+:assumption (or (not x29759) x10984)
+:assumption (or (not x7002) (not x18181) (not x25659))
+:assumption (or (not x10820) (not x22009))
+:assumption (or (not x21917) x23897)
+:assumption (or (not x6954) (not x24765))
+:assumption (or (not x1277) (not x25366))
+:assumption (or x13576 (not x15269))
+:assumption (or x7297 (not x25888))
+:assumption (or x23339 (not x9070))
+:assumption (or x13407 (not x29177) x881 (not x4570) x4504 (not x18190) x31912)
+:assumption (or x1099 x16171)
+:assumption (or x23852 x29959)
+:assumption (or (not x27013) (not x4978))
+:assumption (or (not x3088) (not x13277))
+:assumption (or x2474 x9699)
+:assumption (or (not x298) x20644)
+:assumption (or x7948 (not x17527))
+:assumption (or (not x5287) (not x10816))
+:assumption (or x15538 (not x2526))
+:assumption (or (not x17041) x25227)
+:assumption (or x31645 x31503)
+:assumption (or (not x27537) (not x197))
+:assumption (or (not x9075) x13479)
+:assumption (or x16784 (not x12104) (not x17881) (not x20616))
+:assumption (or x26631 (not x18082))
+:assumption (or (not x6385) x28779)
+:assumption (or (not x26914) x30515)
+:assumption (or (not x677) x28116)
+:assumption (or x14159 x8537)
+:assumption (or (not x24722) (not x23483))
+:assumption (or (not x12838) x25827)
+:assumption (or (not x25748) x10977)
+:assumption (or (not x6351) (not x25106) x953)
+:assumption (or x16376 x8602 (not x3479))
+:assumption (or x21631 (not x8211) x2122)
+:assumption (or (not x14810) x20432 x14523 x7243 x13844)
+:assumption (or (not x28624) x3651)
+:assumption (or x16482 (not x16891) x7732 (not x6633) x31342)
+:assumption (or (not x9812) (not x2807))
+:assumption (or (not x30316) x6522)
+:assumption (or (not x9525) (not x15795))
+:assumption (or (not x27089) (not x5886))
+:assumption (or x3044 (not x23560))
+:assumption (or (not x28088) x28275)
+:assumption (or x7324 x14712)
+:assumption (or x16374 x23916)
+:assumption (or x12692 (not x25369))
+:assumption (or (not x23243) x24516 (not x16025))
+:assumption (or x27981 x12537)
+:assumption (or (not x29086) (not x25877))
+:assumption (or (not x20406) (not x16057))
+:assumption (or x8966 (not x8002))
+:assumption (or (not x9454) (not x23484))
+:assumption (or x10505 (not x5904))
+:assumption (or (not x17131) x2810)
+:assumption (or (not x6884) x24726)
+:assumption (or x15064 (not x8492))
+:assumption (or (not x4259) x26870 x24570)
+:assumption (or (not x6530) (not x18245) (not x19428) x11099)
+:assumption (or (not x5559) x616 x2334)
+:assumption (or (not x5092) x13036)
+:assumption (or (not x28822) (not x18981))
+:assumption (or x18859 (not x5969))
+:assumption (or x14839 x6134 x28172 x27740)
+:assumption (or (not x526) x22669)
+:assumption (or (not x20402) x17168)
+:assumption (or (not x23764) x237)
+:assumption (or (not x13625) (not x11296) x7110)
+:assumption (or (not x11163) (not x1831))
+:assumption (or (not x23614) (not x6990) (not x7325) x7032 x16856)
+:assumption (or x17406 x7668)
+:assumption (or x17866 x8832)
+:assumption (or x25645 x10364)
+:assumption (or (not x29243) x8524)
+:assumption (or x19428 (not x25654))
+:assumption (or (not x17534) (not x24170))
+:assumption (or (not x5863) x25261)
+:assumption (or (not x22363) x7875)
+:assumption (or x19236 x8035)
+:assumption (or x16409 (not x25324))
+:assumption (or (not x4487) x17991)
+:assumption (or (not x30432) x8734 x21154 (not x31085) x25240 x14185)
+:assumption (or (not x24722) (not x11146))
+:assumption (or x16166 x23695)
+:assumption (or x23244 x16529 (not x2133))
+:assumption (or (not x25334) x9119)
+:assumption (or x11735 x3455)
+:assumption (or (not x2742) (not x30597) (not x1688))
+:assumption (or (not x19208) x30825 (not x2334))
+:assumption (or (not x10400) (not x31136))
+:assumption (or (not x20022) x2489)
+:assumption (or (not x17529) x6460)
+:assumption (or (not x19566) (not x9643))
+:assumption (or (not x24689) (not x15994))
+:assumption (or x17577 (not x3260))
+:assumption (or x289 x10932)
+:assumption (or x15035 (not x12889))
+:assumption (or x13291 x8230)
+:assumption (or (not x19619) x12422)
+:assumption (or (not x28487) (not x13576) (not x196) x6951)
+:assumption (or (not x19284) x3622)
+:assumption (or x27031 x12079)
+:assumption (or (not x22375) x17955)
+:assumption (or x2562 (not x16025))
+:assumption (or (not x25240) x11723)
+:assumption (or x24870 (not x12119))
+:assumption (or x30860 (not x19156))
+:assumption (or (not x27242) x23346)
+:assumption (or x27010 (not x2039))
+:assumption (or x30961 (not x13294))
+:assumption (or (not x29489) x10335 (not x4414) (not x9008) (not x5528))
+:assumption (or x20936 (not x13508))
+:assumption (or x1778 x11889 x29971 (not x15735))
+:assumption (or (not x3408) (not x19667))
+:assumption (or x16189 x9814)
+:assumption (or (not x29553) x3158)
+:assumption (or x26460 (not x18125))
+:assumption (or (not x25809) (not x736) (not x29183) x26450 (not x7924) (not x6706) x22966 (not x3116))
+:assumption (or (not x7012) x20459)
+:assumption (or x25230 (not x19625))
+:assumption (or (not x3774) (not x17232))
+:assumption (or (not x6773) (not x11132))
+:assumption (or (not x27359) (not x21804))
+:assumption (or (not x20080) x2483)
+:assumption (or x21632 (not x28428))
+:assumption (or (not x2237) x13264)
+:assumption (or (not x21633) (not x15036) x19631 x27233)
+:assumption (or (not x10043) (not x25376) x11317)
+:assumption (or x1305 (not x7641))
+:assumption (or (not x8992) x169 (not x9687))
+:assumption (or (not x5965) x25821)
+:assumption (or (not x13499) (not x11391))
+:assumption (or x22556 (not x21298))
+:assumption (or x8105 (not x16787))
+:assumption (or (not x31443) (not x16677))
+:assumption (or (not x11126) (not x169) x17504 (not x964))
+:assumption (or x26775 (not x11871))
+:assumption (or (not x28676) x11438)
+:assumption (or (not x27483) (not x11829))
+:assumption (or x4766 x745)
+:assumption (or (not x6356) (not x4623))
+:assumption (or x25090 (not x10000))
+:assumption (or x8714 x7955)
+:assumption (or (not x28270) (not x11938) x25681)
+:assumption (or (not x23225) x21526)
+:assumption (or (not x14462) (not x3074))
+:assumption (or (not x24164) x12811)
+:assumption (or (not x2574) x13147)
+:assumption (or (not x16271) (not x11918))
+:assumption (or x12676 x748 x27694)
+:assumption (or (not x11763) x27275)
+:assumption (or x23399 (not x3239) (not x9025))
+:assumption (or x27341 x10366)
+:assumption (or x19834 x22258 x22299)
+:assumption (or x27738 (not x19450) x7221 (not x4718) (not x31042) (not x15238) x17291)
+:assumption (or x20959 (not x8825) (not x26753))
+:assumption (or (not x16417) x28769)
+:assumption (or (not x16193) x14009)
+:assumption (or x19555 (not x15226))
+:assumption (or x25196 (not x28691))
+:assumption (or (not x30815) x26909)
+:assumption (or (not x13623) x15593)
+:assumption (or (not x2267) (not x9465))
+:assumption (or x31070 x26270 (not x30538) x19174)
+:assumption (or (not x23398) x15520)
+:assumption (or x1964 (not x11713) x21263 x4692 x3232 x18652 (not x18180) (not x28240) x18823 (not x2125) (not x10203) x4585)
+:assumption (or (not x31401) x10176)
+:assumption (or (not x31561) (not x12982) x3229 (not x30799) (not x5131) x20817 x21126 (not x30857) (not x9741) (not x20096) x23012 x13493)
+:assumption (or (not x25255) x11479)
+:assumption (or (not x11281) (not x29532))
+:assumption (or x26208 x17257)
+:assumption (or x762 (not x23244) (not x18394))
+:assumption (or x18755 (not x29658))
+:assumption (or x18333 x3770 (not x28638))
+:assumption (or x12045 x19244 (not x13253) x30736 (not x23539) x26976)
+:assumption (or x6117 x26024)
+:assumption (or x3455 (not x14456))
+:assumption (or (not x15552) x8172)
+:assumption (or x15790 x18284)
+:assumption (or x2561 x9585)
+:assumption (or (not x5882) (not x3182))
+:assumption (or (not x10079) x26336)
+:assumption (or (not x8849) x12609)
+:assumption (or (not x17101) (not x24929))
+:assumption (or x10293 x30113)
+:assumption (or (not x13194) (not x9008))
+:assumption (or x567 x17571)
+:assumption (or (not x21559) (not x5394) x8132 x31698)
+:assumption (or x8002 (not x29794) (not x8075))
+:assumption (or x3242 (not x31058) x28820 (not x2732))
+:assumption (or x11651 (not x4667))
+:assumption (or x31031 x20869)
+:assumption (or (not x11420) (not x1667))
+:assumption (or (not x28637) (not x29367))
+:assumption (or x21105 (not x15502))
+:assumption (or (not x30378) x13445)
+:assumption (or (not x25665) x10454)
+:assumption (or (not x8619) x28655 x30439 x12313)
+:assumption (or x26420 x8022)
+:assumption (or x9233 (not x7627) x3951 (not x30578) (not x12338) x480 (not x27457) (not x4768))
+:assumption (or (not x27408) x6516 x25659)
+:assumption (or x31564 (not x6897))
+:assumption (or x27937 x4491)
+:assumption (or (not x26606) (not x20552))
+:assumption (or (not x25956) x27233)
+:assumption (or x29059 (not x17009))
+:assumption (or (not x30822) (not x19625))
+:assumption (or (not x11401) x5246 x26149 x9008 x28755 (not x29033))
+:assumption (or x15222 x18567)
+:assumption (or x7530 x16351)
+:assumption (or (not x7594) (not x26848))
+:assumption (or (not x10674) (not x15292))
+:assumption (or x28402 x23949)
+:assumption (or (not x14682) (not x31404))
+:assumption (or (not x22199) (not x13333))
+:assumption (or (not x19894) x13268)
+:assumption (or (not x20550) x13854 x25659 (not x288) x30432)
+:assumption (or (not x26667) (not x3316))
+:assumption (or (not x30279) x16775)
+:assumption (or (not x728) (not x28912))
+:assumption (or x22338 (not x18555))
+:assumption (or (not x25313) x2387)
+:assumption (or x23210 (not x13970))
+:assumption (or (not x5879) x22553)
+:assumption (or x1106 (not x8621))
+:assumption (or (not x19087) x28397)
+:assumption (or x5025 (not x18048))
+:assumption (or x22495 (not x4728) x3149)
+:assumption (or x12195 (not x6243))
+:assumption (or (not x12067) x2163)
+:assumption (or x8002 x5475)
+:assumption (or (not x25425) (not x7975))
+:assumption (or (not x16323) x31099)
+:assumption (or (not x16440) (not x2449))
+:assumption (or (not x364) (not x21245))
+:assumption (or x3031 (not x6188))
+:assumption (or x18435 x27350 (not x23718) x14761 (not x2233) (not x10859))
+:assumption (or (not x8132) (not x4855))
+:assumption (or (not x11466) (not x6018))
+:assumption (or x19992 x17303)
+:assumption (or (not x23509) (not x19584) (not x4983) x16510 x480)
+:assumption (or (not x474) x21017)
+:assumption (or x21141 (not x28085))
+:assumption (or x10600 x101)
+:assumption (or (not x777) (not x26344))
+:assumption (or (not x10999) x9008)
+:assumption (or (not x19631) (not x27233))
+:assumption (or (not x17532) x19004)
+:assumption (or (not x9336) (not x12395))
+:assumption (or (not x20570) (not x26670))
+:assumption (or x4259 (not x2619))
+:assumption (or (not x15552) x29067)
+:assumption (or (not x29524) (not x21395))
+:assumption (or (not x30138) (not x7738))
+:assumption (or (not x2203) (not x30493) x579 x10052)
+:assumption (or x5696 x18104 x3050 x20850)
+:assumption (or x27356 (not x20012))
+:assumption (or x23386 (not x13032))
+:assumption (or (not x2151) (not x31532))
+:assumption (or x25389 (not x13956))
+:assumption (or (not x6703) x14866)
+:assumption (or (not x21345) (not x28212))
+:assumption (or x16196 (not x16024))
+:assumption (or (not x17501) x19363)
+:assumption (or x5015 x11021)
+:assumption (or (not x9855) (not x29660))
+:assumption (or x16436 x14031)
+:assumption (or (not x18700) x21598)
+:assumption (or x9983 (not x27468))
+:assumption (or (not x10748) x11144)
+:assumption (or x31487 (not x859) x1354)
+:assumption (or x26971 x17710)
+:assumption (or (not x28541) (not x140))
+:assumption (or x7335 (not x24834))
+:assumption (or x9037 x20703)
+:assumption (or x30546 x25354)
+:assumption (or x28765 (not x1017))
+:assumption (or x9674 (not x29442))
+:assumption (or (not x14542) (not x26275))
+:assumption (or x6635 x5134)
+:assumption (or (not x5696) x786)
+:assumption (or (not x20323) (not x30504))
+:assumption (or (not x9378) (not x24638))
+:assumption (or (not x26323) (not x14932))
+:assumption (or x30255 (not x13956) x13341)
+:assumption (or x27105 (not x24987))
+:assumption (or x27163 x2272)
+:assumption (or (not x21653) (not x14767) x10237)
+:assumption (or x31318 x9395)
+:assumption (or (not x6113) x11250)
+:assumption (or (not x30110) x15272)
+:assumption (or (not x2606) x22928)
+:assumption (or x31887 (not x21070) (not x24546) (not x9531))
+:assumption (or (not x31908) x5856)
+:assumption (or (not x24150) x15445)
+:assumption (or x17970 x14907)
+:assumption (or x357 (not x30708))
+:assumption (or x6220 x24948)
+:assumption (or (not x24063) x17942 (not x7049) (not x9444) x1328 (not x21584) x31909 (not x5927) (not x12130))
+:assumption (or (not x28929) x3436)
+:assumption (or x28022 (not x10958))
+:assumption (or (not x5635) x15030)
+:assumption (or (not x15861) x9510)
+:assumption (or x12760 (not x27985))
+:assumption (or x689 (not x25475))
+:assumption (or x22573 x8451)
+:assumption (or x3726 (not x20352))
+:assumption (or x24937 (not x26788) x26682 x13672 (not x10083))
+:assumption (or x14615 (not x7031))
+:assumption (or x18859 (not x703) (not x14354))
+:assumption (or (not x2307) (not x9387))
+:assumption (or x31193 (not x21298) x13819 x29994)
+:assumption (or (not x29321) (not x11911))
+:assumption (or x1623 x18138)
+:assumption (or x20788 (not x17352))
+:assumption (or (not x10401) x27547)
+:assumption (or x17256 (not x10755))
+:assumption (or x16470 (not x20178))
+:assumption (or x21202 (not x11659))
+:assumption (or (not x2739) (not x790) x17628 x8229)
+:assumption (or x24733 (not x23540))
+:assumption (or x26567 (not x15278))
+:assumption (or x142 (not x21591))
+:assumption (or (not x30048) (not x11533) x18003)
+:assumption (or (not x18203) x17048)
+:assumption (or (not x18293) (not x15702))
+:assumption (or (not x12242) (not x189))
+:assumption (or x17450 x21753 x6825 x10209)
+:assumption (or (not x25718) (not x22501))
+:assumption (or x19385 (not x2487))
+:assumption (or x26142 x24406)
+:assumption (or (not x28698) x12435)
+:assumption (or (not x28955) x7382 (not x3021) (not x13879) (not x31194))
+:assumption (or (not x11772) (not x25294))
+:assumption (or x31300 x22384)
+:assumption (or (not x10179) x25912)
+:assumption (or (not x11041) x31346)
+:assumption (or x2769 x30410 x10129 x29962 x17880 x6478 (not x24067))
+:assumption (or x22721 x30253)
+:assumption (or x529 x21082)
+:assumption (or (not x15892) (not x12007))
+:assumption (or (not x14524) x17385 (not x2055) (not x3185) (not x30388))
+:assumption (or x4659 (not x17116))
+:assumption (or (not x26316) (not x25888))
+:assumption (or x10591 (not x21415))
+:assumption (or x30852 (not x3597))
+:assumption (or (not x15403) (not x27305))
+:assumption (or x9147 x945)
+:assumption (or x24024 (not x5614))
+:assumption (or (not x22754) (not x8496))
+:assumption (or (not x3574) x7025 x8979 (not x9688))
+:assumption (or (not x7108) x20020)
+:assumption (or (not x30282) (not x19992))
+:assumption (or (not x27106) x4861)
+:assumption (or (not x8445) (not x8002))
+:assumption (or x13192 x25568)
+:assumption (or x22676 x14861)
+:assumption (or (not x4951) x1566)
+:assumption (or (not x29649) x7496)
+:assumption (or (not x16564) x19201)
+:assumption (or x7492 x17840)
+:assumption (or x9008 (not x11486))
+:assumption (or x30719 (not x9145))
+:assumption (or (not x21000) (not x4504))
+:assumption (or x6594 x19311)
+:assumption (or (not x1427) x26770)
+:assumption (or x14682 x31404)
+:assumption (or (not x21516) x23801 x11744 x6628 x23798 (not x16971) x24968)
+:assumption (or (not x28813) (not x23416))
+:assumption (or (not x29259) x13258)
+:assumption (or x7996 (not x11090))
+:assumption (or (not x21440) (not x17023))
+:assumption (or (not x5762) x1522)
+:assumption (or x16776 x18550)
+:assumption (or x31627 x9618)
+:assumption (or x15872 (not x12489))
+:assumption (or x19057 (not x30138) x20740 (not x29000))
+:assumption (or x26603 (not x8378))
+:assumption (or (not x25211) (not x18244))
+:assumption (or x25046 x8739)
+:assumption (or (not x28488) x11986 x26972 (not x28079))
+:assumption (or x28591 x22136)
+:assumption (or x445 (not x4210))
+:assumption (or (not x18803) x21651)
+:assumption (or (not x20810) (not x6641))
+:assumption (or x2235 x29061)
+:assumption (or x14053 x25533)
+:assumption (or (not x29965) x1452)
+:assumption (or (not x22410) (not x6589))
+:assumption (or x13879 x31194)
+:assumption (or (not x10615) x29546)
+:assumption (or x25911 x11664)
+:assumption (or (not x10336) x18662)
+:assumption (or (not x18060) x2983)
+:assumption (or x26451 x5246 x3994 x28305 x24945)
+:assumption (or x28961 (not x13674))
+:assumption (or (not x28937) x20201 x2565)
+:assumption (or (not x7119) (not x24079))
+:assumption (or x8052 (not x92))
+:assumption (or x24453 (not x14750))
+:assumption (or (not x11504) (not x15824))
+:assumption (or (not x26650) x2843)
+:assumption (or x31664 (not x20072))
+:assumption (or (not x7748) x24708)
+:assumption (or x485 (not x25947))
+:assumption (or x9008 x30322)
+:assumption (or (not x30534) (not x21409))
+:assumption (or (not x29090) (not x24585))
+:assumption (or (not x7342) (not x15799))
+:assumption (or (not x31179) (not x12980) x23244)
+:assumption (or x25181 (not x4504))
+:assumption (or (not x30711) (not x964))
+:assumption (or (not x17141) (not x15085))
+:assumption (or (not x4356) x3690)
+:assumption (or (not x26757) x31763)
+:assumption (or (not x12134) (not x29389))
+:assumption (or x22004 (not x12806))
+:assumption (or x12321 x27861)
+:assumption (or (not x10780) (not x21554) x14799 x12418)
+:assumption (or x15953 (not x9160) x20998 x17180 x26499 (not x5528))
+:assumption (or x27665 x13484)
+:assumption (or x7478 (not x23631))
+:assumption (or (not x16075) x6454)
+:assumption (or (not x27885) (not x4491) x9200 (not x9469))
+:assumption (or x21138 x16648 x24740 x24388)
+:assumption (or x7426 (not x20288))
+:assumption (or (not x4693) (not x3203))
+:assumption (or (not x20949) (not x3720))
+:assumption (or (not x3322) (not x13285))
+:assumption (or (not x754) (not x17848) (not x9764) x15482)
+:assumption (or x8602 (not x5892) x10422)
+:assumption (or x16374 (not x14855) x14455)
+:assumption (or (not x1913) (not x16679))
+:assumption (or x7577 x25721)
+:assumption (or x24317 (not x6351))
+:assumption (or x24266 x13610)
+:assumption (or x11955 x1582)
+:assumption (or x11506 x476)
+:assumption (or (not x295) (not x21546))
+:assumption (or x28882 (not x10949))
+:assumption (or (not x13756) (not x1179))
+:assumption (or x23956 (not x9500))
+:assumption (or (not x24756) x14988 (not x2692))
+:assumption (or (not x7132) x14214)
+:assumption (or (not x24624) x27028)
+:assumption (or x5661 (not x11281) x7727 (not x2869))
+:assumption (or (not x26520) (not x29958))
+:assumption (or x15707 x8196 x141 (not x27906))
+:assumption (or (not x22005) (not x2831))
+:assumption (or (not x16252) x21976 x15252)
+:assumption (or x4531 (not x18003))
+:assumption (or x14443 x7537)
+:assumption (or x22534 (not x21649))
+:assumption (or (not x13752) x6319)
+:assumption (or x25887 x17874)
+:assumption (or x23244 x6688)
+:assumption (or (not x11339) x16409)
+:assumption (or (not x2585) x14831)
+:assumption (or (not x15596) (not x30116))
+:assumption (or (not x15917) (not x20437))
+:assumption (or x4081 x5127)
+:assumption (or x7158 x9859)
+:assumption (or (not x24442) (not x13853))
+:assumption (or (not x31640) (not x2127) (not x13337) (not x15182))
+:assumption (or x27246 x8002)
+:assumption (or x9689 x13291)
+:assumption (or (not x25816) x20700)
+:assumption (or x8725 x23592 x28462 x13244)
+:assumption (or x7707 (not x5528) (not x5688) (not x31855) x2351 x7245)
+:assumption (or x24118 (not x1701))
+:assumption (or (not x30898) x5667)
+:assumption (or x2656 (not x8781) (not x29957) (not x10939))
+:assumption (or (not x14728) x10962)
+:assumption (or x8918 (not x23161))
+:assumption (or x2996 x169 x6651 (not x16755) x16510)
+:assumption (or (not x23670) (not x1219))
+:assumption (or x21000 x6228)
+:assumption (or (not x9083) x31899)
+:assumption (or x4755 x17053)
+:assumption (or x19021 x17740 x23090 x22531 x30304)
+:assumption (or (not x9808) (not x1537))
+:assumption (or (not x1849) (not x29450))
+:assumption (or x6898 (not x6507))
+:assumption (or (not x24722) (not x20463))
+:assumption (or x4998 x15795)
+:assumption (or (not x31811) (not x31391))
+:assumption (or x1884 x11661 x14197 (not x30231) (not x1095))
+:assumption (or (not x1852) (not x15620))
+:assumption (or (not x21298) x23152 x21249)
+:assumption (or (not x28790) x10806)
+:assumption (or x24601 (not x22931) x20151 (not x2466) (not x27667) x21688 x13906 (not x16374))
+:assumption (or x28830 (not x17541))
+:assumption (or (not x7192) (not x28721))
+:assumption (or x3088 x10339)
+:assumption (or (not x18279) x16603)
+:assumption (or (not x18720) x6978)
+:assumption (or (not x10847) x30576)
+:assumption (or (not x1142) (not x10821))
+:assumption (or x25659 (not x3664) x20550 x9779 x5028)
+:assumption (or x2956 (not x6794) (not x24565) x22768 x31155)
+:assumption (or x18859 x6398 (not x8350))
+:assumption (or (not x13656) x2707 (not x5058) x18055 x5970 x23203)
+:assumption (or x11847 x18808)
+:assumption (or x6636 (not x6675))
+:assumption (or x11599 x24468)
+:assumption (or (not x4356) (not x26424))
+:assumption (or (not x18894) x11120)
+:assumption (or x16834 x31655)
+:assumption (or x15048 x16945)
+:assumption (or (not x24448) x31554)
+:assumption (or (not x16021) (not x12588) (not x18640) x21298)
+:assumption (or x10064 (not x12746))
+:assumption (or (not x9647) (not x22744))
+:assumption (or x15490 (not x10094))
+:assumption (or x14010 (not x6295) (not x17076) x28639)
+:assumption (or (not x20273) x21298)
+:assumption (or (not x1996) (not x9531))
+:assumption (or (not x23476) x18519 x8240 (not x4396) x9410)
+:assumption (or (not x29005) (not x25633))
+:assumption (or x1698 (not x25762))
+:assumption (or (not x18920) x16579)
+:assumption (or x15156 x16824)
+:assumption (or (not x18779) (not x23672))
+:assumption (or (not x24893) x1830)
+:assumption (or x2020 (not x14862))
+:assumption (or x14473 (not x280))
+:assumption (or x3821 (not x10428))
+:assumption (or (not x21490) x9727)
+:assumption (or x31902 x12089)
+:assumption (or (not x9552) (not x25535))
+:assumption (or (not x11306) (not x27550))
+:assumption (or x31616 (not x30517) (not x26050) x27627 x190 x6743 x24484)
+:assumption (or x27400 (not x23399) (not x7537) (not x22722))
+:assumption (or (not x12472) x16759)
+:assumption (or x16467 (not x17595) (not x148))
+:assumption (or x7896 (not x1930))
+:assumption (or x16235 (not x27036))
+:assumption (or x8295 (not x7959))
+:assumption (or x28094 x16344)
+:assumption (or (not x170) x9625)
+:assumption (or (not x11864) x29816)
+:assumption (or x15795 (not x23767))
+:assumption (or x11687 (not x17733))
+:assumption (or x26936 (not x14455) (not x3435) (not x17671))
+:assumption (or (not x31089) (not x23994))
+:assumption (or (not x930) (not x2854))
+:assumption (or (not x13870) (not x20832) (not x6816))
+:assumption (or x28639 x29550)
+:assumption (or (not x566) x5431)
+:assumption (or x29647 x5552)
+:assumption (or x3538 x10066)
+:assumption (or x12811 x30422)
+:assumption (or x30568 (not x15263) x13194 (not x29445) (not x18531) x9008)
+:assumption (or x26714 (not x18341))
+:assumption (or x8864 x30279 (not x26850) (not x16775))
+:assumption (or (not x17359) (not x28535))
+:assumption (or x150 (not x7765))
+:assumption (or (not x14641) x25366 x20402 x18737 (not x20929))
+:assumption (or x23731 x2368)
+:assumption (or (not x9619) (not x21330))
+:assumption (or x22492 x24756)
+:assumption (or (not x20513) (not x3001))
+:assumption (or (not x6780) (not x17081))
+:assumption (or x1561 (not x13238))
+:assumption (or x30103 x12282 (not x31767) x29066)
+:assumption (or (not x19226) (not x20937))
+:assumption (or x29376 (not x4084))
+:assumption (or x9160 (not x17180))
+:assumption (or (not x3710) (not x613) (not x21853) x14416 (not x21222) x14331 (not x13458) (not x5245))
+:assumption (or x13059 (not x12967))
+:assumption (or (not x6667) (not x14160))
+:assumption (or (not x24800) x8875)
+:assumption (or (not x479) (not x30229))
+:assumption (or x4411 x13219)
+:assumption (or x20459 x10807)
+:assumption (or x201 (not x29756))
+:assumption (or x3091 x6011)
+:assumption (or x3646 (not x8074))
+:assumption (or (not x18499) x19217 x16099 (not x31785) (not x31312))
+:assumption (or (not x27454) x20584)
+:assumption (or (not x21578) (not x29096))
+:assumption (or x18859 x28081 (not x9729))
+:assumption (or x2519 (not x25402))
+:assumption (or x11120 (not x7735))
+:assumption (or x4272 x29846)
+:assumption (or x16882 (not x8791))
+:assumption (or x28682 x16134)
+:assumption (or x3225 x2162)
+:assumption (or (not x541) x3966)
+:assumption (or x31275 x15173)
+:assumption (or x8758 (not x15683) (not x23106) (not x11003) x5563 (not x24037) x14833)
+:assumption (or (not x579) x26164)
+:assumption (or x11176 x13345)
+:assumption (or (not x25839) x3965)
+:assumption (or (not x3132) (not x17161))
+:assumption (or (not x31351) (not x25395) (not x25327) x23881 x12951 (not x20511) x25993 (not x9273) (not x5460))
+:assumption (or x11160 x10811)
+:assumption (or (not x25610) (not x23435))
+:assumption (or (not x19664) x24152)
+:assumption (or (not x24387) (not x28035))
+:assumption (or (not x29987) x27059 x25606 (not x24104) x6911 x17033 x13749 x31643)
+:assumption (or x8942 x21881)
+:assumption (or x10336 (not x14838))
+:assumption (or x4326 x10526)
+:assumption (or (not x102) x3076 x31525 (not x1461) (not x18099) (not x24097) (not x26579) (not x25004))
+:assumption (or (not x6247) (not x13111))
+:assumption (or (not x27983) (not x2935))
+:assumption (or x30224 (not x210))
+:assumption (or x7455 x15663)
+:assumption (or x5898 x31373)
+:assumption (or x29884 x22245)
+:assumption (or (not x24605) x20978)
+:assumption (or (not x2362) (not x9507))
+:assumption (or x16448 x3117 (not x7919) x30629 (not x15241) (not x29286) (not x9126) x23934)
+:assumption (or x8177 x8721)
+:assumption (or (not x3898) x1552 x10097 x15551)
+:assumption (or x5225 x2539 (not x23240) (not x23453) x16723 (not x499))
+:assumption (or x18211 x16742)
+:assumption (or (not x6780) (not x19605))
+:assumption (or x2912 x2720)
+:assumption (or x8002 (not x10833))
+:assumption (or x13156 (not x22244))
+:assumption (or x28203 x21197)
+:assumption (or x14479 (not x19307) x5528)
+:assumption (or (not x711) (not x25138) (not x23510))
+:assumption (or x9699 (not x26396))
+:assumption (or (not x30948) x131)
+:assumption (or x20119 (not x11234))
+:assumption (or x27571 x9207)
+:assumption (or (not x10569) x31777 (not x1634) x20134)
+:assumption (or (not x29596) (not x29731))
+:assumption (or x31419 x16802 x25363)
+:assumption (or x23829 x18904 x27310 x22374 (not x3340) (not x26181))
+:assumption (or x13262 x11873)
+:assumption (or (not x563) x28322)
+:assumption (or x7324 x26549)
+:assumption (or x699 (not x12662))
+:assumption (or (not x8652) x584)
+:assumption (or (not x5040) x994)
+:assumption (or (not x26442) (not x20173))
+:assumption (or (not x1898) (not x26801))
+:assumption (or (not x23325) (not x11887))
+:assumption (or x14618 (not x15117))
+:assumption (or x4591 x21098)
+:assumption (or x28342 (not x21055))
+:assumption (or (not x29452) x16007)
+:assumption (or x13125 x5220)
+:assumption (or x31307 x22755)
+:assumption (or (not x31912) x18190)
+:assumption (or (not x23523) (not x13817))
+:assumption (or (not x8658) x23155)
+:assumption (or x29471 x24244)
+:assumption (or x4425 (not x16647))
+:assumption (or (not x15625) (not x18638))
+:assumption (or (not x26374) (not x20343))
+:assumption (or (not x10039) x2461 x17075 (not x20937))
+:assumption (or x29886 x12542)
+:assumption (or x26846 (not x20810))
+:assumption (or x17011 (not x25308))
+:assumption (or x27158 x23372)
+:assumption (or x5856 (not x20435))
+:assumption (or (not x4932) (not x15876))
+:assumption (or (not x5937) (not x31110))
+:assumption (or (not x25628) (not x5743))
+:assumption (or x28187 (not x3782))
+:assumption (or x7974 x26354)
+:assumption (or x11844 (not x27783))
+:assumption (or x13606 x28181 (not x2504))
+:assumption (or (not x3704) x5949)
+:assumption (or (not x3417) (not x23626))
+:assumption (or (not x13576) x26592)
+:assumption (or x30598 x12923)
+:assumption (or x10586 x12575)
+:assumption (or (not x24527) x18961)
+:assumption (or (not x6476) x23611)
+:assumption (or (not x15088) x29542)
+:assumption (or x23244 (not x8002) (not x31123))
+:assumption (or x19630 (not x23885))
+:assumption (or x1292 x12015)
+:assumption (or x572 (not x17225))
+:assumption (or x14570 (not x21298) x7855)
+:assumption (or (not x16304) (not x11997) x15795)
+:assumption (or x24597 (not x26042) (not x12251) (not x28579) x17468 x11721)
+:assumption (or x23399 x10792)
+:assumption (or (not x28073) x14791)
+:assumption (or x9675 (not x15436))
+:assumption (or x12055 (not x6554) x19186 x14435)
+:assumption (or x28883 x15422 (not x25840) (not x23561))
+:assumption (or (not x31681) x27062 x17116)
+:assumption (or (not x13659) (not x12411))
+:assumption (or (not x13072) x11938)
+:assumption (or (not x360) (not x2210))
+:assumption (or (not x109) x8695 x12 x78 x25355 (not x19959))
+:assumption (or x11144 x16229 (not x1993))
+:assumption (or (not x6066) (not x7134))
+:assumption (or x25977 x18099)
+:assumption (or (not x23279) x15878)
+:assumption (or (not x9663) (not x9476))
+:assumption (or (not x28607) (not x3662))
+:assumption (or x11517 x24333)
+:assumption (or x13956 (not x944))
+:assumption (or x31214 (not x8237))
+:assumption (or (not x9558) x14791)
+:assumption (or x22531 x19997 x17552 x13600)
+:assumption (or x5504 x9008)
+:assumption (or (not x5833) (not x22495) (not x18165))
+:assumption (or (not x8002) (not x27632))
+:assumption (or (not x23667) (not x25659) x11780 (not x21786) x12812 (not x3615) x8064 (not x10523))
+:assumption (or (not x11792) (not x19362))
+:assumption (or (not x8866) (not x19443))
+:assumption (or x31295 (not x5713) (not x11288) x30401 x18512 x28859)
+:assumption (or x26027 x4799 x11085 x18295 (not x23945) (not x26270))
+:assumption (or x12109 (not x417))
+:assumption (or x21578 x10344)
+:assumption (or (not x30744) (not x16726))
+:assumption (or x23802 x29442)
+:assumption (or (not x16470) x7216)
+:assumption (or x3247 (not x972) x18821 x11431)
+:assumption (or x5809 (not x5019))
+:assumption (or (not x23823) x13977)
+:assumption (or x424 (not x8002))
+:assumption (or (not x25160) x31812)
+:assumption (or x30335 x23244 x1725)
+:assumption (or (not x13771) x29002)
+:assumption (or (not x28683) (not x27622))
+:assumption (or (not x31608) x4936)
+:assumption (or x13121 x25659)
+:assumption (or (not x15220) x5095 x29606)
+:assumption (or x27571 x8961)
+:assumption (or x11120 (not x7595))
+:assumption (or (not x9167) (not x6929))
+:assumption (or x27721 (not x26734))
+:assumption (or x18398 (not x3962))
+:assumption (or (not x14462) x5481)
+:assumption (or (not x12117) x14543)
+:assumption (or x23655 x16385)
+:assumption (or x29970 (not x7166))
+:assumption (or x15512 x5655)
+:assumption (or (not x22600) (not x278))
+:assumption (or (not x27475) (not x2523))
+:assumption (or (not x436) (not x21298) x26849)
+:assumption (or x14910 (not x7147))
+:assumption (or x29312 (not x1011) (not x11191) x24669)
+:assumption (or x4075 x13956)
+:assumption (or x15659 (not x14780))
+:assumption (or x21525 (not x12548))
+:assumption (or (not x26361) (not x8496))
+:assumption (or x27090 (not x3223))
+:assumption (or x15787 x3668)
+:assumption (or (not x14833) (not x28254))
+:assumption (or (not x29132) (not x27469))
+:assumption (or x26008 (not x26752))
+:assumption (or x12378 (not x17335))
+:assumption (or (not x15650) x12148)
+:assumption (or (not x29027) (not x9791))
+:assumption (or x26648 x27254 (not x22855))
+:assumption (or x19478 (not x22363))
+:assumption (or (not x6929) x8243 (not x18859))
+:assumption (or (not x9977) x27196)
+:assumption (or x27945 x21728)
+:assumption (or x5164 (not x7916) (not x6138))
+:assumption (or x2016 (not x22171))
+:assumption (or x22693 (not x10809))
+:assumption (or x9565 x7242)
+:assumption (or (not x20580) (not x17855) (not x2957) (not x12432))
+:assumption (or x31071 x15333)
+:assumption (or x8482 x19075)
+:assumption (or x16003 x6980)
+:assumption (or (not x19127) (not x5338))
+:assumption (or (not x23886) x5787 (not x31176))
+:assumption (or x20741 (not x26279))
+:assumption (or (not x14377) (not x16330))
+:assumption (or x480 x6088 x4636)
+:assumption (or x20659 x168)
+:assumption (or (not x21783) x12337)
+:assumption (or (not x21094) (not x17075))
+:assumption (or x30193 x15290)
+:assumption (or x26654 (not x8002))
+:assumption (or x27200 x17896)
+:assumption (or x4663 (not x6969))
+:assumption (or (not x21785) (not x5175))
+:assumption (or (not x13956) (not x23318))
+:assumption (or x13109 x10558)
+:assumption (or (not x10359) x6335)
+:assumption (or (not x28011) x9016)
+:assumption (or x18718 (not x19038))
+:assumption (or (not x9779) (not x29540))
+:assumption (or (not x6982) x18729)
+:assumption (or (not x27476) x20550)
+:assumption (or (not x7982) x27880)
+:assumption (or (not x5855) (not x8115))
+:assumption (or x31692 x24756 (not x12271))
+:assumption (or (not x13369) (not x27818))
+:assumption (or (not x24556) x13248)
+:assumption (or (not x27710) x30526)
+:assumption (or x16025 x8110 (not x21013))
+:assumption (or x19471 x15072 x24112)
+:assumption (or (not x18511) (not x26996))
+:assumption (or x18799 (not x30539))
+:assumption (or x11929 (not x17489))
+:assumption (or (not x13944) x26927)
+:assumption (or x15356 (not x14432))
+:assumption (or x14705 x28887)
+:assumption (or x4058 (not x12805) (not x5027) x23637)
+:assumption (or (not x23347) (not x6394))
+:assumption (or x3995 x7968)
+:assumption (or x12943 (not x8525) x18470 x17250 (not x793) x9903 x26713 (not x1015))
+:assumption (or (not x8919) (not x12661) (not x22302))
+:assumption (or (not x31233) (not x22025))
+:assumption (or x7774 (not x7917))
+:assumption (or x17434 (not x21682))
+:assumption (or x8666 (not x5438))
+:assumption (or x7973 (not x30428))
+:assumption (or (not x23718) x21103)
+:assumption (or x13163 x26023)
+:assumption (or (not x8992) (not x21313))
+:assumption (or (not x28031) x25243 x31368)
+:assumption (or (not x17361) x5417)
+:assumption (or x27169 x6494)
+:assumption (or (not x19667) x9708)
+:assumption (or (not x9765) (not x24787) x3868)
+:assumption (or (not x7164) (not x27406))
+:assumption (or (not x15911) (not x11748))
+:assumption (or x27990 x25839 (not x11026) (not x3965))
+:assumption (or (not x8642) (not x15987))
+:assumption (or (not x29653) (not x4452))
+:assumption (or (not x15122) x14069)
+:assumption (or (not x17784) x31234)
+:assumption (or x9862 (not x18414))
+:assumption (or (not x23098) (not x30314))
+:assumption (or x14024 x15708)
+:assumption (or x1165 x16977)
+:assumption (or (not x13408) (not x3567))
+:assumption (or x26516 (not x18500) x30113)
+:assumption (or (not x16567) x12629 x806 (not x19878) x7516)
+:assumption (or (not x31499) (not x21941))
+:assumption (or x22327 (not x5394))
+:assumption (or x4883 (not x16796))
+:assumption (or x23561 (not x19394))
+:assumption (or (not x3003) x12180)
+:assumption (or (not x2446) x17142)
+:assumption (or (not x827) (not x13686))
+:assumption (or x30910 (not x13111))
+:assumption (or (not x14396) (not x17087) x26210 x17836)
+:assumption (or (not x8002) x21054)
+:assumption (or x13619 x2028)
+:assumption (or x1903 x19570)
+:assumption (or x18669 (not x1235))
+:assumption (or (not x24293) x27152)
+:assumption (or x1863 x5095)
+:assumption (or (not x8368) x29809 (not x729) x19721)
+:assumption (or (not x20016) x16674 x5931 (not x19500) x18557 (not x1455) x10123 (not x3134))
+:assumption (or x4658 (not x28141))
+:assumption (or x24451 (not x389))
+:assumption (or x25334 x24265)
+:assumption (or x3337 (not x23244))
+:assumption (or (not x29416) x9148)
+:assumption (or (not x23022) (not x18000))
+:assumption (or x6022 (not x17577) x1807 x10302)
+:assumption (or (not x185) (not x30721))
+:assumption (or (not x29085) x21147)
+:assumption (or x3143 x18319)
+:assumption (or x15804 (not x26648))
+:assumption (or x26897 x23726 (not x28153) x16958 x15685 x19371)
+:assumption (or x22792 (not x22656))
+:assumption (or (not x5468) (not x1949))
+:assumption (or (not x20325) x9232 x22076)
+:assumption (or (not x25659) (not x333))
+:assumption (or (not x18658) x21247)
+:assumption (or (not x7530) x13956 x5770)
+:assumption (or x5528 (not x3854))
+:assumption (or (not x23000) x14078)
+:assumption (or (not x16171) x3235)
+:assumption (or x277 (not x11170))
+:assumption (or (not x30500) x28630)
+:assumption (or (not x15861) (not x19456))
+:assumption (or (not x25263) x16510)
+:assumption (or x17423 x22147)
+:assumption (or (not x4747) x9147)
+:assumption (or x2807 (not x26897) (not x8437))
+:assumption (or (not x13466) x8649)
+:assumption (or x7308 x5162 x7620 x12747 x3348 (not x16185))
+:assumption (or (not x30508) (not x10938))
+:assumption (or (not x12916) (not x25284))
+:assumption (or x7510 (not x26097))
+:assumption (or (not x26790) x27398 x31263)
+:assumption (or x19790 (not x19199))
+:assumption (or x27294 (not x27955))
+:assumption (or x25784 x31114 x1386)
+:assumption (or x19057 (not x9496))
+:assumption (or x11264 x3998)
+:assumption (or (not x21454) x3757)
+:assumption (or (not x22550) (not x25911) (not x24334))
+:assumption (or (not x14138) (not x10336) x27445)
+:assumption (or (not x28314) x14260)
+:assumption (or (not x2669) x19106)
+:assumption (or (not x2731) (not x24725))
+:assumption (or (not x14920) (not x9736))
+:assumption (or x4887 (not x14066))
+:assumption (or x17118 x7486 x23399)
+:assumption (or x25785 (not x11995))
+:assumption (or x21889 (not x26453))
+:assumption (or (not x13209) (not x9301))
+:assumption (or x26239 x26023)
+:assumption (or (not x31213) (not x16504))
+:assumption (or x2066 x19854)
+:assumption (or x3050 x22789 x20850 (not x30113))
+:assumption (or (not x801) x4818 x6468 x13958)
+:assumption (or (not x1393) x11421 x2699)
+:assumption (or x2563 (not x12645))
+:assumption (or (not x4998) x23244 (not x15795))
+:assumption (or x23546 x1999 (not x2660) x8145 x8002 x2605)
+:assumption (or (not x16784) x15227 x18425)
+:assumption (or x27372 (not x28973))
+:assumption (or x6190 (not x26668))
+:assumption (or (not x28522) x10996)
+:assumption (or (not x4259) x5548)
+:assumption (or x27966 x20150)
+:assumption (or (not x14650) (not x8002) (not x20908) (not x29649))
+:assumption (or x19503 (not x12588) (not x19992))
+:assumption (or (not x17102) (not x10510) (not x30751))
+:assumption (or x19778 x24543)
+:assumption (or (not x20402) (not x14641) x24192)
+:assumption (or (not x6402) (not x3362))
+:assumption (or x24063 x968 (not x218))
+:assumption (or (not x15080) (not x20906))
+:assumption (or (not x30138) x7219)
+:assumption (or (not x6344) x20871)
+:assumption (or x23644 x12499)
+:assumption (or x14404 x18427)
+:assumption (or (not x24756) x29102)
+:assumption (or x13111 x11468)
+:assumption (or (not x4618) (not x1411))
+:assumption (or x27939 x27934)
+:assumption (or x1069 (not x29751))
+:assumption (or x24242 (not x12516) (not x10696) (not x18057))
+:assumption (or x20901 (not x30372))
+:assumption (or (not x14814) (not x4493) (not x3475) x25120)
+:assumption (or x11337 x7882 x18713 (not x27989))
+:assumption (or x19746 (not x17999))
+:assumption (or (not x16857) x7462)
+:assumption (or (not x21653) (not x20698))
+:assumption (or (not x21562) (not x12017))
+:assumption (or x18027 (not x6582))
+:assumption (or x22081 (not x18240))
+:assumption (or (not x8333) x5468)
+:assumption (or (not x8817) (not x17149))
+:assumption (or x7725 (not x23749) x24761 x29589 (not x30588) (not x2859) (not x20620))
+:assumption (or (not x21546) x20988)
+:assumption (or (not x29364) (not x27985))
+:assumption (or (not x5622) (not x2882))
+:assumption (or (not x10511) (not x24722))
+:assumption (or x13576 (not x28723))
+:assumption (or x25556 (not x5854))
+:assumption (or (not x21152) x27732)
+:assumption (or x27204 (not x23293) (not x22704) x6374 x16037 x6496 (not x640) x14853 (not x25570) x27734 (not x23388))
+:assumption (or x24149 (not x10481))
+:assumption (or x6173 (not x25853) (not x2712))
+:assumption (or (not x27651) (not x8679))
+:assumption (or (not x23244) (not x11305))
+:assumption (or x25813 (not x14160))
+:assumption (or x17096 x14349)
+:assumption (or (not x6651) x17000)
+:assumption (or x20755 (not x3779))
+:assumption (or x23746 x6955)
+:assumption (or x22931 x1051)
+:assumption (or (not x3565) (not x20993))
+:assumption (or (not x31669) (not x7904))
+:assumption (or x8002 (not x9769))
+:assumption (or (not x15254) (not x8572))
+:assumption (or (not x15806) (not x4089))
+:assumption (or x22357 (not x30501))
+:assumption (or x8015 x18165)
+:assumption (or (not x20174) (not x8002))
+:assumption (or (not x105) x17940)
+:assumption (or x1899 x9209 (not x21953))
+:assumption (or x27733 (not x22481))
+:assumption (or x22217 (not x456) x22142)
+:assumption (or x3738 (not x28328) (not x31379))
+:assumption (or (not x25348) (not x14839) x2537)
+:assumption (or (not x23175) x22531)
+:assumption (or (not x15520) x2408 x16907 x19788)
+:assumption (or (not x22717) x8002)
+:assumption (or x7055 x13929 x6675)
+:assumption (or (not x4181) (not x10953))
+:assumption (or (not x14839) x20462)
+:assumption (or x7548 (not x23707))
+:assumption (or (not x25806) (not x8855))
+:assumption (or (not x26791) x31088)
+:assumption (or (not x24103) x4132)
+:assumption (or (not x20669) x10310)
+:assumption (or x26810 (not x8445))
+:assumption (or (not x22253) (not x12126))
+:assumption (or (not x21288) (not x11916))
+:assumption (or x11258 (not x833))
+:assumption (or x3678 (not x407))
+:assumption (or x9845 x24180)
+:assumption (or (not x24327) x8292)
+:assumption (or (not x24628) (not x1794))
+:assumption (or x15656 (not x23825))
+:assumption (or (not x7588) x1540)
+:assumption (or (not x24598) x26379)
+:assumption (or x24058 (not x22699))
+:assumption (or x4658 x7514)
+:assumption (or (not x2303) (not x5557))
+:assumption (or (not x28767) x12267)
+:assumption (or (not x31177) (not x13496))
+:assumption (or x4874 x15459)
+:assumption (or (not x4891) x15093 (not x6427))
+:assumption (or (not x29108) (not x6495))
+:assumption (or (not x13639) (not x30632))
+:assumption (or x16121 (not x8147))
+:assumption (or (not x15513) x24386)
+:assumption (or (not x2127) x26255)
+:assumption (or x27444 x8963)
+:assumption (or x9820 x26664)
+:assumption (or x5962 x31504 (not x26469) (not x17771) (not x8772) (not x310))
+:assumption (or (not x15117) x21084)
+:assumption (or x27991 x10317 x4642 (not x94) (not x10764) (not x22889) x5000 (not x6154) (not x22575) x6095 x2451 x23544)
+:assumption (or (not x13354) x25659)
+:assumption (or x3684 (not x17761) (not x25741) x17599 x19152)
+:assumption (or (not x1350) x817 x3502 (not x26527) (not x7042))
+:assumption (or x23744 (not x13576))
+:assumption (or x5667 (not x15409) x26679)
+:assumption (or (not x5696) (not x20400))
+:assumption (or (not x6351) (not x22577))
+:assumption (or (not x4036) x24778 (not x827))
+:assumption (or x20482 x21195)
+:assumption (or (not x3425) (not x18958))
+:assumption (or x8315 x7851 (not x28510) (not x23244) x29716 (not x29611))
+:assumption (or (not x29580) (not x12784))
+:assumption (or x13612 x15116)
+:assumption (or x8075 (not x4994))
+:assumption (or x12429 x9943 x20750 (not x19233) (not x14777) x24995 (not x1464) x23160)
+:assumption (or (not x26715) x3518)
+:assumption (or x27115 x6539)
+:assumption (or (not x29200) x24817)
+:assumption (or x20949 x30658)
+:assumption (or x24079 x17086)
+:assumption (or (not x24661) x6594)
+:assumption (or x14621 (not x24772))
+:assumption (or (not x24112) (not x19471))
+:assumption (or (not x17047) (not x27302) (not x16025))
+:assumption (or x20325 x20638)
+:assumption (or x21585 x3538)
+:assumption (or x7620 (not x15894))
+:assumption (or (not x30208) x21280)
+:assumption (or (not x16954) (not x4131))
+:assumption (or x6951 x12861)
+:assumption (or x22604 x11396)
+:assumption (or (not x27233) (not x21633) (not x20702) (not x11222))
+:assumption (or (not x6097) x6268 x26266)
+:assumption (or x21290 (not x30545) x6942)
+:assumption (or (not x19992) x29708)
+:assumption (or (not x10442) x6304)
+:assumption (or (not x1825) x31292)
+:assumption (or (not x21016) x13415)
+:assumption (or (not x8002) (not x8803))
+:assumption (or x25459 x27983)
+:assumption (or (not x26150) x29606 x1358)
+:assumption (or x31108 (not x1083))
+:assumption (or (not x26344) (not x18431))
+:assumption (or (not x5819) x25195)
+:assumption (or x2847 x11873)
+:assumption (or x29464 (not x19423))
+:assumption (or x23878 x20271 (not x6162) (not x17855))
+:assumption (or (not x12610) x20754)
+:assumption (or x13577 x15459)
+:assumption (or (not x10498) x11813)
+:assumption (or (not x21056) x21709)
+:assumption (or (not x18541) x28152)
+:assumption (or x17862 x26315 (not x8086) (not x5875) (not x30161) x28805)
+:assumption (or (not x25102) (not x29629))
+:assumption (or x2943 x12574 (not x20885))
+:assumption (or x2726 (not x21497))
+:assumption (or x21432 (not x9880) x31805 (not x31658))
+:assumption (or x8247 x12044 (not x28116) (not x8316) (not x29611))
+:assumption (or (not x16336) x21525)
+:assumption (or (not x8002) (not x1194) (not x8644))
+:assumption (or (not x28166) x5934)
+:assumption (or x11850 (not x25366))
+:assumption (or x10975 x19740 (not x21824))
+:assumption (or (not x23858) x19257 x13018 (not x8338))
+:assumption (or (not x3115) x31745)
+:assumption (or x23304 (not x1856))
+:assumption (or (not x19660) (not x7236))
+:assumption (or (not x18003) (not x29893))
+:assumption (or x21842 x15192)
+:assumption (or (not x383) x9289)
+:assumption (or x7421 (not x26809))
+:assumption (or x31829 x12671 (not x25449) x918)
+:assumption (or x29859 x12433)
+:assumption (or x2243 x8602)
+:assumption (or (not x5734) (not x24509))
+:assumption (or (not x27598) x6171)
+:assumption (or x28772 x19924)
+:assumption (or x27948 (not x2199))
+:assumption (or x6098 (not x2065))
+:assumption (or (not x5386) (not x13727) x13997 x13842 x31372 x18069)
+:assumption (or (not x9263) x31542)
+:assumption (or (not x9531) x5775 (not x12403) x13576)
+:assumption (or x1632 x3486)
+:assumption (or (not x15547) x31777)
+:assumption (or x28731 (not x26736))
+:assumption (or (not x1822) x20245)
+:assumption (or x25659 x1140)
+:assumption (or (not x18859) x10564)
+:assumption (or x6243 (not x21248))
+:assumption (or (not x29429) (not x1165) (not x12870) x9481 x6127 (not x16977))
+:assumption (or x18109 x15563)
+:assumption (or x1470 (not x20563))
+:assumption (or (not x17116) (not x7883) x20060)
+:assumption (or (not x29208) (not x2792))
+:assumption (or (not x25659) x1856 x21486)
+:assumption (or (not x4901) (not x5324))
+:assumption (or (not x26491) (not x5935) (not x11385) x3349)
+:assumption (or (not x16510) (not x15744) (not x21845) (not x10659) (not x22771) x6302)
+:assumption (or (not x31300) x18062)
+:assumption (or x30477 x14455)
+:assumption (or (not x18301) x186)
+:assumption (or x10937 x27974)
+:assumption (or x7346 x11814)
+:assumption (or x16001 x8002 x27595)
+:assumption (or (not x9895) x5748)
+:assumption (or (not x4065) (not x7653))
+:assumption (or (not x10777) (not x14806))
+:assumption (or x4422 x3198)
+:assumption (or (not x3620) x22893)
+:assumption (or (not x146) x14913 (not x21298))
+:assumption (or (not x9599) (not x27354))
+:assumption (or x10760 x22250)
+:assumption (or x23128 x7835)
+:assumption (or (not x18360) x11454)
+:assumption (or (not x18533) (not x19499))
+:assumption (or x14625 (not x30762))
+:assumption (or x27037 x31035)
+:assumption (or x15437 x5049)
+:assumption (or x16774 x25888 (not x16842) x26316 x4441)
+:assumption (or x26064 x25315 (not x14134))
+:assumption (or (not x19230) x20634 (not x13622))
+:assumption (or x17571 x18324)
+:assumption (or (not x20748) (not x23827))
+:assumption (or x18605 (not x21298))
+:assumption (or x28539 (not x254))
+:assumption (or (not x2761) x4990)
+:assumption (or (not x19291) (not x9036))
+:assumption (or x8227 x25517)
+:assumption (or x23535 x9008 (not x8007))
+:assumption (or (not x16339) x22733)
+:assumption (or x9008 (not x25117))
+:assumption (or (not x26454) (not x30250) x8667 x3583 x3067 (not x18952))
+:assumption (or (not x15627) (not x9070))
+:assumption (or x19386 x22705)
+:assumption (or (not x2037) (not x29017))
+:assumption (or (not x17571) x9765)
+:assumption (or (not x6992) (not x941))
+:assumption (or (not x2412) x24420 x2943)
+:assumption (or (not x8089) x11366)
+:assumption (or (not x10308) x15109)
+:assumption (or x15286 x12433)
+:assumption (or (not x3049) x18864)
+:assumption (or (not x7079) (not x17940))
+:assumption (or (not x9008) x27876 (not x17185))
+:assumption (or (not x22866) x2934)
+:assumption (or x22483 (not x8305))
+:assumption (or (not x30265) x14382)
+:assumption (or x16084 (not x28334) (not x9309) x13731 x12899 (not x19917) x31734)
+:assumption (or x16362 (not x31021) (not x13956))
+:assumption (or x7468 (not x1618))
+:assumption (or (not x4781) x3041)
+:assumption (or (not x7475) x30167)
+:assumption (or x27836 (not x6176))
+:assumption (or (not x29422) (not x18771) (not x8681) (not x27128))
+:assumption (or (not x18970) (not x6635) x3113 x26369)
+:assumption (or (not x31145) (not x8532) x30497 x8060)
+:assumption (or x10299 (not x12397))
+:assumption (or x23099 (not x8048))
+:assumption (or x20292 x1530)
+:assumption (or x218 (not x14775))
+:assumption (or x6259 (not x84))
+:assumption (or x2263 (not x23902))
+:assumption (or (not x20348) x13913)
+:assumption (or x5682 x16717)
+:assumption (or (not x29012) (not x11810))
+:assumption (or (not x25632) (not x131))
+:assumption (or x31735 x23095)
+:assumption (or x25523 x15765)
+:assumption (or (not x23633) x10232)
+:assumption (or x28265 x14439)
+:assumption (or (not x15673) x27145)
+:assumption (or (not x28622) (not x27790))
+:assumption (or (not x12052) (not x10259) x5172 (not x16832) x25546)
+:assumption (or (not x19864) x7759)
+:assumption (or x18839 (not x30864))
+:assumption (or x22420 (not x28165))
+:assumption (or x3209 (not x18859) (not x23197))
+:assumption (or (not x11393) x24641)
+:assumption (or (not x11269) x14547)
+:assumption (or x7785 (not x13645))
+:assumption (or (not x3519) x29561)
+:assumption (or x12929 (not x16984))
+:assumption (or x31167 (not x6861))
+:assumption (or (not x25986) x18476)
+:assumption (or x25408 (not x6914))
+:assumption (or x25366 x14679)
+:assumption (or (not x9487) (not x8568))
+:assumption (or x1121 (not x35))
+:assumption (or (not x6971) (not x3053))
+:assumption (or x23906 x10439)
+:assumption (or x26036 (not x30001))
+:assumption (or x21982 (not x20512) (not x25877) x2548 x723 x16374 (not x21160) x7474)
+:assumption (or (not x13049) x6868 (not x17282))
+:assumption (or (not x28082) x20724 x76 (not x29233) x10983)
+:assumption (or x10608 x6972)
+:assumption (or x6046 x5751)
+:assumption (or x2133 x27690 x15643)
+:assumption (or x6327 x18259 (not x28041))
+:assumption (or x7462 x6046)
+:assumption (or x1519 x22644)
+:assumption (or x14560 x21598)
+:assumption (or (not x740) (not x1426))
+:assumption (or (not x19588) (not x23310))
+:assumption (or x13802 x8179)
+:assumption (or x17147 x30020)
+:assumption (or x7886 x6410)
+:assumption (or (not x29644) (not x21295))
+:assumption (or x14397 x22516)
+:assumption (or (not x16604) (not x27341))
+:assumption (or (not x11024) (not x2262))
+:assumption (or x12386 (not x12168) x8002)
+:assumption (or x8358 x17768)
+:assumption (or x13956 (not x4297) x7685)
+:assumption (or x30812 x18855)
+:assumption (or x13163 x18266)
+:assumption (or (not x29347) (not x21374))
+:assumption (or x10017 x446)
+:assumption (or x24442 x2814)
+:assumption (or (not x11476) (not x16185))
+:assumption (or (not x9296) (not x29715) x30560 (not x10941) x12942 (not x985) (not x9455) (not x25172))
+:assumption (or (not x19213) (not x10205))
+:assumption (or x16995 x9008)
+:assumption (or (not x16196) x16801 (not x6969))
+:assumption (or (not x4580) (not x1456))
+:assumption (or x16806 x11106)
+:assumption (or x20037 (not x11114))
+:assumption (or (not x27105) x12364)
+:assumption (or x24475 x24351)
+:assumption (or x15659 x21330 x29777 x9619)
+:assumption (or x142 (not x31746) x4584)
+:assumption (or (not x21736) (not x26511))
+:assumption (or x9439 x28443)
+:assumption (or x6779 (not x16011))
+:assumption (or x1510 x4259 (not x6750) x17482 (not x1096))
+:assumption (or x12148 x20615 x12971 x18516)
+:assumption (or (not x30434) (not x9705) x28242 x10874)
+:assumption (or x3669 x29106 x30783 x3044 (not x30590) (not x24853) (not x5752))
+:assumption (or (not x11767) (not x7944))
+:assumption (or x29833 x21953)
+:assumption (or (not x10835) x3277)
+:assumption (or (not x20844) (not x29854))
+:assumption (or (not x31700) x27003)
+:assumption (or (not x4126) (not x19695))
+:assumption (or x27409 (not x30276))
+:assumption (or (not x14455) x705)
+:assumption (or x6985 (not x18883))
+:assumption (or x964 (not x5394) x10772 x17629)
+:assumption (or (not x21390) (not x29645) (not x24616) x5367)
+:assumption (or (not x30633) x18007)
+:assumption (or x22167 (not x28436) (not x20119))
+:assumption (or x7993 x24548)
+:assumption (or (not x27939) (not x29533) (not x20319))
+:assumption (or x13793 x14753)
+:assumption (or x11296 x10593)
+:assumption (or (not x31557) (not x15235))
+:assumption (or x19899 x28555)
+:assumption (or x24282 (not x31428))
+:assumption (or x11178 (not x896))
+:assumption (or (not x29967) x30841)
+:assumption (or (not x27593) (not x26527))
+:assumption (or (not x22858) x30339)
+:assumption (or (not x15817) x26267 (not x9162) (not x3409) (not x23279) (not x12082) x26431)
+:assumption (or (not x15300) x25158)
+:assumption (or (not x20615) x14921)
+:assumption (or x1741 (not x4070))
+:assumption (or x30203 (not x12350))
+:assumption (or (not x24756) (not x27008))
+:assumption (or (not x9439) (not x6444) x30884)
+:assumption (or (not x27458) (not x10689) (not x21653))
+:assumption (or x5528 x4737)
+:assumption (or (not x19918) x15478)
+:assumption (or (not x21535) x31696 (not x9820))
+:assumption (or (not x13755) x5528)
+:assumption (or x21780 (not x28795))
+:assumption (or x30784 x14997)
+:assumption (or (not x13209) x20774)
+:assumption (or x11083 x26062)
+:assumption (or (not x3462) (not x7076))
+:assumption (or (not x30413) x5595)
+:assumption (or x11663 (not x19994) x3897 x29145 x27685)
+:assumption (or (not x270) x9008)
+:assumption (or (not x4564) x14065)
+:assumption (or (not x13622) x12644 x6039)
+:assumption (or (not x28212) x4386)
+:assumption (or x27585 (not x25847))
+:assumption (or (not x8961) (not x5886) (not x11080))
+:assumption (or x78 (not x19959) (not x109) x12 x10982 x20892)
+:assumption (or x485 x13440)
+:assumption (or (not x25914) x19694)
+:assumption (or x17281 x9314 (not x195) x26279 (not x10240) x24294)
+:assumption (or (not x27762) (not x9687))
+:assumption (or (not x3921) (not x3256))
+:assumption (or x16493 (not x16684) (not x15215) (not x22187))
+:assumption (or (not x24912) x29788)
+:assumption (or x28466 (not x24313))
+:assumption (or x1809 (not x9042))
+:assumption (or (not x24528) (not x19258) x1547)
+:assumption (or x5475 x23244)
+:assumption (or x18297 (not x9241))
+:assumption (or (not x16409) (not x1160))
+:assumption (or (not x30685) (not x21332))
+:assumption (or (not x17517) (not x6656))
+:assumption (or x6474 x28573 x19688 x30919 x5408)
+:assumption (or x24284 x4583)
+:assumption (or (not x14020) (not x12944))
+:assumption (or (not x29519) x16567)
+:assumption (or (not x10173) x21815)
+:assumption (or x19602 (not x22314))
+:assumption (or (not x28195) (not x22570))
+:assumption (or x2162 x12397 (not x28708) (not x26534))
+:assumption (or x26856 (not x15410) (not x13298) x21815 x27708 (not x15003))
+:assumption (or x5480 x19347)
+:assumption (or (not x13608) (not x19048))
+:assumption (or x10745 x25010)
+:assumption (or (not x17154) (not x12131))
+:assumption (or x24383 x15921)
+:assumption (or x7530 x26113)
+:assumption (or x26280 (not x1317))
+:assumption (or x14634 x16510)
+:assumption (or x3455 (not x23826))
+:assumption (or x20012 (not x26983))
+:assumption (or x31063 (not x29667))
+:assumption (or x2270 x14385)
+:assumption (or x31661 x29715)
+:assumption (or x3863 x23248)
+:assumption (or x11122 x26378)
+:assumption (or x25659 (not x28044))
+:assumption (or x10459 (not x5964))
+:assumption (or x4135 x3063 x1621)
+:assumption (or (not x31041) x18474)
+:assumption (or (not x27014) (not x29343))
+:assumption (or (not x6911) x19775)
+:assumption (or (not x27229) x14468)
+:assumption (or (not x17402) (not x9825))
+:assumption (or (not x6376) (not x19684))
+:assumption (or x31082 (not x24357) x30100)
+:assumption (or (not x2519) x29074)
+:assumption (or x4476 x31298)
+:assumption (or x2209 x11940)
+:assumption (or (not x606) x26291)
+:assumption (or (not x29255) x25140 (not x5117))
+:assumption (or x24504 x28917)
+:assumption (or x22164 (not x20678))
+:assumption (or x31893 (not x10762))
+:assumption (or (not x25461) (not x27621))
+:assumption (or (not x25835) (not x28922))
+:assumption (or (not x666) (not x25651))
+:assumption (or (not x16374) (not x723))
+:assumption (or x28947 (not x18550))
+:assumption (or (not x11141) (not x10173))
+:assumption (or (not x31642) x4910)
+:assumption (or x23244 (not x17077))
+:assumption (or (not x19514) x12151 x27021 (not x25818))
+:assumption (or (not x23244) (not x11328) (not x20949))
+:assumption (or (not x18346) (not x9740))
+:assumption (or (not x3921) x6290)
+:assumption (or (not x17967) (not x8014))
+:assumption (or (not x7412) (not x1090))
+:assumption (or (not x27316) (not x12923))
+:assumption (or x26065 x30267)
+:assumption (or x7354 x8961)
+:assumption (or x26691 (not x5162) x20721 x24190)
+:assumption (or x5528 x7479 (not x30224))
+:assumption (or (not x25891) x21298)
+:assumption (or (not x18369) x11048)
+:assumption (or (not x5458) (not x10002))
+:assumption (or x8680 x30171 (not x27256))
+:assumption (or (not x16488) x17913)
+:assumption (or x1775 (not x5958) x8346)
+:assumption (or (not x1525) x24447)
+:assumption (or x19528 (not x27256))
+:assumption (or (not x7308) (not x13671))
+:assumption (or (not x10782) x28689)
+:assumption (or x9669 (not x25491))
+:assumption (or x22415 (not x4808))
+:assumption (or (not x5048) (not x28269))
+:assumption (or (not x23628) x12923)
+:assumption (or x14032 x31559)
+:assumption (or (not x27939) (not x14020) x2498)
+:assumption (or x31205 x28787)
+:assumption (or (not x28242) (not x16998))
+:assumption (or x11188 x25447)
+:assumption (or (not x25659) (not x12898))
+:assumption (or (not x5616) (not x8019))
+:assumption (or x25591 x7026 x18097 x18293)
+:assumption (or x30138 x16100)
+:assumption (or (not x3631) (not x17450))
+:assumption (or (not x24668) x8172)
+:assumption (or x18533 (not x10632) x19499)
+:assumption (or (not x21547) x8002)
+:assumption (or x11268 (not x31075))
+:assumption (or x3775 (not x29105))
+:assumption (or (not x6528) x1616)
+:assumption (or (not x6504) (not x25665))
+:assumption (or (not x19428) x3841)
+:assumption (or (not x928) (not x17525))
+:assumption (or x13706 x9922)
+:assumption (or (not x20186) x19677)
+:assumption (or (not x21688) (not x25041))
+:assumption (or (not x20738) x18369)
+:assumption (or x29762 (not x5787))
+:assumption (or (not x22956) x8002 (not x30327) x24081 x14099 (not x29863))
+:assumption (or (not x25600) (not x9914))
+:assumption (or x31165 (not x22336))
+:assumption (or x24732 (not x17659))
+:assumption (or (not x19298) x13010)
+:assumption (or x25460 x9008)
+:assumption (or (not x11660) (not x29483))
+:assumption (or (not x24091) x12676)
+:assumption (or (not x13199) x24555)
+:assumption (or x15587 x17302)
+:assumption (or x8017 (not x10464))
+:assumption (or x18844 x3433)
+:assumption (or x17187 (not x9073))
+:assumption (or x16717 x12318)
+:assumption (or (not x22242) (not x13805))
+:assumption (or (not x29867) (not x14627) (not x29828) (not x3891))
+:assumption (or x13705 (not x22761))
+:assumption (or x2857 x16809)
+:assumption (or (not x8263) (not x25428))
+:assumption (or (not x2912) (not x31882))
+:assumption (or x11474 x12707)
+:assumption (or (not x13917) x30616)
+:assumption (or (not x23738) (not x1984) x31240 x11907 (not x9978))
+:assumption (or (not x30982) x26092)
+:assumption (or (not x1393) (not x8239) (not x12875))
+:assumption (or (not x12255) x2394)
+:assumption (or x23396 (not x20156))
+:assumption (or x17970 (not x23380))
+:assumption (or (not x3580) (not x26302))
+:assumption (or (not x21465) x17969)
+:assumption (or (not x30113) x238)
+:assumption (or (not x11084) (not x17225))
+:assumption (or (not x26235) (not x9008))
+:assumption (or x7460 x27667)
+:assumption (or (not x28114) x12295)
+:assumption (or (not x17284) (not x30242))
+:assumption (or x30921 (not x13179))
+:assumption (or (not x12998) (not x21368))
+:assumption (or (not x26671) x15367)
+:assumption (or (not x3167) x16414)
+:assumption (or (not x29727) x30855 x9008 x17689 x22186 x22011 (not x19019) x17448)
+:assumption (or x4743 (not x13956))
+:assumption (or x14611 (not x1061))
+:assumption (or (not x31829) x4567)
+:assumption (or (not x22726) (not x26287))
+:assumption (or x18577 (not x22133))
+:assumption (or (not x31877) x30591)
+:assumption (or x23780 x9051)
+:assumption (or x24807 (not x16262))
+:assumption (or (not x15844) x4198)
+:assumption (or (not x14476) x14602 x12645 (not x29022) (not x27850) (not x16353) (not x20769))
+:assumption (or (not x1143) x23577)
+:assumption (or (not x24198) x31027)
+:assumption (or (not x26944) x19455)
+:assumption (or x22640 x918)
+:assumption (or x27858 x21017)
+:assumption (or x21439 (not x25901) x10952)
+:assumption (or (not x31735) x21298)
+:assumption (or x30257 x26096 (not x15197) x25839 x24226 x7145)
+:assumption (or x13444 x4464)
+:assumption (or (not x2912) x20662)
+:assumption (or (not x24816) x24211)
+:assumption (or (not x2625) x18774)
+:assumption (or (not x30224) x1700 x13956)
+:assumption (or x26172 x29605)
+:assumption (or x1531 (not x6333))
+:assumption (or x30667 x13956 x19041)
+:assumption (or (not x3001) x3663)
+:assumption (or (not x16278) x2464)
+:assumption (or (not x13821) x30115 x11556 (not x4233))
+:assumption (or (not x31690) x21923)
+:assumption (or (not x8002) x5696 (not x9974) (not x29675))
+:assumption (or x288 x718)
+:assumption (or (not x10025) (not x9989))
+:assumption (or (not x20168) (not x8304))
+:assumption (or x15177 x29014)
+:assumption (or x3930 (not x9370))
+:assumption (or (not x30375) (not x14539))
+:assumption (or (not x7799) x4012)
+:assumption (or (not x16809) (not x22800))
+:assumption (or x5370 x18273)
+:assumption (or (not x10637) (not x5210))
+:assumption (or x22360 x30751 (not x23755))
+:assumption (or (not x27012) (not x4732))
+:assumption (or x3366 x7835)
+:assumption (or (not x11281) (not x29770))
+:assumption (or (not x21815) x797)
+:assumption (or x25739 (not x31712))
+:assumption (or (not x20085) x3989)
+:assumption (or (not x20595) (not x18681) x12843 x29333 x4482 (not x7873))
+:assumption (or x5528 x2068 x29772)
+:assumption (or (not x28293) (not x7664))
+:assumption (or (not x4281) x21419)
+:assumption (or (not x18269) x4386)
+:assumption (or x29996 x30165)
+:assumption (or x28869 x5513)
+:assumption (or (not x15091) (not x15140))
+:assumption (or x7580 (not x27604))
+:assumption (or x11977 x22907)
+:assumption (or (not x31390) x16952)
+:assumption (or x3610 x7609)
+:assumption (or (not x7502) x13956)
+:assumption (or x14625 x5097)
+:assumption (or (not x17225) x26828)
+:assumption (or (not x30134) (not x22117) (not x17750) (not x5338))
+:assumption (or x19943 x2868 (not x25911))
+:assumption (or (not x18400) (not x24761))
+:assumption (or (not x19205) (not x31111))
+:assumption (or x24113 (not x16548))
+:assumption (or (not x4231) x18105)
+:assumption (or x268 x1109)
+:assumption (or (not x29752) (not x13702))
+:assumption (or x29736 x22124)
+:assumption (or (not x13086) (not x18859))
+:assumption (or (not x10440) (not x18504))
+:assumption (or x12353 (not x2332))
+:assumption (or (not x26034) x24427)
+:assumption (or x7822 x8120)
+:assumption (or (not x25551) (not x27564))
+:assumption (or x25565 (not x9279))
+:assumption (or (not x13363) x28112)
+:assumption (or (not x2206) (not x9147) x14206 x10018)
+:assumption (or x332 (not x23107))
+:assumption (or (not x27674) (not x17725))
+:assumption (or (not x14222) (not x6892) (not x22116) x24511 (not x8600) x16131 (not x27902) x19830)
+:assumption (or (not x14996) x31807)
+:assumption (or x14810 x21815)
+:assumption (or (not x28419) (not x30527))
+:assumption (or x1752 x17302)
+:assumption (or x6869 x19150)
+:assumption (or x1716 x12731 (not x9008))
+:assumption (or x14588 (not x25742))
+:assumption (or (not x31445) x5776)
+:assumption (or (not x12310) (not x9214))
+:assumption (or x9544 x21396)
+:assumption (or x13343 x13870)
+:assumption (or x3745 (not x7532))
+:assumption (or (not x21645) (not x2500))
+:assumption (or (not x2539) x23240)
+:assumption (or (not x26915) x17518)
+:assumption (or (not x16237) (not x3795))
+:assumption (or x25659 x14528 (not x30385))
+:assumption (or x4019 (not x25606))
+:assumption (or (not x19992) x24046)
+:assumption (or x26890 (not x25366))
+:assumption (or (not x17938) x8039)
+:assumption (or x28913 (not x19992))
+:assumption (or x21570 (not x18024) x868 (not x25406))
+:assumption (or (not x18073) (not x28397) x11620)
+:assumption (or x21298 x17904)
+:assumption (or (not x4173) x3607 (not x8002))
+:assumption (or (not x11190) (not x23244))
+:assumption (or x4596 (not x20673))
+:assumption (or (not x8866) (not x1159))
+:assumption (or x20684 (not x4593))
+:assumption (or (not x9565) x413 (not x13018) x16991)
+:assumption (or (not x16922) (not x22943))
+:assumption (or (not x24771) x12755)
+:assumption (or (not x20382) (not x20808) (not x21653))
+:assumption (or x5173 (not x23554))
+:assumption (or x8943 x29721)
+:assumption (or x2537 (not x19457))
+:assumption (or (not x18182) x9877)
+:assumption (or x15750 (not x30216))
+:assumption (or x13411 x18791 x18092 x21298)
+:assumption (or x2913 x31134)
+:assumption (or x28368 (not x12632))
+:assumption (or (not x9689) (not x5963))
+:assumption (or (not x28166) x6365)
+:assumption (or (not x14986) x31695)
+:assumption (or x762 (not x27164))
+:assumption (or x25588 (not x16554) (not x26780) (not x8919))
+:assumption (or x4026 x7356 x27012)
+:assumption (or (not x15795) (not x5150) (not x16304))
+:assumption (or x266 x15493)
+:assumption (or (not x5271) (not x4898) (not x252) x18980 (not x11333))
+:assumption (or x23386 (not x6153))
+:assumption (or x14681 (not x21971) x6243 (not x4702))
+:assumption (or x2288 x17637)
+:assumption (or (not x5346) x28270)
+:assumption (or x17732 (not x26789))
+:assumption (or x901 x15175)
+:assumption (or (not x11889) x11275)
+:assumption (or x985 x31661)
+:assumption (or x8002 (not x9241))
+:assumption (or x21298 x18340)
+:assumption (or x16189 (not x31710))
+:assumption (or (not x13956) (not x5413) (not x21633))
+:assumption (or (not x26011) (not x12077))
+:assumption (or x18212 x18044)
+:assumption (or (not x16843) x14628)
+:assumption (or (not x8002) x31329)
+:assumption (or x17922 (not x16011))
+:assumption (or x8720 (not x1087))
+:assumption (or (not x29576) x8602)
+:assumption (or x13286 x3823)
+:assumption (or x25941 x21446)
+:assumption (or (not x26337) (not x31829))
+:assumption (or (not x11669) x18652)
+:assumption (or x16503 x656)
+:assumption (or (not x7498) (not x1683))
+:assumption (or (not x7097) x9008)
+:assumption (or x16025 x28973 x13432)
+:assumption (or x3695 x21263)
+:assumption (or (not x21421) (not x17338))
+:assumption (or x9008 x4115)
+:assumption (or x18680 x22992)
+:assumption (or x21084 x28094)
+:assumption (or x25156 x14007)
+:assumption (or (not x3212) x30840)
+:assumption (or (not x14386) x18950)
+:assumption (or x19595 (not x27693))
+:assumption (or (not x13478) (not x11024))
+:assumption (or (not x24375) (not x15584))
+:assumption (or x27703 (not x14231))
+:assumption (or x28445 (not x3605))
+:assumption (or x21298 x7763)
+:assumption (or (not x30781) (not x1553))
+:assumption (or (not x15967) (not x16423))
+:assumption (or (not x5528) x16426 x12420 (not x9008) x10148)
+:assumption (or x21517 x12773)
+:assumption (or (not x31927) (not x5543))
+:assumption (or x20077 x7695)
+:assumption (or (not x3031) x19856)
+:assumption (or (not x3765) x23071 (not x15160))
+:assumption (or (not x5062) (not x16127))
+:assumption (or (not x17001) (not x19532))
+:assumption (or x23131 x28975)
+:assumption (or x19376 x15535)
+:assumption (or (not x27190) x30255 (not x8002) (not x9609))
+:assumption (or (not x25122) (not x30636))
+:assumption (or x24775 (not x12564) x24163 x6750)
+:assumption (or x23244 x24378 x16749)
+:assumption (or x7285 (not x22372))
+:assumption (or x4332 x3035)
+:assumption (or (not x8395) (not x19698))
+:assumption (or x6149 (not x14643))
+:assumption (or x18784 x29405)
+:assumption (or (not x25911) x30419 x6686 x12370)
+:assumption (or x10176 x19979)
+:assumption (or x9878 x9838)
+:assumption (or x30667 (not x13411) (not x2877) (not x5528) (not x9008))
+:assumption (or (not x2057) x24756)
+:assumption (or (not x345) (not x8757) x13956)
+:assumption (or (not x9888) x21815)
+:assumption (or x27859 (not x14867))
+:assumption (or (not x7118) x30720)
+:assumption (or (not x28004) x27749)
+:assumption (or x21653 (not x12314) x23243)
+:assumption (or x15828 x9534)
+:assumption (or (not x12781) (not x11688))
+:assumption (or x444 (not x4155))
+:assumption (or (not x11165) x17125)
+:assumption (or x17260 x11388)
+:assumption (or (not x31777) x10569)
+:assumption (or x21044 x29200)
+:assumption (or (not x1649) (not x16066) (not x4765) (not x19486) x2315)
+:assumption (or (not x28264) (not x27220))
+:assumption (or x17955 x7421)
+:assumption (or x28494 (not x9733))
+:assumption (or x14839 (not x22098) x6969 x6311)
+:assumption (or x28543 x19527)
+:assumption (or x14325 (not x19676))
+:assumption (or (not x20604) x14442)
+:assumption (or (not x10909) x2501 x20824 x6501 (not x13611) x28752 (not x17927) x15673)
+:assumption (or (not x19688) (not x6474))
+:assumption (or (not x24971) x4768)
+:assumption (or (not x21996) x19854)
+:assumption (or x15877 (not x6188))
+:assumption (or (not x3652) x30231)
+:assumption (or x29684 x612 (not x6611) x12498 (not x17318) (not x15659) (not x10270))
+:assumption (or x10314 (not x16316))
+:assumption (or (not x22296) x3919)
+:assumption (or x24799 x6469 x10762 (not x21414) (not x24473) (not x29886) (not x23198) (not x137))
+:assumption (or (not x24433) x10961)
+:assumption (or x29322 x9718)
+:assumption (or (not x7195) x23369)
+:assumption (or (not x12751) (not x494))
+:assumption (or x9526 x24957)
+:assumption (or x1566 x28243 x16025)
+:assumption (or x2971 (not x26830))
+:assumption (or x1868 x4159)
+:assumption (or (not x409) x15651)
+:assumption (or (not x27598) (not x1836))
+:assumption (or (not x12824) x3135)
+:assumption (or (not x8002) (not x19351))
+:assumption (or x25666 (not x930))
+:assumption (or x22452 (not x8089))
+:assumption (or x11240 x17792)
+:assumption (or x6263 x1354 x3435)
+:assumption (or x20327 x11213)
+:assumption (or (not x29214) (not x191))
+:assumption (or x827 (not x18541))
+:assumption (or x18374 x17519)
+:assumption (or (not x3340) x26186)
+:assumption (or (not x17317) x31076)
+:assumption (or (not x15897) x17123)
+:assumption (or x29921 (not x8002))
+:assumption (or x18588 x24567)
+:assumption (or x30113 x6143)
+:assumption (or (not x9803) x16173)
+:assumption (or x4461 (not x9355))
+:assumption (or x20388 (not x11374))
+:assumption (or (not x4367) (not x3024))
+:assumption (or x21380 (not x20522))
+:assumption (or (not x17672) (not x28895))
+:assumption (or (not x17302) (not x31025))
+:assumption (or x9466 (not x14517) (not x15518) (not x653) (not x13956))
+:assumption (or x31015 x19530)
+:assumption (or (not x4583) (not x24284))
+:assumption (or x12329 (not x28269))
+:assumption (or (not x5313) (not x1393))
+:assumption (or x13915 x4799)
+:assumption (or x6273 (not x31319))
+:assumption (or x26813 x20268 (not x11489) x8505)
+:assumption (or x12292 x7190)
+:assumption (or x8914 (not x14109))
+:assumption (or x19658 x1399)
+:assumption (or (not x31477) x17567)
+:assumption (or (not x18231) x25769)
+:assumption (or (not x18884) (not x4670))
+:assumption (or (not x25231) (not x6227))
+:assumption (or x14333 x805 (not x5528) (not x9008) (not x28342))
+:assumption (or (not x7443) (not x17532))
+:assumption (or x6905 (not x16252))
+:assumption (or x13505 (not x2855))
+:assumption (or (not x22489) x2021)
+:assumption (or (not x5025) x29227)
+:assumption (or (not x12397) x27380)
+:assumption (or (not x3415) x13911 (not x31566))
+:assumption (or (not x2027) x28591)
+:assumption (or x19994 (not x11663))
+:assumption (or x21262 (not x12170))
+:assumption (or x2250 x5070)
+:assumption (or x15510 (not x21621))
+:assumption (or (not x23685) x14591)
+:assumption (or (not x2754) (not x28828))
+:assumption (or x28283 (not x25812))
+:assumption (or (not x1298) (not x5750))
+:assumption (or x7889 (not x8002))
+:assumption (or (not x13253) x17798)
+:assumption (or (not x187) (not x5670))
+:assumption (or x10383 (not x14029) (not x23092) x13081)
+:assumption (or (not x13556) (not x16584))
+:assumption (or (not x18089) (not x10201))
+:assumption (or (not x28313) (not x6691))
+:assumption (or x12127 (not x6189))
+:assumption (or (not x27855) x17161)
+:assumption (or x3057 x1995)
+:assumption (or x19266 x24319)
+:assumption (or (not x15113) (not x15633))
+:assumption (or (not x27814) (not x4181))
+:assumption (or x15154 x3968)
+:assumption (or x30116 (not x23638))
+:assumption (or (not x22149) (not x15691))
+:assumption (or x5938 x17673)
+:assumption (or x6783 x31227 (not x13956))
+:assumption (or x29512 (not x29429))
+:assumption (or x15992 x21448)
+:assumption (or (not x26711) x5090 x7743)
+:assumption (or (not x29250) (not x27155))
+:assumption (or x29312 x25408 x8910 x24756)
+:assumption (or x16400 (not x20679))
+:assumption (or x21502 (not x15927) x5528)
+:assumption (or (not x6442) (not x28014))
+:assumption (or (not x5028) x6321 x18321)
+:assumption (or x964 x26821)
+:assumption (or (not x14014) (not x23665))
+:assumption (or x6007 (not x20651) (not x15240))
+:assumption (or x4429 (not x1042))
+:assumption (or x11083 x16374)
+:assumption (or x2920 x24889 (not x5393))
+:assumption (or (not x26015) x23055)
+:assumption (or (not x3455) x18589)
+:assumption (or x30423 (not x11489))
+:assumption (or (not x31445) x10539 x30111 x5796 x24304 (not x18941))
+:assumption (or (not x29602) x25066)
+:assumption (or (not x3217) x30124 x14806 x10777 x23407)
+:assumption (or x5697 (not x31075))
+:assumption (or x29086 x6398 (not x18859))
+:assumption (or x13832 (not x29968))
+:assumption (or (not x9170) x23244)
+:assumption (or (not x27386) x27175)
+:assumption (or (not x16566) x6565)
+:assumption (or x16025 x26430)
+:assumption (or (not x18351) (not x5824) x30734)
+:assumption (or x16272 (not x25784))
+:assumption (or x22231 (not x9381))
+:assumption (or x27430 x27969)
+:assumption (or (not x31390) (not x18003))
+:assumption (or x11548 x25623 x22189 (not x3501) (not x4689) (not x27223) x18868)
+:assumption (or x9026 x13915)
+:assumption (or (not x8433) x28973)
+:assumption (or (not x9018) (not x6119))
+:assumption (or (not x31150) x7049)
+:assumption (or x14188 x27434)
+:assumption (or x10614 x15260 x5657)
+:assumption (or (not x2271) (not x14002))
+:assumption (or (not x20573) (not x10951))
+:assumption (or (not x7132) x16549)
+:assumption (or (not x5021) x19279)
+:assumption (or (not x22291) x18094)
+:assumption (or x21636 x1290)
+:assumption (or (not x23244) x6412)
+:assumption (or (not x15537) (not x41))
+:assumption (or x24231 x18120)
+:assumption (or (not x17175) x2377)
+:assumption (or x29240 (not x11735))
+:assumption (or (not x20248) x22154)
+:assumption (or (not x22008) (not x26054))
+:assumption (or (not x29741) x5017)
+:assumption (or (not x1971) x18908)
+:assumption (or x6441 x19541)
+:assumption (or (not x16472) x58)
+:assumption (or (not x22332) (not x23432))
+:assumption (or x7733 (not x13957))
+:assumption (or x24757 (not x19516))
+:assumption (or (not x11100) x26136)
+:assumption (or x2511 (not x78))
+:assumption (or (not x23244) x1406 x8002)
+:assumption (or x28264 (not x16937) x1222 x21382 (not x23556) x27220 x28680 x26215)
+:assumption (or x8907 x14200)
+:assumption (or x28051 x2846)
+:assumption (or (not x6969) x3877)
+:assumption (or x19869 (not x21072) (not x25277))
+:assumption (or x27005 x13853)
+:assumption (or (not x29324) (not x7456))
+:assumption (or (not x14568) (not x21815))
+:assumption (or x19829 x7535)
+:assumption (or x29443 x15061)
+:assumption (or (not x1552) x20264)
+:assumption (or (not x20784) (not x2133))
+:assumption (or x13963 (not x6395))
+:assumption (or (not x25961) x14846 (not x20356) x14760 (not x22585) (not x30957) x11655 x17494)
+:assumption (or x827 (not x6515) (not x6112))
+:assumption (or (not x29371) x7316)
+:assumption (or x7578 x15745)
+:assumption (or (not x26437) x24614)
+:assumption (or x22547 x5528)
+:assumption (or x14517 (not x7689) x5528)
+:assumption (or x14690 (not x7177))
+:assumption (or x7759 x17789)
+:assumption (or (not x23244) x27363)
+:assumption (or (not x6663) x4561)
+:assumption (or x31568 x26577)
+:assumption (or x9098 x24298)
+:assumption (or (not x25655) x30150)
+:assumption (or x6208 (not x29077))
+:assumption (or (not x17323) x28485 x16763 x19582 (not x18255))
+:assumption (or (not x28820) (not x3242))
+:assumption (or (not x22485) (not x371))
+:assumption (or (not x16304) (not x24530))
+:assumption (or x11798 (not x26388))
+:assumption (or (not x13428) x112)
+:assumption (or x15704 x29442 (not x23244))
+:assumption (or x16926 (not x7815))
+:assumption (or (not x18527) x11217)
+:assumption (or x19749 (not x20935) x27998)
+:assumption (or x26012 x29736)
+:assumption (or (not x4687) x805)
+:assumption (or (not x5007) x4623 (not x10654) x19992)
+:assumption (or (not x23318) (not x8002))
+:assumption (or (not x22217) (not x16229))
+:assumption (or x1564 (not x20325) x29837)
+:assumption (or x28896 x22163)
+:assumption (or x15654 (not x17229) x9008)
+:assumption (or (not x22420) x28165)
+:assumption (or (not x12910) (not x14911) (not x13614))
+:assumption (or x21993 x8002)
+:assumption (or x4026 x24117)
+:assumption (or x18149 x581)
+:assumption (or x10900 (not x15917))
+:assumption (or x26389 (not x6606))
+:assumption (or (not x27540) x4573 (not x8602))
+:assumption (or (not x21177) x3264 x8342)
+:assumption (or (not x18623) x5113 (not x2449))
+:assumption (or (not x18295) (not x5546))
+:assumption (or x10261 (not x14071))
+:assumption (or x23499 x28764)
+:assumption (or x28268 (not x10334))
+:assumption (or (not x20543) (not x18880))
+:assumption (or x28457 (not x10874) (not x22722) x28242)
+:assumption (or (not x9030) x4259)
+:assumption (or x30822 (not x29037))
+:assumption (or (not x25911) x26157)
+:assumption (or (not x24723) x3862)
+:assumption (or (not x5856) (not x11082))
+:assumption (or x24756 x20312 (not x29312) x849)
+:assumption (or x12608 (not x4650))
+:assumption (or (not x1621) (not x4307))
+:assumption (or x18681 x11927)
+:assumption (or x25166 (not x5411))
+:assumption (or (not x8689) (not x30521))
+:assumption (or x6347 (not x16044))
+:assumption (or x18373 x8602 (not x20726))
+:assumption (or (not x5784) (not x1448))
+:assumption (or x25132 x19501)
+:assumption (or x2837 x23773)
+:assumption (or x13029 x1369)
+:assumption (or x30111 (not x5796) x18941 (not x24304) x31445 (not x5776))
+:assumption (or x1276 x9580)
+:assumption (or (not x28973) x16898 x2088)
+:assumption (or x12539 x8111)
+:assumption (or (not x19837) x16003)
+:assumption (or (not x16025) x25018)
+:assumption (or x6103 (not x17364))
+:assumption (or (not x23589) x25659 x24847)
+:assumption (or x16688 x15886 x4259)
+:assumption (or x3768 x4792)
+:assumption (or x19361 (not x21860))
+:assumption (or x13551 x31873 (not x2334) x22738)
+:assumption (or (not x218) (not x19447) x17075)
+:assumption (or (not x7452) (not x23244) (not x24756))
+:assumption (or x15861 (not x8070))
+:assumption (or x6740 (not x1734))
+:assumption (or (not x30809) (not x27615))
+:assumption (or x28255 x21590)
+:assumption (or (not x8632) x27116)
+:assumption (or x29383 x27342)
+:assumption (or x28541 x29892 (not x6381) x15152)
+:assumption (or x24673 (not x27268))
+:assumption (or (not x16851) x1343)
+:assumption (or (not x8831) x633)
+:assumption (or x17418 x5244)
+:assumption (or x23244 x2778)
+:assumption (or x30475 (not x23110))
+:assumption (or (not x23244) x4193)
+:assumption (or x8112 x20888)
+:assumption (or (not x24238) x1601)
+:assumption (or x631 (not x14317) x17995 (not x503))
+:assumption (or (not x27091) x21825)
+:assumption (or x1409 x31661)
+:assumption (or (not x9585) (not x944))
+:assumption (or (not x12508) x14803)
+:assumption (or x29046 (not x7174) x9766)
+:assumption (or x11221 x13127)
+:assumption (or (not x20035) x7442)
+:assumption (or x25086 x31696 x31271)
+:assumption (or (not x12871) x19293 x5615)
+:assumption (or (not x26861) x11068)
+:assumption (or (not x22142) (not x16229) x5201)
+:assumption (or (not x25284) (not x4504))
+:assumption (or x14641 (not x16594))
+:assumption (or x30317 x18923)
+:assumption (or (not x21612) x2388)
+:assumption (or (not x4693) (not x16588))
+:assumption (or x26897 (not x13911) (not x24789))
+:assumption (or x1920 x11644 x6928 x3728 x14511 (not x10850))
+:assumption (or x1816 x9325)
+:assumption (or x28566 x7137)
+:assumption (or (not x10909) x27240 (not x550))
+:assumption (or (not x19186) (not x13190))
+:assumption (or (not x2570) (not x16711))
+:assumption (or (not x918) x1138 x23399 (not x21815) (not x16510))
+:assumption (or x16546 x13342)
+:assumption (or x20325 x14617)
+:assumption (or x29101 x6907)
+:assumption (or (not x23982) x17104)
+:assumption (or x25221 (not x24173) x915 x20402)
+:assumption (or (not x191) x3001)
+:assumption (or (not x1240) (not x26949))
+:assumption (or (not x16510) x142 x19299 (not x26885) x30787 (not x21815) (not x16802))
+:assumption (or (not x15218) x20627)
+:assumption (or (not x8358) (not x26736))
+:assumption (or (not x7753) (not x28649) x14936 (not x17363) x9661)
+:assumption (or (not x12474) x3387)
+:assumption (or x9804 (not x9111))
+:assumption (or x20078 x1619)
+:assumption (or (not x22865) (not x24998))
+:assumption (or (not x14652) x23288)
+:assumption (or x17075 (not x2956) x18291)
+:assumption (or (not x25975) (not x4533) x22953 (not x19231))
+:assumption (or (not x17307) (not x20421) (not x25548) x25001 x29329)
+:assumption (or (not x31224) x29713)
+:assumption (or x31752 x14199)
+:assumption (or (not x27353) (not x17860))
+:assumption (or (not x17109) (not x25301))
+:assumption (or (not x23363) (not x13835))
+:assumption (or x17381 (not x10351))
+:assumption (or x7631 (not x31637))
+:assumption (or (not x25598) x5497)
+:assumption (or (not x25638) (not x2844))
+:assumption (or x7108 (not x4862))
+:assumption (or x10534 x6688)
+:assumption (or x9632 x11804)
+:assumption (or x9857 (not x8926))
+:assumption (or (not x16797) x7387 (not x10302) x20402)
+:assumption (or (not x10661) (not x26363))
+:assumption (or (not x2389) (not x26320))
+:assumption (or (not x28167) x11094)
+:assumption (or x28173 x14480)
+:assumption (or x21111 x162)
+:assumption (or (not x21147) x29085)
+:assumption (or (not x6151) (not x1393))
+:assumption (or (not x30200) x13918)
+:assumption (or x19005 (not x4652))
+:assumption (or x13612 (not x26820))
+:assumption (or x6098 (not x6395))
+:assumption (or (not x26992) x10687)
+:assumption (or (not x2278) (not x2288) (not x17573))
+:assumption (or x31790 x20929)
+:assumption (or (not x903) (not x7095))
+:assumption (or x23563 (not x1113) x26605 (not x7796) (not x10642) (not x806) (not x21850) x16057)
+:assumption (or x25224 x16200)
+:assumption (or (not x16605) x14172)
+:assumption (or (not x25980) (not x13475))
+:assumption (or (not x31770) x21604)
+:assumption (or (not x15795) (not x4852))
+:assumption (or x14311 x20601)
+:assumption (or x2316 x11009)
+:assumption (or (not x29229) (not x5709))
+:assumption (or (not x3882) x23437)
+:assumption (or x1388 (not x21366))
+:assumption (or (not x14013) x28692)
+:assumption (or (not x26703) x31202)
+:assumption (or (not x31642) (not x17302))
+:assumption (or (not x8228) (not x1393) x29109)
+:assumption (or (not x8908) (not x25522))
+:assumption (or (not x28519) (not x15720) (not x21457) (not x16510) (not x27455) x16871)
+:assumption (or (not x5536) (not x19135))
+:assumption (or x12718 x8941)
+:assumption (or (not x1217) (not x14839))
+:assumption (or x24917 x3304)
+:assumption (or x26206 (not x31831) x2743 x2777 x12331 (not x20788) (not x20048) (not x22510))
+:assumption (or x21926 x18786)
+:assumption (or x21352 x787)
+:assumption (or (not x27306) (not x4559) (not x16726) x30366)
+:assumption (or x22547 (not x25818))
+:assumption (or (not x6153) (not x23079))
+:assumption (or x2098 (not x16155))
+:assumption (or x12613 x26194)
+:assumption (or (not x23948) (not x31384))
+:assumption (or (not x20109) x31896)
+:assumption (or x27812 x12860)
+:assumption (or (not x20343) (not x18185))
+:assumption (or (not x14421) x2022)
+:assumption (or (not x14289) x20641)
+:assumption (or x29316 (not x27227) x16406)
+:assumption (or x15683 (not x8758))
+:assumption (or x24014 x7200 x31355 x27349)
+:assumption (or (not x26691) (not x7208))
+:assumption (or (not x13851) x16358)
+:assumption (or x18042 (not x30666))
+:assumption (or (not x20650) x24051)
+:assumption (or x7916 (not x5164))
+:assumption (or x22693 x25575)
+:assumption (or x14836 x30002)
+:assumption (or (not x5554) x11583)
+:assumption (or (not x22019) x1736)
+:assumption (or (not x21526) (not x30055) x18042 (not x9647))
+:assumption (or (not x8247) (not x7851))
+:assumption (or x16172 x19965)
+:assumption (or x7881 x19677)
+:assumption (or (not x26442) x24722)
+:assumption (or x26235 x9008 (not x27264))
+:assumption (or x12344 (not x19711) (not x21349) x18519)
+:assumption (or (not x25522) (not x13441))
+:assumption (or (not x31140) (not x18159))
+:assumption (or x23575 x11235)
+:assumption (or x25805 (not x13018) (not x2614))
+:assumption (or x8896 (not x19180))
+:assumption (or x10935 (not x31760))
+:assumption (or x30785 (not x29496))
+:assumption (or (not x9025) (not x11754) (not x6470))
+:assumption (or x8507 x7835)
+:assumption (or x29938 (not x762))
+:assumption (or (not x25359) (not x20143))
+:assumption (or (not x21655) x4966)
+:assumption (or x6633 (not x6573))
+:assumption (or x1582 (not x9266))
+:assumption (or x28825 (not x12831))
+:assumption (or (not x31049) x598)
+:assumption (or x1111 x23771)
+:assumption (or x12578 x7674)
+:assumption (or (not x17451) x4636)
+:assumption (or x12135 (not x7266) x22661)
+:assumption (or (not x15953) (not x17180))
+:assumption (or (not x11580) (not x11247))
+:assumption (or x11430 (not x3754))
+:assumption (or (not x3669) x20342)
+:assumption (or (not x7573) x28470)
+:assumption (or (not x18289) (not x17598))
+:assumption (or x15903 (not x16374) (not x12994) (not x9760))
+:assumption (or x17963 x30902)
+:assumption (or (not x27681) (not x974))
+:assumption (or (not x843) (not x17975) (not x827))
+:assumption (or x11230 x27128)
+:assumption (or (not x24330) (not x25402))
+:assumption (or (not x4315) x5915)
+:assumption (or (not x7394) (not x29666))
+:assumption (or (not x23895) (not x8002))
+:assumption (or (not x6205) (not x10178) (not x15030) x1318 (not x31834))
+:assumption (or x3907 x29983)
+:assumption (or x16746 (not x4366))
+:assumption (or x18369 x1450)
+:assumption (or x27838 (not x620) (not x24837))
+:assumption (or x17860 (not x14578) x4530 x21666)
+:assumption (or x16025 (not x5903))
+:assumption (or (not x3491) x31689)
+:assumption (or (not x24717) x13610)
+:assumption (or (not x18668) x5869)
+:assumption (or (not x14172) (not x11434))
+:assumption (or x24619 x24755)
+:assumption (or x5279 x25159)
+:assumption (or (not x13384) (not x16297))
+:assumption (or (not x6631) x20819)
+:assumption (or x18027 (not x10859))
+:assumption (or (not x8412) (not x6528) x2898 (not x15942) x26387 (not x31014))
+:assumption (or (not x28458) (not x2635))
+:assumption (or x10896 (not x15787) x2156 (not x8526) (not x28639) (not x29550))
+:assumption (or (not x4265) (not x877))
+:assumption (or (not x16510) x7583)
+:assumption (or (not x26495) x264)
+:assumption (or (not x9147) (not x14206) x21698 (not x19131))
+:assumption (or (not x6614) x21185 (not x25659))
+:assumption (or x6275 x19859)
+:assumption (or x30506 (not x21342))
+:assumption (or (not x27450) (not x520))
+:assumption (or x12983 (not x28262) (not x25406) x22989 x208)
+:assumption (or (not x10825) x27186)
+:assumption (or x14429 (not x2683))
+:assumption (or (not x23113) (not x7797))
+:assumption (or x22900 x8599)
+:assumption (or x2043 (not x23475) x10877 x13813 x29949 x13224)
+:assumption (or (not x7200) x1850)
+:assumption (or (not x5881) x31035)
+:assumption (or (not x6651) (not x20368))
+:assumption (or (not x19501) x9786 (not x13867) (not x30453) x18125 x7591)
+:assumption (or x8885 x31231)
+:assumption (or (not x9609) x2093)
+:assumption (or (not x8980) x26802)
+:assumption (or (not x14091) x30707)
+:assumption (or (not x11337) x19392)
+:assumption (or (not x11535) x18375)
+:assumption (or x22831 (not x74) (not x21298) (not x25173))
+:assumption (or x15611 x30890)
+:assumption (or x2845 (not x30256) (not x28630) x13154 x9728)
+:assumption (or (not x19689) (not x9328))
+:assumption (or x25320 (not x24572))
+:assumption (or (not x23936) x27721)
+:assumption (or x15706 (not x13475))
+:assumption (or x17359 x12497)
+:assumption (or (not x2239) x2475)
+:assumption (or (not x14671) x21519)
+:assumption (or (not x11691) x24178)
+:assumption (or x18181 x7101)
+:assumption (or (not x25876) (not x24760))
+:assumption (or (not x16965) x18822)
+:assumption (or x22775 (not x10019))
+:assumption (or (not x5348) x2345 (not x21009) x24978 (not x4401) (not x3797) x19504 (not x3157))
+:assumption (or x5777 x29325)
+:assumption (or (not x22837) x23903)
+:assumption (or (not x3652) (not x14197))
+:assumption (or (not x5741) x17109 (not x2970))
+:assumption (or x30119 (not x24974))
+:assumption (or x9385 x5821)
+:assumption (or x23658 x29734)
+:assumption (or (not x29269) (not x13956) x15884)
+:assumption (or x14763 x28249)
+:assumption (or (not x4942) x19330 x31314 x23958)
+:assumption (or x17046 (not x7777))
+:assumption (or (not x8168) (not x25470))
+:assumption (or x16025 x30418)
+:assumption (or (not x26056) x30445)
+:assumption (or (not x6118) x14178)
+:assumption (or x27005 (not x1393) x20928)
+:assumption (or (not x27169) x2955 x3148 x15255 x27904)
+:assumption (or x21653 (not x13541))
+:assumption (or x27932 (not x28614) x25903 x24303 x23272 (not x5035) (not x31724) (not x19734))
+:assumption (or (not x1143) x19566 x9643 x4504)
+:assumption (or (not x8812) x20903)
+:assumption (or (not x22440) (not x18625))
+:assumption (or x30793 x8797)
+:assumption (or (not x5901) x28830)
+:assumption (or (not x29840) (not x6173))
+:assumption (or x18155 (not x894))
+:assumption (or (not x22697) x9758)
+:assumption (or x23426 x10993)
+:assumption (or x14963 x31724 (not x12640) x29357)
+:assumption (or x23611 (not x20126))
+:assumption (or (not x4568) x27172)
+:assumption (or (not x28977) x19098)
+:assumption (or x11399 x2382)
+:assumption (or x11648 (not x142))
+:assumption (or (not x5199) (not x6147))
+:assumption (or x30458 (not x8273))
+:assumption (or x4818 x30239 (not x19022) x6468)
+:assumption (or (not x24504) (not x12093))
+:assumption (or (not x23187) (not x11078) x30665 x31869)
+:assumption (or x13890 (not x16495))
+:assumption (or (not x27605) x21815)
+:assumption (or x359 x19)
+:assumption (or (not x3067) x10630)
+:assumption (or x9439 x1936 x10376)
+:assumption (or x25633 x29005)
+:assumption (or x13151 (not x16117))
+:assumption (or x29650 x15336 (not x4080))
+:assumption (or x10939 (not x24172))
+:assumption (or (not x2895) (not x24761))
+:assumption (or x1810 (not x11316))
+:assumption (or x12392 x9008)
+:assumption (or (not x9489) (not x23440))
+:assumption (or x20119 (not x9932))
+:assumption (or x17897 x2483)
+:assumption (or x24563 x8409)
+:assumption (or x14641 (not x24192))
+:assumption (or (not x10656) (not x7854) x6746 (not x24155) x2500 x3279)
+:assumption (or (not x27570) (not x25571))
+:assumption (or x31300 x26463)
+:assumption (or x30483 (not x2916))
+:assumption (or x9844 x27356)
+:assumption (or x5688 (not x9799))
+:assumption (or x3158 (not x30259))
+:assumption (or (not x10137) x4813 (not x28695) x20458 (not x16417))
+:assumption (or x10794 (not x16607))
+:assumption (or x15660 (not x19871))
+:assumption (or x19017 x22409)
+:assumption (or x11334 x28306)
+:assumption (or x17974 (not x30947))
+:assumption (or (not x19864) (not x26678))
+:assumption (or (not x1245) (not x1086))
+:assumption (or x19358 (not x22393))
+:assumption (or (not x15271) x6544)
+:assumption (or x28912 (not x26198) x31862 (not x6037) (not x5182) (not x8531) (not x15018) x3331)
+:assumption (or x27563 (not x20783))
+:assumption (or (not x21438) (not x20435))
+:assumption (or x18323 (not x19509) (not x8225))
+:assumption (or (not x15112) x30324)
+:assumption (or (not x9804) (not x6872) (not x21687) (not x4543))
+:assumption (or (not x21855) x24756)
+:assumption (or x16259 (not x18689))
+:assumption (or x5405 (not x4564))
+:assumption (or x28582 (not x14132))
+:assumption (or x23263 x1407)
+:assumption (or (not x15238) (not x4718) x7221 x31494 (not x31042) (not x19450) (not x6735))
+:assumption (or (not x3576) (not x11363))
+:assumption (or (not x3465) x9737)
+:assumption (or (not x11861) x8741 (not x15827) x20686 x16126)
+:assumption (or x7771 x6040)
+:assumption (or (not x22850) x20421)
+:assumption (or x20651 x20230)
+:assumption (or (not x6933) x8729)
+:assumption (or (not x16360) x19132)
+:assumption (or (not x21298) (not x11577))
+:assumption (or (not x6052) (not x14728) x4052 x28003 (not x11622) (not x23244))
+:assumption (or x2305 x5597)
+:assumption (or x20506 (not x20087))
+:assumption (or (not x5981) x17553)
+:assumption (or x22175 x14839 x5802)
+:assumption (or (not x8016) x16484)
+:assumption (or (not x6117) (not x26024))
+:assumption (or (not x23601) (not x14689))
+:assumption (or (not x5206) x11287)
+:assumption (or x2812 x26789 x119)
+:assumption (or x25400 (not x10470))
+:assumption (or x20727 (not x6930))
+:assumption (or (not x2334) x10233)
+:assumption (or (not x28484) (not x28838))
+:assumption (or (not x27436) (not x7442))
+:assumption (or (not x24743) (not x21567))
+:assumption (or x17076 x3825)
+:assumption (or (not x4187) (not x21036))
+:assumption (or x1544 x21690)
+:assumption (or (not x11625) x22932)
+:assumption (or x13087 (not x27787) (not x6146) x6969)
+:assumption (or (not x12844) x14363)
+:assumption (or (not x30348) x3057)
+:assumption (or (not x25402) (not x11428))
+:assumption (or x28498 (not x12921))
+:assumption (or x24765 x349 x13653 (not x27270))
+:assumption (or (not x25105) x26266)
+:assumption (or x25659 x12236)
+:assumption (or x18443 (not x28714))
+:assumption (or x21435 x6221)
+:assumption (or x12849 x21815)
+:assumption (or x10208 x21602)
+:assumption (or x5630 x22890)
+:assumption (or (not x80) (not x16540))
+:assumption (or (not x6797) x14966)
+:assumption (or x21534 x13956)
+:assumption (or (not x22733) (not x8229) x29128 (not x4680))
+:assumption (or x29825 x3827)
+:assumption (or x21839 x31202)
+:assumption (or x8747 x22901 x11506)
+:assumption (or x23362 (not x14591))
+:assumption (or x28149 (not x25137))
+:assumption (or (not x10273) (not x15307))
+:assumption (or x27727 (not x20885))
+:assumption (or x28123 x28605)
+:assumption (or (not x1393) x8061)
+:assumption (or x10865 (not x13559))
+:assumption (or (not x9531) (not x12332))
+:assumption (or x7467 (not x31402))
+:assumption (or x31780 (not x17930))
+:assumption (or (not x25451) x24913)
+:assumption (or (not x29390) x5526)
+:assumption (or (not x13898) (not x21626))
+:assumption (or (not x17351) (not x17315))
+:assumption (or (not x9190) x1570)
+:assumption (or (not x16038) x23982)
+:assumption (or (not x21880) x14923)
+:assumption (or (not x1250) x26353)
+:assumption (or (not x30573) (not x13779))
+:assumption (or (not x13843) x23954)
+:assumption (or (not x14963) x4037)
+:assumption (or x17363 x26836)
+:assumption (or (not x2553) (not x17766) (not x27239) (not x15749))
+:assumption (or (not x26874) (not x1821))
+:assumption (or (not x25659) x9229)
+:assumption (or (not x513) (not x16904))
+:assumption (or x12146 (not x6151))
+:assumption (or (not x10491) (not x1091))
+:assumption (or x13488 (not x8229))
+:assumption (or (not x16656) (not x25402))
+:assumption (or x11986 x4923 x15573 (not x1582))
+:assumption (or x20919 x3367)
+:assumption (or (not x14152) x14903)
+:assumption (or x10971 x16070)
+:assumption (or x24551 (not x21155) (not x26340) x7119 x9193)
+:assumption (or (not x27410) x26061)
+:assumption (or x28474 x26354)
+:assumption (or x9255 x25195)
+:assumption (or x28941 (not x23244) (not x10726))
+:assumption (or x6028 (not x29940) (not x10979) (not x9835) (not x24377) (not x4315) (not x31786))
+:assumption (or (not x28885) x27218)
+:assumption (or (not x11488) (not x31208))
+:assumption (or (not x5152) x14101 (not x7643))
+:assumption (or (not x31525) x31092)
+:assumption (or x6115 (not x3069))
+:assumption (or x29229 (not x12448))
+:assumption (or x31378 (not x20905))
+:assumption (or x9585 x27311 x13108 (not x30678) x18387 (not x7067))
+:assumption (or (not x14587) x26597)
+:assumption (or (not x11402) (not x18932))
+:assumption (or (not x23640) (not x13429))
+:assumption (or (not x5146) x7524 x10968 x28403)
+:assumption (or (not x13636) (not x480))
+:assumption (or x29463 x3389)
+:assumption (or x14723 x9647)
+:assumption (or x9510 (not x20119))
+:assumption (or x29780 x2453)
+:assumption (or (not x14866) x6703)
+:assumption (or (not x31703) (not x6610))
+:assumption (or x22645 (not x12594))
+:assumption (or (not x2506) (not x23378))
+:assumption (or (not x2876) (not x12720))
+:assumption (or (not x29959) (not x7072) x23832 x407 (not x3678) (not x30225) x16434 (not x17589))
+:assumption (or x1787 x14279)
+:assumption (or (not x25783) x1922)
+:assumption (or (not x15824) x18453)
+:assumption (or (not x1840) x9009)
+:assumption (or (not x9008) x30182)
+:assumption (or x18333 x21364)
+:assumption (or x22755 (not x2212))
+:assumption (or x6489 (not x21168) (not x30885) x16488 (not x16894) x26697 (not x25659) x19265)
+:assumption (or (not x14988) x30414)
+:assumption (or (not x17412) x15795)
+:assumption (or (not x5557) x4141)
+:assumption (or (not x30631) (not x13211))
+:assumption (or x28581 (not x19038))
+:assumption (or x14102 x13751 (not x15432) (not x7569) x3935)
+:assumption (or (not x19326) (not x13301))
+:assumption (or (not x6353) x7459)
+:assumption (or (not x20494) x6849)
+:assumption (or (not x17880) x17919)
+:assumption (or (not x4052) (not x21741))
+:assumption (or (not x30955) (not x3853))
+:assumption (or x12149 (not x12825))
+:assumption (or (not x26791) x8864)
+:assumption (or (not x19571) (not x16741))
+:assumption (or (not x15423) x22187)
+:assumption (or x15812 (not x9784))
+:assumption (or (not x4479) (not x25513))
+:assumption (or x31108 x15995)
+:assumption (or x19599 x30072)
+:assumption (or (not x23063) x21026 (not x23341) (not x22928) x20919)
+:assumption (or (not x28756) x18246)
+:assumption (or (not x25412) x26585)
+:assumption (or (not x28243) (not x31514))
+:assumption (or (not x7303) x13880)
+:assumption (or (not x28643) (not x30432))
+:assumption (or x24054 (not x9809) (not x12703) (not x228) x22614 (not x6750))
+:assumption (or (not x23085) (not x4518))
+:assumption (or x12515 x27951)
+:assumption (or x30618 x22408 x22412 (not x7939) x19992 x3307)
+:assumption (or (not x10192) x9967)
+:assumption (or x30572 x21200)
+:assumption (or x26606 x9662 x13923 (not x12242) (not x21367) x25766 (not x21487) x20552)
+:assumption (or x14342 x420)
+:assumption (or x25679 x28329)
+:assumption (or (not x26556) (not x3977) x26571 (not x19667))
+:assumption (or (not x5424) x27255)
+:assumption (or x28912 (not x9025) x28829)
+:assumption (or (not x12009) (not x17976))
+:assumption (or x10012 (not x19682))
+:assumption (or (not x19810) x2090)
+:assumption (or x21298 x14082)
+:assumption (or (not x16974) x24866)
+:assumption (or (not x1547) x8330 x28568)
+:assumption (or x18109 (not x9531))
+:assumption (or (not x22548) x23647)
+:assumption (or (not x25366) (not x22942) x1940)
+:assumption (or x443 x22904)
+:assumption (or x14681 (not x22813))
+:assumption (or (not x19030) (not x2579))
+:assumption (or x3541 (not x5091))
+:assumption (or (not x15200) x26628)
+:assumption (or x11690 x28483)
+:assumption (or x17504 (not x17824) x14591 x15795)
+:assumption (or x5391 (not x29615))
+:assumption (or x19205 (not x15621))
+:assumption (or x13956 x26113)
+:assumption (or (not x22299) x26618 (not x25224) (not x29312) x24756 x18555)
+:assumption (or (not x16025) x1218)
+:assumption (or (not x4334) x10597)
+:assumption (or (not x13576) x746 (not x11910) (not x27004) (not x9806) (not x12650))
+:assumption (or x5393 (not x23400) x2499 x31189)
+:assumption (or x3014 x6540)
+:assumption (or (not x16743) (not x740))
+:assumption (or (not x25784) x12755)
+:assumption (or (not x1042) (not x13956) (not x31581) x18478)
+:assumption (or (not x16352) x23600)
+:assumption (or x7814 (not x11370))
+:assumption (or x29124 (not x983))
+:assumption (or (not x24956) x4443)
+:assumption (or (not x17285) x27230)
+:assumption (or (not x29247) (not x10219))
+:assumption (or (not x2983) x26104 x20804 x14254 x2912)
+:assumption (or x118 x24145)
+:assumption (or x27909 x20403)
+:assumption (or (not x15861) (not x30106) (not x8461))
+:assumption (or (not x8467) (not x17045) (not x3001) x18265 (not x7682))
+:assumption (or (not x5450) (not x29710))
+:assumption (or (not x8002) (not x5459))
+:assumption (or (not x30455) x22978)
+:assumption (or x10954 (not x7924) x27537)
+:assumption (or (not x24786) (not x19155))
+:assumption (or x28429 x17994)
+:assumption (or (not x7144) x13401)
+:assumption (or x3577 x1393 x13814)
+:assumption (or x1721 (not x22496))
+:assumption (or x1393 (not x21603))
+:assumption (or (not x27531) (not x2793))
+:assumption (or x1553 x30781)
+:assumption (or (not x19673) x25366 x21169)
+:assumption (or x25661 x17247)
+:assumption (or x30107 (not x21143))
+:assumption (or (not x26384) x2783)
+:assumption (or (not x19709) (not x17138))
+:assumption (or x1723 x9008)
+:assumption (or x10892 x12481 (not x12074) (not x18293))
+:assumption (or x18945 (not x24799))
+:assumption (or x25624 (not x1920))
+:assumption (or x27414 (not x22750))
+:assumption (or (not x11175) (not x28204))
+:assumption (or x12832 (not x10884))
+:assumption (or x30860 x8774)
+:assumption (or x7754 (not x30912) (not x25038) x5089 x13879 (not x10401))
+:assumption (or (not x6949) x9380)
+:assumption (or (not x25783) x4541)
+:assumption (or (not x27537) x5288)
+:assumption (or (not x31751) x20402)
+:assumption (or x18954 x30308)
+:assumption (or (not x19428) x20407 (not x12753) (not x17144))
+:assumption (or (not x27994) (not x21185))
+:assumption (or x31086 (not x26624))
+:assumption (or x17359 x16258 x16915)
+:assumption (or x12546 (not x21026))
+:assumption (or x5528 (not x1987) (not x18623))
+:assumption (or x27104 x26651)
+:assumption (or (not x30561) (not x24938))
+:assumption (or x27358 x22548 (not x23762) (not x5173))
+:assumption (or x3387 x14095)
+:assumption (or (not x4356) (not x1320))
+:assumption (or x21828 x15630)
+:assumption (or x19062 x12702)
+:assumption (or x28898 x3986)
+:assumption (or x8825 x26012)
+:assumption (or (not x26472) (not x17953))
+:assumption (or x14335 x23244 (not x30097) x8002)
+:assumption (or (not x21925) x8451)
+:assumption (or (not x11676) (not x6635))
+:assumption (or (not x25659) x26901 (not x2407))
+:assumption (or x30225 x13924)
+:assumption (or (not x11422) (not x22604) x2796 x27912 x24718)
+:assumption (or (not x8712) (not x17001))
+:assumption (or (not x12821) x3589)
+:assumption (or x13007 (not x16304))
+:assumption (or (not x8800) x6969 x21914)
+:assumption (or (not x31070) (not x19660))
+:assumption (or (not x11087) x2949)
+:assumption (or x1617 x27929)
+:assumption (or (not x9013) x5769 (not x25560) (not x17176) x5018 (not x24824) (not x26497) (not x11569) x18376 x13092 x31894)
+:assumption (or (not x19642) x16890)
+:assumption (or (not x25552) (not x31379))
+:assumption (or (not x7991) x8498)
+:assumption (or (not x2223) x26432)
+:assumption (or x25307 x4952 x8870 x9531 x17454)
+:assumption (or x31774 x29914)
+:assumption (or x15367 (not x14008))
+:assumption (or x16757 (not x26647))
+:assumption (or (not x10306) (not x21623))
+:assumption (or x1714 x9880)
+:assumption (or x17981 x20937)
+:assumption (or x26958 x12578)
+:assumption (or (not x23029) x6754)
+:assumption (or x16234 x12298)
+:assumption (or (not x14489) (not x8735))
+:assumption (or (not x23507) x14250)
+:assumption (or (not x23886) (not x28413))
+:assumption (or x27537 x13862)
+:assumption (or x11291 x20466)
+:assumption (or x22500 x21893)
+:assumption (or (not x4088) (not x12747))
+:assumption (or (not x8341) x18748 (not x6011) x27603 x17989 (not x9651) (not x7205) x20214)
+:assumption (or x10957 x7537 (not x23399) (not x4039))
+:assumption (or x1318 (not x15079))
+:assumption (or (not x15260) (not x5657))
+:assumption (or (not x4925) x17758 x11748 (not x326) (not x31627))
+:assumption (or x19974 x4192)
+:assumption (or x25033 (not x18012))
+:assumption (or (not x15206) (not x20774) (not x8825) (not x18293))
+:assumption (or x20358 (not x6462))
+:assumption (or (not x27377) (not x5786))
+:assumption (or (not x29383) (not x4425) (not x6115) x3266 (not x4695) x26388 x13641 x3069)
+:assumption (or x10296 x1334)
+:assumption (or (not x16045) x1621)
+:assumption (or (not x6573) x4321)
+:assumption (or x6601 x14493)
+:assumption (or x119 (not x12862))
+:assumption (or (not x6158) x23958)
+:assumption (or (not x4221) (not x14542))
+:assumption (or (not x20416) (not x21628))
+:assumption (or x17969 (not x1348))
+:assumption (or (not x9413) x22809 x927 (not x20015) (not x9466) x28933)
+:assumption (or x772 x17994 (not x5040) (not x142) (not x25687))
+:assumption (or (not x30397) x24368)
+:assumption (or x3766 (not x26897))
+:assumption (or (not x8002) (not x29432))
+:assumption (or (not x16798) (not x31283))
+:assumption (or (not x24791) (not x11656))
+:assumption (or (not x4714) x29897)
+:assumption (or (not x29001) x12215)
+:assumption (or x15563 x10519)
+:assumption (or (not x27702) x16185 (not x8039) x2318)
+:assumption (or x5154 x3738 x25837)
+:assumption (or (not x10391) (not x8602))
+:assumption (or (not x13137) (not x21112))
+:assumption (or (not x7700) x19546)
+:assumption (or x13408 x13864)
+:assumption (or x8002 (not x21562))
+:assumption (or x8879 (not x7743))
+:assumption (or (not x14135) (not x11236))
+:assumption (or x8466 (not x5053))
+:assumption (or x18447 x27011)
+:assumption (or x29946 (not x3779))
+:assumption (or x25309 (not x2780))
+:assumption (or (not x22238) (not x9439) x13622 (not x29009))
+:assumption (or x540 (not x26333))
+:assumption (or x27861 x11067)
+:assumption (or (not x22211) (not x14900))
+:assumption (or (not x6785) x22418)
+:assumption (or x19116 x27090)
+:assumption (or x25426 x22862)
+:assumption (or (not x14050) x29899)
+:assumption (or (not x16601) x27396)
+:assumption (or x5992 x14994)
+:assumption (or x13504 (not x26026))
+:assumption (or x5128 (not x9278))
+:assumption (or x27861 x16602)
+:assumption (or x18859 (not x29086))
+:assumption (or x17930 x18881)
+:assumption (or x21657 (not x8950))
+:assumption (or (not x16799) (not x22669))
+:assumption (or x2220 x8364)
+:assumption (or (not x10346) x31135)
+:assumption (or (not x3417) x23992)
+:assumption (or (not x21633) x25762 (not x1698) x27233)
+:assumption (or (not x18527) x18055)
+:assumption (or (not x18859) x19992 (not x918) x28342 x26426)
+:assumption (or x541 x7040)
+:assumption (or (not x29757) x8447 x30966 (not x27673))
+:assumption (or (not x21298) (not x12803))
+:assumption (or (not x13825) x15069)
+:assumption (or (not x4213) (not x25971))
+:assumption (or x18567 x8002 x23244 (not x13956) (not x22521))
+:assumption (or x12085 (not x8517))
+:assumption (or (not x31829) x25170)
+:assumption (or x24799 (not x24473) (not x9531) (not x23198) (not x29886) x6469 x10762 (not x18945))
+:assumption (or (not x7241) (not x5822))
+:assumption (or x26046 (not x17387))
+:assumption (or x8807 (not x17014))
+:assumption (or x18859 x819 x9071)
+:assumption (or x30379 x7598)
+:assumption (or (not x20949) (not x17538))
+:assumption (or x2871 x9430)
+:assumption (or x24639 x6238)
+:assumption (or x26648 (not x20624) x22855)
+:assumption (or x2582 x30875)
+:assumption (or (not x23353) (not x20222) (not x7835) (not x19958) x9051 x30782 (not x16432) (not x30572))
+:assumption (or (not x4361) (not x22477))
+:assumption (or x30593 (not x23083))
+:assumption (or x20398 x23130)
+:assumption (or x11505 (not x20744))
+:assumption (or x29417 x12453 x28355 x16459 x8187 x9701 (not x26165))
+:assumption (or x1461 (not x18532))
+:assumption (or x2676 (not x15341))
+:assumption (or (not x26677) x25523)
+:assumption (or (not x28799) x24627)
+:assumption (or (not x11374) (not x12867))
+:assumption (or (not x20085) x5125)
+:assumption (or x30412 x1409)
+:assumption (or (not x12162) (not x12536) (not x10712) (not x19214))
+:assumption (or x25659 (not x3757))
+:assumption (or x26931 x4145)
+:assumption (or (not x16599) x11264)
+:assumption (or (not x29912) x10967 x21653)
+:assumption (or (not x23370) x26103)
+:assumption (or (not x7299) x10697)
+:assumption (or x24200 (not x25979))
+:assumption (or x30318 (not x15794))
+:assumption (or x1113 x3610)
+:assumption (or x17444 (not x28641))
+:assumption (or x759 (not x8002))
+:assumption (or x22554 (not x23244))
+:assumption (or (not x16096) (not x5442))
+:assumption (or x14113 (not x25971))
+:assumption (or x13622 x20532 (not x3834))
+:assumption (or x16568 (not x2861) (not x22611) (not x1116) x9457)
+:assumption (or (not x4548) (not x17901))
+:assumption (or x4753 (not x22208))
+:assumption (or x19306 (not x23537))
+:assumption (or x31636 (not x21494) x25423)
+:assumption (or x6716 (not x5022))
+:assumption (or x8423 x11891)
+:assumption (or (not x5516) x2667 x24761)
+:assumption (or x24380 (not x25023) (not x31100) (not x9453) x16872 x2393)
+:assumption (or x19946 x3439)
+:assumption (or x5530 (not x20592))
+:assumption (or (not x26641) (not x11318))
+:assumption (or x215 (not x15949) x3528)
+:assumption (or x12907 (not x9294) (not x14435) (not x2852))
+:assumption (or x21029 x2922)
+:assumption (or (not x15795) x5567)
+:assumption (or x25224 (not x21855))
+:assumption (or x31683 (not x8757) x21298 (not x16820))
+:assumption (or x14262 x26227)
+:assumption (or x15892 x18560)
+:assumption (or (not x4596) x29934 (not x13857) x2938 (not x16654) x19313)
+:assumption (or x24631 (not x20058))
+:assumption (or (not x27088) x30968)
+:assumption (or x31153 (not x27329))
+:assumption (or (not x20419) x3120)
+:assumption (or (not x23780) x18859 (not x31165))
+:assumption (or (not x28505) x15724)
+:assumption (or (not x1749) x8462 x6848)
+:assumption (or x18198 x1259)
+:assumption (or (not x23633) (not x10361))
+:assumption (or x12976 (not x19869))
+:assumption (or x10682 (not x4401))
+:assumption (or (not x9930) x901)
+:assumption (or x31829 (not x31261))
+:assumption (or x31134 x5758)
+:assumption (or (not x11113) (not x2065))
+:assumption (or (not x19992) x31136 x1542)
+:assumption (or x6524 (not x9008))
+:assumption (or x10776 x28801)
+:assumption (or x30631 x17138 (not x8990) x25182 x13063 x2773 (not x31338))
+:assumption (or x5394 (not x11203))
+:assumption (or (not x24520) (not x23310))
+:assumption (or x24397 (not x6969))
+:assumption (or (not x15314) (not x26594))
+:assumption (or (not x22556) x17647)
+:assumption (or x2669 x25018)
+:assumption (or x30224 (not x21256))
+:assumption (or (not x23632) (not x29772))
+:assumption (or (not x26399) (not x3617) (not x21388))
+:assumption (or x16778 (not x18469))
+:assumption (or x2215 x30990)
+:assumption (or (not x28085) x25071)
+:assumption (or (not x30451) x7989)
+:assumption (or x8083 (not x26439))
+:assumption (or (not x27915) (not x28087))
+:assumption (or x29942 x6165)
+:assumption (or x18625 (not x22380))
+:assumption (or x18517 x69)
+:assumption (or (not x14104) x24066)
+:assumption (or (not x27927) (not x6068))
+:assumption (or x24913 (not x17171))
+:assumption (or (not x13956) x2857)
+:assumption (or (not x31475) x12320)
+:assumption (or x20416 (not x16802) (not x10713) (not x25366))
+:assumption (or (not x24155) x17397)
+:assumption (or (not x254) x15186)
+:assumption (or (not x7772) x16319)
+:assumption (or x169 x1483)
+:assumption (or x24237 x14839 (not x29936))
+:assumption (or x12285 (not x4809) x30002)
+:assumption (or (not x6012) x28340)
+:assumption (or (not x6824) x1621)
+:assumption (or (not x31702) x20087)
+:assumption (or x24508 x25659)
+:assumption (or x22580 x27377)
+:assumption (or (not x10986) x6907)
+:assumption (or (not x837) x18539)
+:assumption (or x5840 x17230)
+:assumption (or (not x12583) (not x26189))
+:assumption (or (not x29435) (not x17594))
+:assumption (or x12984 (not x16326))
+:assumption (or x3989 x23731)
+:assumption (or x10963 (not x4098) (not x16098))
+:assumption (or (not x20704) x25484)
+:assumption (or (not x5528) x4774 (not x20955) (not x760) (not x6690) x8808)
+:assumption (or (not x3101) (not x18902))
+:assumption (or x21049 x30825 x28994)
+:assumption (or x9008 x11604)
+:assumption (or x21957 (not x22259))
+:assumption (or x9647 x21093 x8106)
+:assumption (or (not x15476) (not x31095))
+:assumption (or (not x8452) (not x7199))
+:assumption (or (not x3694) (not x25060))
+:assumption (or (not x17985) x4649)
+:assumption (or x28211 x28498)
+:assumption (or (not x25471) x6044 (not x8157))
+:assumption (or x8602 x22669 (not x9445) x16799 (not x31347) x9520 x9070 (not x13177))
+:assumption (or x11288 (not x31505))
+:assumption (or (not x24422) x26481)
+:assumption (or (not x25590) x16487)
+:assumption (or (not x20730) (not x25971))
+:assumption (or x19462 x20934)
+:assumption (or (not x5542) x15336)
+:assumption (or x8520 x13303)
+:assumption (or (not x27343) x3621)
+:assumption (or (not x30118) (not x16283))
+:assumption (or x13780 (not x22960))
+:assumption (or x12045 x1650 (not x23634) (not x6946))
+:assumption (or (not x29224) x645)
+:assumption (or (not x26291) (not x30290))
+:assumption (or (not x2923) x29750)
+:assumption (or (not x29772) x15264)
+:assumption (or (not x30978) (not x2656))
+:assumption (or (not x15205) x8164 x9008)
+:assumption (or (not x2508) x11126)
+:assumption (or (not x28151) (not x20091) (not x27412) x10909)
+:assumption (or x31092 (not x9008))
+:assumption (or x8840 x15011)
+:assumption (or (not x29533) x8593)
+:assumption (or (not x18599) x3902)
+:assumption (or x28180 (not x10510))
+:assumption (or x6880 (not x20112))
+:assumption (or x24046 x8397)
+:assumption (or x14150 (not x11294))
+:assumption (or (not x9627) x10276)
+:assumption (or (not x5476) (not x1042) x5528)
+:assumption (or x15752 (not x7727))
+:assumption (or x6663 x29237 x11075 x3937 x26057)
+:assumption (or (not x16802) x27721)
+:assumption (or x8002 x26768)
+:assumption (or (not x18427) (not x2987))
+:assumption (or x3264 x21917)
+:assumption (or x26460 x30453)
+:assumption (or x29975 x16696)
+:assumption (or x9123 x14302)
+:assumption (or (not x7684) x15739)
+:assumption (or x18306 (not x26760))
+:assumption (or (not x9252) (not x25315))
+:assumption (or x11542 (not x23980) (not x16707) (not x4828))
+:assumption (or x13018 (not x26151))
+:assumption (or (not x1994) x25423)
+:assumption (or (not x169) x16755)
+:assumption (or (not x9360) (not x16025))
+:assumption (or x4943 x8634)
+:assumption (or x2654 x6499)
+:assumption (or x10571 x15737)
+:assumption (or x4511 (not x19992))
+:assumption (or (not x24079) x21142)
+:assumption (or x12792 x10088)
+:assumption (or x1418 x27233)
+:assumption (or x8021 (not x6555) (not x10178))
+:assumption (or x8133 (not x18612))
+:assumption (or x8820 x13012)
+:assumption (or x2327 (not x2392))
+:assumption (or x20223 (not x26599))
+:assumption (or x21358 x11047)
+:assumption (or x912 (not x23221))
+:assumption (or (not x11892) x23166 (not x14839))
+:assumption (or x970 (not x6255))
+:assumption (or (not x30099) x31016)
+:assumption (or (not x17225) (not x20157) x15007)
+:assumption (or x8976 (not x1751) (not x28952) x19915 (not x19747))
+:assumption (or x23492 (not x4564))
+:assumption (or x27127 (not x20072))
+:assumption (or (not x23602) x1808 (not x6396) x29280)
+:assumption (or (not x2341) (not x8688))
+:assumption (or x27172 x13972)
+:assumption (or (not x11616) x25292 (not x19686) x17400 x18170 x22287 x7200)
+:assumption (or (not x8765) (not x17349))
+:assumption (or x25569 x25811 (not x827) (not x1763) (not x18618) (not x22674) x21088 x9408)
+:assumption (or x21052 x21653)
+:assumption (or x9531 (not x14469) (not x17802) x14067 x27469)
+:assumption (or (not x6083) x5696)
+:assumption (or x22306 x18644 (not x16702) (not x22495))
+:assumption (or x13458 x18986)
+:assumption (or (not x31864) (not x24591))
+:assumption (or x7739 (not x17359))
+:assumption (or (not x29312) (not x30328))
+:assumption (or x22936 x16277 x19816 (not x9939) x7471 (not x17039) x30556 x6316 (not x1286))
+:assumption (or (not x2351) (not x9799))
+:assumption (or (not x29182) (not x3340))
+:assumption (or (not x21021) (not x21316))
+:assumption (or x31928 (not x54))
+:assumption (or x30255 (not x13956) x29799 x1641)
+:assumption (or x26651 (not x754))
+:assumption (or (not x5291) x883)
+:assumption (or (not x2897) (not x18594))
+:assumption (or (not x4528) x2285)
+:assumption (or (not x29194) x5359)
+:assumption (or (not x8148) (not x26243))
+:assumption (or x30432 x8750)
+:assumption (or (not x3756) x12788)
+:assumption (or x14292 x13051)
+:assumption (or (not x22382) (not x13956))
+:assumption (or (not x12817) (not x24142) (not x22091) (not x8874) x7286 x18707)
+:assumption (or (not x22445) (not x10112))
+:assumption (or (not x693) (not x18713))
+:assumption (or (not x3103) (not x28482))
+:assumption (or x480 (not x2731))
+:assumption (or x18237 (not x4830))
+:assumption (or (not x16373) x26062 (not x14839))
+:assumption (or (not x13317) x27797)
+:assumption (or x19523 (not x20325))
+:assumption (or x22437 x22366)
+:assumption (or (not x2579) x22964)
+:assumption (or (not x11509) x1393)
+:assumption (or (not x493) (not x14068))
+:assumption (or (not x4253) x1854)
+:assumption (or x20485 x16819)
+:assumption (or (not x31358) x19648)
+:assumption (or (not x20546) x22972 x22659 x89 (not x24824))
+:assumption (or x31829 (not x17803) (not x29840))
+:assumption (or (not x8002) x20680 x29333 x6067)
+:assumption (or x3207 (not x8175))
+:assumption (or (not x21062) x16598)
+:assumption (or (not x18192) (not x22454))
+:assumption (or x6320 (not x11087))
+:assumption (or x6068 (not x21653) (not x11681))
+:assumption (or (not x12681) x13222)
+:assumption (or x18219 (not x25224) (not x15530) (not x14221) x13277 (not x10885) (not x7126) (not x1287) x5371)
+:assumption (or x18641 (not x27882))
+:assumption (or (not x11676) x9551)
+:assumption (or (not x9202) x12438)
+:assumption (or x23838 (not x21915))
+:assumption (or (not x17864) (not x28531))
+:assumption (or x9531 x7202)
+:assumption (or x1391 (not x31153))
+:assumption (or x6239 (not x10397) x18754 x25717 (not x23244) (not x7789))
+:assumption (or x5210 x10637)
+:assumption (or (not x9233) (not x28193))
+:assumption (or (not x23091) (not x4253))
+:assumption (or (not x18671) (not x29027))
+:assumption (or x3392 x2730)
+:assumption (or (not x16495) (not x16375))
+:assumption (or (not x11375) (not x25457))
+:assumption (or x13062 x11191)
+:assumption (or x18642 x17730)
+:assumption (or (not x21298) x441)
+:assumption (or x26598 x2658)
+:assumption (or (not x20905) (not x9794))
+:assumption (or (not x22231) (not x7932))
+:assumption (or x20341 x22334)
+:assumption (or x6430 x6873)
+:assumption (or x4116 x15633)
+:assumption (or (not x2596) (not x15381))
+:assumption (or x1738 x29325)
+:assumption (or x23677 x28091)
+:assumption (or (not x13009) (not x18925))
+:assumption (or x4132 x13783 (not x23244) (not x8711) x4929 (not x9881))
+:assumption (or (not x626) (not x6860))
+:assumption (or (not x8002) x7965)
+:assumption (or (not x18379) x47)
+:assumption (or (not x22058) x18668)
+:assumption (or (not x10044) (not x1824) x1116)
+:assumption (or (not x31310) (not x23217))
+:assumption (or x23279 x23159)
+:assumption (or x8194 x5337 (not x26432))
+:assumption (or x17357 x4396)
+:assumption (or (not x6178) (not x24756))
+:assumption (or (not x24861) (not x29887))
+:assumption (or x27173 x24940)
+:assumption (or x4821 (not x5394))
+:assumption (or x12712 x11422)
+:assumption (or (not x13092) (not x27405))
+:assumption (or x13028 (not x12921))
+:assumption (or x10911 x31755)
+:assumption (or x21786 x10523)
+:assumption (or (not x22462) (not x26796))
+:assumption (or x5528 x7401)
+:assumption (or (not x23854) (not x10342))
+:assumption (or (not x7666) (not x3654))
+:assumption (or x17962 (not x5440))
+:assumption (or (not x4452) (not x15923))
+:assumption (or (not x21129) (not x16243))
+:assumption (or x13617 x473 x11488)
+:assumption (or (not x19941) (not x3759) (not x8532))
+:assumption (or (not x30208) x31199)
+:assumption (or x21619 x7770)
+:assumption (or x10803 x16974)
+:assumption (or x28079 (not x1466))
+:assumption (or (not x10376) (not x9439))
+:assumption (or (not x23244) (not x8611))
+:assumption (or (not x31432) (not x15643))
+:assumption (or (not x25319) x25102 x14530 (not x9938))
+:assumption (or x23929 x1037)
+:assumption (or (not x16038) (not x31704))
+:assumption (or x29651 x20558)
+:assumption (or x20402 x24092)
+:assumption (or (not x6659) (not x24938))
+:assumption (or x25237 (not x5481))
+:assumption (or x9440 x12805)
+:assumption (or x13857 (not x756))
+:assumption (or x10874 x12348)
+:assumption (or (not x3324) (not x23682))
+:assumption (or x25659 (not x16679))
+:assumption (or (not x17174) x12643)
+:assumption (or (not x2500) (not x11884))
+:assumption (or x28538 (not x21662))
+:assumption (or x25907 x5028)
+:assumption (or x6097 x2017 (not x4726) (not x31670) (not x29124))
+:assumption (or (not x21833) (not x10702))
+:assumption (or (not x5314) (not x25784))
+:assumption (or x6205 x27350)
+:assumption (or x24446 x4202)
+:assumption (or (not x10245) (not x9263))
+:assumption (or x27491 x18069)
+:assumption (or (not x7321) x23801)
+:assumption (or x6002 (not x22829))
+:assumption (or x30394 x10289)
+:assumption (or (not x10500) (not x3823) x3058 (not x27580) (not x16329))
+:assumption (or x24667 (not x14216))
+:assumption (or x21096 (not x18752))
+:assumption (or (not x25413) x9121)
+:assumption (or x14747 (not x12429))
+:assumption (or x12173 (not x21543))
+:assumption (or x24722 x26069)
+:assumption (or (not x20413) (not x23633) x23244 (not x25008) x13956 x8002)
+:assumption (or x26639 x28537)
+:assumption (or (not x21145) (not x30232) (not x28314) (not x16471))
+:assumption (or x7623 (not x21367))
+:assumption (or x2956 x30967)
+:assumption (or (not x30404) (not x13827))
+:assumption (or x2043 x10950)
+:assumption (or x14702 x13441)
+:assumption (or (not x8602) (not x9169))
+:assumption (or (not x23279) (not x24822))
+:assumption (or x29643 x19287 x3497 (not x16510) x21806 (not x31398))
+:assumption (or x31581 x24088)
+:assumption (or (not x8015) x14329)
+:assumption (or (not x23036) x29442)
+:assumption (or (not x24691) (not x23358))
+:assumption (or x17812 x6307)
+:assumption (or (not x26637) (not x6860))
+:assumption (or x28663 (not x22304))
+:assumption (or (not x25366) (not x18872) x23006 x12242)
+:assumption (or (not x27462) x17843)
+:assumption (or x22366 (not x22643))
+:assumption (or x30761 (not x20073))
+:assumption (or (not x2762) x7549 x23244)
+:assumption (or x13846 x202 (not x16583) (not x3001))
+:assumption (or (not x31482) (not x16599))
+:assumption (or (not x15942) x26387 (not x31014) (not x8412) x19459 x16185)
+:assumption (or (not x28516) (not x14839) x13078)
+:assumption (or (not x18144) x17855)
+:assumption (or (not x8002) (not x13495))
+:assumption (or (not x3782) (not x19970) x31081)
+:assumption (or x27074 x5858)
+:assumption (or (not x18255) x19582 x28485 (not x18222) x25012)
+:assumption (or (not x21996) x15505)
+:assumption (or x14398 x288)
+:assumption (or (not x6566) x16974)
+:assumption (or x19444 x20353)
+:assumption (or (not x5403) (not x20279) x23737 (not x13542))
+:assumption (or x4703 x9531)
+:assumption (or (not x17726) x8680)
+:assumption (or (not x21020) (not x26784))
+:assumption (or (not x26328) x26432)
+:assumption (or (not x26980) x16266)
+:assumption (or x22571 x957)
+:assumption (or (not x18867) (not x17893))
+:assumption (or (not x19143) (not x10115) x7910 (not x6832) x9676 x2724 (not x8727))
+:assumption (or x10110 (not x29428))
+:assumption (or (not x25659) (not x30513))
+:assumption (or (not x18798) x27853)
+:assumption (or x9008 x1087 (not x15699) x25807 (not x6202) x648)
+:assumption (or (not x17330) x15795 (not x1756) (not x14591))
+:assumption (or (not x22000) (not x21975))
+:assumption (or (not x9346) x10770)
+:assumption (or (not x19726) x12447)
+:assumption (or x24792 (not x19546))
+:assumption (or x11202 x28677)
+:assumption (or x5137 x3528)
+:assumption (or (not x30206) (not x25254))
+:assumption (or x28167 (not x11577))
+:assumption (or x10408 x30065)
+:assumption (or x14301 (not x15520))
+:assumption (or x17243 x11510)
+:assumption (or x8561 x13902)
+:assumption (or (not x1524) x18822)
+:assumption (or (not x14216) (not x30810))
+:assumption (or (not x30581) x18768)
+:assumption (or (not x1456) (not x4377))
+:assumption (or (not x18060) (not x26190))
+:assumption (or (not x16597) x10183)
+:assumption (or x17728 x749)
+:assumption (or x7721 x24066)
+:assumption (or x1952 (not x4958))
+:assumption (or (not x8303) x14963)
+:assumption (or (not x1393) x31783)
+:assumption (or (not x7542) x14960 x4533 x11201 (not x27532) x16743 (not x31873))
+:assumption (or x28342 (not x8802))
+:assumption (or (not x7708) (not x28010))
+:assumption (or x24066 (not x14238))
+:assumption (or (not x11473) (not x21879))
+:assumption (or x15569 x27610)
+:assumption (or (not x22175) x5470)
+:assumption (or (not x7605) (not x10))
+:assumption (or (not x31414) x20702)
+:assumption (or (not x21831) (not x12833))
+:assumption (or x31786 x10979)
+:assumption (or x6487 x19633 x5367 (not x15826) x28127 x7272 x20089 x2681 (not x6820))
+:assumption (or x21902 (not x10061))
+:assumption (or (not x4559) (not x28572))
+:assumption (or (not x8988) x30886)
+:assumption (or x26349 x14522)
+:assumption (or (not x2356) (not x7193))
+:assumption (or x8991 (not x11384) x6381 x16604 (not x23678))
+:assumption (or (not x3670) x8815)
+:assumption (or x9472 (not x19593))
+:assumption (or (not x29483) x28779)
+:assumption (or x18872 (not x23006))
+:assumption (or (not x10253) (not x27915) x8574)
+:assumption (or x29091 x25628 x12176 (not x8278) x31789)
+:assumption (or (not x6788) (not x14447))
+:assumption (or x15501 x6685)
+:assumption (or x29953 (not x6984))
+:assumption (or (not x17417) (not x14771))
+:assumption (or x5824 x18351)
+:assumption (or (not x8253) (not x9531))
+:assumption (or x14752 x5132)
+:assumption (or x26351 x22239)
+:assumption (or x30524 (not x22606))
+:assumption (or (not x27739) (not x670))
+:assumption (or x953 (not x27923) (not x30066) (not x2657))
+:assumption (or x29294 x27393)
+:assumption (or x31005 x31501 x30357 x17225)
+:assumption (or (not x5464) x1621 x22852 (not x15798))
+:assumption (or x2840 x11004)
+:assumption (or (not x8978) x21815 (not x21278))
+:assumption (or x27532 (not x12883) x2231)
+:assumption (or (not x12100) (not x29665))
+:assumption (or x11626 x12253 x9008)
+:assumption (or (not x27441) (not x30935))
+:assumption (or (not x9802) x27124)
+:assumption (or (not x22953) (not x29880))
+:assumption (or x21912 x14259)
+:assumption (or x15597 (not x31555))
+:assumption (or (not x25371) (not x21339))
+:assumption (or (not x23244) (not x23574))
+:assumption (or x24219 x16374 (not x14455) (not x23278))
+:assumption (or (not x18655) (not x1870))
+:assumption (or (not x4066) x4973)
+:assumption (or x3061 x2180)
+:assumption (or (not x1186) (not x28129))
+:assumption (or x13448 x8207)
+:assumption (or x26323 x15062)
+:assumption (or x3048 x24573)
+:assumption (or (not x7286) x7794)
+:assumption (or x6685 (not x28733))
+:assumption (or x5035 x19734)
+:assumption (or x19864 x21345 x11044)
+:assumption (or (not x22008) x21651)
+:assumption (or (not x6780) x21682 (not x6973) x10821 (not x15628) x7678)
+:assumption (or (not x27819) x23611)
+:assumption (or (not x7726) (not x18973))
+:assumption (or x6114 x16741)
+:assumption (or x5349 x21963)
+:assumption (or x18938 (not x21400))
+:assumption (or (not x21182) x28042)
+:assumption (or (not x21641) (not x7862))
+:assumption (or x16295 (not x12059) (not x21036) (not x12789) x24584 x11935)
+:assumption (or (not x29442) x20455 (not x13) (not x28555) x11969)
+:assumption (or (not x7329) (not x8631))
+:assumption (or x1393 (not x19088))
+:assumption (or (not x18807) x17656)
+:assumption (or x3250 (not x22811))
+:assumption (or x24244 x24965 x25838 (not x6666) (not x24205) (not x9923) (not x29076) x31251)
+:assumption (or x6952 x14857)
+:assumption (or x21252 (not x1393) (not x22539))
+:assumption (or x10499 (not x23244))
+:assumption (or x23915 x20246 (not x3177) (not x6496))
+:assumption (or (not x26012) (not x25372) x11759 x21812 (not x11471) (not x29736) x12117)
+:assumption (or (not x26670) (not x26512) x13392 (not x964))
+:assumption (or x9100 x19145)
+:assumption (or (not x14895) x19766 (not x18262) x6283 (not x5528) x26760)
+:assumption (or (not x22488) x17376 (not x8573))
+:assumption (or (not x22355) (not x19717))
+:assumption (or (not x13131) x372)
+:assumption (or (not x142) (not x3587) x30300)
+:assumption (or x24051 x18020)
+:assumption (or (not x20214) (not x27603))
+:assumption (or (not x1547) x6727)
+:assumption (or x7318 (not x6837))
+:assumption (or x24923 x19207)
+:assumption (or x30499 x22842)
+:assumption (or x17302 (not x24194) x12277 (not x24483) (not x20415) x13651 x7554)
+:assumption (or (not x26786) (not x30954))
+:assumption (or (not x25838) x7006)
+:assumption (or (not x12821) (not x5422))
+:assumption (or (not x4200) (not x16900) (not x19864))
+:assumption (or x2882 (not x11061) x23060 (not x17413))
+:assumption (or (not x16418) (not x9803))
+:assumption (or (not x3677) x5584)
+:assumption (or x24722 x16802 x25878 (not x3003))
+:assumption (or x3084 (not x4874))
+:assumption (or (not x25747) (not x19407))
+:assumption (or (not x13030) x12645)
+:assumption (or x2139 (not x5665))
+:assumption (or x5157 (not x25880))
+:assumption (or x21815 x30187)
+:assumption (or (not x18803) (not x24756))
+:assumption (or (not x18641) x27882)
+:assumption (or (not x14110) (not x19236))
+:assumption (or (not x5315) x8391)
+:assumption (or (not x22360) x12863)
+:assumption (or (not x6013) (not x25911))
+:assumption (or (not x15826) (not x31533))
+:assumption (or (not x15749) (not x30622))
+:assumption (or x2986 (not x11288))
+:assumption (or (not x7058) x29045)
+:assumption (or (not x26921) x2968)
+:assumption (or (not x3455) (not x30672) (not x11143))
+:assumption (or x28114 x1393 (not x16287))
+:assumption (or x9592 (not x3435))
+:assumption (or (not x6700) x6969 x26802)
+:assumption (or (not x12737) (not x5771))
+:assumption (or x24145 (not x21405))
+:assumption (or x11807 (not x19659))
+:assumption (or x12185 (not x16119))
+:assumption (or (not x66) x28024)
+:assumption (or x15737 (not x21925))
+:assumption (or x2238 (not x25355))
+:assumption (or x11641 x15580)
+:assumption (or x14871 (not x3781))
+:assumption (or (not x23249) x12193)
+:assumption (or (not x1217) x30498)
+:assumption (or (not x17200) x31869 (not x27043))
+:assumption (or x13524 x11188)
+:assumption (or (not x25835) (not x24672))
+:assumption (or (not x3270) x23609)
+:assumption (or (not x10534) (not x8230) (not x13291) (not x9675) x5850 (not x9689))
+:assumption (or (not x12744) (not x30457))
+:assumption (or (not x6179) (not x19369))
+:assumption (or (not x25606) (not x18058))
+:assumption (or (not x30079) (not x5526))
+:assumption (or x24761 x29151)
+:assumption (or (not x8084) (not x22534))
+:assumption (or x31260 (not x14839) (not x8546))
+:assumption (or x13178 x21287)
+:assumption (or x18442 (not x22154))
+:assumption (or (not x14160) x28288)
+:assumption (or x13775 x29841)
+:assumption (or x28211 (not x11494))
+:assumption (or x18695 (not x12676) x748)
+:assumption (or x30137 x22728)
+:assumption (or x16304 x519 x15795 x26088)
+:assumption (or (not x3520) x29969)
+:assumption (or x6705 (not x13423))
+:assumption (or x3042 (not x6810) x1117 (not x13954) (not x3304))
+:assumption (or x16187 (not x4907))
+:assumption (or x6269 (not x13956))
+:assumption (or (not x205) (not x16897))
+:assumption (or (not x26752) (not x25659))
+:assumption (or x5642 (not x8775))
+:assumption (or (not x5736) x22904)
+:assumption (or (not x27107) (not x29313))
+:assumption (or (not x5188) (not x24303))
+:assumption (or x3818 x12638)
+:assumption (or x9013 (not x22659))
+:assumption (or x1998 (not x15152))
+:assumption (or (not x11634) x29230)
+:assumption (or x30746 (not x15860))
+:assumption (or (not x15682) (not x1977))
+:assumption (or x13161 x22491 (not x14687) (not x7286) x9594)
+:assumption (or x20364 (not x24358))
+:assumption (or x6301 x24033)
+:assumption (or (not x30333) x28161)
+:assumption (or (not x27311) x23005)
+:assumption (or x17671 (not x11595))
+:assumption (or x25101 (not x17075) (not x218))
+:assumption (or x30964 x27696)
+:assumption (or (not x9885) (not x20199))
+:assumption (or (not x21624) (not x25916))
+:assumption (or (not x2489) x20022 x16025)
+:assumption (or x15673 (not x27145))
+:assumption (or (not x26179) x10973)
+:assumption (or (not x22057) (not x17874) x28150 x12603)
+:assumption (or x8723 (not x16555))
+:assumption (or (not x11129) (not x24107))
+:assumption (or x4813 x29908 (not x22190) (not x29475))
+:assumption (or x25192 x3035 (not x5028) (not x31874) (not x25326) x5813 (not x20863) x18338)
+:assumption (or (not x7919) (not x29286) (not x9126) x8602 x30629 x3117 (not x15241) x24953)
+:assumption (or (not x12750) (not x17233))
+:assumption (or (not x30670) x16110)
+:assumption (or x937 (not x499))
+:assumption (or x27757 x24855)
+:assumption (or x16993 (not x14263) x18859)
+:assumption (or x5748 x3698)
+:assumption (or x30879 x16756)
+:assumption (or x5028 (not x28178))
+:assumption (or (not x13352) (not x16187) (not x30043) x15316 (not x9024))
+:assumption (or x18449 (not x16025) (not x21856))
+:assumption (or (not x30351) (not x5528))
+:assumption (or x28323 x700)
+:assumption (or x23452 (not x1090))
+:assumption (or x166 x23363)
+:assumption (or (not x25394) x15557)
+:assumption (or (not x28325) x21879)
+:assumption (or (not x25797) x21232)
+:assumption (or (not x23400) x14839 (not x435) x2499)
+:assumption (or x23255 x846)
+:assumption (or x24952 (not x20318))
+:assumption (or x15033 (not x28885))
+:assumption (or (not x27911) x26416)
+:assumption (or (not x8602) (not x28676))
+:assumption (or (not x16069) (not x447))
+:assumption (or (not x19395) (not x1712))
+:assumption (or x18746 x6733)
+:assumption (or x4 x2750)
+:assumption (or (not x9189) (not x21659))
+:assumption (or (not x4848) x3025)
+:assumption (or x28850 x22614 (not x1008) x6967 x488)
+:assumption (or (not x13912) (not x12040))
+:assumption (or x13213 x18553 (not x8682))
+:assumption (or (not x19264) x14704)
+:assumption (or x6842 x19430)
+:assumption (or x13503 (not x26432) x9545)
+:assumption (or x26810 x19583)
+:assumption (or x3866 x18694)
+:assumption (or (not x14652) (not x28342))
+:assumption (or (not x30336) (not x17088))
+:assumption (or (not x28797) (not x29930))
+:assumption (or x23358 x29144)
+:assumption (or x25659 x21426 (not x4727))
+:assumption (or (not x4386) x29384)
+:assumption (or x31281 x369)
+:assumption (or x2133 x25753 (not x2186))
+:assumption (or (not x30278) x19349)
+:assumption (or x29290 (not x27100))
+:assumption (or x199 (not x8652))
+:assumption (or x18093 (not x3775))
+:assumption (or x17225 x20157)
+:assumption (or (not x3265) (not x1601))
+:assumption (or x21026 x24035 x14905)
+:assumption (or x31380 (not x12601))
+:assumption (or (not x11392) x24618)
+:assumption (or x11538 (not x1405))
+:assumption (or x20886 x2068)
+:assumption (or (not x31899) (not x14710) x22531 x23479)
+:assumption (or x18553 (not x13490))
+:assumption (or (not x6851) (not x21980))
+:assumption (or x10909 (not x10619))
+:assumption (or (not x31448) x26742 (not x1165) x30269 x16962)
+:assumption (or (not x6790) (not x21921) (not x8002))
+:assumption (or (not x19992) x28138)
+:assumption (or x30583 (not x14156))
+:assumption (or x683 x26501)
+:assumption (or (not x31131) (not x8628))
+:assumption (or (not x22897) (not x8263))
+:assumption (or (not x31576) (not x5893))
+:assumption (or (not x18369) (not x1170))
+:assumption (or (not x11479) x25255)
+:assumption (or (not x20651) (not x8842) x23798 (not x6440) x24968 x6628 x11744)
+:assumption (or (not x11968) x3708)
+:assumption (or (not x12087) x18694)
+:assumption (or x31886 (not x28997))
+:assumption (or x26051 (not x6338))
+:assumption (or (not x28232) x20789)
+:assumption (or (not x6037) (not x9652))
+:assumption (or x25685 (not x25659))
+:assumption (or x15998 (not x10909))
+:assumption (or (not x21442) (not x29268))
+:assumption (or (not x20949) x23789)
+:assumption (or (not x10388) (not x25009))
+:assumption (or (not x4162) (not x25855))
+:assumption (or (not x24380) (not x24053))
+:assumption (or (not x19767) (not x23244))
+:assumption (or (not x4051) x28990)
+:assumption (or (not x12970) (not x9807))
+:assumption (or x18886 x16926)
+:assumption (or (not x27624) (not x25366) (not x695))
+:assumption (or x22343 x3782)
+:assumption (or (not x14217) (not x964))
+:assumption (or (not x24254) (not x3400))
+:assumption (or x6951 x30708)
+:assumption (or (not x18541) (not x10440))
+:assumption (or x103 (not x10972))
+:assumption (or (not x18459) (not x12243))
+:assumption (or x18859 (not x275))
+:assumption (or (not x30328) x28885)
+:assumption (or x11391 (not x11154) (not x31339) (not x3961) (not x9800) (not x21225) x13499 x12528 x13576)
+:assumption (or (not x23089) (not x1817) x28973)
+:assumption (or x2079 (not x26343))
+:assumption (or (not x31286) (not x22606))
+:assumption (or (not x27570) (not x9993))
+:assumption (or x8532 x18622)
+:assumption (or x31547 (not x3786))
+:assumption (or (not x5054) (not x23432))
+:assumption (or (not x519) (not x23300))
+:assumption (or x13360 (not x16349) (not x1467))
+:assumption (or (not x5981) x11267)
+:assumption (or (not x6752) x21450)
+:assumption (or (not x28014) x13969)
+:assumption (or (not x30166) (not x28866))
+:assumption (or x8468 (not x1156))
+:assumption (or (not x2451) x9860)
+:assumption (or (not x6416) x12257)
+:assumption (or (not x22627) x11179)
+:assumption (or (not x3445) (not x18500) x15934 x21298)
+:assumption (or (not x7416) x22308)
+:assumption (or x24720 (not x3352))
+:assumption (or x30669 x9948)
+:assumption (or x29442 (not x22152) (not x5028) x27120)
+:assumption (or x8332 (not x12208))
+:assumption (or x7527 (not x18573) x639 x9530 (not x21237))
+:assumption (or (not x26435) x6988)
+:assumption (or (not x3100) x7559)
+:assumption (or x8249 (not x30285))
+:assumption (or x22077 x16802)
+:assumption (or x16025 x17807)
+:assumption (or x12677 (not x17769))
+:assumption (or x31235 (not x18713))
+:assumption (or (not x30903) x30558)
+:assumption (or (not x8382) (not x21175) x4255)
+:assumption (or x15378 x22263)
+:assumption (or (not x29830) (not x24756))
+:assumption (or x12876 (not x2865))
+:assumption (or x17375 (not x9761))
+:assumption (or x26906 (not x19617))
+:assumption (or (not x10371) x8952)
+:assumption (or x8382 x9104 (not x14286) x22023)
+:assumption (or (not x21815) x17955)
+:assumption (or (not x25851) (not x19948))
+:assumption (or (not x17976) x14255)
+:assumption (or (not x2327) (not x6635))
+:assumption (or (not x5981) (not x22150) (not x7250))
+:assumption (or (not x22740) x28731)
+:assumption (or x13176 x6035)
+:assumption (or (not x10302) x17577)
+:assumption (or (not x16153) (not x31713))
+:assumption (or x29836 (not x17634))
+:assumption (or (not x2948) (not x20060))
+:assumption (or (not x1699) x13018)
+:assumption (or (not x8568) x30899)
+:assumption (or x827 (not x14729) (not x12021))
+:assumption (or (not x11617) (not x13485))
+:assumption (or (not x8480) x16789)
+:assumption (or (not x4695) (not x28432))
+:assumption (or (not x20557) (not x14436))
+:assumption (or x24257 (not x14572))
+:assumption (or (not x26172) (not x6267))
+:assumption (or (not x18379) x17855)
+:assumption (or (not x10377) (not x7634))
+:assumption (or (not x8002) (not x6463))
+:assumption (or (not x485) (not x15500) (not x13440))
+:assumption (or x13926 (not x19487))
+:assumption (or (not x23773) (not x10909) (not x2837) x18957)
+:assumption (or x9473 (not x13535))
+:assumption (or x12321 x16802)
+:assumption (or x31458 x23907)
+:assumption (or x10468 (not x3646))
+:assumption (or x9180 x30762)
+:assumption (or (not x24632) x21361)
+:assumption (or (not x10996) x28522)
+:assumption (or x3439 x3228)
+:assumption (or x8625 (not x138))
+:assumption (or (not x11436) (not x27459) x6969)
+:assumption (or (not x19651) x27411)
+:assumption (or x24753 (not x8415))
+:assumption (or x14150 (not x12141))
+:assumption (or (not x19002) (not x18450))
+:assumption (or (not x9198) (not x28309))
+:assumption (or (not x23069) x9426)
+:assumption (or (not x23463) x16510)
+:assumption (or x20576 x18895)
+:assumption (or x15557 (not x19059))
+:assumption (or (not x20072) x21815)
+:assumption (or (not x12836) x4170)
+:assumption (or x9258 x20755)
+:assumption (or x5592 (not x21490) (not x9647) x18042)
+:assumption (or x23554 (not x17347))
+:assumption (or (not x8602) (not x25058) (not x20726))
+:assumption (or x17359 x23948)
+:assumption (or x15204 x6594)
+:assumption (or (not x8002) x9220 x12886)
+:assumption (or (not x2954) (not x8731))
+:assumption (or (not x6728) (not x4114))
+:assumption (or x4681 x31628)
+:assumption (or x19616 (not x26280) x12751 (not x24023) x16877 (not x22987) x22160 x27081 x10138)
+:assumption (or x11653 x429)
+:assumption (or (not x5791) x28746)
+:assumption (or x6388 x13056)
+:assumption (or x22281 (not x16232))
+:assumption (or x14435 (not x8451) (not x10571) (not x28581) (not x17944) (not x18718) (not x7048) (not x2473) (not x15737))
+:assumption (or x18211 (not x20971))
+:assumption (or x31459 (not x13428))
+:assumption (or x1393 x2644 (not x15909))
+:assumption (or x28472 (not x27884) x28145 x3882 (not x12494) x15869 (not x12057) (not x5636))
+:assumption (or x16144 (not x25458))
+:assumption (or (not x14216) (not x9447))
+:assumption (or x14002 x14455 x2271)
+:assumption (or (not x21815) x11754 (not x16510) x8961 (not x25751))
+:assumption (or (not x12713) (not x15880))
+:assumption (or (not x25752) (not x31467))
+:assumption (or (not x17290) x31351)
+:assumption (or (not x28328) (not x30694))
+:assumption (or (not x28314) (not x31464) x25752 (not x21145))
+:assumption (or x1661 x19298 x13956)
+:assumption (or (not x10896) x8526 x28639 (not x2156) (not x15787) x14012)
+:assumption (or (not x15260) (not x27545))
+:assumption (or (not x23132) x21815 (not x19567) (not x18244) x1518 x28686)
+:assumption (or x21211 (not x5974))
+:assumption (or x1502 x11760)
+:assumption (or (not x9008) (not x8720))
+:assumption (or (not x14068) x6149 (not x11792) x29187)
+:assumption (or x29102 (not x6914))
+:assumption (or x23242 (not x28142) (not x22984) x13328 (not x8387))
+:assumption (or (not x13238) (not x2645))
+:assumption (or x19953 (not x2383))
+:assumption (or x964 (not x12724))
+:assumption (or x19962 (not x24423))
+:assumption (or x15118 (not x18765))
+:assumption (or x23897 x20111)
+:assumption (or (not x2221) (not x24073) (not x30509) (not x29791) x28257 x20585)
+:assumption (or x12053 (not x13956))
+:assumption (or x21787 (not x21785))
+:assumption (or x28499 x9008 (not x172) (not x2116) (not x21505) (not x4599))
+:assumption (or x4030 (not x17525))
+:assumption (or x818 (not x11660))
+:assumption (or (not x25177) (not x19652))
+:assumption (or (not x10927) (not x23439) (not x7968) (not x12922))
+:assumption (or (not x3937) x24966)
+:assumption (or x10476 x13651)
+:assumption (or (not x3086) (not x23244))
+:assumption (or (not x30170) (not x30769))
+:assumption (or (not x11651) x4667)
+:assumption (or x2467 (not x27268))
+:assumption (or (not x19447) (not x31608))
+:assumption (or x5241 x7282)
+:assumption (or x15845 (not x9237))
+:assumption (or (not x9064) (not x3005))
+:assumption (or x14128 (not x22475))
+:assumption (or (not x18277) (not x1192) (not x2133))
+:assumption (or (not x10811) (not x11160))
+:assumption (or (not x7189) x25376)
+:assumption (or (not x28451) x13071)
+:assumption (or x6581 x26572)
+:assumption (or (not x26682) x26788)
+:assumption (or (not x540) x27537 x5722 x26432)
+:assumption (or x2887 (not x9008))
+:assumption (or (not x1940) (not x31916))
+:assumption (or x8396 x24790)
+:assumption (or (not x28280) (not x23244) (not x5265) (not x1414) (not x4557) x5618)
+:assumption (or x4386 x2324 (not x31114))
+:assumption (or (not x24762) x6972)
+:assumption (or (not x13567) (not x4510))
+:assumption (or x7736 (not x21298))
+:assumption (or (not x25820) x18679)
+:assumption (or x24606 (not x20322))
+:assumption (or x17298 (not x25634))
+:assumption (or x24869 x12604)
+:assumption (or (not x184) x29459)
+:assumption (or (not x17626) (not x1564))
+:assumption (or (not x27057) (not x22445))
+:assumption (or x31580 x3949)
+:assumption (or x10324 (not x27233))
+:assumption (or (not x29453) x28042)
+:assumption (or x30972 (not x26887))
+:assumption (or x3712 (not x20095))
+:assumption (or (not x15002) (not x596))
+:assumption (or x22988 x8861)
+:assumption (or x1143 (not x19566))
+:assumption (or x6416 (not x28313))
+:assumption (or x8284 (not x29949))
+:assumption (or x4809 (not x3044) (not x19813) (not x1920))
+:assumption (or (not x3782) x9584 (not x31081))
+:assumption (or (not x14340) (not x6140) (not x10254) (not x14407) (not x4887) (not x154))
+:assumption (or (not x14384) x19667)
+:assumption (or (not x18388) x3130)
+:assumption (or (not x16727) x22955)
+:assumption (or x20199 x12920)
+:assumption (or (not x8544) (not x11914))
+:assumption (or (not x21298) (not x25109))
+:assumption (or x2762 (not x25262))
+:assumption (or x13908 x15320)
+:assumption (or (not x3238) (not x19453) (not x2678) (not x17360) (not x28508) x26629 x4978 (not x31807))
+:assumption (or (not x1571) (not x11299))
+:assumption (or x24233 x17566)
+:assumption (or x31270 x12957)
+:assumption (or (not x7373) x2882)
+:assumption (or x7323 (not x18386))
+:assumption (or x29300 x15784)
+:assumption (or (not x16362) (not x14695) (not x13956) x18217)
+:assumption (or (not x21674) (not x22526))
+:assumption (or x28082 (not x10983))
+:assumption (or (not x3137) (not x13878) x558)
+:assumption (or x4851 x13422)
+:assumption (or (not x22073) x20217)
+:assumption (or x7787 x18623)
+:assumption (or (not x16947) (not x1783))
+:assumption (or (not x25315) (not x29413))
+:assumption (or x21298 x25235)
+:assumption (or (not x6589) (not x16870))
+:assumption (or (not x31778) x16549)
+:assumption (or x14165 x25616 (not x29990))
+:assumption (or x6560 x4131)
+:assumption (or (not x11102) x13120)
+:assumption (or x17631 (not x23165))
+:assumption (or x26843 (not x29562))
+:assumption (or (not x12315) x28926 x13593 (not x12523) x4844 x6330)
+:assumption (or (not x12578) x19482)
+:assumption (or x10318 (not x22307))
+:assumption (or x31183 (not x13751))
+:assumption (or x4941 (not x9093))
+:assumption (or (not x8819) x14657)
+:assumption (or (not x26561) x6838)
+:assumption (or (not x17659) (not x31829))
+:assumption (or x13863 (not x12842))
+:assumption (or (not x15028) (not x18275))
+:assumption (or x19530 (not x8002))
+:assumption (or x18349 (not x29511) x13113 (not x29720))
+:assumption (or (not x17407) (not x19199))
+:assumption (or (not x1081) (not x17079))
+:assumption (or (not x5456) x12397)
+:assumption (or (not x4890) x507)
+:assumption (or (not x5101) x20546)
+:assumption (or (not x19992) (not x15488))
+:assumption (or (not x21325) x25255)
+:assumption (or (not x4184) (not x24489))
+:assumption (or (not x964) (not x10772))
+:assumption (or (not x16488) (not x193))
+:assumption (or (not x24669) (not x29312))
+:assumption (or (not x9883) (not x3934))
+:assumption (or x17869 (not x14835))
+:assumption (or (not x29481) (not x21948))
+:assumption (or x18205 x10795)
+:assumption (or x23416 x27819 (not x23611))
+:assumption (or (not x7497) x18513)
+:assumption (or (not x24722) x30997)
+:assumption (or x9008 x12735)
+:assumption (or x5509 (not x9889) (not x13059) (not x15669) x17078)
+:assumption (or x25299 (not x6239))
+:assumption (or (not x23049) x6274)
+:assumption (or (not x23298) (not x13484) x15384 x16119)
+:assumption (or (not x16022) (not x2177) x29014 x26329)
+:assumption (or x28866 x30166)
+:assumption (or x25659 (not x18966))
+:assumption (or (not x18745) (not x8120))
+:assumption (or x15622 (not x25366))
+:assumption (or x11506 x28812)
+:assumption (or x23371 (not x25014))
+:assumption (or x14228 x29635)
+:assumption (or x22321 (not x28678))
+:assumption (or x2488 (not x26483))
+:assumption (or x4803 x31899)
+:assumption (or (not x3375) x14629)
+:assumption (or (not x7699) (not x29538))
+:assumption (or (not x2302) x29443)
+:assumption (or x27301 (not x7824))
+:assumption (or x25864 (not x8230))
+:assumption (or (not x11213) (not x18333))
+:assumption (or x11534 (not x16408))
+:assumption (or x24599 (not x23706) (not x14839))
+:assumption (or x2414 x11113 (not x25103) x29307 x28468 (not x12223) x29257 (not x14841))
+:assumption (or (not x28878) (not x5742))
+:assumption (or (not x15146) (not x3709))
+:assumption (or x9970 x2503 x31455 (not x31470) (not x16528) (not x30482))
+:assumption (or x1640 (not x14455))
+:assumption (or x23764 (not x237))
+:assumption (or x10648 x19864)
+:assumption (or x13407 x4504 (not x28809) (not x25181))
+:assumption (or x25224 x14411 (not x28693))
+:assumption (or x2406 (not x8043))
+:assumption (or (not x25069) x24785)
+:assumption (or (not x21841) (not x1393))
+:assumption (or (not x23361) (not x16025))
+:assumption (or (not x23250) x1582)
+:assumption (or x5440 (not x16356))
+:assumption (or x31037 x26831)
+:assumption (or (not x4693) (not x13456))
+:assumption (or (not x16244) x15751)
+:assumption (or x16510 x26299)
+:assumption (or x18186 (not x20826))
+:assumption (or x26649 x10013)
+:assumption (or x30498 (not x3591))
+:assumption (or x26937 (not x13612) x20929 (not x31430))
+:assumption (or (not x6215) x1831)
+:assumption (or (not x8123) x24736)
+:assumption (or x25659 (not x27305) (not x13055))
+:assumption (or (not x421) x1567)
+:assumption (or (not x5528) x15989 (not x5026) x8116 x22494 x29068)
+:assumption (or (not x6665) (not x30891))
+:assumption (or x14359 x10890)
+:assumption (or (not x6196) (not x23687) (not x25813) (not x28804) x6961 x27235 (not x3261) (not x10704))
+:assumption (or (not x8809) x25315 (not x2701))
+:assumption (or (not x1393) x14907)
+:assumption (or x16510 x7193)
+:assumption (or (not x2217) x2001 x3496 x24782 (not x14625))
+:assumption (or x16024 (not x18224))
+:assumption (or (not x268) (not x26577) x4447 x17107)
+:assumption (or (not x22251) x10520)
+:assumption (or (not x26453) (not x11476))
+:assumption (or (not x22993) x12091)
+:assumption (or (not x2943) (not x16462))
+:assumption (or (not x25890) x30278)
+:assumption (or x1474 (not x10363) (not x3733) (not x6951) (not x29761) (not x31910) x13576)
+:assumption (or (not x27709) (not x25475))
+:assumption (or (not x19142) x5814)
+:assumption (or (not x8586) (not x21402) (not x24841))
+:assumption (or x30863 (not x10246))
+:assumption (or (not x2004) (not x4947))
+:assumption (or (not x26579) (not x10245))
+:assumption (or (not x19261) (not x18797) (not x8144) x25266)
+:assumption (or x10185 (not x29893))
+:assumption (or x25016 x4558)
+:assumption (or x23244 x24128)
+:assumption (or x20325 x2889)
+:assumption (or (not x3734) (not x11413) x23741 (not x15044) (not x11729))
+:assumption (or x29301 x8923)
+:assumption (or (not x15453) x23401)
+:assumption (or x17992 (not x24108))
+:assumption (or x30208 (not x20619))
+:assumption (or (not x29941) (not x13927))
+:assumption (or (not x14588) (not x11700))
+:assumption (or (not x22535) x21298)
+:assumption (or (not x21298) x6660)
+:assumption (or (not x22779) (not x31890))
+:assumption (or x1935 (not x7995))
+:assumption (or (not x26908) (not x3377))
+:assumption (or (not x8550) (not x14502))
+:assumption (or (not x25283) x14634)
+:assumption (or (not x20512) (not x14971))
+:assumption (or (not x4529) x5237 x22242 (not x219) x10612 x120 (not x828))
+:assumption (or x11205 x4963)
+:assumption (or x8962 (not x22921))
+:assumption (or (not x22099) (not x26999))
+:assumption (or x15656 (not x22873))
+:assumption (or x11238 x6294)
+:assumption (or (not x6375) x12404)
+:assumption (or x31689 (not x30408))
+:assumption (or (not x8680) (not x6485))
+:assumption (or x22776 x22534 x16025)
+:assumption (or x21883 x10415)
+:assumption (or (not x25142) x6771)
+:assumption (or x21677 (not x28935))
+:assumption (or (not x11466) (not x27363) x23244)
+:assumption (or x9008 (not x5988) (not x14291))
+:assumption (or (not x8211) (not x8090))
+:assumption (or (not x259) x12045)
+:assumption (or x19956 (not x18166))
+:assumption (or x26549 x10761)
+:assumption (or (not x30807) x20580)
+:assumption (or (not x589) (not x14120))
+:assumption (or x4323 (not x19504))
+:assumption (or x7095 (not x3717) (not x28541) (not x15156) x10645 x23500)
+:assumption (or x25755 x9359)
+:assumption (or (not x5394) (not x20185))
+:assumption (or x17377 (not x16466))
+:assumption (or (not x4752) (not x28473))
+:assumption (or x28328 x15045)
+:assumption (or x10853 (not x5384))
+:assumption (or (not x26338) x26125)
+:assumption (or (not x26907) (not x1060) (not x15659))
+:assumption (or (not x8134) (not x4089))
+:assumption (or (not x24087) x6307)
+:assumption (or (not x5422) (not x23889))
+:assumption (or x24584 x21036 x11935 (not x12059) x4187 (not x16295))
+:assumption (or (not x20518) (not x11895))
+:assumption (or (not x15692) (not x3897))
+:assumption (or x7820 x18559)
+:assumption (or (not x16065) x20062)
+:assumption (or x1398 (not x19178))
+:assumption (or x30762 (not x24289))
+:assumption (or x29757 (not x18495))
+:assumption (or (not x6061) x24453)
+:assumption (or x14169 (not x23756) x8207 x12600 (not x31538))
+:assumption (or (not x4780) x26905)
+:assumption (or x28076 x11523)
+:assumption (or (not x27745) (not x29772))
+:assumption (or (not x9702) (not x19007))
+:assumption (or (not x6998) (not x9478))
+:assumption (or x14748 x1103)
+:assumption (or x574 x10258)
+:assumption (or (not x26162) (not x23244) (not x25486) x7545 x17937 (not x17605))
+:assumption (or (not x20725) (not x15824))
+:assumption (or x12009 x22802 x12923 x17976)
+:assumption (or x28278 (not x21693))
+:assumption (or x3633 (not x14771))
+:assumption (or (not x12368) (not x26670) x7990)
+:assumption (or (not x7314) x25787)
+:assumption (or x20835 x11693)
+:assumption (or x8887 x7509)
+:assumption (or x27233 x15279)
+:assumption (or (not x22660) x19379)
+:assumption (or (not x20358) x6462)
+:assumption (or (not x17833) (not x23386) x11053 (not x6032) (not x19148) (not x29233))
+:assumption (or (not x15799) (not x2440))
+:assumption (or (not x2226) x6594)
+:assumption (or x19527 x9821)
+:assumption (or (not x31244) x31400)
+:assumption (or (not x25559) x28170)
+:assumption (or (not x6149) x10085)
+:assumption (or (not x14728) (not x6052) x4052 x19711 (not x11622) x3281)
+:assumption (or x19043 x16934)
+:assumption (or (not x21551) x15216)
+:assumption (or x1393 (not x11640))
+:assumption (or x26427 x17075 (not x31218) (not x218))
+:assumption (or (not x30632) (not x2755))
+:assumption (or x29175 (not x27836))
+:assumption (or x9546 (not x17889))
+:assumption (or (not x7231) (not x25860))
+:assumption (or (not x5228) (not x6084))
+:assumption (or (not x10868) (not x31696))
+:assumption (or x31662 (not x995))
+:assumption (or x19965 x21153)
+:assumption (or (not x7744) (not x20706) (not x26432))
+:assumption (or (not x20454) x16829 x20228 (not x4864) x3364)
+:assumption (or x2806 (not x13576))
+:assumption (or x1147 x13162)
+:assumption (or (not x23334) x21798)
+:assumption (or (not x17786) x28181)
+:assumption (or x19159 x25727)
+:assumption (or x5528 (not x27553))
+:assumption (or (not x1888) (not x13434))
+:assumption (or x21625 x15693)
+:assumption (or (not x5097) x2217)
+:assumption (or (not x762) (not x28447) (not x3987))
+:assumption (or (not x1645) x12119 (not x5149))
+:assumption (or (not x27777) (not x11792))
+:assumption (or (not x14669) x24443)
+:assumption (or x13253 x18160)
+:assumption (or (not x30282) x15848)
+:assumption (or (not x28261) (not x23849))
+:assumption (or (not x28055) (not x14961))
+:assumption (or (not x14053) x30566)
+:assumption (or (not x30260) (not x21764))
+:assumption (or (not x22729) (not x5063) x20767 x22445 (not x17625))
+:assumption (or x29762 (not x29649))
+:assumption (or (not x26214) x18160)
+:assumption (or x17944 (not x19038))
+:assumption (or (not x7833) x2810)
+:assumption (or (not x23106) (not x24700))
+:assumption (or x5086 (not x10209))
+:assumption (or (not x2074) x5545)
+:assumption (or x13576 (not x5983))
+:assumption (or (not x23585) (not x1264))
+:assumption (or x18294 x6268)
+:assumption (or x24369 x13956)
+:assumption (or (not x18567) (not x20018))
+:assumption (or (not x13022) x7176)
+:assumption (or (not x25151) x3203)
+:assumption (or (not x1379) (not x21824))
+:assumption (or x25260 x8542)
+:assumption (or (not x17908) x22793)
+:assumption (or (not x17614) (not x19553))
+:assumption (or x6288 (not x21653))
+:assumption (or (not x10064) x13343 x20832 (not x15917))
+:assumption (or x19973 x2290)
+:assumption (or (not x25749) x31086)
+:assumption (or x14019 x28490)
+:assumption (or (not x23025) (not x22313))
+:assumption (or (not x13260) (not x19668))
+:assumption (or x13994 (not x31762))
+:assumption (or x8002 (not x1885) (not x4835) x19501 x23244)
+:assumption (or (not x5537) x1041)
+:assumption (or (not x6168) x7583)
+:assumption (or (not x30308) (not x18954))
+:assumption (or x6580 x22613)
+:assumption (or (not x31448) (not x2289) (not x7757) x13249 x9826 x5803)
+:assumption (or x1393 (not x3529) x20158)
+:assumption (or x12065 x20630)
+:assumption (or x10961 x16510)
+:assumption (or x13523 (not x10081))
+:assumption (or x16653 (not x1081))
+:assumption (or (not x24544) (not x11796))
+:assumption (or (not x15197) (not x30655))
+:assumption (or (not x25748) (not x7858))
+:assumption (or (not x29959) (not x1197) (not x16994))
+:assumption (or (not x20481) x23714)
+:assumption (or (not x14362) x2595)
+:assumption (or (not x28324) x20438)
+:assumption (or (not x16304) x24431)
+:assumption (or x5528 x25056)
+:assumption (or (not x15288) (not x827))
+:assumption (or x27879 x31114)
+:assumption (or x29539 (not x24838))
+:assumption (or x1467 (not x26991))
+:assumption (or x30799 (not x24334))
+:assumption (or (not x4318) (not x20608))
+:assumption (or x15497 (not x19464))
+:assumption (or (not x8229) (not x2739) (not x15304) x13486)
+:assumption (or x1425 x28950)
+:assumption (or x2646 x24631)
+:assumption (or (not x3584) (not x25937))
+:assumption (or (not x1706) x5597 x15985 x14435)
+:assumption (or x9971 x11921)
+:assumption (or (not x30103) x13897)
+:assumption (or x5168 x28544)
+:assumption (or x2994 (not x12106) (not x11371))
+:assumption (or x5049 (not x1868))
+:assumption (or (not x4767) (not x30373))
+:assumption (or x28394 x29236)
+:assumption (or (not x6540) x8939)
+:assumption (or (not x20792) (not x15101))
+:assumption (or (not x10413) x2276 x21714 (not x26505) (not x19104))
+:assumption (or x2468 x19006)
+:assumption (or x4560 (not x30093) x6000)
+:assumption (or x18401 x23715 (not x19402) (not x18042))
+:assumption (or (not x14730) x6669)
+:assumption (or x1662 x29377)
+:assumption (or x23117 (not x3911))
+:assumption (or x9693 (not x24767))
+:assumption (or (not x24693) (not x22389))
+:assumption (or (not x30868) (not x4556))
+:assumption (or x23545 (not x2361))
+:assumption (or x3494 x17741)
+:assumption (or x31345 (not x2828))
+:assumption (or x26508 (not x27228))
+:assumption (or x9165 x4532)
+:assumption (or x5663 x26284 x23244 x13956 x8002 (not x3516))
+:assumption (or x7578 x20119)
+:assumption (or (not x15294) x9008)
+:assumption (or x9481 x12870 (not x29429) x26742 (not x16977) (not x6127))
+:assumption (or x435 (not x2499))
+:assumption (or x21590 (not x5528))
+:assumption (or (not x8257) x4553)
+:assumption (or (not x30828) (not x2001))
+:assumption (or (not x15068) (not x22458) x1393)
+:assumption (or (not x28257) x25011)
+:assumption (or x28708 x26534)
+:assumption (or (not x3450) x29735)
+:assumption (or (not x24543) (not x25659) (not x19778))
+:assumption (or (not x23425) (not x22001))
+:assumption (or x2774 x8414)
+:assumption (or (not x8343) (not x1965) (not x886) (not x22092) x8002 (not x16892))
+:assumption (or (not x29123) x29827 x4559)
+:assumption (or (not x26336) (not x13531) x11194 (not x332) x9772 (not x27920) x24767 (not x24447))
+:assumption (or x4836 (not x8464))
+:assumption (or x19727 x10018)
+:assumption (or (not x13258) x29259 (not x3327))
+:assumption (or x28532 (not x12584))
+:assumption (or x28526 (not x16025))
+:assumption (or (not x17468) (not x11721))
+:assumption (or x6351 (not x17957))
+:assumption (or (not x12688) (not x1541))
+:assumption (or (not x20333) (not x18676))
+:assumption (or x21303 (not x15861))
+:assumption (or (not x31441) (not x10060) x21298 (not x12064))
+:assumption (or x30396 x16025)
+:assumption (or (not x5394) x23761)
+:assumption (or (not x30979) (not x8961))
+:assumption (or x26273 x19577)
+:assumption (or x3700 (not x28122))
+:assumption (or x8602 (not x16327))
+:assumption (or (not x14737) (not x26267))
+:assumption (or x26361 (not x14040) x10170 x30489 (not x26977))
+:assumption (or (not x523) x11938)
+:assumption (or x4063 x20392 x10438 x3613 x4336)
+:assumption (or (not x20032) (not x25251) x25444 (not x7107))
+:assumption (or x31283 x22564)
+:assumption (or x15915 (not x3294))
+:assumption (or x19139 (not x20577))
+:assumption (or x1742 (not x16463))
+:assumption (or (not x15102) x28961)
+:assumption (or (not x3450) x13521)
+:assumption (or x11377 (not x1185))
+:assumption (or (not x5592) x18848)
+:assumption (or x16183 x22452)
+:assumption (or (not x23114) x25896)
+:assumption (or (not x8916) x6594)
+:assumption (or x28426 (not x12799))
+:assumption (or x8851 (not x4217))
+:assumption (or x11180 x22995)
+:assumption (or (not x27106) (not x25247))
+:assumption (or x47 (not x22795))
+:assumption (or (not x22415) x554)
+:assumption (or (not x24994) x29593)
+:assumption (or x30125 (not x30284) x875 x14594 x19877)
+:assumption (or (not x11939) x17076)
+:assumption (or (not x21611) (not x26036) x30001 x14201 (not x17948))
+:assumption (or (not x1963) (not x21636))
+:assumption (or x22751 (not x620))
+:assumption (or x22430 x27088)
+:assumption (or (not x15328) (not x13901))
+:assumption (or (not x18432) (not x2890))
+:assumption (or x25659 (not x20711))
+:assumption (or (not x3347) (not x31538))
+:assumption (or (not x19168) (not x31691))
+:assumption (or (not x7746) (not x3224))
+:assumption (or x9133 (not x20905))
+:assumption (or x4431 (not x8127))
+:assumption (or x410 (not x29223) x25747)
+:assumption (or (not x16893) x4308 x3308 x16049 (not x4874) x10782 (not x28749) (not x15459) (not x13577))
+:assumption (or x31156 x13964)
+:assumption (or x29799 x7869)
+:assumption (or (not x3819) x24456)
+:assumption (or x4078 (not x18864) (not x21298) x3049)
+:assumption (or x12171 (not x1996))
+:assumption (or (not x20903) (not x2302))
+:assumption (or x21298 (not x24660))
+:assumption (or x13410 x10779)
+:assumption (or x22548 x2989 x23576)
+:assumption (or (not x1874) (not x2447))
+:assumption (or x918 x27843)
+:assumption (or x28329 x28999)
+:assumption (or x9008 x1274)
+:assumption (or (not x29414) x5496 x13858)
+:assumption (or (not x23370) (not x19120) x20523 (not x18068))
+:assumption (or x24952 x24568 (not x10683))
+:assumption (or (not x2735) (not x15795) (not x16304) (not x13417))
+:assumption (or x13665 (not x30208))
+:assumption (or x22161 x15458)
+:assumption (or (not x7537) x4159 x16025)
+:assumption (or (not x2288) x11138)
+:assumption (or x6402 (not x7060))
+:assumption (or x5217 x12763)
+:assumption (or x7207 (not x4090))
+:assumption (or x2054 x13403)
+:assumption (or (not x28810) (not x25568) (not x25099) (not x10967))
+:assumption (or x5973 (not x481) (not x14603) (not x26282) (not x13074) x3801 (not x17742) x22026 (not x25156) x12447 (not x29502) (not x28365))
+:assumption (or (not x28641) (not x22571))
+:assumption (or x5528 (not x12423))
+:assumption (or x10842 (not x16185) x28973)
+:assumption (or x14577 x29272)
+:assumption (or (not x28531) (not x28235))
+:assumption (or (not x12121) x23428)
+:assumption (or (not x9008) x8560)
+:assumption (or (not x18386) x4473)
+:assumption (or (not x1832) x7569)
+:assumption (or x6734 x29959)
+:assumption (or (not x16902) (not x30201))
+:assumption (or (not x11184) (not x27956))
+:assumption (or x25758 (not x14931) x22788 x20060)
+:assumption (or x20256 (not x12328))
+:assumption (or x22253 x12126)
+:assumption (or (not x15960) x28596)
+:assumption (or x4579 (not x2262))
+:assumption (or (not x26279) x27866)
+:assumption (or x3322 x29907)
+:assumption (or x9008 x6703)
+:assumption (or (not x10620) x4389)
+:assumption (or (not x22501) x21411)
+:assumption (or x10157 x28337)
+:assumption (or (not x1843) x20743)
+:assumption (or x23479 (not x3140))
+:assumption (or (not x26563) x23311)
+:assumption (or x13904 (not x28985))
+:assumption (or x18171 x28118)
+:assumption (or x2383 (not x29278))
+:assumption (or (not x10860) x19920 (not x2119))
+:assumption (or x20059 (not x26870))
+:assumption (or x20338 (not x20937) (not x686) x17075)
+:assumption (or (not x8826) (not x14531))
+:assumption (or x2500 (not x4066))
+:assumption (or (not x6351) (not x371))
+:assumption (or (not x21298) x29551)
+:assumption (or (not x19794) x7346)
+:assumption (or x5233 (not x14443))
+:assumption (or x10415 x26432)
+:assumption (or (not x18100) (not x11928))
+:assumption (or (not x6342) (not x29305) (not x106) x8409)
+:assumption (or (not x11151) x15462)
+:assumption (or x27875 (not x15887))
+:assumption (or x13699 (not x5267))
+:assumption (or (not x19839) x20369 x12221)
+:assumption (or (not x16563) x8002)
+:assumption (or (not x16510) (not x21815) (not x29312) (not x29666) x11281)
+:assumption (or (not x4262) (not x13767))
+:assumption (or (not x27443) (not x8229))
+:assumption (or (not x18519) x25951)
+:assumption (or x24834 x14591 x15839)
+:assumption (or (not x10134) x19820)
+:assumption (or (not x1444) (not x31760))
+:assumption (or x11750 (not x1186))
+:assumption (or x3825 (not x2142))
+:assumption (or (not x21928) (not x31712))
+:assumption (or (not x14062) x28286)
+:assumption (or (not x14672) x16542)
+:assumption (or x14777 x24881)
+:assumption (or (not x1701) (not x18756))
+:assumption (or x4437 x827)
+:assumption (or x1339 (not x21930))
+:assumption (or (not x30865) x8192)
+:assumption (or (not x12474) (not x10150))
+:assumption (or x20029 (not x30068) (not x18645) x3079 x27437 x20949 x28971)
+:assumption (or (not x24669) (not x30007))
+:assumption (or x4031 x21582)
+:assumption (or x26032 x5028)
+:assumption (or x20334 (not x25253))
+:assumption (or (not x21473) (not x17862))
+:assumption (or (not x4442) x2187 (not x2220) (not x18637) (not x8364) x16230)
+:assumption (or x5206 (not x11457))
+:assumption (or (not x25923) x23207)
+:assumption (or (not x20609) (not x12930) x28944 (not x14133) x8865)
+:assumption (or x505 x18012 x5398 x27680 x25471 (not x4715) x29896 (not x3673))
+:assumption (or (not x7730) x12348)
+:assumption (or (not x20349) (not x30029))
+:assumption (or (not x3032) x24916)
+:assumption (or x20997 (not x14538))
+:assumption (or (not x28885) (not x20288) x23558)
+:assumption (or x20625 x25447)
+:assumption (or x9008 (not x3849))
+:assumption (or x17908 x19300)
+:assumption (or x25659 x5732)
+:assumption (or x17359 (not x31198))
+:assumption (or (not x22690) (not x10191))
+:assumption (or (not x22082) (not x19626) x18441 x3875)
+:assumption (or (not x21432) x25943)
+:assumption (or (not x31883) x7657)
+:assumption (or (not x30638) (not x1827))
+:assumption (or (not x28203) (not x21130) (not x14175) x21306 (not x9218) (not x25863) x31209)
+:assumption (or x18035 (not x23010))
+:assumption (or (not x22524) (not x9331))
+:assumption (or (not x8792) (not x1698))
+:assumption (or x10877 x29949 (not x2043) (not x10950) x23475 x13224)
+:assumption (or x3412 x6848)
+:assumption (or x24005 (not x2171) (not x2594))
+:assumption (or (not x9673) (not x5858) (not x7530) (not x16351) x15268 (not x1653))
+:assumption (or x10174 (not x26604))
+:assumption (or x1340 x3360)
+:assumption (or (not x14908) (not x8379))
+:assumption (or (not x18468) (not x14839))
+:assumption (or (not x19072) x23002)
+:assumption (or x6730 x10917)
+:assumption (or (not x1422) x23816)
+:assumption (or x11496 (not x27696))
+:assumption (or (not x29041) (not x377))
+:assumption (or x12912 (not x10545))
+:assumption (or (not x1411) (not x22296))
+:assumption (or (not x9929) (not x14673))
+:assumption (or (not x8951) x24933)
+:assumption (or (not x18632) (not x1581))
+:assumption (or (not x28391) (not x6056))
+:assumption (or (not x3136) x31498)
+:assumption (or x31445 (not x18887))
+:assumption (or x8102 x8002 (not x27896))
+:assumption (or x5028 x29442 x26139)
+:assumption (or (not x12084) (not x27882))
+:assumption (or (not x29132) (not x14067))
+:assumption (or x12308 x18816)
+:assumption (or x26023 (not x11968))
+:assumption (or (not x23700) x21772)
+:assumption (or x5528 x15791)
+:assumption (or (not x9905) (not x2627))
+:assumption (or (not x3378) x15104)
+:assumption (or (not x2918) (not x22936))
+:assumption (or (not x27982) x3513)
+:assumption (or (not x6274) x6823)
+:assumption (or (not x12274) (not x10587))
+:assumption (or x8080 (not x25080) x18604 (not x29113) x30718 x24290 (not x4960) (not x2059))
+:assumption (or (not x30788) (not x288))
+:assumption (or (not x16593) (not x20247))
+:assumption (or (not x2832) (not x29589))
+:assumption (or (not x29370) (not x25998))
+:assumption (or x23456 (not x13956))
+:assumption (or (not x14692) (not x3951))
+:assumption (or x21138 x23421)
+:assumption (or x6530 x18245)
+:assumption (or x5477 (not x7785) x14839)
+:assumption (or x23723 x23617 (not x17031) (not x9840) (not x22281))
+:assumption (or x28161 (not x9658) x10487 x4311 x26532 (not x25296))
+:assumption (or (not x17390) (not x14278))
+:assumption (or x8002 x31272 x4456)
+:assumption (or x15398 (not x23469) (not x357) (not x16510) (not x19263) x8900)
+:assumption (or x4264 (not x24381))
+:assumption (or (not x422) x8515 (not x23962) x13272 x10915 (not x7069))
+:assumption (or (not x6707) x8671)
+:assumption (or (not x26407) (not x18500))
+:assumption (or (not x27801) (not x12023))
+:assumption (or (not x10912) x9195)
+:assumption (or (not x27233) (not x3244))
+:assumption (or (not x26912) x19406 x21740 x2132 x26931 x31334)
+:assumption (or (not x27474) (not x18972))
+:assumption (or x7465 x11585 (not x14820) x11558 (not x15697) (not x16833) (not x18293))
+:assumption (or x6791 (not x13576))
+:assumption (or x1911 x24631)
+:assumption (or x13263 x20651)
+:assumption (or (not x14254) (not x30195))
+:assumption (or x8453 x27038)
+:assumption (or (not x3297) x20611)
+:assumption (or (not x6606) (not x27395))
+:assumption (or (not x14817) x23758)
+:assumption (or (not x9398) x24276 x20060)
+:assumption (or x17619 (not x2763))
+:assumption (or (not x6673) x20019)
+:assumption (or (not x9466) (not x18240))
+:assumption (or (not x15746) (not x21437))
+:assumption (or (not x6525) (not x17725))
+:assumption (or x4939 (not x4251) x3949 (not x12766) x7108 (not x20217) x22073 x9352 (not x11181))
+:assumption (or (not x30113) (not x26368))
+:assumption (or (not x13995) x22538)
+:assumption (or (not x8727) x3635)
+:assumption (or x19998 (not x26500))
+:assumption (or (not x252) (not x1484))
+:assumption (or x9314 x27065)
+:assumption (or (not x15121) x20595)
+:assumption (or (not x10718) (not x24045))
+:assumption (or (not x6594) (not x29959) x2281 x29504 (not x4136))
+:assumption (or x6791 (not x30204))
+:assumption (or x25703 (not x30100))
+:assumption (or (not x3456) (not x23332))
+:assumption (or x22990 x13039)
+:assumption (or (not x14648) (not x14649))
+:assumption (or x5095 x27754)
+:assumption (or (not x28541) (not x31829) (not x14360) x11343)
+:assumption (or x12174 x17772)
+:assumption (or (not x22060) x27431)
+:assumption (or (not x26432) x17409)
+:assumption (or (not x27454) (not x19343))
+:assumption (or (not x1090) x26487)
+:assumption (or x21062 x3681)
+:assumption (or x11375 (not x27587) (not x6986))
+:assumption (or x30863 (not x31912))
+:assumption (or x12598 (not x19400))
+:assumption (or (not x6525) (not x22093))
+:assumption (or (not x2067) x14826)
+:assumption (or x9605 (not x8815) x24756)
+:assumption (or (not x4082) x178)
+:assumption (or (not x10612) x219)
+:assumption (or (not x684) (not x29305))
+:assumption (or (not x15448) x27967)
+:assumption (or (not x17359) (not x31386) (not x20169) (not x26432))
+:assumption (or x29177 x23269)
+:assumption (or x20257 (not x18613))
+:assumption (or x28288 x3261)
+:assumption (or x4570 x23577)
+:assumption (or (not x27813) x12928)
+:assumption (or x8310 (not x12061))
+:assumption (or (not x10510) x4160)
+:assumption (or x28807 (not x6381))
+:assumption (or (not x12855) x12783 (not x28215) x21818)
+:assumption (or (not x15433) x2278)
+:assumption (or x11672 (not x15491) (not x18253))
+:assumption (or (not x12239) x14347)
+:assumption (or (not x24772) x21381 x21294 (not x13863) (not x6898))
+:assumption (or (not x6565) x21633)
+:assumption (or x13956 x30210)
+:assumption (or (not x3001) (not x18257))
+:assumption (or (not x8087) x1524 x6394 (not x3402) (not x3172))
+:assumption (or (not x21298) (not x31537) (not x18340) x13077)
+:assumption (or (not x9712) x26356)
+:assumption (or (not x8759) x20628)
+:assumption (or x14103 (not x10527))
+:assumption (or x27699 x26246)
+:assumption (or x21150 (not x25096))
+:assumption (or (not x30373) x10197 (not x24471) x25889 x16276)
+:assumption (or x29577 x24910)
+:assumption (or (not x14755) x13945)
+:assumption (or (not x27355) x9923)
+:assumption (or x18028 x12742)
+:assumption (or (not x7860) (not x17284))
+:assumption (or x20851 x15852)
+:assumption (or (not x21877) x827 x21515)
+:assumption (or x8180 x23711 x11874 (not x7835))
+:assumption (or (not x7719) x10425 x27169)
+:assumption (or (not x24219) x14455)
+:assumption (or x31830 (not x24226))
+:assumption (or (not x13184) x10379)
+:assumption (or (not x27316) (not x23905))
+:assumption (or (not x3421) (not x3417))
+:assumption (or x8790 (not x18347))
+:assumption (or (not x6130) (not x19428))
+:assumption (or x31486 (not x30017))
+:assumption (or x27884 (not x22045))
+:assumption (or x19477 (not x9020) x21131 (not x30921))
+:assumption (or (not x22646) (not x11392))
+:assumption (or (not x887) (not x1021))
+:assumption (or (not x2701) (not x15861) x12912)
+:assumption (or x15125 (not x22374))
+:assumption (or (not x2298) x14531 x22127 x9454 (not x6329) x11808)
+:assumption (or (not x27253) (not x20158))
+:assumption (or (not x28643) x18705)
+:assumption (or (not x20225) (not x31415))
+:assumption (or (not x5160) (not x165))
+:assumption (or (not x10725) x20019)
+:assumption (or x18859 (not x14540))
+:assumption (or (not x13619) (not x2149))
+:assumption (or x27737 x8725)
+:assumption (or x18168 (not x22349))
+:assumption (or x20869 x13094)
+:assumption (or (not x23974) x10459)
+:assumption (or (not x14823) (not x22254))
+:assumption (or (not x27367) (not x9008) (not x16114))
+:assumption (or x103 x28277)
+:assumption (or (not x26411) x18642)
+:assumption (or x9964 x4071)
+:assumption (or x21653 x22380)
+:assumption (or (not x10807) (not x3637))
+:assumption (or x30717 x26083 x8574)
+:assumption (or x19281 (not x29596))
+:assumption (or (not x23244) x13542)
+:assumption (or x9018 (not x16211))
+:assumption (or (not x4626) x10988)
+:assumption (or x16955 x26128)
+:assumption (or (not x14970) (not x26611))
+:assumption (or x16802 x18368)
+:assumption (or x17855 x8786 x24345)
+:assumption (or x30710 x13533)
+:assumption (or (not x25612) (not x11444))
+:assumption (or x24621 x12324)
+:assumption (or x5953 (not x10031))
+:assumption (or (not x20934) (not x26495))
+:assumption (or (not x14038) (not x19244))
+:assumption (or (not x23829) (not x5308))
+:assumption (or x26114 x29699 x13576)
+:assumption (or x8602 x17794)
+:assumption (or (not x6381) (not x8991))
+:assumption (or (not x23617) (not x1813))
+:assumption (or (not x6811) (not x12527))
+:assumption (or (not x805) (not x22382))
+:assumption (or (not x27050) x7308)
+:assumption (or x6037 x24372)
+:assumption (or (not x8808) (not x19826))
+:assumption (or (not x18552) (not x30138) (not x26897) (not x14591) x8623 (not x30219) (not x15795))
+:assumption (or (not x29308) (not x12561) x8229 (not x7158))
+:assumption (or x13979 x7913)
+:assumption (or x26569 x675 x16329 (not x26949))
+:assumption (or (not x31838) (not x22958))
+:assumption (or x15314 x27259)
+:assumption (or x3433 x28614)
+:assumption (or x18837 x7281)
+:assumption (or x8899 x22369 (not x964))
+:assumption (or x29543 x29718)
+:assumption (or (not x6969) x31106)
+:assumption (or (not x8532) x14326)
+:assumption (or x4960 (not x27216))
+:assumption (or x8081 (not x5840) x23244 x8002 (not x17230) x13956)
+:assumption (or x18455 (not x11473))
+:assumption (or (not x21608) (not x7084))
+:assumption (or x20686 (not x14239))
+:assumption (or x30301 (not x26894))
+:assumption (or x27939 x3039)
+:assumption (or (not x20949) (not x12045) x11782)
+:assumption (or x7638 x10178)
+:assumption (or x15638 (not x2402))
+:assumption (or (not x20581) (not x9485))
+:assumption (or x8658 (not x4836))
+:assumption (or x23244 (not x1406))
+:assumption (or x14220 (not x16495))
+:assumption (or (not x21592) x15454)
+:assumption (or x5863 (not x25261) (not x14078) (not x917))
+:assumption (or (not x10361) (not x8515))
+:assumption (or x20817 x5153)
+:assumption (or x28785 (not x24590))
+:assumption (or (not x16393) (not x12923))
+:assumption (or x13036 x29539)
+:assumption (or (not x20736) x15091 (not x9008))
+:assumption (or x2269 (not x29643))
+:assumption (or (not x2285) x16495 (not x20925) (not x14220) (not x13890) x29524 x16375 (not x11966) (not x26443))
+:assumption (or x18519 (not x24960))
+:assumption (or x16510 x23469)
+:assumption (or x16916 x12379)
+:assumption (or (not x30666) x19512)
+:assumption (or x21447 (not x4285))
+:assumption (or x25238 (not x24025))
+:assumption (or (not x24844) x6342)
+:assumption (or (not x17331) (not x1898))
+:assumption (or (not x19552) x11122)
+:assumption (or x675 x1357)
+:assumption (or (not x15803) x10720)
+:assumption (or (not x19302) x8002)
+:assumption (or x29219 x19)
+:assumption (or (not x23618) x27227)
+:assumption (or x9079 (not x20640))
+:assumption (or x27769 x6964)
+:assumption (or x6092 x22870)
+:assumption (or (not x13627) (not x24798))
+:assumption (or x20685 (not x1487))
+:assumption (or x29861 x13626)
+:assumption (or x17666 x29439)
+:assumption (or (not x24722) (not x18054))
+:assumption (or x5173 x5682)
+:assumption (or (not x11889) (not x29729))
+:assumption (or (not x9876) x9564)
+:assumption (or (not x4470) x4620 x20419)
+:assumption (or x31914 x18594)
+:assumption (or (not x20550) (not x28782) x29333)
+:assumption (or (not x4669) x9470 x15686 (not x26367))
+:assumption (or x4382 (not x2827))
+:assumption (or x31873 (not x28767) x5422)
+:assumption (or (not x24336) (not x26897))
+:assumption (or (not x23962) x18996)
+:assumption (or x8885 x25594)
+:assumption (or (not x12064) x8850)
+:assumption (or (not x22219) x20114)
+:assumption (or (not x11534) (not x16693))
+:assumption (or (not x19416) (not x10683))
+:assumption (or x11917 x23010 x17869 (not x5528) x17498 (not x30163))
+:assumption (or x5697 (not x11171))
+:assumption (or (not x31734) x9067)
+:assumption (or (not x18593) (not x22128))
+:assumption (or (not x12744) (not x3435))
+:assumption (or (not x22886) x835)
+:assumption (or (not x18567) x31671)
+:assumption (or x12795 (not x9721))
+:assumption (or (not x30784) x20034)
+:assumption (or x12909 (not x30506))
+:assumption (or x2240 (not x9885))
+:assumption (or (not x13165) (not x12669))
+:assumption (or (not x23678) (not x17324))
+:assumption (or (not x27199) (not x17734))
+:assumption (or (not x22239) (not x26351))
+:assumption (or (not x29959) (not x19780))
+:assumption (or x1675 x2104)
+:assumption (or (not x8748) (not x31455))
+:assumption (or (not x23602) x29280 x480 (not x1970))
+:assumption (or x7320 (not x21653) x10967)
+:assumption (or x7604 x22719)
+:assumption (or (not x17884) x21815)
+:assumption (or (not x23118) (not x9311))
+:assumption (or (not x30935) x19491 (not x12450))
+:assumption (or (not x16304) x3742)
+:assumption (or (not x22965) x12874)
+:assumption (or (not x17358) x7158)
+:assumption (or x23958 x21865)
+:assumption (or x9996 (not x1382))
+:assumption (or x15208 x12494)
+:assumption (or x6729 x3074)
+:assumption (or (not x1690) x21298)
+:assumption (or x9008 (not x5880) x18979)
+:assumption (or (not x27824) (not x10884))
+:assumption (or x15238 x6735)
+:assumption (or (not x10862) (not x13513))
+:assumption (or (not x712) (not x9818))
+:assumption (or (not x24245) x3409)
+:assumption (or x1393 (not x12133))
+:assumption (or x1848 x10435)
+:assumption (or (not x5662) (not x13464))
+:assumption (or (not x16312) (not x8172) (not x12193) x22426 (not x29067))
+:assumption (or x16510 x25579)
+:assumption (or (not x5101) (not x3538) (not x21585) x20134 x13092)
+:assumption (or x23690 x20986)
+:assumption (or (not x25287) x10468)
+:assumption (or (not x22094) x31543)
+:assumption (or x23784 x3442 (not x29959) x18521 x9921)
+:assumption (or x14764 x17668)
+:assumption (or x26107 (not x27443))
+:assumption (or x14839 x20549 (not x11064) (not x19524))
+:assumption (or (not x39) (not x21298))
+:assumption (or x1746 (not x18859))
+:assumption (or (not x8002) x24711)
+:assumption (or (not x17017) x26855 x1993 (not x8538) (not x15391))
+:assumption (or (not x11179) x5528 x9048)
+:assumption (or x28031 x24363)
+:assumption (or x17618 x30358 (not x8532) (not x17877))
+:assumption (or x31289 x23348)
+:assumption (or x18343 x615)
+:assumption (or x20327 (not x650))
+:assumption (or x10343 (not x12392) (not x9008))
+:assumption (or (not x15758) x7521 x1579 (not x28825) x14138 x29669 (not x29266))
+:assumption (or x14471 (not x7817))
+:assumption (or x16852 x10905)
+:assumption (or x19354 x20492)
+:assumption (or (not x28403) x13407)
+:assumption (or x16535 (not x17326))
+:assumption (or (not x26566) x16570)
+:assumption (or x23725 x1552)
+:assumption (or x18642 x15120)
+:assumption (or x22120 x19829)
+:assumption (or (not x8036) (not x9985))
+:assumption (or x17758 x4120)
+:assumption (or x22070 x27580)
+:assumption (or (not x11655) (not x20997))
+:assumption (or (not x30414) x20087 (not x9915))
+:assumption (or (not x19992) x14439)
+:assumption (or (not x17962) (not x630) x14990 (not x3570) (not x9094) (not x31625) x5440 (not x20317) (not x22273))
+:assumption (or x9243 x29746)
+:assumption (or x21815 x25244)
+:assumption (or x16715 x22534)
+:assumption (or x28153 (not x16958))
+:assumption (or x3020 x20267)
+:assumption (or (not x21951) (not x7761) (not x2813) (not x8626) x12371 (not x13561) x9991)
+:assumption (or (not x25659) x6787)
+:assumption (or x10941 (not x18849))
+:assumption (or x20402 (not x17508))
+:assumption (or (not x8002) (not x27716) (not x28532) (not x30432))
+:assumption (or x31631 (not x27771))
+:assumption (or (not x8602) (not x21284) x23228)
+:assumption (or (not x19393) x1327)
+:assumption (or (not x9468) x29816)
+:assumption (or (not x29723) (not x17298) (not x5934) (not x28803) x25355 (not x23668))
+:assumption (or x30825 x8858 x2334)
+:assumption (or x7167 (not x19963))
+:assumption (or x8034 x8963)
+:assumption (or (not x14007) (not x25156))
+:assumption (or (not x24362) x8002)
+:assumption (or (not x9437) x2014)
+:assumption (or (not x20937) x20770)
+:assumption (or (not x24632) (not x19533) (not x30731))
+:assumption (or (not x23244) x21389 (not x9154) (not x7164) x10657 x1137)
+:assumption (or x12628 (not x14408))
+:assumption (or (not x5691) (not x22664))
+:assumption (or (not x20763) x10575)
+:assumption (or (not x13382) x16775)
+:assumption (or x18828 x5218)
+:assumption (or (not x4484) (not x12984))
+:assumption (or x29606 (not x7030))
+:assumption (or (not x13622) (not x23835))
+:assumption (or (not x6843) (not x16292))
+:assumption (or (not x25825) (not x12315))
+:assumption (or (not x25020) x30210)
+:assumption (or x16840 x14379)
+:assumption (or (not x16771) (not x12676))
+:assumption (or x27305 x13055)
+:assumption (or (not x22929) x9331)
+:assumption (or (not x19217) (not x16099))
+:assumption (or x29465 (not x15658))
+:assumption (or (not x4529) (not x5657))
+:assumption (or (not x29332) (not x23871))
+:assumption (or (not x24603) (not x3588))
+:assumption (or (not x24656) x4467)
+:assumption (or x22319 x29200)
+:assumption (or (not x18826) (not x142) (not x15234) x22855)
+:assumption (or x31514 x8005 x31767)
+:assumption (or (not x29957) x19428 (not x29300) (not x15784))
+:assumption (or x30529 (not x23490))
+:assumption (or x31800 (not x5936))
+:assumption (or (not x5896) (not x28178))
+:assumption (or (not x1762) x2578)
+:assumption (or x11611 x21353)
+:assumption (or (not x22377) x17665)
+:assumption (or (not x30605) x15455)
+:assumption (or x21546 x14376)
+:assumption (or x476 (not x18441))
+:assumption (or (not x2196) (not x31398))
+:assumption (or (not x1899) (not x12138) (not x14933) x11638)
+:assumption (or (not x19126) x29414)
+:assumption (or x2517 x23092)
+:assumption (or (not x17510) x3435)
+:assumption (or (not x16220) x6671)
+:assumption (or x11570 (not x11488))
+:assumption (or x22763 x14797)
+:assumption (or x29031 x17488)
+:assumption (or x12194 (not x17075))
+:assumption (or x30402 (not x1368))
+:assumption (or (not x4713) x29590)
+:assumption (or x13773 (not x20438))
+:assumption (or x12422 (not x24109))
+:assumption (or (not x18905) (not x85))
+:assumption (or (not x7031) x27515)
+:assumption (or x9008 (not x28722))
+:assumption (or x30896 x10064)
+:assumption (or x2682 x24181)
+:assumption (or x2636 (not x22506) x25168 x9386)
+:assumption (or (not x16907) x11629)
+:assumption (or x29254 (not x4364))
+:assumption (or (not x14633) x2576)
+:assumption (or x2370 x26432)
+:assumption (or (not x19086) x5898)
+:assumption (or x8960 x5389)
+:assumption (or (not x13537) x30986)
+:assumption (or (not x8208) x885)
+:assumption (or (not x10530) (not x21432) (not x19607) x12638)
+:assumption (or (not x6761) (not x22154) (not x2902) x19791)
+:assumption (or x22178 x30148)
+:assumption (or (not x23928) x15071)
+:assumption (or x24931 x23174)
+:assumption (or x27537 x4239 (not x20590) (not x10632))
+:assumption (or x17350 (not x23514))
+:assumption (or (not x5633) (not x12298) (not x1554) x17607 x26410 x24871 (not x19864) x9494)
+:assumption (or (not x14289) x1527)
+:assumption (or x3307 x22412 x918 (not x7939) x30618 x24629)
+:assumption (or (not x15372) (not x16669))
+:assumption (or x6973 (not x21682))
+:assumption (or (not x10936) (not x4688))
+:assumption (or (not x25595) (not x21258))
+:assumption (or (not x17786) (not x16789))
+:assumption (or (not x10654) (not x1882))
+:assumption (or x10561 (not x6355))
+:assumption (or x9120 (not x1215))
+:assumption (or (not x6385) x13203)
+:assumption (or (not x23958) (not x16221))
+:assumption (or (not x29947) (not x5217))
+:assumption (or (not x29655) (not x31422))
+:assumption (or x14894 x6685)
+:assumption (or (not x12893) x22215)
+:assumption (or (not x31581) x19364)
+:assumption (or (not x23050) x31077)
+:assumption (or (not x12379) x17928 (not x8002))
+:assumption (or (not x30278) x25331 x21678)
+:assumption (or x3950 x6989)
+:assumption (or x27590 x6030)
+:assumption (or (not x5757) (not x22758))
+:assumption (or x26017 (not x2991))
+:assumption (or x25485 (not x179))
+:assumption (or x26836 x28649)
+:assumption (or x18372 (not x12056))
+:assumption (or x16915 x22862)
+:assumption (or x24397 (not x31469))
+:assumption (or (not x17218) (not x18459))
+:assumption (or (not x18289) (not x13975))
+:assumption (or (not x28616) x22429)
+:assumption (or (not x11829) x19429)
+:assumption (or (not x28771) (not x11872))
+:assumption (or x31392 (not x25515))
+:assumption (or (not x13576) (not x6951) x323 (not x3409) (not x22635))
+:assumption (or x27015 x13056)
+:assumption (or x23562 (not x17510))
+:assumption (or (not x31829) x22402 (not x23244))
+:assumption (or (not x24655) (not x4290))
+:assumption (or x16095 x29010 (not x3751) (not x7361) (not x14601) x26275 x4221 (not x7790) x15767)
+:assumption (or x23478 (not x16539))
+:assumption (or (not x28933) x13498)
+:assumption (or x3726 x6543)
+:assumption (or x23244 x5955 x13956 (not x26810) x8002 x31782)
+:assumption (or (not x31852) x31226)
+:assumption (or x18588 (not x13361))
+:assumption (or (not x16916) (not x13956) (not x31829))
+:assumption (or (not x8778) (not x4775))
+:assumption (or (not x4127) x21128)
+:assumption (or x21298 x8907)
+:assumption (or x19556 x10064)
+:assumption (or x31140 x9192 (not x16121) (not x6943) x9008 x18159)
+:assumption (or x1620 (not x14356))
+:assumption (or (not x24203) (not x10714))
+:assumption (or x1591 x9008 x21391)
+:assumption (or (not x15447) (not x14011))
+:assumption (or (not x1524) (not x5083))
+:assumption (or (not x18918) (not x648))
+:assumption (or (not x3001) x20631)
+:assumption (or x13956 x26854 x25484)
+:assumption (or x23810 x25003)
+:assumption (or x26847 x26859 (not x14655) x914)
+:assumption (or x29019 x29186)
+:assumption (or (not x19126) x4237)
+:assumption (or (not x15194) (not x21737))
+:assumption (or x9704 x9781)
+:assumption (or x4811 (not x26161))
+:assumption (or (not x25337) (not x18660))
+:assumption (or x17595 (not x19083))
+:assumption (or x2425 (not x22834))
+:assumption (or (not x6691) x12257)
+:assumption (or x17697 (not x6745))
+:assumption (or (not x17610) (not x1396))
+:assumption (or x17103 x10909)
+:assumption (or x9531 (not x829) x8251 (not x3814) x8198 (not x10528) (not x25463) x13576 (not x3452))
+:assumption (or (not x21612) x24918)
+:assumption (or (not x672) x26615)
+:assumption (or (not x24287) (not x11753))
+:assumption (or (not x13443) x24233)
+:assumption (or x14434 x14148)
+:assumption (or (not x25259) x10874)
+:assumption (or (not x18887) x14401)
+:assumption (or (not x24511) (not x29162))
+:assumption (or x28632 x27724)
+:assumption (or x12242 (not x23076) (not x20370))
+:assumption (or (not x6276) (not x11785))
+:assumption (or x8125 (not x7406))
+:assumption (or (not x31672) x9008)
+:assumption (or x20248 (not x24126) x30624 x13971 x1362 (not x22154))
+:assumption (or x22915 x14571)
+:assumption (or (not x21941) x21750)
+:assumption (or (not x8291) (not x1567))
+:assumption (or (not x2037) (not x29213))
+:assumption (or (not x22313) (not x22733) (not x9243) (not x8229))
+:assumption (or (not x7898) x22912)
+:assumption (or x29186 x6003)
+:assumption (or x26900 (not x4446))
+:assumption (or x6783 (not x8053) x5528)
+:assumption (or x11794 x12471)
+:assumption (or (not x8002) (not x4384))
+:assumption (or x1582 x1399)
+:assumption (or x31398 x2269)
+:assumption (or x3180 (not x2249))
+:assumption (or x22212 x29134)
+:assumption (or (not x18224) x18524)
+:assumption (or (not x2773) x31338)
+:assumption (or x3129 x422)
+:assumption (or (not x8804) x1310)
+:assumption (or x3430 (not x26399))
+:assumption (or (not x27749) (not x17414))
+:assumption (or (not x3324) x7091)
+:assumption (or x20156 (not x29582))
+:assumption (or x15806 x23069 x8134 (not x22504) (not x14259) x27956 (not x30235) (not x8324))
+:assumption (or (not x11191) (not x18901) (not x1011) x18524)
+:assumption (or (not x10125) x24855)
+:assumption (or (not x8513) (not x12448) x14566)
+:assumption (or (not x8897) x28638)
+:assumption (or x6706 x30639)
+:assumption (or (not x10937) x17196 (not x1393))
+:assumption (or x22857 x24311)
+:assumption (or x12249 x15917)
+:assumption (or (not x9008) (not x20445) x1316)
+:assumption (or x18869 (not x25562))
+:assumption (or x23399 x309)
+:assumption (or x9072 (not x13445))
+:assumption (or x28520 (not x7341))
+:assumption (or (not x31540) (not x16289))
+:assumption (or x13956 (not x3075))
+:assumption (or (not x9991) x29703)
+:assumption (or (not x6776) x4706)
+:assumption (or (not x20068) (not x10805))
+:assumption (or (not x16025) (not x21719))
+:assumption (or (not x31456) x30628)
+:assumption (or (not x26139) x28068)
+:assumption (or x18363 (not x15537))
+:assumption (or (not x288) x7088)
+:assumption (or x31829 (not x16323))
+:assumption (or (not x27288) x12781)
+:assumption (or x22690 x10191)
+:assumption (or (not x3748) (not x1085))
+:assumption (or (not x29455) x3392)
+:assumption (or (not x21815) (not x16510) x7835 (not x6307) x21292)
+:assumption (or (not x4386) (not x28161) x30333 (not x25784) x25606)
+:assumption (or (not x30549) x5218)
+:assumption (or (not x22251) x26441)
+:assumption (or x625 x25390)
+:assumption (or (not x13285) x25227)
+:assumption (or x14972 (not x3001))
+:assumption (or (not x15204) x23301)
+:assumption (or (not x28900) (not x10132))
+:assumption (or x22301 (not x20326))
+:assumption (or x24557 (not x16218))
+:assumption (or x1115 x24699)
+:assumption (or (not x26141) x15710)
+:assumption (or (not x30767) (not x9008))
+:assumption (or (not x7540) x28408)
+:assumption (or (not x24387) (not x9561))
+:assumption (or (not x25505) x1643)
+:assumption (or (not x20723) x10931)
+:assumption (or (not x11623) x19849)
+:assumption (or (not x20734) (not x8092))
+:assumption (or (not x13283) (not x5504))
+:assumption (or x26647 (not x15741))
+:assumption (or (not x11693) x10122)
+:assumption (or x14954 (not x25659) x20213)
+:assumption (or (not x18698) (not x25997))
+:assumption (or (not x13025) x30961)
+:assumption (or (not x22287) (not x17571) (not x2288) x22320)
+:assumption (or x12542 x20254)
+:assumption (or (not x3171) (not x8002) (not x28925))
+:assumption (or (not x23076) (not x22145))
+:assumption (or (not x3505) x1827)
+:assumption (or x15260 (not x26362))
+:assumption (or x2799 (not x27386))
+:assumption (or (not x21863) x4768)
+:assumption (or x21617 (not x20576))
+:assumption (or (not x20655) (not x21111))
+:assumption (or (not x1406) (not x8002))
+:assumption (or (not x17398) (not x29095))
+:assumption (or (not x15109) x28201)
+:assumption (or x27919 x14290)
+:assumption (or x6170 x20364 x8002)
+:assumption (or (not x13362) (not x30113))
+:assumption (or (not x4289) x1938)
+:assumption (or x10470 x27911 (not x18730) (not x25400))
+:assumption (or (not x2647) (not x29442))
+:assumption (or (not x29629) x10423)
+:assumption (or x20632 (not x18554) (not x142))
+:assumption (or (not x11943) x5066)
+:assumption (or x24326 (not x6294) (not x16279))
+:assumption (or x10984 (not x24005))
+:assumption (or (not x12555) (not x14422))
+:assumption (or x15216 x20954)
+:assumption (or (not x8373) x21815 x755)
+:assumption (or (not x18890) (not x25038))
+:assumption (or x5785 x3672)
+:assumption (or x15659 x23953)
+:assumption (or x21298 x22650)
+:assumption (or (not x30113) x15402)
+:assumption (or x15795 x19986)
+:assumption (or x3586 (not x22405))
+:assumption (or (not x1621) (not x14675))
+:assumption (or (not x11935) (not x16257))
+:assumption (or (not x7024) x16811)
+:assumption (or (not x4484) x7561)
+:assumption (or (not x22833) x30113)
+:assumption (or (not x27233) (not x24393))
+:assumption (or x12454 x964)
+:assumption (or x23178 (not x25834) x27349)
+:assumption (or x537 (not x7664))
+:assumption (or (not x30893) x25279 (not x17795) (not x9495))
+:assumption (or (not x21208) (not x26016))
+:assumption (or (not x5528) x15927)
+:assumption (or (not x22822) x18612 (not x27217) (not x3257) (not x26758) x5823 (not x3365) (not x16414))
+:assumption (or (not x16741) (not x20115))
+:assumption (or (not x23335) (not x23185))
+:assumption (or x7115 (not x24269))
+:assumption (or x5028 x23050 (not x29442) (not x20156) (not x12524) (not x16212))
+:assumption (or x17650 x21563)
+:assumption (or x24001 x2729)
+:assumption (or x24758 x31671)
+:assumption (or (not x29838) x23244)
+:assumption (or (not x17423) (not x22147))
+:assumption (or (not x11488) (not x25738) (not x11726))
+:assumption (or (not x23375) x5528)
+:assumption (or (not x13927) (not x9949))
+:assumption (or x31339 x16223)
+:assumption (or (not x10984) x24005 x30448 x21277)
+:assumption (or (not x1993) x2988 x6796 (not x15862))
+:assumption (or (not x3022) (not x25659))
+:assumption (or (not x19422) x3539)
+:assumption (or (not x25048) x10196)
+:assumption (or x6097 (not x6268))
+:assumption (or x7640 (not x8337))
+:assumption (or x10100 (not x13006))
+:assumption (or x25824 x31534)
+:assumption (or (not x8002) x19962)
+:assumption (or (not x30706) x11582)
+:assumption (or x20572 (not x4276))
+:assumption (or (not x15595) (not x7018))
+:assumption (or (not x31721) x27695)
+:assumption (or (not x8832) (not x29797) x416 x4136 (not x28668) x19387 (not x10611) x11862)
+:assumption (or (not x19948) x2616)
+:assumption (or (not x24722) x4071)
+:assumption (or (not x30020) (not x17147))
+:assumption (or x30399 (not x11576))
+:assumption (or x27909 (not x15897))
+:assumption (or (not x17916) x9008)
+:assumption (or (not x17386) x19768)
+:assumption (or (not x28276) (not x8377) (not x22533) (not x5579) (not x23244) (not x28543))
+:assumption (or x2969 x12245)
+:assumption (or (not x10395) x19864)
+:assumption (or x929 x18215)
+:assumption (or x25736 (not x21653))
+:assumption (or (not x10476) (not x13651))
+:assumption (or (not x14645) (not x26357))
+:assumption (or x18063 x17633)
+:assumption (or (not x22772) x21762 x24793 x27045 x25656 (not x24705) (not x178))
+:assumption (or x8070 x18644)
+:assumption (or (not x30587) (not x23302))
+:assumption (or x18309 (not x16371))
+:assumption (or x10463 (not x21735))
+:assumption (or x29921 (not x10785))
+:assumption (or x29959 (not x3702))
+:assumption (or x27465 x17635)
+:assumption (or (not x28561) x796 (not x11954) (not x3494))
+:assumption (or (not x10863) (not x20419))
+:assumption (or x28433 (not x24608))
+:assumption (or (not x7540) (not x28909))
+:assumption (or x9144 x15304)
+:assumption (or x24024 x19000)
+:assumption (or (not x6593) x704)
+:assumption (or x16794 (not x14293))
+:assumption (or (not x31909) (not x31150))
+:assumption (or x6595 (not x30972))
+:assumption (or (not x4621) (not x5971))
+:assumption (or (not x7249) x20183 (not x7805) (not x6077))
+:assumption (or (not x29809) (not x26311))
+:assumption (or (not x2334) x7572 x25659 (not x15525))
+:assumption (or (not x23211) (not x7597))
+:assumption (or (not x30219) x31710)
+:assumption (or x255 x2330)
+:assumption (or x29266 (not x939))
+:assumption (or (not x6577) (not x31782))
+:assumption (or (not x8766) x2362 x31919 x31767 (not x4996) x43 x9644 x2236 (not x12336))
+:assumption (or x8141 (not x6233) x8002)
+:assumption (or (not x28381) (not x26447))
+:assumption (or x28903 (not x22980))
+:assumption (or (not x3435) x14455 (not x705))
+:assumption (or (not x30138) x28775)
+:assumption (or x31918 x6765)
+:assumption (or x3671 x18176)
+:assumption (or x31488 x10369)
+:assumption (or x2139 x6771)
+:assumption (or (not x27749) x21829)
+:assumption (or x8546 (not x31260))
+:assumption (or (not x26692) (not x11946) (not x30633) (not x21839) (not x29831) (not x31202) x26703)
+:assumption (or (not x23801) x23547)
+:assumption (or x17988 x10840)
+:assumption (or (not x6970) x14926)
+:assumption (or (not x811) x21299)
+:assumption (or x20519 x6164)
+:assumption (or x17433 x16784)
+:assumption (or x30751 (not x2544) (not x3212))
+:assumption (or x3814 x13364)
+:assumption (or x24219 (not x27685))
+:assumption (or (not x22214) x12603)
+:assumption (or x21377 (not x19472))
+:assumption (or (not x22571) (not x15853))
+:assumption (or x27439 (not x18939) x4259)
+:assumption (or (not x3922) (not x5615))
+:assumption (or (not x24959) (not x16374))
+:assumption (or x3001 (not x15984))
+:assumption (or (not x18295) x24788)
+:assumption (or x3345 (not x13744))
+:assumption (or x26552 (not x27108))
+:assumption (or x15138 (not x18177))
+:assumption (or (not x30008) x28479)
+:assumption (or (not x20140) (not x5300))
+:assumption (or x12059 x5186 x24584 x16295 (not x11935) (not x21036))
+:assumption (or x29324 x18853)
+:assumption (or x7420 x119 (not x26789))
+:assumption (or x4613 (not x25436))
+:assumption (or (not x19899) x2246)
+:assumption (or (not x13019) (not x13253) x10914 (not x29649) x28912 x13415)
+:assumption (or (not x16654) x15543)
+:assumption (or (not x25659) (not x31843))
+:assumption (or x11488 x5828)
+:assumption (or (not x27941) (not x8002) (not x18297) x9241)
+:assumption (or (not x17618) (not x8532) x28436 x22875)
+:assumption (or (not x3457) x25366 x10388)
+:assumption (or x14508 x6026)
+:assumption (or (not x28682) x21780 (not x26107))
+:assumption (or (not x12803) (not x11130))
+:assumption (or x28879 (not x11641) x16455)
+:assumption (or (not x1859) (not x16800))
+:assumption (or (not x23766) x525)
+:assumption (or x21023 (not x22992))
+:assumption (or (not x63) x3782 x27183 (not x7958) (not x28187))
+:assumption (or (not x2575) x20119)
+:assumption (or x16246 (not x3587) (not x27562) (not x3865))
+:assumption (or x25379 (not x26070))
+:assumption (or (not x31345) x2828 x9664 x26685 (not x17876))
+:assumption (or (not x21233) (not x8808))
+:assumption (or x21558 x15039)
+:assumption (or x2774 x26810)
+:assumption (or (not x13755) x21750)
+:assumption (or (not x7806) x16510 (not x18694))
+:assumption (or x25810 (not x21442))
+:assumption (or x1490 (not x8871) (not x22543) (not x24612))
+:assumption (or (not x14712) (not x7324))
+:assumption (or x7535 (not x25028))
+:assumption (or (not x20640) (not x1588))
+:assumption (or (not x15537) (not x13233))
+:assumption (or (not x3782) x8256)
+:assumption (or x27194 (not x4580))
+:assumption (or x2746 x29364)
+:assumption (or (not x7557) x21653 (not x16869))
+:assumption (or x4386 x15321 (not x31668))
+:assumption (or x218 (not x30967) (not x4349))
+:assumption (or x21567 x24743)
+:assumption (or x7440 x9895 x15546 x30721 x8002 x7264)
+:assumption (or x6937 (not x25659))
+:assumption (or (not x249) (not x26392))
+:assumption (or (not x20076) (not x928))
+:assumption (or (not x6936) x15675)
+:assumption (or x29206 (not x7777))
+:assumption (or (not x17427) x29095)
+:assumption (or (not x13375) x22527)
+:assumption (or x8483 x4451)
+:assumption (or (not x8586) (not x30992) (not x19129))
+:assumption (or (not x28579) x18044)
+:assumption (or x20430 (not x20419))
+:assumption (or x23298 (not x24285) x19731 (not x1181) (not x28679) (not x6601))
+:assumption (or (not x6148) (not x16777))
+:assumption (or (not x11793) x17359)
+:assumption (or x5585 x4704)
+:assumption (or (not x19561) (not x13956))
+:assumption (or x8797 (not x18290))
+:assumption (or x22684 x2)
+:assumption (or (not x10909) (not x25719))
+:assumption (or (not x10166) (not x6921))
+:assumption (or x12411 x24985)
+:assumption (or x21577 x11952)
+:assumption (or (not x22299) x6880)
+:assumption (or x13712 (not x132) (not x5672) (not x1252))
+:assumption (or (not x16568) (not x7431))
+:assumption (or (not x28678) x8952)
+:assumption (or (not x2786) (not x8602))
+:assumption (or x3772 x23786)
+:assumption (or x3782 x9674)
+:assumption (or (not x31763) x4986)
+:assumption (or (not x3017) x16375 x31732 (not x21582))
+:assumption (or x10430 (not x27079))
+:assumption (or x7107 x20032)
+:assumption (or (not x288) x26523)
+:assumption (or x4313 (not x7200))
+:assumption (or x7609 (not x13692))
+:assumption (or x372 (not x12326))
+:assumption (or (not x18699) (not x27437))
+:assumption (or (not x220) x23378)
+:assumption (or (not x28118) (not x5574) (not x22392) (not x2926))
+:assumption (or (not x23419) x3269)
+:assumption (or x28614 (not x12640))
+:assumption (or x2943 x27523)
+:assumption (or x22817 (not x27125))
+:assumption (or (not x5056) x10215)
+:assumption (or x8051 x14270)
+:assumption (or x15188 (not x18042) x21955 x24722 (not x20201))
+:assumption (or (not x15767) (not x14542))
+:assumption (or (not x17873) (not x24016))
+:assumption (or (not x7463) x22673)
+:assumption (or x784 (not x15810))
+:assumption (or (not x15032) x16650)
+:assumption (or (not x31725) x23312)
+:assumption (or x25306 x7028)
+:assumption (or (not x16928) (not x1393))
+:assumption (or x20663 x16392)
+:assumption (or x16027 x1582 (not x28973))
+:assumption (or (not x12970) x24085)
+:assumption (or (not x29497) x35)
+:assumption (or (not x2851) (not x18265))
+:assumption (or (not x12277) (not x10056))
+:assumption (or (not x27126) x16696)
+:assumption (or x2298 (not x1177))
+:assumption (or x10682 (not x6431))
+:assumption (or x19711 (not x28569))
+:assumption (or (not x9059) x31182)
+:assumption (or (not x23644) x16228)
+:assumption (or (not x16025) x26540 x15633)
+:assumption (or x16890 (not x26056))
+:assumption (or (not x7610) x13802)
+:assumption (or x16361 x3503)
+:assumption (or x23511 x15698)
+:assumption (or (not x20669) x3263)
+:assumption (or x4865 (not x11453) x13434)
+:assumption (or (not x27322) x26389)
+:assumption (or x28137 x2335 x30208)
+:assumption (or (not x16843) (not x16423))
+:assumption (or (not x11171) x16304)
+:assumption (or x4390 x10319)
+:assumption (or x22692 x27728)
+:assumption (or (not x16697) x4549 (not x31207))
+:assumption (or x1068 (not x25696))
+:assumption (or (not x14839) x10089 (not x28146))
+:assumption (or (not x26428) x8574)
+:assumption (or x5312 x12598)
+:assumption (or x13121 x8734)
+:assumption (or (not x17534) (not x25936))
+:assumption (or (not x14591) (not x16379) (not x31172) (not x15795))
+:assumption (or x779 x20241)
+:assumption (or (not x8867) (not x18311))
+:assumption (or x27065 x3207)
+:assumption (or (not x30639) x26450 (not x16304) (not x3116) x22966 (not x25809) (not x6706) (not x29183))
+:assumption (or x27451 (not x9634))
+:assumption (or (not x24208) (not x4262))
+:assumption (or x1751 x28952)
+:assumption (or x25732 (not x24969))
+:assumption (or x28629 (not x20807))
+:assumption (or x649 (not x22993))
+:assumption (or x16878 x9338)
+:assumption (or x28105 (not x19741))
+:assumption (or x15620 x1852 x20407 (not x1530))
+:assumption (or x24872 x13781)
+:assumption (or (not x14112) x13735)
+:assumption (or (not x21454) (not x7852))
+:assumption (or (not x10815) x12407)
+:assumption (or (not x6675) (not x25482))
+:assumption (or (not x16556) (not x18694) (not x1073))
+:assumption (or (not x1624) (not x27624))
+:assumption (or (not x6767) (not x24021))
+:assumption (or (not x19788) (not x2408))
+:assumption (or x15098 (not x29223))
+:assumption (or x4787 x4889)
+:assumption (or (not x5048) (not x15645))
+:assumption (or (not x12723) (not x31648))
+:assumption (or (not x15702) x10774)
+:assumption (or x27021 (not x12803))
+:assumption (or (not x20402) x8820)
+:assumption (or (not x23066) x18099)
+:assumption (or (not x12058) (not x15689))
+:assumption (or x14578 x16486 (not x8254))
+:assumption (or (not x12548) (not x27911))
+:assumption (or x19462 (not x31043))
+:assumption (or (not x9053) (not x1971))
+:assumption (or x15049 (not x23281) (not x5259) x31151 x15978)
+:assumption (or x29621 x19822)
+:assumption (or (not x9212) x12857)
+:assumption (or x21907 (not x25383))
+:assumption (or x13649 x6925)
+:assumption (or (not x26396) x24070)
+:assumption (or x11489 (not x12120) (not x6660) x21298)
+:assumption (or (not x9500) x11043)
+:assumption (or x12080 x21298)
+:assumption (or (not x4310) (not x3335))
+:assumption (or x5629 x31746)
+:assumption (or (not x758) x26315)
+:assumption (or (not x3839) x24642)
+:assumption (or (not x2241) x1136)
+:assumption (or (not x5886) x2584)
+:assumption (or x20922 x28258)
+:assumption (or (not x19068) x13565)
+:assumption (or x20988 (not x12113))
+:assumption (or (not x23244) (not x1493))
+:assumption (or (not x18951) x6969)
+:assumption (or x24071 x2705)
+:assumption (or (not x19157) x827 x29065)
+:assumption (or (not x19672) x3620 (not x30480) (not x15913))
+:assumption (or (not x29362) x13924 (not x25659))
+:assumption (or (not x5519) x4170)
+:assumption (or x217 (not x13930))
+:assumption (or x30023 (not x17359))
+:assumption (or (not x19) x30208 (not x29219) (not x4055))
+:assumption (or (not x1664) x18033)
+:assumption (or (not x18840) (not x13956))
+:assumption (or (not x16086) (not x15802))
+:assumption (or x21520 (not x3954))
+:assumption (or (not x3701) (not x6180))
+:assumption (or x22721 (not x5560))
+:assumption (or x21683 x13881 (not x28832) (not x1743) (not x29613) (not x30796) (not x22104) (not x21063))
+:assumption (or x17321 (not x11558))
+:assumption (or (not x27313) x1769)
+:assumption (or x20782 (not x5056))
+:assumption (or x18396 x15137)
+:assumption (or x13413 x10559)
+:assumption (or x2877 x2151)
+:assumption (or x7637 (not x1542))
+:assumption (or x99 x917)
+:assumption (or (not x30894) x31762)
+:assumption (or (not x5528) x7915)
+:assumption (or (not x12910) (not x878))
+:assumption (or (not x17936) x827)
+:assumption (or (not x30804) x21705)
+:assumption (or x10411 x17542)
+:assumption (or x28081 (not x9136))
+:assumption (or (not x12881) (not x11132))
+:assumption (or (not x15351) x8944)
+:assumption (or (not x28890) x28150)
+:assumption (or (not x13531) (not x9453) (not x9693) x24767 (not x332) (not x27920) (not x26336) (not x24447))
+:assumption (or x15960 (not x27881))
+:assumption (or x3195 x485)
+:assumption (or x29534 (not x11171))
+:assumption (or x22188 x12411 x10185 x13659)
+:assumption (or (not x14689) x6831)
+:assumption (or x251 x14310)
+:assumption (or (not x30667) x4122)
+:assumption (or (not x17237) x9790)
+:assumption (or (not x23370) x26974)
+:assumption (or x19089 x14288)
+:assumption (or x30542 (not x12354))
+:assumption (or x27544 x6969 (not x7773))
+:assumption (or (not x14990) x16356)
+:assumption (or x27537 x24207 (not x13247))
+:assumption (or x26228 x2709)
+:assumption (or x5528 (not x7523) (not x4378))
+:assumption (or x7992 (not x19843) (not x20216))
+:assumption (or (not x20791) x4136)
+:assumption (or x5875 x8086)
+:assumption (or (not x3785) (not x20566))
+:assumption (or (not x11435) (not x6746))
+:assumption (or (not x18349) (not x2980))
+:assumption (or x5721 (not x16741))
+:assumption (or (not x29704) (not x23244))
+:assumption (or x16632 (not x8554))
+:assumption (or (not x2040) (not x23679))
+:assumption (or (not x16244) x15515)
+:assumption (or (not x169) x22454 x18192 x4035)
+:assumption (or x18605 x15036)
+:assumption (or (not x29923) x23246 (not x2518) x3934 x9883)
+:assumption (or (not x11540) (not x31286))
+:assumption (or (not x20134) x21585)
+:assumption (or x21653 x14328)
+:assumption (or (not x14721) x9741)
+:assumption (or x18892 x8232)
+:assumption (or (not x24384) x26235)
+:assumption (or (not x11783) (not x8052))
+:assumption (or x118 x8966)
+:assumption (or x16893 x28689)
+:assumption (or (not x10587) (not x30705) x28245)
+:assumption (or x18938 (not x22495))
+:assumption (or (not x31574) x25529)
+:assumption (or x5630 x20741)
+:assumption (or x16851 x25887)
+:assumption (or x10584 (not x5245))
+:assumption (or x14802 (not x9845))
+:assumption (or x13093 (not x1064))
+:assumption (or (not x15226) x15496)
+:assumption (or x17211 x10827 (not x2133))
+:assumption (or (not x26721) (not x31725))
+:assumption (or x11281 (not x17219))
+:assumption (or (not x28346) (not x23710))
+:assumption (or x13079 (not x28923))
+:assumption (or (not x5751) (not x6046) x6433)
+:assumption (or x16929 x15919)
+:assumption (or x6594 (not x29707))
+:assumption (or (not x31686) (not x8330))
+:assumption (or (not x7106) (not x2898))
+:assumption (or x19877 (not x1710))
+:assumption (or (not x5242) (not x14607))
+:assumption (or (not x9554) (not x8602))
+:assumption (or x29248 (not x908))
+:assumption (or (not x4602) x21347)
+:assumption (or x15479 x1660 x12212 x19085 x4619 (not x13228) (not x4049) x27401 (not x19114))
+:assumption (or (not x4922) (not x16285))
+:assumption (or x7928 (not x27537))
+:assumption (or (not x26970) x22119)
+:assumption (or (not x24756) x20715)
+:assumption (or x12496 x13064)
+:assumption (or (not x26935) x14078)
+:assumption (or (not x18342) (not x31786))
+:assumption (or (not x14580) (not x627))
+:assumption (or (not x15780) x30316 x18519 (not x10120))
+:assumption (or x11955 x19140)
+:assumption (or x20878 x14022)
+:assumption (or (not x14081) (not x258))
+:assumption (or x4094 x27228)
+:assumption (or x5528 (not x5474))
+:assumption (or (not x17329) x5044)
+:assumption (or x30880 (not x25854))
+:assumption (or x6972 (not x5189))
+:assumption (or x13144 x13993)
+:assumption (or x111 x14387)
+:assumption (or (not x805) (not x17204))
+:assumption (or x24597 (not x26042) (not x11721) x25303 (not x28579) x12251)
+:assumption (or x14560 (not x25787))
+:assumption (or x3366 (not x14113))
+:assumption (or (not x3001) (not x20956) (not x28590) (not x30582))
+:assumption (or x30820 x2754)
+:assumption (or (not x24027) x8972)
+:assumption (or x22829 (not x4729))
+:assumption (or x9531 x11429 x2088 (not x13576))
+:assumption (or (not x22553) (not x29535))
+:assumption (or x25334 x21773)
+:assumption (or x13943 (not x25060) x7657)
+:assumption (or x9580 (not x14839))
+:assumption (or x20087 (not x7135))
+:assumption (or x2544 x22450)
+:assumption (or (not x11996) (not x13170))
+:assumption (or (not x27948) x31602 x24099 (not x27116) (not x13437) (not x15393) x2234 x2612)
+:assumption (or (not x13108) (not x18387))
+:assumption (or (not x17328) x11857)
+:assumption (or (not x10874) (not x4341) (not x30465))
+:assumption (or x30825 x21049 (not x28801))
+:assumption (or (not x3882) (not x28145))
+:assumption (or (not x6420) x15442)
+:assumption (or x5886 x8961 (not x2584) x3399)
+:assumption (or x21298 x320)
+:assumption (or x29230 (not x21014))
+:assumption (or (not x4061) x26541)
+:assumption (or x31167 x32)
+:assumption (or x18859 (not x6760))
+:assumption (or (not x11056) x1592)
+:assumption (or (not x15243) (not x9008))
+:assumption (or (not x18279) (not x6340))
+:assumption (or (not x29525) x11469 (not x8002))
+:assumption (or x11658 (not x1555))
+:assumption (or x27308 (not x26553) x5528)
+:assumption (or x27182 x31654 x27424 x28242)
+:assumption (or (not x15226) x12258)
+:assumption (or x27171 (not x30319) x11812 x29574 x10 x21573 x17390 (not x22205))
+:assumption (or x21788 (not x10214))
+:assumption (or x1095 (not x11661))
+:assumption (or (not x18136) (not x6577))
+:assumption (or (not x3329) (not x13622) (not x16490))
+:assumption (or x22466 x18110)
+:assumption (or x16802 x20629)
+:assumption (or (not x3240) x8602)
+:assumption (or (not x10606) (not x1393) (not x7273))
+:assumption (or (not x5028) (not x8893) x4823)
+:assumption (or (not x16604) x1271 (not x24050) (not x9795) (not x12872) x30100)
+:assumption (or (not x14715) (not x18679) (not x13993) (not x26660) (not x25207))
+:assumption (or (not x1099) x26547)
+:assumption (or (not x11938) x523 x4023)
+:assumption (or x11792 x12327)
+:assumption (or x21971 (not x24407))
+:assumption (or (not x1366) x24667)
+:assumption (or (not x36) x28811)
+:assumption (or x28488 (not x11986))
+:assumption (or (not x19348) x6317)
+:assumption (or (not x1050) x23789)
+:assumption (or x29088 x12534 (not x30496))
+:assumption (or (not x26744) x13682)
+:assumption (or (not x29514) x15761)
+:assumption (or (not x24965) (not x24244))
+:assumption (or (not x25490) x14179)
+:assumption (or (not x25376) (not x23494) x11847)
+:assumption (or x16510 (not x16767))
+:assumption (or (not x11598) x27705)
+:assumption (or x12968 x8606)
+:assumption (or (not x25193) x31910)
+:assumption (or x8002 x3337)
+:assumption (or (not x11268) (not x29000) x1847 x13452)
+:assumption (or (not x14963) x11679)
+:assumption (or x29387 x31430)
+:assumption (or x18102 (not x1393) x2803)
+:assumption (or (not x8697) x2219)
+:assumption (or (not x30690) x4535)
+:assumption (or x8126 (not x19775))
+:assumption (or x17164 (not x26126))
+:assumption (or (not x8919) (not x18594) x3670 (not x16876) (not x4560))
+:assumption (or x12269 (not x14144))
+:assumption (or (not x3038) (not x14002))
+:assumption (or x16066 x19486)
+:assumption (or (not x1471) x18546)
+:assumption (or (not x31076) x13576 x9531 x24229)
+:assumption (or (not x10296) (not x1334))
+:assumption (or (not x3742) x16304 x15795 (not x28068))
+:assumption (or x27074 x9673)
+:assumption (or x8562 x11573 (not x16590) (not x2177) (not x29953) x1049 x24541)
+:assumption (or x16547 x29345)
+:assumption (or (not x20065) (not x3809))
+:assumption (or (not x25972) (not x19560))
+:assumption (or (not x18177) x10716)
+:assumption (or x31134 x11015)
+:assumption (or x31722 (not x16344))
+:assumption (or (not x24668) x12193)
+:assumption (or (not x21203) (not x28028))
+:assumption (or x26482 (not x11661))
+:assumption (or x7537 x15750)
+:assumption (or (not x6870) (not x18351))
+:assumption (or x30744 x16726)
+:assumption (or x30330 (not x9289))
+:assumption (or x18386 (not x8496) (not x9571) x5465 x30489 (not x21004))
+:assumption (or (not x10828) (not x17680))
+:assumption (or (not x25659) (not x25477))
+:assumption (or (not x7329) x2591)
+:assumption (or x4959 x11311)
+:assumption (or x7835 (not x26406))
+:assumption (or (not x17670) x6951)
+:assumption (or x17088 (not x28664) x26897)
+:assumption (or (not x11754) (not x15874))
+:assumption (or x19838 (not x1904))
+:assumption (or x8002 x10006)
+:assumption (or x25626 x16663)
+:assumption (or x12183 (not x2738))
+:assumption (or x26949 (not x26569))
+:assumption (or x11394 x28097 x21596 (not x24387))
+:assumption (or (not x24571) (not x4559))
+:assumption (or (not x4110) (not x8908))
+:assumption (or x20586 x17016)
+:assumption (or x10484 (not x2637))
+:assumption (or (not x6951) (not x26642))
+:assumption (or (not x4913) (not x16230))
+:assumption (or x21631 x12190)
+:assumption (or x14783 (not x2318))
+:assumption (or (not x20461) (not x28043))
+:assumption (or x18861 (not x15098))
+:assumption (or (not x4247) x11295)
+:assumption (or x20165 (not x10450))
+:assumption (or x15147 (not x27806))
+:assumption (or x8113 (not x12133))
+:assumption (or x19992 x25475 (not x15848) x30282)
+:assumption (or (not x29403) (not x14053))
+:assumption (or (not x30440) (not x20329))
+:assumption (or (not x6885) x29873)
+:assumption (or x12516 (not x24242))
+:assumption (or (not x4065) (not x3341))
+:assumption (or (not x24691) (not x1441))
+:assumption (or (not x17200) (not x27043) x8301)
+:assumption (or (not x13696) x21298)
+:assumption (or x21632 (not x18769))
+:assumption (or x11801 (not x6955))
+:assumption (or (not x4259) (not x11894))
+:assumption (or (not x968) (not x24063))
+:assumption (or (not x31887) x24546)
+:assumption (or (not x21273) x26568)
+:assumption (or (not x31842) (not x4530))
+:assumption (or (not x11998) x21999)
+:assumption (or (not x21782) x20355)
+:assumption (or (not x31316) x24553)
+:assumption (or x6231 x9926)
+:assumption (or (not x14247) x20821 x8002 x26722 x13518 x31656)
+:assumption (or (not x24093) x20173)
+:assumption (or x2581 (not x26309) x17075 (not x24199) (not x14794) (not x30062) x17806 x5867 x2002)
+:assumption (or (not x27533) (not x4797))
+:assumption (or (not x6047) x31248)
+:assumption (or x17090 (not x5573))
+:assumption (or (not x14814) (not x23110))
+:assumption (or (not x20147) x29207)
+:assumption (or (not x971) (not x29500) (not x29958) x24574)
+:assumption (or (not x31547) x25723 x24399 (not x24282) x20134 x92 (not x188))
+:assumption (or x25334 x31275)
+:assumption (or (not x25847) (not x14865))
+:assumption (or x29649 (not x28912) x19728 x24216)
+:assumption (or (not x964) x15217 x17415)
+:assumption (or x6872 x2319)
+:assumption (or (not x8002) x28769)
+:assumption (or x31483 (not x30555))
+:assumption (or (not x17527) x31049)
+:assumption (or x10337 x30591)
+:assumption (or x605 x29649)
+:assumption (or x9466 (not x18463) (not x27669) (not x13956))
+:assumption (or (not x1999) (not x8145))
+:assumption (or (not x2115) (not x1424))
+:assumption (or x2270 (not x6464))
+:assumption (or x17853 x10758)
+:assumption (or x20904 x18399 x8658 (not x2509))
+:assumption (or (not x8972) x19424)
+:assumption (or x16386 (not x7554))
+:assumption (or (not x24722) (not x26457))
+:assumption (or (not x17590) x19729)
+:assumption (or x29767 (not x1809))
+:assumption (or x27725 x27487 (not x10071))
+:assumption (or x15267 (not x14138))
+:assumption (or (not x18859) (not x23473) x18122)
+:assumption (or (not x12142) (not x13820))
+:assumption (or x30557 (not x847))
+:assumption (or (not x19116) (not x15735) x29971 x15201)
+:assumption (or x4126 x23558)
+:assumption (or (not x17558) (not x9714))
+:assumption (or (not x2250) x19997 (not x6114) (not x5070))
+:assumption (or x13579 x19488)
+:assumption (or x25411 x25446)
+:assumption (or (not x15225) (not x22210))
+:assumption (or (not x6915) x27978)
+:assumption (or x13092 x2635)
+:assumption (or x21703 (not x12242))
+:assumption (or (not x9837) x11463)
+:assumption (or x9208 (not x25057))
+:assumption (or x28082 x29233)
+:assumption (or (not x23595) (not x14275))
+:assumption (or (not x3076) (not x31542))
+:assumption (or (not x8002) x18881)
+:assumption (or (not x14739) (not x30533))
+:assumption (or x14218 (not x28285))
+:assumption (or (not x4953) (not x9531))
+:assumption (or x26367 (not x17016))
+:assumption (or (not x13446) x15705)
+:assumption (or x6969 x7070)
+:assumption (or (not x12466) (not x2146))
+:assumption (or x31081 x2819 (not x25659))
+:assumption (or (not x1055) (not x24693))
+:assumption (or x17599 (not x7693) (not x2836) x27955 (not x17070) (not x12210))
+:assumption (or x23340 (not x3435))
+:assumption (or (not x30960) (not x28686))
+:assumption (or x13956 x18913)
+:assumption (or (not x3645) x16662)
+:assumption (or x20550 x25659 x14059 (not x26647) (not x6149))
+:assumption (or (not x23778) (not x8201))
+:assumption (or x11823 (not x26826))
+:assumption (or (not x9844) (not x8570) (not x11224) x14411 x21067 x20012)
+:assumption (or x22844 x20429 x7662)
+:assumption (or (not x14593) x9004)
+:assumption (or x8602 x29717 (not x4183))
+:assumption (or (not x19948) x12373)
+:assumption (or x21539 (not x28525))
+:assumption (or x18810 x252)
+:assumption (or x7445 (not x10277))
+:assumption (or x15562 x12203 x20929)
+:assumption (or x28807 x1458)
+:assumption (or x12595 (not x2061))
+:assumption (or (not x29389) x14297)
+:assumption (or x21298 x2979 (not x16698) x7012)
+:assumption (or (not x22886) (not x450))
+:assumption (or (not x4984) x24175)
+:assumption (or (not x27106) (not x22531))
+:assumption (or (not x22017) (not x8830))
+:assumption (or x24403 x10003)
+:assumption (or x14833 x25451 x27636 (not x23106) (not x24037) x5563 (not x11003))
+:assumption (or (not x21856) (not x27448))
+:assumption (or x15331 (not x23245))
+:assumption (or (not x16809) (not x13350))
+:assumption (or x5828 x2963)
+:assumption (or x8723 x26632)
+:assumption (or (not x5626) x12884)
+:assumption (or (not x31227) x7350)
+:assumption (or x20519 x23244)
+:assumption (or (not x5744) (not x28242))
+:assumption (or x6377 x26704)
+:assumption (or x16885 x5515 x21815)
+:assumption (or x17745 x6422 (not x24480) (not x11043))
+:assumption (or (not x23791) x18996)
+:assumption (or x624 (not x9283))
+:assumption (or (not x20926) (not x9008))
+:assumption (or x24630 x12032)
+:assumption (or x12242 x5549)
+:assumption (or (not x28328) (not x14626))
+:assumption (or (not x13593) x12523)
+:assumption (or x26466 (not x15773))
+:assumption (or (not x15716) (not x3557))
+:assumption (or x5778 (not x18338))
+:assumption (or x25790 (not x21298) (not x1551) x1207)
+:assumption (or x11463 (not x17225))
+:assumption (or (not x13956) x7787)
+:assumption (or (not x1241) x1743)
+:assumption (or x15741 x21249)
+:assumption (or x9609 (not x2093))
+:assumption (or (not x17585) x27489)
+:assumption (or (not x1276) (not x29221))
+:assumption (or (not x6390) (not x30561))
+:assumption (or x6847 (not x17540))
+:assumption (or (not x5528) (not x9008) (not x19501) x15799 (not x12968))
+:assumption (or x14292 (not x20196))
+:assumption (or (not x29649) x23939)
+:assumption (or x9008 (not x13946))
+:assumption (or (not x5655) (not x10467))
+:assumption (or (not x3582) x10963)
+:assumption (or (not x23399) (not x7537) x4211 x11896)
+:assumption (or (not x4773) (not x11241) (not x30496) (not x31255) x442 (not x19925) x2097 (not x25472) (not x14292))
+:assumption (or x4503 x21484)
+:assumption (or (not x3185) x11897 (not x4153))
+:assumption (or x6348 (not x7408))
+:assumption (or (not x6073) (not x21101))
+:assumption (or (not x30633) (not x6746) (not x24241))
+:assumption (or (not x12952) x16202)
+:assumption (or (not x11791) (not x9266))
+:assumption (or (not x18459) x30979)
+:assumption (or x23305 (not x11173))
+:assumption (or x27505 (not x26300) (not x9709) (not x4555) (not x15258) (not x4274) x22888)
+:assumption (or x14634 (not x4003))
+:assumption (or (not x25760) (not x27535))
+:assumption (or x15036 (not x15329))
+:assumption (or (not x15322) x8762)
+:assumption (or (not x27370) x26162)
+:assumption (or x15366 x21583 (not x1779) x7802)
+:assumption (or x21678 (not x24324))
+:assumption (or (not x27496) x12230)
+:assumption (or x3283 x27265)
+:assumption (or x24233 x14966)
+:assumption (or (not x5025) (not x12154) (not x20868))
+:assumption (or x17732 x11332)
+:assumption (or (not x13597) (not x10336))
+:assumption (or (not x13881) (not x1241))
+:assumption (or (not x17524) (not x23018))
+:assumption (or x27496 (not x31423))
+:assumption (or x21039 x9056)
+:assumption (or (not x29649) x18278)
+:assumption (or (not x8250) (not x17407))
+:assumption (or x2088 x12566)
+:assumption (or x30548 x31318)
+:assumption (or x5810 x158)
+:assumption (or (not x22855) (not x28429) (not x142) x29771)
+:assumption (or x24419 (not x4472) x9008)
+:assumption (or x416 x11862 (not x28668) x19387 (not x8832) (not x8219) (not x29797) x23781)
+:assumption (or (not x2001) (not x5097))
+:assumption (or (not x8002) (not x8325))
+:assumption (or (not x27623) (not x13390) (not x15621))
+:assumption (or x18851 x7795)
+:assumption (or (not x8955) (not x2479))
+:assumption (or (not x6434) (not x2800))
+:assumption (or x30055 x9647)
+:assumption (or (not x23244) x5418)
+:assumption (or x16222 (not x18814) x6329 x21967 (not x19948))
+:assumption (or x25433 (not x24782))
+:assumption (or (not x19551) x20450 x1024 (not x282))
+:assumption (or x1079 x15227)
+:assumption (or x22554 (not x2729))
+:assumption (or (not x17837) (not x15549) (not x6457))
+:assumption (or (not x14798) (not x12002))
+:assumption (or (not x29381) x14920)
+:assumption (or (not x10534) x20871)
+:assumption (or x16387 (not x3316))
+:assumption (or x22824 x14053)
+:assumption (or x2613 (not x13622) (not x17249))
+:assumption (or (not x27169) (not x893))
+:assumption (or (not x25261) x3154)
+:assumption (or x26074 (not x27726))
+:assumption (or x8357 (not x31906))
+:assumption (or (not x2717) x13417)
+:assumption (or x27647 x20890)
+:assumption (or x21073 x21223)
+:assumption (or x16374 x30105)
+:assumption (or (not x8002) (not x20204))
+:assumption (or x18160 x10406)
+:assumption (or (not x7434) x19439)
+:assumption (or x9471 x29668 (not x2526) (not x22742))
+:assumption (or x16654 x30113 x30490)
+:assumption (or x778 x10477)
+:assumption (or x5570 x12986 (not x654) x9771 (not x9872))
+:assumption (or (not x29324) x29951)
+:assumption (or (not x290) x11712)
+:assumption (or x30786 (not x23149))
+:assumption (or (not x20455) (not x11720))
+:assumption (or x22744 x21789 x9647)
+:assumption (or x8457 (not x10776) (not x2334) x9796)
+:assumption (or (not x6928) x10850)
+:assumption (or (not x431) (not x26898))
+:assumption (or x1582 (not x22647) x15350)
+:assumption (or (not x17206) (not x176))
+:assumption (or x899 (not x11281) x17359)
+:assumption (or x22240 x15291)
+:assumption (or (not x4620) (not x20430) (not x14837) (not x774) x2982)
+:assumption (or (not x14258) x27541)
+:assumption (or x28973 (not x6459))
+:assumption (or (not x10331) x6013)
+:assumption (or x21040 x22925)
+:assumption (or (not x24972) (not x22412))
+:assumption (or (not x27011) x7576)
+:assumption (or (not x31799) (not x14749))
+:assumption (or x11739 x16786 (not x3503))
+:assumption (or (not x7482) (not x5665) (not x7841))
+:assumption (or (not x14578) x22345)
+:assumption (or x29369 x22637)
+:assumption (or x27109 (not x17302) x14803)
+:assumption (or (not x22763) x15621)
+:assumption (or x6816 x13870)
+:assumption (or x15659 x22885)
+:assumption (or (not x24965) (not x31251))
+:assumption (or (not x4410) (not x21623))
+:assumption (or x8982 (not x5281) (not x10664) x25484 x2244 (not x24637))
+:assumption (or (not x3476) (not x30479))
+:assumption (or x21298 (not x12467))
+:assumption (or x9298 (not x28030))
+:assumption (or (not x20918) (not x21342))
+:assumption (or (not x23147) (not x3598))
+:assumption (or (not x17682) (not x25544))
+:assumption (or x26518 (not x21885))
+:assumption (or (not x26713) x9490)
+:assumption (or (not x14007) x15621)
+:assumption (or x11518 (not x16510))
+:assumption (or x9136 (not x1230))
+:assumption (or x13595 (not x1277))
+:assumption (or (not x31111) (not x21513))
+:assumption (or x14845 x21550 x13179 (not x30921) (not x29211) x10546 x28478 (not x25118) x5612 (not x2756) (not x4369) (not x17717))
+:assumption (or (not x28739) x15111)
+:assumption (or (not x16663) (not x28252))
+:assumption (or (not x25659) x3369 x18218)
+:assumption (or x6746 (not x2958))
+:assumption (or (not x1002) (not x28307))
+:assumption (or x7326 (not x1582))
+:assumption (or x21052 (not x12464))
+:assumption (or (not x3246) (not x15697) (not x17321) x11558 x7465 (not x16833) x11585)
+:assumption (or (not x24286) (not x12045))
+:assumption (or x27604 (not x1647))
+:assumption (or x3023 (not x12189))
+:assumption (or x21459 (not x27524))
+:assumption (or (not x28364) (not x8002) (not x5075))
+:assumption (or x18293 x8681)
+:assumption (or x20913 (not x1582))
+:assumption (or x27737 (not x28462))
+:assumption (or (not x8638) x5470)
+:assumption (or (not x19580) (not x15774))
+:assumption (or x27677 x13956 x7012)
+:assumption (or (not x27720) x5845)
+:assumption (or (not x15701) x23510)
+:assumption (or (not x169) (not x26997) x762)
+:assumption (or x27311 x9008 (not x30678) (not x28022) x13108 (not x7067))
+:assumption (or (not x18540) (not x18470))
+:assumption (or x3092 (not x26253))
+:assumption (or (not x29650) x17005)
+:assumption (or (not x26625) (not x4374))
+:assumption (or x31073 x23244)
+:assumption (or (not x16633) x9008)
+:assumption (or x17366 x14921)
+:assumption (or x20644 x11799)
+:assumption (or x23113 x2816)
+:assumption (or x29220 x29300)
+:assumption (or (not x29075) (not x30488))
+:assumption (or (not x13507) x25161)
+:assumption (or x7941 (not x25510))
+:assumption (or x15576 (not x24495))
+:assumption (or (not x11661) (not x14197))
+:assumption (or x8080 x6809)
+:assumption (or (not x20969) x19319)
+:assumption (or (not x21552) x4221)
+:assumption (or (not x9025) x169 x20372)
+:assumption (or x20829 (not x9115))
+:assumption (or x11281 (not x28753) (not x10455) x4007)
+:assumption (or x20283 x7131)
+:assumption (or x8313 (not x5157))
+:assumption (or x27356 x8570)
+:assumption (or x29584 x20907 (not x1922) x11041 (not x8624))
+:assumption (or x14951 (not x30945))
+:assumption (or (not x4885) x16219)
+:assumption (or x12009 x9834)
+:assumption (or (not x8287) (not x14930))
+:assumption (or x12995 (not x18851))
+:assumption (or x29623 x7325)
+:assumption (or x31129 (not x2986) x20169)
+:assumption (or x18177 (not x15138))
+:assumption (or x7796 x15553)
+:assumption (or (not x29328) x14137)
+:assumption (or x25122 x8961)
+:assumption (or (not x10431) (not x9176))
+:assumption (or (not x13956) x1664 x26892)
+:assumption (or (not x13483) (not x9008))
+:assumption (or x30323 x5696)
+:assumption (or x31644 x2601)
+:assumption (or (not x10408) (not x30065))
+:assumption (or x9858 (not x22381) x10774 (not x409) (not x20899) (not x1341) (not x28238) x2003 (not x17821))
+:assumption (or x5935 x15514)
+:assumption (or (not x29116) (not x7117) x18083 (not x4843))
+:assumption (or x7788 x6243)
+:assumption (or (not x20586) x13956 x16654 x8002 (not x17016))
+:assumption (or (not x25515) (not x28517))
+:assumption (or x18208 x10597)
+:assumption (or (not x19003) x23839)
+:assumption (or x18003 x17111)
+:assumption (or (not x14721) (not x20817))
+:assumption (or (not x10602) x19991 (not x90) (not x8276))
+:assumption (or x16287 x16071)
+:assumption (or x20310 x25538)
+:assumption (or (not x1275) x25659)
+:assumption (or x10047 x25663)
+:assumption (or (not x29106) x20342)
+:assumption (or x14682 x1746)
+:assumption (or x23076 (not x26794))
+:assumption (or x29210 x14113)
+:assumption (or x5558 (not x25102))
+:assumption (or (not x19339) x17927)
+:assumption (or (not x1556) (not x5227))
+:assumption (or x16745 (not x22839))
+:assumption (or (not x29988) (not x12723))
+:assumption (or (not x22109) (not x15659) (not x14463))
+:assumption (or x7145 x24525)
+:assumption (or (not x28259) x23852)
+:assumption (or x31211 (not x22021))
+:assumption (or (not x7835) (not x9441))
+:assumption (or x24554 x10888 (not x14839))
+:assumption (or x2529 x289)
+:assumption (or (not x5058) x16398)
+:assumption (or x4179 (not x20716))
+:assumption (or x6776 (not x22648))
+:assumption (or (not x19652) (not x5188))
+:assumption (or (not x27) x14591)
+:assumption (or x1992 (not x10736) (not x8118) (not x8173))
+:assumption (or (not x6457) x15870)
+:assumption (or x7114 (not x12214))
+:assumption (or (not x28485) x17323)
+:assumption (or x640 (not x21227))
+:assumption (or x6596 (not x25567))
+:assumption (or (not x10234) x5807)
+:assumption (or (not x21713) (not x10943))
+:assumption (or x1885 (not x27677))
+:assumption (or x11288 x10594)
+:assumption (or (not x14958) x27011)
+:assumption (or x2310 (not x25802))
+:assumption (or (not x3277) x4397 (not x1437))
+:assumption (or x13309 x2801)
+:assumption (or x8002 (not x12456) x5686 (not x19962) x24423 (not x29304))
+:assumption (or x17387 (not x26046))
+:assumption (or x7115 x25854)
+:assumption (or x13956 x11979)
+:assumption (or x11385 (not x3349))
+:assumption (or x19340 (not x24012))
+:assumption (or x7357 (not x6128) x485 (not x7409) (not x6383))
+:assumption (or (not x11961) (not x4541))
+:assumption (or x19235 x9008)
+:assumption (or (not x8002) x5395)
+:assumption (or x8338 (not x1058))
+:assumption (or x27922 x10459)
+:assumption (or x11107 x8288)
+:assumption (or (not x1064) x1212)
+:assumption (or (not x9254) (not x26809))
+:assumption (or x24105 x27035)
+:assumption (or (not x450) x19968)
+:assumption (or (not x25453) x13193)
+:assumption (or x22988 (not x22963))
+:assumption (or (not x11883) x12612)
+:assumption (or x21396 x6019)
+:assumption (or (not x13956) (not x21945) (not x28342))
+:assumption (or (not x25184) (not x19825))
+:assumption (or (not x16346) x539)
+:assumption (or x29217 x8525)
+:assumption (or x15527 (not x20831))
+:assumption (or (not x12612) (not x15027) (not x20722) x15905 (not x5176) (not x21996))
+:assumption (or x4660 x21316 x23823 x21021 x2970 x3155 x30189)
+:assumption (or x5579 x19527)
+:assumption (or (not x6313) x14337)
+:assumption (or (not x23216) x15657)
+:assumption (or (not x7214) (not x25808))
+:assumption (or (not x16510) x9761)
+:assumption (or (not x3211) x10530)
+:assumption (or x25421 x11806)
+:assumption (or x15525 x30920 (not x17534))
+:assumption (or (not x24584) (not x28010))
+:assumption (or x15987 (not x9374) x25294 (not x23255) (not x846))
+:assumption (or (not x6668) (not x17611))
+:assumption (or x16994 (not x18813))
+:assumption (or (not x19293) x22632)
+:assumption (or (not x31308) (not x19302))
+:assumption (or x1565 (not x3453) x16415)
+:assumption (or (not x5732) (not x16096) (not x25659))
+:assumption (or (not x2006) x31505)
+:assumption (or (not x25708) x8701)
+:assumption (or x14254 (not x30026))
+:assumption (or (not x4633) (not x30224))
+:assumption (or (not x13882) x18061)
+:assumption (or x7723 x26717)
+:assumption (or x1927 (not x30633))
+:assumption (or x12723 x19365 x29988 x25334)
+:assumption (or x17325 (not x8658) x3372)
+:assumption (or x30715 x27425)
+:assumption (or x20768 x20385 (not x23108) (not x29982) x10346)
+:assumption (or x21685 x19523)
+:assumption (or x17153 (not x10336))
+:assumption (or x18875 x21432 (not x10530) (not x19607))
+:assumption (or x1697 x5383)
+:assumption (or x17546 x30148)
+:assumption (or (not x18108) x3623)
+:assumption (or (not x23983) x4504)
+:assumption (or x31853 (not x480) x26506 x6075)
+:assumption (or x4807 x5593)
+:assumption (or x11081 x7638)
+:assumption (or x26637 x21111 x6860 x626)
+:assumption (or x3026 x31049)
+:assumption (or (not x8464) (not x30555))
+:assumption (or (not x14624) (not x3882))
+:assumption (or (not x19612) (not x2399))
+:assumption (or x9424 x19478)
+:assumption (or x8002 x19949 x5107)
+:assumption (or (not x5139) (not x29287))
+:assumption (or x1374 x9817 (not x4891))
+:assumption (or (not x24554) x16608)
+:assumption (or (not x3324) x11056)
+:assumption (or x25729 (not x26716))
+:assumption (or (not x18492) x21062)
+:assumption (or x7017 (not x8979) x15537)
+:assumption (or x16784 x21324)
+:assumption (or (not x24775) (not x11071))
+:assumption (or (not x15054) x30164)
+:assumption (or (not x15175) (not x7300))
+:assumption (or (not x22239) x6129)
+:assumption (or x18612 (not x4388))
+:assumption (or x30739 x17744)
+:assumption (or (not x28842) (not x415))
+:assumption (or (not x30844) (not x22669))
+:assumption (or x3779 x31278 (not x29946))
+:assumption (or x6257 x22989)
+:assumption (or (not x480) (not x17062))
+:assumption (or (not x15295) x20087 (not x20140))
+:assumption (or x5394 x15867 x14994 x25558 (not x25617) x151 x26030 (not x5589))
+:assumption (or x4208 x19372)
+:assumption (or (not x10914) (not x23483))
+:assumption (or x28369 x28328 x23558)
+:assumption (or (not x4940) x10944 x3001)
+:assumption (or (not x21099) (not x19864) (not x18003) x33)
+:assumption (or (not x23736) (not x24425))
+:assumption (or x8780 x22725)
+:assumption (or (not x7656) x19107)
+:assumption (or (not x26638) x30873 x18042 (not x24722))
+:assumption (or x22690 (not x23244) (not x2133))
+:assumption (or x30047 x13979)
+:assumption (or x30893 (not x4167))
+:assumption (or (not x28126) (not x10047) (not x16411) x18905 (not x6177))
+:assumption (or (not x29773) (not x29056))
+:assumption (or x21815 x18736)
+:assumption (or (not x27602) (not x1917))
+:assumption (or (not x10728) x7835)
+:assumption (or x13956 x20035 (not x30667) x23244 x8002 x27169)
+:assumption (or x26305 x18617)
+:assumption (or x119 (not x21546) (not x3612) x2943 x17302)
+:assumption (or x21168 (not x6489))
+:assumption (or x23403 (not x2041))
+:assumption (or x9008 x20612)
+:assumption (or (not x9930) x29134 x30113)
+:assumption (or (not x19536) (not x28912))
+:assumption (or x31027 (not x7242))
+:assumption (or x696 x20902 (not x10934) x29811)
+:assumption (or (not x12062) (not x8457))
+:assumption (or (not x22049) (not x2621))
+:assumption (or (not x6028) (not x13035))
+:assumption (or (not x3581) (not x29016))
+:assumption (or x16510 (not x15820))
+:assumption (or (not x1641) (not x30255))
+:assumption (or x15935 (not x14724))
+:assumption (or x10553 (not x9008))
+:assumption (or (not x13140) x9008)
+:assumption (or (not x3076) x25977)
+:assumption (or x17158 x17930)
+:assumption (or (not x20905) x22590)
+:assumption (or (not x4363) (not x30335))
+:assumption (or x17251 x27448)
+:assumption (or x12045 (not x12937))
+:assumption (or x24700 x23106)
+:assumption (or x11428 x5870)
+:assumption (or x9963 (not x3532))
+:assumption (or x12672 (not x24440))
+:assumption (or x18736 x11281)
+:assumption (or x30870 x31077)
+:assumption (or x31543 x14636)
+:assumption (or x2441 x24305)
+:assumption (or (not x21416) x23205 x21298)
+:assumption (or (not x20561) x13978)
+:assumption (or x23128 x15875)
+:assumption (or x16845 (not x22855) (not x23244))
+:assumption (or (not x27847) x30689)
+:assumption (or x21368 (not x12242) x2960 (not x12666))
+:assumption (or x30686 x27150)
+:assumption (or (not x15509) x4469)
+:assumption (or (not x17385) (not x4288))
+:assumption (or (not x18310) x16741 (not x11095) x21778)
+:assumption (or (not x14527) x12521)
+:assumption (or (not x26272) x8002)
+:assumption (or x23027 x2036)
+:assumption (or (not x29614) x11281)
+:assumption (or x17347 x31560)
+:assumption (or (not x25410) (not x16516))
+:assumption (or x1836 x27598)
+:assumption (or x31737 x7876)
+:assumption (or x11778 (not x20025))
+:assumption (or (not x29923) x23980 x3280 (not x2518) x23246)
+:assumption (or x17461 x5528)
+:assumption (or x11940 (not x24746))
+:assumption (or x5610 x16374)
+:assumption (or x3632 x21078)
+:assumption (or (not x7087) x14477)
+:assumption (or (not x5178) (not x4281))
+:assumption (or x22631 (not x30111))
+:assumption (or x11614 x25212)
+:assumption (or (not x6243) x7665 x22080)
+:assumption (or (not x21748) x17967)
+:assumption (or (not x28208) (not x22722) (not x29606))
+:assumption (or x27466 x6709)
+:assumption (or (not x27865) x29386)
+:assumption (or (not x14355) (not x19996))
+:assumption (or x12336 (not x29891))
+:assumption (or (not x10909) x28864 (not x6157) (not x26897))
+:assumption (or (not x27703) (not x6624))
+:assumption (or (not x3763) (not x4008) (not x7397) (not x10544))
+:assumption (or x25064 (not x19215))
+:assumption (or x21246 (not x30936) x5730)
+:assumption (or (not x4832) x1512)
+:assumption (or x28996 x28924)
+:assumption (or (not x1042) x26236)
+:assumption (or (not x29064) x4378)
+:assumption (or (not x14595) (not x30468))
+:assumption (or (not x31134) (not x20947))
+:assumption (or x6570 (not x20859))
+:assumption (or (not x26575) (not x19726))
+:assumption (or x20325 x6505)
+:assumption (or x16755 x27219)
+:assumption (or x7538 x23953)
+:assumption (or x22342 x10574 (not x827))
+:assumption (or x12397 x9562)
+:assumption (or (not x23244) x24472)
+:assumption (or x21435 (not x12860))
+:assumption (or (not x19251) (not x9755))
+:assumption (or x18412 (not x7439) (not x27423) x30527 (not x10408) (not x14024))
+:assumption (or x8002 x30515 x31829 (not x11560) (not x13956))
+:assumption (or (not x2085) (not x12420) (not x13956))
+:assumption (or (not x28469) x1246)
+:assumption (or (not x12524) (not x13450))
+:assumption (or (not x7012) (not x4068))
+:assumption (or (not x12802) x17076)
+:assumption (or (not x20444) x23244)
+:assumption (or (not x28947) x18793)
+:assumption (or x2775 (not x12752))
+:assumption (or x9955 (not x10071))
+:assumption (or x13697 (not x12277))
+:assumption (or (not x25079) (not x21225))
+:assumption (or (not x8229) (not x23271))
+:assumption (or (not x5701) (not x22700))
+:assumption (or x30509 (not x20585))
+:assumption (or x16267 (not x20723))
+:assumption (or x13186 (not x8993))
+:assumption (or x15581 x19113)
+:assumption (or x14508 x31600)
+:assumption (or x19656 x24311 (not x85))
+:assumption (or x1205 (not x3063) x7426)
+:assumption (or (not x3556) (not x7834))
+:assumption (or (not x3299) (not x16669))
+:assumption (or (not x17074) (not x27347) x1166 x27126 x25683 x20042)
+:assumption (or x15868 x5215)
+:assumption (or x7711 x29569)
+:assumption (or x7992 (not x31798))
+:assumption (or x8023 (not x29649) x29771)
+:assumption (or x185 x8002)
+:assumption (or (not x18289) x365 (not x4822) (not x20676))
+:assumption (or x15893 x8840)
+:assumption (or (not x5777) (not x23821) (not x1738) x3320 (not x29325))
+:assumption (or x12067 x10347)
+:assumption (or x9008 x24941)
+:assumption (or x10120 (not x18519))
+:assumption (or x18873 (not x31469))
+:assumption (or x24761 x30887 x29444 x754 x27104)
+:assumption (or x1244 (not x22544) x2481 (not x23170) (not x2016))
+:assumption (or (not x17551) x8328)
+:assumption (or (not x23747) (not x1998))
+:assumption (or x6334 (not x15703))
+:assumption (or x2022 (not x14213) (not x31812))
+:assumption (or x12410 x23114 (not x23906) x9911 x17083 x15422)
+:assumption (or (not x31737) (not x11394) x9730 (not x26993))
+:assumption (or (not x4848) x31905)
+:assumption (or x10063 (not x5886))
+:assumption (or (not x22884) (not x13341))
+:assumption (or (not x5300) x5538)
+:assumption (or x31256 (not x26238) (not x17302))
+:assumption (or (not x25355) (not x16641) (not x18138) x861 (not x3230) (not x21151) x30018)
+:assumption (or x12173 x5027)
+:assumption (or x4199 x74)
+:assumption (or x11180 x11394 (not x24387) (not x1187))
+:assumption (or x18097 x26462)
+:assumption (or x24668 x23249 x10617 x14591 x15552 (not x13680) (not x16312) (not x11944))
+:assumption (or (not x28589) x3974)
+:assumption (or x15800 (not x27016))
+:assumption (or x20171 (not x13167))
+:assumption (or x7636 (not x31925))
+:assumption (or x13956 (not x13191))
+:assumption (or (not x27328) x12975)
+:assumption (or x9583 (not x11755))
+:assumption (or x8165 x22981 x12273)
+:assumption (or x16065 (not x24263))
+:assumption (or x29955 (not x24120))
+:assumption (or (not x15092) (not x16562))
+:assumption (or x1944 x21298)
+:assumption (or x23814 x9245)
+:assumption (or x8258 (not x22526) (not x25659) (not x29301) x28560 (not x19112) x10166 (not x8923))
+:assumption (or (not x9090) (not x13956))
+:assumption (or (not x11912) x18460 x23811 x25476)
+:assumption (or x30480 (not x3453))
+:assumption (or (not x12019) (not x7433))
+:assumption (or x16295 (not x4187))
+:assumption (or x20652 x30146)
+:assumption (or x5102 (not x6583))
+:assumption (or x27098 (not x29409))
+:assumption (or (not x16024) (not x21751) x6969 x3454)
+:assumption (or (not x22093) x5528)
+:assumption (or (not x15749) (not x49))
+:assumption (or (not x5394) (not x14095) (not x10584))
+:assumption (or (not x9531) x4346)
+:assumption (or x11319 x13551 x2334)
+:assumption (or x29105 (not x3775))
+:assumption (or (not x24158) (not x15407))
+:assumption (or x3629 x31185)
+:assumption (or x16412 x23449)
+:assumption (or x15639 x499)
+:assumption (or x3501 (not x25146))
+:assumption (or x31059 (not x25926))
+:assumption (or x29380 x28068)
+:assumption (or x17302 x7640)
+:assumption (or x13570 x28512)
+:assumption (or (not x11014) x3369)
+:assumption (or (not x31620) (not x17327))
+:assumption (or (not x19901) (not x821))
+:assumption (or x6250 (not x24871))
+:assumption (or x3386 x1694)
+:assumption (or x17903 x7277 (not x3453))
+:assumption (or (not x16369) x21690)
+:assumption (or (not x938) (not x21571))
+:assumption (or (not x2183) x29201)
+:assumption (or x23244 x5254)
+:assumption (or x3637 (not x16021) (not x21298))
+:assumption (or (not x31875) x1711)
+:assumption (or x10110 (not x15164))
+:assumption (or x10874 (not x16837))
+:assumption (or (not x28422) (not x28234))
+:assumption (or x20614 x31266)
+:assumption (or (not x29955) (not x3400))
+:assumption (or x15176 x13036)
+:assumption (or x20423 x19554)
+:assumption (or (not x2938) x17261)
+:assumption (or (not x5313) (not x12936))
+:assumption (or x16510 (not x14693))
+:assumption (or (not x5562) x25984)
+:assumption (or x26670 x9827)
+:assumption (or x8002 x8205)
+:assumption (or (not x20535) x26286)
+:assumption (or (not x26624) (not x20201))
+:assumption (or x2521 x28912 (not x14356))
+:assumption (or x24320 (not x10831))
+:assumption (or x2161 x29160)
+:assumption (or (not x4543) x11457 (not x28523) (not x2319) x5710)
+:assumption (or (not x11655) (not x3087))
+:assumption (or (not x31858) x6694)
+:assumption (or (not x413) (not x14303))
+:assumption (or (not x16089) (not x14407) (not x21268) (not x27873) x31421)
+:assumption (or (not x5722) (not x1278))
+:assumption (or (not x958) (not x6003))
+:assumption (or x5033 x5528 (not x30560))
+:assumption (or (not x15988) x20674)
+:assumption (or (not x30077) x17216)
+:assumption (or (not x290) x23877)
+:assumption (or (not x20155) (not x12023))
+:assumption (or (not x25659) (not x10035))
+:assumption (or x3136 (not x31498) x20840)
+:assumption (or (not x27130) x18384)
+:assumption (or (not x20273) x483)
+:assumption (or (not x21614) (not x15963))
+:assumption (or (not x21393) (not x27040))
+:assumption (or x29881 x2252)
+:assumption (or (not x22601) (not x8002))
+:assumption (or x21653 (not x598))
+:assumption (or (not x28878) (not x22823))
+:assumption (or x2912 (not x1834))
+:assumption (or (not x9929) (not x5383))
+:assumption (or (not x30018) x25355)
+:assumption (or (not x16907) (not x3963) (not x23778) x30209 x11331 x3029 (not x21672) (not x24429) (not x8142))
+:assumption (or (not x23324) x19880)
+:assumption (or x28093 x7074)
+:assumption (or x18764 (not x19122))
+:assumption (or x13548 (not x2413))
+:assumption (or (not x10123) x6452)
+:assumption (or x2499 (not x26562))
+:assumption (or (not x11350) x8749 x26053 x2174)
+:assumption (or x25968 (not x10479))
+:assumption (or x2067 x21645)
+:assumption (or (not x13747) x18117 (not x20108))
+:assumption (or (not x22011) x19019)
+:assumption (or (not x28181) x31011)
+:assumption (or (not x25614) (not x17699))
+:assumption (or x12088 x19075)
+:assumption (or x12101 (not x13111) x16910)
+:assumption (or x17757 (not x8227) (not x12324) (not x31046) x22282)
+:assumption (or x20589 (not x6699))
+:assumption (or x2534 x11400)
+:assumption (or (not x14819) (not x28073) x31478 (not x28063) (not x9624))
+:assumption (or x31299 x5766)
+:assumption (or x7511 (not x27813))
+:assumption (or x9625 (not x21263))
+:assumption (or x14455 x5044 x15910)
+:assumption (or (not x17340) (not x5118))
+:assumption (or (not x11671) (not x23613))
+:assumption (or x30943 x22789 x18104 x22385 x2952)
+:assumption (or x6739 x22819 x1777)
+:assumption (or (not x21502) (not x2551))
+:assumption (or x20017 (not x7879))
+:assumption (or (not x7473) (not x8002))
+:assumption (or x5528 (not x8383))
+:assumption (or (not x16281) (not x21147))
+:assumption (or (not x10051) (not x25224) (not x9941) x25069 x8647 (not x20799))
+:assumption (or (not x13880) x18084 x7303 (not x11087) (not x24689) x1449)
+:assumption (or x6310 (not x27911))
+:assumption (or x25593 (not x22331))
+:assumption (or (not x16013) x15974)
+:assumption (or (not x23232) x26647)
+:assumption (or x1104 (not x24300))
+:assumption (or x13956 x8427)
+:assumption (or x12168 (not x12386))
+:assumption (or (not x25208) (not x13174))
+:assumption (or x26221 x19966)
+:assumption (or (not x23782) (not x6655))
+:assumption (or x23602 (not x1808))
+:assumption (or (not x2526) (not x17879) (not x3201))
+:assumption (or (not x23101) x27779)
+:assumption (or (not x626) (not x13420))
+:assumption (or x1598 (not x16423))
+:assumption (or x14217 (not x17032))
+:assumption (or (not x2174) (not x8749))
+:assumption (or (not x8266) x6986)
+:assumption (or (not x18784) (not x29405))
+:assumption (or (not x3621) x29324 x13748 (not x29951) x7456)
+:assumption (or x9391 x15518)
+:assumption (or (not x26107) x13111 x6247)
+:assumption (or (not x30233) (not x17342))
+:assumption (or x28891 x21151)
+:assumption (or x31627 (not x2901))
+:assumption (or x16223 x27978)
+:assumption (or x12254 x13558 (not x26474) (not x17582) x4848 x2860 (not x31905))
+:assumption (or (not x24836) x24683)
+:assumption (or (not x7200) x567)
+:assumption (or (not x11002) (not x24521))
+:assumption (or (not x20921) (not x15435))
+:assumption (or (not x26196) x3224 (not x28436))
+:assumption (or (not x12116) (not x7537) (not x26370))
+:assumption (or x202 (not x3001) x5972 (not x24341))
+:assumption (or (not x25362) (not x1543))
+:assumption (or (not x12070) x21298)
+:assumption (or x6294 x12156 x17440 x12547)
+:assumption (or x26897 (not x5167))
+:assumption (or x18660 x14157)
+:assumption (or (not x24765) (not x26545))
+:assumption (or (not x20220) (not x11855))
+:assumption (or x6065 x21756)
+:assumption (or x18404 (not x17108))
+:assumption (or x6737 x18160)
+:assumption (or x23174 x13887)
+:assumption (or x13164 x6969)
+:assumption (or (not x10167) (not x10317))
+:assumption (or (not x17650) x30475 x16543)
+:assumption (or x27233 (not x9084) (not x21633) (not x16924))
+:assumption (or x29613 (not x16537))
+:assumption (or (not x3497) (not x4195))
+:assumption (or (not x27604) (not x3692))
+:assumption (or (not x9394) (not x4382) x26358 x11221 x28500)
+:assumption (or x3501 (not x24093))
+:assumption (or (not x27045) x29433)
+:assumption (or (not x13184) x5354)
+:assumption (or x20663 (not x20528))
+:assumption (or x19864 (not x21542) x19219 (not x22112) x29108)
+:assumption (or x29210 x16198)
+:assumption (or x9342 (not x28002))
+:assumption (or x7362 (not x11259))
+:assumption (or x2160 x11880)
+:assumption (or x25727 x19723)
+:assumption (or x15879 x23052)
+:assumption (or (not x28656) x31359 x10162 x8550 (not x17192) x14053)
+:assumption (or x5485 x5160 (not x16743) (not x14585) x27654 (not x22782))
+:assumption (or x29232 (not x8812))
+:assumption (or (not x3370) (not x9641))
+:assumption (or x4980 x19998)
+:assumption (or (not x11971) x6513)
+:assumption (or (not x30429) x10228)
+:assumption (or (not x21298) x29564)
+:assumption (or (not x2070) (not x26648))
+:assumption (or x5551 x23399)
+:assumption (or (not x13632) (not x6378))
+:assumption (or (not x29572) (not x7946))
+:assumption (or (not x15328) x12668)
+:assumption (or x31688 (not x26061))
+:assumption (or x6093 x12083)
+:assumption (or (not x26329) x28845)
+:assumption (or (not x16403) (not x20416))
+:assumption (or (not x18084) (not x25553))
+:assumption (or (not x27973) x1939)
+:assumption (or x10289 (not x10283) x14725 (not x18647) x23257 (not x770) (not x11598))
+:assumption (or (not x19864) x30211)
+:assumption (or (not x11506) (not x1257))
+:assumption (or (not x16769) (not x4698) x14770 x24196 x20313)
+:assumption (or x9987 (not x20081))
+:assumption (or (not x21286) (not x4012))
+:assumption (or (not x8002) (not x12686))
+:assumption (or (not x29858) (not x13673))
+:assumption (or (not x21298) (not x16476) x25651)
+:assumption (or (not x10596) x768)
+:assumption (or (not x5471) (not x30102))
+:assumption (or (not x16959) (not x28598))
+:assumption (or (not x3509) (not x19984))
+:assumption (or x20958 x24970)
+:assumption (or x18001 x13836)
+:assumption (or (not x13035) x29940)
+:assumption (or x22258 x18004)
+:assumption (or x28678 x21733 x18200)
+:assumption (or x14059 (not x15662))
+:assumption (or x4078 (not x20723) (not x18864) (not x10026))
+:assumption (or x7650 x17858)
+:assumption (or (not x27872) (not x13638))
+:assumption (or x7311 (not x25315))
+:assumption (or (not x8472) (not x21653))
+:assumption (or x2816 x9008)
+:assumption (or (not x5961) (not x1161))
+:assumption (or x15306 x7539)
+:assumption (or (not x3494) (not x16602) (not x167) x16515 x19827 (not x641) x8804 (not x27861))
+:assumption (or x22495 (not x31070))
+:assumption (or x3435 (not x5879))
+:assumption (or x22674 x28159)
+:assumption (or x5404 (not x17999))
+:assumption (or x28973 x7036)
+:assumption (or (not x16885) (not x18423))
+:assumption (or (not x4751) (not x420))
+:assumption (or (not x26835) (not x20139))
+:assumption (or (not x18859) x23338)
+:assumption (or x11508 (not x23123) x20793 x5166 (not x20852))
+:assumption (or x29619 (not x3494) x4841 (not x10734))
+:assumption (or (not x13129) x24397)
+:assumption (or (not x24378) (not x16749))
+:assumption (or x28242 x25082)
+:assumption (or (not x17021) x19303)
+:assumption (or x14860 x953)
+:assumption (or (not x25746) (not x11157))
+:assumption (or (not x13554) (not x12002))
+:assumption (or x6396 x26612)
+:assumption (or x2133 (not x7009))
+:assumption (or (not x19473) x5645)
+:assumption (or (not x356) (not x9930) x20568 x29882 x1665 x24441)
+:assumption (or x26273 x21298)
+:assumption (or x29660 x27447)
+:assumption (or x16264 (not x20008))
+:assumption (or (not x23124) (not x5304))
+:assumption (or x14386 x14963 (not x11478))
+:assumption (or (not x5967) (not x17616))
+:assumption (or (not x1028) x29547)
+:assumption (or (not x24675) (not x2414))
+:assumption (or (not x21815) x10519)
+:assumption (or (not x12176) x5528 (not x24987))
+:assumption (or x12809 (not x19949))
+:assumption (or x7238 x22961)
+:assumption (or x20885 x177 (not x7701))
+:assumption (or (not x22068) x3108)
+:assumption (or (not x13265) x17442)
+:assumption (or (not x28928) x522)
+:assumption (or x10362 x20824)
+:assumption (or x5482 x15537)
+:assumption (or x24397 x16959)
+:assumption (or x23672 x26858)
+:assumption (or x7306 (not x25615))
+:assumption (or (not x5528) (not x7211))
+:assumption (or x1201 (not x7506))
+:assumption (or (not x15191) (not x8586) (not x19141) x7697)
+:assumption (or x21759 (not x2246))
+:assumption (or x30228 x21169 (not x4017))
+:assumption (or x2946 x13521)
+:assumption (or (not x5038) (not x8549))
+:assumption (or (not x26775) x11871)
+:assumption (or x3208 x5768)
+:assumption (or (not x24953) x9126)
+:assumption (or x8866 x7680)
+:assumption (or x13910 (not x12846) x7253 (not x25441) (not x1901) x11709 x31438 (not x10435))
+:assumption (or (not x6783) (not x10681))
+:assumption (or x23256 (not x8574))
+:assumption (or x28560 (not x8923) (not x19112) x10166 (not x22526) x5028 x24395 x8258)
+:assumption (or x4111 x19508)
+:assumption (or (not x31836) (not x128))
+:assumption (or (not x563) (not x7697))
+:assumption (or (not x3558) (not x29966))
+:assumption (or x11817 x31134)
+:assumption (or x16280 x2997)
+:assumption (or (not x3705) (not x25820))
+:assumption (or (not x15912) (not x12247))
+:assumption (or (not x13288) (not x18531) (not x15263) x25008 x30568 (not x29445))
+:assumption (or (not x7748) x21571)
+:assumption (or x4299 x12363 x31767 (not x28123) x15214 (not x11285) (not x946) (not x7987) (not x27526))
+:assumption (or (not x11887) x3547)
+:assumption (or x14704 x12730)
+:assumption (or (not x31015) x11136)
+:assumption (or (not x20556) x4357)
+:assumption (or (not x2133) (not x28422) (not x27123) (not x2927) (not x16741))
+:assumption (or (not x26643) (not x18753) (not x9213) (not x11219) (not x26031) (not x5004))
+:assumption (or x31167 (not x12507))
+:assumption (or x3142 x8617)
+:assumption (or x16344 (not x31722))
+:assumption (or (not x4097) (not x15548))
+:assumption (or (not x18801) x16587 x12461 (not x8059))
+:assumption (or (not x31788) x12425)
+:assumption (or (not x25006) (not x26291))
+:assumption (or x22575 (not x10167))
+:assumption (or x5886 (not x8961) (not x16437) (not x15842))
+:assumption (or x29574 (not x30319) x11812 x27171 (not x22205) x20001 x17390 x14278)
+:assumption (or (not x13794) (not x8449))
+:assumption (or (not x7641) x31253)
+:assumption (or x23637 (not x9440) x19888 (not x16802))
+:assumption (or x14639 x16942)
+:assumption (or x30363 x24129 (not x23568) x5626)
+:assumption (or x31178 (not x5190))
+:assumption (or x21369 x10033)
+:assumption (or (not x10478) x21534)
+:assumption (or (not x27084) x6068)
+:assumption (or (not x28541) x22759)
+:assumption (or (not x23653) x9065)
+:assumption (or (not x16305) x13603)
+:assumption (or x8179 x13956)
+:assumption (or x24483 x27109)
+:assumption (or x14396 x17087)
+:assumption (or (not x24069) (not x5895) x4400 (not x19466) (not x24801) x19545)
+:assumption (or x6189 (not x6394))
+:assumption (or (not x23911) (not x21915))
+:assumption (or (not x26723) x6352)
+:assumption (or (not x28657) x16741)
+:assumption (or (not x3482) (not x25858))
+:assumption (or (not x12714) x6639)
+:assumption (or (not x20867) x7789)
+:assumption (or (not x6420) (not x24418))
+:assumption (or x17359 (not x2782))
+:assumption (or x4625 x29402)
+:assumption (or x4920 x21138 x10070 (not x16648))
+:assumption (or (not x18807) (not x6995))
+:assumption (or x11147 (not x20470))
+:assumption (or x8815 (not x24756))
+:assumption (or x27469 x12198)
+:assumption (or (not x15898) (not x23244))
+:assumption (or x31188 (not x11215))
+:assumption (or x18044 (not x2993))
+:assumption (or (not x13657) (not x27458))
+:assumption (or (not x15481) (not x9006))
+:assumption (or (not x5970) x24933)
+:assumption (or (not x6935) x2950)
+:assumption (or x7905 (not x10981))
+:assumption (or x19963 (not x7167))
+:assumption (or (not x16266) x31017)
+:assumption (or (not x29930) (not x18074))
+:assumption (or x8935 x17479 x19286 (not x6923) (not x18133) (not x14981) (not x25798) (not x27449))
+:assumption (or x7877 x26722)
+:assumption (or x8958 x950)
+:assumption (or (not x27507) x26312)
+:assumption (or x18167 (not x5582))
+:assumption (or x30785 x23907)
+:assumption (or (not x7823) x23889)
+:assumption (or (not x2070) (not x24346))
+:assumption (or (not x18698) x13956 x14093)
+:assumption (or (not x5677) (not x12397))
+:assumption (or x30113 x1306)
+:assumption (or (not x17006) x24983)
+:assumption (or x29734 (not x19198))
+:assumption (or (not x4196) x926)
+:assumption (or x3728 x14271)
+:assumption (or (not x31291) x4254)
+:assumption (or (not x2560) (not x31449))
+:assumption (or x4315 x12773)
+:assumption (or x22211 x8368)
+:assumption (or (not x17674) (not x18823))
+:assumption (or (not x5909) x25026)
+:assumption (or x4717 (not x4634))
+:assumption (or x4757 x2862)
+:assumption (or x4139 x1126)
+:assumption (or (not x4673) (not x17200))
+:assumption (or (not x1775) (not x20160))
+:assumption (or (not x8002) x10613)
+:assumption (or (not x6839) (not x218))
+:assumption (or (not x9856) x30926)
+:assumption (or x1885 x4835)
+:assumption (or x6137 (not x31853))
+:assumption (or (not x31817) (not x762))
+:assumption (or x11497 (not x23470))
+:assumption (or x3095 x25568)
+:assumption (or x21663 x22296)
+:assumption (or x27407 (not x4017) x24948 (not x19673))
+:assumption (or x5929 x5006)
+:assumption (or x22978 (not x2832))
+:assumption (or (not x28441) (not x5796))
+:assumption (or (not x2680) x21633)
+:assumption (or (not x908) (not x15342))
+:assumption (or x10577 x10068)
+:assumption (or (not x12176) (not x14018))
+:assumption (or x28708 x16913 x1085)
+:assumption (or (not x12205) x24833)
+:assumption (or (not x2844) x29898)
+:assumption (or x12608 x20187)
+:assumption (or (not x11002) x425)
+:assumption (or (not x18100) (not x27152) (not x6562))
+:assumption (or x25400 x25332)
+:assumption (or (not x21138) (not x24740))
+:assumption (or (not x28912) (not x20106))
+:assumption (or (not x18042) (not x20760))
+:assumption (or (not x7644) (not x11441) (not x5555) x7537 (not x17988))
+:assumption (or (not x14980) (not x30611))
+:assumption (or (not x28940) x348 x18228)
+:assumption (or (not x15402) x23314)
+:assumption (or (not x20944) x7108)
+:assumption (or (not x25889) (not x2051))
+:assumption (or x3870 (not x7287))
+:assumption (or (not x11791) (not x25466))
+:assumption (or (not x480) x3299 (not x22855) (not x2526) (not x3850))
+:assumption (or (not x22469) (not x10535))
+:assumption (or x4041 x26134)
+:assumption (or (not x24408) x5847)
+:assumption (or (not x830) x16351)
+:assumption (or (not x1075) (not x24346))
+:assumption (or (not x22110) (not x8660))
+:assumption (or (not x29959) (not x25761))
+:assumption (or (not x22855) (not x30457) (not x30089))
+:assumption (or (not x1162) x9884)
+:assumption (or x14505 x223)
+:assumption (or (not x8919) (not x26797) x9600 x5162)
+:assumption (or (not x11430) x20590)
+:assumption (or (not x29937) x8602)
+:assumption (or x7072 (not x4867))
+:assumption (or (not x15649) x17980)
+:assumption (or (not x28029) x1393)
+:assumption (or x10149 x11360)
+:assumption (or x22828 (not x29940))
+:assumption (or (not x6225) x3717)
+:assumption (or x14579 x12541)
+:assumption (or (not x12540) (not x9008))
+:assumption (or (not x24794) x21844)
+:assumption (or x16974 x21816)
+:assumption (or x9325 (not x19099))
+:assumption (or x17671 x22856)
+:assumption (or x25366 x6895)
+:assumption (or x15387 (not x5088))
+:assumption (or (not x30742) x11724)
+:assumption (or (not x13747) (not x1353))
+:assumption (or x16749 x12680)
+:assumption (or x25877 (not x15242))
+:assumption (or x16106 x12978)
+:assumption (or (not x30046) x16573)
+:assumption (or x16025 x24544)
+:assumption (or (not x31234) x25606 x14395)
+:assumption (or x1269 (not x19550))
+:assumption (or x13309 x5498)
+:assumption (or x16107 x25366)
+:assumption (or (not x4716) x26863)
+:assumption (or x6851 (not x21298) (not x8002) (not x24681))
+:assumption (or (not x16188) (not x30842))
+:assumption (or (not x29594) x29382)
+:assumption (or (not x649) (not x18111) (not x10895))
+:assumption (or (not x17533) (not x12150))
+:assumption (or x8446 x4865)
+:assumption (or (not x14064) (not x5886))
+:assumption (or (not x21058) x22686)
+:assumption (or x28556 (not x29369))
+:assumption (or x11296 (not x29700))
+:assumption (or (not x19943) x25911)
+:assumption (or (not x5071) (not x4785))
+:assumption (or (not x13631) (not x20402))
+:assumption (or x9109 x21582)
+:assumption (or x8971 (not x27233) x23136 (not x21633))
+:assumption (or (not x13711) (not x24396))
+:assumption (or x22288 x618)
+:assumption (or x8390 x13098 (not x26432) (not x10098))
+:assumption (or x202 (not x7706))
+:assumption (or x6108 x29065)
+:assumption (or x16491 (not x10284))
+:assumption (or (not x26884) (not x2465))
+:assumption (or x19214 x25320)
+:assumption (or x11726 x11488)
+:assumption (or x983 (not x24072) x12260 (not x14296) (not x4726) (not x6466))
+:assumption (or x21749 x5320)
+:assumption (or x17164 (not x22855))
+:assumption (or (not x30138) (not x22203) x17373)
+:assumption (or (not x16166) (not x23695))
+:assumption (or (not x31494) (not x5500))
+:assumption (or (not x18097) (not x7026))
+:assumption (or (not x4335) x9594)
+:assumption (or (not x12176) (not x9008) (not x21481) (not x5528) x23633)
+:assumption (or (not x22996) x16510)
+:assumption (or (not x4228) (not x7019))
+:assumption (or x11244 x13531)
+:assumption (or (not x1031) (not x3063) (not x5360) x16364 (not x3632) x21307 x7302)
+:assumption (or (not x7722) x204)
+:assumption (or (not x9494) x1554)
+:assumption (or (not x19870) (not x16991))
+:assumption (or (not x24896) x5980)
+:assumption (or x18898 x22414)
+:assumption (or x29842 x13111)
+:assumption (or x14185 (not x2078))
+:assumption (or x749 x31145)
+:assumption (or (not x5886) x752)
+:assumption (or x7044 (not x30124))
+:assumption (or (not x12529) (not x6190))
+:assumption (or (not x17628) x3313)
+:assumption (or (not x30138) (not x19438))
+:assumption (or x1300 x6069)
+:assumption (or x26333 x25238)
+:assumption (or (not x15024) (not x14452) x4504 (not x7859) x10336)
+:assumption (or (not x18629) x14503)
+:assumption (or x2306 (not x12913))
+:assumption (or (not x11633) (not x13374))
+:assumption (or (not x25534) (not x4161))
+:assumption (or (not x10209) x2408)
+:assumption (or x29354 x29587)
+:assumption (or (not x10705) (not x30596) x14886 x7897 (not x28924) x29526 (not x10081) x9082 x679)
+:assumption (or x21939 (not x26550))
+:assumption (or x3135 x15957)
+:assumption (or (not x20804) (not x14254))
+:assumption (or (not x19992) (not x11723))
+:assumption (or x10776 x10233)
+:assumption (or (not x3605) (not x17324))
+:assumption (or (not x17541) (not x169))
+:assumption (or (not x20949) x30068)
+:assumption (or x26838 x4226)
+:assumption (or (not x24952) (not x26726))
+:assumption (or (not x24524) x7570)
+:assumption (or x18335 (not x21173))
+:assumption (or x23042 x11270 (not x15649))
+:assumption (or (not x7855) (not x20021))
+:assumption (or x6837 x12807)
+:assumption (or x11517 (not x8701))
+:assumption (or x1528 x19471)
+:assumption (or (not x29606) (not x26150) (not x9137))
+:assumption (or (not x17359) (not x27263))
+:assumption (or (not x5618) x28280)
+:assumption (or (not x14348) (not x11791))
+:assumption (or x12294 x7821)
+:assumption (or x2380 (not x17351))
+:assumption (or (not x5428) x15202)
+:assumption (or (not x28364) x5528 x30652)
+:assumption (or x17933 x15974)
+:assumption (or (not x9029) x17799)
+:assumption (or x4115 (not x11489))
+:assumption (or (not x8861) (not x7778))
+:assumption (or (not x3494) x18043)
+:assumption (or x13213 (not x18553) x13490)
+:assumption (or x20261 x7670)
+:assumption (or x19889 (not x19133))
+:assumption (or x2144 x26447)
+:assumption (or (not x4865) (not x24412) (not x26354))
+:assumption (or (not x13868) x5722)
+:assumption (or x8618 (not x1838))
+:assumption (or (not x17147) (not x17191) (not x10314) (not x14361) x11930 (not x12366) x16316 (not x4392) (not x23482))
+:assumption (or x15551 x6689)
+:assumption (or (not x13141) x5528)
+:assumption (or (not x4861) (not x29494))
+:assumption (or (not x10724) x27807)
+:assumption (or (not x9008) x16207)
+:assumption (or x4457 (not x2988))
+:assumption (or (not x3661) (not x12325))
+:assumption (or (not x29447) (not x31139))
+:assumption (or (not x5153) (not x22550) (not x25911) (not x16180))
+:assumption (or (not x21556) x19077)
+:assumption (or x11003 x15683)
+:assumption (or (not x27086) x19378)
+:assumption (or x19040 x962)
+:assumption (or (not x14608) (not x14839))
+:assumption (or x27379 (not x4026))
+:assumption (or x3300 (not x1653) (not x5528) (not x5858) (not x9673) x15268)
+:assumption (or (not x115) x1836)
+:assumption (or x21711 x29863)
+:assumption (or (not x11614) (not x22853) (not x25212) x31057 x17439 x18194 (not x2534) x18668)
+:assumption (or x22628 x1195)
+:assumption (or x16696 x28085 x8532 (not x25071))
+:assumption (or x9889 x13059)
+:assumption (or (not x30694) x13245)
+:assumption (or (not x16699) (not x11169))
+:assumption (or x12233 x1898 (not x2022) x13927)
+:assumption (or x18619 (not x10710))
+:assumption (or x25039 x709)
+:assumption (or (not x8685) x21011)
+:assumption (or (not x17097) x11389)
+:assumption (or x26670 x19403)
+:assumption (or (not x6952) (not x17787) x2127)
+:assumption (or (not x18113) x5044)
+:assumption (or x6133 x16510 (not x1438) (not x8925) (not x5797))
+:assumption (or x15036 x15016 x951 x21416)
+:assumption (or x626 (not x10747))
+:assumption (or x22019 x28527)
+:assumption (or (not x24316) x23099)
+:assumption (or x30617 (not x5761))
+:assumption (or x14087 (not x11742))
+:assumption (or (not x6951) x6149 x25147 x1021)
+:assumption (or (not x17233) x26634)
+:assumption (or (not x1830) (not x11505) (not x30806))
+:assumption (or (not x7705) x30522)
+:assumption (or x13956 x7294)
+:assumption (or (not x5946) (not x3724))
+:assumption (or x1119 (not x10525))
+:assumption (or (not x16510) (not x31751))
+:assumption (or x11654 (not x27300))
+:assumption (or (not x3409) x27513 (not x7370))
+:assumption (or (not x29601) x21106)
+:assumption (or (not x14948) x7565)
+:assumption (or (not x1771) (not x15522) (not x31439) x12000)
+:assumption (or (not x601) x23267)
+:assumption (or x12334 x27537)
+:assumption (or (not x30984) (not x24042))
+:assumption (or (not x17225) (not x15007) (not x2597) (not x16003))
+:assumption (or x3177 (not x21117))
+:assumption (or x4672 x1942)
+:assumption (or (not x12427) x18970)
+:assumption (or (not x18847) x20547)
+:assumption (or (not x7251) x2700 x10266 x2490)
+:assumption (or x15775 x17147)
+:assumption (or (not x23046) x19750)
+:assumption (or (not x3001) x17195)
+:assumption (or (not x18393) x13675)
+:assumption (or x6160 (not x23599))
+:assumption (or (not x30632) (not x23743))
+:assumption (or x15919 x24640)
+:assumption (or x9951 x29288)
+:assumption (or x31006 (not x22896) (not x18594) (not x14863))
+:assumption (or x15543 (not x26834))
+:assumption (or x20641 (not x12219))
+:assumption (or (not x2595) (not x3680) (not x7280) x9008 x18933 (not x28475))
+:assumption (or x18360 x23949)
+:assumption (or (not x26988) (not x16784) x5625 (not x4678))
+:assumption (or (not x11137) (not x4137))
+:assumption (or (not x28126) (not x25663) (not x21013) x19345 x29488)
+:assumption (or (not x4338) (not x5166))
+:assumption (or x23769 x7308)
+:assumption (or x10156 x24711)
+:assumption (or (not x19465) x18552)
+:assumption (or x9351 x70 x8367)
+:assumption (or (not x15879) (not x23052))
+:assumption (or (not x1366) (not x30810))
+:assumption (or (not x14214) x20304)
+:assumption (or x21032 (not x18859) (not x21507))
+:assumption (or x24824 (not x31894))
+:assumption (or x6874 (not x7094))
+:assumption (or x18495 x20562 (not x17999) (not x2516) x30966)
+:assumption (or x23339 (not x22669))
+:assumption (or x16267 (not x13956))
+:assumption (or (not x22949) (not x16449))
+:assumption (or x16491 (not x5812))
+:assumption (or x21444 (not x4919))
+:assumption (or x27593 x8542)
+:assumption (or (not x18069) (not x2392) (not x3494) (not x11716))
+:assumption (or (not x20325) x27983 x12242 (not x25696))
+:assumption (or x15983 (not x4482))
+:assumption (or (not x16791) (not x25783))
+:assumption (or (not x23189) x1521)
+:assumption (or x20876 (not x21872))
+:assumption (or (not x11963) (not x12086) x17855 x30137)
+:assumption (or (not x179) x28375)
+:assumption (or x23061 x20395)
+:assumption (or x3419 (not x5223) (not x6896))
+:assumption (or x859 (not x1354))
+:assumption (or x1337 x8602)
+:assumption (or (not x2249) (not x3094))
+:assumption (or x821 x19901)
+:assumption (or x30374 x7719)
+:assumption (or (not x398) (not x31829))
+:assumption (or (not x27876) (not x956))
+:assumption (or x2806 x3961)
+:assumption (or x13029 (not x18455))
+:assumption (or x1869 x16741)
+:assumption (or (not x19642) x6277)
+:assumption (or x23249 x30385)
+:assumption (or (not x23215) (not x22923))
+:assumption (or (not x11961) x18165)
+:assumption (or x31776 (not x20344))
+:assumption (or x29312 x31603)
+:assumption (or (not x21026) (not x8031) x25577)
+:assumption (or x1745 (not x3435))
+:assumption (or x16554 (not x288))
+:assumption (or (not x6175) (not x1207))
+:assumption (or x7762 (not x11477))
+:assumption (or x4715 x3673)
+:assumption (or x24309 (not x16231))
+:assumption (or (not x21806) x2269)
+:assumption (or (not x11433) x18922)
+:assumption (or x31345 (not x26685))
+:assumption (or x28342 (not x21403))
+:assumption (or (not x26099) x5029)
+:assumption (or x1918 x23657)
+:assumption (or x1475 (not x11318))
+:assumption (or (not x12575) (not x10586))
+:assumption (or (not x4901) x28893)
+:assumption (or x4790 x9413)
+:assumption (or (not x23244) x23275 x15550 x26581 x5816)
+:assumption (or (not x25836) (not x142) (not x2107))
+:assumption (or (not x3101) (not x2258))
+:assumption (or x13979 x4064)
+:assumption (or x23244 x18394)
+:assumption (or (not x13374) (not x12112))
+:assumption (or (not x27497) x19543)
+:assumption (or x9394 x22215)
+:assumption (or x28524 x23244)
+:assumption (or x431 x17827)
+:assumption (or (not x15034) x9666)
+:assumption (or (not x13068) x27332)
+:assumption (or x26046 x17116 x20573)
+:assumption (or x23244 x28491)
+:assumption (or (not x1615) x23907)
+:assumption (or x20909 x29844)
+:assumption (or x17430 x21653)
+:assumption (or (not x2149) (not x26897))
+:assumption (or x1033 (not x18859) (not x27697))
+:assumption (or (not x12368) (not x23845) x8636 (not x8138))
+:assumption (or x14774 (not x24559))
+:assumption (or (not x25659) (not x28651) (not x15254))
+:assumption (or x2701 x22447)
+:assumption (or x30431 (not x12346))
+:assumption (or x29727 x10609)
+:assumption (or (not x19891) x29659)
+:assumption (or (not x29872) (not x6653))
+:assumption (or (not x2541) x11120)
+:assumption (or x252 (not x10784))
+:assumption (or (not x29070) x24792)
+:assumption (or x4312 x31598)
+:assumption (or x9531 (not x22200))
+:assumption (or x1559 x26659)
+:assumption (or x19383 x11443)
+:assumption (or x714 (not x15963))
+:assumption (or (not x7933) x8002 (not x31361))
+:assumption (or x17747 (not x15612))
+:assumption (or (not x23966) x21298)
+:assumption (or x6127 (not x30269))
+:assumption (or x2941 x3791 x8002)
+:assumption (or (not x27459) (not x28659))
+:assumption (or x16121 x30083)
+:assumption (or (not x1408) x15649 (not x17934))
+:assumption (or x16510 (not x7243))
+:assumption (or (not x22052) (not x9462))
+:assumption (or x9531 x12848)
+:assumption (or (not x21353) x22019 (not x15663))
+:assumption (or (not x15255) (not x21898))
+:assumption (or (not x30208) (not x27511) x18030 x9713)
+:assumption (or x8307 x6125 x7378 (not x3061) (not x28431) x15805 x9016 (not x15171))
+:assumption (or (not x25664) x3067)
+:assumption (or (not x21248) (not x23545))
+:assumption (or (not x4491) x183 (not x20621) (not x17709) x19485 x3972)
+:assumption (or x23282 (not x7308))
+:assumption (or x28737 x20408)
+:assumption (or (not x9082) (not x7897))
+:assumption (or (not x23074) (not x27397))
+:assumption (or x8864 (not x7161))
+:assumption (or (not x28120) (not x3090) (not x827) x7986 x14516 x22634 (not x7728) x25275)
+:assumption (or x1495 (not x21860))
+:assumption (or (not x16512) (not x26698))
+:assumption (or (not x20291) x26800 x30113)
+:assumption (or x21311 x7404)
+:assumption (or x27753 x23356)
+:assumption (or (not x28857) x4500)
+:assumption (or (not x11799) (not x27040) (not x20644))
+:assumption (or (not x9008) x8494 (not x10135))
+:assumption (or x21298 x9798)
+:assumption (or x20486 (not x31118))
+:assumption (or (not x14449) (not x26244))
+:assumption (or (not x9489) x9077)
+:assumption (or (not x7967) x23383)
+:assumption (or (not x1582) x18787)
+:assumption (or (not x6550) x25485 (not x5353))
+:assumption (or (not x26257) x17586)
+:assumption (or (not x29474) (not x3677))
+:assumption (or x13956 (not x23976))
+:assumption (or (not x30309) x15655)
+:assumption (or x16579 (not x16153))
+:assumption (or (not x6372) (not x20257) (not x8897) x2401 (not x25705) x24853)
+:assumption (or (not x12045) x22537)
+:assumption (or (not x25104) (not x13576) x1718)
+:assumption (or (not x6381) (not x1547) (not x8847))
+:assumption (or (not x9399) (not x27362))
+:assumption (or (not x16601) x30113)
+:assumption (or x15451 x5174)
+:assumption (or x1788 x28943)
+:assumption (or (not x10513) (not x26380))
+:assumption (or (not x15100) (not x20665))
+:assumption (or (not x5801) x12617 (not x25659))
+:assumption (or x964 (not x17415))
+:assumption (or x6564 x14557)
+:assumption (or (not x8596) x11668)
+:assumption (or (not x507) (not x6109))
+:assumption (or (not x24348) x16830)
+:assumption (or (not x20261) (not x17522))
+:assumption (or x13481 (not x11318))
+:assumption (or x15337 (not x9482))
+:assumption (or x19730 (not x2827))
+:assumption (or x27484 x25064)
+:assumption (or x16510 (not x26885) x20828 (not x16802) x30787 (not x142) (not x21815))
+:assumption (or x906 x8860)
+:assumption (or (not x17335) (not x29909))
+:assumption (or x30284 (not x31313))
+:assumption (or (not x5206) (not x16867))
+:assumption (or (not x21298) x7500)
+:assumption (or (not x30673) x16822)
+:assumption (or (not x26369) x18970)
+:assumption (or (not x30549) (not x2607))
+:assumption (or (not x5606) x7871)
+:assumption (or (not x8994) (not x9869))
+:assumption (or x20563 (not x1470))
+:assumption (or x19038 (not x10571) x21925 (not x2156))
+:assumption (or (not x5757) (not x19180))
+:assumption (or x9137 x26150)
+:assumption (or (not x6890) (not x22141))
+:assumption (or (not x13246) (not x9999))
+:assumption (or x448 x12441)
+:assumption (or x28155 x10482)
+:assumption (or x25801 x11550)
+:assumption (or (not x15912) (not x1610))
+:assumption (or (not x1570) (not x23039))
+:assumption (or x8905 (not x25784))
+:assumption (or x891 x67)
+:assumption (or x23566 x12636)
+:assumption (or (not x26919) (not x30556))
+:assumption (or (not x28131) x22164)
+:assumption (or (not x14165) x28314)
+:assumption (or (not x19926) (not x25054))
+:assumption (or (not x21123) (not x26697))
+:assumption (or (not x9792) (not x29082))
+:assumption (or (not x13576) (not x9823))
+:assumption (or (not x27081) (not x22160))
+:assumption (or (not x16732) (not x11738))
+:assumption (or x26786 (not x13381))
+:assumption (or x13448 x3487)
+:assumption (or x4270 (not x28699))
+:assumption (or (not x8002) (not x18624))
+:assumption (or (not x26919) (not x19816))
+:assumption (or x28966 (not x18253))
+:assumption (or x109 (not x14723))
+:assumption (or x29533 (not x3899))
+:assumption (or x7376 x15625 (not x15077) x18638 x23870)
+:assumption (or (not x17497) (not x12251))
+:assumption (or x16925 x28026)
+:assumption (or (not x18272) (not x28402))
+:assumption (or x26493 x3596 (not x3547) x25184 x25423 x11887 x18785)
+:assumption (or (not x31384) (not x12436))
+:assumption (or (not x8688) (not x4276))
+:assumption (or (not x4559) (not x27075) x25493 (not x27306))
+:assumption (or x30113 x5689)
+:assumption (or (not x17493) x16325)
+:assumption (or (not x15581) (not x26670))
+:assumption (or (not x28030) (not x22849))
+:assumption (or (not x20354) (not x25600))
+:assumption (or (not x26059) (not x25163))
+:assumption (or x30303 (not x14936))
+:assumption (or x1187 x3204)
+:assumption (or x25659 x6051 x21892)
+:assumption (or x9692 (not x30088) (not x22548) x10924)
+:assumption (or (not x27018) (not x18333))
+:assumption (or x26899 (not x4077) (not x24011))
+:assumption (or x20489 x4928)
+:assumption (or (not x6258) x17225)
+:assumption (or (not x17968) x2813)
+:assumption (or x21521 x20559)
+:assumption (or (not x15555) x13799)
+:assumption (or x5551 (not x7087))
+:assumption (or x23026 x27791)
+:assumption (or (not x27691) x26756 x31704 x11875 x31872 (not x23982))
+:assumption (or (not x7208) (not x24190))
+:assumption (or (not x4480) (not x18976))
+:assumption (or (not x11792) x3880)
+:assumption (or x16136 x20949 (not x12045))
+:assumption (or x809 (not x7762) (not x29834) (not x11009) x29218 x11477)
+:assumption (or (not x23559) x26732)
+:assumption (or (not x13748) (not x17648))
+:assumption (or (not x14917) (not x13449))
+:assumption (or (not x226) (not x21026))
+:assumption (or (not x11626) (not x12253))
+:assumption (or (not x12345) (not x3921))
+:assumption (or x31920 x24402)
+:assumption (or x5510 (not x26704) x6547 x29594 (not x29382))
+:assumption (or (not x17443) (not x14186))
+:assumption (or x12361 (not x14) x17769 x4822)
+:assumption (or (not x16557) x16304)
+:assumption (or x19180 x5757 x7400)
+:assumption (or x4029 (not x24387))
+:assumption (or x4086 (not x31237) (not x28283) x25376)
+:assumption (or x23394 x9008 (not x27894))
+:assumption (or x10413 (not x2276))
+:assumption (or x4204 (not x17534) (not x6594) x110)
+:assumption (or x9047 x12586 x5855 (not x27052) x31829)
+:assumption (or (not x10711) x13796 (not x1654) x9935 (not x25399))
+:assumption (or x7724 (not x31147))
+:assumption (or (not x18170) (not x25292))
+:assumption (or x17200 x4673)
+:assumption (or (not x1335) (not x15254))
+:assumption (or x25355 (not x18116))
+:assumption (or (not x10722) (not x19557))
+:assumption (or (not x17546) (not x2561) (not x30148) (not x22178))
+:assumption (or x14455 x20237)
+:assumption (or (not x28225) (not x30429))
+:assumption (or x28319 (not x30899))
+:assumption (or x7200 (not x25078))
+:assumption (or (not x2667) x5516)
+:assumption (or x19786 (not x13848) (not x4487))
+:assumption (or (not x5282) x20718)
+:assumption (or x4514 x30204 x3409)
+:assumption (or x15987 x27784)
+:assumption (or x4865 x22465)
+:assumption (or x28219 x21129)
+:assumption (or x30595 x21349)
+:assumption (or (not x31659) (not x3585) (not x16127) (not x29722) (not x5528) x6385)
+:assumption (or (not x12035) (not x8002))
+:assumption (or x27240 (not x30058) x26897)
+:assumption (or x4149 (not x4297))
+:assumption (or x17997 (not x161))
+:assumption (or (not x30436) (not x16409))
+:assumption (or (not x1407) x26371 (not x23263))
+:assumption (or (not x18098) (not x18601))
+:assumption (or x13767 x4262 x9198 (not x5003))
+:assumption (or (not x24468) x27658)
+:assumption (or x3228 x4837)
+:assumption (or x29755 x18806)
+:assumption (or (not x16032) (not x29325))
+:assumption (or (not x20401) (not x4685) (not x16901) x18286)
+:assumption (or x26744 (not x13682) x1393)
+:assumption (or (not x17486) (not x29602))
+:assumption (or (not x19500) x490 (not x20016) x1393 x10123 (not x3134) (not x1455) x18557)
+:assumption (or x23958 x3731)
+:assumption (or (not x9598) (not x7743) x8548)
+:assumption (or (not x14448) x25568)
+:assumption (or (not x13994) x31762 (not x30227))
+:assumption (or (not x28929) (not x9385))
+:assumption (or x29515 (not x23018))
+:assumption (or (not x15846) x29812)
+:assumption (or x8131 x20112)
+:assumption (or x20096 (not x14721))
+:assumption (or (not x490) (not x18557))
+:assumption (or x15018 x26198)
+:assumption (or (not x10566) x9008)
+:assumption (or (not x4202) x10567)
+:assumption (or x23586 (not x5874))
+:assumption (or x3023 x20077)
+:assumption (or x21465 x26751)
+:assumption (or x16074 (not x14737) (not x26797) (not x1621))
+:assumption (or (not x20923) x15712)
+:assumption (or (not x29077) (not x6308))
+:assumption (or (not x8154) (not x21298) (not x28464))
+:assumption (or (not x31460) (not x278))
+:assumption (or (not x348) x26080 (not x13176) x11621 x20351)
+:assumption (or x30992 x1556)
+:assumption (or (not x22374) x26181)
+:assumption (or x31343 x2867)
+:assumption (or (not x12739) x31895)
+:assumption (or x22937 x17682 x2052 x11212)
+:assumption (or (not x12628) x24461)
+:assumption (or (not x28541) (not x15721))
+:assumption (or x23335 (not x18860))
+:assumption (or (not x23370) x29099)
+:assumption (or x16426 x13956 x18840)
+:assumption (or x5773 (not x21210))
+:assumption (or x30757 (not x23244))
+:assumption (or x13020 x27290)
+:assumption (or (not x25659) (not x30697))
+:assumption (or x7638 (not x29289))
+:assumption (or (not x2335) (not x28137))
+:assumption (or x14138 (not x26951))
+:assumption (or (not x10650) (not x2850))
+:assumption (or x20949 (not x19806))
+:assumption (or x15218 (not x20627) x8229 x24438)
+:assumption (or (not x18072) x29534)
+:assumption (or (not x4636) (not x6088))
+:assumption (or (not x22198) x3932)
+:assumption (or (not x4217) x2834)
+:assumption (or x30474 (not x5999))
+:assumption (or x23546 x1959)
+:assumption (or x12432 (not x21857))
+:assumption (or (not x7207) (not x23149))
+:assumption (or x30759 x10302)
+:assumption (or x742 x16784)
+:assumption (or x22876 (not x10139))
+:assumption (or (not x10356) (not x4588))
+:assumption (or (not x2075) x23716)
+:assumption (or x5041 x23231)
+:assumption (or (not x26406) (not x28083))
+:assumption (or (not x19323) (not x15151))
+:assumption (or (not x14306) (not x18669) (not x13126) x282 (not x29906))
+:assumption (or x2970 x9506)
+:assumption (or x25285 x25826 (not x2843) (not x19036))
+:assumption (or (not x29325) x3890)
+:assumption (or x19613 (not x1904))
+:assumption (or x16965 x24288)
+:assumption (or x20505 x4214 (not x9008))
+:assumption (or (not x28518) (not x27203))
+:assumption (or (not x30006) x8772)
+:assumption (or (not x2308) x16653)
+:assumption (or x19999 x25659)
+:assumption (or x2527 (not x24327))
+:assumption (or (not x26674) (not x21019))
+:assumption (or x21736 x26511 (not x22829) x16474)
+:assumption (or (not x2821) x30402)
+:assumption (or x29442 x17240)
+:assumption (or (not x14658) (not x892))
+:assumption (or x436 (not x31454))
+:assumption (or x12035 (not x9036))
+:assumption (or (not x4913) (not x18637))
+:assumption (or (not x12256) (not x17331))
+:assumption (or x13956 (not x27669) (not x27590))
+:assumption (or x15857 x21874)
+:assumption (or x1739 (not x31606))
+:assumption (or (not x19258) x28349 x25618 x3168)
+:assumption (or x1463 (not x30751))
+:assumption (or (not x1101) x7789)
+:assumption (or x14040 x26977)
+:assumption (or x16025 (not x17304) x12913)
+:assumption (or x9394 (not x16419))
+:assumption (or x4251 x12801)
+:assumption (or x31044 (not x26308))
+:assumption (or (not x11408) x25659)
+:assumption (or (not x26480) (not x30518))
+:assumption (or x10699 x13576)
+:assumption (or (not x9359) (not x20425))
+:assumption (or (not x24930) x23427)
+:assumption (or (not x622) x10533)
+:assumption (or x10556 x918)
+:assumption (or (not x20649) x12060)
+:assumption (or (not x16237) x16823)
+:assumption (or (not x22757) (not x22434))
+:assumption (or x29485 x20389)
+:assumption (or x25771 x9708)
+:assumption (or x2654 (not x1638) (not x31483) x18041 x8319 (not x18399) (not x4353) x30555 x8464)
+:assumption (or (not x18386) (not x10170))
+:assumption (or (not x14278) (not x20001))
+:assumption (or (not x1731) (not x5555))
+:assumption (or x6080 (not x25606))
+:assumption (or x30470 (not x9246))
+:assumption (or (not x18393) (not x2525))
+:assumption (or x25274 (not x1722))
+:assumption (or (not x17494) x30370)
+:assumption (or x17804 (not x11177) x16129 x19166 x15273)
+:assumption (or x3078 x7297)
+:assumption (or x2314 x1129)
+:assumption (or (not x26084) x9735)
+:assumption (or (not x11075) (not x6663))
+:assumption (or (not x8002) (not x16440) x23244)
+:assumption (or (not x29947) x23077)
+:assumption (or (not x8602) (not x9426))
+:assumption (or (not x16097) (not x20656))
+:assumption (or (not x24568) (not x11462))
+:assumption (or (not x12888) x14643)
+:assumption (or (not x25993) (not x23881))
+:assumption (or x7773 (not x27544))
+:assumption (or (not x20940) (not x5528))
+:assumption (or x964 x5568)
+:assumption (or (not x25960) x9491)
+:assumption (or (not x20917) x12002 (not x2352) x4063)
+:assumption (or (not x775) (not x19674) (not x29312))
+:assumption (or (not x5034) x7790)
+:assumption (or (not x17327) x23162)
+:assumption (or (not x2485) x14963)
+:assumption (or x12560 (not x21432) x1243 (not x1633))
+:assumption (or x11957 x21724)
+:assumption (or x25203 (not x218))
+:assumption (or (not x31852) x1370)
+:assumption (or x21709 x21878 x6479)
+:assumption (or (not x18623) (not x8506) x30113)
+:assumption (or (not x25826) (not x26650))
+:assumption (or x6286 x2943)
+:assumption (or x28393 x15248)
+:assumption (or (not x17440) x2060)
+:assumption (or x21584 x9444)
+:assumption (or (not x10869) (not x21982))
+:assumption (or x10516 x24416)
+:assumption (or (not x29205) (not x14950))
+:assumption (or (not x8741) x12200)
+:assumption (or (not x8136) (not x12578) x30348)
+:assumption (or x27330 x14991)
+:assumption (or x1389 x12155)
+:assumption (or (not x2116) (not x4599) (not x172) (not x3374) x8081 x28499)
+:assumption (or x6027 x1457)
+:assumption (or x27040 (not x11290))
+:assumption (or (not x7364) x13525 (not x5679))
+:assumption (or x6421 x511)
+:assumption (or x10661 (not x7813))
+:assumption (or x3736 x25122)
+:assumption (or (not x25339) (not x4249))
+:assumption (or (not x16771) x748)
+:assumption (or x15219 x25366 x20402 (not x10027))
+:assumption (or (not x19103) x21828)
+:assumption (or x7714 x6433 x5223)
+:assumption (or (not x29255) (not x3222))
+:assumption (or (not x25659) x21729 x7405)
+:assumption (or x29736 x14532)
+:assumption (or x1154 x9275)
+:assumption (or x2286 (not x405))
+:assumption (or (not x13641) x6115)
+:assumption (or (not x8147) x5528)
+:assumption (or x3251 (not x29693))
+:assumption (or (not x21736) x22829)
+:assumption (or x376 x13552)
+:assumption (or x1582 x452)
+:assumption (or x29390 (not x5526))
+:assumption (or (not x5422) (not x26850) x30279 x7092)
+:assumption (or (not x5593) x23864 x31268 x1045 (not x28885) (not x2855) (not x9928))
+:assumption (or x8969 (not x15421))
+:assumption (or (not x27159) x24355)
+:assumption (or (not x4958) (not x24104))
+:assumption (or (not x30221) x9324)
+:assumption (or (not x10356) (not x15396))
+:assumption (or (not x4471) (not x17417))
+:assumption (or (not x5388) x30811)
+:assumption (or x25875 x21298)
+:assumption (or (not x9372) x17698)
+:assumption (or (not x1321) x28895)
+:assumption (or (not x6013) (not x6686))
+:assumption (or x2592 (not x22330))
+:assumption (or x7887 (not x31051))
+:assumption (or (not x8757) (not x359) x16025)
+:assumption (or x20239 (not x6651))
+:assumption (or (not x8622) (not x20134))
+:assumption (or (not x11400) x28616)
+:assumption (or x16521 (not x4291))
+:assumption (or (not x21687) (not x13296))
+:assumption (or (not x16374) x13358)
+:assumption (or (not x307) x3435)
+:assumption (or (not x3882) x15208)
+:assumption (or (not x4741) (not x24010))
+:assumption (or (not x11542) x23980)
+:assumption (or (not x19017) (not x22409))
+:assumption (or (not x19214) x15408 (not x406))
+:assumption (or (not x22284) (not x8010))
+:assumption (or (not x28369) x13803)
+:assumption (or (not x9129) x7346)
+:assumption (or (not x20554) (not x13930))
+:assumption (or x25764 (not x25375) x31917 (not x9531))
+:assumption (or x30042 x9495)
+:assumption (or (not x12018) (not x20140))
+:assumption (or (not x5475) (not x13956) (not x23244) (not x8002))
+:assumption (or x22617 x25901)
+:assumption (or (not x19761) x29089)
+:assumption (or (not x21653) (not x18562) x12913)
+:assumption (or x7718 x15238)
+:assumption (or (not x19135) (not x23858))
+:assumption (or (not x14455) (not x23888))
+:assumption (or x19364 (not x21298))
+:assumption (or x23104 (not x8353))
+:assumption (or x20105 (not x19711))
+:assumption (or x5768 (not x5784))
+:assumption (or (not x15474) (not x31157))
+:assumption (or (not x21129) x4559)
+:assumption (or x13956 x1266)
+:assumption (or (not x11695) x5158)
+:assumption (or (not x8586) x16545)
+:assumption (or (not x497) (not x6893))
+:assumption (or (not x12733) x1171)
+:assumption (or (not x6643) (not x12005))
+:assumption (or (not x11633) (not x15614))
+:assumption (or x25820 x3705)
+:assumption (or (not x18399) x6499)
+:assumption (or x14642 x22921 (not x8962) (not x24722))
+:assumption (or (not x21754) x288)
+:assumption (or (not x24324) x24856)
+:assumption (or (not x8334) (not x13189))
+:assumption (or (not x30957) (not x1858) (not x27957))
+:assumption (or (not x3068) x4604)
+:assumption (or x28960 x18854 x184 (not x29459) x22707 x6421 (not x29462))
+:assumption (or x20060 (not x30510))
+:assumption (or (not x14839) x17665 x28423)
+:assumption (or (not x22700) (not x8002))
+:assumption (or x31027 (not x19975))
+:assumption (or x28749 x15459)
+:assumption (or (not x31441) (not x2844))
+:assumption (or (not x30075) (not x7077))
+:assumption (or x8926 (not x9857))
+:assumption (or x14993 (not x23244))
+:assumption (or (not x30475) (not x8718))
+:assumption (or (not x28853) (not x28161))
+:assumption (or (not x4167) x17795)
+:assumption (or (not x29722) x15976)
+:assumption (or (not x29410) x26897 x1402)
+:assumption (or x23099 (not x1236))
+:assumption (or (not x13355) x13919)
+:assumption (or (not x13407) x24659)
+:assumption (or (not x6528) x31297)
+:assumption (or (not x21351) x20079)
+:assumption (or (not x29803) (not x7393) (not x18729) x21338)
+:assumption (or x13574 (not x16765))
+:assumption (or (not x19155) (not x25478))
+:assumption (or (not x15625) (not x23870))
+:assumption (or (not x11105) x31796)
+:assumption (or x2819 (not x393))
+:assumption (or x28487 (not x7552))
+:assumption (or x9543 x18042)
+:assumption (or (not x28717) x7502)
+:assumption (or x24448 (not x3551))
+:assumption (or (not x1493) x18623)
+:assumption (or (not x21922) (not x19428))
+:assumption (or (not x16268) x31348 (not x2135) x6855 x8002 (not x15634))
+:assumption (or x4541 x11961)
+:assumption (or (not x26044) (not x18800))
+:assumption (or (not x19519) (not x24050) (not x18927))
+:assumption (or x21168 (not x19265))
+:assumption (or (not x28344) x7843)
+:assumption (or (not x22712) x3178)
+:assumption (or (not x10179) x4121)
+:assumption (or x26542 x19713)
+:assumption (or x4167 x6351 (not x6353) (not x17795) (not x30042))
+:assumption (or (not x23362) (not x27911) x9099 x4062)
+:assumption (or x12741 x19711 x7676)
+:assumption (or x18483 x16365)
+:assumption (or (not x24627) (not x3372))
+:assumption (or x22388 x27111 x18046 x3370)
+:assumption (or x30205 (not x30208))
+:assumption (or x20078 x22878)
+:assumption (or x15472 (not x7505))
+:assumption (or (not x4526) x27672 x922 x13508 (not x20936))
+:assumption (or x24257 (not x7020) x31617)
+:assumption (or (not x19600) x25818)
+:assumption (or (not x766) (not x26033))
+:assumption (or x13031 (not x15836))
+:assumption (or (not x30500) (not x2845))
+:assumption (or x14367 (not x24123))
+:assumption (or x25659 x27375 x475)
+:assumption (or x23778 x8201)
+:assumption (or (not x25366) x11715)
+:assumption (or (not x24159) (not x22693))
+:assumption (or (not x6857) x7241 x18 (not x17440) (not x28563) (not x8967) x28612)
+:assumption (or x26631 x28181)
+:assumption (or x2778 x20258)
+:assumption (or (not x22224) (not x24952))
+:assumption (or x442 x15489)
+:assumption (or x376 (not x31843))
+:assumption (or x14372 (not x7239))
+:assumption (or (not x24867) (not x3001))
+:assumption (or (not x5426) (not x9301))
+:assumption (or x16648 x31611 x29965 x31799)
+:assumption (or (not x11921) (not x9971) (not x2738) (not x12213) (not x7956) (not x17349))
+:assumption (or (not x17684) x30118)
+:assumption (or x30593 x28049 (not x14078) x23000 x22756 (not x9963) (not x12905))
+:assumption (or x19488 (not x13132))
+:assumption (or (not x31815) x433)
+:assumption (or x31255 x4773)
+:assumption (or (not x16634) (not x1634))
+:assumption (or x16926 x21675)
+:assumption (or (not x26663) (not x5525))
+:assumption (or x17824 (not x14591))
+:assumption (or x23553 x1269)
+:assumption (or (not x21051) (not x13576))
+:assumption (or x15917 x25924)
+:assumption (or (not x5875) (not x758))
+:assumption (or (not x227) (not x6763))
+:assumption (or (not x3540) x26623)
+:assumption (or (not x13371) x28004)
+:assumption (or (not x21778) x1206)
+:assumption (or x17559 x17940)
+:assumption (or x19898 (not x17243) (not x11281) (not x10227))
+:assumption (or (not x4963) (not x11205))
+:assumption (or x1218 (not x18069))
+:assumption (or (not x21207) (not x21061) (not x17225))
+:assumption (or x20534 (not x24188))
+:assumption (or (not x30139) x29860)
+:assumption (or x30138 x20719)
+:assumption (or x2866 (not x27348))
+:assumption (or x15726 x3413)
+:assumption (or x10587 (not x11199))
+:assumption (or x18315 (not x15836))
+:assumption (or x17033 (not x24747) x4906 x1044 x28213 (not x20881))
+:assumption (or x492 (not x20417) x23326 x7198)
+:assumption (or x14531 (not x19948) x11808 x22127 x9454 x23484)
+:assumption (or (not x20064) (not x12578))
+:assumption (or (not x9307) (not x16745))
+:assumption (or (not x28552) x1879)
+:assumption (or (not x24303) (not x25177))
+:assumption (or x30801 (not x9477))
+:assumption (or (not x31284) (not x8825))
+:assumption (or (not x15061) x24194 (not x1457) (not x13036) (not x5298) x24958 (not x29443))
+:assumption (or x6884 x827 x27914)
+:assumption (or (not x26149) (not x28305))
+:assumption (or (not x416) (not x23781))
+:assumption (or x29892 x7345)
+:assumption (or (not x19992) x26094 x26892)
+:assumption (or (not x31656) (not x17785))
+:assumption (or x16690 (not x241))
+:assumption (or x2909 (not x6393))
+:assumption (or (not x8307) x19271)
+:assumption (or (not x1542) (not x31454))
+:assumption (or (not x2975) (not x7229))
+:assumption (or (not x5795) (not x8759))
+:assumption (or x14218 (not x4391))
+:assumption (or (not x29309) x7424)
+:assumption (or x21938 (not x21683))
+:assumption (or x30138 x22203)
+:assumption (or x1361 x31829)
+:assumption (or (not x20951) (not x30227) x9453)
+:assumption (or x19864 x574)
+:assumption (or x11289 x25770)
+:assumption (or x19654 (not x12353) (not x4451))
+:assumption (or x1924 (not x10732))
+:assumption (or (not x20325) (not x3793))
+:assumption (or (not x3264) x5952 (not x11462) (not x23897))
+:assumption (or (not x25711) (not x3264))
+:assumption (or (not x17075) (not x24533))
+:assumption (or (not x6914) (not x19027))
+:assumption (or x8602 x25058)
+:assumption (or (not x1381) (not x17593))
+:assumption (or x11265 x24345)
+:assumption (or x2104 x2136)
+:assumption (or x13963 x20584)
+:assumption (or x6096 (not x20911) (not x21214) (not x15583) (not x31932))
+:assumption (or (not x20542) (not x2344))
+:assumption (or (not x21815) x3001 (not x16510) x19867 x18519)
+:assumption (or x29254 x21413)
+:assumption (or x1572 (not x18934))
+:assumption (or x13566 x8002 x26339)
+:assumption (or x31119 x17827)
+:assumption (or (not x19437) (not x19572))
+:assumption (or (not x9008) x18491 (not x22617))
+:assumption (or (not x10452) (not x19586))
+:assumption (or x28036 (not x18703))
+:assumption (or (not x20327) (not x20371) x25508 (not x29521) (not x13065) x1403 x8918)
+:assumption (or (not x12658) (not x24603))
+:assumption (or (not x25476) (not x16362))
+:assumption (or x6374 (not x2634))
+:assumption (or x11404 (not x27427))
+:assumption (or x10142 x3794)
+:assumption (or x5028 (not x2081))
+:assumption (or (not x14962) (not x2578))
+:assumption (or (not x27267) x4287)
+:assumption (or x17428 (not x10560) (not x1897) (not x16648))
+:assumption (or x12814 x7312)
+:assumption (or x10005 (not x8785))
+:assumption (or x1741 x3457)
+:assumption (or (not x7085) (not x26254))
+:assumption (or (not x9047) x27052)
+:assumption (or (not x22068) (not x25911))
+:assumption (or (not x4697) x22550)
+:assumption (or (not x28745) (not x1990))
+:assumption (or x26259 (not x1843))
+:assumption (or x21150 x19799)
+:assumption (or (not x5379) (not x4291))
+:assumption (or x24101 (not x611))
+:assumption (or (not x4285) x26659)
+:assumption (or x14519 (not x21201))
+:assumption (or x23379 (not x114))
+:assumption (or (not x2130) (not x10641))
+:assumption (or x27727 (not x20950))
+:assumption (or (not x4311) (not x28161))
+:assumption (or x20221 (not x2356))
+:assumption (or (not x18119) (not x4354))
+:assumption (or x14357 x16452)
+:assumption (or (not x29466) (not x1491))
+:assumption (or x333 x25659 (not x30040))
+:assumption (or x20944 (not x9352))
+:assumption (or x13162 (not x23931))
+:assumption (or x12442 x28537)
+:assumption (or (not x5570) x21861)
+:assumption (or (not x27929) (not x5608))
+:assumption (or (not x7367) x27503 x18082 (not x11188) x6511 (not x23399))
+:assumption (or (not x6019) (not x21396) (not x14092) (not x30839))
+:assumption (or x29741 (not x5017))
+:assumption (or (not x28977) (not x1671))
+:assumption (or (not x16299) (not x12288))
+:assumption (or (not x13956) x27590)
+:assumption (or x14336 x13610)
+:assumption (or x8334 x29992)
+:assumption (or x11609 x22855)
+:assumption (or (not x56) x23405)
+:assumption (or (not x12199) x3144 x24387)
+:assumption (or x25252 (not x29590))
+:assumption (or (not x23384) x8961)
+:assumption (or x31823 x27165)
+:assumption (or (not x21783) x6340)
+:assumption (or (not x22095) x24272 (not x25659))
+:assumption (or x27318 (not x4356))
+:assumption (or x16645 x28885)
+:assumption (or (not x10272) (not x13576))
+:assumption (or (not x3053) (not x8420))
+:assumption (or x5887 x25471)
+:assumption (or x20402 x16077)
+:assumption (or (not x17584) (not x4398))
+:assumption (or x12331 (not x16928))
+:assumption (or x18042 x16412)
+:assumption (or x26491 x22836)
+:assumption (or x3447 x5615 x12871)
+:assumption (or x14749 x31799 (not x16648) (not x30321))
+:assumption (or (not x7138) (not x18074))
+:assumption (or x28462 (not x6969) x9041)
+:assumption (or x12642 (not x11982))
+:assumption (or x3979 (not x21333) (not x10669) (not x245) x28179 x11020)
+:assumption (or x24933 (not x19560))
+:assumption (or (not x24842) (not x142))
+:assumption (or x31368 (not x20328) x25430)
+:assumption (or (not x3879) x12045 x20240 x26653)
+:assumption (or (not x11212) (not x22937))
+:assumption (or x23558 x31061)
+:assumption (or (not x21161) x7748 x17163 (not x317) (not x23307) (not x7758))
+:assumption (or x31427 (not x19578))
+:assumption (or x3317 x529)
+:assumption (or (not x2288) x22961)
+:assumption (or (not x21951) x2858)
+:assumption (or (not x28664) x19627)
+:assumption (or (not x13897) x30103)
+:assumption (or (not x7373) (not x13316))
+:assumption (or x2202 (not x26762))
+:assumption (or x24021 x17211 x2133)
+:assumption (or x21815 x22414 (not x23418))
+:assumption (or (not x8165) x31524)
+:assumption (or x20651 x13569 (not x15240) x26789)
+:assumption (or (not x16788) (not x5394) x762)
+:assumption (or x10669 x18130)
+:assumption (or (not x22053) (not x12119))
+:assumption (or (not x25315) (not x23618))
+:assumption (or (not x12474) (not x21544))
+:assumption (or x8877 x23132)
+:assumption (or (not x8143) (not x4956))
+:assumption (or (not x20161) (not x14138))
+:assumption (or x30914 (not x12997))
+:assumption (or x15243 x9008 x5054 (not x25420) x22332 (not x31885))
+:assumption (or (not x25359) (not x17804))
+:assumption (or x6832 x19143)
+:assumption (or x7154 x29668)
+:assumption (or (not x21714) x25434)
+:assumption (or x6717 x5696)
+:assumption (or x28556 x2749)
+:assumption (or x16164 x29602)
+:assumption (or (not x8882) (not x2943) x24420 x26789)
+:assumption (or (not x8002) x27756)
+:assumption (or x18402 (not x25773))
+:assumption (or x9442 (not x22252) (not x27608))
+:assumption (or (not x4934) (not x17343))
+:assumption (or x16236 x4151)
+:assumption (or (not x10148) (not x12420))
+:assumption (or (not x19187) (not x21298) (not x12320))
+:assumption (or x18720 (not x24913) (not x9380) (not x14493) x16482 x29644)
+:assumption (or x10441 (not x1410))
+:assumption (or (not x11258) (not x8823) x833 x17789 x18003)
+:assumption (or (not x17206) x4190 (not x26546))
+:assumption (or x3061 (not x6125))
+:assumption (or (not x3721) (not x11504))
+:assumption (or x142 x24635)
+:assumption (or x5634 x27351)
+:assumption (or x1301 (not x24228))
+:assumption (or x27686 x1679)
+:assumption (or (not x3278) (not x19687))
+:assumption (or x27380 x16795)
+:assumption (or (not x2195) (not x19251))
+:assumption (or x8931 (not x19329))
+:assumption (or x17294 (not x8002))
+:assumption (or x8961 x17455 (not x6182))
+:assumption (or x1841 (not x14553) (not x20674))
+:assumption (or x4377 x24490)
+:assumption (or (not x6080) x16913)
+:assumption (or x12142 x19909)
+:assumption (or (not x29271) x26432 (not x16716))
+:assumption (or (not x2912) x4225 x12509)
+:assumption (or x18361 x9046)
+:assumption (or x1393 x5321)
+:assumption (or x24881 (not x23160))
+:assumption (or x2853 x5394)
+:assumption (or (not x29227) (not x13230) x5025 x28890)
+:assumption (or (not x18784) x13415 x28890)
+:assumption (or (not x1146) (not x31421))
+:assumption (or (not x448) (not x15292))
+:assumption (or x28541 (not x13981))
+:assumption (or (not x7565) (not x6799))
+:assumption (or x8229 x22733 x27443 (not x26107))
+:assumption (or (not x8961) x5886 (not x5234) x2225 (not x4039))
+:assumption (or x4491 (not x3972))
+:assumption (or (not x17851) x20577 (not x29485) x16236 x1264 (not x3853) x23585 (not x18327))
+:assumption (or x25659 (not x18626) (not x29895))
+:assumption (or x10920 x23244)
+:assumption (or (not x16488) (not x21123))
+:assumption (or (not x9385) (not x5821))
+:assumption (or (not x26358) x9394)
+:assumption (or (not x25717) (not x27201))
+:assumption (or x30386 x30258)
+:assumption (or (not x23670) (not x18349))
+:assumption (or (not x27549) x9990)
+:assumption (or (not x23636) x19214 (not x29257) x8987 (not x15408))
+:assumption (or (not x11414) x6314)
+:assumption (or (not x8813) (not x24632) x13105 x1831 x11163 x7359)
+:assumption (or x23224 (not x30416))
+:assumption (or x30329 x29788)
+:assumption (or x10062 x24339)
+:assumption (or x31214 (not x24722))
+:assumption (or x3817 x13739)
+:assumption (or (not x23021) (not x26424))
+:assumption (or x12880 x28953)
+:assumption (or (not x26790) x27398 x11465)
+:assumption (or x12080 (not x25937))
+:assumption (or (not x21025) (not x7727))
+:assumption (or x12732 x11300)
+:assumption (or x28499 (not x172) (not x5528) (not x2116) (not x4599) (not x26237))
+:assumption (or x8616 x3297)
+:assumption (or (not x8611) (not x16667))
+:assumption (or (not x6971) (not x5363))
+:assumption (or (not x29150) (not x30756))
+:assumption (or x27957 x1858)
+:assumption (or x4125 x21298)
+:assumption (or x18394 (not x19708))
+:assumption (or x9221 (not x23445))
+:assumption (or x26432 x21506)
+:assumption (or x8984 (not x918))
+:assumption (or x25080 x15099)
+:assumption (or x21294 x12400 x28541 (not x24772) (not x13863))
+:assumption (or x668 (not x20014))
+:assumption (or (not x29736) x11759 (not x11471) x10386 x21812 x12117 x15926)
+:assumption (or (not x24908) x21428)
+:assumption (or x15916 x23868)
+:assumption (or (not x27198) (not x11306))
+:assumption (or x19264 x31134 (not x14704))
+:assumption (or (not x26390) (not x23859) x20259 (not x31080) (not x28973))
+:assumption (or (not x11698) x29104)
+:assumption (or x22237 (not x25038))
+:assumption (or (not x3020) (not x20140))
+:assumption (or x17061 (not x24310))
+:assumption (or (not x30440) x14121)
+:assumption (or x22865 (not x1244))
+:assumption (or x9025 (not x28829))
+:assumption (or (not x2324) (not x4386))
+:assumption (or (not x1316) x28720)
+:assumption (or (not x8427) (not x30255) (not x13956) x14517)
+:assumption (or (not x18562) (not x15598))
+:assumption (or x7625 (not x7412))
+:assumption (or x21788 (not x2503))
+:assumption (or x20938 (not x11953))
+:assumption (or x23602 x14358)
+:assumption (or (not x30567) (not x29724) x20576 x918)
+:assumption (or x11006 (not x4234))
+:assumption (or (not x16953) x6838)
+:assumption (or (not x19709) (not x2773))
+:assumption (or (not x822) x13845)
+:assumption (or (not x21347) (not x10655))
+:assumption (or x2536 x10519)
+:assumption (or (not x6128) x7357 x12380 x6383 x485)
+:assumption (or x14117 x10425)
+:assumption (or (not x1836) x23999 x115 (not x6171) (not x24259) (not x7293))
+:assumption (or x1465 (not x19386) x20859 (not x21801) (not x14180) x11980 x29121 (not x10385))
+:assumption (or (not x16181) x12546)
+:assumption (or x20465 x17930)
+:assumption (or (not x29932) (not x23661))
+:assumption (or x14822 (not x31734))
+:assumption (or (not x12338) x23719)
+:assumption (or (not x29711) x15860)
+:assumption (or (not x16015) (not x17399) x13131)
+:assumption (or x13956 (not x17028))
+:assumption (or x9008 (not x2617))
+:assumption (or (not x16580) (not x6571))
+:assumption (or x23511 x17933)
+:assumption (or (not x16761) x26312)
+:assumption (or x17534 x4629)
+:assumption (or (not x5499) (not x30345))
+:assumption (or (not x11617) (not x18694))
+:assumption (or x4668 (not x28027) x22671 (not x31083) (not x30390))
+:assumption (or (not x22631) x19250 x6667 (not x6999) x30111)
+:assumption (or (not x1872) x19563)
+:assumption (or (not x21138) (not x23421))
+:assumption (or (not x12043) (not x19059))
+:assumption (or x12475 x17694)
+:assumption (or x25356 (not x15573))
+:assumption (or x9848 (not x7018))
+:assumption (or x14874 x3435)
+:assumption (or x23998 x7816)
+:assumption (or (not x29022) (not x20861))
+:assumption (or (not x12164) x12353)
+:assumption (or x23141 (not x6874) x16747 (not x16664) x1381 x27030 x13812 (not x7410))
+:assumption (or x3682 (not x28442))
+:assumption (or (not x21655) (not x16809) x8645 x21298)
+:assumption (or x4942 x1175)
+:assumption (or (not x25164) (not x13316))
+:assumption (or (not x11902) x1393 (not x7112))
+:assumption (or (not x10294) (not x21796))
+:assumption (or (not x23244) x20465)
+:assumption (or (not x7404) x31552 x7028 (not x8044) x9375 (not x12225))
+:assumption (or (not x556) (not x8002) (not x6491))
+:assumption (or (not x6266) (not x26922))
+:assumption (or (not x6172) (not x15707))
+:assumption (or (not x4073) (not x13442))
+:assumption (or (not x7066) x4451 (not x5253))
+:assumption (or x8363 x5737)
+:assumption (or x26211 x13317)
+:assumption (or (not x24769) x21341)
+:assumption (or (not x11156) x22455)
+:assumption (or x15028 (not x5394) x18275 (not x19077))
+:assumption (or (not x16067) (not x9184))
+:assumption (or x12703 x22706)
+:assumption (or (not x29793) (not x5971))
+:assumption (or x11281 (not x4216))
+:assumption (or (not x4053) x2820)
+:assumption (or x25666 (not x4092))
+:assumption (or (not x28888) x27085 x20957 (not x2766) (not x13411))
+:assumption (or x8323 x4261)
+:assumption (or (not x23138) (not x30850))
+:assumption (or x20485 (not x10672))
+:assumption (or (not x18958) (not x21934))
+:assumption (or x28597 x23956)
+:assumption (or (not x16804) x26171)
+:assumption (or (not x25143) x10064)
+:assumption (or (not x18327) (not x3853) (not x27184) (not x17851) (not x5239) x16236 x20577 (not x29485))
+:assumption (or (not x13692) x18305)
+:assumption (or x18869 x23009)
+:assumption (or (not x21617) (not x19506))
+:assumption (or (not x26641) (not x5469))
+:assumption (or x14822 x25859)
+:assumption (or (not x21298) x3445)
+:assumption (or (not x26356) (not x23600) x17481 x3758)
+:assumption (or (not x14975) (not x9531) x14665)
+:assumption (or x23003 x28958)
+:assumption (or x26119 x14758)
+:assumption (or x24102 x17129)
+:assumption (or (not x2445) x12922)
+:assumption (or (not x20101) (not x12267))
+:assumption (or (not x8300) x18209 (not x13798) x23497 (not x29778) x21416)
+:assumption (or (not x7946) (not x13424))
+:assumption (or (not x17860) x31068)
+:assumption (or (not x2456) x17501 (not x25659))
+:assumption (or (not x8002) (not x4243))
+:assumption (or x22178 (not x23244))
+:assumption (or (not x25911) (not x2031))
+:assumption (or x6722 (not x19762))
+:assumption (or (not x31119) (not x22957) (not x548))
+:assumption (or (not x19324) (not x23285))
+:assumption (or x26761 x827)
+:assumption (or x23247 (not x21298) (not x2586) (not x2911))
+:assumption (or x1201 (not x8162))
+:assumption (or x31521 (not x22053))
+:assumption (or x4422 x4096)
+:assumption (or (not x17205) x29174)
+:assumption (or (not x6951) x16225)
+:assumption (or (not x29216) x9008)
+:assumption (or (not x18736) (not x29312) (not x21815) (not x11281) (not x16510))
+:assumption (or (not x28441) (not x7961))
+:assumption (or (not x1420) x2264 x1877)
+:assumption (or x24456 (not x5025) (not x8199))
+:assumption (or (not x6642) x20834)
+:assumption (or (not x9664) x29649 x3018)
+:assumption (or x19993 x27450)
+:assumption (or x4457 x18335)
+:assumption (or x6731 x3907)
+:assumption (or (not x27155) (not x5834))
+:assumption (or (not x28557) x27883)
+:assumption (or (not x16084) x9509)
+:assumption (or (not x5297) (not x27153) (not x15537) x1778)
+:assumption (or x24385 (not x6378))
+:assumption (or x8483 x7066)
+:assumption (or (not x27221) (not x2192))
+:assumption (or x27409 x1061 x8487 (not x29236) (not x721) (not x28394) x11351 x25801)
+:assumption (or (not x26354) x19341)
+:assumption (or x13829 x24301 (not x29266) x728)
+:assumption (or (not x6351) (not x4462) x9531 x13576)
+:assumption (or (not x17078) x24482)
+:assumption (or x25232 x11966)
+:assumption (or (not x3204) (not x1187))
+:assumption (or x11209 x17391)
+:assumption (or (not x11170) x10994)
+:assumption (or x13852 x13624)
+:assumption (or x7159 x22642)
+:assumption (or (not x25040) (not x5528))
+:assumption (or (not x8002) (not x15994))
+:assumption (or (not x953) (not x19914))
+:assumption (or (not x27171) (not x22101))
+:assumption (or (not x8486) x17967)
+:assumption (or (not x19390) x1953 (not x19652) (not x15664))
+:assumption (or x12995 (not x23379))
+:assumption (or x11107 x13691)
+:assumption (or x24889 x6969 x13421)
+:assumption (or (not x19915) (not x15613))
+:assumption (or (not x23244) (not x29432))
+:assumption (or x22697 (not x12760) x9738 x29312 x24756)
+:assumption (or x23605 (not x6485))
+:assumption (or (not x23213) x29771 x20949 x12045)
+:assumption (or (not x13202) x24609)
+:assumption (or (not x595) (not x8021))
+:assumption (or (not x30937) x3135)
+:assumption (or (not x4127) (not x27646))
+:assumption (or (not x27359) (not x7100))
+:assumption (or x224 (not x27911))
+:assumption (or x20051 (not x23549) x17292 x29068 x16478)
+:assumption (or x23171 (not x18930))
+:assumption (or x16583 (not x17446))
+:assumption (or (not x20873) (not x5808))
+:assumption (or x25624 (not x24853))
+:assumption (or x23214 x6408)
+:assumption (or x14505 (not x31741))
+:assumption (or (not x21053) (not x28422))
+:assumption (or x10471 x31352)
+:assumption (or (not x24213) x15749)
+:assumption (or x16510 x17425 x28541)
+:assumption (or (not x26855) (not x16863))
+:assumption (or (not x839) (not x27957))
+:assumption (or (not x23359) (not x29820))
+:assumption (or (not x7456) (not x17648))
+:assumption (or x8681 x11230)
+:assumption (or (not x11266) (not x17075))
+:assumption (or x30323 (not x20920))
+:assumption (or (not x12572) (not x648))
+:assumption (or (not x30111) (not x17242))
+:assumption (or x14028 x24072)
+:assumption (or (not x25274) x14834)
+:assumption (or (not x21432) (not x21602))
+:assumption (or x23169 x21951)
+:assumption (or (not x12389) x10293)
+:assumption (or x14637 (not x24777))
+:assumption (or (not x4805) (not x8893))
+:assumption (or x2666 x11233 x3556 x14898 x19543 x1811 x7834 (not x21017))
+:assumption (or (not x22608) x20740)
+:assumption (or x3133 x14440)
+:assumption (or x8002 x19283 (not x3774))
+:assumption (or x11989 (not x31076))
+:assumption (or x24558 (not x25275))
+:assumption (or (not x13974) (not x11991))
+:assumption (or x255 (not x20292))
+:assumption (or x22473 (not x15834))
+:assumption (or (not x9199) x23169)
+:assumption (or (not x3919) x17726)
+:assumption (or (not x2046) x3798)
+:assumption (or x25863 (not x23827))
+:assumption (or x25357 x5327)
+:assumption (or x14543 x25339 x24504)
+:assumption (or x26897 (not x10909) (not x20156) (not x2630))
+:assumption (or x12575 (not x7859) x24471)
+:assumption (or x16357 x7158)
+:assumption (or (not x4387) (not x24406))
+:assumption (or x178 x20263)
+:assumption (or (not x24030) x25128)
+:assumption (or (not x14686) (not x18255))
+:assumption (or x24779 (not x28177))
+:assumption (or x18507 x28335)
+:assumption (or (not x22916) x17341)
+:assumption (or x27753 x701)
+:assumption (or (not x287) (not x23244))
+:assumption (or (not x8212) x28045)
+:assumption (or (not x20926) x6300)
+:assumption (or x25978 (not x5528))
+:assumption (or (not x16304) x17554)
+:assumption (or x6323 (not x19174))
+:assumption (or (not x24109) (not x2325))
+:assumption (or (not x20008) x1056)
+:assumption (or x31188 x23898)
+:assumption (or (not x24622) (not x29606))
+:assumption (or (not x30757) x8002 x23244 (not x12630))
+:assumption (or (not x25120) (not x23309))
+:assumption (or x11556 (not x1920) (not x4233) (not x27131))
+:assumption (or (not x7005) (not x23244))
+:assumption (or x25381 x22487)
+:assumption (or (not x13248) (not x16910) x20119)
+:assumption (or x27374 (not x7158))
+:assumption (or x8614 (not x4394))
+:assumption (or x27093 (not x21282))
+:assumption (or (not x12171) x2886)
+:assumption (or (not x27652) (not x13503))
+:assumption (or x3003 (not x16802))
+:assumption (or x29102 x19137)
+:assumption (or (not x30256) x29846 x2397)
+:assumption (or (not x14106) (not x25981))
+:assumption (or (not x20087) x4597 x12300)
+:assumption (or (not x27240) x550)
+:assumption (or (not x17264) (not x13891))
+:assumption (or x15468 (not x21031) (not x11083) (not x26062))
+:assumption (or (not x5267) (not x22351))
+:assumption (or (not x25889) (not x10197))
+:assumption (or (not x15945) x30619)
+:assumption (or (not x21447) x4285 x3289 x8092 (not x26659) x10440 (not x28152) x3561)
+:assumption (or x6593 (not x29909))
+:assumption (or (not x62) (not x11635))
+:assumption (or (not x30841) x29967)
+:assumption (or (not x11857) x4824 (not x28046) x22890)
+:assumption (or x22318 (not x1979))
+:assumption (or (not x17116) x24991)
+:assumption (or (not x17180) x5528)
+:assumption (or x17414 (not x783))
+:assumption (or x12333 x7323)
+:assumption (or (not x13848) x2110)
+:assumption (or (not x22154) (not x3915))
+:assumption (or (not x3878) (not x12870))
+:assumption (or (not x3414) x10875)
+:assumption (or (not x27322) (not x14013))
+:assumption (or (not x6726) x26578 (not x13956))
+:assumption (or x1188 (not x21714))
+:assumption (or x26504 (not x4418))
+:assumption (or (not x31156) x1249)
+:assumption (or x9008 (not x26748))
+:assumption (or (not x1408) (not x23133) (not x5204) x18874)
+:assumption (or (not x29496) x31458)
+:assumption (or x11813 x11734)
+:assumption (or (not x14598) (not x163))
+:assumption (or (not x25536) (not x8002))
+:assumption (or x6308 x29077)
+:assumption (or (not x7573) (not x3030))
+:assumption (or (not x3877) (not x17697) x24759)
+:assumption (or x5405 x1421)
+:assumption (or (not x2581) x30478)
+:assumption (or x22193 (not x20731) x4281)
+:assumption (or x1106 x27381)
+:assumption (or x20885 (not x27438) x12469)
+:assumption (or x23244 (not x44))
+:assumption (or x17164 x142)
+:assumption (or (not x27727) x20950)
+:assumption (or (not x25680) x7377)
+:assumption (or (not x22181) (not x30503))
+:assumption (or (not x15010) x19934)
+:assumption (or (not x31320) x6307)
+:assumption (or (not x5528) x7966)
+:assumption (or (not x12917) x9257 x25911 (not x9230) (not x12642) x10331 (not x6077) x3108 x10886)
+:assumption (or x16942 (not x19354) (not x30113) (not x20492))
+:assumption (or (not x14109) (not x17551))
+:assumption (or (not x28106) x26876)
+:assumption (or x8149 x29419)
+:assumption (or (not x2729) (not x24001))
+:assumption (or x7190 x17326)
+:assumption (or x6587 (not x5729))
+:assumption (or x9800 x23684)
+:assumption (or (not x19597) x4969)
+:assumption (or (not x21653) x21470 (not x24107))
+:assumption (or x72 (not x17779))
+:assumption (or x1675 x14193)
+:assumption (or x17573 x2278)
+:assumption (or (not x14224) x15030)
+:assumption (or x8938 x19733 (not x4812) x628 (not x2874) (not x30824) x10428)
+:assumption (or (not x20643) x12412)
+:assumption (or x31269 (not x7243))
+:assumption (or (not x1585) (not x23108))
+:assumption (or (not x23888) (not x23291))
+:assumption (or (not x10590) x16869)
+:assumption (or (not x16727) (not x28853))
+:assumption (or x8217 (not x17279) x29810 (not x24557) (not x18600))
+:assumption (or x27521 x7903)
+:assumption (or (not x19541) (not x2126))
+:assumption (or x29376 (not x2065))
+:assumption (or (not x7550) x30891 x4865 x31734 x25423)
+:assumption (or (not x1158) x9846)
+:assumption (or (not x4915) (not x730))
+:assumption (or (not x7917) x25244)
+:assumption (or (not x30815) x18418)
+:assumption (or x14016 x7050)
+:assumption (or x8002 x385 (not x18995))
+:assumption (or (not x27059) (not x9993))
+:assumption (or (not x18389) x10457)
+:assumption (or (not x20558) (not x13550) (not x8840) (not x29461) (not x14126) x29523 (not x5433) x8224)
+:assumption (or x3465 (not x9737))
+:assumption (or x30952 x14626)
+:assumption (or (not x21389) (not x26250))
+:assumption (or (not x15281) (not x14465))
+:assumption (or x18577 x18182 (not x9877))
+:assumption (or x24843 x9539)
+:assumption (or x3889 (not x16802) x24722 (not x9664))
+:assumption (or (not x2609) (not x20689))
+:assumption (or x27326 x13872)
+:assumption (or x27557 (not x28654))
+:assumption (or (not x22731) x30888 (not x30751))
+:assumption (or (not x28329) x21015 x22075 (not x8435))
+:assumption (or x29426 x22360 (not x25315))
+:assumption (or (not x7466) x31458)
+:assumption (or (not x7797) (not x13283))
+:assumption (or x24264 x14562)
+:assumption (or x5912 (not x16374))
+:assumption (or (not x604) x18350)
+:assumption (or x14911 (not x6653))
+:assumption (or (not x14755) x10235)
+:assumption (or x11182 (not x2895))
+:assumption (or (not x8161) (not x10064))
+:assumption (or (not x12129) (not x27682))
+:assumption (or (not x3891) (not x3763) x23741 (not x29860) x19210 (not x12930))
+:assumption (or (not x13049) x28142)
+:assumption (or (not x12045) (not x31132))
+:assumption (or x18194 (not x1497))
+:assumption (or x18340 (not x13077))
+:assumption (or (not x3405) x20949)
+:assumption (or (not x11194) x12871)
+:assumption (or (not x21259) x20606)
+:assumption (or x14920 x14341)
+:assumption (or x26518 x24960)
+:assumption (or x4123 x1432 x14206 (not x6525))
+:assumption (or x1232 x19852)
+:assumption (or x27490 (not x23386))
+:assumption (or x23609 (not x4368))
+:assumption (or x22732 (not x13487) x11011)
+:assumption (or x21323 x12518 (not x16154))
+:assumption (or (not x12639) (not x7008))
+:assumption (or (not x22949) (not x13733))
+:assumption (or x5418 x31829)
+:assumption (or x27697 x10436)
+:assumption (or (not x16208) x4594)
+:assumption (or (not x6743) x20041)
+:assumption (or x16149 x27193)
+:assumption (or (not x6616) (not x16680))
+:assumption (or (not x1539) (not x9774))
+:assumption (or x19832 (not x13892))
+:assumption (or x29376 x17202)
+:assumption (or x7625 x29769)
+:assumption (or (not x10813) (not x7087))
+:assumption (or (not x16738) (not x31226) (not x16635) x9502 x31852)
+:assumption (or (not x28065) (not x22855))
+:assumption (or (not x18117) (not x9219) (not x13747))
+:assumption (or x26155 (not x22541))
+:assumption (or x302 x12634)
+:assumption (or (not x30284) x7791 x875 x14594 (not x762))
+:assumption (or x9387 x16027)
+:assumption (or (not x18012) x12042)
+:assumption (or (not x13496) (not x16510))
+:assumption (or (not x31311) x3157)
+:assumption (or (not x4580) x31804)
+:assumption (or (not x16321) x12878)
+:assumption (or x3782 (not x26903) (not x573))
+:assumption (or x11060 (not x6927))
+:assumption (or (not x3560) (not x6809) x9990 (not x9332))
+:assumption (or (not x21615) (not x18841))
+:assumption (or x18210 x27533)
+:assumption (or x28752 (not x23260))
+:assumption (or (not x21298) x6002)
+:assumption (or (not x21596) (not x11394))
+:assumption (or x15740 x4295)
+:assumption (or x10791 (not x11900) (not x31904) x30700)
+:assumption (or (not x13124) x21958 x27102 (not x2311))
+:assumption (or (not x16354) x4903)
+:assumption (or x20060 x30267)
+:assumption (or x19232 x31442)
+:assumption (or x3036 (not x26897))
+:assumption (or (not x10533) x622)
+:assumption (or (not x24226) x24525)
+:assumption (or x17155 (not x24323) x9614 x12466 x7565)
+:assumption (or x24256 x159)
+:assumption (or (not x13108) x23005)
+:assumption (or x21852 x11815)
+:assumption (or x24756 x20087 (not x21062) (not x14522) x27008)
+:assumption (or x31076 x30716 x16142 (not x8796))
+:assumption (or x17206 x26546)
+:assumption (or x3224 (not x28222))
+:assumption (or (not x22726) x24575)
+:assumption (or (not x30925) (not x31209))
+:assumption (or (not x24327) x31624)
+:assumption (or x27521 x8358)
+:assumption (or (not x12101) (not x16910))
+:assumption (or x10415 x26297)
+:assumption (or (not x7762) x10119)
+:assumption (or (not x5790) x5138)
+:assumption (or (not x24734) x28912)
+:assumption (or (not x26003) x19320)
+:assumption (or (not x1868) x13357)
+:assumption (or x2111 x6612)
+:assumption (or x18699 (not x20949))
+:assumption (or (not x24953) x29286)
+:assumption (or x1008 x228)
+:assumption (or (not x19171) (not x5956))
+:assumption (or (not x17203) x18705)
+:assumption (or (not x14152) (not x840))
+:assumption (or x27666 x17731)
+:assumption (or x2134 (not x24149))
+:assumption (or x8026 (not x6966))
+:assumption (or x6243 x2918)
+:assumption (or (not x22766) x18056)
+:assumption (or (not x27279) (not x2122) (not x21631))
+:assumption (or x14866 (not x9682))
+:assumption (or (not x21682) (not x10821))
+:assumption (or x24083 (not x24775))
+:assumption (or x13036 (not x1740))
+:assumption (or (not x14839) (not x7785) x13645)
+:assumption (or (not x14827) (not x8002))
+:assumption (or (not x4217) x9100)
+:assumption (or x31767 (not x23405))
+:assumption (or x30225 x3678)
+:assumption (or (not x17213) x17112)
+:assumption (or x16844 (not x16025))
+:assumption (or x17855 x618)
+:assumption (or (not x15926) (not x12117))
+:assumption (or (not x28541) (not x31829) (not x31099) x11727)
+:assumption (or (not x14164) x7614)
+:assumption (or (not x24254) (not x5786))
+:assumption (or (not x23384) x17503)
+:assumption (or x22131 x6681)
+:assumption (or (not x29984) (not x2393))
+:assumption (or (not x27940) (not x2844))
+:assumption (or x27929 x14111)
+:assumption (or x15061 (not x12083))
+:assumption (or x9804 (not x24832))
+:assumption (or (not x8610) x13956)
+:assumption (or x31782 (not x9622))
+:assumption (or (not x6961) x3315)
+:assumption (or (not x11365) (not x9898))
+:assumption (or (not x28501) x288)
+:assumption (or x8002 (not x13535))
+:assumption (or x28912 (not x28325))
+:assumption (or x5096 (not x30448))
+:assumption (or (not x24952) x20318 x7684)
+:assumption (or x7404 (not x10433))
+:assumption (or x1214 (not x4668))
+:assumption (or x25132 x13956)
+:assumption (or (not x23662) (not x2003))
+:assumption (or x25733 (not x27609))
+:assumption (or x4475 x30891)
+:assumption (or x27532 (not x3777))
+:assumption (or (not x16347) (not x20060))
+:assumption (or (not x1648) (not x3491))
+:assumption (or (not x7730) (not x9186))
+:assumption (or (not x14839) x1300)
+:assumption (or x24616 (not x5367))
+:assumption (or x28567 x15650 x26143)
+:assumption (or x16667 (not x8002) (not x9930) (not x7646))
+:assumption (or x28144 x22964)
+:assumption (or x24238 x1457 x1740 x10330 (not x27797))
+:assumption (or x24118 x19046)
+:assumption (or x12657 (not x3332))
+:assumption (or (not x18619) (not x15343))
+:assumption (or (not x24533) (not x4840))
+:assumption (or (not x29021) x9008)
+:assumption (or (not x26578) (not x30676))
+:assumption (or (not x20878) (not x620) (not x8476))
+:assumption (or (not x29312) x7061 x1924 x9558 x26392 x249)
+:assumption (or x19069 x29062 (not x29315) x30230 x23680)
+:assumption (or x15765 (not x4652))
+:assumption (or (not x5936) (not x918))
+:assumption (or (not x4584) x8816)
+:assumption (or (not x31516) x2303)
+:assumption (or x22684 (not x30952))
+:assumption (or x6774 (not x20295))
+:assumption (or (not x17131) x5938)
+:assumption (or (not x27169) x20708)
+:assumption (or x20772 (not x23541))
+:assumption (or x25399 x10711)
+:assumption (or (not x18719) (not x6099))
+:assumption (or (not x8983) (not x28641))
+:assumption (or x26546 (not x23873))
+:assumption (or (not x701) x3527 (not x24320))
+:assumption (or (not x10471) (not x9008))
+:assumption (or x24179 x2192 (not x6969))
+:assumption (or (not x5162) (not x3348))
+:assumption (or (not x19902) (not x28912))
+:assumption (or (not x18566) x19022)
+:assumption (or (not x11764) x13264)
+:assumption (or (not x7632) (not x7731))
+:assumption (or (not x23332) (not x13913))
+:assumption (or x19879 (not x30116))
+:assumption (or (not x23435) x15408)
+:assumption (or (not x19259) (not x8749))
+:assumption (or x16182 x6329)
+:assumption (or x20684 x25267)
+:assumption (or (not x14455) x19014)
+:assumption (or (not x9878) (not x1582) (not x15078) (not x11696) x13057 (not x23457))
+:assumption (or x26608 x31351)
+:assumption (or (not x25346) (not x17650))
+:assumption (or x16892 x1965)
+:assumption (or (not x28150) x17874)
+:assumption (or (not x21450) x11562)
+:assumption (or (not x5920) x23596)
+:assumption (or x25315 x28180)
+:assumption (or x7654 x21423)
+:assumption (or (not x27318) x27144)
+:assumption (or (not x2810) (not x16914) (not x27430))
+:assumption (or (not x8002) x13494)
+:assumption (or (not x24442) (not x15564) x16052)
+:assumption (or x25103 (not x29257))
+:assumption (or (not x22771) (not x20121))
+:assumption (or x7055 (not x17516) (not x6675))
+:assumption (or (not x14850) x17937)
+:assumption (or (not x19789) x22435)
+:assumption (or x20491 x4559)
+:assumption (or (not x8753) (not x6339))
+:assumption (or (not x28404) (not x16580))
+:assumption (or (not x13787) x15861)
+:assumption (or (not x1732) (not x18219))
+:assumption (or x17656 (not x22854))
+:assumption (or (not x18335) x23107)
+:assumption (or x1302 x7943)
+:assumption (or (not x5770) x7819)
+:assumption (or x3494 (not x19836))
+:assumption (or x27567 x4349)
+:assumption (or (not x3373) x23597)
+:assumption (or x8297 (not x1547))
+:assumption (or (not x6243) (not x21686))
+:assumption (or x8637 x21268)
+:assumption (or x7036 x21255)
+:assumption (or (not x28541) (not x6509) (not x7225))
+:assumption (or x2046 (not x23800) (not x15607) x21298 (not x10263) (not x24044) (not x8097))
+:assumption (or (not x22733) (not x28795) (not x24654) (not x8229))
+:assumption (or x19143 (not x29346))
+:assumption (or (not x31846) (not x27670))
+:assumption (or x29392 (not x6244))
+:assumption (or (not x16025) (not x27576))
+:assumption (or (not x21502) (not x10137) (not x29475) (not x28695) (not x16417))
+:assumption (or (not x4338) x20030)
+:assumption (or (not x24752) (not x20993))
+:assumption (or x29120 x30442)
+:assumption (or x6032 x8718)
+:assumption (or (not x25267) (not x20728) x7750 x4593)
+:assumption (or (not x21904) (not x9947) (not x4252) (not x23286) (not x25694) x8002)
+:assumption (or x26929 (not x10804))
+:assumption (or (not x1649) (not x955))
+:assumption (or x13956 (not x19194))
+:assumption (or (not x27994) x3331)
+:assumption (or x19344 x10716)
+:assumption (or x30019 (not x28946) (not x11743) x23528 (not x1457) x19180)
+:assumption (or (not x5453) x29442)
+:assumption (or (not x8002) (not x20035))
+:assumption (or x9531 (not x20970))
+:assumption (or x19359 (not x26283))
+:assumption (or (not x10501) x23996)
+:assumption (or x1337 x21443)
+:assumption (or x68 x11362)
+:assumption (or x9402 x25709)
+:assumption (or x1783 x15671)
+:assumption (or x24867 (not x18859) x3001 (not x20550) x9930)
+:assumption (or x916 x5960 (not x5848) (not x23399) x27916 (not x16860) (not x15597))
+:assumption (or x10212 x21726)
+:assumption (or (not x14805) x19498)
+:assumption (or (not x20578) x15510)
+:assumption (or x20802 (not x24058))
+:assumption (or (not x6704) x16721)
+:assumption (or x29666 x16510)
+:assumption (or x8979 (not x21862))
+:assumption (or x22615 (not x11521))
+:assumption (or (not x13956) x23244 x8002 (not x26879) (not x14649))
+:assumption (or x23758 (not x15795) (not x4000) x16304)
+:assumption (or (not x14826) x31766)
+:assumption (or x202 (not x19738) (not x19589) x23244 (not x8002))
+:assumption (or (not x16444) x21888)
+:assumption (or x17655 x28853 x28161 x16727)
+:assumption (or x28700 (not x6652))
+:assumption (or (not x26789) (not x14680))
+:assumption (or x20333 (not x7451) (not x25746) x2704 x6644)
+:assumption (or x30660 (not x20753) (not x9423))
+:assumption (or x19262 x29628)
+:assumption (or x8859 x18143)
+:assumption (or x30389 x29609)
+:assumption (or (not x20331) x31865)
+:assumption (or (not x4856) x16397)
+:assumption (or x6472 (not x16683))
+:assumption (or x26604 x19998)
+:assumption (or x12355 (not x8716))
+:assumption (or (not x21824) (not x11369))
+:assumption (or (not x12461) (not x20984))
+:assumption (or (not x17757) x12324)
+:assumption (or (not x12889) x26197)
+:assumption (or (not x22733) (not x8229) x5683)
+:assumption (or (not x16699) (not x5052))
+:assumption (or (not x30856) (not x25598))
+:assumption (or x21973 x1978)
+:assumption (or (not x14211) x1582 x25659 x20550 (not x29333))
+:assumption (or (not x14502) x17192)
+:assumption (or x26191 x4790)
+:assumption (or x31046 x7579)
+:assumption (or x31879 x31574)
+:assumption (or x30514 x18643 (not x6149))
+:assumption (or (not x9986) x4152)
+:assumption (or (not x14948) x12292)
+:assumption (or x13622 (not x21647))
+:assumption (or (not x1196) (not x9367) x9363 (not x7962) x31357 x13442)
+:assumption (or (not x22978) (not x9498) x12676)
+:assumption (or x3822 x10323)
+:assumption (or (not x8376) (not x29594))
+:assumption (or (not x17793) (not x19730))
+:assumption (or x18670 (not x24559))
+:assumption (or x6800 (not x9626))
+:assumption (or x7363 (not x3215) x12179 x13707 x1234)
+:assumption (or x14142 x11462)
+:assumption (or x5528 x26714)
+:assumption (or (not x3708) x28652 x14457)
+:assumption (or (not x6677) x28645 x30686 (not x24877) x21720 (not x1433))
+:assumption (or (not x19877) (not x9885))
+:assumption (or (not x3502) (not x25165))
+:assumption (or x8308 (not x30113) (not x644) (not x2106))
+:assumption (or x24692 x15385)
+:assumption (or (not x18212) (not x11778) (not x15456) x2993 x8002 x20025)
+:assumption (or x5619 x16445)
+:assumption (or (not x26897) (not x500) x23244)
+:assumption (or x5772 (not x20599))
+:assumption (or (not x628) (not x9886))
+:assumption (or (not x14499) x12655 x30208)
+:assumption (or (not x19694) x5939 x11433 (not x2100) x26876)
+:assumption (or x30985 (not x13420))
+:assumption (or x7102 (not x22393))
+:assumption (or x2141 (not x24348))
+:assumption (or x13180 (not x23045))
+:assumption (or (not x8692) x7074)
+:assumption (or x5909 (not x25026))
+:assumption (or x30771 (not x10357))
+:assumption (or x29693 (not x3251))
+:assumption (or x27897 (not x12571))
+:assumption (or (not x6972) x3001 x7308 (not x25224) (not x202) (not x10608))
+:assumption (or (not x15441) (not x10340))
+:assumption (or x17859 (not x23244))
+:assumption (or x11385 x5935)
+:assumption (or x6374 (not x8481))
+:assumption (or x21690 x29825)
+:assumption (or x8625 x23047)
+:assumption (or x12555 x4724 x23244)
+:assumption (or (not x16983) (not x38))
+:assumption (or x25866 x10902)
+:assumption (or (not x22734) (not x16904))
+:assumption (or (not x7628) x10503)
+:assumption (or x30034 x18714)
+:assumption (or x27052 (not x5855))
+:assumption (or x9516 (not x28608))
+:assumption (or x22500 (not x18807))
+:assumption (or x480 x11609)
+:assumption (or (not x10770) (not x19481) (not x16745))
+:assumption (or (not x18213) x17955)
+:assumption (or (not x30208) x15956)
+:assumption (or (not x22128) x9184)
+:assumption (or x13357 (not x14620))
+:assumption (or (not x10280) (not x111))
+:assumption (or (not x3501) x24093)
+:assumption (or (not x18694) x8369)
+:assumption (or x29774 x30467)
+:assumption (or (not x21113) (not x12221))
+:assumption (or x3435 x258)
+:assumption (or x17722 (not x29913))
+:assumption (or (not x22648) (not x15307))
+:assumption (or (not x24003) (not x18480))
+:assumption (or x13749 x20111)
+:assumption (or (not x16765) (not x13189))
+:assumption (or (not x13696) x12064)
+:assumption (or (not x24249) (not x11703))
+:assumption (or x16910 x7636)
+:assumption (or x5292 (not x2413))
+:assumption (or x5507 (not x31134))
+:assumption (or (not x25919) x8655)
+:assumption (or x30441 (not x11780))
+:assumption (or x4820 x3275)
+:assumption (or (not x19855) (not x6359))
+:assumption (or x2509 (not x20904))
+:assumption (or x23458 (not x8002))
+:assumption (or x26881 x1628 (not x20588))
+:assumption (or x12855 x18503)
+:assumption (or x28408 x7996)
+:assumption (or (not x12232) x6381)
+:assumption (or (not x21968) (not x28016))
+:assumption (or x23605 (not x7795))
+:assumption (or (not x24640) (not x14309) x7242 x28143 (not x15919) x18039 x24198 x19975 x10936)
+:assumption (or x26663 (not x17007))
+:assumption (or (not x19354) x7230)
+:assumption (or x8435 (not x26065))
+:assumption (or (not x15786) (not x28362))
+:assumption (or (not x31076) (not x5350))
+:assumption (or (not x15887) x16778)
+:assumption (or x30918 x3884)
+:assumption (or (not x26923) x6613)
+:assumption (or x2592 (not x24084))
+:assumption (or x13419 (not x20607))
+:assumption (or (not x17528) x557)
+:assumption (or (not x23545) x12729 x10643 (not x11136))
+:assumption (or x805 x12706)
+:assumption (or x9074 (not x8859))
+:assumption (or (not x24295) (not x6099))
+:assumption (or x29662 x5394)
+:assumption (or (not x196) (not x24928))
+:assumption (or x22068 x6686 x25911 (not x26005))
+:assumption (or x15337 x6772)
+:assumption (or x19153 x16907)
+:assumption (or x14894 x637)
+:assumption (or x29959 x2281 (not x14815) (not x6594))
+:assumption (or (not x5812) (not x11754))
+:assumption (or x6636 x29932)
+:assumption (or x26782 x9453)
+:assumption (or x10058 x16807)
+:assumption (or (not x12960) x30391)
+:assumption (or (not x1061) x28394)
+:assumption (or x12676 (not x30455))
+:assumption (or (not x1393) x22755)
+:assumption (or x21155 (not x8654))
+:assumption (or (not x24756) (not x14400))
+:assumption (or x7934 x14897)
+:assumption (or (not x16641) x1514)
+:assumption (or (not x25369) x30187)
+:assumption (or x12956 x17047)
+:assumption (or x25419 (not x8002))
+:assumption (or (not x2530) x22483)
+:assumption (or x15680 (not x11567))
+:assumption (or x5302 x6679 x620 (not x21626) x4686 x29393 (not x12076))
+:assumption (or (not x10579) x3409)
+:assumption (or (not x18397) x26053 x19259 x16979 (not x8260))
+:assumption (or (not x26892) (not x9976))
+:assumption (or (not x17500) (not x13759))
+:assumption (or (not x8889) (not x18452))
+:assumption (or x20190 (not x16374))
+:assumption (or x1969 x15659)
+:assumption (or (not x15742) (not x4909))
+:assumption (or x24278 x7672)
+:assumption (or (not x11169) x9995)
+:assumption (or x21777 x21797)
+:assumption (or (not x5795) x5118)
+:assumption (or (not x13098) x26432)
+:assumption (or (not x14609) x2866)
+:assumption (or (not x30978) x19428)
+:assumption (or x26692 x14822)
+:assumption (or x12180 x16015)
+:assumption (or (not x873) (not x2054) (not x13403))
+:assumption (or x31834 (not x19153))
+:assumption (or (not x21156) x17788)
+:assumption (or x9534 (not x16252))
+:assumption (or x12045 (not x18490))
+:assumption (or (not x30380) x14982)
+:assumption (or x27526 x11285)
+:assumption (or (not x15428) (not x1006))
+:assumption (or x8509 (not x30632))
+:assumption (or x14206 (not x22398))
+:assumption (or (not x31353) x21727)
+:assumption (or x21815 (not x4806))
+:assumption (or (not x18740) x8002 (not x1471))
+:assumption (or (not x26287) x28541)
+:assumption (or x11012 (not x3699) x3981 (not x16517))
+:assumption (or (not x29442) x23036 (not x5028) x27783)
+:assumption (or x17084 (not x20744))
+:assumption (or x9439 x742)
+:assumption (or x3402 x3172)
+:assumption (or (not x2057) x29508)
+:assumption (or (not x5327) x16003)
+:assumption (or x31821 x22790 (not x28925))
+:assumption (or x4224 x16684)
+:assumption (or x3309 (not x8047))
+:assumption (or x29823 (not x18019))
+:assumption (or x13192 (not x2300))
+:assumption (or (not x3161) (not x8002))
+:assumption (or x8163 x11374 (not x9025))
+:assumption (or x2471 (not x22328))
+:assumption (or (not x4379) x4028 x25628 (not x8278) x29091)
+:assumption (or (not x30252) (not x20087))
+:assumption (or (not x8029) x22198 (not x8891) x9386)
+:assumption (or x12407 (not x30200))
+:assumption (or (not x23244) x5716 (not x11792))
+:assumption (or (not x25040) x30090)
+:assumption (or x26480 x30518)
+:assumption (or (not x19215) x10478)
+:assumption (or x13691 (not x14114))
+:assumption (or x21906 (not x16797))
+:assumption (or x20380 x22123)
+:assumption (or (not x2881) x17316)
+:assumption (or x15 (not x7118))
+:assumption (or (not x8160) x31114 (not x25784))
+:assumption (or (not x20416) (not x23997))
+:assumption (or x21145 (not x28654))
+:assumption (or x27306 x16726)
+:assumption (or (not x14607) (not x2841))
+:assumption (or (not x13260) x299)
+:assumption (or x265 x8953)
+:assumption (or x31180 (not x26060))
+:assumption (or (not x28004) x13371)
+:assumption (or (not x16627) x21062)
+:assumption (or x27131 x4233)
+:assumption (or x9024 x4082 x21762 (not x22772) x24793 (not x178) (not x24705))
+:assumption (or (not x18476) (not x29238))
+:assumption (or (not x12314) (not x2685))
+:assumption (or (not x3787) x2119)
+:assumption (or x26262 x19560)
+:assumption (or x18825 x9002)
+:assumption (or x25185 x15371)
+:assumption (or (not x15501) x12924 x8002 (not x16846) (not x637) (not x6685))
+:assumption (or x28696 x8053)
+:assumption (or x4625 x16851)
+:assumption (or x14294 (not x24454) (not x15166))
+:assumption (or x18809 (not x5691))
+:assumption (or x8549 x13104)
+:assumption (or x6804 x4557)
+:assumption (or (not x13363) (not x26086))
+:assumption (or (not x10336) x25002)
+:assumption (or (not x27349) (not x29786))
+:assumption (or x13119 (not x30113))
+:assumption (or x14258 x16510)
+:assumption (or (not x13384) (not x5438))
+:assumption (or (not x24155) (not x11133))
+:assumption (or (not x16013) x29061)
+:assumption (or (not x25218) x21713)
+:assumption (or (not x26171) (not x5410) (not x3158) (not x20869) (not x28634) x1091 x17810 (not x13094))
+:assumption (or (not x11796) (not x25119))
+:assumption (or x22292 (not x9008))
+:assumption (or x16209 x26727 x14795 x10691 x3030)
+:assumption (or (not x7530) (not x26113) (not x13956))
+:assumption (or x19266 (not x30789))
+:assumption (or x27131 (not x11556))
+:assumption (or (not x16115) (not x17800))
+:assumption (or x20367 (not x7127))
+:assumption (or x23642 x6182)
+:assumption (or x24966 (not x31321))
+:assumption (or x4629 x6594)
+:assumption (or x27843 (not x14251))
+:assumption (or (not x12536) (not x28415))
+:assumption (or (not x16598) x21062)
+:assumption (or (not x10937) (not x27974) x1393)
+:assumption (or x23341 (not x5214))
+:assumption (or x19428 (not x9025) (not x4140))
+:assumption (or (not x19711) x6595)
+:assumption (or x19079 (not x29116))
+:assumption (or x27316 x23905)
+:assumption (or x6872 x39)
+:assumption (or (not x4039) x6729)
+:assumption (or (not x25595) x13545)
+:assumption (or (not x11772) x3339)
+:assumption (or x18982 (not x15887))
+:assumption (or x21113 (not x21546) x12221)
+:assumption (or (not x19750) (not x6313))
+:assumption (or (not x12016) (not x2152))
+:assumption (or x18683 (not x21267))
+:assumption (or x4789 (not x26802))
+:assumption (or x13576 (not x12220))
+:assumption (or x218 x21044)
+:assumption (or x11701 (not x7361))
+:assumption (or x30561 x6390)
+:assumption (or x19088 (not x1393) (not x20825))
+:assumption (or (not x11374) (not x23930) (not x1901))
+:assumption (or x7835 (not x2133) x12711)
+:assumption (or (not x3370) (not x18046))
+:assumption (or (not x11133) x25423)
+:assumption (or (not x12261) (not x341))
+:assumption (or x20581 (not x5047))
+:assumption (or (not x3941) (not x3494))
+:assumption (or (not x5240) (not x26882))
+:assumption (or x27233 x24393 (not x21633))
+:assumption (or (not x3501) (not x8281) (not x13532) x15213)
+:assumption (or (not x1526) (not x8659) (not x31724) (not x6588))
+:assumption (or (not x15876) x24897)
+:assumption (or (not x23244) x11090)
+:assumption (or x11262 (not x31104) x5108 (not x14305))
+:assumption (or x12015 x2676)
+:assumption (or (not x9564) x3855)
+:assumption (or x113 x16103)
+:assumption (or (not x25308) x30968)
+:assumption (or x24783 (not x24521))
+:assumption (or (not x22980) (not x16541))
+:assumption (or x6853 (not x16855))
+:assumption (or (not x23427) (not x5240))
+:assumption (or x20420 x14168)
+:assumption (or x16510 x25649)
+:assumption (or x26066 x25361)
+:assumption (or (not x16296) (not x18139))
+:assumption (or x28588 (not x5851))
+:assumption (or x23958 x15314)
+:assumption (or x18493 x17016 (not x8397) (not x671) (not x22277) (not x29352))
+:assumption (or x28692 x5864)
+:assumption (or (not x19028) (not x5976) x26328 x17958)
+:assumption (or x31265 (not x24891))
+:assumption (or x17001 (not x24864))
+:assumption (or (not x4649) x17985 x26161)
+:assumption (or (not x28311) (not x23790))
+:assumption (or (not x17942) x10583)
+:assumption (or (not x15306) x13411 (not x23423) (not x7539))
+:assumption (or x22192 x23095)
+:assumption (or (not x4542) x28898)
+:assumption (or x4291 x27754)
+:assumption (or x17518 (not x30686))
+:assumption (or x12888 (not x26502))
+:assumption (or (not x12490) x14411)
+:assumption (or x8110 (not x10338))
+:assumption (or (not x7737) (not x17432))
+:assumption (or (not x11660) x21881)
+:assumption (or x16096 x7835 (not x8282) x25659)
+:assumption (or (not x23356) x29894 x6393 (not x3319) (not x9879) (not x2909) (not x3152) x3782)
+:assumption (or x18403 (not x26253))
+:assumption (or (not x14971) (not x18859))
+:assumption (or x15715 x26488)
+:assumption (or (not x16940) x25367)
+:assumption (or (not x31052) (not x15782))
+:assumption (or x22855 (not x30457) x5159)
+:assumption (or (not x19617) x12916)
+:assumption (or x17035 x22871)
+:assumption (or (not x13253) (not x24773))
+:assumption (or (not x31761) x18367)
+:assumption (or (not x17622) x23244)
+:assumption (or x3679 x22822)
+:assumption (or (not x6859) (not x23599))
+:assumption (or x15823 x29667)
+:assumption (or (not x18344) (not x16363))
+:assumption (or x27573 x23962)
+:assumption (or (not x18364) x13188)
+:assumption (or x11763 (not x26151))
+:assumption (or (not x12954) x3021)
+:assumption (or x22904 x13114)
+:assumption (or x22154 x5827)
+:assumption (or (not x10983) x17833)
+:assumption (or (not x29205) (not x16315))
+:assumption (or (not x1926) (not x31819))
+:assumption (or (not x46) (not x27022))
+:assumption (or x11851 (not x11321) x9014)
+:assumption (or (not x26147) (not x1963))
+:assumption (or (not x22472) (not x29407))
+:assumption (or (not x2399) x3548)
+:assumption (or x19073 x23258 x766 x26033)
+:assumption (or x23525 (not x27420))
+:assumption (or (not x6243) (not x23529))
+:assumption (or (not x25320) x19151)
+:assumption (or (not x9460) (not x12854))
+:assumption (or (not x9008) (not x4321))
+:assumption (or x17666 (not x4132))
+:assumption (or (not x494) (not x27081))
+:assumption (or x23866 (not x21815))
+:assumption (or (not x21439) x29907)
+:assumption (or (not x22412) x30641)
+:assumption (or x27366 (not x11374))
+:assumption (or (not x5756) x18982)
+:assumption (or (not x21820) x21079)
+:assumption (or (not x4306) x21815)
+:assumption (or (not x3913) (not x23951))
+:assumption (or x31566 (not x17762))
+:assumption (or (not x2191) (not x5009) x22386 (not x29606) x2040 (not x753))
+:assumption (or x13231 (not x17269) x8002)
+:assumption (or x2882 (not x5966) (not x6969))
+:assumption (or x5158 (not x1371))
+:assumption (or x27139 x24181)
+:assumption (or (not x12173) (not x5027) x16802 (not x9440))
+:assumption (or (not x23378) (not x26819))
+:assumption (or x24028 x6717)
+:assumption (or x17772 x25226)
+:assumption (or (not x23023) (not x18689))
+:assumption (or (not x17560) (not x802))
+:assumption (or (not x10537) x25431)
+:assumption (or x22653 (not x26232) (not x23633) x13744 (not x21926) x652)
+:assumption (or (not x25333) (not x28890))
+:assumption (or (not x29492) x13144)
+:assumption (or x29122 x5579)
+:assumption (or x20714 (not x15824))
+:assumption (or x14296 x31670)
+:assumption (or (not x29288) x19560 x25972 (not x29386) x27386)
+:assumption (or x29473 x19743)
+:assumption (or x8586 x31697)
+:assumption (or (not x28766) (not x25530))
+:assumption (or (not x7854) (not x10117) (not x26101) x29349)
+:assumption (or (not x25008) (not x19161))
+:assumption (or (not x26224) x14159)
+:assumption (or (not x25190) x26953)
+:assumption (or (not x14552) (not x24151))
+:assumption (or (not x23515) (not x29542) (not x25659))
+:assumption (or (not x10527) x15795 x1748 x23119 (not x28660))
+:assumption (or x1854 (not x11247))
+:assumption (or (not x31555) (not x7537))
+:assumption (or (not x16025) (not x30436))
+:assumption (or (not x6492) (not x28486) (not x20386) x1282 (not x25151))
+:assumption (or x31678 x918 x8582)
+:assumption (or (not x18565) (not x54))
+:assumption (or (not x28179) x21333)
+:assumption (or x15760 (not x6749))
+:assumption (or (not x15316) x27349)
+:assumption (or (not x16741) (not x2133) x7009)
+:assumption (or (not x169) x19232)
+:assumption (or x8504 x6149)
+:assumption (or (not x26762) x22303)
+:assumption (or (not x5823) x3679)
+:assumption (or (not x10562) x7891 x17651 (not x10933))
+:assumption (or x16733 x10069)
+:assumption (or x434 (not x10531))
+:assumption (or x3125 (not x19995))
+:assumption (or x918 (not x8279))
+:assumption (or (not x17085) (not x9559) x22657 (not x28561))
+:assumption (or x17580 (not x12159))
+:assumption (or (not x11483) x3733)
+:assumption (or (not x4742) (not x23722))
+:assumption (or x10462 x15157)
+:assumption (or (not x796) (not x20481))
+:assumption (or x6145 x21298)
+:assumption (or (not x13956) x805 x28342 x4339)
+:assumption (or (not x31574) (not x14400))
+:assumption (or (not x29273) x13977 x17109)
+:assumption (or x30271 x9480)
+:assumption (or (not x15110) x30702 (not x17439))
+:assumption (or (not x878) (not x7864))
+:assumption (or x10675 (not x6049))
+:assumption (or (not x16096) x29505)
+:assumption (or (not x15008) x8532)
+:assumption (or x16059 (not x14839))
+:assumption (or (not x1406) x1698)
+:assumption (or (not x12699) x9585)
+:assumption (or x7965 (not x13956))
+:assumption (or (not x18825) x11839)
+:assumption (or (not x7537) x3062)
+:assumption (or x8002 (not x7877) (not x18969))
+:assumption (or x23467 (not x27623))
+:assumption (or (not x26646) (not x865))
+:assumption (or x16289 x13642)
+:assumption (or (not x13526) x15397)
+:assumption (or x21815 (not x11171))
+:assumption (or x16095 x15767 (not x14601) x4221 (not x3751) (not x7790) x8586 x26275 x5034)
+:assumption (or x9975 (not x28007))
+:assumption (or (not x31401) x16789)
+:assumption (or (not x12346) x16746)
+:assumption (or (not x2531) x9008)
+:assumption (or x20210 (not x7498))
+:assumption (or x2999 x25366)
+:assumption (or (not x4830) (not x3008))
+:assumption (or x31623 (not x4963))
+:assumption (or (not x31148) x13683)
+:assumption (or x9163 (not x13843) (not x10277))
+:assumption (or (not x6811) x5548)
+:assumption (or x2296 x31013)
+:assumption (or x17657 x11432)
+:assumption (or (not x23846) (not x29565))
+:assumption (or (not x29443) x19739 x14131)
+:assumption (or x16375 (not x30461) (not x21395) (not x7948))
+:assumption (or x9253 (not x27813))
+:assumption (or x11157 (not x28663) x2704)
+:assumption (or x3648 (not x1044))
+:assumption (or (not x17563) x18824)
+:assumption (or (not x20109) x18660)
+:assumption (or (not x26862) (not x23724))
+:assumption (or x21546 (not x21113))
+:assumption (or x10874 (not x10134))
+:assumption (or (not x15917) x5649)
+:assumption (or x18131 x10639)
+:assumption (or (not x14233) (not x18293) x18097 (not x19714))
+:assumption (or (not x1582) (not x16831))
+:assumption (or (not x4109) x10738)
+:assumption (or (not x14522) (not x21970))
+:assumption (or (not x24820) (not x26454) (not x17215) x3583 (not x18952) (not x30250))
+:assumption (or (not x14719) x9685)
+:assumption (or x27098 x8430)
+:assumption (or (not x15384) x12185)
+:assumption (or (not x12577) x27594)
+:assumption (or (not x550) (not x31816))
+:assumption (or (not x23784) x27574)
+:assumption (or (not x17213) x25036)
+:assumption (or x4797 x27533 x23244)
+:assumption (or x29106 (not x30590) (not x6998) x17872 (not x1920) x30783 x3669)
+:assumption (or x12201 (not x27297))
+:assumption (or (not x25665) (not x256))
+:assumption (or x15056 (not x11316))
+:assumption (or x30288 x13976)
+:assumption (or x744 x30726)
+:assumption (or (not x16699) (not x5121))
+:assumption (or (not x26002) x24462)
+:assumption (or x4233 (not x30115))
+:assumption (or x20783 (not x27563))
+:assumption (or (not x9482) (not x19344))
+:assumption (or (not x26897) x29380)
+:assumption (or (not x9451) (not x1166))
+:assumption (or (not x26778) (not x975))
+:assumption (or x16802 x10713)
+:assumption (or (not x23486) (not x6017))
+:assumption (or x6103 (not x18825))
+:assumption (or (not x425) x24521 x11002 (not x21298))
+:assumption (or (not x12408) (not x22136))
+:assumption (or x8813 x4575)
+:assumption (or x19005 x18370)
+:assumption (or x7553 (not x22031))
+:assumption (or (not x28973) x15532)
+:assumption (or (not x13956) x17639)
+:assumption (or (not x26717) (not x7723))
+:assumption (or (not x12971) x30132)
+:assumption (or x15785 (not x23244))
+:assumption (or x2584 (not x8961))
+:assumption (or (not x7376) (not x1621))
+:assumption (or (not x16099) x27002)
+:assumption (or x11430 (not x20590))
+:assumption (or x17960 (not x9875))
+:assumption (or x5190 x25614 (not x31178) (not x26750) (not x1124) x9008)
+:assumption (or (not x23703) x9332)
+:assumption (or (not x29586) (not x9258) (not x4292) x3779 (not x20755))
+:assumption (or (not x6316) x17039)
+:assumption (or (not x19540) x26378)
+:assumption (or (not x6222) x1911)
+:assumption (or x3006 x24207 (not x28912))
+:assumption (or x23244 x554 (not x24756))
+:assumption (or x30946 x26961)
+:assumption (or (not x12652) (not x16702))
+:assumption (or x8219 x4253 (not x26782) x11247 x22924)
+:assumption (or x2627 x9100)
+:assumption (or x18082 (not x14388))
+:assumption (or (not x7806) x16078)
+:assumption (or (not x10793) x9008)
+:assumption (or x10112 (not x29139))
+:assumption (or (not x9126) (not x29286) x30629 (not x23038) (not x7919) (not x15241) x17284 x3117)
+:assumption (or x19139 (not x16236))
+:assumption (or (not x19431) (not x17834))
+:assumption (or (not x19207) x5590 (not x21484) (not x28580) (not x25064) (not x12928))
+:assumption (or (not x15530) x26105)
+:assumption (or (not x13140) x5528)
+:assumption (or (not x27938) x9245)
+:assumption (or (not x11168) (not x13672))
+:assumption (or x22413 (not x16304))
+:assumption (or x10896 (not x13285))
+:assumption (or (not x17244) x681)
+:assumption (or (not x8579) x6185)
+:assumption (or x24674 x18651)
+:assumption (or x854 (not x3075))
+:assumption (or (not x26945) x21063)
+:assumption (or (not x25366) x4821)
+:assumption (or x1965 (not x8002))
+:assumption (or (not x30751) (not x30888) x22651)
+:assumption (or (not x10278) (not x19852))
+:assumption (or (not x8018) x22369)
+:assumption (or x28732 x17189)
+:assumption (or x19574 (not x27012))
+:assumption (or (not x12914) x17361)
+:assumption (or (not x9951) x29148)
+:assumption (or (not x16737) (not x4246) x16380 x29836 x30769)
+:assumption (or (not x23783) (not x22329))
+:assumption (or x14206 x26055)
+:assumption (or (not x26357) (not x10802))
+:assumption (or x10656 x17397)
+:assumption (or x26647 x17303)
+:assumption (or (not x16315) (not x3640))
+:assumption (or (not x13622) x13540)
+:assumption (or (not x1274) x18236)
+:assumption (or (not x13956) x15371 x29772)
+:assumption (or x20501 (not x8226) x12100 x16286)
+:assumption (or (not x3444) (not x10107) x21298 (not x13236) x10378 x29034)
+:assumption (or (not x23369) x7195)
+:assumption (or x19169 x1393 (not x31340))
+:assumption (or x27817 (not x26008))
+:assumption (or x9090 (not x23443) x13956)
+:assumption (or x28832 x11972)
+:assumption (or (not x30209) x21672)
+:assumption (or (not x24767) x4188)
+:assumption (or x7100 x10343)
+:assumption (or (not x9953) x7768)
+:assumption (or x16196 (not x16801))
+:assumption (or (not x16652) x5798)
+:assumption (or (not x20111) (not x23897) (not x25606) (not x11462))
+:assumption (or x7080 (not x9908))
+:assumption (or x16290 x5394)
+:assumption (or (not x13576) x3452)
+:assumption (or x21531 x7142)
+:assumption (or x25452 x17302)
+:assumption (or (not x15917) (not x9695))
+:assumption (or x31498 (not x18046))
+:assumption (or x31829 x17799 x11896 x918)
+:assumption (or (not x12324) (not x7579))
+:assumption (or (not x15917) (not x30260))
+:assumption (or (not x12176) x31623)
+:assumption (or x20580 (not x21857))
+:assumption (or x28375 x22184)
+:assumption (or x9592 (not x4220))
+:assumption (or (not x22760) (not x10817))
+:assumption (or x7239 (not x14372))
+:assumption (or x21359 x16630)
+:assumption (or x24271 x31096)
+:assumption (or (not x25837) (not x5154))
+:assumption (or x22045 x27562 (not x27884))
+:assumption (or x13942 (not x16305))
+:assumption (or (not x16044) (not x28177))
+:assumption (or (not x30425) (not x17335))
+:assumption (or x7022 (not x1720))
+:assumption (or x283 x22821)
+:assumption (or x21344 x19192)
+:assumption (or (not x720) x14491)
+:assumption (or x29326 x18553)
+:assumption (or (not x11039) (not x5651))
+:assumption (or x16490 (not x19474))
+:assumption (or (not x397) x24991)
+:assumption (or (not x15524) x5115)
+:assumption (or x9025 (not x13167))
+:assumption (or (not x26897) (not x28088))
+:assumption (or x29281 (not x21050))
+:assumption (or (not x4520) (not x18890))
+:assumption (or x9008 (not x3271))
+:assumption (or (not x25632) (not x7954))
+:assumption (or (not x28210) x668)
+:assumption (or x13613 (not x8602))
+:assumption (or x3176 x31670)
+:assumption (or x14299 x6951 x510 x20602)
+:assumption (or (not x21433) (not x22298))
+:assumption (or x20140 x27055)
+:assumption (or x29304 (not x27834))
+:assumption (or x29566 x15208)
+:assumption (or x10373 x23244)
+:assumption (or (not x21061) (not x5129))
+:assumption (or x8406 x25273)
+:assumption (or (not x8175) (not x16341))
+:assumption (or x5842 x14931)
+:assumption (or x29060 (not x31155))
+:assumption (or x1958 x9675)
+:assumption (or (not x15900) x30535)
+:assumption (or x8132 (not x19077) x18275 x4855)
+:assumption (or x7578 (not x13749))
+:assumption (or (not x20001) x10628)
+:assumption (or (not x2241) (not x16510))
+:assumption (or (not x21737) x19413)
+:assumption (or (not x19138) (not x9859))
+:assumption (or (not x11934) (not x24488))
+:assumption (or (not x20008) (not x14583))
+:assumption (or (not x9638) x18148)
+:assumption (or (not x12044) x28116)
+:assumption (or x19428 x22663)
+:assumption (or x7771 (not x7738))
+:assumption (or x21683 x13881 (not x22104) (not x1743) (not x30796) (not x28832) (not x11405) (not x21938))
+:assumption (or x16972 x29006)
+:assumption (or x348 (not x27373))
+:assumption (or (not x7338) (not x1815))
+:assumption (or (not x5816) x29002)
+:assumption (or (not x7308) (not x29262))
+:assumption (or x5237 x7841)
+:assumption (or (not x15325) (not x13956))
+:assumption (or x27222 (not x19487) (not x12578))
+:assumption (or x8729 (not x12652))
+:assumption (or (not x23022) x15862)
+:assumption (or (not x12545) x18694)
+:assumption (or (not x29094) x8024)
+:assumption (or (not x17373) (not x4590))
+:assumption (or (not x9623) (not x25224))
+:assumption (or x15565 (not x14297))
+:assumption (or x2295 x8756)
+:assumption (or x4866 (not x2174))
+:assumption (or (not x29571) x28584 x5561 (not x13540))
+:assumption (or x21501 (not x9155))
+:assumption (or x58 (not x16512))
+:assumption (or (not x16188) (not x21815))
+:assumption (or x5122 (not x18369))
+:assumption (or x8862 x13850 (not x15564) x14114 (not x11107) x15229 x19581 (not x18479))
+:assumption (or x22624 (not x26593))
+:assumption (or (not x9568) (not x9130))
+:assumption (or x29797 (not x23781))
+:assumption (or x2283 (not x3453) (not x7609))
+:assumption (or x11005 (not x2049))
+:assumption (or (not x17416) (not x4516))
+:assumption (or (not x11818) (not x2278))
+:assumption (or (not x10484) (not x9510))
+:assumption (or (not x3494) x31860)
+:assumption (or x5937 (not x9961) (not x15822) (not x31303) x31110 (not x28253))
+:assumption (or x14254 x21090)
+:assumption (or (not x25770) x20932 x18001)
+:assumption (or (not x12923) (not x8178))
+:assumption (or x2022 x27700)
+:assumption (or x7542 (not x12592))
+:assumption (or x23783 (not x14347) x8259)
+:assumption (or (not x699) (not x18374) (not x15522) x26432)
+:assumption (or (not x2632) x28812)
+:assumption (or x26492 (not x7256))
+:assumption (or (not x2244) (not x30704))
+:assumption (or (not x14924) (not x24806))
+:assumption (or (not x9906) (not x30903))
+:assumption (or (not x23563) x30843)
+:assumption (or (not x10406) (not x6737) x3411 x27563 x20290)
+:assumption (or x4755 (not x29649))
+:assumption (or x10285 x5556)
+:assumption (or (not x27023) (not x21389))
+:assumption (or x22067 (not x13777))
+:assumption (or x13576 x31624)
+:assumption (or (not x1702) (not x15819))
+:assumption (or x12041 (not x10336))
+:assumption (or x23265 x8531)
+:assumption (or (not x14877) x7614)
+:assumption (or (not x16677) x14610)
+:assumption (or (not x12729) (not x13468))
+:assumption (or x28382 (not x7722))
+:assumption (or (not x25561) x1256)
+:assumption (or (not x23381) x2166)
+:assumption (or (not x3298) x16025 (not x23328))
+:assumption (or x17668 (not x7403))
+:assumption (or (not x24186) x31850)
+:assumption (or x26647 (not x26494))
+:assumption (or x10553 (not x19082))
+:assumption (or (not x18666) x11162)
+:assumption (or (not x208) x18024)
+:assumption (or x21267 x20913)
+:assumption (or (not x6951) (not x26666) x4376 x12738 x20847 (not x5520))
+:assumption (or (not x15370) x2351)
+:assumption (or (not x3574) x12308 (not x9688) x17746)
+:assumption (or (not x30411) x4175 x12004)
+:assumption (or x7717 (not x19174))
+:assumption (or (not x30902) x27708 (not x12826) (not x10623) x10009)
+:assumption (or x3852 (not x9570))
+:assumption (or x3973 (not x7515) x31032)
+:assumption (or x55 (not x10232) x23633)
+:assumption (or x9531 x11732)
+:assumption (or (not x19773) (not x28257))
+:assumption (or x8857 (not x17653))
+:assumption (or x20319 x29533)
+:assumption (or x23763 x6149 (not x11704))
+:assumption (or x20955 (not x29583))
+:assumption (or x29078 x7436)
+:assumption (or x29110 (not x20985) (not x3646) (not x1190) (not x6086))
+:assumption (or (not x28182) (not x12880))
+:assumption (or x312 x827 x24658)
+:assumption (or (not x24852) (not x27915))
+:assumption (or (not x5528) x14039)
+:assumption (or (not x464) x806)
+:assumption (or x27627 (not x12235) x7643 (not x20041))
+:assumption (or x15659 (not x23268) (not x31114))
+:assumption (or x13892 (not x23200) (not x22758) (not x14442))
+:assumption (or (not x27512) x31388)
+:assumption (or x327 x2880 x21437)
+:assumption (or (not x26970) x3434)
+:assumption (or (not x19018) (not x25485))
+:assumption (or (not x69) x16759)
+:assumption (or x27113 (not x21653) (not x6068))
+:assumption (or x2142 x18243)
+:assumption (or x15822 x2638)
+:assumption (or x1013 (not x7742))
+:assumption (or x1509 x23521)
+:assumption (or (not x17850) (not x24330))
+:assumption (or (not x5970) x23937)
+:assumption (or x29312 (not x25224) x21855 x26723 (not x24756) (not x22299))
+:assumption (or (not x18859) (not x4719))
+:assumption (or (not x8099) x27209)
+:assumption (or x15948 x7769)
+:assumption (or x2762 x11999)
+:assumption (or (not x2325) x23403)
+:assumption (or (not x15795) (not x4062))
+:assumption (or x10454 x12945)
+:assumption (or x24366 x972)
+:assumption (or x4340 (not x10206))
+:assumption (or (not x12816) x3781 (not x10874))
+:assumption (or x21777 x24360)
+:assumption (or (not x215) x15949)
+:assumption (or (not x22713) x17393)
+:assumption (or x8396 (not x11235))
+:assumption (or (not x3391) (not x16298))
+:assumption (or (not x18116) (not x18138))
+:assumption (or x12969 x18334)
+:assumption (or x25552 (not x25646))
+:assumption (or x4507 x8298)
+:assumption (or x11226 (not x9612))
+:assumption (or (not x4458) (not x27168))
+:assumption (or x8796 x1582)
+:assumption (or x15300 (not x23071))
+:assumption (or x15828 x28710)
+:assumption (or x11133 x24155 (not x25423))
+:assumption (or (not x13086) x27332)
+:assumption (or x28973 x4964)
+:assumption (or (not x11663) (not x29145))
+:assumption (or x28247 (not x25039))
+:assumption (or x24181 x11264)
+:assumption (or (not x26310) x24853)
+:assumption (or (not x18898) (not x16510))
+:assumption (or (not x22665) (not x17166))
+:assumption (or (not x6068) x14503)
+:assumption (or x26372 (not x5053))
+:assumption (or (not x953) (not x29690))
+:assumption (or x9957 x5155)
+:assumption (or x31928 (not x10128))
+:assumption (or (not x19428) (not x30954) (not x9194) (not x30856) (not x25355))
+:assumption (or (not x11684) (not x5528))
+:assumption (or (not x18025) x9521)
+:assumption (or (not x19152) x17761)
+:assumption (or (not x28259) x8406)
+:assumption (or x23506 x26777)
+:assumption (or (not x25425) x28892)
+:assumption (or x8038 x9008)
+:assumption (or (not x13808) x20136)
+:assumption (or (not x16319) x19707)
+:assumption (or (not x5246) (not x9008))
+:assumption (or (not x23871) x10813)
+:assumption (or x17116 (not x11023))
+:assumption (or x30751 x19423)
+:assumption (or x2714 (not x17016))
+:assumption (or (not x23315) (not x24289))
+:assumption (or x31898 x5266)
+:assumption (or (not x8796) x9629 x8267 (not x1582))
+:assumption (or (not x15695) x4239)
+:assumption (or (not x1049) x29953)
+:assumption (or (not x31474) x29238 (not x18032) (not x14288))
+:assumption (or x29503 (not x30447))
+:assumption (or x20651 (not x21202) x29560 (not x10627))
+:assumption (or (not x3435) x12767)
+:assumption (or x15584 (not x29926))
+:assumption (or (not x29636) x20317)
+:assumption (or x27169 (not x9008) x30667 x1949 (not x5528))
+:assumption (or x1582 (not x7274))
+:assumption (or x28885 (not x23864))
+:assumption (or x3436 (not x25990))
+:assumption (or x27816 x17969)
+:assumption (or (not x27041) x1548)
+:assumption (or x20402 x25469)
+:assumption (or (not x10888) x14839)
+:assumption (or (not x873) x13314)
+:assumption (or (not x2871) (not x9430))
+:assumption (or (not x21417) x14029)
+:assumption (or x8820 (not x10242))
+:assumption (or x25317 x23731)
+:assumption (or (not x24954) x16010)
+:assumption (or x30303 x17363)
+:assumption (or (not x8658) x16946)
+:assumption (or x380 x4451)
+:assumption (or x30181 x4814)
+:assumption (or (not x3047) (not x8002))
+:assumption (or x2844 x31441)
+:assumption (or (not x23532) (not x13076))
+:assumption (or x30124 (not x13538))
+:assumption (or (not x10257) x18418)
+:assumption (or (not x1686) (not x3586))
+:assumption (or (not x9507) (not x31919))
+:assumption (or (not x30646) (not x19931))
+:assumption (or x24563 x3484)
+:assumption (or (not x27991) (not x6095))
+:assumption (or x28065 x16906 x20357 x7635)
+:assumption (or (not x16380) (not x29836))
+:assumption (or (not x18504) x21447)
+:assumption (or (not x29489) (not x9008) x5249 (not x5528) x4359)
+:assumption (or x11941 (not x19509))
+:assumption (or (not x22379) x23244 (not x17092))
+:assumption (or (not x11726) (not x11345))
+:assumption (or x27901 x29546)
+:assumption (or (not x14260) x28314 (not x1595))
+:assumption (or (not x21226) x21842)
+:assumption (or x25441 x1901)
+:assumption (or (not x1090) x10823)
+:assumption (or (not x10449) x13383)
+:assumption (or (not x20967) x7769)
+:assumption (or x669 x8002)
+:assumption (or x14395 (not x25074))
+:assumption (or x23980 (not x9883) x18825 (not x11839) x1872)
+:assumption (or (not x22779) x31536)
+:assumption (or (not x26124) (not x29951) x22488 x13861 x27343 x17648 x25673 (not x25416))
+:assumption (or x12173 x24550)
+:assumption (or x4317 x15357 (not x14684) x31111 x15621 (not x8100) x21050 (not x6012) (not x23467))
+:assumption (or (not x11974) (not x1014))
+:assumption (or (not x8002) (not x16237))
+:assumption (or x20325 (not x13333) (not x12242) x369)
+:assumption (or (not x9647) (not x10756) (not x30940))
+:assumption (or (not x16823) (not x14666))
+:assumption (or (not x22441) (not x4895) x14700 x27032 (not x26189))
+:assumption (or x10383 (not x21417) (not x24137))
+:assumption (or x9132 x20693 (not x17688))
+:assumption (or x20266 x4376 (not x26666) x20847 (not x28732) x12738)
+:assumption (or (not x20556) x29185)
+:assumption (or (not x9204) x22273)
+:assumption (or x24967 (not x26519))
+:assumption (or x3125 (not x26407))
+:assumption (or (not x1353) (not x18117))
+:assumption (or (not x12451) (not x28271))
+:assumption (or (not x19045) x29751 x827)
+:assumption (or (not x9507) x4996)
+:assumption (or (not x10559) (not x1265) (not x13413) (not x25470))
+:assumption (or x19609 (not x5446))
+:assumption (or x16951 (not x17504) (not x16610) x8054 x31489 x12852 (not x2508))
+:assumption (or x3788 (not x2966))
+:assumption (or (not x3146) x12883)
+:assumption (or (not x27262) x103)
+:assumption (or (not x9043) x3533)
+:assumption (or (not x2133) x28182)
+:assumption (or (not x30756) (not x28868))
+:assumption (or (not x6812) x9008)
+:assumption (or (not x23206) x26933)
+:assumption (or (not x15795) x26897 (not x30219) (not x14591) (not x30586) x30138 x8623)
+:assumption (or x9435 x24577 x30096 x19657 x13622 (not x27331) (not x13540))
+:assumption (or (not x18748) (not x17221))
+:assumption (or x30891 (not x2596))
+:assumption (or (not x18493) x24046)
+:assumption (or (not x31573) (not x4375))
+:assumption (or (not x28623) (not x4426))
+:assumption (or x31791 x24355)
+:assumption (or (not x14931) (not x24905))
+:assumption (or (not x11808) (not x8826))
+:assumption (or x3745 x10873)
+:assumption (or x5819 x9436)
+:assumption (or x6289 (not x259))
+:assumption (or x4565 x20013)
+:assumption (or x28293 (not x28188) (not x537) (not x15192) (not x7284) x25015 (not x4601) x21226 x3906)
+:assumption (or x13334 x23712)
+:assumption (or (not x17441) x3092)
+:assumption (or (not x10067) (not x15748))
+:assumption (or (not x26070) (not x13116))
+:assumption (or (not x23789) (not x15973) x20949 (not x28838) x1050)
+:assumption (or x9025 x11501)
+:assumption (or (not x22038) x8382)
+:assumption (or (not x14100) x26981)
+:assumption (or x18310 x11095)
+:assumption (or x21815 (not x189))
+:assumption (or (not x23244) x18765 (not x19335) x5749 (not x3953) x3162)
+:assumption (or (not x4865) x11453)
+:assumption (or (not x7039) x19795 x5591 x11680)
+:assumption (or (not x2633) x17018)
+:assumption (or (not x396) x28423)
+:assumption (or x2311 (not x7602))
+:assumption (or (not x12856) x20372)
+:assumption (or x5495 x15212)
+:assumption (or x27704 (not x1299))
+:assumption (or x5342 (not x25659) (not x17967))
+:assumption (or x13298 x10623)
+:assumption (or (not x16185) (not x533))
+:assumption (or (not x25002) x14698)
+:assumption (or x4086 (not x4034))
+:assumption (or x24393 x6156)
+:assumption (or (not x9647) x22220)
+:assumption (or x7870 x17276)
+:assumption (or x15172 x16025)
+:assumption (or x22655 (not x12229))
+:assumption (or x16312 (not x22426))
+:assumption (or (not x3738) x31379)
+:assumption (or x13965 x288 (not x15611) (not x30890) (not x25963))
+:assumption (or x19677 x12048)
+:assumption (or (not x6969) x19842)
+:assumption (or x18567 x13212 x13956 x23244 (not x31782) x8002)
+:assumption (or (not x30821) (not x11746))
+:assumption (or (not x27210) x3097 x7748)
+:assumption (or x28502 (not x10692))
+:assumption (or (not x6951) (not x20602))
+:assumption (or x3343 (not x25072))
+:assumption (or x7880 (not x5117))
+:assumption (or (not x25030) x24104 x28514)
+:assumption (or (not x10312) x15081)
+:assumption (or x18519 x20203)
+:assumption (or x20671 (not x17149))
+:assumption (or x18456 x9959)
+:assumption (or (not x15102) x15209)
+:assumption (or (not x13430) x2601)
+:assumption (or (not x11038) x31308)
+:assumption (or (not x17984) x28328)
+:assumption (or x29608 x3261)
+:assumption (or x9930 (not x29134))
+:assumption (or (not x4260) (not x31725))
+:assumption (or x22325 (not x6349) x2698 (not x25925) (not x12348))
+:assumption (or (not x4563) x22723)
+:assumption (or (not x30979) x18459)
+:assumption (or (not x13576) (not x31099) x3462 x9531)
+:assumption (or (not x22065) (not x26385))
+:assumption (or x3423 (not x21137))
+:assumption (or (not x31407) (not x7007))
+:assumption (or x26786 x30954 (not x26638) (not x19428))
+:assumption (or (not x10809) x10932)
+:assumption (or (not x8574) (not x22047))
+:assumption (or x28383 x15246)
+:assumption (or x18042 (not x31495))
+:assumption (or (not x27017) (not x22360))
+:assumption (or (not x10052) x252)
+:assumption (or x30899 (not x26322))
+:assumption (or (not x2277) (not x14338))
+:assumption (or x31898 (not x24055))
+:assumption (or (not x24698) (not x11106) (not x16806))
+:assumption (or x21456 x14250)
+:assumption (or x27789 (not x15054))
+:assumption (or (not x29305) (not x10035))
+:assumption (or (not x1582) (not x26008) x8838)
+:assumption (or (not x12242) x22066)
+:assumption (or (not x12242) x12692)
+:assumption (or x29480 (not x27111))
+:assumption (or x12803 (not x27021))
+:assumption (or x25046 x28765)
+:assumption (or x4178 (not x11635))
+:assumption (or (not x16570) (not x10509) x4303 x2873)
+:assumption (or x9096 (not x4504))
+:assumption (or x31598 x30317)
+:assumption (or (not x20921) x14293)
+:assumption (or (not x22241) (not x305))
+:assumption (or (not x30841) x25350)
+:assumption (or (not x31357) (not x4073))
+:assumption (or (not x29434) x489)
+:assumption (or x25209 (not x8339))
+:assumption (or x15157 x23941)
+:assumption (or (not x9008) x11070)
+:assumption (or (not x14502) x687)
+:assumption (or (not x22711) (not x24079))
+:assumption (or (not x16117) (not x19961))
+:assumption (or (not x14899) x8433)
+:assumption (or x14846 x14760 (not x22585) x8602 (not x30370) x11655 (not x25961) x17494)
+:assumption (or (not x31093) x12192)
+:assumption (or (not x30747) (not x12397))
+:assumption (or (not x3494) (not x15820))
+:assumption (or x17230 (not x8081))
+:assumption (or x23244 (not x22323))
+:assumption (or x19217 (not x31505))
+:assumption (or x16917 x7280)
+:assumption (or (not x22752) (not x21188))
+:assumption (or x19292 (not x18031))
+:assumption (or (not x7521) (not x24416))
+:assumption (or (not x24389) (not x7140))
+:assumption (or (not x26495) (not x11160))
+:assumption (or x26551 (not x1773) x18402 x5865 x4682 (not x12113))
+:assumption (or x6855 (not x2135) (not x16268) (not x15634) (not x5445) (not x29333))
+:assumption (or (not x30027) x14704)
+:assumption (or (not x27102) (not x21958))
+:assumption (or (not x15281) (not x2674))
+:assumption (or (not x19519) x2839)
+:assumption (or (not x8696) (not x23115))
+:assumption (or x2632 (not x21202) x26947 (not x31844) x9357 x8471 x18539)
+:assumption (or (not x23495) x22450)
+:assumption (or x26265 x22020)
+:assumption (or x19501 (not x7591))
+:assumption (or x16684 (not x26214))
+:assumption (or (not x11548) (not x18203))
+:assumption (or (not x17481) x20027)
+:assumption (or x5067 x29196 (not x18935))
+:assumption (or (not x31617) x24257 (not x18462))
+:assumption (or x24923 x5528)
+:assumption (or (not x30113) x1681)
+:assumption (or x10103 x13389)
+:assumption (or x15625 x27121)
+:assumption (or x15897 (not x17123))
+:assumption (or x14508 x61)
+:assumption (or x3001 (not x202) x21555 (not x16583))
+:assumption (or (not x3435) (not x14011))
+:assumption (or (not x766) x27803 (not x10482))
+:assumption (or x29249 (not x9933))
+:assumption (or (not x22943) x15907)
+:assumption (or (not x29684) (not x12498))
+:assumption (or (not x16719) (not x9302) x5025 (not x6104))
+:assumption (or x31767 (not x19332) (not x22870) x22930)
+:assumption (or x21233 x9008)
+:assumption (or (not x7200) (not x11818))
+:assumption (or (not x914) (not x29274))
+:assumption (or x10367 (not x14037) (not x17075))
+:assumption (or (not x20450) (not x8002))
+:assumption (or (not x28790) (not x5193))
+:assumption (or x21843 (not x31702))
+:assumption (or x27620 x25631)
+:assumption (or (not x25008) (not x9405))
+:assumption (or (not x1393) x19496)
+:assumption (or (not x4270) (not x29725))
+:assumption (or (not x28300) x6999)
+:assumption (or x11924 x12555)
+:assumption (or x24152 x28736)
+:assumption (or (not x11615) x1393)
+:assumption (or x14941 (not x9466))
+:assumption (or (not x5889) (not x5668))
+:assumption (or (not x16446) x28817)
+:assumption (or x445 x23981)
+:assumption (or (not x14889) x13018 (not x24963) x13993)
+:assumption (or x21070 (not x27159))
+:assumption (or x27159 (not x24355) x9531 (not x21070))
+:assumption (or (not x1269) x9474 x28358 (not x11288) (not x20358) (not x15143))
+:assumption (or (not x6909) (not x7330))
+:assumption (or x9724 x13795)
+:assumption (or x20413 (not x8002))
+:assumption (or x11475 (not x13818))
+:assumption (or (not x27023) (not x1137))
+:assumption (or (not x20056) (not x12749))
+:assumption (or x23016 x23244)
+:assumption (or x22256 (not x17358))
+:assumption (or x31058 x9271)
+:assumption (or x28948 (not x399))
+:assumption (or x21815 (not x17541))
+:assumption (or x10064 (not x13585))
+:assumption (or x5528 x16362 (not x4172))
+:assumption (or x31275 (not x23096))
+:assumption (or (not x21298) x31321)
+:assumption (or (not x4592) x14839)
+:assumption (or x24779 x12940)
+:assumption (or x17870 (not x4402))
+:assumption (or (not x9008) x29975)
+:assumption (or x4784 (not x18608))
+:assumption (or (not x28541) (not x16323))
+:assumption (or x3059 x13218)
+:assumption (or x827 (not x26043))
+:assumption (or (not x29406) (not x11488))
+:assumption (or (not x3392) x9089 x29455 (not x23288) (not x30877) (not x5528))
+:assumption (or x11281 x26299)
+:assumption (or x7849 (not x19536))
+:assumption (or x25020 (not x1926))
+:assumption (or x17088 x21215)
+:assumption (or (not x19808) (not x19183))
+:assumption (or (not x7258) (not x16392) (not x11800) x9079 (not x30987) x21335)
+:assumption (or (not x29935) (not x10743))
+:assumption (or x29252 (not x25538))
+:assumption (or (not x30228) x4017)
+:assumption (or x5528 (not x14018))
+:assumption (or x23449 (not x20862))
+:assumption (or (not x16847) (not x5519))
+:assumption (or x6097 x25680 x26266)
+:assumption (or x13780 (not x14862))
+:assumption (or x16309 (not x17432))
+:assumption (or (not x30215) (not x6050))
+:assumption (or (not x31901) (not x21390) (not x5367))
+:assumption (or x26399 x3617 x14245)
+:assumption (or x22531 (not x13544) (not x12516) (not x23531))
+:assumption (or x5696 x26010)
+:assumption (or x19072 (not x30398))
+:assumption (or x18802 x12770)
+:assumption (or (not x4275) x4562 x17359 x6090 x24944)
+:assumption (or x20706 x7744)
+:assumption (or (not x18623) x13423 x2844 (not x6705))
+:assumption (or x31486 x19392)
+:assumption (or (not x27370) x8002)
+:assumption (or (not x8541) x29318 x531 (not x6560) x17796 x6050 x2334 (not x12636))
+:assumption (or (not x4474) (not x23926))
+:assumption (or (not x1043) (not x4969))
+:assumption (or (not x15917) (not x11858))
+:assumption (or (not x20109) x6318)
+:assumption (or x30272 x14129)
+:assumption (or x13543 (not x30138))
+:assumption (or x20832 x6816)
+:assumption (or (not x22448) x30048)
+:assumption (or (not x12243) (not x30261))
+:assumption (or (not x8602) (not x1619))
+:assumption (or (not x30942) x4865)
+:assumption (or (not x31341) x25178)
+:assumption (or x27636 x28778 x19823)
+:assumption (or (not x18711) (not x13363))
+:assumption (or (not x7995) (not x7369))
+:assumption (or x21207 x21061)
+:assumption (or (not x7079) (not x16842))
+:assumption (or (not x18399) (not x31720))
+:assumption (or (not x1585) (not x23244))
+:assumption (or (not x3264) (not x28740))
+:assumption (or x4278 (not x30227))
+:assumption (or (not x9882) x24887)
+:assumption (or x24714 (not x24422))
+:assumption (or (not x1393) x1509)
+:assumption (or x21653 (not x22691))
+:assumption (or x26171 (not x15467))
+:assumption (or (not x31815) x27309)
+:assumption (or x17564 (not x22307))
+:assumption (or (not x915) x24173)
+:assumption (or (not x14272) x1190)
+:assumption (or (not x3281) (not x19711))
+:assumption (or x5141 x18288)
+:assumption (or x6034 (not x27715))
+:assumption (or (not x8972) x6772)
+:assumption (or x1266 x10087)
+:assumption (or (not x4969) x31578 x8287 x28 x27446 x3549 (not x27635) (not x30875))
+:assumption (or (not x6565) (not x27233))
+:assumption (or (not x10339) (not x30256) x29411)
+:assumption (or (not x19478) (not x632))
+:assumption (or (not x22972) (not x89))
+:assumption (or x9750 x9711)
+:assumption (or x14810 (not x30138))
+:assumption (or (not x24335) (not x28926))
+:assumption (or (not x10772) x5394)
+:assumption (or (not x3557) (not x11541))
+:assumption (or (not x29209) (not x1912))
+:assumption (or x16939 x16743 x7778)
+:assumption (or x16076 (not x12256))
+:assumption (or x17220 (not x4635))
+:assumption (or (not x14045) (not x22820) x18201 (not x2334))
+:assumption (or (not x30420) (not x29312) x8910 (not x24756))
+:assumption (or x5679 x19111)
+:assumption (or (not x16329) x14578 x30308 x8408)
+:assumption (or (not x7078) (not x28328))
+:assumption (or x3016 x28968)
+:assumption (or (not x12957) x22162 (not x31270))
+:assumption (or x15995 (not x5904))
+:assumption (or (not x13411) x15306)
+:assumption (or x14776 (not x27306) x4559)
+:assumption (or x15437 x23920)
+:assumption (or x10504 (not x17419))
+:assumption (or (not x25555) (not x13001))
+:assumption (or x526 (not x8602) x26418)
+:assumption (or x570 (not x1326))
+:assumption (or x13065 x20371)
+:assumption (or (not x8002) x9867)
+:assumption (or x20167 x2251 (not x9606))
+:assumption (or x24387 (not x15391) (not x17509) x13809 (not x20472) x16863)
+:assumption (or (not x2531) x14695)
+:assumption (or (not x27690) (not x2133))
+:assumption (or (not x25373) x23861)
+:assumption (or (not x27757) x31658)
+:assumption (or (not x6711) x30629)
+:assumption (or (not x30439) (not x12313))
+:assumption (or (not x8095) (not x29652))
+:assumption (or (not x2642) (not x27258))
+:assumption (or (not x5411) (not x2152))
+:assumption (or (not x28007) x9481)
+:assumption (or x17225 x625)
+:assumption (or (not x3782) x24004)
+:assumption (or (not x2444) (not x23474) (not x30868) x21012 x12824 (not x19858) x1803)
+:assumption (or x17109 x18954 (not x1920))
+:assumption (or (not x15453) (not x17662))
+:assumption (or x1052 (not x12197))
+:assumption (or (not x20460) x25854 (not x9253) (not x7511) x27813 x14313)
+:assumption (or x11602 x147)
+:assumption (or (not x26779) (not x422))
+:assumption (or (not x14144) (not x7835))
+:assumption (or (not x24384) (not x23021))
+:assumption (or x24730 x17019)
+:assumption (or (not x19629) (not x26713))
+:assumption (or x29254 x19854)
+:assumption (or (not x28328) x22010)
+:assumption (or (not x16245) (not x10919))
+:assumption (or x1782 (not x4645))
+:assumption (or x5675 x25170)
+:assumption (or (not x4972) (not x17977))
+:assumption (or (not x21343) (not x11896))
+:assumption (or (not x10679) x3288)
+:assumption (or (not x15396) x29663)
+:assumption (or x3426 (not x3842))
+:assumption (or (not x15795) (not x22459))
+:assumption (or x30054 x22224 x20250 (not x29999) (not x23818))
+:assumption (or x10905 x4940)
+:assumption (or (not x9123) (not x14302) (not x20651))
+:assumption (or (not x10772) (not x25570))
+:assumption (or x20077 x30749)
+:assumption (or x27537 (not x26019) (not x4401) x7924)
+:assumption (or x16114 (not x14497))
+:assumption (or x5317 (not x21621))
+:assumption (or x10064 x14056)
+:assumption (or (not x279) (not x10138))
+:assumption (or (not x10358) (not x16470) x20178)
+:assumption (or (not x21856) x21653 (not x18157))
+:assumption (or x25366 x31144 x6934)
+:assumption (or x27796 x18397)
+:assumption (or (not x2188) x27889)
+:assumption (or x1221 (not x8002))
+:assumption (or (not x21815) x25211 x28912 (not x16510) x3435)
+:assumption (or (not x23396) x20156)
+:assumption (or x9414 x20201 x8474)
+:assumption (or (not x14321) x16932)
+:assumption (or (not x2910) x11312)
+:assumption (or x18220 x14455)
+:assumption (or x9008 x22547)
+:assumption (or (not x23360) x11873)
+:assumption (or (not x22675) x18801)
+:assumption (or (not x6899) (not x2664))
+:assumption (or x15583 (not x913))
+:assumption (or x26040 (not x10231) (not x6294))
+:assumption (or (not x13956) (not x15317))
+:assumption (or (not x3494) x25934 (not x17741))
+:assumption (or (not x26201) x17803)
+:assumption (or x4014 (not x15037) x19035 (not x11939) x14010)
+:assumption (or x63 x27058)
+:assumption (or x12069 (not x14178) (not x29649))
+:assumption (or (not x27252) x28378)
+:assumption (or (not x27330) (not x14991))
+:assumption (or (not x13225) (not x16185))
+:assumption (or (not x3904) x9820)
+:assumption (or x16585 x827 x22230)
+:assumption (or x13812 (not x29071))
+:assumption (or (not x7441) (not x18689))
+:assumption (or (not x12386) x24246)
+:assumption (or (not x6244) (not x12071))
+:assumption (or (not x1607) (not x25706))
+:assumption (or x28036 x19355)
+:assumption (or x15586 x19187)
+:assumption (or (not x17359) (not x11281) x17219)
+:assumption (or (not x26892) (not x15734))
+:assumption (or x16212 (not x5028))
+:assumption (or x12355 (not x10214))
+:assumption (or x26092 x6794)
+:assumption (or x4453 x27957)
+:assumption (or (not x22531) x4347)
+:assumption (or x2937 x7255)
+:assumption (or (not x29836) x4246)
+:assumption (or x30940 x10756)
+:assumption (or (not x15089) (not x31107) x22405 x30514)
+:assumption (or (not x13842) x6320)
+:assumption (or x20101 x19098)
+:assumption (or x18452 x20351 x8889 (not x13176) x26080)
+:assumption (or x23958 x17998)
+:assumption (or x19612 x12844 (not x3548) x2399)
+:assumption (or x26068 x21298 x29899 (not x6199) x20049 x28671 x6536)
+:assumption (or (not x15458) (not x22161))
+:assumption (or (not x23244) (not x9976))
+:assumption (or (not x22408) x7939)
+:assumption (or x14924 x24806)
+:assumption (or (not x4939) x20217)
+:assumption (or x25112 x17922)
+:assumption (or (not x20188) x24680)
+:assumption (or (not x18177) x31553)
+:assumption (or x6555 (not x8021))
+:assumption (or (not x26210) (not x12246))
+:assumption (or (not x17783) (not x8944))
+:assumption (or (not x23244) x8851)
+:assumption (or x16221 (not x14926) x23958)
+:assumption (or (not x20051) (not x15989))
+:assumption (or x23499 x21298)
+:assumption (or (not x19048) (not x4840))
+:assumption (or x1531 (not x1182))
+:assumption (or (not x202) x3001 (not x30687))
+:assumption (or (not x11489) (not x18751))
+:assumption (or (not x24534) x21179)
+:assumption (or (not x14246) x13085)
+:assumption (or (not x7764) x25364)
+:assumption (or x18355 x17545)
+:assumption (or (not x26897) x5167 x2281 (not x30138))
+:assumption (or (not x12521) x13347 (not x29269) x14472 (not x31343) x29291)
+:assumption (or (not x10549) x18904)
+:assumption (or x14889 (not x13018))
+:assumption (or x26686 x14113)
+:assumption (or x8807 x19435)
+:assumption (or x18739 x7223)
+:assumption (or x8002 x12567 (not x14405))
+:assumption (or (not x26018) (not x7357))
+:assumption (or (not x25017) x10805 x20068)
+:assumption (or (not x14150) x12141)
+:assumption (or (not x24761) x20620)
+:assumption (or (not x8505) (not x20268))
+:assumption (or x20521 (not x27351) x31846 (not x25763) x27291 (not x5634) x7984 (not x11217))
+:assumption (or (not x21394) (not x16563))
+:assumption (or (not x7068) (not x11097) x1671)
+:assumption (or (not x15467) x20869)
+:assumption (or x5028 x29993)
+:assumption (or x2687 (not x29606))
+:assumption (or (not x2621) x9538)
+:assumption (or x17702 x212)
+:assumption (or (not x30747) x29768)
+:assumption (or x8002 (not x18842))
+:assumption (or (not x2969) (not x29990))
+:assumption (or (not x17745) (not x1507))
+:assumption (or (not x698) x5394 (not x9025))
+:assumption (or x25817 (not x21606) x30633)
+:assumption (or (not x12431) x12045)
+:assumption (or (not x20775) x31026 (not x15072))
+:assumption (or x26039 (not x12126))
+:assumption (or (not x9515) x13919)
+:assumption (or (not x29075) (not x17079))
+:assumption (or (not x13063) x31338)
+:assumption (or (not x6969) (not x5622))
+:assumption (or (not x17539) x31497)
+:assumption (or x21942 (not x31806) (not x27473) x6969)
+:assumption (or x16409 (not x1270))
+:assumption (or (not x24778) x4036)
+:assumption (or (not x18567) (not x29905))
+:assumption (or x8229 x28075 (not x28795))
+:assumption (or (not x24439) x3903 x24722 (not x16802))
+:assumption (or x23712 x10345)
+:assumption (or x1720 x2653 (not x1303) (not x7022))
+:assumption (or (not x7752) (not x75))
+:assumption (or (not x17571) (not x16784) x17704)
+:assumption (or (not x8785) (not x8002))
+:assumption (or x2670 x6031)
+:assumption (or x11099 (not x7457))
+:assumption (or (not x16025) (not x13950))
+:assumption (or x13380 x22395)
+:assumption (or x16721 (not x20358) (not x1269) (not x23553) x9474 (not x15143))
+:assumption (or x18220 (not x10285))
+:assumption (or (not x13854) (not x30432))
+:assumption (or (not x14912) x1088)
+:assumption (or x4291 (not x29606) (not x9824))
+:assumption (or x3897 x8569)
+:assumption (or x16065 (not x20062))
+:assumption (or x3905 x29813)
+:assumption (or (not x5983) (not x16349))
+:assumption (or x1542 x20107)
+:assumption (or x30775 x30614)
+:assumption (or x17297 (not x21460))
+:assumption (or x17070 (not x2836) (not x7693) x3684 x27955 x12210)
+:assumption (or x14738 (not x27482))
+:assumption (or x30070 (not x24868))
+:assumption (or x12011 (not x16374))
+:assumption (or x5272 x20725)
+:assumption (or x13390 x27623)
+:assumption (or (not x1968) x12269)
+:assumption (or (not x18483) (not x16365) x23813 x28033)
+:assumption (or x31553 x30122)
+:assumption (or x15540 (not x8706) x17359)
+:assumption (or (not x8562) x25139)
+:assumption (or (not x23521) (not x1509))
+:assumption (or x18923 x9830)
+:assumption (or x9077 x10194)
+:assumption (or (not x25262) x8002)
+:assumption (or (not x28414) x29897)
+:assumption (or x8656 (not x29963) (not x18049) x13102 x662 x26017)
+:assumption (or x6674 (not x30932))
+:assumption (or (not x19044) (not x28593))
+:assumption (or x12761 (not x25659) (not x14508))
+:assumption (or (not x25366) x25189 x22086)
+:assumption (or (not x5290) (not x29637))
+:assumption (or (not x11128) (not x10536) (not x9423) x21809)
+:assumption (or (not x11792) (not x501))
+:assumption (or x28225 (not x21423) (not x16010) x30452)
+:assumption (or (not x30988) x543)
+:assumption (or x8902 x1533)
+:assumption (or x31829 (not x11727))
+:assumption (or x13210 x30633)
+:assumption (or x7212 (not x4974))
+:assumption (or x4259 (not x16340))
+:assumption (or (not x9918) x22593)
+:assumption (or x27518 x22139)
+:assumption (or (not x4699) (not x27291))
+:assumption (or x3713 x21955)
+:assumption (or (not x10565) x22862)
+:assumption (or x4232 x5528)
+:assumption (or x9453 x9693)
+:assumption (or (not x10963) (not x17030))
+:assumption (or (not x13111) (not x8070))
+:assumption (or x30475 x26959)
+:assumption (or x9939 (not x6316))
+:assumption (or x30879 x1601 (not x25989))
+:assumption (or x20868 (not x18413))
+:assumption (or (not x12437) (not x21755))
+:assumption (or x27504 x24443)
+:assumption (or x394 x1897)
+:assumption (or (not x12199) (not x2510))
+:assumption (or x5050 (not x18458))
+:assumption (or (not x30024) (not x31356))
+:assumption (or (not x10965) x3363 (not x14138))
+:assumption (or (not x1052) x13505)
+:assumption (or (not x1780) x12216)
+:assumption (or (not x24030) (not x29801))
+:assumption (or x680 x21653 x23328)
+:assumption (or x18182 (not x10104))
+:assumption (or x20550 (not x17755))
+:assumption (or (not x15626) (not x13375))
+:assumption (or (not x15382) x2128)
+:assumption (or (not x23244) x28231)
+:assumption (or x12291 x12124)
+:assumption (or x11274 (not x7122))
+:assumption (or (not x14979) x2133)
+:assumption (or (not x9862) x23506)
+:assumption (or (not x26605) (not x19778))
+:assumption (or (not x24737) (not x16426))
+:assumption (or x31885 (not x21933))
+:assumption (or (not x19099) (not x12527))
+:assumption (or (not x28037) (not x674))
+:assumption (or x29325 x25659 (not x3890))
+:assumption (or (not x6985) x21815)
+:assumption (or (not x23143) x12707)
+:assumption (or x19490 (not x28274))
+:assumption (or (not x9279) x2043)
+:assumption (or (not x7118) x19909)
+:assumption (or x28356 (not x2390))
+:assumption (or (not x5528) (not x9008) x13140 (not x21502) x9585)
+:assumption (or (not x2278) (not x9831))
+:assumption (or (not x4137) x2643)
+:assumption (or (not x18985) x24558)
+:assumption (or (not x21815) (not x7781) x5394 (not x1815) (not x16510) (not x29780) x3494)
+:assumption (or x18859 x26236)
+:assumption (or x13810 x21763)
+:assumption (or x22900 (not x3435))
+:assumption (or (not x6253) x16304 x974 (not x11078))
+:assumption (or (not x8937) (not x10825))
+:assumption (or x8446 (not x22960))
+:assumption (or x30570 (not x9497))
+:assumption (or (not x12272) x23738)
+:assumption (or x2543 x16625)
+:assumption (or x3728 (not x10850) (not x754) (not x724) x11644 (not x1920) (not x30287) x227)
+:assumption (or x10664 (not x4702))
+:assumption (or x21843 x14842)
+:assumption (or (not x15167) (not x28116))
+:assumption (or x29106 (not x30590) (not x24853) x30783 x6632 (not x1920) x3669)
+:assumption (or (not x10983) x6032)
+:assumption (or (not x21090) (not x19984) (not x5394))
+:assumption (or x6815 x1393)
+:assumption (or x13036 x22883)
+:assumption (or (not x19663) x30255)
+:assumption (or (not x23244) (not x13967))
+:assumption (or x23821 (not x19228))
+:assumption (or x5528 x15177)
+:assumption (or (not x25526) (not x18656) x14696)
+:assumption (or x10469 (not x5394))
+:assumption (or x29720 (not x18349))
+:assumption (or (not x6338) x4935 (not x24634))
+:assumption (or (not x31089) x21519)
+:assumption (or (not x2177) (not x4741))
+:assumption (or (not x24579) x21184)
+:assumption (or x8002 x17713)
+:assumption (or x18600 (not x707))
+:assumption (or (not x20372) (not x169))
+:assumption (or x20559 x3988)
+:assumption (or x6381 x11658 (not x19555) (not x15496) x3170 (not x12258))
+:assumption (or (not x24722) (not x29130))
+:assumption (or x16409 x8688 x2341 (not x31679) (not x20572))
+:assumption (or x26028 (not x21409))
+:assumption (or x9008 (not x26559))
+:assumption (or x16805 x26135)
+:assumption (or x1208 (not x30667))
+:assumption (or x29623 (not x7032))
+:assumption (or x16479 (not x17056))
+:assumption (or x14212 (not x11972))
+:assumption (or (not x15409) x30575)
+:assumption (or x4795 x18738)
+:assumption (or (not x30800) x16194)
+:assumption (or (not x23244) (not x18778))
+:assumption (or (not x31509) (not x9008) x22058)
+:assumption (or (not x5028) (not x4664))
+:assumption (or (not x5367) (not x3065) x16522)
+:assumption (or (not x21740) x26912 x2132 (not x18772) (not x26931) (not x31334))
+:assumption (or x31363 (not x22328))
+:assumption (or (not x3390) (not x22383))
+:assumption (or x15537 (not x11502) (not x2498) (not x19562))
+:assumption (or x13206 (not x29855))
+:assumption (or x7261 (not x11215))
+:assumption (or x10353 x8400 (not x7827) (not x14032) x1042 (not x17788))
+:assumption (or x5452 x133 x4377 (not x11386) (not x14297) (not x18077) (not x31765))
+:assumption (or (not x31522) (not x24067))
+:assumption (or x18753 x20691)
+:assumption (or x3621 (not x25673))
+:assumption (or x4204 x27166 (not x20325) x12242)
+:assumption (or (not x20781) x7313)
+:assumption (or x19271 (not x18194))
+:assumption (or x13459 (not x25862))
+:assumption (or (not x21734) x16025)
+:assumption (or (not x25062) x7487 (not x30868) x14687)
+:assumption (or x10740 (not x26810) (not x17930) (not x5528) (not x9008))
+:assumption (or (not x15665) (not x21476))
+:assumption (or (not x14701) x1191)
+:assumption (or x12412 (not x23908))
+:assumption (or x12647 (not x1659))
+:assumption (or x15553 x20208 x25659)
+:assumption (or (not x30944) x4957)
+:assumption (or x27208 x18859)
+:assumption (or (not x16648) (not x8255))
+:assumption (or (not x13969) x2840 x28014)
+:assumption (or (not x21221) x11355)
+:assumption (or (not x13638) (not x9437))
+:assumption (or (not x31076) x8796)
+:assumption (or (not x4902) (not x104))
+:assumption (or x21486 (not x24978))
+:assumption (or x23128 x2133)
+:assumption (or (not x5886) x22476)
+:assumption (or x13143 x14705)
+:assumption (or x25549 (not x16667))
+:assumption (or (not x4514) (not x3409))
+:assumption (or (not x20126) (not x23416) x6351)
+:assumption (or (not x13047) x4015 (not x17804))
+:assumption (or x30719 (not x4490))
+:assumption (or x23133 x5204)
+:assumption (or (not x5356) x23257)
+:assumption (or x28912 x31)
+:assumption (or (not x18042) (not x9543) (not x18872) (not x25366))
+:assumption (or (not x15162) x6274)
+:assumption (or x16779 (not x21355))
+:assumption (or (not x14702) (not x13441))
+:assumption (or x18384 (not x5528))
+:assumption (or (not x18781) x19209)
+:assumption (or (not x5028) x28694)
+:assumption (or x24816 (not x22459))
+:assumption (or x24798 x13627)
+:assumption (or (not x23222) (not x19334))
+:assumption (or x26354 x20146)
+:assumption (or x16167 (not x16025) (not x3712))
+:assumption (or (not x23844) (not x31033))
+:assumption (or (not x20885) (not x5995))
+:assumption (or (not x28222) (not x17033))
+:assumption (or (not x28115) (not x2743))
+:assumption (or (not x2929) (not x25933))
+:assumption (or x1427 (not x1713))
+:assumption (or x20147 (not x29207))
+:assumption (or (not x21166) (not x26150))
+:assumption (or x26454 x24820)
+:assumption (or x1824 x10044)
+:assumption (or (not x19911) x23829)
+:assumption (or (not x25151) (not x13456))
+:assumption (or x1393 (not x21252))
+:assumption (or (not x25841) (not x18790))
+:assumption (or x11117 x22010)
+:assumption (or x17084 (not x26945))
+:assumption (or (not x22623) x28898)
+:assumption (or (not x18995) (not x1761))
+:assumption (or x28059 (not x18785))
+:assumption (or x30649 (not x11765))
+:assumption (or x19524 x7657)
+:assumption (or x23641 (not x1682))
+:assumption (or x16321 x9424)
+:assumption (or x27686 (not x3446))
+:assumption (or (not x7846) x26423)
+:assumption (or x1393 (not x15219))
+:assumption (or (not x21332) (not x4506))
+:assumption (or x25920 (not x27012))
+:assumption (or (not x11223) (not x11460))
+:assumption (or x6911 x1513)
+:assumption (or x27420 (not x5068))
+:assumption (or (not x9094) (not x20317) (not x22273) x8658 (not x3570) x25608 x14990 (not x31625) (not x630))
+:assumption (or x13818 (not x6136))
+:assumption (or x4085 (not x21084))
+:assumption (or x29055 x19316)
+:assumption (or (not x29393) x12076)
+:assumption (or (not x2021) x22489)
+:assumption (or x16849 (not x6211))
+:assumption (or (not x8833) x6549)
+:assumption (or (not x1052) x26082)
+:assumption (or x15434 (not x27035) x8518 (not x23451) x25293 (not x23244))
+:assumption (or x13679 x31772 (not x1314))
+:assumption (or (not x10863) (not x28370))
+:assumption (or (not x7573) (not x14795))
+:assumption (or x480 (not x25886))
+:assumption (or (not x24740) x26411)
+:assumption (or (not x25491) (not x20182))
+:assumption (or (not x26227) (not x22924))
+:assumption (or x30170 (not x24656) x12506 x30769)
+:assumption (or x20482 x8072 (not x12626))
+:assumption (or (not x20248) (not x30624))
+:assumption (or (not x14588) x7089)
+:assumption (or (not x5460) (not x13165))
+:assumption (or x373 (not x30505))
+:assumption (or (not x4632) (not x5025) x18048)
+:assumption (or (not x21420) x762)
+:assumption (or (not x14839) x141 x1322)
+:assumption (or x8763 x11121)
+:assumption (or (not x2201) x10047)
+:assumption (or (not x15659) x31279)
+:assumption (or (not x13415) x13866)
+:assumption (or (not x3717) (not x2502))
+:assumption (or (not x3139) (not x6586))
+:assumption (or (not x10170) x5465)
+:assumption (or x9747 x31221 (not x31337) (not x515))
+:assumption (or x2225 x2133 (not x10797))
+:assumption (or x10961 (not x19864))
+:assumption (or x6798 x1062)
+:assumption (or x18051 x24500 x12097 x5558)
+:assumption (or x5528 (not x24335))
+:assumption (or x13129 (not x16959) x26536 x10639)
+:assumption (or x8652 x9654 x23763)
+:assumption (or x4731 x20374)
+:assumption (or (not x190) x20041)
+:assumption (or x29399 x10336)
+:assumption (or x4310 x3335)
+:assumption (or (not x4677) (not x10083))
+:assumption (or x21717 x26188 (not x25659))
+:assumption (or (not x9285) x17894)
+:assumption (or x21026 (not x19754) x5483 (not x21317) (not x3009))
+:assumption (or x17878 (not x9008))
+:assumption (or (not x20618) (not x18341))
+:assumption (or x918 x25447)
+:assumption (or (not x17119) x10723)
+:assumption (or (not x6599) x23545 (not x6243) (not x7788))
+:assumption (or x1393 x3882 (not x5636) (not x12494) x28472 (not x15208) (not x12057) x15869)
+:assumption (or (not x26714) (not x5528) x18341)
+:assumption (or (not x5886) x26689)
+:assumption (or (not x16786) (not x11739))
+:assumption (or x10064 x8161 (not x16003))
+:assumption (or (not x6843) (not x24048))
+:assumption (or x29902 x13528)
+:assumption (or (not x19310) x28250)
+:assumption (or x21587 (not x31335))
+:assumption (or x18042 x20664)
+:assumption (or x19992 x8945 (not x12874) x22965)
+:assumption (or (not x11598) x30394)
+:assumption (or (not x1491) x18176)
+:assumption (or x21680 (not x12571))
+:assumption (or x4448 (not x14328))
+:assumption (or x7901 (not x6554) (not x14435) (not x12020))
+:assumption (or (not x29019) (not x9008) (not x5099))
+:assumption (or (not x26670) x13235)
+:assumption (or x721 (not x1072))
+:assumption (or (not x23160) x13962)
+:assumption (or (not x29640) x21298 x805 (not x7500))
+:assumption (or x10220 (not x11625))
+:assumption (or (not x28912) x21250)
+:assumption (or x9563 x19490)
+:assumption (or x3001 (not x28324))
+:assumption (or (not x7542) x1082)
+:assumption (or (not x8986) x27233 (not x29387) (not x15116) x12654 x26820 (not x29624) (not x31430))
+:assumption (or (not x21250) x11967 x528 x24249)
+:assumption (or (not x2653) (not x8367))
+:assumption (or x30277 x26119)
+:assumption (or x19606 x27019)
+:assumption (or x29521 (not x650))
+:assumption (or x7164 (not x27300))
+:assumption (or (not x29355) x29623)
+:assumption (or x495 (not x22918))
+:assumption (or (not x4289) (not x2802))
+:assumption (or (not x8002) x31194)
+:assumption (or x5183 x21711)
+:assumption (or x24471 (not x26633))
+:assumption (or (not x14612) x12242)
+:assumption (or (not x8229) (not x3999))
+:assumption (or (not x4560) (not x19362))
+:assumption (or (not x9125) (not x1703))
+:assumption (or (not x7842) (not x24920))
+:assumption (or (not x13956) x20110)
+:assumption (or x28973 x26523)
+:assumption (or (not x17971) x1602 (not x3565))
+:assumption (or x29442 (not x6769))
+:assumption (or x9056 x20785)
+:assumption (or x10325 x30291)
+:assumption (or (not x24756) (not x19794))
+:assumption (or (not x13054) (not x15134))
+:assumption (or x31392 (not x23262))
+:assumption (or (not x9764) (not x14271) x15482 (not x30002))
+:assumption (or (not x2846) x28945)
+:assumption (or x7260 (not x16499))
+:assumption (or x12386 (not x24246))
+:assumption (or x22168 (not x9008))
+:assumption (or x5877 (not x27710))
+:assumption (or x9086 x1052)
+:assumption (or (not x25478) x15571)
+:assumption (or x14503 (not x28896))
+:assumption (or x17766 x18684)
+:assumption (or (not x5567) (not x16304) x15795 x26017)
+:assumption (or (not x18364) x4491)
+:assumption (or (not x6969) (not x2330) (not x31250))
+:assumption (or (not x8807) x23629)
+:assumption (or (not x23244) x19544)
+:assumption (or (not x23220) x3504)
+:assumption (or (not x30048) x22448)
+:assumption (or (not x18594) (not x5910))
+:assumption (or (not x20038) (not x971) (not x29500) (not x23279))
+:assumption (or x11758 x22381)
+:assumption (or (not x28802) x17948)
+:assumption (or x22288 x3901)
+:assumption (or x22216 x2535)
+:assumption (or (not x24769) (not x15197))
+:assumption (or x10630 (not x27625))
+:assumption (or (not x31034) (not x2554))
+:assumption (or (not x892) (not x24291))
+:assumption (or x21184 x10090)
+:assumption (or (not x19214) x24572 (not x25320) x12536)
+:assumption (or x15669 x2138)
+:assumption (or x18506 (not x13725))
+:assumption (or x17351 (not x2462))
+:assumption (or (not x25313) x31876 (not x20751) (not x4030) (not x20749) x5285 x21909 (not x10424) x928)
+:assumption (or (not x6991) (not x2756))
+:assumption (or x3121 (not x532))
+:assumption (or x21223 (not x8871))
+:assumption (or (not x23323) (not x205))
+:assumption (or x30138 (not x17752) (not x12127))
+:assumption (or (not x528) (not x29649))
+:assumption (or x20782 x5078)
+:assumption (or x18433 x22994)
+:assumption (or x23747 x18507 x877 x1444 (not x7176) x6381 (not x7345) x13022 x13683)
+:assumption (or (not x6063) x8102)
+:assumption (or (not x9742) x10510)
+:assumption (or x4654 x23811)
+:assumption (or (not x12483) (not x12242) (not x14451))
+:assumption (or (not x21634) x14357)
+:assumption (or x28768 (not x22234))
+:assumption (or (not x16810) x28000)
+:assumption (or x29391 (not x8002))
+:assumption (or (not x7362) (not x26228) (not x10088) x17622 x15124)
+:assumption (or (not x28963) (not x8676))
+:assumption (or x30898 (not x14467))
+:assumption (or (not x19797) x9466 x23244 x8002 x25536)
+:assumption (or x23776 x8044)
+:assumption (or (not x87) x21298)
+:assumption (or (not x15612) (not x27809))
+:assumption (or (not x19849) (not x4324) x6244 (not x25224) x11623 (not x11277))
+:assumption (or x31199 x16003)
+:assumption (or (not x17968) x28571)
+:assumption (or (not x3745) x7532 (not x3538) (not x10873))
+:assumption (or x12122 x9104 x22023 x20537)
+:assumption (or x22695 (not x1579))
+:assumption (or x23279 x19929)
+:assumption (or (not x14919) x24079)
+:assumption (or x653 x9391 x6030 (not x7307) x22081 (not x18959))
+:assumption (or (not x21891) x30388)
+:assumption (or x440 (not x28413))
+:assumption (or (not x12476) x23285)
+:assumption (or x8970 (not x2415) x11636 x5738 (not x3365) x3588 x12658 (not x24250))
+:assumption (or x3485 x8462)
+:assumption (or x8616 (not x19633))
+:assumption (or x31076 (not x25461))
+:assumption (or x10465 (not x31371))
+:assumption (or x25812 (not x30188))
+:assumption (or x14157 x31896)
+:assumption (or (not x17156) (not x15072))
+:assumption (or x10818 x499)
+:assumption (or x23348 x22529)
+:assumption (or x14261 x15497)
+:assumption (or x3951 x14692 (not x27457) (not x25659) (not x30578) (not x4768) (not x7627) (not x12338))
+:assumption (or x3822 x16302)
+:assumption (or x29157 x15642)
+:assumption (or (not x6881) (not x19627) x8651)
+:assumption (or x8002 (not x6368))
+:assumption (or (not x6783) (not x15753))
+:assumption (or (not x24562) x24285)
+:assumption (or (not x1321) x22361)
+:assumption (or x24833 x13956)
+:assumption (or x12052 x10259)
+:assumption (or (not x19422) x20533)
+:assumption (or (not x23248) x18859)
+:assumption (or (not x17810) (not x30259))
+:assumption (or (not x5337) (not x28785))
+:assumption (or (not x30878) x26454)
+:assumption (or x28422 x2927)
+:assumption (or x12758 (not x29858))
+:assumption (or (not x28251) x27123)
+:assumption (or x21026 (not x18292))
+:assumption (or x5947 (not x10271))
+:assumption (or (not x5750) x31634)
+:assumption (or (not x4243) (not x9784))
+:assumption (or (not x5597) (not x14375))
+:assumption (or (not x20900) x16084)
+:assumption (or (not x6371) x18484)
+:assumption (or (not x11548) x28095)
+:assumption (or (not x6477) (not x13828))
+:assumption (or x14591 (not x31078))
+:assumption (or (not x25942) x4134)
+:assumption (or x11226 x27610)
+:assumption (or x10418 x9008)
+:assumption (or (not x17668) x3677 (not x22564) (not x28871))
+:assumption (or (not x9567) (not x9153))
+:assumption (or (not x10127) (not x11059))
+:assumption (or (not x23308) (not x2108))
+:assumption (or (not x15977) (not x2907))
+:assumption (or x12705 (not x5048))
+:assumption (or (not x8443) (not x23958) (not x28615) (not x20486))
+:assumption (or x14837 (not x7730))
+:assumption (or (not x20304) x7803)
+:assumption (or (not x4554) x31493)
+:assumption (or (not x12096) (not x5391))
+:assumption (or x21013 (not x8110))
+:assumption (or x12439 x22818)
+:assumption (or (not x31005) (not x6258))
+:assumption (or (not x7486) x13317)
+:assumption (or x10103 x18702)
+:assumption (or (not x7563) (not x24989))
+:assumption (or (not x65) (not x21374))
+:assumption (or x21031 x30155)
+:assumption (or x22495 x5833)
+:assumption (or (not x30085) x30030)
+:assumption (or (not x30887) (not x4144))
+:assumption (or (not x14709) (not x25428))
+:assumption (or x9676 x29661)
+:assumption (or (not x1618) (not x8810))
+:assumption (or (not x19675) x11377)
+:assumption (or (not x18811) (not x29809))
+:assumption (or (not x28998) x14327)
+:assumption (or (not x24030) (not x23101))
+:assumption (or (not x12322) x29959 (not x8218) (not x14920) (not x9870) x18983 (not x31406) (not x14341))
+:assumption (or (not x6149) (not x24762))
+:assumption (or (not x6697) (not x12231))
+:assumption (or x6177 x28126)
+:assumption (or x24596 x15322)
+:assumption (or x14186 x25659 x17443)
+:assumption (or x9714 x18859)
+:assumption (or (not x15366) x1779)
+:assumption (or x28887 x16298)
+:assumption (or (not x21886) (not x448))
+:assumption (or x12045 x20949 x12458 (not x24950))
+:assumption (or x11606 x8504)
+:assumption (or x5241 (not x23206))
+:assumption (or x29904 x31701)
+:assumption (or (not x5958) x19683 (not x1775))
+:assumption (or (not x23550) x8323)
+:assumption (or x5367 (not x6053))
+:assumption (or x872 x12931)
+:assumption (or (not x21653) (not x15113))
+:assumption (or (not x5629) (not x31746))
+:assumption (or (not x8002) x18896)
+:assumption (or (not x3260) (not x1807))
+:assumption (or x6746 x24155 (not x2500) (not x7854) (not x10656) x25397)
+:assumption (or (not x21123) (not x26432))
+:assumption (or x8088 (not x7443))
+:assumption (or (not x16028) x1073)
+:assumption (or (not x8047) x28912)
+:assumption (or x21238 x5846)
+:assumption (or (not x28990) (not x7418))
+:assumption (or x10662 x6969 (not x15852))
+:assumption (or (not x8447) (not x18495))
+:assumption (or x21298 x29206)
+:assumption (or x8002 (not x21502) x15325 x13956 x23244 x9585)
+:assumption (or x106 (not x8409))
+:assumption (or (not x31355) (not x24014))
+:assumption (or x21392 (not x22861))
+:assumption (or (not x15266) (not x10141) (not x25439))
+:assumption (or x9612 (not x20639))
+:assumption (or x12896 x21587)
+:assumption (or x18889 (not x15537))
+:assumption (or x25472 x4773)
+:assumption (or x27088 (not x3429))
+:assumption (or x11087 (not x15155))
+:assumption (or x18978 (not x1755))
+:assumption (or (not x27713) x15348)
+:assumption (or (not x31733) (not x8363))
+:assumption (or (not x16510) (not x6307) (not x21815) (not x2353) (not x7835))
+:assumption (or x29332 (not x20354) (not x415))
+:assumption (or (not x9056) x24019 (not x20097) x17606 (not x24948) (not x19319) x93 (not x15139))
+:assumption (or x27365 x4254)
+:assumption (or x9000 x25302)
+:assumption (or (not x15213) x3501)
+:assumption (or x24201 (not x12518) x14893 x12203 x27556)
+:assumption (or x14923 (not x14452))
+:assumption (or x6533 (not x19027))
+:assumption (or x497 (not x3312))
+:assumption (or (not x15210) x19878)
+:assumption (or (not x2334) x18226)
+:assumption (or (not x29949) (not x25303))
+:assumption (or (not x19523) (not x12242) (not x21685) x20325)
+:assumption (or (not x30935) x19383)
+:assumption (or (not x11734) x10498 (not x24271) x5834 (not x97) x29250 x9751 (not x31096))
+:assumption (or (not x2548) (not x10869))
+:assumption (or (not x29620) (not x8143))
+:assumption (or (not x10317) x10552)
+:assumption (or (not x30571) x5406)
+:assumption (or (not x14931) (not x12938))
+:assumption (or x15621 (not x14629) (not x23998))
+:assumption (or (not x25209) x14139)
+:assumption (or (not x1039) (not x18943))
+:assumption (or (not x19032) x1196)
+:assumption (or (not x24003) (not x10111))
+:assumption (or (not x3743) x14178)
+:assumption (or (not x9570) x8571)
+:assumption (or x19306 (not x23740))
+:assumption (or x27046 (not x26110))
+:assumption (or x10064 (not x11223))
+:assumption (or x18753 x26686)
+:assumption (or (not x16405) (not x26028))
+:assumption (or (not x20723) x19211)
+:assumption (or x23829 (not x29989))
+:assumption (or x29053 (not x28587))
+:assumption (or x23582 (not x20993))
+:assumption (or (not x28916) x13863)
+:assumption (or (not x29658) (not x20044))
+:assumption (or (not x24703) x7909)
+:assumption (or (not x23472) (not x11630))
+:assumption (or (not x28531) (not x19163))
+:assumption (or x16689 (not x28588) (not x1866) x12199 (not x203) x25950)
+:assumption (or x28286 x10723)
+:assumption (or (not x25041) (not x24601))
+:assumption (or x28188 x7284)
+:assumption (or (not x10137) x10305)
+:assumption (or x27710 (not x30526))
+:assumption (or (not x15289) x999)
+:assumption (or (not x18957) (not x2193))
+:assumption (or x11951 x11900)
+:assumption (or x11573 (not x13860))
+:assumption (or x24084 (not x12188))
+:assumption (or (not x9640) (not x7139))
+:assumption (or (not x11259) (not x24294))
+:assumption (or x5278 x25135)
+:assumption (or x13075 (not x3922))
+:assumption (or (not x25034) x22583)
+:assumption (or x25858 x28973)
+:assumption (or (not x23245) (not x20192))
+:assumption (or x5405 (not x7138))
+:assumption (or (not x28934) (not x13956))
+:assumption (or (not x29108) (not x3575))
+:assumption (or (not x7177) (not x10403))
+:assumption (or x21827 (not x9073))
+:assumption (or (not x28607) (not x16471))
+:assumption (or x31465 (not x20510))
+:assumption (or (not x6444) (not x10526) (not x12443))
+:assumption (or x31829 (not x30346) x918)
+:assumption (or x9782 x30869)
+:assumption (or x8057 (not x21236))
+:assumption (or x23279 (not x20615))
+:assumption (or (not x20042) (not x21804))
+:assumption (or (not x13712) (not x28070))
+:assumption (or (not x28082) x14053 x7997 (not x16850) x28181)
+:assumption (or x19011 (not x6610))
+:assumption (or x9933 x9008 (not x28216) (not x5320) (not x5979) x15600)
+:assumption (or x30068 x18645)
+:assumption (or x25259 (not x23565) (not x10874))
+:assumption (or (not x13215) x7616)
+:assumption (or x21010 (not x8438) (not x21773) (not x25334))
+:assumption (or x26586 (not x20130))
+:assumption (or x1393 (not x16919))
+:assumption (or x13357 x18453)
+:assumption (or (not x14950) (not x3640))
+:assumption (or (not x15761) (not x11710))
+:assumption (or x22071 x7536)
+:assumption (or x31093 x6682 x8622 x206 x25479)
+:assumption (or x5168 (not x6410))
+:assumption (or x14938 (not x29655))
+:assumption (or x29490 (not x28973))
+:assumption (or (not x15655) x27389)
+:assumption (or x13956 (not x24526))
+:assumption (or x14436 x4245 x13159 (not x2018) (not x21069) (not x10306) x3063)
+:assumption (or (not x26683) x6149)
+:assumption (or (not x13341) (not x30255))
+:assumption (or x26670 (not x964) x9618)
+:assumption (or x30724 (not x8845))
+:assumption (or (not x14804) x13956)
+:assumption (or (not x254) (not x19961))
+:assumption (or (not x27540) (not x4453))
+:assumption (or x18003 x8821)
+:assumption (or (not x6913) (not x21653))
+:assumption (or x13996 (not x4066))
+:assumption (or x23403 x12422)
+:assumption (or x28618 (not x7376))
+:assumption (or (not x26250) x7164)
+:assumption (or x9947 (not x21639))
+:assumption (or x9985 x18368)
+:assumption (or x15559 x12192)
+:assumption (or (not x17273) (not x20991))
+:assumption (or (not x29343) x19963)
+:assumption (or x3101 x8586 (not x9034) (not x14818))
+:assumption (or x30113 (not x17718) (not x25008))
+:assumption (or x14967 (not x22783))
+:assumption (or x11767 x6474 x23244)
+:assumption (or (not x21485) (not x19876))
+:assumption (or x31231 x17470)
+:assumption (or x22028 x16932)
+:assumption (or (not x29023) (not x22118))
+:assumption (or x9857 x16473)
+:assumption (or (not x2539) (not x2409))
+:assumption (or (not x27847) x20670)
+:assumption (or x22536 x5528)
+:assumption (or x13166 (not x17606))
+:assumption (or (not x31905) (not x460))
+:assumption (or (not x14152) (not x12430))
+:assumption (or (not x6885) (not x6298))
+:assumption (or x19180 x16333 x2239 (not x17177) (not x12312) (not x2475))
+:assumption (or (not x13884) x19361)
+:assumption (or (not x29775) (not x19468))
+:assumption (or x19723 x10368)
+:assumption (or (not x17363) x24883 (not x30303) (not x14814) (not x25280) x3407 (not x26836) (not x19356))
+:assumption (or x314 (not x22246))
+:assumption (or (not x4451) x24053)
+:assumption (or x3385 x22007)
+:assumption (or (not x13020) x17016)
+:assumption (or x9581 x27678)
+:assumption (or (not x13927) (not x26801))
+:assumption (or (not x7707) (not x2351))
+:assumption (or x14753 x6746)
+:assumption (or (not x27738) x9956)
+:assumption (or (not x1865) (not x1709))
+:assumption (or (not x27620) x16510 (not x21815) x2334 (not x25631) (not x26670) x2188)
+:assumption (or (not x15313) (not x2188))
+:assumption (or x18282 (not x7357) x9654 (not x13305))
+:assumption (or x1582 (not x1395))
+:assumption (or x25523 x2266)
+:assumption (or x31844 (not x2632))
+:assumption (or (not x981) x27015)
+:assumption (or (not x10957) (not x7537))
+:assumption (or x10588 (not x261))
+:assumption (or (not x26061) (not x12616) (not x27593))
+:assumption (or (not x10487) (not x29641))
+:assumption (or x7650 x24764)
+:assumption (or x19919 (not x23522))
+:assumption (or (not x12835) x10949)
+:assumption (or x17120 x25376)
+:assumption (or x7784 x4783)
+:assumption (or x21815 (not x1395))
+:assumption (or (not x11428) (not x5870))
+:assumption (or x15733 x25799)
+:assumption (or x4023 (not x12549) x11938)
+:assumption (or x16685 x5195)
+:assumption (or x9573 x21026 (not x20428) (not x9632) (not x17841))
+:assumption (or (not x5333) (not x20199))
+:assumption (or (not x30787) x8671)
+:assumption (or x21132 x9486)
+:assumption (or x11343 x18519 x21362 (not x19711))
+:assumption (or x20216 x13105)
+:assumption (or x24098 x6572)
+:assumption (or x21358 (not x23279))
+:assumption (or (not x27548) x29509)
+:assumption (or (not x4455) (not x460))
+:assumption (or x2416 x13093)
+:assumption (or x24690 (not x1321))
+:assumption (or x27568 (not x11817))
+:assumption (or x4740 x27233)
+:assumption (or (not x1219) (not x2980))
+:assumption (or (not x22365) (not x8002) x10298 (not x15641))
+:assumption (or (not x28542) x30130)
+:assumption (or x13125 x30268)
+:assumption (or x1832 x10205 x13751 (not x4411) x21531 (not x3691) x6716 (not x31183))
+:assumption (or x16775 (not x8864))
+:assumption (or x15011 x5433)
+:assumption (or x288 x9052)
+:assumption (or x25013 x13123)
+:assumption (or (not x31239) (not x12841))
+:assumption (or (not x20949) x9989 x13598 x12045)
+:assumption (or x25500 x19857)
+:assumption (or (not x15674) x370)
+:assumption (or (not x8997) (not x18859))
+:assumption (or (not x8237) x24722 x16559 (not x15256) x19018)
+:assumption (or x13277 x3088)
+:assumption (or x28653 x1763)
+:assumption (or x1050 (not x3720))
+:assumption (or (not x3424) (not x8002))
+:assumption (or x20052 x29651)
+:assumption (or (not x16355) x10828 x8027 (not x2825) x11116)
+:assumption (or (not x20131) (not x825))
+:assumption (or x27826 x30390)
+:assumption (or x7640 (not x3716))
+:assumption (or (not x5631) (not x14720) x11135 (not x12457))
+:assumption (or (not x236) (not x19573))
+:assumption (or x19543 (not x28359) x7834 x474 (not x21017) x2666 x1811 x11233)
+:assumption (or (not x18209) x25613)
+:assumption (or (not x23625) x16111)
+:assumption (or x4821 x4709)
+:assumption (or x27170 (not x13591))
+:assumption (or x13894 x31340)
+:assumption (or x26462 (not x10352))
+:assumption (or x26468 (not x16374))
+:assumption (or x11333 (not x30505))
+:assumption (or x2409 x16723 (not x23453) x9008 x5225 x2539)
+:assumption (or (not x21269) x1640)
+:assumption (or x9665 (not x14234))
+:assumption (or x16555 x28298)
+:assumption (or (not x2273) (not x7927))
+:assumption (or (not x29010) x3751)
+:assumption (or x10860 x2119)
+:assumption (or x11425 x29027)
+:assumption (or (not x12491) x3782)
+:assumption (or (not x978) x2483)
+:assumption (or x13960 x23012)
+:assumption (or (not x21925) x19186)
+:assumption (or (not x22495) (not x4180) x21400 x16029)
+:assumption (or x27612 x21927)
+:assumption (or (not x28161) x2147)
+:assumption (or (not x10409) (not x3365))
+:assumption (or (not x17749) x19992 x4481 x27528)
+:assumption (or x30302 x12258)
+:assumption (or (not x29304) (not x23244) x5686 x27834 x24423 (not x12456))
+:assumption (or x10536 x13310)
+:assumption (or (not x17549) x24854)
+:assumption (or (not x28732) (not x10009))
+:assumption (or (not x12329) x24360)
+:assumption (or x31307 x1845)
+:assumption (or (not x19992) x16654 (not x1006))
+:assumption (or (not x11320) x25404)
+:assumption (or x26503 x28708 x25784)
+:assumption (or x28983 x24250)
+:assumption (or x20811 x4383)
+:assumption (or (not x9399) x27675)
+:assumption (or x29630 (not x30954) x26277)
+:assumption (or (not x22237) x25038 x12187 (not x12837) x18890)
+:assumption (or x27690 x16053)
+:assumption (or x2006 (not x31505))
+:assumption (or x13403 x6630)
+:assumption (or (not x3129) x4488 (not x23633) (not x11297) (not x31179))
+:assumption (or x28660 (not x23119))
+:assumption (or x21987 x13956 (not x29139))
+:assumption (or (not x5876) (not x29407))
+:assumption (or (not x23865) x17278 x10589 (not x17841))
+:assumption (or x10710 (not x18619))
+:assumption (or x9394 x25931)
+:assumption (or x3952 x20143)
+:assumption (or (not x8002) x3871)
+:assumption (or (not x6617) (not x7474))
+:assumption (or (not x23849) x16225)
+:assumption (or (not x5608) x20733)
+:assumption (or (not x16025) (not x13276))
+:assumption (or (not x8958) (not x4651))
+:assumption (or (not x15686) (not x6336))
+:assumption (or (not x31134) x8418)
+:assumption (or x15355 x13712 x6149 (not x10969))
+:assumption (or (not x12551) (not x9516))
+:assumption (or (not x23983) (not x31446))
+:assumption (or (not x26563) x854)
+:assumption (or x14610 x4280)
+:assumption (or (not x19736) x5710)
+:assumption (or (not x23122) x6868)
+:assumption (or x23684 x9531 (not x12780))
+:assumption (or (not x24880) (not x9155))
+:assumption (or (not x5882) x3614)
+:assumption (or (not x10451) (not x737))
+:assumption (or x19658 (not x3666))
+:assumption (or (not x20008) x31511)
+:assumption (or x19143 (not x7910))
+:assumption (or x12266 (not x1192))
+:assumption (or (not x22590) x9106 x28737 (not x10248) (not x9133) (not x31378) (not x27747) x16140 x9794)
+:assumption (or (not x17184) (not x21431))
+:assumption (or (not x22290) x12030)
+:assumption (or (not x24361) (not x24587))
+:assumption (or x10889 (not x28621))
+:assumption (or x25957 x27055)
+:assumption (or (not x4712) x11219)
+:assumption (or (not x4560) (not x18594) x485 (not x31914))
+:assumption (or (not x30018) (not x10288))
+:assumption (or x20966 x26573 x7643)
+:assumption (or (not x12264) x1789)
+:assumption (or (not x11281) x29614 x5274 x17359)
+:assumption (or (not x20377) (not x7207))
+:assumption (or (not x25841) x12908)
+:assumption (or x31608 x19447)
+:assumption (or (not x9849) x11070)
+:assumption (or (not x16365) (not x9501))
+:assumption (or x12057 (not x28145))
+:assumption (or x11923 (not x13956))
+:assumption (or x24838 (not x3438) x23801 (not x20651))
+:assumption (or x14379 (not x22767))
+:assumption (or (not x22295) (not x287))
+:assumption (or x21604 x179)
+:assumption (or x5719 x13666)
+:assumption (or x23011 (not x6621))
+:assumption (or (not x3645) x28393)
+:assumption (or (not x29442) (not x26139))
+:assumption (or (not x22154) (not x17739))
+:assumption (or (not x20383) x911)
+:assumption (or (not x11073) x9020)
+:assumption (or (not x11229) (not x1135))
+:assumption (or x9325 (not x6811))
+:assumption (or (not x23354) (not x23407))
+:assumption (or (not x11455) x22579 x16252)
+:assumption (or x31795 (not x21282))
+:assumption (or (not x29068) (not x8116))
+:assumption (or x14591 x31172)
+:assumption (or x23732 (not x9155))
+:assumption (or (not x28437) (not x5971))
+:assumption (or (not x27916) x23631)
+:assumption (or x21705 x24933)
+:assumption (or (not x10727) x28541)
+:assumption (or x17847 x28396)
+:assumption (or (not x26897) x30586)
+:assumption (or x24736 x31116)
+:assumption (or x4480 x12960 x18976 (not x15362) (not x8540))
+:assumption (or x6372 x8897)
+:assumption (or x3617 x7670)
+:assumption (or x17359 x12465)
+:assumption (or x21815 x22356)
+:assumption (or x11654 (not x10657))
+:assumption (or (not x24603) (not x9807))
+:assumption (or (not x12071) x11277)
+:assumption (or (not x9569) (not x25610))
+:assumption (or x5364 (not x15276))
+:assumption (or (not x3352) (not x31076))
+:assumption (or (not x20273) x25475)
+:assumption (or (not x26898) (not x16802))
+:assumption (or x7694 (not x19060))
+:assumption (or (not x19728) x28912)
+:assumption (or x27948 x26634)
+:assumption (or (not x964) x7920)
+:assumption (or (not x11585) x14820)
+:assumption (or (not x16978) (not x14647))
+:assumption (or (not x283) (not x16883) (not x18533) x7182 (not x6494))
+:assumption (or (not x17075) (not x14174))
+:assumption (or (not x22259) x19723)
+:assumption (or x10458 (not x1067))
+:assumption (or x27760 x31652)
+:assumption (or x8437 x26897)
+:assumption (or (not x27708) (not x21815))
+:assumption (or (not x7230) x19354)
+:assumption (or (not x11506) (not x26557))
+:assumption (or x19050 x17075)
+:assumption (or (not x26807) x21962)
+:assumption (or x11411 x27668)
+:assumption (or (not x29630) (not x22422))
+:assumption (or (not x4506) (not x4048))
+:assumption (or (not x10039) (not x21908) (not x20937) (not x17075))
+:assumption (or x4421 (not x16329))
+:assumption (or x16640 x14618)
+:assumption (or x19711 (not x24415))
+:assumption (or x15623 (not x9953))
+:assumption (or (not x17946) x23244 (not x8002))
+:assumption (or x26061 (not x350) (not x31787))
+:assumption (or x16710 x18130)
+:assumption (or x7518 (not x727) x21872 x4215 (not x30169) (not x18371) x21580 (not x5019))
+:assumption (or x25058 (not x19723))
+:assumption (or x30294 (not x25287))
+:assumption (or (not x7106) x812 (not x15603))
+:assumption (or (not x24221) (not x13070))
+:assumption (or (not x15373) (not x1393))
+:assumption (or (not x937) x16133)
+:assumption (or x6461 x21273 x7029 x13948)
+:assumption (or (not x4245) (not x14436))
+:assumption (or x20697 x14532 (not x319))
+:assumption (or x4969 (not x7257))
+:assumption (or (not x7290) x17118 x7537)
+:assumption (or x19648 (not x11700))
+:assumption (or (not x28128) x31850)
+:assumption (or (not x14962) x24756)
+:assumption (or x3329 x742)
+:assumption (or (not x218) (not x31928) x10128 x54 x17322 x22847 x17075 x18424 (not x13704))
+:assumption (or (not x27671) x8002 (not x14743))
+:assumption (or (not x8961) (not x14064))
+:assumption (or (not x30569) x17595)
+:assumption (or (not x23837) (not x8574))
+:assumption (or x19337 (not x19289))
+:assumption (or (not x11800) x28388)
+:assumption (or x20119 (not x22167))
+:assumption (or (not x18521) (not x23784))
+:assumption (or x12051 x12578)
+:assumption (or (not x14599) (not x18003))
+:assumption (or (not x6207) x13956)
+:assumption (or x31034 (not x12578))
+:assumption (or (not x7331) (not x29186) (not x6003))
+:assumption (or (not x6750) x22620)
+:assumption (or (not x28232) x30633)
+:assumption (or x27018 (not x1632) x650 (not x13065) (not x3486))
+:assumption (or (not x28378) (not x229) x4840 x30982 (not x26092))
+:assumption (or (not x16749) x8241)
+:assumption (or (not x11942) (not x28196))
+:assumption (or (not x483) (not x23987))
+:assumption (or x5742 x10977)
+:assumption (or (not x21815) x9531 (not x16510) x19428 x28020)
+:assumption (or x18187 x29331)
+:assumption (or (not x12813) x1393)
+:assumption (or (not x25642) (not x26772))
+:assumption (or x31232 x13991)
+:assumption (or x8279 x20576 (not x12946) (not x918))
+:assumption (or (not x2677) x12443)
+:assumption (or x15354 (not x3911) (not x9008))
+:assumption (or (not x809) x15505)
+:assumption (or x18694 (not x23239))
+:assumption (or (not x26762) x1451)
+:assumption (or x5886 (not x9819))
+:assumption (or (not x3775) x18382)
+:assumption (or (not x23608) (not x1811))
+:assumption (or x1406 (not x1698))
+:assumption (or x28503 x28200 (not x25659))
+:assumption (or (not x23244) (not x17835))
+:assumption (or (not x13139) x20990)
+:assumption (or x28973 (not x12950))
+:assumption (or x12789 (not x11935))
+:assumption (or x8021 (not x5635))
+:assumption (or (not x16802) x16861)
+:assumption (or x21370 (not x20455))
+:assumption (or x25827 (not x2758))
+:assumption (or (not x9805) (not x10958))
+:assumption (or x429 x4259)
+:assumption (or x5260 (not x3840) x1871 (not x26745))
+:assumption (or (not x1953) (not x27722))
+:assumption (or (not x18555) (not x28535))
+:assumption (or x26500 x18876)
+:assumption (or (not x17317) (not x31777))
+:assumption (or x15757 (not x26354))
+:assumption (or (not x12159) x3264)
+:assumption (or (not x20156) (not x14242))
+:assumption (or x8432 (not x31727))
+:assumption (or x28627 (not x6942))
+:assumption (or x16025 x26892 x28534)
+:assumption (or (not x26506) x3201)
+:assumption (or x23278 (not x19838))
+:assumption (or x27110 x2215)
+:assumption (or (not x20144) x24904)
+:assumption (or x11799 (not x27040) (not x1254))
+:assumption (or x1920 (not x11918))
+:assumption (or x23244 (not x9116))
+:assumption (or x5206 x23084)
+:assumption (or x16304 x23187)
+:assumption (or x22722 x28208)
+:assumption (or (not x25769) (not x1102))
+:assumption (or x25854 (not x22920))
+:assumption (or x19399 x14904 (not x202))
+:assumption (or x18801 (not x26097))
+:assumption (or (not x29756) (not x3011))
+:assumption (or x26873 x13184)
+:assumption (or (not x4303) x16570)
+:assumption (or (not x6942) x30545)
+:assumption (or x28767 (not x31873))
+:assumption (or x15882 (not x5558))
+:assumption (or x12076 (not x620))
+:assumption (or (not x17068) (not x30782))
+:assumption (or (not x26143) x3665)
+:assumption (or (not x14455) x8569)
+:assumption (or x8864 (not x2991))
+:assumption (or x49 x14999)
+:assumption (or x27948 x7874 (not x16413))
+:assumption (or (not x23369) (not x7823) (not x1671))
+:assumption (or (not x24864) (not x22765))
+:assumption (or x17438 x29647)
+:assumption (or x4026 (not x16728) (not x14209))
+:assumption (or (not x17170) x12650)
+:assumption (or (not x9531) (not x10659) (not x15744) x9224 (not x21845) (not x22771))
+:assumption (or (not x8602) (not x22664))
+:assumption (or x27765 x25154)
+:assumption (or (not x30542) x2474)
+:assumption (or (not x14929) x19131)
+:assumption (or (not x6641) x4653)
+:assumption (or x22878 x12552)
+:assumption (or x19327 (not x13441))
+:assumption (or x9645 (not x801) x12775)
+:assumption (or (not x19992) x28604)
+:assumption (or x16750 (not x15366))
+:assumption (or (not x21836) (not x30767))
+:assumption (or (not x25827) (not x27701))
+:assumption (or x22354 x15537)
+:assumption (or (not x20651) (not x20478))
+:assumption (or (not x21132) x16510 x19428)
+:assumption (or x29039 (not x25659))
+:assumption (or (not x26345) (not x3321))
+:assumption (or (not x16058) (not x13720))
+:assumption (or (not x21248) (not x31091))
+:assumption (or (not x23782) (not x12))
+:assumption (or (not x8269) x27642 x20885)
+:assumption (or (not x28001) x15096)
+:assumption (or (not x723) (not x21982))
+:assumption (or (not x11607) x25571)
+:assumption (or (not x9545) (not x8118))
+:assumption (or x31197 x13049 (not x17282))
+:assumption (or (not x29568) x20794 x17596 x21462 x25257)
+:assumption (or x8002 (not x869) x31041)
+:assumption (or x20760 x233)
+:assumption (or x10064 (not x7119))
+:assumption (or (not x8605) x22522)
+:assumption (or (not x31311) x3797)
+:assumption (or x18519 x28713)
+:assumption (or (not x15345) (not x31858))
+:assumption (or (not x8081) x25200 x5528)
+:assumption (or x25627 x29146)
+:assumption (or (not x10816) x649)
+:assumption (or x16802 x9369)
+:assumption (or (not x1019) (not x10821))
+:assumption (or x26789 x25920)
+:assumption (or (not x22531) (not x31235) x7882)
+:assumption (or x24949 (not x2225))
+:assumption (or x15168 (not x12935))
+:assumption (or (not x20594) x5183)
+:assumption (or x11681 (not x4920))
+:assumption (or x8436 x31420 x3453 x14081 (not x12108))
+:assumption (or x26897 x10909 x19473 (not x3014))
+:assumption (or x12923 x22724)
+:assumption (or x5243 x5155)
+:assumption (or x30657 x11405 (not x13956))
+:assumption (or (not x31782) x25201)
+:assumption (or x374 (not x17367))
+:assumption (or (not x13651) x13697)
+:assumption (or x25057 (not x9208))
+:assumption (or x957 x20030)
+:assumption (or (not x11131) (not x22435) x28541 x7481 (not x2903))
+:assumption (or (not x24934) x7677)
+:assumption (or x17708 x8043)
+:assumption (or (not x19881) x13681)
+:assumption (or (not x29643) (not x14568))
+:assumption (or (not x12114) (not x5391))
+:assumption (or (not x26194) (not x12613))
+:assumption (or (not x2600) (not x6969))
+:assumption (or (not x18414) x31645)
+:assumption (or x3997 x2238)
+:assumption (or x22286 (not x10003))
+:assumption (or x13807 (not x16907) x6074 (not x15555))
+:assumption (or (not x16374) x3590)
+:assumption (or x28016 x21968)
+:assumption (or x13573 (not x5683))
+:assumption (or (not x13637) (not x4862))
+:assumption (or x31044 x17236)
+:assumption (or (not x28911) (not x19889) x18650 x16648)
+:assumption (or x11394 x9453 x17529)
+:assumption (or x12136 (not x16085) x5560 x22394 (not x22721) x21190)
+:assumption (or (not x20087) x24756 (not x18416) (not x25392))
+:assumption (or (not x18410) (not x18018) x2352 (not x27973) (not x3677) (not x13553))
+:assumption (or (not x1582) x3482 (not x1375))
+:assumption (or x16003 x26732)
+:assumption (or x19742 x4046 (not x15965) (not x22343) (not x7583))
+:assumption (or x31476 (not x13917))
+:assumption (or (not x7554) x6974)
+:assumption (or x28476 x25705)
+:assumption (or (not x6716) (not x13751))
+:assumption (or x6157 x26897)
+:assumption (or x30095 (not x16355))
+:assumption (or (not x4809) (not x9899) x14891)
+:assumption (or x21594 (not x28973))
+:assumption (or (not x5646) x20218)
+:assumption (or x22588 (not x3830))
+:assumption (or (not x30215) x12636)
+:assumption (or (not x863) x31223)
+:assumption (or (not x30667) (not x13956) x25191 x13411)
+:assumption (or (not x23676) (not x29896))
+:assumption (or x17208 x25366)
+:assumption (or x17754 x8919 (not x22302))
+:assumption (or (not x16997) x2885)
+:assumption (or x13867 x16207)
+:assumption (or x15233 (not x12543))
+:assumption (or x7722 (not x204))
+:assumption (or (not x22063) (not x2091))
+:assumption (or (not x18229) (not x30306))
+:assumption (or (not x15291) (not x25659) x11612)
+:assumption (or (not x24760) (not x4645))
+:assumption (or (not x23118) x5798)
+:assumption (or (not x5264) x30271)
+:assumption (or x2278 (not x8420) (not x15227) x6444 (not x9439))
+:assumption (or x29252 (not x31557))
+:assumption (or (not x14687) x16147)
+:assumption (or (not x10913) x22360)
+:assumption (or x1663 x11207)
+:assumption (or (not x4656) (not x12023))
+:assumption (or (not x18853) (not x4863) (not x13226) (not x28093) x30494)
+:assumption (or (not x6206) (not x27998))
+:assumption (or x15385 x23180)
+:assumption (or x10171 x10885)
+:assumption (or x5206 (not x13119) x30113)
+:assumption (or x26575 (not x15621) x30684)
+:assumption (or (not x12567) x14405)
+:assumption (or (not x27935) x20482)
+:assumption (or x5927 x9444)
+:assumption (or (not x10300) x953 x6091 (not x2657))
+:assumption (or (not x2573) (not x19907))
+:assumption (or (not x18391) x10818)
+:assumption (or (not x16637) (not x16951))
+:assumption (or (not x15631) x16479)
+:assumption (or x5944 (not x19325) x9110 (not x27276) (not x25423) x15572 (not x14881) x3921)
+:assumption (or (not x771) x9973)
+:assumption (or x11086 (not x3435))
+:assumption (or (not x2777) x20048)
+:assumption (or x15917 x10064 (not x8327) (not x7238))
+:assumption (or x14589 (not x10627))
+:assumption (or (not x26404) x24781)
+:assumption (or x11496 x2592)
+:assumption (or (not x31296) x15302)
+:assumption (or (not x31422) x31397)
+:assumption (or (not x15795) (not x12821))
+:assumption (or (not x26606) (not x13923))
+:assumption (or x27196 (not x16761))
+:assumption (or (not x13610) (not x29051) x20526 (not x26688) (not x24266) (not x3649))
+:assumption (or (not x15449) (not x5465))
+:assumption (or (not x13276) (not x16869))
+:assumption (or (not x18424) (not x22909))
+:assumption (or x10378 (not x13236) (not x23244) x29034 (not x14830) (not x10107))
+:assumption (or x675 (not x2421))
+:assumption (or (not x18437) x5765)
+:assumption (or (not x20119) (not x19315) x15861)
+:assumption (or (not x26166) x20210)
+:assumption (or (not x6746) x27141)
+:assumption (or x89 x21190 (not x27844))
+:assumption (or x31011 x14053)
+:assumption (or (not x1990) x15711 x22227 x24066 x10127 (not x635))
+:assumption (or x13288 x15263)
+:assumption (or (not x14776) x27306)
+:assumption (or (not x7454) (not x2977) x6528)
+:assumption (or (not x14403) x19217)
+:assumption (or x29844 x13253)
+:assumption (or x17393 (not x30255))
+:assumption (or x13426 (not x28099))
+:assumption (or (not x28710) x24878)
+:assumption (or x2801 (not x28691))
+:assumption (or (not x22196) (not x5951))
+:assumption (or x29686 (not x8603))
+:assumption (or x30386 x28700)
+:assumption (or (not x6782) (not x28888))
+:assumption (or (not x25353) (not x18321))
+:assumption (or (not x21824) x27049)
+:assumption (or x8886 (not x17317))
+:assumption (or x26413 (not x10501) x987 x31020 x22829 (not x121))
+:assumption (or (not x29260) x28220 x12489 (not x29834))
+:assumption (or (not x3119) (not x13576))
+:assumption (or (not x16728) (not x23257))
+:assumption (or (not x22099) (not x4025))
+:assumption (or (not x24219) (not x16374))
+:assumption (or x5456 x16516)
+:assumption (or x8602 (not x13613) (not x9326))
+:assumption (or (not x10129) (not x17880))
+:assumption (or x27259 (not x3725))
+:assumption (or (not x20850) (not x2952))
+:assumption (or (not x13917) x7879)
+:assumption (or (not x2177) x20826)
+:assumption (or x19325 (not x15572))
+:assumption (or (not x6601) (not x23298) x14060 x19731 x24285 (not x1181))
+:assumption (or (not x10041) (not x21690))
+:assumption (or x30540 x18908)
+:assumption (or (not x4391) (not x13200))
+:assumption (or x22861 x6969 (not x12316))
+:assumption (or (not x14238) (not x635))
+:assumption (or (not x29531) x21298)
+:assumption (or (not x21653) x17500)
+:assumption (or x15400 (not x25006))
+:assumption (or (not x29664) x9716)
+:assumption (or x20335 (not x13354))
+:assumption (or x22461 x23375)
+:assumption (or x17406 x21452)
+:assumption (or x1042 x29943)
+:assumption (or x19114 (not x3295))
+:assumption (or x14213 (not x2022))
+:assumption (or (not x19475) (not x13766))
+:assumption (or x5631 x1790)
+:assumption (or x6060 (not x18385))
+:assumption (or (not x11621) (not x26080))
+:assumption (or x25659 (not x15378) (not x10062))
+:assumption (or x27962 x31378)
+:assumption (or (not x19763) x13551)
+:assumption (or x27059 (not x14498))
+:assumption (or (not x9900) (not x15795))
+:assumption (or x13827 x30404 (not x12242))
+:assumption (or (not x7951) x29968 (not x23118) x15366)
+:assumption (or (not x26789) (not x18761))
+:assumption (or (not x18874) x17934)
+:assumption (or x15795 x5150)
+:assumption (or (not x2449) x9779 (not x5426))
+:assumption (or x30191 (not x3259))
+:assumption (or (not x30573) x6457)
+:assumption (or (not x5803) x13635)
+:assumption (or (not x18365) x17109)
+:assumption (or x14494 x13484)
+:assumption (or (not x14042) x31609)
+:assumption (or x8576 (not x3266))
+:assumption (or x5508 (not x30100))
+:assumption (or (not x25294) x3318 (not x15987))
+:assumption (or x24905 x14931 x24051 (not x20060) (not x17116))
+:assumption (or (not x20381) x28045)
+:assumption (or x1475 x4754)
+:assumption (or (not x27535) (not x21335))
+:assumption (or (not x23034) (not x18693))
+:assumption (or x23667 x21786)
+:assumption (or (not x2737) x28672)
+:assumption (or x8057 (not x3187))
+:assumption (or x7575 x9514 (not x28026) x23120 (not x1658) (not x9837) (not x15485) x23389 (not x1093) x17452)
+:assumption (or (not x6341) x14522)
+:assumption (or (not x3306) x16671)
+:assumption (or x3929 (not x1227))
+:assumption (or x22506 x8891)
+:assumption (or x13080 x9722)
+:assumption (or x25370 x28368)
+:assumption (or (not x23117) (not x24917) (not x11639) x22223 (not x30224) (not x3304))
+:assumption (or x8708 x7974)
+:assumption (or x9552 (not x14455) x25535 (not x1417) x8780)
+:assumption (or x26126 x31447 (not x24249))
+:assumption (or (not x29258) (not x5145))
+:assumption (or (not x5770) x7530)
+:assumption (or (not x18623) (not x14231))
+:assumption (or x21255 x19140 x21267 x5048 (not x17438) (not x5552) (not x29647) (not x12329) (not x21896))
+:assumption (or x4690 (not x15334))
+:assumption (or x14070 (not x8513) (not x8152))
+:assumption (or (not x7826) (not x18991) x5696 x21298)
+:assumption (or (not x28508) x4978 (not x17360) x7106 (not x2678) (not x31807) x27013 (not x19453))
+:assumption (or (not x15795) (not x26563))
+:assumption (or (not x29323) (not x19948))
+:assumption (or x29936 (not x24237))
+:assumption (or (not x12548) (not x31239))
+:assumption (or (not x12907) (not x30690))
+:assumption (or x10750 (not x21432))
+:assumption (or x13477 x1301)
+:assumption (or (not x30049) (not x6190))
+:assumption (or (not x13805) (not x10612))
+:assumption (or (not x12411) (not x12681))
+:assumption (or (not x12764) (not x7901))
+:assumption (or x24380 x8621 x2393 (not x31100) x16872 (not x12660))
+:assumption (or (not x2600) x13508)
+:assumption (or (not x13023) (not x17830))
+:assumption (or x18196 (not x31355))
+:assumption (or (not x16391) x20189)
+:assumption (or x9008 (not x5474))
+:assumption (or (not x486) (not x5882))
+:assumption (or (not x14449) (not x3579))
+:assumption (or (not x10655) x21915 x21695 x4602 (not x23838) x11579)
+:assumption (or x19974 x21577)
+:assumption (or x4910 (not x6099))
+:assumption (or x20423 (not x17612))
+:assumption (or x31086 (not x15323))
+:assumption (or (not x25527) (not x8979))
+:assumption (or (not x28764) (not x12278) (not x30224) x210)
+:assumption (or x22774 x6537)
+:assumption (or (not x8961) (not x25856) (not x1329))
+:assumption (or x8426 (not x18545) x2420 (not x25565) x20325 (not x6184))
+:assumption (or x16374 x26456)
+:assumption (or x3574 (not x7025))
+:assumption (or (not x21806) x24491)
+:assumption (or (not x21570) (not x12983))
+:assumption (or (not x12621) x13150)
+:assumption (or (not x20325) (not x31665))
+:assumption (or x18498 x13213)
+:assumption (or (not x1335) (not x25659))
+:assumption (or (not x17986) (not x15705) x9567 x13446 (not x12578) x6351 (not x11587))
+:assumption (or (not x15273) (not x7038))
+:assumption (or (not x3578) x18329)
+:assumption (or (not x27040) (not x18354))
+:assumption (or (not x6075) x28372)
+:assumption (or (not x24131) x17531)
+:assumption (or x23989 (not x12389))
+:assumption (or (not x3857) (not x4287) (not x142) x22655 x27267)
+:assumption (or (not x22496) x23328)
+:assumption (or (not x6969) x22499)
+:assumption (or (not x25542) (not x23277))
+:assumption (or (not x1582) x25356)
+:assumption (or x25659 x27041)
+:assumption (or (not x15674) x4086)
+:assumption (or x24618 x11068)
+:assumption (or x21815 x31814)
+:assumption (or x4718 x6735)
+:assumption (or (not x27151) (not x3619))
+:assumption (or x17463 (not x15341))
+:assumption (or (not x15197) (not x18296))
+:assumption (or (not x25974) x19316)
+:assumption (or x4233 (not x31472))
+:assumption (or x499 x23240)
+:assumption (or x21398 x5880)
+:assumption (or (not x10170) (not x8496))
+:assumption (or x7647 (not x9936))
+:assumption (or (not x24598) x1607 (not x21815))
+:assumption (or (not x24427) x4846)
+:assumption (or x21423 (not x13324))
+:assumption (or (not x21141) x16696 x28085 (not x8532))
+:assumption (or x8996 (not x25860))
+:assumption (or (not x1831) x6215)
+:assumption (or x3494 (not x1815) (not x5394) x25730 (not x29780) (not x21815) x16510)
+:assumption (or (not x3163) x8693 x17016 (not x18705))
+:assumption (or x30957 x1858)
+:assumption (or x25716 x22667)
+:assumption (or (not x1259) x22611)
+:assumption (or (not x8471) x31844)
+:assumption (or (not x2115) (not x12431))
+:assumption (or (not x26766) (not x19992))
+:assumption (or (not x6444) (not x814))
+:assumption (or (not x30287) (not x227) (not x20100))
+:assumption (or (not x12323) x3598)
+:assumption (or x6843 (not x31817))
+:assumption (or x6493 (not x22025))
+:assumption (or x27521 (not x5862))
+:assumption (or x14527 x9008)
+:assumption (or (not x290) x18693)
+:assumption (or (not x20821) x14247)
+:assumption (or x79 (not x16510))
+:assumption (or x9380 (not x26212))
+:assumption (or (not x10996) x14307)
+:assumption (or (not x9826) (not x13249))
+:assumption (or (not x25263) (not x24989))
+:assumption (or x23894 x10873)
+:assumption (or x23886 x10550 x15907 x4006 (not x16851) x7278 (not x440))
+:assumption (or (not x586) x29177)
+:assumption (or (not x2868) (not x29710))
+:assumption (or x9161 (not x28040))
+:assumption (or (not x24301) (not x12043))
+:assumption (or (not x30622) x18061)
+:assumption (or (not x22103) (not x26727))
+:assumption (or x4903 x1304)
+:assumption (or x6633 (not x1040))
+:assumption (or x27883 (not x13430))
+:assumption (or x10729 x1143)
+:assumption (or (not x8586) (not x18902))
+:assumption (or (not x27285) x16309)
+:assumption (or x31526 x2334 (not x19427))
+:assumption (or x6181 x11294)
+:assumption (or x14144 (not x12269) x7835 x26193 x5554 (not x2823))
+:assumption (or x6243 (not x7665))
+:assumption (or x23493 (not x29868))
+:assumption (or (not x12422) x18605)
+:assumption (or (not x31211) x11912)
+:assumption (or x9365 (not x13114))
+:assumption (or x2401 x22143)
+:assumption (or x23671 x1813)
+:assumption (or x9008 x23024)
+:assumption (or x20958 (not x11166))
+:assumption (or (not x21145) x28654 (not x28314) (not x27557))
+:assumption (or x17000 x27219)
+:assumption (or x27037 (not x15740) (not x20606))
+:assumption (or x12303 x29272)
+:assumption (or (not x26669) (not x27256))
+:assumption (or (not x21115) (not x12422) x20402 x21416 x19619 x14812 x2041 x2325 (not x15952))
+:assumption (or (not x27129) (not x16741))
+:assumption (or (not x6351) (not x18936))
+:assumption (or x21445 x30434)
+:assumption (or (not x10127) (not x14238))
+:assumption (or x25964 x23261 (not x8442) (not x21158) (not x2133))
+:assumption (or x27890 (not x3324))
+:assumption (or x9397 x10993)
+:assumption (or (not x7808) x24476 x18253 (not x17703))
+:assumption (or x16925 (not x12690))
+:assumption (or x24457 x5306)
+:assumption (or (not x28480) x3181)
+:assumption (or x18743 (not x27256))
+:assumption (or x14861 x607)
+:assumption (or (not x9008) x4472)
+:assumption (or x14323 x27653)
+:assumption (or x21564 x12200)
+:assumption (or x21911 (not x22209))
+:assumption (or (not x11773) (not x21546))
+:assumption (or x14585 x18001)
+:assumption (or (not x22216) (not x4451))
+:assumption (or (not x15742) x11985)
+:assumption (or (not x5438) (not x3043))
+:assumption (or x22353 x19131)
+:assumption (or (not x23598) (not x20451) (not x10499) x25504)
+:assumption (or x5134 (not x22571))
+:assumption (or (not x24157) (not x8744))
+:assumption (or x19398 (not x12199))
+:assumption (or x14146 x7801)
+:assumption (or (not x19513) x3156)
+:assumption (or x19333 (not x964) (not x169) x8018)
+:assumption (or x14347 x28386)
+:assumption (or x5784 (not x26085) (not x28328) (not x3208) (not x5768) (not x27427) x4342)
+:assumption (or (not x17831) x8724)
+:assumption (or (not x24720) (not x6682) x9703 x31072 (not x12040) (not x26295))
+:assumption (or (not x8290) x6198)
+:assumption (or x577 x9831 x2278 (not x25334))
+:assumption (or (not x10213) (not x10402) (not x7616) x21955)
+:assumption (or x10081 (not x25352) x10634)
+:assumption (or x21216 (not x27537))
+:assumption (or x15208 (not x1393))
+:assumption (or (not x25828) (not x23266))
+:assumption (or (not x2043) (not x31323))
+:assumption (or (not x6341) x7286)
+:assumption (or x7581 (not x26357))
+:assumption (or (not x14859) (not x16374))
+:assumption (or x29712 (not x8751))
+:assumption (or (not x3514) x20118 (not x11043) x3706)
+:assumption (or (not x24030) x29316)
+:assumption (or x6560 (not x17796))
+:assumption (or (not x22288) (not x9340))
+:assumption (or (not x31813) x29287 x28862 x5139)
+:assumption (or x28724 x1948 (not x157) (not x16225) x17543 x6951 x23849 x1119)
+:assumption (or (not x4352) (not x720))
+:assumption (or (not x29595) (not x6549))
+:assumption (or x16763 (not x16420) x18222)
+:assumption (or x28073 (not x26436))
+:assumption (or (not x31301) x18670 (not x6683))
+:assumption (or (not x30831) x1796 x31230 (not x23773))
+:assumption (or (not x9044) (not x6105))
+:assumption (or (not x30871) (not x24244))
+:assumption (or (not x20473) x20423)
+:assumption (or x21595 x22878)
+:assumption (or (not x22738) x4638)
+:assumption (or (not x22056) x8733)
+:assumption (or (not x11496) (not x2592) x27696 (not x4386))
+:assumption (or (not x27396) (not x27188) x4963 (not x21298))
+:assumption (or (not x10279) (not x17835))
+:assumption (or x16809 x19389)
+:assumption (or (not x9945) x30829)
+:assumption (or (not x28032) (not x24477))
+:assumption (or (not x549) x8002)
+:assumption (or (not x12037) x3464)
+:assumption (or x9660 (not x29795))
+:assumption (or x24351 x5608 (not x12482) (not x13367) (not x9617))
+:assumption (or x7816 x16266)
+:assumption (or (not x5009) (not x13221))
+:assumption (or (not x24160) x11581)
+:assumption (or x9064 (not x20248))
+:assumption (or (not x12353) x2332)
+:assumption (or (not x31175) (not x22986))
+:assumption (or x20923 x1190)
+:assumption (or (not x30075) (not x1636) x18635)
+:assumption (or (not x19286) x20820)
+:assumption (or x12573 x1654)
+:assumption (or (not x12577) x3174)
+:assumption (or x2006 (not x29765))
+:assumption (or x1656 (not x1393))
+:assumption (or x11362 (not x26758))
+:assumption (or x5688 x24981)
+:assumption (or x30572 x16432)
+:assumption (or (not x13266) x20300)
+:assumption (or x1052 x1150 (not x27525))
+:assumption (or x612 (not x14780))
+:assumption (or x16750 (not x7802))
+:assumption (or (not x9008) x19298 (not x5528) x27553 x9961)
+:assumption (or (not x27537) x19167)
+:assumption (or x31600 (not x25659))
+:assumption (or (not x21489) (not x4268))
+:assumption (or (not x3463) x10832)
+:assumption (or (not x28956) x9879)
+:assumption (or (not x2083) x27137)
+:assumption (or x17407 x3535 x1393 (not x27683) (not x2916) x8250 x19199 x24527)
+:assumption (or x21151 (not x30018))
+:assumption (or x10626 x12647 (not x25911) (not x2387))
+:assumption (or x10874 x2978 (not x28242) x5095)
+:assumption (or x10314 x13931)
+:assumption (or x20882 x22449)
+:assumption (or (not x29824) x17821)
+:assumption (or x8807 x25921)
+:assumption (or x14897 x7879)
+:assumption (or (not x6951) x196)
+:assumption (or x2983 (not x7698))
+:assumption (or x738 x9236)
+:assumption (or (not x2463) (not x4653))
+:assumption (or (not x16730) x8262)
+:assumption (or (not x2990) (not x23244))
+:assumption (or x28442 (not x3682))
+:assumption (or x25761 (not x4136) (not x20223) x29959 x6594)
+:assumption (or x20256 x7014 x26754)
+:assumption (or x27302 (not x7896))
+:assumption (or (not x20364) x24358)
+:assumption (or (not x31683) x9278)
+:assumption (or x18519 x4674)
+:assumption (or (not x716) (not x13628))
+:assumption (or (not x2842) x23200)
+:assumption (or (not x3507) (not x22105))
+:assumption (or (not x397) (not x19482))
+:assumption (or x27562 x3865)
+:assumption (or (not x23974) x31774)
+:assumption (or (not x26602) (not x8076))
+:assumption (or x15857 x7275)
+:assumption (or x23129 (not x18071))
+:assumption (or x3841 (not x30954))
+:assumption (or x18872 (not x6049))
+:assumption (or (not x20079) (not x2578))
+:assumption (or (not x17387) x24991)
+:assumption (or (not x25697) x6157)
+:assumption (or (not x10745) (not x4383) (not x31673))
+:assumption (or x25340 (not x6457))
+:assumption (or (not x30394) (not x10289))
+:assumption (or x16510 x12826)
+:assumption (or (not x5799) x6858 x8002)
+:assumption (or x31056 (not x2357))
+:assumption (or (not x531) x23566)
+:assumption (or (not x6646) x6366)
+:assumption (or x8111 x11201)
+:assumption (or (not x5305) x433)
+:assumption (or (not x10089) x28048 x17013)
+:assumption (or (not x20976) (not x21127) x6893 (not x23602))
+:assumption (or x374 x22755)
+:assumption (or x3805 x5942)
+:assumption (or (not x2133) x25169)
+:assumption (or (not x18500) x21298 x13903 x2492)
+:assumption (or x14395 (not x21201))
+:assumption (or (not x9025) x10909 (not x7994))
+:assumption (or x26303 x142)
+:assumption (or (not x17860) x1357)
+:assumption (or (not x31335) x9002)
+:assumption (or x2214 x17534)
+:assumption (or x13118 x7934)
+:assumption (or x10826 x18944)
+:assumption (or (not x3618) x15143)
+:assumption (or x12512 x20187)
+:assumption (or (not x12774) (not x11427) x30265 (not x13268))
+:assumption (or x19184 x3206)
+:assumption (or x10311 x23014)
+:assumption (or (not x4337) x14839 x13835 x23306)
+:assumption (or (not x2097) (not x20671))
+:assumption (or (not x20012) x26983)
+:assumption (or (not x15132) (not x21212))
+:assumption (or (not x30208) x13014 x13228 (not x5293))
+:assumption (or (not x6951) (not x31023))
+:assumption (or x20325 x4607)
+:assumption (or x5304 x23124)
+:assumption (or (not x1510) x6750)
+:assumption (or x10838 x12486)
+:assumption (or x31770 x27070 x31639 (not x19724) (not x891))
+:assumption (or (not x2510) (not x18950))
+:assumption (or x8619 (not x634))
+:assumption (or x25659 x10721 (not x19016))
+:assumption (or (not x17096) x4524 (not x10971) x12121 x3842 (not x7331) (not x16070) (not x12620))
+:assumption (or (not x10816) (not x23984))
+:assumption (or x7408 (not x22495) (not x5370) (not x6348))
+:assumption (or (not x2910) (not x6887))
+:assumption (or x4482 (not x15983))
+:assumption (or (not x23025) (not x18769))
+:assumption (or x31414 x29387)
+:assumption (or (not x28454) (not x23244) x10874)
+:assumption (or x25658 (not x30156) (not x25423))
+:assumption (or x21720 (not x27150) x1449 x11856 x1110)
+:assumption (or x10845 x8002 x23244 (not x20074))
+:assumption (or (not x2933) x27119)
+:assumption (or x19557 (not x16002))
+:assumption (or (not x964) (not x9516) x28608)
+:assumption (or x22984 x19066)
+:assumption (or (not x4163) x22388)
+:assumption (or (not x20735) (not x25564) x20060)
+:assumption (or x16823 x27821)
+:assumption (or x14376 (not x6028))
+:assumption (or (not x20285) (not x3987))
+:assumption (or x8002 x13164)
+:assumption (or (not x6972) (not x24338))
+:assumption (or (not x25457) (not x8238))
+:assumption (or (not x2750) (not x4))
+:assumption (or x3479 (not x18359))
+:assumption (or x1696 x29255)
+:assumption (or (not x6052) x1194)
+:assumption (or x9424 (not x19539))
+:assumption (or (not x4322) (not x19951))
+:assumption (or (not x26562) x14839)
+:assumption (or x30728 (not x8860))
+:assumption (or x9930 x26183 x21178 (not x12226))
+:assumption (or x22981 (not x30275))
+:assumption (or (not x12637) x12649 (not x13093) x24863 x1064)
+:assumption (or (not x3602) (not x23323))
+:assumption (or (not x25532) x5528)
+:assumption (or (not x17457) x11231)
+:assumption (or x10409 x1474)
+:assumption (or (not x19160) x9171 x13361 (not x18588))
+:assumption (or (not x25612) (not x4918))
+:assumption (or (not x21879) x27673 (not x18455) (not x26423) x7846)
+:assumption (or x24528 x3168)
+:assumption (or (not x6395) x20700)
+:assumption (or (not x11718) (not x14204) (not x7859))
+:assumption (or x4728 (not x3149))
+:assumption (or x1177 (not x20401) (not x28761))
+:assumption (or (not x701) (not x1874))
+:assumption (or x16759 (not x9568))
+:assumption (or x22295 (not x22998))
+:assumption (or x6601 (not x14060))
+:assumption (or x9008 (not x6577))
+:assumption (or x18037 x26390)
+:assumption (or (not x9802) (not x31587))
+:assumption (or x21202 x9752)
+:assumption (or x15881 (not x27375))
+:assumption (or x2973 x29787 x9144 x16143 x31143 (not x24497) (not x29031) (not x8873) x22358)
+:assumption (or x2022 x11479)
+:assumption (or x19487 (not x13926) (not x12578))
+:assumption (or x15691 x22149)
+:assumption (or (not x5200) (not x28920))
+:assumption (or (not x8515) x14330)
+:assumption (or x23227 (not x3919) (not x1411))
+:assumption (or (not x11175) x8071)
+:assumption (or x16025 (not x11129))
+:assumption (or x19480 x6088 (not x16878) (not x15284))
+:assumption (or x16907 (not x28918))
+:assumption (or (not x20809) x6440)
+:assumption (or (not x1356) x29658)
+:assumption (or x5079 x29460)
+:assumption (or (not x14943) x18588)
+:assumption (or (not x31601) x26114 x12872 (not x3193))
+:assumption (or x16329 x1522)
+:assumption (or (not x7150) x8961)
+:assumption (or x8559 (not x23674) (not x22438) (not x26081))
+:assumption (or (not x30148) (not x2207))
+:assumption (or (not x11525) (not x11718))
+:assumption (or (not x2531) x514)
+:assumption (or (not x20929) (not x6757))
+:assumption (or x13700 x21815)
+:assumption (or x948 x1795)
+:assumption (or x1698 x20702 x8792 (not x6526) (not x2091) (not x25556))
+:assumption (or (not x26420) (not x8022) (not x25659))
+:assumption (or (not x4270) x20262 x28699 x8002 (not x9289) (not x3541))
+:assumption (or x23625 (not x3045))
+:assumption (or x19769 x4961)
+:assumption (or x13388 x30952)
+:assumption (or x15114 (not x9008) x23302)
+:assumption (or x12083 (not x6027) (not x15061))
+:assumption (or (not x8002) x24374)
+:assumption (or (not x14181) (not x30751))
+:assumption (or (not x31572) x21439)
+:assumption (or x4685 x16901)
+:assumption (or (not x30633) (not x13211))
+:assumption (or x27329 (not x31153))
+:assumption (or (not x24551) x6071)
+:assumption (or x21339 x27569 (not x543) (not x21298))
+:assumption (or x5035 (not x25177))
+:assumption (or (not x31148) (not x28541))
+:assumption (or x26150 (not x23239))
+:assumption (or (not x14339) x782)
+:assumption (or x10851 (not x27947) x22288 (not x12072) x3918 (not x16950))
+:assumption (or x30153 (not x3562))
+:assumption (or (not x7799) x16186)
+:assumption (or x2392 x11716)
+:assumption (or (not x3314) x25659)
+:assumption (or (not x4799) (not x26027))
+:assumption (or (not x14847) (not x7430))
+:assumption (or x19705 (not x8103))
+:assumption (or x23904 (not x29792))
+:assumption (or (not x12083) (not x30046))
+:assumption (or (not x18332) x14765)
+:assumption (or (not x5960) (not x29701))
+:assumption (or (not x26380) x10049)
+:assumption (or (not x24154) (not x18133))
+:assumption (or (not x25735) x31650)
+:assumption (or x31183 (not x3935))
+:assumption (or x10107 x24464)
+:assumption (or (not x11605) (not x4430))
+:assumption (or (not x18871) x10375)
+:assumption (or (not x6933) x18271)
+:assumption (or x7294 (not x16416))
+:assumption (or (not x12402) x20013)
+:assumption (or x21212 (not x26773))
+:assumption (or (not x9169) x18466)
+:assumption (or (not x19819) (not x24513))
+:assumption (or (not x8858) (not x30825))
+:assumption (or x7697 (not x25682))
+:assumption (or x16858 (not x24291) (not x8602))
+:assumption (or x23238 (not x3112))
+:assumption (or x17684 (not x31830) x24226 (not x6822) x11372)
+:assumption (or x17484 (not x7977))
+:assumption (or x11268 (not x1847))
+:assumption (or x26000 x26692)
+:assumption (or (not x30113) x17348)
+:assumption (or x31392 (not x26983))
+:assumption (or x11902 x7112)
+:assumption (or x24242 x15943)
+:assumption (or (not x25273) x15374)
+:assumption (or x14765 (not x21008) x16025)
+:assumption (or x20708 (not x12127))
+:assumption (or (not x4233) x31472)
+:assumption (or x28734 (not x19531))
+:assumption (or x9920 (not x10935))
+:assumption (or (not x17700) (not x9975))
+:assumption (or (not x4174) (not x12631))
+:assumption (or (not x21653) (not x6101))
+:assumption (or (not x21185) (not x1022))
+:assumption (or x12831 (not x28825))
+:assumption (or x25726 (not x8769) (not x27853) x5276)
+:assumption (or (not x87) x27767)
+:assumption (or (not x15954) x22710)
+:assumption (or x24653 x28541)
+:assumption (or x23017 x27165)
+:assumption (or (not x10741) x231)
+:assumption (or (not x19666) x19992 (not x28265) (not x14439))
+:assumption (or x13138 x9290 x30809 (not x18946) (not x20496) (not x6960))
+:assumption (or (not x3362) x14455)
+:assumption (or x17388 x2848)
+:assumption (or (not x9188) x9314)
+:assumption (or x1899 (not x3749))
+:assumption (or (not x12349) x4598)
+:assumption (or (not x4948) (not x9576))
+:assumption (or x27909 x4284)
+:assumption (or (not x28173) x19670 (not x9531) (not x28460) (not x7076))
+:assumption (or x18479 x15564)
+:assumption (or x6325 (not x16897))
+:assumption (or x22619 (not x24882))
+:assumption (or x725 x12764 x16025)
+:assumption (or (not x22802) (not x18581))
+:assumption (or (not x13472) x19990 (not x9423) x1132)
+:assumption (or x21298 (not x12176) x23329 (not x13630))
+:assumption (or (not x9143) x30014)
+:assumption (or x30517 x12235)
+:assumption (or x2170 x7614)
+:assumption (or (not x21894) x18878 (not x14591) x25366)
+:assumption (or (not x25151) x9626 (not x2417))
+:assumption (or x15190 (not x6423))
+:assumption (or (not x5030) (not x13158))
+:assumption (or (not x1081) (not x30488))
+:assumption (or x18441 (not x8665) x1601)
+:assumption (or (not x5975) x10852)
+:assumption (or x11979 x8937)
+:assumption (or x23803 (not x27621))
+:assumption (or (not x8559) x22438)
+:assumption (or (not x25136) x28267)
+:assumption (or (not x5294) x21816)
+:assumption (or (not x5351) x3494)
+:assumption (or x13111 x18810)
+:assumption (or x25355 (not x12708) (not x2238) (not x30852))
+:assumption (or x6559 x31092)
+:assumption (or x7835 (not x3713) (not x801) x2133 (not x21955))
+:assumption (or (not x13219) (not x4411))
+:assumption (or x5813 (not x20863) x21537 x18338 x8580 (not x25326) x25192 x3035)
+:assumption (or x3589 (not x15161) x25969)
+:assumption (or (not x21702) (not x27085))
+:assumption (or (not x23357) x21062)
+:assumption (or (not x8351) x16856 x28063 (not x29623) (not x29604) x2495)
+:assumption (or (not x8848) x15143)
+:assumption (or (not x18202) (not x3224) x28436)
+:assumption (or x5571 x8276)
+:assumption (or (not x30755) x23162)
+:assumption (or x2810 x27430)
+:assumption (or (not x13228) x5293)
+:assumption (or (not x17431) (not x23960))
+:assumption (or (not x14399) x1608)
+:assumption (or (not x1883) x24346)
+:assumption (or x18822 (not x12045))
+:assumption (or (not x21783) x8970)
+:assumption (or (not x19600) x4378)
+:assumption (or x23640 x13429)
+:assumption (or x5778 x25326)
+:assumption (or x21964 x29426)
+:assumption (or (not x29655) x18722)
+:assumption (or (not x20169) (not x6594) (not x17534) x11784)
+:assumption (or x9754 x18928)
+:assumption (or (not x31734) (not x11762))
+:assumption (or (not x13975) x4822)
+:assumption (or (not x16362) (not x18460))
+:assumption (or x28398 (not x1945))
+:assumption (or x5394 (not x762) x24826 (not x19981))
+:assumption (or x7777 (not x29305) (not x17046) x21298)
+:assumption (or (not x27593) x28681)
+:assumption (or (not x9025) x6133 x31776)
+:assumption (or (not x6904) (not x25597) x13502)
+:assumption (or x7899 x12344)
+:assumption (or (not x9652) (not x25659))
+:assumption (or (not x15036) (not x18605) x21298)
+:assumption (or x20223 (not x25761))
+:assumption (or x29442 (not x21060) (not x5109))
+:assumption (or x11966 x704)
+:assumption (or x727 x30575)
+:assumption (or (not x20132) x14853)
+:assumption (or (not x27793) x23667)
+:assumption (or (not x16467) x17595)
+:assumption (or x24951 x4599)
+:assumption (or (not x14819) x23094)
+:assumption (or (not x1726) x30113)
+:assumption (or (not x21633) x27233 (not x13956) x6565)
+:assumption (or x8103 (not x19705))
+:assumption (or (not x16793) (not x23115))
+:assumption (or (not x19032) (not x9757))
+:assumption (or (not x6606) x27319)
+:assumption (or (not x31287) (not x25618))
+:assumption (or x9149 x16510)
+:assumption (or (not x9378) (not x13415))
+:assumption (or x24138 x19602)
+:assumption (or x4419 (not x1565))
+:assumption (or (not x16984) x29276)
+:assumption (or x7548 x30748 x3253 x31654)
+:assumption (or (not x4720) (not x22036))
+:assumption (or x2278 (not x25241) (not x4954) (not x6816))
+:assumption (or (not x22740) (not x10342))
+:assumption (or (not x2783) x28885 x17447 (not x27218) x13438 x10306 (not x28041) (not x10949))
+:assumption (or (not x8834) (not x11215))
+:assumption (or x20889 (not x4220))
+:assumption (or (not x4397) x1437)
+:assumption (or (not x479) x11935)
+:assumption (or (not x2290) x9853 (not x28540) x29518 (not x25227) x3322 (not x15133) x13285)
+:assumption (or (not x4408) (not x2800))
+:assumption (or (not x25232) (not x16375))
+:assumption (or x30793 x31866)
+:assumption (or (not x25700) (not x31504))
+:assumption (or x850 (not x15930))
+:assumption (or x19268 (not x17288))
+:assumption (or (not x25005) (not x29251))
+:assumption (or (not x7194) x13105 (not x8813) x7359 x1831 x7992)
+:assumption (or (not x30872) (not x9008))
+:assumption (or x8067 x20402 (not x1567))
+:assumption (or x20469 x22495 (not x24152) (not x23312) x8122 (not x28163) x26721 (not x1331) x11937)
+:assumption (or (not x27865) x29288)
+:assumption (or x8355 x27682 (not x25659))
+:assumption (or (not x7513) x2343)
+:assumption (or (not x19257) x8338)
+:assumption (or (not x30788) x21815)
+:assumption (or (not x28323) x13993 x6990)
+:assumption (or x12556 (not x7411))
+:assumption (or x2256 x10106)
+:assumption (or x10196 (not x16793))
+:assumption (or (not x17804) x20823)
+:assumption (or x26552 (not x15672))
+:assumption (or x18693 x23034)
+:assumption (or (not x8961) x20576 (not x26373) (not x21617))
+:assumption (or (not x3724) (not x24080))
+:assumption (or x10806 x8691)
+:assumption (or x26819 x2506 x10240 (not x5396))
+:assumption (or (not x5903) (not x11940))
+:assumption (or (not x1666) (not x27180))
+:assumption (or (not x6274) x27195)
+:assumption (or x12171 (not x2926) (not x2886) (not x28118))
+:assumption (or x9688 (not x18816))
+:assumption (or (not x7242) (not x9565))
+:assumption (or x13812 x9477 x23141 x1381 x30729 x27030 (not x7410) (not x6874))
+:assumption (or x6969 x14391 x22377)
+:assumption (or x2466 (not x29274))
+:assumption (or x23391 x9513)
+:assumption (or (not x11366) x260)
+:assumption (or x13911 (not x22459))
+:assumption (or x373 (not x19200))
+:assumption (or x13667 (not x25366))
+:assumption (or x8573 x18833 x22488)
+:assumption (or (not x679) (not x9082))
+:assumption (or x1393 (not x8171))
+:assumption (or x29364 x27985)
+:assumption (or x18069 (not x21275))
+:assumption (or x29043 (not x26284))
+:assumption (or x30296 (not x6337))
+:assumption (or x7885 (not x8135))
+:assumption (or (not x18128) (not x17534))
+:assumption (or (not x26313) (not x3412) (not x6848))
+:assumption (or (not x4545) x30633 (not x18007))
+:assumption (or x13704 x31928)
+:assumption (or (not x20149) x21653)
+:assumption (or (not x10771) x23352)
+:assumption (or (not x1231) x6307)
+:assumption (or x26295 x6682)
+:assumption (or x24218 x2862)
+:assumption (or (not x3280) x2518)
+:assumption (or (not x8514) (not x15575))
+:assumption (or (not x25502) x1446)
+:assumption (or x7325 x6990)
+:assumption (or (not x21770) x14687)
+:assumption (or x24416 (not x14138))
+:assumption (or x4249 x25372)
+:assumption (or x11449 (not x5018))
+:assumption (or x67 (not x27070))
+:assumption (or x24929 (not x13110))
+:assumption (or x11984 x30457)
+:assumption (or x17795 x6353)
+:assumption (or x29290 (not x23594))
+:assumption (or (not x28116) x15624)
+:assumption (or x3560 (not x5826))
+:assumption (or (not x3611) x16766)
+:assumption (or (not x23438) x2347)
+:assumption (or (not x15866) x24390)
+:assumption (or (not x4187) (not x24584))
+:assumption (or x11281 (not x5235))
+:assumption (or (not x25642) x15995 (not x24150) (not x6593) x30425 x17335)
+:assumption (or (not x20856) (not x6778))
+:assumption (or x18851 (not x6485))
+:assumption (or (not x5884) x11293 x1359 x6444)
+:assumption (or x6490 x2629 (not x30019) x22709 x1293)
+:assumption (or (not x20299) x22930 x23405 (not x31767))
+:assumption (or x6874 (not x16747))
+:assumption (or x13094 (not x17810))
+:assumption (or x9531 (not x20121))
+:assumption (or (not x28162) x28485)
+:assumption (or x21356 x2840)
+:assumption (or (not x23279) x4856)
+:assumption (or (not x3860) (not x20383))
+:assumption (or x28219 x27170)
+:assumption (or x23606 x12045)
+:assumption (or x7162 (not x27207) (not x12346))
+:assumption (or x29305 x21041 (not x12176) (not x5528) (not x9008))
+:assumption (or x8321 x29401)
+:assumption (or (not x20443) (not x19811))
+:assumption (or (not x20121) x16510)
+:assumption (or (not x18698) (not x31071) x5528)
+:assumption (or (not x15227) (not x18425))
+:assumption (or (not x6656) x477)
+:assumption (or (not x26008) x26752 x25659)
+:assumption (or (not x9358) x26121)
+:assumption (or (not x27259) (not x6694) x23958 x31858)
+:assumption (or x11171 (not x16304) (not x11268) (not x21815) (not x29534) (not x16510) (not x10632))
+:assumption (or (not x16830) (not x22917))
+:assumption (or (not x16696) x23786)
+:assumption (or x24405 (not x27144) x9008)
+:assumption (or (not x16157) (not x4479))
+:assumption (or (not x19133) (not x11304))
+:assumption (or x19 (not x14192))
+:assumption (or x25910 (not x31388))
+:assumption (or x1341 x28238)
+:assumption (or x2908 (not x11988))
+:assumption (or x31574 (not x21566))
+:assumption (or (not x28037) x18186)
+:assumption (or x16510 (not x3925) (not x26670))
+:assumption (or (not x25065) x20215)
+:assumption (or x10971 x23428)
+:assumption (or (not x22947) (not x2284))
+:assumption (or (not x24826) x23354 x14806 (not x7153))
+:assumption (or (not x18093) (not x27428) x23711 (not x18382))
+:assumption (or x27862 (not x11928))
+:assumption (or (not x10983) (not x17326))
+:assumption (or (not x14899) x20032)
+:assumption (or x18710 x2498)
+:assumption (or x24940 x27099 (not x27687) (not x30) (not x16510) (not x5334))
+:assumption (or x17076 (not x7800))
+:assumption (or (not x24524) x5364)
+:assumption (or x11244 (not x24767))
+:assumption (or (not x4378) (not x20723) x13956 x8002 x23244 (not x6269))
+:assumption (or (not x707) (not x8217))
+:assumption (or x1435 (not x4559))
+:assumption (or (not x22772) (not x29118))
+:assumption (or x25616 x10019)
+:assumption (or (not x15492) x18831)
+:assumption (or x29495 (not x20930))
+:assumption (or (not x31266) (not x6312) x7511 (not x24931) (not x10849))
+:assumption (or (not x16813) (not x11783))
+:assumption (or (not x31046) (not x7579))
+:assumption (or x1582 (not x3143) (not x9886))
+:assumption (or (not x14359) (not x7237))
+:assumption (or (not x3042) x3304)
+:assumption (or x16387 x4736)
+:assumption (or x5829 (not x3879))
+:assumption (or x964 (not x22083))
+:assumption (or (not x11490) (not x11489))
+:assumption (or x23070 x5274)
+:assumption (or x27436 (not x28730) (not x6814) x30845)
+:assumption (or x8218 x14341)
+:assumption (or x31693 (not x10193) x13674 (not x5617) x14550 (not x18783))
+:assumption (or x29311 x17185)
+:assumption (or x15233 (not x19083))
+:assumption (or x15807 x1214 x10466)
+:assumption (or x14446 (not x1537))
+:assumption (or x17539 (not x12192) x25479 x3059 (not x28642) x9678 (not x14074))
+:assumption (or (not x12469) (not x9628))
+:assumption (or x4887 x6452)
+:assumption (or (not x14839) x19746)
+:assumption (or (not x13690) (not x28652))
+:assumption (or (not x21260) x5175)
+:assumption (or (not x9898) (not x3886))
+:assumption (or x20214 x25722)
+:assumption (or (not x429) (not x11653))
+:assumption (or (not x13576) (not x13364))
+:assumption (or x16150 (not x28301) x4815 (not x22114) (not x27532))
+:assumption (or x27920 (not x11194))
+:assumption (or (not x17661) (not x27619))
+:assumption (or (not x23881) x20511)
+:assumption (or x499 (not x7850))
+:assumption (or x9768 (not x394))
+:assumption (or (not x25675) (not x248))
+:assumption (or x17308 x8226)
+:assumption (or x5330 (not x30349))
+:assumption (or x19146 (not x24267) (not x21612) (not x6218))
+:assumption (or x24107 x11129 (not x16025))
+:assumption (or x4052 (not x11622) (not x14728) x21741 x13674 (not x6052))
+:assumption (or (not x14509) x1508 (not x21298) (not x4526))
+:assumption (or (not x13832) (not x20810))
+:assumption (or x12364 (not x9008))
+:assumption (or x20610 x31119)
+:assumption (or x18160 x28054)
+:assumption (or x23069 x4089 (not x22504) x16446 x8134 (not x8324) x27956 x15806)
+:assumption (or (not x26998) (not x13714))
+:assumption (or x26432 x848)
+:assumption (or x2630 x10909)
+:assumption (or x1621 x28066 (not x28278))
+:assumption (or x24554 x16202)
+:assumption (or x3851 (not x3150))
+:assumption (or x29931 (not x20028))
+:assumption (or (not x20269) x24465)
+:assumption (or (not x20143) (not x3952))
+:assumption (or (not x29854) (not x28206))
+:assumption (or (not x29490) x28973 (not x288) x11214)
+:assumption (or (not x6667) (not x28300))
+:assumption (or (not x5934) x23172)
+:assumption (or (not x20516) (not x30299))
+:assumption (or (not x8002) x22554)
+:assumption (or (not x12086) (not x17855) (not x11963) (not x30313))
+:assumption (or x13531 (not x11194))
+:assumption (or (not x10909) x25909 x6739)
+:assumption (or (not x10325) (not x5340))
+:assumption (or x28114 x29626)
+:assumption (or (not x24885) (not x10777))
+:assumption (or (not x5510) (not x29594))
+:assumption (or (not x10558) (not x19321))
+:assumption (or (not x11100) x7871)
+:assumption (or (not x3274) (not x19954))
+:assumption (or x1359 (not x22015))
+:assumption (or x19461 (not x5705))
+:assumption (or (not x16330) (not x9008) (not x22561))
+:assumption (or (not x6960) (not x1105))
+:assumption (or (not x12660) x22193)
+:assumption (or x2121 (not x28111))
+:assumption (or x7813 x18859 (not x10661))
+:assumption (or x3494 (not x9873))
+:assumption (or (not x21120) x5402)
+:assumption (or x18793 (not x8415))
+:assumption (or (not x4058) (not x27780))
+:assumption (or x30564 x27192)
+:assumption (or x20694 (not x26897))
+:assumption (or x15424 (not x10658))
+:assumption (or (not x12131) x8951)
+:assumption (or x8697 x5543)
+:assumption (or (not x7071) (not x15536))
+:assumption (or x16212 x20156)
+:assumption (or x6669 x15002)
+:assumption (or (not x2459) (not x9771))
+:assumption (or x11022 x12081)
+:assumption (or (not x13132) x12593)
+:assumption (or x5569 (not x21338))
+:assumption (or x4133 (not x3291))
+:assumption (or x6069 x4670 (not x29639))
+:assumption (or x31011 x16850)
+:assumption (or x5528 (not x29012))
+:assumption (or (not x26375) x14631)
+:assumption (or x19720 x24453)
+:assumption (or (not x6048) x27620)
+:assumption (or (not x21256) (not x12151))
+:assumption (or x31019 (not x31747))
+:assumption (or (not x23617) x9840)
+:assumption (or (not x18937) (not x17981))
+:assumption (or x5886 (not x8961) x22969 (not x6256))
+:assumption (or (not x6972) (not x13607) x17359 x11281)
+:assumption (or (not x9394) x9410 (not x4396) (not x17357) x8240)
+:assumption (or (not x19173) (not x6285))
+:assumption (or (not x29661) (not x9676))
+:assumption (or (not x9647) x3073)
+:assumption (or (not x23711) x27428)
+:assumption (or (not x21001) (not x5939))
+:assumption (or x30667 (not x26509) (not x19992))
+:assumption (or (not x11449) x5018)
+:assumption (or (not x19135) (not x3516))
+:assumption (or (not x24135) (not x3414))
+:assumption (or (not x12895) (not x23896) (not x24446) x25923 (not x23207))
+:assumption (or (not x19711) (not x18519) (not x20203))
+:assumption (or (not x2572) (not x29959))
+:assumption (or x3126 (not x1034))
+:assumption (or (not x16999) x20456)
+:assumption (or (not x14291) x28253)
+:assumption (or x16185 x27841)
+:assumption (or x26138 (not x11384))
+:assumption (or (not x12695) x25355)
+:assumption (or x23877 x17268)
+:assumption (or (not x2402) x182)
+:assumption (or (not x13271) x10420)
+:assumption (or x27986 (not x4272))
+:assumption (or (not x11144) x1993)
+:assumption (or (not x12719) (not x6748))
+:assumption (or x12727 x9008 (not x12858))
+:assumption (or x1459 x12815)
+:assumption (or (not x24079) x21155)
+:assumption (or x30113 (not x3070))
+:assumption (or x1159 (not x9423) x8866)
+:assumption (or (not x169) (not x23658))
+:assumption (or (not x1474) x28175 (not x25963) (not x15611) x13965)
+:assumption (or (not x9008) x18567 (not x5528) (not x31782) (not x25460))
+:assumption (or (not x5042) (not x9291))
+:assumption (or (not x12227) x27482)
+:assumption (or x21633 (not x8950))
+:assumption (or (not x12939) (not x5216))
+:assumption (or x26105 x25409)
+:assumption (or x22498 (not x31002) x8987)
+:assumption (or (not x28218) (not x21400))
+:assumption (or (not x29981) x5377 (not x27111) (not x2111))
+:assumption (or x25699 x15366)
+:assumption (or (not x26986) (not x5387))
+:assumption (or x28518 x5483 x27203 x12037)
+:assumption (or x2074 x25890)
+:assumption (or (not x20970) (not x24050))
+:assumption (or x21088 (not x31425))
+:assumption (or x28724 (not x8243))
+:assumption (or x23736 x24425)
+:assumption (or (not x13795) (not x6915))
+:assumption (or x14247 (not x23767))
+:assumption (or x13410 x19103)
+:assumption (or (not x17037) (not x28013))
+:assumption (or x26597 (not x3995) (not x28084) x2445 x7096 x4377 (not x7453) x4358 (not x10927))
+:assumption (or x13382 x15099)
+:assumption (or (not x14963) (not x2915) x27090)
+:assumption (or (not x27422) (not x7255) x24029 x29594 x455 (not x11750))
+:assumption (or (not x1417) (not x21913))
+:assumption (or (not x17116) (not x6351) x12578 (not x20735) (not x19482))
+:assumption (or (not x22970) (not x1427))
+:assumption (or x22851 x22141)
+:assumption (or (not x8982) x10664)
+:assumption (or x29357 (not x31724) x14963 x11503)
+:assumption (or x20193 x23817)
+:assumption (or x18357 (not x5895) x8655)
+:assumption (or x218 (not x29107) (not x23244))
+:assumption (or x4722 (not x23532))
+:assumption (or x16482 (not x29644) (not x9380) x26212 x24913 x18720)
+:assumption (or (not x4972) (not x5977))
+:assumption (or x5528 x23817 (not x24733))
+:assumption (or (not x1607) x21815)
+:assumption (or (not x10318) x22307)
+:assumption (or x6776 (not x4706))
+:assumption (or x17997 (not x12084))
+:assumption (or (not x11139) x12588)
+:assumption (or x2574 (not x7733) x9372)
+:assumption (or x26382 (not x6780))
+:assumption (or x5722 x13862)
+:assumption (or x24118 x28199)
+:assumption (or x12879 (not x10036))
+:assumption (or x31223 x26357)
+:assumption (or (not x1192) (not x5886) (not x8961) x7150)
+:assumption (or x13034 x30751)
+:assumption (or (not x19457) (not x6951))
+:assumption (or x3334 (not x28311))
+:assumption (or x11196 (not x31300))
+:assumption (or (not x11506) (not x5092))
+:assumption (or (not x25277) (not x26843))
+:assumption (or x7556 (not x2539))
+:assumption (or x31521 x16438)
+:assumption (or (not x24775) x12564)
+:assumption (or (not x31525) x21236)
+:assumption (or x1430 x27294)
+:assumption (or (not x26628) x4723)
+:assumption (or (not x30347) (not x6983))
+:assumption (or x23969 (not x24545))
+:assumption (or (not x5169) x26575 x15621 (not x5792))
+:assumption (or (not x44) (not x21213))
+:assumption (or (not x8894) x17764)
+:assumption (or x5528 (not x28017))
+:assumption (or x19992 (not x17822))
+:assumption (or (not x5980) (not x10995) (not x1569))
+:assumption (or (not x29645) x11787)
+:assumption (or x11244 x12871)
+:assumption (or (not x31682) (not x8438) (not x10064))
+:assumption (or (not x12097) (not x5558))
+:assumption (or x15077 x5885)
+:assumption (or (not x27998) (not x2348))
+:assumption (or x10909 x30336 x17088)
+:assumption (or x15209 x21458)
+:assumption (or (not x783) x18105)
+:assumption (or (not x6969) x29048)
+:assumption (or (not x16406) (not x29316))
+:assumption (or (not x14819) x13183)
+:assumption (or x30780 x14782)
+:assumption (or x9008 (not x2105))
+:assumption (or (not x6752) x21968)
+:assumption (or x909 x28781 (not x14890) (not x20021))
+:assumption (or x23116 (not x26892))
+:assumption (or x7700 (not x19546))
+:assumption (or x21082 x14083)
+:assumption (or x1761 (not x16400) (not x2866) (not x25584) x8002 (not x15570))
+:assumption (or (not x29800) x9423)
+:assumption (or x19449 (not x26572))
+:assumption (or (not x27006) x13401)
+:assumption (or x17855 x23635)
+:assumption (or x24510 (not x14359))
+:assumption (or x14009 (not x10574))
+:assumption (or (not x22342) (not x10574))
+:assumption (or (not x25086) (not x31696))
+:assumption (or x20695 x2669)
+:assumption (or x14699 (not x18003))
+:assumption (or (not x9259) x5832)
+:assumption (or x12502 x12656)
+:assumption (or (not x23809) (not x12845))
+:assumption (or x13492 x18145)
+:assumption (or x20566 x3785 x25719 x26319)
+:assumption (or x15489 (not x17149))
+:assumption (or x6951 (not x7252) x26642 x10641)
+:assumption (or x29386 x1750)
+:assumption (or x13721 x19661)
+:assumption (or (not x7722) x4451)
+:assumption (or (not x6969) x8206)
+:assumption (or (not x13286) (not x3823))
+:assumption (or x24519 (not x8275))
+:assumption (or x14841 x25103)
+:assumption (or x25991 x24153)
+:assumption (or x11886 x12289)
+:assumption (or x29819 (not x26306))
+:assumption (or (not x29215) x918 x31829 x1649)
+:assumption (or x1366 x21931 x15073 x8002 x18353 x14216)
+:assumption (or x17158 x27907)
+:assumption (or (not x16802) x7165)
+:assumption (or x1789 (not x15846))
+:assumption (or (not x11844) (not x796))
+:assumption (or (not x28430) x15936)
+:assumption (or (not x11810) (not x29446))
+:assumption (or (not x16869) (not x18750))
+:assumption (or (not x20677) (not x12145))
+:assumption (or (not x30080) (not x31171))
+:assumption (or (not x20804) (not x26104))
+:assumption (or (not x28907) x6192)
+:assumption (or x21590 x13725)
+:assumption (or (not x7012) (not x15606))
+:assumption (or (not x3480) (not x20806))
+:assumption (or (not x5828) (not x2963))
+:assumption (or (not x16851) x23390 (not x16922) x4006 x10550 (not x440) x15907)
+:assumption (or x745 (not x10446))
+:assumption (or (not x13438) x26687)
+:assumption (or (not x26128) (not x771) x1430 x2036 (not x16955) (not x12146))
+:assumption (or (not x13733) x25385)
+:assumption (or x30860 x25793)
+:assumption (or (not x11883) x21996)
+:assumption (or x23663 (not x17565))
+:assumption (or x3885 x19730)
+:assumption (or x29171 (not x15679))
+:assumption (or (not x19576) (not x8002))
+:assumption (or x17075 (not x27252) x10798)
+:assumption (or (not x13949) (not x21888))
+:assumption (or x51 (not x1714))
+:assumption (or x20215 x5343)
+:assumption (or x30891 (not x16736))
+:assumption (or x21407 x7551)
+:assumption (or x1393 (not x18390))
+:assumption (or (not x20979) (not x6969))
+:assumption (or (not x12159) x4390)
+:assumption (or (not x8119) (not x4917))
+:assumption (or x1712 x10601 x20883 x25278 x18745)
+:assumption (or x12322 (not x18813))
+:assumption (or x30208 x21191 (not x31676))
+:assumption (or x19409 x31278)
+:assumption (or x16510 (not x25034))
+:assumption (or x7178 x30707)
+:assumption (or (not x22442) (not x8938))
+:assumption (or x2899 x22963)
+:assumption (or (not x12464) x21280)
+:assumption (or x4266 x31595)
+:assumption (or (not x6859) (not x8290))
+:assumption (or (not x2906) (not x4287) (not x1149) (not x13708))
+:assumption (or x12495 (not x7698))
+:assumption (or x13259 (not x14046))
+:assumption (or (not x12912) x15861)
+:assumption (or (not x24324) x6637)
+:assumption (or x22313 x8229)
+:assumption (or x4434 x10375)
+:assumption (or x16310 x8461)
+:assumption (or (not x11489) x26968)
+:assumption (or x14659 x30567)
+:assumption (or x27915 (not x6932))
+:assumption (or x20927 (not x16721))
+:assumption (or (not x7062) (not x583))
+:assumption (or (not x12774) x31863)
+:assumption (or x7402 (not x3076))
+:assumption (or (not x30230) (not x23680))
+:assumption (or (not x15377) x8895 x28174 x29673 (not x29603) (not x14506) (not x3306))
+:assumption (or (not x22050) x2591)
+:assumption (or x19560 (not x30804))
+:assumption (or (not x3581) (not x19766))
+:assumption (or x12478 (not x22844))
+:assumption (or x3174 (not x65))
+:assumption (or (not x13345) x13456 (not x3533) x16588 (not x27071))
+:assumption (or (not x26376) (not x6130))
+:assumption (or x10344 x27040)
+:assumption (or (not x12242) x20638)
+:assumption (or x30803 x20042 (not x6910) x20470 (not x11147))
+:assumption (or (not x19638) (not x16344) (not x16397) (not x24996) (not x21084) (not x1070) (not x14618))
+:assumption (or x27104 x11628)
+:assumption (or (not x19344) (not x10716))
+:assumption (or x8473 x1114 (not x7640) (not x28033))
+:assumption (or x25320 (not x19151))
+:assumption (or (not x9459) x10259)
+:assumption (or (not x28923) x25968)
+:assumption (or x1287 x10885)
+:assumption (or (not x30140) (not x21432))
+:assumption (or (not x21979) (not x24058))
+:assumption (or (not x10616) (not x15227))
+:assumption (or x16842 (not x26837))
+:assumption (or (not x16868) (not x14121))
+:assumption (or x16355 (not x10430) x40 x1409 (not x3025) (not x8601))
+:assumption (or x18276 x23379)
+:assumption (or x17639 x16534)
+:assumption (or (not x30861) x26899 x24535)
+:assumption (or (not x3756) x2643)
+:assumption (or (not x15772) (not x29472))
+:assumption (or x11806 (not x15719))
+:assumption (or (not x13825) x22860)
+:assumption (or x30430 x17359 x28130 x26432)
+:assumption (or x424 (not x13956))
+:assumption (or x26426 x7939)
+:assumption (or x9372 (not x17698))
+:assumption (or x11722 x28460)
+:assumption (or (not x22367) x21815)
+:assumption (or x2791 x23426)
+:assumption (or x30497 (not x8578))
+:assumption (or x3855 x18623)
+:assumption (or (not x6099) (not x27012))
+:assumption (or x16003 (not x23822))
+:assumption (or x15764 x2336 (not x24826))
+:assumption (or (not x16340) x27965)
+:assumption (or (not x15107) x4026)
+:assumption (or x15623 x27582)
+:assumption (or (not x27054) (not x20467))
+:assumption (or x18850 x25277)
+:assumption (or x27408 (not x6516))
+:assumption (or x12029 (not x23244) x11459 x5385 x20596 x20981)
+:assumption (or x6919 (not x16656))
+:assumption (or (not x14270) (not x25621))
+:assumption (or x31793 x7327)
+:assumption (or x23889 x5422 (not x31873))
+:assumption (or x29919 (not x12923) (not x26052) (not x8345))
+:assumption (or (not x30404) (not x11101))
+:assumption (or x17914 x11378)
+:assumption (or x6486 x19358)
+:assumption (or x2014 x8872)
+:assumption (or (not x3400) (not x13404))
+:assumption (or x29372 (not x8152))
+:assumption (or (not x16309) x19326 x28897 x26659)
+:assumption (or (not x28175) x25963)
+:assumption (or (not x23244) (not x6698))
+:assumption (or (not x27582) (not x23300))
+:assumption (or (not x18709) x23136)
+:assumption (or x22855 (not x18776))
+:assumption (or x12245 (not x24503))
+:assumption (or (not x670) x25659)
+:assumption (or x14644 x2250)
+:assumption (or (not x14641) x17168)
+:assumption (or x19450 (not x9956))
+:assumption (or x4417 x18519)
+:assumption (or x2498 (not x4451) x7722 (not x28382))
+:assumption (or x21678 (not x25890))
+:assumption (or (not x12527) x1816)
+:assumption (or x11786 x28495)
+:assumption (or x26076 (not x6466))
+:assumption (or x13594 x16531)
+:assumption (or x1905 (not x20271))
+:assumption (or (not x2578) x155)
+:assumption (or (not x1678) (not x9392))
+:assumption (or (not x19897) (not x13576))
+:assumption (or (not x21493) (not x14591))
+:assumption (or x18547 x13274)
+:assumption (or x26681 x10088)
+:assumption (or x10977 x9333)
+:assumption (or x11509 (not x1393) (not x29578))
+:assumption (or x5398 (not x31569))
+:assumption (or x18003 (not x235))
+:assumption (or x1724 x491)
+:assumption (or x10031 x1472)
+:assumption (or (not x31243) (not x4451))
+:assumption (or x4715 (not x8157))
+:assumption (or (not x9691) x13492)
+:assumption (or (not x10366) (not x3508) (not x6381) (not x8581) x12232 x2549)
+:assumption (or (not x21815) x27173)
+:assumption (or x6994 (not x12747))
+:assumption (or (not x28542) x8819)
+:assumption (or (not x31681) (not x194))
+:assumption (or x3733 x10699)
+:assumption (or (not x1579) (not x29669))
+:assumption (or (not x18407) x19562)
+:assumption (or (not x12672) (not x15772))
+:assumption (or x29093 (not x10113))
+:assumption (or x28476 x8897)
+:assumption (or x9316 x12228)
+:assumption (or x14072 x11472)
+:assumption (or x19677 x4098 (not x13084) x3657 x14687)
+:assumption (or x2806 x11154)
+:assumption (or (not x29551) (not x22115))
+:assumption (or x21571 x4058)
+:assumption (or x12469 x9628)
+:assumption (or (not x10086) x24761)
+:assumption (or (not x4591) (not x8422))
+:assumption (or x7721 x12936)
+:assumption (or (not x6315) (not x30611))
+:assumption (or x23580 (not x5750))
+:assumption (or (not x14435) (not x10377))
+:assumption (or (not x709) (not x25039))
+:assumption (or x28422 x21053)
+:assumption (or x792 (not x28969))
+:assumption (or x24034 x8277)
+:assumption (or (not x4500) (not x18594))
+:assumption (or (not x19067) (not x29606))
+:assumption (or x1329 x24825)
+:assumption (or (not x8979) x9488)
+:assumption (or (not x23244) x6594 x8921)
+:assumption (or x23046 x12420)
+:assumption (or x26161 (not x25059))
+:assumption (or x20576 x21265)
+:assumption (or x152 (not x13375))
+:assumption (or (not x23355) (not x29772))
+:assumption (or (not x10614) (not x22770) (not x21520) (not x20662) (not x6993))
+:assumption (or x6723 (not x27417))
+:assumption (or x11955 (not x11929))
+:assumption (or x8035 (not x24263))
+:assumption (or (not x8390) (not x25621))
+:assumption (or (not x20018) x13518)
+:assumption (or x11539 x23732)
+:assumption (or x8128 (not x9818))
+:assumption (or (not x18859) x29083 (not x16909))
+:assumption (or x12237 x22154 x30113)
+:assumption (or x16641 x1623)
+:assumption (or (not x30856) (not x31276))
+:assumption (or x5311 x24274 x28733 (not x15501) (not x14894))
+:assumption (or (not x5850) x13291)
+:assumption (or (not x14795) x28559)
+:assumption (or (not x4712) x9213)
+:assumption (or (not x1401) (not x22369))
+:assumption (or (not x6969) (not x8430))
+:assumption (or (not x19485) (not x3972))
+:assumption (or x24711 (not x27333))
+:assumption (or (not x3341) (not x25684))
+:assumption (or x12438 x10064)
+:assumption (or x19510 x14807)
+:assumption (or x31038 x28973)
+:assumption (or x1892 x26539)
+:assumption (or (not x27532) (not x10354))
+:assumption (or x5528 (not x10148))
+:assumption (or (not x16984) x24057)
+:assumption (or (not x12401) (not x31018))
+:assumption (or (not x939) x28825)
+:assumption (or (not x2943) (not x21546) (not x11167) x20950)
+:assumption (or x22395 x15677)
+:assumption (or x16785 x30877)
+:assumption (or x11536 (not x30973))
+:assumption (or (not x20874) x16705)
+:assumption (or x15862 (not x6796))
+:assumption (or x9394 (not x23673) x13576)
+:assumption (or x13559 (not x18566))
+:assumption (or x25045 x29535)
+:assumption (or (not x21291) (not x5975))
+:assumption (or x27493 (not x13972))
+:assumption (or x2692 (not x5205) x28446 x14154)
+:assumption (or (not x17704) x16784)
+:assumption (or (not x30589) x18214)
+:assumption (or (not x28708) (not x11101))
+:assumption (or x19850 x31829)
+:assumption (or (not x13574) x23334 x28328 x24716 x4744 x8334 (not x22587))
+:assumption (or (not x7932) (not x11237))
+:assumption (or x16716 x19782)
+:assumption (or x6656 x8602 x17517)
+:assumption (or (not x25278) x7490)
+:assumption (or x23244 x24052 x25578)
+:assumption (or (not x17523) x22170)
+:assumption (or x1341 (not x9858))
+:assumption (or x27932 (not x3433) x24303 (not x5035) x25903 (not x18844) x23272 (not x28614))
+:assumption (or x31392 x11544)
+:assumption (or (not x6663) (not x3937))
+:assumption (or x14206 (not x2304))
+:assumption (or (not x7901) x12020)
+:assumption (or x28433 x19222)
+:assumption (or (not x3487) (not x13448))
+:assumption (or (not x9394) x16419 (not x26835))
+:assumption (or x16003 (not x16706))
+:assumption (or (not x7401) x13956 (not x11110))
+:assumption (or x30969 (not x19204))
+:assumption (or (not x26897) x18580)
+:assumption (or x30559 (not x17145))
+:assumption (or (not x5535) x29032)
+:assumption (or (not x27475) x9930)
+:assumption (or (not x8257) (not x31815))
+:assumption (or (not x16839) (not x2438) (not x12190) (not x20231) x22531)
+:assumption (or x10859 (not x18435))
+:assumption (or x19046 (not x7310))
+:assumption (or x27145 x19761 (not x1393))
+:assumption (or x16510 x7040)
+:assumption (or (not x24269) x21327)
+:assumption (or x160 x14024)
+:assumption (or x11493 x424)
+:assumption (or x28242 (not x2153))
+:assumption (or (not x17490) (not x12704))
+:assumption (or (not x6582) (not x6241))
+:assumption (or x6312 (not x11819))
+:assumption (or (not x10935) x27952 x5614 x28418)
+:assumption (or x31608 x25990)
+:assumption (or x392 (not x15528))
+:assumption (or (not x2740) x22113)
+:assumption (or x22249 x22115 (not x21298) x5861)
+:assumption (or (not x30464) x30138 (not x31236))
+:assumption (or x21002 x20291)
+:assumption (or x30992 (not x15718))
+:assumption (or (not x13893) (not x8570) x7443 (not x9844) x21067 x20012)
+:assumption (or (not x14455) (not x20777))
+:assumption (or (not x19152) (not x18036))
+:assumption (or x23588 (not x1960))
+:assumption (or (not x29424) x27742 x1777 x25909)
+:assumption (or (not x8872) (not x25590) x9437 (not x28367) x27872 x11582 (not x29472) x13638)
+:assumption (or (not x17489) (not x1767))
+:assumption (or (not x21153) x8940)
+:assumption (or (not x5424) x21298)
+:assumption (or x29755 x6218)
+:assumption (or (not x25606) (not x31643))
+:assumption (or (not x1066) x28255)
+:assumption (or (not x28954) (not x15234))
+:assumption (or (not x14012) x15787)
+:assumption (or x219 (not x5237))
+:assumption (or (not x18519) x19711 x26835 x18728)
+:assumption (or x9962 (not x20449))
+:assumption (or x1669 x20868)
+:assumption (or (not x19833) x27998)
+:assumption (or x8602 (not x6212) x30081)
+:assumption (or x24756 x23181 x20087 x6423)
+:assumption (or (not x11765) x24417)
+:assumption (or x27983 x21504)
+:assumption (or (not x24400) (not x26399))
+:assumption (or (not x12187) (not x25038))
+:assumption (or x4809 (not x12285))
+:assumption (or x27811 x29503)
+:assumption (or x28329 x10069)
+:assumption (or (not x29772) x7246)
+:assumption (or (not x25487) (not x25512))
+:assumption (or (not x19248) (not x26302) x17779)
+:assumption (or (not x6632) x1920)
+:assumption (or x3763 x10544)
+:assumption (or (not x22752) (not x778))
+:assumption (or (not x5121) x28242)
+:assumption (or x12242 (not x26794))
+:assumption (or x25180 (not x22359))
+:assumption (or (not x24409) x1302)
+:assumption (or x14397 x6951 (not x16185) x13576)
+:assumption (or (not x17491) x9874)
+:assumption (or x5293 x27401)
+:assumption (or (not x21210) (not x22199))
+:assumption (or x6509 x28541)
+:assumption (or x9319 x7123)
+:assumption (or (not x20449) x11005)
+:assumption (or x17959 x8602)
+:assumption (or x20038 x23279)
+:assumption (or x1393 x29069 x30198 x30010 (not x12936) x15773 (not x26466) (not x5277))
+:assumption (or (not x3994) x16242)
+:assumption (or (not x8602) (not x18373))
+:assumption (or x21955 x29821 (not x20980))
+:assumption (or (not x21918) (not x4519))
+:assumption (or (not x13476) x28328)
+:assumption (or (not x27557) (not x19679) x28314)
+:assumption (or (not x18688) (not x30192))
+:assumption (or (not x26250) x9154)
+:assumption (or (not x8002) (not x19620))
+:assumption (or x15864 x31292)
+:assumption (or (not x8801) x4989 (not x21298))
+:assumption (or x26769 x22090)
+:assumption (or (not x21878) x17524)
+:assumption (or (not x18188) x5369)
+:assumption (or (not x28541) (not x571))
+:assumption (or x15861 (not x22353) x12083)
+:assumption (or (not x16028) x14735)
+:assumption (or x8002 (not x4517) x31841)
+:assumption (or (not x27349) x7798)
+:assumption (or x6661 (not x4067))
+:assumption (or x458 (not x23909))
+:assumption (or x5568 x29104)
+:assumption (or x652 x12364)
+:assumption (or x29422 x18771)
+:assumption (or (not x17302) (not x15452))
+:assumption (or (not x27555) x19219)
+:assumption (or x11028 x10844 (not x4990) x21582 (not x3213) x16731 (not x10947) x5832 x21986)
+:assumption (or (not x12739) x5645)
+:assumption (or x20015 x4790)
+:assumption (or x20628 (not x12537))
+:assumption (or (not x31392) x3604 (not x11544))
+:assumption (or x5831 x281)
+:assumption (or x6543 x2498)
+:assumption (or (not x17796) (not x29318))
+:assumption (or (not x1897) (not x16648) (not x13618) (not x20175))
+:assumption (or x4375 (not x24609) x2437 (not x14102) x5599 (not x3221))
+:assumption (or x8574 x30841 (not x25350))
+:assumption (or (not x21616) (not x27535))
+:assumption (or (not x26641) x25728)
+:assumption (or x20684 x12787)
+:assumption (or x352 (not x23642))
+:assumption (or (not x10822) (not x389))
+:assumption (or x19636 (not x18659))
+:assumption (or x28885 (not x20501))
+:assumption (or x15257 (not x13872))
+:assumption (or (not x8523) x20747)
+:assumption (or (not x7012) x12794)
+:assumption (or (not x12825) (not x14053))
+:assumption (or (not x21512) x15037)
+:assumption (or (not x13379) (not x12488))
+:assumption (or (not x25659) x5279 (not x8221))
+:assumption (or x19316 (not x2714))
+:assumption (or x15405 (not x25699) (not x7964))
+:assumption (or x12876 x12201)
+:assumption (or (not x2552) (not x12375))
+:assumption (or x5517 x1706)
+:assumption (or (not x22017) x16438)
+:assumption (or (not x20659) (not x168))
+:assumption (or (not x30643) (not x15567))
+:assumption (or (not x21522) x31734 (not x9067) (not x30633))
+:assumption (or x19064 x21450)
+:assumption (or x7192 (not x15906))
+:assumption (or x15367 (not x16943))
+:assumption (or (not x6055) (not x21246) (not x518))
+:assumption (or (not x20177) (not x19693))
+:assumption (or (not x169) x28380)
+:assumption (or x20355 (not x28910))
+:assumption (or (not x1393) (not x19169))
+:assumption (or x14452 x12041)
+:assumption (or (not x18094) x15377)
+:assumption (or x8229 x12022 (not x7158))
+:assumption (or (not x30764) x10169)
+:assumption (or x23099 (not x19692))
+:assumption (or x20955 x6690)
+:assumption (or (not x4890) (not x3179))
+:assumption (or (not x6771) x26614 x24155 x30891)
+:assumption (or x31724 x5712)
+:assumption (or (not x31616) x28705)
+:assumption (or x8002 x13629 x3241)
+:assumption (or (not x13452) (not x14839))
+:assumption (or x29314 (not x6467))
+:assumption (or (not x15332) (not x22852) (not x12737))
+:assumption (or (not x31134) (not x11015) (not x26638) (not x29606))
+:assumption (or (not x12292) x14502 x10162 x19945 (not x7190))
+:assumption (or x13012 x23620)
+:assumption (or (not x2858) x21951 (not x25878))
+:assumption (or (not x9256) (not x315))
+:assumption (or x30162 (not x19222) (not x28433) (not x26891))
+:assumption (or (not x30393) x24342 x7580)
+:assumption (or (not x7831) (not x21669))
+:assumption (or x16455 x30730)
+:assumption (or x10003 (not x9008) (not x22286))
+:assumption (or x5531 (not x10437))
+:assumption (or x21618 (not x16297))
+:assumption (or (not x21026) (not x18536) x14112)
+:assumption (or x9670 (not x8464))
+:assumption (or (not x19241) x1547 (not x5847) (not x9531))
+:assumption (or (not x17288) x10909 x27537 x1394)
+:assumption (or (not x19021) (not x17740))
+:assumption (or (not x24900) x10671)
+:assumption (or x12598 (not x3683))
+:assumption (or x20118 x14919 x3706 (not x24079))
+:assumption (or (not x3615) (not x14298))
+:assumption (or (not x23975) x23206 (not x7282) x3894)
+:assumption (or x15187 (not x10987) (not x13529))
+:assumption (or (not x12963) x24470 x3302 x13037 x13496)
+:assumption (or (not x13576) (not x23244) x12220)
+:assumption (or (not x22930) (not x27009))
+:assumption (or (not x18094) x22291 (not x8002))
+:assumption (or (not x23093) (not x28450))
+:assumption (or x13314 x21955)
+:assumption (or (not x6453) x20739)
+:assumption (or (not x29466) x17771)
+:assumption (or (not x13159) x1679)
+:assumption (or x29442 x7988)
+:assumption (or x14206 (not x28333) (not x9147))
+:assumption (or (not x9093) (not x3056))
+:assumption (or (not x1437) x331)
+:assumption (or x19761 (not x29089))
+:assumption (or x22893 x21168)
+:assumption (or (not x4394) (not x31875))
+:assumption (or x322 x27036 (not x2894))
+:assumption (or x5028 (not x10638) x25659 (not x9779) x20550)
+:assumption (or (not x10587) x22646)
+:assumption (or x2983 (not x30195))
+:assumption (or x12904 (not x20886))
+:assumption (or (not x13576) (not x20322))
+:assumption (or (not x6316) (not x8810))
+:assumption (or x8227 (not x27848))
+:assumption (or (not x15153) x7936)
+:assumption (or x9008 (not x8383))
+:assumption (or (not x28381) (not x21454))
+:assumption (or x25710 (not x19972))
+:assumption (or (not x8736) (not x20723))
+:assumption (or (not x3262) x30438)
+:assumption (or x17277 x11355 x30621)
+:assumption (or x23979 x30465)
+:assumption (or (not x28973) x14552 x16866)
+:assumption (or (not x14569) x3947)
+:assumption (or x16025 x9779 x25814)
+:assumption (or x8002 x31305)
+:assumption (or (not x28608) x964)
+:assumption (or x14784 (not x21424))
+:assumption (or (not x24985) (not x18003) x1860)
+:assumption (or x11433 x12670)
+:assumption (or x24560 (not x9294))
+:assumption (or x21080 (not x4370))
+:assumption (or x26548 (not x8591))
+:assumption (or x171 x22195)
+:assumption (or x9255 x27379)
+:assumption (or (not x7124) (not x591))
+:assumption (or x4104 (not x9589))
+:assumption (or x2043 x29949 x31323 (not x23475) (not x13224) (not x10877))
+:assumption (or x13438 (not x3872) (not x10949) x27071 (not x26687) (not x28041) x17447)
+:assumption (or (not x6149) x6542)
+:assumption (or (not x13827) x12242)
+:assumption (or x1654 (not x26781))
+:assumption (or (not x7824) (not x31691))
+:assumption (or x9588 (not x30685))
+:assumption (or (not x9339) x1023)
+:assumption (or x5354 x17382)
+:assumption (or (not x2761) (not x5832))
+:assumption (or (not x7987) (not x946) x1480 (not x28123) (not x2476) x12363 x15214 (not x11285) x4299)
+:assumption (or (not x8177) (not x8721) x16815 (not x7588) x1118 (not x10865) (not x14876) (not x18566) (not x25090))
+:assumption (or x7616 (not x502))
+:assumption (or x11268 x22778)
+:assumption (or x7776 (not x26179))
+:assumption (or (not x16809) (not x24196))
+:assumption (or (not x23595) x4955)
+:assumption (or (not x26500) x6978)
+:assumption (or (not x25141) (not x29659))
+:assumption (or x27946 (not x8558))
+:assumption (or x19202 (not x11728))
+:assumption (or (not x21439) x25901)
+:assumption (or (not x31548) (not x27495))
+:assumption (or (not x10531) x26106)
+:assumption (or (not x21526) x23225)
+:assumption (or (not x29477) (not x30814))
+:assumption (or (not x13489) (not x10953))
+:assumption (or (not x27986) x27596 x23424)
+:assumption (or (not x29630) (not x23548))
+:assumption (or (not x8530) (not x13956))
+:assumption (or x21222 (not x14416))
+:assumption (or (not x4972) x1430)
+:assumption (or (not x28873) x1310 (not x25659))
+:assumption (or x11413 x11729)
+:assumption (or x251 (not x17875))
+:assumption (or x13971 (not x3271))
+:assumption (or x22401 (not x19722))
+:assumption (or x3494 x25659 x28757 x26675)
+:assumption (or (not x15865) (not x16113))
+:assumption (or x13406 (not x17251))
+:assumption (or x8012 (not x23957))
+:assumption (or x17001 (not x18207) x8712)
+:assumption (or (not x30209) x25006)
+:assumption (or (not x1038) (not x23949) (not x12795) (not x18360) (not x12373))
+:assumption (or (not x10136) (not x8961) (not x27123) (not x5886))
+:assumption (or (not x18933) x3680)
+:assumption (or (not x14839) x13976)
+:assumption (or (not x17075) (not x12507))
+:assumption (or (not x20576) x23642)
+:assumption (or (not x28063) (not x10007))
+:assumption (or x14297 (not x5452))
+:assumption (or x9685 (not x23985))
+:assumption (or (not x5773) x21703)
+:assumption (or (not x22776) (not x16025))
+:assumption (or x20000 (not x28553))
+:assumption (or x20109 (not x6318) (not x31896) x18213 (not x18660))
+:assumption (or x21815 (not x2241))
+:assumption (or x5543 x6969)
+:assumption (or x15310 (not x5394))
+:assumption (or (not x7741) (not x2133) x20173 (not x7835) x1774 (not x27228) (not x16335))
+:assumption (or (not x30981) x29924)
+:assumption (or x10156 (not x25249))
+:assumption (or x4555 x2694 x7837)
+:assumption (or (not x5955) (not x27794))
+:assumption (or (not x12208) (not x11195))
+:assumption (or (not x21285) (not x2707))
+:assumption (or x10461 (not x15937))
+:assumption (or (not x26391) (not x5172))
+:assumption (or x29910 x24756 x29312 x5162)
+:assumption (or x30795 (not x591) (not x3519))
+:assumption (or x23632 x16474 x29772 x26511)
+:assumption (or (not x28294) (not x838) x23244 x8002)
+:assumption (or x13826 x7731)
+:assumption (or x19638 x5067)
+:assumption (or x27737 (not x6969))
+:assumption (or (not x19279) x10750)
+:assumption (or (not x19161) (not x20982))
+:assumption (or (not x5034) (not x15767))
+:assumption (or x5876 x7567)
+:assumption (or x16745 (not x5218) x2607 x10512 x12241 x31745 (not x14401) (not x26842) x18887)
+:assumption (or (not x26207) x22502)
+:assumption (or (not x22706) x6750)
+:assumption (or x29029 x1859)
+:assumption (or x30921 x9020)
+:assumption (or x4058 x6103)
+:assumption (or (not x3099) x14839)
+:assumption (or (not x25575) x19864 (not x5830) (not x22693))
+:assumption (or x28160 x1487)
+:assumption (or (not x22562) (not x11420))
+:assumption (or x14839 (not x9496))
+:assumption (or x22810 (not x16050))
+:assumption (or x29891 x14098)
+:assumption (or (not x16258) x28837)
+:assumption (or (not x21652) x21845)
+:assumption (or (not x13057) (not x23250))
+:assumption (or (not x3844) (not x3496))
+:assumption (or x22693 (not x26405))
+:assumption (or x30393 x5768)
+:assumption (or x21791 x24453)
+:assumption (or (not x15630) x13410)
+:assumption (or x20575 (not x200) x7011 x21826 x17521 x22606 x11540 x30124)
+:assumption (or (not x21681) x27875)
+:assumption (or x16374 (not x17775))
+:assumption (or x26550 x23244 (not x24722))
+:assumption (or (not x9578) x19193)
+:assumption (or (not x27740) (not x22784))
+:assumption (or x12672 (not x30706))
+:assumption (or x14437 x11731)
+:assumption (or (not x31075) x29534)
+:assumption (or (not x9431) (not x30488))
+:assumption (or x14034 x13605)
+:assumption (or x30166 x12373)
+:assumption (or (not x28787) (not x31205))
+:assumption (or x13092 (not x10074) (not x20696) x23411)
+:assumption (or x12545 (not x9025) (not x18694))
+:assumption (or x16083 x15795)
+:assumption (or (not x23244) x8144)
+:assumption (or x13710 x21298)
+:assumption (or (not x708) (not x22195) (not x171) (not x9052))
+:assumption (or (not x22389) (not x510))
+:assumption (or (not x15511) x7594)
+:assumption (or (not x31744) x976)
+:assumption (or (not x9008) x18132)
+:assumption (or x9972 x1048)
+:assumption (or x16652 x13545)
+:assumption (or x25823 x9435)
+:assumption (or (not x5899) (not x23556) x27220 (not x9817) (not x16937) x26215 x28680 x21382)
+:assumption (or x1056 (not x23146))
+:assumption (or (not x26327) (not x19992))
+:assumption (or x11033 (not x8148))
+:assumption (or x3990 (not x63))
+:assumption (or x18382 (not x7835))
+:assumption (or x26912 (not x12854))
+:assumption (or (not x22957) (not x6902))
+:assumption (or (not x8379) (not x18308))
+:assumption (or (not x15621) x26575 (not x4868) x5583)
+:assumption (or (not x25924) (not x5664))
+:assumption (or (not x18369) (not x13956) (not x9930) x10765)
+:assumption (or (not x17521) x2863)
+:assumption (or x21512 (not x12907))
+:assumption (or x29520 x29276)
+:assumption (or (not x20550) (not x29333) x25659 x1582 x14050)
+:assumption (or x5556 (not x17149))
+:assumption (or (not x27359) x22554)
+:assumption (or x15584 (not x22801))
+:assumption (or x6969 x7467)
+:assumption (or x7593 (not x527))
+:assumption (or (not x11892) (not x12281))
+:assumption (or x20448 (not x17496))
+:assumption (or (not x21217) x5230)
+:assumption (or x16223 x9800)
+:assumption (or (not x22835) (not x30304))
+:assumption (or x26664 x5339)
+:assumption (or (not x8002) x28109)
+:assumption (or x24806 x12365 (not x21442))
+:assumption (or x24443 x26971)
+:assumption (or (not x27123) x24997 (not x31829) x918)
+:assumption (or x23904 (not x16011))
+:assumption (or (not x7821) (not x9972))
+:assumption (or x8294 x18266)
+:assumption (or x369 (not x31586))
+:assumption (or x27425 (not x25190))
+:assumption (or (not x26007) x10494)
+:assumption (or (not x21112) x1862)
+:assumption (or x13689 (not x12058))
+:assumption (or x10542 x23539)
+:assumption (or (not x27339) x11776)
+:assumption (or x8777 x25035)
+:assumption (or x25440 x13483)
+:assumption (or x20996 (not x169))
+:assumption (or (not x17146) x9814)
+:assumption (or x25158 (not x15160))
+:assumption (or x31466 (not x3864) x29003 (not x7010))
+:assumption (or (not x24722) x12674)
+:assumption (or (not x2369) x8085)
+:assumption (or (not x6108) (not x14630) (not x17110) x26715 (not x458) (not x31916) (not x30446) (not x9403))
+:assumption (or x15197 (not x1020))
+:assumption (or x30625 x25659)
+:assumption (or (not x4094) (not x11241))
+:assumption (or x6149 (not x8215) x22565)
+:assumption (or x29024 (not x1077))
+:assumption (or x20225 (not x18477))
+:assumption (or (not x10226) x3461)
+:assumption (or (not x7411) x9590)
+:assumption (or x14435 x2852)
+:assumption (or (not x15500) x11594)
+:assumption (or (not x14455) (not x26100))
+:assumption (or x14800 (not x15285))
+:assumption (or x29157 x23938 x23279)
+:assumption (or x29376 (not x11898))
+:assumption (or (not x13047) x7605)
+:assumption (or (not x26159) x30120)
+:assumption (or (not x31055) x1183)
+:assumption (or (not x31829) (not x11865))
+:assumption (or x8349 x9008)
+:assumption (or x3256 (not x27271))
+:assumption (or (not x15825) x25850)
+:assumption (or (not x14048) x19433)
+:assumption (or (not x10482) (not x28155) (not x11310) (not x18591))
+:assumption (or (not x26282) x29299)
+:assumption (or x23621 (not x3731) (not x23958))
+:assumption (or x28825 (not x29669))
+:assumption (or (not x1653) x30387)
+:assumption (or x8585 (not x21007))
+:assumption (or (not x29550) (not x3668) (not x9380) (not x11885) x14012)
+:assumption (or x28002 (not x9342))
+:assumption (or (not x25659) (not x21674))
+:assumption (or x15287 (not x1910))
+:assumption (or (not x15165) (not x13418))
+:assumption (or x1192 (not x14300))
+:assumption (or x20453 (not x28364) (not x13956) x8757)
+:assumption (or (not x8122) (not x31725))
+:assumption (or x22090 (not x5411))
+:assumption (or x23443 (not x11242))
+:assumption (or x15166 x24454)
+:assumption (or (not x29097) (not x19048))
+:assumption (or (not x7220) x25360)
+:assumption (or (not x2738) (not x427))
+:assumption (or (not x26084) (not x31508))
+:assumption (or (not x6063) (not x17121))
+:assumption (or (not x22997) (not x830) (not x4377) (not x30830))
+:assumption (or x30563 (not x10786))
+:assumption (or x20653 x17588)
+:assumption (or x19724 (not x31770))
+:assumption (or (not x26712) x21387 (not x20555) x8995 x4378 (not x3498))
+:assumption (or x16583 x27403)
+:assumption (or x19895 (not x16510))
+:assumption (or x12710 (not x6969))
+:assumption (or (not x31913) x17257)
+:assumption (or (not x1465) (not x11980))
+:assumption (or (not x11426) x13335)
+:assumption (or (not x19732) x26354)
+:assumption (or x12622 x9008)
+:assumption (or (not x27023) x9154)
+:assumption (or x26883 (not x14138) (not x24471))
+:assumption (or x28122 x16093 x23764 (not x3700) x26187)
+:assumption (or (not x16283) x5528)
+:assumption (or x12765 x30013)
+:assumption (or x26455 x5528)
+:assumption (or x22946 x395)
+:assumption (or x3389 (not x22747))
+:assumption (or x27780 (not x12969) x31694 (not x22986) x20153 (not x19092) (not x8359) (not x29685) x4058)
+:assumption (or x14124 x21907)
+:assumption (or x11091 x29761)
+:assumption (or (not x15748) (not x21177))
+:assumption (or (not x21020) x16802)
+:assumption (or (not x31599) (not x21252))
+:assumption (or (not x4059) x25902)
+:assumption (or (not x20140) x10389 (not x5436) x29447 (not x15883) x4631 (not x25411) (not x10229))
+:assumption (or x18179 x3355)
+:assumption (or (not x27119) x2933)
+:assumption (or x4378 x15968 x13956 x25818 x23244 x8002)
+:assumption (or (not x23261) (not x25964))
+:assumption (or (not x11531) (not x13393))
+:assumption (or x7362 (not x17622))
+:assumption (or x18238 x6960)
+:assumption (or x21622 (not x31319))
+:assumption (or (not x19083) (not x26386))
+:assumption (or (not x30707) (not x20043) x14091 x24865)
+:assumption (or (not x23487) x90)
+:assumption (or (not x4734) x1560)
+:assumption (or x2033 (not x16048))
+:assumption (or (not x28864) (not x13995))
+:assumption (or (not x3709) (not x10531))
+:assumption (or (not x11368) x6448)
+:assumption (or (not x29623) x29355)
+:assumption (or x10955 (not x10966))
+:assumption (or (not x31829) x25990)
+:assumption (or (not x4748) x28721 (not x24567) x13361)
+:assumption (or (not x22064) x664)
+:assumption (or x17854 x10988)
+:assumption (or x20107 (not x1005))
+:assumption (or (not x4940) x24846)
+:assumption (or (not x22950) x17225 x18450)
+:assumption (or (not x11268) (not x25405) x5697 (not x29534))
+:assumption (or x17963 x2100)
+:assumption (or (not x9204) (not x14990))
+:assumption (or (not x16025) (not x2306) x12913)
+:assumption (or (not x5552) (not x17438) (not x21896) x21267 x1582 (not x12329) x28269 x5048 x19140)
+:assumption (or x3957 (not x20215))
+:assumption (or x12626 x23217)
+:assumption (or x11281 (not x15854))
+:assumption (or (not x4235) x19759)
+:assumption (or x26086 x25391 x18711 (not x24130) (not x28112))
+:assumption (or x18419 (not x15426))
+:assumption (or x13956 x17275)
+:assumption (or x1125 x4594)
+:assumption (or (not x13376) (not x21745))
+:assumption (or (not x29770) (not x17359))
+:assumption (or x31749 x27335 x8054 x16637)
+:assumption (or (not x9500) x25355)
+:assumption (or (not x18445) x8312)
+:assumption (or (not x19589) x12395)
+:assumption (or x25366 (not x23997))
+:assumption (or x3110 (not x19505))
+:assumption (or (not x26575) x4868)
+:assumption (or (not x29606) x23244 (not x27402))
+:assumption (or x10133 x2471)
+:assumption (or (not x3581) (not x26760))
+:assumption (or x27839 (not x8563))
+:assumption (or (not x23613) (not x6594))
+:assumption (or (not x415) (not x12696))
+:assumption (or x7880 (not x25366))
+:assumption (or x3840 x26745)
+:assumption (or x20292 (not x5857))
+:assumption (or (not x28623) x13232)
+:assumption (or x17514 (not x9747))
+:assumption (or x28227 x14602)
+:assumption (or x23353 (not x10146))
+:assumption (or x4907 (not x2203) x5755 (not x16187))
+:assumption (or x19817 (not x13182))
+:assumption (or x19298 (not x3284))
+:assumption (or x10502 x21109)
+:assumption (or (not x30151) x24229)
+:assumption (or (not x6783) x17022)
+:assumption (or x2538 x24642)
+:assumption (or (not x22484) (not x12861))
+:assumption (or (not x14372) (not x16784))
+:assumption (or (not x28998) (not x25606))
+:assumption (or (not x1971) x16654)
+:assumption (or x20214 x31134 (not x8341) (not x6011) (not x7205) x17989 x20947 x18748)
+:assumption (or (not x29971) (not x14276))
+:assumption (or x16504 x31213)
+:assumption (or x7537 (not x26541) x4061)
+:assumption (or x11005 (not x27605))
+:assumption (or (not x6303) x20937)
+:assumption (or (not x18482) x30585)
+:assumption (or x2269 (not x25704))
+:assumption (or x15505 (not x12612))
+:assumption (or x6918 (not x19989))
+:assumption (or x2443 x7846)
+:assumption (or x31729 x12795)
+:assumption (or x3959 (not x30610))
+:assumption (or x20949 (not x13598))
+:assumption (or x6969 (not x13601))
+:assumption (or x967 x18085)
+:assumption (or (not x22523) (not x23244) (not x10534))
+:assumption (or x13310 x23743)
+:assumption (or x7491 x15892)
+:assumption (or (not x5968) x16604)
+:assumption (or (not x10981) (not x14892))
+:assumption (or x23173 x15917 x5664 x8285 x27102)
+:assumption (or x15659 (not x5989) x24952 (not x5341))
+:assumption (or (not x23830) x26172 (not x3671) x31758)
+:assumption (or x28670 x569)
+:assumption (or x29442 (not x3782) (not x22856) (not x17671))
+:assumption (or (not x31669) x8076)
+:assumption (or x18168 x22469)
+:assumption (or x20929 (not x9533))
+:assumption (or x28845 x4834)
+:assumption (or (not x11337) (not x7882))
+:assumption (or (not x13813) (not x13224))
+:assumption (or x6911 (not x13039) x9295 (not x15358))
+:assumption (or x25855 x16162 x9531 x7384 (not x17681))
+:assumption (or (not x9563) x10201 (not x13433) x21978 x19568)
+:assumption (or (not x18100) x23916)
+:assumption (or x19352 x19100)
+:assumption (or x6517 (not x22821))
+:assumption (or x30843 (not x16057))
+:assumption (or x14687 (not x7286) (not x14522) x26073 x4652)
+:assumption (or (not x23157) (not x13420))
+:assumption (or (not x5345) x13479)
+:assumption (or x21466 (not x8095))
+:assumption (or x17728 (not x5368))
+:assumption (or x22678 (not x635))
+:assumption (or (not x7981) x2894)
+:assumption (or x28581 x10571)
+:assumption (or (not x14206) (not x14929))
+:assumption (or x15697 x14820)
+:assumption (or (not x8529) x8226)
+:assumption (or x25076 x5360)
+:assumption (or (not x28242) x2110)
+:assumption (or (not x21651) (not x24338))
+:assumption (or x26725 (not x9583))
+:assumption (or (not x20087) x9915)
+:assumption (or x7570 (not x8165))
+:assumption (or x1393 (not x7273) (not x9483))
+:assumption (or (not x486) x18491)
+:assumption (or x14114 x15229 (not x8657) x13850 x19581 (not x11107) x8862 (not x6133))
+:assumption (or (not x20650) (not x8119))
+:assumption (or (not x30459) (not x20550) (not x18500))
+:assumption (or (not x1778) x15735)
+:assumption (or x21633 (not x26960))
+:assumption (or (not x23882) x22287)
+:assumption (or x16525 (not x10578))
+:assumption (or (not x14319) x20337)
+:assumption (or (not x17121) x13956)
+:assumption (or x5267 x13009 x18925 (not x14290) (not x5528) x15407)
+:assumption (or (not x1790) (not x11515) (not x21232))
+:assumption (or (not x8936) (not x10354))
+:assumption (or x10739 x31222)
+:assumption (or x4308 (not x15353))
+:assumption (or x10803 (not x6989))
+:assumption (or (not x22398) (not x18079))
+:assumption (or (not x23129) (not x13622))
+:assumption (or (not x25266) x18799)
+:assumption (or (not x25351) (not x8002))
+:assumption (or x15538 (not x974))
+:assumption (or x11326 x1192)
+:assumption (or x27673 (not x8447))
+:assumption (or (not x16910) (not x30117) (not x27040))
+:assumption (or x3544 x26713 (not x2500))
+:assumption (or x12333 x23002)
+:assumption (or x5394 (not x3601))
+:assumption (or (not x2249) (not x28063))
+:assumption (or (not x9008) (not x932))
+:assumption (or (not x15754) (not x14229))
+:assumption (or (not x28396) (not x15607) (not x3798) x2046 (not x8097) (not x23800) (not x24044))
+:assumption (or (not x11703) x26126)
+:assumption (or (not x13717) x28354)
+:assumption (or (not x20040) (not x20550))
+:assumption (or x10638 (not x25659))
+:assumption (or (not x28955) x2512 x23139 (not x8455) (not x23244) x12954)
+:assumption (or (not x4736) (not x3101))
+:assumption (or x15639 (not x24174))
+:assumption (or (not x218) (not x17075) x7391 x12424)
+:assumption (or x22274 (not x2317))
+:assumption (or (not x9955) (not x11239))
+:assumption (or x1098 (not x17302))
+:assumption (or (not x4665) x19596)
+:assumption (or (not x8002) (not x23976))
+:assumption (or x31691 x19168)
+:assumption (or (not x30872) x23846)
+:assumption (or x24580 (not x10821))
+:assumption (or (not x16025) x359)
+:assumption (or x1597 x19105)
+:assumption (or (not x12621) x19798)
+:assumption (or x22098 (not x30091))
+:assumption (or x25763 x27351)
+:assumption (or (not x19677) x16651)
+:assumption (or x15099 (not x18604))
+:assumption (or (not x10708) (not x31134) x13414)
+:assumption (or x25659 (not x13052))
+:assumption (or (not x1480) (not x4299))
+:assumption (or x18664 (not x26787))
+:assumption (or x14963 x1247 x11170 (not x10994) x10576)
+:assumption (or x25315 x18443)
+:assumption (or x21492 (not x30805) x14055)
+:assumption (or x22487 x25533)
+:assumption (or x19409 (not x3779))
+:assumption (or x13776 (not x16173))
+:assumption (or x26098 (not x29458))
+:assumption (or x27739 (not x24166))
+:assumption (or (not x12526) x21268)
+:assumption (or (not x30992) x4060 x8586)
+:assumption (or (not x30791) x8002 (not x27388))
+:assumption (or x17666 (not x4929))
+:assumption (or x9816 x1393 (not x26538))
+:assumption (or (not x17060) (not x16510))
+:assumption (or (not x21298) (not x28149) (not x5488))
+:assumption (or x7357 (not x25274) x26018)
+:assumption (or (not x7189) x29442)
+:assumption (or (not x3769) x8002)
+:assumption (or x2169 x14781)
+:assumption (or (not x18830) x26647)
+:assumption (or x3922 x5615)
+:assumption (or (not x27965) x23949)
+:assumption (or x9531 x7621)
+:assumption (or x26729 x13647)
+:assumption (or (not x3223) (not x17480))
+:assumption (or x22629 x23244)
+:assumption (or x21274 x19155 (not x3103) (not x26946) x11014 (not x15571) x17594 x29435)
+:assumption (or x19470 x17001)
+:assumption (or (not x865) x29361)
+:assumption (or (not x9961) x4232)
+:assumption (or x6351 x25106)
+:assumption (or (not x20474) x5431)
+:assumption (or x27767 (not x2733))
+:assumption (or x3918 (not x27617))
+:assumption (or x13691 (not x24442))
+:assumption (or (not x9637) x20550)
+:assumption (or (not x21681) (not x26299))
+:assumption (or x20230 (not x31182))
+:assumption (or (not x6192) (not x3038) x10159 x21593)
+:assumption (or x28579 (not x17468))
+:assumption (or (not x15537) (not x1719) x26874 x1821)
+:assumption (or (not x28621) (not x14206))
+:assumption (or (not x29257) (not x23723))
+:assumption (or (not x3785) x29424)
+:assumption (or x19013 (not x9803))
+:assumption (or x29737 (not x29182))
+:assumption (or (not x1052) (not x29448))
+:assumption (or (not x19305) (not x17960))
+:assumption (or x17705 (not x16158) x7857)
+:assumption (or x19504 (not x5722) (not x3797) (not x5348) x24978 (not x3157) x31311 x2345)
+:assumption (or (not x16380) (not x12506))
+:assumption (or (not x17469) (not x30138) x6692)
+:assumption (or (not x18603) (not x158) (not x5810) (not x22366))
+:assumption (or x31214 x18042)
+:assumption (or x8557 x10)
+:assumption (or x15915 (not x19348))
+:assumption (or x13309 x4492)
+:assumption (or (not x1537) (not x22393))
+:assumption (or (not x16741) x46 x29190)
+:assumption (or x9821 x22533)
+:assumption (or x20814 x5218)
+:assumption (or x19349 x20872)
+:assumption (or (not x18101) (not x8650))
+:assumption (or (not x18510) x25659)
+:assumption (or x4091 (not x2459))
+:assumption (or (not x13956) (not x10060) x11888 x18623)
+:assumption (or (not x2953) x16742)
+:assumption (or x11912 (not x8002))
+:assumption (or x16149 (not x22795))
+:assumption (or x1202 x16292)
+:assumption (or (not x31040) x6602)
+:assumption (or x3249 x1196)
+:assumption (or x24318 (not x3738))
+:assumption (or x18185 x6763 (not x12676) x31294 x26374)
+:assumption (or (not x2404) x30202)
+:assumption (or x13956 (not x499) (not x15639))
+:assumption (or x9008 x2668)
+:assumption (or (not x7304) x31361)
+:assumption (or x27160 (not x17676) (not x31850) (not x24678))
+:assumption (or x31565 (not x4976))
+:assumption (or (not x3018) (not x29649))
+:assumption (or (not x10583) x31909 (not x21584) x11452 x1328 (not x7049) x17942 (not x12130))
+:assumption (or x7643 x25490 x8479 (not x27679))
+:assumption (or (not x24167) (not x29700))
+:assumption (or (not x19890) (not x9223))
+:assumption (or (not x2846) (not x9008))
+:assumption (or (not x10982) (not x12695))
+:assumption (or x19274 (not x31128))
+:assumption (or x22499 x5391)
+:assumption (or x28380 x964)
+:assumption (or x17416 x26185)
+:assumption (or (not x17060) x8853)
+:assumption (or x3580 x873)
+:assumption (or x14206 x9092)
+:assumption (or (not x1270) (not x30124))
+:assumption (or x5323 x22002)
+:assumption (or (not x7542) x21137 x13487)
+:assumption (or (not x30785) (not x2493) x30928 (not x19645) (not x30234) (not x23907) x7466 x16578 x29496)
+:assumption (or (not x25643) (not x20808))
+:assumption (or (not x15102) (not x5528) (not x9008) x26578 (not x15136))
+:assumption (or (not x24981) (not x16426))
+:assumption (or x6775 (not x5890))
+:assumption (or (not x20339) x6106)
+:assumption (or (not x28358) x11288)
+:assumption (or x18645 x21276)
+:assumption (or (not x21723) (not x27941) (not x5528) x28023 (not x9008))
+:assumption (or (not x15112) x11336)
+:assumption (or x18316 x21375)
+:assumption (or (not x8191) x19660 (not x23153) (not x7717) (not x26401) x31070 (not x22495) (not x6323) (not x13527))
+:assumption (or (not x16025) x20790)
+:assumption (or x25224 x30883)
+:assumption (or (not x7730) x20430)
+:assumption (or x13080 (not x22844) x7662)
+:assumption (or x24344 x8823)
+:assumption (or x15879 x27233 (not x21633) (not x3178))
+:assumption (or x8716 x21788)
+:assumption (or (not x5807) x29130 x16802 x24722)
+:assumption (or (not x22690) x23244)
+:assumption (or (not x5709) (not x31530))
+:assumption (or (not x8542) (not x17756) x29890 x27181 (not x18168))
+:assumption (or x30063 x31482)
+:assumption (or (not x24656) (not x4136) (not x3089))
+:assumption (or x296 (not x30550))
+:assumption (or x13576 x14785)
+:assumption (or x31269 x14810)
+:assumption (or (not x27554) (not x13865))
+:assumption (or x21458 (not x284))
+:assumption (or x12177 (not x20549))
+:assumption (or x29312 (not x14137) (not x6248))
+:assumption (or x27054 (not x14840) x5528)
+:assumption (or x16117 x20585 x2176)
+:assumption (or (not x21485) (not x25685))
+:assumption (or x2732 (not x15095))
+:assumption (or x28328 (not x30600) (not x2578))
+:assumption (or x14599 x27174)
+:assumption (or x26790 (not x31168))
+:assumption (or x10583 (not x11452))
+:assumption (or x10453 (not x14591))
+:assumption (or (not x4849) (not x13034))
+:assumption (or x14669 x22472)
+:assumption (or (not x10786) x10826)
+:assumption (or x8002 x13956 x6083 (not x5696) x23244 x20723)
+:assumption (or (not x26567) (not x30175) (not x10670) x31782)
+:assumption (or x10171 (not x30256))
+:assumption (or x11584 x1464)
+:assumption (or x15666 x3351 x9008)
+:assumption (or (not x12982) x27461)
+:assumption (or (not x23675) x6062)
+:assumption (or x15868 (not x12459))
+:assumption (or (not x13081) x14029)
+:assumption (or (not x26676) x5528 x3516)
+:assumption (or x29606 (not x18609) x31134 x26148)
+:assumption (or (not x31656) (not x20821))
+:assumption (or x30451 (not x18920))
+:assumption (or x25459 (not x4602))
+:assumption (or x31303 (not x30444))
+:assumption (or (not x24702) x447)
+:assumption (or (not x1491) (not x3815))
+:assumption (or x16374 x6225 x7095 x23500 (not x3717) x10645)
+:assumption (or x15369 x14121)
+:assumption (or (not x24515) x2340)
+:assumption (or x21345 x28212 (not x13477))
+:assumption (or x25894 x5528)
+:assumption (or (not x13956) x11254)
+:assumption (or (not x12123) (not x21928))
+:assumption (or x10573 (not x5026))
+:assumption (or x3392 (not x17204))
+:assumption (or (not x6554) (not x5937))
+:assumption (or x6274 (not x19536))
+:assumption (or x27556 x25366 x15562)
+:assumption (or x3151 (not x19431))
+:assumption (or (not x1849) x18753)
+:assumption (or (not x6812) x28818)
+:assumption (or x29266 (not x728))
+:assumption (or x4250 (not x16290))
+:assumption (or x19058 x14455)
+:assumption (or x1223 x480)
+:assumption (or x28084 x10927)
+:assumption (or (not x18990) (not x22736))
+:assumption (or (not x3431) (not x19114))
+:assumption (or x11792 x16258 (not x6149) (not x29140))
+:assumption (or (not x7849) (not x29649) (not x31628) (not x28912) (not x14052))
+:assumption (or x8090 (not x16919))
+:assumption (or (not x31716) (not x15964))
+:assumption (or (not x11842) (not x17362))
+:assumption (or (not x24829) x7206)
+:assumption (or (not x29447) x28914)
+:assumption (or (not x13754) (not x28974))
+:assumption (or x26720 x20524 (not x23639) (not x10064) x10794)
+:assumption (or x1168 (not x17714))
+:assumption (or x16976 x1914 (not x5316))
+:assumption (or x16437 x31371)
+:assumption (or x17224 x24845)
+:assumption (or x479 x5186 (not x12789) x4187 x30229)
+:assumption (or (not x25451) x11003)
+:assumption (or x28000 x28738)
+:assumption (or (not x29128) x11790)
+:assumption (or x8532 x22025 (not x6493) x6936)
+:assumption (or (not x827) x17179)
+:assumption (or (not x23291) x30457 x31628 x27899 x21269 (not x6845) (not x10914))
+:assumption (or (not x18518) (not x1377))
+:assumption (or (not x705) (not x6754))
+:assumption (or x24756 (not x28885) x10517 x4430)
+:assumption (or (not x1128) (not x17771))
+:assumption (or (not x19072) x23586)
+:assumption (or (not x30112) (not x2575))
+:assumption (or x2682 x27872 x781)
+:assumption (or (not x1009) (not x1766))
+:assumption (or (not x31588) x27571)
+:assumption (or (not x24821) (not x16025))
+:assumption (or (not x1996) x8083)
+:assumption (or x23106 (not x25451))
+:assumption (or (not x3671) (not x15777))
+:assumption (or x17901 x27137)
+:assumption (or (not x9375) (not x17699))
+:assumption (or (not x9350) x8002)
+:assumption (or (not x5528) (not x10835))
+:assumption (or (not x6594) (not x18128))
+:assumption (or x29418 (not x26670))
+:assumption (or x14707 (not x19432))
+:assumption (or x31382 x31149 x18917 x11390 (not x10169))
+:assumption (or x12419 x8941)
+:assumption (or x29326 (not x31519))
+:assumption (or (not x17758) (not x27263))
+:assumption (or x31832 x7470)
+:assumption (or (not x26659) (not x28897))
+:assumption (or (not x4097) (not x26029))
+:assumption (or x11000 (not x7366))
+:assumption (or x8444 (not x6431))
+:assumption (or (not x6450) x9178 (not x4865))
+:assumption (or (not x30932) (not x22272))
+:assumption (or (not x20066) (not x9088))
+:assumption (or x6969 x20979 x17662 (not x23401))
+:assumption (or x9790 x1048)
+:assumption (or (not x13090) x25224)
+:assumption (or (not x14198) (not x22810) x8002)
+:assumption (or x11990 (not x22553) (not x13695))
+:assumption (or (not x16244) (not x28252))
+:assumption (or x24904 x28328 x12125)
+:assumption (or (not x4809) (not x14205))
+:assumption (or (not x16806) x7803 x21831)
+:assumption (or x27609 x22155)
+:assumption (or (not x3997) x10900)
+:assumption (or (not x2195) (not x24916))
+:assumption (or (not x13319) x28885 (not x3203) x25151)
+:assumption (or x20366 (not x3803))
+:assumption (or x21815 (not x7243))
+:assumption (or (not x24761) x10086 x1920)
+:assumption (or x26769 (not x14073))
+:assumption (or x19466 x5895)
+:assumption (or x12010 x13995 (not x2247))
+:assumption (or (not x28605) (not x27526) x1480 x9079)
+:assumption (or x21259 (not x20606) (not x19667))
+:assumption (or x14817 (not x23758))
+:assumption (or x1374 (not x6427) (not x8002))
+:assumption (or (not x19210) (not x23741))
+:assumption (or x13663 (not x17638))
+:assumption (or x29918 (not x7463))
+:assumption (or x8616 (not x2681))
+:assumption (or x6101 (not x30461))
+:assumption (or (not x544) x14335)
+:assumption (or (not x4852) x13956)
+:assumption (or (not x6832) x17384)
+:assumption (or (not x12370) x25911)
+:assumption (or (not x23573) (not x4599))
+:assumption (or x21749 (not x18369))
+:assumption (or (not x27387) (not x25829))
+:assumption (or (not x26485) x23526)
+:assumption (or x21002 (not x13956))
+:assumption (or x14793 (not x1950))
+:assumption (or (not x6283) x14895)
+:assumption (or x23238 (not x26257))
+:assumption (or x10562 x20103)
+:assumption (or x23353 x27613)
+:assumption (or (not x8214) (not x7936) (not x27518) (not x22139) (not x21198) (not x24408) (not x3142) (not x31120) x21415)
+:assumption (or x23404 (not x11783))
+:assumption (or (not x29143) x23732)
+:assumption (or (not x10329) x18739)
+:assumption (or x10227 (not x21025))
+:assumption (or (not x8662) x5132 x10410)
+:assumption (or x23191 x8002)
+:assumption (or x29011 x1561)
+:assumption (or x12884 (not x30363))
+:assumption (or (not x13380) (not x19160) x9171 (not x22395))
+:assumption (or (not x31581) x30202)
+:assumption (or (not x13810) x8627 (not x8002))
+:assumption (or (not x19779) (not x20319))
+:assumption (or x15592 (not x2162))
+:assumption (or x29959 (not x29555))
+:assumption (or x3518 x14630)
+:assumption (or (not x31526) x19427)
+:assumption (or x3823 (not x3058))
+:assumption (or x12047 (not x22495))
+:assumption (or x9025 x9348)
+:assumption (or x8484 (not x12360))
+:assumption (or x248 x25675)
+:assumption (or (not x23669) (not x2188))
+:assumption (or x11128 x23913)
+:assumption (or (not x14435) x8824)
+:assumption (or x5840 x15507)
+:assumption (or x8002 (not x19201) x16564)
+:assumption (or (not x15917) (not x13870) (not x25241))
+:assumption (or (not x8002) x10050)
+:assumption (or (not x12265) (not x9008))
+:assumption (or x10248 (not x3778))
+:assumption (or (not x30138) (not x18798))
+:assumption (or x25606 (not x11747) (not x14395))
+:assumption (or x10202 (not x20527))
+:assumption (or x8002 x26770)
+:assumption (or (not x14568) (not x25704))
+:assumption (or (not x15112) x8323)
+:assumption (or x1612 x12653)
+:assumption (or (not x18851) x16306 x11756 x8916)
+:assumption (or x16804 x5262)
+:assumption (or (not x9344) (not x16266))
+:assumption (or x28027 x31083)
+:assumption (or (not x18154) (not x4077))
+:assumption (or x30496 (not x11858))
+:assumption (or x27541 x19439)
+:assumption (or (not x17436) (not x14762))
+:assumption (or (not x5528) (not x1135))
+:assumption (or x21175 (not x4255))
+:assumption (or (not x23726) (not x11958))
+:assumption (or (not x3534) x19992)
+:assumption (or x7210 x23796)
+:assumption (or x10152 (not x3756))
+:assumption (or (not x18781) (not x13939))
+:assumption (or x26443 (not x16495))
+:assumption (or x923 x12497)
+:assumption (or (not x6307) x8543)
+:assumption (or (not x29069) (not x7904))
+:assumption (or x27249 (not x16991))
+:assumption (or x664 x23193 (not x8002) (not x23244))
+:assumption (or x1352 (not x214))
+:assumption (or (not x5028) (not x11827) x19680)
+:assumption (or (not x23708) x9492)
+:assumption (or x28526 (not x95))
+:assumption (or x13092 (not x371))
+:assumption (or (not x16575) x18694)
+:assumption (or (not x22548) x6388)
+:assumption (or x4736 x3101 x8586 (not x19350))
+:assumption (or (not x27912) x22604)
+:assumption (or x8914 (not x6668))
+:assumption (or (not x31824) x31309)
+:assumption (or x6969 x31402 (not x22333))
+:assumption (or (not x3977) x4809 (not x19953))
+:assumption (or x5394 (not x20132))
+:assumption (or (not x3299) x22413)
+:assumption (or (not x24386) (not x20862))
+:assumption (or x7588 x8721)
+:assumption (or x26199 x3548)
+:assumption (or x5249 x1176 x8002 (not x27559) x23244)
+:assumption (or x8519 (not x29095))
+:assumption (or x31192 x11341)
+:assumption (or x25253 x27353)
+:assumption (or (not x27495) x23629)
+:assumption (or x9764 x17848)
+:assumption (or (not x28078) x19711)
+:assumption (or (not x13446) x24721)
+:assumption (or x659 (not x16426))
+:assumption (or x10306 x1679)
+:assumption (or x5343 x12205)
+:assumption (or (not x2506) x29874)
+:assumption (or x27068 x16557 (not x7174) x15795 (not x16304) (not x7542))
+:assumption (or (not x17903) x18620)
+:assumption (or (not x11313) (not x21145))
+:assumption (or x29606 x11015)
+:assumption (or x10683 (not x24568))
+:assumption (or x22911 x25366)
+:assumption (or x13437 (not x23775))
+:assumption (or x13394 x9025)
+:assumption (or x30022 x30439)
+:assumption (or x14222 x2833)
+:assumption (or x6390 (not x21298))
+:assumption (or x17232 (not x16377) (not x13956) (not x21768) (not x26852) x15207 (not x17921))
+:assumption (or x9166 x23244 x8020)
+:assumption (or x29442 x24898)
+:assumption (or x9263 x6520)
+:assumption (or x12325 x19663 (not x8091) (not x2093) (not x1546) (not x30255))
+:assumption (or x22269 (not x23685))
+:assumption (or (not x12535) (not x13997))
+:assumption (or (not x9113) (not x26061) (not x10336) x26851)
+:assumption (or (not x14265) x11652 (not x7708) x595)
+:assumption (or (not x16904) x21392)
+:assumption (or (not x23952) (not x2569))
+:assumption (or (not x288) x6152)
+:assumption (or (not x22802) x22994)
+:assumption (or (not x17012) (not x11648))
+:assumption (or x18069 (not x3494) (not x19282) x3299)
+:assumption (or x11792 x20510)
+:assumption (or x12458 (not x20949) x6786 (not x12045))
+:assumption (or x21549 x21815 x7434 (not x27541) (not x22431) x31163)
+:assumption (or (not x15060) (not x29831))
+:assumption (or (not x20595) (not x5528) (not x18681) x15121 x12843 x4482)
+:assumption (or (not x10866) x8937 x29305 (not x4503) (not x27186))
+:assumption (or x26579 x25977)
+:assumption (or x15595 (not x18140))
+:assumption (or x27857 x20002)
+:assumption (or (not x5517) (not x14435) (not x1706))
+:assumption (or x630 x21270)
+:assumption (or x519 x27412)
+:assumption (or x1013 x14347 (not x24729))
+:assumption (or (not x16439) (not x12060) x20649 x6650 x6297 x6871)
+:assumption (or x10758 (not x13571))
+:assumption (or x7944 x30968)
+:assumption (or (not x30911) (not x30138) x20731 (not x26897))
+:assumption (or x28814 x11786)
+:assumption (or x28083 (not x10924) (not x13064) (not x7835) (not x12496))
+:assumption (or x11957 (not x22855))
+:assumption (or x17534 x14849)
+:assumption (or x10873 x6428)
+:assumption (or x24362 x5265)
+:assumption (or (not x22925) (not x22221))
+:assumption (or x12945 (not x2829))
+:assumption (or x6372 (not x24853))
+:assumption (or (not x22790) x29822)
+:assumption (or x22319 (not x8870))
+:assumption (or x13923 (not x24623))
+:assumption (or x12145 (not x23244))
+:assumption (or x7380 (not x23244))
+:assumption (or (not x12230) (not x5204))
+:assumption (or (not x25659) (not x29352) x18493 (not x16989) (not x671) (not x8397))
+:assumption (or x29798 (not x25659))
+:assumption (or x30844 x22669 x9070 x9520 (not x13177) (not x9445) (not x31347) x29464)
+:assumption (or x17070 x5778)
+:assumption (or x7285 (not x17392))
+:assumption (or x14381 x26670)
+:assumption (or x7548 x8754)
+:assumption (or x3895 x22520)
+:assumption (or (not x13150) x239)
+:assumption (or x23079 (not x19820) x3683 (not x15336) x19400 (not x5312) (not x12598))
+:assumption (or x19864 (not x10932) x17264 x13891)
+:assumption (or x4947 (not x20576))
+:assumption (or (not x21472) (not x2696))
+:assumption (or (not x16025) x31733)
+:assumption (or (not x11127) x18963)
+:assumption (or x13113 x26934)
+:assumption (or (not x417) x15536 x13169 (not x26684) x18792 x3153 x25756 (not x20992) x830)
+:assumption (or x2650 x5688)
+:assumption (or x19424 x26593)
+:assumption (or (not x9651) (not x25659) x30980)
+:assumption (or x22792 (not x3956))
+:assumption (or (not x13792) x547)
+:assumption (or (not x28671) x6199)
+:assumption (or (not x21576) x19220)
+:assumption (or x28278 (not x1621))
+:assumption (or (not x26713) (not x7683))
+:assumption (or (not x15621) (not x24520) x3917)
+:assumption (or (not x15103) (not x16025))
+:assumption (or x23121 x8549)
+:assumption (or x31461 x6920)
+:assumption (or (not x27168) x31472)
+:assumption (or (not x25659) x11425)
+:assumption (or (not x30954) x24926)
+:assumption (or (not x18942) x1983)
+:assumption (or x14676 (not x29231))
+:assumption (or x22321 (not x18200))
+:assumption (or (not x11085) x6129)
+:assumption (or x6604 x10370)
+:assumption (or (not x1528) (not x19471))
+:assumption (or (not x28068) (not x342) (not x10909) (not x26897))
+:assumption (or (not x31032) (not x3973))
+:assumption (or (not x15196) (not x17641))
+:assumption (or (not x325) (not x3469))
+:assumption (or (not x20723) (not x5069))
+:assumption (or (not x1156) x22136)
+:assumption (or (not x14211) (not x6536))
+:assumption (or (not x25807) x26867)
+:assumption (or (not x19635) x6149)
+:assumption (or (not x26890) x25366 (not x11715))
+:assumption (or x22544 x22865)
+:assumption (or (not x1542) (not x20709))
+:assumption (or (not x17954) (not x25659))
+:assumption (or (not x12645) x27850)
+:assumption (or x23244 (not x28389) (not x4378) (not x8761) x8002)
+:assumption (or x18130 x245)
+:assumption (or x30138 (not x30774))
+:assumption (or (not x19915) x28051)
+:assumption (or x26089 (not x13852))
+:assumption (or x29312 x18736)
+:assumption (or x17802 (not x20585))
+:assumption (or x10553 x28637)
+:assumption (or x27741 x1350)
+:assumption (or (not x31873) x16040)
+:assumption (or (not x6782) x20331)
+:assumption (or (not x23497) (not x18209))
+:assumption (or x4973 x31262)
+:assumption (or (not x10679) x30720)
+:assumption (or x17075 (not x6648))
+:assumption (or x29025 (not x1172))
+:assumption (or x31054 (not x22979))
+:assumption (or (not x941) x14064)
+:assumption (or (not x11377) x15537 (not x8979) (not x24018))
+:assumption (or x7555 (not x4782))
+:assumption (or x19900 (not x24530))
+:assumption (or x17717 x6996)
+:assumption (or (not x16491) (not x28030))
+:assumption (or (not x29230) x21014 x11634 x19992)
+:assumption (or x31888 x3356 (not x14455))
+:assumption (or x2713 (not x31231))
+:assumption (or (not x26960) (not x29154))
+:assumption (or x17485 (not x14154))
+:assumption (or x21548 (not x11900))
+:assumption (or x25694 x2984)
+:assumption (or x4259 x27564 x2419 (not x18047) x15382 x15906)
+:assumption (or (not x8019) x18840)
+:assumption (or (not x8102) (not x8002))
+:assumption (or x24618 (not x17146))
+:assumption (or (not x12336) x29891)
+:assumption (or (not x27425) (not x19489))
+:assumption (or (not x5310) (not x14873))
+:assumption (or (not x29121) (not x11089))
+:assumption (or x16805 (not x12578))
+:assumption (or x4596 (not x756))
+:assumption (or (not x9152) x23761)
+:assumption (or (not x3991) x12818)
+:assumption (or x6717 x27425)
+:assumption (or (not x8961) (not x23212))
+:assumption (or x28096 (not x13159))
+:assumption (or x2620 (not x10056))
+:assumption (or x26554 (not x28331))
+:assumption (or x29541 (not x8002) x28416)
+:assumption (or x30235 (not x23069))
+:assumption (or (not x19533) x18370)
+:assumption (or x30691 (not x22861))
+:assumption (or x15836 (not x18315) (not x31762))
+:assumption (or (not x913) (not x27698))
+:assumption (or x8966 (not x6677))
+:assumption (or (not x10132) x21457)
+:assumption (or (not x2337) x4640)
+:assumption (or (not x2954) (not x20686))
+:assumption (or (not x3332) x17586)
+:assumption (or (not x16802) (not x29130))
+:assumption (or (not x13658) x10450 (not x4559) (not x29985))
+:assumption (or (not x8782) x12817)
+:assumption (or (not x14839) (not x8118) x3099)
+:assumption (or x28475 x15177)
+:assumption (or x13956 x15183)
+:assumption (or x2187 x4442 x18637 x8364 (not x20778) (not x16230))
+:assumption (or (not x8861) (not x24308))
+:assumption (or (not x15673) x13611)
+:assumption (or (not x31364) x25650)
+:assumption (or x12846 (not x14925))
+:assumption (or x1241 x13881 (not x1743) (not x28832) (not x22104) x21683 x9008 (not x30796))
+:assumption (or (not x3662) x10239)
+:assumption (or x14334 (not x29057) (not x12684))
+:assumption (or (not x22923) (not x13543))
+:assumption (or x29696 x3537 (not x3292))
+:assumption (or (not x23783) x14347)
+:assumption (or (not x13394) (not x9025) x1582)
+:assumption (or (not x1379) (not x24757))
+:assumption (or x28992 x4018)
+:assumption (or x14160 (not x25813) (not x28288) (not x3403) (not x3315))
+:assumption (or (not x25017) x10805 x11568)
+:assumption (or x27930 (not x30872))
+:assumption (or x2133 (not x21739))
+:assumption (or x5229 (not x20736))
+:assumption (or (not x3616) x15876)
+:assumption (or x21815 x7781)
+:assumption (or (not x25554) (not x26541) (not x20651) (not x13263))
+:assumption (or (not x6927) x28399)
+:assumption (or (not x15591) (not x7332))
+:assumption (or x27174 x25904)
+:assumption (or (not x25233) x15419)
+:assumption (or (not x21296) (not x6728))
+:assumption (or (not x28619) x10575)
+:assumption (or x11760 (not x20693))
+:assumption (or (not x23244) (not x22926))
+:assumption (or x11388 x15034)
+:assumption (or x28108 (not x29431))
+:assumption (or x12982 x31561)
+:assumption (or (not x31632) (not x31688))
+:assumption (or (not x12510) x21911)
+:assumption (or x29636 x8658)
+:assumption (or x23265 (not x31862))
+:assumption (or x23003 x17402 x9825)
+:assumption (or (not x30519) (not x8002))
+:assumption (or x3994 (not x16242) x5519 x26385 x12836 x27982)
+:assumption (or (not x7131) (not x16834) x7087 (not x23630) x11543 (not x5551) x21102 (not x23399))
+:assumption (or x9354 x4409)
+:assumption (or x16444 (not x17250))
+:assumption (or x13389 x27225)
+:assumption (or x17443 (not x20575))
+:assumption (or x29694 x29895)
+:assumption (or (not x27104) x30924)
+:assumption (or x2148 x28809)
+:assumption (or x6312 x20614)
+:assumption (or (not x20425) (not x16802))
+:assumption (or x20688 (not x13370))
+:assumption (or (not x11768) (not x10316))
+:assumption (or x26670 (not x15967))
+:assumption (or x754 x22785)
+:assumption (or (not x9983) x25377)
+:assumption (or (not x14495) x17016)
+:assumption (or x18 (not x26040))
+:assumption (or x12984 (not x29978) (not x13388) x4484)
+:assumption (or x13077 (not x31537) (not x30113) x8678)
+:assumption (or (not x2367) (not x26897) x28864 x10909)
+:assumption (or (not x15351) x24353)
+:assumption (or (not x30983) x21380)
+:assumption (or x24498 x22373)
+:assumption (or x6313 x24737 (not x14337) (not x17859))
+:assumption (or x8332 (not x28831))
+:assumption (or x23186 (not x5054))
+:assumption (or (not x25937) x29954 (not x4478) x13785)
+:assumption (or x31621 x17567 (not x13040))
+:assumption (or x30607 x26000)
+:assumption (or x6230 x24267)
+:assumption (or (not x25818) x1294)
+:assumption (or x16025 (not x24746))
+:assumption (or (not x6614) (not x31862))
+:assumption (or x12715 (not x21038))
+:assumption (or (not x28023) x30286)
+:assumption (or x15125 (not x25965))
+:assumption (or x28260 x10879)
+:assumption (or (not x9820) (not x1687))
+:assumption (or (not x30887) (not x18135))
+:assumption (or x2388 x12688)
+:assumption (or x7859 x9096)
+:assumption (or (not x4076) (not x6911))
+:assumption (or (not x30932) (not x8572))
+:assumption (or x1176 (not x6867))
+:assumption (or (not x21067) x27356)
+:assumption (or (not x19197) x10915)
+:assumption (or (not x28566) (not x7137) (not x24906) (not x24722) x17483)
+:assumption (or x31120 (not x6727))
+:assumption (or x5528 x3630)
+:assumption (or (not x7182) x10904)
+:assumption (or (not x27525) (not x18029))
+:assumption (or x28961 (not x8002))
+:assumption (or x3708 x27117)
+:assumption (or x1746 x16754)
+:assumption (or (not x22397) (not x10587))
+:assumption (or (not x12062) (not x14205))
+:assumption (or (not x5674) x17594)
+:assumption (or (not x28547) (not x4770))
+:assumption (or x8002 x3661 (not x2093) (not x1546) (not x8091) x12325)
+:assumption (or (not x9204) x2610)
+:assumption (or (not x22655) x12229)
+:assumption (or x26391 x25546 x9459 x23202 x21696 x26267)
+:assumption (or x24070 (not x19992))
+:assumption (or (not x6729) x2210 x4039 x15904)
+:assumption (or (not x10874) (not x6307) (not x17241) x26835)
+:assumption (or x10048 (not x23701) (not x19636) x14839)
+:assumption (or x21507 (not x24248))
+:assumption (or x15740 (not x5140))
+:assumption (or (not x27212) (not x29261))
+:assumption (or x2818 x5642)
+:assumption (or x6572 (not x10473))
+:assumption (or x27977 (not x28606))
+:assumption (or (not x6710) (not x16177))
+:assumption (or x17534 x24947)
+:assumption (or x23857 x5028 (not x5071) (not x29442))
+:assumption (or (not x30208) x27086)
+:assumption (or x31801 x20181)
+:assumption (or x8629 x13945)
+:assumption (or (not x8245) x202)
+:assumption (or x11844 x18069)
+:assumption (or (not x1439) (not x4294))
+:assumption (or (not x19695) (not x823))
+:assumption (or (not x13082) (not x19063))
+:assumption (or x23429 (not x5528))
+:assumption (or x4080 (not x15336))
+:assumption (or x30224 x8401)
+:assumption (or x30918 x4118)
+:assumption (or x31381 (not x12365))
+:assumption (or x31589 x233)
+:assumption (or x6997 (not x29649))
+:assumption (or (not x14416) x3710)
+:assumption (or (not x12964) x9212)
+:assumption (or (not x540) x26333)
+:assumption (or (not x5328) (not x12797))
+:assumption (or (not x28115) x22510)
+:assumption (or x9008 (not x30709) x22713)
+:assumption (or (not x5108) (not x16575))
+:assumption (or (not x18859) x30528 (not x703))
+:assumption (or (not x21685) x14574)
+:assumption (or (not x10418) (not x5550))
+:assumption (or x25687 (not x31891))
+:assumption (or x20135 (not x24955) (not x28590) (not x30582))
+:assumption (or x3782 (not x30640))
+:assumption (or x12149 (not x4819))
+:assumption (or x5169 (not x19726))
+:assumption (or x29969 x9120)
+:assumption (or (not x21005) x8336)
+:assumption (or x10099 x5025 (not x27653))
+:assumption (or (not x13653) (not x349))
+:assumption (or (not x21815) x6078 x30862)
+:assumption (or x26062 (not x15468))
+:assumption (or (not x2572) (not x28718))
+:assumption (or (not x20448) x14159)
+:assumption (or (not x14516) (not x31796))
+:assumption (or (not x11882) (not x30840))
+:assumption (or (not x2334) (not x8787) x21049)
+:assumption (or (not x14588) x25742)
+:assumption (or x15638 x2467)
+:assumption (or x6176 (not x26588) (not x27836) x17419 (not x23008))
+:assumption (or (not x2509) (not x12925))
+:assumption (or (not x23433) x952)
+:assumption (or x29258 (not x21202) x6403 x17302)
+:assumption (or (not x3156) x30752)
+:assumption (or (not x11829) (not x1148) (not x5709))
+:assumption (or x11570 (not x2686))
+:assumption (or x13191 (not x13956) x22154)
+:assumption (or x2340 (not x7163))
+:assumption (or x27191 x18631)
+:assumption (or (not x8891) x26639)
+:assumption (or x13457 x28890)
+:assumption (or (not x29664) x8883)
+:assumption (or x22969 (not x5886) (not x1089) x8961)
+:assumption (or (not x28295) (not x18927))
+:assumption (or x3321 x26345)
+:assumption (or x2746 (not x14366))
+:assumption (or (not x16186) x26398)
+:assumption (or x16633 x24652)
+:assumption (or x30493 x18804)
+:assumption (or x8112 x31763)
+:assumption (or (not x11511) (not x13069))
+:assumption (or x24023 (not x494))
+:assumption (or (not x18271) x29584 (not x8729) (not x31455))
+:assumption (or x2335 x13228 (not x16701) (not x30208))
+:assumption (or (not x17678) (not x14337))
+:assumption (or (not x8291) (not x6156))
+:assumption (or (not x13796) x12573)
+:assumption (or x21333 x9843)
+:assumption (or (not x8602) x17774 (not x24569))
+:assumption (or (not x11836) (not x28157))
+:assumption (or (not x22074) x16309)
+:assumption (or (not x23978) (not x6788))
+:assumption (or x24280 x14347)
+:assumption (or (not x25147) x6951)
+:assumption (or (not x17562) x13966)
+:assumption (or (not x11028) (not x21582))
+:assumption (or x3353 x31701 x15745)
+:assumption (or (not x26679) x15409)
+:assumption (or (not x26910) x1385 x6243 (not x28147))
+:assumption (or x6606 (not x16401))
+:assumption (or (not x14839) (not x20473) x19275)
+:assumption (or (not x21249) (not x15741))
+:assumption (or (not x14070) x8152)
+:assumption (or x6381 (not x1555))
+:assumption (or x29935 x10743)
+:assumption (or x17380 x30109)
+:assumption (or (not x29870) x31308)
+:assumption (or x13956 x28241)
+:assumption (or x9986 (not x20606) (not x4152))
+:assumption (or (not x28206) x395)
+:assumption (or (not x2248) (not x8819) (not x28125))
+:assumption (or x10698 x22829 x21298 x15457)
+:assumption (or x873 x23172)
+:assumption (or x20885 (not x20630))
+:assumption (or x2518 (not x3934))
+:assumption (or x20427 (not x17109))
+:assumption (or x26739 (not x14073))
+:assumption (or x5789 x12518 (not x21323))
+:assumption (or x22803 (not x16538))
+:assumption (or (not x8959) x10823)
+:assumption (or x1843 (not x14541) (not x20743) (not x19637) x3453)
+:assumption (or (not x12231) x28938)
+:assumption (or x26237 x172)
+:assumption (or (not x12558) (not x10372))
+:assumption (or (not x11227) (not x26953))
+:assumption (or x23414 x21951)
+:assumption (or x8046 x194)
+:assumption (or (not x13847) (not x28023))
+:assumption (or (not x31075) (not x16510))
+:assumption (or (not x17855) (not x4776) x23878)
+:assumption (or (not x8751) (not x2265))
+:assumption (or x12486 (not x10055))
+:assumption (or (not x24491) x21815)
+:assumption (or x15133 (not x13285))
+:assumption (or x918 x14659)
+:assumption (or (not x21271) x12672 (not x21096))
+:assumption (or x8670 (not x21450))
+:assumption (or (not x23050) x19094)
+:assumption (or (not x25535) x23256)
+:assumption (or x26813 x6660)
+:assumption (or (not x24309) x16231)
+:assumption (or (not x31057) x5869)
+:assumption (or (not x15930) x570)
+:assumption (or (not x31134) x29606 x16454 x6284)
+:assumption (or (not x17427) x27952)
+:assumption (or (not x29160) (not x2161))
+:assumption (or (not x13956) (not x5840) (not x29678))
+:assumption (or (not x2881) (not x12188))
+:assumption (or (not x26578) (not x19918) (not x26501) x16823 (not x683))
+:assumption (or (not x14866) x12571 x9008 x26995 (not x25440) x31797)
+:assumption (or (not x4855) x19077)
+:assumption (or (not x28003) x14728)
+:assumption (or (not x21277) x5096)
+:assumption (or (not x25608) x9094)
+:assumption (or x22582 (not x11058) x30428 x14839)
+:assumption (or x19768 x11057)
+:assumption (or (not x21894) x11491 x6133 x25366)
+:assumption (or x13243 x30544)
+:assumption (or x770 x24117)
+:assumption (or (not x31454) (not x644))
+:assumption (or x4828 x15411)
+:assumption (or x15180 (not x30746) (not x21298))
+:assumption (or (not x10334) (not x25178))
+:assumption (or (not x26892) x16635)
+:assumption (or (not x27063) (not x3772))
+:assumption (or x28953 (not x24722))
+:assumption (or x4026 x20365)
+:assumption (or x29113 x25586)
+:assumption (or x28854 (not x3645))
+:assumption (or (not x31841) (not x4826))
+:assumption (or (not x23962) x1213)
+:assumption (or x24044 x10263)
+:assumption (or x20289 (not x25151) x22807)
+:assumption (or (not x26354) (not x28474) (not x18730) (not x25400))
+:assumption (or (not x15051) x27170)
+:assumption (or x29172 (not x17107))
+:assumption (or x10909 x13822)
+:assumption (or x27963 x26467)
+:assumption (or (not x9828) (not x21171))
+:assumption (or (not x23238) x3112)
+:assumption (or x18187 (not x5295))
+:assumption (or (not x9917) x10459)
+:assumption (or (not x5674) (not x25659))
+:assumption (or (not x15726) (not x3413))
+:assumption (or x31557 x8510)
+:assumption (or (not x20723) x30323)
+:assumption (or (not x5740) (not x18438))
+:assumption (or (not x629) (not x29063))
+:assumption (or (not x8687) x24761 x18400)
+:assumption (or x5422 x1195)
+:assumption (or (not x7430) (not x22967))
+:assumption (or (not x24728) x15231)
+:assumption (or x16558 x6814)
+:assumption (or (not x8479) (not x25490))
+:assumption (or (not x27450) x14612 (not x19993) (not x21119) (not x13397))
+:assumption (or (not x30207) (not x3938))
+:assumption (or (not x30361) x21355 x28242)
+:assumption (or x1935 (not x11773))
+:assumption (or (not x8073) x23596)
+:assumption (or x7933 (not x8002))
+:assumption (or x86 (not x25518))
+:assumption (or (not x1610) (not x15499) (not x3614) (not x264) (not x3219) (not x17361))
+:assumption (or x17333 x12659)
+:assumption (or x18500 x31329)
+:assumption (or (not x3666) (not x9629))
+:assumption (or x8573 (not x13748))
+:assumption (or (not x4622) x5987)
+:assumption (or x1344 x17075 (not x229) (not x8614) (not x28378) (not x8273))
+:assumption (or x8293 (not x14368))
+:assumption (or (not x30766) x27950 (not x26125) x5558)
+:assumption (or x7720 x181)
+:assumption (or x24672 (not x11597))
+:assumption (or x23750 x31297)
+:assumption (or x17438 (not x10848))
+:assumption (or x31837 x5708)
+:assumption (or x7571 x11093)
+:assumption (or (not x3865) x25366 x30300)
+:assumption (or x29887 x28744 x6351 x1890 x24861)
+:assumption (or (not x12522) (not x14222))
+:assumption (or (not x28441) (not x6214))
+:assumption (or x2257 x981 (not x27015) (not x5610))
+:assumption (or (not x1542) (not x16809) (not x13956) x30263)
+:assumption (or x22820 x18226)
+:assumption (or x26072 (not x21511))
+:assumption (or (not x14155) (not x13950))
+:assumption (or x11913 x25334)
+:assumption (or (not x13565) (not x31767) x21569)
+:assumption (or x3302 (not x21815) (not x4401) (not x30138) x16510 (not x11566) x31177)
+:assumption (or x14111 (not x24475) x1617)
+:assumption (or x28547 x28841)
+:assumption (or (not x11636) (not x24603))
+:assumption (or (not x17908) (not x2267))
+:assumption (or x5299 (not x24437) (not x23413))
+:assumption (or x23244 (not x7699))
+:assumption (or x25617 x990)
+:assumption (or (not x7102) (not x9008))
+:assumption (or (not x2662) (not x21276) (not x30068) x548)
+:assumption (or x2066 (not x31780))
+:assumption (or x23244 (not x18003) (not x12819))
+:assumption (or x16364 (not x26079))
+:assumption (or (not x9755) x21026)
+:assumption (or x19417 (not x21653))
+:assumption (or (not x14698) x25002)
+:assumption (or x8350 (not x6398))
+:assumption (or x13133 x13235)
+:assumption (or x18622 (not x19338))
+:assumption (or (not x11266) x15769)
+:assumption (or x15141 (not x27098) (not x27226) x20766)
+:assumption (or (not x13730) x1872)
+:assumption (or x29977 x21365)
+:assumption (or x26330 x28973)
+:assumption (or (not x2500) x27157)
+:assumption (or (not x29160) x21521)
+:assumption (or (not x21815) x5028 (not x16510) (not x12242) (not x5549))
+:assumption (or (not x827) (not x24946) x29805)
+:assumption (or (not x11854) x26789 (not x27012))
+:assumption (or x1538 x6149 x11792)
+:assumption (or x1039 x8167)
+:assumption (or (not x11184) (not x8134))
+:assumption (or (not x9678) (not x10569))
+:assumption (or (not x5298) x19799)
+:assumption (or x13047 (not x7605))
+:assumption (or (not x27868) (not x4796))
+:assumption (or x120 (not x17320))
+:assumption (or x2317 (not x4980) (not x26604) (not x21684) x8602 x26500 (not x20046) x7184)
+:assumption (or (not x7317) x25564)
+:assumption (or x31134 x16374 (not x16510) (not x21815) x16957)
+:assumption (or (not x14391) (not x29008))
+:assumption (or x28277 x30113)
+:assumption (or (not x6291) x2154)
+:assumption (or (not x26354) x15455)
+:assumption (or (not x27652) (not x30947))
+:assumption (or x22440 (not x2445))
+:assumption (or x11625 (not x9008) (not x22932))
+:assumption (or x2833 x8600)
+:assumption (or x29424 (not x25909))
+:assumption (or x8513 x27064 x31009)
+:assumption (or x5312 (not x6153))
+:assumption (or x31644 x27883)
+:assumption (or x5362 x3466)
+:assumption (or (not x7677) x30237)
+:assumption (or (not x21332) (not x28577))
+:assumption (or x13761 (not x9394))
+:assumption (or (not x22681) (not x26670))
+:assumption (or x30432 (not x1705))
+:assumption (or x28067 x14048)
+:assumption (or (not x6149) (not x6945))
+:assumption (or (not x13315) x1298)
+:assumption (or (not x8478) x5954)
+:assumption (or x6366 (not x22173) x5093 x20765 x7775 (not x14367))
+:assumption (or (not x16510) (not x28732) (not x21815) (not x10592) (not x18694))
+:assumption (or x29607 x6596 x14927 x9082 (not x28996))
+:assumption (or (not x24419) x4472)
+:assumption (or (not x30479) x9522)
+:assumption (or (not x15686) x4669)
+:assumption (or x762 x21098)
+:assumption (or (not x12240) (not x20471))
+:assumption (or (not x17182) x24363 x7352)
+:assumption (or x19636 (not x9080))
+:assumption (or (not x1771) (not x18374) (not x15522) (not x22172))
+:assumption (or (not x6340) (not x16603) (not x9293))
+:assumption (or x29959 x19346 (not x6594))
+:assumption (or (not x25659) (not x7630))
+:assumption (or x21727 (not x13464))
+:assumption (or x8284 (not x23475))
+:assumption (or (not x16966) x24853)
+:assumption (or (not x1393) (not x29735))
+:assumption (or (not x3099) x8118)
+:assumption (or x25029 x1176)
+:assumption (or x5059 x12367)
+:assumption (or x5925 x4535)
+:assumption (or (not x29728) x27345)
+:assumption (or x26774 x315 (not x10585))
+:assumption (or (not x309) x17823 (not x28202) (not x17302))
+:assumption (or (not x27911) (not x16346))
+:assumption (or x29443 x6027)
+:assumption (or (not x9603) (not x23244))
+:assumption (or x23244 x23015 x8002 x31708)
+:assumption (or x15917 (not x29285))
+:assumption (or (not x20821) (not x13518))
+:assumption (or (not x14152) (not x13689) (not x8883) (not x363) (not x9716))
+:assumption (or (not x20349) (not x29771))
+:assumption (or (not x27921) (not x17159))
+:assumption (or x16642 (not x24765))
+:assumption (or x28966 (not x20158))
+:assumption (or x22497 x27221)
+:assumption (or (not x20216) (not x13105))
+:assumption (or x1433 x1965)
+:assumption (or x20608 (not x29747))
+:assumption (or x13401 (not x19290) x4499)
+:assumption (or (not x3847) (not x6090))
+:assumption (or x21393 (not x16527))
+:assumption (or (not x30340) (not x8602))
+:assumption (or (not x27360) (not x23272))
+:assumption (or (not x13287) (not x24697))
+:assumption (or (not x8092) (not x18504))
+:assumption (or (not x28980) x6919)
+:assumption (or x11102 (not x13120) (not x29648))
+:assumption (or x9817 x5899)
+:assumption (or x16549 (not x17282))
+:assumption (or (not x24417) x9343)
+:assumption (or x13753 (not x14391))
+:assumption (or x2313 (not x26059))
+:assumption (or x15262 (not x25176))
+:assumption (or (not x5709) (not x30031))
+:assumption (or (not x26547) x7072)
+:assumption (or x6339 x8753)
+:assumption (or (not x22801) (not x12094))
+:assumption (or (not x1582) (not x27038) (not x21731))
+:assumption (or x13955 (not x27156))
+:assumption (or (not x22971) x24079)
+:assumption (or x3435 (not x15351))
+:assumption (or x28401 x29376 x11109)
+:assumption (or x13237 x26017)
+:assumption (or (not x12351) (not x20224))
+:assumption (or x29130 (not x26404))
+:assumption (or (not x26188) (not x21717))
+:assumption (or (not x31545) (not x10335))
+:assumption (or (not x4597) (not x12300))
+:assumption (or x9724 (not x29121))
+:assumption (or x24260 x11154)
+:assumption (or x20474 x8003)
+:assumption (or (not x6039) x18467)
+:assumption (or (not x11448) x22583)
+:assumption (or x8721 (not x1118))
+:assumption (or (not x28172) (not x22784))
+:assumption (or (not x15045) x4024)
+:assumption (or x17564 x26393)
+:assumption (or x22710 x17632)
+:assumption (or (not x2179) x27330 (not x18805) x10352 x9008 (not x20019))
+:assumption (or (not x10698) (not x21298))
+:assumption (or x22914 x29549)
+:assumption (or (not x13140) x4227)
+:assumption (or (not x2943) x16920 x16661 (not x21546))
+:assumption (or x288 x28973 x1474 x4218)
+:assumption (or (not x25038) x10401 x5089 (not x13879) (not x30912) (not x22701))
+:assumption (or (not x14913) x146)
+:assumption (or (not x20803) x22362 (not x15034) (not x29599) (not x9551) (not x22628))
+:assumption (or (not x6305) (not x5197))
+:assumption (or (not x9336) x11108 (not x16632))
+:assumption (or x21006 x5540)
+:assumption (or (not x25307) (not x4952))
+:assumption (or (not x23049) (not x29649))
+:assumption (or (not x14035) x26815)
+:assumption (or x18068 x10960)
+:assumption (or (not x22890) x28046)
+:assumption (or (not x10660) (not x27537))
+:assumption (or (not x29606) x13555)
+:assumption (or (not x21940) x13119)
+:assumption (or (not x6969) x592)
+:assumption (or x11133 (not x25980))
+:assumption (or (not x8904) (not x1064))
+:assumption (or (not x28908) (not x9659))
+:assumption (or x17260 (not x25291))
+:assumption (or x28191 (not x9274))
+:assumption (or x21584 x10583)
+:assumption (or x14899 (not x8433))
+:assumption (or (not x14267) x17814)
+:assumption (or (not x29615) (not x27787))
+:assumption (or (not x1610) x21309)
+:assumption (or (not x30096) x13540)
+:assumption (or (not x31913) (not x9249))
+:assumption (or (not x19683) x5958)
+:assumption (or (not x13680) x10617 x24668 x23249 (not x11944) x15552 (not x29067) x12242)
+:assumption (or (not x9853) x1384)
+:assumption (or x8035 (not x30492))
+:assumption (or (not x29610) (not x13374))
+:assumption (or x27537 (not x26670) x14571 x29499)
+:assumption (or (not x21289) x227)
+:assumption (or x30529 x888)
+:assumption (or (not x28852) x31483)
+:assumption (or (not x5528) (not x7610))
+:assumption (or x11064 x15364)
+:assumption (or x4094 x27583)
+:assumption (or (not x17133) x14360)
+:assumption (or x13434 (not x26728))
+:assumption (or x18347 (not x24670) (not x19613) (not x2431))
+:assumption (or x18859 (not x25202))
+:assumption (or (not x20482) (not x8461) (not x21195))
+:assumption (or (not x12850) (not x11506))
+:assumption (or (not x31909) (not x19126))
+:assumption (or (not x5028) (not x22303) (not x9696))
+:assumption (or (not x31639) x7047)
+:assumption (or x5394 x16788)
+:assumption (or (not x17345) x19440)
+:assumption (or (not x25524) x27133)
+:assumption (or (not x1657) x17542)
+:assumption (or x16351 (not x15268))
+:assumption (or (not x26731) (not x9334))
+:assumption (or (not x1723) x9031)
+:assumption (or x7201 (not x16201) x827)
+:assumption (or x7630 x20428)
+:assumption (or x4933 x19473)
+:assumption (or (not x27852) (not x23415))
+:assumption (or x7905 (not x23244))
+:assumption (or x5082 (not x8082) x21116 x18843 x21784)
+:assumption (or x28276 x29122)
+:assumption (or (not x1877) x30575)
+:assumption (or x8901 (not x20599))
+:assumption (or (not x28837) x16258 (not x17359))
+:assumption (or x8628 (not x26777) x18488)
+:assumption (or x20469 (not x7408))
+:assumption (or x23244 x13448)
+:assumption (or x3677 x15648)
+:assumption (or x15721 x26835 x28541 (not x31829))
+:assumption (or (not x16980) x4025)
+:assumption (or x26604 (not x7184))
+:assumption (or x14877 (not x675) (not x2170) x21422 (not x7614) x14164 (not x19130))
+:assumption (or (not x31154) (not x14597))
+:assumption (or x29820 (not x29809))
+:assumption (or x29848 (not x23691))
+:assumption (or (not x10238) x23244 (not x1221) x8002)
+:assumption (or x1188 (not x5629))
+:assumption (or (not x20297) x20060)
+:assumption (or x26491 x11385)
+:assumption (or (not x20915) (not x20140))
+:assumption (or (not x9090) x30794)
+:assumption (or x2669 x25497)
+:assumption (or x21373 (not x1130))
+:assumption (or (not x22468) x14702)
+:assumption (or x16377 x25214)
+:assumption (or (not x8002) x25967 x9769)
+:assumption (or x21161 x7758)
+:assumption (or (not x29528) x6488)
+:assumption (or x21216 (not x17288))
+:assumption (or x20084 x21597)
+:assumption (or (not x28157) (not x19034))
+:assumption (or (not x25755) x23562)
+:assumption (or x29066 x28438)
+:assumption (or x29393 x8476)
+:assumption (or (not x28554) (not x6720) x30407 (not x29364))
+:assumption (or (not x9751) x11813)
+:assumption (or x6340 x9293)
+:assumption (or x26009 (not x17855) x18379 x31690 (not x30222) x2685 x27601 (not x47) x31923)
+:assumption (or (not x24051) x27176)
+:assumption (or (not x10135) x9008 x23659)
+:assumption (or x15101 x27170)
+:assumption (or (not x22060) x26107)
+:assumption (or (not x38) x26422)
+:assumption (or x19296 x2289)
+:assumption (or (not x18013) x30037)
+:assumption (or x425 x24783)
+:assumption (or (not x29078) (not x7436) (not x18859))
+:assumption (or x18751 x15456)
+:assumption (or (not x24942) (not x4804))
+:assumption (or (not x27915) x26061 (not x31688))
+:assumption (or x18029 x27525)
+:assumption (or x12684 x7980)
+:assumption (or x26173 (not x23059))
+:assumption (or x6172 (not x20943) x9211 (not x27906))
+:assumption (or x29220 x19428)
+:assumption (or (not x5885) x26486)
+:assumption (or (not x8859) x25810)
+:assumption (or x17710 x30989)
+:assumption (or (not x4504) x18246 x12326 x19541 (not x4879) (not x12916) x2126)
+:assumption (or (not x21653) x29775)
+:assumption (or (not x30814) x10064)
+:assumption (or x26191 (not x973))
+:assumption (or x29382 (not x1283))
+:assumption (or (not x13840) (not x19585) (not x18035) (not x30163) (not x14449))
+:assumption (or x16744 x19157)
+:assumption (or x12859 (not x18770))
+:assumption (or x20034 x16802)
+:assumption (or (not x17170) x26578)
+:assumption (or x27571 (not x28647))
+:assumption (or (not x3448) x15795 x14591 (not x30219))
+:assumption (or x20325 (not x31210))
+:assumption (or x8808 (not x1542) x4774 (not x29137) (not x20955) (not x760))
+:assumption (or (not x9949) (not x12233))
+:assumption (or x22770 x10614)
+:assumption (or x2779 x5886)
+:assumption (or x5364 (not x30734))
+:assumption (or (not x13057) x23457)
+:assumption (or x26948 (not x24940))
+:assumption (or (not x16802) x26917)
+:assumption (or x15817 x23279)
+:assumption (or (not x11608) x25185)
+:assumption (or x6874 (not x30729))
+:assumption (or (not x18955) (not x28063))
+:assumption (or x23125 x20572)
+:assumption (or (not x21386) x31777 x22125)
+:assumption (or (not x19935) (not x28536))
+:assumption (or (not x17501) x2456)
+:assumption (or x26592 x14879)
+:assumption (or (not x20724) x28082)
+:assumption (or x9060 x24801)
+:assumption (or x6261 (not x23004))
+:assumption (or x18816 (not x9688))
+:assumption (or x28283 x31237)
+:assumption (or x24604 (not x13584))
+:assumption (or (not x3979) (not x28179))
+:assumption (or x5549 x16510)
+:assumption (or x30404 (not x2532) (not x10655))
+:assumption (or x21298 (not x31321) (not x9021) x11489)
+:assumption (or x23257 (not x10283) (not x4026) (not x770) x14725 (not x21086) x10289)
+:assumption (or x17620 (not x30749))
+:assumption (or (not x5141) (not x25992))
+:assumption (or (not x16087) (not x17211) (not x12590))
+:assumption (or (not x10568) x2521)
+:assumption (or (not x19882) (not x12242))
+:assumption (or (not x7110) x19198 x16826 x22633)
+:assumption (or x30426 x21298)
+:assumption (or (not x1237) (not x17618))
+:assumption (or (not x14721) (not x19037))
+:assumption (or (not x27485) (not x19741))
+:assumption (or x21815 (not x17410))
+:assumption (or x20325 x866)
+:assumption (or (not x2721) (not x8759))
+:assumption (or x13555 (not x18694))
+:assumption (or (not x18807) x29977)
+:assumption (or (not x14050) (not x1582))
+:assumption (or x7840 (not x19484))
+:assumption (or x15487 (not x4603) x4973)
+:assumption (or (not x11558) x14820)
+:assumption (or (not x12874) (not x21298) x8945 (not x2076))
+:assumption (or x26919 x6316 x8810 (not x29944))
+:assumption (or (not x7080) (not x23202) (not x30395))
+:assumption (or x5342 x8260)
+:assumption (or (not x22794) (not x6779) (not x31564) (not x23904) (not x17922))
+:assumption (or x7500 (not x805))
+:assumption (or x13681 x31375)
+:assumption (or (not x24183) (not x22930))
+:assumption (or x3138 x18590)
+:assumption (or (not x26500) x18506)
+:assumption (or x19895 x28830)
+:assumption (or (not x23279) (not x23938))
+:assumption (or (not x29606) x21071)
+:assumption (or (not x24622) (not x3440))
+:assumption (or (not x27537) (not x28303) (not x25748))
+:assumption (or (not x10131) x13299)
+:assumption (or (not x26313) (not x15035) x31907 x29437)
+:assumption (or x25803 x24464)
+:assumption (or (not x20734) (not x7341))
+:assumption (or x6780 x1199 (not x19992))
+:assumption (or (not x30832) (not x12959))
+:assumption (or x3234 x19859)
+:assumption (or x14340 x14445)
+:assumption (or (not x21406) x11806)
+:assumption (or x3267 (not x19385) (not x13956) x20963 x5704 (not x28910))
+:assumption (or x6133 (not x4670))
+:assumption (or x21298 (not x3637))
+:assumption (or (not x7162) (not x6661))
+:assumption (or (not x15207) (not x3916))
+:assumption (or x19037 x12798 (not x18852) x20183 (not x1789) x22546)
+:assumption (or x24901 (not x20066))
+:assumption (or x763 x18987 (not x3902) (not x18850) (not x23649))
+:assumption (or x21202 (not x837))
+:assumption (or x29706 x27537)
+:assumption (or x20069 x13550)
+:assumption (or x23872 x8242)
+:assumption (or x13921 (not x14591))
+:assumption (or (not x20589) x17484)
+:assumption (or x16630 x706)
+:assumption (or (not x29312) (not x15045) (not x28328) x24756)
+:assumption (or (not x11192) (not x29559))
+:assumption (or (not x8856) x9646)
+:assumption (or (not x28905) (not x4587) (not x8001) (not x13947) (not x5797))
+:assumption (or x23560 (not x3044))
+:assumption (or x9008 (not x17878) x10974)
+:assumption (or x28947 (not x18793))
+:assumption (or (not x1527) (not x13912))
+:assumption (or (not x28952) x28684)
+:assumption (or x26111 (not x13678))
+:assumption (or (not x74) (not x23503) (not x6783) x22831)
+:assumption (or (not x18976) (not x7559))
+:assumption (or x7398 x8002 x21405 (not x22649) (not x118) (not x8966))
+:assumption (or (not x18012) (not x23676))
+:assumption (or x27537 (not x18944))
+:assumption (or x1411 x29005 x3783)
+:assumption (or x11969 x11720 x31628 (not x28555) x20455)
+:assumption (or x23437 (not x1393) (not x23229))
+:assumption (or x12667 (not x23399) (not x7537) (not x8384))
+:assumption (or x7589 (not x24274))
+:assumption (or x28396 (not x24629))
+:assumption (or (not x24527) x7969)
+:assumption (or x14163 x31315)
+:assumption (or x17112 x18165)
+:assumption (or x10567 x15729)
+:assumption (or (not x8717) x14309)
+:assumption (or x28407 x21506)
+:assumption (or x7040 x21815)
+:assumption (or (not x28409) (not x23813))
+:assumption (or x17966 (not x31767))
+:assumption (or x17200 (not x31869))
+:assumption (or x6855 (not x18409) (not x15634) (not x16268) x29442 (not x2135))
+:assumption (or x3992 x16135)
+:assumption (or x12088 (not x9288))
+:assumption (or (not x4391) (not x25415))
+:assumption (or (not x24722) x1127 (not x22851))
+:assumption (or x1582 (not x6459))
+:assumption (or x11251 x7033)
+:assumption (or x2912 (not x2429))
+:assumption (or x12717 (not x11338))
+:assumption (or (not x24264) x25659 (not x25013))
+:assumption (or (not x2514) x14342 x19982)
+:assumption (or x29772 (not x22159) x16025)
+:assumption (or (not x28387) x11679)
+:assumption (or x3837 (not x11833))
+:assumption (or x9764 (not x13480))
+:assumption (or x643 x9901)
+:assumption (or (not x7955) (not x8714))
+:assumption (or x10723 (not x23826))
+:assumption (or x9991 x17968 (not x23414) (not x29703) x15298)
+:assumption (or x13956 x274)
+:assumption (or (not x28334) x22825 x22339 (not x9509) x4069)
+:assumption (or x19725 (not x13092) x31076)
+:assumption (or x26933 x23975)
+:assumption (or x9053 (not x27543) x19097 x24335 (not x5528) (not x18908))
+:assumption (or (not x18841) (not x23045))
+:assumption (or (not x930) (not x1372))
+:assumption (or (not x21406) x23776)
+:assumption (or (not x21008) (not x26913))
+:assumption (or (not x29822) x13956)
+:assumption (or (not x19264) x13188)
+:assumption (or (not x23244) x14455 (not x16282))
+:assumption (or x30719 x19340)
+:assumption (or x13828 (not x29556) x12474)
+:assumption (or (not x7504) (not x25263))
+:assumption (or x30199 (not x14931))
+:assumption (or (not x11970) x20277)
+:assumption (or (not x21344) x5507)
+:assumption (or (not x24094) (not x21704) x21537)
+:assumption (or (not x30967) (not x2956))
+:assumption (or x7590 x16694)
+:assumption (or (not x1208) x30667 (not x23812) x11192)
+:assumption (or x2613 x1798)
+:assumption (or x12321 (not x16515))
+:assumption (or (not x17100) x11475)
+:assumption (or (not x2385) (not x23830))
+:assumption (or (not x6257) x29606 x28262 x18694)
+:assumption (or x19160 (not x13361))
+:assumption (or x22376 (not x23658))
+:assumption (or x23162 (not x12413))
+:assumption (or (not x12189) x7695)
+:assumption (or (not x3671) x27382 (not x4493) x25120)
+:assumption (or (not x6474) (not x11767))
+:assumption (or (not x6772) (not x19424) (not x15337) (not x19266))
+:assumption (or (not x23824) (not x6260))
+:assumption (or (not x21546) (not x20636) (not x1098) x17302)
+:assumption (or x10655 x2532)
+:assumption (or x28231 (not x8002))
+:assumption (or (not x8120) x1632)
+:assumption (or x20425 x6361)
+:assumption (or (not x9328) x4473)
+:assumption (or x28420 x9593)
+:assumption (or x4386 x31929)
+:assumption (or (not x24294) x9005)
+:assumption (or (not x26402) (not x3636))
+:assumption (or (not x16941) x18694)
+:assumption (or (not x21319) (not x9891))
+:assumption (or x28269 (not x11696) (not x29647) (not x12705))
+:assumption (or (not x3518) x9298 x23909 (not x9403) x26668)
+:assumption (or x28159 x9213)
+:assumption (or x1097 (not x6959))
+:assumption (or x20401 x28761)
+:assumption (or x2508 (not x11126))
+:assumption (or (not x16123) x11939)
+:assumption (or x27537 x22830)
+:assumption (or (not x19660) (not x19174))
+:assumption (or x18100 (not x2400) x18042 (not x24722))
+:assumption (or x4493 (not x14746))
+:assumption (or x20730 (not x1307) x827)
+:assumption (or x24387 (not x21596))
+:assumption (or (not x14395) x23856 x28161)
+:assumption (or (not x26857) x14963)
+:assumption (or (not x12444) (not x23865))
+:assumption (or (not x22699) (not x20197))
+:assumption (or (not x14311) (not x20601) (not x21815))
+:assumption (or x12262 x8363)
+:assumption (or x3455 (not x21523) (not x4050) x4020)
+:assumption (or x28803 (not x379))
+:assumption (or x29946 (not x29586))
+:assumption (or x9713 (not x4890))
+:assumption (or (not x29191) (not x15356))
+:assumption (or x2275 (not x28885))
+:assumption (or x18436 x23285)
+:assumption (or x27154 (not x17193))
+:assumption (or (not x3766) x22586)
+:assumption (or x27401 (not x4049) x12369 x19085 x1660 (not x19114) x12212 (not x30837) x4619)
+:assumption (or (not x7262) x17695)
+:assumption (or x28561 x11954)
+:assumption (or x20986 (not x9779))
+:assumption (or (not x25659) x22423 (not x5733))
+:assumption (or (not x30158) x20670)
+:assumption (or (not x17615) (not x1814) (not x6381) (not x28541))
+:assumption (or x18680 (not x26942))
+:assumption (or x24557 x6951 x26969 (not x13576))
+:assumption (or (not x9818) x20771)
+:assumption (or (not x11455) (not x16252) x29170)
+:assumption (or (not x23543) (not x5078))
+:assumption (or (not x8432) x31727)
+:assumption (or x5370 (not x17900))
+:assumption (or x27152 x18100)
+:assumption (or x2937 (not x455))
+:assumption (or (not x4504) (not x23886) x21808)
+:assumption (or x17380 x6278)
+:assumption (or x24837 x26037 x620)
+:assumption (or (not x1270) (not x26189))
+:assumption (or x28549 (not x9357))
+:assumption (or (not x24362) (not x5265))
+:assumption (or x9330 (not x9494))
+:assumption (or (not x14169) x14093)
+:assumption (or x29181 (not x4029))
+:assumption (or (not x5270) x22966)
+:assumption (or (not x24081) x29863)
+:assumption (or x6530 (not x3973))
+:assumption (or (not x378) x665)
+:assumption (or x14830 x23244)
+:assumption (or x16759 x26031)
+:assumption (or (not x19864) x16814)
+:assumption (or x27401 x4619 x3295 x30208 x1660 x12212 (not x19114) x19085 (not x4049))
+:assumption (or x10060 (not x11888))
+:assumption (or x6131 (not x6827))
+:assumption (or (not x10064) x15917 (not x17329))
+:assumption (or x18055 (not x21846))
+:assumption (or (not x22572) (not x20838))
+:assumption (or (not x177) x7701)
+:assumption (or (not x22221) (not x25594))
+:assumption (or (not x27742) x29424)
+:assumption (or x1599 (not x25089))
+:assumption (or (not x31742) x25684 (not x16304) (not x26360) x4816)
+:assumption (or x28204 x10887)
+:assumption (or x3835 x21361)
+:assumption (or (not x7652) x5296)
+:assumption (or (not x16470) (not x18879))
+:assumption (or (not x30710) (not x10595) x1393)
+:assumption (or x14052 x6274)
+:assumption (or x9671 x26546 (not x4190))
+:assumption (or (not x29113) (not x30838))
+:assumption (or (not x1884) (not x11661))
+:assumption (or (not x24562) (not x1181))
+:assumption (or x15586 x31782)
+:assumption (or (not x19152) (not x6966))
+:assumption (or (not x22129) x14756)
+:assumption (or (not x6344) (not x15709))
+:assumption (or x25581 x10673)
+:assumption (or (not x12696) (not x13271))
+:assumption (or (not x23957) (not x4114))
+:assumption (or x8002 x13293 x1958)
+:assumption (or x7769 x4309)
+:assumption (or x8677 x1095)
+:assumption (or (not x11860) x21101)
+:assumption (or (not x12137) x5316)
+:assumption (or x31681 (not x15066))
+:assumption (or x7609 (not x2283))
+:assumption (or (not x14144) x13670)
+:assumption (or (not x12016) x22090)
+:assumption (or x23117 x3304)
+:assumption (or (not x18097) x19714)
+:assumption (or x8183 x480)
+:assumption (or (not x17385) x2055)
+:assumption (or (not x13087) x6146)
+:assumption (or (not x1632) (not x20327) (not x29521) (not x20371) x8120 x18333 x1403)
+:assumption (or (not x4680) (not x7399))
+:assumption (or (not x20136) x21062)
+:assumption (or x13533 x1393)
+:assumption (or x26506 (not x30240) x143 (not x3201))
+:assumption (or x20389 (not x20577))
+:assumption (or x17580 (not x13275))
+:assumption (or (not x23723) x7645)
+:assumption (or (not x577) (not x9831))
+:assumption (or (not x30364) x7446)
+:assumption (or (not x15326) (not x17150))
+:assumption (or x31116 x3127)
+:assumption (or (not x9804) x13956 x8002 (not x23084) (not x5206))
+:assumption (or (not x28614) x24303 (not x5035) x27932 x25177 (not x14963) x23272 x25903)
+:assumption (or (not x9941) (not x17754))
+:assumption (or x28121 x8922 (not x2009))
+:assumption (or x6325 (not x23323))
+:assumption (or (not x2526) x6253)
+:assumption (or (not x13084) x22560)
+:assumption (or x11998 (not x11488))
+:assumption (or (not x4397) x25054 (not x3277))
+:assumption (or (not x2823) x20746)
+:assumption (or x1080 (not x27227))
+:assumption (or (not x22276) (not x3692))
+:assumption (or x14034 x19401)
+:assumption (or (not x20176) x16538)
+:assumption (or (not x8002) x27815)
+:assumption (or (not x30547) x23131)
+:assumption (or (not x964) x11547)
+:assumption (or (not x23530) (not x24769))
+:assumption (or x7437 x20490)
+:assumption (or (not x3740) (not x19868) (not x7643))
+:assumption (or (not x20042) (not x27126))
+:assumption (or x22742 x2526)
+:assumption (or x20558 (not x27292))
+:assumption (or x8522 (not x18907) x9329 (not x28268) x21712 x20253 x20360 (not x13556))
+:assumption (or (not x27676) (not x9423))
+:assumption (or (not x25878) (not x11042))
+:assumption (or x5291 x26713 (not x22222) x25423)
+:assumption (or x10591 (not x6381) (not x13576))
+:assumption (or x1268 (not x23))
+:assumption (or x19343 x18593 (not x7688) x27454 (not x30869))
+:assumption (or x21995 (not x16025))
+:assumption (or x17514 x31337)
+:assumption (or (not x3040) (not x498) (not x9008))
+:assumption (or x31571 x9329)
+:assumption (or (not x9550) (not x6686))
+:assumption (or (not x5534) (not x6378))
+:assumption (or x8002 (not x29718))
+:assumption (or (not x3500) x6575)
+:assumption (or (not x827) x29751 x13797)
+:assumption (or x8388 x626 x26637 x27966)
+:assumption (or (not x27007) (not x16025))
+:assumption (or (not x8002) x3540 x2967)
+:assumption (or (not x27776) (not x13956))
+:assumption (or x10349 x28170)
+:assumption (or x8002 (not x11836))
+:assumption (or (not x9049) (not x29952))
+:assumption (or x13477 (not x22432))
+:assumption (or (not x17269) x3946)
+:assumption (or (not x28466) x16850 x9640 (not x10072) x24313 x19940)
+:assumption (or x21426 x8541)
+:assumption (or (not x28857) (not x13154))
+:assumption (or x11628 (not x11556))
+:assumption (or x13586 (not x4056))
+:assumption (or x12306 (not x28890))
+:assumption (or (not x2944) (not x19333) x22369)
+:assumption (or (not x27640) (not x21329))
+:assumption (or (not x11061) (not x1582) x23060 (not x9954))
+:assumption (or (not x25878) x4681)
+:assumption (or x2985 (not x20482))
+:assumption (or (not x1865) (not x5523))
+:assumption (or x10387 x28810)
+:assumption (or x13135 x13387 (not x20708) x12127 (not x24644))
+:assumption (or (not x16252) (not x22579))
+:assumption (or x4271 x26824)
+:assumption (or x29677 x26897)
+:assumption (or (not x913) x31932)
+:assumption (or (not x4098) (not x22560) (not x20592) (not x21638) (not x30013) (not x12765))
+:assumption (or (not x13802) x31365)
+:assumption (or (not x13140) (not x9585))
+:assumption (or (not x13250) (not x9530))
+:assumption (or x14238 (not x24066) x10127 x22227 x635 (not x1990))
+:assumption (or x24211 (not x22269))
+:assumption (or (not x24797) (not x12531))
+:assumption (or x30475 (not x14053) x468)
+:assumption (or x24232 (not x6073))
+:assumption (or (not x23090) (not x22835))
+:assumption (or (not x13012) (not x22365) (not x23620) (not x1611))
+:assumption (or x10724 (not x13649) x10172 (not x18294) (not x16524) x11451 (not x6925) x7377)
+:assumption (or (not x26238) (not x12830))
+:assumption (or x1927 (not x31721))
+:assumption (or (not x3583) (not x17935))
+:assumption (or x17359 x25385)
+:assumption (or (not x3701) (not x19372))
+:assumption (or (not x11046) (not x20960) (not x169) x13489 x4181 (not x2538) (not x19729) (not x24642))
+:assumption (or (not x25201) (not x24692) (not x23180) (not x12191) x31782 x2545)
+:assumption (or (not x31406) x29706)
+:assumption (or (not x13182) x1393 (not x2939))
+:assumption (or x3081 x18644 x22306 x22495)
+:assumption (or x6193 (not x18469) x11112 x21815 (not x3098) x21681)
+:assumption (or (not x8399) (not x827))
+:assumption (or (not x13273) (not x17260))
+:assumption (or (not x6100) (not x27197) x953 (not x5369) x6251)
+:assumption (or x13415 x12615)
+:assumption (or (not x1040) (not x12735))
+:assumption (or (not x5386) x20447)
+:assumption (or x2375 x16510)
+:assumption (or (not x21755) x827)
+:assumption (or (not x15947) x6235)
+:assumption (or (not x14041) (not x15846))
+:assumption (or x9877 (not x22782))
+:assumption (or x16603 x9293)
+:assumption (or (not x18404) (not x10828))
+:assumption (or (not x11293) x10122)
+:assumption (or (not x25485) (not x4138) (not x22264) x30856 (not x28375))
+:assumption (or (not x31282) (not x22340))
+:assumption (or (not x21298) (not x11686) (not x17838))
+:assumption (or (not x3962) x1895)
+:assumption (or x6713 (not x8513))
+:assumption (or x30294 (not x13993) x6990)
+:assumption (or x29087 (not x31382))
+:assumption (or (not x27555) x14638)
+:assumption (or (not x17916) x16509)
+:assumption (or (not x6545) (not x20120) x10410)
+:assumption (or (not x12792) (not x13473))
+:assumption (or x29290 (not x8648))
+:assumption (or (not x15412) (not x5942))
+:assumption (or x31838 x14058 x21781)
+:assumption (or (not x12229) x142)
+:assumption (or (not x23279) (not x21244))
+:assumption (or (not x12144) (not x14578))
+:assumption (or x27233 x1486)
+:assumption (or (not x30417) (not x22930))
+:assumption (or x18773 x15)
+:assumption (or x29227 (not x12940))
+:assumption (or (not x6028) (not x1098))
+:assumption (or (not x12025) x18585)
+:assumption (or (not x6330) (not x29862))
+:assumption (or (not x17899) (not x12949) (not x25358) (not x15493) (not x12242) x5874 x19072 x1169)
+:assumption (or (not x6526) (not x15873))
+:assumption (or x17200 x5720)
+:assumption (or x11938 (not x29389))
+:assumption (or x22970 (not x26915))
+:assumption (or x15544 x3516)
+:assumption (or x26425 (not x19193))
+:assumption (or (not x2126) (not x18246))
+:assumption (or (not x480) (not x25869))
+:assumption (or x24438 (not x24074))
+:assumption (or x4928 (not x1908))
+:assumption (or (not x17525) x20047)
+:assumption (or (not x29945) (not x10378))
+:assumption (or (not x24163) (not x1246))
+:assumption (or (not x27855) (not x2943))
+:assumption (or (not x5422) (not x31245))
+:assumption (or x15123 x24331)
+:assumption (or (not x28023) (not x8875) x19785 (not x4134) (not x26598) x24800)
+:assumption (or (not x23244) (not x19351))
+:assumption (or x2650 (not x9008))
+:assumption (or x25717 x30954 x6239 (not x7789) (not x10397) x20867)
+:assumption (or x20949 x26922 x18432 (not x9396) x2460)
+:assumption (or x16809 (not x31719) x24196 (not x4966))
+:assumption (or (not x25659) x7737)
+:assumption (or (not x10) x20001 (not x10628))
+:assumption (or (not x20791) (not x18073))
+:assumption (or x22306 x22495 (not x5258))
+:assumption (or x14550 x28497)
+:assumption (or (not x27090) (not x6217) (not x27225))
+:assumption (or x19716 x12214)
+:assumption (or x14552 x28973 (not x5932))
+:assumption (or x12515 x822 (not x19081) x28314 x30864 (not x18839))
+:assumption (or x21786 (not x11780))
+:assumption (or x21301 x8224)
+:assumption (or (not x7707) x31855)
+:assumption (or x5567 (not x25495))
+:assumption (or (not x14455) x5872)
+:assumption (or (not x1819) (not x11018))
+:assumption (or (not x19163) x15520)
+:assumption (or (not x19793) (not x16745))
+:assumption (or x30138 (not x20791))
+:assumption (or (not x1587) (not x22310))
+:assumption (or (not x10077) (not x9296))
+:assumption (or (not x19590) x2793 (not x6803) x19992)
+:assumption (or (not x3001) (not x2395))
+:assumption (or (not x21026) x18292 (not x30072))
+:assumption (or x9031 x28228)
+:assumption (or x9073 x11306 x10481 (not x17187))
+:assumption (or x21229 (not x26747))
+:assumption (or (not x21344) (not x16607))
+:assumption (or x6913 (not x3712) x21653)
+:assumption (or (not x6351) (not x24721))
+:assumption (or x25386 (not x12981))
+:assumption (or x3892 x25557 (not x8963))
+:assumption (or x13893 (not x21067))
+:assumption (or x16422 x25319 x31417)
+:assumption (or (not x11232) x4471)
+:assumption (or x8238 x25457 x11375 x9982 (not x26739) (not x26769) x24936 x12016)
+:assumption (or (not x10389) x28914)
+:assumption (or (not x18003) (not x833))
+:assumption (or x5200 x28920)
+:assumption (or x16910 x11664)
+:assumption (or x13900 x2334)
+:assumption (or (not x2609) x28663)
+:assumption (or x4373 x30763)
+:assumption (or x4513 (not x17092))
+:assumption (or (not x27927) (not x21653))
+:assumption (or (not x8196) (not x6172))
+:assumption (or (not x31308) x29964 (not x16777) x11038 (not x23244) (not x19770))
+:assumption (or (not x24067) x2185 x6439)
+:assumption (or x18139 x26718)
+:assumption (or x29746 x28682)
+:assumption (or x2496 x5134)
+:assumption (or (not x6385) x31659)
+:assumption (or (not x19650) x15491)
+:assumption (or (not x5090) x26711)
+:assumption (or x11813 (not x29250))
+:assumption (or x8463 x1124)
+:assumption (or (not x31155) x24565)
+:assumption (or (not x8868) x11995)
+:assumption (or x26630 x21458)
+:assumption (or (not x30928) x22298 (not x16745) (not x10265))
+:assumption (or x25668 x20550)
+:assumption (or (not x27966) (not x26637))
+:assumption (or (not x3326) x15783)
+:assumption (or (not x9728) (not x31864))
+:assumption (or x24964 (not x27900))
+:assumption (or x24091 (not x748) (not x12676))
+:assumption (or x27783 x25915)
+:assumption (or (not x31749) (not x27335))
+:assumption (or (not x24432) (not x12864))
+:assumption (or (not x25007) x1129)
+:assumption (or (not x27795) (not x28986))
+:assumption (or (not x11744) x8722)
+:assumption (or (not x29455) x5528)
+:assumption (or (not x2381) x15584)
+:assumption (or x19633 (not x29482))
+:assumption (or x4259 x25551)
+:assumption (or x17544 (not x16780))
+:assumption (or x29326 (not x13913))
+:assumption (or (not x27261) (not x23399))
+:assumption (or x23467 (not x9805))
+:assumption (or x12263 x10064)
+:assumption (or (not x4306) (not x27091))
+:assumption (or x827 x12468)
+:assumption (or (not x1886) (not x24313))
+:assumption (or (not x31396) (not x26331) x11489 (not x8002))
+:assumption (or (not x6497) x1582)
+:assumption (or x14477 (not x11543))
+:assumption (or x23535 (not x26740))
+:assumption (or x12622 (not x3210))
+:assumption (or (not x10876) x9537)
+:assumption (or (not x1808) x6396)
+:assumption (or x10510 x21194)
+:assumption (or x5859 x26449 x22083 (not x10655))
+:assumption (or x5656 (not x20292))
+:assumption (or x24079 (not x21922))
+:assumption (or x13419 (not x26806))
+:assumption (or (not x3013) x15251)
+:assumption (or x10278 x1353)
+:assumption (or x15623 x3341)
+:assumption (or (not x29277) x4148)
+:assumption (or (not x27539) x24756 (not x29312))
+:assumption (or x5590 (not x31004))
+:assumption (or x9008 x19458)
+:assumption (or (not x13793) x17299 (not x6310) (not x1371) x27911 (not x6746) (not x1279))
+:assumption (or (not x4120) (not x17758))
+:assumption (or (not x18796) (not x15750))
+:assumption (or x9123 (not x1791))
+:assumption (or x27449 x14981)
+:assumption (or (not x25073) x8046)
+:assumption (or x8133 x22822)
+:assumption (or (not x18766) (not x2011))
+:assumption (or (not x5876) x26971)
+:assumption (or (not x12579) (not x19121))
+:assumption (or x10792 x21815)
+:assumption (or (not x19731) x28679)
+:assumption (or x24364 (not x17356))
+:assumption (or x5551 (not x11543))
+:assumption (or (not x27223) x17381)
+:assumption (or x13954 (not x3042))
+:assumption (or (not x23915) (not x14591))
+:assumption (or (not x8985) (not x15102) x31103 (not x29543) x4432 x2800)
+:assumption (or (not x8002) (not x11730) (not x5193))
+:assumption (or x15714 x19183)
+:assumption (or (not x17534) x20948)
+:assumption (or x7835 (not x22548) x6364 (not x9647) x24551 (not x2133))
+:assumption (or x30099 (not x3316))
+:assumption (or (not x6096) (not x913))
+:assumption (or (not x18042) x11562)
+:assumption (or x5076 (not x12762))
+:assumption (or (not x8590) x827)
+:assumption (or (not x6969) x28057)
+:assumption (or (not x12369) (not x1660))
+:assumption (or (not x16677) (not x19614))
+:assumption (or x16112 (not x19496) x1393)
+:assumption (or (not x23320) (not x6776) (not x25152) x15307 x10742 (not x16510))
+:assumption (or x21866 x28663)
+:assumption (or (not x23387) x23043)
+:assumption (or (not x28368) x8107)
+:assumption (or (not x16574) (not x30667))
+:assumption (or x28374 (not x1887))
+:assumption (or x26012 x25372)
+:assumption (or (not x17391) x25659 (not x11209))
+:assumption (or (not x19984) x21420 (not x762))
+:assumption (or (not x18042) (not x8555))
+:assumption (or (not x2063) (not x3399) x11617 x6332)
+:assumption (or x8869 (not x1897))
+:assumption (or x13139 (not x10899))
+:assumption (or (not x15307) (not x1229))
+:assumption (or x17882 (not x22484))
+:assumption (or (not x31604) (not x370))
+:assumption (or (not x2604) x24364)
+:assumption (or x12396 x11374)
+:assumption (or x3853 x5239)
+:assumption (or x15043 (not x16060))
+:assumption (or (not x16341) (not x83))
+:assumption (or (not x13252) (not x28877) (not x22495))
+:assumption (or x8284 x13224)
+:assumption (or x1393 x459 (not x27206))
+:assumption (or x5774 x26990)
+:assumption (or x9250 x16862)
+:assumption (or x15390 (not x22566))
+:assumption (or x11067 x641)
+:assumption (or (not x17288) x16814)
+:assumption (or x998 (not x11414))
+:assumption (or (not x218) x29200 x10128 x17322 (not x13704) x54 x18424 (not x24817) x22847)
+:assumption (or (not x19839) (not x16500))
+:assumption (or (not x16510) x25996)
+:assumption (or (not x17661) (not x6951) x13576 x6128)
+:assumption (or (not x14923) (not x10369) x21880 (not x8574) x28969)
+:assumption (or (not x3083) x2922)
+:assumption (or (not x11943) x18555)
+:assumption (or (not x21227) x23388)
+:assumption (or x9008 x9601)
+:assumption (or x21557 x3765)
+:assumption (or (not x6455) (not x21298))
+:assumption (or x18919 (not x11079))
+:assumption (or (not x24126) x1362 (not x5528) x30624 x13971 (not x9058))
+:assumption (or (not x21447) x3561 (not x28152) x8092 (not x22013) x10440 x20734 x3289)
+:assumption (or x4543 (not x5710))
+:assumption (or x5618 (not x17228) (not x28019) (not x23829) x29989)
+:assumption (or x27235 (not x23986) x6961 (not x6196) (not x3261) (not x10704) (not x28804) (not x28288))
+:assumption (or x19050 x25366)
+:assumption (or x14139 (not x12494))
+:assumption (or (not x3019) x1254)
+:assumption (or x24646 (not x26424))
+:assumption (or x177 x26528)
+:assumption (or x10303 x13746)
+:assumption (or (not x12578) (not x22433))
+:assumption (or x21076 (not x18990))
+:assumption (or x25149 (not x31466))
+:assumption (or (not x53) x25434)
+:assumption (or (not x6438) (not x29839))
+:assumption (or x8068 (not x21871) x24722 (not x24252) (not x20298))
+:assumption (or (not x19708) (not x549))
+:assumption (or (not x18426) x30916)
+:assumption (or x1158 (not x1741) x20728)
+:assumption (or x16510 x17040)
+:assumption (or x25454 x4251)
+:assumption (or x4018 (not x30311))
+:assumption (or x25910 (not x26354))
+:assumption (or x15206 x18293)
+:assumption (or x6360 (not x18972))
+:assumption (or x29503 x1292)
+:assumption (or (not x2587) (not x17083))
+:assumption (or (not x27963) (not x1297) x26895 (not x26824))
+:assumption (or (not x23643) x31413)
+:assumption (or (not x6459) (not x5640))
+:assumption (or x9208 x30342)
+:assumption (or x14099 (not x16609) (not x23244) (not x30327) x24081 (not x22956))
+:assumption (or (not x29307) x11109)
+:assumption (or (not x29582) (not x29442))
+:assumption (or (not x14054) (not x3808) x24952)
+:assumption (or (not x31471) (not x13434))
+:assumption (or x20187 x31603)
+:assumption (or x13415 (not x25333))
+:assumption (or x4715 (not x20813))
+:assumption (or (not x2592) x25872 (not x25784))
+:assumption (or (not x14455) x16374 x20667 (not x26987))
+:assumption (or x20250 (not x21619) x16485 (not x26467) (not x31185) (not x1297) x26826)
+:assumption (or x16945 (not x8395))
+:assumption (or (not x26047) x31400)
+:assumption (or (not x2736) (not x23255))
+:assumption (or (not x28530) x25907)
+:assumption (or x26747 x26647)
+:assumption (or x18053 x15444)
+:assumption (or x30692 (not x25992) (not x17109))
+:assumption (or (not x20945) x26860)
+:assumption (or (not x24310) x8002 x21024)
+:assumption (or (not x25425) x7908)
+:assumption (or x22521 (not x23244))
+:assumption (or (not x26496) x28458)
+:assumption (or x2813 x23414)
+:assumption (or (not x27915) (not x27755))
+:assumption (or x1154 x13307)
+:assumption (or (not x30617) x5126)
+:assumption (or x3673 x16869)
+:assumption (or x26825 (not x9548))
+:assumption (or (not x26126) (not x9217))
+:assumption (or x10428 (not x3821))
+:assumption (or (not x20660) x9957)
+:assumption (or x16648 x4266)
+:assumption (or (not x1490) x29612)
+:assumption (or x1761 x17930 x14609 (not x2866) (not x16400) (not x15570))
+:assumption (or x30112 x19412 (not x8586))
+:assumption (or x21815 (not x25034))
+:assumption (or (not x24275) (not x25373))
+:assumption (or (not x575) x26354 (not x98))
+:assumption (or (not x15447) x7227)
+:assumption (or (not x16374) x18518 (not x23210))
+:assumption (or x22996 (not x9531) (not x21815) (not x16510) x15917)
+:assumption (or x18575 (not x14848) x8672 (not x16617) x13018 (not x16874) (not x28707) x720)
+:assumption (or (not x28873) x25659 (not x31510))
+:assumption (or (not x3435) (not x6263))
+:assumption (or (not x17196) x1393)
+:assumption (or x18636 x27398)
+:assumption (or x26041 x19948 x18318)
+:assumption (or (not x26179) (not x4635))
+:assumption (or (not x4448) x9468)
+:assumption (or x30190 (not x15747))
+:assumption (or x21570 x12983 x22989 x18694 x208)
+:assumption (or (not x27537) x10140)
+:assumption (or (not x12045) x29173)
+:assumption (or (not x6682) (not x8622))
+:assumption (or x20135 (not x30582) (not x7022) (not x23977))
+:assumption (or x2246 (not x21759))
+:assumption (or x15254 (not x6921))
+:assumption (or (not x19955) (not x19990))
+:assumption (or x24617 x24436)
+:assumption (or (not x10670) x1758 x15278 x6745 (not x1306))
+:assumption (or x14354 x703)
+:assumption (or (not x16869) x31121)
+:assumption (or (not x29491) (not x15585))
+:assumption (or (not x12452) (not x3515))
+:assumption (or x26781 (not x21673))
+:assumption (or (not x10532) (not x1824))
+:assumption (or x27613 x30572)
+:assumption (or x15452 x26789 x17302 (not x12139))
+:assumption (or (not x24079) x72)
+:assumption (or (not x6149) (not x1582) (not x16510) (not x21815) x1395)
+:assumption (or x7990 (not x15902))
+:assumption (or (not x2315) (not x18579))
+:assumption (or (not x7752) (not x29796))
+:assumption (or x28306 x23525)
+:assumption (or x19039 x18267)
+:assumption (or x1183 (not x21815))
+:assumption (or x31829 x6900 x28541 x2655)
+:assumption (or x4161 (not x12657) (not x23238) (not x13987) x20564 x9127 (not x17586) (not x23430) (not x5357))
+:assumption (or x27941 (not x4016) (not x18602) x9828 x12704 x21852)
+:assumption (or x19510 (not x26259))
+:assumption (or (not x23244) x457)
+:assumption (or (not x2819) x25659)
+:assumption (or x18352 x1136)
+:assumption (or (not x23444) x4343)
+:assumption (or x27169 x1768)
+:assumption (or (not x12045) x464 (not x806))
+:assumption (or (not x28261) (not x17543))
+:assumption (or (not x14703) (not x13519) x9008)
+:assumption (or (not x9240) (not x26935))
+:assumption (or x30680 (not x17440))
+:assumption (or x12708 x3997)
+:assumption (or (not x25579) x23969)
+:assumption (or (not x11567) x16404)
+:assumption (or (not x11448) x17222)
+:assumption (or x6960 (not x30725))
+:assumption (or (not x22193) (not x4281))
+:assumption (or x8107 x23945)
+:assumption (or (not x3388) (not x3984))
+:assumption (or x5085 x3286)
+:assumption (or (not x30236) x28386)
+:assumption (or x17688 (not x20693))
+:assumption (or (not x3351) (not x250))
+:assumption (or (not x30734) x28279)
+:assumption (or x3963 x21672)
+:assumption (or x10637 x2250 (not x11637))
+:assumption (or (not x16438) x22017 (not x22071) (not x198) x22719 (not x31521))
+:assumption (or x953 x23502)
+:assumption (or (not x15482) x14271)
+:assumption (or (not x19958) x29781)
+:assumption (or (not x14460) (not x16082))
+:assumption (or x6882 (not x4623))
+:assumption (or (not x31839) x28835)
+:assumption (or x14450 (not x14455))
+:assumption (or x30407 x12372)
+:assumption (or (not x20178) x10358)
+:assumption (or x20380 x18271)
+:assumption (or (not x29171) x13772 x5106)
+:assumption (or (not x23811) (not x25476))
+:assumption (or x5801 (not x12617))
+:assumption (or x15389 (not x7897))
+:assumption (or (not x22472) x11094)
+:assumption (or x16510 (not x7475))
+:assumption (or (not x30515) x30440 x20329 x31431)
+:assumption (or x3643 (not x23462) (not x21298) x20228)
+:assumption (or x26274 (not x8961))
+:assumption (or x4057 (not x16304) x7924)
+:assumption (or (not x7698) x4013)
+:assumption (or (not x2850) x16025)
+:assumption (or x6334 (not x15340))
+:assumption (or (not x319) x18810)
+:assumption (or x20087 x25392)
+:assumption (or x17093 (not x44))
+:assumption (or x21519 (not x362))
+:assumption (or (not x4360) x5323)
+:assumption (or (not x12165) (not x16276))
+:assumption (or (not x21047) (not x24656))
+:assumption (or (not x1084) (not x29071))
+:assumption (or (not x14086) (not x4479))
+:assumption (or x31626 x25323)
+:assumption (or (not x28441) (not x20224))
+:assumption (or x22608 x14839 (not x3492))
+:assumption (or (not x8866) (not x26107) (not x13250) (not x9423))
+:assumption (or (not x27772) x31134 x22708 (not x27869))
+:assumption (or (not x4207) x17641)
+:assumption (or x15034 (not x11645))
+:assumption (or x4303 x8686)
+:assumption (or x7012 x29135)
+:assumption (or x31663 (not x5382) (not x28968) x3860 (not x3016))
+:assumption (or (not x122) (not x27105))
+:assumption (or x22959 x15173)
+:assumption (or x2977 x7454)
+:assumption (or (not x9910) x2042 x2574)
+:assumption (or (not x15844) (not x5305))
+:assumption (or (not x11415) x23587 (not x6542) (not x9738))
+:assumption (or x17302 x18712 (not x21202) (not x4798))
+:assumption (or x11552 (not x6303))
+:assumption (or (not x26432) x17359 (not x709))
+:assumption (or x590 x2669 x16025)
+:assumption (or (not x33) x19864)
+:assumption (or (not x17377) x10484)
+:assumption (or x23244 x25504 (not x26284) x24058 x8002 x13956)
+:assumption (or x2449 x15789)
+:assumption (or (not x31791) (not x21070) (not x17235) (not x24355))
+:assumption (or (not x29153) x21895 x12952 x9940 (not x22130))
+:assumption (or x3174 (not x13265))
+:assumption (or (not x8602) x30081 (not x29074))
+:assumption (or x23186 x31885)
+:assumption (or (not x12923) x9860 (not x1367) x27597)
+:assumption (or (not x13757) (not x25224))
+:assumption (or x24795 (not x5528))
+:assumption (or x18777 (not x2346) (not x6896) x19115 x16256 (not x2723) (not x17009))
+:assumption (or (not x9914) (not x12757))
+:assumption (or x27460 x14412)
+:assumption (or x21344 (not x12587))
+:assumption (or (not x1536) (not x9970))
+:assumption (or (not x10399) x4822)
+:assumption (or (not x17541) (not x30124))
+:assumption (or (not x11355) (not x17277))
+:assumption (or (not x26035) (not x19183) x28161)
+:assumption (or x7156 x9062)
+:assumption (or x31106 x2029)
+:assumption (or x17542 x26061)
+:assumption (or x23265 x6037)
+:assumption (or x16994 (not x17685))
+:assumption (or (not x18268) (not x15626))
+:assumption (or (not x23244) (not x6034) x3205 x7366 x1227 (not x19095))
+:assumption (or x10237 x30396)
+:assumption (or x16884 (not x26432))
+:assumption (or x18886 (not x23799))
+:assumption (or x16039 x12426)
+:assumption (or x4005 x8002 x8212)
+:assumption (or x4527 (not x24792))
+:assumption (or x5074 x21715)
+:assumption (or x28826 (not x8721) x12913 (not x244))
+:assumption (or x27283 (not x24441))
+:assumption (or (not x24756) (not x7029))
+:assumption (or x1408 x17934)
+:assumption (or x17364 (not x5471))
+:assumption (or x14463 (not x12328))
+:assumption (or (not x28671) (not x23929))
+:assumption (or x12045 (not x11782))
+:assumption (or x8586 x25637)
+:assumption (or (not x6891) (not x27754))
+:assumption (or x25774 x18831)
+:assumption (or x21463 (not x24976))
+:assumption (or x2062 (not x22898))
+:assumption (or (not x19211) x19335)
+:assumption (or x25240 x8734 x18042 (not x31085) x10264 x14185)
+:assumption (or x31043 x28546)
+:assumption (or x7167 (not x13956))
+:assumption (or x12790 x10770)
+:assumption (or x14819 (not x23094) x30407 x6878)
+:assumption (or x8264 x21595)
+:assumption (or (not x24171) (not x17191) x11930 (not x17769) (not x12366) (not x23482) (not x14361) (not x10314) (not x17147))
+:assumption (or (not x12809) x19949 (not x8002))
+:assumption (or (not x12127) (not x27426))
+:assumption (or (not x15595) x18140)
+:assumption (or x26307 x1635)
+:assumption (or (not x14558) (not x21371) (not x2749) (not x29369) x10663 (not x17434))
+:assumption (or (not x29448) x9928)
+:assumption (or (not x21380) (not x10329) x8002)
+:assumption (or (not x5802) (not x14839))
+:assumption (or x17075 x9387 x218 x2307)
+:assumption (or x12842 x21381 (not x9398) x12400)
+:assumption (or x28410 x31241 (not x20258) x12796 (not x26816) (not x18003))
+:assumption (or x3467 x15210)
+:assumption (or (not x28885) x24756 x13646 (not x9811))
+:assumption (or x3782 (not x20701))
+:assumption (or x27955 x2836 (not x25741) x17070 x7693 x12210)
+:assumption (or x6561 (not x28744))
+:assumption (or (not x24120) x8002)
+:assumption (or (not x21827) x21040)
+:assumption (or (not x16204) x23399 (not x3103))
+:assumption (or (not x19317) x25834)
+:assumption (or (not x12842) (not x31829))
+:assumption (or (not x21353) (not x11611) (not x22019))
+:assumption (or (not x18261) (not x14494))
+:assumption (or (not x21502) (not x17378))
+:assumption (or (not x30348) x12578 (not x16805))
+:assumption (or (not x26242) (not x30002) (not x10057) x30887)
+:assumption (or (not x22198) (not x9386))
+:assumption (or x8365 x7322)
+:assumption (or (not x8918) x29353)
+:assumption (or x24036 (not x4741))
+:assumption (or x3242 x7395)
+:assumption (or (not x18283) x23328)
+:assumption (or x22731 x30751)
+:assumption (or (not x10036) (not x17302) (not x18764))
+:assumption (or (not x20627) x23067)
+:assumption (or x23643 x11356)
+:assumption (or (not x13980) (not x24626) (not x17225) (not x3107) (not x24712) (not x29774) x15047 (not x29816) (not x10561))
+:assumption (or (not x18660) (not x6318) (not x31896) x520 x27450)
+:assumption (or (not x11406) (not x6507))
+:assumption (or x2328 x252)
+:assumption (or x9531 x22917 x31917 x25764)
+:assumption (or x21287 (not x27481) (not x8002))
+:assumption (or x6574 x8009)
+:assumption (or x4095 x22187)
+:assumption (or (not x30307) (not x16003) (not x26732))
+:assumption (or (not x12212) (not x15479))
+:assumption (or (not x30810) (not x21931))
+:assumption (or (not x9820) (not x31395))
+:assumption (or x1706 x29842)
+:assumption (or x21298 (not x8291))
+:assumption (or x24213 x444)
+:assumption (or x11422 (not x27912))
+:assumption (or (not x20655) (not x6381))
+:assumption (or (not x28885) (not x4385) (not x8440) (not x30474) (not x1594) x5999 x15270)
+:assumption (or x5758 x13575)
+:assumption (or (not x11742) (not x10287))
+:assumption (or x3891 x14627)
+:assumption (or (not x17542) x28439)
+:assumption (or x6274 (not x426))
+:assumption (or (not x17367) x22892)
+:assumption (or (not x1496) x3670 (not x25294))
+:assumption (or x7419 (not x24650))
+:assumption (or (not x16088) x28242)
+:assumption (or (not x26985) x5339)
+:assumption (or (not x28499) x3374)
+:assumption (or x17397 (not x6746))
+:assumption (or (not x14637) x11792)
+:assumption (or x30179 (not x28))
+:assumption (or x29141 x1771)
+:assumption (or (not x13331) x29867)
+:assumption (or (not x17374) x29138 (not x4674) (not x18086) (not x12396))
+:assumption (or x2256 (not x14086))
+:assumption (or x12604 (not x5573))
+:assumption (or x24094 x5778)
+:assumption (or (not x17128) x25438)
+:assumption (or (not x10932) (not x22693) x17264 (not x5948))
+:assumption (or x27723 (not x23599))
+:assumption (or x7690 x11262 (not x16556))
+:assumption (or (not x29589) (not x24009))
+:assumption (or (not x7215) (not x17711))
+:assumption (or (not x7903) (not x22740))
+:assumption (or x25275 x7986 x22634 (not x7728) x11298 (not x3090) x6149 x14516)
+:assumption (or (not x15426) (not x20334))
+:assumption (or (not x3782) x17522 (not x22376) x25366)
+:assumption (or x25653 x17288 (not x27537))
+:assumption (or (not x13679) (not x14739))
+:assumption (or x16549 x24067)
+:assumption (or (not x16343) (not x7924))
+:assumption (or x8277 (not x9117))
+:assumption (or x19508 (not x13069))
+:assumption (or (not x24717) (not x3649))
+:assumption (or (not x8878) (not x16003))
+:assumption (or x463 x2807)
+:assumption (or x23288 x9019)
+:assumption (or x25519 (not x8614) x29097 (not x15916))
+:assumption (or x4553 x27309)
+:assumption (or (not x27732) x5993 x13381 (not x30954) x21152)
+:assumption (or (not x9008) (not x21941))
+:assumption (or x1953 x6392)
+:assumption (or (not x24575) x14839)
+:assumption (or x25364 x1919)
+:assumption (or (not x26897) x28153)
+:assumption (or (not x13956) (not x19977))
+:assumption (or (not x29567) x22855)
+:assumption (or (not x20409) (not x2042))
+:assumption (or (not x12126) x11468)
+:assumption (or x26197 (not x10621))
+:assumption (or (not x21257) x23244 x8002 (not x24819))
+:assumption (or (not x24948) x4017)
+:assumption (or (not x4098) (not x19777) x20086 x5295)
+:assumption (or x22533 x28276)
+:assumption (or x28679 x24285)
+:assumption (or x30429 (not x15557) x13324 x19059 x28912 (not x10685) x24954 x16311)
+:assumption (or (not x14687) (not x21567))
+:assumption (or (not x24324) (not x19693))
+:assumption (or x30196 (not x7854))
+:assumption (or x27246 x24586)
+:assumption (or x30271 x5487)
+:assumption (or x24970 x10541)
+:assumption (or (not x3617) (not x14245))
+:assumption (or (not x28230) (not x12040))
+:assumption (or x21607 (not x27606))
+:assumption (or x28628 x30113)
+:assumption (or (not x4826) (not x11657) x17453 x6594 (not x17545) x9434)
+:assumption (or (not x5970) x13656)
+:assumption (or x27939 (not x31169))
+:assumption (or (not x252) x12161 x20520 x2278)
+:assumption (or x29571 (not x30096))
+:assumption (or x25286 (not x8480))
+:assumption (or (not x29823) (not x8195))
+:assumption (or (not x10709) (not x28923))
+:assumption (or (not x25973) (not x21298) x10911 x25781)
+:assumption (or (not x25884) (not x21046))
+:assumption (or (not x4682) (not x1682))
+:assumption (or x12555 x15785)
+:assumption (or (not x6491) (not x25760))
+:assumption (or (not x20278) (not x15626))
+:assumption (or x5275 x5767)
+:assumption (or x13529 (not x15187))
+:assumption (or (not x25659) (not x29412))
+:assumption (or x3249 (not x6010))
+:assumption (or (not x28784) x28556)
+:assumption (or x25818 (not x24481))
+:assumption (or x16510 (not x20141))
+:assumption (or (not x18004) x18555 (not x24756) x29312 (not x22299) (not x25224))
+:assumption (or x15125 (not x26863))
+:assumption (or x21801 (not x1465))
+:assumption (or (not x227) (not x1240) (not x30887))
+:assumption (or (not x7128) x2128)
+:assumption (or x1534 (not x17302))
+:assumption (or (not x6351) x13267)
+:assumption (or (not x4202) x10073 (not x21746) (not x28033) x18375 (not x8371) (not x2524) (not x24446))
+:assumption (or (not x23576) (not x10044))
+:assumption (or (not x21497) (not x23355))
+:assumption (or (not x9713) x24182)
+:assumption (or x17359 (not x13956) (not x16206) x8002 x21957)
+:assumption (or (not x12001) (not x28634))
+:assumption (or (not x25281) x5041)
+:assumption (or x8717 (not x16991))
+:assumption (or (not x14699) x11258)
+:assumption (or x25659 x5992)
+:assumption (or x9575 (not x14310))
+:assumption (or x13255 (not x16396))
+:assumption (or x10798 (not x5817))
+:assumption (or x8716 (not x22882))
+:assumption (or (not x11590) x2517)
+:assumption (or (not x17972) (not x23941))
+:assumption (or x2301 x3537)
+:assumption (or (not x23754) (not x20118))
+:assumption (or (not x11693) x19353)
+:assumption (or (not x28183) x31297)
+:assumption (or (not x25465) (not x17908))
+:assumption (or (not x11049) x2550)
+:assumption (or x19139 x29485)
+:assumption (or x223 x10430)
+:assumption (or x13695 x22553)
+:assumption (or x5195 (not x10028) x24471)
+:assumption (or (not x15483) (not x9562) (not x12397) x28034 x28611 (not x10252) (not x3739))
+:assumption (or (not x1129) (not x2314) x8002)
+:assumption (or (not x20961) x337 (not x4555) x25927 x3728 (not x18333) x16999 (not x2383))
+:assumption (or x30431 x23307)
+:assumption (or (not x13373) x4058 (not x4828) (not x16707))
+:assumption (or x17804 (not x4015))
+:assumption (or x26761 x15000)
+:assumption (or x6306 x31674)
+:assumption (or x23436 x24372)
+:assumption (or (not x28128) x23903)
+:assumption (or (not x25835) (not x18316) x31114)
+:assumption (or x24756 x517)
+:assumption (or x14839 x30700 (not x22894))
+:assumption (or (not x1676) x976)
+:assumption (or x6657 x9962)
+:assumption (or (not x25752) x31464)
+:assumption (or (not x4309) (not x27968))
+:assumption (or (not x21965) (not x7964))
+:assumption (or x25684 x3341 x14646 (not x7581))
+:assumption (or x10946 x18069)
+:assumption (or x19782 (not x23809))
+:assumption (or (not x26854) (not x13956))
+:assumption (or (not x18963) (not x10884))
+:assumption (or x217 x11402)
+:assumption (or (not x29606) x16025 x20565)
+:assumption (or (not x19428) (not x1468))
+:assumption (or (not x7613) x9965)
+:assumption (or (not x29982) (not x17028))
+:assumption (or x12181 x21502)
+:assumption (or (not x1538) (not x11792))
+:assumption (or (not x8513) x22525)
+:assumption (or (not x11010) (not x1393))
+:assumption (or x3329 (not x4428))
+:assumption (or (not x10503) (not x9409))
+:assumption (or x12896 x26487)
+:assumption (or (not x31581) (not x15519))
+:assumption (or x3089 x4136)
+:assumption (or x5921 (not x16606))
+:assumption (or x9152 x21803)
+:assumption (or (not x11886) (not x12289) (not x12113))
+:assumption (or x17894 x6224)
+:assumption (or x7427 (not x2622))
+:assumption (or (not x4277) x8016)
+:assumption (or x31314 (not x8755))
+:assumption (or (not x867) x1955)
+:assumption (or x19877 x27392)
+:assumption (or x25917 x24107)
+:assumption (or (not x10060) (not x18623) x8002 x1493 x13956 x23244)
+:assumption (or (not x2996) x20239)
+:assumption (or (not x14618) (not x16640))
+:assumption (or (not x25921) (not x19435) x17014 x1210 (not x8807))
+:assumption (or (not x18484) x6371)
+:assumption (or (not x46) (not x29190))
+:assumption (or x7959 (not x7079))
+:assumption (or (not x30855) (not x26914))
+:assumption (or (not x9195) x10912)
+:assumption (or x28724 x24411 x17543 x23849 x1119 (not x157) x1948 x18859)
+:assumption (or x19677 x31423 (not x27496))
+:assumption (or x18580 (not x27032))
+:assumption (or (not x10282) x8026)
+:assumption (or x18286 (not x4197) (not x4685) (not x5685))
+:assumption (or x4835 x9460)
+:assumption (or x2720 x5537)
+:assumption (or x17847 (not x3307))
+:assumption (or x21386 (not x22125))
+:assumption (or (not x8358) (not x23854))
+:assumption (or (not x20196) x19925)
+:assumption (or x20873 x29110 (not x20923))
+:assumption (or (not x7328) (not x23984))
+:assumption (or (not x21815) x19567)
+:assumption (or (not x30353) x13320)
+:assumption (or x19975 (not x14309) x10936 x7242 x18039 x24198 (not x16929) (not x13018) (not x15919))
+:assumption (or x11472 (not x7259))
+:assumption (or x12659 x12017)
+:assumption (or x17176 (not x22972))
+:assumption (or x9574 x4095)
+:assumption (or x27093 (not x21266))
+:assumption (or (not x29337) x30550)
+:assumption (or (not x29590) x10801)
+:assumption (or x11963 x12794)
+:assumption (or (not x8961) x5886 (not x10063))
+:assumption (or (not x23681) x31719)
+:assumption (or x26318 x23160)
+:assumption (or x5528 x3345)
+:assumption (or (not x25499) (not x6130))
+:assumption (or x13028 x28211)
+:assumption (or x21697 x20035 (not x30757) (not x7442))
+:assumption (or x793 x1927)
+:assumption (or (not x22503) (not x22340))
+:assumption (or x17137 x29312)
+:assumption (or x12383 x31829)
+:assumption (or (not x187) x22665)
+:assumption (or x19958 (not x29781))
+:assumption (or x22229 (not x8357))
+:assumption (or x4680 (not x29128))
+:assumption (or x8906 x31412)
+:assumption (or x29440 (not x6439))
+:assumption (or (not x27776) (not x8002))
+:assumption (or (not x2373) x10918)
+:assumption (or x2271 (not x14432))
+:assumption (or x6617 (not x18859))
+:assumption (or x18107 (not x12588))
+:assumption (or x3263 x14999)
+:assumption (or (not x30803) (not x4513) (not x8724) x23244 x8002)
+:assumption (or (not x30856) x22264)
+:assumption (or (not x14010) x11939)
+:assumption (or x1928 (not x11198))
+:assumption (or (not x16925) (not x9649) x12690 (not x19927) (not x19602) (not x7492) x16857)
+:assumption (or x11131 x2655)
+:assumption (or x7708 x14265)
+:assumption (or (not x28339) x21013)
+:assumption (or x397 x19482)
+:assumption (or (not x4206) (not x29509))
+:assumption (or (not x25196) x5163 (not x2801) x5200 (not x12517) (not x20536) (not x5498) x15017 (not x7947) x28691)
+:assumption (or x25230 x20077)
+:assumption (or (not x29331) (not x7691) x20086 (not x19777))
+:assumption (or (not x20928) x1393)
+:assumption (or (not x31289) x21881 (not x22529) (not x29483) (not x23348) (not x818))
+:assumption (or x16510 x12242 (not x19448))
+:assumption (or (not x20791) (not x26897))
+:assumption (or x8086 x30987)
+:assumption (or x3646 (not x24030))
+:assumption (or x4854 (not x675) (not x568))
+:assumption (or (not x5528) x28839)
+:assumption (or x31865 (not x1133))
+:assumption (or x25379 x23244)
+:assumption (or (not x29368) x10480 (not x16741))
+:assumption (or x13956 (not x10578))
+:assumption (or x211 (not x17878))
+:assumption (or (not x4236) x4574)
+:assumption (or x11079 x6754)
+:assumption (or (not x26507) x20060)
+:assumption (or (not x22816) (not x3900))
+:assumption (or (not x30129) (not x17609))
+:assumption (or (not x6740) x28043 x5761 (not x27324) x20461)
+:assumption (or (not x8002) x8761)
+:assumption (or x30089 x30457)
+:assumption (or (not x1308) x28768)
+:assumption (or x26858 x4381)
+:assumption (or x28494 (not x4691))
+:assumption (or (not x6874) x23141 (not x11419) x1381 x27030 x1393 x13812 (not x7410))
+:assumption (or (not x20525) x18996)
+:assumption (or x5885 (not x23870))
+:assumption (or (not x18707) x22091)
+:assumption (or (not x17855) x2683)
+:assumption (or x13609 (not x16754) x30447 (not x31134) (not x27811) (not x16506) x10082 (not x14682))
+:assumption (or (not x6153) (not x29676))
+:assumption (or x18825 (not x560))
+:assumption (or (not x20950) x11167)
+:assumption (or x17379 x30407)
+:assumption (or x20188 (not x18179))
+:assumption (or (not x8092) (not x4285))
+:assumption (or x23586 (not x1169))
+:assumption (or x15898 (not x19201))
+:assumption (or (not x22576) x31119)
+:assumption (or (not x31295) x11288)
+:assumption (or (not x24551) (not x6364))
+:assumption (or (not x18395) x7055)
+:assumption (or x20794 x20612)
+:assumption (or x22514 (not x21653))
+:assumption (or x3090 x24558)
+:assumption (or x2219 x13256)
+:assumption (or x17978 x8825 x20959)
+:assumption (or x16025 x22597 x6596)
+:assumption (or x12023 x4656 x19070 x27801)
+:assumption (or (not x22529) x11660 x29483 (not x818) (not x31289) (not x21881))
+:assumption (or (not x2694) x8434)
+:assumption (or x3160 x25779)
+:assumption (or x6650 x17357)
+:assumption (or x30551 (not x26454))
+:assumption (or (not x6135) x29685)
+:assumption (or x18572 x19465)
+:assumption (or x22905 (not x16025))
+:assumption (or (not x4658) (not x6456) (not x21574))
+:assumption (or x23385 (not x14151))
+:assumption (or (not x15557) (not x24210))
+:assumption (or (not x19547) x1531)
+:assumption (or (not x1271) x8413)
+:assumption (or x10620 (not x23244))
+:assumption (or x4915 x17977 x4972 (not x30780) x23521 x1393 x22315 x5977)
+:assumption (or x12082 x15817)
+:assumption (or x17271 (not x18823))
+:assumption (or (not x20287) (not x3503) (not x27393))
+:assumption (or x16168 (not x9118))
+:assumption (or x2591 (not x12408))
+:assumption (or x10302 (not x7387))
+:assumption (or x18444 x30812)
+:assumption (or (not x14994) (not x555))
+:assumption (or x931 x4691)
+:assumption (or (not x23111) (not x17272))
+:assumption (or (not x839) x30957)
+:assumption (or (not x12346) x11206)
+:assumption (or (not x17631) (not x358) (not x14656) (not x2703) (not x6149))
+:assumption (or x21675 (not x1393) x22765)
+:assumption (or (not x27127) x2115 x1424 x16510 x10909)
+:assumption (or x3547 (not x25184))
+:assumption (or (not x29677) (not x13911) (not x26897))
+:assumption (or (not x3448) x27942)
+:assumption (or x22846 (not x547))
+:assumption (or (not x7760) (not x26342))
+:assumption (or (not x5528) (not x21956))
+:assumption (or x27644 x19892)
+:assumption (or (not x6833) (not x401) (not x6953) (not x12589) (not x18222))
+:assumption (or (not x5005) (not x1052))
+:assumption (or x2224 x9778)
+:assumption (or x31626 x14277)
+:assumption (or (not x11013) (not x13276))
+:assumption (or (not x6092) (not x13653))
+:assumption (or x3198 (not x15416))
+:assumption (or x28775 (not x9152))
+:assumption (or x31381 (not x2050))
+:assumption (or (not x23250) x15078)
+:assumption (or x29915 x28460)
+:assumption (or (not x20072) x12045)
+:assumption (or x21300 (not x7925))
+:assumption (or (not x28342) x3871)
+:assumption (or (not x17188) (not x28065))
+:assumption (or x17110 (not x6112))
+:assumption (or (not x3996) (not x1228))
+:assumption (or x9394 (not x13784))
+:assumption (or x20394 (not x267))
+:assumption (or x31549 x1587 x879 x23952 x20457)
+:assumption (or x18958 (not x19967))
+:assumption (or x2882 (not x22515))
+:assumption (or x3805 (not x2278))
+:assumption (or x15875 (not x29285))
+:assumption (or (not x8204) x11294)
+:assumption (or x3435 x17798)
+:assumption (or (not x8647) x30028)
+:assumption (or (not x7524) x9228)
+:assumption (or x30133 (not x4277))
+:assumption (or (not x7868) (not x3435))
+:assumption (or (not x16352) (not x17481))
+:assumption (or (not x26970) (not x29417))
+:assumption (or (not x2210) x28719)
+:assumption (or (not x6713) x26986 (not x22525) x22360 (not x5798))
+:assumption (or x10505 x31108)
+:assumption (or (not x15786) x8220)
+:assumption (or (not x19783) (not x1542) x6780 (not x5528) (not x9008))
+:assumption (or (not x25132) (not x22106))
+:assumption (or x20001 (not x1383))
+:assumption (or x14709 x18771)
+:assumption (or (not x16080) x24732 x918 (not x26825) x23032)
+:assumption (or x12882 (not x10785))
+:assumption (or x26811 (not x1251) (not x5544))
+:assumption (or x11497 x489)
+:assumption (or (not x30224) x23787 (not x8002) x12386)
+:assumption (or (not x25030) (not x769))
+:assumption (or (not x30407) (not x6720) (not x12372))
+:assumption (or x19864 x19268)
+:assumption (or x10055 (not x10838) x24989 (not x12486) x7504 x18042)
+:assumption (or x5283 (not x26862))
+:assumption (or (not x13018) x24430)
+:assumption (or (not x8740) x991)
+:assumption (or (not x25655) (not x17800))
+:assumption (or x13610 (not x17765))
+:assumption (or x16999 (not x3058))
+:assumption (or (not x2393) (not x8621))
+:assumption (or (not x9520) (not x16799))
+:assumption (or x20799 x3933)
+:assumption (or x11107 x20928)
+:assumption (or x27979 (not x14591) x25487 x2541 x7735 (not x21350) (not x11120) x18894)
+:assumption (or (not x27537) (not x7339) (not x29706))
+:assumption (or (not x9994) x10874)
+:assumption (or (not x26979) x23616 (not x30646) x4833)
+:assumption (or (not x2173) x23862)
+:assumption (or x3957 (not x9008))
+:assumption (or (not x3833) x17282 x13049)
+:assumption (or x8919 x29032 (not x4560) x3670 (not x18594))
+:assumption (or (not x28681) x27593 x26061)
+:assumption (or (not x30485) (not x25471))
+:assumption (or (not x6247) x26107)
+:assumption (or x30400 x31787)
+:assumption (or x7494 x20704)
+:assumption (or x12293 (not x4236))
+:assumption (or (not x26992) (not x19893))
+:assumption (or x27953 x22531)
+:assumption (or x17223 x9439)
+:assumption (or (not x3864) (not x154))
+:assumption (or x2240 x9238 (not x14591) x15795)
+:assumption (or x27989 (not x22531))
+:assumption (or (not x17026) (not x17447))
+:assumption (or x19704 (not x6869))
+:assumption (or x6870 (not x17257))
+:assumption (or (not x22177) (not x31534) (not x9276) x399)
+:assumption (or (not x7403) (not x25503))
+:assumption (or x9927 x29094)
+:assumption (or (not x19536) x2246)
+:assumption (or (not x21646) (not x27525) (not x1052) x28328)
+:assumption (or (not x12127) x10140)
+:assumption (or (not x23380) (not x3410))
+:assumption (or x18293 x12481 x9274 (not x28191))
+:assumption (or x9838 x15078)
+:assumption (or x6262 (not x10701))
+:assumption (or (not x3030) (not x26727))
+:assumption (or (not x7392) x18245)
+:assumption (or x27784 (not x15500))
+:assumption (or (not x25720) x19992 x13043 x4538)
+:assumption (or (not x1031) x12663)
+:assumption (or (not x31511) (not x22509) x2177 (not x1056) (not x16264) x20008 (not x18186) x674 x14583)
+:assumption (or x25645 x18672)
+:assumption (or (not x25064) (not x31004))
+:assumption (or (not x18538) (not x15354))
+:assumption (or x8890 (not x10761))
+:assumption (or x30277 (not x29997))
+:assumption (or (not x9224) x15744)
+:assumption (or x3812 (not x19928))
+:assumption (or (not x8526) x10133)
+:assumption (or (not x292) x26270)
+:assumption (or (not x18404) (not x11116))
+:assumption (or x23361 x16025 (not x20700))
+:assumption (or x29386 x2799)
+:assumption (or (not x24006) x13457)
+:assumption (or (not x3966) (not x8637))
+:assumption (or (not x30626) x19851 (not x1393))
+:assumption (or (not x11788) x23471)
+:assumption (or x12205 (not x25402))
+:assumption (or (not x22315) (not x4972))
+:assumption (or (not x15266) x403)
+:assumption (or (not x23495) (not x28646))
+:assumption (or x10011 (not x20092))
+:assumption (or (not x24756) (not x10732))
+:assumption (or (not x23828) x22117)
+:assumption (or x9973 (not x12146))
+:assumption (or x24855 (not x4375))
+:assumption (or (not x740) (not x31873))
+:assumption (or (not x28592) (not x6546))
+:assumption (or x24026 x7537)
+:assumption (or x16892 (not x21822))
+:assumption (or x615 x5665)
+:assumption (or (not x31600) x6059)
+:assumption (or x12938 (not x18376))
+:assumption (or x17555 (not x16216))
+:assumption (or (not x22479) (not x13139) x10899 x15621)
+:assumption (or x1547 x20410)
+:assumption (or (not x1074) (not x11059))
+:assumption (or x11696 x9838)
+:assumption (or x10674 x22136 x15292 x20340 (not x2027) x9087 (not x17557) x12247 x448)
+:assumption (or (not x8093) x3299)
+:assumption (or (not x18476) (not x21473))
+:assumption (or (not x23495) x16907)
+:assumption (or x29213 (not x5826))
+:assumption (or x19847 (not x21787))
+:assumption (or x14349 x10971)
+:assumption (or (not x27224) (not x9701))
+:assumption (or (not x365) x18289)
+:assumption (or x22633 (not x29734) (not x29959))
+:assumption (or (not x3481) (not x20029))
+:assumption (or x19405 (not x15423))
+:assumption (or (not x5081) (not x12084))
+:assumption (or x29493 (not x4667) x26658 (not x20888) (not x31763) x28840 x7239)
+:assumption (or x1844 x26347)
+:assumption (or x30834 (not x16304))
+:assumption (or (not x29635) (not x14228))
+:assumption (or x14072 x20277)
+:assumption (or x27153 (not x29971))
+:assumption (or x16131 x5923)
+:assumption (or x27771 (not x27227))
+:assumption (or (not x14927) (not x7897))
+:assumption (or x1621 (not x353) (not x3738) x4889)
+:assumption (or (not x6900) x25858)
+:assumption (or (not x26929) x10804 x11792)
+:assumption (or (not x27816) (not x17969))
+:assumption (or x24742 (not x2244))
+:assumption (or (not x28489) (not x8586))
+:assumption (or x26568 x29597)
+:assumption (or x21331 (not x26777))
+:assumption (or (not x8562) x29953)
+:assumption (or (not x21561) (not x29764))
+:assumption (or x6429 x8774)
+:assumption (or (not x16895) (not x2514) (not x19982))
+:assumption (or (not x21664) (not x11405))
+:assumption (or x10523 x15126)
+:assumption (or x8898 x17854)
+:assumption (or x14918 x25123)
+:assumption (or (not x13407) (not x6289) (not x8957))
+:assumption (or x23480 (not x22829))
+:assumption (or (not x23244) x20325 x29146)
+:assumption (or (not x31647) (not x9762))
+:assumption (or x4648 (not x12923))
+:assumption (or (not x10335) (not x14423))
+:assumption (or (not x6021) (not x15182))
+:assumption (or x13954 x11639)
+:assumption (or (not x20730) (not x28938))
+:assumption (or (not x7789) x1101 x6239 x25717 (not x10397) (not x18369))
+:assumption (or (not x13075) x28463 (not x20232))
+:assumption (or x31198 (not x31474))
+:assumption (or x17085 x28561)
+:assumption (or x18896 x31206)
+:assumption (or x18300 (not x24301))
+:assumption (or (not x6095) x6154)
+:assumption (or (not x25674) x25729)
+:assumption (or (not x28418) (not x24512))
+:assumption (or x22409 (not x5812))
+:assumption (or (not x22599) x2375)
+:assumption (or x11656 x24791)
+:assumption (or x23671 x7160)
+:assumption (or (not x26582) (not x15603) x7106)
+:assumption (or x11749 x13956 (not x14506))
+:assumption (or (not x25950) (not x5253))
+:assumption (or x10227 (not x4307))
+:assumption (or (not x5521) (not x11956))
+:assumption (or x6127 x13166)
+:assumption (or x15286 x13259)
+:assumption (or (not x27134) x1027)
+:assumption (or (not x28489) x12770)
+:assumption (or x19296 x31448)
+:assumption (or x25683 (not x10999))
+:assumption (or (not x3058) x27580)
+:assumption (or (not x30920) x17534)
+:assumption (or (not x8449) x29184)
+:assumption (or (not x4528) x14220)
+:assumption (or x16510 (not x29948))
+:assumption (or x27618 x1390)
+:assumption (or x29979 (not x18290))
+:assumption (or x30056 x19666)
+:assumption (or (not x4865) (not x2320))
+:assumption (or x29269 (not x24859))
+:assumption (or x1681 x17838)
+:assumption (or x14763 (not x9790))
+:assumption (or (not x17483) x7137)
+:assumption (or x10168 x9313)
+:assumption (or (not x2566) x23416 x16753 x28813)
+:assumption (or x5886 x4258 x25070)
+:assumption (or x14450 x20104)
+:assumption (or x28216 x5979)
+:assumption (or x12183 x7956)
+:assumption (or (not x916) x5848)
+:assumption (or x14272 (not x20985) (not x20923) (not x1621))
+:assumption (or (not x16455) x25983)
+:assumption (or (not x21588) x22868 x30002)
+:assumption (or (not x4711) x5698 x6952 (not x2313) x8973 x13451 x25163 (not x8013))
+:assumption (or (not x6517) x22821)
+:assumption (or (not x14347) (not x26576))
+:assumption (or (not x3661) x2093)
+:assumption (or x4675 (not x23488))
+:assumption (or x25355 (not x25598))
+:assumption (or (not x20700) x29775)
+:assumption (or x24550 (not x9883))
+:assumption (or (not x28708) (not x8370))
+:assumption (or x3480 x9008 x20806)
+:assumption (or x9395 x22615)
+:assumption (or (not x24630) (not x16039))
+:assumption (or x9413 (not x30025))
+:assumption (or x20169 x18485)
+:assumption (or x27134 (not x5929) (not x25879) x3262)
+:assumption (or (not x2498) (not x12499) (not x15537) x27939 (not x20199))
+:assumption (or (not x22053) x22071)
+:assumption (or (not x27100) (not x8079))
+:assumption (or x21490 (not x9727))
+:assumption (or x1846 (not x18480))
+:assumption (or x18260 x14703)
+:assumption (or (not x6653) (not x12726))
+:assumption (or x6357 x6783 x4199 x21298)
+:assumption (or (not x26827) (not x29094))
+:assumption (or x6601 (not x26212))
+:assumption (or x31544 (not x1043))
+:assumption (or x10755 x15620)
+:assumption (or x14083 (not x8708))
+:assumption (or x7719 x5211)
+:assumption (or (not x22728) (not x10522) (not x31156) (not x28734) (not x10496) x18800 (not x4404) x26044 x8423 (not x14429) x10318 (not x14980))
+:assumption (or x22876 x7263)
+:assumption (or (not x19632) (not x7830))
+:assumption (or (not x30092) x31329)
+:assumption (or (not x25878) (not x14997))
+:assumption (or (not x6384) (not x9020))
+:assumption (or x20542 x9793)
+:assumption (or (not x20606) x16151)
+:assumption (or x15537 x27153)
+:assumption (or (not x18929) (not x9013))
+:assumption (or (not x14421) (not x26474))
+:assumption (or x27897 (not x14558))
+:assumption (or (not x16758) (not x29625))
+:assumption (or (not x13956) x13722 x2675 x19194 x31391)
+:assumption (or (not x1188) (not x26851))
+:assumption (or x25734 (not x4061))
+:assumption (or x10839 (not x6671))
+:assumption (or x25856 x8961)
+:assumption (or (not x2516) (not x13482))
+:assumption (or x979 x13472)
+:assumption (or (not x14711) (not x16775) x13382 x7092)
+:assumption (or x13334 (not x4058))
+:assumption (or x16462 x13036 x2943)
+:assumption (or x9439 (not x2278) (not x11344))
+:assumption (or x20795 x17849)
+:assumption (or (not x7591) (not x31334))
+:assumption (or x30678 x28022)
+:assumption (or x23944 (not x3214))
+:assumption (or (not x13916) (not x15228))
+:assumption (or x10161 x25748)
+:assumption (or (not x7506) x16627)
+:assumption (or (not x16802) x11063)
+:assumption (or x30113 (not x874))
+:assumption (or (not x29373) (not x22930))
+:assumption (or (not x1083) (not x11143))
+:assumption (or (not x13666) (not x5719) (not x9008))
+:assumption (or x20242 x7043)
+:assumption (or x28993 (not x13833))
+:assumption (or (not x14672) (not x16097))
+:assumption (or x16033 x30066)
+:assumption (or x976 x4977)
+:assumption (or x17578 x30208)
+:assumption (or x11806 (not x658))
+:assumption (or (not x20040) (not x5571))
+:assumption (or (not x28023) (not x30740))
+:assumption (or (not x16510) (not x5028) (not x14634) (not x17534) x25283 (not x21815) x4003)
+:assumption (or x23962 (not x13272))
+:assumption (or (not x1394) (not x10909))
+:assumption (or x4883 (not x6746) (not x26354))
+:assumption (or (not x26276) (not x16863))
+:assumption (or (not x19860) (not x13068))
+:assumption (or x10332 x20757)
+:assumption (or (not x25429) (not x27241))
+:assumption (or (not x28703) x16489)
+:assumption (or x16010 (not x30452))
+:assumption (or x23814 (not x6694))
+:assumption (or (not x9839) x480)
+:assumption (or (not x23156) (not x14719))
+:assumption (or (not x26713) x16034)
+:assumption (or (not x25550) (not x13207))
+:assumption (or (not x11980) x9724)
+:assumption (or (not x13956) x368 x15799)
+:assumption (or x18900 (not x17358))
+:assumption (or (not x21845) (not x28020))
+:assumption (or (not x30751) (not x18108))
+:assumption (or (not x23923) x9531 x13576 x12578)
+:assumption (or x27962 x9133)
+:assumption (or x21153 x19962)
+:assumption (or x14310 x6058)
+:assumption (or (not x19708) x759)
+:assumption (or x31870 x27883)
+:assumption (or (not x23244) x28613)
+:assumption (or x26185 (not x1274) (not x9008))
+:assumption (or (not x10064) x31757)
+:assumption (or (not x15561) (not x13154))
+:assumption (or (not x21653) (not x29705))
+:assumption (or x9008 (not x30740))
+:assumption (or (not x18222) (not x5454))
+:assumption (or (not x29656) (not x16871))
+:assumption (or (not x22110) x18519)
+:assumption (or x2929 x25933)
+:assumption (or x6512 x30432)
+:assumption (or (not x30377) (not x31890))
+:assumption (or x11080 x19557)
+:assumption (or (not x16163) (not x11624))
+:assumption (or (not x17749) (not x5696) x27528 (not x6293))
+:assumption (or (not x10381) x22084)
+:assumption (or (not x17334) x28380)
+:assumption (or (not x16709) x9008)
+:assumption (or (not x7054) (not x6594))
+:assumption (or (not x16979) x11350)
+:assumption (or (not x11180) (not x11394))
+:assumption (or x18225 x18086)
+:assumption (or (not x1950) (not x25394))
+:assumption (or x19980 x22601)
+:assumption (or (not x15557) x16985 (not x7654) x30429 x28225 x13324 (not x5639) x24954 x16311)
+:assumption (or (not x31731) x1415 (not x18044) x28579 x20025)
+:assumption (or (not x7671) x30247)
+:assumption (or x8290 x23599 (not x20978) (not x12287) (not x12184))
+:assumption (or x25804 x26274)
+:assumption (or (not x3943) x27589 (not x18508) (not x20953))
+:assumption (or x26044 x910)
+:assumption (or (not x9531) x26363)
+:assumption (or x20356 x22585)
+:assumption (or (not x17989) x3184)
+:assumption (or (not x9008) x11111 x16633)
+:assumption (or x20692 (not x6329))
+:assumption (or x8426 (not x6184) x2420 (not x20723) x388 (not x25565))
+:assumption (or (not x23244) (not x21697))
+:assumption (or (not x642) (not x26722))
+:assumption (or x30496 (not x20196))
+:assumption (or x9590 (not x29634))
+:assumption (or x5041 x14132)
+:assumption (or (not x23479) x3140)
+:assumption (or x7959 x7297)
+:assumption (or x1393 (not x13246) (not x17190))
+:assumption (or (not x3596) x3547)
+:assumption (or x8299 (not x5626))
+:assumption (or (not x2133) x11326)
+:assumption (or x21312 x10189)
+:assumption (or x3865 (not x30300))
+:assumption (or x18056 (not x28217))
+:assumption (or x20274 (not x15546))
+:assumption (or (not x19492) (not x9382))
+:assumption (or x30646 (not x4833))
+:assumption (or (not x21698) x14206)
+:assumption (or x30088 (not x10924))
+:assumption (or x8961 x6862)
+:assumption (or x18843 (not x17267))
+:assumption (or (not x14805) x27031)
+:assumption (or x5806 x18712)
+:assumption (or (not x13788) (not x28215) (not x18503) x7346 (not x22780))
+:assumption (or (not x11191) (not x8881))
+:assumption (or (not x28172) (not x6134))
+:assumption (or x4919 x28748 x22679 x18345 x1184 x14880)
+:assumption (or (not x9648) (not x16510) (not x21815) (not x26670) x2334 x2188 (not x27620))
+:assumption (or x9664 x21536)
+:assumption (or (not x9794) x27747)
+:assumption (or (not x12702) (not x19062) (not x21653))
+:assumption (or (not x28665) (not x14823))
+:assumption (or (not x12003) (not x8194))
+:assumption (or x26810 x28669)
+:assumption (or x6548 (not x19489))
+:assumption (or (not x6998) x24373)
+:assumption (or (not x19940) (not x24313))
+:assumption (or (not x13487) (not x15672))
+:assumption (or (not x7130) x18674)
+:assumption (or (not x26091) x26704)
+:assumption (or (not x28255) x14796 x28995 (not x10235) x18191 x12238 x3557 (not x26737))
+:assumption (or x30371 (not x24927) (not x30343) (not x13018) x2326 (not x7720) (not x18992) (not x3776) (not x30941))
+:assumption (or (not x30320) x31347)
+:assumption (or x2986 (not x20169))
+:assumption (or (not x2195) (not x28076))
+:assumption (or (not x3302) (not x13037))
+:assumption (or (not x25659) (not x30207))
+:assumption (or (not x15537) (not x29776))
+:assumption (or x17016 (not x30432) (not x5528) (not x9008) x3034)
+:assumption (or x25364 x3101)
+:assumption (or x25083 x23737)
+:assumption (or x27221 x2192)
+:assumption (or (not x25233) (not x31562))
+:assumption (or (not x6518) (not x17689))
+:assumption (or (not x17445) (not x17653))
+:assumption (or (not x16230) x2033)
+:assumption (or (not x26384) (not x12275))
+:assumption (or x24261 x16940)
+:assumption (or x20661 (not x5319))
+:assumption (or (not x29039) x25659 x1099)
+:assumption (or (not x11567) (not x5471))
+:assumption (or (not x17373) x22203)
+:assumption (or (not x27597) x20479)
+:assumption (or x7384 (not x17681) x4162 x25855 x13576)
+:assumption (or x218 x21189 (not x30765))
+:assumption (or (not x5445) x865 (not x2964) x31348 (not x18409))
+:assumption (or (not x17884) (not x12045))
+:assumption (or x22543 (not x31403))
+:assumption (or x6289 (not x16758) x27917)
+:assumption (or x23904 x25112)
+:assumption (or x30850 (not x2279))
+:assumption (or (not x8534) (not x4567))
+:assumption (or (not x16743) x8293 (not x5896) x18182 x16668)
+:assumption (or (not x5028) x29161)
+:assumption (or x29091 x21385)
+:assumption (or (not x11621) x13176)
+:assumption (or x26490 x27593)
+:assumption (or (not x43) x12027)
+:assumption (or (not x5809) x1877 (not x8317))
+:assumption (or (not x27722) x27090)
+:assumption (or (not x12264) x14091)
+:assumption (or (not x25659) x31881)
+:assumption (or x4138 x22264)
+:assumption (or (not x26648) x20624)
+:assumption (or x3539 (not x31641))
+:assumption (or (not x777) (not x29092) (not x5084) (not x1597) (not x4182))
+:assumption (or (not x11336) x14179)
+:assumption (or (not x26378) (not x3408))
+:assumption (or (not x6279) x9568)
+:assumption (or x24008 (not x11458))
+:assumption (or (not x2373) (not x21948))
+:assumption (or (not x3470) x14839 (not x5666))
+:assumption (or x18633 (not x23093) (not x24538) x28813 x9398)
+:assumption (or x11938 x17515)
+:assumption (or x17917 (not x26939))
+:assumption (or (not x20333) x6841)
+:assumption (or (not x18811) x8368)
+:assumption (or (not x22885) (not x30399) x10515 (not x15659) (not x1312) x26334 x11607)
+:assumption (or (not x31429) (not x1907))
+:assumption (or x13899 (not x30633) (not x1041) (not x21509) (not x446) x13549 x5537)
+:assumption (or x28537 (not x2636))
+:assumption (or x25366 (not x9533))
+:assumption (or x24695 x14101 x7643)
+:assumption (or x6369 x29442)
+:assumption (or (not x18923) x13107 x918)
+:assumption (or (not x801) x25601)
+:assumption (or (not x19885) x20403)
+:assumption (or (not x23449) x11123)
+:assumption (or (not x23355) x20819)
+:assumption (or (not x7450) (not x7598) (not x5199) (not x3633) x16796 x14771 x17417)
+:assumption (or (not x29425) x10514)
+:assumption (or x10952 (not x31572))
+:assumption (or (not x29365) x20296)
+:assumption (or x25851 x13161 (not x14638) (not x12242) x20325)
+:assumption (or x13027 (not x4649))
+:assumption (or (not x8390) x29271)
+:assumption (or (not x14421) (not x17582))
+:assumption (or (not x1755) x21346)
+:assumption (or x12479 x3453)
+:assumption (or x8086 x30161)
+:assumption (or x30379 (not x8121))
+:assumption (or (not x7257) (not x31544))
+:assumption (or (not x16542) (not x16088))
+:assumption (or x10632 x16510 x31075 (not x21815) (not x11268) (not x29534) (not x16304))
+:assumption (or (not x8068) x20298)
+:assumption (or (not x15188) (not x21955))
+:assumption (or (not x4888) (not x22119))
+:assumption (or (not x6784) (not x16910) x2708)
+:assumption (or x4690 x25151)
+:assumption (or (not x26501) x11309 x23244)
+:assumption (or x1433 (not x21720))
+:assumption (or x15329 (not x15036))
+:assumption (or x14767 x21653)
+:assumption (or x16510 x4706)
+:assumption (or (not x17016) (not x7639))
+:assumption (or x19481 x16745)
+:assumption (or x1354 x5879 (not x3435))
+:assumption (or (not x24465) x25607)
+:assumption (or x10165 x31829 x918 (not x4262))
+:assumption (or (not x23759) (not x29614))
+:assumption (or x22606 x387)
+:assumption (or (not x30751) (not x27565) x16940)
+:assumption (or (not x14568) (not x21806))
+:assumption (or (not x12208) x13372)
+:assumption (or (not x26284) (not x7747))
+:assumption (or x14117 (not x4168))
+:assumption (or x11554 x7 x12578 x6351)
+:assumption (or x22197 x16635)
+:assumption (or (not x18727) (not x3045))
+:assumption (or (not x8804) x11067)
+:assumption (or x26300 x15258)
+:assumption (or x25366 x10572)
+:assumption (or x6307 x20430)
+:assumption (or (not x10290) x13144)
+:assumption (or (not x23731) (not x13173) x17600 (not x3989) x28068)
+:assumption (or (not x30612) x25840)
+:assumption (or (not x1393) (not x18961))
+:assumption (or (not x8436) x21313)
+:assumption (or x3098 (not x11112))
+:assumption (or (not x24476) (not x18253))
+:assumption (or x16158 (not x17705))
+:assumption (or (not x9184) x16453)
+:assumption (or x935 x18783)
+:assumption (or (not x26819) x30599)
+:assumption (or (not x9019) x5528)
+:assumption (or (not x17884) (not x26432))
+:assumption (or (not x1) x16003)
+:assumption (or x26545 x18984)
+:assumption (or (not x13358) x26008 x25659 x16374)
+:assumption (or (not x10210) (not x31519))
+:assumption (or x10821 x1019)
+:assumption (or (not x12416) x15429)
+:assumption (or (not x19856) x3031)
+:assumption (or x20689 x16055 x14839)
+:assumption (or (not x16298) (not x5174) (not x15451))
+:assumption (or (not x8036) (not x5558))
+:assumption (or x6374 x24663)
+:assumption (or x4197 x4685)
+:assumption (or x15438 x14288)
+:assumption (or x13274 (not x16474))
+:assumption (or x15998 (not x11069))
+:assumption (or x3912 x21769)
+:assumption (or (not x17403) x2574)
+:assumption (or x31815 x5305 (not x10604) (not x4553))
+:assumption (or x86 x27487)
+:assumption (or (not x25524) x142)
+:assumption (or x28912 x23939)
+:assumption (or x23419 (not x3269))
+:assumption (or (not x17361) x21309)
+:assumption (or (not x1101) x12251)
+:assumption (or x7385 (not x15749))
+:assumption (or x26762 x24162 x11397)
+:assumption (or x2275 (not x7561))
+:assumption (or (not x7180) x10758)
+:assumption (or (not x12751) x6944)
+:assumption (or (not x19394) (not x28883))
+:assumption (or (not x16802) (not x14928))
+:assumption (or x13479 (not x20579))
+:assumption (or (not x21022) (not x5356))
+:assumption (or (not x2836) (not x27753) x22727 (not x2909) x28956)
+:assumption (or (not x7127) (not x29182))
+:assumption (or x8648 x6314)
+:assumption (or (not x10327) (not x8187))
+:assumption (or x25694 x23286)
+:assumption (or x15999 (not x10706) (not x20623) (not x7977))
+:assumption (or x14713 x2131 (not x14072) (not x24555) (not x18396) x16648 x13199 x7807 x7259)
+:assumption (or x15169 (not x29856) (not x30138))
+:assumption (or x26314 x29976)
+:assumption (or x27441 (not x2773))
+:assumption (or x22471 x12462)
+:assumption (or x18100 (not x26707))
+:assumption (or (not x18345) (not x14880))
+:assumption (or x134 x19433)
+:assumption (or (not x11193) x20533)
+:assumption (or x4251 (not x25417))
+:assumption (or x29301 (not x8258))
+:assumption (or (not x1699) (not x2883))
+:assumption (or (not x4586) (not x19992) x5206)
+:assumption (or (not x2204) (not x22907))
+:assumption (or x16490 x3329)
+:assumption (or x29660 x8589 x26851)
+:assumption (or (not x1182) x27802)
+:assumption (or x10435 (not x14925))
+:assumption (or (not x18668) x25212)
+:assumption (or x20814 (not x2607))
+:assumption (or (not x16168) x9118 (not x12992))
+:assumption (or x8337 (not x15452))
+:assumption (or x13890 (not x4528))
+:assumption (or x16556 x12280)
+:assumption (or x18438 x5740 x11938)
+:assumption (or x15940 (not x15036) (not x21298))
+:assumption (or (not x3782) x24830)
+:assumption (or x18602 x11327)
+:assumption (or (not x24717) (not x20526))
+:assumption (or (not x27406) x8002)
+:assumption (or x6831 x2228)
+:assumption (or x4418 (not x26504))
+:assumption (or x645 (not x26344))
+:assumption (or (not x1393) x4302)
+:assumption (or (not x697) (not x2413))
+:assumption (or (not x18158) x4122)
+:assumption (or x22886 (not x22980))
+:assumption (or (not x13956) x30423)
+:assumption (or x9930 (not x2092))
+:assumption (or x23709 (not x553))
+:assumption (or x10494 (not x7870))
+:assumption (or x14265 (not x21753))
+:assumption (or x23971 (not x31221))
+:assumption (or x18962 (not x13791))
+:assumption (or x7713 x1268)
+:assumption (or x16019 (not x24321))
+:assumption (or (not x29438) x4676)
+:assumption (or (not x6918) x19989 (not x4111) (not x15774) x27589 (not x24016) x13069 x10837)
+:assumption (or x12887 x6607)
+:assumption (or (not x14804) (not x514))
+:assumption (or x6496 (not x213))
+:assumption (or (not x3104) (not x24514) (not x20723) (not x12948))
+:assumption (or (not x5802) (not x22175))
+:assumption (or x8203 (not x26422))
+:assumption (or x21613 (not x9796))
+:assumption (or x11852 (not x3325))
+:assumption (or x24722 (not x12674) x14683 x6890 x21878)
+:assumption (or x3494 (not x28561) x23078 x15096)
+:assumption (or x14963 x31920)
+:assumption (or x30255 x5528 (not x17393))
+:assumption (or (not x16911) (not x10770))
+:assumption (or x16510 (not x24470))
+:assumption (or x6694 (not x23814))
+:assumption (or (not x5528) x18774)
+:assumption (or (not x5274) x20721 x4469 (not x23759) x7208)
+:assumption (or (not x10540) x15287)
+:assumption (or x19873 x9531)
+:assumption (or (not x3034) x9008)
+:assumption (or (not x6149) (not x14068) x11792 x20154)
+:assumption (or (not x1173) (not x15786))
+:assumption (or x16901 (not x18286))
+:assumption (or x24316 x15154)
+:assumption (or (not x7053) (not x28721) (not x24228))
+:assumption (or x13877 (not x4298))
+:assumption (or (not x1393) (not x13936))
+:assumption (or (not x10604) x18810)
+:assumption (or x27201 x25717)
+:assumption (or x31522 (not x4124) x24067)
+:assumption (or x25748 x28303)
+:assumption (or x2133 (not x25964))
+:assumption (or (not x24756) (not x21172))
+:assumption (or x24207 (not x21251))
+:assumption (or x19973 x4761)
+:assumption (or x17448 (not x28722))
+:assumption (or x27314 x5390)
+:assumption (or (not x10388) x3457)
+:assumption (or (not x28658) x5566)
+:assumption (or (not x586) (not x17474))
+:assumption (or (not x31221) x515)
+:assumption (or (not x23389) (not x23120))
+:assumption (or (not x30546) x5104)
+:assumption (or x31551 (not x22386))
+:assumption (or x11783 x31428)
+:assumption (or x14341 x12322)
+:assumption (or (not x8904) x23956)
+:assumption (or x25366 x8335 (not x14466))
+:assumption (or (not x25545) x13004)
+:assumption (or x27104 (not x4458))
+:assumption (or (not x24364) x17356 (not x21981))
+:assumption (or x2099 x25840)
+:assumption (or x12923 (not x22994) x22802 (not x21089))
+:assumption (or x18519 x19711 x16104)
+:assumption (or x18133 (not x7648))
+:assumption (or x8825 (not x2158))
+:assumption (or x17447 (not x28041) x13438 x10306 (not x10949) x27071 x28885 x12835)
+:assumption (or x4483 (not x30353))
+:assumption (or x11722 (not x19670))
+:assumption (or (not x31127) x28850 (not x12703) (not x228) (not x9809) x24054)
+:assumption (or x22106 x22270 (not x6584) (not x5928) x9460)
+:assumption (or x11419 (not x438))
+:assumption (or (not x18112) x7201)
+:assumption (or (not x27566) (not x24676))
+:assumption (or (not x2780) (not x17042))
+:assumption (or (not x5762) (not x29161) x5028)
+:assumption (or x20868 (not x31673) (not x738))
+:assumption (or x18333 x11495)
+:assumption (or x23399 x25659 (not x16849) x27261 x20550)
+:assumption (or x14119 x8146 x23386 x28242)
+:assumption (or x4726 (not x12260))
+:assumption (or x2055 x3185)
+:assumption (or x20327 x13065)
+:assumption (or x28682 (not x30751) x9679)
+:assumption (or (not x9498) x11964)
+:assumption (or x4756 (not x3453) x9785)
+:assumption (or (not x12242) (not x13397) x6969 (not x29628))
+:assumption (or (not x8333) x10392)
+:assumption (or x21540 x12410)
+:assumption (or (not x22179) (not x31163))
+:assumption (or x2482 x6559 (not x4230) x5570 (not x8521) x6324)
+:assumption (or x7911 (not x26546))
+:assumption (or (not x333) x30040)
+:assumption (or x2833 x31253)
+:assumption (or x9439 x14415)
+:assumption (or (not x13401) (not x4499))
+:assumption (or x8155 x9196)
+:assumption (or (not x20062) (not x2744) (not x10208) x22340 (not x19279) x5021 x24379 (not x6605) (not x30492) x8449 x1258 (not x8783))
+:assumption (or x2547 x17257)
+:assumption (or x12954 x2512 x23139 (not x3021) (not x8455) (not x17016))
+:assumption (or x25180 x7116)
+:assumption (or (not x17598) (not x1667))
+:assumption (or x27349 (not x496) (not x842) x28776)
+:assumption (or (not x27107) (not x27212) x9008)
+:assumption (or x2161 x16510)
+:assumption (or (not x343) (not x28912))
+:assumption (or x30673 (not x9790))
+:assumption (or x10204 x16277)
+:assumption (or x8822 x8002)
+:assumption (or (not x3474) (not x918))
+:assumption (or x7960 (not x6374))
+:assumption (or x21976 x22692)
+:assumption (or (not x28582) (not x10751) x14132 (not x1892) (not x13818))
+:assumption (or x6400 x17940)
+:assumption (or (not x17359) x17371)
+:assumption (or x31027 x15919)
+:assumption (or x24591 (not x27494))
+:assumption (or (not x30343) x30712)
+:assumption (or (not x12677) x17769)
+:assumption (or x18199 x7607)
+:assumption (or x17019 x13622 (not x17939) (not x15109) (not x5323) (not x22002) (not x19474))
+:assumption (or (not x2151) x26246)
+:assumption (or (not x15242) x21160)
+:assumption (or (not x23838) (not x25459) (not x27983) x11579 x21695 x4602)
+:assumption (or (not x2845) (not x18594))
+:assumption (or x12303 x10874)
+:assumption (or (not x3409) x16536 (not x594) x29312)
+:assumption (or x23392 (not x21011) (not x9547) x24017 x8685 x22929 x6886 x15664 x19591)
+:assumption (or (not x5573) x3073)
+:assumption (or x791 x20647)
+:assumption (or (not x17822) x20941)
+:assumption (or x3758 x8988 x14042 (not x30886))
+:assumption (or x6377 x29382)
+:assumption (or (not x16061) x26178)
+:assumption (or x19596 x25667)
+:assumption (or x25870 x4769)
+:assumption (or x15123 (not x7732))
+:assumption (or (not x30797) (not x1825))
+:assumption (or x29298 (not x27722))
+:assumption (or x23513 x18809)
+:assumption (or x19020 x26777 x11260)
+:assumption (or x18496 (not x24163))
+:assumption (or x25808 (not x19887))
+:assumption (or (not x24243) (not x19495))
+:assumption (or (not x31890) (not x11483))
+:assumption (or (not x7825) x18063)
+:assumption (or (not x21256) (not x27021))
+:assumption (or (not x22716) (not x13956))
+:assumption (or (not x10581) (not x10804))
+:assumption (or (not x16933) x2542)
+:assumption (or (not x21720) x24877)
+:assumption (or (not x11478) x3144)
+:assumption (or (not x11431) x24366)
+:assumption (or (not x6626) (not x5367))
+:assumption (or (not x18555) (not x501))
+:assumption (or (not x7809) (not x2730))
+:assumption (or (not x6222) (not x15868))
+:assumption (or (not x25659) (not x15553))
+:assumption (or (not x4975) (not x9728))
+:assumption (or (not x3641) (not x4154))
+:assumption (or (not x5711) x21666)
+:assumption (or x15967 x16423 (not x23692) x19418)
+:assumption (or x1211 x25659 x18015)
+:assumption (or (not x31443) x4280)
+:assumption (or (not x20598) (not x15980))
+:assumption (or x2459 x9771 x4480 x16254 x22089 x12134)
+:assumption (or x26810 x26768)
+:assumption (or x8521 (not x6324))
+:assumption (or x11982 (not x6686))
+:assumption (or (not x28852) x1638)
+:assumption (or x22560 (not x29764))
+:assumption (or (not x27009) x13366)
+:assumption (or (not x29097) (not x834))
+:assumption (or x15418 (not x12754))
+:assumption (or x19417 (not x10237))
+:assumption (or (not x688) (not x17193))
+:assumption (or (not x11172) x8324)
+:assumption (or x24193 x30715)
+:assumption (or x24221 x13070)
+:assumption (or (not x25870) (not x25270) x1775)
+:assumption (or (not x18920) (not x24425))
+:assumption (or (not x23244) x5566)
+:assumption (or x22984 x28142)
+:assumption (or (not x31395) (not x31696))
+:assumption (or (not x5636) (not x4074))
+:assumption (or x8477 (not x16467))
+:assumption (or x18646 x3333)
+:assumption (or x13140 (not x4227))
+:assumption (or x18369 x13956 (not x9930) x27776 x8002 x23244)
+:assumption (or (not x13462) (not x9008) x11229)
+:assumption (or x3673 (not x505))
+:assumption (or x14484 (not x893))
+:assumption (or (not x26475) (not x27933))
+:assumption (or x25920 x8384)
+:assumption (or (not x9861) (not x11183))
+:assumption (or (not x20500) x31239)
+:assumption (or x6777 x30348)
+:assumption (or x27404 (not x3781))
+:assumption (or (not x24019) (not x15970))
+:assumption (or (not x18233) x24918)
+:assumption (or x3686 x17187)
+:assumption (or (not x31096) (not x21650) x27155 x18942 (not x11813))
+:assumption (or (not x22446) (not x24818))
+:assumption (or (not x17631) (not x358) (not x14656) (not x16258) x23165)
+:assumption (or (not x26605) x30843)
+:assumption (or (not x1364) (not x21815) x5394 x16510 x4401 x20171 x19134)
+:assumption (or x12764 x7901)
+:assumption (or x4996 x12027)
+:assumption (or x11191 x8881)
+:assumption (or x605 (not x28912))
+:assumption (or (not x7262) x11551)
+:assumption (or x17618 (not x30299))
+:assumption (or (not x7633) x25290)
+:assumption (or (not x17614) x29442)
+:assumption (or x20640 (not x30987) x16392 (not x9079) (not x21335) x11800)
+:assumption (or x20125 (not x16409))
+:assumption (or (not x26470) (not x6842) x25436 (not x19430) (not x26621) x31180)
+:assumption (or (not x27529) x25271)
+:assumption (or (not x7799) x30867)
+:assumption (or (not x11874) (not x8180))
+:assumption (or (not x31314) x8755)
+:assumption (or (not x18846) (not x29954))
+:assumption (or x21908 x17075)
+:assumption (or x5243 (not x20660))
+:assumption (or x7246 (not x805))
+:assumption (or x5781 (not x17075))
+:assumption (or x1443 (not x5315))
+:assumption (or x24096 (not x22612) (not x8026))
+:assumption (or x20448 (not x24500))
+:assumption (or x13956 (not x17237))
+:assumption (or x5201 x30984 x18844)
+:assumption (or (not x3780) (not x21688))
+:assumption (or (not x6825) x28169)
+:assumption (or (not x23963) x10991)
+:assumption (or (not x15405) x21965)
+:assumption (or (not x31114) x23953)
+:assumption (or x8857 x1613)
+:assumption (or x7603 (not x17359))
+:assumption (or x4718 x7718)
+:assumption (or x3054 (not x18362))
+:assumption (or (not x6165) (not x17310))
+:assumption (or x2380 (not x30278))
+:assumption (or x24767 (not x4188))
+:assumption (or x17388 x19340)
+:assumption (or x20923 x20985)
+:assumption (or (not x8525) x18470 (not x793) x17250 (not x1015) x9903 (not x29217) x13811)
+:assumption (or (not x28980) (not x12987))
+:assumption (or (not x30450) x28161)
+:assumption (or (not x20654) x21844)
+:assumption (or x5859 x17372 (not x1014) x26670 x18742)
+:assumption (or (not x964) (not x11835))
+:assumption (or (not x6952) (not x6021))
+:assumption (or (not x25397) (not x6746))
+:assumption (or x19327 x4844)
+:assumption (or x1163 (not x29957))
+:assumption (or x19938 (not x21601))
+:assumption (or x6142 (not x1770))
+:assumption (or x15554 (not x918))
+:assumption (or (not x11376) (not x2334))
+:assumption (or (not x8800) (not x20182))
+:assumption (or x31719 (not x20313))
+:assumption (or x30581 (not x20235) (not x20627) x8229)
+:assumption (or (not x12007) x6342)
+:assumption (or x30284 (not x7791))
+:assumption (or x11997 (not x15795))
+:assumption (or x25945 (not x16604))
+:assumption (or (not x15038) (not x26722))
+:assumption (or (not x14517) x1792)
+:assumption (or (not x28010) (not x20599))
+:assumption (or (not x10913) x25315)
+:assumption (or x24387 x24418)
+:assumption (or x11819 (not x10849) (not x20614) (not x22829) x5550 (not x23174))
+:assumption (or (not x1788) (not x21356))
+:assumption (or (not x19095) (not x6034) x8002 x7366 x1227 x27715)
+:assumption (or (not x11159) x29257)
+:assumption (or (not x2362) (not x9644))
+:assumption (or (not x24324) (not x7120))
+:assumption (or (not x26886) (not x12935))
+:assumption (or (not x15840) (not x9387))
+:assumption (or (not x13074) x12447 (not x17530) (not x26282) (not x25156) (not x481) (not x28365) (not x17742) x27003 x5973)
+:assumption (or (not x27342) (not x29383))
+:assumption (or x20418 (not x16514) x14548 x15585 (not x22940))
+:assumption (or x27529 (not x24002))
+:assumption (or (not x22017) x7536)
+:assumption (or (not x12428) x29315)
+:assumption (or x23244 (not x24193) (not x30715))
+:assumption (or (not x23383) (not x14805))
+:assumption (or x30732 (not x13232) x6969 x28623)
+:assumption (or (not x9940) x27499)
+:assumption (or (not x11411) (not x20628) x2721 x5795 (not x27668))
+:assumption (or x30592 x9008 (not x10955))
+:assumption (or (not x25383) x17321)
+:assumption (or x17589 (not x4867))
+:assumption (or x27936 x18599)
+:assumption (or (not x18416) (not x24815))
+:assumption (or (not x8949) (not x24722))
+:assumption (or (not x16138) (not x17665))
+:assumption (or (not x3659) (not x6562))
+:assumption (or (not x14427) (not x10635))
+:assumption (or x21423 x5639)
+:assumption (or x8158 (not x31373))
+:assumption (or (not x10009) x15410)
+:assumption (or x24266 x3649)
+:assumption (or (not x28970) x873)
+:assumption (or x26718 x23978)
+:assumption (or x1393 x11761 (not x18794))
+:assumption (or (not x13760) x13956)
+:assumption (or x4529 x219)
+:assumption (or (not x26905) x26142)
+:assumption (or (not x21694) x2029)
+:assumption (or (not x6529) (not x13788))
+:assumption (or x8292 x11792)
+:assumption (or x947 x9002)
+:assumption (or x9149 x21815)
+:assumption (or (not x3119) x25855)
+:assumption (or (not x23297) (not x9008))
+:assumption (or (not x21569) x13565)
+:assumption (or x9427 (not x15507))
+:assumption (or x20335 (not x26606))
+:assumption (or (not x26410) (not x9810))
+:assumption (or (not x1633) (not x932))
+:assumption (or (not x8691) x5289)
+:assumption (or x14193 x2136)
+:assumption (or (not x30494) (not x2946))
+:assumption (or (not x2011) x24708)
+:assumption (or (not x15664) (not x8685))
+:assumption (or x26242 x10057)
+:assumption (or (not x9321) (not x3971))
+:assumption (or (not x4377) (not x3624))
+:assumption (or (not x12518) x16154)
+:assumption (or (not x26137) (not x20199))
+:assumption (or (not x24109) (not x2041))
+:assumption (or (not x16035) x31081 x25659)
+:assumption (or (not x2629) x12150)
+:assumption (or x14048 (not x6289) x18235)
+:assumption (or (not x27632) (not x31241))
+:assumption (or x170 x17674 (not x9625) (not x18180))
+:assumption (or x14138 (not x4027))
+:assumption (or (not x30407) x6878 x25153)
+:assumption (or x20284 (not x24037))
+:assumption (or x16585 (not x827) x19017)
+:assumption (or x18069 (not x14368))
+:assumption (or (not x15795) (not x23685))
+:assumption (or x5976 (not x26328))
+:assumption (or x16809 x22898)
+:assumption (or x7621 x7936)
+:assumption (or x17422 x22782)
+:assumption (or (not x24471) (not x24390) x23886)
+:assumption (or x16270 x26659)
+:assumption (or x7567 x9008)
+:assumption (or (not x309) (not x23399) (not x31764))
+:assumption (or (not x6018) (not x23244))
+:assumption (or x24073 x9958 x28541 x31829)
+:assumption (or (not x5066) (not x18555) (not x4814) x11943 x30074 x4560)
+:assumption (or x24020 x11243)
+:assumption (or x1461 x31092)
+:assumption (or x18859 (not x6025))
+:assumption (or (not x16846) (not x637) (not x23244) (not x6685) x12924 x28733)
+:assumption (or x29011 x19102)
+:assumption (or (not x26048) x10098)
+:assumption (or (not x26080) x27373)
+:assumption (or (not x9521) x18025)
+:assumption (or x5798 (not x31072))
+:assumption (or (not x1137) x31272)
+:assumption (or (not x10442) (not x15983))
+:assumption (or (not x29645) x7185)
+:assumption (or x12050 x9531)
+:assumption (or (not x30862) x1518)
+:assumption (or (not x3777) x16743)
+:assumption (or (not x13075) x21107 x16159 x22632 x9635 x13628 x17273 x20991)
+:assumption (or x17557 (not x15292))
+:assumption (or x16849 (not x17838) x15106 x21298)
+:assumption (or x18829 (not x6419))
+:assumption (or (not x17855) (not x21857))
+:assumption (or (not x27570) x31279)
+:assumption (or x20569 (not x27537))
+:assumption (or (not x24801) (not x17184))
+:assumption (or x20621 x7612)
+:assumption (or x20910 x31021)
+:assumption (or (not x8021) x11652 x20509 (not x24600) (not x9159))
+:assumption (or x11811 (not x29589))
+:assumption (or (not x10634) x24459)
+:assumption (or (not x13990) x26437 (not x25379) (not x23244) x26070 x13172)
+:assumption (or (not x1163) x29957)
+:assumption (or x18916 x20295)
+:assumption (or (not x18694) (not x3650))
+:assumption (or (not x13368) x24379)
+:assumption (or x17853 x21222)
+:assumption (or x22252 (not x9442))
+:assumption (or (not x7902) x27453)
+:assumption (or x108 x6281)
+:assumption (or x7885 x23876)
+:assumption (or x8924 x1715)
+:assumption (or x27613 x20222)
+:assumption (or (not x9369) (not x16802) (not x9025))
+:assumption (or x21301 (not x9793))
+:assumption (or x15804 x26897)
+:assumption (or (not x17400) (not x25292))
+:assumption (or (not x24338) (not x22719))
+:assumption (or (not x25148) (not x5528))
+:assumption (or x4780 x1393 x17420)
+:assumption (or x15899 x6508)
+:assumption (or x28735 x21298)
+:assumption (or (not x16417) (not x15325))
+:assumption (or x1749 (not x26197))
+:assumption (or (not x4006) (not x28413))
+:assumption (or (not x19576) (not x23244))
+:assumption (or x7174 (not x10524))
+:assumption (or (not x7185) (not x11787) x29645 x19624)
+:assumption (or x13166 x19319)
+:assumption (or x15072 x17156 (not x15246))
+:assumption (or (not x3854) (not x356))
+:assumption (or (not x21432) x18866)
+:assumption (or x20945 x30832 x25866 (not x26860) x20457)
+:assumption (or (not x27569) (not x21339))
+:assumption (or (not x18805) x2668)
+:assumption (or (not x28472) (not x14624))
+:assumption (or x14246 x7455)
+:assumption (or x15004 (not x13408))
+:assumption (or (not x27125) (not x30632))
+:assumption (or (not x4060) (not x8586))
+:assumption (or (not x3909) x13479)
+:assumption (or (not x11481) x17629)
+:assumption (or (not x5379) (not x10874))
+:assumption (or (not x21159) x13405)
+:assumption (or x31027 (not x10936))
+:assumption (or (not x8985) x15209)
+:assumption (or (not x15106) (not x21298))
+:assumption (or x1095 x12694)
+:assumption (or x6307 (not x10874) (not x25107) (not x3860))
+:assumption (or (not x25820) x14715)
+:assumption (or (not x15695) (not x22999))
+:assumption (or (not x23442) x9503)
+:assumption (or x17070 (not x17599))
+:assumption (or (not x4892) (not x25659))
+:assumption (or x26892 x21298 x24745 (not x27704))
+:assumption (or x24739 (not x3646))
+:assumption (or (not x8285) x2311)
+:assumption (or (not x15587) x31786)
+:assumption (or x1393 (not x4569) x6762)
+:assumption (or x169 (not x8018))
+:assumption (or x17351 x21737 x6650 (not x19413) x20872)
+:assumption (or (not x16482) x6633)
+:assumption (or (not x22826) (not x11721))
+:assumption (or (not x3560) (not x29213) x2672 (not x4497) (not x15877) (not x553) x16923 (not x3031) x5826)
+:assumption (or x13512 x16016)
+:assumption (or x18170 x31184)
+:assumption (or x21815 x28905)
+:assumption (or (not x823) x22040)
+:assumption (or x1586 (not x20291) x21298 (not x23127))
+:assumption (or x28751 x18886)
+:assumption (or x29125 (not x8002) x25985)
+:assumption (or (not x11983) x4851)
+:assumption (or (not x19744) x3782)
+:assumption (or (not x25322) (not x13591))
+:assumption (or (not x30413) x18704)
+:assumption (or (not x11008) x23717 x21312 (not x24455) x27090 x204)
+:assumption (or x21450 (not x10814) x24722 x18042)
+:assumption (or x2849 (not x10972))
+:assumption (or (not x18611) x18125)
+:assumption (or (not x18875) x19607)
+:assumption (or (not x27647) (not x22815) (not x18008) x6460 x25919 x2560 (not x10297) (not x9657) (not x2535))
+:assumption (or (not x7686) x8223)
+:assumption (or (not x37) (not x17411))
+:assumption (or (not x18644) x16702)
+:assumption (or x29957 (not x13774))
+:assumption (or (not x9682) (not x12571))
+:assumption (or x5709 (not x17003))
+:assumption (or x27162 (not x8505))
+:assumption (or (not x15103) x11792)
+:assumption (or (not x9671) (not x16544))
+:assumption (or x27873 x438)
+:assumption (or (not x7862) (not x7542))
+:assumption (or x4476 x21737)
+:assumption (or x28538 (not x26865))
+:assumption (or (not x17547) (not x5087))
+:assumption (or (not x22598) x8681)
+:assumption (or x18148 x15392)
+:assumption (or (not x26012) (not x22124) (not x8825) x15926)
+:assumption (or x19216 x25366)
+:assumption (or x375 (not x6878))
+:assumption (or (not x12702) x30419)
+:assumption (or (not x8564) x13956)
+:assumption (or (not x17969) x1348 x21465)
+:assumption (or x9961 x5528 (not x25216))
+:assumption (or x29530 x22247)
+:assumption (or (not x18369) x20690)
+:assumption (or x964 (not x15310) x5394 (not x31442))
+:assumption (or x23549 x5026)
+:assumption (or x31083 (not x857))
+:assumption (or x17878 (not x211))
+:assumption (or x6064 (not x3176))
+:assumption (or x31515 x27602)
+:assumption (or x1532 x28870)
+:assumption (or x25269 x5312)
+:assumption (or x23313 x30430)
+:assumption (or (not x27983) (not x21504) (not x20762) x9467)
+:assumption (or x17075 (not x16024) (not x15890) (not x21751))
+:assumption (or x25219 x6152)
+:assumption (or (not x19489) x24676)
+:assumption (or x28078 (not x9410))
+:assumption (or (not x27065) (not x3207) (not x195) (not x9005) x9188)
+:assumption (or x19606 x30029)
+:assumption (or x27956 x3495)
+:assumption (or (not x26942) x28069)
+:assumption (or x1393 (not x23216) (not x22662))
+:assumption (or x27402 x29606)
+:assumption (or (not x17957) x17116)
+:assumption (or x24680 (not x6976))
+:assumption (or x642 x23767 x15038 x20821 x7303)
+:assumption (or (not x28609) x3638 (not x4927))
+:assumption (or x25659 (not x9531) (not x4703) x17967)
+:assumption (or x8448 (not x2880))
+:assumption (or (not x4809) x24962)
+:assumption (or (not x25133) (not x28325))
+:assumption (or (not x13424) (not x17905))
+:assumption (or x21815 x17000)
+:assumption (or (not x24414) (not x9164))
+:assumption (or (not x875) (not x31313))
+:assumption (or (not x13228) x16701)
+:assumption (or x23780 (not x18859))
+:assumption (or (not x21603) x31486)
+:assumption (or (not x12721) x17383)
+:assumption (or x22757 x19245 x11212 x25544 x23751)
+:assumption (or x27192 (not x7831))
+:assumption (or (not x6635) (not x28178))
+:assumption (or x13288 (not x8515))
+:assumption (or (not x29034) x14830)
+:assumption (or (not x22667) (not x25682))
+:assumption (or (not x20859) x9724)
+:assumption (or x25039 x11599)
+:assumption (or (not x20330) (not x13074))
+:assumption (or (not x1365) (not x18442))
+:assumption (or (not x823) x17447)
+:assumption (or x24547 x30113)
+:assumption (or (not x15073) (not x1366))
+:assumption (or x24187 (not x23470))
+:assumption (or x8720 x4214 x9008)
+:assumption (or (not x21135) (not x9008))
+:assumption (or (not x1393) x15970)
+:assumption (or (not x21501) (not x27087))
+:assumption (or x2964 x16268)
+:assumption (or (not x8586) (not x21610))
+:assumption (or x10487 x29641)
+:assumption (or (not x15663) (not x7455))
+:assumption (or (not x5528) x16426 (not x12420) (not x9008) x15933)
+:assumption (or (not x3494) x9770)
+:assumption (or (not x7386) (not x3799))
+:assumption (or x1086 x1245)
+:assumption (or x24641 (not x8586))
+:assumption (or (not x3860) (not x14872))
+:assumption (or (not x28973) (not x288) (not x28487) x7552)
+:assumption (or (not x9913) x28512)
+:assumption (or x25978 x22910)
+:assumption (or x22444 (not x11857))
+:assumption (or (not x25969) (not x19920))
+:assumption (or x25644 (not x26680))
+:assumption (or (not x8213) x15623)
+:assumption (or x31829 (not x14369))
+:assumption (or (not x29340) x31180)
+:assumption (or x5895 x20285)
+:assumption (or x28068 x17790)
+:assumption (or x1613 (not x17445))
+:assumption (or x16668 (not x5485))
+:assumption (or (not x18634) (not x15321))
+:assumption (or x29449 (not x28785))
+:assumption (or x5847 (not x1547))
+:assumption (or (not x29688) x21452)
+:assumption (or x8299 (not x8598))
+:assumption (or (not x27979) (not x15523))
+:assumption (or (not x10218) x24761 x30887)
+:assumption (or x29606 (not x18694) x16941)
+:assumption (or x12254 x12485)
+:assumption (or (not x28469) x18496)
+:assumption (or x4939 (not x4862))
+:assumption (or (not x25281) (not x28677) (not x5916) x14132 x1668 x2792 (not x25183) x17100 (not x11202))
+:assumption (or (not x25242) (not x8961))
+:assumption (or x30314 (not x24324))
+:assumption (or x13719 (not x827) (not x29901))
+:assumption (or (not x4837) x1434 (not x15284) (not x8336))
+:assumption (or x19955 x19990)
+:assumption (or x2310 x20495)
+:assumption (or (not x142) x25165)
+:assumption (or x22182 x13447 x5804 x29274 x914)
+:assumption (or (not x26963) x16648 (not x30321))
+:assumption (or (not x28479) (not x21432) x30008 (not x19236))
+:assumption (or (not x16611) x27909)
+:assumption (or x27285 x22549 x28261 x24411 (not x16225))
+:assumption (or x3174 (not x3692))
+:assumption (or (not x22929) (not x13633))
+:assumption (or (not x8602) x3495)
+:assumption (or x7657 x15364)
+:assumption (or (not x11939) x1391)
+:assumption (or x3228 (not x7862))
+:assumption (or x28447 x3987)
+:assumption (or (not x21653) x20700 (not x622))
+:assumption (or x26479 (not x30929))
+:assumption (or (not x18519) (not x4775))
+:assumption (or (not x19228) (not x13630))
+:assumption (or x19810 (not x2090))
+:assumption (or x3153 (not x15195))
+:assumption (or x26984 (not x15659))
+:assumption (or x9531 x7923)
+:assumption (or (not x3349) x15514)
+:assumption (or (not x10883) x4019)
+:assumption (or x1340 x23973)
+:assumption (or x18970 (not x30892))
+:assumption (or x8567 (not x2904))
+:assumption (or x9931 (not x11441))
+:assumption (or (not x10541) (not x6963))
+:assumption (or x13906 (not x26008) x20151 (not x27667) (not x22931) x24601 (not x1051) x21688)
+:assumption (or (not x6095) x94)
+:assumption (or x5886 x8523 (not x30261) (not x8961))
+:assumption (or (not x29771) (not x20681))
+:assumption (or (not x6827) x3192)
+:assumption (or x100 (not x16374))
+:assumption (or (not x14829) x2467)
+:assumption (or x20871 (not x24384))
+:assumption (or (not x9828) (not x25782))
+:assumption (or (not x8724) (not x24684))
+:assumption (or x26297 x27039)
+:assumption (or (not x22683) (not x4910))
+:assumption (or x15806 x22486)
+:assumption (or (not x23978) (not x3876))
+:assumption (or x26602 (not x27277))
+:assumption (or (not x19854) (not x21413) x21996 (not x20645) x31322)
+:assumption (or x8639 (not x1393))
+:assumption (or x9751 x10498 (not x24271) (not x11734) (not x21650) (not x14078) x29250 x5834)
+:assumption (or (not x18716) x7537)
+:assumption (or x26637 x10747 (not x626) x8388)
+:assumption (or x13543 x22923)
+:assumption (or (not x13942) (not x827) x16305 x25087 (not x13603) (not x8661) (not x26657) x2413)
+:assumption (or (not x29978) (not x24731) (not x7561) (not x23295) x30110 (not x9718) x2)
+:assumption (or (not x18031) (not x20131))
+:assumption (or (not x15124) x25818)
+:assumption (or (not x12131) x3564)
+:assumption (or (not x9826) (not x13435))
+:assumption (or x9025 x718)
+:assumption (or x27419 x22580)
+:assumption (or (not x21648) (not x1228))
+:assumption (or (not x7537) (not x5392))
+:assumption (or x20042 (not x15635))
+:assumption (or (not x30457) x142 x6500 x22855)
+:assumption (or (not x7992) (not x15911))
+:assumption (or (not x15810) (not x6606))
+:assumption (or (not x14898) (not x18756))
+:assumption (or x26020 (not x25521) x9439)
+:assumption (or x16526 x21716)
+:assumption (or (not x8002) x18355)
+:assumption (or x27059 x2594)
+:assumption (or (not x13817) x1393)
+:assumption (or (not x5795) (not x30238))
+:assumption (or (not x3231) x13803)
+:assumption (or (not x8602) x11187)
+:assumption (or x28632 x4766)
+:assumption (or (not x23244) x20279)
+:assumption (or (not x29765) x24228)
+:assumption (or (not x16031) x5367 x1445)
+:assumption (or x19128 x13252)
+:assumption (or (not x14365) (not x12791))
+:assumption (or (not x28912) x12458 (not x29649) x18725)
+:assumption (or (not x17729) (not x20865))
+:assumption (or (not x10874) (not x6307) (not x16604) x24087)
+:assumption (or x13645 x13351)
+:assumption (or (not x27886) (not x4791))
+:assumption (or (not x31097) x8226)
+:assumption (or (not x10909) (not x19743))
+:assumption (or x18461 x1393)
+:assumption (or x20723 (not x16156) x30113)
+:assumption (or x25104 (not x1718))
+:assumption (or (not x27648) x4728)
+:assumption (or x13163 x1392)
+:assumption (or x24928 x196)
+:assumption (or x21989 (not x19451))
+:assumption (or (not x3150) x19850)
+:assumption (or (not x25659) (not x15225))
+:assumption (or (not x22251) x3590)
+:assumption (or (not x4377) (not x15195))
+:assumption (or (not x15539) x20850)
+:assumption (or x29991 x23630)
+:assumption (or (not x28657) (not x3996))
+:assumption (or x20981 x5385 x13674 x12029 x11459 x25239)
+:assumption (or x16510 (not x140))
+:assumption (or x26880 x24073 (not x9531) x13576)
+:assumption (or (not x10663) x14558)
+:assumption (or (not x14303) x21653)
+:assumption (or (not x23506) (not x26777) x11260)
+:assumption (or x23989 (not x23247))
+:assumption (or x444 x3263)
+:assumption (or x5306 (not x30642) (not x5846))
+:assumption (or (not x11883) x5176)
+:assumption (or (not x10581) (not x13576))
+:assumption (or (not x24440) x16117)
+:assumption (or x17459 x18522)
+:assumption (or (not x7030) x801)
+:assumption (or x27169 (not x27904))
+:assumption (or x13487 x30141)
+:assumption (or x12968 x19501)
+:assumption (or x10022 (not x10866))
+:assumption (or x31184 x11564)
+:assumption (or (not x9087) x1156)
+:assumption (or x27521 x26982)
+:assumption (or x24107 (not x21470))
+:assumption (or x25334 (not x1379))
+:assumption (or x7297 (not x16774))
+:assumption (or x8002 x7686)
+:assumption (or (not x8002) (not x31159) (not x23766))
+:assumption (or (not x8591) x13622)
+:assumption (or (not x19039) (not x11398))
+:assumption (or x25470 x10443)
+:assumption (or (not x22626) x22531)
+:assumption (or x11403 (not x18701))
+:assumption (or x10995 (not x8791) (not x5980))
+:assumption (or x2837 (not x18957))
+:assumption (or x23386 x29233)
+:assumption (or x1213 x5528)
+:assumption (or (not x7777) (not x17114))
+:assumption (or x16357 (not x21095))
+:assumption (or (not x9027) (not x6969))
+:assumption (or (not x4366) (not x6661) x16197 x12346)
+:assumption (or (not x16185) (not x19459))
+:assumption (or (not x13923) (not x13354))
+:assumption (or x5997 (not x1348))
+:assumption (or (not x8002) (not x20025))
+:assumption (or x13821 (not x19954))
+:assumption (or x18329 (not x11777))
+:assumption (or (not x16853) x29715)
+:assumption (or (not x27560) x215)
+:assumption (or x5004 x24283)
+:assumption (or x18371 x727)
+:assumption (or x4294 x1486)
+:assumption (or x14998 x7439)
+:assumption (or x21576 (not x24024) x13795 x15977 x3236)
+:assumption (or (not x22572) x11559)
+:assumption (or x7085 x28103)
+:assumption (or (not x20873) x15033)
+:assumption (or x17059 x12291)
+:assumption (or (not x17359) x23960 (not x30506) x31384 x21342)
+:assumption (or (not x5773) (not x20325) x22199 (not x27027) x21210)
+:assumption (or (not x20402) (not x915))
+:assumption (or (not x16734) x24096 x4532)
+:assumption (or (not x4339) (not x28342))
+:assumption (or (not x523) (not x4023))
+:assumption (or (not x26061) (not x25350) (not x26365))
+:assumption (or (not x29312) x8167)
+:assumption (or (not x20491) x22513 x12798 (not x27170))
+:assumption (or (not x14641) (not x20929) x29646 x20402)
+:assumption (or x26373 x21617)
+:assumption (or (not x27407) x28912)
+:assumption (or (not x25366) (not x2835))
+:assumption (or (not x12403) (not x24674))
+:assumption (or x24446 (not x25923))
+:assumption (or x4414 (not x11412))
+:assumption (or (not x18239) (not x9437))
+:assumption (or x28034 x28611 x28708 (not x15483) x28881 (not x10252) (not x3739))
+:assumption (or (not x16078) x5170)
+:assumption (or (not x16699) x1355)
+:assumption (or (not x22632) (not x17143))
+:assumption (or x2127 (not x23031) x8043 x5493)
+:assumption (or x27668 x11106)
+:assumption (or x11486 x2290)
+:assumption (or x2032 (not x9937))
+:assumption (or (not x18036) (not x19676))
+:assumption (or (not x28874) x8354)
+:assumption (or (not x25608) (not x8658))
+:assumption (or (not x11675) x301)
+:assumption (or x10659 (not x6302))
+:assumption (or (not x14512) x13011)
+:assumption (or x17888 x27462)
+:assumption (or (not x3383) x512)
+:assumption (or x16883 x22821)
+:assumption (or (not x11278) x2252)
+:assumption (or (not x25968) (not x17683) (not x12374))
+:assumption (or (not x25700) x8772)
+:assumption (or x16374 x21235)
+:assumption (or x8002 (not x22154) x29027 x19977 x13956)
+:assumption (or x19248 (not x17779))
+:assumption (or (not x11804) (not x25659))
+:assumption (or x6746 x11435 x30633)
+:assumption (or x17711 x25350)
+:assumption (or x31802 (not x5146))
+:assumption (or x1306 (not x6745))
+:assumption (or x30138 x16265)
+:assumption (or x25417 (not x4251))
+:assumption (or x11693 (not x11369))
+:assumption (or x30113 (not x25220) (not x22295))
+:assumption (or (not x23249) (not x30385))
+:assumption (or (not x9008) x9353 x14001)
+:assumption (or x1070 x16344)
+:assumption (or x1233 (not x25818))
+:assumption (or x12530 (not x9218))
+:assumption (or (not x31134) x25662)
+:assumption (or (not x18137) x16005)
+:assumption (or x6951 (not x23220) x13576 x1795)
+:assumption (or (not x5215) x4393)
+:assumption (or (not x11654) x5447)
+:assumption (or (not x13956) x14106 x25981)
+:assumption (or (not x9917) x31774)
+:assumption (or x18642 x8017)
+:assumption (or (not x21652) (not x18601))
+:assumption (or x6810 x23117)
+:assumption (or x18632 x3473 x30228)
+:assumption (or x23676 x20813 (not x3673) (not x25033) (not x16869))
+:assumption (or (not x14102) x31216)
+:assumption (or x11338 (not x4556))
+:assumption (or (not x5367) (not x3123))
+:assumption (or (not x30677) x11819)
+:assumption (or (not x26469) (not x13032))
+:assumption (or x5551 x23630)
+:assumption (or (not x25558) (not x555))
+:assumption (or (not x22396) x1413)
+:assumption (or x11870 x6951)
+:assumption (or (not x10669) x8975)
+:assumption (or x28890 (not x1478) x8599)
+:assumption (or (not x28181) (not x7997))
+:assumption (or (not x13009) x27919)
+:assumption (or (not x14436) x1679)
+:assumption (or (not x22073) x12801)
+:assumption (or x16664 (not x16747))
+:assumption (or x31885 (not x10930))
+:assumption (or (not x20652) x25540)
+:assumption (or x20010 x15273 (not x5991) x4655 x4822 (not x14575) (not x19771) x7038)
+:assumption (or (not x11011) x13487)
+:assumption (or x30779 x31829)
+:assumption (or x17731 x16880)
+:assumption (or x5082 (not x31233))
+:assumption (or (not x31645) (not x9862) (not x31503) (not x28066))
+:assumption (or x1223 (not x25802))
+:assumption (or x12415 x16615)
+:assumption (or (not x25457) (not x9982))
+:assumption (or x8602 x2390 (not x28356))
+:assumption (or (not x20453) (not x8757))
+:assumption (or x18124 (not x26675) x25659)
+:assumption (or x27893 x28607 (not x5667) (not x10959))
+:assumption (or (not x27893) x13769)
+:assumption (or x12213 x12183)
+:assumption (or x10350 x8711)
+:assumption (or x15333 x28513)
+:assumption (or x10266 (not x27104) x29806 (not x22329) x13715 x21029 x25407)
+:assumption (or x30183 x7961 (not x21453) x19944 x4336)
+:assumption (or (not x19501) x19502)
+:assumption (or x11733 x10336)
+:assumption (or (not x10724) x6925)
+:assumption (or (not x27169) x23116)
+:assumption (or (not x25432) x25418)
+:assumption (or (not x12409) x19903)
+:assumption (or (not x1328) x10583)
+:assumption (or x8532 x17618 x19338 (not x2615))
+:assumption (or x20867 (not x25299) x18754 (not x12251) x1101)
+:assumption (or x18441 (not x12508) (not x4026))
+:assumption (or x22714 (not x18859))
+:assumption (or (not x27134) x25879)
+:assumption (or x28357 (not x22166))
+:assumption (or x30285 (not x5886))
+:assumption (or x23510 (not x9728))
+:assumption (or x2723 x6896)
+:assumption (or x5335 (not x548) (not x6347) x28177 (not x24779) (not x7647) x24006 (not x12940))
+:assumption (or (not x1527) x6721)
+:assumption (or (not x9168) (not x17612))
+:assumption (or (not x12475) x22476)
+:assumption (or (not x13576) (not x9129))
+:assumption (or x20217 x7255)
+:assumption (or x13691 (not x18455))
+:assumption (or (not x11254) x24858)
+:assumption (or x4419 x29183)
+:assumption (or x2970 x5741)
+:assumption (or x19992 (not x29585))
+:assumption (or x6274 x17459)
+:assumption (or x570 x30005)
+:assumption (or x9587 x640)
+:assumption (or x28314 x29193)
+:assumption (or x15006 x28613)
+:assumption (or (not x24557) (not x26969))
+:assumption (or x11578 (not x11281))
+:assumption (or x14699 x19864)
+:assumption (or x18859 (not x4042) x19118)
+:assumption (or (not x17088) x28664)
+:assumption (or x10177 x14839)
+:assumption (or (not x18343) (not x20361))
+:assumption (or x13674 x13956 x15102 (not x28961) x8002 x23244)
+:assumption (or (not x28287) x31271)
+:assumption (or (not x11374) (not x12396) x25077 (not x557) x17310 x13833 (not x18225) x29730)
+:assumption (or (not x21135) (not x14472))
+:assumption (or x16611 x26440)
+:assumption (or (not x15887) x10808)
+:assumption (or (not x7477) (not x10252))
+:assumption (or x5119 x26067)
+:assumption (or x25060 (not x13943))
+:assumption (or x16374 (not x3590) x29687)
+:assumption (or (not x30195) x31773)
+:assumption (or x22039 (not x28890) x4383)
+:assumption (or (not x16220) (not x3698))
+:assumption (or (not x24831) (not x8002))
+:assumption (or (not x6289) (not x22672))
+:assumption (or (not x27915) x11872)
+:assumption (or x21938 (not x26945))
+:assumption (or x1216 x6294)
+:assumption (or x25672 x20767)
+:assumption (or (not x21298) (not x30056) (not x19666) (not x28265))
+:assumption (or x15987 (not x4256) (not x26568) x21273)
+:assumption (or (not x20878) (not x20835))
+:assumption (or (not x25659) x1099 (not x26547))
+:assumption (or (not x26939) x15002)
+:assumption (or x10545 (not x24038))
+:assumption (or (not x26280) x28483)
+:assumption (or x30864 (not x24148) (not x2931) x12515 x822 (not x19081))
+:assumption (or (not x13956) x31329)
+:assumption (or (not x31871) x6837 x3789 (not x7318) x22912 (not x17487) (not x15034))
+:assumption (or x12879 (not x20651) (not x27012))
+:assumption (or x7331 x958 x6003)
+:assumption (or x11222 (not x29624))
+:assumption (or x884 x10767)
+:assumption (or x30032 x28471 (not x964) x169)
+:assumption (or (not x19863) x30038)
+:assumption (or (not x20378) x31581 x30113)
+:assumption (or (not x8910) x30420)
+:assumption (or x18407 (not x29959) (not x20223) (not x6594) (not x4136))
+:assumption (or x25435 x13709)
+:assumption (or (not x5755) x13352)
+:assumption (or (not x8627) x13679)
+:assumption (or (not x23722) x2322)
+:assumption (or (not x31657) x25659)
+:assumption (or x13183 x25386)
+:assumption (or x29434 x22539)
+:assumption (or (not x7398) x21337)
+:assumption (or (not x16448) (not x7867))
+:assumption (or (not x31692) (not x24756))
+:assumption (or (not x20692) x18570)
+:assumption (or (not x25888) (not x26837))
+:assumption (or (not x9571) (not x2381))
+:assumption (or x23399 x9631)
+:assumption (or x30274 (not x11636))
+:assumption (or x19802 (not x19381))
+:assumption (or (not x5616) x7199)
+:assumption (or x21333 x11020 (not x8975) x10669 (not x3979) x245)
+:assumption (or x14983 (not x4215))
+:assumption (or (not x3383) x26592)
+:assumption (or x5370 x19664)
+:assumption (or x6549 x12066 (not x5528))
+:assumption (or x4800 (not x11978))
+:assumption (or (not x19566) x12669)
+:assumption (or x24429 x16160)
+:assumption (or x1697 (not x31088))
+:assumption (or (not x29663) x13068 (not x27332) x19992 (not x20163) x10356)
+:assumption (or x18864 x8736)
+:assumption (or (not x5090) x24653)
+:assumption (or (not x8953) (not x4673))
+:assumption (or x11885 x9380)
+:assumption (or x29929 (not x16068))
+:assumption (or (not x18567) x28045)
+:assumption (or x11859 (not x9054))
+:assumption (or (not x18887) (not x16745))
+:assumption (or x3595 (not x31076))
+:assumption (or (not x14227) (not x26505))
+:assumption (or x14625 (not x30828))
+:assumption (or x1212 x23956)
+:assumption (or (not x15003) (not x15410) x26856 (not x16510) (not x12826) (not x13298))
+:assumption (or x20857 x12688)
+:assumption (or x26877 x21596)
+:assumption (or (not x22099) x26067)
+:assumption (or x7483 x16561)
+:assumption (or x16952 (not x9868))
+:assumption (or x14594 x22327)
+:assumption (or x18559 x28991)
+:assumption (or x16869 x7557)
+:assumption (or (not x9222) x24751)
+:assumption (or (not x9305) x24994 x28633 x12578)
+:assumption (or (not x15721) x28500)
+:assumption (or x18501 x3946)
+:assumption (or (not x29427) x8002 (not x29956))
+:assumption (or x2804 x14222)
+:assumption (or (not x20301) (not x499) (not x5538) x20915)
+:assumption (or (not x9884) x30707)
+:assumption (or (not x7286) x23932 (not x18667))
+:assumption (or x12930 x14133)
+:assumption (or (not x3787) x22538)
+:assumption (or (not x1882) (not x4406))
+:assumption (or x231 (not x20669))
+:assumption (or (not x29610) x26565)
+:assumption (or (not x23335) x18860)
+:assumption (or (not x13795) x5594)
+:assumption (or (not x7511) x24931)
+:assumption (or x18578 x24472)
+:assumption (or (not x30218) x24341 (not x6795) x7687 (not x23609))
+:assumption (or x11775 x31224)
+:assumption (or (not x7699) (not x19522))
+:assumption (or (not x9008) (not x16782))
+:assumption (or x19349 (not x6871))
+:assumption (or (not x27278) (not x16802))
+:assumption (or x10064 x12104)
+:assumption (or x23252 (not x3704))
+:assumption (or x28885 (not x16170) (not x30110) (not x2640))
+:assumption (or (not x25721) x6553)
+:assumption (or (not x8648) (not x24499))
+:assumption (or x23422 (not x12147))
+:assumption (or (not x877) (not x8104))
+:assumption (or (not x18519) (not x26439))
+:assumption (or (not x16306) x18851)
+:assumption (or x17382 x4850)
+:assumption (or (not x10391) (not x31578))
+:assumption (or x3989 (not x17600))
+:assumption (or (not x19591) (not x8685))
+:assumption (or x4733 x11739 x11637 (not x26231))
+:assumption (or (not x19368) (not x23587))
+:assumption (or (not x28233) (not x19686))
+:assumption (or x865 (not x16220))
+:assumption (or (not x2312) (not x19410) x28184 x28980 (not x8357) x4522)
+:assumption (or (not x3435) (not x8992) (not x258) x27537)
+:assumption (or x8884 x22803)
+:assumption (or (not x13509) (not x10874))
+:assumption (or (not x24499) (not x23594))
+:assumption (or x17857 (not x788))
+:assumption (or (not x29806) (not x10266))
+:assumption (or (not x6855) x18409)
+:assumption (or (not x26855) (not x1993))
+:assumption (or (not x24493) x26552)
+:assumption (or x558 x25724 (not x18760))
+:assumption (or (not x8002) x9223 x19890)
+:assumption (or (not x10655) x11809)
+:assumption (or (not x24113) x9703 x16548)
+:assumption (or (not x21298) x4971)
+:assumption (or x19583 x19992)
+:assumption (or (not x26842) (not x11100))
+:assumption (or x3553 (not x17440))
+:assumption (or (not x20311) (not x20276))
+:assumption (or (not x22710) x14839 (not x17632) x30722)
+:assumption (or x11940 (not x21653) x13909)
+:assumption (or (not x2868) (not x2031))
+:assumption (or (not x26771) x1657)
+:assumption (or (not x26982) (not x26736))
+:assumption (or (not x20585) x4133)
+:assumption (or x10638 (not x29246))
+:assumption (or x8234 x26378)
+:assumption (or (not x21117) (not x23915))
+:assumption (or x21955 (not x2896))
+:assumption (or (not x4110) x4844)
+:assumption (or x223 (not x22840))
+:assumption (or (not x9718) x2 (not x7561) (not x23295) (not x24731) (not x28885) x4484)
+:assumption (or (not x17359) x31198 x16025)
+:assumption (or x30534 (not x16363))
+:assumption (or x19676 (not x27851) x26731 (not x14325) (not x21884))
+:assumption (or x31558 (not x2498) x30365)
+:assumption (or x16664 x30801)
+:assumption (or (not x30309) (not x167))
+:assumption (or (not x20482) (not x8072))
+:assumption (or x31923 x13171)
+:assumption (or (not x22641) (not x4165))
+:assumption (or (not x21261) x24715)
+:assumption (or (not x15086) (not x17818))
+:assumption (or x11815 (not x6983))
+:assumption (or x1235 (not x18669))
+:assumption (or (not x5394) x31007)
+:assumption (or x24858 x9242)
+:assumption (or (not x6651) (not x16138))
+:assumption (or x17225 x7435 x18450 x2838)
+:assumption (or x8875 (not x19785))
+:assumption (or (not x28446) (not x16285))
+:assumption (or (not x13863) x28916)
+:assumption (or x25366 (not x29734) x16826)
+:assumption (or (not x12289) x1773)
+:assumption (or (not x4276) x31679)
+:assumption (or x13203 x16127)
+:assumption (or (not x15537) x24018)
+:assumption (or (not x12043) (not x13829))
+:assumption (or x20954 (not x15054))
+:assumption (or (not x15451) (not x29618))
+:assumption (or (not x1001) (not x22960))
+:assumption (or x19658 x8453)
+:assumption (or x28646 (not x4605))
+:assumption (or x23281 (not x5703))
+:assumption (or (not x20468) x6149)
+:assumption (or x31595 x394)
+:assumption (or x5394 (not x10173))
+:assumption (or x19031 (not x873))
+:assumption (or x6530 x22663)
+:assumption (or (not x1701) (not x14312))
+:assumption (or (not x121) x987 (not x10054) (not x10501) (not x23399) x26413)
+:assumption (or (not x805) (not x27709))
+:assumption (or x28368 (not x16868))
+:assumption (or (not x11835) (not x169))
+:assumption (or x141 (not x15589))
+:assumption (or (not x29890) (not x22349))
+:assumption (or x31088 (not x1697))
+:assumption (or (not x2873) (not x4303))
+:assumption (or (not x13737) (not x14978))
+:assumption (or x21815 x20601)
+:assumption (or (not x10858) (not x11169))
+:assumption (or x5715 x17930 (not x103) (not x2849))
+:assumption (or x8540 (not x4480))
+:assumption (or x7570 (not x15276))
+:assumption (or x31544 x24247)
+:assumption (or (not x23806) x14274)
+:assumption (or (not x21565) (not x11170))
+:assumption (or x9790 (not x9451))
+:assumption (or (not x6105) x25801 (not x31369))
+:assumption (or x2404 (not x16690) x25659 x8961)
+:assumption (or x8157 (not x6044))
+:assumption (or x9670 x1638)
+:assumption (or (not x23243) x9050 x2146 x17155)
+:assumption (or x22277 x671)
+:assumption (or x1953 (not x13718))
+:assumption (or x27565 (not x3246))
+:assumption (or (not x16572) (not x7300))
+:assumption (or (not x13311) (not x5558) x24275 x27200 x791 (not x9388) (not x23861))
+:assumption (or x16389 (not x25659))
+:assumption (or (not x9647) (not x21526) (not x18042) x26775)
+:assumption (or (not x24751) x26429)
+:assumption (or x13919 x20795)
+:assumption (or x4425 x6115)
+:assumption (or x14258 x18042)
+:assumption (or x31618 (not x19509))
+:assumption (or (not x18042) (not x19885))
+:assumption (or (not x235) (not x19160))
+:assumption (or (not x18692) (not x29119))
+:assumption (or x1542 (not x4966) x14770 (not x31719))
+:assumption (or (not x31243) (not x14339))
+:assumption (or (not x170) x5425)
+:assumption (or (not x480) x19584)
+:assumption (or (not x18859) (not x11231) x17457)
+:assumption (or x9752 x2632)
+:assumption (or (not x13702) x25590)
+:assumption (or x17082 (not x10400))
+:assumption (or x29920 (not x21468))
+:assumption (or (not x9603) (not x8002))
+:assumption (or x25423 (not x13996) x29356 (not x4973))
+:assumption (or (not x8495) x347)
+:assumption (or x21070 (not x5726))
+:assumption (or x11206 x317)
+:assumption (or x17899 (not x20209))
+:assumption (or x30388 x9894)
+:assumption (or x5790 (not x7706))
+:assumption (or (not x24030) (not x2686))
+:assumption (or (not x31767) x6664)
+:assumption (or (not x4402) x14750 x29854 (not x395) (not x22946) (not x21791) (not x28411) (not x19720) x6061)
+:assumption (or x1195 (not x22362))
+:assumption (or (not x22786) x1621 x23558)
+:assumption (or (not x17075) (not x2195))
+:assumption (or x15829 x18629)
+:assumption (or x3757 (not x25659) x20503)
+:assumption (or x28988 (not x15985))
+:assumption (or x21761 (not x5446))
+:assumption (or (not x3453) (not x23347))
+:assumption (or (not x8553) (not x2939))
+:assumption (or (not x29949) (not x13813))
+:assumption (or (not x22255) (not x30303))
+:assumption (or x3679 x26758)
+:assumption (or x25323 x18146)
+:assumption (or x918 (not x22648))
+:assumption (or x18500 x30459)
+:assumption (or x25526 x18656)
+:assumption (or (not x27515) x25024 (not x14615) (not x30613))
+:assumption (or x8094 (not x16003))
+:assumption (or (not x13861) (not x7456))
+:assumption (or x28893 (not x26542))
+:assumption (or x18620 (not x14562))
+:assumption (or x14818 (not x2258))
+:assumption (or (not x28098) x20576)
+:assumption (or (not x19915) x28952)
+:assumption (or x2589 x13576)
+:assumption (or (not x10010) (not x8182))
+:assumption (or x21260 (not x5175) x19620 (not x6738))
+:assumption (or x31788 (not x18859) (not x21170))
+:assumption (or (not x30275) (not x14251))
+:assumption (or x6773 x46 x16741)
+:assumption (or (not x21653) (not x680))
+:assumption (or (not x22517) x13576)
+:assumption (or x9740 (not x9531) (not x7056))
+:assumption (or (not x3491) (not x2722))
+:assumption (or x9394 (not x13576) (not x13761))
+:assumption (or (not x30561) x3559)
+:assumption (or x24919 x14408)
+:assumption (or (not x30257) (not x26096))
+:assumption (or (not x8002) x6738)
+:assumption (or x17176 x24824)
+:assumption (or (not x25659) x28119)
+:assumption (or (not x13018) x3516 x4363)
+:assumption (or x6478 x2769 x29962 x17880 x11857 (not x5417) x30410)
+:assumption (or (not x5597) (not x15985))
+:assumption (or x9971 (not x1020))
+:assumption (or (not x9287) (not x11864))
+:assumption (or (not x29132) x14469)
+:assumption (or x21549 x7434 (not x22431) (not x27541) (not x28139) (not x16510))
+:assumption (or (not x19991) x90)
+:assumption (or x19938 x14034)
+:assumption (or (not x778) (not x2429))
+:assumption (or (not x17359) x28130 x3760 x26432)
+:assumption (or (not x24676) (not x11227))
+:assumption (or (not x13956) (not x18756))
+:assumption (or (not x8026) x28636 x10282 (not x19529) x19152 (not x19676))
+:assumption (or x895 x1921)
+:assumption (or x29831 (not x13145))
+:assumption (or x18584 x4842)
+:assumption (or (not x14203) x1864)
+:assumption (or (not x5561) (not x19657))
+:assumption (or x6978 (not x2317))
+:assumption (or x25110 x31583)
+:assumption (or (not x807) x24079 (not x4786))
+:assumption (or (not x25227) (not x20424))
+:assumption (or x31884 x23725)
+:assumption (or (not x22873) (not x25223))
+:assumption (or x12488 x22206)
+:assumption (or x7174 (not x11676))
+:assumption (or (not x17036) (not x4380) x16275 x30138)
+:assumption (or (not x18231) x15599)
+:assumption (or x26362 (not x12450))
+:assumption (or x3190 x8055)
+:assumption (or x26958 x15366)
+:assumption (or x21495 x21751)
+:assumption (or (not x17730) x18586 (not x5224) x10464 (not x24388) (not x13564) (not x15120) x26411 (not x8017))
+:assumption (or x20344 (not x8447))
+:assumption (or (not x5124) (not x25482))
+:assumption (or x6975 x20941)
+:assumption (or (not x14534) (not x7691) (not x30937))
+:assumption (or (not x8965) (not x881))
+:assumption (or x6248 (not x25294))
+:assumption (or (not x26202) x23297)
+:assumption (or (not x3078) x12257)
+:assumption (or x14498 (not x27059) x2592)
+:assumption (or x10255 (not x6166) x15160 (not x15554))
+:assumption (or (not x4707) (not x13576))
+:assumption (or x10648 x20016)
+:assumption (or (not x29241) (not x24992))
+:assumption (or (not x15701) (not x6419))
+:assumption (or (not x10483) x24686)
+:assumption (or (not x25800) x7203)
+:assumption (or x24254 x9425 x27377 x29955 x17930 x13404)
+:assumption (or (not x9730) x964)
+:assumption (or (not x17723) x21630)
+:assumption (or x4568 x12901)
+:assumption (or x2340 (not x15220))
+:assumption (or (not x14389) (not x24164))
+:assumption (or (not x12987) (not x11428))
+:assumption (or (not x28445) x23678 x17324 x11395)
+:assumption (or (not x26426) (not x19992))
+:assumption (or (not x16025) x5903 x11940)
+:assumption (or x18324 (not x8849))
+:assumption (or x3169 (not x25986))
+:assumption (or (not x10802) x863)
+:assumption (or (not x1920) x13821 (not x27178))
+:assumption (or x9531 x6727)
+:assumption (or x14797 (not x19588))
+:assumption (or x22150 (not x1316))
+:assumption (or x144 x28242)
+:assumption (or x19671 (not x10618))
+:assumption (or (not x18163) (not x8002))
+:assumption (or x27981 (not x12628))
+:assumption (or x31450 (not x17973) (not x27184))
+:assumption (or (not x138) x19904)
+:assumption (or x15042 x19695)
+:assumption (or (not x15032) x13642)
+:assumption (or x13152 x13956 (not x6454))
+:assumption (or x21215 (not x11508))
+:assumption (or (not x18528) x31626)
+:assumption (or (not x995) x7351 x25178)
+:assumption (or (not x9531) x14785)
+:assumption (or (not x119) x29807)
+:assumption (or (not x5912) (not x30305))
+:assumption (or x28915 x10145)
+:assumption (or x19241 (not x20732))
+:assumption (or (not x14072) x22902)
+:assumption (or (not x10155) x24546)
+:assumption (or (not x21573) (not x17390))
+:assumption (or (not x19117) x28076 x24916 x9497 (not x29312) x1499 (not x7886) x23760)
+:assumption (or (not x28344) (not x865) x8170 x3698 (not x6671) x16220)
+:assumption (or x22577 (not x31907))
+:assumption (or (not x15081) x10312 x12477 x8920)
+:assumption (or (not x3784) (not x19291))
+:assumption (or x6781 x28700)
+:assumption (or x23386 x558 x18691)
+:assumption (or x15836 (not x7124))
+:assumption (or (not x25807) x14744)
+:assumption (or (not x22642) x9362)
+:assumption (or (not x11312) x2910 (not x8602))
+:assumption (or x703 (not x538))
+:assumption (or (not x1676) x8831)
+:assumption (or x2731 x24725 (not x480) (not x60))
+:assumption (or x7649 x18369 x25806 (not x26098))
+:assumption (or x26926 (not x27045))
+:assumption (or (not x9379) x22852)
+:assumption (or x26863 (not x5103) (not x27194) x1456)
+:assumption (or (not x29312) x29830 x24756 (not x28487))
+:assumption (or (not x11532) x25424)
+:assumption (or x14481 x24759)
+:assumption (or (not x9723) x15628)
+:assumption (or (not x2446) x12723)
+:assumption (or (not x17310) x4674)
+:assumption (or x4039 (not x21510))
+:assumption (or x7530 x8002 x23244 x13956 (not x26081) x25484)
+:assumption (or x3670 x15145)
+:assumption (or (not x9008) x13021)
+:assumption (or (not x31058) (not x4592))
+:assumption (or (not x28431) (not x16327))
+:assumption (or (not x6173) x26521)
+:assumption (or (not x5558) (not x3227))
+:assumption (or (not x30645) (not x4740))
+:assumption (or x31252 x18870)
+:assumption (or x6444 x15770)
+:assumption (or (not x2576) (not x23601))
+:assumption (or (not x19780) x17337)
+:assumption (or (not x8261) (not x22703))
+:assumption (or x30682 x17970)
+:assumption (or (not x12604) x5573 (not x14521) (not x24869))
+:assumption (or x15099 x4960)
+:assumption (or x15615 (not x9961))
+:assumption (or x21630 (not x27770))
+:assumption (or x26280 x10594)
+:assumption (or (not x31683) x16820)
+:assumption (or x17482 x4259 x6750 (not x13339) (not x1096))
+:assumption (or x9008 (not x30000))
+:assumption (or x13622 (not x1515))
+:assumption (or (not x11233) (not x3556))
+:assumption (or (not x24421) (not x25477))
+:assumption (or x11963 (not x22307))
+:assumption (or x22413 (not x15795))
+:assumption (or (not x14959) (not x11857))
+:assumption (or (not x15993) x2084)
+:assumption (or x3649 x6518 (not x10609) x26914 (not x19019))
+:assumption (or (not x31130) (not x5240))
+:assumption (or (not x2105) (not x12588))
+:assumption (or (not x18145) (not x13492))
+:assumption (or x22802 (not x3226) (not x12923))
+:assumption (or (not x6692) (not x29363))
+:assumption (or (not x2335) (not x24106))
+:assumption (or (not x8974) (not x15649))
+:assumption (or (not x4174) (not x14324))
+:assumption (or (not x4504) (not x29972))
+:assumption (or x873 x12906 x7431 x1259 (not x22611) x5512)
+:assumption (or x22155 x6379)
+:assumption (or x20440 x22164)
+:assumption (or (not x27548) (not x12774))
+:assumption (or (not x18125) (not x15606))
+:assumption (or (not x28597) (not x23956) (not x19508) x11511 (not x6918))
+:assumption (or (not x25596) (not x8060))
+:assumption (or x18859 (not x3328))
+:assumption (or x30172 (not x19183))
+:assumption (or x12040 (not x30031))
+:assumption (or x30562 (not x17474))
+:assumption (or x8002 (not x31194) x2512 x12954 (not x8455) x23139)
+:assumption (or x31801 x18335)
+:assumption (or x10453 x489)
+:assumption (or (not x30110) (not x29322))
+:assumption (or (not x25764) x23373)
+:assumption (or (not x14102) (not x13751))
+:assumption (or x26608 x25395)
+:assumption (or (not x6444) x18467)
+:assumption (or x27665 (not x18221))
+:assumption (or (not x25447) (not x20625) (not x918) x28978 (not x20924))
+:assumption (or x7051 x23308)
+:assumption (or (not x18066) x13972)
+:assumption (or (not x2268) (not x28436))
+:assumption (or x964 (not x169) x2281 x30053)
+:assumption (or (not x21544) x31617)
+:assumption (or (not x26482) x29674 (not x23839) (not x24315) x11661)
+:assumption (or (not x27414) x17859)
+:assumption (or x5423 (not x1953))
+:assumption (or (not x24694) x30007)
+:assumption (or (not x1591) x7136)
+:assumption (or x16802 (not x20610) (not x431))
+:assumption (or (not x19504) (not x31311))
+:assumption (or (not x20191) (not x18988))
+:assumption (or x27741 (not x3502))
+:assumption (or x2053 x2573)
+:assumption (or x8492 (not x4982) x27104 x13510)
+:assumption (or x9180 x6831)
+:assumption (or x716 (not x12871) x20991 x21107 x22632 x13628 x16159 x9635)
+:assumption (or (not x23712) x10349)
+:assumption (or (not x24109) x15952)
+:assumption (or (not x11432) (not x17657) x9008)
+:assumption (or x4605 (not x10178) x17159 (not x7638))
+:assumption (or x11217 x4634)
+:assumption (or x1936 x25316 (not x9439))
+:assumption (or (not x8715) (not x4880))
+:assumption (or (not x1588) x12297)
+:assumption (or (not x4122) x30667 x5528)
+:assumption (or (not x24467) (not x17359))
+:assumption (or (not x25659) (not x30038) x25587)
+:assumption (or x25978 x12420)
+:assumption (or x16802 x27675)
+:assumption (or x10122 (not x1359))
+:assumption (or (not x22659) x11569)
+:assumption (or x11151 (not x13644))
+:assumption (or (not x28522) (not x5907))
+:assumption (or (not x14365) (not x5980))
+:assumption (or x26483 x8002 (not x13048) (not x7064) x11330 x9115)
+:assumption (or (not x4271) (not x26824) x17033)
+:assumption (or (not x6113) (not x18139))
+:assumption (or (not x25659) x439)
+:assumption (or (not x4887) (not x31048))
+:assumption (or (not x23756) (not x25997))
+:assumption (or x2514 x19982 (not x4550))
+:assumption (or (not x1169) x25358)
+:assumption (or x19533 x30731)
+:assumption (or x18835 (not x17686))
+:assumption (or (not x13604) x19567)
+:assumption (or x21992 x21432 (not x1633) x17956)
+:assumption (or (not x25551) (not x18584) x24228 (not x28721) (not x4259))
+:assumption (or x21159 (not x13405) x12164 x19654 (not x12599))
+:assumption (or x2967 x7789)
+:assumption (or x19350 (not x7508))
+:assumption (or (not x3516) (not x7747))
+:assumption (or (not x21576) x24024)
+:assumption (or (not x894) x2811)
+:assumption (or (not x16171) (not x1099))
+:assumption (or (not x14687) x8500)
+:assumption (or (not x25659) x22305)
+:assumption (or (not x3692) x12032)
+:assumption (or (not x30877) x805 (not x23288) x17204 (not x3392) x9089)
+:assumption (or (not x20805) (not x22050))
+:assumption (or x14499 x23815)
+:assumption (or x8763 x22322)
+:assumption (or (not x3887) x16716)
+:assumption (or (not x31725) x1331)
+:assumption (or x30002 (not x6924) x853)
+:assumption (or (not x13829) x22144)
+:assumption (or (not x29738) x366)
+:assumption (or x7034 (not x15162))
+:assumption (or (not x8002) x10068)
+:assumption (or (not x25754) (not x19916))
+:assumption (or (not x11034) (not x1775))
+:assumption (or x15099 x29113)
+:assumption (or x7200 (not x17571) x28233 (not x11564))
+:assumption (or x21658 (not x26669))
+:assumption (or (not x10717) (not x27799) x1582)
+:assumption (or x1042 x19992 (not x26236) (not x18859) (not x6149))
+:assumption (or x4674 x557)
+:assumption (or (not x25659) x4671)
+:assumption (or x27047 x12679)
+:assumption (or x14978 x13737)
+:assumption (or x476 (not x12419))
+:assumption (or x21269 (not x1640) (not x23291) x27899 x14455 (not x10914) x30457)
+:assumption (or x19394 x27147)
+:assumption (or (not x10472) x7818)
+:assumption (or x20277 (not x7259))
+:assumption (or x3609 x28834)
+:assumption (or x23778 x21672)
+:assumption (or (not x14168) (not x20420))
+:assumption (or (not x14839) (not x13369))
+:assumption (or (not x1234) (not x23192))
+:assumption (or (not x28430) x12747 (not x16621))
+:assumption (or x19992 (not x27769) x24488 (not x6964))
+:assumption (or (not x8887) x534 (not x10909) (not x11926) x14800 x4979 (not x15372) (not x7509) x31816)
+:assumption (or (not x10351) (not x19755))
+:assumption (or (not x8806) x4196)
+:assumption (or (not x30155) (not x13508) x12111 x15468)
+:assumption (or (not x13525) x11335)
+:assumption (or (not x10765) x18369)
+:assumption (or (not x31175) (not x3782))
+:assumption (or x16231 (not x5558) x27950)
+:assumption (or x6295 (not x31304))
+:assumption (or (not x20803) (not x9551) x22362 (not x22628) x3382 (not x22963))
+:assumption (or x13980 (not x11864))
+:assumption (or x9008 (not x15983))
+:assumption (or (not x25130) x30219)
+:assumption (or (not x893) x7263)
+:assumption (or x9955 x27725)
+:assumption (or x15682 x11975 (not x12478) x14347)
+:assumption (or (not x27998) (not x26757))
+:assumption (or x17720 (not x23962))
+:assumption (or (not x32) (not x218))
+:assumption (or (not x20531) x21250)
+:assumption (or x11887 x22222)
+:assumption (or (not x4985) (not x20325) (not x12242) x369)
+:assumption (or x8491 (not x9351))
+:assumption (or (not x26459) x31091)
+:assumption (or x31418 x2203 (not x8382))
+:assumption (or (not x18737) x14641)
+:assumption (or x31752 x25784 (not x3264) (not x16704))
+:assumption (or (not x24597) x5447)
+:assumption (or (not x30981) (not x18515))
+:assumption (or x22108 (not x2753))
+:assumption (or (not x1552) (not x4259) x2619 (not x4098) x14628)
+:assumption (or (not x21146) x20787)
+:assumption (or x85 (not x19656))
+:assumption (or (not x967) (not x21469) x20497 x23468)
+:assumption (or (not x10957) x23399)
+:assumption (or x11267 (not x23986))
+:assumption (or x14656 x2703)
+:assumption (or x16355 x19285)
+:assumption (or x20899 x11758)
+:assumption (or (not x22577) x31907)
+:assumption (or x23792 (not x21785))
+:assumption (or (not x19416) (not x25784))
+:assumption (or x6946 x23634)
+:assumption (or (not x15795) x7335)
+:assumption (or (not x18066) (not x30039))
+:assumption (or x22771 (not x1505))
+:assumption (or (not x27664) (not x23157))
+:assumption (or (not x22744) (not x18780))
+:assumption (or x26503 (not x31010))
+:assumption (or x2253 x97)
+:assumption (or (not x6351) x16381)
+:assumption (or (not x10621) x15035)
+:assumption (or x12601 (not x18381) (not x17396) x3453 (not x22915))
+:assumption (or x20780 (not x16510) x7470 x29094 x12614 (not x27391))
+:assumption (or (not x27169) (not x29627))
+:assumption (or (not x5818) x24897)
+:assumption (or (not x16549) (not x11837) (not x17695) (not x24067))
+:assumption (or (not x5993) (not x16981))
+:assumption (or (not x25215) x3565)
+:assumption (or (not x8700) (not x13852))
+:assumption (or (not x8002) x13048)
+:assumption (or (not x9723) (not x7678))
+:assumption (or (not x4534) x21868)
+:assumption (or (not x17715) (not x12719))
+:assumption (or (not x10727) (not x31829))
+:assumption (or (not x19082) x15168)
+:assumption (or (not x23244) x964 x15319)
+:assumption (or x21344 x29105 (not x2133))
+:assumption (or (not x10774) x11758)
+:assumption (or (not x2184) (not x27537) (not x806))
+:assumption (or (not x30121) x24830)
+:assumption (or (not x19852) (not x1232))
+:assumption (or x20187 (not x6805))
+:assumption (or x16372 (not x20794))
+:assumption (or (not x17262) (not x25224) x10767)
+:assumption (or x26666 x5520)
+:assumption (or (not x7985) x21378)
+:assumption (or x21440 (not x5846) (not x22624))
+:assumption (or (not x5190) (not x9375))
+:assumption (or x11241 (not x20196))
+:assumption (or (not x14839) (not x22037))
+:assumption (or (not x17218) (not x8961))
+:assumption (or x9008 (not x12627))
+:assumption (or (not x2705) (not x27786))
+:assumption (or (not x13674) (not x9008) x31839 x15102 (not x5528))
+:assumption (or x1569 x5980)
+:assumption (or x14438 (not x31155))
+:assumption (or x28451 (not x16020))
+:assumption (or (not x26670) (not x18492))
+:assumption (or (not x18533) x31680 x27537 x30138)
+:assumption (or (not x2701) x3767)
+:assumption (or x22461 x30644)
+:assumption (or x24555 (not x16648))
+:assumption (or x2900 x22360 x25315)
+:assumption (or x24742 (not x4702))
+:assumption (or (not x29920) x21468)
+:assumption (or x1457 x8896)
+:assumption (or x3393 x30150)
+:assumption (or x8350 (not x18859))
+:assumption (or x20873 (not x15712) (not x27633) x30110 x28885 x1621)
+:assumption (or (not x8067) x1567)
+:assumption (or (not x1203) x1580)
+:assumption (or (not x24966) (not x21298) x20116 x29237)
+:assumption (or (not x21026) x14402)
+:assumption (or x20792 x15101 x18017 (not x4559))
+:assumption (or x11288 (not x2986))
+:assumption (or (not x2500) x23727 (not x542) (not x6771))
+:assumption (or (not x10203) x18823 x17674 x20754 (not x11713))
+:assumption (or x22956 x30779)
+:assumption (or x8373 (not x755))
+:assumption (or x23481 x30479 x5206 (not x9522))
+:assumption (or (not x1144) (not x7512))
+:assumption (or x9611 x9453)
+:assumption (or (not x9008) x3315)
+:assumption (or x18522 x9269 x2263 x30614 (not x5782) x2201 (not x20994) x7034 x6141)
+:assumption (or x31572 x10974)
+:assumption (or (not x480) x4421)
+:assumption (or (not x11262) x16556)
+:assumption (or (not x25008) (not x9008) (not x18500) (not x5528) x20411)
+:assumption (or (not x25548) x23527)
+:assumption (or (not x27096) x24326)
+:assumption (or (not x16748) x29645)
+:assumption (or (not x16510) x19448)
+:assumption (or x12628 x12141 x17340)
+:assumption (or x27526 (not x4299))
+:assumption (or x5146 x14150)
+:assumption (or x13556 (not x20360))
+:assumption (or (not x26234) (not x9008))
+:assumption (or (not x30469) x14236)
+:assumption (or x13956 (not x7619))
+:assumption (or x4021 x8586)
+:assumption (or x12512 (not x7007))
+:assumption (or (not x8874) x13161 (not x22091) x15556 (not x24142) (not x12817))
+:assumption (or x28537 (not x6947))
+:assumption (or x18262 x18306)
+:assumption (or x13918 x1385)
+:assumption (or (not x330) (not x19472))
+:assumption (or x21361 (not x11338))
+:assumption (or (not x27334) x658)
+:assumption (or (not x27678) x15182 (not x30701) x17449)
+:assumption (or x9412 x2705)
+:assumption (or (not x12454) (not x871))
+:assumption (or (not x10304) (not x2288))
+:assumption (or x20061 (not x8186))
+:assumption (or (not x30778) (not x3724))
+:assumption (or x26897 x4192)
+:assumption (or (not x30208) (not x3431))
+:assumption (or x14991 (not x514))
+:assumption (or (not x17677) (not x27093) x19876 x14570 (not x31795))
+:assumption (or (not x8830) x22071)
+:assumption (or x20136 x12242 (not x20325) (not x21062))
+:assumption (or (not x2330) x27188)
+:assumption (or x19103 x19764)
+:assumption (or x28540 x14145)
+:assumption (or (not x8819) x14821 (not x14852) x20504 (not x25861) (not x25330) (not x12593))
+:assumption (or x22169 (not x10365))
+:assumption (or (not x19314) (not x873))
+:assumption (or (not x5623) (not x480))
+:assumption (or x29198 (not x762) (not x5394))
+:assumption (or x7190 (not x8550))
+:assumption (or (not x15602) (not x3494))
+:assumption (or (not x14312) (not x17937))
+:assumption (or x22471 x13438)
+:assumption (or (not x30888) (not x11125))
+:assumption (or x23554 (not x5173))
+:assumption (or (not x5787) (not x23939))
+:assumption (or (not x2021) (not x12532))
+:assumption (or (not x22672) x3782)
+:assumption (or x14437 (not x11689))
+:assumption (or (not x25433) (not x29501) x24782 x30469 (not x3500) (not x25219))
+:assumption (or x8967 (not x16076))
+:assumption (or (not x13041) (not x12023))
+:assumption (or x30256 (not x29411))
+:assumption (or (not x18009) x29799)
+:assumption (or x18137 (not x16005))
+:assumption (or x3047 x19890 x8002)
+:assumption (or (not x9933) (not x8765))
+:assumption (or (not x17204) x23288)
+:assumption (or x3620 (not x3453) (not x22893))
+:assumption (or (not x28243) (not x1566))
+:assumption (or x3383 (not x3978))
+:assumption (or (not x4226) x26899 (not x7748))
+:assumption (or (not x29802) x14347)
+:assumption (or x5450 (not x26408))
+:assumption (or (not x4806) x16510)
+:assumption (or x2578 x28328 x20079)
+:assumption (or (not x10649) x22654)
+:assumption (or x1582 (not x4923))
+:assumption (or (not x23244) x14181)
+:assumption (or x3920 x16566 (not x8002))
+:assumption (or x14014 (not x24187))
+:assumption (or (not x20338) x20937)
+:assumption (or (not x3579) x17609)
+:assumption (or (not x12187) x23244)
+:assumption (or x5528 (not x2617))
+:assumption (or (not x30469) (not x9285))
+:assumption (or x11401 (not x5246))
+:assumption (or x29002 (not x15550))
+:assumption (or x26936 x11098)
+:assumption (or x10486 (not x20613))
+:assumption (or (not x21206) x17683)
+:assumption (or x5334 x21700)
+:assumption (or (not x227) x21329)
+:assumption (or x157 (not x24411))
+:assumption (or x17424 (not x2323) x9596 (not x1340) (not x14307))
+:assumption (or (not x23702) x4820)
+:assumption (or x16887 x8222)
+:assumption (or x26879 x14649)
+:assumption (or (not x3230) x8635)
+:assumption (or x15861 x30106)
+:assumption (or x26789 (not x1114))
+:assumption (or (not x8741) (not x9008))
+:assumption (or x7776 x16670)
+:assumption (or (not x10386) (not x4056))
+:assumption (or x9595 (not x3628))
+:assumption (or x28923 (not x28312) (not x13079) x21779)
+:assumption (or x9008 (not x29147))
+:assumption (or x8170 x16038 (not x17104) (not x27691) (not x15338))
+:assumption (or x26406 x3775 (not x7835))
+:assumption (or (not x8057) (not x9008) (not x18532))
+:assumption (or x28113 x14212)
+:assumption (or (not x30434) (not x10874) (not x28242) (not x18087))
+:assumption (or (not x14123) (not x27916))
+:assumption (or x25712 x31134)
+:assumption (or (not x12121) x25928)
+:assumption (or x28664 (not x26897))
+:assumption (or x13356 x4504 (not x28283))
+:assumption (or (not x26382) (not x27014))
+:assumption (or (not x28013) (not x14733))
+:assumption (or (not x14905) x17734)
+:assumption (or (not x9008) (not x5528) x17672 x30255 x14517)
+:assumption (or x15745 x25245 (not x8620) (not x1330) (not x1513))
+:assumption (or x1887 x13929)
+:assumption (or (not x29547) (not x127))
+:assumption (or (not x14138) (not x25002) x10336)
+:assumption (or x6896 x2346)
+:assumption (or x22809 (not x26191) (not x13498) (not x4790) (not x21594))
+:assumption (or (not x475) (not x10523))
+:assumption (or (not x11586) (not x5625))
+:assumption (or (not x31840) (not x11316))
+:assumption (or x27463 x8586 x28714 x7697)
+:assumption (or (not x910) (not x26044))
+:assumption (or x7702 x28108)
+:assumption (or x23198 x18945)
+:assumption (or (not x19537) x22484 (not x13576) x6331 x24928)
+:assumption (or (not x22570) (not x3410))
+:assumption (or x19124 x3425)
+:assumption (or (not x9269) (not x25630))
+:assumption (or x31912 x24659)
+:assumption (or x20764 (not x23720))
+:assumption (or x17240 (not x27068))
+:assumption (or (not x5274) (not x6178))
+:assumption (or x28159 (not x9408))
+:assumption (or (not x28524) x22291)
+:assumption (or (not x30358) (not x17618))
+:assumption (or x19428 x18912 x15643 (not x30954))
+:assumption (or x9532 x25342)
+:assumption (or (not x5922) (not x22260))
+:assumption (or x7942 (not x30752) (not x4731) (not x5176) x19513)
+:assumption (or x13467 (not x21162))
+:assumption (or x26196 x5739)
+:assumption (or x15624 (not x2543))
+:assumption (or x26566 (not x23548))
+:assumption (or (not x21477) x31114)
+:assumption (or (not x9584) x31081)
+:assumption (or x4419 x25659)
+:assumption (or (not x30491) x126)
+:assumption (or (not x25423) (not x24155) (not x29164))
+:assumption (or (not x9718) (not x29322))
+:assumption (or (not x6716) x15432)
+:assumption (or x4630 x28364)
+:assumption (or (not x3397) x10453)
+:assumption (or x20741 (not x1442))
+:assumption (or x871 x12454)
+:assumption (or (not x8579) (not x71))
+:assumption (or x24419 (not x7528) (not x9008))
+:assumption (or x20234 (not x6951))
+:assumption (or x25533 x31359)
+:assumption (or x27210 (not x7748))
+:assumption (or x5422 (not x7092))
+:assumption (or (not x28014) (not x21356) (not x2840))
+:assumption (or (not x7835) x30462)
+:assumption (or x7812 x25334)
+:assumption (or (not x25256) x7656 (not x5411))
+:assumption (or (not x13956) (not x30560) x1704)
+:assumption (or (not x19575) x21841)
+:assumption (or x27124 x26256)
+:assumption (or (not x24020) (not x3086))
+:assumption (or x18169 (not x18040))
+:assumption (or x5528 (not x23030))
+:assumption (or (not x15198) x12523)
+:assumption (or x13642 (not x9008))
+:assumption (or (not x3782) (not x17874) x22832 x16493 (not x6766))
+:assumption (or (not x22908) x19756)
+:assumption (or x1305 (not x15080))
+:assumption (or (not x1915) (not x5605) (not x5395) (not x8544))
+:assumption (or (not x11864) (not x17225))
+:assumption (or x25489 (not x31463))
+:assumption (or (not x21513) x6012)
+:assumption (or x6594 (not x23244) x7054)
+:assumption (or x12704 (not x29606) x21852 (not x18602) (not x11327) x9828)
+:assumption (or x8482 x5251)
+:assumption (or x15861 (not x16367) x27040)
+:assumption (or x2220 (not x2187))
+:assumption (or x7411 x7271)
+:assumption (or x2428 (not x29965))
+:assumption (or (not x19464) x24387)
+:assumption (or (not x16218) x20426)
+:assumption (or x22851 x30477)
+:assumption (or (not x20387) (not x3365))
+:assumption (or (not x9558) x27213)
+:assumption (or (not x10782) (not x31825))
+:assumption (or (not x13625) x29575)
+:assumption (or (not x25525) x31105)
+:assumption (or x27033 x19856)
+:assumption (or x9629 (not x5473))
+:assumption (or x1625 x15813)
+:assumption (or x20042 (not x2617))
+:assumption (or x23366 (not x13155))
+:assumption (or (not x14839) x15849)
+:assumption (or (not x7206) (not x2786))
+:assumption (or x4454 (not x27749))
+:assumption (or x4877 (not x31530))
+:assumption (or (not x20229) (not x9085))
+:assumption (or (not x28481) x9171)
+:assumption (or (not x17534) (not x14574))
+:assumption (or (not x13931) (not x17769))
+:assumption (or (not x10157) (not x22900) (not x25774) x3435)
+:assumption (or x14418 x12091)
+:assumption (or x29981 x27111)
+:assumption (or x8799 x18464)
+:assumption (or (not x228) x28399)
+:assumption (or (not x29110) x3646)
+:assumption (or (not x5451) x16122)
+:assumption (or x16721 (not x5029))
+:assumption (or x28541 (not x7912))
+:assumption (or x17098 (not x5274))
+:assumption (or x16382 (not x16791))
+:assumption (or x17709 x23991)
+:assumption (or (not x20211) x7507)
+:assumption (or (not x13956) (not x27359) x3980 (not x20042))
+:assumption (or (not x19693) (not x5545))
+:assumption (or (not x13385) x29610)
+:assumption (or (not x2828) x9069)
+:assumption (or (not x26096) (not x25839))
+:assumption (or (not x5472) (not x3732))
+:assumption (or x18551 (not x22981) x894 (not x5595))
+:assumption (or (not x30645) (not x8289))
+:assumption (or x26810 x17574 (not x20938) x15164)
+:assumption (or (not x11864) x587)
+:assumption (or (not x1021) (not x25147))
+:assumption (or x4732 x24295 x31642 x6099 x6378)
+:assumption (or x16939 (not x18069) x24308)
+:assumption (or x30625 x12811)
+:assumption (or x22390 (not x24796) x5000 x4642 x27991)
+:assumption (or x12909 (not x26432))
+:assumption (or x19802 x28520)
+:assumption (or (not x24965) x1721)
+:assumption (or x25106 x19033)
+:assumption (or (not x5415) x27815)
+:assumption (or (not x21873) (not x14839))
+:assumption (or x1981 x12106)
+:assumption (or x12146 (not x13837))
+:assumption (or x18545 x6184)
+:assumption (or x26820 x1698 x12654 (not x29624) (not x15116) (not x8986) x26937 (not x29387))
+:assumption (or (not x27233) x13355 x9515 (not x17849) (not x29154) (not x25455) x30645 (not x20795))
+:assumption (or x9963 (not x99))
+:assumption (or x24804 (not x12657))
+:assumption (or (not x19888) x31567)
+:assumption (or x16476 x21298)
+:assumption (or (not x24240) (not x20667))
+:assumption (or (not x22582) (not x30428))
+:assumption (or (not x9518) x21537)
+:assumption (or (not x22826) x9289)
+:assumption (or (not x26883) x14138)
+:assumption (or x18081 x25729)
+:assumption (or x23878 (not x18144))
+:assumption (or (not x12554) (not x21298))
+:assumption (or (not x23978) (not x6113))
+:assumption (or (not x2290) (not x11486))
+:assumption (or (not x17782) x5294)
+:assumption (or (not x3287) x12121)
+:assumption (or (not x27759) x18584 (not x15649))
+:assumption (or (not x3234) (not x27825))
+:assumption (or x9145 (not x30719))
+:assumption (or (not x26783) x13010)
+:assumption (or (not x376) (not x11578) x11281)
+:assumption (or (not x19002) x17225)
+:assumption (or (not x19140) (not x28269))
+:assumption (or (not x5953) x10031 x25026 (not x7041) (not x1782) (not x24553) (not x23689) x24760 x23303)
+:assumption (or x25827 x27701)
+:assumption (or x11938 x28270)
+:assumption (or x28604 x16511)
+:assumption (or (not x1421) (not x5405) x4564 x7138)
+:assumption (or x6700 (not x26802))
+:assumption (or (not x13128) x1563)
+:assumption (or (not x2133) (not x7890) (not x23244))
+:assumption (or x3469 x13142)
+:assumption (or x26161 x17911)
+:assumption (or (not x30400) (not x26016))
+:assumption (or (not x2278) x25241)
+:assumption (or x19280 x22992)
+:assumption (or (not x8608) x7643 x25490 (not x12244))
+:assumption (or x9005 x3207)
+:assumption (or (not x31757) x10064 x23244)
+:assumption (or (not x16139) x30820)
+:assumption (or x1399 (not x30976))
+:assumption (or (not x20761) x2625 x9008)
+:assumption (or (not x3068) (not x4559))
+:assumption (or x13956 (not x31610))
+:assumption (or x31574 (not x12888) (not x29312) (not x24756) x14962)
+:assumption (or (not x19477) x29211)
+:assumption (or x14269 (not x29454))
+:assumption (or (not x26788) x5479)
+:assumption (or (not x26897) (not x25915))
+:assumption (or (not x2265) (not x19656))
+:assumption (or x18859 x3780)
+:assumption (or x19490 x13433)
+:assumption (or (not x31076) (not x13820))
+:assumption (or x19428 (not x30954) x20683 (not x26638))
+:assumption (or x6408 (not x15515))
+:assumption (or x23678 (not x509))
+:assumption (or (not x24370) (not x29453))
+:assumption (or x24596 x25987)
+:assumption (or x12918 (not x11317))
+:assumption (or x11321 x23654)
+:assumption (or (not x11501) x3779)
+:assumption (or x22778 (not x16510))
+:assumption (or x24809 (not x23244))
+:assumption (or x9288 (not x12088))
+:assumption (or x29893 (not x10185))
+:assumption (or x4496 x21737)
+:assumption (or x27843 x8777)
+:assumption (or x6809 x3560)
+:assumption (or (not x12871) (not x3447))
+:assumption (or x3483 (not x19234) x26354)
+:assumption (or (not x19377) (not x5694))
+:assumption (or (not x4265) x7345)
+:assumption (or (not x10874) (not x11025))
+:assumption (or x23776 (not x7404))
+:assumption (or (not x30371) x30941)
+:assumption (or (not x16523) (not x7121) (not x19889) x16648)
+:assumption (or (not x11753) (not x29442))
+:assumption (or x26289 (not x21021))
+:assumption (or x20486 x20113)
+:assumption (or x27745 x18095)
+:assumption (or (not x6467) x21411)
+:assumption (or (not x31487) x859)
+:assumption (or x3658 x827)
+:assumption (or x10456 (not x2769))
+:assumption (or (not x30015) (not x6207))
+:assumption (or (not x19308) (not x23244))
+:assumption (or (not x30113) x13766 (not x5852) (not x20439))
+:assumption (or (not x14788) (not x14722))
+:assumption (or x1806 x3435)
+:assumption (or x9825 (not x24939))
+:assumption (or (not x27932) x3433)
+:assumption (or (not x22455) x30922 x9008)
+:assumption (or (not x27273) x25605)
+:assumption (or (not x5660) x5127)
+:assumption (or x21366 (not x8302))
+:assumption (or x3319 x2909)
+:assumption (or x20140 (not x20711))
+:assumption (or x11251 x19987 (not x11295) (not x31134) x10084)
+:assumption (or x8111 (not x27458))
+:assumption (or x2707 x6841)
+:assumption (or x28648 x17247)
+:assumption (or (not x23244) x17025 (not x13576))
+:assumption (or (not x28569) (not x8240))
+:assumption (or (not x27603) (not x18748))
+:assumption (or x24382 (not x8002))
+:assumption (or x11949 (not x17930) x30113)
+:assumption (or x11888 x20321)
+:assumption (or x27233 x19980 (not x27730) (not x21633))
+:assumption (or (not x2005) (not x8509))
+:assumption (or (not x21631) x8211)
+:assumption (or (not x26182) x25366)
+:assumption (or (not x26159) (not x87))
+:assumption (or (not x29363) (not x30138))
+:assumption (or (not x9172) x4385)
+:assumption (or x30627 x17807)
+:assumption (or (not x13384) x11124)
+:assumption (or x738 (not x20868))
+:assumption (or (not x3409) x19704)
+:assumption (or x14090 (not x31433))
+:assumption (or x12260 (not x17987))
+:assumption (or x23244 x10874 (not x15938))
+:assumption (or x19666 x14439)
+:assumption (or (not x10963) x16098)
+:assumption (or (not x1730) (not x27736) x10518)
+:assumption (or x30876 x6606)
+:assumption (or (not x23244) (not x3161))
+:assumption (or (not x5943) (not x27104))
+:assumption (or (not x31167) (not x17075) x30827)
+:assumption (or x15537 x27802)
+:assumption (or (not x28912) (not x1338) x29428)
+:assumption (or x1902 x1621)
+:assumption (or (not x28893) (not x3012) x5324 (not x3455) (not x35) x18654 (not x14062))
+:assumption (or x11434 x24505 x14172 (not x19942) (not x10279))
+:assumption (or (not x1398) (not x23020))
+:assumption (or x10542 x13253)
+:assumption (or x27884 (not x25238) x4525 x318)
+:assumption (or (not x20949) (not x27609) (not x12045) (not x22155))
+:assumption (or (not x6376) x17254)
+:assumption (or x25251 x28973)
+:assumption (or (not x23244) (not x2856))
+:assumption (or x5032 x14506)
+:assumption (or (not x15487) (not x4973))
+:assumption (or x4041 x21586)
+:assumption (or (not x14857) (not x6952))
+:assumption (or (not x5704) (not x2487))
+:assumption (or x15275 (not x8573))
+:assumption (or x23698 (not x12094))
+:assumption (or x27080 x12089)
+:assumption (or x28265 x23808)
+:assumption (or x30665 x16304 (not x27043))
+:assumption (or (not x16505) x20901)
+:assumption (or (not x1775) (not x8346))
+:assumption (or (not x21124) x29231 x1348 (not x5390) (not x30935) (not x5997))
+:assumption (or x5285 x2590)
+:assumption (or x12922 x3995)
+:assumption (or (not x13078) x28516)
+:assumption (or (not x3832) (not x15296))
+:assumption (or (not x15710) x4058)
+:assumption (or x23474 x3135)
+:assumption (or x18687 (not x23244))
+:assumption (or (not x10672) x18102)
+:assumption (or (not x6246) x19000)
+:assumption (or x28725 x7820)
+:assumption (or x2592 x13481)
+:assumption (or (not x15558) x11896)
+:assumption (or x10469 (not x8132))
+:assumption (or x10280 x14134)
+:assumption (or (not x6560) (not x12636) x29318 (not x23566) (not x8541) x15525 x531 x6050)
+:assumption (or x19159 x18373)
+:assumption (or (not x21690) (not x27288))
+:assumption (or x9371 (not x13961))
+:assumption (or (not x20325) x13333)
+:assumption (or (not x28803) (not x11591))
+:assumption (or x29595 x29631 x29552 x6549)
+:assumption (or (not x13414) (not x15227))
+:assumption (or x25460 x5528)
+:assumption (or x4746 (not x4911))
+:assumption (or (not x31403) (not x1490))
+:assumption (or (not x15660) (not x3150) x31829)
+:assumption (or (not x6969) x30777 (not x13164))
+:assumption (or x25315 x24774)
+:assumption (or x11840 (not x8642))
+:assumption (or (not x3802) x22088)
+:assumption (or (not x27003) x6669)
+:assumption (or x3828 x6468)
+:assumption (or x16542 x16535)
+:assumption (or (not x19577) (not x21298) (not x26273))
+:assumption (or (not x28912) x21825)
+:assumption (or x9014 x20155 x13041 x6982)
+:assumption (or (not x1176) x6867)
+:assumption (or (not x31423) (not x19677))
+:assumption (or (not x20059) x26870)
+:assumption (or (not x4923) (not x15573))
+:assumption (or (not x1582) (not x10848))
+:assumption (or (not x30954) (not x25654))
+:assumption (or (not x17640) (not x3435))
+:assumption (or x10436 (not x18859))
+:assumption (or x23999 x1801)
+:assumption (or (not x8807) x22490)
+:assumption (or x15710 x23712 (not x4058))
+:assumption (or (not x17183) (not x26251) (not x7296) (not x16608))
+:assumption (or (not x28384) (not x26280))
+:assumption (or x14051 x11783)
+:assumption (or (not x8979) (not x10673) x21669 (not x27192) (not x9416) x7831)
+:assumption (or x9853 x22932)
+:assumption (or (not x20764) (not x18441))
+:assumption (or (not x28490) (not x21856) (not x19093))
+:assumption (or x961 (not x31836))
+:assumption (or x16510 x9978)
+:assumption (or x22855 x3850)
+:assumption (or x30138 x12172)
+:assumption (or x25905 x10874 x4301 (not x19960) (not x31705))
+:assumption (or (not x28095) x11548)
+:assumption (or (not x4655) x11177)
+:assumption (or x2025 (not x12291))
+:assumption (or (not x14732) x17215)
+:assumption (or x4703 (not x25659))
+:assumption (or x29442 x4681)
+:assumption (or x6873 (not x19167) x27537 (not x6606))
+:assumption (or x13454 x74)
+:assumption (or x18063 (not x7527))
+:assumption (or (not x12485) (not x12254))
+:assumption (or x9944 x24012)
+:assumption (or x29445 x13288)
+:assumption (or (not x22854) x22500)
+:assumption (or x20045 (not x23952))
+:assumption (or x18271 (not x1922))
+:assumption (or (not x30817) x16954 (not x25659))
+:assumption (or (not x27362) x12536)
+:assumption (or (not x23864) x5593)
+:assumption (or (not x27500) x13768 (not x17075))
+:assumption (or x29208 (not x14132))
+:assumption (or x20154 x358)
+:assumption (or x20814 x14401)
+:assumption (or x10335 x11924)
+:assumption (or (not x3589) (not x4738))
+:assumption (or x16515 x31510)
+:assumption (or (not x26653) x5331)
+:assumption (or (not x25210) (not x28364))
+:assumption (or x22527 (not x23337))
+:assumption (or (not x29574) (not x22033))
+:assumption (or x9075 (not x31539))
+:assumption (or x7602 (not x12008))
+:assumption (or x21710 (not x21425))
+:assumption (or x291 (not x1171))
+:assumption (or (not x25659) (not x23918) x15525)
+:assumption (or (not x23385) x52 (not x17735))
+:assumption (or (not x18940) (not x29932) x707 (not x17279))
+:assumption (or x5447 (not x8143))
+:assumption (or (not x9614) (not x17155))
+:assumption (or x31328 (not x1004) (not x11158) x1729)
+:assumption (or x13798 (not x29740))
+:assumption (or x10232 (not x55))
+:assumption (or x3625 x27172)
+:assumption (or (not x1052) x1080)
+:assumption (or (not x23156) x23985 x14839)
+:assumption (or (not x28804) x13666)
+:assumption (or x5850 x11549)
+:assumption (or (not x28382) x6042)
+:assumption (or (not x12328) (not x19183))
+:assumption (or (not x13956) (not x28342) (not x22457) x26647)
+:assumption (or x8097 x3798)
+:assumption (or (not x5886) x15842)
+:assumption (or (not x4007) (not x11281))
+:assumption (or x12205 (not x13956) (not x24833))
+:assumption (or (not x10125) (not x3645))
+:assumption (or (not x15296) x30099)
+:assumption (or x22565 x21264 x25366)
+:assumption (or (not x25965) x16528)
+:assumption (or (not x849) (not x13831) (not x11618))
+:assumption (or x20568 (not x18369) x1665 x24441 (not x1450) (not x356))
+:assumption (or x17882 x19537)
+:assumption (or x27878 x11413)
+:assumption (or (not x15129) (not x26680))
+:assumption (or x17401 x7640)
+:assumption (or x3435 x5523 x1709 x1865 x1692 (not x20023) (not x16004) (not x12887))
+:assumption (or x28033 (not x15729) (not x10567))
+:assumption (or x9713 x3562 x30208 (not x13269))
+:assumption (or (not x31869) x11078)
+:assumption (or x15952 x29163)
+:assumption (or (not x5730) (not x3007))
+:assumption (or (not x5242) (not x14492))
+:assumption (or (not x12558) x13865)
+:assumption (or (not x4677) (not x2062))
+:assumption (or x9033 (not x23244))
+:assumption (or x12887 x28610)
+:assumption (or (not x31307) x12339 (not x13017) (not x22892) x18137 x10482 x2212 (not x374))
+:assumption (or (not x19793) x10770)
+:assumption (or (not x26054) x16200)
+:assumption (or (not x26938) x4865)
+:assumption (or x6284 (not x26707))
+:assumption (or x9835 x10979)
+:assumption (or (not x1199) (not x6780))
+:assumption (or (not x8725) x16768)
+:assumption (or (not x4146) x15984 x29633)
+:assumption (or (not x20828) x142)
+:assumption (or (not x14482) x1582)
+:assumption (or (not x15102) (not x31839))
+:assumption (or x6138 x17359 (not x7603) x26432)
+:assumption (or (not x28691) (not x15017))
+:assumption (or x29152 x6177)
+:assumption (or x26143 (not x28041) (not x7498) (not x27121) (not x7080) x23202 (not x15625))
+:assumption (or (not x15566) (not x11756))
+:assumption (or (not x26432) x18352)
+:assumption (or (not x17570) (not x6728))
+:assumption (or x31303 (not x24935))
+:assumption (or (not x25172) (not x985) (not x9296) (not x10941) (not x29715) (not x28197) x29670 x12942)
+:assumption (or (not x23402) (not x22852))
+:assumption (or (not x28578) (not x6388) x22548 (not x23647))
+:assumption (or x22112 x18635)
+:assumption (or (not x1692) x6607)
+:assumption (or (not x804) (not x13461) x5846)
+:assumption (or (not x16907) (not x15520) x2737 (not x28672))
+:assumption (or (not x13956) x23633 x9405 x25008)
+:assumption (or (not x16862) (not x28478))
+:assumption (or x11026 x27794)
+:assumption (or (not x27068) (not x21539))
+:assumption (or (not x6307) x4328)
+:assumption (or x6168 x31584)
+:assumption (or (not x12746) x29477)
+:assumption (or (not x7302) x23412)
+:assumption (or (not x7964) x14837)
+:assumption (or (not x2361) (not x6243))
+:assumption (or (not x22622) (not x1236))
+:assumption (or x12551 x9516)
+:assumption (or x9641 (not x12596) (not x16802))
+:assumption (or (not x22891) (not x6181))
+:assumption (or (not x13661) x10402)
+:assumption (or (not x3782) (not x29442) (not x15179) x4220)
+:assumption (or (not x21157) x25025)
+:assumption (or (not x26087) (not x21357))
+:assumption (or x16921 (not x11281))
+:assumption (or x15303 x16848)
+:assumption (or (not x5052) (not x11276))
+:assumption (or (not x31875) x2155)
+:assumption (or x14347 x21715)
+:assumption (or x25709 x6988)
+:assumption (or x18210 x24505)
+:assumption (or (not x19777) x20086 (not x26324) x30937)
+:assumption (or (not x676) x9008)
+:assumption (or x12576 (not x12101))
+:assumption (or (not x5171) (not x9008))
+:assumption (or (not x24677) (not x7334))
+:assumption (or (not x14839) (not x20420))
+:assumption (or x4349 x15001)
+:assumption (or (not x19042) x26893 (not x28951) x28364)
+:assumption (or (not x4450) x27170)
+:assumption (or (not x20060) x30041 x25758)
+:assumption (or x24462 (not x4273))
+:assumption (or (not x12335) x8069)
+:assumption (or x2021 x12532 (not x18859))
+:assumption (or x9531 x31349)
+:assumption (or x24565 x6794)
+:assumption (or (not x30936) (not x29692))
+:assumption (or (not x8532) x13114)
+:assumption (or x7548 x9316)
+:assumption (or (not x14174) (not x5747))
+:assumption (or (not x25097) x9008 x10471)
+:assumption (or (not x26536) (not x13129))
+:assumption (or x30353 (not x13320))
+:assumption (or (not x31119) x13000)
+:assumption (or x27517 x3374)
+:assumption (or (not x23895) x26652)
+:assumption (or x25423 x8302)
+:assumption (or (not x9008) (not x5528) x1542 x31141 x6780)
+:assumption (or x3901 (not x18388))
+:assumption (or x4576 (not x488))
+:assumption (or x5204 (not x18874))
+:assumption (or (not x18396) (not x15137))
+:assumption (or (not x3072) (not x26030))
+:assumption (or x3435 x2553)
+:assumption (or (not x20967) x25587)
+:assumption (or (not x1582) x11929 (not x11955))
+:assumption (or (not x8176) x25652)
+:assumption (or x13926 x18633)
+:assumption (or (not x5528) (not x8789))
+:assumption (or (not x18859) (not x23349) x24983)
+:assumption (or x24236 (not x29312))
+:assumption (or x16891 (not x9008))
+:assumption (or (not x13956) (not x9466) (not x15478) x26578)
+:assumption (or (not x8595) (not x16783))
+:assumption (or (not x9203) x6025)
+:assumption (or x21948 (not x26953) x25190 x6548 x24676 (not x27425))
+:assumption (or x3365 (not x13353) x25224)
+:assumption (or (not x26154) (not x26432))
+:assumption (or (not x20740) x29000)
+:assumption (or x22319 (not x14973))
+:assumption (or x5745 (not x20747))
+:assumption (or (not x14108) (not x24722))
+:assumption (or x12013 (not x5920))
+:assumption (or x20808 x15172)
+:assumption (or x12869 (not x23077) (not x16830) x4937 x15521 x29947 (not x2141) (not x5521) (not x18346))
+:assumption (or (not x23449) (not x16412) (not x18042) x11871 (not x12933) (not x9727) (not x16569) x24386 (not x5592))
+:assumption (or (not x19223) x28743)
+:assumption (or x1551 x21298)
+:assumption (or (not x10185) x31546)
+:assumption (or (not x25502) x12979)
+:assumption (or x30469 x29866)
+:assumption (or x25109 x29333 x21298 (not x18367))
+:assumption (or (not x12154) x16719)
+:assumption (or (not x30788) x18519)
+:assumption (or (not x20097) (not x3577))
+:assumption (or x31021 x13956)
+:assumption (or (not x27594) x27187)
+:assumption (or (not x24761) x10218)
+:assumption (or x24119 (not x13622) x8683)
+:assumption (or x29398 x19115)
+:assumption (or x7313 x22688)
+:assumption (or (not x2637) (not x4559))
+:assumption (or (not x23924) x14630)
+:assumption (or x10701 (not x21060) (not x29442))
+:assumption (or x27606 (not x21607))
+:assumption (or x31809 x14839)
+:assumption (or x18524 x8881 (not x14839))
+:assumption (or (not x12559) (not x7157))
+:assumption (or (not x6207) x30794)
+:assumption (or (not x26221) (not x19966))
+:assumption (or (not x21753) (not x17450))
+:assumption (or (not x3733) (not x30197) (not x29761) (not x25193))
+:assumption (or (not x8000) (not x23633))
+:assumption (or x8002 x19738)
+:assumption (or (not x3782) x29442 x20701)
+:assumption (or x1916 x14644)
+:assumption (or (not x26819) (not x3398))
+:assumption (or (not x7652) (not x18223) x7200 (not x4313))
+:assumption (or (not x20537) x319)
+:assumption (or x25911 x23058 (not x26157) (not x22550))
+:assumption (or x10166 (not x22218))
+:assumption (or (not x8429) x14696)
+:assumption (or x18888 (not x5290))
+:assumption (or (not x23964) (not x25911))
+:assumption (or (not x15711) (not x24066))
+:assumption (or x25593 x10998)
+:assumption (or (not x23854) x7903)
+:assumption (or x3441 x7835)
+:assumption (or x30707 (not x17117))
+:assumption (or (not x13199) x20277)
+:assumption (or (not x31311) (not x18151))
+:assumption (or (not x9749) x26979)
+:assumption (or (not x12742) (not x18028) x10261 (not x30208))
+:assumption (or x25056 x1042)
+:assumption (or (not x31742) (not x26184))
+:assumption (or x30177 (not x21699))
+:assumption (or x23166 x28858)
+:assumption (or x9008 x7848)
+:assumption (or (not x24058) x16372)
+:assumption (or (not x18514) (not x29902))
+:assumption (or x21153 (not x29695))
+:assumption (or (not x13229) x16461)
+:assumption (or x6408 x8632)
+:assumption (or (not x23244) (not x26550))
+:assumption (or x218 (not x25157))
+:assumption (or (not x21032) x21507)
+:assumption (or (not x9008) x12827)
+:assumption (or (not x21052) x12464)
+:assumption (or (not x7556) (not x5206))
+:assumption (or (not x31701) (not x9411))
+:assumption (or x31678 x890)
+:assumption (or x18679 x5613)
+:assumption (or x28408 x7667)
+:assumption (or (not x6969) (not x13087))
+:assumption (or (not x18862) (not x21345))
+:assumption (or (not x6671) x7843)
+:assumption (or x8335 (not x20087) x17604)
+:assumption (or (not x3435) x17239)
+:assumption (or (not x31101) (not x14970))
+:assumption (or x25505 x9008)
+:assumption (or (not x19627) (not x10909) (not x16435))
+:assumption (or x2818 x15069)
+:assumption (or (not x26826) x27963)
+:assumption (or x12090 x16402)
+:assumption (or (not x5898) (not x4724))
+:assumption (or x18284 (not x18318))
+:assumption (or x11035 (not x20482) (not x22360))
+:assumption (or (not x7846) (not x13029) x18455 (not x27673) x21879)
+:assumption (or x11076 (not x13980))
+:assumption (or x14902 (not x30825))
+:assumption (or x25454 x7255)
+:assumption (or (not x9482) (not x12072))
+:assumption (or (not x626) (not x23208))
+:assumption (or (not x27229) (not x20300))
+:assumption (or x23340 x14455)
+:assumption (or (not x12242) x28548)
+:assumption (or (not x5021) x16295)
+:assumption (or x4468 x2398 x6951 x12231 x1849 (not x28412) x14162 x29450)
+:assumption (or x31608 (not x30792) (not x19678) x20128 (not x2088) x20326 (not x14882))
+:assumption (or x31681 x25871)
+:assumption (or x28615 x8443)
+:assumption (or x31724 (not x11503))
+:assumption (or x12933 x16412)
+:assumption (or (not x3335) x12242)
+:assumption (or x15643 (not x2133) (not x27848) x7835)
+:assumption (or x5851 (not x12199))
+:assumption (or x17534 x19311)
+:assumption (or (not x1657) x21571)
+:assumption (or (not x19149) x12045)
+:assumption (or x762 x23761)
+:assumption (or (not x23299) (not x3410) x17970 (not x10759) (not x28195) x8270)
+:assumption (or x11163 (not x11931) (not x4575) (not x26349) (not x7194))
+:assumption (or (not x1426) (not x14960))
+:assumption (or (not x31853) (not x25231))
+:assumption (or x20221 x28256)
+:assumption (or x21298 x5206 (not x3830) x20394)
+:assumption (or (not x28239) x29240)
+:assumption (or (not x13211) (not x6771))
+:assumption (or x29217 x1015)
+:assumption (or x2089 (not x4176))
+:assumption (or x19110 (not x6243))
+:assumption (or x11792 (not x21242) (not x6149) x7375)
+:assumption (or (not x20566) x11933)
+:assumption (or (not x2995) (not x18225))
+:assumption (or (not x26206) x22694)
+:assumption (or x30262 x5183)
+:assumption (or (not x31391) (not x24189))
+:assumption (or x15418 x24262)
+:assumption (or (not x23275) x29002)
+:assumption (or (not x3494) (not x19495))
+:assumption (or x7786 x19710)
+:assumption (or x14221 (not x15517))
+:assumption (or (not x2657) x3443)
+:assumption (or (not x6340) (not x17244))
+:assumption (or (not x26619) (not x24321))
+:assumption (or (not x24477) (not x1712))
+:assumption (or (not x14839) x3432)
+:assumption (or x26127 (not x3264))
+:assumption (or (not x31226) (not x22197) (not x30113) (not x26617))
+:assumption (or x15165 x13418 x25659)
+:assumption (or x21298 (not x8757) x11575 x22823)
+:assumption (or (not x17607) x6250)
+:assumption (or x7454 (not x6528))
+:assumption (or x27093 x25659)
+:assumption (or (not x29523) (not x8224))
+:assumption (or (not x912) x26945 (not x2582) (not x17084) x20047 (not x170))
+:assumption (or x21298 x14639)
+:assumption (or (not x5314) x13477)
+:assumption (or (not x23943) (not x29572))
+:assumption (or x14684 x19410)
+:assumption (or (not x28242) (not x30296) x6337)
+:assumption (or x6275 (not x15113))
+:assumption (or x16648 (not x19889) x16875)
+:assumption (or x9713 x12404)
+:assumption (or (not x4622) (not x1263))
+:assumption (or (not x7504) (not x20664))
+:assumption (or x13626 (not x29194))
+:assumption (or x9777 x25514 x6891 (not x15160) x14053)
+:assumption (or x31074 (not x27116) x23775 x8632 x15797)
+:assumption (or (not x14624) (not x15869))
+:assumption (or x3171 x28925)
+:assumption (or x31555 x5960 (not x16860) x27916 x7537 (not x15597) x916)
+:assumption (or (not x25360) x12216 (not x5390) (not x11590) x29231 (not x21124))
+:assumption (or x25448 (not x480))
+:assumption (or (not x18250) (not x18610))
+:assumption (or x10848 x5905 x17489 (not x452))
+:assumption (or x18747 x27330 x14695 x10352 (not x18805) (not x20019))
+:assumption (or x21168 (not x26697))
+:assumption (or x4977 (not x17972))
+:assumption (or x25568 x23892)
+:assumption (or (not x22436) x16510)
+:assumption (or (not x24527) (not x29070))
+:assumption (or x3787 (not x2119) x14320)
+:assumption (or (not x13848) (not x18175))
+:assumption (or (not x23050) (not x14952))
+:assumption (or x142 (not x15234) x9677 (not x22855))
+:assumption (or x121 (not x14263))
+:assumption (or (not x25044) (not x16674))
+:assumption (or (not x20178) (not x5325))
+:assumption (or x15187 (not x68))
+:assumption (or (not x8646) (not x2457))
+:assumption (or x9559 (not x28525))
+:assumption (or (not x26187) x4156)
+:assumption (or (not x23244) x23191)
+:assumption (or x18391 (not x12418))
+:assumption (or (not x15096) (not x23078))
+:assumption (or x18567 (not x642))
+:assumption (or x14379 x1979)
+:assumption (or x22959 x28773)
+:assumption (or (not x26744) x10362)
+:assumption (or (not x6969) (not x22094))
+:assumption (or (not x15497) (not x11842))
+:assumption (or x30720 x655)
+:assumption (or x804 (not x9634))
+:assumption (or (not x19596) x4665 x4560)
+:assumption (or (not x5687) x22855)
+:assumption (or (not x26881) (not x23185))
+:assumption (or x2003 x23662)
+:assumption (or (not x21688) x2466)
+:assumption (or (not x16408) x20782)
+:assumption (or (not x1046) x18684)
+:assumption (or x19768 (not x18003))
+:assumption (or (not x9103) (not x3166))
+:assumption (or (not x16305) (not x2413))
+:assumption (or x2744 (not x5021))
+:assumption (or x17238 x16907)
+:assumption (or (not x17343) (not x2680))
+:assumption (or (not x1683) (not x31268))
+:assumption (or (not x7657) (not x13943))
+:assumption (or (not x15701) (not x6149))
+:assumption (or x6661 x1397)
+:assumption (or (not x26675) (not x28757))
+:assumption (or x18931 (not x21298) x19121 x28482)
+:assumption (or x26994 x5595)
+:assumption (or (not x1895) (not x25824) (not x20310) (not x2689))
+:assumption (or (not x22017) (not x22053))
+:assumption (or (not x16733) (not x10069))
+:assumption (or (not x22844) (not x20429))
+:assumption (or x30037 (not x31212) x13120)
+:assumption (or (not x21859) (not x9903))
+:assumption (or (not x1318) x6205)
+:assumption (or x31368 x22108 (not x1788))
+:assumption (or x19330 x4666)
+:assumption (or (not x2782) (not x28130))
+:assumption (or (not x8618) x24050 x1838)
+:assumption (or (not x7390) x22855)
+:assumption (or (not x9008) (not x565))
+:assumption (or x19271 x22853)
+:assumption (or x12647 (not x22739))
+:assumption (or (not x21746) (not x14592))
+:assumption (or (not x7046) x12463)
+:assumption (or x11998 (not x9362))
+:assumption (or x19501 (not x25720) x535 x4538)
+:assumption (or (not x22456) (not x1868))
+:assumption (or x18441 x5919 x21517)
+:assumption (or x26754 x27059 (not x21690))
+:assumption (or (not x11062) (not x6590))
+:assumption (or (not x31377) (not x30958) (not x27579) x16181 x25957)
+:assumption (or (not x13373) (not x15411) (not x27820) (not x11166) x11542)
+:assumption (or (not x3262) (not x22680))
+:assumption (or x18004 x24756)
+:assumption (or (not x23628) x6753)
+:assumption (or x6783 x17584)
+:assumption (or x26129 (not x24200))
+:assumption (or (not x31915) x15604)
+:assumption (or (not x20236) (not x21192) (not x29263) (not x28834) (not x10768) (not x9226) x18859 x5756)
+:assumption (or x15469 x9598)
+:assumption (or (not x3878) x29586)
+:assumption (or x8924 x13494)
+:assumption (or (not x21587) (not x947) x17274 x31335 x30212 (not x13852) x8959 (not x12896))
+:assumption (or x19210 (not x11729) (not x3891) (not x29860) x3763 x12930)
+:assumption (or x22448 x19864)
+:assumption (or x27927 x24388)
+:assumption (or x5875 x4374 x27847 x30158)
+:assumption (or (not x19710) x16910)
+:assumption (or x30227 (not x30125))
+:assumption (or (not x25435) (not x13709))
+:assumption (or (not x4660) x23508)
+:assumption (or x9725 (not x19399))
+:assumption (or (not x9659) x17780)
+:assumption (or x2528 (not x11059))
+:assumption (or x6596 (not x15560))
+:assumption (or (not x15007) x23795 x27057 (not x22729))
+:assumption (or x8519 (not x27398))
+:assumption (or (not x28991) (not x11370))
+:assumption (or x12516 x23531)
+:assumption (or x8602 x12169 x18166)
+:assumption (or x26662 x13186)
+:assumption (or (not x14846) (not x3087))
+:assumption (or x12923 x11546)
+:assumption (or x5044 (not x7835) (not x2133) (not x22630))
+:assumption (or x31016 (not x3101))
+:assumption (or (not x11549) (not x5850))
+:assumption (or x16544 x1429)
+:assumption (or (not x16407) (not x28274))
+:assumption (or (not x26535) (not x9638))
+:assumption (or (not x3760) x17359)
+:assumption (or (not x15375) (not x22495))
+:assumption (or x20628 x27668)
+:assumption (or x218 (not x4661))
+:assumption (or (not x10909) x24336 x26897)
+:assumption (or x30168 (not x23712))
+:assumption (or (not x7313) (not x13837))
+:assumption (or x25401 (not x22099))
+:assumption (or x25016 (not x13051))
+:assumption (or x13408 (not x26609))
+:assumption (or (not x11765) (not x7951))
+:assumption (or x12745 (not x25797))
+:assumption (or (not x873) x30856 x31276)
+:assumption (or (not x27581) x6969 x2642 x27258)
+:assumption (or x23451 x24105)
+:assumption (or x9719 x30367 (not x1393))
+:assumption (or (not x29522) (not x13956))
+:assumption (or (not x1448) x26085)
+:assumption (or x14499 (not x20619))
+:assumption (or (not x16028) x2063)
+:assumption (or (not x10682) x25949 (not x16927) (not x21975) x14229 x6431 x4401 (not x2114))
+:assumption (or (not x12627) (not x22829))
+:assumption (or x19336 x15404)
+:assumption (or (not x18910) (not x651))
+:assumption (or (not x1405) x14839)
+:assumption (or (not x28416) (not x4969))
+:assumption (or (not x18954) x1920)
+:assumption (or (not x5618) x23244)
+:assumption (or x5886 (not x84))
+:assumption (or x11098 x17766)
+:assumption (or x3718 (not x15929))
+:assumption (or x21156 x26647)
+:assumption (or (not x19761) (not x23260))
+:assumption (or x1467 x8045)
+:assumption (or x5193 x28790)
+:assumption (or (not x19313) x4596)
+:assumption (or (not x11783) x31076 x15085 x2359)
+:assumption (or (not x15217) (not x17708))
+:assumption (or x26758 (not x26230))
+:assumption (or (not x28274) x4863)
+:assumption (or (not x31047) x25393)
+:assumption (or x26081 (not x23244))
+:assumption (or (not x10230) (not x20311))
+:assumption (or x18428 x19820)
+:assumption (or x11657 (not x21618))
+:assumption (or (not x19004) x27784)
+:assumption (or x18231 x8774 (not x15599) x25793 x24930)
+:assumption (or (not x4050) x16284 (not x28101) x3455)
+:assumption (or (not x30206) (not x27898))
+:assumption (or x28126 x21013)
+:assumption (or (not x5276) x8769)
+:assumption (or (not x30070) x24868)
+:assumption (or x1843 (not x11507) (not x26259) x6897)
+:assumption (or x18498 x21026)
+:assumption (or (not x26892) (not x28534))
+:assumption (or x25107 (not x28968))
+:assumption (or x953 (not x1131))
+:assumption (or (not x2661) x16362)
+:assumption (or (not x27052) (not x9140) (not x4289) (not x27591))
+:assumption (or x12115 (not x8562))
+:assumption (or (not x9117) x28357)
+:assumption (or (not x8672) (not x720))
+:assumption (or x27810 x23076)
+:assumption (or (not x823) x31528)
+:assumption (or (not x15586) x21471)
+:assumption (or x20582 x5775)
+:assumption (or x4026 x6414 (not x18434) (not x15253))
+:assumption (or (not x15951) (not x30482))
+:assumption (or x23353 x16432)
+:assumption (or x22531 (not x31358) x16302)
+:assumption (or (not x28345) x25186)
+:assumption (or (not x11207) (not x25151) (not x1663) (not x1621) x1844)
+:assumption (or (not x25315) x11574)
+:assumption (or (not x21911) x12510 (not x10490))
+:assumption (or (not x21591) x6781)
+:assumption (or (not x22715) x1675)
+:assumption (or x10902 (not x18533))
+:assumption (or (not x20782) (not x22702))
+:assumption (or x17200 (not x8301))
+:assumption (or x16414 x26758)
+:assumption (or (not x5576) (not x16025) (not x6596))
+:assumption (or x28131 x20678 x29420 (not x20440) (not x1483))
+:assumption (or x11795 x1223)
+:assumption (or x17752 x12127)
+:assumption (or (not x3710) x15148)
+:assumption (or (not x24818) x25496)
+:assumption (or (not x16918) (not x13661))
+:assumption (or x17480 (not x29298) x26249 (not x762) (not x27090) (not x8309) x3223)
+:assumption (or (not x6405) x4349)
+:assumption (or x609 (not x1186))
+:assumption (or x26940 (not x28100))
+:assumption (or (not x15129) (not x21815))
+:assumption (or x22288 (not x3530))
+:assumption (or (not x14367) (not x11989) x31076 x5093 x7775 x6366)
+:assumption (or (not x24140) (not x7463))
+:assumption (or x1251 x16442)
+:assumption (or x12463 x13739)
+:assumption (or x21436 x850)
+:assumption (or x20693 (not x24566))
+:assumption (or (not x2592) (not x14498))
+:assumption (or (not x17956) x1633)
+:assumption (or (not x688) (not x11073))
+:assumption (or (not x3504) x23220)
+:assumption (or (not x2709) (not x12792) x8002 (not x21027) (not x26681) (not x26228))
+:assumption (or x15404 x19300)
+:assumption (or (not x25334) x13188 (not x31500) x24498)
+:assumption (or x5022 (not x6716))
+:assumption (or (not x21905) (not x7229))
+:assumption (or (not x16802) (not x11235))
+:assumption (or x13210 x4545)
+:assumption (or x5002 (not x4562))
+:assumption (or x2260 x28174)
+:assumption (or x9464 (not x927))
+:assumption (or x18302 (not x29687))
+:assumption (or x7223 x28023)
+:assumption (or (not x5726) x17235)
+:assumption (or x3197 x18779)
+:assumption (or (not x24916) x30570)
+:assumption (or (not x21813) x12236)
+:assumption (or x2926 x2886)
+:assumption (or x23244 (not x20331) x6782 x8002)
+:assumption (or (not x23244) x24382)
+:assumption (or x5182 x15018)
+:assumption (or x29880 (not x26088))
+:assumption (or x12801 x7255)
+:assumption (or x16025 (not x22905) (not x22295))
+:assumption (or x20023 x10629)
+:assumption (or (not x12242) x4987)
+:assumption (or x22543 x29612)
+:assumption (or x13078 (not x510))
+:assumption (or (not x29995) x7389)
+:assumption (or x5390 (not x25629))
+:assumption (or (not x1310) x28873)
+:assumption (or (not x20805) x27746)
+:assumption (or (not x6128) (not x10023) x27619)
+:assumption (or x15282 x762 x23244)
+:assumption (or x3671 x17059)
+:assumption (or x1545 x16019)
+:assumption (or x1799 x13956)
+:assumption (or x30362 (not x28014))
+:assumption (or (not x16009) (not x17088))
+:assumption (or (not x3848) (not x3556))
+:assumption (or (not x20148) x30671)
+:assumption (or (not x31177) x13453)
+:assumption (or (not x16654) x28028)
+:assumption (or x21008 (not x24407))
+:assumption (or x8394 (not x10081))
+:assumption (or x29485 x5239)
+:assumption (or (not x19412) (not x4772))
+:assumption (or x1387 x24761 (not x1920))
+:assumption (or x24756 x8920 (not x30375))
+:assumption (or x5170 (not x21815))
+:assumption (or x25725 (not x11301))
+:assumption (or (not x23484) x19948)
+:assumption (or x9934 (not x16466))
+:assumption (or x18265 x7244)
+:assumption (or (not x25314) x1291)
+:assumption (or (not x2765) (not x16712))
+:assumption (or x169 x11126)
+:assumption (or x24910 (not x1604))
+:assumption (or (not x484) x21798)
+:assumption (or x18859 (not x16030))
+:assumption (or x28176 (not x12654))
+:assumption (or (not x1669) (not x10078) (not x8987) (not x9302))
+:assumption (or (not x8532) x2615)
+:assumption (or (not x7198) (not x492))
+:assumption (or x11549 x13002)
+:assumption (or x19634 (not x15987))
+:assumption (or (not x10349) x25559 x23712 (not x30168))
+:assumption (or x2286 (not x16616))
+:assumption (or (not x21471) x15586)
+:assumption (or (not x11855) x16710)
+:assumption (or (not x31591) (not x25065))
+:assumption (or (not x18993) (not x3001) (not x202))
+:assumption (or (not x902) x16139 (not x30820) (not x773) (not x2754) (not x8724))
+:assumption (or x13018 (not x14850))
+:assumption (or (not x25733) x29442)
+:assumption (or (not x11363) x4404)
+:assumption (or (not x4188) (not x25754))
+:assumption (or x21633 x26398)
+:assumption (or (not x28266) (not x4593))
+:assumption (or (not x3994) (not x5519) (not x27982) x28620 x12836 (not x26385))
+:assumption (or (not x12481) x4461)
+:assumption (or x19084 x11371)
+:assumption (or x21288 x27067 x19751 (not x28250) (not x11292) x19310 x21538)
+:assumption (or x5544 x17265)
+:assumption (or (not x16145) (not x30413))
+:assumption (or x30726 x27970)
+:assumption (or (not x25659) (not x15792))
+:assumption (or x24714 x34)
+:assumption (or (not x10074) x13557 (not x26412))
+:assumption (or x29556 (not x12474))
+:assumption (or x29539 (not x2943))
+:assumption (or x10006 x2484)
+:assumption (or x6016 x6999)
+:assumption (or x3672 x6691)
+:assumption (or x17891 x15748 (not x6291) (not x14199) (not x3264) x24771 x27657)
+:assumption (or (not x31663) (not x23254))
+:assumption (or x26068 x28671 x6536 x29899 x20049 x14570 x1523)
+:assumption (or (not x8602) (not x15837))
+:assumption (or (not x26897) (not x18641))
+:assumption (or x24609 x31216)
+:assumption (or x548 (not x4440))
+:assumption (or x14794 x30062)
+:assumption (or (not x24877) (not x22747))
+:assumption (or (not x14927) (not x679))
+:assumption (or (not x14760) x30370)
+:assumption (or (not x2833) (not x13676) (not x2804) (not x31253) x19830)
+:assumption (or (not x27550) (not x10481))
+:assumption (or x17306 (not x29634))
+:assumption (or (not x2235) (not x17908) (not x17933) (not x29061) (not x9465) x16013 (not x15698))
+:assumption (or x822 x12515 (not x19081) (not x649) x30864 (not x13845))
+:assumption (or (not x4372) x21006)
+:assumption (or x14455 x20190)
+:assumption (or x10821 (not x5528) (not x6973) x7678 (not x24580) (not x15628))
+:assumption (or x11403 x197)
+:assumption (or (not x20194) (not x28300) (not x11970) x19250 (not x14160) (not x6016))
+:assumption (or (not x3532) (not x6340))
+:assumption (or x17751 (not x3650))
+:assumption (or (not x21756) (not x21530))
+:assumption (or (not x6068) x27260)
+:assumption (or (not x21190) (not x29404))
+:assumption (or (not x18575) (not x8672))
+:assumption (or x31356 x30024)
+:assumption (or x28685 x2388)
+:assumption (or (not x17155) (not x12466))
+:assumption (or x15633 (not x20698))
+:assumption (or (not x30475) x890)
+:assumption (or x30439 (not x6585))
+:assumption (or (not x4697) x3229)
+:assumption (or (not x26339) (not x13566))
+:assumption (or x14075 (not x29606))
+:assumption (or (not x2132) (not x19406))
+:assumption (or x12573 x18817 x678)
+:assumption (or x22057 x30640)
+:assumption (or (not x290) (not x9008))
+:assumption (or x31810 (not x18031))
+:assumption (or x4433 (not x16552))
+:assumption (or (not x27996) (not x9497))
+:assumption (or (not x4849) (not x14206) x22190 (not x23062))
+:assumption (or (not x17663) (not x9896))
+:assumption (or x11488 (not x10812) x31208)
+:assumption (or x24111 x11792)
+:assumption (or (not x6496) (not x764))
+:assumption (or x16094 x9025)
+:assumption (or x15025 x10934)
+:assumption (or x27283 x356)
+:assumption (or x1741 (not x25009))
+:assumption (or (not x27841) x17532 x7443 x22979 (not x21254))
+:assumption (or (not x14164) x6906)
+:assumption (or x8254 (not x16486))
+:assumption (or x18441 (not x18558))
+:assumption (or x21740 x7307)
+:assumption (or x10174 (not x10186))
+:assumption (or x6196 x25813)
+:assumption (or (not x26073) x14522)
+:assumption (or x12642 x7805)
+:assumption (or (not x28673) (not x3776))
+:assumption (or x6969 (not x14647) x20168)
+:assumption (or (not x5822) (not x16076))
+:assumption (or x26621 x19430)
+:assumption (or x23114 x21540)
+:assumption (or (not x19255) (not x15064))
+:assumption (or x25216 (not x9961))
+:assumption (or (not x20200) x14696)
+:assumption (or (not x23593) (not x8342))
+:assumption (or x1624 x27624)
+:assumption (or x27934 x6345)
+:assumption (or (not x26284) x19844)
+:assumption (or x31669 (not x27416) x28785)
+:assumption (or x19051 x22061 (not x9008))
+:assumption (or x10257 (not x18418) (not x4492) (not x2323) x30815 (not x23214))
+:assumption (or (not x31777) x21386)
+:assumption (or (not x12242) x4922)
+:assumption (or x355 (not x4331))
+:assumption (or (not x6579) x13741)
+:assumption (or (not x15614) x12541)
+:assumption (or x29353 (not x18333) x9892)
+:assumption (or (not x3064) x1657)
+:assumption (or x29226 x31829)
+:assumption (or x23991 (not x24837))
+:assumption (or (not x14986) x23755)
+:assumption (not x30806)
+:assumption (or (not x14192) (not x20229))
+:assumption (or x4259 (not x10154))
+:assumption (or (not x20740) (not x1847))
+:assumption (or x26835 x18519 (not x19711) x28078)
+:assumption (or (not x25878) x3003)
+:assumption (or x27731 x4413 x3788 x18163)
+:assumption (or (not x14118) x5609)
+:assumption (or x13956 (not x13341))
+:assumption (or x3038 x10520)
+:assumption (or (not x6590) x86)
+:assumption (or x7290 (not x7537))
+:assumption (or (not x14097) (not x6150))
+:assumption (or (not x8002) (not x13935))
+:assumption (or x13190 (not x725) (not x16025))
+:assumption (or x29999 (not x28574))
+:assumption (or (not x11680) x16053)
+:assumption (or (not x26686) x14162 x12231 x2398 (not x14113) x4468 (not x28412) x29450)
+:assumption (or (not x7332) x17350)
+:assumption (or (not x30061) (not x10355))
+:assumption (or x8002 (not x7872))
+:assumption (or (not x3415) x18653)
+:assumption (or x5870 x8602)
+:assumption (or (not x5394) x6480)
+:assumption (or x3401 (not x129))
+:assumption (or x16203 (not x4505))
+:assumption (or x14208 (not x18788))
+:assumption (or x7602 x19177)
+:assumption (or x13956 x24343)
+:assumption (or x3294 (not x16724))
+:assumption (or x531 x13800)
+:assumption (or (not x26512) (not x27560))
+:assumption (or (not x24231) (not x4289) (not x18120))
+:assumption (or (not x12971) x14921)
+:assumption (or (not x29761) x6951 x31890 (not x10699) (not x3733) (not x10363) (not x13576))
+:assumption (or x14301 x20509)
+:assumption (or x28105 (not x28886))
+:assumption (or x3103 x12484)
+:assumption (or x2909 x23356)
+:assumption (or (not x23143) x8774)
+:assumption (or (not x6478) (not x10129))
+:assumption (or (not x4331) (not x28291))
+:assumption (or (not x20658) (not x9008))
+:assumption (or x16267 x28389)
+:assumption (or (not x19479) x26647)
+:assumption (or x29156 x25606)
+:assumption (or (not x10117) x24932 x15795)
+:assumption (or x22590 x27747)
+:assumption (or x2156 (not x21925))
+:assumption (or x16802 (not x16530))
+:assumption (or (not x10894) x10880)
+:assumption (or x17621 x24856)
+:assumption (or x28267 x26476)
+:assumption (or x8158 x7638)
+:assumption (or x17341 x5028 x15254)
+:assumption (or (not x2289) x13635)
+:assumption (or x9008 x15474)
+:assumption (or x14602 x13235)
+:assumption (or x16172 (not x31323))
+:assumption (or (not x30124) (not x16409) (not x12199) x11339)
+:assumption (or x29003 (not x16401))
+:assumption (or (not x19473) (not x11422) x2796 x24657 x24718)
+:assumption (or (not x31896) x21397)
+:assumption (or (not x8229) (not x29749))
+:assumption (or x28146 x14839)
+:assumption (or x26397 x16750)
+:assumption (or (not x4325) (not x13837))
+:assumption (or (not x27911) x31535)
+:assumption (or (not x24916) x7491)
+:assumption (or (not x21796) x26749)
+:assumption (or x7627 (not x14692))
+:assumption (or (not x2906) x25179)
+:assumption (or x21039 x20097)
+:assumption (or x31540 (not x9008) x8419)
+:assumption (or (not x4174) (not x21899))
+:assumption (or x5427 x10213)
+:assumption (or x14180 (not x13738))
+:assumption (or (not x5528) (not x27077) (not x19747) x18621 (not x28051) x15613)
+:assumption (or (not x13765) (not x22831))
+:assumption (or x13391 x13471)
+:assumption (or x18297 x27402)
+:assumption (or (not x24899) (not x19104))
+:assumption (or x11391 x15062)
+:assumption (or x6505 (not x22615))
+:assumption (or x6444 (not x12443) x2677)
+:assumption (or x4452 x9647 x31870)
+:assumption (or x24458 x9008)
+:assumption (or (not x14570) (not x7855))
+:assumption (or x98 (not x20894))
+:assumption (or (not x22432) (not x31166))
+:assumption (or (not x29606) x11817)
+:assumption (or x22542 x27997 (not x10909) (not x27354) x6634)
+:assumption (or (not x23583) x3077)
+:assumption (or x23244 (not x16845))
+:assumption (or (not x389) (not x27912))
+:assumption (or x21033 (not x20160))
+:assumption (or (not x16892) (not x886) (not x22092) x9116 (not x8343) (not x23244))
+:assumption (or x27321 (not x23292))
+:assumption (or (not x8526) (not x14012))
+:assumption (or (not x5067) (not x29196))
+:assumption (or (not x8002) x838)
+:assumption (or (not x7196) x22417)
+:assumption (or x5394 (not x25730))
+:assumption (or (not x7803) (not x21831))
+:assumption (or (not x26319) (not x3655))
+:assumption (or x3663 x2810)
+:assumption (or (not x1484) (not x7392))
+:assumption (or x24659 x18016)
+:assumption (or (not x12397) (not x13275))
+:assumption (or (not x21316) (not x3155))
+:assumption (or (not x13161) (not x30144))
+:assumption (or x142 x18826)
+:assumption (or x25617 (not x26030))
+:assumption (or (not x10152) (not x16353) (not x2643) (not x12788) x11137)
+:assumption (or (not x17625) x7333)
+:assumption (or x714 x22136)
+:assumption (or (not x7519) (not x24961))
+:assumption (or (not x21826) x30524)
+:assumption (or x15223 x2705)
+:assumption (or (not x4185) (not x25873) (not x8002))
+:assumption (or (not x21892) (not x25659))
+:assumption (or (not x24745) (not x21298))
+:assumption (or x1216 x7241)
+:assumption (or x9423 (not x10536) (not x22067) (not x21164))
+:assumption (or x1708 x19414)
+:assumption (or x21145 (not x10239))
+:assumption (or x29976 x27812)
+:assumption (or x20187 (not x27506))
+:assumption (or (not x2166) x19974)
+:assumption (or (not x20291) x29147 (not x9008) (not x5528) (not x22295))
+:assumption (or x16705 x15463)
+:assumption (or x20169 x12909)
+:assumption (or (not x19126) (not x1328))
+:assumption (or (not x2133) (not x15904))
+:assumption (or (not x22907) (not x11977))
+:assumption (or (not x6592) x480)
+:assumption (or x17359 (not x29248))
+:assumption (or x12518 (not x2237))
+:assumption (or x21568 (not x3147))
+:assumption (or x11204 x18156)
+:assumption (or (not x17302) (not x6403))
+:assumption (or (not x31510) (not x16515))
+:assumption (or x449 x18892)
+:assumption (or x8002 x3376)
+:assumption (or x6149 x501 x18555 x11792)
+:assumption (or x17149 x4558)
+:assumption (or (not x12784) x18176)
+:assumption (or x1719 (not x18363))
+:assumption (or (not x19861) x31089 x11588 (not x7734) x362)
+:assumption (or x19091 x8003)
+:assumption (or (not x30138) (not x28088))
+:assumption (or (not x16393) x5248)
+:assumption (or x31538 (not x12600))
+:assumption (or x17373 x26897 x1728)
+:assumption (or x14029 x13762)
+:assumption (or (not x13194) x18531)
+:assumption (or x5740 x7086)
+:assumption (or x6381 x6764 (not x1547))
+:assumption (or x17694 x868)
+:assumption (or x15706 x13594)
+:assumption (or (not x22855) (not x30751) (not x27874))
+:assumption (or x16165 (not x2666))
+:assumption (or x22270 (not x2440))
+:assumption (or (not x20603) (not x28355))
+:assumption (or (not x7253) x22423)
+:assumption (or x16493 (not x29402) (not x4625) (not x17874) x3782)
+:assumption (or x962 x21864)
+:assumption (or (not x9102) (not x6570))
+:assumption (or x26179 (not x10973) (not x16229) (not x15105) (not x7776) (not x5708) x4635 (not x21073))
+:assumption (or (not x1674) (not x19992))
+:assumption (or x21916 x24722)
+:assumption (or (not x19674) x17910 x9189)
+:assumption (or x21371 (not x10663))
+:assumption (or x30255 x8427)
+:assumption (or x26759 (not x21790))
+:assumption (or x7690 (not x14735) x18694)
+:assumption (or x22395 (not x4749))
+:assumption (or x17762 (not x31566))
+:assumption (or (not x19557) (not x11080))
+:assumption (or x26601 (not x11399))
+:assumption (or (not x13472) x5511 (not x979) x9423)
+:assumption (or (not x30053) x1026)
+:assumption (or x19236 x22503)
+:assumption (or (not x7200) (not x31184) (not x11564))
+:assumption (or x261 x8602 (not x10588))
+:assumption (or (not x2275) x7561)
+:assumption (or x11353 x23353)
+:assumption (or x19181 x9531)
+:assumption (or (not x31777) (not x25525))
+:assumption (or (not x13188) x7812)
+:assumption (or (not x29888) (not x1573) x8002)
+:assumption (or x17933 x29061)
+:assumption (or (not x6393) x27753)
+:assumption (or (not x13587) x15861)
+:assumption (or x10240 x195)
+:assumption (or (not x20570) (not x964))
+:assumption (or x523 (not x133))
+:assumption (or (not x4719) x7991)
+:assumption (or (not x6364) (not x28819))
+:assumption (or x21815 x18664)
+:assumption (or x20707 (not x31829) x16025)
+:assumption (or x23818 x18248)
+:assumption (or (not x2613) x17249)
+:assumption (or x25659 x24786)
+:assumption (or x6712 (not x2133))
+:assumption (or (not x25392) (not x22668))
+:assumption (or x12446 (not x5980))
+:assumption (or x16931 x3241)
+:assumption (or (not x21533) (not x4906))
+:assumption (or (not x8924) (not x8002) x29333 (not x1715))
+:assumption (or (not x14104) (not x29069))
+:assumption (or (not x11649) (not x21878))
+:assumption (or x138 (not x2928) x12910 (not x10760))
+:assumption (or (not x27377) (not x22580))
+:assumption (or x13397 x12242)
+:assumption (or (not x12134) (not x31162))
+:assumption (or x30850 x13916 (not x7977) x15228 x18336)
+:assumption (or x21653 (not x18942) x6101)
+:assumption (or (not x17224) (not x24845))
+:assumption (or x4920 (not x11681))
+:assumption (or x14402 (not x6587))
+:assumption (or (not x7141) x12988)
+:assumption (or x16025 (not x164))
+:assumption (or (not x16059) x14839 x5393)
+:assumption (or (not x14117) x3750)
+:assumption (or (not x25422) (not x1564))
+:assumption (or x24915 x30136)
+:assumption (or (not x17671) x29981)
+:assumption (or x15294 (not x9008) x3516 (not x5528) x507)
+:assumption (or x23244 x21823)
+:assumption (or (not x22061) (not x19051))
+:assumption (or (not x17028) x5249)
+:assumption (or (not x11959) x21092)
+:assumption (or (not x29725) x31512)
+:assumption (or (not x5519) x16242)
+:assumption (or x11656 (not x19027))
+:assumption (or (not x3054) x18623)
+:assumption (or (not x21300) x7925)
+:assumption (or x7537 x11090)
+:assumption (or (not x26354) x30406)
+:assumption (or x3668 x8526)
+:assumption (or x4386 x11496)
+:assumption (or x2575 (not x20119) x25315)
+:assumption (or x4662 x26432)
+:assumption (or x506 (not x30200))
+:assumption (or (not x28479) x21432 (not x18866))
+:assumption (or (not x13616) (not x31485))
+:assumption (or (not x5025) (not x23970))
+:assumption (or x22367 x15769)
+:assumption (or x27321 (not x17276) (not x4827) x6963 x1657 x8135 (not x23876) x24075 (not x7870))
+:assumption (or x30164 x16374)
+:assumption (or x26544 (not x16362))
+:assumption (or x11861 (not x8606))
+:assumption (or x24439 (not x3903))
+:assumption (or x24408 (not x15153))
+:assumption (or (not x2500) x6480)
+:assumption (or (not x25608) x630)
+:assumption (or x26782 x1854)
+:assumption (or (not x24043) x1750)
+:assumption (or (not x18596) x30334)
+:assumption (or x24756 (not x18067))
+:assumption (or (not x20554) (not x4809))
+:assumption (or x26684 (not x24490))
+:assumption (or x17977 (not x30780) x22315 x23521 x5977 x15491 (not x14782) x4915)
+:assumption (or (not x15924) (not x1826) x30565 (not x31615) (not x20052) (not x22569))
+:assumption (or x27541 x28139)
+:assumption (or x18991 (not x5696))
+:assumption (or x18178 x21298 (not x28364) x14598)
+:assumption (or x5445 (not x865))
+:assumption (or (not x10800) x10344)
+:assumption (or x16802 (not x25333))
+:assumption (or (not x5386) x31372 x22323 x13842 x13997 (not x23244))
+:assumption (or (not x10390) x30848)
+:assumption (or x22496 (not x6905) (not x22692) (not x23328))
+:assumption (or x10714 x24203)
+:assumption (or (not x9774) (not x11307))
+:assumption (or (not x12045) x14038)
+:assumption (or (not x28317) (not x29806))
+:assumption (or (not x26420) x31740)
+:assumption (or x6283 x21318)
+:assumption (or x4377 x7146 (not x10570))
+:assumption (or x12891 x16615)
+:assumption (or (not x10968) (not x5705))
+:assumption (or x13567 x4510)
+:assumption (or x31358 (not x16302))
+:assumption (or (not x22419) (not x6411))
+:assumption (or (not x11441) (not x23399) (not x17988) x23774 (not x5555))
+:assumption (or x24066 x26466)
+:assumption (or (not x22666) x21473 (not x1875) x18476 (not x3169) (not x25194))
+:assumption (or (not x25113) x9961)
+:assumption (or x26897 x342)
+:assumption (or (not x5294) (not x6566))
+:assumption (or (not x23855) x18049)
+:assumption (or (not x4045) (not x6652))
+:assumption (or (not x4378) x13956 x1123)
+:assumption (or (not x30162) x19222)
+:assumption (or x24252 x15955)
+:assumption (or (not x11012) (not x13740))
+:assumption (or x10996 x12204 (not x1340) (not x23973) (not x3360) (not x30160) x8856 x24733)
+:assumption (or (not x25315) (not x31277))
+:assumption (or x19820 (not x6153))
+:assumption (or (not x2761) x3213)
+:assumption (or x5751 (not x12718))
+:assumption (or x5125 x18182)
+:assumption (or (not x30915) x2934)
+:assumption (or (not x4346) (not x975))
+:assumption (or (not x8918) x13065)
+:assumption (or x12109 x830)
+:assumption (or (not x12247) (not x21886))
+:assumption (or (not x16920) x21546)
+:assumption (or x26424 (not x24646))
+:assumption (or x20532 (not x25823) (not x13622))
+:assumption (or (not x11887) x9490)
+:assumption (or (not x16979) (not x26053))
+:assumption (or (not x24557) (not x4154))
+:assumption (or (not x28965) x18852)
+:assumption (or (not x23703) x21728)
+:assumption (or (not x12350) x22755)
+:assumption (or (not x28174) (not x2260))
+:assumption (or x27787 x29743)
+:assumption (or x2922 (not x27104))
+:assumption (or x18519 (not x26201))
+:assumption (or (not x5376) x4491)
+:assumption (or x26425 (not x28407))
+:assumption (or x27097 (not x21653))
+:assumption (or (not x6756) (not x27605))
+:assumption (or (not x30294) x25287)
+:assumption (or (not x8002) (not x23244) (not x9473) x13535)
+:assumption (or x29663 (not x22945))
+:assumption (or x16674 x4459)
+:assumption (or (not x3841) x30954 x19428 x6562)
+:assumption (or x20916 x31382)
+:assumption (or (not x19571) (not x2133))
+:assumption (or x3330 (not x5975))
+:assumption (or (not x28241) (not x2675))
+:assumption (or (not x27744) x13036)
+:assumption (or (not x28621) (not x5805))
+:assumption (or (not x10876) (not x2038))
+:assumption (or x10874 (not x23572))
+:assumption (or (not x22704) (not x25570) x6374 (not x23388) x14853 x27204 (not x640) (not x5394) x21227 (not x23293) x6496)
+:assumption (or x28852 (not x1638) (not x4353) x18041 x8464 x2654 x8319 x8658 (not x31483))
+:assumption (or x13337 x31640)
+:assumption (or x23399 (not x22324))
+:assumption (or x91 x19483)
+:assumption (or x202 x23244 (not x15608))
+:assumption (or (not x30358) x17877)
+:assumption (or x943 x8602)
+:assumption (or (not x9255) x9436)
+:assumption (or x21489 x30116 (not x22474))
+:assumption (or x4022 (not x14839))
+:assumption (or x5411 x13668 x1943)
+:assumption (or (not x5160) x13836)
+:assumption (or (not x10281) x5343)
+:assumption (or (not x6444) x20968 (not x23590) (not x12473))
+:assumption (or x5198 x27429)
+:assumption (or (not x24155) x28661)
+:assumption (or (not x20116) (not x30426))
+:assumption (or x20723 x10026)
+:assumption (or x5448 (not x8562))
+:assumption (or x25104 x13576)
+:assumption (or (not x10676) x22855)
+:assumption (or x19920 x25464)
+:assumption (or x17353 x31081)
+:assumption (or x218 x23244 (not x26630))
+:assumption (or (not x26535) x15392)
+:assumption (or (not x3703) x2813)
+:assumption (or (not x10342) (not x31606))
+:assumption (or x19417 x1805)
+:assumption (or (not x21393) x11799)
+:assumption (or x4541 (not x22421))
+:assumption (or x8123 (not x15996) (not x3127) (not x14778) x3282)
+:assumption (or (not x23244) (not x25))
+:assumption (or (not x25606) (not x339))
+:assumption (or (not x4520) x22237)
+:assumption (or (not x2968) x26921)
+:assumption (or x16510 x29136)
+:assumption (or (not x19557) (not x29606) x18694 x16002)
+:assumption (or x19714 x18293)
+:assumption (or x519 x1862)
+:assumption (or x17172 (not x23583))
+:assumption (or (not x26813) (not x5601))
+:assumption (or (not x31393) x12073)
+:assumption (or x29490 (not x31080))
+:assumption (or x17069 x11008)
+:assumption (or (not x9008) x28720)
+:assumption (or (not x1251) (not x16442) (not x18895) x1349)
+:assumption (or (not x16336) x4225)
+:assumption (or (not x2596) (not x25423))
+:assumption (or (not x25260) x29890 x22349 (not x24471) x17908)
+:assumption (or (not x8586) (not x27463))
+:assumption (or x10384 (not x22792))
+:assumption (or x6722 x28032)
+:assumption (or (not x24235) x907)
+:assumption (or x29670 (not x234) (not x5087))
+:assumption (or (not x5563) (not x25451))
+:assumption (or x20700 x20584)
+:assumption (or x6905 x24878)
+:assumption (or (not x23244) (not x9819))
+:assumption (or x7357 (not x18282))
+:assumption (or (not x15227) x28727 x16784)
+:assumption (or (not x30555) x1638)
+:assumption (or x16780 (not x2512))
+:assumption (or x4559 (not x20792))
+:assumption (or x13055 x19502)
+:assumption (or (not x24266) x24717 (not x1875) (not x14336) x8788)
+:assumption (or x5921 x27678)
+:assumption (or x12923 (not x22174) x6579 x22802)
+:assumption (or x28334 x9309)
+:assumption (or (not x11898) (not x28401))
+:assumption (or x267 (not x20394))
+:assumption (or (not x5529) (not x27751))
+:assumption (or x16039 (not x6174))
+:assumption (or x721 x15430)
+:assumption (or (not x24218) x12865)
+:assumption (or (not x16303) (not x8129))
+:assumption (or x15716 x30565 x23190 x14796 x14755)
+:assumption (or (not x1230) (not x28604) x18830 x26216 (not x24496))
+:assumption (or x28005 (not x11295))
+:assumption (or (not x5162) (not x29910))
+:assumption (or x28194 x7887)
+:assumption (or x23806 (not x8706) (not x14274) x26154)
+:assumption (or (not x13712) x132)
+:assumption (or (not x17869) x30163)
+:assumption (or (not x28516) (not x29194))
+:assumption (or (not x20284) x24037)
+:assumption (or (not x24957) x31197)
+:assumption (or x30138 (not x26897) (not x16091) (not x28512))
+:assumption (or (not x21844) x24794)
+:assumption (or x2956 (not x6794) (not x17075) (not x14438) x31155)
+:assumption (or x24425 x30221 (not x30451) x6243 x31713 x787 (not x6301) x16153 (not x5112))
+:assumption (or x23966 x9556 (not x21298))
+:assumption (or x14614 (not x13096))
+:assumption (or x21065 (not x18003))
+:assumption (or x8024 (not x12614))
+:assumption (or x14280 (not x166) x8568 x8265)
+:assumption (or (not x20322) x4952)
+:assumption (or x9899 (not x14891))
+:assumption (or x12772 x26647)
+:assumption (or (not x16088) (not x10874))
+:assumption (or (not x14863) x27494 (not x31835) (not x18594))
+:assumption (or x9126 (not x23934))
+:assumption (or (not x8419) (not x27433))
+:assumption (or x30830 x22997)
+:assumption (or x13325 x12146)
+:assumption (or (not x15164) (not x20332))
+:assumption (or x4058 (not x28190))
+:assumption (or x25472 x18848)
+:assumption (or (not x28888) x23244 (not x19880))
+:assumption (or x27309 (not x5305))
+:assumption (or (not x8208) x16083)
+:assumption (or (not x1524) (not x28381))
+:assumption (or (not x27268) (not x29399))
+:assumption (or x3955 x27522)
+:assumption (or (not x22040) x22786)
+:assumption (or x27425 (not x377))
+:assumption (or (not x6432) x29959)
+:assumption (or (not x22437) x14839)
+:assumption (or (not x16534) (not x18885))
+:assumption (or (not x19801) x25822)
+:assumption (or x11299 x1571)
+:assumption (or (not x5236) (not x7159) x28328)
+:assumption (or x20482 (not x11035))
+:assumption (or (not x23399) (not x3758) (not x4839) x7537)
+:assumption (or x28144 (not x11532))
+:assumption (or (not x4538) x2979)
+:assumption (or (not x13204) x9071)
+:assumption (or (not x24273) x13956 (not x31782))
+:assumption (or (not x6096) x20911)
+:assumption (or (not x16003) x6399)
+:assumption (or (not x6684) x6708 x25576)
+:assumption (or x26098 x7543)
+:assumption (or x17930 (not x5073))
+:assumption (or (not x10489) x5155)
+:assumption (or x7509 x20797)
+:assumption (or x3340 x18904 x22374 (not x23829) x19911 x27310)
+:assumption (or (not x4692) x9625)
+:assumption (or (not x12045) x5331)
+:assumption (or (not x23569) x22704)
+:assumption (or x5394 (not x4709) (not x4821) x25366)
+:assumption (or (not x3290) x16025)
+:assumption (or (not x31017) x3917)
+:assumption (or (not x23259) x13603)
+:assumption (or (not x2822) (not x12825))
+:assumption (or (not x20575) x30524)
+:assumption (or (not x25301) (not x21021))
+:assumption (or x18759 (not x5900))
+:assumption (or (not x1248) x25631)
+:assumption (or (not x1767) x18683)
+:assumption (or (not x20410) (not x20653) (not x27872) (not x13117))
+:assumption (or (not x858) (not x24856) x7120 x16061 (not x30278) x19693 (not x30314) (not x6637))
+:assumption (or x3497 (not x18758))
+:assumption (or x102 (not x27308))
+:assumption (or (not x7807) (not x1452))
+:assumption (or (not x18429) x13324)
+:assumption (or x4131 x16954 x25659)
+:assumption (or (not x30856) x30462)
+:assumption (or x13744 (not x14018))
+:assumption (or (not x416) (not x25166))
+:assumption (or x9429 x2313)
+:assumption (or x25510 x16910)
+:assumption (or x31264 x23320)
+:assumption (or x4624 x3664)
+:assumption (or (not x10330) x21022)
+:assumption (or (not x30571) x4841)
+:assumption (or x5830 (not x23233))
+:assumption (or (not x6119) (not x20983))
+:assumption (or x2957 x17855)
+:assumption (or (not x3661) x8091)
+:assumption (or (not x9063) x23180)
+:assumption (or x12045 (not x26672) x4229 x6379 x14219)
+:assumption (or (not x30440) x30515)
+:assumption (or (not x22973) (not x9336))
+:assumption (or (not x14940) (not x20982))
+:assumption (or x8772 (not x5962))
+:assumption (or x26739 (not x25457))
+:assumption (or (not x5045) (not x11682) (not x14344) x15794 (not x15251) (not x18189) x18042 (not x6615) x15511)
+:assumption (or x27607 (not x26900))
+:assumption (or (not x27334) x10024)
+:assumption (or (not x11163) (not x7359))
+:assumption (or (not x25118) x20233)
+:assumption (or (not x17114) (not x30113))
+:assumption (or x15761 (not x29012))
+:assumption (or (not x730) (not x22315))
+:assumption (or x16785 (not x9008))
+:assumption (or (not x25676) x25528)
+:assumption (or x22872 (not x17485))
+:assumption (or (not x952) x1095)
+:assumption (or x6364 x28819 (not x6071))
+:assumption (or x15011 x20558)
+:assumption (or x5528 x17536 x25818)
+:assumption (or x20480 x22679)
+:assumption (or (not x17013) (not x136))
+:assumption (or x19648 x2299)
+:assumption (or (not x29613) x18260)
+:assumption (or (not x27519) x16809)
+:assumption (or (not x18767) x10906)
+:assumption (or (not x25965) (not x1536))
+:assumption (or (not x21502) x15927)
+:assumption (or x23625 x23524)
+:assumption (or x21529 (not x621))
+:assumption (or x14919 x24061 (not x3514) (not x20906) x23754)
+:assumption (or (not x16025) x27140)
+:assumption (or x19515 (not x24065))
+:assumption (or x6808 x21561)
+:assumption (or (not x23068) (not x19864))
+:assumption (or (not x9773) (not x2966))
+:assumption (or (not x8002) x31650)
+:assumption (or (not x13233) (not x7888))
+:assumption (or x23686 x17855 x13497 x23878)
+:assumption (or (not x7436) (not x14824) x18859)
+:assumption (or x26693 x11807)
+:assumption (or (not x19416) (not x24771))
+:assumption (or x22393 x9808 (not x6486) (not x21479) x9008 (not x21478))
+:assumption (or (not x18283) (not x504))
+:assumption (or (not x20263) (not x5014))
+:assumption (or x5488 x28149)
+:assumption (or x26620 x15678 x9608 (not x12113))
+:assumption (or (not x16374) x14455 x22422)
+:assumption (or x23512 (not x2718))
+:assumption (or (not x18069) x28271)
+:assumption (or x1986 x21195)
+:assumption (or (not x7222) (not x15351))
+:assumption (or x18149 (not x19453))
+:assumption (or (not x25366) (not x27393) (not x6895))
+:assumption (or (not x6068) (not x3845))
+:assumption (or (not x12228) x31327)
+:assumption (or x17122 (not x19952))
+:assumption (or (not x17068) x19958)
+:assumption (or (not x14200) (not x18178))
+:assumption (or x30118 x16283)
+:assumption (or (not x15317) x15550)
+:assumption (or x31829 x26873)
+:assumption (or (not x15995) x24150 x25642 x26772 x17335 x6593)
+:assumption (or x31116 (not x16773))
+:assumption (or x9091 (not x23244) (not x21904) (not x25694) (not x9947) (not x4252))
+:assumption (or x14718 x13919)
+:assumption (or x16721 x21930)
+:assumption (or x22855 x29873)
+:assumption (or (not x26876) x18922)
+:assumption (or (not x9629) (not x16142))
+:assumption (or x17768 (not x20998))
+:assumption (or (not x19610) (not x26910) x6243 (not x19110))
+:assumption (or (not x15512) (not x5655))
+:assumption (or x6821 (not x30926) x12613 x25116 x15802 (not x3151) x17834 (not x3361))
+:assumption (or x29526 x30532 (not x10705) (not x28924) x14927 x7897 x679 x18814 (not x30596) x14886)
+:assumption (or x28136 (not x22605))
+:assumption (or (not x10807) (not x20459) (not x11115) x7012)
+:assumption (or (not x29473) (not x19743))
+:assumption (or x2669 x1889)
+:assumption (or x18859 (not x30528))
+:assumption (or x15861 x28004 (not x27749) x15621)
+:assumption (or (not x25113) x18299)
+:assumption (or (not x21432) x20974)
+:assumption (or (not x26444) (not x21575))
+:assumption (or (not x16290) x24826 (not x762) (not x5394))
+:assumption (or x3607 x11947 x8002)
+:assumption (or x4015 x22205)
+:assumption (or (not x7788) x5112)
+:assumption (or x29578 (not x11509))
+:assumption (or x8683 x9475)
+:assumption (or x17641 x15196)
+:assumption (or x16745 x4464)
+:assumption (or x3761 (not x12524))
+:assumption (or x19833 x20621)
+:assumption (or (not x22985) (not x11050))
+:assumption (or x6525 (not x24444))
+:assumption (or (not x17275) (not x16125))
+:assumption (or (not x27840) x27636)
+:assumption (or x5699 x14939)
+:assumption (or x339 (not x28960))
+:assumption (or (not x6516) x24871)
+:assumption (or x22656 (not x22792) x8586 (not x24841))
+:assumption (or x3651 x25255)
+:assumption (or (not x6084) x23878 (not x17855) (not x19320))
+:assumption (or (not x22852) x5464)
+:assumption (or x15613 x8976 (not x27077) (not x17016) (not x28051) x18621)
+:assumption (or (not x5823) x8133)
+:assumption (or (not x13901) x30281)
+:assumption (or x29101 x12391)
+:assumption (or x28351 (not x25818) x24040 x31244 x26047)
+:assumption (or x27898 (not x22967))
+:assumption (or x13283 x7797 x23113 (not x9012) (not x12081) (not x3516))
+:assumption (or (not x23244) (not x29047) x20538 (not x24912) (not x18739) (not x16961))
+:assumption (or x8026 (not x10653))
+:assumption (or x1155 (not x17671))
+:assumption (or (not x12378) x30425 x26772 x10214 x29909)
+:assumption (or x16547 x16741)
+:assumption (or (not x12553) x26017)
+:assumption (or (not x15289) (not x20807))
+:assumption (or (not x8792) x6526)
+:assumption (or (not x5733) x8829 x25659)
+:assumption (or (not x23832) (not x28884))
+:assumption (or (not x3843) x28284)
+:assumption (or x14016 x9732)
+:assumption (or (not x14104) x5277)
+:assumption (or (not x548) x2662)
+:assumption (or x22561 x16330)
+:assumption (or (not x17154) x10326)
+:assumption (or x7848 (not x15263))
+:assumption (or x15124 (not x2709) (not x21027) (not x25818) (not x26681) (not x12792))
+:assumption (or (not x29776) x10103)
+:assumption (or x23969 (not x18040))
+:assumption (or x28264 (not x5899) x17748 x23114 (not x1639))
+:assumption (or (not x29869) x3125)
+:assumption (or (not x25334) x30344)
+:assumption (or (not x3769) x23244)
+:assumption (or (not x31891) x1872)
+:assumption (or (not x25381) (not x22487))
+:assumption (or x23709 (not x3560))
+:assumption (or x19182 x28516)
+:assumption (or x31273 (not x31382) (not x31259) (not x25370) x5227 x17770 x18631 (not x16468) x17091 x2633)
+:assumption (or x7703 x30947 x25276 (not x21298))
+:assumption (or (not x18375) x23207)
+:assumption (or (not x10050) x8002 x10191)
+:assumption (or x5528 (not x6744))
+:assumption (or x14578 x2848 x4530)
+:assumption (or x1534 x13632)
+:assumption (or x22232 (not x6030))
+:assumption (or x15976 (not x9008))
+:assumption (or x8002 (not x7639))
+:assumption (or (not x9306) x7134)
+:assumption (or x8287 x27446 x3549 (not x31544) x26950 x28 x31578 (not x27635))
+:assumption (or (not x9821) (not x2229))
+:assumption (or (not x11274) x19812 x23124)
+:assumption (or x8757 x7965)
+:assumption (or x7969 (not x3535))
+:assumption (or x1147 x16039)
+:assumption (or x25887 x6766)
+:assumption (or (not x13767) x8262)
+:assumption (or x25107 (not x6307))
+:assumption (or (not x10800) (not x8537) x26224)
+:assumption (or x26647 x3871)
+:assumption (or x21098 x5394)
+:assumption (or (not x20986) (not x23690))
+:assumption (or (not x16540) (not x11792) x23244)
+:assumption (or (not x31637) (not x20484))
+:assumption (or (not x18054) x27530)
+:assumption (or (not x15934) x12358)
+:assumption (or x30305 x16374 x29698 x12290 (not x28449))
+:assumption (or x23293 (not x27734))
+:assumption (or (not x28328) (not x2578) (not x22559))
+:assumption (or x20832 x17254)
+:assumption (or (not x31131) (not x29312))
+:assumption (or x7983 x9607)
+:assumption (or (not x30550) (not x20929) x13830)
+:assumption (or (not x5661) (not x7727))
+:assumption (or x18675 (not x10990) x1582)
+:assumption (or x25718 x28364)
+:assumption (or (not x26715) (not x26668))
+:assumption (or (not x8571) x18913)
+:assumption (or (not x10995) (not x14365))
+:assumption (or x30533 x3701 x5384 x14739 (not x10506) (not x4415) x13679 x1893)
+:assumption (or (not x18156) (not x27185))
+:assumption (or (not x16096) (not x30282))
+:assumption (or x17671 x11418 (not x29981) (not x6612) x13500)
+:assumption (or (not x6537) x11933)
+:assumption (or x1765 (not x1009))
+:assumption (or x31338 x8990)
+:assumption (or x8729 (not x13999))
+:assumption (or (not x22408) (not x3307))
+:assumption (or (not x15861) x19315)
+:assumption (or (not x2491) x2334)
+:assumption (or (not x17129) x7957 x25366)
+:assumption (or x29266 (not x28771) x7859 x22922)
+:assumption (or x16040 (not x1495))
+:assumption (or (not x7477) x17702)
+:assumption (or x20843 x7542)
+:assumption (or (not x11309) x26501)
+:assumption (or x5449 x21976)
+:assumption (or (not x27009) (not x685))
+:assumption (or (not x25964) x21158)
+:assumption (or (not x1482) x3831)
+:assumption (or (not x22161) x17314 x16374)
+:assumption (or (not x29404) x16085)
+:assumption (or x16362 (not x26544) x6917 x20471 x30149 (not x5373))
+:assumption (or (not x29372) x8152)
+:assumption (or (not x26715) (not x2608))
+:assumption (or (not x14696) x27447)
+:assumption (or x7918 (not x8543))
+:assumption (or (not x16619) (not x24356))
+:assumption (or x2537 (not x26438) x14839)
+:assumption (or x12525 x12646)
+:assumption (or x26251 (not x14839))
+:assumption (or (not x16128) x26956)
+:assumption (or (not x3521) x1535)
+:assumption (or x28885 (not x11176) x26176 x13319 x4693 x9043 (not x3533))
+:assumption (or x18940 (not x29810))
+:assumption (or x23424 (not x25409))
+:assumption (or (not x8002) (not x16564))
+:assumption (or x6860 x29814)
+:assumption (or x21146 (not x11019))
+:assumption (or x6243 (not x2350))
+:assumption (or x31445 (not x30549))
+:assumption (or x31147 (not x7724) (not x14839))
+:assumption (or (not x14953) x13747 (not x18117))
+:assumption (or (not x3805) (not x18980))
+:assumption (or (not x3280) x24353)
+:assumption (or x30008 x6605)
+:assumption (or (not x16850) x24208)
+:assumption (or x30831 (not x6739))
+:assumption (or (not x22608) x3492)
+:assumption (or (not x1184) (not x28748) (not x4919) (not x20480) x14880 (not x22679))
+:assumption (or x7686 (not x8223))
+:assumption (or (not x21008) (not x30858))
+:assumption (or (not x21098) (not x4591))
+:assumption (or (not x20530) x29451)
+:assumption (or x12051 (not x28999))
+:assumption (or (not x12430) (not x11792))
+:assumption (or x14711 (not x30279))
+:assumption (or x3874 (not x23386))
+:assumption (or (not x15564) x11208 x24442)
+:assumption (or (not x27253) x1393)
+:assumption (or x9008 x4227 (not x22983) (not x9406) x27674 x3451)
+:assumption (or x16554 x14549)
+:assumption (or x24384 (not x26235))
+:assumption (or x25815 (not x827))
+:assumption (or (not x23276) (not x9786))
+:assumption (or (not x9438) (not x30495))
+:assumption (or x19549 x26941 (not x16374))
+:assumption (or (not x10270) (not x28816))
+:assumption (or (not x8812) (not x15691))
+:assumption (or x24252 x20298)
+:assumption (or (not x22805) (not x17743))
+:assumption (or x5006 (not x11879))
+:assumption (or (not x3520) x5179)
+:assumption (or x29959 x31793)
+:assumption (or x3905 (not x15649))
+:assumption (or x18745 x19395 (not x3141) (not x7490) x225 x8120 x24477)
+:assumption (or (not x6091) (not x953))
+:assumption (or x13431 (not x5968))
+:assumption (or (not x20734) x22013)
+:assumption (or x4985 x20325)
+:assumption (or x20929 (not x18737))
+:assumption (or x5644 (not x18003))
+:assumption (or x15909 (not x22000))
+:assumption (or (not x15747) (not x12129))
+:assumption (or (not x23279) (not x18947))
+:assumption (or (not x22934) (not x21270))
+:assumption (or x22282 x6600 (not x7835) (not x31046) (not x8227))
+:assumption (or x8176 (not x9710))
+:assumption (or (not x16930) (not x1791))
+:assumption (or x2382 (not x10730))
+:assumption (or (not x26221) (not x10703))
+:assumption (or (not x23062) x2801)
+:assumption (or x28773 x25865)
+:assumption (or x23214 x18418)
+:assumption (or (not x7835) x31667)
+:assumption (or x10927 (not x4377))
+:assumption (or x27562 x8339)
+:assumption (or x13956 x9165)
+:assumption (or (not x27415) (not x4043))
+:assumption (or x26448 (not x9008))
+:assumption (or x504 x18283)
+:assumption (or x947 x21492)
+:assumption (or (not x30330) x9289)
+:assumption (or (not x16583) x6149 x6945 (not x11792))
+:assumption (or x9309 x9509)
+:assumption (or x19373 x5115)
+:assumption (or (not x7150) x16618)
+:assumption (or x24320 (not x3527))
+:assumption (or x8089 (not x428) (not x22452) x5990 (not x11366) x15747 (not x1309) x18859)
+:assumption (or x15144 (not x15482))
+:assumption (or (not x24348) x23077)
+:assumption (or x128 (not x11220))
+:assumption (or (not x14821) (not x13132))
+:assumption (or x11458 (not x30138) (not x16301) (not x17036))
+:assumption (or (not x27171) (not x14278))
+:assumption (or (not x24781) x20463 x9906 (not x8387))
+:assumption (or (not x25204) x10430)
+:assumption (or x5196 x13544)
+:assumption (or x455 (not x8376))
+:assumption (or x8269 (not x27642))
+:assumption (or (not x21293) (not x21118) (not x30002))
+:assumption (or (not x5367) x7311)
+:assumption (or x18334 x8359)
+:assumption (or x30124 x13947)
+:assumption (or x20104 (not x8042))
+:assumption (or (not x28482) (not x18931))
+:assumption (or x20814 (not x10512))
+:assumption (or x25911 x5450 x2868 x29710)
+:assumption (or (not x2849) (not x103) (not x21298) x10972)
+:assumption (or x4247 x15875 x19987 x11251 (not x11295))
+:assumption (or x7313 x15943)
+:assumption (or x20493 (not x4584))
+:assumption (or (not x27905) (not x12116))
+:assumption (or x14103 (not x15486))
+:assumption (or (not x28973) (not x4218))
+:assumption (or x12278 (not x14745))
+:assumption (or x28119 (not x23839))
+:assumption (or (not x1699) x13993)
+:assumption (or x7286 (not x29104) (not x21701))
+:assumption (or (not x11433) x19694)
+:assumption (or (not x20278) (not x6587))
+:assumption (or x29460 x20253)
+:assumption (or (not x30954) (not x7457))
+:assumption (or (not x22515) x23316)
+:assumption (or (not x5669) x13956)
+:assumption (or (not x26806) (not x18139))
+:assumption (or x21612 (not x19146))
+:assumption (or x19153 (not x31834))
+:assumption (or x30813 (not x10064))
+:assumption (or (not x15252) x2013)
+:assumption (or x18941 x30235)
+:assumption (or (not x14091) x9934)
+:assumption (or (not x16919) (not x9231))
+:assumption (or (not x12572) (not x18500))
+:assumption (or x8401 (not x23244))
+:assumption (or (not x28415) x12162)
+:assumption (or x18369 (not x1101))
+:assumption (or x964 (not x24805) x5394 x13214)
+:assumption (or x25840 (not x15422))
+:assumption (or (not x15082) (not x18047))
+:assumption (or x18567 x30662)
+:assumption (or x13674 (not x23030))
+:assumption (or x23491 (not x4422))
+:assumption (or (not x15918) x24161)
+:assumption (or (not x29800) (not x17633))
+:assumption (or (not x22575) (not x16393))
+:assumption (or x4575 (not x7359))
+:assumption (or (not x856) (not x7836))
+:assumption (or x5896 x165)
+:assumption (or x8232 (not x10874) x28242 (not x14053))
+:assumption (or (not x6700) x5359)
+:assumption (or x4887 (not x490))
+:assumption (or (not x14517) (not x16237))
+:assumption (or (not x169) x9687)
+:assumption (or (not x13057) x8565)
+:assumption (or (not x9494) x27029)
+:assumption (or (not x29106) x5752)
+:assumption (or x288 x10792)
+:assumption (or x24756 (not x31129) x3417 x20087 (not x21528))
+:assumption (or (not x25493) (not x28318))
+:assumption (or (not x19490) x16407 x21978 x28274)
+:assumption (or x11362 (not x5845))
+:assumption (or x11126 x964)
+:assumption (or (not x5249) (not x6360))
+:assumption (or x7537 x7766)
+:assumption (or (not x23632) x18547)
+:assumption (or x12666 (not x21368))
+:assumption (or (not x18228) x28940)
+:assumption (or x12519 (not x7208))
+:assumption (or (not x22107) (not x1631) x4231 x24153 x783 x25343 x13371 (not x299) x19668 (not x23860) x13260 (not x17178))
+:assumption (or x293 x21283)
+:assumption (or x26061 x23201 (not x15866))
+:assumption (or (not x5245) x15913 x16740)
+:assumption (or (not x10116) (not x22416))
+:assumption (or x17157 x17436)
+:assumption (or (not x13912) x22723)
+:assumption (or x26661 x14347)
+:assumption (or x28263 x918)
+:assumption (or (not x13956) (not x22584))
+:assumption (or x1608 (not x9733))
+:assumption (or (not x21734) x8468)
+:assumption (or x6160 (not x8290))
+:assumption (or (not x15268) (not x3300))
+:assumption (or x682 (not x28978))
+:assumption (or (not x24811) x26959)
+:assumption (or (not x21432) (not x4897))
+:assumption (or (not x15094) x18635 (not x8649) x3555)
+:assumption (or (not x4610) x9667)
+:assumption (or x20651 (not x5145))
+:assumption (or (not x4678) (not x22530))
+:assumption (or (not x15942) x13109)
+:assumption (or x24696 (not x13917))
+:assumption (or (not x23244) (not x18885))
+:assumption (or x16907 (not x5898) x7597 (not x6866))
+:assumption (or (not x5311) x637)
+:assumption (or x20884 x14424)
+:assumption (or x23975 (not x30433))
+:assumption (or (not x2225) x10797)
+:assumption (or (not x1247) (not x4037))
+:assumption (or x19992 x26509)
+:assumption (or (not x5157) x25880)
+:assumption (or (not x440) x10550 x23886 x28413 (not x8952) x15907 x4006)
+:assumption (or x21995 (not x10626))
+:assumption (or x18566 x8177 x12804 (not x28375) (not x896))
+:assumption (or x25595 x21258 x13576)
+:assumption (or (not x10898) (not x21246))
+:assumption (or (not x30363) x13885)
+:assumption (or x26142 x23579)
+:assumption (or x4849 (not x24146))
+:assumption (or x7578 (not x3928))
+:assumption (or x1582 (not x7651) x23371)
+:assumption (or (not x8043) (not x13130))
+:assumption (or (not x25376) x18808)
+:assumption (or x1181 (not x14060))
+:assumption (or x1309 (not x8089))
+:assumption (or (not x28410) x2778)
+:assumption (or (not x13651) (not x10056))
+:assumption (or x19590 x6803)
+:assumption (or (not x1016) x8091)
+:assumption (or x25472 x1571 x24722)
+:assumption (or (not x28650) (not x20255))
+:assumption (or (not x4195) (not x29643))
+:assumption (or (not x947) x17274 x30805 x30212 x31335 (not x10823) (not x12896) x8959)
+:assumption (or (not x30727) x11050)
+:assumption (or x26804 (not x8002))
+:assumption (or (not x14591) (not x30705) (not x13402))
+:assumption (or x29675 x9974)
+:assumption (or (not x5828) x28328 (not x11488) (not x24929))
+:assumption (or x9060 (not x4400))
+:assumption (or x6702 (not x13654) (not x14090))
+:assumption (or (not x29290) (not x31033) x27941 x23594 x8648 x27100)
+:assumption (or x17445 (not x3816) (not x21897) x17653 x964 (not x16972))
+:assumption (or (not x8142) x11051)
+:assumption (or x28804 x25813)
+:assumption (or x29810 x5957)
+:assumption (or (not x26827) (not x7470))
+:assumption (or x4146 x202)
+:assumption (or (not x16093) x4156)
+:assumption (or (not x30777) (not x21298))
+:assumption (or x22552 x22534 (not x16025))
+:assumption (or x7287 x20440)
+:assumption (or x13044 x5528)
+:assumption (or x26465 (not x17583))
+:assumption (or (not x17359) (not x26691))
+:assumption (or (not x4551) x3439)
+:assumption (or x8327 x7238)
+:assumption (or x11694 (not x19435) x18064 x8454)
+:assumption (or (not x7358) x18655)
+:assumption (or x19514 x25818)
+:assumption (or x19595 x9060)
+:assumption (or (not x3144) x11478)
+:assumption (or x17252 (not x18735))
+:assumption (or x11316 x31840 x17729 (not x9919) x23720 (not x12419) x18441)
+:assumption (or (not x28564) x9295)
+:assumption (or (not x19059) (not x30429))
+:assumption (or x3876 x6582 (not x21836) x23978 x2573 x18139)
+:assumption (or x8757 (not x21019))
+:assumption (or (not x14812) (not x24109))
+:assumption (or (not x9223) (not x12650))
+:assumption (or (not x6381) (not x21885))
+:assumption (or (not x29426) (not x21964))
+:assumption (or (not x15478) x19918)
+:assumption (or (not x14981) x13147)
+:assumption (or x11821 x20104)
+:assumption (or x30594 (not x21431))
+:assumption (or x7446 (not x5624) x18458 x2751 x14731 x5771 x12737)
+:assumption (or x25350 x14808)
+:assumption (or (not x25366) x20416 (not x17208) (not x31134))
+:assumption (or x21435 (not x8859))
+:assumption (or (not x5727) (not x14005) x5367 x19700 (not x27172) x4568 (not x17722) (not x13972) (not x3625))
+:assumption (or x8053 (not x5528))
+:assumption (or x2369 (not x3519))
+:assumption (or x4938 (not x3625))
+:assumption (or x21958 x6123)
+:assumption (or x1370 x24237)
+:assumption (or x21254 (not x7443))
+:assumption (or x13622 (not x8190))
+:assumption (or x18609 (not x26222))
+:assumption (or x10265 (not x22298))
+:assumption (or x10409 x31890)
+:assumption (or (not x8002) (not x22415) (not x29799) (not x7869))
+:assumption (or (not x17079) (not x2308))
+:assumption (or (not x6109) x13956)
+:assumption (or x3141 x8120 x5077 (not x14578))
+:assumption (or (not x3661) x1546)
+:assumption (or (not x14240) x17545)
+:assumption (or (not x5712) x19647 (not x31724) x14963)
+:assumption (or (not x2520) (not x25659))
+:assumption (or (not x19365) (not x15029))
+:assumption (or x10147 x13647 x7819 x30148 x6236)
+:assumption (or (not x5531) (not x16446) (not x31274))
+:assumption (or (not x19980) x15279)
+:assumption (or x26420 (not x31740))
+:assumption (or (not x3594) x31383)
+:assumption (or (not x11180) x1187)
+:assumption (or x2907 x11791)
+:assumption (or (not x10752) x16735)
+:assumption (or x2462 x135)
+:assumption (or (not x1109) x7291 (not x29172) x14132 x4447)
+:assumption (or (not x13018) x25210 (not x23244) x28364 (not x8002))
+:assumption (or x28241 x21689)
+:assumption (or x19549 (not x12283) (not x22161))
+:assumption (or (not x15488) (not x19006))
+:assumption (or (not x28556) x29369 x17434 x21371 (not x2749) x14558)
+:assumption (or x31409 (not x26162))
+:assumption (or x9294 x15781)
+:assumption (or x1237 x7692)
+:assumption (or (not x16583) (not x3409) x5505 x6951 x13576)
+:assumption (or x12649 x3546 x7198 (not x2416))
+:assumption (or (not x26249) (not x23761))
+:assumption (or (not x25312) x14992)
+:assumption (or x8002 (not x21589))
+:assumption (or x22894 (not x14839))
+:assumption (or (not x5757) x19741)
+:assumption (or (not x16668) (not x8293))
+:assumption (or x4574 (not x21984))
+:assumption (or (not x9128) x19721)
+:assumption (or x27385 x24918)
+:assumption (or (not x29298) x11375 x31324)
+:assumption (or x773 x9017)
+:assumption (or x14105 x14455 (not x13956))
+:assumption (or (not x8968) x6569)
+:assumption (or x24151 x14552)
+:assumption (or (not x12007) (not x8409))
+:assumption (or x2353 x21815)
+:assumption (or x31838 x22958 x26537)
+:assumption (or x12157 x9141)
+:assumption (or x10823 x12896)
+:assumption (or x17492 (not x24819))
+:assumption (or x23216 (not x15657))
+:assumption (or (not x17710) (not x16782))
+:assumption (or (not x28510) x29427)
+:assumption (or x25088 x30219)
+:assumption (or (not x19397) (not x19568))
+:assumption (or (not x30007) (not x29277))
+:assumption (or (not x24499) x5528)
+:assumption (or (not x1771) (not x9022))
+:assumption (or (not x2787) (not x6996))
+:assumption (or x9670 x31483)
+:assumption (or x9021 (not x25900))
+:assumption (or x19948 (not x18576))
+:assumption (or x29159 (not x30424))
+:assumption (or x6607 x5803)
+:assumption (or (not x12223) (not x536))
+:assumption (or (not x15260) (not x25776))
+:assumption (or x8002 x6106)
+:assumption (or (not x10049) x29442 x3782 x26380)
+:assumption (or x13103 x14389)
+:assumption (or x25103 x12223)
+:assumption (or x5484 (not x28242) (not x17418))
+:assumption (or x28298 (not x22482))
+:assumption (or (not x20720) x22802)
+:assumption (or x829 (not x21125))
+:assumption (or (not x10364) (not x26350) x5886)
+:assumption (or x21967 x9235)
+:assumption (or (not x31134) x21816)
+:assumption (or x24042 (not x25098))
+:assumption (or x3090 x28120)
+:assumption (or (not x793) x8197)
+:assumption (or (not x25350) (not x29346) x17908 (not x22350) (not x18515))
+:assumption (or x21924 (not x27979))
+:assumption (or (not x25272) x22444)
+:assumption (or (not x8114) (not x23244) x180)
+:assumption (or (not x218) x15763)
+:assumption (or x24958 (not x898))
+:assumption (or x18772 x26931)
+:assumption (or (not x6535) x6554)
+:assumption (or x1112 (not x20550) x25659 x27941 (not x18042))
+:assumption (or (not x6911) x6797)
+:assumption (or x12242 (not x19237))
+:assumption (or (not x10377) x31304)
+:assumption (or x5293 x30208)
+:assumption (or x10053 (not x17285))
+:assumption (or (not x26436) (not x31478))
+:assumption (or x2622 x2177 x29014 x17370)
+:assumption (or (not x15537) x11502)
+:assumption (or (not x2478) x13303)
+:assumption (or (not x22482) x1765)
+:assumption (or (not x31070) x7717)
+:assumption (or (not x6893) (not x480))
+:assumption (or x7145 x28392)
+:assumption (or x14292 x4773)
+:assumption (or x17194 (not x9531) x13576 (not x26135))
+:assumption (or x14124 x10739)
+:assumption (or (not x18335) (not x4104) (not x26709))
+:assumption (or x2412 (not x24420))
+:assumption (or x5973 x29415)
+:assumption (or (not x28653) x827)
+:assumption (or x24121 (not x20532))
+:assumption (or (not x8002) x27201)
+:assumption (or x25844 (not x14591))
+:assumption (or x30016 (not x2064))
+:assumption (or (not x9776) (not x22025))
+:assumption (or x2095 x21432)
+:assumption (or (not x24756) x155)
+:assumption (or (not x7059) x21525)
+:assumption (or (not x18859) (not x14828))
+:assumption (or (not x9719) (not x11985))
+:assumption (or (not x9720) x15952)
+:assumption (or x5371 (not x29411))
+:assumption (or x18320 x5402)
+:assumption (or x673 (not x14141))
+:assumption (or x4574 (not x27163))
+:assumption (or x19742 x12683)
+:assumption (or x28042 x16539)
+:assumption (or (not x21159) (not x20350))
+:assumption (or (not x3771) x16152)
+:assumption (or x20115 x11019 x12881 x8843)
+:assumption (or (not x26892) x27169 (not x13956) x14901)
+:assumption (or x31244 (not x11279))
+:assumption (or (not x13768) x27500)
+:assumption (or x22935 x2084)
+:assumption (or x13539 (not x551))
+:assumption (or (not x3143) (not x18319))
+:assumption (or x18245 (not x11099))
+:assumption (or x24999 (not x26810))
+:assumption (or (not x23033) (not x4397))
+:assumption (or x15424 (not x9583))
+:assumption (or x4422 (not x28230))
+:assumption (or x26197 x6351 x22577)
+:assumption (or x17965 x9753)
+:assumption (or (not x27149) x24437)
+:assumption (or x23439 x15125)
+:assumption (or (not x27659) x1887 x12119)
+:assumption (or (not x30332) (not x4769))
+:assumption (or x24075 (not x19260))
+:assumption (or (not x7479) x30224)
+:assumption (or (not x19290) (not x27006))
+:assumption (or x9008 x9353 (not x3957))
+:assumption (or (not x12241) (not x30549))
+:assumption (or x23319 x8947)
+:assumption (or x8083 (not x10651))
+:assumption (or (not x12369) x19114)
+:assumption (or x23032 x24191)
+:assumption (or (not x3153) x20992)
+:assumption (or (not x3391) (not x16260))
+:assumption (or (not x15510) (not x25869))
+:assumption (or (not x26461) x23244)
+:assumption (or x28528 x5752)
+:assumption (or (not x19814) x26851 (not x29660))
+:assumption (or x26325 x5182)
+:assumption (or (not x18100) x2552)
+:assumption (or x17855 x13737)
+:assumption (or (not x6139) (not x6074))
+:assumption (or x28562 x27312)
+:assumption (or x14062 x3012)
+:assumption (or (not x16052) x15564)
+:assumption (or x11281 (not x24190))
+:assumption (or (not x26614) x6771)
+:assumption (or (not x14864) (not x11746))
+:assumption (or x12817 (not x15556))
+:assumption (or (not x14607) x506)
+:assumption (or (not x8675) x7023)
+:assumption (or x28973 (not x12079))
+:assumption (or x15736 x25976)
+:assumption (or x8438 x10064)
+:assumption (or (not x28921) (not x4003))
+:assumption (or (not x14692) x25659)
+:assumption (or x14649 (not x27585))
+:assumption (or x8273 x28808 (not x17075))
+:assumption (or (not x21298) x22734)
+:assumption (or (not x16119) x23298)
+:assumption (or (not x14566) x9949)
+:assumption (or x21014 (not x24832))
+:assumption (or (not x25983) x31829 x31678)
+:assumption (or (not x15095) (not x14839))
+:assumption (or (not x8347) (not x14537) x14839 (not x26251))
+:assumption (or x23638 x327)
+:assumption (or (not x272) (not x20717))
+:assumption (or x28805 (not x22022))
+:assumption (or (not x9079) x12297)
+:assumption (or x19476 (not x9433))
+:assumption (or (not x28541) (not x7481))
+:assumption (or x7569 x4411)
+:assumption (or x31805 (not x21432) (not x2095) (not x9880))
+:assumption (or x2662 (not x12045))
+:assumption (or (not x26778) (not x626))
+:assumption (or (not x12233) (not x28315))
+:assumption (or (not x13928) (not x20977))
+:assumption (or (not x20597) (not x26726))
+:assumption (or x1877 (not x22043))
+:assumption (or x16308 (not x17053))
+:assumption (or x921 (not x19976))
+:assumption (or x3686 (not x4722))
+:assumption (or x29172 x268)
+:assumption (or (not x23680) (not x19069))
+:assumption (or x31247 x15589 (not x141) x26261)
+:assumption (or x28973 (not x14805))
+:assumption (or (not x10505) x28575 x12595 x1083 (not x4657) x10502 (not x25639) (not x9983) x27468)
+:assumption (or x24414 x408)
+:assumption (or (not x28076) (not x11523))
+:assumption (or (not x12420) (not x27585))
+:assumption (or x17182 (not x1820))
+:assumption (or x9699 (not x27656))
+:assumption (or x661 (not x25169))
+:assumption (or (not x17979) x30192)
+:assumption (or x10168 x10519)
+:assumption (or x17031 (not x1813))
+:assumption (or (not x29518) x1384)
+:assumption (or x23771 (not x24493))
+:assumption (or (not x28579) x20393)
+:assumption (or (not x16741) x11095)
+:assumption (or x30697 x19074)
+:assumption (or (not x15311) (not x21335))
+:assumption (or x9611 (not x22551))
+:assumption (or (not x6794) (not x30501))
+:assumption (or (not x8841) x20272)
+:assumption (or x15748 (not x24365))
+:assumption (or x17487 x3761)
+:assumption (or x27035 (not x6411))
+:assumption (or x24266 x1875)
+:assumption (or x25702 x23791)
+:assumption (or x27299 x15945)
+:assumption (or (not x14774) (not x29690))
+:assumption (or (not x6893) x23602)
+:assumption (or (not x31452) x30992)
+:assumption (or (not x23463) (not x4441))
+:assumption (or (not x10851) (not x15690))
+:assumption (or x21870 (not x29286))
+:assumption (or (not x10398) x5459 x8002 x23244)
+:assumption (or (not x10224) (not x9535))
+:assumption (or (not x12588) x13956 x19809)
+:assumption (or x11141 (not x7781) (not x2453) x10173 x25730)
+:assumption (or (not x1393) x20225 x31415)
+:assumption (or x20146 x19234)
+:assumption (or x21338 (not x25951) (not x5569) (not x25959))
+:assumption (or (not x2784) x8386)
+:assumption (or x12176 (not x6029))
+:assumption (or x27609 (not x8949))
+:assumption (or x55 (not x29305) (not x5793))
+:assumption (or (not x9128) (not x29958))
+:assumption (or (not x18084) x22158)
+:assumption (or x30730 (not x13606))
+:assumption (or (not x29524) (not x16495))
+:assumption (or x30992 (not x4060))
+:assumption (or x13607 (not x29244))
+:assumption (or x17970 x8444)
+:assumption (or x1640 x23291)
+:assumption (or x2730 x9008 x7809)
+:assumption (or x8517 (not x5136))
+:assumption (or x26841 x2808 (not x26455) (not x31799) x7197)
+:assumption (or x30439 (not x24894))
+:assumption (or x1393 x6958)
+:assumption (or x16659 x29606 x28776)
+:assumption (or (not x29358) x20629)
+:assumption (or x20520 (not x30505))
+:assumption (or (not x2128) x2419 x7128 x29536 x19463)
+:assumption (or x20473 (not x19275))
+:assumption (or x21580 (not x17630) x6537)
+:assumption (or x24936 (not x22090) (not x26739) x8238 x9982 x12016 (not x26769) x1202)
+:assumption (or (not x9555) (not x28129))
+:assumption (or x22242 (not x17658))
+:assumption (or x20515 (not x21599))
+:assumption (or (not x25315) x10913 (not x22360))
+:assumption (or x21926 x26232)
+:assumption (or (not x13022) (not x877))
+:assumption (or (not x4469) (not x26691))
+:assumption (or (not x20478) (not x15691))
+:assumption (or (not x23244) (not x26816) x31241 (not x2778) x28410 (not x20258))
+:assumption (or x27779 (not x11488) (not x10812))
+:assumption (or (not x22369) (not x8899))
+:assumption (or x3370 (not x9155))
+:assumption (or x7729 x25224)
+:assumption (or x10022 (not x8002))
+:assumption (or (not x30071) (not x9008))
+:assumption (or (not x3188) x15998)
+:assumption (or x7286 (not x29159) (not x3810))
+:assumption (or (not x2146) x23243)
+:assumption (or (not x14294) x5179)
+:assumption (or (not x7548) (not x3253))
+:assumption (or x29527 (not x15497))
+:assumption (or x1342 (not x9601) (not x9008))
+:assumption (or x25659 (not x16348) (not x6195))
+:assumption (or (not x13992) x3435)
+:assumption (or x13022 x4265 x31760 (not x10935))
+:assumption (or x653 x15518)
+:assumption (or x5048 x15645)
+:assumption (or (not x14978) (not x15863))
+:assumption (or (not x4593) x20728)
+:assumption (or (not x20892) (not x6655))
+:assumption (or x6538 (not x16241))
+:assumption (or x15477 x6381)
+:assumption (or x30235 x8324)
+:assumption (or x11286 (not x14533))
+:assumption (or x4509 (not x3670))
+:assumption (or (not x16542) x3829 x14672 x3736 x16097)
+:assumption (or (not x21433) (not x21653))
+:assumption (or (not x14486) x3098)
+:assumption (or (not x29342) (not x28436))
+:assumption (or x3127 x15996)
+:assumption (or x14250 x7035)
+:assumption (or (not x24677) x17371)
+:assumption (or x27193 (not x20599))
+:assumption (or x15600 x8765 (not x5979) (not x5320) (not x5528) x9933)
+:assumption (or (not x15453) x131)
+:assumption (or (not x23244) x26630)
+:assumption (or x6950 x15297)
+:assumption (or (not x20157) x12185)
+:assumption (or x12305 (not x1872))
+:assumption (or (not x906) (not x23867))
+:assumption (or (not x11222) x29624)
+:assumption (or x19864 x4748)
+:assumption (or x28499 (not x17815))
+:assumption (or x16025 x30667 x12525)
+:assumption (or x5897 x13407 (not x25376) (not x29967))
+:assumption (or (not x3550) (not x13808))
+:assumption (or x26777 x20956)
+:assumption (or x20594 (not x28003))
+:assumption (or x16660 x330)
+:assumption (or (not x14440) (not x3133))
+:assumption (or x20119 x25094)
+:assumption (or (not x2675) (not x19194))
+:assumption (or (not x9003) x25376)
+:assumption (or (not x7025) (not x8979))
+:assumption (or x949 x18776 (not x22855))
+:assumption (or x3274 (not x2904))
+:assumption (or x1893 x12215)
+:assumption (or (not x16250) x21298)
+:assumption (or (not x17291) (not x7221))
+:assumption (or x23070 x6951 (not x13576))
+:assumption (or (not x25544) (not x2052))
+:assumption (or (not x22528) x19269)
+:assumption (or x7627 (not x21863))
+:assumption (or x21531 (not x21887))
+:assumption (or x7859 (not x11741))
+:assumption (or x3966 (not x27322))
+:assumption (or (not x15915) (not x23592))
+:assumption (or x10258 (not x30802))
+:assumption (or (not x24758) x15222)
+:assumption (or x16925 x9649)
+:assumption (or x19298 (not x13956) x29822)
+:assumption (or x11494 x13409)
+:assumption (or (not x14731) x23850)
+:assumption (or x21553 (not x28890))
+:assumption (or (not x4930) x2546 x3453 x3183 x30905)
+:assumption (or (not x18197) (not x11485))
+:assumption (or x8002 (not x23489) x10432)
+:assumption (or (not x31399) x5528)
+:assumption (or (not x12751) (not x279))
+:assumption (or (not x9456) (not x23639))
+:assumption (or (not x7027) (not x29719))
+:assumption (or x18951 (not x12111))
+:assumption (or (not x31328) x31205)
+:assumption (or x11409 (not x8472))
+:assumption (or x8602 (not x4573))
+:assumption (or x4608 (not x18690))
+:assumption (or x13839 x2071)
+:assumption (or (not x25315) x4160)
+:assumption (or x9319 (not x26915))
+:assumption (or x1278 x5722 (not x4401))
+:assumption (or x15091 x9008 x21503)
+:assumption (or (not x31582) (not x10969))
+:assumption (or x21815 x23833)
+:assumption (or (not x2386) x8444)
+:assumption (or x14376 x9835)
+:assumption (or x7365 x8370)
+:assumption (or (not x768) x28009)
+:assumption (or (not x4480) (not x12960))
+:assumption (or x7398 x9867)
+:assumption (or x17785 x31656)
+:assumption (or x23753 x4630)
+:assumption (or (not x17908) x18200 x16851 (not x22321))
+:assumption (or (not x8282) (not x24895))
+:assumption (or x10252 (not x26045))
+:assumption (or x21013 x12932)
+:assumption (or x25057 x21298)
+:assumption (or x12171 (not x21051))
+:assumption (or (not x10167) x12059)
+:assumption (or x4919 x27502 x22679 (not x1184) x14880 (not x28748))
+:assumption (or x14021 (not x28824))
+:assumption (or (not x18287) x1094)
+:assumption (or (not x19543) (not x3556))
+:assumption (or x6606 x25149)
+:assumption (or (not x24752) x21045)
+:assumption (or (not x18090) (not x24915))
+:assumption (or (not x17449) x9581)
+:assumption (or (not x27349) x496)
+:assumption (or x10448 x25420)
+:assumption (or (not x17450) (not x16907))
+:assumption (or (not x10783) x7333)
+:assumption (or (not x8919) (not x19472))
+:assumption (or x29383 x6115)
+:assumption (or x18931 x26896 (not x16654) x19121)
+:assumption (or x25668 x19501)
+:assumption (or x1042 (not x5116))
+:assumption (or x1772 x30219)
+:assumption (or x21302 x15)
+:assumption (or x24772 (not x21381))
+:assumption (or x29630 (not x19428) (not x30954) x25347)
+:assumption (or (not x18859) (not x3032))
+:assumption (or (not x11309) x21881)
+:assumption (or x28973 (not x28501))
+:assumption (or (not x23888) (not x3435))
+:assumption (or (not x11089) x14180)
+:assumption (or x20713 x11877 x13485 x5108)
+:assumption (or x13467 x12923)
+:assumption (or (not x15879) (not x21527) (not x21906) x4300 x21298 (not x23136))
+:assumption (or x24245 (not x23558))
+:assumption (or (not x23832) x3678)
+:assumption (or x10731 (not x8233))
+:assumption (or (not x20686) x15827)
+:assumption (or x16271 (not x22773))
+:assumption (or (not x3308) x1672)
+:assumption (or (not x17225) x18221)
+:assumption (or x28628 x11115)
+:assumption (or (not x25144) (not x15537))
+:assumption (or (not x25194) (not x6073))
+:assumption (or x6704 x25780)
+:assumption (or x29047 x23244)
+:assumption (or x31022 (not x28503))
+:assumption (or (not x18976) x30391)
+:assumption (or (not x10604) (not x22253))
+:assumption (or x23457 x1582)
+:assumption (or x27939 (not x14910))
+:assumption (or (not x18244) x30960 x28686 x1518 (not x23132) (not x3435))
+:assumption (or x29797 x17866)
+:assumption (or (not x17075) x31875 (not x1711))
+:assumption (or (not x11652) (not x20509))
+:assumption (or (not x9835) (not x4315) (not x21546) x13035 x6028 (not x24377) (not x29940))
+:assumption (or (not x9842) (not x17034))
+:assumption (or (not x10055) x17812)
+:assumption (or (not x26026) (not x22462))
+:assumption (or (not x20025) x18212)
+:assumption (or (not x17635) (not x4253))
+:assumption (or x6562 (not x10867))
+:assumption (or (not x591) x2382)
+:assumption (or (not x16648) (not x19133))
+:assumption (or (not x7694) x19060 x21574)
+:assumption (or (not x6969) x31402 (not x7467))
+:assumption (or (not x13058) x16343 (not x31293) (not x15306) x7924)
+:assumption (or (not x10770) x4205)
+:assumption (or x4483 (not x16155))
+:assumption (or x2867 (not x28260))
+:assumption (or x7550 (not x30891))
+:assumption (or x20800 (not x14015))
+:assumption (or x9439 x8382 (not x7200) (not x8244))
+:assumption (or (not x28851) (not x30874))
+:assumption (or (not x29430) (not x20885) (not x20651) (not x20841))
+:assumption (or x10655 x1923 x16340 (not x4259))
+:assumption (or x17020 (not x26713) (not x19465) (not x30633))
+:assumption (or x12137 x6758 (not x5316) x30295 (not x959))
+:assumption (or x18487 (not x3325))
+:assumption (or (not x26641) (not x12188))
+:assumption (or x9994 (not x19651))
+:assumption (or x3646 x28874 (not x8354))
+:assumption (or (not x5528) x18623 x28017 x13411 (not x9008))
+:assumption (or x18240 (not x22081))
+:assumption (or (not x17178) x18075)
+:assumption (or x9309 (not x4069))
+:assumption (or x20998 (not x8383))
+:assumption (or (not x9008) x20761)
+:assumption (or x4315 x10979)
+:assumption (or x13569 (not x11197))
+:assumption (or x6138 x24344)
+:assumption (or (not x17075) x19735)
+:assumption (or x2591 (not x57))
+:assumption (or (not x2189) x8570)
+:assumption (or (not x2029) (not x31106) x6969)
+:assumption (or x2077 x25265)
+:assumption (or (not x21756) (not x14061))
+:assumption (or (not x3250) x9702 x15236 (not x21974) (not x31847))
+:assumption (or x1789 (not x22546))
+:assumption (or x11446 x29815)
+:assumption (or (not x9816) (not x13160))
+:assumption (or (not x31360) x25282)
+:assumption (or (not x5097) (not x18038))
+:assumption (or (not x7681) x14670)
+:assumption (or x13776 (not x13701))
+:assumption (or (not x6926) (not x16802) x25659 x20140)
+:assumption (or (not x18261) (not x15007))
+:assumption (or x22045 (not x23229))
+:assumption (or x12900 (not x25168) (not x27725))
+:assumption (or (not x21653) x31121)
+:assumption (or x29133 (not x9101))
+:assumption (or (not x27976) x21298)
+:assumption (or x1091 x15406)
+:assumption (or (not x27143) x5722)
+:assumption (or x31893 x23198)
+:assumption (or (not x13467) (not x12923) x8150 x8372)
+:assumption (or (not x18706) x19214)
+:assumption (or (not x3802) (not x27881))
+:assumption (or (not x3813) (not x4387))
+:assumption (or x23301 (not x10820))
+:assumption (or x8631 x29311 (not x5840) x20805 (not x2591) (not x27746))
+:assumption (or x14591 x30722 (not x22710) x15954)
+:assumption (or (not x151) (not x555))
+:assumption (or x4906 x1044 (not x20881) x26824 x22925 x21533)
+:assumption (or (not x25366) (not x6934))
+:assumption (or x18562 x15598)
+:assumption (or x5317 (not x11609))
+:assumption (or (not x24461) x12628 (not x22891))
+:assumption (or (not x1360) (not x13377))
+:assumption (or x14918 x23815)
+:assumption (or x3574 x15578)
+:assumption (or x25340 (not x17837))
+:assumption (or (not x28420) x28904)
+:assumption (or x14053 (not x11034))
+:assumption (or (not x6783) x5403)
+:assumption (or x13613 x9326)
+:assumption (or x15556 x8956 x17345 x18707 x8782)
+:assumption (or x4383 x3321 x28890)
+:assumption (or x20576 (not x10008))
+:assumption (or (not x13133) (not x20570))
+:assumption (or x31349 (not x31339))
+:assumption (or x17728 x29011)
+:assumption (or x17417 x4471)
+:assumption (or x4217 (not x25880))
+:assumption (or (not x31422) x15211)
+:assumption (or x10521 (not x9638))
+:assumption (or (not x17612) (not x15462))
+:assumption (or x6202 (not x25807))
+:assumption (or x30869 (not x27454))
+:assumption (or (not x3426) x4018)
+:assumption (or x3899 (not x29533) x27939 (not x24042))
+:assumption (or x31254 x31579)
+:assumption (or x12223 (not x7585))
+:assumption (or (not x30954) x26623)
+:assumption (or (not x5603) (not x22604))
+:assumption (or x6879 x1693 (not x18100) x26707 x18658)
+:assumption (or x23386 x7702)
+:assumption (or x16089 (not x1146))
+:assumption (or (not x10641) (not x26642))
+:assumption (or x3799 x20879)
+:assumption (or (not x21959) (not x11578))
+:assumption (or (not x13757) x29932)
+:assumption (or x8414 x10553)
+:assumption (or (not x28236) x8798 (not x8602))
+:assumption (or x6947 (not x28537) (not x11771) (not x12442))
+:assumption (or (not x31829) x890)
+:assumption (or (not x21298) x1882 x4406)
+:assumption (or (not x28209) (not x13707))
+:assumption (or x13605 x7887)
+:assumption (or (not x21762) (not x4082))
+:assumption (or x9093 (not x21298) (not x15223) (not x2705))
+:assumption (or x19428 x20121 (not x21815) (not x16510) (not x9531))
+:assumption (or x13400 x24581)
+:assumption (or (not x30110) x22684)
+:assumption (or (not x10384) (not x16025))
+:assumption (or x27324 (not x25423))
+:assumption (or x4827 x1889)
+:assumption (or x30835 (not x2289))
+:assumption (or x20117 x23967)
+:assumption (or x29334 (not x28496))
+:assumption (or (not x20424) (not x9008))
+:assumption (or (not x15144) x21118)
+:assumption (or x23094 (not x6878))
+:assumption (or (not x23321) x2496)
+:assumption (or x20586 (not x14811))
+:assumption (or (not x5461) (not x13655))
+:assumption (or x2657 (not x6091))
+:assumption (or x19091 x21298)
+:assumption (or x29818 (not x27537))
+:assumption (or (not x10511) x24195)
+:assumption (or (not x29405) (not x1657) (not x7929))
+:assumption (or (not x2271) (not x10321))
+:assumption (or x11118 x10426)
+:assumption (or x21333 (not x12796))
+:assumption (or x27618 x9481)
+:assumption (or x964 (not x20185))
+:assumption (or x8429 (not x14696) (not x18656))
+:assumption (or (not x189) x16510)
+:assumption (or (not x30426) (not x9021) (not x21298))
+:assumption (or x3069 (not x26909) (not x29383) x26388 x13641 (not x10187) (not x4695) (not x4425))
+:assumption (or (not x26862) x8705)
+:assumption (or x26621 (not x31316))
+:assumption (or (not x649) x27951)
+:assumption (or (not x20651) (not x12503))
+:assumption (or x29152 x31634)
+:assumption (or x23386 (not x6863))
+:assumption (or x30044 (not x3813))
+:assumption (or x27314 x11590)
+:assumption (or (not x18666) x30719)
+:assumption (or x11371 x27293 (not x15917) (not x10064))
+:assumption (or x9438 x30495)
+:assumption (or x28534 x19305)
+:assumption (or x9059 (not x31182))
+:assumption (or (not x3999) x2973)
+:assumption (or x15917 x13585 (not x24079) (not x10064))
+:assumption (or x5310 x14873)
+:assumption (or (not x28260) (not x21135))
+:assumption (or (not x11314) (not x18006))
+:assumption (or (not x27238) x1393 x11646)
+:assumption (or x26121 (not x13796))
+:assumption (or (not x17636) (not x13956))
+:assumption (or x27710 x12128 x1393)
+:assumption (or x10510 (not x18285))
+:assumption (or x31845 x24734 x4051 (not x28990))
+:assumption (or x25424 (not x20088))
+:assumption (or (not x11723) (not x25659))
+:assumption (or (not x20404) x21222)
+:assumption (or (not x756) (not x10874))
+:assumption (or x29579 x29959)
+:assumption (or x5692 x20594)
+:assumption (or x22231 (not x27793))
+:assumption (or x22349 x17982)
+:assumption (or x2133 x16741 (not x21445))
+:assumption (or (not x7572) x2334)
+:assumption (or x29990 (not x14165))
+:assumption (or x23504 (not x5028))
+:assumption (or x10064 x4954)
+:assumption (or (not x26932) (not x28896))
+:assumption (or (not x2845) (not x28857))
+:assumption (or x1765 x1972)
+:assumption (or x30687 (not x3001))
+:assumption (or x20232 x16159 x9635 x22632 x20991 x21107 x17143 x13628)
+:assumption (or x11730 x593)
+:assumption (or (not x2211) x29867)
+:assumption (or (not x18828) x26136)
+:assumption (or x14509 (not x27672))
+:assumption (or (not x28302) x167)
+:assumption (or (not x31220) (not x23149))
+:assumption (or (not x12250) x5806)
+:assumption (or x5828 x24929)
+:assumption (or (not x15761) (not x27878) (not x17549) (not x5397) (not x11413) (not x19044))
+:assumption (or x846 x2736 x7553 x13308 (not x6226) x30977)
+:assumption (or x25874 (not x13956))
+:assumption (or x27639 x17359)
+:assumption (or x3920 x29522 x12046 x19884 (not x8852))
+:assumption (or x29223 (not x410))
+:assumption (or (not x17975) x10307)
+:assumption (or x31107 x15089)
+:assumption (or (not x19493) x21929)
+:assumption (or x30072 (not x17068))
+:assumption (or (not x8817) x24240)
+:assumption (or (not x23589) x30578)
+:assumption (or (not x24533) (not x29097))
+:assumption (or x27153 (not x11889))
+:assumption (or x5128 x23285)
+:assumption (or (not x3708) x22507)
+:assumption (or x6725 (not x11791))
+:assumption (or x16690 (not x8961))
+:assumption (or (not x23292) x24970)
+:assumption (or x14371 x8450)
+:assumption (or x7020 (not x31617))
+:assumption (or (not x7328) x649)
+:assumption (or (not x22227) x16742)
+:assumption (or (not x25351) x11751)
+:assumption (or (not x31733) x16025 x23633)
+:assumption (or x9018 (not x17247) (not x25661))
+:assumption (or x26755 (not x4504))
+:assumption (or x6746 (not x20442))
+:assumption (or x17067 x26305)
+:assumption (or (not x4869) (not x31694))
+:assumption (or (not x3312) x22855)
+:assumption (or (not x18274) (not x6752))
+:assumption (or x21546 x3612)
+:assumption (or x11281 x16778)
+:assumption (or x2890 x6266 x26061 (not x9396))
+:assumption (or x19006 (not x21298) x14003 x27976)
+:assumption (or x1569 (not x29717))
+:assumption (or (not x13411) (not x6640))
+:assumption (or x11821 x8285)
+:assumption (or (not x26261) x141)
+:assumption (or x28341 x27852)
+:assumption (or x28736 (not x4260))
+:assumption (or x31829 (not x31730))
+:assumption (or (not x28299) (not x17079))
+:assumption (or (not x25048) x10808)
+:assumption (or x3156 (not x8333))
+:assumption (or (not x25318) (not x10342))
+:assumption (or (not x16600) (not x7985))
+:assumption (or (not x3113) x10320)
+:assumption (or (not x10913) x16523)
+:assumption (or x28538 x7305)
+:assumption (or (not x10191) x10050)
+:assumption (or (not x14366) (not x15189))
+:assumption (or (not x14127) (not x21410))
+:assumption (or (not x8182) x13384)
+:assumption (or x17472 x31574 x9667)
+:assumption (or x28042 x29959)
+:assumption (or x2575 x30112)
+:assumption (or (not x27452) (not x18623))
+:assumption (or (not x31289) x19253)
+:assumption (or x7446 (not x1621) (not x5624) x14731 (not x5050) x18458 x2751)
+:assumption (or x30847 (not x539))
+:assumption (or x9143 (not x8552) x20482)
+:assumption (or x25223 x6351 x14619 x9697 x1859 x23825 x22873)
+:assumption (or x28730 x16558)
+:assumption (or x21815 (not x19299))
+:assumption (or (not x883) x5291)
+:assumption (or (not x17680) (not x11116))
+:assumption (or x17209 x25878)
+:assumption (or (not x18898) x918)
+:assumption (or (not x1646) x3812)
+:assumption (or x30113 x17114 (not x12176))
+:assumption (or x7173 x28449)
+:assumption (or x26180 (not x11914))
+:assumption (or x27189 (not x16994))
+:assumption (or x7916 x25848)
+:assumption (or x30921 (not x5612))
+:assumption (or (not x4913) (not x4442))
+:assumption (or x2091 x17168)
+:assumption (or (not x4978) x13205)
+:assumption (or (not x12607) (not x8800))
+:assumption (or x6171 (not x25115))
+:assumption (or x27833 (not x21178))
+:assumption (or (not x4127) (not x9431))
+:assumption (or (not x16231) (not x27950))
+:assumption (or x14731 x24964)
+:assumption (or x123 (not x2079))
+:assumption (or x6989 (not x16974) x18537 (not x10803))
+:assumption (or x1839 (not x12356))
+:assumption (or x25103 (not x29307))
+:assumption (or x28530 x11771)
+:assumption (or (not x3562) x12160)
+:assumption (or x26231 (not x16786))
+:assumption (or x8094 (not x13111))
+:assumption (or (not x22695) x29669 (not x16240) x939 (not x16422))
+:assumption (or (not x6149) x29207)
+:assumption (or (not x11503) (not x29357))
+:assumption (or x9915 x30414)
+:assumption (or x9806 (not x31411))
+:assumption (or (not x24133) x25727)
+:assumption (or x30301 x20723)
+:assumption (or x11792 (not x11814) (not x7346) x6149)
+:assumption (or x17828 (not x27532))
+:assumption (or x870 (not x25490))
+:assumption (or (not x25318) (not x14446))
+:assumption (or (not x16510) x14591 (not x21815) x6168 (not x1057) (not x15965) (not x3782))
+:assumption (or (not x14455) (not x28170) x25559 x7433 x27296)
+:assumption (or x1716 (not x7472) x9008)
+:assumption (or (not x15589) x8304)
+:assumption (or x10292 (not x6939))
+:assumption (or (not x11708) (not x21298))
+:assumption (or (not x4428) (not x17939))
+:assumption (or (not x26675) x19514)
+:assumption (or (not x13957) (not x1069) (not x23865))
+:assumption (or (not x27698) (not x827) x27914)
+:assumption (or (not x9725) x19399)
+:assumption (or (not x31237) (not x14035))
+:assumption (or x21478 x14446)
+:assumption (or (not x24078) x17075)
+:assumption (or (not x23244) x7760 x24586 x3807 x6888 (not x3346))
+:assumption (or (not x21826) x24679)
+:assumption (or x19864 (not x11527) x17386 (not x10183) (not x23972))
+:assumption (or x517 (not x29312))
+:assumption (or x31440 (not x6726))
+:assumption (or x5676 x12419)
+:assumption (or (not x18130) (not x16710) (not x8975) x28179 (not x9843))
+:assumption (or (not x9008) x29772 (not x5528) x22829 (not x13050))
+:assumption (or (not x24953) (not x3117))
+:assumption (or (not x27530) (not x11663))
+:assumption (or (not x31432) (not x30954))
+:assumption (or (not x27686) x3446)
+:assumption (or x3943 (not x27589))
+:assumption (or (not x23408) (not x28667) (not x19864))
+:assumption (or x16003 (not x26072))
+:assumption (or x29825 x27644)
+:assumption (or (not x8341) x21170)
+:assumption (or x16654 x8002 (not x28028) x12286)
+:assumption (or (not x22627) (not x11311))
+:assumption (or (not x17831) x13956)
+:assumption (or x10577 x5447)
+:assumption (or (not x27862) x18566 (not x28375) x8177 (not x11178) x896)
+:assumption (or x9933 (not x20738))
+:assumption (or x11471 (not x15926))
+:assumption (or (not x12836) x8942)
+:assumption (or x3150 x449)
+:assumption (or (not x20555) x15791)
+:assumption (or (not x14153) x30625)
+:assumption (or (not x497) x21127)
+:assumption (or x5896 (not x27681))
+:assumption (or x7853 (not x23244))
+:assumption (or x24114 (not x30856) x873)
+:assumption (or x20664 x7504)
+:assumption (or (not x1849) (not x6951))
+:assumption (or x12327 (not x26723))
+:assumption (or x7758 (not x7748))
+:assumption (or x19844 x21136)
+:assumption (or (not x3558) (not x23039))
+:assumption (or x14659 x22562)
+:assumption (or (not x24346) x1883 x22604)
+:assumption (or x19841 (not x9419))
+:assumption (or (not x2091) x7853)
+:assumption (or x28743 (not x3600))
+:assumption (or x25791 x16764)
+:assumption (or x5713 (not x16224))
+:assumption (or x19994 (not x15692))
+:assumption (or (not x24458) x24637)
+:assumption (or x16229 (not x5201))
+:assumption (or (not x18456) (not x28770))
+:assumption (or x8345 (not x29919))
+:assumption (or x142 x9260)
+:assumption (or (not x13603) (not x13797))
+:assumption (or x14349 (not x10859))
+:assumption (or (not x5004) (not x13326) x9213 (not x26031) (not x18753) x11219)
+:assumption (or (not x3644) x4415)
+:assumption (or (not x21100) x13934)
+:assumption (or x6832 x28087)
+:assumption (or x21378 x3063)
+:assumption (or (not x11672) x18253)
+:assumption (or x18293 x4461)
+:assumption (or x2693 (not x8123))
+:assumption (or (not x14523) (not x7243))
+:assumption (or x16569 (not x5467))
+:assumption (or x9920 x28418)
+:assumption (or x2976 x28754)
+:assumption (or x12742 (not x10261))
+:assumption (or (not x11856) x6677)
+:assumption (or x20052 (not x29523))
+:assumption (or x28406 x26149)
+:assumption (or (not x13744) x12827)
+:assumption (or x16741 x2689)
+:assumption (or x27357 (not x6041))
+:assumption (or (not x6316) (not x16277))
+:assumption (or (not x12384) x20341 (not x19183) x21690)
+:assumption (or x10874 (not x21965))
+:assumption (or (not x7835) x18403 x18100 (not x2133))
+:assumption (or (not x22706) (not x7286))
+:assumption (or x6269 (not x8002))
+:assumption (or (not x12063) x11980)
+:assumption (or (not x17818) (not x21578))
+:assumption (or x11598 x26743)
+:assumption (or x16990 x18530 (not x18228) (not x16517))
+:assumption (or x4703 (not x17967))
+:assumption (or x26492 x16117)
+:assumption (or (not x30288) (not x5699) (not x14939) (not x5028))
+:assumption (or x14281 (not x22382))
+:assumption (or x18859 (not x14444))
+:assumption (or (not x31539) (not x20576))
+:assumption (or (not x8220) (not x16522))
+:assumption (or x2181 x4058)
+:assumption (or x21520 x28674)
+:assumption (or x11119 (not x11532))
+:assumption (or x12598 (not x23079))
+:assumption (or (not x19213) x8602 x7793)
+:assumption (or x16782 (not x11315) x9008)
+:assumption (or (not x24859) (not x8724))
+:assumption (or x5176 x30752)
+:assumption (or (not x18769) (not x5490))
+:assumption (or x25201 (not x24689))
+:assumption (or (not x5098) (not x28868))
+:assumption (or (not x3305) x15792)
+:assumption (or (not x15795) x1772)
+:assumption (or (not x30446) (not x6108) (not x17110) (not x14630) (not x458) x26668 x26715 (not x6190))
+:assumption (or (not x11367) (not x9728))
+:assumption (or x5699 x5028)
+:assumption (or (not x3150) (not x21835))
+:assumption (or (not x16781) (not x18237) x23444 x4088 x3008 (not x6383))
+:assumption (or (not x7500) x13256)
+:assumption (or x869 (not x8002))
+:assumption (or (not x5687) (not x22348))
+:assumption (or (not x2178) x22981 (not x24445))
+:assumption (or x9775 x28731)
+:assumption (or x13656 (not x2707))
+:assumption (or (not x15693) (not x14395))
+:assumption (or (not x4444) (not x1067))
+:assumption (or (not x22604) (not x4999) x24346 (not x26017) x7653)
+:assumption (or x22235 (not x7511))
+:assumption (or (not x6238) x26823)
+:assumption (or (not x18758) x16510)
+:assumption (or x29433 (not x5625))
+:assumption (or x26539 x10973)
+:assumption (or x27346 x7334 (not x17371) x13529 (not x21954))
+:assumption (or x5528 (not x25264))
+:assumption (or (not x7942) (not x3156))
+:assumption (or (not x21008) x29769)
+:assumption (or x1371 (not x6382))
+:assumption (or (not x20707) (not x16025))
+:assumption (or x14896 (not x8831) (not x21607) x17972 (not x8524) x1676 (not x976) x24079)
+:assumption (or (not x31672) (not x22361))
+:assumption (or x23371 (not x28973) x19579)
+:assumption (or (not x28467) x20949)
+:assumption (or x26689 x10912)
+:assumption (or (not x30609) (not x29606))
+:assumption (or (not x25292) x11616)
+:assumption (or x20980 x16131)
+:assumption (or (not x4083) (not x18079))
+:assumption (or (not x13653) (not x31767))
+:assumption (or (not x22025) (not x31613))
+:assumption (or (not x4235) (not x31457))
+:assumption (or (not x26444) (not x15684))
+:assumption (or (not x2653) x7022)
+:assumption (or x27108 (not x26552) x4893 (not x23771) (not x18546) x26810)
+:assumption (or (not x12034) x27142)
+:assumption (or (not x25170) x31829 (not x10226) x918)
+:assumption (or (not x19497) (not x12116) (not x15336))
+:assumption (or x7909 (not x5577))
+:assumption (or (not x28618) x353)
+:assumption (or x250 x14600)
+:assumption (or (not x24756) x21528)
+:assumption (or x29203 (not x6109))
+:assumption (or x23524 (not x18727))
+:assumption (or (not x6901) x7177 (not x30348))
+:assumption (or (not x23754) x20906)
+:assumption (or x26466 (not x30198))
+:assumption (or x20162 x21017)
+:assumption (or (not x20075) (not x29761))
+:assumption (or x16328 x2876 (not x14034) (not x9064) x19840 (not x28194))
+:assumption (or (not x22450) (not x2544))
+:assumption (or x402 (not x21026))
+:assumption (or (not x24474) x25364)
+:assumption (or x11373 (not x5538))
+:assumption (or (not x7793) x19213)
+:assumption (or x29654 (not x16964) x26625 x25490 x30158 (not x20670) (not x30689))
+:assumption (or (not x25318) (not x381))
+:assumption (or x12753 x1530)
+:assumption (or (not x4010) x15387)
+:assumption (or x14221 x10171)
+:assumption (or x31123 x8002)
+:assumption (or x2167 x29990)
+:assumption (or x8729 x31455)
+:assumption (or x21681 x26299)
+:assumption (or (not x20093) x15537)
+:assumption (or (not x7541) x22183)
+:assumption (or x5240 x10909 x26996 x18511)
+:assumption (or (not x1572) (not x14591))
+:assumption (or (not x3453) x28193 (not x12479))
+:assumption (or x4280 (not x9266))
+:assumption (or (not x19661) (not x3309) (not x29844) (not x9989) (not x20909))
+:assumption (or (not x12825) (not x15300))
+:assumption (or x5002 x4275)
+:assumption (or (not x20494) (not x12526))
+:assumption (or (not x2447) x18454)
+:assumption (or x9732 (not x3045))
+:assumption (or x8382 (not x21379))
+:assumption (or (not x31876) x20749)
+:assumption (or (not x15797) (not x2234))
+:assumption (or x5494 x5685)
+:assumption (or (not x6540) (not x10618))
+:assumption (or x17930 x15733 (not x1951) x31718 x5461)
+:assumption (or x9008 (not x26526) (not x19441))
+:assumption (or (not x27368) (not x13997))
+:assumption (or (not x9568) (not x14759))
+:assumption (or x954 (not x22874))
+:assumption (or (not x14248) (not x10909))
+:assumption (or x12743 x9398)
+:assumption (or (not x418) x9531)
+:assumption (or (not x20612) (not x5528) (not x9008) (not x20794) (not x8081))
+:assumption (or x18144 (not x29126))
+:assumption (or (not x2439) (not x6030))
+:assumption (or x6638 x11354)
+:assumption (or (not x27621) x25456)
+:assumption (or x19125 (not x25315))
+:assumption (or x23054 x27537)
+:assumption (or x31429 x21905 x10076 x7229 x13377 x12176)
+:assumption (or x3343 (not x651) (not x19717))
+:assumption (or (not x23751) (not x17682))
+:assumption (or (not x5064) (not x30239))
+:assumption (or (not x8094) (not x18243))
+:assumption (or x24763 x3640 x20002 (not x16685) x10700 x29205)
+:assumption (or x8706 (not x15540))
+:assumption (or (not x7286) x22403)
+:assumption (or (not x8894) x20087)
+:assumption (or x24504 (not x16912))
+:assumption (or (not x10494) x7870)
+:assumption (or (not x23994) (not x11588))
+:assumption (or (not x19171) (not x4206))
+:assumption (or (not x30494) x10711)
+:assumption (or (not x22728) (not x30137))
+:assumption (or x2583 x6121)
+:assumption (or (not x20980) x27588 (not x31667) x23103 (not x16131))
+:assumption (or (not x16304) (not x5632))
+:assumption (or x3782 (not x14182))
+:assumption (or (not x6227) x6137)
+:assumption (or (not x3010) (not x21689))
+:assumption (or (not x13193) x25453)
+:assumption (or x11490 x7001)
+:assumption (or x11792 (not x9112) (not x11606) x27546 x30360)
+:assumption (or (not x19758) x21815)
+:assumption (or (not x17861) x15688)
+:assumption (or (not x14514) x17140)
+:assumption (or (not x27726) x444)
+:assumption (or x2141 (not x14576))
+:assumption (or x1483 x22164)
+:assumption (or x20465 (not x15755))
+:assumption (or x23581 (not x26805))
+:assumption (or x14662 (not x21083))
+:assumption (or (not x21955) x20980)
+:assumption (or (not x2362) x12027)
+:assumption (or (not x17789) (not x833))
+:assumption (or x31301 (not x18670))
+:assumption (or x20656 x16097)
+:assumption (or (not x30212) x10823)
+:assumption (or x8713 (not x25133))
+:assumption (or x30009 (not x24561) x9008)
+:assumption (or x8028 (not x23511) (not x9465) (not x15698) (not x2235) x16013 (not x17933))
+:assumption (or (not x8315) (not x25777))
+:assumption (or (not x31134) (not x6719))
+:assumption (or (not x21298) x6356)
+:assumption (or x29964 (not x31308) x8002 (not x16777) (not x19770) x29870)
+:assumption (or x27080 x10874)
+:assumption (or x13922 x9532)
+:assumption (or x12696 x13271)
+:assumption (or (not x1834) x8121)
+:assumption (or (not x27911) (not x1994))
+:assumption (or (not x942) x27866)
+:assumption (or x2905 (not x16879))
+:assumption (or (not x5214) (not x9755))
+:assumption (or (not x6222) (not x26644))
+:assumption (or x2415 x3365)
+:assumption (or (not x10985) (not x17342))
+:assumption (or (not x20632) x22939)
+:assumption (or x31484 x18252)
+:assumption (or (not x9778) (not x2224))
+:assumption (or (not x23244) (not x27180) (not x11702) (not x8002))
+:assumption (or x7012 x23244 x12588 x13956 x8002 x4068)
+:assumption (or x15466 x10393)
+:assumption (or (not x19567) (not x8877) x30960 x13604 (not x5143))
+:assumption (or x18042 x10493)
+:assumption (or (not x10985) x8702)
+:assumption (or x18022 (not x15435))
+:assumption (or x23244 x20367)
+:assumption (or (not x11660) (not x12836))
+:assumption (or (not x9576) (not x23138))
+:assumption (or x13065 x29521)
+:assumption (or (not x5998) (not x19193))
+:assumption (or (not x21026) x28897 x27285)
+:assumption (or (not x8002) (not x6527))
+:assumption (or x5528 (not x2105))
+:assumption (or x3471 x6801)
+:assumption (or (not x29607) x30596)
+:assumption (or (not x28051) (not x27077) x18621 x15613 (not x1751) (not x30432))
+:assumption (or (not x20308) x9938)
+:assumption (or x19183 (not x20341))
+:assumption (or (not x7653) (not x3341) (not x20037))
+:assumption (or (not x2592) x1162 x29777 x21330)
+:assumption (or x6333 x15578)
+:assumption (or (not x28044) (not x27375))
+:assumption (or x28465 (not x20060) (not x16652) x19914 (not x6351) x953)
+:assumption (or x6994 (not x3008))
+:assumption (or x13411 (not x13677))
+:assumption (or x14168 x12138)
+:assumption (or (not x21576) (not x13795))
+:assumption (or x17646 (not x24604) x9008)
+:assumption (or (not x20578) (not x20073))
+:assumption (or x13936 (not x26733) (not x8713) (not x21879) x28325)
+:assumption (or (not x7000) x28042)
+:assumption (or x11637 (not x10637))
+:assumption (or (not x2038) x1474)
+:assumption (or (not x1001) x4865 (not x6450))
+:assumption (or x30478 x17215)
+:assumption (or x24892 x18172 (not x15380) x16809)
+:assumption (or (not x14455) x14855)
+:assumption (or (not x19618) (not x28950))
+:assumption (or (not x3176) (not x28069) x3650 x7163)
+:assumption (or x12873 x22037)
+:assumption (or x6864 (not x23984))
+:assumption (or x4681 (not x3782))
+:assumption (or (not x15439) (not x3248))
+:assumption (or x22306 (not x28962) (not x22495) (not x24707))
+:assumption (or (not x18856) (not x13470))
+:assumption (or x14751 x27678)
+:assumption (or (not x20504) x20666)
+:assumption (or x1629 x7875)
+:assumption (or x1003 (not x4791))
+:assumption (or (not x3212) x5500)
+:assumption (or x22770 x26104)
+:assumption (or (not x772) (not x17994))
+:assumption (or (not x16604) (not x8917))
+:assumption (or (not x3351) (not x9008))
+:assumption (or x27133 (not x19010))
+:assumption (or x20461 (not x8738) (not x9701) x1734 (not x17392) x15147 x25423)
+:assumption (or (not x346) (not x18808))
+:assumption (or x29846 (not x1732) x30256)
+:assumption (or (not x11391) (not x15062))
+:assumption (or (not x17292) (not x8116))
+:assumption (or x26231 (not x11637))
+:assumption (or (not x9804) x4759)
+:assumption (or (not x11141) x7781)
+:assumption (or x16225 (not x17543))
+:assumption (or x16887 (not x15052))
+:assumption (or x24932 x1772)
+:assumption (or (not x8696) x16398)
+:assumption (or x29304 x19962)
+:assumption (or x30382 (not x25069))
+:assumption (or x18369 (not x23928))
+:assumption (or x1675 x9893)
+:assumption (or (not x11587) x12889 x13446 (not x12578) x9567 (not x17986) (not x26197))
+:assumption (or x21228 x23487)
+:assumption (or (not x25717) (not x20867))
+:assumption (or x14261 x4059)
+:assumption (or x24640 x14309)
+:assumption (or x3698 x28344 (not x865) x8170 (not x7843) x6671)
+:assumption (or x25622 x4757)
+:assumption (or x10417 x2133)
+:assumption (or (not x6618) x2028)
+:assumption (or x20777 (not x3237) x14455)
+:assumption (or x17418 (not x5484))
+:assumption (or (not x16190) x3837)
+:assumption (or (not x19095) (not x22012))
+:assumption (or x6219 (not x25234) (not x25490))
+:assumption (or x10947 x31285)
+:assumption (or (not x16829) x4864)
+:assumption (or (not x15419) x25233)
+:assumption (or x18031 x825 (not x31810) x23279)
+:assumption (or (not x9487) x26322)
+:assumption (or x27643 (not x3811))
+:assumption (or (not x24939) (not x1052))
+:assumption (or (not x18179) x25349)
+:assumption (or (not x24104) (not x13563))
+:assumption (or (not x13025) (not x9384))
+:assumption (or x23244 x218 x25007)
+:assumption (or x9893 x2136)
+:assumption (or x21155 (not x15917))
+:assumption (or x9324 (not x31713))
+:assumption (or (not x11483) (not x25193))
+:assumption (or (not x31451) x11779)
+:assumption (or (not x11867) (not x20119))
+:assumption (or x591 (not x30795))
+:assumption (or x23364 (not x3811))
+:assumption (or (not x3727) x8662)
+:assumption (or (not x25764) x25375)
+:assumption (or (not x180) x8114)
+:assumption (or x11754 x14719 x15874 x20170)
+:assumption (or (not x4579) x22959)
+:assumption (or (not x31481) (not x28599))
+:assumption (or x16166 (not x20141))
+:assumption (or x14110 (not x15799))
+:assumption (or x18776 (not x29280))
+:assumption (or (not x29146) (not x20325))
+:assumption (or (not x14282) (not x21297) (not x13622))
+:assumption (or x2274 x17455)
+:assumption (or x2695 (not x28883))
+:assumption (or x28658 (not x5566))
+:assumption (or (not x31435) (not x28770))
+:assumption (or x19704 x12978)
+:assumption (or (not x6149) x562 x323 x11792)
+:assumption (or (not x28207) (not x23244))
+:assumption (or (not x19297) x21424 (not x7675) x18859 x12067 x11777 (not x26263) (not x18329))
+:assumption (or x9145 (not x14578))
+:assumption (or x20416 (not x11754) (not x25366) x23997)
+:assumption (or x23602 x20976)
+:assumption (or (not x22826) (not x20262))
+:assumption (or x10297 x10042)
+:assumption (or x9376 x28199)
+:assumption (or (not x11379) (not x22993))
+:assumption (or (not x15972) (not x19927))
+:assumption (or x5042 x9008 x9291)
+:assumption (or x18594 (not x25767))
+:assumption (or x7615 x28890 (not x4383))
+:assumption (or (not x20191) x29470)
+:assumption (or x26295 (not x31072))
+:assumption (or (not x9070) (not x16799))
+:assumption (or (not x2443) (not x6651))
+:assumption (or (not x22849) x17852)
+:assumption (or (not x1518) (not x30960))
+:assumption (or (not x27269) x31222)
+:assumption (or x31933 x21174)
+:assumption (or x11735 (not x4020))
+:assumption (or x21685 (not x8138) x4335 x23358 (not x28327) x329)
+:assumption (or (not x9925) (not x30878))
+:assumption (or (not x22262) (not x26946))
+:assumption (or x2246 (not x11863))
+:assumption (or (not x21815) x7835 x6149 x5187 (not x16510))
+:assumption (or x867 (not x29036) (not x1955) (not x14091) x17568)
+:assumption (or x26517 x18896)
+:assumption (or (not x20717) x9008 x13620 (not x13675) (not x8805) x28252 (not x15751) x2525)
+:assumption (or x30745 (not x22103))
+:assumption (or x2444 x19858)
+:assumption (or (not x19904) x138)
+:assumption (or x31701 (not x31570))
+:assumption (or x18003 x19864 (not x18416) x11600)
+:assumption (or x27192 x24376)
+:assumption (or x3216 x22254)
+:assumption (or x16003 (not x14163))
+:assumption (or (not x8461) (not x21708))
+:assumption (or (not x591) (not x2369) x3519)
+:assumption (or x9924 x10994)
+:assumption (or (not x4441) x19212)
+:assumption (or (not x3645) x51)
+:assumption (or x911 x16508)
+:assumption (or x29408 (not x15941))
+:assumption (or (not x4343) x23444 (not x16781) (not x6128) x3008 (not x18237))
+:assumption (or x14625 x23702)
+:assumption (or (not x29381) x12322)
+:assumption (or x28345 x7111)
+:assumption (or (not x24146) x15017)
+:assumption (or x14291 (not x9008))
+:assumption (or x17769 (not x26513) x4822 x13931)
+:assumption (or (not x29989) x28280)
+:assumption (or (not x5929) x27134 x22051 x11879)
+:assumption (or x29124 x6466)
+:assumption (or (not x6188) x553)
+:assumption (or (not x18548) (not x18516))
+:assumption (or x7622 x6567)
+:assumption (or x12078 (not x21059))
+:assumption (or (not x18072) x16510)
+:assumption (or (not x26575) x29299)
+:assumption (or (not x26539) (not x21223) (not x31837) x26179 (not x1892))
+:assumption (or (not x25770) x24062)
+:assumption (or x14718 (not x8289))
+:assumption (or (not x22560) x13084)
+:assumption (or (not x8365) x5645)
+:assumption (or (not x25064) (not x22519))
+:assumption (or (not x14390) x13920)
+:assumption (or x23960 x31386)
+:assumption (or x15791 x20723)
+:assumption (or x18003 x29339)
+:assumption (or x12223 (not x2065))
+:assumption (or (not x27081) (not x10118))
+:assumption (or x6894 (not x4439))
+:assumption (or x10804 (not x1962) x202 (not x3001))
+:assumption (or (not x13067) (not x13434))
+:assumption (or (not x14060) (not x19731))
+:assumption (or x16621 x28430)
+:assumption (or (not x23686) x13737)
+:assumption (or (not x500) x11959)
+:assumption (or (not x19864) (not x11044))
+:assumption (or (not x29772) x13077 (not x31537) x17132)
+:assumption (or x1188 x6534)
+:assumption (or (not x1393) x13743 x27337)
+:assumption (or x31364 (not x25650))
+:assumption (or (not x8002) (not x6056))
+:assumption (or x11452 (not x5304))
+:assumption (or (not x28168) (not x25968))
+:assumption (or (not x26041) (not x18318))
+:assumption (or x12449 x30322)
+:assumption (or (not x20321) (not x11888))
+:assumption (or x20505 x15699)
+:assumption (or x26156 x20087)
+:assumption (or (not x12023) (not x6982))
+:assumption (or x31529 x12209 x8120 x18333)
+:assumption (or (not x13137) x2119)
+:assumption (or x31581 x15317 x13956)
+:assumption (or (not x15199) (not x9356))
+:assumption (or (not x22764) (not x9694) x23244)
+:assumption (or x9231 x27909)
+:assumption (or x27154 (not x8175))
+:assumption (or x15960 (not x28596))
+:assumption (or (not x5926) (not x18206))
+:assumption (or (not x4477) (not x13295))
+:assumption (or x3455 x17572 x10533 x11514)
+:assumption (or x22688 (not x25366))
+:assumption (or x27198 (not x31570))
+:assumption (or (not x24734) x1620)
+:assumption (or x14839 x5470)
+:assumption (or x15364 (not x20549))
+:assumption (or (not x1920) (not x26762) (not x30147))
+:assumption (or x27492 (not x27958))
+:assumption (or x15892 x17006)
+:assumption (or x26191 x2543 x6164 x28116 (not x15624) (not x13905))
+:assumption (or (not x11137) x10015)
+:assumption (or x16521 (not x8961))
+:assumption (or x3427 (not x17440))
+:assumption (or x12596 (not x28856))
+:assumption (or x23423 (not x16343))
+:assumption (or x6496 (not x20246))
+:assumption (or x21519 (not x11588))
+:assumption (or (not x16337) (not x19288))
+:assumption (or (not x25715) (not x11588))
+:assumption (or (not x17598) (not x22562))
+:assumption (or (not x18635) x1636)
+:assumption (or x6612 (not x8185))
+:assumption (or (not x8751) x16840)
+:assumption (or x28607 (not x13769) x27307 (not x1232) (not x13873) (not x1627) x16471 x30836 x3662)
+:assumption (or x16080 (not x918))
+:assumption (or x6614 x31862)
+:assumption (or x13178 x25385)
+:assumption (or x26989 (not x4451))
+:assumption (or x30587 x28395)
+:assumption (or x28306 (not x28770))
+:assumption (or (not x23244) x15608)
+:assumption (or (not x18333) x1632)
+:assumption (or (not x9658) (not x30333))
+:assumption (or (not x15537) (not x30894))
+:assumption (or (not x22928) x18560)
+:assumption (or x28912 x5143)
+:assumption (or (not x7735) (not x24807))
+:assumption (or (not x18588) (not x19160) (not x4748) (not x19864))
+:assumption (or (not x11540) x24679)
+:assumption (or x9135 (not x18311))
+:assumption (or x15595 x28708 x7018)
+:assumption (or (not x15606) (not x31334))
+:assumption (or x3159 x31671)
+:assumption (or (not x801) (not x25749))
+:assumption (or (not x9025) (not x8820))
+:assumption (or x29157 x6194)
+:assumption (or (not x6434) x29543)
+:assumption (or x31767 x22930 x29373 (not x15958))
+:assumption (or (not x20550) x6787)
+:assumption (or (not x8940) (not x19965) x8049 x5089 x26344)
+:assumption (or (not x762) (not x11481) (not x169))
+:assumption (or x25159 (not x27528))
+:assumption (or x19864 (not x16313) x18003)
+:assumption (or x24236 x2826)
+:assumption (or x28912 x9312)
+:assumption (or x12154 x20868)
+:assumption (or x9827 x13013)
+:assumption (or (not x410) x19407 x25747)
+:assumption (or x22688 x26292)
+:assumption (or x17509 (not x26855))
+:assumption (or (not x26379) (not x16510))
+:assumption (or (not x11857) x23505)
+:assumption (or x13684 (not x28404))
+:assumption (or x29666 x7394)
+:assumption (or (not x851) (not x6749))
+:assumption (or (not x23849) x29083)
+:assumption (or (not x25501) (not x5494) (not x22613))
+:assumption (or (not x16307) x10494)
+:assumption (or (not x28674) x9108 x3954 (not x21520) x31773 (not x2983))
+:assumption (or x20110 x31819)
+:assumption (or (not x12977) (not x27839) (not x15746) (not x15680) (not x2880) x22685 (not x17364) (not x4268) x11567)
+:assumption (or (not x9908) (not x23202))
+:assumption (or (not x21452) x21298 x29688)
+:assumption (or (not x31197) x17282)
+:assumption (or (not x11774) x9950)
+:assumption (or (not x6351) (not x3428) (not x19487))
+:assumption (or x14279 x12616)
+:assumption (or (not x20117) (not x23967))
+:assumption (or (not x13576) x4462)
+:assumption (or x30779 x21711)
+:assumption (or (not x5069) (not x8995))
+:assumption (or (not x1393) x17190)
+:assumption (or (not x3005) x7887)
+:assumption (or (not x11344) (not x12443))
+:assumption (or (not x1487) x6710 x12045 x20949 (not x30772))
+:assumption (or x4654 (not x23244))
+:assumption (or (not x20782) (not x5078) (not x28348) x12646)
+:assumption (or (not x10183) (not x33))
+:assumption (or x13622 x7560)
+:assumption (or x14839 x30597 x31792)
+:assumption (or (not x24096) x16734)
+:assumption (or (not x3531) x9332)
+:assumption (or (not x197) (not x11403))
+:assumption (or (not x5877) (not x25133))
+:assumption (or x17534 (not x23126) x29759 x21277 (not x5096))
+:assumption (or (not x18957) (not x26319))
+:assumption (or x6601 (not x24562))
+:assumption (or x3939 x21737)
+:assumption (or (not x23050) x2817)
+:assumption (or (not x15379) x20091)
+:assumption (or x2926 x18171)
+:assumption (or (not x310) (not x77))
+:assumption (or x1521 x7468)
+:assumption (or (not x17602) (not x21471) (not x31475) (not x21298))
+:assumption (or (not x24096) (not x4532))
+:assumption (or (not x20874) (not x11936))
+:assumption (or (not x25355) x24722 x20688)
+:assumption (or x27613 (not x30782))
+:assumption (or x31476 (not x6213))
+:assumption (or (not x1376) (not x26897))
+:assumption (or x3262 x22680 x29312 x27134)
+:assumption (or x14585 x22782)
+:assumption (or (not x13238) x30247)
+:assumption (or x26542 (not x28893))
+:assumption (or x28019 x28280)
+:assumption (or (not x24808) x24327 x24756)
+:assumption (or x4142 x18286)
+:assumption (or (not x1393) (not x11985))
+:assumption (or (not x13956) (not x22472) (not x18913) (not x9779))
+:assumption (or x4865 (not x25580) (not x10001))
+:assumption (or x7890 x23244)
+:assumption (or (not x17930) x29333 (not x9008) (not x17158) (not x5528))
+:assumption (or x4546 (not x13956))
+:assumption (or (not x30299) x382)
+:assumption (or (not x8655) (not x18357))
+:assumption (or (not x22287) (not x25292))
+:assumption (or x23244 x18657 x10478 x8002)
+:assumption (or (not x24690) (not x6793))
+:assumption (or x15760 (not x24850))
+:assumption (or (not x19921) (not x2464) x7254 x31626)
+:assumption (or (not x22328) (not x8674))
+:assumption (or x1797 x12119)
+:assumption (or x19362 x4560 (not x2703) x23165)
+:assumption (or (not x26859) (not x914))
+:assumption (or x5191 x21973)
+:assumption (or (not x9340) (not x10851))
+:assumption (or x25289 (not x6654))
+:assumption (or x10909 x14562 x3368 (not x6191) (not x6242) (not x6907) (not x12391) (not x19074))
+:assumption (or x17116 x25940)
+:assumption (or x8979 x14262)
+:assumption (or x31583 x26136)
+:assumption (or (not x24068) x381)
+:assumption (or x15561 (not x5637))
+:assumption (or x8002 (not x23458) (not x6004))
+:assumption (or x13608 x30982 (not x15916) x19048 (not x6521) (not x17075) x4840 x29097)
+:assumption (or (not x886) x14582)
+:assumption (or x2877 (not x30667))
+:assumption (or x16475 x21695 x4602 x11579 (not x23838) (not x13477))
+:assumption (or x12934 x1113)
+:assumption (or x6249 (not x19786))
+:assumption (or x13956 (not x3284))
+:assumption (or (not x15399) (not x10719))
+:assumption (or x5780 x5294)
+:assumption (or x9964 (not x22346) (not x6167))
+:assumption (or x26354 (not x15757) x24587)
+:assumption (or x16012 (not x20528))
+:assumption (or x14671 (not x21519))
+:assumption (or x25796 (not x29569))
+:assumption (or (not x21313) x8436)
+:assumption (or x26134 (not x1464))
+:assumption (or x25775 (not x4737))
+:assumption (or (not x11663) (not x3897))
+:assumption (or x6842 x31491)
+:assumption (or (not x31829) (not x17342) x15186)
+:assumption (or x20812 x30096)
+:assumption (or (not x16970) (not x17239) (not x18831) (not x25774))
+:assumption (or (not x30113) x3944)
+:assumption (or (not x11701) x8586 x7361 (not x22792))
+:assumption (or x19413 (not x16439))
+:assumption (or (not x1348) (not x23345))
+:assumption (or (not x964) (not x21752) x871)
+:assumption (or x17849 x29154)
+:assumption (or (not x19067) x23278)
+:assumption (or (not x14544) x10187)
+:assumption (or x27072 x23732)
+:assumption (or (not x18676) (not x25704))
+:assumption (or x13956 x7566)
+:assumption (or x7547 x1730)
+:assumption (or x24053 x24380)
+:assumption (or x20845 x27537)
+:assumption (or x10899 (not x9663))
+:assumption (or (not x30775) x20375 (not x9269))
+:assumption (or x25665 (not x1268) x24285 (not x12945))
+:assumption (or x27983 (not x12026))
+:assumption (or x23653 (not x9065) x4344 (not x10736))
+:assumption (or x28248 x22190 x14206)
+:assumption (or (not x7382) (not x23139))
+:assumption (or (not x5175) (not x9966))
+:assumption (or (not x6865) x7272 (not x15826) (not x6820) x2681 x9797 x19633 x20089 x28127)
+:assumption (or (not x31701) x2098)
+:assumption (or (not x21703) x5773)
+:assumption (or (not x918) x23697)
+:assumption (or (not x30962) x23876)
+:assumption (or (not x6234) x11506 (not x14426) x10737)
+:assumption (or x4504 x372)
+:assumption (or x26549 x10046)
+:assumption (or x11202 (not x14132))
+:assumption (or (not x3937) (not x20116))
+:assumption (or (not x2267) x2216)
+:assumption (or (not x16784) x20616)
+:assumption (or (not x20638) x15339)
+:assumption (or (not x19752) x15377)
+:assumption (or (not x15933) x9008)
+:assumption (or (not x8859) (not x878))
+:formula true
+)
diff --git a/test/regress/regress4/hole10.cvc b/test/regress/regress4/hole10.cvc
new file mode 100644
index 0000000..ebc8279
--- /dev/null
+++ b/test/regress/regress4/hole10.cvc
@@ -0,0 +1,675 @@
+% EXPECT: valid
+x_1 : BOOLEAN;
+x_2 : BOOLEAN;
+x_3 : BOOLEAN;
+x_4 : BOOLEAN;
+x_5 : BOOLEAN;
+x_6 : BOOLEAN;
+x_7 : BOOLEAN;
+x_8 : BOOLEAN;
+x_9 : BOOLEAN;
+x_10 : BOOLEAN;
+x_11 : BOOLEAN;
+x_12 : BOOLEAN;
+x_13 : BOOLEAN;
+x_14 : BOOLEAN;
+x_15 : BOOLEAN;
+x_16 : BOOLEAN;
+x_17 : BOOLEAN;
+x_18 : BOOLEAN;
+x_19 : BOOLEAN;
+x_20 : BOOLEAN;
+x_21 : BOOLEAN;
+x_22 : BOOLEAN;
+x_23 : BOOLEAN;
+x_24 : BOOLEAN;
+x_25 : BOOLEAN;
+x_26 : BOOLEAN;
+x_27 : BOOLEAN;
+x_28 : BOOLEAN;
+x_29 : BOOLEAN;
+x_30 : BOOLEAN;
+x_31 : BOOLEAN;
+x_32 : BOOLEAN;
+x_33 : BOOLEAN;
+x_34 : BOOLEAN;
+x_35 : BOOLEAN;
+x_36 : BOOLEAN;
+x_37 : BOOLEAN;
+x_38 : BOOLEAN;
+x_39 : BOOLEAN;
+x_40 : BOOLEAN;
+x_41 : BOOLEAN;
+x_42 : BOOLEAN;
+x_43 : BOOLEAN;
+x_44 : BOOLEAN;
+x_45 : BOOLEAN;
+x_46 : BOOLEAN;
+x_47 : BOOLEAN;
+x_48 : BOOLEAN;
+x_49 : BOOLEAN;
+x_50 : BOOLEAN;
+x_51 : BOOLEAN;
+x_52 : BOOLEAN;
+x_53 : BOOLEAN;
+x_54 : BOOLEAN;
+x_55 : BOOLEAN;
+x_56 : BOOLEAN;
+x_57 : BOOLEAN;
+x_58 : BOOLEAN;
+x_59 : BOOLEAN;
+x_60 : BOOLEAN;
+x_61 : BOOLEAN;
+x_62 : BOOLEAN;
+x_63 : BOOLEAN;
+x_64 : BOOLEAN;
+x_65 : BOOLEAN;
+x_66 : BOOLEAN;
+x_67 : BOOLEAN;
+x_68 : BOOLEAN;
+x_69 : BOOLEAN;
+x_70 : BOOLEAN;
+x_71 : BOOLEAN;
+x_72 : BOOLEAN;
+x_73 : BOOLEAN;
+x_74 : BOOLEAN;
+x_75 : BOOLEAN;
+x_76 : BOOLEAN;
+x_77 : BOOLEAN;
+x_78 : BOOLEAN;
+x_79 : BOOLEAN;
+x_80 : BOOLEAN;
+x_81 : BOOLEAN;
+x_82 : BOOLEAN;
+x_83 : BOOLEAN;
+x_84 : BOOLEAN;
+x_85 : BOOLEAN;
+x_86 : BOOLEAN;
+x_87 : BOOLEAN;
+x_88 : BOOLEAN;
+x_89 : BOOLEAN;
+x_90 : BOOLEAN;
+x_91 : BOOLEAN;
+x_92 : BOOLEAN;
+x_93 : BOOLEAN;
+x_94 : BOOLEAN;
+x_95 : BOOLEAN;
+x_96 : BOOLEAN;
+x_97 : BOOLEAN;
+x_98 : BOOLEAN;
+x_99 : BOOLEAN;
+x_100 : BOOLEAN;
+x_101 : BOOLEAN;
+x_102 : BOOLEAN;
+x_103 : BOOLEAN;
+x_104 : BOOLEAN;
+x_105 : BOOLEAN;
+x_106 : BOOLEAN;
+x_107 : BOOLEAN;
+x_108 : BOOLEAN;
+x_109 : BOOLEAN;
+x_110 : BOOLEAN;
+ASSERT NOT x_1 OR NOT x_11;
+ASSERT NOT x_1 OR NOT x_21;
+ASSERT NOT x_1 OR NOT x_31;
+ASSERT NOT x_1 OR NOT x_41;
+ASSERT NOT x_1 OR NOT x_51;
+ASSERT NOT x_1 OR NOT x_61;
+ASSERT NOT x_1 OR NOT x_71;
+ASSERT NOT x_1 OR NOT x_81;
+ASSERT NOT x_1 OR NOT x_91;
+ASSERT NOT x_1 OR NOT x_101;
+ASSERT NOT x_11 OR NOT x_21;
+ASSERT NOT x_11 OR NOT x_31;
+ASSERT NOT x_11 OR NOT x_41;
+ASSERT NOT x_11 OR NOT x_51;
+ASSERT NOT x_11 OR NOT x_61;
+ASSERT NOT x_11 OR NOT x_71;
+ASSERT NOT x_11 OR NOT x_81;
+ASSERT NOT x_11 OR NOT x_91;
+ASSERT NOT x_11 OR NOT x_101;
+ASSERT NOT x_21 OR NOT x_31;
+ASSERT NOT x_21 OR NOT x_41;
+ASSERT NOT x_21 OR NOT x_51;
+ASSERT NOT x_21 OR NOT x_61;
+ASSERT NOT x_21 OR NOT x_71;
+ASSERT NOT x_21 OR NOT x_81;
+ASSERT NOT x_21 OR NOT x_91;
+ASSERT NOT x_21 OR NOT x_101;
+ASSERT NOT x_31 OR NOT x_41;
+ASSERT NOT x_31 OR NOT x_51;
+ASSERT NOT x_31 OR NOT x_61;
+ASSERT NOT x_31 OR NOT x_71;
+ASSERT NOT x_31 OR NOT x_81;
+ASSERT NOT x_31 OR NOT x_91;
+ASSERT NOT x_31 OR NOT x_101;
+ASSERT NOT x_41 OR NOT x_51;
+ASSERT NOT x_41 OR NOT x_61;
+ASSERT NOT x_41 OR NOT x_71;
+ASSERT NOT x_41 OR NOT x_81;
+ASSERT NOT x_41 OR NOT x_91;
+ASSERT NOT x_41 OR NOT x_101;
+ASSERT NOT x_51 OR NOT x_61;
+ASSERT NOT x_51 OR NOT x_71;
+ASSERT NOT x_51 OR NOT x_81;
+ASSERT NOT x_51 OR NOT x_91;
+ASSERT NOT x_51 OR NOT x_101;
+ASSERT NOT x_61 OR NOT x_71;
+ASSERT NOT x_61 OR NOT x_81;
+ASSERT NOT x_61 OR NOT x_91;
+ASSERT NOT x_61 OR NOT x_101;
+ASSERT NOT x_71 OR NOT x_81;
+ASSERT NOT x_71 OR NOT x_91;
+ASSERT NOT x_71 OR NOT x_101;
+ASSERT NOT x_81 OR NOT x_91;
+ASSERT NOT x_81 OR NOT x_101;
+ASSERT NOT x_91 OR NOT x_101;
+ASSERT NOT x_2 OR NOT x_12;
+ASSERT NOT x_2 OR NOT x_22;
+ASSERT NOT x_2 OR NOT x_32;
+ASSERT NOT x_2 OR NOT x_42;
+ASSERT NOT x_2 OR NOT x_52;
+ASSERT NOT x_2 OR NOT x_62;
+ASSERT NOT x_2 OR NOT x_72;
+ASSERT NOT x_2 OR NOT x_82;
+ASSERT NOT x_2 OR NOT x_92;
+ASSERT NOT x_2 OR NOT x_102;
+ASSERT NOT x_12 OR NOT x_22;
+ASSERT NOT x_12 OR NOT x_32;
+ASSERT NOT x_12 OR NOT x_42;
+ASSERT NOT x_12 OR NOT x_52;
+ASSERT NOT x_12 OR NOT x_62;
+ASSERT NOT x_12 OR NOT x_72;
+ASSERT NOT x_12 OR NOT x_82;
+ASSERT NOT x_12 OR NOT x_92;
+ASSERT NOT x_12 OR NOT x_102;
+ASSERT NOT x_22 OR NOT x_32;
+ASSERT NOT x_22 OR NOT x_42;
+ASSERT NOT x_22 OR NOT x_52;
+ASSERT NOT x_22 OR NOT x_62;
+ASSERT NOT x_22 OR NOT x_72;
+ASSERT NOT x_22 OR NOT x_82;
+ASSERT NOT x_22 OR NOT x_92;
+ASSERT NOT x_22 OR NOT x_102;
+ASSERT NOT x_32 OR NOT x_42;
+ASSERT NOT x_32 OR NOT x_52;
+ASSERT NOT x_32 OR NOT x_62;
+ASSERT NOT x_32 OR NOT x_72;
+ASSERT NOT x_32 OR NOT x_82;
+ASSERT NOT x_32 OR NOT x_92;
+ASSERT NOT x_32 OR NOT x_102;
+ASSERT NOT x_42 OR NOT x_52;
+ASSERT NOT x_42 OR NOT x_62;
+ASSERT NOT x_42 OR NOT x_72;
+ASSERT NOT x_42 OR NOT x_82;
+ASSERT NOT x_42 OR NOT x_92;
+ASSERT NOT x_42 OR NOT x_102;
+ASSERT NOT x_52 OR NOT x_62;
+ASSERT NOT x_52 OR NOT x_72;
+ASSERT NOT x_52 OR NOT x_82;
+ASSERT NOT x_52 OR NOT x_92;
+ASSERT NOT x_52 OR NOT x_102;
+ASSERT NOT x_62 OR NOT x_72;
+ASSERT NOT x_62 OR NOT x_82;
+ASSERT NOT x_62 OR NOT x_92;
+ASSERT NOT x_62 OR NOT x_102;
+ASSERT NOT x_72 OR NOT x_82;
+ASSERT NOT x_72 OR NOT x_92;
+ASSERT NOT x_72 OR NOT x_102;
+ASSERT NOT x_82 OR NOT x_92;
+ASSERT NOT x_82 OR NOT x_102;
+ASSERT NOT x_92 OR NOT x_102;
+ASSERT NOT x_3 OR NOT x_13;
+ASSERT NOT x_3 OR NOT x_23;
+ASSERT NOT x_3 OR NOT x_33;
+ASSERT NOT x_3 OR NOT x_43;
+ASSERT NOT x_3 OR NOT x_53;
+ASSERT NOT x_3 OR NOT x_63;
+ASSERT NOT x_3 OR NOT x_73;
+ASSERT NOT x_3 OR NOT x_83;
+ASSERT NOT x_3 OR NOT x_93;
+ASSERT NOT x_3 OR NOT x_103;
+ASSERT NOT x_13 OR NOT x_23;
+ASSERT NOT x_13 OR NOT x_33;
+ASSERT NOT x_13 OR NOT x_43;
+ASSERT NOT x_13 OR NOT x_53;
+ASSERT NOT x_13 OR NOT x_63;
+ASSERT NOT x_13 OR NOT x_73;
+ASSERT NOT x_13 OR NOT x_83;
+ASSERT NOT x_13 OR NOT x_93;
+ASSERT NOT x_13 OR NOT x_103;
+ASSERT NOT x_23 OR NOT x_33;
+ASSERT NOT x_23 OR NOT x_43;
+ASSERT NOT x_23 OR NOT x_53;
+ASSERT NOT x_23 OR NOT x_63;
+ASSERT NOT x_23 OR NOT x_73;
+ASSERT NOT x_23 OR NOT x_83;
+ASSERT NOT x_23 OR NOT x_93;
+ASSERT NOT x_23 OR NOT x_103;
+ASSERT NOT x_33 OR NOT x_43;
+ASSERT NOT x_33 OR NOT x_53;
+ASSERT NOT x_33 OR NOT x_63;
+ASSERT NOT x_33 OR NOT x_73;
+ASSERT NOT x_33 OR NOT x_83;
+ASSERT NOT x_33 OR NOT x_93;
+ASSERT NOT x_33 OR NOT x_103;
+ASSERT NOT x_43 OR NOT x_53;
+ASSERT NOT x_43 OR NOT x_63;
+ASSERT NOT x_43 OR NOT x_73;
+ASSERT NOT x_43 OR NOT x_83;
+ASSERT NOT x_43 OR NOT x_93;
+ASSERT NOT x_43 OR NOT x_103;
+ASSERT NOT x_53 OR NOT x_63;
+ASSERT NOT x_53 OR NOT x_73;
+ASSERT NOT x_53 OR NOT x_83;
+ASSERT NOT x_53 OR NOT x_93;
+ASSERT NOT x_53 OR NOT x_103;
+ASSERT NOT x_63 OR NOT x_73;
+ASSERT NOT x_63 OR NOT x_83;
+ASSERT NOT x_63 OR NOT x_93;
+ASSERT NOT x_63 OR NOT x_103;
+ASSERT NOT x_73 OR NOT x_83;
+ASSERT NOT x_73 OR NOT x_93;
+ASSERT NOT x_73 OR NOT x_103;
+ASSERT NOT x_83 OR NOT x_93;
+ASSERT NOT x_83 OR NOT x_103;
+ASSERT NOT x_93 OR NOT x_103;
+ASSERT NOT x_4 OR NOT x_14;
+ASSERT NOT x_4 OR NOT x_24;
+ASSERT NOT x_4 OR NOT x_34;
+ASSERT NOT x_4 OR NOT x_44;
+ASSERT NOT x_4 OR NOT x_54;
+ASSERT NOT x_4 OR NOT x_64;
+ASSERT NOT x_4 OR NOT x_74;
+ASSERT NOT x_4 OR NOT x_84;
+ASSERT NOT x_4 OR NOT x_94;
+ASSERT NOT x_4 OR NOT x_104;
+ASSERT NOT x_14 OR NOT x_24;
+ASSERT NOT x_14 OR NOT x_34;
+ASSERT NOT x_14 OR NOT x_44;
+ASSERT NOT x_14 OR NOT x_54;
+ASSERT NOT x_14 OR NOT x_64;
+ASSERT NOT x_14 OR NOT x_74;
+ASSERT NOT x_14 OR NOT x_84;
+ASSERT NOT x_14 OR NOT x_94;
+ASSERT NOT x_14 OR NOT x_104;
+ASSERT NOT x_24 OR NOT x_34;
+ASSERT NOT x_24 OR NOT x_44;
+ASSERT NOT x_24 OR NOT x_54;
+ASSERT NOT x_24 OR NOT x_64;
+ASSERT NOT x_24 OR NOT x_74;
+ASSERT NOT x_24 OR NOT x_84;
+ASSERT NOT x_24 OR NOT x_94;
+ASSERT NOT x_24 OR NOT x_104;
+ASSERT NOT x_34 OR NOT x_44;
+ASSERT NOT x_34 OR NOT x_54;
+ASSERT NOT x_34 OR NOT x_64;
+ASSERT NOT x_34 OR NOT x_74;
+ASSERT NOT x_34 OR NOT x_84;
+ASSERT NOT x_34 OR NOT x_94;
+ASSERT NOT x_34 OR NOT x_104;
+ASSERT NOT x_44 OR NOT x_54;
+ASSERT NOT x_44 OR NOT x_64;
+ASSERT NOT x_44 OR NOT x_74;
+ASSERT NOT x_44 OR NOT x_84;
+ASSERT NOT x_44 OR NOT x_94;
+ASSERT NOT x_44 OR NOT x_104;
+ASSERT NOT x_54 OR NOT x_64;
+ASSERT NOT x_54 OR NOT x_74;
+ASSERT NOT x_54 OR NOT x_84;
+ASSERT NOT x_54 OR NOT x_94;
+ASSERT NOT x_54 OR NOT x_104;
+ASSERT NOT x_64 OR NOT x_74;
+ASSERT NOT x_64 OR NOT x_84;
+ASSERT NOT x_64 OR NOT x_94;
+ASSERT NOT x_64 OR NOT x_104;
+ASSERT NOT x_74 OR NOT x_84;
+ASSERT NOT x_74 OR NOT x_94;
+ASSERT NOT x_74 OR NOT x_104;
+ASSERT NOT x_84 OR NOT x_94;
+ASSERT NOT x_84 OR NOT x_104;
+ASSERT NOT x_94 OR NOT x_104;
+ASSERT NOT x_5 OR NOT x_15;
+ASSERT NOT x_5 OR NOT x_25;
+ASSERT NOT x_5 OR NOT x_35;
+ASSERT NOT x_5 OR NOT x_45;
+ASSERT NOT x_5 OR NOT x_55;
+ASSERT NOT x_5 OR NOT x_65;
+ASSERT NOT x_5 OR NOT x_75;
+ASSERT NOT x_5 OR NOT x_85;
+ASSERT NOT x_5 OR NOT x_95;
+ASSERT NOT x_5 OR NOT x_105;
+ASSERT NOT x_15 OR NOT x_25;
+ASSERT NOT x_15 OR NOT x_35;
+ASSERT NOT x_15 OR NOT x_45;
+ASSERT NOT x_15 OR NOT x_55;
+ASSERT NOT x_15 OR NOT x_65;
+ASSERT NOT x_15 OR NOT x_75;
+ASSERT NOT x_15 OR NOT x_85;
+ASSERT NOT x_15 OR NOT x_95;
+ASSERT NOT x_15 OR NOT x_105;
+ASSERT NOT x_25 OR NOT x_35;
+ASSERT NOT x_25 OR NOT x_45;
+ASSERT NOT x_25 OR NOT x_55;
+ASSERT NOT x_25 OR NOT x_65;
+ASSERT NOT x_25 OR NOT x_75;
+ASSERT NOT x_25 OR NOT x_85;
+ASSERT NOT x_25 OR NOT x_95;
+ASSERT NOT x_25 OR NOT x_105;
+ASSERT NOT x_35 OR NOT x_45;
+ASSERT NOT x_35 OR NOT x_55;
+ASSERT NOT x_35 OR NOT x_65;
+ASSERT NOT x_35 OR NOT x_75;
+ASSERT NOT x_35 OR NOT x_85;
+ASSERT NOT x_35 OR NOT x_95;
+ASSERT NOT x_35 OR NOT x_105;
+ASSERT NOT x_45 OR NOT x_55;
+ASSERT NOT x_45 OR NOT x_65;
+ASSERT NOT x_45 OR NOT x_75;
+ASSERT NOT x_45 OR NOT x_85;
+ASSERT NOT x_45 OR NOT x_95;
+ASSERT NOT x_45 OR NOT x_105;
+ASSERT NOT x_55 OR NOT x_65;
+ASSERT NOT x_55 OR NOT x_75;
+ASSERT NOT x_55 OR NOT x_85;
+ASSERT NOT x_55 OR NOT x_95;
+ASSERT NOT x_55 OR NOT x_105;
+ASSERT NOT x_65 OR NOT x_75;
+ASSERT NOT x_65 OR NOT x_85;
+ASSERT NOT x_65 OR NOT x_95;
+ASSERT NOT x_65 OR NOT x_105;
+ASSERT NOT x_75 OR NOT x_85;
+ASSERT NOT x_75 OR NOT x_95;
+ASSERT NOT x_75 OR NOT x_105;
+ASSERT NOT x_85 OR NOT x_95;
+ASSERT NOT x_85 OR NOT x_105;
+ASSERT NOT x_95 OR NOT x_105;
+ASSERT NOT x_6 OR NOT x_16;
+ASSERT NOT x_6 OR NOT x_26;
+ASSERT NOT x_6 OR NOT x_36;
+ASSERT NOT x_6 OR NOT x_46;
+ASSERT NOT x_6 OR NOT x_56;
+ASSERT NOT x_6 OR NOT x_66;
+ASSERT NOT x_6 OR NOT x_76;
+ASSERT NOT x_6 OR NOT x_86;
+ASSERT NOT x_6 OR NOT x_96;
+ASSERT NOT x_6 OR NOT x_106;
+ASSERT NOT x_16 OR NOT x_26;
+ASSERT NOT x_16 OR NOT x_36;
+ASSERT NOT x_16 OR NOT x_46;
+ASSERT NOT x_16 OR NOT x_56;
+ASSERT NOT x_16 OR NOT x_66;
+ASSERT NOT x_16 OR NOT x_76;
+ASSERT NOT x_16 OR NOT x_86;
+ASSERT NOT x_16 OR NOT x_96;
+ASSERT NOT x_16 OR NOT x_106;
+ASSERT NOT x_26 OR NOT x_36;
+ASSERT NOT x_26 OR NOT x_46;
+ASSERT NOT x_26 OR NOT x_56;
+ASSERT NOT x_26 OR NOT x_66;
+ASSERT NOT x_26 OR NOT x_76;
+ASSERT NOT x_26 OR NOT x_86;
+ASSERT NOT x_26 OR NOT x_96;
+ASSERT NOT x_26 OR NOT x_106;
+ASSERT NOT x_36 OR NOT x_46;
+ASSERT NOT x_36 OR NOT x_56;
+ASSERT NOT x_36 OR NOT x_66;
+ASSERT NOT x_36 OR NOT x_76;
+ASSERT NOT x_36 OR NOT x_86;
+ASSERT NOT x_36 OR NOT x_96;
+ASSERT NOT x_36 OR NOT x_106;
+ASSERT NOT x_46 OR NOT x_56;
+ASSERT NOT x_46 OR NOT x_66;
+ASSERT NOT x_46 OR NOT x_76;
+ASSERT NOT x_46 OR NOT x_86;
+ASSERT NOT x_46 OR NOT x_96;
+ASSERT NOT x_46 OR NOT x_106;
+ASSERT NOT x_56 OR NOT x_66;
+ASSERT NOT x_56 OR NOT x_76;
+ASSERT NOT x_56 OR NOT x_86;
+ASSERT NOT x_56 OR NOT x_96;
+ASSERT NOT x_56 OR NOT x_106;
+ASSERT NOT x_66 OR NOT x_76;
+ASSERT NOT x_66 OR NOT x_86;
+ASSERT NOT x_66 OR NOT x_96;
+ASSERT NOT x_66 OR NOT x_106;
+ASSERT NOT x_76 OR NOT x_86;
+ASSERT NOT x_76 OR NOT x_96;
+ASSERT NOT x_76 OR NOT x_106;
+ASSERT NOT x_86 OR NOT x_96;
+ASSERT NOT x_86 OR NOT x_106;
+ASSERT NOT x_96 OR NOT x_106;
+ASSERT NOT x_7 OR NOT x_17;
+ASSERT NOT x_7 OR NOT x_27;
+ASSERT NOT x_7 OR NOT x_37;
+ASSERT NOT x_7 OR NOT x_47;
+ASSERT NOT x_7 OR NOT x_57;
+ASSERT NOT x_7 OR NOT x_67;
+ASSERT NOT x_7 OR NOT x_77;
+ASSERT NOT x_7 OR NOT x_87;
+ASSERT NOT x_7 OR NOT x_97;
+ASSERT NOT x_7 OR NOT x_107;
+ASSERT NOT x_17 OR NOT x_27;
+ASSERT NOT x_17 OR NOT x_37;
+ASSERT NOT x_17 OR NOT x_47;
+ASSERT NOT x_17 OR NOT x_57;
+ASSERT NOT x_17 OR NOT x_67;
+ASSERT NOT x_17 OR NOT x_77;
+ASSERT NOT x_17 OR NOT x_87;
+ASSERT NOT x_17 OR NOT x_97;
+ASSERT NOT x_17 OR NOT x_107;
+ASSERT NOT x_27 OR NOT x_37;
+ASSERT NOT x_27 OR NOT x_47;
+ASSERT NOT x_27 OR NOT x_57;
+ASSERT NOT x_27 OR NOT x_67;
+ASSERT NOT x_27 OR NOT x_77;
+ASSERT NOT x_27 OR NOT x_87;
+ASSERT NOT x_27 OR NOT x_97;
+ASSERT NOT x_27 OR NOT x_107;
+ASSERT NOT x_37 OR NOT x_47;
+ASSERT NOT x_37 OR NOT x_57;
+ASSERT NOT x_37 OR NOT x_67;
+ASSERT NOT x_37 OR NOT x_77;
+ASSERT NOT x_37 OR NOT x_87;
+ASSERT NOT x_37 OR NOT x_97;
+ASSERT NOT x_37 OR NOT x_107;
+ASSERT NOT x_47 OR NOT x_57;
+ASSERT NOT x_47 OR NOT x_67;
+ASSERT NOT x_47 OR NOT x_77;
+ASSERT NOT x_47 OR NOT x_87;
+ASSERT NOT x_47 OR NOT x_97;
+ASSERT NOT x_47 OR NOT x_107;
+ASSERT NOT x_57 OR NOT x_67;
+ASSERT NOT x_57 OR NOT x_77;
+ASSERT NOT x_57 OR NOT x_87;
+ASSERT NOT x_57 OR NOT x_97;
+ASSERT NOT x_57 OR NOT x_107;
+ASSERT NOT x_67 OR NOT x_77;
+ASSERT NOT x_67 OR NOT x_87;
+ASSERT NOT x_67 OR NOT x_97;
+ASSERT NOT x_67 OR NOT x_107;
+ASSERT NOT x_77 OR NOT x_87;
+ASSERT NOT x_77 OR NOT x_97;
+ASSERT NOT x_77 OR NOT x_107;
+ASSERT NOT x_87 OR NOT x_97;
+ASSERT NOT x_87 OR NOT x_107;
+ASSERT NOT x_97 OR NOT x_107;
+ASSERT NOT x_8 OR NOT x_18;
+ASSERT NOT x_8 OR NOT x_28;
+ASSERT NOT x_8 OR NOT x_38;
+ASSERT NOT x_8 OR NOT x_48;
+ASSERT NOT x_8 OR NOT x_58;
+ASSERT NOT x_8 OR NOT x_68;
+ASSERT NOT x_8 OR NOT x_78;
+ASSERT NOT x_8 OR NOT x_88;
+ASSERT NOT x_8 OR NOT x_98;
+ASSERT NOT x_8 OR NOT x_108;
+ASSERT NOT x_18 OR NOT x_28;
+ASSERT NOT x_18 OR NOT x_38;
+ASSERT NOT x_18 OR NOT x_48;
+ASSERT NOT x_18 OR NOT x_58;
+ASSERT NOT x_18 OR NOT x_68;
+ASSERT NOT x_18 OR NOT x_78;
+ASSERT NOT x_18 OR NOT x_88;
+ASSERT NOT x_18 OR NOT x_98;
+ASSERT NOT x_18 OR NOT x_108;
+ASSERT NOT x_28 OR NOT x_38;
+ASSERT NOT x_28 OR NOT x_48;
+ASSERT NOT x_28 OR NOT x_58;
+ASSERT NOT x_28 OR NOT x_68;
+ASSERT NOT x_28 OR NOT x_78;
+ASSERT NOT x_28 OR NOT x_88;
+ASSERT NOT x_28 OR NOT x_98;
+ASSERT NOT x_28 OR NOT x_108;
+ASSERT NOT x_38 OR NOT x_48;
+ASSERT NOT x_38 OR NOT x_58;
+ASSERT NOT x_38 OR NOT x_68;
+ASSERT NOT x_38 OR NOT x_78;
+ASSERT NOT x_38 OR NOT x_88;
+ASSERT NOT x_38 OR NOT x_98;
+ASSERT NOT x_38 OR NOT x_108;
+ASSERT NOT x_48 OR NOT x_58;
+ASSERT NOT x_48 OR NOT x_68;
+ASSERT NOT x_48 OR NOT x_78;
+ASSERT NOT x_48 OR NOT x_88;
+ASSERT NOT x_48 OR NOT x_98;
+ASSERT NOT x_48 OR NOT x_108;
+ASSERT NOT x_58 OR NOT x_68;
+ASSERT NOT x_58 OR NOT x_78;
+ASSERT NOT x_58 OR NOT x_88;
+ASSERT NOT x_58 OR NOT x_98;
+ASSERT NOT x_58 OR NOT x_108;
+ASSERT NOT x_68 OR NOT x_78;
+ASSERT NOT x_68 OR NOT x_88;
+ASSERT NOT x_68 OR NOT x_98;
+ASSERT NOT x_68 OR NOT x_108;
+ASSERT NOT x_78 OR NOT x_88;
+ASSERT NOT x_78 OR NOT x_98;
+ASSERT NOT x_78 OR NOT x_108;
+ASSERT NOT x_88 OR NOT x_98;
+ASSERT NOT x_88 OR NOT x_108;
+ASSERT NOT x_98 OR NOT x_108;
+ASSERT NOT x_9 OR NOT x_19;
+ASSERT NOT x_9 OR NOT x_29;
+ASSERT NOT x_9 OR NOT x_39;
+ASSERT NOT x_9 OR NOT x_49;
+ASSERT NOT x_9 OR NOT x_59;
+ASSERT NOT x_9 OR NOT x_69;
+ASSERT NOT x_9 OR NOT x_79;
+ASSERT NOT x_9 OR NOT x_89;
+ASSERT NOT x_9 OR NOT x_99;
+ASSERT NOT x_9 OR NOT x_109;
+ASSERT NOT x_19 OR NOT x_29;
+ASSERT NOT x_19 OR NOT x_39;
+ASSERT NOT x_19 OR NOT x_49;
+ASSERT NOT x_19 OR NOT x_59;
+ASSERT NOT x_19 OR NOT x_69;
+ASSERT NOT x_19 OR NOT x_79;
+ASSERT NOT x_19 OR NOT x_89;
+ASSERT NOT x_19 OR NOT x_99;
+ASSERT NOT x_19 OR NOT x_109;
+ASSERT NOT x_29 OR NOT x_39;
+ASSERT NOT x_29 OR NOT x_49;
+ASSERT NOT x_29 OR NOT x_59;
+ASSERT NOT x_29 OR NOT x_69;
+ASSERT NOT x_29 OR NOT x_79;
+ASSERT NOT x_29 OR NOT x_89;
+ASSERT NOT x_29 OR NOT x_99;
+ASSERT NOT x_29 OR NOT x_109;
+ASSERT NOT x_39 OR NOT x_49;
+ASSERT NOT x_39 OR NOT x_59;
+ASSERT NOT x_39 OR NOT x_69;
+ASSERT NOT x_39 OR NOT x_79;
+ASSERT NOT x_39 OR NOT x_89;
+ASSERT NOT x_39 OR NOT x_99;
+ASSERT NOT x_39 OR NOT x_109;
+ASSERT NOT x_49 OR NOT x_59;
+ASSERT NOT x_49 OR NOT x_69;
+ASSERT NOT x_49 OR NOT x_79;
+ASSERT NOT x_49 OR NOT x_89;
+ASSERT NOT x_49 OR NOT x_99;
+ASSERT NOT x_49 OR NOT x_109;
+ASSERT NOT x_59 OR NOT x_69;
+ASSERT NOT x_59 OR NOT x_79;
+ASSERT NOT x_59 OR NOT x_89;
+ASSERT NOT x_59 OR NOT x_99;
+ASSERT NOT x_59 OR NOT x_109;
+ASSERT NOT x_69 OR NOT x_79;
+ASSERT NOT x_69 OR NOT x_89;
+ASSERT NOT x_69 OR NOT x_99;
+ASSERT NOT x_69 OR NOT x_109;
+ASSERT NOT x_79 OR NOT x_89;
+ASSERT NOT x_79 OR NOT x_99;
+ASSERT NOT x_79 OR NOT x_109;
+ASSERT NOT x_89 OR NOT x_99;
+ASSERT NOT x_89 OR NOT x_109;
+ASSERT NOT x_99 OR NOT x_109;
+ASSERT NOT x_10 OR NOT x_20;
+ASSERT NOT x_10 OR NOT x_30;
+ASSERT NOT x_10 OR NOT x_40;
+ASSERT NOT x_10 OR NOT x_50;
+ASSERT NOT x_10 OR NOT x_60;
+ASSERT NOT x_10 OR NOT x_70;
+ASSERT NOT x_10 OR NOT x_80;
+ASSERT NOT x_10 OR NOT x_90;
+ASSERT NOT x_10 OR NOT x_100;
+ASSERT NOT x_10 OR NOT x_110;
+ASSERT NOT x_20 OR NOT x_30;
+ASSERT NOT x_20 OR NOT x_40;
+ASSERT NOT x_20 OR NOT x_50;
+ASSERT NOT x_20 OR NOT x_60;
+ASSERT NOT x_20 OR NOT x_70;
+ASSERT NOT x_20 OR NOT x_80;
+ASSERT NOT x_20 OR NOT x_90;
+ASSERT NOT x_20 OR NOT x_100;
+ASSERT NOT x_20 OR NOT x_110;
+ASSERT NOT x_30 OR NOT x_40;
+ASSERT NOT x_30 OR NOT x_50;
+ASSERT NOT x_30 OR NOT x_60;
+ASSERT NOT x_30 OR NOT x_70;
+ASSERT NOT x_30 OR NOT x_80;
+ASSERT NOT x_30 OR NOT x_90;
+ASSERT NOT x_30 OR NOT x_100;
+ASSERT NOT x_30 OR NOT x_110;
+ASSERT NOT x_40 OR NOT x_50;
+ASSERT NOT x_40 OR NOT x_60;
+ASSERT NOT x_40 OR NOT x_70;
+ASSERT NOT x_40 OR NOT x_80;
+ASSERT NOT x_40 OR NOT x_90;
+ASSERT NOT x_40 OR NOT x_100;
+ASSERT NOT x_40 OR NOT x_110;
+ASSERT NOT x_50 OR NOT x_60;
+ASSERT NOT x_50 OR NOT x_70;
+ASSERT NOT x_50 OR NOT x_80;
+ASSERT NOT x_50 OR NOT x_90;
+ASSERT NOT x_50 OR NOT x_100;
+ASSERT NOT x_50 OR NOT x_110;
+ASSERT NOT x_60 OR NOT x_70;
+ASSERT NOT x_60 OR NOT x_80;
+ASSERT NOT x_60 OR NOT x_90;
+ASSERT NOT x_60 OR NOT x_100;
+ASSERT NOT x_60 OR NOT x_110;
+ASSERT NOT x_70 OR NOT x_80;
+ASSERT NOT x_70 OR NOT x_90;
+ASSERT NOT x_70 OR NOT x_100;
+ASSERT NOT x_70 OR NOT x_110;
+ASSERT NOT x_80 OR NOT x_90;
+ASSERT NOT x_80 OR NOT x_100;
+ASSERT NOT x_80 OR NOT x_110;
+ASSERT NOT x_90 OR NOT x_100;
+ASSERT NOT x_90 OR NOT x_110;
+ASSERT NOT x_100 OR NOT x_110;
+ASSERT x_10 OR x_9 OR x_8 OR x_7 OR x_6 OR x_5 OR x_4 OR x_3 OR x_2 OR x_1;
+ASSERT x_20 OR x_19 OR x_18 OR x_17 OR x_16 OR x_15 OR x_14 OR x_13 OR x_12 OR x_11;
+ASSERT x_30 OR x_29 OR x_28 OR x_27 OR x_26 OR x_25 OR x_24 OR x_23 OR x_22 OR x_21;
+ASSERT x_40 OR x_39 OR x_38 OR x_37 OR x_36 OR x_35 OR x_34 OR x_33 OR x_32 OR x_31;
+ASSERT x_50 OR x_49 OR x_48 OR x_47 OR x_46 OR x_45 OR x_44 OR x_43 OR x_42 OR x_41;
+ASSERT x_60 OR x_59 OR x_58 OR x_57 OR x_56 OR x_55 OR x_54 OR x_53 OR x_52 OR x_51;
+ASSERT x_70 OR x_69 OR x_68 OR x_67 OR x_66 OR x_65 OR x_64 OR x_63 OR x_62 OR x_61;
+ASSERT x_80 OR x_79 OR x_78 OR x_77 OR x_76 OR x_75 OR x_74 OR x_73 OR x_72 OR x_71;
+ASSERT x_90 OR x_89 OR x_88 OR x_87 OR x_86 OR x_85 OR x_84 OR x_83 OR x_82 OR x_81;
+ASSERT x_100 OR x_99 OR x_98 OR x_97 OR x_96 OR x_95 OR x_94 OR x_93 OR x_92 OR x_91;
+ASSERT x_110 OR x_109 OR x_108 OR x_107 OR x_106 OR x_105 OR x_104 OR x_103 OR x_102 OR x_101;
+
+
+QUERY FALSE;
diff --git a/test/regress/regress4/instance_1151.smt b/test/regress/regress4/instance_1151.smt
new file mode 100644
index 0000000..0d5bd0b
--- /dev/null
+++ b/test/regress/regress4/instance_1151.smt
@@ -0,0 +1,6593 @@
+
+;;; Taken from
+;;; http://www.uni-ulm.de/fileadmin/website_uni_ulm/iui.inst.190/Mitarbeiter/eibach/benchmark-attack-bivium-20080519-ending.zip
+;;; benchmark-attack-bivium-20080519-ending/SAT/35/instance_1151.cnf
+;;; Generated using dimacs_to_smt.pl
+
+(benchmark b
+:status sat
+:logic QF_UF
+:extrapreds ((x1))
+: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))
+:extrapreds ((x770))
+:extrapreds ((x771))
+:extrapreds ((x772))
+:extrapreds ((x773))
+:extrapreds ((x774))
+:extrapreds ((x775))
+:extrapreds ((x776))
+:extrapreds ((x777))
+:extrapreds ((x778))
+:extrapreds ((x779))
+:extrapreds ((x780))
+:extrapreds ((x781))
+:extrapreds ((x782))
+:extrapreds ((x783))
+:extrapreds ((x784))
+:extrapreds ((x785))
+:extrapreds ((x786))
+:extrapreds ((x787))
+:extrapreds ((x788))
+:extrapreds ((x789))
+:extrapreds ((x790))
+:extrapreds ((x791))
+:extrapreds ((x792))
+:extrapreds ((x793))
+:extrapreds ((x794))
+:extrapreds ((x795))
+:extrapreds ((x796))
+:extrapreds ((x797))
+:extrapreds ((x798))
+:extrapreds ((x799))
+:extrapreds ((x800))
+:extrapreds ((x801))
+:extrapreds ((x802))
+:extrapreds ((x803))
+:extrapreds ((x804))
+:extrapreds ((x805))
+:extrapreds ((x806))
+:extrapreds ((x807))
+:extrapreds ((x808))
+:extrapreds ((x809))
+:extrapreds ((x810))
+:extrapreds ((x811))
+:extrapreds ((x812))
+:extrapreds ((x813))
+:extrapreds ((x814))
+:extrapreds ((x815))
+:extrapreds ((x816))
+:extrapreds ((x817))
+:extrapreds ((x818))
+:extrapreds ((x819))
+:extrapreds ((x820))
+:extrapreds ((x821))
+:extrapreds ((x822))
+:extrapreds ((x823))
+:extrapreds ((x824))
+:extrapreds ((x825))
+:extrapreds ((x826))
+:extrapreds ((x827))
+:extrapreds ((x828))
+:extrapreds ((x829))
+:extrapreds ((x830))
+:extrapreds ((x831))
+:extrapreds ((x832))
+:extrapreds ((x833))
+:extrapreds ((x834))
+:extrapreds ((x835))
+:extrapreds ((x836))
+:extrapreds ((x837))
+:extrapreds ((x838))
+:extrapreds ((x839))
+:extrapreds ((x840))
+:extrapreds ((x841))
+:extrapreds ((x842))
+:extrapreds ((x843))
+:extrapreds ((x844))
+:extrapreds ((x845))
+:extrapreds ((x846))
+:extrapreds ((x847))
+:extrapreds ((x848))
+:extrapreds ((x849))
+:extrapreds ((x850))
+:extrapreds ((x851))
+:extrapreds ((x852))
+:extrapreds ((x853))
+:extrapreds ((x854))
+:extrapreds ((x855))
+:extrapreds ((x856))
+:extrapreds ((x857))
+:extrapreds ((x858))
+:extrapreds ((x859))
+:extrapreds ((x860))
+:extrapreds ((x861))
+:extrapreds ((x862))
+:extrapreds ((x863))
+:extrapreds ((x864))
+:extrapreds ((x865))
+:extrapreds ((x866))
+:extrapreds ((x867))
+:extrapreds ((x868))
+:extrapreds ((x869))
+:extrapreds ((x870))
+:extrapreds ((x871))
+:extrapreds ((x872))
+:extrapreds ((x873))
+:extrapreds ((x874))
+:extrapreds ((x875))
+:extrapreds ((x876))
+:extrapreds ((x877))
+:extrapreds ((x878))
+:extrapreds ((x879))
+:extrapreds ((x880))
+:extrapreds ((x881))
+:extrapreds ((x882))
+:extrapreds ((x883))
+:extrapreds ((x884))
+:extrapreds ((x885))
+:extrapreds ((x886))
+:extrapreds ((x887))
+:extrapreds ((x888))
+:extrapreds ((x889))
+:extrapreds ((x890))
+:extrapreds ((x891))
+:extrapreds ((x892))
+:extrapreds ((x893))
+:extrapreds ((x894))
+:extrapreds ((x895))
+:extrapreds ((x896))
+:extrapreds ((x897))
+:extrapreds ((x898))
+:extrapreds ((x899))
+:extrapreds ((x900))
+:extrapreds ((x901))
+:extrapreds ((x902))
+:extrapreds ((x903))
+:extrapreds ((x904))
+:extrapreds ((x905))
+:extrapreds ((x906))
+:extrapreds ((x907))
+:extrapreds ((x908))
+:extrapreds ((x909))
+:extrapreds ((x910))
+:extrapreds ((x911))
+:extrapreds ((x912))
+:extrapreds ((x913))
+:extrapreds ((x914))
+:extrapreds ((x915))
+:extrapreds ((x916))
+:extrapreds ((x917))
+:extrapreds ((x918))
+:extrapreds ((x919))
+:extrapreds ((x920))
+:extrapreds ((x921))
+:extrapreds ((x922))
+:extrapreds ((x923))
+:extrapreds ((x924))
+:extrapreds ((x925))
+:extrapreds ((x926))
+:extrapreds ((x927))
+:extrapreds ((x928))
+:extrapreds ((x929))
+:extrapreds ((x930))
+:extrapreds ((x931))
+:extrapreds ((x932))
+:extrapreds ((x933))
+:extrapreds ((x934))
+:extrapreds ((x935))
+:extrapreds ((x936))
+:extrapreds ((x937))
+:extrapreds ((x938))
+:extrapreds ((x939))
+:extrapreds ((x940))
+:extrapreds ((x941))
+:extrapreds ((x942))
+:extrapreds ((x943))
+:extrapreds ((x944))
+:extrapreds ((x945))
+:extrapreds ((x946))
+:extrapreds ((x947))
+:extrapreds ((x948))
+:extrapreds ((x949))
+:extrapreds ((x950))
+:extrapreds ((x951))
+:extrapreds ((x952))
+:extrapreds ((x953))
+:extrapreds ((x954))
+:extrapreds ((x955))
+:extrapreds ((x956))
+:extrapreds ((x957))
+:extrapreds ((x958))
+:extrapreds ((x959))
+:extrapreds ((x960))
+:extrapreds ((x961))
+:extrapreds ((x962))
+:extrapreds ((x963))
+:extrapreds ((x964))
+:extrapreds ((x965))
+:extrapreds ((x966))
+:extrapreds ((x967))
+:extrapreds ((x968))
+:extrapreds ((x969))
+:extrapreds ((x970))
+:extrapreds ((x971))
+:extrapreds ((x972))
+:extrapreds ((x973))
+:extrapreds ((x974))
+:extrapreds ((x975))
+:extrapreds ((x976))
+:extrapreds ((x977))
+:extrapreds ((x978))
+:extrapreds ((x979))
+:extrapreds ((x980))
+:extrapreds ((x981))
+:extrapreds ((x982))
+:extrapreds ((x983))
+:extrapreds ((x984))
+:extrapreds ((x985))
+:extrapreds ((x986))
+:extrapreds ((x987))
+:extrapreds ((x988))
+:extrapreds ((x989))
+:extrapreds ((x990))
+:extrapreds ((x991))
+:extrapreds ((x992))
+:extrapreds ((x993))
+:extrapreds ((x994))
+:extrapreds ((x995))
+:extrapreds ((x996))
+:extrapreds ((x997))
+:extrapreds ((x998))
+:extrapreds ((x999))
+:extrapreds ((x1000))
+:extrapreds ((x1001))
+:extrapreds ((x1002))
+:extrapreds ((x1003))
+:extrapreds ((x1004))
+:extrapreds ((x1005))
+:extrapreds ((x1006))
+:extrapreds ((x1007))
+:extrapreds ((x1008))
+:extrapreds ((x1009))
+:extrapreds ((x1010))
+:extrapreds ((x1011))
+:extrapreds ((x1012))
+:extrapreds ((x1013))
+:extrapreds ((x1014))
+:extrapreds ((x1015))
+:extrapreds ((x1016))
+:extrapreds ((x1017))
+:extrapreds ((x1018))
+:extrapreds ((x1019))
+:extrapreds ((x1020))
+:extrapreds ((x1021))
+:extrapreds ((x1022))
+:extrapreds ((x1023))
+:extrapreds ((x1024))
+:extrapreds ((x1025))
+:extrapreds ((x1026))
+:extrapreds ((x1027))
+:extrapreds ((x1028))
+:extrapreds ((x1029))
+:extrapreds ((x1030))
+:extrapreds ((x1031))
+:extrapreds ((x1032))
+:extrapreds ((x1033))
+:extrapreds ((x1034))
+:extrapreds ((x1035))
+:extrapreds ((x1036))
+:extrapreds ((x1037))
+:extrapreds ((x1038))
+:extrapreds ((x1039))
+:extrapreds ((x1040))
+:extrapreds ((x1041))
+:extrapreds ((x1042))
+:extrapreds ((x1043))
+:extrapreds ((x1044))
+:extrapreds ((x1045))
+:extrapreds ((x1046))
+:extrapreds ((x1047))
+:extrapreds ((x1048))
+:extrapreds ((x1049))
+:extrapreds ((x1050))
+:extrapreds ((x1051))
+:extrapreds ((x1052))
+:extrapreds ((x1053))
+:extrapreds ((x1054))
+:extrapreds ((x1055))
+:extrapreds ((x1056))
+:extrapreds ((x1057))
+:extrapreds ((x1058))
+:extrapreds ((x1059))
+:extrapreds ((x1060))
+:extrapreds ((x1061))
+:extrapreds ((x1062))
+:extrapreds ((x1063))
+:extrapreds ((x1064))
+:extrapreds ((x1065))
+:extrapreds ((x1066))
+:extrapreds ((x1067))
+:extrapreds ((x1068))
+:extrapreds ((x1069))
+:extrapreds ((x1070))
+:extrapreds ((x1071))
+:extrapreds ((x1072))
+:extrapreds ((x1073))
+:extrapreds ((x1074))
+:extrapreds ((x1075))
+:extrapreds ((x1076))
+:extrapreds ((x1077))
+:extrapreds ((x1078))
+:extrapreds ((x1079))
+:extrapreds ((x1080))
+:extrapreds ((x1081))
+:extrapreds ((x1082))
+:extrapreds ((x1083))
+:extrapreds ((x1084))
+:extrapreds ((x1085))
+:extrapreds ((x1086))
+:extrapreds ((x1087))
+:extrapreds ((x1088))
+:extrapreds ((x1089))
+:extrapreds ((x1090))
+:extrapreds ((x1091))
+:extrapreds ((x1092))
+:extrapreds ((x1093))
+:extrapreds ((x1094))
+:extrapreds ((x1095))
+:extrapreds ((x1096))
+:extrapreds ((x1097))
+:extrapreds ((x1098))
+:extrapreds ((x1099))
+:extrapreds ((x1100))
+:extrapreds ((x1101))
+:extrapreds ((x1102))
+:extrapreds ((x1103))
+:extrapreds ((x1104))
+:extrapreds ((x1105))
+:extrapreds ((x1106))
+:extrapreds ((x1107))
+:extrapreds ((x1108))
+:extrapreds ((x1109))
+:extrapreds ((x1110))
+:extrapreds ((x1111))
+:extrapreds ((x1112))
+:extrapreds ((x1113))
+:extrapreds ((x1114))
+:extrapreds ((x1115))
+:extrapreds ((x1116))
+:extrapreds ((x1117))
+:extrapreds ((x1118))
+:extrapreds ((x1119))
+:extrapreds ((x1120))
+:extrapreds ((x1121))
+:extrapreds ((x1122))
+:extrapreds ((x1123))
+:extrapreds ((x1124))
+:extrapreds ((x1125))
+:extrapreds ((x1126))
+:extrapreds ((x1127))
+:extrapreds ((x1128))
+:extrapreds ((x1129))
+:extrapreds ((x1130))
+:extrapreds ((x1131))
+:extrapreds ((x1132))
+:extrapreds ((x1133))
+:extrapreds ((x1134))
+:extrapreds ((x1135))
+:extrapreds ((x1136))
+:extrapreds ((x1137))
+:extrapreds ((x1138))
+:extrapreds ((x1139))
+:extrapreds ((x1140))
+:extrapreds ((x1141))
+:extrapreds ((x1142))
+:extrapreds ((x1143))
+:extrapreds ((x1144))
+:extrapreds ((x1145))
+:extrapreds ((x1146))
+:extrapreds ((x1147))
+:extrapreds ((x1148))
+:extrapreds ((x1149))
+:extrapreds ((x1150))
+:extrapreds ((x1151))
+:extrapreds ((x1152))
+:extrapreds ((x1153))
+:extrapreds ((x1154))
+:extrapreds ((x1155))
+:extrapreds ((x1156))
+:extrapreds ((x1157))
+:extrapreds ((x1158))
+:extrapreds ((x1159))
+:extrapreds ((x1160))
+:extrapreds ((x1161))
+:extrapreds ((x1162))
+:extrapreds ((x1163))
+:extrapreds ((x1164))
+:extrapreds ((x1165))
+:extrapreds ((x1166))
+:extrapreds ((x1167))
+:extrapreds ((x1168))
+:extrapreds ((x1169))
+:extrapreds ((x1170))
+:extrapreds ((x1171))
+:extrapreds ((x1172))
+:extrapreds ((x1173))
+:extrapreds ((x1174))
+:extrapreds ((x1175))
+:extrapreds ((x1176))
+:extrapreds ((x1177))
+:extrapreds ((x1178))
+:extrapreds ((x1179))
+:extrapreds ((x1180))
+:extrapreds ((x1181))
+:extrapreds ((x1182))
+:extrapreds ((x1183))
+:extrapreds ((x1184))
+:extrapreds ((x1185))
+:extrapreds ((x1186))
+:extrapreds ((x1187))
+:extrapreds ((x1188))
+:extrapreds ((x1189))
+:extrapreds ((x1190))
+:extrapreds ((x1191))
+:extrapreds ((x1192))
+:extrapreds ((x1193))
+:extrapreds ((x1194))
+:extrapreds ((x1195))
+:extrapreds ((x1196))
+:extrapreds ((x1197))
+:extrapreds ((x1198))
+:extrapreds ((x1199))
+:extrapreds ((x1200))
+:extrapreds ((x1201))
+:extrapreds ((x1202))
+:extrapreds ((x1203))
+:extrapreds ((x1204))
+:extrapreds ((x1205))
+:extrapreds ((x1206))
+:extrapreds ((x1207))
+:extrapreds ((x1208))
+:extrapreds ((x1209))
+:extrapreds ((x1210))
+:extrapreds ((x1211))
+:extrapreds ((x1212))
+:extrapreds ((x1213))
+:extrapreds ((x1214))
+:extrapreds ((x1215))
+:extrapreds ((x1216))
+:extrapreds ((x1217))
+:extrapreds ((x1218))
+:extrapreds ((x1219))
+:extrapreds ((x1220))
+:extrapreds ((x1221))
+:extrapreds ((x1222))
+:extrapreds ((x1223))
+:extrapreds ((x1224))
+:extrapreds ((x1225))
+:extrapreds ((x1226))
+:extrapreds ((x1227))
+:extrapreds ((x1228))
+:extrapreds ((x1229))
+:extrapreds ((x1230))
+:extrapreds ((x1231))
+:extrapreds ((x1232))
+:extrapreds ((x1233))
+:extrapreds ((x1234))
+:extrapreds ((x1235))
+:extrapreds ((x1236))
+:extrapreds ((x1237))
+:extrapreds ((x1238))
+:extrapreds ((x1239))
+:extrapreds ((x1240))
+:extrapreds ((x1241))
+:extrapreds ((x1242))
+:extrapreds ((x1243))
+:extrapreds ((x1244))
+:extrapreds ((x1245))
+:extrapreds ((x1246))
+:extrapreds ((x1247))
+:extrapreds ((x1248))
+:extrapreds ((x1249))
+:extrapreds ((x1250))
+:extrapreds ((x1251))
+:extrapreds ((x1252))
+:extrapreds ((x1253))
+:extrapreds ((x1254))
+:extrapreds ((x1255))
+:extrapreds ((x1256))
+:extrapreds ((x1257))
+:extrapreds ((x1258))
+:extrapreds ((x1259))
+:extrapreds ((x1260))
+:extrapreds ((x1261))
+:extrapreds ((x1262))
+:extrapreds ((x1263))
+:extrapreds ((x1264))
+:extrapreds ((x1265))
+:extrapreds ((x1266))
+:extrapreds ((x1267))
+:extrapreds ((x1268))
+:extrapreds ((x1269))
+:extrapreds ((x1270))
+:extrapreds ((x1271))
+:extrapreds ((x1272))
+:extrapreds ((x1273))
+:extrapreds ((x1274))
+:extrapreds ((x1275))
+:extrapreds ((x1276))
+:extrapreds ((x1277))
+:extrapreds ((x1278))
+:extrapreds ((x1279))
+:extrapreds ((x1280))
+:extrapreds ((x1281))
+:extrapreds ((x1282))
+:extrapreds ((x1283))
+:extrapreds ((x1284))
+:extrapreds ((x1285))
+:extrapreds ((x1286))
+:extrapreds ((x1287))
+:extrapreds ((x1288))
+:extrapreds ((x1289))
+:extrapreds ((x1290))
+:extrapreds ((x1291))
+:extrapreds ((x1292))
+:extrapreds ((x1293))
+:extrapreds ((x1294))
+:extrapreds ((x1295))
+:extrapreds ((x1296))
+:extrapreds ((x1297))
+:extrapreds ((x1298))
+:extrapreds ((x1299))
+:extrapreds ((x1300))
+:extrapreds ((x1301))
+:extrapreds ((x1302))
+:extrapreds ((x1303))
+:extrapreds ((x1304))
+:extrapreds ((x1305))
+:extrapreds ((x1306))
+:extrapreds ((x1307))
+:extrapreds ((x1308))
+:extrapreds ((x1309))
+:extrapreds ((x1310))
+:extrapreds ((x1311))
+:extrapreds ((x1312))
+:extrapreds ((x1313))
+:extrapreds ((x1314))
+:extrapreds ((x1315))
+:extrapreds ((x1316))
+:extrapreds ((x1317))
+:extrapreds ((x1318))
+:extrapreds ((x1319))
+:extrapreds ((x1320))
+:extrapreds ((x1321))
+:extrapreds ((x1322))
+:extrapreds ((x1323))
+:extrapreds ((x1324))
+:extrapreds ((x1325))
+:extrapreds ((x1326))
+:extrapreds ((x1327))
+:extrapreds ((x1328))
+:extrapreds ((x1329))
+:extrapreds ((x1330))
+:extrapreds ((x1331))
+:extrapreds ((x1332))
+:extrapreds ((x1333))
+:extrapreds ((x1334))
+:extrapreds ((x1335))
+:extrapreds ((x1336))
+:extrapreds ((x1337))
+:extrapreds ((x1338))
+:extrapreds ((x1339))
+:extrapreds ((x1340))
+:extrapreds ((x1341))
+:extrapreds ((x1342))
+:extrapreds ((x1343))
+:extrapreds ((x1344))
+:extrapreds ((x1345))
+:extrapreds ((x1346))
+:extrapreds ((x1347))
+:extrapreds ((x1348))
+:extrapreds ((x1349))
+:extrapreds ((x1350))
+:extrapreds ((x1351))
+:extrapreds ((x1352))
+:extrapreds ((x1353))
+:extrapreds ((x1354))
+:extrapreds ((x1355))
+:extrapreds ((x1356))
+:extrapreds ((x1357))
+:extrapreds ((x1358))
+:extrapreds ((x1359))
+:extrapreds ((x1360))
+:extrapreds ((x1361))
+:extrapreds ((x1362))
+:extrapreds ((x1363))
+:extrapreds ((x1364))
+:extrapreds ((x1365))
+:extrapreds ((x1366))
+:extrapreds ((x1367))
+:extrapreds ((x1368))
+:extrapreds ((x1369))
+:extrapreds ((x1370))
+:extrapreds ((x1371))
+:extrapreds ((x1372))
+:extrapreds ((x1373))
+:extrapreds ((x1374))
+:extrapreds ((x1375))
+:extrapreds ((x1376))
+:extrapreds ((x1377))
+:extrapreds ((x1378))
+:extrapreds ((x1379))
+:extrapreds ((x1380))
+:extrapreds ((x1381))
+:extrapreds ((x1382))
+:extrapreds ((x1383))
+:extrapreds ((x1384))
+:extrapreds ((x1385))
+:extrapreds ((x1386))
+:extrapreds ((x1387))
+:extrapreds ((x1388))
+:extrapreds ((x1389))
+:extrapreds ((x1390))
+:extrapreds ((x1391))
+:extrapreds ((x1392))
+:extrapreds ((x1393))
+:extrapreds ((x1394))
+:extrapreds ((x1395))
+:extrapreds ((x1396))
+:extrapreds ((x1397))
+:extrapreds ((x1398))
+:extrapreds ((x1399))
+:extrapreds ((x1400))
+:extrapreds ((x1401))
+:extrapreds ((x1402))
+:extrapreds ((x1403))
+:extrapreds ((x1404))
+:extrapreds ((x1405))
+:extrapreds ((x1406))
+:extrapreds ((x1407))
+:extrapreds ((x1408))
+:extrapreds ((x1409))
+:extrapreds ((x1410))
+:extrapreds ((x1411))
+:extrapreds ((x1412))
+:extrapreds ((x1413))
+:extrapreds ((x1414))
+:extrapreds ((x1415))
+:extrapreds ((x1416))
+:extrapreds ((x1417))
+:extrapreds ((x1418))
+:extrapreds ((x1419))
+:extrapreds ((x1420))
+:formula (and
+(or (not x163))
+(or x151)
+(or x168)
+(or (not x158))
+(or (not x171))
+(or x143)
+(or x177)
+(or (not x150))
+(or (not x144))
+(or x159)
+(or (not x176))
+(or x149)
+(or (not x161))
+(or (not x169))
+(or x160)
+(or x147)
+(or x152)
+(or (not x157))
+(or (not x170))
+(or (not x146))
+(or x154)
+(or (not x175))
+(or x145)
+(or x162)
+(or x167)
+(or (not x155))
+(or (not x172))
+(or (not x148))
+(or x166)
+(or (not x173))
+(or x156)
+(or x165)
+(or (not x164))
+(or (not x174))
+(or (not x153))
+(or (not x66) x93)
+(or x66 (not x93))
+(or x65 x92)
+(or (not x65) (not x92))
+(or x64 x91)
+(or (not x64) (not x91))
+(or (not x63) x90)
+(or x63 (not x90))
+(or (not x62) x89)
+(or x62 (not x89))
+(or x61 x88)
+(or (not x61) (not x88))
+(or (not x60) x87)
+(or x60 (not x87))
+(or x59 x86)
+(or (not x59) (not x86))
+(or (not x58) x85)
+(or x58 (not x85))
+(or x57 x84)
+(or (not x57) (not x84))
+(or (not x56) x83)
+(or x56 (not x83))
+(or x55 x82)
+(or (not x55) (not x82))
+(or x54 x81)
+(or (not x54) (not x81))
+(or x53 x80)
+(or (not x53) (not x80))
+(or (not x52) x79)
+(or x52 (not x79))
+(or (not x51) x78)
+(or x51 (not x78))
+(or x50 x77)
+(or (not x50) (not x77))
+(or x49 x76)
+(or (not x49) (not x76))
+(or (not x48) x75)
+(or x48 (not x75))
+(or (not x47) x74)
+(or x47 (not x74))
+(or (not x142) x490)
+(or x142 (not x490))
+(or (not x141) x491)
+(or x141 (not x491))
+(or (not x140) x492)
+(or x140 (not x492))
+(or (not x139) x493)
+(or x139 (not x493))
+(or x138 x494)
+(or (not x138) (not x494))
+(or (not x137) x495)
+(or x137 (not x495))
+(or (not x136) x496)
+(or x136 (not x496))
+(or (not x135) x497)
+(or x135 (not x497))
+(or (not x134) x498)
+(or x134 (not x498))
+(or x133 x499)
+(or (not x133) (not x499))
+(or (not x132) x500)
+(or x132 (not x500))
+(or (not x131) x501)
+(or x131 (not x501))
+(or (not x130) x502)
+(or x130 (not x502))
+(or (not x129) x503)
+(or x129 (not x503))
+(or (not x128) x504)
+(or x128 (not x504))
+(or (not x505) x506)
+(or x505 (not x506))
+(or x507 x508)
+(or (not x507) (not x508))
+(or x509 x510)
+(or (not x509) (not x510))
+(or (not x511) x512)
+(or x511 (not x512))
+(or (not x513) x514)
+(or x513 (not x514))
+(or (not x515) x516)
+(or x515 (not x516))
+(or (not x517) x518)
+(or x517 (not x518))
+(or x519 x520)
+(or (not x519) (not x520))
+(or (not x521) x522)
+(or x521 (not x522))
+(or (not x523) x524)
+(or x523 (not x524))
+(or x525 x526)
+(or (not x525) (not x526))
+(or x527 x528)
+(or (not x527) (not x528))
+(or (not x529) x530)
+(or x529 (not x530))
+(or (not x531) x532)
+(or x531 (not x532))
+(or x533 x534)
+(or (not x533) (not x534))
+(or x535 x536)
+(or (not x535) (not x536))
+(or x537 x538)
+(or (not x537) (not x538))
+(or (not x539) x540)
+(or x539 (not x540))
+(or x541 x542)
+(or (not x541) (not x542))
+(or (not x543) x544)
+(or x543 (not x544))
+(or (not x545) x546)
+(or x545 (not x546))
+(or x547 x548)
+(or (not x547) (not x548))
+(or (not x549) x550)
+(or x549 (not x550))
+(or (not x551) x552)
+(or x551 (not x552))
+(or x553 x554)
+(or (not x553) (not x554))
+(or (not x555) x556)
+(or x555 (not x556))
+(or x557 x558)
+(or (not x557) (not x558))
+(or (not x559) x560)
+(or x559 (not x560))
+(or x561 x562)
+(or (not x561) (not x562))
+(or x563 x564)
+(or (not x563) (not x564))
+(or (not x565) x566)
+(or x565 (not x566))
+(or x567 x568)
+(or (not x567) (not x568))
+(or x569 x570)
+(or (not x569) (not x570))
+(or (not x571) x572)
+(or x571 (not x572))
+(or x573 x574)
+(or (not x573) (not x574))
+(or (not x575) x576)
+(or x575 (not x576))
+(or x577 x578)
+(or (not x577) (not x578))
+(or (not x579) x580)
+(or x579 (not x580))
+(or (not x581) x582)
+(or x581 (not x582))
+(or (not x583) x584)
+(or x583 (not x584))
+(or x585 x586)
+(or (not x585) (not x586))
+(or x587 x588)
+(or (not x587) (not x588))
+(or (not x589) x590)
+(or x589 (not x590))
+(or x591 x592)
+(or (not x591) (not x592))
+(or x593 x594)
+(or (not x593) (not x594))
+(or (not x595) x596)
+(or x595 (not x596))
+(or x597 x598)
+(or (not x597) (not x598))
+(or (not x599) x600)
+(or x599 (not x600))
+(or x601 x602)
+(or (not x601) (not x602))
+(or (not x603) x604)
+(or x603 (not x604))
+(or (not x605) x606)
+(or x605 (not x606))
+(or (not x608) x609)
+(or x608 (not x609))
+(or (not x611) x612)
+(or x611 (not x612))
+(or x614 x615)
+(or (not x614) (not x615))
+(or (not x617) x618)
+(or x617 (not x618))
+(or x620 x621)
+(or (not x620) (not x621))
+(or x623 x624)
+(or (not x623) (not x624))
+(or x626 x627)
+(or (not x626) (not x627))
+(or (not x202) x628)
+(or x202 (not x628))
+(or x203 x629)
+(or (not x203) (not x629))
+(or x204 x630)
+(or (not x204) (not x630))
+(or (not x205) x631)
+(or x205 (not x631))
+(or x206 x632)
+(or (not x206) (not x632))
+(or x633 x634)
+(or (not x633) (not x634))
+(or x636 x637)
+(or (not x636) (not x637))
+(or x639 x640)
+(or (not x639) (not x640))
+(or (not x643) x644)
+(or x643 (not x644))
+(or x647 x648)
+(or (not x647) (not x648))
+(or (not x651) x652)
+(or x651 (not x652))
+(or (not x656) x657)
+(or x656 (not x657))
+(or x661 x662)
+(or (not x661) (not x662))
+(or x666 x667)
+(or (not x666) (not x667))
+(or (not x671) x672)
+(or x671 (not x672))
+(or (not x676) x677)
+(or x676 (not x677))
+(or x681 x682)
+(or (not x681) (not x682))
+(or x686 x687)
+(or (not x686) (not x687))
+(or (not x691) x692)
+(or x691 (not x692))
+(or (not x696) x697)
+(or x696 (not x697))
+(or x701 x702)
+(or (not x701) (not x702))
+(or (not x706) x707)
+(or x706 (not x707))
+(or (not x711) x712)
+(or x711 (not x712))
+(or x716 x717)
+(or (not x716) (not x717))
+(or (not x721) x722)
+(or x721 (not x722))
+(or (not x726) x727)
+(or x726 (not x727))
+(or (not x731) x732)
+(or x731 (not x732))
+(or (not x736) x737)
+(or x736 (not x737))
+(or (not x741) x742)
+(or x741 (not x742))
+(or x746 x747)
+(or (not x746) (not x747))
+(or (not x751) x752)
+(or x751 (not x752))
+(or (not x756) x757)
+(or x756 (not x757))
+(or (not x761) x762)
+(or x761 (not x762))
+(or x767 x768)
+(or (not x767) (not x768))
+(or (not x773) x774)
+(or x773 (not x774))
+(or (not x780) x781)
+(or x780 (not x781))
+(or x787 x788)
+(or (not x787) (not x788))
+(or x794 x795)
+(or (not x794) (not x795))
+(or (not x801) x802)
+(or x801 (not x802))
+(or x808 x809)
+(or (not x808) (not x809))
+(or (not x815) x816)
+(or x815 (not x816))
+(or (not x822) x823)
+(or x822 (not x823))
+(or x829 x830)
+(or (not x829) (not x830))
+(or (not x836) x837)
+(or x836 (not x837))
+(or x843 x844)
+(or (not x843) (not x844))
+(or (not x850) x851)
+(or x850 (not x851))
+(or x857 x858)
+(or (not x857) (not x858))
+(or x864 x865)
+(or (not x864) (not x865))
+(or (not x871) x872)
+(or x871 (not x872))
+(or x878 x879)
+(or (not x878) (not x879))
+(or (not x885) x886)
+(or x885 (not x886))
+(or (not x892) x893)
+(or x892 (not x893))
+(or x899 x900)
+(or (not x899) (not x900))
+(or x906 x907)
+(or (not x906) (not x907))
+(or (not x913) x914)
+(or x913 (not x914))
+(or (not x922) x923)
+(or x922 (not x923))
+(or (not x937) x938)
+(or x937 (not x938))
+(or x950 x951)
+(or (not x950) (not x951))
+(or x962 x963)
+(or (not x962) (not x963))
+(or (not x975) x976)
+(or x975 (not x976))
+(or x989 x990)
+(or (not x989) (not x990))
+(or (not x1003) x1004)
+(or x1003 (not x1004))
+(or (not x1020) x1021)
+(or x1020 (not x1021))
+(or (not x1036) x1037)
+(or x1036 (not x1037))
+(or (not x1051) x1052)
+(or x1051 (not x1052))
+(or x1068 x1069)
+(or (not x1068) (not x1069))
+(or x1083 x1084)
+(or (not x1083) (not x1084))
+(or x1099 x1100)
+(or (not x1099) (not x1100))
+(or x1116 x1117)
+(or (not x1116) (not x1117))
+(or (not x1133) x1134)
+(or x1133 (not x1134))
+(or x1150 x1151)
+(or (not x1150) (not x1151))
+(or x1168 x1169)
+(or (not x1168) (not x1169))
+(or (not x1184) x1185)
+(or x1184 (not x1185))
+(or x1203 x1204)
+(or (not x1203) (not x1204))
+(or x1221 x1222)
+(or (not x1221) (not x1222))
+(or (not x1242) x1243)
+(or x1242 (not x1243))
+(or (not x1263) x1264)
+(or x1263 (not x1264))
+(or x1283 x1284)
+(or (not x1283) (not x1284))
+(or (not x1306) x1307)
+(or x1306 (not x1307))
+(or x1326 x1327)
+(or (not x1326) (not x1327))
+(or (not x1350) x1351)
+(or x1350 (not x1351))
+(or (not x1370) x1371)
+(or x1370 (not x1371))
+(or x1394 x1395)
+(or (not x1394) (not x1395))
+(or x1419 x1420)
+(or (not x1419) (not x1420))
+(or (not x1049) x1043 x1044)
+(or x1049 (not x1043) x1044)
+(or x1049 x1043 (not x1044))
+(or (not x1049) (not x1043) (not x1044))
+(or (not x227) x51)
+(or (not x227) (not x51) x52)
+(or x227 (not x51) (not x52))
+(or (not x328) x64)
+(or (not x328) (not x64) x88)
+(or x328 (not x64) (not x88) (not x89))
+(or (not x328) (not x64) (not x88) x89)
+(or (not x808) x806 x807)
+(or x808 (not x806) x807)
+(or x808 x806 (not x807))
+(or (not x808) (not x806) (not x807))
+(or (not x351) x85)
+(or (not x351) (not x85) x86)
+(or x351 (not x85) (not x86) (not x88))
+(or (not x351) (not x85) (not x86) x88)
+(or (not x553) x7 x34)
+(or x553 (not x7) x34)
+(or x553 x7 (not x34))
+(or (not x553) (not x7) (not x34))
+(or (not x277) x26)
+(or (not x277) (not x26) x27)
+(or x277 (not x26) (not x27))
+(or (not x1411) x54 x64)
+(or x1411 (not x54) x64)
+(or x1411 x54 (not x64))
+(or (not x1411) (not x54) (not x64))
+(or (not x1350) x1348 x1349)
+(or x1350 (not x1348) x1349)
+(or x1350 x1348 (not x1349))
+(or (not x1350) (not x1348) (not x1349))
+(or (not x1408) x1398 x1399)
+(or x1408 (not x1398) x1399)
+(or x1408 x1398 (not x1399))
+(or (not x1408) (not x1398) (not x1399))
+(or (not x1377) x478 x479)
+(or x1377 (not x478) x479)
+(or x1377 x478 (not x479))
+(or (not x1377) (not x478) (not x479))
+(or (not x948) x942 x943)
+(or x948 (not x942) x943)
+(or x948 x942 (not x943))
+(or (not x948) (not x942) (not x943))
+(or (not x352) x5)
+(or (not x352) (not x5) x6)
+(or x352 (not x5) (not x6))
+(or (not x690) x117 x129)
+(or x690 (not x117) x129)
+(or x690 x117 (not x129))
+(or (not x690) (not x117) (not x129))
+(or (not x1292) x1288 x1289)
+(or x1292 (not x1288) x1289)
+(or x1292 x1288 (not x1289))
+(or (not x1292) (not x1288) (not x1289))
+(or (not x766) x763 x764)
+(or x766 (not x763) x764)
+(or x766 x763 (not x764))
+(or (not x766) (not x763) (not x764))
+(or (not x1168) x1159 x1160)
+(or x1168 (not x1159) x1160)
+(or x1168 x1159 (not x1160))
+(or (not x1168) (not x1159) (not x1160))
+(or (not x969) x332 x333)
+(or x969 (not x332) x333)
+(or x969 x332 (not x333))
+(or (not x969) (not x332) (not x333))
+(or (not x1104) x301 x394)
+(or x1104 (not x301) x394)
+(or x1104 x301 (not x394))
+(or (not x1104) (not x301) (not x394))
+(or (not x952) x194 x206)
+(or x952 (not x194) x206)
+(or x952 x194 (not x206))
+(or (not x952) (not x194) (not x206))
+(or (not x1355) x219 x225)
+(or x1355 (not x219) x225)
+(or x1355 x219 (not x225))
+(or (not x1355) (not x219) (not x225))
+(or (not x947) x205 x256)
+(or x947 (not x205) x256)
+(or x947 x205 (not x256))
+(or (not x947) (not x205) (not x256))
+(or (not x1314) x1309 x1310)
+(or x1314 (not x1309) x1310)
+(or x1314 x1309 (not x1310))
+(or (not x1314) (not x1309) (not x1310))
+(or (not x1310) x70 x98)
+(or x1310 (not x70) x98)
+(or x1310 x70 (not x98))
+(or (not x1310) (not x70) (not x98))
+(or (not x1157) x417 x1152)
+(or x1157 (not x417) x1152)
+(or x1157 x417 (not x1152))
+(or (not x1157) (not x417) (not x1152))
+(or (not x1155) x229 x284)
+(or x1155 (not x229) x284)
+(or x1155 x229 (not x284))
+(or (not x1155) (not x229) (not x284))
+(or (not x341) x62)
+(or (not x341) (not x62) x88)
+(or x341 (not x62) (not x88))
+(or (not x1114) x395 x396)
+(or x1114 (not x395) x396)
+(or x1114 x395 (not x396))
+(or (not x1114) (not x395) (not x396))
+(or (not x383) x56)
+(or (not x383) (not x56) x82)
+(or x383 (not x56) (not x82))
+(or (not x1296) x1286 x1287)
+(or x1296 (not x1286) x1287)
+(or x1296 x1286 (not x1287))
+(or (not x1296) (not x1286) (not x1287))
+(or (not x892) x890 x891)
+(or x892 (not x890) x891)
+(or x892 x890 (not x891))
+(or (not x892) (not x890) (not x891))
+(or (not x769) x116 x210)
+(or x769 (not x116) x210)
+(or x769 x116 (not x210))
+(or (not x769) (not x116) (not x210))
+(or (not x573) x24 x93)
+(or x573 (not x24) x93)
+(or x573 x24 (not x93))
+(or (not x573) (not x24) (not x93))
+(or (not x1045) x366 x367)
+(or x1045 (not x366) x367)
+(or x1045 x366 (not x367))
+(or (not x1045) (not x366) (not x367))
+(or (not x609) x142 x180)
+(or x609 (not x142) x180)
+(or x609 x142 (not x180))
+(or (not x609) (not x142) (not x180))
+(or (not x358) x84)
+(or (not x358) (not x84) x85)
+(or x358 (not x84) (not x85) (not x87))
+(or (not x358) (not x84) (not x85) x87)
+(or (not x427) x49)
+(or (not x427) (not x49) x73)
+(or x427 (not x49) (not x73) (not x74))
+(or (not x427) (not x49) (not x73) x74)
+(or (not x679) x495 x678)
+(or x679 (not x495) x678)
+(or x679 x495 (not x678))
+(or (not x679) (not x495) (not x678))
+(or (not x1195) x427 x428)
+(or x1195 (not x427) x428)
+(or x1195 x427 (not x428))
+(or (not x1195) (not x427) (not x428))
+(or (not x673) x135 x202)
+(or x673 (not x135) x202)
+(or x673 x135 (not x202))
+(or (not x673) (not x135) (not x202))
+(or (not x920) x918 x919)
+(or x920 (not x918) x919)
+(or x920 x918 (not x919))
+(or (not x920) (not x918) (not x919))
+(or (not x1303) x213 x219)
+(or x1303 (not x213) x219)
+(or x1303 x213 (not x219))
+(or (not x1303) (not x213) (not x219))
+(or (not x989) x987 x988)
+(or x989 (not x987) x988)
+(or x989 x987 (not x988))
+(or (not x989) (not x987) (not x988))
+(or (not x357) x84)
+(or (not x357) (not x84) x85)
+(or x357 (not x84) (not x85) (not x86))
+(or (not x357) (not x84) (not x85) x86)
+(or (not x980) x341 x342)
+(or x980 (not x341) x342)
+(or x980 x341 (not x342))
+(or (not x980) (not x341) (not x342))
+(or (not x217) x56)
+(or (not x217) (not x56) x57)
+(or x217 (not x56) (not x57))
+(or (not x729) x505 x728)
+(or x729 (not x505) x728)
+(or x729 x505 (not x728))
+(or (not x729) (not x505) (not x728))
+(or (not x946) x944 x945)
+(or x946 (not x944) x945)
+(or x946 x944 (not x945))
+(or (not x946) (not x944) (not x945))
+(or (not x912) x250 x273)
+(or x912 (not x250) x273)
+(or x912 x250 (not x273))
+(or (not x912) (not x250) (not x273))
+(or (not x1138) x305 x406)
+(or x1138 (not x305) x406)
+(or x1138 x305 (not x406))
+(or (not x1138) (not x305) (not x406))
+(or (not x1137) x203 x206)
+(or x1137 (not x203) x206)
+(or x1137 x203 (not x206))
+(or (not x1137) (not x203) (not x206))
+(or (not x566) x97 x112)
+(or x566 (not x97) x112)
+(or x566 x97 (not x112))
+(or (not x566) (not x97) (not x112))
+(or (not x830) x825 x826)
+(or x830 (not x825) x826)
+(or x830 x825 (not x826))
+(or (not x830) (not x825) (not x826))
+(or (not x356) x60)
+(or (not x356) (not x60) x84)
+(or x356 (not x60) (not x84) (not x85))
+(or (not x356) (not x60) (not x84) x85)
+(or (not x829) x827 x828)
+(or x829 (not x827) x828)
+(or x829 x827 (not x828))
+(or (not x829) (not x827) (not x828))
+(or (not x1067) x1064 x1065)
+(or x1067 (not x1064) x1065)
+(or x1067 x1064 (not x1065))
+(or (not x1067) (not x1064) (not x1065))
+(or (not x437) x46)
+(or (not x437) (not x46) x74)
+(or x437 (not x46) (not x74))
+(or (not x1062) x1058 x1059)
+(or x1062 (not x1058) x1059)
+(or x1062 x1058 (not x1059))
+(or (not x1062) (not x1058) (not x1059))
+(or (not x723) x125 x215)
+(or x723 (not x125) x215)
+(or x723 x125 (not x215))
+(or (not x723) (not x125) (not x215))
+(or (not x1199) x1187 x1188)
+(or x1199 (not x1187) x1188)
+(or x1199 x1187 (not x1188))
+(or (not x1199) (not x1187) (not x1188))
+(or (not x866) x129 x184)
+(or x866 (not x129) x184)
+(or x866 x129 (not x184))
+(or (not x866) (not x129) (not x184))
+(or (not x515) x26 x53)
+(or x515 (not x26) x53)
+(or x515 x26 (not x53))
+(or (not x515) (not x26) (not x53))
+(or (not x579) x21 x90)
+(or x579 (not x21) x90)
+(or x579 x21 (not x90))
+(or (not x579) (not x21) (not x90))
+(or (not x1240) x1236 x1237)
+(or x1240 (not x1236) x1237)
+(or x1240 x1236 (not x1237))
+(or (not x1240) (not x1236) (not x1237))
+(or (not x199) x70)
+(or (not x199) (not x70) x71)
+(or x199 (not x70) (not x71))
+(or (not x343) x86)
+(or (not x343) (not x86) x87)
+(or x343 (not x86) (not x87) (not x88))
+(or (not x343) (not x86) (not x87) x88)
+(or (not x471) x66)
+(or (not x471) (not x66) x67)
+(or x471 (not x66) (not x67) (not x69))
+(or (not x471) (not x66) (not x67) x69)
+(or (not x590) x100 x186)
+(or x590 (not x100) x186)
+(or x590 x100 (not x186))
+(or (not x590) (not x100) (not x186))
+(or (not x295) x17)
+(or (not x295) (not x17) x18)
+(or x295 (not x17) (not x18))
+(or (not x957) x326 x327)
+(or x957 (not x326) x327)
+(or x957 x326 (not x327))
+(or (not x957) (not x326) (not x327))
+(or (not x1244) x8 x32)
+(or x1244 (not x8) x32)
+(or x1244 x8 (not x32))
+(or (not x1244) (not x8) (not x32))
+(or (not x556) x102 x117)
+(or x556 (not x102) x117)
+(or x556 x102 (not x117))
+(or (not x556) (not x102) (not x117))
+(or (not x264) x114)
+(or (not x264) (not x114) x115)
+(or x264 (not x114) (not x115))
+(or (not x225) x52)
+(or (not x225) (not x52) x53)
+(or x225 (not x52) (not x53))
+(or (not x1105) x397 x398)
+(or x1105 (not x397) x398)
+(or x1105 x397 (not x398))
+(or (not x1105) (not x397) (not x398))
+(or (not x1193) x53 x62)
+(or x1193 (not x53) x62)
+(or x1193 x53 (not x62))
+(or (not x1193) (not x53) (not x62))
+(or (not x1164) x1153 x1154)
+(or x1164 (not x1153) x1154)
+(or x1164 x1153 (not x1154))
+(or (not x1164) (not x1153) (not x1154))
+(or (not x1021) x1018 x1019)
+(or x1021 (not x1018) x1019)
+(or x1021 x1018 (not x1019))
+(or (not x1021) (not x1018) (not x1019))
+(or (not x333) x62)
+(or (not x333) (not x62) x90)
+(or x333 (not x62) (not x90))
+(or (not x1415) x633 x1406)
+(or x1415 (not x633) x1406)
+(or x1415 x633 (not x1406))
+(or (not x1415) (not x633) (not x1406))
+(or (not x1061) x379 x1053)
+(or x1061 (not x379) x1053)
+(or x1061 x379 (not x1053))
+(or (not x1061) (not x379) (not x1053))
+(or (not x617) x198 x616)
+(or x617 (not x198) x616)
+(or x617 x198 (not x616))
+(or (not x617) (not x198) (not x616))
+(or (not x1204) x1201 x1202)
+(or x1204 (not x1201) x1202)
+(or x1204 x1201 (not x1202))
+(or (not x1204) (not x1201) (not x1202))
+(or (not x1185) x1178 x1179)
+(or x1185 (not x1178) x1179)
+(or x1185 x1178 (not x1179))
+(or (not x1185) (not x1178) (not x1179))
+(or (not x287) x21)
+(or (not x287) (not x21) x22)
+(or x287 (not x21) (not x22))
+(or (not x1299) x58 x69)
+(or x1299 (not x58) x69)
+(or x1299 x58 (not x69))
+(or (not x1299) (not x58) (not x69))
+(or (not x1401) x486 x487)
+(or x1401 (not x486) x487)
+(or x1401 x486 (not x487))
+(or (not x1401) (not x486) (not x487))
+(or (not x607) x7 x76)
+(or x607 (not x7) x76)
+(or x607 x7 (not x76))
+(or (not x607) (not x7) (not x76))
+(or (not x1404) x1402 x1403)
+(or x1404 (not x1402) x1403)
+(or x1404 x1402 (not x1403))
+(or (not x1404) (not x1402) (not x1403))
+(or (not x510) x125 x140)
+(or x510 (not x125) x140)
+(or x510 x125 (not x140))
+(or (not x510) (not x125) (not x140))
+(or (not x1265) x7 x31)
+(or x1265 (not x7) x31)
+(or x1265 x7 (not x31))
+(or (not x1265) (not x7) (not x31))
+(or (not x815) x813 x814)
+(or x815 (not x813) x814)
+(or x815 x813 (not x814))
+(or (not x815) (not x813) (not x814))
+(or (not x1307) x1302 x1303)
+(or x1307 (not x1302) x1303)
+(or x1307 x1302 (not x1303))
+(or (not x1307) (not x1302) (not x1303))
+(or (not x1345) x1338 x1339)
+(or x1345 (not x1338) x1339)
+(or x1345 x1338 (not x1339))
+(or (not x1345) (not x1338) (not x1339))
+(or (not x593) x14 x83)
+(or x593 (not x14) x83)
+(or x593 x14 (not x83))
+(or (not x593) (not x14) (not x83))
+(or (not x932) x929 x930)
+(or x932 (not x929) x930)
+(or x932 x929 (not x930))
+(or (not x932) (not x929) (not x930))
+(or (not x289) x20)
+(or (not x289) (not x20) x21)
+(or x289 (not x20) (not x21))
+(or (not x1173) x418 x419)
+(or x1173 (not x418) x419)
+(or x1173 x418 (not x419))
+(or (not x1173) (not x418) (not x419))
+(or (not x1294) x135 x200)
+(or x1294 (not x135) x200)
+(or x1294 x135 (not x200))
+(or (not x1294) (not x135) (not x200))
+(or (not x364) x83)
+(or (not x364) (not x83) x84)
+(or x364 (not x83) (not x84) (not x85))
+(or (not x364) (not x83) (not x84) x85)
+(or (not x1263) x1261 x1262)
+(or x1263 (not x1261) x1262)
+(or x1263 x1261 (not x1262))
+(or (not x1263) (not x1261) (not x1262))
+(or (not x763) x117 x142)
+(or x763 (not x117) x142)
+(or x763 x117 (not x142))
+(or (not x763) (not x117) (not x142))
+(or (not x677) x225 x226)
+(or x677 (not x225) x226)
+(or x677 x225 (not x226))
+(or (not x677) (not x225) (not x226))
+(or (not x1201) x324 x424)
+(or x1201 (not x324) x424)
+(or x1201 x324 (not x424))
+(or (not x1201) (not x324) (not x424))
+(or (not x517) x25 x52)
+(or x517 (not x25) x52)
+(or x517 x25 (not x52))
+(or (not x517) (not x25) (not x52))
+(or (not x450) x45)
+(or (not x450) (not x45) x71)
+(or x450 (not x45) (not x71))
+(or (not x994) x348 x349)
+(or x994 (not x348) x349)
+(or x994 x348 (not x349))
+(or (not x994) (not x348) (not x349))
+(or (not x781) x776 x777)
+(or x781 (not x776) x777)
+(or x781 x776 (not x777))
+(or (not x781) (not x776) (not x777))
+(or (not x907) x902 x903)
+(or x907 (not x902) x903)
+(or x907 x902 (not x903))
+(or (not x907) (not x902) (not x903))
+(or (not x459) x68)
+(or (not x459) (not x68) x69)
+(or x459 (not x68) (not x69) (not x71))
+(or (not x459) (not x68) (not x69) x71)
+(or (not x269) x30)
+(or (not x269) (not x30) x31)
+(or x269 (not x30) (not x31))
+(or (not x713) x127 x211)
+(or x713 (not x127) x211)
+(or x713 x127 (not x211))
+(or (not x713) (not x127) (not x211))
+(or (not x715) x112 x124)
+(or x715 (not x112) x124)
+(or x715 x112 (not x124))
+(or (not x715) (not x112) (not x124))
+(or (not x911) x561 x908)
+(or x911 (not x561) x908)
+(or x911 x561 (not x908))
+(or (not x911) (not x561) (not x908))
+(or (not x1090) x1087 x1088)
+(or x1090 (not x1087) x1088)
+(or x1090 x1087 (not x1088))
+(or (not x1090) (not x1087) (not x1088))
+(or (not x641) x127 x139)
+(or x641 (not x127) x139)
+(or x641 x127 (not x139))
+(or (not x641) (not x127) (not x139))
+(or (not x457) x44)
+(or (not x457) (not x44) x68)
+(or x457 (not x44) (not x68) (not x69))
+(or (not x457) (not x44) (not x68) x69)
+(or (not x800) x218 x241)
+(or x800 (not x218) x241)
+(or x800 x218 (not x241))
+(or (not x800) (not x218) (not x241))
+(or (not x801) x799 x800)
+(or x801 (not x799) x800)
+(or x801 x799 (not x800))
+(or (not x801) (not x799) (not x800))
+(or (not x330) x88)
+(or (not x330) (not x88) x89)
+(or x330 (not x88) (not x89) (not x91))
+(or (not x330) (not x88) (not x89) x91)
+(or (not x885) x883 x884)
+(or x885 (not x883) x884)
+(or x885 x883 (not x884))
+(or (not x885) (not x883) (not x884))
+(or (not x913) x911 x912)
+(or x913 (not x911) x912)
+(or x913 x911 (not x912))
+(or (not x913) (not x911) (not x912))
+(or (not x1029) x291 x359)
+(or x1029 (not x291) x359)
+(or x1029 x291 (not x359))
+(or (not x1029) (not x291) (not x359))
+(or (not x843) x841 x842)
+(or x843 (not x841) x842)
+(or x843 x841 (not x842))
+(or (not x843) (not x841) (not x842))
+(or (not x391) x55)
+(or (not x391) (not x55) x79)
+(or x391 (not x55) (not x79) (not x80))
+(or (not x391) (not x55) (not x79) x80)
+(or (not x749) x513 x748)
+(or x749 (not x513) x748)
+(or x749 x513 (not x748))
+(or (not x749) (not x513) (not x748))
+(or (not x503) x33 x60)
+(or x503 (not x33) x60)
+(or x503 x33 (not x60))
+(or (not x503) (not x33) (not x60))
+(or (not x1145) x107 x194)
+(or x1145 (not x107) x194)
+(or x1145 x107 (not x194))
+(or (not x1145) (not x107) (not x194))
+(or (not x463) x43)
+(or (not x463) (not x43) x67)
+(or x463 (not x43) (not x67) (not x68))
+(or (not x463) (not x43) (not x67) x68)
+(or (not x1117) x1114 x1115)
+(or x1117 (not x1114) x1115)
+(or x1117 x1114 (not x1115))
+(or (not x1117) (not x1114) (not x1115))
+(or (not x1309) x47 x56)
+(or x1309 (not x47) x56)
+(or x1309 x47 (not x56))
+(or (not x1309) (not x47) (not x56))
+(or (not x764) x262 x519)
+(or x764 (not x262) x519)
+(or x764 x262 (not x519))
+(or (not x764) (not x262) (not x519))
+(or (not x371) x82)
+(or (not x371) (not x82) x83)
+(or x371 (not x82) (not x83) (not x84))
+(or (not x371) (not x82) (not x83) x84)
+(or (not x541) x13 x40)
+(or x541 (not x13) x40)
+(or x541 x13 (not x40))
+(or (not x541) (not x13) (not x40))
+(or (not x943) x120 x179)
+(or x943 (not x120) x179)
+(or x943 x120 (not x179))
+(or (not x943) (not x120) (not x179))
+(or (not x1092) x299 x387)
+(or x1092 (not x299) x387)
+(or x1092 x299 (not x387))
+(or (not x1092) (not x299) (not x387))
+(or (not x1009) x356 x357)
+(or x1009 (not x356) x357)
+(or x1009 x356 (not x357))
+(or (not x1009) (not x356) (not x357))
+(or (not x949) x322 x323)
+(or x949 (not x322) x323)
+(or x949 x322 (not x323))
+(or (not x949) (not x322) (not x323))
+(or (not x760) x103 x115)
+(or x760 (not x103) x115)
+(or x760 x103 (not x115))
+(or (not x760) (not x103) (not x115))
+(or (not x187) x82)
+(or (not x187) (not x82) x83)
+(or x187 (not x82) (not x83))
+(or (not x631) x132 x190)
+(or x631 (not x132) x190)
+(or x631 x132 (not x190))
+(or (not x631) (not x132) (not x190))
+(or (not x411) x76)
+(or (not x411) (not x76) x77)
+(or x411 (not x76) (not x77) (not x79))
+(or (not x411) (not x76) (not x77) x79)
+(or (not x670) x121 x133)
+(or x670 (not x121) x133)
+(or x670 x121 (not x133))
+(or (not x670) (not x121) (not x133))
+(or (not x1333) x466 x467)
+(or x1333 (not x466) x467)
+(or x1333 x466 (not x467))
+(or (not x1333) (not x466) (not x467))
+(or (not x845) x132 x181)
+(or x845 (not x132) x181)
+(or x845 x132 (not x181))
+(or (not x845) (not x132) (not x181))
+(or (not x549) x9 x36)
+(or x549 (not x9) x36)
+(or x549 x9 (not x36))
+(or (not x549) (not x9) (not x36))
+(or (not x410) x76)
+(or (not x410) (not x76) x77)
+(or x410 (not x76) (not x77) (not x78))
+(or (not x410) (not x76) (not x77) x78)
+(or (not x535) x16 x43)
+(or x535 (not x16) x43)
+(or x535 x16 (not x43))
+(or (not x535) (not x16) (not x43))
+(or (not x184) x85)
+(or (not x184) (not x85) x86)
+(or x184 (not x85) (not x86))
+(or (not x1246) x101 x137)
+(or x1246 (not x101) x137)
+(or x1246 x101 (not x137))
+(or (not x1246) (not x101) (not x137))
+(or (not x789) x113 x140)
+(or x789 (not x113) x140)
+(or x789 x113 (not x140))
+(or (not x789) (not x113) (not x140))
+(or (not x245) x42)
+(or (not x245) (not x42) x43)
+(or x245 (not x42) (not x43))
+(or (not x1073) x382 x383)
+(or x1073 (not x382) x383)
+(or x1073 x382 (not x383))
+(or (not x1073) (not x382) (not x383))
+(or (not x757) x257 x258)
+(or x757 (not x257) x258)
+(or x757 x257 (not x258))
+(or (not x757) (not x257) (not x258))
+(or (not x1361) x473 x474)
+(or x1361 (not x473) x474)
+(or x1361 x473 (not x474))
+(or (not x1361) (not x473) (not x474))
+(or (not x605) x8 x77)
+(or x605 (not x8) x77)
+(or x605 x8 (not x77))
+(or (not x605) (not x8) (not x77))
+(or (not x189) x80)
+(or (not x189) (not x80) x81)
+(or x189 (not x80) (not x81))
+(or (not x282) x105)
+(or (not x282) (not x105) x106)
+(or x282 (not x105) (not x106))
+(or (not x293) x18)
+(or (not x293) (not x18) x19)
+(or x293 (not x18) (not x19))
+(or (not x945) x940 x941)
+(or x945 (not x940) x941)
+(or x945 x940 (not x941))
+(or (not x945) (not x940) (not x941))
+(or (not x1005) x22 x46)
+(or x1005 (not x22) x46)
+(or x1005 x22 (not x46))
+(or (not x1005) (not x22) (not x46))
+(or (not x568) x96 x111)
+(or x568 (not x96) x111)
+(or x568 x96 (not x111))
+(or (not x568) (not x96) (not x111))
+(or (not x899) x897 x898)
+(or x899 (not x897) x898)
+(or x899 x897 (not x898))
+(or (not x899) (not x897) (not x898))
+(or (not x741) x739 x740)
+(or x741 (not x739) x740)
+(or x741 x739 (not x740))
+(or (not x741) (not x739) (not x740))
+(or (not x770) x264 x521)
+(or x770 (not x264) x521)
+(or x770 x264 (not x521))
+(or (not x770) (not x264) (not x521))
+(or (not x399) x78)
+(or (not x399) (not x78) x79)
+(or x399 (not x78) (not x79) (not x81))
+(or (not x399) (not x78) (not x79) x81)
+(or (not x611) x196 x610)
+(or x611 (not x196) x610)
+(or x611 x196 (not x610))
+(or (not x611) (not x196) (not x610))
+(or (not x1419) x1411 x936)
+(or x1419 (not x1411) x936)
+(or x1419 x1411 (not x936))
+(or (not x1419) (not x1411) (not x936))
+(or (not x431) x47)
+(or (not x431) (not x47) x75)
+(or x431 (not x47) (not x75))
+(or (not x491) x45 x72)
+(or x491 (not x45) x72)
+(or x491 x45 (not x72))
+(or (not x491) (not x45) (not x72))
+(or (not x449) x44)
+(or (not x449) (not x44) x72)
+(or x449 (not x44) (not x72))
+(or (not x696) x694 x695)
+(or x696 (not x694) x695)
+(or x696 x694 (not x695))
+(or (not x696) (not x694) (not x695))
+(or (not x893) x888 x889)
+(or x893 (not x888) x889)
+(or x893 x888 (not x889))
+(or (not x893) (not x888) (not x889))
+(or (not x505) x31 x58)
+(or x505 (not x31) x58)
+(or x505 x31 (not x58))
+(or (not x505) (not x31) (not x58))
+(or (not x448) x44)
+(or (not x448) (not x44) x70)
+(or x448 (not x44) (not x70) (not x71))
+(or (not x448) (not x44) (not x70) x71)
+(or (not x1213) x433 x434)
+(or x1213 (not x433) x434)
+(or x1213 x433 (not x434))
+(or (not x1213) (not x433) (not x434))
+(or (not x1118) x15 x39)
+(or x1118 (not x15) x39)
+(or x1118 x15 (not x39))
+(or (not x1118) (not x15) (not x39))
+(or (not x527) x20 x47)
+(or x527 (not x20) x47)
+(or x527 x20 (not x47))
+(or (not x527) (not x20) (not x47))
+(or (not x320) x65)
+(or (not x320) (not x65) x91)
+(or x320 (not x65) (not x91))
+(or (not x645) x126 x138)
+(or x645 (not x126) x138)
+(or x645 x126 (not x138))
+(or (not x645) (not x126) (not x138))
+(or (not x879) x874 x875)
+(or x879 (not x874) x875)
+(or x879 x874 (not x875))
+(or (not x879) (not x874) (not x875))
+(or (not x1003) x1001 x1002)
+(or x1003 (not x1001) x1002)
+(or x1003 x1001 (not x1002))
+(or (not x1003) (not x1001) (not x1002))
+(or (not x475) x41)
+(or (not x475) (not x41) x65)
+(or x475 (not x41) (not x65) (not x66))
+(or (not x475) (not x41) (not x65) x66)
+(or (not x530) x115 x130)
+(or x530 (not x115) x130)
+(or x530 x115 (not x130))
+(or (not x530) (not x115) (not x130))
+(or (not x1347) x204 x217)
+(or x1347 (not x204) x217)
+(or x1347 x204 (not x217))
+(or (not x1347) (not x204) (not x217))
+(or (not x276) x108)
+(or (not x276) (not x108) x109)
+(or x276 (not x108) (not x109))
+(or (not x1304) x1298 x1299)
+(or x1304 (not x1298) x1299)
+(or x1304 x1298 (not x1299))
+(or (not x1304) (not x1298) (not x1299))
+(or (not x342) x62)
+(or (not x342) (not x62) x86)
+(or x342 (not x62) (not x86) (not x87))
+(or (not x342) (not x62) (not x86) x87)
+(or (not x798) x97 x109)
+(or x798 (not x97) x109)
+(or x798 x97 (not x109))
+(or (not x798) (not x97) (not x109))
+(or (not x408) x52)
+(or (not x408) (not x52) x78)
+(or x408 (not x52) (not x78))
+(or (not x648) x645 x646)
+(or x648 (not x645) x646)
+(or x648 x645 (not x646))
+(or (not x648) (not x645) (not x646))
+(or (not x309) x11)
+(or (not x309) (not x11) x12)
+(or x309 (not x11) (not x12))
+(or (not x1017) x1014 x1015)
+(or x1017 (not x1014) x1015)
+(or x1017 x1014 (not x1015))
+(or (not x1017) (not x1014) (not x1015))
+(or (not x508) x126 x141)
+(or x508 (not x126) x141)
+(or x508 x126 (not x141))
+(or (not x508) (not x126) (not x141))
+(or (not x283) x23)
+(or (not x283) (not x23) x24)
+(or x283 (not x23) (not x24))
+(or (not x1360) x39 x41)
+(or x1360 (not x39) x41)
+(or x1360 x39 (not x41))
+(or (not x1360) (not x39) (not x41))
+(or (not x239) x45)
+(or (not x239) (not x45) x46)
+(or x239 (not x45) (not x46))
+(or (not x305) x12)
+(or (not x305) (not x12) x13)
+(or x305 (not x12) (not x13))
+(or (not x1044) x62 x71)
+(or x1044 (not x62) x71)
+(or x1044 x62 (not x71))
+(or (not x1044) (not x62) (not x71))
+(or (not x404) x77)
+(or (not x404) (not x77) x78)
+(or x404 (not x77) (not x78) (not x79))
+(or (not x404) (not x77) (not x78) x79)
+(or (not x859) x130 x183)
+(or x859 (not x130) x183)
+(or x859 x130 (not x183))
+(or (not x859) (not x130) (not x183))
+(or (not x956) x119 x182)
+(or x956 (not x119) x182)
+(or x956 x119 (not x182))
+(or (not x956) (not x119) (not x182))
+(or (not x414) x51)
+(or (not x414) (not x51) x77)
+(or x414 (not x51) (not x77))
+(or (not x1116) x1108 x1109)
+(or x1116 (not x1108) x1109)
+(or x1116 x1108 (not x1109))
+(or (not x1116) (not x1108) (not x1109))
+(or (not x1172) x208 x231)
+(or x1172 (not x208) x231)
+(or x1172 x208 (not x231))
+(or (not x1172) (not x208) (not x231))
+(or (not x960) x956 x957)
+(or x960 (not x956) x957)
+(or x960 x956 (not x957))
+(or (not x960) (not x956) (not x957))
+(or (not x203) x66)
+(or (not x203) (not x66) x67)
+(or x203 (not x66) (not x67))
+(or (not x261) x34)
+(or (not x261) (not x34) x35)
+(or x261 (not x34) (not x35))
+(or (not x1399) x178 x201)
+(or x1399 (not x178) x201)
+(or x1399 x178 (not x201))
+(or (not x1399) (not x178) (not x201))
+(or (not x241) x44)
+(or (not x241) (not x44) x45)
+(or x241 (not x44) (not x45))
+(or (not x1364) x55 x66)
+(or x1364 (not x55) x66)
+(or x1364 x55 (not x66))
+(or (not x1364) (not x55) (not x66))
+(or (not x1272) x1270 x1271)
+(or x1272 (not x1270) x1271)
+(or x1272 x1270 (not x1271))
+(or (not x1272) (not x1270) (not x1271))
+(or (not x228) x132)
+(or (not x228) (not x132) x133)
+(or x228 (not x132) (not x133))
+(or (not x1109) x399 x1101)
+(or x1109 (not x399) x1101)
+(or x1109 x399 (not x1101))
+(or (not x1109) (not x399) (not x1101))
+(or (not x638) x128 x140)
+(or x638 (not x128) x140)
+(or x638 x128 (not x140))
+(or (not x638) (not x128) (not x140))
+(or (not x488) x63)
+(or (not x488) (not x63) x64)
+(or x488 (not x63) (not x64) (not x65))
+(or (not x488) (not x63) (not x64) x65)
+(or (not x314) x90)
+(or (not x314) (not x90) x91)
+(or x314 (not x90) (not x91) (not x92))
+(or (not x314) (not x90) (not x91) x92)
+(or (not x451) x45)
+(or (not x451) (not x45) x69)
+(or x451 (not x45) (not x69) (not x70))
+(or (not x451) (not x45) (not x69) x70)
+(or (not x1102) x109 x190)
+(or x1102 (not x109) x190)
+(or x1102 x109 (not x190))
+(or (not x1102) (not x109) (not x190))
+(or (not x1075) x1073 x1074)
+(or x1075 (not x1073) x1074)
+(or x1075 x1073 (not x1074))
+(or (not x1075) (not x1073) (not x1074))
+(or (not x378) x81)
+(or (not x378) (not x81) x82)
+(or x378 (not x81) (not x82) (not x83))
+(or (not x378) (not x81) (not x82) x83)
+(or (not x563) x2 x29)
+(or x563 (not x2) x29)
+(or x563 x2 (not x29))
+(or (not x563) (not x2) (not x29))
+(or (not x587) x17 x86)
+(or x587 (not x17) x86)
+(or x587 x17 (not x86))
+(or (not x587) (not x17) (not x86))
+(or (not x300) x96)
+(or (not x300) (not x96) x97)
+(or x300 (not x96) (not x97))
+(or (not x993) x287 x345)
+(or x993 (not x287) x345)
+(or x993 x287 (not x345))
+(or (not x993) (not x287) (not x345))
+(or (not x1162) x1157 x1158)
+(or x1162 (not x1157) x1158)
+(or x1162 x1157 (not x1158))
+(or (not x1162) (not x1157) (not x1158))
+(or (not x523) x22 x49)
+(or x523 (not x22) x49)
+(or x523 x22 (not x49))
+(or (not x523) (not x22) (not x49))
+(or (not x668) x136 x201)
+(or x668 (not x136) x201)
+(or x668 x136 (not x201))
+(or (not x668) (not x136) (not x201))
+(or (not x1209) x435 x1205)
+(or x1209 (not x435) x1205)
+(or x1209 x435 (not x1205))
+(or (not x1209) (not x435) (not x1205))
+(or (not x178) x91)
+(or (not x178) (not x91) x92)
+(or x178 (not x91) (not x92))
+(or (not x315) x90)
+(or (not x315) (not x90) x91)
+(or x315 (not x90) (not x91) (not x93))
+(or (not x315) (not x90) (not x91) x93)
+(or (not x778) x523 x775)
+(or x778 (not x523) x775)
+(or x778 x523 (not x775))
+(or (not x778) (not x523) (not x775))
+(or (not x1221) x1211 x1212)
+(or x1221 (not x1211) x1212)
+(or x1221 x1211 (not x1212))
+(or (not x1221) (not x1211) (not x1212))
+(or (not x788) x783 x784)
+(or x788 (not x783) x784)
+(or x788 x783 (not x784))
+(or (not x788) (not x783) (not x784))
+(or (not x614) x197 x613)
+(or x614 (not x197) x613)
+(or x614 x197 (not x613))
+(or (not x614) (not x197) (not x613))
+(or (not x730) x109 x121)
+(or x730 (not x109) x121)
+(or x730 x109 (not x121))
+(or (not x730) (not x109) (not x121))
+(or (not x623) x200 x622)
+(or x623 (not x200) x622)
+(or x623 x200 (not x622))
+(or (not x623) (not x200) (not x622))
+(or (not x1093) x1085 x1086)
+(or x1093 (not x1085) x1086)
+(or x1093 x1085 (not x1086))
+(or (not x1093) (not x1085) (not x1086))
+(or (not x533) x17 x44)
+(or x533 (not x17) x44)
+(or x533 x17 (not x44))
+(or (not x533) (not x17) (not x44))
+(or (not x637) x142 x193)
+(or x637 (not x142) x193)
+(or x637 x142 (not x193))
+(or (not x637) (not x142) (not x193))
+(or (not x880) x127 x186)
+(or x880 (not x127) x186)
+(or x880 x127 (not x186))
+(or (not x880) (not x127) (not x186))
+(or (not x1281) x1277 x1278)
+(or x1281 (not x1277) x1278)
+(or x1281 x1277 (not x1278))
+(or (not x1281) (not x1277) (not x1278))
+(or (not x992) x185 x197)
+(or x992 (not x185) x197)
+(or x992 x185 (not x197))
+(or (not x992) (not x185) (not x197))
+(or (not x841) x541 x838)
+(or x841 (not x541) x838)
+(or x841 x541 (not x838))
+(or (not x841) (not x541) (not x838))
+(or (not x489) x63)
+(or (not x489) (not x63) x64)
+(or x489 (not x63) (not x64) (not x66))
+(or (not x489) (not x63) (not x64) x66)
+(or (not x370) x58)
+(or (not x370) (not x58) x82)
+(or x370 (not x58) (not x82) (not x83))
+(or (not x370) (not x58) (not x82) x83)
+(or (not x452) x69)
+(or (not x452) (not x69) x70)
+(or x452 (not x69) (not x70) (not x71))
+(or (not x452) (not x69) (not x70) x71)
+(or (not x674) x494 x673)
+(or x674 (not x494) x673)
+(or x674 x494 (not x673))
+(or (not x674) (not x494) (not x673))
+(or (not x586) x102 x184)
+(or x586 (not x102) x184)
+(or x586 x102 (not x184))
+(or (not x586) (not x102) (not x184))
+(or (not x361) x58)
+(or (not x361) (not x58) x86)
+(or x361 (not x58) (not x86))
+(or (not x1374) x95 x131)
+(or x1374 (not x95) x131)
+(or x1374 x95 (not x131))
+(or (not x1374) (not x95) (not x131))
+(or (not x238) x127)
+(or (not x238) (not x127) x128)
+(or x238 (not x127) (not x128))
+(or (not x900) x895 x896)
+(or x900 (not x895) x896)
+(or x900 x895 (not x896))
+(or (not x900) (not x895) (not x896))
+(or (not x1020) x1012 x1013)
+(or x1020 (not x1012) x1013)
+(or x1020 x1012 (not x1013))
+(or (not x1020) (not x1012) (not x1013))
+(or (not x453) x69)
+(or (not x453) (not x69) x70)
+(or x453 (not x69) (not x70) (not x72))
+(or (not x453) (not x69) (not x70) x72)
+(or (not x1226) x208 x213)
+(or x1226 (not x208) x213)
+(or x1226 x208 (not x213))
+(or (not x1226) (not x208) (not x213))
+(or (not x1163) x1161 x1162)
+(or x1163 (not x1161) x1162)
+(or x1163 x1161 (not x1162))
+(or (not x1163) (not x1161) (not x1162))
+(or (not x498) x38 x65)
+(or x498 (not x38) x65)
+(or x498 x38 (not x65))
+(or (not x498) (not x38) (not x65))
+(or (not x684) x496 x683)
+(or x684 (not x496) x683)
+(or x684 x496 (not x683))
+(or (not x684) (not x496) (not x683))
+(or (not x889) x96 x99)
+(or x889 (not x96) x99)
+(or x889 x96 (not x99))
+(or (not x889) (not x96) (not x99))
+(or (not x1257) x446 x447)
+(or x1257 (not x446) x447)
+(or x1257 x446 (not x447))
+(or (not x1257) (not x446) (not x447))
+(or (not x602) x94 x192)
+(or x602 (not x94) x192)
+(or x602 x94 (not x192))
+(or (not x602) (not x94) (not x192))
+(or (not x1190) x425 x426)
+(or x1190 (not x425) x426)
+(or x1190 x425 (not x426))
+(or (not x1190) (not x425) (not x426))
+(or (not x842) x230 x253)
+(or x842 (not x230) x253)
+(or x842 x230 (not x253))
+(or (not x842) (not x230) (not x253))
+(or (not x910) x96 x123)
+(or x910 (not x96) x123)
+(or x910 x96 (not x123))
+(or (not x910) (not x96) (not x123))
+(or (not x944) x318 x319)
+(or x944 (not x318) x319)
+(or x944 x318 (not x319))
+(or (not x944) (not x318) (not x319))
+(or (not x1041) x368 x369)
+(or x1041 (not x368) x369)
+(or x1041 x368 (not x369))
+(or (not x1041) (not x368) (not x369))
+(or (not x1010) x1006 x1007)
+(or x1010 (not x1006) x1007)
+(or x1010 x1006 (not x1007))
+(or (not x1010) (not x1006) (not x1007))
+(or (not x1346) x1344 x1345)
+(or x1346 (not x1344) x1345)
+(or x1346 x1344 (not x1345))
+(or (not x1346) (not x1344) (not x1345))
+(or (not x824) x135 x178)
+(or x824 (not x135) x178)
+(or x824 x135 (not x178))
+(or (not x824) (not x135) (not x178))
+(or (not x756) x754 x755)
+(or x756 (not x754) x755)
+(or x756 x754 (not x755))
+(or (not x756) (not x754) (not x755))
+(or (not x622) x2 x71)
+(or x622 (not x2) x71)
+(or x622 x2 (not x71))
+(or (not x622) (not x2) (not x71))
+(or (not x675) x120 x132)
+(or x675 (not x120) x132)
+(or x675 x120 (not x132))
+(or (not x675) (not x120) (not x132))
+(or (not x628) x135 x187)
+(or x628 (not x135) x187)
+(or x628 x135 (not x187))
+(or (not x628) (not x135) (not x187))
+(or (not x1397) x43 x52)
+(or x1397 (not x43) x52)
+(or x1397 x43 (not x52))
+(or (not x1397) (not x43) (not x52))
+(or (not x1180) x196 x205)
+(or x1180 (not x196) x205)
+(or x1180 x196 (not x205))
+(or (not x1180) (not x196) (not x205))
+(or (not x1326) x1324 x1325)
+(or x1326 (not x1324) x1325)
+(or x1326 x1324 (not x1325))
+(or (not x1326) (not x1324) (not x1325))
+(or (not x1255) x1252 x1232)
+(or x1255 (not x1252) x1232)
+(or x1255 x1252 (not x1232))
+(or (not x1255) (not x1252) (not x1232))
+(or (not x1115) x1112 x1113)
+(or x1115 (not x1112) x1113)
+(or x1115 x1112 (not x1113))
+(or (not x1115) (not x1112) (not x1113))
+(or (not x474) x41)
+(or (not x474) (not x41) x67)
+(or x474 (not x41) (not x67))
+(or (not x458) x68)
+(or (not x458) (not x68) x69)
+(or x458 (not x68) (not x69) (not x70))
+(or (not x458) (not x68) (not x69) x70)
+(or (not x1259) x1257 x1258)
+(or x1259 (not x1257) x1258)
+(or x1259 x1257 (not x1258))
+(or (not x1259) (not x1257) (not x1258))
+(or (not x540) x110 x125)
+(or x540 (not x110) x125)
+(or x540 x110 (not x125))
+(or (not x540) (not x110) (not x125))
+(or (not x180) x89)
+(or (not x180) (not x89) x90)
+(or x180 (not x89) (not x90))
+(or (not x1320) x58 x68)
+(or x1320 (not x58) x68)
+(or x1320 x58 (not x68))
+(or (not x1320) (not x58) (not x68))
+(or (not x1154) x194 x195)
+(or x1154 (not x194) x195)
+(or x1154 x194 (not x195))
+(or (not x1154) (not x194) (not x195))
+(or (not x603) x9 x78)
+(or x603 (not x9) x78)
+(or x603 x9 (not x78))
+(or (not x603) (not x9) (not x78))
+(or (not x996) x116 x184)
+(or x996 (not x116) x184)
+(or x996 x116 (not x184))
+(or (not x996) (not x116) (not x184))
+(or (not x538) x111 x126)
+(or x538 (not x111) x126)
+(or x538 x111 (not x126))
+(or (not x538) (not x111) (not x126))
+(or (not x1283) x1281 x1282)
+(or x1283 (not x1281) x1282)
+(or x1283 x1281 (not x1282))
+(or (not x1283) (not x1281) (not x1282))
+(or (not x592) x99 x187)
+(or x592 (not x99) x187)
+(or x592 x99 (not x187))
+(or (not x592) (not x99) (not x187))
+(or (not x1120) x202 x205)
+(or x1120 (not x202) x205)
+(or x1120 x202 (not x205))
+(or (not x1120) (not x202) (not x205))
+(or (not x1139) x409 x410)
+(or x1139 (not x409) x410)
+(or x1139 x409 (not x410))
+(or (not x1139) (not x409) (not x410))
+(or (not x497) x39 x66)
+(or x497 (not x39) x66)
+(or x497 x39 (not x66))
+(or (not x497) (not x39) (not x66))
+(or (not x485) x38)
+(or (not x485) (not x38) x66)
+(or x485 (not x38) (not x66))
+(or (not x1095) x191 x203)
+(or x1095 (not x191) x203)
+(or x1095 x191 (not x203))
+(or (not x1095) (not x191) (not x203))
+(or (not x476) x65)
+(or (not x476) (not x65) x66)
+(or x476 (not x65) (not x66) (not x67))
+(or (not x476) (not x65) (not x66) x67)
+(or (not x194) x75)
+(or (not x194) (not x75) x76)
+(or x194 (not x75) (not x76))
+(or (not x1152) x13 x37)
+(or x1152 (not x13) x37)
+(or x1152 x13 (not x37))
+(or (not x1152) (not x13) (not x37))
+(or (not x1142) x227 x282)
+(or x1142 (not x227) x282)
+(or x1142 x227 (not x282))
+(or (not x1142) (not x227) (not x282))
+(or (not x525) x21 x48)
+(or x525 (not x21) x48)
+(or x525 x21 (not x48))
+(or (not x525) (not x21) (not x48))
+(or (not x664) x492 x663)
+(or x664 (not x492) x663)
+(or x664 x492 (not x663))
+(or (not x664) (not x492) (not x663))
+(or (not x1158) x1155 x1156)
+(or x1158 (not x1155) x1156)
+(or x1158 x1155 (not x1156))
+(or (not x1158) (not x1155) (not x1156))
+(or (not x208) x61)
+(or (not x208) (not x61) x62)
+(or x208 (not x61) (not x62))
+(or (not x340) x61)
+(or (not x340) (not x61) x89)
+(or x340 (not x61) (not x89))
+(or (not x270) x111)
+(or (not x270) (not x111) x112)
+(or x270 (not x111) (not x112))
+(or (not x940) x279 x317)
+(or x940 (not x279) x317)
+(or x940 x279 (not x317))
+(or (not x940) (not x279) (not x317))
+(or (not x1407) x484 x485)
+(or x1407 (not x484) x485)
+(or x1407 x484 (not x485))
+(or (not x1407) (not x484) (not x485))
+(or (not x1198) x140 x195)
+(or x1198 (not x140) x195)
+(or x1198 x140 (not x195))
+(or (not x1198) (not x140) (not x195))
+(or (not x621) x138 x184)
+(or x621 (not x138) x184)
+(or x621 x138 (not x184))
+(or (not x621) (not x138) (not x184))
+(or (not x1097) x1095 x1096)
+(or x1097 (not x1095) x1096)
+(or x1097 x1095 (not x1096))
+(or (not x1097) (not x1095) (not x1096))
+(or (not x784) x99 x111)
+(or x784 (not x99) x111)
+(or x784 x99 (not x111))
+(or (not x784) (not x99) (not x111))
+(or (not x1129) x1121 x1122)
+(or x1129 (not x1121) x1122)
+(or x1129 x1121 (not x1122))
+(or (not x1129) (not x1121) (not x1122))
+(or (not x524) x118 x133)
+(or x524 (not x118) x133)
+(or x524 x118 (not x133))
+(or (not x524) (not x118) (not x133))
+(or (not x267) x31)
+(or (not x267) (not x31) x32)
+(or x267 (not x31) (not x32))
+(or (not x236) x128)
+(or (not x236) (not x128) x129)
+(or x236 (not x128) (not x129))
+(or (not x700) x115 x127)
+(or x700 (not x115) x127)
+(or x700 x115 (not x127))
+(or (not x700) (not x115) (not x127))
+(or (not x493) x43 x70)
+(or x493 (not x43) x70)
+(or x493 x43 (not x70))
+(or (not x493) (not x43) (not x70))
+(or (not x461) x42)
+(or (not x461) (not x42) x70)
+(or x461 (not x42) (not x70))
+(or (not x777) x100 x112)
+(or x777 (not x100) x112)
+(or x777 x100 (not x112))
+(or (not x777) (not x100) (not x112))
+(or (not x1330) x67 x68)
+(or x1330 (not x67) x68)
+(or x1330 x67 (not x68))
+(or (not x1330) (not x67) (not x68))
+(or (not x518) x121 x136)
+(or x518 (not x121) x136)
+(or x518 x121 (not x136))
+(or (not x518) (not x121) (not x136))
+(or (not x691) x689 x690)
+(or x691 (not x689) x690)
+(or x691 x689 (not x690))
+(or (not x691) (not x689) (not x690))
+(or (not x827) x537 x824)
+(or x827 (not x537) x824)
+(or x827 x537 (not x824))
+(or (not x827) (not x537) (not x824))
+(or (not x1380) x1378 x1379)
+(or x1380 (not x1378) x1379)
+(or x1380 x1378 (not x1379))
+(or (not x1380) (not x1378) (not x1379))
+(or (not x302) x95)
+(or (not x302) (not x95) x96)
+(or x302 (not x95) (not x96))
+(or (not x345) x6)
+(or (not x345) (not x6) x7)
+(or x345 (not x6) (not x7))
+(or (not x1159) x55 x64)
+(or x1159 (not x55) x64)
+(or x1159 x55 (not x64))
+(or (not x1159) (not x55) (not x64))
+(or (not x924) x178 x180)
+(or x924 (not x178) x180)
+(or x924 x178 (not x180))
+(or (not x924) (not x178) (not x180))
+(or (not x1018) x354 x355)
+(or x1018 (not x354) x355)
+(or x1018 x354 (not x355))
+(or (not x1018) (not x354) (not x355))
+(or (not x589) x16 x85)
+(or x589 (not x16) x85)
+(or x589 x16 (not x85))
+(or (not x589) (not x16) (not x85))
+(or (not x247) x41)
+(or (not x247) (not x41) x42)
+(or x247 (not x41) (not x42))
+(or (not x1317) x461 x462)
+(or x1317 (not x461) x462)
+(or x1317 x461 (not x462))
+(or (not x1317) (not x461) (not x462))
+(or (not x559) x4 x31)
+(or x559 (not x4) x31)
+(or x559 x4 (not x31))
+(or (not x559) (not x4) (not x31))
+(or (not x1023) x114 x185)
+(or x1023 (not x114) x185)
+(or x1023 x114 (not x185))
+(or (not x1023) (not x114) (not x185))
+(or (not x240) x126)
+(or (not x240) (not x126) x127)
+(or x240 (not x126) (not x127))
+(or (not x1083) x1081 x1082)
+(or x1083 (not x1081) x1082)
+(or x1083 x1081 (not x1082))
+(or (not x1083) (not x1081) (not x1082))
+(or (not x312) x66)
+(or (not x312) (not x66) x92)
+(or x312 (not x66) (not x92))
+(or (not x393) x79)
+(or (not x393) (not x79) x80)
+(or x393 (not x79) (not x80) (not x82))
+(or (not x393) (not x79) (not x80) x82)
+(or (not x484) x38)
+(or (not x484) (not x38) x64)
+(or x484 (not x38) (not x64) (not x65))
+(or (not x484) (not x38) (not x64) x65)
+(or (not x835) x228 x251)
+(or x835 (not x228) x251)
+(or x835 x228 (not x251))
+(or (not x835) (not x228) (not x251))
+(or (not x1324) x1320 x1321)
+(or x1324 (not x1320) x1321)
+(or x1324 x1320 (not x1321))
+(or (not x1324) (not x1320) (not x1321))
+(or (not x1302) x1300 x1301)
+(or x1302 (not x1300) x1301)
+(or x1302 x1300 (not x1301))
+(or (not x1302) (not x1300) (not x1301))
+(or (not x1200) x1197 x1198)
+(or x1200 (not x1197) x1198)
+(or x1200 x1197 (not x1198))
+(or (not x1200) (not x1197) (not x1198))
+(or (not x1264) x1259 x1260)
+(or x1264 (not x1259) x1260)
+(or x1264 x1259 (not x1260))
+(or (not x1264) (not x1259) (not x1260))
+(or (not x752) x255 x256)
+(or x752 (not x255) x256)
+(or x752 x255 (not x256))
+(or (not x752) (not x255) (not x256))
+(or (not x322) x89)
+(or (not x322) (not x89) x90)
+(or x322 (not x89) (not x90) (not x91))
+(or (not x322) (not x89) (not x90) x91)
+(or (not x416) x75)
+(or (not x416) (not x75) x76)
+(or x416 (not x75) (not x76) (not x77))
+(or (not x416) (not x75) (not x76) x77)
+(or (not x855) x545 x852)
+(or x855 (not x545) x852)
+(or x855 x545 (not x852))
+(or (not x855) (not x545) (not x852))
+(or (not x258) x117)
+(or (not x258) (not x117) x118)
+(or x258 (not x117) (not x118))
+(or (not x974) x336 x337)
+(or x974 (not x336) x337)
+(or x974 x336 (not x337))
+(or (not x974) (not x336) (not x337))
+(or (not x1229) x1224 x1225)
+(or x1229 (not x1224) x1225)
+(or x1229 x1224 (not x1225))
+(or (not x1229) (not x1224) (not x1225))
+(or (not x938) x931 x932)
+(or x938 (not x931) x932)
+(or x938 x931 (not x932))
+(or (not x938) (not x931) (not x932))
+(or (not x813) x533 x810)
+(or x813 (not x533) x810)
+(or x813 x533 (not x810))
+(or (not x813) (not x533) (not x810))
+(or (not x253) x38)
+(or (not x253) (not x38) x39)
+(or x253 (not x38) (not x39))
+(or (not x765) x102 x114)
+(or x765 (not x102) x114)
+(or x765 x102 (not x114))
+(or (not x765) (not x102) (not x114))
+(or (not x599) x11 x80)
+(or x599 (not x11) x80)
+(or x599 x11 (not x80))
+(or (not x599) (not x11) (not x80))
+(or (not x895) x299 x300)
+(or x895 (not x299) x300)
+(or x895 x299 (not x300))
+(or (not x895) (not x299) (not x300))
+(or (not x1288) x201 x202)
+(or x1288 (not x201) x202)
+(or x1288 x201 (not x202))
+(or (not x1288) (not x201) (not x202))
+(or (not x381) x55)
+(or (not x381) (not x55) x81)
+(or x381 (not x55) (not x81) (not x82))
+(or (not x381) (not x55) (not x81) x82)
+(or (not x1279) x1275 x1276)
+(or x1279 (not x1275) x1276)
+(or x1279 x1275 (not x1276))
+(or (not x1279) (not x1275) (not x1276))
+(or (not x502) x34 x61)
+(or x502 (not x34) x61)
+(or x502 x34 (not x61))
+(or (not x502) (not x34) (not x61))
+(or (not x618) x139 x183)
+(or x618 (not x139) x183)
+(or x618 x139 (not x183))
+(or (not x618) (not x139) (not x183))
+(or (not x874) x293 x294)
+(or x874 (not x293) x294)
+(or x874 x293 (not x294))
+(or (not x874) (not x293) (not x294))
+(or (not x888) x297 x298)
+(or x888 (not x297) x298)
+(or x888 x297 (not x298))
+(or (not x888) (not x297) (not x298))
+(or (not x1420) x1417 x1418)
+(or x1420 (not x1417) x1418)
+(or x1420 x1417 (not x1418))
+(or (not x1420) (not x1417) (not x1418))
+(or (not x396) x54)
+(or (not x396) (not x54) x80)
+(or x396 (not x54) (not x80))
+(or (not x806) x531 x803)
+(or x806 (not x531) x803)
+(or x806 x531 (not x803))
+(or (not x806) (not x531) (not x803))
+(or (not x832) x281 x282)
+(or x832 (not x281) x282)
+(or x832 x281 (not x282))
+(or (not x832) (not x281) (not x282))
+(or (not x867) x291 x292)
+(or x867 (not x291) x292)
+(or x867 x291 (not x292))
+(or (not x867) (not x291) (not x292))
+(or (not x1064) x1056 x1057)
+(or x1064 (not x1056) x1057)
+(or x1064 x1056 (not x1057))
+(or (not x1064) (not x1056) (not x1057))
+(or (not x950) x948 x949)
+(or x950 (not x948) x949)
+(or x950 x948 (not x949))
+(or (not x950) (not x948) (not x949))
+(or (not x442) x45)
+(or (not x442) (not x45) x71)
+(or x442 (not x45) (not x71) (not x72))
+(or (not x442) (not x45) (not x71) x72)
+(or (not x1228) x439 x440)
+(or x1228 (not x439) x440)
+(or x1228 x439 (not x440))
+(or (not x1228) (not x439) (not x440))
+(or (not x285) x22)
+(or (not x285) (not x22) x23)
+(or x285 (not x22) (not x23))
+(or (not x598) x96 x190)
+(or x598 (not x96) x190)
+(or x598 x96 (not x190))
+(or (not x598) (not x96) (not x190))
+(or (not x990) x985 x986)
+(or x990 (not x985) x986)
+(or x990 x985 (not x986))
+(or (not x990) (not x985) (not x986))
+(or (not x1245) x50 x59)
+(or x1245 (not x50) x59)
+(or x1245 x50 (not x59))
+(or (not x1245) (not x50) (not x59))
+(or (not x246) x123)
+(or (not x246) (not x123) x124)
+(or x246 (not x123) (not x124))
+(or (not x402) x53)
+(or (not x402) (not x53) x79)
+(or x402 (not x53) (not x79))
+(or (not x313) x66)
+(or (not x313) (not x66) x90)
+(or x313 (not x66) (not x90) (not x91))
+(or (not x313) (not x66) (not x90) x91)
+(or (not x205) x64)
+(or (not x205) (not x64) x65)
+(or x205 (not x64) (not x65))
+(or (not x369) x58)
+(or (not x369) (not x58) x84)
+(or x369 (not x58) (not x84))
+(or (not x1368) x1364 x1365)
+(or x1368 (not x1364) x1365)
+(or x1368 x1364 (not x1365))
+(or (not x1368) (not x1364) (not x1365))
+(or (not x1358) x1353 x1354)
+(or x1358 (not x1353) x1354)
+(or x1358 x1353 (not x1354))
+(or (not x1358) (not x1353) (not x1354))
+(or (not x546) x107 x122)
+(or x546 (not x107) x122)
+(or x546 x107 (not x122))
+(or (not x546) (not x107) (not x122))
+(or (not x750) x105 x117)
+(or x750 (not x105) x117)
+(or x750 x105 (not x117))
+(or (not x750) (not x105) (not x117))
+(or (not x501) x35 x62)
+(or x501 (not x35) x62)
+(or x501 x35 (not x62))
+(or (not x501) (not x35) (not x62))
+(or (not x917) x563 x915)
+(or x917 (not x563) x915)
+(or x917 x563 (not x915))
+(or (not x917) (not x563) (not x915))
+(or (not x294) x99)
+(or (not x294) (not x99) x100)
+(or x294 (not x99) (not x100))
+(or (not x1383) x308 x387)
+(or x1383 (not x308) x387)
+(or x1383 x308 (not x387))
+(or (not x1383) (not x308) (not x387))
+(or (not x1124) x57 x66)
+(or x1124 (not x57) x66)
+(or x1124 x57 (not x66))
+(or (not x1124) (not x57) (not x66))
+(or (not x967) x571 x964)
+(or x967 (not x571) x964)
+(or x967 x571 (not x964))
+(or (not x967) (not x571) (not x964))
+(or (not x1100) x1093 x1094)
+(or x1100 (not x1093) x1094)
+(or x1100 x1093 (not x1094))
+(or (not x1100) (not x1093) (not x1094))
+(or (not x934) x927 x928)
+(or x934 (not x927) x928)
+(or x934 x927 (not x928))
+(or (not x934) (not x927) (not x928))
+(or (not x1268) x211 x217)
+(or x1268 (not x211) x217)
+(or x1268 x211 (not x217))
+(or (not x1268) (not x211) (not x217))
+(or (not x928) x925 x926)
+(or x928 (not x925) x926)
+(or x928 x925 (not x926))
+(or (not x928) (not x925) (not x926))
+(or (not x395) x53)
+(or (not x395) (not x53) x81)
+(or x395 (not x53) (not x81))
+(or (not x483) x64)
+(or (not x483) (not x64) x65)
+(or x483 (not x64) (not x65) (not x67))
+(or (not x483) (not x64) (not x65) x67)
+(or (not x655) x124 x136)
+(or x655 (not x124) x136)
+(or x655 x124 (not x136))
+(or (not x655) (not x124) (not x136))
+(or (not x961) x330 x569)
+(or x961 (not x330) x569)
+(or x961 x330 (not x569))
+(or (not x961) (not x330) (not x569))
+(or (not x735) x108 x120)
+(or x735 (not x108) x120)
+(or x735 x108 (not x120))
+(or (not x735) (not x108) (not x120))
+(or (not x905) x248 x271)
+(or x905 (not x248) x271)
+(or x905 x248 (not x271))
+(or (not x905) (not x248) (not x271))
+(or (not x196) x73)
+(or (not x196) (not x73) x74)
+(or x196 (not x73) (not x74))
+(or (not x1205) x10 x34)
+(or x1205 (not x10) x34)
+(or x1205 x10 (not x34))
+(or (not x1205) (not x10) (not x34))
+(or (not x853) x287 x288)
+(or x853 (not x287) x288)
+(or x853 x287 (not x288))
+(or (not x853) (not x287) (not x288))
+(or (not x507) x30 x57)
+(or x507 (not x30) x57)
+(or x507 x30 (not x57))
+(or (not x507) (not x30) (not x57))
+(or (not x231) x49)
+(or (not x231) (not x49) x50)
+(or x231 (not x49) (not x50))
+(or (not x591) x15 x84)
+(or x591 (not x15) x84)
+(or x591 x15 (not x84))
+(or (not x591) (not x15) (not x84))
+(or (not x1046) x1039 x1040)
+(or x1046 (not x1039) x1040)
+(or x1046 x1039 (not x1040))
+(or (not x1046) (not x1039) (not x1040))
+(or (not x686) x684 x685)
+(or x686 (not x684) x685)
+(or x686 x684 (not x685))
+(or (not x686) (not x684) (not x685))
+(or (not x991) x23 x65)
+(or x991 (not x23) x65)
+(or x991 x23 (not x65))
+(or (not x991) (not x23) (not x65))
+(or (not x307) x91)
+(or (not x307) (not x91) x92)
+(or x307 (not x91) (not x92) (not x94))
+(or (not x307) (not x91) (not x92) x94)
+(or (not x627) x136 x186)
+(or x627 (not x136) x186)
+(or x627 x136 (not x186))
+(or (not x627) (not x136) (not x186))
+(or (not x422) x74)
+(or (not x422) (not x74) x75)
+(or x422 (not x74) (not x75) (not x76))
+(or (not x422) (not x74) (not x75) x76)
+(or (not x1235) x1232 x1233)
+(or x1235 (not x1232) x1233)
+(or x1235 x1232 (not x1233))
+(or (not x1235) (not x1232) (not x1233))
+(or (not x1191) x429 x1186)
+(or x1191 (not x429) x1186)
+(or x1191 x429 (not x1186))
+(or (not x1191) (not x429) (not x1186))
+(or (not x417) x75)
+(or (not x417) (not x75) x76)
+(or x417 (not x75) (not x76) (not x78))
+(or (not x417) (not x75) (not x76) x78)
+(or (not x1123) x1119 x1120)
+(or x1123 (not x1119) x1120)
+(or x1123 x1119 (not x1120))
+(or (not x1123) (not x1119) (not x1120))
+(or (not x933) x192 x204)
+(or x933 (not x192) x204)
+(or x933 x192 (not x204))
+(or (not x933) (not x192) (not x204))
+(or (not x292) x100)
+(or (not x292) (not x100) x101)
+(or x292 (not x100) (not x101))
+(or (not x1022) x21 x45)
+(or x1022 (not x21) x45)
+(or x1022 x21 (not x45))
+(or (not x1022) (not x21) (not x45))
+(or (not x392) x79)
+(or (not x392) (not x79) x80)
+(or x392 (not x79) (not x80) (not x81))
+(or (not x392) (not x79) (not x80) x81)
+(or (not x1308) x5 x29)
+(or x1308 (not x5) x29)
+(or x1308 x5 (not x29))
+(or (not x1308) (not x5) (not x29))
+(or (not x1171) x105 x141)
+(or x1171 (not x105) x141)
+(or x1171 x105 (not x141))
+(or (not x1171) (not x105) (not x141))
+(or (not x1277) x60 x70)
+(or x1277 (not x60) x70)
+(or x1277 x60 (not x70))
+(or (not x1277) (not x60) (not x70))
+(or (not x1251) x1248 x1249)
+(or x1251 (not x1248) x1249)
+(or x1251 x1248 (not x1249))
+(or (not x1251) (not x1248) (not x1249))
+(or (not x251) x39)
+(or (not x251) (not x39) x40)
+(or x251 (not x39) (not x40))
+(or (not x209) x60)
+(or (not x209) (not x60) x61)
+(or x209 (not x60) (not x61))
+(or (not x1285) x6 x30)
+(or x1285 (not x6) x30)
+(or x1285 x6 (not x30))
+(or (not x1285) (not x6) (not x30))
+(or (not x212) x140)
+(or (not x212) (not x140) x141)
+(or x212 (not x140) (not x141))
+(or (not x672) x223 x224)
+(or x672 (not x223) x224)
+(or x672 x223 (not x224))
+(or (not x672) (not x223) (not x224))
+(or (not x325) x63)
+(or (not x325) (not x63) x89)
+(or x325 (not x63) (not x89) (not x90))
+(or (not x325) (not x63) (not x89) x90)
+(or (not x372) x82)
+(or (not x372) (not x82) x83)
+(or x372 (not x82) (not x83) (not x85))
+(or (not x372) (not x82) (not x83) x85)
+(or (not x1266) x49 x58)
+(or x1266 (not x49) x58)
+(or x1266 x49 (not x58))
+(or (not x1266) (not x49) (not x58))
+(or (not x1353) x45 x54)
+(or x1353 (not x45) x54)
+(or x1353 x45 (not x54))
+(or (not x1353) (not x45) (not x54))
+(or (not x901) x124 x189)
+(or x901 (not x124) x189)
+(or x901 x124 (not x189))
+(or (not x901) (not x124) (not x189))
+(or (not x1327) x1322 x1323)
+(or x1327 (not x1322) x1323)
+(or x1327 x1322 (not x1323))
+(or (not x1327) (not x1322) (not x1323))
+(or (not x847) x102 x105)
+(or x847 (not x102) x105)
+(or x847 x102 (not x105))
+(or (not x847) (not x102) (not x105))
+(or (not x362) x59)
+(or (not x362) (not x59) x85)
+(or x362 (not x59) (not x85))
+(or (not x844) x839 x840)
+(or x844 (not x839) x840)
+(or x844 x839 (not x840))
+(or (not x844) (not x839) (not x840))
+(or (not x403) x53)
+(or (not x403) (not x53) x77)
+(or x403 (not x53) (not x77) (not x78))
+(or (not x403) (not x53) (not x77) x78)
+(or (not x1015) x185 x186)
+(or x1015 (not x185) x186)
+(or x1015 x185 (not x186))
+(or (not x1015) (not x185) (not x186))
+(or (not x428) x73)
+(or (not x428) (not x73) x74)
+(or x428 (not x73) (not x74) (not x75))
+(or (not x428) (not x73) (not x74) x75)
+(or (not x604) x178 x193)
+(or x604 (not x178) x193)
+(or x604 x178 (not x193))
+(or (not x604) (not x178) (not x193))
+(or (not x1186) x11 x35)
+(or x1186 (not x11) x35)
+(or x1186 x11 (not x35))
+(or (not x1186) (not x11) (not x35))
+(or (not x955) x952 x953)
+(or x955 (not x952) x953)
+(or x955 x952 (not x953))
+(or (not x955) (not x952) (not x953))
+(or (not x1413) x1409 x1410)
+(or x1413 (not x1409) x1410)
+(or x1413 x1409 (not x1410))
+(or (not x1413) (not x1409) (not x1410))
+(or (not x831) x134 x179)
+(or x831 (not x134) x179)
+(or x831 x134 (not x179))
+(or (not x831) (not x134) (not x179))
+(or (not x1286) x48 x57)
+(or x1286 (not x48) x57)
+(or x1286 x48 (not x57))
+(or (not x1286) (not x48) (not x57))
+(or (not x616) x4 x73)
+(or x616 (not x4) x73)
+(or x616 x4 (not x73))
+(or (not x616) (not x4) (not x73))
+(or (not x1338) x97 x133)
+(or x1338 (not x97) x133)
+(or x1338 x97 (not x133))
+(or (not x1338) (not x97) (not x133))
+(or (not x610) x6 x75)
+(or x610 (not x6) x75)
+(or x610 x6 (not x75))
+(or (not x610) (not x6) (not x75))
+(or (not x262) x115)
+(or (not x262) (not x115) x116)
+(or x262 (not x115) (not x116))
+(or (not x834) x539 x831)
+(or x834 (not x539) x831)
+(or x834 x539 (not x831))
+(or (not x834) (not x539) (not x831))
+(or (not x754) x515 x753)
+(or x754 (not x515) x753)
+(or x754 x515 (not x753))
+(or (not x754) (not x515) (not x753))
+(or (not x363) x59)
+(or (not x363) (not x59) x83)
+(or x363 (not x59) (not x83) (not x84))
+(or (not x363) (not x59) (not x83) x84)
+(or (not x922) x920 x921)
+(or x922 (not x920) x921)
+(or x922 x920 (not x921))
+(or (not x922) (not x920) (not x921))
+(or (not x1357) x475 x476)
+(or x1357 (not x475) x476)
+(or x1357 x475 (not x476))
+(or (not x1357) (not x475) (not x476))
+(or (not x224) x134)
+(or (not x224) (not x134) x135)
+(or x224 (not x134) (not x135))
+(or (not x1331) x202 x203)
+(or x1331 (not x202) x203)
+(or x1331 x202 (not x203))
+(or (not x1331) (not x202) (not x203))
+(or (not x727) x245 x246)
+(or x727 (not x245) x246)
+(or x727 x245 (not x246))
+(or (not x727) (not x245) (not x246))
+(or (not x624) x137 x185)
+(or x624 (not x137) x185)
+(or x624 x137 (not x185))
+(or (not x624) (not x137) (not x185))
+(or (not x1243) x1238 x1239)
+(or x1243 (not x1238) x1239)
+(or x1243 x1238 (not x1239))
+(or (not x1243) (not x1238) (not x1239))
+(or (not x594) x98 x188)
+(or x594 (not x98) x188)
+(or x594 x98 (not x188))
+(or (not x594) (not x98) (not x188))
+(or (not x534) x113 x128)
+(or x534 (not x113) x128)
+(or x534 x113 (not x128))
+(or (not x534) (not x113) (not x128))
+(or (not x223) x53)
+(or (not x223) (not x53) x54)
+(or x223 (not x53) (not x54))
+(or (not x297) x16)
+(or (not x297) (not x16) x17)
+(or x297 (not x16) (not x17))
+(or (not x1375) x206 x221)
+(or x1375 (not x206) x221)
+(or x1375 x206 (not x221))
+(or (not x1375) (not x206) (not x221))
+(or (not x1036) x1034 x1035)
+(or x1036 (not x1034) x1035)
+(or x1036 x1034 (not x1035))
+(or (not x1036) (not x1034) (not x1035))
+(or (not x1042) x372 x1038)
+(or x1042 (not x372) x1038)
+(or x1042 x372 (not x1038))
+(or (not x1042) (not x372) (not x1038))
+(or (not x921) x252 x275)
+(or x921 (not x252) x275)
+(or x921 x252 (not x275))
+(or (not x921) (not x252) (not x275))
+(or (not x337) x87)
+(or (not x337) (not x87) x88)
+(or x337 (not x87) (not x88) (not x90))
+(or (not x337) (not x87) (not x88) x90)
+(or (not x278) x107)
+(or (not x278) (not x107) x108)
+(or x278 (not x107) (not x108))
+(or (not x580) x105 x181)
+(or x580 (not x105) x181)
+(or x580 x105 (not x181))
+(or (not x580) (not x105) (not x181))
+(or (not x792) x527 x789)
+(or x792 (not x527) x789)
+(or x792 x527 (not x789))
+(or (not x792) (not x527) (not x789))
+(or (not x504) x32 x59)
+(or x504 (not x32) x59)
+(or x504 x32 (not x59))
+(or (not x504) (not x32) (not x59))
+(or (not x445) x46)
+(or (not x445) (not x46) x70)
+(or x445 (not x46) (not x70) (not x71))
+(or (not x445) (not x46) (not x70) x71)
+(or (not x1101) x16 x40)
+(or x1101 (not x16) x40)
+(or x1101 x16 (not x40))
+(or (not x1101) (not x16) (not x40))
+(or (not x1122) x403 x404)
+(or x1122 (not x403) x404)
+(or x1122 x403 (not x404))
+(or (not x1122) (not x403) (not x404))
+(or (not x964) x183 x195)
+(or x964 (not x183) x195)
+(or x964 x183 (not x195))
+(or (not x964) (not x183) (not x195))
+(or (not x1056) x373 x374)
+(or x1056 (not x373) x374)
+(or x1056 x373 (not x374))
+(or (not x1056) (not x373) (not x374))
+(or (not x894) x125 x188)
+(or x894 (not x125) x188)
+(or x894 x125 (not x188))
+(or (not x894) (not x125) (not x188))
+(or (not x761) x759 x760)
+(or x761 (not x759) x760)
+(or x761 x759 (not x760))
+(or (not x761) (not x759) (not x760))
+(or (not x659) x491 x658)
+(or x659 (not x491) x658)
+(or x659 x491 (not x658))
+(or (not x659) (not x491) (not x658))
+(or (not x311) x65)
+(or (not x311) (not x65) x93)
+(or x311 (not x65) (not x93))
+(or (not x963) x958 x959)
+(or x963 (not x958) x959)
+(or x963 x958 (not x959))
+(or (not x963) (not x958) (not x959))
+(or (not x972) x207 x260)
+(or x972 (not x207) x260)
+(or x972 x207 (not x260))
+(or (not x972) (not x207) (not x260))
+(or (not x722) x243 x244)
+(or x722 (not x243) x244)
+(or x722 x243 (not x244))
+(or (not x722) (not x243) (not x244))
+(or (not x229) x50)
+(or (not x229) (not x50) x51)
+(or x229 (not x50) (not x51))
+(or (not x1179) x1176 x1177)
+(or x1179 (not x1176) x1177)
+(or x1179 x1176 (not x1177))
+(or (not x1179) (not x1176) (not x1177))
+(or (not x826) x105 x108)
+(or x826 (not x105) x108)
+(or x826 x105 (not x108))
+(or (not x826) (not x105) (not x108))
+(or (not x747) x253 x254)
+(or x747 (not x253) x254)
+(or x747 x253 (not x254))
+(or (not x747) (not x253) (not x254))
+(or (not x860) x289 x290)
+(or x860 (not x289) x290)
+(or x860 x289 (not x290))
+(or (not x860) (not x289) (not x290))
+(or (not x1106) x1102 x1103)
+(or x1106 (not x1102) x1103)
+(or x1106 x1102 (not x1103))
+(or (not x1106) (not x1102) (not x1103))
+(or (not x280) x106)
+(or (not x280) (not x106) x107)
+(or x280 (not x106) (not x107))
+(or (not x1395) x1390 x1391)
+(or x1395 (not x1390) x1391)
+(or x1395 x1390 (not x1391))
+(or (not x1395) (not x1390) (not x1391))
+(or (not x365) x83)
+(or (not x365) (not x83) x84)
+(or x365 (not x83) (not x84) (not x86))
+(or (not x365) (not x83) (not x84) x86)
+(or (not x689) x497 x688)
+(or x689 (not x497) x688)
+(or x689 x497 (not x688))
+(or (not x689) (not x497) (not x688))
+(or (not x1276) x668 x1274)
+(or x1276 (not x668) x1274)
+(or x1276 x668 (not x1274))
+(or (not x1276) (not x668) (not x1274))
+(or (not x265) x32)
+(or (not x265) (not x32) x33)
+(or x265 (not x32) (not x33))
+(or (not x1007) x198 x211)
+(or x1007 (not x198) x211)
+(or x1007 x198 (not x211))
+(or (not x1007) (not x198) (not x211))
+(or (not x272) x110)
+(or (not x272) (not x110) x111)
+(or x272 (not x110) (not x111))
+(or (not x958) x954 x955)
+(or x958 (not x954) x955)
+(or x958 x954 (not x955))
+(or (not x958) (not x954) (not x955))
+(or (not x303) x13)
+(or (not x303) (not x13) x14)
+(or x303 (not x13) (not x14))
+(or (not x726) x724 x725)
+(or x726 (not x724) x725)
+(or x726 x724 (not x725))
+(or (not x726) (not x724) (not x725))
+(or (not x490) x46 x73)
+(or x490 (not x46) x73)
+(or x490 x46 (not x73))
+(or (not x490) (not x46) (not x73))
+(or (not x443) x45)
+(or (not x443) (not x45) x73)
+(or x443 (not x45) (not x73))
+(or (not x839) x283 x284)
+(or x839 (not x283) x284)
+(or x839 x283 (not x284))
+(or (not x839) (not x283) (not x284))
+(or (not x678) x134 x203)
+(or x678 (not x134) x203)
+(or x678 x134 (not x203))
+(or (not x678) (not x134) (not x203))
+(or (not x188) x81)
+(or (not x188) (not x81) x82)
+(or x188 (not x81) (not x82))
+(or (not x663) x137 x200)
+(or x663 (not x137) x200)
+(or x663 x137 (not x200))
+(or (not x663) (not x137) (not x200))
+(or (not x1289) x243 x298)
+(or x1289 (not x243) x298)
+(or x1289 x243 (not x298))
+(or (not x1289) (not x243) (not x298))
+(or (not x1370) x1368 x1369)
+(or x1370 (not x1368) x1369)
+(or x1370 x1368 (not x1369))
+(or (not x1370) (not x1368) (not x1369))
+(or (not x1189) x233 x288)
+(or x1189 (not x233) x288)
+(or x1189 x233 (not x288))
+(or (not x1189) (not x233) (not x288))
+(or (not x1269) x352 x448)
+(or x1269 (not x352) x448)
+(or x1269 x352 (not x448))
+(or (not x1269) (not x352) (not x448))
+(or (not x206) x63)
+(or (not x206) (not x63) x64)
+(or x206 (not x63) (not x64))
+(or (not x878) x876 x877)
+(or x878 (not x876) x877)
+(or x878 x876 (not x877))
+(or (not x878) (not x876) (not x877))
+(or (not x657) x217 x218)
+(or x657 (not x217) x218)
+(or x657 x217 (not x218))
+(or (not x657) (not x217) (not x218))
+(or (not x1082) x384 x385)
+(or x1082 (not x384) x385)
+(or x1082 x384 (not x385))
+(or (not x1082) (not x384) (not x385))
+(or (not x1040) x270 x293)
+(or x1040 (not x270) x293)
+(or x1040 x270 (not x293))
+(or (not x1040) (not x270) (not x293))
+(or (not x339) x61)
+(or (not x339) (not x61) x87)
+(or x339 (not x61) (not x87) (not x88))
+(or (not x339) (not x61) (not x87) x88)
+(or (not x242) x125)
+(or (not x242) (not x125) x126)
+(or x242 (not x125) (not x126))
+(or (not x890) x555 x887)
+(or x890 (not x555) x887)
+(or x890 x555 (not x887))
+(or (not x890) (not x555) (not x887))
+(or (not x1233) x437 x438)
+(or x1233 (not x437) x438)
+(or x1233 x437 (not x438))
+(or (not x1233) (not x437) (not x438))
+(or (not x350) x85)
+(or (not x350) (not x85) x86)
+(or x350 (not x85) (not x86) (not x87))
+(or (not x350) (not x85) (not x86) x87)
+(or (not x758) x118 x229)
+(or x758 (not x118) x229)
+(or x758 x118 (not x229))
+(or (not x758) (not x118) (not x229))
+(or (not x816) x811 x812)
+(or x816 (not x811) x812)
+(or x816 x811 (not x812))
+(or (not x816) (not x811) (not x812))
+(or (not x1048) x200 x215)
+(or x1048 (not x200) x215)
+(or x1048 x200 (not x215))
+(or (not x1048) (not x200) (not x215))
+(or (not x526) x117 x132)
+(or x526 (not x117) x132)
+(or x526 x117 (not x132))
+(or (not x526) (not x117) (not x132))
+(or (not x639) x210 x638)
+(or x639 (not x210) x638)
+(or x639 x210 (not x638))
+(or (not x639) (not x210) (not x638))
+(or (not x1337) x40 x41)
+(or x1337 (not x40) x41)
+(or x1337 x40 (not x41))
+(or (not x1337) (not x40) (not x41))
+(or (not x702) x235 x236)
+(or x702 (not x235) x236)
+(or x702 x235 (not x236))
+(or (not x702) (not x235) (not x236))
+(or (not x440) x71)
+(or (not x440) (not x71) x72)
+(or x440 (not x71) (not x72) (not x73))
+(or (not x440) (not x71) (not x72) x73)
+(or (not x1348) x1342 x1343)
+(or x1348 (not x1342) x1343)
+(or x1348 x1342 (not x1343))
+(or (not x1348) (not x1342) (not x1343))
+(or (not x1344) x468 x469)
+(or x1344 (not x468) x469)
+(or x1344 x468 (not x469))
+(or (not x1344) (not x468) (not x469))
+(or (not x412) x50)
+(or (not x412) (not x50) x76)
+(or x412 (not x50) (not x76) (not x77))
+(or (not x412) (not x50) (not x76) x77)
+(or (not x871) x869 x870)
+(or x871 (not x869) x870)
+(or x871 x869 (not x870))
+(or (not x871) (not x869) (not x870))
+(or (not x260) x116)
+(or (not x260) (not x116) x117)
+(or x260 (not x116) (not x117))
+(or (not x699) x499 x698)
+(or x699 (not x499) x698)
+(or x699 x499 (not x698))
+(or (not x699) (not x499) (not x698))
+(or (not x1084) x1079 x1080)
+(or x1084 (not x1079) x1080)
+(or x1084 x1079 (not x1080))
+(or (not x1084) (not x1079) (not x1080))
+(or (not x1329) x46 x55)
+(or x1329 (not x46) x55)
+(or x1329 x46 (not x55))
+(or (not x1329) (not x46) (not x55))
+(or (not x1080) x202 x219)
+(or x1080 (not x202) x219)
+(or x1080 x202 (not x219))
+(or (not x1080) (not x202) (not x219))
+(or (not x522) x119 x134)
+(or x522 (not x119) x134)
+(or x522 x119 (not x134))
+(or (not x522) (not x119) (not x134))
+(or (not x984) x979 x980)
+(or x984 (not x979) x980)
+(or x984 x979 (not x980))
+(or (not x984) (not x979) (not x980))
+(or (not x464) x67)
+(or (not x464) (not x67) x68)
+(or x464 (not x67) (not x68) (not x69))
+(or (not x464) (not x67) (not x68) x69)
+(or (not x1128) x191 x193)
+(or x1128 (not x191) x193)
+(or x1128 x191 (not x193))
+(or (not x1128) (not x191) (not x193))
+(or (not x433) x48)
+(or (not x433) (not x48) x72)
+(or x433 (not x48) (not x72) (not x73))
+(or (not x433) (not x48) (not x72) x73)
+(or (not x927) x315 x316)
+(or x927 (not x315) x316)
+(or x927 x315 (not x316))
+(or (not x927) (not x315) (not x316))
+(or (not x235) x47)
+(or (not x235) (not x47) x48)
+(or x235 (not x47) (not x48))
+(or (not x353) x59)
+(or (not x353) (not x59) x85)
+(or x353 (not x59) (not x85) (not x86))
+(or (not x353) (not x59) (not x85) x86)
+(or (not x495) x41 x68)
+(or x495 (not x41) x68)
+(or x495 x41 (not x68))
+(or (not x495) (not x41) (not x68))
+(or (not x473) x40)
+(or (not x473) (not x40) x68)
+(or x473 (not x40) (not x68))
+(or (not x600) x95 x191)
+(or x600 (not x95) x191)
+(or x600 x95 (not x191))
+(or (not x600) (not x95) (not x191))
+(or (not x772) x769 x770)
+(or x772 (not x769) x770)
+(or x772 x769 (not x770))
+(or (not x772) (not x769) (not x770))
+(or (not x1016) x1008 x1009)
+(or x1016 (not x1008) x1009)
+(or x1016 x1008 (not x1009))
+(or (not x1016) (not x1008) (not x1009))
+(or (not x420) x50)
+(or (not x420) (not x50) x76)
+(or x420 (not x50) (not x76))
+(or (not x1414) x1412 x1413)
+(or x1414 (not x1412) x1413)
+(or x1414 x1412 (not x1413))
+(or (not x1414) (not x1412) (not x1413))
+(or (not x494) x42 x69)
+(or x494 (not x42) x69)
+(or x494 x42 (not x69))
+(or (not x494) (not x42) (not x69))
+(or (not x467) x41)
+(or (not x467) (not x41) x69)
+(or x467 (not x41) (not x69))
+(or (not x230) x131)
+(or (not x230) (not x131) x132)
+(or x230 (not x131) (not x132))
+(or (not x574) x108 x178)
+(or x574 (not x108) x178)
+(or x574 x108 (not x178))
+(or (not x574) (not x108) (not x178))
+(or (not x595) x13 x82)
+(or x595 (not x13) x82)
+(or x595 x13 (not x82))
+(or (not x595) (not x13) (not x82))
+(or (not x745) x106 x118)
+(or x745 (not x106) x118)
+(or x745 x106 (not x118))
+(or (not x745) (not x106) (not x118))
+(or (not x776) x265 x266)
+(or x776 (not x265) x266)
+(or x776 x265 (not x266))
+(or (not x776) (not x265) (not x266))
+(or (not x384) x56)
+(or (not x384) (not x56) x80)
+(or x384 (not x56) (not x80) (not x81))
+(or (not x384) (not x56) (not x80) x81)
+(or (not x1232) x198 x199)
+(or x1232 (not x198) x199)
+(or x1232 x198 (not x199))
+(or (not x1232) (not x198) (not x199))
+(or (not x915) x179 x191)
+(or x915 (not x179) x191)
+(or x915 x179 (not x191))
+(or (not x915) (not x179) (not x191))
+(or (not x1060) x272 x295)
+(or x1060 (not x272) x295)
+(or x1060 x272 (not x295))
+(or (not x1060) (not x272) (not x295))
+(or (not x977) x24 x66)
+(or x977 (not x24) x66)
+(or x977 x24 (not x66))
+(or (not x977) (not x24) (not x66))
+(or (not x635) x129 x141)
+(or x635 (not x129) x141)
+(or x635 x129 (not x141))
+(or (not x635) (not x129) (not x141))
+(or (not x1282) x1272 x1273)
+(or x1282 (not x1272) x1273)
+(or x1282 x1272 (not x1273))
+(or (not x1282) (not x1272) (not x1273))
+(or (not x306) x66)
+(or (not x306) (not x66) x94)
+(or x306 (not x66) (not x94))
+(or (not x1258) x1253 x1254)
+(or x1258 (not x1253) x1254)
+(or x1258 x1253 (not x1254))
+(or (not x1258) (not x1253) (not x1254))
+(or (not x423) x74)
+(or (not x423) (not x74) x75)
+(or x423 (not x74) (not x75) (not x77))
+(or (not x423) (not x74) (not x75) x77)
+(or (not x868) x99 x102)
+(or x868 (not x99) x102)
+(or x868 x99 (not x102))
+(or (not x868) (not x99) (not x102))
+(or (not x783) x267 x268)
+(or x783 (not x267) x268)
+(or x783 x267 (not x268))
+(or (not x783) (not x267) (not x268))
+(or (not x338) x7)
+(or (not x338) (not x7) x8)
+(or x338 (not x7) (not x8))
+(or (not x931) x565 x924)
+(or x931 (not x565) x924)
+(or x931 x565 (not x924))
+(or (not x931) (not x565) (not x924))
+(or (not x1253) x442 x443)
+(or x1253 (not x442) x443)
+(or x1253 x442 (not x443))
+(or (not x1253) (not x442) (not x443))
+(or (not x1146) x1138 x1139)
+(or x1146 (not x1138) x1139)
+(or x1146 x1138 (not x1139))
+(or (not x1146) (not x1138) (not x1139))
+(or (not x976) x971 x972)
+(or x976 (not x971) x972)
+(or x976 x971 (not x972))
+(or (not x976) (not x971) (not x972))
+(or (not x211) x59)
+(or (not x211) (not x59) x60)
+(or x211 (not x59) (not x60))
+(or (not x1169) x1166 x1167)
+(or x1169 (not x1166) x1167)
+(or x1169 x1166 (not x1167))
+(or (not x1169) (not x1166) (not x1167))
+(or (not x608) x195 x607)
+(or x608 (not x195) x607)
+(or x608 x195 (not x607))
+(or (not x608) (not x195) (not x607))
+(or (not x469) x42)
+(or (not x469) (not x42) x66)
+(or x469 (not x42) (not x66) (not x67))
+(or (not x469) (not x42) (not x66) x67)
+(or (not x1231) x45 x46)
+(or x1231 (not x45) x46)
+(or x1231 x45 (not x46))
+(or (not x1231) (not x45) (not x46))
+(or (not x1052) x1047 x1048)
+(or x1052 (not x1047) x1048)
+(or x1052 x1047 (not x1048))
+(or (not x1052) (not x1047) (not x1048))
+(or (not x1234) x1226 x1227)
+(or x1234 (not x1226) x1227)
+(or x1234 x1226 (not x1227))
+(or (not x1234) (not x1226) (not x1227))
+(or (not x1183) x420 x421)
+(or x1183 (not x420) x421)
+(or x1183 x420 (not x421))
+(or (not x1183) (not x420) (not x421))
+(or (not x281) x24)
+(or (not x281) (not x24) x25)
+(or x281 (not x24) (not x25))
+(or (not x1335) x1330 x1331)
+(or x1335 (not x1330) x1331)
+(or x1335 x1330 (not x1331))
+(or (not x1335) (not x1330) (not x1331))
+(or (not x959) x258 x281)
+(or x959 (not x258) x281)
+(or x959 x258 (not x281))
+(or (not x959) (not x258) (not x281))
+(or (not x1212) x207 x211)
+(or x1212 (not x207) x211)
+(or x1212 x207 (not x211))
+(or (not x1212) (not x207) (not x211))
+(or (not x271) x29)
+(or (not x271) (not x29) x30)
+(or x271 (not x29) (not x30))
+(or (not x1403) x1400 x926)
+(or x1403 (not x1400) x926)
+(or x1403 x1400 (not x926))
+(or (not x1403) (not x1400) (not x926))
+(or (not x1012) x266 x289)
+(or x1012 (not x266) x289)
+(or x1012 x266 (not x289))
+(or (not x1012) (not x266) (not x289))
+(or (not x1287) x70 x99)
+(or x1287 (not x70) x99)
+(or x1287 x70 (not x99))
+(or (not x1287) (not x70) (not x99))
+(or (not x552) x104 x119)
+(or x552 (not x104) x119)
+(or x552 x104 (not x119))
+(or (not x552) (not x104) (not x119))
+(or (not x687) x229 x230)
+(or x687 (not x229) x230)
+(or x687 x229 (not x230))
+(or (not x687) (not x229) (not x230))
+(or (not x426) x49)
+(or (not x426) (not x49) x75)
+(or x426 (not x49) (not x75))
+(or (not x1144) x1140 x1141)
+(or x1144 (not x1140) x1141)
+(or x1144 x1140 (not x1141))
+(or (not x1144) (not x1140) (not x1141))
+(or (not x288) x102)
+(or (not x288) (not x102) x103)
+(or x288 (not x102) (not x103))
+(or (not x324) x9)
+(or (not x324) (not x9) x10)
+(or x324 (not x9) (not x10))
+(or (not x981) x977 x978)
+(or x981 (not x977) x978)
+(or x981 x977 (not x978))
+(or (not x981) (not x977) (not x978))
+(or (not x809) x804 x805)
+(or x809 (not x804) x805)
+(or x809 x804 (not x805))
+(or (not x809) (not x804) (not x805))
+(or (not x881) x295 x296)
+(or x881 (not x295) x296)
+(or x881 x295 (not x296))
+(or (not x881) (not x295) (not x296))
+(or (not x1094) x1091 x1092)
+(or x1094 (not x1091) x1092)
+(or x1094 x1091 (not x1092))
+(or (not x1094) (not x1091) (not x1092))
+(or (not x354) x59)
+(or (not x354) (not x59) x87)
+(or x354 (not x59) (not x87))
+(or (not x728) x124 x217)
+(or x728 (not x124) x217)
+(or x728 x124 (not x217))
+(or (not x728) (not x124) (not x217))
+(or (not x572) x94 x109)
+(or x572 (not x94) x109)
+(or x572 x94 (not x109))
+(or (not x572) (not x94) (not x109))
+(or (not x582) x104 x182)
+(or x582 (not x104) x182)
+(or x582 x104 (not x182))
+(or (not x582) (not x104) (not x182))
+(or (not x688) x132 x205)
+(or x688 (not x132) x205)
+(or x688 x132 (not x205))
+(or (not x688) (not x132) (not x205))
+(or (not x654) x490 x653)
+(or x654 (not x490) x653)
+(or x654 x490 (not x653))
+(or (not x654) (not x490) (not x653))
+(or (not x1203) x1193 x1194)
+(or x1203 (not x1193) x1194)
+(or x1203 x1193 (not x1194))
+(or (not x1203) (not x1193) (not x1194))
+(or (not x1202) x1199 x1200)
+(or x1202 (not x1199) x1200)
+(or x1202 x1199 (not x1200))
+(or (not x1202) (not x1199) (not x1200))
+(or (not x1006) x115 x184)
+(or x1006 (not x115) x184)
+(or x1006 x115 (not x184))
+(or (not x1006) (not x115) (not x184))
+(or (not x376) x57)
+(or (not x376) (not x57) x83)
+(or x376 (not x57) (not x83))
+(or (not x1260) x215 x239)
+(or x1260 (not x215) x239)
+(or x1260 x215 (not x239))
+(or (not x1260) (not x215) (not x239))
+(or (not x1247) x200 x209)
+(or x1247 (not x200) x209)
+(or x1247 x200 (not x209))
+(or (not x1247) (not x200) (not x209))
+(or (not x519) x24 x51)
+(or x519 (not x24) x51)
+(or x519 x24 (not x51))
+(or (not x519) (not x24) (not x51))
+(or (not x709) x501 x708)
+(or x709 (not x501) x708)
+(or x709 x501 (not x708))
+(or (not x709) (not x501) (not x708))
+(or (not x1306) x1304 x1305)
+(or x1306 (not x1304) x1305)
+(or x1306 x1304 (not x1305))
+(or (not x1306) (not x1304) (not x1305))
+(or (not x975) x973 x974)
+(or x975 (not x973) x974)
+(or x975 x973 (not x974))
+(or (not x975) (not x973) (not x974))
+(or (not x554) x103 x118)
+(or x554 (not x103) x118)
+(or x554 x103 (not x118))
+(or (not x554) (not x103) (not x118))
+(or (not x746) x744 x745)
+(or x746 (not x744) x745)
+(or x746 x744 (not x745))
+(or (not x746) (not x744) (not x745))
+(or (not x1300) x457 x458)
+(or x1300 (not x457) x458)
+(or x1300 x457 (not x458))
+(or (not x1300) (not x457) (not x458))
+(or (not x259) x35)
+(or (not x259) (not x35) x36)
+(or x259 (not x35) (not x36))
+(or (not x1004) x999 x1000)
+(or x1004 (not x999) x1000)
+(or x1004 x999 (not x1000))
+(or (not x1004) (not x999) (not x1000))
+(or (not x500) x36 x63)
+(or x500 (not x36) x63)
+(or x500 x36 (not x63))
+(or (not x500) (not x36) (not x63))
+(or (not x865) x860 x861)
+(or x865 (not x860) x861)
+(or x865 x860 (not x861))
+(or (not x865) (not x860) (not x861))
+(or (not x578) x106 x180)
+(or x578 (not x106) x180)
+(or x578 x106 (not x180))
+(or (not x578) (not x106) (not x180))
+(or (not x1192) x1189 x1190)
+(or x1192 (not x1189) x1190)
+(or x1192 x1189 (not x1190))
+(or (not x1192) (not x1189) (not x1190))
+(or (not x308) x93)
+(or (not x308) (not x93) x94)
+(or x308 (not x93) (not x94))
+(or (not x652) x649 x650)
+(or x652 (not x649) x650)
+(or x652 x649 (not x650))
+(or (not x652) (not x649) (not x650))
+(or (not x1133) x1125 x1126)
+(or x1133 (not x1125) x1126)
+(or x1133 x1125 (not x1126))
+(or (not x1133) (not x1125) (not x1126))
+(or (not x596) x97 x189)
+(or x596 (not x97) x189)
+(or x596 x97 (not x189))
+(or (not x596) (not x97) (not x189))
+(or (not x863) x236 x259)
+(or x863 (not x236) x259)
+(or x863 x236 (not x259))
+(or (not x863) (not x236) (not x259))
+(or (not x751) x749 x750)
+(or x751 (not x749) x750)
+(or x751 x749 (not x750))
+(or (not x751) (not x749) (not x750))
+(or (not x1393) x1376 x1377)
+(or x1393 (not x1376) x1377)
+(or x1393 x1376 (not x1377))
+(or (not x1393) (not x1376) (not x1377))
+(or (not x1323) x245 x300)
+(or x1323 (not x245) x300)
+(or x1323 x245 (not x300))
+(or (not x1323) (not x245) (not x300))
+(or (not x329) x88)
+(or (not x329) (not x88) x89)
+(or x329 (not x88) (not x89) (not x90))
+(or (not x329) (not x88) (not x89) x90)
+(or (not x480) x40)
+(or (not x480) (not x40) x66)
+(or x480 (not x40) (not x66))
+(or (not x255) x37)
+(or (not x255) (not x37) x38)
+(or x255 (not x37) (not x38))
+(or (not x872) x867 x868)
+(or x872 (not x867) x868)
+(or x872 x867 (not x868))
+(or (not x872) (not x867) (not x868))
+(or (not x773) x233 x263)
+(or x773 (not x233) x263)
+(or x773 x233 (not x263))
+(or (not x773) (not x233) (not x263))
+(or (not x1321) x465 x1308)
+(or x1321 (not x465) x1308)
+(or x1321 x465 (not x1308))
+(or (not x1321) (not x465) (not x1308))
+(or (not x421) x50)
+(or (not x421) (not x50) x74)
+(or x421 (not x50) (not x74) (not x75))
+(or (not x421) (not x50) (not x74) x75)
+(or (not x1140) x1136 x1137)
+(or x1140 (not x1136) x1137)
+(or x1140 x1136 (not x1137))
+(or (not x1140) (not x1136) (not x1137))
+(or (not x1182) x1180 x1181)
+(or x1182 (not x1180) x1181)
+(or x1182 x1180 (not x1181))
+(or (not x1182) (not x1180) (not x1181))
+(or (not x1325) x1315 x1316)
+(or x1325 (not x1315) x1316)
+(or x1325 x1315 (not x1316))
+(or (not x1325) (not x1315) (not x1316))
+(or (not x1402) x1396 x1397)
+(or x1402 (not x1396) x1397)
+(or x1402 x1396 (not x1397))
+(or (not x1402) (not x1396) (not x1397))
+(or (not x634) x192 x207)
+(or x634 (not x192) x207)
+(or x634 x192 (not x207))
+(or (not x634) (not x192) (not x207))
+(or (not x547) x10 x37)
+(or x547 (not x10) x37)
+(or x547 x10 (not x37))
+(or (not x547) (not x10) (not x37))
+(or (not x850) x848 x849)
+(or x850 (not x848) x849)
+(or x850 x848 (not x849))
+(or (not x850) (not x848) (not x849))
+(or (not x671) x669 x670)
+(or x671 (not x669) x670)
+(or x671 x669 (not x670))
+(or (not x671) (not x669) (not x670))
+(or (not x204) x65)
+(or (not x204) (not x65) x66)
+(or x204 (not x65) (not x66))
+(or (not x576) x107 x179)
+(or x576 (not x107) x179)
+(or x576 x107 (not x179))
+(or (not x576) (not x107) (not x179))
+(or (not x429) x73)
+(or (not x429) (not x73) x74)
+(or x429 (not x73) (not x74) (not x76))
+(or (not x429) (not x73) (not x74) x76)
+(or (not x884) x242 x265)
+(or x884 (not x242) x265)
+(or x884 x242 (not x265))
+(or (not x884) (not x242) (not x265))
+(or (not x1055) x201 x217)
+(or x1055 (not x201) x217)
+(or x1055 x201 (not x217))
+(or (not x1055) (not x201) (not x217))
+(or (not x1126) x405 x1118)
+(or x1126 (not x405) x1118)
+(or x1126 x405 (not x1118))
+(or (not x1126) (not x405) (not x1118))
+(or (not x882) x97 x100)
+(or x882 (not x97) x100)
+(or x882 x97 (not x100))
+(or (not x882) (not x97) (not x100))
+(or (not x916) x305 x306)
+(or x916 (not x305) x306)
+(or x916 x305 (not x306))
+(or (not x916) (not x305) (not x306))
+(or (not x1217) x1206 x653)
+(or x1217 (not x1206) x653)
+(or x1217 x1206 (not x653))
+(or (not x1217) (not x1206) (not x653))
+(or (not x632) x131 x191)
+(or x632 (not x131) x191)
+(or x632 x131 (not x191))
+(or (not x632) (not x131) (not x191))
+(or (not x1150) x1142 x1143)
+(or x1150 (not x1142) x1143)
+(or x1150 x1142 (not x1143))
+(or (not x1150) (not x1142) (not x1143))
+(or (not x1178) x1170 x1171)
+(or x1178 (not x1170) x1171)
+(or x1178 x1170 (not x1171))
+(or (not x1178) (not x1170) (not x1171))
+(or (not x851) x846 x847)
+(or x851 (not x846) x847)
+(or x851 x846 (not x847))
+(or (not x851) (not x846) (not x847))
+(or (not x636) x208 x635)
+(or x636 (not x208) x635)
+(or x636 x208 (not x635))
+(or (not x636) (not x208) (not x635))
+(or (not x693) x131 x206)
+(or x693 (not x131) x206)
+(or x693 x131 (not x206))
+(or (not x693) (not x131) (not x206))
+(or (not x344) x86)
+(or (not x344) (not x86) x87)
+(or x344 (not x86) (not x87) (not x89))
+(or (not x344) (not x86) (not x87) x89)
+(or (not x1389) x1382 x1383)
+(or x1389 (not x1382) x1383)
+(or x1389 x1382 (not x1383))
+(or (not x1389) (not x1382) (not x1383))
+(or (not x1297) x1292 x1293)
+(or x1297 (not x1292) x1293)
+(or x1297 x1292 (not x1293))
+(or (not x1297) (not x1292) (not x1293))
+(or (not x837) x832 x833)
+(or x837 (not x832) x833)
+(or x837 x832 (not x833))
+(or (not x837) (not x832) (not x833))
+(or (not x1352) x3 x27)
+(or x1352 (not x3) x27)
+(or x1352 x3 (not x27))
+(or (not x1352) (not x3) (not x27))
+(or (not x812) x95 x107)
+(or x812 (not x95) x107)
+(or x812 x95 (not x107))
+(or (not x812) (not x95) (not x107))
+(or (not x1273) x43 x45)
+(or x1273 (not x43) x45)
+(or x1273 x43 (not x45))
+(or (not x1273) (not x43) (not x45))
+(or (not x432) x48)
+(or (not x432) (not x48) x74)
+(or x432 (not x48) (not x74))
+(or (not x336) x87)
+(or (not x336) (not x87) x88)
+(or x336 (not x87) (not x88) (not x89))
+(or (not x336) (not x87) (not x88) x89)
+(or (not x736) x734 x735)
+(or x736 (not x734) x735)
+(or x736 x734 (not x735))
+(or (not x736) (not x734) (not x735))
+(or (not x1032) x187 x199)
+(or x1032 (not x187) x199)
+(or x1032 x187 (not x199))
+(or (not x1032) (not x187) (not x199))
+(or (not x1043) x1041 x1042)
+(or x1043 (not x1041) x1042)
+(or x1043 x1041 (not x1042))
+(or (not x1043) (not x1041) (not x1042))
+(or (not x1381) x38 x39)
+(or x1381 (not x38) x39)
+(or x1381 x38 (not x39))
+(or (not x1381) (not x38) (not x39))
+(or (not x1089) x392 x393)
+(or x1089 (not x392) x393)
+(or x1089 x392 (not x393))
+(or (not x1089) (not x392) (not x393))
+(or (not x409) x52)
+(or (not x409) (not x52) x76)
+(or x409 (not x52) (not x76) (not x77))
+(or (not x409) (not x52) (not x76) x77)
+(or (not x359) x4)
+(or (not x359) (not x4) x5)
+(or x359 (not x4) (not x5))
+(or (not x1050) x370 x371)
+(or x1050 (not x370) x371)
+(or x1050 x370 (not x371))
+(or (not x1050) (not x370) (not x371))
+(or (not x575) x23 x92)
+(or x575 (not x23) x92)
+(or x575 x23 (not x92))
+(or (not x575) (not x23) (not x92))
+(or (not x1271) x1266 x1267)
+(or x1271 (not x1266) x1267)
+(or x1271 x1266 (not x1267))
+(or (not x1271) (not x1266) (not x1267))
+(or (not x1392) x1386 x1387)
+(or x1392 (not x1386) x1387)
+(or x1392 x1386 (not x1387))
+(or (not x1392) (not x1386) (not x1387))
+(or (not x630) x133 x189)
+(or x630 (not x133) x189)
+(or x630 x133 (not x189))
+(or (not x630) (not x133) (not x189))
+(or (not x626) x201 x625)
+(or x626 (not x201) x625)
+(or x626 x201 (not x625))
+(or (not x626) (not x201) (not x625))
+(or (not x389) x54)
+(or (not x389) (not x54) x82)
+(or x389 (not x54) (not x82))
+(or (not x562) x99 x114)
+(or x562 (not x99) x114)
+(or x562 x99 (not x114))
+(or (not x562) (not x99) (not x114))
+(or (not x810) x110 x137)
+(or x810 (not x110) x137)
+(or x810 x110 (not x137))
+(or (not x810) (not x110) (not x137))
+(or (not x1236) x72 x73)
+(or x1236 (not x72) x73)
+(or x1236 x72 (not x73))
+(or (not x1236) (not x72) (not x73))
+(or (not x1390) x1388 x1389)
+(or x1390 (not x1388) x1389)
+(or x1390 x1388 (not x1389))
+(or (not x1390) (not x1388) (not x1389))
+(or (not x1039) x113 x188)
+(or x1039 (not x113) x188)
+(or x1039 x113 (not x188))
+(or (not x1039) (not x113) (not x188))
+(or (not x1019) x1016 x1017)
+(or x1019 (not x1016) x1017)
+(or x1019 x1016 (not x1017))
+(or (not x1019) (not x1016) (not x1017))
+(or (not x511) x28 x55)
+(or x511 (not x28) x55)
+(or x511 x28 (not x55))
+(or (not x511) (not x28) (not x55))
+(or (not x731) x729 x730)
+(or x731 (not x729) x730)
+(or x731 x729 (not x730))
+(or (not x731) (not x729) (not x730))
+(or (not x1132) x1129 x1130)
+(or x1132 (not x1129) x1130)
+(or x1132 x1129 (not x1130))
+(or (not x1132) (not x1129) (not x1130))
+(or (not x1394) x1392 x1393)
+(or x1394 (not x1392) x1393)
+(or x1394 x1392 (not x1393))
+(or (not x1394) (not x1392) (not x1393))
+(or (not x299) x15)
+(or (not x299) (not x15) x16)
+(or x299 (not x15) (not x16))
+(or (not x317) x10)
+(or (not x317) (not x10) x11)
+(or x317 (not x10) (not x11))
+(or (not x1135) x14 x38)
+(or x1135 (not x14) x38)
+(or x1135 x14 (not x38))
+(or (not x1135) (not x14) (not x38))
+(or (not x775) x115 x142)
+(or x775 (not x115) x142)
+(or x775 x115 (not x142))
+(or (not x775) (not x115) (not x142))
+(or (not x1147) x1144 x1145)
+(or x1147 (not x1144) x1145)
+(or x1147 x1144 (not x1145))
+(or (not x1147) (not x1144) (not x1145))
+(or (not x1278) x453 x1265)
+(or x1278 (not x453) x1265)
+(or x1278 x453 (not x1265))
+(or (not x1278) (not x453) (not x1265))
+(or (not x466) x41)
+(or (not x466) (not x41) x67)
+(or x466 (not x41) (not x67) (not x68))
+(or (not x466) (not x41) (not x67) x68)
+(or (not x207) x62)
+(or (not x207) (not x62) x63)
+(or x207 (not x62) (not x63))
+(or (not x544) x108 x123)
+(or x544 (not x108) x123)
+(or x544 x108 (not x123))
+(or (not x544) (not x108) (not x123))
+(or (not x1110) x1106 x1107)
+(or x1110 (not x1106) x1107)
+(or x1110 x1106 (not x1107))
+(or (not x1110) (not x1106) (not x1107))
+(or (not x1076) x60 x69)
+(or x1076 (not x60) x69)
+(or x1076 x60 (not x69))
+(or (not x1076) (not x60) (not x69))
+(or (not x833) x104 x107)
+(or x833 (not x104) x107)
+(or x833 x104 (not x107))
+(or (not x833) (not x104) (not x107))
+(or (not x558) x101 x116)
+(or x558 (not x101) x116)
+(or x558 x101 (not x116))
+(or (not x558) (not x101) (not x116))
+(or (not x482) x64)
+(or (not x482) (not x64) x65)
+(or x482 (not x64) (not x65) (not x66))
+(or (not x482) (not x64) (not x65) x66)
+(or (not x875) x98 x101)
+(or x875 (not x98) x101)
+(or x875 x98 (not x101))
+(or (not x875) (not x98) (not x101))
+(or (not x891) x244 x267)
+(or x891 (not x244) x267)
+(or x891 x244 (not x267))
+(or (not x891) (not x244) (not x267))
+(or (not x1378) x482 x483)
+(or x1378 (not x482) x483)
+(or x1378 x482 (not x483))
+(or (not x1378) (not x482) (not x483))
+(or (not x1057) x377 x378)
+(or x1057 (not x377) x378)
+(or x1057 x377 (not x378))
+(or (not x1057) (not x377) (not x378))
+(or (not x506) x127 x142)
+(or x506 (not x127) x142)
+(or x506 x127 (not x142))
+(or (not x506) (not x127) (not x142))
+(or (not x492) x44 x71)
+(or x492 (not x44) x71)
+(or x492 x44 (not x71))
+(or (not x492) (not x44) (not x71))
+(or (not x455) x43)
+(or (not x455) (not x43) x71)
+(or x455 (not x43) (not x71))
+(or (not x346) x60)
+(or (not x346) (not x60) x86)
+(or x346 (not x60) (not x86) (not x87))
+(or (not x346) (not x60) (not x86) x87)
+(or (not x1037) x1030 x1031)
+(or x1037 (not x1030) x1031)
+(or x1037 x1030 (not x1031))
+(or (not x1037) (not x1030) (not x1031))
+(or (not x1058) x1054 x1055)
+(or x1058 (not x1054) x1055)
+(or x1058 x1054 (not x1055))
+(or (not x1058) (not x1054) (not x1055))
+(or (not x221) x54)
+(or (not x221) (not x54) x55)
+(or x221 (not x54) (not x55))
+(or (not x1176) x54 x63)
+(or x1176 (not x54) x63)
+(or x1176 x54 (not x63))
+(or (not x1176) (not x54) (not x63))
+(or (not x360) x58)
+(or (not x360) (not x58) x84)
+(or x360 (not x58) (not x84) (not x85))
+(or (not x360) (not x58) (not x84) x85)
+(or (not x1081) x1075 x1076)
+(or x1081 (not x1075) x1076)
+(or x1081 x1075 (not x1076))
+(or (not x1081) (not x1075) (not x1076))
+(or (not x478) x39)
+(or (not x478) (not x39) x65)
+(or x478 (not x39) (not x65) (not x66))
+(or (not x478) (not x39) (not x65) x66)
+(or (not x1063) x188 x189)
+(or x1063 (not x188) x189)
+(or x1063 x188 (not x189))
+(or (not x1063) (not x188) (not x189))
+(or (not x676) x674 x675)
+(or x676 (not x674) x675)
+(or x676 x674 (not x675))
+(or (not x676) (not x674) (not x675))
+(or (not x651) x140 x197)
+(or x651 (not x140) x197)
+(or x651 x140 (not x197))
+(or (not x651) (not x140) (not x197))
+(or (not x805) x96 x108)
+(or x805 (not x96) x108)
+(or x805 x96 (not x108))
+(or (not x805) (not x96) (not x108))
+(or (not x531) x18 x45)
+(or x531 (not x18) x45)
+(or x531 x18 (not x45))
+(or (not x531) (not x18) (not x45))
+(or (not x588) x101 x185)
+(or x588 (not x101) x185)
+(or x588 x101 (not x185))
+(or (not x588) (not x101) (not x185))
+(or (not x1141) x56 x65)
+(or x1141 (not x56) x65)
+(or x1141 x56 (not x65))
+(or (not x1141) (not x56) (not x65))
+(or (not x332) x62)
+(or (not x332) (not x62) x88)
+(or x332 (not x62) (not x88) (not x89))
+(or (not x332) (not x62) (not x88) x89)
+(or (not x1373) x44 x53)
+(or x1373 (not x44) x53)
+(or x1373 x44 (not x53))
+(or (not x1373) (not x44) (not x53))
+(or (not x1059) x61 x70)
+(or x1059 (not x61) x70)
+(or x1059 x61 (not x70))
+(or (not x1059) (not x61) (not x70))
+(or (not x434) x72)
+(or (not x434) (not x72) x73)
+(or x434 (not x72) (not x73) (not x74))
+(or (not x434) (not x72) (not x73) x74)
+(or (not x291) x19)
+(or (not x291) (not x19) x20)
+(or x291 (not x19) (not x20))
+(or (not x550) x105 x120)
+(or x550 (not x105) x120)
+(or x550 x105 (not x120))
+(or (not x550) (not x105) (not x120))
+(or (not x472) x40)
+(or (not x472) (not x40) x66)
+(or x472 (not x40) (not x66) (not x67))
+(or (not x472) (not x40) (not x66) x67)
+(or (not x1160) x204 x207)
+(or x1160 (not x204) x207)
+(or x1160 x204 (not x207))
+(or (not x1160) (not x204) (not x207))
+(or (not x1099) x1097 x1098)
+(or x1099 (not x1097) x1098)
+(or x1099 x1097 (not x1098))
+(or (not x1099) (not x1097) (not x1098))
+(or (not x1065) x1062 x1063)
+(or x1065 (not x1062) x1063)
+(or x1065 x1062 (not x1063))
+(or (not x1065) (not x1062) (not x1063))
+(or (not x768) x765 x766)
+(or x768 (not x765) x766)
+(or x768 x765 (not x766))
+(or (not x768) (not x765) (not x766))
+(or (not x926) x311 x312)
+(or x926 (not x311) x312)
+(or x926 x311 (not x312))
+(or (not x926) (not x311) (not x312))
+(or (not x995) x991 x992)
+(or x995 (not x991) x992)
+(or x995 x991 (not x992))
+(or (not x995) (not x991) (not x992))
+(or (not x394) x53)
+(or (not x394) (not x53) x79)
+(or x394 (not x53) (not x79) (not x80))
+(or (not x394) (not x53) (not x79) x80)
+(or (not x1181) x1174 x1175)
+(or x1181 (not x1174) x1175)
+(or x1181 x1174 (not x1175))
+(or (not x1181) (not x1174) (not x1175))
+(or (not x1026) x364 x365)
+(or x1026 (not x364) x365)
+(or x1026 x364 (not x365))
+(or (not x1026) (not x364) (not x365))
+(or (not x774) x771 x772)
+(or x774 (not x771) x772)
+(or x774 x771 (not x772))
+(or (not x774) (not x771) (not x772))
+(or (not x807) x220 x243)
+(or x807 (not x220) x243)
+(or x807 x220 (not x243))
+(or (not x807) (not x220) (not x243))
+(or (not x182) x87)
+(or (not x182) (not x87) x88)
+(or x182 (not x87) (not x88))
+(or (not x649) x125 x137)
+(or x649 (not x125) x137)
+(or x649 x125 (not x137))
+(or (not x649) (not x125) (not x137))
+(or (not x887) x126 x187)
+(or x887 (not x126) x187)
+(or x887 x126 (not x187))
+(or (not x887) (not x126) (not x187))
+(or (not x828) x226 x249)
+(or x828 (not x226) x249)
+(or x828 x226 (not x249))
+(or (not x828) (not x226) (not x249))
+(or (not x896) x95 x98)
+(or x896 (not x95) x98)
+(or x896 x95 (not x98))
+(or (not x896) (not x95) (not x98))
+(or (not x1369) x1359 x1360)
+(or x1369 (not x1359) x1360)
+(or x1369 x1359 (not x1360))
+(or (not x1369) (not x1359) (not x1360))
+(or (not x248) x122)
+(or (not x248) (not x122) x123)
+(or x248 (not x122) (not x123))
+(or (not x326) x63)
+(or (not x326) (not x63) x91)
+(or x326 (not x63) (not x91))
+(or (not x347) x60)
+(or (not x347) (not x60) x88)
+(or x347 (not x60) (not x88))
+(or (not x825) x279 x280)
+(or x825 (not x279) x280)
+(or x825 x279 (not x280))
+(or (not x825) (not x279) (not x280))
+(or (not x1027) x1024 x1025)
+(or x1027 (not x1024) x1025)
+(or x1027 x1024 (not x1025))
+(or (not x1027) (not x1024) (not x1025))
+(or (not x1025) x360 x361)
+(or x1025 (not x360) x361)
+(or x1025 x360 (not x361))
+(or (not x1025) (not x360) (not x361))
+(or (not x716) x714 x715)
+(or x716 (not x714) x715)
+(or x716 x714 (not x715))
+(or (not x716) (not x714) (not x715))
+(or (not x1047) x1045 x1046)
+(or x1047 (not x1045) x1046)
+(or x1047 x1045 (not x1046))
+(or (not x1047) (not x1045) (not x1046))
+(or (not x877) x240 x263)
+(or x877 (not x240) x263)
+(or x877 x240 (not x263))
+(or (not x877) (not x240) (not x263))
+(or (not x857) x855 x856)
+(or x857 (not x855) x856)
+(or x857 x855 (not x856))
+(or (not x857) (not x855) (not x856))
+(or (not x858) x853 x854)
+(or x858 (not x853) x854)
+(or x858 x853 (not x854))
+(or (not x858) (not x853) (not x854))
+(or (not x613) x5 x74)
+(or x613 (not x5) x74)
+(or x613 x5 (not x74))
+(or (not x613) (not x5) (not x74))
+(or (not x619) x3 x72)
+(or x619 (not x3) x72)
+(or x619 x3 (not x72))
+(or (not x619) (not x3) (not x72))
+(or (not x787) x785 x786)
+(or x787 (not x785) x786)
+(or x787 x785 (not x786))
+(or (not x787) (not x785) (not x786))
+(or (not x739) x509 x738)
+(or x739 (not x509) x738)
+(or x739 x509 (not x738))
+(or (not x739) (not x509) (not x738))
+(or (not x1066) x375 x376)
+(or x1066 (not x375) x376)
+(or x1066 x375 (not x376))
+(or (not x1066) (not x375) (not x376))
+(or (not x1262) x1250 x1251)
+(or x1262 (not x1250) x1251)
+(or x1262 x1250 (not x1251))
+(or (not x1262) (not x1250) (not x1251))
+(or (not x719) x503 x718)
+(or x719 (not x503) x718)
+(or x719 x503 (not x718))
+(or (not x719) (not x503) (not x718))
+(or (not x1388) x480 x481)
+(or x1388 (not x480) x481)
+(or x1388 x480 (not x481))
+(or (not x1388) (not x480) (not x481))
+(or (not x210) x141)
+(or (not x210) (not x141) x142)
+(or x210 (not x141) (not x142))
+(or (not x1410) x1407 x1408)
+(or x1410 (not x1407) x1408)
+(or x1410 x1407 (not x1408))
+(or (not x1410) (not x1407) (not x1408))
+(or (not x557) x5 x32)
+(or x557 (not x5) x32)
+(or x557 x5 (not x32))
+(or (not x557) (not x5) (not x32))
+(or (not x683) x133 x204)
+(or x683 (not x133) x204)
+(or x683 x133 (not x204))
+(or (not x683) (not x133) (not x204))
+(or (not x987) x981 x982)
+(or x987 (not x981) x982)
+(or x987 x981 (not x982))
+(or (not x987) (not x981) (not x982))
+(or (not x181) x88)
+(or (not x181) (not x88) x89)
+(or x181 (not x88) (not x89))
+(or (not x852) x131 x182)
+(or x852 (not x131) x182)
+(or x852 x131 (not x182))
+(or (not x852) (not x131) (not x182))
+(or (not x567) x27 x69)
+(or x567 (not x27) x69)
+(or x567 x27 (not x69))
+(or (not x567) (not x27) (not x69))
+(or (not x705) x114 x126)
+(or x705 (not x114) x126)
+(or x705 x114 (not x126))
+(or (not x705) (not x114) (not x126))
+(or (not x1316) x41 x43)
+(or x1316 (not x41) x43)
+(or x1316 x41 (not x43))
+(or (not x1316) (not x41) (not x43))
+(or (not x220) x136)
+(or (not x220) (not x136) x137)
+(or x220 (not x136) (not x137))
+(or (not x767) x231 x261)
+(or x767 (not x231) x261)
+(or x767 x231 (not x261))
+(or (not x767) (not x231) (not x261))
+(or (not x375) x56)
+(or (not x375) (not x56) x84)
+(or x375 (not x56) (not x84))
+(or (not x374) x56)
+(or (not x374) (not x56) x82)
+(or x374 (not x56) (not x82) (not x83))
+(or (not x374) (not x56) (not x82) x83)
+(or (not x1216) x73 x103)
+(or x1216 (not x73) x103)
+(or x1216 x73 (not x103))
+(or (not x1216) (not x73) (not x103))
+(or (not x820) x535 x817)
+(or x820 (not x535) x817)
+(or x820 x535 (not x817))
+(or (not x820) (not x535) (not x817))
+(or (not x682) x227 x228)
+(or x682 (not x227) x228)
+(or x682 x227 (not x228))
+(or (not x682) (not x227) (not x228))
+(or (not x1214) x1209 x1210)
+(or x1214 (not x1209) x1210)
+(or x1214 x1209 (not x1210))
+(or (not x1214) (not x1209) (not x1210))
+(or (not x192) x77)
+(or (not x192) (not x77) x78)
+(or x192 (not x77) (not x78))
+(or (not x1362) x1355 x1356)
+(or x1362 (not x1355) x1356)
+(or x1362 x1355 (not x1356))
+(or (not x1362) (not x1355) (not x1356))
+(or (not x818) x277 x278)
+(or x818 (not x277) x278)
+(or x818 x277 (not x278))
+(or (not x818) (not x277) (not x278))
+(or (not x1108) x223 x278)
+(or x1108 (not x223) x278)
+(or x1108 x223 (not x278))
+(or (not x1108) (not x223) (not x278))
+(or (not x633) x130 x142)
+(or x633 (not x130) x142)
+(or x633 x130 (not x142))
+(or (not x633) (not x130) (not x142))
+(or (not x669) x493 x668)
+(or x669 (not x493) x668)
+(or x669 x493 (not x668))
+(or (not x669) (not x493) (not x668))
+(or (not x779) x212 x235)
+(or x779 (not x212) x235)
+(or x779 x212 (not x235))
+(or (not x779) (not x212) (not x235))
+(or (not x226) x133)
+(or (not x226) (not x133) x134)
+(or x226 (not x133) (not x134))
+(or (not x743) x121 x223)
+(or x743 (not x121) x223)
+(or x743 x121 (not x223))
+(or (not x743) (not x121) (not x223))
+(or (not x1332) x223 x247)
+(or x1332 (not x223) x247)
+(or x1332 x223 (not x247))
+(or (not x1332) (not x223) (not x247))
+(or (not x1295) x359 x454)
+(or x1295 (not x359) x454)
+(or x1295 x359 (not x454))
+(or (not x1295) (not x359) (not x454))
+(or (not x942) x567 x939)
+(or x942 (not x567) x939)
+(or x942 x567 (not x939))
+(or (not x942) (not x567) (not x939))
+(or (not x1098) x390 x391)
+(or x1098 (not x390) x391)
+(or x1098 x390 (not x391))
+(or (not x1098) (not x390) (not x391))
+(or (not x782) x114 x141)
+(or x782 (not x114) x141)
+(or x782 x114 (not x141))
+(or (not x782) (not x114) (not x141))
+(or (not x1085) x17 x41)
+(or x1085 (not x17) x41)
+(or x1085 x17 (not x41))
+(or (not x1085) (not x17) (not x41))
+(or (not x998) x993 x994)
+(or x998 (not x993) x994)
+(or x998 x993 (not x994))
+(or (not x998) (not x993) (not x994))
+(or (not x454) x43)
+(or (not x454) (not x43) x69)
+(or x454 (not x43) (not x69) (not x70))
+(or (not x454) (not x43) (not x69) x70)
+(or (not x908) x178 x190)
+(or x908 (not x178) x190)
+(or x908 x178 (not x190))
+(or (not x908) (not x178) (not x190))
+(or (not x200) x69)
+(or (not x200) (not x69) x70)
+(or x200 (not x69) (not x70))
+(or (not x406) x51)
+(or (not x406) (not x51) x77)
+(or x406 (not x51) (not x77) (not x78))
+(or (not x406) (not x51) (not x77) x78)
+(or (not x661) x659 x660)
+(or x661 (not x659) x660)
+(or x661 x659 (not x660))
+(or (not x661) (not x659) (not x660))
+(or (not x1175) x1172 x1173)
+(or x1175 (not x1172) x1173)
+(or x1175 x1172 (not x1173))
+(or (not x1175) (not x1172) (not x1173))
+(or (not x583) x19 x88)
+(or x583 (not x19) x88)
+(or x583 x19 (not x88))
+(or (not x583) (not x19) (not x88))
+(or (not x909) x303 x304)
+(or x909 (not x303) x304)
+(or x909 x303 (not x304))
+(or (not x909) (not x303) (not x304))
+(or (not x419) x49)
+(or (not x419) (not x49) x77)
+(or x419 (not x49) (not x77))
+(or (not x973) x967 x968)
+(or x973 (not x967) x968)
+(or x973 x967 (not x968))
+(or (not x973) (not x967) (not x968))
+(or (not x804) x273 x274)
+(or x804 (not x273) x274)
+(or x804 x273 (not x274))
+(or (not x804) (not x273) (not x274))
+(or (not x1387) x65 x66)
+(or x1387 (not x65) x66)
+(or x1387 x65 (not x66))
+(or (not x1387) (not x65) (not x66))
+(or (not x263) x33)
+(or (not x263) (not x33) x34)
+(or x263 (not x33) (not x34))
+(or (not x846) x285 x286)
+(or x846 (not x285) x286)
+(or x846 x285 (not x286))
+(or (not x846) (not x285) (not x286))
+(or (not x1000) x209 x264)
+(or x1000 (not x209) x264)
+(or x1000 x209 (not x264))
+(or (not x1000) (not x209) (not x264))
+(or (not x447) x70)
+(or (not x447) (not x70) x71)
+(or x447 (not x70) (not x71) (not x73))
+(or (not x447) (not x70) (not x71) x73)
+(or (not x822) x820 x821)
+(or x822 (not x820) x821)
+(or x822 x820 (not x821))
+(or (not x822) (not x820) (not x821))
+(or (not x193) x76)
+(or (not x193) (not x76) x77)
+(or x193 (not x76) (not x77))
+(or (not x477) x65)
+(or (not x477) (not x65) x66)
+(or x477 (not x65) (not x66) (not x68))
+(or (not x477) (not x65) (not x66) x68)
+(or (not x914) x909 x910)
+(or x914 (not x909) x910)
+(or x914 x909 (not x910))
+(or (not x914) (not x909) (not x910))
+(or (not x658) x138 x199)
+(or x658 (not x138) x199)
+(or x658 x138 (not x199))
+(or (not x658) (not x138) (not x199))
+(or (not x740) x107 x119)
+(or x740 (not x107) x119)
+(or x740 x107 (not x119))
+(or (not x740) (not x107) (not x119))
+(or (not x1035) x362 x363)
+(or x1035 (not x362) x363)
+(or x1035 x362 (not x363))
+(or (not x1035) (not x362) (not x363))
+(or (not x708) x128 x209)
+(or x708 (not x128) x209)
+(or x708 x128 (not x209))
+(or (not x708) (not x128) (not x209))
+(or (not x1305) x1290 x1291)
+(or x1305 (not x1290) x1291)
+(or x1305 x1290 (not x1291))
+(or (not x1305) (not x1290) (not x1291))
+(or (not x405) x77)
+(or (not x405) (not x77) x78)
+(or x405 (not x77) (not x78) (not x80))
+(or (not x405) (not x77) (not x78) x80)
+(or (not x290) x101)
+(or (not x290) (not x101) x102)
+(or x290 (not x101) (not x102))
+(or (not x701) x699 x700)
+(or x701 (not x699) x700)
+(or x701 x699 (not x700))
+(or (not x701) (not x699) (not x700))
+(or (not x919) x307 x308)
+(or x919 (not x307) x308)
+(or x919 x307 (not x308))
+(or (not x919) (not x307) (not x308))
+(or (not x712) x239 x240)
+(or x712 (not x239) x240)
+(or x712 x239 (not x240))
+(or (not x712) (not x239) (not x240))
+(or (not x1398) x66 x94)
+(or x1398 (not x66) x94)
+(or x1398 x66 (not x94))
+(or (not x1398) (not x66) (not x94))
+(or (not x1359) x1357 x1358)
+(or x1359 (not x1357) x1358)
+(or x1359 x1357 (not x1358))
+(or (not x1359) (not x1357) (not x1358))
+(or (not x355) x60)
+(or (not x355) (not x60) x86)
+(or x355 (not x60) (not x86))
+(or (not x1170) x12 x36)
+(or x1170 (not x12) x36)
+(or x1170 x12 (not x36))
+(or (not x1170) (not x12) (not x36))
+(or (not x1174) x422 x423)
+(or x1174 (not x422) x423)
+(or x1174 x422 (not x423))
+(or (not x1174) (not x422) (not x423))
+(or (not x1165) x1163 x637)
+(or x1165 (not x1163) x637)
+(or x1165 x1163 (not x637))
+(or (not x1165) (not x1163) (not x637))
+(or (not x864) x862 x863)
+(or x864 (not x862) x863)
+(or x864 x862 (not x863))
+(or (not x864) (not x862) (not x863))
+(or (not x1087) x221 x276)
+(or x1087 (not x221) x276)
+(or x1087 x221 (not x276))
+(or (not x1087) (not x221) (not x276))
+(or (not x1054) x112 x187)
+(or x1054 (not x112) x187)
+(or x1054 x112 (not x187))
+(or (not x1054) (not x112) (not x187))
+(or (not x1249) x444 x445)
+(or x1249 (not x444) x445)
+(or x1249 x444 (not x445))
+(or (not x1249) (not x444) (not x445))
+(or (not x487) x39)
+(or (not x487) (not x39) x63)
+(or x487 (not x39) (not x63) (not x64))
+(or (not x487) (not x39) (not x63) x64)
+(or (not x441) x71)
+(or (not x441) (not x71) x72)
+(or x441 (not x71) (not x72) (not x74))
+(or (not x441) (not x71) (not x72) x74)
+(or (not x249) x40)
+(or (not x249) (not x40) x41)
+(or x249 (not x40) (not x41))
+(or (not x629) x134 x188)
+(or x629 (not x134) x188)
+(or x629 x134 (not x188))
+(or (not x629) (not x134) (not x188))
+(or (not x1053) x19 x43)
+(or x1053 (not x19) x43)
+(or x1053 x19 (not x43))
+(or (not x1053) (not x19) (not x43))
+(or (not x415) x51)
+(or (not x415) (not x51) x75)
+(or x415 (not x51) (not x75) (not x76))
+(or (not x415) (not x51) (not x75) x76)
+(or (not x873) x128 x185)
+(or x873 (not x128) x185)
+(or x873 x128 (not x185))
+(or (not x873) (not x128) (not x185))
+(or (not x190) x79)
+(or (not x190) (not x79) x80)
+(or x190 (not x79) (not x80))
+(or (not x936) x313 x314)
+(or x936 (not x313) x314)
+(or x936 x313 (not x314))
+(or (not x936) (not x313) (not x314))
+(or (not x1274) x449 x450)
+(or x1274 (not x449) x450)
+(or x1274 x449 (not x450))
+(or (not x1274) (not x449) (not x450))
+(or (not x665) x122 x134)
+(or x665 (not x122) x134)
+(or x665 x122 (not x134))
+(or (not x665) (not x122) (not x134))
+(or (not x714) x502 x713)
+(or x714 (not x502) x713)
+(or x714 x502 (not x713))
+(or (not x714) (not x502) (not x713))
+(or (not x1386) x1384 x1385)
+(or x1386 (not x1384) x1385)
+(or x1386 x1384 (not x1385))
+(or (not x1386) (not x1384) (not x1385))
+(or (not x1241) x1230 x1231)
+(or x1241 (not x1230) x1231)
+(or x1241 x1230 (not x1231))
+(or (not x1241) (not x1230) (not x1231))
+(or (not x413) x50)
+(or (not x413) (not x50) x78)
+(or x413 (not x50) (not x78))
+(or (not x1113) x1110 x1111)
+(or x1113 (not x1110) x1111)
+(or x1113 x1110 (not x1111))
+(or (not x1113) (not x1110) (not x1111))
+(or (not x1222) x1219 x1220)
+(or x1222 (not x1219) x1220)
+(or x1222 x1219 (not x1220))
+(or (not x1222) (not x1219) (not x1220))
+(or (not x1237) x441 x1223)
+(or x1237 (not x441) x1223)
+(or x1237 x441 (not x1223))
+(or (not x1237) (not x441) (not x1223))
+(or (not x997) x346 x347)
+(or x997 (not x346) x347)
+(or x997 x346 (not x347))
+(or (not x997) (not x346) (not x347))
+(or (not x983) x339 x340)
+(or x983 (not x339) x340)
+(or x983 x339 (not x340))
+(or (not x983) (not x339) (not x340))
+(or (not x456) x44)
+(or (not x456) (not x44) x70)
+(or x456 (not x44) (not x70))
+(or (not x1207) x235 x290)
+(or x1207 (not x235) x290)
+(or x1207 x235 (not x290))
+(or (not x1207) (not x235) (not x290))
+(or (not x1070) x18 x42)
+(or x1070 (not x18) x42)
+(or x1070 x18 (not x42))
+(or (not x1070) (not x18) (not x42))
+(or (not x795) x790 x791)
+(or x795 (not x790) x791)
+(or x795 x790 (not x791))
+(or (not x795) (not x790) (not x791))
+(or (not x1366) x1362 x1363)
+(or x1366 (not x1362) x1363)
+(or x1366 x1362 (not x1363))
+(or (not x1366) (not x1362) (not x1363))
+(or (not x1071) x111 x190)
+(or x1071 (not x111) x190)
+(or x1071 x111 (not x190))
+(or (not x1071) (not x111) (not x190))
+(or (not x1184) x1182 x1183)
+(or x1184 (not x1182) x1183)
+(or x1184 x1182 (not x1183))
+(or (not x1184) (not x1182) (not x1183))
+(or (not x941) x320 x321)
+(or x941 (not x320) x321)
+(or x941 x320 (not x321))
+(or (not x941) (not x320) (not x321))
+(or (not x744) x511 x743)
+(or x744 (not x511) x743)
+(or x744 x511 (not x743))
+(or (not x744) (not x511) (not x743))
+(or (not x861) x100 x103)
+(or x861 (not x100) x103)
+(or x861 x100 (not x103))
+(or (not x861) (not x100) (not x103))
+(or (not x551) x8 x35)
+(or x551 (not x8) x35)
+(or x551 x8 (not x35))
+(or (not x551) (not x8) (not x35))
+(or (not x334) x63)
+(or (not x334) (not x63) x89)
+(or x334 (not x63) (not x89))
+(or (not x1187) x64 x104)
+(or x1187 (not x64) x104)
+(or x1187 x64 (not x104))
+(or (not x1187) (not x64) (not x104))
+(or (not x1112) x1104 x1105)
+(or x1112 (not x1104) x1105)
+(or x1112 x1104 (not x1105))
+(or (not x1112) (not x1104) (not x1105))
+(or (not x521) x23 x50)
+(or x521 (not x23) x50)
+(or x521 x23 (not x50))
+(or (not x521) (not x23) (not x50))
+(or (not x848) x543 x845)
+(or x848 (not x543) x845)
+(or x848 x543 (not x845))
+(or (not x848) (not x543) (not x845))
+(or (not x1119) x68 x108)
+(or x1119 (not x68) x108)
+(or x1119 x68 (not x108))
+(or (not x1119) (not x68) (not x108))
+(or (not x545) x11 x38)
+(or x545 (not x11) x38)
+(or x545 x11 (not x38))
+(or (not x545) (not x11) (not x38))
+(or (not x1371) x1366 x1367)
+(or x1371 (not x1366) x1367)
+(or x1371 x1366 (not x1367))
+(or (not x1371) (not x1366) (not x1367))
+(or (not x1391) x227 x251)
+(or x1391 (not x227) x251)
+(or x1391 x227 (not x251))
+(or (not x1391) (not x227) (not x251))
+(or (not x734) x507 x733)
+(or x734 (not x507) x733)
+(or x734 x507 (not x733))
+(or (not x734) (not x507) (not x733))
+(or (not x564) x98 x113)
+(or x564 (not x98) x113)
+(or x564 x98 (not x113))
+(or (not x564) (not x98) (not x113))
+(or (not x1215) x1213 x1214)
+(or x1215 (not x1213) x1214)
+(or x1215 x1213 (not x1214))
+(or (not x1215) (not x1213) (not x1214))
+(or (not x986) x208 x262)
+(or x986 (not x208) x262)
+(or x986 x208 (not x262))
+(or (not x986) (not x208) (not x262))
+(or (not x444) x46)
+(or (not x444) (not x46) x72)
+(or x444 (not x46) (not x72))
+(or (not x854) x101 x104)
+(or x854 (not x101) x104)
+(or x854 x101 (not x104))
+(or (not x854) (not x101) (not x104))
+(or (not x954) x328 x329)
+(or x954 (not x328) x329)
+(or x954 x328 (not x329))
+(or (not x954) (not x328) (not x329))
+(or (not x643) x142 x195)
+(or x643 (not x142) x195)
+(or x643 x142 (not x195))
+(or (not x643) (not x142) (not x195))
+(or (not x1254) x1246 x1247)
+(or x1254 (not x1246) x1247)
+(or x1254 x1246 (not x1247))
+(or (not x1254) (not x1246) (not x1247))
+(or (not x327) x64)
+(or (not x327) (not x64) x90)
+(or x327 (not x64) (not x90))
+(or (not x755) x104 x116)
+(or x755 (not x104) x116)
+(or x755 x104 (not x116))
+(or (not x755) (not x104) (not x116))
+(or (not x1261) x1255 x1256)
+(or x1261 (not x1255) x1256)
+(or x1261 x1255 (not x1256))
+(or (not x1261) (not x1255) (not x1256))
+(or (not x215) x57)
+(or (not x215) (not x57) x58)
+(or x215 (not x57) (not x58))
+(or (not x680) x119 x131)
+(or x680 (not x119) x131)
+(or x680 x119 (not x131))
+(or (not x680) (not x119) (not x131))
+(or (not x1223) x9 x33)
+(or x1223 (not x9) x33)
+(or x1223 x9 (not x33))
+(or (not x1223) (not x9) (not x33))
+(or (not x385) x80)
+(or (not x385) (not x80) x81)
+(or x385 (not x80) (not x81) (not x82))
+(or (not x385) (not x80) (not x81) x82)
+(or (not x286) x103)
+(or (not x286) (not x103) x104)
+(or x286 (not x103) (not x104))
+(or (not x560) x100 x115)
+(or x560 (not x100) x115)
+(or x560 x100 (not x115))
+(or (not x560) (not x100) (not x115))
+(or (not x323) x89)
+(or (not x323) (not x89) x90)
+(or x323 (not x89) (not x90) (not x92))
+(or (not x323) (not x89) (not x90) x92)
+(or (not x856) x234 x257)
+(or x856 (not x234) x257)
+(or x856 x234 (not x257))
+(or (not x856) (not x234) (not x257))
+(or (not x1156) x413 x414)
+(or x1156 (not x413) x414)
+(or x1156 x413 (not x414))
+(or (not x1156) (not x413) (not x414))
+(or (not x296) x98)
+(or (not x296) (not x98) x99)
+(or x296 (not x98) (not x99))
+(or (not x1130) x1127 x1128)
+(or x1130 (not x1127) x1128)
+(or x1130 x1127 (not x1128))
+(or (not x1130) (not x1127) (not x1128))
+(or (not x1072) x274 x297)
+(or x1072 (not x274) x297)
+(or x1072 x274 (not x297))
+(or (not x1072) (not x274) (not x297))
+(or (not x304) x94)
+(or (not x304) (not x94) x95)
+(or x304 (not x94) (not x95))
+(or (not x1354) x68 x96)
+(or x1354 (not x68) x96)
+(or x1354 x68 (not x96))
+(or (not x1354) (not x68) (not x96))
+(or (not x481) x40)
+(or (not x481) (not x40) x64)
+(or x481 (not x40) (not x64) (not x65))
+(or (not x481) (not x40) (not x64) x65)
+(or (not x584) x103 x183)
+(or x584 (not x103) x183)
+(or x584 x103 (not x183))
+(or (not x584) (not x103) (not x183))
+(or (not x904) x559 x901)
+(or x904 (not x559) x901)
+(or x904 x559 (not x901))
+(or (not x904) (not x559) (not x901))
+(or (not x537) x15 x42)
+(or x537 (not x15) x42)
+(or x537 x15 (not x42))
+(or (not x537) (not x15) (not x42))
+(or (not x512) x124 x139)
+(or x512 (not x124) x139)
+(or x512 x124 (not x139))
+(or (not x512) (not x124) (not x139))
+(or (not x1313) x463 x464)
+(or x1313 (not x463) x464)
+(or x1313 x463 (not x464))
+(or (not x1313) (not x463) (not x464))
+(or (not x1131) x401 x402)
+(or x1131 (not x401) x402)
+(or x1131 x401 (not x402))
+(or (not x1131) (not x401) (not x402))
+(or (not x1011) x64 x73)
+(or x1011 (not x64) x73)
+(or x1011 x64 (not x73))
+(or (not x1011) (not x64) (not x73))
+(or (not x569) x26 x68)
+(or x569 (not x26) x68)
+(or x569 x26 (not x68))
+(or (not x569) (not x26) (not x68))
+(or (not x266) x113)
+(or (not x266) (not x113) x114)
+(or x266 (not x113) (not x114))
+(or (not x870) x238 x261)
+(or x870 (not x238) x261)
+(or x870 x238 (not x261))
+(or (not x870) (not x238) (not x261))
+(or (not x216) x138)
+(or (not x216) (not x138) x139)
+(or x216 (not x138) (not x139))
+(or (not x925) x254 x277)
+(or x925 (not x254) x277)
+(or x925 x254 (not x277))
+(or (not x925) (not x254) (not x277))
+(or (not x1248) x294 x345)
+(or x1248 (not x294) x345)
+(or x1248 x294 (not x345))
+(or (not x1248) (not x294) (not x345))
+(or (not x407) x51)
+(or (not x407) (not x51) x79)
+(or x407 (not x51) (not x79))
+(or (not x966) x334 x335)
+(or x966 (not x334) x335)
+(or x966 x334 (not x335))
+(or (not x966) (not x334) (not x335))
+(or (not x1318) x1311 x1312)
+(or x1318 (not x1311) x1312)
+(or x1318 x1311 (not x1312))
+(or (not x1318) (not x1311) (not x1312))
+(or (not x1275) x1268 x1269)
+(or x1275 (not x1268) x1269)
+(or x1275 x1268 (not x1269))
+(or (not x1275) (not x1268) (not x1269))
+(or (not x486) x39)
+(or (not x486) (not x39) x65)
+(or x486 (not x39) (not x65))
+(or (not x660) x123 x135)
+(or x660 (not x123) x135)
+(or x660 x123 (not x135))
+(or (not x660) (not x123) (not x135))
+(or (not x1416) x1414 x1160)
+(or x1416 (not x1414) x1160)
+(or x1416 x1414 (not x1160))
+(or (not x1416) (not x1414) (not x1160))
+(or (not x380) x1)
+(or (not x380) (not x1) x2)
+(or x380 (not x1) (not x2))
+(or (not x1280) x241 x296)
+(or x1280 (not x241) x296)
+(or x1280 x241 (not x296))
+(or (not x1280) (not x241) (not x296))
+(or (not x759) x517 x758)
+(or x759 (not x517) x758)
+(or x759 x517 (not x758))
+(or (not x759) (not x517) (not x758))
+(or (not x532) x114 x129)
+(or x532 (not x114) x129)
+(or x532 x114 (not x129))
+(or (not x532) (not x114) (not x129))
+(or (not x418) x49)
+(or (not x418) (not x49) x75)
+(or x418 (not x49) (not x75) (not x76))
+(or (not x418) (not x49) (not x75) x76)
+(or (not x849) x232 x255)
+(or x849 (not x232) x255)
+(or x849 x232 (not x255))
+(or (not x849) (not x232) (not x255))
+(or (not x707) x237 x238)
+(or x707 (not x237) x238)
+(or x707 x237 (not x238))
+(or (not x707) (not x237) (not x238))
+(or (not x514) x123 x138)
+(or x514 (not x123) x138)
+(or x514 x123 (not x138))
+(or (not x514) (not x123) (not x138))
+(or (not x465) x67)
+(or (not x465) (not x67) x68)
+(or x465 (not x67) (not x68) (not x70))
+(or (not x465) (not x67) (not x68) x70)
+(or (not x738) x122 x221)
+(or x738 (not x122) x221)
+(or x738 x122 (not x221))
+(or (not x738) (not x122) (not x221))
+(or (not x254) x119)
+(or (not x254) (not x119) x120)
+(or x254 (not x119) (not x120))
+(or (not x439) x47)
+(or (not x439) (not x47) x71)
+(or x439 (not x47) (not x71) (not x72))
+(or (not x439) (not x47) (not x71) x72)
+(or (not x367) x57)
+(or (not x367) (not x57) x83)
+(or x367 (not x57) (not x83) (not x84))
+(or (not x367) (not x57) (not x83) x84)
+(or (not x597) x12 x81)
+(or x597 (not x12) x81)
+(or x597 x12 (not x81))
+(or (not x597) (not x12) (not x81))
+(or (not x797) x271 x272)
+(or x797 (not x271) x272)
+(or x797 x271 (not x272))
+(or (not x797) (not x271) (not x272))
+(or (not x1149) x1146 x1147)
+(or x1149 (not x1146) x1147)
+(or x1149 x1146 (not x1147))
+(or (not x1149) (not x1146) (not x1147))
+(or (not x710) x113 x125)
+(or x710 (not x113) x125)
+(or x710 x113 (not x125))
+(or (not x710) (not x113) (not x125))
+(or (not x803) x111 x138)
+(or x803 (not x111) x138)
+(or x803 x111 (not x138))
+(or (not x803) (not x111) (not x138))
+(or (not x398) x78)
+(or (not x398) (not x78) x79)
+(or x398 (not x78) (not x79) (not x80))
+(or (not x398) (not x78) (not x79) x80)
+(or (not x446) x70)
+(or (not x446) (not x70) x71)
+(or x446 (not x70) (not x71) (not x72))
+(or (not x446) (not x70) (not x71) x72)
+(or (not x1210) x1207 x1208)
+(or x1210 (not x1207) x1208)
+(or x1210 x1207 (not x1208))
+(or (not x1210) (not x1207) (not x1208))
+(or (not x301) x14)
+(or (not x301) (not x14) x15)
+(or x301 (not x14) (not x15))
+(or (not x1077) x380 x381)
+(or x1077 (not x380) x381)
+(or x1077 x380 (not x381))
+(or (not x1077) (not x380) (not x381))
+(or (not x1418) x1415 x1416)
+(or x1418 (not x1415) x1416)
+(or x1418 x1415 (not x1416))
+(or (not x1418) (not x1415) (not x1416))
+(or (not x985) x983 x984)
+(or x985 (not x983) x984)
+(or x985 x983 (not x984))
+(or (not x985) (not x983) (not x984))
+(or (not x197) x72)
+(or (not x197) (not x72) x73)
+(or x197 (not x72) (not x73))
+(or (not x1034) x1032 x1033)
+(or x1034 (not x1032) x1033)
+(or x1034 x1032 (not x1033))
+(or (not x1034) (not x1032) (not x1033))
+(or (not x717) x241 x242)
+(or x717 (not x241) x242)
+(or x717 x241 (not x242))
+(or (not x717) (not x241) (not x242))
+(or (not x1238) x1234 x1235)
+(or x1238 (not x1234) x1235)
+(or x1238 x1234 (not x1235))
+(or (not x1238) (not x1234) (not x1235))
+(or (not x1343) x56 x57)
+(or x1343 (not x56) x57)
+(or x1343 x56 (not x57))
+(or (not x1343) (not x56) (not x57))
+(or (not x1151) x1148 x1149)
+(or x1151 (not x1148) x1149)
+(or x1151 x1148 (not x1149))
+(or (not x1151) (not x1148) (not x1149))
+(or (not x1107) x58 x67)
+(or x1107 (not x58) x67)
+(or x1107 x58 (not x67))
+(or (not x1107) (not x58) (not x67))
+(or (not x274) x109)
+(or (not x274) (not x109) x110)
+(or x274 (not x109) (not x110))
+(or (not x581) x20 x89)
+(or x581 (not x20) x89)
+(or x581 x20 (not x89))
+(or (not x581) (not x20) (not x89))
+(or (not x883) x553 x880)
+(or x883 (not x553) x880)
+(or x883 x553 (not x880))
+(or (not x883) (not x553) (not x880))
+(or (not x1088) x388 x389)
+(or x1088 (not x388) x389)
+(or x1088 x388 (not x389))
+(or (not x1088) (not x388) (not x389))
+(or (not x1096) x1089 x1090)
+(or x1096 (not x1089) x1090)
+(or x1096 x1089 (not x1090))
+(or (not x1096) (not x1089) (not x1090))
+(or (not x536) x112 x127)
+(or x536 (not x112) x127)
+(or x536 x112 (not x127))
+(or (not x536) (not x112) (not x127))
+(or (not x1224) x51 x60)
+(or x1224 (not x51) x60)
+(or x1224 x51 (not x60))
+(or (not x1224) (not x51) (not x60))
+(or (not x1298) x1296 x1297)
+(or x1298 (not x1296) x1297)
+(or x1298 x1296 (not x1297))
+(or (not x1298) (not x1296) (not x1297))
+(or (not x183) x86)
+(or (not x183) (not x86) x87)
+(or x183 (not x86) (not x87))
+(or (not x1382) x204 x205)
+(or x1382 (not x204) x205)
+(or x1382 x204 (not x205))
+(or (not x1382) (not x204) (not x205))
+(or (not x1409) x1404 x1405)
+(or x1409 (not x1404) x1405)
+(or x1409 x1404 (not x1405))
+(or (not x1409) (not x1404) (not x1405))
+(or (not x1068) x1060 x1061)
+(or x1068 (not x1060) x1061)
+(or x1068 x1060 (not x1061))
+(or (not x1068) (not x1060) (not x1061))
+(or (not x862) x547 x859)
+(or x862 (not x547) x859)
+(or x862 x547 (not x859))
+(or (not x862) (not x547) (not x859))
+(or (not x1078) x1071 x1072)
+(or x1078 (not x1071) x1072)
+(or x1078 x1071 (not x1072))
+(or (not x1078) (not x1071) (not x1072))
+(or (not x918) x95 x122)
+(or x918 (not x95) x122)
+(or x918 x95 (not x122))
+(or (not x918) (not x95) (not x122))
+(or (not x1188) x196 x197)
+(or x1188 (not x196) x197)
+(or x1188 x196 (not x197))
+(or (not x1188) (not x196) (not x197))
+(or (not x721) x719 x720)
+(or x721 (not x719) x720)
+(or x721 x719 (not x720))
+(or (not x721) (not x719) (not x720))
+(or (not x1367) x249 x304)
+(or x1367 (not x249) x304)
+(or x1367 x249 (not x304))
+(or (not x1367) (not x249) (not x304))
+(or (not x930) x309 x310)
+(or x930 (not x309) x310)
+(or x930 x309 (not x310))
+(or (not x930) (not x309) (not x310))
+(or (not x348) x61)
+(or (not x348) (not x61) x87)
+(or x348 (not x61) (not x87))
+(or (not x273) x28)
+(or (not x273) (not x28) x29)
+(or x273 (not x28) (not x29))
+(or (not x906) x904 x905)
+(or x906 (not x904) x905)
+(or x906 x904 (not x905))
+(or (not x906) (not x904) (not x905))
+(or (not x1351) x1346 x1347)
+(or x1351 (not x1346) x1347)
+(or x1351 x1346 (not x1347))
+(or (not x1351) (not x1346) (not x1347))
+(or (not x1051) x1049 x1050)
+(or x1051 (not x1049) x1050)
+(or x1051 x1049 (not x1050))
+(or (not x1051) (not x1049) (not x1050))
+(or (not x965) x283 x331)
+(or x965 (not x283) x331)
+(or x965 x283 (not x331))
+(or (not x965) (not x283) (not x331))
+(or (not x724) x504 x723)
+(or x724 (not x504) x723)
+(or x724 x504 (not x723))
+(or (not x724) (not x504) (not x723))
+(or (not x814) x222 x245)
+(or x814 (not x222) x245)
+(or x814 x222 (not x245))
+(or (not x814) (not x222) (not x245))
+(or (not x656) x654 x655)
+(or x656 (not x654) x655)
+(or x656 x654 (not x655))
+(or (not x656) (not x654) (not x655))
+(or (not x819) x94 x106)
+(or x819 (not x94) x106)
+(or x819 x94 (not x106))
+(or (not x819) (not x94) (not x106))
+(or (not x695) x116 x128)
+(or x695 (not x116) x128)
+(or x695 x116 (not x128))
+(or (not x695) (not x116) (not x128))
+(or (not x1079) x1077 x1078)
+(or x1079 (not x1077) x1078)
+(or x1079 x1077 (not x1078))
+(or (not x1079) (not x1077) (not x1078))
+(or (not x1230) x1228 x1229)
+(or x1230 (not x1228) x1229)
+(or x1230 x1228 (not x1229))
+(or (not x1230) (not x1228) (not x1229))
+(or (not x529) x19 x46)
+(or x529 (not x19) x46)
+(or x529 x19 (not x46))
+(or (not x529) (not x19) (not x46))
+(or (not x785) x525 x782)
+(or x785 (not x525) x782)
+(or x785 x525 (not x782))
+(or (not x785) (not x525) (not x782))
+(or (not x379) x81)
+(or (not x379) (not x81) x82)
+(or x379 (not x81) (not x82) (not x84))
+(or (not x379) (not x81) (not x82) x84)
+(or (not x1225) x102 x138)
+(or x1225 (not x102) x138)
+(or x1225 x102 (not x138))
+(or (not x1225) (not x102) (not x138))
+(or (not x1121) x303 x400)
+(or x1121 (not x303) x400)
+(or x1121 x303 (not x400))
+(or (not x1121) (not x303) (not x400))
+(or (not x692) x231 x232)
+(or x692 (not x231) x232)
+(or x692 x231 (not x232))
+(or (not x692) (not x231) (not x232))
+(or (not x1013) x358 x1005)
+(or x1013 (not x358) x1005)
+(or x1013 x358 (not x1005))
+(or (not x1013) (not x358) (not x1005))
+(or (not x1356) x380 x472)
+(or x1356 (not x380) x472)
+(or x1356 x380 (not x472))
+(or (not x1356) (not x380) (not x472))
+(or (not x1342) x1340 x1341)
+(or x1342 (not x1340) x1341)
+(or x1342 x1340 (not x1341))
+(or (not x1342) (not x1340) (not x1341))
+(or (not x1001) x995 x996)
+(or x1001 (not x995) x996)
+(or x1001 x995 (not x996))
+(or (not x1001) (not x995) (not x996))
+(or (not x279) x25)
+(or (not x279) (not x25) x26)
+(or x279 (not x25) (not x26))
+(or (not x570) x95 x110)
+(or x570 (not x95) x110)
+(or x570 x95 (not x110))
+(or (not x570) (not x95) (not x110))
+(or (not x390) x55)
+(or (not x390) (not x55) x81)
+(or x390 (not x55) (not x81))
+(or (not x179) x90)
+(or (not x179) (not x90) x91)
+(or x179 (not x90) (not x91))
+(or (not x1134) x1131 x1132)
+(or x1134 (not x1131) x1132)
+(or x1134 x1131 (not x1132))
+(or (not x1134) (not x1131) (not x1132))
+(or (not x543) x12 x39)
+(or x543 (not x12) x39)
+(or x543 x12 (not x39))
+(or (not x543) (not x12) (not x39))
+(or (not x762) x259 x260)
+(or x762 (not x259) x260)
+(or x762 x259 (not x260))
+(or (not x762) (not x259) (not x260))
+(or (not x1341) x1336 x1337)
+(or x1341 (not x1336) x1337)
+(or x1341 x1336 (not x1337))
+(or (not x1341) (not x1336) (not x1337))
+(or (not x1208) x431 x432)
+(or x1208 (not x431) x432)
+(or x1208 x431 (not x432))
+(or (not x1208) (not x431) (not x432))
+(or (not x698) x130 x207)
+(or x698 (not x130) x207)
+(or x698 x130 (not x207))
+(or (not x698) (not x130) (not x207))
+(or (not x1293) x42 x43)
+(or x1293 (not x42) x43)
+(or x1293 x42 (not x43))
+(or (not x1293) (not x42) (not x43))
+(or (not x1372) x2 x26)
+(or x1372 (not x2) x26)
+(or x1372 x2 (not x26))
+(or (not x1372) (not x2) (not x26))
+(or (not x694) x498 x693)
+(or x694 (not x498) x693)
+(or x694 x498 (not x693))
+(or (not x694) (not x498) (not x693))
+(or (not x1033) x1026 x1027)
+(or x1033 (not x1026) x1027)
+(or x1033 x1026 (not x1027))
+(or (not x1033) (not x1026) (not x1027))
+(or (not x811) x275 x276)
+(or x811 (not x275) x276)
+(or x811 x275 (not x276))
+(or (not x811) (not x275) (not x276))
+(or (not x790) x269 x270)
+(or x790 (not x269) x270)
+(or x790 x269 (not x270))
+(or (not x790) (not x269) (not x270))
+(or (not x222) x135)
+(or (not x222) (not x135) x136)
+(or x222 (not x135) (not x136))
+(or (not x368) x57)
+(or (not x368) (not x57) x85)
+(or x368 (not x57) (not x85))
+(or (not x647) x141 x196)
+(or x647 (not x141) x196)
+(or x647 x141 (not x196))
+(or (not x647) (not x141) (not x196))
+(or (not x606) x179 x194)
+(or x606 (not x179) x194)
+(or x606 x179 (not x194))
+(or (not x606) (not x179) (not x194))
+(or (not x799) x529 x796)
+(or x799 (not x529) x796)
+(or x799 x529 (not x796))
+(or (not x799) (not x529) (not x796))
+(or (not x1030) x1022 x1023)
+(or x1030 (not x1022) x1023)
+(or x1030 x1022 (not x1023))
+(or (not x1030) (not x1022) (not x1023))
+(or (not x516) x122 x137)
+(or x516 (not x122) x137)
+(or x516 x122 (not x137))
+(or (not x516) (not x122) (not x137))
+(or (not x542) x109 x124)
+(or x542 (not x109) x124)
+(or x542 x109 (not x124))
+(or (not x542) (not x109) (not x124))
+(or (not x666) x664 x665)
+(or x666 (not x664) x665)
+(or x666 x664 (not x665))
+(or (not x666) (not x664) (not x665))
+(or (not x703) x129 x208)
+(or x703 (not x129) x208)
+(or x703 x129 (not x208))
+(or (not x703) (not x129) (not x208))
+(or (not x681) x679 x680)
+(or x681 (not x679) x680)
+(or x681 x679 (not x680))
+(or (not x681) (not x679) (not x680))
+(or (not x468) x42)
+(or (not x468) (not x42) x68)
+(or x468 (not x42) (not x68))
+(or (not x886) x881 x882)
+(or x886 (not x881) x882)
+(or x886 x881 (not x882))
+(or (not x886) (not x881) (not x882))
+(or (not x1024) x213 x268)
+(or x1024 (not x213) x268)
+(or x1024 x213 (not x268))
+(or (not x1024) (not x213) (not x268))
+(or (not x577) x22 x91)
+(or x577 (not x22) x91)
+(or x577 x22 (not x91))
+(or (not x577) (not x22) (not x91))
+(or (not x1125) x225 x280)
+(or x1125 (not x225) x280)
+(or x1125 x225 (not x280))
+(or (not x1125) (not x225) (not x280))
+(or (not x625) x1 x70)
+(or x625 (not x1) x70)
+(or x625 x1 (not x70))
+(or (not x625) (not x1) (not x70))
+(or (not x316) x92)
+(or (not x316) (not x92) x93)
+(or x316 (not x92) (not x93))
+(or (not x496) x40 x67)
+(or x496 (not x40) x67)
+(or x496 x40 (not x67))
+(or (not x496) (not x40) (not x67))
+(or (not x479) x39)
+(or (not x479) (not x39) x67)
+(or x479 (not x39) (not x67))
+(or (not x898) x246 x269)
+(or x898 (not x246) x269)
+(or x898 x246 (not x269))
+(or (not x898) (not x246) (not x269))
+(or (not x1365) x477 x1352)
+(or x1365 (not x477) x1352)
+(or x1365 x477 (not x1352))
+(or (not x1365) (not x477) (not x1352))
+(or (not x979) x285 x338)
+(or x979 (not x285) x338)
+(or x979 x285 (not x338))
+(or (not x979) (not x285) (not x338))
+(or (not x642) x211 x212)
+(or x642 (not x211) x212)
+(or x642 x211 (not x212))
+(or (not x642) (not x211) (not x212))
+(or (not x250) x121)
+(or (not x250) (not x121) x122)
+(or x250 (not x121) (not x122))
+(or (not x198) x71)
+(or (not x198) (not x71) x72)
+(or x198 (not x71) (not x72))
+(or (not x838) x133 x180)
+(or x838 (not x133) x180)
+(or x838 x133 (not x180))
+(or (not x838) (not x133) (not x180))
+(or (not x650) x215 x216)
+(or x650 (not x215) x216)
+(or x650 x215 (not x216))
+(or (not x650) (not x215) (not x216))
+(or (not x1153) x65 x106)
+(or x1153 (not x65) x106)
+(or x1153 x65 (not x106))
+(or (not x1153) (not x65) (not x106))
+(or (not x1250) x1244 x1245)
+(or x1250 (not x1244) x1245)
+(or x1250 x1244 (not x1245))
+(or (not x1250) (not x1244) (not x1245))
+(or (not x430) x47)
+(or (not x430) (not x47) x73)
+(or x430 (not x47) (not x73) (not x74))
+(or (not x430) (not x47) (not x73) x74)
+(or (not x653) x139 x198)
+(or x653 (not x139) x198)
+(or x653 x139 (not x198))
+(or (not x653) (not x139) (not x198))
+(or (not x243) x43)
+(or (not x243) (not x43) x44)
+(or x243 (not x43) (not x44))
+(or (not x970) x965 x966)
+(or x970 (not x965) x966)
+(or x970 x965 (not x966))
+(or (not x970) (not x965) (not x966))
+(or (not x1239) x237 x292)
+(or x1239 (not x237) x292)
+(or x1239 x237 (not x292))
+(or (not x1239) (not x237) (not x292))
+(or (not x1111) x191 x192)
+(or x1111 (not x191) x192)
+(or x1111 x191 (not x192))
+(or (not x1111) (not x191) (not x192))
+(or (not x520) x120 x135)
+(or x520 (not x120) x135)
+(or x520 x120 (not x135))
+(or (not x520) (not x120) (not x135))
+(or (not x1166) x309 x412)
+(or x1166 (not x309) x412)
+(or x1166 x309 (not x412))
+(or (not x1166) (not x309) (not x412))
+(or (not x275) x27)
+(or (not x275) (not x27) x28)
+(or x275 (not x27) (not x28))
+(or (not x903) x94 x97)
+(or x903 (not x94) x97)
+(or x903 x94 (not x97))
+(or (not x903) (not x94) (not x97))
+(or (not x1396) x1 x25)
+(or x1396 (not x1) x25)
+(or x1396 x1 (not x25))
+(or (not x1396) (not x1) (not x25))
+(or (not x817) x109 x136)
+(or x817 (not x109) x136)
+(or x817 x109 (not x136))
+(or (not x817) (not x109) (not x136))
+(or (not x1074) x386 x1070)
+(or x1074 (not x386) x1070)
+(or x1074 x386 (not x1070))
+(or (not x1074) (not x386) (not x1070))
+(or (not x1014) x1010 x1011)
+(or x1014 (not x1010) x1011)
+(or x1014 x1010 (not x1011))
+(or (not x1014) (not x1010) (not x1011))
+(or (not x435) x72)
+(or (not x435) (not x72) x73)
+(or x435 (not x72) (not x73) (not x75))
+(or (not x435) (not x72) (not x73) x75)
+(or (not x1002) x350 x351)
+(or x1002 (not x350) x351)
+(or x1002 x350 (not x351))
+(or (not x1002) (not x350) (not x351))
+(or (not x1379) x1374 x1375)
+(or x1379 (not x1374) x1375)
+(or x1379 x1374 (not x1375))
+(or (not x1379) (not x1374) (not x1375))
+(or (not x1311) x215 x221)
+(or x1311 (not x215) x221)
+(or x1311 x215 (not x221))
+(or (not x1311) (not x215) (not x221))
+(or (not x1290) x455 x456)
+(or x1290 (not x455) x456)
+(or x1290 x455 (not x456))
+(or (not x1290) (not x455) (not x456))
+(or (not x1284) x1279 x1280)
+(or x1284 (not x1279) x1280)
+(or x1284 x1279 (not x1280))
+(or (not x1284) (not x1279) (not x1280))
+(or (not x1315) x1313 x1314)
+(or x1315 (not x1313) x1314)
+(or x1315 x1313 (not x1314))
+(or (not x1315) (not x1313) (not x1314))
+(or (not x1161) x415 x416)
+(or x1161 (not x415) x416)
+(or x1161 x415 (not x416))
+(or (not x1161) (not x415) (not x416))
+(or (not x191) x78)
+(or (not x191) (not x78) x79)
+(or x191 (not x78) (not x79))
+(or (not x1227) x338 x436)
+(or x1227 (not x338) x436)
+(or x1227 x338 (not x436))
+(or (not x1227) (not x338) (not x436))
+(or (not x331) x8)
+(or (not x331) (not x8) x9)
+(or x331 (not x8) (not x9))
+(or (not x791) x98 x110)
+(or x791 (not x98) x110)
+(or x791 x98 (not x110))
+(or (not x791) (not x98) (not x110))
+(or (not x1417) x488 x489)
+(or x1417 (not x488) x489)
+(or x1417 x488 (not x489))
+(or (not x1417) (not x488) (not x489))
+(or (not x902) x301 x302)
+(or x902 (not x301) x302)
+(or x902 x301 (not x302))
+(or (not x902) (not x301) (not x302))
+(or (not x397) x54)
+(or (not x397) (not x54) x78)
+(or x397 (not x54) (not x78) (not x79))
+(or (not x397) (not x54) (not x78) x79)
+(or (not x335) x63)
+(or (not x335) (not x63) x87)
+(or x335 (not x63) (not x87) (not x88))
+(or (not x335) (not x63) (not x87) x88)
+(or (not x1270) x451 x452)
+(or x1270 (not x451) x452)
+(or x1270 x451 (not x452))
+(or (not x1270) (not x451) (not x452))
+(or (not x1412) x927 x1401)
+(or x1412 (not x927) x1401)
+(or x1412 x927 (not x1401))
+(or (not x1412) (not x927) (not x1401))
+(or (not x1127) x1123 x1124)
+(or x1127 (not x1123) x1124)
+(or x1127 x1123 (not x1124))
+(or (not x1127) (not x1123) (not x1124))
+(or (not x548) x106 x121)
+(or x548 (not x106) x121)
+(or x548 x106 (not x121))
+(or (not x548) (not x106) (not x121))
+(or (not x1136) x66 x67)
+(or x1136 (not x66) x67)
+(or x1136 x66 (not x67))
+(or (not x1136) (not x66) (not x67))
+(or (not x1256) x71 x72)
+(or x1256 (not x71) x72)
+(or x1256 x71 (not x72))
+(or (not x1256) (not x71) (not x72))
+(or (not x796) x112 x139)
+(or x796 (not x112) x139)
+(or x796 x112 (not x139))
+(or (not x796) (not x112) (not x139))
+(or (not x1267) x72 x100)
+(or x1267 (not x72) x100)
+(or x1267 x72 (not x100))
+(or (not x1267) (not x72) (not x100))
+(or (not x771) x101 x113)
+(or x771 (not x101) x113)
+(or x771 x101 (not x113))
+(or (not x771) (not x101) (not x113))
+(or (not x685) x118 x130)
+(or x685 (not x118) x130)
+(or x685 x118 (not x130))
+(or (not x685) (not x118) (not x130))
+(or (not x321) x65)
+(or (not x321) (not x65) x89)
+(or x321 (not x65) (not x89) (not x90))
+(or (not x321) (not x65) (not x89) x90)
+(or (not x704) x500 x703)
+(or x704 (not x500) x703)
+(or x704 x500 (not x703))
+(or (not x704) (not x500) (not x703))
+(or (not x968) x118 x182)
+(or x968 (not x118) x182)
+(or x968 x118 (not x182))
+(or (not x968) (not x118) (not x182))
+(or (not x257) x36)
+(or (not x257) (not x36) x37)
+(or x257 (not x36) (not x37))
+(or (not x201) x68)
+(or (not x201) (not x68) x69)
+(or x201 (not x68) (not x69))
+(or (not x284) x104)
+(or (not x284) (not x104) x105)
+(or x284 (not x104) (not x105))
+(or (not x615) x140 x182)
+(or x615 (not x140) x182)
+(or x615 x140 (not x182))
+(or (not x615) (not x140) (not x182))
+(or (not x349) x61)
+(or (not x349) (not x61) x85)
+(or x349 (not x61) (not x85) (not x86))
+(or (not x349) (not x61) (not x85) x86)
+(or (not x711) x709 x710)
+(or x711 (not x709) x710)
+(or x711 x709 (not x710))
+(or (not x711) (not x709) (not x710))
+(or (not x1242) x1240 x1241)
+(or x1242 (not x1240) x1241)
+(or x1242 x1240 (not x1241))
+(or (not x1242) (not x1240) (not x1241))
+(or (not x1103) x201 x204)
+(or x1103 (not x201) x204)
+(or x1103 x201 (not x204))
+(or (not x1103) (not x201) (not x204))
+(or (not x646) x213 x214)
+(or x646 (not x213) x214)
+(or x646 x213 (not x214))
+(or (not x646) (not x213) (not x214))
+(or (not x720) x111 x123)
+(or x720 (not x111) x123)
+(or x720 x111 (not x123))
+(or (not x720) (not x111) (not x123))
+(or (not x1086) x110 x190)
+(or x1086 (not x110) x190)
+(or x1086 x110 (not x190))
+(or (not x1086) (not x110) (not x190))
+(or (not x982) x117 x183)
+(or x982 (not x117) x183)
+(or x982 x117 (not x183))
+(or (not x982) (not x117) (not x183))
+(or (not x1301) x1294 x1295)
+(or x1301 (not x1294) x1295)
+(or x1301 x1294 (not x1295))
+(or (not x1301) (not x1294) (not x1295))
+(or (not x366) x3)
+(or (not x366) (not x3) x4)
+(or x366 (not x3) (not x4))
+(or (not x400) x52)
+(or (not x400) (not x52) x78)
+(or x400 (not x52) (not x78) (not x79))
+(or (not x400) (not x52) (not x78) x79)
+(or (not x213) x58)
+(or (not x213) (not x58) x59)
+(or x213 (not x58) (not x59))
+(or (not x836) x834 x835)
+(or x836 (not x834) x835)
+(or x836 x834 (not x835))
+(or (not x836) (not x834) (not x835))
+(or (not x840) x103 x106)
+(or x840 (not x103) x106)
+(or x840 x103 (not x106))
+(or (not x840) (not x103) (not x106))
+(or (not x244) x124)
+(or (not x244) (not x124) x125)
+(or x244 (not x124) (not x125))
+(or (not x539) x14 x41)
+(or x539 (not x14) x41)
+(or x539 x14 (not x41))
+(or (not x539) (not x14) (not x41))
+(or (not x585) x18 x87)
+(or x585 (not x18) x87)
+(or x585 x18 (not x87))
+(or (not x585) (not x18) (not x87))
+(or (not x953) x324 x325)
+(or x953 (not x324) x325)
+(or x953 x324 (not x325))
+(or (not x953) (not x324) (not x325))
+(or (not x821) x224 x247)
+(or x821 (not x224) x247)
+(or x821 x224 (not x247))
+(or (not x821) (not x224) (not x247))
+(or (not x460) x42)
+(or (not x460) (not x42) x68)
+(or x460 (not x42) (not x68) (not x69))
+(or (not x460) (not x42) (not x68) x69)
+(or (not x499) x37 x64)
+(or x499 (not x37) x64)
+(or x499 x37 (not x64))
+(or (not x499) (not x37) (not x64))
+(or (not x923) x916 x917)
+(or x923 (not x916) x917)
+(or x923 x916 (not x917))
+(or (not x923) (not x916) (not x917))
+(or (not x470) x66)
+(or (not x470) (not x66) x67)
+(or x470 (not x66) (not x67) (not x68))
+(or (not x470) (not x66) (not x67) x68)
+(or (not x219) x55)
+(or (not x219) (not x55) x56)
+(or x219 (not x55) (not x56))
+(or (not x876) x551 x873)
+(or x876 (not x551) x873)
+(or x876 x551 (not x873))
+(or (not x876) (not x551) (not x873))
+(or (not x1177) x286 x317)
+(or x1177 (not x286) x317)
+(or x1177 x286 (not x317))
+(or (not x1177) (not x286) (not x317))
+(or (not x1091) x59 x68)
+(or x1091 (not x59) x68)
+(or x1091 x59 (not x68))
+(or (not x1091) (not x59) (not x68))
+(or (not x1334) x470 x471)
+(or x1334 (not x470) x471)
+(or x1334 x470 (not x471))
+(or (not x1334) (not x470) (not x471))
+(or (not x1148) x407 x408)
+(or x1148 (not x407) x408)
+(or x1148 x407 (not x408))
+(or (not x1148) (not x407) (not x408))
+(or (not x823) x818 x819)
+(or x823 (not x818) x819)
+(or x823 x818 (not x819))
+(or (not x823) (not x818) (not x819))
+(or (not x1349) x1332 x1333)
+(or x1349 (not x1332) x1333)
+(or x1349 x1332 (not x1333))
+(or (not x1349) (not x1332) (not x1333))
+(or (not x988) x343 x344)
+(or x988 (not x343) x344)
+(or x988 x343 (not x344))
+(or (not x988) (not x343) (not x344))
+(or (not x561) x3 x30)
+(or x561 (not x3) x30)
+(or x561 x3 (not x30))
+(or (not x561) (not x3) (not x30))
+(or (not x748) x120 x225)
+(or x748 (not x120) x225)
+(or x748 x120 (not x225))
+(or (not x748) (not x120) (not x225))
+(or (not x951) x946 x947)
+(or x951 (not x946) x947)
+(or x951 x946 (not x947))
+(or (not x951) (not x946) (not x947))
+(or (not x1143) x411 x1135)
+(or x1143 (not x411) x1135)
+(or x1143 x411 (not x1135))
+(or (not x1143) (not x411) (not x1135))
+(or (not x1340) x1328 x1329)
+(or x1340 (not x1328) x1329)
+(or x1340 x1328 (not x1329))
+(or (not x1340) (not x1328) (not x1329))
+(or (not x1363) x688 x1361)
+(or x1363 (not x688) x1361)
+(or x1363 x688 (not x1361))
+(or (not x1363) (not x688) (not x1361))
+(or (not x1069) x1066 x1067)
+(or x1069 (not x1066) x1067)
+(or x1069 x1066 (not x1067))
+(or (not x1069) (not x1066) (not x1067))
+(or (not x667) x221 x222)
+(or x667 (not x221) x222)
+(or x667 x221 (not x222))
+(or (not x667) (not x221) (not x222))
+(or (not x1028) x63 x72)
+(or x1028 (not x63) x72)
+(or x1028 x63 (not x72))
+(or (not x1028) (not x63) (not x72))
+(or (not x939) x181 x193)
+(or x939 (not x181) x193)
+(or x939 x181 (not x193))
+(or (not x939) (not x181) (not x193))
+(or (not x601) x10 x79)
+(or x601 (not x10) x79)
+(or x601 x10 (not x79))
+(or (not x601) (not x10) (not x79))
+(or (not x513) x27 x54)
+(or x513 (not x27) x54)
+(or x513 x27 (not x54))
+(or (not x513) (not x27) (not x54))
+(or (not x999) x997 x998)
+(or x999 (not x997) x998)
+(or x999 x997 (not x998))
+(or (not x999) (not x997) (not x998))
+(or (not x436) x46)
+(or (not x436) (not x46) x72)
+(or x436 (not x46) (not x72) (not x73))
+(or (not x436) (not x46) (not x72) x73)
+(or (not x1197) x1195 x1196)
+(or x1197 (not x1195) x1196)
+(or x1197 x1195 (not x1196))
+(or (not x1197) (not x1195) (not x1196))
+(or (not x718) x126 x213)
+(or x718 (not x126) x213)
+(or x718 x126 (not x213))
+(or (not x718) (not x126) (not x213))
+(or (not x382) x55)
+(or (not x382) (not x55) x83)
+(or x382 (not x55) (not x83))
+(or (not x1384) x1372 x1373)
+(or x1384 (not x1372) x1373)
+(or x1384 x1372 (not x1373))
+(or (not x1384) (not x1372) (not x1373))
+(or (not x571) x25 x67)
+(or x571 (not x25) x67)
+(or x571 x25 (not x67))
+(or (not x571) (not x25) (not x67))
+(or (not x725) x110 x122)
+(or x725 (not x110) x122)
+(or x725 x110 (not x122))
+(or (not x725) (not x110) (not x122))
+(or (not x1252) x44 x45)
+(or x1252 (not x44) x45)
+(or x1252 x44 (not x45))
+(or (not x1252) (not x44) (not x45))
+(or (not x1038) x20 x44)
+(or x1038 (not x20) x44)
+(or x1038 x20 (not x44))
+(or (not x1038) (not x20) (not x44))
+(or (not x793) x216 x239)
+(or x793 (not x216) x239)
+(or x793 x216 (not x239))
+(or (not x793) (not x216) (not x239))
+(or (not x1194) x206 x209)
+(or x1194 (not x206) x209)
+(or x1194 x206 (not x209))
+(or (not x1194) (not x206) (not x209))
+(or (not x401) x52)
+(or (not x401) (not x52) x80)
+(or x401 (not x52) (not x80))
+(or (not x387) x1)
+(or (not x387) (not x1) x69)
+(or x387 (not x1) (not x69))
+(or (not x644) x641 x642)
+(or x644 (not x641) x642)
+(or x644 x641 (not x642))
+(or (not x644) (not x641) (not x642))
+(or (not x462) x43)
+(or (not x462) (not x43) x69)
+(or x462 (not x43) (not x69))
+(or (not x962) x960 x961)
+(or x962 (not x960) x961)
+(or x962 x960 (not x961))
+(or (not x962) (not x960) (not x961))
+(or (not x386) x80)
+(or (not x386) (not x80) x81)
+(or x386 (not x80) (not x81) (not x83))
+(or (not x386) (not x80) (not x81) x83)
+(or (not x1220) x1217 x1218)
+(or x1220 (not x1217) x1218)
+(or x1220 x1217 (not x1218))
+(or (not x1220) (not x1217) (not x1218))
+(or (not x1405) x37 x39)
+(or x1405 (not x37) x39)
+(or x1405 x37 (not x39))
+(or (not x1405) (not x37) (not x39))
+(or (not x373) x2)
+(or (not x373) (not x2) x3)
+(or x373 (not x2) (not x3))
+(or (not x1219) x331 x430)
+(or x1219 (not x331) x430)
+(or x1219 x331 (not x430))
+(or (not x1219) (not x331) (not x430))
+(or (not x1319) x678 x1317)
+(or x1319 (not x678) x1317)
+(or x1319 x678 (not x1317))
+(or (not x1319) (not x678) (not x1317))
+(or (not x1196) x1191 x1192)
+(or x1196 (not x1191) x1192)
+(or x1196 x1191 (not x1192))
+(or (not x1196) (not x1191) (not x1192))
+(or (not x298) x97)
+(or (not x298) (not x97) x98)
+(or x298 (not x97) (not x98))
+(or (not x706) x704 x705)
+(or x706 (not x704) x705)
+(or x706 x704 (not x705))
+(or (not x706) (not x704) (not x705))
+(or (not x233) x48)
+(or (not x233) (not x48) x49)
+(or x233 (not x48) (not x49))
+(or (not x640) x194 x209)
+(or x640 (not x194) x209)
+(or x640 x194 (not x209))
+(or (not x640) (not x194) (not x209))
+(or (not x620) x199 x619)
+(or x620 (not x199) x619)
+(or x620 x199 (not x619))
+(or (not x620) (not x199) (not x619))
+(or (not x256) x118)
+(or (not x256) (not x118) x119)
+(or x256 (not x118) (not x119))
+(or (not x897) x557 x894)
+(or x897 (not x557) x894)
+(or x897 x557 (not x894))
+(or (not x897) (not x557) (not x894))
+(or (not x971) x969 x970)
+(or x971 (not x969) x970)
+(or x971 x969 (not x970))
+(or (not x971) (not x969) (not x970))
+(or (not x388) x54)
+(or (not x388) (not x54) x80)
+(or x388 (not x54) (not x80) (not x81))
+(or (not x388) (not x54) (not x80) x81)
+(or (not x528) x116 x131)
+(or x528 (not x116) x131)
+(or x528 x116 (not x131))
+(or (not x528) (not x116) (not x131))
+(or (not x319) x64)
+(or (not x319) (not x64) x92)
+(or x319 (not x64) (not x92))
+(or (not x1218) x1215 x1216)
+(or x1218 (not x1215) x1216)
+(or x1218 x1215 (not x1216))
+(or (not x1218) (not x1215) (not x1216))
+(or (not x252) x120)
+(or (not x252) (not x120) x121)
+(or x252 (not x120) (not x121))
+(or (not x737) x249 x250)
+(or x737 (not x249) x250)
+(or x737 x249 (not x250))
+(or (not x737) (not x249) (not x250))
+(or (not x612) x141 x181)
+(or x612 (not x141) x181)
+(or x612 x141 (not x181))
+(or (not x612) (not x141) (not x181))
+(or (not x1336) x1334 x1335)
+(or x1336 (not x1334) x1335)
+(or x1336 x1334 (not x1335))
+(or (not x1336) (not x1334) (not x1335))
+(or (not x742) x251 x252)
+(or x742 (not x251) x252)
+(or x742 x251 (not x252))
+(or (not x742) (not x251) (not x252))
+(or (not x1206) x61 x62)
+(or x1206 (not x61) x62)
+(or x1206 x61 (not x62))
+(or (not x1206) (not x61) (not x62))
+(or (not x978) x184 x196)
+(or x978 (not x184) x196)
+(or x978 x184 (not x196))
+(or (not x978) (not x184) (not x196))
+(or (not x509) x29 x56)
+(or x509 (not x29) x56)
+(or x509 x29 (not x56))
+(or (not x509) (not x29) (not x56))
+(or (not x1328) x4 x28)
+(or x1328 (not x4) x28)
+(or x1328 x4 (not x28))
+(or (not x1328) (not x4) (not x28))
+(or (not x1008) x352 x353)
+(or x1008 (not x352) x353)
+(or x1008 x352 (not x353))
+(or (not x1008) (not x352) (not x353))
+(or (not x929) x94 x121)
+(or x929 (not x94) x121)
+(or x929 x94 (not x121))
+(or (not x929) (not x94) (not x121))
+(or (not x1167) x1164 x1165)
+(or x1167 (not x1164) x1165)
+(or x1167 x1164 (not x1165))
+(or (not x1167) (not x1164) (not x1165))
+(or (not x1031) x1028 x1029)
+(or x1031 (not x1028) x1029)
+(or x1031 x1028 (not x1029))
+(or (not x1031) (not x1028) (not x1029))
+(or (not x869) x549 x866)
+(or x869 (not x549) x866)
+(or x869 x549 (not x866))
+(or (not x869) (not x549) (not x866))
+(or (not x237) x46)
+(or (not x237) (not x46) x47)
+(or x237 (not x46) (not x47))
+(or (not x935) x933 x934)
+(or x935 (not x933) x934)
+(or x935 x933 (not x934))
+(or (not x935) (not x933) (not x934))
+(or (not x1400) x223 x229)
+(or x1400 (not x223) x229)
+(or x1400 x223 (not x229))
+(or (not x1400) (not x223) (not x229))
+(or (not x1385) x1380 x1381)
+(or x1385 (not x1380) x1381)
+(or x1385 x1380 (not x1381))
+(or (not x1385) (not x1380) (not x1381))
+(or (not x425) x48)
+(or (not x425) (not x48) x76)
+(or x425 (not x48) (not x76))
+(or (not x268) x112)
+(or (not x268) (not x112) x113)
+(or x268 (not x112) (not x113))
+(or (not x377) x57)
+(or (not x377) (not x57) x81)
+(or x377 (not x57) (not x81) (not x82))
+(or (not x377) (not x57) (not x81) x82)
+(or (not x1406) x253 x310)
+(or x1406 (not x253) x310)
+(or x1406 x253 (not x310))
+(or (not x1406) (not x253) (not x310))
+(or (not x1291) x459 x1285)
+(or x1291 (not x459) x1285)
+(or x1291 x459 (not x1285))
+(or (not x1291) (not x459) (not x1285))
+(or (not x697) x233 x234)
+(or x697 (not x233) x234)
+(or x697 x233 (not x234))
+(or (not x697) (not x233) (not x234))
+(or (not x780) x778 x779)
+(or x780 (not x778) x779)
+(or x780 x778 (not x779))
+(or (not x780) (not x778) (not x779))
+(or (not x1322) x1318 x1319)
+(or x1322 (not x1318) x1319)
+(or x1322 x1318 (not x1319))
+(or (not x1322) (not x1318) (not x1319))
+(or (not x186) x83)
+(or (not x186) (not x83) x84)
+(or x186 (not x83) (not x84))
+(or (not x234) x129)
+(or (not x234) (not x129) x130)
+(or x234 (not x129) (not x130))
+(or (not x232) x130)
+(or (not x232) (not x130) x131)
+(or x232 (not x130) (not x131))
+(or (not x185) x84)
+(or (not x185) (not x84) x85)
+(or x185 (not x84) (not x85))
+(or (not x732) x247 x248)
+(or x732 (not x247) x248)
+(or x732 x247 (not x248))
+(or (not x732) (not x247) (not x248))
+(or (not x1339) x302 x373)
+(or x1339 (not x302) x373)
+(or x1339 x302 (not x373))
+(or (not x1339) (not x302) (not x373))
+(or (not x733) x123 x219)
+(or x733 (not x123) x219)
+(or x733 x123 (not x219))
+(or (not x733) (not x123) (not x219))
+(or (not x1312) x366 x460)
+(or x1312 (not x366) x460)
+(or x1312 x366 (not x460))
+(or (not x1312) (not x366) (not x460))
+(or (not x555) x6 x33)
+(or x555 (not x6) x33)
+(or x555 x6 (not x33))
+(or (not x555) (not x6) (not x33))
+(or (not x218) x137)
+(or (not x218) (not x137) x138)
+(or x218 (not x137) (not x138))
+(or (not x802) x797 x798)
+(or x802 (not x797) x798)
+(or x802 x797 (not x798))
+(or (not x802) (not x797) (not x798))
+(or (not x438) x47)
+(or (not x438) (not x47) x73)
+(or x438 (not x47) (not x73))
+(or (not x318) x64)
+(or (not x318) (not x64) x90)
+(or x318 (not x64) (not x90) (not x91))
+(or (not x318) (not x64) (not x90) x91)
+(or (not x195) x74)
+(or (not x195) (not x74) x75)
+(or x195 (not x74) (not x75))
+(or (not x786) x214 x237)
+(or x786 (not x214) x237)
+(or x786 x214 (not x237))
+(or (not x786) (not x214) (not x237))
+(or (not x937) x935 x936)
+(or x937 (not x935) x936)
+(or x937 x935 (not x936))
+(or (not x937) (not x935) (not x936))
+(or (not x1211) x46 x52)
+(or x1211 (not x46) x52)
+(or x1211 x46 (not x52))
+(or (not x1211) (not x46) (not x52))
+(or (not x662) x219 x220)
+(or x662 (not x219) x220)
+(or x662 x219 (not x220))
+(or (not x662) (not x219) (not x220))
+(or (not x794) x792 x793)
+(or x794 (not x792) x793)
+(or x794 x792 (not x793))
+(or (not x794) (not x792) (not x793))
+(or (not x202) x67)
+(or (not x202) (not x67) x68)
+(or x202 (not x67) (not x68))
+(or (not x310) x65)
+(or (not x310) (not x65) x91)
+(or x310 (not x65) (not x91) (not x92))
+(or (not x310) (not x65) (not x91) x92)
+(or (not x753) x119 x227)
+(or x753 (not x119) x227)
+(or x753 x119 (not x227))
+(or (not x753) (not x119) (not x227))
+(or (not x424) x48)
+(or (not x424) (not x48) x74)
+(or x424 (not x48) (not x74) (not x75))
+(or (not x424) (not x48) (not x74) x75)
+(or (not x214) x139)
+(or (not x214) (not x139) x140)
+(or x214 (not x139) (not x140))
+(or (not x565) x1 x28)
+(or x565 (not x1) x28)
+(or x565 x1 (not x28))
+(or (not x565) (not x1) (not x28))
+(or (not x1376) x306 x307)
+(or x1376 (not x306) x307)
+(or x1376 x306 (not x307))
+(or (not x1376) (not x306) (not x307))
+))
diff --git a/test/regress/run_regression b/test/regress/run_regression
new file mode 100755
index 0000000..a04e488
--- /dev/null
+++ b/test/regress/run_regression
@@ -0,0 +1,367 @@
+#!/bin/bash
+#
+# Morgan Deters <mdeters at cs.nyu.edu>
+# for the CVC4 project
+#
+# usage:
+#
+#     run_regression cvc4-binary [ --proof | --dump ] [ benchmark.cvc | benchmark.smt | benchmark.smt2 ]
+#
+# Runs benchmark and checks for correct exit status and output.
+#
+
+# ulimit -t 1    # For detecting long running regressions
+ulimit -s 65000  # Needed for some (esp. portfolio and model-building)
+
+prog=`basename "$0"`
+
+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 [ x"$1" = x--proof ]; then
+  proof=yes
+  shift
+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
+
+[[ "$VALGRIND" = "1" ]] && {
+  wrapper="libtool --mode=execute valgrind $wrapper"
+}
+
+cvc4=$1
+benchmark_orig=$2
+benchmark="$benchmark_orig"
+
+function error {
+  echo "$prog: error: $*"
+  exit 1
+}
+
+if ! [ -x "$cvc4" ]; then
+  error "\`$cvc4' doesn't exist or isn't executable" >&2
+fi
+if ! [ -r "$benchmark" ]; then
+  error "\`$benchmark' doesn't exist or isn't readable" >&2
+fi
+
+# gettemp() and its associated tempfiles[] array are intended to never
+# allow a temporary file to leak---the trap ensures that when this script
+# exits, whether via a regular exit or an -INT or other signal, the
+# temp files are deleted.
+declare -a tempfiles
+trap -- 'test ${#tempfiles[@]} -gt 0 && rm -f "${tempfiles[@]}"' EXIT
+function gettemp {
+  local temp="`mktemp -t "$2"`"
+  tempfiles[${#tempfiles[@]}]="$temp"
+  eval "$1"="$temp"
+}
+
+tmpbenchmark=
+if expr "$benchmark" : '.*\.smt$' &>/dev/null; then
+  lang=smt1
+  if test -e "$benchmark.expect"; then
+    scrubber=`grep '^% SCRUBBER: ' "$benchmark.expect" | sed 's,^% SCRUBBER: ,,'`
+    expected_output=`grep '^% EXPECT: ' "$benchmark.expect" | sed 's,^% EXPECT: ,,'`
+    expected_error=`grep '^% EXPECT-ERROR: ' "$benchmark.expect" | sed 's,^% EXPECT-ERROR: ,,'`
+    expected_exit_status=`grep -m 1 '^% EXIT: ' "$benchmark.expect" | perl -pe 's,^% EXIT: ,,;s,\r,,'`
+    command_line=`grep '^% COMMAND-LINE: ' "$benchmark.expect" | sed 's,^% COMMAND-LINE: ,,'`
+    if [ -z "$expected_exit_status" ]; then
+      expected_exit_status=0
+    fi
+  elif grep '^% \(PROOF\|EXPECT\|EXPECT-ERROR\|EXIT\|COMMAND-LINE\|SCRUBBER\): ' "$benchmark" "$benchmark" &>/dev/null; then
+    scrubber=`grep '^% SCRUBBER: ' "$benchmark" | sed 's,^% SCRUBBER: ,,'`
+    expected_output=`grep '^% EXPECT: ' "$benchmark" | sed 's,^% EXPECT: ,,'`
+    expected_error=`grep '^% EXPECT-ERROR: ' "$benchmark" | sed 's,^% EXPECT-ERROR: ,,'`
+    expected_exit_status=`grep -m 1 '^% EXIT: ' "$benchmark" | perl -pe 's,^% EXIT: ,,;s,\r,,'`
+    command_line=`grep '^% COMMAND-LINE: ' "$benchmark" | sed 's,^% COMMAND-LINE: ,,'`
+    # old mktemp from coreutils 7.x is broken, can't do XXXX in the middle
+    # this frustrates our auto-language-detection
+    gettemp tmpbenchmark cvc4_benchmark.smt.$$.XXXXXXXXXX
+    grep -v '^% \(PROOF\|EXPECT\|EXPECT-ERROR\|EXIT\|COMMAND-LINE\|SCRUBBER\): ' "$benchmark" >"$tmpbenchmark"
+    if [ -z "$expected_exit_status" ]; then
+      expected_exit_status=0
+    fi
+    benchmark=$tmpbenchmark
+  elif grep '^ *:status  *sat' "$benchmark" &>/dev/null; then
+    expected_output=sat
+    expected_exit_status=0
+    command_line=
+  elif grep '^ *:status  *unsat' "$benchmark" &>/dev/null; then
+    expected_output=unsat
+    expected_exit_status=0
+    command_line=
+  else
+    error "cannot determine status of \`$benchmark'"
+  fi
+elif expr "$benchmark" : '.*\.smt2$' &>/dev/null; then
+  lang=smt2
+  if test -e "$benchmark.expect"; then
+    scrubber=`grep '^% SCRUBBER: ' "$benchmark.expect" | sed 's,^% SCRUBBER: ,,'`
+    expected_output=`grep '^% EXPECT: ' "$benchmark.expect" | sed 's,^% EXPECT: ,,'`
+    expected_error=`grep '^% EXPECT-ERROR: ' "$benchmark.expect" | sed 's,^% EXPECT-ERROR: ,,'`
+    expected_exit_status=`grep -m 1 '^% EXIT: ' "$benchmark.expect" | perl -pe 's,^% EXIT: ,,;s,\r,,'`
+    command_line=`grep '^% COMMAND-LINE: ' "$benchmark.expect" | sed 's,^% COMMAND-LINE: ,,'`
+    if [ -z "$expected_exit_status" ]; then
+      expected_exit_status=0
+    fi
+  elif grep '^; \(EXPECT\|EXPECT-ERROR\|EXIT\|COMMAND-LINE\|SCRUBBER\): ' "$benchmark" "$benchmark" &>/dev/null; then
+    scrubber=`grep '^; SCRUBBER: ' "$benchmark" | sed 's,^; SCRUBBER: ,,'`
+    expected_output=`grep '^; EXPECT: ' "$benchmark" | sed 's,^; EXPECT: ,,'`
+    expected_error=`grep '^; EXPECT-ERROR: ' "$benchmark" | sed 's,^; EXPECT-ERROR: ,,'`
+    expected_exit_status=`grep -m 1 '^; EXIT: ' "$benchmark" | perl -pe 's,^; EXIT: ,,;s,\r,,'`
+    command_line=`grep '^; COMMAND-LINE: ' "$benchmark" | sed 's,^; COMMAND-LINE: ,,'`
+    if [ -z "$expected_exit_status" ]; then
+      expected_exit_status=0
+    fi
+  elif grep '^ *( *set-info  *:status  *sat' "$benchmark" &>/dev/null; then
+    expected_output=sat
+    expected_exit_status=0
+    command_line=
+  elif grep '^ *( *set-info  *:status  *unsat' "$benchmark" &>/dev/null; then
+    expected_output=unsat
+    expected_exit_status=0
+    command_line=
+  else
+    error "cannot determine status of \`$benchmark'"
+  fi
+elif expr "$benchmark" : '.*\.cvc$' &>/dev/null; then
+  lang=cvc4
+  scrubber=`grep '^% SCRUBBER: ' "$benchmark" | sed 's,^% SCRUBBER: ,,'`
+  expected_output=$(grep '^% EXPECT: ' "$benchmark")
+  expected_error=`grep '^% EXPECT-ERROR: ' "$benchmark" | sed 's,^% EXPECT-ERROR: ,,'`
+  if [ -z "$expected_output" -a -z "$expected_error" ]; then
+    error "cannot determine expected output of \`$benchmark': " \
+          "please use \`% EXPECT:' and/or \`% EXPECT-ERROR:' gestures"
+  fi
+  expected_output=$(echo "$expected_output" | perl -pe 's,^% EXPECT: ,,;s,\r,,')
+  expected_exit_status=`grep -m 1 '^% EXIT: ' "$benchmark" | perl -pe 's,^% EXIT: ,,;s,\r,,'`
+  if [ -z "$expected_exit_status" ]; then
+    expected_exit_status=0
+  fi
+  command_line=`grep '^% COMMAND-LINE: ' "$benchmark" | sed 's,^% COMMAND-LINE: ,,'`
+elif expr "$benchmark" : '.*\.p$' &>/dev/null; then
+  lang=tptp
+  command_line=--finite-model-find
+  scrubber=`grep '^% SCRUBBER: ' "$benchmark" | sed 's,^% SCRUBBER: ,,'`
+  expected_output=$(grep '^% EXPECT: ' "$benchmark")
+  expected_error=`grep '^% EXPECT-ERROR: ' "$benchmark" | sed 's,^% EXPECT-ERROR: ,,'`
+  if [ -z "$expected_output" -a -z "$expected_error" ]; then
+    if grep -q '^% Status *: ' "$benchmark"; then
+      expected_output="$(grep '^% *Status *: ' "$benchmark" | head -1 | awk '{print$NF}')"
+      case "$expected_output" in
+        Theorem|Unsatisfiable) expected_exit_status=0 ;;
+        CounterSatisfiable|Satisfiable) expected_exit_status=0 ;;
+        GaveUp) expected_exit_status=0 ;;
+      esac
+      expected_output="% SZS status $expected_output for $(basename "$benchmark" | sed 's,\.p$,,')"
+    else
+      error "cannot determine expected output of \`$benchmark': " \
+            "please use \`% EXPECT:' and/or \`% EXPECT-ERROR:' gestures"
+    fi
+  else
+    expected_output=$(echo "$expected_output" | perl -pe 's,^% EXPECT: ,,;s,\r,,')
+    expected_exit_status=`grep -m 1 '^% EXIT: ' "$benchmark" | perl -pe 's,^% EXIT: ,,;s,\r,,'`
+  fi
+  if [ -z "$expected_exit_status" ]; then
+    expected_exit_status=0
+  fi
+  if grep -q '^% COMMAND-LINE: ' "$benchmark"; then
+    command_line=`grep '^% COMMAND-LINE: ' "$benchmark" | sed 's,^% COMMAND-LINE: ,,'`
+  fi
+elif expr "$benchmark" : '.*\.sy$' &>/dev/null; then
+  lang=sygus
+  if test -e "$benchmark.expect"; then
+    scrubber=`grep '^% SCRUBBER: ' "$benchmark.expect" | sed 's,^% SCRUBBER: ,,'`
+    expected_output=`grep '^% EXPECT: ' "$benchmark.expect" | sed 's,^% EXPECT: ,,'`
+    expected_error=`grep '^% EXPECT-ERROR: ' "$benchmark.expect" | sed 's,^% EXPECT-ERROR: ,,'`
+    expected_exit_status=`grep -m 1 '^% EXIT: ' "$benchmark.expect" | perl -pe 's,^% EXIT: ,,;s,\r,,'`
+    command_line=`grep '^% COMMAND-LINE: ' "$benchmark.expect" | sed 's,^% COMMAND-LINE: ,,'`
+    if [ -z "$expected_exit_status" ]; then
+      expected_exit_status=0
+    fi
+  elif grep '^; \(EXPECT\|EXPECT-ERROR\|EXIT\|COMMAND-LINE\|SCRUBBER\): ' "$benchmark" "$benchmark" &>/dev/null; then
+    scrubber=`grep '^; SCRUBBER: ' "$benchmark" | sed 's,^; SCRUBBER: ,,'`
+    expected_output=`grep '^; EXPECT: ' "$benchmark" | sed 's,^; EXPECT: ,,'`
+    expected_error=`grep '^; EXPECT-ERROR: ' "$benchmark" | sed 's,^; EXPECT-ERROR: ,,'`
+    expected_exit_status=`grep -m 1 '^; EXIT: ' "$benchmark" | perl -pe 's,^; EXIT: ,,;s,\r,,'`
+    command_line=`grep '^; COMMAND-LINE: ' "$benchmark" | sed 's,^; COMMAND-LINE: ,,'`
+    if [ -z "$expected_exit_status" ]; then
+      expected_exit_status=0
+    fi
+  else
+    error "cannot determine expected output of \`$benchmark'"
+  fi
+else
+  error "benchmark \`$benchmark' must be *.cvc or *.smt or *.smt2 or *.p or *.sy"
+fi
+
+command_line="${command_line:+$command_line }--lang=$lang"
+
+gettemp expoutfile cvc4_expect_stdout.$$.XXXXXXXXXX
+gettemp experrfile cvc4_expect_stderr.$$.XXXXXXXXXX
+gettemp outfile cvc4_stdout.$$.XXXXXXXXXX
+gettemp errfile cvc4_stderr.$$.XXXXXXXXXX
+gettemp errfilefix cvc4_stderr.$$.XXXXXXXXXX
+gettemp exitstatusfile cvc4_exitstatus.$$.XXXXXXXXXX
+
+if [ -z "$expected_output" ]; then
+  # in case expected stdout output is empty, make sure we don't differ
+  # by a newline, which we would if we echo "" >"$expoutfile"
+  touch "$expoutfile"
+else
+  echo "$expected_output" >"$expoutfile"
+fi
+
+check_models=false
+if grep '^sat$' "$expoutfile" &>/dev/null || grep '^invalid$' "$expoutfile" &>/dev/null || grep '^unknown$' "$expoptfile" &>/dev/null; then
+  if ! expr "$CVC4_REGRESSION_ARGS $command_line" : '.*--check-models' &>/dev/null &&
+     ! expr "$CVC4_REGRESSION_ARGS $command_line" : '.*--no-check-models' &>/dev/null; then
+    # later on, we'll run another test with --check-models on
+    check_models=true
+  fi
+fi
+check_proofs=false
+check_unsat_cores=false
+if [ "$proof" = yes ]; then
+  # proofs not currently supported in incremental mode, turn it off
+  if grep '^unsat$' "$expoutfile" &>/dev/null || grep '^valid$' "$expoutfile" &>/dev/null &>/dev/null; then
+    if ! expr "$CVC4_REGRESSION_ARGS $command_line" : '.*--check-proofs' &>/dev/null &&
+       ! expr "$CVC4_REGRESSION_ARGS $command_line" : '.*--no-check-proofs' &>/dev/null &&
+       ! expr "$CVC4_REGRESSION_ARGS $command_line" : '.*--incremental' &>/dev/null &&
+       ! expr "$CVC4_REGRESSION_ARGS $command_line" : '.*--unconstrained-simp' &>/dev/null &&
+       ! expr " $CVC4_REGRESSION_ARGS $command_line" : '.* -[a-zA-Z]*i' &>/dev/null &&
+       ! expr "$BINARY" : '.*pcvc4' &>/dev/null &&
+       ! expr "$benchmark" : '.*\.sy$' &>/dev/null; then
+      # later on, we'll run another test with --check-proofs on
+      check_proofs=true
+    fi
+    if ! expr "$CVC4_REGRESSION_ARGS $command_line" : '.*--check-unsat-cores' &>/dev/null &&
+       ! expr "$CVC4_REGRESSION_ARGS $command_line" : '.*--no-check-unsat-cores' &>/dev/null &&
+       ! expr "$CVC4_REGRESSION_ARGS $command_line" : '.*--incremental' &>/dev/null &&
+       ! expr "$CVC4_REGRESSION_ARGS $command_line" : '.*--unconstrained-simp' &>/dev/null &&
+       ! expr " $CVC4_REGRESSION_ARGS $command_line" : '.* -[a-zA-Z]*i' &>/dev/null &&
+       ! expr "$BINARY" : '.*pcvc4' &>/dev/null &&
+       ! expr "$benchmark" : '.*\.sy$' &>/dev/null; then
+      # later on, we'll run another test with --check-unsat-cores on
+      check_unsat_cores=true
+    fi
+  fi
+fi
+if [ -z "$expected_error" ]; then
+  # in case expected stderr output is empty, make sure we don't differ
+  # by a newline, which we would if we echo "" >"$experrfile"
+  touch "$experrfile"
+else
+  echo "$expected_error" >"$experrfile"
+fi
+
+cvc4dir=`dirname "$cvc4"`
+cvc4dirfull=`cd "$cvc4dir" && pwd`
+if [ -z "$cvc4dirfull" ]; then
+  error "getting directory of \`$cvc4 !?"
+fi
+cvc4base=`basename "$cvc4"`
+cvc4full="$cvc4dirfull/$cvc4base"
+if [ $dump = no ]; then
+  echo running $wrapper $cvc4full $CVC4_REGRESSION_ARGS $command_line `basename "$benchmark"` [from working dir `dirname "$benchmark"`]
+  time ( :; \
+  ( cd `dirname "$benchmark"`;
+    $wrapper "$cvc4full" $CVC4_REGRESSION_ARGS $command_line `basename "$benchmark"`;
+    echo $? >"$exitstatusfile"
+  ) > "$outfile" 2> "$errfile" )
+else
+  echo running $wrapper $cvc4full $CVC4_REGRESSION_ARGS $command_line --preprocess-only --dump=clauses --output-lang=smt2 -q `basename "$benchmark"` \| $wrapper $cvc4full $CVC4_REGRESSION_ARGS $command_line --lang=smt2 - [from working dir `dirname "$benchmark"`]
+  time ( :; \
+  ( cd `dirname "$benchmark"`;
+    $wrapper "$cvc4full" $CVC4_REGRESSION_ARGS $command_line --preprocess-only --dump=clauses --output-lang=smt2 -q `basename "$benchmark"` | $wrapper "$cvc4full" $CVC4_REGRESSION_ARGS $command_line --lang=smt2 -;
+    echo $? >"$exitstatusfile"
+  ) > "$outfile" 2> "$errfile" )
+fi
+
+# we have to actual error file same treatment as other files. differences in
+# versions of echo/bash were causing failure on some platforms and not on others
+# (also grep out valgrind output, if 0 errors reported by valgrind)
+actual_error=$(cat $errfile)
+if [[ "$VALGRIND" = "1" ]]; then
+  #valgrind_output=$(cat $errfile|grep -E "^==[0-9]+== "|)
+  valgrind_num_errors=$(cat $errfile|grep -E "^==[0-9]+== "|tail -n1|awk '{print $4}')
+  echo "valgrind errors (not suppressed): $valgrind_num_errors" 1>&2
+
+  ((valgrind_num_errors == 0)) && actual_error=$(echo "$actual_error"|grep -vE "^==[0-9]+== ")
+fi
+if [ -z "$actual_error" ]; then
+  # in case expected stderr output is empty, make sure we don't differ
+  # by a newline, which we would if we echo "" >"$experrfile"
+  touch "$errfilefix"
+else
+  echo "$actual_error" >"$errfilefix"
+fi
+
+# Scrub the output file if a scrubber has been specified.
+if [ -n "$scrubber" ]; then
+  echo "About to scrub $outfile using $scrubber"
+  mv "$outfile" "$outfile.prescrub"
+  cat "$outfile.prescrub" | eval $scrubber >"$outfile"
+else
+  echo "not scrubbing"
+fi
+
+diffs=`diff -u --strip-trailing-cr "$expoutfile" "$outfile"`
+diffexit=$?
+diffserr=`diff -u --strip-trailing-cr "$experrfile" "$errfilefix"`
+diffexiterr=$?
+exit_status=`cat "$exitstatusfile"`
+
+exitcode=0
+if [ $diffexit -ne 0 ]; then
+  echo "$prog: error: differences between expected and actual output on stdout"
+  echo "$diffs"
+  exitcode=1
+fi
+if [ $diffexiterr -ne 0 ]; then
+  echo "$prog: error: differences between expected and actual output on stderr"
+  echo "$diffserr"
+  exitcode=1
+fi
+
+if [ "$exit_status" != "$expected_exit_status" ]; then
+  echo "$prog: error: expected exit status \`$expected_exit_status' but got \`$exit_status'"
+  exitcode=1
+fi
+
+if $check_models || $check_proofs || $check_unsat_cores; then
+  check_cmdline=
+  if $check_models; then
+    check_cmdline="$check_cmdline --check-models"
+  fi
+  if $check_proofs; then
+    # taking: Make the extra flags part of --check-proofs.
+    check_cmdline="$check_cmdline --check-proofs --no-bv-eq --no-bv-ineq --no-bv-algebraic"
+  fi
+  if $check_unsat_cores; then
+    check_cmdline="$check_cmdline --check-unsat-cores"
+  fi
+  # run an extra model/proof/core-checking pass
+  if ! CVC4_REGRESSION_ARGS="$CVC4_REGRESSION_ARGS$check_cmdline" "$0" $wrapper "$cvc4" "$benchmark_orig"; then
+    exitcode=1
+  fi
+fi
+
+exit $exitcode
diff --git a/test/system/CVC4JavaTest.java b/test/system/CVC4JavaTest.java
new file mode 100644
index 0000000..bd0d1ff
--- /dev/null
+++ b/test/system/CVC4JavaTest.java
@@ -0,0 +1,70 @@
+/*********************                                                        */
+/*! \file CVC4JavaTest.java
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+import edu.nyu.acsys.CVC4.CVC4;
+
+import edu.nyu.acsys.CVC4.SmtEngine;
+import edu.nyu.acsys.CVC4.ExprManager;
+import edu.nyu.acsys.CVC4.Expr;
+import edu.nyu.acsys.CVC4.Type;
+import edu.nyu.acsys.CVC4.Kind;
+import edu.nyu.acsys.CVC4.Result;
+import edu.nyu.acsys.CVC4.Configuration;
+
+//import edu.nyu.acsys.CVC4.Exception;
+
+import edu.nyu.acsys.CVC4.Parser;
+import edu.nyu.acsys.CVC4.ParserBuilder;
+
+public class CVC4JavaTest {
+  public static void main(String[] args) {
+    try {
+      System.loadLibrary("cvc4jni");
+
+      //CVC4.getDebugChannel().on("current");
+
+      System.out.println(Configuration.about());
+
+      String[] tags = Configuration.getDebugTags();
+      System.out.print("available debug tags:");
+      for(int i = 0; i < tags.length; ++i) {
+        System.out.print(" " + tags[i]);
+      }
+      System.out.println();
+
+      ExprManager em = new ExprManager();
+      SmtEngine smt = new SmtEngine(em);
+
+      Type t = em.booleanType();
+      Expr a = em.mkVar("a", em.booleanType());
+      Expr b = em.mkVar("b", em.booleanType());
+      Expr e = new Expr(em.mkExpr(Kind.AND, a, b, new Expr(a).notExpr()));
+      System.out.println("==> " + e);
+
+      Result r = smt.checkSat(e);
+      boolean correct = r.isSat() == Result.Sat.UNSAT;
+
+      System.out.println(smt.getStatistics());
+
+      System.exit(correct ? 0 : 1);
+    } catch(Exception e) {
+      System.err.println(e);
+      System.exit(1);
+    }
+  }
+}
+
diff --git a/test/system/Makefile.am b/test/system/Makefile.am
new file mode 100644
index 0000000..55a6c2b
--- /dev/null
+++ b/test/system/Makefile.am
@@ -0,0 +1,119 @@
+TESTS_ENVIRONMENT =
+TEST_EXTENSIONS = .class
+CPLUSPLUS_TESTS = \
+	boilerplate \
+	ouroborous \
+	two_smt_engines \
+	smt2_compliance \
+	statistics
+
+if CVC4_BUILD_LIBCOMPAT
+#CPLUSPLUS_TESTS += \
+#	cvc3_main
+endif
+
+TESTS = $(CPLUSPLUS_TESTS)
+
+if CVC4_LANGUAGE_BINDING_JAVA
+TESTS += CVC4JavaTest.class
+endif
+
+# we set the DYLD_LIBRARY_PATH in addition to -Djava.library.path, seems
+# to be necessary on Mac
+CLASS_LOG_COMPILER = env DYLD_LIBRARY_PATH=$(abs_top_builddir)/src/bindings/java/.libs:$(abs_top_builddir)/src/.libs:$(abs_top_builddir)/src/parser/.libs @srcdir@/run_java_test $(JAVA) -classpath .:@abs_top_builddir@/src/bindings/CVC4.jar -Djava.library.path=$(abs_top_builddir)/src/bindings/java/.libs:$(abs_top_builddir)/src/.libs:$(abs_top_builddir)/src/parser/.libs
+
+# Things that aren't tests but that tests rely on and need to
+# go into the distribution
+TEST_DEPS_DIST = \
+	cvc3_main.cpp \
+	cvc3_george.h \
+	CVC4JavaTest.java \
+	run_java_test
+#	cvc3_george.cpp
+
+# Make-level dependencies; these don't go in the source distribution
+# but should trigger a re-compile of all unit tests.  Libraries are
+# included here because (1) if static-linking, the tests must be
+# relinked, and (2) if they've changed that means the sources changed,
+# and that means we should ensure the tests compile against any
+# changes made in the header files.
+TEST_DEPS_NODIST = \
+	$(abs_top_builddir)/src/libcvc4.la \
+	$(abs_top_builddir)/src/parser/libcvc4parser.la
+
+if CVC4_BUILD_LIBCOMPAT
+TEST_DEPS_NODIST += \
+	$(abs_top_builddir)/src/compat/libcvc4compat.la
+#	cvc3_george.lo
+endif
+
+TEST_DEPS = \
+	$(TEST_DEPS_DIST) \
+	$(TEST_DEPS_NODIST)
+
+EXTRA_DIST = \
+	$(CPLUSPLUS_TESTS:%=%.cpp) \
+	$(TEST_DEPS_DIST)
+
+MOSTLYCLEANFILES = $(TESTS)
+
+if STATIC_BINARY
+system_LINK = $(CXXLINK) -all-static
+else
+system_LINK = $(CXXLINK)
+endif
+
+AM_CPPFLAGS = \
+	-I. \
+	"-I at top_builddir@/src" \
+	"-I at top_srcdir@/src/include" \
+	"-I at top_srcdir@/lib" \
+	"-I at top_srcdir@/src" \
+	"-I at top_srcdir@/src/prop/minisat" \
+	-D __STDC_LIMIT_MACROS \
+	-D __STDC_FORMAT_MACROS \
+	-D __BUILDING_CVC4_SYSTEM_TEST \
+	$(TEST_CPPFLAGS)
+
+LIBADD =
+if CVC4_BUILD_LIBCOMPAT
+LIBADD += \
+	@abs_top_builddir@/src/compat/libcvc4compat.la
+endif
+LIBADD += \
+	@abs_top_builddir@/src/parser/libcvc4parser.la \
+	@abs_top_builddir@/src/libcvc4.la
+
+# WHEN SYSTEM TESTS ARE ADDED, BUILD LIKE THIS:
+$(filter-out %.class.lo,$(TESTS:%=%.lo)): %.lo: %.cpp $(LIBADD)
+	$(AM_V_CXX)$(LTCXXCOMPILE) $(AM_CXXFLAGS) -c -o $@ $<
+$(filter-out %.class,$(TESTS)): %: %.lo $(LIBADD)
+	$(AM_V_CXXLD)$(system_LINK) $(LIBADD) $(AM_LDFLAGS) $(LIBS) $<
+CVC4JavaTest.class: CVC4JavaTest.java @abs_top_builddir@/src/bindings/CVC4.jar @abs_top_builddir@/src/bindings/java/libcvc4jni.la
+	$(AM_V_JAVAC)$(JAVAC) -classpath @abs_top_builddir@/src/bindings/CVC4.jar -d $(builddir) $<
+
+# for silent automake rules
+AM_V_JAVAC = $(am__v_JAVAC_$(V))
+am__v_JAVAC_ = $(am__v_JAVAC_$(AM_DEFAULT_VERBOSITY))
+am__v_JAVAC_0 = @echo "  JAVAC " $@;
+
+# trick automake into setting LTCXXCOMPILE, CXXLINK, etc.
+if CVC4_FALSE
+noinst_LTLIBRARIES = libdummy.la
+nodist_libdummy_la_SOURCES = ouroborous.cpp
+libdummy_la_LIBADD = @abs_top_builddir@/src/libcvc4.la
+endif
+
+# rebuild tests if a library changes
+#$(TESTS):: $(TEST_DEPS)
+
+MAKEFLAGS = -k
+export VERBOSE = 1
+
+# synonyms for "check" in this directory in this directory
+.PHONY: test systemtests
+test systemtests: check
+
+# no-ops here
+.PHONY: units regress regress0 regress1 regress2 regress3 regress4
+units regress regress0 regress1 regress2 regress3 regress4:
diff --git a/test/system/Makefile.in b/test/system/Makefile.in
new file mode 100644
index 0000000..47ba4d7
--- /dev/null
+++ b/test/system/Makefile.in
@@ -0,0 +1,1235 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at CVC4_LANGUAGE_BINDING_JAVA_TRUE@am__append_1 = CVC4JavaTest.class
+ at CVC4_BUILD_LIBCOMPAT_TRUE@am__append_2 = \
+ at CVC4_BUILD_LIBCOMPAT_TRUE@	$(abs_top_builddir)/src/compat/libcvc4compat.la
+
+ at CVC4_BUILD_LIBCOMPAT_TRUE@am__append_3 = \
+ at CVC4_BUILD_LIBCOMPAT_TRUE@	@abs_top_builddir@/src/compat/libcvc4compat.la
+
+subdir = test/system
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+ at CVC4_FALSE@libdummy_la_DEPENDENCIES =  \
+ at CVC4_FALSE@	@abs_top_builddir@/src/libcvc4.la
+ at CVC4_FALSE@nodist_libdummy_la_OBJECTS = ouroborous.lo
+libdummy_la_OBJECTS = $(nodist_libdummy_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+ at CVC4_FALSE@am_libdummy_la_rpath =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+SOURCES = $(nodist_libdummy_la_SOURCES)
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.class.log=.log)
+CLASS_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+CLASS_LOG_COMPILE = $(CLASS_LOG_COMPILER) $(AM_CLASS_LOG_FLAGS) \
+	$(CLASS_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = 
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+TEST_EXTENSIONS = .class
+CPLUSPLUS_TESTS = \
+	boilerplate \
+	ouroborous \
+	two_smt_engines \
+	smt2_compliance \
+	statistics
+
+
+#CPLUSPLUS_TESTS += \
+#	cvc3_main
+TESTS = $(CPLUSPLUS_TESTS) $(am__append_1)
+
+# we set the DYLD_LIBRARY_PATH in addition to -Djava.library.path, seems
+# to be necessary on Mac
+CLASS_LOG_COMPILER = env DYLD_LIBRARY_PATH=$(abs_top_builddir)/src/bindings/java/.libs:$(abs_top_builddir)/src/.libs:$(abs_top_builddir)/src/parser/.libs @srcdir@/run_java_test $(JAVA) -classpath .:@abs_top_builddir@/src/bindings/CVC4.jar -Djava.library.path=$(abs_top_builddir)/src/bindings/java/.libs:$(abs_top_builddir)/src/.libs:$(abs_top_builddir)/src/parser/.libs
+
+# Things that aren't tests but that tests rely on and need to
+# go into the distribution
+TEST_DEPS_DIST = \
+	cvc3_main.cpp \
+	cvc3_george.h \
+	CVC4JavaTest.java \
+	run_java_test
+
+#	cvc3_george.cpp
+
+# Make-level dependencies; these don't go in the source distribution
+# but should trigger a re-compile of all unit tests.  Libraries are
+# included here because (1) if static-linking, the tests must be
+# relinked, and (2) if they've changed that means the sources changed,
+# and that means we should ensure the tests compile against any
+# changes made in the header files.
+TEST_DEPS_NODIST = $(abs_top_builddir)/src/libcvc4.la \
+	$(abs_top_builddir)/src/parser/libcvc4parser.la \
+	$(am__append_2)
+#	cvc3_george.lo
+TEST_DEPS = \
+	$(TEST_DEPS_DIST) \
+	$(TEST_DEPS_NODIST)
+
+EXTRA_DIST = \
+	$(CPLUSPLUS_TESTS:%=%.cpp) \
+	$(TEST_DEPS_DIST)
+
+MOSTLYCLEANFILES = $(TESTS)
+ at STATIC_BINARY_FALSE@system_LINK = $(CXXLINK)
+ at STATIC_BINARY_TRUE@system_LINK = $(CXXLINK) -all-static
+AM_CPPFLAGS = \
+	-I. \
+	"-I at top_builddir@/src" \
+	"-I at top_srcdir@/src/include" \
+	"-I at top_srcdir@/lib" \
+	"-I at top_srcdir@/src" \
+	"-I at top_srcdir@/src/prop/minisat" \
+	-D __STDC_LIMIT_MACROS \
+	-D __STDC_FORMAT_MACROS \
+	-D __BUILDING_CVC4_SYSTEM_TEST \
+	$(TEST_CPPFLAGS)
+
+LIBADD = $(am__append_3) \
+	@abs_top_builddir@/src/parser/libcvc4parser.la \
+	@abs_top_builddir@/src/libcvc4.la
+
+# for silent automake rules
+AM_V_JAVAC = $(am__v_JAVAC_$(V))
+am__v_JAVAC_ = $(am__v_JAVAC_$(AM_DEFAULT_VERBOSITY))
+am__v_JAVAC_0 = @echo "  JAVAC " $@;
+
+# trick automake into setting LTCXXCOMPILE, CXXLINK, etc.
+ at CVC4_FALSE@noinst_LTLIBRARIES = libdummy.la
+ at CVC4_FALSE@nodist_libdummy_la_SOURCES = ouroborous.cpp
+ at CVC4_FALSE@libdummy_la_LIBADD = @abs_top_builddir@/src/libcvc4.la
+
+# rebuild tests if a library changes
+#$(TESTS):: $(TEST_DEPS)
+MAKEFLAGS = -k
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .class .class$(EXEEXT) .cpp .lo .log .o .obj .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/system/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/system/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+libdummy.la: $(libdummy_la_OBJECTS) $(libdummy_la_DEPENDENCIES) $(EXTRA_libdummy_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK) $(am_libdummy_la_rpath) $(libdummy_la_OBJECTS) $(libdummy_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ouroborous.Plo at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+boilerplate.log: boilerplate
+	@p='boilerplate'; \
+	b='boilerplate'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ouroborous.log: ouroborous
+	@p='ouroborous'; \
+	b='ouroborous'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+two_smt_engines.log: two_smt_engines
+	@p='two_smt_engines'; \
+	b='two_smt_engines'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+smt2_compliance.log: smt2_compliance
+	@p='smt2_compliance'; \
+	b='smt2_compliance'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+statistics.log: statistics
+	@p='statistics'; \
+	b='statistics'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.class.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(CLASS_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_CLASS_LOG_DRIVER_FLAGS) $(CLASS_LOG_DRIVER_FLAGS) -- $(CLASS_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.class$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(CLASS_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_CLASS_LOG_DRIVER_FLAGS) $(CLASS_LOG_DRIVER_FLAGS) -- $(CLASS_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
+	clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	cscopelist-am ctags ctags-am distclean distclean-compile \
+	distclean-generic distclean-libtool distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	recheck tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# WHEN SYSTEM TESTS ARE ADDED, BUILD LIKE THIS:
+$(filter-out %.class.lo,$(TESTS:%=%.lo)): %.lo: %.cpp $(LIBADD)
+	$(AM_V_CXX)$(LTCXXCOMPILE) $(AM_CXXFLAGS) -c -o $@ $<
+$(filter-out %.class,$(TESTS)): %: %.lo $(LIBADD)
+	$(AM_V_CXXLD)$(system_LINK) $(LIBADD) $(AM_LDFLAGS) $(LIBS) $<
+CVC4JavaTest.class: CVC4JavaTest.java @abs_top_builddir@/src/bindings/CVC4.jar @abs_top_builddir@/src/bindings/java/libcvc4jni.la
+	$(AM_V_JAVAC)$(JAVAC) -classpath @abs_top_builddir@/src/bindings/CVC4.jar -d $(builddir) $<
+export VERBOSE = 1
+
+# synonyms for "check" in this directory in this directory
+.PHONY: test systemtests
+test systemtests: check
+
+# no-ops here
+.PHONY: units regress regress0 regress1 regress2 regress3 regress4
+units regress regress0 regress1 regress2 regress3 regress4:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/system/boilerplate.cpp b/test/system/boilerplate.cpp
new file mode 100644
index 0000000..297f69a
--- /dev/null
+++ b/test/system/boilerplate.cpp
@@ -0,0 +1,36 @@
+/*********************                                                        */
+/*! \file boilerplate.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A simple start-up/tear-down test for CVC4.
+ **
+ ** This simple test just makes sure that the public interface is
+ ** minimally functional.  It is useful as a template to use for other
+ ** system tests.
+ **/
+
+#include <iostream>
+#include <sstream>
+
+#include "expr/expr.h"
+#include "smt/smt_engine.h"
+
+using namespace CVC4;
+using namespace std;
+
+int main() {
+  ExprManager em;
+  Options opts;
+  SmtEngine smt(&em);
+  Result r = smt.query(em.mkConst(true));
+
+  return (Result::VALID == r) ? 0 : 1;
+}
+
diff --git a/test/system/cvc3_george.h b/test/system/cvc3_george.h
new file mode 100644
index 0000000..9dba3ed
--- /dev/null
+++ b/test/system/cvc3_george.h
@@ -0,0 +1,22 @@
+/*********************                                                        */
+/*! \file cvc3_george.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Test of CVC3 compatibility interface
+ **
+ ** This is part of a test of the CVC3 compatibility interface present in
+ ** CVC4.  It is a test copied from CVC3's "test" directory.
+ **/
+
+void testgeorge1();
+void testgeorge2();
+void testgeorge3();
+void testgeorge4();
+void testgeorge5();
diff --git a/test/system/cvc3_main.cpp b/test/system/cvc3_main.cpp
new file mode 100644
index 0000000..c74cb73
--- /dev/null
+++ b/test/system/cvc3_main.cpp
@@ -0,0 +1,2227 @@
+/*********************                                                        */
+/*! \file cvc3_main.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Test of CVC3 compatibility interface
+ **
+ ** This is part of a test of the CVC3 compatibility interface present in
+ ** CVC4.  It is a test copied from CVC3's "test" directory.  Only #includes
+ ** were changed to support this test in CVC4.
+ **
+ ** The original file comment is preserved in the source.
+ **/
+
+///////////////////////////////////////////////////////////////////////////////
+//                                                                           //
+// File: main.cpp                                                            //
+// Author: Clark Barrett                                                     //
+// Created: Sat Apr 19 01:47:47 2003                                         //
+//                                                                           //
+///////////////////////////////////////////////////////////////////////////////
+ 
+
+#include "compat/cvc3_compat.h"
+//#include "vc.h"
+//#include "theory_arith.h" // for arith kinds and expressions
+//#include "theory_array.h"
+#include <fstream>
+#include <iostream>
+#include <sstream>
+#include <string>
+#include <deque>
+//#include "exception.h"
+//#include "typecheck_exception.h"
+//#include "command_line_flags.h"
+//#include "debug.h"
+#include "cvc3_george.h"
+
+
+using namespace std;
+using namespace CVC3;
+
+int exitStatus;
+
+inline void __expect__(const std::string& file,
+                       int line,
+                       bool cond,
+                       const std::string& cond_s,
+                       const std::string& msg) {
+  if(!cond) {
+    std::cerr << file << ":" << line
+              << ": Expected: (" << cond_s << "). "
+              << msg << std::endl;
+    exitStatus = 1;
+  }
+}
+
+#define EXPECT(cond, msg) __expect__(__FILE__, __LINE__, (cond), #cond, (msg))
+
+// Check whether e is valid
+bool check(ValidityChecker* vc, Expr e, bool verbose=true)
+{
+  if(verbose) {
+    cout << "Query: ";
+    vc->printExpr(e);
+  }
+  bool res = vc->query(e);
+  if (res) {
+    if(verbose) cout << "Valid" << endl << endl;
+  } else {
+    if(verbose) cout << "Invalid" << endl << endl;
+  }
+  return res;
+}
+
+
+// Make a new assertion
+void newAssertion(ValidityChecker* vc, Expr e)
+{
+  cout << "Assert: ";
+  vc->printExpr(e);
+  vc->assertFormula(e);
+}
+
+int eqExprVecs(const vector<Expr>& v1,
+                const vector<Expr>& v2) {
+    if( v1.size() != v2.size() ) {
+        return 0;
+    }
+
+    for( unsigned int i=0; i < v1.size(); ++i ) {
+        if( v1[i] != v2[i] ) {
+            return 0;
+        }
+    }
+
+    return 1;
+}
+
+int eqExprVecVecs(const vector<vector<Expr> > vv1,
+                   const vector<vector<Expr> > vv2) {
+    if( vv1.size() != vv2.size() ) {
+        return 0;
+    }
+
+    for( unsigned int i=0; i < vv1.size(); ++i ) {
+        if( !eqExprVecs(vv1[i],vv2[i]) ) {
+            return 0;
+        }
+    }
+
+    return 1;
+}
+
+
+void test ()
+{
+   CLFlags flags = ValidityChecker::createFlags();
+   ValidityChecker* vc = ValidityChecker::create(flags);
+
+   try {
+     Type it (vc->intType ());                //int
+     Op f = vc->createOp("f",vc->funType(it,it));
+     Expr z = vc->varExpr("z",it);
+     Expr e = vc->funExpr(f, vc->funExpr(f, z));
+     e = e[0];
+     Expr f2 = vc->funExpr(f, e);
+     Expr f3 = vc->funExpr(f, f2);
+
+     EXPECT(e != f2 && e != f3, "Refcount problems");
+
+     Expr x (vc->boundVarExpr ("x", "0", it));//x0:int
+     vector<Expr> xs;
+     xs.push_back (x);                        //<x0:int>
+     Op lxsx (vc->lambdaExpr (xs,x));       //\<x0:int>. x0:int
+     Expr y (vc->ratExpr (1,1));              //1
+     vector<Expr> ys;
+     ys.push_back (y);                        //<1>
+     Expr lxsxy = vc->funExpr (lxsx, y);      //(\<x0:int>. x0:int)1
+     Expr lxsxys = vc->funExpr (lxsx, ys);  //(\<x0:int>. x0:int)<1>
+     cout << "Lambda application: " << lxsxy << endl;
+     cout << "Simplified: " << vc->simplify(lxsxy) << endl;
+   } catch(const Exception& e) {
+     exitStatus = 1;
+     cout << "*** Exception caught in test (): \n" << e << endl;
+   }
+   delete vc;
+}
+
+void test1()
+{
+  CLFlags flags = ValidityChecker::createFlags();
+  flags.setFlag("dagify-exprs",false);
+  flags.setFlag("dump-log", ".test1.cvc");
+  ValidityChecker* vc = ValidityChecker::create(flags);
+  
+  // It is important that all Expr objects are deleted before vc is
+  // deleted.  Therefore, we enclose them in a scope of try{ }catch
+  // block.
+  //
+  // Also, vc methods may throw an Exception, and we want to delete vc
+  // even in those exceptional cases.
+  try {
+
+    bool b = check(vc, vc->trueExpr());
+    EXPECT(b, "Should be valid");
+
+    vc->push();
+    b = check(vc, vc->falseExpr());
+    EXPECT(!b, "Should be invalid");
+    vc->pop();          
+
+    // Check p OR ~p
+
+    Expr p = vc->varExpr("p", vc->boolType());
+    Expr e = vc->orExpr(p, vc->notExpr(p));
+
+    b = check(vc, e);
+    EXPECT(b, "Should be valid");
+
+    // Check x = y -> f(x) = f(y)
+
+    Expr x = vc->varExpr("x", vc->realType());
+    Expr y = vc->varExpr("y", vc->realType());
+
+    Type real2real = vc->funType(vc->realType(), vc->realType());
+    Op f = vc->createOp("f", real2real);
+    Expr fx = vc->funExpr(f, x);
+    Expr fy = vc->funExpr(f, y);
+
+    e = vc->impliesExpr(vc->eqExpr(x,y),vc->eqExpr(fx, fy));
+    b = check(vc, e);
+    EXPECT(b, "Should be valid");
+
+    // Check f(x) = f(y) -> x = y
+
+    e = vc->impliesExpr(vc->eqExpr(fx,fy),vc->eqExpr(x, y));
+    int scopeLevel = vc->scopeLevel();
+    vc->push();
+    b = check(vc, e);
+    EXPECT(!b, "Should be invalid");
+
+    // Get counter-example
+    
+    vector<Expr> assertions;
+    cout << "Scope level: " << vc->scopeLevel() << endl;
+    cout << "Counter-example:" << endl;
+    //vc->getCounterExample(assertions);
+    for (unsigned i = 0; i < assertions.size(); ++i) {
+      vc->printExpr(assertions[i]);
+    }
+    cout << "End of counter-example" << endl << endl;
+
+    // Reset to initial scope
+    cout << "Resetting" << endl;
+    vc->pop();
+    EXPECT(scopeLevel == vc->scopeLevel(), "scope error");
+    cout << "Scope level: " << vc->scopeLevel() << endl << endl;
+
+    // Check w = x & x = y & y = z & f(x) = f(y) & x = 1 & z = 2
+    
+    Expr w = vc->varExpr("w", vc->realType());
+    Expr z = vc->varExpr("z", vc->realType());
+
+    cout << "Push Scope" << endl << endl;
+    vc->push();
+
+    newAssertion(vc, vc->eqExpr(w, x));
+    newAssertion(vc, vc->eqExpr(x, y));
+    newAssertion(vc, vc->eqExpr(y, z));
+    newAssertion(vc, vc->eqExpr(fx, fy));
+    newAssertion(vc, vc->eqExpr(x, vc->ratExpr(1)));
+
+    cout << endl << "simplify(w) = ";
+    vc->printExpr(vc->simplify(w));
+    cout << endl;
+    EXPECT(vc->simplify(w)==vc->ratExpr(1), "Expected simplify(w) = 1");
+
+    newAssertion(vc, vc->eqExpr(z, vc->ratExpr(2)));
+    assertions.clear();
+    cout << "Inconsistent?: " << vc->inconsistent(assertions) << endl;
+
+    cout << "Assumptions Used:" << endl;
+    for (unsigned i = 0; i < assertions.size(); ++i) {
+      vc->printExpr(assertions[i]);
+    }
+
+    cout << endl << "Pop Scope" << endl << endl;
+    vc->pop();
+    
+    cout << "simplify(w) = ";
+    vc->printExpr(vc->simplify(w));
+    EXPECT(vc->simplify(w)==w, "Expected simplify(w) = w");
+    cout << endl;
+    
+    assertions.clear();
+    cout << "Inconsistent?: " << vc->inconsistent(assertions) << endl;
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test1(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+
+void test2()
+{
+  CLFlags flags = ValidityChecker::createFlags();
+  flags.setFlag("dagify-exprs",false);
+  ValidityChecker* vc = ValidityChecker::create(flags);
+
+  try {
+
+    Expr bexpr = vc->varExpr("b", vc->intType());
+    vc->assertFormula(vc->ltExpr(bexpr, vc->ratExpr(10)));
+
+    Expr c = vc->varExpr("c", vc->intType());
+    vc->assertFormula(c.eqExpr(vc->ratExpr(0)) || c.eqExpr(vc->ratExpr(1)));
+
+    bool b = check(vc, vc->leExpr(bexpr, vc->ratExpr(10)));
+    EXPECT(b, "Should be valid");
+
+    b = check(vc, vc->falseExpr());
+    EXPECT(!b, "Should be invalid");
+    vc->returnFromCheck();
+
+    // Check x = y -> g(x,y) = g(y,x)
+
+    Expr x = vc->varExpr("x", vc->realType());
+    Expr y = vc->varExpr("y", vc->realType());
+
+    Type real = vc->realType();
+    vector<Type> RxR;
+    RxR.push_back(real);
+    RxR.push_back(real);
+
+    Type realxreal2real = vc->funType(RxR, real);
+    Op g = vc->createOp("g", realxreal2real);
+
+    Expr gxy = vc->funExpr(g, x, y);
+    Expr gyx = vc->funExpr(g, y, x);
+
+    Expr e = vc->impliesExpr(vc->eqExpr(x,y),vc->eqExpr(gxy, gyx));
+    b = check(vc, e);
+    EXPECT(b, "Should be valid");
+
+    Op h = vc->createOp("h", realxreal2real);
+
+    Expr hxy = vc->funExpr(h, x, y);
+    Expr hyx = vc->funExpr(h, y, x);
+
+    e = vc->impliesExpr(vc->eqExpr(x,y),vc->eqExpr(hxy, hyx));
+    b = check(vc, e);
+    EXPECT(b, "Should be valid");
+
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test2(): \n" << e << endl;
+  }
+
+  delete vc;
+}
+
+
+Expr ltLex(ValidityChecker* vc, Expr i1, Expr i2, Expr j1, Expr j2)
+{
+  Expr res = vc->ltExpr(i1, j1);
+  return vc->orExpr(res, vc->andExpr(vc->eqExpr(i1, j1), vc->ltExpr(i2, j2)));
+}
+
+
+Expr createTestFormula(ValidityChecker* vc, Expr i1, Expr i2, Expr r1, Expr r2)
+{
+  Expr lt1 = ltLex(vc, r1, r2, i1, i2);
+  Expr lt2 = ltLex(vc, i2, i1, r2, r1);
+  return vc->andExpr(lt1, lt2);
+}
+
+
+void test3()
+{
+  CLFlags flags = ValidityChecker::createFlags();
+  flags.setFlag("dagify-exprs",false);
+  ValidityChecker* vc = ValidityChecker::create(flags);
+
+  try {
+    Expr i = vc->varExpr("i", vc->realType());
+    Expr j = vc->varExpr("j", vc->realType());
+    Expr k = vc->varExpr("k", vc->realType());
+    
+    Expr one = vc->ratExpr(1);
+    
+    cout << "i: " << i.getIndex() << endl;
+    
+    Expr test = createTestFormula(vc, i, j,
+				  vc->minusExpr(i, one), vc->minusExpr(j, k));
+    
+    cout << "Trying test: ";
+    vc->printExpr(test);
+    cout << endl;
+    
+    vc->push();
+    bool result = vc->query(test);
+    if (result) {
+      cout << "Test Valid" << endl;
+      vc->pop();
+    }
+    else {
+      Expr condition;
+      vector<Expr> assertions;
+      unsigned index;
+      
+      //vc->getCounterExample(assertions);
+      
+      cout << "Test Invalid Under Conditions:" << endl;
+      for (index = 0; index < assertions.size(); ++index) {
+	vc->printExpr(assertions[index]);
+      }
+      
+      // Try assertions one by one
+      for (index = 0; index < assertions.size(); ++index) {
+	condition = vc->notExpr(assertions[index]);
+	cout << "Trying test under condition: ";
+	vc->printExpr(condition);
+	cout << endl;
+	vc->pop();
+        vc->push();
+	result = vc->query(vc->impliesExpr(condition, test));
+	if (result) {
+	  cout << "Result Valid" << endl;
+	  break;
+	}
+	else {
+	  cout << "Result Invalid" << endl;
+	}
+      }
+    }
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test3(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+
+void test4()
+{
+  CLFlags flags = ValidityChecker::createFlags();
+  flags.setFlag("dagify-exprs",false);
+  ValidityChecker* vc = ValidityChecker::create(flags);
+  
+  try {
+  Expr i = vc->varExpr("i", vc->realType());
+  Expr j = vc->varExpr("j", vc->realType());
+  Expr k = vc->varExpr("k", vc->realType());
+
+  Expr one = vc->ratExpr(1);
+
+  cout << "i: " << i.getIndex() << endl;
+
+  Expr test = createTestFormula(vc, i, j,
+				vc->minusExpr(i, one), vc->minusExpr(j, k));
+
+  cout << "Trying test: ";
+  vc->printExpr(test);
+  cout << endl;
+
+  vc->push();
+  bool result = vc->query(test);
+  if (result) {
+    cout << "Test Valid" << endl;
+  }
+  else {
+    Expr condition;
+    vector<Expr> assertions;
+    unsigned index;
+
+    //vc->getCounterExample(assertions);
+
+    cout << "Test Invalid Under Conditions:" << endl;
+    for (index = 0; index < assertions.size(); ++index) {
+      vc->printExpr(assertions[index]);
+    }
+
+    // Try assertions one by one
+    for (index = 0; index < assertions.size(); ++index) {
+      condition = vc->notExpr(assertions[index]);
+      cout << "Trying test under condition: ";
+      vc->printExpr(condition);
+      cout << endl;
+      vc->pop();
+      vc->push();
+      result = vc->query(vc->impliesExpr(condition, test));
+      if (result) {
+	cout << "Result Valid" << endl;
+	break;
+      }
+      else {
+	cout << "Result Invalid" << endl;
+      }
+    }
+  }
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test4(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+
+void findLeaves(Expr e, vector<Expr>& l)
+{
+  int ar = e.arity();
+  if (ar > 0) {
+    for (int i = 0; i < ar; ++i)
+      findLeaves(e[i], l);
+    return;
+  }
+  l.push_back(e);
+}
+
+
+bool hasij(Expr e, Expr i, Expr j)
+{
+  int ar = e.arity();
+  if (ar > 0) {
+    for (int k = 0; k < ar; ++k)
+      if (hasij(e[k], i, j)) return true;
+    return false;
+  }
+  if (e == i || e == j) return true;
+  return false;
+}
+
+
+Expr plusExpr(ValidityChecker* vc, vector<Expr>& kids)
+{
+  if (kids.size() == 0) return vc->ratExpr(0);
+  else if (kids.size() == 1) return kids[0];
+  else if (kids.size() == 2) return vc->plusExpr(kids[0], kids[1]);
+  else {
+    Expr r = kids.back();
+    kids.pop_back();
+    return vc->plusExpr(plusExpr(vc, kids), r);
+  }
+}
+
+
+void test5()
+{
+  CLFlags flags = ValidityChecker::createFlags();
+  flags.setFlag("dagify-exprs",false);
+  flags.setFlag("dump-log", ".test5.cvc");
+  ValidityChecker* vc = ValidityChecker::create(flags);
+
+  try {
+  Expr i = vc->varExpr("i1", vc->realType());
+  Expr j = vc->varExpr("i2", vc->realType());
+  Expr p = vc->varExpr("p", vc->realType());
+  Expr q = vc->varExpr("q", vc->realType());
+  Expr r = vc->varExpr("r", vc->realType());
+  Expr a = vc->varExpr("arb_addr", vc->realType());
+  Expr N = vc->varExpr("N", vc->realType());
+
+  Expr M = vc->varExpr("M", vc->arrayType(vc->realType(), vc->realType()));
+
+  Expr M2 = vc->writeExpr(M, vc->plusExpr(q, i), vc->readExpr(M, vc->plusExpr(r, i)));
+
+  Expr M1 = vc->writeExpr(M, vc->plusExpr(p, j), vc->readExpr(M, vc->plusExpr(r, j)));
+
+  Expr e = vc->eqExpr(vc->readExpr(vc->writeExpr(M2, vc->plusExpr(p, j), vc->readExpr(M2, vc->plusExpr(r, j))), a),
+		      vc->readExpr(vc->writeExpr(M1, vc->plusExpr(q, i), vc->readExpr(M1, vc->plusExpr(r, i))), a));
+
+  Expr one = vc->ratExpr(1);
+  Expr zero = vc->ratExpr(0);
+
+  Expr qmp = vc->minusExpr(q, p);
+  Expr qmr = vc->minusExpr(q, r);
+
+  vector<Expr> hyp;
+  hyp.push_back(vc->ltExpr(i, j));
+//   hyp.push_back(vc->orExpr(vc->geExpr(qmp, N), vc->leExpr(qmp, zero)));
+//   hyp.push_back(vc->orExpr(vc->geExpr(qmr, N), vc->leExpr(qmr, zero)));
+
+  Expr test = vc->impliesExpr(vc->andExpr(hyp), e);
+  Expr query;
+
+  cout << "Checking verification condition:" << endl;
+  vc->printExpr(test);
+  cout << endl;
+
+  vc->push();
+  bool result = vc->query(test);
+  if (result) {
+    cout << "Valid" << endl;
+  }
+  else {
+    vector<Expr> conditions;
+    vector<Expr> assertions;
+    unsigned index, index2;
+    int req;
+    vector<Expr> leaves;
+
+    //vc->getCounterExample(assertions);
+
+    cout << "Invalid Under Conditions:" << endl;
+    for (index = 0; index < assertions.size(); ++index) {
+      if (assertions[index] == (!test)) {
+	for (; index < assertions.size()-1; ++index) {
+	  assertions[index] = assertions[index+1];
+	}
+	assertions.pop_back();
+	break;
+      }
+    }
+    for (index = 0; index < assertions.size(); ++index) {
+      vc->printExpr(assertions[index]);
+    }
+
+    cout << endl;
+
+    // Try assertions one by one
+    for (index = 0; index < assertions.size(); ++index) {
+      e = assertions[index];
+      
+      // Check condition for eligibility
+      if (e.isNot()) {
+	cout << "Condition ineligible: negation" << endl;
+	vc->printExpr(e);
+	cout << endl;
+	continue;
+      }
+      if (e.isEq()) {
+	req = 2;
+      }
+      else req = 1;
+
+      leaves.clear();
+      findLeaves(e, leaves);
+      for (index2 = 0; index2 < leaves.size(); ++index2) {
+	if (!leaves[index2].isVar() ||
+	    leaves[index2] == i ||
+	    leaves[index2] == j ||
+	    leaves[index2] == a)
+	  continue;
+	req--;
+      }
+      if (req > 0) {
+	cout << "Condition ineligible: not enough non-loop variables" << endl;
+	vc->printExpr(e);
+	cout << endl;
+	continue;
+      }
+
+      cout << "Condition selected:" << endl;
+      vc->printExpr(e);
+      cout << endl << endl;
+
+      conditions.push_back(vc->notExpr(e));
+      cout << "Trying verification condition with hypothesis:" << endl;
+      vc->printExpr(vc->andExpr(conditions));
+      cout << endl;
+      vc->pop();
+      vc->push();
+      query = vc->impliesExpr(vc->andExpr(conditions), test);
+      result = vc->query(query);
+      if (result) {
+	cout << "Result Valid" << endl;
+	break;
+      }
+      else {
+	assertions.clear();
+	vc->getCounterExample(assertions);
+
+	cout << "Invalid Under Conditions:" << endl;
+	for (index2 = 0; index2 < assertions.size(); ++index2) {
+	  if (assertions[index2] == (!query)) {
+	    for (; index2 < assertions.size()-1; ++index2) {
+	      assertions[index2] = assertions[index2+1];
+	    }
+	    assertions.pop_back();
+	    break;
+	  }
+	}
+
+	for (index2 = 0; index2 < assertions.size(); ++index2) {
+	  vc->printExpr(assertions[index2]);
+	}
+	cout << endl;
+	index = (unsigned)-1;
+      }
+    }
+
+    cout << endl << "Attempting to remove loop variables" << endl;
+    // replace loop variables in conditions
+    vector<Expr> newConditions;
+    vector<Expr> newPlus;
+    bool foundi, foundj, negi, negj;
+    Expr minusone = vc->ratExpr(-1);
+    for (index = 0; index < conditions.size(); ++index) {
+      if (conditions[index][0].isEq()) {
+	e = vc->simplify(vc->minusExpr(conditions[index][0][0], conditions[index][0][1]));
+	if (hasij(e, i, j)) {
+	  if (e.getKind() == CVC3::PLUS) {
+	    newPlus.clear();
+	    newPlus.push_back(e[0]);
+	    foundi = foundj = negi = negj = false;
+	    for (index2 = 1; index2 < (unsigned)e.arity(); index2++) {
+	      Expr term = e[index2];
+	      if (term == i && !foundi) foundi = true;
+	      else if (term == j && !foundj) {
+                foundj = true;
+		negj = true;
+	      }
+	      else if (term.getKind() == CVC3::MULT && term[0] == minusone && term[1] == i && !foundi) {
+		foundi = true;
+		negi = true;
+	      }
+	      else if (term.getKind() == CVC3::MULT && term[0] == minusone && term[1] == j && !foundj) foundj = true;
+	      else newPlus.push_back(term);
+	    }
+	    if (foundi && foundj && ((negi && negj) || (!negi && !negj))) {
+	      e = plusExpr(vc, newPlus);
+	      if (negi && negj) e = vc->uminusExpr(e);
+	      e = vc->simplify(e);
+	      if (!hasij(e, i, j)) {
+		newConditions.push_back(vc->orExpr(vc->geExpr(e, N), vc->leExpr(e, zero)));
+		continue;
+	      }
+	    }
+	  }
+	  cout << "Unable to remove loop variables:" << endl;
+	  vc->printExpr(e);
+	  break;
+	}
+      }
+      newConditions.push_back(conditions[index]);
+    }
+    if (index == conditions.size()) {
+      cout << "Loop variables successfully removed:" << endl;
+      Expr cond = (newConditions.size()>0)?
+	vc->andExpr(newConditions) : vc->trueExpr();
+      vc->printExpr(cond);
+      cout << endl;
+
+      vector<Expr> loopConditions;
+      loopConditions.push_back(cond);
+      loopConditions.push_back(vc->geExpr(i, one));
+      loopConditions.push_back(vc->geExpr(j, one));
+      loopConditions.push_back(vc->leExpr(i, N));
+      loopConditions.push_back(vc->leExpr(j, N));
+      vc->pop();
+      vc->push();
+      cout << "Final query" << endl;
+      result = vc->query(vc->impliesExpr(vc->andExpr(loopConditions), test));
+      if (result) {
+	cout << "Result Valid" << endl;
+      }
+      else {
+	cout << "Result Invalid" << endl;
+      }
+    }
+  }
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test5(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+//#include "debug.h"
+
+// Test importing of Exprs from a different validity checker
+void test6() {
+  ValidityChecker* vc1 = ValidityChecker::create();
+  ValidityChecker* vc2 = ValidityChecker::create();
+
+  try {
+    Type real1 = vc1->realType();
+
+    Expr x1 = vc1->varExpr("x", real1);
+    Expr y1 = vc1->boundVarExpr("y", "0", real1);
+    
+    cout << "vc1 variables: " << x1 << ", " << y1 << endl;
+    
+    Expr x2 = vc2->varExpr("x", vc2->importType(real1));
+    Expr y2 = vc2->boundVarExpr("y", "0", vc2->realType());
+    
+    cout << "vc2 variables: " << x2 << ", " << y2 << endl;
+    cout << "vars imported to vc2 from vc1: "
+	 << vc2->importExpr(x1) << ", " << vc2->importExpr(y1) << endl;
+    Expr t1 = vc1->trueExpr();
+    Expr and1 = vc1->andExpr(t1, vc1->falseExpr());
+    Op f1 = vc1->createOp("f", vc1->funType(real1, real1));
+    Expr fx1 = vc1->funExpr(f1, x1);
+    Expr f5_1 = vc1->funExpr(f1, vc1->ratExpr(5,1));
+    Type rt1 = vc1->recordType("foo", real1, "bar", real1);
+    Expr r1 = vc1->recordExpr("foo", fx1, "bar", f5_1);
+    Expr r1_eq = vc1->eqExpr(r1, vc1->recUpdateExpr(r1, "foo", f5_1));
+    Type art1 = vc1->arrayType(real1, rt1);
+    Expr ar1 = vc1->varExpr("ar", art1);
+    Expr ar_eq1 = vc1->eqExpr(vc1->writeExpr(ar1, x1, r1), ar1);
+    Expr query1 = vc1->eqExpr(vc1->recSelectExpr(vc1->readExpr(ar1, x1), "foo"),
+			      vc1->recSelectExpr(r1, "bar"));
+    
+    cout << "*** VC #1:" << endl;
+    newAssertion(vc1, r1_eq);
+    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));
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test6(): \n" << e << endl;
+  }
+  delete vc1;
+  delete vc2;
+}
+
+
+void test7() {
+  ValidityChecker* vc1 = ValidityChecker::create();
+  ValidityChecker* vc2 = ValidityChecker::create();
+  try {
+    Expr e1 = vc1->varExpr("e1", vc1->realType());
+    Expr e2 = vc2->varExpr("e2", vc2->realType());
+    newAssertion(vc2, vc2->eqExpr(vc2->importExpr(e1), e2));
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test7(): \n" << e << endl;
+  }
+  delete vc1;
+  delete vc2;
+}
+
+
+void test8() {
+  ValidityChecker* vc = ValidityChecker::create();
+  try {
+    vector<Expr> vec;
+    vec.push_back(vc->boundVarExpr("x", "x", vc->realType()));
+    Expr lambda = vc->lambdaExpr(vec, vc->falseExpr()).getExpr();
+    Expr witness;
+    try {
+      Type t = vc->subtypeType(lambda, witness);
+      EXPECT(false, "Typechecking exception expected");
+    } catch(const TypecheckException&) {
+      // fall through
+    }
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test8(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+
+Expr adder(ValidityChecker* vc, const Expr& a, const Expr& b, const Expr& c)
+{
+  return vc->notExpr(vc->iffExpr(vc->notExpr(vc->iffExpr(a,b)),c));
+}
+
+
+Expr carry(ValidityChecker* vc, const Expr& a, const Expr& b, const Expr& c)
+{
+  return vc->orExpr(vc->andExpr(a,b), vc->orExpr(vc->andExpr(b,c),vc->andExpr(a,c)));
+}
+
+
+void add(ValidityChecker* vc, vector<Expr> a, vector<Expr> b, vector<Expr>& sum)
+{
+  int i,N=a.size();
+  Expr c = vc->falseExpr();
+
+  for (i=0; i < N; i++)
+  {
+    sum.push_back(adder(vc,a[i],b[i],c));
+    c = carry(vc,a[i],b[i],c);
+  }
+}
+
+
+Expr vectorEq(ValidityChecker* vc, vector<Expr> a, vector<Expr> b)
+{
+  int i, N=a.size();
+  Expr result = vc->trueExpr();
+
+  for (i=0; i < N; i++) {
+    result = result && a[i].iffExpr(b[i]);
+  }
+  return result;
+}
+
+
+void test9(int N) {
+  CLFlags flags = ValidityChecker::createFlags();
+  //  flags.setFlag("proofs",true);
+  ValidityChecker* vc = ValidityChecker::create(flags);
+
+  try {
+  int i;
+  vector<Expr> a,b,sum1,sum2;
+
+  for (i=0; i < N; i++) {
+    a.push_back(vc->varExpr("a" + int2string(i), vc->boolType()));
+    b.push_back(vc->varExpr("b" + int2string(i), vc->boolType()));
+  }
+
+  add(vc,a,b,sum1);
+  add(vc,b,a,sum2);
+
+  Expr q = vectorEq(vc,sum1,sum2);
+
+  check(vc, q);
+
+  //  Proof p = vc->getProof();
+
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test9(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+
+Expr bvadder(ValidityChecker* vc, const Expr& a, const Expr& b, const Expr& c)
+{
+  return vc->newBVXorExpr(a, vc->newBVXorExpr(b, c));
+}
+
+
+Expr bvcarry(ValidityChecker* vc, const Expr& a, const Expr& b, const Expr& c)
+{
+  return vc->newBVOrExpr(vc->newBVAndExpr(a,b), vc->newBVOrExpr(vc->newBVAndExpr(b,c),vc->newBVAndExpr(a,c)));
+}
+
+
+void bvadd(ValidityChecker* vc, vector<Expr> a, vector<Expr> b, vector<Expr>& sum)
+{
+  int i,N=a.size();
+  Expr c = vc->newBVConstExpr(Rational(0), 1);
+
+  for (i=0; i < N; i++)
+  {
+    sum.push_back(bvadder(vc,a[i],b[i],c));
+    c = bvcarry(vc,a[i],b[i],c);
+  }
+}
+
+
+Expr bvvectorEq(ValidityChecker* vc, vector<Expr> a, vector<Expr> b)
+{
+  int i, N=a.size();
+  Expr result = vc->newBVConstExpr(string("1"));
+
+  for (i=0; i < N; i++) {
+    result = vc->newBVAndExpr(result, vc->newBVXnorExpr(a[i], b[i]));
+  }
+  return result;
+}
+
+
+void bvtest9(int N) {
+  CLFlags flags = ValidityChecker::createFlags();
+  ValidityChecker* vc = ValidityChecker::create(flags);
+
+  try {
+  int i;
+  vector<Expr> avec,bvec,sum1vec,sum2;
+
+  Expr a, b, sum1;
+  a = vc->varExpr("a", vc->bitvecType(N));
+  b = vc->varExpr("b", vc->bitvecType(N));
+  vector<Expr> kids;
+  kids.push_back(a);
+  kids.push_back(b);
+  sum1 = vc->newBVPlusExpr(N, kids);
+
+  for (i=0; i < N; i++) {
+    avec.push_back(vc->newBVExtractExpr(a, i, i));
+    bvec.push_back(vc->newBVExtractExpr(b, i, i));
+    sum1vec.push_back(vc->newBVExtractExpr(sum1, i, i));
+  }
+
+  bvadd(vc,avec,bvec,sum2);
+
+  Expr q = bvvectorEq(vc,sum1vec,sum2);
+
+  check(vc, vc->eqExpr(q,vc->newBVConstExpr(string("1"))));
+
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in bvtest9(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+
+// Test for memory leaks (run silently)
+void test10()
+{
+  CLFlags flags = ValidityChecker::createFlags();
+  ValidityChecker* vc = ValidityChecker::create(flags);
+
+  // Create all expressions in a separate scope, so that they are
+  // destroyed before vc is deleted.
+
+  try {
+    //  Check x = y -> g(x,y) = g(y,x)
+
+    Expr x = vc->varExpr("x", vc->realType());
+    Expr y = vc->varExpr("y", vc->realType());
+
+    Type real = vc->realType();
+    vector<Type> RxR;
+    RxR.push_back(real);
+    RxR.push_back(real);
+
+    Type realxreal2real = vc->funType(RxR, real);
+    Op g = vc->createOp("g", realxreal2real);
+
+    Expr gxy = vc->funExpr(g, x, y);
+    Expr gyx = vc->funExpr(g, y, x);
+
+    Expr e = vc->impliesExpr(vc->eqExpr(x,y),vc->eqExpr(gxy, gyx));
+    check(vc, e, false);
+
+    Op h = vc->createOp("h", realxreal2real);
+
+    Expr hxy = vc->funExpr(h, x, y);
+    Expr hyx = vc->funExpr(h, y, x);
+
+    e = vc->impliesExpr(vc->eqExpr(x,y),vc->eqExpr(hxy, hyx));
+    check(vc, e, false);
+
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test10(): \n" << e << endl;
+  }
+  // Make sure all Expr's are deleted first
+  delete vc;
+}
+
+unsigned int printImpliedLiterals(ValidityChecker* vc)
+{
+  unsigned int count = 0;
+  cout << "Implied Literals:" << endl;
+  Expr impLit = vc->getImpliedLiteral();
+  while (!impLit.isNull()) {
+    ++count;
+    vc->printExpr(impLit);
+    impLit = vc->getImpliedLiteral();
+  }
+  return count;
+}
+
+
+void test11()
+{
+  CLFlags flags = ValidityChecker::createFlags();
+  ValidityChecker* vc = ValidityChecker::create(flags);
+
+  try {
+    Expr x = vc->varExpr("x", vc->realType());
+    Expr y = vc->varExpr("y", vc->realType());
+    Expr z = vc->varExpr("z", vc->realType());
+
+    Type real = vc->realType();
+    Type real2real = vc->funType(real, real);
+    Type real2bool = vc->funType(real, vc->boolType());
+    Op f = vc->createOp("f", real2real);
+    Op p = vc->createOp("p", real2bool);
+
+    Expr fx = vc->funExpr(f, x);
+    Expr fy = vc->funExpr(f, y);
+
+    Expr px = vc->funExpr(p, x);
+    Expr py = vc->funExpr(p, y);
+
+    Expr xeqy = vc->eqExpr(x, y);
+    Expr yeqx = vc->eqExpr(y, x);
+    Expr xeqz = vc->eqExpr(x, z);
+    Expr zeqx = vc->eqExpr(z, x);
+    Expr yeqz = vc->eqExpr(y, z);
+    Expr zeqy = vc->eqExpr(z, y);
+
+    unsigned int c;
+
+    vc->registerAtom(vc->eqExpr(x,vc->ratExpr(0,1)));
+    vc->registerAtom(xeqy);
+    vc->registerAtom(yeqx);
+    vc->registerAtom(xeqz);
+    vc->registerAtom(zeqx);
+    vc->registerAtom(yeqz);
+    vc->registerAtom(zeqy);
+    vc->registerAtom(px);
+    vc->registerAtom(py);
+    vc->registerAtom(vc->eqExpr(fx, fy));
+
+    cout << "Push" << endl;
+    vc->push();
+
+    cout << "Assert x = y" << endl;
+    vc->assertFormula(xeqy);
+    c = printImpliedLiterals(vc);
+    EXPECT(c==3,"Implied literal error 0");
+
+    cout << "Push" << endl;
+    vc->push();
+    cout << "Assert x /= z" << endl;
+    vc->assertFormula(!xeqz);
+    c = printImpliedLiterals(vc);
+    EXPECT(c==4,"Implied literal error 1");
+    cout << "Pop" << endl;
+    vc->pop();
+
+    cout << "Push" << endl;
+    vc->push();
+    cout << "Assert y /= z" << endl;
+    vc->assertFormula(!yeqz);
+    c = printImpliedLiterals(vc);
+    EXPECT(c==4,"Implied literal error 2");
+    cout << "Pop" << endl;
+    vc->pop();
+
+    cout << "Push" << endl;
+    vc->push();
+    cout << "Assert p(x)" << endl;
+    vc->assertFormula(px);
+    c = printImpliedLiterals(vc);
+    EXPECT(c==2,"Implied literal error 3");
+    cout << "Pop" << endl;
+    vc->pop();
+
+    cout << "Push" << endl;
+    vc->push();
+    cout << "Assert p(y)" << endl;
+    vc->assertFormula(py);
+    c = printImpliedLiterals(vc);
+    EXPECT(c==2,"Implied literal error 4");
+    cout << "Pop" << endl;
+    vc->pop();
+
+    cout << "Pop" << endl;
+    vc->pop();
+
+    cout << "Push" << endl;
+    vc->push();
+    cout << "Assert y = x" << endl;
+    vc->assertFormula(yeqx);
+    c = printImpliedLiterals(vc);
+    EXPECT(c==3,"Implied literal error 5");
+    cout << "Pop" << endl;
+    vc->pop();
+
+    cout << "Push" << endl;
+    vc->push();
+    cout << "Assert p(x)" << endl;
+    vc->assertFormula(px);
+    c = printImpliedLiterals(vc);
+    EXPECT(c==1,"Implied literal error 6");
+    cout << "Assert x = y" << endl;
+    vc->assertFormula(xeqy);
+    c = printImpliedLiterals(vc);
+    EXPECT(c==4,"Implied literal error 7");
+    cout << "Pop" << endl;
+    vc->pop();
+
+    cout << "Push" << endl;
+    vc->push();
+    cout << "Assert NOT p(x)" << endl;
+    vc->assertFormula(!px);
+    c = printImpliedLiterals(vc);
+    EXPECT(c==1,"Implied literal error 8");
+    cout << "Assert x = y" << endl;
+    vc->assertFormula(xeqy);
+    c = printImpliedLiterals(vc);
+    EXPECT(c==4,"Implied literal error 9");
+    cout << "Pop" << endl;
+    vc->pop();
+
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test11(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+
+void test12()
+{
+  ValidityChecker * vc = ValidityChecker::create( );
+  try {
+    Type realType = vc->realType();
+    Type intType = vc->intType();
+    Type boolType = vc->boolType();
+    vc -> push();
+    int initial_layer = vc->stackLevel();
+    int initial_scope = vc->scopeLevel();
+    Expr exprObj_trueID = vc->trueExpr();
+    Expr exprObj_falseID = vc->notExpr(vc->trueExpr());
+    vc->popto(initial_layer);
+    EXPECT(vc->scopeLevel() == initial_scope, "Expected no change");
+    EXPECT(vc->stackLevel() == initial_layer, "Expected no change");
+    // TODO: what happens if we push and then popscope?
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test12(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+
+void test13()
+{
+  CLFlags flags = ValidityChecker::createFlags();
+  flags.setFlag("dagify-exprs", false);
+  flags.setFlag("dump-log", ".test13.cvc");
+  ValidityChecker* vc = ValidityChecker::create(flags);
+  try {
+    Expr rat_one = vc->ratExpr(1);
+    Expr rat_two = vc->ratExpr(2);
+    Expr rat_minus_one = vc->ratExpr(-1);
+
+    bool query_result;
+    query_result = vc->query(vc->eqExpr(rat_two,rat_one));
+    cout << "2=1 " << query_result << endl;
+    query_result = vc->query(vc->eqExpr(rat_two,rat_minus_one));
+    cout << "2=-1 " << query_result << endl;
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test13(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+
+Expr func1(ValidityChecker *vc)  {
+ // local Expr 'tmp'
+ Expr tmp = vc->varExpr("tmp", vc->boolType());
+ return vc->trueExpr();
+}
+
+
+void test14()  {
+  ValidityChecker *vc = ValidityChecker::create();
+  try {
+    // func call: ok
+    Expr test1 = func1(vc);
+
+    // func call: fail
+    Expr test2 = func1(vc);
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test14(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+
+void test15() {
+  CLFlags flags = ValidityChecker::createFlags();
+  flags.setFlag("dagify-exprs", false);
+  ValidityChecker *vc = ValidityChecker::create(flags);
+  try {
+
+  /*****************************************************
+   *          array declaration                        *
+   *****************************************************/
+
+  // array: index type
+  Type index_type = vc->subrangeType(vc->ratExpr(0), 
+				     vc->ratExpr(3));
+  // array: data type
+  Type data_type = vc->subrangeType(vc->ratExpr(0), 
+				    vc->ratExpr(3));
+  // array type: [0 .. 3] of 0 .. 3
+  Type array_type = vc->arrayType(index_type, data_type);
+  Expr arr = vc->varExpr("array", array_type);
+
+  // array: [1,1,0,0]
+  arr = vc->writeExpr(arr, vc->ratExpr(0), vc->ratExpr(1));
+  arr = vc->writeExpr(arr, vc->ratExpr(1), vc->ratExpr(1));
+  arr = vc->writeExpr(arr, vc->ratExpr(2), vc->ratExpr(0));
+  arr = vc->writeExpr(arr, vc->ratExpr(3), vc->ratExpr(0));
+
+
+
+  /*****************************************************
+   *             forall Expr                           *
+   *****************************************************/
+
+  // for loop: index
+  Expr id = vc->boundVarExpr("id", "0", vc->subrangeType(vc->ratExpr(0),
+                                                         vc->ratExpr(2)));
+  vector<Expr> vars;
+  vars.push_back(id);
+
+  // for loop: body
+  Expr for_body = vc->leExpr(vc->readExpr(arr, id),
+			     vc->readExpr(arr, vc->plusExpr(id, vc->ratExpr(1))));
+  // forall expr
+  Expr forall_expr = vc->forallExpr(vars, for_body);
+  
+  vc->push();
+  check(vc, forall_expr);
+
+  vector<Expr> assertions;
+  cout << "Scope level: " << vc->scopeLevel() << endl;
+  cout << "Counter-example:" << endl;
+  //vc->getCounterExample(assertions);
+  for (unsigned i = 0; i < assertions.size(); ++i) {
+    vc->printExpr(assertions[i]);
+  }
+  cout << "End of counter-example" << endl << endl;
+  vc->pop();
+  
+  /*****************************************************
+   *            manual expansion                       *
+   *****************************************************/
+
+  Expr e1 = vc->leExpr(vc->readExpr(arr, vc->ratExpr(0)),
+		       vc->readExpr(arr, vc->ratExpr(1)));
+  Expr e2 = vc->leExpr(vc->readExpr(arr, vc->ratExpr(1)),
+		       vc->readExpr(arr, vc->ratExpr(2)));
+  Expr e3 = vc->leExpr(vc->readExpr(arr, vc->ratExpr(2)),
+		       vc->readExpr(arr, vc->ratExpr(3)));
+  Expr manual_expr = vc->andExpr(e1, vc->andExpr(e2, e3));
+
+
+
+  /*****************************************************
+   *            exists Expr                            *
+   *****************************************************/
+
+  // exists: index
+  Expr id_ex = vc->varExpr("id_ex", vc->subrangeType(vc->ratExpr(0),
+						     vc->ratExpr(2)));
+  vector<Expr> vars_ex;
+  vars_ex.push_back(id_ex);
+
+  // exists: body
+  Expr ex_body = vc->gtExpr(vc->readExpr(arr, id_ex),
+			    vc->readExpr(arr, vc->plusExpr(id_ex, vc->ratExpr(1))));
+  // exists expr
+  Expr ex_expr = vc->existsExpr(vars_ex, ex_body);
+
+
+
+
+  /*****************************************************
+   *            ???     forall <==> manual expansion   *
+   *****************************************************/
+  
+  cout << endl << "Checking forallExpr <==> manual expansion ..." << endl;
+  if (vc->query(vc->iffExpr(forall_expr, manual_expr)))
+    cout << "   -- yes." << endl;
+  else {
+    cout << "   -- no, with counter examples as " << endl;
+    
+    vector<Expr> assert1;
+    vc->getCounterExample(assert1);
+    for (unsigned int i = 0; i < assert1.size(); i ++)
+      vc->printExpr(assert1[i]);
+    
+  }
+  cout << endl;
+
+  
+
+  /*****************************************************
+   *            ???     !forall <==> existsExpr        *
+   *****************************************************/
+  cout << endl << "Checking !forallExpr <==> existsExpr ..." << endl;
+  if (vc->query(vc->iffExpr(vc->notExpr(forall_expr), ex_expr)))
+    cout << "   -- yes." << endl;
+  else if (vc->incomplete()) {
+    cout << "   -- incomplete:" << endl;
+    vector<string> reasons;
+    vc->incomplete(reasons);
+    for (unsigned int i = 0; i < reasons.size(); ++i)
+      cout << reasons[i] << endl;
+  }
+  else {
+    cout << "   -- no, with counter examples as " << endl;
+ 
+    vector<Expr> assert2;
+    //vc->getCounterExample(assert2);
+    for (unsigned int i = 0; i < assert2.size(); i ++)
+      vc->printExpr(assert2[i]);
+  }
+    
+  cout << endl << "End of testcases." << endl << endl; 
+
+
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test15(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+
+void test16()  {
+  ValidityChecker *vc = ValidityChecker::create();
+  try {
+    Type zto100 = vc->subrangeType(vc->ratExpr(0), vc->ratExpr(100));
+    Expr mem = vc->varExpr("mem", vc->arrayType(zto100, vc->intType()));
+    Expr a = vc->varExpr("a", zto100);
+    Expr b = vc->varExpr("b", zto100);
+
+    Expr lhs = vc->readExpr(vc->writeExpr(mem, a, vc->ratExpr(30)), b);
+    Expr rhs = vc->readExpr(vc->writeExpr(mem, b, vc->ratExpr(40)), a);
+
+    Expr q = vc->impliesExpr(vc->notExpr(vc->eqExpr(a, b)), vc->eqExpr(lhs, rhs));
+
+    check(vc, q);
+
+    vector<Expr> assertions;
+    cout << "Scope level: " << vc->scopeLevel() << endl;
+    cout << "Counter-example:" << endl;
+    vc->getCounterExample(assertions);
+    EXPECT(assertions.size() > 0, "Expected non-empty counter-example");
+    for (unsigned i = 0; i < assertions.size(); ++i) {
+      vc->printExpr(assertions[i]);
+    }
+    cout << "End of counter-example" << endl << endl;
+
+    ExprMap<Expr> m;
+    vc->getConcreteModel(m);
+    ExprMap<Expr>::iterator it = m.begin(), end = m.end();
+    if(it == end)
+      cout << " Did not find concrete model for any vars" << endl;
+    else {
+      cout << "%Satisfiable  Variable Assignment: % \n";
+      for(; it!= end; it++) {
+	Expr eq;
+	if(it->first.getType().isBool()) {
+	  EXPECT((it->second).isBoolConst(),
+		      "Bad variable assignement: e = "+(it->first).toString()
+		      +"\n\n val = "+(it->second).toString());
+	  if((it->second).isTrue())
+	    eq = it->first;
+	  else
+	    eq = !(it->first);
+	}
+	else
+	  eq = (it->first).eqExpr(it->second);
+	//cout << Expr(ASSERT,  eq) << "\n";
+      }
+    }
+
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test16(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+
+void test17()  {
+  ValidityChecker *vc = ValidityChecker::create();
+  try {
+    try {
+      vector<string> selectors;
+      vector<Expr> types;
+
+      selectors.push_back("car");
+      types.push_back(vc->intType().getExpr());
+      selectors.push_back("cdr");
+      types.push_back(vc->stringExpr("list"));
+
+      Type badList = vc->dataType("list", "cons", selectors, types);
+      EXPECT(false, "Typechecking exception expected");
+    } catch(const TypecheckException&) {
+      // fall through
+    }
+    delete vc;
+    vc = ValidityChecker::create();
+    {
+      vector<string> constructors;
+      vector<vector<string> > selectors(2);
+      vector<vector<Expr> > types(2);
+
+      constructors.push_back("cons");
+      selectors[0].push_back("car");
+      types[0].push_back(vc->intType().getExpr());
+      selectors[0].push_back("cdr");
+      types[0].push_back(vc->stringExpr("list"));
+      constructors.push_back("null");
+
+      Type list = vc->dataType("list", constructors, selectors, types);
+
+      Expr x = vc->varExpr("x", vc->intType());
+      Expr y = vc->varExpr("y", list);
+
+      vector<Expr> args;
+      args.push_back(x);
+      args.push_back(y);
+      Expr cons = vc->datatypeConsExpr("cons", args);
+
+      Expr sel = vc->datatypeSelExpr("car", cons);
+      bool b = check(vc, vc->eqExpr(sel, x));
+      EXPECT(b, "Should be valid");
+
+    }
+    delete vc;
+    vc = ValidityChecker::create();
+    try {
+      vector<string> names;
+      vector<vector<string> > constructors(2);
+      vector<vector<vector<string> > > selectors(2);
+      vector<vector<vector<Expr> > > types(2);
+      vector<Type> returnTypes;
+
+      names.push_back("list1");
+
+      selectors[0].resize(1);
+      types[0].resize(1);
+      constructors[0].push_back("cons1");
+      selectors[0][0].push_back("car1");
+      types[0][0].push_back(vc->intType().getExpr());
+      selectors[0][0].push_back("cdr1");
+      types[0][0].push_back(vc->stringExpr("list2"));
+
+      names.push_back("list2");
+
+      selectors[1].resize(1);
+      types[1].resize(1);
+      constructors[1].push_back("cons2");
+      selectors[0][0].push_back("car2");
+      types[0][0].push_back(vc->intType().getExpr());
+      selectors[0][0].push_back("cdr2");
+      types[0][0].push_back(vc->stringExpr("list1"));
+
+      vc->dataType(names, constructors, selectors, types, returnTypes);
+      EXPECT(false, "Typechecking exception expected");
+    } catch(const TypecheckException&) {
+      // fall through
+    }
+    delete vc;
+    vc = ValidityChecker::create();
+    {
+      vector<string> names;
+      vector<vector<string> > constructors(2);
+      vector<vector<vector<string> > > selectors(2);
+      vector<vector<vector<Expr> > > types(2);
+      vector<Type> returnTypes;
+
+      names.push_back("list1");
+
+      selectors[0].resize(1);
+      types[0].resize(1);
+      constructors[0].push_back("cons1");
+      selectors[0][0].push_back("car1");
+      types[0][0].push_back(vc->intType().getExpr());
+      selectors[0][0].push_back("cdr1");
+      types[0][0].push_back(vc->stringExpr("list2"));
+
+      names.push_back("list2");
+
+      selectors[1].resize(2);
+      types[1].resize(2);
+      constructors[1].push_back("cons2");
+      selectors[1][0].push_back("car2");
+      types[1][0].push_back(vc->intType().getExpr());
+      selectors[1][0].push_back("cdr2");
+      types[1][0].push_back(vc->stringExpr("list1"));
+      constructors[1].push_back("null");
+
+      vc->dataType(names, constructors, selectors, types, returnTypes);
+
+      Type list1 = returnTypes[0];
+      Type list2 = returnTypes[1];
+
+      Expr x = vc->varExpr("x", vc->intType());
+      Expr y = vc->varExpr("y", list2);
+      Expr z = vc->varExpr("z", list1);
+
+      vector<Expr> args;
+      args.push_back(x);
+      args.push_back(y);
+      Expr cons1 = vc->datatypeConsExpr("cons1", args);
+
+      Expr isnull = vc->datatypeTestExpr("null", y);
+      Expr hyp = vc->andExpr(vc->eqExpr(z, cons1), isnull);
+
+      args.clear();
+      Expr null = vc->datatypeConsExpr("null", args);
+
+      args.push_back(x);
+      args.push_back(null);
+      Expr cons1_2 = vc->datatypeConsExpr("cons1", args);
+
+      bool b = check(vc, vc->impliesExpr(hyp, vc->eqExpr(z, cons1_2)));
+      EXPECT(b, "Should be valid");
+
+    }
+    delete vc;
+    vc = ValidityChecker::create();
+    {
+      vector<string> constructors;
+      vector<vector<string> > selectors(2);
+      vector<vector<Expr> > types(2);
+
+      constructors.push_back("A");
+      constructors.push_back("B");
+
+      Type two = vc->dataType("two", constructors, selectors, types);
+
+      Expr x = vc->varExpr("x", two);
+      Expr y = vc->varExpr("y", two);
+      Expr z = vc->varExpr("z", two);
+
+      vector<Expr> args;
+      args.push_back(!vc->eqExpr(x,y));
+      args.push_back(!vc->eqExpr(y,z));
+      args.push_back(!vc->eqExpr(x,z));
+
+      bool b = check(vc, !vc->andExpr(args));
+      EXPECT(b, "Should be valid");
+
+    }
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test17(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+
+void test18()
+{
+  CLFlags flags = ValidityChecker::createFlags();
+  flags.setFlag("tcc", true);
+  ValidityChecker *vc = ValidityChecker::create(flags);
+  try {
+    vector<string> names;
+    vector<vector<string> > constructors(3);
+    vector<vector<vector<string> > > selectors(3);
+    vector<vector<vector<Expr> > > types(3);
+    vector<Type> returnTypes;
+
+    names.push_back("nat");
+
+    selectors[0].resize(2);
+    types[0].resize(2);
+    constructors[0].push_back("zero");
+    constructors[0].push_back("succ");
+    selectors[0][1].push_back("pred");
+    types[0][1].push_back(vc->stringExpr("nat"));
+
+    names.push_back("list");
+
+    selectors[1].resize(2);
+    types[1].resize(2);
+    constructors[1].push_back("cons");
+    selectors[1][0].push_back("car");
+    types[1][0].push_back(vc->stringExpr("tree"));
+    selectors[1][0].push_back("cdr");
+    types[1][0].push_back(vc->stringExpr("list"));
+    constructors[1].push_back("null");
+
+    names.push_back("tree");
+
+    selectors[2].resize(2);
+    types[2].resize(2);
+    constructors[2].push_back("leaf");
+    constructors[2].push_back("node");
+    selectors[2][1].push_back("data");
+    types[2][1].push_back(vc->stringExpr("nat"));
+    selectors[2][1].push_back("children");
+    types[2][1].push_back(vc->stringExpr("list"));
+
+    vc->dataType(names, constructors, selectors, types, returnTypes);
+
+    Type nat = returnTypes[0];
+    Type listType = returnTypes[1];
+    Type tree = returnTypes[2];
+
+    Expr x = vc->varExpr("x", nat);
+
+    vector<Expr> args;
+    Expr zero = vc->datatypeConsExpr("zero", args);
+    Expr null = vc->datatypeConsExpr("null", args);
+    Expr leaf = vc->datatypeConsExpr("leaf", args);
+
+    vc->push();
+    try {
+      check(vc, vc->notExpr(vc->eqExpr(zero, null)));
+      // TCCs not supported by CVC4 yet
+      //EXPECT(false, "Should have caught tcc exception");
+    } catch(const TypecheckException&) { }
+
+    vc->pop();
+    args.push_back(vc->datatypeSelExpr("pred",x));
+    Expr spx = vc->datatypeConsExpr("succ", args);
+    Expr spxeqx = vc->eqExpr(spx, x);
+    vc->push();
+    try {
+      check(vc, spxeqx);
+      // TCCs not supported by CVC4 yet
+      //EXPECT(false, "Should have caught tcc exception");
+    } catch(const TypecheckException&) { }
+
+    vc->pop();
+    bool b = check(vc, vc->impliesExpr(vc->datatypeTestExpr("succ", x), spxeqx));
+    EXPECT(b, "Should be valid");
+
+    b = check(vc, vc->orExpr(vc->datatypeTestExpr("zero", x),
+                             vc->datatypeTestExpr("succ", x)));
+    EXPECT(b, "Should be valid");
+
+    Expr y = vc->varExpr("y", nat);
+    Expr xeqy = vc->eqExpr(x, y);
+    args.clear();
+    args.push_back(x);
+    Expr sx = vc->datatypeConsExpr("succ", args);
+    args.clear();
+    args.push_back(y);
+    Expr sy = vc->datatypeConsExpr("succ", args);
+    Expr sxeqsy = vc->eqExpr(sx,sy);
+    b = check(vc, vc->impliesExpr(xeqy, sxeqsy));
+    EXPECT(b, "Should be valid");
+
+    b = check(vc, vc->notExpr(vc->eqExpr(sx, zero)));
+    EXPECT(b, "Should be valid");
+
+    b = check(vc, vc->impliesExpr(sxeqsy, xeqy));
+    EXPECT(b, "Should be valid");
+
+    b = check(vc, vc->notExpr(vc->eqExpr(sx, x)));
+    EXPECT(b, "Should be valid");
+
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test18(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+void test19()
+{
+  CVC3::CLFlags flags = CVC3::ValidityChecker::createFlags();
+  flags.setFlag("dagify-exprs", false);
+  CVC3::ValidityChecker* vc = CVC3::ValidityChecker::create(flags);
+  try {      
+    CVC3::Type RealType=(vc->realType());
+    CVC3::Type IntType=(vc->intType());
+    CVC3::Type BoolType=(vc->boolType());
+    CVC3::Type PtrType=(RealType);
+    CVC3::Type HeapType=(vc->arrayType(PtrType, RealType));
+         
+    // -----------------
+    //ASSERT(FORALL (CVCi: REAL): (Hs[CVCi] = Ht[CVCi]));
+    //QUERY(Hs[(t6 + (3 * 1))] = Ht[(t6 + (3 * 1))]);
+    CVC3::Expr Ad = vc->boundVarExpr("CVCi", "CVCi", RealType);
+    CVC3::Expr Hs = vc->varExpr("Hs", HeapType);
+    CVC3::Expr Ht = vc->varExpr("Ht", HeapType);
+    CVC3::Expr t6 = vc->varExpr("t6", RealType);
+  
+    vector<CVC3::Expr> Vars;
+    Vars.push_back(Ad);
+    // Body= (Hs[Ad] = Ht[Ad])
+    CVC3::Expr Body = vc->eqExpr(vc->readExpr(Hs, Ad), vc->readExpr(Ht, Ad));
+      
+    //A = forall (~i:REAL): Body
+    CVC3::Expr A = vc->forallExpr(Vars, Body); 
+        
+    // Q = (Hs[t6] = Ht[t6])          
+    CVC3::Expr Q = vc->eqExpr(vc->readExpr(Hs, t6), vc->readExpr(Ht, t6));
+  
+    // ----------- CHECK A -> Q
+    vc->push();
+
+    vc->assertFormula(A);
+
+    cout<<"Checking formula "<<Q<<"\n in context "<<A<<"\n";
+  
+    bool Succ = vc->query(Q);
+
+    EXPECT(Succ, "Expected valid formula");
+
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test19(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+
+void test20()  {
+  ValidityChecker *vc = ValidityChecker::create();
+  try {
+    vector<string> names;
+    vector<vector<string> > constructors(3);
+    vector<vector<vector<string> > > selectors(3);
+    vector<vector<vector<Expr> > > types(3);
+    vector<Type> returnTypes;
+
+    names.push_back("pair");
+
+    selectors[0].resize(1);
+    types[0].resize(1);
+    constructors[0].push_back("p");
+    selectors[0][0].push_back("p1");
+    types[0][0].push_back(vc->stringExpr("t1"));
+    selectors[0][0].push_back("p2");
+    types[0][0].push_back(vc->stringExpr("t2"));
+
+    names.push_back("t1");
+
+    selectors[1].resize(5);
+    types[1].resize(5);
+    constructors[1].push_back("a");
+    constructors[1].push_back("b");
+    constructors[1].push_back("c");
+    constructors[1].push_back("d");
+    constructors[1].push_back("e");
+
+    names.push_back("t2");
+
+    selectors[2].resize(1);
+    types[2].resize(1);
+    constructors[2].push_back("cons");
+    selectors[2][0].push_back("s0");
+    types[2][0].push_back(vc->bitvecType(2).getExpr());
+    selectors[2][0].push_back("s1");
+    types[2][0].push_back(vc->arrayType(vc->intType(), vc->subrangeType(vc->ratExpr(0), vc->ratExpr(0))).getExpr());
+
+    vc->dataType(names, constructors, selectors, types, returnTypes);
+
+    EXPECT(returnTypes[0].card() == CARD_FINITE, "Expected finite");
+    Unsigned size = returnTypes[0].sizeFinite();
+    Unsigned i = 0;
+    for (; i < size; ++i) {
+      cout << i << ": ";
+      vc->printExpr(returnTypes[0].enumerateFinite(i));
+    }
+
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test20(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+void test21()  {
+  ValidityChecker *vc = ValidityChecker::create();
+
+  try {
+    Type t = vc->realType();
+
+    Expr x1 = vc->varExpr("x",t);
+
+    Expr x2 = vc->exprFromString("x");
+    cout << "x1: " << x1;
+    cout << "\nx2: " << x2;
+    EXPECT(x1 == x2, "Expected x1 == x2");
+
+    Expr x3 = vc->exprFromString("x", SMTLIB_V2_LANG);
+    cout << "\nx3: " << x3;
+    EXPECT(x1 == x3, "Expected x1 == x3");
+
+    Expr y1 = vc->varExpr("y",t);
+    Expr y2 = vc->exprFromString("y");
+    cout << "\ny1: " << y1;
+    cout << "\ny2: " << y2;
+    EXPECT(y1 == y2, "Expected y1 == y2");
+
+    Expr y3 = vc->exprFromString("y", SMTLIB_V2_LANG);
+    cout << "\ny3: " << y3;
+    EXPECT(y1 == y3, "Expected y1 == y3");
+
+    Expr a1 = vc->gtExpr(x1,vc->ratExpr(0,1));
+    Expr a2 = vc->exprFromString("x > 0");
+    cout << "\na1: " << a1;
+    cout << "\na2: " << a2;
+    EXPECT(a1 == a2, "Expected a1 == a2");
+
+    Expr a3 = vc->exprFromString("(> x 0)", SMTLIB_V2_LANG);
+    cout << "\na3: " << a3;
+    EXPECT(a1 == a3, "Expected a1 == a3");
+
+    Expr b1 = vc->ltExpr(x1,y1);
+    Expr b2 = vc->exprFromString ("x < y");
+    cout << "\nb1: " << b1;
+    cout << "\nb2: " << b2;
+    EXPECT(b1 == b2, "Expected b1 == b2");
+
+    Expr b3 = vc->exprFromString ("(< x y)", SMTLIB_V2_LANG);
+    cout << "\nb3: " << b3;
+    EXPECT(b1 == b3, "Expected b1 == b3");
+
+    Expr e1 = a1 && b1;
+    Expr e2 = vc->exprFromString("x > 0 AND x < y");
+    cout << "\ne1: " << e1;
+    cout << "\ne2: " << e2;
+    EXPECT(e1 == e2, "Expected e1 == e2");
+
+    Expr e3 = vc->exprFromString("(and (> x 0) (< x y))", SMTLIB_V2_LANG);
+    cout << "\ne3: " << e3;
+    EXPECT(e1 == e3, "Expected e1 == e3");
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test21(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+void test22() {
+  CLFlags flags = ValidityChecker::createFlags();
+  ValidityChecker* vc = ValidityChecker::create(flags);
+
+  try {
+    Type intType(vc->intType());
+    Type fType(vc->funType(intType,intType));
+
+    Op f(vc->createOp("f",fType));
+    Expr x(vc->varExpr("x",intType));
+    Expr fx(vc->exprFromString("f(x)"));
+
+    Expr p(vc->exprFromString("FORALL (x:INT) : x < f(x)"));
+
+    vector<vector<Expr> > patternvv;
+    vector<Expr> patternv;
+    patternv.push_back(fx);
+    patternvv.push_back(patternv);
+
+    vc->setTriggers(p,patternv);
+    EXPECT( eqExprVecVecs(p.getTriggers(), patternvv),
+                 "Expected p.getTriggers() == patternvv: " + p.toString() );
+
+    vc->setTriggers(p,patternvv);
+
+    EXPECT( eqExprVecVecs(p.getTriggers(), patternvv),
+                 "Expected p.getTriggers() == patternvv: " + p.toString() );
+
+    // [chris 10/4/2009] Not sure why, but this fails
+
+    // Expr q(vc->exprFromString("FORALL (x:INT) : PATTERN (f(x)) : x < f(x)"));
+
+    // EXPECT( eqExprVecVecs(q.getTriggers(), patternvv),
+    //              "Expected q.getTriggers() == patternvv"  + q.toString());
+
+    vector<Expr> vars;
+    vars.push_back(x);
+    Expr r(vc->forallExpr( vars, vc->ltExpr(x,fx), patternvv ));
+
+    EXPECT( eqExprVecVecs(r.getTriggers(), patternvv),
+                 "Expected r.getTriggers() == patternvv: " + r.toString() );
+
+    Expr s(vc->exprFromString("FORALL (x:INT) : x > f(x)"));
+    vc->setTrigger(s,fx);
+
+    std::ostringstream stringHolder("");
+    std::vector<std::vector<Expr> > trigsvv = s.getTriggers();
+    stringHolder << trigsvv.size();
+    EXPECT( trigsvv.size() == 1, 
+                 "Expected s.getTriggers().size() == 1: " + stringHolder.str() );
+
+    stringHolder.str("");
+    std::vector<Expr> trigsv = trigsvv[0];
+    stringHolder << trigsv.size();
+
+    EXPECT( trigsv.size() == 1, 
+                 "Expected s.getTriggers()[0].size() == 1: "
+                 + stringHolder.str() );
+
+    EXPECT( trigsv[0] == fx, 
+                 "Expected s.getTriggers()[0][0] == fx: "
+                 + (trigsv[0].toString()) );
+
+    stringHolder.str("");
+    Expr t(vc->exprFromString("FORALL (x:INT) : x > f(x)"));
+    vc->setMultiTrigger(t,patternv);
+    trigsvv = t.getTriggers();
+    stringHolder << trigsvv.size();
+    EXPECT( trigsvv.size() == 1,
+                 "Expected t.getTriggers().size() == 1: " + stringHolder.str() );
+
+    stringHolder.str("");
+    trigsv = trigsvv[0];
+    stringHolder << trigsv.size();
+    EXPECT( trigsv.size() == 1,
+                 "Expected t.getTriggers()[0].size() == 1: "
+                 + stringHolder.str() );
+
+    EXPECT( trigsv[0] == fx,
+                 "Expected t.getTriggers()[0][0] == fx: "
+                 + (trigsv[0].toString()) );
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test22(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+void test23() {
+  CLFlags flags = ValidityChecker::createFlags();
+  ValidityChecker* vc = ValidityChecker::create(flags);
+
+  try {
+    Type intType(vc->intType());
+    Type fType(vc->funType(intType,intType));
+
+    Expr x(vc->varExpr("x",intType));
+    Expr y(vc->varExpr("y",intType));
+    Expr a(vc->varExpr("a",intType));
+    Expr b(vc->varExpr("b",intType));
+
+    Expr s(vc->exprFromString("x < y"));
+    Expr t(vc->exprFromString("a < b"));
+
+    cout << "s=" << s << "\nt=" << t << "\n";
+
+    std::vector<Expr> oldExprs, newExprs;
+    oldExprs.push_back(x);
+    oldExprs.push_back(y);
+    newExprs.push_back(a);
+    newExprs.push_back(b);
+
+    Expr u(s.substExpr(oldExprs,newExprs));
+    cout << "u=" << u << "\n";
+
+    EXPECT( t == u, "Expected t==u" );
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test23(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+void test24() {
+  CLFlags flags = ValidityChecker::createFlags();
+  ValidityChecker* vc = ValidityChecker::create(flags);
+
+  try {
+    Type intType(vc->intType());
+    Type aType(vc->arrayType(intType,intType));
+
+    Expr a(vc->varExpr("a",aType));
+    Expr x(vc->varExpr("x",intType));
+    Expr ax(vc->exprFromString("a[x]"));
+
+    Expr p(vc->exprFromString("FORALL (x:INT) : PATTERN (a[x]) : x < a[x]"));
+
+    cout << p  << "\n";
+
+    vector<vector<Expr> > pTriggers(p.getTriggers());
+    EXPECT( pTriggers.size() == 1, 
+            "Actual: " + int2string(pTriggers.size()));
+    EXPECT( pTriggers[0].size() == 1, 
+            "Actual: " + int2string( pTriggers[0].size()));
+    /* We can't check that the trigger == ax, because x will have
+     * been replaced with a bvar
+     */
+    EXPECT( pTriggers[0][0].getKind() == READ,
+            "Actual: " + int2string(pTriggers[0][0].getKind()));
+    EXPECT( pTriggers[0][0][0] == a,
+            "Actual: " + pTriggers[0][0][0].toString() );
+
+    Expr aPrime(vc->varExpr("a'",aType));
+    Expr axPrime(vc->exprFromString("a'[x]"));
+
+    ExprHashMap<Expr> substMap;
+    substMap.insert(a,aPrime);
+
+    Expr q(p.substExpr(substMap));
+
+    cout << q << "\n";
+
+    vector<vector<Expr> > qTriggers(q.getTriggers());
+    EXPECT( qTriggers.size() == 1, 
+            "Actual: " + 
+            int2string(qTriggers.size()));
+    EXPECT( qTriggers[0].size() == 1, 
+            "Actual: " +
+            int2string(qTriggers[0].size()));
+    EXPECT( qTriggers[0][0].getKind() == READ,
+            "Actual: " +
+            int2string(qTriggers[0][0].getKind()));
+    EXPECT( qTriggers[0][0][0] == aPrime,
+            "Actual: " + qTriggers[0][0][0].toString() );
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test24(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+
+void test25() {
+  CLFlags flags = ValidityChecker::createFlags();
+  ValidityChecker* vc = ValidityChecker::create(flags);
+
+  try {
+    Type realType(vc->realType());
+
+    Expr x = vc->ratExpr("-0.1");
+    cout << "-0.1: " << x << endl;
+    Expr y = vc->ratExpr("-1/10");
+    cout << "-1/10: " << y << endl;
+    Expr z = vc->ratExpr("-1","10",10);
+    cout << "-1 over 10: " << z << endl;
+    Expr w = vc->ratExpr(-1,10);
+    cout << "-1 over 10 (ints): " << w << endl;
+
+    EXPECT(x == y && y == z && z == w, "Error in rational constants");
+
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test25(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+
+void test26() {
+  CLFlags flags = ValidityChecker::createFlags();
+  ValidityChecker* vc = ValidityChecker::create(flags);
+
+  try {
+    Type bvType(vc->bitvecType(32));
+
+    Expr x = vc->varExpr("x", bvType);
+    Expr e1 = vc->newFixedConstWidthLeftShiftExpr(x, 16);
+    Expr e2 = vc->newBVSHL(x, vc->newBVConstExpr(16, 32));
+
+    bool b = check(vc, vc->eqExpr(e1, e2));
+    EXPECT(b, "Should be valid");
+
+    e1 = vc->newFixedRightShiftExpr(x, 16);
+    e2 = vc->newBVLSHR(x, vc->newBVConstExpr(16, 32));
+
+    b = check(vc, vc->eqExpr(e1, e2));
+    EXPECT(b, "Should be valid");
+
+    e2 = vc->newBVASHR(x, vc->newBVConstExpr(16, 32));
+    b = check(vc, vc->eqExpr(e1, e2));
+    EXPECT(!b, "Should be invalid");
+
+  } catch(const Exception& e) {
+    exitStatus = 1;
+    cout << "*** Exception caught in test26(): \n" << e << endl;
+  }
+  delete vc;
+}
+
+
+int main(int argc, char** argv)
+{
+  int regressLevel = 3;
+  if (argc > 1) regressLevel = atoi(argv[1]);
+  cout << "Running API test, regress level = " << regressLevel << endl;
+  exitStatus = 0;
+
+  try {
+    // [MGD for CVC4] This is a CVC3 test, and many tests had to be commented
+    // out for CVC4 since the functionality is either unsupported or
+    // as-yet-unimplemented in CVC4's compatibility layer.  For example,
+    // subranges, predicate subtyping, quantifiers, and string expressions
+    // are unavailable.  Also, Exprs and Types are distinct in CVC4 and it's
+    // not clear how to implement Type::getExpr(), and Exprs and Ops are
+    // indistinguishable, so getOp() and getOpExpr() have the same result.
+
+    cout << "\n}\ntest26(): {" << endl;
+    test26();
+    //cout << "\ntest(): {" << endl;
+    //test();
+    cout << "\n}\ntest1(): {" << endl;
+    test1();
+    cout << "\n}\n\ntest2(): {" << endl;
+    test2();
+    cout << "\n}\n\ntest3(): {" << endl;
+    test3();
+    cout << "\n}\n\ntest4(): {" << endl;
+    test4();
+    if (regressLevel > 0) {
+      cout << "\n}\n\ntest5(): {" << endl;
+      test5();
+    }
+    cout << "\n}\n\ntest6(): {" << endl;
+    test6();
+    cout << "\n}\n\ntest7(): {" << endl;
+    test7();
+    //cout << "\n}\n\ntest8(): {" << endl;
+    //test8();
+    cout << "\n}\n\ntest9(" << 10*regressLevel+10 << "): {" << endl;
+    test9(10*regressLevel+10);
+    cout << "\nbvtest9(): {" << endl;
+    bvtest9(regressLevel*3+2);
+    cout << "\n}" << endl;
+
+    // Test for obvious memory leaks
+    int limit = 100 * regressLevel+10;
+    for(int i=0; i<limit; ++i) {
+      if(i % 100 == 0)	cout << "test10[" << i << "]" << endl;
+      test10();
+    }
+
+    //cout << "\ntest11(): {" << endl;
+    //test11();
+    cout << "\n}\ntest12(): {" << endl;
+    test12();
+    cout << "\n}\ntest13(): {" << endl;
+    test13();
+    cout << "\n}\ntest14(): {" << endl;
+    test14();
+    //cout << "\n}\ntest15(): {" << endl;
+    //test15();
+    //cout << "\n}\ntest16(): {" << endl;
+    //test16();
+    cout << "\n}\ntest17(): {" << endl;
+    test17();
+    cout << "\n}\ntest18(): {" << endl;
+    test18();
+    cout << "\n}\ntest19(): {" << endl;
+    test19();
+    cout << "\ntest20(): {" << endl;
+    test20();
+    cout << "\n}\ntest21(): {" << endl;
+    test21();
+    //cout << "\n}\ntest22(): {" << endl;
+    //test22();
+    cout << "\n}\ntest23(): {" << endl;
+    test23();
+    cout << "\n}\ntest24(): {" << endl;
+    test24();
+    cout << "\n}\ntest25(): {" << endl;
+    test25();
+
+    /*
+    if (regressLevel > 1) {
+      cout << "\n}\ntestgeorge1(): {" << endl;
+      testgeorge1();
+      cout << "\n}\ntestgeorge2(): {" << endl;
+      testgeorge2();
+      cout << "\n}\ntestgeorge3(): {" << endl;
+      testgeorge3();
+      cout << "\n}\ntestgeorge4(): {" << endl;
+      testgeorge4();
+      cout << "\n}\ntestgeorge5(): {" << endl;
+      testgeorge5();
+    }
+    */
+    cout << "\n}" << endl;
+
+  } catch(const Exception& e) {
+    cout << "*** Exception caught: \n" << e << endl;
+    exitStatus = 1;
+  }
+  if(exitStatus == 0)
+    cout << "Program exits successfully." << endl;
+  else
+    cout << "Program exits with error status = " << exitStatus << "." << endl;
+  return exitStatus;
+}
diff --git a/test/system/ouroborous.cpp b/test/system/ouroborous.cpp
new file mode 100644
index 0000000..189bf20
--- /dev/null
+++ b/test/system/ouroborous.cpp
@@ -0,0 +1,137 @@
+/*********************                                                        */
+/*! \file ouroborous.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief "Ouroborous" test: does CVC4 read its own output?
+ **
+ ** The "Ouroborous" test, named after the serpent that swallows its
+ ** own tail, ensures that CVC4 can parse some input, output it again
+ ** (in any of its languages) and then parse it again.  The result of
+ ** the first parse must be equal to the result of the second parse;
+ ** both strings and expressions are compared for equality.
+ **
+ ** To add a new test, simply add a call to runTestString() under
+ ** runTest(), below.  If you don't specify an input language,
+ ** LANG_SMTLIB_V2 is used.  If your example depends on variables,
+ ** you'll need to declare them in the "declarations" global, just
+ ** below, in SMT-LIBv2 form (but they're good for all languages).
+ **/
+
+#include <iostream>
+#include <sstream>
+#include <string>
+
+#include "expr/expr.h"
+#include "expr/expr_iomanip.h"
+#include "options/set_language.h"
+#include "parser/parser.h"
+#include "parser/parser_builder.h"
+#include "smt/command.h"
+
+using namespace CVC4;
+using namespace CVC4::parser;
+using namespace CVC4::language;
+using namespace std;
+
+const string declarations = "\
+(declare-sort U 0)\n\
+(declare-fun f (U) U)\n\
+(declare-fun x () U)\n\
+(declare-fun y () U)\n\
+(assert (= (f x) x))\n\
+(declare-fun a () (Array U (Array U U)))\n\
+";
+
+Parser* psr = NULL;
+
+int runTest();
+
+int main() {
+  try {
+    return runTest();
+  } catch(Exception& e) {
+    cerr << e << endl;
+  } catch(...) {
+    cerr << "non-cvc4 exception thrown." << endl;
+  }
+  return 1;
+}
+
+string translate(string in, InputLanguage inlang, OutputLanguage outlang) {
+  cout << "==============================================" << endl
+       << "translating from " << inlang << " to " << outlang << " this string:" << endl
+       << in << endl;
+  psr->setInput(Input::newStringInput(inlang, in, "internal-buffer"));
+  Expr e = psr->nextExpression();
+  stringstream ss;
+  ss << language::SetLanguage(outlang) << expr::ExprSetDepth(-1) << e;
+  assert(psr->nextExpression().isNull());// next expr should be null
+  assert(psr->done());// parser should be done
+  string s = ss.str();
+  cout << "got this:" << endl
+       << s << endl
+       << "reparsing as " << outlang << endl;
+
+  psr->setInput(Input::newStringInput(toInputLanguage(outlang), s, "internal-buffer"));
+  Expr f = psr->nextExpression();
+  assert(e == f);
+  cout << "got same expressions " << e.getId() << " and " << f.getId() << endl
+       << "==============================================" << endl;
+
+  return s;
+}
+
+void runTestString(std::string instr, InputLanguage instrlang = input::LANG_SMTLIB_V2) {
+  cout << endl
+       << "starting with: " << instr << endl
+       << "   in language " << instrlang << endl;
+  string smt2 = translate(instr, instrlang, output::LANG_SMTLIB_V2);
+  cout << "in SMT2      : " << smt2 << endl;
+  /* -- SMT-LIBv1 doesn't have a functional printer yet
+  string smt1 = translate(smt2, input::LANG_SMTLIB_V2, output::LANG_SMTLIB);
+  cout << "in SMT1      : " << smt1 << endl;
+  */
+  string cvc = translate(smt2, input::LANG_SMTLIB_V2, output::LANG_CVC4);
+  cout << "in CVC       : " << cvc << endl;
+  string out = translate(cvc, input::LANG_CVC4, output::LANG_SMTLIB_V2);
+  cout << "back to SMT2 : " << out << endl << endl;
+
+  assert(out == smt2);// differences in output
+}
+
+
+int runTest() {
+  ExprManager em;
+  psr =
+    ParserBuilder(&em, "internal-buffer")
+      .withStringInput(declarations)
+      .withInputLanguage(input::LANG_SMTLIB_V2)
+      .build();
+
+  // we don't need to execute them, but we DO need to parse them to
+  // get the declarations
+  while(Command* c = psr->nextCommand()) {
+    delete c;
+  }
+
+  assert(psr->done());// parser should be done
+
+  cout << expr::ExprSetDepth(-1);
+
+  runTestString("(= (f (f y)) x)");
+  runTestString("~BVPLUS(3, 0bin00, 0bin11)[2:1] = 0bin10", input::LANG_CVC4);
+  runTestString("~BVPLUS(3, BVMULT(2, 0bin01, 0bin11), 0bin11)[2:0]", input::LANG_CVC4);
+  runTestString("a[x][y] = a[y][x]", input::LANG_CVC4);
+
+  delete psr;
+  psr = NULL;
+
+  return 0;
+}
diff --git a/test/system/run_java_test b/test/system/run_java_test
new file mode 100755
index 0000000..24947d5
--- /dev/null
+++ b/test/system/run_java_test
@@ -0,0 +1,14 @@
+#!/bin/bash
+#
+# run_java_test
+# Morgan Deters, September 2011
+#
+# The purpose of this script is to change an automake test command
+# line into something that a JVM likes.  In particular, any dir/Foo.class
+# listed on the command line is stripped of its dir/ and its .class extension.
+# Works only for tests in the default package.
+#
+args=("$@")
+args[$((${#args}))]="$(echo "${args[${#args}]}" | sed 's,\(.*/\)*\(.*\)\.class$,\2,')"
+echo "${args[@]}"
+exec "${args[@]}"
diff --git a/test/system/smt2_compliance.cpp b/test/system/smt2_compliance.cpp
new file mode 100644
index 0000000..933f8c6
--- /dev/null
+++ b/test/system/smt2_compliance.cpp
@@ -0,0 +1,74 @@
+/*********************                                                        */
+/*! \file smt2_compliance.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A test of SMT-LIBv2 commands, checks for compliant output
+ **
+ ** A test of SMT-LIBv2 commands, checks for compliant output.
+ **/
+
+#include <cassert>
+#include <iostream>
+#include <sstream>
+
+#include "expr/expr_manager.h"
+#include "options/options.h"
+#include "options/set_language.h"
+#include "parser/parser.h"
+#include "parser/parser_builder.h"
+#include "smt/command.h"
+#include "smt/smt_engine.h"
+
+using namespace CVC4;
+using namespace CVC4::parser;
+using namespace std;
+
+void testGetInfo(SmtEngine& smt, const char* s);
+
+int main() {
+  Options opts;
+  opts.setInputLanguage(language::input::LANG_SMTLIB_V2);
+  opts.setOutputLanguage(language::output::LANG_SMTLIB_V2);
+
+  cout << language::SetLanguage(language::output::LANG_SMTLIB_V2);
+
+  ExprManager em(opts);
+  SmtEngine smt(&em);
+
+  testGetInfo(smt, ":error-behavior");
+  testGetInfo(smt, ":name");
+  testGetInfo(smt, ":authors");
+  testGetInfo(smt, ":version");
+  testGetInfo(smt, ":status");
+  testGetInfo(smt, ":reason-unknown");
+  testGetInfo(smt, ":arbitrary-undefined-keyword");
+  testGetInfo(smt, ":56");// legal
+  testGetInfo(smt, ":<=");// legal
+  testGetInfo(smt, ":->");// legal
+  testGetInfo(smt, ":all-statistics");
+
+  return 0;
+}
+
+void testGetInfo(SmtEngine& smt, const char* s) {
+  ParserBuilder pb(smt.getExprManager(), "<internal>",
+                   smt.getExprManager()->getOptions());
+  Parser* p = pb.withStringInput(string("(get-info ") + s + ")").build();
+  assert(p != NULL);
+  Command* c = p->nextCommand();
+  assert(c != NULL);
+  cout << c << endl;
+  stringstream ss;
+  c->invoke(&smt, ss);
+  assert(p->nextCommand() == NULL);
+  delete p;
+  delete c;
+  cout << ss.str() << endl << endl;
+}
diff --git a/test/system/statistics.cpp b/test/system/statistics.cpp
new file mode 100644
index 0000000..11b8cd3
--- /dev/null
+++ b/test/system/statistics.cpp
@@ -0,0 +1,72 @@
+/*********************                                                        */
+/*! \file statistics.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A simple statistics test for CVC4.
+ **
+ ** This simple test just makes sure that the statistics interface is
+ ** minimally functional.
+ **/
+
+#include <iostream>
+#include <sstream>
+
+#include "expr/expr.h"
+#include "smt/smt_engine.h"
+#include "util/sexpr.h"
+#include "util/statistics.h"
+
+using namespace CVC4;
+using namespace std;
+
+int main() {
+  ExprManager em;
+  Options opts;
+  SmtEngine smt(&em);
+  smt.setOption("incremental", SExpr("true"));
+  Expr x = em.mkVar("x", em.integerType());
+  Expr y = em.mkVar("y", em.integerType());
+  smt.assertFormula(em.mkExpr(kind::GT, em.mkExpr(kind::PLUS, x, y), em.mkConst(Rational(5))));
+  Expr q = em.mkExpr(kind::GT, x, em.mkConst(Rational(0)));
+  Result r = smt.query(q);
+
+  if(r != Result::INVALID) {
+    exit(1);
+  }
+
+  Statistics stats = smt.getStatistics();
+  for(Statistics::iterator i = stats.begin(); i != stats.end(); ++i) {
+    cout << "stat " << (*i).first << " is " << (*i).second << endl;
+  }
+
+  smt.assertFormula(em.mkExpr(kind::LT, y, em.mkConst(Rational(5))));
+  r = smt.query(q);
+  Statistics stats2 = smt.getStatistics();
+  bool different = false;
+  for(Statistics::iterator i = stats2.begin(); i != stats2.end(); ++i) {
+    cout << "stat1 " << (*i).first << " is " << stats.getStatistic((*i).first) << endl;
+    cout << "stat2 " << (*i).first << " is " << (*i).second << endl;
+    if(smt.getStatistic((*i).first) != (*i).second) {
+      cout << "SMT engine reports different value for statistic "
+           << (*i).first << ": " << smt.getStatistic((*i).first) << endl;
+      exit(1);
+    }
+    different = different || stats.getStatistic((*i).first) != (*i).second;
+  }
+
+#ifdef CVC4_STATISTICS_ON
+  if(!different) {
+    cout << "stats are the same!  bailing.." << endl;
+    exit(1);
+  }
+#endif /* CVC4_STATISTICS_ON */
+
+  return r == Result::VALID ? 0 : 1;
+}
diff --git a/test/system/two_smt_engines.cpp b/test/system/two_smt_engines.cpp
new file mode 100644
index 0000000..c916ac7
--- /dev/null
+++ b/test/system/two_smt_engines.cpp
@@ -0,0 +1,36 @@
+/*********************                                                        */
+/*! \file two_smt_engines.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A simple test of multiple SmtEngines
+ **
+ ** A simple test of multiple SmtEngines.
+ **/
+
+#include <iostream>
+#include <sstream>
+
+#include "expr/expr.h"
+#include "smt/smt_engine.h"
+
+using namespace CVC4;
+using namespace std;
+
+int main() {
+  ExprManager em;
+  Options opts;
+  SmtEngine smt(&em);
+  SmtEngine smt2(&em);
+  Result r = smt.query(em.mkConst(true));
+  Result r2 = smt2.query(em.mkConst(true));
+
+  return r == Result::VALID && r2 == Result::VALID ? 0 : 1;
+}
+
diff --git a/test/unit/Makefile.am b/test/unit/Makefile.am
new file mode 100644
index 0000000..129d086
--- /dev/null
+++ b/test/unit/Makefile.am
@@ -0,0 +1,245 @@
+# All unit tests
+UNIT_TESTS = \
+	expr/expr_public \
+	expr/expr_manager_public \
+	expr/type_cardinality_public \
+	util/cardinality_public
+if WHITE_AND_BLACK_TESTS
+UNIT_TESTS += \
+	theory/logic_info_white \
+	theory/theory_engine_white \
+	theory/theory_black \
+	theory/theory_white \
+	theory/theory_arith_white \
+	theory/theory_bv_white \
+	theory/type_enumerator_white \
+	expr/node_white \
+	expr/node_black \
+	expr/kind_black \
+	expr/kind_map_black \
+	expr/node_builder_black \
+	expr/node_manager_black \
+	expr/node_manager_white \
+	expr/attribute_white \
+	expr/attribute_black \
+	expr/symbol_table_black \
+	expr/node_self_iterator_black \
+	expr/type_node_white \
+	parser/parser_black \
+	parser/parser_builder_black \
+	prop/cnf_stream_white \
+	context/context_black \
+	context/context_white \
+	context/context_mm_black \
+	context/cdo_black \
+	context/cdlist_black \
+	context/cdlist_context_memory_black \
+	context/cdmap_black \
+	context/cdmap_white \
+	context/cdvector_black \
+	context/stacking_vector_black \
+	util/array_store_all_black \
+	util/assert_white \
+	util/binary_heap_black \
+	util/bitvector_black \
+	util/datatype_black \
+	util/configuration_black \
+	util/output_black \
+	util/exception_black \
+	util/integer_black \
+	util/integer_white \
+	util/listener_black \
+	util/rational_black \
+	util/rational_white \
+	util/stats_black \
+	util/boolean_simplification_black \
+	util/subrange_bound_white \
+	main/interactive_shell_black
+endif
+
+export VERBOSE = 1
+
+# Things that aren't tests but that tests rely on and need to
+# go into the distribution
+TEST_DEPS_DIST = \
+	memory.h \
+	Makefile.tests
+
+if HAVE_CXXTESTGEN
+
+AM_CPPFLAGS = \
+	-I. \
+	"-I at CXXTEST@" \
+	"-I at top_builddir@/src" \
+	"-I at top_srcdir@/src/include" \
+	"-I at top_srcdir@/lib" \
+	"-I at top_srcdir@/src" \
+	"-I at top_srcdir@/src/prop/minisat" \
+	-D __STDC_LIMIT_MACROS \
+	-D __STDC_FORMAT_MACROS \
+	$(ANTLR_INCLUDES) \
+	$(TEST_CPPFLAGS)
+AM_CXXFLAGS = -Wall -Wno-unknown-pragmas -Wno-parentheses $(TEST_CXXFLAGS)
+AM_LDFLAGS = $(TEST_LDFLAGS) $(READLINE_LIBS) $(LIBS)
+
+AM_CXXFLAGS_WHITE = -fno-access-control -D__BUILDING_CVC4LIB_UNIT_TEST -D__BUILDING_CVC4PARSERLIB_UNIT_TEST
+AM_CXXFLAGS_BLACK = -D__BUILDING_CVC4LIB_UNIT_TEST -D__BUILDING_CVC4PARSERLIB_UNIT_TEST
+AM_CXXFLAGS_PUBLIC =
+AM_LDFLAGS_WHITE =
+AM_LDFLAGS_BLACK =
+AM_LDFLAGS_PUBLIC =
+AM_LIBADD_WHITE = \
+	@abs_top_builddir@/src/main/libmain.a \
+	@abs_top_builddir@/src/parser/libcvc4parser.la \
+	@abs_top_builddir@/src/libcvc4.la
+AM_LIBADD_BLACK = \
+	@abs_top_builddir@/src/main/libmain.a \
+	@abs_top_builddir@/src/parser/libcvc4parser.la \
+	@abs_top_builddir@/src/libcvc4.la
+AM_LIBADD_PUBLIC = \
+	@abs_top_builddir@/src/parser/libcvc4parser.la \
+	@abs_top_builddir@/src/libcvc4.la
+
+EXTRA_DIST = \
+	no_cxxtest \
+	$(UNIT_TESTS:%=%.cpp) \
+	$(UNIT_TESTS:%=%.h) \
+	$(TEST_DEPS_DIST)
+
+MOSTLYCLEANFILES = $(UNIT_TESTS) $(UNIT_TESTS:%=%.cpp) $(UNIT_TESTS:%=%.lo)
+DISTCLEANFILES = $(UNIT_TESTS:%=@DEPDIR@/%.Plo)
+
+# the tests automake infrastructure doesn't clean up .o files :-(
+# handle both .libs and _libs variants
+mostlyclean-local:
+	@for f in $(UNIT_TESTS); do \
+		dir="$$(dirname "$$f")"; fil="$$(basename "$$f")"; \
+		for junk in	"$$dir/.libs/$$fil.o" \
+				"$$dir/_libs/$$fil.o" \
+				"$$dir/.libs/lt-$$fil" \
+				"$$dir/_libs/lt-$$fil" \
+				"$$dir/.libs/$$fil" \
+				"$$dir/_libs/$$fil"; do \
+			if test -e "$$junk"; then \
+				echo "rm -f \"$$junk\""; \
+				rm -f "$$junk"; \
+			fi; \
+		done; \
+	done
+
+ at mk_include@ @srcdir@/Makefile.tests
+
+# We leave "TESTS" empty here; it's handled in Makefile.tests (see
+# that file for comment)
+TESTS = $(UNIT_TESTS)
+
+if STATIC_BINARY
+unit_LINK = $(CXXLINK) -all-static
+else
+unit_LINK = $(CXXLINK)
+endif
+
+ at AMDEP_TRUE@@am__include@ $(UNIT_TESTS:%=@am__quote at ./@DEPDIR@/%.Plo at am__quote@)
+
+$(UNIT_TESTS:%=@am__quote at ./@DEPDIR@/%.Plo at am__quote@): %.Plo:
+	$(AM_V_at)$(MKDIR_P) `dirname "$@"`
+	$(AM_V_GEN)test -e "$@" || touch "$@"
+
+$(UNIT_TESTS:%=@abs_builddir@/%.cpp): @abs_builddir@/%.cpp: %.h
+	$(AM_V_at)$(MKDIR_P) `dirname "$@"`
+	$(AM_V_GEN)$(CXXTESTGEN) --have-eh --have-std --error-printer -o "$@" "$<"
+
+$(WHITE_TESTS:%=%.lo): %_white.lo: @abs_builddir@/%_white.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) $(AM_CXXFLAGS_WHITE) -MT $@ -MD -MP -MF $(DEPDIR)/$(@:%.lo=%).Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$(@:%.lo=%).Tpo $(DEPDIR)/$(@:%.lo=%).Plo
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) $(AM_CXXFLAGS_WHITE) -c -o $@ $<
+
+$(WHITE_TESTS): %_white: %_white.lo $(AM_LIBADD_WHITE)
+	$(AM_V_CXXLD)$(unit_LINK) $(AM_LIBADD_WHITE) $(AM_LDFLAGS) $(AM_LDFLAGS_WHITE) $<
+
+$(BLACK_TESTS:%=%.lo): %_black.lo: @abs_builddir@/%_black.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) $(AM_CXXFLAGS_BLACK) -MT $@ -MD -MP -MF $(DEPDIR)/$(@:%.lo=%).Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$(@:%.lo=%).Tpo $(DEPDIR)/$(@:%.lo=%).Plo
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) $(AM_CXXFLAGS_BLACK) -c -o $@ $<
+
+$(BLACK_TESTS): %_black: %_black.lo $(AM_LIBADD_BLACK)
+	$(AM_V_CXXLD)$(unit_LINK) $(AM_LIBADD_BLACK) $(AM_LDFLAGS) $(AM_LDFLAGS_BLACK) $<
+
+$(PUBLIC_TESTS:%=%.lo): %_public.lo: @abs_builddir@/%_public.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) $(AM_CXXFLAGS_PUBLIC) -MT $@ -MD -MP -MF $(DEPDIR)/$(@:%.lo=%).Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$(@:%.lo=%).Tpo $(DEPDIR)/$(@:%.lo=%).Plo
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) $(AM_CXXFLAGS_PUBLIC) -c -o $@ $<
+
+$(PUBLIC_TESTS): %_public: %_public.lo $(AM_LIBADD_PUBLIC)
+	$(AM_V_CXXLD)$(unit_LINK) $(AM_LIBADD_PUBLIC) $(AM_LDFLAGS) $(AM_LDFLAGS_PUBLIC) $<
+
+else
+
+# force a user-visible failure for "make check"
+TESTS = no_cxxtest
+
+EXTRA_DIST = \
+	no_cxxtest \
+	$(UNIT_TESTS:%=%.h) \
+	$(TEST_DEPS_DIST) \
+	no-cxxtest-available
+
+endif
+
+$(UNIT_TESTS:%=%.cpp): $(UNIT_TESTS:%=@abs_builddir@/%.cpp)
+
+# trick automake into setting LTCXXCOMPILE, CXXLINK, etc.
+if CVC4_FALSE
+noinst_LTLIBRARIES = libdummy.la
+nodist_libdummy_la_SOURCES = expr/node_black.cpp
+libdummy_la_LIBADD = @abs_top_builddir@/src/libcvc4.la
+endif
+
+# synonyms for "check" in this directory in this directory
+.PHONY: units test
+units test: check
+
+# no-ops here
+.PHONY: systemtests regress regress0 regress1 regress2 regress3 regress4
+regress regress0 regress1 regress2 regress3 regress4:
+
+if HAVE_CXXTESTGEN
+# all is fine with the world
+else
+# all is not !
+no-cxxtest-available:
+	@if test "$(I_REALLY_WANT_TO_BUILD_CVC4_DIST_WITHOUT_TESTS)" = 1; then \
+		echo; \
+		echo "WARNING:"; \
+		echo "WARNING: No CxxTest to build unit tests, but, then, you know that;"; \
+		echo "WARNING: I hope you know what you're doing."; \
+		echo "WARNING:"; \
+		echo; \
+		( echo "CxxTest was not available at the time this distribution was built,"; \
+		  echo "so the tests could not be built.  You'll need CxxTest to test this"; \
+		  echo "distribution." ) >no-cxxtest-available; \
+	else \
+		echo; \
+		echo "ERROR:"; \
+		echo "ERROR: You cannot make dist in this build directory, you do not have CxxTest."; \
+		echo "ERROR: The tests should be generated for the user and included in the tarball,"; \
+		echo "ERROR: otherwise they'll be required to have CxxTest just to test the standard"; \
+		echo "ERROR: distribution built correctly."; \
+		echo "ERROR: If you really want to do this, append the following to your make command."; \
+		echo "ERROR:"; \
+		echo "ERROR:     I_REALLY_WANT_TO_BUILD_CVC4_DIST_WITHOUT_TESTS=1"; \
+		echo "ERROR:"; \
+		echo; \
+		exit 1; \
+	fi >&2
+endif
+
diff --git a/test/unit/Makefile.in b/test/unit/Makefile.in
new file mode 100644
index 0000000..c1a6731
--- /dev/null
+++ b/test/unit/Makefile.in
@@ -0,0 +1,1723 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at WHITE_AND_BLACK_TESTS_TRUE@am__append_1 = \
+ at WHITE_AND_BLACK_TESTS_TRUE@	theory/logic_info_white \
+ at WHITE_AND_BLACK_TESTS_TRUE@	theory/theory_engine_white \
+ at WHITE_AND_BLACK_TESTS_TRUE@	theory/theory_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	theory/theory_white \
+ at WHITE_AND_BLACK_TESTS_TRUE@	theory/theory_arith_white \
+ at WHITE_AND_BLACK_TESTS_TRUE@	theory/theory_bv_white \
+ at WHITE_AND_BLACK_TESTS_TRUE@	theory/type_enumerator_white \
+ at WHITE_AND_BLACK_TESTS_TRUE@	expr/node_white \
+ at WHITE_AND_BLACK_TESTS_TRUE@	expr/node_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	expr/kind_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	expr/kind_map_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	expr/node_builder_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	expr/node_manager_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	expr/node_manager_white \
+ at WHITE_AND_BLACK_TESTS_TRUE@	expr/attribute_white \
+ at WHITE_AND_BLACK_TESTS_TRUE@	expr/attribute_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	expr/symbol_table_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	expr/node_self_iterator_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	expr/type_node_white \
+ at WHITE_AND_BLACK_TESTS_TRUE@	parser/parser_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	parser/parser_builder_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	prop/cnf_stream_white \
+ at WHITE_AND_BLACK_TESTS_TRUE@	context/context_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	context/context_white \
+ at WHITE_AND_BLACK_TESTS_TRUE@	context/context_mm_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	context/cdo_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	context/cdlist_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	context/cdlist_context_memory_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	context/cdmap_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	context/cdmap_white \
+ at WHITE_AND_BLACK_TESTS_TRUE@	context/cdvector_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	context/stacking_vector_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	util/array_store_all_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	util/assert_white \
+ at WHITE_AND_BLACK_TESTS_TRUE@	util/binary_heap_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	util/bitvector_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	util/datatype_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	util/configuration_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	util/output_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	util/exception_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	util/integer_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	util/integer_white \
+ at WHITE_AND_BLACK_TESTS_TRUE@	util/listener_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	util/rational_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	util/rational_white \
+ at WHITE_AND_BLACK_TESTS_TRUE@	util/stats_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	util/boolean_simplification_black \
+ at WHITE_AND_BLACK_TESTS_TRUE@	util/subrange_bound_white \
+ at WHITE_AND_BLACK_TESTS_TRUE@	main/interactive_shell_black
+
+subdir = test/unit
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
+	$(top_srcdir)/config/antlr.m4 \
+	$(top_srcdir)/config/ax_prog_doxygen.m4 \
+	$(top_srcdir)/config/ax_tls.m4 \
+	$(top_srcdir)/config/bindings.m4 $(top_srcdir)/config/boost.m4 \
+	$(top_srcdir)/config/cryptominisat.m4 \
+	$(top_srcdir)/config/cvc4.m4 \
+	$(top_srcdir)/config/gcc_version.m4 \
+	$(top_srcdir)/config/glpk.m4 $(top_srcdir)/config/is_sorted.m4 \
+	$(top_srcdir)/config/libtool.m4 \
+	$(top_srcdir)/config/ltoptions.m4 \
+	$(top_srcdir)/config/ltsugar.m4 \
+	$(top_srcdir)/config/ltversion.m4 \
+	$(top_srcdir)/config/lt~obsolete.m4 \
+	$(top_srcdir)/config/pkg.m4 $(top_srcdir)/config/readline.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/cvc4autoconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+ at CVC4_FALSE@libdummy_la_DEPENDENCIES =  \
+ at CVC4_FALSE@	@abs_top_builddir@/src/libcvc4.la
+am__dirstamp = $(am__leading_dot)dirstamp
+ at CVC4_FALSE@nodist_libdummy_la_OBJECTS = expr/node_black.lo
+libdummy_la_OBJECTS = $(nodist_libdummy_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+ at CVC4_FALSE@am_libdummy_la_rpath =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+SOURCES = $(nodist_libdummy_la_SOURCES)
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp \
+	$(top_srcdir)/config/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABC_HOME = @ABC_HOME@
+ABC_LDFLAGS = @ABC_LDFLAGS@
+ABC_LIBS = @ABC_LIBS@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANTLR = @ANTLR@
+ANTLR_HOME = @ANTLR_HOME@
+ANTLR_INCLUDES = @ANTLR_INCLUDES@
+ANTLR_LDFLAGS = @ANTLR_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LDPATH = @BOOST_LDPATH@
+BOOST_ROOT = @BOOST_ROOT@
+BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
+BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
+BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
+BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
+BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
+BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
+BOOST_THREAD_WIN32_LDFLAGS = @BOOST_THREAD_WIN32_LDFLAGS@
+BOOST_THREAD_WIN32_LDPATH = @BOOST_THREAD_WIN32_LDPATH@
+BOOST_THREAD_WIN32_LIBS = @BOOST_THREAD_WIN32_LIBS@
+BUILDING_SHARED = @BUILDING_SHARED@
+BUILDING_STATIC = @BUILDING_STATIC@
+CAMLP4O = @CAMLP4O@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLN_CFLAGS = @CLN_CFLAGS@
+CLN_LIBS = @CLN_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
+CRYPTOMINISAT_LDFLAGS = @CRYPTOMINISAT_LDFLAGS@
+CRYPTOMINISAT_LIBS = @CRYPTOMINISAT_LIBS@
+CSHARP_CPPFLAGS = @CSHARP_CPPFLAGS@
+CVC4_BINDINGS_LIBRARY_VERSION = @CVC4_BINDINGS_LIBRARY_VERSION@
+CVC4_BUILD_LIBCOMPAT = @CVC4_BUILD_LIBCOMPAT@
+CVC4_COMPAT_LIBRARY_VERSION = @CVC4_COMPAT_LIBRARY_VERSION@
+CVC4_HAS_THREADS = @CVC4_HAS_THREADS@
+CVC4_JAVA_MODULE_EXT = @CVC4_JAVA_MODULE_EXT@
+CVC4_LANGUAGE_BINDINGS = @CVC4_LANGUAGE_BINDINGS@
+CVC4_LIBRARY_VERSION = @CVC4_LIBRARY_VERSION@
+CVC4_NEED_INT64_T_OVERLOADS = @CVC4_NEED_INT64_T_OVERLOADS@
+CVC4_PARSER_LIBRARY_VERSION = @CVC4_PARSER_LIBRARY_VERSION@
+CVC4_TLS = @CVC4_TLS@
+CVC4_TLS_SUPPORTED = @CVC4_TLS_SUPPORTED@
+CVC4_USE_CLN_IMP = @CVC4_USE_CLN_IMP@
+CVC4_USE_GMP_IMP = @CVC4_USE_GMP_IMP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTEST = @CXXTEST@
+CXXTESTGEN = @CXXTESTGEN@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@
+DOXYGEN_EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_DX_CURRENT_FEATURE = @DX_FLAG_DX_CURRENT_FEATURE@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLAG_VISIBILITY_HIDDEN = @FLAG_VISIBILITY_HIDDEN@
+FNO_STRICT_ALIASING = @FNO_STRICT_ALIASING@
+GLPK_HOME = @GLPK_HOME@
+GLPK_LDFLAGS = @GLPK_LDFLAGS@
+GLPK_LIBS = @GLPK_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JAVA_CPPFLAGS = @JAVA_CPPFLAGS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MAN_DATE = @MAN_DATE@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLFIND = @OCAMLFIND@
+OCAMLMKTOP = @OCAMLMKTOP@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PERL_CPPFLAGS = @PERL_CPPFLAGS@
+PHP_CPPFLAGS = @PHP_CPPFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_CXXFLAGS = @PYTHON_CXXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDE = @PYTHON_INCLUDE@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+RUBY_CPPFLAGS = @RUBY_CPPFLAGS@
+RUN_REGRESSION_ARGS = @RUN_REGRESSION_ARGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARY = @STATIC_BINARY@
+STRIP = @STRIP@
+SWIG = @SWIG@
+TCL_CPPFLAGS = @TCL_CPPFLAGS@
+TESTS_ENVIRONMENT = @TESTS_ENVIRONMENT@
+TEST_CPPFLAGS = @TEST_CPPFLAGS@
+TEST_CXXFLAGS = @TEST_CXXFLAGS@
+TEST_LDFLAGS = @TEST_LDFLAGS@
+VERSION = @VERSION@
+WERROR = @WERROR@
+WNO_CONVERSION_NULL = @WNO_CONVERSION_NULL@
+WNO_PARENTHESES = @WNO_PARENTHESES@
+WNO_TAUTOLOGICAL_COMPARE = @WNO_TAUTOLOGICAL_COMPARE@
+WNO_UNINITIALIZED = @WNO_UNINITIALIZED@
+WNO_UNUSED_VARIABLE = @WNO_UNUSED_VARIABLE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cvc4_LDFLAGS = @cvc4_LDFLAGS@
+cvc4_config_cmdline = @cvc4_config_cmdline@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mk_empty = @mk_empty@
+mk_if = @mk_if@
+mk_include = @mk_include@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pcvc4_LDFLAGS = @pcvc4_LDFLAGS@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
+
+# All unit tests
+UNIT_TESTS = expr/expr_public expr/expr_manager_public \
+	expr/type_cardinality_public util/cardinality_public \
+	$(am__append_1)
+
+# Things that aren't tests but that tests rely on and need to
+# go into the distribution
+TEST_DEPS_DIST = \
+	memory.h \
+	Makefile.tests
+
+ at HAVE_CXXTESTGEN_TRUE@AM_CPPFLAGS = \
+ at HAVE_CXXTESTGEN_TRUE@	-I. \
+ at HAVE_CXXTESTGEN_TRUE@	"-I at CXXTEST@" \
+ at HAVE_CXXTESTGEN_TRUE@	"-I at top_builddir@/src" \
+ at HAVE_CXXTESTGEN_TRUE@	"-I at top_srcdir@/src/include" \
+ at HAVE_CXXTESTGEN_TRUE@	"-I at top_srcdir@/lib" \
+ at HAVE_CXXTESTGEN_TRUE@	"-I at top_srcdir@/src" \
+ at HAVE_CXXTESTGEN_TRUE@	"-I at top_srcdir@/src/prop/minisat" \
+ at HAVE_CXXTESTGEN_TRUE@	-D __STDC_LIMIT_MACROS \
+ at HAVE_CXXTESTGEN_TRUE@	-D __STDC_FORMAT_MACROS \
+ at HAVE_CXXTESTGEN_TRUE@	$(ANTLR_INCLUDES) \
+ at HAVE_CXXTESTGEN_TRUE@	$(TEST_CPPFLAGS)
+
+ at HAVE_CXXTESTGEN_TRUE@AM_CXXFLAGS = -Wall -Wno-unknown-pragmas -Wno-parentheses $(TEST_CXXFLAGS)
+ at HAVE_CXXTESTGEN_TRUE@AM_LDFLAGS = $(TEST_LDFLAGS) $(READLINE_LIBS) $(LIBS)
+ at HAVE_CXXTESTGEN_TRUE@AM_CXXFLAGS_WHITE = -fno-access-control -D__BUILDING_CVC4LIB_UNIT_TEST -D__BUILDING_CVC4PARSERLIB_UNIT_TEST
+ at HAVE_CXXTESTGEN_TRUE@AM_CXXFLAGS_BLACK = -D__BUILDING_CVC4LIB_UNIT_TEST -D__BUILDING_CVC4PARSERLIB_UNIT_TEST
+ at HAVE_CXXTESTGEN_TRUE@AM_CXXFLAGS_PUBLIC = 
+ at HAVE_CXXTESTGEN_TRUE@AM_LDFLAGS_WHITE = 
+ at HAVE_CXXTESTGEN_TRUE@AM_LDFLAGS_BLACK = 
+ at HAVE_CXXTESTGEN_TRUE@AM_LDFLAGS_PUBLIC = 
+ at HAVE_CXXTESTGEN_TRUE@AM_LIBADD_WHITE = \
+ at HAVE_CXXTESTGEN_TRUE@	@abs_top_builddir@/src/main/libmain.a \
+ at HAVE_CXXTESTGEN_TRUE@	@abs_top_builddir@/src/parser/libcvc4parser.la \
+ at HAVE_CXXTESTGEN_TRUE@	@abs_top_builddir@/src/libcvc4.la
+
+ at HAVE_CXXTESTGEN_TRUE@AM_LIBADD_BLACK = \
+ at HAVE_CXXTESTGEN_TRUE@	@abs_top_builddir@/src/main/libmain.a \
+ at HAVE_CXXTESTGEN_TRUE@	@abs_top_builddir@/src/parser/libcvc4parser.la \
+ at HAVE_CXXTESTGEN_TRUE@	@abs_top_builddir@/src/libcvc4.la
+
+ at HAVE_CXXTESTGEN_TRUE@AM_LIBADD_PUBLIC = \
+ at HAVE_CXXTESTGEN_TRUE@	@abs_top_builddir@/src/parser/libcvc4parser.la \
+ at HAVE_CXXTESTGEN_TRUE@	@abs_top_builddir@/src/libcvc4.la
+
+ at HAVE_CXXTESTGEN_FALSE@EXTRA_DIST = \
+ at HAVE_CXXTESTGEN_FALSE@	no_cxxtest \
+ at HAVE_CXXTESTGEN_FALSE@	$(UNIT_TESTS:%=%.h) \
+ at HAVE_CXXTESTGEN_FALSE@	$(TEST_DEPS_DIST) \
+ at HAVE_CXXTESTGEN_FALSE@	no-cxxtest-available
+
+ at HAVE_CXXTESTGEN_TRUE@EXTRA_DIST = \
+ at HAVE_CXXTESTGEN_TRUE@	no_cxxtest \
+ at HAVE_CXXTESTGEN_TRUE@	$(UNIT_TESTS:%=%.cpp) \
+ at HAVE_CXXTESTGEN_TRUE@	$(UNIT_TESTS:%=%.h) \
+ at HAVE_CXXTESTGEN_TRUE@	$(TEST_DEPS_DIST)
+
+ at HAVE_CXXTESTGEN_TRUE@MOSTLYCLEANFILES = $(UNIT_TESTS) $(UNIT_TESTS:%=%.cpp) $(UNIT_TESTS:%=%.lo)
+ at HAVE_CXXTESTGEN_TRUE@DISTCLEANFILES = $(UNIT_TESTS:%=@DEPDIR@/%.Plo)
+
+# force a user-visible failure for "make check"
+ at HAVE_CXXTESTGEN_FALSE@TESTS = no_cxxtest
+
+# We leave "TESTS" empty here; it's handled in Makefile.tests (see
+# that file for comment)
+ at HAVE_CXXTESTGEN_TRUE@TESTS = $(UNIT_TESTS)
+ at HAVE_CXXTESTGEN_TRUE@@STATIC_BINARY_FALSE at unit_LINK = $(CXXLINK)
+ at HAVE_CXXTESTGEN_TRUE@@STATIC_BINARY_TRUE at unit_LINK = $(CXXLINK) -all-static
+
+# trick automake into setting LTCXXCOMPILE, CXXLINK, etc.
+ at CVC4_FALSE@noinst_LTLIBRARIES = libdummy.la
+ at CVC4_FALSE@nodist_libdummy_la_SOURCES = expr/node_black.cpp
+ at CVC4_FALSE@libdummy_la_LIBADD = @abs_top_builddir@/src/libcvc4.la
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .log .o .obj .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/unit/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu test/unit/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+expr/$(am__dirstamp):
+	@$(MKDIR_P) expr
+	@: > expr/$(am__dirstamp)
+expr/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) expr/$(DEPDIR)
+	@: > expr/$(DEPDIR)/$(am__dirstamp)
+expr/node_black.lo: expr/$(am__dirstamp) \
+	expr/$(DEPDIR)/$(am__dirstamp)
+
+libdummy.la: $(libdummy_la_OBJECTS) $(libdummy_la_DEPENDENCIES) $(EXTRA_libdummy_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK) $(am_libdummy_la_rpath) $(libdummy_la_OBJECTS) $(libdummy_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+	-rm -f expr/*.$(OBJEXT)
+	-rm -f expr/*.lo
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at expr/$(DEPDIR)/node_black.Plo at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+	-rm -rf expr/.libs expr/_libs
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+no_cxxtest.log: no_cxxtest
+	@p='no_cxxtest'; \
+	b='no_cxxtest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+expr/expr_public.log: expr/expr_public
+	@p='expr/expr_public'; \
+	b='expr/expr_public'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+expr/expr_manager_public.log: expr/expr_manager_public
+	@p='expr/expr_manager_public'; \
+	b='expr/expr_manager_public'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+expr/type_cardinality_public.log: expr/type_cardinality_public
+	@p='expr/type_cardinality_public'; \
+	b='expr/type_cardinality_public'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+util/cardinality_public.log: util/cardinality_public
+	@p='util/cardinality_public'; \
+	b='util/cardinality_public'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+theory/logic_info_white.log: theory/logic_info_white
+	@p='theory/logic_info_white'; \
+	b='theory/logic_info_white'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+theory/theory_engine_white.log: theory/theory_engine_white
+	@p='theory/theory_engine_white'; \
+	b='theory/theory_engine_white'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+theory/theory_black.log: theory/theory_black
+	@p='theory/theory_black'; \
+	b='theory/theory_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+theory/theory_white.log: theory/theory_white
+	@p='theory/theory_white'; \
+	b='theory/theory_white'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+theory/theory_arith_white.log: theory/theory_arith_white
+	@p='theory/theory_arith_white'; \
+	b='theory/theory_arith_white'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+theory/theory_bv_white.log: theory/theory_bv_white
+	@p='theory/theory_bv_white'; \
+	b='theory/theory_bv_white'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+theory/type_enumerator_white.log: theory/type_enumerator_white
+	@p='theory/type_enumerator_white'; \
+	b='theory/type_enumerator_white'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+expr/node_white.log: expr/node_white
+	@p='expr/node_white'; \
+	b='expr/node_white'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+expr/node_black.log: expr/node_black
+	@p='expr/node_black'; \
+	b='expr/node_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+expr/kind_black.log: expr/kind_black
+	@p='expr/kind_black'; \
+	b='expr/kind_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+expr/kind_map_black.log: expr/kind_map_black
+	@p='expr/kind_map_black'; \
+	b='expr/kind_map_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+expr/node_builder_black.log: expr/node_builder_black
+	@p='expr/node_builder_black'; \
+	b='expr/node_builder_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+expr/node_manager_black.log: expr/node_manager_black
+	@p='expr/node_manager_black'; \
+	b='expr/node_manager_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+expr/node_manager_white.log: expr/node_manager_white
+	@p='expr/node_manager_white'; \
+	b='expr/node_manager_white'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+expr/attribute_white.log: expr/attribute_white
+	@p='expr/attribute_white'; \
+	b='expr/attribute_white'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+expr/attribute_black.log: expr/attribute_black
+	@p='expr/attribute_black'; \
+	b='expr/attribute_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+expr/symbol_table_black.log: expr/symbol_table_black
+	@p='expr/symbol_table_black'; \
+	b='expr/symbol_table_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+expr/node_self_iterator_black.log: expr/node_self_iterator_black
+	@p='expr/node_self_iterator_black'; \
+	b='expr/node_self_iterator_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+expr/type_node_white.log: expr/type_node_white
+	@p='expr/type_node_white'; \
+	b='expr/type_node_white'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+parser/parser_black.log: parser/parser_black
+	@p='parser/parser_black'; \
+	b='parser/parser_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+parser/parser_builder_black.log: parser/parser_builder_black
+	@p='parser/parser_builder_black'; \
+	b='parser/parser_builder_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+prop/cnf_stream_white.log: prop/cnf_stream_white
+	@p='prop/cnf_stream_white'; \
+	b='prop/cnf_stream_white'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+context/context_black.log: context/context_black
+	@p='context/context_black'; \
+	b='context/context_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+context/context_white.log: context/context_white
+	@p='context/context_white'; \
+	b='context/context_white'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+context/context_mm_black.log: context/context_mm_black
+	@p='context/context_mm_black'; \
+	b='context/context_mm_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+context/cdo_black.log: context/cdo_black
+	@p='context/cdo_black'; \
+	b='context/cdo_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+context/cdlist_black.log: context/cdlist_black
+	@p='context/cdlist_black'; \
+	b='context/cdlist_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+context/cdlist_context_memory_black.log: context/cdlist_context_memory_black
+	@p='context/cdlist_context_memory_black'; \
+	b='context/cdlist_context_memory_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+context/cdmap_black.log: context/cdmap_black
+	@p='context/cdmap_black'; \
+	b='context/cdmap_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+context/cdmap_white.log: context/cdmap_white
+	@p='context/cdmap_white'; \
+	b='context/cdmap_white'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+context/cdvector_black.log: context/cdvector_black
+	@p='context/cdvector_black'; \
+	b='context/cdvector_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+context/stacking_vector_black.log: context/stacking_vector_black
+	@p='context/stacking_vector_black'; \
+	b='context/stacking_vector_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+util/array_store_all_black.log: util/array_store_all_black
+	@p='util/array_store_all_black'; \
+	b='util/array_store_all_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+util/assert_white.log: util/assert_white
+	@p='util/assert_white'; \
+	b='util/assert_white'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+util/binary_heap_black.log: util/binary_heap_black
+	@p='util/binary_heap_black'; \
+	b='util/binary_heap_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+util/bitvector_black.log: util/bitvector_black
+	@p='util/bitvector_black'; \
+	b='util/bitvector_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+util/datatype_black.log: util/datatype_black
+	@p='util/datatype_black'; \
+	b='util/datatype_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+util/configuration_black.log: util/configuration_black
+	@p='util/configuration_black'; \
+	b='util/configuration_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+util/output_black.log: util/output_black
+	@p='util/output_black'; \
+	b='util/output_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+util/exception_black.log: util/exception_black
+	@p='util/exception_black'; \
+	b='util/exception_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+util/integer_black.log: util/integer_black
+	@p='util/integer_black'; \
+	b='util/integer_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+util/integer_white.log: util/integer_white
+	@p='util/integer_white'; \
+	b='util/integer_white'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+util/listener_black.log: util/listener_black
+	@p='util/listener_black'; \
+	b='util/listener_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+util/rational_black.log: util/rational_black
+	@p='util/rational_black'; \
+	b='util/rational_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+util/rational_white.log: util/rational_white
+	@p='util/rational_white'; \
+	b='util/rational_white'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+util/stats_black.log: util/stats_black
+	@p='util/stats_black'; \
+	b='util/stats_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+util/boolean_simplification_black.log: util/boolean_simplification_black
+	@p='util/boolean_simplification_black'; \
+	b='util/boolean_simplification_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+util/subrange_bound_white.log: util/subrange_bound_white
+	@p='util/subrange_bound_white'; \
+	b='util/subrange_bound_white'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+main/interactive_shell_black.log: main/interactive_shell_black
+	@p='main/interactive_shell_black'; \
+	b='main/interactive_shell_black'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f expr/$(DEPDIR)/$(am__dirstamp)
+	-rm -f expr/$(am__dirstamp)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+ at HAVE_CXXTESTGEN_FALSE@mostlyclean-local:
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf expr/$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf expr/$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool mostlyclean-local
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
+	clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	cscopelist-am ctags ctags-am distclean distclean-compile \
+	distclean-generic distclean-libtool distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
+	pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+export VERBOSE = 1
+
+# the tests automake infrastructure doesn't clean up .o files :-(
+# handle both .libs and _libs variants
+ at HAVE_CXXTESTGEN_TRUE@mostlyclean-local:
+ at HAVE_CXXTESTGEN_TRUE@	@for f in $(UNIT_TESTS); do \
+ at HAVE_CXXTESTGEN_TRUE@		dir="$$(dirname "$$f")"; fil="$$(basename "$$f")"; \
+ at HAVE_CXXTESTGEN_TRUE@		for junk in	"$$dir/.libs/$$fil.o" \
+ at HAVE_CXXTESTGEN_TRUE@				"$$dir/_libs/$$fil.o" \
+ at HAVE_CXXTESTGEN_TRUE@				"$$dir/.libs/lt-$$fil" \
+ at HAVE_CXXTESTGEN_TRUE@				"$$dir/_libs/lt-$$fil" \
+ at HAVE_CXXTESTGEN_TRUE@				"$$dir/.libs/$$fil" \
+ at HAVE_CXXTESTGEN_TRUE@				"$$dir/_libs/$$fil"; do \
+ at HAVE_CXXTESTGEN_TRUE@			if test -e "$$junk"; then \
+ at HAVE_CXXTESTGEN_TRUE@				echo "rm -f \"$$junk\""; \
+ at HAVE_CXXTESTGEN_TRUE@				rm -f "$$junk"; \
+ at HAVE_CXXTESTGEN_TRUE@			fi; \
+ at HAVE_CXXTESTGEN_TRUE@		done; \
+ at HAVE_CXXTESTGEN_TRUE@	done
+
+ at HAVE_CXXTESTGEN_TRUE@@mk_include@ @srcdir@/Makefile.tests
+
+ at HAVE_CXXTESTGEN_TRUE@@AMDEP_TRUE@@am__include@ $(UNIT_TESTS:%=@am__quote at ./@DEPDIR@/%.Plo at am__quote@)
+
+ at HAVE_CXXTESTGEN_TRUE@$(UNIT_TESTS:%=@am__quote at ./@DEPDIR@/%.Plo at am__quote@): %.Plo:
+ at HAVE_CXXTESTGEN_TRUE@	$(AM_V_at)$(MKDIR_P) `dirname "$@"`
+ at HAVE_CXXTESTGEN_TRUE@	$(AM_V_GEN)test -e "$@" || touch "$@"
+
+ at HAVE_CXXTESTGEN_TRUE@$(UNIT_TESTS:%=@abs_builddir@/%.cpp): @abs_builddir@/%.cpp: %.h
+ at HAVE_CXXTESTGEN_TRUE@	$(AM_V_at)$(MKDIR_P) `dirname "$@"`
+ at HAVE_CXXTESTGEN_TRUE@	$(AM_V_GEN)$(CXXTESTGEN) --have-eh --have-std --error-printer -o "$@" "$<"
+
+ at HAVE_CXXTESTGEN_TRUE@$(WHITE_TESTS:%=%.lo): %_white.lo: @abs_builddir@/%_white.cpp
+ at HAVE_CXXTESTGEN_TRUE@@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) $(AM_CXXFLAGS_WHITE) -MT $@ -MD -MP -MF $(DEPDIR)/$(@:%.lo=%).Tpo -c -o $@ $<
+ at HAVE_CXXTESTGEN_TRUE@@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$(@:%.lo=%).Tpo $(DEPDIR)/$(@:%.lo=%).Plo
+ at HAVE_CXXTESTGEN_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
+ at HAVE_CXXTESTGEN_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at HAVE_CXXTESTGEN_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at HAVE_CXXTESTGEN_TRUE@@am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) $(AM_CXXFLAGS_WHITE) -c -o $@ $<
+
+ at HAVE_CXXTESTGEN_TRUE@$(WHITE_TESTS): %_white: %_white.lo $(AM_LIBADD_WHITE)
+ at HAVE_CXXTESTGEN_TRUE@	$(AM_V_CXXLD)$(unit_LINK) $(AM_LIBADD_WHITE) $(AM_LDFLAGS) $(AM_LDFLAGS_WHITE) $<
+
+ at HAVE_CXXTESTGEN_TRUE@$(BLACK_TESTS:%=%.lo): %_black.lo: @abs_builddir@/%_black.cpp
+ at HAVE_CXXTESTGEN_TRUE@@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) $(AM_CXXFLAGS_BLACK) -MT $@ -MD -MP -MF $(DEPDIR)/$(@:%.lo=%).Tpo -c -o $@ $<
+ at HAVE_CXXTESTGEN_TRUE@@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$(@:%.lo=%).Tpo $(DEPDIR)/$(@:%.lo=%).Plo
+ at HAVE_CXXTESTGEN_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
+ at HAVE_CXXTESTGEN_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at HAVE_CXXTESTGEN_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at HAVE_CXXTESTGEN_TRUE@@am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) $(AM_CXXFLAGS_BLACK) -c -o $@ $<
+
+ at HAVE_CXXTESTGEN_TRUE@$(BLACK_TESTS): %_black: %_black.lo $(AM_LIBADD_BLACK)
+ at HAVE_CXXTESTGEN_TRUE@	$(AM_V_CXXLD)$(unit_LINK) $(AM_LIBADD_BLACK) $(AM_LDFLAGS) $(AM_LDFLAGS_BLACK) $<
+
+ at HAVE_CXXTESTGEN_TRUE@$(PUBLIC_TESTS:%=%.lo): %_public.lo: @abs_builddir@/%_public.cpp
+ at HAVE_CXXTESTGEN_TRUE@@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) $(AM_CXXFLAGS_PUBLIC) -MT $@ -MD -MP -MF $(DEPDIR)/$(@:%.lo=%).Tpo -c -o $@ $<
+ at HAVE_CXXTESTGEN_TRUE@@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$(@:%.lo=%).Tpo $(DEPDIR)/$(@:%.lo=%).Plo
+ at HAVE_CXXTESTGEN_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
+ at HAVE_CXXTESTGEN_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at HAVE_CXXTESTGEN_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at HAVE_CXXTESTGEN_TRUE@@am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) $(AM_CXXFLAGS_PUBLIC) -c -o $@ $<
+
+ at HAVE_CXXTESTGEN_TRUE@$(PUBLIC_TESTS): %_public: %_public.lo $(AM_LIBADD_PUBLIC)
+ at HAVE_CXXTESTGEN_TRUE@	$(AM_V_CXXLD)$(unit_LINK) $(AM_LIBADD_PUBLIC) $(AM_LDFLAGS) $(AM_LDFLAGS_PUBLIC) $<
+
+$(UNIT_TESTS:%=%.cpp): $(UNIT_TESTS:%=@abs_builddir@/%.cpp)
+
+# synonyms for "check" in this directory in this directory
+.PHONY: units test
+units test: check
+
+# no-ops here
+.PHONY: systemtests regress regress0 regress1 regress2 regress3 regress4
+regress regress0 regress1 regress2 regress3 regress4:
+
+# all is fine with the world
+# all is not !
+ at HAVE_CXXTESTGEN_FALSE@no-cxxtest-available:
+ at HAVE_CXXTESTGEN_FALSE@	@if test "$(I_REALLY_WANT_TO_BUILD_CVC4_DIST_WITHOUT_TESTS)" = 1; then \
+ at HAVE_CXXTESTGEN_FALSE@		echo; \
+ at HAVE_CXXTESTGEN_FALSE@		echo "WARNING:"; \
+ at HAVE_CXXTESTGEN_FALSE@		echo "WARNING: No CxxTest to build unit tests, but, then, you know that;"; \
+ at HAVE_CXXTESTGEN_FALSE@		echo "WARNING: I hope you know what you're doing."; \
+ at HAVE_CXXTESTGEN_FALSE@		echo "WARNING:"; \
+ at HAVE_CXXTESTGEN_FALSE@		echo; \
+ at HAVE_CXXTESTGEN_FALSE@		( echo "CxxTest was not available at the time this distribution was built,"; \
+ at HAVE_CXXTESTGEN_FALSE@		  echo "so the tests could not be built.  You'll need CxxTest to test this"; \
+ at HAVE_CXXTESTGEN_FALSE@		  echo "distribution." ) >no-cxxtest-available; \
+ at HAVE_CXXTESTGEN_FALSE@	else \
+ at HAVE_CXXTESTGEN_FALSE@		echo; \
+ at HAVE_CXXTESTGEN_FALSE@		echo "ERROR:"; \
+ at HAVE_CXXTESTGEN_FALSE@		echo "ERROR: You cannot make dist in this build directory, you do not have CxxTest."; \
+ at HAVE_CXXTESTGEN_FALSE@		echo "ERROR: The tests should be generated for the user and included in the tarball,"; \
+ at HAVE_CXXTESTGEN_FALSE@		echo "ERROR: otherwise they'll be required to have CxxTest just to test the standard"; \
+ at HAVE_CXXTESTGEN_FALSE@		echo "ERROR: distribution built correctly."; \
+ at HAVE_CXXTESTGEN_FALSE@		echo "ERROR: If you really want to do this, append the following to your make command."; \
+ at HAVE_CXXTESTGEN_FALSE@		echo "ERROR:"; \
+ at HAVE_CXXTESTGEN_FALSE@		echo "ERROR:     I_REALLY_WANT_TO_BUILD_CVC4_DIST_WITHOUT_TESTS=1"; \
+ at HAVE_CXXTESTGEN_FALSE@		echo "ERROR:"; \
+ at HAVE_CXXTESTGEN_FALSE@		echo; \
+ at HAVE_CXXTESTGEN_FALSE@		exit 1; \
+ at HAVE_CXXTESTGEN_FALSE@	fi >&2
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/unit/Makefile.tests b/test/unit/Makefile.tests
new file mode 100644
index 0000000..e3ec536
--- /dev/null
+++ b/test/unit/Makefile.tests
@@ -0,0 +1,20 @@
+# This makefile is separated because it's not under automake control.
+# This gets confusing, because we want:
+#
+#  1. to (re)build only the tests in the "filtered" set of tests
+#     (those that we're going to run)
+#  2. run only the tests in the "filtered" set of tests.
+#
+# It's a pain to make automake happy.
+
+# Add "filtered" tests to the set of TESTS
+TESTS = $(filter $(TEST_PREFIX)%,$(filter %$(TEST_SUFFIX),$(UNIT_TESTS)))
+
+# subsets of the tests, based on name
+WHITE_TESTS = $(filter %_white,$(UNIT_TESTS))
+BLACK_TESTS = $(filter %_black,$(UNIT_TESTS))
+PUBLIC_TESTS = $(filter %_public,$(UNIT_TESTS))
+
+# This rule forces automake to correctly build our filtered
+# set of tests
+check-TESTS: $(TESTS)
diff --git a/test/unit/expr/expr_manager_public.cpp b/test/unit/expr/expr_manager_public.cpp
new file mode 100644
index 0000000..088f974
--- /dev/null
+++ b/test/unit/expr/expr_manager_public.cpp
@@ -0,0 +1,62 @@
+/* Generated file, do not edit */
+
+#ifndef CXXTEST_RUNNING
+#define CXXTEST_RUNNING
+#endif
+
+#define _CXXTEST_HAVE_STD
+#define _CXXTEST_HAVE_EH
+#include <cxxtest/TestListener.h>
+#include <cxxtest/TestTracker.h>
+#include <cxxtest/TestRunner.h>
+#include <cxxtest/RealDescriptions.h>
+#include <cxxtest/TestMain.h>
+#include <cxxtest/ErrorPrinter.h>
+
+int main( int argc, char *argv[] ) {
+ int status;
+    CxxTest::ErrorPrinter tmp;
+    CxxTest::RealWorldDescription::_worldName = "cxxtest";
+    status = CxxTest::Main< CxxTest::ErrorPrinter >( tmp, argc, argv );
+    return status;
+}
+bool suite_ExprManagerPublic_init = false;
+#include "/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/test/unit/expr/expr_manager_public.h"
+
+static ExprManagerPublic suite_ExprManagerPublic;
+
+static CxxTest::List Tests_ExprManagerPublic = { 0, 0 };
+CxxTest::StaticSuiteDescription suiteDescription_ExprManagerPublic( "../../../../../test/unit/expr/expr_manager_public.h", 30, "ExprManagerPublic", suite_ExprManagerPublic, Tests_ExprManagerPublic );
+
+static class TestDescription_suite_ExprManagerPublic_testMkAssociative : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_ExprManagerPublic_testMkAssociative() : CxxTest::RealTestDescription( Tests_ExprManagerPublic, suiteDescription_ExprManagerPublic, 80, "testMkAssociative" ) {}
+ void runTest() { suite_ExprManagerPublic.testMkAssociative(); }
+} testDescription_suite_ExprManagerPublic_testMkAssociative;
+
+static class TestDescription_suite_ExprManagerPublic_testMkAssociative2 : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_ExprManagerPublic_testMkAssociative2() : CxxTest::RealTestDescription( Tests_ExprManagerPublic, suiteDescription_ExprManagerPublic, 95, "testMkAssociative2" ) {}
+ void runTest() { suite_ExprManagerPublic.testMkAssociative2(); }
+} testDescription_suite_ExprManagerPublic_testMkAssociative2;
+
+static class TestDescription_suite_ExprManagerPublic_testMkAssociative3 : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_ExprManagerPublic_testMkAssociative3() : CxxTest::RealTestDescription( Tests_ExprManagerPublic, suiteDescription_ExprManagerPublic, 106, "testMkAssociative3" ) {}
+ void runTest() { suite_ExprManagerPublic.testMkAssociative3(); }
+} testDescription_suite_ExprManagerPublic_testMkAssociative3;
+
+static class TestDescription_suite_ExprManagerPublic_testMkAssociativeTooFew : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_ExprManagerPublic_testMkAssociativeTooFew() : CxxTest::RealTestDescription( Tests_ExprManagerPublic, suiteDescription_ExprManagerPublic, 119, "testMkAssociativeTooFew" ) {}
+ void runTest() { suite_ExprManagerPublic.testMkAssociativeTooFew(); }
+} testDescription_suite_ExprManagerPublic_testMkAssociativeTooFew;
+
+static class TestDescription_suite_ExprManagerPublic_testMkAssociativeBadKind : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_ExprManagerPublic_testMkAssociativeBadKind() : CxxTest::RealTestDescription( Tests_ExprManagerPublic, suiteDescription_ExprManagerPublic, 124, "testMkAssociativeBadKind" ) {}
+ void runTest() { suite_ExprManagerPublic.testMkAssociativeBadKind(); }
+} testDescription_suite_ExprManagerPublic_testMkAssociativeBadKind;
+
+#include <cxxtest/Root.cpp>
+const char* CxxTest::RealWorldDescription::_worldName = "cxxtest";
diff --git a/test/unit/expr/expr_manager_public.h b/test/unit/expr/expr_manager_public.h
new file mode 100644
index 0000000..788b496
--- /dev/null
+++ b/test/unit/expr/expr_manager_public.h
@@ -0,0 +1,129 @@
+/*********************                                                        */
+/*! \file expr_manager_public.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Public black-box testing of CVC4::ExprManager.
+ **
+ ** Public black-box testing of CVC4::ExprManager.
+ **/
+
+#include <cxxtest/TestSuite.h>
+
+#include <sstream>
+#include <string>
+
+#include "expr/expr_manager.h"
+#include "expr/expr.h"
+#include "base/exception.h"
+
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace std;
+
+class ExprManagerPublic : public CxxTest::TestSuite {
+private:
+
+  ExprManager* d_exprManager;
+
+  void checkAssociative(Expr expr, Kind kind, unsigned int numChildren) {
+    std::vector<Expr> worklist;
+    worklist.push_back(expr);
+
+    unsigned int childrenFound = 0;
+
+    while( !worklist.empty() ) {
+      Expr current = worklist.back();
+      worklist.pop_back();
+      if( current.getKind() == kind ) {
+        for( unsigned int i = 0; i < current.getNumChildren(); ++i ) {
+          worklist.push_back( current[i] );
+        }
+      } else {
+        childrenFound++;
+      }
+    }
+
+    TS_ASSERT_EQUALS( childrenFound, numChildren );
+  }
+
+  std::vector<Expr> mkVars(Type type, unsigned int n) {
+    std::vector<Expr> vars;
+    for( unsigned int i = 0; i < n; ++i ) {
+      vars.push_back( d_exprManager->mkVar(type) );
+    }
+    return vars;
+  }
+
+
+public:
+  void setUp() {
+    d_exprManager = new ExprManager;
+  }
+
+
+  void tearDown() {
+    try {
+      delete d_exprManager;
+    } catch(Exception e) {
+      cerr << "Exception during tearDown():" << endl << e;
+      throw ;
+    }
+  }
+
+  void testMkAssociative() {
+    try {
+      std::vector<Expr> vars = mkVars(d_exprManager->booleanType(), 294821);
+      Expr n = d_exprManager->mkAssociative(AND,vars);
+      checkAssociative(n,AND,vars.size());
+
+      vars = mkVars(d_exprManager->booleanType(), 2);
+      n = d_exprManager->mkAssociative(OR,vars);
+      checkAssociative(n,OR,2);
+    } catch( Exception& e ) {
+      cerr << "Exception in testMkAssociative(): " << endl << e;
+      throw;
+    }
+  }
+
+  void testMkAssociative2() {
+    try {
+      std::vector<Expr> vars = mkVars(d_exprManager->booleanType(), 2);
+      Expr n = d_exprManager->mkAssociative(OR,vars);
+      checkAssociative(n,OR,2);
+    } catch( Exception& e ) {
+      cerr << "Exception in testMkAssociative2(): " << endl << e;
+      throw;
+    }
+  }
+
+  void testMkAssociative3() {
+    try {
+      //unsigned int numVars = d_exprManager->maxArity(AND) + 1;
+      unsigned int numVars = (1<<16) + 1;
+      std::vector<Expr> vars = mkVars(d_exprManager->booleanType(), numVars);
+      Expr n = d_exprManager->mkAssociative(AND,vars);
+      checkAssociative(n,AND,numVars);
+    } catch( Exception& e ) {
+      cerr << "Exception in testMkAssociative3(): " << endl << e;
+      throw;
+    }
+  }
+
+  void testMkAssociativeTooFew() {
+    std::vector<Expr> vars = mkVars(d_exprManager->booleanType(), 1);
+    TS_ASSERT_THROWS( d_exprManager->mkAssociative(AND,vars), IllegalArgumentException);
+  }
+
+  void testMkAssociativeBadKind() {
+    std::vector<Expr> vars = mkVars(d_exprManager->integerType(), 10);
+    TS_ASSERT_THROWS( d_exprManager->mkAssociative(LEQ,vars), IllegalArgumentException);
+  }
+
+};
diff --git a/test/unit/expr/expr_public.cpp b/test/unit/expr/expr_public.cpp
new file mode 100644
index 0000000..ad80a35
--- /dev/null
+++ b/test/unit/expr/expr_public.cpp
@@ -0,0 +1,122 @@
+/* Generated file, do not edit */
+
+#ifndef CXXTEST_RUNNING
+#define CXXTEST_RUNNING
+#endif
+
+#define _CXXTEST_HAVE_STD
+#define _CXXTEST_HAVE_EH
+#include <cxxtest/TestListener.h>
+#include <cxxtest/TestTracker.h>
+#include <cxxtest/TestRunner.h>
+#include <cxxtest/RealDescriptions.h>
+#include <cxxtest/TestMain.h>
+#include <cxxtest/ErrorPrinter.h>
+
+int main( int argc, char *argv[] ) {
+ int status;
+    CxxTest::ErrorPrinter tmp;
+    CxxTest::RealWorldDescription::_worldName = "cxxtest";
+    status = CxxTest::Main< CxxTest::ErrorPrinter >( tmp, argc, argv );
+    return status;
+}
+bool suite_ExprPublic_init = false;
+#include "/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/test/unit/expr/expr_public.h"
+
+static ExprPublic suite_ExprPublic;
+
+static CxxTest::List Tests_ExprPublic = { 0, 0 };
+CxxTest::StaticSuiteDescription suiteDescription_ExprPublic( "../../../../../test/unit/expr/expr_public.h", 31, "ExprPublic", suite_ExprPublic, Tests_ExprPublic );
+
+static class TestDescription_suite_ExprPublic_testDefaultCtor : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_ExprPublic_testDefaultCtor() : CxxTest::RealTestDescription( Tests_ExprPublic, suiteDescription_ExprPublic, 111, "testDefaultCtor" ) {}
+ void runTest() { suite_ExprPublic.testDefaultCtor(); }
+} testDescription_suite_ExprPublic_testDefaultCtor;
+
+static class TestDescription_suite_ExprPublic_testCtors : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_ExprPublic_testCtors() : CxxTest::RealTestDescription( Tests_ExprPublic, suiteDescription_ExprPublic, 117, "testCtors" ) {}
+ void runTest() { suite_ExprPublic.testCtors(); }
+} testDescription_suite_ExprPublic_testCtors;
+
+static class TestDescription_suite_ExprPublic_testAssignment : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_ExprPublic_testAssignment() : CxxTest::RealTestDescription( Tests_ExprPublic, suiteDescription_ExprPublic, 144, "testAssignment" ) {}
+ void runTest() { suite_ExprPublic.testAssignment(); }
+} testDescription_suite_ExprPublic_testAssignment;
+
+static class TestDescription_suite_ExprPublic_testEquality : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_ExprPublic_testEquality() : CxxTest::RealTestDescription( Tests_ExprPublic, suiteDescription_ExprPublic, 158, "testEquality" ) {}
+ void runTest() { suite_ExprPublic.testEquality(); }
+} testDescription_suite_ExprPublic_testEquality;
+
+static class TestDescription_suite_ExprPublic_testComparison : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_ExprPublic_testComparison() : CxxTest::RealTestDescription( Tests_ExprPublic, suiteDescription_ExprPublic, 173, "testComparison" ) {}
+ void runTest() { suite_ExprPublic.testComparison(); }
+} testDescription_suite_ExprPublic_testComparison;
+
+static class TestDescription_suite_ExprPublic_testGetKind : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_ExprPublic_testGetKind() : CxxTest::RealTestDescription( Tests_ExprPublic, suiteDescription_ExprPublic, 218, "testGetKind" ) {}
+ void runTest() { suite_ExprPublic.testGetKind(); }
+} testDescription_suite_ExprPublic_testGetKind;
+
+static class TestDescription_suite_ExprPublic_testGetNumChildren : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_ExprPublic_testGetNumChildren() : CxxTest::RealTestDescription( Tests_ExprPublic, suiteDescription_ExprPublic, 235, "testGetNumChildren" ) {}
+ void runTest() { suite_ExprPublic.testGetNumChildren(); }
+} testDescription_suite_ExprPublic_testGetNumChildren;
+
+static class TestDescription_suite_ExprPublic_testOperatorFunctions : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_ExprPublic_testOperatorFunctions() : CxxTest::RealTestDescription( Tests_ExprPublic, suiteDescription_ExprPublic, 252, "testOperatorFunctions" ) {}
+ void runTest() { suite_ExprPublic.testOperatorFunctions(); }
+} testDescription_suite_ExprPublic_testOperatorFunctions;
+
+static class TestDescription_suite_ExprPublic_testGetType : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_ExprPublic_testGetType() : CxxTest::RealTestDescription( Tests_ExprPublic, suiteDescription_ExprPublic, 273, "testGetType" ) {}
+ void runTest() { suite_ExprPublic.testGetType(); }
+} testDescription_suite_ExprPublic_testGetType;
+
+static class TestDescription_suite_ExprPublic_testToString : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_ExprPublic_testToString() : CxxTest::RealTestDescription( Tests_ExprPublic, suiteDescription_ExprPublic, 292, "testToString" ) {}
+ void runTest() { suite_ExprPublic.testToString(); }
+} testDescription_suite_ExprPublic_testToString;
+
+static class TestDescription_suite_ExprPublic_testToStream : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_ExprPublic_testToStream() : CxxTest::RealTestDescription( Tests_ExprPublic, suiteDescription_ExprPublic, 309, "testToStream" ) {}
+ void runTest() { suite_ExprPublic.testToStream(); }
+} testDescription_suite_ExprPublic_testToStream;
+
+static class TestDescription_suite_ExprPublic_testIsNull : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_ExprPublic_testIsNull() : CxxTest::RealTestDescription( Tests_ExprPublic, suiteDescription_ExprPublic, 341, "testIsNull" ) {}
+ void runTest() { suite_ExprPublic.testIsNull(); }
+} testDescription_suite_ExprPublic_testIsNull;
+
+static class TestDescription_suite_ExprPublic_testIsConst : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_ExprPublic_testIsConst() : CxxTest::RealTestDescription( Tests_ExprPublic, suiteDescription_ExprPublic, 353, "testIsConst" ) {}
+ void runTest() { suite_ExprPublic.testIsConst(); }
+} testDescription_suite_ExprPublic_testIsConst;
+
+static class TestDescription_suite_ExprPublic_testGetConst : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_ExprPublic_testGetConst() : CxxTest::RealTestDescription( Tests_ExprPublic, suiteDescription_ExprPublic, 421, "testGetConst" ) {}
+ void runTest() { suite_ExprPublic.testGetConst(); }
+} testDescription_suite_ExprPublic_testGetConst;
+
+static class TestDescription_suite_ExprPublic_testGetExprManager : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_ExprPublic_testGetExprManager() : CxxTest::RealTestDescription( Tests_ExprPublic, suiteDescription_ExprPublic, 446, "testGetExprManager" ) {}
+ void runTest() { suite_ExprPublic.testGetExprManager(); }
+} testDescription_suite_ExprPublic_testGetExprManager;
+
+#include <cxxtest/Root.cpp>
+const char* CxxTest::RealWorldDescription::_worldName = "cxxtest";
diff --git a/test/unit/expr/expr_public.h b/test/unit/expr/expr_public.h
new file mode 100644
index 0000000..cfdee8d
--- /dev/null
+++ b/test/unit/expr/expr_public.h
@@ -0,0 +1,462 @@
+/*********************                                                        */
+/*! \file expr_public.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Dejan Jovanovic, Christopher L. Conway
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Public black-box testing of CVC4::Expr.
+ **
+ ** Public black-box testing of CVC4::Expr.
+ **/
+
+#include <cxxtest/TestSuite.h>
+
+#include <sstream>
+#include <string>
+
+#include "base/exception.h"
+#include "expr/expr_manager.h"
+#include "expr/expr.h"
+#include "options/options.h"
+
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace std;
+
+class ExprPublic : public CxxTest::TestSuite {
+private:
+
+  Options opts;
+
+  ExprManager* d_em;
+
+  Expr* a_bool;
+  Expr* b_bool;
+  Expr* c_bool_and;
+  Expr* and_op;
+  Expr* plus_op;
+  Type* fun_type;
+  Expr* fun_op;
+  Expr* d_apply_fun_bool;
+  Expr* null;
+
+  Expr* i1;
+  Expr* i2;
+  Expr* r1;
+  Expr* r2;
+
+public:
+
+  void setUp() {
+    try {
+
+      char *argv[2];
+      argv[0] = strdup("");
+      argv[1] = strdup("--output-language=ast");
+      Options::parseOptions(&opts, 2, argv);
+      free(argv[0]);
+      free(argv[1]);
+
+      d_em = new ExprManager(opts);
+
+      a_bool = new Expr(d_em->mkVar("a",d_em->booleanType()));
+      b_bool = new Expr(d_em->mkVar("b", d_em->booleanType()));
+      c_bool_and = new Expr(d_em->mkExpr(AND, *a_bool, *b_bool));
+      and_op = new Expr(d_em->mkConst(AND));
+      plus_op = new Expr(d_em->mkConst(PLUS));
+      fun_type = new Type(d_em->mkFunctionType(d_em->booleanType(), d_em->booleanType()));
+      fun_op = new Expr(d_em->mkVar("f", *fun_type));
+      d_apply_fun_bool = new Expr(d_em->mkExpr(APPLY_UF, *fun_op, *a_bool));
+      null = new Expr();
+
+      i1 = new Expr(d_em->mkConst(Rational("0")));
+      i2 = new Expr(d_em->mkConst(Rational(23)));
+      r1 = new Expr(d_em->mkConst(Rational(1, 5)));
+      r2 = new Expr(d_em->mkConst(Rational("0")));
+    } catch(Exception e) {
+      cerr << "Exception during setUp():" << endl << e;
+      throw;
+    }
+  }
+
+  void tearDown() {
+    try {
+      delete r2;
+      delete r1;
+      delete i2;
+      delete i1;
+
+      delete null;
+      delete d_apply_fun_bool;
+      delete fun_type;
+      delete fun_op;
+      delete plus_op;
+      delete and_op;
+      delete c_bool_and;
+      delete b_bool;
+      delete a_bool;
+
+      delete d_em;
+    } catch(Exception e) {
+      cerr << "Exception during tearDown():" << endl << e;
+      throw;
+    }
+  }
+
+  void testDefaultCtor() {
+    /* Expr(); */
+    Expr e;
+    TS_ASSERT(e.isNull());
+  }
+
+  void testCtors() {
+    TS_ASSERT(!a_bool->isNull());
+    TS_ASSERT(!b_bool->isNull());
+
+    /* Expr(); */
+    Expr e;
+    TS_ASSERT(e.isNull());
+
+    /* Expr(const Expr& e) */
+    Expr e2(e);
+    TS_ASSERT(e == e2);
+    TS_ASSERT(e2 == e);
+    TS_ASSERT(!(e2 < e));
+    TS_ASSERT(!(e < e2));
+    TS_ASSERT(e.isNull());
+    TS_ASSERT(e2.isNull());
+    Expr f = d_em->mkExpr(OR, *a_bool, *b_bool);
+    Expr f2 = f;
+    TS_ASSERT(!f.isNull());
+    TS_ASSERT(!f2.isNull());
+    TS_ASSERT(f == f2);
+    TS_ASSERT(f2 == f);
+    TS_ASSERT(!(f2 < f));
+    TS_ASSERT(!(f < f2));
+    TS_ASSERT(f == d_em->mkExpr(OR, *a_bool, *b_bool));
+  }
+
+  void testAssignment() {
+    /* Expr& operator=(const Expr& e); */
+    Expr e = d_em->mkExpr(OR, *a_bool, *b_bool);
+    Expr f;
+    TS_ASSERT(f.isNull());
+    f = e;
+    TS_ASSERT(!f.isNull());
+    TS_ASSERT(e == f);
+    TS_ASSERT(f == e);
+    TS_ASSERT(!(f < e));
+    TS_ASSERT(!(e < f));
+    TS_ASSERT(f == d_em->mkExpr(OR, *a_bool, *b_bool));
+  }
+
+  void testEquality() {
+    /* bool operator==(const Expr& e) const; */
+    /* bool operator!=(const Expr& e) const; */
+
+    TS_ASSERT(*a_bool == *a_bool);
+    TS_ASSERT(*b_bool == *b_bool);
+    TS_ASSERT(!(*a_bool != *a_bool));
+    TS_ASSERT(!(*b_bool != *b_bool));
+
+    TS_ASSERT(*a_bool != *b_bool);
+    TS_ASSERT(*b_bool != *a_bool);
+    TS_ASSERT(!(*a_bool == *b_bool));
+    TS_ASSERT(!(*b_bool == *a_bool));
+  }
+
+  void testComparison() {
+    /* bool operator<(const Expr& e) const; */
+
+    TS_ASSERT(*null < *a_bool);
+    TS_ASSERT(*null < *b_bool);
+    TS_ASSERT(*null < *c_bool_and);
+    TS_ASSERT(*null < *d_apply_fun_bool);
+    TS_ASSERT(*null < *plus_op);
+    TS_ASSERT(*null < *and_op);
+    TS_ASSERT(*null < *i1);
+    TS_ASSERT(*null < *i2);
+    TS_ASSERT(*null < *r1);
+    TS_ASSERT(*null < *r2);
+
+    TS_ASSERT(*a_bool < *b_bool);
+    TS_ASSERT(*a_bool < *c_bool_and);
+    TS_ASSERT(*a_bool < *d_apply_fun_bool);
+    TS_ASSERT(!(*b_bool < *a_bool));
+    TS_ASSERT(!(*c_bool_and < *a_bool));
+    TS_ASSERT(!(*d_apply_fun_bool < *a_bool));
+
+    TS_ASSERT(*b_bool < *c_bool_and);
+    TS_ASSERT(*b_bool < *d_apply_fun_bool);
+    TS_ASSERT(!(*c_bool_and < *b_bool));
+    TS_ASSERT(!(*d_apply_fun_bool < *b_bool));
+
+    TS_ASSERT(*c_bool_and < *d_apply_fun_bool);
+    TS_ASSERT(!(*d_apply_fun_bool < *c_bool_and));
+
+    TS_ASSERT(*and_op < *c_bool_and);
+    TS_ASSERT(*and_op < *d_apply_fun_bool);
+    TS_ASSERT(*plus_op < *d_apply_fun_bool);
+    TS_ASSERT(!(*c_bool_and < *and_op));
+    TS_ASSERT(!(*d_apply_fun_bool < *and_op));
+    TS_ASSERT(!(*d_apply_fun_bool < *plus_op));
+
+    TS_ASSERT(!(*null < *null));
+    TS_ASSERT(!(*a_bool < *a_bool));
+    TS_ASSERT(!(*b_bool < *b_bool));
+    TS_ASSERT(!(*c_bool_and < *c_bool_and));
+    TS_ASSERT(!(*plus_op < *plus_op));
+    TS_ASSERT(!(*and_op < *and_op));
+    TS_ASSERT(!(*d_apply_fun_bool < *d_apply_fun_bool));
+  }
+
+  void testGetKind() {
+    /* Kind getKind() const; */
+
+    TS_ASSERT(a_bool->getKind() == VARIABLE);
+    TS_ASSERT(b_bool->getKind() == VARIABLE);
+    TS_ASSERT(c_bool_and->getKind() == AND);
+    TS_ASSERT(and_op->getKind() == BUILTIN);
+    TS_ASSERT(plus_op->getKind() == BUILTIN);
+    TS_ASSERT(d_apply_fun_bool->getKind() == APPLY_UF);
+    TS_ASSERT(null->getKind() == NULL_EXPR);
+
+    TS_ASSERT(i1->getKind() == CONST_RATIONAL);
+    TS_ASSERT(i2->getKind() == CONST_RATIONAL);
+    TS_ASSERT(r1->getKind() == CONST_RATIONAL);
+    TS_ASSERT(r2->getKind() == CONST_RATIONAL);
+  }
+
+  void testGetNumChildren() {
+    /* size_t getNumChildren() const; */
+
+    TS_ASSERT(a_bool->getNumChildren() == 0);
+    TS_ASSERT(b_bool->getNumChildren() == 0);
+    TS_ASSERT(c_bool_and->getNumChildren() == 2);
+    TS_ASSERT(and_op->getNumChildren() == 0);
+    TS_ASSERT(plus_op->getNumChildren() == 0);
+    TS_ASSERT(d_apply_fun_bool->getNumChildren() == 1);
+    TS_ASSERT(null->getNumChildren() == 0);
+
+    TS_ASSERT(i1->getNumChildren() == 0);
+    TS_ASSERT(i2->getNumChildren() == 0);
+    TS_ASSERT(r1->getNumChildren() == 0);
+    TS_ASSERT(r2->getNumChildren() == 0);
+  }
+
+  void testOperatorFunctions() {
+    /* bool hasOperator() const; */
+    /* Expr getOperator() const; */
+
+    TS_ASSERT(!a_bool->hasOperator());
+    TS_ASSERT(!b_bool->hasOperator());
+    TS_ASSERT(c_bool_and->hasOperator());
+    TS_ASSERT(!and_op->hasOperator());
+    TS_ASSERT(!plus_op->hasOperator());
+    TS_ASSERT(d_apply_fun_bool->hasOperator());
+    TS_ASSERT(!null->hasOperator());
+
+    TS_ASSERT_THROWS(a_bool->getOperator(), IllegalArgumentException);
+    TS_ASSERT_THROWS(b_bool->getOperator(), IllegalArgumentException);
+    TS_ASSERT(c_bool_and->getOperator() == *and_op);
+    TS_ASSERT_THROWS(plus_op->getOperator(), IllegalArgumentException);
+    TS_ASSERT_THROWS(and_op->getOperator(), IllegalArgumentException);
+    TS_ASSERT(d_apply_fun_bool->getOperator() == *fun_op);
+    TS_ASSERT_THROWS(null->getOperator(), IllegalArgumentException);
+  }
+
+  void testGetType() {
+    /* Type getType(); */
+
+    TS_ASSERT(a_bool->getType(false) == d_em->booleanType());
+    TS_ASSERT(a_bool->getType(true) == d_em->booleanType());
+    TS_ASSERT(b_bool->getType(false) == d_em->booleanType());
+    TS_ASSERT(b_bool->getType(true) == d_em->booleanType());
+    TS_ASSERT_THROWS(d_em->mkExpr(MULT,*a_bool,*b_bool).getType(true),
+                     TypeCheckingException);
+// These need better support for operators
+//    TS_ASSERT(and_op->getType().isNull());
+//    TS_ASSERT(plus_op->getType().isNull());
+    TS_ASSERT(d_apply_fun_bool->getType() == d_em->booleanType());
+    TS_ASSERT(i1->getType().isInteger());
+    TS_ASSERT(i2->getType().isInteger());
+    TS_ASSERT(r1->getType().isReal());
+    TS_ASSERT(r2->getType().isReal());
+  }
+
+  void testToString() {
+    /* std::string toString() const; */
+
+    TS_ASSERT(a_bool->toString() == "a");
+    TS_ASSERT(b_bool->toString() == "b");
+    TS_ASSERT(c_bool_and->toString() == "(AND a b)");
+    TS_ASSERT(and_op->toString() == "(BUILTIN AND)");
+    TS_ASSERT(plus_op->toString() == "(BUILTIN PLUS)");
+    TS_ASSERT(d_apply_fun_bool->toString() == "(APPLY_UF f a)");
+    TS_ASSERT(null->toString() == "null");
+
+    TS_ASSERT(i1->toString() == "(CONST_RATIONAL 0)");
+    TS_ASSERT(i2->toString() == "(CONST_RATIONAL 23)");
+    TS_ASSERT(r1->toString() == "(CONST_RATIONAL 1/5)");
+    TS_ASSERT(r2->toString() == "(CONST_RATIONAL 0)");
+  }
+
+  void testToStream() {
+    /* void toStream(std::ostream& out) const; */
+
+    stringstream sa, sb, sc, smult, splus, sd, snull;
+    stringstream si1, si2, sr1, sr2;
+    a_bool->toStream(sa);
+    b_bool->toStream(sb);
+    c_bool_and->toStream(sc);
+    and_op->toStream(smult);
+    plus_op->toStream(splus);
+    d_apply_fun_bool->toStream(sd);
+    null->toStream(snull);
+
+    i1->toStream(si1);
+    i2->toStream(si2);
+    r1->toStream(sr1);
+    r2->toStream(sr2);
+
+    TS_ASSERT(sa.str() == "a");
+    TS_ASSERT(sb.str() == "b");
+    TS_ASSERT(sc.str() == "(AND a b)");
+    TS_ASSERT(smult.str() == "(BUILTIN AND)");
+    TS_ASSERT(splus.str() == "(BUILTIN PLUS)");
+    TS_ASSERT(sd.str() == "(APPLY_UF f a)");
+    TS_ASSERT(snull.str() == "null");
+
+    TS_ASSERT(si1.str() == "(CONST_RATIONAL 0)");
+    TS_ASSERT(si2.str() == "(CONST_RATIONAL 23)");
+    TS_ASSERT(sr1.str() == "(CONST_RATIONAL 1/5)");
+    TS_ASSERT(sr2.str() == "(CONST_RATIONAL 0)");
+  }
+
+  void testIsNull() {
+    /* bool isNull() const; */
+
+    TS_ASSERT(!a_bool->isNull());
+    TS_ASSERT(!b_bool->isNull());
+    TS_ASSERT(!c_bool_and->isNull());
+    TS_ASSERT(!and_op->isNull());
+    TS_ASSERT(!plus_op->isNull());
+    TS_ASSERT(!d_apply_fun_bool->isNull());
+    TS_ASSERT(null->isNull());
+  }
+
+  void testIsConst() {
+    /* bool isConst() const; */
+
+    //Debug.on("isConst");
+
+    TS_ASSERT(!a_bool->isConst());
+    TS_ASSERT(!b_bool->isConst());
+    TS_ASSERT(!c_bool_and->isConst());
+    TS_ASSERT(and_op->isConst());
+    TS_ASSERT(plus_op->isConst());
+    TS_ASSERT(!d_apply_fun_bool->isConst());
+    TS_ASSERT(!null->isConst());
+
+    // more complicated "constants" exist in datatypes and arrays theories
+    Datatype list("list");
+    DatatypeConstructor consC("cons");
+    consC.addArg("car", d_em->integerType());
+    consC.addArg("cdr", DatatypeSelfType());
+    list.addConstructor(consC);
+    list.addConstructor(DatatypeConstructor("nil"));
+    DatatypeType listType = d_em->mkDatatypeType(list);
+    Expr cons = listType.getDatatype().getConstructor("cons");
+    Expr nil = listType.getDatatype().getConstructor("nil");
+    Expr x = d_em->mkVar("x", d_em->integerType());
+    Expr cons_x_nil = d_em->mkExpr(APPLY_CONSTRUCTOR, cons, x, d_em->mkExpr(APPLY_CONSTRUCTOR, nil));
+    Expr cons_1_nil = d_em->mkExpr(APPLY_CONSTRUCTOR, cons, d_em->mkConst(Rational(1)), d_em->mkExpr(APPLY_CONSTRUCTOR, nil));
+    Expr cons_1_cons_2_nil = d_em->mkExpr(APPLY_CONSTRUCTOR, cons, d_em->mkConst(Rational(1)), d_em->mkExpr(APPLY_CONSTRUCTOR, cons, d_em->mkConst(Rational(2)), d_em->mkExpr(APPLY_CONSTRUCTOR, nil)));
+    TS_ASSERT(d_em->mkExpr(APPLY_CONSTRUCTOR, nil).isConst());
+    TS_ASSERT(!cons_x_nil.isConst());
+    TS_ASSERT(cons_1_nil.isConst());
+    TS_ASSERT(cons_1_cons_2_nil.isConst());
+
+    ArrayType arrType = d_em->mkArrayType(d_em->integerType(), d_em->integerType());
+    Expr zero = d_em->mkConst(Rational(0));
+    Expr one = d_em->mkConst(Rational(1));
+    Expr storeAll = d_em->mkConst(ArrayStoreAll(arrType, zero));
+    TS_ASSERT(storeAll.isConst());
+
+    Expr arr = d_em->mkExpr(STORE, storeAll, zero, zero);
+    TS_ASSERT(!arr.isConst());
+    arr = d_em->mkExpr(STORE, storeAll, zero, one);
+    TS_ASSERT(arr.isConst());
+    Expr arr2 = d_em->mkExpr(STORE, arr, one, zero);
+    TS_ASSERT(!arr2.isConst());
+    arr2 = d_em->mkExpr(STORE, arr, one, one);
+    TS_ASSERT(arr2.isConst());
+    arr2 = d_em->mkExpr(STORE, arr, zero, one);
+    TS_ASSERT(!arr2.isConst());
+
+    arrType = d_em->mkArrayType(d_em->mkBitVectorType(1), d_em->mkBitVectorType(1));
+    zero = d_em->mkConst(BitVector(1,unsigned(0)));
+    one = d_em->mkConst(BitVector(1,unsigned(1)));
+    storeAll = d_em->mkConst(ArrayStoreAll(arrType, zero));
+    TS_ASSERT(storeAll.isConst());
+
+    arr = d_em->mkExpr(STORE, storeAll, zero, zero);
+    TS_ASSERT(!arr.isConst());
+    arr = d_em->mkExpr(STORE, storeAll, zero, one);
+    TS_ASSERT(arr.isConst());
+    arr2 = d_em->mkExpr(STORE, arr, one, zero);
+    TS_ASSERT(!arr2.isConst());
+    arr2 = d_em->mkExpr(STORE, arr, one, one);
+    TS_ASSERT(!arr2.isConst());
+    arr2 = d_em->mkExpr(STORE, arr, zero, one);
+    TS_ASSERT(!arr2.isConst());
+
+  }
+
+  void testGetConst() {
+    /* template <class T>
+       const T& getConst() const; */
+
+    TS_ASSERT_THROWS(a_bool->getConst<Kind>(), IllegalArgumentException);
+    TS_ASSERT_THROWS(b_bool->getConst<Kind>(), IllegalArgumentException);
+    TS_ASSERT_THROWS(c_bool_and->getConst<Kind>(), IllegalArgumentException);
+    TS_ASSERT(and_op->getConst<Kind>() == AND);
+    TS_ASSERT_THROWS(and_op->getConst<Rational>(), IllegalArgumentException);
+    TS_ASSERT(plus_op->getConst<Kind>() == PLUS);
+    TS_ASSERT_THROWS(plus_op->getConst<Rational>(), IllegalArgumentException);
+    TS_ASSERT_THROWS(d_apply_fun_bool->getConst<Kind>(), IllegalArgumentException);
+    TS_ASSERT_THROWS(null->getConst<Kind>(), IllegalArgumentException);
+
+    TS_ASSERT(i1->getConst<Rational>() == 0);
+    TS_ASSERT(i2->getConst<Rational>() == 23);
+    TS_ASSERT(r1->getConst<Rational>() == Rational(1, 5));
+    TS_ASSERT(r2->getConst<Rational>() == Rational("0"));
+
+    TS_ASSERT_THROWS(i1->getConst<Kind>(), IllegalArgumentException);
+    TS_ASSERT_THROWS(i2->getConst<Kind>(), IllegalArgumentException);
+    TS_ASSERT_THROWS(r1->getConst<Kind>(), IllegalArgumentException);
+    TS_ASSERT_THROWS(r2->getConst<Kind>(), IllegalArgumentException);
+  }
+
+  void testGetExprManager() {
+    /* ExprManager* getExprManager() const; */
+
+    TS_ASSERT(a_bool->getExprManager() == d_em);
+    TS_ASSERT(b_bool->getExprManager() == d_em);
+    TS_ASSERT(c_bool_and->getExprManager() == d_em);
+    TS_ASSERT(and_op->getExprManager() == d_em);
+    TS_ASSERT(plus_op->getExprManager() == d_em);
+    TS_ASSERT(d_apply_fun_bool->getExprManager() == d_em);
+    TS_ASSERT(null->getExprManager() == NULL);
+
+    TS_ASSERT(i1->getExprManager() == d_em);
+    TS_ASSERT(i2->getExprManager() == d_em);
+    TS_ASSERT(r1->getExprManager() == d_em);
+    TS_ASSERT(r2->getExprManager() == d_em);
+  }
+};
diff --git a/test/unit/expr/type_cardinality_public.cpp b/test/unit/expr/type_cardinality_public.cpp
new file mode 100644
index 0000000..33cf888
--- /dev/null
+++ b/test/unit/expr/type_cardinality_public.cpp
@@ -0,0 +1,74 @@
+/* Generated file, do not edit */
+
+#ifndef CXXTEST_RUNNING
+#define CXXTEST_RUNNING
+#endif
+
+#define _CXXTEST_HAVE_STD
+#define _CXXTEST_HAVE_EH
+#include <cxxtest/TestListener.h>
+#include <cxxtest/TestTracker.h>
+#include <cxxtest/TestRunner.h>
+#include <cxxtest/RealDescriptions.h>
+#include <cxxtest/TestMain.h>
+#include <cxxtest/ErrorPrinter.h>
+
+int main( int argc, char *argv[] ) {
+ int status;
+    CxxTest::ErrorPrinter tmp;
+    CxxTest::RealWorldDescription::_worldName = "cxxtest";
+    status = CxxTest::Main< CxxTest::ErrorPrinter >( tmp, argc, argv );
+    return status;
+}
+bool suite_TypeCardinalityPublic_init = false;
+#include "/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/test/unit/expr/type_cardinality_public.h"
+
+static TypeCardinalityPublic suite_TypeCardinalityPublic;
+
+static CxxTest::List Tests_TypeCardinalityPublic = { 0, 0 };
+CxxTest::StaticSuiteDescription suiteDescription_TypeCardinalityPublic( "../../../../../test/unit/expr/type_cardinality_public.h", 32, "TypeCardinalityPublic", suite_TypeCardinalityPublic, Tests_TypeCardinalityPublic );
+
+static class TestDescription_suite_TypeCardinalityPublic_testTheBasics : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_TypeCardinalityPublic_testTheBasics() : CxxTest::RealTestDescription( Tests_TypeCardinalityPublic, suiteDescription_TypeCardinalityPublic, 45, "testTheBasics" ) {}
+ void runTest() { suite_TypeCardinalityPublic.testTheBasics(); }
+} testDescription_suite_TypeCardinalityPublic_testTheBasics;
+
+static class TestDescription_suite_TypeCardinalityPublic_testArrays : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_TypeCardinalityPublic_testArrays() : CxxTest::RealTestDescription( Tests_TypeCardinalityPublic, suiteDescription_TypeCardinalityPublic, 51, "testArrays" ) {}
+ void runTest() { suite_TypeCardinalityPublic.testArrays(); }
+} testDescription_suite_TypeCardinalityPublic_testArrays;
+
+static class TestDescription_suite_TypeCardinalityPublic_testUnaryFunctions : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_TypeCardinalityPublic_testUnaryFunctions() : CxxTest::RealTestDescription( Tests_TypeCardinalityPublic, suiteDescription_TypeCardinalityPublic, 73, "testUnaryFunctions" ) {}
+ void runTest() { suite_TypeCardinalityPublic.testUnaryFunctions(); }
+} testDescription_suite_TypeCardinalityPublic_testUnaryFunctions;
+
+static class TestDescription_suite_TypeCardinalityPublic_testBinaryFunctions : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_TypeCardinalityPublic_testBinaryFunctions() : CxxTest::RealTestDescription( Tests_TypeCardinalityPublic, suiteDescription_TypeCardinalityPublic, 95, "testBinaryFunctions" ) {}
+ void runTest() { suite_TypeCardinalityPublic.testBinaryFunctions(); }
+} testDescription_suite_TypeCardinalityPublic_testBinaryFunctions;
+
+static class TestDescription_suite_TypeCardinalityPublic_testTernaryFunctions : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_TypeCardinalityPublic_testTernaryFunctions() : CxxTest::RealTestDescription( Tests_TypeCardinalityPublic, suiteDescription_TypeCardinalityPublic, 179, "testTernaryFunctions" ) {}
+ void runTest() { suite_TypeCardinalityPublic.testTernaryFunctions(); }
+} testDescription_suite_TypeCardinalityPublic_testTernaryFunctions;
+
+static class TestDescription_suite_TypeCardinalityPublic_testUndefinedSorts : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_TypeCardinalityPublic_testUndefinedSorts() : CxxTest::RealTestDescription( Tests_TypeCardinalityPublic, suiteDescription_TypeCardinalityPublic, 195, "testUndefinedSorts" ) {}
+ void runTest() { suite_TypeCardinalityPublic.testUndefinedSorts(); }
+} testDescription_suite_TypeCardinalityPublic_testUndefinedSorts;
+
+static class TestDescription_suite_TypeCardinalityPublic_testBitvectors : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_TypeCardinalityPublic_testBitvectors() : CxxTest::RealTestDescription( Tests_TypeCardinalityPublic, suiteDescription_TypeCardinalityPublic, 202, "testBitvectors" ) {}
+ void runTest() { suite_TypeCardinalityPublic.testBitvectors(); }
+} testDescription_suite_TypeCardinalityPublic_testBitvectors;
+
+#include <cxxtest/Root.cpp>
+const char* CxxTest::RealWorldDescription::_worldName = "cxxtest";
diff --git a/test/unit/expr/type_cardinality_public.h b/test/unit/expr/type_cardinality_public.h
new file mode 100644
index 0000000..dd2578e
--- /dev/null
+++ b/test/unit/expr/type_cardinality_public.h
@@ -0,0 +1,229 @@
+/*********************                                                        */
+/*! \file type_cardinality_public.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Public box testing of Type::getCardinality() for various Types
+ **
+ ** Public box testing of Type::getCardinality() for various Types.
+ **/
+
+#include <cxxtest/TestSuite.h>
+
+#include <iostream>
+#include <string>
+#include <sstream>
+
+#include "expr/kind.h"
+#include "expr/type.h"
+#include "expr/expr_manager.h"
+#include "util/cardinality.h"
+
+using namespace CVC4;
+using namespace CVC4::kind;
+using namespace std;
+
+class TypeCardinalityPublic : public CxxTest::TestSuite {
+  ExprManager* d_em;
+
+public:
+
+  void setUp() {
+    d_em = new ExprManager();
+  }
+
+  void tearDown() {
+    delete d_em;
+  }
+
+  void testTheBasics() {
+    TS_ASSERT( d_em->booleanType().getCardinality().compare(2) == Cardinality::EQUAL );
+    TS_ASSERT( d_em->integerType().getCardinality().compare(Cardinality::INTEGERS) == Cardinality::EQUAL );
+    TS_ASSERT( d_em->realType().getCardinality().compare(Cardinality::REALS) == Cardinality::EQUAL );
+  }
+
+  void testArrays() {
+    Type intToInt = d_em->mkArrayType(d_em->integerType(), d_em->integerType());
+    Type realToReal = d_em->mkArrayType(d_em->realType(), d_em->realType());
+    Type realToInt = d_em->mkArrayType(d_em->realType(), d_em->integerType());
+    Type intToReal = d_em->mkArrayType(d_em->integerType(), d_em->realType());
+    Type intToBool = d_em->mkArrayType(d_em->integerType(), d_em->booleanType());
+    Type realToBool = d_em->mkArrayType(d_em->realType(), d_em->booleanType());
+    Type boolToReal = d_em->mkArrayType(d_em->booleanType(), d_em->realType());
+    Type boolToInt = d_em->mkArrayType(d_em->booleanType(), d_em->integerType());
+    Type boolToBool = d_em->mkArrayType(d_em->booleanType(), d_em->booleanType());
+
+    TS_ASSERT( intToInt.getCardinality().compare(Cardinality::REALS) == Cardinality::EQUAL );
+    TS_ASSERT( realToReal.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+    TS_ASSERT( realToInt.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+    TS_ASSERT( intToReal.getCardinality().compare(Cardinality::REALS) == Cardinality::EQUAL );
+    TS_ASSERT( intToBool.getCardinality().compare(Cardinality::REALS) == Cardinality::EQUAL );
+    TS_ASSERT( realToBool.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+    TS_ASSERT( boolToReal.getCardinality().compare(Cardinality::REALS) == Cardinality::EQUAL );
+    TS_ASSERT( boolToInt.getCardinality().compare(Cardinality::INTEGERS) == Cardinality::EQUAL );
+    TS_ASSERT( boolToBool.getCardinality().compare(4) == Cardinality::EQUAL );
+  }
+
+  void testUnaryFunctions() {
+    Type intToInt = d_em->mkFunctionType(d_em->integerType(), d_em->integerType());
+    Type realToReal = d_em->mkFunctionType(d_em->realType(), d_em->realType());
+    Type realToInt = d_em->mkFunctionType(d_em->realType(), d_em->integerType());
+    Type intToReal = d_em->mkFunctionType(d_em->integerType(), d_em->realType());
+    Type intToBool = d_em->mkFunctionType(d_em->integerType(), d_em->booleanType());
+    Type realToBool = d_em->mkFunctionType(d_em->realType(), d_em->booleanType());
+    Type boolToReal = d_em->mkFunctionType(d_em->booleanType(), d_em->realType());
+    Type boolToInt = d_em->mkFunctionType(d_em->booleanType(), d_em->integerType());
+    Type boolToBool = d_em->mkFunctionType(d_em->booleanType(), d_em->booleanType());
+
+    TS_ASSERT( intToInt.getCardinality().compare(Cardinality::REALS) == Cardinality::EQUAL );
+    TS_ASSERT( realToReal.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+    TS_ASSERT( realToInt.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+    TS_ASSERT( intToReal.getCardinality().compare(Cardinality::REALS) == Cardinality::EQUAL );
+    TS_ASSERT( intToBool.getCardinality().compare(Cardinality::REALS) == Cardinality::EQUAL );
+    TS_ASSERT( realToBool.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+    TS_ASSERT( boolToReal.getCardinality().compare(Cardinality::REALS) == Cardinality::EQUAL );
+    TS_ASSERT( boolToInt.getCardinality().compare(Cardinality::INTEGERS) == Cardinality::EQUAL );
+    TS_ASSERT( boolToBool.getCardinality().compare(4) == Cardinality::EQUAL );
+  }
+
+  void testBinaryFunctions() {
+    vector<Type> boolbool; boolbool.push_back(d_em->booleanType()); boolbool.push_back(d_em->booleanType());
+    vector<Type> boolint; boolint.push_back(d_em->booleanType()); boolint.push_back(d_em->integerType());
+    vector<Type> intbool; intbool.push_back(d_em->integerType()); intbool.push_back(d_em->booleanType());
+    vector<Type> intint; intint.push_back(d_em->integerType()); intint.push_back(d_em->integerType());
+    vector<Type> intreal; intreal.push_back(d_em->integerType()); intreal.push_back(d_em->realType());
+    vector<Type> realint; realint.push_back(d_em->realType()); realint.push_back(d_em->integerType());
+    vector<Type> realreal; realreal.push_back(d_em->realType()); realreal.push_back(d_em->realType());
+    vector<Type> realbool; realbool.push_back(d_em->realType()); realbool.push_back(d_em->booleanType());
+    vector<Type> boolreal; boolreal.push_back(d_em->booleanType()); boolreal.push_back(d_em->realType());
+
+    Type boolboolToBool = d_em->mkFunctionType(boolbool, d_em->booleanType());
+    Type boolboolToInt = d_em->mkFunctionType(boolbool, d_em->integerType());
+    Type boolboolToReal = d_em->mkFunctionType(boolbool, d_em->realType());
+
+    Type boolintToBool = d_em->mkFunctionType(boolint, d_em->booleanType());
+    Type boolintToInt = d_em->mkFunctionType(boolint, d_em->integerType());
+    Type boolintToReal = d_em->mkFunctionType(boolint, d_em->realType());
+
+    Type intboolToBool = d_em->mkFunctionType(intbool, d_em->booleanType());
+    Type intboolToInt = d_em->mkFunctionType(intbool, d_em->integerType());
+    Type intboolToReal = d_em->mkFunctionType(intbool, d_em->realType());
+
+    Type intintToBool = d_em->mkFunctionType(intint, d_em->booleanType());
+    Type intintToInt = d_em->mkFunctionType(intint, d_em->integerType());
+    Type intintToReal = d_em->mkFunctionType(intint, d_em->realType());
+
+    Type intrealToBool = d_em->mkFunctionType(intreal, d_em->booleanType());
+    Type intrealToInt = d_em->mkFunctionType(intreal, d_em->integerType());
+    Type intrealToReal = d_em->mkFunctionType(intreal, d_em->realType());
+
+    Type realintToBool = d_em->mkFunctionType(realint, d_em->booleanType());
+    Type realintToInt = d_em->mkFunctionType(realint, d_em->integerType());
+    Type realintToReal = d_em->mkFunctionType(realint, d_em->realType());
+
+    Type realrealToBool = d_em->mkFunctionType(realreal, d_em->booleanType());
+    Type realrealToInt = d_em->mkFunctionType(realreal, d_em->integerType());
+    Type realrealToReal = d_em->mkFunctionType(realreal, d_em->realType());
+
+    Type realboolToBool = d_em->mkFunctionType(realbool, d_em->booleanType());
+    Type realboolToInt = d_em->mkFunctionType(realbool, d_em->integerType());
+    Type realboolToReal = d_em->mkFunctionType(realbool, d_em->realType());
+
+    Type boolrealToBool = d_em->mkFunctionType(boolreal, d_em->booleanType());
+    Type boolrealToInt = d_em->mkFunctionType(boolreal, d_em->integerType());
+    Type boolrealToReal = d_em->mkFunctionType(boolreal, d_em->realType());
+
+    TS_ASSERT( boolboolToBool.getCardinality().compare(16) == Cardinality::EQUAL );
+    TS_ASSERT( boolboolToInt.getCardinality().compare(Cardinality::INTEGERS) == Cardinality::EQUAL );
+    TS_ASSERT( boolboolToReal.getCardinality().compare(Cardinality::REALS) == Cardinality::EQUAL );
+
+    TS_ASSERT( boolintToBool.getCardinality().compare(Cardinality::REALS) == Cardinality::EQUAL );
+    TS_ASSERT( boolintToInt.getCardinality().compare(Cardinality::REALS) == Cardinality::EQUAL );
+    TS_ASSERT( boolintToReal.getCardinality().compare(Cardinality::REALS) == Cardinality::EQUAL );
+
+    TS_ASSERT( intboolToBool.getCardinality().compare(Cardinality::REALS) == Cardinality::EQUAL );
+    TS_ASSERT( intboolToInt.getCardinality().compare(Cardinality::REALS) == Cardinality::EQUAL );
+    TS_ASSERT( intboolToReal.getCardinality().compare(Cardinality::REALS) == Cardinality::EQUAL );
+
+    TS_ASSERT( intintToBool.getCardinality().compare(Cardinality::REALS) == Cardinality::EQUAL );
+    TS_ASSERT( intintToInt.getCardinality().compare(Cardinality::REALS) == Cardinality::EQUAL );
+    TS_ASSERT( intintToReal.getCardinality().compare(Cardinality::REALS) == Cardinality::EQUAL );
+
+    TS_ASSERT( intrealToBool.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+    TS_ASSERT( intrealToInt.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+    TS_ASSERT( intrealToReal.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+
+    TS_ASSERT( realintToBool.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+    TS_ASSERT( realintToInt.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+    TS_ASSERT( realintToReal.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+
+    TS_ASSERT( realrealToBool.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+    TS_ASSERT( realrealToInt.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+    TS_ASSERT( realrealToReal.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+
+    TS_ASSERT( realboolToBool.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+    TS_ASSERT( realboolToInt.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+    TS_ASSERT( realboolToReal.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+
+    TS_ASSERT( boolrealToBool.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+    TS_ASSERT( boolrealToInt.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+    TS_ASSERT( boolrealToReal.getCardinality().compare(Cardinality::REALS) == Cardinality::GREATER );
+  }
+
+  void testTernaryFunctions() {
+    vector<Type> boolbool; boolbool.push_back(d_em->booleanType()); boolbool.push_back(d_em->booleanType());
+    vector<Type> boolboolbool = boolbool; boolboolbool.push_back(d_em->booleanType());
+
+    Type boolboolTuple = d_em->mkTupleType(boolbool);
+    Type boolboolboolTuple = d_em->mkTupleType(boolboolbool);
+
+    Type boolboolboolToBool = d_em->mkFunctionType(boolboolbool, d_em->booleanType());
+    Type boolboolToBoolbool = d_em->mkFunctionType(boolbool, boolboolTuple);
+    Type boolToBoolboolbool = d_em->mkFunctionType(d_em->booleanType(), boolboolboolTuple);
+
+    TS_ASSERT( boolboolboolToBool.getCardinality().compare(/* 2 ^ 8 */ 1 << 8) == Cardinality::EQUAL );
+    TS_ASSERT( boolboolToBoolbool.getCardinality().compare(/* 4 ^ 4 */ 4 * 4 * 4 * 4) == Cardinality::EQUAL );
+    TS_ASSERT( boolToBoolboolbool.getCardinality().compare(/* 8 ^ 2 */ 8 * 8) == Cardinality::EQUAL );
+  }
+
+  void testUndefinedSorts() {
+    Type foo = d_em->mkSort("foo");
+    // We've currently assigned them a specific Beth number, which
+    // isn't really correct, but...
+    TS_ASSERT( !foo.getCardinality().isFinite() );
+  }
+
+  void testBitvectors() {
+    //Debug.on("bvcard");
+    TS_ASSERT( d_em->mkBitVectorType(0).getCardinality().compare(0) == Cardinality::EQUAL );
+    Cardinality lastCard = 0;
+    for(unsigned i = 1; i <= 65; ++i) {
+      try {
+        Cardinality card = Cardinality(2) ^ i;
+        Cardinality typeCard = d_em->mkBitVectorType(i).getCardinality();
+        TS_ASSERT( typeCard.compare(lastCard) == Cardinality::GREATER ||
+                   (typeCard.isLargeFinite() && lastCard.isLargeFinite()) );
+        if( typeCard.compare(card) != Cardinality::EQUAL ) {
+          if( typeCard.isLargeFinite() ) {
+            cout << "test hit large finite card at bitvector(" << i << ")" << endl;
+          } else {
+            stringstream ss;
+            ss << "test failed for bitvector(" << i << ")";
+            TS_FAIL(ss.str().c_str());
+          }
+        }
+        lastCard = typeCard;
+      } catch(Exception& e) {
+        cout << endl << e << endl;
+        throw;
+      }
+    }
+  }
+
+};/* TypeCardinalityPublic */
diff --git a/test/unit/memory.h b/test/unit/memory.h
new file mode 100644
index 0000000..d15d135
--- /dev/null
+++ b/test/unit/memory.h
@@ -0,0 +1,110 @@
+/*********************                                                        */
+/*! \file memory.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Utility class to help testing out-of-memory conditions.
+ **
+ ** Utility class to help testing out-of-memory conditions.
+ **
+ ** Use it like this (for example):
+ **
+ **   CVC4::test::WithLimitedMemory wlm(amount);
+ **   TS_ASSERT_THROWS( foo(), bad_alloc );
+ **
+ ** The WithLimitedMemory destructor will re-establish the previous limit.
+ **
+ ** This class does not exist in CVC4_MEMORY_LIMITING_DISABLED is defined.
+ ** This can be disabled for a variety of reasons.
+ ** If this is disabled, there will be a function:
+ **   void WarnWithLimitedMemoryDisabledReason()
+ ** uses TS_WARN to alert users that these tests are disabled.
+ **/
+
+#include <cxxtest/TestSuite.h>
+
+#ifndef __CVC4__TEST__MEMORY_H
+#define __CVC4__TEST__MEMORY_H
+
+#include <string>
+#include <sys/resource.h>
+#include <sys/time.h>
+
+#include "base/cvc4_assert.h"
+
+// Conditionally define CVC4_MEMORY_LIMITING_DISABLED.
+#ifdef __APPLE__
+#  define CVC4_MEMORY_LIMITING_DISABLED 1
+#  define CVC4_MEMORY_LIMITING_DISABLED_REASON "setrlimit() is broken on Mac."
+#else /* __APPLE__ */
+#  if defined(__has_feature)
+#    if __has_feature(address_sanitizer)
+// Tests cannot expect bad_alloc to be thrown due to limit memory using
+// setrlimit when ASAN is enable. ASAN instead aborts on mmap failures.
+#      define CVC4_MEMORY_LIMITING_DISABLED 1
+#      define CVC4_MEMORY_LIMITING_DISABLED_REASON "ASAN's mmap failures abort."
+#    endif /* __has_feature(address_sanitizer) */
+#  endif /* defined(__has_feature) */
+#endif
+
+
+
+namespace CVC4 {
+namespace test {
+
+#ifdef CVC4_MEMORY_LIMITING_DISABLED
+
+inline void WarnWithLimitedMemoryDisabledReason() {
+  const std::string reason = std::string("WithLimitedMemory is disabled: ") +
+      std::string(CVC4_MEMORY_LIMITING_DISABLED_REASON);
+  TS_WARN(reason.c_str());
+}
+
+#else /* CVC4_MEMORY_LIMITING_DISABLED */
+
+class WithLimitedMemory {
+ public:
+  WithLimitedMemory() { remember(); }
+
+  WithLimitedMemory(rlim_t amount) {
+    remember();
+    set(amount);
+  }
+
+  ~WithLimitedMemory() { set(d_prevAmount); }
+
+  void set(rlim_t amount) {
+    struct rlimit rlim;
+    rlim.rlim_cur = amount;
+    rlim.rlim_max = RLIM_INFINITY;
+    TS_ASSERT_EQUALS(setrlimit(RLIMIT_AS, &rlim), 0);
+  }
+
+ private:
+  void remember() {
+    struct rlimit rlim;
+    TS_ASSERT_EQUALS(getrlimit(RLIMIT_AS, &rlim), 0);
+    d_prevAmount = rlim.rlim_cur;
+  }
+
+  rlim_t d_prevAmount;
+}; /* class WithLimitedMemory */
+
+#endif /* CVC4_MEMORY_LIMITING_DISABLED */
+
+} /* CVC4::test namespace */
+} /* CVC4 namespace */
+
+
+// Remove CVC4_MEMORY_LIMITING_DISABLED_REASON if it is defined.
+#ifdef CVC4_MEMORY_LIMITING_DISABLED_REASON
+#undef CVC4_MEMORY_LIMITING_DISABLED_REASON
+#endif /* CVC4_MEMORY_LIMITING_DISABLED_REASON */
+
+#endif /* __CVC4__TEST__MEMORY_H */
diff --git a/test/unit/no_cxxtest b/test/unit/no_cxxtest
new file mode 100755
index 0000000..fec2dfb
--- /dev/null
+++ b/test/unit/no_cxxtest
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+echo
+echo '***************************************************************************'
+echo '*                                                                         *'
+echo '*  WARNING:  CxxTest not found at configure time; unit tests cannot run.  *'
+echo '*                                                                         *'
+echo '***************************************************************************'
+echo
+
+# skip this test, rather than reporting an error
+exit 77
diff --git a/test/unit/util/cardinality_public.cpp b/test/unit/util/cardinality_public.cpp
new file mode 100644
index 0000000..f67a1c5
--- /dev/null
+++ b/test/unit/util/cardinality_public.cpp
@@ -0,0 +1,38 @@
+/* Generated file, do not edit */
+
+#ifndef CXXTEST_RUNNING
+#define CXXTEST_RUNNING
+#endif
+
+#define _CXXTEST_HAVE_STD
+#define _CXXTEST_HAVE_EH
+#include <cxxtest/TestListener.h>
+#include <cxxtest/TestTracker.h>
+#include <cxxtest/TestRunner.h>
+#include <cxxtest/RealDescriptions.h>
+#include <cxxtest/TestMain.h>
+#include <cxxtest/ErrorPrinter.h>
+
+int main( int argc, char *argv[] ) {
+ int status;
+    CxxTest::ErrorPrinter tmp;
+    CxxTest::RealWorldDescription::_worldName = "cxxtest";
+    status = CxxTest::Main< CxxTest::ErrorPrinter >( tmp, argc, argv );
+    return status;
+}
+bool suite_CardinalityPublic_init = false;
+#include "/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/test/unit/util/cardinality_public.h"
+
+static CardinalityPublic suite_CardinalityPublic;
+
+static CxxTest::List Tests_CardinalityPublic = { 0, 0 };
+CxxTest::StaticSuiteDescription suiteDescription_CardinalityPublic( "../../../../../test/unit/util/cardinality_public.h", 26, "CardinalityPublic", suite_CardinalityPublic, Tests_CardinalityPublic );
+
+static class TestDescription_suite_CardinalityPublic_testCardinalities : public CxxTest::RealTestDescription {
+public:
+ TestDescription_suite_CardinalityPublic_testCardinalities() : CxxTest::RealTestDescription( Tests_CardinalityPublic, suiteDescription_CardinalityPublic, 31, "testCardinalities" ) {}
+ void runTest() { suite_CardinalityPublic.testCardinalities(); }
+} testDescription_suite_CardinalityPublic_testCardinalities;
+
+#include <cxxtest/Root.cpp>
+const char* CxxTest::RealWorldDescription::_worldName = "cxxtest";
diff --git a/test/unit/util/cardinality_public.h b/test/unit/util/cardinality_public.h
new file mode 100644
index 0000000..7d7c675
--- /dev/null
+++ b/test/unit/util/cardinality_public.h
@@ -0,0 +1,262 @@
+/*********************                                                        */
+/*! \file cardinality_public.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Public-box testing of CVC4::Cardinality
+ **
+ ** Public-box testing of CVC4::Cardinality.
+ **/
+
+#include <sstream>
+#include <string>
+
+#include "util/integer.h"
+#include "util/cardinality.h"
+
+using namespace CVC4;
+using namespace std;
+
+class CardinalityPublic : public CxxTest::TestSuite {
+  stringstream ss;
+
+public:
+
+  void testCardinalities() {
+    Cardinality zero(0);
+    Cardinality one(1);
+    Cardinality two(2);
+
+    Cardinality invalid(0);
+    TS_ASSERT_THROWS( invalid = Cardinality(-1), IllegalArgumentException);
+    TS_ASSERT_THROWS( invalid = Cardinality(-2), IllegalArgumentException);
+    TS_ASSERT_THROWS( invalid = Cardinality(Integer("-3983982192391747295721957")), IllegalArgumentException);
+    invalid = one; // test assignment
+    invalid = Cardinality(5); // test assignment to temporary
+
+    Cardinality copy(one); // test copy
+    Cardinality big(Integer("3983982192391747295721957"));
+    Cardinality r(Cardinality::REALS);
+    Cardinality i(Cardinality::INTEGERS);
+
+    TS_ASSERT( zero.compare(one) == Cardinality::LESS );
+    TS_ASSERT( one.compare(two) == Cardinality::LESS );
+    TS_ASSERT( two.compare(invalid) == Cardinality::LESS );
+    TS_ASSERT( invalid.compare(big) == Cardinality::LESS );
+    TS_ASSERT( big.compare(i) == Cardinality::LESS );
+    TS_ASSERT( i.compare(r) == Cardinality::LESS );
+
+    TS_ASSERT( zero.compare(one) != Cardinality::GREATER );
+    TS_ASSERT( zero.compare(zero) != Cardinality::GREATER );
+    TS_ASSERT( one.compare(two) != Cardinality::GREATER );
+    TS_ASSERT( one.compare(one) != Cardinality::GREATER );
+    TS_ASSERT( two.compare(invalid) != Cardinality::GREATER );
+    TS_ASSERT( two.compare(two) != Cardinality::GREATER );
+    TS_ASSERT( invalid.compare(big) != Cardinality::GREATER );
+    TS_ASSERT( invalid.compare(invalid) != Cardinality::GREATER );
+    TS_ASSERT( big.compare(i) != Cardinality::GREATER );
+    TS_ASSERT( big.compare(big) != Cardinality::GREATER );
+    TS_ASSERT( i.compare(r) != Cardinality::GREATER );
+    TS_ASSERT( i.compare(i) != Cardinality::GREATER );
+    TS_ASSERT( r.compare(r) != Cardinality::GREATER );
+
+    TS_ASSERT( zero.compare(zero) == Cardinality::EQUAL );
+    TS_ASSERT( one.compare(one) == Cardinality::EQUAL );
+    TS_ASSERT( two.compare(two) == Cardinality::EQUAL );
+    TS_ASSERT( invalid.compare(invalid) == Cardinality::EQUAL );
+    TS_ASSERT( copy.compare(copy) == Cardinality::EQUAL );
+    TS_ASSERT( copy.compare(one) == Cardinality::EQUAL );
+    TS_ASSERT( one.compare(copy) == Cardinality::EQUAL );
+    TS_ASSERT( big.compare(big) == Cardinality::UNKNOWN );
+    TS_ASSERT( i.compare(i) == Cardinality::EQUAL );
+    TS_ASSERT( r.compare(r) == Cardinality::EQUAL );
+
+    TS_ASSERT( zero.compare(one) != Cardinality::EQUAL );
+    TS_ASSERT( one.compare(two) != Cardinality::EQUAL );
+    TS_ASSERT( two.compare(invalid) != Cardinality::EQUAL );
+    TS_ASSERT( copy.compare(r) != Cardinality::EQUAL );
+    TS_ASSERT( copy.compare(i) != Cardinality::EQUAL );
+    TS_ASSERT( big.compare(i) != Cardinality::EQUAL );
+    TS_ASSERT( i.compare(big) != Cardinality::EQUAL );
+    TS_ASSERT( big.compare(zero) != Cardinality::EQUAL );
+    TS_ASSERT( r.compare(i) != Cardinality::EQUAL );
+    TS_ASSERT( i.compare(r) != Cardinality::EQUAL );
+
+    TS_ASSERT( r.compare(zero) == Cardinality::GREATER );
+    TS_ASSERT( r.compare(one) == Cardinality::GREATER );
+    TS_ASSERT( r.compare(two) == Cardinality::GREATER );
+    TS_ASSERT( r.compare(copy) == Cardinality::GREATER );
+    TS_ASSERT( r.compare(invalid) == Cardinality::GREATER );
+    TS_ASSERT( r.compare(big) == Cardinality::GREATER );
+    TS_ASSERT( r.compare(i) == Cardinality::GREATER );
+    TS_ASSERT( r.compare(r) != Cardinality::GREATER );
+    TS_ASSERT( r.compare(r) != Cardinality::LESS );
+
+    TS_ASSERT( zero.isFinite() );
+    TS_ASSERT( one.isFinite() );
+    TS_ASSERT( two.isFinite() );
+    TS_ASSERT( copy.isFinite() );
+    TS_ASSERT( invalid.isFinite() );
+    TS_ASSERT( big.isFinite() );
+    TS_ASSERT( !i.isFinite() );
+    TS_ASSERT( !r.isFinite() );
+
+    TS_ASSERT( !zero.isLargeFinite() );
+    TS_ASSERT( !one.isLargeFinite() );
+    TS_ASSERT( !two.isLargeFinite() );
+    TS_ASSERT( !copy.isLargeFinite() );
+    TS_ASSERT( !invalid.isLargeFinite() );
+    TS_ASSERT( big.isLargeFinite() );
+    TS_ASSERT( !i.isLargeFinite() );
+    TS_ASSERT( !r.isLargeFinite() );
+
+    TS_ASSERT( zero.getFiniteCardinality() == 0 );
+    TS_ASSERT( one.getFiniteCardinality() == 1 );
+    TS_ASSERT( two.getFiniteCardinality() == 2 );
+    TS_ASSERT( copy.getFiniteCardinality() == 1 );
+    TS_ASSERT( invalid.getFiniteCardinality() == 5 );
+    TS_ASSERT_THROWS( big.getFiniteCardinality(), IllegalArgumentException );
+    TS_ASSERT_THROWS( i.getFiniteCardinality(), IllegalArgumentException );
+    TS_ASSERT_THROWS( r.getFiniteCardinality(), IllegalArgumentException );
+
+    TS_ASSERT_THROWS( zero.getBethNumber(), IllegalArgumentException );
+    TS_ASSERT_THROWS( one.getBethNumber(), IllegalArgumentException );
+    TS_ASSERT_THROWS( two.getBethNumber(), IllegalArgumentException );
+    TS_ASSERT_THROWS( copy.getBethNumber(), IllegalArgumentException );
+    TS_ASSERT_THROWS( invalid.getBethNumber(), IllegalArgumentException );
+    TS_ASSERT_THROWS( big.getBethNumber(), IllegalArgumentException );
+    TS_ASSERT( i.getBethNumber() == 0 );
+    TS_ASSERT( r.getBethNumber() == 1 );
+
+    TS_ASSERT( zero.compare(Cardinality::INTEGERS) != Cardinality::EQUAL );
+    TS_ASSERT( one.compare(Cardinality::INTEGERS) != Cardinality::EQUAL );
+    TS_ASSERT( two.compare(Cardinality::INTEGERS) != Cardinality::EQUAL );
+    TS_ASSERT( copy.compare(Cardinality::INTEGERS) != Cardinality::EQUAL );
+    TS_ASSERT( invalid.compare(Cardinality::INTEGERS) != Cardinality::EQUAL );
+    TS_ASSERT( big.compare(Cardinality::INTEGERS) != Cardinality::EQUAL );
+    TS_ASSERT( r.compare(Cardinality::INTEGERS) != Cardinality::EQUAL );
+    TS_ASSERT( i.compare(Cardinality::INTEGERS) == Cardinality::EQUAL );
+
+    TS_ASSERT( zero.compare(Cardinality::REALS) != Cardinality::EQUAL );
+    TS_ASSERT( one.compare(Cardinality::REALS) != Cardinality::EQUAL );
+    TS_ASSERT( two.compare(Cardinality::REALS) != Cardinality::EQUAL );
+    TS_ASSERT( copy.compare(Cardinality::REALS) != Cardinality::EQUAL );
+    TS_ASSERT( invalid.compare(Cardinality::REALS) != Cardinality::EQUAL );
+    TS_ASSERT( big.compare(Cardinality::REALS) != Cardinality::EQUAL );
+    TS_ASSERT( i.compare(Cardinality::REALS) != Cardinality::EQUAL );
+    TS_ASSERT( r.compare(Cardinality::REALS) == Cardinality::EQUAL );
+
+    // should work the other way too
+
+    TS_ASSERT( Cardinality::INTEGERS.compare(zero) != Cardinality::EQUAL );
+    TS_ASSERT( Cardinality::INTEGERS.compare(one) != Cardinality::EQUAL );
+    TS_ASSERT( Cardinality::INTEGERS.compare(two) != Cardinality::EQUAL );
+    TS_ASSERT( Cardinality::INTEGERS.compare(copy) != Cardinality::EQUAL );
+    TS_ASSERT( Cardinality::INTEGERS.compare(invalid) != Cardinality::EQUAL );
+    TS_ASSERT( Cardinality::INTEGERS.compare(big) != Cardinality::EQUAL );
+    TS_ASSERT( Cardinality::INTEGERS.compare(r) != Cardinality::EQUAL );
+    TS_ASSERT( Cardinality::INTEGERS.compare(i) == Cardinality::EQUAL );
+
+    TS_ASSERT( Cardinality::REALS.compare(zero) != Cardinality::EQUAL );
+    TS_ASSERT( Cardinality::REALS.compare(one) != Cardinality::EQUAL );
+    TS_ASSERT( Cardinality::REALS.compare(two) != Cardinality::EQUAL );
+    TS_ASSERT( Cardinality::REALS.compare(copy) != Cardinality::EQUAL );
+    TS_ASSERT( Cardinality::REALS.compare(invalid) != Cardinality::EQUAL );
+    TS_ASSERT( Cardinality::REALS.compare(big) != Cardinality::EQUAL );
+    TS_ASSERT( Cardinality::REALS.compare(i) != Cardinality::EQUAL );
+    TS_ASSERT( Cardinality::REALS.compare(r) == Cardinality::EQUAL );
+
+    // finite cardinal arithmetic
+
+    TS_ASSERT( (zero + zero).compare(zero) == Cardinality::EQUAL );
+    TS_ASSERT( (zero * zero).compare(zero) == Cardinality::EQUAL );
+    TS_ASSERT( (zero ^ zero).compare(one) == Cardinality::EQUAL );
+    TS_ASSERT( (zero + one).compare(one) == Cardinality::EQUAL );
+    TS_ASSERT( (zero * one).compare(zero) == Cardinality::EQUAL );
+    TS_ASSERT( (zero ^ one).compare(zero) == Cardinality::EQUAL );
+    TS_ASSERT( (one + zero).compare(one) == Cardinality::EQUAL );
+    TS_ASSERT( (one * zero).compare(zero) == Cardinality::EQUAL );
+    TS_ASSERT( (one ^ zero).compare(one) == Cardinality::EQUAL );
+    TS_ASSERT( (two + two).compare(4) == Cardinality::EQUAL );
+    TS_ASSERT( (two ^ two).compare(4) == Cardinality::EQUAL );
+    TS_ASSERT( (two * two).compare(4) == Cardinality::EQUAL );
+    TS_ASSERT( (two += two).compare(4) == Cardinality::EQUAL );
+    TS_ASSERT( two.compare(4) == Cardinality::EQUAL );
+    TS_ASSERT( (two = 2).compare(2) == Cardinality::EQUAL );
+    TS_ASSERT( two.compare(2) == Cardinality::EQUAL );
+    TS_ASSERT( (two *= 2).compare(4) == Cardinality::EQUAL );
+    TS_ASSERT( two.compare(4) == Cardinality::EQUAL );
+    TS_ASSERT( ((two = 2) ^= 2).compare(4) == Cardinality::EQUAL );
+    TS_ASSERT( two.compare(4) == Cardinality::EQUAL );
+    TS_ASSERT( (two = 2).compare(2) == Cardinality::EQUAL );
+
+    // infinite cardinal arithmetic
+
+    Cardinality x = i, y = Cardinality(2)^x, z = Cardinality(2)^y;
+
+    TS_ASSERT( x.compare(i) == Cardinality::EQUAL && y.compare(r) == Cardinality::EQUAL );
+    TS_ASSERT( x.compare(r) != Cardinality::EQUAL && y.compare(i) != Cardinality::EQUAL );
+    TS_ASSERT( x.compare(z) != Cardinality::EQUAL && y.compare(z) != Cardinality::EQUAL );
+    TS_ASSERT( x.isCountable() && !x.isFinite() );
+    TS_ASSERT( !y.isCountable() && !y.isFinite() );
+    TS_ASSERT( !z.isCountable() && !z.isFinite() );
+
+    TS_ASSERT( big.compare(x) == Cardinality::LESS );
+    TS_ASSERT( x.compare(y) == Cardinality::LESS );
+    TS_ASSERT( y.compare(z) == Cardinality::LESS );
+
+    TS_ASSERT_THROWS( big.getBethNumber(), IllegalArgumentException );
+    TS_ASSERT( x.getBethNumber() == 0 );
+    TS_ASSERT( y.getBethNumber() == 1 );
+    TS_ASSERT( z.getBethNumber() == 2 );
+
+    TS_ASSERT( (zero ^ x).compare(zero) == Cardinality::EQUAL );
+    TS_ASSERT( (one ^ x).compare(one) == Cardinality::EQUAL );
+    TS_ASSERT( (two ^ x).compare(y) == Cardinality::EQUAL && (two ^ x).compare(x) != Cardinality::EQUAL );
+    TS_ASSERT( (big ^ x).compare(y) == Cardinality::EQUAL && (big ^ x).compare(x) != Cardinality::EQUAL );
+    TS_ASSERT( (two ^ x).compare(big ^ x) == Cardinality::EQUAL );
+
+    TS_ASSERT( (x ^ zero).compare(one) == Cardinality::EQUAL );
+    TS_ASSERT( (x ^ one).compare(x) == Cardinality::EQUAL );
+    TS_ASSERT( (x ^ two).compare(x) == Cardinality::EQUAL );
+    TS_ASSERT( (x ^ big).compare(x) == Cardinality::EQUAL );
+    TS_ASSERT( (x ^ big).compare(x ^ two) == Cardinality::EQUAL );
+
+    TS_ASSERT( (zero ^ y).compare(zero) == Cardinality::EQUAL );
+    TS_ASSERT( (one ^ y).compare(one) == Cardinality::EQUAL );
+    TS_ASSERT( (two ^ y).compare(x) != Cardinality::EQUAL && (two ^ y).compare(y) != Cardinality::EQUAL );
+    TS_ASSERT( (big ^ y).compare(y) != Cardinality::EQUAL && (big ^ y).compare(y) != Cardinality::EQUAL );
+    TS_ASSERT( (big ^ y).getBethNumber() == 2 );
+    TS_ASSERT( (two ^ y).compare(big ^ y) == Cardinality::EQUAL );
+
+    TS_ASSERT( (y ^ zero).compare(one) == Cardinality::EQUAL );
+    TS_ASSERT( (y ^ one).compare(y) == Cardinality::EQUAL );
+    TS_ASSERT( (y ^ two).compare(y) == Cardinality::EQUAL );
+    TS_ASSERT( (y ^ big).compare(y) == Cardinality::EQUAL );
+    TS_ASSERT( (y ^ big).compare(y ^ two) == Cardinality::EQUAL );
+
+    TS_ASSERT( (x ^ x).compare(y) == Cardinality::EQUAL );
+    TS_ASSERT( (y ^ x).compare(y) == Cardinality::EQUAL );
+    TS_ASSERT( (x ^ y).compare(z) == Cardinality::EQUAL );
+    TS_ASSERT( (y ^ y).compare(z) == Cardinality::EQUAL );
+    TS_ASSERT( (z ^ x).compare(z) == Cardinality::EQUAL );
+    TS_ASSERT( (z ^ y).compare(z) == Cardinality::EQUAL );
+    TS_ASSERT( (zero ^ z).compare(0) == Cardinality::EQUAL );
+    TS_ASSERT( (z ^ zero).compare(1) == Cardinality::EQUAL );
+    TS_ASSERT( (z ^ 0).compare(1) == Cardinality::EQUAL );
+    TS_ASSERT( (two ^ z).compare(z) == Cardinality::GREATER );
+    TS_ASSERT( (big ^ z).compare(two ^ z) == Cardinality::EQUAL );
+    TS_ASSERT( (x ^ z).compare(two ^ z) == Cardinality::EQUAL );
+    TS_ASSERT( (y ^ z).compare(x ^ z) == Cardinality::EQUAL );
+    TS_ASSERT( (z ^ z).compare(x ^ z) == Cardinality::EQUAL );
+    TS_ASSERT( (z ^ z).getBethNumber() == 3 );
+
+  }/* testCardinalities() */
+
+};/* class CardinalityPublic */

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/cvc4.git



More information about the debian-science-commits mailing list